diff --git a/.dockerignore b/.dockerignore index e9b50adab..c5e01ec6e 100644 --- a/.dockerignore +++ b/.dockerignore @@ -2,4 +2,6 @@ __pycache__ *.pyc *.pyo *.log -.git \ No newline at end of file +.git +venv/ +config/ \ No newline at end of file diff --git a/.env.template b/.env.template new file mode 100644 index 000000000..defb977d8 --- /dev/null +++ b/.env.template @@ -0,0 +1,2 @@ +ANTHROPIC_API_KEY: +OPENAI_API_KEY: \ No newline at end of file diff --git a/README.md b/README.md index c7f49b77a..da6bbb550 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# LIDA: Automatic Generation of Visualizations and Infographics using Large Language Models +# LIDA: Automatic Generation of Visualizations and Infographics using Large Language Models 📊📈 [![PyPI version](https://badge.fury.io/py/lida.svg)](https://badge.fury.io/py/lida) [![arXiv](https://img.shields.io/badge/arXiv-2303.02927-.svg)](https://arxiv.org/abs/2303.02927) diff --git a/config/cfg.yml b/config/cfg.yml new file mode 100644 index 000000000..3988d904f --- /dev/null +++ b/config/cfg.yml @@ -0,0 +1,17 @@ +# Sets the the default model to use for llm() when no provider parameter is set. +model: + provider: anthropic + parameters: + api_key: null + +providers: + anthropic: + name: anthropic + description: Anthropic's Claude models + models: + - name: claude-3-5-sonnet-20241022 + max_tokens: 8192 + model: + provider: anthropic + parameters: + model: claude-3-5-sonnet-20241022 diff --git a/docker-compose.yml b/docker-compose.yml index 4e14d8329..f084d7e44 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,4 +1,3 @@ -version: '3.8' services: web: image: web-ui @@ -7,5 +6,9 @@ services: dockerfile: Dockerfile ports: - "8080:8080" + - "8081:8081" + env_file: .env environment: - - OPENAI_API_KEY \ No newline at end of file + - LLMX_CONFIG_PATH=/config/cfg.yml + volumes: + - ./config:/config \ No newline at end of file diff --git a/dockerfile b/dockerfile index bdbb5dce9..48fb5a767 100644 --- a/dockerfile +++ b/dockerfile @@ -8,11 +8,21 @@ ENV PYTHONBUFFERED 1 # Set the working directory in the container WORKDIR /app -# Install requirements -RUN pip install --no-cache-dir lida +# Install git using apt cache +RUN apt-get update && apt-get install -y git && apt-get clean + +# Copy the current directory contents into the container at /app +COPY . /app + +# Install dependencies using pip cache +RUN pip install -r requirements.txt + +# Install lida from the source in editable mode using pip cache +RUN pip install -e . # Expose the port that the application will listen on EXPOSE 8080 +EXPOSE 8081 # Start the Web UI -CMD ["lida", "ui", "--host", "0.0.0.0", "--port", "8080", "--docs"] \ No newline at end of file +Entrypoint lida ui --host 0.0.0.0 --port 8080 \ No newline at end of file diff --git a/lida/components/manager.py b/lida/components/manager.py index 13955edaf..19786b488 100644 --- a/lida/components/manager.py +++ b/lida/components/manager.py @@ -57,7 +57,7 @@ def check_textgen(self, config: TextGenerationConfig): config (TextGenerationConfig): Text generation configuration. """ if config.provider is None: - config.provider = self.text_gen.provider or "openai" + config.provider = self.text_gen.provider or "anthropic" logger.info("Provider is not set, using default provider - %s", config.provider) return diff --git a/lida/components/scaffold.py b/lida/components/scaffold.py index 54f43f2d4..e0d8522d6 100644 --- a/lida/components/scaffold.py +++ b/lida/components/scaffold.py @@ -24,7 +24,7 @@ def get_template(self, goal: Goal, library: str): if library == "matplotlib": instructions = { - "role": "assistant", + "role": "system", "content": f" {matplotlib_instructions}. Use BaseMap for charts that require a map. "} template = \ f""" @@ -40,7 +40,7 @@ def plot(data: pd.DataFrame): chart = plot(data) # data already contains the data to be plotted. Always include this line. No additional code beyond this line.""" elif library == "seaborn": instructions = { - "role": "assistant", + "role": "system", "content": f"{matplotlib_instructions}. Use BaseMap for charts that require a map. "} template = \ @@ -61,7 +61,7 @@ def plot(data: pd.DataFrame): elif library == "ggplot": instructions = { - "role": "assistant", + "role": "system", "content": f"{general_instructions}. The plot method must return a ggplot object (chart)`. Think step by step.p. \n", } diff --git a/lida/components/viz/vizeditor.py b/lida/components/viz/vizeditor.py index 653808a67..86f6a9878 100644 --- a/lida/components/viz/vizeditor.py +++ b/lida/components/viz/vizeditor.py @@ -37,7 +37,7 @@ def generate( "role": "system", "content": system_prompt}, { "role": "system", "content": f"The dataset summary is : \n\n {summary} \n\n"}, { "role": "system", "content": f"The modifications you make MUST BE CORRECT and based on the '{library}' library and also follow these instructions \n\n{library_instructions} \n\n. The resulting code MUST use the following template \n\n {library_template} \n\n "}, { - "role": "user", "content": f"ALL ADDITIONAL LIBRARIES USED MUST BE IMPORTED.\n The code to be modified is: \n\n{code} \n\n. YOU MUST THINK STEP BY STEP, AND CAREFULLY MODIFY ONLY the content of the plot(..) method TO MEET EACH OF THE FOLLOWING INSTRUCTIONS: \n\n {instruction_string} \n\n. The completed modified code THAT FOLLOWS THE TEMPLATE above is. \n"}] + "role": "user", "content": f"ALL ADDITIONAL LIBRARIES USED MUST BE IMPORTED.\n The code to be modified is: \n\n{code} \n\n. YOU MUST THINK STEP BY STEP, AND CAREFULLY MODIFY ONLY the content of the plot(..) method TO MEET EACH OF THE FOLLOWING INSTRUCTIONS: \n\n {instruction_string} \n\n. The completed modified code THAT FOLLOWS THE TEMPLATE above is. \n"}] completions: TextGenerationResponse = text_gen.generate( messages=messages, config=textgen_config) diff --git a/lida/web/app.py b/lida/web/app.py index 32046a3ed..7edd87919 100644 --- a/lida/web/app.py +++ b/lida/web/app.py @@ -13,7 +13,7 @@ # instantiate model and generator -textgen = llm() +textgen = llm(provider="anthropic") logger = logging.getLogger("lida") api_docs = os.environ.get("LIDA_API_DOCS", "False") == "True" @@ -227,6 +227,7 @@ async def generate_goal(req: GoalWebRequest) -> dict: @api.post("/summarize") async def upload_file(file: UploadFile): """ Upload a file and return a summary of the data """ + # allow csv, excel, json allowed_types = ["text/csv", "application/vnd.ms-excel", "application/json"] @@ -271,7 +272,6 @@ async def upload_file_via_url(req: SummaryUrlRequest) -> dict: url_response = requests.get(url, allow_redirects=True, timeout=1000) open(file_location, "wb").write(url_response.content) try: - summary = lida.summarize( data=file_location, file_name=file_name, @@ -307,4 +307,6 @@ async def generate_infographics(req: InfographicsRequest) -> dict: @api.get("/models") def list_models() -> dict: + + return {"status": True, "data": providers, "message": "Successfully listed models"} diff --git a/lida/web/ui/component---src-pages-demo-tsx-54fd6da10fa870d8d843.js b/lida/web/ui/component---src-pages-demo-tsx-54fd6da10fa870d8d843.js index 7d7af973f..0ecbee08e 100644 --- a/lida/web/ui/component---src-pages-demo-tsx-54fd6da10fa870d8d843.js +++ b/lida/web/ui/component---src-pages-demo-tsx-54fd6da10fa870d8d843.js @@ -1,3 +1,3 @@ /*! For license information please see component---src-pages-demo-tsx-54fd6da10fa870d8d843.js.LICENSE.txt */ -(self.webpackChunklida=self.webpackChunklida||[]).push([[514],{81819:function(t,e){"use strict";var n=function(){function t(){this._events={}}return t.prototype.on=function(t,e,n){return this._events[t]||(this._events[t]=[]),this._events[t].push({callback:e,once:!!n}),this},t.prototype.once=function(t,e){return this.on(t,e,!0)},t.prototype.emit=function(t){for(var e=this,n=[],r=1;r=0&&e._call.call(null,t),e=e._next;--s}()}finally{s=0,function(){var t,e,n=r,o=1/0;for(;n;)n._call?(o>n._time&&(o=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:r=e);i=t,O(o)}(),v=0}}function C(){var t=m.now(),e=t-p;e>d&&(g-=e,p=t)}function O(t){s||(f&&(f=clearTimeout(f)),t-v>24?(t<1/0&&(f=setTimeout(k,t-m.now()-g)),h&&(h=clearInterval(h))):(h||(p=m.now(),h=setInterval(C,d)),s=1,y(k)))}w.prototype=S.prototype={constructor:w,restart:function(t,e,n){if("function"!=typeof t)throw new TypeError("callback is not a function");n=(null==n?b():+n)+(null==e?0:+e),this._next||i===this||(i?i._next=this:r=this,i=this),this._call=t,this._time=n,O()},stop:function(){this._call&&(this._call=null,this._time=1/0,O())}};var E=n(23713),M=n(79739),A=n(74205),P=n(47696),_=function(t){return["fill","stroke","fillStyle","strokeStyle"].includes(t)},D=function(t){return/^[r,R,L,l]{1}[\s]*\(/.test(t)},T=[1,0,0,0,1,0,0,0,1];function Z(t,e,n){var r,i=e.startTime;if(ns.length?(l=P.parsePathString(o[c]),s=P.parsePathString(i[c]),s=P.fillPathByDiff(s,l),s=P.formatPath(s,l),e.fromAttrs.path=s,e.toAttrs.path=l):e.pathFormatted||(l=P.parsePathString(o[c]),s=P.parsePathString(i[c]),s=P.formatPath(s,l),e.fromAttrs.path=s,e.toAttrs.path=l,e.pathFormatted=!0),r[c]=[];for(var f=0;f0){for(var o=r.animators.length-1;o>=0;o--)if((t=r.animators[o]).destroyed)r.removeAnimator(o);else{if(!t.isAnimatePaused())for(var a=(e=t.get("animations")).length-1;a>=0;a--)n=e[a],Z(t,n,i)&&(e.splice(a,1),!1,n.callback&&n.callback());0===e.length&&r.removeAnimator(o)}r.canvas.get("autoDraw")||r.canvas.draw()}}))},t.prototype.addAnimator=function(t){this.animators.push(t)},t.prototype.removeAnimator=function(t){this.animators.splice(t,1)},t.prototype.isAnimating=function(){return!!this.animators.length},t.prototype.stop=function(){this.timer&&this.timer.stop()},t.prototype.stopAllAnimations=function(t){void 0===t&&(t=!0),this.animators.forEach((function(e){e.stopAnimate(t)})),this.animators=[],this.canvas.draw()},t.prototype.getTime=function(){return this.current},t}(),j=F,I=n(43860),R=["mousedown","mouseup","dblclick","mouseout","mouseover","mousemove","mouseleave","mouseenter","touchstart","touchmove","touchend","dragenter","dragover","dragleave","drop","contextmenu","mousewheel"];function L(t,e,n){n.name=e,n.target=t,n.currentTarget=t,n.delegateTarget=t,t.emit(e,n)}function N(t,e,n){if(n.bubbles){var r=void 0,i=!1;if("mouseenter"===e?(r=n.fromShape,i=!0):"mouseleave"===e&&(i=!0,r=n.toShape),t.isCanvas()&&i)return;if(r&&(0,l.UY)(t,r))return void(n.bubbles=!1);n.name=e,n.currentTarget=t,n.delegateTarget=t,t.emit(e,n)}}var B=function(){function t(t){var e=this;this.draggingShape=null,this.dragging=!1,this.currentShape=null,this.mousedownShape=null,this.mousedownPoint=null,this._eventCallback=function(t){var n=t.type;e._triggerEvent(n,t)},this._onDocumentMove=function(t){if(e.canvas.get("el")!==t.target&&(e.dragging||e.currentShape)){var n=e._getPointInfo(t);e.dragging&&e._emitEvent("drag",t,n,e.draggingShape)}},this._onDocumentMouseUp=function(t){if(e.canvas.get("el")!==t.target&&e.dragging){var n=e._getPointInfo(t);e.draggingShape&&e._emitEvent("drop",t,n,null),e._emitEvent("dragend",t,n,e.draggingShape),e._afterDrag(e.draggingShape,n,t)}},this.canvas=t.canvas}return t.prototype.init=function(){this._bindEvents()},t.prototype._bindEvents=function(){var t=this,e=this.canvas.get("el");(0,l.S6)(R,(function(n){e.addEventListener(n,t._eventCallback)})),document&&(document.addEventListener("mousemove",this._onDocumentMove),document.addEventListener("mouseup",this._onDocumentMouseUp))},t.prototype._clearEvents=function(){var t=this,e=this.canvas.get("el");(0,l.S6)(R,(function(n){e.removeEventListener(n,t._eventCallback)})),document&&(document.removeEventListener("mousemove",this._onDocumentMove),document.removeEventListener("mouseup",this._onDocumentMouseUp))},t.prototype._getEventObj=function(t,e,n,r,i,o){var a=new I.Z(t,e);return a.fromShape=i,a.toShape=o,a.x=n.x,a.y=n.y,a.clientX=n.clientX,a.clientY=n.clientY,a.propagationPath.push(r),a},t.prototype._getShape=function(t,e){return this.canvas.getShape(t.x,t.y,e)},t.prototype._getPointInfo=function(t){var e=this.canvas,n=e.getClientByEvent(t),r=e.getPointByEvent(t);return{x:r.x,y:r.y,clientX:n.x,clientY:n.y}},t.prototype._triggerEvent=function(t,e){var n=this._getPointInfo(e),r=this._getShape(n,e),i=this["_on"+t],o=!1;if(i)i.call(this,n,r,e);else{var a=this.currentShape;"mouseenter"===t||"dragenter"===t||"mouseover"===t?(this._emitEvent(t,e,n,null,null,r),r&&this._emitEvent(t,e,n,r,null,r),"mouseenter"===t&&this.draggingShape&&this._emitEvent("dragenter",e,n,null)):"mouseleave"===t||"dragleave"===t||"mouseout"===t?(o=!0,a&&this._emitEvent(t,e,n,a,a,null),this._emitEvent(t,e,n,null,a,null),"mouseleave"===t&&this.draggingShape&&this._emitEvent("dragleave",e,n,null)):this._emitEvent(t,e,n,r,null,null)}if(o||(this.currentShape=r),r&&!r.get("destroyed")){var c=this.canvas;c.get("el").style.cursor=r.attr("cursor")||c.get("cursor")}},t.prototype._onmousedown=function(t,e,n){0===n.button&&(this.mousedownShape=e,this.mousedownPoint=t,this.mousedownTimeStamp=n.timeStamp),this._emitEvent("mousedown",n,t,e,null,null)},t.prototype._emitMouseoverEvents=function(t,e,n,r){var i=this.canvas.get("el");n!==r&&(n&&(this._emitEvent("mouseout",t,e,n,n,r),this._emitEvent("mouseleave",t,e,n,n,r),r&&!r.get("destroyed")||(i.style.cursor=this.canvas.get("cursor"))),r&&(this._emitEvent("mouseover",t,e,r,n,r),this._emitEvent("mouseenter",t,e,r,n,r)))},t.prototype._emitDragoverEvents=function(t,e,n,r,i){r?(r!==n&&(n&&this._emitEvent("dragleave",t,e,n,n,r),this._emitEvent("dragenter",t,e,r,n,r)),i||this._emitEvent("dragover",t,e,r)):n&&this._emitEvent("dragleave",t,e,n,n,r),i&&this._emitEvent("dragover",t,e,r)},t.prototype._afterDrag=function(t,e,n){t&&(t.set("capture",!0),this.draggingShape=null),this.dragging=!1;var r=this._getShape(e,n);r!==t&&this._emitMouseoverEvents(n,e,t,r),this.currentShape=r},t.prototype._onmouseup=function(t,e,n){if(0===n.button){var r=this.draggingShape;this.dragging?(r&&this._emitEvent("drop",n,t,e),this._emitEvent("dragend",n,t,r),this._afterDrag(r,t,n)):(this._emitEvent("mouseup",n,t,e),e===this.mousedownShape&&this._emitEvent("click",n,t,e),this.mousedownShape=null,this.mousedownPoint=null)}},t.prototype._ondragover=function(t,e,n){n.preventDefault();var r=this.currentShape;this._emitDragoverEvents(n,t,r,e,!0)},t.prototype._onmousemove=function(t,e,n){var r=this.canvas,i=this.currentShape,o=this.draggingShape;if(this.dragging)o&&this._emitDragoverEvents(n,t,i,e,!1),this._emitEvent("drag",n,t,o);else{var a=this.mousedownPoint;if(a){var c=this.mousedownShape,l=n.timeStamp-this.mousedownTimeStamp,u=a.clientX-t.clientX,s=a.clientY-t.clientY;l>120||u*u+s*s>40?c&&c.get("draggable")?((o=this.mousedownShape).set("capture",!1),this.draggingShape=o,this.dragging=!0,this._emitEvent("dragstart",n,t,o),this.mousedownShape=null,this.mousedownPoint=null):!c&&r.get("draggable")?(this.dragging=!0,this._emitEvent("dragstart",n,t,null),this.mousedownShape=null,this.mousedownPoint=null):(this._emitMouseoverEvents(n,t,i,e),this._emitEvent("mousemove",n,t,e)):(this._emitMouseoverEvents(n,t,i,e),this._emitEvent("mousemove",n,t,e))}else this._emitMouseoverEvents(n,t,i,e),this._emitEvent("mousemove",n,t,e)}},t.prototype._emitEvent=function(t,e,n,r,i,o){var a=this._getEventObj(t,e,n,r,i,o);if(r){a.shape=r,L(r,t,a);for(var c=r.getParent();c;)c.emitDelegation(t,a),a.propagationStopped||N(c,t,a),a.propagationPath.push(c),c=c.getParent()}else{L(this.canvas,t,a)}},t.prototype.destroy=function(){this._clearEvents(),this.canvas=null,this.currentShape=null,this.draggingShape=null,this.mousedownPoint=null,this.mousedownShape=null,this.mousedownTimeStamp=null},t}(),z=B,U=(0,a.qY)(),H=U&&"firefox"===U.name,W=function(t){function e(e){var n=t.call(this,e)||this;return n.initContainer(),n.initDom(),n.initEvents(),n.initTimeline(),n}return(0,o.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return e.cursor="default",e.supportCSSTransform=!1,e},e.prototype.initContainer=function(){var t=this.get("container");(0,l.HD)(t)&&(t=document.getElementById(t),this.set("container",t))},e.prototype.initDom=function(){var t=this.createDom();this.set("el",t),this.get("container").appendChild(t),this.setDOMSize(this.get("width"),this.get("height"))},e.prototype.initEvents=function(){var t=new z({canvas:this});t.init(),this.set("eventController",t)},e.prototype.initTimeline=function(){var t=new j(this);this.set("timeline",t)},e.prototype.setDOMSize=function(t,e){var n=this.get("el");l.jU&&(n.style.width=t+"px",n.style.height=e+"px")},e.prototype.changeSize=function(t,e){this.setDOMSize(t,e),this.set("width",t),this.set("height",e),this.onCanvasChange("changeSize")},e.prototype.getRenderer=function(){return this.get("renderer")},e.prototype.getCursor=function(){return this.get("cursor")},e.prototype.setCursor=function(t){this.set("cursor",t);var e=this.get("el");l.jU&&e&&(e.style.cursor=t)},e.prototype.getPointByEvent=function(t){if(this.get("supportCSSTransform")){if(H&&!(0,l.kK)(t.layerX)&&t.layerX!==t.offsetX)return{x:t.layerX,y:t.layerY};if(!(0,l.kK)(t.offsetX))return{x:t.offsetX,y:t.offsetY}}var e=this.getClientByEvent(t),n=e.x,r=e.y;return this.getPointByClient(n,r)},e.prototype.getClientByEvent=function(t){var e=t;return t.touches&&(e="touchend"===t.type?t.changedTouches[0]:t.touches[0]),{x:e.clientX,y:e.clientY}},e.prototype.getPointByClient=function(t,e){var n=this.get("el").getBoundingClientRect();return{x:t-n.left,y:e-n.top}},e.prototype.getClientByPoint=function(t,e){var n=this.get("el").getBoundingClientRect();return{x:t+n.left,y:e+n.top}},e.prototype.draw=function(){},e.prototype.removeDom=function(){var t=this.get("el");t.parentNode.removeChild(t)},e.prototype.clearEvents=function(){this.get("eventController").destroy()},e.prototype.isCanvas=function(){return!0},e.prototype.getParent=function(){return null},e.prototype.destroy=function(){var e=this.get("timeline");this.get("destroyed")||(this.clear(),e&&e.stop(),this.clearEvents(),this.removeDom(),t.prototype.destroy.call(this))},e}(c.Z),V=W},25765:function(t,e,n){"use strict";var r=n(70903),i=n(86755),o=n(55013),a={},c="_INDEX";function l(t,e){if(t.set("canvas",e),t.isGroup()){var n=t.get("children");n.length&&n.forEach((function(t){l(t,e)}))}}function u(t,e){if(t.set("timeline",e),t.isGroup()){var n=t.get("children");n.length&&n.forEach((function(t){u(t,e)}))}}var s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,r.ZT)(e,t),e.prototype.isCanvas=function(){return!1},e.prototype.getBBox=function(){var t=1/0,e=-1/0,n=1/0,r=-1/0,i=this.getChildren().filter((function(t){return t.get("visible")&&(!t.isGroup()||t.isGroup()&&t.getChildren().length>0)}));return i.length>0?(0,o.S6)(i,(function(i){var o=i.getBBox(),a=o.minX,c=o.maxX,l=o.minY,u=o.maxY;ae&&(e=c),lr&&(r=u)})):(t=0,e=0,n=0,r=0),{x:t,y:n,minX:t,minY:n,maxX:e,maxY:r,width:e-t,height:r-n}},e.prototype.getCanvasBBox=function(){var t=1/0,e=-1/0,n=1/0,r=-1/0,i=this.getChildren().filter((function(t){return t.get("visible")&&(!t.isGroup()||t.isGroup()&&t.getChildren().length>0)}));return i.length>0?(0,o.S6)(i,(function(i){var o=i.getCanvasBBox(),a=o.minX,c=o.maxX,l=o.minY,u=o.maxY;ae&&(e=c),lr&&(r=u)})):(t=0,e=0,n=0,r=0),{x:t,y:n,minX:t,minY:n,maxX:e,maxY:r,width:e-t,height:r-n}},e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return e.children=[],e},e.prototype.onAttrChange=function(e,n,r){if(t.prototype.onAttrChange.call(this,e,n,r),"matrix"===e){var i=this.getTotalMatrix();this._applyChildrenMarix(i)}},e.prototype.applyMatrix=function(e){var n=this.getTotalMatrix();t.prototype.applyMatrix.call(this,e);var r=this.getTotalMatrix();r!==n&&this._applyChildrenMarix(r)},e.prototype._applyChildrenMarix=function(t){var e=this.getChildren();(0,o.S6)(e,(function(e){e.applyMatrix(t)}))},e.prototype.addShape=function(){for(var t=[],e=0;e=0;a--){var c=t[a];if((0,o.pP)(c)&&(c.isGroup()?i=c.getShape(e,n,r):c.isHit(e,n)&&(i=c)),i)break}return i},e.prototype.add=function(t){var e=this.getCanvas(),n=this.getChildren(),r=this.get("timeline"),i=t.getParent();i&&function(t,e,n){void 0===n&&(n=!0),n?e.destroy():(e.set("parent",null),e.set("canvas",null)),(0,o.As)(t.getChildren(),e)}(i,t,!1),t.set("parent",this),e&&l(t,e),r&&u(t,r),n.push(t),t.onCanvasChange("add"),this._applyElementMatrix(t)},e.prototype._applyElementMatrix=function(t){var e=this.getTotalMatrix();e&&t.applyMatrix(e)},e.prototype.getChildren=function(){return this.get("children")},e.prototype.sort=function(){var t,e=this.getChildren();(0,o.S6)(e,(function(t,e){return t[c]=e,t})),e.sort((t=function(t,e){return t.get("zIndex")-e.get("zIndex")},function(e,n){var r=t(e,n);return 0===r?e[c]-n[c]:r})),this.onCanvasChange("sort")},e.prototype.clear=function(){if(this.set("clearing",!0),!this.destroyed){for(var t=this.getChildren(),e=t.length-1;e>=0;e--)t[e].destroy();this.set("children",[]),this.onCanvasChange("clear"),this.set("clearing",!1)}},e.prototype.destroy=function(){this.get("destroyed")||(this.clear(),t.prototype.destroy.call(this))},e.prototype.getFirst=function(){return this.getChildByIndex(0)},e.prototype.getLast=function(){var t=this.getChildren();return this.getChildByIndex(t.length-1)},e.prototype.getChildByIndex=function(t){return this.getChildren()[t]},e.prototype.getCount=function(){return this.getChildren().length},e.prototype.contain=function(t){return this.getChildren().indexOf(t)>-1},e.prototype.removeChild=function(t,e){void 0===e&&(e=!0),this.contain(t)&&t.remove(e)},e.prototype.findAll=function(t){var e=[],n=this.getChildren();return(0,o.S6)(n,(function(n){t(n)&&e.push(n),n.isGroup()&&(e=e.concat(n.findAll(t)))})),e},e.prototype.find=function(t){var e=null,n=this.getChildren();return(0,o.S6)(n,(function(n){if(t(n)?e=n:n.isGroup()&&(e=n.find(t)),e)return!1})),e},e.prototype.findById=function(t){return this.find((function(e){return e.get("id")===t}))},e.prototype.findByClassName=function(t){return this.find((function(e){return e.get("className")===t}))},e.prototype.findAllByName=function(t){return this.findAll((function(e){return e.get("name")===t}))},e}(i.Z);e.Z=s},86755:function(t,e,n){"use strict";var r=n(70903),i=n(90326),o=n(12579),a=n(55013),c=n(16225),l=n(50138),u=o.vs,s="matrix",f=["zIndex","capture","visible","type"],h=["repeat"];function d(t,e){var n={},r=e.attrs;for(var i in t)n[i]=r[i];return n}var p=function(t){function e(e){var n=t.call(this,e)||this;n.attrs={};var r=n.getDefaultAttrs();return(0,i.CD)(r,e.attrs),n.attrs=r,n.initAttrs(r),n.initAnimate(),n}return(0,r.ZT)(e,t),e.prototype.getDefaultCfg=function(){return{visible:!0,capture:!0,zIndex:0}},e.prototype.getDefaultAttrs=function(){return{matrix:this.getDefaultMatrix(),opacity:1}},e.prototype.onCanvasChange=function(t){},e.prototype.initAttrs=function(t){},e.prototype.initAnimate=function(){this.set("animable",!0),this.set("animating",!1)},e.prototype.isGroup=function(){return!1},e.prototype.getParent=function(){return this.get("parent")},e.prototype.getCanvas=function(){return this.get("canvas")},e.prototype.attr=function(){for(var t,e=[],n=0;n0?r=function(t,e){if(e.onFrame)return t;var n=e.startTime,r=e.delay,o=e.duration,a=Object.prototype.hasOwnProperty;return(0,i.S6)(t,(function(t){n+rt.delay&&(0,i.S6)(e.toAttrs,(function(e,n){a.call(t.toAttrs,n)&&(delete t.toAttrs[n],delete t.fromAttrs[n])}))})),t}(r,w):n.addAnimator(this),r.push(w),this.set("animations",r),this.set("_pause",{isPaused:!1})}},e.prototype.stopAnimate=function(t){var e=this;void 0===t&&(t=!0);var n=this.get("animations");(0,i.S6)(n,(function(n){t&&(n.onFrame?e.attr(n.onFrame(1)):e.attr(n.toAttrs)),n.callback&&n.callback()})),this.set("animating",!1),this.set("animations",[])},e.prototype.pauseAnimate=function(){var t=this.get("timeline"),e=this.get("animations"),n=t.getTime();return(0,i.S6)(e,(function(t){t._paused=!0,t._pauseTime=n,t.pauseCallback&&t.pauseCallback()})),this.set("_pause",{isPaused:!0,pauseTime:n}),this},e.prototype.resumeAnimate=function(){var t=this.get("timeline").getTime(),e=this.get("animations"),n=this.get("_pause").pauseTime;return(0,i.S6)(e,(function(e){e.startTime=e.startTime+(t-n),e._paused=!1,e._pauseTime=null,e.resumeCallback&&e.resumeCallback()})),this.set("_pause",{isPaused:!1}),this.set("animations",e),this},e.prototype.emitDelegation=function(t,e){var n,r=this,o=e.propagationPath;this.getEvents();"mouseenter"===t?n=e.fromShape:"mouseleave"===t&&(n=e.toShape);for(var c=function(t){var c=o[t],u=c.get("name");if(u){if((c.isGroup()||c.isCanvas&&c.isCanvas())&&n&&(0,a.UY)(c,n))return"break";(0,i.kJ)(u)?(0,i.S6)(u,(function(t){r.emitDelegateEvent(c,t,e)})):l.emitDelegateEvent(c,u,e)}},l=this,u=0;u=t&&n.minY<=e&&n.maxY>=e},e.prototype.afterAttrsChange=function(e){t.prototype.afterAttrsChange.call(this,e),this.clearCacheBBox()},e.prototype.getBBox=function(){var t=this.cfg.bbox;return t||(t=this.calculateBBox(),this.set("bbox",t)),t},e.prototype.getCanvasBBox=function(){var t=this.cfg.canvasBBox;return t||(t=this.calculateCanvasBBox(),this.set("canvasBBox",t)),t},e.prototype.applyMatrix=function(e){t.prototype.applyMatrix.call(this,e),this.set("canvasBBox",null)},e.prototype.calculateCanvasBBox=function(){var t=this.getBBox(),e=this.getTotalMatrix(),n=t.minX,r=t.minY,i=t.maxX,a=t.maxY;if(e){var c=(0,o.rG)(e,[t.minX,t.minY]),l=(0,o.rG)(e,[t.maxX,t.minY]),u=(0,o.rG)(e,[t.minX,t.maxY]),s=(0,o.rG)(e,[t.maxX,t.maxY]);n=Math.min(c[0],l[0],u[0],s[0]),i=Math.max(c[0],l[0],u[0],s[0]),r=Math.min(c[1],l[1],u[1],s[1]),a=Math.max(c[1],l[1],u[1],s[1])}var f=this.attrs;if(f.shadowColor){var h=f.shadowBlur,d=void 0===h?0:h,p=f.shadowOffsetX,v=void 0===p?0:p,g=f.shadowOffsetY,m=void 0===g?0:g,y=n-d+v,b=i+d+v,x=r-d+m,w=a+d+m;n=Math.min(n,y),i=Math.max(i,b),r=Math.min(r,x),a=Math.max(a,w)}return{x:n,y:r,minX:n,minY:r,maxX:i,maxY:a,width:i-n,height:a-r}},e.prototype.clearCacheBBox=function(){this.set("bbox",null),this.set("canvasBBox",null)},e.prototype.isClipShape=function(){return this.get("isClipShape")},e.prototype.isInShape=function(t,e){return!1},e.prototype.isOnlyHitBox=function(){return!1},e.prototype.isHit=function(t,e){var n=this.get("startArrowShape"),r=this.get("endArrowShape"),i=[t,e,1],o=(i=this.invertFromMatrix(i))[0],a=i[1],c=this._isInBBox(o,a);if(this.isOnlyHitBox())return c;if(c&&!this.isClipped(o,a)){if(this.isInShape(o,a))return!0;if(n&&n.isHit(o,a))return!0;if(r&&r.isHit(o,a))return!0}return!1},e}(i.Z);e.Z=a},74205:function(t,e,n){"use strict";n.d(e,{_:function(){return q},C:function(){return Y}});var r={};function i(t){return+t}function o(t){return t*t}function a(t){return t*(2-t)}function c(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}function l(t){return t*t*t}function u(t){return--t*t*t+1}function s(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}n.r(r),n.d(r,{easeBack:function(){return U},easeBackIn:function(){return B},easeBackInOut:function(){return U},easeBackOut:function(){return z},easeBounce:function(){return R},easeBounceIn:function(){return I},easeBounceInOut:function(){return L},easeBounceOut:function(){return R},easeCircle:function(){return O},easeCircleIn:function(){return k},easeCircleInOut:function(){return O},easeCircleOut:function(){return C},easeCubic:function(){return s},easeCubicIn:function(){return l},easeCubicInOut:function(){return s},easeCubicOut:function(){return u},easeElastic:function(){return V},easeElasticIn:function(){return W},easeElasticInOut:function(){return G},easeElasticOut:function(){return V},easeExp:function(){return S},easeExpIn:function(){return x},easeExpInOut:function(){return S},easeExpOut:function(){return w},easeLinear:function(){return i},easePoly:function(){return d},easePolyIn:function(){return f},easePolyInOut:function(){return d},easePolyOut:function(){return h},easeQuad:function(){return c},easeQuadIn:function(){return o},easeQuadInOut:function(){return c},easeQuadOut:function(){return a},easeSin:function(){return y},easeSinIn:function(){return g},easeSinInOut:function(){return y},easeSinOut:function(){return m}});var f=function t(e){function n(t){return Math.pow(t,e)}return e=+e,n.exponent=t,n}(3),h=function t(e){function n(t){return 1-Math.pow(1-t,e)}return e=+e,n.exponent=t,n}(3),d=function t(e){function n(t){return((t*=2)<=1?Math.pow(t,e):2-Math.pow(2-t,e))/2}return e=+e,n.exponent=t,n}(3),p=Math.PI,v=p/2;function g(t){return 1==+t?1:1-Math.cos(t*v)}function m(t){return Math.sin(t*v)}function y(t){return(1-Math.cos(p*t))/2}function b(t){return 1.0009775171065494*(Math.pow(2,-10*t)-.0009765625)}function x(t){return b(1-+t)}function w(t){return 1-b(t)}function S(t){return((t*=2)<=1?b(1-t):2-b(t-1))/2}function k(t){return 1-Math.sqrt(1-t*t)}function C(t){return Math.sqrt(1- --t*t)}function O(t){return((t*=2)<=1?1-Math.sqrt(1-t*t):Math.sqrt(1-(t-=2)*t)+1)/2}var E=4/11,M=6/11,A=8/11,P=3/4,_=9/11,D=10/11,T=15/16,Z=21/22,F=63/64,j=1/E/E;function I(t){return 1-R(1-t)}function R(t){return(t=+t)Math.PI/2?Math.PI-u:u,s=s>Math.PI/2?Math.PI-s:s,{xExtra:Math.cos(l/2-u)*(e/2*(1/Math.sin(l/2)))-e/2||0,yExtra:Math.cos(s-l/2)*(e/2*(1/Math.sin(l/2)))-e/2||0}}i("rect",a),i("image",a),i("circle",c),i("marker",c),i("polyline",(function(t){for(var e=t.attr().points,n=[],r=[],i=0;i2&&(n.push([i].concat(c.splice(0,2))),l="l",i="m"===i?"l":"L"),"o"===l&&1===c.length&&n.push([i,c[0]]),"r"===l)n.push([i].concat(c));else for(;c.length>=e[l]&&(n.push([i].concat(c.splice(0,e[l]))),e[l]););return t})),n},l=function(t,e){for(var n=[],r=0,i=t.length;i-2*!e>r;r+=2){var o=[{x:+t[r-2],y:+t[r-1]},{x:+t[r],y:+t[r+1]},{x:+t[r+2],y:+t[r+3]},{x:+t[r+4],y:+t[r+5]}];e?r?i-4===r?o[3]={x:+t[0],y:+t[1]}:i-2===r&&(o[2]={x:+t[0],y:+t[1]},o[3]={x:+t[2],y:+t[3]}):o[0]={x:+t[i-2],y:+t[i-1]}:i-4===r?o[3]=o[2]:r||(o[0]={x:+t[r],y:+t[r+1]}),n.push(["C",(-o[0].x+6*o[1].x+o[2].x)/6,(-o[0].y+6*o[1].y+o[2].y)/6,(o[1].x+6*o[2].x-o[3].x)/6,(o[1].y+6*o[2].y-o[3].y)/6,o[2].x,o[2].y])}return n},u=function(t,e,n,r,i){var o=[];if(null===i&&null===r&&(r=n),t=+t,e=+e,n=+n,r=+r,null!==i){var a=Math.PI/180,c=t+n*Math.cos(-r*a),l=t+n*Math.cos(-i*a);o=[["M",c,e+n*Math.sin(-r*a)],["A",n,n,0,+(i-r>180),0,l,e+n*Math.sin(-i*a)]]}else o=[["M",t,e],["m",0,-r],["a",n,r,0,1,1,0,2*r],["a",n,r,0,1,1,0,-2*r],["z"]];return o},s=function(t){if(!(t=c(t))||!t.length)return[["M",0,0]];var e,n,r=[],i=0,o=0,a=0,s=0,f=0;"M"===t[0][0]&&(a=i=+t[0][1],s=o=+t[0][2],f++,r[0]=["M",i,o]);for(var h=3===t.length&&"M"===t[0][0]&&"R"===t[1][0].toUpperCase()&&"Z"===t[2][0].toUpperCase(),d=void 0,p=void 0,v=f,g=t.length;v1&&(r*=S=Math.sqrt(S),i*=S);var k=r*r,C=i*i,O=(a===c?-1:1)*Math.sqrt(Math.abs((k*C-k*w*w-C*x*x)/(k*w*w+C*x*x)));p=O*r*w/i+(e+l)/2,v=O*-i*x/r+(n+u)/2,h=Math.asin(((n-v)/i).toFixed(9)),d=Math.asin(((u-v)/i).toFixed(9)),h=ed&&(h-=2*Math.PI),!c&&d>h&&(d-=2*Math.PI)}var E=d-h;if(Math.abs(E)>g){var M=d,A=l,P=u;d=h+g*(c&&d>h?1:-1),y=t(l=p+r*Math.cos(d),u=v+i*Math.sin(d),r,i,o,0,c,A,P,[d,M,p,v])}E=d-h;var _=Math.cos(h),D=Math.sin(h),T=Math.cos(d),Z=Math.sin(d),F=Math.tan(E/4),j=4/3*r*F,I=4/3*i*F,R=[e,n],L=[e+j*D,n-I*_],N=[l+j*Z,u-I*T],B=[l,u];if(L[0]=2*R[0]-L[0],L[1]=2*R[1]-L[1],s)return[L,N,B].concat(y);for(var z=[],U=0,H=(y=[L,N,B].concat(y).join().split(",")).length;U7){t[e].shift();for(var o=t[e];o.length;)c[e]="A",i&&(l[e]="A"),t.splice(e++,0,["C"].concat(o.splice(0,6)));t.splice(e,1),n=Math.max(r.length,i&&i.length||0)}},m=function(t,e,o,a,c){t&&e&&"M"===t[c][0]&&"M"!==e[c][0]&&(e.splice(c,0,["M",a.x,a.y]),o.bx=0,o.by=0,o.x=t[c][1],o.y=t[c][2],n=Math.max(r.length,i&&i.length||0))};n=Math.max(r.length,i&&i.length||0);for(var y=0;y1?1:l<0?0:l)/2,s=[-.1252,.1252,-.3678,.3678,-.5873,.5873,-.7699,.7699,-.9041,.9041,-.9816,.9816],f=[.2491,.2491,.2335,.2335,.2032,.2032,.1601,.1601,.1069,.1069,.0472,.0472],h=0,d=0;d<12;d++){var p=u*s[d]+u,v=m(p,t,n,i,a),g=m(p,e,r,o,c),y=v*v+g*g;h+=f[d]*Math.sqrt(y)}return u*h},b=function(t,e,n,r,i,o,a,c){for(var l,u,s,f,h=[],d=[[],[]],p=0;p<2;++p)if(0===p?(u=6*t-12*n+6*i,l=-3*t+9*n-9*i+3*a,s=3*n-3*t):(u=6*e-12*r+6*o,l=-3*e+9*r-9*o+3*c,s=3*r-3*e),Math.abs(l)<1e-12){if(Math.abs(u)<1e-12)continue;(f=-s/u)>0&&f<1&&h.push(f)}else{var v=u*u-4*s*l,g=Math.sqrt(v);if(!(v<0)){var m=(-u+g)/(2*l);m>0&&m<1&&h.push(m);var y=(-u-g)/(2*l);y>0&&y<1&&h.push(y)}}for(var b,x=h.length,w=x;x--;)b=1-(f=h[x]),d[0][x]=b*b*b*t+3*b*b*f*n+3*b*f*f*i+f*f*f*a,d[1][x]=b*b*b*e+3*b*b*f*r+3*b*f*f*o+f*f*f*c;return d[0][w]=t,d[1][w]=e,d[0][w+1]=a,d[1][w+1]=c,d[0].length=d[1].length=w+2,{min:{x:Math.min.apply(0,d[0]),y:Math.min.apply(0,d[1])},max:{x:Math.max.apply(0,d[0]),y:Math.max.apply(0,d[1])}}},x=function(t,e,n,r,i,o,a,c){if(!(Math.max(t,n)Math.max(i,a)||Math.max(e,r)Math.max(o,c))){var l=(t-n)*(o-c)-(e-r)*(i-a);if(l){var u=((t*r-e*n)*(i-a)-(t-n)*(i*c-o*a))/l,s=((t*r-e*n)*(o-c)-(e-r)*(i*c-o*a))/l,f=+u.toFixed(2),h=+s.toFixed(2);if(!(f<+Math.min(t,n).toFixed(2)||f>+Math.max(t,n).toFixed(2)||f<+Math.min(i,a).toFixed(2)||f>+Math.max(i,a).toFixed(2)||h<+Math.min(e,r).toFixed(2)||h>+Math.max(e,r).toFixed(2)||h<+Math.min(o,c).toFixed(2)||h>+Math.max(o,c).toFixed(2)))return{x:u,y:s}}}},w=function(t,e,n){return e>=t.x&&e<=t.x+t.width&&n>=t.y&&n<=t.y+t.height},S=function(t,e,n,r,i){if(i)return[["M",+t+ +i,e],["l",n-2*i,0],["a",i,i,0,0,1,i,i],["l",0,r-2*i],["a",i,i,0,0,1,-i,i],["l",2*i-n,0],["a",i,i,0,0,1,-i,-i],["l",0,2*i-r],["a",i,i,0,0,1,i,-i],["z"]];var o=[["M",t,e],["l",n,0],["l",0,r],["l",-n,0],["z"]];return o.parsePathArray=g,o},k=function(t,e,n,r){return null===t&&(t=e=n=r=0),null===e&&(e=t.y,n=t.width,r=t.height,t=t.x),{x:t,y:e,width:n,w:n,height:r,h:r,x2:t+n,y2:e+r,cx:t+n/2,cy:e+r/2,r1:Math.min(n,r)/2,r2:Math.max(n,r)/2,r0:Math.sqrt(n*n+r*r)/2,path:S(t,e,n,r),vb:[t,e,n,r].join(" ")}},C=function(t,e,n,i,o,a,c,l){(0,r.kJ)(t)||(t=[t,e,n,i,o,a,c,l]);var u=b.apply(null,t);return k(u.min.x,u.min.y,u.max.x-u.min.x,u.max.y-u.min.y)},O=function(t,e,n,r,i,o,a,c,l){var u=1-l,s=Math.pow(u,3),f=Math.pow(u,2),h=l*l,d=h*l,p=t+2*l*(n-t)+h*(i-2*n+t),v=e+2*l*(r-e)+h*(o-2*r+e),g=n+2*l*(i-n)+h*(a-2*i+n),m=r+2*l*(o-r)+h*(c-2*o+r);return{x:s*t+3*f*l*n+3*u*l*l*i+d*a,y:s*e+3*f*l*r+3*u*l*l*o+d*c,m:{x:p,y:v},n:{x:g,y:m},start:{x:u*t+l*n,y:u*e+l*r},end:{x:u*i+l*a,y:u*o+l*c},alpha:90-180*Math.atan2(p-g,v-m)/Math.PI}},E=function(t,e,n){if(!function(t,e){return t=k(t),e=k(e),w(e,t.x,t.y)||w(e,t.x2,t.y)||w(e,t.x,t.y2)||w(e,t.x2,t.y2)||w(t,e.x,e.y)||w(t,e.x2,e.y)||w(t,e.x,e.y2)||w(t,e.x2,e.y2)||(t.xe.x||e.xt.x)&&(t.ye.y||e.yt.y)}(C(t),C(e)))return n?0:[];for(var r=~~(y.apply(0,t)/8),i=~~(y.apply(0,e)/8),o=[],a=[],c={},l=n?0:[],u=0;u=0&&S<=1&&E>=0&&E<=1&&(n?l+=1:l.push({x:b.x,y:b.y,t1:S,t2:E}))}}return l},M=function(t,e){return function(t,e,n){var r,i,o,a,c,l,u,s,f,h;t=p(t),e=p(e);for(var d=n?0:[],v=0,g=t.length;v=3&&(3===t.length&&e.push("Q"),e=e.concat(t[1])),2===t.length&&e.push("L"),e.concat(t[t.length-1])}))}(t,e,n));else{var i=[].concat(t);"M"===i[0]&&(i[0]="L");for(var o=0;o<=n-1;o++)r.push(i)}return r},_=function(t,e){if(1===t.length)return t;var n=t.length-1,r=e.length-1,i=n/r,o=[];if(1===t.length&&"M"===t[0][0]){for(var a=0;a=0;l--)a=o[l].index,"add"===o[l].type?t.splice(a,0,[].concat(t[a])):t.splice(a,1)}var f=i-(r=t.length);if(r0)){t[r]=e[r];break}n=F(n,t[r-1],1)}t[r]=["Q"].concat(n.reduce((function(t,e){return t.concat(e)}),[]));break;case"T":t[r]=["T"].concat(n[0]);break;case"C":if(n.length<3){if(!(r>0)){t[r]=e[r];break}n=F(n,t[r-1],2)}t[r]=["C"].concat(n.reduce((function(t,e){return t.concat(e)}),[]));break;case"S":if(n.length<2){if(!(r>0)){t[r]=e[r];break}n=F(n,t[r-1],1)}t[r]=["S"].concat(n.reduce((function(t,e){return t.concat(e)}),[]));break;default:t[r]=e[r]}return t}},88482:function(t,e,n){"use strict";n.d(e,{$O:function(){return c},FE:function(){return o},mY:function(){return a}});var r=n(55013),i=n(84822);function o(t,e,n){var i=1;if((0,r.HD)(t)&&(i=t.split("\n").length),i>1){var o=function(t,e){return e?e-t:.14*t}(e,n);return e*i+o*(i-1)}return e}function a(t,e){var n=(0,i.L)(),o=0;if((0,r.kK)(t)||""===t)return o;if(n.save(),n.font=e,(0,r.HD)(t)&&t.includes("\n")){var a=t.split("\n");(0,r.S6)(a,(function(t){var e=n.measureText(t).width;o(n-t)*(n-t)+(r-e)*(r-e)?o(n,r,i,a):this.pointToLine(t,e,n,r,i,a)},pointToLine:function(t,e,n,r,i,o){var a=[n-t,r-e];if(s.I6(a,[0,0]))return Math.sqrt((i-t)*(i-t)+(o-e)*(o-e));var c=[-a[1],a[0]];s.Fv(c,c);var l=[i-t,o-e];return Math.abs(s.AK(l,c))},tangentAngle:function(t,e,n,r){return Math.atan2(r-e,n-t)}};function h(t,e,n,r,i,a){var c,l=1/0,u=[n,r],s=20;a&&a>200&&(s=a/10);for(var f=1/s,h=f/10,d=0;d<=s;d++){var p=d*f,v=[i.apply(null,t.concat([p])),i.apply(null,e.concat([p]))];(b=o(u[0],u[1],v[0],v[1]))=0&&b=0?[i]:[]}function v(t,e,n,r){return 2*(1-r)*(e-t)+2*r*(n-e)}function g(t,e,n,r,i,o,a){var c=d(t,n,i,a),l=d(e,r,o,a),u=f.pointAt(t,e,n,r,a),s=f.pointAt(n,r,i,o,a);return[[t,e,u.x,u.y,c,l],[c,l,s.x,s.y,i,o]]}function m(t,e,n,r,i,a,c){if(0===c)return(o(t,e,n,r)+o(n,r,i,a)+o(t,e,i,a))/2;var l=g(t,e,n,r,i,a,.5),u=l[0],s=l[1];return u.push(c-1),s.push(c-1),m.apply(null,u)+m.apply(null,s)}var y={box:function(t,e,n,r,i,o){var a=p(t,n,i)[0],l=p(e,r,o)[0],u=[t,i],s=[e,o];return void 0!==a&&u.push(d(t,n,i,a)),void 0!==l&&s.push(d(e,r,o,l)),c(u,s)},length:function(t,e,n,r,i,o){return m(t,e,n,r,i,o,3)},nearestPoint:function(t,e,n,r,i,o,a,c){return h([t,n,i],[e,r,o],a,c,d)},pointDistance:function(t,e,n,r,i,a,c,l){var u=this.nearestPoint(t,e,n,r,i,a,c,l);return o(u.x,u.y,c,l)},interpolationAt:d,pointAt:function(t,e,n,r,i,o,a){return{x:d(t,n,i,a),y:d(e,r,o,a)}},divide:function(t,e,n,r,i,o,a){return g(t,e,n,r,i,o,a)},tangentAngle:function(t,e,n,r,i,o,a){var c=v(t,n,i,a),l=v(e,r,o,a);return u(Math.atan2(l,c))}};function b(t,e,n,r,i){var o=1-i;return o*o*o*t+3*e*i*o*o+3*n*i*i*o+r*i*i*i}function x(t,e,n,r,i){var o=1-i;return 3*(o*o*(e-t)+2*o*i*(n-e)+i*i*(r-n))}function w(t,e,n,r){var i,o,c,l=-3*t+9*e-9*n+3*r,u=6*t-12*e+6*n,s=3*e-3*t,f=[];if(a(l,0))a(u,0)||(i=-s/u)>=0&&i<=1&&f.push(i);else{var h=u*u-4*l*s;a(h,0)?f.push(-u/(2*l)):h>0&&(o=(-u-(c=Math.sqrt(h)))/(2*l),(i=(-u+c)/(2*l))>=0&&i<=1&&f.push(i),o>=0&&o<=1&&f.push(o))}return f}function S(t,e,n,r,i,o,a,c,l){var u=b(t,n,i,a,l),s=b(e,r,o,c,l),h=f.pointAt(t,e,n,r,l),d=f.pointAt(n,r,i,o,l),p=f.pointAt(i,o,a,c,l),v=f.pointAt(h.x,h.y,d.x,d.y,l),g=f.pointAt(d.x,d.y,p.x,p.y,l);return[[t,e,h.x,h.y,v.x,v.y,u,s],[u,s,g.x,g.y,p.x,p.y,a,c]]}function k(t,e,n,r,i,a,c,l,u){if(0===u)return function(t,e){for(var n=0,r=t.length,i=0;i0?n:-1*n}var E=function(t,e,n,r,i,o){var a=n,c=r;if(0===a||0===c)return{x:t,y:e};for(var l,u,s=i-t,f=o-e,h=Math.abs(s),d=Math.abs(f),p=a*a,v=c*c,g=Math.PI/4,m=0;m<4;m++){l=a*Math.cos(g),u=c*Math.sin(g);var y=(p-v)*Math.pow(Math.cos(g),3)/a,b=(v-p)*Math.pow(Math.sin(g),3)/c,x=l-y,w=u-b,S=h-y,k=d-b,C=Math.hypot(w,x),E=Math.hypot(k,S);g+=C*Math.asin((x*k-w*S)/(C*E))/Math.sqrt(p+v-l*l-u*u),g=Math.min(Math.PI/2,Math.max(0,g))}return{x:t+O(l,s),y:e+O(u,f)}};function M(t,e,n,r,i,o){return n*Math.cos(i)*Math.cos(o)-r*Math.sin(i)*Math.sin(o)+t}function A(t,e,n,r,i,o){return n*Math.sin(i)*Math.cos(o)+r*Math.cos(i)*Math.sin(o)+e}function P(t,e,n){return{x:t*Math.cos(n),y:e*Math.sin(n)}}function _(t,e,n){var r=Math.cos(n),i=Math.sin(n);return[t*r-e*i,t*i+e*r]}var D={box:function(t,e,n,r,i,o,a){for(var c=function(t,e,n){return Math.atan(-e/t*Math.tan(n))}(n,r,i),l=1/0,u=-1/0,s=[o,a],f=2*-Math.PI;f<=2*Math.PI;f+=Math.PI){var h=c+f;ou&&(u=d)}var p=function(t,e,n){return Math.atan(e/(t*Math.tan(n)))}(n,r,i),v=1/0,g=-1/0,m=[o,a];for(f=2*-Math.PI;f<=2*Math.PI;f+=Math.PI){var y=p+f;og&&(g=b)}return{x:l,y:v,width:u-l,height:g-v}},length:function(t,e,n,r,i,o,a){},nearestPoint:function(t,e,n,r,i,o,a,c,l){var u=_(c-t,l-e,-i),s=u[0],f=u[1],h=E(0,0,n,r,s,f),d=function(t,e,n,r){return(Math.atan2(r*t,n*e)+2*Math.PI)%(2*Math.PI)}(n,r,h.x,h.y);da&&(h=P(n,r,a));var p=_(h.x,h.y,i);return{x:p[0]+t,y:p[1]+e}},pointDistance:function(t,e,n,r,i,a,c,l,u){var s=this.nearestPoint(t,e,n,r,l,u);return o(s.x,s.y,l,u)},pointAt:function(t,e,n,r,i,o,a,c){var l=(a-o)*c+o;return{x:M(t,0,n,r,i,l),y:A(0,e,n,r,i,l)}},tangentAngle:function(t,e,n,r,i,o,a,c){var l=(a-o)*c+o,s=function(t,e,n,r,i,o,a,c){return-1*n*Math.cos(i)*Math.sin(c)-r*Math.sin(i)*Math.cos(c)}(0,0,n,r,i,0,0,l),f=function(t,e,n,r,i,o,a,c){return-1*n*Math.sin(i)*Math.sin(c)+r*Math.cos(i)*Math.cos(c)}(0,0,n,r,i,0,0,l);return u(Math.atan2(f,s))}};function T(t){for(var e=0,n=[],r=0;r1||e<0||t.length<2)return null;var n=T(t),r=n.segments,i=n.totalLength;if(0===i)return{x:t[0][0],y:t[0][1]};for(var o=0,a=null,c=0;c=o&&e<=o+h){var d=(e-o)/h;a=f.pointAt(u[0],u[1],s[0],s[1],d);break}o+=h}return a}function j(t,e){if(e>1||e<0||t.length<2)return 0;for(var n=T(t),r=n.segments,i=n.totalLength,o=0,a=0,c=0;c=o&&e<=o+f){a=Math.atan2(s[1]-u[1],s[0]-u[0]);break}o+=f}return a}function I(t,e,n){for(var r=1/0,i=0;i=0;return n?o?2*Math.PI-r:r:o?r:2*Math.PI-r}},85687:function(t,e,n){"use strict";n.d(e,{e9:function(){return l},Wq:function(){return D},tr:function(){return h},wb:function(){return v},zx:function(){return S}});var r=n(90326),i=/[MLHVQTCSAZ]([^MLHVQTCSAZ]*)/gi,o=/[^\s\,]+/gi;var a=function(t){var e=t||[];return(0,r.kJ)(e)?e:(0,r.HD)(e)?(e=e.match(i),(0,r.S6)(e,(function(t,n){if((t=t.match(o))[0].length>1){var i=t[0].charAt(0);t.splice(1,0,t[0].substr(1)),t[0]=i}(0,r.S6)(t,(function(e,n){isNaN(e)||(t[n]=+e)})),e[n]=t})),e):void 0},c=n(17647);var l=function(t,e,n){void 0===e&&(e=!1),void 0===n&&(n=[[0,0],[1,1]]);for(var r=!!e,i=[],o=0,a=t.length;o2&&(n.push([r].concat(o.splice(0,2))),a="l",r="m"===r?"l":"L"),"o"===a&&1===o.length&&n.push([r,o[0]]),"r"===a)n.push([r].concat(o));else for(;o.length>=e[a]&&(n.push([r].concat(o.splice(0,e[a]))),e[a]););return""})),n}var d=/[a-z]/;function p(t,e){return[e[0]+(e[0]-t[0]),e[1]+(e[1]-t[1])]}function v(t){var e=h(t);if(!e||!e.length)return[["M",0,0]];for(var n=!1,r=0;r=0){n=!0;break}}if(!n)return e;var o=[],a=0,c=0,l=0,u=0,s=0,f=e[0];"M"!==f[0]&&"m"!==f[0]||(l=a=+f[1],u=c=+f[2],s++,o[0]=["M",a,c]);r=s;for(var v=e.length;r1&&(n*=Math.sqrt(p),i*=Math.sqrt(p));var v=n*n*(d*d)+i*i*(h*h),g=v?Math.sqrt((n*n*(i*i)-v)/v):1;a===c&&(g*=-1),isNaN(g)&&(g=0);var x=i?g*n*d/i:0,w=n?g*-i*h/n:0,S=(l+s)/2+Math.cos(o)*x-Math.sin(o)*w,k=(u+f)/2+Math.sin(o)*x+Math.cos(o)*w,C=[(h-x)/n,(d-w)/i],O=[(-1*h-x)/n,(-1*d-w)/i],E=y([1,0],C),M=y(C,O);return m(C,O)<=-1&&(M=Math.PI),m(C,O)>=1&&(M=0),0===c&&M>0&&(M-=2*Math.PI),1===c&&M<0&&(M+=2*Math.PI),{cx:S,cy:k,rx:b(t,[s,f])?0:n,ry:b(t,[s,f])?0:i,startAngle:E,endAngle:E+M,xRotation:o,arcFlag:a,sweepFlag:c}}function w(t,e){return[e[0]+(e[0]-t[0]),e[1]+(e[1]-t[1])]}function S(t){for(var e=[],n=null,r=null,i=null,o=0,c=(t=a(t)).length,l=0;l0!=C(c[1]-n)>0&&C(e-(n-a[1])*(a[0]-c[0])/(a[1]-c[1])-a[0])<0&&(r=!r)}return r}var M=function(t,e,n){return t>=e&&t<=n};function A(t){for(var e=[],n=t.length,r=0;r1){var a=t[0],c=t[n-1];e.push({from:{x:c[0],y:c[1]},to:{x:a[0],y:a[1]}})}return e}function P(t,e){var n=!1;return(0,r.S6)(t,(function(t){if(function(t,e,n,r){var i=n.x-t.x,o=n.y-t.y,a=e.x-t.x,c=e.y-t.y,l=r.x-n.x,u=r.y-n.y,s=a*u-c*l,f=null;if(s*s>.001*(a*a+c*c)*(l*l+u*u)){var h=(i*u-o*l)/s,d=(i*c-o*a)/s;M(h,0,1)&&M(d,0,1)&&(f={x:t.x+h*a,y:t.y+h*c})}return f}(t.from,t.to,e.from,e.to))return n=!0,!1})),n}function _(t){var e=t.map((function(t){return t[0]})),n=t.map((function(t){return t[1]}));return{minX:Math.min.apply(null,e),maxX:Math.max.apply(null,e),minY:Math.min.apply(null,n),maxY:Math.max.apply(null,n)}}function D(t,e){if(t.length<2||e.length<2)return!1;var n,i,o=_(t),a=_(e);if(n=o,(i=a).minX>n.maxX||i.maxXn.maxY||i.maxY-1},o=function(t,e){if(!r(t))return t;for(var n=[],i=0;ie[i])return 1;if(t[i]n?n:t},H=function(t,e){var n=e.toString(),r=n.indexOf(".");if(-1===r)return Math.round(t);var i=n.substr(r+1).length;return i>20&&(i=20),parseFloat(t.toFixed(i))},W=function(t){return l(t,"Number")},V=(Number.isInteger&&Number.isInteger,1e-5);function G(t,e,n){return void 0===n&&(n=V),Math.abs(t-e)r&&(n=o,r=a)}return n}},q=function(t,e){if(f(t)){for(var n,r=1/0,i=0;ie?(r&&(clearTimeout(r),r=null),c=u,a=t.apply(i,o),r||(i=o=null)):r||!1===n.trailing||(r=setTimeout(l,s)),a};return u.cancel=function(){clearTimeout(r),c=0,r=i=o=null},u},It=function(t){return r(t)?Array.prototype.slice.call(t):[]},Rt={},Lt=function(t){return Rt[t=t||"g"]?Rt[t]+=1:Rt[t]=1,t+Rt[t]},Nt=function(){};function Bt(t){return s(t)?0:r(t)?t.length:Object.keys(t).length}var zt,Ut=n(70903),Ht=yt((function(t,e){void 0===e&&(e={});var n=e.fontSize,r=e.fontFamily,i=e.fontWeight,o=e.fontStyle,a=e.fontVariant;return zt||(zt=document.createElement("canvas").getContext("2d")),zt.font=[o,a,i,n+"px",r].join(" "),zt.measureText(_(t)?t:"").width}),(function(t,e){return void 0===e&&(e={}),(0,Ut.pr)([t],tt(e)).join("")})),Wt=function(t,e,n,r){void 0===r&&(r="...");var i,o,a=Ht(r,n),c=_(t)?t:et(t),l=e,u=[];if(Ht(t,n)<=e)return t;for(;i=c.substr(0,16),!((o=Ht(i,n))+a>l&&o>l);)if(u.push(i),l-=o,!(c=c.substr(16)))return u.join("");for(;i=c.substr(0,1),!((o=Ht(i,n))+a>l);)if(u.push(i),l-=o,!(c=c.substr(1)))return u.join("");return""+u.join("")+r},Vt=function(){function t(){this.map={}}return t.prototype.has=function(t){return void 0!==this.map[t]},t.prototype.get=function(t,e){var n=this.map[t];return void 0===n?e:n},t.prototype.set=function(t,e){this.map[t]=e},t.prototype.clear=function(){this.map={}},t.prototype.delete=function(t){delete this.map[t]},t.prototype.size=function(){return Object.keys(this.map).length},t}()},53746:function(t){var e=function(){"use strict";function t(t,e){return null!=e&&t instanceof e}var e,n,r;try{e=Map}catch(c){e=function(){}}try{n=Set}catch(c){n=function(){}}try{r=Promise}catch(c){r=function(){}}function i(o,c,l,u,s){"object"==typeof c&&(l=c.depth,u=c.prototype,s=c.includeNonEnumerable,c=c.circular);var f=[],h=[],d="undefined"!=typeof Buffer;return void 0===c&&(c=!0),void 0===l&&(l=1/0),function o(l,p){if(null===l)return null;if(0===p)return l;var v,g;if("object"!=typeof l)return l;if(t(l,e))v=new e;else if(t(l,n))v=new n;else if(t(l,r))v=new r((function(t,e){l.then((function(e){t(o(e,p-1))}),(function(t){e(o(t,p-1))}))}));else if(i.__isArray(l))v=[];else if(i.__isRegExp(l))v=new RegExp(l.source,a(l)),l.lastIndex&&(v.lastIndex=l.lastIndex);else if(i.__isDate(l))v=new Date(l.getTime());else{if(d&&Buffer.isBuffer(l))return v=Buffer.allocUnsafe?Buffer.allocUnsafe(l.length):new Buffer(l.length),l.copy(v),v;t(l,Error)?v=Object.create(l):void 0===u?(g=Object.getPrototypeOf(l),v=Object.create(g)):(v=Object.create(u),g=u)}if(c){var m=f.indexOf(l);if(-1!=m)return h[m];f.push(l),h.push(v)}for(var y in t(l,e)&&l.forEach((function(t,e){var n=o(e,p-1),r=o(t,p-1);v.set(n,r)})),t(l,n)&&l.forEach((function(t){var e=o(t,p-1);v.add(e)})),l){var b;g&&(b=Object.getOwnPropertyDescriptor(g,y)),b&&null==b.set||(v[y]=o(l[y],p-1))}if(Object.getOwnPropertySymbols){var x=Object.getOwnPropertySymbols(l);for(y=0;y>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===n?S(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===n?S(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=f.exec(t))?new O(e[1],e[2],e[3],1):(e=h.exec(t))?new O(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=d.exec(t))?S(e[1],e[2],e[3],e[4]):(e=p.exec(t))?S(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=v.exec(t))?D(e[1],e[2]/100,e[3]/100,1):(e=g.exec(t))?D(e[1],e[2]/100,e[3]/100,e[4]):m.hasOwnProperty(t)?w(m[t]):"transparent"===t?new O(NaN,NaN,NaN,0):null}function w(t){return new O(t>>16&255,t>>8&255,255&t,1)}function S(t,e,n,r){return r<=0&&(t=e=n=NaN),new O(t,e,n,r)}function k(t){return t instanceof i||(t=x(t)),t?new O((t=t.rgb()).r,t.g,t.b,t.opacity):new O}function C(t,e,n,r){return 1===arguments.length?k(t):new O(t,e,n,null==r?1:r)}function O(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}function E(){return"#".concat(_(this.r)).concat(_(this.g)).concat(_(this.b))}function M(){var t=A(this.opacity);return"".concat(1===t?"rgb(":"rgba(").concat(P(this.r),", ").concat(P(this.g),", ").concat(P(this.b)).concat(1===t?")":", ".concat(t,")"))}function A(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function P(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function _(t){return((t=P(t))<16?"0":"")+t.toString(16)}function D(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new F(t,e,n,r)}function T(t){if(t instanceof F)return new F(t.h,t.s,t.l,t.opacity);if(t instanceof i||(t=x(t)),!t)return new F;if(t instanceof F)return t;var e=(t=t.rgb()).r/255,n=t.g/255,r=t.b/255,o=Math.min(e,n,r),a=Math.max(e,n,r),c=NaN,l=a-o,u=(a+o)/2;return l?(c=e===a?(n-r)/l+6*(n0&&u<1?0:c,new F(c,l,u,t.opacity)}function Z(t,e,n,r){return 1===arguments.length?T(t):new F(t,e,n,null==r?1:r)}function F(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}function j(t){return(t=(t||0)%360)<0?t+360:t}function I(t){return Math.max(0,Math.min(1,t||0))}function R(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}(0,r.Z)(i,x,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:y,formatHex:y,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return T(this).formatHsl()},formatRgb:b,toString:b}),(0,r.Z)(O,C,(0,r.l)(i,{brighter:function(t){return t=null==t?a:Math.pow(a,t),new O(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?o:Math.pow(o,t),new O(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},clamp:function(){return new O(P(this.r),P(this.g),P(this.b),A(this.opacity))},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:E,formatHex:E,formatHex8:function(){return"#".concat(_(this.r)).concat(_(this.g)).concat(_(this.b)).concat(_(255*(isNaN(this.opacity)?1:this.opacity)))},formatRgb:M,toString:M})),(0,r.Z)(F,Z,(0,r.l)(i,{brighter:function(t){return t=null==t?a:Math.pow(a,t),new F(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?o:Math.pow(o,t),new F(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new O(R(t>=240?t-240:t+120,i,r),R(t,i,r),R(t<120?t+240:t-120,i,r),this.opacity)},clamp:function(){return new F(j(this.h),I(this.s),I(this.l),A(this.opacity))},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=A(this.opacity);return"".concat(1===t?"hsl(":"hsla(").concat(j(this.h),", ").concat(100*I(this.s),"%, ").concat(100*I(this.l),"%").concat(1===t?")":", ".concat(t,")"))}}))},2077:function(t,e,n){"use strict";function r(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function i(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}n.d(e,{Z:function(){return r},l:function(){return i}})},79739:function(t,e,n){"use strict";n.d(e,{M:function(){return a},Z:function(){return o}});var r=n(23713),i=n(3256);function o(t,e){return((0,i.v)(e)?i.Z:a)(t,e)}function a(t,e){var n,i=e?e.length:0,o=t?Math.min(i,t.length):0,a=new Array(o),c=new Array(i);for(n=0;n=1?(n=1,e-1):Math.floor(n*e),o=t[i],a=t[i+1],c=i>0?t[i-1]:2*o-a,l=i180||n<-180?n-360*Math.round(n/360):n):(0,r.Z)(isNaN(t)?e:t)}function a(t){return 1==(t=+t)?c:function(e,n){return n-e?function(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}(e,n,t):(0,r.Z)(isNaN(e)?n:e)}}function c(t,e){var n=e-t;return n?i(t,n):(0,r.Z)(isNaN(t)?e:t)}},80546:function(t,e){"use strict";e.Z=function(t){return function(){return t}}},66276:function(t,e,n){"use strict";function r(t,e){var n=new Date;return t=+t,e=+e,function(r){return n.setTime(t*(1-r)+e*r),n}}n.d(e,{Z:function(){return r}})},44922:function(t,e,n){"use strict";function r(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}n.d(e,{Z:function(){return r}})},3256:function(t,e,n){"use strict";function r(t,e){e||(e=[]);var n,r=t?Math.min(e.length,t.length):0,i=e.slice();return function(o){for(n=0;nl&&(c=e.slice(l,c),s[u]?s[u]+=c:s[++u]=c),(n=n[0])===(a=a[0])?s[u]?s[u]+=a:s[++u]=a:(s[++u]=null,f.push({i:u,x:(0,r.Z)(n,a)})),l=o.lastIndex;return li&&(t.splice(r+1,0,f),n=!0)}return n}}function f(t,e,n,r){var i=r-t*t,o=Math.abs(i)<1e-24?0:(n-t*e)/i;return[e-o*t,o]}function h(){var t,n=function(t){return t[0]},r=function(t){return t[1]};function i(i){var o=0,l=0,u=0,h=0,d=0,p=0,v=t?+t[0]:1/0,g=t?+t[1]:-1/0;a(i,n,r,(function(e,n){var r=Math.log(n),i=e*n;++o,l+=(n-l)/o,h+=(i-h)/o,p+=(e*i-p)/o,u+=(n*r-u)/o,d+=(i*r-d)/o,t||(eg&&(g=e))}));var m=e(f(h/l,u/l,d/l,p/l),2),y=m[0],b=m[1];y=Math.exp(y);var x=function(t){return y*Math.exp(b*t)},w=s(v,g,x);return w.a=y,w.b=b,w.predict=x,w.rSquared=c(i,n,r,l,x),w}return i.domain=function(e){return arguments.length?(t=e,i):t},i.x=function(t){return arguments.length?(n=t,i):n},i.y=function(t){return arguments.length?(r=t,i):r},i}function d(){var t,n=function(t){return t[0]},r=function(t){return t[1]};function i(i){var o=0,l=0,u=0,s=0,h=0,d=t?+t[0]:1/0,p=t?+t[1]:-1/0;a(i,n,r,(function(e,n){++o,l+=(e-l)/o,u+=(n-u)/o,s+=(e*n-s)/o,h+=(e*e-h)/o,t||(ep&&(p=e))}));var v=e(f(l,u,s,h),2),g=v[0],m=v[1],y=function(t){return m*t+g},b=[[d,y(d)],[p,y(p)]];return b.a=m,b.b=g,b.predict=y,b.rSquared=c(i,n,r,u,y),b}return i.domain=function(e){return arguments.length?(t=e,i):t},i.x=function(t){return arguments.length?(n=t,i):n},i.y=function(t){return arguments.length?(r=t,i):r},i}function p(t){t.sort((function(t,e){return t-e}));var e=t.length/2;return e%1==0?(t[e-1]+t[e])/2:t[Math.floor(e)]}var v=2,g=1e-12;function m(){var t=function(t){return t[0]},n=function(t){return t[1]},r=.3;function i(i){for(var a=e(o(i,t,n,!0),4),c=a[0],l=a[1],u=a[2],s=a[3],h=c.length,d=Math.max(2,~~(r*h)),m=new Float64Array(h),w=new Float64Array(h),S=new Float64Array(h).fill(1),k=-1;++k<=v;){for(var C=[0,d-1],O=0;Oc[A]-E?M:A,_=0,D=0,T=0,Z=0,F=0,j=1/Math.abs(c[P]-E||1),I=M;I<=A;++I){var R=c[I],L=l[I],N=y(Math.abs(E-R)*j)*S[I],B=R*N;_+=N,D+=B,T+=L*N,Z+=L*B,F+=R*B}var z=e(f(D/_,T/_,Z/_,F/_),2),U=z[0],H=z[1];m[O]=U+H*E,w[O]=Math.abs(l[O]-m[O]),b(c,O+1,C)}if(k===v)break;var W=p(w);if(Math.abs(W)=1?g:(G=1-V*V)*G}return x(c,m,u,s)}return i.bandwidth=function(t){return arguments.length?(r=t,i):r},i.x=function(e){return arguments.length?(t=e,i):t},i.y=function(t){return arguments.length?(n=t,i):n},i}function y(t){return(t=1-t*t*t)*t*t}function b(t,e,n){var r=t[e],i=n[0],o=n[1]+1;if(!(o>=t.length))for(;e>i&&t[o]-r<=r-t[i];)n[0]=++i,n[1]=o,++o}function x(t,e,n,r){for(var i,o=t.length,a=[],c=0,l=0,u=[];cg&&(g=e))}));var y=e(f(u,h,d,p),2),b=y[0],x=y[1],w=function(t){return x*Math.log(t)/m+b},S=s(v,g,w);return S.a=x,S.b=b,S.predict=w,S.rSquared=c(o,n,r,h,w),S}return o.domain=function(e){return arguments.length?(t=e,o):t},o.x=function(t){return arguments.length?(n=t,o):n},o.y=function(t){return arguments.length?(r=t,o):r},o.base=function(t){return arguments.length?(i=t,o):i},o}function S(){var t,n=function(t){return t[0]},r=function(t){return t[1]};function i(i){var l,u,f,h,d=e(o(i,n,r),4),p=d[0],v=d[1],g=d[2],m=d[3],y=p.length,b=0,x=0,w=0,S=0,k=0;for(l=0;lM&&(M=e))}));var A=w-b*b,P=b*A-x*x,_=(k*b-S*x)/P,D=(S*A-k*x)/P,T=-_*b,Z=function(t){return _*(t-=g)*t+D*t+T+m},F=s(E,M,Z);return F.a=_,F.b=D-2*_*g,F.c=T-D*g+_*g*g+m,F.predict=Z,F.rSquared=c(i,n,r,C,Z),F}return i.domain=function(e){return arguments.length?(t=e,i):t},i.x=function(t){return arguments.length?(n=t,i):n},i.y=function(t){return arguments.length?(r=t,i):r},i}function k(){var t,n=function(t){return t[0]},r=function(t){return t[1]},i=3;function l(l){if(1===i){var u=d().x(n).y(r).domain(t)(l);return u.coefficients=[u.b,u.a],delete u.a,delete u.b,u}if(2===i){var f=S().x(n).y(r).domain(t)(l);return f.coefficients=[f.c,f.b,f.a],delete f.a,delete f.b,delete f.c,f}var h,p,v,g,m,y=e(o(l,n,r),4),b=y[0],x=y[1],w=y[2],k=y[3],E=b.length,M=[],A=[],P=i+1,_=0,D=0,T=t?+t[0]:1/0,Z=t?+t[1]:-1/0;for(a(l,n,r,(function(e,n){++D,_+=(n-_)/D,t||(eZ&&(Z=e))})),h=0;h=0;--i)for(a=e[i],c=1,l[i]+=a,o=1;o<=i;++o)c*=(i+1-o)/o,l[i-o]+=a*Math.pow(n,o)*c;return l[0]+=r,l}function O(t){var e,n,r,i,o,a=t.length-1,c=[];for(e=0;eMath.abs(t[e][i])&&(i=n);for(r=e;r=e;r--)t[r][n]-=t[r][e]*t[e][n]/t[e][e]}for(n=a-1;n>=0;--n){for(o=0,r=n+1;rg&&(g=e))}));var m=e(f(l,u,h,d),2),y=m[0],b=m[1];y=Math.exp(y);var x=function(t){return y*Math.pow(t,b)},w=s(v,g,x);return w.a=y,w.b=b,w.predict=x,w.rSquared=c(i,n,r,p,x),w}return i.domain=function(e){return arguments.length?(t=e,i):t},i.x=function(t){return arguments.length?(n=t,i):n},i.y=function(t){return arguments.length?(r=t,i):r},i}t.regressionExp=h,t.regressionLinear=d,t.regressionLoess=m,t.regressionLog=w,t.regressionPoly=k,t.regressionPow=E,t.regressionQuad=S,Object.defineProperty(t,"__esModule",{value:!0})}(e)},23537:function(t,e,n){"use strict";n.d(e,{qY:function(){return d}});var r=function(t,e,n){if(n||2===arguments.length)for(var r,i=0,o=e.length;i0)throw"Initial bisect points must have opposite signs";if(0===a)return e;if(0===c)return n;for(var u=0;u=0&&(e=s),Math.abs(l)=v[p-1].fx){var A=!1;if(w.fx>M.fx?(c(S,1+h,x,-h,M),S.fx=t(S),S.fx=1)break;for(g=1;gu+a*o*s||f>=v)p=o;else{if(Math.abs(d)<=-l*s)return o;d*(p-h)>=0&&(p=h),h=o,v=f}return 0}o=o||1,a=a||1e-6,l=l||.1;for(var g=0;g<10;++g){if(c(r.x,1,n.x,o,e),f=r.fx=t(r.x,r.fxprime),d=i(r.fxprime,e),f>u+a*o*s||g&&f>=h)return v(p,o,h);if(Math.abs(d)<=-l*s)return o;if(d>=0)return v(o,p,f);h=f,p=o,o*=2}return o}function s(t,e,n){var r,l,s,f={x:e.slice(),fx:0,fxprime:e.slice()},h={x:e.slice(),fx:0,fxprime:e.slice()},d=e.slice(),p=1;s=(n=n||{}).maxIterations||20*e.length,f.fx=t(f.x,f.fxprime),a(r=f.fxprime.slice(),f.fxprime,-1);for(var v=0;v0&&(i=1/Math.sqrt(i)),t[0]=e[0]*i,t[1]=e[1]*i,t}function h(t,e){return t[0]*e[0]+t[1]*e[1]}function d(t,e,n){var r=e[0],i=e[1];return t[0]=n[0]*r+n[3]*i+n[6],t[1]=n[1]*r+n[4]*i+n[7],t}function p(t,e){var n=t[0],r=t[1],i=e[0],o=e[1],a=Math.sqrt(n*n+r*r)*Math.sqrt(i*i+o*o),c=a&&(n*i+r*o)/a;return Math.acos(Math.min(Math.max(c,-1),1))}function v(t,e){return t[0]===e[0]&&t[1]===e[1]}var g,m,y=o;g=new r.WT(2),r.WT!=Float32Array&&(g[0]=0,g[1]=0),m=g},70080:function(t){"use strict";var e=/("(?:[^\\"]|\\.)*")|[:,]/g;t.exports=function(t,n){var r,i,o;return n=n||{},r=JSON.stringify([1],void 0,void 0===n.indent?2:n.indent).slice(2,-3),i=""===r?1/0:void 0===n.maxLength?80:n.maxLength,o=n.replacer,function t(n,a,c){var l,u,s,f,h,d,p,v,g,m,y,b;if(n&&"function"==typeof n.toJSON&&(n=n.toJSON()),void 0===(y=JSON.stringify(n,o)))return y;if(p=i-a.length-c,y.length<=p&&(g=y.replace(e,(function(t,e){return e||t+" "}))).length<=p)return g;if(null!=o&&(n=JSON.parse(y),o=void 0),"object"==typeof n&&null!==n){if(v=a+r,s=[],u=0,Array.isArray(n))for(m="[",l="]",p=n.length;u0)return[m,r+s.join(",\n"+v),l].join("\n"+a)}return y}(t,"",0)}},62598:function(t){"use strict";var e=t.exports;t.exports.isNumber=function(t){return"number"==typeof t},t.exports.findMin=function(t){if(0===t.length)return 1/0;for(var e=t[0],n=1;n=f.length)){var n=Math.max(e-r,0),i=e,a=Math.min(e+r,f.length-1),c=n-(e-r),u=e+r-a,h=d[-r-1+c]||0,m=d[-r-1+u]||0,y=p/(p-h-m);c>0&&(g+=y*(c-1)*v);var b=Math.max(0,e-r+1);o.inside(0,f.length-1,b)&&(f[b].y+=1*y*v),o.inside(0,f.length-1,i+1)&&(f[i+1].y-=2*y*v),o.inside(0,f.length-1,a+1)&&(f[a+1].y+=1*y*v)}}));var m=g,y=0,b=0;return f.forEach((function(t){y+=t.y,m+=y,t.y=m,b+=m})),b>0&&f.forEach((function(t){t.y/=b})),f},t.exports.getExpectedValueFromPdf=function(t){if(t&&0!==t.length){var e=0;return t.forEach((function(t){e+=t.x*t.y})),e}},t.exports.getXWithLeftTailArea=function(t,e){if(t&&0!==t.length){for(var n=0,r=0,i=0;i=e));i++);return t[r].x}},t.exports.getPerplexity=function(t){if(t&&0!==t.length){var e=0;return t.forEach((function(t){var n=Math.log(t.y);isFinite(n)&&(e+=t.y*n)})),e=-e/r,Math.pow(2,e)}}},45816:function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SensorTabIndex=e.SensorClassName=e.SizeSensorId=void 0;e.SizeSensorId="size-sensor-id";e.SensorClassName="size-sensor-object";e.SensorTabIndex="-1"},17636:function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:60,n=null;return function(){for(var r=this,i=arguments.length,o=new Array(i),a=0;a0&&i[i.length-1])||6!==c[0]&&2!==c[0])){a=0;continue}if(3===c[0]&&(!i||c[1]>i[0]&&c[1]=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function s(t,e){var n="function"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var r,i,o=n.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(c){i={error:c}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a}function f(){for(var t=0,e=0,n=arguments.length;e]*>)/g,s=/\$([$&'`]|\d{1,2})/g;t.exports=function(t,e,n,r,f,h){var d=n+t.length,p=r.length,v=s;return void 0!==f&&(f=i(f),v=u),c(h,v,(function(i,c){var u;switch(a(c,0)){case"$":return"$";case"&":return t;case"`":return l(e,0,n);case"'":return l(e,d);case"<":u=f[l(c,1,-1)];break;default:var s=+c;if(0===s)return i;if(s>p){var h=o(s/10);return 0===h?i:h<=p?void 0===r[h-1]?a(c,1):r[h-1]+a(c,1):i}u=r[s-1]}return void 0===u?"":u}))}},47850:function(t,e,n){"use strict";var r=n(70111),i=n(84326),o=n(5112)("match");t.exports=function(t){var e;return r(t)&&(void 0!==(e=t[o])?!!e:"RegExp"==i(t))}},67066:function(t,e,n){"use strict";var r=n(19670);t.exports=function(){var t=r(this),e="";return t.hasIndices&&(e+="d"),t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.dotAll&&(e+="s"),t.unicode&&(e+="u"),t.unicodeSets&&(e+="v"),t.sticky&&(e+="y"),e}},34706:function(t,e,n){"use strict";var r=n(46916),i=n(92597),o=n(47976),a=n(67066),c=RegExp.prototype;t.exports=function(t){var e=t.flags;return void 0!==e||"flags"in c||i(t,"flags")||!o(c,t)?e:r(a,t)}},41340:function(t,e,n){"use strict";var r=n(70648),i=String;t.exports=function(t){if("Symbol"===r(t))throw TypeError("Cannot convert a Symbol value to a string");return i(t)}},84944:function(t,e,n){"use strict";var r=n(82109),i=n(6790),o=n(47908),a=n(26244),c=n(19303),l=n(65417);r({target:"Array",proto:!0},{flat:function(){var t=arguments.length?arguments[0]:void 0,e=o(this),n=a(e),r=l(e,0);return r.length=i(r,e,e,n,0,void 0===t?1:c(t)),r}})},33792:function(t,e,n){"use strict";n(51223)("flat")},25438:function(t,e,n){"use strict";var r=n(82109),i=Math.hypot,o=Math.abs,a=Math.sqrt;r({target:"Math",stat:!0,arity:2,forced:!!i&&i(1/0,NaN)!==1/0},{hypot:function(t,e){for(var n,r,i=0,c=0,l=arguments.length,u=0;c0?(r=n/u)*r:n;return u===1/0?1/0:u*a(i)}})},68757:function(t,e,n){"use strict";var r=n(82109),i=n(46916),o=n(1702),a=n(84488),c=n(60614),l=n(68554),u=n(47850),s=n(41340),f=n(58173),h=n(34706),d=n(10647),p=n(5112),v=n(31913),g=p("replace"),m=TypeError,y=o("".indexOf),b=o("".replace),x=o("".slice),w=Math.max,S=function(t,e,n){return n>t.length?-1:""===e?n:y(t,e,n)};r({target:"String",proto:!0},{replaceAll:function(t,e){var n,r,o,p,k,C,O,E,M,A=a(this),P=0,_=0,D="";if(!l(t)){if((n=u(t))&&(r=s(a(h(t))),!~y(r,"g")))throw m("`.replaceAll` does not allow non-global regexes");if(o=f(t,g))return i(o,t,A,e);if(v&&n)return b(s(A),t,e)}for(p=s(A),k=s(t),(C=c(e))||(e=s(e)),O=k.length,E=w(1,O),P=S(p,k,0);-1!==P;)M=C?s(e(k,P,p)):d(k,p,P,[],void 0,e),D+=x(p,_,P)+M,_=P+O,P=S(p,k,P+E);return _=0;--i){var o=this.tryEntries[i],a=o.completion;if("root"===o.tryLoc)return r("end");if(o.tryLoc<=this.prev){var c=n.call(o,"catchLoc"),l=n.call(o,"finallyLoc");if(c&&l){if(this.prev=0;--r){var i=this.tryEntries[r];if(i.tryLoc<=this.prev&&n.call(i,"finallyLoc")&&this.prev=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),C(n),f}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var i=r.arg;C(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,n){return this.delegate={iterator:E(t),resultName:e,nextLoc:n},"next"===this.method&&(this.arg=void 0),f}},t}function at(t,e,n,r,i,o,a){try{var c=t[o](a),l=c.value}catch(u){return void n(u)}c.done?e(l):Promise.resolve(l).then(r,i)}function ct(t){return function(){var e=this,n=arguments;return new Promise((function(r,i){var o=t.apply(e,n);function a(t){at(o,r,i,a,c,"next",t)}function c(t){at(o,r,i,a,c,"throw",t)}a(void 0)}))}}var lt=n(32663),ut="".concat("accept acceptCharset accessKey action allowFullScreen allowTransparency\n alt async autoComplete autoFocus autoPlay capture cellPadding cellSpacing challenge\n charSet checked classID className colSpan cols content contentEditable contextMenu\n controls coords crossOrigin data dateTime default defer dir disabled download draggable\n encType form formAction formEncType formMethod formNoValidate formTarget frameBorder\n headers height hidden high href hrefLang htmlFor httpEquiv icon id inputMode integrity\n is keyParams keyType kind label lang list loop low manifest marginHeight marginWidth max maxLength media\n mediaGroup method min minLength multiple muted name noValidate nonce open\n optimum pattern placeholder poster preload radioGroup readOnly rel required\n reversed role rowSpan rows sandbox scope scoped scrolling seamless selected\n shape size sizes span spellCheck src srcDoc srcLang srcSet start step style\n summary tabIndex target title type useMap value width wmode wrap"," ").concat("onCopy onCut onPaste onCompositionEnd onCompositionStart onCompositionUpdate onKeyDown\n onKeyPress onKeyUp onFocus onBlur onChange onInput onSubmit onClick onContextMenu onDoubleClick\n onDrag onDragEnd onDragEnter onDragExit onDragLeave onDragOver onDragStart onDrop onMouseDown\n onMouseEnter onMouseLeave onMouseMove onMouseOut onMouseOver onMouseUp onSelect onTouchCancel\n onTouchEnd onTouchMove onTouchStart onScroll onWheel onAbort onCanPlay onCanPlayThrough\n onDurationChange onEmptied onEncrypted onEnded onError onLoadedData onLoadedMetadata\n onLoadStart onPause onPlay onPlaying onProgress onRateChange onSeeked onSeeking onStalled onSuspend onTimeUpdate onVolumeChange onWaiting onLoad onError").split(/[\s\n]+/),st="aria-",ft="data-";function ht(t,e){return 0===t.indexOf(e)}function dt(t){var e,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];e=!1===n?{aria:!0,data:!0,attr:!0}:!0===n?{aria:!0}:(0,lt.Z)({},n);var r={};return Object.keys(t).forEach((function(n){(e.aria&&("role"===n||ht(n,st))||e.data&&ht(n,ft)||e.attr&&ut.includes(n))&&(r[n]=t[n])})),r}function pt(t){var e=t.responseText||t.response;if(!e)return e;try{return JSON.parse(e)}catch(n){return e}}function vt(t){var e=new XMLHttpRequest;t.onProgress&&e.upload&&(e.upload.onprogress=function(e){e.total>0&&(e.percent=e.loaded/e.total*100),t.onProgress(e)});var n=new FormData;t.data&&Object.keys(t.data).forEach((function(e){var r=t.data[e];Array.isArray(r)?r.forEach((function(t){n.append("".concat(e,"[]"),t)})):n.append(e,r)})),t.file instanceof Blob?n.append(t.filename,t.file,t.file.name):n.append(t.filename,t.file),e.onerror=function(e){t.onError(e)},e.onload=function(){return e.status<200||e.status>=300?t.onError(function(t,e){var n="cannot ".concat(t.method," ").concat(t.action," ").concat(e.status,"'"),r=new Error(n);return r.status=e.status,r.method=t.method,r.url=t.action,r}(t,e),pt(e)):t.onSuccess(pt(e),e)},e.open(t.method,t.action,!0),t.withCredentials&&"withCredentials"in e&&(e.withCredentials=!0);var r=t.headers||{};return null!==r["X-Requested-With"]&&e.setRequestHeader("X-Requested-With","XMLHttpRequest"),Object.keys(r).forEach((function(t){null!==r[t]&&e.setRequestHeader(t,r[t])})),e.send(n),{abort:function(){e.abort()}}}var gt=+new Date,mt=0;function yt(){return"rc-upload-".concat(gt,"-").concat(++mt)}var bt=n(27840),xt=function(t,e){if(t&&e){var n=Array.isArray(e)?e:e.split(","),r=t.name||"",i=t.type||"",o=i.replace(/\/.*$/,"");return n.some((function(t){var e=t.trim();if(/^\*(\/\*)?$/.test(t))return!0;if("."===e.charAt(0)){var n=r.toLowerCase(),a=e.toLowerCase(),c=[a];return".jpg"!==a&&".jpeg"!==a||(c=[".jpg",".jpeg"]),c.some((function(t){return n.endsWith(t)}))}return/\/\*$/.test(e)?o===e.replace(/\/.*$/,""):i===e||!!/^\w+$/.test(e)&&((0,bt.ZP)(!1,"Upload takes an invalidate 'accept' type '".concat(e,"'.Skip for check.")),!0)}))}return!0};var wt=function(t,e,n){var r=function t(r,i){r.path=i||"",r.isFile?r.file((function(t){n(t)&&(r.fullPath&&!t.webkitRelativePath&&(Object.defineProperties(t,{webkitRelativePath:{writable:!0}}),t.webkitRelativePath=r.fullPath.replace(/^\//,""),Object.defineProperties(t,{webkitRelativePath:{writable:!1}})),e([t]))})):r.isDirectory&&function(t,e){var n=t.createReader(),r=[];!function t(){n.readEntries((function(n){var i=Array.prototype.slice.apply(n);r=r.concat(i),i.length?t():e(r)}))}()}(r,(function(e){e.forEach((function(e){t(e,"".concat(i).concat(r.name,"/"))}))}))};t.forEach((function(t){r(t.webkitGetAsEntry())}))},St=["component","prefixCls","className","disabled","id","style","multiple","accept","capture","children","directory","openFileDialogOnClick","onMouseEnter","onMouseLeave"],kt=function(t){(0,et.Z)(n,t);var e=(0,nt.Z)(n);function n(){var t;(0,Q.Z)(this,n);for(var r=arguments.length,i=new Array(r),o=0;o=18&&(ie=ve.createRoot)}catch(F2t){}function be(t){var e=ve.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;e&&"object"===(0,it.Z)(e)&&(e.usingClientEntryPoint=t)}var xe="__rc_react_root__";function we(t,e){ie?function(t,e){be(!0);var n=e[xe]||ie(e);be(!1),n.render(t),e[xe]=n}(t,e):function(t,e){me(t,e)}(t,e)}function Se(t){return ke.apply(this,arguments)}function ke(){return ke=ct(ot().mark((function t(e){return ot().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",Promise.resolve().then((function(){var t;null===(t=e[xe])||void 0===t||t.unmount(),delete e[xe]})));case 1:case"end":return t.stop()}}),t)}))),ke.apply(this,arguments)}function Ce(t){ye(t)}function Oe(t){return Ee.apply(this,arguments)}function Ee(){return(Ee=ct(ot().mark((function t(e){return ot().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(void 0===ie){t.next=2;break}return t.abrupt("return",Se(e));case 2:Ce(e);case 3:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function Me(t){return t&&"#fff"!==t&&"#ffffff"!==t&&"rgb(255, 255, 255)"!==t&&"rgba(255, 255, 255, 1)"!==t&&function(t){var e=(t||"").match(/rgba?\((\d*), (\d*), (\d*)(, [\d.]*)?\)/);return!(e&&e[1]&&e[2]&&e[3]&&e[1]===e[2]&&e[2]===e[3])}(t)&&!/rgba\((?:\d*, ){3}0\)/.test(t)&&"transparent"!==t}var Ae="ant-wave-target";function Pe(t){return Number.isNaN(t)?0:t}var _e=function(t){var e=t.className,n=t.target,r=t.component,i=Z.useRef(null),o=Z.useState(null),a=(0,G.Z)(o,2),c=a[0],l=a[1],u=Z.useState([]),s=(0,G.Z)(u,2),f=s[0],h=s[1],d=Z.useState(0),p=(0,G.Z)(d,2),v=p[0],g=p[1],m=Z.useState(0),y=(0,G.Z)(m,2),b=y[0],x=y[1],w=Z.useState(0),S=(0,G.Z)(w,2),k=S[0],C=S[1],O=Z.useState(0),E=(0,G.Z)(O,2),M=E[0],A=E[1],P=Z.useState(!1),_=(0,G.Z)(P,2),D=_[0],T=_[1],F={left:v,top:b,width:k,height:M,borderRadius:f.map((function(t){return"".concat(t,"px")})).join(" ")};function j(){var t=getComputedStyle(n);l(function(t){var e=getComputedStyle(t),n=e.borderTopColor,r=e.borderColor,i=e.backgroundColor;return Me(n)?n:Me(r)?r:Me(i)?i:null}(n));var e="static"===t.position,r=t.borderLeftWidth,i=t.borderTopWidth;g(e?n.offsetLeft:Pe(-parseFloat(r))),x(e?n.offsetTop:Pe(-parseFloat(i))),C(n.offsetWidth),A(n.offsetHeight);var o=t.borderTopLeftRadius,a=t.borderTopRightRadius,c=t.borderBottomLeftRadius,u=t.borderBottomRightRadius;h([o,a,u,c].map((function(t){return Pe(parseFloat(t))})))}if(c&&(F["--wave-color"]=c),Z.useEffect((function(){if(n){var t,e=(0,pe.Z)((function(){j(),T(!0)}));return"undefined"!=typeof ResizeObserver&&(t=new ResizeObserver(j)).observe(n),function(){pe.Z.cancel(e),null==t||t.disconnect()}}}),[]),!D)return null;var I=("Checkbox"===r||"Radio"===r)&&(null==n?void 0:n.classList.contains(Ae));return Z.createElement(ne.ZP,{visible:!0,motionAppear:!0,motionName:"wave-motion",motionDeadline:5e3,onAppearEnd:function(t,e){var n;if(e.deadline||"opacity"===e.propertyName){var r=null===(n=i.current)||void 0===n?void 0:n.parentElement;Oe(r).then((function(){null==r||r.remove()}))}return!1}},(function(t){var n=t.className;return Z.createElement("div",{ref:i,className:K()(e,{"wave-quick":I},n),style:F})}))},De=function(t,e){var n;if("Checkbox"!==e.component||(null===(n=t.querySelector("input"))||void 0===n?void 0:n.checked)){var r=document.createElement("div");r.style.position="absolute",r.style.left="0px",r.style.top="0px",null==t||t.insertBefore(r,null==t?void 0:t.firstChild),we(Z.createElement(_e,Object.assign({},e,{target:t})),r)}},Te=n(27824);var Ze=function(t){var e=t.children,n=t.disabled,r=t.component,i=(0,Z.useContext)(Dt.E_).getPrefixCls,o=(0,Z.useRef)(null),a=i("wave"),c=he(a),l=(0,G.Z)(c,2)[1],u=function(t,e,n){var r=Z.useContext(Dt.E_).wave,i=(0,Te.Z)(),o=(0,G.Z)(i,3),a=o[1],c=o[2],l=(0,de.Z)((function(i){var o=t.current;if(!(null==r?void 0:r.disabled)&&o){var l=o.querySelector(".".concat(Ae))||o;((r||{}).showEffect||De)(l,{className:e,token:a,component:n,event:i,hashId:c})}})),u=Z.useRef();return function(t){pe.Z.cancel(u.current),u.current=(0,pe.Z)((function(){l(t)}))}}(o,K()(a,l),r);if(Z.useEffect((function(){var t=o.current;if(t&&1===t.nodeType&&!n){var e=function(e){!ue(e.target)||!t.getAttribute||t.getAttribute("disabled")||t.disabled||t.className.includes("disabled")||t.className.includes("-leave")||u(e)};return t.addEventListener("click",e,!0),function(){t.removeEventListener("click",e,!0)}}}),[n]),!Z.isValidElement(e))return null!=e?e:null;var s=(0,le.Yr)(e)?(0,le.sQ)(e.ref,o):o;return(0,ae.Tm)(e,{ref:s})},Fe=n(4363),je=n(11786),Ie=Z.createContext(null),Re=function(t,e){var n=Z.useContext(Ie),r=Z.useMemo((function(){var r;if(!n)return"";var i=n.compactDirection,o=n.isFirstItem,a=n.isLastItem,c="vertical"===i?"-vertical-":"-";return K()("".concat(t,"-compact").concat(c,"item"),(r={},(0,V.Z)(r,"".concat(t,"-compact").concat(c,"first-item"),o),(0,V.Z)(r,"".concat(t,"-compact").concat(c,"last-item"),a),(0,V.Z)(r,"".concat(t,"-compact").concat(c,"item-rtl"),"rtl"===e),r))}),[t,e,n]);return{compactSize:null==n?void 0:n.compactSize,compactDirection:null==n?void 0:n.compactDirection,compactItemClassnames:r}},Le=function(t){var e=t.children;return Z.createElement(Ie.Provider,{value:null},e)},Ne=(0,Z.forwardRef)((function(t,e){var n=t.className,r=t.style,i=t.children,o=t.prefixCls,a=K()("".concat(o,"-icon"),n);return Z.createElement("span",{ref:e,className:a,style:r},i)})),Be=Ne,ze=(0,Z.forwardRef)((function(t,e){var n=t.prefixCls,r=t.className,i=t.style,o=t.iconClassName,a=K()("".concat(n,"-loading-icon"),r);return Z.createElement(Be,{prefixCls:n,className:a,style:i,ref:e},Z.createElement(Yt,{className:o}))})),Ue=function(){return{width:0,opacity:0,transform:"scale(0)"}},He=function(t){return{width:t.scrollWidth,opacity:1,transform:"scale(1)"}},We=function(t){var e=t.prefixCls,n=t.loading,r=t.existIcon,i=t.className,o=t.style,a=!!n;return r?Z.createElement(ze,{prefixCls:e,className:i,style:o}):Z.createElement(ne.ZP,{visible:a,motionName:"".concat(e,"-loading-icon-motion"),removeOnLeave:!0,onAppearStart:Ue,onAppearActive:He,onEnterStart:Ue,onEnterActive:He,onLeaveStart:He,onLeaveActive:Ue},(function(t,n){var r=t.className,a=t.style;return Z.createElement(ze,{prefixCls:e,className:i,style:Object.assign(Object.assign({},o),a),ref:n,iconClassName:r})}))},Ve=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(t);i1&&void 0!==arguments[1]?arguments[1]:{focus:!0},n=t.componentCls,r="".concat(n,"-compact");return(0,V.Z)({},r,Object.assign(Object.assign({},function(t,e,n){var r,i=n.focusElCls,o=n.focus,a=n.borderElCls?"> *":"",c=["hover",o?"focus":null,"active"].filter(Boolean).map((function(t){return"&:".concat(t," ").concat(a)})).join(",");return r={},(0,V.Z)(r,"&-item:not(".concat(e,"-last-item)"),{marginInlineEnd:-t.lineWidth}),(0,V.Z)(r,"&-item",Object.assign(Object.assign((0,V.Z)({},c,{zIndex:2}),i?(0,V.Z)({},"&".concat(i),{zIndex:2}):{}),(0,V.Z)({},"&[disabled] ".concat(a),{zIndex:0}))),r}(t,r,e)),function(t,e,n){var r,i=n.borderElCls,o=i?"> ".concat(i):"";return r={},(0,V.Z)(r,"&-item:not(".concat(e,"-first-item):not(").concat(e,"-last-item) ").concat(o),{borderRadius:0}),(0,V.Z)(r,"&-item:not(".concat(e,"-last-item)").concat(e,"-first-item"),(0,V.Z)({},"& ".concat(o,", &").concat(t,"-sm ").concat(o,", &").concat(t,"-lg ").concat(o),{borderStartEndRadius:0,borderEndEndRadius:0})),(0,V.Z)(r,"&-item:not(".concat(e,"-first-item)").concat(e,"-last-item"),(0,V.Z)({},"& ".concat(o,", &").concat(t,"-sm ").concat(o,", &").concat(t,"-lg ").concat(o),{borderStartStartRadius:0,borderEndStartRadius:0})),r}(n,r,e)))}function en(t){var e,n,r,i="".concat(t.componentCls,"-compact-vertical");return(0,V.Z)({},i,Object.assign(Object.assign({},function(t,e){var n;return n={},(0,V.Z)(n,"&-item:not(".concat(e,"-last-item)"),{marginBottom:-t.lineWidth}),(0,V.Z)(n,"&-item",{"&:hover,&:focus,&:active":{zIndex:2},"&[disabled]":{zIndex:0}}),n}(t,i)),(e=t.componentCls,n=i,r={},(0,V.Z)(r,"&-item:not(".concat(n,"-first-item):not(").concat(n,"-last-item)"),{borderRadius:0}),(0,V.Z)(r,"&-item".concat(n,"-first-item:not(").concat(n,"-last-item)"),(0,V.Z)({},"&, &".concat(e,"-sm, &").concat(e,"-lg"),{borderEndEndRadius:0,borderEndStartRadius:0})),(0,V.Z)(r,"&-item".concat(n,"-last-item:not(").concat(n,"-first-item)"),(0,V.Z)({},"&, &".concat(e,"-sm, &").concat(e,"-lg"),{borderStartStartRadius:0,borderStartEndRadius:0})),r)))}var nn=n(85146),rn=function(t,e){return(0,V.Z)({},"> span, > ".concat(t),{"&:not(:last-child)":(0,V.Z)({},"&, & > ".concat(t),{"&:not(:disabled)":{borderInlineEndColor:e}}),"&:not(:first-child)":(0,V.Z)({},"&, & > ".concat(t),{"&:not(:disabled)":{borderInlineStartColor:e}})})},on=function(t){var e,n,r=t.componentCls,i=t.fontSize,o=t.lineWidth,a=t.colorPrimaryHover,c=t.colorErrorHover;return(0,V.Z)({},"".concat(r,"-group"),[(n={position:"relative",display:"inline-flex"},(0,V.Z)(n,"> span, > ".concat(r),{"&:not(:last-child)":(0,V.Z)({},"&, & > ".concat(r),{borderStartEndRadius:0,borderEndEndRadius:0}),"&:not(:first-child)":(0,V.Z)({marginInlineStart:-o},"&, & > ".concat(r),{borderStartStartRadius:0,borderEndStartRadius:0})}),(0,V.Z)(n,r,(e={position:"relative",zIndex:1},(0,V.Z)(e,"&:hover,\n &:focus,\n &:active",{zIndex:2}),(0,V.Z)(e,"&[disabled]",{zIndex:0}),e)),(0,V.Z)(n,"".concat(r,"-icon-only"),{fontSize:i}),n),rn("".concat(r,"-primary"),a),rn("".concat(r,"-danger"),c)])},an=function(t){var e,n=t.componentCls,r=t.iconCls,i=t.buttonFontWeight;return(0,V.Z)({},n,(e={outline:"none",position:"relative",display:"inline-block",fontWeight:i,whiteSpace:"nowrap",textAlign:"center",backgroundImage:"none",backgroundColor:"transparent",border:"".concat(t.lineWidth,"px ").concat(t.lineType," transparent"),cursor:"pointer",transition:"all ".concat(t.motionDurationMid," ").concat(t.motionEaseInOut),userSelect:"none",touchAction:"manipulation",lineHeight:t.lineHeight,color:t.colorText,"&:disabled > *":{pointerEvents:"none"},"> span":{display:"inline-block"}},(0,V.Z)(e,"".concat(n,"-icon"),{lineHeight:0}),(0,V.Z)(e,"> ".concat(r," + span, > span + ").concat(r),{marginInlineStart:t.marginXS}),(0,V.Z)(e,"&:not(".concat(n,"-icon-only) > ").concat(n,"-icon"),(0,V.Z)({},"&".concat(n,"-loading-icon, &:not(:last-child)"),{marginInlineEnd:t.marginXS})),(0,V.Z)(e,"> a",{color:"currentColor"}),(0,V.Z)(e,"&:not(:disabled)",Object.assign({},(0,Qe.Qy)(t))),(0,V.Z)(e,"&-icon-only".concat(n,"-compact-item"),{flex:"none"}),(0,V.Z)(e,"&-compact-item".concat(n,"-primary"),(0,V.Z)({},"&:not([disabled]) + ".concat(n,"-compact-item").concat(n,"-primary:not([disabled])"),{position:"relative","&:before":{position:"absolute",top:-t.lineWidth,insetInlineStart:-t.lineWidth,display:"inline-block",width:t.lineWidth,height:"calc(100% + ".concat(2*t.lineWidth,"px)"),backgroundColor:t.colorPrimaryHover,content:'""'}})),(0,V.Z)(e,"&-compact-vertical-item",(0,V.Z)({},"&".concat(n,"-primary"),(0,V.Z)({},"&:not([disabled]) + ".concat(n,"-compact-vertical-item").concat(n,"-primary:not([disabled])"),{position:"relative","&:before":{position:"absolute",top:-t.lineWidth,insetInlineStart:-t.lineWidth,display:"inline-block",width:"calc(100% + ".concat(2*t.lineWidth,"px)"),height:t.lineWidth,backgroundColor:t.colorPrimaryHover,content:'""'}}))),e))},cn=function(t,e,n){return(0,V.Z)({},"&:not(:disabled):not(".concat(t,"-disabled)"),{"&:hover":e,"&:active":n})},ln=function(t){return{minWidth:t.controlHeight,paddingInlineStart:0,paddingInlineEnd:0,borderRadius:"50%"}},un=function(t){return{borderRadius:t.controlHeight,paddingInlineStart:t.controlHeight/2,paddingInlineEnd:t.controlHeight/2}},sn=function(t,e,n,r,i,o,a){return(0,V.Z)({},"&".concat(t,"-background-ghost"),Object.assign(Object.assign({color:e||void 0,backgroundColor:"transparent",borderColor:n||void 0,boxShadow:"none"},cn(t,Object.assign({backgroundColor:"transparent"},o),Object.assign({backgroundColor:"transparent"},a))),{"&:disabled":{cursor:"not-allowed",color:r||void 0,borderColor:i||void 0}}))},fn=function(t){return(0,V.Z)({},"&:disabled, &".concat(t.componentCls,"-disabled"),Object.assign({},function(t){return{cursor:"not-allowed",borderColor:t.colorBorder,color:t.colorTextDisabled,backgroundColor:t.colorBgContainerDisabled,boxShadow:"none"}}(t)))},hn=function(t){return Object.assign({},fn(t))},dn=function(t){return(0,V.Z)({},"&:disabled, &".concat(t.componentCls,"-disabled"),{cursor:"not-allowed",color:t.colorTextDisabled})},pn=function(t){return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},hn(t)),{backgroundColor:t.colorBgContainer,borderColor:t.colorBorder,boxShadow:"0 ".concat(t.controlOutlineWidth,"px 0 ").concat(t.controlTmpOutline)}),cn(t.componentCls,{color:t.colorPrimaryHover,borderColor:t.colorPrimaryHover},{color:t.colorPrimaryActive,borderColor:t.colorPrimaryActive})),sn(t.componentCls,t.colorBgContainer,t.colorBgContainer,t.colorTextDisabled,t.colorBorder)),(0,V.Z)({},"&".concat(t.componentCls,"-dangerous"),Object.assign(Object.assign(Object.assign({color:t.colorError,borderColor:t.colorError},cn(t.componentCls,{color:t.colorErrorHover,borderColor:t.colorErrorBorderHover},{color:t.colorErrorActive,borderColor:t.colorErrorActive})),sn(t.componentCls,t.colorError,t.colorError,t.colorTextDisabled,t.colorBorder)),fn(t))))},vn=function(t){var e,n=t.componentCls;return e={},(0,V.Z)(e,"".concat(n,"-default"),pn(t)),(0,V.Z)(e,"".concat(n,"-primary"),function(t){return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},hn(t)),{color:t.colorTextLightSolid,backgroundColor:t.colorPrimary,boxShadow:"0 ".concat(t.controlOutlineWidth,"px 0 ").concat(t.controlOutline)}),cn(t.componentCls,{color:t.colorTextLightSolid,backgroundColor:t.colorPrimaryHover},{color:t.colorTextLightSolid,backgroundColor:t.colorPrimaryActive})),sn(t.componentCls,t.colorPrimary,t.colorPrimary,t.colorTextDisabled,t.colorBorder,{color:t.colorPrimaryHover,borderColor:t.colorPrimaryHover},{color:t.colorPrimaryActive,borderColor:t.colorPrimaryActive})),(0,V.Z)({},"&".concat(t.componentCls,"-dangerous"),Object.assign(Object.assign(Object.assign({backgroundColor:t.colorError,boxShadow:"0 ".concat(t.controlOutlineWidth,"px 0 ").concat(t.colorErrorOutline)},cn(t.componentCls,{backgroundColor:t.colorErrorHover},{backgroundColor:t.colorErrorActive})),sn(t.componentCls,t.colorError,t.colorError,t.colorTextDisabled,t.colorBorder,{color:t.colorErrorHover,borderColor:t.colorErrorHover},{color:t.colorErrorActive,borderColor:t.colorErrorActive})),fn(t))))}(t)),(0,V.Z)(e,"".concat(n,"-dashed"),function(t){return Object.assign(Object.assign({},pn(t)),{borderStyle:"dashed"})}(t)),(0,V.Z)(e,"".concat(n,"-link"),function(t){return Object.assign(Object.assign(Object.assign({color:t.colorLink},cn(t.componentCls,{color:t.colorLinkHover},{color:t.colorLinkActive})),dn(t)),(0,V.Z)({},"&".concat(t.componentCls,"-dangerous"),Object.assign(Object.assign({color:t.colorError},cn(t.componentCls,{color:t.colorErrorHover},{color:t.colorErrorActive})),dn(t))))}(t)),(0,V.Z)(e,"".concat(n,"-text"),function(t){return Object.assign(Object.assign(Object.assign({},cn(t.componentCls,{color:t.colorText,backgroundColor:t.colorBgTextHover},{color:t.colorText,backgroundColor:t.colorBgTextActive})),dn(t)),(0,V.Z)({},"&".concat(t.componentCls,"-dangerous"),Object.assign(Object.assign({color:t.colorError},dn(t)),cn(t.componentCls,{color:t.colorErrorHover,backgroundColor:t.colorErrorBg},{color:t.colorErrorHover,backgroundColor:t.colorErrorBg}))))}(t)),(0,V.Z)(e,"".concat(n,"-ghost"),sn(t.componentCls,t.colorBgContainer,t.colorBgContainer,t.colorTextDisabled,t.colorBorder)),e},gn=function(t){var e,n,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",i=t.componentCls,o=t.controlHeight,a=t.fontSize,c=t.lineHeight,l=t.lineWidth,u=t.borderRadius,s=t.buttonPaddingHorizontal,f=t.iconCls,h=Math.max(0,(o-a*c)/2-l),d=s-l,p="".concat(i,"-icon-only");return[(0,V.Z)({},"".concat(i).concat(r),(n={fontSize:a,height:o,padding:"".concat(h,"px ").concat(d,"px"),borderRadius:u},(0,V.Z)(n,"&".concat(p),(e={width:o,paddingInlineStart:0,paddingInlineEnd:0},(0,V.Z)(e,"&".concat(i,"-round"),{width:"auto"}),(0,V.Z)(e,f,{fontSize:t.buttonIconOnlyFontSize}),e)),(0,V.Z)(n,"&".concat(i,"-loading"),{opacity:t.opacityLoading,cursor:"default"}),(0,V.Z)(n,"".concat(i,"-loading-icon"),{transition:"width ".concat(t.motionDurationSlow," ").concat(t.motionEaseInOut,", opacity ").concat(t.motionDurationSlow," ").concat(t.motionEaseInOut)}),n)),(0,V.Z)({},"".concat(i).concat(i,"-circle").concat(r),ln(t)),(0,V.Z)({},"".concat(i).concat(i,"-round").concat(r),un(t))]},mn=function(t){return gn(t)},yn=function(t){var e=(0,nn.TS)(t,{controlHeight:t.controlHeightSM,padding:t.paddingXS,buttonPaddingHorizontal:8,borderRadius:t.borderRadiusSM,buttonIconOnlyFontSize:t.fontSizeLG-2});return gn(e,"".concat(t.componentCls,"-sm"))},bn=function(t){var e=(0,nn.TS)(t,{controlHeight:t.controlHeightLG,fontSize:t.fontSizeLG,borderRadius:t.borderRadiusLG,buttonIconOnlyFontSize:t.fontSizeLG+2});return gn(e,"".concat(t.componentCls,"-lg"))},xn=function(t){var e=t.componentCls;return(0,V.Z)({},e,(0,V.Z)({},"&".concat(e,"-block"),{width:"100%"}))},wn=(0,se.Z)("Button",(function(t){var e=t.controlTmpOutline,n=t.paddingContentHorizontal,r=(0,nn.TS)(t,{colorOutlineDefault:e,buttonPaddingHorizontal:n,buttonIconOnlyFontSize:t.fontSizeLG,buttonFontWeight:400});return[an(r),yn(r),mn(r),bn(r),xn(r),vn(r),on(r),tn(t),en(t)]})),Sn=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(t);i0?t=setTimeout((function(){t=null,$(!0)}),W.delay):$(W.loading),function(){t&&(clearTimeout(t),t=null)}}),[W]),(0,Z.useEffect)((function(){if(rt&&rt.current&&!1!==T){var t=rt.current.textContent;it&&Ye(t)?tt||et(!0):tt&&et(!1)}}),[rt]);var ot=function(e){var n=t.onClick;Y||U?e.preventDefault():null==n||n(e)},at=!1!==T,ct=Re(I,F),lt=ct.compactSize,ut=ct.compactItemClassnames,st={large:"lg",small:"sm",middle:void 0},ft=(0,Fe.Z)((function(t){var e,n;return null!==(n=null!==(e=null!=d?d:lt)&&void 0!==e?e:H)&&void 0!==n?n:t})),ht=ft&&st[ft]||"",dt=Y?"loading":b,pt=(0,ce.Z)(P,["navigate"]),vt=K()(I,B,(n={},(0,V.Z)(n,"".concat(I,"-").concat(h),"default"!==h&&h),(0,V.Z)(n,"".concat(I,"-").concat(u),u),(0,V.Z)(n,"".concat(I,"-").concat(ht),ht),(0,V.Z)(n,"".concat(I,"-icon-only"),!y&&0!==y&&!!dt),(0,V.Z)(n,"".concat(I,"-background-ghost"),w&&!Ke(u)),(0,V.Z)(n,"".concat(I,"-loading"),Y),(0,V.Z)(n,"".concat(I,"-two-chinese-chars"),tt&&at&&!Y),(0,V.Z)(n,"".concat(I,"-block"),k),(0,V.Z)(n,"".concat(I,"-dangerous"),!!s),(0,V.Z)(n,"".concat(I,"-rtl"),"rtl"===F),n),ut,g,m,null==j?void 0:j.className),gt=Object.assign(Object.assign({},null==j?void 0:j.style),A),mt=K()(null==E?void 0:E.icon,null===(r=null==j?void 0:j.classNames)||void 0===r?void 0:r.icon),yt=Object.assign(Object.assign({},(null==p?void 0:p.icon)||{}),(null===(i=null==j?void 0:j.styles)||void 0===i?void 0:i.icon)||{}),bt=b&&!Y?Z.createElement(Be,{prefixCls:I,className:mt,style:yt},b):Z.createElement(We,{existIcon:!!b,prefixCls:I,loading:!!Y}),xt=y||0===y?Je(y,it&&at):null;if(void 0!==pt.href)return N(Z.createElement("a",Object.assign({},pt,{className:K()(vt,(0,V.Z)({},"".concat(I,"-disabled"),U)),style:gt,onClick:ot,ref:rt}),bt,xt));var wt=Z.createElement("button",Object.assign({},P,{type:O,className:vt,style:gt,onClick:ot,disabled:U,ref:rt}),bt,xt);return Ke(u)||(wt=Z.createElement(Ze,{component:"Button",disabled:!!Y},wt)),N(wt)},On=(0,Z.forwardRef)(Cn);On.Group=Xe,On.__ANT_BUTTON=!0;var En=On;function Mn(t){return Object.assign(Object.assign({},t),{lastModified:t.lastModified,lastModifiedDate:t.lastModifiedDate,name:t.name,size:t.size,type:t.type,uid:t.uid,percent:0,originFileObj:t})}function An(t,e){var n=(0,Y.Z)(e),r=n.findIndex((function(e){return e.uid===t.uid}));return-1===r?n.push(t):n[r]=t,n}function Pn(t,e){var n=void 0!==t.uid?"uid":"name";return e.filter((function(e){return e[n]===t[n]}))[0]}var _n=function(t){return 0===t.indexOf("image/")},Dn=function(t){if(t.type&&!t.thumbUrl)return _n(t.type);var e=t.thumbUrl||t.url||"",n=function(){var t=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").split("/"),e=t[t.length-1].split(/#|\?/)[0];return(/\.[^./\\]*$/.exec(e)||[""])[0]}(e);return!(!/^data:image\//.test(e)&&!/(webp|svg|png|gif|jpg|jpeg|jfif|bmp|dpg|ico|heic|heif)$/i.test(n))||!/^data:/.test(e)&&!n},Tn=200;function Zn(t){return new Promise((function(e){if(t.type&&_n(t.type)){var n=document.createElement("canvas");n.width=Tn,n.height=Tn,n.style.cssText="position: fixed; left: 0; top: 0; width: ".concat(Tn,"px; height: ").concat(Tn,"px; z-index: 9999; display: none;"),document.body.appendChild(n);var r=n.getContext("2d"),i=new Image;if(i.onload=function(){var t=i.width,o=i.height,a=Tn,c=Tn,l=0,u=0;t>o?u=-((c=o*(Tn/t))-a)/2:l=-((a=t*(Tn/o))-c)/2,r.drawImage(i,l,u,a,c);var s=n.toDataURL();document.body.removeChild(n),window.URL.revokeObjectURL(i.src),e(s)},i.crossOrigin="anonymous",t.type.startsWith("image/svg+xml")){var o=new FileReader;o.onload=function(){o.result&&(i.src=o.result)},o.readAsDataURL(t)}else if(t.type.startsWith("image/gif")){var a=new FileReader;a.onload=function(){a.result&&e(a.result)},a.readAsDataURL(t)}else i.src=window.URL.createObjectURL(t)}else e("")}))}var Fn={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z"}}]},name:"delete",theme:"outlined"},jn=function(t,e){return Z.createElement(Wt.Z,(0,J.Z)({},t,{ref:e,icon:Fn}))};var In=Z.forwardRef(jn),Rn={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M505.7 661a8 8 0 0012.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9h-74.1V168c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v338.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.8zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z"}}]},name:"download",theme:"outlined"},Ln=function(t,e){return Z.createElement(Wt.Z,(0,J.Z)({},t,{ref:e,icon:Rn}))};var Nn=Z.forwardRef(Ln),Bn={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M942.2 486.2C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 000 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM512 766c-161.3 0-279.4-81.8-362.7-254C232.6 339.8 350.7 258 512 258c161.3 0 279.4 81.8 362.7 254C791.5 684.2 673.4 766 512 766zm-4-430c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm0 288c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z"}}]},name:"eye",theme:"outlined"},zn=function(t,e){return Z.createElement(Wt.Z,(0,J.Z)({},t,{ref:e,icon:Bn}))};var Un=Z.forwardRef(zn),Hn={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm193.5 301.7l-210.6 292a31.8 31.8 0 01-51.7 0L318.5 484.9c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.2 0 19.9 4.9 25.9 13.3l71.2 98.8 157.2-218c6-8.3 15.6-13.3 25.9-13.3H699c6.5 0 10.3 7.4 6.5 12.7z"}}]},name:"check-circle",theme:"filled"},Wn=function(t,e){return Z.createElement(Wt.Z,(0,J.Z)({},t,{ref:e,icon:Hn}))};var Vn=Z.forwardRef(Wn),Gn={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 00-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z"}}]},name:"check",theme:"outlined"},Xn=function(t,e){return Z.createElement(Wt.Z,(0,J.Z)({},t,{ref:e,icon:Gn}))};var qn=Z.forwardRef(Xn),Yn={icon:{tag:"svg",attrs:{"fill-rule":"evenodd",viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64c247.4 0 448 200.6 448 448S759.4 960 512 960 64 759.4 64 512 264.6 64 512 64zm127.98 274.82h-.04l-.08.06L512 466.75 384.14 338.88c-.04-.05-.06-.06-.08-.06a.12.12 0 00-.07 0c-.03 0-.05.01-.09.05l-45.02 45.02a.2.2 0 00-.05.09.12.12 0 000 .07v.02a.27.27 0 00.06.06L466.75 512 338.88 639.86c-.05.04-.06.06-.06.08a.12.12 0 000 .07c0 .03.01.05.05.09l45.02 45.02a.2.2 0 00.09.05.12.12 0 00.07 0c.02 0 .04-.01.08-.05L512 557.25l127.86 127.87c.04.04.06.05.08.05a.12.12 0 00.07 0c.03 0 .05-.01.09-.05l45.02-45.02a.2.2 0 00.05-.09.12.12 0 000-.07v-.02a.27.27 0 00-.05-.06L557.25 512l127.87-127.86c.04-.04.05-.06.05-.08a.12.12 0 000-.07c0-.03-.01-.05-.05-.09l-45.02-45.02a.2.2 0 00-.09-.05.12.12 0 00-.07 0z"}}]},name:"close-circle",theme:"filled"},$n=function(t,e){return Z.createElement(Wt.Z,(0,J.Z)({},t,{ref:e,icon:Yn}))};var Kn=Z.forwardRef($n),Jn={icon:{tag:"svg",attrs:{"fill-rule":"evenodd",viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M799.86 166.31c.02 0 .04.02.08.06l57.69 57.7c.04.03.05.05.06.08a.12.12 0 010 .06c0 .03-.02.05-.06.09L569.93 512l287.7 287.7c.04.04.05.06.06.09a.12.12 0 010 .07c0 .02-.02.04-.06.08l-57.7 57.69c-.03.04-.05.05-.07.06a.12.12 0 01-.07 0c-.03 0-.05-.02-.09-.06L512 569.93l-287.7 287.7c-.04.04-.06.05-.09.06a.12.12 0 01-.07 0c-.02 0-.04-.02-.08-.06l-57.69-57.7c-.04-.03-.05-.05-.06-.07a.12.12 0 010-.07c0-.03.02-.05.06-.09L454.07 512l-287.7-287.7c-.04-.04-.05-.06-.06-.09a.12.12 0 010-.07c0-.02.02-.04.06-.08l57.7-57.69c.03-.04.05-.05.07-.06a.12.12 0 01.07 0c.03 0 .05.02.09.06L512 454.07l287.7-287.7c.04-.04.06-.05.09-.06a.12.12 0 01.07 0z"}}]},name:"close",theme:"outlined"},Qn=function(t,e){return Z.createElement(Wt.Z,(0,J.Z)({},t,{ref:e,icon:Jn}))};var tr=Z.forwardRef(Qn),er={percent:0,prefixCls:"rc-progress",strokeColor:"#2db7f5",strokeLinecap:"round",strokeWidth:1,trailColor:"#D9D9D9",trailWidth:1,gapPosition:"bottom"},nr=function(){var t=(0,Z.useRef)([]),e=(0,Z.useRef)(null);return(0,Z.useEffect)((function(){var n=Date.now(),r=!1;t.current.forEach((function(t){if(t){r=!0;var i=t.style;i.transitionDuration=".3s, .3s, .3s, .06s",e.current&&n-e.current<100&&(i.transitionDuration="0s, 0s")}})),r&&(e.current=Date.now())})),t.current};var rr=n(82277),ir=n(32034),or=0,ar=(0,ir.Z)();var cr=function(t){var e=Z.useState(),n=(0,rr.Z)(e,2),r=n[0],i=n[1];return Z.useEffect((function(){var t;i("rc_progress_".concat((ar?(t=or,or+=1):t="TEST_OR_SSR",t)))}),[]),t||r},lr=["id","prefixCls","steps","strokeWidth","trailWidth","gapDegree","gapPosition","trailColor","strokeLinecap","style","className","strokeColor","percent"];function ur(t){return+t.replace("%","")}function sr(t){var e=null!=t?t:[];return Array.isArray(e)?e:[e]}var fr=100,hr=function(t,e,n,r,i,o,a,c,l,u){var s=arguments.length>10&&void 0!==arguments[10]?arguments[10]:0,f=n/100*360*((360-o)/360),h=0===o?0:{bottom:0,top:180,left:90,right:-90}[a],d=(100-r)/100*e;return"round"===l&&100!==r&&(d+=u/2)>=e&&(d=e-.01),{stroke:"string"==typeof c?c:void 0,strokeDasharray:"".concat(e,"px ").concat(t),strokeDashoffset:d+s,transform:"rotate(".concat(i+f+h,"deg)"),transformOrigin:"0 0",transition:"stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s",fillOpacity:0}};var dr=function(t){var e,n=(0,lt.Z)((0,lt.Z)({},er),t),r=n.id,i=n.prefixCls,o=n.steps,a=n.strokeWidth,c=n.trailWidth,l=n.gapDegree,u=void 0===l?0:l,s=n.gapPosition,f=n.trailColor,h=n.strokeLinecap,d=n.style,p=n.className,v=n.strokeColor,g=n.percent,m=(0,rt.Z)(n,lr),y=cr(r),b="".concat(y,"-gradient"),x=50-a/2,w=2*Math.PI*x,S=u>0?90+u/2:-90,k=w*((360-u)/360),C="object"===(0,it.Z)(o)?o:{count:o,space:2},O=C.count,E=C.space,M=hr(w,k,0,100,S,u,s,f,h,a),A=sr(g),P=sr(v),_=P.find((function(t){return t&&"object"===(0,it.Z)(t)})),D=nr();return Z.createElement("svg",(0,J.Z)({className:K()("".concat(i,"-circle"),p),viewBox:"".concat(-50," ").concat(-50," ").concat(fr," ").concat(fr),style:d,id:r,role:"presentation"},m),_&&Z.createElement("defs",null,Z.createElement("linearGradient",{id:b,x1:"100%",y1:"0%",x2:"0%",y2:"0%"},Object.keys(_).sort((function(t,e){return ur(t)-ur(e)})).map((function(t,e){return Z.createElement("stop",{key:e,offset:t,stopColor:_[t]})})))),!O&&Z.createElement("circle",{className:"".concat(i,"-circle-trail"),r:x,cx:0,cy:0,stroke:f,strokeLinecap:h,strokeWidth:c||a,style:M}),O?function(){var t=Math.round(O*(A[0]/100)),e=100/O,n=0;return new Array(O).fill(null).map((function(r,o){var c=o<=t-1?P[0]:f,l=c&&"object"===(0,it.Z)(c)?"url(#".concat(b,")"):void 0,h=hr(w,k,n,e,S,u,s,c,"butt",a,E);return n+=100*(k-h.strokeDashoffset+E)/k,Z.createElement("circle",{key:o,className:"".concat(i,"-circle-path"),r:x,cx:0,cy:0,stroke:l,strokeWidth:a,opacity:1,style:h,ref:function(t){D[o]=t}})}))}():(e=0,A.map((function(t,n){var r=P[n]||P[P.length-1],o=r&&"object"===(0,it.Z)(r)?"url(#".concat(b,")"):void 0,c=hr(w,k,e,t,S,u,s,r,h,a);return e+=t,Z.createElement("circle",{key:n,className:"".concat(i,"-circle-path"),r:x,cx:0,cy:0,stroke:o,strokeLinecap:h,strokeWidth:a,opacity:0===t?0:1,style:c,ref:function(t){D[n]=t}})})).reverse()))},pr=Z.createContext(null),vr=n(22517),gr=[];var mr,yr=n(37759);function br(t){var e=t.match(/^(.*)px$/),n=Number(null==e?void 0:e[1]);return Number.isNaN(n)?function(t){if("undefined"==typeof document)return 0;if(t||void 0===mr){var e=document.createElement("div");e.style.width="100%",e.style.height="200px";var n=document.createElement("div"),r=n.style;r.position="absolute",r.top="0",r.left="0",r.pointerEvents="none",r.visibility="hidden",r.width="200px",r.height="150px",r.overflow="hidden",n.appendChild(e),document.body.appendChild(n);var i=e.offsetWidth;n.style.overflow="scroll";var o=e.offsetWidth;i===o&&(o=n.clientWidth),document.body.removeChild(n),mr=i-o}return mr}():n}var xr="rc-util-locker-".concat(Date.now()),wr=0;function Sr(t){var e=!!t,n=Z.useState((function(){return wr+=1,"".concat(xr,"_").concat(wr)})),r=(0,rr.Z)(n,1)[0];(0,vr.Z)((function(){if(e){var t=function(t){if(!("undefined"!=typeof document&&t&&t instanceof Element))return{width:0,height:0};var e=getComputedStyle(t,"::-webkit-scrollbar"),n=e.width,r=e.height;return{width:br(n),height:br(r)}}(document.body).width,n=document.body.scrollHeight>(window.innerHeight||document.documentElement.clientHeight)&&window.innerWidth>document.body.offsetWidth;(0,yr.hq)("\nhtml body {\n overflow-y: hidden;\n ".concat(n?"width: calc(100% - ".concat(t,"px);"):"","\n}"),r)}else(0,yr.jL)(r);return function(){(0,yr.jL)(r)}}),[e,r])}var kr=!1;var Cr=function(t){return!1!==t&&((0,ir.Z)()&&t?"string"==typeof t?document.querySelector(t):"function"==typeof t?t():t:null)},Or=Z.forwardRef((function(t,e){var n=t.open,r=t.autoLock,i=t.getContainer,o=(t.debug,t.autoDestroy),a=void 0===o||o,c=t.children,l=Z.useState(n),u=(0,rr.Z)(l,2),s=u[0],f=u[1],h=s||n;Z.useEffect((function(){(a||n)&&f(n)}),[n,a]);var d=Z.useState((function(){return Cr(i)})),p=(0,rr.Z)(d,2),v=p[0],g=p[1];Z.useEffect((function(){var t=Cr(i);g(null!=t?t:null)}));var m=function(t,e){var n=Z.useState((function(){return(0,ir.Z)()?document.createElement("div"):null})),r=(0,rr.Z)(n,1)[0],i=Z.useRef(!1),o=Z.useContext(pr),a=Z.useState(gr),c=(0,rr.Z)(a,2),l=c[0],u=c[1],s=o||(i.current?void 0:function(t){u((function(e){return[t].concat((0,Y.Z)(e))}))});function f(){r.parentElement||document.body.appendChild(r),i.current=!0}function h(){var t;null===(t=r.parentElement)||void 0===t||t.removeChild(r),i.current=!1}return(0,vr.Z)((function(){return t?o?o(f):f():h(),h}),[t]),(0,vr.Z)((function(){l.length&&(l.forEach((function(t){return t()})),u(gr))}),[l]),[r,s]}(h&&!v),y=(0,rr.Z)(m,2),b=y[0],x=y[1],w=null!=v?v:b;Sr(r&&n&&(0,ir.Z)()&&(w===b||w===document.body));var S=null;c&&(0,le.Yr)(c)&&e&&(S=c.ref);var k=(0,le.x1)(S,e);if(!h||!(0,ir.Z)()||void 0===v)return null;var C,O=!1===w||("boolean"==typeof C&&(kr=C),kr),E=c;return e&&(E=Z.cloneElement(c,{ref:k})),Z.createElement(pr.Provider,{value:x},O?E:(0,Pt.createPortal)(E,w))}));var Er=Or,Mr=n(67714),Ar=function(){if("undefined"!=typeof Map)return Map;function t(t,e){var n=-1;return t.some((function(t,r){return t[0]===e&&(n=r,!0)})),n}return function(){function e(){this.__entries__=[]}return Object.defineProperty(e.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),e.prototype.get=function(e){var n=t(this.__entries__,e),r=this.__entries__[n];return r&&r[1]},e.prototype.set=function(e,n){var r=t(this.__entries__,e);~r?this.__entries__[r][1]=n:this.__entries__.push([e,n])},e.prototype.delete=function(e){var n=this.__entries__,r=t(n,e);~r&&n.splice(r,1)},e.prototype.has=function(e){return!!~t(this.__entries__,e)},e.prototype.clear=function(){this.__entries__.splice(0)},e.prototype.forEach=function(t,e){void 0===e&&(e=null);for(var n=0,r=this.__entries__;n0},t.prototype.connect_=function(){Pr&&!this.connected_&&(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),Zr?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},t.prototype.disconnect_=function(){Pr&&this.connected_&&(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},t.prototype.onTransitionEnd_=function(t){var e=t.propertyName,n=void 0===e?"":e,r=Tr.some((function(t){return!!~n.indexOf(t)}));r&&this.refresh()},t.getInstance=function(){return this.instance_||(this.instance_=new t),this.instance_},t.instance_=null,t}(),jr=function(t,e){for(var n=0,r=Object.keys(e);n0},t}(),Xr="undefined"!=typeof WeakMap?new WeakMap:new Ar,qr=function t(e){if(!(this instanceof t))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var n=Fr.getInstance(),r=new Gr(e,n,this);Xr.set(this,r)};["observe","unobserve","disconnect"].forEach((function(t){qr.prototype[t]=function(){var e;return(e=Xr.get(this))[t].apply(e,arguments)}}));var Yr=void 0!==_r.ResizeObserver?_r.ResizeObserver:qr,$r=new Map;var Kr=new Yr((function(t){t.forEach((function(t){var e,n=t.target;null===(e=$r.get(n))||void 0===e||e.forEach((function(t){return t(n)}))}))}));var Jr=function(t){(0,et.Z)(n,t);var e=(0,nt.Z)(n);function n(){return(0,Q.Z)(this,n),e.apply(this,arguments)}return(0,tt.Z)(n,[{key:"render",value:function(){return this.props.children}}]),n}(Z.Component),Qr=Z.createContext(null);function ti(t,e){var n=t.children,r=t.disabled,i=Z.useRef(null),o=Z.useRef(null),a=Z.useContext(Qr),c="function"==typeof n,l=c?n(i):n,u=Z.useRef({width:-1,height:-1,offsetWidth:-1,offsetHeight:-1}),s=!c&&Z.isValidElement(l)&&(0,le.Yr)(l),f=s?l.ref:null,h=Z.useMemo((function(){return(0,le.sQ)(f,i)}),[f,i]),d=function(){return(0,Mr.Z)(i.current)||(0,Mr.Z)(o.current)};Z.useImperativeHandle(e,(function(){return d()}));var p=Z.useRef(t);p.current=t;var v=Z.useCallback((function(t){var e=p.current,n=e.onResize,r=e.data,i=t.getBoundingClientRect(),o=i.width,c=i.height,l=t.offsetWidth,s=t.offsetHeight,f=Math.floor(o),h=Math.floor(c);if(u.current.width!==f||u.current.height!==h||u.current.offsetWidth!==l||u.current.offsetHeight!==s){var d={width:f,height:h,offsetWidth:l,offsetHeight:s};u.current=d;var v=l===Math.round(o)?o:l,g=s===Math.round(c)?c:s,m=(0,lt.Z)((0,lt.Z)({},d),{},{offsetWidth:v,offsetHeight:g});null==a||a(m,t,r),n&&Promise.resolve().then((function(){n(m,t)}))}}),[]);return Z.useEffect((function(){var t,e,n=d();return n&&!r&&(t=n,e=v,$r.has(t)||($r.set(t,new Set),Kr.observe(t)),$r.get(t).add(e)),function(){return function(t,e){$r.has(t)&&($r.get(t).delete(e),$r.get(t).size||(Kr.unobserve(t),$r.delete(t)))}(n,v)}}),[i.current,r]),Z.createElement(Jr,{ref:o},s?Z.cloneElement(l,{ref:h}):l)}var ei=Z.forwardRef(ti);function ni(t,e){var n=t.children;return("function"==typeof n?[n]:(0,je.Z)(n)).map((function(n,r){var i=(null==n?void 0:n.key)||"".concat("rc-observer-key","-").concat(r);return Z.createElement(ei,(0,J.Z)({},t,{key:i,ref:0===r?e:void 0}),n)}))}var ri=Z.forwardRef(ni);ri.Collection=function(t){var e=t.children,n=t.onBatchResize,r=Z.useRef(0),i=Z.useRef([]),o=Z.useContext(Qr),a=Z.useCallback((function(t,e,a){r.current+=1;var c=r.current;i.current.push({size:t,element:e,data:a}),Promise.resolve().then((function(){c===r.current&&(null==n||n(i.current),i.current=[])})),null==o||o(t,e,a)}),[n,o]);return Z.createElement(Qr.Provider,{value:a},e)};var ii=ri,oi=n(66155);var ai=0;function ci(t){var e=Z.useState("ssr-id"),n=(0,rr.Z)(e,2),r=n[0],i=n[1],o=(0,lt.Z)({},F).useId,a=null==o?void 0:o();return Z.useEffect((function(){if(!o){var t=ai;ai+=1,i("rc_unique_".concat(t))}}),[]),t||(a||r)}var li=function(){if("undefined"==typeof navigator||"undefined"==typeof window)return!1;var t=navigator.userAgent||navigator.vendor||window.opera;return/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(t)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(null==t?void 0:t.substr(0,4))},ui=Z.createContext(null);function si(t){return t?Array.isArray(t)?t:[t]:[]}function fi(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return(arguments.length>2?arguments[2]:void 0)?t[0]===e[0]:t[0]===e[0]&&t[1]===e[1]}function hi(t,e,n,r){return e||(n?{motionName:"".concat(t,"-").concat(n)}:r?{motionName:r}:null)}function di(t){return t.ownerDocument.defaultView}function pi(t){for(var e=[],n=null==t?void 0:t.parentElement,r=["hidden","scroll","clip","auto"];n;){var i=di(n).getComputedStyle(n);[i.overflowX,i.overflowY,i.overflow].some((function(t){return r.includes(t)}))&&e.push(n),n=n.parentElement}return e}function vi(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return Number.isNaN(t)?e:t}function gi(t){return vi(parseFloat(t),0)}function mi(t,e){var n=(0,lt.Z)({},t);return(e||[]).forEach((function(t){if(!(t instanceof HTMLBodyElement)){var e=di(t).getComputedStyle(t),r=e.overflow,i=e.overflowClipMargin,o=e.borderTopWidth,a=e.borderBottomWidth,c=e.borderLeftWidth,l=e.borderRightWidth,u=t.getBoundingClientRect(),s=t.offsetHeight,f=t.clientHeight,h=t.offsetWidth,d=t.clientWidth,p=gi(o),v=gi(a),g=gi(c),m=gi(l),y=vi(Math.round(u.width/h*1e3)/1e3),b=vi(Math.round(u.height/s*1e3)/1e3),x=(h-d-g-m)*y,w=(s-f-p-v)*b,S=p*b,k=v*b,C=g*y,O=m*y,E=0,M=0;if("clip"===r){var A=gi(i);E=A*y,M=A*b}var P=u.x+C-E,_=u.y+S-M,D=P+u.width+2*E-C-O-x,T=_+u.height+2*M-S-k-w;n.left=Math.max(n.left,P),n.top=Math.max(n.top,_),n.right=Math.min(n.right,D),n.bottom=Math.min(n.bottom,T)}})),n}function yi(t){var e="".concat(arguments.length>1&&void 0!==arguments[1]?arguments[1]:0),n=e.match(/^(.*)\%$/);return n?t*(parseFloat(n[1])/100):parseFloat(e)}function bi(t,e){var n=e||[],r=(0,rr.Z)(n,2),i=r[0],o=r[1];return[yi(t.width,i),yi(t.height,o)]}function xi(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return[t[0],t[1]]}function wi(t,e){var n,r=e[0],i=e[1];return n="t"===r?t.y:"b"===r?t.y+t.height:t.y+t.height/2,{x:"l"===i?t.x:"r"===i?t.x+t.width:t.x+t.width/2,y:n}}function Si(t,e){var n={t:"b",b:"t",l:"r",r:"l"};return t.map((function(t,r){return r===e?n[t]||"c":t})).join("")}n(67739);function ki(t){var e=t.prefixCls,n=t.align,r=t.arrow,i=t.arrowPos,o=r||{},a=o.className,c=o.content,l=i.x,u=void 0===l?0:l,s=i.y,f=void 0===s?0:s,h=Z.useRef();if(!n||!n.points)return null;var d={position:"absolute"};if(!1!==n.autoArrow){var p=n.points[0],v=n.points[1],g=p[0],m=p[1],y=v[0],b=v[1];g!==y&&["t","b"].includes(g)?"t"===g?d.top=0:d.bottom=0:d.top=f,m!==b&&["l","r"].includes(m)?"l"===m?d.left=0:d.right=0:d.left=u}return Z.createElement("div",{ref:h,className:K()("".concat(e,"-arrow"),a),style:d},c)}function Ci(t){var e=t.prefixCls,n=t.open,r=t.zIndex,i=t.mask,o=t.motion;return i?Z.createElement(ne.ZP,(0,J.Z)({},o,{motionAppear:!0,visible:n,removeOnLeave:!0}),(function(t){var n=t.className;return Z.createElement("div",{style:{zIndex:r},className:K()("".concat(e,"-mask"),n)})})):null}var Oi=Z.memo((function(t){return t.children}),(function(t,e){return e.cache})),Ei=Z.forwardRef((function(t,e){var n=t.popup,r=t.className,i=t.prefixCls,o=t.style,a=t.target,c=t.onVisibleChanged,l=t.open,u=t.keepDom,s=t.onClick,f=t.mask,h=t.arrow,d=t.arrowPos,p=t.align,v=t.motion,g=t.maskMotion,m=t.forceRender,y=t.getPopupContainer,b=t.autoDestroy,x=t.portal,w=t.zIndex,S=t.onMouseEnter,k=t.onMouseLeave,C=t.onPointerEnter,O=t.ready,E=t.offsetX,M=t.offsetY,A=t.offsetR,P=t.offsetB,_=t.onAlign,D=t.onPrepare,T=t.stretch,F=t.targetWidth,j=t.targetHeight,I="function"==typeof n?n():n,R=l||u,L=(null==y?void 0:y.length)>0,N=Z.useState(!y||!L),B=(0,rr.Z)(N,2),z=B[0],U=B[1];if((0,vr.Z)((function(){!z&&L&&a&&U(!0)}),[z,L,a]),!z)return null;var H="auto",W={left:"-1000vw",top:"-1000vh",right:H,bottom:H};if(O||!l){var V=p.points,G=p._experimental,X=null==G?void 0:G.dynamicInset,q=X&&"r"===V[0][1],Y=X&&"b"===V[0][0];q?(W.right=A,W.left=H):(W.left=E,W.right=H),Y?(W.bottom=P,W.top=H):(W.top=M,W.bottom=H)}var $={};return T&&(T.includes("height")&&j?$.height=j:T.includes("minHeight")&&j&&($.minHeight=j),T.includes("width")&&F?$.width=F:T.includes("minWidth")&&F&&($.minWidth=F)),l||($.pointerEvents="none"),Z.createElement(x,{open:m||R,getContainer:y&&function(){return y(a)},autoDestroy:b},Z.createElement(Ci,{prefixCls:i,open:l,zIndex:w,mask:f,motion:g}),Z.createElement(ii,{onResize:_,disabled:!l},(function(t){return Z.createElement(ne.ZP,(0,J.Z)({motionAppear:!0,motionEnter:!0,motionLeave:!0,removeOnLeave:!1,forceRender:m,leavedClassName:"".concat(i,"-hidden")},v,{onAppearPrepare:D,onEnterPrepare:D,visible:l,onVisibleChanged:function(t){var e;null==v||null===(e=v.onVisibleChanged)||void 0===e||e.call(v,t),c(t)}}),(function(n,a){var c=n.className,u=n.style,f=K()(i,c,r);return Z.createElement("div",{ref:(0,le.sQ)(t,e,a),className:f,style:(0,lt.Z)((0,lt.Z)((0,lt.Z)((0,lt.Z)({"--arrow-x":"".concat(d.x||0,"px"),"--arrow-y":"".concat(d.y||0,"px")},W),$),u),{},{boxSizing:"border-box",zIndex:w},o),onMouseEnter:S,onMouseLeave:k,onPointerEnter:C,onClick:s},h&&Z.createElement(ki,{prefixCls:i,arrow:h,arrowPos:d,align:p}),Z.createElement(Oi,{cache:!l},I))}))})))}));var Mi=Ei,Ai=Z.forwardRef((function(t,e){var n=t.children,r=t.getTriggerDOMNode,i=(0,le.Yr)(n),o=Z.useCallback((function(t){(0,le.mH)(e,r?r(t):t)}),[r]),a=(0,le.x1)(o,n.ref);return i?Z.cloneElement(n,{ref:a}):n}));var Pi=Ai,_i=["prefixCls","children","action","showAction","hideAction","popupVisible","defaultPopupVisible","onPopupVisibleChange","afterPopupVisibleChange","mouseEnterDelay","mouseLeaveDelay","focusDelay","blurDelay","mask","maskClosable","getPopupContainer","forceRender","autoDestroy","destroyPopupOnHide","popup","popupClassName","popupStyle","popupPlacement","builtinPlacements","popupAlign","zIndex","stretch","getPopupClassNameFromAlign","alignPoint","onPopupClick","onPopupAlign","arrow","popupMotion","maskMotion","popupTransitionName","popupAnimation","maskTransitionName","maskAnimation","className","getTriggerDOMNode"];var Di=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Er,e=Z.forwardRef((function(e,n){var r=e.prefixCls,i=void 0===r?"rc-trigger-popup":r,o=e.children,a=e.action,c=void 0===a?"hover":a,l=e.showAction,u=e.hideAction,s=e.popupVisible,f=e.defaultPopupVisible,h=e.onPopupVisibleChange,d=e.afterPopupVisibleChange,p=e.mouseEnterDelay,v=e.mouseLeaveDelay,g=void 0===v?.1:v,m=e.focusDelay,y=e.blurDelay,b=e.mask,x=e.maskClosable,w=void 0===x||x,S=e.getPopupContainer,k=e.forceRender,C=e.autoDestroy,O=e.destroyPopupOnHide,E=e.popup,M=e.popupClassName,A=e.popupStyle,P=e.popupPlacement,_=e.builtinPlacements,D=void 0===_?{}:_,T=e.popupAlign,F=e.zIndex,j=e.stretch,I=e.getPopupClassNameFromAlign,R=e.alignPoint,L=e.onPopupClick,N=e.onPopupAlign,B=e.arrow,z=e.popupMotion,U=e.maskMotion,H=e.popupTransitionName,W=e.popupAnimation,V=e.maskTransitionName,G=e.maskAnimation,X=e.className,q=e.getTriggerDOMNode,$=(0,rt.Z)(e,_i),J=C||O||!1,Q=Z.useState(!1),tt=(0,rr.Z)(Q,2),et=tt[0],nt=tt[1];(0,vr.Z)((function(){nt(li())}),[]);var it=Z.useRef({}),ot=Z.useContext(ui),at=Z.useMemo((function(){return{registerSubPopup:function(t,e){it.current[t]=e,null==ot||ot.registerSubPopup(t,e)}}}),[ot]),ct=ci(),ut=Z.useState(null),st=(0,rr.Z)(ut,2),ft=st[0],ht=st[1],dt=(0,de.Z)((function(t){(0,Mr.S)(t)&&ft!==t&&ht(t),null==ot||ot.registerSubPopup(ct,t)})),pt=Z.useState(null),vt=(0,rr.Z)(pt,2),gt=vt[0],mt=vt[1],yt=(0,de.Z)((function(t){(0,Mr.S)(t)&>!==t&&mt(t)})),bt=Z.Children.only(o),xt=(null==bt?void 0:bt.props)||{},wt={},St=(0,de.Z)((function(t){var e,n,r=gt;return(null==r?void 0:r.contains(t))||(null===(e=(0,oi.A)(r))||void 0===e?void 0:e.host)===t||t===r||(null==ft?void 0:ft.contains(t))||(null===(n=(0,oi.A)(ft))||void 0===n?void 0:n.host)===t||t===ft||Object.values(it.current).some((function(e){return(null==e?void 0:e.contains(t))||t===e}))})),kt=hi(i,z,W,H),Ct=hi(i,U,G,V),Ot=Z.useState(f||!1),Et=(0,rr.Z)(Ot,2),Mt=Et[0],At=Et[1],_t=null!=s?s:Mt,Dt=(0,de.Z)((function(t){void 0===s&&At(t)}));(0,vr.Z)((function(){At(s||!1)}),[s]);var Tt=Z.useRef(_t);Tt.current=_t;var Zt=(0,de.Z)((function(t){(0,Pt.flushSync)((function(){_t!==t&&(Dt(t),null==h||h(t))}))})),Ft=Z.useRef(),jt=function(){clearTimeout(Ft.current)},It=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;jt(),0===e?Zt(t):Ft.current=setTimeout((function(){Zt(t)}),1e3*e)};Z.useEffect((function(){return jt}),[]);var Rt=Z.useState(!1),Lt=(0,rr.Z)(Rt,2),Nt=Lt[0],Bt=Lt[1];(0,vr.Z)((function(t){t&&!_t||Bt(!0)}),[_t]);var zt=Z.useState(null),Ut=(0,rr.Z)(zt,2),Ht=Ut[0],Wt=Ut[1],Vt=Z.useState([0,0]),Gt=(0,rr.Z)(Vt,2),Xt=Gt[0],qt=Gt[1],Yt=function(t){qt([t.clientX,t.clientY])},$t=function(t,e,n,r,i,o,a){var c=Z.useState({ready:!1,offsetX:0,offsetY:0,offsetR:0,offsetB:0,arrowX:0,arrowY:0,scaleX:1,scaleY:1,align:i[r]||{}}),l=(0,rr.Z)(c,2),u=l[0],s=l[1],f=Z.useRef(0),h=Z.useMemo((function(){return e?pi(e):[]}),[e]),d=Z.useRef({});t||(d.current={});var p=(0,de.Z)((function(){if(e&&n&&t){var c,l=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:V,r=S.x+t,i=S.y+e,o=r+F,a=i+Z,c=Math.max(r,n.left),l=Math.max(i,n.top),u=Math.min(o,n.right),s=Math.min(a,n.bottom);return Math.max(0,(u-c)*(s-l))},u=function(){at=S.y+xt,ct=at+Z,ut=S.x+bt,st=ut+F},f=e,p=f.style.left,v=f.style.top,g=f.style.right,m=f.style.bottom,y=f.ownerDocument,b=di(f),x=(0,lt.Z)((0,lt.Z)({},i[r]),o);if(f.style.left="0",f.style.top="0",f.style.right="auto",f.style.bottom="auto",Array.isArray(n))c={x:n[0],y:n[1],width:0,height:0};else{var w=n.getBoundingClientRect();c={x:w.x,y:w.y,width:w.width,height:w.height}}var S=f.getBoundingClientRect(),k=b.getComputedStyle(f),C=k.width,O=k.height,E=y.documentElement,M=E.clientWidth,A=E.clientHeight,P=E.scrollWidth,_=E.scrollHeight,D=E.scrollTop,T=E.scrollLeft,Z=S.height,F=S.width,j=c.height,I=c.width,R={left:0,top:0,right:M,bottom:A},L={left:-T,top:-D,right:P-T,bottom:_-D},N=x.htmlRegion,B="visible",z="visibleFirst";"scroll"!==N&&N!==z&&(N=B);var U=N===z,H=mi(L,h),W=mi(R,h),V=N===B?W:H,G=U?W:V;f.style.left="auto",f.style.top="auto",f.style.right="0",f.style.bottom="0";var X=f.getBoundingClientRect();f.style.left=p,f.style.top=v,f.style.right=g,f.style.bottom=m;var q=vi(Math.round(F/parseFloat(C)*1e3)/1e3),Y=vi(Math.round(Z/parseFloat(O)*1e3)/1e3);if(0===q||0===Y||(0,Mr.S)(n)&&!ue(n))return;var $=x.offset,K=x.targetOffset,J=bi(S,$),Q=(0,rr.Z)(J,2),tt=Q[0],et=Q[1],nt=bi(c,K),rt=(0,rr.Z)(nt,2),it=rt[0],ot=rt[1];c.x-=it,c.y-=ot;var at,ct,ut,st,ft=x.points||[],ht=(0,rr.Z)(ft,2),dt=ht[0],pt=xi(ht[1]),vt=xi(dt),gt=wi(c,pt),mt=wi(S,vt),yt=(0,lt.Z)({},x),bt=gt.x-mt.x+tt,xt=gt.y-mt.y+et,wt=l(bt,xt),St=l(bt,xt,W),kt=wi(c,["t","l"]),Ct=wi(S,["t","l"]),Ot=wi(c,["b","r"]),Et=wi(S,["b","r"]),Mt=x.overflow||{},At=Mt.adjustX,Pt=Mt.adjustY,_t=Mt.shiftX,Dt=Mt.shiftY,Tt=function(t){return"boolean"==typeof t?t:t>=0};u();var Zt=Tt(Pt),Ft=vt[0]===pt[0];if(Zt&&"t"===vt[0]&&(ct>G.bottom||d.current.bt)){var jt=xt;Ft?jt-=Z-j:jt=kt.y-Et.y-et;var It=l(bt,jt),Rt=l(bt,jt,W);It>wt||It===wt&&(!U||Rt>=St)?(d.current.bt=!0,xt=jt,et=-et,yt.points=[Si(vt,0),Si(pt,0)]):d.current.bt=!1}if(Zt&&"b"===vt[0]&&(atwt||Nt===wt&&(!U||Bt>=St)?(d.current.tb=!0,xt=Lt,et=-et,yt.points=[Si(vt,0),Si(pt,0)]):d.current.tb=!1}var zt=Tt(At),Ut=vt[1]===pt[1];if(zt&&"l"===vt[1]&&(st>G.right||d.current.rl)){var Ht=bt;Ut?Ht-=F-I:Ht=kt.x-Et.x-tt;var Wt=l(Ht,xt),Vt=l(Ht,xt,W);Wt>wt||Wt===wt&&(!U||Vt>=St)?(d.current.rl=!0,bt=Ht,tt=-tt,yt.points=[Si(vt,1),Si(pt,1)]):d.current.rl=!1}if(zt&&"r"===vt[1]&&(utwt||Xt===wt&&(!U||qt>=St)?(d.current.lr=!0,bt=Gt,tt=-tt,yt.points=[Si(vt,1),Si(pt,1)]):d.current.lr=!1}u();var Yt=!0===_t?0:_t;"number"==typeof Yt&&(utW.right&&(bt-=st-W.right-tt,c.x>W.right-Yt&&(bt+=c.x-W.right+Yt)));var $t=!0===Dt?0:Dt;"number"==typeof $t&&(atW.bottom&&(xt-=ct-W.bottom-et,c.y>W.bottom-$t&&(xt+=c.y-W.bottom+$t)));var Kt=S.x+bt,Jt=Kt+F,Qt=S.y+xt,te=Qt+Z,ee=c.x,ne=ee+I,re=c.y,ie=re+j,oe=(Math.max(Kt,ee)+Math.min(Jt,ne))/2-Kt,ae=(Math.max(Qt,re)+Math.min(te,ie))/2-Qt;null==a||a(e,yt);var ce=X.right-S.x-(bt+S.width),le=X.bottom-S.y-(xt+S.height);s({ready:!0,offsetX:bt/q,offsetY:xt/Y,offsetR:ce/q,offsetB:le/Y,arrowX:oe/q,arrowY:ae/Y,scaleX:q,scaleY:Y,align:yt})}})),v=function(){s((function(t){return(0,lt.Z)((0,lt.Z)({},t),{},{ready:!1})}))};return(0,vr.Z)(v,[r]),(0,vr.Z)((function(){t||v()}),[t]),[u.ready,u.offsetX,u.offsetY,u.offsetR,u.offsetB,u.arrowX,u.arrowY,u.scaleX,u.scaleY,u.align,function(){f.current+=1;var t=f.current;Promise.resolve().then((function(){f.current===t&&p()}))}]}(_t,ft,R?Xt:gt,P,D,T,N),Kt=(0,rr.Z)($t,11),Jt=Kt[0],Qt=Kt[1],te=Kt[2],ee=Kt[3],ne=Kt[4],re=Kt[5],ie=Kt[6],oe=Kt[7],ae=Kt[8],ce=Kt[9],le=Kt[10],se=function(t,e,n,r){return Z.useMemo((function(){var i=si(null!=n?n:e),o=si(null!=r?r:e),a=new Set(i),c=new Set(o);return t&&(a.has("hover")&&(a.delete("hover"),a.add("click")),c.has("hover")&&(c.delete("hover"),c.add("click"))),[a,c]}),[t,e,n,r])}(et,c,l,u),fe=(0,rr.Z)(se,2),he=fe[0],ve=fe[1],ge=he.has("click"),me=ve.has("click")||ve.has("contextMenu"),ye=(0,de.Z)((function(){Nt||le()}));!function(t,e,n,r,i){(0,vr.Z)((function(){if(t&&e&&n){var o=function(){r(),i()},a=n,c=pi(e),l=pi(a),u=di(a),s=new Set([u].concat((0,Y.Z)(c),(0,Y.Z)(l)));return s.forEach((function(t){t.addEventListener("scroll",o,{passive:!0})})),u.addEventListener("resize",o,{passive:!0}),r(),function(){s.forEach((function(t){t.removeEventListener("scroll",o),u.removeEventListener("resize",o)}))}}}),[t,e,n])}(_t,gt,ft,ye,(function(){Tt.current&&R&&me&&It(!1)})),(0,vr.Z)((function(){ye()}),[Xt,P]),(0,vr.Z)((function(){!_t||null!=D&&D[P]||ye()}),[JSON.stringify(T)]);var be=Z.useMemo((function(){var t=function(t,e,n,r){for(var i=n.points,o=Object.keys(t),a=0;a1?a-1:0),l=1;l1?n-1:0),i=1;i1?n-1:0),i=1;i12?n+2:12;return{dropdownArrowOffset:r,dropdownArrowOffsetVertical:t.limitVerticalRadius?e:r}}function Hi(t,e){return t?e:{}}function Wi(t,e){var n,r,i,o,a=t.componentCls,c=t.sizePopupArrow,l=t.borderRadiusXS,u=t.borderRadiusOuter,s=t.boxShadowPopoverArrow,f=e.colorBg,h=e.contentRadius,d=void 0===h?t.borderRadiusLG:h,p=e.limitVerticalRadius,v=e.arrowDistance,g=void 0===v?0:v,m=e.arrowPlacement,y=void 0===m?{left:!0,right:!0,top:!0,bottom:!0}:m,b=Ui({contentRadius:d,limitVerticalRadius:p}),x=b.dropdownArrowOffsetVertical,w=b.dropdownArrowOffset;return(0,V.Z)({},a,Object.assign(Object.assign(Object.assign(Object.assign((0,V.Z)({},"".concat(a,"-arrow"),[Object.assign(Object.assign({position:"absolute",zIndex:1,display:"block"},Bi(c,l,u,f,s)),{"&:before":{background:f}})]),Hi(!!y.top,(n={},(0,V.Z)(n,["&-placement-top ".concat(a,"-arrow"),"&-placement-topLeft ".concat(a,"-arrow"),"&-placement-topRight ".concat(a,"-arrow")].join(","),{bottom:g,transform:"translateY(100%) rotate(180deg)"}),(0,V.Z)(n,"&-placement-top ".concat(a,"-arrow"),{left:{_skip_check_:!0,value:"50%"},transform:"translateX(-50%) translateY(100%) rotate(180deg)"}),(0,V.Z)(n,"&-placement-topLeft ".concat(a,"-arrow"),{left:{_skip_check_:!0,value:w}}),(0,V.Z)(n,"&-placement-topRight ".concat(a,"-arrow"),{right:{_skip_check_:!0,value:w}}),n))),Hi(!!y.bottom,(r={},(0,V.Z)(r,["&-placement-bottom ".concat(a,"-arrow"),"&-placement-bottomLeft ".concat(a,"-arrow"),"&-placement-bottomRight ".concat(a,"-arrow")].join(","),{top:g,transform:"translateY(-100%)"}),(0,V.Z)(r,"&-placement-bottom ".concat(a,"-arrow"),{left:{_skip_check_:!0,value:"50%"},transform:"translateX(-50%) translateY(-100%)"}),(0,V.Z)(r,"&-placement-bottomLeft ".concat(a,"-arrow"),{left:{_skip_check_:!0,value:w}}),(0,V.Z)(r,"&-placement-bottomRight ".concat(a,"-arrow"),{right:{_skip_check_:!0,value:w}}),r))),Hi(!!y.left,(i={},(0,V.Z)(i,["&-placement-left ".concat(a,"-arrow"),"&-placement-leftTop ".concat(a,"-arrow"),"&-placement-leftBottom ".concat(a,"-arrow")].join(","),{right:{_skip_check_:!0,value:g},transform:"translateX(100%) rotate(90deg)"}),(0,V.Z)(i,"&-placement-left ".concat(a,"-arrow"),{top:{_skip_check_:!0,value:"50%"},transform:"translateY(-50%) translateX(100%) rotate(90deg)"}),(0,V.Z)(i,"&-placement-leftTop ".concat(a,"-arrow"),{top:x}),(0,V.Z)(i,"&-placement-leftBottom ".concat(a,"-arrow"),{bottom:x}),i))),Hi(!!y.right,(o={},(0,V.Z)(o,["&-placement-right ".concat(a,"-arrow"),"&-placement-rightTop ".concat(a,"-arrow"),"&-placement-rightBottom ".concat(a,"-arrow")].join(","),{left:{_skip_check_:!0,value:g},transform:"translateX(-100%) rotate(-90deg)"}),(0,V.Z)(o,"&-placement-right ".concat(a,"-arrow"),{top:{_skip_check_:!0,value:"50%"},transform:"translateY(-50%) translateX(-100%) rotate(-90deg)"}),(0,V.Z)(o,"&-placement-rightTop ".concat(a,"-arrow"),{top:x}),(0,V.Z)(o,"&-placement-rightBottom ".concat(a,"-arrow"),{bottom:x}),o))))}var Vi={left:{points:["cr","cl"]},right:{points:["cl","cr"]},top:{points:["bc","tc"]},bottom:{points:["tc","bc"]},topLeft:{points:["bl","tl"]},leftTop:{points:["tr","tl"]},topRight:{points:["br","tr"]},rightTop:{points:["tl","tr"]},bottomRight:{points:["tr","br"]},rightBottom:{points:["bl","br"]},bottomLeft:{points:["tl","bl"]},leftBottom:{points:["br","bl"]}},Gi={topLeft:{points:["bl","tc"]},leftTop:{points:["tr","cl"]},topRight:{points:["br","tc"]},rightTop:{points:["tl","cr"]},bottomRight:{points:["tr","bc"]},rightBottom:{points:["bl","cr"]},bottomLeft:{points:["tl","bc"]},leftBottom:{points:["br","cl"]}},Xi=new Set(["topLeft","topRight","bottomLeft","bottomRight","leftTop","leftBottom","rightTop","rightBottom"]);function qi(t){var e=t.arrowWidth,n=t.autoAdjustOverflow,r=t.arrowPointAtCenter,i=t.offset,o=t.borderRadius,a=t.visibleFirst,c=e/2,l={};return Object.keys(Vi).forEach((function(t){var u=r&&Gi[t]||Vi[t],s=Object.assign(Object.assign({},u),{offset:[0,0]});switch(l[t]=s,Xi.has(t)&&(s.autoArrow=!1),t){case"top":case"topLeft":case"topRight":s.offset[1]=-c-i;break;case"bottom":case"bottomLeft":case"bottomRight":s.offset[1]=c+i;break;case"left":case"leftTop":case"leftBottom":s.offset[0]=-c-i;break;case"right":case"rightTop":case"rightBottom":s.offset[0]=c+i}var f=Ui({contentRadius:o,limitVerticalRadius:!0});if(r)switch(t){case"topLeft":case"bottomLeft":s.offset[0]=-f.dropdownArrowOffset-c;break;case"topRight":case"bottomRight":s.offset[0]=f.dropdownArrowOffset+c;break;case"leftTop":case"rightTop":s.offset[1]=-f.dropdownArrowOffset-c;break;case"leftBottom":case"rightBottom":s.offset[1]=f.dropdownArrowOffset+c}s.overflow=function(t,e,n,r){if(!1===r)return{adjustX:!1,adjustY:!1};var i=r&&"object"==typeof r?r:{},o={};switch(t){case"top":case"bottom":o.shiftX=2*e.dropdownArrowOffset+n;break;case"left":case"right":o.shiftY=2*e.dropdownArrowOffsetVertical+n}var a=Object.assign(Object.assign({},o),i);return a.shiftX||(a.adjustX=!0),a.shiftY||(a.adjustY=!0),a}(t,f,e,n),a&&(s.htmlRegion="visibleFirst")})),l}var Yi=n(23941),$i=n(77098),Ki=n(60114),Ji=(n(96697),n(65346));n(93148);n(99831);var Qi=n(38202),to=(n(89759),n(56748));Ji.u_,Ji.u_.token;var eo=function(){var t=(0,Te.Z)(),e=(0,G.Z)(t,3);return{theme:e[0],token:e[1],hashId:e[2]}},no=($i.Z,function(t,e,n,r){var i,o=arguments.length>4&&void 0!==arguments[4]&&arguments[4]?"&":"";return i={},(0,V.Z)(i,"\n ".concat(o).concat(t,"-enter,\n ").concat(o).concat(t,"-appear\n "),Object.assign(Object.assign({},function(t){return{animationDuration:t,animationFillMode:"both"}}(r)),{animationPlayState:"paused"})),(0,V.Z)(i,"".concat(o).concat(t,"-leave"),Object.assign(Object.assign({},function(t){return{animationDuration:t,animationFillMode:"both"}}(r)),{animationPlayState:"paused"})),(0,V.Z)(i,"\n ".concat(o).concat(t,"-enter").concat(t,"-enter-active,\n ").concat(o).concat(t,"-appear").concat(t,"-appear-active\n "),{animationName:e,animationPlayState:"running"}),(0,V.Z)(i,"".concat(o).concat(t,"-leave").concat(t,"-leave-active"),{animationName:n,animationPlayState:"running",pointerEvents:"none"}),i}),ro=new Yi.E4("antZoomIn",{"0%":{transform:"scale(0.2)",opacity:0},"100%":{transform:"scale(1)",opacity:1}}),io=new Yi.E4("antZoomOut",{"0%":{transform:"scale(1)"},"100%":{transform:"scale(0.2)",opacity:0}}),oo=new Yi.E4("antZoomBigIn",{"0%":{transform:"scale(0.8)",opacity:0},"100%":{transform:"scale(1)",opacity:1}}),ao=new Yi.E4("antZoomBigOut",{"0%":{transform:"scale(1)"},"100%":{transform:"scale(0.8)",opacity:0}}),co=new Yi.E4("antZoomUpIn",{"0%":{transform:"scale(0.8)",transformOrigin:"50% 0%",opacity:0},"100%":{transform:"scale(1)",transformOrigin:"50% 0%"}}),lo=new Yi.E4("antZoomUpOut",{"0%":{transform:"scale(1)",transformOrigin:"50% 0%"},"100%":{transform:"scale(0.8)",transformOrigin:"50% 0%",opacity:0}}),uo={zoom:{inKeyframes:ro,outKeyframes:io},"zoom-big":{inKeyframes:oo,outKeyframes:ao},"zoom-big-fast":{inKeyframes:oo,outKeyframes:ao},"zoom-left":{inKeyframes:new Yi.E4("antZoomLeftIn",{"0%":{transform:"scale(0.8)",transformOrigin:"0% 50%",opacity:0},"100%":{transform:"scale(1)",transformOrigin:"0% 50%"}}),outKeyframes:new Yi.E4("antZoomLeftOut",{"0%":{transform:"scale(1)",transformOrigin:"0% 50%"},"100%":{transform:"scale(0.8)",transformOrigin:"0% 50%",opacity:0}})},"zoom-right":{inKeyframes:new Yi.E4("antZoomRightIn",{"0%":{transform:"scale(0.8)",transformOrigin:"100% 50%",opacity:0},"100%":{transform:"scale(1)",transformOrigin:"100% 50%"}}),outKeyframes:new Yi.E4("antZoomRightOut",{"0%":{transform:"scale(1)",transformOrigin:"100% 50%"},"100%":{transform:"scale(0.8)",transformOrigin:"100% 50%",opacity:0}})},"zoom-up":{inKeyframes:co,outKeyframes:lo},"zoom-down":{inKeyframes:new Yi.E4("antZoomDownIn",{"0%":{transform:"scale(0.8)",transformOrigin:"50% 100%",opacity:0},"100%":{transform:"scale(1)",transformOrigin:"50% 100%"}}),outKeyframes:new Yi.E4("antZoomDownOut",{"0%":{transform:"scale(1)",transformOrigin:"50% 100%"},"100%":{transform:"scale(0.8)",transformOrigin:"50% 100%",opacity:0}})}},so=function(t,e){var n,r=t.antCls,i="".concat(r,"-").concat(e),o=uo[e],a=o.inKeyframes,c=o.outKeyframes;return[no(i,a,c,"zoom-big-fast"===e?t.motionDurationFast:t.motionDurationMid),(n={},(0,V.Z)(n,"\n ".concat(i,"-enter,\n ").concat(i,"-appear\n "),{transform:"scale(0)",opacity:0,animationTimingFunction:t.motionEaseOutCirc,"&-prepare":{transform:"none"}}),(0,V.Z)(n,"".concat(i,"-leave"),{animationTimingFunction:t.motionEaseInOutCirc}),n)]},fo=["blue","purple","cyan","green","magenta","pink","red","orange","yellow","volcano","geekblue","lime","gold"];function ho(t,e){return fo.reduce((function(n,r){var i=t["".concat(r,"1")],o=t["".concat(r,"3")],a=t["".concat(r,"6")],c=t["".concat(r,"7")];return Object.assign(Object.assign({},n),e(r,{lightColor:i,lightBorderColor:o,darkColor:a,textColor:c}))}),{})}var po=function(t){var e,n=t.componentCls,r=t.tooltipMaxWidth,i=t.tooltipColor,o=t.tooltipBg,a=t.tooltipBorderRadius,c=t.zIndexPopup,l=t.controlHeight,u=t.boxShadowSecondary,s=t.paddingSM,f=t.paddingXS,h=t.tooltipRadiusOuter;return[(0,V.Z)({},n,Object.assign(Object.assign(Object.assign(Object.assign({},(0,Qe.Wf)(t)),(e={position:"absolute",zIndex:c,display:"block",width:"max-content",maxWidth:r,visibility:"visible",transformOrigin:"var(--arrow-x, 50%) var(--arrow-y, 50%)","&-hidden":{display:"none"},"--antd-arrow-background-color":o},(0,V.Z)(e,"".concat(n,"-inner"),{minWidth:l,minHeight:l,padding:"".concat(s/2,"px ").concat(f,"px"),color:i,textAlign:"start",textDecoration:"none",wordWrap:"break-word",backgroundColor:o,borderRadius:a,boxShadow:u,boxSizing:"border-box"}),(0,V.Z)(e,["&-placement-left","&-placement-leftTop","&-placement-leftBottom","&-placement-right","&-placement-rightTop","&-placement-rightBottom"].join(","),(0,V.Z)({},"".concat(n,"-inner"),{borderRadius:Math.min(a,zi)})),(0,V.Z)(e,"".concat(n,"-content"),{position:"relative"}),e)),ho(t,(function(t,e){var r,i=e.darkColor;return(0,V.Z)({},"&".concat(n,"-").concat(t),(r={},(0,V.Z)(r,"".concat(n,"-inner"),{backgroundColor:i}),(0,V.Z)(r,"".concat(n,"-arrow"),{"--antd-arrow-background-color":i}),r))}))),{"&-rtl":{direction:"rtl"}})),Wi((0,nn.TS)(t,{borderRadiusOuter:h}),{colorBg:"var(--antd-arrow-background-color)",contentRadius:a,limitVerticalRadius:!0}),(0,V.Z)({},"".concat(n,"-pure"),{position:"relative",maxWidth:"none",margin:t.sizePopupArrow})]},vo=function(t,e){var n=(0,se.Z)("Tooltip",(function(t){if(!1===e)return[];var n=t.borderRadius,r=t.colorTextLightSolid,i=t.colorBgDefault,o=t.borderRadiusOuter,a=(0,nn.TS)(t,{tooltipMaxWidth:250,tooltipColor:r,tooltipBorderRadius:n,tooltipBg:i,tooltipRadiusOuter:o>4?4:o});return[po(a),so(t,"zoom-big-fast")]}),(function(t){return{zIndexPopup:t.zIndexPopupBase+70,colorBgDefault:t.colorBgSpotlight}}),{resetStyle:!1});return n(t)},go=fo.map((function(t){return"".concat(t,"-inverse")}));function mo(t,e){var n=function(t){return arguments.length>1&&void 0!==arguments[1]&&!arguments[1]?fo.includes(t):[].concat((0,Y.Z)(go),(0,Y.Z)(fo)).includes(t)}(e),r=K()((0,V.Z)({},"".concat(t,"-").concat(e),e&&n)),i={},o={};return e&&!n&&(i.background=e,o["--antd-arrow-background-color"]=e),{className:r,overlayStyle:i,arrowStyle:o}}var yo=function(t){var e=t.prefixCls,n=t.className,r=t.placement,i=void 0===r?"top":r,o=t.title,a=t.color,c=t.overlayInnerStyle,l=(0,Z.useContext(Dt.E_).getPrefixCls)("tooltip",e),u=vo(l,!0),s=(0,G.Z)(u,2),f=s[0],h=s[1],d=mo(l,a),p=d.arrowStyle,v=Object.assign(Object.assign({},c),d.overlayStyle),g=K()(h,l,"".concat(l,"-pure"),"".concat(l,"-placement-").concat(i),n,d.className);return f(Z.createElement("div",{className:g,style:p},Z.createElement("div",{className:"".concat(l,"-arrow")}),Z.createElement(Ii,Object.assign({},t,{className:h,prefixCls:l,overlayInnerStyle:v}),o)))},bo=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(t);i100?100:t}function Oo(t){var e=t.success,n=t.successPercent;return e&&"progress"in e&&(n=e.progress),e&&"percent"in e&&(n=e.percent),n}var Eo=function(t){var e=t.percent,n=Co(Oo({success:t.success,successPercent:t.successPercent}));return[n,Co(Co(e)-n)]},Mo=function(t,e,n){var r,i,o,a,c=-1,l=-1;if("step"===e){var u=n.steps,s=n.strokeWidth;if("string"==typeof t||void 0===t)c="small"===t?2:14,l=null!=s?s:8;else if("number"==typeof t)c=t,l=t;else{var f=(0,G.Z)(t,2),h=f[0];c=void 0===h?14:h;var d=f[1];l=void 0===d?8:d}c*=u}else if("line"===e){var p=null==n?void 0:n.strokeWidth;if("string"==typeof t||void 0===t)l=p||("small"===t?6:8);else if("number"==typeof t)c=t,l=t;else{var v=(0,G.Z)(t,2),g=v[0];c=void 0===g?-1:g;var m=v[1];l=void 0===m?8:m}}else if("circle"===e||"dashboard"===e)if("string"==typeof t||void 0===t){var y="small"===t?[60,60]:[120,120],b=(0,G.Z)(y,2);c=b[0],l=b[1]}else"number"==typeof t?(c=t,l=t):(c=null!==(i=null!==(r=t[0])&&void 0!==r?r:t[1])&&void 0!==i?i:120,l=null!==(a=null!==(o=t[0])&&void 0!==o?o:t[1])&&void 0!==a?a:120);return[c,l]},Ao=function(t){var e=t.prefixCls,n=t.trailColor,r=void 0===n?null:n,i=t.strokeLinecap,o=void 0===i?"round":i,a=t.gapPosition,c=t.gapDegree,l=t.width,u=void 0===l?120:l,s=t.type,f=t.children,h=t.success,d=t.size,p=Mo(void 0===d?u:d,"circle"),v=(0,G.Z)(p,2),g=v[0],m=v[1],y=t.strokeWidth;void 0===y&&(y=Math.max(function(t){return 3/t*100}(g),6));var b={width:g,height:m,fontSize:.15*g+6},x=Z.useMemo((function(){return c||0===c?c:"dashboard"===s?75:void 0}),[c,s]),w=a||"dashboard"===s&&"bottom"||void 0,S="[object Object]"===Object.prototype.toString.call(t.strokeColor),k=function(t){var e=t.success,n=void 0===e?{}:e,r=t.strokeColor;return[n.strokeColor||Qi.ez.green,r||null]}({success:h,strokeColor:t.strokeColor}),C=K()("".concat(e,"-inner"),(0,V.Z)({},"".concat(e,"-circle-gradient"),S)),O=Z.createElement(dr,{percent:Eo(t),strokeWidth:y,trailWidth:y,strokeColor:k,strokeLinecap:o,trailColor:r,prefixCls:e,gapDegree:x,gapPosition:w});return Z.createElement("div",{className:C,style:b},g<=20?Z.createElement(ko,{title:f},Z.createElement("span",null,O)):Z.createElement(Z.Fragment,null,O,f))},Po=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(t);i=100?"success":g||"normal"}),[g,x]),S=Z.useContext(Dt.E_),k=S.getPrefixCls,C=S.direction,O=S.progress,E=k("progress",r),M=Lo(E),A=(0,G.Z)(M,2),P=A[0],_=A[1],D=Z.useMemo((function(){if(!d)return null;var e,n=Oo(t),r="line"===v;return m||"exception"!==w&&"success"!==w?e=(m||function(t){return"".concat(t,"%")})(Co(u),Co(n)):"exception"===w?e=r?Z.createElement(Kn,null):Z.createElement(tr,null):"success"===w&&(e=r?Z.createElement(Vn,null):Z.createElement(qn,null)),Z.createElement("span",{className:"".concat(E,"-text"),title:"string"==typeof e?e:void 0},e)}),[d,u,x,w,v,E,m]);var T,F=Array.isArray(c)?c[0]:c,j="string"==typeof c||Array.isArray(c)?c:void 0;"line"===v?T=a?Z.createElement(To,Object.assign({},t,{strokeColor:j,prefixCls:E,steps:a}),D):Z.createElement(Do,Object.assign({},t,{strokeColor:F,prefixCls:E,direction:C}),D):"circle"!==v&&"dashboard"!==v||(T=Z.createElement(Ao,Object.assign({},t,{strokeColor:F,prefixCls:E,progressStatus:w}),D));var I=K()(E,"".concat(E,"-status-").concat(w),"".concat(E,"-").concat(("dashboard"===v?"circle":a&&"steps")||v),(n={},(0,V.Z)(n,"".concat(E,"-inline-circle"),"circle"===v&&Mo(f,"circle")[0]<=20),(0,V.Z)(n,"".concat(E,"-show-info"),d),(0,V.Z)(n,"".concat(E,"-").concat(f),"string"==typeof f),(0,V.Z)(n,"".concat(E,"-rtl"),"rtl"===C),n),null==O?void 0:O.className,i,o,_);return P(Z.createElement("div",Object.assign({ref:e,style:Object.assign(Object.assign({},null==O?void 0:O.style),y),className:I,role:"progressbar","aria-valuenow":x},(0,ce.Z)(b,["trailColor","strokeWidth","width","gapDegree","gapPosition","strokeLinecap","success","successPercent"])),T))}));var Uo=zo,Ho=Z.forwardRef((function(t,e){var n,r,i=t.prefixCls,o=t.className,a=t.style,c=t.locale,l=t.listType,u=t.file,s=t.items,f=t.progress,h=t.iconRender,d=t.actionIconRender,p=t.itemRender,v=t.isImgUrl,g=t.showPreviewIcon,m=t.showRemoveIcon,y=t.showDownloadIcon,b=t.previewIcon,x=t.removeIcon,w=t.downloadIcon,S=t.onPreview,k=t.onDownload,C=t.onClose,O=u.status,E=Z.useState(O),M=(0,G.Z)(E,2),A=M[0],P=M[1];Z.useEffect((function(){"removed"!==O&&P(O)}),[O]);var _=Z.useState(!1),D=(0,G.Z)(_,2),T=D[0],F=D[1];Z.useEffect((function(){var t=setTimeout((function(){F(!0)}),300);return function(){clearTimeout(t)}}),[]);var j=h(u),I=Z.createElement("div",{className:"".concat(i,"-icon")},j);if("picture"===l||"picture-card"===l||"picture-circle"===l)if("uploading"===A||!u.thumbUrl&&!u.url){var R=K()("".concat(i,"-list-item-thumbnail"),(0,V.Z)({},"".concat(i,"-list-item-file"),"uploading"!==A));I=Z.createElement("div",{className:R},j)}else{var L=(null==v?void 0:v(u))?Z.createElement("img",{src:u.thumbUrl||u.url,alt:u.name,className:"".concat(i,"-list-item-image"),crossOrigin:u.crossOrigin}):j,N=K()("".concat(i,"-list-item-thumbnail"),(0,V.Z)({},"".concat(i,"-list-item-file"),v&&!v(u)));I=Z.createElement("a",{className:N,onClick:function(t){return S(u,t)},href:u.url||u.thumbUrl,target:"_blank",rel:"noopener noreferrer"},L)}var B=K()("".concat(i,"-list-item"),"".concat(i,"-list-item-").concat(A)),z="string"==typeof u.linkProps?JSON.parse(u.linkProps):u.linkProps,U=m?d(("function"==typeof x?x(u):x)||Z.createElement(In,null),(function(){return C(u)}),i,c.removeFile):null,H=y&&"done"===A?d(("function"==typeof w?w(u):w)||Z.createElement(Nn,null),(function(){return k(u)}),i,c.downloadFile):null,W="picture-card"!==l&&"picture-circle"!==l&&Z.createElement("span",{key:"download-delete",className:K()("".concat(i,"-list-item-actions"),{picture:"picture"===l})},H,U),X=K()("".concat(i,"-list-item-name")),q=u.url?[Z.createElement("a",Object.assign({key:"view",target:"_blank",rel:"noopener noreferrer",className:X,title:u.name},z,{href:u.url,onClick:function(t){return S(u,t)}}),u.name),W]:[Z.createElement("span",{key:"view",className:X,onClick:function(t){return S(u,t)},title:u.name},u.name),W],Y=g?Z.createElement("a",{href:u.url||u.thumbUrl,target:"_blank",rel:"noopener noreferrer",style:u.url||u.thumbUrl?void 0:{pointerEvents:"none",opacity:.5},onClick:function(t){return S(u,t)},title:c.previewFile},"function"==typeof b?b(u):b||Z.createElement(Un,null)):null,$=("picture-card"===l||"picture-circle"===l)&&"uploading"!==A&&Z.createElement("span",{className:"".concat(i,"-list-item-actions")},Y,"done"===A&&H,U),J=(0,Z.useContext(Dt.E_).getPrefixCls)(),Q=Z.createElement("div",{className:B},I,q,$,T&&Z.createElement(ne.ZP,{motionName:"".concat(J,"-fade"),visible:"uploading"===A,motionDeadline:2e3},(function(t){var e=t.className,n="percent"in u?Z.createElement(Uo,Object.assign({},f,{type:"line",percent:u.percent,"aria-label":u["aria-label"],"aria-labelledby":u["aria-labelledby"]})):null;return Z.createElement("div",{className:K()("".concat(i,"-list-item-progress"),e)},n)}))),tt=u.response&&"string"==typeof u.response?u.response:(null===(n=u.error)||void 0===n?void 0:n.statusText)||(null===(r=u.error)||void 0===r?void 0:r.message)||c.uploadError,et="error"===A?Z.createElement(ko,{title:tt,getPopupContainer:function(t){return t.parentNode}},Q):Q;return Z.createElement("div",{className:K()("".concat(i,"-list-item-container"),o),style:a,ref:e},p?p(et,u,s,{download:k.bind(null,u),preview:S.bind(null,u),remove:C.bind(null,u)}):et)})),Wo=Ho,Vo=function(t,e){var n=t.listType,r=void 0===n?"text":n,i=t.previewFile,o=void 0===i?Zn:i,a=t.onPreview,c=t.onDownload,l=t.onRemove,u=t.locale,s=t.iconRender,f=t.isImageUrl,h=void 0===f?Dn:f,d=t.prefixCls,p=t.items,v=void 0===p?[]:p,g=t.showPreviewIcon,m=void 0===g||g,y=t.showRemoveIcon,b=void 0===y||y,x=t.showDownloadIcon,w=void 0!==x&&x,S=t.removeIcon,k=t.previewIcon,C=t.downloadIcon,O=t.progress,E=void 0===O?{size:[-1,2],showInfo:!1}:O,M=t.appendAction,A=t.appendActionVisible,P=void 0===A||A,_=t.itemRender,D=t.disabled,T=re(),F=Z.useState(!1),j=(0,G.Z)(F,2),I=j[0],R=j[1];Z.useEffect((function(){"picture"!==r&&"picture-card"!==r&&"picture-circle"!==r||(v||[]).forEach((function(t){"undefined"!=typeof document&&"undefined"!=typeof window&&window.FileReader&&window.File&&(t.originFileObj instanceof File||t.originFileObj instanceof Blob)&&void 0===t.thumbUrl&&(t.thumbUrl="",o&&o(t.originFileObj).then((function(e){t.thumbUrl=e||"",T()})))}))}),[r,v,o]),Z.useEffect((function(){R(!0)}),[]);var L=function(t,e){if(a)return null==e||e.preventDefault(),a(t)},N=function(t){"function"==typeof c?c(t):t.url&&window.open(t.url)},B=function(t){null==l||l(t)},z=function(t){if(s)return s(t,r);var e="uploading"===t.status,n=h&&h(t)?Z.createElement(ee,null):Z.createElement(Gt,null),i=e?Z.createElement(Yt,null):Z.createElement(Jt,null);return"picture"===r?i=e?Z.createElement(Yt,null):n:"picture-card"!==r&&"picture-circle"!==r||(i=e?u.uploading:n),i},U=function(t,e,n,r){var i={type:"text",size:"small",title:r,onClick:function(n){e(),(0,ae.l$)(t)&&t.props.onClick&&t.props.onClick(n)},className:"".concat(n,"-list-item-action"),disabled:D};if((0,ae.l$)(t)){var o=(0,ae.Tm)(t,Object.assign(Object.assign({},t.props),{onClick:function(){}}));return Z.createElement(En,Object.assign({},i,{icon:o}))}return Z.createElement(En,Object.assign({},i),Z.createElement("span",null,t))};Z.useImperativeHandle(e,(function(){return{handlePreview:L,handleDownload:N}}));var H=Z.useContext(Dt.E_).getPrefixCls,W=H("upload",d),V=H(),X=K()("".concat(W,"-list"),"".concat(W,"-list-").concat(r)),q=(0,Y.Z)(v.map((function(t){return{key:t.uid,file:t}}))),$="picture-card"===r||"picture-circle"===r?"animate-inline":"animate",J={motionDeadline:2e3,motionName:"".concat(W,"-").concat($),keys:q,motionAppear:I},Q=Z.useMemo((function(){var t=Object.assign({},(0,oe.Z)(V));return delete t.onAppearEnd,delete t.onEnterEnd,delete t.onLeaveEnd,t}),[V]);return"picture-card"!==r&&"picture-circle"!==r&&(J=Object.assign(Object.assign({},Q),J)),Z.createElement("div",{className:X},Z.createElement(ne.V4,Object.assign({},J,{component:!1}),(function(t){var e=t.key,n=t.file,i=t.className,o=t.style;return Z.createElement(Wo,{key:e,locale:u,prefixCls:W,className:i,style:o,file:n,items:v,progress:E,listType:r,isImgUrl:h,showPreviewIcon:m,showRemoveIcon:b,showDownloadIcon:w,removeIcon:S,previewIcon:k,downloadIcon:C,iconRender:z,actionIconRender:U,itemRender:_,onPreview:L,onDownload:N,onClose:B})})),M&&Z.createElement(ne.ZP,Object.assign({},J,{visible:P,forceRender:!0}),(function(t){var e=t.className,n=t.style;return(0,ae.Tm)(M,(function(t){return{className:K()(t.className,e),style:Object.assign(Object.assign(Object.assign({},n),{pointerEvents:e?"none":void 0}),t.style)}}))})))};var Go=Z.forwardRef(Vo),Xo=n(16235),qo=function(t){var e,n=t.componentCls,r=t.iconCls;return(0,V.Z)({},"".concat(n,"-wrapper"),(0,V.Z)({},"".concat(n,"-drag"),(e={position:"relative",width:"100%",height:"100%",textAlign:"center",background:t.colorFillAlter,border:"".concat(t.lineWidth,"px dashed ").concat(t.colorBorder),borderRadius:t.borderRadiusLG,cursor:"pointer",transition:"border-color ".concat(t.motionDurationSlow)},(0,V.Z)(e,n,{padding:"".concat(t.padding,"px 0")}),(0,V.Z)(e,"".concat(n,"-btn"),{display:"table",width:"100%",height:"100%",outline:"none"}),(0,V.Z)(e,"".concat(n,"-drag-container"),{display:"table-cell",verticalAlign:"middle"}),(0,V.Z)(e,"&:not(".concat(n,"-disabled):hover"),{borderColor:t.colorPrimaryHover}),(0,V.Z)(e,"p".concat(n,"-drag-icon"),(0,V.Z)({marginBottom:t.margin},r,{color:t.colorPrimary,fontSize:t.uploadThumbnailSize})),(0,V.Z)(e,"p".concat(n,"-text"),{margin:"0 0 ".concat(t.marginXXS,"px"),color:t.colorTextHeading,fontSize:t.fontSizeLG}),(0,V.Z)(e,"p".concat(n,"-hint"),{color:t.colorTextDescription,fontSize:t.fontSize}),(0,V.Z)(e,"&".concat(n,"-disabled"),(0,V.Z)({cursor:"not-allowed"},"p".concat(n,"-drag-icon ").concat(r,",\n p").concat(n,"-text,\n p").concat(n,"-hint\n "),{color:t.colorTextDisabled})),e)))},Yo=function(t){var e,n,r,i,o,a=t.componentCls,c=t.antCls,l=t.iconCls,u=t.fontSize,s=t.lineHeight,f="".concat(a,"-list-item"),h="".concat(f,"-actions"),d="".concat(f,"-action"),p=Math.round(u*s);return(0,V.Z)({},"".concat(a,"-wrapper"),(0,V.Z)({},"".concat(a,"-list"),Object.assign(Object.assign({},(0,Qe.dF)()),(o={lineHeight:t.lineHeight},(0,V.Z)(o,f,(n={position:"relative",height:t.lineHeight*u,marginTop:t.marginXS,fontSize:u,display:"flex",alignItems:"center",transition:"background-color ".concat(t.motionDurationSlow),"&:hover":{backgroundColor:t.controlItemBgHover}},(0,V.Z)(n,"".concat(f,"-name"),Object.assign(Object.assign({},Qe.vS),{padding:"0 ".concat(t.paddingXS,"px"),lineHeight:s,flex:"auto",transition:"all ".concat(t.motionDurationSlow)})),(0,V.Z)(n,h,(e={},(0,V.Z)(e,d,{opacity:0}),(0,V.Z)(e,"".concat(d).concat(c,"-btn-sm"),{height:p,border:0,lineHeight:1,"> span":{transform:"scale(1)"}}),(0,V.Z)(e,"\n ".concat(d,":focus,\n &.picture ").concat(d,"\n "),{opacity:1}),(0,V.Z)(e,l,{color:t.actionsColor,transition:"all ".concat(t.motionDurationSlow)}),(0,V.Z)(e,"&:hover ".concat(l),{color:t.colorText}),e)),(0,V.Z)(n,"".concat(a,"-icon ").concat(l),{color:t.colorTextDescription,fontSize:u}),(0,V.Z)(n,"".concat(f,"-progress"),{position:"absolute",bottom:-t.uploadProgressOffset,width:"100%",paddingInlineStart:u+t.paddingXS,fontSize:u,lineHeight:0,pointerEvents:"none","> div":{margin:0}}),n)),(0,V.Z)(o,"".concat(f,":hover ").concat(d),{opacity:1,color:t.colorText}),(0,V.Z)(o,"".concat(f,"-error"),(i={color:t.colorError},(0,V.Z)(i,"".concat(f,"-name, ").concat(a,"-icon ").concat(l),{color:t.colorError}),(0,V.Z)(i,h,(r={},(0,V.Z)(r,"".concat(l,", ").concat(l,":hover"),{color:t.colorError}),(0,V.Z)(r,d,{opacity:1}),r)),i)),(0,V.Z)(o,"".concat(a,"-list-item-container"),{transition:"opacity ".concat(t.motionDurationSlow,", height ").concat(t.motionDurationSlow),"&::before":{display:"table",width:0,height:0,content:'""'}}),o))))},$o=new Yi.E4("antFadeIn",{"0%":{opacity:0},"100%":{opacity:1}}),Ko=new Yi.E4("antFadeOut",{"0%":{opacity:1},"100%":{opacity:0}}),Jo=function(t){var e,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=t.antCls,i="".concat(r,"-fade"),o=n?"&":"";return[no(i,$o,Ko,t.motionDurationMid,n),(e={},(0,V.Z)(e,"\n ".concat(o).concat(i,"-enter,\n ").concat(o).concat(i,"-appear\n "),{opacity:0,animationTimingFunction:"linear"}),(0,V.Z)(e,"".concat(o).concat(i,"-leave"),{animationTimingFunction:"linear"}),e)]},Qo=new Yi.E4("uploadAnimateInlineIn",{from:{width:0,height:0,margin:0,padding:0,opacity:0}}),ta=new Yi.E4("uploadAnimateInlineOut",{to:{width:0,height:0,margin:0,padding:0,opacity:0}}),ea=function(t){var e,n=t.componentCls,r="".concat(n,"-animate-inline");return[(0,V.Z)({},"".concat(n,"-wrapper"),(e={},(0,V.Z)(e,"".concat(r,"-appear, ").concat(r,"-enter, ").concat(r,"-leave"),{animationDuration:t.motionDurationSlow,animationTimingFunction:t.motionEaseInOutCirc,animationFillMode:"forwards"}),(0,V.Z)(e,"".concat(r,"-appear, ").concat(r,"-enter"),{animationName:Qo}),(0,V.Z)(e,"".concat(r,"-leave"),{animationName:ta}),e)),(0,V.Z)({},"".concat(n,"-wrapper"),Jo(t)),Qo,ta]},na=function(t){var e,n,r,i,o,a=t.componentCls,c=t.iconCls,l=t.uploadThumbnailSize,u=t.uploadProgressOffset,s="".concat(a,"-list"),f="".concat(s,"-item");return(0,V.Z)({},"".concat(a,"-wrapper"),(o={},(0,V.Z)(o,"\n ".concat(s).concat(s,"-picture,\n ").concat(s).concat(s,"-picture-card,\n ").concat(s).concat(s,"-picture-circle\n "),(i={},(0,V.Z)(i,f,(n={position:"relative",height:l+2*t.lineWidth+2*t.paddingXS,padding:t.paddingXS,border:"".concat(t.lineWidth,"px ").concat(t.lineType," ").concat(t.colorBorder),borderRadius:t.borderRadiusLG,"&:hover":{background:"transparent"}},(0,V.Z)(n,"".concat(f,"-thumbnail"),Object.assign(Object.assign({},Qe.vS),(e={width:l,height:l,lineHeight:"".concat(l+t.paddingSM,"px"),textAlign:"center",flex:"none"},(0,V.Z)(e,c,{fontSize:t.fontSizeHeading2,color:t.colorPrimary}),(0,V.Z)(e,"img",{display:"block",width:"100%",height:"100%",overflow:"hidden"}),e))),(0,V.Z)(n,"".concat(f,"-progress"),{bottom:u,width:"calc(100% - ".concat(2*t.paddingSM,"px)"),marginTop:0,paddingInlineStart:l+t.paddingXS}),n)),(0,V.Z)(i,"".concat(f,"-error"),(0,V.Z)({borderColor:t.colorError},"".concat(f,"-thumbnail ").concat(c),(r={},(0,V.Z)(r,"svg path[fill='".concat(Qi.iN[0],"']"),{fill:t.colorErrorBg}),(0,V.Z)(r,"svg path[fill='".concat(Qi.iN.primary,"']"),{fill:t.colorError}),r))),(0,V.Z)(i,"".concat(f,"-uploading"),(0,V.Z)({borderStyle:"dashed"},"".concat(f,"-name"),{marginBottom:u})),i)),(0,V.Z)(o,"".concat(s).concat(s,"-picture-circle ").concat(f),(0,V.Z)({},"&, &::before, ".concat(f,"-thumbnail"),{borderRadius:"50%"})),o))},ra=function(t){var e,n,r,i,o,a=t.componentCls,c=t.iconCls,l=t.fontSizeLG,u=t.colorTextLightSolid,s="".concat(a,"-list"),f="".concat(s,"-item"),h=t.uploadPicCardSize;return o={},(0,V.Z)(o,"\n ".concat(a,"-wrapper").concat(a,"-picture-card-wrapper,\n ").concat(a,"-wrapper").concat(a,"-picture-circle-wrapper\n "),Object.assign(Object.assign({},(0,Qe.dF)()),(i={display:"inline-block",width:"100%"},(0,V.Z)(i,"".concat(a).concat(a,"-select"),(e={width:h,height:h,marginInlineEnd:t.marginXS,marginBottom:t.marginXS,textAlign:"center",verticalAlign:"top",backgroundColor:t.colorFillAlter,border:"".concat(t.lineWidth,"px dashed ").concat(t.colorBorder),borderRadius:t.borderRadiusLG,cursor:"pointer",transition:"border-color ".concat(t.motionDurationSlow)},(0,V.Z)(e,"> ".concat(a),{display:"flex",alignItems:"center",justifyContent:"center",height:"100%",textAlign:"center"}),(0,V.Z)(e,"&:not(".concat(a,"-disabled):hover"),{borderColor:t.colorPrimary}),e)),(0,V.Z)(i,"".concat(s).concat(s,"-picture-card, ").concat(s).concat(s,"-picture-circle"),(r={},(0,V.Z)(r,"".concat(s,"-item-container"),{display:"inline-block",width:h,height:h,marginBlock:"0 ".concat(t.marginXS,"px"),marginInline:"0 ".concat(t.marginXS,"px"),verticalAlign:"top"}),(0,V.Z)(r,"&::after",{display:"none"}),(0,V.Z)(r,f,{height:"100%",margin:0,"&::before":{position:"absolute",zIndex:1,width:"calc(100% - ".concat(2*t.paddingXS,"px)"),height:"calc(100% - ".concat(2*t.paddingXS,"px)"),backgroundColor:t.colorBgMask,opacity:0,transition:"all ".concat(t.motionDurationSlow),content:'" "'}}),(0,V.Z)(r,"".concat(f,":hover"),(0,V.Z)({},"&::before, ".concat(f,"-actions"),{opacity:1})),(0,V.Z)(r,"".concat(f,"-actions"),(0,V.Z)({position:"absolute",insetInlineStart:0,zIndex:10,width:"100%",whiteSpace:"nowrap",textAlign:"center",opacity:0,transition:"all ".concat(t.motionDurationSlow)},"".concat(c,"-eye, ").concat(c,"-download, ").concat(c,"-delete"),{zIndex:10,width:l,margin:"0 ".concat(t.marginXXS,"px"),fontSize:l,cursor:"pointer",transition:"all ".concat(t.motionDurationSlow),svg:{verticalAlign:"baseline"}})),(0,V.Z)(r,"".concat(f,"-actions, ").concat(f,"-actions:hover"),(0,V.Z)({},"".concat(c,"-eye, ").concat(c,"-download, ").concat(c,"-delete"),{color:new to.C(u).setAlpha(.65).toRgbString(),"&:hover":{color:u}})),(0,V.Z)(r,"".concat(f,"-thumbnail, ").concat(f,"-thumbnail img"),{position:"static",display:"block",width:"100%",height:"100%",objectFit:"contain"}),(0,V.Z)(r,"".concat(f,"-name"),{display:"none",textAlign:"center"}),(0,V.Z)(r,"".concat(f,"-file + ").concat(f,"-name"),{position:"absolute",bottom:t.margin,display:"block",width:"calc(100% - ".concat(2*t.paddingXS,"px)")}),(0,V.Z)(r,"".concat(f,"-uploading"),(n={},(0,V.Z)(n,"&".concat(f),{backgroundColor:t.colorFillAlter}),(0,V.Z)(n,"&::before, ".concat(c,"-eye, ").concat(c,"-download, ").concat(c,"-delete"),{display:"none"}),n)),(0,V.Z)(r,"".concat(f,"-progress"),{bottom:t.marginXL,width:"calc(100% - ".concat(2*t.paddingXS,"px)"),paddingInlineStart:0}),r)),i))),(0,V.Z)(o,"".concat(a,"-wrapper").concat(a,"-picture-circle-wrapper"),(0,V.Z)({},"".concat(a).concat(a,"-select"),{borderRadius:"50%"})),o},ia=function(t){var e=t.componentCls;return(0,V.Z)({},"".concat(e,"-rtl"),{direction:"rtl"})},oa=function(t){var e,n=t.componentCls,r=t.colorTextDisabled;return(0,V.Z)({},"".concat(n,"-wrapper"),Object.assign(Object.assign({},(0,Qe.Wf)(t)),(e={},(0,V.Z)(e,n,{outline:0,"input[type='file']":{cursor:"pointer"}}),(0,V.Z)(e,"".concat(n,"-select"),{display:"inline-block"}),(0,V.Z)(e,"".concat(n,"-disabled"),{color:r,cursor:"not-allowed"}),e)))},aa=(0,se.Z)("Upload",(function(t){var e=t.fontSizeHeading3,n=t.fontSize,r=t.lineHeight,i=t.lineWidth,o=t.controlHeightLG,a=Math.round(n*r),c=(0,nn.TS)(t,{uploadThumbnailSize:2*e,uploadProgressOffset:a/2+i,uploadPicCardSize:2.55*o});return[oa(c),qo(c),na(c),ra(c),Yo(c),ea(c),ia(c),(0,Xo.Z)(c)]}),(function(t){return{actionsColor:t.colorTextDescription}})),ca=function(t,e,n,r){return new(n||(n=Promise))((function(i,o){function a(t){try{l(r.next(t))}catch(F2t){o(F2t)}}function c(t){try{l(r.throw(t))}catch(F2t){o(F2t)}}function l(t){t.done?i(t.value):function(t){return t instanceof n?t:new n((function(e){e(t)}))}(t.value).then(a,c)}l((r=r.apply(t,e||[])).next())}))},la="__LIST_IGNORE_".concat(Date.now(),"__"),ua=function(t,e){var n,r=t.fileList,i=t.defaultFileList,o=t.onRemove,a=t.showUploadList,c=void 0===a||a,l=t.listType,u=void 0===l?"text":l,s=t.onPreview,f=t.onDownload,h=t.onChange,d=t.onDrop,p=t.previewFile,v=t.disabled,g=t.locale,m=t.iconRender,y=t.isImageUrl,b=t.progress,x=t.prefixCls,w=t.className,S=t.type,k=void 0===S?"select":S,C=t.children,O=t.style,E=t.itemRender,M=t.maxCount,A=t.data,P=void 0===A?{}:A,_=t.multiple,D=void 0!==_&&_,T=t.action,F=void 0===T?"":T,j=t.accept,I=void 0===j?"":j,R=t.supportServerRender,L=void 0===R||R,N=Z.useContext(Ft),B=null!=v?v:N,z=(0,At.Z)(i||[],{value:r,postState:function(t){return null!=t?t:[]}}),U=(0,G.Z)(z,2),H=U[0],W=U[1],X=Z.useState("drop"),$=(0,G.Z)(X,2),J=$[0],Q=$[1],tt=Z.useRef(null);Z.useMemo((function(){var t=Date.now();(r||[]).forEach((function(e,n){e.uid||Object.isFrozen(e)||(e.uid="__AUTO__".concat(t,"_").concat(n,"__"))}))}),[r]);var et=function(t,e,n){var r=(0,Y.Z)(e),i=!1;1===M?r=r.slice(-1):M&&(i=r.length>M,r=r.slice(0,M)),(0,Pt.flushSync)((function(){W(r)}));var o={file:t,fileList:r};n&&(o.event=n),i&&!r.some((function(e){return e.uid===t.uid}))||(0,Pt.flushSync)((function(){null==h||h(o)}))},nt=function(t){var e=t.filter((function(t){return!t.file[la]}));if(e.length){var n=e.map((function(t){return Mn(t.file)})),r=(0,Y.Z)(H);n.forEach((function(t){r=An(t,r)})),n.forEach((function(t,n){var i=t;if(e[n].parsedFile)t.status="uploading";else{var o,a=t.originFileObj;try{o=new File([a],a.name,{type:a.type})}catch(F2t){(o=new Blob([a],{type:a.type})).name=a.name,o.lastModifiedDate=new Date,o.lastModified=(new Date).getTime()}o.uid=t.uid,i=o}et(i,r)}))}},rt=function(t,e,n){try{"string"==typeof t&&(t=JSON.parse(t))}catch(F2t){}if(Pn(e,H)){var r=Mn(e);r.status="done",r.percent=100,r.response=t,r.xhr=n;var i=An(r,H);et(r,i)}},it=function(t,e){if(Pn(e,H)){var n=Mn(e);n.status="uploading",n.percent=t.percent;var r=An(n,H);et(n,r,t)}},ot=function(t,e,n){if(Pn(n,H)){var r=Mn(n);r.error=t,r.response=e,r.status="error";var i=An(r,H);et(r,i)}},at=function(t){var e;Promise.resolve("function"==typeof o?o(t):o).then((function(n){var r;if(!1!==n){var i=function(t,e){var n=void 0!==t.uid?"uid":"name",r=e.filter((function(e){return e[n]!==t[n]}));return r.length===e.length?null:r}(t,H);i&&(e=Object.assign(Object.assign({},t),{status:"removed"}),null==H||H.forEach((function(t){var n=void 0!==e.uid?"uid":"name";t[n]!==e[n]||Object.isFrozen(t)||(t.status="removed")})),null===(r=tt.current)||void 0===r||r.abort(e),et(e,i))}}))},ct=function(t){Q(t.type),"drop"===t.type&&(null==d||d(t))};Z.useImperativeHandle(e,(function(){return{onBatchStart:nt,onSuccess:rt,onProgress:it,onError:ot,fileList:H,upload:tt.current}}));var lt=Z.useContext(Dt.E_),ut=lt.getPrefixCls,st=lt.direction,ft=lt.upload,ht=ut("upload",x),dt=Object.assign(Object.assign({onBatchStart:nt,onError:ot,onProgress:it,onSuccess:rt},t),{data:P,multiple:D,action:F,accept:I,supportServerRender:L,prefixCls:ht,disabled:B,beforeUpload:function(e,n){return ca(void 0,void 0,void 0,q().mark((function r(){var i,o,a,c;return q().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(i=t.beforeUpload,o=t.transformFile,a=e,!i){r.next=13;break}return r.next=5,i(e,n);case 5:if(!1!==(c=r.sent)){r.next=8;break}return r.abrupt("return",!1);case 8:if(delete e[la],c!==la){r.next=12;break}return Object.defineProperty(e,la,{value:!0,configurable:!0}),r.abrupt("return",!1);case 12:"object"==typeof c&&c&&(a=c);case 13:if(!o){r.next=17;break}return r.next=16,o(a);case 16:a=r.sent;case 17:return r.abrupt("return",a);case 18:case"end":return r.stop()}}),r)})))},onChange:void 0});delete dt.className,delete dt.style,C&&!B||delete dt.id;var pt=aa(ht),vt=(0,G.Z)(pt,2),gt=vt[0],mt=vt[1],yt=Ut("Upload",zt.Upload),bt=(0,G.Z)(yt,1)[0],xt="boolean"==typeof c?{}:c,wt=xt.showRemoveIcon,St=xt.showPreviewIcon,kt=xt.showDownloadIcon,Ct=xt.removeIcon,Ot=xt.previewIcon,Et=xt.downloadIcon,_t=function(t,e){return c?Z.createElement(Go,{prefixCls:ht,listType:u,items:H,previewFile:p,onPreview:s,onDownload:f,onRemove:at,showRemoveIcon:!B&&wt,showPreviewIcon:St,showDownloadIcon:kt,removeIcon:Ct,previewIcon:Ot,downloadIcon:Et,iconRender:m,locale:Object.assign(Object.assign({},bt),g),isImageUrl:y,progress:b,appendAction:t,appendActionVisible:e,itemRender:E,disabled:B}):t},Tt=K()("".concat(ht,"-wrapper"),w,mt,null==ft?void 0:ft.className,(n={},(0,V.Z)(n,"".concat(ht,"-rtl"),"rtl"===st),(0,V.Z)(n,"".concat(ht,"-picture-card-wrapper"),"picture-card"===u),(0,V.Z)(n,"".concat(ht,"-picture-circle-wrapper"),"picture-circle"===u),n)),Zt=Object.assign(Object.assign({},null==ft?void 0:ft.style),O);if("drag"===k){var jt,It=K()(mt,ht,"".concat(ht,"-drag"),(jt={},(0,V.Z)(jt,"".concat(ht,"-drag-uploading"),H.some((function(t){return"uploading"===t.status}))),(0,V.Z)(jt,"".concat(ht,"-drag-hover"),"dragover"===J),(0,V.Z)(jt,"".concat(ht,"-disabled"),B),(0,V.Z)(jt,"".concat(ht,"-rtl"),"rtl"===st),jt));return gt(Z.createElement("span",{className:Tt},Z.createElement("div",{className:It,style:Zt,onDrop:ct,onDragOver:ct,onDragLeave:ct},Z.createElement(Mt,Object.assign({},dt,{ref:tt,className:"".concat(ht,"-btn")}),Z.createElement("div",{className:"".concat(ht,"-drag-container")},C))),_t()))}var Rt,Lt=K()(ht,"".concat(ht,"-select"),(0,V.Z)({},"".concat(ht,"-disabled"),B)),Nt=(Rt=C?void 0:{display:"none"},Z.createElement("div",{className:Lt,style:Rt},Z.createElement(Mt,Object.assign({},dt,{ref:tt}))));return gt("picture-card"===u||"picture-circle"===u?Z.createElement("span",{className:Tt},_t(Nt,!!C)):Z.createElement("span",{className:Tt},Nt,_t()))};var sa=Z.forwardRef(ua),fa=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(t);i0&&(Ct=Z.createElement(ba.Provider,{value:Ot},e)),c&&(Ct=Z.createElement(Ca,{locale:c,_ANT_MARK__:"internalMark"},Ct)),(vt||mt)&&(Ct=Z.createElement(ga.Z.Provider,{value:kt},Ct)),l&&(Ct=Z.createElement(Ma.q,{size:l},Ct)),Ct=Z.createElement(_a,null,Ct);var Et=Z.useMemo((function(){var t=bt||{},e=t.algorithm,n=t.token,r=t.components,i=ja(t,["algorithm","token","components"]),o=e&&(!Array.isArray(e)||e.length>0)?(0,Yi.jG)(e):Ji.uH,a={};return Object.entries(r||{}).forEach((function(t){var e=(0,G.Z)(t,2),n=e[0],r=e[1],i=Object.assign({},r);"algorithm"in i&&(!0===i.algorithm?i.theme=o:(Array.isArray(i.algorithm)||"function"==typeof i.algorithm)&&(i.theme=(0,Yi.jG)(i.algorithm)),delete i.algorithm),a[n]=i})),Object.assign(Object.assign({},i),{theme:o,token:Object.assign(Object.assign({},Ki.Z),n),components:a})}),[bt]);return y&&(Ct=Z.createElement(Ji.Mj.Provider,{value:Et},Ct)),void 0!==b&&(Ct=Z.createElement(Zt,{disabled:b},Ct)),Z.createElement(Dt.E_.Provider,{value:St},Ct)},za=function(t){var e=Z.useContext(Dt.E_),n=Z.useContext(jt);return Z.createElement(Ba,Object.assign({parentContext:e,legacyLocale:n},t))};za.ConfigContext=Dt.E_,za.SizeContext=Ma.Z,za.config=function(t){var e=t.prefixCls,n=t.iconPrefixCls,r=t.theme;void 0!==e&&(Da=e),void 0!==n&&(Ta=n),r&&(!function(t){return Object.keys(t).some((function(t){return t.endsWith("Color")}))}(r)?Za=r:Ea(Ra(),r))},za.useConfig=Aa,Object.defineProperty(za,"SizeContext",{get:function(){return Ma.Z}});var Ua=za,Ha={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-32 232c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V296zm32 440a48.01 48.01 0 010-96 48.01 48.01 0 010 96z"}}]},name:"exclamation-circle",theme:"filled"},Wa=function(t,e){return Z.createElement(Wt.Z,(0,J.Z)({},t,{ref:e,icon:Ha}))};var Va=Z.forwardRef(Wa),Ga={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm32 664c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V456c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272zm-32-344a48.01 48.01 0 010-96 48.01 48.01 0 010 96z"}}]},name:"info-circle",theme:"filled"},Xa=function(t,e){return Z.createElement(Wt.Z,(0,J.Z)({},t,{ref:e,icon:Ga}))};var qa=Z.forwardRef(Xa),Ya=n(45934),$a=Z.forwardRef((function(t,e){var n=t.prefixCls,r=t.style,i=t.className,o=t.duration,a=void 0===o?4.5:o,c=t.eventKey,l=t.content,u=t.closable,s=t.closeIcon,f=void 0===s?"x":s,h=t.props,d=t.onClick,p=t.onNoticeClose,v=t.times,g=Z.useState(!1),m=(0,rr.Z)(g,2),y=m[0],b=m[1],x=function(){p(c)};Z.useEffect((function(){if(!y&&a>0){var t=setTimeout((function(){x()}),1e3*a);return function(){clearTimeout(t)}}}),[a,y,v]);var w="".concat(n,"-notice");return Z.createElement("div",(0,J.Z)({},h,{ref:e,className:K()(w,i,(0,B.Z)({},"".concat(w,"-closable"),u)),style:r,onMouseEnter:function(){b(!0)},onMouseLeave:function(){b(!1)},onClick:d}),Z.createElement("div",{className:"".concat(w,"-content")},l),u&&Z.createElement("a",{tabIndex:0,className:"".concat(w,"-close"),onKeyDown:function(t){"Enter"!==t.key&&"Enter"!==t.code&&t.keyCode!==Ya.Z.ENTER||x()},onClick:function(t){t.preventDefault(),t.stopPropagation(),x()}},f))})),Ka=$a,Ja=Z.forwardRef((function(t,e){var n=t.prefixCls,r=void 0===n?"rc-notification":n,i=t.container,o=t.motion,a=t.maxCount,c=t.className,l=t.style,u=t.onAllRemoved,s=Z.useState([]),f=(0,rr.Z)(s,2),h=f[0],d=f[1],p=function(t){var e,n=h.find((function(e){return e.key===t}));null==n||null===(e=n.onClose)||void 0===e||e.call(n),d((function(e){return e.filter((function(e){return e.key!==t}))}))};Z.useImperativeHandle(e,(function(){return{open:function(t){d((function(e){var n,r=(0,Y.Z)(e),i=r.findIndex((function(e){return e.key===t.key})),o=(0,lt.Z)({},t);i>=0?(o.times=((null===(n=e[i])||void 0===n?void 0:n.times)||0)+1,r[i]=o):(o.times=0,r.push(o));return a>0&&r.length>a&&(r=r.slice(-a)),r}))},close:function(t){p(t)},destroy:function(){d([])}}}));var v=Z.useState({}),g=(0,rr.Z)(v,2),m=g[0],y=g[1];Z.useEffect((function(){var t={};h.forEach((function(e){var n=e.placement,r=void 0===n?"topRight":n;r&&(t[r]=t[r]||[],t[r].push(e))})),Object.keys(m).forEach((function(e){t[e]=t[e]||[]})),y(t)}),[h]);var b=Z.useRef(!1);if(Z.useEffect((function(){Object.keys(m).length>0?b.current=!0:b.current&&(null==u||u(),b.current=!1)}),[m]),!i)return null;var x=Object.keys(m);return(0,Pt.createPortal)(Z.createElement(Z.Fragment,null,x.map((function(t){var e=m[t].map((function(t){return{config:t,key:t.key}})),n="function"==typeof o?o(t):o;return Z.createElement(ne.V4,(0,J.Z)({key:t,className:K()(r,"".concat(r,"-").concat(t),null==c?void 0:c(t)),style:null==l?void 0:l(t),keys:e,motionAppear:!0},n,{onAllRemoved:function(){!function(t){y((function(e){var n=(0,lt.Z)({},e);return(n[t]||[]).length||delete n[t],n}))}(t)}}),(function(t,e){var n=t.config,i=t.className,o=t.style,a=n.key,c=n.times,l=n.className,u=n.style;return Z.createElement(Ka,(0,J.Z)({},n,{ref:e,prefixCls:r,className:K()(i,l),style:(0,lt.Z)((0,lt.Z)({},o),u),times:c,key:a,eventKey:a,onNoticeClose:p}))}))}))),i)}));var Qa=Ja,tc=["getContainer","motion","prefixCls","maxCount","className","style","onAllRemoved"],ec=function(){return document.body},nc=0;function rc(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.getContainer,n=void 0===e?ec:e,r=t.motion,i=t.prefixCls,o=t.maxCount,a=t.className,c=t.style,l=t.onAllRemoved,u=(0,rt.Z)(t,tc),s=Z.useState(),f=(0,rr.Z)(s,2),h=f[0],d=f[1],p=Z.useRef(),v=Z.createElement(Qa,{container:h,ref:p,prefixCls:i,motion:r,maxCount:o,className:a,style:c,onAllRemoved:l}),g=Z.useState([]),m=(0,rr.Z)(g,2),y=m[0],b=m[1],x=Z.useMemo((function(){return{open:function(t){var e=function(){for(var t={},e=arguments.length,n=new Array(e),r=0;r ").concat(i),{verticalAlign:"text-bottom",marginInlineEnd:p,fontSize:f}),(0,V.Z)(e,"".concat(x,"-content"),{display:"inline-block",padding:y,background:b,borderRadius:g,boxShadow:o,pointerEvents:"all"}),(0,V.Z)(e,"".concat(r,"-success > ").concat(i),{color:c}),(0,V.Z)(e,"".concat(r,"-error > ").concat(i),{color:l}),(0,V.Z)(e,"".concat(r,"-warning > ").concat(i),{color:u}),(0,V.Z)(e,"".concat(r,"-info > ").concat(i,",\n ").concat(r,"-loading > ").concat(i),{color:s}),e);return[(0,V.Z)({},r,Object.assign(Object.assign({},(0,Qe.Wf)(t)),(n={color:a,position:"fixed",top:p,width:"100%",pointerEvents:"none",zIndex:m},(0,V.Z)(n,"".concat(r,"-move-up"),{animationFillMode:"forwards"}),(0,V.Z)(n,"\n ".concat(r,"-move-up-appear,\n ").concat(r,"-move-up-enter\n "),{animationName:w,animationDuration:d,animationPlayState:"paused",animationTimingFunction:h}),(0,V.Z)(n,"\n ".concat(r,"-move-up-appear").concat(r,"-move-up-appear-active,\n ").concat(r,"-move-up-enter").concat(r,"-move-up-enter-active\n "),{animationPlayState:"running"}),(0,V.Z)(n,"".concat(r,"-move-up-leave"),{animationName:S,animationDuration:d,animationPlayState:"paused",animationTimingFunction:h}),(0,V.Z)(n,"".concat(r,"-move-up-leave").concat(r,"-move-up-leave-active"),{animationPlayState:"running"}),(0,V.Z)(n,"&-rtl",{direction:"rtl",span:{direction:"rtl"}}),n))),(0,V.Z)({},r,(0,V.Z)({},x,Object.assign({},k))),(0,V.Z)({},"".concat(r,"-notice-pure-panel"),Object.assign(Object.assign({},k),{padding:0,textAlign:"start"}))]},oc=(0,se.Z)("Message",(function(t){var e=(0,nn.TS)(t,{height:150});return[ic(e)]}),(function(t){return{zIndexPopup:t.zIndexPopupBase+10,contentBg:t.colorBgElevated,contentPadding:"".concat((t.controlHeightLG-t.fontSize*t.lineHeight)/2,"px ").concat(t.paddingSM,"px")}}),{clientOnly:!0}),ac=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(t);i li":{width:"100%",height:S,listStyle:"none",background:g,borderRadius:w,"+ li":{marginBlockStart:k}}}),(0,V.Z)(n,"".concat(u,"> li:last-child:not(:first-child):not(:nth-child(2))"),{width:"61%"}),n)),(0,V.Z)(r,"&-round ".concat(a,"-content"),(0,V.Z)({},"".concat(l,", ").concat(u," > li"),{borderRadius:b})),r)),(0,V.Z)(o,"".concat(a,"-with-avatar ").concat(a,"-content"),(0,V.Z)({},"".concat(l),(0,V.Z)({marginBlockStart:y},"+ ".concat(u),{marginBlockStart:C}))),(0,V.Z)(o,"".concat(a).concat(a,"-element"),Object.assign(Object.assign(Object.assign(Object.assign({display:"inline-block",width:"auto"},function(t){var e=t.borderRadiusSM,n=t.skeletonButtonCls,r=t.controlHeight,i=t.controlHeightLG,o=t.controlHeightSM,a=t.gradientFromColor;return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign((0,V.Z)({},"".concat(n),Object.assign({display:"inline-block",verticalAlign:"top",background:a,borderRadius:e,width:2*r,minWidth:2*r},Dc(r))),_c(t,r,n)),(0,V.Z)({},"".concat(n,"-lg"),Object.assign({},Dc(i)))),_c(t,i,"".concat(n,"-lg"))),(0,V.Z)({},"".concat(n,"-sm"),Object.assign({},Dc(o)))),_c(t,o,"".concat(n,"-sm")))}(t)),function(t){var e,n=t.skeletonAvatarCls,r=t.gradientFromColor,i=t.controlHeight,o=t.controlHeightLG,a=t.controlHeightSM;return e={},(0,V.Z)(e,"".concat(n),Object.assign({display:"inline-block",verticalAlign:"top",background:r},Mc(i))),(0,V.Z)(e,"".concat(n).concat(n,"-circle"),{borderRadius:"50%"}),(0,V.Z)(e,"".concat(n).concat(n,"-lg"),Object.assign({},Mc(o))),(0,V.Z)(e,"".concat(n).concat(n,"-sm"),Object.assign({},Mc(a))),e}(t)),function(t){var e,n=t.controlHeight,r=t.borderRadiusSM,i=t.skeletonInputCls,o=t.controlHeightLG,a=t.controlHeightSM,c=t.gradientFromColor;return e={},(0,V.Z)(e,"".concat(i),Object.assign({display:"inline-block",verticalAlign:"top",background:c,borderRadius:r},Ac(n))),(0,V.Z)(e,"".concat(i,"-lg"),Object.assign({},Ac(o))),(0,V.Z)(e,"".concat(i,"-sm"),Object.assign({},Ac(a))),e}(t)),function(t){var e,n,r=t.skeletonImageCls,i=t.imageSizeBase,o=t.gradientFromColor,a=t.borderRadiusSM;return n={},(0,V.Z)(n,"".concat(r),Object.assign(Object.assign({display:"flex",alignItems:"center",justifyContent:"center",verticalAlign:"top",background:o,borderRadius:a},Pc(2*i)),(e={},(0,V.Z)(e,"".concat(r,"-path"),{fill:"#bfbfbf"}),(0,V.Z)(e,"".concat(r,"-svg"),Object.assign(Object.assign({},Pc(i)),{maxWidth:4*i,maxHeight:4*i})),(0,V.Z)(e,"".concat(r,"-svg").concat(r,"-svg-circle"),{borderRadius:"50%"}),e))),(0,V.Z)(n,"".concat(r).concat(r,"-circle"),{borderRadius:"50%"}),n}(t))),(0,V.Z)(o,"".concat(a).concat(a,"-block"),(i={width:"100%"},(0,V.Z)(i,"".concat(s),{width:"100%"}),(0,V.Z)(i,"".concat(f),{width:"100%"}),i)),(0,V.Z)(o,"".concat(a).concat(a,"-active"),(0,V.Z)({},"\n ".concat(l,",\n ").concat(u," > li,\n ").concat(c,",\n ").concat(s,",\n ").concat(f,",\n ").concat(h,"\n "),Object.assign({},function(t){return{background:t.skeletonLoadingBackground,backgroundSize:"400% 100%",animationName:Oc,animationDuration:t.skeletonLoadingMotionDuration,animationTimingFunction:"ease",animationIterationCount:"infinite"}}(t)))),o},Zc=(0,se.Z)("Skeleton",(function(t){var e=t.componentCls,n=(0,nn.TS)(t,{skeletonAvatarCls:"".concat(e,"-avatar"),skeletonTitleCls:"".concat(e,"-title"),skeletonParagraphCls:"".concat(e,"-paragraph"),skeletonButtonCls:"".concat(e,"-button"),skeletonInputCls:"".concat(e,"-input"),skeletonImageCls:"".concat(e,"-image"),imageSizeBase:1.5*t.controlHeight,borderRadius:100,skeletonLoadingBackground:"linear-gradient(90deg, ".concat(t.gradientFromColor," 25%, ").concat(t.gradientToColor," 37%, ").concat(t.gradientFromColor," 63%)"),skeletonLoadingMotionDuration:"1.4s"});return[Tc(n)]}),(function(t){var e=t.colorFillContent,n=t.colorFill;return{color:e,colorGradientEnd:n,gradientFromColor:e,gradientToColor:n,titleHeight:t.controlHeight/2,blockRadius:t.borderRadiusSM,paragraphMarginTop:t.marginLG+t.marginXXS,paragraphLiHeight:t.controlHeight/2}}),{deprecatedTokens:[["color","gradientFromColor"],["colorGradientEnd","gradientToColor"]]}),Fc=function(t){var e=t.prefixCls,n=t.className,r=t.rootClassName,i=t.active,o=t.shape,a=void 0===o?"circle":o,c=t.size,l=void 0===c?"default":c,u=(0,Z.useContext(Dt.E_).getPrefixCls)("skeleton",e),s=Zc(u),f=(0,G.Z)(s,2),h=f[0],d=f[1],p=(0,ce.Z)(t,["prefixCls","className"]),v=K()(u,"".concat(u,"-element"),(0,V.Z)({},"".concat(u,"-active"),i),n,r,d);return h(Z.createElement("div",{className:v},Z.createElement(Cc,Object.assign({prefixCls:"".concat(u,"-avatar"),shape:a,size:l},p))))},jc=function(t){var e,n=t.prefixCls,r=t.className,i=t.rootClassName,o=t.active,a=t.block,c=void 0!==a&&a,l=t.size,u=void 0===l?"default":l,s=(0,Z.useContext(Dt.E_).getPrefixCls)("skeleton",n),f=Zc(s),h=(0,G.Z)(f,2),d=h[0],p=h[1],v=(0,ce.Z)(t,["prefixCls"]),g=K()(s,"".concat(s,"-element"),(e={},(0,V.Z)(e,"".concat(s,"-active"),o),(0,V.Z)(e,"".concat(s,"-block"),c),e),r,i,p);return d(Z.createElement("div",{className:g},Z.createElement(Cc,Object.assign({prefixCls:"".concat(s,"-button"),size:u},v))))},Ic=function(t){var e=t.prefixCls,n=t.className,r=t.rootClassName,i=t.style,o=t.active,a=(0,Z.useContext(Dt.E_).getPrefixCls)("skeleton",e),c=Zc(a),l=(0,G.Z)(c,2),u=l[0],s=l[1],f=K()(a,"".concat(a,"-element"),(0,V.Z)({},"".concat(a,"-active"),o),n,r,s);return u(Z.createElement("div",{className:f},Z.createElement("div",{className:K()("".concat(a,"-image"),n),style:i},Z.createElement("svg",{viewBox:"0 0 1098 1024",xmlns:"http://www.w3.org/2000/svg",className:"".concat(a,"-image-svg")},Z.createElement("path",{d:"M365.714286 329.142857q0 45.714286-32.036571 77.677714t-77.677714 32.036571-77.677714-32.036571-32.036571-77.677714 32.036571-77.677714 77.677714-32.036571 77.677714 32.036571 32.036571 77.677714zM950.857143 548.571429l0 256-804.571429 0 0-109.714286 182.857143-182.857143 91.428571 91.428571 292.571429-292.571429zM1005.714286 146.285714l-914.285714 0q-7.460571 0-12.873143 5.412571t-5.412571 12.873143l0 694.857143q0 7.460571 5.412571 12.873143t12.873143 5.412571l914.285714 0q7.460571 0 12.873143-5.412571t5.412571-12.873143l0-694.857143q0-7.460571-5.412571-12.873143t-12.873143-5.412571zM1097.142857 164.571429l0 694.857143q0 37.741714-26.843429 64.585143t-64.585143 26.843429l-914.285714 0q-37.741714 0-64.585143-26.843429t-26.843429-64.585143l0-694.857143q0-37.741714 26.843429-64.585143t64.585143-26.843429l914.285714 0q37.741714 0 64.585143 26.843429t26.843429 64.585143z",className:"".concat(a,"-image-path")})))))},Rc=function(t){var e,n=t.prefixCls,r=t.className,i=t.rootClassName,o=t.active,a=t.block,c=t.size,l=void 0===c?"default":c,u=(0,Z.useContext(Dt.E_).getPrefixCls)("skeleton",n),s=Zc(u),f=(0,G.Z)(s,2),h=f[0],d=f[1],p=(0,ce.Z)(t,["prefixCls"]),v=K()(u,"".concat(u,"-element"),(e={},(0,V.Z)(e,"".concat(u,"-active"),o),(0,V.Z)(e,"".concat(u,"-block"),a),e),r,i,d);return h(Z.createElement("div",{className:v},Z.createElement(Cc,Object.assign({prefixCls:"".concat(u,"-input"),size:l},p))))},Lc={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M888 792H200V168c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h752c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM288 604a64 64 0 10128 0 64 64 0 10-128 0zm118-224a48 48 0 1096 0 48 48 0 10-96 0zm158 228a96 96 0 10192 0 96 96 0 10-192 0zm148-314a56 56 0 10112 0 56 56 0 10-112 0z"}}]},name:"dot-chart",theme:"outlined"},Nc=function(t,e){return Z.createElement(Wt.Z,(0,J.Z)({},t,{ref:e,icon:Lc}))};var Bc=Z.forwardRef(Nc),zc=function(t){var e=t.prefixCls,n=t.className,r=t.rootClassName,i=t.style,o=t.active,a=t.children,c=(0,Z.useContext(Dt.E_).getPrefixCls)("skeleton",e),l=Zc(c),u=(0,G.Z)(l,2),s=u[0],f=u[1],h=K()(c,"".concat(c,"-element"),(0,V.Z)({},"".concat(c,"-active"),o),f,n,r),d=null!=a?a:Z.createElement(Bc,null);return s(Z.createElement("div",{className:h},Z.createElement("div",{className:K()("".concat(c,"-image"),n),style:i},d)))},Uc=function(t){var e=function(e){var n=t.width,r=t.rows,i=void 0===r?2:r;return Array.isArray(n)?n[e]:i-1===e?n:void 0},n=t.prefixCls,r=t.className,i=t.style,o=t.rows,a=(0,Y.Z)(Array(o)).map((function(t,n){return Z.createElement("li",{key:n,style:{width:e(n)}})}));return Z.createElement("ul",{className:K()(n,r),style:i},a)},Hc=function(t){var e=t.prefixCls,n=t.className,r=t.width,i=t.style;return Z.createElement("h3",{className:K()(e,n),style:Object.assign({width:r},i)})};function Wc(t){return t&&"object"==typeof t?t:{}}var Vc=function(t){var e=t.prefixCls,n=t.loading,r=t.className,i=t.rootClassName,o=t.style,a=t.children,c=t.avatar,l=void 0!==c&&c,u=t.title,s=void 0===u||u,f=t.paragraph,h=void 0===f||f,d=t.active,p=t.round,v=Z.useContext(Dt.E_),g=v.getPrefixCls,m=v.direction,y=v.skeleton,b=g("skeleton",e),x=Zc(b),w=(0,G.Z)(x,2),S=w[0],k=w[1];if(n||!("loading"in t)){var C,O,E,M=!!l,A=!!s,P=!!h;if(M){var _=Object.assign(Object.assign({prefixCls:"".concat(b,"-avatar")},function(t,e){return t&&!e?{size:"large",shape:"square"}:{size:"large",shape:"circle"}}(A,P)),Wc(l));O=Z.createElement("div",{className:"".concat(b,"-header")},Z.createElement(Cc,Object.assign({},_)))}if(A||P){var D,T;if(A){var F=Object.assign(Object.assign({prefixCls:"".concat(b,"-title")},function(t,e){return!t&&e?{width:"38%"}:t&&e?{width:"50%"}:{}}(M,P)),Wc(s));D=Z.createElement(Hc,Object.assign({},F))}if(P){var j=Object.assign(Object.assign({prefixCls:"".concat(b,"-paragraph")},function(t,e){var n={};return t&&e||(n.width="61%"),n.rows=!t&&e?3:2,n}(M,A)),Wc(h));T=Z.createElement(Uc,Object.assign({},j))}E=Z.createElement("div",{className:"".concat(b,"-content")},D,T)}var I=K()(b,(C={},(0,V.Z)(C,"".concat(b,"-with-avatar"),M),(0,V.Z)(C,"".concat(b,"-active"),d),(0,V.Z)(C,"".concat(b,"-rtl"),"rtl"===m),(0,V.Z)(C,"".concat(b,"-round"),p),C),null==y?void 0:y.className,r,i,k);return S(Z.createElement("div",{className:I,style:Object.assign(Object.assign({},null==y?void 0:y.style),o)},O,E))}return void 0!==a?a:null};Vc.Button=jc,Vc.Avatar=Fc,Vc.Input=Rc,Vc.Image=Ic,Vc.Node=zc;var Gc=Vc,Xc=n(28893),qc=["title","titleId"];var Yc=Z.forwardRef((function(t,e){var n=t.title,r=t.titleId,i=(0,I.Z)(t,qc);return Z.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true",ref:e,"aria-labelledby":r},i),n?Z.createElement("title",{id:r},n):null,Z.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 20.25c4.97 0 9-3.694 9-8.25s-4.03-8.25-9-8.25S3 7.444 3 12c0 2.104.859 4.023 2.273 5.48.432.447.74 1.04.586 1.641a4.483 4.483 0 01-.923 1.785A5.969 5.969 0 006 21c1.282 0 2.47-.402 3.445-1.087.81.22 1.668.337 2.555.337z"}))})),$c=["title","titleId"];var Kc=Z.forwardRef((function(t,e){var n=t.title,r=t.titleId,i=(0,I.Z)(t,$c);return Z.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true",ref:e,"aria-labelledby":r},i),n?Z.createElement("title",{id:r},n):null,Z.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M5.25 8.25h15m-16.5 7.5h15m-1.8-13.5l-3.9 19.5m-2.1-19.5l-3.9 19.5"}))})),Jc=["title","titleId"];var Qc=Z.forwardRef((function(t,e){var n=t.title,r=t.titleId,i=(0,I.Z)(t,Jc);return Z.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true",ref:e,"aria-labelledby":r},i),n?Z.createElement("title",{id:r},n):null,Z.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z"}))})),tl=["title","titleId"];var el=Z.forwardRef((function(t,e){var n=t.title,r=t.titleId,i=(0,I.Z)(t,tl);return Z.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true",ref:e,"aria-labelledby":r},i),n?Z.createElement("title",{id:r},n):null,Z.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z"}),Z.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 6h.008v.008H6V6z"}))})),nl=["title","titleId"];var rl=Z.forwardRef((function(t,e){var n=t.title,r=t.titleId,i=(0,I.Z)(t,nl);return Z.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true",ref:e,"aria-labelledby":r},i),n?Z.createElement("title",{id:r},n):null,Z.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19.5 14.25v-2.625a3.375 3.375 0 00-3.375-3.375h-1.5A1.125 1.125 0 0113.5 7.125v-1.5a3.375 3.375 0 00-3.375-3.375H8.25M9 16.5v.75m3-3v3M15 12v5.25m-4.5-15H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 00-9-9z"}))})),il=["title","titleId"];var ol=Z.forwardRef((function(t,e){var n=t.title,r=t.titleId,i=(0,I.Z)(t,il);return Z.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true",ref:e,"aria-labelledby":r},i),n?Z.createElement("title",{id:r},n):null,Z.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M8.25 7.5V6.108c0-1.135.845-2.098 1.976-2.192.373-.03.748-.057 1.123-.08M15.75 18H18a2.25 2.25 0 002.25-2.25V6.108c0-1.135-.845-2.098-1.976-2.192a48.424 48.424 0 00-1.123-.08M15.75 18.75v-1.875a3.375 3.375 0 00-3.375-3.375h-1.5a1.125 1.125 0 01-1.125-1.125v-1.5A3.375 3.375 0 006.375 7.5H5.25m11.9-3.664A2.251 2.251 0 0015 2.25h-1.5a2.251 2.251 0 00-2.15 1.586m5.8 0c.065.21.1.433.1.664v.75h-6V4.5c0-.231.035-.454.1-.664M6.75 7.5H4.875c-.621 0-1.125.504-1.125 1.125v12c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V16.5a9 9 0 00-9-9z"}))})),al=n(45728);function cl(t){return!(!t||!t.then)}var ll=function(t){var e=t.type,n=t.children,r=t.prefixCls,i=t.buttonProps,o=t.close,a=t.autoFocus,c=t.emitEvent,l=t.isSilent,u=t.quitOnNullishReturnValue,s=t.actionFn,f=Z.useRef(!1),h=Z.useRef(null),d=(0,al.Z)(!1),p=(0,G.Z)(d,2),v=p[0],g=p[1],m=function(){null==o||o.apply(void 0,arguments)};Z.useEffect((function(){var t=null;return a&&(t=setTimeout((function(){var t;null===(t=h.current)||void 0===t||t.focus()}))),function(){t&&clearTimeout(t)}}),[]);return Z.createElement(En,Object.assign({},kn(e),{onClick:function(t){if(!f.current)if(f.current=!0,s){var e;if(c){if(e=s(t),u&&!cl(e))return f.current=!1,void m(t)}else if(s.length)e=s(o),f.current=!1;else if(!(e=s()))return void m();!function(t){cl(t)&&(g(!0),t.then((function(){g(!1,!0),m.apply(void 0,arguments),f.current=!1}),(function(t){if(g(!1,!0),f.current=!1,!(null==l?void 0:l()))return Promise.reject(t)})))}(e)}else m()},loading:v,prefixCls:r},i,{ref:h}),n)},ul=n(55553);function sl(t,e,n){var r=e;return!r&&n&&(r="".concat(t,"-").concat(n)),r}function fl(t,e){var n=t["page".concat(e?"Y":"X","Offset")],r="scroll".concat(e?"Top":"Left");if("number"!=typeof n){var i=t.document;"number"!=typeof(n=i.documentElement[r])&&(n=i.body[r])}return n}var hl=Z.memo((function(t){return t.children}),(function(t,e){return!e.shouldUpdate})),dl={width:0,height:0,overflow:"hidden",outline:"none"},pl=Z.forwardRef((function(t,e){var n=t.prefixCls,r=t.className,i=t.style,o=t.title,a=t.ariaId,c=t.footer,l=t.closable,u=t.closeIcon,s=t.onClose,f=t.children,h=t.bodyStyle,d=t.bodyProps,p=t.modalRender,v=t.onMouseDown,g=t.onMouseUp,m=t.holderRef,y=t.visible,b=t.forceRender,x=t.width,w=t.height,S=(0,Z.useRef)(),k=(0,Z.useRef)();Z.useImperativeHandle(e,(function(){return{focus:function(){var t;null===(t=S.current)||void 0===t||t.focus()},changeActive:function(t){var e=document.activeElement;t&&e===k.current?S.current.focus():t||e!==S.current||k.current.focus()}}}));var C,O,E,M={};void 0!==x&&(M.width=x),void 0!==w&&(M.height=w),c&&(C=Z.createElement("div",{className:"".concat(n,"-footer")},c)),o&&(O=Z.createElement("div",{className:"".concat(n,"-header")},Z.createElement("div",{className:"".concat(n,"-title"),id:a},o))),l&&(E=Z.createElement("button",{type:"button",onClick:s,"aria-label":"Close",className:"".concat(n,"-close")},u||Z.createElement("span",{className:"".concat(n,"-close-x")})));var A=Z.createElement("div",{className:"".concat(n,"-content")},E,O,Z.createElement("div",(0,J.Z)({className:"".concat(n,"-body"),style:h},d),f),C);return Z.createElement("div",{key:"dialog-element",role:"dialog","aria-labelledby":o?a:null,"aria-modal":"true",ref:m,style:(0,lt.Z)((0,lt.Z)({},i),M),className:K()(n,r),onMouseDown:v,onMouseUp:g},Z.createElement("div",{tabIndex:0,ref:S,style:dl,"aria-hidden":"true"}),Z.createElement(hl,{shouldUpdate:y||b},p?p(A):A),Z.createElement("div",{tabIndex:0,ref:k,style:dl,"aria-hidden":"true"}))}));var vl=pl,gl=Z.forwardRef((function(t,e){var n=t.prefixCls,r=t.title,i=t.style,o=t.className,a=t.visible,c=t.forceRender,l=t.destroyOnClose,u=t.motionName,s=t.ariaId,f=t.onVisibleChanged,h=t.mousePosition,d=(0,Z.useRef)(),p=Z.useState(),v=(0,rr.Z)(p,2),g=v[0],m=v[1],y={};function b(){var t=function(t){var e=t.getBoundingClientRect(),n={left:e.left,top:e.top},r=t.ownerDocument,i=r.defaultView||r.parentWindow;return n.left+=fl(i),n.top+=fl(i,!0),n}(d.current);m(h?"".concat(h.x-t.left,"px ").concat(h.y-t.top,"px"):"")}return g&&(y.transformOrigin=g),Z.createElement(ne.ZP,{visible:a,onVisibleChanged:f,onAppearPrepare:b,onEnterPrepare:b,forceRender:c,motionName:u,removeOnLeave:l,ref:d},(function(a,c){var l=a.className,u=a.style;return Z.createElement(vl,(0,J.Z)({},t,{ref:e,title:r,ariaId:s,prefixCls:n,holderRef:c,style:(0,lt.Z)((0,lt.Z)((0,lt.Z)({},u),i),y),className:K()(o,l)}))}))}));gl.displayName="Content";var ml=gl;function yl(t){var e=t.prefixCls,n=t.style,r=t.visible,i=t.maskProps,o=t.motionName;return Z.createElement(ne.ZP,{key:"mask",visible:r,motionName:o,leavedClassName:"".concat(e,"-mask-hidden")},(function(t,r){var o=t.className,a=t.style;return Z.createElement("div",(0,J.Z)({ref:r,style:(0,lt.Z)((0,lt.Z)({},a),n),className:K()("".concat(e,"-mask"),o)},i))}))}function bl(t){var e=t.prefixCls,n=void 0===e?"rc-dialog":e,r=t.zIndex,i=t.visible,o=void 0!==i&&i,a=t.keyboard,c=void 0===a||a,l=t.focusTriggerAfterClose,u=void 0===l||l,s=t.wrapStyle,f=t.wrapClassName,h=t.wrapProps,d=t.onClose,p=t.afterOpenChange,v=t.afterClose,g=t.transitionName,m=t.animation,y=t.closable,b=void 0===y||y,x=t.mask,w=void 0===x||x,S=t.maskTransitionName,k=t.maskAnimation,C=t.maskClosable,O=void 0===C||C,E=t.maskStyle,M=t.maskProps,A=t.rootClassName,P=(0,Z.useRef)(),_=(0,Z.useRef)(),D=(0,Z.useRef)(),T=Z.useState(o),F=(0,rr.Z)(T,2),j=F[0],I=F[1],R=ci();function L(t){null==d||d(t)}var N=(0,Z.useRef)(!1),B=(0,Z.useRef)(),z=null;return O&&(z=function(t){N.current?N.current=!1:_.current===t.target&&L(t)}),(0,Z.useEffect)((function(){o&&(I(!0),(0,ul.Z)(_.current,document.activeElement)||(P.current=document.activeElement))}),[o]),(0,Z.useEffect)((function(){return function(){clearTimeout(B.current)}}),[]),Z.createElement("div",(0,J.Z)({className:K()("".concat(n,"-root"),A)},dt(t,{data:!0})),Z.createElement(yl,{prefixCls:n,visible:w&&o,motionName:sl(n,S,k),style:(0,lt.Z)({zIndex:r},E),maskProps:M}),Z.createElement("div",(0,J.Z)({tabIndex:-1,onKeyDown:function(t){if(c&&t.keyCode===Ya.Z.ESC)return t.stopPropagation(),void L(t);o&&t.keyCode===Ya.Z.TAB&&D.current.changeActive(!t.shiftKey)},className:K()("".concat(n,"-wrap"),f),ref:_,onClick:z,style:(0,lt.Z)((0,lt.Z)({zIndex:r},s),{},{display:j?null:"none"})},h),Z.createElement(ml,(0,J.Z)({},t,{onMouseDown:function(){clearTimeout(B.current),N.current=!0},onMouseUp:function(){B.current=setTimeout((function(){N.current=!1}))},ref:D,closable:b,ariaId:R,prefixCls:n,visible:o&&j,onClose:L,onVisibleChanged:function(t){if(t)(0,ul.Z)(_.current,document.activeElement)||null===(e=D.current)||void 0===e||e.focus();else{if(I(!1),w&&P.current&&u){try{P.current.focus({preventScroll:!0})}catch(F2t){}P.current=null}j&&(null==v||v())}var e;null==p||p(t)},motionName:sl(n,g,m)}))))}var xl=function(t){var e=t.visible,n=t.getContainer,r=t.forceRender,i=t.destroyOnClose,o=void 0!==i&&i,a=t.afterClose,c=Z.useState(e),l=(0,rr.Z)(c,2),u=l[0],s=l[1];return Z.useEffect((function(){e&&s(!0)}),[e]),r||!o||u?Z.createElement(Er,{open:e||r||u,autoDestroy:!1,getContainer:n,autoLock:e||u},Z.createElement(bl,(0,J.Z)({},t,{destroyOnClose:o,afterClose:function(){null==a||a(),s(!1)}}))):null};xl.displayName="Dialog";var wl=xl;var Sl,kl=function(){return(0,ir.Z)()&&window.document.documentElement},Cl=n(81083),Ol="RC_FORM_INTERNAL_HOOKS",El=function(){(0,bt.ZP)(!1,"Can not find FormContext. Please make sure you wrap Field under Form.")},Ml=Z.createContext({getFieldValue:El,getFieldsValue:El,getFieldError:El,getFieldWarning:El,getFieldsError:El,isFieldsTouched:El,isFieldTouched:El,isFieldValidating:El,isFieldsValidating:El,resetFields:El,setFields:El,setFieldValue:El,setFieldsValue:El,validateFields:El,submit:El,getInternalHooks:function(){return El(),{dispatch:El,initEntityValue:El,registerField:El,useSubscribe:El,setInitialValues:El,destroyForm:El,setCallbacks:El,registerWatch:El,getFields:El,setValidateMessages:El,setPreserve:El,getInitialValue:El}}}),Al=Z.createContext(null);function Pl(t){return null==t?[]:Array.isArray(t)?t:[t]}function _l(){return _l=Object.assign?Object.assign.bind():function(t){for(var e=1;e1?e-1:0),r=1;r=o)return t;switch(t){case"%s":return String(n[i++]);case"%d":return Number(n[i++]);case"%j":try{return JSON.stringify(n[i++])}catch(e){return"[Circular]"}break;default:return t}}));return a}return t}function Ll(t,e){return null==t||(!("array"!==e||!Array.isArray(t)||t.length)||!(!function(t){return"string"===t||"url"===t||"hex"===t||"email"===t||"date"===t||"pattern"===t}(e)||"string"!=typeof t||t))}function Nl(t,e,n){var r=0,i=t.length;!function o(a){if(a&&a.length)n(a);else{var c=r;r+=1,c()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+\.)+[a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}))$/,Xl=/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i,ql={integer:function(t){return ql.number(t)&&parseInt(t,10)===t},float:function(t){return ql.number(t)&&!ql.integer(t)},array:function(t){return Array.isArray(t)},regexp:function(t){if(t instanceof RegExp)return!0;try{return!!new RegExp(t)}catch(F2t){return!1}},date:function(t){return"function"==typeof t.getTime&&"function"==typeof t.getMonth&&"function"==typeof t.getYear&&!isNaN(t.getTime())},number:function(t){return!isNaN(t)&&"number"==typeof t},object:function(t){return"object"==typeof t&&!ql.array(t)},method:function(t){return"function"==typeof t},email:function(t){return"string"==typeof t&&t.length<=320&&!!t.match(Gl)},url:function(t){return"string"==typeof t&&t.length<=2048&&!!t.match(function(){if(Wl)return Wl;var t="[a-fA-F\\d:]",e=function(e){return e&&e.includeBoundaries?"(?:(?<=\\s|^)(?="+t+")|(?<="+t+")(?=\\s|$))":""},n="(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}",r="[a-fA-F\\d]{1,4}",i=("\n(?:\n(?:"+r+":){7}(?:"+r+"|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8\n(?:"+r+":){6}(?:"+n+"|:"+r+"|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4\n(?:"+r+":){5}(?::"+n+"|(?::"+r+"){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4\n(?:"+r+":){4}(?:(?::"+r+"){0,1}:"+n+"|(?::"+r+"){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4\n(?:"+r+":){3}(?:(?::"+r+"){0,2}:"+n+"|(?::"+r+"){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4\n(?:"+r+":){2}(?:(?::"+r+"){0,3}:"+n+"|(?::"+r+"){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4\n(?:"+r+":){1}(?:(?::"+r+"){0,4}:"+n+"|(?::"+r+"){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4\n(?::(?:(?::"+r+"){0,5}:"+n+"|(?::"+r+"){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4\n)(?:%[0-9a-zA-Z]{1,})? // %eth0 %1\n").replace(/\s*\/\/.*$/gm,"").replace(/\n/g,"").trim(),o=new RegExp("(?:^"+n+"$)|(?:^"+i+"$)"),a=new RegExp("^"+n+"$"),c=new RegExp("^"+i+"$"),l=function(t){return t&&t.exact?o:new RegExp("(?:"+e(t)+n+e(t)+")|(?:"+e(t)+i+e(t)+")","g")};l.v4=function(t){return t&&t.exact?a:new RegExp(""+e(t)+n+e(t),"g")},l.v6=function(t){return t&&t.exact?c:new RegExp(""+e(t)+i+e(t),"g")};var u=l.v4().source,s=l.v6().source;return Wl=new RegExp("(?:^(?:(?:(?:[a-z]+:)?//)|www\\.)(?:\\S+(?::\\S*)?@)?(?:localhost|"+u+"|"+s+'|(?:(?:[a-z\\u00a1-\\uffff0-9][-_]*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))(?::\\d{2,5})?(?:[/?#][^\\s"]*)?$)',"i")}())},hex:function(t){return"string"==typeof t&&!!t.match(Xl)}},Yl="enum",$l={required:Vl,whitespace:function(t,e,n,r,i){(/^\s+$/.test(e)||""===e)&&r.push(Rl(i.messages.whitespace,t.fullField))},type:function(t,e,n,r,i){if(t.required&&void 0===e)Vl(t,e,n,r,i);else{var o=t.type;["integer","float","array","regexp","object","method","email","number","date","url","hex"].indexOf(o)>-1?ql[o](e)||r.push(Rl(i.messages.types[o],t.fullField,t.type)):o&&typeof e!==t.type&&r.push(Rl(i.messages.types[o],t.fullField,t.type))}},range:function(t,e,n,r,i){var o="number"==typeof t.len,a="number"==typeof t.min,c="number"==typeof t.max,l=e,u=null,s="number"==typeof e,f="string"==typeof e,h=Array.isArray(e);if(s?u="number":f?u="string":h&&(u="array"),!u)return!1;h&&(l=e.length),f&&(l=e.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"_").length),o?l!==t.len&&r.push(Rl(i.messages[u].len,t.fullField,t.len)):a&&!c&&lt.max?r.push(Rl(i.messages[u].max,t.fullField,t.max)):a&&c&&(lt.max)&&r.push(Rl(i.messages[u].range,t.fullField,t.min,t.max))},enum:function(t,e,n,r,i){t[Yl]=Array.isArray(t[Yl])?t[Yl]:[],-1===t[Yl].indexOf(e)&&r.push(Rl(i.messages[Yl],t.fullField,t[Yl].join(", ")))},pattern:function(t,e,n,r,i){if(t.pattern)if(t.pattern instanceof RegExp)t.pattern.lastIndex=0,t.pattern.test(e)||r.push(Rl(i.messages.pattern.mismatch,t.fullField,e,t.pattern));else if("string"==typeof t.pattern){new RegExp(t.pattern).test(e)||r.push(Rl(i.messages.pattern.mismatch,t.fullField,e,t.pattern))}}},Kl=function(t,e,n,r,i){var o=t.type,a=[];if(t.required||!t.required&&r.hasOwnProperty(t.field)){if(Ll(e,o)&&!t.required)return n();$l.required(t,e,r,a,i,o),Ll(e,o)||$l.type(t,e,r,a,i)}n(a)},Jl={string:function(t,e,n,r,i){var o=[];if(t.required||!t.required&&r.hasOwnProperty(t.field)){if(Ll(e,"string")&&!t.required)return n();$l.required(t,e,r,o,i,"string"),Ll(e,"string")||($l.type(t,e,r,o,i),$l.range(t,e,r,o,i),$l.pattern(t,e,r,o,i),!0===t.whitespace&&$l.whitespace(t,e,r,o,i))}n(o)},method:function(t,e,n,r,i){var o=[];if(t.required||!t.required&&r.hasOwnProperty(t.field)){if(Ll(e)&&!t.required)return n();$l.required(t,e,r,o,i),void 0!==e&&$l.type(t,e,r,o,i)}n(o)},number:function(t,e,n,r,i){var o=[];if(t.required||!t.required&&r.hasOwnProperty(t.field)){if(""===e&&(e=void 0),Ll(e)&&!t.required)return n();$l.required(t,e,r,o,i),void 0!==e&&($l.type(t,e,r,o,i),$l.range(t,e,r,o,i))}n(o)},boolean:function(t,e,n,r,i){var o=[];if(t.required||!t.required&&r.hasOwnProperty(t.field)){if(Ll(e)&&!t.required)return n();$l.required(t,e,r,o,i),void 0!==e&&$l.type(t,e,r,o,i)}n(o)},regexp:function(t,e,n,r,i){var o=[];if(t.required||!t.required&&r.hasOwnProperty(t.field)){if(Ll(e)&&!t.required)return n();$l.required(t,e,r,o,i),Ll(e)||$l.type(t,e,r,o,i)}n(o)},integer:function(t,e,n,r,i){var o=[];if(t.required||!t.required&&r.hasOwnProperty(t.field)){if(Ll(e)&&!t.required)return n();$l.required(t,e,r,o,i),void 0!==e&&($l.type(t,e,r,o,i),$l.range(t,e,r,o,i))}n(o)},float:function(t,e,n,r,i){var o=[];if(t.required||!t.required&&r.hasOwnProperty(t.field)){if(Ll(e)&&!t.required)return n();$l.required(t,e,r,o,i),void 0!==e&&($l.type(t,e,r,o,i),$l.range(t,e,r,o,i))}n(o)},array:function(t,e,n,r,i){var o=[];if(t.required||!t.required&&r.hasOwnProperty(t.field)){if(null==e&&!t.required)return n();$l.required(t,e,r,o,i,"array"),null!=e&&($l.type(t,e,r,o,i),$l.range(t,e,r,o,i))}n(o)},object:function(t,e,n,r,i){var o=[];if(t.required||!t.required&&r.hasOwnProperty(t.field)){if(Ll(e)&&!t.required)return n();$l.required(t,e,r,o,i),void 0!==e&&$l.type(t,e,r,o,i)}n(o)},enum:function(t,e,n,r,i){var o=[];if(t.required||!t.required&&r.hasOwnProperty(t.field)){if(Ll(e)&&!t.required)return n();$l.required(t,e,r,o,i),void 0!==e&&$l.enum(t,e,r,o,i)}n(o)},pattern:function(t,e,n,r,i){var o=[];if(t.required||!t.required&&r.hasOwnProperty(t.field)){if(Ll(e,"string")&&!t.required)return n();$l.required(t,e,r,o,i),Ll(e,"string")||$l.pattern(t,e,r,o,i)}n(o)},date:function(t,e,n,r,i){var o=[];if(t.required||!t.required&&r.hasOwnProperty(t.field)){if(Ll(e,"date")&&!t.required)return n();var a;if($l.required(t,e,r,o,i),!Ll(e,"date"))a=e instanceof Date?e:new Date(e),$l.type(t,a,r,o,i),a&&$l.range(t,a.getTime(),r,o,i)}n(o)},url:Kl,hex:Kl,email:Kl,required:function(t,e,n,r,i){var o=[],a=Array.isArray(e)?"array":typeof e;$l.required(t,e,r,o,i,a),n(o)},any:function(t,e,n,r,i){var o=[];if(t.required||!t.required&&r.hasOwnProperty(t.field)){if(Ll(e)&&!t.required)return n();$l.required(t,e,r,o,i)}n(o)}};function Ql(){return{default:"Validation error on field %s",required:"%s is required",enum:"%s must be one of %s",whitespace:"%s cannot be empty",date:{format:"%s date %s is invalid for format %s",parse:"%s date could not be parsed, %s is invalid ",invalid:"%s date %s is invalid"},types:{string:"%s is not a %s",method:"%s is not a %s (function)",array:"%s is not an %s",object:"%s is not an %s",number:"%s is not a %s",date:"%s is not a %s",boolean:"%s is not a %s",integer:"%s is not an %s",float:"%s is not a %s",regexp:"%s is not a valid %s",email:"%s is not a valid %s",url:"%s is not a valid %s",hex:"%s is not a valid %s"},string:{len:"%s must be exactly %s characters",min:"%s must be at least %s characters",max:"%s cannot be longer than %s characters",range:"%s must be between %s and %s characters"},number:{len:"%s must equal %s",min:"%s cannot be less than %s",max:"%s cannot be greater than %s",range:"%s must be between %s and %s"},array:{len:"%s must be exactly %s in length",min:"%s cannot be less than %s in length",max:"%s cannot be greater than %s in length",range:"%s must be between %s and %s in length"},pattern:{mismatch:"%s value %s does not match pattern %s"},clone:function(){var t=JSON.parse(JSON.stringify(this));return t.clone=this.clone,t}}}var tu=Ql(),eu=function(){function t(t){this.rules=null,this._messages=tu,this.define(t)}var e=t.prototype;return e.define=function(t){var e=this;if(!t)throw new Error("Cannot configure a schema with no rules");if("object"!=typeof t||Array.isArray(t))throw new Error("Rules must be an object");this.rules={},Object.keys(t).forEach((function(n){var r=t[n];e.rules[n]=Array.isArray(r)?r:[r]}))},e.messages=function(t){return t&&(this._messages=Hl(Ql(),t)),this._messages},e.validate=function(e,n,r){var i=this;void 0===n&&(n={}),void 0===r&&(r=function(){});var o=e,a=n,c=r;if("function"==typeof a&&(c=a,a={}),!this.rules||0===Object.keys(this.rules).length)return c&&c(null,o),Promise.resolve(o);if(a.messages){var l=this.messages();l===tu&&(l=Ql()),Hl(l,a.messages),a.messages=l}else a.messages=this.messages();var u={};(a.keys||Object.keys(this.rules)).forEach((function(t){var n=i.rules[t],r=o[t];n.forEach((function(n){var a=n;"function"==typeof a.transform&&(o===e&&(o=_l({},o)),r=o[t]=a.transform(r)),(a="function"==typeof a?{validator:a}:_l({},a)).validator=i.getValidationMethod(a),a.validator&&(a.field=t,a.fullField=a.fullField||t,a.type=i.getType(a),u[t]=u[t]||[],u[t].push({rule:a,value:r,source:o,field:t}))}))}));var s={};return zl(u,a,(function(e,n){var r,i=e.rule,c=!("object"!==i.type&&"array"!==i.type||"object"!=typeof i.fields&&"object"!=typeof i.defaultField);function l(t,e){return _l({},e,{fullField:i.fullField+"."+t,fullFields:i.fullFields?[].concat(i.fullFields,[t]):[t]})}function u(r){void 0===r&&(r=[]);var u=Array.isArray(r)?r:[r];!a.suppressWarning&&u.length&&t.warning("async-validator:",u),u.length&&void 0!==i.message&&(u=[].concat(i.message));var f=u.map(Ul(i,o));if(a.first&&f.length)return s[i.field]=1,n(f);if(c){if(i.required&&!e.value)return void 0!==i.message?f=[].concat(i.message).map(Ul(i,o)):a.error&&(f=[a.error(i,Rl(a.messages.required,i.field))]),n(f);var h={};i.defaultField&&Object.keys(e.value).map((function(t){h[t]=i.defaultField})),h=_l({},h,e.rule.fields);var d={};Object.keys(h).forEach((function(t){var e=h[t],n=Array.isArray(e)?e:[e];d[t]=n.map(l.bind(null,t))}));var p=new t(d);p.messages(a.messages),e.rule.options&&(e.rule.options.messages=a.messages,e.rule.options.error=a.error),p.validate(e.value,e.rule.options||a,(function(t){var e=[];f&&f.length&&e.push.apply(e,f),t&&t.length&&e.push.apply(e,t),n(e.length?e:null)}))}else n(f)}if(c=c&&(i.required||!i.required&&e.value),i.field=e.field,i.asyncValidator)r=i.asyncValidator(i,e.value,u,e.source,a);else if(i.validator){try{r=i.validator(i,e.value,u,e.source,a)}catch(f){null==console.error||console.error(f),a.suppressValidatorError||setTimeout((function(){throw f}),0),u(f.message)}!0===r?u():!1===r?u("function"==typeof i.message?i.message(i.fullField||i.field):i.message||(i.fullField||i.field)+" fails"):r instanceof Array?u(r):r instanceof Error&&u(r.message)}r&&r.then&&r.then((function(){return u()}),(function(t){return u(t)}))}),(function(t){!function(t){var e=[],n={};function r(t){var n;Array.isArray(t)?e=(n=e).concat.apply(n,t):e.push(t)}for(var i=0;i=r||n<0||n>=r)return t;var i=t[e],o=e-n;return o>0?[].concat((0,Y.Z)(t.slice(0,n)),[i],(0,Y.Z)(t.slice(n,e)),(0,Y.Z)(t.slice(e+1,r))):o<0?[].concat((0,Y.Z)(t.slice(0,e)),(0,Y.Z)(t.slice(e+1,n+1)),[i],(0,Y.Z)(t.slice(n+1,r))):t}var bu=["name"],xu=[];function wu(t,e,n,r,i,o){return"function"==typeof t?t(e,n,"source"in o?{source:o.source}:{}):r!==i}var Su=function(t){(0,et.Z)(n,t);var e=(0,nt.Z)(n);function n(t){var r;((0,Q.Z)(this,n),(r=e.call(this,t)).state={resetCount:0},r.cancelRegisterFunc=null,r.mounted=!1,r.touched=!1,r.dirty=!1,r.validatePromise=void 0,r.prevValidating=void 0,r.errors=xu,r.warnings=xu,r.cancelRegister=function(){var t=r.props,e=t.preserve,n=t.isListField,i=t.name;r.cancelRegisterFunc&&r.cancelRegisterFunc(n,e,du(i)),r.cancelRegisterFunc=null},r.getNamePath=function(){var t=r.props,e=t.name,n=t.fieldContext.prefixName,i=void 0===n?[]:n;return void 0!==e?[].concat((0,Y.Z)(i),(0,Y.Z)(e)):[]},r.getRules=function(){var t=r.props,e=t.rules,n=void 0===e?[]:e,i=t.fieldContext;return n.map((function(t){return"function"==typeof t?t(i):t}))},r.refresh=function(){r.mounted&&r.setState((function(t){return{resetCount:t.resetCount+1}}))},r.metaCache=null,r.triggerMetaEvent=function(t){var e=r.props.onMetaChange;if(e){var n=(0,lt.Z)((0,lt.Z)({},r.getMeta()),{},{destroy:t});(0,Pa.Z)(r.metaCache,n)||e(n),r.metaCache=n}else r.metaCache=null},r.onStoreChange=function(t,e,n){var i=r.props,o=i.shouldUpdate,a=i.dependencies,c=void 0===a?[]:a,l=i.onReset,u=n.store,s=r.getNamePath(),f=r.getValue(t),h=r.getValue(u),d=e&&vu(e,s);switch("valueUpdate"===n.type&&"external"===n.source&&f!==h&&(r.touched=!0,r.dirty=!0,r.validatePromise=null,r.errors=xu,r.warnings=xu,r.triggerMetaEvent()),n.type){case"reset":if(!e||d)return r.touched=!1,r.dirty=!1,r.validatePromise=void 0,r.errors=xu,r.warnings=xu,r.triggerMetaEvent(),null==l||l(),void r.refresh();break;case"remove":if(o)return void r.reRender();break;case"setField":if(d){var p=n.data;return"touched"in p&&(r.touched=p.touched),"validating"in p&&!("originRCField"in p)&&(r.validatePromise=p.validating?Promise.resolve([]):null),"errors"in p&&(r.errors=p.errors||xu),"warnings"in p&&(r.warnings=p.warnings||xu),r.dirty=!0,r.triggerMetaEvent(),void r.reRender()}if(o&&!s.length&&wu(o,t,u,f,h,n))return void r.reRender();break;case"dependenciesUpdate":if(c.map(du).some((function(t){return vu(n.relatedFields,t)})))return void r.reRender();break;default:if(d||(!c.length||s.length||o)&&wu(o,t,u,f,h,n))return void r.reRender()}!0===o&&r.reRender()},r.validateRules=function(t){var e=r.getNamePath(),n=r.getValue(),i=t||{},o=i.triggerName,a=i.validateOnly,c=void 0!==a&&a,l=Promise.resolve().then((function(){if(!r.mounted)return[];var i=r.props,a=i.validateFirst,c=void 0!==a&&a,u=i.messageVariables,s=r.getRules();o&&(s=s.filter((function(t){return t})).filter((function(t){var e=t.validateTrigger;return!e||Pl(e).includes(o)})));var f=uu(e,n,s,t,c,u);return f.catch((function(t){return t})).then((function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:xu;if(r.validatePromise===l){var e;r.validatePromise=null;var n=[],i=[];null===(e=t.forEach)||void 0===e||e.call(t,(function(t){var e=t.rule.warningOnly,r=t.errors,o=void 0===r?xu:r;e?i.push.apply(i,(0,Y.Z)(o)):n.push.apply(n,(0,Y.Z)(o))})),r.errors=n,r.warnings=i,r.triggerMetaEvent(),r.reRender()}})),f}));return c||(r.validatePromise=l,r.dirty=!0,r.errors=xu,r.warnings=xu,r.triggerMetaEvent(),r.reRender()),l},r.isFieldValidating=function(){return!!r.validatePromise},r.isFieldTouched=function(){return r.touched},r.isFieldDirty=function(){return!(!r.dirty&&void 0===r.props.initialValue)||void 0!==(0,r.props.fieldContext.getInternalHooks(Ol).getInitialValue)(r.getNamePath())},r.getErrors=function(){return r.errors},r.getWarnings=function(){return r.warnings},r.isListField=function(){return r.props.isListField},r.isList=function(){return r.props.isList},r.isPreserve=function(){return r.props.preserve},r.getMeta=function(){return r.prevValidating=r.isFieldValidating(),{touched:r.isFieldTouched(),validating:r.prevValidating,errors:r.errors,warnings:r.warnings,name:r.getNamePath(),validated:null===r.validatePromise}},r.getOnlyChild=function(t){if("function"==typeof t){var e=r.getMeta();return(0,lt.Z)((0,lt.Z)({},r.getOnlyChild(t(r.getControlled(),e,r.props.fieldContext))),{},{isFunction:!0})}var n=(0,je.Z)(t);return 1===n.length&&Z.isValidElement(n[0])?{child:n[0],isFunction:!1}:{child:n,isFunction:!1}},r.getValue=function(t){var e=r.props.fieldContext.getFieldsValue,n=r.getNamePath();return(0,hu.Z)(t||e(!0),n)},r.getControlled=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=r.props,n=e.trigger,i=e.validateTrigger,o=e.getValueFromEvent,a=e.normalize,c=e.valuePropName,l=e.getValueProps,u=e.fieldContext,s=void 0!==i?i:u.validateTrigger,f=r.getNamePath(),h=u.getInternalHooks,d=u.getFieldsValue,p=h(Ol).dispatch,v=r.getValue(),g=l||function(t){return(0,B.Z)({},c,t)},m=t[n],y=(0,lt.Z)((0,lt.Z)({},t),g(v));return y[n]=function(){var t;r.touched=!0,r.dirty=!0,r.triggerMetaEvent();for(var e=arguments.length,n=new Array(e),i=0;i=0&&e<=n.length?(u.keys=[].concat((0,Y.Z)(u.keys.slice(0,e)),[u.id],(0,Y.Z)(u.keys.slice(e))),o([].concat((0,Y.Z)(n.slice(0,e)),[t],(0,Y.Z)(n.slice(e))))):(u.keys=[].concat((0,Y.Z)(u.keys),[u.id]),o([].concat((0,Y.Z)(n),[t]))),u.id+=1},remove:function(t){var e=l(),n=new Set(Array.isArray(t)?t:[t]);n.size<=0||(u.keys=u.keys.filter((function(t,e){return!n.has(e)})),o(e.filter((function(t,e){return!n.has(e)}))))},move:function(t,e){if(t!==e){var n=l();t<0||t>=n.length||e<0||e>=n.length||(u.keys=yu(u.keys,t,e),o(yu(n,t,e)))}}},h=i||[];return Array.isArray(h)||(h=[]),r(h.map((function(t,e){var n=u.keys[e];return void 0===n&&(u.keys[e]=u.id,n=u.keys[e],u.id+=1),{name:e,key:n,isListField:!0}})),f,e)}))))};var Ou="__@field_split__";function Eu(t){return t.map((function(t){return"".concat((0,it.Z)(t),":").concat(t)})).join(Ou)}var Mu=function(){function t(){(0,Q.Z)(this,t),this.kvs=new Map}return(0,tt.Z)(t,[{key:"set",value:function(t,e){this.kvs.set(Eu(t),e)}},{key:"get",value:function(t){return this.kvs.get(Eu(t))}},{key:"update",value:function(t,e){var n=e(this.get(t));n?this.set(t,n):this.delete(t)}},{key:"delete",value:function(t){this.kvs.delete(Eu(t))}},{key:"map",value:function(t){return(0,Y.Z)(this.kvs.entries()).map((function(e){var n=(0,rr.Z)(e,2),r=n[0],i=n[1],o=r.split(Ou);return t({key:o.map((function(t){var e=t.match(/^([^:]*):(.*)$/),n=(0,rr.Z)(e,3),r=n[1],i=n[2];return"number"===r?Number(i):i})),value:i})}))}},{key:"toJSON",value:function(){var t={};return this.map((function(e){var n=e.key,r=e.value;return t[n.join(".")]=r,null})),t}}]),t}(),Au=Mu,Pu=["name"],_u=(0,tt.Z)((function t(e){var n=this;(0,Q.Z)(this,t),this.formHooked=!1,this.forceRootUpdate=void 0,this.subscribable=!0,this.store={},this.fieldEntities=[],this.initialValues={},this.callbacks={},this.validateMessages=null,this.preserve=null,this.lastValidatePromise=null,this.getForm=function(){return{getFieldValue:n.getFieldValue,getFieldsValue:n.getFieldsValue,getFieldError:n.getFieldError,getFieldWarning:n.getFieldWarning,getFieldsError:n.getFieldsError,isFieldsTouched:n.isFieldsTouched,isFieldTouched:n.isFieldTouched,isFieldValidating:n.isFieldValidating,isFieldsValidating:n.isFieldsValidating,resetFields:n.resetFields,setFields:n.setFields,setFieldValue:n.setFieldValue,setFieldsValue:n.setFieldsValue,validateFields:n.validateFields,submit:n.submit,_init:!0,getInternalHooks:n.getInternalHooks}},this.getInternalHooks=function(t){return t===Ol?(n.formHooked=!0,{dispatch:n.dispatch,initEntityValue:n.initEntityValue,registerField:n.registerField,useSubscribe:n.useSubscribe,setInitialValues:n.setInitialValues,destroyForm:n.destroyForm,setCallbacks:n.setCallbacks,setValidateMessages:n.setValidateMessages,getFields:n.getFields,setPreserve:n.setPreserve,getInitialValue:n.getInitialValue,registerWatch:n.registerWatch}):((0,bt.ZP)(!1,"`getInternalHooks` is internal usage. Should not call directly."),null)},this.useSubscribe=function(t){n.subscribable=t},this.prevWithoutPreserves=null,this.setInitialValues=function(t,e){if(n.initialValues=t||{},e){var r,i=(0,ya.T)(t,n.store);null===(r=n.prevWithoutPreserves)||void 0===r||r.map((function(e){var n=e.key;i=(0,ya.Z)(i,n,(0,hu.Z)(t,n))})),n.prevWithoutPreserves=null,n.updateStore(i)}},this.destroyForm=function(){var t=new Au;n.getFieldEntities(!0).forEach((function(e){n.isMergedPreserve(e.isPreserve())||t.set(e.getNamePath(),!0)})),n.prevWithoutPreserves=t},this.getInitialValue=function(t){var e=(0,hu.Z)(n.initialValues,t);return t.length?(0,ya.T)(e):e},this.setCallbacks=function(t){n.callbacks=t},this.setValidateMessages=function(t){n.validateMessages=t},this.setPreserve=function(t){n.preserve=t},this.watchList=[],this.registerWatch=function(t){return n.watchList.push(t),function(){n.watchList=n.watchList.filter((function(e){return e!==t}))}},this.notifyWatch=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(n.watchList.length){var e=n.getFieldsValue(),r=n.getFieldsValue(!0);n.watchList.forEach((function(n){n(e,r,t)}))}},this.timeoutId=null,this.warningUnhooked=function(){0},this.updateStore=function(t){n.store=t},this.getFieldEntities=function(){return arguments.length>0&&void 0!==arguments[0]&&arguments[0]?n.fieldEntities.filter((function(t){return t.getNamePath().length})):n.fieldEntities},this.getFieldsMap=function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=new Au;return n.getFieldEntities(t).forEach((function(t){var n=t.getNamePath();e.set(n,t)})),e},this.getFieldEntitiesForNamePathList=function(t){if(!t)return n.getFieldEntities(!0);var e=n.getFieldsMap(!0);return t.map((function(t){var n=du(t);return e.get(n)||{INVALIDATE_NAME_PATH:du(t)}}))},this.getFieldsValue=function(t,e){var r,i,o;if(n.warningUnhooked(),!0===t||Array.isArray(t)?(r=t,i=e):t&&"object"===(0,it.Z)(t)&&(o=t.strict,i=t.filter),!0===r&&!i)return n.store;var a=n.getFieldEntitiesForNamePathList(Array.isArray(r)?r:null),c=[];return a.forEach((function(t){var e,n,a="INVALIDATE_NAME_PATH"in t?t.INVALIDATE_NAME_PATH:t.getNamePath();if(o){if(null===(n=t.isList)||void 0===n?void 0:n.call(t))return}else if(!r&&(null===(e=t.isListField)||void 0===e?void 0:e.call(t)))return;if(i){var l="getMeta"in t?t.getMeta():null;i(l)&&c.push(a)}else c.push(a)})),pu(n.store,c.map(du))},this.getFieldValue=function(t){n.warningUnhooked();var e=du(t);return(0,hu.Z)(n.store,e)},this.getFieldsError=function(t){return n.warningUnhooked(),n.getFieldEntitiesForNamePathList(t).map((function(e,n){return e&&!("INVALIDATE_NAME_PATH"in e)?{name:e.getNamePath(),errors:e.getErrors(),warnings:e.getWarnings()}:{name:du(t[n]),errors:[],warnings:[]}}))},this.getFieldError=function(t){n.warningUnhooked();var e=du(t);return n.getFieldsError([e])[0].errors},this.getFieldWarning=function(t){n.warningUnhooked();var e=du(t);return n.getFieldsError([e])[0].warnings},this.isFieldsTouched=function(){n.warningUnhooked();for(var t=arguments.length,e=new Array(t),r=0;r0&&void 0!==arguments[0]?arguments[0]:{},e=new Au,r=n.getFieldEntities(!0);r.forEach((function(t){var n=t.props.initialValue,r=t.getNamePath();if(void 0!==n){var i=e.get(r)||new Set;i.add({entity:t,value:n}),e.set(r,i)}}));var i;t.entities?i=t.entities:t.namePathList?(i=[],t.namePathList.forEach((function(t){var n,r=e.get(t);r&&(n=i).push.apply(n,(0,Y.Z)((0,Y.Z)(r).map((function(t){return t.entity}))))}))):i=r,i.forEach((function(r){if(void 0!==r.props.initialValue){var i=r.getNamePath();if(void 0!==n.getInitialValue(i))(0,bt.ZP)(!1,"Form already set 'initialValues' with path '".concat(i.join("."),"'. Field can not overwrite it."));else{var o=e.get(i);if(o&&o.size>1)(0,bt.ZP)(!1,"Multiple Field with path '".concat(i.join("."),"' set 'initialValue'. Can not decide which one to pick."));else if(o){var a=n.getFieldValue(i);t.skipExist&&void 0!==a||n.updateStore((0,ya.Z)(n.store,i,(0,Y.Z)(o)[0].value))}}}}))},this.resetFields=function(t){n.warningUnhooked();var e=n.store;if(!t)return n.updateStore((0,ya.T)(n.initialValues)),n.resetWithFieldInitialValue(),n.notifyObservers(e,null,{type:"reset"}),void n.notifyWatch();var r=t.map(du);r.forEach((function(t){var e=n.getInitialValue(t);n.updateStore((0,ya.Z)(n.store,t,e))})),n.resetWithFieldInitialValue({namePathList:r}),n.notifyObservers(e,r,{type:"reset"}),n.notifyWatch(r)},this.setFields=function(t){n.warningUnhooked();var e=n.store,r=[];t.forEach((function(t){var i=t.name,o=(0,rt.Z)(t,Pu),a=du(i);r.push(a),"value"in o&&n.updateStore((0,ya.Z)(n.store,a,o.value)),n.notifyObservers(e,[a],{type:"setField",data:t})})),n.notifyWatch(r)},this.getFields=function(){var t=n.getFieldEntities(!0).map((function(t){var e=t.getNamePath(),r=t.getMeta(),i=(0,lt.Z)((0,lt.Z)({},r),{},{name:e,value:n.getFieldValue(e)});return Object.defineProperty(i,"originRCField",{value:!0}),i}));return t},this.initEntityValue=function(t){var e=t.props.initialValue;if(void 0!==e){var r=t.getNamePath();void 0===(0,hu.Z)(n.store,r)&&n.updateStore((0,ya.Z)(n.store,r,e))}},this.isMergedPreserve=function(t){var e=void 0!==t?t:n.preserve;return null==e||e},this.registerField=function(t){n.fieldEntities.push(t);var e=t.getNamePath();if(n.notifyWatch([e]),void 0!==t.props.initialValue){var r=n.store;n.resetWithFieldInitialValue({entities:[t],skipExist:!0}),n.notifyObservers(r,[t.getNamePath()],{type:"valueUpdate",source:"internal"})}return function(r,i){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if(n.fieldEntities=n.fieldEntities.filter((function(e){return e!==t})),!n.isMergedPreserve(i)&&(!r||o.length>1)){var a=r?void 0:n.getInitialValue(e);if(e.length&&n.getFieldValue(e)!==a&&n.fieldEntities.every((function(t){return!gu(t.getNamePath(),e)}))){var c=n.store;n.updateStore((0,ya.Z)(c,e,a,!0)),n.notifyObservers(c,[e],{type:"remove"}),n.triggerDependenciesUpdate(c,e)}}n.notifyWatch([e])}},this.dispatch=function(t){switch(t.type){case"updateValue":var e=t.namePath,r=t.value;n.updateValue(e,r);break;case"validateField":var i=t.namePath,o=t.triggerName;n.validateFields([i],{triggerName:o})}},this.notifyObservers=function(t,e,r){if(n.subscribable){var i=(0,lt.Z)((0,lt.Z)({},r),{},{store:n.getFieldsValue(!0)});n.getFieldEntities().forEach((function(n){(0,n.onStoreChange)(t,e,i)}))}else n.forceRootUpdate()},this.triggerDependenciesUpdate=function(t,e){var r=n.getDependencyChildrenFields(e);return r.length&&n.validateFields(r),n.notifyObservers(t,r,{type:"dependenciesUpdate",relatedFields:[e].concat((0,Y.Z)(r))}),r},this.updateValue=function(t,e){var r=du(t),i=n.store;n.updateStore((0,ya.Z)(n.store,r,e)),n.notifyObservers(i,[r],{type:"valueUpdate",source:"internal"}),n.notifyWatch([r]);var o=n.triggerDependenciesUpdate(i,r),a=n.callbacks.onValuesChange;a&&a(pu(n.store,[r]),n.getFieldsValue());n.triggerOnFieldsChange([r].concat((0,Y.Z)(o)))},this.setFieldsValue=function(t){n.warningUnhooked();var e=n.store;if(t){var r=(0,ya.T)(n.store,t);n.updateStore(r)}n.notifyObservers(e,null,{type:"valueUpdate",source:"external"}),n.notifyWatch()},this.setFieldValue=function(t,e){n.setFields([{name:t,value:e}])},this.getDependencyChildrenFields=function(t){var e=new Set,r=[],i=new Au;n.getFieldEntities().forEach((function(t){(t.props.dependencies||[]).forEach((function(e){var n=du(e);i.update(n,(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new Set;return e.add(t),e}))}))}));return function t(n){(i.get(n)||new Set).forEach((function(n){if(!e.has(n)){e.add(n);var i=n.getNamePath();n.isFieldDirty()&&i.length&&(r.push(i),t(i))}}))}(t),r},this.triggerOnFieldsChange=function(t,e){var r=n.callbacks.onFieldsChange;if(r){var i=n.getFields();if(e){var o=new Au;e.forEach((function(t){var e=t.name,n=t.errors;o.set(e,n)})),i.forEach((function(t){t.errors=o.get(t.name)||t.errors}))}var a=i.filter((function(e){var n=e.name;return vu(t,n)}));a.length&&r(a,i)}},this.validateFields=function(t,e){var r,i;n.warningUnhooked(),Array.isArray(t)||"string"==typeof t||"string"==typeof e?(r=t,i=e):i=t;var o=!!r,a=o?r.map(du):[],c=[],l=String(Date.now()),u=new Set;n.getFieldEntities(!0).forEach((function(t){var e;if(o||a.push(t.getNamePath()),(null===(e=i)||void 0===e?void 0:e.recursive)&&o){var s=t.getNamePath();s.every((function(t,e){return r[e]===t||void 0===r[e]}))&&a.push(s)}if(t.props.rules&&t.props.rules.length){var f=t.getNamePath();if(u.add(f.join(l)),!o||vu(a,f)){var h=t.validateRules((0,lt.Z)({validateMessages:(0,lt.Z)((0,lt.Z)({},ru),n.validateMessages)},i));c.push(h.then((function(){return{name:f,errors:[],warnings:[]}})).catch((function(t){var e,n=[],r=[];return null===(e=t.forEach)||void 0===e||e.call(t,(function(t){var e=t.rule.warningOnly,i=t.errors;e?r.push.apply(r,(0,Y.Z)(i)):n.push.apply(n,(0,Y.Z)(i))})),n.length?Promise.reject({name:f,errors:n,warnings:r}):{name:f,errors:n,warnings:r}})))}}}));var s=function(t){var e=!1,n=t.length,r=[];return t.length?new Promise((function(i,o){t.forEach((function(t,a){t.catch((function(t){return e=!0,t})).then((function(t){n-=1,r[a]=t,n>0||(e&&o(r),i(r))}))}))})):Promise.resolve([])}(c);n.lastValidatePromise=s,s.catch((function(t){return t})).then((function(t){var e=t.map((function(t){return t.name}));n.notifyObservers(n.store,e,{type:"validateFinish"}),n.triggerOnFieldsChange(e,t)}));var f=s.then((function(){return n.lastValidatePromise===s?Promise.resolve(n.getFieldsValue(a)):Promise.reject([])})).catch((function(t){var e=t.filter((function(t){return t&&t.errors.length}));return Promise.reject({values:n.getFieldsValue(a),errorFields:e,outOfDate:n.lastValidatePromise!==s})}));f.catch((function(t){return t}));var h=a.filter((function(t){return u.has(t.join(l))}));return n.triggerOnFieldsChange(h),f},this.submit=function(){n.warningUnhooked(),n.validateFields().then((function(t){var e=n.callbacks.onFinish;if(e)try{e(t)}catch(r){console.error(r)}})).catch((function(t){var e=n.callbacks.onFinishFailed;e&&e(t)}))},this.forceRootUpdate=e}));var Du=function(t){var e=Z.useRef(),n=Z.useState({}),r=(0,rr.Z)(n,2)[1];if(!e.current)if(t)e.current=t;else{var i=new _u((function(){r({})}));e.current=i.getForm()}return[e.current]},Tu=Z.createContext({triggerFormChange:function(){},triggerFormFinish:function(){},registerForm:function(){},unregisterForm:function(){}}),Zu=Tu,Fu=["name","initialValues","fields","form","preserve","children","component","validateMessages","validateTrigger","onValuesChange","onFieldsChange","onFinish","onFinishFailed"],ju=function(t,e){var n=t.name,r=t.initialValues,i=t.fields,o=t.form,a=t.preserve,c=t.children,l=t.component,u=void 0===l?"form":l,s=t.validateMessages,f=t.validateTrigger,h=void 0===f?"onChange":f,d=t.onValuesChange,p=t.onFieldsChange,v=t.onFinish,g=t.onFinishFailed,m=(0,rt.Z)(t,Fu),y=Z.useContext(Zu),b=Du(o),x=(0,rr.Z)(b,1)[0],w=x.getInternalHooks(Ol),S=w.useSubscribe,k=w.setInitialValues,C=w.setCallbacks,O=w.setValidateMessages,E=w.setPreserve,M=w.destroyForm;Z.useImperativeHandle(e,(function(){return x})),Z.useEffect((function(){return y.registerForm(n,x),function(){y.unregisterForm(n)}}),[y,x,n]),O((0,lt.Z)((0,lt.Z)({},y.validateMessages),s)),C({onValuesChange:d,onFieldsChange:function(t){if(y.triggerFormChange(n,t),p){for(var e=arguments.length,r=new Array(e>1?e-1:0),i=1;i ".concat(t.iconCls),(e={flex:"none",marginInlineEnd:t.marginSM,fontSize:t.modalConfirmIconSize},(0,V.Z)(e,"+ ".concat(a,"-title"),{flex:1}),(0,V.Z)(e,"+ ".concat(a,"-title + ").concat(a,"-content"),{marginInlineStart:t.modalConfirmIconSize+t.marginSM}),e)),n)),(0,V.Z)(r,"".concat(a,"-btns"),(0,V.Z)({textAlign:"end",marginTop:t.marginSM},"".concat(t.antCls,"-btn + ").concat(t.antCls,"-btn"),{marginBottom:0,marginInlineStart:t.marginXS})),r)),(0,V.Z)(i,"".concat(a,"-error ").concat(a,"-body > ").concat(t.iconCls),{color:t.colorError}),(0,V.Z)(i,"".concat(a,"-warning ").concat(a,"-body > ").concat(t.iconCls,",\n ").concat(a,"-confirm ").concat(a,"-body > ").concat(t.iconCls),{color:t.colorWarning}),(0,V.Z)(i,"".concat(a,"-info ").concat(a,"-body > ").concat(t.iconCls),{color:t.colorInfo}),(0,V.Z)(i,"".concat(a,"-success ").concat(a,"-body > ").concat(t.iconCls),{color:t.colorSuccess}),i},Yu=function(t){var e=t.componentCls;return(0,V.Z)({},"".concat(e,"-root"),(0,V.Z)({},"".concat(e,"-wrap-rtl"),(0,V.Z)({direction:"rtl"},"".concat(e,"-confirm-body"),{direction:"rtl"})))},$u=function(t){var e,n,r,i=t.componentCls,o=t.antCls,a="".concat(i,"-confirm");return r={},(0,V.Z)(r,i,(e={},(0,V.Z)(e,"".concat(i,"-content"),{padding:0}),(0,V.Z)(e,"".concat(i,"-header"),{padding:t.modalHeaderPadding,borderBottom:"".concat(t.modalHeaderBorderWidth,"px ").concat(t.modalHeaderBorderStyle," ").concat(t.modalHeaderBorderColorSplit),marginBottom:0}),(0,V.Z)(e,"".concat(i,"-body"),{padding:t.modalBodyPadding}),(0,V.Z)(e,"".concat(i,"-footer"),{padding:"".concat(t.modalFooterPaddingVertical,"px ").concat(t.modalFooterPaddingHorizontal,"px"),borderTop:"".concat(t.modalFooterBorderWidth,"px ").concat(t.modalFooterBorderStyle," ").concat(t.modalFooterBorderColorSplit),borderRadius:"0 0 ".concat(t.borderRadiusLG,"px ").concat(t.borderRadiusLG,"px"),marginTop:0}),e)),(0,V.Z)(r,a,(n={},(0,V.Z)(n,"".concat(o,"-modal-body"),{padding:"".concat(2*t.padding,"px ").concat(2*t.padding,"px ").concat(t.paddingLG,"px")}),(0,V.Z)(n,"".concat(a,"-body"),(0,V.Z)({},"> ".concat(t.iconCls),(0,V.Z)({marginInlineEnd:t.margin},"+ ".concat(a,"-title + ").concat(a,"-content"),{marginInlineStart:t.modalConfirmIconSize+t.margin}))),(0,V.Z)(n,"".concat(a,"-btns"),{marginTop:t.marginLG}),n)),r},Ku=(0,se.Z)("Modal",(function(t){var e=t.padding,n=t.fontSizeHeading5,r=t.lineHeightHeading5,i=(0,nn.TS)(t,{modalBodyPadding:t.paddingLG,modalHeaderPadding:"".concat(e,"px ").concat(t.paddingLG,"px"),modalHeaderBorderWidth:t.lineWidth,modalHeaderBorderStyle:t.lineType,modalHeaderBorderColorSplit:t.colorSplit,modalHeaderHeight:r*n+2*e,modalFooterBorderColorSplit:t.colorSplit,modalFooterBorderStyle:t.lineType,modalFooterPaddingVertical:t.paddingXS,modalFooterPaddingHorizontal:t.padding,modalFooterBorderWidth:t.lineWidth,modalIconHoverColor:t.colorIconHover,modalCloseIconColor:t.colorIcon,modalCloseBtnSize:t.fontSize*t.lineHeight,modalConfirmIconSize:t.fontSize*t.lineHeight});return[Xu(i),qu(i),Yu(i),Gu(i),t.wireframe&&$u(i),so(i,"zoom")]}),(function(t){return{footerBg:"transparent",headerBg:t.colorBgElevated,titleLineHeight:t.lineHeightHeading5,titleFontSize:t.fontSizeHeading5,contentBg:t.colorBgElevated,titleColor:t.colorTextHeading}})),Ju=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(t);i3&&void 0!==arguments[3]?arguments[3]:Z.createElement(tr,null),i=function(t,e,n){return"boolean"==typeof t?t:void 0===e?!!n:!1!==e&&null!==e}(t,e,arguments.length>4&&void 0!==arguments[4]&&arguments[4]);if(!i)return[!1,null];var o="boolean"==typeof e||null==e?r:e;return[!0,n?n(o):o]}(m,g,(function(t){return Uu(E,t)}),Z.createElement(tr,{className:"".concat(E,"-close-icon")}),!0),I=(0,G.Z)(j,2),R=I[0],L=I[1];return _(Z.createElement(Le,null,Z.createElement(zu,{status:!0,override:!0},Z.createElement(wl,Object.assign({width:k},O,{getContainer:void 0===v?i:v,prefixCls:E,rootClassName:K()(D,f),wrapClassName:T,footer:F,visible:null!=h?h:w,mousePosition:null!==(n=O.mousePosition)&&void 0!==n?n:Vu,onClose:l,closable:R,closeIcon:L,focusTriggerAfterClose:b,transitionName:(0,oe.m)(M,"zoom",t.transitionName),maskTransitionName:(0,oe.m)(M,"fade",t.maskTransitionName),className:K()(D,s,null==c?void 0:c.className),style:Object.assign(Object.assign({},null==c?void 0:c.style),x)})))))};function ts(t){var e=t.icon,n=t.onCancel,r=t.onOk,i=t.close,o=t.onConfirm,a=t.isSilent,c=t.okText,l=t.okButtonProps,u=t.cancelText,s=t.cancelButtonProps,f=t.confirmPrefixCls,h=t.rootPrefixCls,d=t.type,p=t.okCancel,v=t.footer,g=t.locale,m=e;if(!e&&null!==e)switch(d){case"info":m=Z.createElement(qa,null);break;case"success":m=Z.createElement(Vn,null);break;case"error":m=Z.createElement(Kn,null);break;default:m=Z.createElement(Va,null)}var y=t.okType||"primary",b=null!=p?p:"confirm"===d,x=null!==t.autoFocusButton&&(t.autoFocusButton||"ok"),w=Ut("Modal"),S=(0,G.Z)(w,1)[0],k=g||S,C=b&&Z.createElement(ll,{isSilent:a,actionFn:n,close:function(){null==i||i.apply(void 0,arguments),null==o||o(!1)},autoFocus:"cancel"===x,buttonProps:s,prefixCls:"".concat(h,"-btn")},u||(null==k?void 0:k.cancelText));return Z.createElement("div",{className:"".concat(f,"-body-wrapper")},Z.createElement("div",{className:"".concat(f,"-body")},m,void 0===t.title?null:Z.createElement("span",{className:"".concat(f,"-title")},t.title),Z.createElement("div",{className:"".concat(f,"-content")},t.content)),void 0===v?Z.createElement("div",{className:"".concat(f,"-btns")},C,Z.createElement(ll,{isSilent:a,type:y,actionFn:r,close:function(){null==i||i.apply(void 0,arguments),null==o||o(!0)},autoFocus:"ok"===x,buttonProps:l,prefixCls:"".concat(h,"-btn")},c||(b?null==k?void 0:k.okText:null==k?void 0:k.justOkText))):v)}var es=function(t){var e=t.close,n=t.zIndex,r=t.afterClose,i=(t.visible,t.open),o=t.keyboard,a=t.centered,c=t.getContainer,l=t.maskStyle,u=t.direction,s=t.prefixCls,f=t.wrapClassName,h=t.rootPrefixCls,d=t.iconPrefixCls,p=t.theme,v=t.bodyStyle,g=t.closable,m=void 0!==g&&g,y=t.closeIcon,b=t.modalRender,x=t.focusTriggerAfterClose;var w="".concat(s,"-confirm"),S=t.width||416,k=t.style||{},C=void 0===t.mask||t.mask,O=void 0!==t.maskClosable&&t.maskClosable,E=K()(w,"".concat(w,"-").concat(t.type),(0,V.Z)({},"".concat(w,"-rtl"),"rtl"===u),t.className);return Z.createElement(Ua,{prefixCls:h,iconPrefixCls:d,direction:u,theme:p},Z.createElement(Qu,{prefixCls:s,className:E,wrapClassName:K()((0,V.Z)({},"".concat(w,"-centered"),!!t.centered),f),onCancel:function(){return null==e?void 0:e({triggerCancel:!0})},open:i,title:"",footer:null,transitionName:(0,oe.m)(h,"zoom",t.transitionName),maskTransitionName:(0,oe.m)(h,"fade",t.maskTransitionName),mask:C,maskClosable:O,maskStyle:l,style:k,bodyStyle:v,width:S,zIndex:n,afterClose:r,keyboard:o,centered:a,getContainer:c,closable:m,closeIcon:y,modalRender:b,focusTriggerAfterClose:x},Z.createElement(ts,Object.assign({},t,{confirmPrefixCls:w}))))},ns=[],rs=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(t);i=1},subscribe:function(n){return t.size||this.register(),e+=1,t.set(e,n),n(r),e},unsubscribe:function(e){t.delete(e),t.size||this.unregister()},unregister:function(){var e=this;Object.keys(n).forEach((function(t){var r=n[t],i=e.matchHandlers[r];null==i||i.mql.removeListener(null==i?void 0:i.listener)})),t.clear()},register:function(){var t=this;Object.keys(n).forEach((function(e){var i=n[e],o=function(n){var i=n.matches;t.dispatch(Object.assign(Object.assign({},r),(0,V.Z)({},e,i)))},a=window.matchMedia(i);a.addListener(o),t.matchHandlers[i]={mql:a,listener:o},o(a)}))},responsiveMap:n}}),[e])}var Vs=function(){var t=(0,Te.Z)(),e=(0,G.Z)(t,2)[1],n=new to.C(e.colorBgBase).toHsl().l<.5?{opacity:.65}:{};return Z.createElement("svg",{style:n,width:"184",height:"152",viewBox:"0 0 184 152",xmlns:"http://www.w3.org/2000/svg"},Z.createElement("g",{fill:"none",fillRule:"evenodd"},Z.createElement("g",{transform:"translate(24 31.67)"},Z.createElement("ellipse",{fillOpacity:".8",fill:"#F5F5F7",cx:"67.797",cy:"106.89",rx:"67.797",ry:"12.668"}),Z.createElement("path",{d:"M122.034 69.674L98.109 40.229c-1.148-1.386-2.826-2.225-4.593-2.225h-51.44c-1.766 0-3.444.839-4.592 2.225L13.56 69.674v15.383h108.475V69.674z",fill:"#AEB8C2"}),Z.createElement("path",{d:"M101.537 86.214L80.63 61.102c-1.001-1.207-2.507-1.867-4.048-1.867H31.724c-1.54 0-3.047.66-4.048 1.867L6.769 86.214v13.792h94.768V86.214z",fill:"url(#linearGradient-1)",transform:"translate(13.56)"}),Z.createElement("path",{d:"M33.83 0h67.933a4 4 0 0 1 4 4v93.344a4 4 0 0 1-4 4H33.83a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4z",fill:"#F5F5F7"}),Z.createElement("path",{d:"M42.678 9.953h50.237a2 2 0 0 1 2 2V36.91a2 2 0 0 1-2 2H42.678a2 2 0 0 1-2-2V11.953a2 2 0 0 1 2-2zM42.94 49.767h49.713a2.262 2.262 0 1 1 0 4.524H42.94a2.262 2.262 0 0 1 0-4.524zM42.94 61.53h49.713a2.262 2.262 0 1 1 0 4.525H42.94a2.262 2.262 0 0 1 0-4.525zM121.813 105.032c-.775 3.071-3.497 5.36-6.735 5.36H20.515c-3.238 0-5.96-2.29-6.734-5.36a7.309 7.309 0 0 1-.222-1.79V69.675h26.318c2.907 0 5.25 2.448 5.25 5.42v.04c0 2.971 2.37 5.37 5.277 5.37h34.785c2.907 0 5.277-2.421 5.277-5.393V75.1c0-2.972 2.343-5.426 5.25-5.426h26.318v33.569c0 .617-.077 1.216-.221 1.789z",fill:"#DCE0E6"})),Z.createElement("path",{d:"M149.121 33.292l-6.83 2.65a1 1 0 0 1-1.317-1.23l1.937-6.207c-2.589-2.944-4.109-6.534-4.109-10.408C138.802 8.102 148.92 0 161.402 0 173.881 0 184 8.102 184 18.097c0 9.995-10.118 18.097-22.599 18.097-4.528 0-8.744-1.066-12.28-2.902z",fill:"#DCE0E6"}),Z.createElement("g",{transform:"translate(149.65 15.383)",fill:"#FFF"},Z.createElement("ellipse",{cx:"20.654",cy:"3.167",rx:"2.849",ry:"2.815"}),Z.createElement("path",{d:"M5.698 5.63H0L2.898.704zM9.259.704h4.985V5.63H9.259z"}))))};var Gs=function(){var t=(0,Te.Z)(),e=(0,G.Z)(t,2)[1],n=e.colorFill,r=e.colorFillTertiary,i=e.colorFillQuaternary,o=e.colorBgContainer,a=(0,Z.useMemo)((function(){return{borderColor:new to.C(n).onBackground(o).toHexShortString(),shadowColor:new to.C(r).onBackground(o).toHexShortString(),contentColor:new to.C(i).onBackground(o).toHexShortString()}}),[n,r,i,o]),c=a.borderColor,l=a.shadowColor,u=a.contentColor;return Z.createElement("svg",{width:"64",height:"41",viewBox:"0 0 64 41",xmlns:"http://www.w3.org/2000/svg"},Z.createElement("g",{transform:"translate(0 1)",fill:"none",fillRule:"evenodd"},Z.createElement("ellipse",{fill:l,cx:"32",cy:"33",rx:"32",ry:"7"}),Z.createElement("g",{fillRule:"nonzero",stroke:c},Z.createElement("path",{d:"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z"}),Z.createElement("path",{d:"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z",fill:u}))))},Xs=function(t){var e,n,r=t.componentCls,i=t.margin,o=t.marginXS,a=t.marginXL,c=t.fontSize,l=t.lineHeight;return(0,V.Z)({},r,(n={marginInline:o,fontSize:c,lineHeight:l,textAlign:"center"},(0,V.Z)(n,"".concat(r,"-image"),{height:t.emptyImgHeight,marginBottom:o,opacity:t.opacityImage,img:{height:"100%"},svg:{maxWidth:"100%",height:"100%",margin:"auto"}}),(0,V.Z)(n,"".concat(r,"-description"),{color:t.colorText}),(0,V.Z)(n,"".concat(r,"-footer"),{marginTop:i}),(0,V.Z)(n,"&-normal",(e={marginBlock:a,color:t.colorTextDisabled},(0,V.Z)(e,"".concat(r,"-description"),{color:t.colorTextDisabled}),(0,V.Z)(e,"".concat(r,"-image"),{height:t.emptyImgHeightMD}),e)),(0,V.Z)(n,"&-small",(0,V.Z)({marginBlock:o,color:t.colorTextDisabled},"".concat(r,"-image"),{height:t.emptyImgHeightSM})),n))},qs=(0,se.Z)("Empty",(function(t){var e=t.componentCls,n=t.controlHeightLG,r=(0,nn.TS)(t,{emptyImgCls:"".concat(e,"-img"),emptyImgHeight:2.5*n,emptyImgHeightMD:n,emptyImgHeightSM:.875*n});return[Xs(r)]})),Ys=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(t);i=0;o--)0===o?(i["".concat(n).concat(e,"-").concat(o)]={display:"none"},i["".concat(n,"-push-").concat(o)]={insetInlineStart:"auto"},i["".concat(n,"-pull-").concat(o)]={insetInlineEnd:"auto"},i["".concat(n).concat(e,"-push-").concat(o)]={insetInlineStart:"auto"},i["".concat(n).concat(e,"-pull-").concat(o)]={insetInlineEnd:"auto"},i["".concat(n).concat(e,"-offset-").concat(o)]={marginInlineStart:0},i["".concat(n).concat(e,"-order-").concat(o)]={order:0}):(i["".concat(n).concat(e,"-").concat(o)]={display:"block",flex:"0 0 ".concat(o/r*100,"%"),maxWidth:"".concat(o/r*100,"%")},i["".concat(n).concat(e,"-push-").concat(o)]={insetInlineStart:"".concat(o/r*100,"%")},i["".concat(n).concat(e,"-pull-").concat(o)]={insetInlineEnd:"".concat(o/r*100,"%")},i["".concat(n).concat(e,"-offset-").concat(o)]={marginInlineStart:"".concat(o/r*100,"%")},i["".concat(n).concat(e,"-order-").concat(o)]={order:o});return i}(t,e)},cf=(0,se.Z)("Grid",(function(t){return[rf(t)]})),lf=(0,se.Z)("Grid",(function(t){var e=(0,nn.TS)(t,{gridColumns:24}),n={"-sm":e.screenSMMin,"-md":e.screenMDMin,"-lg":e.screenLGMin,"-xl":e.screenXLMin,"-xxl":e.screenXXLMin};return[of(e),af(e,""),af(e,"-xs"),Object.keys(n).map((function(t){return function(t,e,n){return(0,V.Z)({},"@media (min-width: ".concat(e,"px)"),Object.assign({},af(t,n)))}(e,n[t],t)})).reduce((function(t,e){return Object.assign(Object.assign({},t),e)}),{})]})),uf=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(t);i0?I[0]/-2:void 0,B=null!=I[1]&&I[1]>0?I[1]/-2:void 0;if(N&&(L.marginLeft=N,L.marginRight=N),E){var z=(0,G.Z)(I,2);L.rowGap=z[1]}else B&&(L.marginTop=B,L.marginBottom=B);var U=(0,G.Z)(I,2),H=U[0],W=U[1],X=Z.useMemo((function(){return{gutter:[H,W],wrap:f,supportFlexGap:E}}),[H,W,f,E]);return F(Z.createElement(nf.Provider,{value:X},Z.createElement("div",Object.assign({},h,{className:R,style:Object.assign(Object.assign({},L),c),ref:e}),l)))}));var hf=ff;var df=function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],e=(0,Z.useRef)({}),n=re(),r=Ws();return(0,vr.Z)((function(){var i=r.subscribe((function(r){e.current=r,t&&n()}));return function(){return r.unsubscribe(i)}}),[]),e.current},pf={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M272.9 512l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L186.8 492.3a31.99 31.99 0 000 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H532c6.7 0 10.4-7.7 6.3-12.9L272.9 512zm304 0l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L490.8 492.3a31.99 31.99 0 000 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H836c6.7 0 10.4-7.7 6.3-12.9L576.9 512z"}}]},name:"double-left",theme:"outlined"},vf=function(t,e){return Z.createElement(Wt.Z,(0,J.Z)({},t,{ref:e,icon:pf}))};var gf=Z.forwardRef(vf),mf={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M533.2 492.3L277.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H188c-6.7 0-10.4 7.7-6.3 12.9L447.1 512 181.7 851.1A7.98 7.98 0 00188 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5zm304 0L581.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H492c-6.7 0-10.4 7.7-6.3 12.9L751.1 512 485.7 851.1A7.98 7.98 0 00492 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5z"}}]},name:"double-right",theme:"outlined"},yf=function(t,e){return Z.createElement(Wt.Z,(0,J.Z)({},t,{ref:e,icon:mf}))};var bf=Z.forwardRef(yf),xf={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z"}}]},name:"left",theme:"outlined"},wf=function(t,e){return Z.createElement(Wt.Z,(0,J.Z)({},t,{ref:e,icon:xf}))};var Sf=Z.forwardRef(wf),kf=n(47462),Cf={ZERO:48,NINE:57,NUMPAD_ZERO:96,NUMPAD_NINE:105,BACKSPACE:8,DELETE:46,ENTER:13,ARROW_UP:38,ARROW_DOWN:40},Of=function(t){(0,et.Z)(n,t);var e=(0,nt.Z)(n);function n(){var t;(0,Q.Z)(this,n);for(var r=arguments.length,i=new Array(r),o=0;o=0||e.relatedTarget.className.indexOf("".concat(o,"-item"))>=0)||i(t.getValidValue()))},t.go=function(e){""!==t.state.goInputText&&(e.keyCode!==Cf.ENTER&&"click"!==e.type||(t.setState({goInputText:""}),t.props.quickGo(t.getValidValue())))},t}return(0,tt.Z)(n,[{key:"getPageSizeOptions",value:function(){var t=this.props,e=t.pageSize,n=t.pageSizeOptions;return n.some((function(t){return t.toString()===e.toString()}))?n:n.concat([e.toString()]).sort((function(t,e){return(Number.isNaN(Number(t))?0:Number(t))-(Number.isNaN(Number(e))?0:Number(e))}))}},{key:"render",value:function(){var t=this,e=this.props,n=e.pageSize,r=e.locale,i=e.rootPrefixCls,o=e.changeSize,a=e.quickGo,c=e.goButton,l=e.selectComponentClass,u=e.buildOptionText,s=e.selectPrefixCls,f=e.disabled,h=this.state.goInputText,d="".concat(i,"-options"),p=l,v=null,g=null,m=null;if(!o&&!a)return null;var y=this.getPageSizeOptions();if(o&&p){var b=y.map((function(e,n){return Z.createElement(p.Option,{key:n,value:e.toString()},(u||t.buildOptionText)(e))}));v=Z.createElement(p,{disabled:f,prefixCls:s,showSearch:!1,className:"".concat(d,"-size-changer"),optionLabelProp:"children",popupMatchSelectWidth:!1,value:(n||y[0]).toString(),onChange:this.changeSize,getPopupContainer:function(t){return t.parentNode},"aria-label":r.page_size,defaultOpen:!1},b)}return a&&(c&&(m="boolean"==typeof c?Z.createElement("button",{type:"button",onClick:this.go,onKeyUp:this.go,disabled:f,className:"".concat(d,"-quick-jumper-button")},r.jump_to_confirm):Z.createElement("span",{onClick:this.go,onKeyUp:this.go},c)),g=Z.createElement("div",{className:"".concat(d,"-quick-jumper")},r.jump_to,Z.createElement("input",{disabled:f,type:"text",value:h,onChange:this.handleChange,onKeyUp:this.go,onBlur:this.handleBlur,"aria-label":r.page}),r.page,m)),Z.createElement("li",{className:"".concat(d)},v,g)}}]),n}(Z.Component);Of.defaultProps={pageSizeOptions:["10","20","50","100"]};var Ef=Of,Mf=function(t){var e,n=t.rootPrefixCls,r=t.page,i=t.active,o=t.className,a=t.showTitle,c=t.onClick,l=t.onKeyPress,u=t.itemRender,s="".concat(n,"-item"),f=K()(s,"".concat(s,"-").concat(r),(e={},(0,B.Z)(e,"".concat(s,"-active"),i),(0,B.Z)(e,"".concat(s,"-disabled"),!r),(0,B.Z)(e,t.className,o),e));return Z.createElement("li",{title:a?r.toString():null,className:f,onClick:function(){c(r)},onKeyPress:function(t){l(t,c,r)},tabIndex:0},u(r,"page",Z.createElement("a",{rel:"nofollow"},r)))};function Af(){}function Pf(t){var e=Number(t);return"number"==typeof e&&!Number.isNaN(e)&&isFinite(e)&&Math.floor(e)===e}function _f(t,e,n){var r=void 0===t?e.pageSize:t;return Math.floor((n.total-1)/r)+1}var Df=function(t){(0,et.Z)(n,t);var e=(0,nt.Z)(n);function n(t){var r;(0,Q.Z)(this,n),(r=e.call(this,t)).paginationNode=Z.createRef(),r.getJumpPrevPage=function(){return Math.max(1,r.state.current-(r.props.showLessItems?3:5))},r.getJumpNextPage=function(){return Math.min(_f(void 0,r.state,r.props),r.state.current+(r.props.showLessItems?3:5))},r.getItemIcon=function(t,e){var n=r.props.prefixCls,i=t||Z.createElement("button",{type:"button","aria-label":e,className:"".concat(n,"-item-link")});return"function"==typeof t&&(i=Z.createElement(t,(0,lt.Z)({},r.props))),i},r.isValid=function(t){var e=r.props.total;return Pf(t)&&t!==r.state.current&&Pf(e)&&e>0},r.shouldDisplayQuickJumper=function(){var t=r.props,e=t.showQuickJumper;return!(t.total<=r.state.pageSize)&&e},r.handleKeyDown=function(t){t.keyCode!==Cf.ARROW_UP&&t.keyCode!==Cf.ARROW_DOWN||t.preventDefault()},r.handleKeyUp=function(t){var e=r.getValidValue(t);e!==r.state.currentInputValue&&r.setState({currentInputValue:e}),t.keyCode===Cf.ENTER?r.handleChange(e):t.keyCode===Cf.ARROW_UP?r.handleChange(e-1):t.keyCode===Cf.ARROW_DOWN&&r.handleChange(e+1)},r.handleBlur=function(t){var e=r.getValidValue(t);r.handleChange(e)},r.changePageSize=function(t){var e=r.state.current,n=_f(t,r.state,r.props);e=e>n?n:e,0===n&&(e=r.state.current),"number"==typeof t&&("pageSize"in r.props||r.setState({pageSize:t}),"current"in r.props||r.setState({current:e,currentInputValue:e})),r.props.onShowSizeChange(e,t),"onChange"in r.props&&r.props.onChange&&r.props.onChange(e,t)},r.handleChange=function(t){var e=r.props,n=e.disabled,i=e.onChange,o=r.state,a=o.pageSize,c=o.current,l=o.currentInputValue;if(r.isValid(t)&&!n){var u=_f(void 0,r.state,r.props),s=t;return t>u?s=u:t<1&&(s=1),"current"in r.props||r.setState({current:s}),s!==l&&r.setState({currentInputValue:s}),i(s,a),s}return c},r.prev=function(){r.hasPrev()&&r.handleChange(r.state.current-1)},r.next=function(){r.hasNext()&&r.handleChange(r.state.current+1)},r.jumpPrev=function(){r.handleChange(r.getJumpPrevPage())},r.jumpNext=function(){r.handleChange(r.getJumpNextPage())},r.hasPrev=function(){return r.state.current>1},r.hasNext=function(){return r.state.current<_f(void 0,r.state,r.props)},r.runIfEnter=function(t,e){if("Enter"===t.key||13===t.charCode){for(var n=arguments.length,r=new Array(n>2?n-2:0),i=2;i=n?n:Number(e)}},{key:"getShowSizeChanger",value:function(){var t=this.props,e=t.showSizeChanger,n=t.total,r=t.totalBoundaryShowSizeChanger;return void 0!==e?e:n>r}},{key:"render",value:function(){var t=this.props,e=t.prefixCls,n=t.className,r=t.style,i=t.disabled,o=t.hideOnSinglePage,a=t.total,c=t.locale,l=t.showQuickJumper,u=t.showLessItems,s=t.showTitle,f=t.showTotal,h=t.simple,d=t.itemRender,p=t.showPrevNextJumpers,v=t.jumpPrevIcon,g=t.jumpNextIcon,m=t.selectComponentClass,y=t.selectPrefixCls,b=t.pageSizeOptions,x=this.state,w=x.current,S=x.pageSize,k=x.currentInputValue;if(!0===o&&a<=S)return null;var C=_f(void 0,this.state,this.props),O=[],E=null,M=null,A=null,P=null,_=null,D=l&&l.goButton,T=u?1:2,F=w-1>0?w-1:0,j=w+1a?a:w*S]));if(h)return D&&(_="boolean"==typeof D?Z.createElement("button",{type:"button",onClick:this.handleGoTO,onKeyUp:this.handleGoTO},c.jump_to_confirm):Z.createElement("span",{onClick:this.handleGoTO,onKeyUp:this.handleGoTO},D),_=Z.createElement("li",{title:s?"".concat(c.jump_to).concat(w,"/").concat(C):null,className:"".concat(e,"-simple-pager")},_)),Z.createElement("ul",(0,J.Z)({className:K()(e,"".concat(e,"-simple"),(0,B.Z)({},"".concat(e,"-disabled"),i),n),style:r,ref:this.paginationNode},I),R,Z.createElement("li",{title:s?c.prev_page:null,onClick:this.prev,tabIndex:this.hasPrev()?0:null,onKeyPress:this.runIfEnterPrev,className:K()("".concat(e,"-prev"),(0,B.Z)({},"".concat(e,"-disabled"),!this.hasPrev())),"aria-disabled":!this.hasPrev()},this.renderPrev(F)),Z.createElement("li",{title:s?"".concat(w,"/").concat(C):null,className:"".concat(e,"-simple-pager")},Z.createElement("input",{type:"text",value:k,disabled:i,onKeyDown:this.handleKeyDown,onKeyUp:this.handleKeyUp,onChange:this.handleKeyUp,onBlur:this.handleBlur,size:3}),Z.createElement("span",{className:"".concat(e,"-slash")},"/"),C),Z.createElement("li",{title:s?c.next_page:null,onClick:this.next,tabIndex:this.hasPrev()?0:null,onKeyPress:this.runIfEnterNext,className:K()("".concat(e,"-next"),(0,B.Z)({},"".concat(e,"-disabled"),!this.hasNext())),"aria-disabled":!this.hasNext()},this.renderNext(j)),_);if(C<=3+2*T){var L={locale:c,rootPrefixCls:e,onClick:this.handleChange,onKeyPress:this.runIfEnter,showTitle:s,itemRender:d};C||O.push(Z.createElement(Mf,(0,J.Z)({},L,{key:"noPager",page:1,className:"".concat(e,"-item-disabled")})));for(var N=1;N<=C;N+=1){var z=w===N;O.push(Z.createElement(Mf,(0,J.Z)({},L,{key:N,page:N,active:z})))}}else{var U=u?c.prev_3:c.prev_5,H=u?c.next_3:c.next_5;p&&(E=Z.createElement("li",{title:s?U:null,key:"prev",onClick:this.jumpPrev,tabIndex:0,onKeyPress:this.runIfEnterJumpPrev,className:K()("".concat(e,"-jump-prev"),(0,B.Z)({},"".concat(e,"-jump-prev-custom-icon"),!!v))},d(this.getJumpPrevPage(),"jump-prev",this.getItemIcon(v,"prev page"))),M=Z.createElement("li",{title:s?H:null,key:"next",tabIndex:0,onClick:this.jumpNext,onKeyPress:this.runIfEnterJumpNext,className:K()("".concat(e,"-jump-next"),(0,B.Z)({},"".concat(e,"-jump-next-custom-icon"),!!g))},d(this.getJumpNextPage(),"jump-next",this.getItemIcon(g,"next page")))),P=Z.createElement(Mf,{locale:c,last:!0,rootPrefixCls:e,onClick:this.handleChange,onKeyPress:this.runIfEnter,key:C,page:C,active:!1,showTitle:s,itemRender:d}),A=Z.createElement(Mf,{locale:c,rootPrefixCls:e,onClick:this.handleChange,onKeyPress:this.runIfEnter,key:1,page:1,active:!1,showTitle:s,itemRender:d});var W=Math.max(1,w-T),V=Math.min(w+T,C);w-1<=T&&(V=1+2*T),C-w<=T&&(W=C-2*T);for(var G=W;G<=V;G+=1){var X=w===G;O.push(Z.createElement(Mf,{locale:c,rootPrefixCls:e,onClick:this.handleChange,onKeyPress:this.runIfEnter,key:G,page:G,active:X,showTitle:s,itemRender:d}))}w-1>=2*T&&3!==w&&(O[0]=(0,Z.cloneElement)(O[0],{className:"".concat(e,"-item-after-jump-prev")}),O.unshift(E)),C-w>=2*T&&w!==C-2&&(O[O.length-1]=(0,Z.cloneElement)(O[O.length-1],{className:"".concat(e,"-item-before-jump-next")}),O.push(M)),1!==W&&O.unshift(A),V!==C&&O.push(P)}var q=!this.hasPrev()||!C,Y=!this.hasNext()||!C;return Z.createElement("ul",(0,J.Z)({className:K()(e,n,(0,B.Z)({},"".concat(e,"-disabled"),i)),style:r,ref:this.paginationNode},I),R,Z.createElement("li",{title:s?c.prev_page:null,onClick:this.prev,tabIndex:q?null:0,onKeyPress:this.runIfEnterPrev,className:K()("".concat(e,"-prev"),(0,B.Z)({},"".concat(e,"-disabled"),q)),"aria-disabled":q},this.renderPrev(F)),O,Z.createElement("li",{title:s?c.next_page:null,onClick:this.next,tabIndex:Y?null:0,onKeyPress:this.runIfEnterNext,className:K()("".concat(e,"-next"),(0,B.Z)({},"".concat(e,"-disabled"),Y)),"aria-disabled":Y},this.renderNext(j)),Z.createElement(Ef,{disabled:i,locale:c,rootPrefixCls:e,selectComponentClass:m,selectPrefixCls:y,changeSize:this.getShowSizeChanger()?this.changePageSize:null,current:w,pageSize:S,pageSizeOptions:b,quickGo:this.shouldDisplayQuickJumper()?this.handleChange:null,goButton:D}))}}],[{key:"getDerivedStateFromProps",value:function(t,e){var n={};if("current"in t&&(n.current=t.current,t.current!==e.current&&(n.currentInputValue=n.current)),"pageSize"in t&&t.pageSize!==e.pageSize){var r=e.current,i=_f(t.pageSize,e,t);r=r>i?i:r,"current"in t||(n.current=r,n.currentInputValue=r),n.pageSize=t.pageSize}return n}}]),n}(Z.Component);Df.defaultProps={defaultCurrent:1,total:0,defaultPageSize:10,onChange:Af,className:"",selectPrefixCls:"rc-select",prefixCls:"rc-pagination",selectComponentClass:null,hideOnSinglePage:!1,showPrevNextJumpers:!0,showQuickJumper:!1,showLessItems:!1,showTitle:!0,onShowSizeChange:Af,locale:{items_per_page:"条/页",jump_to:"跳至",jump_to_confirm:"确定",page:"页",prev_page:"上一页",next_page:"下一页",prev_5:"向前 5 页",next_5:"向后 5 页",prev_3:"向前 3 页",next_3:"向后 3 页",page_size:"页码"},style:{},itemRender:function(t,e,n){return n},totalBoundaryShowSizeChanger:50};var Tf=Df,Zf=Z.createContext(null);function Ff(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:250,e=Z.useRef(null),n=Z.useRef(null);return Z.useEffect((function(){return function(){window.clearTimeout(n.current)}}),[]),[function(){return e.current},function(r){(r||null===e.current)&&(e.current=r),window.clearTimeout(n.current),n.current=window.setTimeout((function(){e.current=null}),t)}]}var jf=["prefixCls","invalidate","item","renderItem","responsive","responsiveDisabled","registerSize","itemKey","className","style","children","display","order","component"],If=void 0;function Rf(t,e){var n=t.prefixCls,r=t.invalidate,i=t.item,o=t.renderItem,a=t.responsive,c=t.responsiveDisabled,l=t.registerSize,u=t.itemKey,s=t.className,f=t.style,h=t.children,d=t.display,p=t.order,v=t.component,g=void 0===v?"div":v,m=(0,rt.Z)(t,jf),y=a&&!d;function b(t){l(u,t)}Z.useEffect((function(){return function(){b(null)}}),[]);var x,w=o&&i!==If?o(i):h;r||(x={opacity:y?0:1,height:y?0:If,overflowY:y?"hidden":If,order:a?p:If,pointerEvents:y?"none":If,position:y?"absolute":If});var S={};y&&(S["aria-hidden"]=!0);var k=Z.createElement(g,(0,J.Z)({className:K()(!r&&n,s),style:(0,lt.Z)((0,lt.Z)({},x),f)},S,m,{ref:e}),w);return a&&(k=Z.createElement(ii,{onResize:function(t){b(t.offsetWidth)},disabled:c},k)),k}var Lf=Z.forwardRef(Rf);Lf.displayName="Item";var Nf=Lf;function Bf(){var t=Z.useRef(null);return function(e){t.current||(t.current=[],function(t){if("undefined"==typeof MessageChannel)(0,pe.Z)(t);else{var e=new MessageChannel;e.port1.onmessage=function(){return t()},e.port2.postMessage(void 0)}}((function(){(0,Pt.unstable_batchedUpdates)((function(){t.current.forEach((function(t){t()})),t.current=null}))}))),t.current.push(e)}}function zf(t,e){var n=Z.useState(e),r=(0,rr.Z)(n,2),i=r[0],o=r[1];return[i,(0,de.Z)((function(e){t((function(){o(e)}))}))]}var Uf=Z.createContext(null),Hf=["component"],Wf=["className"],Vf=["className"],Gf=function(t,e){var n=Z.useContext(Uf);if(!n){var r=t.component,i=void 0===r?"div":r,o=(0,rt.Z)(t,Hf);return Z.createElement(i,(0,J.Z)({},o,{ref:e}))}var a=n.className,c=(0,rt.Z)(n,Wf),l=t.className,u=(0,rt.Z)(t,Vf);return Z.createElement(Uf.Provider,{value:null},Z.createElement(Nf,(0,J.Z)({ref:e,className:K()(a,l)},c,u)))},Xf=Z.forwardRef(Gf);Xf.displayName="RawItem";var qf=Xf,Yf=["prefixCls","data","renderItem","renderRawItem","itemKey","itemWidth","ssr","style","className","maxCount","renderRest","renderRawRest","suffix","component","itemComponent","onVisibleChange"],$f="responsive",Kf="invalidate";function Jf(t){return"+ ".concat(t.length," ...")}function Qf(t,e){var n=t.prefixCls,r=void 0===n?"rc-overflow":n,i=t.data,o=void 0===i?[]:i,a=t.renderItem,c=t.renderRawItem,l=t.itemKey,u=t.itemWidth,s=void 0===u?10:u,f=t.ssr,h=t.style,d=t.className,p=t.maxCount,v=t.renderRest,g=t.renderRawRest,m=t.suffix,y=t.component,b=void 0===y?"div":y,x=t.itemComponent,w=t.onVisibleChange,S=(0,rt.Z)(t,Yf),k="full"===f,C=Bf(),O=zf(C,null),E=(0,rr.Z)(O,2),M=E[0],A=E[1],P=M||0,_=zf(C,new Map),D=(0,rr.Z)(_,2),T=D[0],F=D[1],j=zf(C,0),I=(0,rr.Z)(j,2),R=I[0],L=I[1],N=zf(C,0),B=(0,rr.Z)(N,2),z=B[0],U=B[1],H=zf(C,0),W=(0,rr.Z)(H,2),V=W[0],G=W[1],X=(0,Z.useState)(null),q=(0,rr.Z)(X,2),Y=q[0],$=q[1],Q=(0,Z.useState)(null),tt=(0,rr.Z)(Q,2),et=tt[0],nt=tt[1],it=Z.useMemo((function(){return null===et&&k?Number.MAX_SAFE_INTEGER:et||0}),[et,M]),ot=(0,Z.useState)(!1),at=(0,rr.Z)(ot,2),ct=at[0],ut=at[1],st="".concat(r,"-item"),ft=Math.max(R,z),ht=p===$f,dt=o.length&&ht,pt=p===Kf,vt=dt||"number"==typeof p&&o.length>p,gt=(0,Z.useMemo)((function(){var t=o;return dt?t=null===M&&k?o:o.slice(0,Math.min(o.length,P/s)):"number"==typeof p&&(t=o.slice(0,p)),t}),[o,s,M,p,dt]),mt=(0,Z.useMemo)((function(){return dt?o.slice(it+1):o.slice(gt.length)}),[o,gt,dt,it]),yt=(0,Z.useCallback)((function(t,e){var n;return"function"==typeof l?l(t):null!==(n=l&&(null==t?void 0:t[l]))&&void 0!==n?n:e}),[l]),bt=(0,Z.useCallback)(a||function(t){return t},[a]);function xt(t,e,n){(et!==t||void 0!==e&&e!==Y)&&(nt(t),n||(ut(tP){xt(r-1,t-i-V+z);break}}m&&St(0)+V>P&&$(null)}}),[P,T,z,V,yt,gt]);var kt=ct&&!!mt.length,Ct={};null!==Y&&dt&&(Ct={position:"absolute",left:Y,top:0});var Ot,Et={prefixCls:st,responsive:dt,component:x,invalidate:pt},Mt=c?function(t,e){var n=yt(t,e);return Z.createElement(Uf.Provider,{key:n,value:(0,lt.Z)((0,lt.Z)({},Et),{},{order:e,item:t,itemKey:n,registerSize:wt,display:e<=it})},c(t,e))}:function(t,e){var n=yt(t,e);return Z.createElement(Nf,(0,J.Z)({},Et,{order:e,key:n,item:t,renderItem:bt,itemKey:n,registerSize:wt,display:e<=it}))},At={order:kt?it:Number.MAX_SAFE_INTEGER,className:"".concat(st,"-rest"),registerSize:function(t,e){U(e),L(z)},display:kt};if(g)g&&(Ot=Z.createElement(Uf.Provider,{value:(0,lt.Z)((0,lt.Z)({},Et),At)},g(mt)));else{var Pt=v||Jf;Ot=Z.createElement(Nf,(0,J.Z)({},Et,At),"function"==typeof Pt?Pt(mt):Pt)}var _t=Z.createElement(b,(0,J.Z)({className:K()(!pt&&r,d),style:h,ref:e},S),gt.map(Mt),vt?Ot:null,m&&Z.createElement(Nf,(0,J.Z)({},Et,{responsive:ht,responsiveDisabled:!dt,order:it,className:"".concat(st,"-suffix"),registerSize:function(t,e){G(e)},display:!0,style:Ct}),m));return ht&&(_t=Z.createElement(ii,{onResize:function(t,e){A(e.clientWidth)},disabled:!dt},_t)),_t}var th=Z.forwardRef(Qf);th.displayName="Overflow",th.Item=qf,th.RESPONSIVE=$f,th.INVALIDATE=Kf;var eh=th,nh=function(t){var e,n=t.className,r=t.customizeIcon,i=t.customizeIconProps,o=t.onMouseDown,a=t.onClick,c=t.children;return e="function"==typeof r?r(i):r,Z.createElement("span",{className:n,onMouseDown:function(t){t.preventDefault(),o&&o(t)},style:{userSelect:"none",WebkitUserSelect:"none"},unselectable:"on",onClick:a,"aria-hidden":!0},void 0!==e?e:Z.createElement("span",{className:K()(n.split(/\s+/).map((function(t){return"".concat(t,"-icon")})))},c))},rh=function(t,e){var n,r,i=t.prefixCls,o=t.id,a=t.inputElement,c=t.disabled,l=t.tabIndex,u=t.autoFocus,s=t.autoComplete,f=t.editable,h=t.activeDescendantId,d=t.value,p=t.maxLength,v=t.onKeyDown,g=t.onMouseDown,m=t.onChange,y=t.onPaste,b=t.onCompositionStart,x=t.onCompositionEnd,w=t.open,S=t.attrs,k=a||Z.createElement("input",null),C=k,O=C.ref,E=C.props,M=E.onKeyDown,A=E.onChange,P=E.onMouseDown,_=E.onCompositionStart,D=E.onCompositionEnd,T=E.style;return(0,bt.Kp)(!("maxLength"in k.props),"Passing 'maxLength' to input element directly may not work because input in BaseSelect is controlled."),k=Z.cloneElement(k,(0,lt.Z)((0,lt.Z)((0,lt.Z)({type:"search"},E),{},{id:o,ref:(0,le.sQ)(e,O),disabled:c,tabIndex:l,autoComplete:s||"off",autoFocus:u,className:K()("".concat(i,"-selection-search-input"),null===(n=k)||void 0===n||null===(r=n.props)||void 0===r?void 0:r.className),role:"combobox","aria-label":"Search","aria-expanded":w,"aria-haspopup":"listbox","aria-owns":"".concat(o,"_list"),"aria-autocomplete":"list","aria-controls":"".concat(o,"_list"),"aria-activedescendant":w?h:void 0},S),{},{value:f?d:"",maxLength:p,readOnly:!f,unselectable:f?null:"on",style:(0,lt.Z)((0,lt.Z)({},T),{},{opacity:f?null:0}),onKeyDown:function(t){v(t),M&&M(t)},onMouseDown:function(t){g(t),P&&P(t)},onChange:function(t){m(t),A&&A(t)},onCompositionStart:function(t){b(t),_&&_(t)},onCompositionEnd:function(t){x(t),D&&D(t)},onPaste:y}))},ih=Z.forwardRef(rh);ih.displayName="Input";var oh=ih;function ah(t){return Array.isArray(t)?t:void 0!==t?[t]:[]}var ch="undefined"!=typeof window&&window.document&&window.document.documentElement;function lh(t){return["string","number"].includes((0,it.Z)(t))}function uh(t){var e=void 0;return t&&(lh(t.title)?e=t.title.toString():lh(t.label)&&(e=t.label.toString())),e}function sh(t){var e;return null!==(e=t.key)&&void 0!==e?e:t.value}var fh=function(t){t.preventDefault(),t.stopPropagation()},hh=function(t){var e,n,r=t.id,i=t.prefixCls,o=t.values,a=t.open,c=t.searchValue,l=t.autoClearSearchValue,u=t.inputRef,s=t.placeholder,f=t.disabled,h=t.mode,d=t.showSearch,p=t.autoFocus,v=t.autoComplete,g=t.activeDescendantId,m=t.tabIndex,y=t.removeIcon,b=t.maxTagCount,x=t.maxTagTextLength,w=t.maxTagPlaceholder,S=void 0===w?function(t){return"+ ".concat(t.length," ...")}:w,k=t.tagRender,C=t.onToggleOpen,O=t.onRemove,E=t.onInputChange,M=t.onInputPaste,A=t.onInputKeyDown,P=t.onInputMouseDown,_=t.onInputCompositionStart,D=t.onInputCompositionEnd,T=Z.useRef(null),F=(0,Z.useState)(0),j=(0,rr.Z)(F,2),I=j[0],R=j[1],L=(0,Z.useState)(!1),N=(0,rr.Z)(L,2),z=N[0],U=N[1],H="".concat(i,"-selection"),W=a||"multiple"===h&&!1===l||"tags"===h?c:"",V="tags"===h||"multiple"===h&&!1===l||d&&(a||z);function G(t,e,n,r,i){return Z.createElement("span",{className:K()("".concat(H,"-item"),(0,B.Z)({},"".concat(H,"-item-disabled"),n)),title:uh(t)},Z.createElement("span",{className:"".concat(H,"-item-content")},e),r&&Z.createElement(nh,{className:"".concat(H,"-item-remove"),onMouseDown:fh,onClick:i,customizeIcon:y},"×"))}e=function(){R(T.current.scrollWidth)},n=[W],ch?Z.useLayoutEffect(e,n):Z.useEffect(e,n);var X=Z.createElement("div",{className:"".concat(H,"-search"),style:{width:I},onFocus:function(){U(!0)},onBlur:function(){U(!1)}},Z.createElement(oh,{ref:u,open:a,prefixCls:i,id:r,inputElement:null,disabled:f,autoFocus:p,autoComplete:v,editable:V,activeDescendantId:g,value:W,onKeyDown:A,onMouseDown:P,onChange:E,onPaste:M,onCompositionStart:_,onCompositionEnd:D,tabIndex:m,attrs:dt(t,!0)}),Z.createElement("span",{ref:T,className:"".concat(H,"-search-mirror"),"aria-hidden":!0},W," ")),q=Z.createElement(eh,{prefixCls:"".concat(H,"-overflow"),data:o,renderItem:function(t){var e=t.disabled,n=t.label,r=t.value,i=!f&&!e,o=n;if("number"==typeof x&&("string"==typeof n||"number"==typeof n)){var c=String(o);c.length>x&&(o="".concat(c.slice(0,x),"..."))}var l=function(e){e&&e.stopPropagation(),O(t)};return"function"==typeof k?function(t,e,n,r,i){return Z.createElement("span",{onMouseDown:function(t){fh(t),C(!a)}},k({label:e,value:t,disabled:n,closable:r,onClose:i}))}(r,o,e,i,l):G(t,o,e,i,l)},renderRest:function(t){var e="function"==typeof S?S(t):S;return G({title:e},e,!1)},suffix:X,itemKey:sh,maxCount:b});return Z.createElement(Z.Fragment,null,q,!o.length&&!W&&Z.createElement("span",{className:"".concat(H,"-placeholder")},s))},dh=function(t){var e=t.inputElement,n=t.prefixCls,r=t.id,i=t.inputRef,o=t.disabled,a=t.autoFocus,c=t.autoComplete,l=t.activeDescendantId,u=t.mode,s=t.open,f=t.values,h=t.placeholder,d=t.tabIndex,p=t.showSearch,v=t.searchValue,g=t.activeValue,m=t.maxLength,y=t.onInputKeyDown,b=t.onInputMouseDown,x=t.onInputChange,w=t.onInputPaste,S=t.onInputCompositionStart,k=t.onInputCompositionEnd,C=t.title,O=Z.useState(!1),E=(0,rr.Z)(O,2),M=E[0],A=E[1],P="combobox"===u,_=P||p,D=f[0],T=v||"";P&&g&&!M&&(T=g),Z.useEffect((function(){P&&A(!1)}),[P,g]);var F=!("combobox"!==u&&!s&&!p)&&!!T,j=void 0===C?uh(D):C;return Z.createElement(Z.Fragment,null,Z.createElement("span",{className:"".concat(n,"-selection-search")},Z.createElement(oh,{ref:i,prefixCls:n,id:r,open:s,inputElement:e,disabled:o,autoFocus:a,autoComplete:c,editable:_,activeDescendantId:l,value:T,onKeyDown:y,onMouseDown:b,onChange:function(t){A(!0),x(t)},onPaste:w,onCompositionStart:S,onCompositionEnd:k,tabIndex:d,attrs:dt(t,!0),maxLength:P?m:void 0})),!P&&D?Z.createElement("span",{className:"".concat(n,"-selection-item"),title:j,style:F?{visibility:"hidden"}:void 0},D.label):null,function(){if(D)return null;var t=F?{visibility:"hidden"}:void 0;return Z.createElement("span",{className:"".concat(n,"-selection-placeholder"),style:t},h)}())};var ph=function(t,e){var n=(0,Z.useRef)(null),r=(0,Z.useRef)(!1),i=t.prefixCls,o=t.open,a=t.mode,c=t.showSearch,l=t.tokenWithEnter,u=t.autoClearSearchValue,s=t.onSearch,f=t.onSearchSubmit,h=t.onToggleOpen,d=t.onInputKeyDown,p=t.domRef;Z.useImperativeHandle(e,(function(){return{focus:function(){n.current.focus()},blur:function(){n.current.blur()}}}));var v=Ff(0),g=(0,rr.Z)(v,2),m=g[0],y=g[1],b=(0,Z.useRef)(null),x=function(t){!1!==s(t,!0,r.current)&&h(!0)},w={inputRef:n,onInputKeyDown:function(t){var e,n=t.which;n!==Ya.Z.UP&&n!==Ya.Z.DOWN||t.preventDefault(),d&&d(t),n!==Ya.Z.ENTER||"tags"!==a||r.current||o||null==f||f(t.target.value),e=n,[Ya.Z.ESC,Ya.Z.SHIFT,Ya.Z.BACKSPACE,Ya.Z.TAB,Ya.Z.WIN_KEY,Ya.Z.ALT,Ya.Z.META,Ya.Z.WIN_KEY_RIGHT,Ya.Z.CTRL,Ya.Z.SEMICOLON,Ya.Z.EQUALS,Ya.Z.CAPS_LOCK,Ya.Z.CONTEXT_MENU,Ya.Z.F1,Ya.Z.F2,Ya.Z.F3,Ya.Z.F4,Ya.Z.F5,Ya.Z.F6,Ya.Z.F7,Ya.Z.F8,Ya.Z.F9,Ya.Z.F10,Ya.Z.F11,Ya.Z.F12].includes(e)||h(!0)},onInputMouseDown:function(){y(!0)},onInputChange:function(t){var e=t.target.value;if(l&&b.current&&/[\r\n]/.test(b.current)){var n=b.current.replace(/[\r\n]+$/,"").replace(/\r\n/g," ").replace(/[\r\n]/g," ");e=e.replace(n,b.current)}b.current=null,x(e)},onInputPaste:function(t){var e=t.clipboardData.getData("text");b.current=e},onInputCompositionStart:function(){r.current=!0},onInputCompositionEnd:function(t){r.current=!1,"combobox"!==a&&x(t.target.value)}},S="multiple"===a||"tags"===a?Z.createElement(hh,(0,J.Z)({},t,w)):Z.createElement(dh,(0,J.Z)({},t,w));return Z.createElement("div",{ref:p,className:"".concat(i,"-selector"),onClick:function(t){t.target!==n.current&&(void 0!==document.body.style.msTouchAction?setTimeout((function(){n.current.focus()})):n.current.focus())},onMouseDown:function(t){var e=m();t.target===n.current||e||"combobox"===a||t.preventDefault(),("combobox"===a||c&&e)&&o||(o&&!1!==u&&s("",!0,!1),h())}},S)},vh=Z.forwardRef(ph);vh.displayName="Selector";var gh=vh,mh=["prefixCls","disabled","visible","children","popupElement","containerWidth","animation","transitionName","dropdownStyle","dropdownClassName","direction","placement","builtinPlacements","dropdownMatchSelectWidth","dropdownRender","dropdownAlign","getPopupContainer","empty","getTriggerDOMNode","onPopupVisibleChange","onPopupMouseEnter"],yh=function(t,e){var n=t.prefixCls,r=(t.disabled,t.visible),i=t.children,o=t.popupElement,a=t.containerWidth,c=t.animation,l=t.transitionName,u=t.dropdownStyle,s=t.dropdownClassName,f=t.direction,h=void 0===f?"ltr":f,d=t.placement,p=t.builtinPlacements,v=t.dropdownMatchSelectWidth,g=t.dropdownRender,m=t.dropdownAlign,y=t.getPopupContainer,b=t.empty,x=t.getTriggerDOMNode,w=t.onPopupVisibleChange,S=t.onPopupMouseEnter,k=(0,rt.Z)(t,mh),C="".concat(n,"-dropdown"),O=o;g&&(O=g(o));var E=Z.useMemo((function(){return p||function(t){var e=!0===t?0:1;return{bottomLeft:{points:["tl","bl"],offset:[0,4],overflow:{adjustX:e,adjustY:1},htmlRegion:"scroll"},bottomRight:{points:["tr","br"],offset:[0,4],overflow:{adjustX:e,adjustY:1},htmlRegion:"scroll"},topLeft:{points:["bl","tl"],offset:[0,-4],overflow:{adjustX:e,adjustY:1},htmlRegion:"scroll"},topRight:{points:["br","tr"],offset:[0,-4],overflow:{adjustX:e,adjustY:1},htmlRegion:"scroll"}}}(v)}),[p,v]),M=c?"".concat(C,"-").concat(c):l,A=Z.useRef(null);Z.useImperativeHandle(e,(function(){return{getPopupElement:function(){return A.current}}}));var P=(0,lt.Z)({minWidth:a},u);return"number"==typeof v?P.width=v:v&&(P.width=a),Z.createElement(Di,(0,J.Z)({},k,{showAction:w?["click"]:[],hideAction:w?["click"]:[],popupPlacement:d||("rtl"===h?"bottomRight":"bottomLeft"),builtinPlacements:E,prefixCls:C,popupTransitionName:M,popup:Z.createElement("div",{ref:A,onMouseEnter:S},O),popupAlign:m,popupVisible:r,getPopupContainer:y,popupClassName:K()(s,(0,B.Z)({},"".concat(C,"-empty"),b)),popupStyle:P,getTriggerDOMNode:x,onPopupVisibleChange:w}),i)},bh=Z.forwardRef(yh);bh.displayName="SelectTrigger";var xh=bh,wh=n(80475);function Sh(t,e){var n,r=t.key;return"value"in t&&(n=t.value),null!=r?r:void 0!==n?n:"rc-index-key-".concat(e)}function kh(t,e){var n=t||{},r=n.label||(e?"children":"label");return{label:r,value:n.value||"value",options:n.options||"options",groupLabel:n.groupLabel||r}}function Ch(t){var e=(0,lt.Z)({},t);return"props"in e||Object.defineProperty(e,"props",{get:function(){return(0,bt.ZP)(!1,"Return type is option instead of Option instance. Please read value directly instead of reading from `props`."),e}}),e}var Oh=["id","prefixCls","className","showSearch","tagRender","direction","omitDomProps","displayValues","onDisplayValuesChange","emptyOptions","notFoundContent","onClear","mode","disabled","loading","getInputElement","getRawInputElement","open","defaultOpen","onDropdownVisibleChange","activeValue","onActiveValueChange","activeDescendantId","searchValue","autoClearSearchValue","onSearch","onSearchSplit","tokenSeparators","allowClear","suffixIcon","clearIcon","OptionList","animation","transitionName","dropdownStyle","dropdownClassName","dropdownMatchSelectWidth","dropdownRender","dropdownAlign","placement","builtinPlacements","getPopupContainer","showAction","onFocus","onBlur","onKeyUp","onKeyDown","onMouseDown"],Eh=["value","onChange","removeIcon","placeholder","autoFocus","maxTagCount","maxTagTextLength","maxTagPlaceholder","choiceTransitionName","onInputKeyDown","onPopupScroll","tabIndex"];function Mh(t){return"tags"===t||"multiple"===t}var Ah=Z.forwardRef((function(t,e){var n,r,i=t.id,o=t.prefixCls,a=t.className,c=t.showSearch,l=t.tagRender,u=t.direction,s=t.omitDomProps,f=t.displayValues,h=t.onDisplayValuesChange,d=t.emptyOptions,p=t.notFoundContent,v=void 0===p?"Not Found":p,g=t.onClear,m=t.mode,y=t.disabled,b=t.loading,x=t.getInputElement,w=t.getRawInputElement,S=t.open,k=t.defaultOpen,C=t.onDropdownVisibleChange,O=t.activeValue,E=t.onActiveValueChange,M=t.activeDescendantId,A=t.searchValue,P=t.autoClearSearchValue,_=t.onSearch,D=t.onSearchSplit,T=t.tokenSeparators,F=t.allowClear,j=t.suffixIcon,I=t.clearIcon,R=t.OptionList,L=t.animation,N=t.transitionName,z=t.dropdownStyle,U=t.dropdownClassName,H=t.dropdownMatchSelectWidth,W=t.dropdownRender,V=t.dropdownAlign,G=t.placement,X=t.builtinPlacements,q=t.getPopupContainer,$=t.showAction,Q=void 0===$?[]:$,tt=t.onFocus,et=t.onBlur,nt=t.onKeyUp,ot=t.onKeyDown,at=t.onMouseDown,ct=(0,rt.Z)(t,Oh),ut=Mh(m),st=(void 0!==c?c:ut)||"combobox"===m,ft=(0,lt.Z)({},ct);Eh.forEach((function(t){delete ft[t]})),null==s||s.forEach((function(t){delete ft[t]}));var ht=Z.useState(!1),dt=(0,rr.Z)(ht,2),pt=dt[0],vt=dt[1];Z.useEffect((function(){vt(li())}),[]);var gt=Z.useRef(null),mt=Z.useRef(null),yt=Z.useRef(null),bt=Z.useRef(null),xt=Z.useRef(null),wt=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,e=Z.useState(!1),n=(0,rr.Z)(e,2),r=n[0],i=n[1],o=Z.useRef(null),a=function(){window.clearTimeout(o.current)};return Z.useEffect((function(){return a}),[]),[r,function(e,n){a(),o.current=window.setTimeout((function(){i(e),n&&n()}),t)},a]}(),St=(0,rr.Z)(wt,3),kt=St[0],Ct=St[1],Ot=St[2];Z.useImperativeHandle(e,(function(){var t,e;return{focus:null===(t=bt.current)||void 0===t?void 0:t.focus,blur:null===(e=bt.current)||void 0===e?void 0:e.blur,scrollTo:function(t){var e;return null===(e=xt.current)||void 0===e?void 0:e.scrollTo(t)}}}));var Et=Z.useMemo((function(){var t;if("combobox"!==m)return A;var e=null===(t=f[0])||void 0===t?void 0:t.value;return"string"==typeof e||"number"==typeof e?String(e):""}),[A,m,f]),Mt="combobox"===m&&"function"==typeof x&&x()||null,Pt="function"==typeof w&&w(),_t=(0,le.x1)(mt,null==Pt||null===(n=Pt.props)||void 0===n?void 0:n.ref),Dt=Z.useState(!1),Tt=(0,rr.Z)(Dt,2),Zt=Tt[0],Ft=Tt[1];(0,vr.Z)((function(){Ft(!0)}),[]);var jt=(0,At.Z)(!1,{defaultValue:k,value:S}),It=(0,rr.Z)(jt,2),Rt=It[0],Lt=It[1],Nt=!!Zt&&Rt,Bt=!v&&d;(y||Bt&&Nt&&"combobox"===m)&&(Nt=!1);var zt=!Bt&&Nt,Ut=Z.useCallback((function(t){var e=void 0!==t?t:!Nt;y||(Lt(e),Nt!==e&&(null==C||C(e)))}),[y,Nt,Lt,C]),Ht=Z.useMemo((function(){return(T||[]).some((function(t){return["\n","\r\n"].includes(t)}))}),[T]),Wt=function(t,e,n){var r=!0,i=t;null==E||E(null);var o=n?null:function(t,e){if(!e||!e.length)return null;var n=!1,r=function t(e,r){var i=(0,wh.Z)(r),o=i[0],a=i.slice(1);if(!o)return[e];var c=e.split(o);return n=n||c.length>1,c.reduce((function(e,n){return[].concat((0,Y.Z)(e),(0,Y.Z)(t(n,a)))}),[]).filter((function(t){return t}))}(t,e);return n?r:null}(t,T);return"combobox"!==m&&o&&(i="",null==D||D(o),Ut(!1),r=!1),_&&Et!==i&&_(i,{source:e?"typing":"effect"}),r};Z.useEffect((function(){Nt||ut||"combobox"===m||Wt("",!1,!1)}),[Nt]),Z.useEffect((function(){Rt&&y&&Lt(!1),y&&Ct(!1)}),[y]);var Vt=Ff(),Gt=(0,rr.Z)(Vt,2),Xt=Gt[0],qt=Gt[1],Yt=Z.useRef(!1),$t=[];Z.useEffect((function(){return function(){$t.forEach((function(t){return clearTimeout(t)})),$t.splice(0,$t.length)}}),[]);var Kt,Jt=Z.useState(null),Qt=(0,rr.Z)(Jt,2),te=Qt[0],ee=Qt[1],ne=Z.useState({}),re=(0,rr.Z)(ne,2)[1];(0,vr.Z)((function(){if(zt){var t,e=Math.ceil(null===(t=gt.current)||void 0===t?void 0:t.getBoundingClientRect().width);te===e||Number.isNaN(e)||ee(e)}}),[zt]),Pt&&(Kt=function(t){Ut(t)}),function(t,e,n,r){var i=Z.useRef(null);i.current={open:e,triggerOpen:n,customizedTrigger:r},Z.useEffect((function(){function e(e){var n;if(null===(n=i.current)||void 0===n||!n.customizedTrigger){var r=e.target;r.shadowRoot&&e.composed&&(r=e.composedPath()[0]||r),i.current.open&&t().filter((function(t){return t})).every((function(t){return!t.contains(r)&&t!==r}))&&i.current.triggerOpen(!1)}}return window.addEventListener("mousedown",e),function(){return window.removeEventListener("mousedown",e)}}),[])}((function(){var t;return[gt.current,null===(t=yt.current)||void 0===t?void 0:t.getPopupElement()]}),zt,Ut,!!Pt);var ie,oe=Z.useMemo((function(){return(0,lt.Z)((0,lt.Z)({},t),{},{notFoundContent:v,open:Nt,triggerOpen:zt,id:i,showSearch:st,multiple:ut,toggleOpen:Ut})}),[t,v,zt,Nt,i,st,ut,Ut]),ae=!!j||b;ae&&(ie=Z.createElement(nh,{className:K()("".concat(o,"-arrow"),(0,B.Z)({},"".concat(o,"-arrow-loading"),b)),customizeIcon:j,customizeIconProps:{loading:b,searchValue:Et,open:Nt,focused:kt,showSearch:st}}));var ce,ue=function(t,e,n,r,i){var o=arguments.length>5&&void 0!==arguments[5]&&arguments[5],a=arguments.length>6?arguments[6]:void 0,c=arguments.length>7?arguments[7]:void 0,l=Z.useMemo((function(){return"object"===(0,it.Z)(r)?r.clearIcon:i||void 0}),[r,i]);return{allowClear:Z.useMemo((function(){return!(o||!r||!n.length&&!a||"combobox"===c&&""===a)}),[r,o,n.length,a,c]),clearIcon:Z.createElement(nh,{className:"".concat(t,"-clear"),onMouseDown:e,customizeIcon:l},"×")}}(o,(function(){var t;null==g||g(),null===(t=bt.current)||void 0===t||t.focus(),h([],{type:"clear",values:f}),Wt("",!1,!1)}),f,F,I,y,Et,m),se=ue.allowClear,fe=ue.clearIcon,he=Z.createElement(R,{ref:xt}),de=K()(o,a,(r={},(0,B.Z)(r,"".concat(o,"-focused"),kt),(0,B.Z)(r,"".concat(o,"-multiple"),ut),(0,B.Z)(r,"".concat(o,"-single"),!ut),(0,B.Z)(r,"".concat(o,"-allow-clear"),F),(0,B.Z)(r,"".concat(o,"-show-arrow"),ae),(0,B.Z)(r,"".concat(o,"-disabled"),y),(0,B.Z)(r,"".concat(o,"-loading"),b),(0,B.Z)(r,"".concat(o,"-open"),Nt),(0,B.Z)(r,"".concat(o,"-customize-input"),Mt),(0,B.Z)(r,"".concat(o,"-show-search"),st),r)),pe=Z.createElement(xh,{ref:yt,disabled:y,prefixCls:o,visible:zt,popupElement:he,containerWidth:te,animation:L,transitionName:N,dropdownStyle:z,dropdownClassName:U,direction:u,dropdownMatchSelectWidth:H,dropdownRender:W,dropdownAlign:V,placement:G,builtinPlacements:X,getPopupContainer:q,empty:d,getTriggerDOMNode:function(){return mt.current},onPopupVisibleChange:Kt,onPopupMouseEnter:function(){re({})}},Pt?Z.cloneElement(Pt,{ref:_t}):Z.createElement(gh,(0,J.Z)({},t,{domRef:mt,prefixCls:o,inputElement:Mt,ref:bt,id:i,showSearch:st,autoClearSearchValue:P,mode:m,activeDescendantId:M,tagRender:l,values:f,open:Nt,onToggleOpen:Ut,activeValue:O,searchValue:Et,onSearch:Wt,onSearchSubmit:function(t){t&&t.trim()&&_(t,{source:"submit"})},onRemove:function(t){var e=f.filter((function(e){return e!==t}));h(e,{type:"remove",values:[t]})},tokenWithEnter:Ht})));return ce=Pt?pe:Z.createElement("div",(0,J.Z)({className:de},ft,{ref:gt,onMouseDown:function(t){var e,n=t.target,r=null===(e=yt.current)||void 0===e?void 0:e.getPopupElement();if(r&&r.contains(n)){var i=setTimeout((function(){var t,e=$t.indexOf(i);-1!==e&&$t.splice(e,1),Ot(),pt||r.contains(document.activeElement)||null===(t=bt.current)||void 0===t||t.focus()}));$t.push(i)}for(var o=arguments.length,a=new Array(o>1?o-1:0),c=1;c=0;a-=1){var c=i[a];if(!c.disabled){i.splice(a,1),o=c;break}}o&&h(i,{type:"remove",values:[o]})}for(var l=arguments.length,u=new Array(l>1?l-1:0),s=1;s1?e-1:0),r=1;r1&&void 0!==arguments[1]&&arguments[1];return(0,je.Z)(t).map((function(t,n){if(!Z.isValidElement(t)||!t.type)return null;var r=t,i=r.type.isSelectOptGroup,o=r.key,a=r.props,c=a.children,l=(0,rt.Z)(a,jh);return e||!i?function(t){var e=t,n=e.key,r=e.props,i=r.children,o=r.value,a=(0,rt.Z)(r,Fh);return(0,lt.Z)({key:n,value:void 0!==o?o:n,children:i},a)}(t):(0,lt.Z)((0,lt.Z)({key:"__RC_SELECT_GRP__".concat(null===o?n:o,"__"),label:o},l),{},{options:Ih(c)})})).filter((function(t){return t}))}function Rh(t){var e=Z.useRef();e.current=t;var n=Z.useCallback((function(){return e.current.apply(e,arguments)}),[]);return n}var Lh=function(){return null};Lh.isSelectOptGroup=!0;var Nh=Lh,Bh=function(){return null};Bh.isSelectOption=!0;var zh=Bh,Uh=Z.forwardRef((function(t,e){var n=t.height,r=t.offset,i=t.children,o=t.prefixCls,a=t.onInnerResize,c=t.innerProps,l={},u={display:"flex",flexDirection:"column"};return void 0!==r&&(l={height:n,position:"relative",overflow:"hidden"},u=(0,lt.Z)((0,lt.Z)({},u),{},{transform:"translateY(".concat(r,"px)"),position:"absolute",left:0,right:0,top:0})),Z.createElement("div",{style:l},Z.createElement(ii,{onResize:function(t){t.offsetHeight&&a&&a()}},Z.createElement("div",(0,J.Z)({style:u,className:K()((0,B.Z)({},"".concat(o,"-holder-inner"),o)),ref:e},c),i)))}));Uh.displayName="Filler";var Hh=Uh;function Wh(t){return"touches"in t?t.touches[0].pageY:t.pageY}var Vh=function(t){(0,et.Z)(n,t);var e=(0,nt.Z)(n);function n(){var t;(0,Q.Z)(this,n);for(var r=arguments.length,i=new Array(r),o=0;on},t}return(0,tt.Z)(n,[{key:"componentDidMount",value:function(){this.scrollbarRef.current.addEventListener("touchstart",this.onScrollbarTouchStart),this.thumbRef.current.addEventListener("touchstart",this.onMouseDown)}},{key:"componentDidUpdate",value:function(t){t.scrollTop!==this.props.scrollTop&&this.delayHidden()}},{key:"componentWillUnmount",value:function(){var t,e;this.removeEvents(),null===(t=this.scrollbarRef.current)||void 0===t||t.removeEventListener("touchstart",this.onScrollbarTouchStart),null===(e=this.thumbRef.current)||void 0===e||e.removeEventListener("touchstart",this.onMouseDown),clearTimeout(this.visibleTimeout)}},{key:"render",value:function(){var t=this.state,e=t.dragging,n=t.visible,r=this.props,i=r.prefixCls,o=r.direction,a=this.getSpinHeight(),c=this.getTop(),l=this.showScroll(),u=l&&n,s="rtl"===o?{left:0}:{right:0};return Z.createElement("div",{ref:this.scrollbarRef,className:K()("".concat(i,"-scrollbar"),(0,B.Z)({},"".concat(i,"-scrollbar-show"),l)),style:(0,lt.Z)((0,lt.Z)({width:8,top:0,bottom:0},s),{},{position:"absolute",display:u?null:"none"}),onMouseDown:this.onContainerMouseDown,onMouseMove:this.delayHidden},Z.createElement("div",{ref:this.thumbRef,className:K()("".concat(i,"-scrollbar-thumb"),(0,B.Z)({},"".concat(i,"-scrollbar-thumb-moving"),e)),style:{width:"100%",height:a,top:c,left:0,position:"absolute",background:"rgba(0, 0, 0, 0.5)",borderRadius:99,cursor:"pointer",userSelect:"none"},onMouseDown:this.onMouseDown}))}}]),n}(Z.Component);function Gh(t){var e=t.children,n=t.setRef,r=Z.useCallback((function(t){n(t)}),[]);return Z.cloneElement(e,{ref:r})}var Xh=function(){function t(){(0,Q.Z)(this,t),this.maps=void 0,this.maps=Object.create(null)}return(0,tt.Z)(t,[{key:"set",value:function(t,e){this.maps[t]=e}},{key:"get",value:function(t){return this.maps[t]}}]),t}(),qh=Xh;function Yh(t,e,n){var r=Z.useState(t),i=(0,rr.Z)(r,2),o=i[0],a=i[1],c=Z.useState(null),l=(0,rr.Z)(c,2),u=l[0],s=l[1];return Z.useEffect((function(){var r=function(t,e,n){var r,i,o=t.length,a=e.length;if(0===o&&0===a)return null;o1&&void 0!==arguments[1]&&arguments[1],o=t<0&&i.current.top||t>0&&i.current.bottom;return e&&o?(clearTimeout(r.current),n.current=!1):o&&!n.current||(clearTimeout(r.current),n.current=!0,r.current=setTimeout((function(){n.current=!1}),50)),!n.current&&o}};var Jh=14/15;var Qh=["prefixCls","className","height","itemHeight","fullHeight","style","data","children","itemKey","virtual","direction","component","onScroll","onVisibleChange","innerProps"],td=[],ed={overflowY:"auto",overflowAnchor:"none"};function nd(t,e){var n=t.prefixCls,r=void 0===n?"rc-virtual-list":n,i=t.className,o=t.height,a=t.itemHeight,c=t.fullHeight,l=void 0===c||c,u=t.style,s=t.data,f=t.children,h=t.itemKey,d=t.virtual,p=t.direction,v=t.component,g=void 0===v?"div":v,m=t.onScroll,y=t.onVisibleChange,b=t.innerProps,x=(0,rt.Z)(t,Qh),w=!(!1===d||!o||!a),S=w&&s&&a*s.length>o,k=(0,Z.useState)(0),C=(0,rr.Z)(k,2),O=C[0],E=C[1],M=(0,Z.useState)(!1),A=(0,rr.Z)(M,2),P=A[0],_=A[1],D=K()(r,(0,B.Z)({},"".concat(r,"-rtl"),"rtl"===p),i),T=s||td,F=(0,Z.useRef)(),j=(0,Z.useRef)(),I=(0,Z.useRef)(),R=Z.useCallback((function(t){return"function"==typeof h?h(t):null==t?void 0:t[h]}),[h]),L={getKey:R};function N(t){E((function(e){var n=function(t){var e=t;Number.isNaN(ct.current)||(e=Math.min(e,ct.current));return e=Math.max(e,0),e}("function"==typeof t?t(e):t);return F.current.scrollTop=n,n}))}var z=(0,Z.useRef)({start:0,end:T.length}),U=(0,Z.useRef)(),H=Yh(T,R),W=(0,rr.Z)(H,1)[0];U.current=W;var V=function(t,e,n){var r=Z.useState(0),i=(0,rr.Z)(r,2),o=i[0],a=i[1],c=(0,Z.useRef)(new Map),l=(0,Z.useRef)(new qh),u=(0,Z.useRef)();function s(){pe.Z.cancel(u.current)}function f(){s(),u.current=(0,pe.Z)((function(){c.current.forEach((function(t,e){if(t&&t.offsetParent){var n=(0,Mr.Z)(t),r=n.offsetHeight;l.current.get(e)!==r&&l.current.set(e,n.offsetHeight)}})),a((function(t){return t+1}))}))}return(0,Z.useEffect)((function(){return s}),[]),[function(r,i){var o=t(r),a=c.current.get(o);i?(c.current.set(o,i),f()):c.current.delete(o),!a!=!i&&(i?null==e||e(r):null==n||n(r))},f,l.current,o]}(R,null,null),G=(0,rr.Z)(V,4),X=G[0],q=G[1],Y=G[2],$=G[3],Q=Z.useMemo((function(){if(!w)return{scrollHeight:void 0,start:0,end:T.length-1,offset:void 0};var t;if(!S)return{scrollHeight:(null===(t=j.current)||void 0===t?void 0:t.offsetHeight)||0,start:0,end:T.length-1,offset:void 0};for(var e,n,r,i=0,c=T.length,l=0;l=O&&void 0===e&&(e=l,n=i),h>O+o&&void 0===r&&(r=l),i=h}return void 0===e&&(e=0,n=0,r=Math.ceil(o/a)),void 0===r&&(r=T.length-1),{scrollHeight:i,start:e,end:r=Math.min(r+1,T.length),offset:n}}),[S,w,O,T,$,o]),tt=Q.scrollHeight,et=Q.start,nt=Q.end,ot=Q.offset;z.current.start=et,z.current.end=nt;var at=tt-o,ct=(0,Z.useRef)(at);ct.current=at;var ut=O<=0,st=O>=at,ft=Kh(ut,st);var ht=function(t,e,n,r){var i=(0,Z.useRef)(0),o=(0,Z.useRef)(null),a=(0,Z.useRef)(null),c=(0,Z.useRef)(!1),l=Kh(e,n);return[function(e){if(t){pe.Z.cancel(o.current);var n=e.deltaY;i.current+=n,a.current=n,l(n)||($h||e.preventDefault(),o.current=(0,pe.Z)((function(){var t=c.current?10:1;r(i.current*t),i.current=0})))}},function(e){t&&(c.current=e.detail===a.current)}]}(w,ut,st,(function(t){N((function(e){return e+t}))})),dt=(0,rr.Z)(ht,2),pt=dt[0],vt=dt[1];!function(t,e,n){var r,i=(0,Z.useRef)(!1),o=(0,Z.useRef)(0),a=(0,Z.useRef)(null),c=(0,Z.useRef)(null),l=function(t){if(i.current){var e=Math.ceil(t.touches[0].pageY),r=o.current-e;o.current=e,n(r)&&t.preventDefault(),clearInterval(c.current),c.current=setInterval((function(){(!n(r*=Jh,!0)||Math.abs(r)<=.1)&&clearInterval(c.current)}),16)}},u=function(){i.current=!1,r()},s=function(t){r(),1!==t.touches.length||i.current||(i.current=!0,o.current=Math.ceil(t.touches[0].pageY),a.current=t.target,a.current.addEventListener("touchmove",l),a.current.addEventListener("touchend",u))};r=function(){a.current&&(a.current.removeEventListener("touchmove",l),a.current.removeEventListener("touchend",u))},(0,vr.Z)((function(){return t&&e.current.addEventListener("touchstart",s),function(){var t;null===(t=e.current)||void 0===t||t.removeEventListener("touchstart",s),r(),clearInterval(c.current)}}),[t])}(w,F,(function(t,e){return!ft(t,e)&&(pt({preventDefault:function(){},deltaY:t}),!0)})),(0,vr.Z)((function(){function t(t){w&&t.preventDefault()}return F.current.addEventListener("wheel",pt),F.current.addEventListener("DOMMouseScroll",vt),F.current.addEventListener("MozMousePixelScroll",t),function(){F.current&&(F.current.removeEventListener("wheel",pt),F.current.removeEventListener("DOMMouseScroll",vt),F.current.removeEventListener("MozMousePixelScroll",t))}}),[w]);var gt=function(t,e,n,r,i,o,a,c){var l=Z.useRef();return function(u){if(null!=u){if(pe.Z.cancel(l.current),"number"==typeof u)a(u);else if(u&&"object"===(0,it.Z)(u)){var s,f=u.align;s="index"in u?u.index:e.findIndex((function(t){return i(t)===u.key}));var h=u.offset,d=void 0===h?0:h;!function c(u,h){if(!(u<0)&&t.current){var p=t.current.clientHeight,v=!1,g=h;if(p){for(var m=h||f,y=0,b=0,x=0,w=Math.min(e.length,s),S=0;S<=w;S+=1){var k=i(e[S]);b=y;var C=n.get(k);y=x=b+(void 0===C?r:C),S===s&&void 0===C&&(v=!0)}var O=null;switch(m){case"top":O=b-d;break;case"bottom":O=x-p+d;break;default:var E=t.current.scrollTop;bE+p&&(g="bottom")}null!==O&&O!==t.current.scrollTop&&a(O)}l.current=(0,pe.Z)((function(){v&&o(),c(u-1,g)}),2)}}(3)}}else c()}}(F,T,Y,a,R,q,N,(function(){var t;null===(t=I.current)||void 0===t||t.delayHidden()}));Z.useImperativeHandle(e,(function(){return{scrollTo:gt}})),(0,vr.Z)((function(){if(y){var t=T.slice(et,nt+1);y(t,T)}}),[et,nt,T]);var mt=function(t,e,n,r,i,o){var a=o.getKey;return t.slice(e,n+1).map((function(t,n){var o=i(t,e+n,{}),c=a(t);return Z.createElement(Gh,{key:c,setRef:function(e){return r(t,e)}},o)}))}(T,et,nt,X,f,L),yt=null;return o&&(yt=(0,lt.Z)((0,B.Z)({},l?"height":"maxHeight",o),ed),w&&(yt.overflowY="hidden",P&&(yt.pointerEvents="none"))),Z.createElement("div",(0,J.Z)({style:(0,lt.Z)((0,lt.Z)({},u),{},{position:"relative"}),className:D},x),Z.createElement(g,{className:"".concat(r,"-holder"),style:yt,ref:F,onScroll:function(t){var e=t.currentTarget.scrollTop;e!==O&&N(e),null==m||m(t)}},Z.createElement(Hh,{prefixCls:r,height:tt,offset:ot,onInnerResize:q,ref:j,innerProps:b},mt)),w&&Z.createElement(Vh,{ref:I,prefixCls:r,scrollTop:O,height:o,scrollHeight:tt,count:T.length,direction:p,onScroll:function(t){N(t)},onStartMove:function(){_(!0)},onStopMove:function(){_(!1)}}))}var rd=Z.forwardRef(nd);rd.displayName="List";var id=rd,od=Z.createContext(null);var ad=["disabled","title","children","style","className"];function cd(t){return"string"==typeof t||"number"==typeof t}var ld=function(t,e){var n=Z.useContext(Zf),r=n.prefixCls,i=n.id,o=n.open,a=n.multiple,c=n.mode,l=n.searchValue,u=n.toggleOpen,s=n.notFoundContent,f=n.onPopupScroll,h=Z.useContext(od),d=h.flattenOptions,p=h.onActiveValue,v=h.defaultActiveFirstOption,g=h.onSelect,m=h.menuItemSelectedIcon,y=h.rawValues,b=h.fieldNames,x=h.virtual,w=h.direction,S=h.listHeight,k=h.listItemHeight,C="".concat(r,"-item"),O=(0,ma.Z)((function(){return d}),[o,d],(function(t,e){return e[0]&&t[1]!==e[1]})),E=Z.useRef(null),M=function(t){t.preventDefault()},A=function(t){E.current&&E.current.scrollTo("number"==typeof t?{index:t}:t)},P=function(t){for(var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=O.length,r=0;r1&&void 0!==arguments[1]&&arguments[1];F(t);var n={source:e?"keyboard":"mouse"},r=O[t];r?p(r.value,t,n):p(null,-1,n)};(0,Z.useEffect)((function(){j(!1!==v?P(0):-1)}),[O.length,l]);var I=Z.useCallback((function(t){return y.has(t)&&"combobox"!==c}),[c,(0,Y.Z)(y).toString(),y.size]);(0,Z.useEffect)((function(){var t,e=setTimeout((function(){if(!a&&o&&1===y.size){var t=Array.from(y)[0],e=O.findIndex((function(e){return e.data.value===t}));-1!==e&&(j(e),A(e))}}));o&&(null===(t=E.current)||void 0===t||t.scrollTo(void 0));return function(){return clearTimeout(e)}}),[o,l,d.length]);var R=function(t){void 0!==t&&g(t,{selected:!y.has(t)}),a||u(!1)};if(Z.useImperativeHandle(e,(function(){return{onKeyDown:function(t){var e=t.which,n=t.ctrlKey;switch(e){case Ya.Z.N:case Ya.Z.P:case Ya.Z.UP:case Ya.Z.DOWN:var r=0;if(e===Ya.Z.UP?r=-1:e===Ya.Z.DOWN?r=1:/(mac\sos|macintosh)/i.test(navigator.appVersion)&&n&&(e===Ya.Z.N?r=1:e===Ya.Z.P&&(r=-1)),0!==r){var i=P(T+r,r);A(i),j(i,!0)}break;case Ya.Z.ENTER:var a=O[T];a&&!a.data.disabled?R(a.value):R(void 0),o&&t.preventDefault();break;case Ya.Z.ESC:u(!1),o&&t.stopPropagation()}},onKeyUp:function(){},scrollTo:function(t){A(t)}}})),0===O.length)return Z.createElement("div",{role:"listbox",id:"".concat(i,"_list"),className:"".concat(C,"-empty"),onMouseDown:M},s);var L=Object.keys(b).map((function(t){return b[t]})),N=function(t){return t.label};function z(t,e){return{role:t.group?"presentation":"option",id:"".concat(i,"_list_").concat(e)}}var U=function(t){var e=O[t];if(!e)return null;var n=e.data||{},r=n.value,i=e.group,o=dt(n,!0),a=N(e);return e?Z.createElement("div",(0,J.Z)({"aria-label":"string"!=typeof a||i?null:a},o,{key:t},z(e,t),{"aria-selected":I(r)}),r):null},H={role:"listbox",id:"".concat(i,"_list")};return Z.createElement(Z.Fragment,null,x&&Z.createElement("div",(0,J.Z)({},H,{style:{height:0,width:0,overflow:"hidden"}}),U(T-1),U(T),U(T+1)),Z.createElement(id,{itemKey:"key",ref:E,data:O,height:S,itemHeight:k,fullHeight:!1,onMouseDown:M,onScroll:f,virtual:x,direction:w,innerProps:x?null:H},(function(t,e){var n,r=t.group,i=t.groupOption,o=t.data,a=t.label,c=t.value,l=o.key;if(r){var u,s=null!==(u=o.title)&&void 0!==u?u:cd(a)?a.toString():void 0;return Z.createElement("div",{className:K()(C,"".concat(C,"-group")),title:s},void 0!==a?a:l)}var f=o.disabled,h=o.title,d=(o.children,o.style),p=o.className,v=(0,rt.Z)(o,ad),g=(0,ce.Z)(v,L),y=I(c),b="".concat(C,"-option"),w=K()(C,b,p,(n={},(0,B.Z)(n,"".concat(b,"-grouped"),i),(0,B.Z)(n,"".concat(b,"-active"),T===e&&!f),(0,B.Z)(n,"".concat(b,"-disabled"),f),(0,B.Z)(n,"".concat(b,"-selected"),y),n)),S=N(t),k=!m||"function"==typeof m||y,O="number"==typeof S?S:S||c,E=cd(O)?O.toString():void 0;return void 0!==h&&(E=h),Z.createElement("div",(0,J.Z)({},dt(g),x?{}:z(t,e),{"aria-selected":y,className:w,title:E,onMouseMove:function(){T===e||f||j(e)},onClick:function(){f||R(c)},style:d}),Z.createElement("div",{className:"".concat(b,"-content")},O),Z.isValidElement(m)||y,k&&Z.createElement(nh,{className:"".concat(C,"-option-state"),customizeIcon:m,customizeIconProps:{isSelected:y}},y?"✓":null))})))},ud=Z.forwardRef(ld);ud.displayName="OptionList";var sd=ud;var fd=["id","mode","prefixCls","backfill","fieldNames","inputValue","searchValue","onSearch","autoClearSearchValue","onSelect","onDeselect","dropdownMatchSelectWidth","filterOption","filterSort","optionFilterProp","optionLabelProp","options","children","defaultActiveFirstOption","menuItemSelectedIcon","virtual","direction","listHeight","listItemHeight","value","defaultValue","labelInValue","onChange"],hd=["inputValue"];var dd=Z.forwardRef((function(t,e){var n=t.id,r=t.mode,i=t.prefixCls,o=void 0===i?"rc-select":i,a=t.backfill,c=t.fieldNames,l=t.inputValue,u=t.searchValue,s=t.onSearch,f=t.autoClearSearchValue,h=void 0===f||f,d=t.onSelect,p=t.onDeselect,v=t.dropdownMatchSelectWidth,g=void 0===v||v,m=t.filterOption,y=t.filterSort,b=t.optionFilterProp,x=t.optionLabelProp,w=t.options,S=t.children,k=t.defaultActiveFirstOption,C=t.menuItemSelectedIcon,O=t.virtual,E=t.direction,M=t.listHeight,A=void 0===M?200:M,P=t.listItemHeight,_=void 0===P?20:P,D=t.value,T=t.defaultValue,F=t.labelInValue,j=t.onChange,I=(0,rt.Z)(t,fd),R=Zh(n),L=Mh(r),N=!(w||!S),z=Z.useMemo((function(){return(void 0!==m||"combobox"!==r)&&m}),[m,r]),U=Z.useMemo((function(){return kh(c,N)}),[JSON.stringify(c),N]),H=(0,At.Z)("",{value:void 0!==u?u:l,postState:function(t){return t||""}}),W=(0,rr.Z)(H,2),V=W[0],G=W[1],X=function(t,e,n,r,i){return Z.useMemo((function(){var o=t;!t&&(o=Ih(e));var a=new Map,c=new Map,l=function(t,e,n){n&&"string"==typeof n&&t.set(e[n],e)};return function t(e){for(var o=arguments.length>1&&void 0!==arguments[1]&&arguments[1],u=0;u1&&void 0!==arguments[1]?arguments[1]:{},n=e.fieldNames,r=e.childrenAsData,i=[],o=kh(n,!1),a=o.label,c=o.value,l=o.options,u=o.groupLabel;return function t(e,n){e.forEach((function(e){if(n||!(l in e)){var o=e[c];i.push({key:Sh(e,i.length),groupOption:n,data:e,label:e[a],value:o})}else{var s=e[u];void 0===s&&r&&(s=e.label),i.push({key:Sh(e,i.length),group:!0,data:e,label:s}),t(e[l],!0)}}))}(t,!1),i}(yt,{fieldNames:U,childrenAsData:N})}),[yt,U,N]),xt=function(t){var e=Q(t);if(ot(e),j&&(e.length!==st.length||e.some((function(t,e){var n;return(null===(n=st[e])||void 0===n?void 0:n.value)!==(null==t?void 0:t.value)})))){var n=F?e:e.map((function(t){return t.value})),r=e.map((function(t){return Ch(ft(t.value))}));j(L?n:n[0],L?r:r[0])}},wt=Z.useState(null),St=(0,rr.Z)(wt,2),kt=St[0],Ct=St[1],Ot=Z.useState(0),Et=(0,rr.Z)(Ot,2),Mt=Et[0],Pt=Et[1],_t=void 0!==k?k:"combobox"!==r,Dt=Z.useCallback((function(t,e){var n=(arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}).source,i=void 0===n?"keyboard":n;Pt(e),a&&"combobox"===r&&null!==t&&"keyboard"===i&&Ct(String(t))}),[a,r]),Tt=function(t,e,n){var r=function(){var e,n=ft(t);return[F?{label:null==n?void 0:n[U.label],value:t,key:null!==(e=null==n?void 0:n.key)&&void 0!==e?e:t}:t,Ch(n)]};if(e&&d){var i=r(),o=(0,rr.Z)(i,2),a=o[0],c=o[1];d(a,c)}else if(!e&&p&&"clear"!==n){var l=r(),u=(0,rr.Z)(l,2),s=u[0],f=u[1];p(s,f)}},Zt=Rh((function(t,e){var n,i=!L||e.selected;n=i?L?[].concat((0,Y.Z)(st),[t]):[t]:st.filter((function(e){return e.value!==t})),xt(n),Tt(t,i),"combobox"===r?Ct(""):Mh&&!h||(G(""),Ct(""))})),Ft=Z.useMemo((function(){var t=!1!==O&&!1!==g;return(0,lt.Z)((0,lt.Z)({},X),{},{flattenOptions:bt,onActiveValue:Dt,defaultActiveFirstOption:_t,onSelect:Zt,menuItemSelectedIcon:C,rawValues:dt,fieldNames:U,virtual:t,direction:E,listHeight:A,listItemHeight:_,childrenAsData:N})}),[X,bt,Dt,_t,Zt,C,dt,U,O,g,A,_,N]);return Z.createElement(od.Provider,{value:Ft},Z.createElement(Ph,(0,J.Z)({},I,{id:R,prefixCls:o,ref:e,omitDomProps:hd,mode:r,displayValues:ht,onDisplayValuesChange:function(t,e){xt(t);var n=e.type,r=e.values;"remove"!==n&&"clear"!==n||r.forEach((function(t){Tt(t.value,!1,n)}))},direction:E,searchValue:V,onSearch:function(t,e){if(G(t),Ct(null),"submit"!==e.source)"blur"!==e.source&&("combobox"===r&&xt(t),null==s||s(t));else{var n=(t||"").trim();if(n){var i=Array.from(new Set([].concat((0,Y.Z)(dt),[n])));xt(i),Tt(n,!0),G("")}}},autoClearSearchValue:h,onSearchSplit:function(t){var e=t;"tags"!==r&&(e=t.map((function(t){var e=$.get(t);return null==e?void 0:e.value})).filter((function(t){return void 0!==t})));var n=Array.from(new Set([].concat((0,Y.Z)(dt),(0,Y.Z)(e))));xt(n),n.forEach((function(t){Tt(t,!0)}))},dropdownMatchSelectWidth:g,OptionList:sd,emptyOptions:!bt.length,activeValue:kt,activeDescendantId:"".concat(R,"_list_").concat(Mt)})))}));var pd=dd;pd.Option=zh,pd.OptGroup=Nh;var vd=pd;var gd=new Yi.E4("antSlideUpIn",{"0%":{transform:"scaleY(0.8)",transformOrigin:"0% 0%",opacity:0},"100%":{transform:"scaleY(1)",transformOrigin:"0% 0%",opacity:1}}),md=new Yi.E4("antSlideUpOut",{"0%":{transform:"scaleY(1)",transformOrigin:"0% 0%",opacity:1},"100%":{transform:"scaleY(0.8)",transformOrigin:"0% 0%",opacity:0}}),yd=new Yi.E4("antSlideDownIn",{"0%":{transform:"scaleY(0.8)",transformOrigin:"100% 100%",opacity:0},"100%":{transform:"scaleY(1)",transformOrigin:"100% 100%",opacity:1}}),bd=new Yi.E4("antSlideDownOut",{"0%":{transform:"scaleY(1)",transformOrigin:"100% 100%",opacity:1},"100%":{transform:"scaleY(0.8)",transformOrigin:"100% 100%",opacity:0}}),xd=new Yi.E4("antSlideLeftIn",{"0%":{transform:"scaleX(0.8)",transformOrigin:"0% 0%",opacity:0},"100%":{transform:"scaleX(1)",transformOrigin:"0% 0%",opacity:1}}),wd=new Yi.E4("antSlideLeftOut",{"0%":{transform:"scaleX(1)",transformOrigin:"0% 0%",opacity:1},"100%":{transform:"scaleX(0.8)",transformOrigin:"0% 0%",opacity:0}}),Sd=new Yi.E4("antSlideRightIn",{"0%":{transform:"scaleX(0.8)",transformOrigin:"100% 0%",opacity:0},"100%":{transform:"scaleX(1)",transformOrigin:"100% 0%",opacity:1}}),kd=new Yi.E4("antSlideRightOut",{"0%":{transform:"scaleX(1)",transformOrigin:"100% 0%",opacity:1},"100%":{transform:"scaleX(0.8)",transformOrigin:"100% 0%",opacity:0}}),Cd={"slide-up":{inKeyframes:gd,outKeyframes:md},"slide-down":{inKeyframes:yd,outKeyframes:bd},"slide-left":{inKeyframes:xd,outKeyframes:wd},"slide-right":{inKeyframes:Sd,outKeyframes:kd}},Od=function(t,e){var n,r=t.antCls,i="".concat(r,"-").concat(e),o=Cd[e],a=o.inKeyframes,c=o.outKeyframes;return[no(i,a,c,t.motionDurationMid),(n={},(0,V.Z)(n,"\n ".concat(i,"-enter,\n ").concat(i,"-appear\n "),(0,V.Z)({transform:"scale(0)",transformOrigin:"0% 0%",opacity:0,animationTimingFunction:t.motionEaseOutQuint},"&-prepare",{transform:"scale(1)"})),(0,V.Z)(n,"".concat(i,"-leave"),{animationTimingFunction:t.motionEaseInQuint}),n)]},Ed=new Yi.E4("antMoveDownIn",{"0%":{transform:"translate3d(0, 100%, 0)",transformOrigin:"0 0",opacity:0},"100%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1}}),Md=new Yi.E4("antMoveDownOut",{"0%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1},"100%":{transform:"translate3d(0, 100%, 0)",transformOrigin:"0 0",opacity:0}}),Ad=new Yi.E4("antMoveLeftIn",{"0%":{transform:"translate3d(-100%, 0, 0)",transformOrigin:"0 0",opacity:0},"100%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1}}),Pd=new Yi.E4("antMoveLeftOut",{"0%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1},"100%":{transform:"translate3d(-100%, 0, 0)",transformOrigin:"0 0",opacity:0}}),_d=new Yi.E4("antMoveRightIn",{"0%":{transform:"translate3d(100%, 0, 0)",transformOrigin:"0 0",opacity:0},"100%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1}}),Dd=new Yi.E4("antMoveRightOut",{"0%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1},"100%":{transform:"translate3d(100%, 0, 0)",transformOrigin:"0 0",opacity:0}}),Td={"move-up":{inKeyframes:new Yi.E4("antMoveUpIn",{"0%":{transform:"translate3d(0, -100%, 0)",transformOrigin:"0 0",opacity:0},"100%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1}}),outKeyframes:new Yi.E4("antMoveUpOut",{"0%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1},"100%":{transform:"translate3d(0, -100%, 0)",transformOrigin:"0 0",opacity:0}})},"move-down":{inKeyframes:Ed,outKeyframes:Md},"move-left":{inKeyframes:Ad,outKeyframes:Pd},"move-right":{inKeyframes:_d,outKeyframes:Dd}},Zd=function(t,e){var n,r=t.antCls,i="".concat(r,"-").concat(e),o=Td[e],a=o.inKeyframes,c=o.outKeyframes;return[no(i,a,c,t.motionDurationMid),(n={},(0,V.Z)(n,"\n ".concat(i,"-enter,\n ").concat(i,"-appear\n "),{opacity:0,animationTimingFunction:t.motionEaseOutCirc}),(0,V.Z)(n,"".concat(i,"-leave"),{animationTimingFunction:t.motionEaseInOutCirc}),n)]},Fd=function(t){var e=t.controlPaddingHorizontal,n=t.controlHeight,r=t.fontSize,i=t.lineHeight;return{position:"relative",display:"block",minHeight:n,padding:"".concat((n-r*i)/2,"px ").concat(e,"px"),color:t.colorText,fontWeight:"normal",fontSize:r,lineHeight:i,boxSizing:"border-box"}},jd=function(t){var e,n,r,i=t.antCls,o=t.componentCls,a="".concat(o,"-item"),c="&".concat(i,"-slide-up-enter").concat(i,"-slide-up-enter-active"),l="&".concat(i,"-slide-up-appear").concat(i,"-slide-up-appear-active"),u="&".concat(i,"-slide-up-leave").concat(i,"-slide-up-leave-active"),s="".concat(o,"-dropdown-placement-");return[(0,V.Z)({},"".concat(o,"-dropdown"),Object.assign(Object.assign({},(0,Qe.Wf)(t)),(r={position:"absolute",top:-9999,zIndex:t.zIndexPopup,boxSizing:"border-box",padding:t.paddingXXS,overflow:"hidden",fontSize:t.fontSize,fontVariant:"initial",backgroundColor:t.colorBgElevated,borderRadius:t.borderRadiusLG,outline:"none",boxShadow:t.boxShadowSecondary},(0,V.Z)(r,"\n ".concat(c).concat(s,"bottomLeft,\n ").concat(l).concat(s,"bottomLeft\n "),{animationName:gd}),(0,V.Z)(r,"\n ".concat(c).concat(s,"topLeft,\n ").concat(l).concat(s,"topLeft,\n ").concat(c).concat(s,"topRight,\n ").concat(l).concat(s,"topRight\n "),{animationName:yd}),(0,V.Z)(r,"".concat(u).concat(s,"bottomLeft"),{animationName:md}),(0,V.Z)(r,"\n ".concat(u).concat(s,"topLeft,\n ").concat(u).concat(s,"topRight\n "),{animationName:bd}),(0,V.Z)(r,"&-hidden",{display:"none"}),(0,V.Z)(r,"".concat(a),Object.assign(Object.assign({},Fd(t)),{cursor:"pointer",transition:"background ".concat(t.motionDurationSlow," ease"),borderRadius:t.borderRadiusSM,"&-group":{color:t.colorTextDescription,fontSize:t.fontSizeSM,cursor:"default"},"&-option":(n={display:"flex","&-content":Object.assign({flex:"auto"},Qe.vS),"&-state":{flex:"none",display:"flex",alignItems:"center"}},(0,V.Z)(n,"&-active:not(".concat(a,"-option-disabled)"),{backgroundColor:t.controlItemBgHover}),(0,V.Z)(n,"&-selected:not(".concat(a,"-option-disabled)"),(0,V.Z)({color:t.colorText,fontWeight:t.fontWeightStrong,backgroundColor:t.controlItemBgActive},"".concat(a,"-option-state"),{color:t.colorPrimary})),(0,V.Z)(n,"&-disabled",(e={},(0,V.Z)(e,"&".concat(a,"-option-selected"),{backgroundColor:t.colorBgContainerDisabled}),(0,V.Z)(e,"color",t.colorTextDisabled),(0,V.Z)(e,"cursor","not-allowed"),e)),(0,V.Z)(n,"&-grouped",{paddingInlineStart:2*t.controlPaddingHorizontal}),n)})),(0,V.Z)(r,"&-rtl",{direction:"rtl"}),r))),Od(t,"slide-up"),Od(t,"slide-down"),Zd(t,"move-up"),Zd(t,"move-down")]},Id=function(t){var e=t.controlHeightSM,n=(t.controlHeight-e)/2-t.lineWidth;return[n,Math.ceil(n/2)]};function Rd(t,e){var n,r,i,o,a,c=t.componentCls,l=t.iconCls,u="".concat(c,"-selection-overflow"),s=t.controlHeightSM,f=Id(t),h=(0,G.Z)(f,1)[0],d=e?"".concat(c,"-").concat(e):"";return(0,V.Z)({},"".concat(c,"-multiple").concat(d),(a={fontSize:t.fontSize},(0,V.Z)(a,u,{position:"relative",display:"flex",flex:"auto",flexWrap:"wrap",maxWidth:"100%","&-item":{flex:"none",alignSelf:"center",maxWidth:"100%",display:"inline-flex"}}),(0,V.Z)(a,"".concat(c,"-selector"),(n={display:"flex",flexWrap:"wrap",alignItems:"center",padding:"".concat(h-2,"px ").concat(4,"px"),borderRadius:t.borderRadius},(0,V.Z)(n,"".concat(c,"-show-search&"),{cursor:"text"}),(0,V.Z)(n,"".concat(c,"-disabled&"),{background:t.colorBgContainerDisabled,cursor:"not-allowed"}),(0,V.Z)(n,"&:after",{display:"inline-block",width:0,margin:"".concat(2,"px 0"),lineHeight:"".concat(s,"px"),visibility:"hidden",content:'"\\a0"'}),n)),(0,V.Z)(a,"\n &".concat(c,"-show-arrow ").concat(c,"-selector,\n &").concat(c,"-allow-clear ").concat(c,"-selector\n "),{paddingInlineEnd:t.fontSizeIcon+t.controlPaddingHorizontal}),(0,V.Z)(a,"".concat(c,"-selection-item"),(i={position:"relative",display:"flex",flex:"none",boxSizing:"border-box",maxWidth:"100%",height:s,marginTop:2,marginBottom:2,lineHeight:"".concat(s-2*t.lineWidth,"px"),background:t.colorFillSecondary,borderRadius:t.borderRadiusSM,cursor:"default",transition:"font-size ".concat(t.motionDurationSlow,", line-height ").concat(t.motionDurationSlow,", height ").concat(t.motionDurationSlow),userSelect:"none",marginInlineEnd:4,paddingInlineStart:t.paddingXS,paddingInlineEnd:t.paddingXS/2},(0,V.Z)(i,"".concat(c,"-disabled&"),{color:t.colorTextDisabled,cursor:"not-allowed"}),(0,V.Z)(i,"&-content",{display:"inline-block",marginInlineEnd:t.paddingXS/2,overflow:"hidden",whiteSpace:"pre",textOverflow:"ellipsis"}),(0,V.Z)(i,"&-remove",Object.assign(Object.assign({},(0,Qe.Ro)()),(r={display:"inline-flex",alignItems:"center",color:t.colorIcon,fontWeight:"bold",fontSize:10,lineHeight:"inherit",cursor:"pointer"},(0,V.Z)(r,"> ".concat(l),{verticalAlign:"-0.2em"}),(0,V.Z)(r,"&:hover",{color:t.colorIconHover}),r))),i)),(0,V.Z)(a,"".concat(u,"-item + ").concat(u,"-item"),(0,V.Z)({},"".concat(c,"-selection-search"),{marginInlineStart:0})),(0,V.Z)(a,"".concat(c,"-selection-search"),(o={display:"inline-flex",position:"relative",maxWidth:"100%",marginInlineStart:t.inputPaddingHorizontalBase-h},(0,V.Z)(o,"\n &-input,\n &-mirror\n ",{height:s,fontFamily:t.fontFamily,lineHeight:"".concat(s,"px"),transition:"all ".concat(t.motionDurationSlow)}),(0,V.Z)(o,"&-input",{width:"100%",minWidth:4.1}),(0,V.Z)(o,"&-mirror",{position:"absolute",top:0,insetInlineStart:0,insetInlineEnd:"auto",zIndex:999,whiteSpace:"pre",visibility:"hidden"}),o)),(0,V.Z)(a,"".concat(c,"-selection-placeholder "),{position:"absolute",top:"50%",insetInlineStart:t.inputPaddingHorizontalBase,insetInlineEnd:t.inputPaddingHorizontalBase,transform:"translateY(-50%)",transition:"all ".concat(t.motionDurationSlow)}),a))}var Ld=function(t){var e,n=t.componentCls,r=(0,nn.TS)(t,{controlHeight:t.controlHeightSM,controlHeightSM:t.controlHeightXS,borderRadius:t.borderRadiusSM,borderRadiusSM:t.borderRadiusXS}),i=(0,nn.TS)(t,{fontSize:t.fontSizeLG,controlHeight:t.controlHeightLG,controlHeightSM:t.controlHeight,borderRadius:t.borderRadiusLG,borderRadiusSM:t.borderRadius}),o=Id(t),a=(0,G.Z)(o,2)[1];return[Rd(t),Rd(r,"sm"),(0,V.Z)({},"".concat(n,"-multiple").concat(n,"-sm"),(e={},(0,V.Z)(e,"".concat(n,"-selection-placeholder"),{insetInline:t.controlPaddingHorizontalSM-t.lineWidth}),(0,V.Z)(e,"".concat(n,"-selection-search"),{marginInlineStart:a}),e)),Rd(i,"lg")]};function Nd(t,e){var n,r,i,o,a=t.componentCls,c=t.inputPaddingHorizontalBase,l=t.borderRadius,u=t.controlHeight-2*t.lineWidth,s=Math.ceil(1.25*t.fontSize),f=e?"".concat(a,"-").concat(e):"";return(0,V.Z)({},"".concat(a,"-single").concat(f),(o={fontSize:t.fontSize},(0,V.Z)(o,"".concat(a,"-selector"),Object.assign(Object.assign({},(0,Qe.Wf)(t)),(n={display:"flex",borderRadius:l},(0,V.Z)(n,"".concat(a,"-selection-search"),{position:"absolute",top:0,insetInlineStart:c,insetInlineEnd:c,bottom:0,"&-input":{width:"100%"}}),(0,V.Z)(n,"\n ".concat(a,"-selection-item,\n ").concat(a,"-selection-placeholder\n "),{padding:0,lineHeight:"".concat(u,"px"),transition:"all ".concat(t.motionDurationSlow,", visibility 0s"),"@supports (-moz-appearance: meterbar)":{lineHeight:"".concat(u,"px")}}),(0,V.Z)(n,"".concat(a,"-selection-item"),{position:"relative",userSelect:"none"}),(0,V.Z)(n,"".concat(a,"-selection-placeholder"),{transition:"none",pointerEvents:"none"}),(0,V.Z)(n,["&:after","".concat(a,"-selection-item:after"),"".concat(a,"-selection-placeholder:after")].join(","),{display:"inline-block",width:0,visibility:"hidden",content:'"\\a0"'}),n))),(0,V.Z)(o,"\n &".concat(a,"-show-arrow ").concat(a,"-selection-item,\n &").concat(a,"-show-arrow ").concat(a,"-selection-placeholder\n "),{paddingInlineEnd:s}),(0,V.Z)(o,"&".concat(a,"-open ").concat(a,"-selection-item"),{color:t.colorTextPlaceholder}),(0,V.Z)(o,"&:not(".concat(a,"-customize-input)"),(0,V.Z)({},"".concat(a,"-selector"),(r={width:"100%",height:t.controlHeight,padding:"0 ".concat(c,"px")},(0,V.Z)(r,"".concat(a,"-selection-search-input"),{height:u}),(0,V.Z)(r,"&:after",{lineHeight:"".concat(u,"px")}),r))),(0,V.Z)(o,"&".concat(a,"-customize-input"),(0,V.Z)({},"".concat(a,"-selector"),(i={"&:after":{display:"none"}},(0,V.Z)(i,"".concat(a,"-selection-search"),{position:"static",width:"100%"}),(0,V.Z)(i,"".concat(a,"-selection-placeholder"),{position:"absolute",insetInlineStart:0,insetInlineEnd:0,padding:"0 ".concat(c,"px"),"&:after":{display:"none"}}),i))),o))}function Bd(t){var e,n=t.componentCls,r=t.controlPaddingHorizontalSM-t.lineWidth;return[Nd(t),Nd((0,nn.TS)(t,{controlHeight:t.controlHeightSM,borderRadius:t.borderRadiusSM}),"sm"),(0,V.Z)({},"".concat(n,"-single").concat(n,"-sm"),(0,V.Z)({},"&:not(".concat(n,"-customize-input)"),(e={},(0,V.Z)(e,"".concat(n,"-selection-search"),{insetInlineStart:r,insetInlineEnd:r}),(0,V.Z)(e,"".concat(n,"-selector"),{padding:"0 ".concat(r,"px")}),(0,V.Z)(e,"&".concat(n,"-show-arrow ").concat(n,"-selection-search"),{insetInlineEnd:r+1.5*t.fontSize}),(0,V.Z)(e,"\n &".concat(n,"-show-arrow ").concat(n,"-selection-item,\n &").concat(n,"-show-arrow ").concat(n,"-selection-placeholder\n "),{paddingInlineEnd:1.5*t.fontSize}),e))),Nd((0,nn.TS)(t,{controlHeight:t.controlHeightLG,fontSize:t.fontSizeLG,borderRadius:t.borderRadiusLG}),"lg")]}var zd=function(t,e){var n,r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=e.componentCls,o=e.borderHoverColor,a=e.outlineColor,c=e.antCls,l=r?(0,V.Z)({},"".concat(i,"-selector"),{borderColor:o}):{};return(0,V.Z)({},t,(0,V.Z)({},"&:not(".concat(i,"-disabled):not(").concat(i,"-customize-input):not(").concat(c,"-pagination-size-changer)"),Object.assign(Object.assign({},l),(n={},(0,V.Z)(n,"".concat(i,"-focused& ").concat(i,"-selector"),{borderColor:o,boxShadow:"0 0 0 ".concat(e.controlOutlineWidth,"px ").concat(a),outline:0}),(0,V.Z)(n,"&:hover ".concat(i,"-selector"),{borderColor:o}),n))))},Ud=function(t){var e,n,r,i=t.componentCls,o=t.inputPaddingHorizontalBase,a=t.iconCls;return r={},(0,V.Z)(r,i,Object.assign(Object.assign({},(0,Qe.Wf)(t)),(n={position:"relative",display:"inline-block",cursor:"pointer"},(0,V.Z)(n,"&:not(".concat(i,"-customize-input) ").concat(i,"-selector"),Object.assign(Object.assign({},function(t){var e,n,r=t.componentCls;return n={position:"relative",backgroundColor:t.colorBgContainer,border:"".concat(t.lineWidth,"px ").concat(t.lineType," ").concat(t.colorBorder),transition:"all ".concat(t.motionDurationMid," ").concat(t.motionEaseInOut),input:{cursor:"pointer"}},(0,V.Z)(n,"".concat(r,"-show-search&"),{cursor:"text",input:{cursor:"auto",color:"inherit"}}),(0,V.Z)(n,"".concat(r,"-disabled&"),(e={color:t.colorTextDisabled,background:t.colorBgContainerDisabled,cursor:"not-allowed"},(0,V.Z)(e,"".concat(r,"-multiple&"),{background:t.colorBgContainerDisabled}),(0,V.Z)(e,"input",{cursor:"not-allowed"}),e)),n}(t)),function(t){var e=t.componentCls;return(0,V.Z)({},"".concat(e,"-selection-search-input"),{margin:0,padding:0,background:"transparent",border:"none",outline:"none",appearance:"none","&::-webkit-search-cancel-button":{display:"none","-webkit-appearance":"none"}})}(t))),(0,V.Z)(n,"".concat(i,"-selection-item"),Object.assign({flex:1,fontWeight:"normal"},Qe.vS)),(0,V.Z)(n,"".concat(i,"-selection-placeholder"),Object.assign(Object.assign({},Qe.vS),{flex:1,color:t.colorTextPlaceholder,pointerEvents:"none"})),(0,V.Z)(n,"".concat(i,"-arrow"),Object.assign(Object.assign({},(0,Qe.Ro)()),(e={position:"absolute",top:"50%",insetInlineStart:"auto",insetInlineEnd:o,height:t.fontSizeIcon,marginTop:-t.fontSizeIcon/2,color:t.colorTextQuaternary,fontSize:t.fontSizeIcon,lineHeight:1,textAlign:"center",pointerEvents:"none",display:"flex",alignItems:"center"},(0,V.Z)(e,a,(0,V.Z)({verticalAlign:"top",transition:"transform ".concat(t.motionDurationSlow),"> svg":{verticalAlign:"top"}},"&:not(".concat(i,"-suffix)"),{pointerEvents:"auto"})),(0,V.Z)(e,"".concat(i,"-disabled &"),{cursor:"not-allowed"}),(0,V.Z)(e,"> *:not(:last-child)",{marginInlineEnd:8}),e))),(0,V.Z)(n,"".concat(i,"-clear"),{position:"absolute",top:"50%",insetInlineStart:"auto",insetInlineEnd:o,zIndex:1,display:"inline-block",width:t.fontSizeIcon,height:t.fontSizeIcon,marginTop:-t.fontSizeIcon/2,color:t.colorTextQuaternary,fontSize:t.fontSizeIcon,fontStyle:"normal",lineHeight:1,textAlign:"center",textTransform:"none",background:t.colorBgContainer,cursor:"pointer",opacity:0,transition:"color ".concat(t.motionDurationMid," ease, opacity ").concat(t.motionDurationSlow," ease"),textRendering:"auto","&:before":{display:"block"},"&:hover":{color:t.colorTextTertiary}}),(0,V.Z)(n,"&:hover",(0,V.Z)({},"".concat(i,"-clear"),{opacity:1})),n))),(0,V.Z)(r,"".concat(i,"-has-feedback"),(0,V.Z)({},"".concat(i,"-clear"),{insetInlineEnd:o+t.fontSize+t.paddingXS})),r},Hd=function(t){var e,n=t.componentCls;return[(0,V.Z)({},n,(e={},(0,V.Z)(e,"&-borderless ".concat(n,"-selector"),{backgroundColor:"transparent !important",borderColor:"transparent !important",boxShadow:"none !important"}),(0,V.Z)(e,"&".concat(n,"-in-form-item"),{width:"100%"}),e)),Ud(t),Bd(t),Ld(t),jd(t),(0,V.Z)({},"".concat(n,"-rtl"),{direction:"rtl"}),zd(n,(0,nn.TS)(t,{borderHoverColor:t.colorPrimaryHover,outlineColor:t.controlOutline})),zd("".concat(n,"-status-error"),(0,nn.TS)(t,{borderHoverColor:t.colorErrorHover,outlineColor:t.colorErrorOutline}),!0),zd("".concat(n,"-status-warning"),(0,nn.TS)(t,{borderHoverColor:t.colorWarningHover,outlineColor:t.colorWarningOutline}),!0),tn(t,{borderElCls:"".concat(n,"-selector"),focusElCls:"".concat(n,"-focused")})]},Wd=(0,se.Z)("Select",(function(t,e){var n=e.rootPrefixCls,r=(0,nn.TS)(t,{rootPrefixCls:n,inputPaddingHorizontalBase:t.paddingSM-1});return[Hd(r)]}),(function(t){return{zIndexPopup:t.zIndexPopupBase+50}}));function Vd(t,e){return t||function(t){var e={overflow:{adjustX:!0,adjustY:!0,shiftY:!0},htmlRegion:"scroll"===t?"scroll":"visible",_experimental:{dynamicInset:!0}};return{bottomLeft:Object.assign(Object.assign({},e),{points:["tl","bl"],offset:[0,4]}),bottomRight:Object.assign(Object.assign({},e),{points:["tr","br"],offset:[0,4]}),topLeft:Object.assign(Object.assign({},e),{points:["bl","tl"],offset:[0,-4]}),topRight:Object.assign(Object.assign({},e),{points:["br","tr"],offset:[0,-4]})}}(e)}var Gd={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z"}}]},name:"down",theme:"outlined"},Xd=function(t,e){return Z.createElement(Wt.Z,(0,J.Z)({},t,{ref:e,icon:Gd}))};var qd=Z.forwardRef(Xd),Yd={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z"}}]},name:"search",theme:"outlined"},$d=function(t,e){return Z.createElement(Wt.Z,(0,J.Z)({},t,{ref:e,icon:Yd}))};var Kd=Z.forwardRef($d);var Jd=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(t);i input".concat(n),{padding:0,fontSize:"inherit",border:"none",borderRadius:0,outline:"none","&::-ms-reveal":{display:"none"},"&:focus":{boxShadow:"none !important"}}),(0,V.Z)(e,"&::before",{display:"inline-block",width:0,visibility:"hidden",content:'"\\a0"'}),(0,V.Z)(e,"".concat(n),{"&-prefix, &-suffix":{display:"flex",flex:"none",alignItems:"center","> *:not(:last-child)":{marginInlineEnd:t.paddingXS}},"&-show-count-suffix":{color:i},"&-show-count-has-suffix":{marginInlineEnd:t.paddingXXS},"&-prefix":{marginInlineEnd:r},"&-suffix":{marginInlineStart:r}}),e)),function(t){var e=t.componentCls;return(0,V.Z)({},"".concat(e,"-clear-icon"),{margin:0,color:t.colorTextQuaternary,fontSize:t.fontSizeIcon,verticalAlign:-1,cursor:"pointer",transition:"color ".concat(t.motionDurationSlow),"&:hover":{color:t.colorTextTertiary},"&:active":{color:t.colorText},"&-hidden":{visibility:"hidden"},"&-has-suffix":{margin:"0 ".concat(t.inputAffixPadding,"px")}})}(t)),(0,V.Z)({},"".concat(l).concat(n,"-password-icon"),{color:a,cursor:"pointer",transition:"all ".concat(o),"&:hover":{color:c}})),fp(t,"".concat(n,"-affix-wrapper"))))},vp=function(t){var e,n=t.componentCls,r=t.colorError,i=t.colorWarning,o=t.borderRadiusLG,a=t.borderRadiusSM;return(0,V.Z)({},"".concat(n,"-group"),Object.assign(Object.assign(Object.assign({},(0,Qe.Wf)(t)),function(t){var e,n,r,i,o,a,c,l=t.componentCls,u=t.antCls;return c={position:"relative",display:"table",width:"100%",borderCollapse:"separate",borderSpacing:0},(0,V.Z)(c,"&[class*='col-']",{paddingInlineEnd:t.paddingXS,"&:last-child":{paddingInlineEnd:0}}),(0,V.Z)(c,"&-lg ".concat(l,", &-lg > ").concat(l,"-group-addon"),Object.assign({},up(t))),(0,V.Z)(c,"&-sm ".concat(l,", &-sm > ").concat(l,"-group-addon"),Object.assign({},sp(t))),(0,V.Z)(c,"&-lg ".concat(u,"-select-single ").concat(u,"-select-selector"),{height:t.controlHeightLG}),(0,V.Z)(c,"&-sm ".concat(u,"-select-single ").concat(u,"-select-selector"),{height:t.controlHeightSM}),(0,V.Z)(c,"> ".concat(l),{display:"table-cell","&:not(:first-child):not(:last-child)":{borderRadius:0}}),(0,V.Z)(c,"".concat(l,"-group"),(r={},(0,V.Z)(r,"&-addon, &-wrap",{display:"table-cell",width:1,whiteSpace:"nowrap",verticalAlign:"middle","&:not(:first-child):not(:last-child)":{borderRadius:0}}),(0,V.Z)(r,"&-wrap > *",{display:"block !important"}),(0,V.Z)(r,"&-addon",(n={position:"relative",padding:"0 ".concat(t.inputPaddingHorizontal,"px"),color:t.colorText,fontWeight:"normal",fontSize:t.fontSize,textAlign:"center",backgroundColor:t.colorFillAlter,border:"".concat(t.lineWidth,"px ").concat(t.lineType," ").concat(t.colorBorder),borderRadius:t.borderRadius,transition:"all ".concat(t.motionDurationSlow),lineHeight:1},(0,V.Z)(n,"".concat(u,"-select"),(e={margin:"-".concat(t.inputPaddingVertical+1,"px -").concat(t.inputPaddingHorizontal,"px")},(0,V.Z)(e,"&".concat(u,"-select-single:not(").concat(u,"-select-customize-input)"),(0,V.Z)({},"".concat(u,"-select-selector"),{backgroundColor:"inherit",border:"".concat(t.lineWidth,"px ").concat(t.lineType," transparent"),boxShadow:"none"})),(0,V.Z)(e,"&-open, &-focused",(0,V.Z)({},"".concat(u,"-select-selector"),{color:t.colorPrimary})),e)),(0,V.Z)(n,"".concat(u,"-cascader-picker"),(0,V.Z)({margin:"-9px -".concat(t.inputPaddingHorizontal,"px"),backgroundColor:"transparent"},"".concat(u,"-cascader-input"),{textAlign:"start",border:0,boxShadow:"none"})),n)),(0,V.Z)(r,"&-addon:first-child",{borderInlineEnd:0}),(0,V.Z)(r,"&-addon:last-child",{borderInlineStart:0}),r)),(0,V.Z)(c,"".concat(l),{width:"100%",marginBottom:0,textAlign:"inherit","&:focus":{zIndex:1,borderInlineEndWidth:1},"&:hover":(0,V.Z)({zIndex:1,borderInlineEndWidth:1},"".concat(l,"-search-with-button &"),{zIndex:0})}),(0,V.Z)(c,"> ".concat(l,":first-child, ").concat(l,"-group-addon:first-child"),(0,V.Z)({borderStartEndRadius:0,borderEndEndRadius:0},"".concat(u,"-select ").concat(u,"-select-selector"),{borderStartEndRadius:0,borderEndEndRadius:0})),(0,V.Z)(c,"> ".concat(l,"-affix-wrapper"),(i={},(0,V.Z)(i,"&:not(:first-child) ".concat(l),{borderStartStartRadius:0,borderEndStartRadius:0}),(0,V.Z)(i,"&:not(:last-child) ".concat(l),{borderStartEndRadius:0,borderEndEndRadius:0}),i)),(0,V.Z)(c,"> ".concat(l,":last-child, ").concat(l,"-group-addon:last-child"),(0,V.Z)({borderStartStartRadius:0,borderEndStartRadius:0},"".concat(u,"-select ").concat(u,"-select-selector"),{borderStartStartRadius:0,borderEndStartRadius:0})),(0,V.Z)(c,"".concat(l,"-affix-wrapper"),(0,V.Z)({"&:not(:last-child)":(0,V.Z)({borderStartEndRadius:0,borderEndEndRadius:0},"".concat(l,"-search &"),{borderStartStartRadius:t.borderRadius,borderEndStartRadius:t.borderRadius})},"&:not(:first-child), ".concat(l,"-search &:not(:first-child)"),{borderStartStartRadius:0,borderEndStartRadius:0})),(0,V.Z)(c,"&".concat(l,"-group-compact"),Object.assign(Object.assign({display:"block"},(0,Qe.dF)()),(a={},(0,V.Z)(a,"".concat(l,"-group-addon, ").concat(l,"-group-wrap, > ").concat(l),{"&:not(:first-child):not(:last-child)":{borderInlineEndWidth:t.lineWidth,"&:hover":{zIndex:1},"&:focus":{zIndex:1}}}),(0,V.Z)(a,"& > *",{display:"inline-block",float:"none",verticalAlign:"top",borderRadius:0}),(0,V.Z)(a,"\n & > ".concat(l,"-affix-wrapper,\n & > ").concat(l,"-number-affix-wrapper,\n & > ").concat(u,"-picker-range\n "),{display:"inline-flex"}),(0,V.Z)(a,"& > *:not(:last-child)",{marginInlineEnd:-t.lineWidth,borderInlineEndWidth:t.lineWidth}),(0,V.Z)(a,"".concat(l),{float:"none"}),(0,V.Z)(a,"& > ".concat(u,"-select > ").concat(u,"-select-selector,\n & > ").concat(u,"-select-auto-complete ").concat(l,",\n & > ").concat(u,"-cascader-picker ").concat(l,",\n & > ").concat(l,"-group-wrapper ").concat(l),{borderInlineEndWidth:t.lineWidth,borderRadius:0,"&:hover":{zIndex:1},"&:focus":{zIndex:1}}),(0,V.Z)(a,"& > ".concat(u,"-select-focused"),{zIndex:1}),(0,V.Z)(a,"& > ".concat(u,"-select > ").concat(u,"-select-arrow"),{zIndex:1}),(0,V.Z)(a,"& > *:first-child,\n & > ".concat(u,"-select:first-child > ").concat(u,"-select-selector,\n & > ").concat(u,"-select-auto-complete:first-child ").concat(l,",\n & > ").concat(u,"-cascader-picker:first-child ").concat(l),{borderStartStartRadius:t.borderRadius,borderEndStartRadius:t.borderRadius}),(0,V.Z)(a,"& > *:last-child,\n & > ".concat(u,"-select:last-child > ").concat(u,"-select-selector,\n & > ").concat(u,"-cascader-picker:last-child ").concat(l,",\n & > ").concat(u,"-cascader-picker-focused:last-child ").concat(l),{borderInlineEndWidth:t.lineWidth,borderStartEndRadius:t.borderRadius,borderEndEndRadius:t.borderRadius}),(0,V.Z)(a,"& > ".concat(u,"-select-auto-complete ").concat(l),{verticalAlign:"top"}),(0,V.Z)(a,"".concat(l,"-group-wrapper + ").concat(l,"-group-wrapper"),(0,V.Z)({marginInlineStart:-t.lineWidth},"".concat(l,"-affix-wrapper"),{borderRadius:0})),(0,V.Z)(a,"".concat(l,"-group-wrapper:not(:last-child)"),(0,V.Z)({},"&".concat(l,"-search > ").concat(l,"-group"),(o={},(0,V.Z)(o,"& > ".concat(l,"-group-addon > ").concat(l,"-search-button"),{borderRadius:0}),(0,V.Z)(o,"& > ".concat(l),{borderStartStartRadius:t.borderRadius,borderStartEndRadius:0,borderEndEndRadius:0,borderEndStartRadius:t.borderRadius}),o))),a))),c}(t)),{"&-rtl":{direction:"rtl"},"&-wrapper":(e={display:"inline-block",width:"100%",textAlign:"start",verticalAlign:"top","&-rtl":{direction:"rtl"},"&-lg":(0,V.Z)({},"".concat(n,"-group-addon"),{borderRadius:o,fontSize:t.fontSizeLG}),"&-sm":(0,V.Z)({},"".concat(n,"-group-addon"),{borderRadius:a}),"&-status-error":(0,V.Z)({},"".concat(n,"-group-addon"),{color:r,borderColor:r}),"&-status-warning":(0,V.Z)({},"".concat(n,"-group-addon"),{color:i,borderColor:i}),"&-disabled":(0,V.Z)({},"".concat(n,"-group-addon"),Object.assign({},lp(t)))},(0,V.Z)(e,"&:not(".concat(n,"-compact-first-item):not(").concat(n,"-compact-last-item)").concat(n,"-compact-item"),(0,V.Z)({},"".concat(n,", ").concat(n,"-group-addon"),{borderRadius:0})),(0,V.Z)(e,"&:not(".concat(n,"-compact-last-item)").concat(n,"-compact-first-item"),(0,V.Z)({},"".concat(n,", ").concat(n,"-group-addon"),{borderStartEndRadius:0,borderEndEndRadius:0})),(0,V.Z)(e,"&:not(".concat(n,"-compact-first-item)").concat(n,"-compact-last-item"),(0,V.Z)({},"".concat(n,", ").concat(n,"-group-addon"),{borderStartStartRadius:0,borderEndStartRadius:0})),e)}))},gp=function(t){var e,n,r,i=t.componentCls,o=t.antCls,a="".concat(i,"-search");return(0,V.Z)({},a,(r={},(0,V.Z)(r,"".concat(i),{"&:hover, &:focus":(0,V.Z)({borderColor:t.colorPrimaryHover},"+ ".concat(i,"-group-addon ").concat(a,"-button:not(").concat(o,"-btn-primary)"),{borderInlineStartColor:t.colorPrimaryHover})}),(0,V.Z)(r,"".concat(i,"-affix-wrapper"),{borderRadius:0}),(0,V.Z)(r,"".concat(i,"-lg"),{lineHeight:t.lineHeightLG-2e-4}),(0,V.Z)(r,"> ".concat(i,"-group"),(0,V.Z)({},"> ".concat(i,"-group-addon:last-child"),(e={insetInlineStart:-1,padding:0,border:0},(0,V.Z)(e,"".concat(a,"-button"),{paddingTop:0,paddingBottom:0,borderStartStartRadius:0,borderStartEndRadius:t.borderRadius,borderEndEndRadius:t.borderRadius,borderEndStartRadius:0}),(0,V.Z)(e,"".concat(a,"-button:not(").concat(o,"-btn-primary)"),(0,V.Z)({color:t.colorTextDescription,"&:hover":{color:t.colorPrimaryHover},"&:active":{color:t.colorPrimaryActive}},"&".concat(o,"-btn-loading::before"),{insetInlineStart:0,insetInlineEnd:0,insetBlockStart:0,insetBlockEnd:0})),e))),(0,V.Z)(r,"".concat(a,"-button"),{height:t.controlHeight,"&:hover, &:focus":{zIndex:1}}),(0,V.Z)(r,"&-large ".concat(a,"-button"),{height:t.controlHeightLG}),(0,V.Z)(r,"&-small ".concat(a,"-button"),{height:t.controlHeightSM}),(0,V.Z)(r,"&-rtl",{direction:"rtl"}),(0,V.Z)(r,"&".concat(i,"-compact-item"),(n={},(0,V.Z)(n,"&:not(".concat(i,"-compact-last-item)"),(0,V.Z)({},"".concat(i,"-group-addon"),(0,V.Z)({},"".concat(i,"-search-button"),{marginInlineEnd:-t.lineWidth,borderRadius:0}))),(0,V.Z)(n,"&:not(".concat(i,"-compact-first-item)"),(0,V.Z)({},"".concat(i,",").concat(i,"-affix-wrapper"),{borderRadius:0})),(0,V.Z)(n,"> ".concat(i,"-group-addon ").concat(i,"-search-button,\n > ").concat(i,",\n ").concat(i,"-affix-wrapper"),{"&:hover,&:focus,&:active":{zIndex:2}}),(0,V.Z)(n,"> ".concat(i,"-affix-wrapper-focused"),{zIndex:2}),n)),r))};function mp(t){return(0,nn.TS)(t,{inputAffixPadding:t.paddingXXS,inputPaddingVertical:Math.max(Math.round((t.controlHeight-t.fontSize*t.lineHeight)/2*10)/10-t.lineWidth,3),inputPaddingVerticalLG:Math.ceil((t.controlHeightLG-t.fontSizeLG*t.lineHeightLG)/2*10)/10-t.lineWidth,inputPaddingVerticalSM:Math.max(Math.round((t.controlHeightSM-t.fontSize*t.lineHeight)/2*10)/10-t.lineWidth,0),inputPaddingHorizontal:t.paddingSM-t.lineWidth,inputPaddingHorizontalSM:t.paddingXS-t.lineWidth,inputPaddingHorizontalLG:t.controlPaddingHorizontal-t.lineWidth,inputBorderHoverColor:t.colorPrimaryHover,inputBorderActiveColor:t.colorPrimaryHover})}var yp=function(t){var e,n,r,i,o=t.componentCls,a=t.paddingLG,c="".concat(o,"-textarea");return(0,V.Z)({},c,(i={position:"relative","&-show-count":(e={},(0,V.Z)(e,"> ".concat(o),{height:"100%"}),(0,V.Z)(e,"".concat(o,"-data-count"),{position:"absolute",bottom:-t.fontSize*t.lineHeight,insetInlineEnd:0,color:t.colorTextDescription,whiteSpace:"nowrap",pointerEvents:"none"}),e),"&-allow-clear":(0,V.Z)({},"> ".concat(o),{paddingInlineEnd:a})},(0,V.Z)(i,"&-affix-wrapper".concat(c,"-has-feedback"),(0,V.Z)({},"".concat(o),{paddingInlineEnd:a})),(0,V.Z)(i,"&-affix-wrapper".concat(o,"-affix-wrapper"),(r={padding:0},(0,V.Z)(r,"> textarea".concat(o),{fontSize:"inherit",border:"none",outline:"none","&:focus":{boxShadow:"none !important"}}),(0,V.Z)(r,"".concat(o,"-suffix"),(n={margin:0,"> *:not(:last-child)":{marginInline:0}},(0,V.Z)(n,"".concat(o,"-clear-icon"),{position:"absolute",insetInlineEnd:t.paddingXS,insetBlockStart:t.paddingXS}),(0,V.Z)(n,"".concat(c,"-suffix"),{position:"absolute",top:0,insetInlineEnd:t.inputPaddingHorizontal,bottom:0,zIndex:1,display:"inline-flex",alignItems:"center",margin:"auto",pointerEvents:"none"}),n)),r)),i))},bp=((0,se.Z)("Input",(function(t){var e=mp(t);return[dp(e),yp(e),pp(e),vp(e),gp(e),tn(e)]})),function(t){var e,n,r=t.componentCls;return n={},(0,V.Z)(n,r,Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},(0,Qe.Wf)(t)),(0,V.Z)({"ul, ol":{margin:0,padding:0,listStyle:"none"},"&::after":{display:"block",clear:"both",height:0,overflow:"hidden",visibility:"hidden",content:'""'}},"".concat(r,"-total-text"),{display:"inline-block",height:t.itemSize,marginInlineEnd:t.marginXS,lineHeight:"".concat(t.itemSize-2,"px"),verticalAlign:"middle"})),function(t){var e,n=t.componentCls;return(0,V.Z)({},"".concat(n,"-item"),(e={display:"inline-block",minWidth:t.itemSize,height:t.itemSize,marginInlineEnd:t.marginXS,fontFamily:t.fontFamily,lineHeight:"".concat(t.itemSize-2,"px"),textAlign:"center",verticalAlign:"middle",listStyle:"none",backgroundColor:"transparent",border:"".concat(t.lineWidth,"px ").concat(t.lineType," transparent"),borderRadius:t.borderRadius,outline:0,cursor:"pointer",userSelect:"none",a:{display:"block",padding:"0 ".concat(t.paginationItemPaddingInline,"px"),color:t.colorText,"&:hover":{textDecoration:"none"}}},(0,V.Z)(e,"&:not(".concat(n,"-item-active)"),{"&:hover":{transition:"all ".concat(t.motionDurationMid),backgroundColor:t.colorBgTextHover},"&:active":{backgroundColor:t.colorBgTextActive}}),(0,V.Z)(e,"&-active",{fontWeight:t.fontWeightStrong,backgroundColor:t.itemActiveBg,borderColor:t.colorPrimary,a:{color:t.colorPrimary},"&:hover":{borderColor:t.colorPrimaryHover},"&:hover a":{color:t.colorPrimaryHover}}),e))}(t)),function(t){var e,n,r,i,o,a=t.componentCls;return o={},(0,V.Z)(o,"".concat(a,"-jump-prev, ").concat(a,"-jump-next"),(r={outline:0},(0,V.Z)(r,"".concat(a,"-item-container"),(e={position:"relative"},(0,V.Z)(e,"".concat(a,"-item-link-icon"),{color:t.colorPrimary,fontSize:t.fontSizeSM,opacity:0,transition:"all ".concat(t.motionDurationMid),"&-svg":{top:0,insetInlineEnd:0,bottom:0,insetInlineStart:0,margin:"auto"}}),(0,V.Z)(e,"".concat(a,"-item-ellipsis"),{position:"absolute",top:0,insetInlineEnd:0,bottom:0,insetInlineStart:0,display:"block",margin:"auto",color:t.colorTextDisabled,fontFamily:"Arial, Helvetica, sans-serif",letterSpacing:t.paginationEllipsisLetterSpacing,textAlign:"center",textIndent:t.paginationEllipsisTextIndent,opacity:1,transition:"all ".concat(t.motionDurationMid)}),e)),(0,V.Z)(r,"&:hover",(n={},(0,V.Z)(n,"".concat(a,"-item-link-icon"),{opacity:1}),(0,V.Z)(n,"".concat(a,"-item-ellipsis"),{opacity:0}),n)),r)),(0,V.Z)(o,"\n ".concat(a,"-prev,\n ").concat(a,"-jump-prev,\n ").concat(a,"-jump-next\n "),{marginInlineEnd:t.marginXS}),(0,V.Z)(o,"\n ".concat(a,"-prev,\n ").concat(a,"-next,\n ").concat(a,"-jump-prev,\n ").concat(a,"-jump-next\n "),{display:"inline-block",minWidth:t.itemSize,height:t.itemSize,color:t.colorText,fontFamily:t.fontFamily,lineHeight:"".concat(t.itemSize,"px"),textAlign:"center",verticalAlign:"middle",listStyle:"none",borderRadius:t.borderRadius,cursor:"pointer",transition:"all ".concat(t.motionDurationMid)}),(0,V.Z)(o,"".concat(a,"-prev, ").concat(a,"-next"),(i={fontFamily:"Arial, Helvetica, sans-serif",outline:0,button:{color:t.colorText,cursor:"pointer",userSelect:"none"}},(0,V.Z)(i,"".concat(a,"-item-link"),{display:"block",width:"100%",height:"100%",padding:0,fontSize:t.fontSizeSM,textAlign:"center",backgroundColor:"transparent",border:"".concat(t.lineWidth,"px ").concat(t.lineType," transparent"),borderRadius:t.borderRadius,outline:"none",transition:"all ".concat(t.motionDurationMid)}),(0,V.Z)(i,"&:hover ".concat(a,"-item-link"),{backgroundColor:t.colorBgTextHover}),(0,V.Z)(i,"&:active ".concat(a,"-item-link"),{backgroundColor:t.colorBgTextActive}),(0,V.Z)(i,"&".concat(a,"-disabled:hover"),(0,V.Z)({},"".concat(a,"-item-link"),{backgroundColor:"transparent"})),i)),(0,V.Z)(o,"".concat(a,"-slash"),{marginInlineEnd:t.paginationSlashMarginInlineEnd,marginInlineStart:t.paginationSlashMarginInlineStart}),(0,V.Z)(o,"".concat(a,"-options"),{display:"inline-block",marginInlineStart:t.margin,verticalAlign:"middle","&-size-changer.-select":{display:"inline-block",width:"auto"},"&-quick-jumper":{display:"inline-block",height:t.controlHeight,marginInlineStart:t.marginXS,lineHeight:"".concat(t.controlHeight,"px"),verticalAlign:"top",input:Object.assign(Object.assign({},hp(t)),{width:1.25*t.controlHeightLG,height:t.controlHeight,boxSizing:"border-box",margin:0,marginInlineStart:t.marginXS,marginInlineEnd:t.marginXS})}}),o}(t)),function(t){var e,n=t.componentCls;return e={},(0,V.Z)(e,"\n &".concat(n,"-simple ").concat(n,"-prev,\n &").concat(n,"-simple ").concat(n,"-next\n "),(0,V.Z)({height:t.itemSizeSM,lineHeight:"".concat(t.itemSizeSM,"px"),verticalAlign:"top"},"".concat(n,"-item-link"),{height:t.itemSizeSM,backgroundColor:"transparent",border:0,"&:hover":{backgroundColor:t.colorBgTextHover},"&:active":{backgroundColor:t.colorBgTextActive},"&::after":{height:t.itemSizeSM,lineHeight:"".concat(t.itemSizeSM,"px")}})),(0,V.Z)(e,"&".concat(n,"-simple ").concat(n,"-simple-pager"),{display:"inline-block",height:t.itemSizeSM,marginInlineEnd:t.marginXS,input:{boxSizing:"border-box",height:"100%",marginInlineEnd:t.marginXS,padding:"0 ".concat(t.paginationItemPaddingInline,"px"),textAlign:"center",backgroundColor:t.itemInputBg,border:"".concat(t.lineWidth,"px ").concat(t.lineType," ").concat(t.colorBorder),borderRadius:t.borderRadius,outline:"none",transition:"border-color ".concat(t.motionDurationMid),color:"inherit","&:hover":{borderColor:t.colorPrimary},"&:focus":{borderColor:t.colorPrimaryHover,boxShadow:"".concat(t.inputOutlineOffset,"px 0 ").concat(t.controlOutlineWidth,"px ").concat(t.controlOutline)},"&[disabled]":{color:t.colorTextDisabled,backgroundColor:t.colorBgContainerDisabled,borderColor:t.colorBorder,cursor:"not-allowed"}}}),e}(t)),function(t){var e,n,r,i=t.componentCls;return r={},(0,V.Z)(r,"&".concat(i,"-mini ").concat(i,"-total-text, &").concat(i,"-mini ").concat(i,"-simple-pager"),{height:t.itemSizeSM,lineHeight:"".concat(t.itemSizeSM,"px")}),(0,V.Z)(r,"&".concat(i,"-mini ").concat(i,"-item"),{minWidth:t.itemSizeSM,height:t.itemSizeSM,margin:0,lineHeight:"".concat(t.itemSizeSM-2,"px")}),(0,V.Z)(r,"&".concat(i,"-mini:not(").concat(i,"-disabled) ").concat(i,"-item:not(").concat(i,"-item-active)"),{backgroundColor:"transparent",borderColor:"transparent","&:hover":{backgroundColor:t.colorBgTextHover},"&:active":{backgroundColor:t.colorBgTextActive}}),(0,V.Z)(r,"&".concat(i,"-mini ").concat(i,"-prev, &").concat(i,"-mini ").concat(i,"-next"),{minWidth:t.itemSizeSM,height:t.itemSizeSM,margin:0,lineHeight:"".concat(t.itemSizeSM,"px")}),(0,V.Z)(r,"&".concat(i,"-mini:not(").concat(i,"-disabled)"),(0,V.Z)({},"".concat(i,"-prev, ").concat(i,"-next"),(e={},(0,V.Z)(e,"&:hover ".concat(i,"-item-link"),{backgroundColor:t.colorBgTextHover}),(0,V.Z)(e,"&:active ".concat(i,"-item-link"),{backgroundColor:t.colorBgTextActive}),(0,V.Z)(e,"&".concat(i,"-disabled:hover ").concat(i,"-item-link"),{backgroundColor:"transparent"}),e))),(0,V.Z)(r,"\n &".concat(i,"-mini ").concat(i,"-prev ").concat(i,"-item-link,\n &").concat(i,"-mini ").concat(i,"-next ").concat(i,"-item-link\n "),{backgroundColor:"transparent",borderColor:"transparent","&::after":{height:t.itemSizeSM,lineHeight:"".concat(t.itemSizeSM,"px")}}),(0,V.Z)(r,"&".concat(i,"-mini ").concat(i,"-jump-prev, &").concat(i,"-mini ").concat(i,"-jump-next"),{height:t.itemSizeSM,marginInlineEnd:0,lineHeight:"".concat(t.itemSizeSM,"px")}),(0,V.Z)(r,"&".concat(i,"-mini ").concat(i,"-options"),(n={marginInlineStart:t.paginationMiniOptionsMarginInlineStart},(0,V.Z)(n,"&-size-changer",{top:t.miniOptionsSizeChangerTop}),(0,V.Z)(n,"&-quick-jumper",{height:t.itemSizeSM,lineHeight:"".concat(t.itemSizeSM,"px"),input:Object.assign(Object.assign({},sp(t)),{width:t.paginationMiniQuickJumperInputWidth,height:t.controlHeightSM})}),n)),r}(t)),function(t){var e,n,r,i=t.componentCls;return r={},(0,V.Z)(r,"".concat(i,"-disabled"),{"&, &:hover":(0,V.Z)({cursor:"not-allowed"},"".concat(i,"-item-link"),{color:t.colorTextDisabled,cursor:"not-allowed"}),"&:focus-visible":(0,V.Z)({cursor:"not-allowed"},"".concat(i,"-item-link"),{color:t.colorTextDisabled,cursor:"not-allowed"})}),(0,V.Z)(r,"&".concat(i,"-disabled"),(n={cursor:"not-allowed"},(0,V.Z)(n,"".concat(i,"-item"),{cursor:"not-allowed","&:hover, &:active":{backgroundColor:"transparent"},a:{color:t.colorTextDisabled,backgroundColor:"transparent",border:"none",cursor:"not-allowed"},"&-active":{borderColor:t.colorBorder,backgroundColor:t.itemActiveBgDisabled,"&:hover, &:active":{backgroundColor:t.itemActiveBgDisabled},a:{color:t.itemActiveColorDisabled}}}),(0,V.Z)(n,"".concat(i,"-item-link"),(0,V.Z)({color:t.colorTextDisabled,cursor:"not-allowed","&:hover, &:active":{backgroundColor:"transparent"}},"".concat(i,"-simple&"),{backgroundColor:"transparent","&:hover, &:active":{backgroundColor:"transparent"}})),(0,V.Z)(n,"".concat(i,"-simple-pager"),{color:t.colorTextDisabled}),(0,V.Z)(n,"".concat(i,"-jump-prev, ").concat(i,"-jump-next"),(e={},(0,V.Z)(e,"".concat(i,"-item-link-icon"),{opacity:0}),(0,V.Z)(e,"".concat(i,"-item-ellipsis"),{opacity:1}),e)),n)),(0,V.Z)(r,"&".concat(i,"-simple"),(0,V.Z)({},"".concat(i,"-prev, ").concat(i,"-next"),(0,V.Z)({},"&".concat(i,"-disabled ").concat(i,"-item-link"),{"&:hover, &:active":{backgroundColor:"transparent"}}))),r}(t)),(e={},(0,V.Z)(e,"@media only screen and (max-width: ".concat(t.screenLG,"px)"),(0,V.Z)({},"".concat(r,"-item"),{"&-after-jump-prev, &-before-jump-next":{display:"none"}})),(0,V.Z)(e,"@media only screen and (max-width: ".concat(t.screenSM,"px)"),(0,V.Z)({},"".concat(r,"-options"),{display:"none"})),e))),(0,V.Z)(n,"&".concat(t.componentCls,"-rtl"),{direction:"rtl"}),n}),xp=function(t){var e,n,r,i,o,a,c=t.componentCls;return a={},(0,V.Z)(a,"".concat(c).concat(c,"-disabled:not(").concat(c,"-mini)"),(n={"&, &:hover":(0,V.Z)({},"".concat(c,"-item-link"),{borderColor:t.colorBorder}),"&:focus-visible":(0,V.Z)({},"".concat(c,"-item-link"),{borderColor:t.colorBorder})},(0,V.Z)(n,"".concat(c,"-item, ").concat(c,"-item-link"),(e={backgroundColor:t.colorBgContainerDisabled,borderColor:t.colorBorder},(0,V.Z)(e,"&:hover:not(".concat(c,"-item-active)"),{backgroundColor:t.colorBgContainerDisabled,borderColor:t.colorBorder,a:{color:t.colorTextDisabled}}),(0,V.Z)(e,"&".concat(c,"-item-active"),{backgroundColor:t.itemActiveBgDisabled}),e)),(0,V.Z)(n,"".concat(c,"-prev, ").concat(c,"-next"),(0,V.Z)({"&:hover button":{backgroundColor:t.colorBgContainerDisabled,borderColor:t.colorBorder,color:t.colorTextDisabled}},"".concat(c,"-item-link"),{backgroundColor:t.colorBgContainerDisabled,borderColor:t.colorBorder})),n)),(0,V.Z)(a,"".concat(c,":not(").concat(c,"-mini)"),(o={},(0,V.Z)(o,"".concat(c,"-prev, ").concat(c,"-next"),(r={"&:hover button":{borderColor:t.colorPrimaryHover,backgroundColor:t.itemBg}},(0,V.Z)(r,"".concat(c,"-item-link"),{backgroundColor:t.itemLinkBg,borderColor:t.colorBorder}),(0,V.Z)(r,"&:hover ".concat(c,"-item-link"),{borderColor:t.colorPrimary,backgroundColor:t.itemBg,color:t.colorPrimary}),(0,V.Z)(r,"&".concat(c,"-disabled"),(0,V.Z)({},"".concat(c,"-item-link"),{borderColor:t.colorBorder,color:t.colorTextDisabled})),r)),(0,V.Z)(o,"".concat(c,"-item"),(i={backgroundColor:t.itemBg,border:"".concat(t.lineWidth,"px ").concat(t.lineType," ").concat(t.colorBorder)},(0,V.Z)(i,"&:hover:not(".concat(c,"-item-active)"),{borderColor:t.colorPrimary,backgroundColor:t.itemBg,a:{color:t.colorPrimary}}),(0,V.Z)(i,"&-active",{borderColor:t.colorPrimary}),i)),o)),a},wp=function(t){var e,n,r=t.componentCls;return(0,V.Z)({},"".concat(r,":not(").concat(r,"-disabled)"),(n={},(0,V.Z)(n,"".concat(r,"-item"),Object.assign({},(0,Qe.Qy)(t))),(0,V.Z)(n,"".concat(r,"-jump-prev, ").concat(r,"-jump-next"),{"&:focus-visible":Object.assign((e={},(0,V.Z)(e,"".concat(r,"-item-link-icon"),{opacity:1}),(0,V.Z)(e,"".concat(r,"-item-ellipsis"),{opacity:0}),e),(0,Qe.oN)(t))}),(0,V.Z)(n,"".concat(r,"-prev, ").concat(r,"-next"),(0,V.Z)({},"&:focus-visible ".concat(r,"-item-link"),Object.assign({},(0,Qe.oN)(t)))),n))},Sp=(0,se.Z)("Pagination",(function(t){var e=(0,nn.TS)(t,{inputOutlineOffset:0,paginationMiniOptionsMarginInlineStart:t.marginXXS/2,paginationMiniQuickJumperInputWidth:1.1*t.controlHeightLG,paginationItemPaddingInline:1.5*t.marginXXS,paginationEllipsisLetterSpacing:t.marginXXS/2,paginationSlashMarginInlineStart:t.marginXXS,paginationSlashMarginInlineEnd:t.marginSM,paginationEllipsisTextIndent:"0.13em"},mp(t));return[bp(e),wp(e),t.wireframe&&xp(e)]}),(function(t){return{itemBg:t.colorBgContainer,itemSize:t.controlHeight,itemSizeSM:t.controlHeightSM,itemActiveBg:t.colorBgContainer,itemLinkBg:t.colorBgContainer,itemActiveColorDisabled:t.colorTextDisabled,itemActiveBgDisabled:t.controlItemBgActiveDisabled,itemInputBg:t.colorBgContainer,miniOptionsSizeChangerTop:0}})),kp=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(t);it?l?(h=Date.now(),a||(r=setTimeout(s?v:p,t))):p():!0!==a&&(r=setTimeout(s?v:p,void 0===s?t-u:t)))}return p.cancel=function(t){var e=(t||{}).upcomingOnly,n=void 0!==e&&e;d(),f=!n},p}(t,e,{debounceMode:!1!==(void 0!==r&&r)})}var Mp=new Yi.E4("antSpinMove",{to:{opacity:1}}),Ap=new Yi.E4("antRotate",{to:{transform:"rotate(405deg)"}}),Pp=function(t){var e,n,r,i,o;return(0,V.Z)({},"".concat(t.componentCls),Object.assign(Object.assign({},(0,Qe.Wf)(t)),(o={position:"absolute",display:"none",color:t.colorPrimary,fontSize:0,textAlign:"center",verticalAlign:"middle",opacity:0,transition:"transform ".concat(t.motionDurationSlow," ").concat(t.motionEaseInOutCirc),"&-spinning":{position:"static",display:"inline-block",opacity:1},"&-nested-loading":(i={position:"relative"},(0,V.Z)(i,"> div > ".concat(t.componentCls),(r={position:"absolute",top:0,insetInlineStart:0,zIndex:4,display:"block",width:"100%",height:"100%",maxHeight:t.contentHeight},(0,V.Z)(r,"".concat(t.componentCls,"-dot"),{position:"absolute",top:"50%",insetInlineStart:"50%",margin:-t.spinDotSize/2}),(0,V.Z)(r,"".concat(t.componentCls,"-text"),{position:"absolute",top:"50%",width:"100%",paddingTop:(t.spinDotSize-t.fontSize)/2+2,textShadow:"0 1px 2px ".concat(t.colorBgContainer),fontSize:t.fontSize}),(0,V.Z)(r,"&".concat(t.componentCls,"-show-text ").concat(t.componentCls,"-dot"),{marginTop:-t.spinDotSize/2-10}),(0,V.Z)(r,"&-sm",(e={},(0,V.Z)(e,"".concat(t.componentCls,"-dot"),{margin:-t.spinDotSizeSM/2}),(0,V.Z)(e,"".concat(t.componentCls,"-text"),{paddingTop:(t.spinDotSizeSM-t.fontSize)/2+2}),(0,V.Z)(e,"&".concat(t.componentCls,"-show-text ").concat(t.componentCls,"-dot"),{marginTop:-t.spinDotSizeSM/2-10}),e)),(0,V.Z)(r,"&-lg",(n={},(0,V.Z)(n,"".concat(t.componentCls,"-dot"),{margin:-t.spinDotSizeLG/2}),(0,V.Z)(n,"".concat(t.componentCls,"-text"),{paddingTop:(t.spinDotSizeLG-t.fontSize)/2+2}),(0,V.Z)(n,"&".concat(t.componentCls,"-show-text ").concat(t.componentCls,"-dot"),{marginTop:-t.spinDotSizeLG/2-10}),n)),r)),(0,V.Z)(i,"".concat(t.componentCls,"-container"),{position:"relative",transition:"opacity ".concat(t.motionDurationSlow),"&::after":{position:"absolute",top:0,insetInlineEnd:0,bottom:0,insetInlineStart:0,zIndex:10,width:"100%",height:"100%",background:t.colorBgContainer,opacity:0,transition:"all ".concat(t.motionDurationSlow),content:'""',pointerEvents:"none"}}),(0,V.Z)(i,"".concat(t.componentCls,"-blur"),(0,V.Z)({clear:"both",opacity:.5,userSelect:"none",pointerEvents:"none"},"&::after",{opacity:.4,pointerEvents:"auto"})),i)},(0,V.Z)(o,"&-tip",{color:t.spinDotDefault}),(0,V.Z)(o,"".concat(t.componentCls,"-dot"),{position:"relative",display:"inline-block",fontSize:t.spinDotSize,width:"1em",height:"1em","&-item":{position:"absolute",display:"block",width:(t.spinDotSize-t.marginXXS/2)/2,height:(t.spinDotSize-t.marginXXS/2)/2,backgroundColor:t.colorPrimary,borderRadius:"100%",transform:"scale(0.75)",transformOrigin:"50% 50%",opacity:.3,animationName:Mp,animationDuration:"1s",animationIterationCount:"infinite",animationTimingFunction:"linear",animationDirection:"alternate","&:nth-child(1)":{top:0,insetInlineStart:0},"&:nth-child(2)":{top:0,insetInlineEnd:0,animationDelay:"0.4s"},"&:nth-child(3)":{insetInlineEnd:0,bottom:0,animationDelay:"0.8s"},"&:nth-child(4)":{bottom:0,insetInlineStart:0,animationDelay:"1.2s"}},"&-spin":{transform:"rotate(45deg)",animationName:Ap,animationDuration:"1.2s",animationIterationCount:"infinite",animationTimingFunction:"linear"}}),(0,V.Z)(o,"&-sm ".concat(t.componentCls,"-dot"),{fontSize:t.spinDotSizeSM,i:{width:(t.spinDotSizeSM-t.marginXXS/2)/2,height:(t.spinDotSizeSM-t.marginXXS/2)/2}}),(0,V.Z)(o,"&-lg ".concat(t.componentCls,"-dot"),{fontSize:t.spinDotSizeLG,i:{width:(t.spinDotSizeLG-t.marginXXS)/2,height:(t.spinDotSizeLG-t.marginXXS)/2}}),(0,V.Z)(o,"&".concat(t.componentCls,"-show-text ").concat(t.componentCls,"-text"),{display:"block"}),o)))},_p=(0,se.Z)("Spin",(function(t){var e=(0,nn.TS)(t,{spinDotDefault:t.colorTextDescription,spinDotSize:t.controlHeightLG/2,spinDotSizeSM:.35*t.controlHeightLG,spinDotSizeLG:t.controlHeight});return[Pp(e)]}),{contentHeight:400}),Dp=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(t);i0){var P=c[0]/2;A.paddingLeft=P,A.paddingRight=P}if(c&&c[1]>0&&!u){var _=c[1]/2;A.paddingTop=_,A.paddingBottom=_}return y&&(A.flex=function(t){return"number"==typeof t?"".concat(t," ").concat(t," auto"):/^\d+(\.\d+)?(px|em|rem|%)$/.test(t)?"0 0 ".concat(t):t}(y),!1!==l||A.minWidth||(A.minWidth=0)),C(Z.createElement("div",Object.assign({},x,{style:Object.assign(Object.assign({},A),b),className:M,ref:e}),m))}));var Np=Lp,Bp=Z.createContext({}),zp=(Bp.Consumer,function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(t);i0&&Z.createElement("ul",{className:"".concat(p,"-item-action"),key:"actions"},o.map((function(t,e){return Z.createElement("li",{key:"".concat(p,"-item-action-").concat(e)},t,e!==o.length-1&&Z.createElement("em",{className:"".concat(p,"-item-action-split")}))}))),g=f?"div":"li",m=Z.createElement(g,Object.assign({},u,f?{}:{ref:e},{className:K()("".concat(p,"-item"),(0,V.Z)({},"".concat(p,"-item-no-flex"),!("vertical"===h?a:(Z.Children.forEach(i,(function(t){"string"==typeof t&&(n=!0)})),!(n&&Z.Children.count(i)>1)))),c)}),"vertical"===h&&a?[Z.createElement("div",{className:"".concat(p,"-item-main"),key:"content"},i,v),Z.createElement("div",{className:"".concat(p,"-item-extra"),key:"extra"},a)]:[i,v,(0,ae.Tm)(a,{key:"extra"})]);return f?Z.createElement(Np,{ref:e,flex:1,style:l},m):m},Hp=(0,Z.forwardRef)(Up);Hp.Meta=function(t){var e=t.prefixCls,n=t.className,r=t.avatar,i=t.title,o=t.description,a=zp(t,["prefixCls","className","avatar","title","description"]),c=(0,(0,Z.useContext)(Dt.E_).getPrefixCls)("list",e),l=K()("".concat(c,"-item-meta"),n),u=Z.createElement("div",{className:"".concat(c,"-item-meta-content")},i&&Z.createElement("h4",{className:"".concat(c,"-item-meta-title")},i),o&&Z.createElement("div",{className:"".concat(c,"-item-meta-description")},o));return Z.createElement("div",Object.assign({},a,{className:l}),r&&Z.createElement("div",{className:"".concat(c,"-item-meta-avatar")},r),(i||o)&&u)};var Wp=Hp,Vp=function(t){var e,n,r=t.listBorderedCls,i=t.componentCls,o=t.paddingLG,a=t.margin,c=t.itemPaddingSM,l=t.itemPaddingLG,u=t.marginLG,s=t.borderRadiusLG;return n={},(0,V.Z)(n,"".concat(r),(e={border:"".concat(t.lineWidth,"px ").concat(t.lineType," ").concat(t.colorBorder),borderRadius:s},(0,V.Z)(e,"".concat(i,"-header,").concat(i,"-footer,").concat(i,"-item"),{paddingInline:o}),(0,V.Z)(e,"".concat(i,"-pagination"),{margin:"".concat(a,"px ").concat(u,"px")}),e)),(0,V.Z)(n,"".concat(r).concat(i,"-sm"),(0,V.Z)({},"".concat(i,"-item,").concat(i,"-header,").concat(i,"-footer"),{padding:c})),(0,V.Z)(n,"".concat(r).concat(i,"-lg"),(0,V.Z)({},"".concat(i,"-item,").concat(i,"-header,").concat(i,"-footer"),{padding:l})),n},Gp=function(t){var e,n,r,i,o=t.componentCls,a=t.screenSM,c=t.screenMD,l=t.marginLG,u=t.marginSM,s=t.margin;return i={},(0,V.Z)(i,"@media screen and (max-width:".concat(c,")"),(e={},(0,V.Z)(e,"".concat(o),(0,V.Z)({},"".concat(o,"-item"),(0,V.Z)({},"".concat(o,"-item-action"),{marginInlineStart:l}))),(0,V.Z)(e,"".concat(o,"-vertical"),(0,V.Z)({},"".concat(o,"-item"),(0,V.Z)({},"".concat(o,"-item-extra"),{marginInlineStart:l}))),e)),(0,V.Z)(i,"@media screen and (max-width: ".concat(a,")"),(r={},(0,V.Z)(r,"".concat(o),(0,V.Z)({},"".concat(o,"-item"),(0,V.Z)({flexWrap:"wrap"},"".concat(o,"-action"),{marginInlineStart:u}))),(0,V.Z)(r,"".concat(o,"-vertical"),(0,V.Z)({},"".concat(o,"-item"),(n={flexWrap:"wrap-reverse"},(0,V.Z)(n,"".concat(o,"-item-main"),{minWidth:t.contentWidth}),(0,V.Z)(n,"".concat(o,"-item-extra"),{margin:"auto auto ".concat(s,"px")}),n))),r)),i},Xp=function(t){var e,n,r,i,o,a,c=t.componentCls,l=t.antCls,u=t.controlHeight,s=t.minHeight,f=t.paddingSM,h=t.marginLG,d=t.padding,p=t.itemPadding,v=t.colorPrimary,g=t.itemPaddingSM,m=t.itemPaddingLG,y=t.paddingXS,b=t.margin,x=t.colorText,w=t.colorTextDescription,S=t.motionDurationSlow,k=t.lineWidth,C=t.headerBg,O=t.footerBg,E=t.emptyTextPadding,M=t.metaMarginBottom,A=t.avatarMarginRight,P=t.titleMarginBottom,_=t.descriptionFontSize,D={};return["start","center","end"].forEach((function(t){D["&-align-".concat(t)]={textAlign:t}})),a={},(0,V.Z)(a,"".concat(c),Object.assign(Object.assign({},(0,Qe.Wf)(t)),(i={position:"relative","*":{outline:"none"}},(0,V.Z)(i,"".concat(c,"-header"),{background:C}),(0,V.Z)(i,"".concat(c,"-footer"),{background:O}),(0,V.Z)(i,"".concat(c,"-header, ").concat(c,"-footer"),{paddingBlock:f}),(0,V.Z)(i,"".concat(c,"-pagination"),Object.assign(Object.assign({marginBlockStart:h},D),(0,V.Z)({},"".concat(l,"-pagination-options"),{textAlign:"start"}))),(0,V.Z)(i,"".concat(c,"-spin"),{minHeight:s,textAlign:"center"}),(0,V.Z)(i,"".concat(c,"-items"),{margin:0,padding:0,listStyle:"none"}),(0,V.Z)(i,"".concat(c,"-item"),(r={display:"flex",alignItems:"center",justifyContent:"space-between",padding:p,color:x},(0,V.Z)(r,"".concat(c,"-item-meta"),(e={display:"flex",flex:1,alignItems:"flex-start",maxWidth:"100%"},(0,V.Z)(e,"".concat(c,"-item-meta-avatar"),{marginInlineEnd:A}),(0,V.Z)(e,"".concat(c,"-item-meta-content"),{flex:"1 0",width:0,color:x}),(0,V.Z)(e,"".concat(c,"-item-meta-title"),{margin:"0 0 ".concat(t.marginXXS,"px 0"),color:x,fontSize:t.fontSize,lineHeight:t.lineHeight,"> a":(0,V.Z)({color:x,transition:"all ".concat(S)},"&:hover",{color:v})}),(0,V.Z)(e,"".concat(c,"-item-meta-description"),{color:w,fontSize:_,lineHeight:t.lineHeight}),e)),(0,V.Z)(r,"".concat(c,"-item-action"),(n={flex:"0 0 auto",marginInlineStart:t.marginXXL,padding:0,fontSize:0,listStyle:"none"},(0,V.Z)(n,"& > li",(0,V.Z)({position:"relative",display:"inline-block",padding:"0 ".concat(y,"px"),color:w,fontSize:t.fontSize,lineHeight:t.lineHeight,textAlign:"center"},"&:first-child",{paddingInlineStart:0})),(0,V.Z)(n,"".concat(c,"-item-action-split"),{position:"absolute",insetBlockStart:"50%",insetInlineEnd:0,width:k,height:Math.ceil(t.fontSize*t.lineHeight)-2*t.marginXXS,transform:"translateY(-50%)",backgroundColor:t.colorSplit}),n)),r)),(0,V.Z)(i,"".concat(c,"-empty"),{padding:"".concat(d,"px 0"),color:w,fontSize:t.fontSizeSM,textAlign:"center"}),(0,V.Z)(i,"".concat(c,"-empty-text"),{padding:E,color:t.colorTextDisabled,fontSize:t.fontSize,textAlign:"center"}),(0,V.Z)(i,"".concat(c,"-item-no-flex"),{display:"block"}),i))),(0,V.Z)(a,"".concat(c,"-grid ").concat(l,"-col > ").concat(c,"-item"),{display:"block",maxWidth:"100%",marginBlockEnd:b,paddingBlock:0,borderBlockEnd:"none"}),(0,V.Z)(a,"".concat(c,"-vertical ").concat(c,"-item"),(o={alignItems:"initial"},(0,V.Z)(o,"".concat(c,"-item-main"),{display:"block",flex:1}),(0,V.Z)(o,"".concat(c,"-item-extra"),{marginInlineStart:h}),(0,V.Z)(o,"".concat(c,"-item-meta"),(0,V.Z)({marginBlockEnd:M},"".concat(c,"-item-meta-title"),{marginBlockStart:0,marginBlockEnd:P,color:x,fontSize:t.fontSizeLG,lineHeight:t.lineHeightLG})),(0,V.Z)(o,"".concat(c,"-item-action"),{marginBlockStart:d,marginInlineStart:"auto","> li":(0,V.Z)({padding:"0 ".concat(d,"px")},"&:first-child",{paddingInlineStart:0})}),o)),(0,V.Z)(a,"".concat(c,"-split ").concat(c,"-item"),(0,V.Z)({borderBlockEnd:"".concat(t.lineWidth,"px ").concat(t.lineType," ").concat(t.colorSplit)},"&:last-child",{borderBlockEnd:"none"})),(0,V.Z)(a,"".concat(c,"-split ").concat(c,"-header"),{borderBlockEnd:"".concat(t.lineWidth,"px ").concat(t.lineType," ").concat(t.colorSplit)}),(0,V.Z)(a,"".concat(c,"-split").concat(c,"-empty ").concat(c,"-footer"),{borderTop:"".concat(t.lineWidth,"px ").concat(t.lineType," ").concat(t.colorSplit)}),(0,V.Z)(a,"".concat(c,"-loading ").concat(c,"-spin-nested-loading"),{minHeight:u}),(0,V.Z)(a,"".concat(c,"-split").concat(c,"-something-after-last-item ").concat(l,"-spin-container > ").concat(c,"-items > ").concat(c,"-item:last-child"),{borderBlockEnd:"".concat(t.lineWidth,"px ").concat(t.lineType," ").concat(t.colorSplit)}),(0,V.Z)(a,"".concat(c,"-lg ").concat(c,"-item"),{padding:m}),(0,V.Z)(a,"".concat(c,"-sm ").concat(c,"-item"),{padding:g}),(0,V.Z)(a,"".concat(c,":not(").concat(c,"-vertical)"),(0,V.Z)({},"".concat(c,"-item-no-flex"),(0,V.Z)({},"".concat(c,"-item-action"),{float:"right"}))),a},qp=(0,se.Z)("List",(function(t){var e=(0,nn.TS)(t,{listBorderedCls:"".concat(t.componentCls,"-bordered"),minHeight:t.controlHeightLG});return[Xp(e),Vp(e),Gp(e)]}),(function(t){return{contentWidth:220,itemPadding:"".concat(t.paddingContentVertical,"px 0"),itemPaddingSM:"".concat(t.paddingContentVerticalSM,"px ").concat(t.paddingContentHorizontal,"px"),itemPaddingLG:"".concat(t.paddingContentVerticalLG,"px ").concat(t.paddingContentHorizontalLG,"px"),headerBg:"transparent",footerBg:"transparent",emptyTextPadding:t.padding,metaMarginBottom:t.padding,avatarMarginRight:t.padding,titleMarginBottom:t.paddingSM,descriptionFontSize:t.fontSize}})),Yp=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(t);iat&&(ot.current=at);var ct=i?Z.createElement("div",{className:K()("".concat(q,"-pagination"),"".concat(q,"-pagination-align-").concat(null!==(n=null==ot?void 0:ot.align)&&void 0!==n?n:"end"))},Z.createElement(Op,Object.assign({},ot,{onChange:W,onShowSizeChange:X}))):null,lt=(0,Y.Z)(y);i&&y.length>(ot.current-1)*ot.pageSize&&(lt=(0,Y.Z)(y).splice((ot.current-1)*ot.pageSize,ot.pageSize));var ut=Object.keys(g||{}).some((function(t){return["xs","sm","md","lg","xl","xxl"].includes(t)})),st=df(ut),ft=Z.useMemo((function(){for(var t=0;t0){var pt=lt.map((function(t,e){return function(t,e){return O?((n="function"==typeof C?C(t):C?t[C]:t.key)||(n="list-item-".concat(e)),Z.createElement(Z.Fragment,{key:n},O(t,e))):null;var n}(t,e)}));dt=g?Z.createElement(hf,{gutter:g.gutter},Z.Children.map(pt,(function(t){return Z.createElement("div",{key:null==t?void 0:t.key,style:ht},t)}))):Z.createElement("ul",{className:"".concat(q,"-items")},pt)}else d||nt||(dt=Z.createElement("div",{className:"".concat(q,"-empty-text")},E&&E.emptyText||(null==B?void 0:B("List"))||Z.createElement(tf,{componentName:"List"})));var vt=ot.position||"bottom",gt=Z.useMemo((function(){return{grid:g,itemLayout:p}}),[JSON.stringify(g),p]);return Q(Z.createElement(Bp.Provider,{value:gt},Z.createElement("div",Object.assign({style:Object.assign(Object.assign({},null==U?void 0:U.style),h),className:it},M),("top"===vt||"both"===vt)&&ct,x&&Z.createElement("div",{className:"".concat(q,"-header")},x),Z.createElement(jp,Object.assign({},et),dt,d),w&&Z.createElement("div",{className:"".concat(q,"-footer")},w),v||("bottom"===vt||"both"===vt)&&ct)))}$p.Item=Wp;var Kp=$p,Jp=["title","titleId"];var Qp=Z.forwardRef((function(t,e){var n=t.title,r=t.titleId,i=(0,I.Z)(t,Jp);return Z.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true",ref:e,"aria-labelledby":r},i),n?Z.createElement("title",{id:r},n):null,Z.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M8.625 9.75a.375.375 0 11-.75 0 .375.375 0 01.75 0zm0 0H8.25m4.125 0a.375.375 0 11-.75 0 .375.375 0 01.75 0zm0 0H12m4.125 0a.375.375 0 11-.75 0 .375.375 0 01.75 0zm0 0h-.375m-13.5 3.01c0 1.6 1.123 2.994 2.707 3.227 1.087.16 2.185.283 3.293.369V21l4.184-4.183a1.14 1.14 0 01.778-.332 48.294 48.294 0 005.83-.498c1.585-.233 2.708-1.626 2.708-3.228V6.741c0-1.602-1.123-2.995-2.707-3.228A48.394 48.394 0 0012 3c-2.392 0-4.744.175-7.043.513C3.373 3.746 2.25 5.14 2.25 6.741v6.018z"}))})),tv=["title","titleId"];var ev=Z.forwardRef((function(t,e){var n=t.title,r=t.titleId,i=(0,I.Z)(t,tv);return Z.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true",ref:e,"aria-labelledby":r},i),n?Z.createElement("title",{id:r},n):null,Z.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M20.25 7.5l-.625 10.632a2.25 2.25 0 01-2.247 2.118H6.622a2.25 2.25 0 01-2.247-2.118L3.75 7.5m6 4.125l2.25 2.25m0 0l2.25 2.25M12 13.875l2.25-2.25M12 13.875l-2.25 2.25M3.375 7.5h17.25c.621 0 1.125-.504 1.125-1.125v-1.5c0-.621-.504-1.125-1.125-1.125H3.375c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125z"}))})),nv=n(94730),rv=n(70769),iv=n(70966),ov={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M176 511a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0z"}}]},name:"ellipsis",theme:"outlined"},av=function(t,e){return Z.createElement(Wt.Z,(0,J.Z)({},t,{ref:e,icon:ov}))};var cv=Z.forwardRef(av),lv={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"defs",attrs:{},children:[{tag:"style",attrs:{}}]},{tag:"path",attrs:{d:"M482 152h60q8 0 8 8v704q0 8-8 8h-60q-8 0-8-8V160q0-8 8-8z"}},{tag:"path",attrs:{d:"M176 474h672q8 0 8 8v60q0 8-8 8H176q-8 0-8-8v-60q0-8 8-8z"}}]},name:"plus",theme:"outlined"},uv=function(t,e){return Z.createElement(Wt.Z,(0,J.Z)({},t,{ref:e,icon:lv}))};var sv=Z.forwardRef(uv),fv=(0,Z.createContext)(null),hv=Z.forwardRef((function(t,e){var n=t.prefixCls,r=t.className,i=t.style,o=t.id,a=t.active,c=t.tabKey,l=t.children;return Z.createElement("div",{id:o&&"".concat(o,"-panel-").concat(c),role:"tabpanel",tabIndex:a?0:-1,"aria-labelledby":o&&"".concat(o,"-tab-").concat(c),"aria-hidden":!a,style:i,className:K()(n,a&&"".concat(n,"-active"),r),ref:e},l)}));var dv=hv,pv=["key","forceRender","style","className"];function vv(t){var e=t.id,n=t.activeKey,r=t.animated,i=t.tabPosition,o=t.destroyInactiveTabPane,a=Z.useContext(fv),c=a.prefixCls,l=a.tabs,u=r.tabPane,s="".concat(c,"-tabpane");return Z.createElement("div",{className:K()("".concat(c,"-content-holder"))},Z.createElement("div",{className:K()("".concat(c,"-content"),"".concat(c,"-content-").concat(i),(0,B.Z)({},"".concat(c,"-content-animated"),u))},l.map((function(t){var i=t.key,a=t.forceRender,c=t.style,l=t.className,f=(0,rt.Z)(t,pv),h=i===n;return Z.createElement(ne.ZP,(0,J.Z)({key:i,visible:h,forceRender:a,removeOnLeave:!!o,leavedClassName:"".concat(s,"-hidden")},r.tabPaneMotion),(function(t,n){var r=t.style,o=t.className;return Z.createElement(dv,(0,J.Z)({},f,{prefixCls:s,id:e,tabKey:i,animated:u,active:h,style:(0,lt.Z)((0,lt.Z)({},c),r),className:K()(l,o),ref:n}))}))}))))}var gv={width:0,height:0,left:0,top:0};function mv(t,e){var n=Z.useRef(t),r=Z.useState({}),i=(0,rr.Z)(r,2)[1];return[n.current,function(t){var r="function"==typeof t?t(n.current):t;r!==n.current&&e(r,n.current),n.current=r,i({})}]}var yv=.1,bv=.01,xv=20,wv=Math.pow(.995,xv);function Sv(t){var e=(0,Z.useState)(0),n=(0,rr.Z)(e,2),r=n[0],i=n[1],o=(0,Z.useRef)(0),a=(0,Z.useRef)();return a.current=t,(0,vr.o)((function(){var t;null===(t=a.current)||void 0===t||t.call(a)}),[r]),function(){o.current===r&&(o.current+=1,i(o.current))}}var kv={width:0,height:0,left:0,top:0,right:0};function Cv(t){var e;return t instanceof Map?(e={},t.forEach((function(t,n){e[n]=t}))):e=t,JSON.stringify(e)}var Ov="TABS_DQ";function Ev(t){return String(t).replace(/"/g,Ov)}function Mv(t,e,n,r){return!(!n||r||!1===t||void 0===t&&(!1===e||null===e))}function Av(t,e){var n=t.prefixCls,r=t.editable,i=t.locale,o=t.style;return r&&!1!==r.showAdd?Z.createElement("button",{ref:e,type:"button",className:"".concat(n,"-nav-add"),style:o,"aria-label":(null==i?void 0:i.addAriaLabel)||"Add tab",onClick:function(t){r.onEdit("add",{event:t})}},r.addIcon||"+"):null}var Pv=Z.forwardRef(Av),_v=Z.forwardRef((function(t,e){var n,r=t.position,i=t.prefixCls,o=t.extra;if(!o)return null;var a={};return"object"!==(0,it.Z)(o)||Z.isValidElement(o)?a.right=o:a=o,"right"===r&&(n=a.right),"left"===r&&(n=a.left),n?Z.createElement("div",{className:"".concat(i,"-extra-content"),ref:e},n):null}));var Dv=_v,Tv=Ya.Z.ESC,Zv=Ya.Z.TAB;var Fv=(0,Z.forwardRef)((function(t,e){var n=t.overlay,r=t.arrow,i=t.prefixCls,o=(0,Z.useMemo)((function(){return"function"==typeof n?n():n}),[n]),a=(0,le.sQ)(e,null==o?void 0:o.ref);return Z.createElement(Z.Fragment,null,r&&Z.createElement("div",{className:"".concat(i,"-arrow")}),Z.cloneElement(o,{ref:(0,le.Yr)(o)?a:void 0}))})),jv=Fv,Iv={adjustX:1,adjustY:1},Rv=[0,0],Lv={topLeft:{points:["bl","tl"],overflow:Iv,offset:[0,-4],targetOffset:Rv},top:{points:["bc","tc"],overflow:Iv,offset:[0,-4],targetOffset:Rv},topRight:{points:["br","tr"],overflow:Iv,offset:[0,-4],targetOffset:Rv},bottomLeft:{points:["tl","bl"],overflow:Iv,offset:[0,4],targetOffset:Rv},bottom:{points:["tc","bc"],overflow:Iv,offset:[0,4],targetOffset:Rv},bottomRight:{points:["tr","br"],overflow:Iv,offset:[0,4],targetOffset:Rv}},Nv=["arrow","prefixCls","transitionName","animation","align","placement","placements","getPopupContainer","showAction","hideAction","overlayClassName","overlayStyle","visible","trigger","autoFocus","overlay","children","onVisibleChange"];function Bv(t,e){var n,r=t.arrow,i=void 0!==r&&r,o=t.prefixCls,a=void 0===o?"rc-dropdown":o,c=t.transitionName,l=t.animation,u=t.align,s=t.placement,f=void 0===s?"bottomLeft":s,h=t.placements,d=void 0===h?Lv:h,p=t.getPopupContainer,v=t.showAction,g=t.hideAction,m=t.overlayClassName,y=t.overlayStyle,b=t.visible,x=t.trigger,w=void 0===x?["hover"]:x,S=t.autoFocus,k=t.overlay,C=t.children,O=t.onVisibleChange,E=(0,rt.Z)(t,Nv),M=Z.useState(),A=(0,rr.Z)(M,2),P=A[0],_=A[1],D="visible"in t?b:P,T=Z.useRef(null),F=Z.useRef(null),j=Z.useRef(null);Z.useImperativeHandle(e,(function(){return T.current}));var I=function(t){_(t),null==O||O(t)};!function(t){var e=t.visible,n=t.triggerRef,r=t.onVisibleChange,i=t.autoFocus,o=t.overlayRef,a=Z.useRef(!1),c=function(){var t,i;e&&(null===(t=n.current)||void 0===t||null===(i=t.focus)||void 0===i||i.call(t),null==r||r(!1))},l=function(){var t;return!(null===(t=o.current)||void 0===t||!t.focus||(o.current.focus(),a.current=!0,0))},u=function(t){switch(t.keyCode){case Tv:c();break;case Zv:var e=!1;a.current||(e=l()),e?t.preventDefault():c()}};Z.useEffect((function(){return e?(window.addEventListener("keydown",u),i&&(0,pe.Z)(l,3),function(){window.removeEventListener("keydown",u),a.current=!1}):function(){a.current=!1}}),[e])}({visible:D,triggerRef:j,onVisibleChange:I,autoFocus:S,overlayRef:F});var R,L,N,z=function(){return Z.createElement(jv,{ref:F,overlay:k,prefixCls:a,arrow:i})},U=Z.cloneElement(C,{className:K()(null===(n=C.props)||void 0===n?void 0:n.className,D&&(R=t.openClassName,void 0!==R?R:"".concat(a,"-open"))),ref:(0,le.Yr)(C)?(0,le.sQ)(j,C.ref):void 0}),H=g;return H||-1===w.indexOf("contextMenu")||(H=["click"]),Z.createElement(Di,(0,J.Z)({builtinPlacements:d},E,{prefixCls:a,ref:T,popupClassName:K()(m,(0,B.Z)({},"".concat(a,"-show-arrow"),i)),popupStyle:y,action:w,showAction:v,hideAction:H,popupPlacement:f,popupAlign:u,popupTransitionName:c,popupAnimation:l,popupVisible:D,stretch:(L=t.minOverlayWidthMatchTrigger,N=t.alignPoint,("minOverlayWidthMatchTrigger"in t?L:!N)?"minWidth":""),popup:"function"==typeof k?z:z(),onPopupVisibleChange:I,onPopupClick:function(e){var n=t.onOverlayClick;_(!1),n&&n(e)},getPopupContainer:p}),U)}var zv=Z.forwardRef(Bv),Uv=Z.createContext(null);function Hv(t,e){return void 0===t?null:"".concat(t,"-").concat(e)}function Wv(t){return Hv(Z.useContext(Uv),t)}var Vv=["children","locked"],Gv=Z.createContext(null);function Xv(t){var e=t.children,n=t.locked,r=(0,rt.Z)(t,Vv),i=Z.useContext(Gv),o=(0,ma.Z)((function(){return function(t,e){var n=(0,lt.Z)({},t);return Object.keys(e).forEach((function(t){var r=e[t];void 0!==r&&(n[t]=r)})),n}(i,r)}),[i,r],(function(t,e){return!(n||t[0]===e[0]&&(0,Pa.Z)(t[1],e[1],!0))}));return Z.createElement(Gv.Provider,{value:o},e)}var qv=[],Yv=Z.createContext(null);function $v(){return Z.useContext(Yv)}var Kv=Z.createContext(qv);function Jv(t){var e=Z.useContext(Kv);return Z.useMemo((function(){return void 0!==t?[].concat((0,Y.Z)(e),[t]):e}),[e,t])}var Qv=Z.createContext(null),tg=Z.createContext({});function eg(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(ue(t)){var n=t.nodeName.toLowerCase(),r=["input","select","textarea","button"].includes(n)||t.isContentEditable||"a"===n&&!!t.getAttribute("href"),i=t.getAttribute("tabindex"),o=Number(i),a=null;return i&&!Number.isNaN(o)?a=o:r&&null===a&&(a=0),r&&t.disabled&&(a=null),null!==a&&(a>=0||e&&a<0)}return!1}function ng(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=(0,Y.Z)(t.querySelectorAll("*")).filter((function(t){return eg(t,e)}));return eg(t,e)&&n.unshift(t),n}var rg=Ya.Z.LEFT,ig=Ya.Z.RIGHT,og=Ya.Z.UP,ag=Ya.Z.DOWN,cg=Ya.Z.ENTER,lg=Ya.Z.ESC,ug=Ya.Z.HOME,sg=Ya.Z.END,fg=[og,ag,rg,ig];function hg(t,e){return ng(t,!0).filter((function(t){return e.has(t)}))}function dg(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;if(!t)return null;var i=hg(t,e),o=i.length,a=i.findIndex((function(t){return n===t}));return r<0?-1===a?a=o-1:a-=1:r>0&&(a+=1),i[a=(a+o)%o]}function pg(t,e,n,r,i,o,a,c,l,u){var s=Z.useRef(),f=Z.useRef();f.current=e;var h=function(){pe.Z.cancel(s.current)};return Z.useEffect((function(){return function(){h()}}),[]),function(d){var p=d.which;if([].concat(fg,[cg,lg,ug,sg]).includes(p)){var v,g,m,y=function(){return v=new Set,g=new Map,m=new Map,o().forEach((function(t){var e=document.querySelector("[data-menu-id='".concat(Hv(r,t),"']"));e&&(v.add(e),m.set(e,t),g.set(t,e))})),v};y();var b=function(t,e){for(var n=t||document.activeElement;n;){if(e.has(n))return n;n=n.parentElement}return null}(g.get(e),v),x=m.get(b),w=function(t,e,n,r){var i,o,a,c,l="prev",u="next",s="children",f="parent";if("inline"===t&&r===cg)return{inlineTrigger:!0};var h=(i={},(0,B.Z)(i,og,l),(0,B.Z)(i,ag,u),i),d=(o={},(0,B.Z)(o,rg,n?u:l),(0,B.Z)(o,ig,n?l:u),(0,B.Z)(o,ag,s),(0,B.Z)(o,cg,s),o),p=(a={},(0,B.Z)(a,og,l),(0,B.Z)(a,ag,u),(0,B.Z)(a,cg,s),(0,B.Z)(a,lg,f),(0,B.Z)(a,rg,n?s:f),(0,B.Z)(a,ig,n?f:s),a);switch(null===(c={inline:h,horizontal:d,vertical:p,inlineSub:h,horizontalSub:p,verticalSub:p}["".concat(t).concat(e?"":"Sub")])||void 0===c?void 0:c[r]){case l:return{offset:-1,sibling:!0};case u:return{offset:1,sibling:!0};case f:return{offset:-1,sibling:!1};case s:return{offset:1,sibling:!1};default:return null}}(t,1===a(x,!0).length,n,p);if(!w&&p!==ug&&p!==sg)return;(fg.includes(p)||[ug,sg].includes(p))&&d.preventDefault();var S=function(t){if(t){var e=t,n=t.querySelector("a");null!=n&&n.getAttribute("href")&&(e=n);var r=m.get(t);c(r),h(),s.current=(0,pe.Z)((function(){f.current===r&&e.focus()}))}};if([ug,sg].includes(p)||w.sibling||!b){var k,C;k=b&&"inline"!==t?function(t){for(var e=t;e;){if(e.getAttribute("data-menu-list"))return e;e=e.parentElement}return null}(b):i.current;var O=hg(k,v);C=p===ug?O[0]:p===sg?O[O.length-1]:dg(k,v,b,w.offset),S(C)}else if(w.inlineTrigger)l(x);else if(w.offset>0)l(x,!0),h(),s.current=(0,pe.Z)((function(){y();var t=b.getAttribute("aria-controls"),e=dg(document.getElementById(t),v);S(e)}),5);else if(w.offset<0){var E=a(x,!0),M=E[E.length-2],A=g.get(M);l(M,!1),S(A)}}null==u||u(d)}}var vg="__RC_UTIL_PATH_SPLIT__",gg=function(t){return t.join(vg)},mg="rc-menu-more";function yg(){var t=Z.useState({}),e=(0,rr.Z)(t,2)[1],n=(0,Z.useRef)(new Map),r=(0,Z.useRef)(new Map),i=Z.useState([]),o=(0,rr.Z)(i,2),a=o[0],c=o[1],l=(0,Z.useRef)(0),u=(0,Z.useRef)(!1),s=(0,Z.useCallback)((function(t,i){var o=gg(i);r.current.set(o,t),n.current.set(t,o),l.current+=1;var a,c=l.current;a=function(){c===l.current&&(u.current||e({}))},Promise.resolve().then(a)}),[]),f=(0,Z.useCallback)((function(t,e){var i=gg(e);r.current.delete(i),n.current.delete(t)}),[]),h=(0,Z.useCallback)((function(t){c(t)}),[]),d=(0,Z.useCallback)((function(t,e){var r=n.current.get(t)||"",i=r.split(vg);return e&&a.includes(i[0])&&i.unshift(mg),i}),[a]),p=(0,Z.useCallback)((function(t,e){return t.some((function(t){return d(t,!0).includes(e)}))}),[d]),v=(0,Z.useCallback)((function(t){var e="".concat(n.current.get(t)).concat(vg),i=new Set;return(0,Y.Z)(r.current.keys()).forEach((function(t){t.startsWith(e)&&i.add(r.current.get(t))})),i}),[]);return Z.useEffect((function(){return function(){u.current=!0}}),[]),{registerPath:s,unregisterPath:f,refreshOverflowKeys:h,isSubPathKey:p,getKeyPath:d,getKeys:function(){var t=(0,Y.Z)(n.current.keys());return a.length&&t.push(mg),t},getSubPathKeys:v}}function bg(t){var e=Z.useRef(t);e.current=t;var n=Z.useCallback((function(){for(var t,n=arguments.length,r=new Array(n),i=0;i1&&(y.motionAppear=!1);var b=y.onVisibleChanged;return y.onVisibleChanged=function(t){return h.current||t||g(!0),null==b?void 0:b(t)},v?null:Z.createElement(Xv,{mode:o,locked:!h.current},Z.createElement(ne.ZP,(0,J.Z)({visible:m},y,{forceRender:l,removeOnLeave:!1,leavedClassName:"".concat(c,"-hidden")}),(function(t){var n=t.className,r=t.style;return Z.createElement(Rg,{id:e,className:n,style:r},i)})))}var Gg=["style","className","title","eventKey","warnKey","disabled","internalPopupClose","children","itemIcon","expandIcon","popupClassName","popupOffset","onClick","onMouseEnter","onMouseLeave","onTitleClick","onTitleMouseEnter","onTitleMouseLeave"],Xg=["active"],qg=function(t){var e,n=t.style,r=t.className,i=t.title,o=t.eventKey,a=(t.warnKey,t.disabled),c=t.internalPopupClose,l=t.children,u=t.itemIcon,s=t.expandIcon,f=t.popupClassName,h=t.popupOffset,d=t.onClick,p=t.onMouseEnter,v=t.onMouseLeave,g=t.onTitleClick,m=t.onTitleMouseEnter,y=t.onTitleMouseLeave,b=(0,rt.Z)(t,Gg),x=Wv(o),w=Z.useContext(Gv),S=w.prefixCls,k=w.mode,C=w.openKeys,O=w.disabled,E=w.overflowDisabled,M=w.activeKey,A=w.selectedKeys,P=w.itemIcon,_=w.expandIcon,D=w.onItemClick,T=w.onOpenChange,F=w.onActive,j=Z.useContext(tg)._internalRenderSubMenuItem,I=Z.useContext(Qv).isSubPathKey,R=Jv(),L="".concat(S,"-submenu"),N=O||a,z=Z.useRef(),U=Z.useRef();var H=u||P,W=s||_,V=C.includes(o),G=!E&&V,X=I(A,o),q=Sg(o,N,m,y),Y=q.active,$=(0,rt.Z)(q,Xg),Q=Z.useState(!1),tt=(0,rr.Z)(Q,2),et=tt[0],nt=tt[1],it=function(t){N||nt(t)},ot=Z.useMemo((function(){return Y||"inline"!==k&&(et||I([M],o))}),[k,Y,M,et,o,I]),at=kg(R.length),ct=bg((function(t){null==d||d(Eg(t)),D(t)})),ut=x&&"".concat(x,"-popup"),st=Z.createElement("div",(0,J.Z)({role:"menuitem",style:at,className:"".concat(L,"-title"),tabIndex:N?null:-1,ref:z,title:"string"==typeof i?i:null,"data-menu-id":E&&x?null:x,"aria-expanded":G,"aria-haspopup":!0,"aria-controls":ut,"aria-disabled":N,onClick:function(t){N||(null==g||g({key:o,domEvent:t}),"inline"===k&&T(o,!V))},onFocus:function(){F(o)}},$),i,Z.createElement(Cg,{icon:"horizontal"!==k?W:null,props:(0,lt.Z)((0,lt.Z)({},t),{},{isOpen:G,isSubMenu:!0})},Z.createElement("i",{className:"".concat(L,"-arrow")}))),ft=Z.useRef(k);if("inline"!==k&&R.length>1?ft.current="vertical":ft.current=k,!E){var ht=ft.current;st=Z.createElement(Wg,{mode:ht,prefixCls:L,visible:!c&&G&&"inline"!==k,popupClassName:f,popupOffset:h,popup:Z.createElement(Xv,{mode:"horizontal"===ht?"vertical":ht},Z.createElement(Rg,{id:ut,ref:U},l)),disabled:N,onVisibleChange:function(t){"inline"!==k&&T(o,t)}},st)}var dt=Z.createElement(eh.Item,(0,J.Z)({role:"none"},b,{component:"li",style:n,className:K()(L,"".concat(L,"-").concat(k),r,(e={},(0,B.Z)(e,"".concat(L,"-open"),G),(0,B.Z)(e,"".concat(L,"-active"),ot),(0,B.Z)(e,"".concat(L,"-selected"),X),(0,B.Z)(e,"".concat(L,"-disabled"),N),e)),onMouseEnter:function(t){it(!0),null==p||p({key:o,domEvent:t})},onMouseLeave:function(t){it(!1),null==v||v({key:o,domEvent:t})}}),st,!E&&Z.createElement(Vg,{id:ut,open:G,keyPath:R},l));return j&&(dt=j(dt,t,{selected:X,active:ot,open:G,disabled:N})),Z.createElement(Xv,{onItemClick:ct,mode:"horizontal"===k?"vertical":k,itemIcon:H,expandIcon:W},dt)};function Yg(t){var e,n=t.eventKey,r=t.children,i=Jv(n),o=Lg(r,i),a=$v();return Z.useEffect((function(){if(a)return a.registerPath(n,i),function(){a.unregisterPath(n,i)}}),[i]),e=a?o:Z.createElement(qg,t,o),Z.createElement(Kv.Provider,{value:i},e)}var $g=["className","title","eventKey","children"],Kg=["children"],Jg=function(t){var e=t.className,n=t.title,r=(t.eventKey,t.children),i=(0,rt.Z)(t,$g),o=Z.useContext(Gv).prefixCls,a="".concat(o,"-item-group");return Z.createElement("li",(0,J.Z)({role:"presentation"},i,{onClick:function(t){return t.stopPropagation()},className:K()(a,e)}),Z.createElement("div",{role:"presentation",className:"".concat(a,"-title"),title:"string"==typeof n?n:void 0},n),Z.createElement("ul",{role:"group",className:"".concat(a,"-list")},r))};function Qg(t){var e=t.children,n=(0,rt.Z)(t,Kg),r=Lg(e,Jv(n.eventKey));return $v()?r:Z.createElement(Jg,(0,ce.Z)(n,["warnKey"]),r)}function tm(t){var e=t.className,n=t.style,r=Z.useContext(Gv).prefixCls;return $v()?null:Z.createElement("li",{className:K()("".concat(r,"-item-divider"),e),style:n})}var em=["label","children","key","type"];function nm(t){return(t||[]).map((function(t,e){if(t&&"object"===(0,it.Z)(t)){var n=t,r=n.label,i=n.children,o=n.key,a=n.type,c=(0,rt.Z)(n,em),l=null!=o?o:"tmp-".concat(e);return i||"group"===a?"group"===a?Z.createElement(Qg,(0,J.Z)({key:l},c,{title:r}),nm(i)):Z.createElement(Yg,(0,J.Z)({key:l},c,{title:r}),nm(i)):"divider"===a?Z.createElement(tm,(0,J.Z)({key:l},c)):Z.createElement(Zg,(0,J.Z)({key:l},c),r)}return null})).filter((function(t){return t}))}function rm(t,e,n){var r=t;return e&&(r=nm(e)),Lg(r,n)}var im=["prefixCls","rootClassName","style","className","tabIndex","items","children","direction","id","mode","inlineCollapsed","disabled","disabledOverflow","subMenuOpenDelay","subMenuCloseDelay","forceSubMenuRender","defaultOpenKeys","openKeys","activeKey","defaultActiveFirst","selectable","multiple","defaultSelectedKeys","selectedKeys","onSelect","onDeselect","inlineIndent","motion","defaultMotions","triggerSubMenuAction","builtinPlacements","itemIcon","expandIcon","overflowedIndicator","overflowedIndicatorPopupClassName","getPopupContainer","onClick","onOpenChange","onKeyDown","openAnimation","openTransitionName","_internalRenderMenuItem","_internalRenderSubMenuItem"],om=[],am=Z.forwardRef((function(t,e){var n,r,i=t,o=i.prefixCls,a=void 0===o?"rc-menu":o,c=i.rootClassName,l=i.style,u=i.className,s=i.tabIndex,f=void 0===s?0:s,h=i.items,d=i.children,p=i.direction,v=i.id,g=i.mode,m=void 0===g?"vertical":g,y=i.inlineCollapsed,b=i.disabled,x=i.disabledOverflow,w=i.subMenuOpenDelay,S=void 0===w?.1:w,k=i.subMenuCloseDelay,C=void 0===k?.1:k,O=i.forceSubMenuRender,E=i.defaultOpenKeys,M=i.openKeys,A=i.activeKey,P=i.defaultActiveFirst,_=i.selectable,D=void 0===_||_,T=i.multiple,F=void 0!==T&&T,j=i.defaultSelectedKeys,I=i.selectedKeys,R=i.onSelect,L=i.onDeselect,N=i.inlineIndent,z=void 0===N?24:N,U=i.motion,H=i.defaultMotions,W=i.triggerSubMenuAction,V=void 0===W?"hover":W,G=i.builtinPlacements,X=i.itemIcon,q=i.expandIcon,$=i.overflowedIndicator,Q=void 0===$?"...":$,tt=i.overflowedIndicatorPopupClassName,et=i.getPopupContainer,nt=i.onClick,it=i.onOpenChange,ot=i.onKeyDown,at=(i.openAnimation,i.openTransitionName,i._internalRenderMenuItem),ct=i._internalRenderSubMenuItem,ut=(0,rt.Z)(i,im),st=Z.useMemo((function(){return rm(d,h,om)}),[d,h]),ft=Z.useState(!1),ht=(0,rr.Z)(ft,2),dt=ht[0],pt=ht[1],vt=Z.useRef(),gt=function(t){var e=(0,At.Z)(t,{value:t}),n=(0,rr.Z)(e,2),r=n[0],i=n[1];return Z.useEffect((function(){wg+=1;var t="".concat(xg,"-").concat(wg);i("rc-menu-uuid-".concat(t))}),[]),r}(v),mt="rtl"===p;var yt=(0,At.Z)(E,{value:M,postState:function(t){return t||om}}),bt=(0,rr.Z)(yt,2),xt=bt[0],wt=bt[1],St=function(t){function e(){wt(t),null==it||it(t)}arguments.length>1&&void 0!==arguments[1]&&arguments[1]?(0,Pt.flushSync)(e):e()},kt=Z.useState(xt),Ct=(0,rr.Z)(kt,2),Ot=Ct[0],Et=Ct[1],Mt=Z.useRef(!1),_t=Z.useMemo((function(){return"inline"!==m&&"vertical"!==m||!y?[m,!1]:["vertical",y]}),[m,y]),Dt=(0,rr.Z)(_t,2),Tt=Dt[0],Zt=Dt[1],Ft="inline"===Tt,jt=Z.useState(Tt),It=(0,rr.Z)(jt,2),Rt=It[0],Lt=It[1],Nt=Z.useState(Zt),Bt=(0,rr.Z)(Nt,2),zt=Bt[0],Ut=Bt[1];Z.useEffect((function(){Lt(Tt),Ut(Zt),Mt.current&&(Ft?wt(Ot):St(om))}),[Tt,Zt]);var Ht=Z.useState(0),Wt=(0,rr.Z)(Ht,2),Vt=Wt[0],Gt=Wt[1],Xt=Vt>=st.length-1||"horizontal"!==Rt||x;Z.useEffect((function(){Ft&&Et(xt)}),[xt]),Z.useEffect((function(){return Mt.current=!0,function(){Mt.current=!1}}),[]);var qt=yg(),Yt=qt.registerPath,$t=qt.unregisterPath,Kt=qt.refreshOverflowKeys,Jt=qt.isSubPathKey,Qt=qt.getKeyPath,te=qt.getKeys,ee=qt.getSubPathKeys,ne=Z.useMemo((function(){return{registerPath:Yt,unregisterPath:$t}}),[Yt,$t]),re=Z.useMemo((function(){return{isSubPathKey:Jt}}),[Jt]);Z.useEffect((function(){Kt(Xt?om:st.slice(Vt+1).map((function(t){return t.key})))}),[Vt,Xt]);var ie=(0,At.Z)(A||P&&(null===(n=st[0])||void 0===n?void 0:n.key),{value:A}),oe=(0,rr.Z)(ie,2),ae=oe[0],ce=oe[1],le=bg((function(t){ce(t)})),ue=bg((function(){ce(void 0)}));(0,Z.useImperativeHandle)(e,(function(){return{list:vt.current,focus:function(t){var e,n,r,i,o=null!=ae?ae:null===(e=st.find((function(t){return!t.props.disabled})))||void 0===e?void 0:e.key;o&&(null===(n=vt.current)||void 0===n||null===(r=n.querySelector("li[data-menu-id='".concat(Hv(gt,o),"']")))||void 0===r||null===(i=r.focus)||void 0===i||i.call(r,t))}}}));var se=(0,At.Z)(j||[],{value:I,postState:function(t){return Array.isArray(t)?t:null==t?om:[t]}}),fe=(0,rr.Z)(se,2),he=fe[0],de=fe[1],pe=bg((function(t){null==nt||nt(Eg(t)),function(t){if(D){var e,n=t.key,r=he.includes(n);e=F?r?he.filter((function(t){return t!==n})):[].concat((0,Y.Z)(he),[n]):[n],de(e);var i=(0,lt.Z)((0,lt.Z)({},t),{},{selectedKeys:e});r?null==L||L(i):null==R||R(i)}!F&&xt.length&&"inline"!==Rt&&St(om)}(t)})),ve=bg((function(t,e){var n=xt.filter((function(e){return e!==t}));if(e)n.push(t);else if("inline"!==Rt){var r=ee(t);n=n.filter((function(t){return!r.has(t)}))}(0,Pa.Z)(xt,n,!0)||St(n,!0)})),ge=pg(Rt,ae,mt,gt,vt,te,Qt,ce,(function(t,e){var n=null!=e?e:!xt.includes(t);ve(t,n)}),ot);Z.useEffect((function(){pt(!0)}),[]);var me=Z.useMemo((function(){return{_internalRenderMenuItem:at,_internalRenderSubMenuItem:ct}}),[at,ct]),ye="horizontal"!==Rt||x?st:st.map((function(t,e){return Z.createElement(Xv,{key:t.key,overflowDisabled:e>Vt},t)})),be=Z.createElement(eh,(0,J.Z)({id:v,ref:vt,prefixCls:"".concat(a,"-overflow"),component:"ul",itemComponent:Zg,className:K()(a,"".concat(a,"-root"),"".concat(a,"-").concat(Rt),u,(r={},(0,B.Z)(r,"".concat(a,"-inline-collapsed"),zt),(0,B.Z)(r,"".concat(a,"-rtl"),mt),r),c),dir:p,style:l,role:"menu",tabIndex:f,data:ye,renderRawItem:function(t){return t},renderRawRest:function(t){var e=t.length,n=e?st.slice(-e):null;return Z.createElement(Yg,{eventKey:mg,title:Q,disabled:Xt,internalPopupClose:0===e,popupClassName:tt},n)},maxCount:"horizontal"!==Rt||x?eh.INVALIDATE:eh.RESPONSIVE,ssr:"full","data-menu-list":!0,onVisibleChange:function(t){Gt(t)},onKeyDown:ge},ut));return Z.createElement(tg.Provider,{value:me},Z.createElement(Uv.Provider,{value:gt},Z.createElement(Xv,{prefixCls:a,rootClassName:c,mode:Rt,openKeys:xt,rtl:mt,disabled:b,motion:dt?U:null,defaultMotions:dt?H:null,activeKey:ae,onActive:le,onInactive:ue,selectedKeys:he,inlineIndent:z,subMenuOpenDelay:S,subMenuCloseDelay:C,forceSubMenuRender:O,builtinPlacements:G,triggerSubMenuAction:V,getPopupContainer:et,itemIcon:X,expandIcon:q,onItemClick:pe,onOpenChange:ve},Z.createElement(Qv.Provider,{value:re},be),Z.createElement("div",{style:{display:"none"},"aria-hidden":!0},Z.createElement(Yv.Provider,{value:ne},st)))))})),cm=am;cm.Item=Zg,cm.SubMenu=Yg,cm.ItemGroup=Qg,cm.Divider=tm;var lm=cm;function um(t,e){var n=t.prefixCls,r=t.id,i=t.tabs,o=t.locale,a=t.mobile,c=t.moreIcon,l=void 0===c?"More":c,u=t.moreTransitionName,s=t.style,f=t.className,h=t.editable,d=t.tabBarGutter,p=t.rtl,v=t.removeAriaLabel,g=t.onTabClick,m=t.getPopupContainer,y=t.popupClassName,b=(0,Z.useState)(!1),x=(0,rr.Z)(b,2),w=x[0],S=x[1],k=(0,Z.useState)(null),C=(0,rr.Z)(k,2),O=C[0],E=C[1],M="".concat(r,"-more-popup"),A="".concat(n,"-dropdown"),P=null!==O?"".concat(M,"-").concat(O):null,_=null==o?void 0:o.dropdownAriaLabel;var D=Z.createElement(lm,{onClick:function(t){var e=t.key,n=t.domEvent;g(e,n),S(!1)},prefixCls:"".concat(A,"-menu"),id:M,tabIndex:-1,role:"listbox","aria-activedescendant":P,selectedKeys:[O],"aria-label":void 0!==_?_:"expanded dropdown"},i.map((function(t){var e=t.closable,n=t.disabled,i=t.closeIcon,o=t.key,a=t.label,c=Mv(e,i,h,n);return Z.createElement(Zg,{key:o,id:"".concat(M,"-").concat(o),role:"option","aria-controls":r&&"".concat(r,"-panel-").concat(o),disabled:n},Z.createElement("span",null,a),c&&Z.createElement("button",{type:"button","aria-label":v||"remove",tabIndex:0,className:"".concat(A,"-menu-item-remove"),onClick:function(t){t.stopPropagation(),function(t,e){t.preventDefault(),t.stopPropagation(),h.onEdit("remove",{key:e,event:t})}(t,o)}},i||h.removeIcon||"×"))})));function T(t){for(var e=i.filter((function(t){return!t.disabled})),n=e.findIndex((function(t){return t.key===O}))||0,r=e.length,o=0;oe?"left":"right"})})),P=(0,rr.Z)(A,2),_=P[0],D=P[1],T=mv(0,(function(t,e){!M&&b&&b({direction:t>e?"top":"bottom"})})),F=(0,rr.Z)(T,2),j=F[0],I=F[1],R=(0,Z.useState)([0,0]),L=(0,rr.Z)(R,2),N=L[0],z=L[1],U=(0,Z.useState)([0,0]),H=(0,rr.Z)(U,2),W=H[0],V=H[1],G=(0,Z.useState)([0,0]),X=(0,rr.Z)(G,2),q=X[0],$=X[1],Q=(0,Z.useState)([0,0]),tt=(0,rr.Z)(Q,2),et=tt[0],nt=tt[1],rt=function(t){var e=(0,Z.useRef)([]),n=(0,Z.useState)({}),r=(0,rr.Z)(n,2)[1],i=(0,Z.useRef)("function"==typeof t?t():t),o=Sv((function(){var t=i.current;e.current.forEach((function(e){t=e(t)})),e.current=[],i.current=t,r({})}));return[i.current,function(t){e.current.push(t),o()}]}(new Map),it=(0,rr.Z)(rt,2),ot=it[0],at=it[1],ct=function(t,e,n){return(0,Z.useMemo)((function(){for(var n,r=new Map,i=e.get(null===(n=t[0])||void 0===n?void 0:n.key)||gv,o=i.left+i.width,a=0;amt?mt:t}M&&f?(gt=0,mt=Math.max(0,st-pt)):(gt=Math.min(0,pt-st),mt=0);var bt=(0,Z.useRef)(),xt=(0,Z.useState)(),wt=(0,rr.Z)(xt,2),St=wt[0],kt=wt[1];function Ct(){kt(Date.now())}function Ot(){window.clearTimeout(bt.current)}!function(t,e){var n=(0,Z.useState)(),r=(0,rr.Z)(n,2),i=r[0],o=r[1],a=(0,Z.useState)(0),c=(0,rr.Z)(a,2),l=c[0],u=c[1],s=(0,Z.useState)(0),f=(0,rr.Z)(s,2),h=f[0],d=f[1],p=(0,Z.useState)(),v=(0,rr.Z)(p,2),g=v[0],m=v[1],y=(0,Z.useRef)(),b=(0,Z.useRef)(),x=(0,Z.useRef)(null);x.current={onTouchStart:function(t){var e=t.touches[0],n=e.screenX,r=e.screenY;o({x:n,y:r}),window.clearInterval(y.current)},onTouchMove:function(t){if(i){t.preventDefault();var n=t.touches[0],r=n.screenX,a=n.screenY;o({x:r,y:a});var c=r-i.x,s=a-i.y;e(c,s);var f=Date.now();u(f),d(f-l),m({x:c,y:s})}},onTouchEnd:function(){if(i&&(o(null),m(null),g)){var t=g.x/h,n=g.y/h,r=Math.abs(t),a=Math.abs(n);if(Math.max(r,a)a?(i=n,b.current="x"):(i=r,b.current="y"),e(-i,-i)&&t.preventDefault()}},Z.useEffect((function(){function e(t){x.current.onTouchMove(t)}function n(t){x.current.onTouchEnd(t)}return document.addEventListener("touchmove",e,{passive:!1}),document.addEventListener("touchend",n,{passive:!1}),t.current.addEventListener("touchstart",(function(t){x.current.onTouchStart(t)}),{passive:!1}),t.current.addEventListener("wheel",(function(t){x.current.onWheel(t)})),function(){document.removeEventListener("touchmove",e),document.removeEventListener("touchend",n)}}),[])}(k,(function(t,e){function n(t,e){t((function(t){return yt(t+e)}))}return!!dt&&(M?n(D,t):n(I,e),Ot(),Ct(),!0)})),(0,Z.useEffect)((function(){return Ot(),St&&(bt.current=window.setTimeout((function(){kt(0)}),100)),Ot}),[St]);var Et=function(t,e,n,r,i,o,a){var c,l,u,s=a.tabs,f=a.tabPosition,h=a.rtl;return["top","bottom"].includes(f)?(c="width",l=h?"right":"left",u=Math.abs(n)):(c="height",l="top",u=-n),(0,Z.useMemo)((function(){if(!s.length)return[0,0];for(var n=s.length,r=n,i=0;iu+e){r=i-1;break}}for(var a=0,f=n-1;f>=0;f-=1)if((t.get(s[f].key)||kv)[l]=r?[0,0]:[a,r]}),[t,e,r,i,o,u,f,s.map((function(t){return t.key})).join("_"),h])}(ct,pt,M?_:j,st,ft,ht,(0,lt.Z)((0,lt.Z)({},t),{},{tabs:o})),Mt=(0,rr.Z)(Et,2),At=Mt[0],Pt=Mt[1],_t=(0,de.Z)((function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:s,e=ct.get(t)||{width:0,height:0,left:0,right:0,top:0};if(M){var n=_;f?e.right<_?n=e.right:e.right+e.width>_+pt&&(n=e.right+e.width-pt):e.left<-_?n=-e.left:e.left+e.width>-_+pt&&(n=-(e.left+e.width-pt)),I(0),D(yt(n))}else{var r=j;e.top<-j?r=-e.top:e.top+e.height>-j+pt&&(r=-(e.top+e.height-pt)),D(0),I(yt(r))}})),Dt={};"top"===v||"bottom"===v?Dt[f?"marginRight":"marginLeft"]=g:Dt.marginTop=g;var Tt=o.map((function(t,e){var n=t.key;return Z.createElement(fm,{id:l,prefixCls:i,key:n,tab:t,style:0===e?void 0:Dt,closable:t.closable,editable:d,active:n===s,renderWrapper:m,removeAriaLabel:null==p?void 0:p.removeAriaLabel,onClick:function(t){y(n,t)},onFocus:function(){_t(n),Ct(),k.current&&(f||(k.current.scrollLeft=0),k.current.scrollTop=0)}})})),Zt=function(){return at((function(){var t=new Map;return o.forEach((function(e){var n,r=e.key,i=null===(n=C.current)||void 0===n?void 0:n.querySelector('[data-node-key="'.concat(Ev(r),'"]'));i&&t.set(r,{width:i.offsetWidth,height:i.offsetHeight,left:i.offsetLeft,top:i.offsetTop})})),t}))};(0,Z.useEffect)((function(){Zt()}),[o.map((function(t){return t.key})).join("_")]);var Ft=Sv((function(){var t=hm(x),e=hm(w),n=hm(S);z([t[0]-e[0]-n[0],t[1]-e[1]-n[1]]);var r=hm(E);$(r);var i=hm(O);nt(i);var o=hm(C);V([o[0]-r[0],o[1]-r[1]]),Zt()})),jt=o.slice(0,At),It=o.slice(Pt+1),Rt=[].concat((0,Y.Z)(jt),(0,Y.Z)(It)),Lt=(0,Z.useState)(),Nt=(0,rr.Z)(Lt,2),Bt=Nt[0],zt=Nt[1],Ut=ct.get(s),Ht=(0,Z.useRef)();function Wt(){pe.Z.cancel(Ht.current)}(0,Z.useEffect)((function(){var t={};return Ut&&(M?(f?t.right=Ut.right:t.left=Ut.left,t.width=Ut.width):(t.top=Ut.top,t.height=Ut.height)),Wt(),Ht.current=(0,pe.Z)((function(){zt(t)})),Wt}),[Ut,M,f]),(0,Z.useEffect)((function(){_t()}),[s,gt,mt,Cv(Ut),Cv(ct),M]),(0,Z.useEffect)((function(){Ft()}),[f]);var Vt,Gt,Xt,qt,Yt=!!Rt.length,$t="".concat(i,"-nav-wrap");return M?f?(Gt=_>0,Vt=_!==mt):(Vt=_<0,Gt=_!==gt):(Xt=j<0,qt=j!==gt),Z.createElement(ii,{onResize:Ft},Z.createElement("div",{ref:(0,le.x1)(e,x),role:"tablist",className:K()("".concat(i,"-nav"),a),style:c,onKeyDown:function(){Ct()}},Z.createElement(Dv,{ref:w,position:"left",extra:h,prefixCls:i}),Z.createElement("div",{className:K()($t,(n={},(0,B.Z)(n,"".concat($t,"-ping-left"),Vt),(0,B.Z)(n,"".concat($t,"-ping-right"),Gt),(0,B.Z)(n,"".concat($t,"-ping-top"),Xt),(0,B.Z)(n,"".concat($t,"-ping-bottom"),qt),n)),ref:k},Z.createElement(ii,{onResize:Ft},Z.createElement("div",{ref:C,className:"".concat(i,"-nav-list"),style:{transform:"translate(".concat(_,"px, ").concat(j,"px)"),transition:St?"none":void 0}},Tt,Z.createElement(Pv,{ref:E,prefixCls:i,locale:p,editable:d,style:(0,lt.Z)((0,lt.Z)({},0===Tt.length?void 0:Dt),{},{visibility:Yt?"hidden":null})}),Z.createElement("div",{className:K()("".concat(i,"-ink-bar"),(0,B.Z)({},"".concat(i,"-ink-bar-animated"),u.inkBar)),style:Bt})))),Z.createElement(sm,(0,J.Z)({},t,{removeAriaLabel:null==p?void 0:p.removeAriaLabel,ref:O,prefixCls:i,tabs:Rt,className:!Yt&&vt,tabMoving:!!St})),Z.createElement(Dv,{ref:S,position:"right",extra:h,prefixCls:i})))}var vm=Z.forwardRef(pm),gm=["renderTabBar"],mm=["label","key"];function ym(t){var e=t.renderTabBar,n=(0,rt.Z)(t,gm),r=Z.useContext(fv).tabs;if(e){var i=(0,lt.Z)((0,lt.Z)({},n),{},{panes:r.map((function(t){var e=t.label,n=t.key,r=(0,rt.Z)(t,mm);return Z.createElement(dv,(0,J.Z)({tab:e,key:n,tabKey:n},r))}))});return e(i,vm)}return Z.createElement(vm,n)}var bm=["id","prefixCls","className","items","direction","activeKey","defaultActiveKey","editable","animated","tabPosition","tabBarGutter","tabBarStyle","tabBarExtraContent","locale","moreIcon","moreTransitionName","destroyInactiveTabPane","renderTabBar","onChange","onTabClick","onTabScroll","getPopupContainer","popupClassName"],xm=0;function wm(t,e){var n,r=t.id,i=t.prefixCls,o=void 0===i?"rc-tabs":i,a=t.className,c=t.items,l=t.direction,u=t.activeKey,s=t.defaultActiveKey,f=t.editable,h=t.animated,d=t.tabPosition,p=void 0===d?"top":d,v=t.tabBarGutter,g=t.tabBarStyle,m=t.tabBarExtraContent,y=t.locale,b=t.moreIcon,x=t.moreTransitionName,w=t.destroyInactiveTabPane,S=t.renderTabBar,k=t.onChange,C=t.onTabClick,O=t.onTabScroll,E=t.getPopupContainer,M=t.popupClassName,A=(0,rt.Z)(t,bm),P=Z.useMemo((function(){return(c||[]).filter((function(t){return t&&"object"===(0,it.Z)(t)&&"key"in t}))}),[c]),_="rtl"===l,D=function(){var t,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{inkBar:!0,tabPane:!1};return(t=!1===e?{inkBar:!1,tabPane:!1}:!0===e?{inkBar:!0,tabPane:!1}:(0,lt.Z)({inkBar:!0},"object"===(0,it.Z)(e)?e:{})).tabPaneMotion&&void 0===t.tabPane&&(t.tabPane=!0),!t.tabPaneMotion&&t.tabPane&&(t.tabPane=!1),t}(h),T=(0,Z.useState)(!1),F=(0,rr.Z)(T,2),j=F[0],I=F[1];(0,Z.useEffect)((function(){I(li())}),[]);var R=(0,At.Z)((function(){var t;return null===(t=P[0])||void 0===t?void 0:t.key}),{value:u,defaultValue:s}),L=(0,rr.Z)(R,2),N=L[0],z=L[1],U=(0,Z.useState)((function(){return P.findIndex((function(t){return t.key===N}))})),H=(0,rr.Z)(U,2),W=H[0],V=H[1];(0,Z.useEffect)((function(){var t,e=P.findIndex((function(t){return t.key===N}));-1===e&&(e=Math.max(0,Math.min(W,P.length-1)),z(null===(t=P[e])||void 0===t?void 0:t.key));V(e)}),[P.map((function(t){return t.key})).join("_"),N,W]);var G=(0,At.Z)(null,{value:r}),X=(0,rr.Z)(G,2),q=X[0],Y=X[1];(0,Z.useEffect)((function(){r||(Y("rc-tabs-".concat(xm)),xm+=1)}),[]);var $={id:q,activeKey:N,animated:D,tabPosition:p,rtl:_,mobile:j},Q=(0,lt.Z)((0,lt.Z)({},$),{},{editable:f,locale:y,moreIcon:b,moreTransitionName:x,tabBarGutter:v,onTabClick:function(t,e){null==C||C(t,e);var n=t!==N;z(t),n&&(null==k||k(t))},onTabScroll:O,extra:m,style:g,panes:null,getPopupContainer:E,popupClassName:M});return Z.createElement(fv.Provider,{value:{tabs:P,prefixCls:o}},Z.createElement("div",(0,J.Z)({ref:e,id:r,className:K()(o,"".concat(o,"-").concat(p),(n={},(0,B.Z)(n,"".concat(o,"-mobile"),j),(0,B.Z)(n,"".concat(o,"-editable"),f),(0,B.Z)(n,"".concat(o,"-rtl"),_),n),a)},A),undefined,Z.createElement(ym,(0,J.Z)({},Q,{renderTabBar:S})),Z.createElement(vv,(0,J.Z)({destroyInactiveTabPane:w},$,{animated:D}))))}var Sm=Z.forwardRef(wm);var km=function(){return null},Cm={motionAppear:!1,motionEnter:!0,motionLeave:!0};var Om=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(t);i ".concat(c,"-nav, > div > ").concat(c,"-nav"),(e={},(0,V.Z)(e,"".concat(c,"-tab"),{margin:0,padding:l,background:u,border:"".concat(t.lineWidth,"px ").concat(t.lineType," ").concat(f),transition:"all ".concat(t.motionDurationSlow," ").concat(t.motionEaseInOut)}),(0,V.Z)(e,"".concat(c,"-tab-active"),{color:h,background:t.colorBgContainer}),(0,V.Z)(e,"".concat(c,"-ink-bar"),{visibility:"hidden"}),e)),(0,V.Z)(a,"&".concat(c,"-top, &").concat(c,"-bottom"),(0,V.Z)({},"> ".concat(c,"-nav, > div > ").concat(c,"-nav"),(0,V.Z)({},"".concat(c,"-tab + ").concat(c,"-tab"),{marginLeft:{_skip_check_:!0,value:"".concat(s,"px")}}))),(0,V.Z)(a,"&".concat(c,"-top"),(0,V.Z)({},"> ".concat(c,"-nav, > div > ").concat(c,"-nav"),(n={},(0,V.Z)(n,"".concat(c,"-tab"),{borderRadius:"".concat(t.borderRadiusLG,"px ").concat(t.borderRadiusLG,"px 0 0")}),(0,V.Z)(n,"".concat(c,"-tab-active"),{borderBottomColor:t.colorBgContainer}),n))),(0,V.Z)(a,"&".concat(c,"-bottom"),(0,V.Z)({},"> ".concat(c,"-nav, > div > ").concat(c,"-nav"),(r={},(0,V.Z)(r,"".concat(c,"-tab"),{borderRadius:"0 0 ".concat(t.borderRadiusLG,"px ").concat(t.borderRadiusLG,"px")}),(0,V.Z)(r,"".concat(c,"-tab-active"),{borderTopColor:t.colorBgContainer}),r))),(0,V.Z)(a,"&".concat(c,"-left, &").concat(c,"-right"),(0,V.Z)({},"> ".concat(c,"-nav, > div > ").concat(c,"-nav"),(0,V.Z)({},"".concat(c,"-tab + ").concat(c,"-tab"),{marginTop:"".concat(s,"px")}))),(0,V.Z)(a,"&".concat(c,"-left"),(0,V.Z)({},"> ".concat(c,"-nav, > div > ").concat(c,"-nav"),(i={},(0,V.Z)(i,"".concat(c,"-tab"),{borderRadius:{_skip_check_:!0,value:"".concat(t.borderRadiusLG,"px 0 0 ").concat(t.borderRadiusLG,"px")}}),(0,V.Z)(i,"".concat(c,"-tab-active"),{borderRightColor:{_skip_check_:!0,value:t.colorBgContainer}}),i))),(0,V.Z)(a,"&".concat(c,"-right"),(0,V.Z)({},"> ".concat(c,"-nav, > div > ").concat(c,"-nav"),(o={},(0,V.Z)(o,"".concat(c,"-tab"),{borderRadius:{_skip_check_:!0,value:"0 ".concat(t.borderRadiusLG,"px ").concat(t.borderRadiusLG,"px 0")}}),(0,V.Z)(o,"".concat(c,"-tab-active"),{borderLeftColor:{_skip_check_:!0,value:t.colorBgContainer}}),o))),a))},Am=function(t){var e=t.componentCls,n=t.itemHoverColor,r=t.dropdownEdgeChildVerticalPadding;return(0,V.Z)({},"".concat(e,"-dropdown"),Object.assign(Object.assign({},(0,Qe.Wf)(t)),(0,V.Z)({position:"absolute",top:-9999,left:{_skip_check_:!0,value:-9999},zIndex:t.zIndexPopup,display:"block","&-hidden":{display:"none"}},"".concat(e,"-dropdown-menu"),{maxHeight:t.tabsDropdownHeight,margin:0,padding:"".concat(r,"px 0"),overflowX:"hidden",overflowY:"auto",textAlign:{_skip_check_:!0,value:"left"},listStyleType:"none",backgroundColor:t.colorBgContainer,backgroundClip:"padding-box",borderRadius:t.borderRadiusLG,outline:"none",boxShadow:t.boxShadowSecondary,"&-item":Object.assign(Object.assign({},Qe.vS),{display:"flex",alignItems:"center",minWidth:t.tabsDropdownWidth,margin:0,padding:"".concat(t.paddingXXS,"px ").concat(t.paddingSM,"px"),color:t.colorText,fontWeight:"normal",fontSize:t.fontSize,lineHeight:t.lineHeight,cursor:"pointer",transition:"all ".concat(t.motionDurationSlow),"> span":{flex:1,whiteSpace:"nowrap"},"&-remove":{flex:"none",marginLeft:{_skip_check_:!0,value:t.marginSM},color:t.colorTextDescription,fontSize:t.fontSizeSM,background:"transparent",border:0,cursor:"pointer","&:hover":{color:n}},"&:hover":{background:t.controlItemBgHover},"&-disabled":{"&, &:hover":{color:t.colorTextDisabled,background:"transparent",cursor:"not-allowed"}}})})))},Pm=function(t){var e,n,r,i,o,a,c,l,u=t.componentCls,s=t.margin,f=t.colorBorderSecondary,h=t.horizontalMargin,d=t.verticalItemPadding,p=t.verticalItemMargin;return l={},(0,V.Z)(l,"".concat(u,"-top, ").concat(u,"-bottom"),(0,V.Z)({flexDirection:"column"},"> ".concat(u,"-nav, > div > ").concat(u,"-nav"),(n={margin:h,"&::before":{position:"absolute",right:{_skip_check_:!0,value:0},left:{_skip_check_:!0,value:0},borderBottom:"".concat(t.lineWidth,"px ").concat(t.lineType," ").concat(f),content:"''"}},(0,V.Z)(n,"".concat(u,"-ink-bar"),{height:t.lineWidthBold,"&-animated":{transition:"width ".concat(t.motionDurationSlow,", left ").concat(t.motionDurationSlow,",\n right ").concat(t.motionDurationSlow)}}),(0,V.Z)(n,"".concat(u,"-nav-wrap"),(e={"&::before, &::after":{top:0,bottom:0,width:t.controlHeight},"&::before":{left:{_skip_check_:!0,value:0},boxShadow:t.boxShadowTabsOverflowLeft},"&::after":{right:{_skip_check_:!0,value:0},boxShadow:t.boxShadowTabsOverflowRight}},(0,V.Z)(e,"&".concat(u,"-nav-wrap-ping-left::before"),{opacity:1}),(0,V.Z)(e,"&".concat(u,"-nav-wrap-ping-right::after"),{opacity:1}),e)),n))),(0,V.Z)(l,"".concat(u,"-top"),(0,V.Z)({},"> ".concat(u,"-nav,\n > div > ").concat(u,"-nav"),(0,V.Z)({"&::before":{bottom:0}},"".concat(u,"-ink-bar"),{bottom:0}))),(0,V.Z)(l,"".concat(u,"-bottom"),(r={},(0,V.Z)(r,"> ".concat(u,"-nav, > div > ").concat(u,"-nav"),(0,V.Z)({order:1,marginTop:"".concat(s,"px"),marginBottom:0,"&::before":{top:0}},"".concat(u,"-ink-bar"),{top:0})),(0,V.Z)(r,"> ".concat(u,"-content-holder, > div > ").concat(u,"-content-holder"),{order:0}),r)),(0,V.Z)(l,"".concat(u,"-left, ").concat(u,"-right"),(0,V.Z)({},"> ".concat(u,"-nav, > div > ").concat(u,"-nav"),(o={flexDirection:"column",minWidth:1.25*t.controlHeight},(0,V.Z)(o,"".concat(u,"-tab"),{padding:d,textAlign:"center"}),(0,V.Z)(o,"".concat(u,"-tab + ").concat(u,"-tab"),{margin:p}),(0,V.Z)(o,"".concat(u,"-nav-wrap"),(i={flexDirection:"column","&::before, &::after":{right:{_skip_check_:!0,value:0},left:{_skip_check_:!0,value:0},height:t.controlHeight},"&::before":{top:0,boxShadow:t.boxShadowTabsOverflowTop},"&::after":{bottom:0,boxShadow:t.boxShadowTabsOverflowBottom}},(0,V.Z)(i,"&".concat(u,"-nav-wrap-ping-top::before"),{opacity:1}),(0,V.Z)(i,"&".concat(u,"-nav-wrap-ping-bottom::after"),{opacity:1}),i)),(0,V.Z)(o,"".concat(u,"-ink-bar"),{width:t.lineWidthBold,"&-animated":{transition:"height ".concat(t.motionDurationSlow,", top ").concat(t.motionDurationSlow)}}),(0,V.Z)(o,"".concat(u,"-nav-list, ").concat(u,"-nav-operations"),{flex:"1 0 auto",flexDirection:"column"}),o))),(0,V.Z)(l,"".concat(u,"-left"),(a={},(0,V.Z)(a,"> ".concat(u,"-nav, > div > ").concat(u,"-nav"),(0,V.Z)({},"".concat(u,"-ink-bar"),{right:{_skip_check_:!0,value:0}})),(0,V.Z)(a,"> ".concat(u,"-content-holder, > div > ").concat(u,"-content-holder"),(0,V.Z)({marginLeft:{_skip_check_:!0,value:"-".concat(t.lineWidth,"px")},borderLeft:{_skip_check_:!0,value:"".concat(t.lineWidth,"px ").concat(t.lineType," ").concat(t.colorBorder)}},"> ".concat(u,"-content > ").concat(u,"-tabpane"),{paddingLeft:{_skip_check_:!0,value:t.paddingLG}})),a)),(0,V.Z)(l,"".concat(u,"-right"),(c={},(0,V.Z)(c,"> ".concat(u,"-nav, > div > ").concat(u,"-nav"),(0,V.Z)({order:1},"".concat(u,"-ink-bar"),{left:{_skip_check_:!0,value:0}})),(0,V.Z)(c,"> ".concat(u,"-content-holder, > div > ").concat(u,"-content-holder"),(0,V.Z)({order:0,marginRight:{_skip_check_:!0,value:-t.lineWidth},borderRight:{_skip_check_:!0,value:"".concat(t.lineWidth,"px ").concat(t.lineType," ").concat(t.colorBorder)}},"> ".concat(u,"-content > ").concat(u,"-tabpane"),{paddingRight:{_skip_check_:!0,value:t.paddingLG}})),c)),l},_m=function(t){var e,n,r,i=t.componentCls,o=t.cardPaddingSM,a=t.cardPaddingLG,c=t.horizontalItemPaddingSM,l=t.horizontalItemPaddingLG;return r={},(0,V.Z)(r,i,{"&-small":(0,V.Z)({},"> ".concat(i,"-nav"),(0,V.Z)({},"".concat(i,"-tab"),{padding:c,fontSize:t.titleFontSizeSM})),"&-large":(0,V.Z)({},"> ".concat(i,"-nav"),(0,V.Z)({},"".concat(i,"-tab"),{padding:l,fontSize:t.titleFontSizeLG}))}),(0,V.Z)(r,"".concat(i,"-card"),(n={},(0,V.Z)(n,"&".concat(i,"-small"),(e={},(0,V.Z)(e,"> ".concat(i,"-nav"),(0,V.Z)({},"".concat(i,"-tab"),{padding:o})),(0,V.Z)(e,"&".concat(i,"-bottom"),(0,V.Z)({},"> ".concat(i,"-nav ").concat(i,"-tab"),{borderRadius:"0 0 ".concat(t.borderRadius,"px ").concat(t.borderRadius,"px")})),(0,V.Z)(e,"&".concat(i,"-top"),(0,V.Z)({},"> ".concat(i,"-nav ").concat(i,"-tab"),{borderRadius:"".concat(t.borderRadius,"px ").concat(t.borderRadius,"px 0 0")})),(0,V.Z)(e,"&".concat(i,"-right"),(0,V.Z)({},"> ".concat(i,"-nav ").concat(i,"-tab"),{borderRadius:{_skip_check_:!0,value:"0 ".concat(t.borderRadius,"px ").concat(t.borderRadius,"px 0")}})),(0,V.Z)(e,"&".concat(i,"-left"),(0,V.Z)({},"> ".concat(i,"-nav ").concat(i,"-tab"),{borderRadius:{_skip_check_:!0,value:"".concat(t.borderRadius,"px 0 0 ").concat(t.borderRadius,"px")}})),e)),(0,V.Z)(n,"&".concat(i,"-large"),(0,V.Z)({},"> ".concat(i,"-nav"),(0,V.Z)({},"".concat(i,"-tab"),{padding:a}))),n)),r},Dm=function(t){var e,n,r,i,o,a=t.componentCls,c=t.tabsHorizontalItemMarginRTL,l=t.iconCls,u=t.cardGutter,s="".concat(a,"-rtl");return o={},(0,V.Z)(o,s,(i={direction:"rtl"},(0,V.Z)(i,"".concat(a,"-nav"),(0,V.Z)({},"".concat(a,"-tab"),(e={margin:{_skip_check_:!0,value:c}},(0,V.Z)(e,"".concat(a,"-tab:last-of-type"),{marginLeft:{_skip_check_:!0,value:0}}),(0,V.Z)(e,l,{marginRight:{_skip_check_:!0,value:0},marginLeft:{_skip_check_:!0,value:"".concat(t.marginSM,"px")}}),(0,V.Z)(e,"".concat(a,"-tab-remove"),(0,V.Z)({marginRight:{_skip_check_:!0,value:"".concat(t.marginXS,"px")},marginLeft:{_skip_check_:!0,value:"-".concat(t.marginXXS,"px")}},l,{margin:0})),e))),(0,V.Z)(i,"&".concat(a,"-left"),(n={},(0,V.Z)(n,"> ".concat(a,"-nav"),{order:1}),(0,V.Z)(n,"> ".concat(a,"-content-holder"),{order:0}),n)),(0,V.Z)(i,"&".concat(a,"-right"),(r={},(0,V.Z)(r,"> ".concat(a,"-nav"),{order:0}),(0,V.Z)(r,"> ".concat(a,"-content-holder"),{order:1}),r)),(0,V.Z)(i,"&".concat(a,"-card").concat(a,"-top, &").concat(a,"-card").concat(a,"-bottom"),(0,V.Z)({},"> ".concat(a,"-nav, > div > ").concat(a,"-nav"),(0,V.Z)({},"".concat(a,"-tab + ").concat(a,"-tab"),{marginRight:{_skip_check_:!0,value:u},marginLeft:{_skip_check_:!0,value:0}}))),i)),(0,V.Z)(o,"".concat(a,"-dropdown-rtl"),{direction:"rtl"}),(0,V.Z)(o,"".concat(a,"-menu-item"),(0,V.Z)({},"".concat(a,"-dropdown-rtl"),{textAlign:{_skip_check_:!0,value:"right"}})),o},Tm=function(t){var e,n,r,i,o=t.componentCls,a=t.tabsCardPadding,c=t.cardHeight,l=t.cardGutter,u=t.itemHoverColor,s=t.itemActiveColor,f=t.colorBorderSecondary;return i={},(0,V.Z)(i,o,Object.assign(Object.assign(Object.assign(Object.assign({},(0,Qe.Wf)(t)),(n={display:"flex"},(0,V.Z)(n,"> ".concat(o,"-nav, > div > ").concat(o,"-nav"),(e={position:"relative",display:"flex",flex:"none",alignItems:"center"},(0,V.Z)(e,"".concat(o,"-nav-wrap"),{position:"relative",display:"flex",flex:"auto",alignSelf:"stretch",overflow:"hidden",whiteSpace:"nowrap",transform:"translate(0)","&::before, &::after":{position:"absolute",zIndex:1,opacity:0,transition:"opacity ".concat(t.motionDurationSlow),content:"''",pointerEvents:"none"}}),(0,V.Z)(e,"".concat(o,"-nav-list"),{position:"relative",display:"flex",transition:"opacity ".concat(t.motionDurationSlow)}),(0,V.Z)(e,"".concat(o,"-nav-operations"),{display:"flex",alignSelf:"stretch"}),(0,V.Z)(e,"".concat(o,"-nav-operations-hidden"),{position:"absolute",visibility:"hidden",pointerEvents:"none"}),(0,V.Z)(e,"".concat(o,"-nav-more"),{position:"relative",padding:a,background:"transparent",border:0,color:t.colorText,"&::after":{position:"absolute",right:{_skip_check_:!0,value:0},bottom:0,left:{_skip_check_:!0,value:0},height:t.controlHeightLG/8,transform:"translateY(100%)",content:"''"}}),(0,V.Z)(e,"".concat(o,"-nav-add"),Object.assign({minWidth:c,marginLeft:{_skip_check_:!0,value:l},padding:"0 ".concat(t.paddingXS,"px"),background:"transparent",border:"".concat(t.lineWidth,"px ").concat(t.lineType," ").concat(f),borderRadius:"".concat(t.borderRadiusLG,"px ").concat(t.borderRadiusLG,"px 0 0"),outline:"none",cursor:"pointer",color:t.colorText,transition:"all ".concat(t.motionDurationSlow," ").concat(t.motionEaseInOut),"&:hover":{color:u},"&:active, &:focus:not(:focus-visible)":{color:s}},(0,Qe.Qy)(t))),e)),(0,V.Z)(n,"".concat(o,"-extra-content"),{flex:"none"}),(0,V.Z)(n,"".concat(o,"-ink-bar"),{position:"absolute",background:t.inkBarColor,pointerEvents:"none"}),n)),function(t){var e,n,r=t.componentCls,i=t.itemActiveColor,o=t.itemHoverColor,a=t.iconCls,c=t.tabsHorizontalItemMargin,l=t.horizontalItemPadding,u=t.itemSelectedColor,s="".concat(r,"-tab");return n={},(0,V.Z)(n,s,(e={position:"relative",display:"inline-flex",alignItems:"center",padding:l,fontSize:t.titleFontSize,background:"transparent",border:0,outline:"none",cursor:"pointer","&-btn, &-remove":Object.assign({"&:focus:not(:focus-visible), &:active":{color:i}},(0,Qe.Qy)(t)),"&-btn":{outline:"none",transition:"all 0.3s"},"&-remove":{flex:"none",marginRight:{_skip_check_:!0,value:-t.marginXXS},marginLeft:{_skip_check_:!0,value:t.marginXS},color:t.colorTextDescription,fontSize:t.fontSizeSM,background:"transparent",border:"none",outline:"none",cursor:"pointer",transition:"all ".concat(t.motionDurationSlow),"&:hover":{color:t.colorTextHeading}},"&:hover":{color:o}},(0,V.Z)(e,"&".concat(s,"-active ").concat(s,"-btn"),{color:u,textShadow:t.tabsActiveTextShadow}),(0,V.Z)(e,"&".concat(s,"-disabled"),{color:t.colorTextDisabled,cursor:"not-allowed"}),(0,V.Z)(e,"&".concat(s,"-disabled ").concat(s,"-btn, &").concat(s,"-disabled ").concat(r,"-remove"),{"&:focus, &:active":{color:t.colorTextDisabled}}),(0,V.Z)(e,"& ".concat(s,"-remove ").concat(a),{margin:0}),(0,V.Z)(e,a,{marginRight:{_skip_check_:!0,value:t.marginSM}}),e)),(0,V.Z)(n,"".concat(s," + ").concat(s),{margin:{_skip_check_:!0,value:c}}),n}(t)),(r={},(0,V.Z)(r,"".concat(o,"-content"),{position:"relative",width:"100%"}),(0,V.Z)(r,"".concat(o,"-content-holder"),{flex:"auto",minWidth:0,minHeight:0}),(0,V.Z)(r,"".concat(o,"-tabpane"),{outline:"none","&-hidden":{display:"none"}}),r))),(0,V.Z)(i,"".concat(o,"-centered"),(0,V.Z)({},"> ".concat(o,"-nav, > div > ").concat(o,"-nav"),(0,V.Z)({},"".concat(o,"-nav-wrap"),(0,V.Z)({},"&:not([class*='".concat(o,"-nav-wrap-ping'])"),{justifyContent:"center"})))),i},Zm=(0,se.Z)("Tabs",(function(t){var e=(0,nn.TS)(t,{tabsCardPadding:t.cardPadding||"".concat((t.cardHeight-Math.round(t.fontSize*t.lineHeight))/2-t.lineWidth,"px ").concat(t.padding,"px"),dropdownEdgeChildVerticalPadding:t.paddingXXS,tabsActiveTextShadow:"0 0 0.25px currentcolor",tabsDropdownHeight:200,tabsDropdownWidth:120,tabsHorizontalItemMargin:"0 0 0 ".concat(t.horizontalItemGutter,"px"),tabsHorizontalItemMarginRTL:"0 0 0 ".concat(t.horizontalItemGutter,"px")});return[_m(e),Dm(e),Pm(e),Am(e),Mm(e),Tm(e),Em(e)]}),(function(t){var e=t.controlHeightLG;return{zIndexPopup:t.zIndexPopupBase+50,cardBg:t.colorFillAlter,cardHeight:e,cardPadding:"",cardPaddingSM:"".concat(1.5*t.paddingXXS,"px ").concat(t.padding,"px"),cardPaddingLG:"".concat(t.paddingXS,"px ").concat(t.padding,"px ").concat(1.5*t.paddingXXS,"px"),titleFontSize:t.fontSize,titleFontSizeLG:t.fontSizeLG,titleFontSizeSM:t.fontSize,inkBarColor:t.colorPrimary,horizontalMargin:"0 0 ".concat(t.margin,"px 0"),horizontalItemGutter:32,horizontalItemMargin:"",horizontalItemMarginRTL:"",horizontalItemPadding:"".concat(t.paddingSM,"px 0"),horizontalItemPaddingSM:"".concat(t.paddingXS,"px 0"),horizontalItemPaddingLG:"".concat(t.padding,"px 0"),verticalItemPadding:"".concat(t.paddingXS,"px ").concat(t.paddingLG,"px"),verticalItemMargin:"".concat(t.margin,"px 0 0 0"),itemSelectedColor:t.colorPrimary,itemHoverColor:t.colorPrimaryHover,itemActiveColor:t.colorPrimaryActive,cardGutter:t.marginXXS/2}})),Fm=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(t);i1&&void 0!==arguments[1]?arguments[1]:{inkBar:!0,tabPane:!1};return(e=!1===n?{inkBar:!1,tabPane:!1}:!0===n?{inkBar:!0,tabPane:!0}:Object.assign({inkBar:!0},"object"==typeof n?n:{})).tabPane&&(e.tabPaneMotion=Object.assign(Object.assign({},Cm),{motionName:(0,oe.m)(t,"switch")})),e}(O,p),F=(0,Fe.Z)(a),j=Object.assign(Object.assign({},null==S?void 0:S.style),v);return A(Z.createElement(Sm,Object.assign({direction:w,getPopupContainer:C,moreTransitionName:"".concat(_,"-slide-up")},g,{items:D,className:K()((e={},(0,V.Z)(e,"".concat(O,"-").concat(F),F),(0,V.Z)(e,"".concat(O,"-card"),["card","editable-card"].includes(r)),(0,V.Z)(e,"".concat(O,"-editable-card"),"editable-card"===r),(0,V.Z)(e,"".concat(O,"-centered"),u),e),null==S?void 0:S.className,i,o,P),popupClassName:K()(f,P),style:j,editable:n,moreIcon:b,prefixCls:O,animated:T})))};jm.TabPane=km;var Im=jm,Rm=n(89907),Lm=n(5626),Nm=n(32834),Bm=n(70556),zm=n(27358),Um=n(49955),Hm={};function Wm(t,e){void 0===t&&(t=Hm),void 0===e&&(e=Hm);var n=Object.keys(t),r=Object.keys(e);return t===e||n.length===r.length&&n.every((function(n){return t[n]===e[n]}))}function Vm(t,e,n,r,i,o,a){try{var c=t[o](a),l=c.value}catch(u){return void n(u)}c.done?e(l):Promise.resolve(l).then(r,i)}function Gm(t){return function(){var e=this,n=arguments;return new Promise((function(r,i){var o=t.apply(e,n);function a(t){Vm(o,r,i,a,c,"next",t)}function c(t){Vm(o,r,i,a,c,"throw",t)}a(void 0)}))}}var Xm=n(53994),qm=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])},t(e,n)};return function(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),Ym=Object.prototype.hasOwnProperty;function $m(t,e){return Ym.call(t,e)}function Km(t){if(Array.isArray(t)){for(var e=new Array(t.length),n=0;n=48&&e<=57))return!1;n++}return!0}function ty(t){return-1===t.indexOf("/")&&-1===t.indexOf("~")?t:t.replace(/~/g,"~0").replace(/\//g,"~1")}function ey(t){return t.replace(/~1/g,"/").replace(/~0/g,"~")}function ny(t){if(void 0===t)return!0;if(t)if(Array.isArray(t)){for(var e=0,n=t.length;e0&&"constructor"==c[u-1]))throw new TypeError("JSON-Patch: modifying `__proto__` or `constructor/prototype` prop is banned for security reasons, if this was on purpose, please set `banPrototypeModifications` flag false and pass it to this function. More info in fast-json-patch README");if(n&&void 0===f&&(void 0===l[h]?f=c.slice(0,u).join("/"):u==s-1&&(f=e.path),void 0!==f&&d(e,0,t,f)),u++,Array.isArray(l)){if("-"===h)h=l.length;else{if(n&&!Qm(h))throw new oy("Expected an unsigned base-10 integer value, making the new referenced value the array element with the zero-based index","OPERATION_PATH_ILLEGAL_ARRAY_INDEX",o,e,t);Qm(h)&&(h=~~h)}if(u>=s){if(n&&"add"===e.op&&h>l.length)throw new oy("The specified index MUST NOT be greater than the number of elements in the array","OPERATION_VALUE_OUT_OF_BOUNDS",o,e,t);if(!1===(a=ly[e.op].call(e,l,h,t)).test)throw new oy("Test operation failed","TEST_OPERATION_FAILED",o,e,t);return a}}else if(u>=s){if(!1===(a=cy[e.op].call(e,l,h,t)).test)throw new oy("Test operation failed","TEST_OPERATION_FAILED",o,e,t);return a}if(l=l[h],n&&u0)throw new oy('Operation `path` property must start with "/"',"OPERATION_PATH_INVALID",e,t,n);if(("move"===t.op||"copy"===t.op)&&"string"!=typeof t.from)throw new oy("Operation `from` property is not present (applicable in `move` and `copy` operations)","OPERATION_FROM_REQUIRED",e,t,n);if(("add"===t.op||"replace"===t.op||"test"===t.op)&&void 0===t.value)throw new oy("Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)","OPERATION_VALUE_REQUIRED",e,t,n);if(("add"===t.op||"replace"===t.op||"test"===t.op)&&ny(t.value))throw new oy("Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)","OPERATION_VALUE_CANNOT_CONTAIN_UNDEFINED",e,t,n);if(n)if("add"==t.op){var i=t.path.split("/").length,o=r.split("/").length;if(i!==o+1&&i!==o)throw new oy("Cannot perform an `add` operation at the desired path","OPERATION_PATH_CANNOT_ADD",e,t,n)}else if("replace"===t.op||"remove"===t.op||"_get"===t.op){if(t.path!==r)throw new oy("Cannot perform the operation at a path that does not exist","OPERATION_PATH_UNRESOLVABLE",e,t,n)}else if("move"===t.op||"copy"===t.op){var a=py([{op:"_get",path:t.from,value:void 0}],n);if(a&&"OPERATION_PATH_UNRESOLVABLE"===a.name)throw new oy("Cannot perform the operation from a path that does not exist","OPERATION_FROM_UNRESOLVABLE",e,t,n)}}function py(t,e,n){try{if(!Array.isArray(t))throw new oy("Patch sequence must be an array","SEQUENCE_NOT_AN_ARRAY");if(e)fy(Jm(e),Jm(t),n||!0);else{n=n||dy;for(var r=0;r0&&(t.patches=[],t.callback&&t.callback(r)),r}function Sy(t,e,n,r,i){if(e!==t){"function"==typeof e.toJSON&&(e=e.toJSON());for(var o=Km(e),a=Km(t),c=!1,l=a.length-1;l>=0;l--){var u=t[f=a[l]];if(!$m(e,f)||void 0===e[f]&&void 0!==u&&!1===Array.isArray(e))Array.isArray(t)===Array.isArray(e)?(i&&n.push({op:"test",path:r+"/"+ty(f),value:Jm(u)}),n.push({op:"remove",path:r+"/"+ty(f)}),c=!0):(i&&n.push({op:"test",path:r,value:t}),n.push({op:"replace",path:r,value:e}),!0);else{var s=e[f];"object"==typeof u&&null!=u&&"object"==typeof s&&null!=s&&Array.isArray(u)===Array.isArray(s)?Sy(u,s,n,r+"/"+ty(f),i):u!==s&&(!0,i&&n.push({op:"test",path:r+"/"+ty(f),value:Jm(u)}),n.push({op:"replace",path:r+"/"+ty(f),value:Jm(s)}))}}if(c||o.length!=a.length)for(l=0;le&&u(),c=e=n+1):"]"===r&&(c||Ty("Access path missing open bracket: "+t),c>0&&u(),c=0,e=n+1):n>e?u():e=n+1}return c&&Ty("Access path missing closing bracket: "+t),a&&Ty("Access path missing closing quote: "+t),n>e&&(n++,u()),i}function Fy(t,e,n){var r=Zy(t);return t=1===r.length?r[0]:t,Ey((n&&n.get||Py)(r),[t],e||t)}var jy=Fy("id"),Iy=Ey((function(t){return t}),[],"identity"),Ry=Ey((function(){return 0}),[],"zero"),Ly=Ey((function(){return 1}),[],"one"),Ny=Ey((function(){return!0}),[],"true"),By=Ey((function(){return!1}),[],"false");function zy(t,e,n){var r=[e].concat([].slice.call(n));console[t].apply(console,r)}var Uy=0,Hy=1,Wy=2,Vy=3,Gy=4;function Xy(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:zy,r=t||Uy;return{level:function(t){return arguments.length?(r=+t,this):r},error:function(){return r>=Hy&&n(e||"error","ERROR",arguments),this},warn:function(){return r>=Wy&&n(e||"warn","WARN",arguments),this},info:function(){return r>=Vy&&n(e||"log","INFO",arguments),this},debug:function(){return r>=Gy&&n(e||"log","DEBUG",arguments),this}}}var qy=Array.isArray;function Yy(t){return t===Object(t)}var $y=function(t){return"__proto__"!==t};function Ky(){for(var t=arguments.length,e=new Array(t),n=0;n=n-e?[e,n]:[i=Math.min(Math.max(i,e),n-r),i+r]}function wb(t){return"function"==typeof t}var Sb="descending";function kb(t,e,n){n=n||{},e=bb(e)||[];var r=[],i=[],o={},a=n.comparator||Ob;return bb(t).forEach((function(t,a){null!=t&&(r.push(e[a]===Sb?-1:1),i.push(t=wb(t)?t:Fy(t,null,n)),(Ay(t)||[]).forEach((function(t){return o[t]=1})))})),0===i.length?null:Ey(a(i,r),Object.keys(o))}var Cb=function(t,e){return(te||null==e)&&null!=t?1:(e=e instanceof Date?+e:e,(t=t instanceof Date?+t:t)!==t&&e==e?-1:e!=e&&t==t?1:0)},Ob=function(t,e){return 1===t.length?Eb(t[0],e[0]):Mb(t,e,t.length)},Eb=function(t,e){return function(n,r){return Cb(t(n),t(r))*e}},Mb=function(t,e,n){return e.push(0),function(r,i){for(var o,a=0,c=-1;0===a&&++co&&(o=r))}else{for(r=e(t[a]);ao&&(o=r))}return[i,o]}function Tb(t,e){var n,r,i,o,a,c=t.length,l=-1;if(null==e){for(;++l=r){n=i=r;break}if(l===c)return[-1,-1];for(o=a=l;++lr&&(n=r,o=l),i=r){n=i=r;break}if(l===c)return[-1,-1];for(o=a=l;++lr&&(n=r,o=l),ia&&(i=o,o=a,a=i),r=void 0===r||r,((n=void 0===n||n)?o<=t:ot&&(n=e,e={},r=1),e[i]=o};return i(),{clear:i,has:function(t){return Fb(e,t)||Fb(n,t)},get:function(t){return Fb(e,t)?e[t]:Fb(n,t)?o(t,n[t]):void 0},set:function(t,n){return Fb(e,t)?e[t]=n:o(t,n)}}}function $b(t,e,n,r){var i=e.length,o=n.length;if(!o)return e;if(!i)return n;for(var a=r||new e.constructor(i+o),c=0,l=0,u=0;c0?n[l++]:e[c++];for(;c=0;)n+=t;return n}function Jb(t,e,n,r){var i=n||" ",o=t+"",a=e-o.length;return a<=0?o:"left"===r?Kb(i,a)+o:"center"===r?Kb(i,~~(a/2))+o+Kb(i,Math.ceil(a/2)):o+Kb(i,a)}function Qb(t){return t&&tb(t)-t[0]||0}function tx(t){return qy(t)?"["+t.map(tx)+"]":Yy(t)||Vb(t)?JSON.stringify(t).replace("\u2028","\\u2028").replace("\u2029","\\u2029"):t}function ex(t){return null==t||""===t?null:!(!t||"false"===t||"0"===t)&&!!t}var nx=function(t){return Hb(t)||zb(t)?t:Date.parse(t)};function rx(t,e){return e=e||nx,null==t||""===t?null:e(t)}function ix(t){return null==t||""===t?null:t+""}function ox(t){for(var e={},n=t.length,r=0;r9999?"+"+vx(e,6):vx(e,4))+"-"+vx(t.getUTCMonth()+1,2)+"-"+vx(t.getUTCDate(),2)+(o?"T"+vx(n,2)+":"+vx(r,2)+":"+vx(i,2)+"."+vx(o,3)+"Z":i?"T"+vx(n,2)+":"+vx(r,2)+":"+vx(i,2)+"Z":r||n?"T"+vx(n,2)+":"+vx(r,2)+"Z":"")}function mx(t){var e=new RegExp('["'+t+"\n\r]"),n=t.charCodeAt(0);function r(t,e){var r,i=[],o=t.length,a=0,c=0,l=o<=0,u=!1;function s(){if(l)return ux;if(u)return u=!1,lx;var e,r,i=a;if(t.charCodeAt(i)===sx){for(;a++=o?l=!0:(r=t.charCodeAt(a++))===fx?u=!0:r===hx&&(u=!0,t.charCodeAt(a)===fx&&++a),t.slice(i+1,e-1).replace(/""/g,'"')}for(;a1)r=function(t,e,n){var r,i=[],o=[];function a(t){var e=t<0?~t:t;(o[e]||(o[e]=[])).push({i:t,g:r})}function c(t){t.forEach(a)}function l(t){t.forEach(c)}function u(t){t.forEach(l)}function s(t){switch(r=t,t.type){case"GeometryCollection":t.geometries.forEach(s);break;case"LineString":c(t.arcs);break;case"MultiLineString":case"Polygon":l(t.arcs);break;case"MultiPolygon":u(t.arcs)}}return s(e),o.forEach(null==n?function(t){i.push(t[0].i)}:function(t){n(t[0].g,t[t.length-1].g)&&i.push(t[0].i)}),i}(0,e,n);else for(i=0,r=new Array(o=t.arcs.length);i=Ox?10:l>=Ex?5:l>=Mx?2:1;return c<0?(o=Math.pow(10,-c)/u,(r=Math.round(t*o))/oe&&--i,o=-o):(o=Math.pow(10,c)*u,(r=Math.round(t/o))*oe&&--i),i0))return[];if((t=+t)===(e=+e))return[t];var r=e=a))return[];var u=c-a+1,s=new Array(u);if(r)if(l<0)for(var f=0;f=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Fx(t){if(!(e=Zx.exec(t)))throw new Error("invalid format: "+t);var e;return new jx({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}function jx(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function Ix(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var n,r=t.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+t.slice(n+1)]}function Rx(t){return(t=Ix(Math.abs(t)))?t[1]:NaN}function Lx(t,e){var n=Ix(t,e);if(!n)return t+"";var r=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}Fx.prototype=jx.prototype,jx.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var Nx={"%":function(t,e){return(100*t).toFixed(e)},b:function(t){return Math.round(t).toString(2)},c:function(t){return t+""},d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)},e:function(t,e){return t.toExponential(e)},f:function(t,e){return t.toFixed(e)},g:function(t,e){return t.toPrecision(e)},o:function(t){return Math.round(t).toString(8)},p:function(t,e){return Lx(100*t,e)},r:Lx,s:function(t,e){var n=Ix(t,e);if(!n)return t+"";var r=n[0],i=n[1],o=i-(Tx=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,a=r.length;return o===a?r:o>a?r+new Array(o-a+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+Ix(t,Math.max(0,e+o-1))[0]},X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}};function Bx(t){return t}var zx,Ux,Hx,Wx=Array.prototype.map,Vx=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function Gx(t){var e,n,r=void 0===t.grouping||void 0===t.thousands?Bx:(e=Wx.call(t.grouping,Number),n=t.thousands+"",function(t,r){for(var i=t.length,o=[],a=0,c=e[0],l=0;i>0&&c>0&&(l+c+1>r&&(c=Math.max(1,r-l)),o.push(t.substring(i-=c,i+c)),!((l+=c+1)>r));)c=e[a=(a+1)%e.length];return o.reverse().join(n)}),i=void 0===t.currency?"":t.currency[0]+"",o=void 0===t.currency?"":t.currency[1]+"",a=void 0===t.decimal?".":t.decimal+"",c=void 0===t.numerals?Bx:function(t){return function(e){return e.replace(/[0-9]/g,(function(e){return t[+e]}))}}(Wx.call(t.numerals,String)),l=void 0===t.percent?"%":t.percent+"",u=void 0===t.minus?"−":t.minus+"",s=void 0===t.nan?"NaN":t.nan+"";function f(t){var e=(t=Fx(t)).fill,n=t.align,f=t.sign,h=t.symbol,d=t.zero,p=t.width,v=t.comma,g=t.precision,m=t.trim,y=t.type;"n"===y?(v=!0,y="g"):Nx[y]||(void 0===g&&(g=12),m=!0,y="g"),(d||"0"===e&&"="===n)&&(d=!0,e="0",n="=");var b="$"===h?i:"#"===h&&/[boxX]/.test(y)?"0"+y.toLowerCase():"",x="$"===h?o:/[%p]/.test(y)?l:"",w=Nx[y],S=/[defgprs%]/.test(y);function k(t){var i,o,l,h=b,k=x;if("c"===y)k=w(t)+k,t="";else{var C=(t=+t)<0||1/t<0;if(t=isNaN(t)?s:w(Math.abs(t),g),m&&(t=function(t){t:for(var e,n=t.length,r=1,i=-1;r0&&(i=0)}return i>0?t.slice(0,i)+t.slice(e+1):t}(t)),C&&0==+t&&"+"!==f&&(C=!1),h=(C?"("===f?f:u:"-"===f||"("===f?"":f)+h,k=("s"===y?Vx[8+Tx/3]:"")+k+(C&&"("===f?")":""),S)for(i=-1,o=t.length;++i(l=t.charCodeAt(i))||l>57){k=(46===l?a+t.slice(i+1):t.slice(i))+k,t=t.slice(0,i);break}}v&&!d&&(t=r(t,1/0));var O=h.length+t.length+k.length,E=O>1)+h+t+k+E.slice(O);break;default:t=E+h+t+k}return c(t)}return g=void 0===g?6:/[gprs]/.test(y)?Math.max(1,Math.min(21,g)):Math.max(0,Math.min(20,g)),k.toString=function(){return t+""},k}return{format:f,formatPrefix:function(t,e){var n=f(((t=Fx(t)).type="f",t)),r=3*Math.max(-8,Math.min(8,Math.floor(Rx(e)/3))),i=Math.pow(10,-r),o=Vx[8+r/3];return function(t){return n(i*t)+o}}}}!function(t){zx=Gx(t),Ux=zx.format,Hx=zx.formatPrefix}({thousands:",",grouping:[3],currency:["$",""]});var Xx=new Date,qx=new Date;function Yx(t,e,n,r){function i(e){return t(e=0===arguments.length?new Date:new Date(+e)),e}return i.floor=function(e){return t(e=new Date(+e)),e},i.ceil=function(n){return t(n=new Date(n-1)),e(n,1),t(n),n},i.round=function(t){var e=i(t),n=i.ceil(t);return t-e0))return c;do{c.push(a=new Date(+n)),e(n,o),t(n)}while(a=e)for(;t(e),!n(e);)e.setTime(e-1)}),(function(t,r){if(t>=t)if(r<0)for(;++r<=0;)for(;e(t,-1),!n(t););else for(;--r>=0;)for(;e(t,1),!n(t););}))},n&&(i.count=function(e,r){return Xx.setTime(+e),qx.setTime(+r),t(Xx),t(qx),Math.floor(n(Xx,qx))},i.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?i.filter(r?function(e){return r(e)%t==0}:function(e){return i.count(0,e)%t==0}):i:null}),i}var $x=1e3,Kx=6e4,Jx=36e5,Qx=864e5,tw=6048e5,ew=2592e6,nw=31536e6,rw=Yx((function(t){return t.setHours(0,0,0,0)}),(function(t,e){return t.setDate(t.getDate()+e)}),(function(t,e){return(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Kx)/Qx}),(function(t){return t.getDate()-1})),iw=(rw.range,Yx((function(t){t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+e)}),(function(t,e){return(e-t)/Qx}),(function(t){return t.getUTCDate()-1}))),ow=(iw.range,Yx((function(t){t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+e)}),(function(t,e){return(e-t)/Qx}),(function(t){return Math.floor(t/Qx)})));ow.range;function aw(t){return Yx((function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)}),(function(t,e){t.setDate(t.getDate()+7*e)}),(function(t,e){return(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Kx)/tw}))}var cw=aw(0),lw=aw(1),uw=aw(2),sw=aw(3),fw=aw(4),hw=aw(5),dw=aw(6);cw.range,lw.range,uw.range,sw.range,fw.range,hw.range,dw.range;function pw(t){return Yx((function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+7*e)}),(function(t,e){return(e-t)/tw}))}var vw=pw(0),gw=pw(1),mw=pw(2),yw=pw(3),bw=pw(4),xw=pw(5),ww=pw(6),Sw=(vw.range,gw.range,mw.range,yw.range,bw.range,xw.range,ww.range,Yx((function(t){t.setMonth(0,1),t.setHours(0,0,0,0)}),(function(t,e){t.setFullYear(t.getFullYear()+e)}),(function(t,e){return e.getFullYear()-t.getFullYear()}),(function(t){return t.getFullYear()})));Sw.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Yx((function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)}),(function(e,n){e.setFullYear(e.getFullYear()+n*t)})):null};Sw.range;var kw=Yx((function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)}),(function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()}),(function(t){return t.getUTCFullYear()}));kw.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Yx((function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),(function(e,n){e.setUTCFullYear(e.getUTCFullYear()+n*t)})):null};kw.range;var Cw=Yx((function(t){t.setDate(1),t.setHours(0,0,0,0)}),(function(t,e){t.setMonth(t.getMonth()+e)}),(function(t,e){return e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear())}),(function(t){return t.getMonth()})),Ow=(Cw.range,Yx((function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCMonth(t.getUTCMonth()+e)}),(function(t,e){return e.getUTCMonth()-t.getUTCMonth()+12*(e.getUTCFullYear()-t.getUTCFullYear())}),(function(t){return t.getUTCMonth()}))),Ew=(Ow.range,Yx((function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*$x-t.getMinutes()*Kx)}),(function(t,e){t.setTime(+t+e*Jx)}),(function(t,e){return(e-t)/Jx}),(function(t){return t.getHours()}))),Mw=(Ew.range,Yx((function(t){t.setUTCMinutes(0,0,0)}),(function(t,e){t.setTime(+t+e*Jx)}),(function(t,e){return(e-t)/Jx}),(function(t){return t.getUTCHours()}))),Aw=(Mw.range,Yx((function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*$x)}),(function(t,e){t.setTime(+t+e*Kx)}),(function(t,e){return(e-t)/Kx}),(function(t){return t.getMinutes()}))),Pw=(Aw.range,Yx((function(t){t.setUTCSeconds(0,0)}),(function(t,e){t.setTime(+t+e*Kx)}),(function(t,e){return(e-t)/Kx}),(function(t){return t.getUTCMinutes()}))),_w=(Pw.range,Yx((function(t){t.setTime(t-t.getMilliseconds())}),(function(t,e){t.setTime(+t+e*$x)}),(function(t,e){return(e-t)/$x}),(function(t){return t.getUTCSeconds()}))),Dw=(_w.range,Yx((function(){}),(function(t,e){t.setTime(+t+e)}),(function(t,e){return e-t})));Dw.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?Yx((function(e){e.setTime(Math.floor(e/t)*t)}),(function(e,n){e.setTime(+e+n*t)}),(function(e,n){return(n-e)/t})):Dw:null};var Tw,Zw,Fw,jw,Iw,Rw,Lw;Dw.range;function Nw(t,e){return null==t||null==e?NaN:te?1:t>=e?0:NaN}function Bw(t,e){return null==t||null==e?NaN:et?1:e>=t?0:NaN}function zw(t){var e,n,r;function i(t,r){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:t.length;if(i>>1;n(t[a],r)<0?i=a+1:o=a}while(i2&&void 0!==arguments[2]?arguments[2]:0,o=i(t,e,n,(arguments.length>3&&void 0!==arguments[3]?arguments[3]:t.length)-1);return o>n&&r(t[o-1],e)>-r(t[o],e)?o-1:o},right:function(t,r){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:t.length;if(i>>1;n(t[a],r)<=0?i=a+1:o=a}while(i1&&Ty("Incompatible time units: ".concat(t)),e.sort((function(t,e){return eS[t]-eS[e]})),e}var rS=(Tw={},(0,V.Z)(Tw,Hw,"%Y "),(0,V.Z)(Tw,Ww,"Q%q "),(0,V.Z)(Tw,Vw,"%b "),(0,V.Z)(Tw,Xw,"%d "),(0,V.Z)(Tw,Gw,"W%U "),(0,V.Z)(Tw,qw,"%a "),(0,V.Z)(Tw,Yw,"%j "),(0,V.Z)(Tw,$w,"%H:00"),(0,V.Z)(Tw,Kw,"00:%M"),(0,V.Z)(Tw,Jw,":%S"),(0,V.Z)(Tw,Qw,".%L"),(0,V.Z)(Tw,"".concat(Hw,"-").concat(Vw),"%Y-%m "),(0,V.Z)(Tw,"".concat(Hw,"-").concat(Vw,"-").concat(Xw),"%Y-%m-%d "),(0,V.Z)(Tw,"".concat($w,"-").concat(Kw),"%H:%M"),Tw);function iS(t,e){var n,r,i=_b({},rS,e),o=nS(t),a=o.length,c="",l=0;for(l=0;ll;--n)if(null!=i[r=o.slice(l,n).join("-")]){c+=i[r],l=n;break}return c.trim()}var oS=new Date;function aS(t){return oS.setFullYear(t),oS.setMonth(0),oS.setDate(1),oS.setHours(0,0,0,0),oS}function cS(t){return uS(new Date(t))}function lS(t){return sS(new Date(t))}function uS(t){return rw.count(aS(t.getFullYear())-1,t)}function sS(t){return cw.count(aS(t.getFullYear())-1,t)}function fS(t){return aS(t).getDay()}function hS(t,e,n,r,i,o,a){if(0<=t&&t<100){var c=new Date(-1,e,n,r,i,o,a);return c.setFullYear(t),c}return new Date(t,e,n,r,i,o,a)}function dS(t){return vS(new Date(t))}function pS(t){return gS(new Date(t))}function vS(t){var e=Date.UTC(t.getUTCFullYear(),0,1);return iw.count(e-1,t)}function gS(t){var e=Date.UTC(t.getUTCFullYear(),0,1);return vw.count(e-1,t)}function mS(t){return oS.setTime(Date.UTC(t,0,1)),oS.getUTCDay()}function yS(t,e,n,r,i,o,a){if(0<=t&&t<100){var c=new Date(Date.UTC(-1,e,n,r,i,o,a));return c.setUTCFullYear(n.y),c}return new Date(Date.UTC(t,e,n,r,i,o,a))}function bS(t,e,n,r,i){var o=e||1,a=tb(t),c=function(t,e,i){return function(t,e,n,r){var i=n<=1?t:r?function(e,i){return r+n*Math.floor((t(e,i)-r)/n)}:function(e,r){return n*Math.floor(t(e,r)/n)};return e?function(t,n){return e(i(t,n),n)}:i}(n[i=i||t],r[i],t===a&&o,e)},l=new Date,u=ox(t),s=u[Hw]?c(Hw):Ab(2012),f=u[Vw]?c(Vw):u[Ww]?c(Ww):Ry,h=u[Gw]&&u[qw]?c(qw,1,Gw+qw):u[Gw]?c(Gw,1):u[qw]?c(qw,1):u[Xw]?c(Xw,1):u[Yw]?c(Yw,1):Ly,d=u[$w]?c($w):Ry,p=u[Kw]?c(Kw):Ry,v=u[Jw]?c(Jw):Ry,g=u[Qw]?c(Qw):Ry;return function(t){l.setTime(+t);var e=s(l);return i(e,f(l),h(l,e),d(l),p(l),v(l),g(l))}}function xS(t,e,n){return e+7*t-(n+6)%7}var wS=(Zw={},(0,V.Z)(Zw,Hw,(function(t){return t.getFullYear()})),(0,V.Z)(Zw,Ww,(function(t){return Math.floor(t.getMonth()/3)})),(0,V.Z)(Zw,Vw,(function(t){return t.getMonth()})),(0,V.Z)(Zw,Xw,(function(t){return t.getDate()})),(0,V.Z)(Zw,$w,(function(t){return t.getHours()})),(0,V.Z)(Zw,Kw,(function(t){return t.getMinutes()})),(0,V.Z)(Zw,Jw,(function(t){return t.getSeconds()})),(0,V.Z)(Zw,Qw,(function(t){return t.getMilliseconds()})),(0,V.Z)(Zw,Yw,(function(t){return uS(t)})),(0,V.Z)(Zw,Gw,(function(t){return sS(t)})),(0,V.Z)(Zw,Gw+qw,(function(t,e){return xS(sS(t),t.getDay(),fS(e))})),(0,V.Z)(Zw,qw,(function(t,e){return xS(1,t.getDay(),fS(e))})),Zw),SS=(Fw={},(0,V.Z)(Fw,Ww,(function(t){return 3*t})),(0,V.Z)(Fw,Gw,(function(t,e){return xS(t,0,fS(e))})),Fw);function kS(t,e){return bS(t,e||1,wS,SS,hS)}var CS=(jw={},(0,V.Z)(jw,Hw,(function(t){return t.getUTCFullYear()})),(0,V.Z)(jw,Ww,(function(t){return Math.floor(t.getUTCMonth()/3)})),(0,V.Z)(jw,Vw,(function(t){return t.getUTCMonth()})),(0,V.Z)(jw,Xw,(function(t){return t.getUTCDate()})),(0,V.Z)(jw,$w,(function(t){return t.getUTCHours()})),(0,V.Z)(jw,Kw,(function(t){return t.getUTCMinutes()})),(0,V.Z)(jw,Jw,(function(t){return t.getUTCSeconds()})),(0,V.Z)(jw,Qw,(function(t){return t.getUTCMilliseconds()})),(0,V.Z)(jw,Yw,(function(t){return vS(t)})),(0,V.Z)(jw,Gw,(function(t){return gS(t)})),(0,V.Z)(jw,qw,(function(t,e){return xS(1,t.getUTCDay(),mS(e))})),(0,V.Z)(jw,Gw+qw,(function(t,e){return xS(gS(t),t.getUTCDay(),mS(e))})),jw),OS=(Iw={},(0,V.Z)(Iw,Ww,(function(t){return 3*t})),(0,V.Z)(Iw,Gw,(function(t,e){return xS(t,0,mS(e))})),Iw);function ES(t,e){return bS(t,e||1,CS,OS,yS)}var MS=(Rw={},(0,V.Z)(Rw,Hw,Sw),(0,V.Z)(Rw,Ww,Cw.every(3)),(0,V.Z)(Rw,Vw,Cw),(0,V.Z)(Rw,Gw,cw),(0,V.Z)(Rw,Xw,rw),(0,V.Z)(Rw,qw,rw),(0,V.Z)(Rw,Yw,rw),(0,V.Z)(Rw,$w,Ew),(0,V.Z)(Rw,Kw,Aw),(0,V.Z)(Rw,Jw,_w),(0,V.Z)(Rw,Qw,Dw),Rw),AS=(Lw={},(0,V.Z)(Lw,Hw,kw),(0,V.Z)(Lw,Ww,Ow.every(3)),(0,V.Z)(Lw,Vw,Ow),(0,V.Z)(Lw,Gw,vw),(0,V.Z)(Lw,Xw,iw),(0,V.Z)(Lw,qw,iw),(0,V.Z)(Lw,Yw,iw),(0,V.Z)(Lw,$w,Mw),(0,V.Z)(Lw,Kw,Pw),(0,V.Z)(Lw,Jw,_w),(0,V.Z)(Lw,Qw,Dw),Lw);function PS(t){return MS[t]}function _S(t){return AS[t]}function DS(t,e,n){return t?t.offset(e,n):void 0}function TS(t,e,n){return DS(PS(t),e,n)}function ZS(t,e,n){return DS(_S(t),e,n)}function FS(t,e,n,r){return t?t.range(e,n,r):void 0}function jS(t,e,n,r){return FS(PS(t),e,n,r)}function IS(t,e,n,r){return FS(_S(t),e,n,r)}var RS=1e3,LS=6e4,NS=36e5,BS=864e5,zS=2592e6,US=31536e6,HS=[Hw,Vw,Xw,$w,Kw,Jw,Qw],WS=HS.slice(0,-1),VS=WS.slice(0,-1),GS=VS.slice(0,-1),XS=GS.slice(0,-1),qS=[Hw,Vw],YS=[Hw],$S=[[WS,1,RS],[WS,5,5e3],[WS,15,15e3],[WS,30,3e4],[VS,1,LS],[VS,5,3e5],[VS,15,9e5],[VS,30,18e5],[GS,1,NS],[GS,3,108e5],[GS,6,216e5],[GS,12,432e5],[XS,1,BS],[[Hw,Gw],1,6048e5],[qS,1,zS],[qS,3,7776e6],[YS,1,US]];function KS(t){var e,n,r=t.extent,i=t.maxbins||40,o=Math.abs(Qb(r))/i,a=zw((function(t){return t[2]})).right($S,o);return a===$S.length?(e=YS,n=Dx(r[0]/US,r[1]/US,i)):a?(e=(a=$S[o/$S[a-1][2]<$S[a][2]/o?a-1:a])[0],n=a[1]):(e=HS,n=Math.max(Dx(r[0],r[1],i),1)),{units:e,step:n}}function JS(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function QS(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function tk(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}function ek(t){var e=t.dateTime,n=t.date,r=t.time,i=t.periods,o=t.days,a=t.shortDays,c=t.months,l=t.shortMonths,u=vk(i),s=gk(i),f=vk(o),h=gk(o),d=vk(a),p=gk(a),v=vk(c),g=gk(c),m=vk(l),y=gk(l),b={a:function(t){return a[t.getDay()]},A:function(t){return o[t.getDay()]},b:function(t){return l[t.getMonth()]},B:function(t){return c[t.getMonth()]},c:null,d:Rk,e:Rk,f:Uk,g:Qk,G:eC,H:Lk,I:Nk,j:Bk,L:zk,m:Hk,M:Wk,p:function(t){return i[+(t.getHours()>=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:CC,s:OC,S:Vk,u:Gk,U:Xk,V:Yk,w:$k,W:Kk,x:null,X:null,y:Jk,Y:tC,Z:nC,"%":kC},x={a:function(t){return a[t.getUTCDay()]},A:function(t){return o[t.getUTCDay()]},b:function(t){return l[t.getUTCMonth()]},B:function(t){return c[t.getUTCMonth()]},c:null,d:rC,e:rC,f:lC,g:bC,G:wC,H:iC,I:oC,j:aC,L:cC,m:uC,M:sC,p:function(t){return i[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:CC,s:OC,S:fC,u:hC,U:dC,V:vC,w:gC,W:mC,x:null,X:null,y:yC,Y:xC,Z:SC,"%":kC},w={a:function(t,e,n){var r=d.exec(e.slice(n));return r?(t.w=p.get(r[0].toLowerCase()),n+r[0].length):-1},A:function(t,e,n){var r=f.exec(e.slice(n));return r?(t.w=h.get(r[0].toLowerCase()),n+r[0].length):-1},b:function(t,e,n){var r=m.exec(e.slice(n));return r?(t.m=y.get(r[0].toLowerCase()),n+r[0].length):-1},B:function(t,e,n){var r=v.exec(e.slice(n));return r?(t.m=g.get(r[0].toLowerCase()),n+r[0].length):-1},c:function(t,n,r){return C(t,e,n,r)},d:Mk,e:Mk,f:Zk,g:kk,G:Sk,H:Pk,I:Pk,j:Ak,L:Tk,m:Ek,M:_k,p:function(t,e,n){var r=u.exec(e.slice(n));return r?(t.p=s.get(r[0].toLowerCase()),n+r[0].length):-1},q:Ok,Q:jk,s:Ik,S:Dk,u:yk,U:bk,V:xk,w:mk,W:wk,x:function(t,e,r){return C(t,n,e,r)},X:function(t,e,n){return C(t,r,e,n)},y:kk,Y:Sk,Z:Ck,"%":Fk};function S(t,e){return function(n){var r,i,o,a=[],c=-1,l=0,u=t.length;for(n instanceof Date||(n=new Date(+n));++c53)return null;"w"in o||(o.w=1),"Z"in o?(i=(r=QS(tk(o.y,0,1))).getUTCDay(),r=i>4||0===i?gw.ceil(r):gw(r),r=iw.offset(r,7*(o.V-1)),o.y=r.getUTCFullYear(),o.m=r.getUTCMonth(),o.d=r.getUTCDate()+(o.w+6)%7):(i=(r=JS(tk(o.y,0,1))).getDay(),r=i>4||0===i?lw.ceil(r):lw(r),r=rw.offset(r,7*(o.V-1)),o.y=r.getFullYear(),o.m=r.getMonth(),o.d=r.getDate()+(o.w+6)%7)}else("W"in o||"U"in o)&&("w"in o||(o.w="u"in o?o.u%7:"W"in o?1:0),i="Z"in o?QS(tk(o.y,0,1)).getUTCDay():JS(tk(o.y,0,1)).getDay(),o.m=0,o.d="W"in o?(o.w+6)%7+7*o.W-(i+5)%7:o.w+7*o.U-(i+6)%7);return"Z"in o?(o.H+=o.Z/100|0,o.M+=o.Z%100,QS(o)):JS(o)}}function C(t,e,n,r){for(var i,o,a=0,c=e.length,l=n.length;a=l)return-1;if(37===(i=e.charCodeAt(a++))){if(i=e.charAt(a++),!(o=w[i in uk?e.charAt(a++):i])||(r=o(t,n,r))<0)return-1}else if(i!=n.charCodeAt(r++))return-1}return r}return b.x=S(n,b),b.X=S(r,b),b.c=S(e,b),x.x=S(n,x),x.X=S(r,x),x.c=S(e,x),{format:function(t){var e=S(t+="",b);return e.toString=function(){return t},e},parse:function(t){var e=k(t+="",!1);return e.toString=function(){return t},e},utcFormat:function(t){var e=S(t+="",x);return e.toString=function(){return t},e},utcParse:function(t){var e=k(t+="",!0);return e.toString=function(){return t},e}}}var nk,rk,ik,ok,ak,ck,lk,uk={"-":"",_:" ",0:"0"},sk=/^\s*\d+/,fk=/^%/,hk=/[\\^$*+?|[\]().{}]/g;function dk(t,e,n){var r=t<0?"-":"",i=(r?-t:t)+"",o=i.length;return r+(o68?1900:2e3),n+r[0].length):-1}function Ck(t,e,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function Ok(t,e,n){var r=sk.exec(e.slice(n,n+1));return r?(t.q=3*r[0]-3,n+r[0].length):-1}function Ek(t,e,n){var r=sk.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function Mk(t,e,n){var r=sk.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function Ak(t,e,n){var r=sk.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function Pk(t,e,n){var r=sk.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function _k(t,e,n){var r=sk.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function Dk(t,e,n){var r=sk.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function Tk(t,e,n){var r=sk.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function Zk(t,e,n){var r=sk.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function Fk(t,e,n){var r=fk.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function jk(t,e,n){var r=sk.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function Ik(t,e,n){var r=sk.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function Rk(t,e){return dk(t.getDate(),e,2)}function Lk(t,e){return dk(t.getHours(),e,2)}function Nk(t,e){return dk(t.getHours()%12||12,e,2)}function Bk(t,e){return dk(1+rw.count(Sw(t),t),e,3)}function zk(t,e){return dk(t.getMilliseconds(),e,3)}function Uk(t,e){return zk(t,e)+"000"}function Hk(t,e){return dk(t.getMonth()+1,e,2)}function Wk(t,e){return dk(t.getMinutes(),e,2)}function Vk(t,e){return dk(t.getSeconds(),e,2)}function Gk(t){var e=t.getDay();return 0===e?7:e}function Xk(t,e){return dk(cw.count(Sw(t)-1,t),e,2)}function qk(t){var e=t.getDay();return e>=4||0===e?fw(t):fw.ceil(t)}function Yk(t,e){return t=qk(t),dk(fw.count(Sw(t),t)+(4===Sw(t).getDay()),e,2)}function $k(t){return t.getDay()}function Kk(t,e){return dk(lw.count(Sw(t)-1,t),e,2)}function Jk(t,e){return dk(t.getFullYear()%100,e,2)}function Qk(t,e){return dk((t=qk(t)).getFullYear()%100,e,2)}function tC(t,e){return dk(t.getFullYear()%1e4,e,4)}function eC(t,e){var n=t.getDay();return dk((t=n>=4||0===n?fw(t):fw.ceil(t)).getFullYear()%1e4,e,4)}function nC(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+dk(e/60|0,"0",2)+dk(e%60,"0",2)}function rC(t,e){return dk(t.getUTCDate(),e,2)}function iC(t,e){return dk(t.getUTCHours(),e,2)}function oC(t,e){return dk(t.getUTCHours()%12||12,e,2)}function aC(t,e){return dk(1+iw.count(kw(t),t),e,3)}function cC(t,e){return dk(t.getUTCMilliseconds(),e,3)}function lC(t,e){return cC(t,e)+"000"}function uC(t,e){return dk(t.getUTCMonth()+1,e,2)}function sC(t,e){return dk(t.getUTCMinutes(),e,2)}function fC(t,e){return dk(t.getUTCSeconds(),e,2)}function hC(t){var e=t.getUTCDay();return 0===e?7:e}function dC(t,e){return dk(vw.count(kw(t)-1,t),e,2)}function pC(t){var e=t.getUTCDay();return e>=4||0===e?bw(t):bw.ceil(t)}function vC(t,e){return t=pC(t),dk(bw.count(kw(t),t)+(4===kw(t).getUTCDay()),e,2)}function gC(t){return t.getUTCDay()}function mC(t,e){return dk(gw.count(kw(t)-1,t),e,2)}function yC(t,e){return dk(t.getUTCFullYear()%100,e,2)}function bC(t,e){return dk((t=pC(t)).getUTCFullYear()%100,e,2)}function xC(t,e){return dk(t.getUTCFullYear()%1e4,e,4)}function wC(t,e){var n=t.getUTCDay();return dk((t=n>=4||0===n?bw(t):bw.ceil(t)).getUTCFullYear()%1e4,e,4)}function SC(){return"+0000"}function kC(){return"%"}function CC(t){return+t}function OC(t){return Math.floor(+t/1e3)}function EC(t){var e={};return function(n){return e[n]||(e[n]=t(n))}}function MC(t){var e=EC(t.format),n=t.formatPrefix;return{format:e,formatPrefix:n,formatFloat:function(t){var n=Fx(t||",");if(null==n.precision){switch(n.precision=12,n.type){case"%":n.precision-=2;break;case"e":n.precision-=1}return function(t,e){return function(n){var r=t(n),i=r.indexOf(e);if(i<0)return r;for(var o=function(t,e){var n,r=t.lastIndexOf("e");if(r>0)return r;for(r=t.length;--r>e;)if((n=t.charCodeAt(r))>=48&&n<=57)return r+1}(r,i),a=oi;)if("0"!==r[o]){++o;break}return r.slice(0,o)+a}}(e(n),e(".1f")(1)[1])}return e(n)},formatSpan:function(t,r,i,o){o=Fx(null==o?",f":o);var a,c=Dx(t,r,i),l=Math.max(Math.abs(t),Math.abs(r));if(null==o.precision)switch(o.type){case"s":return isNaN(a=function(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(Rx(e)/3)))-Rx(Math.abs(t)))}(c,l))||(o.precision=a),n(o,l);case"":case"e":case"g":case"p":case"r":isNaN(a=function(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,Rx(e)-Rx(t))+1}(c,l))||(o.precision=a-("e"===o.type));break;case"f":case"%":isNaN(a=function(t){return Math.max(0,-Rx(Math.abs(t)))}(c))||(o.precision=a-2*("%"===o.type))}return e(o)}}}function AC(){return ck=MC({format:Ux,formatPrefix:Hx})}function PC(t){return MC(Gx(t))}function _C(t){return arguments.length?ck=PC(t):ck}function DC(t,e,n){Yy(n=n||{})||Ty("Invalid time multi-format specifier: ".concat(n));var r=e(Jw),i=e(Kw),o=e($w),a=e(Xw),c=e(Gw),l=e(Vw),u=e(Ww),s=e(Hw),f=t(n[Qw]||".%L"),h=t(n[Jw]||":%S"),d=t(n[Kw]||"%I:%M"),p=t(n[$w]||"%I %p"),v=t(n[Xw]||n[qw]||"%a %d"),g=t(n[Gw]||"%b %d"),m=t(n[Vw]||"%B"),y=t(n[Ww]||"%B"),b=t(n[Hw]||"%Y");return function(t){return(r(t)1?(fO[t]=e,this):Fb(fO,t)?fO[t]:null}function dO(t){var e=hO(t);return e&&e.responseType||"text"}function pO(t,e,n,r){var i=hO((e=e||{}).type||"json");return i||Ty("Unknown data format type: "+e.type),t=i(t,e),e.parse&&function(t,e,n,r){if(!t.length)return;var i=jC();n=n||i.timeParse,r=r||i.utcParse;var o,a,c,l,u,s,f=t.columns||Object.keys(t[0]);"auto"===e&&(e=oO(t,f));f=Object.keys(e);var h=f.map((function(t){var i,o,a=e[t];if(a&&(a.startsWith("date:")||a.startsWith("utc:")))return("'"===(o=(i=a.split(/:(.+)?/,2))[1])[0]&&"'"===o[o.length-1]||'"'===o[0]&&'"'===o[o.length-1])&&(o=o.slice(1,-1)),("utc"===i[0]?r:n)(o);if(!nO[a])throw Error("Illegal format pattern: "+t+":"+a);return nO[a]}));for(c=0,u=t.length,s=f.length;c=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function mO(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=0&&n.splice(o,1)}return n},n}function bO(t,e){return xO.apply(this,arguments)}function xO(){return xO=Gm(q().mark((function t(e,n){return q().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,n(e);case 3:t.next=8;break;case 5:t.prev=5,t.t0=t.catch(0),e.error(t.t0);case 8:case"end":return t.stop()}}),t,null,[[0,5]])}))),xO.apply(this,arguments)}var wO=Symbol("vega_id"),SO=1;function kO(t){return!(!t||!CO(t))}function CO(t){return t[wO]}function OO(t,e){return t[wO]=e,t}function EO(t){var e=t===Object(t)?t:{data:t};return CO(e)?e:OO(e,SO++)}function MO(t){return AO(t,EO({}))}function AO(t,e){for(var n in t)e[n]=t[n];return e}function PO(t,e){return OO(e,CO(t))}function _O(t,e){return t?e?function(n,r){return t(n,r)||CO(e(n))-CO(e(r))}:function(e,n){return t(e,n)||CO(e)-CO(n)}:null}function DO(t){return t&&t.constructor===TO}function TO(){var t=[],e=[],n=[],r=[],i=[],o=null,a=!1;return{constructor:TO,insert:function(e){for(var n=bb(e),r=n.length,i=0;i0&&(m(d,h,f.value),c.modifies(h));for(u=0,s=i.length;u0&&m(t,f.field,f.value)})),c.modifies(f.field);if(a)c.mod=e.length||r.length?l.filter((function(t){return v[CO(t)]>0})):l.slice();else for(p in g)c.mod.push(g[p]);return(o||null==o&&(e.length||r.length))&&c.clean(!0),c}}}var ZO="_:mod:_";function FO(){Object.defineProperty(this,ZO,{writable:!0,value:{}})}FO.prototype={set:function(t,e,n,r){var i=this,o=i[t],a=i[ZO];return null!=e&&e>=0?(o[e]!==n||r)&&(o[e]=n,a[e+":"+t]=-1,a[t]=-1):(o!==n||r)&&(i[t]=n,a[t]=qy(n)?1+n.length:-1),i},modified:function(t,e){var n=this[ZO];if(!arguments.length){for(var r in n)if(n[r])return!0;return!1}if(qy(t)){for(var i=0;i=0?e+1t?(e=n,1):0}))},debounce:function(t){var e=zO();return this.targets().add(zO(null,null,Pb(t,(function(t){var n=t.dataflow;e.receive(t),n&&n.run&&n.run()})))),e},between:function(t,e){var n=!1;return t.targets().add(zO(null,null,(function(){return n=!0}))),e.targets().add(zO(null,null,(function(){return n=!1}))),this.filter((function(){return n}))},detach:function(){this._filter=Ny,this._targets=null}};var VO={skip:!0};function GO(t,e,n,r,i,o){var a,c,l=_b({},o,VO);wb(n)||(n=Ab(n)),void 0===r?a=function(e){return t.touch(n(e))}:wb(r)?(c=new RO(null,r,i,!1),a=function(e){c.evaluate(e);var r=n(e),i=c.value;DO(i)?t.pulse(r,i,o):t.update(r,i,l)}):a=function(e){return t.update(n(e),r,l)},e.apply(a)}function XO(t,e,n,r,i,o){if(void 0===r)e.targets().add(n);else{var a=o||{},c=new RO(null,function(t,e){return e=wb(e)?e:Ab(e),t?function(n,r){var i=e(n,r);return t.skip()||(t.skip(i!==this.value).value=i),i}:e}(n,r),i,!1);c.modified(a.force),c.rank=e.rank,e.targets().add(c),n&&(c.skip(!0),c.value=n.value,c.targets().add(n),t.connect(n,[c]))}}var qO={};function YO(t,e,n){this.dataflow=t,this.stamp=null==e?-1:e,this.add=[],this.rem=[],this.mod=[],this.fields=null,this.encode=n||null}function $O(t,e){var n=[];return cx(t,e,(function(t){return n.push(t)})),n}function KO(t,e){var n={};return t.visit(e,(function(t){n[CO(t)]=1})),function(t){return n[CO(t)]?null:t}}function JO(t,e){return t?function(n,r){return t(n,r)&&e(n,r)}:e}function QO(t,e,n,r){var i=this,o=0;this.dataflow=t,this.stamp=e,this.fields=null,this.encode=r||null,this.pulses=n;var a,c=gO(n);try{for(c.s();!(a=c.n()).done;){var l=a.value;if(l.stamp===e){if(l.fields){var u=i.fields||(i.fields={});for(var s in l.fields)u[s]=1}l.changed(i.ADD)&&(o|=i.ADD),l.changed(i.REM)&&(o|=i.REM),l.changed(i.MOD)&&(o|=i.MOD)}}}catch(f){c.e(f)}finally{c.f()}this.changes=o}function tE(){return tE=Gm(q().mark((function t(e,n,r){var i,o,a,c,l,u,s,f,h;return q().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(o=[],!(i=this)._pulse){t.next=3;break}return t.abrupt("return",nE(i));case 3:if(!i._pending){t.next=6;break}return t.next=6,i._pending;case 6:if(!n){t.next=9;break}return t.next=9,bO(i,n);case 9:if(i._touched.length){t.next=12;break}return i.debug("Dataflow invoked, but nothing to do."),t.abrupt("return",i);case 12:a=++i._clock,i._pulse=new YO(i,a,e),i._touched.forEach((function(t){return i._enqueue(t,!0)})),i._touched=yO(jy),c=0,t.prev=17;case 18:if(!(i._heap.size()>0)){t.next=35;break}if((l=i._heap.pop()).rank===l.qrank){t.next=23;break}return i._enqueue(l,!0),t.abrupt("continue",18);case 23:if(!(u=l.run(i._getPulse(l,e))).then){t.next=30;break}return t.next=27,u;case 27:u=t.sent,t.next=31;break;case 30:u.async&&(o.push(u.async),u=qO);case 31:u!==qO&&l._targets&&l._targets.forEach((function(t){return i._enqueue(t)})),++c,t.next=18;break;case 35:t.next=41;break;case 37:t.prev=37,t.t0=t.catch(17),i._heap.clear(),s=t.t0;case 41:if(i._input={},i._pulse=null,i.debug("Pulse ".concat(a,": ").concat(c," operators")),s&&(i._postrun=[],i.error(s)),!i._postrun.length){t.next=55;break}f=i._postrun.sort((function(t,e){return e.priority-t.priority})),i._postrun=[],h=0;case 49:if(!(h=0&&(c=r),t[e]=t[c],c=1+((e=c)<<1);t[e]=a,oE(t,i,e,n)}(e,0,t)):n=r,n}}}function oE(t,e,n,r){for(var i,o,a=t[n];n>e&&r(a,i=t[o=n-1>>1])<0;)t[n]=i,n=o;return t[n]=a}function aE(){this.logger(Xy()),this.logLevel(Hy),this._clock=0,this._rank=0,this._locale=LC();try{this._loader=vO()}catch(F2t){}this._touched=yO(jy),this._input={},this._pulse=null,this._heap=iE((function(t,e){return t.qrank-e.qrank})),this._postrun=[]}function cE(t){return function(){return this._log[t].apply(this,arguments)}}function lE(t,e){RO.call(this,t,null,e)}aE.prototype={stamp:function(){return this._clock},loader:function(t){return arguments.length?(this._loader=t,this):this._loader},locale:function(t){return arguments.length?(this._locale=t,this):this._locale},logger:function(t){return arguments.length?(this._log=t,this):this._log},error:cE("error"),warn:cE("warn"),info:cE("info"),debug:cE("debug"),logLevel:cE("level"),cleanThreshold:1e4,add:function(t,e,n,r){var i,o=1;return t instanceof RO?i=t:t&&t.prototype instanceof RO?i=new t:wb(t)?i=new RO(null,t):(o=0,i=new RO(t,e)),this.rank(i),o&&(r=n,n=e),n&&this.connect(i,i.parameters(n,r)),this.touch(i),i},connect:function(t,e){for(var n=t.rank,r=e.length,i=0;i=0;)i.push(e=n[r]),e===t&&Ty("Cycle detected in dataflow graph.")},pulse:function(t,e,n){this.touch(t,n||rE);var r=new YO(this,this._clock+(this._pulse?0:1)),i=t.pulse&&t.pulse.source||[];return r.target=t,this._input[t.id]=e.pulse(r,i),this},touch:function(t,e){var n=e||rE;return this._pulse?this._enqueue(t):this._touched.add(t),n.skip&&t.skip(!0),this},update:function(t,e,n){var r=n||rE;return(t.set(e)||r.force)&&this.touch(t,r),this},changeset:TO,ingest:function(t,e,n){return e=this.parse(e,n),this.pulse(t,this.changeset().insert(e))},parse:function(t,e){var n=this.locale();return pO(t,e,n.timeParse,n.utcParse)},preload:function(t,e,n){return HO.apply(this,arguments)},request:function(t,e){return UO.apply(this,arguments)},events:function(t,e,n,r){for(var i,o=this,a=zO(n,r),c=function(t){t.dataflow=o;try{a.receive(t)}catch(e){o.error(e)}finally{o.run()}},l=(i="string"==typeof t&&"undefined"!=typeof document?document.querySelectorAll(t):bb(t)).length,u=0;u=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function dE(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=o)&&(n=o)}}catch(s){i.e(s)}finally{i.f()}}else{var a,c=-1,l=hE(t);try{for(l.s();!(a=l.n()).done;){var u=a.value;null!=(u=e(u,++c,t))&&(n=u)&&(n=u)}}catch(s){l.e(s)}finally{l.f()}}return n}function vE(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return gE(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return gE(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function gE(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);no||void 0===n&&o>=o)&&(n=o)}}catch(s){i.e(s)}finally{i.f()}}else{var a,c=-1,l=vE(t);try{for(l.s();!(a=l.n()).done;){var u=a.value;null!=(u=e(u,++c,t))&&(n>u||void 0===n&&u>=u)&&(n=u)}}catch(s){l.e(s)}finally{l.f()}}return n}function yE(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Nw;if(t===Nw)return bE;if("function"!=typeof t)throw new TypeError("compare is not a function");return function(e,n){var r=t(e,n);return r||0===r?r:(0===t(n,n))-(0===t(e,e))}}function bE(t,e){return(null==t||!(t>=t))-(null==e||!(e>=e))||(te?1:0)}function xE(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1/0,i=arguments.length>4?arguments[4]:void 0;if(e=Math.floor(e),n=Math.floor(Math.max(0,n)),r=Math.floor(Math.min(t.length-1,r)),!(n<=e&&e<=r))return t;for(i=void 0===i?bE:yE(i);r>n;){if(r-n>600){var o=r-n+1,a=e-n+1,c=Math.log(o),l=.5*Math.exp(2*c/3),u=.5*Math.sqrt(c*l*(o-l)/o)*(a-o/2<0?-1:1);xE(t,e,Math.max(n,Math.floor(e-a*l/o+u)),Math.min(r,Math.floor(e+(o-a)*l/o+u)),i)}var s=t[e],f=n,h=r;for(wE(t,n,e),i(t[r],s)>0&&wE(t,n,r);f0;)--h}0===i(t[n],s)?wE(t,n,h):wE(t,++h,r),h<=e&&(n=h+1),e<=h&&(r=h-1)}return t}function wE(t,e,n){var r=t[e];t[e]=t[n],t[n]=r}var SE=q().mark(EE);function kE(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return CE(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return CE(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function CE(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=i)){u.next=9;break}return u.next=9,i;case 9:u.next=4;break;case 11:u.next=16;break;case 13:u.prev=13,u.t0=u.catch(2),n.e(u.t0);case 16:return u.prev=16,n.f(),u.finish(16);case 19:u.next=40;break;case 21:o=-1,a=kE(t),u.prev=23,a.s();case 25:if((c=a.n()).done){u.next=32;break}if(l=c.value,!(null!=(l=e(l,++o,t))&&(l=+l)>=l)){u.next=30;break}return u.next=30,l;case 30:u.next=25;break;case 32:u.next=37;break;case 34:u.prev=34,u.t1=u.catch(23),a.e(u.t1);case 37:return u.prev=37,a.f(),u.finish(37);case 40:case"end":return u.stop()}}),SE,null,[[2,13,16,19],[23,34,37,40]])}function ME(t,e,n){if((r=(t=Float64Array.from(EE(t,n))).length)&&!isNaN(e=+e)){if(e<=0||r<2)return mE(t);if(e>=1)return pE(t);var r,i=(r-1)*e,o=Math.floor(i),a=pE(xE(t,o).subarray(0,o+1));return a+(mE(t.subarray(o+1))-a)*(i-o)}}function AE(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:OE;if((r=t.length)&&!isNaN(e=+e)){if(e<=0||r<2)return+n(t[0],0,t);if(e>=1)return+n(t[r-1],r-1,t);var r,i=(r-1)*e,o=Math.floor(i),a=+n(t[o],o,t);return a+(+n(t[o+1],o+1,t)-a)*(i-o)}}function PE(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return _E(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _E(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function _E(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=l&&(o+=(n=l-i)*(l-(i+=n/++r)))}}catch(d){c.e(d)}finally{c.f()}}else{var u,s=-1,f=PE(t);try{for(f.s();!(u=f.n()).done;){var h=u.value;null!=(h=e(h,++s,t))&&(h=+h)>=h&&(o+=(n=h-i)*(h-(i+=n/++r)))}}catch(d){f.e(d)}finally{f.f()}}if(r>1)return o/(r-1)}(t,e);return n?Math.sqrt(n):n}function TE(t,e){return ME(t,.5,e)}var ZE=q().mark(IE);function FE(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return jE(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return jE(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function jE(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=i)){u.next=9;break}return u.next=9,i;case 9:u.next=4;break;case 11:u.next=16;break;case 13:u.prev=13,u.t0=u.catch(2),n.e(u.t0);case 16:return u.prev=16,n.f(),u.finish(16);case 19:u.next=41;break;case 21:o=-1,a=FE(t),u.prev=23,a.s();case 25:if((c=a.n()).done){u.next=33;break}if(l=c.value,!(null!=(l=e(l,++o,t))&&""!==l&&(l=+l)>=l)){u.next=31;break}return u.next=31,l;case 31:u.next=25;break;case 33:u.next=38;break;case 35:u.prev=35,u.t1=u.catch(23),a.e(u.t1);case 38:return u.prev=38,a.f(),u.finish(38);case 41:case"end":return u.stop()}}),ZE,null,[[2,13,16,19],[23,35,38,41]])}function RE(t,e,n){var r=Float64Array.from(IE(t,n));return r.sort(Nw),e.map((function(t){return AE(r,t)}))}function LE(t,e){return RE(t,[.25,.5,.75],e)}function NE(t,e){var n=t.length,r=DE(t,e),i=LE(t,e),o=(i[2]-i[0])/1.34;return 1.06*(Math.min(r,o)||r||Math.abs(i[0])||1)*Math.pow(n,-.2)}function BE(t){var e,n,r,i,o,a,c=t.maxbins||20,l=t.base||10,u=Math.log(l),s=t.divide||[5,2],f=t.extent[0],h=t.extent[1],d=t.span||h-f||Math.abs(f)||1;if(t.step)e=t.step;else if(t.steps){for(i=d/c,o=0,a=t.steps.length;oc;)e*=l;for(o=0,a=s.length;o=r&&d/i<=c&&(e=i)}var p=(i=Math.log(e))>=0?0:1+~~(-i/u),v=Math.pow(l,-p-1);return(t.nice||void 0===t.nice)&&(f=f<(i=Math.floor(f/e+v)*e)?i-e:i,h=Math.ceil(h/e)*e),{start:f,stop:h===f?f+e:h,step:e}}var zE=Math.random;function UE(t){zE=t}function HE(t,e,n,r){if(!t.length)return[void 0,void 0];var i,o,a,c,l=Float64Array.from(IE(t,r)),u=l.length,s=e;for(a=0,c=Array(s);a=f){for(s=(u+s)/2;c>1);ra;)t[r--]=t[o]}o=a,a=n}return t}(a,e+e/4):a}function VE(t){return function(){return(t=(1103515245*t+12345)%2147483647)/2147483647}}function GE(t,e){var n,r,i;null==e&&(e=t,t=0);var o={min:function(t){return arguments.length?(i=r-(n=t||0),o):n},max:function(t){return arguments.length?(i=(r=t||0)-n,o):r},sample:function(){return n+Math.floor(i*zE())},pdf:function(t){return t===Math.floor(t)&&t>=n&&t=r?1:(e-n+1)/i},icdf:function(t){return t>=0&&t<=1?n-1+Math.floor(t*i):NaN}};return o.min(t).max(e)}var XE=Math.sqrt(2*Math.PI),qE=Math.SQRT2,YE=NaN;function $E(t,e){t=t||0,e=null==e?1:e;var n,r,i=0,o=0;if(YE==YE)i=YE,YE=NaN;else{do{n=(i=2*zE()-1)*i+(o=2*zE()-1)*o}while(0===n||n>1);i*=r=Math.sqrt(-2*Math.log(n)/n),YE=o*r}return t+i*e}function KE(t,e,n){var r=(t-(e||0))/(n=null==n?1:n);return Math.exp(-.5*r*r)/(n*XE)}function JE(t,e,n){var r,i=(t-(e=e||0))/(n=null==n?1:n),o=Math.abs(i);if(o>37)r=0;else{var a=Math.exp(-o*o/2);o<7.07106781186547?(r=a*((((((.0352624965998911*o+.700383064443688)*o+6.37396220353165)*o+33.912866078383)*o+112.079291497871)*o+221.213596169931)*o+220.206867912376),r/=((((((.0883883476483184*o+1.75566716318264)*o+16.064177579207)*o+86.7807322029461)*o+296.564248779674)*o+637.333633378831)*o+793.826512519948)*o+440.413735824752):r=a/(o+1/(o+2/(o+3/(o+4/(o+.65)))))/2.506628274631}return i>0?1-r:r}function QE(t,e,n){return t<0||t>1?NaN:(e||0)+(null==n?1:n)*qE*function(t){var e,n=-Math.log((1-t)*(1+t));e=n<6.25?1.6536545626831027+(e=.24015818242558962+(e=(e=(e=.00018673420803405714+(e=(e=(e=4.2347877827932404e-7+(e=(e=(e=1.0512122733215323e-9+(e=(e=(e=26335093153082323e-28+(e=(e=(e=6637638134358324e-30+(e=20972767875968562e-33+(e=(e=11157877678025181e-33+(e=128584807152564e-32+(e=(e=-364441206401782e-35)*(n-=3.125)-16850591381820166e-35)*n)*n)*n-1333171662854621e-31)*n)*n)*n-4054566272975207e-29)*n-8151934197605472e-29)*n)*n-12975133253453532e-27)*n-5415412054294628e-26)*n)*n-4.112633980346984e-9)*n-2.9070369957882005e-8)*n)*n-13654692000834679e-22)*n-13882523362786469e-21)*n)*n-.000740702534166267)*n-.006033670871430149)*n)*n:n<16?3.0838856104922208+(e=1.0052589676941592+(e=.005370914553590064+(e=(e=.002491442096107851+(e=(e=.0009532893797373805+(e=(e=24031110387097894e-21+(e=6828485145957318e-20+(e=(e=12475304481671779e-21+(e=29234449089955446e-22+(e=(e=15027403968909828e-22+(e=1.8239629214389228e-8+(e=(e=9.075656193888539e-8+(e=2.2137376921775787e-9)*(n=Math.sqrt(n)-3.25))*n-2.7517406297064545e-7)*n)*n)*n-4013867526981546e-21)*n)*n)*n-47318229009055734e-21)*n)*n)*n-.0003550375203628475)*n)*n-.0016882755560235047)*n)*n-.003751208507569241)*n)*n)*n:Number.isFinite(n)?4.849906401408584+(e=1.0103004648645344+(e=(e=(e=7599527703001776e-20+(e=(e=4526062597223154e-21+(e=(e=2.2900482228026655e-7+(e=(e=2.914795345090108e-8+(e=(e=7.61570120807834e-9+(e=(e=1.5076572693500548e-9+(e=(e=-27109920616438573e-27)*(n=Math.sqrt(n)-5)-2.555641816996525e-10)*n)*n-3.789465440126737e-9)*n)*n-1.496002662714924e-8)*n)*n-6.771199775845234e-8)*n)*n-9.9298272942317e-7)*n)*n-1968177810553167e-20)*n)*n-.00021503011930044477)*n-.00013871931833623122)*n)*n:1/0;return e*t}(2*t-1)}function tM(t,e){var n,r,i={mean:function(t){return arguments.length?(n=t||0,i):n},stdev:function(t){return arguments.length?(r=null==t?1:t,i):r},sample:function(){return $E(n,r)},pdf:function(t){return KE(t,n,r)},cdf:function(t){return JE(t,n,r)},icdf:function(t){return QE(t,n,r)}};return i.mean(t).stdev(e)}function eM(t,e){var n=tM(),r=0,i={data:function(n){return arguments.length?(t=n,r=n?n.length:0,i.bandwidth(e)):t},bandwidth:function(n){return arguments.length?(!(e=n)&&t&&(e=NE(t)),i):e},sample:function(){return t[~~(zE()*r)]+e*n.sample()},pdf:function(i){for(var o=0,a=0;a=e&&t<=n?1/(n-e):0}function sM(t,e,n){return null==n&&(n=null==e?1:e,e=0),tn?1:(t-e)/(n-e)}function fM(t,e,n){return null==n&&(n=null==e?1:e,e=0),t>=0&&t<=1?e+t*(n-e):NaN}function hM(t,e){var n,r,i={min:function(t){return arguments.length?(n=t||0,i):n},max:function(t){return arguments.length?(r=null==t?1:t,i):r},sample:function(){return lM(n,r)},pdf:function(t){return uM(t,n,r)},cdf:function(t){return sM(t,n,r)},icdf:function(t){return fM(t,n,r)}};return null==e&&(e=null==t?1:t,t=0),i.min(t).max(e)}function dM(t,e,n){var r,i=0,o=0,a=FE(t);try{for(a.s();!(r=a.n()).done;){var c=r.value,l=n(c);null==e(c)||null==l||isNaN(l)||(i+=(l-i)/++o)}}catch(u){a.e(u)}finally{a.f()}return{coef:[i],predict:function(){return i},rSquared:0}}function pM(t,e,n,r){var i=r-t*t,o=Math.abs(i)<1e-24?0:(n-t*e)/i;return[e-o*t,o]}function vM(t,e,n,r){t=t.filter((function(t){var r=e(t),i=n(t);return null!=r&&(r=+r)>=r&&null!=i&&(i=+i)>=i})),r&&t.sort((function(t,n){return e(t)-e(n)}));var i,o,a,c,l=t.length,u=new Float64Array(l),s=new Float64Array(l),f=0,h=0,d=0,p=FE(t);try{for(p.s();!(c=p.n()).done;)a=c.value,u[f]=i=+e(a),s[f]=o=+n(a),h+=(i-h)/++f,d+=(o-d)/f}catch(v){p.e(v)}finally{p.f()}for(f=0;f=i&&null!=o&&(o=+o)>=o&&r(i,o,++c)}}catch(s){l.e(s)}finally{l.f()}}function mM(t,e,n,r,i){var o=0,a=0;return gM(t,e,n,(function(t,e){var n=e-i(t),c=e-r;o+=n*n,a+=c*c})),1-o/a}function yM(t,e,n){var r=0,i=0,o=0,a=0,c=0;gM(t,e,n,(function(t,e){++c,r+=(t-r)/c,i+=(e-i)/c,o+=(t*e-o)/c,a+=(t*t-a)/c}));var l=pM(r,i,o,a),u=function(t){return l[0]+l[1]*t};return{coef:l,predict:u,rSquared:mM(t,e,n,i,u)}}function bM(t,e,n){var r=0,i=0,o=0,a=0,c=0;gM(t,e,n,(function(t,e){++c,t=Math.log(t),r+=(t-r)/c,i+=(e-i)/c,o+=(t*e-o)/c,a+=(t*t-a)/c}));var l=pM(r,i,o,a),u=function(t){return l[0]+l[1]*Math.log(t)};return{coef:l,predict:u,rSquared:mM(t,e,n,i,u)}}function xM(t,e,n){var r,i,o,a=vM(t,e,n),c=(0,G.Z)(a,4),l=c[0],u=(c[1],c[2]),s=c[3],f=0,h=0,d=0,p=0,v=0;gM(t,e,n,(function(t,e){r=l[v++],i=Math.log(e),f+=(e*i-f)/v,h+=((o=r*e)-h)/v,d+=(o*i-d)/v,p+=(r*o-p)/v}));var g=pM(h/s,f/s,d/s,p/s),m=(0,G.Z)(g,2),y=m[0],b=m[1],x=function(t){return Math.exp(y+b*(t-u))};return{coef:[Math.exp(y-b*u),b],predict:x,rSquared:mM(t,e,n,s,x)}}function wM(t,e,n){var r=0,i=0,o=0,a=0,c=0,l=0;gM(t,e,n,(function(t,e){var n=Math.log(t),u=Math.log(e);++l,r+=(n-r)/l,i+=(u-i)/l,o+=(n*u-o)/l,a+=(n*n-a)/l,c+=(e-c)/l}));var u=pM(r,i,o,a),s=function(t){return u[0]*Math.pow(t,u[1])};return u[0]=Math.exp(u[0]),{coef:u,predict:s,rSquared:mM(t,e,n,c,s)}}function SM(t,e,n){var r,i,o,a,c=vM(t,e,n),l=(0,G.Z)(c,4),u=l[0],s=l[1],f=l[2],h=l[3],d=u.length,p=0,v=0,g=0,m=0,y=0;for(r=0;rMath.abs(t[e][i])&&(i=n);for(r=e;r=e;r--)t[r][n]-=t[r][e]*t[e][n]/t[e][e]}for(n=a-1;n>=0;--n){for(o=0,r=n+1;r=0;--i)for(a=e[i],c=1,l[i]+=a,o=1;o<=i;++o)c*=(i+1-o)/o,l[i-o]+=a*Math.pow(n,o)*c;return l[0]+=r,l}var OM=2,EM=1e-12;function MM(t,e,n,r){for(var i=vM(t,e,n,!0),o=(0,G.Z)(i,4),a=o[0],c=o[1],l=o[2],u=o[3],s=a.length,f=Math.max(2,~~(r*s)),h=new Float64Array(s),d=new Float64Array(s),p=new Float64Array(s).fill(1),v=-1;++v<=OM;){for(var g=[0,f-1],m=0;ma[x]-y?b:x,S=0,k=0,C=0,O=0,E=0,M=1/Math.abs(a[w]-y||1),A=b;A<=x;++A){var P=a[A],_=c[A],D=AM(Math.abs(y-P)*M)*p[A],T=P*D;S+=D,k+=T,C+=_*D,O+=_*T,E+=P*T}var Z=pM(k/S,C/S,O/S,E/S),F=(0,G.Z)(Z,2),j=F[0],I=F[1];h[m]=j+I*y,d[m]=Math.abs(c[m]-h[m]),PM(a,m+1,g)}if(v===OM)break;var R=TE(d);if(Math.abs(R)=1?EM:(N=1-L*L)*N}return function(t,e,n,r){for(var i,o=t.length,a=[],c=0,l=0,u=[];c=t.length))for(;e>i&&t[o]-r<=r-t[i];)n[0]=++i,n[1]=o,++o}var _M=.5*Math.PI/180;function DM(t,e,n,r){n=n||25,r=Math.max(n,r||200);var i=function(e){return[e,t(e)]},o=e[0],a=e[1],c=a-o,l=c/r,u=[i(o)],s=[];if(n===r){for(var f=1;f0;)s.push(i(o+h/n*c));for(var d=u[0],p=s[s.length-1],v=1/c,g=function(t,e){for(var n=t,r=t,i=e.length,o=0;or&&(r=a)}return 1/(r-n)}(d[1],s);p;){var m=i((d[0]+p[0])/2);m[0]-d[0]>=l&&TM(d,m,p,v,g)>_M?s.push(m):(d=p,u.push(p),s.pop()),p=s[s.length-1]}return u}function TM(t,e,n,r,i){var o=Math.atan2(i*(n[1]-t[1]),r*(n[0]-t[0])),a=Math.atan2(i*(e[1]-t[1]),r*(e[0]-t[0]));return Math.abs(o-a)}function ZM(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return FM(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return FM(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function FM(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function RM(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n1?t.dev/(t.valid-1):void 0},add:function(t,e){return t.dev+=t.mean_d*(e-t.mean)},rem:function(t,e){return t.dev-=t.mean_d*(e-t.mean)},req:["mean"],idx:1},variancep:{value:function(t){return t.valid>1?t.dev/t.valid:void 0},req:["variance"],idx:2},stdev:{value:function(t){return t.valid>1?Math.sqrt(t.dev/(t.valid-1)):void 0},req:["variance"],idx:2},stdevp:{value:function(t){return t.valid>1?Math.sqrt(t.dev/t.valid):void 0},req:["variance"],idx:2},stderr:{value:function(t){return t.valid>1?Math.sqrt(t.dev/(t.valid*(t.valid-1))):void 0},req:["variance"],idx:2},distinct:{value:function(t){return t.cell.data.distinct(t.get)},req:["values"],idx:3},ci0:{value:function(t){return t.cell.data.ci0(t.get)},req:["values"],idx:3},ci1:{value:function(t){return t.cell.data.ci1(t.get)},req:["values"],idx:3},median:{value:function(t){return t.cell.data.q2(t.get)},req:["values"],idx:3},q1:{value:function(t){return t.cell.data.q1(t.get)},req:["values"],idx:3},q3:{value:function(t){return t.cell.data.q3(t.get)},req:["values"],idx:3},min:{init:function(t){return t.min=void 0},value:function(t){return t.min=Number.isNaN(t.min)?t.cell.data.min(t.get):t.min},add:function(t,e){(et.max||void 0===t.max)&&(t.max=e)},rem:function(t,e){e>=t.max&&(t.max=NaN)},req:["values"],idx:4},argmin:{init:function(t){return t.argmin=void 0},value:function(t){return t.argmin||t.cell.data.argmin(t.get)},add:function(t,e,n){et.max&&(t.argmax=n)},rem:function(t,e){e>=t.max&&(t.argmax=void 0)},req:["max","values"],idx:3}},HM=Object.keys(UM).filter((function(t){return"__count__"!==t}));function WM(t,e){return UM[t](e)}function VM(t,e){return t.idx-e.idx}function GM(){var t=this;this.valid=0,this.missing=0,this._ops.forEach((function(e){return e.init(t)}))}function XM(t,e){var n=this;null!=t&&""!==t?t==t&&(++this.valid,this._ops.forEach((function(r){return r.add(n,t,e)}))):++this.missing}function qM(t,e){var n=this;null!=t&&""!==t?t==t&&(--this.valid,this._ops.forEach((function(r){return r.rem(n,t,e)}))):--this.missing}function YM(t){var e=this;return this._out.forEach((function(n){return t[n.out]=n.value(e)})),t}function $M(t,e){var n=e||Iy,r=function(t){var e={};return t.forEach((function(t){return e[t.name]=t})),t.forEach((function t(n){n.req&&n.req.forEach((function(n){e[n]||t(e[n]=UM[n]())}))})),Object.values(e).sort(VM)}(t),i=t.slice().sort(VM);function o(t){this._ops=r,this._out=i,this.cell=t,this.init()}return o.prototype.init=GM,o.prototype.add=XM,o.prototype.rem=qM,o.prototype.set=YM,o.prototype.get=n,o.fields=t.map((function(t){return t.out})),o}function KM(t){this._key=t?Fy(t):CO,this.reset()}[].concat((0,Xm.Z)(HM),["__count__"]).forEach((function(t){UM[t]=function(t,e){return function(n){return _b({name:t,out:n||t},zM,e)}}(t,UM[t])}));var JM=KM.prototype;function QM(t){lE.call(this,null,t),this._adds=[],this._mods=[],this._alen=0,this._mlen=0,this._drop=!0,this._cross=!1,this._dims=[],this._dnames=[],this._measures=[],this._countOnly=!1,this._counts=null,this._prev=null,this._inputs=null,this._outputs=null}JM.reset=function(){this._add=[],this._rem=[],this._ext=null,this._get=null,this._q=null},JM.add=function(t){this._add.push(t)},JM.rem=function(t){this._rem.push(t)},JM.values=function(){if(this._get=null,0===this._rem.length)return this._add;var t,e,n,r=this._add,i=this._rem,o=this._key,a=r.length,c=i.length,l=Array(a-c),u={};for(t=0;t=0;)Fb(r,e=t(n[i])+"")||(r[e]=1,++o);return o},JM.extent=function(t){if(this._get!==t||!this._ext){var e=this.values(),n=Tb(e,t);this._ext=[e[n[0]],e[n[1]]],this._get=t}return this._ext},JM.argmin=function(t){return this.extent(t)[0]||{}},JM.argmax=function(t){return this.extent(t)[1]||{}},JM.min=function(t){var e=this.extent(t)[0];return null!=e?t(e):void 0},JM.max=function(t){var e=this.extent(t)[1];return null!=e?t(e):void 0},JM.quartile=function(t){return this._get===t&&this._q||(this._q=LE(this.values(),t),this._get=t),this._q},JM.q1=function(t){return this.quartile(t)[0]},JM.q2=function(t){return this.quartile(t)[1]},JM.q3=function(t){return this.quartile(t)[2]},JM.ci=function(t){return this._get===t&&this._ci||(this._ci=HE(this.values(),1e3,.05,t),this._get=t),this._ci},JM.ci0=function(t){return this.ci(t)[0]},JM.ci1=function(t){return this.ci(t)[1]},QM.Definition={type:"Aggregate",metadata:{generates:!0,changes:!0},params:[{name:"groupby",type:"field",array:!0},{name:"ops",type:"enum",array:!0,values:HM},{name:"fields",type:"field",null:!0,array:!0},{name:"as",type:"string",null:!0,array:!0},{name:"drop",type:"boolean",default:!0},{name:"cross",type:"boolean",default:!1},{name:"key",type:"field"}]},Lb(QM,lE,{transform:function(t,e){var n=this,r=this,i=e.fork(e.NO_SOURCE|e.NO_FIELDS),o=t.modified();return r.stamp=i.stamp,r.value&&(o||e.modified(r._inputs,!0))?(r._prev=r.value,r.value=o?r.init(t):Object.create(null),e.visit(e.SOURCE,(function(t){return r.add(t)}))):(r.value=r.value||r.init(t),e.visit(e.REM,(function(t){return r.rem(t)})),e.visit(e.ADD,(function(t){return r.add(t)}))),i.modifies(r._outputs),r._drop=!1!==t.drop,t.cross&&r._dims.length>1&&(r._drop=!1,r.cross()),e.clean()&&r._drop&&i.clean(!0).runAfter((function(){return n.clean()})),r.changes(i)},cross:function(){var t=this,e=t.value,n=t._dnames,r=n.map((function(){return{}})),i=n.length;function o(t){var e,o,a,c;for(e in t)for(a=t[e].tuple,o=0;oc?1/0:(e=Math.max(a,Math.min(e,c-o)),a+o*Math.floor(1e-14+(e-a)/o))};return l.start=a,l.stop=i.stop,l.step=o,this.value=Ey(l,Ay(r),t.name||"bin_"+My(r))}}),nA.Definition={type:"Collect",metadata:{source:!0},params:[{name:"sort",type:"compare"}]},Lb(nA,lE,{transform:function(t,e){var n=e.fork(e.ALL),r=eA(CO,this.value,n.materialize(n.ADD).add),i=t.sort,o=e.changed()||i&&(t.modified("sort")||e.modified(i.fields));return n.visit(n.REM,r.remove),this.modified(o),this.value=n.source=r.data(_O(i),o),e.source&&e.source.root&&(this.value.root=e.source.root),n}}),Lb(rA,RO),oA.Definition={type:"CountPattern",metadata:{generates:!0,changes:!0},params:[{name:"field",type:"field",required:!0},{name:"case",type:"enum",values:["upper","lower","mixed"],default:"mixed"},{name:"pattern",type:"string",default:'[\\w"]+'},{name:"stopwords",type:"string",default:""},{name:"as",type:"string",array:!0,length:2,default:["text","count"]}]},Lb(oA,lE,{transform:function(t,e){var n=function(e){return function(n){for(var r,i=function(t,e,n){switch(e){case"upper":t=t.toUpperCase();break;case"lower":t=t.toLowerCase()}return t.match(n)}(c(n),t.case,o)||[],l=0,u=i.length;lh&&(h=m),p[++n][u]=m}}catch(y){g.e(y)}finally{g.f()}}return this.value={start:f,stop:h,step:c},e.reflow(!0).modifies(u)}}),Lb(gA,RO),yA.Definition={type:"Extent",metadata:{},params:[{name:"field",type:"field",required:!0}]},Lb(yA,lE,{transform:function(t,e){var n=this.value,r=t.field,i=e.changed()||e.modified(r.fields)||t.modified("field"),o=n[0],a=n[1];if((i||null==o)&&(o=1/0,a=-1/0),e.visit(i?e.SOURCE:e.ADD,(function(t){var e=eb(r(t));null!=e&&(ea&&(a=e))})),!Number.isFinite(o)||!Number.isFinite(a)){var c=My(r);c&&(c=' for field "'.concat(c,'"')),e.dataflow.warn("Infinite extent".concat(c,": [").concat(o,", ").concat(a,"]")),o=a=void 0}this.value=[o,a]}}),Lb(bA,RO,{connect:function(t){return this.detachSubflow=t.detachSubflow,this.targets().add(t),t.source=this},add:function(t){this.count+=1,this.value.add.push(t)},rem:function(t){this.count-=1,this.value.rem.push(t)},mod:function(t){this.value.mod.push(t)},init:function(t){this.value.init(t,t.NO_SOURCE)},evaluate:function(){return this.value}}),Lb(xA,lE,{activate:function(t){this._targets[this._targets.active++]=t},subflow:function(t,e,n,r){var i,o,a=this.value,c=Fb(a,t)&&a[t];return c?c.value.stamp0}));this.initTargets(i)}},initTargets:function(t){for(var e=this._targets,n=e.length,r=t?t.length:0,i=0;ir.cleanThreshold&&r.runAfter(a.clean),e}}),Lb(wA,RO),kA.Definition={type:"Filter",metadata:{changes:!0},params:[{name:"expr",type:"expr",required:!0}]},Lb(kA,lE,{transform:function(t,e){var n=e.dataflow,r=this.value,i=e.fork(),o=i.add,a=i.rem,c=i.mod,l=t.expr,u=!0;function s(e){var n=CO(e),i=l(e,t),s=r.get(n);i&&s?(r.delete(n),o.push(e)):i||s?u&&i&&!s&&c.push(e):(r.set(n,1),a.push(e))}return e.visit(e.REM,(function(t){var e=CO(t);r.has(e)?r.delete(e):a.push(t)})),e.visit(e.ADD,(function(e){l(e,t)?o.push(e):r.set(CO(e),1)})),e.visit(e.MOD,s),t.modified()&&(u=!1,e.visit(e.REFLOW,s)),r.empty>n.cleanThreshold&&n.runAfter(r.clean),i}}),CA.Definition={type:"Flatten",metadata:{generates:!0},params:[{name:"fields",type:"field",array:!0,required:!0},{name:"index",type:"string"},{name:"as",type:"string",array:!0}]},Lb(CA,lE,{transform:function(t,e){var n=e.fork(e.NO_SOURCE),r=t.fields,i=dA(r,t.as||[]),o=t.index||null,a=i.length;return n.rem=this.value,e.visit(e.SOURCE,(function(t){for(var e,c,l,u=r.map((function(e){return e(t)})),s=u.reduce((function(t,e){return Math.max(t,e.length)}),0),f=0;f0){for(n=[];--l>=0;)n.push(i=EO(a(t))),c.push(i);o.add=o.add.length?o.materialize(o.ADD).add.concat(n):n}else r=c.slice(0,-l),o.rem=o.rem.length?o.materialize(o.REM).rem.concat(r):r,c=c.slice(-l);return o.source=this.value=c,o}});var AA={value:"value",median:TE,mean:function(t,e){var n=0,r=0;if(void 0===e){var i,o=ZM(t);try{for(o.s();!(i=o.n()).done;){var a=i.value;null!=a&&(a=+a)>=a&&(++n,r+=a)}}catch(f){o.e(f)}finally{o.f()}}else{var c,l=-1,u=ZM(t);try{for(u.s();!(c=u.n()).done;){var s=c.value;null!=(s=e(s,++l,t))&&(s=+s)>=s&&(++n,r+=s)}}catch(f){u.e(f)}finally{u.f()}}if(n)return r/n},min:mE,max:pE},PA=[];function _A(t){lE.call(this,[],t)}function DA(t){QM.call(this,t)}function TA(t){lE.call(this,null,t)}function ZA(t){RO.call(this,null,FA,t)}function FA(t){return this.value&&!t.modified()?this.value:Gb(t.fields,t.flat)}function jA(t){lE.call(this,[],t),this._pending=null}function IA(t,e,n){n.forEach(EO);var r=e.fork(e.NO_FIELDS&e.NO_SOURCE);return r.rem=t.value,t.value=r.source=r.add=n,t._pending=null,r.rem.length&&r.clean(!0),r}function RA(t){lE.call(this,{},t)}function LA(t){RO.call(this,null,NA,t)}function NA(t){if(this.value&&!t.modified())return this.value;var e,n,r=t.extents,i=r.length,o=1/0,a=-1/0;for(e=0;ea&&(a=n[1]);return[o,a]}function BA(t){RO.call(this,null,zA,t)}function zA(t){return this.value&&!t.modified()?this.value:t.values.reduce((function(t,e){return t.concat(e)}),[])}function UA(t){lE.call(this,null,t)}function HA(t){QM.call(this,t)}function WA(t){xA.call(this,t)}function VA(t){lE.call(this,null,t)}function GA(t){lE.call(this,null,t)}function XA(t){lE.call(this,null,t)}_A.Definition={type:"Impute",metadata:{changes:!0},params:[{name:"field",type:"field",required:!0},{name:"key",type:"field",required:!0},{name:"keyvals",array:!0},{name:"groupby",type:"field",array:!0},{name:"method",type:"enum",default:"value",values:["value","mean","median","max","min"]},{name:"value",default:0}]},Lb(_A,lE,{transform:function(t,e){var n,r,i,o,a,c,l,u,s,f,h=e.fork(e.ALL),d=function(t){var e,n=t.method||AA.value;if(null!=AA[n])return n===AA.value?(e=void 0!==t.value?t.value:0,function(){return e}):AA[n];Ty("Unrecognized imputation method: "+n)}(t),p=function(t){var e=t.field;return function(t){return t?e(t):NaN}}(t),v=My(t.field),g=My(t.key),m=(t.groupby||[]).map(My),y=function(t,e,n,r){var i,o,a,c,l,u,s,f,h=function(t){return t(f)},d=[],p=r?r.slice():[],v={},g={};for(p.forEach((function(t,e){return v[t]=e+1})),c=0,s=t.length;c1&&!d&&Ty('Multi-field lookup requires explicit "as" parameter.'),d&&d.length!==s*r&&Ty('The "as" parameter has too few output field names.'),d=d||c.map(My),n=function(t){for(var e,n,i=0,u=0;i=l&&(e=a[r],o[CO(e)]&&n.rem.push(e),a[r]=t),++c}if(e.rem.length&&(e.visit(e.REM,(function(t){var e=CO(t);o[e]&&(o[e]=-1,n.rem.push(t)),--c})),a=a.filter((function(t){return-1!==o[CO(t)]}))),(e.rem.length||r)&&a.lengthi){for(var s=a.length-i,f=0;fh&&(h=i))})),o.start=f,o.stop=h,e.modifies(r?c:l)},_floor:function(t,e){var n="utc"===t.timezone,r=t.units?{units:t.units,step:t.step||1}:KS({extent:t.extent||Db(e.materialize(e.SOURCE).source,t.field),maxbins:t.maxbins}),i=r.units,o=r.step,a=nS(i),c=this.value||{},l=(n?ES:kS)(a,o);return l.unit=tb(a),l.units=a,l.step=o,l.start=c.start,l.stop=c.stop,this.value=l}}),Lb(tP,lE,{transform:function(t,e){var n=e.dataflow,r=t.field,i=this.value,o=function(t){return i.set(r(t),t)},a=!0;return t.modified("field")||e.modified(r.fields)?(i.clear(),e.visit(e.SOURCE,o)):e.changed()?(e.visit(e.REM,(function(t){return i.delete(r(t))})),e.visit(e.ADD,o)):a=!1,this.modified(a),i.empty>n.cleanThreshold&&n.runAfter(i.clean),e.fork()}}),Lb(eP,lE,{transform:function(t,e){(!this.value||t.modified("field")||t.modified("sort")||e.changed()||t.sort&&e.modified(t.sort.fields))&&(this.value=(t.sort?e.source.slice().sort(_O(t.sort)):e.source).map(t.field))}});var nP={row_number:function(){return{next:function(t){return t.index+1}}},rank:function(){var t;return{init:function(){return t=1},next:function(e){var n=e.index,r=e.data;return n&&e.compare(r[n-1],r[n])?t=n+1:t}}},dense_rank:function(){var t;return{init:function(){return t=1},next:function(e){var n=e.index,r=e.data;return n&&e.compare(r[n-1],r[n])?++t:t}}},percent_rank:function(){var t=nP.rank(),e=t.next;return{init:t.init,next:function(t){return(e(t)-1)/(t.data.length-1)}}},cume_dist:function(){var t;return{init:function(){return t=0},next:function(e){var n=e.data,r=e.compare,i=e.index;if(t0||Ty("ntile num must be greater than zero.");var n=nP.cume_dist(),r=n.next;return{init:n.init,next:function(t){return Math.ceil(e*r(t))}}},lag:function(t,e){return e=+e||1,{next:function(n){var r=n.index-e;return r>=0?t(n.data[r]):null}}},lead:function(t,e){return e=+e||1,{next:function(n){var r=n.index+e,i=n.data;return r0||Ty("nth_value nth must be greater than zero."),{next:function(n){var r=n.i0+(e-1);return r0&&!i(o[n],o[n-1])&&(t.i0=e.left(o,o[n])),r0)for(var r,i=t[0],o=e[0],a=t[n]-i,c=e[n]-o,l=-1;++l<=n;)r=l/n,this._basis.point(this._beta*t[l]+(1-this._beta)*(i+r*a),this._beta*e[l]+(1-this._beta)*(o+r*c));this._x=this._y=null,this._basis.lineEnd()},point:function(t,e){this._x.push(+t),this._y.push(+e)}};var gP=function t(e){function n(t){return 1===e?new fP(t):new vP(t,e)}return n.beta=function(e){return t(+e)},n}(.85);function mP(t,e,n){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-n),t._x2,t._y2)}function yP(t,e){this._context=t,this._k=(1-e)/6}yP.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:mP(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:mP(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var bP=function t(e){function n(t){return new yP(t,e)}return n.tension=function(e){return t(+e)},n}(0);function xP(t,e){this._context=t,this._k=(1-e)/6}xP.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:mP(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var wP=function t(e){function n(t){return new xP(t,e)}return n.tension=function(e){return t(+e)},n}(0);function SP(t,e){this._context=t,this._k=(1-e)/6}SP.prototype={areaStart:hP,areaEnd:hP,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:mP(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var kP=function t(e){function n(t){return new SP(t,e)}return n.tension=function(e){return t(+e)},n}(0),CP=Math.abs,OP=Math.atan2,EP=Math.cos,MP=Math.max,AP=Math.min,PP=Math.sin,_P=Math.sqrt,DP=1e-12,TP=Math.PI,ZP=TP/2,FP=2*TP;function jP(t){return t>=1?ZP:t<=-1?-ZP:Math.asin(t)}function IP(t,e,n){var r=t._x1,i=t._y1,o=t._x2,a=t._y2;if(t._l01_a>DP){var c=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,l=3*t._l01_a*(t._l01_a+t._l12_a);r=(r*c-t._x0*t._l12_2a+t._x2*t._l01_2a)/l,i=(i*c-t._y0*t._l12_2a+t._y2*t._l01_2a)/l}if(t._l23_a>DP){var u=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,s=3*t._l23_a*(t._l23_a+t._l12_a);o=(o*u+t._x1*t._l23_2a-e*t._l12_2a)/s,a=(a*u+t._y1*t._l23_2a-n*t._l12_2a)/s}t._context.bezierCurveTo(r,i,o,a,t._x2,t._y2)}function RP(t,e){this._context=t,this._alpha=e}RP.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:IP(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var LP=function t(e){function n(t){return e?new RP(t,e):new yP(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function NP(t,e){this._context=t,this._alpha=e}NP.prototype={areaStart:hP,areaEnd:hP,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:IP(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var BP=function t(e){function n(t){return e?new NP(t,e):new SP(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function zP(t,e){this._context=t,this._alpha=e}zP.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:IP(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var UP,HP,WP,VP,GP,XP,qP,YP,$P,KP,JP,QP,t_,e_,n_=function t(e){function n(t){return e?new zP(t,e):new xP(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function r_(t){this._context=t}function i_(t){return new r_(t)}function o_(t){this._context=t}function a_(t){return t<0?-1:1}function c_(t,e,n){var r=t._x1-t._x0,i=e-t._x1,o=(t._y1-t._y0)/(r||i<0&&-0),a=(n-t._y1)/(i||r<0&&-0),c=(o*i+a*r)/(r+i);return(a_(o)+a_(a))*Math.min(Math.abs(o),Math.abs(a),.5*Math.abs(c))||0}function l_(t,e){var n=t._x1-t._x0;return n?(3*(t._y1-t._y0)/n-e)/2:e}function u_(t,e,n){var r=t._x0,i=t._y0,o=t._x1,a=t._y1,c=(o-r)/3;t._context.bezierCurveTo(r+c,i+c*e,o-c,a-c*n,o,a)}function s_(t){this._context=t}function f_(t){this._context=new h_(t)}function h_(t){this._context=t}function d_(t){this._context=t}function p_(t){var e,n,r=t.length-1,i=new Array(r),o=new Array(r),a=new Array(r);for(i[0]=0,o[0]=2,a[0]=t[0]+2*t[1],e=1;e=0;--e)i[e]=(a[e]-i[e+1])/o[e];for(o[r-1]=(t[r]+i[r-1])/2,e=0;e=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var n=this._x*(1-this._t)+t*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,e)}}this._x=t,this._y=e}};var y_=Math.PI,b_=2*y_,x_=1e-6,w_=b_-x_;function S_(t){this._+=t[0];for(var e=1,n=t.length;e=0))throw new Error("invalid digits: ".concat(t));if(e>15)return S_;var n=Math.pow(10,e);return function(t){this._+=t[0];for(var e=1,r=t.length;ex_)if(Math.abs(s*c-l*u)>x_&&i){var h=n-o,d=r-a,p=c*c+l*l,v=h*h+d*d,g=Math.sqrt(p),m=Math.sqrt(f),y=i*Math.tan((y_-Math.acos((p+f-v)/(2*g*m)))/2),b=y/m,x=y/g;Math.abs(b-1)>x_&&this._append(YP||(YP=m_(["L",",",""])),t+b*u,e+b*s),this._append($P||($P=m_(["A",",",",0,0,",",",",",""])),i,i,+(s*h>u*d),this._x1=t+x*c,this._y1=e+x*l)}else this._append(qP||(qP=m_(["L",",",""])),this._x1=t,this._y1=e);else;}},{key:"arc",value:function(t,e,n,r,i,o){if(t=+t,e=+e,o=!!o,(n=+n)<0)throw new Error("negative radius: ".concat(n));var a=n*Math.cos(r),c=n*Math.sin(r),l=t+a,u=e+c,s=1^o,f=o?r-i:i-r;null===this._x1?this._append(KP||(KP=m_(["M",",",""])),l,u):(Math.abs(this._x1-l)>x_||Math.abs(this._y1-u)>x_)&&this._append(JP||(JP=m_(["L",",",""])),l,u),n&&(f<0&&(f=f%b_+b_),f>w_?this._append(QP||(QP=m_(["A",",",",0,1,",",",",","A",",",",0,1,",",",",",""])),n,n,s,t-a,e-c,n,n,s,this._x1=l,this._y1=u):f>x_&&this._append(t_||(t_=m_(["A",",",",0,",",",",",",",""])),n,n,+(f>=y_),s,this._x1=t+n*Math.cos(i),this._y1=e+n*Math.sin(i)))}},{key:"rect",value:function(t,e,n,r){this._append(e_||(e_=m_(["M",",","h","v","h","Z"])),this._x0=this._x1=+t,this._y0=this._y1=+e,n=+n,+r,-n)}},{key:"toString",value:function(){return this._}}]),t}();function C_(){return new k_}function O_(t){var e=3;return t.digits=function(n){if(!arguments.length)return e;if(null==n)e=null;else{var r=Math.floor(n);if(!(r>=0))throw new RangeError("invalid digits: ".concat(n));e=r}return t},function(){return new k_(e)}}function E_(t){return t.innerRadius}function M_(t){return t.outerRadius}function A_(t){return t.startAngle}function P_(t){return t.endAngle}function __(t){return t&&t.padAngle}function D_(t,e,n,r,i,o,a){var c=t-n,l=e-r,u=(a?o:-o)/_P(c*c+l*l),s=u*l,f=-u*c,h=t+s,d=e+f,p=n+s,v=r+f,g=(h+p)/2,m=(d+v)/2,y=p-h,b=v-d,x=y*y+b*b,w=i-o,S=h*v-p*d,k=(b<0?-1:1)*_P(MP(0,w*w*x-S*S)),C=(S*b-y*k)/x,O=(-S*y-b*k)/x,E=(S*b+y*k)/x,M=(-S*y+b*k)/x,A=C-g,P=O-m,_=E-g,D=M-m;return A*A+P*P>_*_+D*D&&(C=E,O=M),{cx:C,cy:O,x01:-s,y01:-f,x11:C*(i/w-1),y11:O*(i/w-1)}}C_.prototype=k_.prototype;Array.prototype.slice;function T_(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}function Z_(t){return t[0]}function F_(t){return t[1]}function j_(t,e){var n=g_(!0),r=null,i=i_,o=null,a=O_(c);function c(c){var l,u,s,f=(c=T_(c)).length,h=!1;for(null==r&&(o=i(s=a())),l=0;l<=f;++l)!(l=f;--h)c.point(m[h],y[h]);c.lineEnd(),c.areaEnd()}g&&(m[s]=+t(d,s,u),y[s]=+e(d,s,u),c.point(r?+r(d,s,u):m[s],n?+n(d,s,u):y[s]))}if(p)return c=null,p+""||null}function s(){return j_().defined(i).curve(a).context(o)}return t="function"==typeof t?t:void 0===t?Z_:g_(+t),e="function"==typeof e?e:g_(void 0===e?0:+e),n="function"==typeof n?n:void 0===n?F_:g_(+n),u.x=function(e){return arguments.length?(t="function"==typeof e?e:g_(+e),r=null,u):t},u.x0=function(e){return arguments.length?(t="function"==typeof e?e:g_(+e),u):t},u.x1=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:g_(+t),u):r},u.y=function(t){return arguments.length?(e="function"==typeof t?t:g_(+t),n=null,u):e},u.y0=function(t){return arguments.length?(e="function"==typeof t?t:g_(+t),u):e},u.y1=function(t){return arguments.length?(n=null==t?null:"function"==typeof t?t:g_(+t),u):n},u.lineX0=u.lineY0=function(){return s().x(t).y(e)},u.lineY1=function(){return s().x(t).y(n)},u.lineX1=function(){return s().x(r).y(e)},u.defined=function(t){return arguments.length?(i="function"==typeof t?t:g_(!!t),u):i},u.curve=function(t){return arguments.length?(a=t,null!=o&&(c=a(o)),u):a},u.context=function(t){return arguments.length?(null==t?o=c=null:c=a(o=t),u):o},u}_P(3);var R_={draw:function(t,e){var n=_P(e/TP);t.moveTo(n,0),t.arc(0,0,n,0,FP)}},L_=(_P(1/3),PP(TP/10)/PP(7*TP/10));PP(FP/10),EP(FP/10),_P(3),_P(3),_P(3),_P(12);function N_(t,e){if("undefined"!=typeof document&&document.createElement){var n=document.createElement("canvas");if(n&&n.getContext)return n.width=t,n.height=e,n}return null}var B_=function(){return"undefined"!=typeof Image?Image:null},z_=/^(data:|([A-Za-z]+:)?\/\/)/,U_=/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,H_=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,W_="file://";function V_(t,e){return G_.apply(this,arguments)}function G_(){return(G_=Gm(q().mark((function t(e,n){var r,i;return q().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.sanitize(e,n);case 2:return r=t.sent,i=r.href,t.abrupt("return",r.localFile?this.file(i):this.http(i,n));case 5:case"end":return t.stop()}}),t,this)})))).apply(this,arguments)}function X_(t,e){return q_.apply(this,arguments)}function q_(){return q_=Gm(q().mark((function t(e,n){var r,i,o,a,c,l,u;return q().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=_b({},this.options,n),r=this.fileAccess,i={href:null},l=U_.test(e.replace(H_,"")),null!=e&&"string"==typeof e&&l||Ty("Sanitize failure, invalid URI: "+tx(e)),u=z_.test(e),(c=n.baseURL)&&!u&&(e.startsWith("/")||c.endsWith("/")||(e="/"+e),e=c+e),a=(o=e.startsWith(W_))||"file"===n.mode||"http"!==n.mode&&!u&&r,o?e=e.slice(W_.length):e.startsWith("//")&&("file"===n.defaultProtocol?(e=e.slice(2),a=!0):e=(n.defaultProtocol||"http")+":"+e),Object.defineProperty(i,"localFile",{value:!!a}),i.href=e,n.target&&(i.target=n.target+""),n.rel&&(i.rel=n.rel+""),"image"===n.context&&n.crossOrigin&&(i.crossOrigin=n.crossOrigin+""),t.abrupt("return",i);case 14:case"end":return t.stop()}}),t,this)}))),q_.apply(this,arguments)}function Y_(t){return t?function(e){return new Promise((function(n,r){t.readFile(e,(function(t,e){t?r(t):n(e)}))}))}:$_}function $_(){return K_.apply(this,arguments)}function K_(){return(K_=Gm(q().mark((function t(){return q().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:Ty("No file system access.");case 1:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function J_(t){return t?function(){var e=Gm(q().mark((function e(n,r){var i,o,a;return q().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=_b({},this.options.http,r),o=r&&r.response,e.next=4,t(n,i);case 4:return a=e.sent,e.abrupt("return",a.ok?wb(a[o])?a[o]():a.text():Ty(a.status+""+a.statusText));case 6:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}():Q_}function Q_(){return tD.apply(this,arguments)}function tD(){return(tD=Gm(q().mark((function t(){return q().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:Ty("No HTTP fetch method available.");case 1:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function eD(t){var e=function(e,n){var r={delimiter:t};return nD(e,n?_b(n,r):r)};return e.responseType="text",e}function nD(t,e){return e.header&&(t=e.header.map(tx).join(e.delimiter)+"\n"+t),mx(e.delimiter).parse(t+"")}function rD(t,e){var n,r=e&&e.property?Fy(e.property):Iy;return!Yy(t)||(n=t,"function"==typeof Buffer&&wb(Buffer.isBuffer)&&Buffer.isBuffer(n))?r(JSON.parse(t)):function(t,e){!qy(t)&&Ub(t)&&(t=(0,Xm.Z)(t));return e&&e.copy?JSON.parse(JSON.stringify(t)):t}(r(t),e)}nD.responseType="text",rD.responseType="json";var iD={interior:function(t,e){return t!==e},exterior:function(t,e){return t===e}};function oD(t,e){var n,r,i,o;return t=rD(t,e),e&&e.feature?(n=bx,i=e.feature):e&&e.mesh?(n=kx,i=e.mesh,o=iD[e.filter]):Ty("Missing TopoJSON feature or mesh parameter."),(r=(r=t.objects[i])?n(t,r,o):Ty("Invalid TopoJSON object: "+i))&&r.features||[r]}oD.responseType="json";eD(","),eD("\t");var aD=function(t,e){return function(n){return{options:n||{},sanitize:X_,load:V_,fileAccess:!!e,file:Y_(e),http:J_(t)}}}("undefined"!=typeof fetch&&fetch,null),cD=zw(Nw),lD=cD.right,uD=cD.left,sD=(zw(OE).center,lD),fD=n(23713),hD=n(44922);function dD(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+e*n)}}function pD(t){return+t}var vD=[0,1];function gD(t){return t}function mD(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:function(t){return function(){return t}}(isNaN(e)?NaN:.5)}function yD(t,e,n){var r=t[0],i=t[1],o=e[0],a=e[1];return ie&&(n=t,t=e,e=n),function(n){return Math.max(t,Math.min(e,n))}}(a[0],a[t-1])),r=t>2?bD:yD,i=o=null,f}function f(e){return null==e||isNaN(e=+e)?n:(i||(i=r(a.map(t),c,l)))(t(u(e)))}return f.invert=function(n){return u(e((o||(o=r(c,a.map(t),hD.Z)))(n)))},f.domain=function(t){return arguments.length?(a=Array.from(t,pD),s()):a.slice()},f.range=function(t){return arguments.length?(c=Array.from(t),s()):c.slice()},f.rangeRound=function(t){return c=Array.from(t),l=dD,s()},f.clamp=function(t){return arguments.length?(u=!!t||gD,s()):u!==gD},f.interpolate=function(t){return arguments.length?(l=t,s()):l},f.unknown=function(t){return arguments.length?(n=t,f):n},function(n,r){return t=n,e=r,s()}}function SD(){return wD()(gD,gD)}function kD(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t)}return this}function CD(t,e){switch(arguments.length){case 0:break;case 1:"function"==typeof t?this.interpolator(t):this.range(t);break;default:this.domain(t),"function"==typeof e?this.interpolator(e):this.range(e)}return this}var OD,ED=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function MD(t){if(!(e=ED.exec(t)))throw new Error("invalid format: "+t);var e;return new AD({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}function AD(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function PD(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var n,r=t.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+t.slice(n+1)]}function _D(t){return(t=PD(Math.abs(t)))?t[1]:NaN}function DD(t,e){var n=PD(t,e);if(!n)return t+"";var r=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}MD.prototype=AD.prototype,AD.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var TD={"%":function(t,e){return(100*t).toFixed(e)},b:function(t){return Math.round(t).toString(2)},c:function(t){return t+""},d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)},e:function(t,e){return t.toExponential(e)},f:function(t,e){return t.toFixed(e)},g:function(t,e){return t.toPrecision(e)},o:function(t){return Math.round(t).toString(8)},p:function(t,e){return DD(100*t,e)},r:DD,s:function(t,e){var n=PD(t,e);if(!n)return t+"";var r=n[0],i=n[1],o=i-(OD=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,a=r.length;return o===a?r:o>a?r+new Array(o-a+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+PD(t,Math.max(0,e+o-1))[0]},X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}};function ZD(t){return t}var FD,jD,ID,RD=Array.prototype.map,LD=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function ND(t){var e,n,r=void 0===t.grouping||void 0===t.thousands?ZD:(e=RD.call(t.grouping,Number),n=t.thousands+"",function(t,r){for(var i=t.length,o=[],a=0,c=e[0],l=0;i>0&&c>0&&(l+c+1>r&&(c=Math.max(1,r-l)),o.push(t.substring(i-=c,i+c)),!((l+=c+1)>r));)c=e[a=(a+1)%e.length];return o.reverse().join(n)}),i=void 0===t.currency?"":t.currency[0]+"",o=void 0===t.currency?"":t.currency[1]+"",a=void 0===t.decimal?".":t.decimal+"",c=void 0===t.numerals?ZD:function(t){return function(e){return e.replace(/[0-9]/g,(function(e){return t[+e]}))}}(RD.call(t.numerals,String)),l=void 0===t.percent?"%":t.percent+"",u=void 0===t.minus?"−":t.minus+"",s=void 0===t.nan?"NaN":t.nan+"";function f(t){var e=(t=MD(t)).fill,n=t.align,f=t.sign,h=t.symbol,d=t.zero,p=t.width,v=t.comma,g=t.precision,m=t.trim,y=t.type;"n"===y?(v=!0,y="g"):TD[y]||(void 0===g&&(g=12),m=!0,y="g"),(d||"0"===e&&"="===n)&&(d=!0,e="0",n="=");var b="$"===h?i:"#"===h&&/[boxX]/.test(y)?"0"+y.toLowerCase():"",x="$"===h?o:/[%p]/.test(y)?l:"",w=TD[y],S=/[defgprs%]/.test(y);function k(t){var i,o,l,h=b,k=x;if("c"===y)k=w(t)+k,t="";else{var C=(t=+t)<0||1/t<0;if(t=isNaN(t)?s:w(Math.abs(t),g),m&&(t=function(t){t:for(var e,n=t.length,r=1,i=-1;r0&&(i=0)}return i>0?t.slice(0,i)+t.slice(e+1):t}(t)),C&&0==+t&&"+"!==f&&(C=!1),h=(C?"("===f?f:u:"-"===f||"("===f?"":f)+h,k=("s"===y?LD[8+OD/3]:"")+k+(C&&"("===f?")":""),S)for(i=-1,o=t.length;++i(l=t.charCodeAt(i))||l>57){k=(46===l?a+t.slice(i+1):t.slice(i))+k,t=t.slice(0,i);break}}v&&!d&&(t=r(t,1/0));var O=h.length+t.length+k.length,E=O>1)+h+t+k+E.slice(O);break;default:t=E+h+t+k}return c(t)}return g=void 0===g?6:/[gprs]/.test(y)?Math.max(1,Math.min(21,g)):Math.max(0,Math.min(20,g)),k.toString=function(){return t+""},k}return{format:f,formatPrefix:function(t,e){var n=f(((t=MD(t)).type="f",t)),r=3*Math.max(-8,Math.min(8,Math.floor(_D(e)/3))),i=Math.pow(10,-r),o=LD[8+r/3];return function(t){return n(i*t)+o}}}}function BD(t,e,n,r){var i,o=Dx(t,e,n);switch((r=MD(null==r?",f":r)).type){case"s":var a=Math.max(Math.abs(t),Math.abs(e));return null!=r.precision||isNaN(i=function(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(_D(e)/3)))-_D(Math.abs(t)))}(o,a))||(r.precision=i),ID(r,a);case"":case"e":case"g":case"p":case"r":null!=r.precision||isNaN(i=function(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,_D(e)-_D(t))+1}(o,Math.max(Math.abs(t),Math.abs(e))))||(r.precision=i-("e"===r.type));break;case"f":case"%":null!=r.precision||isNaN(i=function(t){return Math.max(0,-_D(Math.abs(t)))}(o))||(r.precision=i-2*("%"===r.type))}return jD(r)}function zD(t){var e=t.domain;return t.ticks=function(t){var n=e();return Px(n[0],n[n.length-1],null==t?10:t)},t.tickFormat=function(t,n){var r=e();return BD(r[0],r[r.length-1],null==t?10:t,n)},t.nice=function(n){null==n&&(n=10);var r,i,o=e(),a=0,c=o.length-1,l=o[a],u=o[c],s=10;for(u0;){if((i=_x(l,u,n))===r)return o[a]=l,o[c]=u,e(o);if(i>0)l=Math.floor(l/i)*i,u=Math.ceil(u/i)*i;else{if(!(i<0))break;l=Math.ceil(l*i)/i,u=Math.floor(u*i)/i}r=i}return t},t}function UD(t,e){var n,r=0,i=(t=t.slice()).length-1,o=t[r],a=t[i];return a0){for(;h<=d;++h)for(s=1;sc)break;v.push(f)}}else for(;h<=d;++h)for(s=o-1;s>=1;--s)if(!((f=h>0?s/n(-h):s*n(h))c)break;v.push(f)}2*v.length68?1900:2e3),n+r[0].length):-1}function FT(t,e,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function jT(t,e,n){var r=xT.exec(e.slice(n,n+1));return r?(t.q=3*r[0]-3,n+r[0].length):-1}function IT(t,e,n){var r=xT.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function RT(t,e,n){var r=xT.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function LT(t,e,n){var r=xT.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function NT(t,e,n){var r=xT.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function BT(t,e,n){var r=xT.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function zT(t,e,n){var r=xT.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function UT(t,e,n){var r=xT.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function HT(t,e,n){var r=xT.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function WT(t,e,n){var r=wT.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function VT(t,e,n){var r=xT.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function GT(t,e,n){var r=xT.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function XT(t,e){return kT(t.getDate(),e,2)}function qT(t,e){return kT(t.getHours(),e,2)}function YT(t,e){return kT(t.getHours()%12||12,e,2)}function $T(t,e){return kT(1+rw.count(Sw(t),t),e,3)}function KT(t,e){return kT(t.getMilliseconds(),e,3)}function JT(t,e){return KT(t,e)+"000"}function QT(t,e){return kT(t.getMonth()+1,e,2)}function tZ(t,e){return kT(t.getMinutes(),e,2)}function eZ(t,e){return kT(t.getSeconds(),e,2)}function nZ(t){var e=t.getDay();return 0===e?7:e}function rZ(t,e){return kT(cw.count(Sw(t)-1,t),e,2)}function iZ(t){var e=t.getDay();return e>=4||0===e?fw(t):fw.ceil(t)}function oZ(t,e){return t=iZ(t),kT(fw.count(Sw(t),t)+(4===Sw(t).getDay()),e,2)}function aZ(t){return t.getDay()}function cZ(t,e){return kT(lw.count(Sw(t)-1,t),e,2)}function lZ(t,e){return kT(t.getFullYear()%100,e,2)}function uZ(t,e){return kT((t=iZ(t)).getFullYear()%100,e,2)}function sZ(t,e){return kT(t.getFullYear()%1e4,e,4)}function fZ(t,e){var n=t.getDay();return kT((t=n>=4||0===n?fw(t):fw.ceil(t)).getFullYear()%1e4,e,4)}function hZ(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+kT(e/60|0,"0",2)+kT(e%60,"0",2)}function dZ(t,e){return kT(t.getUTCDate(),e,2)}function pZ(t,e){return kT(t.getUTCHours(),e,2)}function vZ(t,e){return kT(t.getUTCHours()%12||12,e,2)}function gZ(t,e){return kT(1+iw.count(kw(t),t),e,3)}function mZ(t,e){return kT(t.getUTCMilliseconds(),e,3)}function yZ(t,e){return mZ(t,e)+"000"}function bZ(t,e){return kT(t.getUTCMonth()+1,e,2)}function xZ(t,e){return kT(t.getUTCMinutes(),e,2)}function wZ(t,e){return kT(t.getUTCSeconds(),e,2)}function SZ(t){var e=t.getUTCDay();return 0===e?7:e}function kZ(t,e){return kT(vw.count(kw(t)-1,t),e,2)}function CZ(t){var e=t.getUTCDay();return e>=4||0===e?bw(t):bw.ceil(t)}function OZ(t,e){return t=CZ(t),kT(bw.count(kw(t),t)+(4===kw(t).getUTCDay()),e,2)}function EZ(t){return t.getUTCDay()}function MZ(t,e){return kT(gw.count(kw(t)-1,t),e,2)}function AZ(t,e){return kT(t.getUTCFullYear()%100,e,2)}function PZ(t,e){return kT((t=CZ(t)).getUTCFullYear()%100,e,2)}function _Z(t,e){return kT(t.getUTCFullYear()%1e4,e,4)}function DZ(t,e){var n=t.getUTCDay();return kT((t=n>=4||0===n?bw(t):bw.ceil(t)).getUTCFullYear()%1e4,e,4)}function TZ(){return"+0000"}function ZZ(){return"%"}function FZ(t){return+t}function jZ(t){return Math.floor(+t/1e3)}function IZ(t){return new Date(t)}function RZ(t){return t instanceof Date?+t:+new Date(+t)}function LZ(t,e,n,r,i,o,a,c,l,u){var s=SD(),f=s.invert,h=s.domain,d=u(".%L"),p=u(":%S"),v=u("%I:%M"),g=u("%I %p"),m=u("%a %d"),y=u("%b %d"),b=u("%B"),x=u("%Y");function w(t){return(l(t)=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function XZ(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:FZ,s:jZ,S:eZ,u:nZ,U:rZ,V:oZ,w:aZ,W:cZ,x:null,X:null,y:lZ,Y:sZ,Z:hZ,"%":ZZ},x={a:function(t){return a[t.getUTCDay()]},A:function(t){return o[t.getUTCDay()]},b:function(t){return l[t.getUTCMonth()]},B:function(t){return c[t.getUTCMonth()]},c:null,d:dZ,e:dZ,f:yZ,g:PZ,G:DZ,H:pZ,I:vZ,j:gZ,L:mZ,m:bZ,M:xZ,p:function(t){return i[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:FZ,s:jZ,S:wZ,u:SZ,U:kZ,V:OZ,w:EZ,W:MZ,x:null,X:null,y:AZ,Y:_Z,Z:TZ,"%":ZZ},w={a:function(t,e,n){var r=d.exec(e.slice(n));return r?(t.w=p.get(r[0].toLowerCase()),n+r[0].length):-1},A:function(t,e,n){var r=f.exec(e.slice(n));return r?(t.w=h.get(r[0].toLowerCase()),n+r[0].length):-1},b:function(t,e,n){var r=m.exec(e.slice(n));return r?(t.m=y.get(r[0].toLowerCase()),n+r[0].length):-1},B:function(t,e,n){var r=v.exec(e.slice(n));return r?(t.m=g.get(r[0].toLowerCase()),n+r[0].length):-1},c:function(t,n,r){return C(t,e,n,r)},d:RT,e:RT,f:HT,g:ZT,G:TT,H:NT,I:NT,j:LT,L:UT,m:IT,M:BT,p:function(t,e,n){var r=u.exec(e.slice(n));return r?(t.p=s.get(r[0].toLowerCase()),n+r[0].length):-1},q:jT,Q:VT,s:GT,S:zT,u:AT,U:PT,V:_T,w:MT,W:DT,x:function(t,e,r){return C(t,n,e,r)},X:function(t,e,n){return C(t,r,e,n)},y:ZT,Y:TT,Z:FT,"%":WT};function S(t,e){return function(n){var r,i,o,a=[],c=-1,l=0,u=t.length;for(n instanceof Date||(n=new Date(+n));++c53)return null;"w"in o||(o.w=1),"Z"in o?(i=(r=pT(vT(o.y,0,1))).getUTCDay(),r=i>4||0===i?gw.ceil(r):gw(r),r=iw.offset(r,7*(o.V-1)),o.y=r.getUTCFullYear(),o.m=r.getUTCMonth(),o.d=r.getUTCDate()+(o.w+6)%7):(i=(r=dT(vT(o.y,0,1))).getDay(),r=i>4||0===i?lw.ceil(r):lw(r),r=rw.offset(r,7*(o.V-1)),o.y=r.getFullYear(),o.m=r.getMonth(),o.d=r.getDate()+(o.w+6)%7)}else("W"in o||"U"in o)&&("w"in o||(o.w="u"in o?o.u%7:"W"in o?1:0),i="Z"in o?pT(vT(o.y,0,1)).getUTCDay():dT(vT(o.y,0,1)).getDay(),o.m=0,o.d="W"in o?(o.w+6)%7+7*o.W-(i+5)%7:o.w+7*o.U-(i+6)%7);return"Z"in o?(o.H+=o.Z/100|0,o.M+=o.Z%100,pT(o)):dT(o)}}function C(t,e,n,r){for(var i,o,a=0,c=e.length,l=n.length;a=l)return-1;if(37===(i=e.charCodeAt(a++))){if(i=e.charAt(a++),!(o=w[i in bT?e.charAt(a++):i])||(r=o(t,n,r))<0)return-1}else if(i!=n.charCodeAt(r++))return-1}return r}return b.x=S(n,b),b.X=S(r,b),b.c=S(e,b),x.x=S(n,x),x.X=S(r,x),x.c=S(e,x),{format:function(t){var e=S(t+="",b);return e.toString=function(){return t},e},parse:function(t){var e=k(t+="",!1);return e.toString=function(){return t},e},utcFormat:function(t){var e=S(t+="",x);return e.toString=function(){return t},e},utcParse:function(t){var e=k(t+="",!0);return e.toString=function(){return t},e}}}(t),mT=gT.format,gT.parse,yT=gT.utcFormat,gT.utcParse}({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});var YZ=n(94785);function $Z(t,e,n){return $Z=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(F2t){return!1}}()?Reflect.construct.bind():function(t,e,n){var r=[null];r.push.apply(r,e);var i=new(Function.bind.apply(t,r));return n&&(0,YZ.Z)(i,n.prototype),i},$Z.apply(null,arguments)}function KZ(t){var e="function"==typeof Map?new Map:void 0;return KZ=function(t){if(null===t||(n=t,-1===Function.toString.call(n).indexOf("[native code]")))return t;var n;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,r)}function r(){return $Z(t,arguments,(0,Um.Z)(this).constructor)}return r.prototype=Object.create(t.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),(0,YZ.Z)(r,t)},KZ(t)}function JZ(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return QZ(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return QZ(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function QZ(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n1&&void 0!==arguments[1]?arguments[1]:aF;if((0,Rm.Z)(this,n),r=e.call(this),Object.defineProperties((0,Nm.Z)(r),{_intern:{value:new Map},_key:{value:i}}),null!=t){var o,a=JZ(t);try{for(a.s();!(o=a.n()).done;){var c=(0,G.Z)(o.value,2),l=c[0],u=c[1];r.set(l,u)}}catch(s){a.e(s)}finally{a.f()}}return r}return(0,Lm.Z)(n,[{key:"get",value:function(t){return qZ((0,Um.Z)(n.prototype),"get",this).call(this,rF(this,t))}},{key:"has",value:function(t){return qZ((0,Um.Z)(n.prototype),"has",this).call(this,rF(this,t))}},{key:"set",value:function(t,e){return qZ((0,Um.Z)(n.prototype),"set",this).call(this,iF(this,t),e)}},{key:"delete",value:function(t){return qZ((0,Um.Z)(n.prototype),"delete",this).call(this,oF(this,t))}}]),n}(KZ(Map)),nF=function(t){(0,Bm.Z)(n,t);var e=tF(n);function n(t){var r,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:aF;if((0,Rm.Z)(this,n),r=e.call(this),Object.defineProperties((0,Nm.Z)(r),{_intern:{value:new Map},_key:{value:i}}),null!=t){var o,a=JZ(t);try{for(a.s();!(o=a.n()).done;){var c=o.value;r.add(c)}}catch(l){a.e(l)}finally{a.f()}}return r}return(0,Lm.Z)(n,[{key:"has",value:function(t){return qZ((0,Um.Z)(n.prototype),"has",this).call(this,rF(this,t))}},{key:"add",value:function(t){return qZ((0,Um.Z)(n.prototype),"add",this).call(this,iF(this,t))}},{key:"delete",value:function(t){return qZ((0,Um.Z)(n.prototype),"delete",this).call(this,oF(this,t))}}]),n}(KZ(Set));function rF(t,e){var n=t._intern,r=(0,t._key)(e);return n.has(r)?n.get(r):e}function iF(t,e){var n=t._intern,r=(0,t._key)(e);return n.has(r)?n.get(r):(n.set(r,e),e)}function oF(t,e){var n=t._intern,r=(0,t._key)(e);return n.has(r)&&(e=n.get(r),n.delete(r)),e}function aF(t){return null!==t&&"object"==typeof t?t.valueOf():t}function cF(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return lF(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return lF(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function lF(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n180?e+=360:e-t>180&&(t+=360),o.push({i:n.push(i(n)+"rotate(",null,r)-2,x:(0,hD.Z)(t,e)})):e&&n.push(i(n)+"rotate("+e+r)}(o.rotate,a.rotate,c,l),function(t,e,n,o){t!==e?o.push({i:n.push(i(n)+"skewX(",null,r)-2,x:(0,hD.Z)(t,e)}):e&&n.push(i(n)+"skewX("+e+r)}(o.skewX,a.skewX,c,l),function(t,e,n,r,o,a){if(t!==n||e!==r){var c=o.push(i(o)+"scale(",null,",",null,")");a.push({i:c-4,x:(0,hD.Z)(t,n)},{i:c-2,x:(0,hD.Z)(e,r)})}else 1===n&&1===r||o.push(i(o)+"scale("+n+","+r+")")}(o.scaleX,o.scaleY,a.scaleX,a.scaleY,c,l),o=a=null,function(t){for(var e,n=-1,r=l.length;++nWF?Math.pow(t,1/3):t/HF+zF}function YF(t){return t>UF?t*t*t:HF*(t-zF)}function $F(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function KF(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function JF(t){if(t instanceof tj)return new tj(t.h,t.c,t.l,t.opacity);if(t instanceof XF||(t=VF(t)),0===t.a&&0===t.b)return new tj(NaN,00?r:1:0}var kj="linear",Cj="log",Oj="pow",Ej="sqrt",Mj="symlog",Aj="time",Pj="utc",_j="sequential",Dj="diverging",Tj="quantile",Zj="quantize",Fj="threshold",jj="ordinal",Ij="point",Rj="band",Lj="bin-ordinal",Nj="continuous",Bj="discrete",zj="discretizing",Uj="interpolating",Hj="temporal";function Wj(){var t,e,n=sF().unknown(void 0),r=n.domain,i=n.range,o=[0,1],a=!1,c=0,l=0,u=.5;function s(){var n=r().length,s=o[1]o[1-l])))return n=Math.max(0,lD(u,f)-1),a=f===h?n:lD(u,h)-1,f-u[n]>e+1e-10&&++n,l&&(c=n,n=s-a,a=s-c),n>a?void 0:r().slice(n,a+1)}},n.invert=function(t){var e=n.invertRange([t,t]);return e?e[0]:e},n.copy=function(){return Wj().domain(r()).range(o).round(a).paddingInner(c).paddingOuter(l).align(u)},s()}function Vj(t){var e=t.copy;return t.padding=t.paddingOuter,delete t.paddingInner,t.copy=function(){return Vj(e())},t}var Gj=Array.prototype.map;var Xj=Array.prototype.slice;var qj=new Map,Yj=Symbol("vega_scale");function $j(t){return t[Yj]=!0,t}function Kj(t,e,n){return arguments.length>1?(qj.set(t,function(t,e,n){var r=function(){var n=e();return n.invertRange||(n.invertRange=n.invert?function(t){return function(e){var n,r=e[0],i=e[1];return i=c&&a[i]<=l&&(u<0&&(u=i),n=i);if(!(u<0))return c=t.invertExtent(a[u]),l=t.invertExtent(a[n]),[void 0===c[0]?c[1]:c[0],void 0===l[1]?l[0]:l[1]]}}(n):void 0),n.type=t,$j(n)};return r.metadata=ox(bb(n)),r}(t,e,n)),this):Jj(t)?qj.get(t):void 0}function Jj(t){return qj.has(t)}function Qj(t,e){var n=qj.get(t);return n&&n.metadata[e]}function tI(t){return Qj(t,Nj)}function eI(t){return Qj(t,Bj)}function nI(t){return Qj(t,zj)}function rI(t){return Qj(t,Cj)}function iI(t){return Qj(t,Uj)}function oI(t){return Qj(t,Tj)}Kj("identity",(function t(e){var n;function r(t){return null==t||isNaN(t=+t)?n:t}return r.invert=r,r.domain=r.range=function(t){return arguments.length?(e=Array.from(t,pD),r):e.slice()},r.unknown=function(t){return arguments.length?(n=t,r):n},r.copy=function(){return t(e).unknown(n)},e=arguments.length?Array.from(e,pD):[0,1],zD(r)})),Kj(kj,(function t(){var e=SD();return e.copy=function(){return xD(e,t())},kD.apply(e,arguments),zD(e)}),Nj),Kj(Cj,(function t(){var e=YD(wD()).domain([1,10]);return e.copy=function(){return xD(e,t()).base(e.base())},kD.apply(e,arguments),e}),[Nj,Cj]),Kj(Oj,tT,Nj),Kj(Ej,(function(){return tT.apply(null,arguments).exponent(.5)}),Nj),Kj(Mj,(function t(){var e=rT(wD());return e.copy=function(){return xD(e,t()).constant(e.constant())},kD.apply(e,arguments)}),Nj),Kj(Aj,(function(){return kD.apply(LZ(fT,hT,Sw,Cw,cw,rw,Ew,Aw,_w,mT).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}),[Nj,Hj]),Kj(Pj,(function(){return kD.apply(LZ(cT,lT,kw,Ow,vw,iw,Mw,Pw,_w,yT).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}),[Nj,Hj]),Kj(_j,zZ,[Nj,Uj]),Kj("".concat(_j,"-").concat(kj),zZ,[Nj,Uj]),Kj("".concat(_j,"-").concat(Cj),(function t(){var e=YD(NZ()).domain([1,10]);return e.copy=function(){return BZ(e,t()).base(e.base())},CD.apply(e,arguments)}),[Nj,Uj,Cj]),Kj("".concat(_j,"-").concat(Oj),UZ,[Nj,Uj]),Kj("".concat(_j,"-").concat(Ej),(function(){return UZ.apply(null,arguments).exponent(.5)}),[Nj,Uj]),Kj("".concat(_j,"-").concat(Mj),(function t(){var e=rT(NZ());return e.copy=function(){return BZ(e,t()).constant(e.constant())},CD.apply(e,arguments)}),[Nj,Uj]),Kj("".concat(Dj,"-").concat(kj),(function t(){var e=zD(WZ()(gD));return e.copy=function(){return BZ(e,t())},CD.apply(e,arguments)}),[Nj,Uj]),Kj("".concat(Dj,"-").concat(Cj),(function t(){var e=YD(WZ()).domain([.1,1,10]);return e.copy=function(){return BZ(e,t()).base(e.base())},CD.apply(e,arguments)}),[Nj,Uj,Cj]),Kj("".concat(Dj,"-").concat(Oj),VZ,[Nj,Uj]),Kj("".concat(Dj,"-").concat(Ej),(function(){return VZ.apply(null,arguments).exponent(.5)}),[Nj,Uj]),Kj("".concat(Dj,"-").concat(Mj),(function t(){var e=rT(WZ());return e.copy=function(){return BZ(e,t()).constant(e.constant())},CD.apply(e,arguments)}),[Nj,Uj]),Kj(Tj,(function t(){var e,n=[],r=[],i=[];function o(){var t=0,e=Math.max(1,r.length);for(i=new Array(e-1);++t0?i[e-1]:n[0],e=i?[o[i-1],r]:[o[e-1],o[e]]},c.unknown=function(t){return arguments.length?(e=t,c):c},c.thresholds=function(){return o.slice()},c.copy=function(){return t().domain([n,r]).range(a).unknown(e)},kD.apply(zD(c),arguments)}),zj),Kj(Fj,(function t(){var e,n=[.5],r=[0,1],i=1;function o(t){return null!=t&&t<=t?r[sD(n,t,0,i)]:e}return o.domain=function(t){return arguments.length?(n=Array.from(t),i=Math.min(n.length,r.length-1),o):n.slice()},o.range=function(t){return arguments.length?(r=Array.from(t),i=Math.min(n.length,r.length-1),o):r.slice()},o.invertExtent=function(t){var e=r.indexOf(t);return[n[e-1],n[e]]},o.unknown=function(t){return arguments.length?(e=t,o):e},o.copy=function(){return t().domain(n).range(r).unknown(e)},kD.apply(o,arguments)}),zj),Kj(Lj,(function t(){var e=[],n=[];function r(t){return null==t||t!=t?void 0:n[(sD(e,t)-1)%n.length]}return r.domain=function(t){return arguments.length?(e=function(t){return Gj.call(t,eb)}(t),r):e.slice()},r.range=function(t){return arguments.length?(n=Xj.call(t),r):n.slice()},r.tickFormat=function(t,n){return BD(e[0],tb(e),null==t?10:t,n)},r.copy=function(){return t().domain(r.domain()).range(r.range())},r}),[Bj,zj]),Kj(jj,sF,Bj),Kj(Rj,Wj,Bj),Kj(Ij,(function(){return Vj(Wj().paddingInner(1))}),Bj);var aI=["clamp","base","constant","exponent"];function cI(t,e){var n=e[0],r=tb(e)-n;return function(e){return t(n+e*r)}}function lI(t,e,n){return HZ(fI(e||"rgb",n),t)}function uI(t,e){for(var n=new Array(e),r=e+1,i=0;i1?(pI[t]=e,this):pI[t]}dI({category10:"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf",category20:"1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5",category20b:"393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6",category20c:"3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9",tableau10:"4c78a8f58518e4575672b7b254a24beeca3bb279a2ff9da69d755dbab0ac",tableau20:"4c78a89ecae9f58518ffbf7954a24b88d27ab79a20f2cf5b43989483bcb6e45756ff9d9879706ebab0acd67195fcbfd2b279a2d6a5c99e765fd8b5a5",accent:"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666",dark2:"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666",paired:"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928",pastel1:"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2",pastel2:"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc",set1:"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999",set2:"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3",set3:"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f"},hI),dI({blues:"cfe1f2bed8eca8cee58fc1de74b2d75ba3cf4592c63181bd206fb2125ca40a4a90",greens:"d3eecdc0e6baabdda594d3917bc77d60ba6c46ab5e329a512089430e7735036429",greys:"e2e2e2d4d4d4c4c4c4b1b1b19d9d9d8888887575756262624d4d4d3535351e1e1e",oranges:"fdd8b3fdc998fdb87bfda55efc9244f87f2cf06b18e4580bd14904b93d029f3303",purples:"e2e1efd4d4e8c4c5e0b4b3d6a3a0cc928ec3827cb97566ae684ea25c3696501f8c",reds:"fdc9b4fcb49afc9e80fc8767fa7051f6573fec3f2fdc2a25c81b1db21218970b13",blueGreen:"d5efedc1e8e0a7ddd18bd2be70c6a958ba9144ad77319c5d2089460e7736036429",bluePurple:"ccddecbad0e4a8c2dd9ab0d4919cc98d85be8b6db28a55a6873c99822287730f71",greenBlue:"d3eecec5e8c3b1e1bb9bd8bb82cec269c2ca51b2cd3c9fc7288abd1675b10b60a1",orangeRed:"fddcaffdcf9bfdc18afdad77fb9562f67d53ee6545e24932d32d1ebf130da70403",purpleBlue:"dbdaebc8cee4b1c3de97b7d87bacd15b9fc93a90c01e7fb70b70ab056199045281",purpleBlueGreen:"dbd8eac8cee4b0c3de93b7d872acd1549fc83892bb1c88a3097f8702736b016353",purpleRed:"dcc9e2d3b3d7ce9eccd186c0da6bb2e14da0e23189d91e6fc61159ab07498f023a",redPurple:"fccfccfcbec0faa9b8f98faff571a5ec539ddb3695c41b8aa908808d0179700174",yellowGreen:"e4f4acd1eca0b9e2949ed68880c97c62bb6e47aa5e3297502083440e723b036034",yellowOrangeBrown:"feeaa1fedd84fecc63feb746fca031f68921eb7215db5e0bc54c05ab3d038f3204",yellowOrangeRed:"fee087fed16ffebd59fea849fd903efc7335f9522bee3423de1b20ca0b22af0225",blueOrange:"134b852f78b35da2cb9dcae1d2e5eff2f0ebfce0bafbbf74e8932fc5690d994a07",brownBlueGreen:"704108a0651ac79548e3c78af3e6c6eef1eac9e9e48ed1c74da79e187a72025147",purpleGreen:"5b1667834792a67fb6c9aed3e6d6e8eff0efd9efd5aedda971bb75368e490e5e29",purpleOrange:"4114696647968f83b7b9b4d6dadbebf3eeeafce0bafbbf74e8932fc5690d994a07",redBlue:"8c0d25bf363adf745ef4ae91fbdbc9f2efeed2e5ef9dcae15da2cb2f78b3134b85",redGrey:"8c0d25bf363adf745ef4ae91fcdccbfaf4f1e2e2e2c0c0c0969696646464343434",yellowGreenBlue:"eff9bddbf1b4bde5b594d5b969c5be45b4c22c9ec02182b82163aa23479c1c3185",redYellowBlue:"a50026d4322cf16e43fcac64fedd90faf8c1dcf1ecabd6e875abd04a74b4313695",redYellowGreen:"a50026d4322cf16e43fcac63fedd8df9f7aed7ee8ea4d86e64bc6122964f006837",pinkYellowGreen:"8e0152c0267edd72adf0b3d6faddedf5f3efe1f2cab6de8780bb474f9125276419",spectral:"9e0142d13c4bf0704afcac63fedd8dfbf8b0e0f3a1a9dda269bda94288b55e4fa2",viridis:"440154470e61481a6c482575472f7d443a834144873d4e8a39568c35608d31688e2d708e2a788e27818e23888e21918d1f988b1fa08822a8842ab07f35b77943bf7154c56866cc5d7ad1518fd744a5db36bcdf27d2e21be9e51afde725",magma:"0000040404130b0924150e3720114b2c11603b0f704a107957157e651a80721f817f24828c29819a2e80a8327db6377ac43c75d1426fde4968e95462f1605df76f5cfa7f5efc8f65fe9f6dfeaf78febf84fece91fddea0fcedaffcfdbf",inferno:"0000040403130c0826170c3b240c4f330a5f420a68500d6c5d126e6b176e781c6d86216b932667a12b62ae305cbb3755c73e4cd24644dd513ae65c30ed6925f3771af8850ffb9506fca50afcb519fac62df6d645f2e661f3f484fcffa4",plasma:"0d088723069033059742039d5002a25d01a66a00a87801a88405a7900da49c179ea72198b12a90ba3488c33d80cb4779d35171da5a69e16462e76e5bed7953f2834cf68f44fa9a3dfca636fdb32ffec029fcce25f9dc24f5ea27f0f921",cividis:"00205100235800265d002961012b65042e670831690d346b11366c16396d1c3c6e213f6e26426e2c456e31476e374a6e3c4d6e42506e47536d4c566d51586e555b6e5a5e6e5e616e62646f66676f6a6a706e6d717270717573727976737c79747f7c75827f758682768985778c8877908b78938e789691789a94789e9778a19b78a59e77a9a177aea575b2a874b6ab73bbaf71c0b26fc5b66dc9b96acebd68d3c065d8c462ddc85fe2cb5ce7cf58ebd355f0d652f3da4ff7de4cfae249fce647",rainbow:"6e40aa883eb1a43db3bf3cafd83fa4ee4395fe4b83ff576eff6659ff7847ff8c38f3a130e2b72fcfcc36bee044aff05b8ff4576ff65b52f6673af27828ea8d1ddfa319d0b81cbecb23abd82f96e03d82e14c6edb5a5dd0664dbf6e40aa",sinebow:"ff4040fc582af47218e78d0bd5a703bfbf00a7d5038de70b72f41858fc2a40ff402afc5818f4720be78d03d5a700bfbf03a7d50b8de71872f42a58fc4040ff582afc7218f48d0be7a703d5bf00bfd503a7e70b8df41872fc2a58ff4040",turbo:"23171b32204a3e2a71453493493eae4b49c54a53d7485ee44569ee4074f53c7ff8378af93295f72e9ff42ba9ef28b3e926bce125c5d925cdcf27d5c629dcbc2de3b232e9a738ee9d3ff39347f68950f9805afc7765fd6e70fe667cfd5e88fc5795fb51a1f84badf545b9f140c5ec3cd0e637dae034e4d931ecd12ef4c92bfac029ffb626ffad24ffa223ff9821ff8d1fff821dff771cfd6c1af76118f05616e84b14df4111d5380fcb2f0dc0260ab61f07ac1805a313029b0f00950c00910b00",browns:"eedbbdecca96e9b97ae4a865dc9856d18954c7784cc0673fb85536ad44339f3632",tealBlues:"bce4d89dd3d181c3cb65b3c245a2b9368fae347da0306a932c5985",teals:"bbdfdfa2d4d58ac9c975bcbb61b0af4da5a43799982b8b8c1e7f7f127273006667",warmGreys:"dcd4d0cec5c1c0b8b4b3aaa7a59c9998908c8b827f7e7673726866665c5a59504e",goldGreen:"f4d166d5ca60b6c35c98bb597cb25760a6564b9c533f8f4f33834a257740146c36",goldOrange:"f4d166f8be5cf8aa4cf5983bf3852aef701be2621fd65322c54923b142239e3a26",goldRed:"f4d166f6be59f9aa51fc964ef6834bee734ae56249db5247cf4244c43141b71d3e",lightGreyRed:"efe9e6e1dad7d5cbc8c8bdb9bbaea9cd967ddc7b43e15f19df4011dc000b",lightGreyTeal:"e4eaead6dcddc8ced2b7c2c7a6b4bc64b0bf22a6c32295c11f85be1876bc",lightMulti:"e0f1f2c4e9d0b0de9fd0e181f6e072f6c053f3993ef77440ef4a3c",lightOrange:"f2e7daf7d5baf9c499fab184fa9c73f68967ef7860e8645bde515bd43d5b",lightTealBlue:"e3e9e0c0dccf9aceca7abfc859afc0389fb9328dad2f7ca0276b95255988",darkBlue:"3232322d46681a5c930074af008cbf05a7ce25c0dd38daed50f3faffffff",darkGold:"3c3c3c584b37725e348c7631ae8b2bcfa424ecc31ef9de30fff184ffffff",darkGreen:"3a3a3a215748006f4d048942489e4276b340a6c63dd2d836ffeb2cffffaa",darkMulti:"3737371f5287197d8c29a86995ce3fffe800ffffff",darkRed:"3434347036339e3c38cc4037e75d1eec8620eeab29f0ce32ffeb2c"},(function(t){return lI(hI(t))}));var gI="symbol",mI="discrete",yI=function(t){return qy(t)?t.map((function(t){return String(t)})):String(t)},bI=function(t,e){return t[1]-e[1]},xI=function(t,e){return e[1]-t[1]};function wI(t,e,n){var r;return Hb(e)&&(t.bins&&(e=Math.max(e,t.bins.length)),null!=n&&(e=Math.min(e,Math.floor(Qb(t.domain())/n||1)))),Yy(e)&&(r=e.step,e=e.interval),Vb(e)&&(e=t.type===Aj?PS(e):t.type==Pj?_S(e):Ty("Only time and utc scales accept interval strings."),r&&(e=e.every(r))),e}function SI(t,e,n){var r=t.range(),i=r[0],o=tb(r),a=bI;if(i>o&&(r=o,o=i,i=r,a=xI),i=Math.floor(i),o=Math.ceil(o),e=e.map((function(e){return[e,t(e)]})).filter((function(t){return i<=t[1]&&t[1]<=o})).sort(a).map((function(t){return t[0]})),n>0&&e.length>1){for(var c=[e[0],tb(e)];e.length>n&&e.length>=3;)e=e.filter((function(t,e){return!(e%2)}));e.length<3&&(e=c)}return e}function kI(t,e){return t.bins?SI(t,t.bins):t.ticks?t.ticks(e):t.domain()}function CI(t,e,n,r,i,o){var a=e.type,c=yI;if(a===Aj||i===Aj)c=t.timeFormat(r);else if(a===Pj||i===Pj)c=t.utcFormat(r);else if(rI(a)){var l=t.formatFloat(r);if(o||e.bins)c=l;else{var u=OI(e,n,!1);c=function(t){return u(t)?l(t):""}}}else if(e.tickFormat){var s=e.domain();c=t.formatSpan(s[0],s[s.length-1],n,r)}else r&&(c=t.format(r));return c}function OI(t,e,n){var r=kI(t,e),i=t.base(),o=Math.log(i),a=Math.max(1,i*e/r.length),c=function(t){var e=t/Math.pow(i,Math.round(Math.log(t)/o));return e*i1?i[1]-i[0]:i[0];for(r=1;rr?c.slice(0,r-2).map(i).join(", ")+", ending with "+c.slice(-1).map(i):c.map(i).join(", ");return"".concat(l," value").concat(1===l?"":"s",": ").concat(u)}var s=e.domain();return"values from ".concat(i(s[0])," to ").concat(i(tb(s)))}function LI(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return NI(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return NI(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function NI(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n1&&(n*=v=Math.sqrt(v),r*=v);var g=h/n,m=f/n,y=-f/r,b=h/r,x=g*c+m*l,w=y*c+b*l,S=g*t+m*e,k=y*t+b*e,C=1/((S-x)*(S-x)+(k-w)*(k-w))-.25;C<0&&(C=0);var O=Math.sqrt(C);o==i&&(O=-O);var E=.5*(x+S)-O*(k-w),M=.5*(w+k)+O*(S-x),A=Math.atan2(w-M,x-E),P=Math.atan2(k-M,S-E)-A;P<0&&1===o?P+=nR:P>0&&0===o&&(P-=nR);for(var _=Math.ceil(Math.abs(P/(eR+.001))),D=[],T=0;T<_;++T){var Z=A+T*P/_,F=A+(T+1)*P/_;D[T]=[E,M,Z,F,n,r,f,h]}return iR[u]=D}(r[5],r[6],r[0],r[1],r[3],r[4],r[2],e,n),o=0;od;if(c||(c=u=l()),hDP)if(v>FP-DP)c.moveTo(h*EP(d),h*PP(d)),c.arc(0,0,h,d,p,!g),f>DP&&(c.moveTo(f*EP(p),f*PP(p)),c.arc(0,0,f,p,d,g));else{var m,y,b=d,x=p,w=d,S=p,k=v,C=v,O=a.apply(this,arguments)/2,E=O>DP&&(r?+r.apply(this,arguments):_P(f*f+h*h)),M=AP(CP(h-f)/2,+n.apply(this,arguments)),A=M,P=M;if(E>DP){var _=jP(E/f*PP(O)),D=jP(E/h*PP(O));(k-=2*_)>DP?(w+=_*=g?1:-1,S-=_):(k=0,w=S=(d+p)/2),(C-=2*D)>DP?(b+=D*=g?1:-1,x-=D):(C=0,b=x=(d+p)/2)}var T=h*EP(b),Z=h*PP(b),F=f*EP(S),j=f*PP(S);if(M>DP){var I,R=h*EP(x),L=h*PP(x),N=f*EP(w),B=f*PP(w);if(v1?0:t<-1?TP:Math.acos(t)}((z*H+U*W)/(_P(z*z+U*U)*_P(H*H+W*W)))/2),G=_P(I[0]*I[0]+I[1]*I[1]);A=AP(M,(f-G)/(V-1)),P=AP(M,(h-G)/(V+1))}else A=P=0}C>DP?P>DP?(m=D_(N,B,T,Z,h,P,g),y=D_(R,L,F,j,h,P,g),c.moveTo(m.cx+m.x01,m.cy+m.y01),PDP&&k>DP?A>DP?(m=D_(F,j,R,L,f,-A,g),y=D_(T,Z,N,B,f,-A,g),c.lineTo(m.cx+m.x01,m.cy+m.y01),Athis.x2&&(this.x2=t),e>this.y2&&(this.y2=e),this},expand:function(t){return this.x1-=t,this.y1-=t,this.x2+=t,this.y2+=t,this},round:function(){return this.x1=Math.floor(this.x1),this.y1=Math.floor(this.y1),this.x2=Math.ceil(this.x2),this.y2=Math.ceil(this.y2),this},scale:function(t){return this.x1*=t,this.y1*=t,this.x2*=t,this.y2*=t,this},translate:function(t,e){return this.x1+=t,this.x2+=t,this.y1+=e,this.y2+=e,this},rotate:function(t,e,n){var r=this.rotatedPoints(t,e,n);return this.clear().add(r[0],r[1]).add(r[2],r[3]).add(r[4],r[5]).add(r[6],r[7])},rotatedPoints:function(t,e,n){var r=this.x1,i=this.y1,o=this.x2,a=this.y2,c=Math.cos(t),l=Math.sin(t),u=e-e*c+n*l,s=n-e*l-n*c;return[c*r-l*i+u,l*r+c*i+s,c*r-l*a+u,l*r+c*a+s,c*o-l*i+u,l*o+c*i+s,c*o-l*a+u,l*o+c*a+s]},union:function(t){return t.x1this.x2&&(this.x2=t.x2),t.y2>this.y2&&(this.y2=t.y2),this},intersect:function(t){return t.x1>this.x1&&(this.x1=t.x1),t.y1>this.y1&&(this.y1=t.y1),t.x2=t.x2&&this.y1<=t.y1&&this.y2>=t.y2},alignsWith:function(t){return t&&(this.x1==t.x1||this.x2==t.x2||this.y1==t.y1||this.y2==t.y2)},intersects:function(t){return t&&!(this.x2t.x2||this.y2t.y2)},contains:function(t,e){return!(tthis.x2||ethis.y2)},width:function(){return this.x2-this.x1},height:function(){return this.y2-this.y1}},Lb(HR,UR),WR.prototype={pending:function(){return this._pending},sanitizeURL:function(t){var e=this;return VR(e),e._loader.sanitize(t,{context:"href"}).then((function(t){return GR(e),t})).catch((function(){return GR(e),null}))},loadImage:function(t){var e=this,n=B_();return VR(e),e._loader.sanitize(t,{context:"image"}).then((function(t){var r=t.href;if(!r||!n)throw{url:r};var i=new n,o=Fb(t,"crossOrigin")?t.crossOrigin:"anonymous";return null!=o&&(i.crossOrigin=o),i.onload=function(){return GR(e)},i.onerror=function(){return GR(e)},i.src=r,i})).catch((function(t){return GR(e),{complete:!1,width:0,height:0,src:t&&t.url||""}}))},ready:function(){var t=this;return new Promise((function(e){!function n(r){t.pending()?setTimeout((function(){n(!0)}),10):e(r)}(!1)}))}};var qR,YR,$R,KR,JR,QR,tL,eL,nL=nR-1e-8,rL=function(t,e){return qR.add(t,e)},iL=function(t,e){return rL(YR=t,$R=e)},oL=function(t){return rL(t,qR.y1)},aL=function(t){return rL(qR.x1,t)},cL=function(t,e){return JR*t+tL*e},lL=function(t,e){return QR*t+eL*e},uL=function(t,e){return rL(cL(t,e),lL(t,e))},sL=function(t,e){return iL(cL(t,e),lL(t,e))};function fL(t,e){return qR=t,e?(KR=e*tR,JR=eL=Math.cos(KR),QR=Math.sin(KR),tL=-QR):(JR=eL=1,KR=QR=tL=0),hL}var hL={beginPath:function(){},closePath:function(){},moveTo:sL,lineTo:sL,rect:function(t,e,n,r){KR?(uL(t+n,e),uL(t+n,e+r),uL(t,e+r),sL(t,e)):(rL(t+n,e+r),iL(t,e))},quadraticCurveTo:function(t,e,n,r){var i=cL(t,e),o=lL(t,e),a=cL(n,r),c=lL(n,r);dL(YR,i,a,oL),dL($R,o,c,aL),iL(a,c)},bezierCurveTo:function(t,e,n,r,i,o){var a=cL(t,e),c=lL(t,e),l=cL(n,r),u=lL(n,r),s=cL(i,o),f=lL(i,o);pL(YR,a,l,s,oL),pL($R,c,u,f,aL),iL(s,f)},arc:function(t,e,n,r,i,o){if(r+=KR,i+=KR,YR=n*Math.cos(i)+t,$R=n*Math.sin(i)+e,Math.abs(i-r)>nL)rL(t-n,e-n),rL(t+n,e+n);else{var a,c,l=function(r){return rL(n*Math.cos(r)+t,n*Math.sin(r)+e)};if(l(r),l(i),i!==r)if((r%=nR)<0&&(r+=nR),(i%=nR)<0&&(i+=nR),ii;++c,a-=eR)l(a);else for(a=r-r%eR+eR,c=0;c<4&&a1e-14?(o=c*c+l*a)>=0&&(u=(-c+(o=Math.sqrt(o)))/a,s=(-c-o)/a):u=.5*l/c,0g)return!1;c>v&&(v=c)}else if(o>0){if(c0&&(t.globalAlpha=n,t.fillStyle=EL(t,e,e.fill),!0)}var AL=[];function PL(t,e,n){var r=null!=(r=e.strokeWidth)?r:1;return!(r<=0)&&((n*=null==e.strokeOpacity?1:e.strokeOpacity)>0&&(t.globalAlpha=n,t.strokeStyle=EL(t,e,e.stroke),t.lineWidth=r,t.lineCap=e.strokeCap||"butt",t.lineJoin=e.strokeJoin||"miter",t.miterLimit=e.strokeMiterLimit||10,t.setLineDash&&(t.setLineDash(e.strokeDash||AL),t.lineDashOffset=e.strokeDashOffset||0),!0))}function _L(t,e){return t.zindex-e.zindex||t.index-e.index}function DL(t){if(!t.zdirty)return t.zitems;var e,n,r,i=t.items,o=[];for(n=0,r=i.length;n=0;)if(n=e(i[r]))return n;if(i===o)for(r=(i=t.items).length;--r>=0;)if(!i[r].zindex&&(n=e(i[r])))return n;return null}function FL(t){return function(e,n,r){TL(n,(function(n){r&&!r.intersects(n.bounds)||IL(t,e,n,n)}))}}function jL(t){return function(e,n,r){!n.items.length||r&&!r.intersects(n.bounds)||IL(t,e,n.items[0],n.items)}}function IL(t,e,n,r){var i=null==n.opacity?1:n.opacity;0!==i&&(t(e,r)||(kL(e,n),n.fill&&ML(e,n,i)&&e.fill(),n.stroke&&PL(e,n,i)&&e.stroke()))}function RL(t){return t=t||Ny,function(e,n,r,i,o,a){return r*=e.pixelRatio,i*=e.pixelRatio,ZL(n,(function(n){var c=n.bounds;if((!c||c.contains(o,a))&&c)return t(e,n,r,i,o,a)?n:void 0}))}}function LL(t,e){return function(n,r,i,o){var a,c,l=Array.isArray(r)?r[0]:r,u=null==e?l.fill:e,s=l.stroke&&n.isPointInStroke;return s&&(a=l.strokeWidth,c=l.strokeCap,n.lineWidth=null!=a?a:1,n.lineCap=null!=c?c:"butt"),!t(n,r)&&(u&&n.isPointInPath(i,o)||s&&n.isPointInStroke(i,o))}}function NL(t){return RL(LL(t))}function BL(t,e){return"translate("+t+","+e+")"}function zL(t){return"rotate("+t+")"}function UL(t){return BL(t.x||0,t.y||0)}function HL(t,e,n){function r(t,n){var r=n.x||0,i=n.y||0,o=n.angle||0;t.translate(r,i),o&&t.rotate(o*=tR),t.beginPath(),e(t,n),o&&t.rotate(-o),t.translate(-r,-i)}return{type:t,tag:"path",nested:!1,attr:function(t,n){t("transform",function(t){return BL(t.x||0,t.y||0)+(t.angle?" "+zL(t.angle):"")}(n)),t("d",e(null,n))},bound:function(t,n){return e(fL(t,n.angle),n),XR(t,n).translate(n.x||0,n.y||0)},draw:FL(r),pick:NL(r),isect:n||yL(r)}}var WL=HL("arc",(function(t,e){return PR.context(t)(e)}));function VL(t,e,n){function r(t,n){t.beginPath(),e(t,n)}var i=LL(r);return{type:t,tag:"path",nested:!0,attr:function(t,n){var r=n.mark.items;r.length&&t("d",e(null,r))},bound:function(t,n){var r=n.items;return 0===r.length?t:(e(fL(t),r),XR(t,r[0]))},draw:jL(r),pick:function(t,e,n,r,o,a){var c=e.items,l=e.bounds;return!c||!c.length||l&&!l.contains(o,a)?null:(n*=t.pixelRatio,r*=t.pixelRatio,i(t,c,n,r)?c[0]:null)},isect:bL,tip:n}}var GL=VL("area",(function(t,e){var n=e[0],r=n.interpolate||"linear";return("horizontal"===n.orient?DR:_R).curve(XI(r,n.orient,n.tension)).context(t)(e)}),(function(t,e){for(var n,r,i="horizontal"===t[0].orient?e[1]:e[0],o="horizontal"===t[0].orient?"y":"x",a=t.length,c=1/0;--a>=0;)!1!==t[a].defined&&(r=Math.abs(t[a][o]-i)).5&&e<1.5?.5-Math.abs(e-1):0}function YL(t,e){var n=qL(e);t("d",RR(null,e,n,n))}function $L(t,e,n,r){var i=qL(e);t.beginPath(),RR(t,e,(n||0)+i,(r||0)+i)}var KL=LL($L),JL=LL($L,!1),QL=LL($L,!0);var tN={type:"group",tag:"g",nested:!1,attr:function(t,e){t("transform",UL(e))},bound:function(t,e){if(!e.clip&&e.items)for(var n=e.items,r=n.length,i=0;ip||ov)){if(t.save(),t.translate(f,h),f=i-f,h=o-h,g&&IR(u)&&!QL(t,u,c,l))return t.restore(),null;var m=u.strokeForeground,y=!1!==e.interactive;return y&&m&&u.stroke&&JL(t,u,c,l)?(t.restore(),u):(!(s=ZL(u,(function(t){return function(t,e,n){return(!1!==t.interactive||"group"===t.marktype)&&t.bounds&&t.bounds.contains(e,n)}(t,f,h)?a.pick(t,n,r,f,h):null})))&&y&&(u.fill||!m&&u.stroke)&&KL(t,u,c,l)&&(s=u),t.restore(),s||null)}}}))},isect:xL,content:function(t,e,n){t("clip-path",e.clip?BR(n,e,e):null)},background:function(t,e){t("class","background"),t("aria-hidden",!0),YL(t,e)},foreground:function(t,e){t("class","foreground"),t("aria-hidden",!0),e.strokeForeground?YL(t,e):t("d","")}},eN={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",version:"1.1"};function nN(t,e){var n=t.image;return(!n||t.url&&t.url!==n.url)&&(n={complete:!1,width:0,height:0},e.loadImage(t.url).then((function(e){t.image=e,t.image.url=t.url}))),n}function rN(t,e){return null!=t.width?t.width:e&&e.width?!1!==t.aspect&&t.height?t.height*e.width/e.height:e.width:0}function iN(t,e){return null!=t.height?t.height:e&&e.height?!1!==t.aspect&&t.width?t.width*e.height/e.width:e.height:0}function oN(t,e){return"center"===t?e/2:"right"===t?e:0}function aN(t,e){return"middle"===t?e/2:"bottom"===t?e:0}var cN={type:"image",tag:"image",nested:!1,attr:function(t,e,n){var r=nN(e,n),i=rN(e,r),o=iN(e,r),a=(e.x||0)-oN(e.align,i),c=(e.y||0)-aN(e.baseline,o);t("href",!r.src&&r.toDataURL?r.toDataURL():r.src||"",eN["xmlns:xlink"],"xlink:href"),t("transform",BL(a,c)),t("width",i),t("height",o),t("preserveAspectRatio",!1===e.aspect?"none":"xMidYMid")},bound:function(t,e){var n=e.image,r=rN(e,n),i=iN(e,n),o=(e.x||0)-oN(e.align,r),a=(e.y||0)-aN(e.baseline,i);return t.set(o,a,o+r,a+i)},draw:function(t,e,n){var r=this;TL(e,(function(e){if(!n||n.intersects(e.bounds)){var i=nN(e,r),o=rN(e,i),a=iN(e,i);if(0!==o&&0!==a){var c,l,u,s,f=(e.x||0)-oN(e.align,o),h=(e.y||0)-aN(e.baseline,a);!1!==e.aspect&&(l=i.width/i.height,u=e.width/e.height,l==l&&u==u&&l!==u&&(u=0;)if(!1!==t[o].defined&&(n=t[o].x-e[0])*n+(r=t[o].y-e[1])*r1?e:e[0]:e;var e}function MN(t){var e=EN(t);return(qy(e)?e.length-1:0)*ON(t)}function AN(t,e){var n=null==e?"":(e+"").trim();return t.limit>0&&n.length?function(t,e){var n=+t.limit,r=function(t){if(yN.width===SN){var e=_N(t);return function(t){return kN(t,e)}}var n=CN(t);return function(t){return wN(t,n)}}(t);if(r(e)>>1,r(e.slice(i))>n?c=i+1:l=i;return o+e.slice(c)}for(;c>>1),r(e.slice(0,i))=0;)if(!1!==t[i].defined&&(n=t[i].x-e[0])*n+(r=t[i].y-e[1])*r<(n=t[i].size||1)*n)return t[i];return null})),LN={arc:WL,area:GL,group:tN,image:cN,line:lN,path:sN,rect:hN,rule:pN,shape:vN,symbol:gN,text:IN,trail:RN};function NN(t,e,n){var r=LN[t.mark.marktype],i=e||r.bound;return r.nested&&(t=t.mark),i(t.bounds||(t.bounds=new zR),t,n)}var BN={mark:null};function zN(t,e,n){var r,i,o,a,c=LN[t.marktype],l=c.bound,u=t.items,s=u&&u.length;if(c.nested)return s?o=u[0]:(BN.mark=t,o=BN),a=NN(o,l,n),e=e&&e.union(a)||a;if(e=e||t.bounds&&t.bounds.clear()||new zR,s)for(r=0,i=u.length;re;)t.removeChild(n[--r]);return t}function JN(t){return"mark-"+t.marktype+(t.role?" role-"+t.role:"")+(t.name?" "+t.name:"")}function QN(t,e){var n=e.getBoundingClientRect();return[t.clientX-n.left-(e.clientLeft||0),t.clientY-n.top-(e.clientTop||0)]}function tB(t,e){this._active=null,this._handlers={},this._loader=t||aD(),this._tooltip=e||eB}function eB(t,e,n,r){t.element().setAttribute("title",r||"")}function nB(t){this._el=null,this._bgcolor=null,this._loader=new WR(t)}GN.prototype={toJSON:function(t){return HN(this.root,t||0)},mark:function(t,e,n){var r=XN(t,e=e||this.root.items[0]);return e.items[n]=r,r.zindex&&(r.group.zdirty=!0),r}},tB.prototype={initialize:function(t,e,n){return this._el=t,this._obj=n||null,this.origin(e)},element:function(){return this._el},canvas:function(){return this._el&&this._el.firstChild},origin:function(t){return arguments.length?(this._origin=t||[0,0],this):this._origin.slice()},scene:function(t){return arguments.length?(this._scene=t,this):this._scene},on:function(){},off:function(){},_handlerIndex:function(t,e,n){for(var r=t?t.length:0;--r>=0;)if(t[r].type===e&&(!n||t[r].handler===n))return r;return-1},handlers:function(t){var e=this._handlers,n=[];if(t)n.push.apply(n,(0,Xm.Z)(e[this.eventName(t)]));else for(var r in e)n.push.apply(n,(0,Xm.Z)(e[r]));return n},eventName:function(t){var e=t.indexOf(".");return e<0?t:t.slice(0,e)},handleHref:function(t,e,n){this._loader.sanitize(n,{context:"href"}).then((function(e){var n=new MouseEvent(t.type,t),r=qN(null,"a");for(var i in e)r.setAttribute(i,e[i]);r.dispatchEvent(n)})).catch((function(){}))},handleTooltip:function(t,e,n){if(e&&null!=e.tooltip){e=function(t,e,n,r){var i,o,a=t&&t.mark;if(a&&(i=LN[a.marktype]).tip){for((o=QN(e,n))[0]-=r[0],o[1]-=r[1];t=t.mark.group;)o[0]-=t.x||0,o[1]-=t.y||0;t=i.tip(a.items,o)}return t}(e,t,this.canvas(),this._origin);var r=n&&e&&e.tooltip||null;this._tooltip.call(this._obj,this,t,e,r)}},getItemBoundingClientRect:function(t){var e=this.canvas();if(e){for(var n=e.getBoundingClientRect(),r=this._origin,i=t.bounds,o=i.width(),a=i.height(),c=i.x1+r[0]+n.left,l=i.y1+r[1]+n.top;t.mark&&(t=t.mark.group);)c+=t.x||0,l+=t.y||0;return{x:c,y:l,width:o,height:a,left:c,top:l,right:c+o,bottom:l+a}}}},nB.prototype={initialize:function(t,e,n,r,i){return this._el=t,this.resize(e,n,r,i)},element:function(){return this._el},canvas:function(){return this._el&&this._el.firstChild},background:function(t){return 0===arguments.length?this._bgcolor:(this._bgcolor=t,this)},resize:function(t,e,n,r){return this._width=t,this._height=e,this._origin=n||[0,0],this._scale=r||1,this},dirty:function(){},render:function(t){var e=this;return e._call=function(){e._render(t)},e._call(),e._call=null,e},_render:function(){},renderAsync:function(t){var e=this.render(t);return this._ready?this._ready.then((function(){return e})):Promise.resolve(e)},_load:function(t,e){var n=this,r=n._loader[t](e);if(!n._ready){var i=n._call;n._ready=n._loader.ready().then((function(t){t&&i(),n._ready=null}))}return r},sanitizeURL:function(t){return this._load("sanitizeURL",t)},loadImage:function(t){return this._load("loadImage",t)}};var rB="dragenter",iB="dragleave",oB="dragover",aB="mousedown",cB="mousemove",lB="mouseout",uB="mouseover",sB="click",fB="mousewheel",hB="touchstart",dB="touchmove",pB="touchend",vB=cB,gB=lB,mB=sB;function yB(t,e){tB.call(this,t,e),this._down=null,this._touch=null,this._first=!0,this._events={}}function bB(t,e){(function(t){return t===hB||t===dB||t===pB?[hB,dB,pB]:[t]})(e).forEach((function(e){return function(t,e){var n=t.canvas();n&&!t._events[e]&&(t._events[e]=1,n.addEventListener(e,t[e]?function(n){return t[e](n)}:function(n){return t.fire(e,n)}))}(t,e)}))}function xB(t,e,n){return function(r){var i=this._active,o=this.pickEvent(r);o===i||(i&&i.exit||this.fire(n,r),this._active=o,this.fire(e,r)),this.fire(t,r)}}function wB(t){return function(e){this.fire(t,e),this._active=null}}Lb(yB,tB,{initialize:function(t,e,n){var r=this;return this._canvas=t&&YN(t,"canvas"),[sB,aB,cB,lB,iB].forEach((function(t){return bB(r,t)})),tB.prototype.initialize.call(this,t,e,n)},canvas:function(){return this._canvas},context:function(){return this._canvas.getContext("2d")},events:["keydown","keypress","keyup",rB,iB,oB,aB,"mouseup",cB,lB,uB,sB,"dblclick","wheel",fB,hB,dB,pB],DOMMouseScroll:function(t){this.fire(fB,t)},mousemove:xB(cB,uB,lB),dragover:xB(oB,rB,iB),mouseout:wB(lB),dragleave:wB(iB),mousedown:function(t){this._down=this._active,this.fire(aB,t)},click:function(t){this._down===this._active&&(this.fire(sB,t),this._down=null)},touchstart:function(t){this._touch=this.pickEvent(t.changedTouches[0]),this._first&&(this._active=this._touch,this._first=!1),this.fire(hB,t,!0)},touchmove:function(t){this.fire(dB,t,!0)},touchend:function(t){this.fire(pB,t,!0),this._touch=null},fire:function(t,e,n){var r=n?this._touch:this._active,i=this._handlers[t];if(e.vegaType=t,t===mB&&r&&r.href?this.handleHref(e,r,r.href):t!==vB&&t!==gB||this.handleTooltip(e,r,t!==gB),i)for(var o=0,a=i.length;o=0&&r.splice(i,1),this},pickEvent:function(t){var e=QN(t,this._canvas),n=this._origin;return this.pick(this._scene,e[0],e[1],e[0]-n[0],e[1]-n[1])},pick:function(t,e,n,r,i){var o=this.context();return LN[t.marktype].pick.call(this,o,t,e,n,r,i)}});var SB="undefined"!=typeof window&&window.devicePixelRatio||1;function kB(t){nB.call(this,t),this._options={},this._redraw=!1,this._dirty=new zR,this._tempb=new zR}var CB=nB.prototype;function OB(t,e){tB.call(this,t,e);var n=this;n._hrefHandler=EB(n,(function(t,e){e&&e.href&&n.handleHref(t,e,e.href)})),n._tooltipHandler=EB(n,(function(t,e){n.handleTooltip(t,e,t.type!==gB)}))}Lb(kB,nB,{initialize:function(t,e,n,r,i,o){return this._options=o||{},this._canvas=this._options.externalContext?null:N_(1,1,this._options.type),t&&this._canvas&&(KN(t,0).appendChild(this._canvas),this._canvas.setAttribute("class","marks")),CB.initialize.call(this,t,e,n,r,i)},resize:function(t,e,n,r){if(CB.resize.call(this,t,e,n,r),this._canvas)!function(t,e,n,r,i,o){var a="undefined"!=typeof HTMLElement&&t instanceof HTMLElement&&null!=t.parentNode,c=t.getContext("2d"),l=a?SB:i;for(var u in t.width=e*l,t.height=n*l,o)c[u]=o[u];a&&1!==l&&(t.style.width=e+"px",t.style.height=n+"px"),c.pixelRatio=l,c.setTransform(l,0,0,l,l*r[0],l*r[1])}(this._canvas,this._width,this._height,this._origin,this._scale,this._options.context);else{var i=this._options.externalContext;i||Ty("CanvasRenderer is missing a valid canvas or context"),i.scale(this._scale,this._scale),i.translate(this._origin[0],this._origin[1])}return this._redraw=!0,this},canvas:function(){return this._canvas},context:function(){return this._options.externalContext||(this._canvas?this._canvas.getContext("2d"):null)},dirty:function(t){for(var e=this._tempb.clear().union(t.bounds),n=t.mark.group;n;)e.translate(n.x||0,n.y||0),n=n.mark.group;this._dirty.union(e)},_render:function(t){var e=this.context(),n=this._origin,r=this._width,i=this._height,o=this._dirty,a=function(t,e,n){return(new zR).set(0,0,e,n).translate(-t[0],-t[1])}(n,r,i);e.save();var c=this._redraw||o.empty()?(this._redraw=!1,a.expand(1)):function(t,e,n){return e.expand(1).round(),t.pixelRatio%1&&e.scale(t.pixelRatio).round().scale(1/t.pixelRatio),e.translate(-n[0]%1,-n[1]%1),t.beginPath(),t.rect(e.x1,e.y1,e.width(),e.height()),t.clip(),e}(e,a.intersect(o),n);return this.clear(-n[0],-n[1],r,i),this.draw(e,t,c),e.restore(),o.clear(),this},draw:function(t,e,n){var r=LN[e.marktype];e.clip&&function(t,e){var n=e.clip;t.save(),wb(n)?(t.beginPath(),n(t),t.clip()):XL(t,e.group)}(t,e),r.draw.call(this,t,e,n),e.clip&&t.restore()},clear:function(t,e,n,r){var i=this._options,o=this.context();"pdf"===i.type||i.externalContext||o.clearRect(t,e,n,r),null!=this._bgcolor&&(o.fillStyle=this._bgcolor,o.fillRect(t,e,n,r))}});var EB=function(t,e){return function(n){var r=n.target.__data__;r=Array.isArray(r)?r[0]:r,n.vegaType=n.type,e.call(t._obj,n,r)}};Lb(OB,tB,{initialize:function(t,e,n){var r=this._svg;return r&&(r.removeEventListener(mB,this._hrefHandler),r.removeEventListener(vB,this._tooltipHandler),r.removeEventListener(gB,this._tooltipHandler)),this._svg=r=t&&YN(t,"svg"),r&&(r.addEventListener(mB,this._hrefHandler),r.addEventListener(vB,this._tooltipHandler),r.addEventListener(gB,this._tooltipHandler)),tB.prototype.initialize.call(this,t,e,n)},canvas:function(){return this._svg},on:function(t,e){var n=this.eventName(t),r=this._handlers;if(this._handlerIndex(r[n],t,e)<0){var i={type:t,handler:e,listener:EB(this,e)};(r[n]||(r[n]=[])).push(i),this._svg&&this._svg.addEventListener(n,i.listener)}return this},off:function(t,e){var n=this.eventName(t),r=this._handlers[n],i=this._handlerIndex(r,t,e);return i>=0&&(this._svg&&this._svg.removeEventListener(n,r[i].listener),r.splice(i,1)),this}});var MB="aria-hidden",AB="aria-label",PB="role",_B="aria-roledescription",DB="graphics-object",TB="graphics-symbol",ZB=function(t,e,n){var r;return r={},(0,V.Z)(r,PB,t),(0,V.Z)(r,_B,e),(0,V.Z)(r,AB,n||void 0),r},FB=ox(["axis-domain","axis-grid","axis-label","axis-tick","axis-title","legend-band","legend-entry","legend-gradient","legend-label","legend-title","legend-symbol","title"]),jB={axis:{desc:"axis",caption:function(t){var e=t.datum,n=t.orient,r=e.title?BB(t):null,i=t.context,o=i.scales[e.scale].value,a=i.dataflow.locale(),c=o.type,l="left"===n||"right"===n?"Y":"X";return"".concat(l,"-axis")+(r?" titled '".concat(r,"'"):"")+" for a ".concat(eI(c)?"discrete":c," scale")+" with ".concat(RI(a,o,t))}},legend:{desc:"legend",caption:function(t){var e=t.datum,n=e.title?BB(t):null,r="".concat(e.type||""," legend").trim(),i=e.scales,o=Object.keys(i),a=t.context,c=a.scales[i[o[0]]].value,l=a.dataflow.locale();return function(t){return t.length?t[0].toUpperCase()+t.slice(1):t}(r)+(n?" titled '".concat(n,"'"):"")+" for ".concat(function(t){return t=t.map((function(t){return t+("fill"===t||"stroke"===t?" color":"")})),t.length<2?t[0]:t.slice(0,-1).join(", ")+" and "+tb(t)}(o))+" with ".concat(RI(l,c,t))}},"title-text":{desc:"title",caption:function(t){return"Title text '".concat(NB(t),"'")}},"title-subtitle":{desc:"subtitle",caption:function(t){return"Subtitle text '".concat(NB(t),"'")}}},IB={ariaRole:PB,ariaRoleDescription:_B,description:AB};function RB(t,e){var n=!1===e.aria;if(t(MB,n||void 0),n||null==e.description)for(var r in IB)t(IB[r],void 0);else{var i=e.mark.marktype;t(AB,e.description),t(PB,e.ariaRole||("group"===i?DB:TB)),t(_B,e.ariaRoleDescription||"".concat(i," mark"))}}function LB(t){return!1===t.aria?(0,V.Z)({},MB,!0):FB[t.role]?null:jB[t.role]?function(t,e){try{var n=t.items[0],r=e.caption||function(){return""};return ZB(e.role||TB,e.desc,n.description||r(n))}catch(i){return null}}(t,jB[t.role]):function(t){var e=t.marktype,n="group"===e||"text"===e||t.items.some((function(t){return null!=t.description&&!1!==t.aria}));return ZB(n?DB:TB,"".concat(e," mark container"),t.description)}(t)}function NB(t){return bb(t.text).join(" ")}function BB(t){try{return bb(tb(t.items).items[0].text).join(" ")}catch(e){return null}}var zB=function(t){return(t+"").replace(/&/g,"&").replace(//g,">")},UB=function(t){return zB(t).replace(/"/g,""").replace(/\t/g," ").replace(/\n/g," ").replace(/\r/g," ")};function HB(){var t="",e="",n="",r=[],i=function(){return e=n=""},o=function(t,n){return null!=n&&(e+=" ".concat(t,'="').concat(UB(n),'"')),a},a={open:function(c){!function(o){e&&(t+="".concat(e,">").concat(n),i()),r.push(o)}(c),e="<"+c;for(var l=arguments.length,u=new Array(l>1?l-1:0),s=1;s".concat(n,""):"/>"):""),i(),a},attr:o,text:function(t){return n+=zB(t),a},toString:function(){return t}};return a}var WB=function(t){return VB(HB(),t)+""};function VB(t,e){if(t.open(e.tagName),e.hasAttributes())for(var n=e.attributes,r=n.length,i=0;i1&&t.previousSibling!=e}(a,n))&&e.insertBefore(a,n?n.nextSibling:e.firstChild),a}Lb(KB,nB,{initialize:function(t,e,n,r,i){return this._defs={},this._clearDefs(),t&&(this._svg=$N(t,0,"svg",$B),this._svg.setAttributeNS(YB,"xmlns",$B),this._svg.setAttributeNS(YB,"xmlns:xlink",eN["xmlns:xlink"]),this._svg.setAttribute("version",eN.version),this._svg.setAttribute("class","marks"),KN(t,1),this._root=$N(this._svg,0,"g",$B),lz(this._root,qB),KN(this._svg,1)),this.background(this._bgcolor),JB.initialize.call(this,t,e,n,r,i)},background:function(t){return arguments.length&&this._svg&&this._svg.style.setProperty("background-color",t),JB.background.apply(this,arguments)},resize:function(t,e,n,r){return JB.resize.call(this,t,e,n,r),this._svg&&(lz(this._svg,{width:this._width*this._scale,height:this._height*this._scale,viewBox:"0 0 ".concat(this._width," ").concat(this._height)}),this._root.setAttribute("transform","translate(".concat(this._origin,")"))),this._dirty=[],this},canvas:function(){return this._svg},svg:function(){var t,e=this._svg,n=this._bgcolor;if(!e)return null;n&&(e.removeAttribute("style"),lz(t=$N(e,0,"rect",$B),{width:this._width,height:this._height,fill:n}));var r=WB(e);return n&&(e.removeChild(t),this._svg.style.setProperty("background-color",n)),r},_render:function(t){return this._dirtyCheck()&&(this._dirtyAll&&this._clearDefs(),this.mark(this._root,t),KN(this._root,1)),this.defs(),this._dirty=[],++this._dirtyID,this},dirty:function(t){t.dirty!==this._dirtyID&&(t.dirty=this._dirtyID,this._dirty.push(t))},isDirty:function(t){return this._dirtyAll||!t._svg||!t._svg.ownerSVGElement||t.dirty===this._dirtyID},_dirtyCheck:function(){this._dirtyAll=!0;var t=this._dirty;if(!t.length||!this._dirtyID)return!0;var e,n,r,i,o,a,c,l=++this._dirtyID;for(o=0,a=t.length;o1?(vz[t]=e,this):vz[t]}function mz(t,e,n){var r=[],i=(new zR).union(e),o=t.marktype;return o?yz(t,i,n,r):"group"===o?bz(t,i,n,r):Ty("Intersect scene must be mark node or group item.")}function yz(t,e,n,r){if(function(t,e,n){return t.bounds&&e.intersects(t.bounds)&&("group"===t.marktype||!1!==t.interactive&&(!n||n(t)))}(t,e,n)){var i=t.items,o=t.marktype,a=i.length,c=0;if("group"===o)for(;c=0;r--)if(i[r]!=o[r])return!1;for(r=i.length-1;r>=0;r--)if(!Cz(t[n=i[r]],e[n],n))return!1;return typeof t==typeof e}(t,e):t==e)}function Oz(t,e){return Cz(QI(t),QI(e))}function Ez(){NR(),BI=0}var Mz="top",Az="left",Pz="right",_z="bottom",Dz="top-left",Tz="top-right",Zz="bottom-left",Fz="bottom-right",jz="start",Iz="middle",Rz="end",Lz="x",Nz="y",Bz="group",zz="axis",Uz="title",Hz="frame",Wz="scope",Vz="legend",Gz="row-header",Xz="row-footer",qz="row-title",Yz="column-header",$z="column-footer",Kz="column-title",Jz="padding",Qz="symbol",tU="fit",eU="fit-x",nU="fit-y",rU="pad",iU="none",oU="all",aU="each",cU="flush",lU="column",uU="row";function sU(t){lE.call(this,null,t)}function fU(t,e,n){return e(t.bounds.clear(),t,n)}Lb(sU,lE,{transform:function(t,e){var n,r=e.dataflow,i=t.mark,o=i.marktype,a=LN[o],c=a.bound,l=i.bounds;if(a.nested)i.items.length&&r.dirty(i.items[0]),l=fU(i,c),i.items.forEach((function(t){t.bounds.clear().union(l)}));else if(o===Bz||t.modified())switch(e.visit(e.MOD,(function(t){return r.dirty(t)})),l.clear(),i.items.forEach((function(t){return l.union(fU(t,c))})),i.role){case zz:case Vz:case Uz:e.reflow()}else n=e.changed(e.REM),e.visit(e.ADD,(function(t){l.union(fU(t,c))})),e.visit(e.MOD,(function(t){n=n||l.alignsWith(t.bounds),r.dirty(t),l.union(fU(t,c))})),n&&(l.clear(),i.items.forEach((function(t){return l.union(t.bounds)})));return Sz(i),e.modifies("bounds")}});var hU=":vega_identifier:";function dU(t){lE.call(this,0,t)}function pU(t){lE.call(this,null,t)}function vU(t){lE.call(this,null,t)}dU.Definition={type:"Identifier",metadata:{modifies:!0},params:[{name:"as",type:"string",required:!0}]},Lb(dU,lE,{transform:function(t,e){var n=function(t){return t._signals[hU]||(t._signals[hU]=t.add(0))}(e.dataflow),r=t.as,i=n.value;return e.visit(e.ADD,(function(t){return t[r]=t[r]||++i})),n.set(this.value=i),e}}),Lb(pU,lE,{transform:function(t,e){var n=this.value;n||((n=e.dataflow.scenegraph().mark(t.markdef,function(t){var e=t.groups,n=t.parent;return e&&1===e.size?e.get(Object.keys(e.object)[0]):e&&n?e.lookup(n):null}(t),t.index)).group.context=t.context,t.context.group||(t.context.group=n.group),n.source=this.source,n.clip=t.clip,n.interactive=t.interactive,this.value=n);var r=n.marktype===Bz?HR:UR;return e.visit(e.ADD,(function(t){return r.call(t,n)})),(t.modified("clip")||t.modified("interactive"))&&(n.clip=t.clip,n.interactive=!!t.interactive,n.zdirty=!0,e.reflow()),n.items=e.source,e}});var gU={parity:function(t){return t.filter((function(t,e){return e%2?t.opacity=0:1}))},greedy:function(t,e){var n;return t.filter((function(t,r){return r&&mU(n.bounds,t.bounds,e)?t.opacity=0:(n=t,1)}))}},mU=function(t,e,n){return n>Math.max(e.x1-t.x2,t.x1-e.x2,e.y1-t.y2,t.y1-e.y2)},yU=function(t,e){for(var n,r=1,i=t.length,o=t[0].bounds;r1&&e.height()>1},xU=function(t){return t.forEach((function(t){return t.opacity=1})),t},wU=function(t,e){return t.reflow(e.modified()).modifies("opacity")};function SU(t){lE.call(this,null,t)}Lb(vU,lE,{transform:function(t,e){var n,r,i=gU[t.method]||gU.parity,o=t.separation||0,a=e.materialize(e.SOURCE).source;if(a&&a.length){if(!t.method)return t.modified("method")&&(xU(a),e=wU(e,t)),e;if((a=a.filter(bU)).length){if(t.sort&&(a=a.slice().sort(t.sort)),n=xU(a),e=wU(e,t),n.length>=3&&yU(n,o)){do{n=i(n,o)}while(n.length>=3&&yU(n,o));n.length<3&&!tb(a).opacity&&(n.length>1&&(tb(n).opacity=0),tb(a).opacity=1)}t.boundScale&&t.boundTolerance>=0&&(r=function(t,e,n){var r=t.range(),i=new zR;return e===Mz||e===_z?i.set(r[0],-1/0,r[1],1/0):i.set(-1/0,r[0],1/0,r[1]),i.expand(n||1),function(t){return i.encloses(t.bounds)}}(t.boundScale,t.boundOrient,+t.boundTolerance),a.forEach((function(t){r(t)||(t.opacity=0)})));var c=n[0].mark.bounds.clear();return a.forEach((function(t){t.opacity&&c.union(t.bounds)})),e}}}}),Lb(SU,lE,{transform:function(t,e){var n=e.dataflow;if(e.visit(e.ALL,(function(t){return n.dirty(t)})),e.fields&&e.fields.zindex){var r=e.source&&e.source[0];r&&(r.mark.zdirty=!0)}}});var kU=new zR;function CU(t,e,n){return t[e]===n?0:(t[e]=n,1)}function OU(t){var e=t.items[0].orient;return e===Az||e===Pz}function EU(t,e,n,r){var i,o,a=e.items[0],c=a.datum,l=null!=a.translate?a.translate:.5,u=a.orient,s=function(t){var e=+t.grid;return[t.ticks?e++:-1,t.labels?e++:-1,e+ +t.domain]}(c),f=a.range,h=a.offset,d=a.position,p=a.minExtent,v=a.maxExtent,g=c.title&&a.items[s[2]].items[0],m=a.titlePadding,y=a.bounds,b=g&&MN(g),x=0,w=0;switch(kU.clear().union(y),y.clear(),(i=s[0])>-1&&y.union(a.items[i].bounds),(i=s[1])>-1&&y.union(a.items[i].bounds),u){case Mz:x=d||0,w=-h,o=Math.max(p,Math.min(v,-y.y1)),y.add(0,-o).add(f,0),g&&MU(t,g,o,m,b,0,-1,y);break;case Az:x=-h,w=d||0,o=Math.max(p,Math.min(v,-y.x1)),y.add(-o,0).add(0,f),g&&MU(t,g,o,m,b,1,-1,y);break;case Pz:x=n+h,w=d||0,o=Math.max(p,Math.min(v,y.x2)),y.add(0,0).add(o,f),g&&MU(t,g,o,m,b,1,1,y);break;case _z:x=d||0,w=r+h,o=Math.max(p,Math.min(v,y.y2)),y.add(0,0).add(f,o),g&&MU(t,g,o,m,0,0,1,y);break;default:x=a.x,w=a.y}return XR(y.translate(x,w),a),CU(a,"x",x+l)|CU(a,"y",w+l)&&(a.bounds=kU,t.dirty(a),a.bounds=y,t.dirty(a)),a.mark.bounds.clear().union(y)}function MU(t,e,n,r,i,o,a,c){var l=e.bounds;if(e.auto){var u=a*(n+i+r),s=0,f=0;t.dirty(e),o?s=(e.x||0)-(e.x=u):f=(e.y||0)-(e.y=u),e.mark.bounds.clear().union(l.translate(-s,-f)),t.dirty(e)}c.union(l)}var AU=function(t,e){return Math.floor(Math.min(t,e))},PU=function(t,e){return Math.ceil(Math.max(t,e))};function _U(t){return(new zR).set(0,0,t.width||0,t.height||0)}function DU(t){var e=t.bounds.clone();return e.empty()?e.set(0,0,0,0):e.translate(-(t.x||0),-(t.y||0))}function TU(t,e,n){var r=Yy(t)?t[e]:t;return null!=r?r:void 0!==n?n:0}function ZU(t){return t<0?Math.ceil(-t):0}function FU(t,e,n){var r,i,o,a,c,l,u,s,f,h,d,p=!n.nodirty,v=n.bounds===cU?_U:DU,g=kU.set(0,0,0,0),m=TU(n.align,lU),y=TU(n.align,uU),b=TU(n.padding,lU),x=TU(n.padding,uU),w=n.columns||e.length,S=w<=0?1:Math.ceil(e.length/w),k=e.length,C=Array(k),O=Array(w),E=0,M=Array(k),A=Array(S),P=0,_=Array(k),D=Array(k),T=Array(k);for(i=0;i1)for(i=0;i0&&(_[i]+=f/2);if(y&&TU(n.center,uU)&&1!==w)for(i=0;i0&&(D[i]+=h/2);for(i=0;ii&&(t.warn("Grid headers exceed limit: "+i),e=e.slice(0,i)),C+=o,v=0,m=e.length;v=0&&null==(x=n[g]);g-=h);c?(w=null==d?x.x:Math.round(x.bounds.x1+d*x.bounds.width()),S=C):(w=C,S=null==d?x.y:Math.round(x.bounds.y1+d*x.bounds.height())),y.union(b.bounds.translate(w-(b.x||0),S-(b.y||0))),b.x=w,b.y=S,t.dirty(b),O=a(O,y[u])}return O}function NU(t,e,n,r,i,o){if(e){t.dirty(e);var a=n,c=n;r?a=Math.round(i.x1+o*i.width()):c=Math.round(i.y1+o*i.height()),e.bounds.translate(a-(e.x||0),c-(e.y||0)),e.mark.bounds.clear().union(e.bounds),e.x=a,e.y=c,t.dirty(e)}}function BU(t,e,n,r,i,o,a){var c=function(t,e){var n=t[e]||{};return function(e,r){return null!=n[e]?n[e]:null!=t[e]?t[e]:r}}(n,e),l=function(t,e){var n=-1/0;return t.forEach((function(t){null!=t.offset&&(n=Math.max(n,t.offset))})),n>-1/0?n:e}(t,c("offset",0)),u=c("anchor",jz),s=u===Rz?1:u===Iz?.5:0,f={align:aU,bounds:c("bounds",cU),columns:"vertical"===c("direction")?1:t.length,padding:c("margin",8),center:c("center"),nodirty:!0};switch(e){case Az:f.anchor={x:Math.floor(r.x1)-l,column:Rz,y:s*(a||r.height()+2*r.y1),row:u};break;case Pz:f.anchor={x:Math.ceil(r.x2)+l,y:s*(a||r.height()+2*r.y1),row:u};break;case Mz:f.anchor={y:Math.floor(i.y1)-l,row:Rz,x:s*(o||i.width()+2*i.x1),column:u};break;case _z:f.anchor={y:Math.ceil(i.y2)+l,x:s*(o||i.width()+2*i.x1),column:u};break;case Dz:f.anchor={x:l,y:l};break;case Tz:f.anchor={x:o-l,y:l,column:Rz};break;case Zz:f.anchor={x:l,y:a-l,row:Rz};break;case Fz:f.anchor={x:o-l,y:a-l,column:Rz,row:Rz}}return f}function zU(t,e){var n,r,i=e.items[0],o=i.datum,a=i.orient,c=i.bounds,l=i.x,u=i.y;return i._bounds?i._bounds.clear().union(c):i._bounds=c.clone(),c.clear(),function(t,e,n){var r=e.padding,i=r-n.x,o=r-n.y;if(e.datum.title){var a=e.items[1].items[0],c=a.anchor,l=e.titlePadding||0,u=r-a.x,s=r-a.y;switch(a.orient){case Az:i+=Math.ceil(a.bounds.width())+l;break;case Pz:case _z:break;default:o+=a.bounds.height()+l}switch((i||o)&&HU(t,n,i,o),a.orient){case Az:s+=UU(e,n,a,c,1,1);break;case Pz:u+=UU(e,n,a,Rz,0,0)+l,s+=UU(e,n,a,c,1,1);break;case _z:u+=UU(e,n,a,c,0,0),s+=UU(e,n,a,Rz,-1,0,1)+l;break;default:u+=UU(e,n,a,c,0,0)}(u||s)&&HU(t,a,u,s),(u=Math.round(a.bounds.x1-r))<0&&(HU(t,n,-u,0),HU(t,a,-u,0))}else(i||o)&&HU(t,n,i,o)}(t,i,i.items[0].items[0]),c=function(t,e){return t.items.forEach((function(t){return e.union(t.bounds)})),e.x1=t.padding,e.y1=t.padding,e}(i,c),n=2*i.padding,r=2*i.padding,c.empty()||(n=Math.ceil(c.width()+n),r=Math.ceil(c.height()+r)),o.type===Qz&&function(t){var e=t.reduce((function(t,e){return t[e.column]=Math.max(e.bounds.x2-e.x,t[e.column]||0),t}),{});t.forEach((function(t){t.width=e[t.column],t.height=t.bounds.y2-t.y}))}(i.items[0].items[0].items[0].items),a!==iU&&(i.x=l=0,i.y=u=0),i.width=n,i.height=r,XR(c.set(l,u,l+n,u+r),i),i.mark.bounds.clear().union(c),i}function UU(t,e,n,r,i,o,a){var c="symbol"!==t.datum.type,l=n.datum.vgrad,u=(!c||!o&&l||a?e:e.items[0]).bounds[i?"y2":"x2"]-t.padding,s=l&&o?u:0,f=l&&o?0:u,h=i<=0?0:MN(n);return Math.round(r===jz?s:r===Rz?f-h:.5*(u-h))}function HU(t,e,n,r){e.x+=n,e.y+=r,e.bounds.translate(n,r),e.mark.bounds.translate(n,r),t.dirty(e)}function WU(t){lE.call(this,null,t)}Lb(WU,lE,{transform:function(t,e){var n=e.dataflow;return t.mark.items.forEach((function(e){t.layout&&jU(n,e,t.layout),function(t,e,n){var r,i,o,a,c,l=e.items,u=Math.max(0,e.width||0),s=Math.max(0,e.height||0),f=(new zR).set(0,0,u,s),h=f.clone(),d=f.clone(),p=[];for(a=0,c=l.length;a=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function GU(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);nn.cleanThreshold)&&n.runAfter(a.clean),r}}),Lb(KU,lE,{transform:function(t,e){var n=e.fork(e.ADD_REM),r=t.mod||!1,i=t.encoders,o=e.encode;if(qy(o)){if(!n.changed()&&!o.every((function(t){return i[t]})))return e.StopPropagation;o=o[0],n.encode=null}var a="enter"===o,c=i.update||By,l=i.enter||By,u=i.exit||By,s=(o&&!a?i[o]:c)||By;if(e.changed(e.ADD)&&(e.visit(e.ADD,(function(e){l(e,t),c(e,t)})),n.modifies(l.output),n.modifies(c.output),s!==By&&s!==c&&(e.visit(e.ADD,(function(e){s(e,t)})),n.modifies(s.output))),e.changed(e.REM)&&u!==By&&(e.visit(e.REM,(function(e){u(e,t)})),n.modifies(u.output)),a||s!==By){var f=e.MOD|(t.modified()?e.REFLOW:0);a?(e.visit(f,(function(e){var i=l(e,t)||r;(s(e,t)||i)&&n.mod.push(e)})),n.mod.length&&n.modifies(l.output)):e.visit(f,(function(e){(s(e,t)||r)&&n.mod.push(e)})),n.mod.length&&n.modifies(s.output)}return n.changed()?n:e.StopPropagation}}),Lb(JU,lE,{transform:function(t,e){if(null!=this.value&&!t.modified())return e.StopPropagation;var n,r,i,o,a,c=e.dataflow.locale(),l=e.fork(e.NO_SOURCE|e.NO_FIELDS),u=this.value,s=t.type||gI,f=t.scale,h=+t.limit,d=wI(f,null==t.count?5:t.count,t.minstep),p=!!t.values||s===gI,v=t.format||_I(c,f,d,s,t.formatSpecifier,t.formatType,p),g=t.values||AI(f,d);return u&&(l.rem=u),s===gI?(h&&g.length>h?(e.dataflow.warn("Symbol legend count exceeds limit, filtering items."),u=g.slice(0,h-1),a=!0):u=g,wb(i=t.size)?(t.values||0!==f(u[0])||(u=u.slice(1)),o=u.reduce((function(e,n){return Math.max(e,i(n,t))}),0)):i=Ab(o=i||8),u=u.map((function(e,n){return EO({index:n,label:v(e,n,u),value:e,offset:o,size:i(e,t)})})),a&&(a=g[u.length],u.push(EO({index:u.length,label:"…".concat(g.length-u.length," entries"),value:a,offset:o,size:i(a,t)})))):"gradient"===s?(n=f.domain(),r=sI(f,n[0],tb(n)),g.length<3&&!t.values&&n[0]!==tb(n)&&(g=[n[0],tb(n)]),u=g.map((function(t,e){return EO({index:e,label:v(t,e,g),value:t,perc:r(t)})}))):(i=g.length-1,r=function(t){var e=t.domain(),n=e.length-1,r=+e[0],i=+tb(e),o=i-r;if(t.type===Fj){var a=n?o/n:.1;o=(i+=a)-(r-=a)}return function(t){return(t-r)/o}}(f),u=g.map((function(t,e){return EO({index:e,label:v(t,e,g),value:t,perc:e?r(t):0,perc2:e===i?1:r(g[e+1])})}))),l.source=u,l.add=u,this.value=u,l}});var QU=function(t){return t.source.x},tH=function(t){return t.source.y},eH=function(t){return t.target.x},nH=function(t){return t.target.y};function rH(t){lE.call(this,{},t)}rH.Definition={type:"LinkPath",metadata:{modifies:!0},params:[{name:"sourceX",type:"field",default:"source.x"},{name:"sourceY",type:"field",default:"source.y"},{name:"targetX",type:"field",default:"target.x"},{name:"targetY",type:"field",default:"target.y"},{name:"orient",type:"enum",default:"vertical",values:["horizontal","vertical","radial"]},{name:"shape",type:"enum",default:"line",values:["line","arc","curve","diagonal","orthogonal"]},{name:"require",type:"signal"},{name:"as",type:"string",default:"path"}]},Lb(rH,lE,{transform:function(t,e){var n=t.sourceX||QU,r=t.sourceY||tH,i=t.targetX||eH,o=t.targetY||nH,a=t.as||"path",c=t.orient||"vertical",l=t.shape||"line",u=cH.get(l+"-"+c)||cH.get(l);return u||Ty("LinkPath unsupported type: "+t.shape+(t.orient?"-"+t.orient:"")),e.visit(e.SOURCE,(function(t){t[a]=u(n(t),r(t),i(t),o(t))})),e.reflow(t.modified()).modifies(a)}});var iH=function(t,e,n,r){return"M"+t+","+e+"L"+n+","+r},oH=function(t,e,n,r){var i=n-t,o=r-e,a=Math.hypot(i,o)/2;return"M"+t+","+e+"A"+a+","+a+" "+180*Math.atan2(o,i)/Math.PI+" 0 1 "+n+","+r},aH=function(t,e,n,r){var i=n-t,o=r-e,a=.2*(i+o),c=.2*(o-i);return"M"+t+","+e+"C"+(t+a)+","+(e+c)+" "+(n+c)+","+(r-a)+" "+n+","+r},cH=Ib({line:iH,"line-radial":function(t,e,n,r){return iH(e*Math.cos(t),e*Math.sin(t),r*Math.cos(n),r*Math.sin(n))},arc:oH,"arc-radial":function(t,e,n,r){return oH(e*Math.cos(t),e*Math.sin(t),r*Math.cos(n),r*Math.sin(n))},curve:aH,"curve-radial":function(t,e,n,r){return aH(e*Math.cos(t),e*Math.sin(t),r*Math.cos(n),r*Math.sin(n))},"orthogonal-horizontal":function(t,e,n,r){return"M"+t+","+e+"V"+r+"H"+n},"orthogonal-vertical":function(t,e,n,r){return"M"+t+","+e+"H"+n+"V"+r},"orthogonal-radial":function(t,e,n,r){var i=Math.cos(t),o=Math.sin(t),a=Math.cos(n),c=Math.sin(n);return"M"+e*i+","+e*o+"A"+e+","+e+" 0 0,"+((Math.abs(n-t)>Math.PI?n<=t:n>t)?1:0)+" "+e*a+","+e*c+"L"+r*a+","+r*c},"diagonal-horizontal":function(t,e,n,r){var i=(t+n)/2;return"M"+t+","+e+"C"+i+","+e+" "+i+","+r+" "+n+","+r},"diagonal-vertical":function(t,e,n,r){var i=(e+r)/2;return"M"+t+","+e+"C"+t+","+i+" "+n+","+i+" "+n+","+r},"diagonal-radial":function(t,e,n,r){var i=Math.cos(t),o=Math.sin(t),a=Math.cos(n),c=Math.sin(n),l=(e+r)/2;return"M"+e*i+","+e*o+"C"+l*i+","+l*o+" "+l*a+","+l*c+" "+r*a+","+r*c}});function lH(t){lE.call(this,null,t)}lH.Definition={type:"Pie",metadata:{modifies:!0},params:[{name:"field",type:"field"},{name:"startAngle",type:"number",default:0},{name:"endAngle",type:"number",default:6.283185307179586},{name:"sort",type:"boolean",default:!1},{name:"as",type:"string",array:!0,length:2,default:["startAngle","endAngle"]}]},Lb(lH,lE,{transform:function(t,e){var n,r,i,o=t.as||["startAngle","endAngle"],a=o[0],c=o[1],l=t.field||Ly,u=t.startAngle||0,s=null!=t.endAngle?t.endAngle:2*Math.PI,f=e.source,h=f.map(l),d=h.length,p=u,v=(s-u)/XU(h),g=jM(d);for(t.sort&&g.sort((function(t,e){return h[t]-h[e]})),n=0;n0?1:0)}),0));r!==e.length&&n.warn("Log scale domain includes zero: "+tx(e))}return e}function pH(t,e,n){return wb(t)&&(e||n)?cI(t,vH(e||[0,1],n)):t}function vH(t,e){return e?t.slice().reverse():t}function gH(t){lE.call(this,null,t)}Lb(hH,lE,{transform:function(t,e){var n=e.dataflow,r=this.value,i=function(t){var e,n=t.type,r="";if(n===_j)return _j+"-"+kj;(function(t){var e=t.type;return tI(e)&&e!==Aj&&e!==Pj&&(t.scheme||t.range&&t.range.length&&t.range.every(Vb))})(t)&&(r=2===(e=t.rawDomain?t.rawDomain.length:t.domain?t.domain.length+ +(null!=t.domainMid):0)?_j+"-":3===e?Dj+"-":"");return(r+n||kj).toLowerCase()}(t);for(i in r&&i===r.type||(this.value=r=Kj(i)()),t)if(!fH[i]){if("padding"===i&&sH(r.type))continue;wb(r[i])?r[i](t[i]):n.warn("Unsupported scale property: "+i)}return function(t,e,n){var r=t.type,i=e.round||!1,o=e.range;if(null!=e.rangeStep)o=function(t,e,n){t!==Rj&&t!==Ij&&Ty("Only band and point scales support rangeStep.");var r=(null!=e.paddingOuter?e.paddingOuter:e.padding)||0,i=t===Ij?1:(null!=e.paddingInner?e.paddingInner:e.padding)||0;return[0,e.rangeStep*Sj(n,i,r)]}(r,e,n);else if(e.scheme&&(o=function(t,e,n){var r,i=e.schemeExtent;qy(e.scheme)?r=lI(e.scheme,e.interpolate,e.interpolateGamma):(r=vI(e.scheme.toLowerCase()))||Ty("Unrecognized scheme name: ".concat(e.scheme));return n=t===Fj?n+1:t===Lj?n-1:t===Tj||t===Zj?+e.schemeCount||uH:n,iI(t)?pH(r,i,e.reverse):wb(r)?uI(pH(r,i),n):t===jj?r:r.slice(0,n)}(r,e,n),wb(o))){if(t.interpolator)return t.interpolator(o);Ty("Scale type ".concat(r," does not support interpolating color schemes."))}if(o&&iI(r))return t.interpolator(lI(vH(o,e.reverse),e.interpolate,e.interpolateGamma));o&&e.interpolate&&t.interpolate?t.interpolate(fI(e.interpolate,e.interpolateGamma)):wb(t.round)?t.round(i):wb(t.rangeRound)&&t.interpolate(i?dD:fD.Z);o&&t.range(vH(o,e.reverse))}(r,t,function(t,e,n){var r=e.bins;if(r&&!qy(r)){var i=t.domain(),o=i[0],a=tb(i),c=r.step,l=null==r.start?o:r.start,u=null==r.stop?a:r.stop;c||Ty("Scale bins parameter missing step property."),la&&(u=c*Math.floor(a/c)),r=jM(l,u+c/2,c)}r?t.bins=r:t.bins&&delete t.bins;t.type===Lj&&(r?e.domain||e.domainRaw||(t.domain(r),n=r.length):t.bins=t.domain());return n}(r,t,function(t,e,n){var r=function(t,e,n){return e?(t.domain(dH(t.type,e,n)),e.length):-1}(t,e.domainRaw,n);if(r>-1)return r;var i,o,a=e.domain,c=t.type,l=e.zero||void 0===e.zero&&function(t){var e=t.type;return!t.bins&&(e===kj||e===Oj||e===Ej)}(t);if(!a)return 0;sH(c)&&e.padding&&a[0]!==tb(a)&&(a=function(t,e,n,r,i,o){var a=Math.abs(tb(n)-n[0]),c=a/(a-2*r),l=t===Cj?pb(e,null,c):t===Ej?vb(e,null,c,.5):t===Oj?vb(e,null,c,i||1):t===Mj?gb(e,null,c,o||1):db(e,null,c);return e=e.slice(),e[0]=l[0],e[e.length-1]=l[1],e}(c,a,e.range,e.padding,e.exponent,e.constant));if((l||null!=e.domainMin||null!=e.domainMax||null!=e.domainMid)&&(i=(a=a.slice()).length-1||1,l&&(a[0]>0&&(a[0]=0),a[i]<0&&(a[i]=0)),null!=e.domainMin&&(a[0]=e.domainMin),null!=e.domainMax&&(a[i]=e.domainMax),null!=e.domainMid)){var u=(o=e.domainMid)>a[i]?i+1:oh&&(h=f),n&&s.sort(n)}return d.max=h,d}(e.source,t.groupby,u,s),r=0,i=n.length,o=n.max;r0){for(o=r[--i];i>0&&(t=o,!(n=(e=r[--i])-((o=t+e)-t))););i>0&&(n<0&&r[i-1]<0||n>0&&r[i-1]>0)&&(e=2*n)==(t=o+e)-o&&(o=t)}return o}}]),t}();var ZH=1e-6,FH=1e-12,jH=Math.PI,IH=jH/2,RH=jH/4,LH=2*jH,NH=180/jH,BH=jH/180,zH=Math.abs,UH=Math.atan,HH=Math.atan2,WH=Math.cos,VH=Math.ceil,GH=Math.exp,XH=(Math.floor,Math.hypot),qH=Math.log,YH=Math.pow,$H=Math.sin,KH=Math.sign||function(t){return t>0?1:t<0?-1:0},JH=Math.sqrt,QH=Math.tan;function tW(t){return t>1?0:t<-1?jH:Math.acos(t)}function eW(t){return t>1?IH:t<-1?-IH:Math.asin(t)}function nW(){}var rW,iW,oW,aW,cW=new TH,lW=new TH,uW={point:nW,lineStart:nW,lineEnd:nW,polygonStart:function(){uW.lineStart=sW,uW.lineEnd=dW},polygonEnd:function(){uW.lineStart=uW.lineEnd=uW.point=nW,cW.add(zH(lW)),lW=new TH},result:function(){var t=cW/2;return cW=new TH,t}};function sW(){uW.point=fW}function fW(t,e){uW.point=hW,rW=oW=t,iW=aW=e}function hW(t,e){lW.add(aW*t-oW*e),oW=t,aW=e}function dW(){hW(rW,iW)}var pW=uW,vW=1/0,gW=vW,mW=-vW,yW=mW,bW={point:function(t,e){tmW&&(mW=t);eyW&&(yW=e)},lineStart:nW,lineEnd:nW,polygonStart:nW,polygonEnd:nW,result:function(){var t=[[vW,gW],[mW,yW]];return mW=yW=-(gW=vW=1/0),t}};var xW,wW,SW,kW,CW=bW,OW=0,EW=0,MW=0,AW=0,PW=0,_W=0,DW=0,TW=0,ZW=0,FW={point:jW,lineStart:IW,lineEnd:NW,polygonStart:function(){FW.lineStart=BW,FW.lineEnd=zW},polygonEnd:function(){FW.point=jW,FW.lineStart=IW,FW.lineEnd=NW},result:function(){var t=ZW?[DW/ZW,TW/ZW]:_W?[AW/_W,PW/_W]:MW?[OW/MW,EW/MW]:[NaN,NaN];return OW=EW=MW=AW=PW=_W=DW=TW=ZW=0,t}};function jW(t,e){OW+=t,EW+=e,++MW}function IW(){FW.point=RW}function RW(t,e){FW.point=LW,jW(SW=t,kW=e)}function LW(t,e){var n=t-SW,r=e-kW,i=JH(n*n+r*r);AW+=i*(SW+t)/2,PW+=i*(kW+e)/2,_W+=i,jW(SW=t,kW=e)}function NW(){FW.point=jW}function BW(){FW.point=UW}function zW(){HW(xW,wW)}function UW(t,e){FW.point=HW,jW(xW=SW=t,wW=kW=e)}function HW(t,e){var n=t-SW,r=e-kW,i=JH(n*n+r*r);AW+=i*(SW+t)/2,PW+=i*(kW+e)/2,_W+=i,DW+=(i=kW*t-SW*e)*(SW+t),TW+=i*(kW+e),ZW+=3*i,jW(SW=t,kW=e)}var WW=FW;function VW(t){this._context=t}VW.prototype={_radius:4.5,pointRadius:function(t){return this._radius=t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(t,e){switch(this._point){case 0:this._context.moveTo(t,e),this._point=1;break;case 1:this._context.lineTo(t,e);break;default:this._context.moveTo(t+this._radius,e),this._context.arc(t,e,this._radius,0,LH)}},result:nW};var GW,XW,qW,YW,$W,KW=new TH,JW={point:nW,lineStart:function(){JW.point=QW},lineEnd:function(){GW&&tV(XW,qW),JW.point=nW},polygonStart:function(){GW=!0},polygonEnd:function(){GW=null},result:function(){var t=+KW;return KW=new TH,t}};function QW(t,e){JW.point=tV,XW=YW=t,qW=$W=e}function tV(t,e){YW-=t,$W-=e,KW.add(JH(YW*YW+$W*$W)),YW=t,$W=e}var eV,nV,rV,iV,oV,aV,cV,lV,uV=JW,sV=function(){function t(e){(0,Rm.Z)(this,t),this._append=null==e?fV:function(t){var e=Math.floor(t);if(!(e>=0))throw new RangeError("invalid digits: ".concat(t));if(e>15)return fV;if(e!==oV){var n=Math.pow(10,e);oV=e,aV=function(t){var e=1;this._+=t[0];for(var r=t.length;e=0))throw new RangeError("invalid digits: ".concat(t));i=n}return null===e&&(r=new sV(i)),a},a.projection(t).digits(i).context(e)}function dV(){var t,e=[];return{point:function(e,n,r){t.push([e,n,r])},lineStart:function(){e.push(t=[])},lineEnd:nW,rejoin:function(){e.length>1&&e.push(e.pop().concat(e.shift()))},result:function(){var n=e;return e=[],t=null,n}}}function pV(t,e){return zH(t[0]-e[0])=0;--o)i.point((s=u[o])[0],s[1]);else r(h.x,h.p.x,-1,i);h=h.p}u=(h=h.o).z,d=!d}while(!h.v);i.lineEnd()}}}function mV(t){if(e=t.length){for(var e,n,r=0,i=t[0];++r=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function AV(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=0?1:-1,E=O*C,M=E>jH,A=g*S;if(l.add(HH(A*O*$H(E),m*k+A*WH(E))),a+=M?C+O*LH:C,M^p>=n^x>=n){var P=wV(bV(d),bV(b));CV(P);var _=wV(o,P);CV(_);var D=(M^C>=0?-1:1)*eW(_[2]);(r>D||r===D&&(P[0]||P[1]))&&(c+=M^C>=0?1:-1)}}return(a<-ZH||a0){for(f||(i.polygonStart(),f=!0),i.lineStart(),t=0;t1&&2&l&&h.push(h.pop().concat(h.shift())),a.push(h.filter(TV))}return h}}function TV(t){return t.length>1}function ZV(t,e){return((t=t.x)[0]<0?t[1]-IH-ZH:IH-t[1])-((e=e.x)[0]<0?e[1]-IH-ZH:IH-e[1])}var FV=DV((function(){return!0}),(function(t){var e,n=NaN,r=NaN,i=NaN;return{lineStart:function(){t.lineStart(),e=1},point:function(o,a){var c=o>0?jH:-jH,l=zH(o-n);zH(l-jH)0?IH:-IH),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(c,r),t.point(o,r),e=0):i!==c&&l>=jH&&(zH(n-i)ZH?UH(($H(e)*(o=WH(r))*$H(n)-$H(r)*(i=WH(e))*$H(t))/(i*o*a)):(e+r)/2}(n,r,o,a),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(c,r),e=0),t.point(n=o,r=a),i=c},lineEnd:function(){t.lineEnd(),n=r=NaN},clean:function(){return 2-e}}}),(function(t,e,n,r){var i;if(null==t)i=n*IH,r.point(-jH,i),r.point(0,i),r.point(jH,i),r.point(jH,0),r.point(jH,-i),r.point(0,-i),r.point(-jH,-i),r.point(-jH,0),r.point(-jH,i);else if(zH(t[0]-e[0])>ZH){var o=t[0]0?io)&&(i+=r*LH));for(var u,s=i;r>0?s>o:s0)do{u.point(0===s||3===s?t:n,s>1?r:e)}while((s=(s+c+4)%4)!==f);else u.point(o[0],o[1])}function a(r,i){return zH(r[0]-t)0?0:3:zH(r[0]-n)0?2:1:zH(r[1]-e)0?1:0:i>0?3:2}function c(t,e){return l(t.x,e.x)}function l(t,e){var n=a(t,1),r=a(e,1);return n!==r?n-r:0===n?e[1]-t[1]:1===n?t[0]-e[0]:2===n?t[1]-e[1]:e[0]-t[0]}return function(a){var l,u,s,f,h,d,p,v,g,m,y,b=a,x=dV(),w={point:S,lineStart:function(){w.point=k,u&&u.push(s=[]);m=!0,g=!1,p=v=NaN},lineEnd:function(){l&&(k(f,h),d&&g&&x.rejoin(),l.push(x.result()));w.point=S,g&&b.lineEnd()},polygonStart:function(){b=x,l=[],u=[],y=!0},polygonEnd:function(){var e=function(){for(var e=0,n=0,i=u.length;nr&&(h-o)*(r-a)>(d-a)*(t-o)&&++e:d<=r&&(h-o)*(r-a)<(d-a)*(t-o)&&--e;return e}(),n=y&&e,i=(l=_V(l)).length;(n||i)&&(a.polygonStart(),n&&(a.lineStart(),o(null,null,1,a),a.lineEnd()),i&&gV(l,c,e,o,a),a.polygonEnd());b=a,l=u=s=null}};function S(t,e){i(t,e)&&b.point(t,e)}function k(o,a){var c=i(o,a);if(u&&s.push([o,a]),m)f=o,h=a,d=c,m=!1,c&&(b.lineStart(),b.point(o,a));else if(c&&g)b.point(o,a);else{var l=[p=Math.max(LV,Math.min(RV,p)),v=Math.max(LV,Math.min(RV,v))],x=[o=Math.max(LV,Math.min(RV,o)),a=Math.max(LV,Math.min(RV,a))];!function(t,e,n,r,i,o){var a,c=t[0],l=t[1],u=0,s=1,f=e[0]-c,h=e[1]-l;if(a=n-c,f||!(a>0)){if(a/=f,f<0){if(a0){if(a>s)return;a>u&&(u=a)}if(a=i-c,f||!(a<0)){if(a/=f,f<0){if(a>s)return;a>u&&(u=a)}else if(f>0){if(a0)){if(a/=h,h<0){if(a0){if(a>s)return;a>u&&(u=a)}if(a=o-l,h||!(a<0)){if(a/=h,h<0){if(a>s)return;a>u&&(u=a)}else if(h>0){if(a0&&(t[0]=c+u*f,t[1]=l+u*h),s<1&&(e[0]=c+s*f,e[1]=l+s*h),!0}}}}}(l,x,t,e,n,r)?c&&(b.lineStart(),b.point(o,a),y=!1):(g||(b.lineStart(),b.point(l[0],l[1])),b.point(x[0],x[1]),c||b.lineEnd(),y=!1)}p=o,v=a,g=c}return w}}function BV(t,e){function n(n,r){return n=t(n,r),e(n[0],n[1])}return t.invert&&e.invert&&(n.invert=function(n,r){return(n=e.invert(n,r))&&t.invert(n[0],n[1])}),n}function zV(t,e){return zH(t)>jH&&(t-=Math.round(t/LH)*LH),[t,e]}function UV(t,e,n){return(t%=LH)?e||n?BV(WV(t),VV(e,n)):WV(t):e||n?VV(e,n):zV}function HV(t){return function(e,n){return zH(e+=t)>jH&&(e-=Math.round(e/LH)*LH),[e,n]}}function WV(t){var e=HV(t);return e.invert=HV(-t),e}function VV(t,e){var n=WH(t),r=$H(t),i=WH(e),o=$H(e);function a(t,e){var a=WH(e),c=WH(t)*a,l=$H(t)*a,u=$H(e),s=u*n+c*r;return[HH(l*i-s*o,c*n-u*r),eW(s*i+l*o)]}return a.invert=function(t,e){var a=WH(e),c=WH(t)*a,l=$H(t)*a,u=$H(e),s=u*i-l*o;return[HH(l*i+u*o,c*n+s*r),eW(s*n-c*r)]},a}function GV(t){return function(e){var n=new XV;for(var r in t)n[r]=t[r];return n.stream=e,n}}function XV(){}function qV(t,e,n){var r=t.clipExtent&&t.clipExtent();return t.scale(150).translate([0,0]),null!=r&&t.clipExtent(null),DH(n,t.stream(CW)),e(CW.result()),null!=r&&t.clipExtent(r),t}function YV(t,e,n){return qV(t,(function(n){var r=e[1][0]-e[0][0],i=e[1][1]-e[0][1],o=Math.min(r/(n[1][0]-n[0][0]),i/(n[1][1]-n[0][1])),a=+e[0][0]+(r-o*(n[1][0]+n[0][0]))/2,c=+e[0][1]+(i-o*(n[1][1]+n[0][1]))/2;t.scale(150*o).translate([a,c])}),n)}function $V(t,e,n){return YV(t,[[0,0],e],n)}function KV(t,e,n){return qV(t,(function(n){var r=+e,i=r/(n[1][0]-n[0][0]),o=(r-i*(n[1][0]+n[0][0]))/2,a=-i*n[0][1];t.scale(150*i).translate([o,a])}),n)}function JV(t,e,n){return qV(t,(function(n){var r=+e,i=r/(n[1][1]-n[0][1]),o=-i*n[0][0],a=(r-i*(n[1][1]+n[0][1]))/2;t.scale(150*i).translate([o,a])}),n)}zV.invert=zV,XV.prototype={constructor:XV,point:function(t,e){this.stream.point(t,e)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};var QV=16,tG=WH(30*BH);function eG(t,e){return+e?function(t,e){function n(r,i,o,a,c,l,u,s,f,h,d,p,v,g){var m=u-r,y=s-i,b=m*m+y*y;if(b>4*e&&v--){var x=a+h,w=c+d,S=l+p,k=JH(x*x+w*w+S*S),C=eW(S/=k),O=zH(zH(S)-1)e||zH((m*P+y*_)/b-.5)>.3||a*h+c*d+l*p0,i=zH(e)>ZH;function o(t,n){return WH(t)*WH(n)>e}function a(t,n,r){var i=[1,0,0],o=wV(bV(t),bV(n)),a=xV(o,o),c=o[0],l=a-c*c;if(!l)return!r&&t;var u=e*a/l,s=-e*c/l,f=wV(i,o),h=kV(i,u);SV(h,kV(o,s));var d=f,p=xV(h,d),v=xV(d,d),g=p*p-v*(xV(h,h)-1);if(!(g<0)){var m=JH(g),y=kV(d,(-p-m)/v);if(SV(y,h),y=yV(y),!r)return y;var b,x=t[0],w=n[0],S=t[1],k=n[1];w0^y[1]<(zH(y[0]-x)jH^(x<=y[0]&&y[0]<=w)){var E=kV(d,(-p+m)/v);return SV(E,h),[y,yV(E)]}}}function c(e,n){var i=r?t:jH-t,o=0;return e<-i?o|=1:e>i&&(o|=2),n<-i?o|=4:n>i&&(o|=8),o}return DV(o,(function(t){var e,n,l,u,s;return{lineStart:function(){u=l=!1,s=1},point:function(f,h){var d,p=[f,h],v=o(f,h),g=r?v?0:c(f,h):v?c(f+(f<0?jH:-jH),h):0;if(!e&&(u=l=v)&&t.lineStart(),v!==l&&(!(d=a(e,p))||pV(e,d)||pV(p,d))&&(p[2]=1),v!==l)s=0,v?(t.lineStart(),d=a(p,e),t.point(d[0],d[1])):(d=a(e,p),t.point(d[0],d[1],2),t.lineEnd()),e=d;else if(i&&e&&r^v){var m;g&n||!(m=a(p,e,!0))||(s=0,r?(t.lineStart(),t.point(m[0][0],m[0][1]),t.point(m[1][0],m[1][1]),t.lineEnd()):(t.point(m[1][0],m[1][1]),t.lineEnd(),t.lineStart(),t.point(m[0][0],m[0][1],3)))}!v||e&&pV(e,p)||t.point(p[0],p[1]),e=p,l=v,n=g},lineEnd:function(){l&&t.lineEnd(),e=null},clean:function(){return s|(u&&l)<<1}}}),(function(e,r,i,o){jV(o,t,n,i,e,r)}),r?[0,-t]:[-jH,t-jH])}(S=t*BH):(S=null,FV),_()):S*NH},M.clipExtent=function(t){return arguments.length?(O=null==t?(C=r=i=o=null,OH):NV(C=+t[0][0],r=+t[0][1],i=+t[1][0],o=+t[1][1]),_()):null==C?null:[[C,r],[i,o]]},M.scale=function(t){return arguments.length?(f=+t,P()):f},M.translate=function(t){return arguments.length?(h=+t[0],d=+t[1],P()):[h,d]},M.center=function(t){return arguments.length?(p=t[0]%360*BH,v=t[1]%360*BH,P()):[p*NH,v*NH]},M.rotate=function(t){return arguments.length?(g=t[0]%360*BH,m=t[1]%360*BH,y=t.length>2?t[2]%360*BH:0,P()):[g*NH,m*NH,y*NH]},M.angle=function(t){return arguments.length?(b=t%360*BH,P()):b*NH},M.reflectX=function(t){return arguments.length?(x=t?-1:1,P()):x<0},M.reflectY=function(t){return arguments.length?(w=t?-1:1,P()):w<0},M.precision=function(t){return arguments.length?(a=eG(c,E=t*t),_()):JH(E)},M.fitExtent=function(t,e){return YV(M,t,e)},M.fitSize=function(t,e){return $V(M,t,e)},M.fitWidth=function(t,e){return KV(M,t,e)},M.fitHeight=function(t,e){return JV(M,t,e)},function(){return e=t.apply(this,arguments),M.invert=e.invert&&A,P()}}function aG(t){var e=0,n=jH/3,r=oG(t),i=r(e,n);return i.parallels=function(t){return arguments.length?r(e=t[0]*BH,n=t[1]*BH):[e*NH,n*NH]},i}function cG(t,e){var n=$H(t),r=(n+$H(e))/2;if(zH(r)2?t[2]*BH:0),e.invert=function(e){return(e=t.invert(e[0]*BH,e[1]*BH))[0]*=NH,e[1]*=NH,e},e}(i.rotate()).invert([0,0]));return l(null==u?[[c[0]-o,c[1]-o],[c[0]+o,c[1]+o]]:t===pG?[[Math.max(c[0]-o,u),e],[Math.min(c[0]+o,n),r]]:[[u,Math.max(c[1]-o,e)],[n,Math.min(c[1]+o,r)]])}return i.scale=function(t){return arguments.length?(a(t),s()):a()},i.translate=function(t){return arguments.length?(c(t),s()):c()},i.center=function(t){return arguments.length?(o(t),s()):o()},i.clipExtent=function(t){return arguments.length?(null==t?u=e=n=r=null:(u=+t[0][0],e=+t[0][1],n=+t[1][0],r=+t[1][1]),s()):null==u?null:[[u,e],[n,r]]},s()}function gG(t){return QH((IH+t)/2)}function mG(t,e){var n=WH(t),r=t===e?$H(t):qH(n/WH(e))/qH(gG(e)/gG(t)),i=n*YH(gG(t),r)/r;if(!r)return pG;function o(t,e){i>0?e<-IH+ZH&&(e=-IH+ZH):e>IH-ZH&&(e=IH-ZH);var n=i/YH(gG(e),r);return[n*$H(r*t),i-n*WH(r*t)]}return o.invert=function(t,e){var n=i-e,o=KH(r)*JH(t*t+n*n),a=HH(t,zH(n))*KH(n);return n*r<0&&(a-=jH*KH(t)*KH(n)),[a/r,2*UH(YH(i/o,1/r))-IH]},o}function yG(t,e){return[t,e]}function bG(t,e){var n=WH(t),r=t===e?$H(t):(n-WH(e))/(e-t),i=n/r+t;if(zH(r)ZH&&--i>0);return[t/(.8707+(o=r*r)*(o*(o*o*o*(.003971-.001529*o)-.013791)-.131979)),r]},AG.invert=fG(eW),PG.invert=fG((function(t){return 2*UH(t)})),_G.invert=function(t,e){return[-e,2*UH(GH(t))-IH]};var DG=Math.abs,TG=(Math.atan,Math.atan2,Math.ceil,Math.cos),ZG=(Math.exp,Math.floor,Math.log,Math.max,Math.min,Math.pow,Math.round,Math.sign,Math.sin),FG=(Math.tan,1e-6),jG=Math.PI,IG=jG/2,RG=(Math.SQRT1_2,NG(2));NG(jG);function LG(t){return t>1?IG:t<-1?-IG:Math.asin(t)}function NG(t){return t>0?Math.sqrt(t):0}function BG(t,e){var n,r=t*ZG(e),i=30;do{e-=n=(e+ZG(e)-r)/(1+TG(e))}while(DG(n)>FG&&--i>0);return e/2}var zG=function(t,e,n){function r(r,i){return[t*r*TG(i=BG(n,i)),e*ZG(i)]}return r.invert=function(r,i){return i=LG(i/e),[r/(t*TG(i)),LG((2*i+ZG(2*i))/n)]},r}(RG/IG,RG,jG);var UG=hV(),HG=["clipAngle","clipExtent","scale","translate","center","rotate","parallels","precision","reflectX","reflectY","coefficient","distance","fraction","lobes","parallel","radius","ratio","spacing","tilt"];function WG(t,e){if(!t||"string"!=typeof t)throw new Error("Projection type must be a name string.");return t=t.toLowerCase(),arguments.length>1?(GG[t]=function(t,e){return function n(){var r=e();return r.type=t,r.path=hV().projection(r),r.copy=r.copy||function(){var t=n();return HG.forEach((function(e){r[e]&&t[e](r[e]())})),t.path.pointRadius(r.path.pointRadius()),t},$j(r)}}(t,e),this):GG[t]||null}function VG(t){return t&&t.path||UG}var GG={albers:uG,albersusa:function(){var t,e,n,r,i,o,a=uG(),c=lG().rotate([154,0]).center([-2,58.5]).parallels([55,65]),l=lG().rotate([157,0]).center([-3,19.9]).parallels([8,18]),u={point:function(t,e){o=[t,e]}};function s(t){var e=t[0],a=t[1];return o=null,n.point(e,a),o||(r.point(e,a),o)||(i.point(e,a),o)}function f(){return t=e=null,s}return s.invert=function(t){var e=a.scale(),n=a.translate(),r=(t[0]-n[0])/e,i=(t[1]-n[1])/e;return(i>=.12&&i<.234&&r>=-.425&&r<-.214?c:i>=.166&&i<.234&&r>=-.214&&r<-.115?l:a).invert(t)},s.stream=function(n){return t&&e===n?t:(r=[a.stream(e=n),c.stream(n),l.stream(n)],i=r.length,t={point:function(t,e){for(var n=-1;++n2?t[2]+90:90]):[(t=n())[0],t[1],t[2]-90]},n([0,0,90]).scale(159.155)}};for(var XG in GG)WG(XG,GG[XG]);function qG(t,e,n){var r=jM(t,e-ZH,n).concat(e);return function(t){return r.map((function(e){return[t,e]}))}}function YG(t,e,n){var r=jM(t,e-ZH,n).concat(e);return function(t){return r.map((function(e){return[e,t]}))}}function $G(){var t,e,n,r,i,o,a,c,l,u,s,f,h=10,d=h,p=90,v=360,g=2.5;function m(){return{type:"MultiLineString",coordinates:y()}}function y(){return jM(VH(r/p)*p,n,p).map(s).concat(jM(VH(c/v)*v,a,v).map(f)).concat(jM(VH(e/h)*h,t,h).filter((function(t){return zH(t%p)>ZH})).map(l)).concat(jM(VH(o/d)*d,i,d).filter((function(t){return zH(t%v)>ZH})).map(u))}return m.lines=function(){return y().map((function(t){return{type:"LineString",coordinates:t}}))},m.outline=function(){return{type:"Polygon",coordinates:[s(r).concat(f(a).slice(1),s(n).reverse().slice(1),f(c).reverse().slice(1))]}},m.extent=function(t){return arguments.length?m.extentMajor(t).extentMinor(t):m.extentMinor()},m.extentMajor=function(t){return arguments.length?(r=+t[0][0],n=+t[1][0],c=+t[0][1],a=+t[1][1],r>n&&(t=r,r=n,n=t),c>a&&(t=c,c=a,a=t),m.precision(g)):[[r,c],[n,a]]},m.extentMinor=function(n){return arguments.length?(e=+n[0][0],t=+n[1][0],o=+n[0][1],i=+n[1][1],e>t&&(n=e,e=t,t=n),o>i&&(n=o,o=i,i=n),m.precision(g)):[[e,o],[t,i]]},m.step=function(t){return arguments.length?m.stepMajor(t).stepMinor(t):m.stepMinor()},m.stepMajor=function(t){return arguments.length?(p=+t[0],v=+t[1],m):[p,v]},m.stepMinor=function(t){return arguments.length?(h=+t[0],d=+t[1],m):[h,d]},m.precision=function(h){return arguments.length?(g=+h,l=qG(o,i,90),u=YG(e,t,g),s=qG(c,a,90),f=YG(r,n,g),m):g},m.extentMajor([[-180,-90+ZH],[180,90-ZH]]).extentMinor([[-180,-80-ZH],[180,80+ZH]])}function KG(){}var JG=[[],[[[1,1.5],[.5,1]]],[[[1.5,1],[1,1.5]]],[[[1.5,1],[.5,1]]],[[[1,.5],[1.5,1]]],[[[1,1.5],[.5,1]],[[1,.5],[1.5,1]]],[[[1,.5],[1,1.5]]],[[[1,.5],[.5,1]]],[[[.5,1],[1,.5]]],[[[1,1.5],[1,.5]]],[[[.5,1],[1,.5]],[[1.5,1],[1,1.5]]],[[[1.5,1],[1,.5]]],[[[.5,1],[1.5,1]]],[[[1,1.5],[1.5,1]]],[[[.5,1],[1,1.5]]],[]];function QG(){var t=1,e=1,n=a;function r(t,e){return e.map((function(e){return i(t,e)}))}function i(r,i){var a=[],c=[];return function(n,r,i){var a,c,l,u,s,f,h=new Array,d=new Array;a=c=-1,u=n[0]>=r,JG[u<<1].forEach(p);for(;++a=r,JG[l|u<<1].forEach(p);JG[u<<0].forEach(p);for(;++c=r,s=n[c*t]>=r,JG[u<<1|s<<2].forEach(p);++a=r,f=s,s=n[c*t+a+1]>=r,JG[l|u<<1|s<<2|f<<3].forEach(p);JG[u|s<<3].forEach(p)}a=-1,s=n[c*t]>=r,JG[s<<2].forEach(p);for(;++a=r,JG[s<<2|f<<3].forEach(p);function p(t){var e,n,r=[t[0][0]+a,t[0][1]+c],l=[t[1][0]+a,t[1][1]+c],u=o(r),s=o(l);(e=d[u])?(n=h[s])?(delete d[e.end],delete h[n.start],e===n?(e.ring.push(l),i(e.ring)):h[e.start]=d[n.end]={start:e.start,end:n.end,ring:e.ring.concat(n.ring)}):(delete d[e.end],e.ring.push(l),d[e.end=s]=e):(e=h[s])?(n=d[u])?(delete h[e.start],delete d[n.end],e===n?(e.ring.push(l),i(e.ring)):h[n.start]=d[e.end]={start:n.start,end:e.end,ring:n.ring.concat(e.ring)}):(delete h[e.start],e.ring.unshift(r),h[e.start=u]=e):h[u]=d[s]={start:u,end:s,ring:[r,l]}}JG[s<<3].forEach(p)}(r,i,(function(t){n(t,r,i),function(t){var e=0,n=t.length,r=t[n-1][1]*t[0][0]-t[n-1][0]*t[0][1];for(;++e0?a.push([t]):c.push(t)})),c.forEach((function(t){for(var e,n=0,r=a.length;n0&&a0&&c=0&&o>=0||Ty("invalid size"),t=i,e=o,r},r.smooth=function(t){return arguments.length?(n=t?a:KG,r):n===a},r}function tX(t,e){for(var n,r=-1,i=e.length;++rr!=d>r&&n<(h-u)*(r-s)/(d-s)+u&&(i=-i)}return i}function nX(t,e,n){var r,i,o,a;return function(t,e,n){return(e[0]-t[0])*(n[1]-t[1])==(n[0]-t[0])*(e[1]-t[1])}(t,e,n)&&(i=t[r=+(t[0]===e[0])],o=n[r],a=e[r],i<=o&&o<=a||a<=o&&o<=i)}function rX(t,e,n){return function(r){var i=Db(r),o=n?Math.min(i[0],0):i[0],a=i[1],c=a-o,l=e?Dx(o,a,t):c/(t+1);return jM(o+l,a,l)}}function iX(t){lE.call(this,null,t)}function oX(t,e,n,r,i){var o=t.x1||0,a=t.y1||0,c=e*n<0;function l(t){t.forEach(u)}function u(t){c&&t.reverse(),t.forEach(s)}function s(t){t[0]=(t[0]-o)*e+r,t[1]=(t[1]-a)*n+i}return function(t){return t.coordinates.forEach(l),t}}function aX(t,e,n){var r=t>=0?t:NE(e,n);return Math.round((Math.sqrt(4*r*r+1)-1)/2)}function cX(t){return wb(t)?t:Ab(+t)}function lX(){var t=function(t){return t[0]},e=function(t){return t[1]},n=Ly,r=[-1,-1],i=960,o=500,a=2;function c(c,l){var u=aX(r[0],c,t)>>a,s=aX(r[1],c,e)>>a,f=u?u+2:0,h=s?s+2:0,d=2*f+(i>>a),p=2*h+(o>>a),v=new Float32Array(d*p),g=new Float32Array(d*p),m=v;c.forEach((function(r){var i=f+(+t(r)>>a),o=h+(+e(r)>>a);i>=0&&i=0&&o0&&s>0?(uX(d,p,v,g,u),sX(d,p,g,v,s),uX(d,p,v,g,u),sX(d,p,g,v,s),uX(d,p,v,g,u),sX(d,p,g,v,s)):u>0?(uX(d,p,v,g,u),uX(d,p,g,v,u),uX(d,p,v,g,u),m=g):s>0&&(sX(d,p,v,g,s),sX(d,p,g,v,s),sX(d,p,v,g,s),m=g);for(var y=l?Math.pow(2,-2*a):1/XU(m),b=0,x=d*p;b>a),y2:h+(o>>a)}}return c.x=function(e){return arguments.length?(t=cX(e),c):t},c.y=function(t){return arguments.length?(e=cX(t),c):e},c.weight=function(t){return arguments.length?(n=cX(t),c):n},c.size=function(t){if(!arguments.length)return[i,o];var e=+t[0],n=+t[1];return e>=0&&n>=0||Ty("invalid size"),i=e,o=n,c},c.cellSize=function(t){return arguments.length?((t=+t)>=1||Ty("invalid cell size"),a=Math.floor(Math.log(t)/Math.LN2),c):1<=i&&(c>=o&&(l-=n[c-o+a*t]),r[c-i+a*t]=l/Math.min(c+1,t-1+o-c,o))}function sX(t,e,n,r,i){for(var o=1+(i<<1),a=0;a=i&&(c>=o&&(l-=n[a+(c-o)*t]),r[a+(c-i)*t]=l/Math.min(c+1,e-1+o-c,o))}function fX(t){lE.call(this,null,t)}iX.Definition={type:"Isocontour",metadata:{generates:!0},params:[{name:"field",type:"field"},{name:"thresholds",type:"number",array:!0},{name:"levels",type:"number"},{name:"nice",type:"boolean",default:!1},{name:"resolve",type:"enum",values:["shared","independent"],default:"independent"},{name:"zero",type:"boolean",default:!0},{name:"smooth",type:"boolean",default:!0},{name:"scale",type:"number",expr:!0},{name:"translate",type:"number",array:!0,expr:!0},{name:"as",type:"string",null:!0,default:"contour"}]},Lb(iX,lE,{transform:function(t,e){if(this.value&&!e.changed()&&!t.modified())return e.StopPropagation;var n=e.fork(e.NO_SOURCE|e.NO_FIELDS),r=e.materialize(e.SOURCE).source,i=t.field||Iy,o=QG().smooth(!1!==t.smooth),a=t.thresholds||function(t,e,n){var r=rX(n.levels||10,n.nice,!1!==n.zero);return"shared"!==n.resolve?r:r(t.map((function(t){return pE(e(t).values)})))}(r,i,t),c=null===t.as?null:t.as||"contour",l=[];return r.forEach((function(e){var n=i(e),r=o.size([n.width,n.height])(n.values,qy(a)?a:a(n.values));!function(t,e,n,r){var i=r.scale||e.scale,o=r.translate||e.translate;wb(i)&&(i=i(n,r));wb(o)&&(o=o(n,r));if((1===i||null==i)&&!o)return;var a=(Hb(i)?i:i[0])||1,c=(Hb(i)?i:i[1])||1,l=o&&o[0]||0,u=o&&o[1]||0;t.forEach(oX(e,a,c,l,u))}(r,n,e,t),r.forEach((function(t){l.push(AO(e,EO(null!=c?(0,V.Z)({},c,t):t)))}))})),this.value&&(n.rem=this.value),this.value=n.source=n.add=l,n}}),fX.Definition={type:"KDE2D",metadata:{generates:!0},params:[{name:"size",type:"number",array:!0,length:2,required:!0},{name:"x",type:"field",required:!0},{name:"y",type:"field",required:!0},{name:"weight",type:"field"},{name:"groupby",type:"field",array:!0},{name:"cellSize",type:"number"},{name:"bandwidth",type:"number",array:!0,length:2},{name:"counts",type:"boolean",default:!1},{name:"as",type:"string",default:"grid"}]};var hX=["x","y","weight","size","cellSize","bandwidth"];function dX(t,e){return hX.forEach((function(n){return null!=e[n]?t[n](e[n]):0})),t}function pX(t){lE.call(this,null,t)}Lb(fX,lE,{transform:function(t,e){if(this.value&&!e.changed()&&!t.modified())return e.StopPropagation;var n,r=e.fork(e.NO_SOURCE|e.NO_FIELDS),i=function(t,e){var n,r,i,o,a,c,l=[],u=function(t){return t(o)};if(null==e)l.push(t);else for(n={},r=0,i=t.length;r=(o=(v+m)/2))?v=o:m=o,(s=n>=(a=(g+y)/2))?g=a:y=a,i=d,!(d=d[f=s<<1|u]))return i[f]=p,t;if(c=+t._x.call(null,d.data),l=+t._y.call(null,d.data),e===c&&n===l)return p.next=d,i?i[f]=p:t._root=p,t;do{i=i?i[f]=new Array(4):t._root=new Array(4),(u=e>=(o=(v+m)/2))?v=o:m=o,(s=n>=(a=(g+y)/2))?g=a:y=a}while((f=s<<1|u)==(h=(l>=a)<<1|c>=o));return i[h]=d,i[f]=p,t}function MX(t,e,n,r,i){this.node=t,this.x0=e,this.y0=n,this.x1=r,this.y1=i}function AX(t){return t[0]}function PX(t){return t[1]}function _X(t,e,n){var r=new DX(null==e?AX:e,null==n?PX:n,NaN,NaN,NaN,NaN);return null==t?r:r.addAll(t)}function DX(t,e,n,r,i,o){this._x=t,this._y=e,this._x0=n,this._y0=r,this._x1=i,this._y1=o,this._root=void 0}function TX(t){for(var e={data:t.data},n=e;t=t.next;)n=n.next={data:t.data};return e}mX.Definition={type:"GeoJSON",metadata:{},params:[{name:"fields",type:"field",array:!0,length:2},{name:"geojson",type:"field"}]},Lb(mX,lE,{transform:function(t,e){var n,r=this._features,i=this._points,o=t.fields,a=o&&o[0],c=o&&o[1],l=t.geojson||!o&&Iy,u=e.ADD;n=t.modified()||e.changed(e.REM)||e.modified(Ay(l))||a&&e.modified(Ay(a))||c&&e.modified(Ay(c)),this.value&&!n||(u=e.SOURCE,this._features=r=[],this._points=i=[]),l&&e.visit(u,(function(t){return r.push(l(t))})),a&&c&&(e.visit(u,(function(t){var e=a(t),n=c(t);null!=e&&null!=n&&(e=+e)===e&&(n=+n)===n&&i.push([e,n])})),r=r.concat({type:vX,geometry:{type:"MultiPoint",coordinates:i}})),this.value={type:gX,features:r}}}),yX.Definition={type:"GeoPath",metadata:{modifies:!0},params:[{name:"projection",type:"projection"},{name:"field",type:"field"},{name:"pointRadius",type:"number",expr:!0},{name:"as",type:"string",default:"path"}]},Lb(yX,lE,{transform:function(t,e){var n=e.fork(e.ALL),r=this.value,i=t.field||Iy,o=t.as||"path",a=n.SOURCE;!r||t.modified()?(this.value=r=VG(t.projection),n.materialize().reflow()):a=i===Iy||e.modified(i.fields)?n.ADD_MOD:n.ADD;var c=function(t,e){var n=t.pointRadius();t.context(null),null!=e&&t.pointRadius(e);return n}(r,t.pointRadius);return n.visit(a,(function(t){return t[o]=r(i(t))})),r.pointRadius(c),n.modifies(o)}}),bX.Definition={type:"GeoPoint",metadata:{modifies:!0},params:[{name:"projection",type:"projection",required:!0},{name:"fields",type:"field",array:!0,required:!0,length:2},{name:"as",type:"string",array:!0,length:2,default:["x","y"]}]},Lb(bX,lE,{transform:function(t,e){var n,r=t.projection,i=t.fields[0],o=t.fields[1],a=t.as||["x","y"],c=a[0],l=a[1];function u(t){var e=r([i(t),o(t)]);e?(t[c]=e[0],t[l]=e[1]):(t[c]=void 0,t[l]=void 0)}return t.modified()?e=e.materialize().reflow(!0).visit(e.SOURCE,u):(n=e.modified(i.fields)||e.modified(o.fields),e.visit(n?e.ADD_MOD:e.ADD,u)),e.modifies(a)}}),xX.Definition={type:"GeoShape",metadata:{modifies:!0,nomod:!0},params:[{name:"projection",type:"projection"},{name:"field",type:"field",default:"datum"},{name:"pointRadius",type:"number",expr:!0},{name:"as",type:"string",default:"shape"}]},Lb(xX,lE,{transform:function(t,e){var n=e.fork(e.ALL),r=this.value,i=t.as||"shape",o=n.ADD;return r&&!t.modified()||(this.value=r=function(t,e,n){var r=null==n?function(n){return t(e(n))}:function(r){var i=t.pointRadius(),o=t.pointRadius(n)(e(r));return t.pointRadius(i),o};return r.context=function(e){return t.context(e),r},r}(VG(t.projection),t.field||Fy("datum"),t.pointRadius),n.materialize().reflow(),o=n.SOURCE),n.visit(o,(function(t){return t[i]=r})),n.modifies(i)}}),wX.Definition={type:"Graticule",metadata:{changes:!0,generates:!0},params:[{name:"extent",type:"array",array:!0,length:2,content:{type:"number",array:!0,length:2}},{name:"extentMajor",type:"array",array:!0,length:2,content:{type:"number",array:!0,length:2}},{name:"extentMinor",type:"array",array:!0,length:2,content:{type:"number",array:!0,length:2}},{name:"step",type:"number",array:!0,length:2},{name:"stepMajor",type:"number",array:!0,length:2,default:[90,360]},{name:"stepMinor",type:"number",array:!0,length:2,default:[10,10]},{name:"precision",type:"number",default:2.5}]},Lb(wX,lE,{transform:function(t,e){var n,r=this.value,i=this.generator;if(!r.length||t.modified())for(var o in t)wb(i[o])&&i[o](t[o]);return n=i(),r.length?e.mod.push(PO(r[0],n)):e.add.push(EO(n)),r[0]=n,e}}),SX.Definition={type:"heatmap",metadata:{modifies:!0},params:[{name:"field",type:"field"},{name:"color",type:"string",expr:!0},{name:"opacity",type:"number",expr:!0},{name:"resolve",type:"enum",values:["shared","independent"],default:"independent"},{name:"as",type:"string",default:"image"}]},Lb(SX,lE,{transform:function(t,e){if(!e.changed()&&!t.modified())return e.StopPropagation;var n=e.materialize(e.SOURCE).source,r="shared"===t.resolve,i=t.field||Iy,o=function(t,e){var n;wb(t)?(n=function(n){return t(n,e)},n.dep=kX(t)):t?n=Ab(t):(n=function(t){return t.$value/t.$max||0},n.dep=!0);return n}(t.opacity,t),a=function(t,e){var n;wb(t)?(n=function(n){return(0,DF.B8)(t(n,e))},n.dep=kX(t)):n=Ab((0,DF.B8)(t||"#888"));return n}(t.color,t),c=t.as||"image",l={$x:0,$y:0,$value:0,$max:r?pE(n.map((function(t){return pE(i(t).values)}))):0};return n.forEach((function(t){var e=i(t),n=_b({},t,l);r||(n.$max=pE(e.values||[])),t[c]=function(t,e,n,r){for(var i=t.width,o=t.height,a=t.x1||0,c=t.y1||0,l=t.x2||i,u=t.y2||o,s=t.values,f=s?function(t){return s[t]}:Ry,h=N_(l-a,u-c),d=h.getContext("2d"),p=d.getImageData(0,0,l-a,u-c),v=p.data,g=c,m=0;gs&&(s=r),if&&(f=i));if(l>s||u>f)return this;for(this.cover(l,u).cover(s,f),n=0;nt||t>=i||r>e||e>=o;)switch(c=(eh||(o=l.y0)>d||(a=l.x1)=m)<<1|t>=g)&&(l=p[p.length-1],p[p.length-1]=p[p.length-1-u],p[p.length-1-u]=l)}else{var y=t-+this._x.call(null,v.data),b=e-+this._y.call(null,v.data),x=y*y+b*b;if(x=(c=(p+g)/2))?p=c:g=c,(s=a>=(l=(v+m)/2))?v=l:m=l,e=d,!(d=d[f=s<<1|u]))return this;if(!d.length)break;(e[f+1&3]||e[f+2&3]||e[f+3&3])&&(n=e,h=f)}for(;d.data!==t;)if(r=d,!(d=d.next))return this;return(i=d.next)&&delete d.next,r?(i?r.next=i:delete r.next,this):e?(i?e[f]=i:delete e[f],(d=e[0]||e[1]||e[2]||e[3])&&d===(e[3]||e[2]||e[1]||e[0])&&!d.length&&(n?n[h]=d:this._root=d),this):(this._root=i,this)},ZX.removeAll=function(t){for(var e=0,n=t.length;e=0&&(n=t.slice(r+1),t=t.slice(0,r)),t&&!e.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:n}}))}(t+"",r),o=-1,a=i.length;if(!(arguments.length<2)){if(null!=e&&"function"!=typeof e)throw new Error("invalid callback: "+e);for(;++o0)for(var n,r,i=new Array(n),o=0;o=0&&e._call.call(void 0,t),e=e._next;--GX}()}finally{GX=0,function(){var t,e,n=HX,r=1/0;for(;n;)n._call?(r>n._time&&(r=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:HX=e);WX=t,cq(r)}(),KX=0}}function aq(){var t=QX.now(),e=t-$X;e>YX&&(JX-=e,$X=t)}function cq(t){GX||(XX&&(XX=clearTimeout(XX)),t-KX>24?(t<1/0&&(XX=setTimeout(oq,t-QX.now()-JX)),qX&&(qX=clearInterval(qX))):(qX||($X=QX.now(),qX=setInterval(aq,YX)),GX=1,tq(oq)))}rq.prototype=iq.prototype={constructor:rq,restart:function(t,e,n){if("function"!=typeof t)throw new TypeError("callback is not a function");n=(null==n?eq():+n)+(null==e?0:+e),this._next||WX===this||(WX?WX._next=this:HX=this,WX=this),this._call=t,this._time=n,cq()},stop:function(){this._call&&(this._call=null,this._time=1/0,cq())}};var lq=1664525,uq=1013904223,sq=4294967296;function fq(t){return t.x}function hq(t){return t.y}var dq=10,pq=Math.PI*(3-Math.sqrt(5));function vq(t){var e,n=1,r=.001,i=1-Math.pow(r,1/300),o=0,a=.6,c=new Map,l=iq(f),u=VX("tick","end"),s=function(){var t=1;return function(){return(t=(lq*t+uq)%sq)/sq}}();function f(){h(),u.call("tick",e),n1?(null==n?c.delete(t):c.set(t,p(n)),e):c.get(t)},find:function(e,n,r){var i,o,a,c,l,u=0,s=t.length;for(null==r?r=1/0:r*=r,u=0;u1?(u.on(t,n),e):u.on(t)}}}function gq(t){return t.index}function mq(t,e){var n=t.get(e);if(!n)throw new Error("node not found: "+e);return n}var yq={center:function(t,e){var n,r=1;function i(){var i,o,a=n.length,c=0,l=0;for(i=0;iu+p||os+p||al.index){var v=u-c.x-c.vx,g=s-c.y-c.vy,m=v*v+g*g;mt.r&&(t.r=t[e].r)}function l(){if(e){var r,i,o=e.length;for(n=new Array(o),r=0;r=c)){(t.data!==e||t.next)&&(0===f&&(p+=(f=jX(n))*f),0===h&&(p+=(h=jX(n))*h),p=0;)e+=n[r].value;else e=1;t.value=e}function Pq(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return _q(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _q(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function _q(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Tq(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=0;)i.tick();else if(i.stopped()&&i.restart(),!o)return e.StopPropagation;return this.finish(t,e)},finish:function(t,e){for(var n,r=e.dataflow,i=this._argops,o=0,a=i.length;o=0;--o)l.push(r=i[o]=new Bq(i[o])),r.parent=n,r.depth=n.depth+1;return c.eachBefore(Nq)}function Iq(t){return t.children}function Rq(t){return Array.isArray(t)?t[1]:null}function Lq(t){void 0!==t.data.value&&(t.value=t.data.value),t.data=t.data.data}function Nq(t){var e=0;do{t.height=e}while((t=t.parent)&&t.height<++e)}function Bq(t){this.data=t,this.depth=this.height=0,this.parent=null}function zq(t){return null==t?null:Uq(t)}function Uq(t){if("function"!=typeof t)throw new Error;return t}function Hq(){return 0}function Wq(t){return function(){return t}}Bq.prototype=jq.prototype=(0,V.Z)({constructor:Bq,count:function(){return this.eachAfter(Aq)},each:function(t,e){var n,r=-1,i=Pq(this);try{for(i.s();!(n=i.n()).done;){var o=n.value;t.call(e,o,++r,this)}}catch(a){i.e(a)}finally{i.f()}return this},eachAfter:function(t,e){for(var n,r,i,o=this,a=[o],c=[],l=-1;o=a.pop();)if(c.push(o),n=o.children)for(r=0,i=n.length;r=0;--r)o.push(n[r]);return this},find:function(t,e){var n,r=-1,i=Dq(this);try{for(i.s();!(n=i.n()).done;){var o=n.value;if(t.call(e,o,++r,this))return o}}catch(a){i.e(a)}finally{i.f()}},sum:function(t){return this.eachAfter((function(e){for(var n=+t(e.data)||0,r=e.children,i=r&&r.length;--i>=0;)n+=r[i].value;e.value=n}))},sort:function(t){return this.eachBefore((function(e){e.children&&e.children.sort(t)}))},path:function(t){for(var e=this,n=function(t,e){if(t===e)return t;var n=t.ancestors(),r=e.ancestors(),i=null;t=n.pop(),e=r.pop();for(;t===e;)i=t,t=n.pop(),e=r.pop();return i}(e,t),r=[e];e!==n;)e=e.parent,r.push(e);for(var i=r.length;t!==n;)r.splice(i,0,t),t=t.parent;return r},ancestors:function(){for(var t=this,e=[t];t=t.parent;)e.push(t);return e},descendants:function(){return Array.from(this)},leaves:function(){var t=[];return this.eachBefore((function(e){e.children||t.push(e)})),t},links:function(){var t=this,e=[];return t.each((function(n){n!==t&&e.push({source:n.parent,target:n})})),e},copy:function(){return jq(this).eachBefore(Lq)}},Symbol.iterator,Fq);var Vq=1664525,Gq=1013904223,Xq=4294967296;function qq(t,e){for(var n,r,i=0,o=(t=function(t,e){for(var n,r,i=t.length;i;)r=e()*i--|0,n=t[i],t[i]=t[r],t[r]=n;return t}(Array.from(t),e)).length,a=[];i0&&n*n>r*r+i*i}function Jq(t,e){for(var n=0;n1e-6?(M+Math.sqrt(M*M-4*E*A))/(2*E):A/M);return{x:r+S+k*P,y:i+C+O*P,r:P}}function nY(t,e,n){var r,i,o,a,c=t.x-e.x,l=t.y-e.y,u=c*c+l*l;u?(i=e.r+n.r,i*=i,a=t.r+n.r,i>(a*=a)?(r=(u+a-i)/(2*u),o=Math.sqrt(Math.max(0,a/u-r*r)),n.x=t.x-r*c-o*l,n.y=t.y-r*l+o*c):(r=(u+i-a)/(2*u),o=Math.sqrt(Math.max(0,i/u-r*r)),n.x=e.x+r*c-o*l,n.y=e.y+r*l+o*c)):(n.x=e.x+n.r,n.y=e.y)}function rY(t,e){var n=t.r+e.r-1e-6,r=e.x-t.x,i=e.y-t.y;return n>0&&n*n>r*r+i*i}function iY(t){var e=t._,n=t.next._,r=e.r+n.r,i=(e.x*n.r+n.x*e.r)/r,o=(e.y*n.r+n.y*e.r)/r;return i*i+o*o}function oY(t){this._=t,this.next=null,this.previous=null}function aY(t,e){if(!(o=(t=function(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}(t)).length))return 0;var n,r,i,o,a,c,l,u,s,f,h;if((n=t[0]).x=0,n.y=0,!(o>1))return n.r;if(r=t[1],n.x=-r.r,r.x=n.r,r.y=0,!(o>2))return n.r+r.r;nY(r,n,i=t[2]),n=new oY(n),r=new oY(r),i=new oY(i),n.next=i.previous=r,r.next=n.previous=i,i.next=r.previous=n;t:for(l=3;l=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function pY(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=0&&(u=h[S]).data===mY;--S)u.data=null}if(c.parent=vY,c.eachBefore((function(t){t.depth=t.parent.depth+1,--i})).eachBefore(Nq),c.parent=null,i>0)throw new Error("cycle");return c}return r.id=function(t){return arguments.length?(e=zq(t),r):e},r.parentId=function(t){return arguments.length?(n=zq(t),r):n},r.path=function(e){return arguments.length?(t=zq(e),r):t},r}function wY(t){var e=t.length;if(e<2)return"";for(;--e>1&&!SY(t,e););return t.slice(0,e)}function SY(t,e){if("/"===t[e]){for(var n=0;e>0&&"\\"===t[--e];)++n;if(0==(1&n))return!0}return!1}function kY(t,e){return t.parent===e.parent?1:2}function CY(t){var e=t.children;return e?e[0]:t.t}function OY(t){var e=t.children;return e?e[e.length-1]:t.t}function EY(t,e,n){var r=n/(e.i-t.i);e.c-=r,e.s+=n,t.c+=r,e.z+=n,e.m+=n}function MY(t,e,n){return t.a.parent===e.parent?t.a:n}function AY(t,e){this._=t,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=e}function PY(t,e){return t.parent===e.parent?1:2}function _Y(t,e){return t+e.x}function DY(t,e){return Math.max(t,e.y)}function TY(t,e,n,r,i){for(var o,a=t.children,c=-1,l=a.length,u=t.value&&(i-n)/t.value;++ch&&(h=c),g=s*s*v,(d=Math.max(h/g,g/f))>p){s-=c;break}p=d}m.push(a={value:s,dice:l1?e:1)},n}(ZY),IY=function t(e){function n(t,n,r,i,o){if((a=t._squarify)&&a.ratio===e)for(var a,c,l,u,s,f=-1,h=a.length,d=t.value;++f1?e:1)},n}(ZY);function RY(t,e,n){var r={};return t.each((function(t){var i=t.data;n(i)&&(r[e(i)]=t)})),t.lookup=r,t}function LY(t){lE.call(this,null,t)}LY.Definition={type:"Nest",metadata:{treesource:!0,changes:!0},params:[{name:"keys",type:"field",array:!0},{name:"generate",type:"boolean"}]};var NY=function(t){return t.values};function BY(){var t=[],e={entries:function(t){return r(n(t,0),0)},key:function(n){return t.push(n),e}};function n(e,r){if(r>=t.length)return e;for(var i,o,a,c=e.length,l=t[r++],u={},s={},f=-1;++ft.length)return e;var i=[];for(var o in e)i.push({key:o,values:r(e[o],n)});return i}return e}function zY(t){lE.call(this,null,t)}Lb(LY,lE,{transform:function(t,e){e.source||Ty("Nest transform requires an upstream data source.");var n=t.generate,r=t.modified(),i=e.clone(),o=this.value;return(!o||r||e.changed())&&(o&&o.each((function(t){t.children&&kO(t.data)&&i.rem.push(t.data)})),this.value=o=jq({values:bb(t.keys).reduce((function(t,e){return t.key(e),t}),BY()).entries(i.source)},NY),n&&o.each((function(t){t.children&&(t=EO(t.data),i.add.push(t),i.source.push(t))})),RY(o,CO,CO)),i.source.root=o,i}});var UY=function(t,e){return t.parent===e.parent?1:2};Lb(zY,lE,{transform:function(t,e){e.source&&e.source.root||Ty(this.constructor.name+" transform requires a backing tree data source.");var n=this.layout(t.method),r=this.fields,i=e.source.root,o=t.as||r;t.field?i.sum(t.field):i.count(),t.sort&&i.sort(_O(t.sort,(function(t){return t.data}))),function(t,e,n){for(var r,i=0,o=e.length;i=0;--i)c.push(n=e.children[i]=new AY(r[i],i)),n.parent=e;return(a.parent=new AY(null,0)).children=[a],a}(i);if(l.eachAfter(o),l.parent.m=-l.z,l.eachBefore(a),r)i.eachBefore(c);else{var u=i,s=i,f=i;i.eachBefore((function(t){t.xs.x&&(s=t),t.depth>f.depth&&(f=t)}));var h=u===s?1:t(u,s)/2,d=h-u.x,p=e/(s.x+h+d),v=n/(f.depth||1);i.eachBefore((function(t){t.x=(t.x+d)*p,t.y=t.depth*v}))}return i}function o(e){var n=e.children,r=e.parent.children,i=e.i?r[e.i-1]:null;if(n){!function(t){for(var e,n=0,r=0,i=t.children,o=i.length;--o>=0;)(e=i[o]).z+=n,e.m+=n,n+=e.s+(r+=e.c)}(e);var o=(n[0].z+n[n.length-1].z)/2;i?(e.z=i.z+t(e._,i._),e.m=e.z-o):e.z=o}else i&&(e.z=i.z+t(e._,i._));e.parent.A=function(e,n,r){if(n){for(var i,o=e,a=e,c=n,l=o.parent.children[0],u=o.m,s=a.m,f=c.m,h=l.m;c=OY(c),o=CY(o),c&&o;)l=CY(l),(a=OY(a)).a=e,(i=c.z+f-o.z-u+t(c._,o._))>0&&(EY(MY(c,e,r),e,i),u+=i,s+=i),f+=c.m,u+=o.m,h+=l.m,s+=a.m;c&&!OY(a)&&(a.t=c,a.m+=f-s),o&&!CY(l)&&(l.t=o,l.m+=u-h,r=e)}return r}(e,i,e.parent.A||r[0])}function a(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function c(t){t.x*=e,t.y=t.depth*n}return i.separation=function(e){return arguments.length?(t=e,i):t},i.size=function(t){return arguments.length?(r=!1,e=+t[0],n=+t[1],i):r?null:[e,n]},i.nodeSize=function(t){return arguments.length?(r=!0,e=+t[0],n=+t[1],i):r?[e,n]:null},i},cluster:function(){var t=PY,e=1,n=1,r=!1;function i(i){var o,a=0;i.eachAfter((function(e){var n=e.children;n?(e.x=function(t){return t.reduce(_Y,0)/t.length}(n),e.y=function(t){return 1+t.reduce(DY,0)}(n)):(e.x=o?a+=t(e,o):0,e.y=0,o=e)}));var c=function(t){for(var e;e=t.children;)t=e[0];return t}(i),l=function(t){for(var e;e=t.children;)t=e[e.length-1];return t}(i),u=c.x-t(c,l)/2,s=l.x+t(l,c)/2;return i.eachAfter(r?function(t){t.x=(t.x-i.x)*e,t.y=(i.y-t.y)*n}:function(t){t.x=(t.x-u)/(s-u)*e,t.y=(1-(i.y?t.y/i.y:1))*n})}return i.separation=function(e){return arguments.length?(t=e,i):t},i.size=function(t){return arguments.length?(r=!1,e=+t[0],n=+t[1],i):r?null:[e,n]},i.nodeSize=function(t){return arguments.length?(r=!0,e=+t[0],n=+t[1],i):r?[e,n]:null},i}},YY=["x","y","depth","children"];function $Y(t){zY.call(this,t)}function KY(t){lE.call(this,[],t)}$Y.Definition={type:"Tree",metadata:{tree:!0,modifies:!0},params:[{name:"field",type:"field"},{name:"sort",type:"compare"},{name:"method",type:"enum",default:"tidy",values:["tidy","cluster"]},{name:"size",type:"number",array:!0,length:2},{name:"nodeSize",type:"number",array:!0,length:2},{name:"separation",type:"boolean",default:!0},{name:"as",type:"string",array:!0,length:YY.length,default:YY}]},Lb($Y,zY,{layout:function(t){var e=t||"tidy";if(Fb(qY,e))return qY[e]();Ty("Unrecognized Tree layout method: "+e)},params:["size","nodeSize"],fields:YY}),KY.Definition={type:"TreeLinks",metadata:{tree:!0,generates:!0,changes:!0},params:[]},Lb(KY,lE,{transform:function(t,e){var n=this.value,r=e.source&&e.source.root,i=e.fork(e.NO_SOURCE),o={};return r||Ty("TreeLinks transform requires a tree data source."),e.changed(e.ADD_REM)?(i.rem=n,e.visit(e.SOURCE,(function(t){return o[CO(t)]=1})),r.each((function(t){var e=t.data,n=t.parent&&t.parent.data;n&&o[CO(e)]&&o[CO(n)]&&i.add.push(EO({source:n,target:e}))})),this.value=i.add):e.changed(e.MOD)&&(e.visit(e.MOD,(function(t){return o[CO(t)]=1})),n.forEach((function(t){(o[CO(t.source)]||o[CO(t.target)])&&i.mod.push(t)}))),i}});var JY={binary:function(t,e,n,r,i){var o,a,c=t.children,l=c.length,u=new Array(l+1);for(u[0]=a=o=0;o=n-1){var s=c[e];return s.x0=i,s.y0=o,s.x1=a,void(s.y1=l)}var f=u[e],h=r/2+f,d=e+1,p=n-1;for(;d>>1;u[v]l-o){var y=r?(i*m+a*g)/r:a;t(e,d,g,i,o,y,l),t(d,n,m,y,o,a,l)}else{var b=r?(o*m+l*g)/r:l;t(e,d,g,i,o,a,b),t(d,n,m,i,b,a,l)}}(0,l,t.value,e,n,r,i)},dice:hY,slice:TY,slicedice:function(t,e,n,r,i){(1&t.depth?TY:hY)(t,e,n,r,i)},squarify:jY,resquarify:IY},QY=["x0","y0","x1","y1","depth","children"];function t$(t){zY.call(this,t)}function e$(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function n$(t){for(var e=1;e>>c$]&1<<(i&l$)},set:function(e,n){var i=n*t+e;r(i>>>c$,1<<(i&l$))},clear:function(e,n){var r=n*t+e;i(r>>>c$,~(1<<(r&l$)))},getRange:function(e,r,i,o){for(var a,c,l,u,s=o;s>=r;--s)if((l=(a=s*t+e)>>>c$)==(u=(c=s*t+i)>>>c$)){if(n[l]&s$[a&l$]&f$[1+(c&l$)])return!0}else{if(n[l]&s$[a&l$])return!0;if(n[u]&f$[1+(c&l$)])return!0;for(var f=l+1;f>>c$)==(u=(c=n*t+i)>>>c$))r(l,s$[a&l$]&f$[1+(c&l$)]);else for(r(l,s$[a&l$]),r(u,f$[1+(c&l$)]),s=l+1;s>>c$)==(u=(c=n*t+r)>>>c$))i(l,f$[a&l$]|s$[1+(c&l$)]);else for(i(l,f$[a&l$]),i(u,s$[1+(c&l$)]),s=l+1;s=e||i>=t}}}(i,o)},a.ratio=r,a.padding=n,a.width=t,a.height=e,a}function p$(t,e,n,r,i,o){var a=n/2;return t-a<0||t+a>i||e-(a=r/2)<0||e+a>o}function v$(t,e,n,r,i,o,a,c){var l=i*o/(2*r),u=t(e-l),s=t(e+l),f=t(n-(o/=2)),h=t(n+o);return a.outOfBounds(u,f,s,h)||a.getRange(u,f,s,h)||c&&c.getRange(u,f,s,h)}var g$=[-1,-1,1,1],m$=[-1,1,-1,1];var y$=["right","center","left"],b$=["bottom","middle","top"];function x$(t,e,n,r,i,o,a,c,l,u,s,f){return!(i.outOfBounds(t,n,e,r)||(f&&o||i).getRange(t,n,e,r))}var w$={"top-left":0,top:1,"top-right":2,left:4,middle:5,right:6,"bottom-left":8,bottom:9,"bottom-right":10},S$={naive:function(t,e,n,r){var i=t.width,o=t.height;return function(t){for(var e,n,a,c,l,u,s,f=t.datum.datum.items[r].items,h=f.length,d=t.datum.fontSize,p=yN.width(t.datum,t.datum.text),v=0,g=0;g=v&&(v=s,t.x=l,t.y=u);return l=p/2,u=d/2,e=t.x-l,n=t.x+l,a=t.y-u,c=t.y+u,t.align="center",e<0&&n<=i?t.align="left":0<=e&&i=1;)v$(t,f,h,u,l,s=(d+p)/2,a,c)?p=s:d=s;if(d>r)return[f,h,d,!0]}}return function(e){for(var c,u,s,f,h,d,p,v,g,m,y,b,x,w,S,k,C,O=e.datum.datum.items[r].items,E=O.length,M=e.datum.fontSize,A=yN.width(e.datum,e.datum.text),P=n?M:0,_=!1,D=!1,T=0,Z=0;Z(u=void 0===O[Z].x2?c:O[Z].x2)&&(C=c,c=u,u=C),s>(f=void 0===O[Z].y2?s:O[Z].y2)&&(C=s,s=f,f=C),m=~~(((g=t(c))+(y=t(u)))/2),x=~~(((b=t(s))+(w=t(f)))/2),p=m;p>=g;--p)for(v=x;v>=b;--v)if(k=l(p,v,P,A,M)){var F=k,j=(0,G.Z)(F,4);e.x=j[0],e.y=j[1],P=j[2],_=j[3]}for(p=m;p<=y;++p)for(v=x;v<=w;++v)if(k=l(p,v,P,A,M)){var I=k,R=(0,G.Z)(I,4);e.x=R[0],e.y=R[1],P=R[2],_=R[3]}_||n||(h=(c+u)/2,d=(s+f)/2,(S=Math.abs(u-c+f-s))>=T&&!p$(h,d,A,M,i,o)&&!v$(t,h,d,M,A,M,a,null)&&(T=S,e.x=h,e.y=d,D=!0))}return!(!_&&!D)&&(h=A/2,d=M/2,a.setRange(t(e.x-h),t(e.y-d),t(e.x+h),t(e.y+d)),e.align="center",e.baseline="middle",!0)}},floodfill:function(t,e,n,r){var i=t.width,o=t.height,a=e[0],c=e[1],l=t.bitmap();return function(e){for(var u,s,f,h,d,p,v,g,m,y,b,x,w=e.datum.datum.items[r].items,S=w.length,k=e.datum.fontSize,C=yN.width(e.datum,e.datum.text),O=[],E=n?k:0,M=!1,A=!1,P=0,_=0;_=1;)v$(t,d,p,k,C,b=(m+y)/2,a,c)?y=b:m=b;m>E&&(e.x=d,e.y=p,E=m,M=!0)}}}M||n||(d=(u+s)/2,p=(f+h)/2,(x=Math.abs(s-u+h-f))>=P&&!p$(d,p,C,k,i,o)&&!v$(t,d,p,k,C,k,a,null)&&(P=x,e.x=d,e.y=p,A=!0))}return!(!M&&!A)&&(d=C/2,p=k/2,a.setRange(t(e.x-d),t(e.y-p),t(e.x+d),t(e.y+p)),e.align="center",e.baseline="middle",!0)}}};function k$(t,e,n,r,i,o,a,c,l,u,s){if(!t.length)return t;var f,h=Math.max(r.length,i.length),d=function(t,e){for(var n=new Float64Array(e),r=t.length,i=0;ii||s[3]>o)return!1;for(var h,d,p,v,g,m,y,b,x,w,S,k,C,O,E,M=null!==(u=e.textWidth)&&void 0!==u?u:0,A=0;A>>2&3)-1,p=0===h&&0===d||r[A]<0,v=h&&d?Math.SQRT1_2:1,g=r[A]<0?-1:1,m=s[1+h]+r[A]*h*v,b=(S=s[4+d]+g*f*d/2+r[A]*d*v)-f/2,x=S+f/2,k=t(m),O=t(b),E=t(x),!M){if(!x$(k,k,O,E,a,c,0,0,0,0,0,p))continue;M=yN.width(e.datum,e.datum.text)}if(y=(w=m+g*M*h/2)+M/2,x$(k=t(m=w-M/2),C=t(y),O,E,a,c,0,0,0,0,0,p))return e.x=h?h*g<0?y:m:w,e.y=d?d*g<0?x:b:S,e.align=y$[h*g+1],e.baseline=b$[d*g+1],a.setRange(k,O,C,E),!0}return!1}}(O,C,p,d);return k.forEach((function(t){return t.opacity=+P(t)})),k}var C$=["x","y","opacity","align","baseline"],O$=["top-left","left","bottom-left","top","bottom","top-right","right","bottom-right"];function E$(t){lE.call(this,null,t)}function M$(t,e){var n,r,i,o,a,c,l=[],u=function(t){return t(o)};if(null==e)l.push(t);else for(n={},r=0,i=t.length;ru==s>-u?(o=u,u=e[++f]):(o=s,s=r[++h]);var d=0;if(fu==s>-u?(c=o-((a=u+o)-u),u=e[++f]):(c=o-((a=s+o)-s),s=r[++h]),o=a,0!==c&&(i[d++]=c);fu==s>-u?(c=o-((a=o+u)-(l=a-o))+(u-l),u=e[++f]):(c=o-((a=o+s)-(l=a-o))+(s-l),s=r[++h]),o=a,0!==c&&(i[d++]=c);for(;f=33306690738754716e-32*u?l:-function(t,e,n,r,i,o,a){var c,l,u,s,f,h,d,p,v,g,m,y,b,x,w,S,k,C,O=t-i,E=n-i,M=e-o,A=r-o;f=(w=(p=O-(d=(h=D$*O)-(h-O)))*(g=A-(v=(h=D$*A)-(h-A)))-((x=O*A)-d*v-p*v-d*g))-(m=w-(k=(p=M-(d=(h=D$*M)-(h-M)))*(g=E-(v=(h=D$*E)-(h-E)))-((S=M*E)-d*v-p*v-d*g))),R$[0]=w-(m+f)+(f-k),f=(b=x-((y=x+m)-(f=y-x))+(m-f))-(m=b-S),R$[1]=b-(m+f)+(f-S),f=(C=y+m)-y,R$[2]=y-(C-f)+(m-f),R$[3]=C;var P=function(t,e){for(var n=e[0],r=1;r=_||-P>=_)return P;if(c=t-(O+(f=t-O))+(f-i),u=n-(E+(f=n-E))+(f-i),l=e-(M+(f=e-M))+(f-o),s=r-(A+(f=r-A))+(f-o),0===c&&0===l&&0===u&&0===s)return P;if(_=I$*a+T$*Math.abs(P),(P+=O*s+A*c-(M*u+E*l))>=_||-P>=_)return P;f=(w=(p=c-(d=(h=D$*c)-(h-c)))*(g=A-(v=(h=D$*A)-(h-A)))-((x=c*A)-d*v-p*v-d*g))-(m=w-(k=(p=l-(d=(h=D$*l)-(h-l)))*(g=E-(v=(h=D$*E)-(h-E)))-((S=l*E)-d*v-p*v-d*g))),z$[0]=w-(m+f)+(f-k),f=(b=x-((y=x+m)-(f=y-x))+(m-f))-(m=b-S),z$[1]=b-(m+f)+(f-S),f=(C=y+m)-y,z$[2]=y-(C-f)+(m-f),z$[3]=C;var D=Z$(4,R$,4,z$,L$);f=(w=(p=O-(d=(h=D$*O)-(h-O)))*(g=s-(v=(h=D$*s)-(h-s)))-((x=O*s)-d*v-p*v-d*g))-(m=w-(k=(p=M-(d=(h=D$*M)-(h-M)))*(g=u-(v=(h=D$*u)-(h-u)))-((S=M*u)-d*v-p*v-d*g))),z$[0]=w-(m+f)+(f-k),f=(b=x-((y=x+m)-(f=y-x))+(m-f))-(m=b-S),z$[1]=b-(m+f)+(f-S),f=(C=y+m)-y,z$[2]=y-(C-f)+(m-f),z$[3]=C;var T=Z$(D,L$,4,z$,N$);f=(w=(p=c-(d=(h=D$*c)-(h-c)))*(g=s-(v=(h=D$*s)-(h-s)))-((x=c*s)-d*v-p*v-d*g))-(m=w-(k=(p=l-(d=(h=D$*l)-(h-l)))*(g=u-(v=(h=D$*u)-(h-u)))-((S=l*u)-d*v-p*v-d*g))),z$[0]=w-(m+f)+(f-k),f=(b=x-((y=x+m)-(f=y-x))+(m-f))-(m=b-S),z$[1]=b-(m+f)+(f-S),f=(C=y+m)-y,z$[2]=y-(C-f)+(m-f),z$[3]=C;var Z=Z$(T,N$,4,z$,B$);return B$[Z-1]}(t,e,n,r,i,o,u)}F$(4),F$(4),F$(4),F$(4),F$(4),F$(4),F$(4),F$(4),F$(4),F$(8),F$(8),F$(8),F$(4),F$(8),F$(8),F$(8),F$(12),F$(192),F$(192);F$(4),F$(4),F$(4),F$(4),F$(4),F$(4),F$(4),F$(4),F$(8),F$(8),F$(8),F$(8),F$(8),F$(8),F$(8),F$(8),F$(8),F$(4),F$(4),F$(4),F$(8),F$(16),F$(16),F$(16),F$(32),F$(32),F$(48),F$(64),F$(1152),F$(1152);F$(4),F$(4),F$(4),F$(4),F$(4),F$(4),F$(4),F$(4),F$(4),F$(4),F$(24),F$(24),F$(24),F$(24),F$(24),F$(24),F$(24),F$(24),F$(24),F$(24),F$(1152),F$(1152),F$(1152),F$(1152),F$(1152),F$(2304),F$(2304),F$(3456),F$(5760),F$(8),F$(8),F$(8),F$(16),F$(24),F$(48),F$(48),F$(96),F$(192),F$(384),F$(384),F$(384),F$(768);F$(96),F$(96),F$(96),F$(1152);var H$=Math.pow(2,-52),W$=new Uint32Array(512),V$=function(){function t(e){(0,Rm.Z)(this,t);var n=e.length>>1;if(n>0&&"number"!=typeof e[0])throw new Error("Expected coords to contain numbers.");this.coords=e;var r=Math.max(2*n-5,0);this._triangles=new Uint32Array(3*r),this._halfedges=new Int32Array(3*r),this._hashSize=Math.ceil(Math.sqrt(n)),this._hullPrev=new Uint32Array(n),this._hullNext=new Uint32Array(n),this._hullTri=new Uint32Array(n),this._hullHash=new Int32Array(this._hashSize).fill(-1),this._ids=new Uint32Array(n),this._dists=new Float64Array(n),this.update()}return(0,Lm.Z)(t,[{key:"update",value:function(){for(var t=this.coords,e=this._hullPrev,n=this._hullNext,r=this._hullTri,i=this._hullHash,o=t.length>>1,a=1/0,c=1/0,l=-1/0,u=-1/0,s=0;sl&&(l=f),h>u&&(u=h),this._ids[s]=s}for(var d,p,v,g=(a+l)/2,m=(c+u)/2,y=1/0,b=0;b0&&(p=k,y=C)}for(var O=t[2*p],E=t[2*p+1],M=1/0,A=0;AI&&(Z[F++]=R,I=this._dists[R])}return this.hull=Z.subarray(0,F),this.triangles=new Uint32Array(0),void(this.halfedges=new Uint32Array(0))}if(U$(w,S,O,E,_,D)<0){var L=p,N=O,B=E;p=v,O=_,E=D,v=L,_=N,D=B}var z=function(t,e,n,r,i,o){var a=n-t,c=r-e,l=i-t,u=o-e,s=a*a+c*c,f=l*l+u*u,h=.5/(a*u-c*l),d=t+(u*s-c*f)*h,p=e+(a*f-l*s)*h;return{x:d,y:p}}(w,S,O,E,_,D);this._cx=z.x,this._cy=z.y;for(var U=0;U0&&Math.abs(q-W)<=H$&&Math.abs(Y-V)<=H$)&&(W=q,V=Y,X!==d&&X!==p&&X!==v)){for(var $=0,K=0,J=this._hashKey(q,Y);K=0;)if((Q=tt)===$){Q=-1;break}if(-1!==Q){var et=this._addTriangle(Q,X,n[Q],-1,-1,r[Q]);r[X]=this._legalize(et+2),r[Q]=et,H++;for(var nt=n[Q];tt=n[nt],U$(q,Y,t[2*nt],t[2*nt+1],t[2*tt],t[2*tt+1])<0;)et=this._addTriangle(nt,X,tt,r[X],-1,r[nt]),r[X]=this._legalize(et+2),n[nt]=nt,H--,nt=tt;if(Q===$)for(;U$(q,Y,t[2*(tt=e[Q])],t[2*tt+1],t[2*Q],t[2*Q+1])<0;)et=this._addTriangle(tt,X,Q,-1,r[Q],r[tt]),this._legalize(et+2),r[tt]=et,n[Q]=Q,H--,Q=tt;this._hullStart=e[X]=Q,n[Q]=e[nt]=X,n[X]=nt,i[this._hashKey(q,Y)]=X,i[this._hashKey(t[2*Q],t[2*Q+1])]=Q}}}this.hull=new Uint32Array(H);for(var rt=0,it=this._hullStart;rt0?3-i:1+i)/4*this._hashSize))%this._hashSize;var n,r,i}},{key:"_legalize",value:function(t){for(var e=this._triangles,n=this._halfedges,r=this.coords,i=0,o=0;;){var a=n[t],c=t-t%3;if(o=c+(t+2)%3,-1!==a){var l=a-a%3,u=c+(t+1)%3,s=l+(a+2)%3,f=e[o],h=e[t],d=e[u],p=e[s];if(X$(r[2*f],r[2*f+1],r[2*h],r[2*h+1],r[2*d],r[2*d+1],r[2*p],r[2*p+1])){e[t]=p,e[a]=f;var v=n[s];if(-1===v){var g=this._hullStart;do{if(this._hullTri[g]===s){this._hullTri[g]=t;break}g=this._hullPrev[g]}while(g!==this._hullStart)}this._link(t,v),this._link(a,n[o]),this._link(o,s);var m=l+(a+1)%3;i1&&void 0!==arguments[1]?arguments[1]:K$,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:J$,i=e.length,o=new Float64Array(2*i),a=0;a=n&&e[t[c]]>a;)t[c+1]=t[c--];t[c+1]=o}else{var l=n+1,u=r;$$(t,n+r>>1,l),e[t[n]]>e[t[r]]&&$$(t,n,r),e[t[l]]>e[t[r]]&&$$(t,l,r),e[t[n]]>e[t[l]]&&$$(t,n,l);for(var s=t[l],f=e[s];;){do{l++}while(e[t[l]]f);if(u=u-n?(Y$(t,e,l,r),Y$(t,e,n,u-1)):(Y$(t,e,n,u-1),Y$(t,e,l,r))}}function $$(t,e,n){var r=t[e];t[e]=t[n],t[n]=r}function K$(t){return t[0]}function J$(t){return t[1]}var Q$=1e-6,tK=function(){function t(){(0,Rm.Z)(this,t),this._x0=this._y0=this._x1=this._y1=null,this._=""}return(0,Lm.Z)(t,[{key:"moveTo",value:function(t,e){this._+="M".concat(this._x0=this._x1=+t,",").concat(this._y0=this._y1=+e)}},{key:"closePath",value:function(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")}},{key:"lineTo",value:function(t,e){this._+="L".concat(this._x1=+t,",").concat(this._y1=+e)}},{key:"arc",value:function(t,e,n){var r=(t=+t)+(n=+n),i=e=+e;if(n<0)throw new Error("negative radius");null===this._x1?this._+="M".concat(r,",").concat(i):(Math.abs(this._x1-r)>Q$||Math.abs(this._y1-i)>Q$)&&(this._+="L"+r+","+i),n&&(this._+="A".concat(n,",").concat(n,",0,1,1,").concat(t-n,",").concat(e,"A").concat(n,",").concat(n,",0,1,1,").concat(this._x1=r,",").concat(this._y1=i))}},{key:"rect",value:function(t,e,n,r){this._+="M".concat(this._x0=this._x1=+t,",").concat(this._y0=this._y1=+e,"h").concat(+n,"v").concat(+r,"h").concat(-n,"Z")}},{key:"value",value:function(){return this._||null}}]),t}(),eK=function(){function t(){(0,Rm.Z)(this,t),this._=[]}return(0,Lm.Z)(t,[{key:"moveTo",value:function(t,e){this._.push([t,e])}},{key:"closePath",value:function(){this._.push(this._[0].slice())}},{key:"lineTo",value:function(t,e){this._.push([t,e])}},{key:"value",value:function(){return this._.length?this._:null}}]),t}();function nK(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return rK(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return rK(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function rK(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n1&&void 0!==arguments[1]?arguments[1]:[0,0,960,500],r=(0,G.Z)(n,4),i=r[0],o=r[1],a=r[2],c=r[3];if((0,Rm.Z)(this,t),!((a=+a)>=(i=+i)&&(c=+c)>=(o=+o)))throw new Error("invalid bounds");this.delaunay=e,this._circumcenters=new Float64Array(2*e.points.length),this.vectors=new Float64Array(2*e.points.length),this.xmax=a,this.xmin=i,this.ymax=c,this.ymin=o,this._init()}return(0,Lm.Z)(t,[{key:"update",value:function(){return this.delaunay.update(),this._init(),this}},{key:"_init",value:function(){for(var t,e,n,r,i=this.delaunay,o=i.points,a=i.hull,c=i.triangles,l=this.vectors,u=this.circumcenters=this._circumcenters.subarray(0,c.length/3*2),s=0,f=0,h=c.length;s1;)i-=2;for(var o=2;o0){if(e>=this.ymax)return null;(i=(this.ymax-e)/r)0){if(t>=this.xmax)return null;(i=(this.xmax-t)/n)this.xmax?2:0)|(ethis.ymax?8:0)}},{key:"_simplify",value:function(t){if(t&&t.length>4){for(var e=0;e=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function cK(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n2&&function(t){for(var e=t.triangles,n=t.coords,r=0;r1e-10)return!1}return!0}(t)){this.collinear=Int32Array.from({length:e.length/2},(function(t,e){return e})).sort((function(t,n){return e[2*t]-e[2*n]||e[2*t+1]-e[2*n+1]}));for(var n=this.collinear[0],r=this.collinear[this.collinear.length-1],i=[e[2*n],e[2*n+1],e[2*r],e[2*r+1]],o=1e-8*Math.hypot(i[3]-i[1],i[2]-i[0]),a=0,c=e.length/2;a0&&(this.triangles=new Int32Array(3).fill(-1),this.halfedges=new Int32Array(3).fill(-1),this.triangles[0]=s[0],h[s[0]]=1,2===s.length&&(h[s[1]]=0,this.triangles[1]=s[1],this.triangles[2]=s[1]))}},{key:"voronoi",value:function(t){return new iK(this,t)}},{key:"neighbors",value:q().mark((function t(e){var n,r,i,o,a,c,l,u,s,f,h;return q().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=this.inedges,r=this.hull,i=this._hullIndex,o=this.halfedges,a=this.triangles,!(c=this.collinear)){t.next=10;break}if(!((l=c.indexOf(e))>0)){t.next=6;break}return t.next=6,c[l-1];case 6:if(!(l2&&void 0!==arguments[2]?arguments[2]:0;if((t=+t)!=t||(e=+e)!=e)return-1;for(var r,i=n;(r=this._step(n,t,e))>=0&&r!==n&&r!==i;)n=r;return r}},{key:"_step",value:function(t,e,n){var r=this.inedges,i=this.hull,o=this._hullIndex,a=this.halfedges,c=this.triangles,l=this.points;if(-1===r[t]||!l.length)return(t+1)%(l.length>>1);var u=t,s=uK(e-l[2*t],2)+uK(n-l[2*t+1],2),f=r[t],h=f;do{var d=c[h],p=uK(e-l[2*d],2)+uK(n-l[2*d+1],2);if(p1&&void 0!==arguments[1]?arguments[1]:sK,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:fK,i=arguments.length>3?arguments[3]:void 0;return new t("length"in e?function(t,e,n,r){for(var i=t.length,o=new Float64Array(2*i),a=0;a=f));)if(e.x=a+i,e.y=u+o,!(e.x+e.x0<0||e.y+e.y0<0||e.x+e.x1>c[0]||e.y+e.y1>c[1])&&(!n||!kK(e,t,c[0]))&&(!n||OK(e,n))){for(var v,g=e.sprite,m=e.width>>5,y=c[0]>>5,b=e.x-(m<<4),x=127&b,w=32-x,S=e.y1-e.y0,k=(e.y+e.y0)*y+(b>>5),C=0;C>>x:0);k+=y}return e.sprite=null,!0}return!1}return f.layout=function(){for(var l=function(t){t.width=t.height=1;var e=Math.sqrt(t.getContext("2d").getImageData(0,0,1,1).data.length>>2);t.width=(bK<<5)/e,t.height=xK/e;var n=t.getContext("2d");return n.fillStyle=n.strokeStyle="red",n.textAlign="center",{context:n,ratio:e}}(N_()),f=function(t){var e=[],n=-1;for(;++n>5)*c[1]),d=null,p=u.length,v=-1,g=[],m=u.map((function(c){return{text:t(c),font:e(c),style:r(c),weight:i(c),rotate:o(c),size:~~(n(c)+1e-14),padding:a(c),xoff:0,yoff:0,x1:0,y1:0,x0:0,y0:0,hasText:!1,sprite:null,datum:c}})).sort((function(t,e){return e.size-t.size}));++v>1,y.y=c[1]*(s()+.5)>>1,SK(l,y,m,v),y.hasText&&h(f,y,d)&&(g.push(y),d?CK(d,y):d=[{x:y.x+y.x0,y:y.y+y.y0},{x:y.x+y.x1,y:y.y+y.y1}],y.x-=c[0]>>1,y.y-=c[1]>>1)}return g},f.words=function(t){return arguments.length?(u=t,f):u},f.size=function(t){return arguments.length?(c=[+t[0],+t[1]],f):c},f.font=function(t){return arguments.length?(e=MK(t),f):e},f.fontStyle=function(t){return arguments.length?(r=MK(t),f):r},f.fontWeight=function(t){return arguments.length?(i=MK(t),f):i},f.rotate=function(t){return arguments.length?(o=MK(t),f):o},f.text=function(e){return arguments.length?(t=MK(e),f):t},f.spiral=function(t){return arguments.length?(l=AK[t]||t,f):l},f.fontSize=function(t){return arguments.length?(n=MK(t),f):n},f.padding=function(t){return arguments.length?(a=MK(t),f):a},f.random=function(t){return arguments.length?(s=t,f):s},f}function SK(t,e,n,r){if(!e.sprite){var i=t.context,o=t.ratio;i.clearRect(0,0,(bK<<5)/o,xK/o);var a,c,l,u,s,f=0,h=0,d=0,p=n.length;for(--r;++r>5<<5,l=~~Math.max(Math.abs(y+b),Math.abs(y-b))}else a=a+31>>5<<5;if(l>d&&(d=l),f+a>=bK<<5&&(f=0,h+=d,d=0),h+l>=xK)break;i.translate((f+(a>>1))/o,(h+(l>>1))/o),e.rotate&&i.rotate(e.rotate*yK),i.fillText(e.text,0,0),e.padding&&(i.lineWidth=2*e.padding,i.strokeText(e.text,0,0)),i.restore(),e.width=a,e.height=l,e.xoff=f,e.yoff=h,e.x1=a>>1,e.y1=l>>1,e.x0=-e.x1,e.y0=-e.y1,e.hasText=!0,f+=a}for(var w=i.getImageData(0,0,(bK<<5)/o,xK/o).data,S=[];--r>=0;)if((e=n[r]).hasText){for(c=(a=e.width)>>5,l=e.y1-e.y0,u=0;u>5),E=w[(h+s)*(bK<<5)+(f+u)<<2]?1<<31-u%32:0;S[O]|=E,k|=E}k?C=s:(e.y0++,l--,s--,h++)}e.y1=e.y0+C,e.sprite=S.slice(0,(e.y1-e.y0)*c)}}}function kK(t,e,n){n>>=5;for(var r,i=t.sprite,o=t.width>>5,a=t.x-(o<<4),c=127&a,l=32-c,u=t.y1-t.y0,s=(t.y+t.y0)*n+(a>>5),f=0;f>>c:0))&e[s+h])return!0;s+=n}return!1}function CK(t,e){var n=t[0],r=t[1];e.x+e.x0r.x&&(r.x=e.x+e.x1),e.y+e.y1>r.y&&(r.y=e.y+e.y1)}function OK(t,e){return t.x+t.x1>e[0].x&&t.x+t.x0e[0].y&&t.y+t.y0>1,v=d[1]>>1,g=h.length,m=0;mi?1:0})),function(t,e){return Array.from(e,(function(e){return t[e]}))}(t,e)}(h,f),u)a=e,c=t,e=Array(u+s),t=FK(u+s),function(t,e,n,r,i,o,a,c,l){var u,s=0,f=0;for(u=0;s0)for(l=0;l=e?t:((n=n||new t.constructor(e)).set(t),n)}(n,e.length)},add:function(t){for(var n,r=0,i=e.length,o=t.length;rr.length||n>t)&&(t=Math.max(n,t),r=jK(e,t,r),i=jK(e,t))}}}(),t),this._indices=null,this._dims=null}function NK(t){lE.call(this,null,t)}LK.Definition={type:"CrossFilter",metadata:{},params:[{name:"fields",type:"field",array:!0,required:!0},{name:"query",type:"array",array:!0,required:!0,content:{type:"number",array:!0,length:2}}]},Lb(LK,lE,{transform:function(t,e){return this._dims?t.modified("fields")||t.fields.some((function(t){return e.modified(t.fields)}))?this.reinit(t,e):this.eval(t,e):this.init(t,e)},init:function(t,e){for(var n,r,i=t.fields,o=t.query,a=this._indices={},c=this._dims=[],l=o.length,u=0;ug)for(i=g,o=Math.min(p,m);im)for(i=Math.max(p,m),o=v;id)for(i=d,o=Math.min(f,p);ip)for(i=Math.max(f,p),o=h;i1?(hJ[t]=e,this):Fb(hJ,t)?hJ[t]:null}function pJ(t){var e=dJ(t);return e&&e.responseType||"text"}function vJ(t,e,n,r){var i=dJ((e=e||{}).type||"json");return i||Ty("Unknown data format type: "+e.type),t=i(t,e),e.parse&&function(t,e,n,r){if(!t.length)return;var i=jC();n=n||i.timeParse,r=r||i.utcParse;var o,a,c,l,u,s,f=t.columns||Object.keys(t[0]);"auto"===e&&(e=aJ(t,f));f=Object.keys(e);var h=f.map((function(t){var i,o,a=e[t];if(a&&(a.startsWith("date:")||a.startsWith("utc:")))return("'"===(o=(i=a.split(/:(.+)?/,2))[1])[0]&&"'"===o[o.length-1]||'"'===o[0]&&'"'===o[o.length-1])&&(o=o.slice(1,-1)),("utc"===i[0]?r:n)(o);if(!nJ[a])throw Error("Illegal format pattern: "+t+":"+a);return nJ[a]}));for(c=0,u=t.length,s=f.length;c",gJ[jJ]="Identifier",gJ[IJ]="Keyword",gJ[RJ]="Null",gJ[LJ]="Numeric",gJ[NJ]="Punctuator",gJ[BJ]="String",gJ[9]="RegularExpression";var zJ="ArrayExpression",UJ="BinaryExpression",HJ="CallExpression",WJ="ConditionalExpression",VJ="Identifier",GJ="Literal",XJ="LogicalExpression",qJ="MemberExpression",YJ="ObjectExpression",$J="Property",KJ="UnaryExpression",JJ="Unexpected token %0",QJ="Unexpected number",tQ="Unexpected string",eQ="Unexpected identifier",nQ="Unexpected reserved word",rQ="Unexpected end of input",iQ="Invalid regular expression",oQ="Invalid regular expression: missing /",aQ="Octal literals are not allowed in strict mode.",cQ="Duplicate data property in object literal not allowed in strict mode",lQ="ILLEGAL",uQ="Disabled.",sQ=new RegExp("[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B2\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]"),fQ=new RegExp("[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B2\\u08E4-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58\\u0C59\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D60-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA69D\\uA69F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2D\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]");function hQ(t,e){if(!t)throw new Error("ASSERT: "+e)}function dQ(t){return t>=48&&t<=57}function pQ(t){return"0123456789abcdefABCDEF".indexOf(t)>=0}function vQ(t){return"01234567".indexOf(t)>=0}function gQ(t){return 32===t||9===t||11===t||12===t||160===t||t>=5760&&[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].indexOf(t)>=0}function mQ(t){return 10===t||13===t||8232===t||8233===t}function yQ(t){return 36===t||95===t||t>=65&&t<=90||t>=97&&t<=122||92===t||t>=128&&sQ.test(String.fromCharCode(t))}function bQ(t){return 36===t||95===t||t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57||92===t||t>=128&&fQ.test(String.fromCharCode(t))}var xQ={if:1,in:1,do:1,var:1,for:1,new:1,try:1,let:1,this:1,else:1,case:1,void:1,with:1,enum:1,while:1,break:1,catch:1,throw:1,const:1,yield:1,class:1,super:1,return:1,typeof:1,delete:1,switch:1,export:1,import:1,public:1,static:1,default:1,finally:1,extends:1,package:1,private:1,function:1,continue:1,debugger:1,interface:1,protected:1,instanceof:1,implements:1};function wQ(){for(;yJ1114111||"}"!==t)&&LQ({},JJ,lQ),e<=65535?String.fromCharCode(e):(n=55296+(e-65536>>10),r=56320+(e-65536&1023),String.fromCharCode(n,r))}function CQ(){var t,e;for(t=mJ.charCodeAt(yJ++),e=String.fromCharCode(t),92===t&&(117!==mJ.charCodeAt(yJ)&&LQ({},JJ,lQ),++yJ,(t=SQ("u"))&&"\\"!==t&&yQ(t.charCodeAt(0))||LQ({},JJ,lQ),e=t);yJ>>="===(r=mJ.substr(yJ,4))?{type:NJ,value:r,start:i,end:yJ+=4}:">>>"===(n=r.substr(0,3))||"<<="===n||">>="===n?{type:NJ,value:n,start:i,end:yJ+=3}:a===(e=n.substr(0,2))[1]&&"+-<>&|".indexOf(a)>=0||"=>"===e?{type:NJ,value:e,start:i,end:yJ+=2}:("//"===e&&LQ({},JJ,lQ),"<>=!+-*%&|^/".indexOf(a)>=0?(++yJ,{type:NJ,value:a,start:i,end:yJ}):void LQ({},JJ,lQ))}function MQ(){var t,e,n;if(hQ(dQ((n=mJ[yJ]).charCodeAt(0))||"."===n,"Numeric literal must start with a decimal digit or a decimal point"),e=yJ,t="","."!==n){if(t=mJ[yJ++],n=mJ[yJ],"0"===t){if("x"===n||"X"===n)return++yJ,function(t){for(var e="";yJ=0&&LQ({},iQ,n),{value:n,literal:e}}(),r=function(t,e){var n=t;e.indexOf("u")>=0&&(n=n.replace(/\\u\{([0-9a-fA-F]+)\}/g,(function(t,e){if(parseInt(e,16)<=1114111)return"x";LQ({},iQ)})).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"));try{new RegExp(n)}catch(F2t){LQ({},iQ)}try{return new RegExp(t,e)}catch(r){return null}}(e.value,n.value),{literal:e.literal+n.literal,value:r,regex:{pattern:e.value,flags:n.value},start:t,end:yJ}}function PQ(){if(wQ(),yJ>=bJ)return{type:FJ,start:yJ,end:yJ};var t=mJ.charCodeAt(yJ);return yQ(t)?OQ():40===t||41===t||59===t?EQ():39===t||34===t?function(){var t,e,n,r,i="",o=!1;for(hQ("'"===(t=mJ[yJ])||'"'===t,"String literal must starts with a quote"),e=yJ,++yJ;yJ=0&&yJ":case"<=":case">=":case"instanceof":case"in":e=7;break;case"<<":case">>":case">>>":e=8;break;case"+":case"-":e=9;break;case"*":case"/":case"%":e=11}return e}function e0(){var t,e;return t=function(){var t,e,n,r,i,o,a,c,l,u;if(t=xJ,l=QQ(),0===(i=t0(r=xJ)))return l;for(r.prec=i,_Q(),e=[t,xJ],o=[l,r,a=QQ()];(i=t0(xJ))>0;){for(;o.length>2&&i<=o[o.length-2].prec;)a=o.pop(),c=o.pop().value,l=o.pop(),e.pop(),n=TQ(c,l,a),o.push(n);(r=_Q()).prec=i,o.push(r),e.push(xJ),n=QQ(),o.push(n)}for(n=o[u=o.length-1],e.pop();u>1;)e.pop(),n=TQ(o[u-1].value,o[u-2],n),u-=2;return n}(),zQ("?")&&(_Q(),e=e0(),BQ(":"),t=function(t,e,n){var r=new TJ(WJ);return r.test=t,r.consequent=e,r.alternate=n,r}(t,e,e0())),t}function n0(){var t=e0();if(zQ(","))throw new Error(uQ);return t}function r0(t){yJ=0,bJ=(mJ=t).length,xJ=null,DQ();var e=n0();if(xJ.type!==FJ)throw new Error("Unexpect token after expression.");return e}var i0={NaN:"NaN",E:"Math.E",LN2:"Math.LN2",LN10:"Math.LN10",LOG2E:"Math.LOG2E",LOG10E:"Math.LOG10E",PI:"Math.PI",SQRT1_2:"Math.SQRT1_2",SQRT2:"Math.SQRT2",MIN_VALUE:"Number.MIN_VALUE",MAX_VALUE:"Number.MAX_VALUE"};function o0(t){function e(e,n,r){return function(i){return function(e,n,r,i){var o=t(n[0]);return r&&(o=r+"("+o+")",0===r.lastIndexOf("new ",0)&&(o="("+o+")")),o+"."+e+(i<0?"":0===i?"()":"("+n.slice(1).map(t).join(",")+")")}(e,i,n,r)}}var n="new Date",r="String",i="RegExp";return{isNaN:"Number.isNaN",isFinite:"Number.isFinite",abs:"Math.abs",acos:"Math.acos",asin:"Math.asin",atan:"Math.atan",atan2:"Math.atan2",ceil:"Math.ceil",cos:"Math.cos",exp:"Math.exp",floor:"Math.floor",hypot:"Math.hypot",log:"Math.log",max:"Math.max",min:"Math.min",pow:"Math.pow",random:"Math.random",round:"Math.round",sin:"Math.sin",sqrt:"Math.sqrt",tan:"Math.tan",clamp:function(e){e.length<3&&Ty("Missing arguments to clamp function."),e.length>3&&Ty("Too many arguments to clamp function.");var n=e.map(t);return"Math.max("+n[1]+", Math.min("+n[2]+","+n[0]+"))"},now:"Date.now",utc:"Date.UTC",datetime:n,date:e("getDate",n,0),day:e("getDay",n,0),year:e("getFullYear",n,0),month:e("getMonth",n,0),hours:e("getHours",n,0),minutes:e("getMinutes",n,0),seconds:e("getSeconds",n,0),milliseconds:e("getMilliseconds",n,0),time:e("getTime",n,0),timezoneoffset:e("getTimezoneOffset",n,0),utcdate:e("getUTCDate",n,0),utcday:e("getUTCDay",n,0),utcyear:e("getUTCFullYear",n,0),utcmonth:e("getUTCMonth",n,0),utchours:e("getUTCHours",n,0),utcminutes:e("getUTCMinutes",n,0),utcseconds:e("getUTCSeconds",n,0),utcmilliseconds:e("getUTCMilliseconds",n,0),length:e("length",null,-1),parseFloat:"parseFloat",parseInt:"parseInt",upper:e("toUpperCase",r,0),lower:e("toLowerCase",r,0),substring:e("substring",r),split:e("split",r),trim:e("trim",r,0),regexp:i,test:e("test",i),if:function(e){e.length<3&&Ty("Missing arguments to if function."),e.length>3&&Ty("Too many arguments to if function.");var n=e.map(t);return"("+n[0]+"?"+n[1]+":"+n[2]+")"}}}function a0(t){var e=(t=t||{}).allowed?ox(t.allowed):{},n=t.forbidden?ox(t.forbidden):{},r=t.constants||i0,i=(t.functions||o0)(f),o=t.globalvar,a=t.fieldvar,c=wb(o)?o:function(t){return"".concat(o,'["').concat(t,'"]')},l={},u={},s=0;function f(t){if(Vb(t))return t;var e=h[t.type];return null==e&&Ty("Unsupported type: "+t.type),e(t)}var h={Literal:function(t){return t.raw},Identifier:function(t){var i=t.name;return s>0?i:Fb(n,i)?Ty("Illegal identifier: "+i):Fb(r,i)?r[i]:Fb(e,i)?i:(l[i]=1,c(i))},MemberExpression:function(t){var e=!t.computed,n=f(t.object);e&&(s+=1);var r=f(t.property);return n===a&&(u[function(t){var e=t&&t.length-1;return e&&('"'===t[0]&&'"'===t[e]||"'"===t[0]&&"'"===t[e])?t.slice(1,-1):t}(r)]=1),e&&(s-=1),n+(e?"."+r:"["+r+"]")},CallExpression:function(t){"Identifier"!==t.callee.type&&Ty("Illegal callee type: "+t.callee.type);var e=t.callee.name,n=t.arguments,r=Fb(i,e)&&i[e];return r||Ty("Unrecognized function: "+e),wb(r)?r(n):r+"("+n.map(f).join(",")+")"},ArrayExpression:function(t){return"["+t.elements.map(f).join(",")+"]"},BinaryExpression:function(t){return"("+f(t.left)+" "+t.operator+" "+f(t.right)+")"},UnaryExpression:function(t){return"("+t.operator+f(t.argument)+")"},ConditionalExpression:function(t){return"("+f(t.test)+"?"+f(t.consequent)+":"+f(t.alternate)+")"},LogicalExpression:function(t){return"("+f(t.left)+t.operator+f(t.right)+")"},ObjectExpression:function(t){return"{"+t.properties.map(f).join(",")+"}"},Property:function(t){s+=1;var e=f(t.key);return s-=1,e+":"+f(t.value)}};function d(t){var e={code:f(t),globals:Object.keys(l),fields:Object.keys(u)};return l={},u={},e}return d.functions=i,d.constants=r,d}var c0,l0,u0,s0,f0,h0,d0,p0,v0,g0,m0,y0,b0,x0,w0,S0,k0=new TH,C0=new TH,O0={point:nW,lineStart:nW,lineEnd:nW,polygonStart:function(){k0=new TH,O0.lineStart=E0,O0.lineEnd=M0},polygonEnd:function(){var t=+k0;C0.add(t<0?LH+t:t),this.lineStart=this.lineEnd=this.point=nW},sphere:function(){C0.add(LH)}};function E0(){O0.point=A0}function M0(){P0(c0,l0)}function A0(t,e){O0.point=P0,c0=t,l0=e,u0=t*=BH,s0=WH(e=(e*=BH)/2+RH),f0=$H(e)}function P0(t,e){var n=(t*=BH)-u0,r=n>=0?1:-1,i=r*n,o=WH(e=(e*=BH)/2+RH),a=$H(e),c=f0*a,l=s0*o+c*WH(i),u=c*r*$H(i);k0.add(HH(u,l)),u0=t,s0=o,f0=a}var _0,D0,T0,Z0,F0,j0,I0,R0,L0,N0,B0,z0,U0,H0,W0,V0,G0={point:X0,lineStart:Y0,lineEnd:$0,polygonStart:function(){G0.point=K0,G0.lineStart=J0,G0.lineEnd=Q0,x0=new TH,O0.polygonStart()},polygonEnd:function(){O0.polygonEnd(),G0.point=X0,G0.lineStart=Y0,G0.lineEnd=$0,k0<0?(h0=-(p0=180),d0=-(v0=90)):x0>ZH?v0=90:x0<-ZH&&(d0=-90),S0[0]=h0,S0[1]=p0},sphere:function(){h0=-(p0=180),d0=-(v0=90)}};function X0(t,e){w0.push(S0=[h0=t,p0=t]),ev0&&(v0=e)}function q0(t,e){var n=bV([t*BH,e*BH]);if(b0){var r=wV(b0,n),i=wV([r[1],-r[0],0],r);CV(i),i=yV(i);var o,a=t-g0,c=a>0?1:-1,l=i[0]*NH*c,u=zH(a)>180;u^(c*g0v0&&(v0=o):u^(c*g0<(l=(l+360)%360-180)&&lv0&&(v0=e)),u?tt1(h0,p0)&&(p0=t):t1(t,p0)>t1(h0,p0)&&(h0=t):p0>=h0?(tp0&&(p0=t)):t>g0?t1(h0,t)>t1(h0,p0)&&(p0=t):t1(t,p0)>t1(h0,p0)&&(h0=t)}else w0.push(S0=[h0=t,p0=t]);ev0&&(v0=e),b0=n,g0=t}function Y0(){G0.point=q0}function $0(){S0[0]=h0,S0[1]=p0,G0.point=X0,b0=null}function K0(t,e){if(b0){var n=t-g0;x0.add(zH(n)>180?n+(n>0?360:-360):n)}else m0=t,y0=e;O0.point(t,e),q0(t,e)}function J0(){O0.lineStart()}function Q0(){K0(m0,y0),O0.lineEnd(),zH(x0)>ZH&&(h0=-(p0=180)),S0[0]=h0,S0[1]=p0,b0=null}function t1(t,e){return(e-=t)<0?e+360:e}function e1(t,e){return t[0]-e[0]}function n1(t,e){return t[0]<=t[1]?t[0]<=e&&e<=t[1]:ee?1:t>=e?0:NaN}function g1(t,e){return null==t||null==e?NaN:et?1:e>=t?0:NaN}function m1(){return 0}function y1(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return b1(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return b1(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function b1(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function w1(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n2&&void 0!==arguments[2]?arguments[2]:0,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:t.length;if(i>>1;n(t[a],r)<0?i=a+1:o=a}while(i2&&void 0!==arguments[2]?arguments[2]:0,o=i(t,e,n,(arguments.length>3&&void 0!==arguments[3]?arguments[3]:t.length)-1);return o>n&&r(t[o-1],e)>-r(t[o],e)?o-1:o},right:function(t,r){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:t.length;if(i>>1;n(t[a],r)<=0?i=a+1:o=a}while(i1?e-1:0),r=1;r=0})):e})),(0,V.Z)(r1,"R_union",(function(t,e){var n=eb(e[0]),r=eb(e[1]);return n>r&&(n=e[1],r=e[0]),t.length?(t[0]>n&&(t[0]=n),t[1]r&&(n=e[1],r=e[0]),t.length?rr&&(t[1]=r),t):[n,r]})),r1);function L1(t,e,n,r){e[0].type!==SJ&&Ty("First argument to selection functions must be a string literal.");var i=e[0].value,o="unit",a="@"+o,c=":"+i;(e.length>=2&&tb(e).value)!==k1||Fb(r,a)||(r[a]=n.getData(i).indataRef(n,o)),Fb(r,c)||(r[c]=n.getData(i).tuplesRef())}function N1(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return B1(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return B1(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function B1(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);nt1(r[0],r[1])&&(r[1]=i[1]),t1(i[0],r[1])>t1(r[0],r[1])&&(r[0]=i[0])):o.push(r=i);for(a=-1/0,e=0,r=o[n=o.length-1];e<=n;r=i,++e)i=o[e],(c=t1(r[1],i[0]))>a&&(a=c,h0=i[0],p0=r[1])}return w0=S0=null,h0===1/0||d0===1/0?[[NaN,NaN],[NaN,NaN]]:[[h0,d0],[p0,v0]]})),a2=r2("centroid",(function(t){_0=D0=T0=Z0=F0=j0=I0=R0=0,L0=new TH,N0=new TH,B0=new TH,DH(t,i1);var e=+L0,n=+N0,r=+B0,i=XH(e,n,r);return i1?n-1:0),i=1;i1?n-1:0),i=1;i1?n-1:0),i=1;i1?n-1:0),i=1;i3&&void 0!==arguments[3]?arguments[3]:5,i=(t=bb(t))[t.length-1];return void 0===i||Math.hypot(i[0]-e,i[1]-n)>r?[].concat((0,Xm.Z)(t),[[e,n]]):t},lassoPath:function(t){return bb(t).reduce((function(e,n,r){var i=(0,G.Z)(n,2),o=i[0],a=i[1];return e+(0==r?"M ".concat(o,",").concat(a," "):r===t.length-1?" Z":"L ".concat(o,",").concat(a," "))}),"")},intersectLasso:function(t,e,n){var r,i=n.x,o=n.y,a=n.mark,c=(new zR).set(Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER,Number.MIN_SAFE_INTEGER,Number.MIN_SAFE_INTEGER),l=N1(e);try{for(l.s();!(r=l.n()).done;){var u=(0,G.Z)(r.value,2),s=u[0],f=u[1];sc.x2&&(c.x2=s),fc.y2&&(c.y2=f)}}catch(h){l.e(h)}finally{l.f()}return c.translate(i,o),b2([[c.x1,c.y1],[c.x2,c.y2]],t,a).filter((function(t){return function(t,e,n){for(var r=0,i=0,o=n.length-1;ie!=l>e&&t<(c-s)*(e-f)/(l-f)+s&&r++}return 1&r}(t.x,t.y,e)}))}},w2=["view","item","group","xy","x","y"],S2="this.",k2={},C2={forbidden:["_"],allowed:["datum","event","item"],fieldvar:"datum",globalvar:function(t){return"_[".concat(tx(K1+t),"]")},functions:function(t){var e=o0(t);for(var n in w2.forEach((function(t){return e[t]="event.vega."+t})),x2)e[n]=S2+n;return _b(e,n2(t,x2,k2)),e},constants:i0,visitors:k2},O2=a0(C2);function E2(t,e,n){return 1===arguments.length?x2[t]:(x2[t]=e,n&&(k2[t]=n),O2&&(O2.functions[t]=S2+t),this)}function M2(t,e){var n,r={};try{n=r0(t=Vb(t)?t:tx(t)+"")}catch(o){Ty("Expression parse error: "+t)}n.visit((function(t){if(t.type===EJ){var n=t.callee.name,i=C2.visitors[n];i&&i(n,t.arguments,e,r)}}));var i=O2(n);return i.globals.forEach((function(t){var n=K1+t;!Fb(r,n)&&e.getSignal(t)&&(r[n]=e.signalRef(t))})),{$expr:_b({code:i.code},e.options.ast?{ast:n}:null),$fields:i.fields,$params:r}}E2("bandwidth",(function(t,e){var n=e2(t,(e||this).context);return n&&n.bandwidth?n.bandwidth():0}),Q1),E2("copy",(function(t,e){var n=e2(t,(e||this).context);return n?n.copy():void 0}),Q1),E2("domain",(function(t,e){var n=e2(t,(e||this).context);return n?n.domain():[]}),Q1),E2("range",(function(t,e){var n=e2(t,(e||this).context);return n&&n.range?n.range():[]}),Q1),E2("invert",(function(t,e,n){var r=e2(t,(n||this).context);return r?qy(e)?(r.invertRange||r.invert)(e):(r.invert||r.invertExtent)(e):void 0}),Q1),E2("scale",(function(t,e,n){var r=e2(t,(n||this).context);return r?r(e):void 0}),Q1),E2("gradient",(function(t,e,n,r,i){t=e2(t,(i||this).context);var o=VI(e,n),a=t.domain(),c=a[0],l=tb(a),u=Iy;return l-c?u=sI(t,c,l):t=(t.interpolator?Kj("sequential")().interpolator(t.interpolator()):Kj("linear")().interpolate(t.interpolate()).range(t.range())).domain([c=0,l=1]),t.ticks&&(c!==(a=t.ticks(+r||15))[0]&&a.unshift(c),l!==tb(a)&&a.push(l)),a.forEach((function(e){return o.stop(u(e),t(e))})),o}),Q1),E2("geoArea",i2,Q1),E2("geoBounds",o2,Q1),E2("geoCentroid",a2,Q1),E2("geoShape",(function(t,e,n){var r=e2(t,(n||this).context);return function(t){return r?r.path.context(t)(e):""}}),Q1),E2("indata",(function(t,e,n){var r=this.context.data[t]["index:"+e],i=r?r.value.get(n):void 0;return i?i.count:i}),(function(t,e,n,r){e[0].type!==SJ&&Ty("First argument to indata must be a string literal."),e[1].type!==SJ&&Ty("Second argument to indata must be a string literal.");var i=e[0].value,o=e[1].value,a="@"+o;Fb(a,r)||(r[a]=n.getData(i).indataRef(n,o))})),E2("data",z1,J1),E2("treePath",(function(t,e,n){var r=m2(t,this),i=r[e],o=r[n];return i&&o?i.path(o).map(g2):void 0}),J1),E2("treeAncestors",(function(t,e){var n=m2(t,this)[e];return n?n.ancestors().map(g2):void 0}),J1),E2("vlSelectionTest",(function(t,e,n){for(var r,i,o,a,c,l=this.context.data[t],u=l?l.values.value:[],s=l?l[T1]&&l[T1].value:void 0,f=n===k1,h=u.length,d=0;d v || v == null) && u != null ? ").concat(r,"\n : ((v = v instanceof Date ? +v : v), (u = u instanceof Date ? +u : u)) !== u && v === v ? ").concat(n,"\n : v !== v && u === u ? ").concat(r," : ")}(i,o,-a,a)})).join("")+"0;");return n?r.bind(n):r}}};function Z2(t,e,n){if(!t||!Yy(t))return t;for(var r,i=0,o=F2.length;i=0;)if(r=i[o].type,n=i[o].handler,t===r&&(e===n||e===n.raw)){this._handler.off(r,n);break}return this},addResizeListener:function(t){var e=this._resizeListeners;return e.indexOf(t)<0&&e.push(t),this},removeResizeListener:function(t){var e=this._resizeListeners,n=e.indexOf(t);return n>=0&&e.splice(n,1),this},addSignalListener:function(t,e){return N5(this,t,R5(this,t),e)},removeSignalListener:function(t,e){return B5(this,R5(this,t),e)},addDataListener:function(t,e){return N5(this,t,U2(this,t).values,e)},removeDataListener:function(t,e){return B5(this,U2(this,t).values,e)},globalCursor:function(t){if(arguments.length){if(this._globalCursor!==!!t){var e=z2(this,null);this._globalCursor=!!t,e&&z2(this,e)}return this}return this._globalCursor},preventDefault:function(t){return arguments.length?(this._preventDefault=t,this):this._preventDefault},timer:function(t,e){this._timers.push(function(t,e,n){var r=new rq,i=e;return null==e?(r.restart(t,e,n),r):(r._restart=r.restart,r.restart=function(t,e,n){e=+e,n=null==n?eq():+n,r._restart((function o(a){a+=i,r._restart(o,i+=e,n),t(a)}),e,n)},r.restart(t,e,n),r)}((function(e){t({timestamp:Date.now(),elapsed:e})}),e))},events:function(t,e,n){var r,i=this,o=new BO(n),a=function(n,r){i.runAsync(null,(function(){t===Y2&&function(t,e){var n=t._eventConfig.defaults,r=n.prevent,i=n.allow;return!1!==r&&!0!==i&&(!0===r||!1===i||(r?r[e]:i?!i[e]:t.preventDefault()))}(i,e)&&n.preventDefault(),o.receive(q2(i,n,r))}))};if("timer"===t)J2(i,"timer",e)&&i.timer(a,e);else if(t===Y2)J2(i,"view",e)&&i.addEventListener(e,a,$2);else if("window"===t?J2(i,"window",e)&&"undefined"!=typeof window&&(r=[window]):"undefined"!=typeof document&&J2(i,"selector",e)&&(r=Array.from(document.querySelectorAll(t))),r){for(var c=0,l=r.length;c=0;)i[t].stop();for(t=o.length;--t>=0;)for(e=(n=o[t]).sources.length;--e>=0;)n.sources[e].removeEventListener(n.type,n.handler);return r&&r.call(this,this._handler,null,null,null),this},hover:function(t,e){return e=[e||"update",(t=[t||"hover"])[0]],this.on(this.events("view","mouseover",Q2),t5,e5(t)),this.on(this.events("view","mouseout",Q2),t5,e5(e)),this},data:function(t,e){return arguments.length<2?U2(this,t).values.value:H2.call(this,t,TO().remove(Ny).insert(e))},change:H2,insert:function(t,e){return H2.call(this,t,TO().insert(e))},remove:function(t,e){return H2.call(this,t,TO().remove(e))},scale:function(t){var e=this._runtime.scales;return Fb(e,t)||Ty("Unrecognized scale or projection: "+t),e[t].value},initialize:function(t,e){var n=this,r=n._renderType,i=n._eventConfig.bind,o=gz(r);t=n._el=t?g5(n,t,!0):null,function(t){var e=t.container();e&&(e.setAttribute("role","graphics-document"),e.setAttribute("aria-roleDescription","visualization"),N2(e,t.description()))}(n),o||n.error("Unrecognized renderer type: "+r);var a=o.handler||yB,c=t?o.renderer:o.headless;return n._renderer=c?p5(n,n._renderer,t,c):null,n._handler=function(t,e,n,r){var i=new r(t.loader(),v5(t,t.tooltip())).scene(t.scenegraph().root).initialize(n,G2(t),t);return e&&e.handlers().forEach((function(t){i.on(t.type,t.handler)})),i}(n,n._handler,t,a),n._redraw=!0,t&&"none"!==i&&(e=e?n._elBind=g5(n,e,!0):t.appendChild(n5("form",{class:"vega-bindings"})),n._bind.forEach((function(t){t.param.element&&"container"!==i&&(t.element=g5(n,t.param.element,!!t.param.input))})),n._bind.forEach((function(t){!function(t,e,n){if(e){var r=n.param,i=n.state;i||(i=n.state={elements:null,active:!1,set:null,update:function(e){e!=t.signal(r.signal)&&t.runAsync(null,(function(){i.source=!0,t.signal(r.signal,e)}))}},r.debounce&&(i.update=Pb(r.debounce,i.update))),(null==r.input&&r.element?a5:c5)(i,e,r,t),i.active||(t.on(t._signals[r.signal],null,(function(){i.source?i.source=!1:i.set(t.signal(r.signal))})),i.active=!0)}}(n,t.element||e,t)}))),n},toImageURL:function(t,e){return w5.apply(this,arguments)},toCanvas:function(t,e){return k5.apply(this,arguments)},toSVG:function(t){return C5.apply(this,arguments)},getState:function(t){return this._runtime.getState(t||{data:D5,signals:T5,recurse:!0})},setState:function(t){return this.runAsync(null,(function(e){e._trigger=!1,e._runtime.setState(t)}),(function(t){t._trigger=!0})),this}});var z5,U5,H5="view",W5="[",V5="]",G5="{",X5="}",q5=":",Y5=",",$5="@",K5=">",J5=/[[\]{}]/,Q5={"*":1,arc:1,area:1,group:1,image:1,line:1,path:1,rect:1,rule:1,shape:1,symbol:1,text:1,trail:1};function t3(t,e,n){return z5=e||H5,U5=n||Q5,n3(t.trim()).map(r3)}function e3(t,e,n,r,i){for(var o,a=t.length,c=0;e=0?--c:r&&r.indexOf(o)>=0&&++c}return e}function n3(t){for(var e=[],n=t.length,r=0,i=0;i' after between selector: "+t;e=e.map(r3);var i=r3(t.slice(1).trim());if(i.between)return{between:e,stream:i};i.between=e;return i}(t):function(t){var e,n,r={source:z5},i=[],o=[0,0],a=0,c=0,l=t.length,u=0;if(t[l-1]===X5){if(!((u=t.lastIndexOf(G5))>=0))throw"Unmatched right brace: "+t;try{o=function(t){var e=t.split(Y5);if(!t.length||e.length>2)throw t;return e.map((function(e){var n=+e;if(n!=n)throw t;return n}))}(t.substring(u+1,l-1))}catch(F2t){throw"Invalid throttle specification: "+t}l=(t=t.slice(0,u).trim()).length,u=0}if(!l)throw t;t[0]===$5&&(a=++u);e=e3(t,u,q5),e1?(r.type=i[1],a?r.markname=i[0].slice(1):!function(t){return U5[t]}(i[0])?r.source=i[0]:r.marktype=i[0]):r.type=i[0];"!"===r.type.slice(-1)&&(r.consume=!0,r.type=r.type.slice(0,-1));null!=n&&(r.filter=n);o[0]&&(r.throttle=o[0]);o[1]&&(r.debounce=o[1]);return r}(t)}function i3(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return o3(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return o3(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function o3(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0;)e+=".mark.group";t.parent?(r=t.parent,e+=".datum"):r=t.group}else t.datum?(e="datum",r=t.datum):Ty("Invalid field reference: "+tx(t));return t.signal||(r=Vb(r)?Zy(r).map(tx).join("]["):B3(r)),e+"["+r+"]"}function z3(t,e,n,r,i,o){var a={};for(var c in(o=o||{}).encoders={$encode:a},t=function(t,e,n,r,i){var o,a,c,l={},u={};for(a in a="lineBreak","text"!==e||null==i[a]||p3(a,t)||F3(l,a,i[a]),("legend"==n||String(n).startsWith("axis"))&&(n=null),c=n===g3?i.group:n===v3?_b({},i.mark,i[e]):null)p3(a,t)||("fill"===a||"stroke"===a)&&(p3("fill",t)||p3("stroke",t))||F3(l,a,c[a]);for(a in bb(r).forEach((function(e){var n=i.style&&i.style[e];for(var r in n)p3(r,t)||F3(l,r,n[r])})),t=_b({},t),l)(c=l[a]).signal?(o=o||{})[a]=c:u[a]=c;return t.enter=_b(u,t.enter),o&&(t.update=_b(o,t.update)),t}(t,e,n,r,i.config),t)a[c]=U3(t[c],e,o,i);return o}function U3(t,e,n,r){var i,o={},a={};for(var c in t)null!=t[c]&&(o[c]=H3((i=t[c],qy(i)?function(t){var e="";return t.forEach((function(t){var n=I3(t);e+=t.test?"(".concat(t.test,")?").concat(n,":"):n})),":"===tb(e)&&(e+="null"),e}(i):I3(i)),r,n,a));return{$expr:{marktype:e,channels:o},$fields:Object.keys(a),$output:Object.keys(t)}}function H3(t,e,n,r){var i=M2(t,e);return i.$fields.forEach((function(t){return r[t]=1})),_b(n,i.$params),i.$expr}var W3="outer",V3=["value","update","init","react","bind"];function G3(t,e){Ty(t+' for "outer" push: '+tx(e))}function X3(t,e){var n=t.name;if(t.push===W3)e.signals[n]||G3("No prior signal definition",n),V3.forEach((function(e){void 0!==t[e]&&G3("Invalid property ",e)}));else{var r=e.addSignal(n,t.value);!1===t.react&&(r.react=!1),t.bind&&e.addBinding(n,t.bind)}}function q3(t,e,n,r){this.id=-1,this.type=t,this.value=e,this.params=n,r&&(this.parent=r)}function Y3(t,e,n,r){return new q3(t,e,n,r)}function $3(t,e){return Y3("operator",t,e)}function K3(t){var e={$ref:t.id};return t.id<0&&(t.refs=t.refs||[]).push(e),e}function J3(t,e){return e?{$field:t,$name:e}:{$field:t}}var Q3=J3("key");function t6(t,e){return{$compare:t,$order:e}}var e6="descending";function n6(t,e){return(t&&t.signal?"$"+t.signal:t||"")+(t&&e?"_":"")+(e&&e.signal?"$"+e.signal:e||"")}var r6="scope",i6="view";function o6(t){return t&&t.signal}function a6(t){if(o6(t))return!0;if(Yy(t))for(var e in t)if(a6(t[e]))return!0;return!1}function c6(t,e){return null!=t?t:e}function l6(t){return t&&t.signal||t}var u6="timer";function s6(t,e){return(t.merge?f6:t.stream?h6:t.type?d6:Ty("Invalid stream specification: "+tx(t)))(t,e)}function f6(t,e){var n=t.merge.map((function(t){return s6(t,e)})),r=p6({merge:n},t,e);return e.addStream(r).id}function h6(t,e){var n=p6({stream:s6(t.stream,e)},t,e);return e.addStream(n).id}function d6(t,e){var n;t.type===u6?(n=e.event(u6,t.throttle),t={between:t.between,filter:t.filter}):n=e.event(function(t){return t===r6?i6:t||i6}(t.source),t.type);var r=p6({stream:n},t,e);return 1===Object.keys(r).length?n:e.addStream(r).id}function p6(t,e,n){var r=e.between;return r&&(2!==r.length&&Ty('Stream "between" parameter must have 2 entries: '+tx(e)),t.between=[s6(r[0],n),s6(r[1],n)]),r=e.filter?[].concat(e.filter):[],(e.marktype||e.markname||e.markrole)&&r.push(function(t,e,n){var r="event.item";return r+(t&&"*"!==t?"&&"+r+".mark.marktype==='"+t+"'":"")+(n?"&&"+r+".mark.role==='"+n+"'":"")+(e?"&&"+r+".mark.name==='"+e+"'":"")}(e.marktype,e.markname,e.markrole)),e.source===r6&&r.push("inScope(event.item)"),r.length&&(t.filter=M2("("+r.join(")&&(")+")",n).$expr),null!=(r=e.throttle)&&(t.throttle=+r),null!=(r=e.debounce)&&(t.debounce=+r),e.consume&&(t.consume=!0),t}var v6={code:"_.$value",ast:{type:"Identifier",value:"value"}};function g6(t,e,n){var r=t.encode,i={target:n},o=t.events,a=t.update,c=[];o||Ty("Signal update missing events specification."),Vb(o)&&(o=t3(o,e.isSubscope()?r6:i6)),o=bb(o).filter((function(t){return t.signal||t.scale?(c.push(t),0):1})),c.length>1&&(c=[m6(c)]),o.length&&c.push(o.length>1?{merge:o}:o[0]),null!=r&&(a&&Ty("Signal encode and update are mutually exclusive."),a="encode(item(),"+tx(r)+")"),i.update=Vb(a)?M2(a,e):null!=a.expr?M2(a.expr,e):null!=a.value?a.value:null!=a.signal?{$expr:v6,$params:{$value:e.signalRef(a.signal)}}:Ty("Invalid signal update specification."),t.force&&(i.options={force:!0}),c.forEach((function(t){return e.addUpdate(_b(function(t,e){return{source:t.signal?e.signalRef(t.signal):t.scale?e.scaleRef(t.scale):s6(t,e)}}(t,e),i))}))}function m6(t){return{signal:"["+t.map((function(t){return t.scale?'scale("'+t.scale+'")':t.signal}))+"]"}}var y6=function(t){return function(e,n,r){return Y3(t,n,e||void 0,r)}},b6=y6("aggregate"),x6=y6("axisticks"),w6=y6("bound"),S6=y6("collect"),k6=y6("compare"),C6=y6("datajoin"),O6=y6("encode"),E6=y6("expression"),M6=y6("facet"),A6=y6("field"),P6=y6("key"),_6=y6("legendentries"),D6=y6("load"),T6=y6("mark"),Z6=y6("multiextent"),F6=y6("multivalues"),j6=y6("overlap"),I6=y6("params"),R6=y6("prefacet"),L6=y6("projection"),N6=y6("proxy"),B6=y6("relay"),z6=y6("render"),U6=y6("scale"),H6=y6("sieve"),W6=y6("sortitems"),V6=y6("viewlayout"),G6=y6("values"),X6=0,q6={min:"min",max:"max",count:"sum"};function Y6(t,e){var n,r=e.getScale(t.name).params;for(n in r.domain=Q6(t.domain,t,e),null!=t.range&&(r.range=c4(t,e,r)),null!=t.interpolate&&function(t,e){e.interpolate=$6(t.type||t),null!=t.gamma&&(e.interpolateGamma=$6(t.gamma))}(t.interpolate,r),null!=t.nice&&(r.nice=function(t){return Yy(t)?{interval:$6(t.interval),step:$6(t.step)}:$6(t)}(t.nice)),null!=t.bins&&(r.bins=function(t,e){return t.signal||qy(t)?K6(t,e):e.objectProperty(t)}(t.bins,e)),t)Fb(r,n)||"name"===n||(r[n]=$6(t[n],e))}function $6(t,e){return Yy(t)?t.signal?e.signalRef(t.signal):Ty("Unsupported object: "+tx(t)):t}function K6(t,e){return t.signal?e.signalRef(t.signal):t.map((function(t){return $6(t,e)}))}function J6(t){Ty("Can not find data set: "+tx(t))}function Q6(t,e,n){if(t)return t.signal?n.signalRef(t.signal):(qy(t)?t4:t.fields?n4:e4)(t,e,n);null==e.domainMin&&null==e.domainMax||Ty("No scale domain defined for domainMin/domainMax to override.")}function t4(t,e,n){return t.map((function(t){return $6(t,n)}))}function e4(t,e,n){var r=n.getData(t.data);return r||J6(t.data),eI(e.type)?r.valuesRef(n,t.field,i4(t.sort,!1)):oI(e.type)?r.domainRef(n,t.field):r.extentRef(n,t.field)}function n4(t,e,n){var r=t.data,i=t.fields.reduce((function(t,e){return e=Vb(e)?{data:r,field:e}:qy(e)||e.signal?function(t,e){var n="_:vega:_"+X6++,r=S6({});if(qy(t))r.value={$ingest:t};else if(t.signal){var i="setdata("+tx(n)+","+t.signal+")";r.params.input=e.signalRef(i)}return e.addDataPipeline(n,[r,H6({})]),{data:n,field:"data"}}(e,n):e,t.push(e),t}),[]);return(eI(e.type)?r4:oI(e.type)?o4:a4)(t,n,i)}function r4(t,e,n){var r,i,o=i4(t.sort,!0),a=n.map((function(t){var n=e.getData(t.data);return n||J6(t.data),n.countsRef(e,t.field,o)})),c={groupby:Q3,pulse:a};o&&(r=o.op||"count",i=o.field?n6(r,o.field):"count",c.ops=[q6[r]],c.fields=[e.fieldRef(i)],c.as=[i]),r=e.add(b6(c));var l=e.add(S6({pulse:K3(r)}));return i=e.add(G6({field:Q3,sort:e.sortRef(o),pulse:K3(l)})),K3(i)}function i4(t,e){return t&&(t.field||t.op?t.field||"count"===t.op?e&&t.field&&t.op&&!q6[t.op]&&Ty("Multiple domain scales can not be sorted using "+t.op):Ty("No field provided for sort aggregate op: "+t.op):Yy(t)?t.field="key":t={field:"key"}),t}function o4(t,e,n){var r=n.map((function(t){var n=e.getData(t.data);return n||J6(t.data),n.domainRef(e,t.field)}));return K3(e.add(F6({values:r})))}function a4(t,e,n){var r=n.map((function(t){var n=e.getData(t.data);return n||J6(t.data),n.extentRef(e,t.field)}));return K3(e.add(Z6({extents:r})))}function c4(t,e,n){var r=e.config.range,i=t.range;if(i.signal)return e.signalRef(i.signal);if(Vb(i)){if(r&&Fb(r,i))return c4(t=_b({},t,{range:r[i]}),e,n);"width"===i?i=[0,{signal:"width"}]:"height"===i?i=eI(t.type)?[0,{signal:"height"}]:[{signal:"height"},0]:Ty("Unrecognized scale range value: "+tx(i))}else{if(i.scheme)return n.scheme=qy(i.scheme)?K6(i.scheme,e):$6(i.scheme,e),i.extent&&(n.schemeExtent=K6(i.extent,e)),void(i.count&&(n.schemeCount=$6(i.count,e)));if(i.step)return void(n.rangeStep=$6(i.step,e));if(eI(t.type)&&!qy(i))return Q6(i,t,e);qy(i)||Ty("Unsupported range type: "+tx(i))}return i.map((function(t){return(qy(t)?K6:$6)(t,e)}))}function l4(t,e,n){return qy(t)?t.map((function(t){return l4(t,e,n)})):Yy(t)?t.signal?n.signalRef(t.signal):"fit"===e?t:Ty("Unsupported parameter object: "+tx(t)):t}var u4="top",s4="left",f4="right",h4="bottom",d4="center",p4="vertical",v4="start",g4="end",m4="index",y4="label",b4="offset",x4="perc",w4="perc2",S4="value",k4="guide-label",C4="guide-title",O4="group-title",E4="group-subtitle",M4="symbol",A4="gradient",P4="discrete",_4="size",D4=[_4,"shape","fill","stroke","strokeWidth","strokeDash","opacity"],T4={name:1,style:1,interactive:1},Z4={value:0},F4={value:1},j4="group",I4="rect",R4="rule",L4="symbol",N4="text";function B4(t){return t.type=j4,t.interactive=t.interactive||!1,t}function z4(t,e){var n=function(n,r){return c6(t[n],c6(e[n],r))};return n.isVertical=function(n){return p4===c6(t.direction,e.direction||(n?e.symbolDirection:e.gradientDirection))},n.gradientLength=function(){return c6(t.gradientLength,e.gradientLength||e.gradientWidth)},n.gradientThickness=function(){return c6(t.gradientThickness,e.gradientThickness||e.gradientHeight)},n.entryColumns=function(){return c6(t.columns,c6(e.columns,+n.isVertical(!0)))},n}function U4(t,e){var n=e&&(e.update&&e.update[t]||e.enter&&e.enter[t]);return n&&n.signal?n:n?n.value:null}function H4(t,e,n){return"item.anchor === '".concat(v4,"' ? ").concat(t," : item.anchor === '").concat(g4,"' ? ").concat(e," : ").concat(n)}var W4=H4(tx(s4),tx(f4),tx(d4));function V4(t,e){return e?t?Yy(t)?Object.assign({},t,{offset:V4(t.offset,e)}):{value:t,offset:e}:e:t}function G4(t,e){return e?(t.name=e.name,t.style=e.style||t.style,t.interactive=!!e.interactive,t.encode=d3(t.encode,e,T4)):t.interactive=!1,t}function X4(t,e,n,r){var i,o,a,c,l,u=z4(t,n),s=u.isVertical(),f=u.gradientThickness(),h=u.gradientLength();s?(o=[0,1],a=[0,0],c=f,l=h):(o=[0,0],a=[1,0],c=h,l=f);var d={enter:i={opacity:Z4,x:Z4,y:Z4,width:s3(c),height:s3(l)},update:_b({},i,{opacity:F4,fill:{gradient:e,start:o,stop:a}}),exit:{opacity:Z4}};return h3(d,{stroke:u("gradientStrokeColor"),strokeWidth:u("gradientStrokeWidth")},{opacity:u("gradientOpacity")}),G4({type:I4,role:M3,encode:d},r)}function q4(t,e,n,r,i){var o,a,c,l,u=z4(t,n),s=u.isVertical(),f=u.gradientThickness(),h=u.gradientLength(),d="";s?(o="y",c="y2",a="x",l="width",d="1-"):(o="x",c="x2",a="y",l="height");var p={opacity:Z4,fill:{scale:e,field:S4}};p[o]={signal:d+"datum."+x4,mult:h},p[a]=Z4,p[c]={signal:d+"datum."+w4,mult:h},p[l]=s3(f);var v={enter:p,update:_b({},p,{opacity:F4}),exit:{opacity:Z4}};return h3(v,{stroke:u("gradientStrokeColor"),strokeWidth:u("gradientStrokeWidth")},{opacity:u("gradientOpacity")}),G4({type:I4,role:O3,key:S4,from:i,encode:v},r)}var Y4="datum.".concat(x4,'<=0?"').concat(s4,'":datum.').concat(x4,'>=1?"').concat(f4,'":"').concat(d4,'"'),$4="datum.".concat(x4,'<=0?"').concat(h4,'":datum.').concat(x4,'>=1?"').concat(u4,'":"').concat("middle",'"');function K4(t,e,n,r){var i,o,a,c,l=z4(t,e),u=l.isVertical(),s=s3(l.gradientThickness()),f=l.gradientLength(),h=l("labelOverlap"),d="",p={enter:i={opacity:Z4},update:o={opacity:F4,text:{field:y4}},exit:{opacity:Z4}};return h3(p,{fill:l("labelColor"),fillOpacity:l("labelOpacity"),font:l("labelFont"),fontSize:l("labelFontSize"),fontStyle:l("labelFontStyle"),fontWeight:l("labelFontWeight"),limit:c6(t.labelLimit,e.gradientLabelLimit)}),u?(i.align={value:"left"},i.baseline=o.baseline={signal:$4},a="y",c="x",d="1-"):(i.align=o.align={signal:Y4},i.baseline={value:"top"},a="x",c="y"),i[a]=o[a]={signal:d+"datum."+x4,mult:f},i[c]=o[c]=s,s.offset=c6(t.labelOffset,e.gradientLabelOffset)||0,h=h?{separation:l("labelSeparation"),method:h,order:"datum."+m4}:void 0,G4({type:N4,role:A3,style:k4,key:S4,from:r,encode:p,overlap:h},n)}function J4(t,e,n,r,i){var o,a,c,l,u,s=z4(t,e),f=n.entries,h=!(!f||!f.interactive),d=f?f.name:void 0,p=s("clipHeight"),v=s("symbolOffset"),g={data:"value"},m="(".concat(i,") ? datum.").concat(b4," : datum.").concat(_4),y=p?s3(p):{field:_4},b="datum.".concat(m4),x="max(1, ".concat(i,")");y.mult=.5,o={enter:a={opacity:Z4,x:{signal:m,mult:.5,offset:v},y:y},update:c={opacity:F4,x:a.x,y:a.y},exit:{opacity:Z4}};var w=null,S=null;t.fill||(w=e.symbolBaseFillColor,S=e.symbolBaseStrokeColor),h3(o,{fill:s("symbolFillColor",w),shape:s("symbolType"),size:s("symbolSize"),stroke:s("symbolStrokeColor",S),strokeDash:s("symbolDash"),strokeDashOffset:s("symbolDashOffset"),strokeWidth:s("symbolStrokeWidth")},{opacity:s("symbolOpacity")}),D4.forEach((function(e){t[e]&&(c[e]=a[e]={scale:t[e],field:S4})}));var k=G4({type:L4,role:P3,key:S4,from:g,clip:!!p||void 0,encode:o},n.symbols),C=s3(v);C.offset=s("labelOffset"),h3(o={enter:a={opacity:Z4,x:{signal:m,offset:C},y:y},update:c={opacity:F4,text:{field:y4},x:a.x,y:a.y},exit:{opacity:Z4}},{align:s("labelAlign"),baseline:s("labelBaseline"),fill:s("labelColor"),fillOpacity:s("labelOpacity"),font:s("labelFont"),fontSize:s("labelFontSize"),fontStyle:s("labelFontStyle"),fontWeight:s("labelFontWeight"),limit:s("labelLimit")});var O=G4({type:N4,role:A3,style:k4,key:S4,from:g,encode:o},n.labels);return o={enter:{noBound:{value:!p},width:Z4,height:p?s3(p):Z4,opacity:Z4},exit:{opacity:Z4},update:c={opacity:F4,row:{signal:null},column:{signal:null}}},s.isVertical(!0)?(l="ceil(item.mark.items.length / ".concat(x,")"),c.row.signal="".concat(b,"%").concat(l),c.column.signal="floor(".concat(b," / ").concat(l,")"),u={field:["row",b]}):(c.row.signal="floor(".concat(b," / ").concat(x,")"),c.column.signal="".concat(b," % ").concat(x),u={field:b}),c.column.signal="(".concat(i,")?").concat(c.column.signal,":").concat(b),B4({role:m3,from:r={facet:{data:r,name:"value",groupby:m4}},encode:d3(o,f,T4),marks:[k,O],name:d,interactive:h,sort:u})}var Q4='item.orient === "left"',t8='item.orient === "right"',e8="(".concat(Q4," || ").concat(t8,")"),n8="datum.vgrad && ".concat(e8),r8=H4('"top"','"bottom"','"middle"'),i8=H4('"right"','"left"','"center"'),o8="datum.vgrad && ".concat(t8," ? (").concat(i8,") : (").concat(e8," && !(datum.vgrad && ").concat(Q4,')) ? "left" : ').concat(W4),a8="item._anchor || (".concat(e8,' ? "middle" : "start")'),c8="".concat(n8," ? (").concat(Q4," ? -90 : 90) : 0"),l8="".concat(e8," ? (datum.vgrad ? (").concat(t8,' ? "bottom" : "top") : ').concat(r8,') : "top"');function u8(t,e){var n;return Yy(t)&&(t.signal?n=t.signal:t.path?n="pathShape("+s8(t.path)+")":t.sphere&&(n="geoShape("+s8(t.sphere)+', {type: "Sphere"})')),n?e.signalRef(n):!!t}function s8(t){return Yy(t)&&t.signal?t.signal:tx(t)}function f8(t){var e=t.role||"";return e.indexOf("axis")&&e.indexOf("legend")&&e.indexOf("title")?t.type===j4?m3:e||v3:e}function h8(t){return{marktype:t.type,name:t.name||void 0,role:t.role||f8(t),zindex:+t.zindex||void 0,aria:t.aria,description:t.description}}function d8(t,e){return t&&t.signal?e.signalRef(t.signal):!1!==t}function p8(t,e){var n=sE(t.type);n||Ty("Unrecognized transform type: "+tx(t.type));var r=Y3(n.type.toLowerCase(),null,v8(n,t,e));return t.signal&&e.addSignal(t.signal,e.proxy(r)),r.metadata=n.metadata||{},r}function v8(t,e,n){for(var r={},i=t.params.length,o=0;o0?",":"")+(Yy(i)?i.signal||b7(i):tx(i))}return n+"]"}function w7(t){var e,n,r="{",i=0;for(e in t)n=t[e],r+=(++i>1?",":"")+tx(e)+":"+(Yy(n)?n.signal||b7(n):tx(n));return r+"}"}function S7(t,e,n){return Yy(t)||Ty("Input Vega specification must be an object."),e=Ky(function(){var t="sans-serif",e="#4c78a8",n="#000",r="#888",i="#ddd";return{description:"Vega visualization",padding:0,autosize:"pad",background:null,events:{defaults:{allow:["wheel"]}},group:null,mark:null,arc:{fill:e},area:{fill:e},image:null,line:{stroke:e,strokeWidth:2},path:{stroke:e},rect:{fill:e},rule:{stroke:n},shape:{stroke:e},symbol:{fill:e,size:64},text:{fill:n,font:t,fontSize:11},trail:{fill:e,size:2},style:{"guide-label":{fill:n,font:t,fontSize:10},"guide-title":{fill:n,font:t,fontSize:11,fontWeight:"bold"},"group-title":{fill:n,font:t,fontSize:13,fontWeight:"bold"},"group-subtitle":{fill:n,font:t,fontSize:12},point:{size:30,strokeWidth:2,shape:"circle"},circle:{size:30,strokeWidth:2},square:{size:30,strokeWidth:2,shape:"square"},cell:{fill:"transparent",stroke:i},view:{fill:"transparent"}},title:{orient:"top",anchor:"middle",offset:4,subtitlePadding:3},axis:{minExtent:0,maxExtent:200,bandPosition:.5,domain:!0,domainWidth:1,domainColor:r,grid:!1,gridWidth:1,gridColor:i,labels:!0,labelAngle:0,labelLimit:180,labelOffset:0,labelPadding:2,ticks:!0,tickColor:r,tickOffset:0,tickRound:!0,tickSize:5,tickWidth:1,titlePadding:4},axisBand:{tickOffset:-.5},projection:{type:"mercator"},legend:{orient:"right",padding:0,gridAlign:"each",columnPadding:10,rowPadding:2,symbolDirection:"vertical",gradientDirection:"vertical",gradientLength:200,gradientThickness:16,gradientStrokeColor:i,gradientStrokeWidth:0,gradientLabelOffset:2,labelAlign:"left",labelBaseline:"middle",labelLimit:160,labelOffset:4,labelOverlap:!0,symbolLimit:30,symbolType:"circle",symbolSize:100,symbolOffset:0,symbolStrokeWidth:1.5,symbolBaseFillColor:"transparent",symbolBaseStrokeColor:r,titleLimit:180,titleOrient:"top",titlePadding:5,layout:{offset:18,direction:"horizontal",left:{direction:"vertical"},right:{direction:"vertical"}}},range:{category:{scheme:"tableau10"},ordinal:{scheme:"blues"},heatmap:{scheme:"yellowgreenblue"},ramp:{scheme:"blues"},diverging:{scheme:"blueorange",extent:[1,0]},symbol:["circle","square","triangle-up","cross","diamond","triangle-right","triangle-down","triangle-left"]}}}(),e,t.config),v7(t,new m7(e,n)).toRuntime()}m7.prototype=y7.prototype={parse:function(t){return d7(t,this)},fork:function(){return new y7(this)},isSubscope:function(){return this._subid>0},toRuntime:function(){return this.finish(),{description:this.description,operators:this.operators,streams:this.streams,updates:this.updates,bindings:this.bindings,eventConfig:this.eventConfig,locale:this.locale}},id:function(){return(this._subid?this._subid+":":0)+this._id++},add:function(t){return this.operators.push(t),t.id=this.id(),t.refs&&(t.refs.forEach((function(e){e.$ref=t.id})),t.refs=null),t},proxy:function(t){var e=t instanceof q3?K3(t):t;return this.add(N6({value:e}))},addStream:function(t){return this.streams.push(t),t.id=this.id(),t},addUpdate:function(t){return this.updates.push(t),t},finish:function(){var t,e;for(t in this.root&&(this.root.root=!0),this.signals)this.signals[t].signal=t;for(t in this.scales)this.scales[t].scale=t;function n(t,e,n){var r;t&&((r=t.data||(t.data={}))[e]||(r[e]=[])).push(n)}for(t in this.data)for(var r in n((e=this.data[t]).input,t,"input"),n(e.output,t,"output"),n(e.values,t,"values"),e.index)n(e.index[r],t,"index:"+r);return this},pushState:function(t,e,n){this._encode.push(K3(this.add(H6({pulse:t})))),this._parent.push(e),this._lookup.push(n?K3(this.proxy(n)):null),this._markpath.push(-1)},popState:function(){this._encode.pop(),this._parent.pop(),this._lookup.pop(),this._markpath.pop()},parent:function(){return tb(this._parent)},encode:function(){return tb(this._encode)},lookup:function(){return tb(this._lookup)},markpath:function(){var t=this._markpath;return++t[t.length-1]},fieldRef:function(t,e){if(Vb(t))return J3(t,e);t.signal||Ty("Unsupported field reference: "+tx(t));var n=t.signal,r=this.field[n];if(!r){var i={name:this.signalRef(n)};e&&(i.as=e),this.field[n]=r=K3(this.add(A6(i)))}return r},compareRef:function(t){var e=this,n=!1,r=function(t){return o6(t)?(n=!0,e.signalRef(t.signal)):function(t){return t&&t.expr}(t)?(n=!0,e.exprRef(t.expr)):t},i=bb(t.field).map(r),o=bb(t.order).map(r);return n?K3(this.add(k6({fields:i,orders:o}))):t6(i,o)},keyRef:function(t,e){var n=!1,r=this.signals;return t=bb(t).map((function(t){return o6(t)?(n=!0,K3(r[t.signal])):t})),n?K3(this.add(P6({fields:t,flat:e}))):function(t,e){var n={$key:t};return e&&(n.$flat=!0),n}(t,e)},sortRef:function(t){if(!t)return t;var e=n6(t.op,t.field),n=t.order||"ascending";return n.signal?K3(this.add(k6({fields:e,orders:this.signalRef(n.signal)}))):t6(e,n)},event:function(t,e){var n=t+":"+e;if(!this.events[n]){var r=this.id();this.streams.push({id:r,source:t,type:e}),this.events[n]=r}return this.events[n]},hasOwnSignal:function(t){return Fb(this.signals,t)},addSignal:function(t,e){this.hasOwnSignal(t)&&Ty("Duplicate signal name: "+tx(t));var n=e instanceof q3?e:this.add($3(e));return this.signals[t]=n},getSignal:function(t){return this.signals[t]||Ty("Unrecognized signal name: "+tx(t)),this.signals[t]},signalRef:function(t){return this.signals[t]?K3(this.signals[t]):(Fb(this.lambdas,t)||(this.lambdas[t]=this.add($3(null))),K3(this.lambdas[t]))},parseLambdas:function(){for(var t=Object.keys(this.lambdas),e=0,n=t.length;e":function(t,e){return t>e},"<":function(t,e){return t=":function(t,e){return t>=e},"==":function(t,e){return t==e},"!=":function(t,e){return t!=e},"===":function(t,e){return t===e},"!==":function(t,e){return t!==e},"&":function(t,e){return t&e},"|":function(t,e){return t|e},"^":function(t,e){return t^e},"<<":function(t,e){return t<>":function(t,e){return t>>e},">>>":function(t,e){return t>>>e}},E7={"+":function(t){return+t},"-":function(t){return-t},"~":function(t){return~t},"!":function(t){return!t}},M7=Array.prototype.slice,A7=function(t,e,n){var r=n?n(e[0]):e[0];return r[t].apply(r,M7.call(e,1))},P7={isNaN:Number.isNaN,isFinite:Number.isFinite,abs:Math.abs,acos:Math.acos,asin:Math.asin,atan:Math.atan,atan2:Math.atan2,ceil:Math.ceil,cos:Math.cos,exp:Math.exp,floor:Math.floor,log:Math.log,max:Math.max,min:Math.min,pow:Math.pow,random:Math.random,round:Math.round,sin:Math.sin,sqrt:Math.sqrt,tan:Math.tan,clamp:function(t,e,n){return Math.max(e,Math.min(n,t))},now:Date.now,utc:Date.UTC,datetime:function(t,e,n,r,i,o,a){return new Date(t,e||0,null!=n?n:1,r||0,i||0,o||0,a||0)},date:function(t){return new Date(t).getDate()},day:function(t){return new Date(t).getDay()},year:function(t){return new Date(t).getFullYear()},month:function(t){return new Date(t).getMonth()},hours:function(t){return new Date(t).getHours()},minutes:function(t){return new Date(t).getMinutes()},seconds:function(t){return new Date(t).getSeconds()},milliseconds:function(t){return new Date(t).getMilliseconds()},time:function(t){return new Date(t).getTime()},timezoneoffset:function(t){return new Date(t).getTimezoneOffset()},utcdate:function(t){return new Date(t).getUTCDate()},utcday:function(t){return new Date(t).getUTCDay()},utcyear:function(t){return new Date(t).getUTCFullYear()},utcmonth:function(t){return new Date(t).getUTCMonth()},utchours:function(t){return new Date(t).getUTCHours()},utcminutes:function(t){return new Date(t).getUTCMinutes()},utcseconds:function(t){return new Date(t).getUTCSeconds()},utcmilliseconds:function(t){return new Date(t).getUTCMilliseconds()},length:function(t){return t.length},join:function(){return A7("join",arguments)},indexof:function(){return A7("indexOf",arguments)},lastindexof:function(){return A7("lastIndexOf",arguments)},slice:function(){return A7("slice",arguments)},reverse:function(t){return t.slice().reverse()},parseFloat:parseFloat,parseInt:parseInt,upper:function(t){return String(t).toUpperCase()},lower:function(t){return String(t).toLowerCase()},substring:function(){return A7("substring",arguments,String)},split:function(){return A7("split",arguments,String)},replace:function(){return A7("replace",arguments,String)},trim:function(t){return String(t).trim()},regexp:RegExp,test:function(t,e){return RegExp(t).test(e)}},_7=["view","item","group","xy","x","y"],D7=new Set([Function,eval,setTimeout,setInterval]);"function"==typeof setImmediate&&D7.add(setImmediate);var T7={Literal:function(t,e){return e.value},Identifier:function(t,e){var n=e.name;return t.memberDepth>0?n:"datum"===n?t.datum:"event"===n?t.event:"item"===n?t.item:C7[n]||t.params["$"+n]},MemberExpression:function(t,e){var n=!e.computed,r=t(e.object);n&&(t.memberDepth+=1);var i=t(e.property);if(n&&(t.memberDepth-=1),!D7.has(r[i]))return r[i];console.error('Prevented interpretation of member "'.concat(i,'" which could lead to insecure code execution'))},CallExpression:function(t,e){var n=e.arguments,r=e.callee.name;return r.startsWith("_")&&(r=r.slice(1)),"if"===r?t(n[0])?t(n[1]):t(n[2]):(t.fn[r]||P7[r]).apply(t.fn,n.map(t))},ArrayExpression:function(t,e){return e.elements.map(t)},BinaryExpression:function(t,e){return O7[e.operator](t(e.left),t(e.right))},UnaryExpression:function(t,e){return E7[e.operator](t(e.argument))},ConditionalExpression:function(t,e){return t(e.test)?t(e.consequent):t(e.alternate)},LogicalExpression:function(t,e){return"&&"===e.operator?t(e.left)&&t(e.right):t(e.left)||t(e.right)},ObjectExpression:function(t,e){return e.properties.reduce((function(e,n){t.memberDepth+=1;var r=t(n.key);return t.memberDepth-=1,D7.has(t(n.value))?console.error('Prevented interpretation of property "'.concat(r,'" which could lead to insecure code execution')):e[r]=t(n.value),e}),{})}};function Z7(t,e,n,r,i,o){var a=function t(e){return T7[e.type](t,e)};return a.memberDepth=0,a.fn=Object.create(e),a.params=n,a.datum=r,a.event=i,a.item=o,_7.forEach((function(t){return a.fn[t]=function(){var e;return(e=i.vega)[t].apply(e,arguments)}})),a(t)}var F7={operator:function(t,e){var n=e.ast,r=t.functions;return function(t){return Z7(n,r,t)}},parameter:function(t,e){var n=e.ast,r=t.functions;return function(t,e){return Z7(n,r,e,t)}},event:function(t,e){var n=e.ast,r=t.functions;return function(t){return Z7(n,r,void 0,void 0,t)}},handler:function(t,e){var n=e.ast,r=t.functions;return function(t,e){var i=e.item&&e.item.datum;return Z7(n,r,t,i,e)}},encode:function(t,e){var n=e.marktype,r=e.channels,i=t.functions,o="group"===n||"image"===n||"rect"===n;return function(t,e){var a,c=t.datum,l=0;for(var u in r)a=Z7(r[u].ast,i,e,c,void 0,t),t[u]!==a&&(t[u]=a,l=1);return"rule"!==n&&function(t,e,n){var r;e.x2&&(e.x?(n&&t.x>t.x2&&(r=t.x,t.x=t.x2,t.x2=r),t.width=t.x2-t.x):t.x=t.x2-(t.width||0)),e.xc&&(t.x=t.xc-(t.width||0)/2),e.y2&&(e.y?(n&&t.y>t.y2&&(r=t.y,t.y=t.y2,t.y2=r),t.height=t.y2-t.y):t.y=t.y2-(t.height||0)),e.yc&&(t.y=t.yc-(t.height||0)/2)}(t,r,o),l}}},j7=n(53746),I7=n.n(j7),R7=n(2412),L7=n.n(R7),N7=n(16726),B7=n.n(N7);function z7(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return U7(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return U7(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function U7(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function $7(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n1?e-1:0),r=1;r1&&void 0!==arguments[1]?arguments[1]:"datum",n=Zy(t),r=[],i=1;i<=n.length;i++){var o="[".concat(n.slice(0,i).map(tx).join("]["),"]");r.push("".concat(e).concat(o))}return r.join(" && ")}function E9(t){return"".concat(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"datum","[").concat(tx(Zy(t).join(".")),"]")}function M9(t){return t.replace(/(\[|\]|\.|'|")/g,"\\$1")}function A9(t){return"".concat(Zy(t).map(M9).join("\\."))}function P9(t,e,n){return t.replace(new RegExp(e.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"g"),n)}function _9(t){return"".concat(Zy(t).join("."))}function D9(t){return t?Zy(t).length:0}function T9(){for(var t=arguments.length,e=new Array(t),n=0;n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Zet(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Ket(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n3&&void 0!==arguments[3]?arguments[3]:{},i=r.vgChannel,o=r.ignoreVgConfig;return i&&void 0!==e[i]?e[i]:void 0!==e[t]?e[t]:!o||i&&i!==t?unt(t,e,n,r):void 0}function unt(t,e,n){var r=(arguments.length>3&&void 0!==arguments[3]?arguments[3]:{}).vgChannel;return T9(r?snt(t,e,n.style):void 0,snt(t,e,n.style),r?n[e.type][r]:void 0,n[e.type][t],r?n.mark[r]:n.mark[t])}function snt(t,e,n){return fnt(t,cnt(e),n)}function fnt(t,e,n){var r,i,o=$et(e=bb(e));try{for(o.s();!(i=o.n()).done;){var a=n[i.value];a&&void 0!==a[t]&&(r=a[t])}}catch(c){o.e(c)}finally{o.f()}return r}function hnt(t,e){return bb(t).reduce((function(t,n){var r;return t.field.push(Wot(n,e)),t.order.push(null!==(r=n.sort)&&void 0!==r?r:"ascending"),t}),{field:[],order:[]})}function dnt(t,e){var n=(0,Xm.Z)(t);return e.forEach((function(t){var e,r=$et(n);try{for(r.s();!(e=r.n()).done;){var i=e.value;if(K7(i,t))return}}catch(o){r.e(o)}finally{r.f()}n.push(t)})),n}function pnt(t,e){return K7(t,e)||!e?t:t?[].concat((0,Xm.Z)(bb(t)),(0,Xm.Z)(bb(e))).join(", "):e}function vnt(t,e){var n=t.value,r=e.value;if(null==n||null===r)return{explicit:t.explicit,value:null};if((Bet(n)||zet(n))&&(Bet(r)||zet(r)))return{explicit:t.explicit,value:pnt(n,r)};if(Bet(n)||zet(n))return{explicit:t.explicit,value:n};if(Bet(r)||zet(r))return{explicit:t.explicit,value:r};if(!(Bet(n)||zet(n)||Bet(r)||zet(r)))return{explicit:t.explicit,value:dnt(n,r)};throw new Error("It should never reach here")}function gnt(t){return"Invalid specification ".concat(n9(t),'. Make sure the specification includes at least one of the following properties: "mark", "layer", "facet", "hconcat", "vconcat", "concat", or "repeat".')}var mnt='Autosize "fit" only works for single views and layered views.';function ynt(t){return"".concat("width"==t?"Width":"Height",' "container" only works for single views and layered views.')}function bnt(t){var e="width"==t?"x":"y";return"".concat("width"==t?"Width":"Height",' "container" only works well with autosize "fit" or "fit-').concat(e,'".')}function xnt(t){return t?'Dropping "fit-'.concat(t,'" because spec has discrete ').concat(Vtt(t),"."):'Dropping "fit" because spec has discrete size.'}function wnt(t){return"Unknown field for ".concat(t,". Cannot calculate view size.")}function Snt(t){return'Cannot project a selection on encoding channel "'.concat(t,'", which has no field.')}function knt(t,e){return'Cannot project a selection on encoding channel "'.concat(t,'" as it uses an aggregate function ("').concat(e,'").')}function Cnt(t){return"Selection not supported for ".concat(t," yet.")}var Ont="The same selection must be used to override scale domains in a layered view.";function Ent(t){return'The "columns" property cannot be used when "'.concat(t,'" has nested row/column.')}function Mnt(t,e,n){return'An ancestor parsed field "'.concat(t,'" as ').concat(n," but a child wants to parse the field as ").concat(e,".")}function Ant(t){return"Ignoring an invalid transform: ".concat(n9(t),".")}function Pnt(t){return"Config.customFormatTypes is not true, thus custom format type and format for channel ".concat(t," are dropped.")}function _nt(t){return'Invalid field type "'.concat(t,'".')}function Dnt(t,e){var n=e.fill,r=e.stroke;return"Dropping color ".concat(t," as the plot also has ").concat(n&&r?"fill and stroke":n?"fill":"stroke",".")}function Tnt(t,e){return"Dropping ".concat(n9(t),' from channel "').concat(e,'" since it does not contain any data field, datum, value, or signal.')}function Znt(t,e,n){return"".concat(t,' dropped as it is incompatible with "').concat(e,'"').concat(n?" when ".concat(n):"",".")}function Fnt(t){return"".concat(t," encoding has no scale, so specified scale is ignored.")}function jnt(t){return"".concat(t," encoding should be discrete (ordinal / nominal / binned).")}function Int(t){return"".concat(t," encoding should be discrete (ordinal / nominal / binned) or use a discretizing scale (e.g. threshold).")}function Rnt(t,e){return'Using discrete channel "'.concat(t,'" to encode "').concat(e,'" field can be misleading as it does not encode ').concat("ordinal"===e?"order":"magnitude",".")}function Lnt(t){return"Using unaggregated domain with raw field has no effect (".concat(n9(t),").")}function Nnt(t){return'Unaggregated domain not applicable for "'.concat(t,'" since it produces values outside the origin domain of the source data.')}function Bnt(t){return"Unaggregated domain is currently unsupported for log scale (".concat(n9(t),").")}function znt(t,e,n){return"".concat(n,"-scale's \"").concat(e,'" is dropped as it does not work with ').concat(t," scale.")}function Unt(t){return'The step for "'.concat(t,'" is dropped because the ').concat("width"===t?"x":"y"," is continuous.")}var Hnt="Domains that should be unioned has conflicting sort properties. Sort will be set to true.";function Wnt(t,e){return"Invalid ".concat(t,": ").concat(n9(e),".")}function Vnt(t){return"1D error band does not support ".concat(t,".")}function Gnt(t){return"Channel ".concat(t,' is required for "binned" bin.')}var Xnt=Xy(Wy),qnt=Xnt;function Ynt(){return qnt=Xnt}function $nt(){var t;(t=qnt).warn.apply(t,arguments)}function Knt(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return Jnt(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Jnt(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Jnt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n1&&($nt(function(t){return"Dropping day from datetime ".concat(n9(t)," as day cannot be combined with other units.")}(t)),delete(t=J7(t)).day),void 0!==t.year?n.push(t.year):n.push(2012),void 0!==t.month){var r=e?function(t){if(N9(t)&&(t=+t),Hb(t))return t-1;var e=t.toLowerCase(),n=trt.indexOf(e);if(-1!==n)return n;var r=e.substr(0,3),i=ert.indexOf(r);if(-1!==i)return i;throw new Error(Wnt("month",t))}(t.month):t.month;n.push(r)}else if(void 0!==t.quarter){var i=e?function(t){if(N9(t)&&(t=+t),Hb(t))return t>4&&$nt(Wnt("quarter",t)),t-1;throw new Error(Wnt("quarter",t))}(t.quarter):t.quarter;n.push(Hb(i)?3*i:"".concat(i,"*3"))}else n.push(0);if(void 0!==t.date)n.push(t.date);else if(void 0!==t.day){var o=e?function(t){if(N9(t)&&(t=+t),Hb(t))return t%7;var e=t.toLowerCase(),n=nrt.indexOf(e);if(-1!==n)return n;var r=e.substr(0,3),i=rrt.indexOf(r);if(-1!==i)return i;throw new Error(Wnt("day",t))}(t.day):t.day;n.push(Hb(o)?o+1:"".concat(o,"+1"))}else n.push(1);for(var a=0,c=["hours","minutes","seconds","milliseconds"];a=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function lrt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0&&"seconds"===e&&"i"===t.charAt(n-1))&&(!(t.length>n+3&&"day"===e&&"o"===t.charAt(n+3))&&!(n>0&&"year"===e&&"f"===t.charAt(n-1))))}function xrt(t,e){var n,r=(arguments.length>2&&void 0!==arguments[2]?arguments[2]:{end:!1}).end,i=O9(e),o=vrt(t)?"utc":"";var a,c,l={},u=crt(hrt);try{for(u.s();!(a=u.n()).done;){var s=a.value;brt(t,s)&&(l[s]="quarter"===(c=s)?"(".concat(o,"quarter(").concat(i,")-1)"):"".concat(o).concat(c,"(").concat(i,")"),n=s)}}catch(f){u.e(f)}finally{u.f()}return r&&(l[n]+="+1"),function(t){var e=irt(t,!1).join(", ");return t.utc?"utc(".concat(e,")"):"datetime(".concat(e,")")}(l)}function wrt(t){if(t){var e=mrt(t);return"timeUnitSpecifier(".concat(n9(e),", ").concat(n9(grt),")")}}function Srt(t){var e;if(t)return Vb(t)?e=prt(t)?{unit:t.substring(6),binned:!0}:{unit:t}:Yy(t)&&(e=srt(srt({},t),t.unit?{unit:t.unit}:{})),vrt(e.unit)&&(e.utc=!0,e.unit=function(t){return t.substring(3)}(e.unit)),e}function krt(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(t){return t},n=Srt(t),r=yrt(n.unit);if(r&&"day"!==r){var i={year:2001,month:1,date:1,hours:0,minutes:0,seconds:0,milliseconds:0},o=Ort(r,n.step),a=o.step,c=o.part,l=srt(srt({},i),{},(0,V.Z)({},c,+i[c]+a));return"".concat(e(ort(l))," - ").concat(e(ort(i)))}}var Crt={year:1,month:1,date:1,hours:1,minutes:1,seconds:1,milliseconds:1};function Ort(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;if(function(t){return!!Crt[t]}(t))return{part:t,step:e};switch(t){case"day":case"dayofyear":return{part:"date",step:e};case"quarter":return{part:"month",step:3*e};case"week":return{part:"date",step:7*e}}}function Ert(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Mrt(t){for(var e=1;e1&&void 0!==arguments[1])||arguments[1],n=t.field,r=Srt(t.timeUnit)||{},i=r.unit,o=r.binned,a=Wot(t,{expr:"datum"}),c=i?"time(".concat(o?a:xrt(i,n),")"):a;if(Art(t))return"".concat(c,"===").concat(Irt(t.equal,i));if(Prt(t)){var l=t.lt;return"".concat(c,"<").concat(Irt(l,i))}if(Drt(t)){var u=t.gt;return"".concat(c,">").concat(Irt(u,i))}if(_rt(t)){var s=t.lte;return"".concat(c,"<=").concat(Irt(s,i))}if(Trt(t)){var f=t.gte;return"".concat(c,">=").concat(Irt(f,i))}if(Frt(t))return"indexof([".concat(function(t,e){return t.map((function(t){return Irt(t,e)}))}(t.oneOf,i).join(","),"], ").concat(c,") !== -1");if(function(t){return!(null==t||!t.field)&&void 0!==t.valid}(t))return Lrt(c,t.valid);if(Zrt(t)){var h=t.range,d=zet(h)?{signal:"".concat(h.signal,"[0]")}:h[0],p=zet(h)?{signal:"".concat(h.signal,"[1]")}:h[1];if(null!==d&&null!==p&&e)return"inrange("+c+", ["+Irt(d,i)+", "+Irt(p,i)+"])";var v=[];return null!==d&&v.push("".concat(c," >= ").concat(Irt(d,i))),null!==p&&v.push("".concat(c," <= ").concat(Irt(p,i))),v.length>0?v.join(" && "):"true"}throw new Error("Invalid field predicate: ".concat(n9(t)))}function Lrt(t){return!(arguments.length>1&&void 0!==arguments[1])||arguments[1]?"isValid(".concat(t,") && isFinite(+").concat(t,")"):"!isValid(".concat(t,") || !isFinite(+").concat(t,")")}function Nrt(t){return jrt(t)&&t.timeUnit?Mrt(Mrt({},t),{},{timeUnit:Srt(t.timeUnit)}):t}var Brt={quantitative:"quantitative",ordinal:"ordinal",temporal:"temporal",nominal:"nominal",geojson:"geojson"};function zrt(t){return"ordinal"===t||"nominal"===t}var Urt=Brt.quantitative,Hrt=Brt.ordinal,Wrt=Brt.temporal,Vrt=Brt.nominal,Grt=Brt.geojson;m9(Brt);var Xrt={LINEAR:"linear",LOG:"log",POW:"pow",SQRT:"sqrt",SYMLOG:"symlog",IDENTITY:"identity",SEQUENTIAL:"sequential",TIME:"time",UTC:"utc",QUANTILE:"quantile",QUANTIZE:"quantize",THRESHOLD:"threshold",BIN_ORDINAL:"bin-ordinal",ORDINAL:"ordinal",POINT:"point",BAND:"band"},qrt={linear:"numeric",log:"numeric",pow:"numeric",sqrt:"numeric",symlog:"numeric",identity:"numeric",sequential:"numeric",time:"time",utc:"time",ordinal:"ordinal","bin-ordinal":"bin-ordinal",point:"ordinal-position",band:"ordinal-position",quantile:"discretizing",quantize:"discretizing",threshold:"discretizing"};m9(qrt);function Yrt(t,e){var n=qrt[t],r=qrt[e];return n===r||"ordinal-position"===n&&"time"===r||"ordinal-position"===r&&"time"===n}var $rt={linear:0,log:1,pow:1,sqrt:1,symlog:1,identity:1,sequential:1,time:0,utc:0,point:10,band:11,ordinal:0,"bin-ordinal":0,quantile:0,quantize:0,threshold:0};function Krt(t){return $rt[t]}var Jrt=new Set(["linear","log","pow","sqrt","symlog"]),Qrt=new Set([].concat((0,Xm.Z)(Jrt),["time","utc"]));function tit(t){return Jrt.has(t)}var eit=new Set(["quantile","quantize","threshold"]),nit=new Set([].concat((0,Xm.Z)(Qrt),(0,Xm.Z)(eit),["sequential","identity"])),rit=new Set(["ordinal","bin-ordinal","point","band"]);new Set(["time","utc"]);function iit(t){return rit.has(t)}function oit(t){return nit.has(t)}function ait(t){return Qrt.has(t)}function cit(t){return eit.has(t)}function lit(t){return null==t?void 0:t.param}var uit={type:1,domain:1,domainMax:1,domainMin:1,domainMid:1,domainRaw:1,align:1,range:1,rangeMax:1,rangeMin:1,scheme:1,bins:1,reverse:1,round:1,clamp:1,nice:1,base:1,exponent:1,constant:1,interpolate:1,zero:1,padding:1,paddingInner:1,paddingOuter:1},sit=(m9(uit),(0,I.Z)(uit,["type","domain","range","rangeMax","rangeMin","scheme"])),fit=m9(sit);function hit(t,e){switch(e){case"type":case"domain":case"reverse":case"range":return!0;case"scheme":case"interpolate":return!["point","band","identity"].includes(t);case"bins":return!["point","band","identity","ordinal"].includes(t);case"round":return ait(t)||"band"===t||"point"===t;case"padding":case"rangeMin":case"rangeMax":return ait(t)||["point","band"].includes(t);case"paddingOuter":case"align":return["point","band"].includes(t);case"paddingInner":return"band"===t;case"domainMax":case"domainMid":case"domainMin":case"domainRaw":case"clamp":return ait(t);case"nice":return ait(t)||"quantize"===t||"threshold"===t;case"exponent":return"pow"===t;case"base":return"log"===t;case"constant":return"symlog"===t;case"zero":return oit(t)&&!o9(["log","time","utc","threshold","quantile"],t)}}function dit(t,e){switch(e){case"interpolate":case"scheme":case"domainMid":return Dtt(t)?void 0:'Cannot use the scale property "'.concat(e,'" with non-color channel.');case"align":case"type":case"bins":case"domain":case"domainMax":case"domainMin":case"domainRaw":case"range":case"base":case"exponent":case"constant":case"nice":case"padding":case"paddingInner":case"paddingOuter":case"rangeMax":case"rangeMin":case"reverse":case"round":case"clamp":case"zero":return}}var pit={arc:"arc",area:"area",bar:"bar",image:"image",line:"line",point:"point",rect:"rect",rule:"rule",text:"text",tick:"tick",trail:"trail",circle:"circle",square:"square",geoshape:"geoshape"},vit=pit.arc,git=pit.area,mit=pit.bar,yit=pit.image,bit=pit.line,xit=pit.point,wit=pit.rect,Sit=pit.rule,kit=pit.text,Cit=pit.tick,Oit=pit.trail,Eit=pit.circle,Mit=pit.square,Ait=pit.geoshape;function Pit(t){return["line","area","trail"].includes(t)}function _it(t){return["rect","bar","image","arc"].includes(t)}var Dit=new Set(m9(pit));function Tit(t){return t.type}var Zit=[].concat(["stroke","strokeWidth","strokeDash","strokeDashOffset","strokeOpacity","strokeJoin","strokeMiterLimit"],["fill","fillOpacity"]),Fit=m9({color:1,filled:1,invalid:1,order:1,radius2:1,theta2:1,timeUnitBandSize:1,timeUnitBandPosition:1}),jit=m9({mark:1,arc:1,area:1,bar:1,circle:1,image:1,line:1,point:1,rect:1,rule:1,square:1,text:1,tick:1,trail:1,geoshape:1});function Iit(t){return t&&null!=t.band}var Rit={horizontal:["cornerRadiusTopRight","cornerRadiusBottomRight"],vertical:["cornerRadiusTopLeft","cornerRadiusTopRight"]},Lit={binSpacing:1,continuousBandSize:5,minBandSize:.25,timeUnitBandPosition:.5},Nit={binSpacing:0,continuousBandSize:5,minBandSize:.25,timeUnitBandPosition:.5};function Bit(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function zit(t){for(var e=1;e1&&void 0!==arguments[1])||arguments[1];return Lrt(Vb(t)?t:Wot(t,{expr:"datum"}),!e)}function Vit(t,e,n,r){var i={};if(e&&(i.scale=e),Tot(t)){var o=t.datum;Qnt(o)?i.signal=ort(o):zet(o)?i.signal=o.signal:Fet(o)?i.signal=o.expr:i.value=o}else i.field=Wot(t,n);if(r){var a=r.offset,c=r.band;a&&(i.offset=a),c&&(i.band=c)}return i}function Git(t){var e=t.scaleName,n=t.fieldOrDatumDef,r=t.fieldOrDatumDef2,i=t.offset,o=t.startSuffix,a=t.bandPosition,c=void 0===a?.5:a,l=01&&void 0!==arguments[1]?arguments[1]:{},o=t.field,a=i.prefix,c=i.suffix,l="";if(function(t){return"count"===t.aggregate}(t))o=I9("count");else{var u;if(!i.nofn)if(function(t){return"op"in t}(t))u=t.op;else{var s,f,h=t.bin,d=t.aggregate,p=t.timeUnit;if(Met(h))u=Eet(h),c=(null!==(s=i.binSuffix)&&void 0!==s?s:"")+(null!==(f=i.suffix)&&void 0!==f?f:"");else if(d)bet(d)?(l='["'.concat(o,'"]'),o="argmax_".concat(d.argmax)):yet(d)?(l='["'.concat(o,'"]'),o="argmin_".concat(d.argmin)):u=String(d);else if(p&&!drt(p)){var v;e=Srt(p),n=e.utc,u=(r=(0,I.Z)(e,art)).unit?(n?"utc":"")+m9(r).map((function(t){return w9("".concat("unit"===t?"":"_".concat(t,"_")).concat(r[t]))})).join(""):(n?"utc":"")+"timeunit"+m9(r).map((function(t){return w9("_".concat(t,"_").concat(r[t]))})).join(""),c=(!["range","mid"].includes(i.binSuffix)&&i.binSuffix||"")+(null!==(v=i.suffix)&&void 0!==v?v:"")}}u&&(o=o?"".concat(u,"_").concat(o):u)}return c&&(o="".concat(o,"_").concat(c)),a&&(o="".concat(a,"_").concat(o)),i.forAs?_9(o):i.expr?E9(o,i.expr)+l:A9(o)+l}function Vot(t){switch(t.type){case"nominal":case"ordinal":case"geojson":return!0;case"quantitative":return _ot(t)&&!!t.bin;case"temporal":return!1}throw new Error(_nt(t.type))}var Got=function(t,e){switch(e.fieldTitle){case"plain":return t.field;case"functional":return function(t){var e=t.aggregate,n=t.bin,r=t.timeUnit,i=t.field;if(bet(e))return"".concat(i," for argmax(").concat(e.argmax,")");if(yet(e))return"".concat(i," for argmin(").concat(e.argmin,")");var o=r&&!drt(r)?Srt(r):void 0,a=e||(null==o?void 0:o.unit)||(null==o?void 0:o.maxbins)&&"timeunit"||Met(n)&&"bin";return a?"".concat(a.toUpperCase(),"(").concat(i,")"):i}(t);default:return function(t,e){var n=t.field,r=t.bin,i=t.timeUnit,o=t.aggregate;if("count"===o)return e.countTitle;if(Met(r))return"".concat(n," (binned)");if(i&&!drt(i)){var a,c=null===(a=Srt(i))||void 0===a?void 0:a.unit;if(c)return"".concat(n," (").concat(mrt(c).join("-"),")")}else if(o)return bet(o)?"".concat(n," for max ").concat(o.argmax):yet(o)?"".concat(n," for min ").concat(o.argmin):"".concat(C9(o)," of ").concat(n);return n}(t,e)}},Xot=Got;function qot(t){Xot=t}function Yot(t,e,n){var r,i=n.allowDisabling,o=n.includeDefault,a=void 0===o||o,c=null===(r=$ot(t))||void 0===r?void 0:r.title;if(!_ot(t))return null!=c?c:t.title;var l,u=t,s=a?Kot(u,e):void 0;return i?T9(c,u.title,s):null!==(l=null!=c?c:u.title)&&void 0!==l?l:s}function $ot(t){return Bot(t)&&t.axis?t.axis:zot(t)&&t.legend?t.legend:pot(t)&&t.header?t.header:void 0}function Kot(t,e){return Xot(t,e)}function Jot(t){if(Uot(t))return{format:t.format,formatType:t.formatType};var e,n=null!==(e=$ot(t))&&void 0!==e?e:{};return{format:n.format,formatType:n.formatType}}function Qot(t){return _ot(t)?t:Aot(t)?t.condition:void 0}function tat(t){return Iot(t)?t:Pot(t)?t.condition:void 0}function eat(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return Vb(t)||Hb(t)||Bb(t)?($nt(function(t,e,n){return"Channel ".concat(t," is a ").concat(e,". Converted to {value: ").concat(n9(n),"}.")}(e,Vb(t)?"string":Hb(t)?"number":"boolean",t)),{value:t}):Iot(t)?nat(t,e,n,r):Pot(t)?xot(xot({},t),{},{condition:nat(t.condition,e,n,r)}):t}function nat(t,e,n,r){if(Uot(t)){t.format;var i=t.formatType,o=(0,I.Z)(t,got);if(Yit(i)&&!n.customFormatTypes)return $nt(Pnt(e)),nat(o,e,n,r)}else{var a=Bot(t)?"axis":zot(t)?"legend":pot(t)?"header":null;if(a&&t[a]){var c=t[a],l=(c.format,c.formatType),u=(0,I.Z)(c,mot);if(Yit(l)&&!n.customFormatTypes)return $nt(Pnt(e)),nat(xot(xot({},t),{},(0,V.Z)({},a,u)),e,n,r)}}return _ot(t)?rat(t,e,r):function(t){var e=t.type;if(e)return t;var n=t.datum;return e=Hb(n)?"quantitative":Vb(n)?"nominal":Qnt(n)?"temporal":void 0,xot(xot({},t),{},{type:e})}(t)}function rat(t,e){var n=(arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}).compositeMark,r=void 0!==n&&n,i=t.aggregate,o=t.timeUnit,a=t.bin,c=t.field,l=xot({},t);if(r||!i||xet(i)||bet(i)||yet(i)||($nt(function(t){return'Invalid aggregation operator "'.concat(t,'".')}(i)),delete l.aggregate),o&&(l.timeUnit=Srt(o)),c&&(l.field="".concat(c)),Met(a)&&(l.bin=iat(a,e)),Aet(a)&&!tet(e)&&$nt(function(t){return"Channel ".concat(t,' should not be used with "binned" bin.')}(e)),Rot(l)){var u=l.type,s=function(t){if(t)switch(t=t.toLowerCase()){case"q":case Urt:return"quantitative";case"t":case Wrt:return"temporal";case"o":case Hrt:return"ordinal";case"n":case Vrt:return"nominal";case Grt:return"geojson"}}(u);u!==s&&(l.type=s),"quantitative"!==u&&ket(i)&&($nt(function(t,e){return'Invalid field type "'.concat(t,'" for aggregate: "').concat(e,'", using "quantitative" instead.')}(u,i)),l.type="quantitative")}else if(!ztt(e)){var f=function(t,e){var n;switch(e){case"latitude":case"longitude":return"quantitative";case"row":case"column":case"facet":case"shape":case"strokeDash":return"nominal";case"order":return"ordinal"}if(Sot(t)&&qy(t.sort))return"ordinal";var r=t.aggregate,i=t.bin;if(t.timeUnit)return"temporal";if(i||r&&!bet(r)&&!yet(r))return"quantitative";if(Not(t)&&null!==(n=t.scale)&&void 0!==n&&n.type)switch(qrt[t.scale.type]){case"numeric":case"discretizing":return"quantitative";case"time":return"temporal"}return"nominal"}(l,e);l.type=f}if(Rot(l)){var h=function(t,e){var n=t.type;if("geojson"===n&&"shape"!==e)return{compatible:!1,warning:"Channel ".concat(e," should not be used with a geojson data.")};switch(e){case U9:case H9:case W9:return Vot(t)?oat:{compatible:!1,warning:jnt(e)};case V9:case G9:case Y9:case $9:case ott:case att:case ctt:case gtt:case ytt:case btt:case xtt:case wtt:case Stt:case stt:case Q9:case K9:case ktt:return oat;case ntt:case itt:case ett:case rtt:return n!==Urt?{compatible:!1,warning:"Channel ".concat(e," should be used with a quantitative field only, not ").concat(t.type," field.")}:oat;case ftt:case htt:case dtt:case ptt:case utt:case ttt:case J9:case X9:case q9:return"nominal"!==n||t.sort?oat:{compatible:!1,warning:"Channel ".concat(e," should not be used with an unsorted discrete field.")};case ltt:case vtt:return Vot(t)||function(t){var e;return Not(t)&&cit(null===(e=t.scale)||void 0===e?void 0:e.type)}(t)?oat:{compatible:!1,warning:Int(e)};case mtt:return"nominal"!==t.type||"sort"in t?oat:{compatible:!1,warning:"Channel order is inappropriate for nominal field, which has no inherent order."}}}(l,e)||{},d=h.compatible,p=h.warning;!1===d&&$nt(p)}if(Sot(l)&&Vb(l.sort)){var v=l.sort;if(uot(v))return xot(xot({},l),{},{sort:{encoding:v}});var g=v.substr(1);if("-"===v.charAt(0)&&uot(g))return xot(xot({},l),{},{sort:{encoding:g,order:"descending"}})}if(pot(l)){var m=l.header;if(m){var y=m.orient,b=(0,I.Z)(m,yot);if(y)return xot(xot({},l),{},{header:xot(xot({},b),{},{labelOrient:m.labelOrient||y,titleOrient:m.titleOrient||y})})}}return l}function iat(t,e){return Bb(t)?{maxbins:Det(e)}:"binned"===t?{binned:!0}:t.maxbins||t.step?t:xot(xot({},t),{},{maxbins:Det(e)})}var oat={compatible:!0};function aat(t){var e=Jot(t).formatType;return"time"===e||!e&&function(t){return t&&("temporal"===t.type||_ot(t)&&!!t.timeUnit)}(t)}function cat(t,e){var n,r,i=e.timeUnit,o=e.type,a=e.wrapTime,c=e.undefinedIfExprNotRequired,l=i&&(null===(n=Srt(i))||void 0===n?void 0:n.unit),u=l||"temporal"===o;return Fet(t)?r=t.expr:zet(t)?r=t.signal:Qnt(t)?(u=!0,r=ort(t)):(Vb(t)||Hb(t))&&u&&(r="datetime(".concat(n9(t),")"),function(t){return!!frt[t]}(l)&&(Hb(t)&&t<1e4||Vb(t)&&isNaN(Date.parse(t)))&&(r=ort((0,V.Z)({},l,t)))),r?a&&u?"time(".concat(r,")"):r:c?void 0:n9(t)}function lat(t,e){var n=t.type;return e.map((function(e){var r=cat(e,{timeUnit:_ot(t)&&!drt(t.timeUnit)?t.timeUnit:void 0,type:n,undefinedIfExprNotRequired:!0});return void 0!==r?{signal:r}:e}))}function uat(t,e){return Met(t.bin)?fet(e)&&["ordinal","nominal"].includes(t.type):(console.warn("Only call this method for binned field defs."),!1)}function sat(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function fat(t){for(var e=1;e=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Cat(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function zat(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n3&&void 0!==arguments[3])||arguments[3];if("tooltip"in n)return{tooltip:n.tooltip};var i=t.map((function(t){var n=t.fieldPrefix,i=t.titlePrefix,o=r?" of ".concat(Hat(e)):"";return{field:n+e.field,type:e.type,title:zet(i)?{signal:"".concat(i,'"').concat(escape(o),'"')}:i+o}})),o=function(t){var e,n=[],r=kat(m9(t));try{for(r.s();!(e=r.n()).done;){var i=e.value;if(Mat(t,i)){var o,a=kat(bb(t[i]));try{for(a.s();!(o=a.n()).done;){var c=o.value;_ot(c)?n.push(c):Aot(c)&&n.push(c.condition)}}catch(l){a.e(l)}finally{a.f()}}}}catch(l){r.e(l)}finally{r.f()}return n}(n).map(Hot);return{tooltip:[].concat((0,Xm.Z)(i),(0,Xm.Z)(s9(o,r9)))}}function Hat(t){return T9(t.title,t.field)}function Wat(t,e,n,r,i){var o=n.scale,a=n.axis;return function(c){var l=c.partName,u=c.mark,s=c.positionPrefix,f=c.endPositionPrefix,h=void 0===f?void 0:f,d=c.extraEncoding,p=void 0===d?{}:d,v=Hat(n);return Vat(t,l,i,{mark:u,encoding:Nat(Nat(Nat((0,V.Z)({},e,Nat(Nat(Nat({field:"".concat(s,"_").concat(n.field),type:n.type},void 0!==v?{title:v}:{}),void 0!==o?{scale:o}:{}),void 0!==a?{axis:a}:{})),Vb(h)?(0,V.Z)({},"".concat(e,"2"),{field:"".concat(h,"_").concat(n.field)}):{}),r),p)})}}function Vat(t,e,n,r){var i=t.clip,o=t.color,a=t.opacity,c=t.type;return t[e]||void 0===t[e]&&n[e]?[Nat(Nat({},r),{},{mark:Nat(Nat(Nat(Nat(Nat(Nat({},n[e]),i?{clip:i}:{}),o?{color:o}:{}),a?{opacity:a}:{}),Tit(r.mark)?r.mark:{type:r.mark}),{},{style:"".concat(c,"-").concat(String(e))},Bb(t[e])?{}:t[e])})]:[]}function Gat(t,e,n){var r=t.encoding,i="vertical"===e?"y":"x",o=r[i],a=r["".concat(i,"2")],c=r["".concat(i,"Error")],l=r["".concat(i,"Error2")];return{continuousAxisChannelDef:Xat(o,n),continuousAxisChannelDef2:Xat(a,n),continuousAxisChannelDefError:Xat(c,n),continuousAxisChannelDefError2:Xat(l,n),continuousAxis:i}}function Xat(t,e){if(null!=t&&t.aggregate){var n=t.aggregate,r=(0,I.Z)(t,Rat);return n!==e&&$nt(function(t,e){return"Continuous axis should not have customized aggregation function ".concat(t,"; ").concat(e," already agregates the axis.")}(n,e)),r}return t}function qat(t,e){var n=t.mark,r=t.encoding,i=r.x,o=r.y;if(Tit(n)&&n.orient)return n.orient;if(Zot(i)){if(Zot(o)){var a=_ot(i)&&i.aggregate,c=_ot(o)&&o.aggregate;if(a||c!==e){if(c||a!==e){if(a===e&&c===e)throw new Error("Both x and y cannot have aggregate");return aat(o)&&!aat(i)?"horizontal":"vertical"}return"horizontal"}return"vertical"}return"horizontal"}if(Zot(o))return"vertical";throw new Error("Need a valid continuous axis for ".concat(e,"s"))}var Yat=["mark","encoding","params","projection"],$at=["color","size"],Kat=["tooltip"];function Jat(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var r=n.call(t,e||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}function Qat(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function tct(t){for(var e=1;e ").concat(G,")")}],mark:"point",encoding:tct(tct(tct((0,V.Z)({},b,tct(tct(tct({field:y.field,type:y.type},void 0!==Q?{title:Q}:{}),void 0!==K?{scale:K}:{}),g9(tt)?{}:{axis:tt})),$),E?{color:E}:{}),O?{tooltip:O}:{})})[0],nt=[].concat((0,Xm.Z)(v),(0,Xm.Z)(g),[q]);et?N={transform:nt,layer:[et,Y]}:(B=(N=Y).transform).unshift.apply(B,(0,Xm.Z)(nt));return tct(tct({},c),{},{layer:[N,{transform:m,layer:L}]})}function oct(t){return[{op:"q1",field:t,as:"lower_box_".concat(t)},{op:"q3",field:t,as:"upper_box_".concat(t)}]}var act=["mark","encoding","params","projection"];function cct(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return lct(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return lct(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function lct(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n1?{layer:g}:fct({},g[0]))}function vct(t,e){var n=t.encoding;if(function(t){return(Iot(t.x)||Iot(t.y))&&!Iot(t.x2)&&!Iot(t.y2)&&!Iot(t.xError)&&!Iot(t.xError2)&&!Iot(t.yError)&&!Iot(t.yError2)}(n))return{orient:qat(t,e),inputType:"raw"};var r=function(t){return Iot(t.x2)||Iot(t.y2)}(n),i=function(t){return Iot(t.xError)||Iot(t.xError2)||Iot(t.yError)||Iot(t.yError2)}(n),o=n.x,a=n.y;if(r){if(i)throw new Error("".concat(e," cannot be both type aggregated-upper-lower and aggregated-error"));var c=n.x2,l=n.y2;if(Iot(c)&&Iot(l))throw new Error("".concat(e," cannot have both x2 and y2"));if(Iot(c)){if(Zot(o))return{orient:"horizontal",inputType:"aggregated-upper-lower"};throw new Error("Both x and x2 have to be quantitative in ".concat(e))}if(Iot(l)){if(Zot(a))return{orient:"vertical",inputType:"aggregated-upper-lower"};throw new Error("Both y and y2 have to be quantitative in ".concat(e))}throw new Error("No ranged axis")}var u=n.xError,s=n.xError2,f=n.yError,h=n.yError2;if(Iot(s)&&!Iot(u))throw new Error("".concat(e," cannot have xError2 without xError"));if(Iot(h)&&!Iot(f))throw new Error("".concat(e," cannot have yError2 without yError"));if(Iot(u)&&Iot(f))throw new Error("".concat(e," cannot have both xError and yError with both are quantiative"));if(Iot(u)){if(Zot(o))return{orient:"horizontal",inputType:"aggregated-error"};throw new Error("All x, xError, and xError2 (if exist) have to be quantitative")}if(Iot(f)){if(Zot(a))return{orient:"vertical",inputType:"aggregated-error"};throw new Error("All y, yError, and yError2 (if exist) have to be quantitative")}throw new Error("No ranged axis")}function gct(t,e,n){var r,i=t.mark,o=t.encoding,a=t.params,c=(t.projection,(0,I.Z)(t,act)),l=Tit(i)?i:{type:i};a&&$nt(Cnt(e));var u=vct(t,e),s=u.orient,f=u.inputType,h=Gat(t,s,e),d=h.continuousAxisChannelDef,p=h.continuousAxisChannelDef2,v=h.continuousAxisChannelDefError,g=h.continuousAxisChannelDefError2,m=h.continuousAxis,y=function(t,e,n,r,i,o,a,c){var l,u=[],s=[],f=e.field,h=!1;if("raw"===o){var d,p,v,g=t.center?t.center:t.extent?"iqr"===t.extent?"median":"mean":c.errorbar.center,m=t.extent?t.extent:"mean"===g?"stderr":"iqr";if("median"===g!=("iqr"===m)&&$nt(function(t,e,n){return"".concat(t," is not usually used with ").concat(e," for ").concat(n,".")}(g,m,a)),"stderr"===m||"stdev"===m)u=[{op:m,field:f,as:"extent_".concat(f)},{op:g,field:f,as:"center_".concat(f)}],s=[{calculate:'datum["center_'.concat(f,'"] + datum["extent_').concat(f,'"]'),as:"upper_".concat(f)},{calculate:'datum["center_'.concat(f,'"] - datum["extent_').concat(f,'"]'),as:"lower_".concat(f)}],l=[{fieldPrefix:"center_",titlePrefix:C9(g)},{fieldPrefix:"upper_",titlePrefix:mct(g,m,"+")},{fieldPrefix:"lower_",titlePrefix:mct(g,m,"-")}],h=!0;else"ci"===m?(d="mean",p="ci0",v="ci1"):(d="median",p="q1",v="q3"),u=[{op:p,field:f,as:"lower_".concat(f)},{op:v,field:f,as:"upper_".concat(f)},{op:d,field:f,as:"center_".concat(f)}],l=[{fieldPrefix:"upper_",titlePrefix:Yot({field:f,aggregate:v,type:"quantitative"},c,{allowDisabling:!1})},{fieldPrefix:"lower_",titlePrefix:Yot({field:f,aggregate:p,type:"quantitative"},c,{allowDisabling:!1})},{fieldPrefix:"center_",titlePrefix:Yot({field:f,aggregate:d,type:"quantitative"},c,{allowDisabling:!1})}]}else{(t.center||t.extent)&&$nt(function(t,e){return"".concat(e?"extent ":"").concat(e&&t?"and ":"").concat(t?"center ":"").concat(e&&t?"are ":"is ","not needed when data are aggregated.")}(t.center,t.extent)),"aggregated-upper-lower"===o?(l=[],s=[{calculate:'datum["'.concat(n.field,'"]'),as:"upper_".concat(f)},{calculate:'datum["'.concat(f,'"]'),as:"lower_".concat(f)}]):"aggregated-error"===o&&(l=[{fieldPrefix:"",titlePrefix:f}],s=[{calculate:'datum["'.concat(f,'"] + datum["').concat(r.field,'"]'),as:"upper_".concat(f)}],i?s.push({calculate:'datum["'.concat(f,'"] + datum["').concat(i.field,'"]'),as:"lower_".concat(f)}):s.push({calculate:'datum["'.concat(f,'"] - datum["').concat(r.field,'"]'),as:"lower_".concat(f)}));var y,b=cct(s);try{for(b.s();!(y=b.n()).done;){var x=y.value;l.push({fieldPrefix:x.as.substring(0,6),titlePrefix:P9(P9(x.calculate,'datum["',""),'"]',"")})}}catch(w){b.e(w)}finally{b.f()}}return{postAggregateCalculates:s,errorBarSpecificAggregate:u,tooltipSummary:l,tooltipTitleWithFieldName:h}}(l,d,p,v,g,f,e,n),b=y.errorBarSpecificAggregate,x=y.postAggregateCalculates,w=y.tooltipSummary,S=y.tooltipTitleWithFieldName,k="x"===m?"x2":"y2",C="x"===m?"xError":"yError",O="x"===m?"xError2":"yError2",E=(o[m],o[k],o[C],o[O],Dat((0,I.Z)(o,[m,k,C,O].map(uct)),n)),M=E.bins,A=E.timeUnits,P=E.aggregate,_=E.groupby,D=E.encoding,T=[].concat((0,Xm.Z)(P),(0,Xm.Z)(b)),Z="raw"!==f?[]:_,F=Uat(w,d,D,S);return{transform:[].concat((0,Xm.Z)(null!==(r=c.transform)&&void 0!==r?r:[]),(0,Xm.Z)(M),(0,Xm.Z)(A),(0,Xm.Z)(0===T.length?[]:[{aggregate:T,groupby:Z}]),(0,Xm.Z)(x)),groupby:Z,continuousAxisChannelDef:d,continuousAxis:m,encodingWithoutContinuousAxis:D,ticksOrient:"vertical"===s?"horizontal":"vertical",markDef:l,outerSpec:c,tooltipEncoding:F}}function mct(t,e,n){return"".concat(C9(t)," ").concat(n," ").concat(e)}function yct(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function bct(t){for(var e=1;e window:mousemove!",encodings:["x","y"],translate:"[mousedown, window:mouseup] > window:mousemove!",zoom:"wheel!",mark:{fill:"#333",fillOpacity:.125,stroke:"white"},resolve:"global",clear:"dblclick"}};function jct(t){return"legend"===t||!(null==t||!t.legend)}function Ict(t){return jct(t)&&Yy(t)}function Rct(t){return!(null==t||!t.select)}var Lct=["expr","bind"];function Nct(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Bct(t){for(var e=1;e=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Uct(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function qct(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function elt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0&&void 0!==arguments[0]?arguments[0]:{},e=t.color,n=t.font,r=t.fontSize,i=t.selection,o=(0,I.Z)(t,Qct),a=Ky({},J7(llt),n?function(t){return{text:{font:t},style:{"guide-label":{font:t},"guide-title":{font:t},"group-title":{font:t},"group-subtitle":{font:t}}}}(n):{},e?function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{signals:[{name:"color",value:Yy(t)?rlt(rlt({},flt),t):flt}],mark:{color:{signal:"color.blue"}},rule:{color:{signal:"color.gray0"}},text:{color:{signal:"color.gray0"}},style:{"guide-label":{fill:{signal:"color.gray0"}},"guide-title":{fill:{signal:"color.gray0"}},"group-title":{fill:{signal:"color.gray0"}},"group-subtitle":{fill:{signal:"color.gray0"}},cell:{stroke:{signal:"color.gray8"}}},axis:{domainColor:{signal:"color.gray13"},gridColor:{signal:"color.gray8"},tickColor:{signal:"color.gray13"}},range:{category:[{signal:"color.blue"},{signal:"color.orange"},{signal:"color.red"},{signal:"color.teal"},{signal:"color.green"},{signal:"color.yellow"},{signal:"color.purple"},{signal:"color.pink"},{signal:"color.brown"},{signal:"color.grey8"}]}}}(e):{},r?function(t){return{signals:[{name:"fontSize",value:Yy(t)?rlt(rlt({},slt),t):slt}],text:{fontSize:{signal:"fontSize.text"}},style:{"guide-label":{fontSize:{signal:"fontSize.guideLabel"}},"guide-title":{fontSize:{signal:"fontSize.guideTitle"}},"group-title":{fontSize:{signal:"fontSize.groupTitle"}},"group-subtitle":{fontSize:{signal:"fontSize.groupSubtitle"}}}}}(r):{},o||{});i&&Jy(a,"selection",i,!0);for(var c=e9(a,dlt),l=0,u=["background","lineBreak","padding"];l=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Elt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Flt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n1?e:e.type}function zlt(t){for(var e=0,n=["line","area","rule","trail"];e1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;return"transparent"===t.point?{opacity:0}:t.point?Yy(t.point)?t.point:{}:void 0!==t.point?null:e.point||n.shape?Yy(e.point)?e.point:{}:void 0}function Hlt(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return t.line?!0===t.line?{}:t.line:void 0!==t.line?null:e.line?!0===e.line?{}:e.line:void 0}var Wlt=function(){function t(){(0,Rm.Z)(this,t),this.name="path-overlay"}return(0,Lm.Z)(t,[{key:"hasMatchingType",value:function(t,e){if(xat(t)){var n=t.mark,r=t.encoding,i=Tit(n)?n:{type:n};switch(i.type){case"line":case"rule":case"trail":return!!Ult(i,e[i.type],r);case"area":return!!Ult(i,e[i.type],r)||!!Hlt(i,e[i.type])}}return!1}},{key:"run",value:function(t,e,n){var r=e.config,i=t.params,o=t.projection,a=t.mark,c=t.name,l=t.encoding,u=(0,I.Z)(t,Rlt),s=Zat(l,r),f=Tit(a)?a:{type:a},h=Ult(f,r[f.type],s),d="area"===f.type&&Hlt(f,r[f.type]),p=[Nlt(Nlt({name:c},i?{params:i}:{}),{},{mark:Blt(Nlt(Nlt({},"area"===f.type&&void 0===f.opacity&&void 0===f.fillOpacity?{opacity:.7}:{}),f)),encoding:e9(s,["shape"])})],v=Tlt(jlt(f,s,r),s),g=s;if(v){var m=v.fieldChannel,y=v.offset;g=Nlt(Nlt({},s),{},(0,V.Z)({},m,Nlt(Nlt({},s[m]),y?{stack:y}:{})))}return g=e9(g,["y2","x2"]),d&&p.push(Nlt(Nlt({},o?{projection:o}:{}),{},{mark:Nlt(Nlt({type:"line"},t9(f,["clip","interpolate","tension","tooltip"])),d),encoding:g})),h&&p.push(Nlt(Nlt({},o?{projection:o}:{}),{},{mark:Nlt(Nlt({type:"point",opacity:1,filled:!0},t9(f,["clip","tooltip"])),h),encoding:g})),n(Nlt(Nlt({},u),{},{layer:p}),Nlt(Nlt({},e),{},{config:zlt(r)}))}}]),t}(),Vlt=["condition"];function Glt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Xlt(t){for(var e=1;e=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function iut(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function vut(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n1?"are":"is"," also specified.")));for(var o={},a={},c=0,l=[U9,H9];c=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Qut(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function ust(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);nn[e-1])})))&&a.push(l)}}catch(h){s.e(h)}finally{s.f()}}else a.push(l)}}catch(h){c.e(h)}finally{c.f()}return a.length&&(t.params=a),t}}]),n}(Clt),hst=function(){var t=pst[dst],e=fst.prototype[t];fst.prototype[t]=function(t,n){return e.call(this,t,function(t,e){var n;return t.name?cst(cst({},e),{},{path:(null!==(n=e.path)&&void 0!==n?n:[]).concat(t.name)}):e}(t,n))}},dst=0,pst=["mapFacet","mapRepeat","mapHConcat","mapVConcat","mapLayer"];dst1&&void 0!==arguments[1]?arguments[1]:{},n={config:e};return xst.map(yst.map(bst.map(t,n),n),n)}(t,e),r=function(t,e,n){var r=e.width,i=e.height,o=xat(t)||xlt(t),a={};o?"container"==r&&"container"==i?(a.type="fit",a.contains="padding"):"container"==r?(a.type="fit-x",a.contains="padding"):"container"==i&&(a.type="fit-y",a.contains="padding"):("container"==r&&($nt(ynt("width")),r=void 0),"container"==i&&($nt(ynt("height")),i=void 0));var c=gst(gst(gst({type:"pad"},a),n?wst(n.autosize):{}),wst(t.autosize));"fit"!==c.type||o||($nt(mnt),c.type="pad");"container"==r&&"fit"!=c.type&&"fit-x"!=c.type&&$nt(bnt("width"));"container"==i&&"fit"!=c.type&&"fit-y"!=c.type&&$nt(bnt("height"));if(K7(c,{type:"pad"}))return;return c}(n,{width:t.width,height:t.height,autosize:t.autosize},e);return gst(gst({},n),r?{autosize:r}:{})}var yst=new but,bst=new est,xst=new fst;function wst(t){return Vb(t)?{type:t}:null!=t?t:{}}function Sst(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return kst(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return kst(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function kst(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Mst(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};(0,Rm.Z)(this,t),this.explicit=e,this.implicit=n}return(0,Lm.Z)(t,[{key:"clone",value:function(){return new t(J7(this.explicit),J7(this.implicit))}},{key:"combine",value:function(){return Pst(Pst({},this.explicit),this.implicit)}},{key:"get",value:function(t){return T9(this.explicit[t],this.implicit[t])}},{key:"getWithExplicit",value:function(t){return void 0!==this.explicit[t]?{explicit:!0,value:this.explicit[t]}:void 0!==this.implicit[t]?{explicit:!1,value:this.implicit[t]}:{explicit:!1,value:void 0}}},{key:"setWithExplicit",value:function(t,e){var n=e.value,r=e.explicit;void 0!==n&&this.set(t,n,r)}},{key:"set",value:function(t,e,n){return delete this[n?"implicit":"explicit"][t],this[n?"explicit":"implicit"][t]=e,this}},{key:"copyKeyFromSplit",value:function(t,e){var n=e.explicit,r=e.implicit;void 0!==n[t]?this.set(t,n[t],!0):void 0!==r[t]&&this.set(t,r[t],!1)}},{key:"copyKeyFromObject",value:function(t,e){void 0!==e[t]&&this.set(t,e[t],!0)}},{key:"copyAll",value:function(t){var e,n=Est(m9(t.combine()));try{for(n.s();!(e=n.n()).done;){var r=e.value,i=t.getWithExplicit(r);this.setWithExplicit(r,i)}}catch(o){n.e(o)}finally{n.f()}}}]),t}();function Dst(t){return{explicit:!0,value:t}}function Tst(t){return{explicit:!1,value:t}}function Zst(t){return function(e,n,r,i){var o=t(e.value,n.value);return o>0?e:o<0?n:Fst(e,n,r,i)}}function Fst(t,e,n,r){return t.explicit&&e.explicit&&$nt(function(t,e,n,r){return"Conflicting ".concat(e.toString(),' property "').concat(t.toString(),'" (').concat(n9(n)," and ").concat(n9(r),"). Using ").concat(n9(n),".")}(n,r,t.value,e.value)),t}function jst(t,e,n,r){var i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:Fst;return void 0===t||void 0===t.value?e:t.explicit&&!e.explicit?t:e.explicit&&!t.explicit?e:K7(t.value,e.value)?t:i(t,e,n,r)}function Ist(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(F2t){return!1}}();return function(){var n,r=(0,Um.Z)(t);if(e){var i=(0,Um.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,zm.Z)(this,n)}}var Rst,Lst=function(t){(0,Bm.Z)(n,t);var e=Ist(n);function n(){var t,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return(0,Rm.Z)(this,n),(t=e.call(this,r,i)).explicit=r,t.implicit=i,t.parseNothing=o,t}return(0,Lm.Z)(n,[{key:"clone",value:function(){var t=qZ((0,Um.Z)(n.prototype),"clone",this).call(this);return t.parseNothing=this.parseNothing,t}}]),n}(_st);function Nst(t){return"url"in t}function Bst(t){return"values"in t}function zst(t){return"name"in t&&!Nst(t)&&!Bst(t)&&!Ust(t)}function Ust(t){return t&&(Hst(t)||Wst(t)||Vst(t))}function Hst(t){return"sequence"in t}function Wst(t){return"sphere"in t}function Vst(t){return"graticule"in t}!function(t){t[t.Raw=0]="Raw",t[t.Main=1]="Main",t[t.Row=2]="Row",t[t.Column=3]="Column",t[t.Lookup=4]="Lookup"}(Rst||(Rst={}));var Gst=["signals","hasLegend","index"];function Xst(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return qst(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return qst(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function qst(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Iy;if(qy(t)){var o=t.map((function(t){return $st(t,r,i)}));return r?"[".concat(o.join(", "),"]"):o}return Qnt(t)?i(r?ort(t):(n=irt(e=t,!0),e.utc?+new Date(Date.UTC.apply(Date,(0,Xm.Z)(n))):+$Z(Date,(0,Xm.Z)(n)))):r?i(n9(t)):t}function Kst(t,e){var n,r,i=Xst(y9(null!==(n=t.component.selection)&&void 0!==n?n:{}));try{for(i.s();!(r=i.n()).done;){var o,a=r.value,c=Xst(sdt);try{for(c.s();!(o=c.n()).done;){var l=o.value;l.defined(a)&&l.marks&&(e=l.marks(t,a,e))}}catch(u){c.e(u)}finally{c.f()}}}catch(u){i.e(u)}finally{i.f()}return e}function Jst(t){return t.map((function(t){return t.on&&!t.on.length&&delete t.on,t}))}function Qst(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(F2t){return!1}}();return function(){var n,r=(0,Um.Z)(t);if(e){var i=(0,Um.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,zm.Z)(this,n)}}function tft(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return eft(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return eft(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function eft(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function cft(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function mft(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0||e.project.hasSelectionId?n:n.concat({name:r,value:e.project.items.map(Yst)})}},wft=xft;function Sft(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return kft(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return kft(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function kft(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=0)i.update="{".concat(r.map((function(t){return"".concat(tx(A9(t.field)),": ").concat(t.signals.data)})).join(", "),"}");else{var a,c=Sft(r);try{for(c.s();!(a=c.n()).done;){var l=a.value,u="".concat(tx(A9(l.field)),": ").concat(l.signals.data);o.includes(u)||(o="".concat(o.substring(0,o.length-1),", ").concat(u,"}"))}}catch(s){c.e(s)}finally{c.f()}i.update=o}return n.concat(r.map((function(t){return{name:t.signals.data}})))},signals:function(t,e,n){if(t.parent&&!Mft(t)){var r,i=Sft(e.scales);try{var o=function(){var t=r.value,e=n.filter((function(e){return e.name===t.signals.data}))[0];e.push="outer",delete e.value,delete e.update};for(i.s();!(r=i.n()).done;)o()}catch(a){i.e(a)}finally{i.f()}}return n}},Oft=Cft;function Eft(t,e){var n=tx(t.scaleName(e));return"domain(".concat(n,")")}function Mft(t){var e;return t.parent&&syt(t.parent)&&(null!==(e=!t.parent.parent)&&void 0!==e?e:Mft(t.parent.parent))}var Aft=["fill","fillOpacity","cursor"];function Pft(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return _ft(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _ft(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function _ft(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n1&&void 0!==arguments[1]?arguments[1]:"text",n=t.encoding[e];return Hft(t,n,e,(function(e){return Vft(e,t.config)}))}function Vft(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"datum";if(t){if(Lot(t))return rnt(t.value);if(Iot(t)){var r=Jot(t);return Jit({fieldOrDatumDef:t,format:r.format,formatType:r.formatType,expr:n,config:e})}}}n(27207);function Gft(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Xft(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:{},n=t.encoding,r=t.markDef,i=t.config,o=t.stack,a=n.tooltip;if(qy(a))return{tooltip:$ft({tooltip:a},o,i,e)};var c=e.reactiveGeom?"datum.datum":"datum";return Hft(t,a,"tooltip",(function(t){var a=Vft(t,i,c);if(a)return a;if(null!==t){var l=lnt("tooltip",r,i);return!0===l&&(l={content:"encoding"}),Vb(l)?{value:l}:Yy(l)?zet(l)?l:"encoding"===l.content?$ft(n,o,i,e):{signal:c}:void 0}}))}function Yft(t,e,n){var r=(arguments.length>3&&void 0!==arguments[3]?arguments[3]:{}).reactiveGeom,i=Xft(Xft({},n),n.tooltipFormat),o={},a=r?"datum.datum":"datum",c=[];function l(n,r){var l,u,s=Utt(r),f=Rot(n)?n:Xft(Xft({},n),{},{type:t[s].type}),h=bb(f.title||Kot(f,i)).join(", ").replaceAll(/"/g,'\\"');if(tet(r)){var d="x"===r?"x2":"y2",p=Qot(t[d]);if(Aet(f.bin)&&p){var v=Wot(f,{expr:a}),g=Wot(p,{expr:a}),m=Jot(f);u=aot(v,g,m.format,m.formatType,i),o[d]=!0}}if((tet(r)||r===Q9||r===K9)&&e&&e.fieldChannel===r&&"normalize"===e.offset){var y=Jot(f);u=Jit({fieldOrDatumDef:f,format:y.format,formatType:y.formatType,expr:a,config:i,normalizeStack:!0}).signal}null!==(l=u)&&void 0!==l||(u=Vft(f,i,a).signal),c.push({channel:r,key:h,value:u})}Fat(t,(function(t,e){_ot(t)?l(t,e):Aot(t)&&l(t.condition,e)}));for(var u={},s=0,f=c;s3&&void 0!==arguments[3]?arguments[3]:{}).reactiveGeom}),i=b9(r).map((function(t){var e=(0,G.Z)(t,2),n=e[0],r=e[1];return'"'.concat(n,'": ').concat(r)}));return i.length>0?{signal:"{".concat(i.join(", "),"}")}:void 0}function Kft(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Jft(t){for(var e=1;e0?"; ":"").concat(r,': " + (').concat(i,")")})).join(" + ")}}}(t))}function tht(t,e){var n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=e.markDef,o=e.encoding,a=e.config,c=r.vgChannel,l=r.defaultRef,u=r.defaultValue;void 0===l&&(null!==(n=u)&&void 0!==n||(u=lnt(t,i,a,{vgChannel:c,ignoreVgConfig:!0})),void 0!==u&&(l=rnt(u)));var s=o[t];return Hft(e,s,null!=c?c:t,(function(n){return Xit({channel:t,channelDef:n,markDef:i,config:a,scaleName:e.scaleName(t),scale:e.getScaleComponent(t),stack:null,defaultRef:l})}))}function eht(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function nht(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:{filled:void 0},a=t.markDef,c=t.encoding,l=t.config,u=a.type,s=null!==(e=o.filled)&&void 0!==e?e:lnt("filled",a,l),f=o9(["bar","point","circle","square","geoshape"],u)?"transparent":void 0,h=null!==(n=null!==(r=lnt(!0===s?"color":void 0,a,l,{vgChannel:"fill"}))&&void 0!==r?r:l.mark[!0===s&&"color"])&&void 0!==n?n:f,d=null!==(i=lnt(!1===s?"color":void 0,a,l,{vgChannel:"stroke"}))&&void 0!==i?i:l.mark[!1===s&&"color"],p=s?"fill":"stroke",v=nht(nht({},h?{fill:rnt(h)}:{}),d?{stroke:rnt(d)}:{});return a.color&&(s?a.fill:a.stroke)&&$nt(Dnt("property",{fill:"fill"in a,stroke:"stroke"in a})),nht(nht(nht(nht({},v),tht("color",t,{vgChannel:p,defaultValue:s?h:d})),tht("fill",t,{defaultValue:c.fill?h:void 0})),tht("stroke",t,{defaultValue:c.stroke?d:void 0}))}function iht(t){var e=t.channel,n=t.markDef,r=t.encoding,i=void 0===r?{}:r,o=t.model,a=t.bandPosition,c="".concat(e,"Offset"),l=n[c],u=i[c];if(("xOffset"===c||"yOffset"===c)&&u)return{offsetType:"encoding",offset:Xit({channel:c,channelDef:u,markDef:n,config:null==o?void 0:o.config,scaleName:o.scaleName(c),scale:o.getScaleComponent(c),stack:null,defaultRef:rnt(l),bandPosition:a})};var s=n[c];return s?{offsetType:"visual",offset:s}:{}}function oht(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function aht(t){for(var e=1;e3&&void 0!==arguments[3]?arguments[3]:"middle";if("radius"===t||"theta"===t)return Htt(t);var i,o="x"===t?"align":"baseline",a=lnt(o,e,n);return zet(a)?($nt(function(t){return"The ".concat(t," for range marks cannot be an expression")}(o)),i=void 0):i=a,"x"===t?uht[i||("top"===r?"left":"center")]:sht[i||r]}function hht(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function dht(t){for(var e=1;e0){var a=r?"||":"&&";return o.map((function(t){return Wit(t,r)})).join(" ".concat(a," "))}return}(t,{invalid:!0,channels:set});if(o)return(0,V.Z)({},e,[{test:o,value:null}].concat((0,Xm.Z)(bb(n))))}return n?(0,V.Z)({},e,n):{}}function Mht(t){var e=t.config;if(lnt("invalid",t.markDef,e)){var n=function(t,e){var n=e.invalid,r=void 0!==n&&n,i=e.channels.reduce((function(e,n){var r=t.getScaleComponent(n);if(r){var i,o=r.get("type"),a=t.vgField(n,{expr:"datum",binSuffix:null!==(i=t.stack)&&void 0!==i&&i.impute?"mid":void 0});a&&oit(o)&&(e[a]=!0)}return e}),{}),o=m9(i);if(o.length>0){var a=r?"||":"&&";return o.map((function(t){return Wit(t,r)})).join(" ".concat(a," "))}return}(t,{channels:Qtt});if(n)return{defined:{signal:n}}}return{}}function Aht(t,e){if(void 0!==e)return(0,V.Z)({},t,rnt(e))}function Pht(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function _ht(t){for(var e=1;e=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Tht(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=0&&(u=!0)})),u||n.splice(l+1,0,c),n}},jht=Fht;function Iht(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Rht(t){for(var e=1;e=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Hht(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Ght(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0?o.on.push({events:c.map((function(t){return{signal:t}})),update:u}):c.length>0&&(o.update=u,delete o.value,delete o.on);var s=n.find((function(t){return t.name===r+Bht})),f=Ict(e.bind)&&e.bind.legend;return s&&(e.events?s.on.push(qht(qht({},s.on[0]),{},{events:f})):s.on[0].events=f),n}};var $ht="_translate_anchor",Kht="_translate_delta",Jht={defined:function(t){return"interval"===t.type&&t.translate},signals:function(t,e,n){var r=e.name,i=Oft.defined(e),o=r+$ht,a=e.project.hasChannel,c=a.x,l=a.y,u=t3(e.translate,"scope");return i||(u=u.map((function(t){return t.between[0].markname=r+Zft,t}))),n.push({name:o,value:{},on:[{events:u.map((function(t){return t.between[0]})),update:"{x: x(unit), y: y(unit)"+(void 0!==c?", extent_x: ".concat(i?Eft(t,V9):"slice(".concat(c.signals.visual,")")):"")+(void 0!==l?", extent_y: ".concat(i?Eft(t,G9):"slice(".concat(l.signals.visual,")")):"")+"}"}]},{name:r+Kht,value:{},on:[{events:u,update:"{x: ".concat(o,".x - x(unit), y: ").concat(o,".y - y(unit)}")}]}),void 0!==c&&Qht(t,e,c,"width",n),void 0!==l&&Qht(t,e,l,"height",n),n}};function Qht(t,e,n,r,i){var o,a,c=e.name,l=c+$ht,u=c+Kht,s=n.channel,f=Oft.defined(e),h=i.filter((function(t){return t.name===n.signals[f?"data":"visual"]}))[0],d=t.getSizeSignalRef(r).signal,p=t.getScaleComponent(s),v=p&&p.get("type"),g=p&&p.get("reverse"),m=f?s===V9?g?"":"-":g?"-":"":"",y="".concat(l,".extent_").concat(s),b="".concat(m).concat(u,".").concat(s," / ").concat(f?"".concat(d):"span(".concat(y,")")),x=f&&p?"log"===v?"panLog":"symlog"===v?"panSymlog":"pow"===v?"panPow":"panLinear":"panLinear",w=f?"pow"===v?", ".concat(null!==(o=p.get("exponent"))&&void 0!==o?o:1):"symlog"===v?", ".concat(null!==(a=p.get("constant"))&&void 0!==a?a:1):"":"",S="".concat(x,"(").concat(y,", ").concat(b).concat(w,")");h.on.push({events:{signal:u},update:f?S:"clampRange(".concat(S,", 0, ").concat(d,")")})}var tdt="_zoom_anchor",edt="_zoom_delta",ndt={defined:function(t){return"interval"===t.type&&t.zoom},signals:function(t,e,n){var r=e.name,i=Oft.defined(e),o=r+edt,a=e.project.hasChannel,c=a.x,l=a.y,u=tx(t.scaleName(V9)),s=tx(t.scaleName(G9)),f=t3(e.zoom,"scope");return i||(f=f.map((function(t){return t.markname=r+Zft,t}))),n.push({name:r+tdt,on:[{events:f,update:i?"{"+[u?"x: invert(".concat(u,", x(unit))"):"",s?"y: invert(".concat(s,", y(unit))"):""].filter((function(t){return t})).join(", ")+"}":"{x: x(unit), y: y(unit)}"}]},{name:o,on:[{events:f,force:!0,update:"pow(1.001, event.deltaY * pow(16, event.deltaMode))"}]}),void 0!==c&&rdt(t,e,c,"width",n),void 0!==l&&rdt(t,e,l,"height",n),n}};function rdt(t,e,n,r,i){var o,a,c=e.name,l=n.channel,u=Oft.defined(e),s=i.filter((function(t){return t.name===n.signals[u?"data":"visual"]}))[0],f=t.getSizeSignalRef(r).signal,h=t.getScaleComponent(l),d=h&&h.get("type"),p=u?Eft(t,l):s.name,v=c+edt,g="".concat(c).concat(tdt,".").concat(l),m=u&&h?"log"===d?"zoomLog":"symlog"===d?"zoomSymlog":"pow"===d?"zoomPow":"zoomLinear":"zoomLinear",y=u?"pow"===d?", ".concat(null!==(o=h.get("exponent"))&&void 0!==o?o:1):"symlog"===d?", ".concat(null!==(a=h.get("constant"))&&void 0!==a?a:1):"":"",b="".concat(m,"(").concat(p,", ").concat(g,", ").concat(v).concat(y,")");s.on.push({events:{signal:v},update:u?b:"clampRange(".concat(b,", 0, ").concat(f,")")})}function idt(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return odt(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return odt(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function odt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n1&&void 0!==arguments[1]?arguments[1]:{escape:!0}).escape?tx(t.name):t.name,n=function(t){for(var e=t.parent;e&&!lyt(e);)e=e.parent;return e}(t);if(n){var r,i=n.facet,o=idt(Ztt);try{for(o.s();!(r=o.n()).done;){var a=r.value;i[a]&&(e+=" + '__facet_".concat(a,"_' + (facet[").concat(tx(n.vgField(a)),"])"))}}catch(c){o.e(c)}finally{o.f()}}return e}function hdt(t){var e;return y9(null!==(e=t.component.selection)&&void 0!==e?e:{}).reduce((function(t,e){return t||e.project.hasSelectionId}),!1)}function ddt(t,e){!Vb(e.select)&&e.select.on||delete t.events,!Vb(e.select)&&e.select.clear||delete t.clear,!Vb(e.select)&&e.select.toggle||delete t.toggle}function pdt(t){var e=[];return"Identifier"===t.type?[t.name]:"Literal"===t.type?[t.value]:("MemberExpression"===t.type&&(e.push.apply(e,(0,Xm.Z)(pdt(t.object))),e.push.apply(e,(0,Xm.Z)(pdt(t.property)))),e)}function vdt(t){return"MemberExpression"===t.object.type?vdt(t.object):"datum"===t.object.name}function gdt(t){var e=r0(t),n=new Set;return e.visit((function(t){"MemberExpression"===t.type&&vdt(t)&&n.add(pdt(t).slice(1).join("."))})),n}function mdt(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(F2t){return!1}}();return function(){var n,r=(0,Um.Z)(t);if(e){var i=(0,Um.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,zm.Z)(this,n)}}var ydt=function(t){(0,Bm.Z)(n,t);var e=mdt(n);function n(t,r,i){var o;return(0,Rm.Z)(this,n),(o=e.call(this,t)).model=r,o.filter=i,o.expr=Odt(o.model,o.filter,(0,Nm.Z)(o)),o._dependentFields=gdt(o.expr),o}return(0,Lm.Z)(n,[{key:"clone",value:function(){return new n(null,this.model,J7(this.filter))}},{key:"dependentFields",value:function(){return this._dependentFields}},{key:"producedFields",value:function(){return new Set}},{key:"assemble",value:function(){return{type:"filter",expr:this.expr}}},{key:"hash",value:function(){return"Filter ".concat(this.expr)}}]),n}(nft);function bdt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function xdt(t){for(var e=1;e=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Sdt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n3&&void 0!==arguments[3]?arguments[3]:"datum",o=Vb(e)?e:e.param,a=w9(o),c=tx(a+adt);try{r=t.getSelectionComponent(a,o)}catch(F2t){return"!!".concat(a)}if(r.project.timeUnit){var l=null!=n?n:t.component.data.raw,u=r.project.timeUnit.clone();l.parent?u.insertAsParentOf(l):l.parent=u}var s=r.project.hasSelectionId?"vlSelectionIdTest(":"vlSelectionTest(",f="global"===r.resolve?")":", ".concat(tx(r.resolve),")"),h="".concat(s).concat(c,", ").concat(i).concat(f),d="length(data(".concat(c,"))");return!1===e.empty?"".concat(d," && ").concat(h):"!".concat(d," || ").concat(h)}function Cdt(t,e,n){var r,i=w9(e),o=n.encoding,a=n.field;try{r=t.getSelectionComponent(i,e)}catch(F2t){return i}if(o||a){if(o&&!a){var c=r.project.items.filter((function(t){return t.channel===o}));!c.length||c.length>1?(a=r.project.items[0].field,$nt((c.length?"Multiple ":"No ")+"matching ".concat(tx(o)," encoding found for selection ").concat(tx(n.param),". ")+'Using "field": '.concat(tx(a),"."))):a=c[0].field}}else a=r.project.items[0].field,r.project.items.length>1&&$nt('A "field" or "encoding" must be specified when using a selection as a scale domain. '+'Using "field": '.concat(tx(a),"."));return"".concat(r.name,"[").concat(tx(A9(a)),"]")}function Odt(t,e,n){return S9(e,(function(e){return Vb(e)?e:function(t){return null==t?void 0:t.param}(e)?kdt(t,e,n):Rrt(e)}))}var Edt=["disable","orient","scale","labelExpr","title","zindex"],Mdt=["condition"],Adt=["test"],Pdt=["test"];function _dt(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return Ddt(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Ddt(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Ddt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n3&&void 0!==arguments[3]?arguments[3]:{header:!1},i=t.combine(),o=i.disable,a=i.orient,c=i.scale,l=i.labelExpr,u=i.title,s=i.zindex,f=(0,I.Z)(i,Edt);if(!o){for(var h in f){var d=vat[h],p=f[h];if(d&&d!==e&&"both"!==d)delete f[h];else if(dat(p)){var v=p.condition,g=(0,I.Z)(p,Mdt),m=bb(v),y=hat[h];if(y){var b=y.vgProp,x=y.part,w=[].concat((0,Xm.Z)(m.map((function(t){var e=t.test,n=(0,I.Z)(t,Adt);return Zdt({test:Odt(null,e)},n)}))),[g]);Fdt(f,x,b,w),delete f[h]}else if(null===y){var S={signal:m.map((function(t){var e=t.test,n=(0,I.Z)(t,Pdt);return"".concat(Odt(null,e)," ? ").concat(ont(n)," : ")})).join("")+ont(g)};f[h]=S}}else if(zet(p)){var k=hat[h];if(k){var C=k.vgProp;Fdt(f,k.part,C,p),delete f[h]}}o9(["labelAlign","labelBaseline"],h)&&null===f[h]&&delete f[h]}if("grid"===e){if(!f.grid)return;if(f.encode){var O=f.encode.grid;f.encode=Zdt({},O?{grid:O}:{}),g9(f.encode)&&delete f.encode}return Zdt(Zdt({scale:c,orient:a},f),{},{domain:!1,labels:!1,aria:!1,maxExtent:0,minExtent:0,ticks:!1,zindex:T9(s,0)})}if(r.header||!t.mainExtracted){if(void 0!==l){var E,M=l;null!==(E=f.encode)&&void 0!==E&&null!==(E=E.labels)&&void 0!==E&&E.update&&zet(f.encode.labels.update.text)&&(M=P9(l,"datum.label",f.encode.labels.update.text.signal)),Fdt(f,"labels","text",{signal:M})}if(null===f.labelAlign&&delete f.labelAlign,f.encode){var A,P=_dt(pat);try{for(P.s();!(A=P.n()).done;){var _=A.value;t.hasAxisPart(_)||delete f.encode[_]}}catch(T){P.e(T)}finally{P.f()}g9(f.encode)&&delete f.encode}var D=function(t,e){if(t)return qy(t)&&!Bet(t)?t.map((function(t){return Kot(t,e)})).join(", "):t}(u,n);return Zdt(Zdt(Zdt(Zdt({scale:c,orient:a,grid:!1},D?{title:D}:{}),f),!1===n.aria?{aria:!1}:{}),{},{zindex:T9(s,0)})}}}function Idt(t){var e,n=t.component.axes,r=[],i=_dt(Qtt);try{for(i.s();!(e=i.n()).done;){var o=e.value;if(n[o]){var a,c=_dt(n[o]);try{for(c.s();!(a=c.n()).done;){var l=a.value;if(!l.get("disable")&&!l.get("gridScale")){var u="x"===o?"height":"width",s=t.getSizeSignalRef(u).signal;u!==s&&r.push({name:u,update:s})}}}catch(f){c.e(f)}finally{c.f()}}}}catch(f){i.e(f)}finally{i.f()}return r}function Rdt(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return Ldt(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Ldt(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Ldt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n3&&void 0!==arguments[3]?arguments[3]:{},i=fnt(t,n,e);if(void 0!==i)return{configFrom:"style",configValue:i};for(var o=0,a=["vlOnlyAxisConfig","vgAxisConfig","axisConfigStyle"];o=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Jdt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function opt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n2&&void 0!==arguments[2]?arguments[2]:"middle"){case"start":return{align:"left"};case"end":return{align:"right"}}var n=Vdt(e,"row"===t?"left":"top","row"===t?"y":"x");return n?{align:n}:{}}function spt(t,e){var n=Wdt(t,"row"===e?"left":"top","row"===e?"y":"x",!0);return n?{baseline:n}:{}}function fpt(t,e){var n,r=t.component.layoutHeaders[e],i=[],o=ipt(rpt);try{for(o.s();!(n=o.n()).done;){var a=n.value;if(r[a]){var c,l=ipt(r[a]);try{for(l.s();!(c=l.n()).done;){var u=ppt(t,e,a,r,c.value);null!=u&&i.push(u)}}catch(s){l.e(s)}finally{l.f()}}}}catch(s){o.e(s)}finally{o.f()}return i}function hpt(t,e){var n,r=t.sort;return fot(r)?{field:Wot(r,{expr:"datum"}),order:null!==(n=r.order)&&void 0!==n?n:"ascending"}:qy(r)?{field:$dt(t,e,{expr:"datum"}),order:"ascending"}:{field:Wot(t,{expr:"datum"}),order:null!=r?r:"ascending"}}function dpt(t,e,n){var r=ept(["format","formatType","labelAngle","labelAnchor","labelOrient","labelExpr"],t.header,n,e),i=r.format,o=r.formatType,a=r.labelAngle,c=r.labelAnchor,l=r.labelOrient,u=r.labelExpr,s=Jit({fieldOrDatumDef:t,format:i,formatType:o,expr:"parent",config:n}).signal,f=Qdt(e,l);return cpt(cpt(cpt(cpt({text:{signal:u?P9(P9(u,"datum.label",s),"datum.value",Wot(t,{expr:"parent"})):s}},"row"===e?{orient:"left"}:{}),{},{style:"guide-label",frame:"group"},spt(a,f)),upt(f,a,c)),mpt(n,t,e,Pct,Mct))}function ppt(t,e,n,r,i){if(i){var o=null,a=r.facetFieldDef,c=t.config?t.config:void 0;if(a&&i.labels){var l=ept(["labelOrient"],a.header,c,e).labelOrient;("row"===e&&!o9(["top","bottom"],l)||"column"===e&&!o9(["left","right"],l))&&(o=dpt(a,e,c))}var u=lyt(t)&&!dot(t.facet),s=i.axes,f=(null==s?void 0:s.length)>0;if(o||f){var h="row"===e?"height":"width";return cpt(cpt(cpt(cpt(cpt({name:t.getName("".concat(e,"_").concat(n)),type:"group",role:"".concat(e,"-").concat(n)},r.facetFieldDef?{from:{data:t.getName("".concat(e,"_domain"))},sort:hpt(a,e)}:{}),f&&u?{from:{data:t.getName("facet_domain_".concat(e))}}:{}),o?{title:o}:{}),i.sizeSignal?{encode:{update:(0,V.Z)({},h,i.sizeSignal)}}:{}),f?{axes:s}:{})}}return null}var vpt={column:{start:0,end:1},row:{start:1,end:0}};function gpt(t,e){return vpt[e][t]}function mpt(t,e,n,r,i){var o,a={},c=ipt(r);try{for(c.s();!(o=c.n()).done;){var l=o.value;if(i[l]){var u=tpt(l,null==e?void 0:e.header,t,n);void 0!==u&&(a[i[l]]=u)}}}catch(s){c.e(s)}finally{c.f()}return a}function ypt(t){return[].concat((0,Xm.Z)(bpt(t,"width")),(0,Xm.Z)(bpt(t,"height")),(0,Xm.Z)(bpt(t,"childWidth")),(0,Xm.Z)(bpt(t,"childHeight")))}function bpt(t,e){var n="width"===e?"x":"y",r=t.component.layoutSize.get(e);if(!r||"merged"===r)return[];var i=t.getSizeSignalRef(e).signal;if("step"===r){var o=t.getScaleComponent(n);if(o){var a=o.get("type"),c=o.get("range");if(iit(a)&&Uet(c)){var l=t.scaleName(n);if(lyt(t.parent))if("independent"===t.parent.component.resolve.scale[n])return[xpt(l,c)];return[xpt(l,c),{name:i,update:wpt(l,o,"domain('".concat(l,"').length"))}]}}throw new Error("layout size is step although width/height is not step.")}if("container"==r){var u=i.endsWith("width"),s=u?"containerSize()[0]":"containerSize()[1]",f=ilt(t.config.view,u?"width":"height"),h="isFinite(".concat(s,") ? ").concat(s," : ").concat(f);return[{name:i,init:h,on:[{update:h,events:"window:resize"}]}]}return[{name:i,value:r}]}function xpt(t,e){var n="".concat(t,"_step");return zet(e.step)?{name:n,update:e.step.signal}:{name:n,value:e.step}}function wpt(t,e,n){var r=e.get("type"),i=e.get("padding"),o=T9(e.get("paddingOuter"),i),a=e.get("paddingInner");return a="band"===r?void 0!==a?a:i:1,"bandspace(".concat(n,", ").concat(ant(a),", ").concat(ant(o),") * ").concat(t,"_step")}function Spt(t){return"childWidth"===t?"width":"childHeight"===t?"height":t}function kpt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Cpt(t){for(var e=1;e= 0))")})).join(" || ")}}var zpt={direction:function(t){return t.direction},format:function(t){var e=t.fieldOrDatumDef,n=t.legend,r=t.config,i=n.format,o=n.formatType;return eot(e,e.type,i,o,r,!1)},formatType:function(t){var e=t.legend,n=t.fieldOrDatumDef,r=t.scaleType,i=e.formatType;return not(i,n,r)},gradientLength:function(t){var e,n,r=t.legend,i=t.legendConfig;return null!==(e=null!==(n=r.gradientLength)&&void 0!==n?n:i.gradientLength)&&void 0!==e?e:function(t){var e=t.legendConfig,n=t.model,r=t.direction,i=t.orient,o=t.scaleType,a=e.gradientHorizontalMaxLength,c=e.gradientHorizontalMinLength,l=e.gradientVerticalMaxLength,u=e.gradientVerticalMinLength;if(ait(o))return"horizontal"===r?"top"===i||"bottom"===i?Wpt(n,"width",c,a):c:Wpt(n,"height",u,l);return}(t)},labelOverlap:function(t){var e,n,r=t.legend,i=t.legendConfig,o=t.scaleType;return null!==(e=null!==(n=r.labelOverlap)&&void 0!==n?n:i.labelOverlap)&&void 0!==e?e:function(t){if(o9(["quantile","threshold","log","symlog"],t))return"greedy";return}(o)},symbolType:function(t){var e,n=t.legend,r=t.markDef,i=t.channel,o=t.encoding;return null!==(e=n.symbolType)&&void 0!==e?e:function(t,e,n,r){if("shape"!==e){var i,o=null!==(i=Lpt(n))&&void 0!==i?i:r;if(o)return o}switch(t){case"bar":case"rect":case"image":case"square":return"square";case"line":case"trail":case"rule":return"stroke";case"arc":case"point":case"circle":case"tick":case"geoshape":case"area":case"text":return"circle"}}(r.type,i,o.shape,r.shape)},title:function(t){return Yot(t.fieldOrDatumDef,t.config,{allowDisabling:!0})},type:function(t){var e=t.legendType,n=t.scaleType;if(Dtt(t.channel)&&ait(n)){if("gradient"===e)return}else if("symbol"===e)return;return e},values:function(t){var e=t.fieldOrDatumDef;return function(t,e){var n=t.values;if(qy(n))return lat(e,n);if(zet(n))return n;return}(t.legend,e)}};function Upt(t){return T9(t.legend.type,function(t){var e=t.channel,n=t.timeUnit,r=t.scaleType;if(Dtt(e)){if(o9(["quarter","month","day"],n))return"symbol";if(ait(r))return"gradient"}return"symbol"}(t))}function Hpt(t){var e,n,r=t.legendConfig,i=t.legendType,o=t.orient;return null!==(e=null!==(n=t.legend.direction)&&void 0!==n?n:r[i?"gradientDirection":"symbolDirection"])&&void 0!==e?e:function(t,e){switch(t){case"top":case"bottom":return"horizontal";case"left":case"right":case"none":case void 0:return;default:return"gradient"===e?"horizontal":void 0}}(o,i)}function Wpt(t,e,n,r){var i=t.getSizeSignalRef(e).signal;return{signal:"clamp(".concat(i,", ").concat(n,", ").concat(r,")")}}function Vpt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Gpt(t){for(var e=1;e=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function qpt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function evt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n1?"[".concat(o.join(", "),"]"):o[0]}},n)]}return[ivt(ivt({name:r},{translate:{signal:"[width / 2, height / 2]"}}),n)]}var cvt=["type","clipAngle","clipExtent","center","rotate","precision","reflectX","reflectY","coefficient","distance","fraction","lobes","parallel","radius","ratio","spacing","tilt"];function lvt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function uvt(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(F2t){return!1}}();return function(){var n,r=(0,Um.Z)(t);if(e){var i=(0,Um.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,zm.Z)(this,n)}}var svt=function(t){(0,Bm.Z)(n,t);var e=uvt(n);function n(t,r,i,o){var a;return(0,Rm.Z)(this,n),a=e.call(this,function(t){for(var e=1;e=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function hvt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Svt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Tvt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Lvt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0){o[l]=!0;break}}}catch(b){d.e(b)}finally{d.f()}}}catch(b){u.e(b)}finally{u.f()}if(o[l]){var v='length(data("'.concat(this.facet.name,'"))'),g="row"===l?n?{signal:"ceil(".concat(v," / ").concat(n,")")}:1:n?{signal:"min(".concat(v,", ").concat(n,")")}:{signal:v};i.push({name:"".concat(this.facet.name,"_").concat(l),transform:[{type:"sequence",start:0,stop:g}]})}}}catch(b){a.e(b)}finally{a.f()}var m=o.row,y=o.column;return(m||y)&&i.unshift(this.assembleRowColumnHeaderData("facet",null,t)),i}},{key:"assemble",value:function(){var t=[],e=null,n=this.getChildIndependentFieldsWithStep(),r=this.column,i=this.row,o=this.facet;if(r&&i&&(n.x||n.y)){var a,c;e="cross_".concat(this.column.name,"_").concat(this.row.name);var l=[].concat(null!==(a=n.x)&&void 0!==a?a:[],null!==(c=n.y)&&void 0!==c?c:[]),u=l.map((function(){return"distinct"}));t.push({name:e,source:this.data,transform:[{type:"aggregate",groupby:this.fields,fields:l,ops:u}]})}for(var s=0,f=[H9,U9];s=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Hvt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n1?t.field in e||(e[t.field]="flatten"):Not(t)&&fot(t.sort)&&D9(t.sort.field)>1&&(t.sort.field in e||(e[t.sort.field]="flatten"))}if((cyt(t)||lyt(t))&&t.forEachFieldDef((function(e,r){if(Rot(e))n(e);else{var i=Utt(r),o=t.fieldDef(i);n(Vvt(Vvt({},e),{},{type:o.type}))}})),cyt(t)){var r=t.mark,i=t.markDef,o=t.encoding;if(Pit(r)&&!t.encoding.order){var a=o["horizontal"===i.orient?"y":"x"];_ot(a)&&"quantitative"===a.type&&!(a.field in e)&&(e[a.field]="number")}}return e}var Yvt=function(t){(0,Bm.Z)(n,t);var e=zvt(n);function n(t,r){var i;return(0,Rm.Z)(this,n),(i=e.call(this,t))._parse=r,i}return(0,Lm.Z)(n,[{key:"clone",value:function(){return new n(null,J7(this._parse))}},{key:"hash",value:function(){return"Parse ".concat(r9(this._parse))}},{key:"parse",get:function(){return this._parse}},{key:"merge",value:function(t){this._parse=Vvt(Vvt({},this._parse),t.parse),t.remove()}},{key:"assembleFormatParse",value:function(){var t,e={},n=Uvt(m9(this._parse));try{for(n.s();!(t=n.n()).done;){var r=t.value,i=this._parse[r];1===D9(r)&&(e[r]=i)}}catch(o){n.e(o)}finally{n.f()}return e}},{key:"producedFields",value:function(){return new Set(m9(this._parse))}},{key:"dependentFields",value:function(){return new Set(m9(this._parse))}},{key:"assembleTransforms",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return m9(this._parse).filter((function(t){return!e||D9(t)>1})).map((function(e){var n=function(t,e){var n=O9(t);if("number"===e)return"toNumber(".concat(n,")");if("boolean"===e)return"toBoolean(".concat(n,")");if("string"===e)return"toString(".concat(n,")");if("date"===e)return"toDate(".concat(n,")");if("flatten"===e)return n;if(e.startsWith("date:")){var r=Gvt(e.slice(5,e.length));return"timeParse(".concat(n,",'").concat(r,"')")}if(e.startsWith("utc:")){var i=Gvt(e.slice(4,e.length));return"utcParse(".concat(n,",'").concat(i,"')")}return $nt('Unrecognized parse "'.concat(e,'".')),null}(e,t._parse[e]);return n?{type:"formula",expr:n,as:_9(e)}:null})).filter((function(t){return null!==t}))}}],[{key:"makeExplicit",value:function(t,e,n){var r,i={},o=e.data;return!Ust(o)&&null!=o&&null!==(r=o.format)&&void 0!==r&&r.parse&&(i=o.format.parse),this.makeWithAncestors(t,i,{},n)}},{key:"makeWithAncestors",value:function(t,e,r,i){var o,a=Uvt(m9(r));try{for(a.s();!(o=a.n()).done;){var c=o.value,l=i.getWithExplicit(c);void 0!==l.value&&(l.explicit||l.value===r[c]||"derived"===l.value||"flatten"===r[c]?delete r[c]:$nt(Mnt(c,r[c],l.value)))}}catch(b){a.e(b)}finally{a.f()}var u,s=Uvt(m9(e));try{for(s.s();!(u=s.n()).done;){var f=u.value,h=i.get(f);void 0!==h&&(h===e[f]?delete e[f]:$nt(Mnt(f,e[f],h)))}}catch(b){s.e(b)}finally{s.f()}var d=new _st(e,r);i.copyAll(d);var p,v={},g=Uvt(m9(d.combine()));try{for(g.s();!(p=g.n()).done;){var m=p.value,y=d.get(m);null!==y&&(v[m]=y)}}catch(b){g.e(b)}finally{g.f()}return 0===m9(v).length||i.parseNothing?null:new n(t,v)}}]),n}(nft);function $vt(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(F2t){return!1}}();return function(){var n,r=(0,Um.Z)(t);if(e){var i=(0,Um.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,zm.Z)(this,n)}}var Kvt=function(t){(0,Bm.Z)(n,t);var e=$vt(n);function n(t){return(0,Rm.Z)(this,n),e.call(this,t)}return(0,Lm.Z)(n,[{key:"clone",value:function(){return new n(null)}},{key:"dependentFields",value:function(){return new Set}},{key:"producedFields",value:function(){return new Set([Zct])}},{key:"hash",value:function(){return"Identifier"}},{key:"assemble",value:function(){return{type:"identifier",as:Zct}}}]),n}(nft);function Jvt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Qvt(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(F2t){return!1}}();return function(){var n,r=(0,Um.Z)(t);if(e){var i=(0,Um.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,zm.Z)(this,n)}}var tgt=function(t){(0,Bm.Z)(n,t);var e=Qvt(n);function n(t,r){var i;return(0,Rm.Z)(this,n),(i=e.call(this,t)).params=r,i}return(0,Lm.Z)(n,[{key:"clone",value:function(){return new n(null,this.params)}},{key:"dependentFields",value:function(){return new Set}},{key:"producedFields",value:function(){}},{key:"hash",value:function(){return"Graticule ".concat(r9(this.params))}},{key:"assemble",value:function(){return function(t){for(var e=1;e=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function ugt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function bgt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n1&&(this.setModified(),this.mergeNodes(t,n[a]))}}catch(c){o.e(c)}finally{o.f()}}}]),n}(mgt),Sgt=function(t){(0,Bm.Z)(n,t);var e=xgt(n);function n(t){var r;return(0,Rm.Z)(this,n),(r=e.call(this)).requiresSelectionId=t&&hdt(t),r}return(0,Lm.Z)(n,[{key:"run",value:function(t){t instanceof Kvt&&(this.requiresSelectionId&&(pgt(t.parent)||t.parent instanceof Fvt||t.parent instanceof Yvt)||(this.setModified(),t.remove()))}}]),n}(mgt),kgt=function(t){(0,Bm.Z)(n,t);var e=xgt(n);function n(){return(0,Rm.Z)(this,n),e.apply(this,arguments)}return(0,Lm.Z)(n,[{key:"optimize",value:function(t){return this.run(t,new Set),this.modifiedFlag}},{key:"run",value:function(t,e){var n=new Set;t instanceof dft&&d9(n=t.producedFields(),e)&&(this.setModified(),t.removeFormulas(e),0===t.producedFields.length&&t.remove());var r,i=ygt(t.children);try{for(i.s();!(r=i.n()).done;){var o=r.value;this.run(o,new Set([].concat((0,Xm.Z)(e),(0,Xm.Z)(n))))}}catch(a){i.e(a)}finally{i.f()}}}]),n}(vgt),Cgt=function(t){(0,Bm.Z)(n,t);var e=xgt(n);function n(){return(0,Rm.Z)(this,n),e.call(this)}return(0,Lm.Z)(n,[{key:"run",value:function(t){t instanceof rft&&!t.isRequired()&&(this.setModified(),t.remove())}}]),n}(mgt),Ogt=function(t){(0,Bm.Z)(n,t);var e=xgt(n);function n(){return(0,Rm.Z)(this,n),e.apply(this,arguments)}return(0,Lm.Z)(n,[{key:"run",value:function(t){if(!(pgt(t)||t.numChildren()>1)){var e,n=ygt(t.children);try{for(n.s();!(e=n.n()).done;){var r=e.value;if(r instanceof Yvt)if(t instanceof Yvt)this.setModified(),t.merge(r);else{if(v9(t.producedFields(),r.dependentFields()))continue;this.setModified(),r.swapWithParent()}}}catch(i){n.e(i)}finally{n.f()}}}}]),n}(ggt),Egt=function(t){(0,Bm.Z)(n,t);var e=xgt(n);function n(){return(0,Rm.Z)(this,n),e.apply(this,arguments)}return(0,Lm.Z)(n,[{key:"run",value:function(t){var e=(0,Xm.Z)(t.children),n=t.children.filter((function(t){return t instanceof Yvt}));if(t.numChildren()>1&&n.length>=1){var r,i={},o=new Set,a=ygt(n);try{for(a.s();!(r=a.n()).done;){var c,l=r.value.parse,u=ygt(m9(l));try{for(u.s();!(c=u.n()).done;){var s=c.value;s in i?i[s]!==l[s]&&o.add(s):i[s]=l[s]}}catch(x){u.e(x)}finally{u.f()}}}catch(x){a.e(x)}finally{a.f()}var f,h=ygt(o);try{for(h.s();!(f=h.n()).done;){delete i[f.value]}}catch(x){h.e(x)}finally{h.f()}if(!g9(i)){this.setModified();var d,p=new Yvt(t,i),v=ygt(e);try{for(v.s();!(d=v.n()).done;){var g=d.value;if(g instanceof Yvt){var m,y=ygt(m9(i));try{for(y.s();!(m=y.n()).done;){var b=m.value;delete g.parse[b]}}catch(x){y.e(x)}finally{y.f()}}t.removeChild(g),g.parent=p,g instanceof Yvt&&0===m9(g.parse).length&&g.remove()}}catch(x){v.e(x)}finally{v.f()}}}}}]),n}(ggt),Mgt=function(t){(0,Bm.Z)(n,t);var e=xgt(n);function n(){return(0,Rm.Z)(this,n),e.apply(this,arguments)}return(0,Lm.Z)(n,[{key:"run",value:function(t){t instanceof rft||t.numChildren()>0||t instanceof Bvt||t instanceof cgt||(this.setModified(),t.remove())}}]),n}(ggt),Agt=function(t){(0,Bm.Z)(n,t);var e=xgt(n);function n(){return(0,Rm.Z)(this,n),e.apply(this,arguments)}return(0,Lm.Z)(n,[{key:"run",value:function(t){var e,n=t.children.filter((function(t){return t instanceof dft})),r=n.pop(),i=ygt(n);try{for(i.s();!(e=i.n()).done;){var o=e.value;this.setModified(),r.merge(o)}}catch(a){i.e(a)}finally{i.f()}}}]),n}(ggt),Pgt=function(t){(0,Bm.Z)(n,t);var e=xgt(n);function n(){return(0,Rm.Z)(this,n),e.apply(this,arguments)}return(0,Lm.Z)(n,[{key:"run",value:function(t){var e,n={},r=ygt(t.children.filter((function(t){return t instanceof Fvt})));try{for(r.s();!(e=r.n()).done;){var i=e.value,o=r9(i.groupBy);o in n||(n[o]=[]),n[o].push(i)}}catch(d){r.e(d)}finally{r.f()}var a,c=ygt(m9(n));try{for(c.s();!(a=c.n()).done;){var l=n[a.value];if(l.length>1){var u,s=l.pop(),f=ygt(l);try{for(f.s();!(u=f.n()).done;){var h=u.value;s.merge(h)&&(t.removeChild(h),h.parent=s,h.remove(),this.setModified())}}catch(d){f.e(d)}finally{f.f()}}}}catch(d){c.e(d)}finally{c.f()}}}]),n}(ggt),_gt=function(t){(0,Bm.Z)(n,t);var e=xgt(n);function n(t){var r;return(0,Rm.Z)(this,n),(r=e.call(this)).model=t,r}return(0,Lm.Z)(n,[{key:"run",value:function(t){var e,n=!(pgt(t)||t instanceof ydt||t instanceof Yvt||t instanceof Kvt),r=[],i=[],o=ygt(t.children);try{for(o.s();!(e=o.n()).done;){var a=e.value;a instanceof Pvt&&(n&&!v9(t.producedFields(),a.dependentFields())?r.push(a):i.push(a))}}catch(v){o.e(v)}finally{o.f()}if(r.length>0){var c,l=r.pop(),u=ygt(r);try{for(u.s();!(c=u.n()).done;){var s=c.value;l.merge(s,this.model.renameSignal.bind(this.model))}}catch(v){u.e(v)}finally{u.f()}this.setModified(),t instanceof Pvt?t.merge(l,this.model.renameSignal.bind(this.model)):l.swapWithParent()}if(i.length>1){var f,h=i.pop(),d=ygt(i);try{for(d.s();!(f=d.n()).done;){var p=f.value;h.merge(p,this.model.renameSignal.bind(this.model))}}catch(v){d.e(v)}finally{d.f()}this.setModified()}}}]),n}(ggt),Dgt=function(t){(0,Bm.Z)(n,t);var e=xgt(n);function n(){return(0,Rm.Z)(this,n),e.apply(this,arguments)}return(0,Lm.Z)(n,[{key:"run",value:function(t){var e=(0,Xm.Z)(t.children),n=a9(e,(function(t){return t instanceof rft}));if(n&&!(t.numChildren()<=1)){var r,i,o=[],a=ygt(e);try{for(a.s();!(i=a.n()).done;){var c=i.value;if(c instanceof rft){for(var l=c;1===l.numChildren();){var u=(0,G.Z)(l.children,1)[0];if(!(u instanceof rft))break;l=u}o.push.apply(o,(0,Xm.Z)(l.children)),r?(t.removeChild(c),c.parent=r.parent,r.parent.removeChild(r),r.parent=l,this.setModified()):r=l}else o.push(c)}}catch(d){a.e(d)}finally{a.f()}if(o.length){this.setModified();var s,f=ygt(o);try{for(f.s();!(s=f.n()).done;){var h=s.value;h.parent.removeChild(h),h.parent=r}}catch(d){f.e(d)}finally{f.f()}}}}}]),n}(ggt);function Tgt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Zgt(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return Fgt(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Fgt(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Fgt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Lgt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0?e.map((function(t){return t.bin?n?[Wot(t,{binSuffix:"mid"})]:[Wot(t,{}),Wot(t,{binSuffix:"end"})]:[Wot(t)]})).flat():null!=r?r:[]}},{key:"assemble",value:function(){var t=[],e=this._stack,n=e.facetby,r=e.dimensionFieldDefs,i=e.stackField,o=e.stackby,a=e.sort,c=e.offset,l=e.impute,u=e.as;if(l){var s,f=Rgt(r);try{for(f.s();!(s=f.n()).done;){var h=s.value,d=h.bandPosition,p=void 0===d?.5:d;if(h.bin){var v=Wot(h,{expr:"datum"}),g=Wot(h,{expr:"datum",binSuffix:"end"});t.push({type:"formula",expr:"".concat(p,"*").concat(v,"+").concat(1-p,"*").concat(g),as:Wot(h,{binSuffix:"mid",forAs:!0})})}t.push({type:"impute",field:i,groupby:[].concat((0,Xm.Z)(o),(0,Xm.Z)(n)),key:Wot(h,{binSuffix:"mid"}),method:"value",value:0})}}catch(m){f.e(m)}finally{f.f()}}return t.push({type:"stack",groupby:[].concat((0,Xm.Z)(this.getGroupbyFields()),(0,Xm.Z)(n)),field:i,sort:a,as:u,offset:c}),t}}],[{key:"makeFromTransform",value:function(t,e){var r=e.stack,i=e.groupby,o=e.as,a=e.offset,c=void 0===a?"zero":a,l=[],u=[];if(void 0!==e.sort){var s,f=Rgt(e.sort);try{for(f.s();!(s=f.n()).done;){var h=s.value;l.push(h.field),u.push(T9(h.order,"ascending"))}}catch(v){f.e(v)}finally{f.f()}}var d,p={field:l,order:u};return d=function(t){return qy(t)&&t.every((function(t){return Vb(t)}))&&t.length>1}(o)?o:Vb(o)?[o,"".concat(o,"_end")]:["".concat(e.stack,"_start"),"".concat(e.stack,"_end")],new n(t,{dimensionFieldDefs:[],stackField:r,groupby:i,offset:c,sort:p,facetby:[],as:d})}},{key:"makeFromEncoding",value:function(t,e){var r=e.stack,i=e.encoding;if(!r)return null;var o,a=r.groupbyChannels,c=r.fieldChannel,l=r.offset,u=r.impute,s=a.map((function(t){return Qot(i[t])})).filter((function(t){return!!t})),f=function(t){return t.stack.stackBy.reduce((function(t,e){var n=Wot(e.fieldDef);return n&&t.push(n),t}),[])}(e),h=e.encoding.order;if(qy(h)||_ot(h))o=hnt(h);else{var d=Eot(h)?h.sort:"y"===c?"descending":"ascending";o=f.reduce((function(t,e){return t.field.push(e),t.order.push(d),t}),{field:[],order:[]})}return new n(t,{dimensionFieldDefs:s,stackField:e.vgField(c),facetby:[],stackby:f,sort:o,offset:l,impute:u,as:[e.vgField(c,{suffix:"start",forAs:!0}),e.vgField(c,{suffix:"end",forAs:!0})]})}}]),n}(nft);function zgt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Ugt(t){for(var e=1;e=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Wgt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function qgt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Jgt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0})),i=nmt(new Mgt,r)||i,r=r.filter((function(t){return t.numChildren()>0})),n||(i=nmt(new Ogt,r)||i,i=nmt(new _gt(e),r)||i,i=nmt(new kgt,r)||i,i=nmt(new Egt,r)||i,i=nmt(new Pgt,r)||i,i=nmt(new Agt,r)||i,i=nmt(new wgt,r)||i,i=nmt(new Dgt,r)||i),t.sources=r,i}var imt=function(){function t(e){(0,Rm.Z)(this,t),Object.defineProperty(this,"signal",{enumerable:!0,get:e})}return(0,Lm.Z)(t,null,[{key:"fromName",value:function(e,n){return new t((function(){return e(n)}))}}]),t}(),omt=["sort"];function amt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function cmt(t){for(var e=1;e=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function umt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0){var i=n[0];if(n.length>1){$nt(Hnt);var o=n.filter((function(t){return Yy(t)&&"op"in t&&"min"!==t.op}));i=!n.every((function(t){return Yy(t)&&"op"in t}))||1!==o.length||o[0]}else if(Yy(i)&&"field"in i){var a=i.field;r.field===a&&(i=!i.order||{order:i.order})}return cmt(cmt({},r),{},{sort:i})}return r}var c,l=s9(n.map((function(t){return x9(t)||!("op"in t)||Vb(t.op)&&t.op in met?t:($nt(function(t){return"Dropping sort property ".concat(n9(t),' as unioned domains only support boolean or op "count", "min", and "max".')}(t)),!0)})),r9);1===l.length?c=l[0]:l.length>1&&($nt(Hnt),c=!0);var u=s9(t.map((function(t){return Het(t)?t.data:null})),(function(t){return t}));return 1===u.length&&null!==u[0]?cmt({data:u[0],fields:e.map((function(t){return t.field}))},c?{sort:c}:{}):cmt({fields:e},c?{sort:c}:{})}}function bmt(t){if(Het(t)&&Vb(t.field))return t.field;if(function(t){return!qy(t)&&"fields"in t&&!("data"in t)}(t)){var e,n,r=lmt(t.fields);try{for(r.s();!(n=r.n()).done;){var i=n.value;if(Het(i)&&Vb(i.field))if(e){if(e!==i.field)return $nt("Detected faceted independent scales that union domain of multiple fields from different data sources. We will use the first field. The result view size may be incorrect."),e}else e=i.field}}catch(a){r.e(a)}finally{r.f()}return $nt("Detected faceted independent scales that union domain of the same fields from different source. We will assume that this is the same field from a different fork of the same data source. However, if this is not the case, the result view size may be incorrect."),e}if(function(t){return!qy(t)&&"fields"in t&&"data"in t}(t)){$nt("Detected faceted independent scales that union domain of multiple fields from the same data source. We will use the first field. The result view size may be incorrect.");var o=t.fields[0];return Vb(o)?o:void 0}}function xmt(t,e){var n=t.component.scales[e].get("domains").map((function(e){return Het(e)&&(e.data=t.lookupDataSource(e.data)),e}));return ymt(n)}var wmt=["name","type","selectionExtent","domains","range","reverse"];function Smt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function kmt(t){for(var e=1;er[1]?"isValid(".concat(i,") && reverse(").concat(i,")"):i}}(t,c,r,f):null;return e.push(kmt(kmt(kmt(kmt({name:o,type:a},f?{domain:f}:{}),h?{domainRaw:h}:{}),{},{range:s},void 0!==l?{reverse:l}:{}),u)),e}),[])}function Emt(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(F2t){return!1}}();return function(){var n,r=(0,Um.Z)(t);if(e){var i=(0,Um.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,zm.Z)(this,n)}}var Mmt=function(t){(0,Bm.Z)(n,t);var e=Emt(n);function n(t,r){var i;return(0,Rm.Z)(this,n),(i=e.call(this,{},{name:t})).merged=!1,i.setWithExplicit("type",r),i}return(0,Lm.Z)(n,[{key:"domainDefinitelyIncludesZero",value:function(){return!1!==this.get("zero")||a9(this.get("domains"),(function(t){return qy(t)&&2===t.length&&t[0]<=0&&t[1]>=0}))}}]),n}(_st);function Amt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Pmt(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return _mt(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _mt(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function _mt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Umt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n5&&void 0!==arguments[5]&&arguments[5];if(void 0!==t)return;if(tet(e)){var a=i.bandPaddingInner,c=i.barBandPaddingInner,l=i.rectBandPaddingInner,u=i.bandWithNestedOffsetPaddingInner;return o?u:T9(a,"bar"===n?c:l)}if(oet(e)&&r===Xrt.BAND)return i.offsetBandPaddingInner;return}(e,n,r.type,i,o.scale,a)},paddingOuter:function(t){var e=t.scalePadding,n=t.channel,r=t.scaleType,i=t.scalePaddingInner,o=t.config,a=t.hasNestedOffsetScale;return function(t,e,n,r,i){var o=arguments.length>5&&void 0!==arguments[5]&&arguments[5];if(void 0!==t)return;if(tet(e)){var a=i.bandPaddingOuter,c=i.bandWithNestedOffsetPaddingOuter;if(o)return c;if(n===Xrt.BAND)return T9(a,zet(r)?{signal:"".concat(r.signal,"/2")}:r/2)}else if(oet(e)){if(n===Xrt.POINT)return.5;if(n===Xrt.BAND)return i.offsetBandPaddingOuter}return}(e,n,r,i,o.scale,a)},reverse:function(t){var e=t.fieldOrDatumDef,n=t.scaleType,r=t.channel,i=t.config;return function(t,e,n,r){if("x"===n&&void 0!==r.xReverse)return oit(t)&&"descending"===e?zet(r.xReverse)?{signal:"!".concat(r.xReverse.signal)}:!r.xReverse:r.xReverse;if(oit(t)&&"descending"===e)return!0;return}(n,_ot(e)?e.sort:void 0,r,i.scale)},zero:function(t){var e=t.channel,n=t.fieldOrDatumDef,r=t.domain,i=t.markDef,o=t.scaleType,a=t.config,c=t.hasSecondaryRangeChannel;return function(t,e,n,r,i,o,a){if(n&&"unaggregated"!==n&&oit(i)){if(qy(n)){var c=n[0],l=n[n.length-1];if(c<=0&&l>=0)return!0}return!1}if("size"===t&&"quantitative"===e.type&&!cit(i))return!0;if((!_ot(e)||!e.bin)&&o9([].concat((0,Xm.Z)(Qtt),(0,Xm.Z)(net)),t)){var u=r.orient,s=r.type;return(!o9(["bar","area","line","trail"],s)||!("horizontal"===u&&"y"===t||"vertical"===u&&"x"===t))&&(!(!o9(["bar","area"],s)||a)||(null==o?void 0:o.zero))}return!1}(e,n,r,i,o,a.scale,c)}};function Vmt(t){cyt(t)?function(t){var e,n=t.component.scales,r=Pmt(set);try{for(r.s();!(e=r.n()).done;){var i=e.value,o=n[i];if(o){var a=Zmt(i,t);o.setWithExplicit("range",a)}}}catch(c){r.e(c)}finally{r.f()}}(t):Gmt(t,"range")}function Gmt(t,e){var n,r=t.component.scales,i=zmt(t.children);try{for(i.s();!(n=i.n()).done;){var o=n.value;"range"===e?Vmt(o):Hmt(o,e)}}catch(d){i.e(d)}finally{i.f()}var a,c=zmt(m9(r));try{for(c.s();!(a=c.n()).done;){var l,u=a.value,s=void 0,f=zmt(t.children);try{for(f.s();!(l=f.n()).done;){var h=l.value.component.scales[u];if(h)s=jst(s,h.getWithExplicit(e),e,"scale",Zst((function(t,n){return"range"===e&&t.step&&n.step?t.step-n.step:0})))}}catch(d){f.e(d)}finally{f.f()}r[u].setWithExplicit(e,s)}}catch(d){c.e(d)}finally{c.f()}}function Xmt(t,e,n,r){var i,o,a=function(t,e,n,r){switch(e.type){case"nominal":case"ordinal":var i;if(Dtt(t)||"discrete"===vet(t))return"shape"===t&&"ordinal"===e.type&&$nt(Rnt(t,"ordinal")),"ordinal";if(tet(t)||oet(t)){if(o9(["rect","bar","image","rule"],n.type))return"band";if(r)return"band"}else if("arc"===n.type&&t in eet)return"band";return Iit(n[Vtt(t)])||Bot(e)&&null!==(i=e.axis)&&void 0!==i&&i.tickBand?"band":"point";case"temporal":return Dtt(t)?"time":"discrete"===vet(t)?($nt(Rnt(t,"temporal")),"ordinal"):_ot(e)&&e.timeUnit&&Srt(e.timeUnit).utc?"utc":"time";case"quantitative":return Dtt(t)?_ot(e)&&Met(e.bin)?"bin-ordinal":"linear":"discrete"===vet(t)?($nt(Rnt(t,"quantitative")),"ordinal"):"linear";case"geojson":return}throw new Error(_nt(e.type))}(e,n,r,arguments.length>4&&void 0!==arguments[4]&&arguments[4]),c=t.type;return fet(e)?void 0!==c?function(t,e){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!fet(t))return!1;switch(t){case V9:case G9:case Y9:case $9:case Q9:case K9:return!!ait(e)||"band"===e||"point"===e&&!n;case utt:case ptt:case ftt:case htt:case dtt:case stt:return ait(e)||cit(e)||o9(["band","point","ordinal"],e);case ott:case att:case ctt:return"band"!==e;case vtt:case ltt:return"ordinal"===e||cit(e)}}(e,c)?_ot(n)&&(i=c,o=n.type,!(o9([Hrt,Vrt],o)?void 0===i||iit(i):o===Wrt?o9([Xrt.TIME,Xrt.UTC,void 0],i):o!==Urt||tit(i)||cit(i)||void 0===i))?($nt(function(t,e){return'FieldDef does not work with "'.concat(t,'" scale. We are using "').concat(e,'" scale instead.')}(c,a)),a):c:($nt(function(t,e,n){return'Channel "'.concat(t,'" does not work with "').concat(e,'" scale. We are using "').concat(n,'" scale instead.')}(e,c,a)),a):a:null}function qmt(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return Ymt(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Ymt(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Ymt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function ryt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n1&&void 0!==arguments[1]?arguments[1]:{}).ignoreRange;$mt(t),smt(t);var n,r=qmt(fit);try{for(r.s();!(n=r.n()).done;)Hmt(t,n.value)}catch(i){r.e(i)}finally{r.f()}e||Vmt(t)}(this)}},{key:"parseProjection",value:function(){vvt(this)}},{key:"renameTopLevelLayoutSizeSignal",value:function(){"width"!==this.getName("width")&&this.renameSignal(this.getName("width"),"width"),"height"!==this.getName("height")&&this.renameSignal(this.getName("height"),"height")}},{key:"parseLegends",value:function(){Ypt(this)}},{key:"assembleEncodeFromView",value:function(t){t.style;var e,n=(0,I.Z)(t,Jmt),r={},i=nyt(m9(n));try{for(i.s();!(e=i.n()).done;){var o=e.value,a=n[o];void 0!==a&&(r[o]=rnt(a))}}catch(c){i.e(c)}finally{i.f()}return r}},{key:"assembleGroupEncodeEntry",value:function(t){var e,n={};if((this.view&&(n=this.assembleEncodeFromView(this.view)),!t)&&(this.description&&(n.description=rnt(this.description)),"unit"===this.type||"layer"===this.type))return oyt({width:this.getSizeSignalRef("width"),height:this.getSizeSignalRef("height")},null!==(e=n)&&void 0!==e?e:{});return g9(n)?void 0:n}},{key:"assembleLayout",value:function(){if(this.layout){var t=this.layout,e=t.spacing,n=(0,I.Z)(t,Qmt),r=this.component,i=this.config,o=function(t,e){var n,r={},i=ipt(Ztt);try{for(i.s();!(n=i.n()).done;){var o=n.value,a=t[o];if(null!=a&&a.facetFieldDef){var c=ept(["titleAnchor","titleOrient"],a.facetFieldDef.header,e,o),l=c.titleAnchor,u=Qdt(o,c.titleOrient),s=gpt(l,u);void 0!==s&&(r[u]=s)}}}catch(f){i.e(f)}finally{i.f()}return g9(r)?void 0:r}(r.layoutHeaders,i);return oyt(oyt(oyt({padding:e},this.assembleDefaultLayout()),n),o?{titleBand:o}:{})}}},{key:"assembleDefaultLayout",value:function(){return{}}},{key:"assembleHeaderMarks",value:function(){var t,e=this.component.layoutHeaders,n=[],r=nyt(Ztt);try{for(r.s();!(t=r.n()).done;){var i=t.value;e[i].title&&n.push(lpt(this,i))}}catch(l){r.e(l)}finally{r.f()}var o,a=nyt(npt);try{for(a.s();!(o=a.n()).done;){var c=o.value;n=n.concat(fpt(this,c))}}catch(l){a.e(l)}finally{a.f()}return n}},{key:"assembleAxes",value:function(){return function(t,e){var n=t.x,r=void 0===n?[]:n,i=t.y,o=void 0===i?[]:i;return[].concat((0,Xm.Z)(r.map((function(t){return jdt(t,"grid",e)}))),(0,Xm.Z)(o.map((function(t){return jdt(t,"grid",e)}))),(0,Xm.Z)(r.map((function(t){return jdt(t,"main",e)}))),(0,Xm.Z)(o.map((function(t){return jdt(t,"main",e)})))).filter((function(t){return t}))}(this.component.axes,this.config)}},{key:"assembleLegends",value:function(){return nvt(this)}},{key:"assembleProjections",value:function(){return ovt(this)}},{key:"assembleTitle",value:function(){var t,e=null!==(t=this.title)&&void 0!==t?t:{},n=e.encoding,r=(0,I.Z)(e,tyt),i=oyt(oyt(oyt({},Net(this.config.title).nonMarkTitleProperties),r),n?{encode:{update:n}}:{});if(i.text){var o,a;if(o9(["unit","layer"],this.type)){if(o9(["middle",void 0],i.anchor))null!==(o=i.frame)&&void 0!==o||(i.frame="group")}else null!==(a=i.anchor)&&void 0!==a||(i.anchor="start");return g9(i)?void 0:i}}},{key:"assembleGroup",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e={};(t=t.concat(this.assembleSignals())).length>0&&(e.signals=t);var n=this.assembleLayout();n&&(e.layout=n),e.marks=[].concat(this.assembleHeaderMarks(),this.assembleMarks());var r=!this.parent||lyt(this.parent)?Cmt(this):[];r.length>0&&(e.scales=r);var i=this.assembleAxes();i.length>0&&(e.axes=i);var o=this.assembleLegends();return o.length>0&&(e.legends=o),e}},{key:"getName",value:function(t){return w9((this.name?"".concat(this.name,"_"):"")+t)}},{key:"getDataName",value:function(t){return this.getName(Rst[t].toLowerCase())}},{key:"requestDataName",value:function(t){var e=this.getDataName(t),n=this.component.data.outputNodeRefCounts;return n[e]=(n[e]||0)+1,e}},{key:"getSizeSignalRef",value:function(t){if(lyt(this.parent)){var e=ret(Spt(t)),n=this.component.scales[e];if(n&&!n.merged){var r=n.get("type"),i=n.get("range");if(iit(r)&&Uet(i)){var o=n.get("name"),a=bmt(xmt(this,e));return a?{signal:wpt(o,n,Wot({aggregate:"distinct",field:a},{expr:"datum"}))}:($nt(wnt(e)),null)}}}return{signal:this.signalNameMap.get(this.getName(t))}}},{key:"lookupDataSource",value:function(t){var e=this.component.data.outputNodes[t];return e?e.getSource():t}},{key:"getSignalName",value:function(t){return this.signalNameMap.get(t)}},{key:"renameSignal",value:function(t,e){this.signalNameMap.rename(t,e)}},{key:"renameScale",value:function(t,e){this.scaleNameMap.rename(t,e)}},{key:"renameProjection",value:function(t,e){this.projectionNameMap.rename(t,e)}},{key:"scaleName",value:function(t,e){return e?this.getName(t):Ntt(t)&&fet(t)&&this.component.scales[t]||this.scaleNameMap.has(this.getName(t))?this.scaleNameMap.get(this.getName(t)):void 0}},{key:"projectionName",value:function(t){return t?this.getName("projection"):this.component.projection&&!this.component.projection.merged||this.projectionNameMap.has(this.getName("projection"))?this.projectionNameMap.get(this.getName("projection")):void 0}},{key:"getScaleComponent",value:function(t){if(!this.component.scales)throw new Error("getScaleComponent cannot be called before parseScale(). Make sure you have called parseScale or use parseUnitModelWithScale().");var e=this.component.scales[t];return e&&!e.merged?e:this.parent?this.parent.getScaleComponent(t):void 0}},{key:"getSelectionComponent",value:function(t,e){var n=this.component.selection[t];if(!n&&this.parent&&(n=this.parent.getSelectionComponent(t,e)),!n)throw new Error('Cannot find a selection named "'.concat(e,'".'));return n}},{key:"hasAxisOrientSignalRef",value:function(){var t,e;return(null===(t=this.component.axes.x)||void 0===t?void 0:t.some((function(t){return t.hasOrientSignalRef()})))||(null===(e=this.component.axes.y)||void 0===e?void 0:e.some((function(t){return t.hasOrientSignalRef()})))}}]),t}(),hyt=function(t){(0,Bm.Z)(n,t);var e=eyt(n);function n(){return(0,Rm.Z)(this,n),e.apply(this,arguments)}return(0,Lm.Z)(n,[{key:"vgField",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.fieldDef(t);if(n)return Wot(n,e)}},{key:"reduceFieldDef",value:function(t,e){return function(t,e,n,r){return t?m9(t).reduce((function(n,i){var o=t[i];return qy(o)?o.reduce((function(t,n){return e.call(r,t,n,i)}),n):e.call(r,n,o,i)}),n):n}(this.getMapping(),(function(e,n,r){var i=Qot(n);return i?t(e,i,r):e}),e)}},{key:"forEachFieldDef",value:function(t,e){Fat(this.getMapping(),(function(e,n){var r=Qot(e);r&&t(r,n)}),e)}}]),n}(fyt),dyt=["density"];function pyt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function vyt(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(F2t){return!1}}();return function(){var n,r=(0,Um.Z)(t);if(e){var i=(0,Um.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,zm.Z)(this,n)}}var gyt=function(t){(0,Bm.Z)(n,t);var e=vyt(n);function n(t,r){var i,o,a,c;(0,Rm.Z)(this,n),(c=e.call(this,t)).transform=r,c.transform=J7(r);var l=null!==(i=c.transform.as)&&void 0!==i?i:[void 0,void 0];return c.transform.as=[null!==(o=l[0])&&void 0!==o?o:"value",null!==(a=l[1])&&void 0!==a?a:"density"],r.groupby&&null==r.minsteps&&null==r.maxsteps&&null==r.steps&&(c.transform.steps=200),c}return(0,Lm.Z)(n,[{key:"clone",value:function(){return new n(null,J7(this.transform))}},{key:"dependentFields",value:function(){var t;return new Set([this.transform.density].concat((0,Xm.Z)(null!==(t=this.transform.groupby)&&void 0!==t?t:[])))}},{key:"producedFields",value:function(){return new Set(this.transform.as)}},{key:"hash",value:function(){return"DensityTransform ".concat(r9(this.transform))}},{key:"assemble",value:function(){var t=this.transform,e=function(t){for(var e=1;e0?{type:"filter",expr:e.join(" && ")}:null}}],[{key:"make",value:function(t,e){var r=e.config,i=e.mark;if("filter"!==lnt("invalid",e.markDef,r))return null;var o=e.reduceFieldDef((function(t,n,r){var o=fet(r)&&e.getScaleComponent(r);o&&(oit(o.get("type"))&&"count"!==n.aggregate&&!Pit(i)&&(t[n.field]=n));return t}),{});return m9(o).length?new n(t,o):null}}]),n}(nft);function Syt(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(F2t){return!1}}();return function(){var n,r=(0,Um.Z)(t);if(e){var i=(0,Um.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,zm.Z)(this,n)}}var kyt=function(t){(0,Bm.Z)(n,t);var e=Syt(n);function n(t,r){var i;(0,Rm.Z)(this,n),(i=e.call(this,t)).transform=r,i.transform=J7(r);var o=i.transform,a=o.flatten,c=o.as,l=void 0===c?[]:c;return i.transform.as=a.map((function(t,e){var n;return null!==(n=l[e])&&void 0!==n?n:t})),i}return(0,Lm.Z)(n,[{key:"clone",value:function(){return new n(this.parent,J7(this.transform))}},{key:"dependentFields",value:function(){return new Set(this.transform.flatten)}},{key:"producedFields",value:function(){return new Set(this.transform.as)}},{key:"hash",value:function(){return"FlattenTransform ".concat(r9(this.transform))}},{key:"assemble",value:function(){var t=this.transform;return{type:"flatten",fields:t.flatten,as:t.as}}}]),n}(nft);function Cyt(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(F2t){return!1}}();return function(){var n,r=(0,Um.Z)(t);if(e){var i=(0,Um.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,zm.Z)(this,n)}}var Oyt=function(t){(0,Bm.Z)(n,t);var e=Cyt(n);function n(t,r){var i,o,a,c;(0,Rm.Z)(this,n),(c=e.call(this,t)).transform=r,c.transform=J7(r);var l=null!==(i=c.transform.as)&&void 0!==i?i:[void 0,void 0];return c.transform.as=[null!==(o=l[0])&&void 0!==o?o:"key",null!==(a=l[1])&&void 0!==a?a:"value"],c}return(0,Lm.Z)(n,[{key:"clone",value:function(){return new n(null,J7(this.transform))}},{key:"dependentFields",value:function(){return new Set(this.transform.fold)}},{key:"producedFields",value:function(){return new Set(this.transform.as)}},{key:"hash",value:function(){return"FoldTransform ".concat(r9(this.transform))}},{key:"assemble",value:function(){var t=this.transform;return{type:"fold",fields:t.fold,as:t.as}}}]),n}(nft);function Eyt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Myt(t){for(var e=1;e=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function obt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0?(t.push(i),r.data=i.name):r.data=i.source,void t.push.apply(t,(0,Xm.Z)(r.assemble()));if((r instanceof tgt||r instanceof rgt||r instanceof wyt||r instanceof ydt||r instanceof Ydt||r instanceof Dyt||r instanceof Fvt||r instanceof Hyt||r instanceof Ggt||r instanceof Igt||r instanceof Oyt||r instanceof kyt||r instanceof gyt||r instanceof Nyt||r instanceof Xyt||r instanceof Kyt||r instanceof Kvt||r instanceof rbt||r instanceof ebt||r instanceof yyt)&&i.transform.push(r.assemble()),(r instanceof Pvt||r instanceof dft||r instanceof jyt||r instanceof Bgt||r instanceof Pyt)&&(l=i.transform).push.apply(l,(0,Xm.Z)(r.assemble())),r instanceof rft)if(i.source&&0===i.transform.length)r.setSource(i.source);else if(r.parent instanceof rft)r.setSource(i.name);else{if(i.name||(i.name="data_".concat(e++)),r.setSource(i.name),1===r.numChildren())t.push(i),i={name:null,source:i.name,transform:[]}}switch(r.numChildren()){case 0:r instanceof rft&&(!i.source||i.transform.length>0)&&t.push(i);break;case 1:n(r.children[0],i);break;default:i.name||(i.name="data_".concat(e++));var u=i.name;!i.source||i.transform.length>0?t.push(i):u=i.source;var s,f=ibt(r.children);try{for(f.s();!(s=f.n()).done;){n(s.value,{name:null,source:u,transform:[]})}}catch(h){f.e(h)}finally{f.f()}}}}function ubt(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return sbt(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return sbt(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function sbt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function gbt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function wbt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0?{aggregate:Cbt(Cbt({},S?{cross:S}:{}),l.length?{fields:l,ops:u,as:s}:{})}:{})}},{key:"facetSortFields",value:function(t){var e=this.facet[t];return e?fot(e.sort)?[Obt(e,e.sort,{expr:"datum"})]:qy(e.sort)?[$dt(e,t,{expr:"datum"})]:[Wot(e,{expr:"datum"})]:[]}},{key:"facetSortOrder",value:function(t){var e=this.facet[t];if(e){var n=e.sort;return[(fot(n)?n.order:!qy(n)&&n)||"ascending"]}return[]}},{key:"assembleLabelTitle",value:function(){var t=this.facet,e=this.config;if(t.facet)return dpt(t.facet,"facet",e);var n,r={row:["top","bottom"],column:["left","right"]},i=xbt(npt);try{for(i.s();!(n=i.n()).done;){var o=n.value;if(t[o]){var a,c=tpt("labelOrient",null===(a=t[o])||void 0===a?void 0:a.header,e,o);if(r[o].includes(c))return dpt(t[o],o,e)}}}catch(l){i.e(l)}finally{i.f()}}},{key:"assembleMarks",value:function(){var t=this,e=this.child,n=function(t){var e,n=[],r=lbt(n),i=ibt(t.children);try{for(i.s();!(e=i.n()).done;)r(e.value,{source:t.name,name:null,transform:[]})}catch(o){i.e(o)}finally{i.f()}return n}(this.component.data.facetRoot),r=e.assembleGroupEncodeEntry(!1),i=this.assembleLabelTitle()||e.assembleTitle(),o=e.assembleGroupStyle(),a=Cbt(Cbt(Cbt(Cbt(Cbt({name:this.getName("cell"),type:"group"},i?{title:i}:{}),o?{style:o}:{}),{},{from:{facet:this.assembleFacet()},sort:{field:Ztt.map((function(e){return t.facetSortFields(e)})).flat(),order:Ztt.map((function(e){return t.facetSortOrder(e)})).flat()}},n.length>0?{data:n}:{}),r?{encode:{update:r}}:{}),e.assembleGroup(function(t,e){if(t.component.selection&&m9(t.component.selection).length){var n=tx(t.getName("cell"));e.unshift({name:"facet",value:{},on:[{events:t3("mousemove","scope"),update:"isTuple(facet) ? facet : group(".concat(n,").datum")}]})}return Jst(e)}(this,[])));return[a]}},{key:"getMapping",value:function(){return this.facet}}]),n}(hyt);function Mbt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Abt(t){for(var e=1;e=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function _bt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0&&(i=function(t,e,n){var r,i=0,o=Pbt(e.transforms);try{for(o.s();!(r=o.n()).done;){var a=r.value,c=void 0,l=void 0;if(Fut(a))l=t=new Ydt(t,a),c="derived";else if(Sut(a)){var u,s=Xvt(a);l=t=null!==(u=Yvt.makeWithAncestors(t,{},s,n))&&void 0!==u?u:t,t=new ydt(t,e,a.filter)}else if(jut(a))l=t=Pvt.makeFromTransform(t,a,e),c="number";else if(Rut(a))c="date",void 0===n.getWithExplicit(a.field).value&&(t=new Yvt(t,(0,V.Z)({},a.field,c)),n.set(a.field,c,!1)),l=t=dft.makeFromTransform(t,a);else if(Lut(a))l=t=Fvt.makeFromTransform(t,a),c="number",hdt(e)&&(t=new Kvt(t));else if(Cut(a))l=t=Hyt.make(t,e,a,i++),c="derived";else if(Dut(a))l=t=new Ggt(t,a),c="number";else if(Tut(a))l=t=new Igt(t,a),c="number";else if(Nut(a))l=t=Bgt.makeFromTransform(t,a),c="derived";else if(But(a))l=t=new Oyt(t,a),c="derived";else if(zut(a))l=t=new yyt(t,a),c="derived";else if(Zut(a))l=t=new kyt(t,a),c="derived";else if(Out(a))l=t=new ebt(t,a),c="derived";else if(_ut(a))t=new rbt(t,a);else if(Iut(a))l=t=jyt.makeFromTransform(t,a),c="derived";else if(Eut(a))l=t=new gyt(t,a),c="derived";else if(Mut(a))l=t=new Xyt(t,a),c="derived";else if(Aut(a))l=t=new Kyt(t,a),c="derived";else{if(!Put(a)){$nt(Ant(a));continue}l=t=new Nyt(t,a),c="derived"}if(l&&void 0!==c){var f,h,d=Pbt(null!==(f=l.producedFields())&&void 0!==f?f:[]);try{for(d.s();!(h=d.n()).done;){var p=h.value;n.set(p,c,!1)}}catch(v){d.e(v)}finally{d.f()}}}}catch(v){o.e(v)}finally{o.f()}return t}(i,t,u));var h=function(t){var e={};if(cyt(t)&&t.component.selection){var n,r=Uvt(m9(t.component.selection));try{for(r.s();!(n=r.n()).done;){var i,o=n.value,a=Uvt(t.component.selection[o].project.items);try{for(a.s();!(i=a.n()).done;){var c=i.value;!c.channel&&D9(c.field)>1&&(e[c.field]="flatten")}}catch(l){a.e(l)}finally{a.f()}}}catch(l){r.e(l)}finally{r.f()}}return e}(t),d=qvt(t);if(i=null!==(r=Yvt.makeWithAncestors(i,{},Abt(Abt({},h),d),u))&&void 0!==r?r:i,cyt(t)&&(i=Pyt.parseAll(i,t),i=Dyt.parseAll(i,t)),cyt(t)||lyt(t)){var p,v;if(!f)i=null!==(v=Pvt.makeFromEncoding(i,t))&&void 0!==v?v:i;i=null!==(p=dft.makeFromEncoding(i,t))&&void 0!==p?p:i,i=Ydt.parseAllForSortIndex(i,t)}var g,m=t.getDataName(Rst.Raw),y=new rft(i,m,Rst.Raw,c);if(a[m]=y,i=y,cyt(t)){var b,x,w=Fvt.makeFromEncoding(i,t);w&&(i=w,hdt(t)&&(i=new Kvt(i))),i=null!==(b=jyt.makeFromEncoding(i,t))&&void 0!==b?b:i,i=null!==(x=Bgt.makeFromEncoding(i,t))&&void 0!==x?x:i}cyt(t)&&(i=null!==(g=wyt.make(i,t))&&void 0!==g?g:i);var S=t.getDataName(Rst.Main),k=new rft(i,S,Rst.Main,c);a[S]=k,i=k,cyt(t)&&function(t,e){var n,r,i=wdt(b9(null!==(n=t.component.selection)&&void 0!==n?n:{}));try{for(i.s();!(r=i.n()).done;){var o=(0,G.Z)(r.value,2),a=o[0],c=o[1],l=t.getName("lookup_".concat(a));t.component.data.outputNodes[l]=c.materialized=new rft(new ydt(e,t,{param:a}),l,Rst.Lookup,t.component.data.outputNodeRefCounts)}}catch(u){i.e(u)}finally{i.f()}}(t,k);var C=null;if(lyt(t)){var O,E=t.getName("facet");i=null!==(O=function(t,e){var n=e.row,r=e.column;if(n&&r){for(var i=null,o=0,a=[n,r];o=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Ibt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0&&void 0!==arguments[0]?arguments[0]:{},i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return(0,Rm.Z)(this,n),(t=e.call(this)).explicit=r,t.implicit=i,t.mainExtracted=o,t}return(0,Lm.Z)(n,[{key:"clone",value:function(){return new n(J7(this.explicit),J7(this.implicit),this.mainExtracted)}},{key:"hasAxisPart",value:function(t){return"axis"===t||("grid"===t||"title"===t?!!this.get(t):!function(t){return!1===t||null===t}(this.get(t)))}},{key:"hasOrientSignalRef",value:function(){return zet(this.explicit.orient)}}]),n}(_st);function Vbt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Gbt(t){for(var e=1;e=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function qbt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function nxt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Dxt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0)return function(t,e){return[{name:t.getName("pathgroup"),type:"group",from:{facet:{name:Ixt+t.requestDataName(Rst.Main),data:t.requestDataName(Rst.Main),groupby:e}},encode:{update:{width:{field:{group:"width"}},height:{field:{group:"height"}}}},marks:Lxt(t,{fromPrefix:Ixt})}]}(t,e)}else if(t.mark===mit){var n=Get.some((function(e){return lnt(e,t.markDef,t.config)}));if(t.stack&&!t.fieldDef("size")&&n)return function(t){var e,n,r,i=Lxt(t,{fromPrefix:Rxt}),o=(0,G.Z)(i,1)[0],a=t.scaleName(t.stack.fieldChannel),c=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return t.vgField(t.stack.fieldChannel,e)},l=function(t,e){var n=[c({prefix:"min",suffix:"start",expr:e}),c({prefix:"max",suffix:"start",expr:e}),c({prefix:"min",suffix:"end",expr:e}),c({prefix:"max",suffix:"end",expr:e})];return"".concat(t,"(").concat(n.map((function(t){return"scale('".concat(a,"',").concat(t,")")})).join(","),")")};"x"===t.stack.fieldChannel?(n=Zxt(Zxt({},t9(o.encode.update,["y","yc","y2","height"].concat((0,Xm.Z)(Get)))),{},{x:{signal:l("min","datum")},x2:{signal:l("max","datum")},clip:{value:!0}}),r={x:{field:{group:"x"},mult:-1},height:{field:{group:"height"}}},o.encode.update=Zxt(Zxt({},e9(o.encode.update,["y","yc","y2"])),{},{height:{field:{group:"height"}}})):(n=Zxt(Zxt({},t9(o.encode.update,["x","xc","x2","width"])),{},{y:{signal:l("min","datum")},y2:{signal:l("max","datum")},clip:{value:!0}}),r={y:{field:{group:"y"},mult:-1},width:{field:{group:"width"}}},o.encode.update=Zxt(Zxt({},e9(o.encode.update,["x","xc","x2"])),{},{width:{field:{group:"width"}}}));var u,s=_xt(Get);try{for(s.s();!(u=s.n()).done;){var f=u.value,h=unt(f,t.markDef,t.config);o.encode.update[f]?(n[f]=o.encode.update[f],delete o.encode.update[f]):h&&(n[f]=rnt(h)),h&&(o.encode.update[f]={value:0})}}catch(b){s.e(b)}finally{s.f()}var d=[];if((null===(e=t.stack.groupbyChannels)||void 0===e?void 0:e.length)>0){var p,v=_xt(t.stack.groupbyChannels);try{for(v.s();!(p=v.n()).done;){var g=p.value,m=t.fieldDef(g),y=Wot(m);y&&d.push(y),(null!=m&&m.bin||null!=m&&m.timeUnit)&&d.push(Wot(m,{binSuffix:"end"}))}}catch(b){v.e(b)}finally{v.f()}}n=["stroke","strokeWidth","strokeJoin","strokeCap","strokeDash","strokeDashOffset","strokeMiterLimit","strokeOpacity"].reduce((function(e,n){if(o.encode.update[n])return Zxt(Zxt({},e),{},(0,V.Z)({},n,o.encode.update[n]));var r=unt(n,t.markDef,t.config);return void 0!==r?Zxt(Zxt({},e),{},(0,V.Z)({},n,rnt(r))):e}),n),n.stroke&&(n.strokeForeground={value:!0},n.strokeOffset={value:0});return[{type:"group",from:{facet:{data:t.requestDataName(Rst.Main),name:Rxt+t.requestDataName(Rst.Main),groupby:d,aggregate:{fields:[c({suffix:"start"}),c({suffix:"start"}),c({suffix:"end"}),c({suffix:"end"})],ops:["min","max","min","max"]}}},encode:{update:n},marks:[{type:"group",encode:{update:r},marks:[o]}]}]}(t)}return Lxt(t)}var Ixt="faceted_path_";var Rxt="stack_group_";function Lxt(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{fromPrefix:""},n=t.mark,r=t.markDef,i=t.encoding,o=t.config,a=T9(r.clip,function(t){var e=t.getScaleComponent("x"),n=t.getScaleComponent("y");return!!(null!=e&&e.get("selectionExtent")||null!=n&&n.get("selectionExtent"))||void 0}(t),function(t){var e=t.component.projection;return!(!e||e.isFit)||void 0}(t)),c=cnt(r),l=i.key,u=function(t){var e=t.encoding,n=t.stack,r=t.mark,i=t.markDef,o=t.config,a=e.order;if(!(!qy(a)&&Lot(a)&&i9(a.value)||!a&&i9(lnt("order",i,o)))){if((qy(a)||_ot(a))&&!n)return hnt(a,{expr:"datum"});if(Pit(r)){var c="horizontal"===i.orient?"y":"x",l=e[c];if(_ot(l)){var u,s=l.sort;if(qy(s))return{field:Wot(l,{prefix:c,suffix:"sort_index",expr:"datum"})};if(fot(s))return{field:Wot({aggregate:_at(t.encoding)?s.op:void 0,field:s.field},{expr:"datum"})};if(sot(s))return{field:Wot(t.fieldDef(s.encoding),{expr:"datum"}),order:s.order};if(null===s)return;return{field:Wot(l,{binSuffix:null!==(u=t.stack)&&void 0!==u&&u.impute?"mid":void 0,expr:"datum"})}}}}}(t),s=function(t){if(!t.component.selection)return null;var e=m9(t.component.selection).length,n=e,r=t.parent;for(;r&&0===n;)n=m9(r.component.selection).length,r=r.parent;return n?{interactive:e>0||"geoshape"===t.mark||!!t.encoding.tooltip}:null}(t),f=lnt("aria",r,o),h=Fxt[n].postEncodingTransform?Fxt[n].postEncodingTransform(t):null;return[Zxt(Zxt(Zxt(Zxt(Zxt(Zxt(Zxt({name:t.getName("marks"),type:Fxt[n].vgMark},a?{clip:!0}:{}),c?{style:c}:{}),l?{key:l.field}:{}),u?{sort:u}:{}),s||{}),!1===f?{aria:f}:{}),{},{from:{data:e.fromPrefix+t.requestDataName(Rst.Main)},encode:{update:Fxt[n].encodeEntry(t)}},h?{transform:h}:{})]}function Nxt(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return Bxt(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Bxt(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Bxt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n3&&void 0!==arguments[3]?arguments[3]:{},l=arguments.length>4?arguments[4]:void 0;(0,Rm.Z)(this,n),(a=e.call(this,t,"unit",r,i,l,void 0,Kct(t)?t.view:void 0)).specifiedScales={},a.specifiedAxes={},a.specifiedLegends={},a.specifiedProjection={},a.selection=[],a.children=[];var u=Tit(t.mark)?Uxt({},t.mark):{type:t.mark},s=u.type;void 0===u.filled&&(u.filled=function(t,e,n){if(n.graticule)return!1;var r=unt("filled",t,e),i=t.type;return T9(r,i!==xit&&i!==bit&&i!==Sit)}(u,l,{graticule:t.data&&Vst(t.data)}));var f=a.encoding=Tat(t.encoding||{},s,u.filled,l);return a.markDef=jlt(u,f,l),a.size=function(t){var e,n=t.encoding,r=t.size,i=ext(Qtt);try{for(i.s();!(e=i.n()).done;){var o=e.value,a=Vtt(o);$ct(r[a])&&Zot(n[o])&&(delete r[a],$nt(Unt(a)))}}catch(c){i.e(c)}finally{i.f()}return r}({encoding:f,size:Kct(t)?Uxt(Uxt(Uxt({},c),t.width?{width:t.width}:{}),t.height?{height:t.height}:{}):c}),a.stack=Tlt(a.markDef,f),a.specifiedScales=a.initScales(s,f),a.specifiedAxes=a.initAxes(f),a.specifiedLegends=a.initLegends(f),a.specifiedProjection=t.projection,a.selection=(null!==(o=t.params)&&void 0!==o?o:[]).filter((function(t){return Rct(t)})),a}return(0,Lm.Z)(n,[{key:"hasProjection",get:function(){var t=this.encoding,e=this.mark===Ait,n=t&&Ptt.some((function(e){return Iot(t[e])}));return e||n}},{key:"scaleDomain",value:function(t){var e=this.specifiedScales[t];return e?e.domain:void 0}},{key:"axis",value:function(t){return this.specifiedAxes[t]}},{key:"legend",value:function(t){return this.specifiedLegends[t]}},{key:"initScales",value:function(t,e){var n=this;return set.reduce((function(t,r){var i,o=tat(e[r]);o&&(t[r]=n.initScale(null!==(i=o.scale)&&void 0!==i?i:{}));return t}),{})}},{key:"initScale",value:function(t){var e=t.domain,n=t.range,r=jet(t);return qy(e)&&(r.domain=e.map(ent)),qy(n)&&(r.range=n.map(ent)),r}},{key:"initAxes",value:function(t){var e=this;return Qtt.reduce((function(n,r){var i=t[r];if(Iot(i)||r===V9&&Iot(t.x2)||r===G9&&Iot(t.y2)){var o=Iot(i)?i.axis:void 0;n[r]=o?e.initAxis(Uxt({},o)):o}return n}),{})}},{key:"initAxis",value:function(t){var e,n={},r=Nxt(m9(t));try{for(r.s();!(e=r.n()).done;){var i=e.value,o=t[i];n[i]=dat(o)?tnt(o):ent(o)}}catch(a){r.e(a)}finally{r.f()}return n}},{key:"initLegends",value:function(t){return cet.reduce((function(e,n){var r=tat(t[n]);if(r&&function(t){switch(t){case ott:case att:case ctt:case utt:case ltt:case ftt:case ptt:case vtt:return!0;case htt:case dtt:case stt:return!1}}(n)){var i=r.legend;e[n]=i?jet(i):i}return e}),{})}},{key:"parseData",value:function(){this.component.data=Tbt(this)}},{key:"parseLayoutSize",value:function(){!function(t){var e,n=t.size,r=t.component,i=vbt(Qtt);try{for(i.s();!(e=i.n()).done;){var o=Vtt(e.value);if(n[o]){var a=n[o];r.layoutSize.set(o,$ct(a)?"step":a,!0)}else{var c=bbt(t,o);r.layoutSize.set(o,c,!1)}}}catch(l){i.e(l)}finally{i.f()}}(this)}},{key:"parseSelections",value:function(){this.component.selection=function(t,e){var n={},r=t.config.selection;if(!e||!e.length)return n;var i,o=wdt(e);try{for(o.s();!(i=o.n()).done;){var a=i.value,c=w9(a.name),l=a.select,u=Vb(l)?l:l.type,s=Yy(l)?J7(l):{type:u},f=r[u];for(var h in f){var d;"fields"!==h&&"encodings"!==h&&("mark"===h&&(s[h]=xdt(xdt({},f[h]),s[h])),(void 0===s[h]||!0===s[h])&&(s[h]=J7(null!==(d=f[h])&&void 0!==d?d:s[h])))}var p,v=n[c]=xdt(xdt({},s),{},{name:c,type:u,init:a.value,bind:a.bind,events:Vb(s.on)?t3(s.on,"scope"):bb(J7(s.on))}),g=J7(a),m=wdt(sdt);try{for(m.s();!(p=m.n()).done;){var y=p.value;y.defined(v)&&y.parse&&y.parse(t,v,g)}}catch(b){m.e(b)}finally{m.f()}}}catch(b){o.e(b)}finally{o.f()}return n}(this,this.selection)}},{key:"parseMarkGroup",value:function(){this.component.mark=jxt(this)}},{key:"parseAxesAndHeaders",value:function(){var t;this.component.axes=(t=this,Qtt.reduce((function(e,n){return t.component.scales[n]&&(e[n]=[txt(n,t)]),e}),{}))}},{key:"assembleSelectionTopLevelSignals",value:function(t){return function(t,e){var n,r,i=!1,o=Xst(y9(null!==(n=t.component.selection)&&void 0!==n?n:{}));try{var a=function(){var n=r.value,o=n.name,a=tx(o+adt),c=e.filter((function(t){return t.name===o}));if(0===c.length){var l="global"===n.resolve?"union":n.resolve,u="point"===n.type?", true, true)":")";e.push({name:n.name,update:"".concat(udt,"(").concat(a,", ").concat(tx(l)).concat(u)})}i=!0;var s,f=Xst(sdt);try{for(f.s();!(s=f.n()).done;){var h=s.value;h.defined(n)&&h.topLevelSignals&&(e=h.topLevelSignals(t,n,e))}}catch(d){f.e(d)}finally{f.f()}};for(o.s();!(r=o.n()).done;)a()}catch(l){o.e(l)}finally{o.f()}if(i){var c=e.filter((function(t){return"unit"===t.name}));0===c.length&&e.unshift({name:"unit",value:{},on:[{events:"mousemove",update:"isTuple(group()) ? group() : unit"}]})}return Jst(e)}(this,t)}},{key:"assembleSignals",value:function(){return[].concat((0,Xm.Z)(Idt(this)),(0,Xm.Z)(function(t,e){var n,r,i=Xst(y9(null!==(n=t.component.selection)&&void 0!==n?n:{}));try{for(i.s();!(r=i.n()).done;){var o,a=r.value,c=a.name,l="".concat(c).concat(cdt,", ").concat("global"===a.resolve?"true":"{unit: ".concat(fdt(t),"}")),u=Xst(sdt);try{for(u.s();!(o=u.n()).done;){var s=o.value;s.defined(a)&&(s.signals&&(e=s.signals(t,a,e)),s.modifyExpr&&(l=s.modifyExpr(t,a,l)))}}catch(f){u.e(f)}finally{u.f()}e.push({name:c+ldt,on:[{events:{signal:a.name+cdt},update:"modify(".concat(tx(a.name+adt),", ").concat(l,")")}]})}}catch(f){i.e(f)}finally{i.f()}return Jst(e)}(this,[])))}},{key:"assembleSelectionData",value:function(t){return function(t,e){var n,r,i=(0,Xm.Z)(e),o=fdt(t,{escape:!1}),a=Xst(y9(null!==(n=t.component.selection)&&void 0!==n?n:{}));try{var c=function(){var t=r.value,e={name:t.name+adt};if(t.project.hasSelectionId&&(e.transform=[{type:"collect",sort:{field:Zct}}]),t.init){var n=t.project.items.map(Yst);e.values=t.project.hasSelectionId?t.init.map((function(t){return(0,V.Z)({unit:o},Zct,$st(t,!1)[0])})):t.init.map((function(t){return{unit:o,fields:n,values:$st(t,!1)}}))}i.filter((function(e){return e.name===t.name+adt})).length||i.push(e)};for(a.s();!(r=a.n()).done;)c()}catch(l){a.e(l)}finally{a.f()}return i}(this,t)}},{key:"assembleLayout",value:function(){return null}},{key:"assembleLayoutSignals",value:function(){return ypt(this)}},{key:"assembleMarks",value:function(){var t,e=null!==(t=this.component.mark)&&void 0!==t?t:[];return this.parent&&syt(this.parent)||(e=Kst(this,e)),e.map(this.correctDataNames)}},{key:"assembleGroupStyle",value:function(){var t=(this.view||{}).style;return void 0!==t?t:this.encoding.x||this.encoding.y?"cell":"view"}},{key:"getMapping",value:function(){return this.encoding}},{key:"mark",get:function(){return this.markDef.type}},{key:"channelHasField",value:function(t){return Mat(this.encoding,t)}},{key:"fieldDef",value:function(t){return Qot(this.encoding[t])}},{key:"typedFieldDef",value:function(t){var e=this.fieldDef(t);return Rot(e)?e:null}}]),n}(hyt);function Vxt(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return Gxt(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Gxt(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Gxt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0&&!k){var C=Ybt[S];o[S]>o[C]&&x.set("orient",C,!1)}o[S]++}}}catch(_){b.e(_)}finally{b.f()}}delete g.component.axes[p]}}}catch(_){v.e(_)}finally{v.f()}if("independent"===i.axis[p]&&r[p]&&r[p].length>1){var O,E=Xbt((r[p]||[]).entries());try{for(E.s();!(O=E.n()).done;){var M=(0,G.Z)(O.value,2),A=M[0],P=M[1];A>0&&P.get("grid")&&!P.explicit.grid&&(P.implicit.grid=!1)}}catch(_){E.e(_)}finally{E.f()}}}}catch(_){h.e(_)}finally{h.f()}}(this)}},{key:"assembleSelectionTopLevelSignals",value:function(t){return this.children.reduce((function(t,e){return e.assembleSelectionTopLevelSignals(t)}),t)}},{key:"assembleSignals",value:function(){return this.children.reduce((function(t,e){return t.concat(e.assembleSignals())}),Idt(this))}},{key:"assembleLayoutSignals",value:function(){return this.children.reduce((function(t,e){return t.concat(e.assembleLayoutSignals())}),ypt(this))}},{key:"assembleSelectionData",value:function(t){return this.children.reduce((function(t,e){return e.assembleSelectionData(t)}),t)}},{key:"assembleGroupStyle",value:function(){var t,e=new Set,n=Vxt(this.children);try{for(n.s();!(t=n.n()).done;){var r,i=Vxt(bb(t.value.assembleGroupStyle()));try{for(i.s();!(r=i.n()).done;){var o=r.value;e.add(o)}}catch(c){i.e(c)}finally{i.f()}}}catch(c){n.e(c)}finally{n.f()}var a=Array.from(e);return a.length>1?a:1===a.length?a[0]:void 0}},{key:"assembleTitle",value:function(){var t=qZ((0,Um.Z)(n.prototype),"assembleTitle",this).call(this);if(t)return t;var e,r=Vxt(this.children);try{for(r.s();!(e=r.n()).done;){if(t=e.value.assembleTitle())return t}}catch(i){r.e(i)}finally{r.f()}}},{key:"assembleLayout",value:function(){return null}},{key:"assembleMarks",value:function(){return function(t,e){var n,r=Xst(t.children);try{for(r.s();!(n=r.n()).done;){var i=n.value;cyt(i)&&(e=Kst(i,e))}}catch(o){r.e(o)}finally{r.f()}return e}(this,this.children.flatMap((function(t){return t.assembleMarks()})))}},{key:"assembleLegends",value:function(){return this.children.reduce((function(t,e){return t.concat(e.assembleLegends())}),nvt(this))}}]),n}(fyt);function Kxt(t,e,n,r,i){if(vot(t))return new Ebt(t,e,n,i);if(xlt(t))return new $xt(t,e,n,r,i);if(xat(t))return new Wxt(t,e,n,r,i);if(function(t){return Vct(t)||Gct(t)||Wct(t)}(t))return new Lbt(t,e,n,i);throw new Error(gnt(t))}var Jxt=["params"];function Qxt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function twt(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:{};n.logger&&(e=n.logger,qnt=e),n.fieldTitle&&qot(n.fieldTitle);try{var r=plt(Ky(n.config,t.config)),i=mst(t,r),o=Kxt(i,null,"",void 0,r);o.parse(),function(t,e){emt(t.sources);for(var n=0,r=0,i=0;i2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3?arguments[3]:void 0,i=t.config?ylt(t.config):void 0,o=[].concat(t.assembleSelectionData([]),function(t,e){var n,r=[],i=lbt(r),o=0,a=ibt(t.sources);try{for(a.s();!(n=a.n()).done;){var c=n.value;c.hasName()||(c.dataName="source_".concat(o++));var l=c.assemble();i(c,l)}}catch(A){a.e(A)}finally{a.f()}for(var u=0,s=r;u0?{projections:a}:{}),t.assembleGroup([].concat((0,Xm.Z)(s),(0,Xm.Z)(t.assembleSelectionTopLevelSignals([])),(0,Xm.Z)(Hct(f))))),i?{config:i}:{}),r?{usermeta:r}:{})}(o,function(t,e,n,r){var i=r.component.layoutSize.get("width"),o=r.component.layoutSize.get("height");void 0===e?(e={type:"pad"},r.hasAxisOrientSignalRef()&&(e.resize=!0)):Vb(e)&&(e={type:e});if(i&&o&&(l=e.type,"fit"===l||"fit-x"===l||"fit-y"===l))if("step"===i&&"step"===o)$nt(xnt()),e.type="pad";else if("step"===i||"step"===o){var a="step"===i?"width":"height";$nt(xnt(ret(a)));var c="width"===a?"height":"width";e.type=function(t){return t?"fit-".concat(ret(t)):"fit"}(c)}var l;return twt(twt(twt({},1===m9(e).length&&e.type?"pad"===e.type?{}:{autosize:e.type}:{autosize:e}),Ost(n,!1)),Ost(t,!0))}(t,i.autosize,r,o),t.datasets,t.usermeta);return{spec:a,normalized:i}}finally{n.logger&&Ynt(),n.fieldTitle&&qot(Got)}}var nwt="5.14.1";var rwt=function(t){var e=/schema\/([\w-]+)\/([\w\.\-]+)\.json$/g.exec(t).slice(1,3),n=(0,G.Z)(e,2);return{library:n[0],version:n[1]}},iwt="2.14.0",owt="#fff",awt="#888",cwt={background:"#333",view:{stroke:awt},title:{color:owt,subtitleColor:owt},style:{"guide-label":{fill:owt},"guide-title":{fill:owt}},axis:{domainColor:owt,gridColor:awt,tickColor:owt}},lwt="#4572a7",uwt={background:"#fff",arc:{fill:lwt},area:{fill:lwt},line:{stroke:lwt,strokeWidth:2},path:{stroke:lwt},rect:{fill:lwt},shape:{stroke:lwt},symbol:{fill:lwt,strokeWidth:1.5,size:50},axis:{bandPosition:.5,grid:!0,gridColor:"#000000",gridOpacity:1,gridWidth:.5,labelPadding:10,tickSize:5,tickWidth:.5},axisBand:{grid:!1,tickExtra:!0},legend:{labelBaseline:"middle",labelFontSize:11,symbolSize:50,symbolType:"square"},range:{category:["#4572a7","#aa4643","#8aa453","#71598e","#4598ae","#d98445","#94aace","#d09393","#b9cc98","#a99cbc"]}},swt="#30a2da",fwt="#cbcbcb",hwt="#f0f0f0",dwt="#333",pwt={arc:{fill:swt},area:{fill:swt},axis:{domainColor:fwt,grid:!0,gridColor:fwt,gridWidth:1,labelColor:"#999",labelFontSize:10,titleColor:"#333",tickColor:fwt,tickSize:10,titleFontSize:14,titlePadding:10,labelPadding:4},axisBand:{grid:!1},background:hwt,group:{fill:hwt},legend:{labelColor:dwt,labelFontSize:11,padding:1,symbolSize:30,symbolType:"square",titleColor:dwt,titleFontSize:14,titlePadding:10},line:{stroke:swt,strokeWidth:2},path:{stroke:swt,strokeWidth:.5},rect:{fill:swt},range:{category:["#30a2da","#fc4f30","#e5ae38","#6d904f","#8b8b8b","#b96db8","#ff9e27","#56cc60","#52d2ca","#52689e","#545454","#9fe4f8"],diverging:["#cc0020","#e77866","#f6e7e1","#d6e8ed","#91bfd9","#1d78b5"],heatmap:["#d6e8ed","#cee0e5","#91bfd9","#549cc6","#1d78b5"]},point:{filled:!0,shape:"circle"},shape:{stroke:swt},bar:{binSpacing:2,fill:swt,stroke:null},title:{anchor:"start",fontSize:24,fontWeight:600,offset:20}},vwt="#000",gwt={group:{fill:"#e5e5e5"},arc:{fill:vwt},area:{fill:vwt},line:{stroke:vwt},path:{stroke:vwt},rect:{fill:vwt},shape:{stroke:vwt},symbol:{fill:vwt,size:40},axis:{domain:!1,grid:!0,gridColor:"#FFFFFF",gridOpacity:1,labelColor:"#7F7F7F",labelPadding:4,tickColor:"#7F7F7F",tickSize:5.67,titleFontSize:16,titleFontWeight:"normal"},legend:{labelBaseline:"middle",labelFontSize:11,symbolSize:40},range:{category:["#000000","#7F7F7F","#1A1A1A","#999999","#333333","#B0B0B0","#4D4D4D","#C9C9C9","#666666","#DCDCDC"]}},mwt="Benton Gothic, sans-serif",ywt="#82c6df",bwt="Benton Gothic Bold, sans-serif",xwt="normal",wwt={"category-6":["#ec8431","#829eb1","#c89d29","#3580b1","#adc839","#ab7fb4"],"fire-7":["#fbf2c7","#f9e39c","#f8d36e","#f4bb6a","#e68a4f","#d15a40","#ab4232"],"fireandice-6":["#e68a4f","#f4bb6a","#f9e39c","#dadfe2","#a6b7c6","#849eae"],"ice-7":["#edefee","#dadfe2","#c4ccd2","#a6b7c6","#849eae","#607785","#47525d"]},Swt={background:"#ffffff",title:{anchor:"start",color:"#000000",font:bwt,fontSize:22,fontWeight:"normal"},arc:{fill:ywt},area:{fill:ywt},line:{stroke:ywt,strokeWidth:2},path:{stroke:ywt},rect:{fill:ywt},shape:{stroke:ywt},symbol:{fill:ywt,size:30},axis:{labelFont:mwt,labelFontSize:11.5,labelFontWeight:"normal",titleFont:bwt,titleFontSize:13,titleFontWeight:xwt},axisX:{labelAngle:0,labelPadding:4,tickSize:3},axisY:{labelBaseline:"middle",maxExtent:45,minExtent:45,tickSize:2,titleAlign:"left",titleAngle:0,titleX:-45,titleY:-11},legend:{labelFont:mwt,labelFontSize:11.5,symbolType:"square",titleFont:bwt,titleFontSize:13,titleFontWeight:xwt},range:{category:wwt["category-6"],diverging:wwt["fireandice-6"],heatmap:wwt["fire-7"],ordinal:wwt["fire-7"],ramp:wwt["fire-7"]}},kwt="#ab5787",Cwt="#979797",Owt={background:"#f9f9f9",arc:{fill:kwt},area:{fill:kwt},line:{stroke:kwt},path:{stroke:kwt},rect:{fill:kwt},shape:{stroke:kwt},symbol:{fill:kwt,size:30},axis:{domainColor:Cwt,domainWidth:.5,gridWidth:.2,labelColor:Cwt,tickColor:Cwt,tickWidth:.2,titleColor:Cwt},axisBand:{grid:!1},axisX:{grid:!0,tickSize:10},axisY:{domain:!1,grid:!0,tickSize:0},legend:{labelFontSize:11,padding:1,symbolSize:30,symbolType:"square"},range:{category:["#ab5787","#51b2e5","#703c5c","#168dd9","#d190b6","#00609f","#d365ba","#154866","#666666","#c4c4c4"]}},Ewt="#3e5c69",Mwt={background:"#fff",arc:{fill:Ewt},area:{fill:Ewt},line:{stroke:Ewt},path:{stroke:Ewt},rect:{fill:Ewt},shape:{stroke:Ewt},symbol:{fill:Ewt},axis:{domainWidth:.5,grid:!0,labelPadding:2,tickSize:5,tickWidth:.5,titleFontWeight:"normal"},axisBand:{grid:!1},axisX:{gridWidth:.2},axisY:{gridDash:[3],gridWidth:.4},legend:{labelFontSize:11,padding:1,symbolType:"square"},range:{category:["#3e5c69","#6793a6","#182429","#0570b0","#3690c0","#74a9cf","#a6bddb","#e2ddf2"]}},Awt="#1696d2",Pwt="#000000",_wt="Lato",Dwt="Lato",Twt={"main-colors":["#1696d2","#d2d2d2","#000000","#fdbf11","#ec008b","#55b748","#5c5859","#db2b27"],"shades-blue":["#CFE8F3","#A2D4EC","#73BFE2","#46ABDB","#1696D2","#12719E","#0A4C6A","#062635"],"shades-gray":["#F5F5F5","#ECECEC","#E3E3E3","#DCDBDB","#D2D2D2","#9D9D9D","#696969","#353535"],"shades-yellow":["#FFF2CF","#FCE39E","#FDD870","#FCCB41","#FDBF11","#E88E2D","#CA5800","#843215"],"shades-magenta":["#F5CBDF","#EB99C2","#E46AA7","#E54096","#EC008B","#AF1F6B","#761548","#351123"],"shades-green":["#DCEDD9","#BCDEB4","#98CF90","#78C26D","#55B748","#408941","#2C5C2D","#1A2E19"],"shades-black":["#D5D5D4","#ADABAC","#848081","#5C5859","#332D2F","#262223","#1A1717","#0E0C0D"],"shades-red":["#F8D5D4","#F1AAA9","#E9807D","#E25552","#DB2B27","#A4201D","#6E1614","#370B0A"],"one-group":["#1696d2","#000000"],"two-groups-cat-1":["#1696d2","#000000"],"two-groups-cat-2":["#1696d2","#fdbf11"],"two-groups-cat-3":["#1696d2","#db2b27"],"two-groups-seq":["#a2d4ec","#1696d2"],"three-groups-cat":["#1696d2","#fdbf11","#000000"],"three-groups-seq":["#a2d4ec","#1696d2","#0a4c6a"],"four-groups-cat-1":["#000000","#d2d2d2","#fdbf11","#1696d2"],"four-groups-cat-2":["#1696d2","#ec0008b","#fdbf11","#5c5859"],"four-groups-seq":["#cfe8f3","#73bf42","#1696d2","#0a4c6a"],"five-groups-cat-1":["#1696d2","#fdbf11","#d2d2d2","#ec008b","#000000"],"five-groups-cat-2":["#1696d2","#0a4c6a","#d2d2d2","#fdbf11","#332d2f"],"five-groups-seq":["#cfe8f3","#73bf42","#1696d2","#0a4c6a","#000000"],"six-groups-cat-1":["#1696d2","#ec008b","#fdbf11","#000000","#d2d2d2","#55b748"],"six-groups-cat-2":["#1696d2","#d2d2d2","#ec008b","#fdbf11","#332d2f","#0a4c6a"],"six-groups-seq":["#cfe8f3","#a2d4ec","#73bfe2","#46abdb","#1696d2","#12719e"],"diverging-colors":["#ca5800","#fdbf11","#fdd870","#fff2cf","#cfe8f3","#73bfe2","#1696d2","#0a4c6a"]},Zwt={background:"#FFFFFF",title:{anchor:"start",fontSize:18,font:_wt},axisX:{domain:!0,domainColor:Pwt,domainWidth:1,grid:!1,labelFontSize:12,labelFont:Dwt,labelAngle:0,tickColor:Pwt,tickSize:5,titleFontSize:12,titlePadding:10,titleFont:_wt},axisY:{domain:!1,domainWidth:1,grid:!0,gridColor:"#DEDDDD",gridWidth:1,labelFontSize:12,labelFont:Dwt,labelPadding:8,ticks:!1,titleFontSize:12,titlePadding:10,titleFont:_wt,titleAngle:0,titleY:-10,titleX:18},legend:{labelFontSize:12,labelFont:Dwt,symbolSize:100,titleFontSize:12,titlePadding:10,titleFont:_wt,orient:"right",offset:10},view:{stroke:"transparent"},range:{category:Twt["six-groups-cat-1"],diverging:Twt["diverging-colors"],heatmap:Twt["diverging-colors"],ordinal:Twt["six-groups-seq"],ramp:Twt["shades-blue"]},area:{fill:Awt},rect:{fill:Awt},line:{color:Awt,stroke:Awt,strokeWidth:5},trail:{color:Awt,stroke:Awt,strokeWidth:0,size:1},path:{stroke:Awt,strokeWidth:.5},point:{filled:!0},text:{font:"Lato",color:Awt,fontSize:11,align:"center",fontWeight:400,size:11},style:{bar:{fill:Awt,stroke:null}},arc:{fill:Awt},shape:{stroke:Awt},symbol:{fill:Awt,size:30}},Fwt="#3366CC",jwt="#ccc",Iwt="Arial, sans-serif",Rwt={arc:{fill:Fwt},area:{fill:Fwt},path:{stroke:Fwt},rect:{fill:Fwt},shape:{stroke:Fwt},symbol:{stroke:Fwt},circle:{fill:Fwt},background:"#fff",padding:{top:10,right:10,bottom:10,left:10},style:{"guide-label":{font:Iwt,fontSize:12},"guide-title":{font:Iwt,fontSize:12},"group-title":{font:Iwt,fontSize:12}},title:{font:Iwt,fontSize:14,fontWeight:"bold",dy:-3,anchor:"start"},axis:{gridColor:jwt,tickColor:jwt,domain:!1,grid:!0},range:{category:["#4285F4","#DB4437","#F4B400","#0F9D58","#AB47BC","#00ACC1","#FF7043","#9E9D24","#5C6BC0","#F06292","#00796B","#C2185B"],heatmap:["#c6dafc","#5e97f6","#2a56c6"]}},Lwt=function(t){return t*(1/3+1)},Nwt=Lwt(9),Bwt=Lwt(10),zwt=Lwt(12),Uwt="Segoe UI",Hwt="wf_standard-font, helvetica, arial, sans-serif",Wwt="#252423",Vwt="#605E5C",Gwt="transparent",Xwt="#118DFF",qwt="#DEEFFF",Ywt=[qwt,Xwt],$wt={view:{stroke:Gwt},background:Gwt,font:Uwt,header:{titleFont:Hwt,titleFontSize:zwt,titleColor:Wwt,labelFont:Uwt,labelFontSize:Bwt,labelColor:Vwt},axis:{ticks:!1,grid:!1,domain:!1,labelColor:Vwt,labelFontSize:Nwt,titleFont:Hwt,titleColor:Wwt,titleFontSize:zwt,titleFontWeight:"normal"},axisQuantitative:{tickCount:3,grid:!0,gridColor:"#C8C6C4",gridDash:[1,5],labelFlush:!1},axisBand:{tickExtra:!0},axisX:{labelPadding:5},axisY:{labelPadding:10},bar:{fill:Xwt},line:{stroke:Xwt,strokeWidth:3,strokeCap:"round",strokeJoin:"round"},text:{font:Uwt,fontSize:Nwt,fill:Vwt},arc:{fill:Xwt},area:{fill:Xwt,line:!0,opacity:.6},path:{stroke:Xwt},rect:{fill:Xwt},point:{fill:Xwt,filled:!0,size:75},shape:{stroke:Xwt},symbol:{fill:Xwt,strokeWidth:1.5,size:50},legend:{titleFont:Uwt,titleFontWeight:"bold",titleColor:Vwt,labelFont:Uwt,labelFontSize:Bwt,labelColor:Vwt,symbolType:"circle",symbolSize:75},range:{category:[Xwt,"#12239E","#E66C37","#6B007B","#E044A7","#744EC2","#D9B300","#D64550"],diverging:Ywt,heatmap:Ywt,ordinal:[qwt,"#c7e4ff","#b0d9ff","#9aceff","#83c3ff","#6cb9ff","#55aeff","#3fa3ff","#2898ff",Xwt]}},Kwt='IBM Plex Sans,system-ui,-apple-system,BlinkMacSystemFont,".sfnstext-regular",sans-serif',Jwt=["#8a3ffc","#33b1ff","#007d79","#ff7eb6","#fa4d56","#fff1f1","#6fdc8c","#4589ff","#d12771","#d2a106","#08bdba","#bae6ff","#ba4e00","#d4bbff"],Qwt=["#6929c4","#1192e8","#005d5d","#9f1853","#fa4d56","#570408","#198038","#002d9c","#ee538b","#b28600","#009d9a","#012749","#8a3800","#a56eff"];function tSt(t){var e=t.type,n="dark"===e?"#161616":"#ffffff",r="dark"===e?"#f4f4f4":"#161616",i="dark"===e?"#d4bbff":"#6929c4";return{background:t.background,arc:{fill:i},area:{fill:i},path:{stroke:i},rect:{fill:i},shape:{stroke:i},symbol:{stroke:i},circle:{fill:i},view:{fill:n,stroke:n},group:{fill:n},title:{color:r,anchor:"start",dy:-15,fontSize:16,font:Kwt,fontWeight:600},axis:{labelColor:r,labelFontSize:12,grid:!0,gridColor:"#525252",titleColor:r,labelAngle:0},style:{"guide-label":{font:Kwt,fill:r,fontWeight:400},"guide-title":{font:Kwt,fill:r,fontWeight:400}},range:{category:"dark"===e?Jwt:Qwt,diverging:["#750e13","#a2191f","#da1e28","#fa4d56","#ff8389","#ffb3b8","#ffd7d9","#fff1f1","#e5f6ff","#bae6ff","#82cfff","#33b1ff","#1192e8","#0072c3","#00539a","#003a6d"],heatmap:["#f6f2ff","#e8daff","#d4bbff","#be95ff","#a56eff","#8a3ffc","#6929c4","#491d8b","#31135e","#1c0f30"]}}}var eSt=tSt({type:"light",background:"#ffffff"}),nSt=tSt({type:"light",background:"#f4f4f4"}),rSt=tSt({type:"dark",background:"#262626"}),iSt=tSt({type:"dark",background:"#161616"}),oSt=iwt;function aSt(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return cSt(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return cSt(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function cSt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=0||(i[n]=t[n]);return i}(t,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(i[n]=t[n])}return i}var hSt=["title","image"];function dSt(t,e){return JSON.stringify(t,function(t){var e=[];return function(n,r){if("object"!=typeof r||null===r)return r;var i=e.indexOf(this)+1;return e.length=i,e.length>t?"[Object]":e.indexOf(r)>=0?"[Circular]":(e.push(r),r)}}(e))}var pSt="vg-tooltip-element",vSt={offsetX:10,offsetY:10,id:pSt,styleId:"vega-tooltip-style",theme:"light",disableDefaultStyle:!1,sanitize:function(t){return String(t).replace(/&/g,"&").replace(/".concat(e(o),"")),a&&(r+=''));var l=Object.keys(c);if(l.length>0){r+="";var u,s=aSt(l);try{for(s.s();!(u=s.n()).done;){var f=u.value,h=c[f];void 0!==h&&(Yy(h)&&(h=dSt(h,n)),r+='"))}}catch(d){s.e(d)}finally{s.f()}r+="
'.concat(e(f),':').concat(e(h),"
"}return r||"{}"}return e(t)}};function gSt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function mSt(t){for(var e=1;e0?i.insertBefore(r,i.childNodes[0]):i.appendChild(r)}}return(0,Lm.Z)(t,[{key:"tooltipHandler",value:function(t,e,n,r){var i;(this.el=document.getElementById(this.options.id),this.el)||(this.el=document.createElement("div"),this.el.setAttribute("id",this.options.id),this.el.classList.add("vg-tooltip"),(null!==(i=document.fullscreenElement)&&void 0!==i?i:document.body).appendChild(this.el));if(null!=r&&""!==r){this.el.innerHTML=this.options.formatTooltip(r,this.options.sanitize,this.options.maxDepth),this.el.classList.add("visible","".concat(this.options.theme,"-theme"));var o=function(t,e,n,r){var i=t.clientX+n;i+e.width>window.innerWidth&&(i=+t.clientX-n-e.width);var o=t.clientY+r;return o+e.height>window.innerHeight&&(o=+t.clientY-r-e.height),{x:i,y:o}}(e,this.el.getBoundingClientRect(),this.options.offsetX,this.options.offsetY),a=o.x,c=o.y;this.el.style.top="".concat(c,"px"),this.el.style.left="".concat(a,"px")}else this.el.classList.remove("visible","".concat(this.options.theme,"-theme"))}}]),t}();function SSt(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return kSt(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return kSt(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function kSt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0)for(var n=0,r=arguments.length;n1)n=e;else{if(!this.head)throw new TypeError("Reduce of empty list with no initial value");r=this.head.next,n=this.head.value}for(var i=0;null!==r;i++)n=t(n,r.value,i),r=r.next;return n},PSt.prototype.reduceReverse=function(t,e){var n,r=this.tail;if(arguments.length>1)n=e;else{if(!this.tail)throw new TypeError("Reduce of empty list with no initial value");r=this.tail.prev,n=this.tail.value}for(var i=this.length-1;null!==r;i--)n=t(n,r.value,i),r=r.prev;return n},PSt.prototype.toArray=function(){for(var t=new Array(this.length),e=0,n=this.head;null!==n;e++)t[e]=n.value,n=n.next;return t},PSt.prototype.toArrayReverse=function(){for(var t=new Array(this.length),e=0,n=this.tail;null!==n;e++)t[e]=n.value,n=n.prev;return t},PSt.prototype.slice=function(t,e){(e=e||this.length)<0&&(e+=this.length),(t=t||0)<0&&(t+=this.length);var n=new PSt;if(ethis.length&&(e=this.length);for(var r=0,i=this.head;null!==i&&rthis.length&&(e=this.length);for(var r=this.length,i=this.tail;null!==i&&r>e;r--)i=i.prev;for(;null!==i&&r>t;r--,i=i.prev)n.push(i.value);return n},PSt.prototype.splice=function(t,e){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);for(var n=0,r=this.head;null!==r&&nthis[jSt])return $St(this,this[HSt].get(t)),!1;var o=this[HSt].get(t).value;return this[BSt]&&(this[zSt]||this[BSt](t,o.value)),o.now=r,o.maxAge=n,o.value=e,this[ISt]+=i-o.length,o.length=i,this.get(t),YSt(this),!0}var a=new KSt(t,e,i,r,n);return a.length>this[jSt]?(this[BSt]&&this[BSt](t,e),!1):(this[ISt]+=a.length,this[USt].unshift(a),this[HSt].set(t,this[USt].head),YSt(this),!0)}},{key:"has",value:function(t){if(!this[HSt].has(t))return!1;var e=this[HSt].get(t).value;return!qSt(this,e)}},{key:"get",value:function(t){return XSt(this,t,!0)}},{key:"peek",value:function(t){return XSt(this,t,!1)}},{key:"pop",value:function(){var t=this[USt].tail;return t?($St(this,t),t.value):null}},{key:"del",value:function(t){$St(this,this[HSt].get(t))}},{key:"load",value:function(t){this.reset();for(var e=Date.now(),n=t.length-1;n>=0;n--){var r=t[n],i=r.e||0;if(0===i)this.set(r.k,r.v);else{var o=i-e;o>0&&this.set(r.k,r.v,o)}}}},{key:"prune",value:function(){var t=this;this[HSt].forEach((function(e,n){return XSt(t,n,!1)}))}}]),t}(),XSt=function(t,e,n){var r=t[HSt].get(e);if(r){var i=r.value;if(qSt(t,i)){if($St(t,r),!t[LSt])return}else n&&(t[WSt]&&(r.value.now=Date.now()),t[USt].unshiftNode(r));return i.value}},qSt=function(t,e){if(!e||!e.maxAge&&!t[NSt])return!1;var n=Date.now()-e.now;return e.maxAge?n>e.maxAge:t[NSt]&&n>t[NSt]},YSt=function(t){if(t[ISt]>t[jSt])for(var e=t[USt].tail;t[ISt]>t[jSt]&&null!==e;){var n=e.prev;$St(t,e),e=n}},$St=function(t,e){if(e){var n=e.value;t[BSt]&&t[BSt](n.key,n.value),t[ISt]-=n.length,t[HSt].delete(n.key),t[USt].removeNode(e)}},KSt=(0,Lm.Z)((function t(e,n,r,i,o){(0,Rm.Z)(this,t),this.key=e,this.value=n,this.length=r,this.now=i,this.maxAge=o||0})),JSt=function(t,e,n,r){var i=n.value;qSt(t,i)&&($St(t,n),t[LSt]||(i=void 0)),i&&e.call(r,i.value,i.key,t)},QSt=GSt,tkt=Object.freeze({loose:!0}),ekt=Object.freeze({}),nkt=function(t){return t?"object"!=typeof t?tkt:t:ekt},rkt={exports:{}},ikt={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_BUILD_LENGTH:250,MAX_SAFE_INTEGER:Number.MAX_SAFE_INTEGER||9007199254740991,RELEASE_TYPES:["major","premajor","minor","preminor","patch","prepatch","prerelease"],SEMVER_SPEC_VERSION:"2.0.0",FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2},okt="object"==typeof process&&{}.NODE_DEBUG&&/\bsemver\b/i.test({}.NODE_DEBUG)?function(){for(var t,e=arguments.length,n=new Array(e),r=0;r)?=?)"),d("XRANGEIDENTIFIERLOOSE","".concat(l[u.NUMERICIDENTIFIERLOOSE],"|x|X|\\*")),d("XRANGEIDENTIFIER","".concat(l[u.NUMERICIDENTIFIER],"|x|X|\\*")),d("XRANGEPLAIN","[v=\\s]*(".concat(l[u.XRANGEIDENTIFIER],")")+"(?:\\.(".concat(l[u.XRANGEIDENTIFIER],")")+"(?:\\.(".concat(l[u.XRANGEIDENTIFIER],")")+"(?:".concat(l[u.PRERELEASE],")?").concat(l[u.BUILD],"?")+")?)?"),d("XRANGEPLAINLOOSE","[v=\\s]*(".concat(l[u.XRANGEIDENTIFIERLOOSE],")")+"(?:\\.(".concat(l[u.XRANGEIDENTIFIERLOOSE],")")+"(?:\\.(".concat(l[u.XRANGEIDENTIFIERLOOSE],")")+"(?:".concat(l[u.PRERELEASELOOSE],")?").concat(l[u.BUILD],"?")+")?)?"),d("XRANGE","^".concat(l[u.GTLT],"\\s*").concat(l[u.XRANGEPLAIN],"$")),d("XRANGELOOSE","^".concat(l[u.GTLT],"\\s*").concat(l[u.XRANGEPLAINLOOSE],"$")),d("COERCE","".concat("(^|[^\\d])(\\d{1,").concat(n,"})")+"(?:\\.(\\d{1,".concat(n,"}))?")+"(?:\\.(\\d{1,".concat(n,"}))?")+"(?:$|[^\\d])"),d("COERCERTL",l[u.COERCE],!0),d("LONETILDE","(?:~>?)"),d("TILDETRIM","(\\s*)".concat(l[u.LONETILDE],"\\s+"),!0),e.tildeTrimReplace="$1~",d("TILDE","^".concat(l[u.LONETILDE]).concat(l[u.XRANGEPLAIN],"$")),d("TILDELOOSE","^".concat(l[u.LONETILDE]).concat(l[u.XRANGEPLAINLOOSE],"$")),d("LONECARET","(?:\\^)"),d("CARETTRIM","(\\s*)".concat(l[u.LONECARET],"\\s+"),!0),e.caretTrimReplace="$1^",d("CARET","^".concat(l[u.LONECARET]).concat(l[u.XRANGEPLAIN],"$")),d("CARETLOOSE","^".concat(l[u.LONECARET]).concat(l[u.XRANGEPLAINLOOSE],"$")),d("COMPARATORLOOSE","^".concat(l[u.GTLT],"\\s*(").concat(l[u.LOOSEPLAIN],")$|^$")),d("COMPARATOR","^".concat(l[u.GTLT],"\\s*(").concat(l[u.FULLPLAIN],")$|^$")),d("COMPARATORTRIM","(\\s*)".concat(l[u.GTLT],"\\s*(").concat(l[u.LOOSEPLAIN],"|").concat(l[u.XRANGEPLAIN],")"),!0),e.comparatorTrimReplace="$1$2$3",d("HYPHENRANGE","^\\s*(".concat(l[u.XRANGEPLAIN],")")+"\\s+-\\s+"+"(".concat(l[u.XRANGEPLAIN],")")+"\\s*$"),d("HYPHENRANGELOOSE","^\\s*(".concat(l[u.XRANGEPLAINLOOSE],")")+"\\s+-\\s+"+"(".concat(l[u.XRANGEPLAINLOOSE],")")+"\\s*$"),d("STAR","(<|>)?=?\\s*\\*"),d("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),d("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")}(rkt,rkt.exports);var ckt,lkt,ukt,skt,fkt=rkt.exports,hkt=/^[0-9]+$/,dkt=function(t,e){var n=hkt.test(t),r=hkt.test(e);return n&&r&&(t=+t,e=+e),t===e?0:n&&!r?-1:r&&!n?1:tgkt)throw new TypeError("version is longer than ".concat(gkt," characters"));vkt("SemVer",e,n),this.options=n,this.loose=!!n.loose,this.includePrerelease=!!n.includePrerelease;var r=e.trim().match(n.loose?ykt[bkt.LOOSE]:ykt[bkt.FULL]);if(!r)throw new TypeError("Invalid Version: ".concat(e));if(this.raw=e,this.major=+r[1],this.minor=+r[2],this.patch=+r[3],this.major>mkt||this.major<0)throw new TypeError("Invalid major version");if(this.minor>mkt||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>mkt||this.patch<0)throw new TypeError("Invalid patch version");r[4]?this.prerelease=r[4].split(".").map((function(t){if(/^[0-9]+$/.test(t)){var e=+t;if(e>=0&&e=0;)"number"==typeof this.prerelease[i]&&(this.prerelease[i]++,i=-2);if(-1===i){if(e===this.prerelease.join(".")&&!1===n)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(r)}}if(e){var o=[e,r];!1===n&&(o=[e]),0===wkt(this.prerelease[0],e)?isNaN(this.prerelease[1])&&(this.prerelease=o):this.prerelease=o}break;default:throw new Error("invalid increment argument: ".concat(t))}return this.raw=this.format(),this.build.length&&(this.raw+="+".concat(this.build.join("."))),this}}]),t}(),kkt=Skt,Ckt=kkt,Okt=function(t,e,n){return new Ckt(t,n).compare(new Ckt(e,n))},Ekt=Okt,Mkt=function(t,e,n){return 0===Ekt(t,e,n)},Akt=Okt,Pkt=function(t,e,n){return 0!==Akt(t,e,n)},_kt=Okt,Dkt=function(t,e,n){return _kt(t,e,n)>0},Tkt=Okt,Zkt=function(t,e,n){return Tkt(t,e,n)>=0},Fkt=Okt,jkt=function(t,e,n){return Fkt(t,e,n)<0},Ikt=Okt,Rkt=function(t,e,n){return Ikt(t,e,n)<=0},Lkt=Mkt,Nkt=Pkt,Bkt=Dkt,zkt=Zkt,Ukt=jkt,Hkt=Rkt,Wkt=function(t,e,n,r){switch(e){case"===":return"object"==typeof t&&(t=t.version),"object"==typeof n&&(n=n.version),t===n;case"!==":return"object"==typeof t&&(t=t.version),"object"==typeof n&&(n=n.version),t!==n;case"":case"=":case"==":return Lkt(t,n,r);case"!=":return Nkt(t,n,r);case">":return Bkt(t,n,r);case">=":return zkt(t,n,r);case"<":return Ukt(t,n,r);case"<=":return Hkt(t,n,r);default:throw new TypeError("Invalid operator: ".concat(e))}};function Vkt(){if(skt)return ukt;skt=1;var t=function(){function t(e,i){var o=this;if((0,Rm.Z)(this,t),i=n(i),e instanceof t)return e.loose===!!i.loose&&e.includePrerelease===!!i.includePrerelease?e:new t(e.raw,i);if(e instanceof r)return this.raw=e.value,this.set=[[e]],this.format(),this;if(this.options=i,this.loose=!!i.loose,this.includePrerelease=!!i.includePrerelease,this.raw=e.trim().split(/\s+/).join(" "),this.set=this.raw.split("||").map((function(t){return o.parseRange(t.trim())})).filter((function(t){return t.length})),!this.set.length)throw new TypeError("Invalid SemVer Range: ".concat(this.raw));if(this.set.length>1){var a=this.set[0];if(this.set=this.set.filter((function(t){return!d(t[0])})),0===this.set.length)this.set=[a];else if(this.set.length>1){var c,l=SSt(this.set);try{for(l.s();!(c=l.n()).done;){var u=c.value;if(1===u.length&&p(u[0])){this.set=[u];break}}}catch(s){l.e(s)}finally{l.f()}}}this.format()}return(0,Lm.Z)(t,[{key:"format",value:function(){return this.range=this.set.map((function(t){return t.join(" ").trim()})).join("||").trim(),this.range}},{key:"toString",value:function(){return this.range}},{key:"parseRange",value:function(t){var n=this,o=((this.options.includePrerelease&&f)|(this.options.loose&&h))+":"+t,p=e.get(o);if(p)return p;var v=this.options.loose,m=v?a[c.HYPHENRANGELOOSE]:a[c.HYPHENRANGE];t=t.replace(m,E(this.options.includePrerelease)),i("hyphen replace",t),t=t.replace(a[c.COMPARATORTRIM],l),i("comparator trim",t),t=t.replace(a[c.TILDETRIM],u),i("tilde trim",t),t=t.replace(a[c.CARETTRIM],s),i("caret trim",t);var y=t.split(" ").map((function(t){return g(t,n.options)})).join(" ").split(/\s+/).map((function(t){return O(t,n.options)}));v&&(y=y.filter((function(t){return i("loose invalid filter",t,n.options),!!t.match(a[c.COMPARATORLOOSE])}))),i("range list",y);var b,x=new Map,w=y.map((function(t){return new r(t,n.options)})),S=SSt(w);try{for(S.s();!(b=S.n()).done;){var k=b.value;if(d(k))return[k];x.set(k.value,k)}}catch(M){S.e(M)}finally{S.f()}x.size>1&&x.has("")&&x.delete("");var C=(0,Xm.Z)(x.values());return e.set(o,C),C}},{key:"intersects",value:function(e,n){if(!(e instanceof t))throw new TypeError("a Range is required");return this.set.some((function(t){return v(t,n)&&e.set.some((function(e){return v(e,n)&&t.every((function(t){return e.every((function(e){return t.intersects(e,n)}))}))}))}))}},{key:"test",value:function(t){if(!t)return!1;if("string"==typeof t)try{t=new o(t,this.options)}catch(j2t){return!1}for(var e=0;e")||!t.operator.startsWith(">"))&&(!this.operator.startsWith("<")||!t.operator.startsWith("<"))&&(this.semver.version!==t.semver.version||!this.operator.includes("=")||!t.operator.includes("="))&&!(o(this.semver,"<",t.semver,r)&&this.operator.startsWith(">")&&t.operator.startsWith("<"))&&!(o(this.semver,">",t.semver,r)&&this.operator.startsWith("<")&&t.operator.startsWith(">")))}}],[{key:"ANY",get:function(){return t}}]),e}();ckt=e;var n=nkt,r=fkt.safeRe,i=fkt.t,o=Wkt,a=akt,c=kkt,l=Vkt();return ckt}(),i=akt,o=kkt,a=fkt.safeRe,c=fkt.t,l=fkt.comparatorTrimReplace,u=fkt.tildeTrimReplace,s=fkt.caretTrimReplace,f=ikt.FLAG_INCLUDE_PRERELEASE,h=ikt.FLAG_LOOSE,d=function(t){return"<0.0.0-0"===t.value},p=function(t){return""===t.value},v=function(t,e){for(var n=!0,r=t.slice(),i=r.pop();n&&r.length;)n=r.every((function(t){return i.intersects(t,e)})),i=r.pop();return n},g=function(t,e){return i("comp",t,e),t=x(t,e),i("caret",t),t=y(t,e),i("tildes",t),t=S(t,e),i("xrange",t),t=C(t,e),i("stars",t),t},m=function(t){return!t||"x"===t.toLowerCase()||"*"===t},y=function(t,e){return t.trim().split(/\s+/).map((function(t){return b(t,e)})).join(" ")},b=function(t,e){var n=e.loose?a[c.TILDELOOSE]:a[c.TILDE];return t.replace(n,(function(e,n,r,o,a){var c;return i("tilde",t,e,n,r,o,a),m(n)?c="":m(r)?c=">=".concat(n,".0.0 <").concat(+n+1,".0.0-0"):m(o)?c=">=".concat(n,".").concat(r,".0 <").concat(n,".").concat(+r+1,".0-0"):a?(i("replaceTilde pr",a),c=">=".concat(n,".").concat(r,".").concat(o,"-").concat(a," <").concat(n,".").concat(+r+1,".0-0")):c=">=".concat(n,".").concat(r,".").concat(o," <").concat(n,".").concat(+r+1,".0-0"),i("tilde return",c),c}))},x=function(t,e){return t.trim().split(/\s+/).map((function(t){return w(t,e)})).join(" ")},w=function(t,e){i("caret",t,e);var n=e.loose?a[c.CARETLOOSE]:a[c.CARET],r=e.includePrerelease?"-0":"";return t.replace(n,(function(e,n,o,a,c){var l;return i("caret",t,e,n,o,a,c),m(n)?l="":m(o)?l=">=".concat(n,".0.0").concat(r," <").concat(+n+1,".0.0-0"):m(a)?l="0"===n?">=".concat(n,".").concat(o,".0").concat(r," <").concat(n,".").concat(+o+1,".0-0"):">=".concat(n,".").concat(o,".0").concat(r," <").concat(+n+1,".0.0-0"):c?(i("replaceCaret pr",c),l="0"===n?"0"===o?">=".concat(n,".").concat(o,".").concat(a,"-").concat(c," <").concat(n,".").concat(o,".").concat(+a+1,"-0"):">=".concat(n,".").concat(o,".").concat(a,"-").concat(c," <").concat(n,".").concat(+o+1,".0-0"):">=".concat(n,".").concat(o,".").concat(a,"-").concat(c," <").concat(+n+1,".0.0-0")):(i("no pr"),l="0"===n?"0"===o?">=".concat(n,".").concat(o,".").concat(a).concat(r," <").concat(n,".").concat(o,".").concat(+a+1,"-0"):">=".concat(n,".").concat(o,".").concat(a).concat(r," <").concat(n,".").concat(+o+1,".0-0"):">=".concat(n,".").concat(o,".").concat(a," <").concat(+n+1,".0.0-0")),i("caret return",l),l}))},S=function(t,e){return i("replaceXRanges",t,e),t.split(/\s+/).map((function(t){return k(t,e)})).join(" ")},k=function(t,e){t=t.trim();var n=e.loose?a[c.XRANGELOOSE]:a[c.XRANGE];return t.replace(n,(function(n,r,o,a,c,l){i("xRange",t,n,r,o,a,c,l);var u=m(o),s=u||m(a),f=s||m(c),h=f;return"="===r&&h&&(r=""),l=e.includePrerelease?"-0":"",u?n=">"===r||"<"===r?"<0.0.0-0":"*":r&&h?(s&&(a=0),c=0,">"===r?(r=">=",s?(o=+o+1,a=0,c=0):(a=+a+1,c=0)):"<="===r&&(r="<",s?o=+o+1:a=+a+1),"<"===r&&(l="-0"),n="".concat(r+o,".").concat(a,".").concat(c).concat(l)):s?n=">=".concat(o,".0.0").concat(l," <").concat(+o+1,".0.0-0"):f&&(n=">=".concat(o,".").concat(a,".0").concat(l," <").concat(o,".").concat(+a+1,".0-0")),i("xRange return",n),n}))},C=function(t,e){return i("replaceStars",t,e),t.trim().replace(a[c.STAR],"")},O=function(t,e){return i("replaceGTE0",t,e),t.trim().replace(a[e.includePrerelease?c.GTE0PRE:c.GTE0],"")},E=function(t){return function(e,n,r,i,o,a,c,l,u,s,f,h,d){return n=m(r)?"":m(i)?">=".concat(r,".0.0").concat(t?"-0":""):m(o)?">=".concat(r,".").concat(i,".0").concat(t?"-0":""):a?">=".concat(n):">=".concat(n).concat(t?"-0":""),l=m(u)?"":m(s)?"<".concat(+u+1,".0.0-0"):m(f)?"<".concat(u,".").concat(+s+1,".0-0"):h?"<=".concat(u,".").concat(s,".").concat(f,"-").concat(h):t?"<".concat(u,".").concat(s,".").concat(+f+1,"-0"):"<=".concat(l),"".concat(n," ").concat(l).trim()}},M=function(t,e,n){for(var o=0;o0){var c=t[a].semver;if(c.major===e.major&&c.minor===e.minor&&c.patch===e.patch)return!0}return!1}return!0};return ukt}var Gkt=Vkt(),Xkt=function(t,e,n){try{e=new Gkt(e,n)}catch(j2t){return!1}return e.test(t)},qkt=MSt(Xkt);function Ykt(t,e,n){var r=t.open(e),i=new URL(e).origin,o=40;t.addEventListener("message",(function e(n){n.source===r&&(o=0,t.removeEventListener("message",e,!1))}),!1),setTimeout((function t(){o<=0||(r.postMessage(n,i),setTimeout(t,250),o-=1)}),250)}var $kt='.vega-embed {\n position: relative;\n display: inline-block;\n box-sizing: border-box;\n}\n.vega-embed.has-actions {\n padding-right: 38px;\n}\n.vega-embed details:not([open]) > :not(summary) {\n display: none !important;\n}\n.vega-embed summary {\n list-style: none;\n position: absolute;\n top: 0;\n right: 0;\n padding: 6px;\n z-index: 1000;\n background: white;\n box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.1);\n color: #1b1e23;\n border: 1px solid #aaa;\n border-radius: 999px;\n opacity: 0.2;\n transition: opacity 0.4s ease-in;\n cursor: pointer;\n line-height: 0px;\n}\n.vega-embed summary::-webkit-details-marker {\n display: none;\n}\n.vega-embed summary:active {\n box-shadow: #aaa 0px 0px 0px 1px inset;\n}\n.vega-embed summary svg {\n width: 14px;\n height: 14px;\n}\n.vega-embed details[open] summary {\n opacity: 0.7;\n}\n.vega-embed:hover summary, .vega-embed:focus-within summary {\n opacity: 1 !important;\n transition: opacity 0.2s ease;\n}\n.vega-embed .vega-actions {\n position: absolute;\n z-index: 1001;\n top: 35px;\n right: -9px;\n display: flex;\n flex-direction: column;\n padding-bottom: 8px;\n padding-top: 8px;\n border-radius: 4px;\n box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.2);\n border: 1px solid #d9d9d9;\n background: white;\n animation-duration: 0.15s;\n animation-name: scale-in;\n animation-timing-function: cubic-bezier(0.2, 0, 0.13, 1.5);\n text-align: left;\n}\n.vega-embed .vega-actions a {\n padding: 8px 16px;\n font-family: sans-serif;\n font-size: 14px;\n font-weight: 600;\n white-space: nowrap;\n color: #434a56;\n text-decoration: none;\n}\n.vega-embed .vega-actions a:hover, .vega-embed .vega-actions a:focus {\n background-color: #f7f7f9;\n color: black;\n}\n.vega-embed .vega-actions::before, .vega-embed .vega-actions::after {\n content: "";\n display: inline-block;\n position: absolute;\n}\n.vega-embed .vega-actions::before {\n left: auto;\n right: 14px;\n top: -16px;\n border: 8px solid rgba(0, 0, 0, 0);\n border-bottom-color: #d9d9d9;\n}\n.vega-embed .vega-actions::after {\n left: auto;\n right: 15px;\n top: -14px;\n border: 7px solid rgba(0, 0, 0, 0);\n border-bottom-color: #fff;\n}\n.vega-embed .chart-wrapper.fit-x {\n width: 100%;\n}\n.vega-embed .chart-wrapper.fit-y {\n height: 100%;\n}\n\n.vega-embed-wrapper {\n max-width: 100%;\n overflow: auto;\n padding-right: 14px;\n}\n\n@keyframes scale-in {\n from {\n opacity: 0;\n transform: scale(0.6);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n';function Kkt(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;r
'),o="
".concat(n,""),a=window.open("");a.document.write(i+t+o),a.document.title="".concat(aCt[r]," JSON Source")}function dCt(t,e){if(t.$schema){var n,r=rwt(t.$schema);if(e&&e!==r.library)console.warn("The given visualization spec is written in ".concat(aCt[r.library],", but mode argument sets ").concat(null!==(n=aCt[e])&&void 0!==n?n:e,"."));var i=r.library;return qkt(cCt[i],"^".concat(r.version.slice(1)))||console.warn("The input spec uses ".concat(aCt[i]," ").concat(r.version,", but the current version of ").concat(aCt[i]," is v").concat(cCt[i],".")),i}return"mark"in t||"encoding"in t||"layer"in t||"hconcat"in t||"vconcat"in t||"facet"in t||"repeat"in t?"vega-lite":"marks"in t||"signals"in t||"scales"in t||"axes"in t?"vega":null!=e?e:"vega"}function pCt(t){return(e=t)&&"load"in e?t:eCt.loader(t);var e}function vCt(t){var e,n,r=null!==(e=null===(n=t.usermeta)||void 0===n?void 0:n.embedOptions)&&void 0!==e?e:{};return Vb(r.defaultStyle)&&(r.defaultStyle=!1),r}function gCt(){return gCt=Gm(q().mark((function t(e,n){var r,i,o,a,c,l,u,s,f,h,d,p=arguments;return q().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(o=p.length>2&&void 0!==p[2]?p[2]:{},!Vb(n)){t.next=10;break}return c=pCt(o.loader),t.t0=JSON,t.next=6,c.load(n);case 6:t.t1=t.sent,a=t.t0.parse.call(t.t0,t.t1),t.next=11;break;case 10:a=n;case 11:return l=vCt(a),u=l.loader,c&&!u||(c=pCt(null!==(s=o.loader)&&void 0!==s?s:u)),t.next=16,mCt(l,c);case 16:return f=t.sent,t.next=19,mCt(o,c);case 19:return h=t.sent,d=tCt(tCt({},Kkt(h,f)),{},{config:Ky(null!==(r=h.config)&&void 0!==r?r:{},null!==(i=f.config)&&void 0!==i?i:{})}),t.next=23,xCt(e,a,d,c);case 23:return t.abrupt("return",t.sent);case 24:case"end":return t.stop()}}),t)}))),gCt.apply(this,arguments)}function mCt(t,e){return yCt.apply(this,arguments)}function yCt(){return yCt=Gm(q().mark((function t(e,n){var r,i,o;return q().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!Vb(e.config)){t.next=8;break}return t.t1=JSON,t.next=4,n.load(e.config);case 4:t.t2=t.sent,t.t0=t.t1.parse.call(t.t1,t.t2),t.next=9;break;case 8:t.t0=null!==(r=e.config)&&void 0!==r?r:{};case 9:if(i=t.t0,!Vb(e.patch)){t.next=18;break}return t.t4=JSON,t.next=14,n.load(e.patch);case 14:t.t5=t.sent,t.t3=t.t4.parse.call(t.t4,t.t5),t.next=19;break;case 18:t.t3=e.patch;case 19:return o=t.t3,t.abrupt("return",tCt(tCt(tCt({},e),o?{patch:o}:{}),i?{config:i}:{}));case 21:case"end":return t.stop()}}),t)}))),yCt.apply(this,arguments)}function bCt(t){var e,n=t.getRootNode?t.getRootNode():document;return n instanceof ShadowRoot?{root:n,rootContainer:n}:{root:document,rootContainer:null!==(e=document.head)&&void 0!==e?e:document.body}}function xCt(t,e){return wCt.apply(this,arguments)}function wCt(){return wCt=Gm(q().mark((function t(e,n){var r,i,o,a,c,l,u,s,f,h,d,p,v,g,m,y,x,w,S,k,C,O,E,M,A,P,_,D,T,Z,F,j,I,R,L,N,B,z,U,H,W,V,G,X,Y,$,K,J,Q,tt,et,nt=arguments;return q().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(et=function(){z&&document.removeEventListener("click",z),j.finalize()},f=nt.length>3?nt[3]:void 0,h=(s=nt.length>2&&void 0!==nt[2]?nt[2]:{}).theme?Ky(b[s.theme],null!==(r=s.config)&&void 0!==r?r:{}):s.config,d=Bb(s.actions)?s.actions:Kkt({},iCt,null!==(i=s.actions)&&void 0!==i?i:{}),p=tCt(tCt({},oCt),s.i18n),v=null!==(o=s.renderer)&&void 0!==o?o:"canvas",g=null!==(a=s.logLevel)&&void 0!==a?a:eCt.Warn,m=null!==(c=s.downloadFileName)&&void 0!==c?c:"visualization",y="string"==typeof e?document.querySelector(e):e){t.next=12;break}throw new Error("".concat(e," does not exist"));case 12:if(!1!==s.defaultStyle&&(x="vega-embed-style",w=bCt(y),S=w.root,k=w.rootContainer,S.getElementById(x)||((C=document.createElement("style")).id=x,C.innerHTML=void 0===s.defaultStyle||!0===s.defaultStyle?$kt.toString():s.defaultStyle,k.appendChild(C))),O=dCt(n,s.mode),E=lCt[O](n,h),"vega-lite"===O&&E.$schema&&(M=rwt(E.$schema),qkt(cCt.vega,"^".concat(M.version.slice(1)))||console.warn("The compiled spec uses Vega ".concat(M.version,", but current version is v").concat(cCt.vega,"."))),y.classList.add("vega-embed"),d&&y.classList.add("has-actions"),y.innerHTML="",A=y,d&&((P=document.createElement("div")).classList.add(sCt),y.appendChild(P),A=P),(_=s.patch)&&(E=_ instanceof Function?_(E):fy(E,_,!0,!1).newDocument),s.formatLocale&&eCt.formatLocale(s.formatLocale),s.timeFormatLocale&&eCt.timeFormatLocale(s.timeFormatLocale),s.expressionFunctions)for(D in s.expressionFunctions)"fn"in(T=s.expressionFunctions[D])?eCt.expressionFunction(D,T.fn,T.visitor):T instanceof Function&&eCt.expressionFunction(D,T);return Z=s.ast,F=eCt.parse(E,"vega-lite"===O?{}:h,{ast:Z}),(j=new(s.viewClass||eCt.View)(F,tCt({loader:f,logLevel:g,renderer:v},Z?{expr:null!==(l=null!==(u=eCt.expressionInterpreter)&&void 0!==u?u:s.expr)&&void 0!==l?l:F7}:{}))).addSignalListener("autosize",(function(t,e){var n=e.type;"fit-x"==n?(A.classList.add("fit-x"),A.classList.remove("fit-y")):"fit-y"==n?(A.classList.remove("fit-x"),A.classList.add("fit-y")):"fit"==n?A.classList.add("fit-x","fit-y"):A.classList.remove("fit-x","fit-y")})),!1!==s.tooltip&&(I=fCt(s.tooltip)?s.tooltip:new wSt(!0===s.tooltip?{}:s.tooltip).call,j.tooltip(I)),void 0===(R=s.hover)&&(R="vega"===O),R&&(N=(L="boolean"==typeof R?{}:R).hoverSet,B=L.updateSet,j.hover(N,B)),s&&(null!=s.width&&j.width(s.width),null!=s.height&&j.height(s.height),null!=s.padding&&j.padding(s.padding)),t.next=37,j.initialize(A,s.bind).runAsync();case 37:if(!1===d){t.next=54;break}if(U=y,!1!==s.defaultStyle&&((H=document.createElement("details")).title=p.CLICK_TO_VIEW_ACTIONS,y.append(H),U=H,(W=document.createElement("summary")).innerHTML=uCt,H.append(W),z=function(t){H.contains(t.target)||H.removeAttribute("open")},document.addEventListener("click",z)),V=document.createElement("div"),U.append(V),V.classList.add("vega-actions"),!0!==d&&!1===d.export){t.next=51;break}G=q().mark((function t(){var e,n,r,i;return q().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:e=Y[X],(!0===d||!0===d.export||d.export[e])&&(n=p["".concat(e.toUpperCase(),"_ACTION")],r=document.createElement("a"),i=Yy(s.scaleFactor)?s.scaleFactor[e]:s.scaleFactor,r.text=n,r.href="#",r.target="_blank",r.download="".concat(m,".").concat(e),r.addEventListener("mousedown",function(){var t=Gm(q().mark((function t(n){var r;return q().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n.preventDefault(),t.next=3,j.toImageURL(e,i);case 3:r=t.sent,this.href=r;case 5:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}()),V.append(r));case 2:case"end":return t.stop()}}),t)})),X=0,Y=["svg","png"];case 46:if(!(X0}function ACt(t,e){var n=Object.keys(e);return n.forEach((function(n){try{t.removeSignalListener(n,e[n])}catch(r){console.warn("Cannot remove invalid signal listener.",r)}})),n.length>0}function PCt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function _Ct(t){for(var e=1;e0&&this.vegaEmbed.current.modifyView((function(e){SCt(e,t),e.resize().run()}))}},{key:"render",value:function(){var t=this.props,e=(t.data,(0,I.Z)(t,ICt));return Z.createElement(jCt,LCt({ref:this.vegaEmbed},e,{onNewView:this.handleNewView}))}}]),n}(Z.PureComponent);NCt(BCt,"defaultProps",{data:{}});var zCt=n(45107),UCt=function(t){var e=t.raster,n=t.library,r=t.goal,i=Z.useState(!1),o=i[0],a=i[1];return Z.createElement("div",null,e&&Z.createElement("div",{className:"border rounded bg-white"},Z.createElement("img",{role:"button",onClick:function(){a(!0)},style:{height:"390px"},src:"data:image/png;base64,"+e,className:"rounded object-fit bg-white p-2 pt-4",alt:"chart"})),!e&&Z.createElement("div",{style:{minWidth:"200px"}}," ",Z.createElement(zCt.Z,{className:"w-5 h-5 text-orange-400 inline-block"})," ","No visualization image generated."),Z.createElement(Ss,{title:Z.createElement(Z.Fragment,null,Z.createElement("span",{className:"capitalize"},n)," Chart"),open:o,onOk:function(){a(!1)},onCancel:function(){a(!1)},width:800},Z.createElement("div",{className:"mb-2"},null==r?void 0:r.question),Z.createElement("div",{className:"mb-4 text-secondary"},null==r?void 0:r.rationale),Z.createElement("img",{style:{width:"100%",height:"100%"},src:"data:image/png;base64,"+e,className:"rounded object-fit p-2 pt-4 bg-white",alt:"chart"})))},HCt=["title","titleId"];var WCt=Z.forwardRef((function(t,e){var n=t.title,r=t.titleId,i=(0,I.Z)(t,HCt);return Z.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true",ref:e,"aria-labelledby":r},i),n?Z.createElement("title",{id:r},n):null,Z.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M17.25 6.75L22.5 12l-5.25 5.25m-10.5 0L1.5 12l5.25-5.25m7.5-3l-4.5 16.5"}))})),VCt=function(t){var e=t.spec,n=t.code,r=t.error,i=t.status,o=[];return null!==e&&o.push({label:Z.createElement("div",null," ",Z.createElement(rl,{className:"inline-block h-4"})," Vega-Lite Spec"),key:"1",children:Z.createElement("div",{className:"w-full overflow-hidden"},Z.createElement(Cs.d,{code:JSON.stringify(e,null,2),language:"javascript",wrapLines:!0,maxHeight:"280px"}))}),o.push({label:Z.createElement("div",null," ",Z.createElement(WCt,{className:"inline-block h-4"})," Python Code"),key:"2",children:Z.createElement("div",{className:"w-full overflow-hidden"},Z.createElement(Cs.d,{code:n,language:"python",wrapLines:!0,maxHeight:"280px"}))}),!1===i&&r&&o.push({label:Z.createElement("div",{className:""}," ",Z.createElement(zCt.Z,{className:"inline-block h-4 text-orange-400"})," ","Error"),key:"3",children:Z.createElement("div",{className:"w-full overflow-hidden"},Z.createElement("div",{className:"text-xs mb-2 text-primary mt-2 "}," Error Message "),Z.createElement(Cs.d,{code:r.message,language:"javascript",wrapLines:!0}),Z.createElement("div",{className:"text-xs mb-2 text-primary mt-2"}," Traceback "),Z.createElement(Cs.d,{code:r.traceback,language:"javascript",wrapLines:!0}))}),Z.createElement("div",{className:"w-full p-3 border rounded text-primary "},Z.createElement(Im,{defaultActiveKey:"1",onChange:function(){},items:o}))},GCt=function(t){var e=t.vizData,n=t.vizConfig,r=Z.useState(!1),i=r[0],o=r[1],a=Z.useState(null),c=(a[0],a[1]),l=Z.useState([]),u=l[0],s=l[1],f=Z.useRef(null);Z.useEffect((function(){s([])}),[e]);var h=null==u?void 0:u.map((function(t,e){var n="accessibility"===t.section;return Z.createElement("div",{className:"mb-4",key:"explanationsrow"+e},Z.createElement("div",{className:"font-semibold text-lg"}," ",t.section),Z.createElement("div",{className:"flex gap-4"},Z.createElement("div",{className:(n?"":" w-1/2")+" "},t.explanation),!n&&Z.createElement("div",{className:"w-1/2"},Z.createElement(Cs.d,{code:""+t.code,language:"python",wrapLines:!0}))))}));return Z.createElement("div",{className:"text-primary"},Z.createElement("div",{onClick:function(){return function(){c(null),o(!0),s([]),setTimeout((function(){(0,N.kI)(f)}),600);var t={method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({code:e.code,library:n.library,textgen_config:n.textgen_config})};(0,N.ZV)("/api/visualize/explain",t,(function(t){t&&t.status?(console.log("Explanation data",t),s(t.explanations),kc.success(t.message),setTimeout((function(){(0,N.kI)(f)}),400)):(kc.error(t.message),c(t)),o(!1)}),(function(t){kc.error(t.message),o(!1),c(t)}))}()},role:"button",className:"px-5 bg-accent duration-300 hover:brightness-110 text-white inline-block rounded p-2 "+(i?"opacity-50 pointer-events-none":"")+" "},!i&&Z.createElement(nv.Z,{className:"w-5 h-5 mr-1 inline-block"}),i&&Z.createElement(ks.rH,{className:"text-white inline-block"})," Explain the chart."),i&&Z.createElement("div",{className:"mt-4"},Z.createElement(ks.rH,{className:"text-accent",subtitle:"loading explanations .."}),Z.createElement(Gc,{active:!0,className:"mt-4",paragraph:{rows:12}})),Z.createElement("div",{ref:f,className:"mt-4"},h))},XCt=n(11005),qCt=["title","titleId"];var YCt,$Ct,KCt,JCt=Z.forwardRef((function(t,e){var n=t.title,r=t.titleId,i=(0,I.Z)(t,qCt);return Z.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",ref:e,"aria-labelledby":r},i),n?Z.createElement("title",{id:r},n):null,Z.createElement("path",{fillRule:"evenodd",d:"M10.788 3.21c.448-1.077 1.976-1.077 2.424 0l2.082 5.007 5.404.433c1.164.093 1.636 1.545.749 2.305l-4.117 3.527 1.257 5.273c.271 1.136-.964 2.033-1.96 1.425L12 18.354 7.373 21.18c-.996.608-2.231-.29-1.96-1.425l1.257-5.273-4.117-3.527c-.887-.76-.415-2.212.749-2.305l5.404-.433 2.082-5.006z",clipRule:"evenodd"}))})),QCt=n(70903),tOt=n(90326);!function(t){t.FORE="fore",t.MID="mid",t.BG="bg"}(YCt||(YCt={})),function(t){t.TOP="top",t.TOP_LEFT="top-left",t.TOP_RIGHT="top-right",t.RIGHT="right",t.RIGHT_TOP="right-top",t.RIGHT_BOTTOM="right-bottom",t.LEFT="left",t.LEFT_TOP="left-top",t.LEFT_BOTTOM="left-bottom",t.BOTTOM="bottom",t.BOTTOM_LEFT="bottom-left",t.BOTTOM_RIGHT="bottom-right",t.RADIUS="radius",t.CIRCLE="circle",t.NONE="none"}($Ct||($Ct={})),function(t){t.AXIS="axis",t.GRID="grid",t.LEGEND="legend",t.TOOLTIP="tooltip",t.ANNOTATION="annotation",t.SLIDER="slider",t.SCROLLBAR="scrollbar",t.OTHER="other"}(KCt||(KCt={}));var eOt,nOt,rOt,iOt,oOt=3,aOt=2,cOt=1;!function(t){t.BEFORE_RENDER="beforerender",t.AFTER_RENDER="afterrender",t.BEFORE_PAINT="beforepaint",t.AFTER_PAINT="afterpaint",t.BEFORE_CHANGE_DATA="beforechangedata",t.AFTER_CHANGE_DATA="afterchangedata",t.BEFORE_CLEAR="beforeclear",t.AFTER_CLEAR="afterclear",t.BEFORE_DESTROY="beforedestroy",t.BEFORE_CHANGE_SIZE="beforechangesize",t.AFTER_CHANGE_SIZE="afterchangesize"}(eOt||(eOt={})),function(t){t.BEFORE_DRAW_ANIMATE="beforeanimate",t.AFTER_DRAW_ANIMATE="afteranimate",t.BEFORE_RENDER_LABEL="beforerenderlabel",t.AFTER_RENDER_LABEL="afterrenderlabel"}(nOt||(nOt={})),function(t){t.MOUSE_ENTER="plot:mouseenter",t.MOUSE_DOWN="plot:mousedown",t.MOUSE_MOVE="plot:mousemove",t.MOUSE_UP="plot:mouseup",t.MOUSE_LEAVE="plot:mouseleave",t.TOUCH_START="plot:touchstart",t.TOUCH_MOVE="plot:touchmove",t.TOUCH_END="plot:touchend",t.TOUCH_CANCEL="plot:touchcancel",t.CLICK="plot:click",t.DBLCLICK="plot:dblclick",t.CONTEXTMENU="plot:contextmenu",t.LEAVE="plot:leave",t.ENTER="plot:enter"}(rOt||(rOt={})),function(t){t.ACTIVE="active",t.INACTIVE="inactive",t.SELECTED="selected",t.DEFAULT="default"}(iOt||(iOt={}));var lOt,uOt,sOt,fOt,hOt=["color","shape","size"],dOt="_origin",pOt={};function vOt(t,e){pOt[t]=e}function gOt(t){lOt||(lOt=document.createElement("table"),uOt=document.createElement("tr"),sOt=/^\s*<(\w+|!)[^>]*>/,fOt={tr:document.createElement("tbody"),tbody:lOt,thead:lOt,tfoot:lOt,td:uOt,th:uOt,"*":document.createElement("div")});var e=sOt.test(t)&&RegExp.$1;e&&e in fOt||(e="*");var n=fOt[e];t="string"==typeof t?t.replace(/(^\s*)|(\s*$)/g,""):t,n.innerHTML=""+t;var r=n.childNodes[0];return r&&n.contains(r)&&n.removeChild(r),r}function mOt(t,e){if(t)for(var n in e)e.hasOwnProperty(n)&&(t.style[n]=e[n]);return t}function yOt(t){return"number"==typeof t&&!isNaN(t)}function bOt(t,e,n,r){var i=n,o=r;if(e){var a=function(t){var e=getComputedStyle(t);return{width:(t.clientWidth||parseInt(e.width,10))-parseInt(e.paddingLeft,10)-parseInt(e.paddingRight,10),height:(t.clientHeight||parseInt(e.height,10))-parseInt(e.paddingTop,10)-parseInt(e.paddingBottom,10)}}(t);i=a.width?a.width:i,o=a.height?a.height:o}return{width:Math.max(yOt(i)?i:1,1),height:Math.max(yOt(o)?o:1,1)}}var xOt=n(81819),wOt=function(t){function e(e){var n=t.call(this)||this;n.destroyed=!1;var r=e.visible,i=void 0===r||r;return n.visible=i,n}return(0,QCt.ZT)(e,t),e.prototype.show=function(){this.visible||this.changeVisible(!0)},e.prototype.hide=function(){this.visible&&this.changeVisible(!1)},e.prototype.destroy=function(){this.off(),this.destroyed=!0},e.prototype.changeVisible=function(t){this.visible!==t&&(this.visible=t)},e}(xOt.Z),SOt=wOt,kOt=n(82854),COt=function(){function t(t){var e=t.xField,n=t.yField,r=t.adjustNames,i=void 0===r?["x","y"]:r,o=t.dimValuesMap;this.adjustNames=i,this.xField=e,this.yField=n,this.dimValuesMap=o}return t.prototype.isAdjust=function(t){return this.adjustNames.indexOf(t)>=0},t.prototype.getAdjustRange=function(t,e,n){var r,i,o=this.yField,a=n.indexOf(e),c=n.length;return!o&&this.isAdjust("y")?(r=0,i=1):c>1?(r=n[0===a?0:a-1],i=n[a===c-1?c-1:a+1],0!==a?r+=(e-r)/2:r-=(i-e)/2,a!==c-1?i-=(i-e)/2:i+=(e-n[c-2])/2):(r=0===e?0:e-.5,i=0===e?1:e+.5),{pre:r,next:i}},t.prototype.adjustData=function(t,e){var n=this,r=this.getDimValues(e);tOt.S6(t,(function(t,e){tOt.S6(r,(function(r,i){n.adjustDim(i,r,t,e)}))}))},t.prototype.groupData=function(t,e){return tOt.S6(t,(function(t){void 0===t[e]&&(t[e]=0)})),tOt.vM(t,e)},t.prototype.adjustDim=function(t,e,n,r){},t.prototype.getDimValues=function(t){var e=this.xField,n=this.yField,r=tOt.f0({},this.dimValuesMap),i=[];if(e&&this.isAdjust("x")&&i.push(e),n&&this.isAdjust("y")&&i.push(n),i.forEach((function(e){r&&r[e]||(r[e]=tOt.I(t,e).sort((function(t,e){return t-e})))})),!n&&this.isAdjust("y")){r.y=[0,1]}return r},t}(),OOt=COt,EOt={},MOt=function(t){return EOt[t.toLowerCase()]},AOt=function(t,e){if(MOt(t))throw new Error("Adjust type '"+t+"' existed.");EOt[t.toLowerCase()]=e},POt=function(t,e){return POt=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])},POt(t,e)};function _Ot(t,e){function n(){this.constructor=t}POt(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}var DOt=function(){return DOt=Object.assign||function(t){for(var e,n=1,r=arguments.length;n=0)r=u+this.getIntervalOnlyOffset(n,e);else if(!tOt.UM(l)&&tOt.UM(c)&&l>=0){r=u+this.getDodgeOnlyOffset(n,e)}else if(!tOt.UM(c)&&!tOt.UM(l)&&c>=0&&l>=0){r=u+this.getIntervalAndDodgeOffset(n,e)}else{var h=f*o/n,d=a*h;r=(u+s)/2+(.5*(f-n*h-(n-1)*d)+((e+1)*h+e*d)-.5*h-.5*f)}return r},e.prototype.getIntervalOnlyOffset=function(t,e){var n=this,r=n.defaultSize,i=n.intervalPadding,o=n.xDimensionLegenth,a=n.groupNum,c=n.dodgeRatio,l=n.maxColumnWidth,u=n.minColumnWidth,s=n.columnWidthRatio,f=i/o,h=(1-(a-1)*f)/a*c/(t-1),d=((1-f*(a-1))/a-h*(t-1))/t;if(d=tOt.UM(s)?d:1/a/t*s,!tOt.UM(l)){var p=l/o;d=Math.min(d,p)}if(!tOt.UM(u)){var v=u/o;d=Math.max(d,v)}return((.5+e)*(d=r?r/o:d)+e*(h=((1-(a-1)*f)/a-t*d)/(t-1))+.5*f)*a-f/2},e.prototype.getDodgeOnlyOffset=function(t,e){var n=this,r=n.defaultSize,i=n.dodgePadding,o=n.xDimensionLegenth,a=n.groupNum,c=n.marginRatio,l=n.maxColumnWidth,u=n.minColumnWidth,s=n.columnWidthRatio,f=i/o,h=1*c/(a-1),d=((1-h*(a-1))/a-f*(t-1))/t;if(d=s?1/a/t*s:d,!tOt.UM(l)){var p=l/o;d=Math.min(d,p)}if(!tOt.UM(u)){var v=u/o;d=Math.max(d,v)}return((.5+e)*(d=r?r/o:d)+e*f+.5*(h=(1-(d*t+f*(t-1))*a)/(a-1)))*a-h/2},e.prototype.getIntervalAndDodgeOffset=function(t,e){var n=this,r=n.intervalPadding,i=n.dodgePadding,o=n.xDimensionLegenth,a=n.groupNum,c=r/o,l=i/o;return((.5+e)*(((1-c*(a-1))/a-l*(t-1))/t)+e*l+.5*c)*a-c/2},e.prototype.getDistribution=function(t){var e=this.adjustDataArray,n=this.cacheMap,r=n[t];return r||(r={},tOt.S6(e,(function(e,n){var i=tOt.I(e,t);i.length||i.push(0),tOt.S6(i,(function(t){r[t]||(r[t]=[]),r[t].push(n)}))})),n[t]=r),r},e}(OOt),ZOt=TOt;var FOt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return _Ot(e,t),e.prototype.process=function(t){var e=tOt.d9(t),n=tOt.xH(e);return this.adjustData(e,n),e},e.prototype.adjustDim=function(t,e,n){var r=this,i=this.groupData(n,t);return tOt.S6(i,(function(n,i){return r.adjustGroup(n,t,parseFloat(i),e)}))},e.prototype.getAdjustOffset=function(t){var e=t.pre,n=t.next,r=.05*(n-e);return function(t,e){return(e-t)*Math.random()+t}(e+r,n-r)},e.prototype.adjustGroup=function(t,e,n,r){var i=this,o=this.getAdjustRange(e,n,r);return tOt.S6(t,(function(t){t[e]=i.getAdjustOffset(o)})),t},e}(OOt),jOt=FOt,IOt=tOt.Ct,ROt=function(t){function e(e){var n=t.call(this,e)||this,r=e.adjustNames,i=void 0===r?["y"]:r,o=e.height,a=void 0===o?NaN:o,c=e.size,l=void 0===c?10:c,u=e.reverseOrder,s=void 0!==u&&u;return n.adjustNames=i,n.height=a,n.size=l,n.reverseOrder=s,n}return _Ot(e,t),e.prototype.process=function(t){var e=this.yField,n=this.reverseOrder,r=e?this.processStack(t):this.processOneDimStack(t);return n?this.reverse(r):r},e.prototype.reverse=function(t){return t.slice(0).reverse()},e.prototype.processStack=function(t){var e=this,n=e.xField,r=e.yField,i=e.reverseOrder?this.reverse(t):t,o=new IOt,a=new IOt;return i.map((function(t){return t.map((function(t){var e,i=tOt.U2(t,n,0),c=tOt.U2(t,[r]),l=i.toString();if(c=tOt.kJ(c)?c[1]:c,!tOt.UM(c)){var u=c>=0?o:a;u.has(l)||u.set(l,0);var s=u.get(l),f=c+s;return u.set(l,f),DOt(DOt({},t),((e={})[r]=[s,f],e))}return t}))}))},e.prototype.processOneDimStack=function(t){var e=this,n=this,r=n.xField,i=n.height,o=n.reverseOrder,a=o?this.reverse(t):t,c=new IOt;return a.map((function(t){return t.map((function(t){var n,o=e.size,a=t[r],l=2*o/i;c.has(a)||c.set(a,l/2);var u=c.get(a);return c.set(a,u+l),DOt(DOt({},t),((n={}).y=u,n))}))}))},e}(OOt),LOt=ROt,NOt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return _Ot(e,t),e.prototype.process=function(t){var e=tOt.xH(t),n=this.xField,r=this.yField,i=this.getXValuesMaxMap(e),o=Math.max.apply(Math,Object.keys(i).map((function(t){return i[t]})));return tOt.UI(t,(function(t){return tOt.UI(t,(function(t){var e,a,c=t[r],l=t[n];if(tOt.kJ(c)){var u=(o-i[l])/2;return DOt(DOt({},t),((e={})[r]=tOt.UI(c,(function(t){return u+t})),e))}var s=(o-c)/2;return DOt(DOt({},t),((a={})[r]=[s,c+s],a))}))}))},e.prototype.getXValuesMaxMap=function(t){var e=this,n=this.xField,r=this.yField,i=tOt.vM(t,(function(t){return t[n]}));return tOt.Q8(i,(function(t){return e.getDimMaxValue(t,r)}))},e.prototype.getDimMaxValue=function(t,e){var n=tOt.UI(t,(function(t){return tOt.U2(t,e,[])})),r=tOt.xH(n);return Math.max.apply(Math,r)},e}(OOt),BOt=NOt;AOt("Dodge",ZOt),AOt("Jitter",jOt),AOt("Stack",LOt),AOt("Symmetric",BOt);var zOt=function(t,e){return(0,tOt.HD)(e)?e:t.invert(t.scale(e))},UOt=function(){function t(t){this.names=[],this.scales=[],this.linear=!1,this.values=[],this.callback=function(){return[]},this._parseCfg(t)}return t.prototype.mapping=function(){for(var t=this,e=[],n=0;n1?1:Number(e),r=t.length-1,i=Math.floor(r*n),o=r*n-i,a=t[i],c=i===r?a:t[i+1];return YOt([qOt(a,c,o,0),qOt(a,c,o,1),qOt(a,c,o,2)])}(n,t)}},toRGB:(0,tOt.HP)(QOt),toCSSGradient:function(t){if(/^[r,R,L,l]{1}[\s]*\(/.test(t)){var e,n=void 0;if("l"===t[0]){var r=+(i=VOt.exec(t))[1]+90;n=i[2],e="linear-gradient("+r+"deg, "}else if("r"===t[0]){var i;e="radial-gradient(",n=(i=GOt.exec(t))[4]}var o=n.match(XOt);return(0,tOt.S6)(o,(function(t,n){var r=t.split(":");e+=r[1]+" "+100*r[0]+"%",n!==o.length-1&&(e+=", ")})),e+=")"}return t}},eEt=function(t){function e(e){var n=t.call(this,e)||this;return n.type="color",n.names=["color"],(0,tOt.HD)(n.values)&&(n.linear=!0),n.gradient=tEt.gradient(n.values),n}return(0,QCt.ZT)(e,t),e.prototype.getLinearValue=function(t){return this.gradient(t)},e}(HOt),nEt=eEt,rEt=function(t){function e(e){var n=t.call(this,e)||this;return n.type="opacity",n.names=["opacity"],n}return(0,QCt.ZT)(e,t),e}(HOt),iEt=rEt,oEt=function(t){function e(e){var n=t.call(this,e)||this;return n.names=["x","y"],n.type="position",n}return(0,QCt.ZT)(e,t),e.prototype.mapping=function(t,e){var n=this.scales,r=n[0],i=n[1];return(0,tOt.UM)(t)||(0,tOt.UM)(e)?[]:[(0,tOt.kJ)(t)?t.map((function(t){return r.scale(t)})):r.scale(t),(0,tOt.kJ)(e)?e.map((function(t){return i.scale(t)})):i.scale(e)]},e}(HOt),aEt=oEt,cEt=function(t){function e(e){var n=t.call(this,e)||this;return n.type="shape",n.names=["shape"],n}return(0,QCt.ZT)(e,t),e.prototype.getLinearValue=function(t){var e=Math.round((this.values.length-1)*t);return this.values[e]},e}(HOt),lEt=cEt,uEt=function(t){function e(e){var n=t.call(this,e)||this;return n.type="size",n.names=["size"],n}return(0,QCt.ZT)(e,t),e}(HOt),sEt=uEt,fEt={};function hEt(t,e){fEt[t]=e}var dEt=function(){function t(t){this.type="base",this.isCategory=!1,this.isLinear=!1,this.isContinuous=!1,this.isIdentity=!1,this.values=[],this.range=[0,1],this.ticks=[],this.__cfg__=t,this.initCfg(),this.init()}return t.prototype.translate=function(t){return t},t.prototype.change=function(t){(0,tOt.f0)(this.__cfg__,t),this.init()},t.prototype.clone=function(){return this.constructor(this.__cfg__)},t.prototype.getTicks=function(){var t=this;return(0,tOt.UI)(this.ticks,(function(e,n){return(0,tOt.Kn)(e)?e:{text:t.getText(e,n),tickValue:e,value:t.scale(e)}}))},t.prototype.getText=function(t,e){var n=this.formatter,r=n?n(t,e):t;return(0,tOt.UM)(r)||!(0,tOt.mf)(r.toString)?"":r.toString()},t.prototype.getConfig=function(t){return this.__cfg__[t]},t.prototype.init=function(){(0,tOt.f0)(this,this.__cfg__),this.setDomain(),(0,tOt.xb)(this.getConfig("ticks"))&&(this.ticks=this.calculateTicks())},t.prototype.initCfg=function(){},t.prototype.setDomain=function(){},t.prototype.calculateTicks=function(){var t=this.tickMethod,e=[];if((0,tOt.HD)(t)){var n=function(t){return fEt[t]}(t);if(!n)throw new Error("There is no method to to calculate ticks!");e=n(this)}else(0,tOt.mf)(t)&&(e=t(this));return e},t.prototype.rangeMin=function(){return this.range[0]},t.prototype.rangeMax=function(){return this.range[1]},t.prototype.calcPercent=function(t,e,n){return(0,tOt.hj)(t)?(t-e)/(n-e):NaN},t.prototype.calcValue=function(t,e,n){return e+t*(n-e)},t}(),pEt=dEt,vEt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="cat",e.isCategory=!0,e}return(0,QCt.ZT)(e,t),e.prototype.buildIndexMap=function(){if(!this.translateIndexMap){this.translateIndexMap=new Map;for(var t=0;tthis.max?NaN:this.values[r]},e.prototype.getText=function(e){for(var n=[],r=1;r1?t-1:t}this.translateIndexMap&&(this.translateIndexMap=void 0)},e}(pEt),gEt=vEt,mEt=/d{1,4}|M{1,4}|YY(?:YY)?|S{1,3}|Do|ZZ|Z|([HhMsDm])\1?|[aA]|"[^"]*"|'[^']*'/g,yEt="\\d\\d?",bEt="\\d\\d",xEt="[^\\s]+",wEt=/\[([^]*?)\]/gm;function SEt(t,e){for(var n=[],r=0,i=t.length;r-1?i:null}};function CEt(t){for(var e=[],n=1;n3?0:(t-t%10!=10?1:0)*t%10]}},PEt=CEt({},AEt),_Et=function(t){return PEt=CEt(PEt,t)},DEt=function(t){return t.replace(/[|\\{()[^$+*?.-]/g,"\\$&")},TEt=function(t,e){for(void 0===e&&(e=2),t=String(t);t.length0?"-":"+")+TEt(100*Math.floor(Math.abs(e)/60)+Math.abs(e)%60,4)},Z:function(t){var e=t.getTimezoneOffset();return(e>0?"-":"+")+TEt(Math.floor(Math.abs(e)/60),2)+":"+TEt(Math.abs(e)%60,2)}},FEt=function(t){return+t-1},jEt=[null,yEt],IEt=[null,xEt],REt=["isPm",xEt,function(t,e){var n=t.toLowerCase();return n===e.amPm[0]?0:n===e.amPm[1]?1:null}],LEt=["timezoneOffset","[^\\s]*?[\\+\\-]\\d\\d:?\\d\\d|[^\\s]*?Z?",function(t){var e=(t+"").match(/([+-]|\d\d)/gi);if(e){var n=60*+e[1]+parseInt(e[2],10);return"+"===e[0]?n:-n}return 0}],NEt={D:["day",yEt],DD:["day",bEt],Do:["day",yEt+xEt,function(t){return parseInt(t,10)}],M:["month",yEt,FEt],MM:["month",bEt,FEt],YY:["year",bEt,function(t){var e=+(""+(new Date).getFullYear()).substr(0,2);return+(""+(+t>68?e-1:e)+t)}],h:["hour",yEt,void 0,"isPm"],hh:["hour",bEt,void 0,"isPm"],H:["hour",yEt],HH:["hour",bEt],m:["minute",yEt],mm:["minute",bEt],s:["second",yEt],ss:["second",bEt],YYYY:["year","\\d{4}"],S:["millisecond","\\d",function(t){return 100*+t}],SS:["millisecond",bEt,function(t){return 10*+t}],SSS:["millisecond","\\d{3}"],d:jEt,dd:jEt,ddd:IEt,dddd:IEt,MMM:["month",xEt,kEt("monthNamesShort")],MMMM:["month",xEt,kEt("monthNames")],a:REt,A:REt,ZZ:LEt,Z:LEt},BEt={default:"ddd MMM DD YYYY HH:mm:ss",shortDate:"M/D/YY",mediumDate:"MMM D, YYYY",longDate:"MMMM D, YYYY",fullDate:"dddd, MMMM D, YYYY",isoDate:"YYYY-MM-DD",isoDateTime:"YYYY-MM-DDTHH:mm:ssZ",shortTime:"HH:mm",mediumTime:"HH:mm:ss",longTime:"HH:mm:ss.SSS"},zEt=function(t){return CEt(BEt,t)},UEt=function(t,e,n){if(void 0===e&&(e=BEt.default),void 0===n&&(n={}),"number"==typeof t&&(t=new Date(t)),"[object Date]"!==Object.prototype.toString.call(t)||isNaN(t.getTime()))throw new Error("Invalid Date pass to format");e=BEt[e]||e;var r=[];e=e.replace(wEt,(function(t,e){return r.push(e),"@@@"}));var i=CEt(CEt({},PEt),n);return(e=e.replace(mEt,(function(e){return ZEt[e](t,i)}))).replace(/@@@/g,(function(){return r.shift()}))};function HEt(t,e,n){if(void 0===n&&(n={}),"string"!=typeof e)throw new Error("Invalid format in fecha parse");if(e=BEt[e]||e,t.length>1e3)return null;var r={year:(new Date).getFullYear(),month:0,day:1,hour:0,minute:0,second:0,millisecond:0,isPm:null,timezoneOffset:null},i=[],o=[],a=e.replace(wEt,(function(t,e){return o.push(DEt(e)),"@@@"})),c={},l={};a=DEt(a).replace(mEt,(function(t){var e=NEt[t],n=e[0],r=e[1],o=e[3];if(c[n])throw new Error("Invalid format. "+n+" specified twice in format");return c[n]=!0,o&&(l[o]=!0),i.push(e),"("+r+")"})),Object.keys(l).forEach((function(t){if(!c[t])throw new Error("Invalid format. "+t+" is required in specified format")})),a=a.replace(/@@@/g,(function(){return o.shift()}));var u=t.match(new RegExp(a,"i"));if(!u)return null;for(var s,f=CEt(CEt({},PEt),n),h=1;h11||r.month<0||r.day>31||r.day<1||r.hour>23||r.hour<0||r.minute>59||r.minute<0||r.second>59||r.second<0)return null;return s}var WEt={format:UEt,parse:HEt,defaultI18n:AEt,setGlobalDateI18n:_Et,setGlobalDateMasks:zEt};var VEt="format";function GEt(t,e){return(x[VEt]||WEt[VEt])(t,e)}function XEt(t){return(0,tOt.HD)(t)&&(t=t.indexOf("T")>0?new Date(t).getTime():new Date(t.replace(/-/gi,"/")).getTime()),(0,tOt.J_)(t)&&(t=t.getTime()),t}var qEt=1e3,YEt=6e4,$Et=36e5,KEt=24*$Et,JEt=31*KEt,QEt=365*KEt,tMt=[["HH:mm:ss",qEt],["HH:mm:ss",1e4],["HH:mm:ss",3e4],["HH:mm",YEt],["HH:mm",6e5],["HH:mm",18e5],["HH",$Et],["HH",6*$Et],["HH",12*$Et],["YYYY-MM-DD",KEt],["YYYY-MM-DD",4*KEt],["YYYY-WW",7*KEt],["YYYY-MM",JEt],["YYYY-MM",4*JEt],["YYYY-MM",6*JEt],["YYYY",380*KEt]];function eMt(t,e,n){var r=(e-t)/n,i=function(t){return function(e,n,r,i){for(var o=(0,tOt.UM)(r)?0:r,a=(0,tOt.UM)(i)?e.length:i;o>>1;t(e[c])>n?a=c:o=c+1}return o}}((function(t){return t[1]}))(tMt,r)-1,o=tMt[i];return i<0?o=tMt[0]:i>=tMt.length&&(o=(0,tOt.Z$)(tMt)),o}var nMt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="timeCat",e}return(0,QCt.ZT)(e,t),e.prototype.translate=function(t){t=XEt(t);var e=this.values.indexOf(t);return-1===e&&(e=(0,tOt.hj)(t)&&t-1){var r=this.values[n],i=this.formatter;return r=i?i(r,e):GEt(r,this.mask)}return t},e.prototype.initCfg=function(){this.tickMethod="time-cat",this.mask="YYYY-MM-DD",this.tickCount=7},e.prototype.setDomain=function(){var e=this.values;(0,tOt.S6)(e,(function(t,n){e[n]=XEt(t)})),e.sort((function(t,e){return t-e})),t.prototype.setDomain.call(this)},e}(gEt),rMt=nMt,iMt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.isContinuous=!0,e}return(0,QCt.ZT)(e,t),e.prototype.scale=function(t){if((0,tOt.UM)(t))return NaN;var e=this.rangeMin(),n=this.rangeMax();return this.max===this.min?e:e+this.getScalePercent(t)*(n-e)},e.prototype.init=function(){t.prototype.init.call(this);var e=this.ticks,n=(0,tOt.YM)(e),r=(0,tOt.Z$)(e);nthis.max&&(this.max=r),(0,tOt.UM)(this.minLimit)||(this.min=n),(0,tOt.UM)(this.maxLimit)||(this.max=r)},e.prototype.setDomain=function(){var t=(0,tOt.rx)(this.values),e=t.min,n=t.max;(0,tOt.UM)(this.min)&&(this.min=e),(0,tOt.UM)(this.max)&&(this.max=n),this.min>this.max&&(this.min=e,this.max=n)},e.prototype.calculateTicks=function(){var e=this,n=t.prototype.calculateTicks.call(this);return this.nice||(n=(0,tOt.hX)(n,(function(t){return t>=e.min&&t<=e.max}))),n},e.prototype.getScalePercent=function(t){var e=this.max,n=this.min;return(t-n)/(e-n)},e.prototype.getInvertPercent=function(t){return(t-this.rangeMin())/(this.rangeMax()-this.rangeMin())},e}(pEt),oMt=iMt,aMt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="linear",e.isLinear=!0,e}return(0,QCt.ZT)(e,t),e.prototype.invert=function(t){var e=this.getInvertPercent(t);return this.min+e*(this.max-this.min)},e.prototype.initCfg=function(){this.tickMethod="wilkinson-extended",this.nice=!1},e}(oMt),cMt=aMt;function lMt(t,e){var n=Math.E;return e>=0?Math.pow(n,Math.log(e)/t):-1*Math.pow(n,Math.log(-e)/t)}function uMt(t,e){return 1===t?1:Math.log(e)/Math.log(t)}function sMt(t,e,n){(0,tOt.UM)(n)&&(n=Math.max.apply(null,t));var r=n;return(0,tOt.S6)(t,(function(t){t>0&&t1&&(r=1),r}var fMt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="log",e}return(0,QCt.ZT)(e,t),e.prototype.invert=function(t){var e,n=this.base,r=uMt(n,this.max),i=this.rangeMin(),o=this.rangeMax()-i,a=this.positiveMin;if(a){if(0===t)return 0;var c=1/(r-(e=uMt(n,a/n)))*o;if(t=0?1:-1;return Math.pow(o,n)*a},e.prototype.initCfg=function(){this.tickMethod="pow",this.exponent=2,this.tickCount=5,this.nice=!0},e.prototype.getScalePercent=function(t){var e=this.max,n=this.min;if(e===n)return 0;var r=this.exponent;return(lMt(r,t)-lMt(r,n))/(lMt(r,e)-lMt(r,n))},e}(oMt),pMt=dMt,vMt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="time",e}return(0,QCt.ZT)(e,t),e.prototype.getText=function(t,e){var n=this.translate(t),r=this.formatter;return r?r(n,e):GEt(n,this.mask)},e.prototype.scale=function(e){var n=e;return((0,tOt.HD)(n)||(0,tOt.J_)(n))&&(n=this.translate(n)),t.prototype.scale.call(this,n)},e.prototype.translate=function(t){return XEt(t)},e.prototype.initCfg=function(){this.tickMethod="time-pretty",this.mask="YYYY-MM-DD",this.tickCount=7,this.nice=!1},e.prototype.setDomain=function(){var t=this.values,e=this.getConfig("min"),n=this.getConfig("max");if((0,tOt.UM)(e)&&(0,tOt.hj)(e)||(this.min=this.translate(this.min)),(0,tOt.UM)(n)&&(0,tOt.hj)(n)||(this.max=this.translate(this.max)),t&&t.length){var r=[],i=1/0,o=i,a=0;(0,tOt.S6)(t,(function(t){var e=XEt(t);if(isNaN(e))throw new TypeError("Invalid Time: "+t+" in time scale!");i>e?(o=i,i=e):o>e&&(o=e),a1&&(this.minTickInterval=o-i),(0,tOt.UM)(e)&&(this.min=i),(0,tOt.UM)(n)&&(this.max=a)}},e}(cMt),gMt=vMt,mMt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="quantize",e}return(0,QCt.ZT)(e,t),e.prototype.invert=function(t){var e=this.ticks,n=e.length,r=this.getInvertPercent(t),i=Math.floor(r*(n-1));if(i>=n-1)return(0,tOt.Z$)(e);if(i<0)return(0,tOt.YM)(e);var o=e[i],a=i/(n-1);return o+(r-a)/((i+1)/(n-1)-a)*(e[i+1]-o)},e.prototype.initCfg=function(){this.tickMethod="r-pretty",this.tickCount=5,this.nice=!0},e.prototype.calculateTicks=function(){var e=t.prototype.calculateTicks.call(this);return this.nice||((0,tOt.Z$)(e)!==this.max&&e.push(this.max),(0,tOt.YM)(e)!==this.min&&e.unshift(this.min)),e},e.prototype.getScalePercent=function(t){var e=this.ticks;if(t<(0,tOt.YM)(e))return 0;if(t>(0,tOt.Z$)(e))return 1;var n=0;return(0,tOt.S6)(e,(function(e,r){if(!(t>=e))return!1;n=r})),n/(e.length-1)},e}(oMt),yMt=mMt,bMt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="quantile",e}return(0,QCt.ZT)(e,t),e.prototype.initCfg=function(){this.tickMethod="quantile",this.tickCount=5,this.nice=!0},e}(yMt),xMt=bMt,wMt={};function SMt(t){return wMt[t]}function kMt(t,e){if(SMt(t))throw new Error("type '"+t+"' existed.");wMt[t]=e}var CMt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="identity",e.isIdentity=!0,e}return(0,QCt.ZT)(e,t),e.prototype.calculateTicks=function(){return this.values},e.prototype.scale=function(t){return this.values[0]!==t&&(0,tOt.hj)(t)?t:this.range[0]},e.prototype.invert=function(t){var e=this.range;return te[1]?NaN:this.values[0]},e}(pEt),OMt=CMt;function EMt(t){var e=t.values,n=t.tickInterval,r=t.tickCount,i=t.showLast;if((0,tOt.hj)(n)){var o=(0,tOt.hX)(e,(function(t,e){return e%n==0})),a=(0,tOt.Z$)(e);return i&&(0,tOt.Z$)(o)!==a&&o.push(a),o}var c=e.length,l=t.min,u=t.max;if((0,tOt.UM)(l)&&(l=0),(0,tOt.UM)(u)&&(u=e.length-1),!(0,tOt.hj)(r)||r>=c)return e.slice(l,u+1);if(r<=0||u<=0)return[];for(var s=1===r?c:Math.floor(c/(r-1)),f=[],h=l,d=0;d=u);d++)h=Math.min(l+d*s,u),d===r-1&&i?f.push(e[u]):f.push(e[h]);return f}var MMt=Math.sqrt(50),AMt=Math.sqrt(10),PMt=Math.sqrt(2),_Mt=function(){function t(){this._domain=[0,1]}return t.prototype.domain=function(t){return t?(this._domain=Array.from(t,Number),this):this._domain.slice()},t.prototype.nice=function(t){var e,n;void 0===t&&(t=5);var r,i=this._domain.slice(),o=0,a=this._domain.length-1,c=this._domain[o],l=this._domain[a];return l0?r=DMt(c=Math.floor(c/r)*r,l=Math.ceil(l/r)*r,t):r<0&&(r=DMt(c=Math.ceil(c*r)/r,l=Math.floor(l*r)/r,t)),r>0?(i[o]=Math.floor(c/r)*r,i[a]=Math.ceil(l/r)*r,this.domain(i)):r<0&&(i[o]=Math.ceil(c*r)/r,i[a]=Math.floor(l*r)/r,this.domain(i)),this},t.prototype.ticks=function(t){return void 0===t&&(t=5),function(t,e,n){var r,i,o,a,c=-1;if(e=+e,n=+n,(t=+t)===e&&n>0)return[t];(r=e0)for(t=Math.ceil(t/a),e=Math.floor(e/a),o=new Array(i=Math.ceil(e-t+1));++c=0?(o>=MMt?10:o>=AMt?5:o>=PMt?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=MMt?10:o>=AMt?5:o>=PMt?2:1)}function TMt(t,e,n){return("ceil"===n?Math.ceil(t/e):"floor"===n?Math.floor(t/e):Math.round(t/e))*e}function ZMt(t,e,n){var r=TMt(t,n,"floor"),i=TMt(e,n,"ceil");r=(0,tOt.ri)(r,n),i=(0,tOt.ri)(i,n);for(var o=[],a=Math.max((i-r)/(Math.pow(2,12)-1),n),c=r;c<=i;c+=a){var l=(0,tOt.ri)(c,a);o.push(l)}return{min:r,max:i,ticks:o}}function FMt(t,e,n){var r,i=t.minLimit,o=t.maxLimit,a=t.min,c=t.max,l=t.tickCount,u=void 0===l?5:l,s=(0,tOt.UM)(i)?(0,tOt.UM)(e)?a:e:i,f=(0,tOt.UM)(o)?(0,tOt.UM)(n)?c:n:o;if(s>f&&(f=(r=[s,f])[0],s=r[1]),u<=2)return[s,f];for(var h=(f-s)/(u-1),d=[],p=0;p=0&&(l=1),1-c/(a-1)-n+l}function NMt(t,e,n){var r=(0,tOt.dp)(e);return 1-(0,tOt.cq)(e,t)/(r-1)-n+1}function BMt(t,e,n,r,i,o){var a=(t-1)/(o-i),c=(e-1)/(Math.max(o,r)-Math.min(n,i));return 2-Math.max(a/c,c/a)}function zMt(t,e){return t>=e?2-(t-1)/(e-1):1}function UMt(t,e,n,r){var i=e-t;return 1-.5*(Math.pow(e-r,2)+Math.pow(t-n,2))/Math.pow(.1*i,2)}function HMt(t,e,n){var r=e-t;if(n>r){var i=(n-r)/2;return 1-Math.pow(i,2)/Math.pow(.1*r,2)}return 1}function WMt(t,e,n,r,i,o){void 0===n&&(n=5),void 0===r&&(r=!0),void 0===i&&(i=IMt),void 0===o&&(o=[.25,.2,.5,.05]);var a=n<0?0:Math.round(n);if(Number.isNaN(t)||Number.isNaN(e)||"number"!=typeof t||"number"!=typeof e||!a)return{min:0,max:0,ticks:[]};if(e-t<1e-15||1===a)return{min:t,max:e,ticks:[t]};if(e-t>1e148){var c=(e-t)/(w=n||5);return{min:t,max:e,ticks:Array(w).fill(null).map((function(e,n){return jMt(t+c*n)}))}}for(var l={score:-2,lmin:0,lmax:0,lstep:0},u=1;u<1/0;){for(var s=0;sl.score&&(!r||k<=t&&C>=e)&&(l.lmin=k,l.lmax=C,l.lstep=O,l.score=P)}g+=1}d+=1}}u+=1}var _=jMt(l.lmax),D=jMt(l.lmin),T=jMt(l.lstep),Z=Math.floor(function(t){return Math.round(1e12*t)/1e12}((_-D)/T))+1,F=new Array(Z);F[0]=jMt(D);for(s=1;s1&&(i*=Math.ceil(a)),r&&iQEt)for(var l=XMt(n),u=Math.ceil(o/QEt),s=c;s<=l+u;s+=u)a.push(qMt(s));else if(o>JEt){var f=Math.ceil(o/JEt),h=YMt(e),d=function(t,e){var n=XMt(t),r=XMt(e),i=YMt(t);return 12*(r-n)+(YMt(e)-i)%12}(e,n);for(s=0;s<=d+f;s+=f)a.push($Mt(c,s+h))}else if(o>KEt){var p=(b=new Date(e)).getFullYear(),v=b.getMonth(),g=b.getDate(),m=Math.ceil(o/KEt),y=function(t,e){return Math.ceil((e-t)/KEt)}(e,n);for(s=0;s$Et){p=(b=new Date(e)).getFullYear(),v=b.getMonth(),m=b.getDate();var b,x=b.getHours(),w=Math.ceil(o/$Et),S=function(t,e){return Math.ceil((e-t)/$Et)}(e,n);for(s=0;s<=S+w;s+=w)a.push(new Date(p,v,m,x+s).getTime())}else if(o>YEt){var k=function(t,e){return Math.ceil((e-t)/6e4)}(e,n),C=Math.ceil(o/YEt);for(s=0;s<=k+C;s+=C)a.push(e+s*YEt)}else{var O=o;O=512&&console.warn("Notice: current ticks length("+a.length+') >= 512, may cause performance issues, even out of memory. Because of the configure "tickInterval"(in milliseconds, current is '+o+") is too small, increase the value to solve the problem!"),a})),hEt("log",(function(t){var e,n=t.base,r=t.tickCount,i=t.min,o=t.max,a=t.values,c=uMt(n,o);if(i>0)e=Math.floor(uMt(n,i));else{var l=sMt(a,n,o);e=Math.floor(uMt(n,l))}for(var u=c-e,s=Math.ceil(u/r),f=[],h=e;h=0?1:-1;return Math.pow(t,e)*n}))})),hEt("quantile",(function(t){var e=t.tickCount,n=t.values;if(!n||!n.length)return[];for(var r=n.slice().sort((function(t,e){return t-e})),i=[],o=0;o=0&&this.radius<=1&&(n*=this.radius),this.d=Math.floor(n*(1-this.innerRadius)/e),this.a=this.d/(2*Math.PI),this.x={start:this.startAngle,end:this.endAngle},this.y={start:this.innerRadius*n,end:this.innerRadius*n+.99*this.d}},e.prototype.convertPoint=function(t){var e,n=t.x,r=t.y;this.isTransposed&&(n=(e=[r,n])[0],r=e[1]);var i=this.convertDim(n,"x"),o=this.a*i,a=this.convertDim(r,"y");return{x:this.center.x+Math.cos(i)*(o+a),y:this.center.y+Math.sin(i)*(o+a)}},e.prototype.invertPoint=function(t){var e,n=this.d+this.y.start,r=lAt.$X([0,0],[t.x,t.y],[this.center.x,this.center.y]),i=rAt.Dg(r,[1,0],!0),o=i*this.a;lAt.kE(r)this.width/r?(e=this.width/r,this.circleCenter={x:this.center.x-(.5-o)*this.width,y:this.center.y-(.5-a)*e*i}):(e=this.height/i,this.circleCenter={x:this.center.x-(.5-o)*e*r,y:this.center.y-(.5-a)*this.height}),this.polarRadius=this.radius,this.radius?this.radius>0&&this.radius<=1?this.polarRadius=e*this.radius:(this.radius<=0||this.radius>e)&&(this.polarRadius=e):this.polarRadius=e,this.x={start:this.startAngle,end:this.endAngle},this.y={start:this.innerRadius*this.polarRadius,end:this.polarRadius}},e.prototype.getRadius=function(){return this.polarRadius},e.prototype.convertPoint=function(t){var e,n=this.getCenter(),r=t.x,i=t.y;return this.isTransposed&&(r=(e=[i,r])[0],i=e[1]),r=this.convertDim(r,"x"),i=this.convertDim(i,"y"),{x:n.x+Math.cos(r)*i,y:n.y+Math.sin(r)*i}},e.prototype.invertPoint=function(t){var e,n=this.getCenter(),r=[t.x-n.x,t.y-n.y],i=this.startAngle,o=this.endAngle;this.isReflect("x")&&(i=(e=[o,i])[0],o=e[1]);var a=[1,0,0,0,1,0,0,0,1];rAt.zu(a,a,i);var c=[1,0,0];eAt(c,c,a);var l=[c[0],c[1]],u=rAt.Dg(l,r,o0?f:-f;var h=this.invertDim(s,"y"),d={x:0,y:0};return d.x=this.isTransposed?h:f,d.y=this.isTransposed?f:h,d},e.prototype.getCenter=function(){return this.circleCenter},e.prototype.getOneBox=function(){var t=this.startAngle,e=this.endAngle;if(Math.abs(e-t)>=2*Math.PI)return{minX:-1,maxX:1,minY:-1,maxY:1};for(var n=[0,Math.cos(t),Math.cos(e)],r=[0,Math.sin(t),Math.sin(e)],i=Math.min(t,e);i=0;n--)t.removeChild(e[n])}function CAt(t){var e=t.start,n=t.end,r=Math.min(e.x,n.x),i=Math.min(e.y,n.y),o=Math.max(e.x,n.x),a=Math.max(e.y,n.y);return{x:r,y:i,minX:r,minY:i,maxX:o,maxY:a,width:o-r,height:a-i}}function OAt(t,e,n,r){var i=t+n,o=e+r;return{x:t,y:e,width:n,height:r,minX:t,minY:e,maxX:isNaN(i)?0:i,maxY:isNaN(o)?0:o}}function EAt(t,e,n){return(1-n)*t+e*n}function MAt(t,e,n){return{x:t.x+Math.cos(n)*e,y:t.y+Math.sin(n)*e}}var AAt=function(t,e,n){return void 0===n&&(n=Math.pow(Number.EPSILON,.5)),[t,e].includes(1/0)?Math.abs(t)===Math.abs(e):Math.abs(t-e)0?(0,tOt.S6)(h,(function(t){if(t.get("visible")){if(t.isGroup()&&0===t.get("children").length)return!0;var e=PAt(t),n=t.applyToMatrix([e.minX,e.minY,1]),r=t.applyToMatrix([e.minX,e.maxY,1]),i=t.applyToMatrix([e.maxX,e.minY,1]),o=t.applyToMatrix([e.maxX,e.maxY,1]),a=Math.min(n[0],r[0],i[0],o[0]),c=Math.max(n[0],r[0],i[0],o[0]),h=Math.min(n[1],r[1],i[1],o[1]),d=Math.max(n[1],r[1],i[1],o[1]);au&&(u=c),hf&&(f=d)}})):(l=0,u=0,s=0,f=0),e=OAt(l,s,u-l,f-s)}else e=t.getBBox();return c?(n=e,r=c,i=Math.max(n.minX,r.minX),o=Math.max(n.minY,r.minY),OAt(i,o,Math.min(n.maxX,r.maxX)-i,Math.min(n.maxY,r.maxY)-o)):e}function _At(t){return t+"px"}function DAt(t,e,n,r){var i,o,a,c,l=r/(i=t,a=(o=e).x-i.x,c=o.y-i.y,Math.sqrt(a*a+c*c)),u=0;return"start"===n?u=0-l:"end"===n&&(u=1+l),{x:EAt(t.x,e.x,u),y:EAt(t.y,e.y,u)}}var TAt={none:[],point:["x","y"],region:["start","end"],points:["points"],circle:["center","radius","startAngle","endAngle"]},ZAt=function(t){function e(e){var n=t.call(this,e)||this;return n.initCfg(),n}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){return{id:"",name:"",type:"",locationType:"none",offsetX:0,offsetY:0,animate:!1,capture:!0,updateAutoRender:!1,animateOption:{appear:null,update:{duration:400,easing:"easeQuadInOut"},enter:{duration:400,easing:"easeQuadInOut"},leave:{duration:350,easing:"easeQuadIn"}},events:null,defaultCfg:{},visible:!0}},e.prototype.clear=function(){},e.prototype.update=function(t){var e=this,n=this.get("defaultCfg")||{};(0,tOt.S6)(t,(function(t,r){var i=t;e.get(r)!==t&&((0,tOt.Kn)(t)&&n[r]&&(i=(0,tOt.b$)({},n[r],t)),e.set(r,i))})),this.updateInner(t),this.afterUpdate(t)},e.prototype.updateInner=function(t){},e.prototype.afterUpdate=function(t){(0,tOt.wH)(t,"visible")&&(t.visible?this.show():this.hide()),(0,tOt.wH)(t,"capture")&&this.setCapture(t.capture)},e.prototype.getLayoutBBox=function(){return this.getBBox()},e.prototype.getLocationType=function(){return this.get("locationType")},e.prototype.getOffset=function(){return{offsetX:this.get("offsetX"),offsetY:this.get("offsetY")}},e.prototype.setOffset=function(t,e){this.update({offsetX:t,offsetY:e})},e.prototype.setLocation=function(t){var e=(0,QCt.pi)({},t);this.update(e)},e.prototype.getLocation=function(){var t=this,e={},n=this.get("locationType"),r=TAt[n];return(0,tOt.S6)(r,(function(n){e[n]=t.get(n)})),e},e.prototype.isList=function(){return!1},e.prototype.isSlider=function(){return!1},e.prototype.init=function(){},e.prototype.initCfg=function(){var t=this,e=this.get("defaultCfg");(0,tOt.S6)(e,(function(e,n){var r=t.get(n);if((0,tOt.Kn)(r)){var i=(0,tOt.b$)({},e,r);t.set(n,i)}}))},e}(kOt.Base),FAt=ZAt,jAt="update_status",IAt=["visible","tip","delegateObject"],RAt=["container","group","shapesMap","isRegister","isUpdating","destroyed"],LAt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{container:null,shapesMap:{},group:null,capture:!0,isRegister:!1,isUpdating:!1,isInit:!0})},e.prototype.remove=function(){this.clear(),this.get("group").remove()},e.prototype.clear=function(){this.get("group").clear(),this.set("shapesMap",{}),this.clearOffScreenCache(),this.set("isInit",!0)},e.prototype.getChildComponentById=function(t){var e=this.getElementById(t);return e&&e.get("component")},e.prototype.getElementById=function(t){return this.get("shapesMap")[t]},e.prototype.getElementByLocalId=function(t){var e=this.getElementId(t);return this.getElementById(e)},e.prototype.getElementsByName=function(t){var e=[];return(0,tOt.S6)(this.get("shapesMap"),(function(n){n.get("name")===t&&e.push(n)})),e},e.prototype.getContainer=function(){return this.get("container")},e.prototype.updateInner=function(t){this.offScreenRender(),this.get("updateAutoRender")&&this.render()},e.prototype.render=function(){var t=this.get("offScreenGroup");t||(t=this.offScreenRender());var e=this.get("group");this.updateElements(t,e),this.deleteElements(),this.applyOffset(),this.get("eventInitted")||(this.initEvent(),this.set("eventInitted",!0)),this.set("isInit",!1)},e.prototype.show=function(){this.get("group").show(),this.set("visible",!0)},e.prototype.hide=function(){this.get("group").hide(),this.set("visible",!1)},e.prototype.setCapture=function(t){this.get("group").set("capture",t),this.set("capture",t)},e.prototype.destroy=function(){this.removeEvent(),this.remove(),t.prototype.destroy.call(this)},e.prototype.getBBox=function(){return this.get("group").getCanvasBBox()},e.prototype.getLayoutBBox=function(){var t=this.get("group"),e=this.getInnerLayoutBBox(),n=t.getTotalMatrix();return n&&(e=function(t,e){var n=bAt(t,[e.minX,e.minY]),r=bAt(t,[e.maxX,e.minY]),i=bAt(t,[e.minX,e.maxY]),o=bAt(t,[e.maxX,e.maxY]),a=Math.min(n[0],r[0],i[0],o[0]),c=Math.max(n[0],r[0],i[0],o[0]),l=Math.min(n[1],r[1],i[1],o[1]),u=Math.max(n[1],r[1],i[1],o[1]);return{x:a,y:l,minX:a,minY:l,maxX:c,maxY:u,width:c-a,height:u-l}}(n,e)),e},e.prototype.on=function(t,e,n){return this.get("group").on(t,e,n),this},e.prototype.off=function(t,e){var n=this.get("group");return n&&n.off(t,e),this},e.prototype.emit=function(t,e){this.get("group").emit(t,e)},e.prototype.init=function(){t.prototype.init.call(this),this.get("group")||this.initGroup(),this.offScreenRender()},e.prototype.getInnerLayoutBBox=function(){return this.get("offScreenBBox")||this.get("group").getBBox()},e.prototype.delegateEmit=function(t,e){var n=this.get("group");e.target=n,n.emit(t,e),vAt(n,t,e)},e.prototype.createOffScreenGroup=function(){return new(this.get("group").getGroupBase())({delegateObject:this.getDelegateObject()})},e.prototype.applyOffset=function(){var t=this.get("offsetX"),e=this.get("offsetY");this.moveElementTo(this.get("group"),{x:t,y:e})},e.prototype.initGroup=function(){var t=this.get("container");this.set("group",t.addGroup({id:this.get("id"),name:this.get("name"),capture:this.get("capture"),visible:this.get("visible"),isComponent:!0,component:this,delegateObject:this.getDelegateObject()}))},e.prototype.offScreenRender=function(){this.clearOffScreenCache();var t=this.createOffScreenGroup();return this.renderInner(t),this.set("offScreenGroup",t),this.set("offScreenBBox",PAt(t)),t},e.prototype.addGroup=function(t,e){this.appendDelegateObject(t,e);var n=t.addGroup(e);return this.get("isRegister")&&this.registerElement(n),n},e.prototype.addShape=function(t,e){this.appendDelegateObject(t,e);var n=t.addShape(e);return this.get("isRegister")&&this.registerElement(n),n},e.prototype.addComponent=function(t,e){var n=e.id,r=e.component,i=(0,QCt._T)(e,["id","component"]),o=new r((0,QCt.pi)((0,QCt.pi)({},i),{id:n,container:t,updateAutoRender:this.get("updateAutoRender")}));return o.init(),o.render(),this.get("isRegister")&&this.registerElement(o.get("group")),o},e.prototype.initEvent=function(){},e.prototype.removeEvent=function(){this.get("group").off()},e.prototype.getElementId=function(t){return this.get("id")+"-"+this.get("name")+"-"+t},e.prototype.registerElement=function(t){var e=t.get("id");this.get("shapesMap")[e]=t},e.prototype.unregisterElement=function(t){var e=t.get("id");delete this.get("shapesMap")[e]},e.prototype.moveElementTo=function(t,e){var n=yAt(e);t.attr("matrix",n)},e.prototype.addAnimation=function(t,e,n){var r=e.attr("opacity");(0,tOt.UM)(r)&&(r=1),e.attr("opacity",0),e.animate({opacity:r},n)},e.prototype.removeAnimation=function(t,e,n){e.animate({opacity:0},n)},e.prototype.updateAnimation=function(t,e,n,r){e.animate(n,r)},e.prototype.updateElements=function(t,e){var n,r=this,i=this.get("animate"),o=this.get("animateOption"),a=t.getChildren().slice(0);(0,tOt.S6)(a,(function(t){var a=t.get("id"),c=r.getElementById(a),l=t.get("name");if(c)if(t.get("isComponent")){var u=t.get("component"),s=c.get("component"),f=(0,tOt.ei)(u.cfg,(0,tOt.e5)((0,tOt.XP)(u.cfg),RAt));s.update(f),c.set(jAt,"update")}else{var h=r.getReplaceAttrs(c,t);i&&o.update?r.updateAnimation(l,c,h,o.update):c.attr(h),t.isGroup()&&r.updateElements(t,c),(0,tOt.S6)(IAt,(function(e){c.set(e,t.get(e))})),function(t,e){if(t.getClip()||e.getClip()){var n=e.getClip();if(n){var r={type:n.get("type"),attrs:n.attr()};t.setClip(r)}else t.setClip(null)}}(c,t),n=c,c.set(jAt,"update")}else{e.add(t);var d=e.getChildren();if(d.splice(d.length-1,1),n){var p=d.indexOf(n);d.splice(p+1,0,t)}else d.unshift(t);if(r.registerElement(t),t.set(jAt,"add"),t.get("isComponent"))(u=t.get("component")).set("container",e);else t.isGroup()&&r.registerNewGroup(t);if(n=t,i){var v=r.get("isInit")?o.appear:o.enter;v&&r.addAnimation(l,t,v)}}}))},e.prototype.clearUpdateStatus=function(t){var e=t.getChildren();(0,tOt.S6)(e,(function(t){t.set(jAt,null)}))},e.prototype.clearOffScreenCache=function(){var t=this.get("offScreenGroup");t&&t.destroy(),this.set("offScreenGroup",null),this.set("offScreenBBox",null)},e.prototype.getDelegateObject=function(){var t;return(t={})[this.get("name")]=this,t.component=this,t},e.prototype.appendDelegateObject=function(t,e){var n=t.get("delegateObject");e.delegateObject||(e.delegateObject={}),(0,tOt.CD)(e.delegateObject,n)},e.prototype.getReplaceAttrs=function(t,e){var n=t.attr(),r=e.attr();return(0,tOt.S6)(n,(function(t,e){void 0===r[e]&&(r[e]=void 0)})),r},e.prototype.registerNewGroup=function(t){var e=this,n=t.getChildren();(0,tOt.S6)(n,(function(t){e.registerElement(t),t.set(jAt,"add"),t.isGroup()&&e.registerNewGroup(t)}))},e.prototype.deleteElements=function(){var t=this,e=this.get("shapesMap"),n=[];(0,tOt.S6)(e,(function(t,e){!t.get(jAt)||t.destroyed?n.push([e,t]):t.set(jAt,null)}));var r=this.get("animate"),i=this.get("animateOption");(0,tOt.S6)(n,(function(n){var o=n[0],a=n[1];if(!a.destroyed){var c=a.get("name");if(r&&i.leave){var l=(0,tOt.CD)({callback:function(){t.removeElement(a)}},i.leave);t.removeAnimation(c,a,l)}else t.removeElement(a)}delete e[o]}))},e.prototype.removeElement=function(t){if(t.get("isGroup")){var e=t.get("component");e&&e.destroy()}t.remove()},e}(FAt),NAt=LAt,BAt="…";function zAt(t,e){return t.charCodeAt(e)>0&&t.charCodeAt(e)<128?1:2}var UAt="…",HAt=2,WAt=400;function VAt(t){if(t.length>WAt)return function(t){for(var e=t.map((function(t){var e=t.attr("text");return(0,tOt.UM)(e)?"":""+e})),n=0,r=0,i=0;i=19968&&c<=40869?2:1}o>n&&(n=o,r=i)}return t[r].getBBox().width}(t);var e=0;return(0,tOt.S6)(t,(function(t){var n=t.getBBox().width;e=0?function(t,e,n){void 0===n&&(n="tail");var r=t.length,i="";if("tail"===n){for(var o=0,a=0;o1||r<0)&&(r=1),{x:EAt(t.x,e.x,r),y:EAt(t.y,e.y,r)}},e.prototype.renderLabel=function(t){var e=this.get("text"),n=this.get("start"),r=this.get("end"),i=e.position,o=e.content,a=e.style,c=e.offsetX,l=e.offsetY,u=e.autoRotate,s=e.maxLength,f=e.autoEllipsis,h=e.ellipsisPosition,d=e.background,p=e.isVertical,v=void 0!==p&&p,g=this.getLabelPoint(n,r,i),m=g.x+c,y=g.y+l,b={id:this.getElementId("line-text"),name:"annotation-line-text",x:m,y:y,content:o,style:a,maxLength:s,autoEllipsis:f,ellipsisPosition:h,background:d,isVertical:v};if(u){var x=[r.x-n.x,r.y-n.y];b.rotate=Math.atan2(x[1],x[0])}XAt(t,b)},e}(NAt),$At=YAt,KAt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{name:"annotation",type:"text",locationType:"point",x:0,y:0,content:"",rotate:null,style:{},background:null,maxLength:null,autoEllipsis:!0,isVertical:!1,ellipsisPosition:"tail",defaultCfg:{style:{fill:qAt.textColor,fontSize:12,textAlign:"center",textBaseline:"middle",fontFamily:qAt.fontFamily}}})},e.prototype.setLocation=function(t){this.set("x",t.x),this.set("y",t.y),this.resetLocation()},e.prototype.renderInner=function(t){var e=this.getLocation(),n=e.x,r=e.y,i=this.get("content"),o=this.get("style");XAt(t,{id:this.getElementId("text"),name:this.get("name")+"-text",x:n,y:r,content:i,style:o,maxLength:this.get("maxLength"),autoEllipsis:this.get("autoEllipsis"),isVertical:this.get("isVertical"),ellipsisPosition:this.get("ellipsisPosition"),background:this.get("background"),rotate:this.get("rotate")})},e.prototype.resetLocation=function(){var t=this.getElementByLocalId("text-group");if(t){var e=this.getLocation(),n=e.x,r=e.y,i=this.get("rotate");wAt(t,n,r),xAt(t,i,n,r)}},e}(NAt),JAt=KAt,QAt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{name:"annotation",type:"arc",locationType:"circle",center:null,radius:100,startAngle:-Math.PI/2,endAngle:3*Math.PI/2,style:{stroke:"#999",lineWidth:1}})},e.prototype.renderInner=function(t){this.renderArc(t)},e.prototype.getArcPath=function(){var t=this.getLocation(),e=t.center,n=t.radius,r=t.startAngle,i=t.endAngle,o=MAt(e,n,r),a=MAt(e,n,i),c=i-r>Math.PI?1:0,l=[["M",o.x,o.y]];if(i-r==2*Math.PI){var u=MAt(e,n,r+Math.PI);l.push(["A",n,n,0,c,1,u.x,u.y]),l.push(["A",n,n,0,c,1,a.x,a.y])}else l.push(["A",n,n,0,c,1,a.x,a.y]);return l},e.prototype.renderArc=function(t){var e=this.getArcPath(),n=this.get("style");this.addShape(t,{type:"path",id:this.getElementId("arc"),name:"annotation-arc",attrs:(0,QCt.pi)({path:e},n)})},e}(NAt),tPt=QAt,ePt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{name:"annotation",type:"region",locationType:"region",start:null,end:null,style:{},defaultCfg:{style:{lineWidth:0,fill:qAt.regionColor,opacity:.4}}})},e.prototype.renderInner=function(t){this.renderRegion(t)},e.prototype.renderRegion=function(t){var e=this.get("start"),n=this.get("end"),r=this.get("style"),i=CAt({start:e,end:n});this.addShape(t,{type:"rect",id:this.getElementId("region"),name:"annotation-region",attrs:(0,QCt.pi)({x:i.x,y:i.y,width:i.width,height:i.height},r)})},e}(NAt),nPt=ePt,rPt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{name:"annotation",type:"image",locationType:"region",start:null,end:null,src:null,style:{}})},e.prototype.renderInner=function(t){this.renderImage(t)},e.prototype.getImageAttrs=function(){var t=this.get("start"),e=this.get("end"),n=this.get("style"),r=CAt({start:t,end:e}),i=this.get("src");return(0,QCt.pi)({x:r.x,y:r.y,img:i,width:r.width,height:r.height},n)},e.prototype.renderImage=function(t){this.addShape(t,{type:"image",id:this.getElementId("image"),name:"annotation-image",attrs:this.getImageAttrs()})},e}(NAt),iPt=rPt,oPt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{name:"annotation",type:"dataMarker",locationType:"point",x:0,y:0,point:{},line:{},text:{},direction:"upward",autoAdjust:!0,coordinateBBox:null,defaultCfg:{point:{display:!0,style:{r:3,fill:"#FFFFFF",stroke:"#1890FF",lineWidth:2}},line:{display:!0,length:20,style:{stroke:qAt.lineColor,lineWidth:1}},text:{content:"",display:!0,style:{fill:qAt.textColor,opacity:.65,fontSize:12,textAlign:"start",fontFamily:qAt.fontFamily}}}})},e.prototype.renderInner=function(t){(0,tOt.U2)(this.get("line"),"display")&&this.renderLine(t),(0,tOt.U2)(this.get("text"),"display")&&this.renderText(t),(0,tOt.U2)(this.get("point"),"display")&&this.renderPoint(t),this.get("autoAdjust")&&this.autoAdjust(t)},e.prototype.applyOffset=function(){this.moveElementTo(this.get("group"),{x:this.get("x")+this.get("offsetX"),y:this.get("y")+this.get("offsetY")})},e.prototype.renderPoint=function(t){var e=this.getShapeAttrs().point;this.addShape(t,{type:"circle",id:this.getElementId("point"),name:"annotation-point",attrs:e})},e.prototype.renderLine=function(t){var e=this.getShapeAttrs().line;this.addShape(t,{type:"path",id:this.getElementId("line"),name:"annotation-line",attrs:e})},e.prototype.renderText=function(t){var e=this.getShapeAttrs().text,n=e.x,r=e.y,i=e.text,o=(0,QCt._T)(e,["x","y","text"]),a=this.get("text"),c=a.background,l=a.maxLength,u=a.autoEllipsis,s=a.isVertival,f=a.ellipsisPosition;XAt(t,{x:n,y:r,id:this.getElementId("text"),name:"annotation-text",content:i,style:o,background:c,maxLength:l,autoEllipsis:u,isVertival:s,ellipsisPosition:f})},e.prototype.autoAdjust=function(t){var e=this.get("direction"),n=this.get("x"),r=this.get("y"),i=(0,tOt.U2)(this.get("line"),"length",0),o=this.get("coordinateBBox"),a=t.getBBox(),c=a.minX,l=a.maxX,u=a.minY,s=a.maxY,f=t.findById(this.getElementId("text-group")),h=t.findById(this.getElementId("text")),d=t.findById(this.getElementId("line"));if(o&&f){var p=f.attr("x"),v=f.attr("y"),g=h.getCanvasBBox(),m=g.width,y=g.height,b=0,x=0;if(n+c<=o.minX)if("leftward"===e)b=1;else{var w=o.minX-(n+c);p=f.attr("x")+w}else if(n+l>=o.maxX)if("rightward"===e)b=-1;else{w=n+l-o.maxX;p=f.attr("x")-w}if(b&&(d&&d.attr("path",[["M",0,0],["L",i*b,0]]),p=(i+2+m)*b),r+u<=o.minY)if("upward"===e)x=1;else{w=o.minY-(r+u);v=f.attr("y")+w}else if(r+s>=o.maxY)if("downward"===e)x=-1;else{w=r+s-o.maxY;v=f.attr("y")-w}x&&(d&&d.attr("path",[["M",0,0],["L",0,i*x]]),v=(i+2+y)*x),p===f.attr("x")&&v===f.attr("y")||wAt(f,p,v)}},e.prototype.getShapeAttrs=function(){var t=(0,tOt.U2)(this.get("line"),"display"),e=(0,tOt.U2)(this.get("point"),"style",{}),n=(0,tOt.U2)(this.get("line"),"style",{}),r=(0,tOt.U2)(this.get("text"),"style",{}),i=this.get("direction"),o=t?(0,tOt.U2)(this.get("line"),"length",0):0,a=0,c=0,l="top",u="start";switch(i){case"upward":c=-1,l="bottom";break;case"downward":c=1,l="top";break;case"leftward":a=-1,u="end";break;case"rightward":a=1,u="start"}return{point:(0,QCt.pi)({x:0,y:0},e),line:(0,QCt.pi)({path:[["M",0,0],["L",o*a,o*c]]},n),text:(0,QCt.pi)({x:(o+2)*a,y:(o+2)*c,text:(0,tOt.U2)(this.get("text"),"content",""),textBaseline:l,textAlign:u},r)}},e}(NAt),aPt=oPt,cPt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{name:"annotation",type:"dataRegion",locationType:"points",points:[],lineLength:0,region:{},text:{},defaultCfg:{region:{style:{lineWidth:0,fill:qAt.regionColor,opacity:.4}},text:{content:"",style:{textAlign:"center",textBaseline:"bottom",fontSize:12,fill:qAt.textColor,fontFamily:qAt.fontFamily}}}})},e.prototype.renderInner=function(t){var e=(0,tOt.U2)(this.get("region"),"style",{}),n=((0,tOt.U2)(this.get("text"),"style",{}),this.get("lineLength")||0),r=this.get("points");if(r.length){var i=function(t){var e=t.map((function(t){return t.x})),n=t.map((function(t){return t.y})),r=Math.min.apply(Math,e),i=Math.min.apply(Math,n),o=Math.max.apply(Math,e),a=Math.max.apply(Math,n);return{x:r,y:i,minX:r,minY:i,maxX:o,maxY:a,width:o-r,height:a-i}}(r),o=[];o.push(["M",r[0].x,i.minY-n]),r.forEach((function(t){o.push(["L",t.x,t.y])})),o.push(["L",r[r.length-1].x,r[r.length-1].y-n]),this.addShape(t,{type:"path",id:this.getElementId("region"),name:"annotation-region",attrs:(0,QCt.pi)({path:o},e)}),XAt(t,(0,QCt.pi)({id:this.getElementId("text"),name:"annotation-text",x:(i.minX+i.maxX)/2,y:i.minY-n},this.get("text")))}},e}(NAt),lPt=cPt,uPt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{name:"annotation",type:"regionFilter",locationType:"region",start:null,end:null,color:null,shape:[]})},e.prototype.renderInner=function(t){var e=this,n=this.get("start"),r=this.get("end"),i=this.addGroup(t,{id:this.getElementId("region-filter"),capture:!1});(0,tOt.S6)(this.get("shapes"),(function(t,n){var r=t.get("type"),o=(0,tOt.d9)(t.attr());e.adjustShapeAttrs(o),e.addShape(i,{id:e.getElementId("shape-"+r+"-"+n),capture:!1,type:r,attrs:o})}));var o=CAt({start:n,end:r});i.setClip({type:"rect",attrs:{x:o.minX,y:o.minY,width:o.width,height:o.height}})},e.prototype.adjustShapeAttrs=function(t){var e=this.get("color");t.fill&&(t.fill=t.fillStyle=e),t.stroke=t.strokeStyle=e},e}(NAt),sPt=uPt,fPt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{name:"annotation",type:"shape",draw:tOt.ZT})},e.prototype.renderInner=function(t){var e=this.get("render");(0,tOt.mf)(e)&&e(t)},e}(NAt),hPt=fPt;function dPt(t,e,n){var r;try{r=window.getComputedStyle?window.getComputedStyle(t,null)[e]:t.style[e]}catch(F2t){}finally{r=void 0===r?n:r}return r}function pPt(t,e){var n=function(t,e){var n=dPt(t,"width",e);return"auto"===n&&(n=t.offsetWidth),parseFloat(n)}(t,e),r=parseFloat(dPt(t,"borderLeftWidth"))||0,i=parseFloat(dPt(t,"paddingLeft"))||0,o=parseFloat(dPt(t,"paddingRight"))||0,a=parseFloat(dPt(t,"borderRightWidth"))||0,c=parseFloat(dPt(t,"marginRight"))||0;return n+r+a+i+o+(parseFloat(dPt(t,"marginLeft"))||0)+c}function vPt(t,e){var n=function(t,e){var n=dPt(t,"height",e);return"auto"===n&&(n=t.offsetHeight),parseFloat(n)}(t,e),r=parseFloat(dPt(t,"borderTopWidth"))||0,i=parseFloat(dPt(t,"paddingTop"))||0,o=parseFloat(dPt(t,"paddingBottom"))||0;return n+r+(parseFloat(dPt(t,"borderBottomWidth"))||0)+i+o+(parseFloat(dPt(t,"marginTop"))||0)+(parseFloat(dPt(t,"marginBottom"))||0)}var gPt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{container:null,containerTpl:"
",updateAutoRender:!0,containerClassName:"",parent:null})},e.prototype.getContainer=function(){return this.get("container")},e.prototype.show=function(){this.get("container").style.display="",this.set("visible",!0)},e.prototype.hide=function(){this.get("container").style.display="none",this.set("visible",!1)},e.prototype.setCapture=function(t){var e=t?"auto":"none";this.getContainer().style.pointerEvents=e,this.set("capture",t)},e.prototype.getBBox=function(){var t=this.getContainer();return OAt(parseFloat(t.style.left)||0,parseFloat(t.style.top)||0,t.clientWidth,t.clientHeight)},e.prototype.clear=function(){kAt(this.get("container"))},e.prototype.destroy=function(){this.removeEvent(),this.removeDom(),t.prototype.destroy.call(this)},e.prototype.init=function(){t.prototype.init.call(this),this.initContainer(),this.initDom(),this.resetStyles(),this.applyStyles(),this.initEvent(),this.initCapture(),this.initVisible()},e.prototype.initCapture=function(){this.setCapture(this.get("capture"))},e.prototype.initVisible=function(){this.get("visible")?this.show():this.hide()},e.prototype.initDom=function(){},e.prototype.initContainer=function(){var t=this.get("container");if((0,tOt.UM)(t)){t=this.createDom();var e=this.get("parent");(0,tOt.HD)(e)&&(e=document.getElementById(e),this.set("parent",e)),e.appendChild(t),this.get("containerId")&&t.setAttribute("id",this.get("containerId")),this.set("container",t)}else(0,tOt.HD)(t)&&(t=document.getElementById(t),this.set("container",t));this.get("parent")||this.set("parent",t.parentNode)},e.prototype.resetStyles=function(){var t=this.get("domStyles"),e=this.get("defaultStyles");t=t?(0,tOt.b$)({},e,t):e,this.set("domStyles",t)},e.prototype.applyStyles=function(){var t=this.get("domStyles");if(t){var e=this.getContainer();this.applyChildrenStyles(e,t);var n,r=this.get("containerClassName");if(r&&(n=r,e.className.match(new RegExp("(\\s|^)"+n+"(\\s|$)"))))mOt(e,t[r])}},e.prototype.applyChildrenStyles=function(t,e){(0,tOt.S6)(e,(function(e,n){var r=t.getElementsByClassName(n);(0,tOt.S6)(r,(function(t){mOt(t,e)}))}))},e.prototype.applyStyle=function(t,e){mOt(e,this.get("domStyles")[t])},e.prototype.createDom=function(){return gOt(this.get("containerTpl"))},e.prototype.initEvent=function(){},e.prototype.removeDom=function(){var t=this.get("container");t&&t.parentNode&&t.parentNode.removeChild(t)},e.prototype.removeEvent=function(){},e.prototype.updateInner=function(t){(0,tOt.wH)(t,"domStyles")&&(this.resetStyles(),this.applyStyles()),this.resetPosition()},e.prototype.resetPosition=function(){},e}(FAt),mPt=gPt,yPt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{name:"annotation",type:"html",locationType:"point",x:0,y:0,containerTpl:'
',alignX:"left",alignY:"top",html:"",zIndex:7})},e.prototype.render=function(){var t=this.getContainer(),e=this.get("html");kAt(t);var n=(0,tOt.mf)(e)?e(t):e;if((0,tOt.kK)(n))t.appendChild(n);else if((0,tOt.HD)(n)||(0,tOt.hj)(n)){var r=gOt(""+n);r&&t.appendChild(r)}this.resetPosition()},e.prototype.resetPosition=function(){var t=this.getContainer(),e=this.getLocation(),n=e.x,r=e.y,i=this.get("alignX"),o=this.get("alignY"),a=this.get("offsetX"),c=this.get("offsetY"),l=pPt(t),u=vPt(t),s={x:n,y:r};"middle"===i?s.x-=Math.round(l/2):"right"===i&&(s.x-=Math.round(l)),"middle"===o?s.y-=Math.round(u/2):"bottom"===o&&(s.y-=Math.round(u)),a&&(s.x+=a),c&&(s.y+=c),mOt(t,{position:"absolute",left:s.x+"px",top:s.y+"px",zIndex:this.get("zIndex")})},e}(mPt),bPt=yPt;function xPt(t,e,n){var r=e+"Style",i=null;return(0,tOt.S6)(n,(function(e,n){t[n]&&e[r]&&(i||(i={}),(0,tOt.CD)(i,e[r]))})),i}var wPt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{name:"axis",ticks:[],line:{},tickLine:{},subTickLine:null,title:null,label:{},verticalFactor:1,verticalLimitLength:null,overlapOrder:["autoRotate","autoEllipsis","autoHide"],tickStates:{},optimize:{},defaultCfg:{line:{style:{lineWidth:1,stroke:qAt.lineColor}},tickLine:{style:{lineWidth:1,stroke:qAt.lineColor},alignTick:!0,length:5,displayWithLabel:!0},subTickLine:{style:{lineWidth:1,stroke:qAt.lineColor},count:4,length:2},label:{autoRotate:!0,autoHide:!1,autoEllipsis:!1,style:{fontSize:12,fill:qAt.textColor,fontFamily:qAt.fontFamily,fontWeight:"normal"},offset:10,offsetX:0,offsetY:0},title:{autoRotate:!0,spacing:5,position:"center",style:{fontSize:12,fill:qAt.textColor,textBaseline:"middle",fontFamily:qAt.fontFamily,textAlign:"center"},iconStyle:{fill:qAt.descriptionIconFill,stroke:qAt.descriptionIconStroke},description:""},tickStates:{active:{labelStyle:{fontWeight:500},tickLineStyle:{lineWidth:2}},inactive:{labelStyle:{fill:qAt.uncheckedColor}}},optimize:{enable:!0,threshold:400}},theme:{}})},e.prototype.renderInner=function(t){this.get("line")&&this.drawLine(t),this.drawTicks(t),this.get("title")&&this.drawTitle(t)},e.prototype.isList=function(){return!0},e.prototype.getItems=function(){return this.get("ticks")},e.prototype.setItems=function(t){this.update({ticks:t})},e.prototype.updateItem=function(t,e){(0,tOt.CD)(t,e),this.clear(),this.render()},e.prototype.clearItems=function(){var t=this.getElementByLocalId("label-group");t&&t.clear()},e.prototype.setItemState=function(t,e,n){t[e]=n,this.updateTickStates(t)},e.prototype.hasState=function(t,e){return!!t[e]},e.prototype.getItemStates=function(t){var e=this.get("tickStates"),n=[];return(0,tOt.S6)(e,(function(e,r){t[r]&&n.push(r)})),n},e.prototype.clearItemsState=function(t){var e=this,n=this.getItemsByState(t);(0,tOt.S6)(n,(function(n){e.setItemState(n,t,!1)}))},e.prototype.getItemsByState=function(t){var e=this,n=this.getItems();return(0,tOt.hX)(n,(function(n){return e.hasState(n,t)}))},e.prototype.getSidePoint=function(t,e){var n=this.getSideVector(e,t);return{x:t.x+n[0],y:t.y+n[1]}},e.prototype.getTextAnchor=function(t){var e;return(0,tOt.vQ)(t[0],0)?e="center":t[0]>0?e="start":t[0]<0&&(e="end"),e},e.prototype.getTextBaseline=function(t){var e;return(0,tOt.vQ)(t[1],0)?e="middle":t[1]>0?e="top":t[1]<0&&(e="bottom"),e},e.prototype.processOverlap=function(t){},e.prototype.drawLine=function(t){var e=this.getLinePath(),n=this.get("line");this.addShape(t,{type:"path",id:this.getElementId("line"),name:"axis-line",attrs:(0,tOt.CD)({path:e},n.style)})},e.prototype.getTickLineItems=function(t){var e=this,n=[],r=this.get("tickLine"),i=r.alignTick,o=r.length,a=1;return t.length>=2&&(a=t[1].value-t[0].value),(0,tOt.S6)(t,(function(t){var r=t.point;i||(r=e.getTickPoint(t.value-a/2));var c=e.getSidePoint(r,o);n.push({startPoint:r,tickValue:t.value,endPoint:c,tickId:t.id,id:"tickline-"+t.id})})),n},e.prototype.getSubTickLineItems=function(t){var e=[],n=this.get("subTickLine"),r=n.count,i=t.length;if(i>=2)for(var o=0;o0){var n=(0,tOt.dp)(e);if(n>t.threshold){var r=Math.ceil(n/t.threshold),i=e.filter((function(t,e){return e%r==0}));this.set("ticks",i),this.set("originalTicks",e)}}},e.prototype.getLabelAttrs=function(t,e,n){var r=this.get("label"),i=r.offset,o=r.offsetX,a=r.offsetY,c=r.rotate,l=r.formatter,u=this.getSidePoint(t.point,i),s=this.getSideVector(i,u),f=l?l(t.name,t,e):t.name,h=r.style;h=(0,tOt.mf)(h)?(0,tOt.U2)(this.get("theme"),["label","style"],{}):h;var d=(0,tOt.CD)({x:u.x+o,y:u.y+a,text:f,textAlign:this.getTextAnchor(s),textBaseline:this.getTextBaseline(s)},h);return c&&(d.matrix=mAt(u,c)),d},e.prototype.drawLabels=function(t){var e=this,n=this.get("ticks"),r=this.addGroup(t,{name:"axis-label-group",id:this.getElementId("label-group")});(0,tOt.S6)(n,(function(t,i){e.addShape(r,{type:"text",name:"axis-label",id:e.getElementId("label-"+t.id),attrs:e.getLabelAttrs(t,i,n),delegateObject:{tick:t,item:t,index:i}})})),this.processOverlap(r);var i=r.getChildren(),o=(0,tOt.U2)(this.get("theme"),["label","style"],{}),a=this.get("label"),c=a.style,l=a.formatter;if((0,tOt.mf)(c)){var u=i.map((function(t){return(0,tOt.U2)(t.get("delegateObject"),"tick")}));(0,tOt.S6)(i,(function(t,e){var n=t.get("delegateObject").tick,r=l?l(n.name,n,e):n.name,i=(0,tOt.CD)({},o,c(r,e,u));t.attr(i)}))}},e.prototype.getTitleAttrs=function(){var t=this.get("title"),e=t.style,n=t.position,r=t.offset,i=t.spacing,o=void 0===i?0:i,a=t.autoRotate,c=e.fontSize,l=.5;"start"===n?l=0:"end"===n&&(l=1);var u=this.getTickPoint(l),s=this.getSidePoint(u,r||o+c/2),f=(0,tOt.CD)({x:s.x,y:s.y,text:t.text},e),h=t.rotate,d=h;if((0,tOt.UM)(h)&&a){var p=this.getAxisVector(u);d=rAt.Dg(p,[1,0],!0)}if(d){var v=mAt(s,d);f.matrix=v}return f},e.prototype.drawTitle=function(t){var e,n=this.getTitleAttrs(),r=this.addShape(t,{type:"text",id:this.getElementId("title"),name:"axis-title",attrs:n});(null===(e=this.get("title"))||void 0===e?void 0:e.description)&&this.drawDescriptionIcon(t,r,n.matrix)},e.prototype.drawDescriptionIcon=function(t,e,n){var r=this.addGroup(t,{name:"axis-description",id:this.getElementById("description")}),i=e.getBBox(),o=i.maxX,a=i.maxY,c=i.height,l=this.get("title").iconStyle,u=c/2,s=u/6,f=o+4,h=a-c/2,d=[f+u,h-u],p=d[0],v=d[1],g=[p+u,v+u],m=g[0],y=g[1],b=[p,y+u],x=b[0],w=b[1],S=[f,v+u],k=S[0],C=S[1],O=[f+u,h-c/4],E=O[0],M=O[1],A=[E,M+s],P=A[0],_=A[1],D=[P,_+s],T=D[0],Z=D[1],F=[T,Z+3*u/4],j=F[0],I=F[1];this.addShape(r,{type:"path",id:this.getElementId("title-description-icon"),name:"axis-title-description-icon",attrs:(0,QCt.pi)({path:[["M",p,v],["A",u,u,0,0,1,m,y],["A",u,u,0,0,1,x,w],["A",u,u,0,0,1,k,C],["A",u,u,0,0,1,p,v],["M",E,M],["L",P,_],["M",T,Z],["L",j,I]],lineWidth:s,matrix:n},l)}),this.addShape(r,{type:"rect",id:this.getElementId("title-description-rect"),name:"axis-title-description-rect",attrs:{x:f,y:h-c/2,width:c,height:c,stroke:"#000",fill:"#000",opacity:0,matrix:n,cursor:"pointer"}})},e.prototype.applyTickStates=function(t,e){if(this.getItemStates(t).length){var n=this.get("tickStates"),r=this.getElementId("label-"+t.id),i=e.findById(r);if(i){var o=xPt(t,"label",n);o&&i.attr(o)}var a=this.getElementId("tickline-"+t.id),c=e.findById(a);if(c){var l=xPt(t,"tickLine",n);l&&c.attr(l)}}},e.prototype.updateTickStates=function(t){var e=this.getItemStates(t),n=this.get("tickStates"),r=this.get("label"),i=this.getElementByLocalId("label-"+t.id),o=this.get("tickLine"),a=this.getElementByLocalId("tickline-"+t.id);if(e.length){if(i){var c=xPt(t,"label",n);c&&i.attr(c)}if(a){var l=xPt(t,"tickLine",n);l&&a.attr(l)}}else i&&i.attr(r.style),a&&a.attr(o.style)},e}(NAt),SPt=wPt;function kPt(t,e,n,r){var i=e.getChildren(),o=!1;return(0,tOt.S6)(i,(function(e){var i=GAt(t,e,n,r);o=o||i})),o}function CPt(){return EPt}function OPt(t,e,n){return kPt(t,e,n,"head")}function EPt(t,e,n){return kPt(t,e,n,"tail")}function MPt(t,e,n){return kPt(t,e,n,"middle")}function APt(t){var e=function(t){var e=t.attr("matrix");return e&&1!==e[0]}(t)?function(t){var e=[0,0,0];return eAt(e,[1,0,0],t),Math.atan2(e[1],e[0])}(t.attr("matrix")):0;return e%360}function PPt(t,e,n,r){var i=!1,o=APt(e),a=t?Math.abs(n.attr("y")-e.attr("y")):Math.abs(n.attr("x")-e.attr("x")),c=(t?n.attr("y")>e.attr("y"):n.attr("x")>e.attr("x"))?e.getBBox():n.getBBox();if(t){var l=Math.abs(Math.cos(o));i=AAt(l,0,Math.PI/180)?c.width+r>a:c.height/l+r>a}else{l=Math.abs(Math.sin(o));i=AAt(l,0,Math.PI/180)?c.width+r>a:c.height/l+r>a}return i}function _Pt(t,e,n,r){var i=(null==r?void 0:r.minGap)||0,o=e.getChildren().slice().filter((function(t){return t.get("visible")}));if(!o.length)return!1;var a=!1;n&&o.reverse();for(var c=o.length,l=o[0],u=1;u1){h=Math.ceil(h);for(var p=0;p2){var a=i[0],c=i[i.length-1];a.get("visible")||(a.show(),_Pt(t,e,!1,r)&&(o=!0)),c.get("visible")||(c.show(),_Pt(t,e,!0,r)&&(o=!0))}return o}function LPt(t,e,n,r){var i=e.getChildren();if(!i.length)return!1;if(!t&&i.length<2)return!1;var o=VAt(i),a=!1;t?a=!!n&&o>n:a=o>Math.abs(i[1].attr("x")-i[0].attr("x"));a&&function(t,e){(0,tOt.S6)(t,(function(t){var n=mAt({x:t.attr("x"),y:t.attr("y")},e);t.attr("matrix",n)}))}(i,r(n,o));return a}function NPt(){return BPt}function BPt(t,e,n,r){return LPt(t,e,n,(function(){return(0,tOt.hj)(r)?r:t?qAt.verticalAxisRotate:qAt.horizontalAxisRotate}))}function zPt(t,e,n){return LPt(t,e,n,(function(e,n){if(!e)return t?qAt.verticalAxisRotate:qAt.horizontalAxisRotate;if(t)return-Math.acos(e/n);var r=0;return(e>n||(r=Math.asin(e/n))>Math.PI/4)&&(r=Math.PI/4),r}))}var UPt,HPt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{type:"line",locationType:"region",start:null,end:null})},e.prototype.getLinePath=function(){var t=this.get("start"),e=this.get("end"),n=[];return n.push(["M",t.x,t.y]),n.push(["L",e.x,e.y]),n},e.prototype.getInnerLayoutBBox=function(){var e=this.get("start"),n=this.get("end"),r=t.prototype.getInnerLayoutBBox.call(this),i=Math.min(e.x,n.x,r.x),o=Math.min(e.y,n.y,r.y),a=Math.max(e.x,n.x,r.maxX),c=Math.max(e.y,n.y,r.maxY);return{x:i,y:o,minX:i,minY:o,maxX:a,maxY:c,width:a-i,height:c-o}},e.prototype.isVertical=function(){var t=this.get("start"),e=this.get("end");return(0,tOt.vQ)(t.x,e.x)},e.prototype.isHorizontal=function(){var t=this.get("start"),e=this.get("end");return(0,tOt.vQ)(t.y,e.y)},e.prototype.getTickPoint=function(t){var e=this.get("start"),n=this.get("end"),r=n.x-e.x,i=n.y-e.y;return{x:e.x+r*t,y:e.y+i*t}},e.prototype.getSideVector=function(t){var e=this.getAxisVector(),n=lAt.Fv([0,0],e),r=this.get("verticalFactor"),i=[n[1],-1*n[0]];return lAt.bA([0,0],i,t*r)},e.prototype.getAxisVector=function(){var t=this.get("start"),e=this.get("end");return[e.x-t.x,e.y-t.y]},e.prototype.processOverlap=function(t){var e=this,n=this.isVertical(),r=this.isHorizontal();if(n||r){var i=this.get("label"),o=this.get("title"),a=this.get("verticalLimitLength"),c=i.offset,l=a,u=0,s=0;o&&(u=o.style.fontSize,s=o.spacing),l&&(l=l-c-s-u);var f=this.get("overlapOrder");if((0,tOt.S6)(f,(function(n){i[n]&&e.canProcessOverlap(n)&&e.autoProcessOverlap(n,i[n],t,l)})),o&&(0,tOt.UM)(o.offset)){var h=t.getCanvasBBox(),d=n?h.width:h.height;o.offset=c+d+s+u/2}}},e.prototype.canProcessOverlap=function(t){var e=this.get("label");return"autoRotate"!==t||(0,tOt.UM)(e.rotate)},e.prototype.autoProcessOverlap=function(t,e,n,r){var i=this,o=this.isVertical(),a=!1,c=O[t];if(!0===e){this.get("label");a=c.getDefault()(o,n,r)}else if((0,tOt.mf)(e))a=e(o,n,r);else if((0,tOt.Kn)(e)){var l=e;c[l.type]&&(a=c[l.type](o,n,r,l.cfg))}else c[e]&&(a=c[e](o,n,r));if("autoRotate"===t){if(a){var u=n.getChildren(),s=this.get("verticalFactor");(0,tOt.S6)(u,(function(t){if("center"===t.attr("textAlign")){var e=s>0?"end":"start";t.attr("textAlign",e)}}))}}else if("autoHide"===t){var f=n.getChildren().slice(0);(0,tOt.S6)(f,(function(t){t.get("visible")||(i.get("isRegister")&&i.unregisterElement(t),t.remove())}))}},e}(SPt),WPt=HPt,VPt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{type:"circle",locationType:"circle",center:null,radius:null,startAngle:-Math.PI/2,endAngle:3*Math.PI/2})},e.prototype.getLinePath=function(){var t=this.get("center"),e=t.x,n=t.y,r=this.get("radius"),i=r,o=this.get("startAngle"),a=this.get("endAngle"),c=[];if(Math.abs(a-o)===2*Math.PI)c=[["M",e,n-i],["A",r,i,0,1,1,e,n+i],["A",r,i,0,1,1,e,n-i],["Z"]];else{var l=this.getCirclePoint(o),u=this.getCirclePoint(a),s=Math.abs(a-o)>Math.PI?1:0,f=o>a?0:1;c=[["M",e,n],["L",l.x,l.y],["A",r,i,0,s,f,u.x,u.y],["L",e,n]]}return c},e.prototype.getTickPoint=function(t){var e=this.get("startAngle"),n=e+(this.get("endAngle")-e)*t;return this.getCirclePoint(n)},e.prototype.getSideVector=function(t,e){var n=this.get("center"),r=[e.x-n.x,e.y-n.y],i=this.get("verticalFactor"),o=lAt.kE(r);return lAt.bA(r,r,i*t/o),r},e.prototype.getAxisVector=function(t){var e=this.get("center"),n=[t.x-e.x,t.y-e.y];return[n[1],-1*n[0]]},e.prototype.getCirclePoint=function(t,e){var n=this.get("center");return e=e||this.get("radius"),{x:n.x+Math.cos(t)*e,y:n.y+Math.sin(t)*e}},e.prototype.canProcessOverlap=function(t){var e=this.get("label");return"autoRotate"!==t||(0,tOt.UM)(e.rotate)},e.prototype.processOverlap=function(t){var e=this,n=this.get("label"),r=this.get("title"),i=this.get("verticalLimitLength"),o=n.offset,a=i,c=0,l=0;r&&(c=r.style.fontSize,l=r.spacing),a&&(a=a-o-l-c);var u=this.get("overlapOrder");if((0,tOt.S6)(u,(function(r){n[r]&&e.canProcessOverlap(r)&&e.autoProcessOverlap(r,n[r],t,a)})),r&&(0,tOt.UM)(r.offset)){var s=t.getCanvasBBox().height;r.offset=o+s+l+c/2}},e.prototype.autoProcessOverlap=function(t,e,n,r){var i=this,o=!1,a=O[t];if(r>0)if(!0===e)o=a.getDefault()(!1,n,r);else if((0,tOt.mf)(e))o=e(!1,n,r);else if((0,tOt.Kn)(e)){var c=e;a[c.type]&&(o=a[c.type](!1,n,r,c.cfg))}else a[e]&&(o=a[e](!1,n,r));if("autoRotate"===t){if(o){var l=n.getChildren(),u=this.get("verticalFactor");(0,tOt.S6)(l,(function(t){if("center"===t.attr("textAlign")){var e=u>0?"end":"start";t.attr("textAlign",e)}}))}}else if("autoHide"===t){var s=n.getChildren().slice(0);(0,tOt.S6)(s,(function(t){t.get("visible")||(i.get("isRegister")&&i.unregisterElement(t),t.remove())}))}},e}(SPt),GPt=VPt,XPt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{name:"crosshair",type:"base",line:{},text:null,textBackground:{},capture:!1,defaultCfg:{line:{style:{lineWidth:1,stroke:qAt.lineColor}},text:{position:"start",offset:10,autoRotate:!1,content:null,style:{fill:qAt.textColor,textAlign:"center",textBaseline:"middle",fontFamily:qAt.fontFamily}},textBackground:{padding:5,style:{stroke:qAt.lineColor}}}})},e.prototype.renderInner=function(t){this.get("line")&&this.renderLine(t),this.get("text")&&(this.renderText(t),this.renderBackground(t))},e.prototype.renderText=function(t){var e=this.get("text"),n=e.style,r=e.autoRotate,i=e.content;if(!(0,tOt.UM)(i)){var o=this.getTextPoint(),a=null;if(r)a=mAt(o,this.getRotateAngle());this.addShape(t,{type:"text",name:"crosshair-text",id:this.getElementId("text"),attrs:(0,QCt.pi)((0,QCt.pi)((0,QCt.pi)({},o),{text:i,matrix:a}),n)})}},e.prototype.renderLine=function(t){var e=this.getLinePath(),n=this.get("line").style;this.addShape(t,{type:"path",name:"crosshair-line",id:this.getElementId("line"),attrs:(0,QCt.pi)({path:e},n)})},e.prototype.renderBackground=function(t){var e=this.getElementId("text"),n=t.findById(e),r=this.get("textBackground");if(r&&n){var i=n.getBBox(),o=SAt(r.padding),a=r.style;this.addShape(t,{type:"rect",name:"crosshair-text-background",id:this.getElementId("text-background"),attrs:(0,QCt.pi)({x:i.x-o[3],y:i.y-o[0],width:i.width+o[1]+o[3],height:i.height+o[0]+o[2],matrix:n.attr("matrix")},a)}).toBack()}},e}(NAt),qPt=XPt,YPt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{type:"line",locationType:"region",start:null,end:null})},e.prototype.getRotateAngle=function(){var t=this.getLocation(),e=t.start,n=t.end,r=this.get("text").position,i=Math.atan2(n.y-e.y,n.x-e.x);return"start"===r?i-Math.PI/2:i+Math.PI/2},e.prototype.getTextPoint=function(){var t=this.getLocation(),e=t.start,n=t.end,r=this.get("text");return DAt(e,n,r.position,r.offset)},e.prototype.getLinePath=function(){var t=this.getLocation(),e=t.start,n=t.end;return[["M",e.x,e.y],["L",n.x,n.y]]},e}(qPt),$Pt=YPt,KPt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{type:"circle",locationType:"circle",center:null,radius:100,startAngle:-Math.PI/2,endAngle:3*Math.PI/2})},e.prototype.getRotateAngle=function(){var t=this.getLocation(),e=t.startAngle,n=t.endAngle;return"start"===this.get("text").position?e+Math.PI/2:n-Math.PI/2},e.prototype.getTextPoint=function(){var t=this.get("text"),e=t.position,n=t.offset,r=this.getLocation(),i=r.center,o=r.radius,a=r.startAngle,c=r.endAngle,l="start"===e?a:c,u=this.getRotateAngle()-Math.PI,s=MAt(i,o,l),f=Math.cos(u)*n,h=Math.sin(u)*n;return{x:s.x+f,y:s.y+h}},e.prototype.getLinePath=function(){var t=this.getLocation(),e=t.center,n=t.radius,r=t.startAngle,i=t.endAngle,o=null;if(i-r==2*Math.PI){var a=e.x,c=e.y;o=[["M",a,c-n],["A",n,n,0,1,1,a,c+n],["A",n,n,0,1,1,a,c-n],["Z"]]}else{var l=MAt(e,n,r),u=MAt(e,n,i),s=Math.abs(i-r)>Math.PI?1:0,f=r>i?0:1;o=[["M",l.x,l.y],["A",n,n,0,s,f,u.x,u.y]]}return o},e}(qPt),JPt=KPt,QPt="g2-crosshair",t_t=QPt+"-line",e_t=QPt+"-text",n_t=((UPt={})[""+QPt]={position:"relative"},UPt[""+t_t]={position:"absolute",backgroundColor:"rgba(0, 0, 0, 0.25)"},UPt[""+e_t]={position:"absolute",color:qAt.textColor,fontFamily:qAt.fontFamily},UPt),r_t=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{name:"crosshair",type:"html",locationType:"region",start:{x:0,y:0},end:{x:0,y:0},capture:!1,text:null,containerTpl:'
',crosshairTpl:'
',textTpl:'{content}',domStyles:null,containerClassName:QPt,defaultStyles:n_t,defaultCfg:{text:{position:"start",content:null,align:"center",offset:10}}})},e.prototype.render=function(){this.resetText(),this.resetPosition()},e.prototype.initCrossHair=function(){var t=this.getContainer(),e=gOt(this.get("crosshairTpl"));t.appendChild(e),this.applyStyle(t_t,e),this.set("crosshairEl",e)},e.prototype.getTextPoint=function(){var t=this.getLocation(),e=t.start,n=t.end,r=this.get("text");return DAt(e,n,r.position,r.offset)},e.prototype.resetText=function(){var t=this.get("text"),e=this.get("textEl");if(t){var n=t.content;if(!e){var r=this.getContainer();e=gOt((0,tOt.ng)(this.get("textTpl"),t)),r.appendChild(e),this.applyStyle(e_t,e),this.set("textEl",e)}e.innerHTML=n}else e&&e.remove()},e.prototype.isVertical=function(t,e){return t.x===e.x},e.prototype.resetPosition=function(){var t=this.get("crosshairEl");t||(this.initCrossHair(),t=this.get("crosshairEl"));var e=this.get("start"),n=this.get("end"),r=Math.min(e.x,n.x),i=Math.min(e.y,n.y);this.isVertical(e,n)?mOt(t,{width:"1px",height:_At(Math.abs(n.y-e.y))}):mOt(t,{height:"1px",width:_At(Math.abs(n.x-e.x))}),mOt(t,{top:_At(i),left:_At(r)}),this.alignText()},e.prototype.alignText=function(){var t=this.get("textEl");if(t){var e=this.get("text").align,n=t.clientWidth,r=this.getTextPoint();switch(e){case"center":r.x=r.x-n/2;break;case"right":r.x=r.x-n}mOt(t,{top:_At(r.y),left:_At(r.x)})}},e.prototype.updateInner=function(e){(0,tOt.wH)(e,"text")&&this.resetText(),t.prototype.updateInner.call(this,e)},e}(mPt),i_t=r_t,o_t=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{name:"grid",line:{},alternateColor:null,capture:!1,items:[],closed:!1,defaultCfg:{line:{type:"line",style:{lineWidth:1,stroke:qAt.lineColor}}}})},e.prototype.getLineType=function(){return(this.get("line")||this.get("defaultCfg").line).type},e.prototype.renderInner=function(t){this.drawGrid(t)},e.prototype.getAlternatePath=function(t,e){var n=this.getGridPath(t),r=e.slice(0).reverse(),i=this.getGridPath(r,!0);return this.get("closed")?n=n.concat(i):(i[0][0]="L",(n=n.concat(i)).push(["Z"])),n},e.prototype.getPathStyle=function(){return this.get("line").style},e.prototype.drawGrid=function(t){var e=this,n=this.get("line"),r=this.get("items"),i=this.get("alternateColor"),o=null;(0,tOt.S6)(r,(function(a,c){var l=a.id||c;if(n){var u=e.getPathStyle();u=(0,tOt.mf)(u)?u(a,c,r):u;var s=e.getElementId("line-"+l),f=e.getGridPath(a.points);e.addShape(t,{type:"path",name:"grid-line",id:s,attrs:(0,tOt.CD)({path:f},u)})}if(i&&c>0){var h=e.getElementId("region-"+l),d=c%2==0;if((0,tOt.HD)(i))d&&e.drawAlternateRegion(h,t,o.points,a.points,i);else{var p=d?i[1]:i[0];e.drawAlternateRegion(h,t,o.points,a.points,p)}}o=a}))},e.prototype.drawAlternateRegion=function(t,e,n,r,i){var o=this.getAlternatePath(n,r);this.addShape(e,{type:"path",id:t,name:"grid-region",attrs:{path:o,fill:i}})},e}(NAt),a_t=o_t;var c_t,l_t=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{type:"circle",center:null,closed:!0})},e.prototype.getGridPath=function(t,e){var n=this.getLineType(),r=this.get("closed"),i=[];if(t.length)if("circle"===n){var o=this.get("center"),a=t[0],c=function(t,e,n,r){var i=n-t,o=r-e;return Math.sqrt(i*i+o*o)}(o.x,o.y,a.x,a.y),l=e?0:1;r?(i.push(["M",o.x,o.y-c]),i.push(["A",c,c,0,0,l,o.x,o.y+c]),i.push(["A",c,c,0,0,l,o.x,o.y-c]),i.push(["Z"])):(0,tOt.S6)(t,(function(t,e){0===e?i.push(["M",t.x,t.y]):i.push(["A",c,c,0,0,l,t.x,t.y])}))}else(0,tOt.S6)(t,(function(t,e){0===e?i.push(["M",t.x,t.y]):i.push(["L",t.x,t.y])})),r&&i.push(["Z"]);return i},e}(a_t),u_t=l_t,s_t=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{type:"line"})},e.prototype.getGridPath=function(t){var e=[];return(0,tOt.S6)(t,(function(t,n){0===n?e.push(["M",t.x,t.y]):e.push(["L",t.x,t.y])})),e},e}(a_t),f_t=s_t,h_t=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{name:"legend",layout:"horizontal",locationType:"point",x:0,y:0,offsetX:0,offsetY:0,title:null,background:null})},e.prototype.getLayoutBBox=function(){var e=t.prototype.getLayoutBBox.call(this),n=this.get("maxWidth"),r=this.get("maxHeight"),i=e.width,o=e.height;return n&&(i=Math.min(i,n)),r&&(o=Math.min(o,r)),OAt(e.minX,e.minY,i,o)},e.prototype.setLocation=function(t){this.set("x",t.x),this.set("y",t.y),this.resetLocation()},e.prototype.resetLocation=function(){var t=this.get("x"),e=this.get("y"),n=this.get("offsetX"),r=this.get("offsetY");this.moveElementTo(this.get("group"),{x:t+n,y:e+r})},e.prototype.applyOffset=function(){this.resetLocation()},e.prototype.getDrawPoint=function(){return this.get("currentPoint")},e.prototype.setDrawPoint=function(t){return this.set("currentPoint",t)},e.prototype.renderInner=function(t){this.resetDraw(),this.get("title")&&this.drawTitle(t),this.drawLegendContent(t),this.get("background")&&this.drawBackground(t)},e.prototype.drawBackground=function(t){var e=this.get("background"),n=t.getBBox(),r=SAt(e.padding),i=(0,QCt.pi)({x:0,y:0,width:n.width+r[1]+r[3],height:n.height+r[0]+r[2]},e.style);this.addShape(t,{type:"rect",id:this.getElementId("background"),name:"legend-background",attrs:i}).toBack()},e.prototype.drawTitle=function(t){var e=this.get("currentPoint"),n=this.get("title"),r=n.spacing,i=n.style,o=n.text,a=this.addShape(t,{type:"text",id:this.getElementId("title"),name:"legend-title",attrs:(0,QCt.pi)({text:o,x:e.x,y:e.y},i)}).getBBox();this.set("currentPoint",{x:e.x,y:a.maxY+r})},e.prototype.resetDraw=function(){var t=this.get("background"),e={x:0,y:0};if(t){var n=SAt(t.padding);e.x=n[3],e.y=n[0]}this.set("currentPoint",e)},e}(NAt),d_t=h_t,p_t={marker:{style:{inactiveFill:"#000",inactiveOpacity:.45,fill:"#000",opacity:1,size:12}},text:{style:{fill:"#ccc",fontSize:12}}},v_t={fill:qAt.textColor,fontSize:12,textAlign:"start",textBaseline:"middle",fontFamily:qAt.fontFamily,fontWeight:"normal",lineHeight:12},g_t="navigation-arrow-right",m_t="navigation-arrow-left",y_t={right:90*Math.PI/180,left:270*Math.PI/180,up:0,down:180*Math.PI/180},b_t=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.currentPageIndex=1,e.totalPagesCnt=1,e.pageWidth=0,e.pageHeight=0,e.startX=0,e.startY=0,e.onNavigationBack=function(){var t=e.getElementByLocalId("item-group");if(e.currentPageIndex>1){e.currentPageIndex-=1,e.updateNavigation();var n=e.getCurrentNavigationMatrix();e.get("animate")?t.animate({matrix:n},100):t.attr({matrix:n})}},e.onNavigationAfter=function(){var t=e.getElementByLocalId("item-group");if(e.currentPageIndexp&&(p=y),"horizontal"===f?(v&&vc}(t,v))&&(1===g&&(m=v.x+s,n.moveElementTo(d,{x:k,y:v.y+f/2-p.height/2-p.minY})),g+=1,v.x=r,v.y+=S),n.moveElementTo(t,v),t.getParent().setClip({type:"rect",attrs:{x:v.x,y:v.y,width:i+s,height:f}}),v.x+=i+s}))}else{(0,tOt.S6)(a,(function(t){var e=t.getBBox();e.width>y&&(y=e.width)})),b=y,y+=s,c&&(y=Math.min(c,y),b=Math.min(c,b)),this.pageWidth=y,this.pageHeight=l-Math.max(p.height,f+x);var C=Math.floor(this.pageHeight/(f+x));(0,tOt.S6)(a,(function(t,e){0!==e&&e%C==0&&(g+=1,v.x+=y,v.y=i),n.moveElementTo(t,v),t.getParent().setClip({type:"rect",attrs:{x:v.x,y:v.y,width:y,height:f}}),v.y+=f+x})),this.totalPagesCnt=g,this.moveElementTo(d,{x:r+b/2-p.width/2-p.minX,y:l-p.height-p.minY})}this.pageHeight&&this.pageWidth&&e.getParent().setClip({type:"rect",attrs:{x:this.startX,y:this.startY,width:this.pageWidth,height:this.pageHeight}}),"horizontal"===o&&this.get("maxRow")?this.totalPagesCnt=Math.ceil(g/this.get("maxRow")):this.totalPagesCnt=g,this.currentPageIndex>this.totalPagesCnt&&(this.currentPageIndex=1),this.updateNavigation(d),e.attr("matrix",this.getCurrentNavigationMatrix())},e.prototype.drawNavigation=function(t,e,n,r){var i={x:0,y:0},o=this.addGroup(t,{id:this.getElementId("navigation-group"),name:"legend-navigation"}),a=(0,tOt.U2)(r.marker,"style",{}),c=a.size,l=void 0===c?12:c,u=(0,QCt._T)(a,["size"]),s=this.drawArrow(o,i,m_t,"horizontal"===e?"up":"left",l,u);s.on("click",this.onNavigationBack);var f=s.getBBox();i.x+=f.width+2;var h=this.addShape(o,{type:"text",id:this.getElementId("navigation-text"),name:"navigation-text",attrs:(0,QCt.pi)({x:i.x,y:i.y+l/2,text:n,textBaseline:"middle"},(0,tOt.U2)(r.text,"style"))}).getBBox();return i.x+=h.width+2,this.drawArrow(o,i,g_t,"horizontal"===e?"down":"right",l,u).on("click",this.onNavigationAfter),o},e.prototype.updateNavigation=function(t){var e=(0,tOt.b$)({},p_t,this.get("pageNavigator")).marker.style,n=e.fill,r=e.opacity,i=e.inactiveFill,o=e.inactiveOpacity,a=this.currentPageIndex+"/"+this.totalPagesCnt,c=t?t.getChildren()[1]:this.getElementByLocalId("navigation-text"),l=t?t.findById(this.getElementId(m_t)):this.getElementByLocalId(m_t),u=t?t.findById(this.getElementId(g_t)):this.getElementByLocalId(g_t);c.attr("text",a),l.attr("opacity",1===this.currentPageIndex?o:r),l.attr("fill",1===this.currentPageIndex?i:n),l.attr("cursor",1===this.currentPageIndex?"not-allowed":"pointer"),u.attr("opacity",this.currentPageIndex===this.totalPagesCnt?o:r),u.attr("fill",this.currentPageIndex===this.totalPagesCnt?i:n),u.attr("cursor",this.currentPageIndex===this.totalPagesCnt?"not-allowed":"pointer");var s=l.getBBox().maxX+2;c.attr("x",s),s+=c.getBBox().width+2,this.updateArrowPath(u,{x:s,y:0})},e.prototype.drawArrow=function(t,e,n,r,i,o){var a=e.x,c=e.y,l=this.addShape(t,{type:"path",id:this.getElementId(n),name:n,attrs:(0,QCt.pi)({size:i,direction:r,path:[["M",a+i/2,c],["L",a,c+i],["L",a+i,c+i],["Z"]],cursor:"pointer"},o)});return l.attr("matrix",mAt({x:a+i/2,y:c+i/2},y_t[r])),l},e.prototype.updateArrowPath=function(t,e){var n=e.x,r=e.y,i=t.attr(),o=i.size,a=i.direction,c=mAt({x:n+o/2,y:r+o/2},y_t[a]);t.attr("path",[["M",n+o/2,r],["L",n,r+o],["L",n+o,r+o],["Z"]]),t.attr("matrix",c)},e.prototype.getCurrentNavigationMatrix=function(){var t=this,e=t.currentPageIndex,n=t.pageWidth,r=t.pageHeight;return yAt("horizontal"===this.get("layout")?{x:0,y:r*(1-e)}:{x:n*(1-e),y:0})},e.prototype.applyItemStates=function(t,e){if(this.getItemStates(t).length>0){var n=e.getChildren(),r=this.get("itemStates");(0,tOt.S6)(n,(function(e){var n=e.get("name").split("-")[2],i=xPt(t,n,r);i&&(e.attr(i),"marker"!==n||e.get("isStroke")&&e.get("isFill")||(e.get("isStroke")&&e.attr("fill",null),e.get("isFill")&&e.attr("stroke",null)))}))}},e.prototype.getLimitItemWidth=function(){var t=this.get("itemWidth"),e=this.get("maxItemWidth");return e?t&&(e=t<=e?t:e):t&&(e=t),e},e}(d_t),x_t=b_t,w_t=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{type:"continue",min:0,max:100,value:null,colors:[],track:{},rail:{},label:{},handler:{},slidable:!0,tip:null,step:null,maxWidth:null,maxHeight:null,defaultCfg:{label:{align:"rail",spacing:5,formatter:null,style:{fontSize:12,fill:qAt.textColor,textBaseline:"middle",fontFamily:qAt.fontFamily}},handler:{size:10,style:{fill:"#fff",stroke:"#333"}},track:{},rail:{type:"color",size:20,defaultLength:100,style:{fill:"#DCDEE2"}},title:{spacing:5,style:{fill:qAt.textColor,fontSize:12,textAlign:"start",textBaseline:"top"}}}})},e.prototype.isSlider=function(){return!0},e.prototype.getValue=function(){return this.getCurrentValue()},e.prototype.getRange=function(){return{min:this.get("min"),max:this.get("max")}},e.prototype.setRange=function(t,e){this.update({min:t,max:e})},e.prototype.setValue=function(t){var e=this.getValue();this.set("value",t);var n=this.get("group");this.resetTrackClip(),this.get("slidable")&&this.resetHandlers(n),this.delegateEmit("valuechanged",{originValue:e,value:t})},e.prototype.initEvent=function(){var t=this.get("group");this.bindSliderEvent(t),this.bindRailEvent(t),this.bindTrackEvent(t)},e.prototype.drawLegendContent=function(t){this.drawRail(t),this.drawLabels(t),this.fixedElements(t),this.resetTrack(t),this.resetTrackClip(t),this.get("slidable")&&this.resetHandlers(t)},e.prototype.bindSliderEvent=function(t){this.bindHandlersEvent(t)},e.prototype.bindHandlersEvent=function(t){var e=this;t.on("legend-handler-min:drag",(function(t){var n=e.getValueByCanvasPoint(t.x,t.y),r=e.getCurrentValue()[1];rn&&(r=n),e.setValue([r,n])}))},e.prototype.bindRailEvent=function(t){},e.prototype.bindTrackEvent=function(t){var e=this,n=null;t.on("legend-track:dragstart",(function(t){n={x:t.x,y:t.y}})),t.on("legend-track:drag",(function(t){if(n){var r=e.getValueByCanvasPoint(n.x,n.y),i=e.getValueByCanvasPoint(t.x,t.y),o=e.getCurrentValue(),a=o[1]-o[0],c=e.getRange(),l=i-r;l<0?o[0]+l>c.min?e.setValue([o[0]+l,o[1]+l]):e.setValue([c.min,c.min+a]):l>0&&(l>0&&o[1]+li&&(l=i),l0&&this.changeRailLength(r,i,n[i]-u)}},e.prototype.changeRailLength=function(t,e,n){var r,i=t.getBBox();r="height"===e?this.getRailPath(i.x,i.y,i.width,n):this.getRailPath(i.x,i.y,n,i.height),t.attr("path",r)},e.prototype.changeRailPosition=function(t,e,n){var r=t.getBBox(),i=this.getRailPath(e,n,r.width,r.height);t.attr("path",i)},e.prototype.fixedHorizontal=function(t,e,n,r){var i=this.get("label"),o=i.align,a=i.spacing,c=n.getBBox(),l=t.getBBox(),u=e.getBBox(),s=c.height;this.fitRailLength(l,u,c,n),c=n.getBBox(),"rail"===o?(t.attr({x:r.x,y:r.y+s/2}),this.changeRailPosition(n,r.x+l.width+a,r.y),e.attr({x:r.x+l.width+c.width+2*a,y:r.y+s/2})):"top"===o?(t.attr({x:r.x,y:r.y}),e.attr({x:r.x+c.width,y:r.y}),this.changeRailPosition(n,r.x,r.y+l.height+a)):(this.changeRailPosition(n,r.x,r.y),t.attr({x:r.x,y:r.y+c.height+a}),e.attr({x:r.x+c.width,y:r.y+c.height+a}))},e.prototype.fixedVertail=function(t,e,n,r){var i=this.get("label"),o=i.align,a=i.spacing,c=n.getBBox(),l=t.getBBox(),u=e.getBBox();if(this.fitRailLength(l,u,c,n),c=n.getBBox(),"rail"===o)t.attr({x:r.x,y:r.y}),this.changeRailPosition(n,r.x,r.y+l.height+a),e.attr({x:r.x,y:r.y+l.height+c.height+2*a});else if("right"===o)t.attr({x:r.x+c.width+a,y:r.y}),this.changeRailPosition(n,r.x,r.y),e.attr({x:r.x+c.width+a,y:r.y+c.height});else{var s=Math.max(l.width,u.width);t.attr({x:r.x,y:r.y}),this.changeRailPosition(n,r.x+s+a,r.y),e.attr({x:r.x,y:r.y+c.height})}},e}(d_t),S_t=w_t,k_t="g2-tooltip",C_t="g2-tooltip-title",O_t="g2-tooltip-list",E_t="g2-tooltip-list-item",M_t="g2-tooltip-marker",A_t="g2-tooltip-value",P_t="g2-tooltip-name",__t="g2-tooltip-crosshair-x",D_t="g2-tooltip-crosshair-y",T_t=((c_t={})[""+k_t]={position:"absolute",visibility:"visible",zIndex:8,transition:"visibility 0.2s cubic-bezier(0.23, 1, 0.32, 1), left 0.4s cubic-bezier(0.23, 1, 0.32, 1), top 0.4s cubic-bezier(0.23, 1, 0.32, 1)",backgroundColor:"rgba(255, 255, 255, 0.9)",boxShadow:"0px 0px 10px #aeaeae",borderRadius:"3px",color:"rgb(87, 87, 87)",fontSize:"12px",fontFamily:qAt.fontFamily,lineHeight:"20px",padding:"10px 10px 6px 10px"},c_t[""+C_t]={marginBottom:"4px"},c_t[""+O_t]={margin:"0px",listStyleType:"none",padding:"0px"},c_t[""+E_t]={listStyleType:"none",marginBottom:"4px"},c_t[""+M_t]={width:"8px",height:"8px",borderRadius:"50%",display:"inline-block",marginRight:"8px"},c_t[""+A_t]={display:"inline-block",float:"right",marginLeft:"30px"},c_t[""+__t]={position:"absolute",width:"1px",backgroundColor:"rgba(0, 0, 0, 0.25)"},c_t[""+D_t]={position:"absolute",height:"1px",backgroundColor:"rgba(0, 0, 0, 0.25)"},c_t);var Z_t=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{name:"tooltip",type:"html",x:0,y:0,items:[],customContent:null,containerTpl:'
    ',itemTpl:'
  • \n \n {name}:\n {value}\n
  • ',xCrosshairTpl:'
    ',yCrosshairTpl:'
    ',title:null,showTitle:!0,region:null,crosshairsRegion:null,containerClassName:k_t,crosshairs:null,offset:10,position:"right",domStyles:null,defaultStyles:T_t})},e.prototype.render=function(){this.get("customContent")?this.renderCustomContent():(this.resetTitle(),this.renderItems()),this.resetPosition()},e.prototype.clear=function(){this.clearCrosshairs(),this.setTitle(""),this.clearItemDoms()},e.prototype.show=function(){var t=this.getContainer();t&&!this.destroyed&&(this.set("visible",!0),mOt(t,{visibility:"visible"}),this.setCrossHairsVisible(!0))},e.prototype.hide=function(){var t=this.getContainer();t&&!this.destroyed&&(this.set("visible",!1),mOt(t,{visibility:"hidden"}),this.setCrossHairsVisible(!1))},e.prototype.getLocation=function(){return{x:this.get("x"),y:this.get("y")}},e.prototype.setLocation=function(t){this.set("x",t.x),this.set("y",t.y),this.resetPosition()},e.prototype.setCrossHairsVisible=function(t){var e=t?"":"none",n=this.get("xCrosshairDom"),r=this.get("yCrosshairDom");n&&mOt(n,{display:e}),r&&mOt(r,{display:e})},e.prototype.initContainer=function(){if(t.prototype.initContainer.call(this),this.get("customContent")){this.get("container")&&this.get("container").remove();var e=this.getHtmlContentNode();this.get("parent").appendChild(e),this.set("container",e),this.resetStyles(),this.applyStyles()}},e.prototype.updateInner=function(e){this.get("customContent")?this.renderCustomContent():(function(t,e){var n=!1;return(0,tOt.S6)(e,(function(e){if((0,tOt.wH)(t,e))return n=!0,!1})),n}(e,["title","showTitle"])&&this.resetTitle(),(0,tOt.wH)(e,"items")&&this.renderItems()),t.prototype.updateInner.call(this,e)},e.prototype.initDom=function(){this.cacheDoms()},e.prototype.removeDom=function(){t.prototype.removeDom.call(this),this.clearCrosshairs()},e.prototype.resetPosition=function(){var t,e=this.get("x"),n=this.get("y"),r=this.get("offset"),i=this.getOffset(),o=i.offsetX,a=i.offsetY,c=this.get("position"),l=this.get("region"),u=this.getContainer(),s=this.getBBox(),f=s.width,h=s.height;l&&(t=CAt(l));var d=function(t,e,n,r,i,o,a){var c=function(t,e,n,r,i,o){var a=t,c=e;switch(o){case"left":a=t-r-n,c=e-i/2;break;case"right":a=t+n,c=e-i/2;break;case"top":a=t-r/2,c=e-i-n;break;case"bottom":a=t-r/2,c=e+n;break;default:a=t+n,c=e-i-n}return{x:a,y:c}}(t,e,n,r,i,o);if(a){var l=function(t,e,n,r,i){return{left:ti.x+i.width,top:ei.y+i.height}}(c.x,c.y,r,i,a);"auto"===o?(l.right&&(c.x=Math.max(0,t-r-n)),l.top&&(c.y=Math.max(0,e-i-n))):"top"===o||"bottom"===o?(l.left&&(c.x=a.x),l.right&&(c.x=a.x+a.width-r),"top"===o&&l.top&&(c.y=e+n),"bottom"===o&&l.bottom&&(c.y=e-i-n)):(l.top&&(c.y=a.y),l.bottom&&(c.y=a.y+a.height-i),"left"===o&&l.left&&(c.x=t+n),"right"===o&&l.right&&(c.x=t-r-n))}return c}(e,n,r,f,h,c,t);mOt(u,{left:_At(d.x+o),top:_At(d.y+a)}),this.resetCrosshairs()},e.prototype.renderCustomContent=function(){var t=this.getHtmlContentNode(),e=this.get("parent"),n=this.get("container");n&&n.parentNode===e?e.replaceChild(t,n):e.appendChild(t),this.set("container",t),this.resetStyles(),this.applyStyles()},e.prototype.getHtmlContentNode=function(){var t,e=this.get("customContent");if(e){var n=e(this.get("title"),this.get("items"));t=(0,tOt.kK)(n)?n:gOt(n)}return t},e.prototype.cacheDoms=function(){var t=this.getContainer(),e=t.getElementsByClassName(C_t)[0],n=t.getElementsByClassName(O_t)[0];this.set("titleDom",e),this.set("listDom",n)},e.prototype.resetTitle=function(){var t=this.get("title");this.get("showTitle")&&t?this.setTitle(t):this.setTitle("")},e.prototype.setTitle=function(t){var e=this.get("titleDom");e&&(e.innerText=t)},e.prototype.resetCrosshairs=function(){var t=this.get("crosshairsRegion"),e=this.get("crosshairs");if(t&&e){var n=CAt(t),r=this.get("xCrosshairDom"),i=this.get("yCrosshairDom");"x"===e?(this.resetCrosshair("x",n),i&&(i.remove(),this.set("yCrosshairDom",null))):"y"===e?(this.resetCrosshair("y",n),r&&(r.remove(),this.set("xCrosshairDom",null))):(this.resetCrosshair("x",n),this.resetCrosshair("y",n)),this.setCrossHairsVisible(this.get("visible"))}else this.clearCrosshairs()},e.prototype.resetCrosshair=function(t,e){var n=this.checkCrosshair(t),r=this.get(t);mOt(n,"x"===t?{left:_At(r),top:_At(e.y),height:_At(e.height)}:{top:_At(r),left:_At(e.x),width:_At(e.width)})},e.prototype.checkCrosshair=function(t){var e=t+"CrosshairDom",n=t+"CrosshairTpl",r="CROSSHAIR_"+t.toUpperCase(),i=M[r],o=this.get(e),a=this.get("parent");return o||(o=gOt(this.get(n)),this.applyStyle(i,o),a.appendChild(o),this.set(e,o)),o},e.prototype.renderItems=function(){this.clearItemDoms();var t=this.get("items"),e=this.get("itemTpl"),n=this.get("listDom");n&&((0,tOt.S6)(t,(function(t){var r=tEt.toCSSGradient(t.color),i=(0,QCt.pi)((0,QCt.pi)({},t),{color:r}),o=gOt((0,tOt.ng)(e,i));n.appendChild(o)})),this.applyChildrenStyles(n,this.get("domStyles")))},e.prototype.clearItemDoms=function(){this.get("listDom")&&kAt(this.get("listDom"))},e.prototype.clearCrosshairs=function(){var t=this.get("xCrosshairDom"),e=this.get("yCrosshairDom");t&&t.remove(),e&&e.remove(),this.set("xCrosshairDom",null),this.set("yCrosshairDom",null)},e}(mPt),F_t=Z_t,j_t={opacity:0},I_t={stroke:"#C5C5C5",strokeOpacity:.85},R_t={fill:"#CACED4",opacity:.85},L_t=n(85687);function N_t(t){return function(t){return(0,tOt.UI)(t,(function(t,e){return[0===e?"M":"L",t[0],t[1]]}))}(t)}function B_t(t,e,n,r){void 0===r&&(r=!0);var i=new cMt({values:t}),o=new gEt({values:(0,tOt.UI)(t,(function(t,e){return e}))}),a=(0,tOt.UI)(t,(function(t,r){return[o.scale(r)*e,n-i.scale(t)*n]}));return r?function(t){if(t.length<=2)return N_t(t);var e=[];(0,tOt.S6)(t,(function(t){(0,tOt.Xy)(t,e.slice(e.length-2))||e.push(t[0],t[1])}));var n=(0,L_t.e9)(e,!1),r=(0,tOt.YM)(t),i=r[0],o=r[1];return n.unshift(["M",i,o]),n}(a):N_t(a)}function z_t(t,e,n,r){var i=(0,QCt.pr)(t),o=function(t,e){var n=new cMt({values:t}),r=n.max<0?n.max:Math.max(0,n.min);return e-n.scale(r)*e}(r,n);return i.push(["L",e,o]),i.push(["L",0,o]),i.push(["Z"]),i}var U_t=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{name:"trend",x:0,y:0,width:200,height:16,smooth:!0,isArea:!1,data:[],backgroundStyle:j_t,lineStyle:I_t,areaStyle:R_t})},e.prototype.renderInner=function(t){var e=this.cfg,n=e.width,r=e.height,i=e.data,o=e.smooth,a=e.isArea,c=e.backgroundStyle,l=e.lineStyle,u=e.areaStyle;this.addShape(t,{id:this.getElementId("background"),type:"rect",attrs:(0,QCt.pi)({x:0,y:0,width:n,height:r},c)});var s=B_t(i,n,r,o);if(this.addShape(t,{id:this.getElementId("line"),type:"path",attrs:(0,QCt.pi)({path:s},l)}),a){var f=z_t(s,n,r,i);this.addShape(t,{id:this.getElementId("area"),type:"path",attrs:(0,QCt.pi)({path:f},u)})}},e.prototype.applyOffset=function(){var t=this.cfg,e=t.x,n=t.y;this.moveElementTo(this.get("group"),{x:e,y:n})},e}(NAt),H_t={fill:"#F7F7F7",stroke:"#BFBFBF",radius:2,opacity:1,cursor:"ew-resize",highLightFill:"#FFF"},W_t=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{name:"handler",x:0,y:0,width:10,height:24,style:H_t})},e.prototype.renderInner=function(t){var e=this.cfg,n=e.width,r=e.height,i=e.style,o=i.fill,a=i.stroke,c=i.radius,l=i.opacity,u=i.cursor;this.addShape(t,{type:"rect",id:this.getElementId("background"),attrs:{x:0,y:0,width:n,height:r,fill:o,stroke:a,radius:c,opacity:l,cursor:u}});var s=1/3*n,f=2/3*n,h=1/4*r,d=3/4*r;this.addShape(t,{id:this.getElementId("line-left"),type:"line",attrs:{x1:s,y1:h,x2:s,y2:d,stroke:a,cursor:u}}),this.addShape(t,{id:this.getElementId("line-right"),type:"line",attrs:{x1:f,y1:h,x2:f,y2:d,stroke:a,cursor:u}})},e.prototype.applyOffset=function(){this.moveElementTo(this.get("group"),{x:this.get("x"),y:this.get("y")})},e.prototype.initEvent=function(){this.bindEvents()},e.prototype.bindEvents=function(){var t=this;this.get("group").on("mouseenter",(function(){var e=t.get("style").highLightFill;t.getElementByLocalId("background").attr("fill",e),t.draw()})),this.get("group").on("mouseleave",(function(){var e=t.get("style").fill;t.getElementByLocalId("background").attr("fill",e),t.draw()}))},e.prototype.draw=function(){var t=this.get("container").get("canvas");t&&t.draw()},e}(NAt),V_t={fill:"#416180",opacity:.05},G_t={fill:"#5B8FF9",opacity:.15,cursor:"move"},X_t={width:10,height:24},q_t={textBaseline:"middle",fill:"#000",opacity:.45},Y_t=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.onMouseDown=function(t){return function(n){e.currentTarget=t;var r=n.originalEvent;r.stopPropagation(),r.preventDefault(),e.prevX=(0,tOt.U2)(r,"touches.0.pageX",r.pageX),e.prevY=(0,tOt.U2)(r,"touches.0.pageY",r.pageY);var i=e.getContainerDOM();i.addEventListener("mousemove",e.onMouseMove),i.addEventListener("mouseup",e.onMouseUp),i.addEventListener("mouseleave",e.onMouseUp),i.addEventListener("touchmove",e.onMouseMove),i.addEventListener("touchend",e.onMouseUp),i.addEventListener("touchcancel",e.onMouseUp)}},e.onMouseMove=function(t){var n=e.cfg.width,r=[e.get("start"),e.get("end")];t.stopPropagation(),t.preventDefault();var i=(0,tOt.U2)(t,"touches.0.pageX",t.pageX),o=(0,tOt.U2)(t,"touches.0.pageY",t.pageY),a=i-e.prevX,c=e.adjustOffsetRange(a/n);e.updateStartEnd(c),e.updateUI(e.getElementByLocalId("foreground"),e.getElementByLocalId("minText"),e.getElementByLocalId("maxText")),e.prevX=i,e.prevY=o,e.draw(),e.emit("sliderchange",[e.get("start"),e.get("end")].sort()),e.delegateEmit("valuechanged",{originValue:r,value:[e.get("start"),e.get("end")]})},e.onMouseUp=function(){e.currentTarget&&(e.currentTarget=void 0);var t=e.getContainerDOM();t&&(t.removeEventListener("mousemove",e.onMouseMove),t.removeEventListener("mouseup",e.onMouseUp),t.removeEventListener("mouseleave",e.onMouseUp),t.removeEventListener("touchmove",e.onMouseMove),t.removeEventListener("touchend",e.onMouseUp),t.removeEventListener("touchcancel",e.onMouseUp))},e}return(0,QCt.ZT)(e,t),e.prototype.setRange=function(t,e){this.set("minLimit",t),this.set("maxLimit",e);var n=this.get("start"),r=this.get("end"),i=(0,tOt.uZ)(n,t,e),o=(0,tOt.uZ)(r,t,e);this.get("isInit")||n===i&&r===o||this.setValue([i,o])},e.prototype.getRange=function(){return{min:this.get("minLimit")||0,max:this.get("maxLimit")||1}},e.prototype.setValue=function(t){var e=this.getRange();if((0,tOt.kJ)(t)&&2===t.length){var n=[this.get("start"),this.get("end")];this.update({start:(0,tOt.uZ)(t[0],e.min,e.max),end:(0,tOt.uZ)(t[1],e.min,e.max)}),this.get("updateAutoRender")||this.render(),this.delegateEmit("valuechanged",{originValue:n,value:t})}},e.prototype.getValue=function(){return[this.get("start"),this.get("end")]},e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{name:"slider",x:0,y:0,width:100,height:16,backgroundStyle:{},foregroundStyle:{},handlerStyle:{},textStyle:{},defaultCfg:{backgroundStyle:V_t,foregroundStyle:G_t,handlerStyle:X_t,textStyle:q_t}})},e.prototype.update=function(e){var n=e.start,r=e.end,i=(0,QCt.pi)({},e);(0,tOt.UM)(n)||(i.start=(0,tOt.uZ)(n,0,1)),(0,tOt.UM)(r)||(i.end=(0,tOt.uZ)(r,0,1)),t.prototype.update.call(this,i),this.minHandler=this.getChildComponentById(this.getElementId("minHandler")),this.maxHandler=this.getChildComponentById(this.getElementId("maxHandler")),this.trend=this.getChildComponentById(this.getElementId("trend"))},e.prototype.init=function(){this.set("start",(0,tOt.uZ)(this.get("start"),0,1)),this.set("end",(0,tOt.uZ)(this.get("end"),0,1)),t.prototype.init.call(this)},e.prototype.render=function(){t.prototype.render.call(this),this.updateUI(this.getElementByLocalId("foreground"),this.getElementByLocalId("minText"),this.getElementByLocalId("maxText"))},e.prototype.renderInner=function(t){var e=this.cfg,n=(e.start,e.end,e.width),r=e.height,i=e.trendCfg,o=void 0===i?{}:i,a=e.minText,c=e.maxText,l=e.backgroundStyle,u=void 0===l?{}:l,s=e.foregroundStyle,f=void 0===s?{}:s,h=e.textStyle,d=void 0===h?{}:h,p=(0,tOt.b$)({},H_t,this.cfg.handlerStyle);(0,tOt.dp)((0,tOt.U2)(o,"data"))&&(this.trend=this.addComponent(t,(0,QCt.pi)({component:U_t,id:this.getElementId("trend"),x:0,y:0,width:n,height:r},o))),this.addShape(t,{id:this.getElementId("background"),type:"rect",attrs:(0,QCt.pi)({x:0,y:0,width:n,height:r},u)});this.addShape(t,{id:this.getElementId("minText"),type:"text",attrs:(0,QCt.pi)({y:r/2,textAlign:"right",text:a,silent:!1},d)}),this.addShape(t,{id:this.getElementId("maxText"),type:"text",attrs:(0,QCt.pi)({y:r/2,textAlign:"left",text:c,silent:!1},d)}),this.addShape(t,{id:this.getElementId("foreground"),name:"foreground",type:"rect",attrs:(0,QCt.pi)({y:0,height:r},f)});var v=(0,tOt.U2)(p,"width",10),g=(0,tOt.U2)(p,"height",24);this.minHandler=this.addComponent(t,{component:W_t,id:this.getElementId("minHandler"),name:"handler-min",x:0,y:(r-g)/2,width:v,height:g,cursor:"ew-resize",style:p}),this.maxHandler=this.addComponent(t,{component:W_t,id:this.getElementId("maxHandler"),name:"handler-max",x:0,y:(r-g)/2,width:v,height:g,cursor:"ew-resize",style:p})},e.prototype.applyOffset=function(){this.moveElementTo(this.get("group"),{x:this.get("x"),y:this.get("y")})},e.prototype.initEvent=function(){this.bindEvents()},e.prototype.updateUI=function(t,e,n){var r=this.cfg,i=r.start,o=r.end,a=r.width,c=r.minText,l=r.maxText,u=r.handlerStyle,s=r.height,f=i*a,h=o*a;this.trend&&(this.trend.update({width:a,height:s}),this.get("updateAutoRender")||this.trend.render()),t.attr("x",f),t.attr("width",h-f);var d=(0,tOt.U2)(u,"width",10);e.attr("text",c),n.attr("text",l);var p=this._dodgeText([f,h],e,n),v=p[0],g=p[1];this.minHandler&&(this.minHandler.update({x:f-d/2}),this.get("updateAutoRender")||this.minHandler.render()),(0,tOt.S6)(v,(function(t,n){return e.attr(n,t)})),this.maxHandler&&(this.maxHandler.update({x:h-d/2}),this.get("updateAutoRender")||this.maxHandler.render()),(0,tOt.S6)(g,(function(t,e){return n.attr(e,t)}))},e.prototype.bindEvents=function(){var t=this.get("group");t.on("handler-min:mousedown",this.onMouseDown("minHandler")),t.on("handler-min:touchstart",this.onMouseDown("minHandler")),t.on("handler-max:mousedown",this.onMouseDown("maxHandler")),t.on("handler-max:touchstart",this.onMouseDown("maxHandler"));var e=t.findById(this.getElementId("foreground"));e.on("mousedown",this.onMouseDown("foreground")),e.on("touchstart",this.onMouseDown("foreground"))},e.prototype.adjustOffsetRange=function(t){var e=this.cfg,n=e.start,r=e.end;switch(this.currentTarget){case"minHandler":var i=0-n,o=1-n;return Math.min(o,Math.max(i,t));case"maxHandler":i=0-r,o=1-r;return Math.min(o,Math.max(i,t));case"foreground":i=0-n,o=1-r;return Math.min(o,Math.max(i,t))}},e.prototype.updateStartEnd=function(t){var e=this.cfg,n=e.start,r=e.end;switch(this.currentTarget){case"minHandler":n+=t;break;case"maxHandler":r+=t;break;case"foreground":n+=t,r+=t}this.set("start",n),this.set("end",r)},e.prototype._dodgeText=function(t,e,n){var r,i,o=this.cfg,a=o.handlerStyle,c=o.width,l=(0,tOt.U2)(a,"width",10),u=t[0],s=t[1],f=!1;u>s&&(u=(r=[s,u])[0],s=r[1],e=(i=[n,e])[0],n=i[1],f=!0);var h=e.getBBox(),d=n.getBBox(),p=h.width>u-2?{x:u+l/2+2,textAlign:"left"}:{x:u-l/2-2,textAlign:"right"},v=d.width>c-s-2?{x:s-l/2-2,textAlign:"right"}:{x:s+l/2+2,textAlign:"left"};return f?[v,p]:[p,v]},e.prototype.draw=function(){var t=this.get("container"),e=t&&t.get("canvas");e&&e.draw()},e.prototype.getContainerDOM=function(){var t=this.get("container"),e=t&&t.get("canvas");return e&&e.get("container")},e}(NAt);function $_t(t,e,n){if(t){if("function"==typeof t.addEventListener)return t.addEventListener(e,n,!1),{remove:function(){t.removeEventListener(e,n,!1)}};if("function"==typeof t.attachEvent)return t.attachEvent("on"+e,n),{remove:function(){t.detachEvent("on"+e,n)}}}}var K_t={default:{trackColor:"rgba(0,0,0,0)",thumbColor:"rgba(0,0,0,0.15)",size:8,lineCap:"round"},hover:{thumbColor:"rgba(0,0,0,0.2)"}},J_t=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.clearEvents=tOt.ZT,e.onStartEvent=function(t){return function(n){e.isMobile=t,n.originalEvent.preventDefault();var r=t?(0,tOt.U2)(n.originalEvent,"touches.0.clientX"):n.clientX,i=t?(0,tOt.U2)(n.originalEvent,"touches.0.clientY"):n.clientY;e.startPos=e.cfg.isHorizontal?r:i,e.bindLaterEvent()}},e.bindLaterEvent=function(){var t=e.getContainerDOM(),n=[];n=e.isMobile?[$_t(t,"touchmove",e.onMouseMove),$_t(t,"touchend",e.onMouseUp),$_t(t,"touchcancel",e.onMouseUp)]:[$_t(t,"mousemove",e.onMouseMove),$_t(t,"mouseup",e.onMouseUp),$_t(t,"mouseleave",e.onMouseUp)],e.clearEvents=function(){n.forEach((function(t){t.remove()}))}},e.onMouseMove=function(t){var n=e.cfg,r=n.isHorizontal,i=n.thumbOffset;t.preventDefault();var o=e.isMobile?(0,tOt.U2)(t,"touches.0.clientX"):t.clientX,a=e.isMobile?(0,tOt.U2)(t,"touches.0.clientY"):t.clientY,c=r?o:a,l=c-e.startPos;e.startPos=c,e.updateThumbOffset(i+l)},e.onMouseUp=function(t){t.preventDefault(),e.clearEvents()},e.onTrackClick=function(t){var n=e.cfg,r=n.isHorizontal,i=n.x,o=n.y,a=n.thumbLen,c=e.getContainerDOM().getBoundingClientRect(),l=t.clientX,u=t.clientY,s=r?l-c.left-i-a/2:u-c.top-o-a/2,f=e.validateRange(s);e.updateThumbOffset(f)},e.onThumbMouseOver=function(){var t=e.cfg.theme.hover.thumbColor;e.getElementByLocalId("thumb").attr("stroke",t),e.draw()},e.onThumbMouseOut=function(){var t=e.cfg.theme.default.thumbColor;e.getElementByLocalId("thumb").attr("stroke",t),e.draw()},e}return(0,QCt.ZT)(e,t),e.prototype.setRange=function(t,e){this.set("minLimit",t),this.set("maxLimit",e);var n=this.getValue(),r=(0,tOt.uZ)(n,t,e);n===r||this.get("isInit")||this.setValue(r)},e.prototype.getRange=function(){return{min:this.get("minLimit")||0,max:this.get("maxLimit")||1}},e.prototype.setValue=function(t){var e=this.getRange(),n=this.getValue();this.update({thumbOffset:(this.get("trackLen")-this.get("thumbLen"))*(0,tOt.uZ)(t,e.min,e.max)}),this.delegateEmit("valuechange",{originalValue:n,value:this.getValue()})},e.prototype.getValue=function(){return(0,tOt.uZ)(this.get("thumbOffset")/(this.get("trackLen")-this.get("thumbLen")),0,1)},e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{name:"scrollbar",isHorizontal:!0,minThumbLen:20,thumbOffset:0,theme:K_t})},e.prototype.renderInner=function(t){this.renderTrackShape(t),this.renderThumbShape(t)},e.prototype.applyOffset=function(){this.moveElementTo(this.get("group"),{x:this.get("x"),y:this.get("y")})},e.prototype.initEvent=function(){this.bindEvents()},e.prototype.renderTrackShape=function(t){var e=this.cfg,n=e.trackLen,r=e.theme,i=void 0===r?{default:{}}:r,o=(0,tOt.b$)({},K_t,i).default,a=o.lineCap,c=o.trackColor,l=o.size,u=(0,tOt.U2)(this.cfg,"size",l),s=this.get("isHorizontal")?{x1:0+u/2,y1:u/2,x2:n-u/2,y2:u/2,lineWidth:u,stroke:c,lineCap:a}:{x1:u/2,y1:0+u/2,x2:u/2,y2:n-u/2,lineWidth:u,stroke:c,lineCap:a};return this.addShape(t,{id:this.getElementId("track"),name:"track",type:"line",attrs:s})},e.prototype.renderThumbShape=function(t){var e=this.cfg,n=e.thumbOffset,r=e.thumbLen,i=e.theme,o=(0,tOt.b$)({},K_t,i).default,a=o.size,c=o.lineCap,l=o.thumbColor,u=(0,tOt.U2)(this.cfg,"size",a),s=this.get("isHorizontal")?{x1:n+u/2,y1:u/2,x2:n+r-u/2,y2:u/2,lineWidth:u,stroke:l,lineCap:c,cursor:"default"}:{x1:u/2,y1:n+u/2,x2:u/2,y2:n+r-u/2,lineWidth:u,stroke:l,lineCap:c,cursor:"default"};return this.addShape(t,{id:this.getElementId("thumb"),name:"thumb",type:"line",attrs:s})},e.prototype.bindEvents=function(){var t=this.get("group");t.on("mousedown",this.onStartEvent(!1)),t.on("mouseup",this.onMouseUp),t.on("touchstart",this.onStartEvent(!0)),t.on("touchend",this.onMouseUp),t.findById(this.getElementId("track")).on("click",this.onTrackClick);var e=t.findById(this.getElementId("thumb"));e.on("mouseover",this.onThumbMouseOver),e.on("mouseout",this.onThumbMouseOut)},e.prototype.getContainerDOM=function(){var t=this.get("container"),e=t&&t.get("canvas");return e&&e.get("container")},e.prototype.validateRange=function(t){var e=this.cfg,n=e.thumbLen,r=e.trackLen,i=t;return t+n>r?i=r-n:t+nt.x?t.x:e,n=nt.y?t.y:r,i=i=r&&t<=i}function pDt(t,e){return"object"==typeof t&&e.forEach((function(e){delete t[e]})),t}function vDt(t,e,n){var r,i;void 0===e&&(e=[]),void 0===n&&(n=new Map);try{for(var o=(0,QCt.XA)(t),a=o.next();!a.done;a=o.next()){var c=a.value;n.has(c)||(e.push(c),n.set(c,!0))}}catch(l){r={error:l}}finally{try{a&&!a.done&&(i=o.return)&&i.call(o)}finally{if(r)throw r.error}}return e}var gDt=function(){function t(t,e,n,r){void 0===t&&(t=0),void 0===e&&(e=0),void 0===n&&(n=0),void 0===r&&(r=0),this.x=t,this.y=e,this.height=r,this.width=n}return t.fromRange=function(e,n,r,i){return new t(e,n,r-e,i-n)},t.fromObject=function(e){return new t(e.minX,e.minY,e.width,e.height)},Object.defineProperty(t.prototype,"minX",{get:function(){return this.x},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"maxX",{get:function(){return this.x+this.width},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"minY",{get:function(){return this.y},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"maxY",{get:function(){return this.y+this.height},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"tl",{get:function(){return{x:this.x,y:this.y}},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"tr",{get:function(){return{x:this.maxX,y:this.y}},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"bl",{get:function(){return{x:this.x,y:this.maxY}},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"br",{get:function(){return{x:this.maxX,y:this.maxY}},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"top",{get:function(){return{x:this.x+this.width/2,y:this.minY}},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"right",{get:function(){return{x:this.maxX,y:this.y+this.height/2}},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"bottom",{get:function(){return{x:this.x+this.width/2,y:this.maxY}},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"left",{get:function(){return{x:this.minX,y:this.y+this.height/2}},enumerable:!1,configurable:!0}),t.prototype.isEqual=function(t){return this.x===t.x&&this.y===t.y&&this.width===t.width&&this.height===t.height},t.prototype.contains=function(t){return t.minX>=this.minX&&t.maxX<=this.maxX&&t.minY>=this.minY&&t.maxY<=this.maxY},t.prototype.clone=function(){return new t(this.x,this.y,this.width,this.height)},t.prototype.add=function(){for(var t=[],e=0;et.minX&&this.minYt.minY},t.prototype.size=function(){return this.width*this.height},t.prototype.isPointIn=function(t){return t.x>=this.minX&&t.x<=this.maxX&&t.y>=this.minY&&t.y<=this.maxY},t}();function mDt(t){if(t.isPolar&&!t.isTransposed)return(t.endAngle-t.startAngle)*t.getRadius();var e=t.convert({x:0,y:0}),n=t.convert({x:1,y:0});return Math.sqrt(Math.pow(n.x-e.x,2)+Math.pow(n.y-e.y,2))}function yDt(t,e){var n=t.getCenter();return Math.sqrt(Math.pow(e.x-n.x,2)+Math.pow(e.y-n.y,2))}function bDt(t,e){var n=t.getCenter();return Math.atan2(e.y-n.y,e.x-n.x)}function xDt(t,e){void 0===e&&(e=0);var n,r=t.start,i=t.end,o=t.getWidth(),a=t.getHeight();if(t.isPolar){var c=t.startAngle,l=t.endAngle,u=t.getCenter(),s=t.getRadius();return{type:"path",startState:{path:uDt(u.x,u.y,s+e,c,c)},endState:function(t){var n=(l-c)*t+c;return{path:uDt(u.x,u.y,s+e,c,n)}},attrs:{path:uDt(u.x,u.y,s+e,c,l)}}}return n=t.isTransposed?{height:a+2*e}:{width:o+2*e},{type:"rect",startState:{x:r.x-e,y:i.y-e,width:t.isTransposed?o+2*e:0,height:t.isTransposed?0:a+2*e},endState:n,attrs:{x:r.x-e,y:i.y-e,width:o+2*e,height:a+2*e}}}var wDt=/^(?:(?!0000)[0-9]{4}([-/.]+)(?:(?:0?[1-9]|1[0-2])\1(?:0?[1-9]|1[0-9]|2[0-8])|(?:0?[13-9]|1[0-2])\1(?:29|30)|(?:0?[13578]|1[02])\1(?:31))|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)([-/.]+)0?2\2(?:29))(\s+([01]|([01][0-9]|2[0-3])):([0-9]|[0-5][0-9]):([0-9]|[0-5][0-9]))?$/;function SDt(t,e,n,r){return void 0===e&&(e={}),e.type?e.type:"identity"!==t.type&&hOt.includes(n)&&["interval"].includes(r)||t.isCategory?"cat":t.type}function kDt(t,e,n){var r=e||[];if((0,tOt.hj)(t)||(0,tOt.UM)((0,tOt.Wx)(r,t))&&(0,tOt.xb)(n))return new(SMt("identity"))({field:t.toString(),values:[t]});var i=(0,tOt.I)(r,t),o=(0,tOt.U2)(n,"type",function(t){var e="linear";return wDt.test(t)?e="timeCat":(0,tOt.HD)(t)&&(e="cat"),e}(i[0]));return new(SMt(o))((0,QCt.pi)({field:t,values:i},n))}function CDt(t){return t.alias||t.field}function ODt(t,e,n){var r,i=t.values.length;if(1===i)r=[.5,1];else{var o=0;r=function(t){if(t.isPolar){var e=t.startAngle;return t.endAngle-e==2*Math.PI}return!1}(e)?e.isTransposed?[(o=1/i*(0,tOt.U2)(n,"widthRatio.multiplePie",1/1.3))/2,1-o/2]:[0,1-1/i]:[o=1/i/2,1-o]}return r}function EDt(t){var e=t.values.filter((function(t){return!(0,tOt.UM)(t)&&!isNaN(t)}));return Math.max.apply(Math,(0,QCt.ev)((0,QCt.ev)([],(0,QCt.CR)(e),!1),[(0,tOt.UM)(t.max)?-1/0:t.max],!1))}function MDt(t,e){var n={start:{x:0,y:0},end:{x:0,y:0}};t.isRect?n=function(t){var e,n;switch(t){case $Ct.TOP:e={x:0,y:1},n={x:1,y:1};break;case $Ct.RIGHT:e={x:1,y:0},n={x:1,y:1};break;case $Ct.BOTTOM:e={x:0,y:0},n={x:1,y:0};break;case $Ct.LEFT:e={x:0,y:0},n={x:0,y:1};break;default:e=n={x:0,y:0}}return{start:e,end:n}}(e):t.isPolar&&(n=function(t){var e,n;return t.isTransposed?(e={x:0,y:0},n={x:1,y:0}):(e={x:0,y:0},n={x:0,y:1}),{start:e,end:n}}(t));var r=n.start,i=n.end;return{start:t.convert(r),end:t.convert(i)}}function ADt(t){var e=t.start,n=t.end;return e.x===n.x}function PDt(t,e){var n=t.start,r=t.end;return ADt(t)?(n.y-r.y)*(e.x-n.x)>0?1:-1:(r.x-n.x)*(n.y-e.y)>0?-1:1}function _Dt(t,e){var n=(0,tOt.U2)(t,["components","axis"],{});return(0,tOt.b$)({},(0,tOt.U2)(n,["common"],{}),(0,tOt.b$)({},(0,tOt.U2)(n,[e],{})))}function DDt(t,e,n){var r=(0,tOt.U2)(t,["components","axis"],{});return(0,tOt.b$)({},(0,tOt.U2)(r,["common","title"],{}),(0,tOt.b$)({},(0,tOt.U2)(r,[e,"title"],{})),n)}function TDt(t){var e=t.x,n=t.y,r=t.circleCenter,i=n.start>n.end,o=t.isTransposed?t.convert({x:i?0:1,y:0}):t.convert({x:0,y:i?0:1}),a=[o.x-r.x,o.y-r.y],c=[1,0],l=o.y>r.y?lAt.EU(a,c):-1*lAt.EU(a,c),u=l+(e.end-e.start);return{center:r,radius:Math.sqrt(Math.pow(o.x-r.x,2)+Math.pow(o.y-r.y,2)),startAngle:l,endAngle:u}}function ZDt(t,e){return(0,tOt.jn)(t)?!1!==t&&{}:(0,tOt.U2)(t,[e])}function FDt(t,e){return(0,tOt.U2)(t,"position",e)}function jDt(t,e){return(0,tOt.U2)(e,["title","text"],CDt(t))}var IDt=function(){function t(t,e){this.destroyed=!1,this.facets=[],this.view=t,this.cfg=(0,tOt.b$)({},this.getDefaultCfg(),e)}return t.prototype.init=function(){this.container||(this.container=this.createContainer());var t=this.view.getData();this.facets=this.generateFacets(t)},t.prototype.render=function(){this.renderViews()},t.prototype.update=function(){},t.prototype.clear=function(){this.clearFacetViews()},t.prototype.destroy=function(){this.clear(),this.container&&(this.container.remove(!0),this.container=void 0),this.destroyed=!0,this.view=void 0,this.facets=[]},t.prototype.facetToView=function(t){var e=t.region,n=t.data,r=t.padding,i=void 0===r?this.cfg.padding:r,o=this.view.createView({region:e,padding:i});o.data(n||[]),t.view=o,this.beforeEachView(o,t);var a=this.cfg.eachView;return a&&a(o,t),this.afterEachView(o,t),o},t.prototype.createContainer=function(){return this.view.getLayer(YCt.FORE).addGroup()},t.prototype.renderViews=function(){this.createFacetViews()},t.prototype.createFacetViews=function(){var t=this;return this.facets.map((function(e){return t.facetToView(e)}))},t.prototype.clearFacetViews=function(){var t=this;(0,tOt.S6)(this.facets,(function(e){e.view&&(t.view.removeView(e.view),e.view=void 0)}))},t.prototype.parseSpacing=function(){var t=this.view.viewBBox,e=t.width,n=t.height;return this.cfg.spacing.map((function(t,r){return(0,tOt.hj)(t)?t/(0===r?e:n):parseFloat(t)/100}))},t.prototype.getFieldValues=function(t,e){var n=[],r={};return(0,tOt.S6)(t,(function(t){var i=t[e];(0,tOt.UM)(i)||r[i]||(n.push(i),r[i]=!0)})),n},t.prototype.getRegion=function(t,e,n,r){var i=(0,QCt.CR)(this.parseSpacing(),2),o=i[0],a=i[1],c=(1+o)/(0===e?1:e)-o,l=(1+a)/(0===t?1:t)-a,u={x:(c+o)*n,y:(l+a)*r};return{start:u,end:{x:u.x+c,y:u.y+l}}},t.prototype.getDefaultCfg=function(){return{eachView:void 0,showTitle:!0,spacing:[0,0],padding:10,fields:[]}},t.prototype.getDefaultTitleCfg=function(){return{style:{fontSize:14,fill:"#666",fontFamily:this.view.getTheme().fontFamily}}},t.prototype.processAxis=function(t,e){var n=t.getOptions(),r=n.coordinate,i=t.geometries;if("rect"===(0,tOt.U2)(r,"type","rect")&&i.length){(0,tOt.UM)(n.axes)&&(n.axes={});var o=n.axes,a=(0,QCt.CR)(i[0].getXYFields(),2),c=a[0],l=a[1],u=ZDt(o,c),s=ZDt(o,l);!1!==u&&(n.axes[c]=this.getXAxisOption(c,o,u,e)),!1!==s&&(n.axes[l]=this.getYAxisOption(l,o,s,e))}},t.prototype.getFacetDataFilter=function(t){return function(e){return(0,tOt.yW)(t,(function(t){var n=t.field,r=t.value;return!(!(0,tOt.UM)(r)&&n)||e[n]===r}))}},t}(),RDt={},LDt=function(t,e){RDt[(0,tOt.vl)(t)]=e},NDt=function(){function t(t,e){this.context=t,this.cfg=e,t.addAction(this)}return t.prototype.applyCfg=function(t){(0,tOt.f0)(this,t)},t.prototype.init=function(){this.applyCfg(this.cfg)},t.prototype.destroy=function(){this.context.removeAction(this),this.context=null},t}(),BDt=NDt,zDt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.execute=function(){this.callback&&this.callback(this.context)},e.prototype.destroy=function(){t.prototype.destroy.call(this),this.callback=null},e}(BDt),UDt=zDt,HDt={};function WDt(t){var e=HDt[t];return(0,tOt.U2)(e,"ActionClass")}function VDt(t,e,n){HDt[t]={ActionClass:e,cfg:n}}function GDt(t,e){var n=new UDt(e);return n.callback=t,n.name="callback",n}function XDt(t,e){for(var n=[t[0]],r=1,i=t.length;r=a[u]?1:0,h=s>Math.PI?1:0,d=n.convert(c),p=yDt(n,d);if(p>=.5)if(s===2*Math.PI){var v={x:(c.x+a.x)/2,y:(c.y+a.y)/2},g=n.convert(v);l.push(["A",p,p,0,h,f,g.x,g.y]),l.push(["A",p,p,0,h,f,d.x,d.y])}else l.push(["A",p,p,0,h,f,d.x,d.y]);return l}(n,r,t)):o.push(XDt(a,t));break;case"a":o.push(qDt(a,t));break;default:o.push(a)}})),function(t){(0,tOt.S6)(t,(function(e,n){if("a"===e[0].toLowerCase()){var r=t[n-1],i=t[n+1];i&&"a"===i[0].toLowerCase()?r&&"l"===r[0].toLowerCase()&&(r[0]="M"):r&&"a"===r[0].toLowerCase()&&i&&"l"===i[0].toLowerCase()&&(i[0]="M")}}))}(o),o}function tTt(t,e){return nTt(t.event.target,e)}function eTt(t,e){var n=t.getCanvasBBox(),r=n.width,i=n.height;return r>0&&i>0&&(r>=e||i>=e)}function nTt(t,e){var n=t.getCanvasBBox();return eTt(t,e)?n:null}function rTt(t,e){return t.event.maskShapes.map((function(t){return nTt(t,e)})).filter((function(t){return!!t}))}function iTt(t,e){return eTt(t,e)?t.attr("path"):null}function oTt(t){var e,n=t.event.target;return n&&(e=n.get("element")),e}function aTt(t){var e,n=t.event.target;return n&&(e=n.get("delegateObject")),e}function cTt(t){var e=t.event.gEvent;return!(e&&e.fromShape&&e.toShape&&e.fromShape.get("element")===e.toShape.get("element"))}function lTt(t){return t&&t.component&&t.component.isList()}function uTt(t){return t&&t.component&&t.component.isSlider()}function sTt(t){var e=t.event.target;return e&&"mask"===(null==e?void 0:e.get("name"))||fTt(t)}function fTt(t){var e;return"multi-mask"===(null===(e=t.event.target)||void 0===e?void 0:e.get("name"))}function hTt(t,e){var n=t.event.target;if(fTt(t))return function(t,e){var n=t.event.target;if("path"===n.get("type")){var r=function(t,e){return t.event.maskShapes.map((function(t){return iTt(t,e)}))}(t,e);return r.length>0?r.flatMap((function(e){return xTt(t.view,e)})):null}var i=rTt(t,e);if(i.length>0)return i.flatMap((function(e){return yTt(t.view,e)}));return null}(t,e);if("path"===n.get("type")){var r=function(t,e){return iTt(t.event.target,e)}(t,e);if(!r)return;return xTt(t.view,r)}var i=tTt(t,e);return i?yTt(t.view,i):null}function dTt(t,e,n){if(fTt(t))return function(t,e,n){var r=rTt(t,n);if(r.length>0)return r.flatMap((function(n){return pTt(n,t,e)}));return null}(t,e,n);var r=tTt(t,n);return r?pTt(r,t,e):null}function pTt(t,e,n){var r=e.view,i=OTt(r,n,{x:t.x,y:t.y}),o=OTt(r,n,{x:t.maxX,y:t.maxY});return yTt(n,{minX:i.x,minY:i.y,maxX:o.x,maxY:o.y})}function vTt(t){var e=t.geometries,n=[];return(0,tOt.S6)(e,(function(t){var e=t.elements;n=n.concat(e)})),t.views&&t.views.length&&(0,tOt.S6)(t.views,(function(t){n=n.concat(vTt(t))})),n}function gTt(t,e){var n=t.geometries,r=[];return(0,tOt.S6)(n,(function(t){var n=t.getElementsBy((function(t){return t.hasState(e)}));r=r.concat(n)})),r}function mTt(t,e){var n=t.getModel().data;return(0,tOt.kJ)(n)?n[0][e]:n[e]}function yTt(t,e){var n=vTt(t),r=[];return(0,tOt.S6)(n,(function(t){var n,i,o=t.shape.getCanvasBBox();n=e,(i=o).minX>n.maxX||i.maxXn.maxY||i.maxY=e.x&&t.y<=e.y&&t.maxY>e.y}function CTt(t){var e=t.parent,n=null;return e&&(n=e.views.filter((function(e){return e!==t}))),n}function OTt(t,e,n){var r=function(t,e){return t.getCoordinate().invert(e)}(t,n);return e.getCoordinate().convert(r)}function ETt(t,e,n,r){var i=!1;return(0,tOt.S6)(t,(function(t){if(t[n]===e[n]&&t[r]===e[r])return i=!0,!1})),i}function MTt(t,e){var n=t.getScaleByField(e);return!n&&t.views&&(0,tOt.S6)(t.views,(function(t){if(n=MTt(t,e))return!1})),n}var ATt=function(){function t(t){this.actions=[],this.event=null,this.cacheMap={},this.view=t}return t.prototype.cache=function(){for(var t=[],e=0;e=0&&e.splice(n,1)},t.prototype.getCurrentPoint=function(){var t=this.event;return t?t.target instanceof HTMLElement?this.view.getCanvas().getPointByClient(t.clientX,t.clientY):{x:t.x,y:t.y}:null},t.prototype.getCurrentShape=function(){return(0,tOt.U2)(this.event,["gEvent","shape"])},t.prototype.isInPlot=function(){var t=this.getCurrentPoint();return!!t&&this.view.isPointInPlot(t)},t.prototype.isInShape=function(t){var e=this.getCurrentShape();return!!e&&e.get("name")===t},t.prototype.isInComponent=function(t){var e=wTt(this.view),n=this.getCurrentPoint();return!!n&&!!e.find((function(e){var r=e.getBBox();return t?e.get("name")===t&&kTt(r,n):kTt(r,n)}))},t.prototype.destroy=function(){(0,tOt.S6)(this.actions.slice(),(function(t){t.destroy()})),this.view=null,this.event=null,this.actions=null,this.cacheMap=null},t}(),PTt=ATt,_Tt=function(){function t(t,e){this.view=t,this.cfg=e}return t.prototype.init=function(){this.initEvents()},t.prototype.initEvents=function(){},t.prototype.clearEvents=function(){},t.prototype.destroy=function(){this.clearEvents()},t}();function DTt(t,e,n){var r=t.split(":"),i=r[0],o=e.getAction(i)||function(t,e){var n=HDt[t],r=null;return n&&((r=new(0,n.ActionClass)(e,n.cfg)).name=t,r.init()),r}(i,e);if(!o)throw new Error("There is no action named ".concat(i));return{action:o,methodName:r[1],arg:n}}function TTt(t){var e=t.action,n=t.methodName,r=t.arg;if(!e[n])throw new Error("Action(".concat(e.name,") doesn't have a method called ").concat(n));e[n](r)}var ZTt="start",FTt="showEnable",jTt="end",ITt="rollback",RTt="processing",LTt=function(t){function e(e,n){var r=t.call(this,e,n)||this;return r.callbackCaches={},r.emitCaches={},r.steps=n,r}return(0,QCt.ZT)(e,t),e.prototype.init=function(){this.initContext(),t.prototype.init.call(this)},e.prototype.destroy=function(){t.prototype.destroy.call(this),this.steps=null,this.context&&(this.context.destroy(),this.context=null),this.callbackCaches=null,this.view=null},e.prototype.initEvents=function(){var t=this;(0,tOt.S6)(this.steps,(function(e,n){(0,tOt.S6)(e,(function(e){var r=t.getActionCallback(n,e);r&&t.bindEvent(e.trigger,r)}))}))},e.prototype.clearEvents=function(){var t=this;(0,tOt.S6)(this.steps,(function(e,n){(0,tOt.S6)(e,(function(e){var r=t.getActionCallback(n,e);r&&t.offEvent(e.trigger,r)}))}))},e.prototype.initContext=function(){var t=this.view,e=new PTt(t);this.context=e;var n=this.steps;(0,tOt.S6)(n,(function(t){(0,tOt.S6)(t,(function(t){if((0,tOt.mf)(t.action))t.actionObject={action:GDt(t.action,e),methodName:"execute"};else if((0,tOt.HD)(t.action))t.actionObject=DTt(t.action,e,t.arg);else if((0,tOt.kJ)(t.action)){var n=t.action,r=(0,tOt.kJ)(t.arg)?t.arg:[t.arg];t.actionObject=[],(0,tOt.S6)(n,(function(n,i){t.actionObject.push(DTt(n,e,r[i]))}))}}))}))},e.prototype.isAllowStep=function(t){var e=this.currentStepName,n=this.steps;if(e===t)return!0;if(t===FTt)return!0;if(t===RTt)return e===ZTt;if(t===ZTt)return e!==RTt;if(t===jTt)return e===RTt||e===ZTt;if(t===ITt){if(n[jTt])return e===jTt;if(e===ZTt)return!0}return!1},e.prototype.isAllowExecute=function(t,e){if(this.isAllowStep(t)){var n=this.getKey(t,e);return(!e.once||!this.emitCaches[n])&&(!e.isEnable||e.isEnable(this.context))}return!1},e.prototype.enterStep=function(t){this.currentStepName=t,this.emitCaches={}},e.prototype.afterExecute=function(t,e){t!==FTt&&this.currentStepName!==t&&this.enterStep(t);var n=this.getKey(t,e);this.emitCaches[n]=!0},e.prototype.getKey=function(t,e){return t+e.trigger+e.action},e.prototype.getActionCallback=function(t,e){var n=this,r=this.context,i=this.callbackCaches,o=e.actionObject;if(e.action&&o){var a=this.getKey(t,e);if(!i[a]){var c=function(i){r.event=i,n.isAllowExecute(t,e)?((0,tOt.kJ)(o)?(0,tOt.S6)(o,(function(t){r.event=i,TTt(t)})):(r.event=i,TTt(o)),n.afterExecute(t,e),e.callback&&(r.event=i,e.callback(r))):r.event=null};e.debounce?i[a]=(0,tOt.Ds)(c,e.debounce.wait,e.debounce.immediate):e.throttle?i[a]=(0,tOt.P2)(c,e.throttle.wait,{leading:e.throttle.leading,trailing:e.throttle.trailing}):i[a]=c}return i[a]}return null},e.prototype.bindEvent=function(t,e){var n=t.split(":");"window"===n[0]?window.addEventListener(n[1],e):"document"===n[0]?document.addEventListener(n[1],e):this.view.on(t,e)},e.prototype.offEvent=function(t,e){var n=t.split(":");"window"===n[0]?window.removeEventListener(n[1],e):"document"===n[0]?document.removeEventListener(n[1],e):this.view.off(t,e)},e}(_Tt),NTt=LTt,BTt={};function zTt(t,e){BTt[(0,tOt.vl)(t)]=e}function UTt(t,e,n){var r=function(t){return BTt[(0,tOt.vl)(t)]}(t);if(!r)return null;if((0,tOt.PO)(r)){var i=(0,tOt.CD)((0,tOt.d9)(r),n);return new NTt(e,i)}return new r(e,n)}function HTt(t){var e,n={point:{default:{fill:t.pointFillColor,r:t.pointSize,stroke:t.pointBorderColor,lineWidth:t.pointBorder,fillOpacity:t.pointFillOpacity},active:{stroke:t.pointActiveBorderColor,lineWidth:t.pointActiveBorder},selected:{stroke:t.pointSelectedBorderColor,lineWidth:t.pointSelectedBorder},inactive:{fillOpacity:t.pointInactiveFillOpacity,strokeOpacity:t.pointInactiveBorderOpacity}},hollowPoint:{default:{fill:t.hollowPointFillColor,lineWidth:t.hollowPointBorder,stroke:t.hollowPointBorderColor,strokeOpacity:t.hollowPointBorderOpacity,r:t.hollowPointSize},active:{stroke:t.hollowPointActiveBorderColor,strokeOpacity:t.hollowPointActiveBorderOpacity},selected:{lineWidth:t.hollowPointSelectedBorder,stroke:t.hollowPointSelectedBorderColor,strokeOpacity:t.hollowPointSelectedBorderOpacity},inactive:{strokeOpacity:t.hollowPointInactiveBorderOpacity}},area:{default:{fill:t.areaFillColor,fillOpacity:t.areaFillOpacity,stroke:null},active:{fillOpacity:t.areaActiveFillOpacity},selected:{fillOpacity:t.areaSelectedFillOpacity},inactive:{fillOpacity:t.areaInactiveFillOpacity}},hollowArea:{default:{fill:null,stroke:t.hollowAreaBorderColor,lineWidth:t.hollowAreaBorder,strokeOpacity:t.hollowAreaBorderOpacity},active:{fill:null,lineWidth:t.hollowAreaActiveBorder},selected:{fill:null,lineWidth:t.hollowAreaSelectedBorder},inactive:{strokeOpacity:t.hollowAreaInactiveBorderOpacity}},interval:{default:{fill:t.intervalFillColor,fillOpacity:t.intervalFillOpacity},active:{stroke:t.intervalActiveBorderColor,lineWidth:t.intervalActiveBorder},selected:{stroke:t.intervalSelectedBorderColor,lineWidth:t.intervalSelectedBorder},inactive:{fillOpacity:t.intervalInactiveFillOpacity,strokeOpacity:t.intervalInactiveBorderOpacity}},hollowInterval:{default:{fill:t.hollowIntervalFillColor,stroke:t.hollowIntervalBorderColor,lineWidth:t.hollowIntervalBorder,strokeOpacity:t.hollowIntervalBorderOpacity},active:{stroke:t.hollowIntervalActiveBorderColor,lineWidth:t.hollowIntervalActiveBorder,strokeOpacity:t.hollowIntervalActiveBorderOpacity},selected:{stroke:t.hollowIntervalSelectedBorderColor,lineWidth:t.hollowIntervalSelectedBorder,strokeOpacity:t.hollowIntervalSelectedBorderOpacity},inactive:{stroke:t.hollowIntervalInactiveBorderColor,lineWidth:t.hollowIntervalInactiveBorder,strokeOpacity:t.hollowIntervalInactiveBorderOpacity}},line:{default:{stroke:t.lineBorderColor,lineWidth:t.lineBorder,strokeOpacity:t.lineBorderOpacity,fill:null,lineAppendWidth:10,lineCap:"round",lineJoin:"round"},active:{lineWidth:t.lineActiveBorder},selected:{lineWidth:t.lineSelectedBorder},inactive:{strokeOpacity:t.lineInactiveBorderOpacity}}},r=function(t){return{title:{autoRotate:!0,position:"center",spacing:t.axisTitleSpacing,style:{fill:t.axisTitleTextFillColor,fontSize:t.axisTitleTextFontSize,lineHeight:t.axisTitleTextLineHeight,textBaseline:"middle",fontFamily:t.fontFamily},iconStyle:{fill:t.axisDescriptionIconFillColor}},label:{autoRotate:!1,autoEllipsis:!1,autoHide:{type:"equidistance",cfg:{minGap:6}},offset:t.axisLabelOffset,style:{fill:t.axisLabelFillColor,fontSize:t.axisLabelFontSize,lineHeight:t.axisLabelLineHeight,fontFamily:t.fontFamily}},line:{style:{lineWidth:t.axisLineBorder,stroke:t.axisLineBorderColor}},grid:{line:{type:"line",style:{stroke:t.axisGridBorderColor,lineWidth:t.axisGridBorder,lineDash:t.axisGridLineDash}},alignTick:!0,animate:!0},tickLine:{style:{lineWidth:t.axisTickLineBorder,stroke:t.axisTickLineBorderColor},alignTick:!0,length:t.axisTickLineLength},subTickLine:null,animate:!0}}(t),i=function(t){return{title:null,marker:{symbol:"circle",spacing:t.legendMarkerSpacing,style:{r:t.legendCircleMarkerSize,fill:t.legendMarkerColor}},itemName:{spacing:5,style:{fill:t.legendItemNameFillColor,fontFamily:t.fontFamily,fontSize:t.legendItemNameFontSize,lineHeight:t.legendItemNameLineHeight,fontWeight:t.legendItemNameFontWeight,textAlign:"start",textBaseline:"middle"}},itemStates:{active:{nameStyle:{opacity:.8}},unchecked:{nameStyle:{fill:"#D8D8D8"},markerStyle:{fill:"#D8D8D8",stroke:"#D8D8D8"}},inactive:{nameStyle:{fill:"#D8D8D8"},markerStyle:{opacity:.2}}},flipPage:!0,pageNavigator:{marker:{style:{size:t.legendPageNavigatorMarkerSize,inactiveFill:t.legendPageNavigatorMarkerInactiveFillColor,inactiveOpacity:t.legendPageNavigatorMarkerInactiveFillOpacity,fill:t.legendPageNavigatorMarkerFillColor,opacity:t.legendPageNavigatorMarkerFillOpacity}},text:{style:{fill:t.legendPageNavigatorTextFillColor,fontSize:t.legendPageNavigatorTextFontSize}}},animate:!1,maxItemWidth:200,itemSpacing:t.legendItemSpacing,itemMarginBottom:t.legendItemMarginBottom,padding:t.legendPadding}}(t);return{background:t.backgroundColor,defaultColor:t.brandColor,subColor:t.subColor,semanticRed:t.paletteSemanticRed,semanticGreen:t.paletteSemanticGreen,padding:"auto",fontFamily:t.fontFamily,columnWidthRatio:.5,maxColumnWidth:null,minColumnWidth:null,roseWidthRatio:.9999999,multiplePieWidthRatio:1/1.3,colors10:t.paletteQualitative10,colors20:t.paletteQualitative20,sequenceColors:t.paletteSequence,shapes:{point:["hollow-circle","hollow-square","hollow-bowtie","hollow-diamond","hollow-hexagon","hollow-triangle","hollow-triangle-down","circle","square","bowtie","diamond","hexagon","triangle","triangle-down","cross","tick","plus","hyphen","line"],line:["line","dash","dot","smooth"],area:["area","smooth","line","smooth-line"],interval:["rect","hollow-rect","line","tick"]},sizes:[1,10],geometries:{interval:{rect:{default:{style:n.interval.default},active:{style:n.interval.active},inactive:{style:n.interval.inactive},selected:{style:function(t){var e=t.geometry.coordinate;if(e.isPolar&&e.isTransposed){var r=fDt(t.getModel(),e),i=(r.startAngle+r.endAngle)/2,o=7.5*Math.cos(i),a=7.5*Math.sin(i);return{matrix:rAt.vs(null,[["t",o,a]])}}return n.interval.selected}}},"hollow-rect":{default:{style:n.hollowInterval.default},active:{style:n.hollowInterval.active},inactive:{style:n.hollowInterval.inactive},selected:{style:n.hollowInterval.selected}},line:{default:{style:n.hollowInterval.default},active:{style:n.hollowInterval.active},inactive:{style:n.hollowInterval.inactive},selected:{style:n.hollowInterval.selected}},tick:{default:{style:n.hollowInterval.default},active:{style:n.hollowInterval.active},inactive:{style:n.hollowInterval.inactive},selected:{style:n.hollowInterval.selected}},funnel:{default:{style:n.interval.default},active:{style:n.interval.active},inactive:{style:n.interval.inactive},selected:{style:n.interval.selected}},pyramid:{default:{style:n.interval.default},active:{style:n.interval.active},inactive:{style:n.interval.inactive},selected:{style:n.interval.selected}}},line:{line:{default:{style:n.line.default},active:{style:n.line.active},inactive:{style:n.line.inactive},selected:{style:n.line.selected}},dot:{default:{style:(0,QCt.pi)((0,QCt.pi)({},n.line.default),{lineCap:null,lineDash:[1,1]})},active:{style:(0,QCt.pi)((0,QCt.pi)({},n.line.active),{lineCap:null,lineDash:[1,1]})},inactive:{style:(0,QCt.pi)((0,QCt.pi)({},n.line.inactive),{lineCap:null,lineDash:[1,1]})},selected:{style:(0,QCt.pi)((0,QCt.pi)({},n.line.selected),{lineCap:null,lineDash:[1,1]})}},dash:{default:{style:(0,QCt.pi)((0,QCt.pi)({},n.line.default),{lineCap:null,lineDash:[5.5,1]})},active:{style:(0,QCt.pi)((0,QCt.pi)({},n.line.active),{lineCap:null,lineDash:[5.5,1]})},inactive:{style:(0,QCt.pi)((0,QCt.pi)({},n.line.inactive),{lineCap:null,lineDash:[5.5,1]})},selected:{style:(0,QCt.pi)((0,QCt.pi)({},n.line.selected),{lineCap:null,lineDash:[5.5,1]})}},smooth:{default:{style:n.line.default},active:{style:n.line.active},inactive:{style:n.line.inactive},selected:{style:n.line.selected}},hv:{default:{style:n.line.default},active:{style:n.line.active},inactive:{style:n.line.inactive},selected:{style:n.line.selected}},vh:{default:{style:n.line.default},active:{style:n.line.active},inactive:{style:n.line.inactive},selected:{style:n.line.selected}},hvh:{default:{style:n.line.default},active:{style:n.line.active},inactive:{style:n.line.inactive},selected:{style:n.line.selected}},vhv:{default:{style:n.line.default},active:{style:n.line.active},inactive:{style:n.line.inactive},selected:{style:n.line.selected}}},polygon:{polygon:{default:{style:n.interval.default},active:{style:n.interval.active},inactive:{style:n.interval.inactive},selected:{style:n.interval.selected}}},point:{circle:{default:{style:n.point.default},active:{style:n.point.active},inactive:{style:n.point.inactive},selected:{style:n.point.selected}},square:{default:{style:n.point.default},active:{style:n.point.active},inactive:{style:n.point.inactive},selected:{style:n.point.selected}},bowtie:{default:{style:n.point.default},active:{style:n.point.active},inactive:{style:n.point.inactive},selected:{style:n.point.selected}},diamond:{default:{style:n.point.default},active:{style:n.point.active},inactive:{style:n.point.inactive},selected:{style:n.point.selected}},hexagon:{default:{style:n.point.default},active:{style:n.point.active},inactive:{style:n.point.inactive},selected:{style:n.point.selected}},triangle:{default:{style:n.point.default},active:{style:n.point.active},inactive:{style:n.point.inactive},selected:{style:n.point.selected}},"triangle-down":{default:{style:n.point.default},active:{style:n.point.active},inactive:{style:n.point.inactive},selected:{style:n.point.selected}},"hollow-circle":{default:{style:n.hollowPoint.default},active:{style:n.hollowPoint.active},inactive:{style:n.hollowPoint.inactive},selected:{style:n.hollowPoint.selected}},"hollow-square":{default:{style:n.hollowPoint.default},active:{style:n.hollowPoint.active},inactive:{style:n.hollowPoint.inactive},selected:{style:n.hollowPoint.selected}},"hollow-bowtie":{default:{style:n.hollowPoint.default},active:{style:n.hollowPoint.active},inactive:{style:n.hollowPoint.inactive},selected:{style:n.hollowPoint.selected}},"hollow-diamond":{default:{style:n.hollowPoint.default},active:{style:n.hollowPoint.active},inactive:{style:n.hollowPoint.inactive},selected:{style:n.hollowPoint.selected}},"hollow-hexagon":{default:{style:n.hollowPoint.default},active:{style:n.hollowPoint.active},inactive:{style:n.hollowPoint.inactive},selected:{style:n.hollowPoint.selected}},"hollow-triangle":{default:{style:n.hollowPoint.default},active:{style:n.hollowPoint.active},inactive:{style:n.hollowPoint.inactive},selected:{style:n.hollowPoint.selected}},"hollow-triangle-down":{default:{style:n.hollowPoint.default},active:{style:n.hollowPoint.active},inactive:{style:n.hollowPoint.inactive},selected:{style:n.hollowPoint.selected}},cross:{default:{style:n.hollowPoint.default},active:{style:n.hollowPoint.active},inactive:{style:n.hollowPoint.inactive},selected:{style:n.hollowPoint.selected}},tick:{default:{style:n.hollowPoint.default},active:{style:n.hollowPoint.active},inactive:{style:n.hollowPoint.inactive},selected:{style:n.hollowPoint.selected}},plus:{default:{style:n.hollowPoint.default},active:{style:n.hollowPoint.active},inactive:{style:n.hollowPoint.inactive},selected:{style:n.hollowPoint.selected}},hyphen:{default:{style:n.hollowPoint.default},active:{style:n.hollowPoint.active},inactive:{style:n.hollowPoint.inactive},selected:{style:n.hollowPoint.selected}},line:{default:{style:n.hollowPoint.default},active:{style:n.hollowPoint.active},inactive:{style:n.hollowPoint.inactive},selected:{style:n.hollowPoint.selected}}},area:{area:{default:{style:n.area.default},active:{style:n.area.active},inactive:{style:n.area.inactive},selected:{style:n.area.selected}},smooth:{default:{style:n.area.default},active:{style:n.area.active},inactive:{style:n.area.inactive},selected:{style:n.area.selected}},line:{default:{style:n.hollowArea.default},active:{style:n.hollowArea.active},inactive:{style:n.hollowArea.inactive},selected:{style:n.hollowArea.selected}},"smooth-line":{default:{style:n.hollowArea.default},active:{style:n.hollowArea.active},inactive:{style:n.hollowArea.inactive},selected:{style:n.hollowArea.selected}}},schema:{candle:{default:{style:n.hollowInterval.default},active:{style:n.hollowInterval.active},inactive:{style:n.hollowInterval.inactive},selected:{style:n.hollowInterval.selected}},box:{default:{style:n.hollowInterval.default},active:{style:n.hollowInterval.active},inactive:{style:n.hollowInterval.inactive},selected:{style:n.hollowInterval.selected}}},edge:{line:{default:{style:n.line.default},active:{style:n.line.active},inactive:{style:n.line.inactive},selected:{style:n.line.selected}},vhv:{default:{style:n.line.default},active:{style:n.line.active},inactive:{style:n.line.inactive},selected:{style:n.line.selected}},smooth:{default:{style:n.line.default},active:{style:n.line.active},inactive:{style:n.line.inactive},selected:{style:n.line.selected}},arc:{default:{style:n.line.default},active:{style:n.line.active},inactive:{style:n.line.inactive},selected:{style:n.line.selected}}},violin:{violin:{default:{style:n.line.default},active:{style:n.line.active},inactive:{style:n.line.inactive},selected:{style:n.line.selected}},smooth:{default:{style:n.line.default},active:{style:n.line.active},inactive:{style:n.line.inactive},selected:{style:n.line.selected}},hollow:{default:{style:n.hollowArea.default},active:{style:n.hollowArea.active},inactive:{style:n.hollowArea.inactive},selected:{style:n.hollowArea.selected}},"hollow-smooth":{default:{style:n.hollowArea.default},active:{style:n.hollowArea.active},inactive:{style:n.hollowArea.inactive},selected:{style:n.hollowArea.selected}}}},components:{axis:{common:r,top:{position:"top",grid:null,title:null,verticalLimitLength:.5},bottom:{position:"bottom",grid:null,title:null,verticalLimitLength:.5},left:{position:"left",title:null,line:null,tickLine:null,verticalLimitLength:1/3},right:{position:"right",title:null,line:null,tickLine:null,verticalLimitLength:1/3},circle:{title:null,grid:(0,tOt.b$)({},r.grid,{line:{type:"line"}})},radius:{title:null,grid:(0,tOt.b$)({},r.grid,{line:{type:"circle"}})}},legend:{common:i,right:{layout:"vertical",padding:t.legendVerticalPadding},left:{layout:"vertical",padding:t.legendVerticalPadding},top:{layout:"horizontal",padding:t.legendHorizontalPadding},bottom:{layout:"horizontal",padding:t.legendHorizontalPadding},continuous:{title:null,background:null,track:{},rail:{type:"color",size:t.sliderRailHeight,defaultLength:t.sliderRailWidth,style:{fill:t.sliderRailFillColor,stroke:t.sliderRailBorderColor,lineWidth:t.sliderRailBorder}},label:{align:"rail",spacing:4,formatter:null,style:{fill:t.sliderLabelTextFillColor,fontSize:t.sliderLabelTextFontSize,lineHeight:t.sliderLabelTextLineHeight,textBaseline:"middle",fontFamily:t.fontFamily}},handler:{size:t.sliderHandlerWidth,style:{fill:t.sliderHandlerFillColor,stroke:t.sliderHandlerBorderColor}},slidable:!0,padding:i.padding}},tooltip:{showContent:!0,follow:!0,showCrosshairs:!1,showMarkers:!0,shared:!1,enterable:!1,position:"auto",marker:{symbol:"circle",stroke:"#fff",shadowBlur:10,shadowOffsetX:0,shadowOffsetY:0,shadowColor:"rgba(0,0,0,0.09)",lineWidth:2,r:4},crosshairs:{line:{style:{stroke:t.tooltipCrosshairsBorderColor,lineWidth:t.tooltipCrosshairsBorder}},text:null,textBackground:{padding:2,style:{fill:"rgba(0, 0, 0, 0.25)",lineWidth:0,stroke:null}},follow:!1},domStyles:(e={},e["".concat(k_t)]={position:"absolute",visibility:"hidden",zIndex:8,transition:"left 0.4s cubic-bezier(0.23, 1, 0.32, 1) 0s, top 0.4s cubic-bezier(0.23, 1, 0.32, 1) 0s",backgroundColor:t.tooltipContainerFillColor,opacity:t.tooltipContainerFillOpacity,boxShadow:t.tooltipContainerShadow,borderRadius:"".concat(t.tooltipContainerBorderRadius,"px"),color:t.tooltipTextFillColor,fontSize:"".concat(t.tooltipTextFontSize,"px"),fontFamily:t.fontFamily,lineHeight:"".concat(t.tooltipTextLineHeight,"px"),padding:"0 12px 0 12px"},e["".concat(C_t)]={marginBottom:"12px",marginTop:"12px"},e["".concat(O_t)]={margin:0,listStyleType:"none",padding:0},e["".concat(E_t)]={listStyleType:"none",padding:0,marginBottom:"12px",marginTop:"12px",marginLeft:0,marginRight:0},e["".concat(M_t)]={width:"8px",height:"8px",borderRadius:"50%",display:"inline-block",marginRight:"8px"},e["".concat(A_t)]={display:"inline-block",float:"right",marginLeft:"30px"},e)},annotation:{arc:{style:{stroke:t.annotationArcBorderColor,lineWidth:t.annotationArcBorder},animate:!0},line:{style:{stroke:t.annotationLineBorderColor,lineDash:t.annotationLineDash,lineWidth:t.annotationLineBorder},text:{position:"start",autoRotate:!0,style:{fill:t.annotationTextFillColor,stroke:t.annotationTextBorderColor,lineWidth:t.annotationTextBorder,fontSize:t.annotationTextFontSize,textAlign:"start",fontFamily:t.fontFamily,textBaseline:"bottom"}},animate:!0},text:{style:{fill:t.annotationTextFillColor,stroke:t.annotationTextBorderColor,lineWidth:t.annotationTextBorder,fontSize:t.annotationTextFontSize,textBaseline:"middle",textAlign:"start",fontFamily:t.fontFamily},animate:!0},region:{top:!1,style:{lineWidth:t.annotationRegionBorder,stroke:t.annotationRegionBorderColor,fill:t.annotationRegionFillColor,fillOpacity:t.annotationRegionFillOpacity},animate:!0},image:{top:!1,animate:!0},dataMarker:{top:!0,point:{style:{r:3,stroke:t.brandColor,lineWidth:2}},line:{style:{stroke:t.annotationLineBorderColor,lineWidth:t.annotationLineBorder},length:t.annotationDataMarkerLineLength},text:{style:{textAlign:"start",fill:t.annotationTextFillColor,stroke:t.annotationTextBorderColor,lineWidth:t.annotationTextBorder,fontSize:t.annotationTextFontSize,fontFamily:t.fontFamily}},direction:"upward",autoAdjust:!0,animate:!0},dataRegion:{style:{region:{fill:t.annotationRegionFillColor,fillOpacity:t.annotationRegionFillOpacity},text:{textAlign:"center",textBaseline:"bottom",fill:t.annotationTextFillColor,stroke:t.annotationTextBorderColor,lineWidth:t.annotationTextBorder,fontSize:t.annotationTextFontSize,fontFamily:t.fontFamily}},animate:!0}},slider:{common:{padding:[8,8,8,8],backgroundStyle:{fill:t.cSliderBackgroundFillColor,opacity:t.cSliderBackgroundFillOpacity},foregroundStyle:{fill:t.cSliderForegroundFillColor,opacity:t.cSliderForegroundFillOpacity},handlerStyle:{width:t.cSliderHandlerWidth,height:t.cSliderHandlerHeight,fill:t.cSliderHandlerFillColor,opacity:t.cSliderHandlerFillOpacity,stroke:t.cSliderHandlerBorderColor,lineWidth:t.cSliderHandlerBorder,radius:t.cSliderHandlerBorderRadius,highLightFill:t.cSliderHandlerHighlightFillColor},textStyle:{fill:t.cSliderTextFillColor,opacity:t.cSliderTextFillOpacity,fontSize:t.cSliderTextFontSize,lineHeight:t.cSliderTextLineHeight,fontWeight:t.cSliderTextFontWeight,stroke:t.cSliderTextBorderColor,lineWidth:t.cSliderTextBorder}}},scrollbar:{common:{padding:[8,8,8,8]},default:{style:{trackColor:t.scrollbarTrackFillColor,thumbColor:t.scrollbarThumbFillColor}},hover:{style:{thumbColor:t.scrollbarThumbHighlightFillColor}}}},labels:{offset:12,style:{fill:t.labelFillColor,fontSize:t.labelFontSize,fontFamily:t.fontFamily,stroke:t.labelBorderColor,lineWidth:t.labelBorder},fillColorDark:t.labelFillColorDark,fillColorLight:t.labelFillColorLight,autoRotate:!0},innerLabels:{style:{fill:t.innerLabelFillColor,fontSize:t.innerLabelFontSize,fontFamily:t.fontFamily,stroke:t.innerLabelBorderColor,lineWidth:t.innerLabelBorder},autoRotate:!0},overflowLabels:{style:{fill:t.overflowLabelFillColor,fontSize:t.overflowLabelFontSize,fontFamily:t.fontFamily,stroke:t.overflowLabelBorderColor,lineWidth:t.overflowLabelBorder}},pieLabels:{labelHeight:14,offset:10,labelLine:{style:{lineWidth:t.labelLineBorder}},autoRotate:!0}}}var WTt="#000",VTt="#595959",GTt="#8C8C8C",XTt="#BFBFBF",qTt="#D9D9D9",YTt="#F0F0F0",$Tt="#FFFFFF",KTt="#D9D9D9",JTt=["#5B8FF9","#5AD8A6","#5D7092","#F6BD16","#6F5EF9","#6DC8EC","#945FB9","#FF9845","#1E9493","#FF99C3"],QTt=["#5B8FF9","#CDDDFD","#5AD8A6","#CDF3E4","#5D7092","#CED4DE","#F6BD16","#FCEBB9","#6F5EF9","#D3CEFD","#6DC8EC","#D3EEF9","#945FB9","#DECFEA","#FF9845","#FFE0C7","#1E9493","#BBDEDE","#FF99C3","#FFE0ED"],tZt=["#B8E1FF","#9AC5FF","#7DAAFF","#5B8FF9","#3D76DD","#085EC0","#0047A5","#00318A","#001D70"],eZt=function(t){void 0===t&&(t={});var e=t.paletteQualitative10,n=void 0===e?JTt:e,r=t.paletteQualitative20,i=void 0===r?QTt:r,o=t.brandColor,a=void 0===o?n[0]:o,c={backgroundColor:"transparent",brandColor:a,subColor:"rgba(0,0,0,0.05)",paletteQualitative10:n,paletteQualitative20:i,paletteSemanticRed:"#F4664A",paletteSemanticGreen:"#30BF78",paletteSemanticYellow:"#FAAD14",paletteSequence:tZt,fontFamily:'"Segoe UI", Roboto, "Helvetica Neue", Arial,\n "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol",\n "Noto Color Emoji"',axisLineBorderColor:XTt,axisLineBorder:1,axisLineDash:null,axisTitleTextFillColor:VTt,axisTitleTextFontSize:12,axisTitleTextLineHeight:12,axisTitleTextFontWeight:"normal",axisTitleSpacing:12,axisDescriptionIconFillColor:KTt,axisTickLineBorderColor:XTt,axisTickLineLength:4,axisTickLineBorder:1,axisSubTickLineBorderColor:qTt,axisSubTickLineLength:2,axisSubTickLineBorder:1,axisLabelFillColor:GTt,axisLabelFontSize:12,axisLabelLineHeight:12,axisLabelFontWeight:"normal",axisLabelOffset:8,axisGridBorderColor:qTt,axisGridBorder:1,axisGridLineDash:null,legendTitleTextFillColor:GTt,legendTitleTextFontSize:12,legendTitleTextLineHeight:21,legendTitleTextFontWeight:"normal",legendMarkerColor:a,legendMarkerSpacing:8,legendMarkerSize:4,legendCircleMarkerSize:4,legendSquareMarkerSize:4,legendLineMarkerSize:5,legendItemNameFillColor:VTt,legendItemNameFontSize:12,legendItemNameLineHeight:12,legendItemNameFontWeight:"normal",legendItemSpacing:24,legendItemMarginBottom:12,legendPadding:[8,8,8,8],legendHorizontalPadding:[8,0,8,0],legendVerticalPadding:[0,8,0,8],legendPageNavigatorMarkerSize:12,legendPageNavigatorMarkerInactiveFillColor:WTt,legendPageNavigatorMarkerInactiveFillOpacity:.45,legendPageNavigatorMarkerFillColor:WTt,legendPageNavigatorMarkerFillOpacity:1,legendPageNavigatorTextFillColor:GTt,legendPageNavigatorTextFontSize:12,sliderRailFillColor:qTt,sliderRailBorder:0,sliderRailBorderColor:null,sliderRailWidth:100,sliderRailHeight:12,sliderLabelTextFillColor:GTt,sliderLabelTextFontSize:12,sliderLabelTextLineHeight:12,sliderLabelTextFontWeight:"normal",sliderHandlerFillColor:YTt,sliderHandlerWidth:10,sliderHandlerHeight:14,sliderHandlerBorder:1,sliderHandlerBorderColor:XTt,annotationArcBorderColor:qTt,annotationArcBorder:1,annotationLineBorderColor:XTt,annotationLineBorder:1,annotationLineDash:null,annotationTextFillColor:VTt,annotationTextFontSize:12,annotationTextLineHeight:12,annotationTextFontWeight:"normal",annotationTextBorderColor:null,annotationTextBorder:0,annotationRegionFillColor:WTt,annotationRegionFillOpacity:.06,annotationRegionBorder:0,annotationRegionBorderColor:null,annotationDataMarkerLineLength:16,tooltipCrosshairsBorderColor:XTt,tooltipCrosshairsBorder:1,tooltipCrosshairsLineDash:null,tooltipContainerFillColor:"rgb(255, 255, 255)",tooltipContainerFillOpacity:.95,tooltipContainerShadow:"0px 0px 10px #aeaeae",tooltipContainerBorderRadius:3,tooltipTextFillColor:VTt,tooltipTextFontSize:12,tooltipTextLineHeight:12,tooltipTextFontWeight:"bold",labelFillColor:VTt,labelFillColorDark:"#2c3542",labelFillColorLight:"#ffffff",labelFontSize:12,labelLineHeight:12,labelFontWeight:"normal",labelBorderColor:null,labelBorder:0,innerLabelFillColor:$Tt,innerLabelFontSize:12,innerLabelLineHeight:12,innerLabelFontWeight:"normal",innerLabelBorderColor:null,innerLabelBorder:0,overflowLabelFillColor:VTt,overflowLabelFontSize:12,overflowLabelLineHeight:12,overflowLabelFontWeight:"normal",overflowLabelBorderColor:$Tt,overflowLabelBorder:1,labelLineBorder:1,labelLineBorderColor:XTt,cSliderRailHieght:16,cSliderBackgroundFillColor:"#416180",cSliderBackgroundFillOpacity:.05,cSliderForegroundFillColor:"#5B8FF9",cSliderForegroundFillOpacity:.15,cSliderHandlerHeight:24,cSliderHandlerWidth:10,cSliderHandlerFillColor:"#F7F7F7",cSliderHandlerFillOpacity:1,cSliderHandlerHighlightFillColor:"#FFF",cSliderHandlerBorderColor:"#BFBFBF",cSliderHandlerBorder:1,cSliderHandlerBorderRadius:2,cSliderTextFillColor:"#000",cSliderTextFillOpacity:.45,cSliderTextFontSize:12,cSliderTextLineHeight:12,cSliderTextFontWeight:"normal",cSliderTextBorderColor:null,cSliderTextBorder:0,scrollbarTrackFillColor:"rgba(0,0,0,0)",scrollbarThumbFillColor:"rgba(0,0,0,0.15)",scrollbarThumbHighlightFillColor:"rgba(0,0,0,0.2)",pointFillColor:a,pointFillOpacity:.95,pointSize:4,pointBorder:1,pointBorderColor:$Tt,pointBorderOpacity:1,pointActiveBorderColor:WTt,pointSelectedBorder:2,pointSelectedBorderColor:WTt,pointInactiveFillOpacity:.3,pointInactiveBorderOpacity:.3,hollowPointSize:4,hollowPointBorder:1,hollowPointBorderColor:a,hollowPointBorderOpacity:.95,hollowPointFillColor:$Tt,hollowPointActiveBorder:1,hollowPointActiveBorderColor:WTt,hollowPointActiveBorderOpacity:1,hollowPointSelectedBorder:2,hollowPointSelectedBorderColor:WTt,hollowPointSelectedBorderOpacity:1,hollowPointInactiveBorderOpacity:.3,lineBorder:2,lineBorderColor:a,lineBorderOpacity:1,lineActiveBorder:3,lineSelectedBorder:3,lineInactiveBorderOpacity:.3,areaFillColor:a,areaFillOpacity:.25,areaActiveFillColor:a,areaActiveFillOpacity:.5,areaSelectedFillColor:a,areaSelectedFillOpacity:.5,areaInactiveFillOpacity:.3,hollowAreaBorderColor:a,hollowAreaBorder:2,hollowAreaBorderOpacity:1,hollowAreaActiveBorder:3,hollowAreaActiveBorderColor:WTt,hollowAreaSelectedBorder:3,hollowAreaSelectedBorderColor:WTt,hollowAreaInactiveBorderOpacity:.3,intervalFillColor:a,intervalFillOpacity:.95,intervalActiveBorder:1,intervalActiveBorderColor:WTt,intervalActiveBorderOpacity:1,intervalSelectedBorder:2,intervalSelectedBorderColor:WTt,intervalSelectedBorderOpacity:1,intervalInactiveBorderOpacity:.3,intervalInactiveFillOpacity:.3,hollowIntervalBorder:2,hollowIntervalBorderColor:a,hollowIntervalBorderOpacity:1,hollowIntervalFillColor:$Tt,hollowIntervalActiveBorder:2,hollowIntervalActiveBorderColor:WTt,hollowIntervalSelectedBorder:3,hollowIntervalSelectedBorderColor:WTt,hollowIntervalSelectedBorderOpacity:1,hollowIntervalInactiveBorderOpacity:.3};return(0,QCt.pi)((0,QCt.pi)({},c),t)};eZt();function nZt(t){var e=t.styleSheet,n=void 0===e?{}:e,r=(0,QCt._T)(t,["styleSheet"]),i=eZt(n);return(0,tOt.b$)({},HTt(i),r)}var rZt={default:nZt({})};function iZt(t){return(0,tOt.U2)(rZt,(0,tOt.vl)(t),rZt.default)}function oZt(t,e,n){var r=n.translate(t),i=n.translate(e);return(0,tOt.vQ)(r,i)}function aZt(t,e,n){var r=n.coordinate,i=n.getYScale(),o=i.field,a=r.invert(e),c=i.invert(a.y);return(0,tOt.sE)(t,(function(t){var e=t[dOt];return e[o][0]<=c&&e[o][1]>=c}))||t[t.length-1]}var cZt=(0,tOt.HP)((function(t){if(t.isCategory)return 1;for(var e=t.values,n=e.length,r=t.translate(e[0]),i=r,o=0;oi&&(i=c)}return(i-r)/(n-1)}));function lZt(t){var e,n,r,i=function(t){var e=(0,tOt.VO)(t.attributes);return(0,tOt.hX)(e,(function(t){return(0,tOt.FX)(hOt,t.type)}))}(t);try{for(var o=(0,QCt.XA)(i),a=o.next();!a.done;a=o.next()){var c=a.value,l=c.getScale(c.type);if(l&&l.isLinear)if("cat"!==SDt(l,(0,tOt.U2)(t.scaleDefs,l.field),c.type,t.type)){r=l;break}}}catch(f){e={error:f}}finally{try{a&&!a.done&&(n=o.return)&&n.call(o)}finally{if(e)throw e.error}}var u=t.getXScale(),s=t.getYScale();return r||s||u}function uZt(t,e,n){if(0===e.length)return null;var r=n.type,i=n.getXScale(),o=n.getYScale(),a=i.field,c=o.field,l=null;if("heatmap"===r||"point"===r){for(var u=n.coordinate.invert(t),s=i.invert(u.x),f=o.invert(u.y),h=1/0,d=0;d(1+o)/2&&(c=a),r.translate(r.invert(c))}(t,n),x=m[dOt][a],w=m[dOt][c],S=y[dOt][a],k=o.isLinear&&(0,tOt.kJ)(w);if((0,tOt.kJ)(x)){for(d=0;d=b){if(!k){l=P;break}(0,tOt.kJ)(l)||(l=[]),l.push(P)}}(0,tOt.kJ)(l)&&(l=aZt(l,t,n))}else{var C=void 0;if(i.isLinear||"timeCat"===i.type){if((b>i.translate(S)||bi.max||bMath.abs(i.translate(C[dOt][a])-b)&&(y=C)}var _=cZt(n.getXScale());return!l&&Math.abs(i.translate(y[dOt][a])-b)<=_/2&&(l=y),l}function sZt(t,e,n,r){var i,o;void 0===n&&(n=""),void 0===r&&(r=!1);var a,c,l=t[dOt],u=function(t,e,n){var r=e.getAttribute("position").getFields(),i=e.scales,o=(0,tOt.mf)(n)||!n?r[0]:n,a=i[o],c=a?a.getText(t[o]):t[o]||o;return(0,tOt.mf)(n)?n(c,t):c}(l,e,n),s=e.tooltipOption,f=e.theme.defaultColor,h=[];function d(e,n){if(r||!(0,tOt.UM)(n)&&""!==n){var i={title:u,data:l,mappingData:t,name:e,value:n,color:t.color||f,marker:!0};h.push(i)}}if((0,tOt.Kn)(s)){var p=s.fields,v=s.callback;if(v){var g=p.map((function(e){return t[dOt][e]})),m=v.apply(void 0,(0,QCt.ev)([],(0,QCt.CR)(g),!1)),y=(0,QCt.pi)({data:t[dOt],mappingData:t,title:u,color:t.color||f,marker:!0},m);h.push(y)}else{var b=e.scales;try{for(var x=(0,QCt.XA)(p),w=x.next();!w.done;w=x.next()){var S=w.value;if(!(0,tOt.UM)(l[S])){var k=b[S];d(a=CDt(k),c=k.getText(l[S]))}}}catch(O){i={error:O}}finally{try{w&&!w.done&&(o=x.return)&&o.call(x)}finally{if(i)throw i.error}}}}else{var C=lZt(e);c=function(t,e){var n=t[e.field];return(0,tOt.kJ)(n)?n.map((function(t){return e.getText(t)})).join("-"):e.getText(n)}(l,C),a=function(t,e){var n,r=e.getGroupScales();if(r.length&&(n=r[0]),n){var i=n.field;return n.getText(t[i])}return CDt(lZt(e))}(l,e),d(a,c)}return h}function fZt(t,e,n,r){var i,o,a=r.showNil,c=[],l=t.dataArray;if(!(0,tOt.xb)(l)){t.sort(l);try{for(var u=(0,QCt.XA)(l),s=u.next();!s.done;s=u.next()){var f=uZt(e,s.value,t);if(f){var h=t.getElementId(f),d=t.elementsMap[h];if("heatmap"===t.type||d.visible){var p=sZt(f,t,n,a);p.length&&c.push(p)}}}}catch(v){i={error:v}}finally{try{s&&!s.done&&(o=u.return)&&o.call(u)}finally{if(i)throw i.error}}}return c}function hZt(t,e,n,r){var i=r.showNil,o=[],a=t.container.getShape(e.x,e.y);if(a&&a.get("visible")&&a.get("origin")){var c=sZt(a.get("origin").mappingData,t,n,i);c.length&&o.push(c)}return o}function dZt(t,e,n){var r,i,o=[],a=t.geometries,c=n.shared,l=n.title,u=n.reversed;try{for(var s=(0,QCt.XA)(a),f=s.next();!f.done;f=s.next()){var h=f.value;if(h.visible&&!1!==h.tooltipOption){var d=h.type,p=void 0;(p=["point","edge","polygon"].includes(d)?hZt(h,e,l,n):["area","line","path","heatmap"].includes(d)||!1!==c?fZt(h,e,l,n):hZt(h,e,l,n)).length&&(u&&p.reverse(),o.push(p))}}}catch(v){r={error:v}}finally{try{f&&!f.done&&(i=s.return)&&i.call(s)}finally{if(r)throw r.error}}return o}function pZt(t){void 0===t&&(t=0);var e=(0,tOt.kJ)(t)?t:[t];switch(e.length){case 0:e=[0,0,0,0];break;case 1:e=new Array(4).fill(e[0]);break;case 2:e=(0,QCt.ev)((0,QCt.ev)([],(0,QCt.CR)(e),!1),(0,QCt.CR)(e),!1);break;case 3:e=(0,QCt.ev)((0,QCt.ev)([],(0,QCt.CR)(e),!1),[e[1]],!1);break;default:e=e.slice(0,4)}return e}var vZt={};function gZt(t,e){vZt[t]=e}var mZt=function(){function t(t){this.option=this.wrapperOption(t)}return t.prototype.update=function(t){return this.option=this.wrapperOption(t),this},t.prototype.hasAction=function(t){var e=this.option.actions;return(0,tOt.G)(e,(function(e){return e[0]===t}))},t.prototype.create=function(t,e){var n=this.option,r=n.type,i=n.cfg,o="theta"===r,a=(0,QCt.pi)({start:t,end:e},i),c=function(t){return dAt[t.toLowerCase()]}(o?"polar":r);return this.coordinate=new c(a),this.coordinate.type=r,o&&(this.hasAction("transpose")||this.transpose()),this.execActions(),this.coordinate},t.prototype.adjust=function(t,e){return this.coordinate.update({start:t,end:e}),this.coordinate.resetMatrix(),this.execActions(["scale","rotate","translate"]),this.coordinate},t.prototype.rotate=function(t){return this.option.actions.push(["rotate",t]),this},t.prototype.reflect=function(t){return this.option.actions.push(["reflect",t]),this},t.prototype.scale=function(t,e){return this.option.actions.push(["scale",t,e]),this},t.prototype.transpose=function(){return this.option.actions.push(["transpose"]),this},t.prototype.getOption=function(){return this.option},t.prototype.getCoordinate=function(){return this.coordinate},t.prototype.wrapperOption=function(t){return(0,QCt.pi)({type:"rect",actions:[],cfg:{}},t)},t.prototype.execActions=function(t){var e=this,n=this.option.actions;(0,tOt.S6)(n,(function(n){var r,i=(0,QCt.CR)(n),o=i[0],a=i.slice(1);(!!(0,tOt.UM)(t)||t.includes(o))&&(r=e.coordinate)[o].apply(r,(0,QCt.ev)([],(0,QCt.CR)(a),!1))}))},t}(),yZt=mZt,bZt=function(){function t(t,e,n){this.view=t,this.gEvent=e,this.data=n,this.type=e.type}return t.fromData=function(e,n,r){return new t(e,new kOt.Event(n,{}),r)},Object.defineProperty(t.prototype,"target",{get:function(){return this.gEvent.target},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"event",{get:function(){return this.gEvent.originalEvent},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"x",{get:function(){return this.gEvent.x},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"y",{get:function(){return this.gEvent.y},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"clientX",{get:function(){return this.gEvent.clientX},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"clientY",{get:function(){return this.gEvent.clientY},enumerable:!1,configurable:!0}),t.prototype.toString=function(){return"[Event (type=".concat(this.type,")]")},t.prototype.clone=function(){return new t(this.view,this.gEvent,this.data)},t}(),xZt=bZt;function wZt(t){var e=t.getController("axis"),n=t.getController("legend"),r=t.getController("annotation");[e,t.getController("slider"),t.getController("scrollbar"),n,r].forEach((function(t){t&&t.layout()}))}var SZt=function(){function t(){this.scales=new Map,this.syncScales=new Map}return t.prototype.createScale=function(t,e,n,r){var i=n,o=this.getScaleMeta(r);if(0===e.length&&o){var a=o.scale,c={type:a.type};a.isCategory&&(c.values=a.values),i=(0,tOt.b$)(c,o.scaleDef,n)}var l=kDt(t,e,i);return this.cacheScale(l,n,r),l},t.prototype.sync=function(t,e){var n=this;this.syncScales.forEach((function(r,i){var o=Number.MAX_SAFE_INTEGER,a=Number.MIN_SAFE_INTEGER,c=[];(0,tOt.S6)(r,(function(t){var e=n.getScale(t);a=(0,tOt.hj)(e.max)?Math.max(a,e.max):a,o=(0,tOt.hj)(e.min)?Math.min(o,e.min):o,(0,tOt.S6)(e.values,(function(t){c.includes(t)||c.push(t)}))})),(0,tOt.S6)(r,(function(r){var i=n.getScale(r);if(i.isContinuous)i.change({min:o,max:a,values:c});else if(i.isCategory){var l=i.range,u=n.getScaleMeta(r);c&&!(0,tOt.U2)(u,["scaleDef","range"])&&(l=ODt((0,tOt.b$)({},i,{values:c}),t,e)),i.change({values:c,range:l})}}))}))},t.prototype.cacheScale=function(t,e,n){var r=this.getScaleMeta(n);r&&r.scale.type===t.type?(!function(t,e){if("identity"!==t.type&&"identity"!==e.type){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);t.change(n)}}(r.scale,t),r.scaleDef=e):(r={key:n,scale:t,scaleDef:e},this.scales.set(n,r));var i=this.getSyncKey(r);if(r.syncKey=i,this.removeFromSyncScales(n),i){var o=this.syncScales.get(i);o||(o=[],this.syncScales.set(i,o)),o.push(n)}},t.prototype.getScale=function(t){var e=this.getScaleMeta(t);if(!e){var n=(0,tOt.Z$)(t.split("-")),r=this.syncScales.get(n);r&&r.length&&(e=this.getScaleMeta(r[0]))}return e&&e.scale},t.prototype.deleteScale=function(t){var e=this.getScaleMeta(t);if(e){var n=e.syncKey,r=this.syncScales.get(n);if(r&&r.length){var i=r.indexOf(t);-1!==i&&r.splice(i,1)}}this.scales.delete(t)},t.prototype.clear=function(){this.scales.clear(),this.syncScales.clear()},t.prototype.removeFromSyncScales=function(t){var e=this;this.syncScales.forEach((function(n,r){var i=n.indexOf(t);if(-1!==i)return n.splice(i,1),0===n.length&&e.syncScales.delete(r),!1}))},t.prototype.getSyncKey=function(t){var e=t.scale,n=t.scaleDef,r=e.field,i=(0,tOt.U2)(n,["sync"]);return!0===i?r:!1===i?void 0:i},t.prototype.getScaleMeta=function(t){return this.scales.get(t)},t}(),kZt=function(){function t(t,e,n,r){void 0===t&&(t=0),void 0===e&&(e=0),void 0===n&&(n=0),void 0===r&&(r=0),this.top=t,this.right=e,this.bottom=n,this.left=r}return t.instance=function(e,n,r,i){return void 0===e&&(e=0),void 0===n&&(n=0),void 0===r&&(r=0),void 0===i&&(i=0),new t(e,n,r,i)},t.prototype.max=function(t){var e=(0,QCt.CR)(t,4),n=e[0],r=e[1],i=e[2],o=e[3];return this.top=Math.max(this.top,n),this.right=Math.max(this.right,r),this.bottom=Math.max(this.bottom,i),this.left=Math.max(this.left,o),this},t.prototype.shrink=function(t){var e=(0,QCt.CR)(t,4),n=e[0],r=e[1],i=e[2],o=e[3];return this.top+=n,this.right+=r,this.bottom+=i,this.left+=o,this},t.prototype.inc=function(t,e){var n=t.width,r=t.height;switch(e){case $Ct.TOP:case $Ct.TOP_LEFT:case $Ct.TOP_RIGHT:this.top+=r;break;case $Ct.RIGHT:case $Ct.RIGHT_TOP:case $Ct.RIGHT_BOTTOM:this.right+=n;break;case $Ct.BOTTOM:case $Ct.BOTTOM_LEFT:case $Ct.BOTTOM_RIGHT:this.bottom+=r;break;case $Ct.LEFT:case $Ct.LEFT_TOP:case $Ct.LEFT_BOTTOM:this.left+=n}return this},t.prototype.getPadding=function(){return[this.top,this.right,this.bottom,this.left]},t.prototype.clone=function(){return new(t.bind.apply(t,(0,QCt.ev)([void 0],(0,QCt.CR)(this.getPadding()),!1)))},t}();function CZt(t){var e=t.padding;if(!function(t){return!(0,tOt.hj)(t)&&!(0,tOt.kJ)(t)}(e))return new(kZt.bind.apply(kZt,(0,QCt.ev)([void 0],(0,QCt.CR)(pZt(e)),!1)));var n=t.viewBBox,r=new kZt,i=[],o=[],a=[];return(0,tOt.S6)(t.getComponents(),(function(t){var e=t.type;e===KCt.AXIS?i.push(t):[KCt.LEGEND,KCt.SLIDER,KCt.SCROLLBAR].includes(e)?o.push(t):e!==KCt.GRID&&e!==KCt.TOOLTIP&&a.push(t)})),(0,tOt.S6)(i,(function(t){var e=t.component.getLayoutBBox(),i=new gDt(e.x,e.y,e.width,e.height).exceed(n);r.max(i)})),(0,tOt.S6)(o,(function(t){var e=t.component,n=t.direction,i=e.getLayoutBBox(),o=e.get("padding"),a=new gDt(i.x,i.y,i.width,i.height).expand(o);r.inc(a,n)})),(0,tOt.S6)(a,(function(t){var e=t.component,n=t.direction,i=e.getLayoutBBox(),o=new gDt(i.x,i.y,i.width,i.height);r.inc(o,n)})),r}function OZt(t,e,n){var r=n.instance();e.forEach((function(t){t.autoPadding=r.max(t.autoPadding.getPadding())}))}var EZt=function(t){function e(e){var n=t.call(this,{visible:e.visible})||this;n.views=[],n.geometries=[],n.controllers=[],n.interactions={},n.limitInPlot=!1,n.options={data:[],animate:!0},n.usedControllers=Object.keys(vZt),n.scalePool=new SZt,n.layoutFunc=wZt,n.isPreMouseInPlot=!1,n.isDataChanged=!1,n.isCoordinateChanged=!1,n.createdScaleKeys=new Map,n.onCanvasEvent=function(t){var e=t.name;if(!e.includes(":")){var r=n.createViewEvent(t);n.doPlotEvent(r),n.emit(e,r)}},n.onDelegateEvents=function(t){var e=t.name;if(e.includes(":")){var r=n.createViewEvent(t);n.emit(e,r)}};var r=e.id,i=void 0===r?(0,tOt.EL)("view"):r,o=e.parent,a=e.canvas,c=e.backgroundGroup,l=e.middleGroup,u=e.foregroundGroup,s=e.region,f=void 0===s?{start:{x:0,y:0},end:{x:1,y:1}}:s,h=e.padding,d=e.appendPadding,p=e.theme,v=e.options,g=e.limitInPlot,m=e.syncViewPadding;return n.parent=o,n.canvas=a,n.backgroundGroup=c,n.middleGroup=l,n.foregroundGroup=u,n.region=f,n.padding=h,n.appendPadding=d,n.options=(0,QCt.pi)((0,QCt.pi)({},n.options),v),n.limitInPlot=g,n.id=i,n.syncViewPadding=m,n.themeObject=(0,tOt.Kn)(p)?(0,tOt.b$)({},iZt("default"),nZt(p)):iZt(p),n.init(),n}return(0,QCt.ZT)(e,t),e.prototype.setLayout=function(t){this.layoutFunc=t},e.prototype.init=function(){this.calculateViewBBox(),this.initEvents(),this.initComponentController(),this.initOptions()},e.prototype.render=function(t,e){void 0===t&&(t=!1),this.emit(eOt.BEFORE_RENDER,xZt.fromData(this,eOt.BEFORE_RENDER,e)),this.paint(t),this.emit(eOt.AFTER_RENDER,xZt.fromData(this,eOt.AFTER_RENDER,e)),!1===this.visible&&this.changeVisible(!1)},e.prototype.clear=function(){var t=this;this.emit(eOt.BEFORE_CLEAR),this.filteredData=[],this.coordinateInstance=void 0,this.isDataChanged=!1,this.isCoordinateChanged=!1;for(var e=this.geometries,n=0;n');O.appendChild(E);var M=bOt(O,c,i,o),A=new(function(t){var e=pOt[t];if(!e)throw new Error("G engine '".concat(t,"' is not exist, please register it at first."));return e}(f).Canvas)((0,QCt.pi)({container:E,pixelRatio:h,localRefresh:p,supportCSSTransform:y},M));return(n=t.call(this,{parent:null,canvas:A,backgroundGroup:A.addGroup({zIndex:cOt}),middleGroup:A.addGroup({zIndex:aOt}),foregroundGroup:A.addGroup({zIndex:oOt}),padding:l,appendPadding:u,visible:g,options:w,limitInPlot:S,theme:k,syncViewPadding:C})||this).onResize=(0,tOt.Ds)((function(){n.forceFit()}),300),n.ele=O,n.canvas=A,n.width=M.width,n.height=M.height,n.autoFit=c,n.localRefresh=p,n.renderer=f,n.wrapperElement=E,n.updateCanvasStyle(),n.bindAutoFit(),n.initDefaultInteractions(x),n}return(0,QCt.ZT)(e,t),e.prototype.initDefaultInteractions=function(t){var e=this;(0,tOt.S6)(t,(function(t){e.interaction(t)}))},e.prototype.aria=function(t){var e="aria-label";!1===t?this.ele.removeAttribute(e):this.ele.setAttribute(e,t.label)},e.prototype.changeSize=function(t,e){return this.width===t&&this.height===e||(this.emit(eOt.BEFORE_CHANGE_SIZE),this.width=t,this.height=e,this.canvas.changeSize(t,e),this.render(!0),this.emit(eOt.AFTER_CHANGE_SIZE)),this},e.prototype.clear=function(){t.prototype.clear.call(this),this.aria(!1)},e.prototype.destroy=function(){t.prototype.destroy.call(this),this.unbindAutoFit(),this.canvas.destroy(),function(t){var e=t.parentNode;e&&e.removeChild(t)}(this.wrapperElement),this.wrapperElement=null},e.prototype.changeVisible=function(e){return t.prototype.changeVisible.call(this,e),this.wrapperElement.style.display=e?"":"none",this},e.prototype.forceFit=function(){if(!this.destroyed){var t=bOt(this.ele,!0,this.width,this.height),e=t.width,n=t.height;this.changeSize(e,n)}},e.prototype.updateCanvasStyle=function(){mOt(this.canvas.get("el"),{display:"inline-block",verticalAlign:"middle"})},e.prototype.bindAutoFit=function(){this.autoFit&&window.addEventListener("resize",this.onResize)},e.prototype.unbindAutoFit=function(){this.autoFit&&window.removeEventListener("resize",this.onResize)},e}(EZt),PZt=AZt,_Zt=function(){function t(t){this.visible=!0,this.components=[],this.view=t}return t.prototype.clear=function(t){(0,tOt.S6)(this.components,(function(t){t.component.destroy()})),this.components=[]},t.prototype.destroy=function(){this.clear()},t.prototype.getComponents=function(){return this.components},t.prototype.changeVisible=function(t){this.visible!==t&&(this.components.forEach((function(e){t?e.component.show():e.component.hide()})),this.visible=t)},t}();var DZt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.isLocked=!1,e}return(0,QCt.ZT)(e,t),Object.defineProperty(e.prototype,"name",{get:function(){return"tooltip"},enumerable:!1,configurable:!0}),e.prototype.init=function(){},e.prototype.isVisible=function(){return!1!==this.view.getOptions().tooltip},e.prototype.render=function(){},e.prototype.showTooltip=function(t){if(this.point=t,this.isVisible()){var e=this.view,n=this.getTooltipItems(t);if(n.length){var r=this.getTitle(n),i={x:n[0].x,y:n[0].y};e.emit("tooltip:show",xZt.fromData(e,"tooltip:show",(0,QCt.pi)({items:n,title:r},t)));var o=this.getTooltipCfg(),a=o.follow,c=o.showMarkers,l=o.showCrosshairs,u=o.showContent,s=o.marker,f=this.items,h=this.title;if((0,tOt.Xy)(h,r)&&(0,tOt.Xy)(f,n)?(this.tooltip&&a&&(this.tooltip.update(t),this.tooltip.show()),this.tooltipMarkersGroup&&this.tooltipMarkersGroup.show()):(e.emit("tooltip:change",xZt.fromData(e,"tooltip:change",(0,QCt.pi)({items:n,title:r},t))),((0,tOt.mf)(u)?u(n):u)&&(this.tooltip||this.renderTooltip(),this.tooltip.update((0,tOt.CD)({},o,{items:this.getItemsAfterProcess(n),title:r},a?t:{})),this.tooltip.show()),c&&this.renderTooltipMarkers(n,s)),this.items=n,this.title=r,l){var d=(0,tOt.U2)(o,["crosshairs","follow"],!1);this.renderCrosshairs(d?t:i,o)}}else this.hideTooltip()}},e.prototype.hideTooltip=function(){if(this.getTooltipCfg().follow){var t=this.tooltipMarkersGroup;t&&t.hide();var e=this.xCrosshair,n=this.yCrosshair;e&&e.hide(),n&&n.hide();var r=this.tooltip;r&&r.hide(),this.view.emit("tooltip:hide",xZt.fromData(this.view,"tooltip:hide",{})),this.point=null}else this.point=null},e.prototype.lockTooltip=function(){this.isLocked=!0,this.tooltip&&this.tooltip.setCapture(!0)},e.prototype.unlockTooltip=function(){this.isLocked=!1;var t=this.getTooltipCfg();this.tooltip&&this.tooltip.setCapture(t.capture)},e.prototype.isTooltipLocked=function(){return this.isLocked},e.prototype.clear=function(){var t=this,e=t.tooltip,n=t.xCrosshair,r=t.yCrosshair,i=t.tooltipMarkersGroup;e&&(e.hide(),e.clear()),n&&n.clear(),r&&r.clear(),i&&i.clear(),(null==e?void 0:e.get("customContent"))&&(this.tooltip.destroy(),this.tooltip=null),this.title=null,this.items=null},e.prototype.destroy=function(){this.tooltip&&this.tooltip.destroy(),this.xCrosshair&&this.xCrosshair.destroy(),this.yCrosshair&&this.yCrosshair.destroy(),this.guideGroup&&this.guideGroup.remove(!0),this.reset()},e.prototype.reset=function(){this.items=null,this.title=null,this.tooltipMarkersGroup=null,this.tooltipCrosshairsGroup=null,this.xCrosshair=null,this.yCrosshair=null,this.tooltip=null,this.guideGroup=null,this.isLocked=!1,this.point=null},e.prototype.changeVisible=function(t){if(this.visible!==t){var e=this,n=e.tooltip,r=e.tooltipMarkersGroup,i=e.xCrosshair,o=e.yCrosshair;t?(n&&n.show(),r&&r.show(),i&&i.show(),o&&o.show()):(n&&n.hide(),r&&r.hide(),i&&i.hide(),o&&o.hide()),this.visible=t}},e.prototype.getTooltipItems=function(t){var e,n,r,i,o,a,c=this.findItemsFromView(this.view,t);if(c.length){c=(0,tOt.xH)(c);try{for(var l=(0,QCt.XA)(c),u=l.next();!u.done;u=l.next()){var s=u.value;try{for(var f=(r=void 0,(0,QCt.XA)(s)),h=f.next();!h.done;h=f.next()){var d=h.value,p=d.mappingData,v=p.x,g=p.y;d.x=(0,tOt.kJ)(v)?v[v.length-1]:v,d.y=(0,tOt.kJ)(g)?g[g.length-1]:g}}catch(k){r={error:k}}finally{try{h&&!h.done&&(i=f.return)&&i.call(f)}finally{if(r)throw r.error}}}}catch(C){e={error:C}}finally{try{u&&!u.done&&(n=l.return)&&n.call(l)}finally{if(e)throw e.error}}if(!1===this.getTooltipCfg().shared&&c.length>1){var m=c[0],y=Math.abs(t.y-m[0].y);try{for(var b=(0,QCt.XA)(c),x=b.next();!x.done;x=b.next()){var w=x.value,S=Math.abs(t.y-w[0].y);S<=y&&(m=w,y=S)}}catch(O){o={error:O}}finally{try{x&&!x.done&&(a=b.return)&&a.call(b)}finally{if(o)throw o.error}}c=[m]}return function(t){for(var e=[],n=function(n){var r=t[n];(0,tOt.sE)(e,(function(t){return t.color===r.color&&t.name===r.name&&t.value===r.value&&t.title===r.title}))||e.push(r)},r=0;r'+r+"":r}})},e.prototype.getTitle=function(t){var e=t[0].title||t[0].name;return this.title=e,e},e.prototype.renderTooltip=function(){var t=this.view.getCanvas(),e={start:{x:0,y:0},end:{x:t.get("width"),y:t.get("height")}},n=this.getTooltipCfg(),r=new oDt((0,QCt.pi)((0,QCt.pi)({parent:t.get("el").parentNode,region:e},n),{visible:!1,crosshairs:null}));r.init(),this.tooltip=r},e.prototype.renderTooltipMarkers=function(t,e){var n,r,i=this.getTooltipMarkersGroup(),o=this.view.getRootView(),a=o.limitInPlot;try{for(var c=(0,QCt.XA)(t),l=c.next();!l.done;l=c.next()){var u=l.value,s=u.x,f=u.y;if(a||(null==i?void 0:i.getClip())){var h=xDt(o.getCoordinate()),d=h.type,p=h.attrs;null==i||i.setClip({type:d,attrs:p})}else null==i||i.setClip(void 0);var v=this.view.getTheme(),g=(0,tOt.U2)(v,["components","tooltip","marker"],{}),m=(0,QCt.pi)((0,QCt.pi)({fill:u.color,symbol:"circle",shadowColor:u.color},(0,tOt.mf)(e)?(0,QCt.pi)((0,QCt.pi)({},g),e(u)):e),{x:s,y:f});i.addShape("marker",{attrs:m})}}catch(y){n={error:y}}finally{try{l&&!l.done&&(r=c.return)&&r.call(c)}finally{if(n)throw n.error}}},e.prototype.renderCrosshairs=function(t,e){var n=(0,tOt.U2)(e,["crosshairs","type"],"x");"x"===n?(this.yCrosshair&&this.yCrosshair.hide(),this.renderXCrosshairs(t,e)):"y"===n?(this.xCrosshair&&this.xCrosshair.hide(),this.renderYCrosshairs(t,e)):"xy"===n&&(this.renderXCrosshairs(t,e),this.renderYCrosshairs(t,e))},e.prototype.renderXCrosshairs=function(t,e){var n,r,i=this.getViewWithGeometry(this.view).getCoordinate();if(i.isRect)i.isTransposed?(n={x:i.start.x,y:t.y},r={x:i.end.x,y:t.y}):(n={x:t.x,y:i.end.y},r={x:t.x,y:i.start.y});else{var o=bDt(i,t),a=i.getCenter(),c=i.getRadius();r=lDt(a.x,a.y,c,o),n=a}var l=(0,tOt.b$)({start:n,end:r,container:this.getTooltipCrosshairsGroup()},(0,tOt.U2)(e,"crosshairs",{}),this.getCrosshairsText("x",t,e));delete l.type;var u=this.xCrosshair;u?u.update(l):(u=new $Pt(l)).init(),u.render(),u.show(),this.xCrosshair=u},e.prototype.renderYCrosshairs=function(t,e){var n,r,i=this.getViewWithGeometry(this.view).getCoordinate();if(i.isRect){var o=void 0,a=void 0;i.isTransposed?(o={x:t.x,y:i.end.y},a={x:t.x,y:i.start.y}):(o={x:i.start.x,y:t.y},a={x:i.end.x,y:t.y}),n={start:o,end:a},r="Line"}else n={center:i.getCenter(),radius:yDt(i,t),startAngle:i.startAngle,endAngle:i.endAngle},r="Circle";delete(n=(0,tOt.b$)({container:this.getTooltipCrosshairsGroup()},n,(0,tOt.U2)(e,"crosshairs",{}),this.getCrosshairsText("y",t,e))).type;var c=this.yCrosshair;c?i.isRect&&"circle"===c.get("type")||!i.isRect&&"line"===c.get("type")?(c=new E[r](n)).init():c.update(n):(c=new E[r](n)).init(),c.render(),c.show(),this.yCrosshair=c},e.prototype.getCrosshairsText=function(t,e,n){var r=(0,tOt.U2)(n,["crosshairs","text"]),i=(0,tOt.U2)(n,["crosshairs","follow"]),o=this.items;if(r){var a=this.getViewWithGeometry(this.view),c=o[0],l=a.getXScale(),u=a.getYScales()[0],s=void 0,f=void 0;if(i){var h=this.view.getCoordinate().invert(e);s=l.invert(h.x),f=u.invert(h.y)}else s=c.data[l.field],f=c.data[u.field];var d="x"===t?s:f;return(0,tOt.mf)(r)?r=r(t,d,o,e):r.content=d,{text:r}}},e.prototype.getGuideGroup=function(){if(!this.guideGroup){var t=this.view.foregroundGroup;this.guideGroup=t.addGroup({name:"tooltipGuide",capture:!1})}return this.guideGroup},e.prototype.getTooltipMarkersGroup=function(){var t=this.tooltipMarkersGroup;return t&&!t.destroyed?(t.clear(),t.show()):((t=this.getGuideGroup().addGroup({name:"tooltipMarkersGroup"})).toFront(),this.tooltipMarkersGroup=t),t},e.prototype.getTooltipCrosshairsGroup=function(){var t=this.tooltipCrosshairsGroup;return t||((t=this.getGuideGroup().addGroup({name:"tooltipCrosshairsGroup",capture:!1})).toBack(),this.tooltipCrosshairsGroup=t),t},e.prototype.findItemsFromView=function(t,e){var n,r;if(!1===t.getOptions().tooltip)return[];var i=dZt(t,e,this.getTooltipCfg());try{for(var o=(0,QCt.XA)(t.views),a=o.next();!a.done;a=o.next()){var c=a.value;i=i.concat(this.findItemsFromView(c,e))}}catch(l){n={error:l}}finally{try{a&&!a.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}return i},e.prototype.getViewWithGeometry=function(t){var e=this;return t.geometries.length?t:(0,tOt.sE)(t.views,(function(t){return e.getViewWithGeometry(t)}))},e.prototype.getItemsAfterProcess=function(t){var e=this.getTooltipCfg().customItems,n=e||function(t){return t};return n(t)},e}(_Zt),TZt=DZt,ZZt={};function FZt(t){return ZZt[t.toLowerCase()]}function jZt(t,e){ZZt[t.toLowerCase()]=e}var IZt={appear:{duration:450,easing:"easeQuadOut"},update:{duration:400,easing:"easeQuadInOut"},enter:{duration:400,easing:"easeQuadInOut"},leave:{duration:350,easing:"easeQuadIn"}},RZt={interval:function(t){return{enter:{animation:t.isRect?t.isTransposed?"scale-in-x":"scale-in-y":"fade-in"},update:{animation:t.isPolar&&t.isTransposed?"sector-path-update":null},leave:{animation:"fade-out"}}},line:{enter:{animation:"fade-in"},leave:{animation:"fade-out"}},path:{enter:{animation:"fade-in"},leave:{animation:"fade-out"}},point:{appear:{animation:"zoom-in"},enter:{animation:"zoom-in"},leave:{animation:"zoom-out"}},area:{enter:{animation:"fade-in"},leave:{animation:"fade-out"}},polygon:{enter:{animation:"fade-in"},leave:{animation:"fade-out"}},schema:{enter:{animation:"fade-in"},leave:{animation:"fade-out"}},edge:{enter:{animation:"fade-in"},leave:{animation:"fade-out"}},label:{appear:{animation:"fade-in",delay:450},enter:{animation:"fade-in"},update:{animation:"position-update"},leave:{animation:"fade-out"}}},LZt={line:function(){return{animation:"wave-in"}},area:function(){return{animation:"wave-in"}},path:function(){return{animation:"fade-in"}},interval:function(t){var e;return t.isRect?e=t.isTransposed?"grow-in-x":"grow-in-y":(e="grow-in-xy",t.isPolar&&t.isTransposed&&(e="wave-in")),{animation:e}},schema:function(t){return{animation:t.isRect?t.isTransposed?"grow-in-x":"grow-in-y":"grow-in-xy"}},polygon:function(){return{animation:"fade-in",duration:500}},edge:function(){return{animation:"fade-in"}}};function NZt(t,e,n){var r=RZt[t];return r&&((0,tOt.mf)(r)&&(r=r(e)),r=(0,tOt.b$)({},IZt,r),n)?r[n]:r}function BZt(t,e,n){var r=(0,tOt.U2)(t.get("origin"),"data",dOt),i=e.animation,o=function(t,e){return{delay:(0,tOt.mf)(t.delay)?t.delay(e):t.delay,easing:(0,tOt.mf)(t.easing)?t.easing(e):t.easing,duration:(0,tOt.mf)(t.duration)?t.duration(e):t.duration,callback:t.callback,repeat:t.repeat}}(e,r);if(i){var a=FZt(i);a&&a(t,o,n)}else t.animate(n.toAttrs,o)}var zZt="element-background",UZt=function(t){function e(e){var n=t.call(this,e)||this;n.labelShape=[],n.states=[];var r=e.shapeFactory,i=e.container,o=e.offscreenGroup,a=e.elementIndex,c=e.visible,l=void 0===c||c;return n.shapeFactory=r,n.container=i,n.offscreenGroup=o,n.visible=l,n.elementIndex=a,n}return(0,QCt.ZT)(e,t),e.prototype.draw=function(t,e){void 0===e&&(e=!1),this.model=t,this.data=t.data,this.shapeType=this.getShapeType(t),this.drawShape(t,e),!1===this.visible&&this.changeVisible(!1)},e.prototype.update=function(t){var e=this.shapeFactory,n=this.shape;if(n){this.model=t,this.data=t.data,this.shapeType=this.getShapeType(t),this.setShapeInfo(n,t);var r=this.getOffscreenGroup(),i=e.drawShape(this.shapeType,t,r);i.cfg.data=this.data,i.cfg.origin=t,i.cfg.element=this,this.syncShapeStyle(n,i,this.getStates(),this.getAnimateCfg("update"))}},e.prototype.destroy=function(){var e=this.shapeFactory,n=this.shape;if(n){var r=this.getAnimateCfg("leave");r?BZt(n,r,{coordinate:e.coordinate,toAttrs:(0,QCt.pi)({},n.attr())}):n.remove(!0)}this.states=[],this.shapeFactory=void 0,this.container=void 0,this.shape=void 0,this.animate=void 0,this.geometry=void 0,this.labelShape=[],this.model=void 0,this.data=void 0,this.offscreenGroup=void 0,this.statesStyle=void 0,t.prototype.destroy.call(this)},e.prototype.changeVisible=function(e){t.prototype.changeVisible.call(this,e),e?(this.shape&&this.shape.show(),this.labelShape&&this.labelShape.forEach((function(t){t.show()}))):(this.shape&&this.shape.hide(),this.labelShape&&this.labelShape.forEach((function(t){t.hide()})))},e.prototype.setState=function(t,e){var n=this,r=n.states,i=n.shapeFactory,o=n.model,a=n.shape,c=n.shapeType,l=r.indexOf(t);if(e){if(l>-1)return;r.push(t),"active"!==t&&"selected"!==t||null==a||a.toFront()}else{if(-1===l)return;if(r.splice(l,1),"active"===t||"selected"===t){var u=this.geometry,s=u.sortZIndex,f=u.zIndexReversed?this.geometry.elements.length-this.elementIndex:this.elementIndex;s?a.setZIndex(f):a.set("zIndex",f)}}var h=i.drawShape(c,o,this.getOffscreenGroup());r.length?this.syncShapeStyle(a,h,r,null):this.syncShapeStyle(a,h,["reset"],null),h.remove(!0);var d={state:t,stateStatus:e,element:this,target:this.container};this.container.emit("statechange",d),vAt(this.shape,"statechange",d)},e.prototype.clearStates=function(){var t=this,e=this.states;(0,tOt.S6)(e,(function(e){t.setState(e,!1)})),this.states=[]},e.prototype.hasState=function(t){return this.states.includes(t)},e.prototype.getStates=function(){return this.states},e.prototype.getData=function(){return this.data},e.prototype.getModel=function(){return this.model},e.prototype.getBBox=function(){var t=this.shape,e=this.labelShape,n={x:0,y:0,minX:0,minY:0,maxX:0,maxY:0,width:0,height:0};return t&&(n=t.getCanvasBBox()),e&&e.forEach((function(t){var e=t.getCanvasBBox();n.x=Math.min(e.x,n.x),n.y=Math.min(e.y,n.y),n.minX=Math.min(e.minX,n.minX),n.minY=Math.min(e.minY,n.minY),n.maxX=Math.max(e.maxX,n.maxX),n.maxY=Math.max(e.maxY,n.maxY)})),n.width=n.maxX-n.minX,n.height=n.maxY-n.minY,n},e.prototype.getStatesStyle=function(){if(!this.statesStyle){var t=this,e=t.shapeType,n=t.geometry,r=t.shapeFactory,i=n.stateOption,o=r.defaultShapeType,a=r.theme[e]||r.theme[o];this.statesStyle=(0,tOt.b$)({},a,i)}return this.statesStyle},e.prototype.getStateStyle=function(t,e){var n=this.getStatesStyle(),r=(0,tOt.U2)(n,[t,"style"],{}),i=r[e]||r;return(0,tOt.mf)(i)?i(this):i},e.prototype.getAnimateCfg=function(t){var e=this,n=this.animate;if(n){var r=n[t];return r?(0,QCt.pi)((0,QCt.pi)({},r),{callback:function(){var t;(0,tOt.mf)(r.callback)&&r.callback(),null===(t=e.geometry)||void 0===t||t.emit(nOt.AFTER_DRAW_ANIMATE)}}):r}return null},e.prototype.drawShape=function(t,e){var n;void 0===e&&(e=!1);var r=this,i=r.shapeFactory,o=r.container,a=r.shapeType;if(this.shape=i.drawShape(a,t,o),this.shape){this.setShapeInfo(this.shape,t);var c=this.shape.cfg.name;c?(0,tOt.HD)(c)&&(this.shape.cfg.name=["element",c]):this.shape.cfg.name=["element",this.shapeFactory.geometryType];var l=e?"enter":"appear",u=this.getAnimateCfg(l);u&&(null===(n=this.geometry)||void 0===n||n.emit(nOt.BEFORE_DRAW_ANIMATE),BZt(this.shape,u,{coordinate:i.coordinate,toAttrs:(0,QCt.pi)({},this.shape.attr())}))}},e.prototype.getOffscreenGroup=function(){if(!this.offscreenGroup){var t=this.container.getGroupBase();this.offscreenGroup=new t({})}return this.offscreenGroup},e.prototype.setShapeInfo=function(t,e){var n=this;(t.cfg.origin=e,t.cfg.element=this,t.isGroup())&&t.get("children").forEach((function(t){n.setShapeInfo(t,e)}))},e.prototype.syncShapeStyle=function(t,e,n,r,i){var o,a=this;if(void 0===n&&(n=[]),void 0===i&&(i=0),t&&e){var c=t.get("clipShape"),l=e.get("clipShape");if(this.syncShapeStyle(c,l,n,r),t.isGroup())for(var u=t.get("children"),s=e.get("children"),f=0;f=0?e:n<=0?n:0},e.prototype.createAttrOption=function(t,e,n){if((0,tOt.UM)(e)||(0,tOt.Kn)(e))(0,tOt.Kn)(e)&&(0,tOt.Xy)(Object.keys(e),["values"])?(0,tOt.t8)(this.attributeOption,t,{fields:e.values}):(0,tOt.t8)(this.attributeOption,t,e);else{var r={};(0,tOt.hj)(e)?r.values=[e]:r.fields=eFt(e),n&&((0,tOt.mf)(n)?r.callback=n:r.values=n),(0,tOt.t8)(this.attributeOption,t,r)}},e.prototype.initAttributes=function(){var t=this,e=this,n=e.attributes,r=e.attributeOption,i=e.theme,o=e.shapeType;this.groupScales=[];var a={},c=function(e){if(r.hasOwnProperty(e)){var c=r[e];if(!c)return{value:void 0};var l=(0,QCt.pi)({},c),u=l.callback,s=l.values,f=l.fields,h=(void 0===f?[]:f).map((function(n){var r=t.scales[n];!a[n]&&hOt.includes(e)&&("cat"===SDt(r,(0,tOt.U2)(t.scaleDefs,n),e,t.type)&&(t.groupScales.push(r),a[n]=!0));return r}));l.scales=h,"position"!==e&&1===h.length&&"identity"===h[0].type?l.values=h[0].values:u||s||("size"===e?l.values=i.sizes:"shape"===e?l.values=i.shapes[o]||[]:"color"===e&&(h.length?l.values=h[0].values.length<=10?i.colors10:i.colors20:l.values=i.colors10));var d=JMt(e);n[e]=new d(l)}};for(var l in r){var u=c(l);if("object"==typeof u)return u.value}},e.prototype.processData=function(t){var e,n;this.hasSorted=!1;for(var r=this.getAttribute("position").scales.filter((function(t){return t.isCategory})),i=this.groupData(t),o=[],a=0,c=i.length;ao&&(o=u)}var s=this.scaleDefs,f={};it.max&&!(0,tOt.U2)(s,[r,"max"])&&(f.max=o),t.change(f)},e.prototype.beforeMapping=function(t){var e=t;if(this.sortable&&this.sort(e),this.generatePoints)for(var n=0,r=e.length;n1)for(var s=0;s0}))}function fFt(t,e,n){var r=n.data,i=n.origin,o=n.animateCfg,a=n.coordinate,c=(0,tOt.U2)(o,"update");t.set("data",r),t.set("origin",i),t.set("animateCfg",o),t.set("coordinate",a),t.set("visible",e.get("visible")),(t.getChildren()||[]).forEach((function(l,u){var s=e.getChildByIndex(u);if(s){l.set("data",r),l.set("origin",i),l.set("animateCfg",o),l.set("coordinate",a);var f=hDt(l,s);c?BZt(l,c,{toAttrs:f,coordinate:a}):l.attr(f),s.isGroup()&&fFt(l,s,n)}else t.removeChild(l),l.remove(!0)})),(0,tOt.S6)(e.getChildren(),(function(e,n){n>=t.getCount()&&(e.destroyed||t.add(e))}))}var hFt=function(){function t(t){this.shapesMap={};var e=t.layout,n=t.container;this.layout=e,this.container=n}return t.prototype.render=function(t,e,n){return void 0===n&&(n=!1),(0,QCt.mG)(this,void 0,void 0,(function(){var r,i,o,a,c,l,u,s,f=this;return(0,QCt.Jh)(this,(function(h){switch(h.label){case 0:if(r={},i=this.createOffscreenGroup(),!t.length)return[3,2];try{for(o=(0,QCt.XA)(t),a=o.next();!a.done;a=o.next())(c=a.value)&&(r[c.id]=this.renderLabel(c,i))}catch(d){u={error:d}}finally{try{a&&!a.done&&(s=o.return)&&s.call(o)}finally{if(u)throw u.error}}return[4,this.doLayout(t,e,r)];case 1:h.sent(),this.renderLabelLine(t,r),this.renderLabelBackground(t,r),this.adjustLabel(t,r),h.label=2;case 2:return l=this.shapesMap,(0,tOt.S6)(r,(function(t,e){if(t.destroyed)delete r[e];else{if(l[e]){var i=t.get("data"),o=t.get("origin"),a=t.get("coordinate"),c=t.get("animateCfg"),u=l[e];fFt(u,r[e],{data:i,origin:o,animateCfg:c,coordinate:a}),r[e]=u}else{if(f.container.destroyed)return;f.container.add(t);var s=(0,tOt.U2)(t.get("animateCfg"),n?"enter":"appear");s&&BZt(t,s,{toAttrs:(0,QCt.pi)({},t.attr()),coordinate:t.get("coordinate")})}delete l[e]}})),(0,tOt.S6)(l,(function(t){var e=(0,tOt.U2)(t.get("animateCfg"),"leave");e?BZt(t,e,{toAttrs:null,coordinate:t.get("coordinate")}):t.remove(!0)})),this.shapesMap=r,i.destroy(),[2]}}))}))},t.prototype.clear=function(){this.container.clear(),this.shapesMap={}},t.prototype.destroy=function(){this.container.destroy(),this.shapesMap=null},t.prototype.renderLabel=function(t,e){var n,r=t.id,i=t.elementId,o=t.data,a=t.mappingData,c=t.coordinate,l=t.animate,u=t.content,s={id:r,elementId:i,capture:t.capture,data:o,origin:(0,QCt.pi)((0,QCt.pi)({},a),{data:a[dOt]}),coordinate:c},f=e.addGroup((0,QCt.pi)({name:"label",animateCfg:!1!==this.animate&&null!==l&&!1!==l&&(0,tOt.b$)({},this.animate,l)},s));if(u.isGroup&&u.isGroup()||u.isShape&&u.isShape()){var h=u.getCanvasBBox(),d=h.width,p=h.height,v=(0,tOt.U2)(t,"textAlign","left"),g=t.x;"center"===v?g-=d/2:"right"!==v&&"end"!==v||(g-=d),aFt(u,g,t.y-p/2),n=u,f.add(u)}else{var m=(0,tOt.U2)(t,["style","fill"]);n=f.addShape("text",(0,QCt.pi)({attrs:(0,QCt.pi)((0,QCt.pi)({x:t.x,y:t.y,textAlign:t.textAlign,textBaseline:(0,tOt.U2)(t,"textBaseline","middle"),text:t.content},t.style),{fill:(0,tOt.Ft)(m)?t.color:m})},s))}return t.rotate&&cFt(n,t.rotate),f},t.prototype.doLayout=function(t,e,n){return(0,QCt.mG)(this,void 0,void 0,(function(){var r,i=this;return(0,QCt.Jh)(this,(function(o){switch(o.label){case 0:return this.layout?(r=(0,tOt.kJ)(this.layout)?this.layout:[this.layout],[4,Promise.all(r.map((function(r){var o=function(t){return VZt[t.toLowerCase()]}((0,tOt.U2)(r,"type",""));if(o){var a=[],c=[];return(0,tOt.S6)(n,(function(t,n){a.push(t),c.push(e[t.get("elementId")])})),o(t,a,c,i.region,r.cfg)}})))]):[3,2];case 1:o.sent(),o.label=2;case 2:return[2]}}))}))},t.prototype.renderLabelLine=function(t,e){(0,tOt.S6)(t,(function(t){var n=(0,tOt.U2)(t,"coordinate");if(t&&n){var r=n.getCenter(),i=n.getRadius();if(t.labelLine){var o=(0,tOt.U2)(t,"labelLine",{}),a=t.id,c=o.path;if(!c){var l=lDt(r.x,r.y,i,t.angle);c=[["M",l.x,l.y],["L",t.x,t.y]]}var u=e[a];u.destroyed||u.addShape("path",{capture:!1,attrs:(0,QCt.pi)({path:c,stroke:t.color?t.color:(0,tOt.U2)(t,["style","fill"],"#000"),fill:null},o.style),id:a,origin:t.mappingData,data:t.data,coordinate:t.coordinate})}}}))},t.prototype.renderLabelBackground=function(t,e){(0,tOt.S6)(t,(function(t){var n=(0,tOt.U2)(t,"coordinate"),r=(0,tOt.U2)(t,"background");if(r&&n){var i=t.id,o=e[i];if(!o.destroyed){var a=o.getChildren()[0];if(a){var c=uFt(o,t,r.padding),l=c.rotation,u=(0,QCt._T)(c,["rotation"]),s=o.addShape("rect",{attrs:(0,QCt.pi)((0,QCt.pi)({},u),r.style||{}),id:i,origin:t.mappingData,data:t.data,coordinate:t.coordinate});if(s.setZIndex(-1),l){var f=a.getMatrix();s.setMatrix(f)}}}}}))},t.prototype.createOffscreenGroup=function(){return new(this.container.getGroupBase())({})},t.prototype.adjustLabel=function(t,e){(0,tOt.S6)(t,(function(t){if(t){var n=t.id,r=e[n];if(!r.destroyed){var i=r.findAll((function(t){return"path"!==t.get("type")}));(0,tOt.S6)(i,(function(e){e&&(t.offsetX&&e.attr("x",e.attr("x")+t.offsetX),t.offsetY&&e.attr("y",e.attr("y")+t.offsetY))}))}}}))},t}(),dFt=hFt;function pFt(t){var e=0;return(0,tOt.S6)(t,(function(t){e+=t})),e/t.length}var vFt=function(){function t(t){this.geometry=t}return t.prototype.getLabelItems=function(t){var e=this,n=[],r=this.getLabelCfgs(t);return(0,tOt.S6)(t,(function(t,i){var o=r[i];if(!o||(0,tOt.UM)(t.x)||(0,tOt.UM)(t.y))n.push(null);else{var a=(0,tOt.kJ)(o.content)?o.content:[o.content];o.content=a;var c=a.length;(0,tOt.S6)(a,(function(r,i){if((0,tOt.UM)(r)||""===r)n.push(null);else{var a=(0,QCt.pi)((0,QCt.pi)({},o),e.getLabelPoint(o,t,i));a.textAlign||(a.textAlign=e.getLabelAlign(a,i,c)),a.offset<=0&&(a.labelLine=null),n.push(a)}}))}})),n},t.prototype.render=function(t,e){return void 0===e&&(e=!1),(0,QCt.mG)(this,void 0,void 0,(function(){var n,r,i;return(0,QCt.Jh)(this,(function(o){switch(o.label){case 0:return n=this.getLabelItems(t),r=this.getLabelsRenderer(),i=this.getGeometryShapes(),[4,r.render(n,i,e)];case 1:return o.sent(),[2]}}))}))},t.prototype.clear=function(){var t=this.labelsRenderer;t&&t.clear()},t.prototype.destroy=function(){var t=this.labelsRenderer;t&&t.destroy(),this.labelsRenderer=null},t.prototype.getCoordinate=function(){return this.geometry.coordinate},t.prototype.getDefaultLabelCfg=function(t,e){var n=this.geometry,r=n.type,i=n.theme;return"polygon"===r||"interval"===r&&"middle"===e||t<0&&!["line","point","path"].includes(r)?(0,tOt.U2)(i,"innerLabels",{}):(0,tOt.U2)(i,"labels",{})},t.prototype.getThemedLabelCfg=function(t){var e=this.geometry,n=this.getDefaultLabelCfg(),r=e.type,i=e.theme;return"polygon"===r||t.offset<0&&!["line","point","path"].includes(r)?(0,tOt.b$)({},n,i.innerLabels,t):(0,tOt.b$)({},n,i.labels,t)},t.prototype.setLabelPosition=function(t,e,n,r){},t.prototype.getLabelOffset=function(t){var e=this.getCoordinate(),n=this.getOffsetVector(t);return e.isTransposed?n[0]:n[1]},t.prototype.getLabelOffsetPoint=function(t,e,n){var r=t.offset,i=this.getCoordinate().isTransposed,o=i?"x":"y",a=i?1:-1,c={x:0,y:0};return c[o]=e>0||1===n?r*a:r*a*-1,c},t.prototype.getLabelPoint=function(t,e,n){var r=this.getCoordinate(),i=t.content.length;function o(e,n,r){void 0===r&&(r=!1);var i=e;return(0,tOt.kJ)(i)&&(i=1===t.content.length?r?pFt(i):i.length<=2?i[e.length-1]:pFt(i):i[n]),i}var a={content:t.content[n],x:0,y:0,start:{x:0,y:0},color:"#fff"},c=(0,tOt.kJ)(e.shape)?e.shape[0]:e.shape,l="funnel"===c||"pyramid"===c;if("polygon"===this.geometry.type){var u=function(t,e){if((0,tOt.hj)(t)&&(0,tOt.hj)(e))return[t,e];if(aDt(t)||aDt(e))return[cDt(t),cDt(e)];for(var n,r,i=-1,o=0,a=0,c=t.length-1,l=0;++i1&&0===e&&("right"===r?r="left":"left"===r&&(r="right"))}return r},t.prototype.getLabelId=function(t){var e=this.geometry,n=e.type,r=e.getXScale(),i=e.getYScale(),o=t[dOt],a=e.getElementId(t);return"line"===n||"area"===n?a+=" ".concat(o[r.field]):"path"===n&&(a+=" ".concat(o[r.field],"-").concat(o[i.field])),a},t.prototype.getLabelsRenderer=function(){var t=this.geometry,e=t.labelsContainer,n=t.labelOption,r=t.canvasRegion,i=t.animateOption,o=this.geometry.coordinate,a=this.labelsRenderer;return a||(a=new dFt({container:e,layout:(0,tOt.U2)(n,["cfg","layout"],{type:this.defaultLayout})}),this.labelsRenderer=a),a.region=r,a.animate=!!i&&NZt("label",o),a},t.prototype.getLabelCfgs=function(t){var e=this,n=this.geometry,r=n.labelOption,i=n.scales,o=n.coordinate,a=r,c=a.fields,l=a.callback,u=a.cfg,s=c.map((function(t){return i[t]})),f=[];return(0,tOt.S6)(t,(function(t,n){var r,i=t[dOt],a=e.getLabelText(i,s);if(l){var h=c.map((function(t){return i[t]}));if(r=l.apply(void 0,(0,QCt.ev)([],(0,QCt.CR)(h),!1)),(0,tOt.UM)(r))return void f.push(null)}var d=(0,QCt.pi)((0,QCt.pi)({id:e.getLabelId(t),elementId:e.geometry.getElementId(t),data:i,mappingData:t,coordinate:o},u),r);(0,tOt.mf)(d.position)&&(d.position=d.position(i,t,n));var p=e.getLabelOffset(d.offset||0),v=e.getDefaultLabelCfg(p,d.position);(d=(0,tOt.b$)({},v,d)).offset=e.getLabelOffset(d.offset||0);var g=d.content;(0,tOt.mf)(g)?d.content=g(i,t,n):(0,tOt.o8)(g)&&(d.content=a[0]),f.push(d)})),f},t.prototype.getLabelText=function(t,e){var n=[];return(0,tOt.S6)(e,(function(e){var r=t[e.field];r=(0,tOt.kJ)(r)?r.map((function(t){return e.getText(t)})):e.getText(r),(0,tOt.UM)(r)||""===r?n.push(null):n.push(r)})),n},t.prototype.getOffsetVector=function(t){void 0===t&&(t=0);var e=this.getCoordinate(),n=0;return(0,tOt.hj)(t)&&(n=t),e.isTransposed?e.applyMatrix(n,0):e.applyMatrix(0,n)},t.prototype.getGeometryShapes=function(){var t=this.geometry,e={};return(0,tOt.S6)(t.elementsMap,(function(t,n){e[n]=t.shape})),(0,tOt.S6)(t.getOffscreenGroup().getChildren(),(function(n){var r=t.getElementId(n.get("origin").mappingData);e[r]=n})),e},t}(),gFt=vFt;function mFt(t,e,n){if(!t)return n;var r;if(t.callback&&t.callback.length>1){var i=Array(t.callback.length-1).fill("");r=t.mapping.apply(t,(0,QCt.ev)([e],(0,QCt.CR)(i),!1)).join("")}else r=t.mapping(e).join("");return r||n}var yFt={hexagon:function(t,e,n){var r=n/2*Math.sqrt(3);return[["M",t,e-n],["L",t+r,e-n/2],["L",t+r,e+n/2],["L",t,e+n],["L",t-r,e+n/2],["L",t-r,e-n/2],["Z"]]},bowtie:function(t,e,n){var r=n-1.5;return[["M",t-n,e-r],["L",t+n,e+r],["L",t+n,e-r],["L",t-n,e+r],["Z"]]},cross:function(t,e,n){return[["M",t-n,e-n],["L",t+n,e+n],["M",t+n,e-n],["L",t-n,e+n]]},tick:function(t,e,n){return[["M",t-n/2,e-n],["L",t+n/2,e-n],["M",t,e-n],["L",t,e+n],["M",t-n/2,e+n],["L",t+n/2,e+n]]},plus:function(t,e,n){return[["M",t-n,e],["L",t+n,e],["M",t,e-n],["L",t,e+n]]},hyphen:function(t,e,n){return[["M",t-n,e],["L",t+n,e]]},line:function(t,e,n){return[["M",t,e-n],["L",t,e+n]]}},bFt=["line","cross","tick","plus","hyphen"];function xFt(t){var e=t.symbol;(0,tOt.HD)(e)&&yFt[e]&&(t.symbol=yFt[e])}function wFt(t){return t.startsWith($Ct.LEFT)||t.startsWith($Ct.RIGHT)?"vertical":"horizontal"}function SFt(t,e,n,r,i){var o=n.getScale(n.type);if(o.isCategory){var a=o.field,c=e.getAttribute("color"),l=e.getAttribute("shape"),u=t.getTheme().defaultColor,s=e.coordinate.isPolar;return o.getTicks().map((function(n,f){var h,d=n.text,p=n.value,v=d,g=o.invert(p),m=0===t.filterFieldData(a,[(h={},h[a]=g,h)]).length;(0,tOt.S6)(t.views,(function(t){var e;t.filterFieldData(a,[(e={},e[a]=g,e)]).length||(m=!0)}));var y=mFt(c,g,u),b=mFt(l,g,"point"),x=e.getShapeMarker(b,{color:y,isInPolar:s}),w=i;return(0,tOt.mf)(w)&&(w=w(v,f,(0,QCt.pi)({name:v,value:g},(0,tOt.b$)({},r,x)))),function(t,e){var n=t.symbol;if((0,tOt.HD)(n)&&-1!==bFt.indexOf(n)){var r=(0,tOt.U2)(t,"style",{}),i=(0,tOt.U2)(r,"lineWidth",1),o=r.stroke||r.fill||e;t.style=(0,tOt.b$)({},t.style,{lineWidth:i,stroke:o,fill:null})}}(x=(0,tOt.b$)({},r,x,pDt((0,QCt.pi)({},w),["style"])),y),w&&w.style&&(x.style=function(t,e){return(0,tOt.mf)(e)?e(t):(0,tOt.b$)({},t,e)}(x.style,w.style)),xFt(x),{id:g,name:v,value:g,marker:x,unchecked:m}}))}return[]}function kFt(t,e){var n=(0,tOt.U2)(t,["components","legend"],{});return(0,tOt.b$)({},(0,tOt.U2)(n,["common"],{}),(0,tOt.b$)({},(0,tOt.U2)(n,[e],{})))}function CFt(t){return!t&&(null==t||isNaN(t))}function OFt(t){if((0,tOt.kJ)(t))return CFt(t[1].y);var e=t.y;return(0,tOt.kJ)(e)?CFt(e[0]):CFt(e)}function EFt(t,e,n){if(void 0===e&&(e=!1),void 0===n&&(n=!0),!t.length||1===t.length&&!n)return[];if(e){for(var r=[],i=0,o=t.length;i=t&&i<=t+n&&o>=e&&o<=e+r}function JFt(t,e){return!(e.minX>t.maxX||e.maxXt.maxY||e.maxY=0&&a<.5*Math.PI?(r={x:l.minX,y:l.minY},i={x:l.maxX,y:l.maxY}):.5*Math.PI<=a&&a1&&(n*=Math.sqrt(d),r*=Math.sqrt(d));var p=n*n*(h*h)+r*r*(f*f),v=p?Math.sqrt((n*n*(r*r)-p)/p):1;o===a&&(v*=-1),isNaN(v)&&(v=0);var g=r?v*n*h/r:0,m=n?v*-r*f/n:0,y=(c+u)/2+Math.cos(i)*g-Math.sin(i)*m,b=(l+s)/2+Math.sin(i)*g+Math.cos(i)*m,x=[(f-g)/n,(h-m)/r],w=[(-1*f-g)/n,(-1*h-m)/r],S=ljt([1,0],x),k=ljt(x,w);return cjt(x,w)<=-1&&(k=Math.PI),cjt(x,w)>=1&&(k=0),0===a&&k>0&&(k-=2*Math.PI),1===a&&k<0&&(k+=2*Math.PI),{cx:y,cy:b,rx:QFt(t,[u,s])?0:n,ry:QFt(t,[u,s])?0:r,startAngle:S,endAngle:S+k,xRotation:i,arcFlag:o,sweepFlag:a}}var sjt=Math.sin,fjt=Math.cos,hjt=Math.atan2,djt=Math.PI;function pjt(t,e,n,r,i,o,a){var c=e.stroke,l=e.lineWidth,u=hjt(r-o,n-i),s=new oIt({type:"path",canvas:t.get("canvas"),isArrowShape:!0,attrs:{path:"M"+10*fjt(djt/6)+","+10*sjt(djt/6)+" L0,0 L"+10*fjt(djt/6)+",-"+10*sjt(djt/6),stroke:c,lineWidth:l}});s.translate(i,o),s.rotateAtPoint(i,o,u),t.set(a?"startArrowShape":"endArrowShape",s)}function vjt(t,e,n,r,i,o,a){var c=e.startArrow,l=e.endArrow,u=e.stroke,s=e.lineWidth,f=a?c:l,h=f.d,d=f.fill,p=f.stroke,v=f.lineWidth,g=(0,QCt._T)(f,["d","fill","stroke","lineWidth"]),m=hjt(r-o,n-i);h&&(i-=fjt(m)*h,o-=sjt(m)*h);var y=new oIt({type:"path",canvas:t.get("canvas"),isArrowShape:!0,attrs:(0,QCt.pi)((0,QCt.pi)({},g),{stroke:p||u,lineWidth:v||s,fill:d})});y.translate(i,o),y.rotateAtPoint(i,o,m),t.set(a?"startArrowShape":"endArrowShape",y)}function gjt(t,e,n,r,i){var o=hjt(r-e,n-t);return{dx:fjt(o)*i,dy:sjt(o)*i}}function mjt(t,e,n,r,i,o){"object"==typeof e.startArrow?vjt(t,e,n,r,i,o,!0):e.startArrow?pjt(t,e,n,r,i,o,!0):t.set("startArrowShape",null)}function yjt(t,e,n,r,i,o){"object"==typeof e.endArrow?vjt(t,e,n,r,i,o,!1):e.endArrow?pjt(t,e,n,r,i,o,!1):t.set("startArrowShape",null)}var bjt={fill:"fillStyle",stroke:"strokeStyle",opacity:"globalAlpha"};function xjt(t,e){var n=e.attr();for(var r in n){var i=n[r],o=bjt[r]?bjt[r]:r;"matrix"===o&&i?t.transform(i[0],i[1],i[3],i[4],i[6],i[7]):"lineDash"===o&&t.setLineDash?(0,tOt.kJ)(i)&&t.setLineDash(i):("strokeStyle"===o||"fillStyle"===o?i=ojt(t,e,i):"globalAlpha"===o&&(i*=t.globalAlpha),t[o]=i)}}function wjt(t,e,n){for(var r=0;rx?b:x,E=b>x?1:b/x,M=b>x?x/b:1;e.translate(m,y),e.rotate(k),e.scale(E,M),e.arc(0,0,O,w,S,1-C),e.scale(1/E,1/M),e.rotate(-k),e.translate(-m,-y)}break;case"Z":e.closePath()}if("Z"===h)c=l;else{var A=f.length;c=[f[A-2],f[A-1]]}}}}function Ajt(t,e){var n=t.get("canvas");n&&("remove"===e&&(t._cacheCanvasBBox=t.get("cacheCanvasBBox")),t.get("hasChanged")||(t.set("hasChanged",!0),t.cfg.parent&&t.cfg.parent.get("hasChanged")||(n.refreshElement(t,e,n),n.get("autoDraw")&&n.draw())))}function Pjt(t){var e,n,r;if(t.destroyed)e=t._cacheCanvasBBox;else{var i=t.get("cacheCanvasBBox"),o=i&&!(!i.width||!i.height),a=t.getCanvasBBox(),c=a&&!(!a.width||!a.height);o&&c?(r=a,e=(n=i)&&r?{minX:Math.min(n.minX,r.minX),minY:Math.min(n.minY,r.minY),maxX:Math.max(n.maxX,r.maxX),maxY:Math.max(n.maxY,r.maxY)}:n||r):o?e=i:c&&(e=a)}return e}var _jt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.onCanvasChange=function(t){Ajt(this,t)},e.prototype.getShapeBase=function(){return A},e.prototype.getGroupBase=function(){return e},e.prototype._applyClip=function(t,e){e&&(t.save(),xjt(t,e),e.createPath(t),t.restore(),t.clip(),e._afterDraw())},e.prototype.cacheCanvasBBox=function(){var t=this.cfg.children,e=[],n=[];(0,tOt.S6)(t,(function(t){var r=t.cfg.cacheCanvasBBox;r&&t.cfg.isInView&&(e.push(r.minX,r.maxX),n.push(r.minY,r.maxY))}));var r=null;if(e.length){var i=(0,tOt.VV)(e),o=(0,tOt.Fp)(e),a=(0,tOt.VV)(n),c=(0,tOt.Fp)(n);r={minX:i,minY:a,x:i,y:a,maxX:o,maxY:c,width:o-i,height:c-a};var l=this.cfg.canvas;if(l){var u=l.getViewRange();this.set("isInView",JFt(r,u))}}else this.set("isInView",!1);this.set("cacheCanvasBBox",r)},e.prototype.draw=function(t,e){var n=this.cfg.children,r=!e||this.cfg.refresh;n.length&&r&&(t.save(),xjt(t,this),this._applyClip(t,this.getClip()),wjt(t,n,e),t.restore(),this.cacheCanvasBBox()),this.cfg.refresh=null,this.set("hasChanged",!1)},e.prototype.skipDraw=function(){this.set("cacheCanvasBBox",null),this.set("hasChanged",!1)},e}(kOt.AbstractGroup),Djt=_jt,Tjt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultAttrs=function(){var e=t.prototype.getDefaultAttrs.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{lineWidth:1,lineAppendWidth:0,strokeOpacity:1,fillOpacity:1})},e.prototype.getShapeBase=function(){return A},e.prototype.getGroupBase=function(){return Djt},e.prototype.onCanvasChange=function(t){Ajt(this,t)},e.prototype.calculateBBox=function(){var t=this.get("type"),e=this.getHitLineWidth(),n=(0,kOt.getBBoxMethod)(t)(this),r=e/2,i=n.x-r,o=n.y-r,a=n.x+n.width+r,c=n.y+n.height+r;return{x:i,minX:i,y:o,minY:o,width:n.width+e,height:n.height+e,maxX:a,maxY:c}},e.prototype.isFill=function(){return!!this.attrs.fill||this.isClipShape()},e.prototype.isStroke=function(){return!!this.attrs.stroke},e.prototype._applyClip=function(t,e){e&&(t.save(),xjt(t,e),e.createPath(t),t.restore(),t.clip(),e._afterDraw())},e.prototype.draw=function(t,e){var n=this.cfg.clipShape;if(e){if(!1===this.cfg.refresh)return void this.set("hasChanged",!1);if(!JFt(e,this.getCanvasBBox()))return this.set("hasChanged",!1),void(this.cfg.isInView&&this._afterDraw())}t.save(),xjt(t,this),this._applyClip(t,n),this.drawPath(t),t.restore(),this._afterDraw()},e.prototype.getCanvasViewBox=function(){var t=this.cfg.canvas;return t?t.getViewRange():null},e.prototype.cacheCanvasBBox=function(){var t=this.getCanvasViewBox();if(t){var e=this.getCanvasBBox(),n=JFt(e,t);this.set("isInView",n),n?this.set("cacheCanvasBBox",e):this.set("cacheCanvasBBox",null)}},e.prototype._afterDraw=function(){this.cacheCanvasBBox(),this.set("hasChanged",!1),this.set("refresh",null)},e.prototype.skipDraw=function(){this.set("cacheCanvasBBox",null),this.set("isInView",null),this.set("hasChanged",!1)},e.prototype.drawPath=function(t){this.createPath(t),this.strokeAndFill(t),this.afterDrawPath(t)},e.prototype.fill=function(t){t.fill()},e.prototype.stroke=function(t){t.stroke()},e.prototype.strokeAndFill=function(t){var e=this.attrs,n=e.lineWidth,r=e.opacity,i=e.strokeOpacity,o=e.fillOpacity;this.isFill()&&((0,tOt.UM)(o)||1===o?this.fill(t):(t.globalAlpha=o,this.fill(t),t.globalAlpha=r)),this.isStroke()&&n>0&&((0,tOt.UM)(i)||1===i||(t.globalAlpha=i),this.stroke(t)),this.afterDrawPath(t)},e.prototype.createPath=function(t){},e.prototype.afterDrawPath=function(t){},e.prototype.isInShape=function(t,e){var n=this.isStroke(),r=this.isFill(),i=this.getHitLineWidth();return this.isInStrokeOrPath(t,e,n,r,i)},e.prototype.isInStrokeOrPath=function(t,e,n,r,i){return!1},e.prototype.getHitLineWidth=function(){if(!this.isStroke())return 0;var t=this.attrs;return t.lineWidth+t.lineAppendWidth},e}(kOt.AbstractShape),Zjt=Tjt,Fjt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultAttrs=function(){var e=t.prototype.getDefaultAttrs.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{x:0,y:0,r:0})},e.prototype.isInStrokeOrPath=function(t,e,n,r,i){var o=this.attr(),a=o.x,c=o.y,l=o.r,u=i/2,s=$Ft(a,c,t,e);return r&&n?s<=l+u:r?s<=l:!!n&&(s>=l-u&&s<=l+u)},e.prototype.createPath=function(t){var e=this.attr(),n=e.x,r=e.y,i=e.r;t.beginPath(),t.arc(n,r,i,0,2*Math.PI,!1),t.closePath()},e}(Zjt),jjt=Fjt;function Ijt(t,e,n,r){return t/(n*n)+e/(r*r)}var Rjt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultAttrs=function(){var e=t.prototype.getDefaultAttrs.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{x:0,y:0,rx:0,ry:0})},e.prototype.isInStrokeOrPath=function(t,e,n,r,i){var o=this.attr(),a=i/2,c=o.x,l=o.y,u=o.rx,s=o.ry,f=(t-c)*(t-c),h=(e-l)*(e-l);return r&&n?Ijt(f,h,u+a,s+a)<=1:r?Ijt(f,h,u,s)<=1:!!n&&(Ijt(f,h,u-a,s-a)>=1&&Ijt(f,h,u+a,s+a)<=1)},e.prototype.createPath=function(t){var e=this.attr(),n=e.x,r=e.y,i=e.rx,o=e.ry;if(t.beginPath(),t.ellipse)t.ellipse(n,r,i,o,0,0,2*Math.PI,!1);else{var a=i>o?i:o,c=i>o?1:i/o,l=i>o?o/i:1;t.save(),t.translate(n,r),t.scale(c,l),t.arc(0,0,a,0,2*Math.PI),t.restore(),t.closePath()}},e}(Zjt),Ljt=Rjt;function Njt(t){return t instanceof HTMLElement&&(0,tOt.HD)(t.nodeName)&&"CANVAS"===t.nodeName.toUpperCase()}var Bjt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultAttrs=function(){var e=t.prototype.getDefaultAttrs.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{x:0,y:0,width:0,height:0})},e.prototype.initAttrs=function(t){this._setImage(t.img)},e.prototype.isStroke=function(){return!1},e.prototype.isOnlyHitBox=function(){return!0},e.prototype._afterLoading=function(){if(!0===this.get("toDraw")){var t=this.get("canvas");t?t.draw():this.createPath(this.get("context"))}},e.prototype._setImage=function(t){var e=this,n=this.attrs;if((0,tOt.HD)(t)){var r=new Image;r.onload=function(){if(e.destroyed)return!1;e.attr("img",r),e.set("loading",!1),e._afterLoading();var t=e.get("callback");t&&t.call(e)},r.crossOrigin="Anonymous",r.src=t,this.set("loading",!0)}else t instanceof Image?(n.width||(n.width=t.width),n.height||(n.height=t.height)):Njt(t)&&(n.width||(n.width=Number(t.getAttribute("width"))),n.height||(n.height,Number(t.getAttribute("height"))))},e.prototype.onAttrChange=function(e,n,r){t.prototype.onAttrChange.call(this,e,n,r),"img"===e&&this._setImage(n)},e.prototype.createPath=function(t){if(this.get("loading"))return this.set("toDraw",!0),void this.set("context",t);var e=this.attr(),n=e.x,r=e.y,i=e.width,o=e.height,a=e.sx,c=e.sy,l=e.swidth,u=e.sheight,s=e.img;(s instanceof Image||Njt(s))&&((0,tOt.UM)(a)||(0,tOt.UM)(c)||(0,tOt.UM)(l)||(0,tOt.UM)(u)?t.drawImage(s,n,r,i,o):t.drawImage(s,a,c,l,u,n,r,i,o))},e}(Zjt),zjt=Bjt,Ujt=n(58609);function Hjt(t,e,n,r,i,o,a){var c=Math.min(t,n),l=Math.max(t,n),u=Math.min(e,r),s=Math.max(e,r),f=i/2;return o>=c-f&&o<=l+f&&a>=u-f&&a<=s+f&&Ujt.x1.pointToLine(t,e,n,r,o,a)<=i/2}var Wjt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultAttrs=function(){var e=t.prototype.getDefaultAttrs.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{x1:0,y1:0,x2:0,y2:0,startArrow:!1,endArrow:!1})},e.prototype.initAttrs=function(t){this.setArrow()},e.prototype.onAttrChange=function(e,n,r){t.prototype.onAttrChange.call(this,e,n,r),this.setArrow()},e.prototype.setArrow=function(){var t=this.attr(),e=t.x1,n=t.y1,r=t.x2,i=t.y2,o=t.startArrow,a=t.endArrow;o&&mjt(this,t,r,i,e,n),a&&yjt(this,t,e,n,r,i)},e.prototype.isInStrokeOrPath=function(t,e,n,r,i){if(!n||!i)return!1;var o=this.attr();return Hjt(o.x1,o.y1,o.x2,o.y2,i,t,e)},e.prototype.createPath=function(t){var e=this.attr(),n=e.x1,r=e.y1,i=e.x2,o=e.y2,a=e.startArrow,c=e.endArrow,l={dx:0,dy:0},u={dx:0,dy:0};a&&a.d&&(l=gjt(n,r,i,o,e.startArrow.d)),c&&c.d&&(u=gjt(n,r,i,o,e.endArrow.d)),t.beginPath(),t.moveTo(n+l.dx,r+l.dy),t.lineTo(i-u.dx,o-u.dy)},e.prototype.afterDrawPath=function(t){var e=this.get("startArrowShape"),n=this.get("endArrowShape");e&&e.draw(t),n&&n.draw(t)},e.prototype.getTotalLength=function(){var t=this.attr(),e=t.x1,n=t.y1,r=t.x2,i=t.y2;return Ujt.x1.length(e,n,r,i)},e.prototype.getPoint=function(t){var e=this.attr(),n=e.x1,r=e.y1,i=e.x2,o=e.y2;return Ujt.x1.pointAt(n,r,i,o,t)},e}(Zjt),Vjt=Wjt,Gjt={circle:function(t,e,n){return[["M",t-n,e],["A",n,n,0,1,0,t+n,e],["A",n,n,0,1,0,t-n,e]]},square:function(t,e,n){return[["M",t-n,e-n],["L",t+n,e-n],["L",t+n,e+n],["L",t-n,e+n],["Z"]]},diamond:function(t,e,n){return[["M",t-n,e],["L",t,e-n],["L",t+n,e],["L",t,e+n],["Z"]]},triangle:function(t,e,n){var r=n*Math.sin(1/3*Math.PI);return[["M",t-n,e+r],["L",t,e-r],["L",t+n,e+r],["Z"]]},"triangle-down":function(t,e,n){var r=n*Math.sin(1/3*Math.PI);return[["M",t-n,e-r],["L",t+n,e-r],["L",t,e+r],["Z"]]}},Xjt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.initAttrs=function(t){this._resetParamsCache()},e.prototype._resetParamsCache=function(){this.set("paramsCache",{})},e.prototype.onAttrChange=function(e,n,r){t.prototype.onAttrChange.call(this,e,n,r),-1!==["symbol","x","y","r","radius"].indexOf(e)&&this._resetParamsCache()},e.prototype.isOnlyHitBox=function(){return!0},e.prototype._getR=function(t){return(0,tOt.UM)(t.r)?t.radius:t.r},e.prototype._getPath=function(){var t,n,r=this.attr(),i=r.x,o=r.y,a=r.symbol||"circle",c=this._getR(r);if((0,tOt.mf)(a))n=(t=a)(i,o,c),n=(0,L_t.wb)(n);else{if(!(t=e.Symbols[a]))return console.warn(a+" marker is not supported."),null;n=t(i,o,c)}return n},e.prototype.createPath=function(t){Mjt(this,t,{path:this._getPath()},this.get("paramsCache"))},e.Symbols=Gjt,e}(Zjt),qjt=Xjt;function Yjt(t,e,n){var r=(0,kOt.getOffScreenContext)();return t.createPath(r),r.isPointInPath(e,n)}var $jt=1e-6;function Kjt(t){return Math.abs(t)<$jt?0:t<0?-1:1}function Jjt(t,e,n){return(n[0]-t[0])*(e[1]-t[1])==(e[0]-t[0])*(n[1]-t[1])&&Math.min(t[0],e[0])<=n[0]&&n[0]<=Math.max(t[0],e[0])&&Math.min(t[1],e[1])<=n[1]&&n[1]<=Math.max(t[1],e[1])}function Qjt(t,e,n){var r=!1,i=t.length;if(i<=2)return!1;for(var o=0;o0!=Kjt(c[1]-n)>0&&Kjt(e-(n-a[1])*(a[0]-c[0])/(a[1]-c[1])-a[0])<0&&(r=!r)}return r}function tIt(t,e,n,r,i,o,a,c){var l=(Math.atan2(c-e,a-t)+2*Math.PI)%(2*Math.PI);if(li)return!1;var u={x:t+n*Math.cos(l),y:e+n*Math.sin(l)};return $Ft(u.x,u.y,a,c)<=o/2}var eIt=rAt.vs;var nIt=(0,QCt.pi)({hasArc:function(t){for(var e=!1,n=t.length,r=0;r0&&r.push(i),{polygons:n,polylines:r}},isPointInStroke:function(t,e,n,r,i){for(var o=!1,a=e/2,c=0;cm?g:m;eAt(w,w,eIt(null,[["t",-p,-v],["r",-x],["s",1/(g>m?1:g/m),1/(g>m?m/g:1)]])),o=tIt(0,0,S,y,b,e,w[0],w[1])}if(o)break}}return o}},kOt.PathUtil);function rIt(t,e,n){for(var r=!1,i=0;i=r[0]&&t<=r[1]&&(e=(t-r[0])/(r[1]-r[0]),n=i)}));var o=i[n];if((0,tOt.UM)(o)||(0,tOt.UM)(n))return null;var a=o.length,c=i[n+1];return Ujt.Ll.pointAt(o[a-2],o[a-1],c[1],c[2],c[3],c[4],c[5],c[6],e)},e.prototype._calculateCurve=function(){var t=this.attr().path;this.set("curve",nIt.pathToCurve(t))},e.prototype._setTcache=function(){var t,e,n,r,i=0,o=0,a=[],c=this.get("curve");c&&((0,tOt.S6)(c,(function(t,e){n=c[e+1],r=t.length,n&&(i+=Ujt.Ll.length(t[r-2],t[r-1],n[1],n[2],n[3],n[4],n[5],n[6])||0)})),this.set("totalLength",i),0!==i?((0,tOt.S6)(c,(function(l,u){n=c[u+1],r=l.length,n&&((t=[])[0]=o/i,e=Ujt.Ll.length(l[r-2],l[r-1],n[1],n[2],n[3],n[4],n[5],n[6]),o+=e||0,t[1]=o/i,a.push(t))})),this.set("tCache",a)):this.set("tCache",[]))},e.prototype.getStartTangent=function(){var t,e=this.getSegments();if(e.length>1){var n=e[0].currentPoint,r=e[1].currentPoint,i=e[1].startTangent;t=[],i?(t.push([n[0]-i[0],n[1]-i[1]]),t.push([n[0],n[1]])):(t.push([r[0],r[1]]),t.push([n[0],n[1]]))}return t},e.prototype.getEndTangent=function(){var t,e=this.getSegments(),n=e.length;if(n>1){var r=e[n-2].currentPoint,i=e[n-1].currentPoint,o=e[n-1].endTangent;t=[],o?(t.push([i[0]-o[0],i[1]-o[1]]),t.push([i[0],i[1]])):(t.push([r[0],r[1]]),t.push([i[0],i[1]]))}return t},e}(Zjt),oIt=iIt;function aIt(t,e,n,r,i){var o=t.length;if(o<2)return!1;for(var a=0;a=r[0]&&t<=r[1]&&(e=(t-r[0])/(r[1]-r[0]),n=i)})),Ujt.x1.pointAt(r[n][0],r[n][1],r[n+1][0],r[n+1][1],e)},e.prototype._setTcache=function(){var t=this.attr().points;if(t&&0!==t.length){var e=this.getTotalLength();if(!(e<=0)){var n,r,i=0,o=[];(0,tOt.S6)(t,(function(a,c){t[c+1]&&((n=[])[0]=i/e,r=Ujt.x1.length(a[0],a[1],t[c+1][0],t[c+1][1]),i+=r,n[1]=i/e,o.push(n))})),this.set("tCache",o)}}},e.prototype.getStartTangent=function(){var t=this.attr().points,e=[];return e.push([t[1][0],t[1][1]]),e.push([t[0][0],t[0][1]]),e},e.prototype.getEndTangent=function(){var t=this.attr().points,e=t.length-1,n=[];return n.push([t[e-1][0],t[e-1][1]]),n.push([t[e][0],t[e][1]]),n},e}(Zjt),sIt=uIt;var fIt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultAttrs=function(){var e=t.prototype.getDefaultAttrs.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{x:0,y:0,width:0,height:0,radius:0})},e.prototype.isInStrokeOrPath=function(t,e,n,r,i){var o=this.attr(),a=o.x,c=o.y,l=o.width,u=o.height,s=o.radius;if(s){var f=!1;return n&&(f=function(t,e,n,r,i,o,a,c){return Hjt(t+i,e,t+n-i,e,o,a,c)||Hjt(t+n,e+i,t+n,e+r-i,o,a,c)||Hjt(t+n-i,e+r,t+i,e+r,o,a,c)||Hjt(t,e+r-i,t,e+i,o,a,c)||tIt(t+n-i,e+i,i,1.5*Math.PI,2*Math.PI,o,a,c)||tIt(t+n-i,e+r-i,i,0,.5*Math.PI,o,a,c)||tIt(t+i,e+r-i,i,.5*Math.PI,Math.PI,o,a,c)||tIt(t+i,e+i,i,Math.PI,1.5*Math.PI,o,a,c)}(a,c,l,u,s,i,t,e)),!f&&r&&(f=Yjt(this,t,e)),f}var h=i/2;return r&&n?KFt(a-h,c-h,l+h,u+h,t,e):r?KFt(a,c,l,u,t,e):n?function(t,e,n,r,i,o,a){var c=i/2;return KFt(t-c,e-c,n,i,o,a)||KFt(t+n-c,e-c,i,r,o,a)||KFt(t+c,e+r-c,n,i,o,a)||KFt(t-c,e+c,i,r,o,a)}(a,c,l,u,i,t,e):void 0},e.prototype.createPath=function(t){var e=this.attr(),n=e.x,r=e.y,i=e.width,o=e.height,a=e.radius;if(t.beginPath(),0===a)t.rect(n,r,i,o);else{var c=function(t){var e=0,n=0,r=0,i=0;return(0,tOt.kJ)(t)?1===t.length?e=n=r=i=t[0]:2===t.length?(e=r=t[0],n=i=t[1]):3===t.length?(e=t[0],n=i=t[1],r=t[2]):(e=t[0],n=t[1],r=t[2],i=t[3]):e=n=r=i=t,[e,n,r,i]}(a),l=c[0],u=c[1],s=c[2],f=c[3];t.moveTo(n+l,r),t.lineTo(n+i-u,r),0!==u&&t.arc(n+i-u,r+u,u,-Math.PI/2,0),t.lineTo(n+i,r+o-s),0!==s&&t.arc(n+i-s,r+o-s,s,0,Math.PI/2),t.lineTo(n+f,r+o),0!==f&&t.arc(n+f,r+o-f,f,Math.PI/2,Math.PI),t.lineTo(n,r+l),0!==l&&t.arc(n+l,r+l,l,Math.PI,1.5*Math.PI),t.closePath()}},e}(Zjt),hIt=fIt,dIt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultAttrs=function(){var e=t.prototype.getDefaultAttrs.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{x:0,y:0,text:null,fontSize:12,fontFamily:"sans-serif",fontStyle:"normal",fontWeight:"normal",fontVariant:"normal",textAlign:"start",textBaseline:"bottom"})},e.prototype.isOnlyHitBox=function(){return!0},e.prototype.initAttrs=function(t){this._assembleFont(),t.text&&this._setText(t.text)},e.prototype._assembleFont=function(){var t=this.attrs;t.font=(0,kOt.assembleFont)(t)},e.prototype._setText=function(t){var e=null;(0,tOt.HD)(t)&&-1!==t.indexOf("\n")&&(e=t.split("\n")),this.set("textArr",e)},e.prototype.onAttrChange=function(e,n,r){t.prototype.onAttrChange.call(this,e,n,r),e.startsWith("font")&&this._assembleFont(),"text"===e&&this._setText(n)},e.prototype._getSpaceingY=function(){var t=this.attrs,e=t.lineHeight,n=1*t.fontSize;return e?e-n:.14*n},e.prototype._drawTextArr=function(t,e,n){var r,i=this.attrs,o=i.textBaseline,a=i.x,c=i.y,l=1*i.fontSize,u=this._getSpaceingY(),s=(0,kOt.getTextHeight)(i.text,i.fontSize,i.lineHeight);(0,tOt.S6)(e,(function(e,i){r=c+i*(u+l)-s+l,"middle"===o&&(r+=s-l-(s-l)/2),"top"===o&&(r+=s-l),(0,tOt.UM)(e)||(n?t.fillText(e,a,r):t.strokeText(e,a,r))}))},e.prototype._drawText=function(t,e){var n=this.attr(),r=n.x,i=n.y,o=this.get("textArr");if(o)this._drawTextArr(t,o,e);else{var a=n.text;(0,tOt.UM)(a)||(e?t.fillText(a,r,i):t.strokeText(a,r,i))}},e.prototype.strokeAndFill=function(t){var e=this.attrs,n=e.lineWidth,r=e.opacity,i=e.strokeOpacity,o=e.fillOpacity;this.isStroke()&&n>0&&((0,tOt.UM)(i)||1===i||(t.globalAlpha=r),this.stroke(t)),this.isFill()&&((0,tOt.UM)(o)||1===o?this.fill(t):(t.globalAlpha=o,this.fill(t),t.globalAlpha=r)),this.afterDrawPath(t)},e.prototype.fill=function(t){this._drawText(t,!0)},e.prototype.stroke=function(t){this._drawText(t,!1)},e}(Zjt),pIt=dIt;function vIt(t,e,n){var r=t.getTotalMatrix();if(r){var i=function(t,e){if(e){var n=(0,kOt.invert)(e);return(0,kOt.multiplyVec2)(n,t)}return t}([e,n,1],r);return[i[0],i[1]]}return[e,n]}function gIt(t,e,n){if(t.isCanvas&&t.isCanvas())return!0;if(!(0,kOt.isAllowCapture)(t)||!1===t.cfg.isInView)return!1;if(t.cfg.clipShape){var r=vIt(t,e,n),i=r[0],o=r[1];if(t.isClipped(i,o))return!1}var a=t.cfg.cacheCanvasBBox||t.getCanvasBBox();return e>=a.minX&&e<=a.maxX&&n>=a.minY&&n<=a.maxY}function mIt(t,e,n){if(!gIt(t,e,n))return null;for(var r=null,i=t.getChildren(),o=i.length-1;o>=0;o--){var a=i[o];if(a.isGroup())r=mIt(a,e,n);else if(gIt(a,e,n)){var c=a,l=vIt(a,e,n),u=l[0],s=l[1];c.isInShape(u,s)&&(r=a)}if(r)break}return r}var yIt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return e.renderer="canvas",e.autoDraw=!0,e.localRefresh=!0,e.refreshElements=[],e.clipView=!0,e.quickHit=!1,e},e.prototype.onCanvasChange=function(t){"attr"!==t&&"sort"!==t&&"changeSize"!==t||(this.set("refreshElements",[this]),this.draw())},e.prototype.getShapeBase=function(){return A},e.prototype.getGroupBase=function(){return Djt},e.prototype.getPixelRatio=function(){var t=this.get("pixelRatio")||(window?window.devicePixelRatio:1);return t>=1?Math.ceil(t):1},e.prototype.getViewRange=function(){return{minX:0,minY:0,maxX:this.cfg.width,maxY:this.cfg.height}},e.prototype.createDom=function(){var t=document.createElement("canvas"),e=t.getContext("2d");return this.set("context",e),t},e.prototype.setDOMSize=function(e,n){t.prototype.setDOMSize.call(this,e,n);var r=this.get("context"),i=this.get("el"),o=this.getPixelRatio();i.width=o*e,i.height=o*n,o>1&&r.scale(o,o)},e.prototype.clear=function(){t.prototype.clear.call(this),this._clearFrame();var e=this.get("context"),n=this.get("el");e.clearRect(0,0,n.width,n.height)},e.prototype.getShape=function(e,n){return this.get("quickHit")?mIt(this,e,n):t.prototype.getShape.call(this,e,n,null)},e.prototype._getRefreshRegion=function(){var t,e=this.get("refreshElements"),n=this.getViewRange();e.length&&e[0]===this?t=n:(t=function(t){if(!t.length)return null;var e=[],n=[],r=[],i=[];return(0,tOt.S6)(t,(function(t){var o=Pjt(t);o&&(e.push(o.minX),n.push(o.minY),r.push(o.maxX),i.push(o.maxY))})),{minX:(0,tOt.VV)(e),minY:(0,tOt.VV)(n),maxX:(0,tOt.Fp)(r),maxY:(0,tOt.Fp)(i)}}(e),t&&(t.minX=Math.floor(t.minX),t.minY=Math.floor(t.minY),t.maxX=Math.ceil(t.maxX),t.maxY=Math.ceil(t.maxY),t.maxY+=1,this.get("clipView")&&(t=function(t,e){return t&&e&&JFt(t,e)?{minX:Math.max(t.minX,e.minX),minY:Math.max(t.minY,e.minY),maxX:Math.min(t.maxX,e.maxX),maxY:Math.min(t.maxY,e.maxY)}:null}(t,n))));return t},e.prototype.refreshElement=function(t){this.get("refreshElements").push(t)},e.prototype._clearFrame=function(){var t=this.get("drawFrame");t&&((0,tOt.VS)(t),this.set("drawFrame",null),this.set("refreshElements",[]))},e.prototype.draw=function(){var t=this.get("drawFrame");this.get("autoDraw")&&t||this._startDraw()},e.prototype._drawAll=function(){var t=this.get("context"),e=this.get("el"),n=this.getChildren();t.clearRect(0,0,e.width,e.height),xjt(t,this),wjt(t,n),this.set("refreshElements",[])},e.prototype._drawRegion=function(){var t=this.get("context"),e=this.get("refreshElements"),n=this.getChildren(),r=this._getRefreshRegion();r?(t.clearRect(r.minX,r.minY,r.maxX-r.minX,r.maxY-r.minY),t.save(),t.beginPath(),t.rect(r.minX,r.minY,r.maxX-r.minX,r.maxY-r.minY),t.clip(),xjt(t,this),Sjt(this,n,r),wjt(t,n,r),t.restore()):e.length&&Cjt(e),(0,tOt.S6)(e,(function(t){t.get("hasChanged")&&t.set("hasChanged",!1)})),this.set("refreshElements",[])},e.prototype._startDraw=function(){var t=this,e=this.get("drawFrame");e||(e=(0,tOt.U7)((function(){t.get("localRefresh")?t._drawRegion():t._drawAll(),t.set("drawFrame",null)})),this.set("drawFrame",e))},e.prototype.skipDraw=function(){},e.prototype.removeDom=function(){var t=this.get("el");t.width=0,t.height=0,t.parentNode.removeChild(t)},e}(kOt.AbstractCanvas),bIt=yIt,xIt="0.5.12",wIt={rect:"path",circle:"circle",line:"line",path:"path",marker:"path",text:"text",polyline:"polyline",polygon:"polygon",image:"image",ellipse:"ellipse",dom:"foreignObject"},SIt={opacity:"opacity",fillStyle:"fill",fill:"fill",fillOpacity:"fill-opacity",strokeStyle:"stroke",strokeOpacity:"stroke-opacity",stroke:"stroke",x:"x",y:"y",r:"r",rx:"rx",ry:"ry",width:"width",height:"height",x1:"x1",x2:"x2",y1:"y1",y2:"y2",lineCap:"stroke-linecap",lineJoin:"stroke-linejoin",lineWidth:"stroke-width",lineDash:"stroke-dasharray",lineDashOffset:"stroke-dashoffset",miterLimit:"stroke-miterlimit",font:"font",fontSize:"font-size",fontStyle:"font-style",fontVariant:"font-variant",fontWeight:"font-weight",fontFamily:"font-family",startArrow:"marker-start",endArrow:"marker-end",path:"d",class:"class",id:"id",style:"style",preserveAspectRatio:"preserveAspectRatio"};function kIt(t){return document.createElementNS("http://www.w3.org/2000/svg",t)}function CIt(t){var e=wIt[t.type],n=t.getParent();if(!e)throw new Error("the type "+t.type+" is not supported by svg");var r=kIt(e);if(t.get("id")&&(r.id=t.get("id")),t.set("el",r),t.set("attrs",{}),n){var i=n.get("el");i||(i=n.createDom(),n.set("el",i)),i.appendChild(r)}return r}function OIt(t,e){var n=t.get("el"),r=(0,tOt.qo)(n.children).sort(e),i=document.createDocumentFragment();r.forEach((function(t){i.appendChild(t)})),n.appendChild(i)}function EIt(t){var e=t.attr().matrix;if(e){for(var n=t.cfg.el,r=[],i=0;i<9;i+=3)r.push(e[i]+","+e[i+1]);-1===(r=r.join(",")).indexOf("NaN")?n.setAttribute("transform","matrix("+r+")"):console.warn("invalid matrix:",e)}}function MIt(t,e){var n=t.getClip(),r=t.get("el");if(n){if(n&&!r.hasAttribute("clip-path")){CIt(n),n.createPath(e);var i=e.addClip(n);r.setAttribute("clip-path","url(#"+i+")")}}else r.removeAttribute("clip-path")}function AIt(t,e){e.forEach((function(e){e.draw(t)}))}function PIt(t,e){var n=t.get("canvas");if(n&&n.get("autoDraw")){var r=n.get("context"),i=t.getParent(),o=i?i.getChildren():[n],a=t.get("el");if("remove"===e)if(t.get("isClipShape")){var c=a&&a.parentNode,l=c&&c.parentNode;c&&l&&l.removeChild(c)}else a&&a.parentNode&&a.parentNode.removeChild(a);else if("show"===e)a.setAttribute("visibility","visible");else if("hide"===e)a.setAttribute("visibility","hidden");else if("zIndex"===e)!function(t,e){var n=t.parentNode,r=Array.from(n.childNodes).filter((function(t){return 1===t.nodeType&&"defs"!==t.nodeName.toLowerCase()})),i=r[e],o=r.indexOf(t);if(i){if(o>e)n.insertBefore(t,i);else if(o0&&(e?"stroke"in n?this._setColor(t,"stroke",o):"strokeStyle"in n&&this._setColor(t,"stroke",a):this._setColor(t,"stroke",o||a),l&&s.setAttribute(SIt.strokeOpacity,l),u&&s.setAttribute(SIt.lineWidth,u))},e.prototype._setColor=function(t,e,n){var r=this.get("el");if(n)if(n=n.trim(),/^[r,R,L,l]{1}[\s]*\(/.test(n))(i=t.find("gradient",n))||(i=t.addGradient(n)),r.setAttribute(SIt[e],"url(#"+i+")");else if(/^[p,P]{1}[\s]*\(/.test(n)){var i;(i=t.find("pattern",n))||(i=t.addPattern(n)),r.setAttribute(SIt[e],"url(#"+i+")")}else r.setAttribute(SIt[e],n);else r.setAttribute(SIt[e],"none")},e.prototype.shadow=function(t,e){var n=this.attr(),r=e||n,i=r.shadowOffsetX,o=r.shadowOffsetY,a=r.shadowBlur,c=r.shadowColor;(i||o||a||c)&&function(t,e){var n=t.cfg.el,r=t.attr(),i={dx:r.shadowOffsetX,dy:r.shadowOffsetY,blur:r.shadowBlur,color:r.shadowColor};if(i.dx||i.dy||i.blur||i.color){var o=e.find("filter",i);o||(o=e.addShadow(i)),n.setAttribute("filter","url(#"+o+")")}else n.removeAttribute("filter")}(this,t)},e.prototype.transform=function(t){var e=this.attr();(t||e).matrix&&EIt(this)},e.prototype.isInShape=function(t,e){return this.isPointInPath(t,e)},e.prototype.isPointInPath=function(t,e){var n=this.get("el"),r=this.get("canvas").get("el").getBoundingClientRect(),i=t+r.left,o=e+r.top,a=document.elementFromPoint(i,o);return!(!a||!a.isEqualNode(n))},e.prototype.getHitLineWidth=function(){var t=this.attrs,e=t.lineWidth,n=t.lineAppendWidth;return this.isStroke()?e+n:0},e}(kOt.AbstractShape),ZIt=TIt,FIt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="circle",e.canFill=!0,e.canStroke=!0,e}return(0,QCt.ZT)(e,t),e.prototype.getDefaultAttrs=function(){var e=t.prototype.getDefaultAttrs.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{x:0,y:0,r:0})},e.prototype.createPath=function(t,e){var n=this.attr(),r=this.get("el");(0,tOt.S6)(e||n,(function(t,e){"x"===e||"y"===e?r.setAttribute("c"+e,t):SIt[e]&&r.setAttribute(SIt[e],t)}))},e}(ZIt),jIt=FIt,IIt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="dom",e.canFill=!1,e.canStroke=!1,e}return(0,QCt.ZT)(e,t),e.prototype.createPath=function(t,e){var n=this.attr(),r=this.get("el");if((0,tOt.S6)(e||n,(function(t,e){SIt[e]&&r.setAttribute(SIt[e],t)})),"function"==typeof n.html){var i=n.html.call(this,n);if(i instanceof Element||i instanceof HTMLDocument){for(var o=r.childNodes,a=o.length-1;a>=0;a--)r.removeChild(o[a]);r.appendChild(i)}else r.innerHTML=i}else r.innerHTML=n.html},e}(ZIt),RIt=IIt,LIt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="ellipse",e.canFill=!0,e.canStroke=!0,e}return(0,QCt.ZT)(e,t),e.prototype.getDefaultAttrs=function(){var e=t.prototype.getDefaultAttrs.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{x:0,y:0,rx:0,ry:0})},e.prototype.createPath=function(t,e){var n=this.attr(),r=this.get("el");(0,tOt.S6)(e||n,(function(t,e){"x"===e||"y"===e?r.setAttribute("c"+e,t):SIt[e]&&r.setAttribute(SIt[e],t)}))},e}(ZIt),NIt=LIt,BIt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="image",e.canFill=!1,e.canStroke=!1,e}return(0,QCt.ZT)(e,t),e.prototype.getDefaultAttrs=function(){var e=t.prototype.getDefaultAttrs.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{x:0,y:0,width:0,height:0})},e.prototype.createPath=function(t,e){var n=this,r=this.attr(),i=this.get("el");(0,tOt.S6)(e||r,(function(t,e){"img"===e?n._setImage(r.img):SIt[e]&&i.setAttribute(SIt[e],t)}))},e.prototype.setAttr=function(t,e){this.attrs[t]=e,"img"===t&&this._setImage(e)},e.prototype._setImage=function(t){var e=this.attr(),n=this.get("el");if((0,tOt.HD)(t))n.setAttribute("href",t);else if(t instanceof window.Image)e.width||(n.setAttribute("width",t.width),this.attr("width",t.width)),e.height||(n.setAttribute("height",t.height),this.attr("height",t.height)),n.setAttribute("href",t.src);else if(t instanceof HTMLElement&&(0,tOt.HD)(t.nodeName)&&"CANVAS"===t.nodeName.toUpperCase())n.setAttribute("href",t.toDataURL());else if(t instanceof ImageData){var r=document.createElement("canvas");r.setAttribute("width",""+t.width),r.setAttribute("height",""+t.height),r.getContext("2d").putImageData(t,0,0),e.width||(n.setAttribute("width",""+t.width),this.attr("width",t.width)),e.height||(n.setAttribute("height",""+t.height),this.attr("height",t.height)),n.setAttribute("href",r.toDataURL())}},e}(ZIt),zIt=BIt,UIt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="line",e.canFill=!1,e.canStroke=!0,e}return(0,QCt.ZT)(e,t),e.prototype.getDefaultAttrs=function(){var e=t.prototype.getDefaultAttrs.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{x1:0,y1:0,x2:0,y2:0,startArrow:!1,endArrow:!1})},e.prototype.createPath=function(t,e){var n=this.attr(),r=this.get("el");(0,tOt.S6)(e||n,(function(e,i){if("startArrow"===i||"endArrow"===i)if(e){var o=(0,tOt.Kn)(e)?t.addArrow(n,SIt[i]):t.getDefaultArrow(n,SIt[i]);r.setAttribute(SIt[i],"url(#"+o+")")}else r.removeAttribute(SIt[i]);else SIt[i]&&r.setAttribute(SIt[i],e)}))},e.prototype.getTotalLength=function(){var t=this.attr(),e=t.x1,n=t.y1,r=t.x2,i=t.y2;return Ujt.x1.length(e,n,r,i)},e.prototype.getPoint=function(t){var e=this.attr(),n=e.x1,r=e.y1,i=e.x2,o=e.y2;return Ujt.x1.pointAt(n,r,i,o,t)},e}(ZIt),HIt=UIt,WIt={circle:function(t,e,n){return[["M",t,e],["m",-n,0],["a",n,n,0,1,0,2*n,0],["a",n,n,0,1,0,2*-n,0]]},square:function(t,e,n){return[["M",t-n,e-n],["L",t+n,e-n],["L",t+n,e+n],["L",t-n,e+n],["Z"]]},diamond:function(t,e,n){return[["M",t-n,e],["L",t,e-n],["L",t+n,e],["L",t,e+n],["Z"]]},triangle:function(t,e,n){var r=n*Math.sin(1/3*Math.PI);return[["M",t-n,e+r],["L",t,e-r],["L",t+n,e+r],["z"]]},triangleDown:function(t,e,n){var r=n*Math.sin(1/3*Math.PI);return[["M",t-n,e-r],["L",t+n,e-r],["L",t,e+r],["Z"]]}},VIt={get:function(t){return WIt[t]},register:function(t,e){WIt[t]=e},remove:function(t){delete WIt[t]},getAll:function(){return WIt}},GIt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="marker",e.canFill=!0,e.canStroke=!0,e}return(0,QCt.ZT)(e,t),e.prototype.createPath=function(t){this.get("el").setAttribute("d",this._assembleMarker())},e.prototype._assembleMarker=function(){var t=this._getPath();return(0,tOt.kJ)(t)?t.map((function(t){return t.join(" ")})).join(""):t},e.prototype._getPath=function(){var t,e=this.attr(),n=e.x,r=e.y,i=e.r||e.radius,o=e.symbol||"circle";return(t=(0,tOt.mf)(o)?o:VIt.get(o))?t(n,r,i):(console.warn(t+" symbol is not exist."),null)},e.symbolsFactory=VIt,e}(ZIt),XIt=GIt,qIt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="path",e.canFill=!0,e.canStroke=!0,e}return(0,QCt.ZT)(e,t),e.prototype.getDefaultAttrs=function(){var e=t.prototype.getDefaultAttrs.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{startArrow:!1,endArrow:!1})},e.prototype.createPath=function(t,e){var n=this,r=this.attr(),i=this.get("el");(0,tOt.S6)(e||r,(function(e,o){if("path"===o&&(0,tOt.kJ)(e))i.setAttribute("d",n._formatPath(e));else if("startArrow"===o||"endArrow"===o)if(e){var a=(0,tOt.Kn)(e)?t.addArrow(r,SIt[o]):t.getDefaultArrow(r,SIt[o]);i.setAttribute(SIt[o],"url(#"+a+")")}else i.removeAttribute(SIt[o]);else SIt[o]&&i.setAttribute(SIt[o],e)}))},e.prototype._formatPath=function(t){var e=t.map((function(t){return t.join(" ")})).join("");return~e.indexOf("NaN")?"":e},e.prototype.getTotalLength=function(){var t=this.get("el");return t?t.getTotalLength():null},e.prototype.getPoint=function(t){var e=this.get("el"),n=this.getTotalLength();if(0===n)return null;var r=e?e.getPointAtLength(t*n):null;return r?{x:r.x,y:r.y}:null},e}(ZIt),YIt=qIt,$It=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="polygon",e.canFill=!0,e.canStroke=!0,e}return(0,QCt.ZT)(e,t),e.prototype.createPath=function(t,e){var n=this.attr(),r=this.get("el");(0,tOt.S6)(e||n,(function(t,e){"points"===e&&(0,tOt.kJ)(t)&&t.length>=2?r.setAttribute("points",t.map((function(t){return t[0]+","+t[1]})).join(" ")):SIt[e]&&r.setAttribute(SIt[e],t)}))},e}(ZIt),KIt=$It,JIt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="polyline",e.canFill=!0,e.canStroke=!0,e}return(0,QCt.ZT)(e,t),e.prototype.getDefaultAttrs=function(){var e=t.prototype.getDefaultAttrs.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{startArrow:!1,endArrow:!1})},e.prototype.onAttrChange=function(e,n,r){t.prototype.onAttrChange.call(this,e,n,r),-1!==["points"].indexOf(e)&&this._resetCache()},e.prototype._resetCache=function(){this.set("totalLength",null),this.set("tCache",null)},e.prototype.createPath=function(t,e){var n=this.attr(),r=this.get("el");(0,tOt.S6)(e||n,(function(t,e){"points"===e&&(0,tOt.kJ)(t)&&t.length>=2?r.setAttribute("points",t.map((function(t){return t[0]+","+t[1]})).join(" ")):SIt[e]&&r.setAttribute(SIt[e],t)}))},e.prototype.getTotalLength=function(){var t=this.attr().points,e=this.get("totalLength");return(0,tOt.UM)(e)?(this.set("totalLength",Ujt.aH.length(t)),this.get("totalLength")):e},e.prototype.getPoint=function(t){var e,n,r=this.attr().points,i=this.get("tCache");return i||(this._setTcache(),i=this.get("tCache")),(0,tOt.S6)(i,(function(r,i){t>=r[0]&&t<=r[1]&&(e=(t-r[0])/(r[1]-r[0]),n=i)})),Ujt.x1.pointAt(r[n][0],r[n][1],r[n+1][0],r[n+1][1],e)},e.prototype._setTcache=function(){var t=this.attr().points;if(t&&0!==t.length){var e=this.getTotalLength();if(!(e<=0)){var n,r,i=0,o=[];(0,tOt.S6)(t,(function(a,c){t[c+1]&&((n=[])[0]=i/e,r=Ujt.x1.length(a[0],a[1],t[c+1][0],t[c+1][1]),i+=r,n[1]=i/e,o.push(n))})),this.set("tCache",o)}}},e.prototype.getStartTangent=function(){var t=this.attr().points,e=[];return e.push([t[1][0],t[1][1]]),e.push([t[0][0],t[0][1]]),e},e.prototype.getEndTangent=function(){var t=this.attr().points,e=t.length-1,n=[];return n.push([t[e-1][0],t[e-1][1]]),n.push([t[e][0],t[e][1]]),n},e}(ZIt),QIt=JIt;var tRt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="rect",e.canFill=!0,e.canStroke=!0,e}return(0,QCt.ZT)(e,t),e.prototype.getDefaultAttrs=function(){var e=t.prototype.getDefaultAttrs.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{x:0,y:0,width:0,height:0,radius:0})},e.prototype.createPath=function(t,e){var n=this,r=this.attr(),i=this.get("el"),o=!1,a=["x","y","width","height","radius"];(0,tOt.S6)(e||r,(function(t,e){-1===a.indexOf(e)||o?-1===a.indexOf(e)&&SIt[e]&&i.setAttribute(SIt[e],t):(i.setAttribute("d",n._assembleRect(r)),o=!0)}))},e.prototype._assembleRect=function(t){var e=t.x,n=t.y,r=t.width,i=t.height,o=t.radius;if(!o)return"M "+e+","+n+" l "+r+",0 l 0,"+i+" l"+-r+" 0 z";var a=function(t){var e=0,n=0,r=0,i=0;return(0,tOt.kJ)(t)?1===t.length?e=n=r=i=t[0]:2===t.length?(e=r=t[0],n=i=t[1]):3===t.length?(e=t[0],n=i=t[1],r=t[2]):(e=t[0],n=t[1],r=t[2],i=t[3]):e=n=r=i=t,{r1:e,r2:n,r3:r,r4:i}}(o);return(0,tOt.kJ)(o)?1===o.length?a.r1=a.r2=a.r3=a.r4=o[0]:2===o.length?(a.r1=a.r3=o[0],a.r2=a.r4=o[1]):3===o.length?(a.r1=o[0],a.r2=a.r4=o[1],a.r3=o[2]):(a.r1=o[0],a.r2=o[1],a.r3=o[2],a.r4=o[3]):a.r1=a.r2=a.r3=a.r4=o,[["M "+(e+a.r1)+","+n],["l "+(r-a.r1-a.r2)+",0"],["a "+a.r2+","+a.r2+",0,0,1,"+a.r2+","+a.r2],["l 0,"+(i-a.r2-a.r3)],["a "+a.r3+","+a.r3+",0,0,1,"+-a.r3+","+a.r3],["l "+(a.r3+a.r4-r)+",0"],["a "+a.r4+","+a.r4+",0,0,1,"+-a.r4+","+-a.r4],["l 0,"+(a.r4+a.r1-i)],["a "+a.r1+","+a.r1+",0,0,1,"+a.r1+","+-a.r1],["z"]].join(" ")},e}(ZIt),eRt=tRt,nRt=n(23537),rRt={top:"before-edge",middle:"central",bottom:"after-edge",alphabetic:"baseline",hanging:"hanging"},iRt={top:"text-before-edge",middle:"central",bottom:"text-after-edge",alphabetic:"alphabetic",hanging:"hanging"},oRt={left:"left",start:"left",center:"middle",right:"end",end:"end"},aRt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="text",e.canFill=!0,e.canStroke=!0,e}return(0,QCt.ZT)(e,t),e.prototype.getDefaultAttrs=function(){var e=t.prototype.getDefaultAttrs.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{x:0,y:0,text:null,fontSize:12,fontFamily:"sans-serif",fontStyle:"normal",fontWeight:"normal",fontVariant:"normal",textAlign:"start",textBaseline:"bottom"})},e.prototype.createPath=function(t,e){var n=this,r=this.attr(),i=this.get("el");this._setFont(),(0,tOt.S6)(e||r,(function(t,e){"text"===e?n._setText(""+t):"matrix"===e&&t?EIt(n):SIt[e]&&i.setAttribute(SIt[e],t)})),i.setAttribute("paint-order","stroke"),i.setAttribute("style","stroke-linecap:butt; stroke-linejoin:miter;")},e.prototype._setFont=function(){var t=this.get("el"),e=this.attr(),n=e.textBaseline,r=e.textAlign,i=(0,nRt.qY)();i&&"firefox"===i.name?t.setAttribute("dominant-baseline",iRt[n]||"alphabetic"):t.setAttribute("alignment-baseline",rRt[n]||"baseline"),t.setAttribute("text-anchor",oRt[r]||"left")},e.prototype._setText=function(t){var e=this.get("el"),n=this.attr(),r=n.x,i=n.textBaseline,o=void 0===i?"bottom":i;if(t)if(~t.indexOf("\n")){var a=t.split("\n"),c=a.length-1,l="";(0,tOt.S6)(a,(function(t,e){0===e?"alphabetic"===o?l+=''+t+"":"top"===o?l+=''+t+"":"middle"===o?l+=''+t+"":"bottom"===o?l+=''+t+"":"hanging"===o&&(l+=''+t+""):l+=''+t+""})),e.innerHTML=l}else e.innerHTML=t;else e.innerHTML=""},e}(ZIt),cRt=aRt,lRt=/^l\s*\(\s*([\d.]+)\s*\)\s*(.*)/i,uRt=/^r\s*\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)\s*\)\s*(.*)/i,sRt=/[\d.]+:(#[^\s]+|[^)]+\))/gi;function fRt(t){var e=t.match(sRt);if(!e)return"";var n="";return e.sort((function(t,e){return t=t.split(":"),e=e.split(":"),Number(t[0])-Number(e[0])})),(0,tOt.S6)(e,(function(t){t=t.split(":"),n+=''})),n}var hRt=function(){function t(t){this.cfg={};var e=null,n=(0,tOt.EL)("gradient_");return"l"===t.toLowerCase()[0]?function(t,e){var n,r,i=lRt.exec(t),o=(0,tOt.wQ)((0,tOt.c$)(parseFloat(i[1])),2*Math.PI),a=i[2];o>=0&&o<.5*Math.PI?(n={x:0,y:0},r={x:1,y:1}):.5*Math.PI<=o&&o';e.innerHTML=n},t}(),mRt=gRt,yRt=function(){function t(t,e){this.cfg={};var n=kIt("marker"),r=(0,tOt.EL)("marker_");n.setAttribute("id",r);var i=kIt("path");i.setAttribute("stroke",t.stroke||"none"),i.setAttribute("fill",t.fill||"none"),n.appendChild(i),n.setAttribute("overflow","visible"),n.setAttribute("orient","auto-start-reverse"),this.el=n,this.child=i,this.id=r;var o=t["marker-start"===e?"startArrow":"endArrow"];return this.stroke=t.stroke||"#000",!0===o?this._setDefaultPath(e,i):(this.cfg=o,this._setMarker(t.lineWidth,i)),this}return t.prototype.match=function(){return!1},t.prototype._setDefaultPath=function(t,e){var n=this.el;e.setAttribute("d","M0,0 L"+10*Math.cos(Math.PI/6)+",5 L0,10"),n.setAttribute("refX",""+10*Math.cos(Math.PI/6)),n.setAttribute("refY","5")},t.prototype._setMarker=function(t,e){var n=this.el,r=this.cfg.path,i=this.cfg.d;(0,tOt.kJ)(r)&&(r=r.map((function(t){return t.join(" ")})).join("")),e.setAttribute("d",r),n.appendChild(e),i&&n.setAttribute("refX",""+i/t)},t.prototype.update=function(t){var e=this.child;e.attr?e.attr("fill",t):e.setAttribute("fill",t)},t}(),bRt=yRt,xRt=function(){function t(t){this.type="clip",this.cfg={};var e=kIt("clipPath");this.el=e,this.id=(0,tOt.EL)("clip_"),e.id=this.id;var n=t.cfg.el;return e.appendChild(n),this.cfg=t,this}return t.prototype.match=function(){return!1},t.prototype.remove=function(){var t=this.el;t.parentNode.removeChild(t)},t}(),wRt=/^p\s*\(\s*([axyn])\s*\)\s*(.*)/i,SRt=function(){function t(t){this.cfg={};var e=kIt("pattern");e.setAttribute("patternUnits","userSpaceOnUse");var n=kIt("image");e.appendChild(n);var r=(0,tOt.EL)("pattern_");e.id=r,this.el=e,this.id=r,this.cfg=t;var i=wRt.exec(t)[2];n.setAttribute("href",i);var o=new Image;function a(){e.setAttribute("width",""+o.width),e.setAttribute("height",""+o.height)}return i.match(/^data:/i)||(o.crossOrigin="Anonymous"),o.src=i,o.complete?a():(o.onload=a,o.src=o.src),this}return t.prototype.match=function(t,e){return this.cfg===e},t}(),kRt=SRt,CRt=function(){function t(t){var e=kIt("defs"),n=(0,tOt.EL)("defs_");e.id=n,t.appendChild(e),this.children=[],this.defaultArrow={},this.el=e,this.canvas=t}return t.prototype.find=function(t,e){for(var n=this.children,r=null,i=0;i0&&(u[0][0]="L")),o=o.concat(u)})),o.push(["Z"])}return o}function TRt(t,e,n,r,i){for(var o=PFt(t,e,!e,"lineWidth"),a=t.connectNulls,c=t.isInCircle,l=EFt(t.points,a,t.showSinglePoint),u=[],s=0,f=l.length;sr&&(r=i),i=e[0]})));var d=this.scales[f];try{for(var p=(0,QCt.XA)(t),v=p.next();!v.done;v=p.next()){var g=v.value,m=this.getDrawCfg(g),y=m.x,b=m.y,x=d.scale(g[dOt][f]);this.drawGrayScaleBlurredCircle(y-c.x,b-l.y,n+r,x,h)}}catch(k){i={error:k}}finally{try{v&&!v.done&&(o=p.return)&&o.call(p)}finally{if(i)throw i.error}}var w=h.getImageData(0,0,u,s);this.clearShadowCanvasCtx(),this.colorize(w),h.putImageData(w,0,0);var S=this.getImageShape();S.attr("x",c.x),S.attr("y",l.y),S.attr("width",u),S.attr("height",s),S.attr("img",h.canvas),S.set("origin",this.getShapeInfo(t))},e.prototype.getDefaultSize=function(){var t=this.getAttribute("position"),e=this.coordinate;return Math.min(e.getWidth()/(4*t.scales[0].ticks.length),e.getHeight()/(4*t.scales[1].ticks.length))},e.prototype.clearShadowCanvasCtx=function(){var t=this.getShadowCanvasCtx();t.clearRect(0,0,t.canvas.width,t.canvas.height)},e.prototype.getShadowCanvasCtx=function(){var t=this.shadowCanvas;return t||(t=document.createElement("canvas"),this.shadowCanvas=t),t.width=this.coordinate.getWidth(),t.height=this.coordinate.getHeight(),t.getContext("2d")},e.prototype.getGrayScaleBlurredCanvas=function(){return this.grayScaleBlurredCanvas||(this.grayScaleBlurredCanvas=document.createElement("canvas")),this.grayScaleBlurredCanvas},e.prototype.drawGrayScaleBlurredCircle=function(t,e,n,r,i){var o=this.getGrayScaleBlurredCanvas();i.globalAlpha=r,i.drawImage(o,t-n,e-n)},e.prototype.colorize=function(t){for(var e=this.getAttribute("color"),n=t.data,r=this.paletteCache,i=3;ie&&(r=e-(n=n?e/(1+r/n):0)),i+o>e&&(o=e-(i=i?e/(1+o/i):0)),[n||0,r||0,i||0,o||0]}function HRt(t,e,n){var r=[];if(n.isRect){var i=n.isTransposed?{x:n.start.x,y:e[0].y}:{x:e[0].x,y:n.start.y},o=n.isTransposed?{x:n.end.x,y:e[2].y}:{x:e[3].x,y:n.end.y},a=(0,tOt.U2)(t,["background","style","radius"]);if(a){var c=n.isTransposed?Math.abs(e[0].y-e[2].y):e[2].x-e[1].x,l=n.isTransposed?n.getWidth():n.getHeight(),u=(0,QCt.CR)(URt(a,Math.min(c,l)),4),s=u[0],f=u[1],h=u[2],d=u[3],p=n.isTransposed&&n.isReflect("y"),v=p?0:1,g=function(t){return p?-t:t};r.push(["M",i.x,o.y+g(s)]),0!==s&&r.push(["A",s,s,0,0,v,i.x+s,o.y]),r.push(["L",o.x-f,o.y]),0!==f&&r.push(["A",f,f,0,0,v,o.x,o.y+g(f)]),r.push(["L",o.x,i.y-g(h)]),0!==h&&r.push(["A",h,h,0,0,v,o.x-h,i.y]),r.push(["L",i.x+d,i.y]),0!==d&&r.push(["A",d,d,0,0,v,i.x,i.y-g(d)])}else r.push(["M",i.x,i.y]),r.push(["L",o.x,i.y]),r.push(["L",o.x,o.y]),r.push(["L",i.x,o.y]),r.push(["L",i.x,i.y]);r.push(["z"])}if(n.isPolar){var m=n.getCenter(),y=fDt(t,n),b=y.startAngle,x=y.endAngle;if("theta"===n.type||n.isTransposed){var w=function(t){return Math.pow(t,2)};s=Math.sqrt(w(m.x-e[0].x)+w(m.y-e[0].y)),f=Math.sqrt(w(m.x-e[2].x)+w(m.y-e[2].y));r=uDt(m.x,m.y,s,n.startAngle,n.endAngle,f)}else r=uDt(m.x,m.y,n.getRadius(),b,x)}return r}function WRt(t,e,n){var r=[];return(0,tOt.UM)(e)?n?r.push(["M",t[0].x,t[0].y],["L",t[1].x,t[1].y],["L",(t[2].x+t[3].x)/2,(t[2].y+t[3].y)/2],["Z"]):r.push(["M",t[0].x,t[0].y],["L",t[1].x,t[1].y],["L",t[2].x,t[2].y],["L",t[3].x,t[3].y],["Z"]):r.push(["M",t[0].x,t[0].y],["L",t[1].x,t[1].y],["L",e[1].x,e[1].y],["L",e[0].x,e[0].y],["Z"]),r}function VRt(t,e){return[e,t]}KZt("interval",{defaultShapeType:"rect",getDefaultPoints:function(t){return BRt(t)}});JZt("interval","rect",{draw:function(t,e){var n,r=PFt(t,!1,!0),i=e,o=null==t?void 0:t.background;if(o){i=e.addGroup({name:"interval-group"});var a=_Ft(t),c=HRt(t,this.parsePoints(t.points),this.coordinate);i.addShape("path",{attrs:(0,QCt.pi)((0,QCt.pi)({},a),{path:c}),capture:!1,zIndex:-1,name:zZt})}n=r.radius&&this.coordinate.isRect?function(t,e,n){var r,i,o,a,c,l,u,s=(0,QCt.CR)((0,QCt.ev)([],(0,QCt.CR)(t),!1),4),f=s[0],h=s[1],d=s[2],p=s[3],v=(0,QCt.CR)("number"==typeof n?Array(4).fill(n):n,4),g=v[0],m=v[1],y=v[2],b=v[3];e.isTransposed&&(h=(r=(0,QCt.CR)(VRt(h,p),2))[0],p=r[1]),e.isReflect("y")&&(f=(i=(0,QCt.CR)(VRt(f,h),2))[0],h=i[1],d=(o=(0,QCt.CR)(VRt(d,p),2))[0],p=o[1]),e.isReflect("x")&&(f=(a=(0,QCt.CR)(VRt(f,p),2))[0],p=a[1],h=(c=(0,QCt.CR)(VRt(h,d),2))[0],d=c[1]);var x=[],w=function(t){return Math.abs(t)};return g=(l=(0,QCt.CR)(URt([g,m,y,b],Math.min(w(p.x-f.x),w(h.y-f.y))).map((function(t){return w(t)})),4))[0],m=l[1],y=l[2],b=l[3],e.isTransposed&&(g=(u=(0,QCt.CR)([b,g,m,y],4))[0],m=u[1],y=u[2],b=u[3]),f.y1){i.sort();var v=function(t,e){var n=t.length,r=t;(0,tOt.HD)(r[0])&&(r=t.map((function(t){return e.translate(t)})));for(var i=r[1]-r[0],o=2;oa&&(i=a)}return i}(i,r);a=(r.max-r.min)/v,i.length>a&&(a=i.length)}var g=r.range,m=1/a,y=1;(n.isPolar?y=n.isTransposed&&a>1?d:p:(r.isLinear&&(m*=g[1]-g[0]),y=h),!(0,tOt.UM)(l)&&l>=0)?m=(1-(a-1)*(l/c))/a:m*=y;if(t.getAdjust("dodge")){var b=function(t,e){if(e){var n=(0,tOt.xH)(t);return(0,tOt.I)(n,e).length}return t.length}(o,t.getAdjust("dodge").dodgeBy);if(!(0,tOt.UM)(u)&&u>=0)m=(m-u/c*(b-1))/b;else!(0,tOt.UM)(l)&&l>=0?(m*=y,m/=b):m/=b;m=m>=0?m:0}if(!(0,tOt.UM)(s)&&s>=0){var x=s/c;m>x&&(m=x)}if(!(0,tOt.UM)(f)&&f>=0){var w=f/c;m0&&!(0,tOt.U2)(n,[r,"min"])&&e.change({min:0}),o<=0&&!(0,tOt.U2)(n,[r,"max"])&&e.change({max:0}))}},e.prototype.getDrawCfg=function(e){var n=t.prototype.getDrawCfg.call(this,e);return n.background=this.background,n},e}(iFt),qRt=XRt,YRt=function(t){function e(e){var n=t.call(this,e)||this;n.type="line";var r=e.sortable,i=void 0!==r&&r;return n.sortable=i,n}return(0,QCt.ZT)(e,t),e}(_Rt),$Rt=YRt,KRt=["circle","square","bowtie","diamond","hexagon","triangle","triangle-down"];function JRt(t,e,n,r,i){var o,a,c=PFt(e,i,!i,"r"),l=t.parsePoints(e.points),u=l[0];if(e.isStack)u=l[1];else if(l.length>1){var s=n.addGroup();try{for(var f=(0,QCt.XA)(l),h=f.next();!h.done;h=f.next()){var d=h.value;s.addShape({type:"marker",attrs:(0,QCt.pi)((0,QCt.pi)((0,QCt.pi)({},c),{symbol:yFt[r]||r}),d)})}}catch(p){o={error:p}}finally{try{h&&!h.done&&(a=f.return)&&a.call(f)}finally{if(o)throw o.error}}return s}return n.addShape({type:"marker",attrs:(0,QCt.pi)((0,QCt.pi)((0,QCt.pi)({},c),{symbol:yFt[r]||r}),u)})}KZt("point",{defaultShapeType:"hollow-circle",getDefaultPoints:function(t){return DFt(t)}});(0,tOt.S6)(KRt,(function(t){JZt("point","hollow-".concat(t),{draw:function(e,n){return JRt(this,e,n,t,!0)},getMarker:function(e){var n=e.color;return{symbol:yFt[t]||t,style:{r:4.5,stroke:n,fill:null}}}})}));var QRt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="point",e.shapeType="point",e.generatePoints=!0,e}return(0,QCt.ZT)(e,t),e.prototype.getDrawCfg=function(e){var n=t.prototype.getDrawCfg.call(this,e);return(0,QCt.pi)((0,QCt.pi)({},n),{isStack:!!this.getAdjust("stack")})},e}(iFt),tLt=QRt;KZt("polygon",{defaultShapeType:"polygon",getDefaultPoints:function(t){var e=[];return(0,tOt.S6)(t.x,(function(n,r){var i=t.y[r];e.push({x:n,y:i})})),e}});JZt("polygon","polygon",{draw:function(t,e){if(!(0,tOt.xb)(t.points)){var n=PFt(t,!0,!0),r=this.parsePath(function(t){for(var e=t[0],n=1,r=[["M",e.x,e.y]];n2?"weight":"normal";if(t.isInCircle){var a={x:0,y:1};return"normal"===o?n=function(t,e,n){var r=lLt(e,n),i=[["M",t.x,t.y]];return i.push(r),i}(i[0],i[1],a):(r.fill=r.stroke,n=function(t,e){var n=lLt(t[1],e),r=lLt(t[3],e),i=[["M",t[0].x,t[0].y]];return i.push(r),i.push(["L",t[3].x,t[3].y]),i.push(["L",t[2].x,t[2].y]),i.push(n),i.push(["L",t[1].x,t[1].y]),i.push(["L",t[0].x,t[0].y]),i.push(["Z"]),i}(i,a)),n=this.parsePath(n),e.addShape("path",{attrs:(0,QCt.pi)((0,QCt.pi)({},r),{path:n})})}if("normal"===o)return n=sDt(((i=this.parsePoints(i))[1].x+i[0].x)/2,i[0].y,Math.abs(i[1].x-i[0].x)/2,Math.PI,2*Math.PI),e.addShape("path",{attrs:(0,QCt.pi)((0,QCt.pi)({},r),{path:n})});var c=cLt(i[1],i[3]),l=cLt(i[2],i[0]);return n=[["M",i[0].x,i[0].y],["L",i[1].x,i[1].y],c,["L",i[3].x,i[3].y],["L",i[2].x,i[2].y],l,["Z"]],n=this.parsePath(n),r.fill=r.stroke,e.addShape("path",{attrs:(0,QCt.pi)((0,QCt.pi)({},r),{path:n})})},getMarker:function(t){return{symbol:"circle",style:{r:4.5,fill:t.color}}}}),JZt("edge","smooth",{draw:function(t,e){var n=PFt(t,!0,!1,"lineWidth"),r=t.points,i=this.parsePath(function(t,e){var n=cLt(t,e),r=[["M",t.x,t.y]];return r.push(n),r}(r[0],r[1]));return e.addShape("path",{attrs:(0,QCt.pi)((0,QCt.pi)({},n),{path:i})})},getMarker:function(t){return{symbol:"circle",style:{r:4.5,fill:t.color}}}});var uLt=1/3;JZt("edge","vhv",{draw:function(t,e){var n=PFt(t,!0,!1,"lineWidth"),r=t.points,i=this.parsePath(function(t,e){var n=[];n.push({x:t.x,y:t.y*(1-uLt)+e.y*uLt}),n.push({x:e.x,y:t.y*(1-uLt)+e.y*uLt}),n.push(e);var r=[["M",t.x,t.y]];return(0,tOt.S6)(n,(function(t){r.push(["L",t.x,t.y])})),r}(r[0],r[1]));return e.addShape("path",{attrs:(0,QCt.pi)((0,QCt.pi)({},n),{path:i})})},getMarker:function(t){return{symbol:"circle",style:{r:4.5,fill:t.color}}}}),JZt("interval","funnel",{getPoints:function(t){return t.size=2*t.size,BRt(t)},draw:function(t,e){var n=PFt(t,!1,!0),r=this.parsePath(WRt(t.points,t.nextPoints,!1));return e.addShape("path",{attrs:(0,QCt.pi)((0,QCt.pi)({},n),{path:r}),name:"interval"})},getMarker:function(t){return{symbol:"square",style:{r:4,fill:t.color}}}}),JZt("interval","hollow-rect",{draw:function(t,e){var n=PFt(t,!0,!1),r=e,i=null==t?void 0:t.background;if(i){r=e.addGroup();var o=_Ft(t),a=HRt(t,this.parsePoints(t.points),this.coordinate);r.addShape("path",{attrs:(0,QCt.pi)((0,QCt.pi)({},o),{path:a}),capture:!1,zIndex:-1,name:zZt})}var c=this.parsePath(zRt(t.points)),l=r.addShape("path",{attrs:(0,QCt.pi)((0,QCt.pi)({},n),{path:c}),name:"interval"});return i?r:l},getMarker:function(t){var e=t.color;return t.isInPolar?{symbol:"circle",style:{r:4.5,stroke:e,fill:null}}:{symbol:"square",style:{r:4,stroke:e,fill:null}}}}),JZt("interval","line",{getPoints:function(t){return function(t){var e=t.x,n=t.y,r=t.y0;return(0,tOt.kJ)(n)?n.map((function(t,n){return{x:(0,tOt.kJ)(e)?e[n]:e,y:t}})):[{x:e,y:r},{x:e,y:n}]}(t)},draw:function(t,e){var n=PFt(t,!0,!1,"lineWidth"),r=pDt((0,QCt.pi)({},n),["fill"]),i=this.parsePath(zRt(t.points,!1));return e.addShape("path",{attrs:(0,QCt.pi)((0,QCt.pi)({},r),{path:i}),name:"interval"})},getMarker:function(t){return{symbol:function(t,e,n){return[["M",t,e-n],["L",t,e+n]]},style:{r:5,stroke:t.color}}}}),JZt("interval","pyramid",{getPoints:function(t){return t.size=2*t.size,BRt(t)},draw:function(t,e){var n=PFt(t,!1,!0),r=this.parsePath(WRt(t.points,t.nextPoints,!0));return e.addShape("path",{attrs:(0,QCt.pi)((0,QCt.pi)({},n),{path:r}),name:"interval"})},getMarker:function(t){return{symbol:"square",style:{r:4,fill:t.color}}}}),JZt("interval","tick",{getPoints:function(t){return function(t){var e,n,r,i=t.x,o=t.y,a=t.y0,c=t.size;(0,tOt.kJ)(o)?(n=(e=(0,QCt.CR)(o,2))[0],r=e[1]):(n=a,r=o);var l=i+c/2,u=i-c/2;return[{x:i,y:n},{x:i,y:r},{x:u,y:n},{x:l,y:n},{x:u,y:r},{x:l,y:r}]}(t)},draw:function(t,e){var n=PFt(t,!0,!1),r=this.parsePath(function(t){return[["M",t[0].x,t[0].y],["L",t[1].x,t[1].y],["M",t[2].x,t[2].y],["L",t[3].x,t[3].y],["M",t[4].x,t[4].y],["L",t[5].x,t[5].y]]}(t.points));return e.addShape("path",{attrs:(0,QCt.pi)((0,QCt.pi)({},n),{path:r}),name:"interval"})},getMarker:function(t){return{symbol:function(t,e,n){return[["M",t-n/2,e-n],["L",t+n/2,e-n],["M",t,e-n],["L",t,e+n],["M",t-n/2,e+n],["L",t+n/2,e+n]]},style:{r:5,stroke:t.color}}}});var sLt=function(t,e,n){var r,i=t.x,o=t.y,a=e.x,c=e.y;switch(n){case"hv":r=[{x:a,y:o}];break;case"vh":r=[{x:i,y:c}];break;case"hvh":var l=(a+i)/2;r=[{x:l,y:o},{x:l,y:c}];break;case"vhv":var u=(o+c)/2;r=[{x:i,y:u},{x:a,y:u}]}return r};function fLt(t,e){var n=EFt(t.points,t.connectNulls,t.showSinglePoint),r=[];return(0,tOt.S6)(n,(function(t){var n=function(t,e){var n=[];return(0,tOt.S6)(t,(function(r,i){var o=t[i+1];if(n.push(r),o){var a=sLt(r,o,e);n=n.concat(a)}})),n}(t,e);r=r.concat(function(t){return t.map((function(t,e){return 0===e?["M",t.x,t.y]:["L",t.x,t.y]}))}(n))})),(0,QCt.pi)((0,QCt.pi)({},PFt(t,!0,!1,"lineWidth")),{path:r})}function hLt(t){var e=(0,tOt.kJ)(t)?t:[t],n=e[0],r=e[e.length-1],i=e.length>1?e[1]:n;return{min:n,max:r,min1:i,max1:e.length>3?e[3]:r,median:e.length>2?e[2]:i}}function dLt(t,e,n){var r,i=n/2;if((0,tOt.kJ)(e)){var o=hLt(e),a=o.min,c=o.max,l=o.median,u=o.min1,s=t-i,f=t+i;r=[[s,c],[f,c],[t,c],[t,h=o.max1],[s,u],[s,h],[f,h],[f,u],[t,u],[t,a],[s,a],[f,a],[s,l],[f,l]]}else{e=(0,tOt.UM)(e)?.5:e;var h,d=hLt(t),p=(a=d.min,c=d.max,l=d.median,e-i),v=e+i;r=[[a,p],[a,v],[a,e],[u=d.min1,e],[u,p],[u,v],[h=d.max1,v],[h,p],[h,e],[c,e],[c,p],[c,v],[l,p],[l,v]]}return r.map((function(t){return{x:t[0],y:t[1]}}))}function pLt(t){var e=((0,tOt.kJ)(t)?t:[t]).sort((function(t,e){return e-t}));return function(t,e,n){if((0,tOt.HD)(t))return t.padEnd(e,n);if((0,tOt.kJ)(t)){var r=t.length;if(r1){var c=e.addGroup();try{for(var l=(0,QCt.XA)(o),u=l.next();!u.done;u=l.next()){var s=u.value;c.addShape("image",{attrs:{x:s.x-i/2,y:s.y-i,width:i,height:i,img:t.shape[1]}})}}catch(f){n={error:f}}finally{try{u&&!u.done&&(r=l.return)&&r.call(l)}finally{if(n)throw n.error}}return c}return e.addShape("image",{attrs:{x:a.x-i/2,y:a.y-i,width:i,height:i,img:t.shape[1]}})},getMarker:function(t){return{symbol:"circle",style:{r:4.5,fill:t.color}}}}),(0,tOt.S6)(KRt,(function(t){JZt("point",t,{draw:function(e,n){return JRt(this,e,n,t,!1)},getMarker:function(e){var n=e.color;return{symbol:yFt[t]||t,style:{r:4.5,fill:n}}}})})),JZt("schema","box",{getPoints:function(t){return dLt(t.x,t.y,t.size)},draw:function(t,e){var n=PFt(t,!0,!1),r=this.parsePath(function(t){return[["M",t[0].x,t[0].y],["L",t[1].x,t[1].y],["M",t[2].x,t[2].y],["L",t[3].x,t[3].y],["M",t[4].x,t[4].y],["L",t[5].x,t[5].y],["L",t[6].x,t[6].y],["L",t[7].x,t[7].y],["L",t[4].x,t[4].y],["Z"],["M",t[8].x,t[8].y],["L",t[9].x,t[9].y],["M",t[10].x,t[10].y],["L",t[11].x,t[11].y],["M",t[12].x,t[12].y],["L",t[13].x,t[13].y]]}(t.points));return e.addShape("path",{attrs:(0,QCt.pi)((0,QCt.pi)({},n),{path:r,name:"schema"})})},getMarker:function(t){return{symbol:function(t,e,n){var r=dLt(t,[e-6,e-3,e,e+3,e+6],n);return[["M",r[0].x+1,r[0].y],["L",r[1].x-1,r[1].y],["M",r[2].x,r[2].y],["L",r[3].x,r[3].y],["M",r[4].x,r[4].y],["L",r[5].x,r[5].y],["L",r[6].x,r[6].y],["L",r[7].x,r[7].y],["L",r[4].x,r[4].y],["Z"],["M",r[8].x,r[8].y],["L",r[9].x,r[9].y],["M",r[10].x+1,r[10].y],["L",r[11].x-1,r[11].y],["M",r[12].x,r[12].y],["L",r[13].x,r[13].y]]},style:{r:6,lineWidth:1,stroke:t.color}}}}),JZt("schema","candle",{getPoints:function(t){return vLt(t.x,t.y,t.size)},draw:function(t,e){var n=PFt(t,!0,!0),r=this.parsePath(function(t){return[["M",t[0].x,t[0].y],["L",t[1].x,t[1].y],["M",t[2].x,t[2].y],["L",t[3].x,t[3].y],["L",t[4].x,t[4].y],["L",t[5].x,t[5].y],["Z"],["M",t[6].x,t[6].y],["L",t[7].x,t[7].y]]}(t.points));return e.addShape("path",{attrs:(0,QCt.pi)((0,QCt.pi)({},n),{path:r,name:"schema"})})},getMarker:function(t){var e=t.color;return{symbol:function(t,e,n){var r=vLt(t,[e+7.5,e+3,e-3,e-7.5],n);return[["M",r[0].x,r[0].y],["L",r[1].x,r[1].y],["M",r[2].x,r[2].y],["L",r[3].x,r[3].y],["L",r[4].x,r[4].y],["L",r[5].x,r[5].y],["Z"],["M",r[6].x,r[6].y],["L",r[7].x,r[7].y]]},style:{lineWidth:1,stroke:e,fill:e,r:6}}}}),JZt("polygon","square",{draw:function(t,e){if(!(0,tOt.xb)(t.points)){var n=PFt(t,!0,!0),r=this.parsePoints(t.points);return e.addShape("rect",{attrs:(0,QCt.pi)((0,QCt.pi)({},n),gLt(r,t.size)),name:"polygon"})}},getMarker:function(t){return{symbol:"square",style:{r:4,fill:t.color}}}}),JZt("violin","smooth",{draw:function(t,e){var n=PFt(t,!0,!0),r=this.parsePath(AFt(t.points));return e.addShape("path",{attrs:(0,QCt.pi)((0,QCt.pi)({},n),{path:r})})},getMarker:function(t){return{symbol:"circle",style:{stroke:null,r:4,fill:t.color}}}}),JZt("violin","hollow",{draw:function(t,e){var n=PFt(t,!0,!1),r=this.parsePath(MFt(t.points));return e.addShape("path",{attrs:(0,QCt.pi)((0,QCt.pi)({},n),{path:r})})},getMarker:function(t){return{symbol:"circle",style:{r:4,fill:null,stroke:t.color}}}}),JZt("violin","hollow-smooth",{draw:function(t,e){var n=PFt(t,!0,!1),r=this.parsePath(AFt(t.points));return e.addShape("path",{attrs:(0,QCt.pi)((0,QCt.pi)({},n),{path:r})})},getMarker:function(t){return{symbol:"circle",style:{r:4,fill:null,stroke:t.color}}}});var mLt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getLabelValueDir=function(t){var e=t.points;return e[0].y<=e[2].y?1:-1},e.prototype.getLabelOffsetPoint=function(e,n,r,i){var o,a=t.prototype.getLabelOffsetPoint.call(this,e,n,r),c=this.getCoordinate(),l=c.isTransposed?"x":"y",u=this.getLabelValueDir(e.mappingData);return a=(0,QCt.pi)((0,QCt.pi)({},a),((o={})[l]=a[l]*u,o)),c.isReflect("x")&&(a=(0,QCt.pi)((0,QCt.pi)({},a),{x:-1*a.x})),c.isReflect("y")&&(a=(0,QCt.pi)((0,QCt.pi)({},a),{y:-1*a.y})),a},e.prototype.getThemedLabelCfg=function(t){var e=this.geometry,n=this.getDefaultLabelCfg(),r=e.theme;return(0,tOt.b$)({},n,r.labels,"middle"===t.position?{offset:0}:{},t)},e.prototype.setLabelPosition=function(t,e,n,r){var i,o,a,c,l=this.getCoordinate(),u=l.isTransposed,s=e.points,f=l.convert(s[0]),h=l.convert(s[2]),d=this.getLabelValueDir(e),p=(0,tOt.kJ)(e.shape)?e.shape[0]:e.shape;if("funnel"===p||"pyramid"===p){var v=(0,tOt.U2)(e,"nextPoints"),g=(0,tOt.U2)(e,"points");if(v){var m=l.convert(g[0]),y=l.convert(g[1]),b=l.convert(v[0]),x=l.convert(v[1]);u?(i=Math.min(b.y,m.y),a=Math.max(b.y,m.y),o=(y.x+x.x)/2,c=(m.x+b.x)/2):(i=Math.min((y.y+x.y)/2,(m.y+b.y)/2),a=Math.max((y.y+x.y)/2,(m.y+b.y)/2),o=x.x,c=m.x)}else i=Math.min(h.y,f.y),a=Math.max(h.y,f.y),o=h.x,c=f.x}else i=Math.min(h.y,f.y),a=Math.max(h.y,f.y),o=h.x,c=f.x;switch(r){case"right":t.x=o,t.y=(i+a)/2,t.textAlign=(0,tOt.U2)(t,"textAlign",d>0?"left":"right");break;case"left":t.x=c,t.y=(i+a)/2,t.textAlign=(0,tOt.U2)(t,"textAlign",d>0?"left":"right");break;case"bottom":u&&(t.x=(o+c)/2),t.y=a,t.textAlign=(0,tOt.U2)(t,"textAlign","center"),t.textBaseline=(0,tOt.U2)(t,"textBaseline",d>0?"bottom":"top");break;case"middle":u&&(t.x=(o+c)/2),t.y=(i+a)/2,t.textAlign=(0,tOt.U2)(t,"textAlign","center"),t.textBaseline=(0,tOt.U2)(t,"textBaseline","middle");break;case"top":u&&(t.x=(o+c)/2),t.y=i,t.textAlign=(0,tOt.U2)(t,"textAlign","center"),t.textBaseline=(0,tOt.U2)(t,"textBaseline",d>0?"bottom":"top")}},e}(gFt),yLt=mLt,bLt=Math.PI/2,xLt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getLabelOffset=function(t){var e=this.getCoordinate(),n=0;if((0,tOt.hj)(t))n=t;else if((0,tOt.HD)(t)&&-1!==t.indexOf("%")){var r=e.getRadius();e.innerRadius>0&&(r*=1-e.innerRadius),n=.01*parseFloat(t)*r}return n},e.prototype.getLabelItems=function(e){var n=t.prototype.getLabelItems.call(this,e),r=this.geometry.getYScale();return(0,tOt.UI)(n,(function(t){if(t&&r){var e=r.scale((0,tOt.U2)(t.data,r.field));return(0,QCt.pi)((0,QCt.pi)({},t),{percent:e})}return t}))},e.prototype.getLabelAlign=function(t){var e,n=this.getCoordinate();if(t.labelEmit)e=t.angle<=Math.PI/2&&t.angle>=-Math.PI/2?"left":"right";else if(n.isTransposed){var r=n.getCenter(),i=t.offset;e=Math.abs(t.x-r.x)<1?"center":t.angle>Math.PI||t.angle<=0?i>0?"left":"right":i>0?"right":"left"}else e="center";return e},e.prototype.getLabelPoint=function(t,e,n){var r,i=1,o=t.content[n];this.isToMiddle(e)?r=this.getMiddlePoint(e.points):(1===t.content.length&&0===n?n=1:0===n&&(i=-1),r=this.getArcPoint(e,n));var a=t.offset*i,c=this.getPointAngle(r),l=t.labelEmit,u=this.getCirclePoint(c,a,r,l);return 0===u.r?u.content="":(u.content=o,u.angle=c,u.color=e.color),u.rotate=t.autoRotate?this.getLabelRotate(c,a,l):t.rotate,u.start={x:r.x,y:r.y},u},e.prototype.getArcPoint=function(t,e){return void 0===e&&(e=0),(0,tOt.kJ)(t.x)||(0,tOt.kJ)(t.y)?{x:(0,tOt.kJ)(t.x)?t.x[e]:t.x,y:(0,tOt.kJ)(t.y)?t.y[e]:t.y}:{x:t.x,y:t.y}},e.prototype.getPointAngle=function(t){return bDt(this.getCoordinate(),t)},e.prototype.getCirclePoint=function(t,e,n,r){var i=this.getCoordinate(),o=i.getCenter(),a=yDt(i,n);if(0===a)return(0,QCt.pi)((0,QCt.pi)({},o),{r:a});var c=t;i.isTransposed&&a>e&&!r?c=t+2*Math.asin(e/(2*a)):a+=e;return{x:o.x+a*Math.cos(c),y:o.y+a*Math.sin(c),r:a}},e.prototype.getLabelRotate=function(t,e,n){var r=t+bLt;return n&&(r-=bLt),r&&(r>bLt?r-=Math.PI:r<-bLt&&(r+=Math.PI)),r},e.prototype.getMiddlePoint=function(t){var e=this.getCoordinate(),n=t.length,r={x:0,y:0};return(0,tOt.S6)(t,(function(t){r.x+=t.x,r.y+=t.y})),r.x/=n,r.y/=n,r=e.convert(r)},e.prototype.isToMiddle=function(t){return t.x.length>2},e}(gFt),wLt=xLt,SLt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.defaultLayout="distribute",e}return(0,QCt.ZT)(e,t),e.prototype.getDefaultLabelCfg=function(e,n){var r=t.prototype.getDefaultLabelCfg.call(this,e,n);return(0,tOt.b$)({},r,(0,tOt.U2)(this.geometry.theme,"pieLabels",{}))},e.prototype.getLabelOffset=function(e){return t.prototype.getLabelOffset.call(this,e)||0},e.prototype.getLabelRotate=function(t,e,n){var r;return e<0&&((r=t)>Math.PI/2&&(r-=Math.PI),r<-Math.PI/2&&(r+=Math.PI)),r},e.prototype.getLabelAlign=function(t){var e,n=this.getCoordinate().getCenter();return e=t.angle<=Math.PI/2&&t.x>=n.x?"left":"right",t.offset<=0&&(e="right"===e?"left":"right"),e},e.prototype.getArcPoint=function(t){return t},e.prototype.getPointAngle=function(t){var e,n=this.getCoordinate(),r={x:(0,tOt.kJ)(t.x)?t.x[0]:t.x,y:t.y[0]},i={x:(0,tOt.kJ)(t.x)?t.x[1]:t.x,y:t.y[1]},o=bDt(n,r);if(t.points&&t.points[0].y===t.points[1].y)e=o;else{var a=bDt(n,i);o>=a&&(a+=2*Math.PI),e=o+(a-o)/2}return e},e.prototype.getCirclePoint=function(t,e){var n=this.getCoordinate(),r=n.getCenter(),i=n.getRadius()+e;return(0,QCt.pi)((0,QCt.pi)({},lDt(r.x,r.y,i,t)),{angle:t,r:i})},e}(wLt),kLt=SLt;function CLt(t,e,n){var r=t.filter((function(t){return!t.invisible}));r.sort((function(t,e){return t.y-e.y}));var i,o=!0,a=n.minY,c=n.maxY,l=Math.abs(a-c),u=0,s=Number.MIN_VALUE,f=r.map((function(t){return t.y>u&&(u=t.y),t.yl&&(l=u-a);o;)for(f.forEach((function(t){var e=(Math.min.apply(s,t.targets)+Math.max.apply(s,t.targets))/2;t.pos=Math.min(Math.max(s,e-t.size/2),l-t.size),t.pos=Math.max(0,t.pos)})),o=!1,i=f.length;i--;)if(i>0){var h=f[i-1],d=f[i];h.pos+h.size>d.pos&&(h.size+=d.size,h.targets=h.targets.concat(d.targets),h.pos+h.size>l&&(h.pos=l-h.size),f.splice(i,1),o=!0)}i=0,f.forEach((function(t){var n=a+e/2;t.targets.forEach((function(){r[i].y=t.pos+n,n+=e,i++}))}))}var OLt=4;var ELt=4,MLt=4;var ALt=100,PLt=function(){function t(t){void 0===t&&(t={}),this.bitmap={};var e=t.xGap,n=void 0===e?1:e,r=t.yGap,i=void 0===r?8:r;this.xGap=n,this.yGap=i}return t.prototype.hasGap=function(t){for(var e=!0,n=this.bitmap,r=Math.round(t.minX),i=Math.round(t.maxX),o=Math.round(t.minY),a=Math.round(t.maxY),c=r;c<=i;c+=1)if(n[c]){if(c===r||c===i){for(var l=o;l<=a;l++)if(n[c][l]){e=!1;break}}else if(n[c][o]||n[c][a]){e=!1;break}}else n[c]={};return e},t.prototype.fillGap=function(t){for(var e=this.bitmap,n=Math.round(t.minX),r=Math.round(t.maxX),i=Math.round(t.minY),o=Math.round(t.maxY),a=n;a<=r;a+=1)e[a]||(e[a]={});for(a=n;a<=r;a+=this.xGap){for(var c=i;c<=o;c+=this.yGap)e[a][c]=!0;e[a][o]=!0}if(1!==this.yGap)for(a=i;a<=o;a+=1)e[n][a]=!0,e[r][a]=!0;if(1!==this.xGap)for(a=n;a<=r;a+=1)e[a][i]=!0,e[a][o]=!0},t.prototype.destroy=function(){this.bitmap={}},t}();function _Lt(t,e,n,r){var i=t.getCanvasBBox(),o=i.width,a=i.height,c={x:e,y:n,textAlign:"center"};switch(r){case 0:c.y-=a+1,c.x+=1,c.textAlign="left";break;case 1:c.y-=a+1,c.x-=1,c.textAlign="right";break;case 2:c.y+=a+1,c.x-=1,c.textAlign="right";break;case 3:c.y+=a+1,c.x+=1,c.textAlign="left";break;case 5:c.y-=2*a+2;break;case 6:c.y+=2*a+2;break;case 7:c.x+=o+1,c.textAlign="left";break;case 8:c.x-=o+1,c.textAlign="right"}return t.attr(c),t.getCanvasBBox()}function DLt(t){if(t.length>4)return[];var e=function(t,e){return[e.x-t.x,e.y-t.y]};return[e(t[0],t[1]),e(t[1],t[2])]}function TLt(t,e,n){void 0===e&&(e=0),void 0===n&&(n={x:0,y:0});var r=t.x,i=t.y;return{x:(r-n.x)*Math.cos(-e)+(i-n.y)*Math.sin(-e)+n.x,y:(n.x-r)*Math.sin(-e)+(i-n.y)*Math.cos(-e)+n.y}}function ZLt(t){var e=[{x:t.x,y:t.y},{x:t.x+t.width,y:t.y},{x:t.x+t.width,y:t.y+t.height},{x:t.x,y:t.y+t.height}],n=t.rotation;return n?[TLt(e[0],n,e[0]),TLt(e[1],n,e[0]),TLt(e[2],n,e[0]),TLt(e[3],n,e[0])]:e}function FLt(t,e){if(t.length>4)return{min:0,max:0};var n=[];return t.forEach((function(t){n.push(function(t,e){return(t[0]||0)*(e[0]||0)+(t[1]||0)*(e[1]||0)+(t[2]||0)*(e[2]||0)}([t.x,t.y],e))})),{min:Math.min.apply(Math,(0,QCt.ev)([],(0,QCt.CR)(n),!1)),max:Math.max.apply(Math,(0,QCt.ev)([],(0,QCt.CR)(n),!1))}}function jLt(t,e){return t.max>e.min&&t.mint.x+t.width+n||e.x+e.widtht.y+t.height+n||e.y+e.height4)return[];var e=function(t,e){return[e.x-t.x,e.y-t.y]};return[e(t[0],t[1]),e(t[1],t[2])]}function e(t,e,n){void 0===e&&(e=0),void 0===n&&(n={x:0,y:0});var r=t.x,i=t.y;return{x:(r-n.x)*Math.cos(-e)+(i-n.y)*Math.sin(-e)+n.x,y:(n.x-r)*Math.sin(-e)+(i-n.y)*Math.cos(-e)+n.y}}function n(t){var n=[{x:t.x,y:t.y},{x:t.x+t.width,y:t.y},{x:t.x+t.width,y:t.y+t.height},{x:t.x,y:t.y+t.height}],r=t.rotation;return r?[e(n[0],r,n[0]),e(n[1],r,n[0]),e(n[2],r,n[0]),e(n[3],r,n[0])]:n}function r(t,e){if(t.length>4)return{min:0,max:0};var n=[];return t.forEach((function(t){n.push(function(t,e){return(t[0]||0)*(e[0]||0)+(t[1]||0)*(e[1]||0)+(t[2]||0)*(e[2]||0)}([t.x,t.y],e))})),{min:Math.min.apply(null,n),max:Math.max.apply(null,n)}}function i(t,e){return t.max>e.min&&t.mint.x+t.width+n||e.x+e.widtht.y+t.height+n||e.y+e.height=o.height:a.width>=o.width}(t,e,i)}))}function GLt(t,e,n){return t.some((function(t){return n(t,e)}))}function XLt(t,e){return GLt(t,e,(function(t,e){var n=lFt(t),r=lFt(e);return function(t,e,n){return void 0===n&&(n=0),Math.max(0,Math.min(t.x+t.width+n,e.x+e.width+n)-Math.max(t.x-n,e.x-n))*Math.max(0,Math.min(t.y+t.height+n,e.y+e.height+n)-Math.max(t.y-n,e.y-n))}(n.getCanvasBBox(),r.getCanvasBBox(),2)>0}))}function qLt(t,e,n){return t.some((function(t){return n(t,e)}))}function YLt(t,e){return qLt(t,e,(function(t,e){var n=lFt(t),r=lFt(e);return function(t,e,n){return void 0===n&&(n=0),Math.max(0,Math.min(t.x+t.width+n,e.x+e.width+n)-Math.max(t.x-n,e.x-n))*Math.max(0,Math.min(t.y+t.height+n,e.y+e.height+n)-Math.max(t.y-n,e.y-n))}(n.getCanvasBBox(),r.getCanvasBBox(),2)>0}))}function $Lt(){return HLt||(HLt=document.createElement("canvas").getContext("2d")),HLt}var KLt=(0,tOt.HP)((function(t,e){void 0===e&&(e={});var n=e.fontSize,r=e.fontFamily,i=e.fontWeight,o=e.fontStyle,a=e.fontVariant,c=$Lt();return c.font=[o,a,i,"".concat(n,"px"),r].join(" "),c.measureText((0,tOt.HD)(t)?t:"").width}),(function(t,e){return void 0===e&&(e={}),(0,QCt.ev)([t],(0,QCt.CR)((0,tOt.VO)(e)),!1).join("")}));function JLt(t,e,n,r,i){var o,a,c=n.start,l=n.end,u=n.getWidth(),s=n.getHeight();"y"===i?(o=c.x+u/2,a=r.yc.x?r.x:c.x,a=c.y+s/2):"xy"===i&&(n.isPolar?(o=n.getCenter().x,a=n.getCenter().y):(o=(c.x+l.x)/2,a=(c.y+l.y)/2));var f=function(t,e,n){var r,i=(0,QCt.CR)(e,2),o=i[0],a=i[1];return t.applyToMatrix([o,a,1]),"x"===n?(t.setMatrix(rAt.vs(t.getMatrix(),[["t",-o,-a],["s",.01,1],["t",o,a]])),r=rAt.vs(t.getMatrix(),[["t",-o,-a],["s",100,1],["t",o,a]])):"y"===n?(t.setMatrix(rAt.vs(t.getMatrix(),[["t",-o,-a],["s",1,.01],["t",o,a]])),r=rAt.vs(t.getMatrix(),[["t",-o,-a],["s",1,100],["t",o,a]])):"xy"===n&&(t.setMatrix(rAt.vs(t.getMatrix(),[["t",-o,-a],["s",.01,.01],["t",o,a]])),r=rAt.vs(t.getMatrix(),[["t",-o,-a],["s",100,100],["t",o,a]])),r}(t,[o,a],i);t.animate({matrix:f},e)}function QLt(t,e){var n,r=ujt(t,e),i=r.startAngle,o=r.endAngle;return!(0,tOt.vQ)(i,.5*-Math.PI)&&i<.5*-Math.PI&&(i+=2*Math.PI),!(0,tOt.vQ)(o,.5*-Math.PI)&&o<.5*-Math.PI&&(o+=2*Math.PI),0===e[5]&&(i=(n=(0,QCt.CR)([o,i],2))[0],o=n[1]),(0,tOt.vQ)(i,1.5*Math.PI)&&(i=-.5*Math.PI),(0,tOt.vQ)(o,-.5*Math.PI)&&!(0,tOt.vQ)(i,o)&&(o=1.5*Math.PI),{startAngle:i,endAngle:o}}function tNt(t){var e;return"M"===t[0]||"L"===t[0]?e=[t[1],t[2]]:"a"!==t[0]&&"A"!==t[0]&&"C"!==t[0]||(e=[t[t.length-2],t[t.length-1]]),e}function eNt(t){var e,n,r,i=t.filter((function(t){return"A"===t[0]||"a"===t[0]}));if(0===i.length)return{startAngle:0,endAngle:0,radius:0,innerRadius:0};var o=i[0],a=i.length>1?i[1]:i[0],c=t.indexOf(o),l=t.indexOf(a),u=tNt(t[c-1]),s=tNt(t[l-1]),f=QLt(u,o),h=f.startAngle,d=f.endAngle,p=QLt(s,a),v=p.startAngle,g=p.endAngle;(0,tOt.vQ)(h,v)&&(0,tOt.vQ)(d,g)?(n=h,r=d):(n=Math.min(h,v),r=Math.max(d,g));var m=o[1],y=i[i.length-1][1];return m=0;a--){var c=this.getFacetsByLevel(t,a);try{for(var l=(e=void 0,(0,QCt.XA)(c)),u=l.next();!u.done;u=l.next()){var s=u.value;this.isLeaf(s)||(s.originColIndex=s.columnIndex,s.columnIndex=this.getRegionIndex(s.children),s.columnValuesLength=i.length)}}catch(f){e={error:f}}finally{try{u&&!u.done&&(n=l.return)&&n.call(l)}finally{if(e)throw e.error}}}},e.prototype.getFacetsByLevel=function(t,e){var n=[];return t.forEach((function(t){t.rowIndex===e&&n.push(t)})),n},e.prototype.getRegionIndex=function(t){var e=t[0];return(t[t.length-1].columnIndex-e.columnIndex)/2+e.columnIndex},e.prototype.isLeaf=function(t){return!t.children||!t.children.length},e.prototype.getRows=function(){return this.cfg.fields.length+1},e.prototype.getChildFacets=function(t,e,n){var r=this,i=this.cfg.fields;if(!(i.length=n){var i=r.parsePosition([t[c],t[a.field]]);i&&f.push(i)}if(t[c]===s)return!1})),f},e.prototype.parsePercentPosition=function(t){var e=parseFloat(t[0])/100,n=parseFloat(t[1])/100,r=this.view.getCoordinate(),i=r.start,o=r.end,a=Math.min(i.x,o.x),c=Math.min(i.y,o.y);return{x:r.getWidth()*e+a,y:r.getHeight()*n+c}},e.prototype.getCoordinateBBox=function(){var t=this.view.getCoordinate(),e=t.start,n=t.end,r=t.getWidth(),i=t.getHeight(),o={x:Math.min(e.x,n.x),y:Math.min(e.y,n.y)};return{x:o.x,y:o.y,minX:o.x,minY:o.y,maxX:o.x+r,maxY:o.y+i,width:r,height:i}},e.prototype.getAnnotationCfg=function(t,e,n){var r=this,i=this.view.getCoordinate(),o=this.view.getCanvas(),a={};if((0,tOt.UM)(e))return null;var c=e.start,l=e.end,u=e.position,s=this.parsePosition(c),f=this.parsePosition(l),h=this.parsePosition(u);if(!(!["arc","image","line","region","regionFilter"].includes(t)||s&&f))return null;if(["text","dataMarker","html"].includes(t)&&!h)return null;if("arc"===t){var d=e,p=(d.start,d.end,(0,QCt._T)(d,["start","end"])),v=bDt(i,s),g=bDt(i,f);v>g&&(g=2*Math.PI+g),a=(0,QCt.pi)((0,QCt.pi)({},p),{center:i.getCenter(),radius:yDt(i,s),startAngle:v,endAngle:g})}else if("image"===t){var m=e;m.start,m.end,p=(0,QCt._T)(m,["start","end"]);a=(0,QCt.pi)((0,QCt.pi)({},p),{start:s,end:f,src:e.src})}else if("line"===t){var y=e;y.start,y.end,p=(0,QCt._T)(y,["start","end"]);a=(0,QCt.pi)((0,QCt.pi)({},p),{start:s,end:f,text:(0,tOt.U2)(e,"text",null)})}else if("region"===t){var b=e;b.start,b.end,p=(0,QCt._T)(b,["start","end"]);a=(0,QCt.pi)((0,QCt.pi)({},p),{start:s,end:f})}else if("text"===t){var x=this.view.getData(),w=e,S=(w.position,w.content),k=(p=(0,QCt._T)(w,["position","content"]),S);(0,tOt.mf)(S)&&(k=S(x)),a=(0,QCt.pi)((0,QCt.pi)((0,QCt.pi)({},h),p),{content:k})}else if("dataMarker"===t){var C=e,O=(C.position,C.point),E=C.line,M=C.text,A=C.autoAdjust,P=C.direction;p=(0,QCt._T)(C,["position","point","line","text","autoAdjust","direction"]);a=(0,QCt.pi)((0,QCt.pi)((0,QCt.pi)({},p),h),{coordinateBBox:this.getCoordinateBBox(),point:O,line:E,text:M,autoAdjust:A,direction:P})}else if("dataRegion"===t){var _=e,D=_.start,T=_.end,Z=_.region,F=(M=_.text,_.lineLength);p=(0,QCt._T)(_,["start","end","region","text","lineLength"]);a=(0,QCt.pi)((0,QCt.pi)({},p),{points:this.getRegionPoints(D,T),region:Z,text:M,lineLength:F})}else if("regionFilter"===t){var j=e,I=(j.start,j.end,j.apply),R=j.color,L=(p=(0,QCt._T)(j,["start","end","apply","color"]),this.view.geometries),N=[],B=function t(e){e&&(e.isGroup()?e.getChildren().forEach((function(e){return t(e)})):N.push(e))};(0,tOt.S6)(L,(function(t){I?(0,tOt.FX)(I,t.type)&&(0,tOt.S6)(t.elements,(function(t){B(t.shape)})):(0,tOt.S6)(t.elements,(function(t){B(t.shape)}))})),a=(0,QCt.pi)((0,QCt.pi)({},p),{color:R,shapes:N,start:s,end:f})}else if("shape"===t){var z=e,U=z.render,H=(0,QCt._T)(z,["render"]);a=(0,QCt.pi)((0,QCt.pi)({},H),{render:function(t){if((0,tOt.mf)(e.render))return U(t,r.view,{parsePosition:r.parsePosition.bind(r)})}})}else if("html"===t){var W=e,V=W.html;W.position,H=(0,QCt._T)(W,["html","position"]);a=(0,QCt.pi)((0,QCt.pi)((0,QCt.pi)({},H),h),{parent:o.get("el").parentNode,html:function(t){return(0,tOt.mf)(V)?V(t,r.view):V}})}var G=(0,tOt.b$)({},n,(0,QCt.pi)((0,QCt.pi)({},a),{top:e.top,style:e.style,offsetX:e.offsetX,offsetY:e.offsetY}));return"html"!==t&&(G.container=this.getComponentContainer(G)),G.animate=this.view.getOptions().animate&&G.animate&&(0,tOt.U2)(e,"animate",G.animate),G.animateOption=(0,tOt.b$)({},IZt,G.animateOption,e.animateOption),G},e.prototype.isTop=function(t){return(0,tOt.U2)(t,"top",!0)},e.prototype.getComponentContainer=function(t){return this.isTop(t)?this.foregroundContainer:this.backgroundContainer},e.prototype.getAnnotationTheme=function(t){return(0,tOt.U2)(this.view.getTheme(),["components","annotation",t],{})},e.prototype.updateOrCreate=function(t){var e=this.cache.get(this.getCacheKey(t));if(e){var n=t.type,r=this.getAnnotationTheme(n),i=this.getAnnotationCfg(n,t,r);i&&pDt(i,["container"]),e.component.update((0,QCt.pi)((0,QCt.pi)({},i||{}),{visible:!!i})),(0,tOt.q9)(bNt,t.type)&&e.component.render()}else(e=this.createAnnotation(t))&&(e.component.init(),(0,tOt.q9)(bNt,t.type)&&e.component.render());return e},e.prototype.syncCache=function(t){var e=this,n=new Map(this.cache);return t.forEach((function(t,e){n.set(e,t)})),n.forEach((function(t,r){(0,tOt.sE)(e.option,(function(t){return r===e.getCacheKey(t)}))||(t.component.destroy(),n.delete(r))})),n},e.prototype.getCacheKey=function(t){return t},e}(_Zt),wNt=xNt;function SNt(t,e){var n=(0,tOt.b$)({},(0,tOt.U2)(t,["components","axis","common"]),(0,tOt.U2)(t,["components","axis",e]));return(0,tOt.U2)(n,["grid"],{})}function kNt(t,e,n,r){var i=[],o=e.getTicks();return t.isPolar&&o.push({value:1,text:"",tickValue:""}),o.reduce((function(e,o,a){var c=o.value;if(r)i.push({points:[t.convert("y"===n?{x:0,y:c}:{x:c,y:0}),t.convert("y"===n?{x:1,y:c}:{x:c,y:1})]});else if(a){var l=(e.value+c)/2;i.push({points:[t.convert("y"===n?{x:0,y:l}:{x:l,y:0}),t.convert("y"===n?{x:1,y:l}:{x:l,y:1})]})}return o}),o[0]),i}function CNt(t,e,n,r,i){var o=e.values.length,a=[],c=n.getTicks();return c.reduce((function(e,n){var c=e?e.value:n.value,l=n.value,u=(c+l)/2;return"x"===i?a.push({points:[t.convert({x:r?l:u,y:0}),t.convert({x:r?l:u,y:1})]}):a.push({points:(0,tOt.UI)(Array(o+1),(function(e,n){return t.convert({x:n/o,y:r?l:u})}))}),n}),c[0]),a}function ONt(t,e){var n=(0,tOt.U2)(e,"grid");if(null===n)return!1;var r=(0,tOt.U2)(t,"grid");return!(void 0===n&&null===r)}var ENt=["container"],MNt=(0,QCt.pi)((0,QCt.pi)({},IZt),{appear:null}),ANt=function(t){function e(e){var n=t.call(this,e)||this;return n.cache=new Map,n.gridContainer=n.view.getLayer(YCt.BG).addGroup(),n.gridForeContainer=n.view.getLayer(YCt.FORE).addGroup(),n.axisContainer=n.view.getLayer(YCt.BG).addGroup(),n.axisForeContainer=n.view.getLayer(YCt.FORE).addGroup(),n}return(0,QCt.ZT)(e,t),Object.defineProperty(e.prototype,"name",{get:function(){return"axis"},enumerable:!1,configurable:!0}),e.prototype.init=function(){},e.prototype.render=function(){this.update()},e.prototype.layout=function(){var t=this,e=this.view.getCoordinate();(0,tOt.S6)(this.getComponents(),(function(n){var r,i=n.component,o=n.direction,a=n.type,c=n.extra,l=c.dim,u=c.scale,s=c.alignTick;if(a===KCt.AXIS)e.isPolar?"x"===l?r=e.isTransposed?MDt(e,o):TDt(e):"y"===l&&(r=e.isTransposed?TDt(e):MDt(e,o)):r=MDt(e,o);else if(a===KCt.GRID)if(e.isPolar){r={items:e.isTransposed?"x"===l?CNt(e,t.view.getYScales()[0],u,s,l):kNt(e,u,l,s):"x"===l?kNt(e,u,l,s):CNt(e,t.view.getXScale(),u,s,l),center:t.view.getCoordinate().getCenter()}}else r={items:kNt(e,u,l,s)};i.update(r)}))},e.prototype.update=function(){this.option=this.view.getOptions().axes;var t=new Map;this.updateXAxes(t),this.updateYAxes(t);var e=new Map;this.cache.forEach((function(n,r){t.has(r)?e.set(r,n):n.component.destroy()})),this.cache=e},e.prototype.clear=function(){t.prototype.clear.call(this),this.cache.clear(),this.gridContainer.clear(),this.gridForeContainer.clear(),this.axisContainer.clear(),this.axisForeContainer.clear()},e.prototype.destroy=function(){t.prototype.destroy.call(this),this.gridContainer.remove(!0),this.gridForeContainer.remove(!0),this.axisContainer.remove(!0),this.axisForeContainer.remove(!0)},e.prototype.getComponents=function(){var t=[];return this.cache.forEach((function(e){t.push(e)})),t},e.prototype.updateXAxes=function(t){var e=this.view.getXScale();if(e&&!e.isIdentity){var n=ZDt(this.option,e.field);if(!1!==n){var r=FDt(n,$Ct.BOTTOM),i=YCt.BG,o="x",a=this.view.getCoordinate(),c=this.getId("axis",e.field),l=this.getId("grid",e.field);if(a.isRect){if(u=this.cache.get(c))pDt(f=this.getLineAxisCfg(e,n,r),ENt),u.component.update(f),t.set(c,u);else u=this.createLineAxis(e,n,i,r,o),this.cache.set(c,u),t.set(c,u);if(s=this.cache.get(l))pDt(f=this.getLineGridCfg(e,n,r,o),ENt),s.component.update(f),t.set(l,s);else(s=this.createLineGrid(e,n,i,r,o))&&(this.cache.set(l,s),t.set(l,s))}else if(a.isPolar){var u,s;if(u=this.cache.get(c)){pDt(f=a.isTransposed?this.getLineAxisCfg(e,n,$Ct.RADIUS):this.getCircleAxisCfg(e,n,r),ENt),u.component.update(f),t.set(c,u)}else{if(a.isTransposed){if((0,tOt.o8)(n))return;u=this.createLineAxis(e,n,i,$Ct.RADIUS,o)}else u=this.createCircleAxis(e,n,i,r,o);this.cache.set(c,u),t.set(c,u)}if(s=this.cache.get(l)){var f;pDt(f=a.isTransposed?this.getCircleGridCfg(e,n,$Ct.RADIUS,o):this.getLineGridCfg(e,n,$Ct.CIRCLE,o),ENt),s.component.update(f),t.set(l,s)}else{if(a.isTransposed){if((0,tOt.o8)(n))return;s=this.createCircleGrid(e,n,i,$Ct.RADIUS,o)}else s=this.createLineGrid(e,n,i,$Ct.CIRCLE,o);s&&(this.cache.set(l,s),t.set(l,s))}}}}},e.prototype.updateYAxes=function(t){var e=this,n=this.view.getYScales();(0,tOt.S6)(n,(function(n,r){if(n&&!n.isIdentity){var i=n.field,o=ZDt(e.option,i);if(!1!==o){var a=YCt.BG,c="y",l=e.getId("axis",i),u=e.getId("grid",i),s=e.view.getCoordinate();if(s.isRect){var f=FDt(o,0===r?$Ct.LEFT:$Ct.RIGHT);if(h=e.cache.get(l))pDt(p=e.getLineAxisCfg(n,o,f),ENt),h.component.update(p),t.set(l,h);else h=e.createLineAxis(n,o,a,f,c),e.cache.set(l,h),t.set(l,h);if(d=e.cache.get(u))pDt(p=e.getLineGridCfg(n,o,f,c),ENt),d.component.update(p),t.set(u,d);else(d=e.createLineGrid(n,o,a,f,c))&&(e.cache.set(u,d),t.set(u,d))}else if(s.isPolar){var h,d;if(h=e.cache.get(l)){pDt(p=s.isTransposed?e.getCircleAxisCfg(n,o,$Ct.CIRCLE):e.getLineAxisCfg(n,o,$Ct.RADIUS),ENt),h.component.update(p),t.set(l,h)}else{if(s.isTransposed){if((0,tOt.o8)(o))return;h=e.createCircleAxis(n,o,a,$Ct.CIRCLE,c)}else h=e.createLineAxis(n,o,a,$Ct.RADIUS,c);e.cache.set(l,h),t.set(l,h)}if(d=e.cache.get(u)){var p;pDt(p=s.isTransposed?e.getLineGridCfg(n,o,$Ct.CIRCLE,c):e.getCircleGridCfg(n,o,$Ct.RADIUS,c),ENt),d.component.update(p),t.set(u,d)}else{if(s.isTransposed){if((0,tOt.o8)(o))return;d=e.createLineGrid(n,o,a,$Ct.CIRCLE,c)}else d=e.createCircleGrid(n,o,a,$Ct.RADIUS,c);d&&(e.cache.set(u,d),t.set(u,d))}}}}}))},e.prototype.createLineAxis=function(t,e,n,r,i){var o={component:new Q_t(this.getLineAxisCfg(t,e,r)),layer:n,direction:r===$Ct.RADIUS?$Ct.NONE:r,type:KCt.AXIS,extra:{dim:i,scale:t}};return o.component.set("field",t.field),o.component.init(),o},e.prototype.createLineGrid=function(t,e,n,r,i){var o=this.getLineGridCfg(t,e,r,i);if(o){var a={component:new eDt(o),layer:n,direction:$Ct.NONE,type:KCt.GRID,extra:{dim:i,scale:t,alignTick:(0,tOt.U2)(o,"alignTick",!0)}};return a.component.init(),a}},e.prototype.createCircleAxis=function(t,e,n,r,i){var o={component:new tDt(this.getCircleAxisCfg(t,e,r)),layer:n,direction:r,type:KCt.AXIS,extra:{dim:i,scale:t}};return o.component.set("field",t.field),o.component.init(),o},e.prototype.createCircleGrid=function(t,e,n,r,i){var o=this.getCircleGridCfg(t,e,r,i);if(o){var a={component:new nDt(o),layer:n,direction:$Ct.NONE,type:KCt.GRID,extra:{dim:i,scale:t,alignTick:(0,tOt.U2)(o,"alignTick",!0)}};return a.component.init(),a}},e.prototype.getLineAxisCfg=function(t,e,n){var r=(0,tOt.U2)(e,["top"])?this.axisForeContainer:this.axisContainer,i=this.view.getCoordinate(),o=MDt(i,n),a=jDt(t,e),c=_Dt(this.view.getTheme(),n),l=(0,tOt.U2)(e,["title"])?(0,tOt.b$)({title:{style:{text:a}}},{title:DDt(this.view.getTheme(),n,e.title)},e):e,u=(0,tOt.b$)((0,QCt.pi)((0,QCt.pi)({container:r},o),{ticks:t.getTicks().map((function(t){return{id:"".concat(t.tickValue),name:t.text,value:t.value}})),verticalFactor:i.isPolar?-1*PDt(o,i.getCenter()):PDt(o,i.getCenter()),theme:c}),c,l),s=this.getAnimateCfg(u),f=s.animate,h=s.animateOption;u.animateOption=h,u.animate=f;var d=ADt(o),p=(0,tOt.U2)(u,"verticalLimitLength",d?1/3:.5);if(p<=1){var v=this.view.getCanvas().get("width"),g=this.view.getCanvas().get("height");u.verticalLimitLength=p*(d?v:g)}return u},e.prototype.getLineGridCfg=function(t,e,n,r){if(ONt(_Dt(this.view.getTheme(),n),e)){var i=SNt(this.view.getTheme(),n),o=(0,tOt.b$)({container:(0,tOt.U2)(e,["top"])?this.gridForeContainer:this.gridContainer},i,(0,tOt.U2)(e,"grid"),this.getAnimateCfg(e));return o.items=kNt(this.view.getCoordinate(),t,r,(0,tOt.U2)(o,"alignTick",!0)),o}},e.prototype.getCircleAxisCfg=function(t,e,n){var r=(0,tOt.U2)(e,["top"])?this.axisForeContainer:this.axisContainer,i=this.view.getCoordinate(),o=t.getTicks().map((function(t){return{id:"".concat(t.tickValue),name:t.text,value:t.value}}));t.isCategory||Math.abs(i.endAngle-i.startAngle)!==2*Math.PI||o.length&&(o[o.length-1].name="");var a=jDt(t,e),c=_Dt(this.view.getTheme(),$Ct.CIRCLE),l=(0,tOt.U2)(e,["title"])?(0,tOt.b$)({title:{style:{text:a}}},{title:DDt(this.view.getTheme(),n,e.title)},e):e,u=(0,tOt.b$)((0,QCt.pi)((0,QCt.pi)({container:r},TDt(this.view.getCoordinate())),{ticks:o,verticalFactor:1,theme:c}),c,l),s=this.getAnimateCfg(u),f=s.animate,h=s.animateOption;return u.animate=f,u.animateOption=h,u},e.prototype.getCircleGridCfg=function(t,e,n,r){if(ONt(_Dt(this.view.getTheme(),n),e)){var i=SNt(this.view.getTheme(),$Ct.RADIUS),o=(0,tOt.b$)({container:(0,tOt.U2)(e,["top"])?this.gridForeContainer:this.gridContainer,center:this.view.getCoordinate().getCenter()},i,(0,tOt.U2)(e,"grid"),this.getAnimateCfg(e)),a=(0,tOt.U2)(o,"alignTick",!0),c="x"===r?this.view.getYScales()[0]:this.view.getXScale();return o.items=CNt(this.view.getCoordinate(),c,t,a,r),o}},e.prototype.getId=function(t,e){var n=this.view.getCoordinate();return"".concat(t,"-").concat(e,"-").concat(n.type)},e.prototype.getAnimateCfg=function(t){return{animate:this.view.getOptions().animate&&(0,tOt.U2)(t,"animate"),animateOption:t&&t.animateOption?(0,tOt.b$)({},MNt,t.animateOption):MNt}},e}(_Zt),PNt=ANt;function _Nt(t,e,n){return n===$Ct.TOP?[t.minX+t.width/2-e.width/2,t.minY]:n===$Ct.BOTTOM?[t.minX+t.width/2-e.width/2,t.maxY-e.height]:n===$Ct.LEFT?[t.minX,t.minY+t.height/2-e.height/2]:n===$Ct.RIGHT?[t.maxX-e.width,t.minY+t.height/2-e.height/2]:n===$Ct.TOP_LEFT||n===$Ct.LEFT_TOP?[t.tl.x,t.tl.y]:n===$Ct.TOP_RIGHT||n===$Ct.RIGHT_TOP?[t.tr.x-e.width,t.tr.y]:n===$Ct.BOTTOM_LEFT||n===$Ct.LEFT_BOTTOM?[t.bl.x,t.bl.y-e.height]:n===$Ct.BOTTOM_RIGHT||n===$Ct.RIGHT_BOTTOM?[t.br.x-e.width,t.br.y-e.height]:[0,0]}function DNt(t,e){return(0,tOt.jn)(t)?!1!==t&&{}:(0,tOt.U2)(t,[e],t)}function TNt(t){return(0,tOt.U2)(t,"position",$Ct.BOTTOM)}var ZNt=function(t){function e(e){var n=t.call(this,e)||this;return n.container=n.view.getLayer(YCt.FORE).addGroup(),n}return(0,QCt.ZT)(e,t),Object.defineProperty(e.prototype,"name",{get:function(){return"legend"},enumerable:!1,configurable:!0}),e.prototype.init=function(){},e.prototype.render=function(){this.update()},e.prototype.layout=function(){var t=this;this.layoutBBox=this.view.viewBBox,(0,tOt.S6)(this.components,(function(e){var n=e.component,r=e.direction,i=wFt(r),o=n.get("maxWidthRatio"),a=n.get("maxHeightRatio"),c=t.getCategoryLegendSizeCfg(i,o,a),l=n.get("maxWidth"),u=n.get("maxHeight");n.update({maxWidth:Math.min(c.maxWidth,l||0),maxHeight:Math.min(c.maxHeight,u||0)});var s=n.get("padding"),f=n.getLayoutBBox(),h=new gDt(f.x,f.y,f.width,f.height).expand(s),d=(0,QCt.CR)(_Nt(t.view.viewBBox,h,r),2),p=d[0],v=d[1],g=(0,QCt.CR)(_Nt(t.layoutBBox,h,r),2),m=g[0],y=g[1],b=0,x=0;r.startsWith("top")||r.startsWith("bottom")?(b=p,x=y):(b=m,x=v),n.setLocation({x:b+s[3],y:x+s[0]}),t.layoutBBox=t.layoutBBox.cut(h,r)}))},e.prototype.update=function(){var t=this;this.option=this.view.getOptions().legends;var e={};if((0,tOt.U2)(this.option,"custom")){var n="global-custom",r=this.getComponentById(n);if(r){var i=this.getCategoryCfg(void 0,void 0,void 0,this.option,!0);pDt(i,["container"]),r.component.update(i),e[n]=!0}else{var o=this.createCustomLegend(void 0,void 0,void 0,this.option);if(o){o.init();var a=YCt.FORE,c=TNt(this.option);this.components.push({id:n,component:o,layer:a,direction:c,type:KCt.LEGEND,extra:void 0}),e[n]=!0}}}else this.loopLegends((function(n,r,i){var o=t.getId(i.field),a=t.getComponentById(o);if(a){var c=void 0,l=DNt(t.option,i.field);!1!==l&&((0,tOt.U2)(l,"custom")?c=t.getCategoryCfg(n,r,i,l,!0):i.isLinear?c=t.getContinuousCfg(n,r,i,l):i.isCategory&&(c=t.getCategoryCfg(n,r,i,l))),c&&(pDt(c,["container"]),a.direction=TNt(l),a.component.update(c),e[o]=!0)}else{var u=t.createFieldLegend(n,r,i);u&&(u.component.init(),t.components.push(u),e[o]=!0)}}));var l=[];(0,tOt.S6)(this.getComponents(),(function(t){e[t.id]?l.push(t):t.component.destroy()})),this.components=l},e.prototype.clear=function(){t.prototype.clear.call(this),this.container.clear()},e.prototype.destroy=function(){t.prototype.destroy.call(this),this.container.remove(!0)},e.prototype.getGeometries=function(t){var e=this,n=t.geometries;return(0,tOt.S6)(t.views,(function(t){n=n.concat(e.getGeometries(t))})),n},e.prototype.loopLegends=function(t){if(this.view.getRootView()===this.view){var e=this.getGeometries(this.view),n={};(0,tOt.S6)(e,(function(e){var r=e.getGroupAttributes();(0,tOt.S6)(r,(function(r){var i=r.getScale(r.type);i&&"identity"!==i.type&&!n[i.field]&&(t(e,r,i),n[i.field]=!0)}))}))}},e.prototype.createFieldLegend=function(t,e,n){var r,i=DNt(this.option,n.field),o=YCt.FORE,a=TNt(i);if(!1!==i&&((0,tOt.U2)(i,"custom")?r=this.createCustomLegend(t,e,n,i):n.isLinear?r=this.createContinuousLegend(t,e,n,i):n.isCategory&&(r=this.createCategoryLegend(t,e,n,i))),r)return r.set("field",n.field),{id:this.getId(n.field),component:r,layer:o,direction:a,type:KCt.LEGEND,extra:{scale:n}}},e.prototype.createCustomLegend=function(t,e,n,r){var i=this.getCategoryCfg(t,e,n,r,!0);return new rDt(i)},e.prototype.createContinuousLegend=function(t,e,n,r){var i=this.getContinuousCfg(t,e,n,pDt(r,["value"]));return new iDt(i)},e.prototype.createCategoryLegend=function(t,e,n,r){var i=this.getCategoryCfg(t,e,n,r);return new rDt(i)},e.prototype.getContinuousCfg=function(t,e,n,r){var i=n.getTicks(),o=(0,tOt.sE)(i,(function(t){return 0===t.value})),a=(0,tOt.sE)(i,(function(t){return 1===t.value})),c=i.map((function(t){var r=t.value,i=t.tickValue,o=e.mapping(n.invert(r)).join("");return{value:i,attrValue:o,color:o,scaleValue:r}}));o||c.push({value:n.min,attrValue:e.mapping(n.invert(0)).join(""),color:e.mapping(n.invert(0)).join(""),scaleValue:0}),a||c.push({value:n.max,attrValue:e.mapping(n.invert(1)).join(""),color:e.mapping(n.invert(1)).join(""),scaleValue:1}),c.sort((function(t,e){return t.value-e.value}));var l={min:(0,tOt.YM)(c).value,max:(0,tOt.Z$)(c).value,colors:[],rail:{type:e.type},track:{}};"size"===e.type&&(l.track={style:{fill:"size"===e.type?this.view.getTheme().defaultColor:void 0}}),"color"===e.type&&(l.colors=c.map((function(t){return t.attrValue})));var u=this.container,s=wFt(TNt(r)),f=(0,tOt.U2)(r,"title");return f&&(f=(0,tOt.b$)({text:CDt(n)},f)),l.container=u,l.layout=s,l.title=f,l.animateOption=IZt,this.mergeLegendCfg(l,r,"continuous")},e.prototype.getCategoryCfg=function(t,e,n,r,i){var o=this.container,a=(0,tOt.U2)(r,"position",$Ct.BOTTOM),c=kFt(this.view.getTheme(),a),l=(0,tOt.U2)(c,["marker"]),u=(0,tOt.U2)(r,"marker"),s=wFt(a),f=(0,tOt.U2)(c,["pageNavigator"]),h=(0,tOt.U2)(r,"pageNavigator"),d=i?function(t,e,n){return n.map((function(n,r){var i=e;(0,tOt.mf)(i)&&(i=i(n.name,r,(0,tOt.b$)({},t,n)));var o=(0,tOt.mf)(n.marker)?n.marker(n.name,r,(0,tOt.b$)({},t,n)):n.marker,a=(0,tOt.b$)({},t,i,o);return xFt(a),n.marker=a,n}))}(l,u,r.items):SFt(this.view,t,e,l,u),p=(0,tOt.U2)(r,"title");p&&(p=(0,tOt.b$)({text:n?CDt(n):""},p));var v=(0,tOt.U2)(r,"maxWidthRatio"),g=(0,tOt.U2)(r,"maxHeightRatio"),m=this.getCategoryLegendSizeCfg(s,v,g);m.container=o,m.layout=s,m.items=d,m.title=p,m.animateOption=IZt,m.pageNavigator=(0,tOt.b$)({},f,h);var y=this.mergeLegendCfg(m,r,a);y.reversed&&y.items.reverse();var b=(0,tOt.U2)(y,"maxItemWidth");return b&&b<=1&&(y.maxItemWidth=this.view.viewBBox.width*b),y},e.prototype.mergeLegendCfg=function(t,e,n){var r=n.split("-")[0],i=kFt(this.view.getTheme(),r);return(0,tOt.b$)({},i,t,e)},e.prototype.getId=function(t){return"".concat(this.name,"-").concat(t)},e.prototype.getComponentById=function(t){return(0,tOt.sE)(this.components,(function(e){return e.id===t}))},e.prototype.getCategoryLegendSizeCfg=function(t,e,n){void 0===e&&(e=.25),void 0===n&&(n=.25);var r=this.view.viewBBox,i=r.width,o=r.height;return"vertical"===t?{maxWidth:i*e,maxHeight:o}:{maxWidth:i,maxHeight:o*n}},e}(_Zt),FNt=ZNt,jNt=function(t){function e(e){var n=t.call(this,e)||this;return n.onChangeFn=tOt.ZT,n.resetMeasure=function(){n.clear()},n.onValueChange=function(t){var e=(0,QCt.CR)(t,2),r=e[0],i=e[1];n.start=r,n.end=i,n.changeViewData(r,i)},n.container=n.view.getLayer(YCt.FORE).addGroup(),n.onChangeFn=(0,tOt.P2)(n.onValueChange,20,{leading:!0}),n.width=0,n.view.on(eOt.BEFORE_CHANGE_DATA,n.resetMeasure),n.view.on(eOt.BEFORE_CHANGE_SIZE,n.resetMeasure),n}return(0,QCt.ZT)(e,t),Object.defineProperty(e.prototype,"name",{get:function(){return"slider"},enumerable:!1,configurable:!0}),e.prototype.destroy=function(){t.prototype.destroy.call(this),this.view.off(eOt.BEFORE_CHANGE_DATA,this.resetMeasure),this.view.off(eOt.BEFORE_CHANGE_SIZE,this.resetMeasure)},e.prototype.init=function(){},e.prototype.render=function(){this.option=this.view.getOptions().slider;var t=this.getSliderCfg(),e=t.start,n=t.end;(0,tOt.UM)(this.start)&&(this.start=e,this.end=n);var r=this.view.getOptions().data;this.option&&!(0,tOt.xb)(r)?this.slider?this.slider=this.updateSlider():(this.slider=this.createSlider(),this.slider.component.on("sliderchange",this.onChangeFn)):this.slider&&(this.slider.component.destroy(),this.slider=void 0)},e.prototype.layout=function(){var t=this;if(this.option&&!this.width&&(this.measureSlider(),setTimeout((function(){t.view.destroyed||t.changeViewData(t.start,t.end)}),0)),this.slider){var e=this.view.coordinateBBox.width,n=this.slider.component.get("padding"),r=(0,QCt.CR)(n,4),i=r[0],o=(r[1],r[2],r[3]),a=this.slider.component.getLayoutBBox(),c=new gDt(a.x,a.y,Math.min(a.width,e),a.height).expand(n),l=this.getMinMaxText(this.start,this.end),u=l.minText,s=l.maxText,f=(0,QCt.CR)(_Nt(this.view.viewBBox,c,$Ct.BOTTOM),2),h=(f[0],f[1]),d=(0,QCt.CR)(_Nt(this.view.coordinateBBox,c,$Ct.BOTTOM),2),p=d[0];d[1];this.slider.component.update((0,QCt.pi)((0,QCt.pi)({},this.getSliderCfg()),{x:p+o,y:h+i,width:this.width,start:this.start,end:this.end,minText:u,maxText:s})),this.view.viewBBox=this.view.viewBBox.cut(c,$Ct.BOTTOM)}},e.prototype.update=function(){this.render()},e.prototype.createSlider=function(){var t=this.getSliderCfg(),e=new Y_t((0,QCt.pi)({container:this.container},t));return e.init(),{component:e,layer:YCt.FORE,direction:$Ct.BOTTOM,type:KCt.SLIDER}},e.prototype.updateSlider=function(){var t=this.getSliderCfg();if(this.width){var e=this.getMinMaxText(this.start,this.end),n=e.minText,r=e.maxText;t=(0,QCt.pi)((0,QCt.pi)({},t),{width:this.width,start:this.start,end:this.end,minText:n,maxText:r})}return this.slider.component.update(t),this.slider},e.prototype.measureSlider=function(){var t=this.getSliderCfg().width;this.width=t},e.prototype.getSliderCfg=function(){var t={height:16,start:0,end:1,minText:"",maxText:"",x:0,y:0,width:this.view.coordinateBBox.width};if((0,tOt.Kn)(this.option)){var e=(0,QCt.pi)({data:this.getData()},(0,tOt.U2)(this.option,"trendCfg",{}));t=(0,tOt.b$)({},t,this.getThemeOptions(),this.option),t=(0,QCt.pi)((0,QCt.pi)({},t),{trendCfg:e})}return t.start=(0,tOt.uZ)(Math.min((0,tOt.UM)(t.start)?0:t.start,(0,tOt.UM)(t.end)?1:t.end),0,1),t.end=(0,tOt.uZ)(Math.max((0,tOt.UM)(t.start)?0:t.start,(0,tOt.UM)(t.end)?1:t.end),0,1),t},e.prototype.getData=function(){var t=this.view.getOptions().data,e=(0,QCt.CR)(this.view.getYScales(),1)[0],n=this.view.getGroupScales();if(n.length){var r=n[0],i=r.field,o=r.ticks;return t.reduce((function(t,n){return n[i]===o[0]&&t.push(n[e.field]),t}),[])}return t.map((function(t){return t[e.field]||0}))},e.prototype.getThemeOptions=function(){var t=this.view.getTheme();return(0,tOt.U2)(t,["components","slider","common"],{})},e.prototype.getMinMaxText=function(t,e){var n=this.view.getOptions().data,r=this.view.getXScale(),i=(0,tOt.I)(n,r.field);r.isLinear&&(i=i.sort());var o=i,a=(0,tOt.dp)(n);if(!r||!a)return{};var c=(0,tOt.dp)(o),l=Math.round(t*(c-1)),u=Math.round(e*(c-1)),s=(0,tOt.U2)(o,[l]),f=(0,tOt.U2)(o,[u]),h=this.getSliderCfg().formatter;return h&&(s=h(s,n[l],l),f=h(f,n[u],u)),{minText:s,maxText:f}},e.prototype.changeViewData=function(t,e){var n=this.view.getOptions().data,r=this.view.getXScale(),i=(0,tOt.dp)(n);if(r&&i){var o=(0,tOt.I)(n,r.field),a=this.view.getXScale().isLinear?o.sort((function(t,e){return Number(t)-Number(e)})):o,c=a,l=(0,tOt.dp)(c),u=Math.round(t*(l-1)),s=Math.round(e*(l-1));this.view.filter(r.field,(function(t,e){var n=c.indexOf(t);return!(n>-1)||dDt(n,u,s)})),this.view.render(!0)}},e.prototype.getComponents=function(){return this.slider?[this.slider]:[]},e.prototype.clear=function(){this.slider&&(this.slider.component.destroy(),this.slider=void 0),this.width=0,this.start=void 0,this.end=void 0},e}(_Zt),INt=jNt,RNt=function(t){function e(e){var n=t.call(this,e)||this;return n.onChangeFn=tOt.ZT,n.resetMeasure=function(){n.clear()},n.onValueChange=function(t){var e=t.ratio,r=n.getValidScrollbarCfg().animate;n.ratio=(0,tOt.uZ)(e,0,1);var i=n.view.getOptions().animate;r||n.view.animate(!1),n.changeViewData(n.getScrollRange(),!0),n.view.animate(i)},n.container=n.view.getLayer(YCt.FORE).addGroup(),n.onChangeFn=(0,tOt.P2)(n.onValueChange,20,{leading:!0}),n.trackLen=0,n.thumbLen=0,n.ratio=0,n.view.on(eOt.BEFORE_CHANGE_DATA,n.resetMeasure),n.view.on(eOt.BEFORE_CHANGE_SIZE,n.resetMeasure),n}return(0,QCt.ZT)(e,t),Object.defineProperty(e.prototype,"name",{get:function(){return"scrollbar"},enumerable:!1,configurable:!0}),e.prototype.destroy=function(){t.prototype.destroy.call(this),this.view.off(eOt.BEFORE_CHANGE_DATA,this.resetMeasure),this.view.off(eOt.BEFORE_CHANGE_SIZE,this.resetMeasure)},e.prototype.init=function(){},e.prototype.render=function(){this.option=this.view.getOptions().scrollbar,this.option?this.scrollbar?this.scrollbar=this.updateScrollbar():(this.scrollbar=this.createScrollbar(),this.scrollbar.component.on("scrollchange",this.onChangeFn)):this.scrollbar&&(this.scrollbar.component.destroy(),this.scrollbar=void 0)},e.prototype.layout=function(){var t=this;if(this.option&&!this.trackLen&&(this.measureScrollbar(),setTimeout((function(){t.view.destroyed||t.changeViewData(t.getScrollRange(),!0)}))),this.scrollbar){var e=this.view.coordinateBBox.width,n=this.scrollbar.component.get("padding"),r=this.scrollbar.component.getLayoutBBox(),i=new gDt(r.x,r.y,Math.min(r.width,e),r.height).expand(n),o=this.getScrollbarComponentCfg(),a=void 0,c=void 0;if(o.isHorizontal){var l=(0,QCt.CR)(_Nt(this.view.viewBBox,i,$Ct.BOTTOM),2),u=(l[0],l[1]),s=(0,QCt.CR)(_Nt(this.view.coordinateBBox,i,$Ct.BOTTOM),2),f=s[0];s[1];a=f,c=u}else{var h=(0,QCt.CR)(_Nt(this.view.viewBBox,i,$Ct.RIGHT),2),d=(h[0],u=h[1],(0,QCt.CR)(_Nt(this.view.viewBBox,i,$Ct.RIGHT),2));f=d[0],d[1];a=f,c=u}a+=n[3],c+=n[0],this.trackLen?this.scrollbar.component.update((0,QCt.pi)((0,QCt.pi)({},o),{x:a,y:c,trackLen:this.trackLen,thumbLen:this.thumbLen,thumbOffset:(this.trackLen-this.thumbLen)*this.ratio})):this.scrollbar.component.update((0,QCt.pi)((0,QCt.pi)({},o),{x:a,y:c})),this.view.viewBBox=this.view.viewBBox.cut(i,o.isHorizontal?$Ct.BOTTOM:$Ct.RIGHT)}},e.prototype.update=function(){this.render()},e.prototype.getComponents=function(){return this.scrollbar?[this.scrollbar]:[]},e.prototype.clear=function(){this.scrollbar&&(this.scrollbar.component.destroy(),this.scrollbar=void 0),this.trackLen=0,this.thumbLen=0,this.ratio=0,this.cnt=0,this.step=0,this.data=void 0,this.xScaleCfg=void 0,this.yScalesCfg=[]},e.prototype.setValue=function(t){this.onValueChange({ratio:t})},e.prototype.getValue=function(){return this.ratio},e.prototype.getThemeOptions=function(){var t=this.view.getTheme();return(0,tOt.U2)(t,["components","scrollbar","common"],{})},e.prototype.getScrollbarTheme=function(t){var e=(0,tOt.U2)(this.view.getTheme(),["components","scrollbar"]),n=t||{},r=n.thumbHighlightColor,i=(0,QCt._T)(n,["thumbHighlightColor"]);return{default:(0,tOt.b$)({},(0,tOt.U2)(e,["default","style"],{}),i),hover:(0,tOt.b$)({},(0,tOt.U2)(e,["hover","style"],{}),{thumbColor:r})}},e.prototype.measureScrollbar=function(){var t=this.view.getXScale(),e=this.view.getYScales().slice();this.data=this.getScrollbarData(),this.step=this.getStep(),this.cnt=this.getCnt();var n=this.getScrollbarComponentCfg(),r=n.trackLen,i=n.thumbLen;this.trackLen=r,this.thumbLen=i,this.xScaleCfg={field:t.field,values:t.values||[]},this.yScalesCfg=e},e.prototype.getScrollRange=function(){var t=Math.floor((this.cnt-this.step)*(0,tOt.uZ)(this.ratio,0,1));return[t,Math.min(t+this.step-1,this.cnt-1)]},e.prototype.changeViewData=function(t,e){var n=this,r=(0,QCt.CR)(t,2),i=r[0],o=r[1],a="vertical"!==this.getValidScrollbarCfg().type,c=(0,tOt.I)(this.data,this.xScaleCfg.field),l=this.view.getXScale().isLinear?c.sort((function(t,e){return Number(t)-Number(e)})):c,u=a?l:l.reverse();this.yScalesCfg.forEach((function(t){n.view.scale(t.field,{formatter:t.formatter,type:t.type,min:t.min,max:t.max,tickMethod:t.tickMethod})})),this.view.filter(this.xScaleCfg.field,(function(t){var e=u.indexOf(t);return!(e>-1)||dDt(e,i,o)})),this.view.render(!0)},e.prototype.createScrollbar=function(){var t="vertical"!==this.getValidScrollbarCfg().type,e=new J_t((0,QCt.pi)((0,QCt.pi)({container:this.container},this.getScrollbarComponentCfg()),{x:0,y:0}));return e.init(),{component:e,layer:YCt.FORE,direction:t?$Ct.BOTTOM:$Ct.RIGHT,type:KCt.SCROLLBAR}},e.prototype.updateScrollbar=function(){var t=this.getScrollbarComponentCfg(),e=this.trackLen?(0,QCt.pi)((0,QCt.pi)({},t),{trackLen:this.trackLen,thumbLen:this.thumbLen,thumbOffset:(this.trackLen-this.thumbLen)*this.ratio}):(0,QCt.pi)({},t);return this.scrollbar.component.update(e),this.scrollbar},e.prototype.getStep=function(){if(this.step)return this.step;var t=this.view.coordinateBBox,e=this.getValidScrollbarCfg(),n=e.type,r=e.categorySize,i="vertical"!==n;return Math.floor((i?t.width:t.height)/r)},e.prototype.getCnt=function(){if(this.cnt)return this.cnt;var t=this.view.getXScale(),e=this.getScrollbarData(),n=(0,tOt.I)(e,t.field);return(0,tOt.dp)(n)},e.prototype.getScrollbarComponentCfg=function(){var t=this.view,e=t.coordinateBBox,n=t.viewBBox,r=this.getValidScrollbarCfg(),i=r.type,o=r.padding,a=r.width,c=r.height,l=r.style,u="vertical"!==i,s=(0,QCt.CR)(o,4),f=s[0],h=s[1],d=s[2],p=s[3],v=u?{x:e.minX+p,y:n.maxY-c-d}:{x:n.maxX-a-h,y:e.minY+f},g=this.getStep(),m=this.getCnt(),y=u?e.width-p-h:e.height-f-d,b=Math.max(y*(0,tOt.uZ)(g/m,0,1),20);return(0,QCt.pi)((0,QCt.pi)({},this.getThemeOptions()),{x:v.x,y:v.y,size:u?c:a,isHorizontal:u,trackLen:y,thumbLen:b,thumbOffset:0,theme:this.getScrollbarTheme(l)})},e.prototype.getValidScrollbarCfg=function(){var t={type:"horizontal",categorySize:32,width:8,height:8,padding:[0,0,0,0],animate:!0,style:{}};return(0,tOt.Kn)(this.option)&&(t=(0,QCt.pi)((0,QCt.pi)({},t),this.option)),(0,tOt.Kn)(this.option)&&this.option.padding||(t.padding=(t.type,[0,0,0,0])),t},e.prototype.getScrollbarData=function(){var t=this.view.getCoordinate(),e=this.getValidScrollbarCfg(),n=this.view.getOptions().data||[];return t.isReflect("y")&&"vertical"===e.type&&(n=(0,QCt.ev)([],(0,QCt.CR)(n),!1).reverse()),n},e}(_Zt),LNt=RNt,NNt={fill:"#CCD6EC",opacity:.3};function BNt(t,e,n){var r,i,o,a,c,l,u=function(t,e,n){var r,i,o=dZt(t,e,n);try{for(var a=(0,QCt.XA)(t.views),c=a.next();!c.done;c=a.next()){var l=c.value;o=o.concat(dZt(l,e,n))}}catch(u){r={error:u}}finally{try{c&&!c.done&&(i=a.return)&&i.call(a)}finally{if(r)throw r.error}}return o}(t,e,n);if(u.length){u=(0,tOt.xH)(u);try{for(var s=(0,QCt.XA)(u),f=s.next();!f.done;f=s.next()){var h=f.value;try{for(var d=(o=void 0,(0,QCt.XA)(h)),p=d.next();!p.done;p=d.next()){var v=p.value,g=v.mappingData,m=g.x,y=g.y;v.x=(0,tOt.kJ)(m)?m[m.length-1]:m,v.y=(0,tOt.kJ)(y)?y[y.length-1]:y}}catch(O){o={error:O}}finally{try{p&&!p.done&&(a=d.return)&&a.call(d)}finally{if(o)throw o.error}}}}catch(E){r={error:E}}finally{try{f&&!f.done&&(i=s.return)&&i.call(s)}finally{if(r)throw r.error}}if(!1===n.shared&&u.length>1){var b=u[0],x=Math.abs(e.y-b[0].y);try{for(var w=(0,QCt.XA)(u),S=w.next();!S.done;S=w.next()){var k=S.value,C=Math.abs(e.y-k[0].y);C<=x&&(b=k,x=C)}}catch(M){c={error:M}}finally{try{S&&!S.done&&(l=w.return)&&l.call(w)}finally{if(c)throw c.error}}u=[b]}return(0,tOt.jj)((0,tOt.xH)(u))}return[]}var zNt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.show=function(t){var e=this.context.view,n=this.context.event,r=e.getController("tooltip").getTooltipCfg(),i=BNt(e,{x:n.x,y:n.y},r);if(!(0,tOt.Xy)(i,this.items)&&(this.items=i,i.length)){var o=e.getXScale().field,a=i[0].data[o],c=[],l=e.geometries;if((0,tOt.S6)(l,(function(t){if("interval"===t.type||"schema"===t.type){var e=t.getElementsBy((function(t){return t.getData()[o]===a}));c=c.concat(e)}})),c.length){var u=e.getCoordinate(),s=c[0].shape.getCanvasBBox(),f=c[0].shape.getCanvasBBox(),h=s;(0,tOt.S6)(c,(function(t){var e=t.shape.getCanvasBBox();u.isTransposed?(e.minYf.maxY&&(f=e)):(e.minXf.maxX&&(f=e)),h.x=Math.min(e.minX,h.minX),h.y=Math.min(e.minY,h.minY),h.width=Math.max(e.maxX,h.maxX)-h.x,h.height=Math.max(e.maxY,h.maxY)-h.y}));var d=e.backgroundGroup,p=e.coordinateBBox,v=void 0;if(u.isRect){var g=e.getXScale(),m=t||{},y=m.appendRatio,b=m.appendWidth;(0,tOt.UM)(b)&&(y=(0,tOt.UM)(y)?g.isLinear?0:.25:y,b=u.isTransposed?y*f.height:y*s.width);var x=void 0,w=void 0,S=void 0,k=void 0;u.isTransposed?(x=p.minX,w=Math.min(f.minY,s.minY)-b,S=p.width,k=h.height+2*b):(x=Math.min(s.minX,f.minX)-b,w=p.minY,S=h.width+2*b,k=p.height),v=[["M",x,w],["L",x+S,w],["L",x+S,w+k],["L",x,w+k],["Z"]]}else{var C=(0,tOt.YM)(c),O=(0,tOt.Z$)(c),E=fDt(C.getModel(),u).startAngle,M=fDt(O.getModel(),u).endAngle,A=u.getCenter(),P=u.getRadius(),_=u.innerRadius*P;v=uDt(A.x,A.y,P,E,M,_)}if(this.regionPath)this.regionPath.attr("path",v),this.regionPath.show();else{var D=(0,tOt.U2)(t,"style",NNt);this.regionPath=d.addShape({type:"path",name:"active-region",capture:!1,attrs:(0,QCt.pi)((0,QCt.pi)({},D),{path:v})})}}}},e.prototype.hide=function(){this.regionPath&&this.regionPath.hide(),this.items=null},e.prototype.destroy=function(){this.hide(),this.regionPath&&this.regionPath.remove(!0),t.prototype.destroy.call(this)},e}(BDt),UNt=zNt,HNt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.timeStamp=0,e}return(0,QCt.ZT)(e,t),e.prototype.show=function(){var t=this.context,e=t.event,n=t.view;if(!n.isTooltipLocked()){var r=this.timeStamp,i=+new Date;if(i-r>(0,tOt.U2)(t.view.getOptions(),"tooltip.showDelay",16)){var o=this.location,a={x:e.x,y:e.y};o&&(0,tOt.Xy)(o,a)||this.showTooltip(n,a),this.timeStamp=i,this.location=a}}},e.prototype.hide=function(){var t=this.context.view,e=t.getController("tooltip"),n=this.context.event,r=n.clientX,i=n.clientY;e.isCursorEntered({x:r,y:i})||t.isTooltipLocked()||(this.hideTooltip(t),this.location=null)},e.prototype.showTooltip=function(t,e){t.showTooltip(e)},e.prototype.hideTooltip=function(t){t.hideTooltip()},e}(BDt),WNt=HNt,VNt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.showTooltip=function(t,e){var n=CTt(t);(0,tOt.S6)(n,(function(n){var r=OTt(t,n,e);n.showTooltip(r)}))},e.prototype.hideTooltip=function(t){var e=CTt(t);(0,tOt.S6)(e,(function(t){t.hideTooltip()}))},e}(WNt),GNt=VNt,XNt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.timeStamp=0,e}return(0,QCt.ZT)(e,t),e.prototype.destroy=function(){t.prototype.destroy.call(this),this.tooltip&&this.tooltip.destroy()},e.prototype.show=function(){var t=this.context.event,e=this.timeStamp,n=+new Date;if(n-e>16){var r=this.location,i={x:t.x,y:t.y};r&&(0,tOt.Xy)(r,i)||this.showTooltip(i),this.timeStamp=n,this.location=i}},e.prototype.hide=function(){this.hideTooltip(),this.location=null},e.prototype.showTooltip=function(t){var e=this.context.event.target;if(e&&e.get("tip")){this.tooltip||this.renderTooltip();var n=e.get("tip");this.tooltip.update((0,QCt.pi)({title:n},t)),this.tooltip.show()}},e.prototype.hideTooltip=function(){this.tooltip&&this.tooltip.hide()},e.prototype.renderTooltip=function(){var t,e=this.context.view,n=e.canvas,r={start:{x:0,y:0},end:{x:n.get("width"),y:n.get("height")}},i=e.getTheme(),o=(0,tOt.U2)(i,["components","tooltip","domStyles"],{}),a=new oDt({parent:n.get("el").parentNode,region:r,visible:!1,crosshairs:null,domStyles:(0,QCt.pi)({},(0,tOt.b$)({},o,(t={},t[k_t]={"max-width":"50%"},t[C_t]={"word-break":"break-all"},t)))});a.init(),a.setCapture(!1),this.tooltip=a},e}(BDt),qNt=XNt,YNt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.stateName="",e}return(0,QCt.ZT)(e,t),e.prototype.hasState=function(t){return t.hasState(this.stateName)},e.prototype.setElementState=function(t,e){t.setState(this.stateName,e)},e.prototype.setState=function(){this.setStateEnable(!0)},e.prototype.clear=function(){var t=this.context.view;this.clearViewState(t)},e.prototype.clearViewState=function(t){var e=this,n=gTt(t,this.stateName);(0,tOt.S6)(n,(function(t){e.setElementState(t,!1)}))},e}(BDt),$Nt=YNt;function KNt(t){return(0,tOt.U2)(t.get("delegateObject"),"item")}var JNt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.ignoreListItemStates=["unchecked"],e}return(0,QCt.ZT)(e,t),e.prototype.isItemIgnore=function(t,e){var n=this.ignoreListItemStates.filter((function(n){return e.hasState(t,n)}));return!!n.length},e.prototype.setStateByComponent=function(t,e,n){var r=this.context.view,i=t.get("field"),o=vTt(r);this.setElementsStateByItem(o,i,e,n)},e.prototype.setStateByElement=function(t,e){this.setElementState(t,e)},e.prototype.isMathItem=function(t,e,n){var r=MTt(this.context.view,e),i=mTt(t,e);return!(0,tOt.UM)(i)&&n.name===r.getText(i)},e.prototype.setElementsStateByItem=function(t,e,n,r){var i=this;(0,tOt.S6)(t,(function(t){i.isMathItem(t,e,n)&&t.setState(i.stateName,r)}))},e.prototype.setStateEnable=function(t){var e=oTt(this.context);if(e)cTt(this.context)&&this.setStateByElement(e,t);else{var n=aTt(this.context);if(lTt(n)){var r=n.item,i=n.component;if(r&&i&&!this.isItemIgnore(r,i)){var o=this.context.event.gEvent;if(o&&o.fromShape&&o.toShape&&KNt(o.fromShape)===KNt(o.toShape))return;this.setStateByComponent(i,r,t)}}}},e.prototype.toggle=function(){var t=oTt(this.context);if(t){var e=t.hasState(this.stateName);this.setElementState(t,!e)}},e.prototype.reset=function(){this.setStateEnable(!1)},e}($Nt),QNt=JNt,tBt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.stateName="active",e}return(0,QCt.ZT)(e,t),e.prototype.active=function(){this.setState()},e}(QNt),eBt=tBt,nBt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.cache={},e}return(0,QCt.ZT)(e,t),e.prototype.getColorScale=function(t,e){var n=e.geometry.getAttribute("color");return n?t.getScaleByField(n.getFields()[0]):null},e.prototype.getLinkPath=function(t,e){var n=this.context.view.getCoordinate().isTransposed,r=t.shape.getCanvasBBox(),i=e.shape.getCanvasBBox();return n?[["M",r.minX,r.minY],["L",i.minX,i.maxY],["L",i.maxX,i.maxY],["L",r.maxX,r.minY],["Z"]]:[["M",r.maxX,r.minY],["L",i.minX,i.minY],["L",i.minX,i.maxY],["L",r.maxX,r.maxY],["Z"]]},e.prototype.addLinkShape=function(t,e,n,r){var i={opacity:.4,fill:e.shape.attr("fill")};t.addShape({type:"path",attrs:(0,QCt.pi)((0,QCt.pi)({},(0,tOt.b$)({},i,(0,tOt.mf)(r)?r(i,e):r)),{path:this.getLinkPath(e,n)})})},e.prototype.linkByElement=function(t,e){var n=this,r=this.context.view,i=this.getColorScale(r,t);if(i){var o=mTt(t,i.field);if(!this.cache[o]){var a=function(t,e,n){return vTt(t).filter((function(t){return mTt(t,e)===n}))}(r,i.field,o),c=this.linkGroup.addGroup();this.cache[o]=c;var l=a.length;(0,tOt.S6)(a,(function(t,r){if(r=0}),e)},e}(oBt),EBt=OBt,MBt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.stateName="active",e}return(0,QCt.ZT)(e,t),e.prototype.highlight=function(){this.setState()},e.prototype.setElementState=function(t,e){vBt(vTt(this.context.view),(function(e){return t===e}),e)},e.prototype.clear=function(){pBt(this.context.view)},e}(uBt),ABt=MBt,PBt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.stateName="selected",e}return(0,QCt.ZT)(e,t),e.prototype.selected=function(){this.setState()},e}(oBt),_Bt=PBt,DBt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.stateName="selected",e}return(0,QCt.ZT)(e,t),e.prototype.selected=function(){this.setState()},e}(QNt),TBt=DBt,ZBt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.stateName="selected",e}return(0,QCt.ZT)(e,t),e.prototype.selected=function(){this.setState()},e}(uBt),FBt=ZBt,jBt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.stateName="",e.ignoreItemStates=[],e}return(0,QCt.ZT)(e,t),e.prototype.getTriggerListInfo=function(){var t=aTt(this.context),e=null;return lTt(t)&&(e={item:t.item,list:t.component}),e},e.prototype.getAllowComponents=function(){var t=this,e=wTt(this.context.view),n=[];return(0,tOt.S6)(e,(function(e){e.isList()&&t.allowSetStateByElement(e)&&n.push(e)})),n},e.prototype.hasState=function(t,e){return t.hasState(e,this.stateName)},e.prototype.clearAllComponentsState=function(){var t=this,e=this.getAllowComponents();(0,tOt.S6)(e,(function(e){e.clearItemsState(t.stateName)}))},e.prototype.allowSetStateByElement=function(t){var e=t.get("field");if(!e)return!1;if(this.cfg&&this.cfg.componentNames){var n=t.get("name");if(-1===this.cfg.componentNames.indexOf(n))return!1}var r=MTt(this.context.view,e);return r&&r.isCategory},e.prototype.allowSetStateByItem=function(t,e){var n=this.ignoreItemStates;if(n.length){var r=n.filter((function(n){return e.hasState(t,n)}));return 0===r.length}return!0},e.prototype.setStateByElement=function(t,e,n){var r=t.get("field"),i=MTt(this.context.view,r),o=mTt(e,r),a=i.getText(o);this.setItemsState(t,a,n)},e.prototype.setStateEnable=function(t){var e=this,n=oTt(this.context);if(n){var r=this.getAllowComponents();(0,tOt.S6)(r,(function(r){e.setStateByElement(r,n,t)}))}else{var i=aTt(this.context);if(lTt(i)){var o=i.item,a=i.component;this.allowSetStateByElement(a)&&this.allowSetStateByItem(o,a)&&this.setItemState(a,o,t)}}},e.prototype.setItemsState=function(t,e,n){var r=this,i=t.getItems();(0,tOt.S6)(i,(function(i){i.name===e&&r.setItemState(t,i,n)}))},e.prototype.setItemState=function(t,e,n){t.setItemState(e,this.stateName,n)},e.prototype.setState=function(){this.setStateEnable(!0)},e.prototype.reset=function(){this.setStateEnable(!1)},e.prototype.toggle=function(){var t=this.getTriggerListInfo();if(t&&t.item){var e=t.list,n=t.item,r=this.hasState(e,n);this.setItemState(e,n,!r)}},e.prototype.clear=function(){var t=this.getTriggerListInfo();t?t.list.clearItemsState(this.stateName):this.clearAllComponentsState()},e}(BDt),IBt=jBt,RBt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.stateName="active",e}return(0,QCt.ZT)(e,t),e.prototype.active=function(){this.setState()},e}(IBt),LBt=RBt,NBt="inactive",BBt="active";var zBt="inactive",UBt="active",HBt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.stateName=UBt,e.ignoreItemStates=["unchecked"],e}return(0,QCt.ZT)(e,t),e.prototype.setItemsState=function(t,e,n){this.setHighlightBy(t,(function(t){return t.name===e}),n)},e.prototype.setItemState=function(t,e,n){t.getItems();this.setHighlightBy(t,(function(t){return t===e}),n)},e.prototype.setHighlightBy=function(t,e,n){var r=t.getItems();if(n)(0,tOt.S6)(r,(function(n){e(n)?(t.hasState(n,zBt)&&t.setItemState(n,zBt,!1),t.setItemState(n,UBt,!0)):t.hasState(n,UBt)||t.setItemState(n,zBt,!0)}));else{var i=t.getItemsByState(UBt),o=!0;(0,tOt.S6)(i,(function(t){if(!e(t))return o=!1,!1})),o?this.clear():(0,tOt.S6)(r,(function(n){e(n)&&(t.hasState(n,UBt)&&t.setItemState(n,UBt,!1),t.setItemState(n,zBt,!0))}))}},e.prototype.highlight=function(){this.setState()},e.prototype.clear=function(){var t=this.getTriggerListInfo();if(t)!function(t){var e=t.getItems();(0,tOt.S6)(e,(function(e){t.hasState(e,BBt)&&t.setItemState(e,BBt,!1),t.hasState(e,NBt)&&t.setItemState(e,NBt,!1)}))}(t.list);else{var e=this.getAllowComponents();(0,tOt.S6)(e,(function(t){t.clearItemsState(UBt),t.clearItemsState(zBt)}))}},e}(IBt),WBt=HBt,VBt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.stateName="selected",e}return(0,QCt.ZT)(e,t),e.prototype.selected=function(){this.setState()},e}(IBt),GBt=VBt,XBt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.stateName="unchecked",e}return(0,QCt.ZT)(e,t),e.prototype.unchecked=function(){this.setState()},e}(IBt),qBt=XBt,YBt="unchecked",$Bt="checked",KBt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.stateName=$Bt,e}return(0,QCt.ZT)(e,t),e.prototype.setItemState=function(t,e,n){this.setCheckedBy(t,(function(t){return t===e}),n)},e.prototype.setCheckedBy=function(t,e,n){var r=t.getItems();n&&(0,tOt.S6)(r,(function(n){e(n)?(t.hasState(n,YBt)&&t.setItemState(n,YBt,!1),t.setItemState(n,$Bt,!0)):t.hasState(n,$Bt)||t.setItemState(n,YBt,!0)}))},e.prototype.toggle=function(){var t=this.getTriggerListInfo();if(t&&t.item){var e=t.list,n=t.item,r=!(0,tOt.G)(e.getItems(),(function(t){return e.hasState(t,YBt)}));r||e.hasState(n,YBt)?this.setItemState(e,n,!0):this.reset()}},e.prototype.checked=function(){this.setState()},e.prototype.reset=function(){var t=this.getAllowComponents();(0,tOt.S6)(t,(function(t){t.clearItemsState($Bt),t.clearItemsState(YBt)}))},e}(IBt),JBt=KBt,QBt="unchecked",tzt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.toggle=function(){var t,e,n,r,i,o,a,c,l=this.getTriggerListInfo();if(null==l?void 0:l.item){var u=l.list,s=l.item,f=u.getItems(),h=f.filter((function(t){return!u.hasState(t,QBt)})),d=f.filter((function(t){return u.hasState(t,QBt)})),p=h[0];if(f.length===h.length)try{for(var v=(0,QCt.XA)(f),g=v.next();!g.done;g=v.next()){var m=g.value;u.setItemState(m,QBt,m.id!==s.id)}}catch(C){t={error:C}}finally{try{g&&!g.done&&(e=v.return)&&e.call(v)}finally{if(t)throw t.error}}else if(f.length-d.length==1)if(p.id===s.id)try{for(var y=(0,QCt.XA)(f),b=y.next();!b.done;b=y.next()){m=b.value;u.setItemState(m,QBt,!1)}}catch(O){n={error:O}}finally{try{b&&!b.done&&(r=y.return)&&r.call(y)}finally{if(n)throw n.error}}else try{for(var x=(0,QCt.XA)(f),w=x.next();!w.done;w=x.next()){m=w.value;u.setItemState(m,QBt,m.id!==s.id)}}catch(E){i={error:E}}finally{try{w&&!w.done&&(o=x.return)&&o.call(x)}finally{if(i)throw i.error}}else try{for(var S=(0,QCt.XA)(f),k=S.next();!k.done;k=S.next()){m=k.value;u.setItemState(m,QBt,m.id!==s.id)}}catch(M){a={error:M}}finally{try{k&&!k.done&&(c=S.return)&&c.call(S)}finally{if(a)throw a.error}}}},e}(IBt),ezt=tzt,nzt="showRadio",rzt="legend-radio-tip",izt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.timeStamp=0,e}return(0,QCt.ZT)(e,t),e.prototype.show=function(){var t=this.getTriggerListInfo();if(null==t?void 0:t.item){var e=t.list,n=t.item;e.setItemState(n,nzt,!0)}},e.prototype.hide=function(){var t=this.getTriggerListInfo();if(null==t?void 0:t.item){var e=t.list,n=t.item;e.setItemState(n,nzt,!1)}},e.prototype.destroy=function(){t.prototype.destroy.call(this),this.tooltip&&this.tooltip.destroy()},e.prototype.showTip=function(){var t=this.context.event,e=this.timeStamp,n=+new Date,r=this.context.event.target;if(n-e>16&&"legend-item-radio"===r.get("name")){var i=this.location,o={x:t.x,y:t.y};this.timeStamp=n,this.location=o,i&&(0,tOt.Xy)(i,o)||this.showTooltip(o)}},e.prototype.hideTip=function(){this.hideTooltip(),this.location=null},e.prototype.showTooltip=function(t){var e=this.context,n=e.event.target;if(n&&n.get("tip")){this.tooltip||this.renderTooltip();var r=e.view.getCanvas().get("el").getBoundingClientRect(),i=r.x,o=r.y;this.tooltip.update((0,QCt.pi)((0,QCt.pi)({title:n.get("tip")},t),{x:t.x+i,y:t.y+o})),this.tooltip.show()}},e.prototype.hideTooltip=function(){this.tooltip&&this.tooltip.hide()},e.prototype.renderTooltip=function(){var t,e=((t={})[k_t]={padding:"6px 8px",transform:"translate(-50%, -80%)",background:"rgba(0,0,0,0.75)",color:"#fff","border-radius":"2px","z-index":100},t[C_t]={"font-size":"12px","line-height":"14px","margin-bottom":0,"word-break":"break-all"},t);document.getElementById(rzt)&&document.body.removeChild(document.getElementById(rzt));var n=new oDt({parent:document.body,region:null,visible:!1,crosshairs:null,domStyles:e,containerId:rzt});n.init(),n.setCapture(!1),this.tooltip=n},e}(IBt),ozt=izt,azt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.maskShape=null,e.points=[],e.starting=!1,e.moving=!1,e.preMovePoint=null,e.shapeType="path",e}return(0,QCt.ZT)(e,t),e.prototype.getCurrentPoint=function(){var t=this.context.event;return{x:t.x,y:t.y}},e.prototype.emitEvent=function(t){var e="mask:".concat(t),n=this.context.view,r=this.context.event;n.emit(e,{target:this.maskShape,shape:this.maskShape,points:this.points,x:r.x,y:r.y})},e.prototype.createMask=function(){var t=this.context.view,e=this.getMaskAttrs();return t.foregroundGroup.addShape({type:this.shapeType,name:"mask",draggable:!0,attrs:(0,QCt.pi)({fill:"#C5D4EB",opacity:.3},e)})},e.prototype.getMaskPath=function(){return[]},e.prototype.show=function(){this.maskShape&&(this.maskShape.show(),this.emitEvent("show"))},e.prototype.start=function(t){this.starting=!0,this.moving=!1,this.points=[this.getCurrentPoint()],this.maskShape||(this.maskShape=this.createMask(),this.maskShape.set("capture",!1)),this.updateMask(null==t?void 0:t.maskStyle),this.emitEvent("start")},e.prototype.moveStart=function(){this.moving=!0,this.preMovePoint=this.getCurrentPoint()},e.prototype.move=function(){if(this.moving&&this.maskShape){var t=this.getCurrentPoint(),e=this.preMovePoint,n=t.x-e.x,r=t.y-e.y,i=this.points;(0,tOt.S6)(i,(function(t){t.x+=n,t.y+=r})),this.updateMask(),this.emitEvent("change"),this.preMovePoint=t}},e.prototype.updateMask=function(t){var e=(0,tOt.b$)({},this.getMaskAttrs(),t);this.maskShape.attr(e)},e.prototype.moveEnd=function(){this.moving=!1,this.preMovePoint=null},e.prototype.end=function(){this.starting=!1,this.emitEvent("end"),this.maskShape&&this.maskShape.set("capture",!0)},e.prototype.hide=function(){this.maskShape&&(this.maskShape.hide(),this.emitEvent("hide"))},e.prototype.resize=function(){this.starting&&this.maskShape&&(this.points.push(this.getCurrentPoint()),this.updateMask(),this.emitEvent("change"))},e.prototype.destroy=function(){this.points=[],this.maskShape&&this.maskShape.remove(),this.maskShape=null,this.preMovePoint=null,t.prototype.destroy.call(this)},e}(BDt),czt=azt;function lzt(t){var e=(0,tOt.Z$)(t),n=0,r=0,i=0;if(t.length){var o=t[0];n=STt(o,e)/2,r=(e.x+o.x)/2,i=(e.y+o.y)/2}return{x:r,y:i,r:n}}var uzt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.shapeType="circle",e}return(0,QCt.ZT)(e,t),e.prototype.getMaskAttrs=function(){return lzt(this.points)},e}(czt),szt=uzt;function fzt(t){return{start:(0,tOt.YM)(t),end:(0,tOt.Z$)(t)}}function hzt(t,e){return{x:Math.min(t.x,e.x),y:Math.min(t.y,e.y),width:Math.abs(e.x-t.x),height:Math.abs(e.y-t.y)}}var dzt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.shapeType="rect",e}return(0,QCt.ZT)(e,t),e.prototype.getRegion=function(){return fzt(this.points)},e.prototype.getMaskAttrs=function(){var t=this.getRegion();return hzt(t.start,t.end)},e}(czt),pzt=dzt;function vzt(t){t.x=(0,tOt.uZ)(t.x,0,1),t.y=(0,tOt.uZ)(t.y,0,1)}function gzt(t,e,n,r){var i=null,o=null,a=r.invert((0,tOt.YM)(t)),c=r.invert((0,tOt.Z$)(t));return n&&(vzt(a),vzt(c)),"x"===e?(i=r.convert({x:a.x,y:0}),o=r.convert({x:c.x,y:1})):(i=r.convert({x:0,y:a.y}),o=r.convert({x:1,y:c.y})),{start:i,end:o}}var mzt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.dim="x",e.inPlot=!0,e}return(0,QCt.ZT)(e,t),e.prototype.getRegion=function(){var t=this.context.view.getCoordinate();return gzt(this.points,this.dim,this.inPlot,t)},e}(pzt),yzt=mzt;function bzt(t){var e=[];return t.length&&((0,tOt.S6)(t,(function(t,n){0===n?e.push(["M",t.x,t.y]):e.push(["L",t.x,t.y])})),e.push(["L",t[0].x,t[0].y])),e}function xzt(t){return{path:bzt(t)}}var wzt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getMaskPath=function(){return bzt(this.points)},e.prototype.getMaskAttrs=function(){return xzt(this.points)},e.prototype.addPoint=function(){this.resize()},e}(czt),Szt=wzt;function kzt(t){return function(t,e){if(t.length<=2)return KDt(t,!1);var n=t[0],r=[];(0,tOt.S6)(t,(function(t){r.push(t.x),r.push(t.y)}));var i=$Dt(r,e,null);return i.unshift(["M",n.x,n.y]),i}(t,!0)}function Czt(t){return{path:kzt(t)}}var Ozt,Ezt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getMaskPath=function(){return kzt(this.points)},e.prototype.getMaskAttrs=function(){return Czt(this.points)},e}(Szt),Mzt=Ezt,Azt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.maskShapes=[],e.starting=!1,e.moving=!1,e.recordPoints=null,e.preMovePoint=null,e.shapeType="path",e.maskType="multi-mask",e}return(0,QCt.ZT)(e,t),e.prototype.getCurrentPoint=function(){var t=this.context.event;return{x:t.x,y:t.y}},e.prototype.emitEvent=function(t){var e="".concat(this.maskType,":").concat(t),n=this.context.view,r=this.context.event,i={type:this.shapeType,name:this.maskType,get:function(t){return i.hasOwnProperty(t)?i[t]:void 0}};n.emit(e,{target:i,maskShapes:this.maskShapes,multiPoints:this.recordPoints,x:r.x,y:r.y})},e.prototype.createMask=function(t){var e=this.context.view,n=this.recordPoints[t],r=this.getMaskAttrs(n),i=e.foregroundGroup.addShape({type:this.shapeType,name:"mask",draggable:!0,attrs:(0,QCt.pi)({fill:"#C5D4EB",opacity:.3},r)});this.maskShapes.push(i)},e.prototype.getMaskPath=function(t){return[]},e.prototype.show=function(){this.maskShapes.length>0&&(this.maskShapes.forEach((function(t){return t.show()})),this.emitEvent("show"))},e.prototype.start=function(t){this.recordPointStart(),this.starting=!0,this.moving=!1;var e=this.recordPoints.length-1;this.createMask(e),this.updateShapesCapture(!1),this.updateMask(null==t?void 0:t.maskStyle),this.emitEvent("start")},e.prototype.moveStart=function(){this.moving=!0,this.preMovePoint=this.getCurrentPoint(),this.updateShapesCapture(!1)},e.prototype.move=function(){if(this.moving&&0!==this.maskShapes.length){var t=this.getCurrentPoint(),e=this.preMovePoint,n=t.x-e.x,r=t.y-e.y,i=this.getCurMaskShapeIndex();i>-1&&(this.recordPoints[i].forEach((function(t){t.x+=n,t.y+=r})),this.updateMask(),this.emitEvent("change"),this.preMovePoint=t)}},e.prototype.updateMask=function(t){var e=this;this.recordPoints.forEach((function(n,r){var i=(0,tOt.b$)({},e.getMaskAttrs(n),t);e.maskShapes[r].attr(i)}))},e.prototype.resize=function(){this.starting&&this.maskShapes.length>0&&(this.recordPointContinue(),this.updateMask(),this.emitEvent("change"))},e.prototype.moveEnd=function(){this.moving=!1,this.preMovePoint=null,this.updateShapesCapture(!0)},e.prototype.end=function(){this.starting=!1,this.emitEvent("end"),this.updateShapesCapture(!0)},e.prototype.hide=function(){this.maskShapes.length>0&&(this.maskShapes.forEach((function(t){return t.hide()})),this.emitEvent("hide"))},e.prototype.remove=function(){var t=this.getCurMaskShapeIndex();t>-1&&(this.recordPoints.splice(t,1),this.maskShapes[t].remove(),this.maskShapes.splice(t,1),this.preMovePoint=null,this.updateShapesCapture(!0),this.emitEvent("change"))},e.prototype.clearAll=function(){this.recordPointClear(),this.maskShapes.forEach((function(t){return t.remove()})),this.maskShapes=[],this.preMovePoint=null},e.prototype.clear=function(){var t=this.getCurMaskShapeIndex();-1===t?(this.recordPointClear(),this.maskShapes.forEach((function(t){return t.remove()})),this.maskShapes=[],this.emitEvent("clearAll")):(this.recordPoints.splice(t,1),this.maskShapes[t].remove(),this.maskShapes.splice(t,1),this.preMovePoint=null,this.emitEvent("clearSingle")),this.preMovePoint=null},e.prototype.destroy=function(){this.clear(),t.prototype.destroy.call(this)},e.prototype.getRecordPoints=function(){var t;return(0,QCt.ev)([],(0,QCt.CR)(null!==(t=this.recordPoints)&&void 0!==t?t:[]),!1)},e.prototype.recordPointStart=function(){var t=this.getRecordPoints(),e=this.getCurrentPoint();this.recordPoints=(0,QCt.ev)((0,QCt.ev)([],(0,QCt.CR)(t),!1),[[e]],!1)},e.prototype.recordPointContinue=function(){var t=this.getRecordPoints(),e=this.getCurrentPoint(),n=t.splice(-1,1)[0]||[];n.push(e),this.recordPoints=(0,QCt.ev)((0,QCt.ev)([],(0,QCt.CR)(t),!1),[n],!1)},e.prototype.recordPointClear=function(){this.recordPoints=[]},e.prototype.updateShapesCapture=function(t){this.maskShapes.forEach((function(e){return e.set("capture",t)}))},e.prototype.getCurMaskShapeIndex=function(){var t=this.getCurrentPoint();return this.maskShapes.findIndex((function(e){var n=e.attrs,r=n.width,i=n.height,o=n.r;return!(0===r||0===i||0===o)&&e.isHit(t.x,t.y)}))},e}(BDt),Pzt=Azt,_zt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.shapeType="rect",e}return(0,QCt.ZT)(e,t),e.prototype.getRegion=function(t){return fzt(t)},e.prototype.getMaskAttrs=function(t){var e=this.getRegion(t);return hzt(e.start,e.end)},e}(Pzt),Dzt=_zt,Tzt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.dim="x",e.inPlot=!0,e}return(0,QCt.ZT)(e,t),e.prototype.getRegion=function(t){var e=this.context.view.getCoordinate();return gzt(t,this.dim,this.inPlot,e)},e}(Dzt),Zzt=Tzt,Fzt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.shapeType="circle",e.getMaskAttrs=lzt,e}return(0,QCt.ZT)(e,t),e}(Pzt),jzt=Fzt,Izt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.getMaskPath=bzt,e.getMaskAttrs=xzt,e}return(0,QCt.ZT)(e,t),e.prototype.addPoint=function(){this.resize()},e}(Pzt),Rzt=Izt,Lzt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.getMaskPath=kzt,e.getMaskAttrs=Czt,e}return(0,QCt.ZT)(e,t),e}(Rzt),Nzt=Lzt,Bzt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.setCursor=function(t){this.context.view.getCanvas().setCursor(t)},e.prototype.default=function(){this.setCursor("default")},e.prototype.pointer=function(){this.setCursor("pointer")},e.prototype.move=function(){this.setCursor("move")},e.prototype.crosshair=function(){this.setCursor("crosshair")},e.prototype.wait=function(){this.setCursor("wait")},e.prototype.help=function(){this.setCursor("help")},e.prototype.text=function(){this.setCursor("text")},e.prototype.eResize=function(){this.setCursor("e-resize")},e.prototype.wResize=function(){this.setCursor("w-resize")},e.prototype.nResize=function(){this.setCursor("n-resize")},e.prototype.sResize=function(){this.setCursor("s-resize")},e.prototype.neResize=function(){this.setCursor("ne-resize")},e.prototype.nwResize=function(){this.setCursor("nw-resize")},e.prototype.seResize=function(){this.setCursor("se-resize")},e.prototype.swResize=function(){this.setCursor("sw-resize")},e.prototype.nsResize=function(){this.setCursor("ns-resize")},e.prototype.ewResize=function(){this.setCursor("ew-resize")},e.prototype.zoomIn=function(){this.setCursor("zoom-in")},e.prototype.zoomOut=function(){this.setCursor("zoom-out")},e}(BDt),zzt=Bzt,Uzt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.filterView=function(t,e,n){var r=this;t.getScaleByField(e)&&t.filter(e,n),t.views&&t.views.length&&(0,tOt.S6)(t.views,(function(t){r.filterView(t,e,n)}))},e.prototype.filter=function(){var t=aTt(this.context);if(t){var e=this.context.view,n=t.component,r=n.get("field");if(lTt(t)){if(r){var i=n.getItemsByState("unchecked"),o=MTt(e,r),a=i.map((function(t){return t.name}));a.length?this.filterView(e,r,(function(t){var e=o.getText(t);return!a.includes(e)})):this.filterView(e,r,null),e.render(!0)}}else if(uTt(t)){var c=n.getValue(),l=(0,QCt.CR)(c,2),u=l[0],s=l[1];this.filterView(e,r,(function(t){return t>=u&&t<=s})),e.render(!0)}}},e}(BDt),Hzt=Uzt;function Wzt(t,e,n,r){var i=Math.min(n[e],r[e]),o=Math.max(n[e],r[e]),a=(0,QCt.CR)(t.range,2),c=a[0],l=a[1];if(il&&(o=l),i===l&&o===l)return null;var u=t.invert(i),s=t.invert(o);if(t.isCategory){var f=t.values.indexOf(u),h=t.values.indexOf(s),d=t.values.slice(f,h+1);return function(t){return d.includes(t)}}return function(t){return t>=u&&t<=s}}!function(t){t.FILTER="brush-filter-processing",t.RESET="brush-filter-reset",t.BEFORE_FILTER="brush-filter:beforefilter",t.AFTER_FILTER="brush-filter:afterfilter",t.BEFORE_RESET="brush-filter:beforereset",t.AFTER_RESET="brush-filter:afterreset"}(Ozt||(Ozt={}));var Vzt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.dims=["x","y"],e.startPoint=null,e.isStarted=!1,e}return(0,QCt.ZT)(e,t),e.prototype.hasDim=function(t){return this.dims.includes(t)},e.prototype.start=function(){var t=this.context;this.isStarted=!0,this.startPoint=t.getCurrentPoint()},e.prototype.filter=function(){var t,e;if(sTt(this.context)){var n=this.context.event.target.getCanvasBBox();t={x:n.x,y:n.y},e={x:n.maxX,y:n.maxY}}else{if(!this.isStarted)return;t=this.startPoint,e=this.context.getCurrentPoint()}if(!(Math.abs(t.x-e.x)<5||Math.abs(t.x-e.y)<5)){var r=this.context,i=r.view,o={view:i,event:r.event,dims:this.dims};i.emit(Ozt.BEFORE_FILTER,xZt.fromData(i,Ozt.BEFORE_FILTER,o));var a=i.getCoordinate(),c=a.invert(e),l=a.invert(t);if(this.hasDim("x")){var u=i.getXScale(),s=Wzt(u,"x",c,l);this.filterView(i,u.field,s)}if(this.hasDim("y")){var f=i.getYScales()[0];s=Wzt(f,"y",c,l);this.filterView(i,f.field,s)}this.reRender(i,{source:Ozt.FILTER}),i.emit(Ozt.AFTER_FILTER,xZt.fromData(i,Ozt.AFTER_FILTER,o))}},e.prototype.end=function(){this.isStarted=!1},e.prototype.reset=function(){var t=this.context.view;if(t.emit(Ozt.BEFORE_RESET,xZt.fromData(t,Ozt.BEFORE_RESET,{})),this.isStarted=!1,this.hasDim("x")){var e=t.getXScale();this.filterView(t,e.field,null)}if(this.hasDim("y")){var n=t.getYScales()[0];this.filterView(t,n.field,null)}this.reRender(t,{source:Ozt.RESET}),t.emit(Ozt.AFTER_RESET,xZt.fromData(t,Ozt.AFTER_RESET,{}))},e.prototype.filterView=function(t,e,n){t.filter(e,n)},e.prototype.reRender=function(t,e){t.render(!0,e)},e}(BDt),Gzt=Vzt,Xzt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.filterView=function(t,e,n){var r=CTt(t);(0,tOt.S6)(r,(function(t){t.filter(e,n)}))},e.prototype.reRender=function(t){var e=CTt(t);(0,tOt.S6)(e,(function(t){t.render(!0)}))},e}(Gzt),qzt=Xzt,Yzt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.filter=function(){var t=aTt(this.context),e=this.context.view,n=vTt(e);if(sTt(this.context)){var r=hTt(this.context,10);r&&(0,tOt.S6)(n,(function(t){r.includes(t)?t.show():t.hide()}))}else if(t){var i=t.component,o=i.get("field");if(lTt(t)){if(o){var a=i.getItemsByState("unchecked"),c=MTt(e,o),l=a.map((function(t){return t.name}));(0,tOt.S6)(n,(function(t){var e=mTt(t,o),n=c.getText(e);l.indexOf(n)>=0?t.hide():t.show()}))}}else if(uTt(t)){var u=i.getValue(),s=(0,QCt.CR)(u,2),f=s[0],h=s[1];(0,tOt.S6)(n,(function(t){var e=mTt(t,o);e>=f&&e<=h?t.show():t.hide()}))}}},e.prototype.clear=function(){var t=vTt(this.context.view);(0,tOt.S6)(t,(function(t){t.show()}))},e.prototype.reset=function(){this.clear()},e}(BDt),$zt=Yzt,Kzt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.byRecord=!1,e}return(0,QCt.ZT)(e,t),e.prototype.filter=function(){sTt(this.context)&&(this.byRecord?this.filterByRecord():this.filterByBBox())},e.prototype.filterByRecord=function(){var t=this.context.view,e=hTt(this.context,10);if(e){var n=t.getXScale().field,r=t.getYScales()[0].field,i=e.map((function(t){return t.getModel().data})),o=CTt(t);(0,tOt.S6)(o,(function(t){var e=vTt(t);(0,tOt.S6)(e,(function(t){var e=t.getModel().data;ETt(i,e,n,r)?t.show():t.hide()}))}))}},e.prototype.filterByBBox=function(){var t=this,e=CTt(this.context.view);(0,tOt.S6)(e,(function(e){var n=dTt(t.context,e,10),r=vTt(e);n&&(0,tOt.S6)(r,(function(t){n.includes(t)?t.show():t.hide()}))}))},e.prototype.reset=function(){var t=CTt(this.context.view);(0,tOt.S6)(t,(function(t){var e=vTt(t);(0,tOt.S6)(e,(function(t){t.show()}))}))},e}(BDt),Jzt=Kzt,Qzt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.buttonGroup=null,e.buttonCfg={name:"button",text:"button",textStyle:{x:0,y:0,fontSize:12,fill:"#333333",cursor:"pointer"},padding:[8,10],style:{fill:"#f7f7f7",stroke:"#cccccc",cursor:"pointer"},activeStyle:{fill:"#e6e6e6"}},e}return(0,QCt.ZT)(e,t),e.prototype.getButtonCfg=function(){return(0,tOt.b$)(this.buttonCfg,this.cfg)},e.prototype.drawButton=function(){var t=this.getButtonCfg(),e=this.context.view.foregroundGroup.addGroup({name:t.name}),n=e.addShape({type:"text",name:"button-text",attrs:(0,QCt.pi)({text:t.text},t.textStyle)}).getBBox(),r=pZt(t.padding),i=e.addShape({type:"rect",name:"button-rect",attrs:(0,QCt.pi)({x:n.x-r[3],y:n.y-r[0],width:n.width+r[1]+r[3],height:n.height+r[0]+r[2]},t.style)});i.toBack(),e.on("mouseenter",(function(){i.attr(t.activeStyle)})),e.on("mouseleave",(function(){i.attr(t.style)})),this.buttonGroup=e},e.prototype.resetPosition=function(){var t=this.context.view.getCoordinate().convert({x:1,y:1}),e=this.buttonGroup,n=e.getBBox(),r=rAt.vs(null,[["t",t.x-n.width-10,t.y+n.height+5]]);e.setMatrix(r)},e.prototype.show=function(){this.buttonGroup||this.drawButton(),this.resetPosition(),this.buttonGroup.show()},e.prototype.hide=function(){this.buttonGroup&&this.buttonGroup.hide()},e.prototype.destroy=function(){var e=this.buttonGroup;e&&e.remove(),t.prototype.destroy.call(this)},e}(BDt),tUt=Qzt,eUt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.starting=!1,e.dragStart=!1,e}return(0,QCt.ZT)(e,t),e.prototype.start=function(){this.starting=!0,this.startPoint=this.context.getCurrentPoint()},e.prototype.drag=function(){if(this.startPoint){var t=this.context.getCurrentPoint(),e=this.context.view,n=this.context.event;this.dragStart?e.emit("drag",{target:n.target,x:n.x,y:n.y}):STt(t,this.startPoint)>4&&(e.emit("dragstart",{target:n.target,x:n.x,y:n.y}),this.dragStart=!0)}},e.prototype.end=function(){if(this.dragStart){var t=this.context.view,e=this.context.event;t.emit("dragend",{target:e.target,x:e.x,y:e.y})}this.starting=!1,this.dragStart=!1},e}(BDt),nUt=eUt,rUt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.starting=!1,e.isMoving=!1,e.startPoint=null,e.startMatrix=null,e}return(0,QCt.ZT)(e,t),e.prototype.start=function(){this.starting=!0,this.startPoint=this.context.getCurrentPoint(),this.startMatrix=this.context.view.middleGroup.getMatrix()},e.prototype.move=function(){if(this.starting){var t=this.startPoint,e=this.context.getCurrentPoint();if(STt(t,e)>5&&!this.isMoving&&(this.isMoving=!0),this.isMoving){var n=this.context.view,r=rAt.vs(this.startMatrix,[["t",e.x-t.x,e.y-t.y]]);n.backgroundGroup.setMatrix(r),n.foregroundGroup.setMatrix(r),n.middleGroup.setMatrix(r)}}},e.prototype.end=function(){this.isMoving&&(this.isMoving=!1),this.startMatrix=null,this.starting=!1,this.startPoint=null},e.prototype.reset=function(){this.starting=!1,this.startPoint=null,this.isMoving=!1;var t=this.context.view;t.backgroundGroup.resetMatrix(),t.foregroundGroup.resetMatrix(),t.middleGroup.resetMatrix(),this.isMoving=!1},e}(BDt),iUt=rUt,oUt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.dims=["x","y"],e.cfgFields=["dims"],e.cacheScaleDefs={},e}return(0,QCt.ZT)(e,t),e.prototype.hasDim=function(t){return this.dims.includes(t)},e.prototype.getScale=function(t){var e=this.context.view;return"x"===t?e.getXScale():e.getYScales()[0]},e.prototype.resetDim=function(t){var e=this.context.view;if(this.hasDim(t)&&this.cacheScaleDefs[t]){var n=this.getScale(t);e.scale(n.field,this.cacheScaleDefs[t]),this.cacheScaleDefs[t]=null}},e.prototype.reset=function(){this.resetDim("x"),this.resetDim("y"),this.context.view.render(!0)},e}(BDt),aUt=oUt,cUt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.startPoint=null,e.starting=!1,e.startCache={},e}return(0,QCt.ZT)(e,t),e.prototype.start=function(){var t=this;this.startPoint=this.context.getCurrentPoint(),this.starting=!0;var e=this.dims;(0,tOt.S6)(e,(function(e){var n=t.getScale(e),r=n.min,i=n.max,o=n.values;t.startCache[e]={min:r,max:i,values:o}}))},e.prototype.end=function(){this.startPoint=null,this.starting=!1,this.startCache={}},e.prototype.translate=function(){var t=this;if(this.starting){var e=this.startPoint,n=this.context.view.getCoordinate(),r=this.context.getCurrentPoint(),i=n.invert(e),o=n.invert(r),a=o.x-i.x,c=o.y-i.y,l=this.context.view,u=this.dims;(0,tOt.S6)(u,(function(e){t.translateDim(e,{x:-1*a,y:-1*c})})),l.render(!0)}},e.prototype.translateDim=function(t,e){if(this.hasDim(t)){var n=this.getScale(t);n.isLinear&&this.translateLinear(t,n,e)}},e.prototype.translateLinear=function(t,e,n){var r=this.context.view,i=this.startCache[t],o=i.min,a=i.max,c=a-o,l=n[t]*c;this.cacheScaleDefs[t]||(this.cacheScaleDefs[t]={nice:e.nice,min:o,max:a}),r.scale(e.field,{nice:!1,min:o+l,max:a+l})},e.prototype.reset=function(){t.prototype.reset.call(this),this.startPoint=null,this.starting=!1},e}(aUt),lUt=cUt,uUt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.zoomRatio=.05,e}return(0,QCt.ZT)(e,t),e.prototype.zoomIn=function(){this.zoom(this.zoomRatio)},e.prototype.zoom=function(t){var e=this,n=this.dims;(0,tOt.S6)(n,(function(n){e.zoomDim(n,t)})),this.context.view.render(!0)},e.prototype.zoomOut=function(){this.zoom(-1*this.zoomRatio)},e.prototype.zoomDim=function(t,e){if(this.hasDim(t)){var n=this.getScale(t);n.isLinear&&this.zoomLinear(t,n,e)}},e.prototype.zoomLinear=function(t,e,n){var r=this.context.view;this.cacheScaleDefs[t]||(this.cacheScaleDefs[t]={nice:e.nice,min:e.min,max:e.max});var i=this.cacheScaleDefs[t],o=i.max-i.min,a=e.min,c=e.max,l=n*o,u=a-l,s=c+l,f=(s-u)/o;s>u&&f<100&&f>.01&&r.scale(e.field,{nice:!1,min:a-l,max:c+l})},e}(aUt),sUt=uUt;var fUt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.scroll=function(t){var e=this.context,n=e.view,r=e.event;if(n.getOptions().scrollbar){var i=(null==t?void 0:t.wheelDelta)||1,o=n.getController("scrollbar"),a=n.getXScale(),c=n.getOptions().data,l=(0,tOt.dp)((0,tOt.I)(c,a.field)),u=(0,tOt.dp)(a.values),s=o.getValue(),f=Math.floor((l-u)*s)+(function(t){return t.gEvent.originalEvent.deltaY>0}(r)?i:-i),h=i/(l-u)/1e4,d=(0,tOt.uZ)(f/(l-u)+h,0,1);o.setValue(d)}},e}(BDt),hUt=fUt,dUt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.show=function(){var t=this.context,e=aTt(t).axis.cfg.title,n=e.description,r=e.text,i=e.descriptionTooltipStyle,o=t.event,a=o.x,c=o.y;this.tooltip||this.renderTooltip(),this.tooltip.update({title:r||"",customContent:function(){return'\n
    \n
    \n 字段说明:').concat(n,"\n
    \n
    \n ")},x:a,y:c}),this.tooltip.show()},e.prototype.destroy=function(){t.prototype.destroy.call(this),this.tooltip&&this.tooltip.destroy()},e.prototype.hide=function(){this.tooltip&&this.tooltip.hide()},e.prototype.renderTooltip=function(){var t,e=this.context.view.canvas,n={start:{x:0,y:0},end:{x:e.get("width"),y:e.get("height")}},r=new oDt({parent:e.get("el").parentNode,region:n,visible:!1,containerId:"aixs-description-tooltip",domStyles:(0,QCt.pi)({},(0,tOt.b$)({},(t={},t[k_t]={"max-width":"50%",padding:"10px","line-height":"15px","font-size":"12px",color:"rgba(0, 0, 0, .65)"},t[C_t]={"word-break":"break-all","margin-bottom":"3px"},t)))});r.init(),r.setCapture(!1),this.tooltip=r},e}(BDt),pUt=dUt;function vUt(t){return t.isInPlot()}function gUt(t){return t.gEvent.preventDefault(),t.gEvent.originalEvent.deltaY>0}!function(t,e){rZt[(0,tOt.vl)(t)]=nZt(e)}("dark",HTt(YFt)),vOt("canvas",P),vOt("svg",D),MZt("Polygon",nLt),MZt("Interval",qRt),MZt("Schema",iLt),MZt("Path",_Rt),MZt("Point",tLt),MZt("Line",$Rt),MZt("Area",jRt),MZt("Edge",RRt),MZt("Heatmap",NRt),MZt("Violin",aLt),GZt("base",gFt),GZt("interval",yLt),GZt("pie",kLt),GZt("polar",wLt),XZt("overlap",(function(t,e,n,r){var i=new PLt;(0,tOt.S6)(e,(function(t){for(var e=t.find((function(t){return"text"===t.get("type")})),n=e.attr(),r=n.x,o=n.y,a=!1,c=0;c<=8;c++){var l=_Lt(e,r,o,c);if(i.hasGap(l)){i.fillGap(l),a=!0;break}}a||t.remove(!0)})),i.destroy()})),XZt("distribute",(function(t,e,n,r){if(t.length&&e.length){var i=t[0]?t[0].offset:0,o=e[0].get("coordinate"),a=o.getRadius(),c=o.getCenter();if(i>0){var l=2*(a+i)+28,u={start:o.start,end:o.end},s=[[],[]];t.forEach((function(t){t&&("right"===t.textAlign?s[0].push(t):s[1].push(t))})),s.forEach((function(t,n){var r=l/14;t.length>r&&(t.sort((function(t,e){return e["..percent"]-t["..percent"]})),t.splice(r,t.length-r)),t.sort((function(t,e){return t.y-e.y})),function(t,e,n,r,i,o){var a,c,l,u=!0,s=r.start,f=r.end,h=Math.min(s.y,f.y),d=Math.abs(s.y-f.y),p=0,v=Number.MIN_VALUE,g=e.map((function(t){return t.y>p&&(p=t.y),t.yd&&(d=p-h);u;)for(g.forEach((function(t){var e=(Math.min.apply(v,t.targets)+Math.max.apply(v,t.targets))/2;t.pos=Math.min(Math.max(v,e-t.size/2),d-t.size)})),u=!1,l=g.length;l--;)if(l>0){var m=g[l-1],y=g[l];m.pos+m.size>y.pos&&(m.size+=y.size,m.targets=m.targets.concat(y.targets),m.pos+m.size>d&&(m.pos=d-m.size),g.splice(l,1),u=!0)}l=0,g.forEach((function(t){var r=h+n/2;t.targets.forEach((function(){e[l].y=t.pos+r,r+=n,l++}))}));var b={};try{for(var x=(0,QCt.XA)(t),w=x.next();!w.done;w=x.next()){var S=w.value;b[S.get("id")]=S}}catch(k){a={error:k}}finally{try{w&&!w.done&&(c=x.return)&&c.call(x)}finally{if(a)throw a.error}}e.forEach((function(t){var e=t.r*t.r,n=Math.pow(Math.abs(t.y-i.y),2);if(ei.maxX||r.maxY>i.maxY)&&t.remove(!0)}))})),XZt("limit-in-canvas",(function(t,e,n,r){(0,tOt.S6)(e,(function(t){var e=r.minX,n=r.minY,i=r.maxX,o=r.maxY,a=t.getCanvasBBox(),c=a.minX,l=a.minY,u=a.maxX,s=a.maxY,f=a.x,h=a.y,d=a.width,p=a.height,v=f,g=h;(ci?v=i-d:u>i&&(v-=u-i),l>o?g=o-p:s>o&&(g-=s-o),v===f&&g===h||aFt(t,v-f,g-h)}))})),XZt("limit-in-plot",(function(t,e,n,r,i){if(!(e.length<=0)){var o=(null==i?void 0:i.direction)||["top","right","bottom","left"],a=(null==i?void 0:i.action)||"translate",c=(null==i?void 0:i.margin)||0,l=e[0].get("coordinate");if(l){var u=function(t,e){void 0===e&&(e=0);var n=t.start,r=t.end,i=t.getWidth(),o=t.getHeight(),a=Math.min(n.x,r.x),c=Math.min(n.y,r.y);return gDt.fromRange(a-e,c-e,a+i+e,c+o+e)}(l,c),s=u.minX,f=u.minY,h=u.maxX,d=u.maxY;(0,tOt.S6)(e,(function(t){var e=t.getCanvasBBox(),n=e.minX,r=e.minY,i=e.maxX,c=e.maxY,l=e.x,u=e.y,p=e.width,v=e.height,g=l,m=u;if(o.indexOf("left")>=0&&(n=0&&(r=0&&(n>h?g=h-p:i>h&&(g-=i-h)),o.indexOf("bottom")>=0&&(r>d?m=d-v:c>d&&(m-=c-d)),g!==l||m!==u){var y=g-l;if("translate"===a)aFt(t,y,m-u);else if("ellipsis"===a){var b=t.findAll((function(t){return"text"===t.get("type")}));b.forEach((function(t){var e=(0,tOt.ei)(t.attr(),["fontSize","fontFamily","fontWeight","fontStyle","fontVariant"]),n=t.getCanvasBBox(),r=function(t,e,n){var r,i=KLt("...",n);r=(0,tOt.HD)(t)?t:(0,tOt.BB)(t);var o,a,c=e,l=[];if(KLt(t,n)<=e)return t;for(;o=r.substr(0,16),!((a=KLt(o,n))+i>c&&a>c);)if(l.push(o),c-=a,!(r=r.substr(16)))return l.join("");for(;o=r.substr(0,1),!((a=KLt(o,n))+i>c);)if(l.push(o),c-=a,!(r=r.substr(1)))return l.join("");return"".concat(l.join(""),"...")}(t.attr("text"),n.width-Math.abs(y),e);t.attr("text",r)}))}else t.hide()}}))}}})),XZt("pie-outer",(function(t,e,n,r){var i,o,a=(0,tOt.hX)(t,(function(t){return!(0,tOt.UM)(t)})),c=e[0]&&e[0].get("coordinate");if(c){var l=c.getCenter(),u=c.getRadius(),s={};try{for(var f=(0,QCt.XA)(e),h=f.next();!h.done;h=f.next()){var d=h.value;s[d.get("id")]=d}}catch(k){i={error:k}}finally{try{h&&!h.done&&(o=f.return)&&o.call(f)}finally{if(i)throw i.error}}var p=(0,tOt.U2)(a[0],"labelHeight",14),v=(0,tOt.U2)(a[0],"offset",0);if(!(v<=0)){var g="right",m=(0,tOt.vM)(a,(function(t){return t.xn&&(t.sort((function(t,e){return e.percent-t.percent})),(0,tOt.S6)(t,(function(t,e){e+1>n&&(s[t.id].set("visible",!1),t.invisible=!0)}))),CLt(t,p,S)})),(0,tOt.S6)(m,(function(t,e){(0,tOt.S6)(t,(function(t){var n=e===g,r=s[t.id].getChildByIndex(0);if(r){var i=u+v,o=t.y-l.y,a=Math.pow(i,2),f=Math.pow(o,2),h=a-f>0?a-f:0,d=Math.sqrt(h),p=Math.abs(Math.cos(t.angle)*i);t.x=n?l.x+Math.max(d,p):l.x-Math.max(d,p)}r&&(r.attr("y",t.y),r.attr("x",t.x)),function(t,e){var n=e.getCenter(),r=e.getRadius();if(t&&t.labelLine){var i=t.angle,o=t.offset,a=lDt(n.x,n.y,r,i),c=t.x+(0,tOt.U2)(t,"offsetX",0)*(Math.cos(i)>0?1:-1),l=t.y+(0,tOt.U2)(t,"offsetY",0)*(Math.sin(i)>0?1:-1),u={x:c-Math.cos(i)*OLt,y:l-Math.sin(i)*OLt},s=t.labelLine.smooth,f=[],h=u.x-n.x,d=u.y-n.y,p=Math.atan(d/h);if(h<0&&(p+=Math.PI),!1===s){(0,tOt.Kn)(t.labelLine)||(t.labelLine={});var v=0;(i<0&&i>-Math.PI/2||i>1.5*Math.PI)&&u.y>a.y&&(v=1),i>=0&&ia.y&&(v=1),i>=Math.PI/2&&iu.y&&(v=1),(i<-Math.PI/2||i>=Math.PI&&i<1.5*Math.PI)&&a.y>u.y&&(v=1);var g=o/2>4?4:Math.max(o/2-1,0),m=lDt(n.x,n.y,r+g,i),y=lDt(n.x,n.y,r+o/2,p);f.push("M ".concat(a.x," ").concat(a.y)),f.push("L ".concat(m.x," ").concat(m.y)),f.push("A ".concat(n.x," ").concat(n.y," 0 ").concat(0," ").concat(v," ").concat(y.x," ").concat(y.y)),f.push("L ".concat(u.x," ").concat(u.y))}else{m=lDt(n.x,n.y,r+(o/2>4?4:Math.max(o/2-1,0)),i);var b=a.xMath.pow(Math.E,-16)&&f.push.apply(f,["C",u.x+4*b,u.y,2*m.x-a.x,2*m.y-a.y,a.x,a.y]),f.push("L ".concat(a.x," ").concat(a.y))}t.labelLine.path=f.join(" ")}}(t,c)}))}))}}})),XZt("adjust-color",(function(t,e,n){if(0!==n.length){var r=n[0].get("element").geometry.theme,i=r.labels||{},o=i.fillColorLight,a=i.fillColorDark;n.forEach((function(t,n){var i=e[n].find((function(t){return"text"===t.get("type")})),c=gDt.fromObject(t.getBBox()),l=gDt.fromObject(i.getCanvasBBox()),u=!c.contains(l),s=function(t){var e=tEt.toRGB(t).toUpperCase();if(WLt[e])return WLt[e];var n=(0,QCt.CR)(tEt.rgb2arr(e),3);return(299*n[0]+587*n[1]+114*n[2])/1e3<128}(t.attr("fill"));u?i.attr(r.overflowLabels.style):s?o&&i.attr("fill",o):a&&i.attr("fill",a)}))}})),XZt("interval-adjust-position",(function(t,e,n){var r;if(0!==n.length){var i=null===(r=n[0])||void 0===r?void 0:r.get("element"),o=null==i?void 0:i.geometry;if(o&&"interval"===o.type)VLt(o,e,n)&&n.forEach((function(t,n){var r=e[n];!function(t,e,n){var r=t.coordinate,i=gDt.fromObject(n.getBBox()),o=lFt(e);r.isTransposed?o.attr({x:i.minX+i.width/2,textAlign:"center"}):o.attr({y:i.minY+i.height/2,textBaseline:"middle"})}(o,r,t)}))}})),XZt("interval-hide-overlap",(function(t,e,n){var r;if(0!==n.length){var i=null===(r=n[0])||void 0===r?void 0:r.get("element"),o=null==i?void 0:i.geometry;if(o&&"interval"===o.type){var a,c=function(t){var e=[],n=Math.max(Math.floor(t.length/500),1);return(0,tOt.S6)(t,(function(t,r){r%n==0?e.push(t):t.set("visible",!1)})),e}(e),l=(0,QCt.CR)(o.getXYFields(),1)[0],u=[],s=[],f=(0,tOt.vM)(c,(function(t){return t.get("data")[l]})),h=(0,tOt.jj)((0,tOt.UI)(c,(function(t){return t.get("data")[l]})));c.forEach((function(t){t.set("visible",!0)}));var d=function(t){t&&(t.length&&s.push(t.pop()),s.push.apply(s,(0,QCt.ev)([],(0,QCt.CR)(t),!1)))};for((0,tOt.dp)(h)>0&&(a=h.shift(),d(f[a])),(0,tOt.dp)(h)>0&&(a=h.pop(),d(f[a])),(0,tOt.S6)(h.reverse(),(function(t){d(f[t])}));s.length>0;){var p=s.shift();p.get("visible")&&(sFt(p,u)?p.set("visible",!1):u.push(p))}}}})),XZt("point-adjust-position",(function(t,e,n,r,i){var o,a;if(0!==n.length){var c=null===(o=n[0])||void 0===o?void 0:o.get("element"),l=null==c?void 0:c.geometry;if(l&&"point"===l.type){var u=(0,QCt.CR)(l.getXYFields(),2),s=u[0],f=u[1],h=(0,tOt.vM)(e,(function(t){return t.get("data")[s]})),d=[],p=i&&i.offset||(null===(a=t[0])||void 0===a?void 0:a.offset)||12;(0,tOt.UI)((0,tOt.XP)(h).reverse(),(function(t){for(var e=function(t,e){var n=t.getXYFields()[1],r=[],i=e.sort((function(t,e){return t.get("data")[n]-t.get("data")[n]}));return i.length>0&&r.push(i.shift()),i.length>0&&r.push(i.pop()),r.push.apply(r,(0,QCt.ev)([],(0,QCt.CR)(i),!1)),r}(l,h[t]);e.length;){var n=e.shift(),r=lFt(n);if(GLt(d,n,(function(t,e){return t.get("data")[s]===e.get("data")[s]&&t.get("data")[f]===e.get("data")[f]})))r.set("visible",!1);else{var i=!1;XLt(d,n)&&(r.attr("y",r.attr("y")+2*p),i=XLt(d,n)),i?r.set("visible",!1):d.push(n)}}}))}}})),XZt("pie-spider",(function(t,e,n,r){var i,o,a=e[0]&&e[0].get("coordinate");if(a){var c=a.getCenter(),l=a.getRadius(),u={};try{for(var s=(0,QCt.XA)(e),f=s.next();!f.done;f=s.next()){var h=f.value;u[h.get("id")]=h}}catch(k){i={error:k}}finally{try{f&&!f.done&&(o=s.return)&&o.call(s)}finally{if(i)throw i.error}}var d=(0,tOt.U2)(t[0],"labelHeight",14),p=Math.max((0,tOt.U2)(t[0],"offset",0),ELt);(0,tOt.S6)(t,(function(t){if(t&&(0,tOt.U2)(u,[t.id])){var e=t.x>c.x||t.x===c.x&&t.y>c.y,n=(0,tOt.UM)(t.offsetX)?4:t.offsetX,r=lDt(c.x,c.y,l+ELt,t.angle),i=p+n;t.x=c.x+(e?1:-1)*(l+i),t.y=r.y}}));var v=a.start,g=a.end,m="right",y=(0,tOt.vM)(t,(function(t){return t.xb&&(b=Math.min(e,Math.abs(v.y-g.y)))}));var x={minX:v.x,maxX:g.x,minY:c.y-b/2,maxY:c.y+b/2};(0,tOt.S6)(y,(function(t,e){var n=b/d;t.length>n&&(t.sort((function(t,e){return e.percent-t.percent})),(0,tOt.S6)(t,(function(t,e){e>n&&(u[t.id].set("visible",!1),t.invisible=!0)}))),CLt(t,d,x)}));var w=x.minY,S=x.maxY;(0,tOt.S6)(y,(function(t,e){var n=e===m;(0,tOt.S6)(t,(function(t){var e=(0,tOt.U2)(u,t&&[t.id]);if(e)if(t.yS)e.set("visible",!1);else{var r=e.getChildByIndex(0),i=r.getCanvasBBox(),o=n?i.x:i.maxX,c=i.y+i.height/2;aFt(r,t.x-o,t.y-c),t.labelLine&&function(t,e,n){var r,i=e.getCenter(),o=e.getRadius(),a={x:t.x-(n?MLt:-MLt),y:t.y},c=lDt(i.x,i.y,o+ELt,t.angle),l={x:a.x,y:a.y},u={x:c.x,y:c.y},s=lDt(i.x,i.y,o,t.angle);if(a.y!==c.y){var f=n?4:-4;l.y=a.y,t.angle<0&&t.angle>=-Math.PI/2&&(l.x=Math.max(c.x,a.x-f),a.y0&&t.anglec.y?u.y=l.y:(u.y=c.y,u.x=Math.max(u.x,l.x-f))),t.angle>Math.PI/2&&(l.x=Math.min(c.x,a.x-f),a.y>c.y?u.y=l.y:(u.y=c.y,u.x=Math.min(u.x,l.x-f))),t.angle<-Math.PI/2&&(l.x=Math.min(c.x,a.x-f),a.y0&&r.push(i.shift()),i.length>0&&r.push(i.pop()),r.push.apply(r,(0,QCt.ev)([],(0,QCt.CR)(i),!1)),r}(l,h[t]);e.length;){var n=e.shift(),r=lFt(n);if(qLt(d,n,(function(t,e){return t.get("data")[s]===e.get("data")[s]&&t.get("data")[f]===e.get("data")[f]})))r.set("visible",!1);else{var i=!1;YLt(d,n)&&(r.attr("y",r.attr("y")+2*p),i=YLt(d,n)),i?r.set("visible",!1):d.push(n)}}}))}}})),jZt("fade-in",(function(t,e,n){var r={fillOpacity:(0,tOt.UM)(t.attr("fillOpacity"))?1:t.attr("fillOpacity"),strokeOpacity:(0,tOt.UM)(t.attr("strokeOpacity"))?1:t.attr("strokeOpacity"),opacity:(0,tOt.UM)(t.attr("opacity"))?1:t.attr("opacity")};t.attr({fillOpacity:0,strokeOpacity:0,opacity:0}),t.animate(r,e)})),jZt("fade-out",(function(t,e,n){var r=e.easing,i=e.duration,o=e.delay;t.animate({fillOpacity:0,strokeOpacity:0,opacity:0},i,r,(function(){t.remove(!0)}),o)})),jZt("grow-in-x",(function(t,e,n){JLt(t,e,n.coordinate,n.minYPoint,"x")})),jZt("grow-in-xy",(function(t,e,n){JLt(t,e,n.coordinate,n.minYPoint,"xy")})),jZt("grow-in-y",(function(t,e,n){JLt(t,e,n.coordinate,n.minYPoint,"y")})),jZt("scale-in-x",(function(t,e,n){var r=t.getBBox(),i=t.get("origin").mappingData.points,o=i[0].y-i[1].y>0?r.maxX:r.minX,a=(r.minY+r.maxY)/2;t.applyToMatrix([o,a,1]);var c=rAt.vs(t.getMatrix(),[["t",-o,-a],["s",.01,1],["t",o,a]]);t.setMatrix(c),t.animate({matrix:rAt.vs(t.getMatrix(),[["t",-o,-a],["s",100,1],["t",o,a]])},e)})),jZt("scale-in-y",(function(t,e,n){var r=t.getBBox(),i=t.get("origin").mappingData,o=(r.minX+r.maxX)/2,a=i.points,c=a[0].y-a[1].y<=0?r.maxY:r.minY;t.applyToMatrix([o,c,1]);var l=rAt.vs(t.getMatrix(),[["t",-o,-c],["s",1,.01],["t",o,c]]);t.setMatrix(l),t.animate({matrix:rAt.vs(t.getMatrix(),[["t",-o,-c],["s",1,100],["t",o,c]])},e)})),jZt("wave-in",(function(t,e,n){var r=xDt(n.coordinate,20),i=r.type,o=r.startState,a=r.endState,c=t.setClip({type:i,attrs:o});n.toAttrs&&t.attr(n.toAttrs),c.animate(a,(0,QCt.pi)((0,QCt.pi)({},e),{callback:function(){t&&!t.get("destroyed")&&t.set("clipShape",null),c.remove(!0),(0,tOt.mf)(e.callback)&&e.callback()}}))})),jZt("zoom-in",(function(t,e,n){nNt(t,e,"zoomIn")})),jZt("zoom-out",(function(t,e,n){nNt(t,e,"zoomOut")})),jZt("position-update",(function(t,e,n){var r=n.toAttrs,i=r.x,o=r.y;delete r.x,delete r.y,t.attr(r),t.animate({x:i,y:o},e)})),jZt("sector-path-update",(function(t,e,n){var r=n.toAttrs,i=n.coordinate,o=r.path||[],a=o.map((function(t){return t[0]}));if(!(o.length<1)){var c=eNt(o),l=c.startAngle,u=c.endAngle,s=c.radius,f=c.innerRadius,h=eNt(t.attr("path")),d=h.startAngle,p=h.endAngle,v=i.getCenter(),g=l-d,m=u-p;0!==g||0!==m?t.animate((function(t){var e=d+t*g,n=p+t*m;return(0,QCt.pi)((0,QCt.pi)({},r),{path:(0,tOt.Xy)(a,["M","A","A","Z"])?sDt(v.x,v.y,s,e,n):uDt(v.x,v.y,s,e,n,f)})}),(0,QCt.pi)((0,QCt.pi)({},e),{callback:function(){t.attr("path",o),(0,tOt.mf)(e.callback)&&e.callback()}})):t.attr("path",o)}})),jZt("path-in",(function(t,e,n){var r=t.getTotalLength();t.attr("lineDash",[r]),t.animate((function(t){return{lineDashOffset:(1-t)*r}}),e)})),LDt("rect",pNt),LDt("mirror",hNt),LDt("list",lNt),LDt("matrix",sNt),LDt("circle",aNt),LDt("tree",gNt),gZt("axis",PNt),gZt("legend",FNt),gZt("tooltip",TZt),gZt("annotation",wNt),gZt("slider",INt),gZt("scrollbar",LNt),VDt("tooltip",WNt),VDt("sibling-tooltip",GNt),VDt("ellipsis-text",qNt),VDt("element-active",eBt),VDt("element-single-active",fBt),VDt("element-range-active",cBt),VDt("element-highlight",xBt),VDt("element-highlight-by-x",CBt),VDt("element-highlight-by-color",SBt),VDt("element-single-highlight",ABt),VDt("element-range-highlight",EBt),VDt("element-sibling-highlight",EBt,{effectSiblings:!0,effectByRecord:!0}),VDt("element-selected",TBt),VDt("element-single-selected",FBt),VDt("element-range-selected",_Bt),VDt("element-link-by-color",rBt),VDt("active-region",UNt),VDt("list-active",LBt),VDt("list-selected",GBt),VDt("list-highlight",WBt),VDt("list-unchecked",qBt),VDt("list-checked",JBt),VDt("list-focus",ezt),VDt("list-radio",ozt),VDt("legend-item-highlight",WBt,{componentNames:["legend"]}),VDt("axis-label-highlight",WBt,{componentNames:["axis"]}),VDt("axis-description",pUt),VDt("rect-mask",pzt),VDt("x-rect-mask",yzt,{dim:"x"}),VDt("y-rect-mask",yzt,{dim:"y"}),VDt("circle-mask",szt),VDt("path-mask",Szt),VDt("smooth-path-mask",Mzt),VDt("rect-multi-mask",Dzt),VDt("x-rect-multi-mask",Zzt,{dim:"x"}),VDt("y-rect-multi-mask",Zzt,{dim:"y"}),VDt("circle-multi-mask",jzt),VDt("path-multi-mask",Rzt),VDt("smooth-path-multi-mask",Nzt),VDt("cursor",zzt),VDt("data-filter",Hzt),VDt("brush",Gzt),VDt("brush-x",Gzt,{dims:["x"]}),VDt("brush-y",Gzt,{dims:["y"]}),VDt("sibling-filter",qzt),VDt("sibling-x-filter",qzt,{dims:"x"}),VDt("sibling-y-filter",qzt,{dims:"y"}),VDt("element-filter",$zt),VDt("element-sibling-filter",Jzt),VDt("element-sibling-filter-record",Jzt,{byRecord:!0}),VDt("view-drag",nUt),VDt("view-move",iUt),VDt("scale-translate",lUt),VDt("scale-zoom",sUt),VDt("reset-button",tUt,{name:"reset-button",text:"reset"}),VDt("mousewheel-scroll",hUt),zTt("tooltip",{start:[{trigger:"plot:mousemove",action:"tooltip:show",throttle:{wait:50,leading:!0,trailing:!1}},{trigger:"plot:touchmove",action:"tooltip:show",throttle:{wait:50,leading:!0,trailing:!1}}],end:[{trigger:"plot:mouseleave",action:"tooltip:hide"},{trigger:"plot:leave",action:"tooltip:hide"},{trigger:"plot:touchend",action:"tooltip:hide"}]}),zTt("ellipsis-text",{start:[{trigger:"legend-item-name:mousemove",action:"ellipsis-text:show",throttle:{wait:50,leading:!0,trailing:!1}},{trigger:"legend-item-name:touchstart",action:"ellipsis-text:show",throttle:{wait:50,leading:!0,trailing:!1}},{trigger:"axis-label:mousemove",action:"ellipsis-text:show",throttle:{wait:50,leading:!0,trailing:!1}},{trigger:"axis-label:touchstart",action:"ellipsis-text:show",throttle:{wait:50,leading:!0,trailing:!1}}],end:[{trigger:"legend-item-name:mouseleave",action:"ellipsis-text:hide"},{trigger:"legend-item-name:touchend",action:"ellipsis-text:hide"},{trigger:"axis-label:mouseleave",action:"ellipsis-text:hide"},{trigger:"axis-label:mouseout",action:"ellipsis-text:hide"},{trigger:"axis-label:touchend",action:"ellipsis-text:hide"}]}),zTt("element-active",{start:[{trigger:"element:mouseenter",action:"element-active:active"}],end:[{trigger:"element:mouseleave",action:"element-active:reset"}]}),zTt("element-selected",{start:[{trigger:"element:click",action:"element-selected:toggle"}]}),zTt("element-highlight",{start:[{trigger:"element:mouseenter",action:"element-highlight:highlight"}],end:[{trigger:"element:mouseleave",action:"element-highlight:reset"}]}),zTt("element-highlight-by-x",{start:[{trigger:"element:mouseenter",action:"element-highlight-by-x:highlight"}],end:[{trigger:"element:mouseleave",action:"element-highlight-by-x:reset"}]}),zTt("element-highlight-by-color",{start:[{trigger:"element:mouseenter",action:"element-highlight-by-color:highlight"}],end:[{trigger:"element:mouseleave",action:"element-highlight-by-color:reset"}]}),zTt("legend-active",{start:[{trigger:"legend-item:mouseenter",action:["list-active:active","element-active:active"]}],end:[{trigger:"legend-item:mouseleave",action:["list-active:reset","element-active:reset"]}]}),zTt("legend-highlight",{start:[{trigger:"legend-item:mouseenter",action:["legend-item-highlight:highlight","element-highlight:highlight"]}],end:[{trigger:"legend-item:mouseleave",action:["legend-item-highlight:reset","element-highlight:reset"]}]}),zTt("axis-label-highlight",{start:[{trigger:"axis-label:mouseenter",action:["axis-label-highlight:highlight","element-highlight:highlight"]}],end:[{trigger:"axis-label:mouseleave",action:["axis-label-highlight:reset","element-highlight:reset"]}]}),zTt("element-list-highlight",{start:[{trigger:"element:mouseenter",action:["list-highlight:highlight","element-highlight:highlight"]}],end:[{trigger:"element:mouseleave",action:["list-highlight:reset","element-highlight:reset"]}]}),zTt("element-range-highlight",{showEnable:[{trigger:"plot:mouseenter",action:"cursor:crosshair"},{trigger:"mask:mouseenter",action:"cursor:move"},{trigger:"plot:mouseleave",action:"cursor:default"},{trigger:"mask:mouseleave",action:"cursor:crosshair"}],start:[{trigger:"plot:mousedown",isEnable:function(t){return!t.isInShape("mask")},action:["rect-mask:start","rect-mask:show"]},{trigger:"mask:dragstart",action:["rect-mask:moveStart"]}],processing:[{trigger:"plot:mousemove",action:["rect-mask:resize"]},{trigger:"mask:drag",action:["rect-mask:move"]},{trigger:"mask:change",action:["element-range-highlight:highlight"]}],end:[{trigger:"plot:mouseup",action:["rect-mask:end"]},{trigger:"mask:dragend",action:["rect-mask:moveEnd"]},{trigger:"document:mouseup",isEnable:function(t){return!t.isInPlot()},action:["element-range-highlight:clear","rect-mask:end","rect-mask:hide"]}],rollback:[{trigger:"dblclick",action:["element-range-highlight:clear","rect-mask:hide"]}]}),zTt("brush",{showEnable:[{trigger:"plot:mouseenter",action:"cursor:crosshair"},{trigger:"plot:mouseleave",action:"cursor:default"}],start:[{trigger:"mousedown",isEnable:vUt,action:["brush:start","rect-mask:start","rect-mask:show"]}],processing:[{trigger:"mousemove",isEnable:vUt,action:["rect-mask:resize"]}],end:[{trigger:"mouseup",isEnable:vUt,action:["brush:filter","brush:end","rect-mask:end","rect-mask:hide","reset-button:show"]}],rollback:[{trigger:"reset-button:click",action:["brush:reset","reset-button:hide","cursor:crosshair"]}]}),zTt("brush-visible",{showEnable:[{trigger:"plot:mouseenter",action:"cursor:crosshair"},{trigger:"plot:mouseleave",action:"cursor:default"}],start:[{trigger:"plot:mousedown",action:["rect-mask:start","rect-mask:show"]}],processing:[{trigger:"plot:mousemove",action:["rect-mask:resize"]},{trigger:"mask:change",action:["element-range-highlight:highlight"]}],end:[{trigger:"plot:mouseup",action:["rect-mask:end","rect-mask:hide","element-filter:filter","element-range-highlight:clear"]}],rollback:[{trigger:"dblclick",action:["element-filter:clear"]}]}),zTt("brush-x",{showEnable:[{trigger:"plot:mouseenter",action:"cursor:crosshair"},{trigger:"plot:mouseleave",action:"cursor:default"}],start:[{trigger:"mousedown",isEnable:vUt,action:["brush-x:start","x-rect-mask:start","x-rect-mask:show"]}],processing:[{trigger:"mousemove",isEnable:vUt,action:["x-rect-mask:resize"]}],end:[{trigger:"mouseup",isEnable:vUt,action:["brush-x:filter","brush-x:end","x-rect-mask:end","x-rect-mask:hide"]}],rollback:[{trigger:"dblclick",action:["brush-x:reset"]}]}),zTt("element-path-highlight",{showEnable:[{trigger:"plot:mouseenter",action:"cursor:crosshair"},{trigger:"plot:mouseleave",action:"cursor:default"}],start:[{trigger:"mousedown",isEnable:vUt,action:"path-mask:start"},{trigger:"mousedown",isEnable:vUt,action:"path-mask:show"}],processing:[{trigger:"mousemove",action:"path-mask:addPoint"}],end:[{trigger:"mouseup",action:"path-mask:end"}],rollback:[{trigger:"dblclick",action:"path-mask:hide"}]}),zTt("brush-x-multi",{showEnable:[{trigger:"plot:mouseenter",action:"cursor:crosshair"},{trigger:"mask:mouseenter",action:"cursor:move"},{trigger:"plot:mouseleave",action:"cursor:default"},{trigger:"mask:mouseleave",action:"cursor:crosshair"}],start:[{trigger:"mousedown",isEnable:vUt,action:["x-rect-multi-mask:start","x-rect-multi-mask:show"]},{trigger:"mask:dragstart",action:["x-rect-multi-mask:moveStart"]}],processing:[{trigger:"mousemove",isEnable:function(t){return!fTt(t)},action:["x-rect-multi-mask:resize"]},{trigger:"multi-mask:change",action:"element-range-highlight:highlight"},{trigger:"mask:drag",action:["x-rect-multi-mask:move"]}],end:[{trigger:"mouseup",action:["x-rect-multi-mask:end"]},{trigger:"mask:dragend",action:["x-rect-multi-mask:moveEnd"]}],rollback:[{trigger:"dblclick",action:["x-rect-multi-mask:clear","cursor:crosshair"]},{trigger:"multi-mask:clearAll",action:["element-range-highlight:clear"]},{trigger:"multi-mask:clearSingle",action:["element-range-highlight:highlight"]}]}),zTt("element-single-selected",{start:[{trigger:"element:click",action:"element-single-selected:toggle"}]}),zTt("legend-filter",{showEnable:[{trigger:"legend-item:mouseenter",action:["cursor:pointer","list-radio:show"]},{trigger:"legend-item:mouseleave",action:["cursor:default","list-radio:hide"]}],start:[{trigger:"legend-item:click",isEnable:function(t){return!t.isInShape("legend-item-radio")},action:["legend-item-highlight:reset","element-highlight:reset","list-unchecked:toggle","data-filter:filter","list-radio:show"]},{trigger:"legend-item-radio:mouseenter",action:["list-radio:showTip"]},{trigger:"legend-item-radio:mouseleave",action:["list-radio:hideTip"]},{trigger:"legend-item-radio:click",action:["list-focus:toggle","data-filter:filter","list-radio:show"]}]}),zTt("continuous-filter",{start:[{trigger:"legend:valuechanged",action:"data-filter:filter"}]}),zTt("continuous-visible-filter",{start:[{trigger:"legend:valuechanged",action:"element-filter:filter"}]}),zTt("legend-visible-filter",{showEnable:[{trigger:"legend-item:mouseenter",action:"cursor:pointer"},{trigger:"legend-item:mouseleave",action:"cursor:default"}],start:[{trigger:"legend-item:click",action:["legend-item-highlight:reset","element-highlight:reset","list-unchecked:toggle","element-filter:filter"]}]}),zTt("active-region",{start:[{trigger:"plot:mousemove",action:"active-region:show"}],end:[{trigger:"plot:mouseleave",action:"active-region:hide"}]}),zTt("axis-description",{start:[{trigger:"axis-description:mousemove",action:"axis-description:show"}],end:[{trigger:"axis-description:mouseleave",action:"axis-description:hide"}]}),zTt("view-zoom",{start:[{trigger:"plot:mousewheel",isEnable:function(t){return gUt(t.event)},action:"scale-zoom:zoomOut",throttle:{wait:100,leading:!0,trailing:!1}},{trigger:"plot:mousewheel",isEnable:function(t){return!gUt(t.event)},action:"scale-zoom:zoomIn",throttle:{wait:100,leading:!0,trailing:!1}}]}),zTt("sibling-tooltip",{start:[{trigger:"plot:mousemove",action:"sibling-tooltip:show"}],end:[{trigger:"plot:mouseleave",action:"sibling-tooltip:hide"}]}),zTt("plot-mousewheel-scroll",{start:[{trigger:"plot:mousewheel",action:"mousewheel-scroll:scroll"}]});var mUt,yUt=["type","alias","tickCount","tickInterval","min","max","nice","minLimit","maxLimit","range","tickMethod","base","exponent","mask","sync"];!function(t){t.ERROR="error",t.WARN="warn",t.INFO="log"}(mUt||(mUt={}));var bUt="AntV/G2Plot";function xUt(t){for(var e=[],n=1;n=0})),i=n.every((function(t){return(0,tOt.U2)(t,[e])<=0}));return r?{min:0}:i?{max:0}:{}}function CUt(t,e,n,r,i){if(void 0===i&&(i=[]),!Array.isArray(t))return{nodes:[],links:[]};var o=[],a={},c=-1;return t.forEach((function(t){var l=t[e],u=t[n],s=t[r],f=SUt(t,i);a[l]||(a[l]=(0,QCt.pi)({id:++c,name:l},f)),a[u]||(a[u]=(0,QCt.pi)({id:++c,name:u},f)),o.push((0,QCt.pi)({source:a[l].id,target:a[u].id,value:s},f))})),{nodes:Object.values(a).sort((function(t,e){return t.id-e.id})),links:o}}function OUt(t,e){var n=(0,tOt.hX)(t,(function(t){var n=t[e];return null===n||"number"==typeof n&&!isNaN(n)}));return wUt(mUt.WARN,n.length===t.length,"illegal data existed in chart data."),n}var EUt,MUt={}.toString,AUt=function(t,e){return MUt.call(t)==="[object "+e+"]"},PUt=function(t){return AUt(t,"Array")},_Ut=function(t){if(!function(t){return"object"==typeof t&&null!==t}(t)||!AUt(t,"Object"))return!1;for(var e=t;null!==Object.getPrototypeOf(e);)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(t)===e},DUt=function t(e,n,r,i){for(var o in r=r||0,i=i||5,n)if(Object.prototype.hasOwnProperty.call(n,o)){var a=n[o];a?_Ut(a)?(_Ut(e[o])||(e[o]={}),r0&&(n=n.map((function(t,n){return e.forEach((function(r,i){t+=e[i][n]})),t}))),n}var HUt=function(t,e,n,r){var i,o,a,c,l=[],u=!!r;if(u){a=[1/0,1/0],c=[-1/0,-1/0];for(var s=0,f=t.length;s"},key:"".concat(0===r?"top":"bottom","-statistic")},SUt(e,["offsetX","offsetY","rotate","style","formatter"])))}}))},YUt=function(t,e,n){var r=e.statistic;[r.title,r.content].forEach((function(e){if(e){var r=(0,tOt.mf)(e.style)?e.style(n):e.style;t.annotation().html((0,QCt.pi)({position:["50%","100%"],html:function(t,i){var o=i.getCoordinate(),a=i.views[0].getCoordinate(),c=a.getCenter(),l=a.getRadius(),u=Math.max(Math.sin(a.startAngle),Math.sin(a.endAngle))*l,s=c.y+u-o.y.start-parseFloat((0,tOt.U2)(r,"fontSize",0)),f=o.getRadius()*o.innerRadius*2;XUt(t,(0,QCt.pi)({width:"".concat(f,"px"),transform:"translate(-50%, ".concat(s,"px)")},GUt(r)));var h=i.getData();if(e.customHtml)return e.customHtml(t,i,n,h);var d=e.content;return e.formatter&&(d=e.formatter(n,h)),d?(0,tOt.HD)(d)?d:"".concat(d):"
    "}},SUt(e,["offsetX","offsetY","rotate","style","formatter"])))}}))};function $Ut(t,e){return e?(0,tOt.u4)(e,(function(t,e,n){return t.replace(new RegExp("{\\s*".concat(n,"\\s*}"),"g"),e)}),t):t}function KUt(t,e){return t.views.find((function(t){return t.id===e}))}function JUt(t){var e=t.parent;return e?e.views:[]}function QUt(t){return JUt(t).filter((function(e){return e!==t}))}function tHt(t,e,n){void 0===n&&(n=t.geometries),"boolean"==typeof e?t.animate(e):t.animate(!0),(0,tOt.S6)(n,(function(t){var n;n=(0,tOt.mf)(e)?e(t.type||t.shapeType,t)||!0:e,t.animate(n)}))}function eHt(){return"object"==typeof window?null===window||void 0===window?void 0:window.devicePixelRatio:2}function nHt(t,e){void 0===e&&(e=t);var n=document.createElement("canvas"),r=eHt();return n.width=t*r,n.height=e*r,n.style.width="".concat(t,"px"),n.style.height="".concat(e,"px"),n.getContext("2d").scale(r,r),n}function rHt(t,e,n,r){void 0===r&&(r=n);var i=e.backgroundColor,o=e.opacity;t.globalAlpha=o,t.fillStyle=i,t.beginPath(),t.fillRect(0,0,n,r),t.closePath()}function iHt(t,e,n){var r=t+e;return n?2*r:r}function oHt(t,e){return e?[[t*(1/4),t*(1/4)],[t*(3/4),t*(3/4)]]:[[.5*t,.5*t]]}function aHt(t,e){var n=e*Math.PI/180;return{a:Math.cos(n)*(1/t),b:Math.sin(n)*(1/t),c:-Math.sin(n)*(1/t),d:Math.cos(n)*(1/t),e:0,f:0}}var cHt={size:6,padding:2,backgroundColor:"transparent",opacity:1,rotation:0,fill:"#fff",fillOpacity:.5,stroke:"transparent",lineWidth:0,isStagger:!0};function lHt(t,e,n,r){var i=e.size,o=e.fill,a=e.lineWidth,c=e.stroke,l=e.fillOpacity;t.beginPath(),t.globalAlpha=l,t.fillStyle=o,t.strokeStyle=c,t.lineWidth=a,t.arc(n,r,i/2,0,2*Math.PI,!1),t.fill(),a&&t.stroke(),t.closePath()}var uHt={rotation:45,spacing:5,opacity:1,backgroundColor:"transparent",strokeOpacity:.5,stroke:"#fff",lineWidth:2};function sHt(t){var e=TUt({},uHt,t),n=e.spacing,r=e.rotation,i=e.lineWidth,o=n+i||1,a=n+i||1,c="\n M 0 0 L ".concat(o," 0\n M 0 ").concat(a," L ").concat(o," ").concat(a,"\n "),l=nHt(o,a),u=l.getContext("2d");rHt(u,e,o,a),function(t,e,n){var r=e.stroke,i=e.lineWidth,o=e.strokeOpacity,a=new Path2D(n);t.globalAlpha=o,t.lineCap="square",t.strokeStyle=i?r:"transparent",t.lineWidth=i,t.stroke(a)}(u,e,c);var s=u.createPattern(l,"repeat");if(s){var f=aHt(eHt(),r);s.setTransform(f)}return s}var fHt={size:6,padding:1,isStagger:!0,backgroundColor:"transparent",opacity:1,rotation:0,fill:"#fff",fillOpacity:.5,stroke:"transparent",lineWidth:0};function hHt(t,e,n,r){var i=e.stroke,o=e.size,a=e.fill,c=e.lineWidth,l=e.fillOpacity;t.globalAlpha=l,t.strokeStyle=i,t.lineWidth=c,t.fillStyle=a,t.strokeRect(n-o/2,r-o/2,o,o),t.fillRect(n-o/2,r-o/2,o,o)}function dHt(t){var e,n=t.type,r=t.cfg;switch(n){case"dot":e=function(t){var e=TUt({},cHt,t),n=e.size,r=e.padding,i=e.isStagger,o=e.rotation,a=iHt(n,r,i),c=oHt(a,i),l=nHt(a,a),u=l.getContext("2d");rHt(u,e,a);for(var s=0,f=c;sb){var w=x/v.length,S=Math.max(1,Math.ceil(b/w)-1),k="".concat(v.slice(0,S),"...");y.attr("text",k)}}}}(t,e,n)}function xWt(t){var e=t.options,n=e.legend,r=e.seriesField,i=e.isStack;return r?!1!==n&&(n=(0,QCt.pi)({position:i?"right-top":"top-left"},n)):n=!1,t.options.legend=n,t}function wWt(t){var e=t.chart,n=t.options,r=n.data,i=n.columnStyle,o=n.color,a=n.columnWidthRatio,c=n.isPercent,l=n.isGroup,u=n.isStack,s=n.xField,f=n.yField,h=n.seriesField,d=n.groupField,p=n.tooltip,v=n.shape,g=c&&l&&u?function(t,e,n,r){var i=(0,tOt.u4)(t,(function(t,r){var i=(0,tOt.u4)(n,(function(t,e){return"".concat(t).concat(r[e])}),""),o=t.has(i)?t.get(i):0,a=r[e];return o=NUt(a)?o+a:o,t.set(i,o),t}),new Map);return(0,tOt.UI)(t,(function(t){var o,a=t[e],c=(0,tOt.u4)(n,(function(e,n){return"".concat(e).concat(t[n])}),""),l=NUt(a)&&0!==i.get(c)?a/i.get(c):0;return(0,QCt.pi)((0,QCt.pi)({},t),((o={})[r]=l,o))}))}(r,f,[s,d],f):XHt(r,f,s,f,c),m=[];u&&h&&!l?g.forEach((function(t){var e=m.find((function(e){return e[s]===t[s]&&e[h]===t[h]}));e?e[f]+=t[f]||0:m.push((0,QCt.pi)({},t))})):m=g,e.data(m);var y=c?(0,QCt.pi)({formatter:function(t){var e;return{name:l&&u?"".concat(t[h]," - ").concat(t[d]):null!==(e=t[h])&&void 0!==e?e:t[s],value:(100*Number(t[f])).toFixed(2)+"%"}}},p):p,b=TUt({},t,{options:{data:m,widthRatio:a,tooltip:y,interval:{shape:v,style:i,color:o}}});return RHt(b),b}function SWt(t){var e,n,r=t.options,i=r.xAxis,o=r.yAxis,a=r.xField,c=r.yField,l=r.data,u=r.isPercent?{max:1,min:0,minLimit:0,maxLimit:1}:{};return FUt(kHt(((e={})[a]=i,e[c]=o,e),((n={})[a]={type:"cat"},n[c]=(0,QCt.pi)((0,QCt.pi)({},kUt(l,c)),u),n)))(t)}function kWt(t){var e=t.chart,n=t.options,r=n.xAxis,i=n.yAxis,o=n.xField,a=n.yField;return!1===r?e.axis(o,!1):e.axis(o,r),!1===i?e.axis(a,!1):e.axis(a,i),t}function CWt(t){var e=t.chart,n=t.options,r=n.legend,i=n.seriesField;return r&&i?e.legend(i,r):!1===r&&e.legend(!1),t}function OWt(t){var e=t.chart,n=t.options,r=n.label,i=n.yField,o=n.isRange,a=jUt(e,"interval");if(r){var c=r.callback,l=(0,QCt._T)(r,["callback"]);a.label({fields:[i],callback:c,cfg:(0,QCt.pi)({layout:(null==l?void 0:l.position)?void 0:[{type:"interval-adjust-position"},{type:"interval-hide-overlap"},{type:"adjust-color"},{type:"limit-in-plot",cfg:{action:"hide"}}]},LUt(o?(0,QCt.pi)({content:function(t){var e;return null===(e=t[i])||void 0===e?void 0:e.join("-")}},l):l))})}else a.label(!1);return t}function EWt(t){var e=t.chart,n=t.options,r=n.tooltip,i=n.isGroup,o=n.isStack,a=n.groupField,c=n.data,l=n.xField,u=n.yField,s=n.seriesField;if(!1===r)e.tooltip(!1);else{var f=r;if(i&&o){var h=f.customItems,d=(null==f?void 0:f.formatter)||function(t){return{name:"".concat(t[s]," - ").concat(t[a]),value:t[u]}};f=(0,QCt.pi)((0,QCt.pi)({},f),{customItems:function(t){var e=[];return(0,tOt.S6)(t,(function(t){(0,tOt.hX)(c,(function(e){return(0,tOt.BD)(e,SUt(t.data,[l,s]))})).forEach((function(n){e.push((0,QCt.pi)((0,QCt.pi)((0,QCt.pi)({},t),{value:n[u],data:n,mappingData:{_origin:n}}),d(n)))}))})),h?h(e):e}})}e.tooltip(f)}return t}function MWt(t,e){void 0===e&&(e=!1);var n,r=t.options,i=r.seriesField;return FUt(xWt,bHt,pHt("columnStyle"),xHt,EHt("rect"),wWt,SWt,kWt,CWt,EWt,wHt,SHt,OWt,dWt,mHt,yHt,CHt(),function(t,e,n){return void 0===e&&(e=!0),void 0===n&&(n=!1),function(r){var i=r.options,o=r.chart,a=i.conversionTag,c=i.theme;return a&&!n&&(o.theme(TUt({},(0,tOt.Kn)(c)?c:iZt(c),{columnWidthRatio:1/3})),o.annotation().shape({render:function(n,r){var i=n.addGroup({id:"".concat(o.id,"-conversion-tag-group"),name:"conversion-tag-group"}),c=(0,tOt.sE)(o.geometries,(function(t){return"interval"===t.type})),l={view:r,geometry:c,group:i,field:t,horizontal:e,options:mWt(a,e)},u=c.elements;(0,tOt.S6)(u,(function(t,e){e>0&&bWt(l,u[e-1],t)}))}})),r}}(r.yField,!e,!!i),(void 0===(n=!r.isStack)&&(n=!1),function(t){var e=t.chart,r=t.options.connectedArea,i=function(){e.removeInteraction(pWt.hover),e.removeInteraction(pWt.click)};if(!n&&r){var o=r.trigger||"hover";i(),e.interaction(pWt[o],{start:vWt(o,r.style)})}else i();return t}),OHt)(t)}function AWt(t){var e=t.options,n=e.xField,r=e.yField,i=e.xAxis,o=e.yAxis,a={left:"bottom",right:"top",top:"left",bottom:"right"},c=!1!==o&&(0,QCt.pi)({position:a[(null==o?void 0:o.position)||"left"]},o),l=!1!==i&&(0,QCt.pi)({position:a[(null==i?void 0:i.position)||"bottom"]},i);return(0,QCt.pi)((0,QCt.pi)({},t),{options:(0,QCt.pi)((0,QCt.pi)({},e),{xField:r,yField:n,xAxis:c,yAxis:l})})}function PWt(t){var e=t.options.label;return e&&!e.position&&(e.position="left",e.layout||(e.layout=[{type:"interval-adjust-position"},{type:"interval-hide-overlap"},{type:"adjust-color"},{type:"limit-in-plot",cfg:{action:"hide"}}])),TUt({},t,{options:{label:e}})}function _Wt(t){var e=t.options,n=e.seriesField,r=e.isStack,i=e.legend;return n?!1!==i&&(i=(0,QCt.pi)({position:r?"top-left":"right-top"},i||{})):i=!1,TUt({},t,{options:{legend:i}})}function DWt(t){var e=t.options,n=[{type:"transpose"},{type:"reflectY"}].concat(e.coordinate||[]);return TUt({},t,{options:{coordinate:n}})}function TWt(t){var e=t.chart,n=t.options,r=n.barStyle,i=n.barWidthRatio,o=n.minBarWidth,a=n.maxBarWidth,c=n.barBackground;return MWt({chart:e,options:(0,QCt.pi)((0,QCt.pi)({},n),{columnStyle:r,columnWidthRatio:i,minColumnWidth:o,maxColumnWidth:a,columnBackground:c})},!0)}function ZWt(t){return FUt(AWt,PWt,_Wt,gHt,DWt,TWt)(t)}zTt(pWt.hover,{start:vWt(pWt.hover),end:[{trigger:"interval:mouseleave",action:["element-highlight-by-color:reset","element-link-by-color:unlink"]}]}),zTt(pWt.click,{start:vWt(pWt.click),end:[{trigger:"document:mousedown",action:["element-highlight-by-color:clear","element-link-by-color:clear"]}]});var FWt,jWt=TUt({},VHt.getDefaultOptions(),{barWidthRatio:.6,marginRatio:1/32,tooltip:{shared:!0,showMarkers:!1,offset:20},legend:{radio:{}},interactions:[{type:"active-region"}]}),IWt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="bar",e}return(0,QCt.ZT)(e,t),e.getDefaultOptions=function(){return jWt},e.prototype.changeData=function(t){var e,n;this.updateOption({data:t});var r=this.chart,i=this.options,o=i.isPercent,a=i.xField,c=i.yField,l=i.xAxis,u=i.yAxis;a=(e=[c,a])[0],c=e[1],l=(n=[u,l])[0],u=n[1],SWt({chart:r,options:(0,QCt.pi)((0,QCt.pi)({},i),{xField:a,yField:c,yAxis:u,xAxis:l})}),r.changeData(XHt(t,a,c,a,o))},e.prototype.getDefaultOptions=function(){return e.getDefaultOptions()},e.prototype.getSchemaAdaptor=function(){return ZWt},e}(VHt),RWt=TUt({},VHt.getDefaultOptions(),{columnWidthRatio:.6,marginRatio:1/32,tooltip:{shared:!0,showMarkers:!1,offset:20},legend:{radio:{}},interactions:[{type:"active-region"}]}),LWt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="column",e}return(0,QCt.ZT)(e,t),e.getDefaultOptions=function(){return RWt},e.prototype.changeData=function(t){this.updateOption({data:t});var e=this.options,n=e.yField,r=e.xField,i=e.isPercent;SWt({chart:this.chart,options:this.options}),this.chart.changeData(XHt(t,n,r,n,i))},e.prototype.getDefaultOptions=function(){return e.getDefaultOptions()},e.prototype.getSchemaAdaptor=function(){return MWt},e}(VHt),NWt="$$percentage$$",BWt="$$mappingValue$$",zWt="$$conversion$$",UWt="$$totalPercentage$$",HWt="$$x$$",WWt="$$y$$",VWt={appendPadding:[0,80],minSize:0,maxSize:1,meta:(FWt={},FWt[BWt]={min:0,max:1,nice:!1},FWt),label:{style:{fill:"#fff",fontSize:12}},tooltip:{showTitle:!1,showMarkers:!1,shared:!1},conversionTag:{offsetX:10,offsetY:0,style:{fontSize:12,fill:"rgba(0,0,0,0.45)"}}},GWt="CONVERSION_TAG_NAME";function XWt(t,e,n){var r,i=n.yField,o=n.maxSize,a=n.minSize,c=(0,tOt.U2)((0,tOt.UT)(e,i),[i]),l=(0,tOt.hj)(o)?o:1,u=(0,tOt.hj)(a)?a:0;return r=(0,tOt.UI)(t,(function(e,n){var r=(e[i]||0)/c;return e[NWt]=r,e[BWt]=(l-u)*r+u,e[zWt]=[(0,tOt.U2)(t,[n-1,i]),e[i]],e})),r}function qWt(t){return function(e){var n=e.chart,r=e.options,i=r.conversionTag,o=r.filteredData||n.getOptions().data;if(i){var a=i.formatter;o.forEach((function(e,r){if(!(r<=0||Number.isNaN(e[BWt]))){var c=t(e,r,o,{top:!0,name:GWt,text:{content:(0,tOt.mf)(a)?a(e,o):a,offsetX:i.offsetX,offsetY:i.offsetY,position:"end",autoRotate:!1,style:(0,QCt.pi)({textAlign:"start",textBaseline:"middle"},i.style)}});n.annotation().line(c)}}))}return e}}function YWt(t){var e=t.chart,n=t.options,r=n.data,i=void 0===r?[]:r,o=XWt(i,i,{yField:n.yField,maxSize:n.maxSize,minSize:n.minSize});return e.data(o),t}function $Wt(t){var e=t.chart,n=t.options,r=n.xField,i=n.yField,o=n.color,a=n.tooltip,c=n.label,l=n.shape,u=void 0===l?"funnel":l,s=n.funnelStyle,f=n.state,h=DHt(a,[r,i]),d=h.fields,p=h.formatter;return FHt({chart:e,options:{type:"interval",xField:r,yField:BWt,colorField:r,tooltipFields:(0,tOt.kJ)(d)&&d.concat([NWt,zWt]),mapping:{shape:u,tooltip:p,color:o,style:s},label:c,state:f}}),jUt(t.chart,"interval").adjust("symmetric"),t}function KWt(t){var e=t.chart,n=t.options.isTransposed;return e.coordinate({type:"rect",actions:n?[]:[["transpose"],["scale",1,-1]]}),t}function JWt(t){var e=t.options,n=t.chart,r=e.maxSize,i=(0,tOt.U2)(n,["geometries","0","dataArray"],[]),o=(0,tOt.U2)(n,["options","data","length"]),a=(0,tOt.UI)(i,(function(t){return(0,tOt.U2)(t,["0","nextPoints","0","x"])*o-.5}));return qWt((function(t,e,n,i){var o=r-(r-t[BWt])/2;return(0,QCt.pi)((0,QCt.pi)({},i),{start:[a[e-1]||e-.5,o],end:[a[e-1]||e-.5,o+.05]})}))(t),t}function QWt(t){return FUt(YWt,$Wt,KWt,JWt)(t)}function tVt(t){var e,n=t.chart,r=t.options,i=r.data,o=void 0===i?[]:i,a=r.yField;return n.data(o),n.scale(((e={})[a]={sync:!0},e)),t}function eVt(t){var e=t.chart,n=t.options,r=n.data,i=n.xField,o=n.yField,a=n.color,c=n.compareField,l=n.isTransposed,u=n.tooltip,s=n.maxSize,f=n.minSize,h=n.label,d=n.funnelStyle,p=n.state,v=n.showFacetTitle;return e.facet("mirror",{fields:[c],transpose:!l,padding:l?0:[32,0,0,0],showTitle:v,eachView:function(t,e){var n=l?e.rowIndex:e.columnIndex;l||t.coordinate({type:"rect",actions:[["transpose"],["scale",0===n?-1:1,-1]]});var v=XWt(e.data,r,{yField:o,maxSize:s,minSize:f});t.data(v);var g=DHt(u,[i,o,c]),m=g.fields,y=g.formatter,b=l?{offset:0===n?10:-23,position:0===n?"bottom":"top"}:{offset:10,position:"left",style:{textAlign:0===n?"end":"start"}};FHt({chart:t,options:{type:"interval",xField:i,yField:BWt,colorField:i,tooltipFields:(0,tOt.kJ)(m)&&m.concat([NWt,zWt]),mapping:{shape:"funnel",tooltip:y,color:a,style:d},label:!1!==h&&TUt({},b,h),state:p}})}}),t}function nVt(t){var e=t.chart,n=t.index,r=t.options,i=r.conversionTag,o=r.isTransposed;((0,tOt.hj)(n)?[e]:e.views).forEach((function(t,e){var a=(0,tOt.U2)(t,["geometries","0","dataArray"],[]),c=(0,tOt.U2)(t,["options","data","length"]),l=(0,tOt.UI)(a,(function(t){return(0,tOt.U2)(t,["0","nextPoints","0","x"])*c-.5}));qWt((function(t,r,a,c){var u=0===(n||e)?-1:1;return TUt({},c,{start:[l[r-1]||r-.5,t[BWt]],end:[l[r-1]||r-.5,t[BWt]+.05],text:o?{style:{textAlign:"start"}}:{offsetX:!1!==i?u*i.offsetX:0,style:{textAlign:0===(n||e)?"end":"start"}}})}))(TUt({},{chart:t,options:r}))}))}function rVt(t){return t.chart.once("beforepaint",(function(){return nVt(t)})),t}function iVt(t){var e=t.chart,n=t.options,r=n.data,i=void 0===r?[]:r,o=n.yField,a=(0,tOt.u4)(i,(function(t,e){return t+(e[o]||0)}),0),c=(0,tOt.UT)(i,o)[o],l=(0,tOt.UI)(i,(function(t,e){var n=[],r=[];if(t[UWt]=(t[o]||0)/a,e){var l=i[e-1][HWt],u=i[e-1][WWt];n[0]=l[3],r[0]=u[3],n[1]=l[2],r[1]=u[2]}else n[0]=-.5,r[0]=1,n[1]=.5,r[1]=1;return r[2]=r[1]-t[UWt],n[2]=(r[2]+1)/4,r[3]=r[2],n[3]=-n[2],t[HWt]=n,t[WWt]=r,t[NWt]=(t[o]||0)/c,t[zWt]=[(0,tOt.U2)(i,[e-1,o]),t[o]],t}));return e.data(l),t}function oVt(t){var e=t.chart,n=t.options,r=n.xField,i=n.yField,o=n.color,a=n.tooltip,c=n.label,l=n.funnelStyle,u=n.state,s=DHt(a,[r,i]),f=s.fields,h=s.formatter;return FHt({chart:e,options:{type:"polygon",xField:HWt,yField:WWt,colorField:r,tooltipFields:(0,tOt.kJ)(f)&&f.concat([NWt,zWt]),label:c,state:u,mapping:{tooltip:h,color:o,style:l}}}),t}function aVt(t){var e=t.chart,n=t.options.isTransposed;return e.coordinate({type:"rect",actions:n?[["transpose"],["reflect","x"]]:[]}),t}function cVt(t){return qWt((function(t,e,n,r){return(0,QCt.pi)((0,QCt.pi)({},r),{start:[t[HWt][1],t[WWt][1]],end:[t[HWt][1]+.05,t[WWt][1]]})}))(t),t}function lVt(t){var e,n=t.chart,r=t.options,i=r.data,o=void 0===i?[]:i,a=r.yField;return n.data(o),n.scale(((e={})[a]={sync:!0},e)),t}function uVt(t){var e=t.chart,n=t.options,r=n.seriesField,i=n.isTransposed,o=n.showFacetTitle;return e.facet("rect",{fields:[r],padding:[i?0:32,10,0,10],showTitle:o,eachView:function(e,n){QWt(TUt({},t,{chart:e,options:{data:n.data}}))}}),t}var sVt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.rendering=!1,e}return(0,QCt.ZT)(e,t),e.prototype.change=function(t){var e=this;if(!this.rendering){var n=t.seriesField,r=t.compareField,i=r?nVt:JWt,o=this.context.view,a=n||r?o.views:[o];(0,tOt.UI)(a,(function(n,r){var o=n.getController("annotation"),a=(0,tOt.hX)((0,tOt.U2)(o,["option"],[]),(function(t){return t.name!==GWt}));o.clear(!0),(0,tOt.S6)(a,(function(t){"object"==typeof t&&n.annotation()[t.type](t)}));var c=(0,tOt.U2)(n,["filteredData"],n.getOptions().data);i({chart:n,index:r,options:(0,QCt.pi)((0,QCt.pi)({},t),{filteredData:XWt(c,c,t)})}),n.filterData(c),e.rendering=!0,n.render(!0)}))}this.rendering=!1},e}(BDt),fVt="funnel-conversion-tag",hVt="funnel-afterrender",dVt={trigger:"afterrender",action:"".concat(fVt,":change")};function pVt(t){var e,n=t.options,r=n.compareField,i=n.xField,o=n.yField,a=n.locale,c=n.funnelStyle,l=n.data,u=_Ht(a),s={label:r?{fields:[i,o,r,NWt,zWt],formatter:function(t){return"".concat(t[o])}}:{fields:[i,o,NWt,zWt],offset:0,position:"middle",formatter:function(t){return"".concat(t[i]," ").concat(t[o])}},tooltip:{title:i,formatter:function(t){return{name:t[i],value:t[o]}}},conversionTag:{formatter:function(t){return"".concat(u.get(["conversionTag","label"]),": ").concat(gWt.apply(void 0,t[zWt]))}}};return(r||c)&&(e=function(t){return TUt({},r&&{lineWidth:1,stroke:"#fff"},(0,tOt.mf)(c)?c(t):c)}),TUt({options:s},t,{options:{funnelStyle:e,data:(0,tOt.d9)(l)}})}function vVt(t){var e=t.options,n=e.compareField,r=e.dynamicHeight;return e.seriesField?function(t){return FUt(lVt,uVt)(t)}(t):n?function(t){return FUt(tVt,eVt,rVt)(t)}(t):r?function(t){return FUt(iVt,oVt,aVt,cVt)(t)}(t):QWt(t)}function gVt(t){var e,n=t.options,r=n.xAxis,i=n.yAxis,o=n.xField,a=n.yField;return FUt(kHt(((e={})[o]=r,e[a]=i,e)))(t)}function mVt(t){return t.chart.axis(!1),t}function yVt(t){var e=t.chart,n=t.options.legend;return!1===n?e.legend(!1):e.legend(n),t}function bVt(t){var e=t.chart,n=t.options,r=n.interactions,i=n.dynamicHeight;return(0,tOt.S6)(r,(function(t){!1===t.enable?e.removeInteraction(t.type):e.interaction(t.type,t.cfg||{})})),i?e.removeInteraction(hVt):e.interaction(hVt,{start:[(0,QCt.pi)((0,QCt.pi)({},dVt),{arg:n})]}),t}function xVt(t){return FUt(pVt,vVt,gVt,mVt,gHt,bVt,yVt,yHt,bHt,CHt())(t)}VDt(fVt,sVt),zTt(hVt,{start:[dVt]});var wVt,SVt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="funnel",e}return(0,QCt.ZT)(e,t),e.getDefaultOptions=function(){return VWt},e.prototype.getDefaultOptions=function(){return e.getDefaultOptions()},e.prototype.getSchemaAdaptor=function(){return xVt},e.prototype.setState=function(t,e,n){void 0===n&&(n=!0);var r=RUt(this.chart);(0,tOt.S6)(r,(function(r){e(r.getData())&&r.setState(t,n)}))},e.prototype.getStates=function(){var t=RUt(this.chart),e=[];return(0,tOt.S6)(t,(function(t){var n=t.getData(),r=t.getStates();(0,tOt.S6)(r,(function(r){e.push({data:n,state:r,geometry:t.geometry,element:t})}))})),e},e.CONVERSATION_FIELD=zWt,e.PERCENT_FIELD=NWt,e.TOTAL_PERCENT_FIELD=UWt,e}(VHt),kVt="range",CVt="type",OVt="percent",EVt="#f0f0f0",MVt="indicator-view",AVt="range-view",PVt={percent:0,range:{ticks:[]},innerRadius:.9,radius:.95,startAngle:-7/6*Math.PI,endAngle:1/6*Math.PI,syncViewPadding:!0,axis:{line:null,label:{offset:-24,style:{textAlign:"center",textBaseline:"middle"}},subTickLine:{length:-8},tickLine:{length:-12},grid:null},indicator:{pointer:{style:{lineWidth:5,lineCap:"round"}},pin:{style:{r:9.75,lineWidth:4.5,fill:"#fff"}}},statistic:{title:!1},meta:(wVt={},wVt[kVt]={sync:"v"},wVt[OVt]={sync:"v",tickCount:5,tickInterval:.2},wVt),animation:!1};function _Vt(t){var e;return[(e={},e[OVt]=(0,tOt.uZ)(t,0,1),e)]}function DVt(t,e){var n=(0,tOt.U2)(e,["ticks"],[]),r=(0,tOt.dp)(n)?(0,tOt.jj)(n):[0,(0,tOt.uZ)(t,0,1),1];return r[0]||r.shift(),function(t,e){return t.map((function(n,r){var i;return(i={})[kVt]=n-(t[r-1]||0),i[CVt]="".concat(r),i[OVt]=e,i}))}(r,t)}function TVt(t){var e=t.chart,n=t.options,r=n.percent,i=n.range,o=n.radius,a=n.innerRadius,c=n.startAngle,l=n.endAngle,u=n.axis,s=n.indicator,f=n.gaugeStyle,h=n.type,d=n.meter,p=i.color,v=i.width;if(s){var g=_Vt(r),m=e.createView({id:MVt});m.data(g),m.point().position("".concat(OVt,"*1")).shape(s.shape||"gauge-indicator").customInfo({defaultColor:e.getTheme().defaultColor,indicator:s}),m.coordinate("polar",{startAngle:c,endAngle:l,radius:a*o}),m.axis(OVt,u),m.scale(OVt,SUt(u,yUt))}var y=DVt(r,n.range),b=e.createView({id:AVt});b.data(y);var x=(0,tOt.HD)(p)?[p,EVt]:p;return RHt({chart:b,options:{xField:"1",yField:kVt,seriesField:CVt,rawFields:[OVt],isStack:!0,interval:{color:x,style:f,shape:"meter"===h?"meter-gauge":null},args:{zIndexReversed:!0,sortZIndex:!0},minColumnWidth:v,maxColumnWidth:v}}).ext.geometry.customInfo({meter:d}),b.coordinate("polar",{innerRadius:a,radius:o,startAngle:c,endAngle:l}).transpose(),t}function ZVt(t){var e;return FUt(kHt(((e={range:{min:0,max:1,maxLimit:1,minLimit:0}})[OVt]={},e)))(t)}function FVt(t,e){var n=t.chart,r=t.options,i=r.statistic,o=r.percent;if(n.getController("annotation").clear(!0),i){var a=i.content,c=void 0;a&&(c=TUt({},{content:"".concat((100*o).toFixed(2),"%"),style:{opacity:.75,fontSize:"30px",lineHeight:1,textAlign:"center",color:"rgba(44,53,66,0.85)"}},a)),YUt(n,{statistic:(0,QCt.pi)((0,QCt.pi)({},i),{content:c})},{percent:o})}return e&&n.render(!0),t}function jVt(t){var e=t.chart,n=t.options.tooltip;return n?e.tooltip(TUt({showTitle:!1,showMarkers:!1,containerTpl:'
    ',domStyles:{"g2-tooltip":{padding:"4px 8px",fontSize:"10px"}},customContent:function(t,e){var n=(0,tOt.U2)(e,[0,"data",OVt],0);return"".concat((100*n).toFixed(2),"%")}},n)):e.tooltip(!1),t}function IVt(t){return t.chart.legend(!1),t}function RVt(t){return FUt(bHt,yHt,TVt,ZVt,jVt,FVt,mHt,CHt(),IVt)(t)}JZt("point","gauge-indicator",{draw:function(t,e){var n=t.customInfo,r=n.indicator,i=n.defaultColor,o=r,a=o.pointer,c=o.pin,l=e.addGroup(),u=this.parsePoint({x:0,y:0});return a&&l.addShape("line",{name:"pointer",attrs:(0,QCt.pi)({x1:u.x,y1:u.y,x2:t.x,y2:t.y,stroke:i},a.style)}),c&&l.addShape("circle",{name:"pin",attrs:(0,QCt.pi)({x:u.x,y:u.y,stroke:i},c.style)}),l}}),JZt("interval","meter-gauge",{draw:function(t,e){var n=t.customInfo.meter,r=void 0===n?{}:n,i=r.steps,o=void 0===i?50:i,a=r.stepRatio,c=void 0===a?.5:a;o=o<1?1:o,c=(0,tOt.uZ)(c,0,1);var l=this.coordinate,u=l.startAngle,s=l.endAngle,f=0;c>0&&c<1&&(f=(s-u)/o/(c/(1-c)+1-1/o));for(var h=f/(1-c)*c,d=e.addGroup(),p=this.coordinate.getCenter(),v=this.coordinate.getRadius(),g=IFt.getAngle(t,this.coordinate),m=g.startAngle,y=g.endAngle,b=m;b1?l/(r-1):c.max),!n&&!r){var s=function(t){return Math.ceil(Math.log(t.length)/Math.LN2)+1}(a);u=l/s}var f={},h=(0,tOt.vM)(o,i);(0,tOt.xb)(h)?(0,tOt.S6)(o,(function(t){var n=NVt(t[e],u,r),i="".concat(n[0],"-").concat(n[1]);(0,tOt.wH)(f,i)||(f[i]={range:n,count:0}),f[i].count+=1})):Object.keys(h).forEach((function(t){(0,tOt.S6)(h[t],(function(n){var o=NVt(n[e],u,r),a="".concat(o[0],"-").concat(o[1]),c="".concat(a,"-").concat(t);(0,tOt.wH)(f,c)||(f[c]={range:o,count:0},f[c][i]=t),f[c].count+=1}))}));var d=[];return(0,tOt.S6)(f,(function(t){d.push(t)})),d}var zVt="range",UVt="count",HVt=TUt({},VHt.getDefaultOptions(),{columnStyle:{stroke:"#FFFFFF"},tooltip:{shared:!0,showMarkers:!1},interactions:[{type:"active-region"}]});function WVt(t){var e=t.chart,n=t.options,r=n.data,i=n.binField,o=n.binNumber,a=n.binWidth,c=n.color,l=n.stackField,u=n.legend,s=n.columnStyle,f=BVt(r,i,a,o,l);return e.data(f),RHt(TUt({},t,{options:{xField:zVt,yField:UVt,seriesField:l,isStack:!0,interval:{color:c,style:s}}})),u&&l?e.legend(l,u):e.legend(!1),t}function VVt(t){var e,n=t.options,r=n.xAxis,i=n.yAxis;return FUt(kHt(((e={})[zVt]=r,e[UVt]=i,e)))(t)}function GVt(t){var e=t.chart,n=t.options,r=n.xAxis,i=n.yAxis;return!1===r?e.axis(zVt,!1):e.axis(zVt,r),!1===i?e.axis(UVt,!1):e.axis(UVt,i),t}function XVt(t){var e=t.chart,n=t.options.label,r=jUt(e,"interval");if(n){var i=n.callback,o=(0,QCt._T)(n,["callback"]);r.label({fields:[UVt],callback:i,cfg:LUt(o)})}else r.label(!1);return t}function qVt(t){return FUt(bHt,pHt("columnStyle"),WVt,VVt,GVt,xHt,XVt,gHt,mHt,yHt)(t)}var YVt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="histogram",e}return(0,QCt.ZT)(e,t),e.getDefaultOptions=function(){return HVt},e.prototype.changeData=function(t){this.updateOption({data:t});var e=this.options,n=e.binField,r=e.binNumber,i=e.binWidth,o=e.stackField;this.chart.changeData(BVt(t,n,i,r,o))},e.prototype.getDefaultOptions=function(){return e.getDefaultOptions()},e.prototype.getSchemaAdaptor=function(){return qVt},e}(VHt),$Vt=TUt({},VHt.getDefaultOptions(),{tooltip:{shared:!0,showMarkers:!0,showCrosshairs:!0,crosshairs:{type:"x"}},legend:{position:"top-left",radio:{}},isStack:!1}),KVt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.active=function(){var t=this.getView(),e=this.context.event;if(e.data){var n=e.data.items,r=t.geometries.filter((function(t){return"point"===t.type}));(0,tOt.S6)(r,(function(t){(0,tOt.S6)(t.elements,(function(t){var e=-1!==(0,tOt.cx)(n,(function(e){return e.data===t.data}));t.setState("active",e)}))}))}},e.prototype.reset=function(){var t=this.getView().geometries.filter((function(t){return"point"===t.type}));(0,tOt.S6)(t,(function(t){(0,tOt.S6)(t.elements,(function(t){t.setState("active",!1)}))}))},e.prototype.getView=function(){return this.context.view},e}(BDt);VDt("marker-active",KVt),zTt("marker-active",{start:[{trigger:"tooltip:show",action:"marker-active:active"}],end:[{trigger:"tooltip:hide",action:"marker-active:reset"}]});var JVt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="line",e}return(0,QCt.ZT)(e,t),e.getDefaultOptions=function(){return $Vt},e.prototype.changeData=function(t){this.updateOption({data:t});YHt({chart:this.chart,options:this.options}),this.chart.changeData(t)},e.prototype.getDefaultOptions=function(){return e.getDefaultOptions()},e.prototype.getSchemaAdaptor=function(){return eWt},e}(VHt),QVt=TUt({},VHt.getDefaultOptions(),{legend:{position:"right",radio:{}},tooltip:{shared:!1,showTitle:!1,showMarkers:!1},label:{layout:{type:"limit-in-plot",cfg:{action:"ellipsis"}}},pieStyle:{stroke:"white",lineWidth:1},statistic:{title:{style:{fontWeight:300,color:"#4B535E",textAlign:"center",fontSize:"20px",lineHeight:1}},content:{style:{fontWeight:"bold",color:"rgba(44,53,66,0.85)",textAlign:"center",fontSize:"32px",lineHeight:1}}},theme:{components:{annotation:{text:{animate:!1}}}}}),tGt=[1,0,0,0,1,0,0,0,1];function eGt(t,e){var n=e?(0,QCt.ev)([],e,!0):(0,QCt.ev)([],tGt,!0);return IFt.transform(n,t)}var nGt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getActiveElements=function(){var t=IFt.getDelegationObject(this.context);if(t){var e=this.context.view,n=t.component,r=t.item,i=n.get("field");if(i)return e.geometries[0].elements.filter((function(t){return t.getModel().data[i]===r.value}))}return[]},e.prototype.getActiveElementLabels=function(){var t=this.context.view,e=this.getActiveElements();return t.geometries[0].labelsContainer.getChildren().filter((function(t){return e.find((function(e){return(0,tOt.Xy)(e.getData(),t.get("data"))}))}))},e.prototype.transfrom=function(t){void 0===t&&(t=7.5);var e=this.getActiveElements(),n=this.getActiveElementLabels();e.forEach((function(e,r){var i=n[r],o=e.geometry.coordinate;if(o.isPolar&&o.isTransposed){var a=IFt.getAngle(e.getModel(),o),c=(a.startAngle+a.endAngle)/2,l=t,u=l*Math.cos(c),s=l*Math.sin(c);e.shape.setMatrix(eGt([["t",u,s]])),i.setMatrix(eGt([["t",u,s]]))}}))},e.prototype.active=function(){this.transfrom()},e.prototype.reset=function(){this.transfrom(0)},e}(BDt);var rGt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getAnnotations=function(t){return(t||this.context.view).getController("annotation").option},e.prototype.getInitialAnnotation=function(){return this.initialAnnotation},e.prototype.init=function(){var t=this,e=this.context.view;e.removeInteraction("tooltip"),e.on("afterchangesize",(function(){var n=t.getAnnotations(e);t.initialAnnotation=n}))},e.prototype.change=function(t){var e=this.context,n=e.view,r=e.event;this.initialAnnotation||(this.initialAnnotation=this.getAnnotations());var i=(0,tOt.U2)(r,["data","data"]);if(r.type.match("legend-item")){var o=IFt.getDelegationObject(this.context),a=n.getGroupedFields()[0];if(o&&a){var c=o.item;i=n.getData().find((function(t){return t[a]===c.value}))}}if(i){var l=(0,tOt.U2)(t,"annotations",[]),u=(0,tOt.U2)(t,"statistic",{});n.getController("annotation").clear(!0),(0,tOt.S6)(l,(function(t){"object"==typeof t&&n.annotation()[t.type](t)})),qUt(n,{statistic:u,plotType:"pie"},i),n.render(!0)}var s=function(t){var e,n=t.event.target;return n&&(e=n.get("element")),e}(this.context);s&&s.shape.toFront()},e.prototype.reset=function(){var t=this.context.view;t.getController("annotation").clear(!0);var e=this.getInitialAnnotation();(0,tOt.S6)(e,(function(e){t.annotation()[e.type](e)})),t.render(!0)},e}(BDt),iGt="pie-statistic";function oGt(t,e){var n;switch(t){case"inner":return n="-30%",(0,tOt.HD)(e)&&e.endsWith("%")?.01*parseFloat(e)>0?n:e:e<0?e:n;case"outer":return n=12,(0,tOt.HD)(e)&&e.endsWith("%")?.01*parseFloat(e)<0?n:e:e>0?e:n;default:return e}}function aGt(t,e){return(0,tOt.yW)(OUt(t,e),(function(t){return 0===t[e]}))}function cGt(t){var e=t.chart,n=t.options,r=n.data,i=n.angleField,o=n.colorField,a=n.color,c=n.pieStyle,l=n.shape,u=OUt(r,i);if(aGt(u,i)){var s="$$percentage$$";u=u.map((function(t){var e;return(0,QCt.pi)((0,QCt.pi)({},t),((e={})[s]=1/u.length,e))})),e.data(u),RHt(TUt({},t,{options:{xField:"1",yField:s,seriesField:o,isStack:!0,interval:{color:a,shape:l,style:c},args:{zIndexReversed:!0,sortZIndex:!0}}}))}else{e.data(u),RHt(TUt({},t,{options:{xField:"1",yField:i,seriesField:o,isStack:!0,interval:{color:a,shape:l,style:c},args:{zIndexReversed:!0,sortZIndex:!0}}}))}return t}function lGt(t){var e,n=t.chart,r=t.options,i=r.meta,o=r.colorField,a=TUt({},i);return n.scale(a,((e={})[o]={type:"cat"},e)),t}function uGt(t){var e=t.chart,n=t.options,r=n.radius,i=n.innerRadius,o=n.startAngle,a=n.endAngle;return e.coordinate({type:"theta",cfg:{radius:r,innerRadius:i,startAngle:o,endAngle:a}}),t}function sGt(t){var e=t.chart,n=t.options,r=n.label,i=n.colorField,o=n.angleField,a=e.geometries[0];if(r){var c=r.callback,l=LUt((0,QCt._T)(r,["callback"]));if(l.content){var u=l.content;l.content=function(t,n,r){var a=t[i],c=t[o],l=e.getScaleByField(o),s=null==l?void 0:l.scale(c);return(0,tOt.mf)(u)?u((0,QCt.pi)((0,QCt.pi)({},t),{percent:s}),n,r):(0,tOt.HD)(u)?$Ut(u,{value:c,name:a,percentage:(0,tOt.hj)(s)&&!(0,tOt.UM)(c)?"".concat((100*s).toFixed(2),"%"):null}):u}}var s=l.type?{inner:"",outer:"pie-outer",spider:"pie-spider"}[l.type]:"pie-outer",f=l.layout?(0,tOt.kJ)(l.layout)?l.layout:[l.layout]:[];l.layout=(s?[{type:s}]:[]).concat(f),a.label({fields:i?[o,i]:[o],callback:c,cfg:(0,QCt.pi)((0,QCt.pi)({},l),{offset:oGt(l.type,l.offset),type:"pie"})})}else a.label(!1);return t}function fGt(t){var e=t.innerRadius,n=t.statistic,r=t.angleField,i=t.colorField,o=t.meta,a=_Ht(t.locale);if(e&&n){var c=TUt({},QVt.statistic,n),l=c.title,u=c.content;return!1!==l&&(l=TUt({},{formatter:function(t){var e=t?t[i]:(0,tOt.UM)(l.content)?a.get(["statistic","total"]):l.content,n=(0,tOt.U2)(o,[i,"formatter"])||function(t){return t};return n(e)}},l)),!1!==u&&(u=TUt({},{formatter:function(t,e){var n=t?t[r]:function(t,e){var n=null;return(0,tOt.S6)(t,(function(t){"number"==typeof t[e]&&(n+=t[e])})),n}(e,r),i=(0,tOt.U2)(o,[r,"formatter"])||function(t){return t};return t||(0,tOt.UM)(u.content)?i(n):u.content}},u)),TUt({},{statistic:{title:l,content:u}},t)}return t}function hGt(t){var e=t.chart,n=fGt(t.options),r=n.innerRadius,i=n.statistic;return e.getController("annotation").clear(!0),FUt(CHt())(t),r&&i&&qUt(e,{statistic:i,plotType:"pie"}),t}function dGt(t){var e=t.chart,n=t.options,r=n.tooltip,i=n.colorField,o=n.angleField,a=n.data;if(!1===r)e.tooltip(r);else if(e.tooltip(TUt({},r,{shared:!1})),aGt(a,o)){var c=(0,tOt.U2)(r,"fields"),l=(0,tOt.U2)(r,"formatter");(0,tOt.xb)((0,tOt.U2)(r,"fields"))&&(c=[i,o],l=l||function(t){return{name:t[i],value:(0,tOt.BB)(t[o])}}),e.geometries[0].tooltip(c.join("*"),ZHt(c,l))}return t}function pGt(t){var e=t.chart,n=fGt(t.options),r=n.interactions,i=n.statistic,o=n.annotations;return(0,tOt.S6)(r,(function(t){var n,r;if(!1===t.enable)e.removeInteraction(t.type);else if("pie-statistic-active"===t.type){var a=[];(null===(n=t.cfg)||void 0===n?void 0:n.start)||(a=[{trigger:"element:mouseenter",action:"".concat(iGt,":change"),arg:{statistic:i,annotations:o}}]),(0,tOt.S6)(null===(r=t.cfg)||void 0===r?void 0:r.start,(function(t){a.push((0,QCt.pi)((0,QCt.pi)({},t),{arg:{statistic:i,annotations:o}}))})),e.interaction(t.type,TUt({},t.cfg,{start:a}))}else e.interaction(t.type,t.cfg||{})})),t}function vGt(t){return FUt(pHt("pieStyle"),cGt,lGt,bHt,uGt,vHt,dGt,sGt,xHt,hGt,pGt,yHt)(t)}VDt(iGt,rGt),zTt("pie-statistic-active",{start:[{trigger:"element:mouseenter",action:"pie-statistic:change"}],end:[{trigger:"element:mouseleave",action:"pie-statistic:reset"}]}),VDt("pie-legend",nGt),zTt("pie-legend-active",{start:[{trigger:"legend-item:mouseenter",action:"pie-legend:active"}],end:[{trigger:"legend-item:mouseleave",action:"pie-legend:reset"}]});var gGt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="pie",e}return(0,QCt.ZT)(e,t),e.getDefaultOptions=function(){return QVt},e.prototype.changeData=function(t){this.chart.emit(eOt.BEFORE_CHANGE_DATA,xZt.fromData(this.chart,eOt.BEFORE_CHANGE_DATA,null));var e=this.options,n=this.options.angleField,r=OUt(e.data,n),i=OUt(t,n);aGt(r,n)||aGt(i,n)?this.update({data:t}):(this.updateOption({data:t}),this.chart.data(i),hGt({chart:this.chart,options:this.options}),this.chart.render(!0)),this.chart.emit(eOt.AFTER_CHANGE_DATA,xZt.fromData(this.chart,eOt.AFTER_CHANGE_DATA,null))},e.prototype.getDefaultOptions=function(){return e.getDefaultOptions()},e.prototype.getSchemaAdaptor=function(){return vGt},e}(VHt),mGt=["#FAAD14","#E8EDF3"],yGt={percent:.2,color:mGt,animation:{}};function bGt(t){var e=(0,tOt.uZ)(NUt(t)?t:0,0,1);return[{current:"".concat(e),type:"current",percent:e},{current:"".concat(e),type:"target",percent:1}]}function xGt(t){var e=t.chart,n=t.options,r=n.percent,i=n.progressStyle,o=n.color,a=n.barWidthRatio;return e.data(bGt(r)),RHt(TUt({},t,{options:{xField:"current",yField:"percent",seriesField:"type",widthRatio:a,interval:{style:i,color:(0,tOt.HD)(o)?[o,mGt[1]]:o},args:{zIndexReversed:!0,sortZIndex:!0}}})),e.tooltip(!1),e.axis(!1),e.legend(!1),t}function wGt(t){return t.chart.coordinate("rect").transpose(),t}function SGt(t){return FUt(xGt,kHt({}),wGt,yHt,bHt,CHt())(t)}var kGt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="process",e}return(0,QCt.ZT)(e,t),e.getDefaultOptions=function(){return yGt},e.prototype.changeData=function(t){this.updateOption({percent:t}),this.chart.changeData(bGt(t))},e.prototype.getDefaultOptions=function(){return e.getDefaultOptions()},e.prototype.getSchemaAdaptor=function(){return SGt},e}(VHt);function CGt(t){var e=t.chart,n=t.options,r=n.innerRadius,i=n.radius;return e.coordinate("theta",{innerRadius:r,radius:i}),t}function OGt(t,e){var n=t.chart,r=t.options,i=r.innerRadius,o=r.statistic,a=r.percent,c=r.meta;if(n.getController("annotation").clear(!0),i&&o){var l=(0,tOt.U2)(c,["percent","formatter"])||function(t){return"".concat((100*t).toFixed(2),"%")},u=o.content;u&&(u=TUt({},u,{content:(0,tOt.UM)(u.content)?l(a):u.content})),qUt(n,{statistic:(0,QCt.pi)((0,QCt.pi)({},o),{content:u}),plotType:"ring-progress"},{percent:a})}return e&&n.render(!0),t}function EGt(t){return FUt(xGt,kHt({}),CGt,OGt,yHt,bHt,CHt())(t)}var MGt={percent:.2,innerRadius:.8,radius:.98,color:["#FAAD14","#E8EDF3"],statistic:{title:!1,content:{style:{fontSize:"14px",fontWeight:300,fill:"#4D4D4D",textAlign:"center",textBaseline:"middle"}}},animation:{}},AGt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="ring-process",e}return(0,QCt.ZT)(e,t),e.getDefaultOptions=function(){return MGt},e.prototype.changeData=function(t){this.chart.emit(eOt.BEFORE_CHANGE_DATA,xZt.fromData(this.chart,eOt.BEFORE_CHANGE_DATA,null)),this.updateOption({percent:t}),this.chart.data(bGt(t)),OGt({chart:this.chart,options:this.options},!0),this.chart.emit(eOt.AFTER_CHANGE_DATA,xZt.fromData(this.chart,eOt.AFTER_CHANGE_DATA,null))},e.prototype.getDefaultOptions=function(){return e.getDefaultOptions()},e.prototype.getSchemaAdaptor=function(){return EGt},e}(VHt),PGt=n(71547),_Gt={exp:PGt.regressionExp,linear:PGt.regressionLinear,loess:PGt.regressionLoess,log:PGt.regressionLog,poly:PGt.regressionPoly,pow:PGt.regressionPow,quad:PGt.regressionQuad};var DGt=function(t,e){var n=e.view,r=e.options,i=r.xField,o=r.yField,a=n.getScaleByField(i),c=n.getScaleByField(o);return WUt(t.map((function(t){return n.getCoordinate().convert({x:a.scale(t[0]),y:c.scale(t[1])})})),!1)},TGt=function(t){var e,n=t.options,r=n.xField,i=n.yField,o=n.data,a=n.regressionLine,c=a.type,l=void 0===c?"linear":c,u=a.algorithm,s=a.equation,f=null;u?(e=(0,tOt.kJ)(u)?u:u(o),f=s):f=function(t,e){var n,r,i,o=function(t,e){return void 0===e&&(e=4),Math.round(t*Math.pow(10,e))/Math.pow(10,e)},a=function(t){return Number.isFinite(t)?o(t):"?"};switch(t){case"linear":return"y = ".concat(a(e.a),"x + ").concat(a(e.b),", R^2 = ").concat(a(e.rSquared));case"exp":return"y = ".concat(a(e.a),"e^(").concat(a(e.b),"x), R^2 = ").concat(a(e.rSquared));case"log":return"y = ".concat(a(e.a),"ln(x) + ").concat(a(e.b),", R^2 = ").concat(a(e.rSquared));case"quad":return"y = ".concat(a(e.a),"x^2 + ").concat(a(e.b),"x + ").concat(a(e.c),", R^2 = ").concat(a(e.rSquared));case"poly":for(var c="y = ".concat(a(null===(n=e.coefficients)||void 0===n?void 0:n[0])," + ").concat(a(null===(r=e.coefficients)||void 0===r?void 0:r[1]),"x + ").concat(a(null===(i=e.coefficients)||void 0===i?void 0:i[2]),"x^2"),l=3;l
    ',itemTpl:"{value}",domStyles:{"g2-tooltip":{padding:"2px 4px",fontSize:"10px"}},showCrosshairs:!0,crosshairs:{type:"x"}},uXt={appendPadding:2,tooltip:(0,QCt.pi)({},lXt),animation:{}};function sXt(t){var e=t.chart,n=t.options,r=n.data,i=n.color,o=n.areaStyle,a=n.point,c=n.line,l=null==a?void 0:a.state,u=oXt(r);e.data(u);var s=TUt({},t,{options:{xField:aXt,yField:cXt,area:{color:i,style:o},line:c,point:a}}),f=TUt({},s,{options:{tooltip:!1}}),h=TUt({},s,{options:{tooltip:!1,state:l}});return jHt(s),LHt(f),NHt(h),e.axis(!1),e.legend(!1),t}function fXt(t){var e,n,r=t.options,i=r.xAxis,o=r.yAxis,a=oXt(r.data);return FUt(kHt(((e={})[aXt]=i,e[cXt]=o,e),((n={})[aXt]={type:"cat"},n[cXt]=kUt(a,cXt),n)))(t)}function hXt(t){return FUt(pHt("areaStyle"),sXt,fXt,gHt,bHt,yHt,CHt())(t)}var dXt={appendPadding:2,tooltip:(0,QCt.pi)({},lXt),color:"l(90) 0:#E5EDFE 1:#ffffff",areaStyle:{fillOpacity:.6},line:{size:1,color:"#5B8FF9"},animation:{}},pXt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="tiny-area",e}return(0,QCt.ZT)(e,t),e.getDefaultOptions=function(){return dXt},e.prototype.changeData=function(t){this.updateOption({data:t});var e=this.chart;fXt({chart:e,options:this.options}),e.changeData(oXt(t))},e.prototype.getDefaultOptions=function(){return e.getDefaultOptions()},e.prototype.getSchemaAdaptor=function(){return hXt},e}(VHt);function vXt(t){var e=t.chart,n=t.options,r=n.data,i=n.color,o=n.columnStyle,a=n.columnWidthRatio,c=oXt(r);return e.data(c),RHt(TUt({},t,{options:{xField:aXt,yField:cXt,widthRatio:a,interval:{style:o,color:i}}})),e.axis(!1),e.legend(!1),e.interaction("element-active"),t}function gXt(t){return FUt(bHt,pHt("columnStyle"),vXt,fXt,gHt,yHt,CHt())(t)}var mXt={showTitle:!1,shared:!0,showMarkers:!1,customContent:function(t,e){return"".concat((0,tOt.U2)(e,[0,"data","y"],0))},containerTpl:'
    ',itemTpl:"{value}",domStyles:{"g2-tooltip":{padding:"2px 4px",fontSize:"10px"}}},yXt={appendPadding:2,tooltip:(0,QCt.pi)({},mXt),animation:{}},bXt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="tiny-column",e}return(0,QCt.ZT)(e,t),e.getDefaultOptions=function(){return yXt},e.prototype.changeData=function(t){this.updateOption({data:t});var e=this.chart;fXt({chart:e,options:this.options}),e.changeData(oXt(t))},e.prototype.getDefaultOptions=function(){return e.getDefaultOptions()},e.prototype.getSchemaAdaptor=function(){return gXt},e}(VHt);function xXt(t){var e=t.chart,n=t.options,r=n.data,i=n.color,o=n.lineStyle,a=n.point,c=null==a?void 0:a.state,l=oXt(r);e.data(l);var u=TUt({},t,{options:{xField:aXt,yField:cXt,line:{color:i,style:o},point:a}}),s=TUt({},u,{options:{tooltip:!1,state:c}});return LHt(u),NHt(s),e.axis(!1),e.legend(!1),t}function wXt(t){return FUt(xXt,fXt,bHt,gHt,yHt,CHt())(t)}var SXt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="tiny-line",e}return(0,QCt.ZT)(e,t),e.getDefaultOptions=function(){return uXt},e.prototype.changeData=function(t){this.updateOption({data:t});var e=this.chart;fXt({chart:e,options:this.options}),e.changeData(oXt(t))},e.prototype.getDefaultOptions=function(){return e.getDefaultOptions()},e.prototype.getSchemaAdaptor=function(){return wXt},e}(VHt),kXt={line:eWt,pie:vGt,column:MWt,bar:ZWt,area:oWt,gauge:RVt,"tiny-line":wXt,"tiny-column":gXt,"tiny-area":hXt,"ring-progress":EGt,progress:SGt,scatter:HGt,histogram:qVt,funnel:xVt,stock:rXt},CXt={line:JVt,pie:gGt,column:LWt,bar:IWt,area:cWt,gauge:LVt,"tiny-line":SXt,"tiny-column":bXt,"tiny-area":pXt,"ring-progress":AGt,progress:kGt,scatter:VGt,histogram:YVt,funnel:SVt,stock:iXt},OXt={pie:{label:!1},column:{tooltip:{showMarkers:!1}},bar:{tooltip:{showMarkers:!1}}};function EXt(t,e,n){var r=CXt[t];r?(0,kXt[t])({chart:e,options:TUt({},r.getDefaultOptions(),(0,tOt.U2)(OXt,t,{}),n)}):console.error("could not find ".concat(t," plot"))}function MXt(t){var e=t.chart,n=t.options,r=n.views,i=n.legend;return(0,tOt.S6)(r,(function(t){var n=t.region,r=t.data,i=t.meta,o=t.axes,a=t.coordinate,c=t.interactions,l=t.annotations,u=t.tooltip,s=t.geometries,f=e.createView({region:n});f.data(r);var h={};o&&(0,tOt.S6)(o,(function(t,e){h[e]=SUt(t,yUt)})),h=TUt({},i,h),f.scale(h),o?(0,tOt.S6)(o,(function(t,e){f.axis(e,t)})):f.axis(!1),f.coordinate(a),(0,tOt.S6)(s,(function(t){var e=FHt({chart:f,options:t}).ext,n=t.adjust;n&&e.geometry.adjust(n)})),(0,tOt.S6)(c,(function(t){!1===t.enable?f.removeInteraction(t.type):f.interaction(t.type,t.cfg)})),(0,tOt.S6)(l,(function(t){f.annotation()[t.type]((0,QCt.pi)({},t))})),"boolean"==typeof t.animation?f.animate(!1):(f.animate(!0),(0,tOt.S6)(f.geometries,(function(e){e.animate(t.animation)}))),u&&(f.interaction("tooltip"),f.tooltip(u))})),i?(0,tOt.S6)(i,(function(t,n){e.legend(n,t)})):e.legend(!1),e.tooltip(n.tooltip),t}function AXt(t){var e=t.chart,n=t.options,r=n.plots,i=n.data,o=void 0===i?[]:i;return(0,tOt.S6)(r,(function(t){var n=t.type,r=t.region,i=t.options,a=void 0===i?{}:i,c=t.top,l=a.tooltip;if(c)EXt(n,e,(0,QCt.pi)((0,QCt.pi)({},a),{data:o}));else{var u=e.createView((0,QCt.pi)({region:r},SUt(a,WHt)));l&&u.interaction("tooltip"),EXt(n,u,(0,QCt.pi)({data:o},a))}})),t}function PXt(t){var e=t.chart,n=t.options;return e.option("slider",n.slider),t}function _Xt(t){return FUt(yHt,MXt,AXt,mHt,yHt,bHt,gHt,PXt,CHt())(t)}var DXt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getAssociationItems=function(t,e){var n,r=this.context.event,i=e||{},o=i.linkField,a=i.dim,c=[];if(null===(n=r.data)||void 0===n?void 0:n.data){var l=r.data.data;(0,tOt.S6)(t,(function(t){var e,n,r=o;if("x"===a?r=t.getXScale().field:"y"===a?r=null===(e=t.getYScales().find((function(t){return t.field===r})))||void 0===e?void 0:e.field:r||(r=null===(n=t.getGroupScales()[0])||void 0===n?void 0:n.field),r){var i=(0,tOt.UI)(IUt(t),(function(e){var n=!1,i=!1,o=(0,tOt.kJ)(l)?(0,tOt.U2)(l[0],r):(0,tOt.U2)(l,r);return function(t,e){var n=t.getModel().data;return(0,tOt.kJ)(n)?n[0][e]:n[e]}(e,r)===o?n=!0:i=!0,{element:e,view:t,active:n,inactive:i}}));c.push.apply(c,i)}}))}return c},e.prototype.showTooltip=function(t){var e=QUt(this.context.view),n=this.getAssociationItems(e,t);(0,tOt.S6)(n,(function(t){if(t.active){var e=t.element.shape.getCanvasBBox();t.view.showTooltip({x:e.minX+e.width/2,y:e.minY+e.height/2})}}))},e.prototype.hideTooltip=function(){var t=QUt(this.context.view);(0,tOt.S6)(t,(function(t){t.hideTooltip()}))},e.prototype.active=function(t){var e=JUt(this.context.view),n=this.getAssociationItems(e,t);(0,tOt.S6)(n,(function(t){var e=t.active,n=t.element;e&&n.setState("active",!0)}))},e.prototype.selected=function(t){var e=JUt(this.context.view),n=this.getAssociationItems(e,t);(0,tOt.S6)(n,(function(t){var e=t.active,n=t.element;e&&n.setState("selected",!0)}))},e.prototype.highlight=function(t){var e=JUt(this.context.view),n=this.getAssociationItems(e,t);(0,tOt.S6)(n,(function(t){var e=t.inactive,n=t.element;e&&n.setState("inactive",!0)}))},e.prototype.reset=function(){var t=JUt(this.context.view);(0,tOt.S6)(t,(function(t){!function(t){var e=IUt(t);(0,tOt.S6)(e,(function(t){t.hasState("active")&&t.setState("active",!1),t.hasState("selected")&&t.setState("selected",!1),t.hasState("inactive")&&t.setState("inactive",!1)}))}(t)}))},e}(BDt);VDt("association",DXt),zTt("association-active",{start:[{trigger:"element:mouseenter",action:"association:active"}],end:[{trigger:"element:mouseleave",action:"association:reset"}]}),zTt("association-selected",{start:[{trigger:"element:mouseenter",action:"association:selected"}],end:[{trigger:"element:mouseleave",action:"association:reset"}]}),zTt("association-highlight",{start:[{trigger:"element:mouseenter",action:"association:highlight"}],end:[{trigger:"element:mouseleave",action:"association:reset"}]}),zTt("association-tooltip",{start:[{trigger:"element:mousemove",action:"association:showTooltip"}],end:[{trigger:"element:mouseleave",action:"association:hideTooltip"}]});var TXt,ZXt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="mix",e}return(0,QCt.ZT)(e,t),e.prototype.getSchemaAdaptor=function(){return _Xt},e}(VHt);!function(t){t.DEV="DEV",t.BETA="BETA",t.STABLE="STABLE"}(TXt||(TXt={}));!function(){function t(){}Object.defineProperty(t,"MultiView",{get:function(){var t,e;return t=TXt.STABLE,e="MultiView",console.warn(t===TXt.DEV?"Plot '".concat(e,"' is in DEV stage, just give us issues."):t===TXt.BETA?"Plot '".concat(e,"' is in BETA stage, DO NOT use it in production env."):t===TXt.STABLE?"Plot '".concat(e,"' is in STABLE stage, import it by \"import { ").concat(e," } from '@antv/g2plot'\"."):"invalid Stage type."),ZXt},enumerable:!1,configurable:!0})}();var FXt="first-axes-view",jXt="second-axes-view",IXt="series-field-key";function RXt(t,e,n,r,i){var o=[];e.forEach((function(e){r.forEach((function(r){var i,a=((i={})[t]=r[t],i[n]=e,i[e]=r[e],i);o.push(a)}))}));var a=Object.values((0,tOt.vM)(o,n)),c=a[0],l=void 0===c?[]:c,u=a[1],s=void 0===u?[]:u;return i?[l.reverse(),s.reverse()]:[l,s]}function LXt(t){return"vertical"!==t}function NXt(t,e,n){var r=e[0],i=e[1],o=r.autoPadding,a=i.autoPadding,c=t.__axisPosition,l=c.layout,u=c.position;if(LXt(l)&&"top"===u&&(r.autoPadding=n.instance(o.top,0,o.bottom,o.left),i.autoPadding=n.instance(a.top,o.left,a.bottom,0)),LXt(l)&&"bottom"===u&&(r.autoPadding=n.instance(o.top,o.right/2+5,o.bottom,o.left),i.autoPadding=n.instance(a.top,a.right,a.bottom,o.right/2+5)),!LXt(l)&&"bottom"===u){var s=o.left>=a.left?o.left:a.left;r.autoPadding=n.instance(o.top,o.right,o.bottom/2+5,s),i.autoPadding=n.instance(o.bottom/2+5,a.right,a.bottom,s)}if(!LXt(l)&&"top"===u){s=o.left>=a.left?o.left:a.left;r.autoPadding=n.instance(o.top,o.right,0,s),i.autoPadding=n.instance(0,a.right,o.top,s)}}function BXt(t){var e,n,r=t.chart,i=t.options,o=i.data,a=i.xField,c=i.yField,l=i.color,u=i.barStyle,s=i.widthRatio,f=i.legend,h=i.layout,d=RXt(a,c,IXt,o,LXt(h));f?r.legend(IXt,f):!1===f&&r.legend(!1);var p=d[0],v=d[1];return LXt(h)?((e=r.createView({region:{start:{x:0,y:0},end:{x:.5,y:1}},id:FXt})).coordinate().transpose().reflect("x"),(n=r.createView({region:{start:{x:.5,y:0},end:{x:1,y:1}},id:jXt})).coordinate().transpose(),e.data(p),n.data(v)):(e=r.createView({region:{start:{x:0,y:0},end:{x:1,y:.5}},id:FXt}),(n=r.createView({region:{start:{x:0,y:.5},end:{x:1,y:1}},id:jXt})).coordinate().reflect("y"),e.data(p),n.data(v)),RHt(TUt({},t,{chart:e,options:{widthRatio:s,xField:a,yField:c[0],seriesField:IXt,interval:{color:l,style:u}}})),RHt(TUt({},t,{chart:n,options:{xField:a,yField:c[1],seriesField:IXt,widthRatio:s,interval:{color:l,style:u}}})),t}function zXt(t){var e,n,r,i=t.options,o=t.chart,a=i.xAxis,c=i.yAxis,l=i.xField,u=i.yField,s=KUt(o,FXt),f=KUt(o,jXt),h={};return(0,tOt.XP)((null==i?void 0:i.meta)||{}).map((function(t){(0,tOt.U2)(null==i?void 0:i.meta,[t,"alias"])&&(h[t]=i.meta[t].alias)})),o.scale(((e={})[IXt]={sync:!0,formatter:function(t){return(0,tOt.U2)(h,t,t)}},e)),kHt(((n={})[l]=a,n[u[0]]=c[u[0]],n))(TUt({},t,{chart:s})),kHt(((r={})[l]=a,r[u[1]]=c[u[1]],r))(TUt({},t,{chart:f})),t}function UXt(t){var e=t.chart,n=t.options,r=n.xAxis,i=n.yAxis,o=n.xField,a=n.yField,c=n.layout,l=KUt(e,FXt),u=KUt(e,jXt);return"bottom"===(null==r?void 0:r.position)?u.axis(o,(0,QCt.pi)((0,QCt.pi)({},r),{label:{formatter:function(){return""}}})):u.axis(o,!1),!1===r?l.axis(o,!1):l.axis(o,(0,QCt.pi)({position:LXt(c)?"top":"bottom"},r)),!1===i?(l.axis(a[0],!1),u.axis(a[1],!1)):(l.axis(a[0],i[a[0]]),u.axis(a[1],i[a[1]])),e.__axisPosition={position:l.getOptions().axes[o].position,layout:c},t}function HXt(t){var e=t.chart;return mHt(TUt({},t,{chart:KUt(e,FXt)})),mHt(TUt({},t,{chart:KUt(e,jXt)})),t}function WXt(t){var e=t.chart,n=t.options,r=n.yField,i=n.yAxis;return OHt(TUt({},t,{chart:KUt(e,FXt),options:{yAxis:i[r[0]]}})),OHt(TUt({},t,{chart:KUt(e,jXt),options:{yAxis:i[r[1]]}})),t}function VXt(t){var e=t.chart;return bHt(TUt({},t,{chart:KUt(e,FXt)})),bHt(TUt({},t,{chart:KUt(e,jXt)})),bHt(t),t}function GXt(t){var e=t.chart;return yHt(TUt({},t,{chart:KUt(e,FXt)})),yHt(TUt({},t,{chart:KUt(e,jXt)})),t}function XXt(t){var e,n,r=this,i=t.chart,o=t.options,a=o.label,c=o.yField,l=o.layout,u=KUt(i,FXt),s=KUt(i,jXt),f=jUt(u,"interval"),h=jUt(s,"interval");if(a){var d=a.callback,p=(0,QCt._T)(a,["callback"]);p.position||(p.position="middle"),void 0===p.offset&&(p.offset=2);var v=(0,QCt.pi)({},p);if(LXt(l)){var g=(null===(e=v.style)||void 0===e?void 0:e.textAlign)||("middle"===p.position?"center":"left");p.style=TUt({},p.style,{textAlign:g});v.style=TUt({},v.style,{textAlign:{left:"right",right:"left",center:"center"}[g]})}else{var m={top:"bottom",bottom:"top",middle:"middle"};"string"==typeof p.position?p.position=m[p.position]:"function"==typeof p.position&&(p.position=function(){for(var t=[],e=0;e1?"".concat(e,"_").concat(n):"".concat(e)}function lqt(t){var e=t.data,n=t.xField,r=t.measureField,i=t.rangeField,o=t.targetField,a=t.layout,c=[],l=[];e.forEach((function(t,e){var a=[t[i]].flat();a.sort((function(t,e){return t-e})),a.forEach((function(r,o){var l,u=0===o?r:a[o]-a[o-1];c.push(((l={rKey:"".concat(i,"_").concat(o)})[n]=n?t[n]:String(e),l[i]=u,l))}));var u=[t[r]].flat();u.forEach((function(i,o){var a;c.push(((a={mKey:cqt(u,r,o)})[n]=n?t[n]:String(e),a[r]=i,a))}));var s=[t[o]].flat();s.forEach((function(r,i){var a;c.push(((a={tKey:cqt(s,o,i)})[n]=n?t[n]:String(e),a[o]=r,a))})),l.push(t[i],t[r],t[o])}));var u=Math.min.apply(Math,l.flat(1/0)),s=Math.max.apply(Math,l.flat(1/0));return u=u>0?0:u,"vertical"===a&&c.reverse(),{min:u,max:s,ds:c}}function uqt(t){var e=t.chart,n=t.options,r=n.bulletStyle,i=n.targetField,o=n.rangeField,a=n.measureField,c=n.xField,l=n.color,u=n.layout,s=n.size,f=n.label,h=lqt(n),d=h.min,p=h.max,v=h.ds;e.data(v),RHt(TUt({},t,{options:{xField:c,yField:o,seriesField:"rKey",isStack:!0,label:(0,tOt.U2)(f,"range"),interval:{color:(0,tOt.U2)(l,"range"),style:(0,tOt.U2)(r,"range"),size:(0,tOt.U2)(s,"range")}}})),e.geometries[0].tooltip(!1),RHt(TUt({},t,{options:{xField:c,yField:a,seriesField:"mKey",isStack:!0,label:(0,tOt.U2)(f,"measure"),interval:{color:(0,tOt.U2)(l,"measure"),style:(0,tOt.U2)(r,"measure"),size:(0,tOt.U2)(s,"measure")}}}));var g=TUt({},t,{options:{xField:c,yField:i,seriesField:"tKey",label:(0,tOt.U2)(f,"target"),point:{color:(0,tOt.U2)(l,"target"),style:(0,tOt.U2)(r,"target"),size:(0,tOt.mf)((0,tOt.U2)(s,"target"))?function(t){return(0,tOt.U2)(s,"target")(t)/2}:(0,tOt.U2)(s,"target")/2,shape:"horizontal"===u?"line":"hyphen"}}});return NHt(g),"horizontal"===u&&e.coordinate().transpose(),(0,QCt.pi)((0,QCt.pi)({},t),{ext:{data:{min:d,max:p}}})}function sqt(t){var e,n,r=t.options,i=t.ext,o=r.xAxis,a=r.yAxis,c=r.targetField,l=r.rangeField,u=r.measureField,s=r.xField,f=i.data;return FUt(kHt(((e={})[s]=o,e[u]=a,e),((n={})[u]={min:null==f?void 0:f.min,max:null==f?void 0:f.max,sync:!0},n[c]={sync:"".concat(u)},n[l]={sync:"".concat(u)},n)))(t)}function fqt(t){var e=t.chart,n=t.options,r=n.xAxis,i=n.yAxis,o=n.xField,a=n.measureField,c=n.rangeField,l=n.targetField;return e.axis("".concat(c),!1),e.axis("".concat(l),!1),!1===r?e.axis("".concat(o),!1):e.axis("".concat(o),r),!1===i?e.axis("".concat(a),!1):e.axis("".concat(a),i),t}function hqt(t){var e=t.chart,n=t.options.legend;return e.removeInteraction("legend-filter"),e.legend(n),e.legend("rKey",!1),e.legend("mKey",!1),e.legend("tKey",!1),t}function dqt(t){var e=t.chart,n=t.options,r=n.label,i=n.measureField,o=n.targetField,a=n.rangeField,c=e.geometries,l=c[0],u=c[1],s=c[2];return(0,tOt.U2)(r,"range")?l.label("".concat(a),(0,QCt.pi)({layout:[{type:"limit-in-plot"}]},LUt(r.range))):l.label(!1),(0,tOt.U2)(r,"measure")?u.label("".concat(i),(0,QCt.pi)({layout:[{type:"limit-in-plot"}]},LUt(r.measure))):u.label(!1),(0,tOt.U2)(r,"target")?s.label("".concat(o),(0,QCt.pi)({layout:[{type:"limit-in-plot"}]},LUt(r.target))):s.label(!1),t}function pqt(t){FUt(uqt,sqt,fqt,hqt,bHt,dqt,gHt,mHt,yHt)(t)}var vqt=TUt({},VHt.getDefaultOptions(),{layout:"horizontal",size:{range:30,measure:20,target:20},xAxis:{tickLine:!1,line:null},bulletStyle:{range:{fillOpacity:.5}},label:{measure:{position:"right"}},tooltip:{showMarkers:!1}}),gqt=(function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="bullet",e}(0,QCt.ZT)(e,t),e.getDefaultOptions=function(){return vqt},e.prototype.changeData=function(t){this.updateOption({data:t});var e=lqt(this.options),n=e.min,r=e.max,i=e.ds;sqt({options:this.options,ext:{data:{min:n,max:r}},chart:this.chart}),this.chart.changeData(i)},e.prototype.getSchemaAdaptor=function(){return pqt},e.prototype.getDefaultOptions=function(){return e.getDefaultOptions()}}(VHt),{y:0,nodeWidthRatio:.05,weight:!1,nodePaddingRatio:.1,id:function(t){return t.id},source:function(t){return t.source},target:function(t){return t.target},sourceWeight:function(t){return t.value||1},targetWeight:function(t){return t.value||1},sortBy:null});function mqt(t,e){var n=function(t){return(0,tOt.f0)({},gqt,t)}(t),r={},i=e.nodes,o=e.links;i.forEach((function(t){var e=n.id(t);r[e]=t})),function(t,e,n){(0,tOt.U5)(t,(function(t,r){t.inEdges=e.filter((function(t){return"".concat(n.target(t))==="".concat(r)})),t.outEdges=e.filter((function(t){return"".concat(n.source(t))==="".concat(r)})),t.edges=t.outEdges.concat(t.inEdges),t.frequency=t.edges.length,t.value=0,t.inEdges.forEach((function(e){t.value+=n.targetWeight(e)})),t.outEdges.forEach((function(e){t.value+=n.sourceWeight(e)}))}))}(r,o,n),function(t,e){var n={weight:function(t,e){return e.value-t.value},frequency:function(t,e){return e.frequency-t.frequency},id:function(t,n){return"".concat(e.id(t)).localeCompare("".concat(e.id(n)))}},r=n[e.sortBy];!r&&(0,tOt.mf)(e.sortBy)&&(r=e.sortBy),r&&t.sort(r)}(i,n);var a=function(t,e){var n=t.length;if(!n)throw new TypeError("Invalid nodes: it's empty!");if(e.weight){var r=e.nodePaddingRatio;if(r<0||r>=1)throw new TypeError("Invalid nodePaddingRatio: it must be in range [0, 1)!");var i=r/(2*n),o=e.nodeWidthRatio;if(o<=0||o>=1)throw new TypeError("Invalid nodeWidthRatio: it must be in range (0, 1)!");var a=0;t.forEach((function(t){a+=t.value})),t.forEach((function(t){t.weight=t.value/a,t.width=t.weight*(1-r),t.height=o})),t.forEach((function(n,r){for(var a=0,c=r-1;c>=0;c--)a+=t[c].width+2*i;var l=n.minX=i+a,u=n.maxX=n.minX+n.width,s=n.minY=e.y-o/2,f=n.maxY=s+o;n.x=[l,u,u,l],n.y=[s,s,f,f]}))}else{var c=1/n;t.forEach((function(t,n){t.x=(n+.5)*c,t.y=e.y}))}return t}(i,n),c=function(t,e,n){if(n.weight){var r={};(0,tOt.U5)(t,(function(t,e){r[e]=t.value})),e.forEach((function(e){var i=n.source(e),o=n.target(e),a=t[i],c=t[o];if(a&&c){var l=r[i],u=n.sourceWeight(e),s=a.minX+(a.value-l)/a.value*a.width,f=s+u/a.value*a.width;r[i]-=u;var h=r[o],d=n.targetWeight(e),p=c.minX+(c.value-h)/c.value*c.width,v=p+d/c.value*c.width;r[o]-=d;var g=n.y;e.x=[s,f,p,v],e.y=[g,g,g,g],e.source=a,e.target=c}}))}else e.forEach((function(e){var r=t[n.source(e)],i=t[n.target(e)];r&&i&&(e.x=[r.x,i.x],e.y=[r.y,i.y],e.source=r,e.target=i)}));return e}(r,o,n);return{nodes:a,links:c}}var yqt="x",bqt="y",xqt="name",wqt="source",Sqt={nodeStyle:{opacity:1,fillOpacity:1,lineWidth:1},edgeStyle:{opacity:.5,lineWidth:2},label:{fields:["x","name"],callback:function(t,e){return{offsetX:(t[0]+t[1])/2>.5?-4:4,content:e}},labelEmit:!0,style:{fill:"#8c8c8c"}},tooltip:{showTitle:!1,showMarkers:!1,fields:["source","target","value","isNode"],showContent:function(t){return!(0,tOt.U2)(t,[0,"data","isNode"])},formatter:function(t){var e=t.source,n=t.target,r=t.value;return{name:"".concat(e," -> ").concat(n),value:r}}},interactions:[{type:"element-active"}],weight:!0,nodePaddingRatio:.1,nodeWidthRatio:.05};function kqt(t){var e=t.options,n=e.data,r=e.sourceField,i=e.targetField,o=e.weightField,a=e.nodePaddingRatio,c=e.nodeWidthRatio,l=e.rawFields,u=void 0===l?[]:l,s=mqt({weight:!0,nodePaddingRatio:a,nodeWidthRatio:c},CUt(n,r,i,o)),f=s.nodes,h=s.links,d=f.map((function(t){return(0,QCt.pi)((0,QCt.pi)({},SUt(t,(0,QCt.ev)(["id","x","y","name"],u,!0))),{isNode:!0})})),p=h.map((function(t){return(0,QCt.pi)((0,QCt.pi)({source:t.source.name,target:t.target.name,name:t.source.name||t.target.name},SUt(t,(0,QCt.ev)(["x","y","value"],u,!0))),{isNode:!1})}));return(0,QCt.pi)((0,QCt.pi)({},t),{ext:(0,QCt.pi)((0,QCt.pi)({},t.ext),{chordData:{nodesData:d,edgesData:p}})})}function Cqt(t){var e;return t.chart.scale(((e={x:{sync:!0,nice:!0},y:{sync:!0,nice:!0,max:1}})[xqt]={sync:"color"},e[wqt]={sync:"color"},e)),t}function Oqt(t){return t.chart.axis(!1),t}function Eqt(t){return t.chart.legend(!1),t}function Mqt(t){var e=t.chart,n=t.options.tooltip;return e.tooltip(n),t}function Aqt(t){return t.chart.coordinate("polar").reflect("y"),t}function Pqt(t){var e=t.chart,n=t.options,r=t.ext.chordData.nodesData,i=n.nodeStyle,o=n.label,a=n.tooltip,c=e.createView();return c.data(r),BHt({chart:c,options:{xField:yqt,yField:bqt,seriesField:xqt,polygon:{style:i},label:o,tooltip:a}}),t}function _qt(t){var e=t.chart,n=t.options,r=t.ext.chordData.edgesData,i=n.edgeStyle,o=n.tooltip,a=e.createView();return a.data(r),IHt({chart:a,options:{xField:yqt,yField:bqt,seriesField:wqt,edge:{style:i,shape:"arc"},tooltip:o}}),t}function Dqt(t){var e=t.chart;return tHt(e,t.options.animation,function(t){return(0,tOt.U2)(t,["views","length"],0)<=0?t.geometries:(0,tOt.u4)(t.views,(function(t,e){return t.concat(e.geometries)}),t.geometries)}(e)),t}function Tqt(t){return FUt(bHt,kqt,Aqt,Cqt,Oqt,Eqt,Mqt,_qt,Pqt,mHt,xHt,Dqt)(t)}!function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="chord",e}(0,QCt.ZT)(e,t),e.getDefaultOptions=function(){return Sqt},e.prototype.getDefaultOptions=function(){return e.getDefaultOptions()},e.prototype.getSchemaAdaptor=function(){return Tqt}}(VHt);var Zqt=["x","y","r","name","value","path","depth"],Fqt={colorField:"name",autoFit:!0,pointStyle:{lineWidth:0,stroke:"#fff"},legend:!1,hierarchyConfig:{size:[1,1],padding:0},label:{fields:["name"],layout:{type:"limit-in-shape"}},tooltip:{showMarkers:!1,showTitle:!1},drilldown:{enabled:!1}},jqt="drilldown-bread-crumb",Iqt={position:"top-left",dividerText:"/",textStyle:{fontSize:12,fill:"rgba(0, 0, 0, 0.65)",cursor:"pointer"},activeTextStyle:{fill:"#87B5FF"}},Rqt="hierarchy-data-transform-params",Lqt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.name="drill-down",e.historyCache=[],e.breadCrumbGroup=null,e.breadCrumbCfg=Iqt,e}return(0,QCt.ZT)(e,t),e.prototype.click=function(){var t=(0,tOt.U2)(this.context,["event","data","data"]);if(!t)return!1;this.drill(t),this.drawBreadCrumb()},e.prototype.resetPosition=function(){if(this.breadCrumbGroup){var t=this.context.view.getCoordinate(),e=this.breadCrumbGroup,n=e.getBBox(),r=this.getButtonCfg().position,i={x:t.start.x,y:t.end.y-(n.height+10)};t.isPolar&&(i={x:0,y:0}),"bottom-left"===r&&(i={x:t.start.x,y:t.start.y});var o=IFt.transform(null,[["t",i.x+0,i.y+n.height+5]]);e.setMatrix(o)}},e.prototype.back=function(){(0,tOt.dp)(this.historyCache)&&this.backTo(this.historyCache.slice(0,-1))},e.prototype.reset=function(){this.historyCache[0]&&this.backTo(this.historyCache.slice(0,1)),this.historyCache=[],this.hideCrumbGroup()},e.prototype.drill=function(t){var e=this.context.view,n=(0,tOt.U2)(e,["interactions","drill-down","cfg","transformData"],(function(t){return t})),r=n((0,QCt.pi)({data:t.data},t[Rqt]));e.changeData(r);for(var i=[],o=t;o;){var a=o.data;i.unshift({id:"".concat(a.name,"_").concat(o.height,"_").concat(o.depth),name:a.name,children:n((0,QCt.pi)({data:a},t[Rqt]))}),o=o.parent}this.historyCache=(this.historyCache||[]).slice(0,-1).concat(i)},e.prototype.backTo=function(t){if(t&&!(t.length<=0)){var e=this.context.view,n=(0,tOt.Z$)(t).children;e.changeData(n),t.length>1?(this.historyCache=t,this.drawBreadCrumb()):(this.historyCache=[],this.hideCrumbGroup())}},e.prototype.getButtonCfg=function(){var t=this.context.view,e=(0,tOt.U2)(t,["interactions","drill-down","cfg","drillDownConfig"]);return TUt(this.breadCrumbCfg,null==e?void 0:e.breadCrumb,this.cfg)},e.prototype.drawBreadCrumb=function(){this.drawBreadCrumbGroup(),this.resetPosition(),this.breadCrumbGroup.show()},e.prototype.drawBreadCrumbGroup=function(){var t=this,e=this.getButtonCfg(),n=this.historyCache;this.breadCrumbGroup?this.breadCrumbGroup.clear():this.breadCrumbGroup=this.context.view.foregroundGroup.addGroup({name:jqt});var r=0;n.forEach((function(i,o){var a=t.breadCrumbGroup.addShape({type:"text",id:i.id,name:"".concat(jqt,"_").concat(i.name,"_text"),attrs:(0,QCt.pi)((0,QCt.pi)({text:0!==o||(0,tOt.UM)(e.rootText)?i.name:e.rootText},e.textStyle),{x:r,y:0})}),c=a.getBBox();if(r+=c.width+4,a.on("click",(function(e){var r,i=e.target.get("id");if(i!==(null===(r=(0,tOt.Z$)(n))||void 0===r?void 0:r.id)){var o=n.slice(0,n.findIndex((function(t){return t.id===i}))+1);t.backTo(o)}})),a.on("mouseenter",(function(t){var r;t.target.get("id")!==(null===(r=(0,tOt.Z$)(n))||void 0===r?void 0:r.id)?a.attr(e.activeTextStyle):a.attr({cursor:"default"})})),a.on("mouseleave",(function(){a.attr(e.textStyle)})),o0&&n*n>r*r+i*i}function Hqt(t,e){for(var n=0;n(a*=a)?(r=(u+a-i)/(2*u),o=Math.sqrt(Math.max(0,a/u-r*r)),n.x=t.x-r*c-o*l,n.y=t.y-r*l+o*c):(r=(u+i-a)/(2*u),o=Math.sqrt(Math.max(0,i/u-r*r)),n.x=e.x+r*c-o*l,n.y=e.y+r*l+o*c)):(n.x=e.x+n.r,n.y=e.y)}function qqt(t,e){var n=t.r+e.r-1e-6,r=e.x-t.x,i=e.y-t.y;return n>0&&n*n>r*r+i*i}function Yqt(t){var e=t._,n=t.next._,r=e.r+n.r,i=(e.x*n.r+n.x*e.r)/r,o=(e.y*n.r+n.y*e.r)/r;return i*i+o*o}function $qt(t){this._=t,this.next=null,this.previous=null}function Kqt(t){if(!(i=(t=function(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}(t)).length))return 0;var e,n,r,i,o,a,c,l,u,s,f;if((e=t[0]).x=0,e.y=0,!(i>1))return e.r;if(n=t[1],e.x=-n.r,n.x=e.r,n.y=0,!(i>2))return e.r+n.r;Xqt(n,e,r=t[2]),e=new $qt(e),n=new $qt(n),r=new $qt(r),e.next=r.previous=n,n.next=e.previous=r,r.next=n.previous=e;t:for(c=3;c=0;)e+=n[r].value;else e=1;t.value=e}function lYt(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return uYt(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return uYt(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function uYt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function fYt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=0;--o)l.push(r=i[o]=new bYt(i[o])),r.parent=n,r.depth=n.depth+1;return c.eachBefore(yYt)}function vYt(t){return t.children}function gYt(t){return Array.isArray(t)?t[1]:null}function mYt(t){void 0!==t.data.value&&(t.value=t.data.value),t.data=t.data.data}function yYt(t){var e=0;do{t.height=e}while((t=t.parent)&&t.height<++e)}function bYt(t){this.data=t,this.depth=this.height=0,this.parent=null}bYt.prototype=pYt.prototype=(0,V.Z)({constructor:bYt,count:function(){return this.eachAfter(cYt)},each:function(t,e){var n,r=-1,i=lYt(this);try{for(i.s();!(n=i.n()).done;){var o=n.value;t.call(e,o,++r,this)}}catch(a){i.e(a)}finally{i.f()}return this},eachAfter:function(t,e){for(var n,r,i,o=this,a=[o],c=[],l=-1;o=a.pop();)if(c.push(o),n=o.children)for(r=0,i=n.length;r=0;--r)o.push(n[r]);return this},find:function(t,e){var n,r=-1,i=sYt(this);try{for(i.s();!(n=i.n()).done;){var o=n.value;if(t.call(e,o,++r,this))return o}}catch(a){i.e(a)}finally{i.f()}},sum:function(t){return this.eachAfter((function(e){for(var n=+t(e.data)||0,r=e.children,i=r&&r.length;--i>=0;)n+=r[i].value;e.value=n}))},sort:function(t){return this.eachBefore((function(e){e.children&&e.children.sort(t)}))},path:function(t){for(var e=this,n=function(t,e){if(t===e)return t;var n=t.ancestors(),r=e.ancestors(),i=null;t=n.pop(),e=r.pop();for(;t===e;)i=t,t=n.pop(),e=r.pop();return i}(e,t),r=[e];e!==n;)e=e.parent,r.push(e);for(var i=r.length;t!==n;)r.splice(i,0,t),t=t.parent;return r},ancestors:function(){for(var t=this,e=[t];t=t.parent;)e.push(t);return e},descendants:function(){return Array.from(this)},leaves:function(){var t=[];return this.eachBefore((function(e){e.children||t.push(e)})),t},links:function(){var t=this,e=[];return t.each((function(n){n!==t&&e.push({source:n.parent,target:n})})),e},copy:function(){return pYt(this).eachBefore(mYt)}},Symbol.iterator,dYt);var xYt="nodeIndex",wYt="childNodeCount",SYt="nodeAncestor",kYt="Invalid field: it must be a string!";function CYt(t,e){var n=t.field,r=t.fields;if((0,tOt.HD)(n))return n;if((0,tOt.kJ)(n))return console.warn(kYt),n[0];if(console.warn("".concat(kYt," will try to get fields instead.")),(0,tOt.HD)(r))return r;if((0,tOt.kJ)(r)&&r.length)return r[0];if(e)return e;throw new TypeError(kYt)}function OYt(t){var e,n,r=[];t&&t.each?t.each((function(t){var i,o;t.parent!==e?(e=t.parent,n=0):n+=1;var a=(0,tOt.hX)(((null===(i=t.ancestors)||void 0===i?void 0:i.call(t))||[]).map((function(t){return r.find((function(e){return e.name===t.name}))||t})),(function(e){var n=e.depth;return n>0&&n1;)r="".concat(null===(e=a.parent.data)||void 0===e?void 0:e.name," / ").concat(r),a=a.parent;if(o&&t.depth>2)return null;var l=TUt({},t.data,(0,QCt.pi)((0,QCt.pi)((0,QCt.pi)({},SUt(t.data,i)),{path:r}),t));l.ext=n,l[Rqt]={hierarchyConfig:n,rawFields:i,enableDrillDown:o},c.push(l)})),c}function AYt(t,e,n){var r=UUt([t,e]),i=r[0],o=r[1],a=r[2],c=r[3],l=n.width-(c+o),u=n.height-(i+a),s=Math.min(l,u),f=(l-s)/2,h=(u-s)/2;return{finalPadding:[i+h,o+f,a+h,c+f],finalSize:s<0?0:s}}function PYt(t){var e=t.chart,n=Math.min(e.viewBBox.width,e.viewBBox.height);return TUt({options:{size:function(t){return t.r*n}}},t)}function _Yt(t){var e=t.options,n=t.chart,r=n.viewBBox,i=e.padding,o=e.appendPadding,a=e.drilldown,c=o;(null==a?void 0:a.enabled)&&(c=UUt([zUt(n.appendPadding,(0,tOt.U2)(a,["breadCrumb","position"])),o]));var l=AYt(i,c,r).finalPadding;return n.padding=l,n.appendPadding=0,t}function DYt(t){var e=t.chart,n=t.options,r=e.padding,i=e.appendPadding,o=n.color,a=n.colorField,c=n.pointStyle,l=n.hierarchyConfig,u=n.sizeField,s=n.rawFields,f=void 0===s?[]:s,h=n.drilldown,d=MYt({data:n.data,hierarchyConfig:l,enableDrillDown:null==h?void 0:h.enabled,rawFields:f});e.data(d);var p=AYt(r,i,e.viewBBox).finalSize,v=function(t){return t.r*p};return u&&(v=function(t){return t[u]*p}),NHt(TUt({},t,{options:{xField:"x",yField:"y",seriesField:a,sizeField:u,rawFields:(0,QCt.ev)((0,QCt.ev)([],Zqt,!0),f,!0),point:{color:o,style:c,shape:"circle",size:v}}})),t}function TYt(t){return FUt(kHt({},{x:{min:0,max:1,minLimit:0,maxLimit:1,nice:!0},y:{min:0,max:1,minLimit:0,maxLimit:1,nice:!0}}))(t)}function ZYt(t){var e=t.chart,n=t.options.tooltip;if(!1===n)e.tooltip(!1);else{var r=n;(0,tOt.U2)(n,"fields")||(r=TUt({},{customItems:function(t){return t.map((function(t){var n=(0,tOt.U2)(e.getOptions(),"scales"),r=(0,tOt.U2)(n,["name","formatter"],(function(t){return t})),i=(0,tOt.U2)(n,["value","formatter"],(function(t){return t}));return(0,QCt.pi)((0,QCt.pi)({},t),{name:r(t.data.name),value:i(t.data.value)})}))}},r)),e.tooltip(r)}return t}function FYt(t){return t.chart.axis(!1),t}function jYt(t){var e=t.drilldown,n=t.interactions,r=void 0===n?[]:n;return(null==e?void 0:e.enabled)?TUt({},t,{interactions:(0,QCt.ev)((0,QCt.ev)([],r,!0),[{type:"drill-down",cfg:{drillDownConfig:e,transformData:MYt,enableDrillDown:!0}}],!1)}):t}function IYt(t){return mHt({chart:t.chart,options:jYt(t.options)}),t}function RYt(t){return FUt(pHt("pointStyle"),PYt,_Yt,bHt,TYt,DYt,FYt,vHt,ZYt,IYt,yHt,CHt())(t)}function LYt(t){var e=(0,tOt.U2)(t,["event","data","data"],{});return(0,tOt.kJ)(e.children)&&e.children.length>0}function NYt(t){var e=t.view.getCoordinate(),n=e.innerRadius;if(n){var r=t.event,i=r.x,o=r.y,a=e.center,c=a.x,l=a.y,u=e.getRadius()*n;return Math.sqrt(Math.pow(c-i,2)+Math.pow(l-o,2))-1)||function(t,e,n){var r=Math.min(e,n),i=Math.max(e,n);return t>=r&&t<=i}(e,s,f)})),t.getRootView().render(!0)}};function t$t(t){var e,n=t.options,r=n.geometryOptions,i=void 0===r?[]:r,o=n.xField,a=n.yField,c=(0,tOt.yW)(i,(function(t){var e=t.geometry;return e===zYt.Line||void 0===e}));return TUt({},{options:{geometryOptions:[],meta:(e={},e[o]={type:"cat",sync:!0,range:c?[0,1]:void 0},e),tooltip:{showMarkers:c,showCrosshairs:c,shared:!0,crosshairs:{type:"x"}},interactions:c?[{type:"legend-visible-filter"}]:[{type:"legend-visible-filter"},{type:"active-region"}],legend:{position:"top-left"}}},t,{options:{yAxis:$Yt(a,n.yAxis),geometryOptions:[YYt(0,a[0],i[0]),YYt(0,a[1],i[1])],annotations:$Yt(a,n.annotations)}})}function e$t(t){var e,n,r=t.chart,i=t.options.geometryOptions,o={line:0,column:1};return[{type:null===(e=i[0])||void 0===e?void 0:e.geometry,id:UYt},{type:null===(n=i[1])||void 0===n?void 0:n.geometry,id:HYt}].sort((function(t,e){return-o[t.type]+o[e.type]})).forEach((function(t){return r.createView({id:t.id})})),t}function n$t(t){var e=t.chart,n=t.options,r=n.xField,i=n.yField,o=n.geometryOptions,a=n.data,c=n.tooltip;return[(0,QCt.pi)((0,QCt.pi)({},o[0]),{id:UYt,data:a[0],yField:i[0]}),(0,QCt.pi)((0,QCt.pi)({},o[1]),{id:HYt,data:a[1],yField:i[1]})].forEach((function(t){var n=t.id,i=t.data,o=t.yField,a=qYt(t)&&t.isPercent,l=a?GHt(i,o,r,o):i,u=KUt(e,n).data(l),s=a?(0,QCt.pi)({formatter:function(e){return{name:e[t.seriesField]||o,value:(100*Number(e[o])).toFixed(2)+"%"}}},c):c;!function(t){var e=t.options,n=t.chart,r=e.geometryOption,i=r.isStack,o=r.color,a=r.seriesField,c=r.groupField,l=r.isGroup,u=["xField","yField"];if(XYt(r)){LHt(TUt({},t,{options:(0,QCt.pi)((0,QCt.pi)((0,QCt.pi)({},SUt(e,u)),r),{line:{color:r.color,style:r.lineStyle}})})),NHt(TUt({},t,{options:(0,QCt.pi)((0,QCt.pi)((0,QCt.pi)({},SUt(e,u)),r),{point:r.point&&(0,QCt.pi)({color:o,shape:"circle"},r.point)})}));var s=[];l&&s.push({type:"dodge",dodgeBy:c||a,customOffset:0}),i&&s.push({type:"stack"}),s.length&&(0,tOt.S6)(n.geometries,(function(t){t.adjust(s)}))}qYt(r)&&MWt(TUt({},t,{options:(0,QCt.pi)((0,QCt.pi)((0,QCt.pi)({},SUt(e,u)),r),{widthRatio:r.columnWidthRatio,interval:(0,QCt.pi)((0,QCt.pi)({},SUt(r,["color"])),{style:r.columnStyle})})}))}({chart:u,options:{xField:r,yField:o,tooltip:s,geometryOption:t}})})),t}function r$t(t){var e,n=t.chart,r=t.options.geometryOptions,i=(null===(e=n.getTheme())||void 0===e?void 0:e.colors10)||[],o=0;return n.once("beforepaint",(function(){(0,tOt.S6)(r,(function(t,e){var r=KUt(n,0===e?UYt:HYt);if(!t.color){var a=r.getGroupScales(),c=(0,tOt.U2)(a,[0,"values","length"],1),l=i.slice(o,o+c).concat(0===e?[]:i);r.geometries.forEach((function(e){t.seriesField?e.color(t.seriesField,l):e.color(l[0])})),o+=c}})),n.render(!0)})),t}function i$t(t){var e,n,r=t.chart,i=t.options,o=i.xAxis,a=i.yAxis,c=i.xField,l=i.yField;return kHt(((e={})[c]=o,e[l[0]]=a[0],e))(TUt({},t,{chart:KUt(r,UYt)})),kHt(((n={})[c]=o,n[l[1]]=a[1],n))(TUt({},t,{chart:KUt(r,HYt)})),t}function o$t(t){var e=t.chart,n=t.options,r=KUt(e,UYt),i=KUt(e,HYt),o=n.xField,a=n.yField,c=n.xAxis,l=n.yAxis;return e.axis(o,!1),e.axis(a[0],!1),e.axis(a[1],!1),r.axis(o,c),r.axis(a[0],KYt(l[0],BYt.Left)),i.axis(o,!1),i.axis(a[1],KYt(l[1],BYt.Right)),t}function a$t(t){var e=t.chart,n=t.options.tooltip,r=KUt(e,UYt),i=KUt(e,HYt);return e.tooltip(n),r.tooltip({shared:!0}),i.tooltip({shared:!0}),t}function c$t(t){var e=t.chart;return mHt(TUt({},t,{chart:KUt(e,UYt)})),mHt(TUt({},t,{chart:KUt(e,HYt)})),t}function l$t(t){var e=t.chart,n=t.options.annotations,r=(0,tOt.U2)(n,[0]),i=(0,tOt.U2)(n,[1]);return CHt(r)(TUt({},t,{chart:KUt(e,UYt),options:{annotations:r}})),CHt(i)(TUt({},t,{chart:KUt(e,HYt),options:{annotations:i}})),t}function u$t(t){var e=t.chart;return bHt(TUt({},t,{chart:KUt(e,UYt)})),bHt(TUt({},t,{chart:KUt(e,HYt)})),bHt(t),t}function s$t(t){var e=t.chart;return yHt(TUt({},t,{chart:KUt(e,UYt)})),yHt(TUt({},t,{chart:KUt(e,HYt)})),t}function f$t(t){var e=t.chart,n=t.options.yAxis;return OHt(TUt({},t,{chart:KUt(e,UYt),options:{yAxis:n[0]}})),OHt(TUt({},t,{chart:KUt(e,HYt),options:{yAxis:n[1]}})),t}function h$t(t){var e=t.chart,n=t.options,r=n.legend,i=n.geometryOptions,o=n.yField,a=n.data,c=KUt(e,UYt),l=KUt(e,HYt);if(!1===r)e.legend(!1);else if((0,tOt.Kn)(r)&&!0===r.custom)e.legend(r);else{var u=(0,tOt.U2)(i,[0,"legend"],r),s=(0,tOt.U2)(i,[1,"legend"],r);e.once("beforepaint",(function(){var t=a[0].length?JYt({view:c,geometryOption:i[0],yField:o[0],legend:u}):[],n=a[1].length?JYt({view:l,geometryOption:i[1],yField:o[1],legend:s}):[];e.legend(TUt({},r,{custom:!0,items:t.concat(n)}))})),i[0].seriesField&&c.legend(i[0].seriesField,u),i[1].seriesField&&l.legend(i[1].seriesField,s),e.on("legend-item:click",(function(t){var n=(0,tOt.U2)(t,"gEvent.delegateObject",{});if(n&&n.item){var r=n.item,i=r.value,a=r.isGeometry,c=r.viewId;if(a){if((0,tOt.cx)(o,(function(t){return t===i}))>-1){var l=(0,tOt.U2)(KUt(e,c),"geometries");(0,tOt.S6)(l,(function(t){t.changeVisible(!n.item.unchecked)}))}}else{var u=(0,tOt.U2)(e.getController("legend"),"option.items",[]);(0,tOt.S6)(e.views,(function(t){var n=t.getGroupScales();(0,tOt.S6)(n,(function(e){e.values&&e.values.indexOf(i)>-1&&t.filter(e.field,(function(t){return!(0,tOt.sE)(u,(function(e){return e.value===t})).unchecked}))})),e.render(!0)}))}}}))}return t}function d$t(t){var e=t.chart,n=t.options.slider,r=KUt(e,UYt),i=KUt(e,HYt);return n&&(r.option("slider",n),r.on("slider:valuechanged",(function(t){var e=t.event,n=e.value,r=e.originValue;(0,tOt.Xy)(n,r)||QYt(i,n)})),e.once("afterpaint",(function(){if(!(0,tOt.jn)(n)){var t=n.start,e=n.end;(t||e)&&QYt(i,[t,e])}}))),t}function p$t(t){return FUt(t$t,e$t,u$t,n$t,i$t,o$t,f$t,a$t,c$t,l$t,s$t,r$t,h$t,d$t)(t)}!function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="dual-axes",e}(0,QCt.ZT)(e,t),e.prototype.getDefaultOptions=function(){return TUt({},t.prototype.getDefaultOptions.call(this),{yAxis:[],syncViewPadding:!0})},e.prototype.getSchemaAdaptor=function(){return p$t}}(VHt);function v$t(t){var e=t.chart,n=t.options,r=n.type,i=n.data,o=n.fields,a=n.eachView,c=(0,tOt.CE)(n,["type","data","fields","eachView","axes","meta","tooltip","coordinate","theme","legend","interactions","annotations"]);return e.data(i),e.facet(r,(0,QCt.pi)((0,QCt.pi)({},c),{fields:o,eachView:function(t,e){var n=a(t,e);if(n.geometries)!function(t,e){var n=e.data,r=e.coordinate,i=e.interactions,o=e.annotations,a=e.animation,c=e.tooltip,l=e.axes,u=e.meta,s=e.geometries;n&&t.data(n);var f={};l&&(0,tOt.S6)(l,(function(t,e){f[e]=SUt(t,yUt)})),f=TUt({},u,f),t.scale(f),r&&t.coordinate(r),!1===l?t.axis(!1):(0,tOt.S6)(l,(function(e,n){t.axis(n,e)})),(0,tOt.S6)(s,(function(e){var n=FHt({chart:t,options:e}).ext,r=e.adjust;r&&n.geometry.adjust(r)})),(0,tOt.S6)(i,(function(e){!1===e.enable?t.removeInteraction(e.type):t.interaction(e.type,e.cfg)})),(0,tOt.S6)(o,(function(e){t.annotation()[e.type]((0,QCt.pi)({},e))})),tHt(t,a),c?(t.interaction("tooltip"),t.tooltip(c)):!1===c&&t.removeInteraction("tooltip")}(t,n);else{var r=n,i=r.options;i.tooltip&&t.interaction("tooltip"),EXt(r.type,t,i)}}})),t}function g$t(t){var e=t.chart,n=t.options,r=n.axes,i=n.meta,o=n.tooltip,a=n.coordinate,c=n.theme,l=n.legend,u=n.interactions,s=n.annotations,f={};return r&&(0,tOt.S6)(r,(function(t,e){f[e]=SUt(t,yUt)})),f=TUt({},i,f),e.scale(f),e.coordinate(a),r?(0,tOt.S6)(r,(function(t,n){e.axis(n,t)})):e.axis(!1),o?(e.interaction("tooltip"),e.tooltip(o)):!1===o&&e.removeInteraction("tooltip"),e.legend(l),c&&e.theme(c),(0,tOt.S6)(u,(function(t){!1===t.enable?e.removeInteraction(t.type):e.interaction(t.type,t.cfg)})),(0,tOt.S6)(s,(function(t){e.annotation()[t.type]((0,QCt.pi)({},t))})),t}function m$t(t){return FUt(bHt,v$t,g$t)(t)}var y$t={title:{style:{fontSize:12,fill:"rgba(0,0,0,0.65)"}},rowTitle:{style:{fontSize:12,fill:"rgba(0,0,0,0.65)"}},columnTitle:{style:{fontSize:12,fill:"rgba(0,0,0,0.65)"}}};!function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="area",e}(0,QCt.ZT)(e,t),e.getDefaultOptions=function(){return y$t},e.prototype.getDefaultOptions=function(){return e.getDefaultOptions()},e.prototype.getSchemaAdaptor=function(){return m$t}}(VHt);function b$t(t){var e=t.chart,n=t.options,r=n.data,i=n.type,o=n.xField,a=n.yField,c=n.colorField,l=n.sizeField,u=n.sizeRatio,s=n.shape,f=n.color,h=n.tooltip,d=n.heatmapStyle,p=n.meta;e.data(r);var v="polygon";"density"===i&&(v="heatmap");var g=DHt(h,[o,a,c]),m=g.fields,y=g.formatter,b=1;return(u||0===u)&&(s||l?u<0||u>1?console.warn("sizeRatio is not in effect: It must be a number in [0,1]"):b=u:console.warn("sizeRatio is not in effect: Must define shape or sizeField first")),FHt(TUt({},t,{options:{type:v,colorField:c,tooltipFields:m,shapeField:l||"",label:void 0,mapping:{tooltip:y,shape:s&&(l?function(t){var e=r.map((function(t){return t[l]})),n=(null==p?void 0:p[l])||{},i=n.min,o=n.max;return i=(0,tOt.hj)(i)?i:Math.min.apply(Math,e),o=(0,tOt.hj)(o)?o:Math.max.apply(Math,e),[s,((0,tOt.U2)(t,l)-i)/(o-i),b]}:function(){return[s,1,b]}),color:f||c&&e.getTheme().sequenceColors.join("-"),style:d}}})),t}function x$t(t){var e,n=t.options,r=n.xAxis,i=n.yAxis,o=n.xField,a=n.yField;return FUt(kHt(((e={})[o]=r,e[a]=i,e)))(t)}function w$t(t){var e=t.chart,n=t.options,r=n.xAxis,i=n.yAxis,o=n.xField,a=n.yField;return!1===r?e.axis(o,!1):e.axis(o,r),!1===i?e.axis(a,!1):e.axis(a,i),t}function S$t(t){var e=t.chart,n=t.options,r=n.legend,i=n.colorField,o=n.sizeField,a=n.sizeLegend,c=!1!==r;return i&&e.legend(i,!!c&&r),o&&e.legend(o,void 0===a?r:a),c||a||e.legend(!1),t}function k$t(t){var e=t.chart,n=t.options,r=n.label,i=n.colorField,o=jUt(e,"density"===n.type?"heatmap":"polygon");if(r){if(i){var a=r.callback,c=(0,QCt._T)(r,["callback"]);o.label({fields:[i],callback:a,cfg:LUt(c)})}}else o.label(!1);return t}function C$t(t){var e,n,r=t.chart,i=t.options,o=i.coordinate,a=i.reflect,c=TUt({actions:[]},null!=o?o:{type:"rect"});return a&&(null===(n=null===(e=c.actions)||void 0===e?void 0:e.push)||void 0===n||n.call(e,["reflect",a])),r.coordinate(c),t}function O$t(t){return FUt(bHt,pHt("heatmapStyle"),x$t,C$t,b$t,w$t,S$t,gHt,k$t,CHt(),mHt,yHt,xHt)(t)}var E$t=TUt({},VHt.getDefaultOptions(),{type:"polygon",legend:!1,coordinate:{type:"rect"},xAxis:{tickLine:null,line:null,grid:{alignTick:!1,line:{style:{lineWidth:1,lineDash:null,stroke:"#f0f0f0"}}}},yAxis:{grid:{alignTick:!1,line:{style:{lineWidth:1,lineDash:null,stroke:"#f0f0f0"}}}}});JZt("polygon","circle",{draw:function(t,e){var n,r,i=t.x,o=t.y,a=this.parsePoints(t.points),c=Math.abs(a[2].x-a[1].x),l=Math.abs(a[1].y-a[0].y),u=Math.min(c,l)/2,s=Number(t.shape[1]),f=Number(t.shape[2]),h=u*Math.sqrt(f)*Math.sqrt(s),d=(null===(n=t.style)||void 0===n?void 0:n.fill)||t.color||(null===(r=t.defaultStyle)||void 0===r?void 0:r.fill);return e.addShape("circle",{attrs:(0,QCt.pi)((0,QCt.pi)((0,QCt.pi)({x:i,y:o,r:h},t.defaultStyle),t.style),{fill:d})})}}),JZt("polygon","square",{draw:function(t,e){var n,r,i=t.x,o=t.y,a=this.parsePoints(t.points),c=Math.abs(a[2].x-a[1].x),l=Math.abs(a[1].y-a[0].y),u=Math.min(c,l),s=Number(t.shape[1]),f=Number(t.shape[2]),h=u*Math.sqrt(f)*Math.sqrt(s),d=(null===(n=t.style)||void 0===n?void 0:n.fill)||t.color||(null===(r=t.defaultStyle)||void 0===r?void 0:r.fill);return e.addShape("rect",{attrs:(0,QCt.pi)((0,QCt.pi)((0,QCt.pi)({x:i-h/2,y:o-h/2,width:h,height:h},t.defaultStyle),t.style),{fill:d})})}});!function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="heatmap",e}(0,QCt.ZT)(e,t),e.getDefaultOptions=function(){return E$t},e.prototype.getSchemaAdaptor=function(){return O$t},e.prototype.getDefaultOptions=function(){return e.getDefaultOptions()}}(VHt);var M$t="liquid";function A$t(t){return[{percent:t,type:M$t}]}function P$t(t){var e=t.chart,n=t.options,r=n.percent,i=n.liquidStyle,o=n.radius,a=n.outline,c=n.wave,l=n.shape,u=n.shapeStyle,s=n.animation;e.scale({percent:{min:0,max:1}}),e.data(A$t(r));var f=n.color||e.getTheme().defaultColor,h=RHt(TUt({},t,{options:{xField:"type",yField:"percent",widthRatio:o,interval:{color:f,style:i,shape:"liquid-fill-gauge"}}})).ext.geometry,d={percent:r,radius:o,outline:a,wave:c,shape:l,shapeStyle:u,background:e.getTheme().background,animation:s};return h.customInfo(d),e.legend(!1),e.axis(!1),e.tooltip(!1),t}function _$t(t,e){var n=t.chart,r=t.options,i=r.statistic,o=r.percent,a=r.meta;n.getController("annotation").clear(!0);var c=(0,tOt.U2)(a,["percent","formatter"])||function(t){return"".concat((100*t).toFixed(2),"%")},l=i.content;return l&&(l=TUt({},l,{content:(0,tOt.UM)(l.content)?c(o):l.content})),qUt(n,{statistic:(0,QCt.pi)((0,QCt.pi)({},i),{content:l}),plotType:"liquid"},{percent:o}),e&&n.render(!0),t}function D$t(t){return FUt(bHt,pHt("liquidStyle"),P$t,_$t,kHt({}),yHt,mHt)(t)}var T$t={radius:.9,statistic:{title:!1,content:{style:{opacity:.75,fontSize:"30px",lineHeight:"30px",textAlign:"center"}}},outline:{border:2,distance:0},wave:{count:3,length:192},shape:"circle"};function Z$t(t,e,n){return t+(e-t)*n}function F$t(t,e,n,r){return 0===e?[[t+.5*n/Math.PI/2,r/2],[t+.5*n/Math.PI,r],[t+n/4,r]]:1===e?[[t+.5*n/Math.PI/2*(Math.PI-2),r],[t+.5*n/Math.PI/2*(Math.PI-1),r/2],[t+n/4,0]]:2===e?[[t+.5*n/Math.PI/2,-r/2],[t+.5*n/Math.PI,-r],[t+n/4,-r]]:[[t+.5*n/Math.PI/2*(Math.PI-2),-r],[t+.5*n/Math.PI/2*(Math.PI-1),-r/2],[t+n/4,0]]}function j$t(t,e,n,r,i,o,a){for(var c=4*Math.ceil(2*t/n*4),l=[],u=r;u<2*-Math.PI;)u+=2*Math.PI;for(;u>0;)u-=2*Math.PI;var s=o-t+(u=u/Math.PI/2*n)-2*t;l.push(["M",s,e]);for(var f=0,h=0;h0){var O=e.addGroup({name:"waves"}),E=O.setClip({type:"path",attrs:{path:C}});!function(t,e,n,r,i,o,a,c,l,u){for(var s=i.fill,f=i.opacity,h=a.getBBox(),d=h.maxX-h.minX,p=h.maxY-h.minY,v=0;v0){var a=this.view.geometries[0],c=a.dataArray,l=o[0].name,u=[];return c.forEach((function(t){t.forEach((function(t){var e=IFt.getTooltipItems(t,a)[0];if(!r&&e&&e.name===l){var n=(0,tOt.UM)(i)?l:i;u.push((0,QCt.pi)((0,QCt.pi)({},e),{name:e.title,title:n}))}else if(r&&e){n=(0,tOt.UM)(i)?e.name||l:i;u.push((0,QCt.pi)((0,QCt.pi)({},e),{name:e.title,title:n}))}}))})),u}return[]},e}(TZt);gZt("radar-tooltip",H$t);var W$t=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.init=function(){this.context.view.removeInteraction("tooltip")},e.prototype.show=function(){var t=this.context.event;this.getTooltipController().showTooltip({x:t.x,y:t.y})},e.prototype.hide=function(){this.getTooltipController().hideTooltip()},e.prototype.getTooltipController=function(){return this.context.view.getController("radar-tooltip")},e}(BDt);VDt("radar-tooltip",W$t),zTt("radar-tooltip",{start:[{trigger:"plot:mousemove",action:"radar-tooltip:show"}],end:[{trigger:"plot:mouseleave",action:"radar-tooltip:hide"}]});var V$t=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="radar",e}return(0,QCt.ZT)(e,t),e.prototype.changeData=function(t){this.updateOption({data:t}),this.chart.changeData(t)},e.prototype.getDefaultOptions=function(){return TUt({},t.prototype.getDefaultOptions.call(this),{xAxis:{label:{offset:15},grid:{line:{type:"line"}}},yAxis:{grid:{line:{type:"circle"}}},legend:{position:"top"},tooltip:{shared:!0,showCrosshairs:!0,showMarkers:!0,crosshairs:{type:"xy",line:{style:{stroke:"#565656",lineDash:[4]}},follow:!0}}})},e.prototype.getSchemaAdaptor=function(){return U$t},e}(VHt);function G$t(t,e,n){var r=n.map((function(t){return t[e]})).filter((function(t){return void 0!==t})),i=r.length>0?Math.max.apply(Math,r):0,o=Math.abs(t)%360;return o?360*i/o:i}function X$t(t){var e=t.chart,n=t.options,r=n.barStyle,i=n.color,o=n.tooltip,a=n.colorField,c=n.type,l=n.xField,u=n.yField,s=n.data,f=n.shape,h=OUt(s,u);return e.data(h),RHt(TUt({},t,{options:{tooltip:o,seriesField:a,interval:{style:r,color:i,shape:f||("line"===c?"line":"intervel")},minColumnWidth:n.minBarWidth,maxColumnWidth:n.maxBarWidth,columnBackground:n.barBackground}})),"line"===c&&NHt({chart:e,options:{xField:l,yField:u,seriesField:a,point:{shape:"circle",color:i}}}),t}function q$t(t){var e,n=t.options,r=n.yField,i=n.xField,o=n.data,a=n.isStack,c=n.isGroup,l=n.colorField,u=n.maxAngle,s=a&&!c&&l?function(t,e,n){var r=[];return t.forEach((function(t){var i=r.find((function(n){return n[e]===t[e]}));i?i[n]+=t[n]||null:r.push((0,QCt.pi)({},t))})),r}(o,i,r):o,f=OUt(s,r);return FUt(kHt(((e={})[r]={min:0,max:G$t(u,r,f)},e)))(t)}function Y$t(t){var e=t.chart,n=t.options,r=n.radius,i=n.innerRadius,o=n.startAngle,a=n.endAngle;return e.coordinate({type:"polar",cfg:{radius:r,innerRadius:i,startAngle:o,endAngle:a}}).transpose(),t}function $$t(t){var e=t.chart,n=t.options,r=n.xField,i=n.xAxis;return e.axis(r,i),t}function K$t(t){var e=t.chart,n=t.options,r=n.label,i=n.yField,o=jUt(e,"interval");if(r){var a=r.callback,c=(0,QCt._T)(r,["callback"]);o.label({fields:[i],callback:a,cfg:(0,QCt.pi)((0,QCt.pi)({},LUt(c)),{type:"polar"})})}else o.label(!1);return t}function J$t(t){return FUt(pHt("barStyle"),X$t,q$t,$$t,Y$t,mHt,yHt,bHt,gHt,vHt,CHt(),K$t)(t)}var Q$t=TUt({},VHt.getDefaultOptions(),{interactions:[{type:"element-active"}],legend:!1,tooltip:{showMarkers:!1},xAxis:{grid:null,tickLine:null,line:null},maxAngle:240});!function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="radial-bar",e}(0,QCt.ZT)(e,t),e.getDefaultOptions=function(){return Q$t},e.prototype.changeData=function(t){this.updateOption({data:t}),q$t({chart:this.chart,options:this.options}),this.chart.changeData(t)},e.prototype.getDefaultOptions=function(){return e.getDefaultOptions()},e.prototype.getSchemaAdaptor=function(){return J$t}}(VHt);function tKt(t){var e=t.chart,n=t.options,r=n.data,i=n.sectorStyle,o=n.shape,a=n.color;return e.data(r),FUt(RHt)(TUt({},t,{options:{marginRatio:1,interval:{style:i,color:a,shape:o}}})),t}function eKt(t){var e=t.chart,n=t.options,r=n.label,i=n.xField,o=jUt(e,"interval");if(!1===r)o.label(!1);else if((0,tOt.Kn)(r)){var a=r.callback,c=r.fields,l=(0,QCt._T)(r,["callback","fields"]),u=l.offset,s=l.layout;(void 0===u||u>=0)&&(s=s?(0,tOt.kJ)(s)?s:[s]:[],l.layout=(0,tOt.hX)(s,(function(t){return"limit-in-shape"!==t.type})),l.layout.length||delete l.layout),o.label({fields:c||[i],callback:a,cfg:LUt(l)})}else wUt(mUt.WARN,null===r,"the label option must be an Object."),o.label({fields:[i]});return t}function nKt(t){var e=t.chart,n=t.options,r=n.legend,i=n.seriesField;return!1===r?e.legend(!1):i&&e.legend(i,r),t}function rKt(t){var e=t.chart,n=t.options,r=n.radius,i=n.innerRadius,o=n.startAngle,a=n.endAngle;return e.coordinate({type:"polar",cfg:{radius:r,innerRadius:i,startAngle:o,endAngle:a}}),t}function iKt(t){var e,n=t.options,r=n.xAxis,i=n.yAxis,o=n.xField,a=n.yField;return FUt(kHt(((e={})[o]=r,e[a]=i,e)))(t)}function oKt(t){var e=t.chart,n=t.options,r=n.xAxis,i=n.yAxis,o=n.xField,a=n.yField;return r?e.axis(o,r):e.axis(o,!1),i?e.axis(a,i):e.axis(a,!1),t}function aKt(t){FUt(pHt("sectorStyle"),tKt,iKt,eKt,rKt,oKt,nKt,gHt,mHt,yHt,bHt,CHt(),xHt)(t)}var cKt=TUt({},VHt.getDefaultOptions(),{xAxis:!1,yAxis:!1,legend:{position:"right",radio:{}},sectorStyle:{stroke:"#fff",lineWidth:1},label:{layout:{type:"limit-in-shape"}},tooltip:{shared:!0,showMarkers:!1},interactions:[{type:"active-region"}]}),lKt=(function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="rose",e}(0,QCt.ZT)(e,t),e.getDefaultOptions=function(){return cKt},e.prototype.changeData=function(t){this.updateOption({data:t}),this.chart.changeData(t)},e.prototype.getDefaultOptions=function(){return e.getDefaultOptions()},e.prototype.getSchemaAdaptor=function(){return aKt}}(VHt),"x"),uKt="y",sKt="name",fKt="nodes",hKt="edges";function dKt(t,e,n){if(!(0,tOt.kJ)(t))return[];var r=[],i=function(t,e,n){var r=[];return t.forEach((function(t){var i=t[e],o=t[n];r.includes(i)||r.push(i),r.includes(o)||r.push(o)})),r}(t,e,n),o=function(t,e,n,r){var i={};return e.forEach((function(t){i[t]={},e.forEach((function(e){i[t][e]=0}))})),t.forEach((function(t){i[t[n]][t[r]]=1})),i}(t,i,e,n),a={};function c(t){a[t]=1,i.forEach((function(e){if(0!=o[t][e])if(1==a[e])r.push("".concat(t,"_").concat(e));else{if(-1==a[e])return;c(e)}})),a[t]=-1}return i.forEach((function(t){a[t]=0})),i.forEach((function(t){-1!=a[t]&&c(t)})),0!==r.length&&console.warn("sankey data contains circle, ".concat(r.length," records removed."),r),t.filter((function(t){return r.findIndex((function(r){return r==="".concat(t[e],"_").concat(t[n])}))<0}))}function pKt(t){return t.target.depth}function vKt(t,e){return t.sourceLinks.length?t.depth:e-1}function gKt(t){return function(){return t}}function mKt(t,e){for(var n=0,r=0;rr)throw new Error("circular link");i=o,o=new Set}if(e)for(var c=Math.max(yKt(n,(function(t){return t.depth}))+1,0),l=void 0,u=0;un)throw new Error("circular link");r=i,i=new Set}}(y),function(e){var r=function(t){for(var e=t.nodes,r=Math.max(yKt(e,(function(t){return t.depth}))+1,0),o=(a-i-l)/(r-1),c=new Array(r).fill(0).map((function(){return[]})),u=0,s=e;u0){var m=(s/f-u.y0)*e;u.y0+=m,u.y1+=m,w(u)}}void 0===n&&a.sort(wKt),a.length&&y(a,r)}}function m(t,e,r){for(var i=t.length-2;i>=0;--i){for(var o=t[i],a=0,c=o;a0){var g=(u/s-l.y0)*e;l.y0+=g,l.y1+=g,w(l)}}void 0===n&&o.sort(wKt),o.length&&y(o,r)}}function y(e,n){var r=e.length>>1,i=e[r];x(e,i.y0-t,r-1,n),b(e,i.y1+t,r+1,n),x(e,c,e.length-1,n),b(e,o,0,n)}function b(e,n,r,i){for(;r1e-6&&(o.y0+=a,o.y1+=a),n=o.y1+t}}function x(e,n,r,i){for(;r>=0;--r){var o=e[r],a=(o.y1-n)*i;a>1e-6&&(o.y0-=a,o.y1-=a),n=o.y0-t}}function w(t){var e=t.sourceLinks,n=t.targetLinks;if(void 0===r){for(var i=0,o=n;i "+t.target,value:t.value}}},nodeWidthRatio:.008,nodePaddingRatio:.01,animation:{appear:{animation:"wave-in"},enter:{animation:"wave-in"}}}},e.prototype.changeData=function(t){this.updateOption({data:t});var e=FKt(this.options,this.chart.width,this.chart.height),n=e.nodes,r=e.edges,i=KUt(this.chart,fKt),o=KUt(this.chart,hKt);i.changeData(n),o.changeData(r)},e.prototype.getSchemaAdaptor=function(){return BKt},e.prototype.getDefaultOptions=function(){return e.getDefaultOptions()}}(VHt);var UKt="ancestor-node",HKt="value",WKt="path",VKt=[WKt,xYt,SYt,wYt,"name","depth","height"],GKt=TUt({},VHt.getDefaultOptions(),{innerRadius:0,radius:.85,hierarchyConfig:{field:"value"},tooltip:{shared:!0,showMarkers:!1,offset:20,showTitle:!1},legend:!1,sunburstStyle:{lineWidth:.5,stroke:"#FFF"},drilldown:{enabled:!0}});function XKt(t){t.x0=Math.round(t.x0),t.y0=Math.round(t.y0),t.x1=Math.round(t.x1),t.y1=Math.round(t.y1)}function qKt(t,e,n,r,i){for(var o,a=t.children,c=-1,l=a.length,u=t.value&&(r-e)/t.value;++c0)throw new Error("cycle");return o}return n.id=function(e){return arguments.length?(t=Qqt(e),n):t},n.parentId=function(t){return arguments.length?(e=Qqt(t),n):e},n}function cJt(t,e){return t.parent===e.parent?1:2}function lJt(t){var e=t.children;return e?e[0]:t.t}function uJt(t){var e=t.children;return e?e[e.length-1]:t.t}function sJt(t,e,n){var r=n/(e.i-t.i);e.c-=r,e.s+=n,t.c+=r,e.z+=n,e.m+=n}function fJt(t,e,n){return t.a.parent===e.parent?t.a:n}function hJt(t,e){this._=t,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=e}function dJt(){var t=cJt,e=1,n=1,r=null;function i(i){var l=function(t){for(var e,n,r,i,o,a=new hJt(t,0),c=[a];e=c.pop();)if(r=e._.children)for(e.children=new Array(o=r.length),i=o-1;i>=0;--i)c.push(n=e.children[i]=new hJt(r[i],i)),n.parent=e;return(a.parent=new hJt(null,0)).children=[a],a}(i);if(l.eachAfter(o),l.parent.m=-l.z,l.eachBefore(a),r)i.eachBefore(c);else{var u=i,s=i,f=i;i.eachBefore((function(t){t.xs.x&&(s=t),t.depth>f.depth&&(f=t)}));var h=u===s?1:t(u,s)/2,d=h-u.x,p=e/(s.x+h+d),v=n/(f.depth||1);i.eachBefore((function(t){t.x=(t.x+d)*p,t.y=t.depth*v}))}return i}function o(e){var n=e.children,r=e.parent.children,i=e.i?r[e.i-1]:null;if(n){!function(t){for(var e,n=0,r=0,i=t.children,o=i.length;--o>=0;)(e=i[o]).z+=n,e.m+=n,n+=e.s+(r+=e.c)}(e);var o=(n[0].z+n[n.length-1].z)/2;i?(e.z=i.z+t(e._,i._),e.m=e.z-o):e.z=o}else i&&(e.z=i.z+t(e._,i._));e.parent.A=function(e,n,r){if(n){for(var i,o=e,a=e,c=n,l=o.parent.children[0],u=o.m,s=a.m,f=c.m,h=l.m;c=uJt(c),o=lJt(o),c&&o;)l=lJt(l),(a=uJt(a)).a=e,(i=c.z+f-o.z-u+t(c._,o._))>0&&(sJt(fJt(c,e,r),e,i),u+=i,s+=i),f+=c.m,u+=o.m,h+=l.m,s+=a.m;c&&!uJt(a)&&(a.t=c,a.m+=f-s),o&&!lJt(l)&&(l.t=o,l.m+=u-h,r=e)}return r}(e,i,e.parent.A||r[0])}function a(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function c(t){t.x*=e,t.y=t.depth*n}return i.separation=function(e){return arguments.length?(t=e,i):t},i.size=function(t){return arguments.length?(r=!1,e=+t[0],n=+t[1],i):r?null:[e,n]},i.nodeSize=function(t){return arguments.length?(r=!0,e=+t[0],n=+t[1],i):r?[e,n]:null},i}function pJt(t,e,n,r,i){for(var o,a=t.children,c=-1,l=a.length,u=t.value&&(i-n)/t.value;++ch&&(h=c),g=s*s*v,(d=Math.max(h/g,g/f))>p){s-=c;break}p=d}m.push(a={value:s,dice:l1?e:1)},n}(vJt);function yJt(){var t=mJt,e=!1,n=1,r=1,i=[0],o=tYt,a=tYt,c=tYt,l=tYt,u=tYt;function s(t){return t.x0=t.y0=0,t.x1=n,t.y1=r,t.eachBefore(f),i=[0],e&&t.eachBefore(XKt),t}function f(e){var n=i[e.depth],r=e.x0+n,s=e.y0+n,f=e.x1-n,h=e.y1-n;f=n-1){var s=c[e];return s.x0=i,s.y0=o,s.x1=a,void(s.y1=l)}var f=u[e],h=r/2+f,d=e+1,p=n-1;for(;d>>1;u[v]l-o){var y=r?(i*m+a*g)/r:a;t(e,d,g,i,o,y,l),t(d,n,m,y,o,a,l)}else{var b=r?(o*m+l*g)/r:l;t(e,d,g,i,o,a,b),t(d,n,m,i,b,a,l)}}(0,l,t.value,e,n,r,i)}function xJt(t,e,n,r,i){(1&t.depth?pJt:qKt)(t,e,n,r,i)}var wJt=function t(e){function n(t,n,r,i,o){if((a=t._squarify)&&a.ratio===e)for(var a,c,l,u,s,f=-1,h=a.length,d=t.value;++f1?e:1)},n}(vJt),SJt={field:"value",tile:"treemapSquarify",size:[1,1],round:!1,ignoreParentValue:!0,padding:0,paddingInner:0,paddingOuter:0,paddingTop:0,paddingRight:0,paddingBottom:0,paddingLeft:0,as:["x","y"],sort:function(t,e){return e.value-t.value},ratio:.5*(1+Math.sqrt(5))};function kJt(t,e){var n,r=(e=(0,tOt.f0)({},SJt,e)).as;if(!(0,tOt.kJ)(r)||2!==r.length)throw new TypeError('Invalid as: it must be an array with 2 strings (e.g. [ "x", "y" ])!');try{n=CYt(e)}catch(F2t){console.warn(F2t)}var i,o,a=(i=e.tile,o=e.ratio,"treemapSquarify"===i?T[i].ratio(o):T[i]),c=function(t){return yJt().tile(a).size(e.size).round(e.round).padding(e.padding).paddingInner(e.paddingInner).paddingOuter(e.paddingOuter).paddingTop(e.paddingTop).paddingRight(e.paddingRight).paddingBottom(e.paddingBottom).paddingLeft(e.paddingLeft)(pYt(t).sum((function(t){return e.ignoreParentValue&&t.children?0:t[n]})).sort(e.sort))}(t),l=r[0],u=r[1];return c.each((function(t){t[l]=[t.x0,t.x1,t.x1,t.x0],t[u]=[t.y1,t.y1,t.y0,t.y0],["x0","x1","y0","y1"].forEach((function(e){-1===r.indexOf(e)&&delete t[e]}))})),OYt(c)}function CJt(t){var e=t.data,n=t.colorField,r=t.rawFields,i=t.hierarchyConfig,o=void 0===i?{}:i,a=o.activeDepth,c={partition:KKt,treemap:kJt},l=t.seriesField,u=t.type||"partition",s=c[u](e,(0,QCt.pi)((0,QCt.pi)({field:l||"value"},(0,tOt.CE)(o,["activeDepth"])),{type:"hierarchy.".concat(u),as:["x","y"]})),f=[];return s.forEach((function(t){var e,i,c,u,s,h;if(0===t.depth)return null;if(a>0&&t.depth>a)return null;for(var d=t.data.name,p=(0,QCt.pi)({},t);p.depth>1;)d="".concat(null===(i=p.parent.data)||void 0===i?void 0:i.name," / ").concat(d),p=p.parent;var v=(0,QCt.pi)((0,QCt.pi)((0,QCt.pi)({},SUt(t.data,(0,QCt.ev)((0,QCt.ev)([],r||[],!0),[o.field],!1))),((e={})[WKt]=d,e[UKt]=p.data.name,e)),t);l&&(v[l]=t.data[l]||(null===(u=null===(c=t.parent)||void 0===c?void 0:c.data)||void 0===u?void 0:u[l])),n&&(v[n]=t.data[n]||(null===(h=null===(s=t.parent)||void 0===s?void 0:s.data)||void 0===h?void 0:h[n])),v.ext=o,v[Rqt]={hierarchyConfig:o,colorField:n,rawFields:r},f.push(v)})),f}function OJt(t){var e,n=t.chart,r=t.options,i=r.color,o=r.colorField,a=void 0===o?UKt:o,c=r.sunburstStyle,l=r.rawFields,u=void 0===l?[]:l,s=r.shape,f=CJt(r);return n.data(f),c&&(e=function(t){return TUt({},{fillOpacity:Math.pow(.85,t.depth)},(0,tOt.mf)(c)?c(t):c)}),BHt(TUt({},t,{options:{xField:"x",yField:"y",seriesField:a,rawFields:(0,tOt.jj)((0,QCt.ev)((0,QCt.ev)([],VKt,!0),u,!0)),polygon:{color:i,style:e,shape:s}}})),t}function EJt(t){return t.chart.axis(!1),t}function MJt(t){var e=t.chart,n=t.options.label,r=jUt(e,"polygon");if(n){var i=n.fields,o=void 0===i?["name"]:i,a=n.callback,c=(0,QCt._T)(n,["fields","callback"]);r.label({fields:o,callback:a,cfg:LUt(c)})}else r.label(!1);return t}function AJt(t){var e=t.chart,n=t.options,r=n.innerRadius,i=n.radius,o=n.reflect,a=e.coordinate({type:"polar",cfg:{innerRadius:r,radius:i}});return o&&a.reflect(o),t}function PJt(t){var e,n=t.options,r=n.hierarchyConfig,i=n.meta;return FUt(kHt({},((e={})[HKt]=(0,tOt.U2)(i,(0,tOt.U2)(r,["field"],"value")),e)))(t)}function _Jt(t){var e=t.chart,n=t.options.tooltip;if(!1===n)e.tooltip(!1);else{var r=n;(0,tOt.U2)(n,"fields")||(r=TUt({},{customItems:function(t){return t.map((function(t){var n=(0,tOt.U2)(e.getOptions(),"scales"),r=(0,tOt.U2)(n,[WKt,"formatter"],(function(t){return t})),i=(0,tOt.U2)(n,[HKt,"formatter"],(function(t){return t}));return(0,QCt.pi)((0,QCt.pi)({},t),{name:r(t.data[WKt]),value:i(t.data.value)})}))}},r)),e.tooltip(r)}return t}function DJt(t){var e=t.drilldown,n=t.interactions,r=void 0===n?[]:n;return(null==e?void 0:e.enabled)?TUt({},t,{interactions:(0,QCt.ev)((0,QCt.ev)([],r,!0),[{type:"drill-down",cfg:{drillDownConfig:e,transformData:CJt}}],!1)}):t}function TJt(t){var e=t.chart,n=t.options,r=n.drilldown;return mHt({chart:e,options:DJt(n)}),(null==r?void 0:r.enabled)&&(e.appendPadding=zUt(e.appendPadding,(0,tOt.U2)(r,["breadCrumb","position"]))),t}function ZJt(t){return FUt(bHt,pHt("sunburstStyle"),OJt,EJt,PJt,vHt,AJt,_Jt,MJt,TJt,yHt,CHt())(t)}!function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="sunburst",e}(0,QCt.ZT)(e,t),e.getDefaultOptions=function(){return GKt},e.prototype.getDefaultOptions=function(){return e.getDefaultOptions()},e.prototype.getSchemaAdaptor=function(){return ZJt},e.SUNBURST_ANCESTOR_FIELD=UKt,e.SUNBURST_PATH_FIELD=WKt,e.NODE_ANCESTORS_FIELD=SYt}(VHt);function FJt(t,e){if((0,tOt.kJ)(t))return t.find((function(t){return t.type===e}))}function jJt(t,e){var n=FJt(t,e);return n&&!1!==n.enable}function IJt(t){var e=t.interactions,n=t.drilldown;return(0,tOt.U2)(n,"enabled")||jJt(e,"treemap-drill-down")}function RJt(t){var e=t.data,n=t.colorField,r=t.enableDrillDown,i=t.hierarchyConfig,o=kJt(e,(0,QCt.pi)((0,QCt.pi)({},i),{type:"hierarchy.treemap",field:"value",as:["x","y"]})),a=[];return o.forEach((function(t){if(0===t.depth)return null;if(r&&1!==t.depth)return null;if(!r&&t.children)return null;var o=t.ancestors().map((function(t){return{data:t.data,height:t.height,value:t.value}})),c=r&&(0,tOt.kJ)(e.path)?o.concat(e.path.slice(1)):o,l=Object.assign({},t.data,(0,QCt.pi)({x:t.x,y:t.y,depth:t.depth,value:t.value,path:c},t));if(!t.data[n]&&t.parent){var u=t.ancestors().find((function(t){return t.data[n]}));l[n]=null==u?void 0:u.data[n]}else l[n]=t.data[n];l[Rqt]={hierarchyConfig:i,colorField:n,enableDrillDown:r},a.push(l)})),a}function LJt(t){var e=t.options.colorField;return TUt({options:{rawFields:["value"],tooltip:{fields:["name","value",e,"path"],formatter:function(t){return{name:t.name,value:t.value}}}}},t)}function NJt(t){var e=t.chart,n=t.options,r=n.color,i=n.colorField,o=n.rectStyle,a=n.hierarchyConfig,c=n.rawFields,l=RJt({data:n.data,colorField:n.colorField,enableDrillDown:IJt(n),hierarchyConfig:a});return e.data(l),BHt(TUt({},t,{options:{xField:"x",yField:"y",seriesField:i,rawFields:c,polygon:{color:r,style:o}}})),e.coordinate().reflect("y"),t}function BJt(t){return t.chart.axis(!1),t}function zJt(t){var e=t.drilldown,n=t.interactions,r=void 0===n?[]:n;return IJt(t)?TUt({},t,{interactions:(0,QCt.ev)((0,QCt.ev)([],r,!0),[{type:"drill-down",cfg:{drillDownConfig:e,transformData:RJt}}],!1)}):t}function UJt(t){var e=t.chart,n=t.options,r=n.interactions,i=n.drilldown;mHt({chart:e,options:zJt(n)});var o=FJt(r,"view-zoom");return o&&(!1!==o.enable?e.getCanvas().on("mousewheel",(function(t){t.preventDefault()})):e.getCanvas().off("mousewheel")),IJt(n)&&(e.appendPadding=zUt(e.appendPadding,(0,tOt.U2)(i,["breadCrumb","position"]))),t}function HJt(t){return FUt(LJt,bHt,pHt("rectStyle"),NJt,BJt,vHt,gHt,UJt,yHt,CHt())(t)}var WJt={colorField:"name",rectStyle:{lineWidth:1,stroke:"#fff"},hierarchyConfig:{tile:"treemapSquarify"},label:{fields:["name"],layout:{type:"limit-in-shape"}},tooltip:{showMarkers:!1,showTitle:!1},drilldown:{enabled:!1,breadCrumb:{position:"bottom-left",rootText:"初始",dividerText:"/",textStyle:{fontSize:12,fill:"rgba(0, 0, 0, 0.65)",cursor:"pointer"},activeTextStyle:{fill:"#87B5FF"}}}},VJt=(function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="treemap",e}(0,QCt.ZT)(e,t),e.getDefaultOptions=function(){return WJt},e.prototype.changeData=function(t){var e=this.options,n=e.colorField,r=e.interactions,i=e.hierarchyConfig;this.updateOption({data:t});var o=RJt({data:t,colorField:n,enableDrillDown:jJt(r,"treemap-drill-down"),hierarchyConfig:i});this.chart.changeData(o),function(t){var e=t.interactions["drill-down"];if(e){var n=e.context.actions.find((function(t){return"drill-down-action"===t.name}));n.reset()}}(this.chart)},e.prototype.getDefaultOptions=function(){return e.getDefaultOptions()},e.prototype.getSchemaAdaptor=function(){return HJt}}(VHt),"id"),GJt="path",XJt={appendPadding:[10,0,20,0],blendMode:"multiply",tooltip:{showTitle:!1,showMarkers:!1,fields:["id","size"],formatter:function(t){return{name:t.id,value:t.size}}},legend:{position:"top-left"},label:{style:{textAlign:"center",fill:"#fff"}},interactions:[{type:"legend-filter",enable:!1}],state:{active:{style:{stroke:"#000"}},selected:{style:{stroke:"#000",lineWidth:2}},inactive:{style:{fillOpacity:.3,strokeOpacity:.3}}},defaultInteractions:["tooltip","venn-legend-active"]};function qJt(t){t&&t.geometries[0].elements.forEach((function(t){t.shape.toFront()}))}var YJt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.syncElementsPos=function(){qJt(this.context.view)},e.prototype.active=function(){t.prototype.active.call(this),this.syncElementsPos()},e.prototype.toggle=function(){t.prototype.toggle.call(this),this.syncElementsPos()},e.prototype.reset=function(){t.prototype.reset.call(this),this.syncElementsPos()},e}(WDt("element-active")),$Jt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.syncElementsPos=function(){qJt(this.context.view)},e.prototype.highlight=function(){t.prototype.highlight.call(this),this.syncElementsPos()},e.prototype.toggle=function(){t.prototype.toggle.call(this),this.syncElementsPos()},e.prototype.clear=function(){t.prototype.clear.call(this),this.syncElementsPos()},e.prototype.reset=function(){t.prototype.reset.call(this),this.syncElementsPos()},e}(WDt("element-highlight")),KJt=WDt("element-selected"),JJt=WDt("element-single-selected"),QJt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.syncElementsPos=function(){qJt(this.context.view)},e.prototype.selected=function(){t.prototype.selected.call(this),this.syncElementsPos()},e.prototype.toggle=function(){t.prototype.toggle.call(this),this.syncElementsPos()},e.prototype.reset=function(){t.prototype.reset.call(this),this.syncElementsPos()},e}(KJt),tQt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.syncElementsPos=function(){qJt(this.context.view)},e.prototype.selected=function(){t.prototype.selected.call(this),this.syncElementsPos()},e.prototype.toggle=function(){t.prototype.toggle.call(this),this.syncElementsPos()},e.prototype.reset=function(){t.prototype.reset.call(this),this.syncElementsPos()},e}(JJt);VDt("venn-element-active",YJt),VDt("venn-element-highlight",$Jt),VDt("venn-element-selected",QJt),VDt("venn-element-single-selected",tQt),zTt("venn-element-active",{start:[{trigger:"element:mouseenter",action:"venn-element-active:active"}],end:[{trigger:"element:mouseleave",action:"venn-element-active:reset"}]}),zTt("venn-element-highlight",{start:[{trigger:"element:mouseenter",action:"venn-element-highlight:highlight"}],end:[{trigger:"element:mouseleave",action:"venn-element-highlight:reset"}]}),zTt("venn-element-selected",{start:[{trigger:"element:click",action:"venn-element-selected:toggle"}],rollback:[{trigger:"dblclick",action:["venn-element-selected:reset"]}]}),zTt("venn-element-single-selected",{start:[{trigger:"element:click",action:"venn-element-single-selected:toggle"}],rollback:[{trigger:"dblclick",action:["venn-element-single-selected:reset"]}]}),zTt("venn-legend-active",{start:[{trigger:"legend-item:mouseenter",action:["list-active:active","venn-element-active:active"]}],end:[{trigger:"legend-item:mouseleave",action:["list-active:reset","venn-element-active:reset"]}]}),zTt("venn-legend-highlight",{start:[{trigger:"legend-item:mouseenter",action:["legend-item-highlight:highlight","venn-element-highlight:highlight"]}],end:[{trigger:"legend-item:mouseleave",action:["legend-item-highlight:reset","venn-element-highlight:reset"]}]});var eQt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getLabelPoint=function(t,e,n){var r=t.data,i=r.x,o=r.y,a=t.customLabelInfo,c=a.offsetX,l=a.offsetY;return{content:t.content[n],x:i+c,y:o+l}},e}(gFt);GZt("venn",eQt);var nQt=Array.isArray,rQt="\t\n\v\f\r   ᠎              \u2028\u2029",iQt=new RegExp("([a-z])["+rQt+",]*((-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?["+rQt+"]*,?["+rQt+"]*)+)","ig"),oQt=new RegExp("(-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?)["+rQt+"]*,?["+rQt+"]*","ig");Math.PI;JZt("schema","venn",{draw:function(t,e){var n=function(t){if(!t)return null;if(nQt(t))return t;var e={a:7,c:6,o:2,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,u:3,z:0},n=[];return String(t).replace(iQt,(function(t,r,i){var o=[],a=r.toLowerCase();if(i.replace(oQt,(function(t,e){e&&o.push(+e)})),"m"===a&&o.length>2&&(n.push([r].concat(o.splice(0,2))),a="l",r="m"===r?"l":"L"),"o"===a&&1===o.length&&n.push([r,o[0]]),"r"===a)n.push([r].concat(o));else for(;o.length>=e[a]&&(n.push([r].concat(o.splice(0,e[a]))),e[a]););return""})),n}(t.data[GJt]),r=function(t){return TUt({},t.defaultStyle,{fill:t.color},t.style)}(t),i=e.addGroup({name:"venn-shape"});i.addShape("path",{attrs:(0,QCt.pi)((0,QCt.pi)({},r),{path:n}),name:"venn-path"});var o=t.customInfo,a=o.offsetX,c=o.offsetY,l=IFt.transform(null,[["t",a,c]]);return i.setMatrix(l),i},getMarker:function(t){var e=t.color;return{symbol:"circle",style:{lineWidth:0,stroke:e,fill:e,r:4}}}});var aQt={normal:function(t){return t},multiply:function(t,e){return t*e/255},screen:function(t,e){return 255*(1-(1-t/255)*(1-e/255))},overlay:function(t,e){return e<128?2*t*e/255:255*(1-2*(1-t/255)*(1-e/255))},darken:function(t,e){return t>e?e:t},lighten:function(t,e){return t>e?t:e},dodge:function(t,e){return 255===t||(t=e/255*255/(1-t/255))>255?255:t},burn:function(t,e){return 255===e?255:0===t?0:255*(1-Math.min(1,(1-e/255)/(t/255)))}};function cQt(t,e,n){void 0===n&&(n="normal");var r,i=(r=function(t){if(!aQt[t])throw new Error("unknown blend mode "+t);return aQt[t]}(n),function(t,e){var n=[];return n[0]=r(t[0],e[0]),n[1]=r(t[1],e[1]),n[2]=r(t[2],e[2]),n})(lQt(t),lQt(e)),o=lQt(t),a=o[0],c=o[1],l=o[2],u=o[3],s=lQt(e),f=s[0],h=s[1],d=s[2],p=s[3],v=Number((u+p*(1-u)).toFixed(2)),g=Math.round((u*(1-p)*(a/255)+u*p*(i[0]/255)+(1-u)*p*(f/255))/v*255),m=Math.round((u*(1-p)*(c/255)+u*p*(i[1]/255)+(1-u)*p*(h/255))/v*255),y=Math.round((u*(1-p)*(l/255)+u*p*(i[2]/255)+(1-u)*p*(d/255))/v*255);return"rgba(".concat(g,", ").concat(m,", ").concat(y,", ").concat(v,")")}function lQt(t){var e,n=t.replace("/s+/g","");return"string"!=typeof n||n.startsWith("rgba")||n.startsWith("#")?(n.startsWith("rgba")&&(e=n.replace("rgba(","").replace(")","").split(",")),n.startsWith("#")&&(e=tEt.rgb2arr(n).concat([1])),e.map((function(t,e){return 3===e?Number(t):0|t}))):tEt.rgb2arr(tEt.toRGB(n)).concat([1])}var uQt=n(13125),sQt=1e-10;function fQt(t,e){var n,r=function(t){for(var e=[],n=0;ne[n].radius+sQt)return!1;return!0}(e,t)})),o=0,a=0,c=[];if(i.length>1){var l=gQt(i);for(n=0;n-1){var v=t[f.parentIndex[p]],g=Math.atan2(f.x-v.x,f.y-v.y),m=Math.atan2(s.x-v.x,s.y-v.y),y=m-g;y<0&&(y+=2*Math.PI);var b=m-y/2,x=dQt(h,{x:v.x+v.radius*Math.sin(b),y:v.y+v.radius*Math.cos(b)});x>2*v.radius&&(x=2*v.radius),(null===d||d.width>x)&&(d={circle:v,width:x,p1:f,p2:s})}null!==d&&(c.push(d),o+=hQt(d.circle.radius,d.width),s=f)}}else{var w=t[0];for(n=1;nMath.abs(w.radius-t[n].radius)){S=!0;break}S?o=a=0:(o=w.radius*w.radius*Math.PI,c.push({circle:w,p1:{x:w.x,y:w.y+w.radius},p2:{x:w.x-sQt,y:w.y+w.radius},width:2*w.radius}))}return a/=2,e&&(e.area=o+a,e.arcArea=o,e.polygonArea=a,e.arcs=c,e.innerPoints=i,e.intersectionPoints=r),o+a}function hQt(t,e){return t*t*Math.acos(1-e/t)-(t-e)*Math.sqrt(e*(2*t-e))}function dQt(t,e){return Math.sqrt((t.x-e.x)*(t.x-e.x)+(t.y-e.y)*(t.y-e.y))}function pQt(t,e,n){if(n>=t+e)return 0;if(n<=Math.abs(t-e))return Math.PI*Math.min(t,e)*Math.min(t,e);var r=e-(n*n-t*t+e*e)/(2*n);return hQt(t,t-(n*n-e*e+t*t)/(2*n))+hQt(e,r)}function vQt(t,e){var n=dQt(t,e),r=t.radius,i=e.radius;if(n>=r+i||n<=Math.abs(r-i))return[];var o=(r*r-i*i+n*n)/(2*n),a=Math.sqrt(r*r-o*o),c=t.x+o*(e.x-t.x)/n,l=t.y+o*(e.y-t.y)/n,u=-(e.y-t.y)*(a/n),s=-(e.x-t.x)*(a/n);return[{x:c+u,y:l-s},{x:c-u,y:l+s}]}function gQt(t){for(var e={x:0,y:0},n=0;n=a&&(o=r[n],a=c)}var l=(0,uQt.nelderMead)((function(n){return-1*mQt({x:n[0],y:n[1]},t,e)}),[o.x,o.y],{maxIterations:500,minErrorDelta:1e-10}).x,u={x:l[0],y:l[1]},s=!0;for(n=0;nt[n].radius){s=!1;break}for(n=0;n0&&console.log("WARNING: area "+o+" not represented on screen")}return n}var xQt=1e-10;function wQt(t,e,n){return Math.min(t,e)*Math.min(t,e)*Math.PI<=n+xQt?Math.abs(t-e):(0,uQt.bisect)((function(r){return pQt(t,e,r)-n}),0,t+e)}function SQt(t,e){var n=function(t,e){for(var n,r=e&&e.lossFunction?e.lossFunction:kQt,i={},o={},a=0;a=Math.min(i[s].size,i[f].size)&&(u=0),o[s].push({set:f,size:l.size,weight:u}),o[f].push({set:s,size:l.size,weight:u})}var h=[];for(n in o)if(o.hasOwnProperty(n)){var d=0;for(a=0;a=8){var i=function(t,e){e=e||{};var n,r=e.restarts||10,i=[],o={};for(n=0;n=Math.min(e[o].size,e[a].size)?l=1:t.size<=1e-10&&(l=-1),i[o][a]=i[a][o]=l})),{distances:r,constraints:i}}(t,i,o),l=c.distances,u=c.constraints,s=(0,uQt.norm2)(l.map(uQt.norm2))/l.length;l=l.map((function(t){return t.map((function(t){return t/s}))}));var f,h,d=function(t,e){return function(t,e,n,r){var i,o=0;for(i=0;i0&&p<=f||h<0&&p>=f||(o+=2*v*v,e[2*i]+=4*v*(a-u),e[2*i+1]+=4*v*(c-s),e[2*l]+=4*v*(u-a),e[2*l+1]+=4*v*(s-c))}return o}(t,e,l,u)};for(n=0;ne?1:-1})),e=0;ec;i.push("\nA",c,c,0,l?1:0,1,a.p1.x,a.p1.y)}return i.join(" ")}(r);/[zZ]$/.test(i)||(i+=" Z"),t[GJt]=i;var o=s[n]||{x:0,y:0};(0,tOt.f0)(t,o)})),c}var MQt=40;function AQt(t,e,n){var r=t.chart,i=t.options,o=i.blendMode,a=i.setsField,c=r.getTheme(),l=c.colors10,u=c.colors20,s=n;(0,tOt.kJ)(s)||(s=e.filter((function(t){return 1===t[a].length})).length<=10?l:u);var f=OQt(s,e,o,a);return function(t){return f.get(t)||s[0]}}function PQt(t){var e=t.chart,n=t.options,r=n.legend,i=n.appendPadding,o=n.padding,a=BUt(i);return!1!==r&&(a=zUt(i,(0,tOt.U2)(r,"position"),MQt)),e.appendPadding=UUt([a,o]),t}function _Qt(t){var e=t.options.data;e||(wUt(mUt.WARN,!1,"warn: %s","数据不能为空"),e=[]);var n=e.filter((function(t){return 1===t.sets.length})).map((function(t){return t.sets[0]})),r=e.filter((function(t){var e=t.sets;return function(t,e){for(var n=0;n1)throw new Error("quantiles must be between 0 and 1");return 1===e?t[t.length-1]:0===e?t[0]:n%1!=0?t[Math.ceil(n)-1]:t.length%2==0?(t[n-1]+t[n])/2:t[n]}function KQt(t,e,n){var r=t[e];t[e]=t[n],t[n]=r}function JQt(t,e,n,r){for(n=n||0,r=r||t.length-1;r>n;){if(r-n>600){var i=r-n+1,o=e-n+1,a=Math.log(i),c=.5*Math.exp(2*a/3),l=.5*Math.sqrt(a*c*(i-c)/i);o-i/2<0&&(l*=-1),JQt(t,e,Math.max(n,Math.floor(e-o*c/i+l)),Math.min(r,Math.floor(e+(i-o)*c/i+l)))}var u=t[e],s=n,f=r;for(KQt(t,n,e),t[r]>u&&KQt(t,n,r);su;)f--}t[n]===u?KQt(t,n,f):KQt(t,++f,r),f<=e&&(n=f+1),e<=f&&(r=f-1)}}function QQt(t,e){var n=t.slice();if(Array.isArray(e)){!function(t,e){for(var n=[0],r=0;r0?s:f};return RHt(TUt({},t,{options:{xField:i,yField:m0t,seriesField:i,rawFields:[o,y0t,x0t,m0t],widthRatio:l,interval:{style:u,shape:d||"waterfall",color:v}}})).ext.geometry.customInfo((0,QCt.pi)((0,QCt.pi)({},p),{leaderLine:c})),t}function O0t(t){var e,n,r=t.options,i=r.xAxis,o=r.yAxis,a=r.xField,c=r.yField,l=r.meta,u=TUt({},{alias:c},(0,tOt.U2)(l,c));return FUt(kHt(((e={})[a]=i,e[c]=o,e[m0t]=o,e),TUt({},l,((n={})[m0t]=u,n[y0t]=u,n[b0t]=u,n))))(t)}function E0t(t){var e=t.chart,n=t.options,r=n.xAxis,i=n.yAxis,o=n.xField,a=n.yField;return!1===r?e.axis(o,!1):e.axis(o,r),!1===i?(e.axis(a,!1),e.axis(m0t,!1)):(e.axis(a,i),e.axis(m0t,i)),t}function M0t(t){var e=t.chart,n=t.options,r=n.legend,i=n.total,o=n.risingFill,a=n.fallingFill,c=_Ht(n.locale);if(!1===r)e.legend(!1);else{var l=[{name:c.get(["general","increase"]),value:"increase",marker:{symbol:"square",style:{r:5,fill:o}}},{name:c.get(["general","decrease"]),value:"decrease",marker:{symbol:"square",style:{r:5,fill:a}}}];i&&l.push({name:i.label||"",value:"total",marker:{symbol:"square",style:TUt({},{r:5},(0,tOt.U2)(i,"style"))}}),e.legend(TUt({},{custom:!0,position:"top",items:l},r)),e.removeInteraction("legend-filter")}return t}function A0t(t){var e=t.chart,n=t.options,r=n.label,i=n.labelMode,o=n.xField,a=jUt(e,"interval");if(r){var c=r.callback,l=(0,QCt._T)(r,["callback"]);a.label({fields:"absolute"===i?[b0t,o]:[y0t,o],callback:c,cfg:LUt(l)})}else a.label(!1);return t}function P0t(t){var e=t.chart,n=t.options,r=n.tooltip,i=n.xField,o=n.yField;if(!1!==r){e.tooltip((0,QCt.pi)({showCrosshairs:!1,showMarkers:!1,shared:!0,fields:[o]},r));var a=e.geometries[0];(null==r?void 0:r.formatter)?a.tooltip("".concat(i,"*").concat(o),r.formatter):a.tooltip(o)}else e.tooltip(!1);return t}function _0t(t){return FUt(k0t,bHt,C0t,O0t,E0t,M0t,P0t,A0t,xHt,mHt,yHt,CHt())(t)}JZt("interval","waterfall",{draw:function(t,e){var n=t.customInfo,r=t.points,i=t.nextPoints,o=e.addGroup(),a=this.parsePath(function(t){for(var e=[],n=0;n>2);t.width=(I0t<<5)/e,t.height=R0t/e;var n=t.getContext("2d",{willReadFrequently:!0});return n.fillStyle=n.strokeStyle="red",n.textAlign="center",{context:n,ratio:e}}function v(e,n,r){for(var i,o,l,u=n.x,s=n.y,f=Math.sqrt(t[0]*t[0]+t[1]*t[1]),h=a(t),d=c()<.5?1:-1,p=-d;(i=h(p+=d))&&(o=~~i[0],l=~~i[1],!(Math.min(Math.abs(o),Math.abs(l))>=f));)if(n.x=u+o,n.y=s+l,!(n.x+n.x0<0||n.y+n.y0<0||n.x+n.x1>t[0]||n.y+n.y1>t[1])&&(!r||!V0t(n,e,t[0]))&&(!r||X0t(n,r))){for(var v=n.sprite,g=n.width>>5,m=t[0]>>5,y=n.x-(g<<4),b=127&y,x=32-b,w=n.y1-n.y0,S=void 0,k=(n.y+n.y0)*m+(y>>5),C=0;C>>b:0);k+=m}return delete n.sprite,!0}return!1}return d.start=function(){var a=t[0],g=t[1],m=p(h()),y=d.board?d.board:Y0t((t[0]>>5)*t[1]),b=l.length,x=[],w=l.map((function(t,a,c){return t.text=s.call(this,t,a,c),t.font=e.call(this,t,a,c),t.style=f.call(this,t,a,c),t.weight=r.call(this,t,a,c),t.rotate=i.call(this,t,a,c),t.size=~~n.call(this,t,a,c),t.padding=o.call(this,t,a,c),t})).sort((function(t,e){return e.size-t.size})),S=-1,k=d.board?[{x:0,y:0},{x:a,y:g}]:null;function C(){for(var e=Date.now();Date.now()-e>1,n.y=g*(c()+.5)>>1,W0t(m,n,w,S),n.hasText&&v(y,n,k)&&(x.push(n),k?d.hasImage||G0t(k,n):k=[{x:n.x+n.x0,y:n.y+n.y0},{x:n.x+n.x1,y:n.y+n.y1}],n.x-=t[0]>>1,n.y-=t[1]>>1)}d._tags=x,d._bounds=k}return C(),d},d.createMask=function(e){var n=document.createElement("canvas"),r=t[0],i=t[1];if(r&&i){var o=r>>5,a=Y0t((r>>5)*i);n.width=r,n.height=i;var c=n.getContext("2d");c.drawImage(e,0,0,e.width,e.height,0,0,r,i);for(var l=c.getImageData(0,0,r,i).data,u=0;u>5),h=u*r+s<<2,p=l[h]>=250&&l[h+1]>=250&&l[h+2]>=250?1<<31-s%32:0;a[f]|=p}d.board=a,d.hasImage=!0}},d.timeInterval=function(t){u=null==t?1/0:t},d.words=function(t){l=t},d.size=function(e){t=[+e[0],+e[1]]},d.font=function(t){e=K0t(t)},d.fontWeight=function(t){r=K0t(t)},d.rotate=function(t){i=K0t(t)},d.spiral=function(t){a=J0t[t]||t},d.fontSize=function(t){n=K0t(t)},d.padding=function(t){o=K0t(t)},d.random=function(t){c=K0t(t)},d}();["font","fontSize","fontWeight","padding","rotate","size","spiral","timeInterval","random"].forEach((function(t){(0,tOt.UM)(e[t])||n[t](e[t])})),n.words(t),e.imageMask&&n.createMask(e.imageMask);var r=n.start(),i=r._tags;i.forEach((function(t){t.x+=e.size[0]/2,t.y+=e.size[1]/2}));var o=e.size,a=o[0],c=o[1];return i.push({text:"",value:0,x:0,y:0,opacity:0}),i.push({text:"",value:0,x:a,y:c,opacity:0}),i}(t,e=(0,tOt.f0)({},Z0t,e))}var j0t=Math.PI/180,I0t=64,R0t=2048;function L0t(t){return t.text}function N0t(){return"serif"}function B0t(){return"normal"}function z0t(t){return t.value}function U0t(){return 90*~~(2*Math.random())}function H0t(){return 1}function W0t(t,e,n,r){if(!e.sprite){var i=t.context,o=t.ratio;i.clearRect(0,0,(I0t<<5)/o,R0t/o);var a=0,c=0,l=0,u=n.length;for(--r;++r>5<<5,f=~~Math.max(Math.abs(v+g),Math.abs(v-g))}else s=s+31>>5<<5;if(f>l&&(l=f),a+s>=I0t<<5&&(a=0,c+=l,l=0),c+f>=R0t)break;i.translate((a+(s>>1))/o,(c+(f>>1))/o),e.rotate&&i.rotate(e.rotate*j0t),i.fillText(e.text,0,0),e.padding&&(i.lineWidth=2*e.padding,i.strokeText(e.text,0,0)),i.restore(),e.width=s,e.height=f,e.xoff=a,e.yoff=c,e.x1=s>>1,e.y1=f>>1,e.x0=-e.x1,e.y0=-e.y1,e.hasText=!0,a+=s}for(var y=i.getImageData(0,0,(I0t<<5)/o,R0t/o).data,b=[];--r>=0;)if((e=n[r]).hasText){for(var x=(s=e.width)>>5,w=(f=e.y1-e.y0,0);w>5),E=y[(c+C)*(I0t<<5)+(a+w)<<2]?1<<31-w%32:0;b[O]|=E,S|=E}S?k=C:(e.y0++,f--,C--,c++)}e.y1=e.y0+k,e.sprite=b.slice(0,(e.y1-e.y0)*x)}}}function V0t(t,e,n){n>>=5;for(var r,i=t.sprite,o=t.width>>5,a=t.x-(o<<4),c=127&a,l=32-c,u=t.y1-t.y0,s=(t.y+t.y0)*n+(a>>5),f=0;f>>c:0))&e[s+h])return!0;s+=n}return!1}function G0t(t,e){var n=t[0],r=t[1];e.x+e.x0r.x&&(r.x=e.x+e.x1),e.y+e.y1>r.y&&(r.y=e.y+e.y1)}function X0t(t,e){return t.x+t.x1>e[0].x&&t.x+t.x0e[0].y&&t.y+t.y0=18&&(s1t=h1t.createRoot)}catch(F2t){}function v1t(t){var e=h1t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;e&&"object"==typeof e&&(e.usingClientEntryPoint=t)}var g1t="__rc_react_root__";function m1t(t,e){s1t?function(t,e){v1t(!0);var n=e[g1t]||s1t(e);v1t(!1),n.render(t),e[g1t]=n}(t,e):function(t,e){p1t(t,e)}(t,e)}var y1t=new Map,b1t=function(t,e,n){var r=document.createElement("div");return"tooltip"===e&&(r.setAttribute("data-uuid",n),y1t.has(n)?r=y1t.get(n):y1t.set(n,r),r.className="g2-tooltip"),m1t(t,r),r},x1t=function(t,e){return{}.toString.call(t)==="[object ".concat(e,"]")},w1t=function t(e){return e&&"object"==typeof e?(Array.isArray(e)?n=e.map((function(e){return t(e)})):(n={},Object.keys(e).forEach((function(r){return n[r]=t(e[r])}))),n):e;var n},S1t=function(t,e){for(var n=t,r=0;r0&&Z.createElement(Z.Fragment,null,Z.createElement("div",{className:"my-2"},"The visualization has been evaluated across multiple dimensions. Select a dimension to view rationale for the score"," "),Z.createElement("div",{className:" w-full grid md:grid-cols-2 sm:grid-cols-1 gap-3 "},Z.createElement("div",{className:" w-full"},Z.createElement(B1t,{data:p})),Z.createElement("div",{className:" mt-2 w-full"},Z.createElement("div",{className:"mt-2"}," ",w),Z.createElement("div",{className:"border mt-2 rounded p-2"},Z.createElement("div",{className:"my-2 capitalize"},p[y].dimension," "),Z.createElement("div",{className:"flex"},Z.createElement("div",{style:{fontSize:"50px",color:(0,N.i5)(p[y].score,1,10)},className:"text-accent mr-2"},(p[y].score/2).toFixed(1),Z.createElement("div",{className:"text-sm text-center -mt-4 text-primary"}," ","out of 5"," ")),Z.createElement("div",null," ",p[y].rationale))))))),p&&p.length>0&&Z.createElement("div",{className:"p-2 text-right"}," ",Z.createElement("div",{onClick:function(){return function(){h(null),s(!0),setTimeout((function(){(0,N.kI)(x)}),600);var t={code:n.code,feedback:p,textgen_config:i.textgen_config,library:i.library,summary:i.summary,goal:i.goal},e={method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)};(0,N.ZV)(g+"/visualize/repair",e,(function(t){t&&t.status?(console.log("Repair data",t),r(t.charts[0]),kc.success(t.message),setTimeout((function(){(0,N.kI)(x)}),400)):(kc.error(t.message),h(t)),s(!1)}),(function(t){kc.error(t.message),s(!1),h(t)}))}()},role:"button",className:"px-5 bg-accent duration-300 hover:brightness-110 text-white inline-block rounded p-2 "+(u?"opacity-50 pointer-events-none":"")+" "},!u&&Z.createElement(Z.Fragment,null," ",Z.createElement(XCt.Z,{className:"w-5 h-5 mr-1 inline-block"})," ","Auto Repair Chart."),u&&Z.createElement(Z.Fragment,null,Z.createElement(ks.rH,{className:"text-white inline-block"}),"Repairing Chart .."," ")," ")))},U1t=function(t){var e=t.vizData,n=(t.setVizData,t.vizConfig),r=Z.useState(!1),i=r[0],o=r[1],a=Z.useState(null),c=(a[0],a[1]),l=Z.useState([]),u=l[0],s=l[1],f=Z.useRef(null);Z.useEffect((function(){s([])}),[e]);var h=null==u?void 0:u.map((function(t,e){var n="accessibility"===t.section;return Z.createElement("div",{className:"mb-4",key:"recommendationsrow"+e},Z.createElement("div",{className:"font-semibold text-lg"}," ",t.section),Z.createElement("div",{className:"flex gap-4"},Z.createElement("div",{className:(n?"":" w-1/2")+" "},Z.createElement("img",{src:"data:image/png;base64,"+t.raster})),!n&&Z.createElement("div",{className:"w-1/2"},Z.createElement(Cs.d,{code:""+t.code,language:"python",wrapLines:!0}))))}));return Z.createElement("div",{className:"text-primary"},Z.createElement("div",{onClick:function(){return function(){c(null),o(!0),s([]),setTimeout((function(){(0,N.kI)(f)}),600);var t=Object.assign({},n.textgen_config);t.n=3,t.temperature=.6;var r={method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({code:e.code,library:n.library,summary:n.summary,textgen_config:t})};(0,N.ZV)("/api/visualize/recommend",r,(function(t){t&&t.status?(console.log("Recomendation data",t),s(t.charts),kc.success(t.message),setTimeout((function(){(0,N.kI)(f)}),400)):(kc.error(t.message),c(t)),o(!1)}),(function(t){kc.error(t.message),o(!1),c(t)}))}()},role:"button",className:"px-5 bg-accent duration-300 hover:brightness-110 text-white inline-block rounded p-2 "+(i?"opacity-50 pointer-events-none":"")+" "},!i&&Z.createElement(nv.Z,{className:"w-5 h-5 mr-1 inline-block"}),i&&Z.createElement(ks.rH,{className:"text-white inline-block"})," Generate Recommendations"),i&&Z.createElement("div",{className:"mt-4"},Z.createElement(ks.rH,{className:"text-accent",subtitle:"loading recommendations .."}),Z.createElement(Gc,{active:!0,className:"mt-4",paragraph:{rows:12}})),Z.createElement("div",{ref:f,className:"mt-4"},h))},H1t=function(t){var e,n=t.vizspec,r=t.config,i=r.goal,o="/api",a=Z.useState(!1),c=a[0],l=a[1],u=Z.useState(null),s=u[0],f=u[1],h=Z.useState([]),d=h[0],p=h[1],v=Z.useRef(null),g=Z.useRef(null),m=Z.useState(n),y=m[0],b=m[1],x=y.spec,w=y.raster;x&&(delete x.config,x.width=300,x.height=320,x.actions=!1,x.data.url.includes("/api")||(x.data.url=o+x.data.url),null!==(e=x.title)&&void 0!==e&&e.subtitle&&delete x.title.subtitle);var S=d.map((function(t,e){return Z.createElement("div",{className:"",key:"commandsrow"+e},Z.createElement("span",{className:"text-xs"},t))})),k=[{key:"1",label:Z.createElement("div",null," ",Z.createElement(Qp,{className:"inline-block h-4 mr-2"}),"Refine"),children:Z.createElement("div",{className:"text-primary",style:{minHeight:"300px"}},Z.createElement("div",{className:"text-sm text-primary mb-2"},"Modify Chart with Natural Language commands."),Z.createElement("div",{className:"relative mt-2 bg-secondary rounded-b-none rounded p-2 "+(c?"pointer-event-none opacity-75":"")+" "},Z.createElement("input",{ref:v,onKeyDown:function(t){var e;"Enter"===t.key&&function(t){f(null),l(!0);var e=Object.assign([],d);e.push(t);var i={method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({summary:r.summary,instructions:e,code:n.code,library:r.library,textgen_config:r.textgen_config})};(0,N.ZV)(o+"/visualize/edit",i,(function(t){var n;t&&t.status?(b(t.charts[0]),kc.success(t.message),(null===(n=v.current)||void 0===n?void 0:n.value)&&(v.current.value=""),p(e)):(kc.error(t.message),f(t)),l(!1)}),(function(t){kc.error(t.message),l(!1),f(t)}))}((null===(e=v.current)||void 0===e?void 0:e.value)||"")},className:"bg-white w-full text-gray-600 p-2 rounded",placeholder:"Change x axis label to Meters per Second",type:"input"}),c&&Z.createElement("span",{className:"absolute left-4 top-4 text-accent"}," ",Z.createElement(ks.rH,{className:""})),Z.createElement("div",{className:"text-sm text-orange-400 mt-1"},null==s?void 0:s.message)),Z.createElement("div",{className:"text-xs p-2 border border-t-0 rounded border-secondary rounded-t-none"},d&&d.length>0&&Z.createElement("div",{className:"text-right"},Z.createElement("div",{role:"button",onClick:function(){p([])},className:"text-right border inline-block p-1 rounded hover:border-accent hover:text-accent duration-300"}," ",Z.createElement(ev,{className:"w-5 h-5 inline-block"})," Clear Chat History"," ")),S))},{key:"2",label:Z.createElement("div",null," ",Z.createElement(nv.Z,{className:"inline-block h-4 mr-2"}),"Explain"),children:Z.createElement(Z.Fragment,null,Z.createElement("div",{className:"text-sm text-primary mb-2"},"Use the explain visualization button below to generate an explanation for the chart."),Z.createElement(GCt,{vizData:y,vizConfig:r}))},{key:"3",label:Z.createElement("div",null," ",Z.createElement(rv.Z,{className:"inline-block h-4 mr-2"}),"Evaluate"),children:Z.createElement(Z.Fragment,null,Z.createElement("div",{className:"text-sm text-primary mb-2"},"Use the evaluate visualization button below to generate self-evaluation scores for the chart."),Z.createElement(z1t,{vizData:y,setVizData:b,vizConfig:r}))},{key:"4",label:Z.createElement("div",null," ",Z.createElement(Ps.Z,{className:"inline-block h-4 mr-2"}),"Recommend!"),children:Z.createElement(Z.Fragment,null,Z.createElement("div",{className:"text-sm text-primary mb-2"},"Generate similar charts."),Z.createElement(U1t,{vizData:y,setVizData:b,vizConfig:r}))}];return Z.createElement("div",{className:"text-primary ",ref:g},Z.createElement("div",{className:"mb-4 w-full "},Z.createElement("div",{className:"text-lg font-semibold"},null==i?void 0:i.question),Z.createElement("span",{className:"text-sm"},null==i?void 0:i.rationale)," ",(null==i?void 0:i.visualization)&&Z.createElement("div",{className:"text-sm text-accent"},null==i?void 0:i.visualization)),Z.createElement("div",{className:"md:flex gap-4 w-full"},x&&Z.createElement("div",{className:" bg-white rounded p-2 "},Z.createElement(BCt,{spec:x,actions:!1})),w&&Z.createElement(UCt,{raster:w,library:r.library,goal:r.goal}),Z.createElement("div",{className:"flex-1 md:mt-0 mt-4 gap-3 mb-4 "},Z.createElement("div",{className:" w-full"},Z.createElement("div",{className:"text-xs word-break: break-all text-primary mb-2"},Z.createElement(iv.Z,{className:"h-4 w-4 inline-block mr-1"}),"How was this visualization created? See the specifications and code below."),Z.createElement(VCt,{spec:x,code:y.code,error:y.error,status:y.status})))),Z.createElement(Im,{defaultActiveKey:"1",items:k}))},W1t=function(t){var e=t.vizspecs,n=t.vizConfig;return Z.createElement("div",{className:" mt-4 "},Z.createElement(Kp,{locale:{emptyText:Z.createElement(Qs,{description:"No experiments found"})},dataSource:e,renderItem:function(t,e){return Z.createElement(H1t,{vizspec:t,config:n})},pagination:{pageSize:1,size:"small",hideOnSinglePage:!0}}))};function V1t(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function G1t(t){for(var e=1;e0&&Z.createElement("div",{className:"mt-4 "},Z.createElement(W1t,{vizspecs:a,vizConfig:r}))),a&&0===a.length&&Z.createElement("div",{className:"mt-4 p-2 rounded border-accent border"}," ",Z.createElement(L,{className:"inline-block h-5 mr-2"}),"No visualizations generated"," ")))};function q1t(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Y1t(t){for(var e=1;e=0&&_}),[_,at]),lt=Z.useMemo((function(){return Object.keys(W||{}).map((function(t){var e=W[t],n={value:Number(t)};return e&&"object"===(0,it.Z)(e)&&!Z.isValidElement(e)&&("label"in e||"style"in e)?(n.style=e.style,n.label=e.label):n.label=e,n})).filter((function(t){var e=t.label;return e||"number"==typeof e})).sort((function(t,e){return t.value-e.value}))}),[W]),ut=function(t,e,n,r,i,o){var a=Z.useCallback((function(n){var r=isFinite(n)?n:t;return r=Math.min(e,n),Math.max(t,r)}),[t,e]),c=Z.useCallback((function(r){if(null!==n){var i=t+Math.round((a(r)-t)/n)*n,o=function(t){return(String(t).split(".")[1]||"").length},c=Math.max(o(n),o(e),o(t)),l=Number(i.toFixed(c));return t<=l&&l<=e?l:null}return null}),[n,t,e,a]),l=Z.useCallback((function(i){var o=a(i),l=r.map((function(t){return t.value}));null!==n&&l.push(c(i)),l.push(t,e);var u=l[0],s=e-t;return l.forEach((function(t){var e=Math.abs(o-t);e<=s&&(u=t,s=e)})),u}),[t,e,r,n,a,c]),u=function i(o,a,l){var u=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"unit";if("number"==typeof a){var s,f=o[l],h=f+a,d=[];r.forEach((function(t){d.push(t.value)})),d.push(t,e),d.push(c(f));var p=a>0?1:-1;"unit"===u?d.push(c(f+p*n)):d.push(c(h)),d=d.filter((function(t){return null!==t})).filter((function(t){return a<0?t<=f:t>=f})),"unit"===u&&(d=d.filter((function(t){return t!==f})));var v="unit"===u?f:h;s=d[0];var g=Math.abs(s-v);if(d.forEach((function(t){var e=Math.abs(t-v);e1){var m=(0,Y.Z)(o);return m[l]=s,i(m,a-p,l,u)}return s}return"min"===a?t:"max"===a?e:void 0},s=function(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"unit",i=t[n],o=u(t,e,n,r);return{value:o,changed:o!==i}},f=function(t){return null===o&&0===t||"number"==typeof o&&t3&&void 0!==arguments[3]?arguments[3]:"unit",a=t.map(l),c=a[n],h=u(a,e,n,r);if(a[n]=h,!1===i){var d=o||0;n>0&&a[n-1]!==c&&(a[n]=Math.max(a[n],a[n-1]+d)),n0;m-=1)for(var y=!0;f(a[m]-a[m-1])&&y;){var b=s(a,-1,m-1);a[m-1]=b.value,y=b.changed}for(var x=a.length-1;x>0;x-=1)for(var w=!0;f(a[x]-a[x-1])&&w;){var S=s(a,-1,x-1);a[x-1]=S.value,w=S.changed}for(var k=0;k=0?k+1:2;for(n=n.slice(0,r);n.length=0&&tt.current.focus(t)}Ot(null)}),[Ct]);var Et=Z.useMemo((function(){return(!D||null!==at)&&D}),[D,at]),Mt=function(t,e,n,r,i,o,a,c,l){var u=Z.useState(null),s=(0,rr.Z)(u,2),f=s[0],h=s[1],d=Z.useState(-1),p=(0,rr.Z)(d,2),v=p[0],g=p[1],m=Z.useState(n),y=(0,rr.Z)(m,2),b=y[0],x=y[1],w=Z.useState(n),S=(0,rr.Z)(w,2),k=S[0],C=S[1],O=Z.useRef(null),E=Z.useRef(null);Z.useEffect((function(){-1===v&&x(n)}),[n,v]),Z.useEffect((function(){return function(){document.removeEventListener("mousemove",O.current),document.removeEventListener("mouseup",E.current),document.removeEventListener("touchmove",O.current),document.removeEventListener("touchend",E.current)}}),[]);var M=function(t,e){b.some((function(e,n){return e!==t[n]}))&&(void 0!==e&&h(e),x(t),a(t))},A=function(t,e){if(-1===t){var n=k[0],a=k[k.length-1],c=r-n,u=i-a,s=e*(i-r);s=Math.max(s,c),s=Math.min(s,u);var f=o(n+s);s=f-n;var h=k.map((function(t){return t+s}));M(h)}else{var d=(i-r)*e,p=(0,Y.Z)(b);p[t]=k[t];var v=l(p,d,t,"dist");M(v.values,v.value)}},P=Z.useRef(A);P.current=A;var _=Z.useMemo((function(){var t=(0,Y.Z)(n).sort((function(t,e){return t-e})),e=(0,Y.Z)(b).sort((function(t,e){return t-e}));return t.every((function(t,n){return t===e[n]}))?b:n}),[n,b]);return[v,f,_,function(r,i){r.stopPropagation();var o=n[i];g(i),h(o),C(n);var a=u2t(r),l=a.pageX,u=a.pageY,s=function(n){n.preventDefault();var r,o=u2t(n),a=o.pageX,c=o.pageY,s=a-l,f=c-u,h=t.current.getBoundingClientRect(),d=h.width,p=h.height;switch(e){case"btt":r=-f/p;break;case"ttb":r=f/p;break;case"rtl":r=-s/d;break;default:r=s/d}P.current(i,r)},f=function t(e){e.preventDefault(),document.removeEventListener("mouseup",t),document.removeEventListener("mousemove",s),document.removeEventListener("touchend",t),document.removeEventListener("touchmove",s),O.current=null,E.current=null,g(-1),c()};document.addEventListener("mouseup",f),document.addEventListener("mousemove",s),document.addEventListener("touchend",f),document.addEventListener("touchmove",s),O.current=s,E.current=f}]}(et,nt,mt,rt,ot,ft,xt,(function(){null==E||E(bt(yt.current))}),ht),Pt=(0,rr.Z)(Mt,4),_t=Pt[0],Dt=Pt[1],Tt=Pt[2],Zt=Pt[3],Ft=function(t,e){Zt(t,e),null==O||O(bt(yt.current))},jt=-1!==_t;Z.useEffect((function(){if(!jt){var t=mt.lastIndexOf(Dt);tt.current.focus(t)}}),[jt]);var It=Z.useMemo((function(){return(0,Y.Z)(Tt).sort((function(t,e){return t-e}))}),[Tt]),Rt=Z.useMemo((function(){return S?[It[0],It[It.length-1]]:[rt,It[0]]}),[It,S,rt]),Lt=(0,rr.Z)(Rt,2),Nt=Lt[0],Bt=Lt[1];Z.useImperativeHandle(e,(function(){return{focus:function(){tt.current.focus(0)},blur:function(){var t=document.activeElement;et.current.contains(t)&&(null==t||t.blur())}}})),Z.useEffect((function(){f&&tt.current.focus(0)}),[]);var zt=Z.useMemo((function(){return{min:rt,max:ot,direction:nt,disabled:l,keyboard:s,step:at,included:I,includedStart:Nt,includedEnd:Bt,range:S,tabIndex:q,ariaLabelForHandle:$,ariaLabelledByForHandle:J,ariaValueTextFormatterForHandle:Q}}),[rt,ot,nt,l,s,at,I,Nt,Bt,S,q,$,J,Q]);return Z.createElement(Q1t.Provider,{value:zt},Z.createElement("div",{ref:et,className:K()(i,o,(n={},(0,B.Z)(n,"".concat(i,"-disabled"),l),(0,B.Z)(n,"".concat(i,"-vertical"),F),(0,B.Z)(n,"".concat(i,"-horizontal"),!F),(0,B.Z)(n,"".concat(i,"-with-marks"),lt.length),n)),style:a,onMouseDown:function(t){t.preventDefault();var e,n=et.current.getBoundingClientRect(),r=n.width,i=n.height,o=n.left,a=n.top,c=n.bottom,l=n.right,u=t.clientX,s=t.clientY;switch(nt){case"btt":e=(c-s)/i;break;case"ttb":e=(s-a)/i;break;case"rtl":e=(l-u)/r;break;default:e=(u-o)/r}wt(ft(rt+e*(ot-rt)))}},Z.createElement("div",{className:"".concat(i,"-rail"),style:z}),Z.createElement(f2t,{prefixCls:i,style:L,values:It,startPoint:R,onStartMove:Et?Ft:null}),Z.createElement(v2t,{prefixCls:i,marks:lt,dots:V,style:U,activeStyle:H}),Z.createElement(l2t,{ref:tt,prefixCls:i,style:N,values:Tt,draggingIndex:_t,onStartMove:Ft,onOffsetChange:function(t,e){if(!l){var n=ht(mt,t,e);null==O||O(bt(mt)),xt(n.values),null==E||E(bt(n.values)),Ot(n.value)}},onFocus:h,onBlur:d,handleRender:G}),Z.createElement(d2t,{prefixCls:i,marks:lt,onClick:wt})))}));var m2t=g2t,y2t=Z.forwardRef((function(t,e){var n=t.open,r=(0,Z.useRef)(null),i=(0,Z.useRef)(null);function o(){pe.Z.cancel(i.current),i.current=null}return Z.useEffect((function(){return n?i.current=(0,pe.Z)((function(){var t;null===(t=r.current)||void 0===t||t.forceAlign(),i.current=null})):o(),o}),[n,t.title]),Z.createElement(ko,Object.assign({ref:(0,le.sQ)(r,e)},t))}));var b2t=y2t,x2t=function(t){var e,n,r,i,o=t.componentCls,a=t.antCls,c=t.controlSize,l=t.dotSize,u=t.marginFull,s=t.marginPart,f=t.colorFillContentHover;return(0,V.Z)({},o,Object.assign(Object.assign({},(0,Qe.Wf)(t)),(i={position:"relative",height:c,margin:"".concat(s,"px ").concat(u,"px"),padding:0,cursor:"pointer",touchAction:"none"},(0,V.Z)(i,"&-vertical",{margin:"".concat(u,"px ").concat(s,"px")}),(0,V.Z)(i,"".concat(o,"-rail"),{position:"absolute",backgroundColor:t.railBg,borderRadius:t.borderRadiusXS,transition:"background-color ".concat(t.motionDurationMid)}),(0,V.Z)(i,"".concat(o,"-track"),{position:"absolute",backgroundColor:t.trackBg,borderRadius:t.borderRadiusXS,transition:"background-color ".concat(t.motionDurationMid)}),(0,V.Z)(i,"&:hover",(e={},(0,V.Z)(e,"".concat(o,"-rail"),{backgroundColor:t.railHoverBg}),(0,V.Z)(e,"".concat(o,"-track"),{backgroundColor:t.trackHoverBg}),(0,V.Z)(e,"".concat(o,"-dot"),{borderColor:f}),(0,V.Z)(e,"".concat(o,"-handle::after"),{boxShadow:"0 0 0 ".concat(t.handleLineWidth,"px ").concat(t.colorPrimaryBorderHover)}),(0,V.Z)(e,"".concat(o,"-dot-active"),{borderColor:t.dotActiveBorderColor}),e)),(0,V.Z)(i,"".concat(o,"-handle"),(n={position:"absolute",width:t.handleSize,height:t.handleSize,outline:"none"},(0,V.Z)(n,"".concat(o,"-dragging"),{zIndex:1}),(0,V.Z)(n,"&::before",{content:'""',position:"absolute",insetInlineStart:-t.handleLineWidth,insetBlockStart:-t.handleLineWidth,width:t.handleSize+2*t.handleLineWidth,height:t.handleSize+2*t.handleLineWidth,backgroundColor:"transparent"}),(0,V.Z)(n,"&::after",{content:'""',position:"absolute",insetBlockStart:0,insetInlineStart:0,width:t.handleSize,height:t.handleSize,backgroundColor:t.colorBgElevated,boxShadow:"0 0 0 ".concat(t.handleLineWidth,"px ").concat(t.handleColor),borderRadius:"50%",cursor:"pointer",transition:"\n inset-inline-start ".concat(t.motionDurationMid,",\n inset-block-start ").concat(t.motionDurationMid,",\n width ").concat(t.motionDurationMid,",\n height ").concat(t.motionDurationMid,",\n box-shadow ").concat(t.motionDurationMid,"\n ")}),(0,V.Z)(n,"&:hover, &:active, &:focus",{"&::before":{insetInlineStart:-((t.handleSizeHover-t.handleSize)/2+t.handleLineWidthHover),insetBlockStart:-((t.handleSizeHover-t.handleSize)/2+t.handleLineWidthHover),width:t.handleSizeHover+2*t.handleLineWidthHover,height:t.handleSizeHover+2*t.handleLineWidthHover},"&::after":{boxShadow:"0 0 0 ".concat(t.handleLineWidthHover,"px ").concat(t.handleActiveColor),width:t.handleSizeHover,height:t.handleSizeHover,insetInlineStart:(t.handleSize-t.handleSizeHover)/2,insetBlockStart:(t.handleSize-t.handleSizeHover)/2}}),n)),(0,V.Z)(i,"".concat(o,"-mark"),{position:"absolute",fontSize:t.fontSize}),(0,V.Z)(i,"".concat(o,"-mark-text"),{position:"absolute",display:"inline-block",color:t.colorTextDescription,textAlign:"center",wordBreak:"keep-all",cursor:"pointer",userSelect:"none","&-active":{color:t.colorText}}),(0,V.Z)(i,"".concat(o,"-step"),{position:"absolute",background:"transparent",pointerEvents:"none"}),(0,V.Z)(i,"".concat(o,"-dot"),{position:"absolute",width:l,height:l,backgroundColor:t.colorBgElevated,border:"".concat(t.handleLineWidth,"px solid ").concat(t.dotBorderColor),borderRadius:"50%",cursor:"pointer",transition:"border-color ".concat(t.motionDurationSlow),pointerEvents:"auto","&-active":{borderColor:t.dotActiveBorderColor}}),(0,V.Z)(i,"&".concat(o,"-disabled"),(r={cursor:"not-allowed"},(0,V.Z)(r,"".concat(o,"-rail"),{backgroundColor:"".concat(t.railBg," !important")}),(0,V.Z)(r,"".concat(o,"-track"),{backgroundColor:"".concat(t.trackBgDisabled," !important")}),(0,V.Z)(r,"\n ".concat(o,"-dot\n "),{backgroundColor:t.colorBgElevated,borderColor:t.trackBgDisabled,boxShadow:"none",cursor:"not-allowed"}),(0,V.Z)(r,"".concat(o,"-handle::after"),{backgroundColor:t.colorBgElevated,cursor:"not-allowed",width:t.handleSize,height:t.handleSize,boxShadow:"0 0 0 ".concat(t.handleLineWidth,"px ").concat(new to.C(t.colorTextDisabled).onBackground(t.colorBgContainer).toHexShortString()),insetInlineStart:0,insetBlockStart:0}),(0,V.Z)(r,"\n ".concat(o,"-mark-text,\n ").concat(o,"-dot\n "),{cursor:"not-allowed !important"}),r)),(0,V.Z)(i,"&-tooltip ".concat(a,"-tooltip-inner"),{minWidth:"unset"}),i)))},w2t=function(t,e){var n,r,i,o,a=t.componentCls,c=t.railSize,l=t.handleSize,u=t.dotSize,s=e?"paddingBlock":"paddingInline",f=e?"width":"height",h=e?"height":"width",d=e?"insetBlockStart":"insetInlineStart",p=e?"top":"insetInlineStart";return o={},(0,V.Z)(o,s,c),(0,V.Z)(o,h,3*c),(0,V.Z)(o,"".concat(a,"-rail"),(n={},(0,V.Z)(n,f,"100%"),(0,V.Z)(n,h,c),n)),(0,V.Z)(o,"".concat(a,"-track"),(0,V.Z)({},h,c)),(0,V.Z)(o,"".concat(a,"-handle"),(0,V.Z)({},d,(3*c-l)/2)),(0,V.Z)(o,"".concat(a,"-mark"),(r={insetInlineStart:0,top:0},(0,V.Z)(r,p,3*c+(e?0:t.marginFull)),(0,V.Z)(r,f,"100%"),r)),(0,V.Z)(o,"".concat(a,"-step"),(i={insetInlineStart:0,top:0},(0,V.Z)(i,p,c),(0,V.Z)(i,f,"100%"),(0,V.Z)(i,h,c),i)),(0,V.Z)(o,"".concat(a,"-dot"),(0,V.Z)({position:"absolute"},d,(c-u)/2)),o},S2t=function(t){var e=t.componentCls,n=t.marginPartWithMark;return(0,V.Z)({},"".concat(e,"-horizontal"),Object.assign(Object.assign({},w2t(t,!0)),(0,V.Z)({},"&".concat(e,"-with-marks"),{marginBottom:n})))},k2t=function(t){var e=t.componentCls;return(0,V.Z)({},"".concat(e,"-vertical"),Object.assign(Object.assign({},w2t(t,!1)),{height:"100%"}))},C2t=(0,se.Z)("Slider",(function(t){var e=(0,nn.TS)(t,{marginPart:(t.controlHeight-t.controlSize)/2,marginFull:t.controlSize/2,marginPartWithMark:t.controlHeightLG-t.controlSize});return[x2t(e),S2t(e),k2t(e)]}),(function(t){var e=t.controlHeightLG/4;return{controlSize:e,railSize:4,handleSize:e,handleSizeHover:t.controlHeightSM/2,dotSize:8,handleLineWidth:t.lineWidth+1,handleLineWidthHover:t.lineWidth+3,railBg:t.colorFillTertiary,railHoverBg:t.colorFillSecondary,trackBg:t.colorPrimaryBorder,trackHoverBg:t.colorPrimaryBorderHover,handleColor:t.colorPrimaryBorder,handleActiveColor:t.colorPrimary,dotBorderColor:t.colorBorderSecondary,dotActiveBorderColor:t.colorPrimaryBorder,trackBgDisabled:t.colorBgContainerDisabled}})),O2t=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(t);i=0;--r){var i=this.tryEntries[r],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var c=o.call(i,"catchLoc"),l=o.call(i,"finallyLoc");if(c&&l){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&o.call(r,"finallyLoc")&&this.prev=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),M(n),p}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var i=r.arg;M(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,n){return this.delegate={iterator:P(t),resultName:e,nextLoc:n},"next"===this.method&&(this.arg=void 0),p}},e}t.exports=i,t.exports.__esModule=!0,t.exports.default=t.exports},59371:function(t,e,n){var r=n(3931)();t.exports=r;try{regeneratorRuntime=r}catch(i){"object"==typeof globalThis?globalThis.regeneratorRuntime=r:Function("r","regeneratorRuntime = r")(r)}}}]); +(self.webpackChunklida=self.webpackChunklida||[]).push([[514],{81819:function(t,e){"use strict";var n=function(){function t(){this._events={}}return t.prototype.on=function(t,e,n){return this._events[t]||(this._events[t]=[]),this._events[t].push({callback:e,once:!!n}),this},t.prototype.once=function(t,e){return this.on(t,e,!0)},t.prototype.emit=function(t){for(var e=this,n=[],r=1;r=0&&e._call.call(null,t),e=e._next;--s}()}finally{s=0,function(){var t,e,n=r,o=1/0;for(;n;)n._call?(o>n._time&&(o=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:r=e);i=t,O(o)}(),v=0}}function C(){var t=m.now(),e=t-p;e>d&&(g-=e,p=t)}function O(t){s||(f&&(f=clearTimeout(f)),t-v>24?(t<1/0&&(f=setTimeout(k,t-m.now()-g)),h&&(h=clearInterval(h))):(h||(p=m.now(),h=setInterval(C,d)),s=1,y(k)))}w.prototype=S.prototype={constructor:w,restart:function(t,e,n){if("function"!=typeof t)throw new TypeError("callback is not a function");n=(null==n?b():+n)+(null==e?0:+e),this._next||i===this||(i?i._next=this:r=this,i=this),this._call=t,this._time=n,O()},stop:function(){this._call&&(this._call=null,this._time=1/0,O())}};var E=n(23713),M=n(79739),A=n(74205),P=n(47696),_=function(t){return["fill","stroke","fillStyle","strokeStyle"].includes(t)},D=function(t){return/^[r,R,L,l]{1}[\s]*\(/.test(t)},T=[1,0,0,0,1,0,0,0,1];function Z(t,e,n){var r,i=e.startTime;if(ns.length?(l=P.parsePathString(o[c]),s=P.parsePathString(i[c]),s=P.fillPathByDiff(s,l),s=P.formatPath(s,l),e.fromAttrs.path=s,e.toAttrs.path=l):e.pathFormatted||(l=P.parsePathString(o[c]),s=P.parsePathString(i[c]),s=P.formatPath(s,l),e.fromAttrs.path=s,e.toAttrs.path=l,e.pathFormatted=!0),r[c]=[];for(var f=0;f0){for(var o=r.animators.length-1;o>=0;o--)if((t=r.animators[o]).destroyed)r.removeAnimator(o);else{if(!t.isAnimatePaused())for(var a=(e=t.get("animations")).length-1;a>=0;a--)n=e[a],Z(t,n,i)&&(e.splice(a,1),!1,n.callback&&n.callback());0===e.length&&r.removeAnimator(o)}r.canvas.get("autoDraw")||r.canvas.draw()}}))},t.prototype.addAnimator=function(t){this.animators.push(t)},t.prototype.removeAnimator=function(t){this.animators.splice(t,1)},t.prototype.isAnimating=function(){return!!this.animators.length},t.prototype.stop=function(){this.timer&&this.timer.stop()},t.prototype.stopAllAnimations=function(t){void 0===t&&(t=!0),this.animators.forEach((function(e){e.stopAnimate(t)})),this.animators=[],this.canvas.draw()},t.prototype.getTime=function(){return this.current},t}(),j=F,I=n(43860),R=["mousedown","mouseup","dblclick","mouseout","mouseover","mousemove","mouseleave","mouseenter","touchstart","touchmove","touchend","dragenter","dragover","dragleave","drop","contextmenu","mousewheel"];function L(t,e,n){n.name=e,n.target=t,n.currentTarget=t,n.delegateTarget=t,t.emit(e,n)}function N(t,e,n){if(n.bubbles){var r=void 0,i=!1;if("mouseenter"===e?(r=n.fromShape,i=!0):"mouseleave"===e&&(i=!0,r=n.toShape),t.isCanvas()&&i)return;if(r&&(0,l.UY)(t,r))return void(n.bubbles=!1);n.name=e,n.currentTarget=t,n.delegateTarget=t,t.emit(e,n)}}var B=function(){function t(t){var e=this;this.draggingShape=null,this.dragging=!1,this.currentShape=null,this.mousedownShape=null,this.mousedownPoint=null,this._eventCallback=function(t){var n=t.type;e._triggerEvent(n,t)},this._onDocumentMove=function(t){if(e.canvas.get("el")!==t.target&&(e.dragging||e.currentShape)){var n=e._getPointInfo(t);e.dragging&&e._emitEvent("drag",t,n,e.draggingShape)}},this._onDocumentMouseUp=function(t){if(e.canvas.get("el")!==t.target&&e.dragging){var n=e._getPointInfo(t);e.draggingShape&&e._emitEvent("drop",t,n,null),e._emitEvent("dragend",t,n,e.draggingShape),e._afterDrag(e.draggingShape,n,t)}},this.canvas=t.canvas}return t.prototype.init=function(){this._bindEvents()},t.prototype._bindEvents=function(){var t=this,e=this.canvas.get("el");(0,l.S6)(R,(function(n){e.addEventListener(n,t._eventCallback)})),document&&(document.addEventListener("mousemove",this._onDocumentMove),document.addEventListener("mouseup",this._onDocumentMouseUp))},t.prototype._clearEvents=function(){var t=this,e=this.canvas.get("el");(0,l.S6)(R,(function(n){e.removeEventListener(n,t._eventCallback)})),document&&(document.removeEventListener("mousemove",this._onDocumentMove),document.removeEventListener("mouseup",this._onDocumentMouseUp))},t.prototype._getEventObj=function(t,e,n,r,i,o){var a=new I.Z(t,e);return a.fromShape=i,a.toShape=o,a.x=n.x,a.y=n.y,a.clientX=n.clientX,a.clientY=n.clientY,a.propagationPath.push(r),a},t.prototype._getShape=function(t,e){return this.canvas.getShape(t.x,t.y,e)},t.prototype._getPointInfo=function(t){var e=this.canvas,n=e.getClientByEvent(t),r=e.getPointByEvent(t);return{x:r.x,y:r.y,clientX:n.x,clientY:n.y}},t.prototype._triggerEvent=function(t,e){var n=this._getPointInfo(e),r=this._getShape(n,e),i=this["_on"+t],o=!1;if(i)i.call(this,n,r,e);else{var a=this.currentShape;"mouseenter"===t||"dragenter"===t||"mouseover"===t?(this._emitEvent(t,e,n,null,null,r),r&&this._emitEvent(t,e,n,r,null,r),"mouseenter"===t&&this.draggingShape&&this._emitEvent("dragenter",e,n,null)):"mouseleave"===t||"dragleave"===t||"mouseout"===t?(o=!0,a&&this._emitEvent(t,e,n,a,a,null),this._emitEvent(t,e,n,null,a,null),"mouseleave"===t&&this.draggingShape&&this._emitEvent("dragleave",e,n,null)):this._emitEvent(t,e,n,r,null,null)}if(o||(this.currentShape=r),r&&!r.get("destroyed")){var c=this.canvas;c.get("el").style.cursor=r.attr("cursor")||c.get("cursor")}},t.prototype._onmousedown=function(t,e,n){0===n.button&&(this.mousedownShape=e,this.mousedownPoint=t,this.mousedownTimeStamp=n.timeStamp),this._emitEvent("mousedown",n,t,e,null,null)},t.prototype._emitMouseoverEvents=function(t,e,n,r){var i=this.canvas.get("el");n!==r&&(n&&(this._emitEvent("mouseout",t,e,n,n,r),this._emitEvent("mouseleave",t,e,n,n,r),r&&!r.get("destroyed")||(i.style.cursor=this.canvas.get("cursor"))),r&&(this._emitEvent("mouseover",t,e,r,n,r),this._emitEvent("mouseenter",t,e,r,n,r)))},t.prototype._emitDragoverEvents=function(t,e,n,r,i){r?(r!==n&&(n&&this._emitEvent("dragleave",t,e,n,n,r),this._emitEvent("dragenter",t,e,r,n,r)),i||this._emitEvent("dragover",t,e,r)):n&&this._emitEvent("dragleave",t,e,n,n,r),i&&this._emitEvent("dragover",t,e,r)},t.prototype._afterDrag=function(t,e,n){t&&(t.set("capture",!0),this.draggingShape=null),this.dragging=!1;var r=this._getShape(e,n);r!==t&&this._emitMouseoverEvents(n,e,t,r),this.currentShape=r},t.prototype._onmouseup=function(t,e,n){if(0===n.button){var r=this.draggingShape;this.dragging?(r&&this._emitEvent("drop",n,t,e),this._emitEvent("dragend",n,t,r),this._afterDrag(r,t,n)):(this._emitEvent("mouseup",n,t,e),e===this.mousedownShape&&this._emitEvent("click",n,t,e),this.mousedownShape=null,this.mousedownPoint=null)}},t.prototype._ondragover=function(t,e,n){n.preventDefault();var r=this.currentShape;this._emitDragoverEvents(n,t,r,e,!0)},t.prototype._onmousemove=function(t,e,n){var r=this.canvas,i=this.currentShape,o=this.draggingShape;if(this.dragging)o&&this._emitDragoverEvents(n,t,i,e,!1),this._emitEvent("drag",n,t,o);else{var a=this.mousedownPoint;if(a){var c=this.mousedownShape,l=n.timeStamp-this.mousedownTimeStamp,u=a.clientX-t.clientX,s=a.clientY-t.clientY;l>120||u*u+s*s>40?c&&c.get("draggable")?((o=this.mousedownShape).set("capture",!1),this.draggingShape=o,this.dragging=!0,this._emitEvent("dragstart",n,t,o),this.mousedownShape=null,this.mousedownPoint=null):!c&&r.get("draggable")?(this.dragging=!0,this._emitEvent("dragstart",n,t,null),this.mousedownShape=null,this.mousedownPoint=null):(this._emitMouseoverEvents(n,t,i,e),this._emitEvent("mousemove",n,t,e)):(this._emitMouseoverEvents(n,t,i,e),this._emitEvent("mousemove",n,t,e))}else this._emitMouseoverEvents(n,t,i,e),this._emitEvent("mousemove",n,t,e)}},t.prototype._emitEvent=function(t,e,n,r,i,o){var a=this._getEventObj(t,e,n,r,i,o);if(r){a.shape=r,L(r,t,a);for(var c=r.getParent();c;)c.emitDelegation(t,a),a.propagationStopped||N(c,t,a),a.propagationPath.push(c),c=c.getParent()}else{L(this.canvas,t,a)}},t.prototype.destroy=function(){this._clearEvents(),this.canvas=null,this.currentShape=null,this.draggingShape=null,this.mousedownPoint=null,this.mousedownShape=null,this.mousedownTimeStamp=null},t}(),z=B,U=(0,a.qY)(),H=U&&"firefox"===U.name,W=function(t){function e(e){var n=t.call(this,e)||this;return n.initContainer(),n.initDom(),n.initEvents(),n.initTimeline(),n}return(0,o.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return e.cursor="default",e.supportCSSTransform=!1,e},e.prototype.initContainer=function(){var t=this.get("container");(0,l.HD)(t)&&(t=document.getElementById(t),this.set("container",t))},e.prototype.initDom=function(){var t=this.createDom();this.set("el",t),this.get("container").appendChild(t),this.setDOMSize(this.get("width"),this.get("height"))},e.prototype.initEvents=function(){var t=new z({canvas:this});t.init(),this.set("eventController",t)},e.prototype.initTimeline=function(){var t=new j(this);this.set("timeline",t)},e.prototype.setDOMSize=function(t,e){var n=this.get("el");l.jU&&(n.style.width=t+"px",n.style.height=e+"px")},e.prototype.changeSize=function(t,e){this.setDOMSize(t,e),this.set("width",t),this.set("height",e),this.onCanvasChange("changeSize")},e.prototype.getRenderer=function(){return this.get("renderer")},e.prototype.getCursor=function(){return this.get("cursor")},e.prototype.setCursor=function(t){this.set("cursor",t);var e=this.get("el");l.jU&&e&&(e.style.cursor=t)},e.prototype.getPointByEvent=function(t){if(this.get("supportCSSTransform")){if(H&&!(0,l.kK)(t.layerX)&&t.layerX!==t.offsetX)return{x:t.layerX,y:t.layerY};if(!(0,l.kK)(t.offsetX))return{x:t.offsetX,y:t.offsetY}}var e=this.getClientByEvent(t),n=e.x,r=e.y;return this.getPointByClient(n,r)},e.prototype.getClientByEvent=function(t){var e=t;return t.touches&&(e="touchend"===t.type?t.changedTouches[0]:t.touches[0]),{x:e.clientX,y:e.clientY}},e.prototype.getPointByClient=function(t,e){var n=this.get("el").getBoundingClientRect();return{x:t-n.left,y:e-n.top}},e.prototype.getClientByPoint=function(t,e){var n=this.get("el").getBoundingClientRect();return{x:t+n.left,y:e+n.top}},e.prototype.draw=function(){},e.prototype.removeDom=function(){var t=this.get("el");t.parentNode.removeChild(t)},e.prototype.clearEvents=function(){this.get("eventController").destroy()},e.prototype.isCanvas=function(){return!0},e.prototype.getParent=function(){return null},e.prototype.destroy=function(){var e=this.get("timeline");this.get("destroyed")||(this.clear(),e&&e.stop(),this.clearEvents(),this.removeDom(),t.prototype.destroy.call(this))},e}(c.Z),V=W},25765:function(t,e,n){"use strict";var r=n(70903),i=n(86755),o=n(55013),a={},c="_INDEX";function l(t,e){if(t.set("canvas",e),t.isGroup()){var n=t.get("children");n.length&&n.forEach((function(t){l(t,e)}))}}function u(t,e){if(t.set("timeline",e),t.isGroup()){var n=t.get("children");n.length&&n.forEach((function(t){u(t,e)}))}}var s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,r.ZT)(e,t),e.prototype.isCanvas=function(){return!1},e.prototype.getBBox=function(){var t=1/0,e=-1/0,n=1/0,r=-1/0,i=this.getChildren().filter((function(t){return t.get("visible")&&(!t.isGroup()||t.isGroup()&&t.getChildren().length>0)}));return i.length>0?(0,o.S6)(i,(function(i){var o=i.getBBox(),a=o.minX,c=o.maxX,l=o.minY,u=o.maxY;ae&&(e=c),lr&&(r=u)})):(t=0,e=0,n=0,r=0),{x:t,y:n,minX:t,minY:n,maxX:e,maxY:r,width:e-t,height:r-n}},e.prototype.getCanvasBBox=function(){var t=1/0,e=-1/0,n=1/0,r=-1/0,i=this.getChildren().filter((function(t){return t.get("visible")&&(!t.isGroup()||t.isGroup()&&t.getChildren().length>0)}));return i.length>0?(0,o.S6)(i,(function(i){var o=i.getCanvasBBox(),a=o.minX,c=o.maxX,l=o.minY,u=o.maxY;ae&&(e=c),lr&&(r=u)})):(t=0,e=0,n=0,r=0),{x:t,y:n,minX:t,minY:n,maxX:e,maxY:r,width:e-t,height:r-n}},e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return e.children=[],e},e.prototype.onAttrChange=function(e,n,r){if(t.prototype.onAttrChange.call(this,e,n,r),"matrix"===e){var i=this.getTotalMatrix();this._applyChildrenMarix(i)}},e.prototype.applyMatrix=function(e){var n=this.getTotalMatrix();t.prototype.applyMatrix.call(this,e);var r=this.getTotalMatrix();r!==n&&this._applyChildrenMarix(r)},e.prototype._applyChildrenMarix=function(t){var e=this.getChildren();(0,o.S6)(e,(function(e){e.applyMatrix(t)}))},e.prototype.addShape=function(){for(var t=[],e=0;e=0;a--){var c=t[a];if((0,o.pP)(c)&&(c.isGroup()?i=c.getShape(e,n,r):c.isHit(e,n)&&(i=c)),i)break}return i},e.prototype.add=function(t){var e=this.getCanvas(),n=this.getChildren(),r=this.get("timeline"),i=t.getParent();i&&function(t,e,n){void 0===n&&(n=!0),n?e.destroy():(e.set("parent",null),e.set("canvas",null)),(0,o.As)(t.getChildren(),e)}(i,t,!1),t.set("parent",this),e&&l(t,e),r&&u(t,r),n.push(t),t.onCanvasChange("add"),this._applyElementMatrix(t)},e.prototype._applyElementMatrix=function(t){var e=this.getTotalMatrix();e&&t.applyMatrix(e)},e.prototype.getChildren=function(){return this.get("children")},e.prototype.sort=function(){var t,e=this.getChildren();(0,o.S6)(e,(function(t,e){return t[c]=e,t})),e.sort((t=function(t,e){return t.get("zIndex")-e.get("zIndex")},function(e,n){var r=t(e,n);return 0===r?e[c]-n[c]:r})),this.onCanvasChange("sort")},e.prototype.clear=function(){if(this.set("clearing",!0),!this.destroyed){for(var t=this.getChildren(),e=t.length-1;e>=0;e--)t[e].destroy();this.set("children",[]),this.onCanvasChange("clear"),this.set("clearing",!1)}},e.prototype.destroy=function(){this.get("destroyed")||(this.clear(),t.prototype.destroy.call(this))},e.prototype.getFirst=function(){return this.getChildByIndex(0)},e.prototype.getLast=function(){var t=this.getChildren();return this.getChildByIndex(t.length-1)},e.prototype.getChildByIndex=function(t){return this.getChildren()[t]},e.prototype.getCount=function(){return this.getChildren().length},e.prototype.contain=function(t){return this.getChildren().indexOf(t)>-1},e.prototype.removeChild=function(t,e){void 0===e&&(e=!0),this.contain(t)&&t.remove(e)},e.prototype.findAll=function(t){var e=[],n=this.getChildren();return(0,o.S6)(n,(function(n){t(n)&&e.push(n),n.isGroup()&&(e=e.concat(n.findAll(t)))})),e},e.prototype.find=function(t){var e=null,n=this.getChildren();return(0,o.S6)(n,(function(n){if(t(n)?e=n:n.isGroup()&&(e=n.find(t)),e)return!1})),e},e.prototype.findById=function(t){return this.find((function(e){return e.get("id")===t}))},e.prototype.findByClassName=function(t){return this.find((function(e){return e.get("className")===t}))},e.prototype.findAllByName=function(t){return this.findAll((function(e){return e.get("name")===t}))},e}(i.Z);e.Z=s},86755:function(t,e,n){"use strict";var r=n(70903),i=n(90326),o=n(12579),a=n(55013),c=n(16225),l=n(50138),u=o.vs,s="matrix",f=["zIndex","capture","visible","type"],h=["repeat"];function d(t,e){var n={},r=e.attrs;for(var i in t)n[i]=r[i];return n}var p=function(t){function e(e){var n=t.call(this,e)||this;n.attrs={};var r=n.getDefaultAttrs();return(0,i.CD)(r,e.attrs),n.attrs=r,n.initAttrs(r),n.initAnimate(),n}return(0,r.ZT)(e,t),e.prototype.getDefaultCfg=function(){return{visible:!0,capture:!0,zIndex:0}},e.prototype.getDefaultAttrs=function(){return{matrix:this.getDefaultMatrix(),opacity:1}},e.prototype.onCanvasChange=function(t){},e.prototype.initAttrs=function(t){},e.prototype.initAnimate=function(){this.set("animable",!0),this.set("animating",!1)},e.prototype.isGroup=function(){return!1},e.prototype.getParent=function(){return this.get("parent")},e.prototype.getCanvas=function(){return this.get("canvas")},e.prototype.attr=function(){for(var t,e=[],n=0;n0?r=function(t,e){if(e.onFrame)return t;var n=e.startTime,r=e.delay,o=e.duration,a=Object.prototype.hasOwnProperty;return(0,i.S6)(t,(function(t){n+rt.delay&&(0,i.S6)(e.toAttrs,(function(e,n){a.call(t.toAttrs,n)&&(delete t.toAttrs[n],delete t.fromAttrs[n])}))})),t}(r,w):n.addAnimator(this),r.push(w),this.set("animations",r),this.set("_pause",{isPaused:!1})}},e.prototype.stopAnimate=function(t){var e=this;void 0===t&&(t=!0);var n=this.get("animations");(0,i.S6)(n,(function(n){t&&(n.onFrame?e.attr(n.onFrame(1)):e.attr(n.toAttrs)),n.callback&&n.callback()})),this.set("animating",!1),this.set("animations",[])},e.prototype.pauseAnimate=function(){var t=this.get("timeline"),e=this.get("animations"),n=t.getTime();return(0,i.S6)(e,(function(t){t._paused=!0,t._pauseTime=n,t.pauseCallback&&t.pauseCallback()})),this.set("_pause",{isPaused:!0,pauseTime:n}),this},e.prototype.resumeAnimate=function(){var t=this.get("timeline").getTime(),e=this.get("animations"),n=this.get("_pause").pauseTime;return(0,i.S6)(e,(function(e){e.startTime=e.startTime+(t-n),e._paused=!1,e._pauseTime=null,e.resumeCallback&&e.resumeCallback()})),this.set("_pause",{isPaused:!1}),this.set("animations",e),this},e.prototype.emitDelegation=function(t,e){var n,r=this,o=e.propagationPath;this.getEvents();"mouseenter"===t?n=e.fromShape:"mouseleave"===t&&(n=e.toShape);for(var c=function(t){var c=o[t],u=c.get("name");if(u){if((c.isGroup()||c.isCanvas&&c.isCanvas())&&n&&(0,a.UY)(c,n))return"break";(0,i.kJ)(u)?(0,i.S6)(u,(function(t){r.emitDelegateEvent(c,t,e)})):l.emitDelegateEvent(c,u,e)}},l=this,u=0;u=t&&n.minY<=e&&n.maxY>=e},e.prototype.afterAttrsChange=function(e){t.prototype.afterAttrsChange.call(this,e),this.clearCacheBBox()},e.prototype.getBBox=function(){var t=this.cfg.bbox;return t||(t=this.calculateBBox(),this.set("bbox",t)),t},e.prototype.getCanvasBBox=function(){var t=this.cfg.canvasBBox;return t||(t=this.calculateCanvasBBox(),this.set("canvasBBox",t)),t},e.prototype.applyMatrix=function(e){t.prototype.applyMatrix.call(this,e),this.set("canvasBBox",null)},e.prototype.calculateCanvasBBox=function(){var t=this.getBBox(),e=this.getTotalMatrix(),n=t.minX,r=t.minY,i=t.maxX,a=t.maxY;if(e){var c=(0,o.rG)(e,[t.minX,t.minY]),l=(0,o.rG)(e,[t.maxX,t.minY]),u=(0,o.rG)(e,[t.minX,t.maxY]),s=(0,o.rG)(e,[t.maxX,t.maxY]);n=Math.min(c[0],l[0],u[0],s[0]),i=Math.max(c[0],l[0],u[0],s[0]),r=Math.min(c[1],l[1],u[1],s[1]),a=Math.max(c[1],l[1],u[1],s[1])}var f=this.attrs;if(f.shadowColor){var h=f.shadowBlur,d=void 0===h?0:h,p=f.shadowOffsetX,v=void 0===p?0:p,g=f.shadowOffsetY,m=void 0===g?0:g,y=n-d+v,b=i+d+v,x=r-d+m,w=a+d+m;n=Math.min(n,y),i=Math.max(i,b),r=Math.min(r,x),a=Math.max(a,w)}return{x:n,y:r,minX:n,minY:r,maxX:i,maxY:a,width:i-n,height:a-r}},e.prototype.clearCacheBBox=function(){this.set("bbox",null),this.set("canvasBBox",null)},e.prototype.isClipShape=function(){return this.get("isClipShape")},e.prototype.isInShape=function(t,e){return!1},e.prototype.isOnlyHitBox=function(){return!1},e.prototype.isHit=function(t,e){var n=this.get("startArrowShape"),r=this.get("endArrowShape"),i=[t,e,1],o=(i=this.invertFromMatrix(i))[0],a=i[1],c=this._isInBBox(o,a);if(this.isOnlyHitBox())return c;if(c&&!this.isClipped(o,a)){if(this.isInShape(o,a))return!0;if(n&&n.isHit(o,a))return!0;if(r&&r.isHit(o,a))return!0}return!1},e}(i.Z);e.Z=a},74205:function(t,e,n){"use strict";n.d(e,{_:function(){return q},C:function(){return Y}});var r={};function i(t){return+t}function o(t){return t*t}function a(t){return t*(2-t)}function c(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}function l(t){return t*t*t}function u(t){return--t*t*t+1}function s(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}n.r(r),n.d(r,{easeBack:function(){return U},easeBackIn:function(){return B},easeBackInOut:function(){return U},easeBackOut:function(){return z},easeBounce:function(){return R},easeBounceIn:function(){return I},easeBounceInOut:function(){return L},easeBounceOut:function(){return R},easeCircle:function(){return O},easeCircleIn:function(){return k},easeCircleInOut:function(){return O},easeCircleOut:function(){return C},easeCubic:function(){return s},easeCubicIn:function(){return l},easeCubicInOut:function(){return s},easeCubicOut:function(){return u},easeElastic:function(){return V},easeElasticIn:function(){return W},easeElasticInOut:function(){return G},easeElasticOut:function(){return V},easeExp:function(){return S},easeExpIn:function(){return x},easeExpInOut:function(){return S},easeExpOut:function(){return w},easeLinear:function(){return i},easePoly:function(){return d},easePolyIn:function(){return f},easePolyInOut:function(){return d},easePolyOut:function(){return h},easeQuad:function(){return c},easeQuadIn:function(){return o},easeQuadInOut:function(){return c},easeQuadOut:function(){return a},easeSin:function(){return y},easeSinIn:function(){return g},easeSinInOut:function(){return y},easeSinOut:function(){return m}});var f=function t(e){function n(t){return Math.pow(t,e)}return e=+e,n.exponent=t,n}(3),h=function t(e){function n(t){return 1-Math.pow(1-t,e)}return e=+e,n.exponent=t,n}(3),d=function t(e){function n(t){return((t*=2)<=1?Math.pow(t,e):2-Math.pow(2-t,e))/2}return e=+e,n.exponent=t,n}(3),p=Math.PI,v=p/2;function g(t){return 1==+t?1:1-Math.cos(t*v)}function m(t){return Math.sin(t*v)}function y(t){return(1-Math.cos(p*t))/2}function b(t){return 1.0009775171065494*(Math.pow(2,-10*t)-.0009765625)}function x(t){return b(1-+t)}function w(t){return 1-b(t)}function S(t){return((t*=2)<=1?b(1-t):2-b(t-1))/2}function k(t){return 1-Math.sqrt(1-t*t)}function C(t){return Math.sqrt(1- --t*t)}function O(t){return((t*=2)<=1?1-Math.sqrt(1-t*t):Math.sqrt(1-(t-=2)*t)+1)/2}var E=4/11,M=6/11,A=8/11,P=3/4,_=9/11,D=10/11,T=15/16,Z=21/22,F=63/64,j=1/E/E;function I(t){return 1-R(1-t)}function R(t){return(t=+t)Math.PI/2?Math.PI-u:u,s=s>Math.PI/2?Math.PI-s:s,{xExtra:Math.cos(l/2-u)*(e/2*(1/Math.sin(l/2)))-e/2||0,yExtra:Math.cos(s-l/2)*(e/2*(1/Math.sin(l/2)))-e/2||0}}i("rect",a),i("image",a),i("circle",c),i("marker",c),i("polyline",(function(t){for(var e=t.attr().points,n=[],r=[],i=0;i2&&(n.push([i].concat(c.splice(0,2))),l="l",i="m"===i?"l":"L"),"o"===l&&1===c.length&&n.push([i,c[0]]),"r"===l)n.push([i].concat(c));else for(;c.length>=e[l]&&(n.push([i].concat(c.splice(0,e[l]))),e[l]););return t})),n},l=function(t,e){for(var n=[],r=0,i=t.length;i-2*!e>r;r+=2){var o=[{x:+t[r-2],y:+t[r-1]},{x:+t[r],y:+t[r+1]},{x:+t[r+2],y:+t[r+3]},{x:+t[r+4],y:+t[r+5]}];e?r?i-4===r?o[3]={x:+t[0],y:+t[1]}:i-2===r&&(o[2]={x:+t[0],y:+t[1]},o[3]={x:+t[2],y:+t[3]}):o[0]={x:+t[i-2],y:+t[i-1]}:i-4===r?o[3]=o[2]:r||(o[0]={x:+t[r],y:+t[r+1]}),n.push(["C",(-o[0].x+6*o[1].x+o[2].x)/6,(-o[0].y+6*o[1].y+o[2].y)/6,(o[1].x+6*o[2].x-o[3].x)/6,(o[1].y+6*o[2].y-o[3].y)/6,o[2].x,o[2].y])}return n},u=function(t,e,n,r,i){var o=[];if(null===i&&null===r&&(r=n),t=+t,e=+e,n=+n,r=+r,null!==i){var a=Math.PI/180,c=t+n*Math.cos(-r*a),l=t+n*Math.cos(-i*a);o=[["M",c,e+n*Math.sin(-r*a)],["A",n,n,0,+(i-r>180),0,l,e+n*Math.sin(-i*a)]]}else o=[["M",t,e],["m",0,-r],["a",n,r,0,1,1,0,2*r],["a",n,r,0,1,1,0,-2*r],["z"]];return o},s=function(t){if(!(t=c(t))||!t.length)return[["M",0,0]];var e,n,r=[],i=0,o=0,a=0,s=0,f=0;"M"===t[0][0]&&(a=i=+t[0][1],s=o=+t[0][2],f++,r[0]=["M",i,o]);for(var h=3===t.length&&"M"===t[0][0]&&"R"===t[1][0].toUpperCase()&&"Z"===t[2][0].toUpperCase(),d=void 0,p=void 0,v=f,g=t.length;v1&&(r*=S=Math.sqrt(S),i*=S);var k=r*r,C=i*i,O=(a===c?-1:1)*Math.sqrt(Math.abs((k*C-k*w*w-C*x*x)/(k*w*w+C*x*x)));p=O*r*w/i+(e+l)/2,v=O*-i*x/r+(n+u)/2,h=Math.asin(((n-v)/i).toFixed(9)),d=Math.asin(((u-v)/i).toFixed(9)),h=ed&&(h-=2*Math.PI),!c&&d>h&&(d-=2*Math.PI)}var E=d-h;if(Math.abs(E)>g){var M=d,A=l,P=u;d=h+g*(c&&d>h?1:-1),y=t(l=p+r*Math.cos(d),u=v+i*Math.sin(d),r,i,o,0,c,A,P,[d,M,p,v])}E=d-h;var _=Math.cos(h),D=Math.sin(h),T=Math.cos(d),Z=Math.sin(d),F=Math.tan(E/4),j=4/3*r*F,I=4/3*i*F,R=[e,n],L=[e+j*D,n-I*_],N=[l+j*Z,u-I*T],B=[l,u];if(L[0]=2*R[0]-L[0],L[1]=2*R[1]-L[1],s)return[L,N,B].concat(y);for(var z=[],U=0,H=(y=[L,N,B].concat(y).join().split(",")).length;U7){t[e].shift();for(var o=t[e];o.length;)c[e]="A",i&&(l[e]="A"),t.splice(e++,0,["C"].concat(o.splice(0,6)));t.splice(e,1),n=Math.max(r.length,i&&i.length||0)}},m=function(t,e,o,a,c){t&&e&&"M"===t[c][0]&&"M"!==e[c][0]&&(e.splice(c,0,["M",a.x,a.y]),o.bx=0,o.by=0,o.x=t[c][1],o.y=t[c][2],n=Math.max(r.length,i&&i.length||0))};n=Math.max(r.length,i&&i.length||0);for(var y=0;y1?1:l<0?0:l)/2,s=[-.1252,.1252,-.3678,.3678,-.5873,.5873,-.7699,.7699,-.9041,.9041,-.9816,.9816],f=[.2491,.2491,.2335,.2335,.2032,.2032,.1601,.1601,.1069,.1069,.0472,.0472],h=0,d=0;d<12;d++){var p=u*s[d]+u,v=m(p,t,n,i,a),g=m(p,e,r,o,c),y=v*v+g*g;h+=f[d]*Math.sqrt(y)}return u*h},b=function(t,e,n,r,i,o,a,c){for(var l,u,s,f,h=[],d=[[],[]],p=0;p<2;++p)if(0===p?(u=6*t-12*n+6*i,l=-3*t+9*n-9*i+3*a,s=3*n-3*t):(u=6*e-12*r+6*o,l=-3*e+9*r-9*o+3*c,s=3*r-3*e),Math.abs(l)<1e-12){if(Math.abs(u)<1e-12)continue;(f=-s/u)>0&&f<1&&h.push(f)}else{var v=u*u-4*s*l,g=Math.sqrt(v);if(!(v<0)){var m=(-u+g)/(2*l);m>0&&m<1&&h.push(m);var y=(-u-g)/(2*l);y>0&&y<1&&h.push(y)}}for(var b,x=h.length,w=x;x--;)b=1-(f=h[x]),d[0][x]=b*b*b*t+3*b*b*f*n+3*b*f*f*i+f*f*f*a,d[1][x]=b*b*b*e+3*b*b*f*r+3*b*f*f*o+f*f*f*c;return d[0][w]=t,d[1][w]=e,d[0][w+1]=a,d[1][w+1]=c,d[0].length=d[1].length=w+2,{min:{x:Math.min.apply(0,d[0]),y:Math.min.apply(0,d[1])},max:{x:Math.max.apply(0,d[0]),y:Math.max.apply(0,d[1])}}},x=function(t,e,n,r,i,o,a,c){if(!(Math.max(t,n)Math.max(i,a)||Math.max(e,r)Math.max(o,c))){var l=(t-n)*(o-c)-(e-r)*(i-a);if(l){var u=((t*r-e*n)*(i-a)-(t-n)*(i*c-o*a))/l,s=((t*r-e*n)*(o-c)-(e-r)*(i*c-o*a))/l,f=+u.toFixed(2),h=+s.toFixed(2);if(!(f<+Math.min(t,n).toFixed(2)||f>+Math.max(t,n).toFixed(2)||f<+Math.min(i,a).toFixed(2)||f>+Math.max(i,a).toFixed(2)||h<+Math.min(e,r).toFixed(2)||h>+Math.max(e,r).toFixed(2)||h<+Math.min(o,c).toFixed(2)||h>+Math.max(o,c).toFixed(2)))return{x:u,y:s}}}},w=function(t,e,n){return e>=t.x&&e<=t.x+t.width&&n>=t.y&&n<=t.y+t.height},S=function(t,e,n,r,i){if(i)return[["M",+t+ +i,e],["l",n-2*i,0],["a",i,i,0,0,1,i,i],["l",0,r-2*i],["a",i,i,0,0,1,-i,i],["l",2*i-n,0],["a",i,i,0,0,1,-i,-i],["l",0,2*i-r],["a",i,i,0,0,1,i,-i],["z"]];var o=[["M",t,e],["l",n,0],["l",0,r],["l",-n,0],["z"]];return o.parsePathArray=g,o},k=function(t,e,n,r){return null===t&&(t=e=n=r=0),null===e&&(e=t.y,n=t.width,r=t.height,t=t.x),{x:t,y:e,width:n,w:n,height:r,h:r,x2:t+n,y2:e+r,cx:t+n/2,cy:e+r/2,r1:Math.min(n,r)/2,r2:Math.max(n,r)/2,r0:Math.sqrt(n*n+r*r)/2,path:S(t,e,n,r),vb:[t,e,n,r].join(" ")}},C=function(t,e,n,i,o,a,c,l){(0,r.kJ)(t)||(t=[t,e,n,i,o,a,c,l]);var u=b.apply(null,t);return k(u.min.x,u.min.y,u.max.x-u.min.x,u.max.y-u.min.y)},O=function(t,e,n,r,i,o,a,c,l){var u=1-l,s=Math.pow(u,3),f=Math.pow(u,2),h=l*l,d=h*l,p=t+2*l*(n-t)+h*(i-2*n+t),v=e+2*l*(r-e)+h*(o-2*r+e),g=n+2*l*(i-n)+h*(a-2*i+n),m=r+2*l*(o-r)+h*(c-2*o+r);return{x:s*t+3*f*l*n+3*u*l*l*i+d*a,y:s*e+3*f*l*r+3*u*l*l*o+d*c,m:{x:p,y:v},n:{x:g,y:m},start:{x:u*t+l*n,y:u*e+l*r},end:{x:u*i+l*a,y:u*o+l*c},alpha:90-180*Math.atan2(p-g,v-m)/Math.PI}},E=function(t,e,n){if(!function(t,e){return t=k(t),e=k(e),w(e,t.x,t.y)||w(e,t.x2,t.y)||w(e,t.x,t.y2)||w(e,t.x2,t.y2)||w(t,e.x,e.y)||w(t,e.x2,e.y)||w(t,e.x,e.y2)||w(t,e.x2,e.y2)||(t.xe.x||e.xt.x)&&(t.ye.y||e.yt.y)}(C(t),C(e)))return n?0:[];for(var r=~~(y.apply(0,t)/8),i=~~(y.apply(0,e)/8),o=[],a=[],c={},l=n?0:[],u=0;u=0&&S<=1&&E>=0&&E<=1&&(n?l+=1:l.push({x:b.x,y:b.y,t1:S,t2:E}))}}return l},M=function(t,e){return function(t,e,n){var r,i,o,a,c,l,u,s,f,h;t=p(t),e=p(e);for(var d=n?0:[],v=0,g=t.length;v=3&&(3===t.length&&e.push("Q"),e=e.concat(t[1])),2===t.length&&e.push("L"),e.concat(t[t.length-1])}))}(t,e,n));else{var i=[].concat(t);"M"===i[0]&&(i[0]="L");for(var o=0;o<=n-1;o++)r.push(i)}return r},_=function(t,e){if(1===t.length)return t;var n=t.length-1,r=e.length-1,i=n/r,o=[];if(1===t.length&&"M"===t[0][0]){for(var a=0;a=0;l--)a=o[l].index,"add"===o[l].type?t.splice(a,0,[].concat(t[a])):t.splice(a,1)}var f=i-(r=t.length);if(r0)){t[r]=e[r];break}n=F(n,t[r-1],1)}t[r]=["Q"].concat(n.reduce((function(t,e){return t.concat(e)}),[]));break;case"T":t[r]=["T"].concat(n[0]);break;case"C":if(n.length<3){if(!(r>0)){t[r]=e[r];break}n=F(n,t[r-1],2)}t[r]=["C"].concat(n.reduce((function(t,e){return t.concat(e)}),[]));break;case"S":if(n.length<2){if(!(r>0)){t[r]=e[r];break}n=F(n,t[r-1],1)}t[r]=["S"].concat(n.reduce((function(t,e){return t.concat(e)}),[]));break;default:t[r]=e[r]}return t}},88482:function(t,e,n){"use strict";n.d(e,{$O:function(){return c},FE:function(){return o},mY:function(){return a}});var r=n(55013),i=n(84822);function o(t,e,n){var i=1;if((0,r.HD)(t)&&(i=t.split("\n").length),i>1){var o=function(t,e){return e?e-t:.14*t}(e,n);return e*i+o*(i-1)}return e}function a(t,e){var n=(0,i.L)(),o=0;if((0,r.kK)(t)||""===t)return o;if(n.save(),n.font=e,(0,r.HD)(t)&&t.includes("\n")){var a=t.split("\n");(0,r.S6)(a,(function(t){var e=n.measureText(t).width;o(n-t)*(n-t)+(r-e)*(r-e)?o(n,r,i,a):this.pointToLine(t,e,n,r,i,a)},pointToLine:function(t,e,n,r,i,o){var a=[n-t,r-e];if(s.I6(a,[0,0]))return Math.sqrt((i-t)*(i-t)+(o-e)*(o-e));var c=[-a[1],a[0]];s.Fv(c,c);var l=[i-t,o-e];return Math.abs(s.AK(l,c))},tangentAngle:function(t,e,n,r){return Math.atan2(r-e,n-t)}};function h(t,e,n,r,i,a){var c,l=1/0,u=[n,r],s=20;a&&a>200&&(s=a/10);for(var f=1/s,h=f/10,d=0;d<=s;d++){var p=d*f,v=[i.apply(null,t.concat([p])),i.apply(null,e.concat([p]))];(b=o(u[0],u[1],v[0],v[1]))=0&&b=0?[i]:[]}function v(t,e,n,r){return 2*(1-r)*(e-t)+2*r*(n-e)}function g(t,e,n,r,i,o,a){var c=d(t,n,i,a),l=d(e,r,o,a),u=f.pointAt(t,e,n,r,a),s=f.pointAt(n,r,i,o,a);return[[t,e,u.x,u.y,c,l],[c,l,s.x,s.y,i,o]]}function m(t,e,n,r,i,a,c){if(0===c)return(o(t,e,n,r)+o(n,r,i,a)+o(t,e,i,a))/2;var l=g(t,e,n,r,i,a,.5),u=l[0],s=l[1];return u.push(c-1),s.push(c-1),m.apply(null,u)+m.apply(null,s)}var y={box:function(t,e,n,r,i,o){var a=p(t,n,i)[0],l=p(e,r,o)[0],u=[t,i],s=[e,o];return void 0!==a&&u.push(d(t,n,i,a)),void 0!==l&&s.push(d(e,r,o,l)),c(u,s)},length:function(t,e,n,r,i,o){return m(t,e,n,r,i,o,3)},nearestPoint:function(t,e,n,r,i,o,a,c){return h([t,n,i],[e,r,o],a,c,d)},pointDistance:function(t,e,n,r,i,a,c,l){var u=this.nearestPoint(t,e,n,r,i,a,c,l);return o(u.x,u.y,c,l)},interpolationAt:d,pointAt:function(t,e,n,r,i,o,a){return{x:d(t,n,i,a),y:d(e,r,o,a)}},divide:function(t,e,n,r,i,o,a){return g(t,e,n,r,i,o,a)},tangentAngle:function(t,e,n,r,i,o,a){var c=v(t,n,i,a),l=v(e,r,o,a);return u(Math.atan2(l,c))}};function b(t,e,n,r,i){var o=1-i;return o*o*o*t+3*e*i*o*o+3*n*i*i*o+r*i*i*i}function x(t,e,n,r,i){var o=1-i;return 3*(o*o*(e-t)+2*o*i*(n-e)+i*i*(r-n))}function w(t,e,n,r){var i,o,c,l=-3*t+9*e-9*n+3*r,u=6*t-12*e+6*n,s=3*e-3*t,f=[];if(a(l,0))a(u,0)||(i=-s/u)>=0&&i<=1&&f.push(i);else{var h=u*u-4*l*s;a(h,0)?f.push(-u/(2*l)):h>0&&(o=(-u-(c=Math.sqrt(h)))/(2*l),(i=(-u+c)/(2*l))>=0&&i<=1&&f.push(i),o>=0&&o<=1&&f.push(o))}return f}function S(t,e,n,r,i,o,a,c,l){var u=b(t,n,i,a,l),s=b(e,r,o,c,l),h=f.pointAt(t,e,n,r,l),d=f.pointAt(n,r,i,o,l),p=f.pointAt(i,o,a,c,l),v=f.pointAt(h.x,h.y,d.x,d.y,l),g=f.pointAt(d.x,d.y,p.x,p.y,l);return[[t,e,h.x,h.y,v.x,v.y,u,s],[u,s,g.x,g.y,p.x,p.y,a,c]]}function k(t,e,n,r,i,a,c,l,u){if(0===u)return function(t,e){for(var n=0,r=t.length,i=0;i0?n:-1*n}var E=function(t,e,n,r,i,o){var a=n,c=r;if(0===a||0===c)return{x:t,y:e};for(var l,u,s=i-t,f=o-e,h=Math.abs(s),d=Math.abs(f),p=a*a,v=c*c,g=Math.PI/4,m=0;m<4;m++){l=a*Math.cos(g),u=c*Math.sin(g);var y=(p-v)*Math.pow(Math.cos(g),3)/a,b=(v-p)*Math.pow(Math.sin(g),3)/c,x=l-y,w=u-b,S=h-y,k=d-b,C=Math.hypot(w,x),E=Math.hypot(k,S);g+=C*Math.asin((x*k-w*S)/(C*E))/Math.sqrt(p+v-l*l-u*u),g=Math.min(Math.PI/2,Math.max(0,g))}return{x:t+O(l,s),y:e+O(u,f)}};function M(t,e,n,r,i,o){return n*Math.cos(i)*Math.cos(o)-r*Math.sin(i)*Math.sin(o)+t}function A(t,e,n,r,i,o){return n*Math.sin(i)*Math.cos(o)+r*Math.cos(i)*Math.sin(o)+e}function P(t,e,n){return{x:t*Math.cos(n),y:e*Math.sin(n)}}function _(t,e,n){var r=Math.cos(n),i=Math.sin(n);return[t*r-e*i,t*i+e*r]}var D={box:function(t,e,n,r,i,o,a){for(var c=function(t,e,n){return Math.atan(-e/t*Math.tan(n))}(n,r,i),l=1/0,u=-1/0,s=[o,a],f=2*-Math.PI;f<=2*Math.PI;f+=Math.PI){var h=c+f;ou&&(u=d)}var p=function(t,e,n){return Math.atan(e/(t*Math.tan(n)))}(n,r,i),v=1/0,g=-1/0,m=[o,a];for(f=2*-Math.PI;f<=2*Math.PI;f+=Math.PI){var y=p+f;og&&(g=b)}return{x:l,y:v,width:u-l,height:g-v}},length:function(t,e,n,r,i,o,a){},nearestPoint:function(t,e,n,r,i,o,a,c,l){var u=_(c-t,l-e,-i),s=u[0],f=u[1],h=E(0,0,n,r,s,f),d=function(t,e,n,r){return(Math.atan2(r*t,n*e)+2*Math.PI)%(2*Math.PI)}(n,r,h.x,h.y);da&&(h=P(n,r,a));var p=_(h.x,h.y,i);return{x:p[0]+t,y:p[1]+e}},pointDistance:function(t,e,n,r,i,a,c,l,u){var s=this.nearestPoint(t,e,n,r,l,u);return o(s.x,s.y,l,u)},pointAt:function(t,e,n,r,i,o,a,c){var l=(a-o)*c+o;return{x:M(t,0,n,r,i,l),y:A(0,e,n,r,i,l)}},tangentAngle:function(t,e,n,r,i,o,a,c){var l=(a-o)*c+o,s=function(t,e,n,r,i,o,a,c){return-1*n*Math.cos(i)*Math.sin(c)-r*Math.sin(i)*Math.cos(c)}(0,0,n,r,i,0,0,l),f=function(t,e,n,r,i,o,a,c){return-1*n*Math.sin(i)*Math.sin(c)+r*Math.cos(i)*Math.cos(c)}(0,0,n,r,i,0,0,l);return u(Math.atan2(f,s))}};function T(t){for(var e=0,n=[],r=0;r1||e<0||t.length<2)return null;var n=T(t),r=n.segments,i=n.totalLength;if(0===i)return{x:t[0][0],y:t[0][1]};for(var o=0,a=null,c=0;c=o&&e<=o+h){var d=(e-o)/h;a=f.pointAt(u[0],u[1],s[0],s[1],d);break}o+=h}return a}function j(t,e){if(e>1||e<0||t.length<2)return 0;for(var n=T(t),r=n.segments,i=n.totalLength,o=0,a=0,c=0;c=o&&e<=o+f){a=Math.atan2(s[1]-u[1],s[0]-u[0]);break}o+=f}return a}function I(t,e,n){for(var r=1/0,i=0;i=0;return n?o?2*Math.PI-r:r:o?r:2*Math.PI-r}},85687:function(t,e,n){"use strict";n.d(e,{e9:function(){return l},Wq:function(){return D},tr:function(){return h},wb:function(){return v},zx:function(){return S}});var r=n(90326),i=/[MLHVQTCSAZ]([^MLHVQTCSAZ]*)/gi,o=/[^\s\,]+/gi;var a=function(t){var e=t||[];return(0,r.kJ)(e)?e:(0,r.HD)(e)?(e=e.match(i),(0,r.S6)(e,(function(t,n){if((t=t.match(o))[0].length>1){var i=t[0].charAt(0);t.splice(1,0,t[0].substr(1)),t[0]=i}(0,r.S6)(t,(function(e,n){isNaN(e)||(t[n]=+e)})),e[n]=t})),e):void 0},c=n(17647);var l=function(t,e,n){void 0===e&&(e=!1),void 0===n&&(n=[[0,0],[1,1]]);for(var r=!!e,i=[],o=0,a=t.length;o2&&(n.push([r].concat(o.splice(0,2))),a="l",r="m"===r?"l":"L"),"o"===a&&1===o.length&&n.push([r,o[0]]),"r"===a)n.push([r].concat(o));else for(;o.length>=e[a]&&(n.push([r].concat(o.splice(0,e[a]))),e[a]););return""})),n}var d=/[a-z]/;function p(t,e){return[e[0]+(e[0]-t[0]),e[1]+(e[1]-t[1])]}function v(t){var e=h(t);if(!e||!e.length)return[["M",0,0]];for(var n=!1,r=0;r=0){n=!0;break}}if(!n)return e;var o=[],a=0,c=0,l=0,u=0,s=0,f=e[0];"M"!==f[0]&&"m"!==f[0]||(l=a=+f[1],u=c=+f[2],s++,o[0]=["M",a,c]);r=s;for(var v=e.length;r1&&(n*=Math.sqrt(p),i*=Math.sqrt(p));var v=n*n*(d*d)+i*i*(h*h),g=v?Math.sqrt((n*n*(i*i)-v)/v):1;a===c&&(g*=-1),isNaN(g)&&(g=0);var x=i?g*n*d/i:0,w=n?g*-i*h/n:0,S=(l+s)/2+Math.cos(o)*x-Math.sin(o)*w,k=(u+f)/2+Math.sin(o)*x+Math.cos(o)*w,C=[(h-x)/n,(d-w)/i],O=[(-1*h-x)/n,(-1*d-w)/i],E=y([1,0],C),M=y(C,O);return m(C,O)<=-1&&(M=Math.PI),m(C,O)>=1&&(M=0),0===c&&M>0&&(M-=2*Math.PI),1===c&&M<0&&(M+=2*Math.PI),{cx:S,cy:k,rx:b(t,[s,f])?0:n,ry:b(t,[s,f])?0:i,startAngle:E,endAngle:E+M,xRotation:o,arcFlag:a,sweepFlag:c}}function w(t,e){return[e[0]+(e[0]-t[0]),e[1]+(e[1]-t[1])]}function S(t){for(var e=[],n=null,r=null,i=null,o=0,c=(t=a(t)).length,l=0;l0!=C(c[1]-n)>0&&C(e-(n-a[1])*(a[0]-c[0])/(a[1]-c[1])-a[0])<0&&(r=!r)}return r}var M=function(t,e,n){return t>=e&&t<=n};function A(t){for(var e=[],n=t.length,r=0;r1){var a=t[0],c=t[n-1];e.push({from:{x:c[0],y:c[1]},to:{x:a[0],y:a[1]}})}return e}function P(t,e){var n=!1;return(0,r.S6)(t,(function(t){if(function(t,e,n,r){var i=n.x-t.x,o=n.y-t.y,a=e.x-t.x,c=e.y-t.y,l=r.x-n.x,u=r.y-n.y,s=a*u-c*l,f=null;if(s*s>.001*(a*a+c*c)*(l*l+u*u)){var h=(i*u-o*l)/s,d=(i*c-o*a)/s;M(h,0,1)&&M(d,0,1)&&(f={x:t.x+h*a,y:t.y+h*c})}return f}(t.from,t.to,e.from,e.to))return n=!0,!1})),n}function _(t){var e=t.map((function(t){return t[0]})),n=t.map((function(t){return t[1]}));return{minX:Math.min.apply(null,e),maxX:Math.max.apply(null,e),minY:Math.min.apply(null,n),maxY:Math.max.apply(null,n)}}function D(t,e){if(t.length<2||e.length<2)return!1;var n,i,o=_(t),a=_(e);if(n=o,(i=a).minX>n.maxX||i.maxXn.maxY||i.maxY-1},o=function(t,e){if(!r(t))return t;for(var n=[],i=0;ie[i])return 1;if(t[i]n?n:t},H=function(t,e){var n=e.toString(),r=n.indexOf(".");if(-1===r)return Math.round(t);var i=n.substr(r+1).length;return i>20&&(i=20),parseFloat(t.toFixed(i))},W=function(t){return l(t,"Number")},V=(Number.isInteger&&Number.isInteger,1e-5);function G(t,e,n){return void 0===n&&(n=V),Math.abs(t-e)r&&(n=o,r=a)}return n}},q=function(t,e){if(f(t)){for(var n,r=1/0,i=0;ie?(r&&(clearTimeout(r),r=null),c=u,a=t.apply(i,o),r||(i=o=null)):r||!1===n.trailing||(r=setTimeout(l,s)),a};return u.cancel=function(){clearTimeout(r),c=0,r=i=o=null},u},It=function(t){return r(t)?Array.prototype.slice.call(t):[]},Rt={},Lt=function(t){return Rt[t=t||"g"]?Rt[t]+=1:Rt[t]=1,t+Rt[t]},Nt=function(){};function Bt(t){return s(t)?0:r(t)?t.length:Object.keys(t).length}var zt,Ut=n(70903),Ht=yt((function(t,e){void 0===e&&(e={});var n=e.fontSize,r=e.fontFamily,i=e.fontWeight,o=e.fontStyle,a=e.fontVariant;return zt||(zt=document.createElement("canvas").getContext("2d")),zt.font=[o,a,i,n+"px",r].join(" "),zt.measureText(_(t)?t:"").width}),(function(t,e){return void 0===e&&(e={}),(0,Ut.pr)([t],tt(e)).join("")})),Wt=function(t,e,n,r){void 0===r&&(r="...");var i,o,a=Ht(r,n),c=_(t)?t:et(t),l=e,u=[];if(Ht(t,n)<=e)return t;for(;i=c.substr(0,16),!((o=Ht(i,n))+a>l&&o>l);)if(u.push(i),l-=o,!(c=c.substr(16)))return u.join("");for(;i=c.substr(0,1),!((o=Ht(i,n))+a>l);)if(u.push(i),l-=o,!(c=c.substr(1)))return u.join("");return""+u.join("")+r},Vt=function(){function t(){this.map={}}return t.prototype.has=function(t){return void 0!==this.map[t]},t.prototype.get=function(t,e){var n=this.map[t];return void 0===n?e:n},t.prototype.set=function(t,e){this.map[t]=e},t.prototype.clear=function(){this.map={}},t.prototype.delete=function(t){delete this.map[t]},t.prototype.size=function(){return Object.keys(this.map).length},t}()},53746:function(t){var e=function(){"use strict";function t(t,e){return null!=e&&t instanceof e}var e,n,r;try{e=Map}catch(c){e=function(){}}try{n=Set}catch(c){n=function(){}}try{r=Promise}catch(c){r=function(){}}function i(o,c,l,u,s){"object"==typeof c&&(l=c.depth,u=c.prototype,s=c.includeNonEnumerable,c=c.circular);var f=[],h=[],d="undefined"!=typeof Buffer;return void 0===c&&(c=!0),void 0===l&&(l=1/0),function o(l,p){if(null===l)return null;if(0===p)return l;var v,g;if("object"!=typeof l)return l;if(t(l,e))v=new e;else if(t(l,n))v=new n;else if(t(l,r))v=new r((function(t,e){l.then((function(e){t(o(e,p-1))}),(function(t){e(o(t,p-1))}))}));else if(i.__isArray(l))v=[];else if(i.__isRegExp(l))v=new RegExp(l.source,a(l)),l.lastIndex&&(v.lastIndex=l.lastIndex);else if(i.__isDate(l))v=new Date(l.getTime());else{if(d&&Buffer.isBuffer(l))return v=Buffer.allocUnsafe?Buffer.allocUnsafe(l.length):new Buffer(l.length),l.copy(v),v;t(l,Error)?v=Object.create(l):void 0===u?(g=Object.getPrototypeOf(l),v=Object.create(g)):(v=Object.create(u),g=u)}if(c){var m=f.indexOf(l);if(-1!=m)return h[m];f.push(l),h.push(v)}for(var y in t(l,e)&&l.forEach((function(t,e){var n=o(e,p-1),r=o(t,p-1);v.set(n,r)})),t(l,n)&&l.forEach((function(t){var e=o(t,p-1);v.add(e)})),l){var b;g&&(b=Object.getOwnPropertyDescriptor(g,y)),b&&null==b.set||(v[y]=o(l[y],p-1))}if(Object.getOwnPropertySymbols){var x=Object.getOwnPropertySymbols(l);for(y=0;y>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===n?S(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===n?S(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=f.exec(t))?new O(e[1],e[2],e[3],1):(e=h.exec(t))?new O(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=d.exec(t))?S(e[1],e[2],e[3],e[4]):(e=p.exec(t))?S(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=v.exec(t))?D(e[1],e[2]/100,e[3]/100,1):(e=g.exec(t))?D(e[1],e[2]/100,e[3]/100,e[4]):m.hasOwnProperty(t)?w(m[t]):"transparent"===t?new O(NaN,NaN,NaN,0):null}function w(t){return new O(t>>16&255,t>>8&255,255&t,1)}function S(t,e,n,r){return r<=0&&(t=e=n=NaN),new O(t,e,n,r)}function k(t){return t instanceof i||(t=x(t)),t?new O((t=t.rgb()).r,t.g,t.b,t.opacity):new O}function C(t,e,n,r){return 1===arguments.length?k(t):new O(t,e,n,null==r?1:r)}function O(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}function E(){return"#".concat(_(this.r)).concat(_(this.g)).concat(_(this.b))}function M(){var t=A(this.opacity);return"".concat(1===t?"rgb(":"rgba(").concat(P(this.r),", ").concat(P(this.g),", ").concat(P(this.b)).concat(1===t?")":", ".concat(t,")"))}function A(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function P(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function _(t){return((t=P(t))<16?"0":"")+t.toString(16)}function D(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new F(t,e,n,r)}function T(t){if(t instanceof F)return new F(t.h,t.s,t.l,t.opacity);if(t instanceof i||(t=x(t)),!t)return new F;if(t instanceof F)return t;var e=(t=t.rgb()).r/255,n=t.g/255,r=t.b/255,o=Math.min(e,n,r),a=Math.max(e,n,r),c=NaN,l=a-o,u=(a+o)/2;return l?(c=e===a?(n-r)/l+6*(n0&&u<1?0:c,new F(c,l,u,t.opacity)}function Z(t,e,n,r){return 1===arguments.length?T(t):new F(t,e,n,null==r?1:r)}function F(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}function j(t){return(t=(t||0)%360)<0?t+360:t}function I(t){return Math.max(0,Math.min(1,t||0))}function R(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}(0,r.Z)(i,x,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:y,formatHex:y,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return T(this).formatHsl()},formatRgb:b,toString:b}),(0,r.Z)(O,C,(0,r.l)(i,{brighter:function(t){return t=null==t?a:Math.pow(a,t),new O(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?o:Math.pow(o,t),new O(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},clamp:function(){return new O(P(this.r),P(this.g),P(this.b),A(this.opacity))},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:E,formatHex:E,formatHex8:function(){return"#".concat(_(this.r)).concat(_(this.g)).concat(_(this.b)).concat(_(255*(isNaN(this.opacity)?1:this.opacity)))},formatRgb:M,toString:M})),(0,r.Z)(F,Z,(0,r.l)(i,{brighter:function(t){return t=null==t?a:Math.pow(a,t),new F(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?o:Math.pow(o,t),new F(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new O(R(t>=240?t-240:t+120,i,r),R(t,i,r),R(t<120?t+240:t-120,i,r),this.opacity)},clamp:function(){return new F(j(this.h),I(this.s),I(this.l),A(this.opacity))},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=A(this.opacity);return"".concat(1===t?"hsl(":"hsla(").concat(j(this.h),", ").concat(100*I(this.s),"%, ").concat(100*I(this.l),"%").concat(1===t?")":", ".concat(t,")"))}}))},2077:function(t,e,n){"use strict";function r(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function i(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}n.d(e,{Z:function(){return r},l:function(){return i}})},79739:function(t,e,n){"use strict";n.d(e,{M:function(){return a},Z:function(){return o}});var r=n(23713),i=n(3256);function o(t,e){return((0,i.v)(e)?i.Z:a)(t,e)}function a(t,e){var n,i=e?e.length:0,o=t?Math.min(i,t.length):0,a=new Array(o),c=new Array(i);for(n=0;n=1?(n=1,e-1):Math.floor(n*e),o=t[i],a=t[i+1],c=i>0?t[i-1]:2*o-a,l=i180||n<-180?n-360*Math.round(n/360):n):(0,r.Z)(isNaN(t)?e:t)}function a(t){return 1==(t=+t)?c:function(e,n){return n-e?function(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}(e,n,t):(0,r.Z)(isNaN(e)?n:e)}}function c(t,e){var n=e-t;return n?i(t,n):(0,r.Z)(isNaN(t)?e:t)}},80546:function(t,e){"use strict";e.Z=function(t){return function(){return t}}},66276:function(t,e,n){"use strict";function r(t,e){var n=new Date;return t=+t,e=+e,function(r){return n.setTime(t*(1-r)+e*r),n}}n.d(e,{Z:function(){return r}})},44922:function(t,e,n){"use strict";function r(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}n.d(e,{Z:function(){return r}})},3256:function(t,e,n){"use strict";function r(t,e){e||(e=[]);var n,r=t?Math.min(e.length,t.length):0,i=e.slice();return function(o){for(n=0;nl&&(c=e.slice(l,c),s[u]?s[u]+=c:s[++u]=c),(n=n[0])===(a=a[0])?s[u]?s[u]+=a:s[++u]=a:(s[++u]=null,f.push({i:u,x:(0,r.Z)(n,a)})),l=o.lastIndex;return li&&(t.splice(r+1,0,f),n=!0)}return n}}function f(t,e,n,r){var i=r-t*t,o=Math.abs(i)<1e-24?0:(n-t*e)/i;return[e-o*t,o]}function h(){var t,n=function(t){return t[0]},r=function(t){return t[1]};function i(i){var o=0,l=0,u=0,h=0,d=0,p=0,v=t?+t[0]:1/0,g=t?+t[1]:-1/0;a(i,n,r,(function(e,n){var r=Math.log(n),i=e*n;++o,l+=(n-l)/o,h+=(i-h)/o,p+=(e*i-p)/o,u+=(n*r-u)/o,d+=(i*r-d)/o,t||(eg&&(g=e))}));var m=e(f(h/l,u/l,d/l,p/l),2),y=m[0],b=m[1];y=Math.exp(y);var x=function(t){return y*Math.exp(b*t)},w=s(v,g,x);return w.a=y,w.b=b,w.predict=x,w.rSquared=c(i,n,r,l,x),w}return i.domain=function(e){return arguments.length?(t=e,i):t},i.x=function(t){return arguments.length?(n=t,i):n},i.y=function(t){return arguments.length?(r=t,i):r},i}function d(){var t,n=function(t){return t[0]},r=function(t){return t[1]};function i(i){var o=0,l=0,u=0,s=0,h=0,d=t?+t[0]:1/0,p=t?+t[1]:-1/0;a(i,n,r,(function(e,n){++o,l+=(e-l)/o,u+=(n-u)/o,s+=(e*n-s)/o,h+=(e*e-h)/o,t||(ep&&(p=e))}));var v=e(f(l,u,s,h),2),g=v[0],m=v[1],y=function(t){return m*t+g},b=[[d,y(d)],[p,y(p)]];return b.a=m,b.b=g,b.predict=y,b.rSquared=c(i,n,r,u,y),b}return i.domain=function(e){return arguments.length?(t=e,i):t},i.x=function(t){return arguments.length?(n=t,i):n},i.y=function(t){return arguments.length?(r=t,i):r},i}function p(t){t.sort((function(t,e){return t-e}));var e=t.length/2;return e%1==0?(t[e-1]+t[e])/2:t[Math.floor(e)]}var v=2,g=1e-12;function m(){var t=function(t){return t[0]},n=function(t){return t[1]},r=.3;function i(i){for(var a=e(o(i,t,n,!0),4),c=a[0],l=a[1],u=a[2],s=a[3],h=c.length,d=Math.max(2,~~(r*h)),m=new Float64Array(h),w=new Float64Array(h),S=new Float64Array(h).fill(1),k=-1;++k<=v;){for(var C=[0,d-1],O=0;Oc[A]-E?M:A,_=0,D=0,T=0,Z=0,F=0,j=1/Math.abs(c[P]-E||1),I=M;I<=A;++I){var R=c[I],L=l[I],N=y(Math.abs(E-R)*j)*S[I],B=R*N;_+=N,D+=B,T+=L*N,Z+=L*B,F+=R*B}var z=e(f(D/_,T/_,Z/_,F/_),2),U=z[0],H=z[1];m[O]=U+H*E,w[O]=Math.abs(l[O]-m[O]),b(c,O+1,C)}if(k===v)break;var W=p(w);if(Math.abs(W)=1?g:(G=1-V*V)*G}return x(c,m,u,s)}return i.bandwidth=function(t){return arguments.length?(r=t,i):r},i.x=function(e){return arguments.length?(t=e,i):t},i.y=function(t){return arguments.length?(n=t,i):n},i}function y(t){return(t=1-t*t*t)*t*t}function b(t,e,n){var r=t[e],i=n[0],o=n[1]+1;if(!(o>=t.length))for(;e>i&&t[o]-r<=r-t[i];)n[0]=++i,n[1]=o,++o}function x(t,e,n,r){for(var i,o=t.length,a=[],c=0,l=0,u=[];cg&&(g=e))}));var y=e(f(u,h,d,p),2),b=y[0],x=y[1],w=function(t){return x*Math.log(t)/m+b},S=s(v,g,w);return S.a=x,S.b=b,S.predict=w,S.rSquared=c(o,n,r,h,w),S}return o.domain=function(e){return arguments.length?(t=e,o):t},o.x=function(t){return arguments.length?(n=t,o):n},o.y=function(t){return arguments.length?(r=t,o):r},o.base=function(t){return arguments.length?(i=t,o):i},o}function S(){var t,n=function(t){return t[0]},r=function(t){return t[1]};function i(i){var l,u,f,h,d=e(o(i,n,r),4),p=d[0],v=d[1],g=d[2],m=d[3],y=p.length,b=0,x=0,w=0,S=0,k=0;for(l=0;lM&&(M=e))}));var A=w-b*b,P=b*A-x*x,_=(k*b-S*x)/P,D=(S*A-k*x)/P,T=-_*b,Z=function(t){return _*(t-=g)*t+D*t+T+m},F=s(E,M,Z);return F.a=_,F.b=D-2*_*g,F.c=T-D*g+_*g*g+m,F.predict=Z,F.rSquared=c(i,n,r,C,Z),F}return i.domain=function(e){return arguments.length?(t=e,i):t},i.x=function(t){return arguments.length?(n=t,i):n},i.y=function(t){return arguments.length?(r=t,i):r},i}function k(){var t,n=function(t){return t[0]},r=function(t){return t[1]},i=3;function l(l){if(1===i){var u=d().x(n).y(r).domain(t)(l);return u.coefficients=[u.b,u.a],delete u.a,delete u.b,u}if(2===i){var f=S().x(n).y(r).domain(t)(l);return f.coefficients=[f.c,f.b,f.a],delete f.a,delete f.b,delete f.c,f}var h,p,v,g,m,y=e(o(l,n,r),4),b=y[0],x=y[1],w=y[2],k=y[3],E=b.length,M=[],A=[],P=i+1,_=0,D=0,T=t?+t[0]:1/0,Z=t?+t[1]:-1/0;for(a(l,n,r,(function(e,n){++D,_+=(n-_)/D,t||(eZ&&(Z=e))})),h=0;h=0;--i)for(a=e[i],c=1,l[i]+=a,o=1;o<=i;++o)c*=(i+1-o)/o,l[i-o]+=a*Math.pow(n,o)*c;return l[0]+=r,l}function O(t){var e,n,r,i,o,a=t.length-1,c=[];for(e=0;eMath.abs(t[e][i])&&(i=n);for(r=e;r=e;r--)t[r][n]-=t[r][e]*t[e][n]/t[e][e]}for(n=a-1;n>=0;--n){for(o=0,r=n+1;rg&&(g=e))}));var m=e(f(l,u,h,d),2),y=m[0],b=m[1];y=Math.exp(y);var x=function(t){return y*Math.pow(t,b)},w=s(v,g,x);return w.a=y,w.b=b,w.predict=x,w.rSquared=c(i,n,r,p,x),w}return i.domain=function(e){return arguments.length?(t=e,i):t},i.x=function(t){return arguments.length?(n=t,i):n},i.y=function(t){return arguments.length?(r=t,i):r},i}t.regressionExp=h,t.regressionLinear=d,t.regressionLoess=m,t.regressionLog=w,t.regressionPoly=k,t.regressionPow=E,t.regressionQuad=S,Object.defineProperty(t,"__esModule",{value:!0})}(e)},23537:function(t,e,n){"use strict";n.d(e,{qY:function(){return d}});var r=function(t,e,n){if(n||2===arguments.length)for(var r,i=0,o=e.length;i0)throw"Initial bisect points must have opposite signs";if(0===a)return e;if(0===c)return n;for(var u=0;u=0&&(e=s),Math.abs(l)=v[p-1].fx){var A=!1;if(w.fx>M.fx?(c(S,1+h,x,-h,M),S.fx=t(S),S.fx=1)break;for(g=1;gu+a*o*s||f>=v)p=o;else{if(Math.abs(d)<=-l*s)return o;d*(p-h)>=0&&(p=h),h=o,v=f}return 0}o=o||1,a=a||1e-6,l=l||.1;for(var g=0;g<10;++g){if(c(r.x,1,n.x,o,e),f=r.fx=t(r.x,r.fxprime),d=i(r.fxprime,e),f>u+a*o*s||g&&f>=h)return v(p,o,h);if(Math.abs(d)<=-l*s)return o;if(d>=0)return v(o,p,f);h=f,p=o,o*=2}return o}function s(t,e,n){var r,l,s,f={x:e.slice(),fx:0,fxprime:e.slice()},h={x:e.slice(),fx:0,fxprime:e.slice()},d=e.slice(),p=1;s=(n=n||{}).maxIterations||20*e.length,f.fx=t(f.x,f.fxprime),a(r=f.fxprime.slice(),f.fxprime,-1);for(var v=0;v0&&(i=1/Math.sqrt(i)),t[0]=e[0]*i,t[1]=e[1]*i,t}function h(t,e){return t[0]*e[0]+t[1]*e[1]}function d(t,e,n){var r=e[0],i=e[1];return t[0]=n[0]*r+n[3]*i+n[6],t[1]=n[1]*r+n[4]*i+n[7],t}function p(t,e){var n=t[0],r=t[1],i=e[0],o=e[1],a=Math.sqrt(n*n+r*r)*Math.sqrt(i*i+o*o),c=a&&(n*i+r*o)/a;return Math.acos(Math.min(Math.max(c,-1),1))}function v(t,e){return t[0]===e[0]&&t[1]===e[1]}var g,m,y=o;g=new r.WT(2),r.WT!=Float32Array&&(g[0]=0,g[1]=0),m=g},70080:function(t){"use strict";var e=/("(?:[^\\"]|\\.)*")|[:,]/g;t.exports=function(t,n){var r,i,o;return n=n||{},r=JSON.stringify([1],void 0,void 0===n.indent?2:n.indent).slice(2,-3),i=""===r?1/0:void 0===n.maxLength?80:n.maxLength,o=n.replacer,function t(n,a,c){var l,u,s,f,h,d,p,v,g,m,y,b;if(n&&"function"==typeof n.toJSON&&(n=n.toJSON()),void 0===(y=JSON.stringify(n,o)))return y;if(p=i-a.length-c,y.length<=p&&(g=y.replace(e,(function(t,e){return e||t+" "}))).length<=p)return g;if(null!=o&&(n=JSON.parse(y),o=void 0),"object"==typeof n&&null!==n){if(v=a+r,s=[],u=0,Array.isArray(n))for(m="[",l="]",p=n.length;u0)return[m,r+s.join(",\n"+v),l].join("\n"+a)}return y}(t,"",0)}},62598:function(t){"use strict";var e=t.exports;t.exports.isNumber=function(t){return"number"==typeof t},t.exports.findMin=function(t){if(0===t.length)return 1/0;for(var e=t[0],n=1;n=f.length)){var n=Math.max(e-r,0),i=e,a=Math.min(e+r,f.length-1),c=n-(e-r),u=e+r-a,h=d[-r-1+c]||0,m=d[-r-1+u]||0,y=p/(p-h-m);c>0&&(g+=y*(c-1)*v);var b=Math.max(0,e-r+1);o.inside(0,f.length-1,b)&&(f[b].y+=1*y*v),o.inside(0,f.length-1,i+1)&&(f[i+1].y-=2*y*v),o.inside(0,f.length-1,a+1)&&(f[a+1].y+=1*y*v)}}));var m=g,y=0,b=0;return f.forEach((function(t){y+=t.y,m+=y,t.y=m,b+=m})),b>0&&f.forEach((function(t){t.y/=b})),f},t.exports.getExpectedValueFromPdf=function(t){if(t&&0!==t.length){var e=0;return t.forEach((function(t){e+=t.x*t.y})),e}},t.exports.getXWithLeftTailArea=function(t,e){if(t&&0!==t.length){for(var n=0,r=0,i=0;i=e));i++);return t[r].x}},t.exports.getPerplexity=function(t){if(t&&0!==t.length){var e=0;return t.forEach((function(t){var n=Math.log(t.y);isFinite(n)&&(e+=t.y*n)})),e=-e/r,Math.pow(2,e)}}},45816:function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SensorTabIndex=e.SensorClassName=e.SizeSensorId=void 0;e.SizeSensorId="size-sensor-id";e.SensorClassName="size-sensor-object";e.SensorTabIndex="-1"},17636:function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:60,n=null;return function(){for(var r=this,i=arguments.length,o=new Array(i),a=0;a0&&i[i.length-1])||6!==c[0]&&2!==c[0])){a=0;continue}if(3===c[0]&&(!i||c[1]>i[0]&&c[1]=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function s(t,e){var n="function"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var r,i,o=n.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(c){i={error:c}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a}function f(){for(var t=0,e=0,n=arguments.length;e]*>)/g,s=/\$([$&'`]|\d{1,2})/g;t.exports=function(t,e,n,r,f,h){var d=n+t.length,p=r.length,v=s;return void 0!==f&&(f=i(f),v=u),c(h,v,(function(i,c){var u;switch(a(c,0)){case"$":return"$";case"&":return t;case"`":return l(e,0,n);case"'":return l(e,d);case"<":u=f[l(c,1,-1)];break;default:var s=+c;if(0===s)return i;if(s>p){var h=o(s/10);return 0===h?i:h<=p?void 0===r[h-1]?a(c,1):r[h-1]+a(c,1):i}u=r[s-1]}return void 0===u?"":u}))}},47850:function(t,e,n){"use strict";var r=n(70111),i=n(84326),o=n(5112)("match");t.exports=function(t){var e;return r(t)&&(void 0!==(e=t[o])?!!e:"RegExp"==i(t))}},67066:function(t,e,n){"use strict";var r=n(19670);t.exports=function(){var t=r(this),e="";return t.hasIndices&&(e+="d"),t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.dotAll&&(e+="s"),t.unicode&&(e+="u"),t.unicodeSets&&(e+="v"),t.sticky&&(e+="y"),e}},34706:function(t,e,n){"use strict";var r=n(46916),i=n(92597),o=n(47976),a=n(67066),c=RegExp.prototype;t.exports=function(t){var e=t.flags;return void 0!==e||"flags"in c||i(t,"flags")||!o(c,t)?e:r(a,t)}},41340:function(t,e,n){"use strict";var r=n(70648),i=String;t.exports=function(t){if("Symbol"===r(t))throw TypeError("Cannot convert a Symbol value to a string");return i(t)}},84944:function(t,e,n){"use strict";var r=n(82109),i=n(6790),o=n(47908),a=n(26244),c=n(19303),l=n(65417);r({target:"Array",proto:!0},{flat:function(){var t=arguments.length?arguments[0]:void 0,e=o(this),n=a(e),r=l(e,0);return r.length=i(r,e,e,n,0,void 0===t?1:c(t)),r}})},33792:function(t,e,n){"use strict";n(51223)("flat")},25438:function(t,e,n){"use strict";var r=n(82109),i=Math.hypot,o=Math.abs,a=Math.sqrt;r({target:"Math",stat:!0,arity:2,forced:!!i&&i(1/0,NaN)!==1/0},{hypot:function(t,e){for(var n,r,i=0,c=0,l=arguments.length,u=0;c0?(r=n/u)*r:n;return u===1/0?1/0:u*a(i)}})},68757:function(t,e,n){"use strict";var r=n(82109),i=n(46916),o=n(1702),a=n(84488),c=n(60614),l=n(68554),u=n(47850),s=n(41340),f=n(58173),h=n(34706),d=n(10647),p=n(5112),v=n(31913),g=p("replace"),m=TypeError,y=o("".indexOf),b=o("".replace),x=o("".slice),w=Math.max,S=function(t,e,n){return n>t.length?-1:""===e?n:y(t,e,n)};r({target:"String",proto:!0},{replaceAll:function(t,e){var n,r,o,p,k,C,O,E,M,A=a(this),P=0,_=0,D="";if(!l(t)){if((n=u(t))&&(r=s(a(h(t))),!~y(r,"g")))throw m("`.replaceAll` does not allow non-global regexes");if(o=f(t,g))return i(o,t,A,e);if(v&&n)return b(s(A),t,e)}for(p=s(A),k=s(t),(C=c(e))||(e=s(e)),O=k.length,E=w(1,O),P=S(p,k,0);-1!==P;)M=C?s(e(k,P,p)):d(k,p,P,[],void 0,e),D+=x(p,_,P)+M,_=P+O,P=S(p,k,P+E);return _=0;--i){var o=this.tryEntries[i],a=o.completion;if("root"===o.tryLoc)return r("end");if(o.tryLoc<=this.prev){var c=n.call(o,"catchLoc"),l=n.call(o,"finallyLoc");if(c&&l){if(this.prev=0;--r){var i=this.tryEntries[r];if(i.tryLoc<=this.prev&&n.call(i,"finallyLoc")&&this.prev=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),C(n),f}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var i=r.arg;C(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,n){return this.delegate={iterator:E(t),resultName:e,nextLoc:n},"next"===this.method&&(this.arg=void 0),f}},t}function at(t,e,n,r,i,o,a){try{var c=t[o](a),l=c.value}catch(u){return void n(u)}c.done?e(l):Promise.resolve(l).then(r,i)}function ct(t){return function(){var e=this,n=arguments;return new Promise((function(r,i){var o=t.apply(e,n);function a(t){at(o,r,i,a,c,"next",t)}function c(t){at(o,r,i,a,c,"throw",t)}a(void 0)}))}}var lt=n(32663),ut="".concat("accept acceptCharset accessKey action allowFullScreen allowTransparency\n alt async autoComplete autoFocus autoPlay capture cellPadding cellSpacing challenge\n charSet checked classID className colSpan cols content contentEditable contextMenu\n controls coords crossOrigin data dateTime default defer dir disabled download draggable\n encType form formAction formEncType formMethod formNoValidate formTarget frameBorder\n headers height hidden high href hrefLang htmlFor httpEquiv icon id inputMode integrity\n is keyParams keyType kind label lang list loop low manifest marginHeight marginWidth max maxLength media\n mediaGroup method min minLength multiple muted name noValidate nonce open\n optimum pattern placeholder poster preload radioGroup readOnly rel required\n reversed role rowSpan rows sandbox scope scoped scrolling seamless selected\n shape size sizes span spellCheck src srcDoc srcLang srcSet start step style\n summary tabIndex target title type useMap value width wmode wrap"," ").concat("onCopy onCut onPaste onCompositionEnd onCompositionStart onCompositionUpdate onKeyDown\n onKeyPress onKeyUp onFocus onBlur onChange onInput onSubmit onClick onContextMenu onDoubleClick\n onDrag onDragEnd onDragEnter onDragExit onDragLeave onDragOver onDragStart onDrop onMouseDown\n onMouseEnter onMouseLeave onMouseMove onMouseOut onMouseOver onMouseUp onSelect onTouchCancel\n onTouchEnd onTouchMove onTouchStart onScroll onWheel onAbort onCanPlay onCanPlayThrough\n onDurationChange onEmptied onEncrypted onEnded onError onLoadedData onLoadedMetadata\n onLoadStart onPause onPlay onPlaying onProgress onRateChange onSeeked onSeeking onStalled onSuspend onTimeUpdate onVolumeChange onWaiting onLoad onError").split(/[\s\n]+/),st="aria-",ft="data-";function ht(t,e){return 0===t.indexOf(e)}function dt(t){var e,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];e=!1===n?{aria:!0,data:!0,attr:!0}:!0===n?{aria:!0}:(0,lt.Z)({},n);var r={};return Object.keys(t).forEach((function(n){(e.aria&&("role"===n||ht(n,st))||e.data&&ht(n,ft)||e.attr&&ut.includes(n))&&(r[n]=t[n])})),r}function pt(t){var e=t.responseText||t.response;if(!e)return e;try{return JSON.parse(e)}catch(n){return e}}function vt(t){var e=new XMLHttpRequest;t.onProgress&&e.upload&&(e.upload.onprogress=function(e){e.total>0&&(e.percent=e.loaded/e.total*100),t.onProgress(e)});var n=new FormData;t.data&&Object.keys(t.data).forEach((function(e){var r=t.data[e];Array.isArray(r)?r.forEach((function(t){n.append("".concat(e,"[]"),t)})):n.append(e,r)})),t.file instanceof Blob?n.append(t.filename,t.file,t.file.name):n.append(t.filename,t.file),e.onerror=function(e){t.onError(e)},e.onload=function(){return e.status<200||e.status>=300?t.onError(function(t,e){var n="cannot ".concat(t.method," ").concat(t.action," ").concat(e.status,"'"),r=new Error(n);return r.status=e.status,r.method=t.method,r.url=t.action,r}(t,e),pt(e)):t.onSuccess(pt(e),e)},e.open(t.method,t.action,!0),t.withCredentials&&"withCredentials"in e&&(e.withCredentials=!0);var r=t.headers||{};return null!==r["X-Requested-With"]&&e.setRequestHeader("X-Requested-With","XMLHttpRequest"),Object.keys(r).forEach((function(t){null!==r[t]&&e.setRequestHeader(t,r[t])})),e.send(n),{abort:function(){e.abort()}}}var gt=+new Date,mt=0;function yt(){return"rc-upload-".concat(gt,"-").concat(++mt)}var bt=n(27840),xt=function(t,e){if(t&&e){var n=Array.isArray(e)?e:e.split(","),r=t.name||"",i=t.type||"",o=i.replace(/\/.*$/,"");return n.some((function(t){var e=t.trim();if(/^\*(\/\*)?$/.test(t))return!0;if("."===e.charAt(0)){var n=r.toLowerCase(),a=e.toLowerCase(),c=[a];return".jpg"!==a&&".jpeg"!==a||(c=[".jpg",".jpeg"]),c.some((function(t){return n.endsWith(t)}))}return/\/\*$/.test(e)?o===e.replace(/\/.*$/,""):i===e||!!/^\w+$/.test(e)&&((0,bt.ZP)(!1,"Upload takes an invalidate 'accept' type '".concat(e,"'.Skip for check.")),!0)}))}return!0};var wt=function(t,e,n){var r=function t(r,i){r.path=i||"",r.isFile?r.file((function(t){n(t)&&(r.fullPath&&!t.webkitRelativePath&&(Object.defineProperties(t,{webkitRelativePath:{writable:!0}}),t.webkitRelativePath=r.fullPath.replace(/^\//,""),Object.defineProperties(t,{webkitRelativePath:{writable:!1}})),e([t]))})):r.isDirectory&&function(t,e){var n=t.createReader(),r=[];!function t(){n.readEntries((function(n){var i=Array.prototype.slice.apply(n);r=r.concat(i),i.length?t():e(r)}))}()}(r,(function(e){e.forEach((function(e){t(e,"".concat(i).concat(r.name,"/"))}))}))};t.forEach((function(t){r(t.webkitGetAsEntry())}))},St=["component","prefixCls","className","disabled","id","style","multiple","accept","capture","children","directory","openFileDialogOnClick","onMouseEnter","onMouseLeave"],kt=function(t){(0,et.Z)(n,t);var e=(0,nt.Z)(n);function n(){var t;(0,Q.Z)(this,n);for(var r=arguments.length,i=new Array(r),o=0;o=18&&(ie=ve.createRoot)}catch(F2t){}function be(t){var e=ve.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;e&&"object"===(0,it.Z)(e)&&(e.usingClientEntryPoint=t)}var xe="__rc_react_root__";function we(t,e){ie?function(t,e){be(!0);var n=e[xe]||ie(e);be(!1),n.render(t),e[xe]=n}(t,e):function(t,e){me(t,e)}(t,e)}function Se(t){return ke.apply(this,arguments)}function ke(){return ke=ct(ot().mark((function t(e){return ot().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",Promise.resolve().then((function(){var t;null===(t=e[xe])||void 0===t||t.unmount(),delete e[xe]})));case 1:case"end":return t.stop()}}),t)}))),ke.apply(this,arguments)}function Ce(t){ye(t)}function Oe(t){return Ee.apply(this,arguments)}function Ee(){return(Ee=ct(ot().mark((function t(e){return ot().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(void 0===ie){t.next=2;break}return t.abrupt("return",Se(e));case 2:Ce(e);case 3:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function Me(t){return t&&"#fff"!==t&&"#ffffff"!==t&&"rgb(255, 255, 255)"!==t&&"rgba(255, 255, 255, 1)"!==t&&function(t){var e=(t||"").match(/rgba?\((\d*), (\d*), (\d*)(, [\d.]*)?\)/);return!(e&&e[1]&&e[2]&&e[3]&&e[1]===e[2]&&e[2]===e[3])}(t)&&!/rgba\((?:\d*, ){3}0\)/.test(t)&&"transparent"!==t}var Ae="ant-wave-target";function Pe(t){return Number.isNaN(t)?0:t}var _e=function(t){var e=t.className,n=t.target,r=t.component,i=Z.useRef(null),o=Z.useState(null),a=(0,G.Z)(o,2),c=a[0],l=a[1],u=Z.useState([]),s=(0,G.Z)(u,2),f=s[0],h=s[1],d=Z.useState(0),p=(0,G.Z)(d,2),v=p[0],g=p[1],m=Z.useState(0),y=(0,G.Z)(m,2),b=y[0],x=y[1],w=Z.useState(0),S=(0,G.Z)(w,2),k=S[0],C=S[1],O=Z.useState(0),E=(0,G.Z)(O,2),M=E[0],A=E[1],P=Z.useState(!1),_=(0,G.Z)(P,2),D=_[0],T=_[1],F={left:v,top:b,width:k,height:M,borderRadius:f.map((function(t){return"".concat(t,"px")})).join(" ")};function j(){var t=getComputedStyle(n);l(function(t){var e=getComputedStyle(t),n=e.borderTopColor,r=e.borderColor,i=e.backgroundColor;return Me(n)?n:Me(r)?r:Me(i)?i:null}(n));var e="static"===t.position,r=t.borderLeftWidth,i=t.borderTopWidth;g(e?n.offsetLeft:Pe(-parseFloat(r))),x(e?n.offsetTop:Pe(-parseFloat(i))),C(n.offsetWidth),A(n.offsetHeight);var o=t.borderTopLeftRadius,a=t.borderTopRightRadius,c=t.borderBottomLeftRadius,u=t.borderBottomRightRadius;h([o,a,u,c].map((function(t){return Pe(parseFloat(t))})))}if(c&&(F["--wave-color"]=c),Z.useEffect((function(){if(n){var t,e=(0,pe.Z)((function(){j(),T(!0)}));return"undefined"!=typeof ResizeObserver&&(t=new ResizeObserver(j)).observe(n),function(){pe.Z.cancel(e),null==t||t.disconnect()}}}),[]),!D)return null;var I=("Checkbox"===r||"Radio"===r)&&(null==n?void 0:n.classList.contains(Ae));return Z.createElement(ne.ZP,{visible:!0,motionAppear:!0,motionName:"wave-motion",motionDeadline:5e3,onAppearEnd:function(t,e){var n;if(e.deadline||"opacity"===e.propertyName){var r=null===(n=i.current)||void 0===n?void 0:n.parentElement;Oe(r).then((function(){null==r||r.remove()}))}return!1}},(function(t){var n=t.className;return Z.createElement("div",{ref:i,className:K()(e,{"wave-quick":I},n),style:F})}))},De=function(t,e){var n;if("Checkbox"!==e.component||(null===(n=t.querySelector("input"))||void 0===n?void 0:n.checked)){var r=document.createElement("div");r.style.position="absolute",r.style.left="0px",r.style.top="0px",null==t||t.insertBefore(r,null==t?void 0:t.firstChild),we(Z.createElement(_e,Object.assign({},e,{target:t})),r)}},Te=n(27824);var Ze=function(t){var e=t.children,n=t.disabled,r=t.component,i=(0,Z.useContext)(Dt.E_).getPrefixCls,o=(0,Z.useRef)(null),a=i("wave"),c=he(a),l=(0,G.Z)(c,2)[1],u=function(t,e,n){var r=Z.useContext(Dt.E_).wave,i=(0,Te.Z)(),o=(0,G.Z)(i,3),a=o[1],c=o[2],l=(0,de.Z)((function(i){var o=t.current;if(!(null==r?void 0:r.disabled)&&o){var l=o.querySelector(".".concat(Ae))||o;((r||{}).showEffect||De)(l,{className:e,token:a,component:n,event:i,hashId:c})}})),u=Z.useRef();return function(t){pe.Z.cancel(u.current),u.current=(0,pe.Z)((function(){l(t)}))}}(o,K()(a,l),r);if(Z.useEffect((function(){var t=o.current;if(t&&1===t.nodeType&&!n){var e=function(e){!ue(e.target)||!t.getAttribute||t.getAttribute("disabled")||t.disabled||t.className.includes("disabled")||t.className.includes("-leave")||u(e)};return t.addEventListener("click",e,!0),function(){t.removeEventListener("click",e,!0)}}}),[n]),!Z.isValidElement(e))return null!=e?e:null;var s=(0,le.Yr)(e)?(0,le.sQ)(e.ref,o):o;return(0,ae.Tm)(e,{ref:s})},Fe=n(4363),je=n(11786),Ie=Z.createContext(null),Re=function(t,e){var n=Z.useContext(Ie),r=Z.useMemo((function(){var r;if(!n)return"";var i=n.compactDirection,o=n.isFirstItem,a=n.isLastItem,c="vertical"===i?"-vertical-":"-";return K()("".concat(t,"-compact").concat(c,"item"),(r={},(0,V.Z)(r,"".concat(t,"-compact").concat(c,"first-item"),o),(0,V.Z)(r,"".concat(t,"-compact").concat(c,"last-item"),a),(0,V.Z)(r,"".concat(t,"-compact").concat(c,"item-rtl"),"rtl"===e),r))}),[t,e,n]);return{compactSize:null==n?void 0:n.compactSize,compactDirection:null==n?void 0:n.compactDirection,compactItemClassnames:r}},Le=function(t){var e=t.children;return Z.createElement(Ie.Provider,{value:null},e)},Ne=(0,Z.forwardRef)((function(t,e){var n=t.className,r=t.style,i=t.children,o=t.prefixCls,a=K()("".concat(o,"-icon"),n);return Z.createElement("span",{ref:e,className:a,style:r},i)})),Be=Ne,ze=(0,Z.forwardRef)((function(t,e){var n=t.prefixCls,r=t.className,i=t.style,o=t.iconClassName,a=K()("".concat(n,"-loading-icon"),r);return Z.createElement(Be,{prefixCls:n,className:a,style:i,ref:e},Z.createElement(Yt,{className:o}))})),Ue=function(){return{width:0,opacity:0,transform:"scale(0)"}},He=function(t){return{width:t.scrollWidth,opacity:1,transform:"scale(1)"}},We=function(t){var e=t.prefixCls,n=t.loading,r=t.existIcon,i=t.className,o=t.style,a=!!n;return r?Z.createElement(ze,{prefixCls:e,className:i,style:o}):Z.createElement(ne.ZP,{visible:a,motionName:"".concat(e,"-loading-icon-motion"),removeOnLeave:!0,onAppearStart:Ue,onAppearActive:He,onEnterStart:Ue,onEnterActive:He,onLeaveStart:He,onLeaveActive:Ue},(function(t,n){var r=t.className,a=t.style;return Z.createElement(ze,{prefixCls:e,className:i,style:Object.assign(Object.assign({},o),a),ref:n,iconClassName:r})}))},Ve=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(t);i1&&void 0!==arguments[1]?arguments[1]:{focus:!0},n=t.componentCls,r="".concat(n,"-compact");return(0,V.Z)({},r,Object.assign(Object.assign({},function(t,e,n){var r,i=n.focusElCls,o=n.focus,a=n.borderElCls?"> *":"",c=["hover",o?"focus":null,"active"].filter(Boolean).map((function(t){return"&:".concat(t," ").concat(a)})).join(",");return r={},(0,V.Z)(r,"&-item:not(".concat(e,"-last-item)"),{marginInlineEnd:-t.lineWidth}),(0,V.Z)(r,"&-item",Object.assign(Object.assign((0,V.Z)({},c,{zIndex:2}),i?(0,V.Z)({},"&".concat(i),{zIndex:2}):{}),(0,V.Z)({},"&[disabled] ".concat(a),{zIndex:0}))),r}(t,r,e)),function(t,e,n){var r,i=n.borderElCls,o=i?"> ".concat(i):"";return r={},(0,V.Z)(r,"&-item:not(".concat(e,"-first-item):not(").concat(e,"-last-item) ").concat(o),{borderRadius:0}),(0,V.Z)(r,"&-item:not(".concat(e,"-last-item)").concat(e,"-first-item"),(0,V.Z)({},"& ".concat(o,", &").concat(t,"-sm ").concat(o,", &").concat(t,"-lg ").concat(o),{borderStartEndRadius:0,borderEndEndRadius:0})),(0,V.Z)(r,"&-item:not(".concat(e,"-first-item)").concat(e,"-last-item"),(0,V.Z)({},"& ".concat(o,", &").concat(t,"-sm ").concat(o,", &").concat(t,"-lg ").concat(o),{borderStartStartRadius:0,borderEndStartRadius:0})),r}(n,r,e)))}function en(t){var e,n,r,i="".concat(t.componentCls,"-compact-vertical");return(0,V.Z)({},i,Object.assign(Object.assign({},function(t,e){var n;return n={},(0,V.Z)(n,"&-item:not(".concat(e,"-last-item)"),{marginBottom:-t.lineWidth}),(0,V.Z)(n,"&-item",{"&:hover,&:focus,&:active":{zIndex:2},"&[disabled]":{zIndex:0}}),n}(t,i)),(e=t.componentCls,n=i,r={},(0,V.Z)(r,"&-item:not(".concat(n,"-first-item):not(").concat(n,"-last-item)"),{borderRadius:0}),(0,V.Z)(r,"&-item".concat(n,"-first-item:not(").concat(n,"-last-item)"),(0,V.Z)({},"&, &".concat(e,"-sm, &").concat(e,"-lg"),{borderEndEndRadius:0,borderEndStartRadius:0})),(0,V.Z)(r,"&-item".concat(n,"-last-item:not(").concat(n,"-first-item)"),(0,V.Z)({},"&, &".concat(e,"-sm, &").concat(e,"-lg"),{borderStartStartRadius:0,borderStartEndRadius:0})),r)))}var nn=n(85146),rn=function(t,e){return(0,V.Z)({},"> span, > ".concat(t),{"&:not(:last-child)":(0,V.Z)({},"&, & > ".concat(t),{"&:not(:disabled)":{borderInlineEndColor:e}}),"&:not(:first-child)":(0,V.Z)({},"&, & > ".concat(t),{"&:not(:disabled)":{borderInlineStartColor:e}})})},on=function(t){var e,n,r=t.componentCls,i=t.fontSize,o=t.lineWidth,a=t.colorPrimaryHover,c=t.colorErrorHover;return(0,V.Z)({},"".concat(r,"-group"),[(n={position:"relative",display:"inline-flex"},(0,V.Z)(n,"> span, > ".concat(r),{"&:not(:last-child)":(0,V.Z)({},"&, & > ".concat(r),{borderStartEndRadius:0,borderEndEndRadius:0}),"&:not(:first-child)":(0,V.Z)({marginInlineStart:-o},"&, & > ".concat(r),{borderStartStartRadius:0,borderEndStartRadius:0})}),(0,V.Z)(n,r,(e={position:"relative",zIndex:1},(0,V.Z)(e,"&:hover,\n &:focus,\n &:active",{zIndex:2}),(0,V.Z)(e,"&[disabled]",{zIndex:0}),e)),(0,V.Z)(n,"".concat(r,"-icon-only"),{fontSize:i}),n),rn("".concat(r,"-primary"),a),rn("".concat(r,"-danger"),c)])},an=function(t){var e,n=t.componentCls,r=t.iconCls,i=t.buttonFontWeight;return(0,V.Z)({},n,(e={outline:"none",position:"relative",display:"inline-block",fontWeight:i,whiteSpace:"nowrap",textAlign:"center",backgroundImage:"none",backgroundColor:"transparent",border:"".concat(t.lineWidth,"px ").concat(t.lineType," transparent"),cursor:"pointer",transition:"all ".concat(t.motionDurationMid," ").concat(t.motionEaseInOut),userSelect:"none",touchAction:"manipulation",lineHeight:t.lineHeight,color:t.colorText,"&:disabled > *":{pointerEvents:"none"},"> span":{display:"inline-block"}},(0,V.Z)(e,"".concat(n,"-icon"),{lineHeight:0}),(0,V.Z)(e,"> ".concat(r," + span, > span + ").concat(r),{marginInlineStart:t.marginXS}),(0,V.Z)(e,"&:not(".concat(n,"-icon-only) > ").concat(n,"-icon"),(0,V.Z)({},"&".concat(n,"-loading-icon, &:not(:last-child)"),{marginInlineEnd:t.marginXS})),(0,V.Z)(e,"> a",{color:"currentColor"}),(0,V.Z)(e,"&:not(:disabled)",Object.assign({},(0,Qe.Qy)(t))),(0,V.Z)(e,"&-icon-only".concat(n,"-compact-item"),{flex:"none"}),(0,V.Z)(e,"&-compact-item".concat(n,"-primary"),(0,V.Z)({},"&:not([disabled]) + ".concat(n,"-compact-item").concat(n,"-primary:not([disabled])"),{position:"relative","&:before":{position:"absolute",top:-t.lineWidth,insetInlineStart:-t.lineWidth,display:"inline-block",width:t.lineWidth,height:"calc(100% + ".concat(2*t.lineWidth,"px)"),backgroundColor:t.colorPrimaryHover,content:'""'}})),(0,V.Z)(e,"&-compact-vertical-item",(0,V.Z)({},"&".concat(n,"-primary"),(0,V.Z)({},"&:not([disabled]) + ".concat(n,"-compact-vertical-item").concat(n,"-primary:not([disabled])"),{position:"relative","&:before":{position:"absolute",top:-t.lineWidth,insetInlineStart:-t.lineWidth,display:"inline-block",width:"calc(100% + ".concat(2*t.lineWidth,"px)"),height:t.lineWidth,backgroundColor:t.colorPrimaryHover,content:'""'}}))),e))},cn=function(t,e,n){return(0,V.Z)({},"&:not(:disabled):not(".concat(t,"-disabled)"),{"&:hover":e,"&:active":n})},ln=function(t){return{minWidth:t.controlHeight,paddingInlineStart:0,paddingInlineEnd:0,borderRadius:"50%"}},un=function(t){return{borderRadius:t.controlHeight,paddingInlineStart:t.controlHeight/2,paddingInlineEnd:t.controlHeight/2}},sn=function(t,e,n,r,i,o,a){return(0,V.Z)({},"&".concat(t,"-background-ghost"),Object.assign(Object.assign({color:e||void 0,backgroundColor:"transparent",borderColor:n||void 0,boxShadow:"none"},cn(t,Object.assign({backgroundColor:"transparent"},o),Object.assign({backgroundColor:"transparent"},a))),{"&:disabled":{cursor:"not-allowed",color:r||void 0,borderColor:i||void 0}}))},fn=function(t){return(0,V.Z)({},"&:disabled, &".concat(t.componentCls,"-disabled"),Object.assign({},function(t){return{cursor:"not-allowed",borderColor:t.colorBorder,color:t.colorTextDisabled,backgroundColor:t.colorBgContainerDisabled,boxShadow:"none"}}(t)))},hn=function(t){return Object.assign({},fn(t))},dn=function(t){return(0,V.Z)({},"&:disabled, &".concat(t.componentCls,"-disabled"),{cursor:"not-allowed",color:t.colorTextDisabled})},pn=function(t){return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},hn(t)),{backgroundColor:t.colorBgContainer,borderColor:t.colorBorder,boxShadow:"0 ".concat(t.controlOutlineWidth,"px 0 ").concat(t.controlTmpOutline)}),cn(t.componentCls,{color:t.colorPrimaryHover,borderColor:t.colorPrimaryHover},{color:t.colorPrimaryActive,borderColor:t.colorPrimaryActive})),sn(t.componentCls,t.colorBgContainer,t.colorBgContainer,t.colorTextDisabled,t.colorBorder)),(0,V.Z)({},"&".concat(t.componentCls,"-dangerous"),Object.assign(Object.assign(Object.assign({color:t.colorError,borderColor:t.colorError},cn(t.componentCls,{color:t.colorErrorHover,borderColor:t.colorErrorBorderHover},{color:t.colorErrorActive,borderColor:t.colorErrorActive})),sn(t.componentCls,t.colorError,t.colorError,t.colorTextDisabled,t.colorBorder)),fn(t))))},vn=function(t){var e,n=t.componentCls;return e={},(0,V.Z)(e,"".concat(n,"-default"),pn(t)),(0,V.Z)(e,"".concat(n,"-primary"),function(t){return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},hn(t)),{color:t.colorTextLightSolid,backgroundColor:t.colorPrimary,boxShadow:"0 ".concat(t.controlOutlineWidth,"px 0 ").concat(t.controlOutline)}),cn(t.componentCls,{color:t.colorTextLightSolid,backgroundColor:t.colorPrimaryHover},{color:t.colorTextLightSolid,backgroundColor:t.colorPrimaryActive})),sn(t.componentCls,t.colorPrimary,t.colorPrimary,t.colorTextDisabled,t.colorBorder,{color:t.colorPrimaryHover,borderColor:t.colorPrimaryHover},{color:t.colorPrimaryActive,borderColor:t.colorPrimaryActive})),(0,V.Z)({},"&".concat(t.componentCls,"-dangerous"),Object.assign(Object.assign(Object.assign({backgroundColor:t.colorError,boxShadow:"0 ".concat(t.controlOutlineWidth,"px 0 ").concat(t.colorErrorOutline)},cn(t.componentCls,{backgroundColor:t.colorErrorHover},{backgroundColor:t.colorErrorActive})),sn(t.componentCls,t.colorError,t.colorError,t.colorTextDisabled,t.colorBorder,{color:t.colorErrorHover,borderColor:t.colorErrorHover},{color:t.colorErrorActive,borderColor:t.colorErrorActive})),fn(t))))}(t)),(0,V.Z)(e,"".concat(n,"-dashed"),function(t){return Object.assign(Object.assign({},pn(t)),{borderStyle:"dashed"})}(t)),(0,V.Z)(e,"".concat(n,"-link"),function(t){return Object.assign(Object.assign(Object.assign({color:t.colorLink},cn(t.componentCls,{color:t.colorLinkHover},{color:t.colorLinkActive})),dn(t)),(0,V.Z)({},"&".concat(t.componentCls,"-dangerous"),Object.assign(Object.assign({color:t.colorError},cn(t.componentCls,{color:t.colorErrorHover},{color:t.colorErrorActive})),dn(t))))}(t)),(0,V.Z)(e,"".concat(n,"-text"),function(t){return Object.assign(Object.assign(Object.assign({},cn(t.componentCls,{color:t.colorText,backgroundColor:t.colorBgTextHover},{color:t.colorText,backgroundColor:t.colorBgTextActive})),dn(t)),(0,V.Z)({},"&".concat(t.componentCls,"-dangerous"),Object.assign(Object.assign({color:t.colorError},dn(t)),cn(t.componentCls,{color:t.colorErrorHover,backgroundColor:t.colorErrorBg},{color:t.colorErrorHover,backgroundColor:t.colorErrorBg}))))}(t)),(0,V.Z)(e,"".concat(n,"-ghost"),sn(t.componentCls,t.colorBgContainer,t.colorBgContainer,t.colorTextDisabled,t.colorBorder)),e},gn=function(t){var e,n,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",i=t.componentCls,o=t.controlHeight,a=t.fontSize,c=t.lineHeight,l=t.lineWidth,u=t.borderRadius,s=t.buttonPaddingHorizontal,f=t.iconCls,h=Math.max(0,(o-a*c)/2-l),d=s-l,p="".concat(i,"-icon-only");return[(0,V.Z)({},"".concat(i).concat(r),(n={fontSize:a,height:o,padding:"".concat(h,"px ").concat(d,"px"),borderRadius:u},(0,V.Z)(n,"&".concat(p),(e={width:o,paddingInlineStart:0,paddingInlineEnd:0},(0,V.Z)(e,"&".concat(i,"-round"),{width:"auto"}),(0,V.Z)(e,f,{fontSize:t.buttonIconOnlyFontSize}),e)),(0,V.Z)(n,"&".concat(i,"-loading"),{opacity:t.opacityLoading,cursor:"default"}),(0,V.Z)(n,"".concat(i,"-loading-icon"),{transition:"width ".concat(t.motionDurationSlow," ").concat(t.motionEaseInOut,", opacity ").concat(t.motionDurationSlow," ").concat(t.motionEaseInOut)}),n)),(0,V.Z)({},"".concat(i).concat(i,"-circle").concat(r),ln(t)),(0,V.Z)({},"".concat(i).concat(i,"-round").concat(r),un(t))]},mn=function(t){return gn(t)},yn=function(t){var e=(0,nn.TS)(t,{controlHeight:t.controlHeightSM,padding:t.paddingXS,buttonPaddingHorizontal:8,borderRadius:t.borderRadiusSM,buttonIconOnlyFontSize:t.fontSizeLG-2});return gn(e,"".concat(t.componentCls,"-sm"))},bn=function(t){var e=(0,nn.TS)(t,{controlHeight:t.controlHeightLG,fontSize:t.fontSizeLG,borderRadius:t.borderRadiusLG,buttonIconOnlyFontSize:t.fontSizeLG+2});return gn(e,"".concat(t.componentCls,"-lg"))},xn=function(t){var e=t.componentCls;return(0,V.Z)({},e,(0,V.Z)({},"&".concat(e,"-block"),{width:"100%"}))},wn=(0,se.Z)("Button",(function(t){var e=t.controlTmpOutline,n=t.paddingContentHorizontal,r=(0,nn.TS)(t,{colorOutlineDefault:e,buttonPaddingHorizontal:n,buttonIconOnlyFontSize:t.fontSizeLG,buttonFontWeight:400});return[an(r),yn(r),mn(r),bn(r),xn(r),vn(r),on(r),tn(t),en(t)]})),Sn=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(t);i0?t=setTimeout((function(){t=null,$(!0)}),W.delay):$(W.loading),function(){t&&(clearTimeout(t),t=null)}}),[W]),(0,Z.useEffect)((function(){if(rt&&rt.current&&!1!==T){var t=rt.current.textContent;it&&Ye(t)?tt||et(!0):tt&&et(!1)}}),[rt]);var ot=function(e){var n=t.onClick;Y||U?e.preventDefault():null==n||n(e)},at=!1!==T,ct=Re(I,F),lt=ct.compactSize,ut=ct.compactItemClassnames,st={large:"lg",small:"sm",middle:void 0},ft=(0,Fe.Z)((function(t){var e,n;return null!==(n=null!==(e=null!=d?d:lt)&&void 0!==e?e:H)&&void 0!==n?n:t})),ht=ft&&st[ft]||"",dt=Y?"loading":b,pt=(0,ce.Z)(P,["navigate"]),vt=K()(I,B,(n={},(0,V.Z)(n,"".concat(I,"-").concat(h),"default"!==h&&h),(0,V.Z)(n,"".concat(I,"-").concat(u),u),(0,V.Z)(n,"".concat(I,"-").concat(ht),ht),(0,V.Z)(n,"".concat(I,"-icon-only"),!y&&0!==y&&!!dt),(0,V.Z)(n,"".concat(I,"-background-ghost"),w&&!Ke(u)),(0,V.Z)(n,"".concat(I,"-loading"),Y),(0,V.Z)(n,"".concat(I,"-two-chinese-chars"),tt&&at&&!Y),(0,V.Z)(n,"".concat(I,"-block"),k),(0,V.Z)(n,"".concat(I,"-dangerous"),!!s),(0,V.Z)(n,"".concat(I,"-rtl"),"rtl"===F),n),ut,g,m,null==j?void 0:j.className),gt=Object.assign(Object.assign({},null==j?void 0:j.style),A),mt=K()(null==E?void 0:E.icon,null===(r=null==j?void 0:j.classNames)||void 0===r?void 0:r.icon),yt=Object.assign(Object.assign({},(null==p?void 0:p.icon)||{}),(null===(i=null==j?void 0:j.styles)||void 0===i?void 0:i.icon)||{}),bt=b&&!Y?Z.createElement(Be,{prefixCls:I,className:mt,style:yt},b):Z.createElement(We,{existIcon:!!b,prefixCls:I,loading:!!Y}),xt=y||0===y?Je(y,it&&at):null;if(void 0!==pt.href)return N(Z.createElement("a",Object.assign({},pt,{className:K()(vt,(0,V.Z)({},"".concat(I,"-disabled"),U)),style:gt,onClick:ot,ref:rt}),bt,xt));var wt=Z.createElement("button",Object.assign({},P,{type:O,className:vt,style:gt,onClick:ot,disabled:U,ref:rt}),bt,xt);return Ke(u)||(wt=Z.createElement(Ze,{component:"Button",disabled:!!Y},wt)),N(wt)},On=(0,Z.forwardRef)(Cn);On.Group=Xe,On.__ANT_BUTTON=!0;var En=On;function Mn(t){return Object.assign(Object.assign({},t),{lastModified:t.lastModified,lastModifiedDate:t.lastModifiedDate,name:t.name,size:t.size,type:t.type,uid:t.uid,percent:0,originFileObj:t})}function An(t,e){var n=(0,Y.Z)(e),r=n.findIndex((function(e){return e.uid===t.uid}));return-1===r?n.push(t):n[r]=t,n}function Pn(t,e){var n=void 0!==t.uid?"uid":"name";return e.filter((function(e){return e[n]===t[n]}))[0]}var _n=function(t){return 0===t.indexOf("image/")},Dn=function(t){if(t.type&&!t.thumbUrl)return _n(t.type);var e=t.thumbUrl||t.url||"",n=function(){var t=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").split("/"),e=t[t.length-1].split(/#|\?/)[0];return(/\.[^./\\]*$/.exec(e)||[""])[0]}(e);return!(!/^data:image\//.test(e)&&!/(webp|svg|png|gif|jpg|jpeg|jfif|bmp|dpg|ico|heic|heif)$/i.test(n))||!/^data:/.test(e)&&!n},Tn=200;function Zn(t){return new Promise((function(e){if(t.type&&_n(t.type)){var n=document.createElement("canvas");n.width=Tn,n.height=Tn,n.style.cssText="position: fixed; left: 0; top: 0; width: ".concat(Tn,"px; height: ").concat(Tn,"px; z-index: 9999; display: none;"),document.body.appendChild(n);var r=n.getContext("2d"),i=new Image;if(i.onload=function(){var t=i.width,o=i.height,a=Tn,c=Tn,l=0,u=0;t>o?u=-((c=o*(Tn/t))-a)/2:l=-((a=t*(Tn/o))-c)/2,r.drawImage(i,l,u,a,c);var s=n.toDataURL();document.body.removeChild(n),window.URL.revokeObjectURL(i.src),e(s)},i.crossOrigin="anonymous",t.type.startsWith("image/svg+xml")){var o=new FileReader;o.onload=function(){o.result&&(i.src=o.result)},o.readAsDataURL(t)}else if(t.type.startsWith("image/gif")){var a=new FileReader;a.onload=function(){a.result&&e(a.result)},a.readAsDataURL(t)}else i.src=window.URL.createObjectURL(t)}else e("")}))}var Fn={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z"}}]},name:"delete",theme:"outlined"},jn=function(t,e){return Z.createElement(Wt.Z,(0,J.Z)({},t,{ref:e,icon:Fn}))};var In=Z.forwardRef(jn),Rn={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M505.7 661a8 8 0 0012.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9h-74.1V168c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v338.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.8zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z"}}]},name:"download",theme:"outlined"},Ln=function(t,e){return Z.createElement(Wt.Z,(0,J.Z)({},t,{ref:e,icon:Rn}))};var Nn=Z.forwardRef(Ln),Bn={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M942.2 486.2C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 000 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM512 766c-161.3 0-279.4-81.8-362.7-254C232.6 339.8 350.7 258 512 258c161.3 0 279.4 81.8 362.7 254C791.5 684.2 673.4 766 512 766zm-4-430c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm0 288c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z"}}]},name:"eye",theme:"outlined"},zn=function(t,e){return Z.createElement(Wt.Z,(0,J.Z)({},t,{ref:e,icon:Bn}))};var Un=Z.forwardRef(zn),Hn={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm193.5 301.7l-210.6 292a31.8 31.8 0 01-51.7 0L318.5 484.9c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.2 0 19.9 4.9 25.9 13.3l71.2 98.8 157.2-218c6-8.3 15.6-13.3 25.9-13.3H699c6.5 0 10.3 7.4 6.5 12.7z"}}]},name:"check-circle",theme:"filled"},Wn=function(t,e){return Z.createElement(Wt.Z,(0,J.Z)({},t,{ref:e,icon:Hn}))};var Vn=Z.forwardRef(Wn),Gn={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 00-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z"}}]},name:"check",theme:"outlined"},Xn=function(t,e){return Z.createElement(Wt.Z,(0,J.Z)({},t,{ref:e,icon:Gn}))};var qn=Z.forwardRef(Xn),Yn={icon:{tag:"svg",attrs:{"fill-rule":"evenodd",viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64c247.4 0 448 200.6 448 448S759.4 960 512 960 64 759.4 64 512 264.6 64 512 64zm127.98 274.82h-.04l-.08.06L512 466.75 384.14 338.88c-.04-.05-.06-.06-.08-.06a.12.12 0 00-.07 0c-.03 0-.05.01-.09.05l-45.02 45.02a.2.2 0 00-.05.09.12.12 0 000 .07v.02a.27.27 0 00.06.06L466.75 512 338.88 639.86c-.05.04-.06.06-.06.08a.12.12 0 000 .07c0 .03.01.05.05.09l45.02 45.02a.2.2 0 00.09.05.12.12 0 00.07 0c.02 0 .04-.01.08-.05L512 557.25l127.86 127.87c.04.04.06.05.08.05a.12.12 0 00.07 0c.03 0 .05-.01.09-.05l45.02-45.02a.2.2 0 00.05-.09.12.12 0 000-.07v-.02a.27.27 0 00-.05-.06L557.25 512l127.87-127.86c.04-.04.05-.06.05-.08a.12.12 0 000-.07c0-.03-.01-.05-.05-.09l-45.02-45.02a.2.2 0 00-.09-.05.12.12 0 00-.07 0z"}}]},name:"close-circle",theme:"filled"},$n=function(t,e){return Z.createElement(Wt.Z,(0,J.Z)({},t,{ref:e,icon:Yn}))};var Kn=Z.forwardRef($n),Jn={icon:{tag:"svg",attrs:{"fill-rule":"evenodd",viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M799.86 166.31c.02 0 .04.02.08.06l57.69 57.7c.04.03.05.05.06.08a.12.12 0 010 .06c0 .03-.02.05-.06.09L569.93 512l287.7 287.7c.04.04.05.06.06.09a.12.12 0 010 .07c0 .02-.02.04-.06.08l-57.7 57.69c-.03.04-.05.05-.07.06a.12.12 0 01-.07 0c-.03 0-.05-.02-.09-.06L512 569.93l-287.7 287.7c-.04.04-.06.05-.09.06a.12.12 0 01-.07 0c-.02 0-.04-.02-.08-.06l-57.69-57.7c-.04-.03-.05-.05-.06-.07a.12.12 0 010-.07c0-.03.02-.05.06-.09L454.07 512l-287.7-287.7c-.04-.04-.05-.06-.06-.09a.12.12 0 010-.07c0-.02.02-.04.06-.08l57.7-57.69c.03-.04.05-.05.07-.06a.12.12 0 01.07 0c.03 0 .05.02.09.06L512 454.07l287.7-287.7c.04-.04.06-.05.09-.06a.12.12 0 01.07 0z"}}]},name:"close",theme:"outlined"},Qn=function(t,e){return Z.createElement(Wt.Z,(0,J.Z)({},t,{ref:e,icon:Jn}))};var tr=Z.forwardRef(Qn),er={percent:0,prefixCls:"rc-progress",strokeColor:"#2db7f5",strokeLinecap:"round",strokeWidth:1,trailColor:"#D9D9D9",trailWidth:1,gapPosition:"bottom"},nr=function(){var t=(0,Z.useRef)([]),e=(0,Z.useRef)(null);return(0,Z.useEffect)((function(){var n=Date.now(),r=!1;t.current.forEach((function(t){if(t){r=!0;var i=t.style;i.transitionDuration=".3s, .3s, .3s, .06s",e.current&&n-e.current<100&&(i.transitionDuration="0s, 0s")}})),r&&(e.current=Date.now())})),t.current};var rr=n(82277),ir=n(32034),or=0,ar=(0,ir.Z)();var cr=function(t){var e=Z.useState(),n=(0,rr.Z)(e,2),r=n[0],i=n[1];return Z.useEffect((function(){var t;i("rc_progress_".concat((ar?(t=or,or+=1):t="TEST_OR_SSR",t)))}),[]),t||r},lr=["id","prefixCls","steps","strokeWidth","trailWidth","gapDegree","gapPosition","trailColor","strokeLinecap","style","className","strokeColor","percent"];function ur(t){return+t.replace("%","")}function sr(t){var e=null!=t?t:[];return Array.isArray(e)?e:[e]}var fr=100,hr=function(t,e,n,r,i,o,a,c,l,u){var s=arguments.length>10&&void 0!==arguments[10]?arguments[10]:0,f=n/100*360*((360-o)/360),h=0===o?0:{bottom:0,top:180,left:90,right:-90}[a],d=(100-r)/100*e;return"round"===l&&100!==r&&(d+=u/2)>=e&&(d=e-.01),{stroke:"string"==typeof c?c:void 0,strokeDasharray:"".concat(e,"px ").concat(t),strokeDashoffset:d+s,transform:"rotate(".concat(i+f+h,"deg)"),transformOrigin:"0 0",transition:"stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s",fillOpacity:0}};var dr=function(t){var e,n=(0,lt.Z)((0,lt.Z)({},er),t),r=n.id,i=n.prefixCls,o=n.steps,a=n.strokeWidth,c=n.trailWidth,l=n.gapDegree,u=void 0===l?0:l,s=n.gapPosition,f=n.trailColor,h=n.strokeLinecap,d=n.style,p=n.className,v=n.strokeColor,g=n.percent,m=(0,rt.Z)(n,lr),y=cr(r),b="".concat(y,"-gradient"),x=50-a/2,w=2*Math.PI*x,S=u>0?90+u/2:-90,k=w*((360-u)/360),C="object"===(0,it.Z)(o)?o:{count:o,space:2},O=C.count,E=C.space,M=hr(w,k,0,100,S,u,s,f,h,a),A=sr(g),P=sr(v),_=P.find((function(t){return t&&"object"===(0,it.Z)(t)})),D=nr();return Z.createElement("svg",(0,J.Z)({className:K()("".concat(i,"-circle"),p),viewBox:"".concat(-50," ").concat(-50," ").concat(fr," ").concat(fr),style:d,id:r,role:"presentation"},m),_&&Z.createElement("defs",null,Z.createElement("linearGradient",{id:b,x1:"100%",y1:"0%",x2:"0%",y2:"0%"},Object.keys(_).sort((function(t,e){return ur(t)-ur(e)})).map((function(t,e){return Z.createElement("stop",{key:e,offset:t,stopColor:_[t]})})))),!O&&Z.createElement("circle",{className:"".concat(i,"-circle-trail"),r:x,cx:0,cy:0,stroke:f,strokeLinecap:h,strokeWidth:c||a,style:M}),O?function(){var t=Math.round(O*(A[0]/100)),e=100/O,n=0;return new Array(O).fill(null).map((function(r,o){var c=o<=t-1?P[0]:f,l=c&&"object"===(0,it.Z)(c)?"url(#".concat(b,")"):void 0,h=hr(w,k,n,e,S,u,s,c,"butt",a,E);return n+=100*(k-h.strokeDashoffset+E)/k,Z.createElement("circle",{key:o,className:"".concat(i,"-circle-path"),r:x,cx:0,cy:0,stroke:l,strokeWidth:a,opacity:1,style:h,ref:function(t){D[o]=t}})}))}():(e=0,A.map((function(t,n){var r=P[n]||P[P.length-1],o=r&&"object"===(0,it.Z)(r)?"url(#".concat(b,")"):void 0,c=hr(w,k,e,t,S,u,s,r,h,a);return e+=t,Z.createElement("circle",{key:n,className:"".concat(i,"-circle-path"),r:x,cx:0,cy:0,stroke:o,strokeLinecap:h,strokeWidth:a,opacity:0===t?0:1,style:c,ref:function(t){D[n]=t}})})).reverse()))},pr=Z.createContext(null),vr=n(22517),gr=[];var mr,yr=n(37759);function br(t){var e=t.match(/^(.*)px$/),n=Number(null==e?void 0:e[1]);return Number.isNaN(n)?function(t){if("undefined"==typeof document)return 0;if(t||void 0===mr){var e=document.createElement("div");e.style.width="100%",e.style.height="200px";var n=document.createElement("div"),r=n.style;r.position="absolute",r.top="0",r.left="0",r.pointerEvents="none",r.visibility="hidden",r.width="200px",r.height="150px",r.overflow="hidden",n.appendChild(e),document.body.appendChild(n);var i=e.offsetWidth;n.style.overflow="scroll";var o=e.offsetWidth;i===o&&(o=n.clientWidth),document.body.removeChild(n),mr=i-o}return mr}():n}var xr="rc-util-locker-".concat(Date.now()),wr=0;function Sr(t){var e=!!t,n=Z.useState((function(){return wr+=1,"".concat(xr,"_").concat(wr)})),r=(0,rr.Z)(n,1)[0];(0,vr.Z)((function(){if(e){var t=function(t){if(!("undefined"!=typeof document&&t&&t instanceof Element))return{width:0,height:0};var e=getComputedStyle(t,"::-webkit-scrollbar"),n=e.width,r=e.height;return{width:br(n),height:br(r)}}(document.body).width,n=document.body.scrollHeight>(window.innerHeight||document.documentElement.clientHeight)&&window.innerWidth>document.body.offsetWidth;(0,yr.hq)("\nhtml body {\n overflow-y: hidden;\n ".concat(n?"width: calc(100% - ".concat(t,"px);"):"","\n}"),r)}else(0,yr.jL)(r);return function(){(0,yr.jL)(r)}}),[e,r])}var kr=!1;var Cr=function(t){return!1!==t&&((0,ir.Z)()&&t?"string"==typeof t?document.querySelector(t):"function"==typeof t?t():t:null)},Or=Z.forwardRef((function(t,e){var n=t.open,r=t.autoLock,i=t.getContainer,o=(t.debug,t.autoDestroy),a=void 0===o||o,c=t.children,l=Z.useState(n),u=(0,rr.Z)(l,2),s=u[0],f=u[1],h=s||n;Z.useEffect((function(){(a||n)&&f(n)}),[n,a]);var d=Z.useState((function(){return Cr(i)})),p=(0,rr.Z)(d,2),v=p[0],g=p[1];Z.useEffect((function(){var t=Cr(i);g(null!=t?t:null)}));var m=function(t,e){var n=Z.useState((function(){return(0,ir.Z)()?document.createElement("div"):null})),r=(0,rr.Z)(n,1)[0],i=Z.useRef(!1),o=Z.useContext(pr),a=Z.useState(gr),c=(0,rr.Z)(a,2),l=c[0],u=c[1],s=o||(i.current?void 0:function(t){u((function(e){return[t].concat((0,Y.Z)(e))}))});function f(){r.parentElement||document.body.appendChild(r),i.current=!0}function h(){var t;null===(t=r.parentElement)||void 0===t||t.removeChild(r),i.current=!1}return(0,vr.Z)((function(){return t?o?o(f):f():h(),h}),[t]),(0,vr.Z)((function(){l.length&&(l.forEach((function(t){return t()})),u(gr))}),[l]),[r,s]}(h&&!v),y=(0,rr.Z)(m,2),b=y[0],x=y[1],w=null!=v?v:b;Sr(r&&n&&(0,ir.Z)()&&(w===b||w===document.body));var S=null;c&&(0,le.Yr)(c)&&e&&(S=c.ref);var k=(0,le.x1)(S,e);if(!h||!(0,ir.Z)()||void 0===v)return null;var C,O=!1===w||("boolean"==typeof C&&(kr=C),kr),E=c;return e&&(E=Z.cloneElement(c,{ref:k})),Z.createElement(pr.Provider,{value:x},O?E:(0,Pt.createPortal)(E,w))}));var Er=Or,Mr=n(67714),Ar=function(){if("undefined"!=typeof Map)return Map;function t(t,e){var n=-1;return t.some((function(t,r){return t[0]===e&&(n=r,!0)})),n}return function(){function e(){this.__entries__=[]}return Object.defineProperty(e.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),e.prototype.get=function(e){var n=t(this.__entries__,e),r=this.__entries__[n];return r&&r[1]},e.prototype.set=function(e,n){var r=t(this.__entries__,e);~r?this.__entries__[r][1]=n:this.__entries__.push([e,n])},e.prototype.delete=function(e){var n=this.__entries__,r=t(n,e);~r&&n.splice(r,1)},e.prototype.has=function(e){return!!~t(this.__entries__,e)},e.prototype.clear=function(){this.__entries__.splice(0)},e.prototype.forEach=function(t,e){void 0===e&&(e=null);for(var n=0,r=this.__entries__;n0},t.prototype.connect_=function(){Pr&&!this.connected_&&(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),Zr?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},t.prototype.disconnect_=function(){Pr&&this.connected_&&(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},t.prototype.onTransitionEnd_=function(t){var e=t.propertyName,n=void 0===e?"":e,r=Tr.some((function(t){return!!~n.indexOf(t)}));r&&this.refresh()},t.getInstance=function(){return this.instance_||(this.instance_=new t),this.instance_},t.instance_=null,t}(),jr=function(t,e){for(var n=0,r=Object.keys(e);n0},t}(),Xr="undefined"!=typeof WeakMap?new WeakMap:new Ar,qr=function t(e){if(!(this instanceof t))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var n=Fr.getInstance(),r=new Gr(e,n,this);Xr.set(this,r)};["observe","unobserve","disconnect"].forEach((function(t){qr.prototype[t]=function(){var e;return(e=Xr.get(this))[t].apply(e,arguments)}}));var Yr=void 0!==_r.ResizeObserver?_r.ResizeObserver:qr,$r=new Map;var Kr=new Yr((function(t){t.forEach((function(t){var e,n=t.target;null===(e=$r.get(n))||void 0===e||e.forEach((function(t){return t(n)}))}))}));var Jr=function(t){(0,et.Z)(n,t);var e=(0,nt.Z)(n);function n(){return(0,Q.Z)(this,n),e.apply(this,arguments)}return(0,tt.Z)(n,[{key:"render",value:function(){return this.props.children}}]),n}(Z.Component),Qr=Z.createContext(null);function ti(t,e){var n=t.children,r=t.disabled,i=Z.useRef(null),o=Z.useRef(null),a=Z.useContext(Qr),c="function"==typeof n,l=c?n(i):n,u=Z.useRef({width:-1,height:-1,offsetWidth:-1,offsetHeight:-1}),s=!c&&Z.isValidElement(l)&&(0,le.Yr)(l),f=s?l.ref:null,h=Z.useMemo((function(){return(0,le.sQ)(f,i)}),[f,i]),d=function(){return(0,Mr.Z)(i.current)||(0,Mr.Z)(o.current)};Z.useImperativeHandle(e,(function(){return d()}));var p=Z.useRef(t);p.current=t;var v=Z.useCallback((function(t){var e=p.current,n=e.onResize,r=e.data,i=t.getBoundingClientRect(),o=i.width,c=i.height,l=t.offsetWidth,s=t.offsetHeight,f=Math.floor(o),h=Math.floor(c);if(u.current.width!==f||u.current.height!==h||u.current.offsetWidth!==l||u.current.offsetHeight!==s){var d={width:f,height:h,offsetWidth:l,offsetHeight:s};u.current=d;var v=l===Math.round(o)?o:l,g=s===Math.round(c)?c:s,m=(0,lt.Z)((0,lt.Z)({},d),{},{offsetWidth:v,offsetHeight:g});null==a||a(m,t,r),n&&Promise.resolve().then((function(){n(m,t)}))}}),[]);return Z.useEffect((function(){var t,e,n=d();return n&&!r&&(t=n,e=v,$r.has(t)||($r.set(t,new Set),Kr.observe(t)),$r.get(t).add(e)),function(){return function(t,e){$r.has(t)&&($r.get(t).delete(e),$r.get(t).size||(Kr.unobserve(t),$r.delete(t)))}(n,v)}}),[i.current,r]),Z.createElement(Jr,{ref:o},s?Z.cloneElement(l,{ref:h}):l)}var ei=Z.forwardRef(ti);function ni(t,e){var n=t.children;return("function"==typeof n?[n]:(0,je.Z)(n)).map((function(n,r){var i=(null==n?void 0:n.key)||"".concat("rc-observer-key","-").concat(r);return Z.createElement(ei,(0,J.Z)({},t,{key:i,ref:0===r?e:void 0}),n)}))}var ri=Z.forwardRef(ni);ri.Collection=function(t){var e=t.children,n=t.onBatchResize,r=Z.useRef(0),i=Z.useRef([]),o=Z.useContext(Qr),a=Z.useCallback((function(t,e,a){r.current+=1;var c=r.current;i.current.push({size:t,element:e,data:a}),Promise.resolve().then((function(){c===r.current&&(null==n||n(i.current),i.current=[])})),null==o||o(t,e,a)}),[n,o]);return Z.createElement(Qr.Provider,{value:a},e)};var ii=ri,oi=n(66155);var ai=0;function ci(t){var e=Z.useState("ssr-id"),n=(0,rr.Z)(e,2),r=n[0],i=n[1],o=(0,lt.Z)({},F).useId,a=null==o?void 0:o();return Z.useEffect((function(){if(!o){var t=ai;ai+=1,i("rc_unique_".concat(t))}}),[]),t||(a||r)}var li=function(){if("undefined"==typeof navigator||"undefined"==typeof window)return!1;var t=navigator.userAgent||navigator.vendor||window.opera;return/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(t)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(null==t?void 0:t.substr(0,4))},ui=Z.createContext(null);function si(t){return t?Array.isArray(t)?t:[t]:[]}function fi(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return(arguments.length>2?arguments[2]:void 0)?t[0]===e[0]:t[0]===e[0]&&t[1]===e[1]}function hi(t,e,n,r){return e||(n?{motionName:"".concat(t,"-").concat(n)}:r?{motionName:r}:null)}function di(t){return t.ownerDocument.defaultView}function pi(t){for(var e=[],n=null==t?void 0:t.parentElement,r=["hidden","scroll","clip","auto"];n;){var i=di(n).getComputedStyle(n);[i.overflowX,i.overflowY,i.overflow].some((function(t){return r.includes(t)}))&&e.push(n),n=n.parentElement}return e}function vi(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return Number.isNaN(t)?e:t}function gi(t){return vi(parseFloat(t),0)}function mi(t,e){var n=(0,lt.Z)({},t);return(e||[]).forEach((function(t){if(!(t instanceof HTMLBodyElement)){var e=di(t).getComputedStyle(t),r=e.overflow,i=e.overflowClipMargin,o=e.borderTopWidth,a=e.borderBottomWidth,c=e.borderLeftWidth,l=e.borderRightWidth,u=t.getBoundingClientRect(),s=t.offsetHeight,f=t.clientHeight,h=t.offsetWidth,d=t.clientWidth,p=gi(o),v=gi(a),g=gi(c),m=gi(l),y=vi(Math.round(u.width/h*1e3)/1e3),b=vi(Math.round(u.height/s*1e3)/1e3),x=(h-d-g-m)*y,w=(s-f-p-v)*b,S=p*b,k=v*b,C=g*y,O=m*y,E=0,M=0;if("clip"===r){var A=gi(i);E=A*y,M=A*b}var P=u.x+C-E,_=u.y+S-M,D=P+u.width+2*E-C-O-x,T=_+u.height+2*M-S-k-w;n.left=Math.max(n.left,P),n.top=Math.max(n.top,_),n.right=Math.min(n.right,D),n.bottom=Math.min(n.bottom,T)}})),n}function yi(t){var e="".concat(arguments.length>1&&void 0!==arguments[1]?arguments[1]:0),n=e.match(/^(.*)\%$/);return n?t*(parseFloat(n[1])/100):parseFloat(e)}function bi(t,e){var n=e||[],r=(0,rr.Z)(n,2),i=r[0],o=r[1];return[yi(t.width,i),yi(t.height,o)]}function xi(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return[t[0],t[1]]}function wi(t,e){var n,r=e[0],i=e[1];return n="t"===r?t.y:"b"===r?t.y+t.height:t.y+t.height/2,{x:"l"===i?t.x:"r"===i?t.x+t.width:t.x+t.width/2,y:n}}function Si(t,e){var n={t:"b",b:"t",l:"r",r:"l"};return t.map((function(t,r){return r===e?n[t]||"c":t})).join("")}n(67739);function ki(t){var e=t.prefixCls,n=t.align,r=t.arrow,i=t.arrowPos,o=r||{},a=o.className,c=o.content,l=i.x,u=void 0===l?0:l,s=i.y,f=void 0===s?0:s,h=Z.useRef();if(!n||!n.points)return null;var d={position:"absolute"};if(!1!==n.autoArrow){var p=n.points[0],v=n.points[1],g=p[0],m=p[1],y=v[0],b=v[1];g!==y&&["t","b"].includes(g)?"t"===g?d.top=0:d.bottom=0:d.top=f,m!==b&&["l","r"].includes(m)?"l"===m?d.left=0:d.right=0:d.left=u}return Z.createElement("div",{ref:h,className:K()("".concat(e,"-arrow"),a),style:d},c)}function Ci(t){var e=t.prefixCls,n=t.open,r=t.zIndex,i=t.mask,o=t.motion;return i?Z.createElement(ne.ZP,(0,J.Z)({},o,{motionAppear:!0,visible:n,removeOnLeave:!0}),(function(t){var n=t.className;return Z.createElement("div",{style:{zIndex:r},className:K()("".concat(e,"-mask"),n)})})):null}var Oi=Z.memo((function(t){return t.children}),(function(t,e){return e.cache})),Ei=Z.forwardRef((function(t,e){var n=t.popup,r=t.className,i=t.prefixCls,o=t.style,a=t.target,c=t.onVisibleChanged,l=t.open,u=t.keepDom,s=t.onClick,f=t.mask,h=t.arrow,d=t.arrowPos,p=t.align,v=t.motion,g=t.maskMotion,m=t.forceRender,y=t.getPopupContainer,b=t.autoDestroy,x=t.portal,w=t.zIndex,S=t.onMouseEnter,k=t.onMouseLeave,C=t.onPointerEnter,O=t.ready,E=t.offsetX,M=t.offsetY,A=t.offsetR,P=t.offsetB,_=t.onAlign,D=t.onPrepare,T=t.stretch,F=t.targetWidth,j=t.targetHeight,I="function"==typeof n?n():n,R=l||u,L=(null==y?void 0:y.length)>0,N=Z.useState(!y||!L),B=(0,rr.Z)(N,2),z=B[0],U=B[1];if((0,vr.Z)((function(){!z&&L&&a&&U(!0)}),[z,L,a]),!z)return null;var H="auto",W={left:"-1000vw",top:"-1000vh",right:H,bottom:H};if(O||!l){var V=p.points,G=p._experimental,X=null==G?void 0:G.dynamicInset,q=X&&"r"===V[0][1],Y=X&&"b"===V[0][0];q?(W.right=A,W.left=H):(W.left=E,W.right=H),Y?(W.bottom=P,W.top=H):(W.top=M,W.bottom=H)}var $={};return T&&(T.includes("height")&&j?$.height=j:T.includes("minHeight")&&j&&($.minHeight=j),T.includes("width")&&F?$.width=F:T.includes("minWidth")&&F&&($.minWidth=F)),l||($.pointerEvents="none"),Z.createElement(x,{open:m||R,getContainer:y&&function(){return y(a)},autoDestroy:b},Z.createElement(Ci,{prefixCls:i,open:l,zIndex:w,mask:f,motion:g}),Z.createElement(ii,{onResize:_,disabled:!l},(function(t){return Z.createElement(ne.ZP,(0,J.Z)({motionAppear:!0,motionEnter:!0,motionLeave:!0,removeOnLeave:!1,forceRender:m,leavedClassName:"".concat(i,"-hidden")},v,{onAppearPrepare:D,onEnterPrepare:D,visible:l,onVisibleChanged:function(t){var e;null==v||null===(e=v.onVisibleChanged)||void 0===e||e.call(v,t),c(t)}}),(function(n,a){var c=n.className,u=n.style,f=K()(i,c,r);return Z.createElement("div",{ref:(0,le.sQ)(t,e,a),className:f,style:(0,lt.Z)((0,lt.Z)((0,lt.Z)((0,lt.Z)({"--arrow-x":"".concat(d.x||0,"px"),"--arrow-y":"".concat(d.y||0,"px")},W),$),u),{},{boxSizing:"border-box",zIndex:w},o),onMouseEnter:S,onMouseLeave:k,onPointerEnter:C,onClick:s},h&&Z.createElement(ki,{prefixCls:i,arrow:h,arrowPos:d,align:p}),Z.createElement(Oi,{cache:!l},I))}))})))}));var Mi=Ei,Ai=Z.forwardRef((function(t,e){var n=t.children,r=t.getTriggerDOMNode,i=(0,le.Yr)(n),o=Z.useCallback((function(t){(0,le.mH)(e,r?r(t):t)}),[r]),a=(0,le.x1)(o,n.ref);return i?Z.cloneElement(n,{ref:a}):n}));var Pi=Ai,_i=["prefixCls","children","action","showAction","hideAction","popupVisible","defaultPopupVisible","onPopupVisibleChange","afterPopupVisibleChange","mouseEnterDelay","mouseLeaveDelay","focusDelay","blurDelay","mask","maskClosable","getPopupContainer","forceRender","autoDestroy","destroyPopupOnHide","popup","popupClassName","popupStyle","popupPlacement","builtinPlacements","popupAlign","zIndex","stretch","getPopupClassNameFromAlign","alignPoint","onPopupClick","onPopupAlign","arrow","popupMotion","maskMotion","popupTransitionName","popupAnimation","maskTransitionName","maskAnimation","className","getTriggerDOMNode"];var Di=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Er,e=Z.forwardRef((function(e,n){var r=e.prefixCls,i=void 0===r?"rc-trigger-popup":r,o=e.children,a=e.action,c=void 0===a?"hover":a,l=e.showAction,u=e.hideAction,s=e.popupVisible,f=e.defaultPopupVisible,h=e.onPopupVisibleChange,d=e.afterPopupVisibleChange,p=e.mouseEnterDelay,v=e.mouseLeaveDelay,g=void 0===v?.1:v,m=e.focusDelay,y=e.blurDelay,b=e.mask,x=e.maskClosable,w=void 0===x||x,S=e.getPopupContainer,k=e.forceRender,C=e.autoDestroy,O=e.destroyPopupOnHide,E=e.popup,M=e.popupClassName,A=e.popupStyle,P=e.popupPlacement,_=e.builtinPlacements,D=void 0===_?{}:_,T=e.popupAlign,F=e.zIndex,j=e.stretch,I=e.getPopupClassNameFromAlign,R=e.alignPoint,L=e.onPopupClick,N=e.onPopupAlign,B=e.arrow,z=e.popupMotion,U=e.maskMotion,H=e.popupTransitionName,W=e.popupAnimation,V=e.maskTransitionName,G=e.maskAnimation,X=e.className,q=e.getTriggerDOMNode,$=(0,rt.Z)(e,_i),J=C||O||!1,Q=Z.useState(!1),tt=(0,rr.Z)(Q,2),et=tt[0],nt=tt[1];(0,vr.Z)((function(){nt(li())}),[]);var it=Z.useRef({}),ot=Z.useContext(ui),at=Z.useMemo((function(){return{registerSubPopup:function(t,e){it.current[t]=e,null==ot||ot.registerSubPopup(t,e)}}}),[ot]),ct=ci(),ut=Z.useState(null),st=(0,rr.Z)(ut,2),ft=st[0],ht=st[1],dt=(0,de.Z)((function(t){(0,Mr.S)(t)&&ft!==t&&ht(t),null==ot||ot.registerSubPopup(ct,t)})),pt=Z.useState(null),vt=(0,rr.Z)(pt,2),gt=vt[0],mt=vt[1],yt=(0,de.Z)((function(t){(0,Mr.S)(t)&>!==t&&mt(t)})),bt=Z.Children.only(o),xt=(null==bt?void 0:bt.props)||{},wt={},St=(0,de.Z)((function(t){var e,n,r=gt;return(null==r?void 0:r.contains(t))||(null===(e=(0,oi.A)(r))||void 0===e?void 0:e.host)===t||t===r||(null==ft?void 0:ft.contains(t))||(null===(n=(0,oi.A)(ft))||void 0===n?void 0:n.host)===t||t===ft||Object.values(it.current).some((function(e){return(null==e?void 0:e.contains(t))||t===e}))})),kt=hi(i,z,W,H),Ct=hi(i,U,G,V),Ot=Z.useState(f||!1),Et=(0,rr.Z)(Ot,2),Mt=Et[0],At=Et[1],_t=null!=s?s:Mt,Dt=(0,de.Z)((function(t){void 0===s&&At(t)}));(0,vr.Z)((function(){At(s||!1)}),[s]);var Tt=Z.useRef(_t);Tt.current=_t;var Zt=(0,de.Z)((function(t){(0,Pt.flushSync)((function(){_t!==t&&(Dt(t),null==h||h(t))}))})),Ft=Z.useRef(),jt=function(){clearTimeout(Ft.current)},It=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;jt(),0===e?Zt(t):Ft.current=setTimeout((function(){Zt(t)}),1e3*e)};Z.useEffect((function(){return jt}),[]);var Rt=Z.useState(!1),Lt=(0,rr.Z)(Rt,2),Nt=Lt[0],Bt=Lt[1];(0,vr.Z)((function(t){t&&!_t||Bt(!0)}),[_t]);var zt=Z.useState(null),Ut=(0,rr.Z)(zt,2),Ht=Ut[0],Wt=Ut[1],Vt=Z.useState([0,0]),Gt=(0,rr.Z)(Vt,2),Xt=Gt[0],qt=Gt[1],Yt=function(t){qt([t.clientX,t.clientY])},$t=function(t,e,n,r,i,o,a){var c=Z.useState({ready:!1,offsetX:0,offsetY:0,offsetR:0,offsetB:0,arrowX:0,arrowY:0,scaleX:1,scaleY:1,align:i[r]||{}}),l=(0,rr.Z)(c,2),u=l[0],s=l[1],f=Z.useRef(0),h=Z.useMemo((function(){return e?pi(e):[]}),[e]),d=Z.useRef({});t||(d.current={});var p=(0,de.Z)((function(){if(e&&n&&t){var c,l=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:V,r=S.x+t,i=S.y+e,o=r+F,a=i+Z,c=Math.max(r,n.left),l=Math.max(i,n.top),u=Math.min(o,n.right),s=Math.min(a,n.bottom);return Math.max(0,(u-c)*(s-l))},u=function(){at=S.y+xt,ct=at+Z,ut=S.x+bt,st=ut+F},f=e,p=f.style.left,v=f.style.top,g=f.style.right,m=f.style.bottom,y=f.ownerDocument,b=di(f),x=(0,lt.Z)((0,lt.Z)({},i[r]),o);if(f.style.left="0",f.style.top="0",f.style.right="auto",f.style.bottom="auto",Array.isArray(n))c={x:n[0],y:n[1],width:0,height:0};else{var w=n.getBoundingClientRect();c={x:w.x,y:w.y,width:w.width,height:w.height}}var S=f.getBoundingClientRect(),k=b.getComputedStyle(f),C=k.width,O=k.height,E=y.documentElement,M=E.clientWidth,A=E.clientHeight,P=E.scrollWidth,_=E.scrollHeight,D=E.scrollTop,T=E.scrollLeft,Z=S.height,F=S.width,j=c.height,I=c.width,R={left:0,top:0,right:M,bottom:A},L={left:-T,top:-D,right:P-T,bottom:_-D},N=x.htmlRegion,B="visible",z="visibleFirst";"scroll"!==N&&N!==z&&(N=B);var U=N===z,H=mi(L,h),W=mi(R,h),V=N===B?W:H,G=U?W:V;f.style.left="auto",f.style.top="auto",f.style.right="0",f.style.bottom="0";var X=f.getBoundingClientRect();f.style.left=p,f.style.top=v,f.style.right=g,f.style.bottom=m;var q=vi(Math.round(F/parseFloat(C)*1e3)/1e3),Y=vi(Math.round(Z/parseFloat(O)*1e3)/1e3);if(0===q||0===Y||(0,Mr.S)(n)&&!ue(n))return;var $=x.offset,K=x.targetOffset,J=bi(S,$),Q=(0,rr.Z)(J,2),tt=Q[0],et=Q[1],nt=bi(c,K),rt=(0,rr.Z)(nt,2),it=rt[0],ot=rt[1];c.x-=it,c.y-=ot;var at,ct,ut,st,ft=x.points||[],ht=(0,rr.Z)(ft,2),dt=ht[0],pt=xi(ht[1]),vt=xi(dt),gt=wi(c,pt),mt=wi(S,vt),yt=(0,lt.Z)({},x),bt=gt.x-mt.x+tt,xt=gt.y-mt.y+et,wt=l(bt,xt),St=l(bt,xt,W),kt=wi(c,["t","l"]),Ct=wi(S,["t","l"]),Ot=wi(c,["b","r"]),Et=wi(S,["b","r"]),Mt=x.overflow||{},At=Mt.adjustX,Pt=Mt.adjustY,_t=Mt.shiftX,Dt=Mt.shiftY,Tt=function(t){return"boolean"==typeof t?t:t>=0};u();var Zt=Tt(Pt),Ft=vt[0]===pt[0];if(Zt&&"t"===vt[0]&&(ct>G.bottom||d.current.bt)){var jt=xt;Ft?jt-=Z-j:jt=kt.y-Et.y-et;var It=l(bt,jt),Rt=l(bt,jt,W);It>wt||It===wt&&(!U||Rt>=St)?(d.current.bt=!0,xt=jt,et=-et,yt.points=[Si(vt,0),Si(pt,0)]):d.current.bt=!1}if(Zt&&"b"===vt[0]&&(atwt||Nt===wt&&(!U||Bt>=St)?(d.current.tb=!0,xt=Lt,et=-et,yt.points=[Si(vt,0),Si(pt,0)]):d.current.tb=!1}var zt=Tt(At),Ut=vt[1]===pt[1];if(zt&&"l"===vt[1]&&(st>G.right||d.current.rl)){var Ht=bt;Ut?Ht-=F-I:Ht=kt.x-Et.x-tt;var Wt=l(Ht,xt),Vt=l(Ht,xt,W);Wt>wt||Wt===wt&&(!U||Vt>=St)?(d.current.rl=!0,bt=Ht,tt=-tt,yt.points=[Si(vt,1),Si(pt,1)]):d.current.rl=!1}if(zt&&"r"===vt[1]&&(utwt||Xt===wt&&(!U||qt>=St)?(d.current.lr=!0,bt=Gt,tt=-tt,yt.points=[Si(vt,1),Si(pt,1)]):d.current.lr=!1}u();var Yt=!0===_t?0:_t;"number"==typeof Yt&&(utW.right&&(bt-=st-W.right-tt,c.x>W.right-Yt&&(bt+=c.x-W.right+Yt)));var $t=!0===Dt?0:Dt;"number"==typeof $t&&(atW.bottom&&(xt-=ct-W.bottom-et,c.y>W.bottom-$t&&(xt+=c.y-W.bottom+$t)));var Kt=S.x+bt,Jt=Kt+F,Qt=S.y+xt,te=Qt+Z,ee=c.x,ne=ee+I,re=c.y,ie=re+j,oe=(Math.max(Kt,ee)+Math.min(Jt,ne))/2-Kt,ae=(Math.max(Qt,re)+Math.min(te,ie))/2-Qt;null==a||a(e,yt);var ce=X.right-S.x-(bt+S.width),le=X.bottom-S.y-(xt+S.height);s({ready:!0,offsetX:bt/q,offsetY:xt/Y,offsetR:ce/q,offsetB:le/Y,arrowX:oe/q,arrowY:ae/Y,scaleX:q,scaleY:Y,align:yt})}})),v=function(){s((function(t){return(0,lt.Z)((0,lt.Z)({},t),{},{ready:!1})}))};return(0,vr.Z)(v,[r]),(0,vr.Z)((function(){t||v()}),[t]),[u.ready,u.offsetX,u.offsetY,u.offsetR,u.offsetB,u.arrowX,u.arrowY,u.scaleX,u.scaleY,u.align,function(){f.current+=1;var t=f.current;Promise.resolve().then((function(){f.current===t&&p()}))}]}(_t,ft,R?Xt:gt,P,D,T,N),Kt=(0,rr.Z)($t,11),Jt=Kt[0],Qt=Kt[1],te=Kt[2],ee=Kt[3],ne=Kt[4],re=Kt[5],ie=Kt[6],oe=Kt[7],ae=Kt[8],ce=Kt[9],le=Kt[10],se=function(t,e,n,r){return Z.useMemo((function(){var i=si(null!=n?n:e),o=si(null!=r?r:e),a=new Set(i),c=new Set(o);return t&&(a.has("hover")&&(a.delete("hover"),a.add("click")),c.has("hover")&&(c.delete("hover"),c.add("click"))),[a,c]}),[t,e,n,r])}(et,c,l,u),fe=(0,rr.Z)(se,2),he=fe[0],ve=fe[1],ge=he.has("click"),me=ve.has("click")||ve.has("contextMenu"),ye=(0,de.Z)((function(){Nt||le()}));!function(t,e,n,r,i){(0,vr.Z)((function(){if(t&&e&&n){var o=function(){r(),i()},a=n,c=pi(e),l=pi(a),u=di(a),s=new Set([u].concat((0,Y.Z)(c),(0,Y.Z)(l)));return s.forEach((function(t){t.addEventListener("scroll",o,{passive:!0})})),u.addEventListener("resize",o,{passive:!0}),r(),function(){s.forEach((function(t){t.removeEventListener("scroll",o),u.removeEventListener("resize",o)}))}}}),[t,e,n])}(_t,gt,ft,ye,(function(){Tt.current&&R&&me&&It(!1)})),(0,vr.Z)((function(){ye()}),[Xt,P]),(0,vr.Z)((function(){!_t||null!=D&&D[P]||ye()}),[JSON.stringify(T)]);var be=Z.useMemo((function(){var t=function(t,e,n,r){for(var i=n.points,o=Object.keys(t),a=0;a1?a-1:0),l=1;l1?n-1:0),i=1;i1?n-1:0),i=1;i12?n+2:12;return{dropdownArrowOffset:r,dropdownArrowOffsetVertical:t.limitVerticalRadius?e:r}}function Hi(t,e){return t?e:{}}function Wi(t,e){var n,r,i,o,a=t.componentCls,c=t.sizePopupArrow,l=t.borderRadiusXS,u=t.borderRadiusOuter,s=t.boxShadowPopoverArrow,f=e.colorBg,h=e.contentRadius,d=void 0===h?t.borderRadiusLG:h,p=e.limitVerticalRadius,v=e.arrowDistance,g=void 0===v?0:v,m=e.arrowPlacement,y=void 0===m?{left:!0,right:!0,top:!0,bottom:!0}:m,b=Ui({contentRadius:d,limitVerticalRadius:p}),x=b.dropdownArrowOffsetVertical,w=b.dropdownArrowOffset;return(0,V.Z)({},a,Object.assign(Object.assign(Object.assign(Object.assign((0,V.Z)({},"".concat(a,"-arrow"),[Object.assign(Object.assign({position:"absolute",zIndex:1,display:"block"},Bi(c,l,u,f,s)),{"&:before":{background:f}})]),Hi(!!y.top,(n={},(0,V.Z)(n,["&-placement-top ".concat(a,"-arrow"),"&-placement-topLeft ".concat(a,"-arrow"),"&-placement-topRight ".concat(a,"-arrow")].join(","),{bottom:g,transform:"translateY(100%) rotate(180deg)"}),(0,V.Z)(n,"&-placement-top ".concat(a,"-arrow"),{left:{_skip_check_:!0,value:"50%"},transform:"translateX(-50%) translateY(100%) rotate(180deg)"}),(0,V.Z)(n,"&-placement-topLeft ".concat(a,"-arrow"),{left:{_skip_check_:!0,value:w}}),(0,V.Z)(n,"&-placement-topRight ".concat(a,"-arrow"),{right:{_skip_check_:!0,value:w}}),n))),Hi(!!y.bottom,(r={},(0,V.Z)(r,["&-placement-bottom ".concat(a,"-arrow"),"&-placement-bottomLeft ".concat(a,"-arrow"),"&-placement-bottomRight ".concat(a,"-arrow")].join(","),{top:g,transform:"translateY(-100%)"}),(0,V.Z)(r,"&-placement-bottom ".concat(a,"-arrow"),{left:{_skip_check_:!0,value:"50%"},transform:"translateX(-50%) translateY(-100%)"}),(0,V.Z)(r,"&-placement-bottomLeft ".concat(a,"-arrow"),{left:{_skip_check_:!0,value:w}}),(0,V.Z)(r,"&-placement-bottomRight ".concat(a,"-arrow"),{right:{_skip_check_:!0,value:w}}),r))),Hi(!!y.left,(i={},(0,V.Z)(i,["&-placement-left ".concat(a,"-arrow"),"&-placement-leftTop ".concat(a,"-arrow"),"&-placement-leftBottom ".concat(a,"-arrow")].join(","),{right:{_skip_check_:!0,value:g},transform:"translateX(100%) rotate(90deg)"}),(0,V.Z)(i,"&-placement-left ".concat(a,"-arrow"),{top:{_skip_check_:!0,value:"50%"},transform:"translateY(-50%) translateX(100%) rotate(90deg)"}),(0,V.Z)(i,"&-placement-leftTop ".concat(a,"-arrow"),{top:x}),(0,V.Z)(i,"&-placement-leftBottom ".concat(a,"-arrow"),{bottom:x}),i))),Hi(!!y.right,(o={},(0,V.Z)(o,["&-placement-right ".concat(a,"-arrow"),"&-placement-rightTop ".concat(a,"-arrow"),"&-placement-rightBottom ".concat(a,"-arrow")].join(","),{left:{_skip_check_:!0,value:g},transform:"translateX(-100%) rotate(-90deg)"}),(0,V.Z)(o,"&-placement-right ".concat(a,"-arrow"),{top:{_skip_check_:!0,value:"50%"},transform:"translateY(-50%) translateX(-100%) rotate(-90deg)"}),(0,V.Z)(o,"&-placement-rightTop ".concat(a,"-arrow"),{top:x}),(0,V.Z)(o,"&-placement-rightBottom ".concat(a,"-arrow"),{bottom:x}),o))))}var Vi={left:{points:["cr","cl"]},right:{points:["cl","cr"]},top:{points:["bc","tc"]},bottom:{points:["tc","bc"]},topLeft:{points:["bl","tl"]},leftTop:{points:["tr","tl"]},topRight:{points:["br","tr"]},rightTop:{points:["tl","tr"]},bottomRight:{points:["tr","br"]},rightBottom:{points:["bl","br"]},bottomLeft:{points:["tl","bl"]},leftBottom:{points:["br","bl"]}},Gi={topLeft:{points:["bl","tc"]},leftTop:{points:["tr","cl"]},topRight:{points:["br","tc"]},rightTop:{points:["tl","cr"]},bottomRight:{points:["tr","bc"]},rightBottom:{points:["bl","cr"]},bottomLeft:{points:["tl","bc"]},leftBottom:{points:["br","cl"]}},Xi=new Set(["topLeft","topRight","bottomLeft","bottomRight","leftTop","leftBottom","rightTop","rightBottom"]);function qi(t){var e=t.arrowWidth,n=t.autoAdjustOverflow,r=t.arrowPointAtCenter,i=t.offset,o=t.borderRadius,a=t.visibleFirst,c=e/2,l={};return Object.keys(Vi).forEach((function(t){var u=r&&Gi[t]||Vi[t],s=Object.assign(Object.assign({},u),{offset:[0,0]});switch(l[t]=s,Xi.has(t)&&(s.autoArrow=!1),t){case"top":case"topLeft":case"topRight":s.offset[1]=-c-i;break;case"bottom":case"bottomLeft":case"bottomRight":s.offset[1]=c+i;break;case"left":case"leftTop":case"leftBottom":s.offset[0]=-c-i;break;case"right":case"rightTop":case"rightBottom":s.offset[0]=c+i}var f=Ui({contentRadius:o,limitVerticalRadius:!0});if(r)switch(t){case"topLeft":case"bottomLeft":s.offset[0]=-f.dropdownArrowOffset-c;break;case"topRight":case"bottomRight":s.offset[0]=f.dropdownArrowOffset+c;break;case"leftTop":case"rightTop":s.offset[1]=-f.dropdownArrowOffset-c;break;case"leftBottom":case"rightBottom":s.offset[1]=f.dropdownArrowOffset+c}s.overflow=function(t,e,n,r){if(!1===r)return{adjustX:!1,adjustY:!1};var i=r&&"object"==typeof r?r:{},o={};switch(t){case"top":case"bottom":o.shiftX=2*e.dropdownArrowOffset+n;break;case"left":case"right":o.shiftY=2*e.dropdownArrowOffsetVertical+n}var a=Object.assign(Object.assign({},o),i);return a.shiftX||(a.adjustX=!0),a.shiftY||(a.adjustY=!0),a}(t,f,e,n),a&&(s.htmlRegion="visibleFirst")})),l}var Yi=n(23941),$i=n(77098),Ki=n(60114),Ji=(n(96697),n(65346));n(93148);n(99831);var Qi=n(38202),to=(n(89759),n(56748));Ji.u_,Ji.u_.token;var eo=function(){var t=(0,Te.Z)(),e=(0,G.Z)(t,3);return{theme:e[0],token:e[1],hashId:e[2]}},no=($i.Z,function(t,e,n,r){var i,o=arguments.length>4&&void 0!==arguments[4]&&arguments[4]?"&":"";return i={},(0,V.Z)(i,"\n ".concat(o).concat(t,"-enter,\n ").concat(o).concat(t,"-appear\n "),Object.assign(Object.assign({},function(t){return{animationDuration:t,animationFillMode:"both"}}(r)),{animationPlayState:"paused"})),(0,V.Z)(i,"".concat(o).concat(t,"-leave"),Object.assign(Object.assign({},function(t){return{animationDuration:t,animationFillMode:"both"}}(r)),{animationPlayState:"paused"})),(0,V.Z)(i,"\n ".concat(o).concat(t,"-enter").concat(t,"-enter-active,\n ").concat(o).concat(t,"-appear").concat(t,"-appear-active\n "),{animationName:e,animationPlayState:"running"}),(0,V.Z)(i,"".concat(o).concat(t,"-leave").concat(t,"-leave-active"),{animationName:n,animationPlayState:"running",pointerEvents:"none"}),i}),ro=new Yi.E4("antZoomIn",{"0%":{transform:"scale(0.2)",opacity:0},"100%":{transform:"scale(1)",opacity:1}}),io=new Yi.E4("antZoomOut",{"0%":{transform:"scale(1)"},"100%":{transform:"scale(0.2)",opacity:0}}),oo=new Yi.E4("antZoomBigIn",{"0%":{transform:"scale(0.8)",opacity:0},"100%":{transform:"scale(1)",opacity:1}}),ao=new Yi.E4("antZoomBigOut",{"0%":{transform:"scale(1)"},"100%":{transform:"scale(0.8)",opacity:0}}),co=new Yi.E4("antZoomUpIn",{"0%":{transform:"scale(0.8)",transformOrigin:"50% 0%",opacity:0},"100%":{transform:"scale(1)",transformOrigin:"50% 0%"}}),lo=new Yi.E4("antZoomUpOut",{"0%":{transform:"scale(1)",transformOrigin:"50% 0%"},"100%":{transform:"scale(0.8)",transformOrigin:"50% 0%",opacity:0}}),uo={zoom:{inKeyframes:ro,outKeyframes:io},"zoom-big":{inKeyframes:oo,outKeyframes:ao},"zoom-big-fast":{inKeyframes:oo,outKeyframes:ao},"zoom-left":{inKeyframes:new Yi.E4("antZoomLeftIn",{"0%":{transform:"scale(0.8)",transformOrigin:"0% 50%",opacity:0},"100%":{transform:"scale(1)",transformOrigin:"0% 50%"}}),outKeyframes:new Yi.E4("antZoomLeftOut",{"0%":{transform:"scale(1)",transformOrigin:"0% 50%"},"100%":{transform:"scale(0.8)",transformOrigin:"0% 50%",opacity:0}})},"zoom-right":{inKeyframes:new Yi.E4("antZoomRightIn",{"0%":{transform:"scale(0.8)",transformOrigin:"100% 50%",opacity:0},"100%":{transform:"scale(1)",transformOrigin:"100% 50%"}}),outKeyframes:new Yi.E4("antZoomRightOut",{"0%":{transform:"scale(1)",transformOrigin:"100% 50%"},"100%":{transform:"scale(0.8)",transformOrigin:"100% 50%",opacity:0}})},"zoom-up":{inKeyframes:co,outKeyframes:lo},"zoom-down":{inKeyframes:new Yi.E4("antZoomDownIn",{"0%":{transform:"scale(0.8)",transformOrigin:"50% 100%",opacity:0},"100%":{transform:"scale(1)",transformOrigin:"50% 100%"}}),outKeyframes:new Yi.E4("antZoomDownOut",{"0%":{transform:"scale(1)",transformOrigin:"50% 100%"},"100%":{transform:"scale(0.8)",transformOrigin:"50% 100%",opacity:0}})}},so=function(t,e){var n,r=t.antCls,i="".concat(r,"-").concat(e),o=uo[e],a=o.inKeyframes,c=o.outKeyframes;return[no(i,a,c,"zoom-big-fast"===e?t.motionDurationFast:t.motionDurationMid),(n={},(0,V.Z)(n,"\n ".concat(i,"-enter,\n ").concat(i,"-appear\n "),{transform:"scale(0)",opacity:0,animationTimingFunction:t.motionEaseOutCirc,"&-prepare":{transform:"none"}}),(0,V.Z)(n,"".concat(i,"-leave"),{animationTimingFunction:t.motionEaseInOutCirc}),n)]},fo=["blue","purple","cyan","green","magenta","pink","red","orange","yellow","volcano","geekblue","lime","gold"];function ho(t,e){return fo.reduce((function(n,r){var i=t["".concat(r,"1")],o=t["".concat(r,"3")],a=t["".concat(r,"6")],c=t["".concat(r,"7")];return Object.assign(Object.assign({},n),e(r,{lightColor:i,lightBorderColor:o,darkColor:a,textColor:c}))}),{})}var po=function(t){var e,n=t.componentCls,r=t.tooltipMaxWidth,i=t.tooltipColor,o=t.tooltipBg,a=t.tooltipBorderRadius,c=t.zIndexPopup,l=t.controlHeight,u=t.boxShadowSecondary,s=t.paddingSM,f=t.paddingXS,h=t.tooltipRadiusOuter;return[(0,V.Z)({},n,Object.assign(Object.assign(Object.assign(Object.assign({},(0,Qe.Wf)(t)),(e={position:"absolute",zIndex:c,display:"block",width:"max-content",maxWidth:r,visibility:"visible",transformOrigin:"var(--arrow-x, 50%) var(--arrow-y, 50%)","&-hidden":{display:"none"},"--antd-arrow-background-color":o},(0,V.Z)(e,"".concat(n,"-inner"),{minWidth:l,minHeight:l,padding:"".concat(s/2,"px ").concat(f,"px"),color:i,textAlign:"start",textDecoration:"none",wordWrap:"break-word",backgroundColor:o,borderRadius:a,boxShadow:u,boxSizing:"border-box"}),(0,V.Z)(e,["&-placement-left","&-placement-leftTop","&-placement-leftBottom","&-placement-right","&-placement-rightTop","&-placement-rightBottom"].join(","),(0,V.Z)({},"".concat(n,"-inner"),{borderRadius:Math.min(a,zi)})),(0,V.Z)(e,"".concat(n,"-content"),{position:"relative"}),e)),ho(t,(function(t,e){var r,i=e.darkColor;return(0,V.Z)({},"&".concat(n,"-").concat(t),(r={},(0,V.Z)(r,"".concat(n,"-inner"),{backgroundColor:i}),(0,V.Z)(r,"".concat(n,"-arrow"),{"--antd-arrow-background-color":i}),r))}))),{"&-rtl":{direction:"rtl"}})),Wi((0,nn.TS)(t,{borderRadiusOuter:h}),{colorBg:"var(--antd-arrow-background-color)",contentRadius:a,limitVerticalRadius:!0}),(0,V.Z)({},"".concat(n,"-pure"),{position:"relative",maxWidth:"none",margin:t.sizePopupArrow})]},vo=function(t,e){var n=(0,se.Z)("Tooltip",(function(t){if(!1===e)return[];var n=t.borderRadius,r=t.colorTextLightSolid,i=t.colorBgDefault,o=t.borderRadiusOuter,a=(0,nn.TS)(t,{tooltipMaxWidth:250,tooltipColor:r,tooltipBorderRadius:n,tooltipBg:i,tooltipRadiusOuter:o>4?4:o});return[po(a),so(t,"zoom-big-fast")]}),(function(t){return{zIndexPopup:t.zIndexPopupBase+70,colorBgDefault:t.colorBgSpotlight}}),{resetStyle:!1});return n(t)},go=fo.map((function(t){return"".concat(t,"-inverse")}));function mo(t,e){var n=function(t){return arguments.length>1&&void 0!==arguments[1]&&!arguments[1]?fo.includes(t):[].concat((0,Y.Z)(go),(0,Y.Z)(fo)).includes(t)}(e),r=K()((0,V.Z)({},"".concat(t,"-").concat(e),e&&n)),i={},o={};return e&&!n&&(i.background=e,o["--antd-arrow-background-color"]=e),{className:r,overlayStyle:i,arrowStyle:o}}var yo=function(t){var e=t.prefixCls,n=t.className,r=t.placement,i=void 0===r?"top":r,o=t.title,a=t.color,c=t.overlayInnerStyle,l=(0,Z.useContext(Dt.E_).getPrefixCls)("tooltip",e),u=vo(l,!0),s=(0,G.Z)(u,2),f=s[0],h=s[1],d=mo(l,a),p=d.arrowStyle,v=Object.assign(Object.assign({},c),d.overlayStyle),g=K()(h,l,"".concat(l,"-pure"),"".concat(l,"-placement-").concat(i),n,d.className);return f(Z.createElement("div",{className:g,style:p},Z.createElement("div",{className:"".concat(l,"-arrow")}),Z.createElement(Ii,Object.assign({},t,{className:h,prefixCls:l,overlayInnerStyle:v}),o)))},bo=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(t);i100?100:t}function Oo(t){var e=t.success,n=t.successPercent;return e&&"progress"in e&&(n=e.progress),e&&"percent"in e&&(n=e.percent),n}var Eo=function(t){var e=t.percent,n=Co(Oo({success:t.success,successPercent:t.successPercent}));return[n,Co(Co(e)-n)]},Mo=function(t,e,n){var r,i,o,a,c=-1,l=-1;if("step"===e){var u=n.steps,s=n.strokeWidth;if("string"==typeof t||void 0===t)c="small"===t?2:14,l=null!=s?s:8;else if("number"==typeof t)c=t,l=t;else{var f=(0,G.Z)(t,2),h=f[0];c=void 0===h?14:h;var d=f[1];l=void 0===d?8:d}c*=u}else if("line"===e){var p=null==n?void 0:n.strokeWidth;if("string"==typeof t||void 0===t)l=p||("small"===t?6:8);else if("number"==typeof t)c=t,l=t;else{var v=(0,G.Z)(t,2),g=v[0];c=void 0===g?-1:g;var m=v[1];l=void 0===m?8:m}}else if("circle"===e||"dashboard"===e)if("string"==typeof t||void 0===t){var y="small"===t?[60,60]:[120,120],b=(0,G.Z)(y,2);c=b[0],l=b[1]}else"number"==typeof t?(c=t,l=t):(c=null!==(i=null!==(r=t[0])&&void 0!==r?r:t[1])&&void 0!==i?i:120,l=null!==(a=null!==(o=t[0])&&void 0!==o?o:t[1])&&void 0!==a?a:120);return[c,l]},Ao=function(t){var e=t.prefixCls,n=t.trailColor,r=void 0===n?null:n,i=t.strokeLinecap,o=void 0===i?"round":i,a=t.gapPosition,c=t.gapDegree,l=t.width,u=void 0===l?120:l,s=t.type,f=t.children,h=t.success,d=t.size,p=Mo(void 0===d?u:d,"circle"),v=(0,G.Z)(p,2),g=v[0],m=v[1],y=t.strokeWidth;void 0===y&&(y=Math.max(function(t){return 3/t*100}(g),6));var b={width:g,height:m,fontSize:.15*g+6},x=Z.useMemo((function(){return c||0===c?c:"dashboard"===s?75:void 0}),[c,s]),w=a||"dashboard"===s&&"bottom"||void 0,S="[object Object]"===Object.prototype.toString.call(t.strokeColor),k=function(t){var e=t.success,n=void 0===e?{}:e,r=t.strokeColor;return[n.strokeColor||Qi.ez.green,r||null]}({success:h,strokeColor:t.strokeColor}),C=K()("".concat(e,"-inner"),(0,V.Z)({},"".concat(e,"-circle-gradient"),S)),O=Z.createElement(dr,{percent:Eo(t),strokeWidth:y,trailWidth:y,strokeColor:k,strokeLinecap:o,trailColor:r,prefixCls:e,gapDegree:x,gapPosition:w});return Z.createElement("div",{className:C,style:b},g<=20?Z.createElement(ko,{title:f},Z.createElement("span",null,O)):Z.createElement(Z.Fragment,null,O,f))},Po=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(t);i=100?"success":g||"normal"}),[g,x]),S=Z.useContext(Dt.E_),k=S.getPrefixCls,C=S.direction,O=S.progress,E=k("progress",r),M=Lo(E),A=(0,G.Z)(M,2),P=A[0],_=A[1],D=Z.useMemo((function(){if(!d)return null;var e,n=Oo(t),r="line"===v;return m||"exception"!==w&&"success"!==w?e=(m||function(t){return"".concat(t,"%")})(Co(u),Co(n)):"exception"===w?e=r?Z.createElement(Kn,null):Z.createElement(tr,null):"success"===w&&(e=r?Z.createElement(Vn,null):Z.createElement(qn,null)),Z.createElement("span",{className:"".concat(E,"-text"),title:"string"==typeof e?e:void 0},e)}),[d,u,x,w,v,E,m]);var T,F=Array.isArray(c)?c[0]:c,j="string"==typeof c||Array.isArray(c)?c:void 0;"line"===v?T=a?Z.createElement(To,Object.assign({},t,{strokeColor:j,prefixCls:E,steps:a}),D):Z.createElement(Do,Object.assign({},t,{strokeColor:F,prefixCls:E,direction:C}),D):"circle"!==v&&"dashboard"!==v||(T=Z.createElement(Ao,Object.assign({},t,{strokeColor:F,prefixCls:E,progressStatus:w}),D));var I=K()(E,"".concat(E,"-status-").concat(w),"".concat(E,"-").concat(("dashboard"===v?"circle":a&&"steps")||v),(n={},(0,V.Z)(n,"".concat(E,"-inline-circle"),"circle"===v&&Mo(f,"circle")[0]<=20),(0,V.Z)(n,"".concat(E,"-show-info"),d),(0,V.Z)(n,"".concat(E,"-").concat(f),"string"==typeof f),(0,V.Z)(n,"".concat(E,"-rtl"),"rtl"===C),n),null==O?void 0:O.className,i,o,_);return P(Z.createElement("div",Object.assign({ref:e,style:Object.assign(Object.assign({},null==O?void 0:O.style),y),className:I,role:"progressbar","aria-valuenow":x},(0,ce.Z)(b,["trailColor","strokeWidth","width","gapDegree","gapPosition","strokeLinecap","success","successPercent"])),T))}));var Uo=zo,Ho=Z.forwardRef((function(t,e){var n,r,i=t.prefixCls,o=t.className,a=t.style,c=t.locale,l=t.listType,u=t.file,s=t.items,f=t.progress,h=t.iconRender,d=t.actionIconRender,p=t.itemRender,v=t.isImgUrl,g=t.showPreviewIcon,m=t.showRemoveIcon,y=t.showDownloadIcon,b=t.previewIcon,x=t.removeIcon,w=t.downloadIcon,S=t.onPreview,k=t.onDownload,C=t.onClose,O=u.status,E=Z.useState(O),M=(0,G.Z)(E,2),A=M[0],P=M[1];Z.useEffect((function(){"removed"!==O&&P(O)}),[O]);var _=Z.useState(!1),D=(0,G.Z)(_,2),T=D[0],F=D[1];Z.useEffect((function(){var t=setTimeout((function(){F(!0)}),300);return function(){clearTimeout(t)}}),[]);var j=h(u),I=Z.createElement("div",{className:"".concat(i,"-icon")},j);if("picture"===l||"picture-card"===l||"picture-circle"===l)if("uploading"===A||!u.thumbUrl&&!u.url){var R=K()("".concat(i,"-list-item-thumbnail"),(0,V.Z)({},"".concat(i,"-list-item-file"),"uploading"!==A));I=Z.createElement("div",{className:R},j)}else{var L=(null==v?void 0:v(u))?Z.createElement("img",{src:u.thumbUrl||u.url,alt:u.name,className:"".concat(i,"-list-item-image"),crossOrigin:u.crossOrigin}):j,N=K()("".concat(i,"-list-item-thumbnail"),(0,V.Z)({},"".concat(i,"-list-item-file"),v&&!v(u)));I=Z.createElement("a",{className:N,onClick:function(t){return S(u,t)},href:u.url||u.thumbUrl,target:"_blank",rel:"noopener noreferrer"},L)}var B=K()("".concat(i,"-list-item"),"".concat(i,"-list-item-").concat(A)),z="string"==typeof u.linkProps?JSON.parse(u.linkProps):u.linkProps,U=m?d(("function"==typeof x?x(u):x)||Z.createElement(In,null),(function(){return C(u)}),i,c.removeFile):null,H=y&&"done"===A?d(("function"==typeof w?w(u):w)||Z.createElement(Nn,null),(function(){return k(u)}),i,c.downloadFile):null,W="picture-card"!==l&&"picture-circle"!==l&&Z.createElement("span",{key:"download-delete",className:K()("".concat(i,"-list-item-actions"),{picture:"picture"===l})},H,U),X=K()("".concat(i,"-list-item-name")),q=u.url?[Z.createElement("a",Object.assign({key:"view",target:"_blank",rel:"noopener noreferrer",className:X,title:u.name},z,{href:u.url,onClick:function(t){return S(u,t)}}),u.name),W]:[Z.createElement("span",{key:"view",className:X,onClick:function(t){return S(u,t)},title:u.name},u.name),W],Y=g?Z.createElement("a",{href:u.url||u.thumbUrl,target:"_blank",rel:"noopener noreferrer",style:u.url||u.thumbUrl?void 0:{pointerEvents:"none",opacity:.5},onClick:function(t){return S(u,t)},title:c.previewFile},"function"==typeof b?b(u):b||Z.createElement(Un,null)):null,$=("picture-card"===l||"picture-circle"===l)&&"uploading"!==A&&Z.createElement("span",{className:"".concat(i,"-list-item-actions")},Y,"done"===A&&H,U),J=(0,Z.useContext(Dt.E_).getPrefixCls)(),Q=Z.createElement("div",{className:B},I,q,$,T&&Z.createElement(ne.ZP,{motionName:"".concat(J,"-fade"),visible:"uploading"===A,motionDeadline:2e3},(function(t){var e=t.className,n="percent"in u?Z.createElement(Uo,Object.assign({},f,{type:"line",percent:u.percent,"aria-label":u["aria-label"],"aria-labelledby":u["aria-labelledby"]})):null;return Z.createElement("div",{className:K()("".concat(i,"-list-item-progress"),e)},n)}))),tt=u.response&&"string"==typeof u.response?u.response:(null===(n=u.error)||void 0===n?void 0:n.statusText)||(null===(r=u.error)||void 0===r?void 0:r.message)||c.uploadError,et="error"===A?Z.createElement(ko,{title:tt,getPopupContainer:function(t){return t.parentNode}},Q):Q;return Z.createElement("div",{className:K()("".concat(i,"-list-item-container"),o),style:a,ref:e},p?p(et,u,s,{download:k.bind(null,u),preview:S.bind(null,u),remove:C.bind(null,u)}):et)})),Wo=Ho,Vo=function(t,e){var n=t.listType,r=void 0===n?"text":n,i=t.previewFile,o=void 0===i?Zn:i,a=t.onPreview,c=t.onDownload,l=t.onRemove,u=t.locale,s=t.iconRender,f=t.isImageUrl,h=void 0===f?Dn:f,d=t.prefixCls,p=t.items,v=void 0===p?[]:p,g=t.showPreviewIcon,m=void 0===g||g,y=t.showRemoveIcon,b=void 0===y||y,x=t.showDownloadIcon,w=void 0!==x&&x,S=t.removeIcon,k=t.previewIcon,C=t.downloadIcon,O=t.progress,E=void 0===O?{size:[-1,2],showInfo:!1}:O,M=t.appendAction,A=t.appendActionVisible,P=void 0===A||A,_=t.itemRender,D=t.disabled,T=re(),F=Z.useState(!1),j=(0,G.Z)(F,2),I=j[0],R=j[1];Z.useEffect((function(){"picture"!==r&&"picture-card"!==r&&"picture-circle"!==r||(v||[]).forEach((function(t){"undefined"!=typeof document&&"undefined"!=typeof window&&window.FileReader&&window.File&&(t.originFileObj instanceof File||t.originFileObj instanceof Blob)&&void 0===t.thumbUrl&&(t.thumbUrl="",o&&o(t.originFileObj).then((function(e){t.thumbUrl=e||"",T()})))}))}),[r,v,o]),Z.useEffect((function(){R(!0)}),[]);var L=function(t,e){if(a)return null==e||e.preventDefault(),a(t)},N=function(t){"function"==typeof c?c(t):t.url&&window.open(t.url)},B=function(t){null==l||l(t)},z=function(t){if(s)return s(t,r);var e="uploading"===t.status,n=h&&h(t)?Z.createElement(ee,null):Z.createElement(Gt,null),i=e?Z.createElement(Yt,null):Z.createElement(Jt,null);return"picture"===r?i=e?Z.createElement(Yt,null):n:"picture-card"!==r&&"picture-circle"!==r||(i=e?u.uploading:n),i},U=function(t,e,n,r){var i={type:"text",size:"small",title:r,onClick:function(n){e(),(0,ae.l$)(t)&&t.props.onClick&&t.props.onClick(n)},className:"".concat(n,"-list-item-action"),disabled:D};if((0,ae.l$)(t)){var o=(0,ae.Tm)(t,Object.assign(Object.assign({},t.props),{onClick:function(){}}));return Z.createElement(En,Object.assign({},i,{icon:o}))}return Z.createElement(En,Object.assign({},i),Z.createElement("span",null,t))};Z.useImperativeHandle(e,(function(){return{handlePreview:L,handleDownload:N}}));var H=Z.useContext(Dt.E_).getPrefixCls,W=H("upload",d),V=H(),X=K()("".concat(W,"-list"),"".concat(W,"-list-").concat(r)),q=(0,Y.Z)(v.map((function(t){return{key:t.uid,file:t}}))),$="picture-card"===r||"picture-circle"===r?"animate-inline":"animate",J={motionDeadline:2e3,motionName:"".concat(W,"-").concat($),keys:q,motionAppear:I},Q=Z.useMemo((function(){var t=Object.assign({},(0,oe.Z)(V));return delete t.onAppearEnd,delete t.onEnterEnd,delete t.onLeaveEnd,t}),[V]);return"picture-card"!==r&&"picture-circle"!==r&&(J=Object.assign(Object.assign({},Q),J)),Z.createElement("div",{className:X},Z.createElement(ne.V4,Object.assign({},J,{component:!1}),(function(t){var e=t.key,n=t.file,i=t.className,o=t.style;return Z.createElement(Wo,{key:e,locale:u,prefixCls:W,className:i,style:o,file:n,items:v,progress:E,listType:r,isImgUrl:h,showPreviewIcon:m,showRemoveIcon:b,showDownloadIcon:w,removeIcon:S,previewIcon:k,downloadIcon:C,iconRender:z,actionIconRender:U,itemRender:_,onPreview:L,onDownload:N,onClose:B})})),M&&Z.createElement(ne.ZP,Object.assign({},J,{visible:P,forceRender:!0}),(function(t){var e=t.className,n=t.style;return(0,ae.Tm)(M,(function(t){return{className:K()(t.className,e),style:Object.assign(Object.assign(Object.assign({},n),{pointerEvents:e?"none":void 0}),t.style)}}))})))};var Go=Z.forwardRef(Vo),Xo=n(16235),qo=function(t){var e,n=t.componentCls,r=t.iconCls;return(0,V.Z)({},"".concat(n,"-wrapper"),(0,V.Z)({},"".concat(n,"-drag"),(e={position:"relative",width:"100%",height:"100%",textAlign:"center",background:t.colorFillAlter,border:"".concat(t.lineWidth,"px dashed ").concat(t.colorBorder),borderRadius:t.borderRadiusLG,cursor:"pointer",transition:"border-color ".concat(t.motionDurationSlow)},(0,V.Z)(e,n,{padding:"".concat(t.padding,"px 0")}),(0,V.Z)(e,"".concat(n,"-btn"),{display:"table",width:"100%",height:"100%",outline:"none"}),(0,V.Z)(e,"".concat(n,"-drag-container"),{display:"table-cell",verticalAlign:"middle"}),(0,V.Z)(e,"&:not(".concat(n,"-disabled):hover"),{borderColor:t.colorPrimaryHover}),(0,V.Z)(e,"p".concat(n,"-drag-icon"),(0,V.Z)({marginBottom:t.margin},r,{color:t.colorPrimary,fontSize:t.uploadThumbnailSize})),(0,V.Z)(e,"p".concat(n,"-text"),{margin:"0 0 ".concat(t.marginXXS,"px"),color:t.colorTextHeading,fontSize:t.fontSizeLG}),(0,V.Z)(e,"p".concat(n,"-hint"),{color:t.colorTextDescription,fontSize:t.fontSize}),(0,V.Z)(e,"&".concat(n,"-disabled"),(0,V.Z)({cursor:"not-allowed"},"p".concat(n,"-drag-icon ").concat(r,",\n p").concat(n,"-text,\n p").concat(n,"-hint\n "),{color:t.colorTextDisabled})),e)))},Yo=function(t){var e,n,r,i,o,a=t.componentCls,c=t.antCls,l=t.iconCls,u=t.fontSize,s=t.lineHeight,f="".concat(a,"-list-item"),h="".concat(f,"-actions"),d="".concat(f,"-action"),p=Math.round(u*s);return(0,V.Z)({},"".concat(a,"-wrapper"),(0,V.Z)({},"".concat(a,"-list"),Object.assign(Object.assign({},(0,Qe.dF)()),(o={lineHeight:t.lineHeight},(0,V.Z)(o,f,(n={position:"relative",height:t.lineHeight*u,marginTop:t.marginXS,fontSize:u,display:"flex",alignItems:"center",transition:"background-color ".concat(t.motionDurationSlow),"&:hover":{backgroundColor:t.controlItemBgHover}},(0,V.Z)(n,"".concat(f,"-name"),Object.assign(Object.assign({},Qe.vS),{padding:"0 ".concat(t.paddingXS,"px"),lineHeight:s,flex:"auto",transition:"all ".concat(t.motionDurationSlow)})),(0,V.Z)(n,h,(e={},(0,V.Z)(e,d,{opacity:0}),(0,V.Z)(e,"".concat(d).concat(c,"-btn-sm"),{height:p,border:0,lineHeight:1,"> span":{transform:"scale(1)"}}),(0,V.Z)(e,"\n ".concat(d,":focus,\n &.picture ").concat(d,"\n "),{opacity:1}),(0,V.Z)(e,l,{color:t.actionsColor,transition:"all ".concat(t.motionDurationSlow)}),(0,V.Z)(e,"&:hover ".concat(l),{color:t.colorText}),e)),(0,V.Z)(n,"".concat(a,"-icon ").concat(l),{color:t.colorTextDescription,fontSize:u}),(0,V.Z)(n,"".concat(f,"-progress"),{position:"absolute",bottom:-t.uploadProgressOffset,width:"100%",paddingInlineStart:u+t.paddingXS,fontSize:u,lineHeight:0,pointerEvents:"none","> div":{margin:0}}),n)),(0,V.Z)(o,"".concat(f,":hover ").concat(d),{opacity:1,color:t.colorText}),(0,V.Z)(o,"".concat(f,"-error"),(i={color:t.colorError},(0,V.Z)(i,"".concat(f,"-name, ").concat(a,"-icon ").concat(l),{color:t.colorError}),(0,V.Z)(i,h,(r={},(0,V.Z)(r,"".concat(l,", ").concat(l,":hover"),{color:t.colorError}),(0,V.Z)(r,d,{opacity:1}),r)),i)),(0,V.Z)(o,"".concat(a,"-list-item-container"),{transition:"opacity ".concat(t.motionDurationSlow,", height ").concat(t.motionDurationSlow),"&::before":{display:"table",width:0,height:0,content:'""'}}),o))))},$o=new Yi.E4("antFadeIn",{"0%":{opacity:0},"100%":{opacity:1}}),Ko=new Yi.E4("antFadeOut",{"0%":{opacity:1},"100%":{opacity:0}}),Jo=function(t){var e,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=t.antCls,i="".concat(r,"-fade"),o=n?"&":"";return[no(i,$o,Ko,t.motionDurationMid,n),(e={},(0,V.Z)(e,"\n ".concat(o).concat(i,"-enter,\n ").concat(o).concat(i,"-appear\n "),{opacity:0,animationTimingFunction:"linear"}),(0,V.Z)(e,"".concat(o).concat(i,"-leave"),{animationTimingFunction:"linear"}),e)]},Qo=new Yi.E4("uploadAnimateInlineIn",{from:{width:0,height:0,margin:0,padding:0,opacity:0}}),ta=new Yi.E4("uploadAnimateInlineOut",{to:{width:0,height:0,margin:0,padding:0,opacity:0}}),ea=function(t){var e,n=t.componentCls,r="".concat(n,"-animate-inline");return[(0,V.Z)({},"".concat(n,"-wrapper"),(e={},(0,V.Z)(e,"".concat(r,"-appear, ").concat(r,"-enter, ").concat(r,"-leave"),{animationDuration:t.motionDurationSlow,animationTimingFunction:t.motionEaseInOutCirc,animationFillMode:"forwards"}),(0,V.Z)(e,"".concat(r,"-appear, ").concat(r,"-enter"),{animationName:Qo}),(0,V.Z)(e,"".concat(r,"-leave"),{animationName:ta}),e)),(0,V.Z)({},"".concat(n,"-wrapper"),Jo(t)),Qo,ta]},na=function(t){var e,n,r,i,o,a=t.componentCls,c=t.iconCls,l=t.uploadThumbnailSize,u=t.uploadProgressOffset,s="".concat(a,"-list"),f="".concat(s,"-item");return(0,V.Z)({},"".concat(a,"-wrapper"),(o={},(0,V.Z)(o,"\n ".concat(s).concat(s,"-picture,\n ").concat(s).concat(s,"-picture-card,\n ").concat(s).concat(s,"-picture-circle\n "),(i={},(0,V.Z)(i,f,(n={position:"relative",height:l+2*t.lineWidth+2*t.paddingXS,padding:t.paddingXS,border:"".concat(t.lineWidth,"px ").concat(t.lineType," ").concat(t.colorBorder),borderRadius:t.borderRadiusLG,"&:hover":{background:"transparent"}},(0,V.Z)(n,"".concat(f,"-thumbnail"),Object.assign(Object.assign({},Qe.vS),(e={width:l,height:l,lineHeight:"".concat(l+t.paddingSM,"px"),textAlign:"center",flex:"none"},(0,V.Z)(e,c,{fontSize:t.fontSizeHeading2,color:t.colorPrimary}),(0,V.Z)(e,"img",{display:"block",width:"100%",height:"100%",overflow:"hidden"}),e))),(0,V.Z)(n,"".concat(f,"-progress"),{bottom:u,width:"calc(100% - ".concat(2*t.paddingSM,"px)"),marginTop:0,paddingInlineStart:l+t.paddingXS}),n)),(0,V.Z)(i,"".concat(f,"-error"),(0,V.Z)({borderColor:t.colorError},"".concat(f,"-thumbnail ").concat(c),(r={},(0,V.Z)(r,"svg path[fill='".concat(Qi.iN[0],"']"),{fill:t.colorErrorBg}),(0,V.Z)(r,"svg path[fill='".concat(Qi.iN.primary,"']"),{fill:t.colorError}),r))),(0,V.Z)(i,"".concat(f,"-uploading"),(0,V.Z)({borderStyle:"dashed"},"".concat(f,"-name"),{marginBottom:u})),i)),(0,V.Z)(o,"".concat(s).concat(s,"-picture-circle ").concat(f),(0,V.Z)({},"&, &::before, ".concat(f,"-thumbnail"),{borderRadius:"50%"})),o))},ra=function(t){var e,n,r,i,o,a=t.componentCls,c=t.iconCls,l=t.fontSizeLG,u=t.colorTextLightSolid,s="".concat(a,"-list"),f="".concat(s,"-item"),h=t.uploadPicCardSize;return o={},(0,V.Z)(o,"\n ".concat(a,"-wrapper").concat(a,"-picture-card-wrapper,\n ").concat(a,"-wrapper").concat(a,"-picture-circle-wrapper\n "),Object.assign(Object.assign({},(0,Qe.dF)()),(i={display:"inline-block",width:"100%"},(0,V.Z)(i,"".concat(a).concat(a,"-select"),(e={width:h,height:h,marginInlineEnd:t.marginXS,marginBottom:t.marginXS,textAlign:"center",verticalAlign:"top",backgroundColor:t.colorFillAlter,border:"".concat(t.lineWidth,"px dashed ").concat(t.colorBorder),borderRadius:t.borderRadiusLG,cursor:"pointer",transition:"border-color ".concat(t.motionDurationSlow)},(0,V.Z)(e,"> ".concat(a),{display:"flex",alignItems:"center",justifyContent:"center",height:"100%",textAlign:"center"}),(0,V.Z)(e,"&:not(".concat(a,"-disabled):hover"),{borderColor:t.colorPrimary}),e)),(0,V.Z)(i,"".concat(s).concat(s,"-picture-card, ").concat(s).concat(s,"-picture-circle"),(r={},(0,V.Z)(r,"".concat(s,"-item-container"),{display:"inline-block",width:h,height:h,marginBlock:"0 ".concat(t.marginXS,"px"),marginInline:"0 ".concat(t.marginXS,"px"),verticalAlign:"top"}),(0,V.Z)(r,"&::after",{display:"none"}),(0,V.Z)(r,f,{height:"100%",margin:0,"&::before":{position:"absolute",zIndex:1,width:"calc(100% - ".concat(2*t.paddingXS,"px)"),height:"calc(100% - ".concat(2*t.paddingXS,"px)"),backgroundColor:t.colorBgMask,opacity:0,transition:"all ".concat(t.motionDurationSlow),content:'" "'}}),(0,V.Z)(r,"".concat(f,":hover"),(0,V.Z)({},"&::before, ".concat(f,"-actions"),{opacity:1})),(0,V.Z)(r,"".concat(f,"-actions"),(0,V.Z)({position:"absolute",insetInlineStart:0,zIndex:10,width:"100%",whiteSpace:"nowrap",textAlign:"center",opacity:0,transition:"all ".concat(t.motionDurationSlow)},"".concat(c,"-eye, ").concat(c,"-download, ").concat(c,"-delete"),{zIndex:10,width:l,margin:"0 ".concat(t.marginXXS,"px"),fontSize:l,cursor:"pointer",transition:"all ".concat(t.motionDurationSlow),svg:{verticalAlign:"baseline"}})),(0,V.Z)(r,"".concat(f,"-actions, ").concat(f,"-actions:hover"),(0,V.Z)({},"".concat(c,"-eye, ").concat(c,"-download, ").concat(c,"-delete"),{color:new to.C(u).setAlpha(.65).toRgbString(),"&:hover":{color:u}})),(0,V.Z)(r,"".concat(f,"-thumbnail, ").concat(f,"-thumbnail img"),{position:"static",display:"block",width:"100%",height:"100%",objectFit:"contain"}),(0,V.Z)(r,"".concat(f,"-name"),{display:"none",textAlign:"center"}),(0,V.Z)(r,"".concat(f,"-file + ").concat(f,"-name"),{position:"absolute",bottom:t.margin,display:"block",width:"calc(100% - ".concat(2*t.paddingXS,"px)")}),(0,V.Z)(r,"".concat(f,"-uploading"),(n={},(0,V.Z)(n,"&".concat(f),{backgroundColor:t.colorFillAlter}),(0,V.Z)(n,"&::before, ".concat(c,"-eye, ").concat(c,"-download, ").concat(c,"-delete"),{display:"none"}),n)),(0,V.Z)(r,"".concat(f,"-progress"),{bottom:t.marginXL,width:"calc(100% - ".concat(2*t.paddingXS,"px)"),paddingInlineStart:0}),r)),i))),(0,V.Z)(o,"".concat(a,"-wrapper").concat(a,"-picture-circle-wrapper"),(0,V.Z)({},"".concat(a).concat(a,"-select"),{borderRadius:"50%"})),o},ia=function(t){var e=t.componentCls;return(0,V.Z)({},"".concat(e,"-rtl"),{direction:"rtl"})},oa=function(t){var e,n=t.componentCls,r=t.colorTextDisabled;return(0,V.Z)({},"".concat(n,"-wrapper"),Object.assign(Object.assign({},(0,Qe.Wf)(t)),(e={},(0,V.Z)(e,n,{outline:0,"input[type='file']":{cursor:"pointer"}}),(0,V.Z)(e,"".concat(n,"-select"),{display:"inline-block"}),(0,V.Z)(e,"".concat(n,"-disabled"),{color:r,cursor:"not-allowed"}),e)))},aa=(0,se.Z)("Upload",(function(t){var e=t.fontSizeHeading3,n=t.fontSize,r=t.lineHeight,i=t.lineWidth,o=t.controlHeightLG,a=Math.round(n*r),c=(0,nn.TS)(t,{uploadThumbnailSize:2*e,uploadProgressOffset:a/2+i,uploadPicCardSize:2.55*o});return[oa(c),qo(c),na(c),ra(c),Yo(c),ea(c),ia(c),(0,Xo.Z)(c)]}),(function(t){return{actionsColor:t.colorTextDescription}})),ca=function(t,e,n,r){return new(n||(n=Promise))((function(i,o){function a(t){try{l(r.next(t))}catch(F2t){o(F2t)}}function c(t){try{l(r.throw(t))}catch(F2t){o(F2t)}}function l(t){t.done?i(t.value):function(t){return t instanceof n?t:new n((function(e){e(t)}))}(t.value).then(a,c)}l((r=r.apply(t,e||[])).next())}))},la="__LIST_IGNORE_".concat(Date.now(),"__"),ua=function(t,e){var n,r=t.fileList,i=t.defaultFileList,o=t.onRemove,a=t.showUploadList,c=void 0===a||a,l=t.listType,u=void 0===l?"text":l,s=t.onPreview,f=t.onDownload,h=t.onChange,d=t.onDrop,p=t.previewFile,v=t.disabled,g=t.locale,m=t.iconRender,y=t.isImageUrl,b=t.progress,x=t.prefixCls,w=t.className,S=t.type,k=void 0===S?"select":S,C=t.children,O=t.style,E=t.itemRender,M=t.maxCount,A=t.data,P=void 0===A?{}:A,_=t.multiple,D=void 0!==_&&_,T=t.action,F=void 0===T?"":T,j=t.accept,I=void 0===j?"":j,R=t.supportServerRender,L=void 0===R||R,N=Z.useContext(Ft),B=null!=v?v:N,z=(0,At.Z)(i||[],{value:r,postState:function(t){return null!=t?t:[]}}),U=(0,G.Z)(z,2),H=U[0],W=U[1],X=Z.useState("drop"),$=(0,G.Z)(X,2),J=$[0],Q=$[1],tt=Z.useRef(null);Z.useMemo((function(){var t=Date.now();(r||[]).forEach((function(e,n){e.uid||Object.isFrozen(e)||(e.uid="__AUTO__".concat(t,"_").concat(n,"__"))}))}),[r]);var et=function(t,e,n){var r=(0,Y.Z)(e),i=!1;1===M?r=r.slice(-1):M&&(i=r.length>M,r=r.slice(0,M)),(0,Pt.flushSync)((function(){W(r)}));var o={file:t,fileList:r};n&&(o.event=n),i&&!r.some((function(e){return e.uid===t.uid}))||(0,Pt.flushSync)((function(){null==h||h(o)}))},nt=function(t){var e=t.filter((function(t){return!t.file[la]}));if(e.length){var n=e.map((function(t){return Mn(t.file)})),r=(0,Y.Z)(H);n.forEach((function(t){r=An(t,r)})),n.forEach((function(t,n){var i=t;if(e[n].parsedFile)t.status="uploading";else{var o,a=t.originFileObj;try{o=new File([a],a.name,{type:a.type})}catch(F2t){(o=new Blob([a],{type:a.type})).name=a.name,o.lastModifiedDate=new Date,o.lastModified=(new Date).getTime()}o.uid=t.uid,i=o}et(i,r)}))}},rt=function(t,e,n){try{"string"==typeof t&&(t=JSON.parse(t))}catch(F2t){}if(Pn(e,H)){var r=Mn(e);r.status="done",r.percent=100,r.response=t,r.xhr=n;var i=An(r,H);et(r,i)}},it=function(t,e){if(Pn(e,H)){var n=Mn(e);n.status="uploading",n.percent=t.percent;var r=An(n,H);et(n,r,t)}},ot=function(t,e,n){if(Pn(n,H)){var r=Mn(n);r.error=t,r.response=e,r.status="error";var i=An(r,H);et(r,i)}},at=function(t){var e;Promise.resolve("function"==typeof o?o(t):o).then((function(n){var r;if(!1!==n){var i=function(t,e){var n=void 0!==t.uid?"uid":"name",r=e.filter((function(e){return e[n]!==t[n]}));return r.length===e.length?null:r}(t,H);i&&(e=Object.assign(Object.assign({},t),{status:"removed"}),null==H||H.forEach((function(t){var n=void 0!==e.uid?"uid":"name";t[n]!==e[n]||Object.isFrozen(t)||(t.status="removed")})),null===(r=tt.current)||void 0===r||r.abort(e),et(e,i))}}))},ct=function(t){Q(t.type),"drop"===t.type&&(null==d||d(t))};Z.useImperativeHandle(e,(function(){return{onBatchStart:nt,onSuccess:rt,onProgress:it,onError:ot,fileList:H,upload:tt.current}}));var lt=Z.useContext(Dt.E_),ut=lt.getPrefixCls,st=lt.direction,ft=lt.upload,ht=ut("upload",x),dt=Object.assign(Object.assign({onBatchStart:nt,onError:ot,onProgress:it,onSuccess:rt},t),{data:P,multiple:D,action:F,accept:I,supportServerRender:L,prefixCls:ht,disabled:B,beforeUpload:function(e,n){return ca(void 0,void 0,void 0,q().mark((function r(){var i,o,a,c;return q().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(i=t.beforeUpload,o=t.transformFile,a=e,!i){r.next=13;break}return r.next=5,i(e,n);case 5:if(!1!==(c=r.sent)){r.next=8;break}return r.abrupt("return",!1);case 8:if(delete e[la],c!==la){r.next=12;break}return Object.defineProperty(e,la,{value:!0,configurable:!0}),r.abrupt("return",!1);case 12:"object"==typeof c&&c&&(a=c);case 13:if(!o){r.next=17;break}return r.next=16,o(a);case 16:a=r.sent;case 17:return r.abrupt("return",a);case 18:case"end":return r.stop()}}),r)})))},onChange:void 0});delete dt.className,delete dt.style,C&&!B||delete dt.id;var pt=aa(ht),vt=(0,G.Z)(pt,2),gt=vt[0],mt=vt[1],yt=Ut("Upload",zt.Upload),bt=(0,G.Z)(yt,1)[0],xt="boolean"==typeof c?{}:c,wt=xt.showRemoveIcon,St=xt.showPreviewIcon,kt=xt.showDownloadIcon,Ct=xt.removeIcon,Ot=xt.previewIcon,Et=xt.downloadIcon,_t=function(t,e){return c?Z.createElement(Go,{prefixCls:ht,listType:u,items:H,previewFile:p,onPreview:s,onDownload:f,onRemove:at,showRemoveIcon:!B&&wt,showPreviewIcon:St,showDownloadIcon:kt,removeIcon:Ct,previewIcon:Ot,downloadIcon:Et,iconRender:m,locale:Object.assign(Object.assign({},bt),g),isImageUrl:y,progress:b,appendAction:t,appendActionVisible:e,itemRender:E,disabled:B}):t},Tt=K()("".concat(ht,"-wrapper"),w,mt,null==ft?void 0:ft.className,(n={},(0,V.Z)(n,"".concat(ht,"-rtl"),"rtl"===st),(0,V.Z)(n,"".concat(ht,"-picture-card-wrapper"),"picture-card"===u),(0,V.Z)(n,"".concat(ht,"-picture-circle-wrapper"),"picture-circle"===u),n)),Zt=Object.assign(Object.assign({},null==ft?void 0:ft.style),O);if("drag"===k){var jt,It=K()(mt,ht,"".concat(ht,"-drag"),(jt={},(0,V.Z)(jt,"".concat(ht,"-drag-uploading"),H.some((function(t){return"uploading"===t.status}))),(0,V.Z)(jt,"".concat(ht,"-drag-hover"),"dragover"===J),(0,V.Z)(jt,"".concat(ht,"-disabled"),B),(0,V.Z)(jt,"".concat(ht,"-rtl"),"rtl"===st),jt));return gt(Z.createElement("span",{className:Tt},Z.createElement("div",{className:It,style:Zt,onDrop:ct,onDragOver:ct,onDragLeave:ct},Z.createElement(Mt,Object.assign({},dt,{ref:tt,className:"".concat(ht,"-btn")}),Z.createElement("div",{className:"".concat(ht,"-drag-container")},C))),_t()))}var Rt,Lt=K()(ht,"".concat(ht,"-select"),(0,V.Z)({},"".concat(ht,"-disabled"),B)),Nt=(Rt=C?void 0:{display:"none"},Z.createElement("div",{className:Lt,style:Rt},Z.createElement(Mt,Object.assign({},dt,{ref:tt}))));return gt("picture-card"===u||"picture-circle"===u?Z.createElement("span",{className:Tt},_t(Nt,!!C)):Z.createElement("span",{className:Tt},Nt,_t()))};var sa=Z.forwardRef(ua),fa=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(t);i0&&(Ct=Z.createElement(ba.Provider,{value:Ot},e)),c&&(Ct=Z.createElement(Ca,{locale:c,_ANT_MARK__:"internalMark"},Ct)),(vt||mt)&&(Ct=Z.createElement(ga.Z.Provider,{value:kt},Ct)),l&&(Ct=Z.createElement(Ma.q,{size:l},Ct)),Ct=Z.createElement(_a,null,Ct);var Et=Z.useMemo((function(){var t=bt||{},e=t.algorithm,n=t.token,r=t.components,i=ja(t,["algorithm","token","components"]),o=e&&(!Array.isArray(e)||e.length>0)?(0,Yi.jG)(e):Ji.uH,a={};return Object.entries(r||{}).forEach((function(t){var e=(0,G.Z)(t,2),n=e[0],r=e[1],i=Object.assign({},r);"algorithm"in i&&(!0===i.algorithm?i.theme=o:(Array.isArray(i.algorithm)||"function"==typeof i.algorithm)&&(i.theme=(0,Yi.jG)(i.algorithm)),delete i.algorithm),a[n]=i})),Object.assign(Object.assign({},i),{theme:o,token:Object.assign(Object.assign({},Ki.Z),n),components:a})}),[bt]);return y&&(Ct=Z.createElement(Ji.Mj.Provider,{value:Et},Ct)),void 0!==b&&(Ct=Z.createElement(Zt,{disabled:b},Ct)),Z.createElement(Dt.E_.Provider,{value:St},Ct)},za=function(t){var e=Z.useContext(Dt.E_),n=Z.useContext(jt);return Z.createElement(Ba,Object.assign({parentContext:e,legacyLocale:n},t))};za.ConfigContext=Dt.E_,za.SizeContext=Ma.Z,za.config=function(t){var e=t.prefixCls,n=t.iconPrefixCls,r=t.theme;void 0!==e&&(Da=e),void 0!==n&&(Ta=n),r&&(!function(t){return Object.keys(t).some((function(t){return t.endsWith("Color")}))}(r)?Za=r:Ea(Ra(),r))},za.useConfig=Aa,Object.defineProperty(za,"SizeContext",{get:function(){return Ma.Z}});var Ua=za,Ha={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-32 232c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V296zm32 440a48.01 48.01 0 010-96 48.01 48.01 0 010 96z"}}]},name:"exclamation-circle",theme:"filled"},Wa=function(t,e){return Z.createElement(Wt.Z,(0,J.Z)({},t,{ref:e,icon:Ha}))};var Va=Z.forwardRef(Wa),Ga={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm32 664c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V456c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272zm-32-344a48.01 48.01 0 010-96 48.01 48.01 0 010 96z"}}]},name:"info-circle",theme:"filled"},Xa=function(t,e){return Z.createElement(Wt.Z,(0,J.Z)({},t,{ref:e,icon:Ga}))};var qa=Z.forwardRef(Xa),Ya=n(45934),$a=Z.forwardRef((function(t,e){var n=t.prefixCls,r=t.style,i=t.className,o=t.duration,a=void 0===o?4.5:o,c=t.eventKey,l=t.content,u=t.closable,s=t.closeIcon,f=void 0===s?"x":s,h=t.props,d=t.onClick,p=t.onNoticeClose,v=t.times,g=Z.useState(!1),m=(0,rr.Z)(g,2),y=m[0],b=m[1],x=function(){p(c)};Z.useEffect((function(){if(!y&&a>0){var t=setTimeout((function(){x()}),1e3*a);return function(){clearTimeout(t)}}}),[a,y,v]);var w="".concat(n,"-notice");return Z.createElement("div",(0,J.Z)({},h,{ref:e,className:K()(w,i,(0,B.Z)({},"".concat(w,"-closable"),u)),style:r,onMouseEnter:function(){b(!0)},onMouseLeave:function(){b(!1)},onClick:d}),Z.createElement("div",{className:"".concat(w,"-content")},l),u&&Z.createElement("a",{tabIndex:0,className:"".concat(w,"-close"),onKeyDown:function(t){"Enter"!==t.key&&"Enter"!==t.code&&t.keyCode!==Ya.Z.ENTER||x()},onClick:function(t){t.preventDefault(),t.stopPropagation(),x()}},f))})),Ka=$a,Ja=Z.forwardRef((function(t,e){var n=t.prefixCls,r=void 0===n?"rc-notification":n,i=t.container,o=t.motion,a=t.maxCount,c=t.className,l=t.style,u=t.onAllRemoved,s=Z.useState([]),f=(0,rr.Z)(s,2),h=f[0],d=f[1],p=function(t){var e,n=h.find((function(e){return e.key===t}));null==n||null===(e=n.onClose)||void 0===e||e.call(n),d((function(e){return e.filter((function(e){return e.key!==t}))}))};Z.useImperativeHandle(e,(function(){return{open:function(t){d((function(e){var n,r=(0,Y.Z)(e),i=r.findIndex((function(e){return e.key===t.key})),o=(0,lt.Z)({},t);i>=0?(o.times=((null===(n=e[i])||void 0===n?void 0:n.times)||0)+1,r[i]=o):(o.times=0,r.push(o));return a>0&&r.length>a&&(r=r.slice(-a)),r}))},close:function(t){p(t)},destroy:function(){d([])}}}));var v=Z.useState({}),g=(0,rr.Z)(v,2),m=g[0],y=g[1];Z.useEffect((function(){var t={};h.forEach((function(e){var n=e.placement,r=void 0===n?"topRight":n;r&&(t[r]=t[r]||[],t[r].push(e))})),Object.keys(m).forEach((function(e){t[e]=t[e]||[]})),y(t)}),[h]);var b=Z.useRef(!1);if(Z.useEffect((function(){Object.keys(m).length>0?b.current=!0:b.current&&(null==u||u(),b.current=!1)}),[m]),!i)return null;var x=Object.keys(m);return(0,Pt.createPortal)(Z.createElement(Z.Fragment,null,x.map((function(t){var e=m[t].map((function(t){return{config:t,key:t.key}})),n="function"==typeof o?o(t):o;return Z.createElement(ne.V4,(0,J.Z)({key:t,className:K()(r,"".concat(r,"-").concat(t),null==c?void 0:c(t)),style:null==l?void 0:l(t),keys:e,motionAppear:!0},n,{onAllRemoved:function(){!function(t){y((function(e){var n=(0,lt.Z)({},e);return(n[t]||[]).length||delete n[t],n}))}(t)}}),(function(t,e){var n=t.config,i=t.className,o=t.style,a=n.key,c=n.times,l=n.className,u=n.style;return Z.createElement(Ka,(0,J.Z)({},n,{ref:e,prefixCls:r,className:K()(i,l),style:(0,lt.Z)((0,lt.Z)({},o),u),times:c,key:a,eventKey:a,onNoticeClose:p}))}))}))),i)}));var Qa=Ja,tc=["getContainer","motion","prefixCls","maxCount","className","style","onAllRemoved"],ec=function(){return document.body},nc=0;function rc(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.getContainer,n=void 0===e?ec:e,r=t.motion,i=t.prefixCls,o=t.maxCount,a=t.className,c=t.style,l=t.onAllRemoved,u=(0,rt.Z)(t,tc),s=Z.useState(),f=(0,rr.Z)(s,2),h=f[0],d=f[1],p=Z.useRef(),v=Z.createElement(Qa,{container:h,ref:p,prefixCls:i,motion:r,maxCount:o,className:a,style:c,onAllRemoved:l}),g=Z.useState([]),m=(0,rr.Z)(g,2),y=m[0],b=m[1],x=Z.useMemo((function(){return{open:function(t){var e=function(){for(var t={},e=arguments.length,n=new Array(e),r=0;r ").concat(i),{verticalAlign:"text-bottom",marginInlineEnd:p,fontSize:f}),(0,V.Z)(e,"".concat(x,"-content"),{display:"inline-block",padding:y,background:b,borderRadius:g,boxShadow:o,pointerEvents:"all"}),(0,V.Z)(e,"".concat(r,"-success > ").concat(i),{color:c}),(0,V.Z)(e,"".concat(r,"-error > ").concat(i),{color:l}),(0,V.Z)(e,"".concat(r,"-warning > ").concat(i),{color:u}),(0,V.Z)(e,"".concat(r,"-info > ").concat(i,",\n ").concat(r,"-loading > ").concat(i),{color:s}),e);return[(0,V.Z)({},r,Object.assign(Object.assign({},(0,Qe.Wf)(t)),(n={color:a,position:"fixed",top:p,width:"100%",pointerEvents:"none",zIndex:m},(0,V.Z)(n,"".concat(r,"-move-up"),{animationFillMode:"forwards"}),(0,V.Z)(n,"\n ".concat(r,"-move-up-appear,\n ").concat(r,"-move-up-enter\n "),{animationName:w,animationDuration:d,animationPlayState:"paused",animationTimingFunction:h}),(0,V.Z)(n,"\n ".concat(r,"-move-up-appear").concat(r,"-move-up-appear-active,\n ").concat(r,"-move-up-enter").concat(r,"-move-up-enter-active\n "),{animationPlayState:"running"}),(0,V.Z)(n,"".concat(r,"-move-up-leave"),{animationName:S,animationDuration:d,animationPlayState:"paused",animationTimingFunction:h}),(0,V.Z)(n,"".concat(r,"-move-up-leave").concat(r,"-move-up-leave-active"),{animationPlayState:"running"}),(0,V.Z)(n,"&-rtl",{direction:"rtl",span:{direction:"rtl"}}),n))),(0,V.Z)({},r,(0,V.Z)({},x,Object.assign({},k))),(0,V.Z)({},"".concat(r,"-notice-pure-panel"),Object.assign(Object.assign({},k),{padding:0,textAlign:"start"}))]},oc=(0,se.Z)("Message",(function(t){var e=(0,nn.TS)(t,{height:150});return[ic(e)]}),(function(t){return{zIndexPopup:t.zIndexPopupBase+10,contentBg:t.colorBgElevated,contentPadding:"".concat((t.controlHeightLG-t.fontSize*t.lineHeight)/2,"px ").concat(t.paddingSM,"px")}}),{clientOnly:!0}),ac=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(t);i li":{width:"100%",height:S,listStyle:"none",background:g,borderRadius:w,"+ li":{marginBlockStart:k}}}),(0,V.Z)(n,"".concat(u,"> li:last-child:not(:first-child):not(:nth-child(2))"),{width:"61%"}),n)),(0,V.Z)(r,"&-round ".concat(a,"-content"),(0,V.Z)({},"".concat(l,", ").concat(u," > li"),{borderRadius:b})),r)),(0,V.Z)(o,"".concat(a,"-with-avatar ").concat(a,"-content"),(0,V.Z)({},"".concat(l),(0,V.Z)({marginBlockStart:y},"+ ".concat(u),{marginBlockStart:C}))),(0,V.Z)(o,"".concat(a).concat(a,"-element"),Object.assign(Object.assign(Object.assign(Object.assign({display:"inline-block",width:"auto"},function(t){var e=t.borderRadiusSM,n=t.skeletonButtonCls,r=t.controlHeight,i=t.controlHeightLG,o=t.controlHeightSM,a=t.gradientFromColor;return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign((0,V.Z)({},"".concat(n),Object.assign({display:"inline-block",verticalAlign:"top",background:a,borderRadius:e,width:2*r,minWidth:2*r},Dc(r))),_c(t,r,n)),(0,V.Z)({},"".concat(n,"-lg"),Object.assign({},Dc(i)))),_c(t,i,"".concat(n,"-lg"))),(0,V.Z)({},"".concat(n,"-sm"),Object.assign({},Dc(o)))),_c(t,o,"".concat(n,"-sm")))}(t)),function(t){var e,n=t.skeletonAvatarCls,r=t.gradientFromColor,i=t.controlHeight,o=t.controlHeightLG,a=t.controlHeightSM;return e={},(0,V.Z)(e,"".concat(n),Object.assign({display:"inline-block",verticalAlign:"top",background:r},Mc(i))),(0,V.Z)(e,"".concat(n).concat(n,"-circle"),{borderRadius:"50%"}),(0,V.Z)(e,"".concat(n).concat(n,"-lg"),Object.assign({},Mc(o))),(0,V.Z)(e,"".concat(n).concat(n,"-sm"),Object.assign({},Mc(a))),e}(t)),function(t){var e,n=t.controlHeight,r=t.borderRadiusSM,i=t.skeletonInputCls,o=t.controlHeightLG,a=t.controlHeightSM,c=t.gradientFromColor;return e={},(0,V.Z)(e,"".concat(i),Object.assign({display:"inline-block",verticalAlign:"top",background:c,borderRadius:r},Ac(n))),(0,V.Z)(e,"".concat(i,"-lg"),Object.assign({},Ac(o))),(0,V.Z)(e,"".concat(i,"-sm"),Object.assign({},Ac(a))),e}(t)),function(t){var e,n,r=t.skeletonImageCls,i=t.imageSizeBase,o=t.gradientFromColor,a=t.borderRadiusSM;return n={},(0,V.Z)(n,"".concat(r),Object.assign(Object.assign({display:"flex",alignItems:"center",justifyContent:"center",verticalAlign:"top",background:o,borderRadius:a},Pc(2*i)),(e={},(0,V.Z)(e,"".concat(r,"-path"),{fill:"#bfbfbf"}),(0,V.Z)(e,"".concat(r,"-svg"),Object.assign(Object.assign({},Pc(i)),{maxWidth:4*i,maxHeight:4*i})),(0,V.Z)(e,"".concat(r,"-svg").concat(r,"-svg-circle"),{borderRadius:"50%"}),e))),(0,V.Z)(n,"".concat(r).concat(r,"-circle"),{borderRadius:"50%"}),n}(t))),(0,V.Z)(o,"".concat(a).concat(a,"-block"),(i={width:"100%"},(0,V.Z)(i,"".concat(s),{width:"100%"}),(0,V.Z)(i,"".concat(f),{width:"100%"}),i)),(0,V.Z)(o,"".concat(a).concat(a,"-active"),(0,V.Z)({},"\n ".concat(l,",\n ").concat(u," > li,\n ").concat(c,",\n ").concat(s,",\n ").concat(f,",\n ").concat(h,"\n "),Object.assign({},function(t){return{background:t.skeletonLoadingBackground,backgroundSize:"400% 100%",animationName:Oc,animationDuration:t.skeletonLoadingMotionDuration,animationTimingFunction:"ease",animationIterationCount:"infinite"}}(t)))),o},Zc=(0,se.Z)("Skeleton",(function(t){var e=t.componentCls,n=(0,nn.TS)(t,{skeletonAvatarCls:"".concat(e,"-avatar"),skeletonTitleCls:"".concat(e,"-title"),skeletonParagraphCls:"".concat(e,"-paragraph"),skeletonButtonCls:"".concat(e,"-button"),skeletonInputCls:"".concat(e,"-input"),skeletonImageCls:"".concat(e,"-image"),imageSizeBase:1.5*t.controlHeight,borderRadius:100,skeletonLoadingBackground:"linear-gradient(90deg, ".concat(t.gradientFromColor," 25%, ").concat(t.gradientToColor," 37%, ").concat(t.gradientFromColor," 63%)"),skeletonLoadingMotionDuration:"1.4s"});return[Tc(n)]}),(function(t){var e=t.colorFillContent,n=t.colorFill;return{color:e,colorGradientEnd:n,gradientFromColor:e,gradientToColor:n,titleHeight:t.controlHeight/2,blockRadius:t.borderRadiusSM,paragraphMarginTop:t.marginLG+t.marginXXS,paragraphLiHeight:t.controlHeight/2}}),{deprecatedTokens:[["color","gradientFromColor"],["colorGradientEnd","gradientToColor"]]}),Fc=function(t){var e=t.prefixCls,n=t.className,r=t.rootClassName,i=t.active,o=t.shape,a=void 0===o?"circle":o,c=t.size,l=void 0===c?"default":c,u=(0,Z.useContext(Dt.E_).getPrefixCls)("skeleton",e),s=Zc(u),f=(0,G.Z)(s,2),h=f[0],d=f[1],p=(0,ce.Z)(t,["prefixCls","className"]),v=K()(u,"".concat(u,"-element"),(0,V.Z)({},"".concat(u,"-active"),i),n,r,d);return h(Z.createElement("div",{className:v},Z.createElement(Cc,Object.assign({prefixCls:"".concat(u,"-avatar"),shape:a,size:l},p))))},jc=function(t){var e,n=t.prefixCls,r=t.className,i=t.rootClassName,o=t.active,a=t.block,c=void 0!==a&&a,l=t.size,u=void 0===l?"default":l,s=(0,Z.useContext(Dt.E_).getPrefixCls)("skeleton",n),f=Zc(s),h=(0,G.Z)(f,2),d=h[0],p=h[1],v=(0,ce.Z)(t,["prefixCls"]),g=K()(s,"".concat(s,"-element"),(e={},(0,V.Z)(e,"".concat(s,"-active"),o),(0,V.Z)(e,"".concat(s,"-block"),c),e),r,i,p);return d(Z.createElement("div",{className:g},Z.createElement(Cc,Object.assign({prefixCls:"".concat(s,"-button"),size:u},v))))},Ic=function(t){var e=t.prefixCls,n=t.className,r=t.rootClassName,i=t.style,o=t.active,a=(0,Z.useContext(Dt.E_).getPrefixCls)("skeleton",e),c=Zc(a),l=(0,G.Z)(c,2),u=l[0],s=l[1],f=K()(a,"".concat(a,"-element"),(0,V.Z)({},"".concat(a,"-active"),o),n,r,s);return u(Z.createElement("div",{className:f},Z.createElement("div",{className:K()("".concat(a,"-image"),n),style:i},Z.createElement("svg",{viewBox:"0 0 1098 1024",xmlns:"http://www.w3.org/2000/svg",className:"".concat(a,"-image-svg")},Z.createElement("path",{d:"M365.714286 329.142857q0 45.714286-32.036571 77.677714t-77.677714 32.036571-77.677714-32.036571-32.036571-77.677714 32.036571-77.677714 77.677714-32.036571 77.677714 32.036571 32.036571 77.677714zM950.857143 548.571429l0 256-804.571429 0 0-109.714286 182.857143-182.857143 91.428571 91.428571 292.571429-292.571429zM1005.714286 146.285714l-914.285714 0q-7.460571 0-12.873143 5.412571t-5.412571 12.873143l0 694.857143q0 7.460571 5.412571 12.873143t12.873143 5.412571l914.285714 0q7.460571 0 12.873143-5.412571t5.412571-12.873143l0-694.857143q0-7.460571-5.412571-12.873143t-12.873143-5.412571zM1097.142857 164.571429l0 694.857143q0 37.741714-26.843429 64.585143t-64.585143 26.843429l-914.285714 0q-37.741714 0-64.585143-26.843429t-26.843429-64.585143l0-694.857143q0-37.741714 26.843429-64.585143t64.585143-26.843429l914.285714 0q37.741714 0 64.585143 26.843429t26.843429 64.585143z",className:"".concat(a,"-image-path")})))))},Rc=function(t){var e,n=t.prefixCls,r=t.className,i=t.rootClassName,o=t.active,a=t.block,c=t.size,l=void 0===c?"default":c,u=(0,Z.useContext(Dt.E_).getPrefixCls)("skeleton",n),s=Zc(u),f=(0,G.Z)(s,2),h=f[0],d=f[1],p=(0,ce.Z)(t,["prefixCls"]),v=K()(u,"".concat(u,"-element"),(e={},(0,V.Z)(e,"".concat(u,"-active"),o),(0,V.Z)(e,"".concat(u,"-block"),a),e),r,i,d);return h(Z.createElement("div",{className:v},Z.createElement(Cc,Object.assign({prefixCls:"".concat(u,"-input"),size:l},p))))},Lc={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M888 792H200V168c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h752c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM288 604a64 64 0 10128 0 64 64 0 10-128 0zm118-224a48 48 0 1096 0 48 48 0 10-96 0zm158 228a96 96 0 10192 0 96 96 0 10-192 0zm148-314a56 56 0 10112 0 56 56 0 10-112 0z"}}]},name:"dot-chart",theme:"outlined"},Nc=function(t,e){return Z.createElement(Wt.Z,(0,J.Z)({},t,{ref:e,icon:Lc}))};var Bc=Z.forwardRef(Nc),zc=function(t){var e=t.prefixCls,n=t.className,r=t.rootClassName,i=t.style,o=t.active,a=t.children,c=(0,Z.useContext(Dt.E_).getPrefixCls)("skeleton",e),l=Zc(c),u=(0,G.Z)(l,2),s=u[0],f=u[1],h=K()(c,"".concat(c,"-element"),(0,V.Z)({},"".concat(c,"-active"),o),f,n,r),d=null!=a?a:Z.createElement(Bc,null);return s(Z.createElement("div",{className:h},Z.createElement("div",{className:K()("".concat(c,"-image"),n),style:i},d)))},Uc=function(t){var e=function(e){var n=t.width,r=t.rows,i=void 0===r?2:r;return Array.isArray(n)?n[e]:i-1===e?n:void 0},n=t.prefixCls,r=t.className,i=t.style,o=t.rows,a=(0,Y.Z)(Array(o)).map((function(t,n){return Z.createElement("li",{key:n,style:{width:e(n)}})}));return Z.createElement("ul",{className:K()(n,r),style:i},a)},Hc=function(t){var e=t.prefixCls,n=t.className,r=t.width,i=t.style;return Z.createElement("h3",{className:K()(e,n),style:Object.assign({width:r},i)})};function Wc(t){return t&&"object"==typeof t?t:{}}var Vc=function(t){var e=t.prefixCls,n=t.loading,r=t.className,i=t.rootClassName,o=t.style,a=t.children,c=t.avatar,l=void 0!==c&&c,u=t.title,s=void 0===u||u,f=t.paragraph,h=void 0===f||f,d=t.active,p=t.round,v=Z.useContext(Dt.E_),g=v.getPrefixCls,m=v.direction,y=v.skeleton,b=g("skeleton",e),x=Zc(b),w=(0,G.Z)(x,2),S=w[0],k=w[1];if(n||!("loading"in t)){var C,O,E,M=!!l,A=!!s,P=!!h;if(M){var _=Object.assign(Object.assign({prefixCls:"".concat(b,"-avatar")},function(t,e){return t&&!e?{size:"large",shape:"square"}:{size:"large",shape:"circle"}}(A,P)),Wc(l));O=Z.createElement("div",{className:"".concat(b,"-header")},Z.createElement(Cc,Object.assign({},_)))}if(A||P){var D,T;if(A){var F=Object.assign(Object.assign({prefixCls:"".concat(b,"-title")},function(t,e){return!t&&e?{width:"38%"}:t&&e?{width:"50%"}:{}}(M,P)),Wc(s));D=Z.createElement(Hc,Object.assign({},F))}if(P){var j=Object.assign(Object.assign({prefixCls:"".concat(b,"-paragraph")},function(t,e){var n={};return t&&e||(n.width="61%"),n.rows=!t&&e?3:2,n}(M,A)),Wc(h));T=Z.createElement(Uc,Object.assign({},j))}E=Z.createElement("div",{className:"".concat(b,"-content")},D,T)}var I=K()(b,(C={},(0,V.Z)(C,"".concat(b,"-with-avatar"),M),(0,V.Z)(C,"".concat(b,"-active"),d),(0,V.Z)(C,"".concat(b,"-rtl"),"rtl"===m),(0,V.Z)(C,"".concat(b,"-round"),p),C),null==y?void 0:y.className,r,i,k);return S(Z.createElement("div",{className:I,style:Object.assign(Object.assign({},null==y?void 0:y.style),o)},O,E))}return void 0!==a?a:null};Vc.Button=jc,Vc.Avatar=Fc,Vc.Input=Rc,Vc.Image=Ic,Vc.Node=zc;var Gc=Vc,Xc=n(28893),qc=["title","titleId"];var Yc=Z.forwardRef((function(t,e){var n=t.title,r=t.titleId,i=(0,I.Z)(t,qc);return Z.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true",ref:e,"aria-labelledby":r},i),n?Z.createElement("title",{id:r},n):null,Z.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 20.25c4.97 0 9-3.694 9-8.25s-4.03-8.25-9-8.25S3 7.444 3 12c0 2.104.859 4.023 2.273 5.48.432.447.74 1.04.586 1.641a4.483 4.483 0 01-.923 1.785A5.969 5.969 0 006 21c1.282 0 2.47-.402 3.445-1.087.81.22 1.668.337 2.555.337z"}))})),$c=["title","titleId"];var Kc=Z.forwardRef((function(t,e){var n=t.title,r=t.titleId,i=(0,I.Z)(t,$c);return Z.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true",ref:e,"aria-labelledby":r},i),n?Z.createElement("title",{id:r},n):null,Z.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M5.25 8.25h15m-16.5 7.5h15m-1.8-13.5l-3.9 19.5m-2.1-19.5l-3.9 19.5"}))})),Jc=["title","titleId"];var Qc=Z.forwardRef((function(t,e){var n=t.title,r=t.titleId,i=(0,I.Z)(t,Jc);return Z.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true",ref:e,"aria-labelledby":r},i),n?Z.createElement("title",{id:r},n):null,Z.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z"}))})),tl=["title","titleId"];var el=Z.forwardRef((function(t,e){var n=t.title,r=t.titleId,i=(0,I.Z)(t,tl);return Z.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true",ref:e,"aria-labelledby":r},i),n?Z.createElement("title",{id:r},n):null,Z.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z"}),Z.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 6h.008v.008H6V6z"}))})),nl=["title","titleId"];var rl=Z.forwardRef((function(t,e){var n=t.title,r=t.titleId,i=(0,I.Z)(t,nl);return Z.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true",ref:e,"aria-labelledby":r},i),n?Z.createElement("title",{id:r},n):null,Z.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19.5 14.25v-2.625a3.375 3.375 0 00-3.375-3.375h-1.5A1.125 1.125 0 0113.5 7.125v-1.5a3.375 3.375 0 00-3.375-3.375H8.25M9 16.5v.75m3-3v3M15 12v5.25m-4.5-15H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 00-9-9z"}))})),il=["title","titleId"];var ol=Z.forwardRef((function(t,e){var n=t.title,r=t.titleId,i=(0,I.Z)(t,il);return Z.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true",ref:e,"aria-labelledby":r},i),n?Z.createElement("title",{id:r},n):null,Z.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M8.25 7.5V6.108c0-1.135.845-2.098 1.976-2.192.373-.03.748-.057 1.123-.08M15.75 18H18a2.25 2.25 0 002.25-2.25V6.108c0-1.135-.845-2.098-1.976-2.192a48.424 48.424 0 00-1.123-.08M15.75 18.75v-1.875a3.375 3.375 0 00-3.375-3.375h-1.5a1.125 1.125 0 01-1.125-1.125v-1.5A3.375 3.375 0 006.375 7.5H5.25m11.9-3.664A2.251 2.251 0 0015 2.25h-1.5a2.251 2.251 0 00-2.15 1.586m5.8 0c.065.21.1.433.1.664v.75h-6V4.5c0-.231.035-.454.1-.664M6.75 7.5H4.875c-.621 0-1.125.504-1.125 1.125v12c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V16.5a9 9 0 00-9-9z"}))})),al=n(45728);function cl(t){return!(!t||!t.then)}var ll=function(t){var e=t.type,n=t.children,r=t.prefixCls,i=t.buttonProps,o=t.close,a=t.autoFocus,c=t.emitEvent,l=t.isSilent,u=t.quitOnNullishReturnValue,s=t.actionFn,f=Z.useRef(!1),h=Z.useRef(null),d=(0,al.Z)(!1),p=(0,G.Z)(d,2),v=p[0],g=p[1],m=function(){null==o||o.apply(void 0,arguments)};Z.useEffect((function(){var t=null;return a&&(t=setTimeout((function(){var t;null===(t=h.current)||void 0===t||t.focus()}))),function(){t&&clearTimeout(t)}}),[]);return Z.createElement(En,Object.assign({},kn(e),{onClick:function(t){if(!f.current)if(f.current=!0,s){var e;if(c){if(e=s(t),u&&!cl(e))return f.current=!1,void m(t)}else if(s.length)e=s(o),f.current=!1;else if(!(e=s()))return void m();!function(t){cl(t)&&(g(!0),t.then((function(){g(!1,!0),m.apply(void 0,arguments),f.current=!1}),(function(t){if(g(!1,!0),f.current=!1,!(null==l?void 0:l()))return Promise.reject(t)})))}(e)}else m()},loading:v,prefixCls:r},i,{ref:h}),n)},ul=n(55553);function sl(t,e,n){var r=e;return!r&&n&&(r="".concat(t,"-").concat(n)),r}function fl(t,e){var n=t["page".concat(e?"Y":"X","Offset")],r="scroll".concat(e?"Top":"Left");if("number"!=typeof n){var i=t.document;"number"!=typeof(n=i.documentElement[r])&&(n=i.body[r])}return n}var hl=Z.memo((function(t){return t.children}),(function(t,e){return!e.shouldUpdate})),dl={width:0,height:0,overflow:"hidden",outline:"none"},pl=Z.forwardRef((function(t,e){var n=t.prefixCls,r=t.className,i=t.style,o=t.title,a=t.ariaId,c=t.footer,l=t.closable,u=t.closeIcon,s=t.onClose,f=t.children,h=t.bodyStyle,d=t.bodyProps,p=t.modalRender,v=t.onMouseDown,g=t.onMouseUp,m=t.holderRef,y=t.visible,b=t.forceRender,x=t.width,w=t.height,S=(0,Z.useRef)(),k=(0,Z.useRef)();Z.useImperativeHandle(e,(function(){return{focus:function(){var t;null===(t=S.current)||void 0===t||t.focus()},changeActive:function(t){var e=document.activeElement;t&&e===k.current?S.current.focus():t||e!==S.current||k.current.focus()}}}));var C,O,E,M={};void 0!==x&&(M.width=x),void 0!==w&&(M.height=w),c&&(C=Z.createElement("div",{className:"".concat(n,"-footer")},c)),o&&(O=Z.createElement("div",{className:"".concat(n,"-header")},Z.createElement("div",{className:"".concat(n,"-title"),id:a},o))),l&&(E=Z.createElement("button",{type:"button",onClick:s,"aria-label":"Close",className:"".concat(n,"-close")},u||Z.createElement("span",{className:"".concat(n,"-close-x")})));var A=Z.createElement("div",{className:"".concat(n,"-content")},E,O,Z.createElement("div",(0,J.Z)({className:"".concat(n,"-body"),style:h},d),f),C);return Z.createElement("div",{key:"dialog-element",role:"dialog","aria-labelledby":o?a:null,"aria-modal":"true",ref:m,style:(0,lt.Z)((0,lt.Z)({},i),M),className:K()(n,r),onMouseDown:v,onMouseUp:g},Z.createElement("div",{tabIndex:0,ref:S,style:dl,"aria-hidden":"true"}),Z.createElement(hl,{shouldUpdate:y||b},p?p(A):A),Z.createElement("div",{tabIndex:0,ref:k,style:dl,"aria-hidden":"true"}))}));var vl=pl,gl=Z.forwardRef((function(t,e){var n=t.prefixCls,r=t.title,i=t.style,o=t.className,a=t.visible,c=t.forceRender,l=t.destroyOnClose,u=t.motionName,s=t.ariaId,f=t.onVisibleChanged,h=t.mousePosition,d=(0,Z.useRef)(),p=Z.useState(),v=(0,rr.Z)(p,2),g=v[0],m=v[1],y={};function b(){var t=function(t){var e=t.getBoundingClientRect(),n={left:e.left,top:e.top},r=t.ownerDocument,i=r.defaultView||r.parentWindow;return n.left+=fl(i),n.top+=fl(i,!0),n}(d.current);m(h?"".concat(h.x-t.left,"px ").concat(h.y-t.top,"px"):"")}return g&&(y.transformOrigin=g),Z.createElement(ne.ZP,{visible:a,onVisibleChanged:f,onAppearPrepare:b,onEnterPrepare:b,forceRender:c,motionName:u,removeOnLeave:l,ref:d},(function(a,c){var l=a.className,u=a.style;return Z.createElement(vl,(0,J.Z)({},t,{ref:e,title:r,ariaId:s,prefixCls:n,holderRef:c,style:(0,lt.Z)((0,lt.Z)((0,lt.Z)({},u),i),y),className:K()(o,l)}))}))}));gl.displayName="Content";var ml=gl;function yl(t){var e=t.prefixCls,n=t.style,r=t.visible,i=t.maskProps,o=t.motionName;return Z.createElement(ne.ZP,{key:"mask",visible:r,motionName:o,leavedClassName:"".concat(e,"-mask-hidden")},(function(t,r){var o=t.className,a=t.style;return Z.createElement("div",(0,J.Z)({ref:r,style:(0,lt.Z)((0,lt.Z)({},a),n),className:K()("".concat(e,"-mask"),o)},i))}))}function bl(t){var e=t.prefixCls,n=void 0===e?"rc-dialog":e,r=t.zIndex,i=t.visible,o=void 0!==i&&i,a=t.keyboard,c=void 0===a||a,l=t.focusTriggerAfterClose,u=void 0===l||l,s=t.wrapStyle,f=t.wrapClassName,h=t.wrapProps,d=t.onClose,p=t.afterOpenChange,v=t.afterClose,g=t.transitionName,m=t.animation,y=t.closable,b=void 0===y||y,x=t.mask,w=void 0===x||x,S=t.maskTransitionName,k=t.maskAnimation,C=t.maskClosable,O=void 0===C||C,E=t.maskStyle,M=t.maskProps,A=t.rootClassName,P=(0,Z.useRef)(),_=(0,Z.useRef)(),D=(0,Z.useRef)(),T=Z.useState(o),F=(0,rr.Z)(T,2),j=F[0],I=F[1],R=ci();function L(t){null==d||d(t)}var N=(0,Z.useRef)(!1),B=(0,Z.useRef)(),z=null;return O&&(z=function(t){N.current?N.current=!1:_.current===t.target&&L(t)}),(0,Z.useEffect)((function(){o&&(I(!0),(0,ul.Z)(_.current,document.activeElement)||(P.current=document.activeElement))}),[o]),(0,Z.useEffect)((function(){return function(){clearTimeout(B.current)}}),[]),Z.createElement("div",(0,J.Z)({className:K()("".concat(n,"-root"),A)},dt(t,{data:!0})),Z.createElement(yl,{prefixCls:n,visible:w&&o,motionName:sl(n,S,k),style:(0,lt.Z)({zIndex:r},E),maskProps:M}),Z.createElement("div",(0,J.Z)({tabIndex:-1,onKeyDown:function(t){if(c&&t.keyCode===Ya.Z.ESC)return t.stopPropagation(),void L(t);o&&t.keyCode===Ya.Z.TAB&&D.current.changeActive(!t.shiftKey)},className:K()("".concat(n,"-wrap"),f),ref:_,onClick:z,style:(0,lt.Z)((0,lt.Z)({zIndex:r},s),{},{display:j?null:"none"})},h),Z.createElement(ml,(0,J.Z)({},t,{onMouseDown:function(){clearTimeout(B.current),N.current=!0},onMouseUp:function(){B.current=setTimeout((function(){N.current=!1}))},ref:D,closable:b,ariaId:R,prefixCls:n,visible:o&&j,onClose:L,onVisibleChanged:function(t){if(t)(0,ul.Z)(_.current,document.activeElement)||null===(e=D.current)||void 0===e||e.focus();else{if(I(!1),w&&P.current&&u){try{P.current.focus({preventScroll:!0})}catch(F2t){}P.current=null}j&&(null==v||v())}var e;null==p||p(t)},motionName:sl(n,g,m)}))))}var xl=function(t){var e=t.visible,n=t.getContainer,r=t.forceRender,i=t.destroyOnClose,o=void 0!==i&&i,a=t.afterClose,c=Z.useState(e),l=(0,rr.Z)(c,2),u=l[0],s=l[1];return Z.useEffect((function(){e&&s(!0)}),[e]),r||!o||u?Z.createElement(Er,{open:e||r||u,autoDestroy:!1,getContainer:n,autoLock:e||u},Z.createElement(bl,(0,J.Z)({},t,{destroyOnClose:o,afterClose:function(){null==a||a(),s(!1)}}))):null};xl.displayName="Dialog";var wl=xl;var Sl,kl=function(){return(0,ir.Z)()&&window.document.documentElement},Cl=n(81083),Ol="RC_FORM_INTERNAL_HOOKS",El=function(){(0,bt.ZP)(!1,"Can not find FormContext. Please make sure you wrap Field under Form.")},Ml=Z.createContext({getFieldValue:El,getFieldsValue:El,getFieldError:El,getFieldWarning:El,getFieldsError:El,isFieldsTouched:El,isFieldTouched:El,isFieldValidating:El,isFieldsValidating:El,resetFields:El,setFields:El,setFieldValue:El,setFieldsValue:El,validateFields:El,submit:El,getInternalHooks:function(){return El(),{dispatch:El,initEntityValue:El,registerField:El,useSubscribe:El,setInitialValues:El,destroyForm:El,setCallbacks:El,registerWatch:El,getFields:El,setValidateMessages:El,setPreserve:El,getInitialValue:El}}}),Al=Z.createContext(null);function Pl(t){return null==t?[]:Array.isArray(t)?t:[t]}function _l(){return _l=Object.assign?Object.assign.bind():function(t){for(var e=1;e1?e-1:0),r=1;r=o)return t;switch(t){case"%s":return String(n[i++]);case"%d":return Number(n[i++]);case"%j":try{return JSON.stringify(n[i++])}catch(e){return"[Circular]"}break;default:return t}}));return a}return t}function Ll(t,e){return null==t||(!("array"!==e||!Array.isArray(t)||t.length)||!(!function(t){return"string"===t||"url"===t||"hex"===t||"email"===t||"date"===t||"pattern"===t}(e)||"string"!=typeof t||t))}function Nl(t,e,n){var r=0,i=t.length;!function o(a){if(a&&a.length)n(a);else{var c=r;r+=1,c()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+\.)+[a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}))$/,Xl=/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i,ql={integer:function(t){return ql.number(t)&&parseInt(t,10)===t},float:function(t){return ql.number(t)&&!ql.integer(t)},array:function(t){return Array.isArray(t)},regexp:function(t){if(t instanceof RegExp)return!0;try{return!!new RegExp(t)}catch(F2t){return!1}},date:function(t){return"function"==typeof t.getTime&&"function"==typeof t.getMonth&&"function"==typeof t.getYear&&!isNaN(t.getTime())},number:function(t){return!isNaN(t)&&"number"==typeof t},object:function(t){return"object"==typeof t&&!ql.array(t)},method:function(t){return"function"==typeof t},email:function(t){return"string"==typeof t&&t.length<=320&&!!t.match(Gl)},url:function(t){return"string"==typeof t&&t.length<=2048&&!!t.match(function(){if(Wl)return Wl;var t="[a-fA-F\\d:]",e=function(e){return e&&e.includeBoundaries?"(?:(?<=\\s|^)(?="+t+")|(?<="+t+")(?=\\s|$))":""},n="(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}",r="[a-fA-F\\d]{1,4}",i=("\n(?:\n(?:"+r+":){7}(?:"+r+"|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8\n(?:"+r+":){6}(?:"+n+"|:"+r+"|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4\n(?:"+r+":){5}(?::"+n+"|(?::"+r+"){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4\n(?:"+r+":){4}(?:(?::"+r+"){0,1}:"+n+"|(?::"+r+"){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4\n(?:"+r+":){3}(?:(?::"+r+"){0,2}:"+n+"|(?::"+r+"){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4\n(?:"+r+":){2}(?:(?::"+r+"){0,3}:"+n+"|(?::"+r+"){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4\n(?:"+r+":){1}(?:(?::"+r+"){0,4}:"+n+"|(?::"+r+"){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4\n(?::(?:(?::"+r+"){0,5}:"+n+"|(?::"+r+"){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4\n)(?:%[0-9a-zA-Z]{1,})? // %eth0 %1\n").replace(/\s*\/\/.*$/gm,"").replace(/\n/g,"").trim(),o=new RegExp("(?:^"+n+"$)|(?:^"+i+"$)"),a=new RegExp("^"+n+"$"),c=new RegExp("^"+i+"$"),l=function(t){return t&&t.exact?o:new RegExp("(?:"+e(t)+n+e(t)+")|(?:"+e(t)+i+e(t)+")","g")};l.v4=function(t){return t&&t.exact?a:new RegExp(""+e(t)+n+e(t),"g")},l.v6=function(t){return t&&t.exact?c:new RegExp(""+e(t)+i+e(t),"g")};var u=l.v4().source,s=l.v6().source;return Wl=new RegExp("(?:^(?:(?:(?:[a-z]+:)?//)|www\\.)(?:\\S+(?::\\S*)?@)?(?:localhost|"+u+"|"+s+'|(?:(?:[a-z\\u00a1-\\uffff0-9][-_]*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))(?::\\d{2,5})?(?:[/?#][^\\s"]*)?$)',"i")}())},hex:function(t){return"string"==typeof t&&!!t.match(Xl)}},Yl="enum",$l={required:Vl,whitespace:function(t,e,n,r,i){(/^\s+$/.test(e)||""===e)&&r.push(Rl(i.messages.whitespace,t.fullField))},type:function(t,e,n,r,i){if(t.required&&void 0===e)Vl(t,e,n,r,i);else{var o=t.type;["integer","float","array","regexp","object","method","email","number","date","url","hex"].indexOf(o)>-1?ql[o](e)||r.push(Rl(i.messages.types[o],t.fullField,t.type)):o&&typeof e!==t.type&&r.push(Rl(i.messages.types[o],t.fullField,t.type))}},range:function(t,e,n,r,i){var o="number"==typeof t.len,a="number"==typeof t.min,c="number"==typeof t.max,l=e,u=null,s="number"==typeof e,f="string"==typeof e,h=Array.isArray(e);if(s?u="number":f?u="string":h&&(u="array"),!u)return!1;h&&(l=e.length),f&&(l=e.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"_").length),o?l!==t.len&&r.push(Rl(i.messages[u].len,t.fullField,t.len)):a&&!c&&lt.max?r.push(Rl(i.messages[u].max,t.fullField,t.max)):a&&c&&(lt.max)&&r.push(Rl(i.messages[u].range,t.fullField,t.min,t.max))},enum:function(t,e,n,r,i){t[Yl]=Array.isArray(t[Yl])?t[Yl]:[],-1===t[Yl].indexOf(e)&&r.push(Rl(i.messages[Yl],t.fullField,t[Yl].join(", ")))},pattern:function(t,e,n,r,i){if(t.pattern)if(t.pattern instanceof RegExp)t.pattern.lastIndex=0,t.pattern.test(e)||r.push(Rl(i.messages.pattern.mismatch,t.fullField,e,t.pattern));else if("string"==typeof t.pattern){new RegExp(t.pattern).test(e)||r.push(Rl(i.messages.pattern.mismatch,t.fullField,e,t.pattern))}}},Kl=function(t,e,n,r,i){var o=t.type,a=[];if(t.required||!t.required&&r.hasOwnProperty(t.field)){if(Ll(e,o)&&!t.required)return n();$l.required(t,e,r,a,i,o),Ll(e,o)||$l.type(t,e,r,a,i)}n(a)},Jl={string:function(t,e,n,r,i){var o=[];if(t.required||!t.required&&r.hasOwnProperty(t.field)){if(Ll(e,"string")&&!t.required)return n();$l.required(t,e,r,o,i,"string"),Ll(e,"string")||($l.type(t,e,r,o,i),$l.range(t,e,r,o,i),$l.pattern(t,e,r,o,i),!0===t.whitespace&&$l.whitespace(t,e,r,o,i))}n(o)},method:function(t,e,n,r,i){var o=[];if(t.required||!t.required&&r.hasOwnProperty(t.field)){if(Ll(e)&&!t.required)return n();$l.required(t,e,r,o,i),void 0!==e&&$l.type(t,e,r,o,i)}n(o)},number:function(t,e,n,r,i){var o=[];if(t.required||!t.required&&r.hasOwnProperty(t.field)){if(""===e&&(e=void 0),Ll(e)&&!t.required)return n();$l.required(t,e,r,o,i),void 0!==e&&($l.type(t,e,r,o,i),$l.range(t,e,r,o,i))}n(o)},boolean:function(t,e,n,r,i){var o=[];if(t.required||!t.required&&r.hasOwnProperty(t.field)){if(Ll(e)&&!t.required)return n();$l.required(t,e,r,o,i),void 0!==e&&$l.type(t,e,r,o,i)}n(o)},regexp:function(t,e,n,r,i){var o=[];if(t.required||!t.required&&r.hasOwnProperty(t.field)){if(Ll(e)&&!t.required)return n();$l.required(t,e,r,o,i),Ll(e)||$l.type(t,e,r,o,i)}n(o)},integer:function(t,e,n,r,i){var o=[];if(t.required||!t.required&&r.hasOwnProperty(t.field)){if(Ll(e)&&!t.required)return n();$l.required(t,e,r,o,i),void 0!==e&&($l.type(t,e,r,o,i),$l.range(t,e,r,o,i))}n(o)},float:function(t,e,n,r,i){var o=[];if(t.required||!t.required&&r.hasOwnProperty(t.field)){if(Ll(e)&&!t.required)return n();$l.required(t,e,r,o,i),void 0!==e&&($l.type(t,e,r,o,i),$l.range(t,e,r,o,i))}n(o)},array:function(t,e,n,r,i){var o=[];if(t.required||!t.required&&r.hasOwnProperty(t.field)){if(null==e&&!t.required)return n();$l.required(t,e,r,o,i,"array"),null!=e&&($l.type(t,e,r,o,i),$l.range(t,e,r,o,i))}n(o)},object:function(t,e,n,r,i){var o=[];if(t.required||!t.required&&r.hasOwnProperty(t.field)){if(Ll(e)&&!t.required)return n();$l.required(t,e,r,o,i),void 0!==e&&$l.type(t,e,r,o,i)}n(o)},enum:function(t,e,n,r,i){var o=[];if(t.required||!t.required&&r.hasOwnProperty(t.field)){if(Ll(e)&&!t.required)return n();$l.required(t,e,r,o,i),void 0!==e&&$l.enum(t,e,r,o,i)}n(o)},pattern:function(t,e,n,r,i){var o=[];if(t.required||!t.required&&r.hasOwnProperty(t.field)){if(Ll(e,"string")&&!t.required)return n();$l.required(t,e,r,o,i),Ll(e,"string")||$l.pattern(t,e,r,o,i)}n(o)},date:function(t,e,n,r,i){var o=[];if(t.required||!t.required&&r.hasOwnProperty(t.field)){if(Ll(e,"date")&&!t.required)return n();var a;if($l.required(t,e,r,o,i),!Ll(e,"date"))a=e instanceof Date?e:new Date(e),$l.type(t,a,r,o,i),a&&$l.range(t,a.getTime(),r,o,i)}n(o)},url:Kl,hex:Kl,email:Kl,required:function(t,e,n,r,i){var o=[],a=Array.isArray(e)?"array":typeof e;$l.required(t,e,r,o,i,a),n(o)},any:function(t,e,n,r,i){var o=[];if(t.required||!t.required&&r.hasOwnProperty(t.field)){if(Ll(e)&&!t.required)return n();$l.required(t,e,r,o,i)}n(o)}};function Ql(){return{default:"Validation error on field %s",required:"%s is required",enum:"%s must be one of %s",whitespace:"%s cannot be empty",date:{format:"%s date %s is invalid for format %s",parse:"%s date could not be parsed, %s is invalid ",invalid:"%s date %s is invalid"},types:{string:"%s is not a %s",method:"%s is not a %s (function)",array:"%s is not an %s",object:"%s is not an %s",number:"%s is not a %s",date:"%s is not a %s",boolean:"%s is not a %s",integer:"%s is not an %s",float:"%s is not a %s",regexp:"%s is not a valid %s",email:"%s is not a valid %s",url:"%s is not a valid %s",hex:"%s is not a valid %s"},string:{len:"%s must be exactly %s characters",min:"%s must be at least %s characters",max:"%s cannot be longer than %s characters",range:"%s must be between %s and %s characters"},number:{len:"%s must equal %s",min:"%s cannot be less than %s",max:"%s cannot be greater than %s",range:"%s must be between %s and %s"},array:{len:"%s must be exactly %s in length",min:"%s cannot be less than %s in length",max:"%s cannot be greater than %s in length",range:"%s must be between %s and %s in length"},pattern:{mismatch:"%s value %s does not match pattern %s"},clone:function(){var t=JSON.parse(JSON.stringify(this));return t.clone=this.clone,t}}}var tu=Ql(),eu=function(){function t(t){this.rules=null,this._messages=tu,this.define(t)}var e=t.prototype;return e.define=function(t){var e=this;if(!t)throw new Error("Cannot configure a schema with no rules");if("object"!=typeof t||Array.isArray(t))throw new Error("Rules must be an object");this.rules={},Object.keys(t).forEach((function(n){var r=t[n];e.rules[n]=Array.isArray(r)?r:[r]}))},e.messages=function(t){return t&&(this._messages=Hl(Ql(),t)),this._messages},e.validate=function(e,n,r){var i=this;void 0===n&&(n={}),void 0===r&&(r=function(){});var o=e,a=n,c=r;if("function"==typeof a&&(c=a,a={}),!this.rules||0===Object.keys(this.rules).length)return c&&c(null,o),Promise.resolve(o);if(a.messages){var l=this.messages();l===tu&&(l=Ql()),Hl(l,a.messages),a.messages=l}else a.messages=this.messages();var u={};(a.keys||Object.keys(this.rules)).forEach((function(t){var n=i.rules[t],r=o[t];n.forEach((function(n){var a=n;"function"==typeof a.transform&&(o===e&&(o=_l({},o)),r=o[t]=a.transform(r)),(a="function"==typeof a?{validator:a}:_l({},a)).validator=i.getValidationMethod(a),a.validator&&(a.field=t,a.fullField=a.fullField||t,a.type=i.getType(a),u[t]=u[t]||[],u[t].push({rule:a,value:r,source:o,field:t}))}))}));var s={};return zl(u,a,(function(e,n){var r,i=e.rule,c=!("object"!==i.type&&"array"!==i.type||"object"!=typeof i.fields&&"object"!=typeof i.defaultField);function l(t,e){return _l({},e,{fullField:i.fullField+"."+t,fullFields:i.fullFields?[].concat(i.fullFields,[t]):[t]})}function u(r){void 0===r&&(r=[]);var u=Array.isArray(r)?r:[r];!a.suppressWarning&&u.length&&t.warning("async-validator:",u),u.length&&void 0!==i.message&&(u=[].concat(i.message));var f=u.map(Ul(i,o));if(a.first&&f.length)return s[i.field]=1,n(f);if(c){if(i.required&&!e.value)return void 0!==i.message?f=[].concat(i.message).map(Ul(i,o)):a.error&&(f=[a.error(i,Rl(a.messages.required,i.field))]),n(f);var h={};i.defaultField&&Object.keys(e.value).map((function(t){h[t]=i.defaultField})),h=_l({},h,e.rule.fields);var d={};Object.keys(h).forEach((function(t){var e=h[t],n=Array.isArray(e)?e:[e];d[t]=n.map(l.bind(null,t))}));var p=new t(d);p.messages(a.messages),e.rule.options&&(e.rule.options.messages=a.messages,e.rule.options.error=a.error),p.validate(e.value,e.rule.options||a,(function(t){var e=[];f&&f.length&&e.push.apply(e,f),t&&t.length&&e.push.apply(e,t),n(e.length?e:null)}))}else n(f)}if(c=c&&(i.required||!i.required&&e.value),i.field=e.field,i.asyncValidator)r=i.asyncValidator(i,e.value,u,e.source,a);else if(i.validator){try{r=i.validator(i,e.value,u,e.source,a)}catch(f){null==console.error||console.error(f),a.suppressValidatorError||setTimeout((function(){throw f}),0),u(f.message)}!0===r?u():!1===r?u("function"==typeof i.message?i.message(i.fullField||i.field):i.message||(i.fullField||i.field)+" fails"):r instanceof Array?u(r):r instanceof Error&&u(r.message)}r&&r.then&&r.then((function(){return u()}),(function(t){return u(t)}))}),(function(t){!function(t){var e=[],n={};function r(t){var n;Array.isArray(t)?e=(n=e).concat.apply(n,t):e.push(t)}for(var i=0;i=r||n<0||n>=r)return t;var i=t[e],o=e-n;return o>0?[].concat((0,Y.Z)(t.slice(0,n)),[i],(0,Y.Z)(t.slice(n,e)),(0,Y.Z)(t.slice(e+1,r))):o<0?[].concat((0,Y.Z)(t.slice(0,e)),(0,Y.Z)(t.slice(e+1,n+1)),[i],(0,Y.Z)(t.slice(n+1,r))):t}var bu=["name"],xu=[];function wu(t,e,n,r,i,o){return"function"==typeof t?t(e,n,"source"in o?{source:o.source}:{}):r!==i}var Su=function(t){(0,et.Z)(n,t);var e=(0,nt.Z)(n);function n(t){var r;((0,Q.Z)(this,n),(r=e.call(this,t)).state={resetCount:0},r.cancelRegisterFunc=null,r.mounted=!1,r.touched=!1,r.dirty=!1,r.validatePromise=void 0,r.prevValidating=void 0,r.errors=xu,r.warnings=xu,r.cancelRegister=function(){var t=r.props,e=t.preserve,n=t.isListField,i=t.name;r.cancelRegisterFunc&&r.cancelRegisterFunc(n,e,du(i)),r.cancelRegisterFunc=null},r.getNamePath=function(){var t=r.props,e=t.name,n=t.fieldContext.prefixName,i=void 0===n?[]:n;return void 0!==e?[].concat((0,Y.Z)(i),(0,Y.Z)(e)):[]},r.getRules=function(){var t=r.props,e=t.rules,n=void 0===e?[]:e,i=t.fieldContext;return n.map((function(t){return"function"==typeof t?t(i):t}))},r.refresh=function(){r.mounted&&r.setState((function(t){return{resetCount:t.resetCount+1}}))},r.metaCache=null,r.triggerMetaEvent=function(t){var e=r.props.onMetaChange;if(e){var n=(0,lt.Z)((0,lt.Z)({},r.getMeta()),{},{destroy:t});(0,Pa.Z)(r.metaCache,n)||e(n),r.metaCache=n}else r.metaCache=null},r.onStoreChange=function(t,e,n){var i=r.props,o=i.shouldUpdate,a=i.dependencies,c=void 0===a?[]:a,l=i.onReset,u=n.store,s=r.getNamePath(),f=r.getValue(t),h=r.getValue(u),d=e&&vu(e,s);switch("valueUpdate"===n.type&&"external"===n.source&&f!==h&&(r.touched=!0,r.dirty=!0,r.validatePromise=null,r.errors=xu,r.warnings=xu,r.triggerMetaEvent()),n.type){case"reset":if(!e||d)return r.touched=!1,r.dirty=!1,r.validatePromise=void 0,r.errors=xu,r.warnings=xu,r.triggerMetaEvent(),null==l||l(),void r.refresh();break;case"remove":if(o)return void r.reRender();break;case"setField":if(d){var p=n.data;return"touched"in p&&(r.touched=p.touched),"validating"in p&&!("originRCField"in p)&&(r.validatePromise=p.validating?Promise.resolve([]):null),"errors"in p&&(r.errors=p.errors||xu),"warnings"in p&&(r.warnings=p.warnings||xu),r.dirty=!0,r.triggerMetaEvent(),void r.reRender()}if(o&&!s.length&&wu(o,t,u,f,h,n))return void r.reRender();break;case"dependenciesUpdate":if(c.map(du).some((function(t){return vu(n.relatedFields,t)})))return void r.reRender();break;default:if(d||(!c.length||s.length||o)&&wu(o,t,u,f,h,n))return void r.reRender()}!0===o&&r.reRender()},r.validateRules=function(t){var e=r.getNamePath(),n=r.getValue(),i=t||{},o=i.triggerName,a=i.validateOnly,c=void 0!==a&&a,l=Promise.resolve().then((function(){if(!r.mounted)return[];var i=r.props,a=i.validateFirst,c=void 0!==a&&a,u=i.messageVariables,s=r.getRules();o&&(s=s.filter((function(t){return t})).filter((function(t){var e=t.validateTrigger;return!e||Pl(e).includes(o)})));var f=uu(e,n,s,t,c,u);return f.catch((function(t){return t})).then((function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:xu;if(r.validatePromise===l){var e;r.validatePromise=null;var n=[],i=[];null===(e=t.forEach)||void 0===e||e.call(t,(function(t){var e=t.rule.warningOnly,r=t.errors,o=void 0===r?xu:r;e?i.push.apply(i,(0,Y.Z)(o)):n.push.apply(n,(0,Y.Z)(o))})),r.errors=n,r.warnings=i,r.triggerMetaEvent(),r.reRender()}})),f}));return c||(r.validatePromise=l,r.dirty=!0,r.errors=xu,r.warnings=xu,r.triggerMetaEvent(),r.reRender()),l},r.isFieldValidating=function(){return!!r.validatePromise},r.isFieldTouched=function(){return r.touched},r.isFieldDirty=function(){return!(!r.dirty&&void 0===r.props.initialValue)||void 0!==(0,r.props.fieldContext.getInternalHooks(Ol).getInitialValue)(r.getNamePath())},r.getErrors=function(){return r.errors},r.getWarnings=function(){return r.warnings},r.isListField=function(){return r.props.isListField},r.isList=function(){return r.props.isList},r.isPreserve=function(){return r.props.preserve},r.getMeta=function(){return r.prevValidating=r.isFieldValidating(),{touched:r.isFieldTouched(),validating:r.prevValidating,errors:r.errors,warnings:r.warnings,name:r.getNamePath(),validated:null===r.validatePromise}},r.getOnlyChild=function(t){if("function"==typeof t){var e=r.getMeta();return(0,lt.Z)((0,lt.Z)({},r.getOnlyChild(t(r.getControlled(),e,r.props.fieldContext))),{},{isFunction:!0})}var n=(0,je.Z)(t);return 1===n.length&&Z.isValidElement(n[0])?{child:n[0],isFunction:!1}:{child:n,isFunction:!1}},r.getValue=function(t){var e=r.props.fieldContext.getFieldsValue,n=r.getNamePath();return(0,hu.Z)(t||e(!0),n)},r.getControlled=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=r.props,n=e.trigger,i=e.validateTrigger,o=e.getValueFromEvent,a=e.normalize,c=e.valuePropName,l=e.getValueProps,u=e.fieldContext,s=void 0!==i?i:u.validateTrigger,f=r.getNamePath(),h=u.getInternalHooks,d=u.getFieldsValue,p=h(Ol).dispatch,v=r.getValue(),g=l||function(t){return(0,B.Z)({},c,t)},m=t[n],y=(0,lt.Z)((0,lt.Z)({},t),g(v));return y[n]=function(){var t;r.touched=!0,r.dirty=!0,r.triggerMetaEvent();for(var e=arguments.length,n=new Array(e),i=0;i=0&&e<=n.length?(u.keys=[].concat((0,Y.Z)(u.keys.slice(0,e)),[u.id],(0,Y.Z)(u.keys.slice(e))),o([].concat((0,Y.Z)(n.slice(0,e)),[t],(0,Y.Z)(n.slice(e))))):(u.keys=[].concat((0,Y.Z)(u.keys),[u.id]),o([].concat((0,Y.Z)(n),[t]))),u.id+=1},remove:function(t){var e=l(),n=new Set(Array.isArray(t)?t:[t]);n.size<=0||(u.keys=u.keys.filter((function(t,e){return!n.has(e)})),o(e.filter((function(t,e){return!n.has(e)}))))},move:function(t,e){if(t!==e){var n=l();t<0||t>=n.length||e<0||e>=n.length||(u.keys=yu(u.keys,t,e),o(yu(n,t,e)))}}},h=i||[];return Array.isArray(h)||(h=[]),r(h.map((function(t,e){var n=u.keys[e];return void 0===n&&(u.keys[e]=u.id,n=u.keys[e],u.id+=1),{name:e,key:n,isListField:!0}})),f,e)}))))};var Ou="__@field_split__";function Eu(t){return t.map((function(t){return"".concat((0,it.Z)(t),":").concat(t)})).join(Ou)}var Mu=function(){function t(){(0,Q.Z)(this,t),this.kvs=new Map}return(0,tt.Z)(t,[{key:"set",value:function(t,e){this.kvs.set(Eu(t),e)}},{key:"get",value:function(t){return this.kvs.get(Eu(t))}},{key:"update",value:function(t,e){var n=e(this.get(t));n?this.set(t,n):this.delete(t)}},{key:"delete",value:function(t){this.kvs.delete(Eu(t))}},{key:"map",value:function(t){return(0,Y.Z)(this.kvs.entries()).map((function(e){var n=(0,rr.Z)(e,2),r=n[0],i=n[1],o=r.split(Ou);return t({key:o.map((function(t){var e=t.match(/^([^:]*):(.*)$/),n=(0,rr.Z)(e,3),r=n[1],i=n[2];return"number"===r?Number(i):i})),value:i})}))}},{key:"toJSON",value:function(){var t={};return this.map((function(e){var n=e.key,r=e.value;return t[n.join(".")]=r,null})),t}}]),t}(),Au=Mu,Pu=["name"],_u=(0,tt.Z)((function t(e){var n=this;(0,Q.Z)(this,t),this.formHooked=!1,this.forceRootUpdate=void 0,this.subscribable=!0,this.store={},this.fieldEntities=[],this.initialValues={},this.callbacks={},this.validateMessages=null,this.preserve=null,this.lastValidatePromise=null,this.getForm=function(){return{getFieldValue:n.getFieldValue,getFieldsValue:n.getFieldsValue,getFieldError:n.getFieldError,getFieldWarning:n.getFieldWarning,getFieldsError:n.getFieldsError,isFieldsTouched:n.isFieldsTouched,isFieldTouched:n.isFieldTouched,isFieldValidating:n.isFieldValidating,isFieldsValidating:n.isFieldsValidating,resetFields:n.resetFields,setFields:n.setFields,setFieldValue:n.setFieldValue,setFieldsValue:n.setFieldsValue,validateFields:n.validateFields,submit:n.submit,_init:!0,getInternalHooks:n.getInternalHooks}},this.getInternalHooks=function(t){return t===Ol?(n.formHooked=!0,{dispatch:n.dispatch,initEntityValue:n.initEntityValue,registerField:n.registerField,useSubscribe:n.useSubscribe,setInitialValues:n.setInitialValues,destroyForm:n.destroyForm,setCallbacks:n.setCallbacks,setValidateMessages:n.setValidateMessages,getFields:n.getFields,setPreserve:n.setPreserve,getInitialValue:n.getInitialValue,registerWatch:n.registerWatch}):((0,bt.ZP)(!1,"`getInternalHooks` is internal usage. Should not call directly."),null)},this.useSubscribe=function(t){n.subscribable=t},this.prevWithoutPreserves=null,this.setInitialValues=function(t,e){if(n.initialValues=t||{},e){var r,i=(0,ya.T)(t,n.store);null===(r=n.prevWithoutPreserves)||void 0===r||r.map((function(e){var n=e.key;i=(0,ya.Z)(i,n,(0,hu.Z)(t,n))})),n.prevWithoutPreserves=null,n.updateStore(i)}},this.destroyForm=function(){var t=new Au;n.getFieldEntities(!0).forEach((function(e){n.isMergedPreserve(e.isPreserve())||t.set(e.getNamePath(),!0)})),n.prevWithoutPreserves=t},this.getInitialValue=function(t){var e=(0,hu.Z)(n.initialValues,t);return t.length?(0,ya.T)(e):e},this.setCallbacks=function(t){n.callbacks=t},this.setValidateMessages=function(t){n.validateMessages=t},this.setPreserve=function(t){n.preserve=t},this.watchList=[],this.registerWatch=function(t){return n.watchList.push(t),function(){n.watchList=n.watchList.filter((function(e){return e!==t}))}},this.notifyWatch=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(n.watchList.length){var e=n.getFieldsValue(),r=n.getFieldsValue(!0);n.watchList.forEach((function(n){n(e,r,t)}))}},this.timeoutId=null,this.warningUnhooked=function(){0},this.updateStore=function(t){n.store=t},this.getFieldEntities=function(){return arguments.length>0&&void 0!==arguments[0]&&arguments[0]?n.fieldEntities.filter((function(t){return t.getNamePath().length})):n.fieldEntities},this.getFieldsMap=function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=new Au;return n.getFieldEntities(t).forEach((function(t){var n=t.getNamePath();e.set(n,t)})),e},this.getFieldEntitiesForNamePathList=function(t){if(!t)return n.getFieldEntities(!0);var e=n.getFieldsMap(!0);return t.map((function(t){var n=du(t);return e.get(n)||{INVALIDATE_NAME_PATH:du(t)}}))},this.getFieldsValue=function(t,e){var r,i,o;if(n.warningUnhooked(),!0===t||Array.isArray(t)?(r=t,i=e):t&&"object"===(0,it.Z)(t)&&(o=t.strict,i=t.filter),!0===r&&!i)return n.store;var a=n.getFieldEntitiesForNamePathList(Array.isArray(r)?r:null),c=[];return a.forEach((function(t){var e,n,a="INVALIDATE_NAME_PATH"in t?t.INVALIDATE_NAME_PATH:t.getNamePath();if(o){if(null===(n=t.isList)||void 0===n?void 0:n.call(t))return}else if(!r&&(null===(e=t.isListField)||void 0===e?void 0:e.call(t)))return;if(i){var l="getMeta"in t?t.getMeta():null;i(l)&&c.push(a)}else c.push(a)})),pu(n.store,c.map(du))},this.getFieldValue=function(t){n.warningUnhooked();var e=du(t);return(0,hu.Z)(n.store,e)},this.getFieldsError=function(t){return n.warningUnhooked(),n.getFieldEntitiesForNamePathList(t).map((function(e,n){return e&&!("INVALIDATE_NAME_PATH"in e)?{name:e.getNamePath(),errors:e.getErrors(),warnings:e.getWarnings()}:{name:du(t[n]),errors:[],warnings:[]}}))},this.getFieldError=function(t){n.warningUnhooked();var e=du(t);return n.getFieldsError([e])[0].errors},this.getFieldWarning=function(t){n.warningUnhooked();var e=du(t);return n.getFieldsError([e])[0].warnings},this.isFieldsTouched=function(){n.warningUnhooked();for(var t=arguments.length,e=new Array(t),r=0;r0&&void 0!==arguments[0]?arguments[0]:{},e=new Au,r=n.getFieldEntities(!0);r.forEach((function(t){var n=t.props.initialValue,r=t.getNamePath();if(void 0!==n){var i=e.get(r)||new Set;i.add({entity:t,value:n}),e.set(r,i)}}));var i;t.entities?i=t.entities:t.namePathList?(i=[],t.namePathList.forEach((function(t){var n,r=e.get(t);r&&(n=i).push.apply(n,(0,Y.Z)((0,Y.Z)(r).map((function(t){return t.entity}))))}))):i=r,i.forEach((function(r){if(void 0!==r.props.initialValue){var i=r.getNamePath();if(void 0!==n.getInitialValue(i))(0,bt.ZP)(!1,"Form already set 'initialValues' with path '".concat(i.join("."),"'. Field can not overwrite it."));else{var o=e.get(i);if(o&&o.size>1)(0,bt.ZP)(!1,"Multiple Field with path '".concat(i.join("."),"' set 'initialValue'. Can not decide which one to pick."));else if(o){var a=n.getFieldValue(i);t.skipExist&&void 0!==a||n.updateStore((0,ya.Z)(n.store,i,(0,Y.Z)(o)[0].value))}}}}))},this.resetFields=function(t){n.warningUnhooked();var e=n.store;if(!t)return n.updateStore((0,ya.T)(n.initialValues)),n.resetWithFieldInitialValue(),n.notifyObservers(e,null,{type:"reset"}),void n.notifyWatch();var r=t.map(du);r.forEach((function(t){var e=n.getInitialValue(t);n.updateStore((0,ya.Z)(n.store,t,e))})),n.resetWithFieldInitialValue({namePathList:r}),n.notifyObservers(e,r,{type:"reset"}),n.notifyWatch(r)},this.setFields=function(t){n.warningUnhooked();var e=n.store,r=[];t.forEach((function(t){var i=t.name,o=(0,rt.Z)(t,Pu),a=du(i);r.push(a),"value"in o&&n.updateStore((0,ya.Z)(n.store,a,o.value)),n.notifyObservers(e,[a],{type:"setField",data:t})})),n.notifyWatch(r)},this.getFields=function(){var t=n.getFieldEntities(!0).map((function(t){var e=t.getNamePath(),r=t.getMeta(),i=(0,lt.Z)((0,lt.Z)({},r),{},{name:e,value:n.getFieldValue(e)});return Object.defineProperty(i,"originRCField",{value:!0}),i}));return t},this.initEntityValue=function(t){var e=t.props.initialValue;if(void 0!==e){var r=t.getNamePath();void 0===(0,hu.Z)(n.store,r)&&n.updateStore((0,ya.Z)(n.store,r,e))}},this.isMergedPreserve=function(t){var e=void 0!==t?t:n.preserve;return null==e||e},this.registerField=function(t){n.fieldEntities.push(t);var e=t.getNamePath();if(n.notifyWatch([e]),void 0!==t.props.initialValue){var r=n.store;n.resetWithFieldInitialValue({entities:[t],skipExist:!0}),n.notifyObservers(r,[t.getNamePath()],{type:"valueUpdate",source:"internal"})}return function(r,i){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if(n.fieldEntities=n.fieldEntities.filter((function(e){return e!==t})),!n.isMergedPreserve(i)&&(!r||o.length>1)){var a=r?void 0:n.getInitialValue(e);if(e.length&&n.getFieldValue(e)!==a&&n.fieldEntities.every((function(t){return!gu(t.getNamePath(),e)}))){var c=n.store;n.updateStore((0,ya.Z)(c,e,a,!0)),n.notifyObservers(c,[e],{type:"remove"}),n.triggerDependenciesUpdate(c,e)}}n.notifyWatch([e])}},this.dispatch=function(t){switch(t.type){case"updateValue":var e=t.namePath,r=t.value;n.updateValue(e,r);break;case"validateField":var i=t.namePath,o=t.triggerName;n.validateFields([i],{triggerName:o})}},this.notifyObservers=function(t,e,r){if(n.subscribable){var i=(0,lt.Z)((0,lt.Z)({},r),{},{store:n.getFieldsValue(!0)});n.getFieldEntities().forEach((function(n){(0,n.onStoreChange)(t,e,i)}))}else n.forceRootUpdate()},this.triggerDependenciesUpdate=function(t,e){var r=n.getDependencyChildrenFields(e);return r.length&&n.validateFields(r),n.notifyObservers(t,r,{type:"dependenciesUpdate",relatedFields:[e].concat((0,Y.Z)(r))}),r},this.updateValue=function(t,e){var r=du(t),i=n.store;n.updateStore((0,ya.Z)(n.store,r,e)),n.notifyObservers(i,[r],{type:"valueUpdate",source:"internal"}),n.notifyWatch([r]);var o=n.triggerDependenciesUpdate(i,r),a=n.callbacks.onValuesChange;a&&a(pu(n.store,[r]),n.getFieldsValue());n.triggerOnFieldsChange([r].concat((0,Y.Z)(o)))},this.setFieldsValue=function(t){n.warningUnhooked();var e=n.store;if(t){var r=(0,ya.T)(n.store,t);n.updateStore(r)}n.notifyObservers(e,null,{type:"valueUpdate",source:"external"}),n.notifyWatch()},this.setFieldValue=function(t,e){n.setFields([{name:t,value:e}])},this.getDependencyChildrenFields=function(t){var e=new Set,r=[],i=new Au;n.getFieldEntities().forEach((function(t){(t.props.dependencies||[]).forEach((function(e){var n=du(e);i.update(n,(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new Set;return e.add(t),e}))}))}));return function t(n){(i.get(n)||new Set).forEach((function(n){if(!e.has(n)){e.add(n);var i=n.getNamePath();n.isFieldDirty()&&i.length&&(r.push(i),t(i))}}))}(t),r},this.triggerOnFieldsChange=function(t,e){var r=n.callbacks.onFieldsChange;if(r){var i=n.getFields();if(e){var o=new Au;e.forEach((function(t){var e=t.name,n=t.errors;o.set(e,n)})),i.forEach((function(t){t.errors=o.get(t.name)||t.errors}))}var a=i.filter((function(e){var n=e.name;return vu(t,n)}));a.length&&r(a,i)}},this.validateFields=function(t,e){var r,i;n.warningUnhooked(),Array.isArray(t)||"string"==typeof t||"string"==typeof e?(r=t,i=e):i=t;var o=!!r,a=o?r.map(du):[],c=[],l=String(Date.now()),u=new Set;n.getFieldEntities(!0).forEach((function(t){var e;if(o||a.push(t.getNamePath()),(null===(e=i)||void 0===e?void 0:e.recursive)&&o){var s=t.getNamePath();s.every((function(t,e){return r[e]===t||void 0===r[e]}))&&a.push(s)}if(t.props.rules&&t.props.rules.length){var f=t.getNamePath();if(u.add(f.join(l)),!o||vu(a,f)){var h=t.validateRules((0,lt.Z)({validateMessages:(0,lt.Z)((0,lt.Z)({},ru),n.validateMessages)},i));c.push(h.then((function(){return{name:f,errors:[],warnings:[]}})).catch((function(t){var e,n=[],r=[];return null===(e=t.forEach)||void 0===e||e.call(t,(function(t){var e=t.rule.warningOnly,i=t.errors;e?r.push.apply(r,(0,Y.Z)(i)):n.push.apply(n,(0,Y.Z)(i))})),n.length?Promise.reject({name:f,errors:n,warnings:r}):{name:f,errors:n,warnings:r}})))}}}));var s=function(t){var e=!1,n=t.length,r=[];return t.length?new Promise((function(i,o){t.forEach((function(t,a){t.catch((function(t){return e=!0,t})).then((function(t){n-=1,r[a]=t,n>0||(e&&o(r),i(r))}))}))})):Promise.resolve([])}(c);n.lastValidatePromise=s,s.catch((function(t){return t})).then((function(t){var e=t.map((function(t){return t.name}));n.notifyObservers(n.store,e,{type:"validateFinish"}),n.triggerOnFieldsChange(e,t)}));var f=s.then((function(){return n.lastValidatePromise===s?Promise.resolve(n.getFieldsValue(a)):Promise.reject([])})).catch((function(t){var e=t.filter((function(t){return t&&t.errors.length}));return Promise.reject({values:n.getFieldsValue(a),errorFields:e,outOfDate:n.lastValidatePromise!==s})}));f.catch((function(t){return t}));var h=a.filter((function(t){return u.has(t.join(l))}));return n.triggerOnFieldsChange(h),f},this.submit=function(){n.warningUnhooked(),n.validateFields().then((function(t){var e=n.callbacks.onFinish;if(e)try{e(t)}catch(r){console.error(r)}})).catch((function(t){var e=n.callbacks.onFinishFailed;e&&e(t)}))},this.forceRootUpdate=e}));var Du=function(t){var e=Z.useRef(),n=Z.useState({}),r=(0,rr.Z)(n,2)[1];if(!e.current)if(t)e.current=t;else{var i=new _u((function(){r({})}));e.current=i.getForm()}return[e.current]},Tu=Z.createContext({triggerFormChange:function(){},triggerFormFinish:function(){},registerForm:function(){},unregisterForm:function(){}}),Zu=Tu,Fu=["name","initialValues","fields","form","preserve","children","component","validateMessages","validateTrigger","onValuesChange","onFieldsChange","onFinish","onFinishFailed"],ju=function(t,e){var n=t.name,r=t.initialValues,i=t.fields,o=t.form,a=t.preserve,c=t.children,l=t.component,u=void 0===l?"form":l,s=t.validateMessages,f=t.validateTrigger,h=void 0===f?"onChange":f,d=t.onValuesChange,p=t.onFieldsChange,v=t.onFinish,g=t.onFinishFailed,m=(0,rt.Z)(t,Fu),y=Z.useContext(Zu),b=Du(o),x=(0,rr.Z)(b,1)[0],w=x.getInternalHooks(Ol),S=w.useSubscribe,k=w.setInitialValues,C=w.setCallbacks,O=w.setValidateMessages,E=w.setPreserve,M=w.destroyForm;Z.useImperativeHandle(e,(function(){return x})),Z.useEffect((function(){return y.registerForm(n,x),function(){y.unregisterForm(n)}}),[y,x,n]),O((0,lt.Z)((0,lt.Z)({},y.validateMessages),s)),C({onValuesChange:d,onFieldsChange:function(t){if(y.triggerFormChange(n,t),p){for(var e=arguments.length,r=new Array(e>1?e-1:0),i=1;i ".concat(t.iconCls),(e={flex:"none",marginInlineEnd:t.marginSM,fontSize:t.modalConfirmIconSize},(0,V.Z)(e,"+ ".concat(a,"-title"),{flex:1}),(0,V.Z)(e,"+ ".concat(a,"-title + ").concat(a,"-content"),{marginInlineStart:t.modalConfirmIconSize+t.marginSM}),e)),n)),(0,V.Z)(r,"".concat(a,"-btns"),(0,V.Z)({textAlign:"end",marginTop:t.marginSM},"".concat(t.antCls,"-btn + ").concat(t.antCls,"-btn"),{marginBottom:0,marginInlineStart:t.marginXS})),r)),(0,V.Z)(i,"".concat(a,"-error ").concat(a,"-body > ").concat(t.iconCls),{color:t.colorError}),(0,V.Z)(i,"".concat(a,"-warning ").concat(a,"-body > ").concat(t.iconCls,",\n ").concat(a,"-confirm ").concat(a,"-body > ").concat(t.iconCls),{color:t.colorWarning}),(0,V.Z)(i,"".concat(a,"-info ").concat(a,"-body > ").concat(t.iconCls),{color:t.colorInfo}),(0,V.Z)(i,"".concat(a,"-success ").concat(a,"-body > ").concat(t.iconCls),{color:t.colorSuccess}),i},Yu=function(t){var e=t.componentCls;return(0,V.Z)({},"".concat(e,"-root"),(0,V.Z)({},"".concat(e,"-wrap-rtl"),(0,V.Z)({direction:"rtl"},"".concat(e,"-confirm-body"),{direction:"rtl"})))},$u=function(t){var e,n,r,i=t.componentCls,o=t.antCls,a="".concat(i,"-confirm");return r={},(0,V.Z)(r,i,(e={},(0,V.Z)(e,"".concat(i,"-content"),{padding:0}),(0,V.Z)(e,"".concat(i,"-header"),{padding:t.modalHeaderPadding,borderBottom:"".concat(t.modalHeaderBorderWidth,"px ").concat(t.modalHeaderBorderStyle," ").concat(t.modalHeaderBorderColorSplit),marginBottom:0}),(0,V.Z)(e,"".concat(i,"-body"),{padding:t.modalBodyPadding}),(0,V.Z)(e,"".concat(i,"-footer"),{padding:"".concat(t.modalFooterPaddingVertical,"px ").concat(t.modalFooterPaddingHorizontal,"px"),borderTop:"".concat(t.modalFooterBorderWidth,"px ").concat(t.modalFooterBorderStyle," ").concat(t.modalFooterBorderColorSplit),borderRadius:"0 0 ".concat(t.borderRadiusLG,"px ").concat(t.borderRadiusLG,"px"),marginTop:0}),e)),(0,V.Z)(r,a,(n={},(0,V.Z)(n,"".concat(o,"-modal-body"),{padding:"".concat(2*t.padding,"px ").concat(2*t.padding,"px ").concat(t.paddingLG,"px")}),(0,V.Z)(n,"".concat(a,"-body"),(0,V.Z)({},"> ".concat(t.iconCls),(0,V.Z)({marginInlineEnd:t.margin},"+ ".concat(a,"-title + ").concat(a,"-content"),{marginInlineStart:t.modalConfirmIconSize+t.margin}))),(0,V.Z)(n,"".concat(a,"-btns"),{marginTop:t.marginLG}),n)),r},Ku=(0,se.Z)("Modal",(function(t){var e=t.padding,n=t.fontSizeHeading5,r=t.lineHeightHeading5,i=(0,nn.TS)(t,{modalBodyPadding:t.paddingLG,modalHeaderPadding:"".concat(e,"px ").concat(t.paddingLG,"px"),modalHeaderBorderWidth:t.lineWidth,modalHeaderBorderStyle:t.lineType,modalHeaderBorderColorSplit:t.colorSplit,modalHeaderHeight:r*n+2*e,modalFooterBorderColorSplit:t.colorSplit,modalFooterBorderStyle:t.lineType,modalFooterPaddingVertical:t.paddingXS,modalFooterPaddingHorizontal:t.padding,modalFooterBorderWidth:t.lineWidth,modalIconHoverColor:t.colorIconHover,modalCloseIconColor:t.colorIcon,modalCloseBtnSize:t.fontSize*t.lineHeight,modalConfirmIconSize:t.fontSize*t.lineHeight});return[Xu(i),qu(i),Yu(i),Gu(i),t.wireframe&&$u(i),so(i,"zoom")]}),(function(t){return{footerBg:"transparent",headerBg:t.colorBgElevated,titleLineHeight:t.lineHeightHeading5,titleFontSize:t.fontSizeHeading5,contentBg:t.colorBgElevated,titleColor:t.colorTextHeading}})),Ju=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(t);i3&&void 0!==arguments[3]?arguments[3]:Z.createElement(tr,null),i=function(t,e,n){return"boolean"==typeof t?t:void 0===e?!!n:!1!==e&&null!==e}(t,e,arguments.length>4&&void 0!==arguments[4]&&arguments[4]);if(!i)return[!1,null];var o="boolean"==typeof e||null==e?r:e;return[!0,n?n(o):o]}(m,g,(function(t){return Uu(E,t)}),Z.createElement(tr,{className:"".concat(E,"-close-icon")}),!0),I=(0,G.Z)(j,2),R=I[0],L=I[1];return _(Z.createElement(Le,null,Z.createElement(zu,{status:!0,override:!0},Z.createElement(wl,Object.assign({width:k},O,{getContainer:void 0===v?i:v,prefixCls:E,rootClassName:K()(D,f),wrapClassName:T,footer:F,visible:null!=h?h:w,mousePosition:null!==(n=O.mousePosition)&&void 0!==n?n:Vu,onClose:l,closable:R,closeIcon:L,focusTriggerAfterClose:b,transitionName:(0,oe.m)(M,"zoom",t.transitionName),maskTransitionName:(0,oe.m)(M,"fade",t.maskTransitionName),className:K()(D,s,null==c?void 0:c.className),style:Object.assign(Object.assign({},null==c?void 0:c.style),x)})))))};function ts(t){var e=t.icon,n=t.onCancel,r=t.onOk,i=t.close,o=t.onConfirm,a=t.isSilent,c=t.okText,l=t.okButtonProps,u=t.cancelText,s=t.cancelButtonProps,f=t.confirmPrefixCls,h=t.rootPrefixCls,d=t.type,p=t.okCancel,v=t.footer,g=t.locale,m=e;if(!e&&null!==e)switch(d){case"info":m=Z.createElement(qa,null);break;case"success":m=Z.createElement(Vn,null);break;case"error":m=Z.createElement(Kn,null);break;default:m=Z.createElement(Va,null)}var y=t.okType||"primary",b=null!=p?p:"confirm"===d,x=null!==t.autoFocusButton&&(t.autoFocusButton||"ok"),w=Ut("Modal"),S=(0,G.Z)(w,1)[0],k=g||S,C=b&&Z.createElement(ll,{isSilent:a,actionFn:n,close:function(){null==i||i.apply(void 0,arguments),null==o||o(!1)},autoFocus:"cancel"===x,buttonProps:s,prefixCls:"".concat(h,"-btn")},u||(null==k?void 0:k.cancelText));return Z.createElement("div",{className:"".concat(f,"-body-wrapper")},Z.createElement("div",{className:"".concat(f,"-body")},m,void 0===t.title?null:Z.createElement("span",{className:"".concat(f,"-title")},t.title),Z.createElement("div",{className:"".concat(f,"-content")},t.content)),void 0===v?Z.createElement("div",{className:"".concat(f,"-btns")},C,Z.createElement(ll,{isSilent:a,type:y,actionFn:r,close:function(){null==i||i.apply(void 0,arguments),null==o||o(!0)},autoFocus:"ok"===x,buttonProps:l,prefixCls:"".concat(h,"-btn")},c||(b?null==k?void 0:k.okText:null==k?void 0:k.justOkText))):v)}var es=function(t){var e=t.close,n=t.zIndex,r=t.afterClose,i=(t.visible,t.open),o=t.keyboard,a=t.centered,c=t.getContainer,l=t.maskStyle,u=t.direction,s=t.prefixCls,f=t.wrapClassName,h=t.rootPrefixCls,d=t.iconPrefixCls,p=t.theme,v=t.bodyStyle,g=t.closable,m=void 0!==g&&g,y=t.closeIcon,b=t.modalRender,x=t.focusTriggerAfterClose;var w="".concat(s,"-confirm"),S=t.width||416,k=t.style||{},C=void 0===t.mask||t.mask,O=void 0!==t.maskClosable&&t.maskClosable,E=K()(w,"".concat(w,"-").concat(t.type),(0,V.Z)({},"".concat(w,"-rtl"),"rtl"===u),t.className);return Z.createElement(Ua,{prefixCls:h,iconPrefixCls:d,direction:u,theme:p},Z.createElement(Qu,{prefixCls:s,className:E,wrapClassName:K()((0,V.Z)({},"".concat(w,"-centered"),!!t.centered),f),onCancel:function(){return null==e?void 0:e({triggerCancel:!0})},open:i,title:"",footer:null,transitionName:(0,oe.m)(h,"zoom",t.transitionName),maskTransitionName:(0,oe.m)(h,"fade",t.maskTransitionName),mask:C,maskClosable:O,maskStyle:l,style:k,bodyStyle:v,width:S,zIndex:n,afterClose:r,keyboard:o,centered:a,getContainer:c,closable:m,closeIcon:y,modalRender:b,focusTriggerAfterClose:x},Z.createElement(ts,Object.assign({},t,{confirmPrefixCls:w}))))},ns=[],rs=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(t);i=1},subscribe:function(n){return t.size||this.register(),e+=1,t.set(e,n),n(r),e},unsubscribe:function(e){t.delete(e),t.size||this.unregister()},unregister:function(){var e=this;Object.keys(n).forEach((function(t){var r=n[t],i=e.matchHandlers[r];null==i||i.mql.removeListener(null==i?void 0:i.listener)})),t.clear()},register:function(){var t=this;Object.keys(n).forEach((function(e){var i=n[e],o=function(n){var i=n.matches;t.dispatch(Object.assign(Object.assign({},r),(0,V.Z)({},e,i)))},a=window.matchMedia(i);a.addListener(o),t.matchHandlers[i]={mql:a,listener:o},o(a)}))},responsiveMap:n}}),[e])}var Vs=function(){var t=(0,Te.Z)(),e=(0,G.Z)(t,2)[1],n=new to.C(e.colorBgBase).toHsl().l<.5?{opacity:.65}:{};return Z.createElement("svg",{style:n,width:"184",height:"152",viewBox:"0 0 184 152",xmlns:"http://www.w3.org/2000/svg"},Z.createElement("g",{fill:"none",fillRule:"evenodd"},Z.createElement("g",{transform:"translate(24 31.67)"},Z.createElement("ellipse",{fillOpacity:".8",fill:"#F5F5F7",cx:"67.797",cy:"106.89",rx:"67.797",ry:"12.668"}),Z.createElement("path",{d:"M122.034 69.674L98.109 40.229c-1.148-1.386-2.826-2.225-4.593-2.225h-51.44c-1.766 0-3.444.839-4.592 2.225L13.56 69.674v15.383h108.475V69.674z",fill:"#AEB8C2"}),Z.createElement("path",{d:"M101.537 86.214L80.63 61.102c-1.001-1.207-2.507-1.867-4.048-1.867H31.724c-1.54 0-3.047.66-4.048 1.867L6.769 86.214v13.792h94.768V86.214z",fill:"url(#linearGradient-1)",transform:"translate(13.56)"}),Z.createElement("path",{d:"M33.83 0h67.933a4 4 0 0 1 4 4v93.344a4 4 0 0 1-4 4H33.83a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4z",fill:"#F5F5F7"}),Z.createElement("path",{d:"M42.678 9.953h50.237a2 2 0 0 1 2 2V36.91a2 2 0 0 1-2 2H42.678a2 2 0 0 1-2-2V11.953a2 2 0 0 1 2-2zM42.94 49.767h49.713a2.262 2.262 0 1 1 0 4.524H42.94a2.262 2.262 0 0 1 0-4.524zM42.94 61.53h49.713a2.262 2.262 0 1 1 0 4.525H42.94a2.262 2.262 0 0 1 0-4.525zM121.813 105.032c-.775 3.071-3.497 5.36-6.735 5.36H20.515c-3.238 0-5.96-2.29-6.734-5.36a7.309 7.309 0 0 1-.222-1.79V69.675h26.318c2.907 0 5.25 2.448 5.25 5.42v.04c0 2.971 2.37 5.37 5.277 5.37h34.785c2.907 0 5.277-2.421 5.277-5.393V75.1c0-2.972 2.343-5.426 5.25-5.426h26.318v33.569c0 .617-.077 1.216-.221 1.789z",fill:"#DCE0E6"})),Z.createElement("path",{d:"M149.121 33.292l-6.83 2.65a1 1 0 0 1-1.317-1.23l1.937-6.207c-2.589-2.944-4.109-6.534-4.109-10.408C138.802 8.102 148.92 0 161.402 0 173.881 0 184 8.102 184 18.097c0 9.995-10.118 18.097-22.599 18.097-4.528 0-8.744-1.066-12.28-2.902z",fill:"#DCE0E6"}),Z.createElement("g",{transform:"translate(149.65 15.383)",fill:"#FFF"},Z.createElement("ellipse",{cx:"20.654",cy:"3.167",rx:"2.849",ry:"2.815"}),Z.createElement("path",{d:"M5.698 5.63H0L2.898.704zM9.259.704h4.985V5.63H9.259z"}))))};var Gs=function(){var t=(0,Te.Z)(),e=(0,G.Z)(t,2)[1],n=e.colorFill,r=e.colorFillTertiary,i=e.colorFillQuaternary,o=e.colorBgContainer,a=(0,Z.useMemo)((function(){return{borderColor:new to.C(n).onBackground(o).toHexShortString(),shadowColor:new to.C(r).onBackground(o).toHexShortString(),contentColor:new to.C(i).onBackground(o).toHexShortString()}}),[n,r,i,o]),c=a.borderColor,l=a.shadowColor,u=a.contentColor;return Z.createElement("svg",{width:"64",height:"41",viewBox:"0 0 64 41",xmlns:"http://www.w3.org/2000/svg"},Z.createElement("g",{transform:"translate(0 1)",fill:"none",fillRule:"evenodd"},Z.createElement("ellipse",{fill:l,cx:"32",cy:"33",rx:"32",ry:"7"}),Z.createElement("g",{fillRule:"nonzero",stroke:c},Z.createElement("path",{d:"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z"}),Z.createElement("path",{d:"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z",fill:u}))))},Xs=function(t){var e,n,r=t.componentCls,i=t.margin,o=t.marginXS,a=t.marginXL,c=t.fontSize,l=t.lineHeight;return(0,V.Z)({},r,(n={marginInline:o,fontSize:c,lineHeight:l,textAlign:"center"},(0,V.Z)(n,"".concat(r,"-image"),{height:t.emptyImgHeight,marginBottom:o,opacity:t.opacityImage,img:{height:"100%"},svg:{maxWidth:"100%",height:"100%",margin:"auto"}}),(0,V.Z)(n,"".concat(r,"-description"),{color:t.colorText}),(0,V.Z)(n,"".concat(r,"-footer"),{marginTop:i}),(0,V.Z)(n,"&-normal",(e={marginBlock:a,color:t.colorTextDisabled},(0,V.Z)(e,"".concat(r,"-description"),{color:t.colorTextDisabled}),(0,V.Z)(e,"".concat(r,"-image"),{height:t.emptyImgHeightMD}),e)),(0,V.Z)(n,"&-small",(0,V.Z)({marginBlock:o,color:t.colorTextDisabled},"".concat(r,"-image"),{height:t.emptyImgHeightSM})),n))},qs=(0,se.Z)("Empty",(function(t){var e=t.componentCls,n=t.controlHeightLG,r=(0,nn.TS)(t,{emptyImgCls:"".concat(e,"-img"),emptyImgHeight:2.5*n,emptyImgHeightMD:n,emptyImgHeightSM:.875*n});return[Xs(r)]})),Ys=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(t);i=0;o--)0===o?(i["".concat(n).concat(e,"-").concat(o)]={display:"none"},i["".concat(n,"-push-").concat(o)]={insetInlineStart:"auto"},i["".concat(n,"-pull-").concat(o)]={insetInlineEnd:"auto"},i["".concat(n).concat(e,"-push-").concat(o)]={insetInlineStart:"auto"},i["".concat(n).concat(e,"-pull-").concat(o)]={insetInlineEnd:"auto"},i["".concat(n).concat(e,"-offset-").concat(o)]={marginInlineStart:0},i["".concat(n).concat(e,"-order-").concat(o)]={order:0}):(i["".concat(n).concat(e,"-").concat(o)]={display:"block",flex:"0 0 ".concat(o/r*100,"%"),maxWidth:"".concat(o/r*100,"%")},i["".concat(n).concat(e,"-push-").concat(o)]={insetInlineStart:"".concat(o/r*100,"%")},i["".concat(n).concat(e,"-pull-").concat(o)]={insetInlineEnd:"".concat(o/r*100,"%")},i["".concat(n).concat(e,"-offset-").concat(o)]={marginInlineStart:"".concat(o/r*100,"%")},i["".concat(n).concat(e,"-order-").concat(o)]={order:o});return i}(t,e)},cf=(0,se.Z)("Grid",(function(t){return[rf(t)]})),lf=(0,se.Z)("Grid",(function(t){var e=(0,nn.TS)(t,{gridColumns:24}),n={"-sm":e.screenSMMin,"-md":e.screenMDMin,"-lg":e.screenLGMin,"-xl":e.screenXLMin,"-xxl":e.screenXXLMin};return[of(e),af(e,""),af(e,"-xs"),Object.keys(n).map((function(t){return function(t,e,n){return(0,V.Z)({},"@media (min-width: ".concat(e,"px)"),Object.assign({},af(t,n)))}(e,n[t],t)})).reduce((function(t,e){return Object.assign(Object.assign({},t),e)}),{})]})),uf=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(t);i0?I[0]/-2:void 0,B=null!=I[1]&&I[1]>0?I[1]/-2:void 0;if(N&&(L.marginLeft=N,L.marginRight=N),E){var z=(0,G.Z)(I,2);L.rowGap=z[1]}else B&&(L.marginTop=B,L.marginBottom=B);var U=(0,G.Z)(I,2),H=U[0],W=U[1],X=Z.useMemo((function(){return{gutter:[H,W],wrap:f,supportFlexGap:E}}),[H,W,f,E]);return F(Z.createElement(nf.Provider,{value:X},Z.createElement("div",Object.assign({},h,{className:R,style:Object.assign(Object.assign({},L),c),ref:e}),l)))}));var hf=ff;var df=function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],e=(0,Z.useRef)({}),n=re(),r=Ws();return(0,vr.Z)((function(){var i=r.subscribe((function(r){e.current=r,t&&n()}));return function(){return r.unsubscribe(i)}}),[]),e.current},pf={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M272.9 512l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L186.8 492.3a31.99 31.99 0 000 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H532c6.7 0 10.4-7.7 6.3-12.9L272.9 512zm304 0l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L490.8 492.3a31.99 31.99 0 000 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H836c6.7 0 10.4-7.7 6.3-12.9L576.9 512z"}}]},name:"double-left",theme:"outlined"},vf=function(t,e){return Z.createElement(Wt.Z,(0,J.Z)({},t,{ref:e,icon:pf}))};var gf=Z.forwardRef(vf),mf={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M533.2 492.3L277.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H188c-6.7 0-10.4 7.7-6.3 12.9L447.1 512 181.7 851.1A7.98 7.98 0 00188 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5zm304 0L581.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H492c-6.7 0-10.4 7.7-6.3 12.9L751.1 512 485.7 851.1A7.98 7.98 0 00492 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5z"}}]},name:"double-right",theme:"outlined"},yf=function(t,e){return Z.createElement(Wt.Z,(0,J.Z)({},t,{ref:e,icon:mf}))};var bf=Z.forwardRef(yf),xf={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z"}}]},name:"left",theme:"outlined"},wf=function(t,e){return Z.createElement(Wt.Z,(0,J.Z)({},t,{ref:e,icon:xf}))};var Sf=Z.forwardRef(wf),kf=n(47462),Cf={ZERO:48,NINE:57,NUMPAD_ZERO:96,NUMPAD_NINE:105,BACKSPACE:8,DELETE:46,ENTER:13,ARROW_UP:38,ARROW_DOWN:40},Of=function(t){(0,et.Z)(n,t);var e=(0,nt.Z)(n);function n(){var t;(0,Q.Z)(this,n);for(var r=arguments.length,i=new Array(r),o=0;o=0||e.relatedTarget.className.indexOf("".concat(o,"-item"))>=0)||i(t.getValidValue()))},t.go=function(e){""!==t.state.goInputText&&(e.keyCode!==Cf.ENTER&&"click"!==e.type||(t.setState({goInputText:""}),t.props.quickGo(t.getValidValue())))},t}return(0,tt.Z)(n,[{key:"getPageSizeOptions",value:function(){var t=this.props,e=t.pageSize,n=t.pageSizeOptions;return n.some((function(t){return t.toString()===e.toString()}))?n:n.concat([e.toString()]).sort((function(t,e){return(Number.isNaN(Number(t))?0:Number(t))-(Number.isNaN(Number(e))?0:Number(e))}))}},{key:"render",value:function(){var t=this,e=this.props,n=e.pageSize,r=e.locale,i=e.rootPrefixCls,o=e.changeSize,a=e.quickGo,c=e.goButton,l=e.selectComponentClass,u=e.buildOptionText,s=e.selectPrefixCls,f=e.disabled,h=this.state.goInputText,d="".concat(i,"-options"),p=l,v=null,g=null,m=null;if(!o&&!a)return null;var y=this.getPageSizeOptions();if(o&&p){var b=y.map((function(e,n){return Z.createElement(p.Option,{key:n,value:e.toString()},(u||t.buildOptionText)(e))}));v=Z.createElement(p,{disabled:f,prefixCls:s,showSearch:!1,className:"".concat(d,"-size-changer"),optionLabelProp:"children",popupMatchSelectWidth:!1,value:(n||y[0]).toString(),onChange:this.changeSize,getPopupContainer:function(t){return t.parentNode},"aria-label":r.page_size,defaultOpen:!1},b)}return a&&(c&&(m="boolean"==typeof c?Z.createElement("button",{type:"button",onClick:this.go,onKeyUp:this.go,disabled:f,className:"".concat(d,"-quick-jumper-button")},r.jump_to_confirm):Z.createElement("span",{onClick:this.go,onKeyUp:this.go},c)),g=Z.createElement("div",{className:"".concat(d,"-quick-jumper")},r.jump_to,Z.createElement("input",{disabled:f,type:"text",value:h,onChange:this.handleChange,onKeyUp:this.go,onBlur:this.handleBlur,"aria-label":r.page}),r.page,m)),Z.createElement("li",{className:"".concat(d)},v,g)}}]),n}(Z.Component);Of.defaultProps={pageSizeOptions:["10","20","50","100"]};var Ef=Of,Mf=function(t){var e,n=t.rootPrefixCls,r=t.page,i=t.active,o=t.className,a=t.showTitle,c=t.onClick,l=t.onKeyPress,u=t.itemRender,s="".concat(n,"-item"),f=K()(s,"".concat(s,"-").concat(r),(e={},(0,B.Z)(e,"".concat(s,"-active"),i),(0,B.Z)(e,"".concat(s,"-disabled"),!r),(0,B.Z)(e,t.className,o),e));return Z.createElement("li",{title:a?r.toString():null,className:f,onClick:function(){c(r)},onKeyPress:function(t){l(t,c,r)},tabIndex:0},u(r,"page",Z.createElement("a",{rel:"nofollow"},r)))};function Af(){}function Pf(t){var e=Number(t);return"number"==typeof e&&!Number.isNaN(e)&&isFinite(e)&&Math.floor(e)===e}function _f(t,e,n){var r=void 0===t?e.pageSize:t;return Math.floor((n.total-1)/r)+1}var Df=function(t){(0,et.Z)(n,t);var e=(0,nt.Z)(n);function n(t){var r;(0,Q.Z)(this,n),(r=e.call(this,t)).paginationNode=Z.createRef(),r.getJumpPrevPage=function(){return Math.max(1,r.state.current-(r.props.showLessItems?3:5))},r.getJumpNextPage=function(){return Math.min(_f(void 0,r.state,r.props),r.state.current+(r.props.showLessItems?3:5))},r.getItemIcon=function(t,e){var n=r.props.prefixCls,i=t||Z.createElement("button",{type:"button","aria-label":e,className:"".concat(n,"-item-link")});return"function"==typeof t&&(i=Z.createElement(t,(0,lt.Z)({},r.props))),i},r.isValid=function(t){var e=r.props.total;return Pf(t)&&t!==r.state.current&&Pf(e)&&e>0},r.shouldDisplayQuickJumper=function(){var t=r.props,e=t.showQuickJumper;return!(t.total<=r.state.pageSize)&&e},r.handleKeyDown=function(t){t.keyCode!==Cf.ARROW_UP&&t.keyCode!==Cf.ARROW_DOWN||t.preventDefault()},r.handleKeyUp=function(t){var e=r.getValidValue(t);e!==r.state.currentInputValue&&r.setState({currentInputValue:e}),t.keyCode===Cf.ENTER?r.handleChange(e):t.keyCode===Cf.ARROW_UP?r.handleChange(e-1):t.keyCode===Cf.ARROW_DOWN&&r.handleChange(e+1)},r.handleBlur=function(t){var e=r.getValidValue(t);r.handleChange(e)},r.changePageSize=function(t){var e=r.state.current,n=_f(t,r.state,r.props);e=e>n?n:e,0===n&&(e=r.state.current),"number"==typeof t&&("pageSize"in r.props||r.setState({pageSize:t}),"current"in r.props||r.setState({current:e,currentInputValue:e})),r.props.onShowSizeChange(e,t),"onChange"in r.props&&r.props.onChange&&r.props.onChange(e,t)},r.handleChange=function(t){var e=r.props,n=e.disabled,i=e.onChange,o=r.state,a=o.pageSize,c=o.current,l=o.currentInputValue;if(r.isValid(t)&&!n){var u=_f(void 0,r.state,r.props),s=t;return t>u?s=u:t<1&&(s=1),"current"in r.props||r.setState({current:s}),s!==l&&r.setState({currentInputValue:s}),i(s,a),s}return c},r.prev=function(){r.hasPrev()&&r.handleChange(r.state.current-1)},r.next=function(){r.hasNext()&&r.handleChange(r.state.current+1)},r.jumpPrev=function(){r.handleChange(r.getJumpPrevPage())},r.jumpNext=function(){r.handleChange(r.getJumpNextPage())},r.hasPrev=function(){return r.state.current>1},r.hasNext=function(){return r.state.current<_f(void 0,r.state,r.props)},r.runIfEnter=function(t,e){if("Enter"===t.key||13===t.charCode){for(var n=arguments.length,r=new Array(n>2?n-2:0),i=2;i=n?n:Number(e)}},{key:"getShowSizeChanger",value:function(){var t=this.props,e=t.showSizeChanger,n=t.total,r=t.totalBoundaryShowSizeChanger;return void 0!==e?e:n>r}},{key:"render",value:function(){var t=this.props,e=t.prefixCls,n=t.className,r=t.style,i=t.disabled,o=t.hideOnSinglePage,a=t.total,c=t.locale,l=t.showQuickJumper,u=t.showLessItems,s=t.showTitle,f=t.showTotal,h=t.simple,d=t.itemRender,p=t.showPrevNextJumpers,v=t.jumpPrevIcon,g=t.jumpNextIcon,m=t.selectComponentClass,y=t.selectPrefixCls,b=t.pageSizeOptions,x=this.state,w=x.current,S=x.pageSize,k=x.currentInputValue;if(!0===o&&a<=S)return null;var C=_f(void 0,this.state,this.props),O=[],E=null,M=null,A=null,P=null,_=null,D=l&&l.goButton,T=u?1:2,F=w-1>0?w-1:0,j=w+1a?a:w*S]));if(h)return D&&(_="boolean"==typeof D?Z.createElement("button",{type:"button",onClick:this.handleGoTO,onKeyUp:this.handleGoTO},c.jump_to_confirm):Z.createElement("span",{onClick:this.handleGoTO,onKeyUp:this.handleGoTO},D),_=Z.createElement("li",{title:s?"".concat(c.jump_to).concat(w,"/").concat(C):null,className:"".concat(e,"-simple-pager")},_)),Z.createElement("ul",(0,J.Z)({className:K()(e,"".concat(e,"-simple"),(0,B.Z)({},"".concat(e,"-disabled"),i),n),style:r,ref:this.paginationNode},I),R,Z.createElement("li",{title:s?c.prev_page:null,onClick:this.prev,tabIndex:this.hasPrev()?0:null,onKeyPress:this.runIfEnterPrev,className:K()("".concat(e,"-prev"),(0,B.Z)({},"".concat(e,"-disabled"),!this.hasPrev())),"aria-disabled":!this.hasPrev()},this.renderPrev(F)),Z.createElement("li",{title:s?"".concat(w,"/").concat(C):null,className:"".concat(e,"-simple-pager")},Z.createElement("input",{type:"text",value:k,disabled:i,onKeyDown:this.handleKeyDown,onKeyUp:this.handleKeyUp,onChange:this.handleKeyUp,onBlur:this.handleBlur,size:3}),Z.createElement("span",{className:"".concat(e,"-slash")},"/"),C),Z.createElement("li",{title:s?c.next_page:null,onClick:this.next,tabIndex:this.hasPrev()?0:null,onKeyPress:this.runIfEnterNext,className:K()("".concat(e,"-next"),(0,B.Z)({},"".concat(e,"-disabled"),!this.hasNext())),"aria-disabled":!this.hasNext()},this.renderNext(j)),_);if(C<=3+2*T){var L={locale:c,rootPrefixCls:e,onClick:this.handleChange,onKeyPress:this.runIfEnter,showTitle:s,itemRender:d};C||O.push(Z.createElement(Mf,(0,J.Z)({},L,{key:"noPager",page:1,className:"".concat(e,"-item-disabled")})));for(var N=1;N<=C;N+=1){var z=w===N;O.push(Z.createElement(Mf,(0,J.Z)({},L,{key:N,page:N,active:z})))}}else{var U=u?c.prev_3:c.prev_5,H=u?c.next_3:c.next_5;p&&(E=Z.createElement("li",{title:s?U:null,key:"prev",onClick:this.jumpPrev,tabIndex:0,onKeyPress:this.runIfEnterJumpPrev,className:K()("".concat(e,"-jump-prev"),(0,B.Z)({},"".concat(e,"-jump-prev-custom-icon"),!!v))},d(this.getJumpPrevPage(),"jump-prev",this.getItemIcon(v,"prev page"))),M=Z.createElement("li",{title:s?H:null,key:"next",tabIndex:0,onClick:this.jumpNext,onKeyPress:this.runIfEnterJumpNext,className:K()("".concat(e,"-jump-next"),(0,B.Z)({},"".concat(e,"-jump-next-custom-icon"),!!g))},d(this.getJumpNextPage(),"jump-next",this.getItemIcon(g,"next page")))),P=Z.createElement(Mf,{locale:c,last:!0,rootPrefixCls:e,onClick:this.handleChange,onKeyPress:this.runIfEnter,key:C,page:C,active:!1,showTitle:s,itemRender:d}),A=Z.createElement(Mf,{locale:c,rootPrefixCls:e,onClick:this.handleChange,onKeyPress:this.runIfEnter,key:1,page:1,active:!1,showTitle:s,itemRender:d});var W=Math.max(1,w-T),V=Math.min(w+T,C);w-1<=T&&(V=1+2*T),C-w<=T&&(W=C-2*T);for(var G=W;G<=V;G+=1){var X=w===G;O.push(Z.createElement(Mf,{locale:c,rootPrefixCls:e,onClick:this.handleChange,onKeyPress:this.runIfEnter,key:G,page:G,active:X,showTitle:s,itemRender:d}))}w-1>=2*T&&3!==w&&(O[0]=(0,Z.cloneElement)(O[0],{className:"".concat(e,"-item-after-jump-prev")}),O.unshift(E)),C-w>=2*T&&w!==C-2&&(O[O.length-1]=(0,Z.cloneElement)(O[O.length-1],{className:"".concat(e,"-item-before-jump-next")}),O.push(M)),1!==W&&O.unshift(A),V!==C&&O.push(P)}var q=!this.hasPrev()||!C,Y=!this.hasNext()||!C;return Z.createElement("ul",(0,J.Z)({className:K()(e,n,(0,B.Z)({},"".concat(e,"-disabled"),i)),style:r,ref:this.paginationNode},I),R,Z.createElement("li",{title:s?c.prev_page:null,onClick:this.prev,tabIndex:q?null:0,onKeyPress:this.runIfEnterPrev,className:K()("".concat(e,"-prev"),(0,B.Z)({},"".concat(e,"-disabled"),q)),"aria-disabled":q},this.renderPrev(F)),O,Z.createElement("li",{title:s?c.next_page:null,onClick:this.next,tabIndex:Y?null:0,onKeyPress:this.runIfEnterNext,className:K()("".concat(e,"-next"),(0,B.Z)({},"".concat(e,"-disabled"),Y)),"aria-disabled":Y},this.renderNext(j)),Z.createElement(Ef,{disabled:i,locale:c,rootPrefixCls:e,selectComponentClass:m,selectPrefixCls:y,changeSize:this.getShowSizeChanger()?this.changePageSize:null,current:w,pageSize:S,pageSizeOptions:b,quickGo:this.shouldDisplayQuickJumper()?this.handleChange:null,goButton:D}))}}],[{key:"getDerivedStateFromProps",value:function(t,e){var n={};if("current"in t&&(n.current=t.current,t.current!==e.current&&(n.currentInputValue=n.current)),"pageSize"in t&&t.pageSize!==e.pageSize){var r=e.current,i=_f(t.pageSize,e,t);r=r>i?i:r,"current"in t||(n.current=r,n.currentInputValue=r),n.pageSize=t.pageSize}return n}}]),n}(Z.Component);Df.defaultProps={defaultCurrent:1,total:0,defaultPageSize:10,onChange:Af,className:"",selectPrefixCls:"rc-select",prefixCls:"rc-pagination",selectComponentClass:null,hideOnSinglePage:!1,showPrevNextJumpers:!0,showQuickJumper:!1,showLessItems:!1,showTitle:!0,onShowSizeChange:Af,locale:{items_per_page:"条/页",jump_to:"跳至",jump_to_confirm:"确定",page:"页",prev_page:"上一页",next_page:"下一页",prev_5:"向前 5 页",next_5:"向后 5 页",prev_3:"向前 3 页",next_3:"向后 3 页",page_size:"页码"},style:{},itemRender:function(t,e,n){return n},totalBoundaryShowSizeChanger:50};var Tf=Df,Zf=Z.createContext(null);function Ff(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:250,e=Z.useRef(null),n=Z.useRef(null);return Z.useEffect((function(){return function(){window.clearTimeout(n.current)}}),[]),[function(){return e.current},function(r){(r||null===e.current)&&(e.current=r),window.clearTimeout(n.current),n.current=window.setTimeout((function(){e.current=null}),t)}]}var jf=["prefixCls","invalidate","item","renderItem","responsive","responsiveDisabled","registerSize","itemKey","className","style","children","display","order","component"],If=void 0;function Rf(t,e){var n=t.prefixCls,r=t.invalidate,i=t.item,o=t.renderItem,a=t.responsive,c=t.responsiveDisabled,l=t.registerSize,u=t.itemKey,s=t.className,f=t.style,h=t.children,d=t.display,p=t.order,v=t.component,g=void 0===v?"div":v,m=(0,rt.Z)(t,jf),y=a&&!d;function b(t){l(u,t)}Z.useEffect((function(){return function(){b(null)}}),[]);var x,w=o&&i!==If?o(i):h;r||(x={opacity:y?0:1,height:y?0:If,overflowY:y?"hidden":If,order:a?p:If,pointerEvents:y?"none":If,position:y?"absolute":If});var S={};y&&(S["aria-hidden"]=!0);var k=Z.createElement(g,(0,J.Z)({className:K()(!r&&n,s),style:(0,lt.Z)((0,lt.Z)({},x),f)},S,m,{ref:e}),w);return a&&(k=Z.createElement(ii,{onResize:function(t){b(t.offsetWidth)},disabled:c},k)),k}var Lf=Z.forwardRef(Rf);Lf.displayName="Item";var Nf=Lf;function Bf(){var t=Z.useRef(null);return function(e){t.current||(t.current=[],function(t){if("undefined"==typeof MessageChannel)(0,pe.Z)(t);else{var e=new MessageChannel;e.port1.onmessage=function(){return t()},e.port2.postMessage(void 0)}}((function(){(0,Pt.unstable_batchedUpdates)((function(){t.current.forEach((function(t){t()})),t.current=null}))}))),t.current.push(e)}}function zf(t,e){var n=Z.useState(e),r=(0,rr.Z)(n,2),i=r[0],o=r[1];return[i,(0,de.Z)((function(e){t((function(){o(e)}))}))]}var Uf=Z.createContext(null),Hf=["component"],Wf=["className"],Vf=["className"],Gf=function(t,e){var n=Z.useContext(Uf);if(!n){var r=t.component,i=void 0===r?"div":r,o=(0,rt.Z)(t,Hf);return Z.createElement(i,(0,J.Z)({},o,{ref:e}))}var a=n.className,c=(0,rt.Z)(n,Wf),l=t.className,u=(0,rt.Z)(t,Vf);return Z.createElement(Uf.Provider,{value:null},Z.createElement(Nf,(0,J.Z)({ref:e,className:K()(a,l)},c,u)))},Xf=Z.forwardRef(Gf);Xf.displayName="RawItem";var qf=Xf,Yf=["prefixCls","data","renderItem","renderRawItem","itemKey","itemWidth","ssr","style","className","maxCount","renderRest","renderRawRest","suffix","component","itemComponent","onVisibleChange"],$f="responsive",Kf="invalidate";function Jf(t){return"+ ".concat(t.length," ...")}function Qf(t,e){var n=t.prefixCls,r=void 0===n?"rc-overflow":n,i=t.data,o=void 0===i?[]:i,a=t.renderItem,c=t.renderRawItem,l=t.itemKey,u=t.itemWidth,s=void 0===u?10:u,f=t.ssr,h=t.style,d=t.className,p=t.maxCount,v=t.renderRest,g=t.renderRawRest,m=t.suffix,y=t.component,b=void 0===y?"div":y,x=t.itemComponent,w=t.onVisibleChange,S=(0,rt.Z)(t,Yf),k="full"===f,C=Bf(),O=zf(C,null),E=(0,rr.Z)(O,2),M=E[0],A=E[1],P=M||0,_=zf(C,new Map),D=(0,rr.Z)(_,2),T=D[0],F=D[1],j=zf(C,0),I=(0,rr.Z)(j,2),R=I[0],L=I[1],N=zf(C,0),B=(0,rr.Z)(N,2),z=B[0],U=B[1],H=zf(C,0),W=(0,rr.Z)(H,2),V=W[0],G=W[1],X=(0,Z.useState)(null),q=(0,rr.Z)(X,2),Y=q[0],$=q[1],Q=(0,Z.useState)(null),tt=(0,rr.Z)(Q,2),et=tt[0],nt=tt[1],it=Z.useMemo((function(){return null===et&&k?Number.MAX_SAFE_INTEGER:et||0}),[et,M]),ot=(0,Z.useState)(!1),at=(0,rr.Z)(ot,2),ct=at[0],ut=at[1],st="".concat(r,"-item"),ft=Math.max(R,z),ht=p===$f,dt=o.length&&ht,pt=p===Kf,vt=dt||"number"==typeof p&&o.length>p,gt=(0,Z.useMemo)((function(){var t=o;return dt?t=null===M&&k?o:o.slice(0,Math.min(o.length,P/s)):"number"==typeof p&&(t=o.slice(0,p)),t}),[o,s,M,p,dt]),mt=(0,Z.useMemo)((function(){return dt?o.slice(it+1):o.slice(gt.length)}),[o,gt,dt,it]),yt=(0,Z.useCallback)((function(t,e){var n;return"function"==typeof l?l(t):null!==(n=l&&(null==t?void 0:t[l]))&&void 0!==n?n:e}),[l]),bt=(0,Z.useCallback)(a||function(t){return t},[a]);function xt(t,e,n){(et!==t||void 0!==e&&e!==Y)&&(nt(t),n||(ut(tP){xt(r-1,t-i-V+z);break}}m&&St(0)+V>P&&$(null)}}),[P,T,z,V,yt,gt]);var kt=ct&&!!mt.length,Ct={};null!==Y&&dt&&(Ct={position:"absolute",left:Y,top:0});var Ot,Et={prefixCls:st,responsive:dt,component:x,invalidate:pt},Mt=c?function(t,e){var n=yt(t,e);return Z.createElement(Uf.Provider,{key:n,value:(0,lt.Z)((0,lt.Z)({},Et),{},{order:e,item:t,itemKey:n,registerSize:wt,display:e<=it})},c(t,e))}:function(t,e){var n=yt(t,e);return Z.createElement(Nf,(0,J.Z)({},Et,{order:e,key:n,item:t,renderItem:bt,itemKey:n,registerSize:wt,display:e<=it}))},At={order:kt?it:Number.MAX_SAFE_INTEGER,className:"".concat(st,"-rest"),registerSize:function(t,e){U(e),L(z)},display:kt};if(g)g&&(Ot=Z.createElement(Uf.Provider,{value:(0,lt.Z)((0,lt.Z)({},Et),At)},g(mt)));else{var Pt=v||Jf;Ot=Z.createElement(Nf,(0,J.Z)({},Et,At),"function"==typeof Pt?Pt(mt):Pt)}var _t=Z.createElement(b,(0,J.Z)({className:K()(!pt&&r,d),style:h,ref:e},S),gt.map(Mt),vt?Ot:null,m&&Z.createElement(Nf,(0,J.Z)({},Et,{responsive:ht,responsiveDisabled:!dt,order:it,className:"".concat(st,"-suffix"),registerSize:function(t,e){G(e)},display:!0,style:Ct}),m));return ht&&(_t=Z.createElement(ii,{onResize:function(t,e){A(e.clientWidth)},disabled:!dt},_t)),_t}var th=Z.forwardRef(Qf);th.displayName="Overflow",th.Item=qf,th.RESPONSIVE=$f,th.INVALIDATE=Kf;var eh=th,nh=function(t){var e,n=t.className,r=t.customizeIcon,i=t.customizeIconProps,o=t.onMouseDown,a=t.onClick,c=t.children;return e="function"==typeof r?r(i):r,Z.createElement("span",{className:n,onMouseDown:function(t){t.preventDefault(),o&&o(t)},style:{userSelect:"none",WebkitUserSelect:"none"},unselectable:"on",onClick:a,"aria-hidden":!0},void 0!==e?e:Z.createElement("span",{className:K()(n.split(/\s+/).map((function(t){return"".concat(t,"-icon")})))},c))},rh=function(t,e){var n,r,i=t.prefixCls,o=t.id,a=t.inputElement,c=t.disabled,l=t.tabIndex,u=t.autoFocus,s=t.autoComplete,f=t.editable,h=t.activeDescendantId,d=t.value,p=t.maxLength,v=t.onKeyDown,g=t.onMouseDown,m=t.onChange,y=t.onPaste,b=t.onCompositionStart,x=t.onCompositionEnd,w=t.open,S=t.attrs,k=a||Z.createElement("input",null),C=k,O=C.ref,E=C.props,M=E.onKeyDown,A=E.onChange,P=E.onMouseDown,_=E.onCompositionStart,D=E.onCompositionEnd,T=E.style;return(0,bt.Kp)(!("maxLength"in k.props),"Passing 'maxLength' to input element directly may not work because input in BaseSelect is controlled."),k=Z.cloneElement(k,(0,lt.Z)((0,lt.Z)((0,lt.Z)({type:"search"},E),{},{id:o,ref:(0,le.sQ)(e,O),disabled:c,tabIndex:l,autoComplete:s||"off",autoFocus:u,className:K()("".concat(i,"-selection-search-input"),null===(n=k)||void 0===n||null===(r=n.props)||void 0===r?void 0:r.className),role:"combobox","aria-label":"Search","aria-expanded":w,"aria-haspopup":"listbox","aria-owns":"".concat(o,"_list"),"aria-autocomplete":"list","aria-controls":"".concat(o,"_list"),"aria-activedescendant":w?h:void 0},S),{},{value:f?d:"",maxLength:p,readOnly:!f,unselectable:f?null:"on",style:(0,lt.Z)((0,lt.Z)({},T),{},{opacity:f?null:0}),onKeyDown:function(t){v(t),M&&M(t)},onMouseDown:function(t){g(t),P&&P(t)},onChange:function(t){m(t),A&&A(t)},onCompositionStart:function(t){b(t),_&&_(t)},onCompositionEnd:function(t){x(t),D&&D(t)},onPaste:y}))},ih=Z.forwardRef(rh);ih.displayName="Input";var oh=ih;function ah(t){return Array.isArray(t)?t:void 0!==t?[t]:[]}var ch="undefined"!=typeof window&&window.document&&window.document.documentElement;function lh(t){return["string","number"].includes((0,it.Z)(t))}function uh(t){var e=void 0;return t&&(lh(t.title)?e=t.title.toString():lh(t.label)&&(e=t.label.toString())),e}function sh(t){var e;return null!==(e=t.key)&&void 0!==e?e:t.value}var fh=function(t){t.preventDefault(),t.stopPropagation()},hh=function(t){var e,n,r=t.id,i=t.prefixCls,o=t.values,a=t.open,c=t.searchValue,l=t.autoClearSearchValue,u=t.inputRef,s=t.placeholder,f=t.disabled,h=t.mode,d=t.showSearch,p=t.autoFocus,v=t.autoComplete,g=t.activeDescendantId,m=t.tabIndex,y=t.removeIcon,b=t.maxTagCount,x=t.maxTagTextLength,w=t.maxTagPlaceholder,S=void 0===w?function(t){return"+ ".concat(t.length," ...")}:w,k=t.tagRender,C=t.onToggleOpen,O=t.onRemove,E=t.onInputChange,M=t.onInputPaste,A=t.onInputKeyDown,P=t.onInputMouseDown,_=t.onInputCompositionStart,D=t.onInputCompositionEnd,T=Z.useRef(null),F=(0,Z.useState)(0),j=(0,rr.Z)(F,2),I=j[0],R=j[1],L=(0,Z.useState)(!1),N=(0,rr.Z)(L,2),z=N[0],U=N[1],H="".concat(i,"-selection"),W=a||"multiple"===h&&!1===l||"tags"===h?c:"",V="tags"===h||"multiple"===h&&!1===l||d&&(a||z);function G(t,e,n,r,i){return Z.createElement("span",{className:K()("".concat(H,"-item"),(0,B.Z)({},"".concat(H,"-item-disabled"),n)),title:uh(t)},Z.createElement("span",{className:"".concat(H,"-item-content")},e),r&&Z.createElement(nh,{className:"".concat(H,"-item-remove"),onMouseDown:fh,onClick:i,customizeIcon:y},"×"))}e=function(){R(T.current.scrollWidth)},n=[W],ch?Z.useLayoutEffect(e,n):Z.useEffect(e,n);var X=Z.createElement("div",{className:"".concat(H,"-search"),style:{width:I},onFocus:function(){U(!0)},onBlur:function(){U(!1)}},Z.createElement(oh,{ref:u,open:a,prefixCls:i,id:r,inputElement:null,disabled:f,autoFocus:p,autoComplete:v,editable:V,activeDescendantId:g,value:W,onKeyDown:A,onMouseDown:P,onChange:E,onPaste:M,onCompositionStart:_,onCompositionEnd:D,tabIndex:m,attrs:dt(t,!0)}),Z.createElement("span",{ref:T,className:"".concat(H,"-search-mirror"),"aria-hidden":!0},W," ")),q=Z.createElement(eh,{prefixCls:"".concat(H,"-overflow"),data:o,renderItem:function(t){var e=t.disabled,n=t.label,r=t.value,i=!f&&!e,o=n;if("number"==typeof x&&("string"==typeof n||"number"==typeof n)){var c=String(o);c.length>x&&(o="".concat(c.slice(0,x),"..."))}var l=function(e){e&&e.stopPropagation(),O(t)};return"function"==typeof k?function(t,e,n,r,i){return Z.createElement("span",{onMouseDown:function(t){fh(t),C(!a)}},k({label:e,value:t,disabled:n,closable:r,onClose:i}))}(r,o,e,i,l):G(t,o,e,i,l)},renderRest:function(t){var e="function"==typeof S?S(t):S;return G({title:e},e,!1)},suffix:X,itemKey:sh,maxCount:b});return Z.createElement(Z.Fragment,null,q,!o.length&&!W&&Z.createElement("span",{className:"".concat(H,"-placeholder")},s))},dh=function(t){var e=t.inputElement,n=t.prefixCls,r=t.id,i=t.inputRef,o=t.disabled,a=t.autoFocus,c=t.autoComplete,l=t.activeDescendantId,u=t.mode,s=t.open,f=t.values,h=t.placeholder,d=t.tabIndex,p=t.showSearch,v=t.searchValue,g=t.activeValue,m=t.maxLength,y=t.onInputKeyDown,b=t.onInputMouseDown,x=t.onInputChange,w=t.onInputPaste,S=t.onInputCompositionStart,k=t.onInputCompositionEnd,C=t.title,O=Z.useState(!1),E=(0,rr.Z)(O,2),M=E[0],A=E[1],P="combobox"===u,_=P||p,D=f[0],T=v||"";P&&g&&!M&&(T=g),Z.useEffect((function(){P&&A(!1)}),[P,g]);var F=!("combobox"!==u&&!s&&!p)&&!!T,j=void 0===C?uh(D):C;return Z.createElement(Z.Fragment,null,Z.createElement("span",{className:"".concat(n,"-selection-search")},Z.createElement(oh,{ref:i,prefixCls:n,id:r,open:s,inputElement:e,disabled:o,autoFocus:a,autoComplete:c,editable:_,activeDescendantId:l,value:T,onKeyDown:y,onMouseDown:b,onChange:function(t){A(!0),x(t)},onPaste:w,onCompositionStart:S,onCompositionEnd:k,tabIndex:d,attrs:dt(t,!0),maxLength:P?m:void 0})),!P&&D?Z.createElement("span",{className:"".concat(n,"-selection-item"),title:j,style:F?{visibility:"hidden"}:void 0},D.label):null,function(){if(D)return null;var t=F?{visibility:"hidden"}:void 0;return Z.createElement("span",{className:"".concat(n,"-selection-placeholder"),style:t},h)}())};var ph=function(t,e){var n=(0,Z.useRef)(null),r=(0,Z.useRef)(!1),i=t.prefixCls,o=t.open,a=t.mode,c=t.showSearch,l=t.tokenWithEnter,u=t.autoClearSearchValue,s=t.onSearch,f=t.onSearchSubmit,h=t.onToggleOpen,d=t.onInputKeyDown,p=t.domRef;Z.useImperativeHandle(e,(function(){return{focus:function(){n.current.focus()},blur:function(){n.current.blur()}}}));var v=Ff(0),g=(0,rr.Z)(v,2),m=g[0],y=g[1],b=(0,Z.useRef)(null),x=function(t){!1!==s(t,!0,r.current)&&h(!0)},w={inputRef:n,onInputKeyDown:function(t){var e,n=t.which;n!==Ya.Z.UP&&n!==Ya.Z.DOWN||t.preventDefault(),d&&d(t),n!==Ya.Z.ENTER||"tags"!==a||r.current||o||null==f||f(t.target.value),e=n,[Ya.Z.ESC,Ya.Z.SHIFT,Ya.Z.BACKSPACE,Ya.Z.TAB,Ya.Z.WIN_KEY,Ya.Z.ALT,Ya.Z.META,Ya.Z.WIN_KEY_RIGHT,Ya.Z.CTRL,Ya.Z.SEMICOLON,Ya.Z.EQUALS,Ya.Z.CAPS_LOCK,Ya.Z.CONTEXT_MENU,Ya.Z.F1,Ya.Z.F2,Ya.Z.F3,Ya.Z.F4,Ya.Z.F5,Ya.Z.F6,Ya.Z.F7,Ya.Z.F8,Ya.Z.F9,Ya.Z.F10,Ya.Z.F11,Ya.Z.F12].includes(e)||h(!0)},onInputMouseDown:function(){y(!0)},onInputChange:function(t){var e=t.target.value;if(l&&b.current&&/[\r\n]/.test(b.current)){var n=b.current.replace(/[\r\n]+$/,"").replace(/\r\n/g," ").replace(/[\r\n]/g," ");e=e.replace(n,b.current)}b.current=null,x(e)},onInputPaste:function(t){var e=t.clipboardData.getData("text");b.current=e},onInputCompositionStart:function(){r.current=!0},onInputCompositionEnd:function(t){r.current=!1,"combobox"!==a&&x(t.target.value)}},S="multiple"===a||"tags"===a?Z.createElement(hh,(0,J.Z)({},t,w)):Z.createElement(dh,(0,J.Z)({},t,w));return Z.createElement("div",{ref:p,className:"".concat(i,"-selector"),onClick:function(t){t.target!==n.current&&(void 0!==document.body.style.msTouchAction?setTimeout((function(){n.current.focus()})):n.current.focus())},onMouseDown:function(t){var e=m();t.target===n.current||e||"combobox"===a||t.preventDefault(),("combobox"===a||c&&e)&&o||(o&&!1!==u&&s("",!0,!1),h())}},S)},vh=Z.forwardRef(ph);vh.displayName="Selector";var gh=vh,mh=["prefixCls","disabled","visible","children","popupElement","containerWidth","animation","transitionName","dropdownStyle","dropdownClassName","direction","placement","builtinPlacements","dropdownMatchSelectWidth","dropdownRender","dropdownAlign","getPopupContainer","empty","getTriggerDOMNode","onPopupVisibleChange","onPopupMouseEnter"],yh=function(t,e){var n=t.prefixCls,r=(t.disabled,t.visible),i=t.children,o=t.popupElement,a=t.containerWidth,c=t.animation,l=t.transitionName,u=t.dropdownStyle,s=t.dropdownClassName,f=t.direction,h=void 0===f?"ltr":f,d=t.placement,p=t.builtinPlacements,v=t.dropdownMatchSelectWidth,g=t.dropdownRender,m=t.dropdownAlign,y=t.getPopupContainer,b=t.empty,x=t.getTriggerDOMNode,w=t.onPopupVisibleChange,S=t.onPopupMouseEnter,k=(0,rt.Z)(t,mh),C="".concat(n,"-dropdown"),O=o;g&&(O=g(o));var E=Z.useMemo((function(){return p||function(t){var e=!0===t?0:1;return{bottomLeft:{points:["tl","bl"],offset:[0,4],overflow:{adjustX:e,adjustY:1},htmlRegion:"scroll"},bottomRight:{points:["tr","br"],offset:[0,4],overflow:{adjustX:e,adjustY:1},htmlRegion:"scroll"},topLeft:{points:["bl","tl"],offset:[0,-4],overflow:{adjustX:e,adjustY:1},htmlRegion:"scroll"},topRight:{points:["br","tr"],offset:[0,-4],overflow:{adjustX:e,adjustY:1},htmlRegion:"scroll"}}}(v)}),[p,v]),M=c?"".concat(C,"-").concat(c):l,A=Z.useRef(null);Z.useImperativeHandle(e,(function(){return{getPopupElement:function(){return A.current}}}));var P=(0,lt.Z)({minWidth:a},u);return"number"==typeof v?P.width=v:v&&(P.width=a),Z.createElement(Di,(0,J.Z)({},k,{showAction:w?["click"]:[],hideAction:w?["click"]:[],popupPlacement:d||("rtl"===h?"bottomRight":"bottomLeft"),builtinPlacements:E,prefixCls:C,popupTransitionName:M,popup:Z.createElement("div",{ref:A,onMouseEnter:S},O),popupAlign:m,popupVisible:r,getPopupContainer:y,popupClassName:K()(s,(0,B.Z)({},"".concat(C,"-empty"),b)),popupStyle:P,getTriggerDOMNode:x,onPopupVisibleChange:w}),i)},bh=Z.forwardRef(yh);bh.displayName="SelectTrigger";var xh=bh,wh=n(80475);function Sh(t,e){var n,r=t.key;return"value"in t&&(n=t.value),null!=r?r:void 0!==n?n:"rc-index-key-".concat(e)}function kh(t,e){var n=t||{},r=n.label||(e?"children":"label");return{label:r,value:n.value||"value",options:n.options||"options",groupLabel:n.groupLabel||r}}function Ch(t){var e=(0,lt.Z)({},t);return"props"in e||Object.defineProperty(e,"props",{get:function(){return(0,bt.ZP)(!1,"Return type is option instead of Option instance. Please read value directly instead of reading from `props`."),e}}),e}var Oh=["id","prefixCls","className","showSearch","tagRender","direction","omitDomProps","displayValues","onDisplayValuesChange","emptyOptions","notFoundContent","onClear","mode","disabled","loading","getInputElement","getRawInputElement","open","defaultOpen","onDropdownVisibleChange","activeValue","onActiveValueChange","activeDescendantId","searchValue","autoClearSearchValue","onSearch","onSearchSplit","tokenSeparators","allowClear","suffixIcon","clearIcon","OptionList","animation","transitionName","dropdownStyle","dropdownClassName","dropdownMatchSelectWidth","dropdownRender","dropdownAlign","placement","builtinPlacements","getPopupContainer","showAction","onFocus","onBlur","onKeyUp","onKeyDown","onMouseDown"],Eh=["value","onChange","removeIcon","placeholder","autoFocus","maxTagCount","maxTagTextLength","maxTagPlaceholder","choiceTransitionName","onInputKeyDown","onPopupScroll","tabIndex"];function Mh(t){return"tags"===t||"multiple"===t}var Ah=Z.forwardRef((function(t,e){var n,r,i=t.id,o=t.prefixCls,a=t.className,c=t.showSearch,l=t.tagRender,u=t.direction,s=t.omitDomProps,f=t.displayValues,h=t.onDisplayValuesChange,d=t.emptyOptions,p=t.notFoundContent,v=void 0===p?"Not Found":p,g=t.onClear,m=t.mode,y=t.disabled,b=t.loading,x=t.getInputElement,w=t.getRawInputElement,S=t.open,k=t.defaultOpen,C=t.onDropdownVisibleChange,O=t.activeValue,E=t.onActiveValueChange,M=t.activeDescendantId,A=t.searchValue,P=t.autoClearSearchValue,_=t.onSearch,D=t.onSearchSplit,T=t.tokenSeparators,F=t.allowClear,j=t.suffixIcon,I=t.clearIcon,R=t.OptionList,L=t.animation,N=t.transitionName,z=t.dropdownStyle,U=t.dropdownClassName,H=t.dropdownMatchSelectWidth,W=t.dropdownRender,V=t.dropdownAlign,G=t.placement,X=t.builtinPlacements,q=t.getPopupContainer,$=t.showAction,Q=void 0===$?[]:$,tt=t.onFocus,et=t.onBlur,nt=t.onKeyUp,ot=t.onKeyDown,at=t.onMouseDown,ct=(0,rt.Z)(t,Oh),ut=Mh(m),st=(void 0!==c?c:ut)||"combobox"===m,ft=(0,lt.Z)({},ct);Eh.forEach((function(t){delete ft[t]})),null==s||s.forEach((function(t){delete ft[t]}));var ht=Z.useState(!1),dt=(0,rr.Z)(ht,2),pt=dt[0],vt=dt[1];Z.useEffect((function(){vt(li())}),[]);var gt=Z.useRef(null),mt=Z.useRef(null),yt=Z.useRef(null),bt=Z.useRef(null),xt=Z.useRef(null),wt=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,e=Z.useState(!1),n=(0,rr.Z)(e,2),r=n[0],i=n[1],o=Z.useRef(null),a=function(){window.clearTimeout(o.current)};return Z.useEffect((function(){return a}),[]),[r,function(e,n){a(),o.current=window.setTimeout((function(){i(e),n&&n()}),t)},a]}(),St=(0,rr.Z)(wt,3),kt=St[0],Ct=St[1],Ot=St[2];Z.useImperativeHandle(e,(function(){var t,e;return{focus:null===(t=bt.current)||void 0===t?void 0:t.focus,blur:null===(e=bt.current)||void 0===e?void 0:e.blur,scrollTo:function(t){var e;return null===(e=xt.current)||void 0===e?void 0:e.scrollTo(t)}}}));var Et=Z.useMemo((function(){var t;if("combobox"!==m)return A;var e=null===(t=f[0])||void 0===t?void 0:t.value;return"string"==typeof e||"number"==typeof e?String(e):""}),[A,m,f]),Mt="combobox"===m&&"function"==typeof x&&x()||null,Pt="function"==typeof w&&w(),_t=(0,le.x1)(mt,null==Pt||null===(n=Pt.props)||void 0===n?void 0:n.ref),Dt=Z.useState(!1),Tt=(0,rr.Z)(Dt,2),Zt=Tt[0],Ft=Tt[1];(0,vr.Z)((function(){Ft(!0)}),[]);var jt=(0,At.Z)(!1,{defaultValue:k,value:S}),It=(0,rr.Z)(jt,2),Rt=It[0],Lt=It[1],Nt=!!Zt&&Rt,Bt=!v&&d;(y||Bt&&Nt&&"combobox"===m)&&(Nt=!1);var zt=!Bt&&Nt,Ut=Z.useCallback((function(t){var e=void 0!==t?t:!Nt;y||(Lt(e),Nt!==e&&(null==C||C(e)))}),[y,Nt,Lt,C]),Ht=Z.useMemo((function(){return(T||[]).some((function(t){return["\n","\r\n"].includes(t)}))}),[T]),Wt=function(t,e,n){var r=!0,i=t;null==E||E(null);var o=n?null:function(t,e){if(!e||!e.length)return null;var n=!1,r=function t(e,r){var i=(0,wh.Z)(r),o=i[0],a=i.slice(1);if(!o)return[e];var c=e.split(o);return n=n||c.length>1,c.reduce((function(e,n){return[].concat((0,Y.Z)(e),(0,Y.Z)(t(n,a)))}),[]).filter((function(t){return t}))}(t,e);return n?r:null}(t,T);return"combobox"!==m&&o&&(i="",null==D||D(o),Ut(!1),r=!1),_&&Et!==i&&_(i,{source:e?"typing":"effect"}),r};Z.useEffect((function(){Nt||ut||"combobox"===m||Wt("",!1,!1)}),[Nt]),Z.useEffect((function(){Rt&&y&&Lt(!1),y&&Ct(!1)}),[y]);var Vt=Ff(),Gt=(0,rr.Z)(Vt,2),Xt=Gt[0],qt=Gt[1],Yt=Z.useRef(!1),$t=[];Z.useEffect((function(){return function(){$t.forEach((function(t){return clearTimeout(t)})),$t.splice(0,$t.length)}}),[]);var Kt,Jt=Z.useState(null),Qt=(0,rr.Z)(Jt,2),te=Qt[0],ee=Qt[1],ne=Z.useState({}),re=(0,rr.Z)(ne,2)[1];(0,vr.Z)((function(){if(zt){var t,e=Math.ceil(null===(t=gt.current)||void 0===t?void 0:t.getBoundingClientRect().width);te===e||Number.isNaN(e)||ee(e)}}),[zt]),Pt&&(Kt=function(t){Ut(t)}),function(t,e,n,r){var i=Z.useRef(null);i.current={open:e,triggerOpen:n,customizedTrigger:r},Z.useEffect((function(){function e(e){var n;if(null===(n=i.current)||void 0===n||!n.customizedTrigger){var r=e.target;r.shadowRoot&&e.composed&&(r=e.composedPath()[0]||r),i.current.open&&t().filter((function(t){return t})).every((function(t){return!t.contains(r)&&t!==r}))&&i.current.triggerOpen(!1)}}return window.addEventListener("mousedown",e),function(){return window.removeEventListener("mousedown",e)}}),[])}((function(){var t;return[gt.current,null===(t=yt.current)||void 0===t?void 0:t.getPopupElement()]}),zt,Ut,!!Pt);var ie,oe=Z.useMemo((function(){return(0,lt.Z)((0,lt.Z)({},t),{},{notFoundContent:v,open:Nt,triggerOpen:zt,id:i,showSearch:st,multiple:ut,toggleOpen:Ut})}),[t,v,zt,Nt,i,st,ut,Ut]),ae=!!j||b;ae&&(ie=Z.createElement(nh,{className:K()("".concat(o,"-arrow"),(0,B.Z)({},"".concat(o,"-arrow-loading"),b)),customizeIcon:j,customizeIconProps:{loading:b,searchValue:Et,open:Nt,focused:kt,showSearch:st}}));var ce,ue=function(t,e,n,r,i){var o=arguments.length>5&&void 0!==arguments[5]&&arguments[5],a=arguments.length>6?arguments[6]:void 0,c=arguments.length>7?arguments[7]:void 0,l=Z.useMemo((function(){return"object"===(0,it.Z)(r)?r.clearIcon:i||void 0}),[r,i]);return{allowClear:Z.useMemo((function(){return!(o||!r||!n.length&&!a||"combobox"===c&&""===a)}),[r,o,n.length,a,c]),clearIcon:Z.createElement(nh,{className:"".concat(t,"-clear"),onMouseDown:e,customizeIcon:l},"×")}}(o,(function(){var t;null==g||g(),null===(t=bt.current)||void 0===t||t.focus(),h([],{type:"clear",values:f}),Wt("",!1,!1)}),f,F,I,y,Et,m),se=ue.allowClear,fe=ue.clearIcon,he=Z.createElement(R,{ref:xt}),de=K()(o,a,(r={},(0,B.Z)(r,"".concat(o,"-focused"),kt),(0,B.Z)(r,"".concat(o,"-multiple"),ut),(0,B.Z)(r,"".concat(o,"-single"),!ut),(0,B.Z)(r,"".concat(o,"-allow-clear"),F),(0,B.Z)(r,"".concat(o,"-show-arrow"),ae),(0,B.Z)(r,"".concat(o,"-disabled"),y),(0,B.Z)(r,"".concat(o,"-loading"),b),(0,B.Z)(r,"".concat(o,"-open"),Nt),(0,B.Z)(r,"".concat(o,"-customize-input"),Mt),(0,B.Z)(r,"".concat(o,"-show-search"),st),r)),pe=Z.createElement(xh,{ref:yt,disabled:y,prefixCls:o,visible:zt,popupElement:he,containerWidth:te,animation:L,transitionName:N,dropdownStyle:z,dropdownClassName:U,direction:u,dropdownMatchSelectWidth:H,dropdownRender:W,dropdownAlign:V,placement:G,builtinPlacements:X,getPopupContainer:q,empty:d,getTriggerDOMNode:function(){return mt.current},onPopupVisibleChange:Kt,onPopupMouseEnter:function(){re({})}},Pt?Z.cloneElement(Pt,{ref:_t}):Z.createElement(gh,(0,J.Z)({},t,{domRef:mt,prefixCls:o,inputElement:Mt,ref:bt,id:i,showSearch:st,autoClearSearchValue:P,mode:m,activeDescendantId:M,tagRender:l,values:f,open:Nt,onToggleOpen:Ut,activeValue:O,searchValue:Et,onSearch:Wt,onSearchSubmit:function(t){t&&t.trim()&&_(t,{source:"submit"})},onRemove:function(t){var e=f.filter((function(e){return e!==t}));h(e,{type:"remove",values:[t]})},tokenWithEnter:Ht})));return ce=Pt?pe:Z.createElement("div",(0,J.Z)({className:de},ft,{ref:gt,onMouseDown:function(t){var e,n=t.target,r=null===(e=yt.current)||void 0===e?void 0:e.getPopupElement();if(r&&r.contains(n)){var i=setTimeout((function(){var t,e=$t.indexOf(i);-1!==e&&$t.splice(e,1),Ot(),pt||r.contains(document.activeElement)||null===(t=bt.current)||void 0===t||t.focus()}));$t.push(i)}for(var o=arguments.length,a=new Array(o>1?o-1:0),c=1;c=0;a-=1){var c=i[a];if(!c.disabled){i.splice(a,1),o=c;break}}o&&h(i,{type:"remove",values:[o]})}for(var l=arguments.length,u=new Array(l>1?l-1:0),s=1;s1?e-1:0),r=1;r1&&void 0!==arguments[1]&&arguments[1];return(0,je.Z)(t).map((function(t,n){if(!Z.isValidElement(t)||!t.type)return null;var r=t,i=r.type.isSelectOptGroup,o=r.key,a=r.props,c=a.children,l=(0,rt.Z)(a,jh);return e||!i?function(t){var e=t,n=e.key,r=e.props,i=r.children,o=r.value,a=(0,rt.Z)(r,Fh);return(0,lt.Z)({key:n,value:void 0!==o?o:n,children:i},a)}(t):(0,lt.Z)((0,lt.Z)({key:"__RC_SELECT_GRP__".concat(null===o?n:o,"__"),label:o},l),{},{options:Ih(c)})})).filter((function(t){return t}))}function Rh(t){var e=Z.useRef();e.current=t;var n=Z.useCallback((function(){return e.current.apply(e,arguments)}),[]);return n}var Lh=function(){return null};Lh.isSelectOptGroup=!0;var Nh=Lh,Bh=function(){return null};Bh.isSelectOption=!0;var zh=Bh,Uh=Z.forwardRef((function(t,e){var n=t.height,r=t.offset,i=t.children,o=t.prefixCls,a=t.onInnerResize,c=t.innerProps,l={},u={display:"flex",flexDirection:"column"};return void 0!==r&&(l={height:n,position:"relative",overflow:"hidden"},u=(0,lt.Z)((0,lt.Z)({},u),{},{transform:"translateY(".concat(r,"px)"),position:"absolute",left:0,right:0,top:0})),Z.createElement("div",{style:l},Z.createElement(ii,{onResize:function(t){t.offsetHeight&&a&&a()}},Z.createElement("div",(0,J.Z)({style:u,className:K()((0,B.Z)({},"".concat(o,"-holder-inner"),o)),ref:e},c),i)))}));Uh.displayName="Filler";var Hh=Uh;function Wh(t){return"touches"in t?t.touches[0].pageY:t.pageY}var Vh=function(t){(0,et.Z)(n,t);var e=(0,nt.Z)(n);function n(){var t;(0,Q.Z)(this,n);for(var r=arguments.length,i=new Array(r),o=0;on},t}return(0,tt.Z)(n,[{key:"componentDidMount",value:function(){this.scrollbarRef.current.addEventListener("touchstart",this.onScrollbarTouchStart),this.thumbRef.current.addEventListener("touchstart",this.onMouseDown)}},{key:"componentDidUpdate",value:function(t){t.scrollTop!==this.props.scrollTop&&this.delayHidden()}},{key:"componentWillUnmount",value:function(){var t,e;this.removeEvents(),null===(t=this.scrollbarRef.current)||void 0===t||t.removeEventListener("touchstart",this.onScrollbarTouchStart),null===(e=this.thumbRef.current)||void 0===e||e.removeEventListener("touchstart",this.onMouseDown),clearTimeout(this.visibleTimeout)}},{key:"render",value:function(){var t=this.state,e=t.dragging,n=t.visible,r=this.props,i=r.prefixCls,o=r.direction,a=this.getSpinHeight(),c=this.getTop(),l=this.showScroll(),u=l&&n,s="rtl"===o?{left:0}:{right:0};return Z.createElement("div",{ref:this.scrollbarRef,className:K()("".concat(i,"-scrollbar"),(0,B.Z)({},"".concat(i,"-scrollbar-show"),l)),style:(0,lt.Z)((0,lt.Z)({width:8,top:0,bottom:0},s),{},{position:"absolute",display:u?null:"none"}),onMouseDown:this.onContainerMouseDown,onMouseMove:this.delayHidden},Z.createElement("div",{ref:this.thumbRef,className:K()("".concat(i,"-scrollbar-thumb"),(0,B.Z)({},"".concat(i,"-scrollbar-thumb-moving"),e)),style:{width:"100%",height:a,top:c,left:0,position:"absolute",background:"rgba(0, 0, 0, 0.5)",borderRadius:99,cursor:"pointer",userSelect:"none"},onMouseDown:this.onMouseDown}))}}]),n}(Z.Component);function Gh(t){var e=t.children,n=t.setRef,r=Z.useCallback((function(t){n(t)}),[]);return Z.cloneElement(e,{ref:r})}var Xh=function(){function t(){(0,Q.Z)(this,t),this.maps=void 0,this.maps=Object.create(null)}return(0,tt.Z)(t,[{key:"set",value:function(t,e){this.maps[t]=e}},{key:"get",value:function(t){return this.maps[t]}}]),t}(),qh=Xh;function Yh(t,e,n){var r=Z.useState(t),i=(0,rr.Z)(r,2),o=i[0],a=i[1],c=Z.useState(null),l=(0,rr.Z)(c,2),u=l[0],s=l[1];return Z.useEffect((function(){var r=function(t,e,n){var r,i,o=t.length,a=e.length;if(0===o&&0===a)return null;o1&&void 0!==arguments[1]&&arguments[1],o=t<0&&i.current.top||t>0&&i.current.bottom;return e&&o?(clearTimeout(r.current),n.current=!1):o&&!n.current||(clearTimeout(r.current),n.current=!0,r.current=setTimeout((function(){n.current=!1}),50)),!n.current&&o}};var Jh=14/15;var Qh=["prefixCls","className","height","itemHeight","fullHeight","style","data","children","itemKey","virtual","direction","component","onScroll","onVisibleChange","innerProps"],td=[],ed={overflowY:"auto",overflowAnchor:"none"};function nd(t,e){var n=t.prefixCls,r=void 0===n?"rc-virtual-list":n,i=t.className,o=t.height,a=t.itemHeight,c=t.fullHeight,l=void 0===c||c,u=t.style,s=t.data,f=t.children,h=t.itemKey,d=t.virtual,p=t.direction,v=t.component,g=void 0===v?"div":v,m=t.onScroll,y=t.onVisibleChange,b=t.innerProps,x=(0,rt.Z)(t,Qh),w=!(!1===d||!o||!a),S=w&&s&&a*s.length>o,k=(0,Z.useState)(0),C=(0,rr.Z)(k,2),O=C[0],E=C[1],M=(0,Z.useState)(!1),A=(0,rr.Z)(M,2),P=A[0],_=A[1],D=K()(r,(0,B.Z)({},"".concat(r,"-rtl"),"rtl"===p),i),T=s||td,F=(0,Z.useRef)(),j=(0,Z.useRef)(),I=(0,Z.useRef)(),R=Z.useCallback((function(t){return"function"==typeof h?h(t):null==t?void 0:t[h]}),[h]),L={getKey:R};function N(t){E((function(e){var n=function(t){var e=t;Number.isNaN(ct.current)||(e=Math.min(e,ct.current));return e=Math.max(e,0),e}("function"==typeof t?t(e):t);return F.current.scrollTop=n,n}))}var z=(0,Z.useRef)({start:0,end:T.length}),U=(0,Z.useRef)(),H=Yh(T,R),W=(0,rr.Z)(H,1)[0];U.current=W;var V=function(t,e,n){var r=Z.useState(0),i=(0,rr.Z)(r,2),o=i[0],a=i[1],c=(0,Z.useRef)(new Map),l=(0,Z.useRef)(new qh),u=(0,Z.useRef)();function s(){pe.Z.cancel(u.current)}function f(){s(),u.current=(0,pe.Z)((function(){c.current.forEach((function(t,e){if(t&&t.offsetParent){var n=(0,Mr.Z)(t),r=n.offsetHeight;l.current.get(e)!==r&&l.current.set(e,n.offsetHeight)}})),a((function(t){return t+1}))}))}return(0,Z.useEffect)((function(){return s}),[]),[function(r,i){var o=t(r),a=c.current.get(o);i?(c.current.set(o,i),f()):c.current.delete(o),!a!=!i&&(i?null==e||e(r):null==n||n(r))},f,l.current,o]}(R,null,null),G=(0,rr.Z)(V,4),X=G[0],q=G[1],Y=G[2],$=G[3],Q=Z.useMemo((function(){if(!w)return{scrollHeight:void 0,start:0,end:T.length-1,offset:void 0};var t;if(!S)return{scrollHeight:(null===(t=j.current)||void 0===t?void 0:t.offsetHeight)||0,start:0,end:T.length-1,offset:void 0};for(var e,n,r,i=0,c=T.length,l=0;l=O&&void 0===e&&(e=l,n=i),h>O+o&&void 0===r&&(r=l),i=h}return void 0===e&&(e=0,n=0,r=Math.ceil(o/a)),void 0===r&&(r=T.length-1),{scrollHeight:i,start:e,end:r=Math.min(r+1,T.length),offset:n}}),[S,w,O,T,$,o]),tt=Q.scrollHeight,et=Q.start,nt=Q.end,ot=Q.offset;z.current.start=et,z.current.end=nt;var at=tt-o,ct=(0,Z.useRef)(at);ct.current=at;var ut=O<=0,st=O>=at,ft=Kh(ut,st);var ht=function(t,e,n,r){var i=(0,Z.useRef)(0),o=(0,Z.useRef)(null),a=(0,Z.useRef)(null),c=(0,Z.useRef)(!1),l=Kh(e,n);return[function(e){if(t){pe.Z.cancel(o.current);var n=e.deltaY;i.current+=n,a.current=n,l(n)||($h||e.preventDefault(),o.current=(0,pe.Z)((function(){var t=c.current?10:1;r(i.current*t),i.current=0})))}},function(e){t&&(c.current=e.detail===a.current)}]}(w,ut,st,(function(t){N((function(e){return e+t}))})),dt=(0,rr.Z)(ht,2),pt=dt[0],vt=dt[1];!function(t,e,n){var r,i=(0,Z.useRef)(!1),o=(0,Z.useRef)(0),a=(0,Z.useRef)(null),c=(0,Z.useRef)(null),l=function(t){if(i.current){var e=Math.ceil(t.touches[0].pageY),r=o.current-e;o.current=e,n(r)&&t.preventDefault(),clearInterval(c.current),c.current=setInterval((function(){(!n(r*=Jh,!0)||Math.abs(r)<=.1)&&clearInterval(c.current)}),16)}},u=function(){i.current=!1,r()},s=function(t){r(),1!==t.touches.length||i.current||(i.current=!0,o.current=Math.ceil(t.touches[0].pageY),a.current=t.target,a.current.addEventListener("touchmove",l),a.current.addEventListener("touchend",u))};r=function(){a.current&&(a.current.removeEventListener("touchmove",l),a.current.removeEventListener("touchend",u))},(0,vr.Z)((function(){return t&&e.current.addEventListener("touchstart",s),function(){var t;null===(t=e.current)||void 0===t||t.removeEventListener("touchstart",s),r(),clearInterval(c.current)}}),[t])}(w,F,(function(t,e){return!ft(t,e)&&(pt({preventDefault:function(){},deltaY:t}),!0)})),(0,vr.Z)((function(){function t(t){w&&t.preventDefault()}return F.current.addEventListener("wheel",pt),F.current.addEventListener("DOMMouseScroll",vt),F.current.addEventListener("MozMousePixelScroll",t),function(){F.current&&(F.current.removeEventListener("wheel",pt),F.current.removeEventListener("DOMMouseScroll",vt),F.current.removeEventListener("MozMousePixelScroll",t))}}),[w]);var gt=function(t,e,n,r,i,o,a,c){var l=Z.useRef();return function(u){if(null!=u){if(pe.Z.cancel(l.current),"number"==typeof u)a(u);else if(u&&"object"===(0,it.Z)(u)){var s,f=u.align;s="index"in u?u.index:e.findIndex((function(t){return i(t)===u.key}));var h=u.offset,d=void 0===h?0:h;!function c(u,h){if(!(u<0)&&t.current){var p=t.current.clientHeight,v=!1,g=h;if(p){for(var m=h||f,y=0,b=0,x=0,w=Math.min(e.length,s),S=0;S<=w;S+=1){var k=i(e[S]);b=y;var C=n.get(k);y=x=b+(void 0===C?r:C),S===s&&void 0===C&&(v=!0)}var O=null;switch(m){case"top":O=b-d;break;case"bottom":O=x-p+d;break;default:var E=t.current.scrollTop;bE+p&&(g="bottom")}null!==O&&O!==t.current.scrollTop&&a(O)}l.current=(0,pe.Z)((function(){v&&o(),c(u-1,g)}),2)}}(3)}}else c()}}(F,T,Y,a,R,q,N,(function(){var t;null===(t=I.current)||void 0===t||t.delayHidden()}));Z.useImperativeHandle(e,(function(){return{scrollTo:gt}})),(0,vr.Z)((function(){if(y){var t=T.slice(et,nt+1);y(t,T)}}),[et,nt,T]);var mt=function(t,e,n,r,i,o){var a=o.getKey;return t.slice(e,n+1).map((function(t,n){var o=i(t,e+n,{}),c=a(t);return Z.createElement(Gh,{key:c,setRef:function(e){return r(t,e)}},o)}))}(T,et,nt,X,f,L),yt=null;return o&&(yt=(0,lt.Z)((0,B.Z)({},l?"height":"maxHeight",o),ed),w&&(yt.overflowY="hidden",P&&(yt.pointerEvents="none"))),Z.createElement("div",(0,J.Z)({style:(0,lt.Z)((0,lt.Z)({},u),{},{position:"relative"}),className:D},x),Z.createElement(g,{className:"".concat(r,"-holder"),style:yt,ref:F,onScroll:function(t){var e=t.currentTarget.scrollTop;e!==O&&N(e),null==m||m(t)}},Z.createElement(Hh,{prefixCls:r,height:tt,offset:ot,onInnerResize:q,ref:j,innerProps:b},mt)),w&&Z.createElement(Vh,{ref:I,prefixCls:r,scrollTop:O,height:o,scrollHeight:tt,count:T.length,direction:p,onScroll:function(t){N(t)},onStartMove:function(){_(!0)},onStopMove:function(){_(!1)}}))}var rd=Z.forwardRef(nd);rd.displayName="List";var id=rd,od=Z.createContext(null);var ad=["disabled","title","children","style","className"];function cd(t){return"string"==typeof t||"number"==typeof t}var ld=function(t,e){var n=Z.useContext(Zf),r=n.prefixCls,i=n.id,o=n.open,a=n.multiple,c=n.mode,l=n.searchValue,u=n.toggleOpen,s=n.notFoundContent,f=n.onPopupScroll,h=Z.useContext(od),d=h.flattenOptions,p=h.onActiveValue,v=h.defaultActiveFirstOption,g=h.onSelect,m=h.menuItemSelectedIcon,y=h.rawValues,b=h.fieldNames,x=h.virtual,w=h.direction,S=h.listHeight,k=h.listItemHeight,C="".concat(r,"-item"),O=(0,ma.Z)((function(){return d}),[o,d],(function(t,e){return e[0]&&t[1]!==e[1]})),E=Z.useRef(null),M=function(t){t.preventDefault()},A=function(t){E.current&&E.current.scrollTo("number"==typeof t?{index:t}:t)},P=function(t){for(var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=O.length,r=0;r1&&void 0!==arguments[1]&&arguments[1];F(t);var n={source:e?"keyboard":"mouse"},r=O[t];r?p(r.value,t,n):p(null,-1,n)};(0,Z.useEffect)((function(){j(!1!==v?P(0):-1)}),[O.length,l]);var I=Z.useCallback((function(t){return y.has(t)&&"combobox"!==c}),[c,(0,Y.Z)(y).toString(),y.size]);(0,Z.useEffect)((function(){var t,e=setTimeout((function(){if(!a&&o&&1===y.size){var t=Array.from(y)[0],e=O.findIndex((function(e){return e.data.value===t}));-1!==e&&(j(e),A(e))}}));o&&(null===(t=E.current)||void 0===t||t.scrollTo(void 0));return function(){return clearTimeout(e)}}),[o,l,d.length]);var R=function(t){void 0!==t&&g(t,{selected:!y.has(t)}),a||u(!1)};if(Z.useImperativeHandle(e,(function(){return{onKeyDown:function(t){var e=t.which,n=t.ctrlKey;switch(e){case Ya.Z.N:case Ya.Z.P:case Ya.Z.UP:case Ya.Z.DOWN:var r=0;if(e===Ya.Z.UP?r=-1:e===Ya.Z.DOWN?r=1:/(mac\sos|macintosh)/i.test(navigator.appVersion)&&n&&(e===Ya.Z.N?r=1:e===Ya.Z.P&&(r=-1)),0!==r){var i=P(T+r,r);A(i),j(i,!0)}break;case Ya.Z.ENTER:var a=O[T];a&&!a.data.disabled?R(a.value):R(void 0),o&&t.preventDefault();break;case Ya.Z.ESC:u(!1),o&&t.stopPropagation()}},onKeyUp:function(){},scrollTo:function(t){A(t)}}})),0===O.length)return Z.createElement("div",{role:"listbox",id:"".concat(i,"_list"),className:"".concat(C,"-empty"),onMouseDown:M},s);var L=Object.keys(b).map((function(t){return b[t]})),N=function(t){return t.label};function z(t,e){return{role:t.group?"presentation":"option",id:"".concat(i,"_list_").concat(e)}}var U=function(t){var e=O[t];if(!e)return null;var n=e.data||{},r=n.value,i=e.group,o=dt(n,!0),a=N(e);return e?Z.createElement("div",(0,J.Z)({"aria-label":"string"!=typeof a||i?null:a},o,{key:t},z(e,t),{"aria-selected":I(r)}),r):null},H={role:"listbox",id:"".concat(i,"_list")};return Z.createElement(Z.Fragment,null,x&&Z.createElement("div",(0,J.Z)({},H,{style:{height:0,width:0,overflow:"hidden"}}),U(T-1),U(T),U(T+1)),Z.createElement(id,{itemKey:"key",ref:E,data:O,height:S,itemHeight:k,fullHeight:!1,onMouseDown:M,onScroll:f,virtual:x,direction:w,innerProps:x?null:H},(function(t,e){var n,r=t.group,i=t.groupOption,o=t.data,a=t.label,c=t.value,l=o.key;if(r){var u,s=null!==(u=o.title)&&void 0!==u?u:cd(a)?a.toString():void 0;return Z.createElement("div",{className:K()(C,"".concat(C,"-group")),title:s},void 0!==a?a:l)}var f=o.disabled,h=o.title,d=(o.children,o.style),p=o.className,v=(0,rt.Z)(o,ad),g=(0,ce.Z)(v,L),y=I(c),b="".concat(C,"-option"),w=K()(C,b,p,(n={},(0,B.Z)(n,"".concat(b,"-grouped"),i),(0,B.Z)(n,"".concat(b,"-active"),T===e&&!f),(0,B.Z)(n,"".concat(b,"-disabled"),f),(0,B.Z)(n,"".concat(b,"-selected"),y),n)),S=N(t),k=!m||"function"==typeof m||y,O="number"==typeof S?S:S||c,E=cd(O)?O.toString():void 0;return void 0!==h&&(E=h),Z.createElement("div",(0,J.Z)({},dt(g),x?{}:z(t,e),{"aria-selected":y,className:w,title:E,onMouseMove:function(){T===e||f||j(e)},onClick:function(){f||R(c)},style:d}),Z.createElement("div",{className:"".concat(b,"-content")},O),Z.isValidElement(m)||y,k&&Z.createElement(nh,{className:"".concat(C,"-option-state"),customizeIcon:m,customizeIconProps:{isSelected:y}},y?"✓":null))})))},ud=Z.forwardRef(ld);ud.displayName="OptionList";var sd=ud;var fd=["id","mode","prefixCls","backfill","fieldNames","inputValue","searchValue","onSearch","autoClearSearchValue","onSelect","onDeselect","dropdownMatchSelectWidth","filterOption","filterSort","optionFilterProp","optionLabelProp","options","children","defaultActiveFirstOption","menuItemSelectedIcon","virtual","direction","listHeight","listItemHeight","value","defaultValue","labelInValue","onChange"],hd=["inputValue"];var dd=Z.forwardRef((function(t,e){var n=t.id,r=t.mode,i=t.prefixCls,o=void 0===i?"rc-select":i,a=t.backfill,c=t.fieldNames,l=t.inputValue,u=t.searchValue,s=t.onSearch,f=t.autoClearSearchValue,h=void 0===f||f,d=t.onSelect,p=t.onDeselect,v=t.dropdownMatchSelectWidth,g=void 0===v||v,m=t.filterOption,y=t.filterSort,b=t.optionFilterProp,x=t.optionLabelProp,w=t.options,S=t.children,k=t.defaultActiveFirstOption,C=t.menuItemSelectedIcon,O=t.virtual,E=t.direction,M=t.listHeight,A=void 0===M?200:M,P=t.listItemHeight,_=void 0===P?20:P,D=t.value,T=t.defaultValue,F=t.labelInValue,j=t.onChange,I=(0,rt.Z)(t,fd),R=Zh(n),L=Mh(r),N=!(w||!S),z=Z.useMemo((function(){return(void 0!==m||"combobox"!==r)&&m}),[m,r]),U=Z.useMemo((function(){return kh(c,N)}),[JSON.stringify(c),N]),H=(0,At.Z)("",{value:void 0!==u?u:l,postState:function(t){return t||""}}),W=(0,rr.Z)(H,2),V=W[0],G=W[1],X=function(t,e,n,r,i){return Z.useMemo((function(){var o=t;!t&&(o=Ih(e));var a=new Map,c=new Map,l=function(t,e,n){n&&"string"==typeof n&&t.set(e[n],e)};return function t(e){for(var o=arguments.length>1&&void 0!==arguments[1]&&arguments[1],u=0;u1&&void 0!==arguments[1]?arguments[1]:{},n=e.fieldNames,r=e.childrenAsData,i=[],o=kh(n,!1),a=o.label,c=o.value,l=o.options,u=o.groupLabel;return function t(e,n){e.forEach((function(e){if(n||!(l in e)){var o=e[c];i.push({key:Sh(e,i.length),groupOption:n,data:e,label:e[a],value:o})}else{var s=e[u];void 0===s&&r&&(s=e.label),i.push({key:Sh(e,i.length),group:!0,data:e,label:s}),t(e[l],!0)}}))}(t,!1),i}(yt,{fieldNames:U,childrenAsData:N})}),[yt,U,N]),xt=function(t){var e=Q(t);if(ot(e),j&&(e.length!==st.length||e.some((function(t,e){var n;return(null===(n=st[e])||void 0===n?void 0:n.value)!==(null==t?void 0:t.value)})))){var n=F?e:e.map((function(t){return t.value})),r=e.map((function(t){return Ch(ft(t.value))}));j(L?n:n[0],L?r:r[0])}},wt=Z.useState(null),St=(0,rr.Z)(wt,2),kt=St[0],Ct=St[1],Ot=Z.useState(0),Et=(0,rr.Z)(Ot,2),Mt=Et[0],Pt=Et[1],_t=void 0!==k?k:"combobox"!==r,Dt=Z.useCallback((function(t,e){var n=(arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}).source,i=void 0===n?"keyboard":n;Pt(e),a&&"combobox"===r&&null!==t&&"keyboard"===i&&Ct(String(t))}),[a,r]),Tt=function(t,e,n){var r=function(){var e,n=ft(t);return[F?{label:null==n?void 0:n[U.label],value:t,key:null!==(e=null==n?void 0:n.key)&&void 0!==e?e:t}:t,Ch(n)]};if(e&&d){var i=r(),o=(0,rr.Z)(i,2),a=o[0],c=o[1];d(a,c)}else if(!e&&p&&"clear"!==n){var l=r(),u=(0,rr.Z)(l,2),s=u[0],f=u[1];p(s,f)}},Zt=Rh((function(t,e){var n,i=!L||e.selected;n=i?L?[].concat((0,Y.Z)(st),[t]):[t]:st.filter((function(e){return e.value!==t})),xt(n),Tt(t,i),"combobox"===r?Ct(""):Mh&&!h||(G(""),Ct(""))})),Ft=Z.useMemo((function(){var t=!1!==O&&!1!==g;return(0,lt.Z)((0,lt.Z)({},X),{},{flattenOptions:bt,onActiveValue:Dt,defaultActiveFirstOption:_t,onSelect:Zt,menuItemSelectedIcon:C,rawValues:dt,fieldNames:U,virtual:t,direction:E,listHeight:A,listItemHeight:_,childrenAsData:N})}),[X,bt,Dt,_t,Zt,C,dt,U,O,g,A,_,N]);return Z.createElement(od.Provider,{value:Ft},Z.createElement(Ph,(0,J.Z)({},I,{id:R,prefixCls:o,ref:e,omitDomProps:hd,mode:r,displayValues:ht,onDisplayValuesChange:function(t,e){xt(t);var n=e.type,r=e.values;"remove"!==n&&"clear"!==n||r.forEach((function(t){Tt(t.value,!1,n)}))},direction:E,searchValue:V,onSearch:function(t,e){if(G(t),Ct(null),"submit"!==e.source)"blur"!==e.source&&("combobox"===r&&xt(t),null==s||s(t));else{var n=(t||"").trim();if(n){var i=Array.from(new Set([].concat((0,Y.Z)(dt),[n])));xt(i),Tt(n,!0),G("")}}},autoClearSearchValue:h,onSearchSplit:function(t){var e=t;"tags"!==r&&(e=t.map((function(t){var e=$.get(t);return null==e?void 0:e.value})).filter((function(t){return void 0!==t})));var n=Array.from(new Set([].concat((0,Y.Z)(dt),(0,Y.Z)(e))));xt(n),n.forEach((function(t){Tt(t,!0)}))},dropdownMatchSelectWidth:g,OptionList:sd,emptyOptions:!bt.length,activeValue:kt,activeDescendantId:"".concat(R,"_list_").concat(Mt)})))}));var pd=dd;pd.Option=zh,pd.OptGroup=Nh;var vd=pd;var gd=new Yi.E4("antSlideUpIn",{"0%":{transform:"scaleY(0.8)",transformOrigin:"0% 0%",opacity:0},"100%":{transform:"scaleY(1)",transformOrigin:"0% 0%",opacity:1}}),md=new Yi.E4("antSlideUpOut",{"0%":{transform:"scaleY(1)",transformOrigin:"0% 0%",opacity:1},"100%":{transform:"scaleY(0.8)",transformOrigin:"0% 0%",opacity:0}}),yd=new Yi.E4("antSlideDownIn",{"0%":{transform:"scaleY(0.8)",transformOrigin:"100% 100%",opacity:0},"100%":{transform:"scaleY(1)",transformOrigin:"100% 100%",opacity:1}}),bd=new Yi.E4("antSlideDownOut",{"0%":{transform:"scaleY(1)",transformOrigin:"100% 100%",opacity:1},"100%":{transform:"scaleY(0.8)",transformOrigin:"100% 100%",opacity:0}}),xd=new Yi.E4("antSlideLeftIn",{"0%":{transform:"scaleX(0.8)",transformOrigin:"0% 0%",opacity:0},"100%":{transform:"scaleX(1)",transformOrigin:"0% 0%",opacity:1}}),wd=new Yi.E4("antSlideLeftOut",{"0%":{transform:"scaleX(1)",transformOrigin:"0% 0%",opacity:1},"100%":{transform:"scaleX(0.8)",transformOrigin:"0% 0%",opacity:0}}),Sd=new Yi.E4("antSlideRightIn",{"0%":{transform:"scaleX(0.8)",transformOrigin:"100% 0%",opacity:0},"100%":{transform:"scaleX(1)",transformOrigin:"100% 0%",opacity:1}}),kd=new Yi.E4("antSlideRightOut",{"0%":{transform:"scaleX(1)",transformOrigin:"100% 0%",opacity:1},"100%":{transform:"scaleX(0.8)",transformOrigin:"100% 0%",opacity:0}}),Cd={"slide-up":{inKeyframes:gd,outKeyframes:md},"slide-down":{inKeyframes:yd,outKeyframes:bd},"slide-left":{inKeyframes:xd,outKeyframes:wd},"slide-right":{inKeyframes:Sd,outKeyframes:kd}},Od=function(t,e){var n,r=t.antCls,i="".concat(r,"-").concat(e),o=Cd[e],a=o.inKeyframes,c=o.outKeyframes;return[no(i,a,c,t.motionDurationMid),(n={},(0,V.Z)(n,"\n ".concat(i,"-enter,\n ").concat(i,"-appear\n "),(0,V.Z)({transform:"scale(0)",transformOrigin:"0% 0%",opacity:0,animationTimingFunction:t.motionEaseOutQuint},"&-prepare",{transform:"scale(1)"})),(0,V.Z)(n,"".concat(i,"-leave"),{animationTimingFunction:t.motionEaseInQuint}),n)]},Ed=new Yi.E4("antMoveDownIn",{"0%":{transform:"translate3d(0, 100%, 0)",transformOrigin:"0 0",opacity:0},"100%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1}}),Md=new Yi.E4("antMoveDownOut",{"0%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1},"100%":{transform:"translate3d(0, 100%, 0)",transformOrigin:"0 0",opacity:0}}),Ad=new Yi.E4("antMoveLeftIn",{"0%":{transform:"translate3d(-100%, 0, 0)",transformOrigin:"0 0",opacity:0},"100%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1}}),Pd=new Yi.E4("antMoveLeftOut",{"0%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1},"100%":{transform:"translate3d(-100%, 0, 0)",transformOrigin:"0 0",opacity:0}}),_d=new Yi.E4("antMoveRightIn",{"0%":{transform:"translate3d(100%, 0, 0)",transformOrigin:"0 0",opacity:0},"100%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1}}),Dd=new Yi.E4("antMoveRightOut",{"0%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1},"100%":{transform:"translate3d(100%, 0, 0)",transformOrigin:"0 0",opacity:0}}),Td={"move-up":{inKeyframes:new Yi.E4("antMoveUpIn",{"0%":{transform:"translate3d(0, -100%, 0)",transformOrigin:"0 0",opacity:0},"100%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1}}),outKeyframes:new Yi.E4("antMoveUpOut",{"0%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1},"100%":{transform:"translate3d(0, -100%, 0)",transformOrigin:"0 0",opacity:0}})},"move-down":{inKeyframes:Ed,outKeyframes:Md},"move-left":{inKeyframes:Ad,outKeyframes:Pd},"move-right":{inKeyframes:_d,outKeyframes:Dd}},Zd=function(t,e){var n,r=t.antCls,i="".concat(r,"-").concat(e),o=Td[e],a=o.inKeyframes,c=o.outKeyframes;return[no(i,a,c,t.motionDurationMid),(n={},(0,V.Z)(n,"\n ".concat(i,"-enter,\n ").concat(i,"-appear\n "),{opacity:0,animationTimingFunction:t.motionEaseOutCirc}),(0,V.Z)(n,"".concat(i,"-leave"),{animationTimingFunction:t.motionEaseInOutCirc}),n)]},Fd=function(t){var e=t.controlPaddingHorizontal,n=t.controlHeight,r=t.fontSize,i=t.lineHeight;return{position:"relative",display:"block",minHeight:n,padding:"".concat((n-r*i)/2,"px ").concat(e,"px"),color:t.colorText,fontWeight:"normal",fontSize:r,lineHeight:i,boxSizing:"border-box"}},jd=function(t){var e,n,r,i=t.antCls,o=t.componentCls,a="".concat(o,"-item"),c="&".concat(i,"-slide-up-enter").concat(i,"-slide-up-enter-active"),l="&".concat(i,"-slide-up-appear").concat(i,"-slide-up-appear-active"),u="&".concat(i,"-slide-up-leave").concat(i,"-slide-up-leave-active"),s="".concat(o,"-dropdown-placement-");return[(0,V.Z)({},"".concat(o,"-dropdown"),Object.assign(Object.assign({},(0,Qe.Wf)(t)),(r={position:"absolute",top:-9999,zIndex:t.zIndexPopup,boxSizing:"border-box",padding:t.paddingXXS,overflow:"hidden",fontSize:t.fontSize,fontVariant:"initial",backgroundColor:t.colorBgElevated,borderRadius:t.borderRadiusLG,outline:"none",boxShadow:t.boxShadowSecondary},(0,V.Z)(r,"\n ".concat(c).concat(s,"bottomLeft,\n ").concat(l).concat(s,"bottomLeft\n "),{animationName:gd}),(0,V.Z)(r,"\n ".concat(c).concat(s,"topLeft,\n ").concat(l).concat(s,"topLeft,\n ").concat(c).concat(s,"topRight,\n ").concat(l).concat(s,"topRight\n "),{animationName:yd}),(0,V.Z)(r,"".concat(u).concat(s,"bottomLeft"),{animationName:md}),(0,V.Z)(r,"\n ".concat(u).concat(s,"topLeft,\n ").concat(u).concat(s,"topRight\n "),{animationName:bd}),(0,V.Z)(r,"&-hidden",{display:"none"}),(0,V.Z)(r,"".concat(a),Object.assign(Object.assign({},Fd(t)),{cursor:"pointer",transition:"background ".concat(t.motionDurationSlow," ease"),borderRadius:t.borderRadiusSM,"&-group":{color:t.colorTextDescription,fontSize:t.fontSizeSM,cursor:"default"},"&-option":(n={display:"flex","&-content":Object.assign({flex:"auto"},Qe.vS),"&-state":{flex:"none",display:"flex",alignItems:"center"}},(0,V.Z)(n,"&-active:not(".concat(a,"-option-disabled)"),{backgroundColor:t.controlItemBgHover}),(0,V.Z)(n,"&-selected:not(".concat(a,"-option-disabled)"),(0,V.Z)({color:t.colorText,fontWeight:t.fontWeightStrong,backgroundColor:t.controlItemBgActive},"".concat(a,"-option-state"),{color:t.colorPrimary})),(0,V.Z)(n,"&-disabled",(e={},(0,V.Z)(e,"&".concat(a,"-option-selected"),{backgroundColor:t.colorBgContainerDisabled}),(0,V.Z)(e,"color",t.colorTextDisabled),(0,V.Z)(e,"cursor","not-allowed"),e)),(0,V.Z)(n,"&-grouped",{paddingInlineStart:2*t.controlPaddingHorizontal}),n)})),(0,V.Z)(r,"&-rtl",{direction:"rtl"}),r))),Od(t,"slide-up"),Od(t,"slide-down"),Zd(t,"move-up"),Zd(t,"move-down")]},Id=function(t){var e=t.controlHeightSM,n=(t.controlHeight-e)/2-t.lineWidth;return[n,Math.ceil(n/2)]};function Rd(t,e){var n,r,i,o,a,c=t.componentCls,l=t.iconCls,u="".concat(c,"-selection-overflow"),s=t.controlHeightSM,f=Id(t),h=(0,G.Z)(f,1)[0],d=e?"".concat(c,"-").concat(e):"";return(0,V.Z)({},"".concat(c,"-multiple").concat(d),(a={fontSize:t.fontSize},(0,V.Z)(a,u,{position:"relative",display:"flex",flex:"auto",flexWrap:"wrap",maxWidth:"100%","&-item":{flex:"none",alignSelf:"center",maxWidth:"100%",display:"inline-flex"}}),(0,V.Z)(a,"".concat(c,"-selector"),(n={display:"flex",flexWrap:"wrap",alignItems:"center",padding:"".concat(h-2,"px ").concat(4,"px"),borderRadius:t.borderRadius},(0,V.Z)(n,"".concat(c,"-show-search&"),{cursor:"text"}),(0,V.Z)(n,"".concat(c,"-disabled&"),{background:t.colorBgContainerDisabled,cursor:"not-allowed"}),(0,V.Z)(n,"&:after",{display:"inline-block",width:0,margin:"".concat(2,"px 0"),lineHeight:"".concat(s,"px"),visibility:"hidden",content:'"\\a0"'}),n)),(0,V.Z)(a,"\n &".concat(c,"-show-arrow ").concat(c,"-selector,\n &").concat(c,"-allow-clear ").concat(c,"-selector\n "),{paddingInlineEnd:t.fontSizeIcon+t.controlPaddingHorizontal}),(0,V.Z)(a,"".concat(c,"-selection-item"),(i={position:"relative",display:"flex",flex:"none",boxSizing:"border-box",maxWidth:"100%",height:s,marginTop:2,marginBottom:2,lineHeight:"".concat(s-2*t.lineWidth,"px"),background:t.colorFillSecondary,borderRadius:t.borderRadiusSM,cursor:"default",transition:"font-size ".concat(t.motionDurationSlow,", line-height ").concat(t.motionDurationSlow,", height ").concat(t.motionDurationSlow),userSelect:"none",marginInlineEnd:4,paddingInlineStart:t.paddingXS,paddingInlineEnd:t.paddingXS/2},(0,V.Z)(i,"".concat(c,"-disabled&"),{color:t.colorTextDisabled,cursor:"not-allowed"}),(0,V.Z)(i,"&-content",{display:"inline-block",marginInlineEnd:t.paddingXS/2,overflow:"hidden",whiteSpace:"pre",textOverflow:"ellipsis"}),(0,V.Z)(i,"&-remove",Object.assign(Object.assign({},(0,Qe.Ro)()),(r={display:"inline-flex",alignItems:"center",color:t.colorIcon,fontWeight:"bold",fontSize:10,lineHeight:"inherit",cursor:"pointer"},(0,V.Z)(r,"> ".concat(l),{verticalAlign:"-0.2em"}),(0,V.Z)(r,"&:hover",{color:t.colorIconHover}),r))),i)),(0,V.Z)(a,"".concat(u,"-item + ").concat(u,"-item"),(0,V.Z)({},"".concat(c,"-selection-search"),{marginInlineStart:0})),(0,V.Z)(a,"".concat(c,"-selection-search"),(o={display:"inline-flex",position:"relative",maxWidth:"100%",marginInlineStart:t.inputPaddingHorizontalBase-h},(0,V.Z)(o,"\n &-input,\n &-mirror\n ",{height:s,fontFamily:t.fontFamily,lineHeight:"".concat(s,"px"),transition:"all ".concat(t.motionDurationSlow)}),(0,V.Z)(o,"&-input",{width:"100%",minWidth:4.1}),(0,V.Z)(o,"&-mirror",{position:"absolute",top:0,insetInlineStart:0,insetInlineEnd:"auto",zIndex:999,whiteSpace:"pre",visibility:"hidden"}),o)),(0,V.Z)(a,"".concat(c,"-selection-placeholder "),{position:"absolute",top:"50%",insetInlineStart:t.inputPaddingHorizontalBase,insetInlineEnd:t.inputPaddingHorizontalBase,transform:"translateY(-50%)",transition:"all ".concat(t.motionDurationSlow)}),a))}var Ld=function(t){var e,n=t.componentCls,r=(0,nn.TS)(t,{controlHeight:t.controlHeightSM,controlHeightSM:t.controlHeightXS,borderRadius:t.borderRadiusSM,borderRadiusSM:t.borderRadiusXS}),i=(0,nn.TS)(t,{fontSize:t.fontSizeLG,controlHeight:t.controlHeightLG,controlHeightSM:t.controlHeight,borderRadius:t.borderRadiusLG,borderRadiusSM:t.borderRadius}),o=Id(t),a=(0,G.Z)(o,2)[1];return[Rd(t),Rd(r,"sm"),(0,V.Z)({},"".concat(n,"-multiple").concat(n,"-sm"),(e={},(0,V.Z)(e,"".concat(n,"-selection-placeholder"),{insetInline:t.controlPaddingHorizontalSM-t.lineWidth}),(0,V.Z)(e,"".concat(n,"-selection-search"),{marginInlineStart:a}),e)),Rd(i,"lg")]};function Nd(t,e){var n,r,i,o,a=t.componentCls,c=t.inputPaddingHorizontalBase,l=t.borderRadius,u=t.controlHeight-2*t.lineWidth,s=Math.ceil(1.25*t.fontSize),f=e?"".concat(a,"-").concat(e):"";return(0,V.Z)({},"".concat(a,"-single").concat(f),(o={fontSize:t.fontSize},(0,V.Z)(o,"".concat(a,"-selector"),Object.assign(Object.assign({},(0,Qe.Wf)(t)),(n={display:"flex",borderRadius:l},(0,V.Z)(n,"".concat(a,"-selection-search"),{position:"absolute",top:0,insetInlineStart:c,insetInlineEnd:c,bottom:0,"&-input":{width:"100%"}}),(0,V.Z)(n,"\n ".concat(a,"-selection-item,\n ").concat(a,"-selection-placeholder\n "),{padding:0,lineHeight:"".concat(u,"px"),transition:"all ".concat(t.motionDurationSlow,", visibility 0s"),"@supports (-moz-appearance: meterbar)":{lineHeight:"".concat(u,"px")}}),(0,V.Z)(n,"".concat(a,"-selection-item"),{position:"relative",userSelect:"none"}),(0,V.Z)(n,"".concat(a,"-selection-placeholder"),{transition:"none",pointerEvents:"none"}),(0,V.Z)(n,["&:after","".concat(a,"-selection-item:after"),"".concat(a,"-selection-placeholder:after")].join(","),{display:"inline-block",width:0,visibility:"hidden",content:'"\\a0"'}),n))),(0,V.Z)(o,"\n &".concat(a,"-show-arrow ").concat(a,"-selection-item,\n &").concat(a,"-show-arrow ").concat(a,"-selection-placeholder\n "),{paddingInlineEnd:s}),(0,V.Z)(o,"&".concat(a,"-open ").concat(a,"-selection-item"),{color:t.colorTextPlaceholder}),(0,V.Z)(o,"&:not(".concat(a,"-customize-input)"),(0,V.Z)({},"".concat(a,"-selector"),(r={width:"100%",height:t.controlHeight,padding:"0 ".concat(c,"px")},(0,V.Z)(r,"".concat(a,"-selection-search-input"),{height:u}),(0,V.Z)(r,"&:after",{lineHeight:"".concat(u,"px")}),r))),(0,V.Z)(o,"&".concat(a,"-customize-input"),(0,V.Z)({},"".concat(a,"-selector"),(i={"&:after":{display:"none"}},(0,V.Z)(i,"".concat(a,"-selection-search"),{position:"static",width:"100%"}),(0,V.Z)(i,"".concat(a,"-selection-placeholder"),{position:"absolute",insetInlineStart:0,insetInlineEnd:0,padding:"0 ".concat(c,"px"),"&:after":{display:"none"}}),i))),o))}function Bd(t){var e,n=t.componentCls,r=t.controlPaddingHorizontalSM-t.lineWidth;return[Nd(t),Nd((0,nn.TS)(t,{controlHeight:t.controlHeightSM,borderRadius:t.borderRadiusSM}),"sm"),(0,V.Z)({},"".concat(n,"-single").concat(n,"-sm"),(0,V.Z)({},"&:not(".concat(n,"-customize-input)"),(e={},(0,V.Z)(e,"".concat(n,"-selection-search"),{insetInlineStart:r,insetInlineEnd:r}),(0,V.Z)(e,"".concat(n,"-selector"),{padding:"0 ".concat(r,"px")}),(0,V.Z)(e,"&".concat(n,"-show-arrow ").concat(n,"-selection-search"),{insetInlineEnd:r+1.5*t.fontSize}),(0,V.Z)(e,"\n &".concat(n,"-show-arrow ").concat(n,"-selection-item,\n &").concat(n,"-show-arrow ").concat(n,"-selection-placeholder\n "),{paddingInlineEnd:1.5*t.fontSize}),e))),Nd((0,nn.TS)(t,{controlHeight:t.controlHeightLG,fontSize:t.fontSizeLG,borderRadius:t.borderRadiusLG}),"lg")]}var zd=function(t,e){var n,r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=e.componentCls,o=e.borderHoverColor,a=e.outlineColor,c=e.antCls,l=r?(0,V.Z)({},"".concat(i,"-selector"),{borderColor:o}):{};return(0,V.Z)({},t,(0,V.Z)({},"&:not(".concat(i,"-disabled):not(").concat(i,"-customize-input):not(").concat(c,"-pagination-size-changer)"),Object.assign(Object.assign({},l),(n={},(0,V.Z)(n,"".concat(i,"-focused& ").concat(i,"-selector"),{borderColor:o,boxShadow:"0 0 0 ".concat(e.controlOutlineWidth,"px ").concat(a),outline:0}),(0,V.Z)(n,"&:hover ".concat(i,"-selector"),{borderColor:o}),n))))},Ud=function(t){var e,n,r,i=t.componentCls,o=t.inputPaddingHorizontalBase,a=t.iconCls;return r={},(0,V.Z)(r,i,Object.assign(Object.assign({},(0,Qe.Wf)(t)),(n={position:"relative",display:"inline-block",cursor:"pointer"},(0,V.Z)(n,"&:not(".concat(i,"-customize-input) ").concat(i,"-selector"),Object.assign(Object.assign({},function(t){var e,n,r=t.componentCls;return n={position:"relative",backgroundColor:t.colorBgContainer,border:"".concat(t.lineWidth,"px ").concat(t.lineType," ").concat(t.colorBorder),transition:"all ".concat(t.motionDurationMid," ").concat(t.motionEaseInOut),input:{cursor:"pointer"}},(0,V.Z)(n,"".concat(r,"-show-search&"),{cursor:"text",input:{cursor:"auto",color:"inherit"}}),(0,V.Z)(n,"".concat(r,"-disabled&"),(e={color:t.colorTextDisabled,background:t.colorBgContainerDisabled,cursor:"not-allowed"},(0,V.Z)(e,"".concat(r,"-multiple&"),{background:t.colorBgContainerDisabled}),(0,V.Z)(e,"input",{cursor:"not-allowed"}),e)),n}(t)),function(t){var e=t.componentCls;return(0,V.Z)({},"".concat(e,"-selection-search-input"),{margin:0,padding:0,background:"transparent",border:"none",outline:"none",appearance:"none","&::-webkit-search-cancel-button":{display:"none","-webkit-appearance":"none"}})}(t))),(0,V.Z)(n,"".concat(i,"-selection-item"),Object.assign({flex:1,fontWeight:"normal"},Qe.vS)),(0,V.Z)(n,"".concat(i,"-selection-placeholder"),Object.assign(Object.assign({},Qe.vS),{flex:1,color:t.colorTextPlaceholder,pointerEvents:"none"})),(0,V.Z)(n,"".concat(i,"-arrow"),Object.assign(Object.assign({},(0,Qe.Ro)()),(e={position:"absolute",top:"50%",insetInlineStart:"auto",insetInlineEnd:o,height:t.fontSizeIcon,marginTop:-t.fontSizeIcon/2,color:t.colorTextQuaternary,fontSize:t.fontSizeIcon,lineHeight:1,textAlign:"center",pointerEvents:"none",display:"flex",alignItems:"center"},(0,V.Z)(e,a,(0,V.Z)({verticalAlign:"top",transition:"transform ".concat(t.motionDurationSlow),"> svg":{verticalAlign:"top"}},"&:not(".concat(i,"-suffix)"),{pointerEvents:"auto"})),(0,V.Z)(e,"".concat(i,"-disabled &"),{cursor:"not-allowed"}),(0,V.Z)(e,"> *:not(:last-child)",{marginInlineEnd:8}),e))),(0,V.Z)(n,"".concat(i,"-clear"),{position:"absolute",top:"50%",insetInlineStart:"auto",insetInlineEnd:o,zIndex:1,display:"inline-block",width:t.fontSizeIcon,height:t.fontSizeIcon,marginTop:-t.fontSizeIcon/2,color:t.colorTextQuaternary,fontSize:t.fontSizeIcon,fontStyle:"normal",lineHeight:1,textAlign:"center",textTransform:"none",background:t.colorBgContainer,cursor:"pointer",opacity:0,transition:"color ".concat(t.motionDurationMid," ease, opacity ").concat(t.motionDurationSlow," ease"),textRendering:"auto","&:before":{display:"block"},"&:hover":{color:t.colorTextTertiary}}),(0,V.Z)(n,"&:hover",(0,V.Z)({},"".concat(i,"-clear"),{opacity:1})),n))),(0,V.Z)(r,"".concat(i,"-has-feedback"),(0,V.Z)({},"".concat(i,"-clear"),{insetInlineEnd:o+t.fontSize+t.paddingXS})),r},Hd=function(t){var e,n=t.componentCls;return[(0,V.Z)({},n,(e={},(0,V.Z)(e,"&-borderless ".concat(n,"-selector"),{backgroundColor:"transparent !important",borderColor:"transparent !important",boxShadow:"none !important"}),(0,V.Z)(e,"&".concat(n,"-in-form-item"),{width:"100%"}),e)),Ud(t),Bd(t),Ld(t),jd(t),(0,V.Z)({},"".concat(n,"-rtl"),{direction:"rtl"}),zd(n,(0,nn.TS)(t,{borderHoverColor:t.colorPrimaryHover,outlineColor:t.controlOutline})),zd("".concat(n,"-status-error"),(0,nn.TS)(t,{borderHoverColor:t.colorErrorHover,outlineColor:t.colorErrorOutline}),!0),zd("".concat(n,"-status-warning"),(0,nn.TS)(t,{borderHoverColor:t.colorWarningHover,outlineColor:t.colorWarningOutline}),!0),tn(t,{borderElCls:"".concat(n,"-selector"),focusElCls:"".concat(n,"-focused")})]},Wd=(0,se.Z)("Select",(function(t,e){var n=e.rootPrefixCls,r=(0,nn.TS)(t,{rootPrefixCls:n,inputPaddingHorizontalBase:t.paddingSM-1});return[Hd(r)]}),(function(t){return{zIndexPopup:t.zIndexPopupBase+50}}));function Vd(t,e){return t||function(t){var e={overflow:{adjustX:!0,adjustY:!0,shiftY:!0},htmlRegion:"scroll"===t?"scroll":"visible",_experimental:{dynamicInset:!0}};return{bottomLeft:Object.assign(Object.assign({},e),{points:["tl","bl"],offset:[0,4]}),bottomRight:Object.assign(Object.assign({},e),{points:["tr","br"],offset:[0,4]}),topLeft:Object.assign(Object.assign({},e),{points:["bl","tl"],offset:[0,-4]}),topRight:Object.assign(Object.assign({},e),{points:["br","tr"],offset:[0,-4]})}}(e)}var Gd={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z"}}]},name:"down",theme:"outlined"},Xd=function(t,e){return Z.createElement(Wt.Z,(0,J.Z)({},t,{ref:e,icon:Gd}))};var qd=Z.forwardRef(Xd),Yd={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z"}}]},name:"search",theme:"outlined"},$d=function(t,e){return Z.createElement(Wt.Z,(0,J.Z)({},t,{ref:e,icon:Yd}))};var Kd=Z.forwardRef($d);var Jd=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(t);i input".concat(n),{padding:0,fontSize:"inherit",border:"none",borderRadius:0,outline:"none","&::-ms-reveal":{display:"none"},"&:focus":{boxShadow:"none !important"}}),(0,V.Z)(e,"&::before",{display:"inline-block",width:0,visibility:"hidden",content:'"\\a0"'}),(0,V.Z)(e,"".concat(n),{"&-prefix, &-suffix":{display:"flex",flex:"none",alignItems:"center","> *:not(:last-child)":{marginInlineEnd:t.paddingXS}},"&-show-count-suffix":{color:i},"&-show-count-has-suffix":{marginInlineEnd:t.paddingXXS},"&-prefix":{marginInlineEnd:r},"&-suffix":{marginInlineStart:r}}),e)),function(t){var e=t.componentCls;return(0,V.Z)({},"".concat(e,"-clear-icon"),{margin:0,color:t.colorTextQuaternary,fontSize:t.fontSizeIcon,verticalAlign:-1,cursor:"pointer",transition:"color ".concat(t.motionDurationSlow),"&:hover":{color:t.colorTextTertiary},"&:active":{color:t.colorText},"&-hidden":{visibility:"hidden"},"&-has-suffix":{margin:"0 ".concat(t.inputAffixPadding,"px")}})}(t)),(0,V.Z)({},"".concat(l).concat(n,"-password-icon"),{color:a,cursor:"pointer",transition:"all ".concat(o),"&:hover":{color:c}})),fp(t,"".concat(n,"-affix-wrapper"))))},vp=function(t){var e,n=t.componentCls,r=t.colorError,i=t.colorWarning,o=t.borderRadiusLG,a=t.borderRadiusSM;return(0,V.Z)({},"".concat(n,"-group"),Object.assign(Object.assign(Object.assign({},(0,Qe.Wf)(t)),function(t){var e,n,r,i,o,a,c,l=t.componentCls,u=t.antCls;return c={position:"relative",display:"table",width:"100%",borderCollapse:"separate",borderSpacing:0},(0,V.Z)(c,"&[class*='col-']",{paddingInlineEnd:t.paddingXS,"&:last-child":{paddingInlineEnd:0}}),(0,V.Z)(c,"&-lg ".concat(l,", &-lg > ").concat(l,"-group-addon"),Object.assign({},up(t))),(0,V.Z)(c,"&-sm ".concat(l,", &-sm > ").concat(l,"-group-addon"),Object.assign({},sp(t))),(0,V.Z)(c,"&-lg ".concat(u,"-select-single ").concat(u,"-select-selector"),{height:t.controlHeightLG}),(0,V.Z)(c,"&-sm ".concat(u,"-select-single ").concat(u,"-select-selector"),{height:t.controlHeightSM}),(0,V.Z)(c,"> ".concat(l),{display:"table-cell","&:not(:first-child):not(:last-child)":{borderRadius:0}}),(0,V.Z)(c,"".concat(l,"-group"),(r={},(0,V.Z)(r,"&-addon, &-wrap",{display:"table-cell",width:1,whiteSpace:"nowrap",verticalAlign:"middle","&:not(:first-child):not(:last-child)":{borderRadius:0}}),(0,V.Z)(r,"&-wrap > *",{display:"block !important"}),(0,V.Z)(r,"&-addon",(n={position:"relative",padding:"0 ".concat(t.inputPaddingHorizontal,"px"),color:t.colorText,fontWeight:"normal",fontSize:t.fontSize,textAlign:"center",backgroundColor:t.colorFillAlter,border:"".concat(t.lineWidth,"px ").concat(t.lineType," ").concat(t.colorBorder),borderRadius:t.borderRadius,transition:"all ".concat(t.motionDurationSlow),lineHeight:1},(0,V.Z)(n,"".concat(u,"-select"),(e={margin:"-".concat(t.inputPaddingVertical+1,"px -").concat(t.inputPaddingHorizontal,"px")},(0,V.Z)(e,"&".concat(u,"-select-single:not(").concat(u,"-select-customize-input)"),(0,V.Z)({},"".concat(u,"-select-selector"),{backgroundColor:"inherit",border:"".concat(t.lineWidth,"px ").concat(t.lineType," transparent"),boxShadow:"none"})),(0,V.Z)(e,"&-open, &-focused",(0,V.Z)({},"".concat(u,"-select-selector"),{color:t.colorPrimary})),e)),(0,V.Z)(n,"".concat(u,"-cascader-picker"),(0,V.Z)({margin:"-9px -".concat(t.inputPaddingHorizontal,"px"),backgroundColor:"transparent"},"".concat(u,"-cascader-input"),{textAlign:"start",border:0,boxShadow:"none"})),n)),(0,V.Z)(r,"&-addon:first-child",{borderInlineEnd:0}),(0,V.Z)(r,"&-addon:last-child",{borderInlineStart:0}),r)),(0,V.Z)(c,"".concat(l),{width:"100%",marginBottom:0,textAlign:"inherit","&:focus":{zIndex:1,borderInlineEndWidth:1},"&:hover":(0,V.Z)({zIndex:1,borderInlineEndWidth:1},"".concat(l,"-search-with-button &"),{zIndex:0})}),(0,V.Z)(c,"> ".concat(l,":first-child, ").concat(l,"-group-addon:first-child"),(0,V.Z)({borderStartEndRadius:0,borderEndEndRadius:0},"".concat(u,"-select ").concat(u,"-select-selector"),{borderStartEndRadius:0,borderEndEndRadius:0})),(0,V.Z)(c,"> ".concat(l,"-affix-wrapper"),(i={},(0,V.Z)(i,"&:not(:first-child) ".concat(l),{borderStartStartRadius:0,borderEndStartRadius:0}),(0,V.Z)(i,"&:not(:last-child) ".concat(l),{borderStartEndRadius:0,borderEndEndRadius:0}),i)),(0,V.Z)(c,"> ".concat(l,":last-child, ").concat(l,"-group-addon:last-child"),(0,V.Z)({borderStartStartRadius:0,borderEndStartRadius:0},"".concat(u,"-select ").concat(u,"-select-selector"),{borderStartStartRadius:0,borderEndStartRadius:0})),(0,V.Z)(c,"".concat(l,"-affix-wrapper"),(0,V.Z)({"&:not(:last-child)":(0,V.Z)({borderStartEndRadius:0,borderEndEndRadius:0},"".concat(l,"-search &"),{borderStartStartRadius:t.borderRadius,borderEndStartRadius:t.borderRadius})},"&:not(:first-child), ".concat(l,"-search &:not(:first-child)"),{borderStartStartRadius:0,borderEndStartRadius:0})),(0,V.Z)(c,"&".concat(l,"-group-compact"),Object.assign(Object.assign({display:"block"},(0,Qe.dF)()),(a={},(0,V.Z)(a,"".concat(l,"-group-addon, ").concat(l,"-group-wrap, > ").concat(l),{"&:not(:first-child):not(:last-child)":{borderInlineEndWidth:t.lineWidth,"&:hover":{zIndex:1},"&:focus":{zIndex:1}}}),(0,V.Z)(a,"& > *",{display:"inline-block",float:"none",verticalAlign:"top",borderRadius:0}),(0,V.Z)(a,"\n & > ".concat(l,"-affix-wrapper,\n & > ").concat(l,"-number-affix-wrapper,\n & > ").concat(u,"-picker-range\n "),{display:"inline-flex"}),(0,V.Z)(a,"& > *:not(:last-child)",{marginInlineEnd:-t.lineWidth,borderInlineEndWidth:t.lineWidth}),(0,V.Z)(a,"".concat(l),{float:"none"}),(0,V.Z)(a,"& > ".concat(u,"-select > ").concat(u,"-select-selector,\n & > ").concat(u,"-select-auto-complete ").concat(l,",\n & > ").concat(u,"-cascader-picker ").concat(l,",\n & > ").concat(l,"-group-wrapper ").concat(l),{borderInlineEndWidth:t.lineWidth,borderRadius:0,"&:hover":{zIndex:1},"&:focus":{zIndex:1}}),(0,V.Z)(a,"& > ".concat(u,"-select-focused"),{zIndex:1}),(0,V.Z)(a,"& > ".concat(u,"-select > ").concat(u,"-select-arrow"),{zIndex:1}),(0,V.Z)(a,"& > *:first-child,\n & > ".concat(u,"-select:first-child > ").concat(u,"-select-selector,\n & > ").concat(u,"-select-auto-complete:first-child ").concat(l,",\n & > ").concat(u,"-cascader-picker:first-child ").concat(l),{borderStartStartRadius:t.borderRadius,borderEndStartRadius:t.borderRadius}),(0,V.Z)(a,"& > *:last-child,\n & > ".concat(u,"-select:last-child > ").concat(u,"-select-selector,\n & > ").concat(u,"-cascader-picker:last-child ").concat(l,",\n & > ").concat(u,"-cascader-picker-focused:last-child ").concat(l),{borderInlineEndWidth:t.lineWidth,borderStartEndRadius:t.borderRadius,borderEndEndRadius:t.borderRadius}),(0,V.Z)(a,"& > ".concat(u,"-select-auto-complete ").concat(l),{verticalAlign:"top"}),(0,V.Z)(a,"".concat(l,"-group-wrapper + ").concat(l,"-group-wrapper"),(0,V.Z)({marginInlineStart:-t.lineWidth},"".concat(l,"-affix-wrapper"),{borderRadius:0})),(0,V.Z)(a,"".concat(l,"-group-wrapper:not(:last-child)"),(0,V.Z)({},"&".concat(l,"-search > ").concat(l,"-group"),(o={},(0,V.Z)(o,"& > ".concat(l,"-group-addon > ").concat(l,"-search-button"),{borderRadius:0}),(0,V.Z)(o,"& > ".concat(l),{borderStartStartRadius:t.borderRadius,borderStartEndRadius:0,borderEndEndRadius:0,borderEndStartRadius:t.borderRadius}),o))),a))),c}(t)),{"&-rtl":{direction:"rtl"},"&-wrapper":(e={display:"inline-block",width:"100%",textAlign:"start",verticalAlign:"top","&-rtl":{direction:"rtl"},"&-lg":(0,V.Z)({},"".concat(n,"-group-addon"),{borderRadius:o,fontSize:t.fontSizeLG}),"&-sm":(0,V.Z)({},"".concat(n,"-group-addon"),{borderRadius:a}),"&-status-error":(0,V.Z)({},"".concat(n,"-group-addon"),{color:r,borderColor:r}),"&-status-warning":(0,V.Z)({},"".concat(n,"-group-addon"),{color:i,borderColor:i}),"&-disabled":(0,V.Z)({},"".concat(n,"-group-addon"),Object.assign({},lp(t)))},(0,V.Z)(e,"&:not(".concat(n,"-compact-first-item):not(").concat(n,"-compact-last-item)").concat(n,"-compact-item"),(0,V.Z)({},"".concat(n,", ").concat(n,"-group-addon"),{borderRadius:0})),(0,V.Z)(e,"&:not(".concat(n,"-compact-last-item)").concat(n,"-compact-first-item"),(0,V.Z)({},"".concat(n,", ").concat(n,"-group-addon"),{borderStartEndRadius:0,borderEndEndRadius:0})),(0,V.Z)(e,"&:not(".concat(n,"-compact-first-item)").concat(n,"-compact-last-item"),(0,V.Z)({},"".concat(n,", ").concat(n,"-group-addon"),{borderStartStartRadius:0,borderEndStartRadius:0})),e)}))},gp=function(t){var e,n,r,i=t.componentCls,o=t.antCls,a="".concat(i,"-search");return(0,V.Z)({},a,(r={},(0,V.Z)(r,"".concat(i),{"&:hover, &:focus":(0,V.Z)({borderColor:t.colorPrimaryHover},"+ ".concat(i,"-group-addon ").concat(a,"-button:not(").concat(o,"-btn-primary)"),{borderInlineStartColor:t.colorPrimaryHover})}),(0,V.Z)(r,"".concat(i,"-affix-wrapper"),{borderRadius:0}),(0,V.Z)(r,"".concat(i,"-lg"),{lineHeight:t.lineHeightLG-2e-4}),(0,V.Z)(r,"> ".concat(i,"-group"),(0,V.Z)({},"> ".concat(i,"-group-addon:last-child"),(e={insetInlineStart:-1,padding:0,border:0},(0,V.Z)(e,"".concat(a,"-button"),{paddingTop:0,paddingBottom:0,borderStartStartRadius:0,borderStartEndRadius:t.borderRadius,borderEndEndRadius:t.borderRadius,borderEndStartRadius:0}),(0,V.Z)(e,"".concat(a,"-button:not(").concat(o,"-btn-primary)"),(0,V.Z)({color:t.colorTextDescription,"&:hover":{color:t.colorPrimaryHover},"&:active":{color:t.colorPrimaryActive}},"&".concat(o,"-btn-loading::before"),{insetInlineStart:0,insetInlineEnd:0,insetBlockStart:0,insetBlockEnd:0})),e))),(0,V.Z)(r,"".concat(a,"-button"),{height:t.controlHeight,"&:hover, &:focus":{zIndex:1}}),(0,V.Z)(r,"&-large ".concat(a,"-button"),{height:t.controlHeightLG}),(0,V.Z)(r,"&-small ".concat(a,"-button"),{height:t.controlHeightSM}),(0,V.Z)(r,"&-rtl",{direction:"rtl"}),(0,V.Z)(r,"&".concat(i,"-compact-item"),(n={},(0,V.Z)(n,"&:not(".concat(i,"-compact-last-item)"),(0,V.Z)({},"".concat(i,"-group-addon"),(0,V.Z)({},"".concat(i,"-search-button"),{marginInlineEnd:-t.lineWidth,borderRadius:0}))),(0,V.Z)(n,"&:not(".concat(i,"-compact-first-item)"),(0,V.Z)({},"".concat(i,",").concat(i,"-affix-wrapper"),{borderRadius:0})),(0,V.Z)(n,"> ".concat(i,"-group-addon ").concat(i,"-search-button,\n > ").concat(i,",\n ").concat(i,"-affix-wrapper"),{"&:hover,&:focus,&:active":{zIndex:2}}),(0,V.Z)(n,"> ".concat(i,"-affix-wrapper-focused"),{zIndex:2}),n)),r))};function mp(t){return(0,nn.TS)(t,{inputAffixPadding:t.paddingXXS,inputPaddingVertical:Math.max(Math.round((t.controlHeight-t.fontSize*t.lineHeight)/2*10)/10-t.lineWidth,3),inputPaddingVerticalLG:Math.ceil((t.controlHeightLG-t.fontSizeLG*t.lineHeightLG)/2*10)/10-t.lineWidth,inputPaddingVerticalSM:Math.max(Math.round((t.controlHeightSM-t.fontSize*t.lineHeight)/2*10)/10-t.lineWidth,0),inputPaddingHorizontal:t.paddingSM-t.lineWidth,inputPaddingHorizontalSM:t.paddingXS-t.lineWidth,inputPaddingHorizontalLG:t.controlPaddingHorizontal-t.lineWidth,inputBorderHoverColor:t.colorPrimaryHover,inputBorderActiveColor:t.colorPrimaryHover})}var yp=function(t){var e,n,r,i,o=t.componentCls,a=t.paddingLG,c="".concat(o,"-textarea");return(0,V.Z)({},c,(i={position:"relative","&-show-count":(e={},(0,V.Z)(e,"> ".concat(o),{height:"100%"}),(0,V.Z)(e,"".concat(o,"-data-count"),{position:"absolute",bottom:-t.fontSize*t.lineHeight,insetInlineEnd:0,color:t.colorTextDescription,whiteSpace:"nowrap",pointerEvents:"none"}),e),"&-allow-clear":(0,V.Z)({},"> ".concat(o),{paddingInlineEnd:a})},(0,V.Z)(i,"&-affix-wrapper".concat(c,"-has-feedback"),(0,V.Z)({},"".concat(o),{paddingInlineEnd:a})),(0,V.Z)(i,"&-affix-wrapper".concat(o,"-affix-wrapper"),(r={padding:0},(0,V.Z)(r,"> textarea".concat(o),{fontSize:"inherit",border:"none",outline:"none","&:focus":{boxShadow:"none !important"}}),(0,V.Z)(r,"".concat(o,"-suffix"),(n={margin:0,"> *:not(:last-child)":{marginInline:0}},(0,V.Z)(n,"".concat(o,"-clear-icon"),{position:"absolute",insetInlineEnd:t.paddingXS,insetBlockStart:t.paddingXS}),(0,V.Z)(n,"".concat(c,"-suffix"),{position:"absolute",top:0,insetInlineEnd:t.inputPaddingHorizontal,bottom:0,zIndex:1,display:"inline-flex",alignItems:"center",margin:"auto",pointerEvents:"none"}),n)),r)),i))},bp=((0,se.Z)("Input",(function(t){var e=mp(t);return[dp(e),yp(e),pp(e),vp(e),gp(e),tn(e)]})),function(t){var e,n,r=t.componentCls;return n={},(0,V.Z)(n,r,Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},(0,Qe.Wf)(t)),(0,V.Z)({"ul, ol":{margin:0,padding:0,listStyle:"none"},"&::after":{display:"block",clear:"both",height:0,overflow:"hidden",visibility:"hidden",content:'""'}},"".concat(r,"-total-text"),{display:"inline-block",height:t.itemSize,marginInlineEnd:t.marginXS,lineHeight:"".concat(t.itemSize-2,"px"),verticalAlign:"middle"})),function(t){var e,n=t.componentCls;return(0,V.Z)({},"".concat(n,"-item"),(e={display:"inline-block",minWidth:t.itemSize,height:t.itemSize,marginInlineEnd:t.marginXS,fontFamily:t.fontFamily,lineHeight:"".concat(t.itemSize-2,"px"),textAlign:"center",verticalAlign:"middle",listStyle:"none",backgroundColor:"transparent",border:"".concat(t.lineWidth,"px ").concat(t.lineType," transparent"),borderRadius:t.borderRadius,outline:0,cursor:"pointer",userSelect:"none",a:{display:"block",padding:"0 ".concat(t.paginationItemPaddingInline,"px"),color:t.colorText,"&:hover":{textDecoration:"none"}}},(0,V.Z)(e,"&:not(".concat(n,"-item-active)"),{"&:hover":{transition:"all ".concat(t.motionDurationMid),backgroundColor:t.colorBgTextHover},"&:active":{backgroundColor:t.colorBgTextActive}}),(0,V.Z)(e,"&-active",{fontWeight:t.fontWeightStrong,backgroundColor:t.itemActiveBg,borderColor:t.colorPrimary,a:{color:t.colorPrimary},"&:hover":{borderColor:t.colorPrimaryHover},"&:hover a":{color:t.colorPrimaryHover}}),e))}(t)),function(t){var e,n,r,i,o,a=t.componentCls;return o={},(0,V.Z)(o,"".concat(a,"-jump-prev, ").concat(a,"-jump-next"),(r={outline:0},(0,V.Z)(r,"".concat(a,"-item-container"),(e={position:"relative"},(0,V.Z)(e,"".concat(a,"-item-link-icon"),{color:t.colorPrimary,fontSize:t.fontSizeSM,opacity:0,transition:"all ".concat(t.motionDurationMid),"&-svg":{top:0,insetInlineEnd:0,bottom:0,insetInlineStart:0,margin:"auto"}}),(0,V.Z)(e,"".concat(a,"-item-ellipsis"),{position:"absolute",top:0,insetInlineEnd:0,bottom:0,insetInlineStart:0,display:"block",margin:"auto",color:t.colorTextDisabled,fontFamily:"Arial, Helvetica, sans-serif",letterSpacing:t.paginationEllipsisLetterSpacing,textAlign:"center",textIndent:t.paginationEllipsisTextIndent,opacity:1,transition:"all ".concat(t.motionDurationMid)}),e)),(0,V.Z)(r,"&:hover",(n={},(0,V.Z)(n,"".concat(a,"-item-link-icon"),{opacity:1}),(0,V.Z)(n,"".concat(a,"-item-ellipsis"),{opacity:0}),n)),r)),(0,V.Z)(o,"\n ".concat(a,"-prev,\n ").concat(a,"-jump-prev,\n ").concat(a,"-jump-next\n "),{marginInlineEnd:t.marginXS}),(0,V.Z)(o,"\n ".concat(a,"-prev,\n ").concat(a,"-next,\n ").concat(a,"-jump-prev,\n ").concat(a,"-jump-next\n "),{display:"inline-block",minWidth:t.itemSize,height:t.itemSize,color:t.colorText,fontFamily:t.fontFamily,lineHeight:"".concat(t.itemSize,"px"),textAlign:"center",verticalAlign:"middle",listStyle:"none",borderRadius:t.borderRadius,cursor:"pointer",transition:"all ".concat(t.motionDurationMid)}),(0,V.Z)(o,"".concat(a,"-prev, ").concat(a,"-next"),(i={fontFamily:"Arial, Helvetica, sans-serif",outline:0,button:{color:t.colorText,cursor:"pointer",userSelect:"none"}},(0,V.Z)(i,"".concat(a,"-item-link"),{display:"block",width:"100%",height:"100%",padding:0,fontSize:t.fontSizeSM,textAlign:"center",backgroundColor:"transparent",border:"".concat(t.lineWidth,"px ").concat(t.lineType," transparent"),borderRadius:t.borderRadius,outline:"none",transition:"all ".concat(t.motionDurationMid)}),(0,V.Z)(i,"&:hover ".concat(a,"-item-link"),{backgroundColor:t.colorBgTextHover}),(0,V.Z)(i,"&:active ".concat(a,"-item-link"),{backgroundColor:t.colorBgTextActive}),(0,V.Z)(i,"&".concat(a,"-disabled:hover"),(0,V.Z)({},"".concat(a,"-item-link"),{backgroundColor:"transparent"})),i)),(0,V.Z)(o,"".concat(a,"-slash"),{marginInlineEnd:t.paginationSlashMarginInlineEnd,marginInlineStart:t.paginationSlashMarginInlineStart}),(0,V.Z)(o,"".concat(a,"-options"),{display:"inline-block",marginInlineStart:t.margin,verticalAlign:"middle","&-size-changer.-select":{display:"inline-block",width:"auto"},"&-quick-jumper":{display:"inline-block",height:t.controlHeight,marginInlineStart:t.marginXS,lineHeight:"".concat(t.controlHeight,"px"),verticalAlign:"top",input:Object.assign(Object.assign({},hp(t)),{width:1.25*t.controlHeightLG,height:t.controlHeight,boxSizing:"border-box",margin:0,marginInlineStart:t.marginXS,marginInlineEnd:t.marginXS})}}),o}(t)),function(t){var e,n=t.componentCls;return e={},(0,V.Z)(e,"\n &".concat(n,"-simple ").concat(n,"-prev,\n &").concat(n,"-simple ").concat(n,"-next\n "),(0,V.Z)({height:t.itemSizeSM,lineHeight:"".concat(t.itemSizeSM,"px"),verticalAlign:"top"},"".concat(n,"-item-link"),{height:t.itemSizeSM,backgroundColor:"transparent",border:0,"&:hover":{backgroundColor:t.colorBgTextHover},"&:active":{backgroundColor:t.colorBgTextActive},"&::after":{height:t.itemSizeSM,lineHeight:"".concat(t.itemSizeSM,"px")}})),(0,V.Z)(e,"&".concat(n,"-simple ").concat(n,"-simple-pager"),{display:"inline-block",height:t.itemSizeSM,marginInlineEnd:t.marginXS,input:{boxSizing:"border-box",height:"100%",marginInlineEnd:t.marginXS,padding:"0 ".concat(t.paginationItemPaddingInline,"px"),textAlign:"center",backgroundColor:t.itemInputBg,border:"".concat(t.lineWidth,"px ").concat(t.lineType," ").concat(t.colorBorder),borderRadius:t.borderRadius,outline:"none",transition:"border-color ".concat(t.motionDurationMid),color:"inherit","&:hover":{borderColor:t.colorPrimary},"&:focus":{borderColor:t.colorPrimaryHover,boxShadow:"".concat(t.inputOutlineOffset,"px 0 ").concat(t.controlOutlineWidth,"px ").concat(t.controlOutline)},"&[disabled]":{color:t.colorTextDisabled,backgroundColor:t.colorBgContainerDisabled,borderColor:t.colorBorder,cursor:"not-allowed"}}}),e}(t)),function(t){var e,n,r,i=t.componentCls;return r={},(0,V.Z)(r,"&".concat(i,"-mini ").concat(i,"-total-text, &").concat(i,"-mini ").concat(i,"-simple-pager"),{height:t.itemSizeSM,lineHeight:"".concat(t.itemSizeSM,"px")}),(0,V.Z)(r,"&".concat(i,"-mini ").concat(i,"-item"),{minWidth:t.itemSizeSM,height:t.itemSizeSM,margin:0,lineHeight:"".concat(t.itemSizeSM-2,"px")}),(0,V.Z)(r,"&".concat(i,"-mini:not(").concat(i,"-disabled) ").concat(i,"-item:not(").concat(i,"-item-active)"),{backgroundColor:"transparent",borderColor:"transparent","&:hover":{backgroundColor:t.colorBgTextHover},"&:active":{backgroundColor:t.colorBgTextActive}}),(0,V.Z)(r,"&".concat(i,"-mini ").concat(i,"-prev, &").concat(i,"-mini ").concat(i,"-next"),{minWidth:t.itemSizeSM,height:t.itemSizeSM,margin:0,lineHeight:"".concat(t.itemSizeSM,"px")}),(0,V.Z)(r,"&".concat(i,"-mini:not(").concat(i,"-disabled)"),(0,V.Z)({},"".concat(i,"-prev, ").concat(i,"-next"),(e={},(0,V.Z)(e,"&:hover ".concat(i,"-item-link"),{backgroundColor:t.colorBgTextHover}),(0,V.Z)(e,"&:active ".concat(i,"-item-link"),{backgroundColor:t.colorBgTextActive}),(0,V.Z)(e,"&".concat(i,"-disabled:hover ").concat(i,"-item-link"),{backgroundColor:"transparent"}),e))),(0,V.Z)(r,"\n &".concat(i,"-mini ").concat(i,"-prev ").concat(i,"-item-link,\n &").concat(i,"-mini ").concat(i,"-next ").concat(i,"-item-link\n "),{backgroundColor:"transparent",borderColor:"transparent","&::after":{height:t.itemSizeSM,lineHeight:"".concat(t.itemSizeSM,"px")}}),(0,V.Z)(r,"&".concat(i,"-mini ").concat(i,"-jump-prev, &").concat(i,"-mini ").concat(i,"-jump-next"),{height:t.itemSizeSM,marginInlineEnd:0,lineHeight:"".concat(t.itemSizeSM,"px")}),(0,V.Z)(r,"&".concat(i,"-mini ").concat(i,"-options"),(n={marginInlineStart:t.paginationMiniOptionsMarginInlineStart},(0,V.Z)(n,"&-size-changer",{top:t.miniOptionsSizeChangerTop}),(0,V.Z)(n,"&-quick-jumper",{height:t.itemSizeSM,lineHeight:"".concat(t.itemSizeSM,"px"),input:Object.assign(Object.assign({},sp(t)),{width:t.paginationMiniQuickJumperInputWidth,height:t.controlHeightSM})}),n)),r}(t)),function(t){var e,n,r,i=t.componentCls;return r={},(0,V.Z)(r,"".concat(i,"-disabled"),{"&, &:hover":(0,V.Z)({cursor:"not-allowed"},"".concat(i,"-item-link"),{color:t.colorTextDisabled,cursor:"not-allowed"}),"&:focus-visible":(0,V.Z)({cursor:"not-allowed"},"".concat(i,"-item-link"),{color:t.colorTextDisabled,cursor:"not-allowed"})}),(0,V.Z)(r,"&".concat(i,"-disabled"),(n={cursor:"not-allowed"},(0,V.Z)(n,"".concat(i,"-item"),{cursor:"not-allowed","&:hover, &:active":{backgroundColor:"transparent"},a:{color:t.colorTextDisabled,backgroundColor:"transparent",border:"none",cursor:"not-allowed"},"&-active":{borderColor:t.colorBorder,backgroundColor:t.itemActiveBgDisabled,"&:hover, &:active":{backgroundColor:t.itemActiveBgDisabled},a:{color:t.itemActiveColorDisabled}}}),(0,V.Z)(n,"".concat(i,"-item-link"),(0,V.Z)({color:t.colorTextDisabled,cursor:"not-allowed","&:hover, &:active":{backgroundColor:"transparent"}},"".concat(i,"-simple&"),{backgroundColor:"transparent","&:hover, &:active":{backgroundColor:"transparent"}})),(0,V.Z)(n,"".concat(i,"-simple-pager"),{color:t.colorTextDisabled}),(0,V.Z)(n,"".concat(i,"-jump-prev, ").concat(i,"-jump-next"),(e={},(0,V.Z)(e,"".concat(i,"-item-link-icon"),{opacity:0}),(0,V.Z)(e,"".concat(i,"-item-ellipsis"),{opacity:1}),e)),n)),(0,V.Z)(r,"&".concat(i,"-simple"),(0,V.Z)({},"".concat(i,"-prev, ").concat(i,"-next"),(0,V.Z)({},"&".concat(i,"-disabled ").concat(i,"-item-link"),{"&:hover, &:active":{backgroundColor:"transparent"}}))),r}(t)),(e={},(0,V.Z)(e,"@media only screen and (max-width: ".concat(t.screenLG,"px)"),(0,V.Z)({},"".concat(r,"-item"),{"&-after-jump-prev, &-before-jump-next":{display:"none"}})),(0,V.Z)(e,"@media only screen and (max-width: ".concat(t.screenSM,"px)"),(0,V.Z)({},"".concat(r,"-options"),{display:"none"})),e))),(0,V.Z)(n,"&".concat(t.componentCls,"-rtl"),{direction:"rtl"}),n}),xp=function(t){var e,n,r,i,o,a,c=t.componentCls;return a={},(0,V.Z)(a,"".concat(c).concat(c,"-disabled:not(").concat(c,"-mini)"),(n={"&, &:hover":(0,V.Z)({},"".concat(c,"-item-link"),{borderColor:t.colorBorder}),"&:focus-visible":(0,V.Z)({},"".concat(c,"-item-link"),{borderColor:t.colorBorder})},(0,V.Z)(n,"".concat(c,"-item, ").concat(c,"-item-link"),(e={backgroundColor:t.colorBgContainerDisabled,borderColor:t.colorBorder},(0,V.Z)(e,"&:hover:not(".concat(c,"-item-active)"),{backgroundColor:t.colorBgContainerDisabled,borderColor:t.colorBorder,a:{color:t.colorTextDisabled}}),(0,V.Z)(e,"&".concat(c,"-item-active"),{backgroundColor:t.itemActiveBgDisabled}),e)),(0,V.Z)(n,"".concat(c,"-prev, ").concat(c,"-next"),(0,V.Z)({"&:hover button":{backgroundColor:t.colorBgContainerDisabled,borderColor:t.colorBorder,color:t.colorTextDisabled}},"".concat(c,"-item-link"),{backgroundColor:t.colorBgContainerDisabled,borderColor:t.colorBorder})),n)),(0,V.Z)(a,"".concat(c,":not(").concat(c,"-mini)"),(o={},(0,V.Z)(o,"".concat(c,"-prev, ").concat(c,"-next"),(r={"&:hover button":{borderColor:t.colorPrimaryHover,backgroundColor:t.itemBg}},(0,V.Z)(r,"".concat(c,"-item-link"),{backgroundColor:t.itemLinkBg,borderColor:t.colorBorder}),(0,V.Z)(r,"&:hover ".concat(c,"-item-link"),{borderColor:t.colorPrimary,backgroundColor:t.itemBg,color:t.colorPrimary}),(0,V.Z)(r,"&".concat(c,"-disabled"),(0,V.Z)({},"".concat(c,"-item-link"),{borderColor:t.colorBorder,color:t.colorTextDisabled})),r)),(0,V.Z)(o,"".concat(c,"-item"),(i={backgroundColor:t.itemBg,border:"".concat(t.lineWidth,"px ").concat(t.lineType," ").concat(t.colorBorder)},(0,V.Z)(i,"&:hover:not(".concat(c,"-item-active)"),{borderColor:t.colorPrimary,backgroundColor:t.itemBg,a:{color:t.colorPrimary}}),(0,V.Z)(i,"&-active",{borderColor:t.colorPrimary}),i)),o)),a},wp=function(t){var e,n,r=t.componentCls;return(0,V.Z)({},"".concat(r,":not(").concat(r,"-disabled)"),(n={},(0,V.Z)(n,"".concat(r,"-item"),Object.assign({},(0,Qe.Qy)(t))),(0,V.Z)(n,"".concat(r,"-jump-prev, ").concat(r,"-jump-next"),{"&:focus-visible":Object.assign((e={},(0,V.Z)(e,"".concat(r,"-item-link-icon"),{opacity:1}),(0,V.Z)(e,"".concat(r,"-item-ellipsis"),{opacity:0}),e),(0,Qe.oN)(t))}),(0,V.Z)(n,"".concat(r,"-prev, ").concat(r,"-next"),(0,V.Z)({},"&:focus-visible ".concat(r,"-item-link"),Object.assign({},(0,Qe.oN)(t)))),n))},Sp=(0,se.Z)("Pagination",(function(t){var e=(0,nn.TS)(t,{inputOutlineOffset:0,paginationMiniOptionsMarginInlineStart:t.marginXXS/2,paginationMiniQuickJumperInputWidth:1.1*t.controlHeightLG,paginationItemPaddingInline:1.5*t.marginXXS,paginationEllipsisLetterSpacing:t.marginXXS/2,paginationSlashMarginInlineStart:t.marginXXS,paginationSlashMarginInlineEnd:t.marginSM,paginationEllipsisTextIndent:"0.13em"},mp(t));return[bp(e),wp(e),t.wireframe&&xp(e)]}),(function(t){return{itemBg:t.colorBgContainer,itemSize:t.controlHeight,itemSizeSM:t.controlHeightSM,itemActiveBg:t.colorBgContainer,itemLinkBg:t.colorBgContainer,itemActiveColorDisabled:t.colorTextDisabled,itemActiveBgDisabled:t.controlItemBgActiveDisabled,itemInputBg:t.colorBgContainer,miniOptionsSizeChangerTop:0}})),kp=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(t);it?l?(h=Date.now(),a||(r=setTimeout(s?v:p,t))):p():!0!==a&&(r=setTimeout(s?v:p,void 0===s?t-u:t)))}return p.cancel=function(t){var e=(t||{}).upcomingOnly,n=void 0!==e&&e;d(),f=!n},p}(t,e,{debounceMode:!1!==(void 0!==r&&r)})}var Mp=new Yi.E4("antSpinMove",{to:{opacity:1}}),Ap=new Yi.E4("antRotate",{to:{transform:"rotate(405deg)"}}),Pp=function(t){var e,n,r,i,o;return(0,V.Z)({},"".concat(t.componentCls),Object.assign(Object.assign({},(0,Qe.Wf)(t)),(o={position:"absolute",display:"none",color:t.colorPrimary,fontSize:0,textAlign:"center",verticalAlign:"middle",opacity:0,transition:"transform ".concat(t.motionDurationSlow," ").concat(t.motionEaseInOutCirc),"&-spinning":{position:"static",display:"inline-block",opacity:1},"&-nested-loading":(i={position:"relative"},(0,V.Z)(i,"> div > ".concat(t.componentCls),(r={position:"absolute",top:0,insetInlineStart:0,zIndex:4,display:"block",width:"100%",height:"100%",maxHeight:t.contentHeight},(0,V.Z)(r,"".concat(t.componentCls,"-dot"),{position:"absolute",top:"50%",insetInlineStart:"50%",margin:-t.spinDotSize/2}),(0,V.Z)(r,"".concat(t.componentCls,"-text"),{position:"absolute",top:"50%",width:"100%",paddingTop:(t.spinDotSize-t.fontSize)/2+2,textShadow:"0 1px 2px ".concat(t.colorBgContainer),fontSize:t.fontSize}),(0,V.Z)(r,"&".concat(t.componentCls,"-show-text ").concat(t.componentCls,"-dot"),{marginTop:-t.spinDotSize/2-10}),(0,V.Z)(r,"&-sm",(e={},(0,V.Z)(e,"".concat(t.componentCls,"-dot"),{margin:-t.spinDotSizeSM/2}),(0,V.Z)(e,"".concat(t.componentCls,"-text"),{paddingTop:(t.spinDotSizeSM-t.fontSize)/2+2}),(0,V.Z)(e,"&".concat(t.componentCls,"-show-text ").concat(t.componentCls,"-dot"),{marginTop:-t.spinDotSizeSM/2-10}),e)),(0,V.Z)(r,"&-lg",(n={},(0,V.Z)(n,"".concat(t.componentCls,"-dot"),{margin:-t.spinDotSizeLG/2}),(0,V.Z)(n,"".concat(t.componentCls,"-text"),{paddingTop:(t.spinDotSizeLG-t.fontSize)/2+2}),(0,V.Z)(n,"&".concat(t.componentCls,"-show-text ").concat(t.componentCls,"-dot"),{marginTop:-t.spinDotSizeLG/2-10}),n)),r)),(0,V.Z)(i,"".concat(t.componentCls,"-container"),{position:"relative",transition:"opacity ".concat(t.motionDurationSlow),"&::after":{position:"absolute",top:0,insetInlineEnd:0,bottom:0,insetInlineStart:0,zIndex:10,width:"100%",height:"100%",background:t.colorBgContainer,opacity:0,transition:"all ".concat(t.motionDurationSlow),content:'""',pointerEvents:"none"}}),(0,V.Z)(i,"".concat(t.componentCls,"-blur"),(0,V.Z)({clear:"both",opacity:.5,userSelect:"none",pointerEvents:"none"},"&::after",{opacity:.4,pointerEvents:"auto"})),i)},(0,V.Z)(o,"&-tip",{color:t.spinDotDefault}),(0,V.Z)(o,"".concat(t.componentCls,"-dot"),{position:"relative",display:"inline-block",fontSize:t.spinDotSize,width:"1em",height:"1em","&-item":{position:"absolute",display:"block",width:(t.spinDotSize-t.marginXXS/2)/2,height:(t.spinDotSize-t.marginXXS/2)/2,backgroundColor:t.colorPrimary,borderRadius:"100%",transform:"scale(0.75)",transformOrigin:"50% 50%",opacity:.3,animationName:Mp,animationDuration:"1s",animationIterationCount:"infinite",animationTimingFunction:"linear",animationDirection:"alternate","&:nth-child(1)":{top:0,insetInlineStart:0},"&:nth-child(2)":{top:0,insetInlineEnd:0,animationDelay:"0.4s"},"&:nth-child(3)":{insetInlineEnd:0,bottom:0,animationDelay:"0.8s"},"&:nth-child(4)":{bottom:0,insetInlineStart:0,animationDelay:"1.2s"}},"&-spin":{transform:"rotate(45deg)",animationName:Ap,animationDuration:"1.2s",animationIterationCount:"infinite",animationTimingFunction:"linear"}}),(0,V.Z)(o,"&-sm ".concat(t.componentCls,"-dot"),{fontSize:t.spinDotSizeSM,i:{width:(t.spinDotSizeSM-t.marginXXS/2)/2,height:(t.spinDotSizeSM-t.marginXXS/2)/2}}),(0,V.Z)(o,"&-lg ".concat(t.componentCls,"-dot"),{fontSize:t.spinDotSizeLG,i:{width:(t.spinDotSizeLG-t.marginXXS)/2,height:(t.spinDotSizeLG-t.marginXXS)/2}}),(0,V.Z)(o,"&".concat(t.componentCls,"-show-text ").concat(t.componentCls,"-text"),{display:"block"}),o)))},_p=(0,se.Z)("Spin",(function(t){var e=(0,nn.TS)(t,{spinDotDefault:t.colorTextDescription,spinDotSize:t.controlHeightLG/2,spinDotSizeSM:.35*t.controlHeightLG,spinDotSizeLG:t.controlHeight});return[Pp(e)]}),{contentHeight:400}),Dp=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(t);i0){var P=c[0]/2;A.paddingLeft=P,A.paddingRight=P}if(c&&c[1]>0&&!u){var _=c[1]/2;A.paddingTop=_,A.paddingBottom=_}return y&&(A.flex=function(t){return"number"==typeof t?"".concat(t," ").concat(t," auto"):/^\d+(\.\d+)?(px|em|rem|%)$/.test(t)?"0 0 ".concat(t):t}(y),!1!==l||A.minWidth||(A.minWidth=0)),C(Z.createElement("div",Object.assign({},x,{style:Object.assign(Object.assign({},A),b),className:M,ref:e}),m))}));var Np=Lp,Bp=Z.createContext({}),zp=(Bp.Consumer,function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(t);i0&&Z.createElement("ul",{className:"".concat(p,"-item-action"),key:"actions"},o.map((function(t,e){return Z.createElement("li",{key:"".concat(p,"-item-action-").concat(e)},t,e!==o.length-1&&Z.createElement("em",{className:"".concat(p,"-item-action-split")}))}))),g=f?"div":"li",m=Z.createElement(g,Object.assign({},u,f?{}:{ref:e},{className:K()("".concat(p,"-item"),(0,V.Z)({},"".concat(p,"-item-no-flex"),!("vertical"===h?a:(Z.Children.forEach(i,(function(t){"string"==typeof t&&(n=!0)})),!(n&&Z.Children.count(i)>1)))),c)}),"vertical"===h&&a?[Z.createElement("div",{className:"".concat(p,"-item-main"),key:"content"},i,v),Z.createElement("div",{className:"".concat(p,"-item-extra"),key:"extra"},a)]:[i,v,(0,ae.Tm)(a,{key:"extra"})]);return f?Z.createElement(Np,{ref:e,flex:1,style:l},m):m},Hp=(0,Z.forwardRef)(Up);Hp.Meta=function(t){var e=t.prefixCls,n=t.className,r=t.avatar,i=t.title,o=t.description,a=zp(t,["prefixCls","className","avatar","title","description"]),c=(0,(0,Z.useContext)(Dt.E_).getPrefixCls)("list",e),l=K()("".concat(c,"-item-meta"),n),u=Z.createElement("div",{className:"".concat(c,"-item-meta-content")},i&&Z.createElement("h4",{className:"".concat(c,"-item-meta-title")},i),o&&Z.createElement("div",{className:"".concat(c,"-item-meta-description")},o));return Z.createElement("div",Object.assign({},a,{className:l}),r&&Z.createElement("div",{className:"".concat(c,"-item-meta-avatar")},r),(i||o)&&u)};var Wp=Hp,Vp=function(t){var e,n,r=t.listBorderedCls,i=t.componentCls,o=t.paddingLG,a=t.margin,c=t.itemPaddingSM,l=t.itemPaddingLG,u=t.marginLG,s=t.borderRadiusLG;return n={},(0,V.Z)(n,"".concat(r),(e={border:"".concat(t.lineWidth,"px ").concat(t.lineType," ").concat(t.colorBorder),borderRadius:s},(0,V.Z)(e,"".concat(i,"-header,").concat(i,"-footer,").concat(i,"-item"),{paddingInline:o}),(0,V.Z)(e,"".concat(i,"-pagination"),{margin:"".concat(a,"px ").concat(u,"px")}),e)),(0,V.Z)(n,"".concat(r).concat(i,"-sm"),(0,V.Z)({},"".concat(i,"-item,").concat(i,"-header,").concat(i,"-footer"),{padding:c})),(0,V.Z)(n,"".concat(r).concat(i,"-lg"),(0,V.Z)({},"".concat(i,"-item,").concat(i,"-header,").concat(i,"-footer"),{padding:l})),n},Gp=function(t){var e,n,r,i,o=t.componentCls,a=t.screenSM,c=t.screenMD,l=t.marginLG,u=t.marginSM,s=t.margin;return i={},(0,V.Z)(i,"@media screen and (max-width:".concat(c,")"),(e={},(0,V.Z)(e,"".concat(o),(0,V.Z)({},"".concat(o,"-item"),(0,V.Z)({},"".concat(o,"-item-action"),{marginInlineStart:l}))),(0,V.Z)(e,"".concat(o,"-vertical"),(0,V.Z)({},"".concat(o,"-item"),(0,V.Z)({},"".concat(o,"-item-extra"),{marginInlineStart:l}))),e)),(0,V.Z)(i,"@media screen and (max-width: ".concat(a,")"),(r={},(0,V.Z)(r,"".concat(o),(0,V.Z)({},"".concat(o,"-item"),(0,V.Z)({flexWrap:"wrap"},"".concat(o,"-action"),{marginInlineStart:u}))),(0,V.Z)(r,"".concat(o,"-vertical"),(0,V.Z)({},"".concat(o,"-item"),(n={flexWrap:"wrap-reverse"},(0,V.Z)(n,"".concat(o,"-item-main"),{minWidth:t.contentWidth}),(0,V.Z)(n,"".concat(o,"-item-extra"),{margin:"auto auto ".concat(s,"px")}),n))),r)),i},Xp=function(t){var e,n,r,i,o,a,c=t.componentCls,l=t.antCls,u=t.controlHeight,s=t.minHeight,f=t.paddingSM,h=t.marginLG,d=t.padding,p=t.itemPadding,v=t.colorPrimary,g=t.itemPaddingSM,m=t.itemPaddingLG,y=t.paddingXS,b=t.margin,x=t.colorText,w=t.colorTextDescription,S=t.motionDurationSlow,k=t.lineWidth,C=t.headerBg,O=t.footerBg,E=t.emptyTextPadding,M=t.metaMarginBottom,A=t.avatarMarginRight,P=t.titleMarginBottom,_=t.descriptionFontSize,D={};return["start","center","end"].forEach((function(t){D["&-align-".concat(t)]={textAlign:t}})),a={},(0,V.Z)(a,"".concat(c),Object.assign(Object.assign({},(0,Qe.Wf)(t)),(i={position:"relative","*":{outline:"none"}},(0,V.Z)(i,"".concat(c,"-header"),{background:C}),(0,V.Z)(i,"".concat(c,"-footer"),{background:O}),(0,V.Z)(i,"".concat(c,"-header, ").concat(c,"-footer"),{paddingBlock:f}),(0,V.Z)(i,"".concat(c,"-pagination"),Object.assign(Object.assign({marginBlockStart:h},D),(0,V.Z)({},"".concat(l,"-pagination-options"),{textAlign:"start"}))),(0,V.Z)(i,"".concat(c,"-spin"),{minHeight:s,textAlign:"center"}),(0,V.Z)(i,"".concat(c,"-items"),{margin:0,padding:0,listStyle:"none"}),(0,V.Z)(i,"".concat(c,"-item"),(r={display:"flex",alignItems:"center",justifyContent:"space-between",padding:p,color:x},(0,V.Z)(r,"".concat(c,"-item-meta"),(e={display:"flex",flex:1,alignItems:"flex-start",maxWidth:"100%"},(0,V.Z)(e,"".concat(c,"-item-meta-avatar"),{marginInlineEnd:A}),(0,V.Z)(e,"".concat(c,"-item-meta-content"),{flex:"1 0",width:0,color:x}),(0,V.Z)(e,"".concat(c,"-item-meta-title"),{margin:"0 0 ".concat(t.marginXXS,"px 0"),color:x,fontSize:t.fontSize,lineHeight:t.lineHeight,"> a":(0,V.Z)({color:x,transition:"all ".concat(S)},"&:hover",{color:v})}),(0,V.Z)(e,"".concat(c,"-item-meta-description"),{color:w,fontSize:_,lineHeight:t.lineHeight}),e)),(0,V.Z)(r,"".concat(c,"-item-action"),(n={flex:"0 0 auto",marginInlineStart:t.marginXXL,padding:0,fontSize:0,listStyle:"none"},(0,V.Z)(n,"& > li",(0,V.Z)({position:"relative",display:"inline-block",padding:"0 ".concat(y,"px"),color:w,fontSize:t.fontSize,lineHeight:t.lineHeight,textAlign:"center"},"&:first-child",{paddingInlineStart:0})),(0,V.Z)(n,"".concat(c,"-item-action-split"),{position:"absolute",insetBlockStart:"50%",insetInlineEnd:0,width:k,height:Math.ceil(t.fontSize*t.lineHeight)-2*t.marginXXS,transform:"translateY(-50%)",backgroundColor:t.colorSplit}),n)),r)),(0,V.Z)(i,"".concat(c,"-empty"),{padding:"".concat(d,"px 0"),color:w,fontSize:t.fontSizeSM,textAlign:"center"}),(0,V.Z)(i,"".concat(c,"-empty-text"),{padding:E,color:t.colorTextDisabled,fontSize:t.fontSize,textAlign:"center"}),(0,V.Z)(i,"".concat(c,"-item-no-flex"),{display:"block"}),i))),(0,V.Z)(a,"".concat(c,"-grid ").concat(l,"-col > ").concat(c,"-item"),{display:"block",maxWidth:"100%",marginBlockEnd:b,paddingBlock:0,borderBlockEnd:"none"}),(0,V.Z)(a,"".concat(c,"-vertical ").concat(c,"-item"),(o={alignItems:"initial"},(0,V.Z)(o,"".concat(c,"-item-main"),{display:"block",flex:1}),(0,V.Z)(o,"".concat(c,"-item-extra"),{marginInlineStart:h}),(0,V.Z)(o,"".concat(c,"-item-meta"),(0,V.Z)({marginBlockEnd:M},"".concat(c,"-item-meta-title"),{marginBlockStart:0,marginBlockEnd:P,color:x,fontSize:t.fontSizeLG,lineHeight:t.lineHeightLG})),(0,V.Z)(o,"".concat(c,"-item-action"),{marginBlockStart:d,marginInlineStart:"auto","> li":(0,V.Z)({padding:"0 ".concat(d,"px")},"&:first-child",{paddingInlineStart:0})}),o)),(0,V.Z)(a,"".concat(c,"-split ").concat(c,"-item"),(0,V.Z)({borderBlockEnd:"".concat(t.lineWidth,"px ").concat(t.lineType," ").concat(t.colorSplit)},"&:last-child",{borderBlockEnd:"none"})),(0,V.Z)(a,"".concat(c,"-split ").concat(c,"-header"),{borderBlockEnd:"".concat(t.lineWidth,"px ").concat(t.lineType," ").concat(t.colorSplit)}),(0,V.Z)(a,"".concat(c,"-split").concat(c,"-empty ").concat(c,"-footer"),{borderTop:"".concat(t.lineWidth,"px ").concat(t.lineType," ").concat(t.colorSplit)}),(0,V.Z)(a,"".concat(c,"-loading ").concat(c,"-spin-nested-loading"),{minHeight:u}),(0,V.Z)(a,"".concat(c,"-split").concat(c,"-something-after-last-item ").concat(l,"-spin-container > ").concat(c,"-items > ").concat(c,"-item:last-child"),{borderBlockEnd:"".concat(t.lineWidth,"px ").concat(t.lineType," ").concat(t.colorSplit)}),(0,V.Z)(a,"".concat(c,"-lg ").concat(c,"-item"),{padding:m}),(0,V.Z)(a,"".concat(c,"-sm ").concat(c,"-item"),{padding:g}),(0,V.Z)(a,"".concat(c,":not(").concat(c,"-vertical)"),(0,V.Z)({},"".concat(c,"-item-no-flex"),(0,V.Z)({},"".concat(c,"-item-action"),{float:"right"}))),a},qp=(0,se.Z)("List",(function(t){var e=(0,nn.TS)(t,{listBorderedCls:"".concat(t.componentCls,"-bordered"),minHeight:t.controlHeightLG});return[Xp(e),Vp(e),Gp(e)]}),(function(t){return{contentWidth:220,itemPadding:"".concat(t.paddingContentVertical,"px 0"),itemPaddingSM:"".concat(t.paddingContentVerticalSM,"px ").concat(t.paddingContentHorizontal,"px"),itemPaddingLG:"".concat(t.paddingContentVerticalLG,"px ").concat(t.paddingContentHorizontalLG,"px"),headerBg:"transparent",footerBg:"transparent",emptyTextPadding:t.padding,metaMarginBottom:t.padding,avatarMarginRight:t.padding,titleMarginBottom:t.paddingSM,descriptionFontSize:t.fontSize}})),Yp=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(t);iat&&(ot.current=at);var ct=i?Z.createElement("div",{className:K()("".concat(q,"-pagination"),"".concat(q,"-pagination-align-").concat(null!==(n=null==ot?void 0:ot.align)&&void 0!==n?n:"end"))},Z.createElement(Op,Object.assign({},ot,{onChange:W,onShowSizeChange:X}))):null,lt=(0,Y.Z)(y);i&&y.length>(ot.current-1)*ot.pageSize&&(lt=(0,Y.Z)(y).splice((ot.current-1)*ot.pageSize,ot.pageSize));var ut=Object.keys(g||{}).some((function(t){return["xs","sm","md","lg","xl","xxl"].includes(t)})),st=df(ut),ft=Z.useMemo((function(){for(var t=0;t0){var pt=lt.map((function(t,e){return function(t,e){return O?((n="function"==typeof C?C(t):C?t[C]:t.key)||(n="list-item-".concat(e)),Z.createElement(Z.Fragment,{key:n},O(t,e))):null;var n}(t,e)}));dt=g?Z.createElement(hf,{gutter:g.gutter},Z.Children.map(pt,(function(t){return Z.createElement("div",{key:null==t?void 0:t.key,style:ht},t)}))):Z.createElement("ul",{className:"".concat(q,"-items")},pt)}else d||nt||(dt=Z.createElement("div",{className:"".concat(q,"-empty-text")},E&&E.emptyText||(null==B?void 0:B("List"))||Z.createElement(tf,{componentName:"List"})));var vt=ot.position||"bottom",gt=Z.useMemo((function(){return{grid:g,itemLayout:p}}),[JSON.stringify(g),p]);return Q(Z.createElement(Bp.Provider,{value:gt},Z.createElement("div",Object.assign({style:Object.assign(Object.assign({},null==U?void 0:U.style),h),className:it},M),("top"===vt||"both"===vt)&&ct,x&&Z.createElement("div",{className:"".concat(q,"-header")},x),Z.createElement(jp,Object.assign({},et),dt,d),w&&Z.createElement("div",{className:"".concat(q,"-footer")},w),v||("bottom"===vt||"both"===vt)&&ct)))}$p.Item=Wp;var Kp=$p,Jp=["title","titleId"];var Qp=Z.forwardRef((function(t,e){var n=t.title,r=t.titleId,i=(0,I.Z)(t,Jp);return Z.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true",ref:e,"aria-labelledby":r},i),n?Z.createElement("title",{id:r},n):null,Z.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M8.625 9.75a.375.375 0 11-.75 0 .375.375 0 01.75 0zm0 0H8.25m4.125 0a.375.375 0 11-.75 0 .375.375 0 01.75 0zm0 0H12m4.125 0a.375.375 0 11-.75 0 .375.375 0 01.75 0zm0 0h-.375m-13.5 3.01c0 1.6 1.123 2.994 2.707 3.227 1.087.16 2.185.283 3.293.369V21l4.184-4.183a1.14 1.14 0 01.778-.332 48.294 48.294 0 005.83-.498c1.585-.233 2.708-1.626 2.708-3.228V6.741c0-1.602-1.123-2.995-2.707-3.228A48.394 48.394 0 0012 3c-2.392 0-4.744.175-7.043.513C3.373 3.746 2.25 5.14 2.25 6.741v6.018z"}))})),tv=["title","titleId"];var ev=Z.forwardRef((function(t,e){var n=t.title,r=t.titleId,i=(0,I.Z)(t,tv);return Z.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true",ref:e,"aria-labelledby":r},i),n?Z.createElement("title",{id:r},n):null,Z.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M20.25 7.5l-.625 10.632a2.25 2.25 0 01-2.247 2.118H6.622a2.25 2.25 0 01-2.247-2.118L3.75 7.5m6 4.125l2.25 2.25m0 0l2.25 2.25M12 13.875l2.25-2.25M12 13.875l-2.25 2.25M3.375 7.5h17.25c.621 0 1.125-.504 1.125-1.125v-1.5c0-.621-.504-1.125-1.125-1.125H3.375c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125z"}))})),nv=n(94730),rv=n(70769),iv=n(70966),ov={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M176 511a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0z"}}]},name:"ellipsis",theme:"outlined"},av=function(t,e){return Z.createElement(Wt.Z,(0,J.Z)({},t,{ref:e,icon:ov}))};var cv=Z.forwardRef(av),lv={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"defs",attrs:{},children:[{tag:"style",attrs:{}}]},{tag:"path",attrs:{d:"M482 152h60q8 0 8 8v704q0 8-8 8h-60q-8 0-8-8V160q0-8 8-8z"}},{tag:"path",attrs:{d:"M176 474h672q8 0 8 8v60q0 8-8 8H176q-8 0-8-8v-60q0-8 8-8z"}}]},name:"plus",theme:"outlined"},uv=function(t,e){return Z.createElement(Wt.Z,(0,J.Z)({},t,{ref:e,icon:lv}))};var sv=Z.forwardRef(uv),fv=(0,Z.createContext)(null),hv=Z.forwardRef((function(t,e){var n=t.prefixCls,r=t.className,i=t.style,o=t.id,a=t.active,c=t.tabKey,l=t.children;return Z.createElement("div",{id:o&&"".concat(o,"-panel-").concat(c),role:"tabpanel",tabIndex:a?0:-1,"aria-labelledby":o&&"".concat(o,"-tab-").concat(c),"aria-hidden":!a,style:i,className:K()(n,a&&"".concat(n,"-active"),r),ref:e},l)}));var dv=hv,pv=["key","forceRender","style","className"];function vv(t){var e=t.id,n=t.activeKey,r=t.animated,i=t.tabPosition,o=t.destroyInactiveTabPane,a=Z.useContext(fv),c=a.prefixCls,l=a.tabs,u=r.tabPane,s="".concat(c,"-tabpane");return Z.createElement("div",{className:K()("".concat(c,"-content-holder"))},Z.createElement("div",{className:K()("".concat(c,"-content"),"".concat(c,"-content-").concat(i),(0,B.Z)({},"".concat(c,"-content-animated"),u))},l.map((function(t){var i=t.key,a=t.forceRender,c=t.style,l=t.className,f=(0,rt.Z)(t,pv),h=i===n;return Z.createElement(ne.ZP,(0,J.Z)({key:i,visible:h,forceRender:a,removeOnLeave:!!o,leavedClassName:"".concat(s,"-hidden")},r.tabPaneMotion),(function(t,n){var r=t.style,o=t.className;return Z.createElement(dv,(0,J.Z)({},f,{prefixCls:s,id:e,tabKey:i,animated:u,active:h,style:(0,lt.Z)((0,lt.Z)({},c),r),className:K()(l,o),ref:n}))}))}))))}var gv={width:0,height:0,left:0,top:0};function mv(t,e){var n=Z.useRef(t),r=Z.useState({}),i=(0,rr.Z)(r,2)[1];return[n.current,function(t){var r="function"==typeof t?t(n.current):t;r!==n.current&&e(r,n.current),n.current=r,i({})}]}var yv=.1,bv=.01,xv=20,wv=Math.pow(.995,xv);function Sv(t){var e=(0,Z.useState)(0),n=(0,rr.Z)(e,2),r=n[0],i=n[1],o=(0,Z.useRef)(0),a=(0,Z.useRef)();return a.current=t,(0,vr.o)((function(){var t;null===(t=a.current)||void 0===t||t.call(a)}),[r]),function(){o.current===r&&(o.current+=1,i(o.current))}}var kv={width:0,height:0,left:0,top:0,right:0};function Cv(t){var e;return t instanceof Map?(e={},t.forEach((function(t,n){e[n]=t}))):e=t,JSON.stringify(e)}var Ov="TABS_DQ";function Ev(t){return String(t).replace(/"/g,Ov)}function Mv(t,e,n,r){return!(!n||r||!1===t||void 0===t&&(!1===e||null===e))}function Av(t,e){var n=t.prefixCls,r=t.editable,i=t.locale,o=t.style;return r&&!1!==r.showAdd?Z.createElement("button",{ref:e,type:"button",className:"".concat(n,"-nav-add"),style:o,"aria-label":(null==i?void 0:i.addAriaLabel)||"Add tab",onClick:function(t){r.onEdit("add",{event:t})}},r.addIcon||"+"):null}var Pv=Z.forwardRef(Av),_v=Z.forwardRef((function(t,e){var n,r=t.position,i=t.prefixCls,o=t.extra;if(!o)return null;var a={};return"object"!==(0,it.Z)(o)||Z.isValidElement(o)?a.right=o:a=o,"right"===r&&(n=a.right),"left"===r&&(n=a.left),n?Z.createElement("div",{className:"".concat(i,"-extra-content"),ref:e},n):null}));var Dv=_v,Tv=Ya.Z.ESC,Zv=Ya.Z.TAB;var Fv=(0,Z.forwardRef)((function(t,e){var n=t.overlay,r=t.arrow,i=t.prefixCls,o=(0,Z.useMemo)((function(){return"function"==typeof n?n():n}),[n]),a=(0,le.sQ)(e,null==o?void 0:o.ref);return Z.createElement(Z.Fragment,null,r&&Z.createElement("div",{className:"".concat(i,"-arrow")}),Z.cloneElement(o,{ref:(0,le.Yr)(o)?a:void 0}))})),jv=Fv,Iv={adjustX:1,adjustY:1},Rv=[0,0],Lv={topLeft:{points:["bl","tl"],overflow:Iv,offset:[0,-4],targetOffset:Rv},top:{points:["bc","tc"],overflow:Iv,offset:[0,-4],targetOffset:Rv},topRight:{points:["br","tr"],overflow:Iv,offset:[0,-4],targetOffset:Rv},bottomLeft:{points:["tl","bl"],overflow:Iv,offset:[0,4],targetOffset:Rv},bottom:{points:["tc","bc"],overflow:Iv,offset:[0,4],targetOffset:Rv},bottomRight:{points:["tr","br"],overflow:Iv,offset:[0,4],targetOffset:Rv}},Nv=["arrow","prefixCls","transitionName","animation","align","placement","placements","getPopupContainer","showAction","hideAction","overlayClassName","overlayStyle","visible","trigger","autoFocus","overlay","children","onVisibleChange"];function Bv(t,e){var n,r=t.arrow,i=void 0!==r&&r,o=t.prefixCls,a=void 0===o?"rc-dropdown":o,c=t.transitionName,l=t.animation,u=t.align,s=t.placement,f=void 0===s?"bottomLeft":s,h=t.placements,d=void 0===h?Lv:h,p=t.getPopupContainer,v=t.showAction,g=t.hideAction,m=t.overlayClassName,y=t.overlayStyle,b=t.visible,x=t.trigger,w=void 0===x?["hover"]:x,S=t.autoFocus,k=t.overlay,C=t.children,O=t.onVisibleChange,E=(0,rt.Z)(t,Nv),M=Z.useState(),A=(0,rr.Z)(M,2),P=A[0],_=A[1],D="visible"in t?b:P,T=Z.useRef(null),F=Z.useRef(null),j=Z.useRef(null);Z.useImperativeHandle(e,(function(){return T.current}));var I=function(t){_(t),null==O||O(t)};!function(t){var e=t.visible,n=t.triggerRef,r=t.onVisibleChange,i=t.autoFocus,o=t.overlayRef,a=Z.useRef(!1),c=function(){var t,i;e&&(null===(t=n.current)||void 0===t||null===(i=t.focus)||void 0===i||i.call(t),null==r||r(!1))},l=function(){var t;return!(null===(t=o.current)||void 0===t||!t.focus||(o.current.focus(),a.current=!0,0))},u=function(t){switch(t.keyCode){case Tv:c();break;case Zv:var e=!1;a.current||(e=l()),e?t.preventDefault():c()}};Z.useEffect((function(){return e?(window.addEventListener("keydown",u),i&&(0,pe.Z)(l,3),function(){window.removeEventListener("keydown",u),a.current=!1}):function(){a.current=!1}}),[e])}({visible:D,triggerRef:j,onVisibleChange:I,autoFocus:S,overlayRef:F});var R,L,N,z=function(){return Z.createElement(jv,{ref:F,overlay:k,prefixCls:a,arrow:i})},U=Z.cloneElement(C,{className:K()(null===(n=C.props)||void 0===n?void 0:n.className,D&&(R=t.openClassName,void 0!==R?R:"".concat(a,"-open"))),ref:(0,le.Yr)(C)?(0,le.sQ)(j,C.ref):void 0}),H=g;return H||-1===w.indexOf("contextMenu")||(H=["click"]),Z.createElement(Di,(0,J.Z)({builtinPlacements:d},E,{prefixCls:a,ref:T,popupClassName:K()(m,(0,B.Z)({},"".concat(a,"-show-arrow"),i)),popupStyle:y,action:w,showAction:v,hideAction:H,popupPlacement:f,popupAlign:u,popupTransitionName:c,popupAnimation:l,popupVisible:D,stretch:(L=t.minOverlayWidthMatchTrigger,N=t.alignPoint,("minOverlayWidthMatchTrigger"in t?L:!N)?"minWidth":""),popup:"function"==typeof k?z:z(),onPopupVisibleChange:I,onPopupClick:function(e){var n=t.onOverlayClick;_(!1),n&&n(e)},getPopupContainer:p}),U)}var zv=Z.forwardRef(Bv),Uv=Z.createContext(null);function Hv(t,e){return void 0===t?null:"".concat(t,"-").concat(e)}function Wv(t){return Hv(Z.useContext(Uv),t)}var Vv=["children","locked"],Gv=Z.createContext(null);function Xv(t){var e=t.children,n=t.locked,r=(0,rt.Z)(t,Vv),i=Z.useContext(Gv),o=(0,ma.Z)((function(){return function(t,e){var n=(0,lt.Z)({},t);return Object.keys(e).forEach((function(t){var r=e[t];void 0!==r&&(n[t]=r)})),n}(i,r)}),[i,r],(function(t,e){return!(n||t[0]===e[0]&&(0,Pa.Z)(t[1],e[1],!0))}));return Z.createElement(Gv.Provider,{value:o},e)}var qv=[],Yv=Z.createContext(null);function $v(){return Z.useContext(Yv)}var Kv=Z.createContext(qv);function Jv(t){var e=Z.useContext(Kv);return Z.useMemo((function(){return void 0!==t?[].concat((0,Y.Z)(e),[t]):e}),[e,t])}var Qv=Z.createContext(null),tg=Z.createContext({});function eg(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(ue(t)){var n=t.nodeName.toLowerCase(),r=["input","select","textarea","button"].includes(n)||t.isContentEditable||"a"===n&&!!t.getAttribute("href"),i=t.getAttribute("tabindex"),o=Number(i),a=null;return i&&!Number.isNaN(o)?a=o:r&&null===a&&(a=0),r&&t.disabled&&(a=null),null!==a&&(a>=0||e&&a<0)}return!1}function ng(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=(0,Y.Z)(t.querySelectorAll("*")).filter((function(t){return eg(t,e)}));return eg(t,e)&&n.unshift(t),n}var rg=Ya.Z.LEFT,ig=Ya.Z.RIGHT,og=Ya.Z.UP,ag=Ya.Z.DOWN,cg=Ya.Z.ENTER,lg=Ya.Z.ESC,ug=Ya.Z.HOME,sg=Ya.Z.END,fg=[og,ag,rg,ig];function hg(t,e){return ng(t,!0).filter((function(t){return e.has(t)}))}function dg(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;if(!t)return null;var i=hg(t,e),o=i.length,a=i.findIndex((function(t){return n===t}));return r<0?-1===a?a=o-1:a-=1:r>0&&(a+=1),i[a=(a+o)%o]}function pg(t,e,n,r,i,o,a,c,l,u){var s=Z.useRef(),f=Z.useRef();f.current=e;var h=function(){pe.Z.cancel(s.current)};return Z.useEffect((function(){return function(){h()}}),[]),function(d){var p=d.which;if([].concat(fg,[cg,lg,ug,sg]).includes(p)){var v,g,m,y=function(){return v=new Set,g=new Map,m=new Map,o().forEach((function(t){var e=document.querySelector("[data-menu-id='".concat(Hv(r,t),"']"));e&&(v.add(e),m.set(e,t),g.set(t,e))})),v};y();var b=function(t,e){for(var n=t||document.activeElement;n;){if(e.has(n))return n;n=n.parentElement}return null}(g.get(e),v),x=m.get(b),w=function(t,e,n,r){var i,o,a,c,l="prev",u="next",s="children",f="parent";if("inline"===t&&r===cg)return{inlineTrigger:!0};var h=(i={},(0,B.Z)(i,og,l),(0,B.Z)(i,ag,u),i),d=(o={},(0,B.Z)(o,rg,n?u:l),(0,B.Z)(o,ig,n?l:u),(0,B.Z)(o,ag,s),(0,B.Z)(o,cg,s),o),p=(a={},(0,B.Z)(a,og,l),(0,B.Z)(a,ag,u),(0,B.Z)(a,cg,s),(0,B.Z)(a,lg,f),(0,B.Z)(a,rg,n?s:f),(0,B.Z)(a,ig,n?f:s),a);switch(null===(c={inline:h,horizontal:d,vertical:p,inlineSub:h,horizontalSub:p,verticalSub:p}["".concat(t).concat(e?"":"Sub")])||void 0===c?void 0:c[r]){case l:return{offset:-1,sibling:!0};case u:return{offset:1,sibling:!0};case f:return{offset:-1,sibling:!1};case s:return{offset:1,sibling:!1};default:return null}}(t,1===a(x,!0).length,n,p);if(!w&&p!==ug&&p!==sg)return;(fg.includes(p)||[ug,sg].includes(p))&&d.preventDefault();var S=function(t){if(t){var e=t,n=t.querySelector("a");null!=n&&n.getAttribute("href")&&(e=n);var r=m.get(t);c(r),h(),s.current=(0,pe.Z)((function(){f.current===r&&e.focus()}))}};if([ug,sg].includes(p)||w.sibling||!b){var k,C;k=b&&"inline"!==t?function(t){for(var e=t;e;){if(e.getAttribute("data-menu-list"))return e;e=e.parentElement}return null}(b):i.current;var O=hg(k,v);C=p===ug?O[0]:p===sg?O[O.length-1]:dg(k,v,b,w.offset),S(C)}else if(w.inlineTrigger)l(x);else if(w.offset>0)l(x,!0),h(),s.current=(0,pe.Z)((function(){y();var t=b.getAttribute("aria-controls"),e=dg(document.getElementById(t),v);S(e)}),5);else if(w.offset<0){var E=a(x,!0),M=E[E.length-2],A=g.get(M);l(M,!1),S(A)}}null==u||u(d)}}var vg="__RC_UTIL_PATH_SPLIT__",gg=function(t){return t.join(vg)},mg="rc-menu-more";function yg(){var t=Z.useState({}),e=(0,rr.Z)(t,2)[1],n=(0,Z.useRef)(new Map),r=(0,Z.useRef)(new Map),i=Z.useState([]),o=(0,rr.Z)(i,2),a=o[0],c=o[1],l=(0,Z.useRef)(0),u=(0,Z.useRef)(!1),s=(0,Z.useCallback)((function(t,i){var o=gg(i);r.current.set(o,t),n.current.set(t,o),l.current+=1;var a,c=l.current;a=function(){c===l.current&&(u.current||e({}))},Promise.resolve().then(a)}),[]),f=(0,Z.useCallback)((function(t,e){var i=gg(e);r.current.delete(i),n.current.delete(t)}),[]),h=(0,Z.useCallback)((function(t){c(t)}),[]),d=(0,Z.useCallback)((function(t,e){var r=n.current.get(t)||"",i=r.split(vg);return e&&a.includes(i[0])&&i.unshift(mg),i}),[a]),p=(0,Z.useCallback)((function(t,e){return t.some((function(t){return d(t,!0).includes(e)}))}),[d]),v=(0,Z.useCallback)((function(t){var e="".concat(n.current.get(t)).concat(vg),i=new Set;return(0,Y.Z)(r.current.keys()).forEach((function(t){t.startsWith(e)&&i.add(r.current.get(t))})),i}),[]);return Z.useEffect((function(){return function(){u.current=!0}}),[]),{registerPath:s,unregisterPath:f,refreshOverflowKeys:h,isSubPathKey:p,getKeyPath:d,getKeys:function(){var t=(0,Y.Z)(n.current.keys());return a.length&&t.push(mg),t},getSubPathKeys:v}}function bg(t){var e=Z.useRef(t);e.current=t;var n=Z.useCallback((function(){for(var t,n=arguments.length,r=new Array(n),i=0;i1&&(y.motionAppear=!1);var b=y.onVisibleChanged;return y.onVisibleChanged=function(t){return h.current||t||g(!0),null==b?void 0:b(t)},v?null:Z.createElement(Xv,{mode:o,locked:!h.current},Z.createElement(ne.ZP,(0,J.Z)({visible:m},y,{forceRender:l,removeOnLeave:!1,leavedClassName:"".concat(c,"-hidden")}),(function(t){var n=t.className,r=t.style;return Z.createElement(Rg,{id:e,className:n,style:r},i)})))}var Gg=["style","className","title","eventKey","warnKey","disabled","internalPopupClose","children","itemIcon","expandIcon","popupClassName","popupOffset","onClick","onMouseEnter","onMouseLeave","onTitleClick","onTitleMouseEnter","onTitleMouseLeave"],Xg=["active"],qg=function(t){var e,n=t.style,r=t.className,i=t.title,o=t.eventKey,a=(t.warnKey,t.disabled),c=t.internalPopupClose,l=t.children,u=t.itemIcon,s=t.expandIcon,f=t.popupClassName,h=t.popupOffset,d=t.onClick,p=t.onMouseEnter,v=t.onMouseLeave,g=t.onTitleClick,m=t.onTitleMouseEnter,y=t.onTitleMouseLeave,b=(0,rt.Z)(t,Gg),x=Wv(o),w=Z.useContext(Gv),S=w.prefixCls,k=w.mode,C=w.openKeys,O=w.disabled,E=w.overflowDisabled,M=w.activeKey,A=w.selectedKeys,P=w.itemIcon,_=w.expandIcon,D=w.onItemClick,T=w.onOpenChange,F=w.onActive,j=Z.useContext(tg)._internalRenderSubMenuItem,I=Z.useContext(Qv).isSubPathKey,R=Jv(),L="".concat(S,"-submenu"),N=O||a,z=Z.useRef(),U=Z.useRef();var H=u||P,W=s||_,V=C.includes(o),G=!E&&V,X=I(A,o),q=Sg(o,N,m,y),Y=q.active,$=(0,rt.Z)(q,Xg),Q=Z.useState(!1),tt=(0,rr.Z)(Q,2),et=tt[0],nt=tt[1],it=function(t){N||nt(t)},ot=Z.useMemo((function(){return Y||"inline"!==k&&(et||I([M],o))}),[k,Y,M,et,o,I]),at=kg(R.length),ct=bg((function(t){null==d||d(Eg(t)),D(t)})),ut=x&&"".concat(x,"-popup"),st=Z.createElement("div",(0,J.Z)({role:"menuitem",style:at,className:"".concat(L,"-title"),tabIndex:N?null:-1,ref:z,title:"string"==typeof i?i:null,"data-menu-id":E&&x?null:x,"aria-expanded":G,"aria-haspopup":!0,"aria-controls":ut,"aria-disabled":N,onClick:function(t){N||(null==g||g({key:o,domEvent:t}),"inline"===k&&T(o,!V))},onFocus:function(){F(o)}},$),i,Z.createElement(Cg,{icon:"horizontal"!==k?W:null,props:(0,lt.Z)((0,lt.Z)({},t),{},{isOpen:G,isSubMenu:!0})},Z.createElement("i",{className:"".concat(L,"-arrow")}))),ft=Z.useRef(k);if("inline"!==k&&R.length>1?ft.current="vertical":ft.current=k,!E){var ht=ft.current;st=Z.createElement(Wg,{mode:ht,prefixCls:L,visible:!c&&G&&"inline"!==k,popupClassName:f,popupOffset:h,popup:Z.createElement(Xv,{mode:"horizontal"===ht?"vertical":ht},Z.createElement(Rg,{id:ut,ref:U},l)),disabled:N,onVisibleChange:function(t){"inline"!==k&&T(o,t)}},st)}var dt=Z.createElement(eh.Item,(0,J.Z)({role:"none"},b,{component:"li",style:n,className:K()(L,"".concat(L,"-").concat(k),r,(e={},(0,B.Z)(e,"".concat(L,"-open"),G),(0,B.Z)(e,"".concat(L,"-active"),ot),(0,B.Z)(e,"".concat(L,"-selected"),X),(0,B.Z)(e,"".concat(L,"-disabled"),N),e)),onMouseEnter:function(t){it(!0),null==p||p({key:o,domEvent:t})},onMouseLeave:function(t){it(!1),null==v||v({key:o,domEvent:t})}}),st,!E&&Z.createElement(Vg,{id:ut,open:G,keyPath:R},l));return j&&(dt=j(dt,t,{selected:X,active:ot,open:G,disabled:N})),Z.createElement(Xv,{onItemClick:ct,mode:"horizontal"===k?"vertical":k,itemIcon:H,expandIcon:W},dt)};function Yg(t){var e,n=t.eventKey,r=t.children,i=Jv(n),o=Lg(r,i),a=$v();return Z.useEffect((function(){if(a)return a.registerPath(n,i),function(){a.unregisterPath(n,i)}}),[i]),e=a?o:Z.createElement(qg,t,o),Z.createElement(Kv.Provider,{value:i},e)}var $g=["className","title","eventKey","children"],Kg=["children"],Jg=function(t){var e=t.className,n=t.title,r=(t.eventKey,t.children),i=(0,rt.Z)(t,$g),o=Z.useContext(Gv).prefixCls,a="".concat(o,"-item-group");return Z.createElement("li",(0,J.Z)({role:"presentation"},i,{onClick:function(t){return t.stopPropagation()},className:K()(a,e)}),Z.createElement("div",{role:"presentation",className:"".concat(a,"-title"),title:"string"==typeof n?n:void 0},n),Z.createElement("ul",{role:"group",className:"".concat(a,"-list")},r))};function Qg(t){var e=t.children,n=(0,rt.Z)(t,Kg),r=Lg(e,Jv(n.eventKey));return $v()?r:Z.createElement(Jg,(0,ce.Z)(n,["warnKey"]),r)}function tm(t){var e=t.className,n=t.style,r=Z.useContext(Gv).prefixCls;return $v()?null:Z.createElement("li",{className:K()("".concat(r,"-item-divider"),e),style:n})}var em=["label","children","key","type"];function nm(t){return(t||[]).map((function(t,e){if(t&&"object"===(0,it.Z)(t)){var n=t,r=n.label,i=n.children,o=n.key,a=n.type,c=(0,rt.Z)(n,em),l=null!=o?o:"tmp-".concat(e);return i||"group"===a?"group"===a?Z.createElement(Qg,(0,J.Z)({key:l},c,{title:r}),nm(i)):Z.createElement(Yg,(0,J.Z)({key:l},c,{title:r}),nm(i)):"divider"===a?Z.createElement(tm,(0,J.Z)({key:l},c)):Z.createElement(Zg,(0,J.Z)({key:l},c),r)}return null})).filter((function(t){return t}))}function rm(t,e,n){var r=t;return e&&(r=nm(e)),Lg(r,n)}var im=["prefixCls","rootClassName","style","className","tabIndex","items","children","direction","id","mode","inlineCollapsed","disabled","disabledOverflow","subMenuOpenDelay","subMenuCloseDelay","forceSubMenuRender","defaultOpenKeys","openKeys","activeKey","defaultActiveFirst","selectable","multiple","defaultSelectedKeys","selectedKeys","onSelect","onDeselect","inlineIndent","motion","defaultMotions","triggerSubMenuAction","builtinPlacements","itemIcon","expandIcon","overflowedIndicator","overflowedIndicatorPopupClassName","getPopupContainer","onClick","onOpenChange","onKeyDown","openAnimation","openTransitionName","_internalRenderMenuItem","_internalRenderSubMenuItem"],om=[],am=Z.forwardRef((function(t,e){var n,r,i=t,o=i.prefixCls,a=void 0===o?"rc-menu":o,c=i.rootClassName,l=i.style,u=i.className,s=i.tabIndex,f=void 0===s?0:s,h=i.items,d=i.children,p=i.direction,v=i.id,g=i.mode,m=void 0===g?"vertical":g,y=i.inlineCollapsed,b=i.disabled,x=i.disabledOverflow,w=i.subMenuOpenDelay,S=void 0===w?.1:w,k=i.subMenuCloseDelay,C=void 0===k?.1:k,O=i.forceSubMenuRender,E=i.defaultOpenKeys,M=i.openKeys,A=i.activeKey,P=i.defaultActiveFirst,_=i.selectable,D=void 0===_||_,T=i.multiple,F=void 0!==T&&T,j=i.defaultSelectedKeys,I=i.selectedKeys,R=i.onSelect,L=i.onDeselect,N=i.inlineIndent,z=void 0===N?24:N,U=i.motion,H=i.defaultMotions,W=i.triggerSubMenuAction,V=void 0===W?"hover":W,G=i.builtinPlacements,X=i.itemIcon,q=i.expandIcon,$=i.overflowedIndicator,Q=void 0===$?"...":$,tt=i.overflowedIndicatorPopupClassName,et=i.getPopupContainer,nt=i.onClick,it=i.onOpenChange,ot=i.onKeyDown,at=(i.openAnimation,i.openTransitionName,i._internalRenderMenuItem),ct=i._internalRenderSubMenuItem,ut=(0,rt.Z)(i,im),st=Z.useMemo((function(){return rm(d,h,om)}),[d,h]),ft=Z.useState(!1),ht=(0,rr.Z)(ft,2),dt=ht[0],pt=ht[1],vt=Z.useRef(),gt=function(t){var e=(0,At.Z)(t,{value:t}),n=(0,rr.Z)(e,2),r=n[0],i=n[1];return Z.useEffect((function(){wg+=1;var t="".concat(xg,"-").concat(wg);i("rc-menu-uuid-".concat(t))}),[]),r}(v),mt="rtl"===p;var yt=(0,At.Z)(E,{value:M,postState:function(t){return t||om}}),bt=(0,rr.Z)(yt,2),xt=bt[0],wt=bt[1],St=function(t){function e(){wt(t),null==it||it(t)}arguments.length>1&&void 0!==arguments[1]&&arguments[1]?(0,Pt.flushSync)(e):e()},kt=Z.useState(xt),Ct=(0,rr.Z)(kt,2),Ot=Ct[0],Et=Ct[1],Mt=Z.useRef(!1),_t=Z.useMemo((function(){return"inline"!==m&&"vertical"!==m||!y?[m,!1]:["vertical",y]}),[m,y]),Dt=(0,rr.Z)(_t,2),Tt=Dt[0],Zt=Dt[1],Ft="inline"===Tt,jt=Z.useState(Tt),It=(0,rr.Z)(jt,2),Rt=It[0],Lt=It[1],Nt=Z.useState(Zt),Bt=(0,rr.Z)(Nt,2),zt=Bt[0],Ut=Bt[1];Z.useEffect((function(){Lt(Tt),Ut(Zt),Mt.current&&(Ft?wt(Ot):St(om))}),[Tt,Zt]);var Ht=Z.useState(0),Wt=(0,rr.Z)(Ht,2),Vt=Wt[0],Gt=Wt[1],Xt=Vt>=st.length-1||"horizontal"!==Rt||x;Z.useEffect((function(){Ft&&Et(xt)}),[xt]),Z.useEffect((function(){return Mt.current=!0,function(){Mt.current=!1}}),[]);var qt=yg(),Yt=qt.registerPath,$t=qt.unregisterPath,Kt=qt.refreshOverflowKeys,Jt=qt.isSubPathKey,Qt=qt.getKeyPath,te=qt.getKeys,ee=qt.getSubPathKeys,ne=Z.useMemo((function(){return{registerPath:Yt,unregisterPath:$t}}),[Yt,$t]),re=Z.useMemo((function(){return{isSubPathKey:Jt}}),[Jt]);Z.useEffect((function(){Kt(Xt?om:st.slice(Vt+1).map((function(t){return t.key})))}),[Vt,Xt]);var ie=(0,At.Z)(A||P&&(null===(n=st[0])||void 0===n?void 0:n.key),{value:A}),oe=(0,rr.Z)(ie,2),ae=oe[0],ce=oe[1],le=bg((function(t){ce(t)})),ue=bg((function(){ce(void 0)}));(0,Z.useImperativeHandle)(e,(function(){return{list:vt.current,focus:function(t){var e,n,r,i,o=null!=ae?ae:null===(e=st.find((function(t){return!t.props.disabled})))||void 0===e?void 0:e.key;o&&(null===(n=vt.current)||void 0===n||null===(r=n.querySelector("li[data-menu-id='".concat(Hv(gt,o),"']")))||void 0===r||null===(i=r.focus)||void 0===i||i.call(r,t))}}}));var se=(0,At.Z)(j||[],{value:I,postState:function(t){return Array.isArray(t)?t:null==t?om:[t]}}),fe=(0,rr.Z)(se,2),he=fe[0],de=fe[1],pe=bg((function(t){null==nt||nt(Eg(t)),function(t){if(D){var e,n=t.key,r=he.includes(n);e=F?r?he.filter((function(t){return t!==n})):[].concat((0,Y.Z)(he),[n]):[n],de(e);var i=(0,lt.Z)((0,lt.Z)({},t),{},{selectedKeys:e});r?null==L||L(i):null==R||R(i)}!F&&xt.length&&"inline"!==Rt&&St(om)}(t)})),ve=bg((function(t,e){var n=xt.filter((function(e){return e!==t}));if(e)n.push(t);else if("inline"!==Rt){var r=ee(t);n=n.filter((function(t){return!r.has(t)}))}(0,Pa.Z)(xt,n,!0)||St(n,!0)})),ge=pg(Rt,ae,mt,gt,vt,te,Qt,ce,(function(t,e){var n=null!=e?e:!xt.includes(t);ve(t,n)}),ot);Z.useEffect((function(){pt(!0)}),[]);var me=Z.useMemo((function(){return{_internalRenderMenuItem:at,_internalRenderSubMenuItem:ct}}),[at,ct]),ye="horizontal"!==Rt||x?st:st.map((function(t,e){return Z.createElement(Xv,{key:t.key,overflowDisabled:e>Vt},t)})),be=Z.createElement(eh,(0,J.Z)({id:v,ref:vt,prefixCls:"".concat(a,"-overflow"),component:"ul",itemComponent:Zg,className:K()(a,"".concat(a,"-root"),"".concat(a,"-").concat(Rt),u,(r={},(0,B.Z)(r,"".concat(a,"-inline-collapsed"),zt),(0,B.Z)(r,"".concat(a,"-rtl"),mt),r),c),dir:p,style:l,role:"menu",tabIndex:f,data:ye,renderRawItem:function(t){return t},renderRawRest:function(t){var e=t.length,n=e?st.slice(-e):null;return Z.createElement(Yg,{eventKey:mg,title:Q,disabled:Xt,internalPopupClose:0===e,popupClassName:tt},n)},maxCount:"horizontal"!==Rt||x?eh.INVALIDATE:eh.RESPONSIVE,ssr:"full","data-menu-list":!0,onVisibleChange:function(t){Gt(t)},onKeyDown:ge},ut));return Z.createElement(tg.Provider,{value:me},Z.createElement(Uv.Provider,{value:gt},Z.createElement(Xv,{prefixCls:a,rootClassName:c,mode:Rt,openKeys:xt,rtl:mt,disabled:b,motion:dt?U:null,defaultMotions:dt?H:null,activeKey:ae,onActive:le,onInactive:ue,selectedKeys:he,inlineIndent:z,subMenuOpenDelay:S,subMenuCloseDelay:C,forceSubMenuRender:O,builtinPlacements:G,triggerSubMenuAction:V,getPopupContainer:et,itemIcon:X,expandIcon:q,onItemClick:pe,onOpenChange:ve},Z.createElement(Qv.Provider,{value:re},be),Z.createElement("div",{style:{display:"none"},"aria-hidden":!0},Z.createElement(Yv.Provider,{value:ne},st)))))})),cm=am;cm.Item=Zg,cm.SubMenu=Yg,cm.ItemGroup=Qg,cm.Divider=tm;var lm=cm;function um(t,e){var n=t.prefixCls,r=t.id,i=t.tabs,o=t.locale,a=t.mobile,c=t.moreIcon,l=void 0===c?"More":c,u=t.moreTransitionName,s=t.style,f=t.className,h=t.editable,d=t.tabBarGutter,p=t.rtl,v=t.removeAriaLabel,g=t.onTabClick,m=t.getPopupContainer,y=t.popupClassName,b=(0,Z.useState)(!1),x=(0,rr.Z)(b,2),w=x[0],S=x[1],k=(0,Z.useState)(null),C=(0,rr.Z)(k,2),O=C[0],E=C[1],M="".concat(r,"-more-popup"),A="".concat(n,"-dropdown"),P=null!==O?"".concat(M,"-").concat(O):null,_=null==o?void 0:o.dropdownAriaLabel;var D=Z.createElement(lm,{onClick:function(t){var e=t.key,n=t.domEvent;g(e,n),S(!1)},prefixCls:"".concat(A,"-menu"),id:M,tabIndex:-1,role:"listbox","aria-activedescendant":P,selectedKeys:[O],"aria-label":void 0!==_?_:"expanded dropdown"},i.map((function(t){var e=t.closable,n=t.disabled,i=t.closeIcon,o=t.key,a=t.label,c=Mv(e,i,h,n);return Z.createElement(Zg,{key:o,id:"".concat(M,"-").concat(o),role:"option","aria-controls":r&&"".concat(r,"-panel-").concat(o),disabled:n},Z.createElement("span",null,a),c&&Z.createElement("button",{type:"button","aria-label":v||"remove",tabIndex:0,className:"".concat(A,"-menu-item-remove"),onClick:function(t){t.stopPropagation(),function(t,e){t.preventDefault(),t.stopPropagation(),h.onEdit("remove",{key:e,event:t})}(t,o)}},i||h.removeIcon||"×"))})));function T(t){for(var e=i.filter((function(t){return!t.disabled})),n=e.findIndex((function(t){return t.key===O}))||0,r=e.length,o=0;oe?"left":"right"})})),P=(0,rr.Z)(A,2),_=P[0],D=P[1],T=mv(0,(function(t,e){!M&&b&&b({direction:t>e?"top":"bottom"})})),F=(0,rr.Z)(T,2),j=F[0],I=F[1],R=(0,Z.useState)([0,0]),L=(0,rr.Z)(R,2),N=L[0],z=L[1],U=(0,Z.useState)([0,0]),H=(0,rr.Z)(U,2),W=H[0],V=H[1],G=(0,Z.useState)([0,0]),X=(0,rr.Z)(G,2),q=X[0],$=X[1],Q=(0,Z.useState)([0,0]),tt=(0,rr.Z)(Q,2),et=tt[0],nt=tt[1],rt=function(t){var e=(0,Z.useRef)([]),n=(0,Z.useState)({}),r=(0,rr.Z)(n,2)[1],i=(0,Z.useRef)("function"==typeof t?t():t),o=Sv((function(){var t=i.current;e.current.forEach((function(e){t=e(t)})),e.current=[],i.current=t,r({})}));return[i.current,function(t){e.current.push(t),o()}]}(new Map),it=(0,rr.Z)(rt,2),ot=it[0],at=it[1],ct=function(t,e,n){return(0,Z.useMemo)((function(){for(var n,r=new Map,i=e.get(null===(n=t[0])||void 0===n?void 0:n.key)||gv,o=i.left+i.width,a=0;amt?mt:t}M&&f?(gt=0,mt=Math.max(0,st-pt)):(gt=Math.min(0,pt-st),mt=0);var bt=(0,Z.useRef)(),xt=(0,Z.useState)(),wt=(0,rr.Z)(xt,2),St=wt[0],kt=wt[1];function Ct(){kt(Date.now())}function Ot(){window.clearTimeout(bt.current)}!function(t,e){var n=(0,Z.useState)(),r=(0,rr.Z)(n,2),i=r[0],o=r[1],a=(0,Z.useState)(0),c=(0,rr.Z)(a,2),l=c[0],u=c[1],s=(0,Z.useState)(0),f=(0,rr.Z)(s,2),h=f[0],d=f[1],p=(0,Z.useState)(),v=(0,rr.Z)(p,2),g=v[0],m=v[1],y=(0,Z.useRef)(),b=(0,Z.useRef)(),x=(0,Z.useRef)(null);x.current={onTouchStart:function(t){var e=t.touches[0],n=e.screenX,r=e.screenY;o({x:n,y:r}),window.clearInterval(y.current)},onTouchMove:function(t){if(i){t.preventDefault();var n=t.touches[0],r=n.screenX,a=n.screenY;o({x:r,y:a});var c=r-i.x,s=a-i.y;e(c,s);var f=Date.now();u(f),d(f-l),m({x:c,y:s})}},onTouchEnd:function(){if(i&&(o(null),m(null),g)){var t=g.x/h,n=g.y/h,r=Math.abs(t),a=Math.abs(n);if(Math.max(r,a)a?(i=n,b.current="x"):(i=r,b.current="y"),e(-i,-i)&&t.preventDefault()}},Z.useEffect((function(){function e(t){x.current.onTouchMove(t)}function n(t){x.current.onTouchEnd(t)}return document.addEventListener("touchmove",e,{passive:!1}),document.addEventListener("touchend",n,{passive:!1}),t.current.addEventListener("touchstart",(function(t){x.current.onTouchStart(t)}),{passive:!1}),t.current.addEventListener("wheel",(function(t){x.current.onWheel(t)})),function(){document.removeEventListener("touchmove",e),document.removeEventListener("touchend",n)}}),[])}(k,(function(t,e){function n(t,e){t((function(t){return yt(t+e)}))}return!!dt&&(M?n(D,t):n(I,e),Ot(),Ct(),!0)})),(0,Z.useEffect)((function(){return Ot(),St&&(bt.current=window.setTimeout((function(){kt(0)}),100)),Ot}),[St]);var Et=function(t,e,n,r,i,o,a){var c,l,u,s=a.tabs,f=a.tabPosition,h=a.rtl;return["top","bottom"].includes(f)?(c="width",l=h?"right":"left",u=Math.abs(n)):(c="height",l="top",u=-n),(0,Z.useMemo)((function(){if(!s.length)return[0,0];for(var n=s.length,r=n,i=0;iu+e){r=i-1;break}}for(var a=0,f=n-1;f>=0;f-=1)if((t.get(s[f].key)||kv)[l]=r?[0,0]:[a,r]}),[t,e,r,i,o,u,f,s.map((function(t){return t.key})).join("_"),h])}(ct,pt,M?_:j,st,ft,ht,(0,lt.Z)((0,lt.Z)({},t),{},{tabs:o})),Mt=(0,rr.Z)(Et,2),At=Mt[0],Pt=Mt[1],_t=(0,de.Z)((function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:s,e=ct.get(t)||{width:0,height:0,left:0,right:0,top:0};if(M){var n=_;f?e.right<_?n=e.right:e.right+e.width>_+pt&&(n=e.right+e.width-pt):e.left<-_?n=-e.left:e.left+e.width>-_+pt&&(n=-(e.left+e.width-pt)),I(0),D(yt(n))}else{var r=j;e.top<-j?r=-e.top:e.top+e.height>-j+pt&&(r=-(e.top+e.height-pt)),D(0),I(yt(r))}})),Dt={};"top"===v||"bottom"===v?Dt[f?"marginRight":"marginLeft"]=g:Dt.marginTop=g;var Tt=o.map((function(t,e){var n=t.key;return Z.createElement(fm,{id:l,prefixCls:i,key:n,tab:t,style:0===e?void 0:Dt,closable:t.closable,editable:d,active:n===s,renderWrapper:m,removeAriaLabel:null==p?void 0:p.removeAriaLabel,onClick:function(t){y(n,t)},onFocus:function(){_t(n),Ct(),k.current&&(f||(k.current.scrollLeft=0),k.current.scrollTop=0)}})})),Zt=function(){return at((function(){var t=new Map;return o.forEach((function(e){var n,r=e.key,i=null===(n=C.current)||void 0===n?void 0:n.querySelector('[data-node-key="'.concat(Ev(r),'"]'));i&&t.set(r,{width:i.offsetWidth,height:i.offsetHeight,left:i.offsetLeft,top:i.offsetTop})})),t}))};(0,Z.useEffect)((function(){Zt()}),[o.map((function(t){return t.key})).join("_")]);var Ft=Sv((function(){var t=hm(x),e=hm(w),n=hm(S);z([t[0]-e[0]-n[0],t[1]-e[1]-n[1]]);var r=hm(E);$(r);var i=hm(O);nt(i);var o=hm(C);V([o[0]-r[0],o[1]-r[1]]),Zt()})),jt=o.slice(0,At),It=o.slice(Pt+1),Rt=[].concat((0,Y.Z)(jt),(0,Y.Z)(It)),Lt=(0,Z.useState)(),Nt=(0,rr.Z)(Lt,2),Bt=Nt[0],zt=Nt[1],Ut=ct.get(s),Ht=(0,Z.useRef)();function Wt(){pe.Z.cancel(Ht.current)}(0,Z.useEffect)((function(){var t={};return Ut&&(M?(f?t.right=Ut.right:t.left=Ut.left,t.width=Ut.width):(t.top=Ut.top,t.height=Ut.height)),Wt(),Ht.current=(0,pe.Z)((function(){zt(t)})),Wt}),[Ut,M,f]),(0,Z.useEffect)((function(){_t()}),[s,gt,mt,Cv(Ut),Cv(ct),M]),(0,Z.useEffect)((function(){Ft()}),[f]);var Vt,Gt,Xt,qt,Yt=!!Rt.length,$t="".concat(i,"-nav-wrap");return M?f?(Gt=_>0,Vt=_!==mt):(Vt=_<0,Gt=_!==gt):(Xt=j<0,qt=j!==gt),Z.createElement(ii,{onResize:Ft},Z.createElement("div",{ref:(0,le.x1)(e,x),role:"tablist",className:K()("".concat(i,"-nav"),a),style:c,onKeyDown:function(){Ct()}},Z.createElement(Dv,{ref:w,position:"left",extra:h,prefixCls:i}),Z.createElement("div",{className:K()($t,(n={},(0,B.Z)(n,"".concat($t,"-ping-left"),Vt),(0,B.Z)(n,"".concat($t,"-ping-right"),Gt),(0,B.Z)(n,"".concat($t,"-ping-top"),Xt),(0,B.Z)(n,"".concat($t,"-ping-bottom"),qt),n)),ref:k},Z.createElement(ii,{onResize:Ft},Z.createElement("div",{ref:C,className:"".concat(i,"-nav-list"),style:{transform:"translate(".concat(_,"px, ").concat(j,"px)"),transition:St?"none":void 0}},Tt,Z.createElement(Pv,{ref:E,prefixCls:i,locale:p,editable:d,style:(0,lt.Z)((0,lt.Z)({},0===Tt.length?void 0:Dt),{},{visibility:Yt?"hidden":null})}),Z.createElement("div",{className:K()("".concat(i,"-ink-bar"),(0,B.Z)({},"".concat(i,"-ink-bar-animated"),u.inkBar)),style:Bt})))),Z.createElement(sm,(0,J.Z)({},t,{removeAriaLabel:null==p?void 0:p.removeAriaLabel,ref:O,prefixCls:i,tabs:Rt,className:!Yt&&vt,tabMoving:!!St})),Z.createElement(Dv,{ref:S,position:"right",extra:h,prefixCls:i})))}var vm=Z.forwardRef(pm),gm=["renderTabBar"],mm=["label","key"];function ym(t){var e=t.renderTabBar,n=(0,rt.Z)(t,gm),r=Z.useContext(fv).tabs;if(e){var i=(0,lt.Z)((0,lt.Z)({},n),{},{panes:r.map((function(t){var e=t.label,n=t.key,r=(0,rt.Z)(t,mm);return Z.createElement(dv,(0,J.Z)({tab:e,key:n,tabKey:n},r))}))});return e(i,vm)}return Z.createElement(vm,n)}var bm=["id","prefixCls","className","items","direction","activeKey","defaultActiveKey","editable","animated","tabPosition","tabBarGutter","tabBarStyle","tabBarExtraContent","locale","moreIcon","moreTransitionName","destroyInactiveTabPane","renderTabBar","onChange","onTabClick","onTabScroll","getPopupContainer","popupClassName"],xm=0;function wm(t,e){var n,r=t.id,i=t.prefixCls,o=void 0===i?"rc-tabs":i,a=t.className,c=t.items,l=t.direction,u=t.activeKey,s=t.defaultActiveKey,f=t.editable,h=t.animated,d=t.tabPosition,p=void 0===d?"top":d,v=t.tabBarGutter,g=t.tabBarStyle,m=t.tabBarExtraContent,y=t.locale,b=t.moreIcon,x=t.moreTransitionName,w=t.destroyInactiveTabPane,S=t.renderTabBar,k=t.onChange,C=t.onTabClick,O=t.onTabScroll,E=t.getPopupContainer,M=t.popupClassName,A=(0,rt.Z)(t,bm),P=Z.useMemo((function(){return(c||[]).filter((function(t){return t&&"object"===(0,it.Z)(t)&&"key"in t}))}),[c]),_="rtl"===l,D=function(){var t,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{inkBar:!0,tabPane:!1};return(t=!1===e?{inkBar:!1,tabPane:!1}:!0===e?{inkBar:!0,tabPane:!1}:(0,lt.Z)({inkBar:!0},"object"===(0,it.Z)(e)?e:{})).tabPaneMotion&&void 0===t.tabPane&&(t.tabPane=!0),!t.tabPaneMotion&&t.tabPane&&(t.tabPane=!1),t}(h),T=(0,Z.useState)(!1),F=(0,rr.Z)(T,2),j=F[0],I=F[1];(0,Z.useEffect)((function(){I(li())}),[]);var R=(0,At.Z)((function(){var t;return null===(t=P[0])||void 0===t?void 0:t.key}),{value:u,defaultValue:s}),L=(0,rr.Z)(R,2),N=L[0],z=L[1],U=(0,Z.useState)((function(){return P.findIndex((function(t){return t.key===N}))})),H=(0,rr.Z)(U,2),W=H[0],V=H[1];(0,Z.useEffect)((function(){var t,e=P.findIndex((function(t){return t.key===N}));-1===e&&(e=Math.max(0,Math.min(W,P.length-1)),z(null===(t=P[e])||void 0===t?void 0:t.key));V(e)}),[P.map((function(t){return t.key})).join("_"),N,W]);var G=(0,At.Z)(null,{value:r}),X=(0,rr.Z)(G,2),q=X[0],Y=X[1];(0,Z.useEffect)((function(){r||(Y("rc-tabs-".concat(xm)),xm+=1)}),[]);var $={id:q,activeKey:N,animated:D,tabPosition:p,rtl:_,mobile:j},Q=(0,lt.Z)((0,lt.Z)({},$),{},{editable:f,locale:y,moreIcon:b,moreTransitionName:x,tabBarGutter:v,onTabClick:function(t,e){null==C||C(t,e);var n=t!==N;z(t),n&&(null==k||k(t))},onTabScroll:O,extra:m,style:g,panes:null,getPopupContainer:E,popupClassName:M});return Z.createElement(fv.Provider,{value:{tabs:P,prefixCls:o}},Z.createElement("div",(0,J.Z)({ref:e,id:r,className:K()(o,"".concat(o,"-").concat(p),(n={},(0,B.Z)(n,"".concat(o,"-mobile"),j),(0,B.Z)(n,"".concat(o,"-editable"),f),(0,B.Z)(n,"".concat(o,"-rtl"),_),n),a)},A),undefined,Z.createElement(ym,(0,J.Z)({},Q,{renderTabBar:S})),Z.createElement(vv,(0,J.Z)({destroyInactiveTabPane:w},$,{animated:D}))))}var Sm=Z.forwardRef(wm);var km=function(){return null},Cm={motionAppear:!1,motionEnter:!0,motionLeave:!0};var Om=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(t);i ".concat(c,"-nav, > div > ").concat(c,"-nav"),(e={},(0,V.Z)(e,"".concat(c,"-tab"),{margin:0,padding:l,background:u,border:"".concat(t.lineWidth,"px ").concat(t.lineType," ").concat(f),transition:"all ".concat(t.motionDurationSlow," ").concat(t.motionEaseInOut)}),(0,V.Z)(e,"".concat(c,"-tab-active"),{color:h,background:t.colorBgContainer}),(0,V.Z)(e,"".concat(c,"-ink-bar"),{visibility:"hidden"}),e)),(0,V.Z)(a,"&".concat(c,"-top, &").concat(c,"-bottom"),(0,V.Z)({},"> ".concat(c,"-nav, > div > ").concat(c,"-nav"),(0,V.Z)({},"".concat(c,"-tab + ").concat(c,"-tab"),{marginLeft:{_skip_check_:!0,value:"".concat(s,"px")}}))),(0,V.Z)(a,"&".concat(c,"-top"),(0,V.Z)({},"> ".concat(c,"-nav, > div > ").concat(c,"-nav"),(n={},(0,V.Z)(n,"".concat(c,"-tab"),{borderRadius:"".concat(t.borderRadiusLG,"px ").concat(t.borderRadiusLG,"px 0 0")}),(0,V.Z)(n,"".concat(c,"-tab-active"),{borderBottomColor:t.colorBgContainer}),n))),(0,V.Z)(a,"&".concat(c,"-bottom"),(0,V.Z)({},"> ".concat(c,"-nav, > div > ").concat(c,"-nav"),(r={},(0,V.Z)(r,"".concat(c,"-tab"),{borderRadius:"0 0 ".concat(t.borderRadiusLG,"px ").concat(t.borderRadiusLG,"px")}),(0,V.Z)(r,"".concat(c,"-tab-active"),{borderTopColor:t.colorBgContainer}),r))),(0,V.Z)(a,"&".concat(c,"-left, &").concat(c,"-right"),(0,V.Z)({},"> ".concat(c,"-nav, > div > ").concat(c,"-nav"),(0,V.Z)({},"".concat(c,"-tab + ").concat(c,"-tab"),{marginTop:"".concat(s,"px")}))),(0,V.Z)(a,"&".concat(c,"-left"),(0,V.Z)({},"> ".concat(c,"-nav, > div > ").concat(c,"-nav"),(i={},(0,V.Z)(i,"".concat(c,"-tab"),{borderRadius:{_skip_check_:!0,value:"".concat(t.borderRadiusLG,"px 0 0 ").concat(t.borderRadiusLG,"px")}}),(0,V.Z)(i,"".concat(c,"-tab-active"),{borderRightColor:{_skip_check_:!0,value:t.colorBgContainer}}),i))),(0,V.Z)(a,"&".concat(c,"-right"),(0,V.Z)({},"> ".concat(c,"-nav, > div > ").concat(c,"-nav"),(o={},(0,V.Z)(o,"".concat(c,"-tab"),{borderRadius:{_skip_check_:!0,value:"0 ".concat(t.borderRadiusLG,"px ").concat(t.borderRadiusLG,"px 0")}}),(0,V.Z)(o,"".concat(c,"-tab-active"),{borderLeftColor:{_skip_check_:!0,value:t.colorBgContainer}}),o))),a))},Am=function(t){var e=t.componentCls,n=t.itemHoverColor,r=t.dropdownEdgeChildVerticalPadding;return(0,V.Z)({},"".concat(e,"-dropdown"),Object.assign(Object.assign({},(0,Qe.Wf)(t)),(0,V.Z)({position:"absolute",top:-9999,left:{_skip_check_:!0,value:-9999},zIndex:t.zIndexPopup,display:"block","&-hidden":{display:"none"}},"".concat(e,"-dropdown-menu"),{maxHeight:t.tabsDropdownHeight,margin:0,padding:"".concat(r,"px 0"),overflowX:"hidden",overflowY:"auto",textAlign:{_skip_check_:!0,value:"left"},listStyleType:"none",backgroundColor:t.colorBgContainer,backgroundClip:"padding-box",borderRadius:t.borderRadiusLG,outline:"none",boxShadow:t.boxShadowSecondary,"&-item":Object.assign(Object.assign({},Qe.vS),{display:"flex",alignItems:"center",minWidth:t.tabsDropdownWidth,margin:0,padding:"".concat(t.paddingXXS,"px ").concat(t.paddingSM,"px"),color:t.colorText,fontWeight:"normal",fontSize:t.fontSize,lineHeight:t.lineHeight,cursor:"pointer",transition:"all ".concat(t.motionDurationSlow),"> span":{flex:1,whiteSpace:"nowrap"},"&-remove":{flex:"none",marginLeft:{_skip_check_:!0,value:t.marginSM},color:t.colorTextDescription,fontSize:t.fontSizeSM,background:"transparent",border:0,cursor:"pointer","&:hover":{color:n}},"&:hover":{background:t.controlItemBgHover},"&-disabled":{"&, &:hover":{color:t.colorTextDisabled,background:"transparent",cursor:"not-allowed"}}})})))},Pm=function(t){var e,n,r,i,o,a,c,l,u=t.componentCls,s=t.margin,f=t.colorBorderSecondary,h=t.horizontalMargin,d=t.verticalItemPadding,p=t.verticalItemMargin;return l={},(0,V.Z)(l,"".concat(u,"-top, ").concat(u,"-bottom"),(0,V.Z)({flexDirection:"column"},"> ".concat(u,"-nav, > div > ").concat(u,"-nav"),(n={margin:h,"&::before":{position:"absolute",right:{_skip_check_:!0,value:0},left:{_skip_check_:!0,value:0},borderBottom:"".concat(t.lineWidth,"px ").concat(t.lineType," ").concat(f),content:"''"}},(0,V.Z)(n,"".concat(u,"-ink-bar"),{height:t.lineWidthBold,"&-animated":{transition:"width ".concat(t.motionDurationSlow,", left ").concat(t.motionDurationSlow,",\n right ").concat(t.motionDurationSlow)}}),(0,V.Z)(n,"".concat(u,"-nav-wrap"),(e={"&::before, &::after":{top:0,bottom:0,width:t.controlHeight},"&::before":{left:{_skip_check_:!0,value:0},boxShadow:t.boxShadowTabsOverflowLeft},"&::after":{right:{_skip_check_:!0,value:0},boxShadow:t.boxShadowTabsOverflowRight}},(0,V.Z)(e,"&".concat(u,"-nav-wrap-ping-left::before"),{opacity:1}),(0,V.Z)(e,"&".concat(u,"-nav-wrap-ping-right::after"),{opacity:1}),e)),n))),(0,V.Z)(l,"".concat(u,"-top"),(0,V.Z)({},"> ".concat(u,"-nav,\n > div > ").concat(u,"-nav"),(0,V.Z)({"&::before":{bottom:0}},"".concat(u,"-ink-bar"),{bottom:0}))),(0,V.Z)(l,"".concat(u,"-bottom"),(r={},(0,V.Z)(r,"> ".concat(u,"-nav, > div > ").concat(u,"-nav"),(0,V.Z)({order:1,marginTop:"".concat(s,"px"),marginBottom:0,"&::before":{top:0}},"".concat(u,"-ink-bar"),{top:0})),(0,V.Z)(r,"> ".concat(u,"-content-holder, > div > ").concat(u,"-content-holder"),{order:0}),r)),(0,V.Z)(l,"".concat(u,"-left, ").concat(u,"-right"),(0,V.Z)({},"> ".concat(u,"-nav, > div > ").concat(u,"-nav"),(o={flexDirection:"column",minWidth:1.25*t.controlHeight},(0,V.Z)(o,"".concat(u,"-tab"),{padding:d,textAlign:"center"}),(0,V.Z)(o,"".concat(u,"-tab + ").concat(u,"-tab"),{margin:p}),(0,V.Z)(o,"".concat(u,"-nav-wrap"),(i={flexDirection:"column","&::before, &::after":{right:{_skip_check_:!0,value:0},left:{_skip_check_:!0,value:0},height:t.controlHeight},"&::before":{top:0,boxShadow:t.boxShadowTabsOverflowTop},"&::after":{bottom:0,boxShadow:t.boxShadowTabsOverflowBottom}},(0,V.Z)(i,"&".concat(u,"-nav-wrap-ping-top::before"),{opacity:1}),(0,V.Z)(i,"&".concat(u,"-nav-wrap-ping-bottom::after"),{opacity:1}),i)),(0,V.Z)(o,"".concat(u,"-ink-bar"),{width:t.lineWidthBold,"&-animated":{transition:"height ".concat(t.motionDurationSlow,", top ").concat(t.motionDurationSlow)}}),(0,V.Z)(o,"".concat(u,"-nav-list, ").concat(u,"-nav-operations"),{flex:"1 0 auto",flexDirection:"column"}),o))),(0,V.Z)(l,"".concat(u,"-left"),(a={},(0,V.Z)(a,"> ".concat(u,"-nav, > div > ").concat(u,"-nav"),(0,V.Z)({},"".concat(u,"-ink-bar"),{right:{_skip_check_:!0,value:0}})),(0,V.Z)(a,"> ".concat(u,"-content-holder, > div > ").concat(u,"-content-holder"),(0,V.Z)({marginLeft:{_skip_check_:!0,value:"-".concat(t.lineWidth,"px")},borderLeft:{_skip_check_:!0,value:"".concat(t.lineWidth,"px ").concat(t.lineType," ").concat(t.colorBorder)}},"> ".concat(u,"-content > ").concat(u,"-tabpane"),{paddingLeft:{_skip_check_:!0,value:t.paddingLG}})),a)),(0,V.Z)(l,"".concat(u,"-right"),(c={},(0,V.Z)(c,"> ".concat(u,"-nav, > div > ").concat(u,"-nav"),(0,V.Z)({order:1},"".concat(u,"-ink-bar"),{left:{_skip_check_:!0,value:0}})),(0,V.Z)(c,"> ".concat(u,"-content-holder, > div > ").concat(u,"-content-holder"),(0,V.Z)({order:0,marginRight:{_skip_check_:!0,value:-t.lineWidth},borderRight:{_skip_check_:!0,value:"".concat(t.lineWidth,"px ").concat(t.lineType," ").concat(t.colorBorder)}},"> ".concat(u,"-content > ").concat(u,"-tabpane"),{paddingRight:{_skip_check_:!0,value:t.paddingLG}})),c)),l},_m=function(t){var e,n,r,i=t.componentCls,o=t.cardPaddingSM,a=t.cardPaddingLG,c=t.horizontalItemPaddingSM,l=t.horizontalItemPaddingLG;return r={},(0,V.Z)(r,i,{"&-small":(0,V.Z)({},"> ".concat(i,"-nav"),(0,V.Z)({},"".concat(i,"-tab"),{padding:c,fontSize:t.titleFontSizeSM})),"&-large":(0,V.Z)({},"> ".concat(i,"-nav"),(0,V.Z)({},"".concat(i,"-tab"),{padding:l,fontSize:t.titleFontSizeLG}))}),(0,V.Z)(r,"".concat(i,"-card"),(n={},(0,V.Z)(n,"&".concat(i,"-small"),(e={},(0,V.Z)(e,"> ".concat(i,"-nav"),(0,V.Z)({},"".concat(i,"-tab"),{padding:o})),(0,V.Z)(e,"&".concat(i,"-bottom"),(0,V.Z)({},"> ".concat(i,"-nav ").concat(i,"-tab"),{borderRadius:"0 0 ".concat(t.borderRadius,"px ").concat(t.borderRadius,"px")})),(0,V.Z)(e,"&".concat(i,"-top"),(0,V.Z)({},"> ".concat(i,"-nav ").concat(i,"-tab"),{borderRadius:"".concat(t.borderRadius,"px ").concat(t.borderRadius,"px 0 0")})),(0,V.Z)(e,"&".concat(i,"-right"),(0,V.Z)({},"> ".concat(i,"-nav ").concat(i,"-tab"),{borderRadius:{_skip_check_:!0,value:"0 ".concat(t.borderRadius,"px ").concat(t.borderRadius,"px 0")}})),(0,V.Z)(e,"&".concat(i,"-left"),(0,V.Z)({},"> ".concat(i,"-nav ").concat(i,"-tab"),{borderRadius:{_skip_check_:!0,value:"".concat(t.borderRadius,"px 0 0 ").concat(t.borderRadius,"px")}})),e)),(0,V.Z)(n,"&".concat(i,"-large"),(0,V.Z)({},"> ".concat(i,"-nav"),(0,V.Z)({},"".concat(i,"-tab"),{padding:a}))),n)),r},Dm=function(t){var e,n,r,i,o,a=t.componentCls,c=t.tabsHorizontalItemMarginRTL,l=t.iconCls,u=t.cardGutter,s="".concat(a,"-rtl");return o={},(0,V.Z)(o,s,(i={direction:"rtl"},(0,V.Z)(i,"".concat(a,"-nav"),(0,V.Z)({},"".concat(a,"-tab"),(e={margin:{_skip_check_:!0,value:c}},(0,V.Z)(e,"".concat(a,"-tab:last-of-type"),{marginLeft:{_skip_check_:!0,value:0}}),(0,V.Z)(e,l,{marginRight:{_skip_check_:!0,value:0},marginLeft:{_skip_check_:!0,value:"".concat(t.marginSM,"px")}}),(0,V.Z)(e,"".concat(a,"-tab-remove"),(0,V.Z)({marginRight:{_skip_check_:!0,value:"".concat(t.marginXS,"px")},marginLeft:{_skip_check_:!0,value:"-".concat(t.marginXXS,"px")}},l,{margin:0})),e))),(0,V.Z)(i,"&".concat(a,"-left"),(n={},(0,V.Z)(n,"> ".concat(a,"-nav"),{order:1}),(0,V.Z)(n,"> ".concat(a,"-content-holder"),{order:0}),n)),(0,V.Z)(i,"&".concat(a,"-right"),(r={},(0,V.Z)(r,"> ".concat(a,"-nav"),{order:0}),(0,V.Z)(r,"> ".concat(a,"-content-holder"),{order:1}),r)),(0,V.Z)(i,"&".concat(a,"-card").concat(a,"-top, &").concat(a,"-card").concat(a,"-bottom"),(0,V.Z)({},"> ".concat(a,"-nav, > div > ").concat(a,"-nav"),(0,V.Z)({},"".concat(a,"-tab + ").concat(a,"-tab"),{marginRight:{_skip_check_:!0,value:u},marginLeft:{_skip_check_:!0,value:0}}))),i)),(0,V.Z)(o,"".concat(a,"-dropdown-rtl"),{direction:"rtl"}),(0,V.Z)(o,"".concat(a,"-menu-item"),(0,V.Z)({},"".concat(a,"-dropdown-rtl"),{textAlign:{_skip_check_:!0,value:"right"}})),o},Tm=function(t){var e,n,r,i,o=t.componentCls,a=t.tabsCardPadding,c=t.cardHeight,l=t.cardGutter,u=t.itemHoverColor,s=t.itemActiveColor,f=t.colorBorderSecondary;return i={},(0,V.Z)(i,o,Object.assign(Object.assign(Object.assign(Object.assign({},(0,Qe.Wf)(t)),(n={display:"flex"},(0,V.Z)(n,"> ".concat(o,"-nav, > div > ").concat(o,"-nav"),(e={position:"relative",display:"flex",flex:"none",alignItems:"center"},(0,V.Z)(e,"".concat(o,"-nav-wrap"),{position:"relative",display:"flex",flex:"auto",alignSelf:"stretch",overflow:"hidden",whiteSpace:"nowrap",transform:"translate(0)","&::before, &::after":{position:"absolute",zIndex:1,opacity:0,transition:"opacity ".concat(t.motionDurationSlow),content:"''",pointerEvents:"none"}}),(0,V.Z)(e,"".concat(o,"-nav-list"),{position:"relative",display:"flex",transition:"opacity ".concat(t.motionDurationSlow)}),(0,V.Z)(e,"".concat(o,"-nav-operations"),{display:"flex",alignSelf:"stretch"}),(0,V.Z)(e,"".concat(o,"-nav-operations-hidden"),{position:"absolute",visibility:"hidden",pointerEvents:"none"}),(0,V.Z)(e,"".concat(o,"-nav-more"),{position:"relative",padding:a,background:"transparent",border:0,color:t.colorText,"&::after":{position:"absolute",right:{_skip_check_:!0,value:0},bottom:0,left:{_skip_check_:!0,value:0},height:t.controlHeightLG/8,transform:"translateY(100%)",content:"''"}}),(0,V.Z)(e,"".concat(o,"-nav-add"),Object.assign({minWidth:c,marginLeft:{_skip_check_:!0,value:l},padding:"0 ".concat(t.paddingXS,"px"),background:"transparent",border:"".concat(t.lineWidth,"px ").concat(t.lineType," ").concat(f),borderRadius:"".concat(t.borderRadiusLG,"px ").concat(t.borderRadiusLG,"px 0 0"),outline:"none",cursor:"pointer",color:t.colorText,transition:"all ".concat(t.motionDurationSlow," ").concat(t.motionEaseInOut),"&:hover":{color:u},"&:active, &:focus:not(:focus-visible)":{color:s}},(0,Qe.Qy)(t))),e)),(0,V.Z)(n,"".concat(o,"-extra-content"),{flex:"none"}),(0,V.Z)(n,"".concat(o,"-ink-bar"),{position:"absolute",background:t.inkBarColor,pointerEvents:"none"}),n)),function(t){var e,n,r=t.componentCls,i=t.itemActiveColor,o=t.itemHoverColor,a=t.iconCls,c=t.tabsHorizontalItemMargin,l=t.horizontalItemPadding,u=t.itemSelectedColor,s="".concat(r,"-tab");return n={},(0,V.Z)(n,s,(e={position:"relative",display:"inline-flex",alignItems:"center",padding:l,fontSize:t.titleFontSize,background:"transparent",border:0,outline:"none",cursor:"pointer","&-btn, &-remove":Object.assign({"&:focus:not(:focus-visible), &:active":{color:i}},(0,Qe.Qy)(t)),"&-btn":{outline:"none",transition:"all 0.3s"},"&-remove":{flex:"none",marginRight:{_skip_check_:!0,value:-t.marginXXS},marginLeft:{_skip_check_:!0,value:t.marginXS},color:t.colorTextDescription,fontSize:t.fontSizeSM,background:"transparent",border:"none",outline:"none",cursor:"pointer",transition:"all ".concat(t.motionDurationSlow),"&:hover":{color:t.colorTextHeading}},"&:hover":{color:o}},(0,V.Z)(e,"&".concat(s,"-active ").concat(s,"-btn"),{color:u,textShadow:t.tabsActiveTextShadow}),(0,V.Z)(e,"&".concat(s,"-disabled"),{color:t.colorTextDisabled,cursor:"not-allowed"}),(0,V.Z)(e,"&".concat(s,"-disabled ").concat(s,"-btn, &").concat(s,"-disabled ").concat(r,"-remove"),{"&:focus, &:active":{color:t.colorTextDisabled}}),(0,V.Z)(e,"& ".concat(s,"-remove ").concat(a),{margin:0}),(0,V.Z)(e,a,{marginRight:{_skip_check_:!0,value:t.marginSM}}),e)),(0,V.Z)(n,"".concat(s," + ").concat(s),{margin:{_skip_check_:!0,value:c}}),n}(t)),(r={},(0,V.Z)(r,"".concat(o,"-content"),{position:"relative",width:"100%"}),(0,V.Z)(r,"".concat(o,"-content-holder"),{flex:"auto",minWidth:0,minHeight:0}),(0,V.Z)(r,"".concat(o,"-tabpane"),{outline:"none","&-hidden":{display:"none"}}),r))),(0,V.Z)(i,"".concat(o,"-centered"),(0,V.Z)({},"> ".concat(o,"-nav, > div > ").concat(o,"-nav"),(0,V.Z)({},"".concat(o,"-nav-wrap"),(0,V.Z)({},"&:not([class*='".concat(o,"-nav-wrap-ping'])"),{justifyContent:"center"})))),i},Zm=(0,se.Z)("Tabs",(function(t){var e=(0,nn.TS)(t,{tabsCardPadding:t.cardPadding||"".concat((t.cardHeight-Math.round(t.fontSize*t.lineHeight))/2-t.lineWidth,"px ").concat(t.padding,"px"),dropdownEdgeChildVerticalPadding:t.paddingXXS,tabsActiveTextShadow:"0 0 0.25px currentcolor",tabsDropdownHeight:200,tabsDropdownWidth:120,tabsHorizontalItemMargin:"0 0 0 ".concat(t.horizontalItemGutter,"px"),tabsHorizontalItemMarginRTL:"0 0 0 ".concat(t.horizontalItemGutter,"px")});return[_m(e),Dm(e),Pm(e),Am(e),Mm(e),Tm(e),Em(e)]}),(function(t){var e=t.controlHeightLG;return{zIndexPopup:t.zIndexPopupBase+50,cardBg:t.colorFillAlter,cardHeight:e,cardPadding:"",cardPaddingSM:"".concat(1.5*t.paddingXXS,"px ").concat(t.padding,"px"),cardPaddingLG:"".concat(t.paddingXS,"px ").concat(t.padding,"px ").concat(1.5*t.paddingXXS,"px"),titleFontSize:t.fontSize,titleFontSizeLG:t.fontSizeLG,titleFontSizeSM:t.fontSize,inkBarColor:t.colorPrimary,horizontalMargin:"0 0 ".concat(t.margin,"px 0"),horizontalItemGutter:32,horizontalItemMargin:"",horizontalItemMarginRTL:"",horizontalItemPadding:"".concat(t.paddingSM,"px 0"),horizontalItemPaddingSM:"".concat(t.paddingXS,"px 0"),horizontalItemPaddingLG:"".concat(t.padding,"px 0"),verticalItemPadding:"".concat(t.paddingXS,"px ").concat(t.paddingLG,"px"),verticalItemMargin:"".concat(t.margin,"px 0 0 0"),itemSelectedColor:t.colorPrimary,itemHoverColor:t.colorPrimaryHover,itemActiveColor:t.colorPrimaryActive,cardGutter:t.marginXXS/2}})),Fm=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(t);i1&&void 0!==arguments[1]?arguments[1]:{inkBar:!0,tabPane:!1};return(e=!1===n?{inkBar:!1,tabPane:!1}:!0===n?{inkBar:!0,tabPane:!0}:Object.assign({inkBar:!0},"object"==typeof n?n:{})).tabPane&&(e.tabPaneMotion=Object.assign(Object.assign({},Cm),{motionName:(0,oe.m)(t,"switch")})),e}(O,p),F=(0,Fe.Z)(a),j=Object.assign(Object.assign({},null==S?void 0:S.style),v);return A(Z.createElement(Sm,Object.assign({direction:w,getPopupContainer:C,moreTransitionName:"".concat(_,"-slide-up")},g,{items:D,className:K()((e={},(0,V.Z)(e,"".concat(O,"-").concat(F),F),(0,V.Z)(e,"".concat(O,"-card"),["card","editable-card"].includes(r)),(0,V.Z)(e,"".concat(O,"-editable-card"),"editable-card"===r),(0,V.Z)(e,"".concat(O,"-centered"),u),e),null==S?void 0:S.className,i,o,P),popupClassName:K()(f,P),style:j,editable:n,moreIcon:b,prefixCls:O,animated:T})))};jm.TabPane=km;var Im=jm,Rm=n(89907),Lm=n(5626),Nm=n(32834),Bm=n(70556),zm=n(27358),Um=n(49955),Hm={};function Wm(t,e){void 0===t&&(t=Hm),void 0===e&&(e=Hm);var n=Object.keys(t),r=Object.keys(e);return t===e||n.length===r.length&&n.every((function(n){return t[n]===e[n]}))}function Vm(t,e,n,r,i,o,a){try{var c=t[o](a),l=c.value}catch(u){return void n(u)}c.done?e(l):Promise.resolve(l).then(r,i)}function Gm(t){return function(){var e=this,n=arguments;return new Promise((function(r,i){var o=t.apply(e,n);function a(t){Vm(o,r,i,a,c,"next",t)}function c(t){Vm(o,r,i,a,c,"throw",t)}a(void 0)}))}}var Xm=n(53994),qm=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])},t(e,n)};return function(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),Ym=Object.prototype.hasOwnProperty;function $m(t,e){return Ym.call(t,e)}function Km(t){if(Array.isArray(t)){for(var e=new Array(t.length),n=0;n=48&&e<=57))return!1;n++}return!0}function ty(t){return-1===t.indexOf("/")&&-1===t.indexOf("~")?t:t.replace(/~/g,"~0").replace(/\//g,"~1")}function ey(t){return t.replace(/~1/g,"/").replace(/~0/g,"~")}function ny(t){if(void 0===t)return!0;if(t)if(Array.isArray(t)){for(var e=0,n=t.length;e0&&"constructor"==c[u-1]))throw new TypeError("JSON-Patch: modifying `__proto__` or `constructor/prototype` prop is banned for security reasons, if this was on purpose, please set `banPrototypeModifications` flag false and pass it to this function. More info in fast-json-patch README");if(n&&void 0===f&&(void 0===l[h]?f=c.slice(0,u).join("/"):u==s-1&&(f=e.path),void 0!==f&&d(e,0,t,f)),u++,Array.isArray(l)){if("-"===h)h=l.length;else{if(n&&!Qm(h))throw new oy("Expected an unsigned base-10 integer value, making the new referenced value the array element with the zero-based index","OPERATION_PATH_ILLEGAL_ARRAY_INDEX",o,e,t);Qm(h)&&(h=~~h)}if(u>=s){if(n&&"add"===e.op&&h>l.length)throw new oy("The specified index MUST NOT be greater than the number of elements in the array","OPERATION_VALUE_OUT_OF_BOUNDS",o,e,t);if(!1===(a=ly[e.op].call(e,l,h,t)).test)throw new oy("Test operation failed","TEST_OPERATION_FAILED",o,e,t);return a}}else if(u>=s){if(!1===(a=cy[e.op].call(e,l,h,t)).test)throw new oy("Test operation failed","TEST_OPERATION_FAILED",o,e,t);return a}if(l=l[h],n&&u0)throw new oy('Operation `path` property must start with "/"',"OPERATION_PATH_INVALID",e,t,n);if(("move"===t.op||"copy"===t.op)&&"string"!=typeof t.from)throw new oy("Operation `from` property is not present (applicable in `move` and `copy` operations)","OPERATION_FROM_REQUIRED",e,t,n);if(("add"===t.op||"replace"===t.op||"test"===t.op)&&void 0===t.value)throw new oy("Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)","OPERATION_VALUE_REQUIRED",e,t,n);if(("add"===t.op||"replace"===t.op||"test"===t.op)&&ny(t.value))throw new oy("Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)","OPERATION_VALUE_CANNOT_CONTAIN_UNDEFINED",e,t,n);if(n)if("add"==t.op){var i=t.path.split("/").length,o=r.split("/").length;if(i!==o+1&&i!==o)throw new oy("Cannot perform an `add` operation at the desired path","OPERATION_PATH_CANNOT_ADD",e,t,n)}else if("replace"===t.op||"remove"===t.op||"_get"===t.op){if(t.path!==r)throw new oy("Cannot perform the operation at a path that does not exist","OPERATION_PATH_UNRESOLVABLE",e,t,n)}else if("move"===t.op||"copy"===t.op){var a=py([{op:"_get",path:t.from,value:void 0}],n);if(a&&"OPERATION_PATH_UNRESOLVABLE"===a.name)throw new oy("Cannot perform the operation from a path that does not exist","OPERATION_FROM_UNRESOLVABLE",e,t,n)}}function py(t,e,n){try{if(!Array.isArray(t))throw new oy("Patch sequence must be an array","SEQUENCE_NOT_AN_ARRAY");if(e)fy(Jm(e),Jm(t),n||!0);else{n=n||dy;for(var r=0;r0&&(t.patches=[],t.callback&&t.callback(r)),r}function Sy(t,e,n,r,i){if(e!==t){"function"==typeof e.toJSON&&(e=e.toJSON());for(var o=Km(e),a=Km(t),c=!1,l=a.length-1;l>=0;l--){var u=t[f=a[l]];if(!$m(e,f)||void 0===e[f]&&void 0!==u&&!1===Array.isArray(e))Array.isArray(t)===Array.isArray(e)?(i&&n.push({op:"test",path:r+"/"+ty(f),value:Jm(u)}),n.push({op:"remove",path:r+"/"+ty(f)}),c=!0):(i&&n.push({op:"test",path:r,value:t}),n.push({op:"replace",path:r,value:e}),!0);else{var s=e[f];"object"==typeof u&&null!=u&&"object"==typeof s&&null!=s&&Array.isArray(u)===Array.isArray(s)?Sy(u,s,n,r+"/"+ty(f),i):u!==s&&(!0,i&&n.push({op:"test",path:r+"/"+ty(f),value:Jm(u)}),n.push({op:"replace",path:r+"/"+ty(f),value:Jm(s)}))}}if(c||o.length!=a.length)for(l=0;le&&u(),c=e=n+1):"]"===r&&(c||Ty("Access path missing open bracket: "+t),c>0&&u(),c=0,e=n+1):n>e?u():e=n+1}return c&&Ty("Access path missing closing bracket: "+t),a&&Ty("Access path missing closing quote: "+t),n>e&&(n++,u()),i}function Fy(t,e,n){var r=Zy(t);return t=1===r.length?r[0]:t,Ey((n&&n.get||Py)(r),[t],e||t)}var jy=Fy("id"),Iy=Ey((function(t){return t}),[],"identity"),Ry=Ey((function(){return 0}),[],"zero"),Ly=Ey((function(){return 1}),[],"one"),Ny=Ey((function(){return!0}),[],"true"),By=Ey((function(){return!1}),[],"false");function zy(t,e,n){var r=[e].concat([].slice.call(n));console[t].apply(console,r)}var Uy=0,Hy=1,Wy=2,Vy=3,Gy=4;function Xy(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:zy,r=t||Uy;return{level:function(t){return arguments.length?(r=+t,this):r},error:function(){return r>=Hy&&n(e||"error","ERROR",arguments),this},warn:function(){return r>=Wy&&n(e||"warn","WARN",arguments),this},info:function(){return r>=Vy&&n(e||"log","INFO",arguments),this},debug:function(){return r>=Gy&&n(e||"log","DEBUG",arguments),this}}}var qy=Array.isArray;function Yy(t){return t===Object(t)}var $y=function(t){return"__proto__"!==t};function Ky(){for(var t=arguments.length,e=new Array(t),n=0;n=n-e?[e,n]:[i=Math.min(Math.max(i,e),n-r),i+r]}function wb(t){return"function"==typeof t}var Sb="descending";function kb(t,e,n){n=n||{},e=bb(e)||[];var r=[],i=[],o={},a=n.comparator||Ob;return bb(t).forEach((function(t,a){null!=t&&(r.push(e[a]===Sb?-1:1),i.push(t=wb(t)?t:Fy(t,null,n)),(Ay(t)||[]).forEach((function(t){return o[t]=1})))})),0===i.length?null:Ey(a(i,r),Object.keys(o))}var Cb=function(t,e){return(te||null==e)&&null!=t?1:(e=e instanceof Date?+e:e,(t=t instanceof Date?+t:t)!==t&&e==e?-1:e!=e&&t==t?1:0)},Ob=function(t,e){return 1===t.length?Eb(t[0],e[0]):Mb(t,e,t.length)},Eb=function(t,e){return function(n,r){return Cb(t(n),t(r))*e}},Mb=function(t,e,n){return e.push(0),function(r,i){for(var o,a=0,c=-1;0===a&&++co&&(o=r))}else{for(r=e(t[a]);ao&&(o=r))}return[i,o]}function Tb(t,e){var n,r,i,o,a,c=t.length,l=-1;if(null==e){for(;++l=r){n=i=r;break}if(l===c)return[-1,-1];for(o=a=l;++lr&&(n=r,o=l),i=r){n=i=r;break}if(l===c)return[-1,-1];for(o=a=l;++lr&&(n=r,o=l),ia&&(i=o,o=a,a=i),r=void 0===r||r,((n=void 0===n||n)?o<=t:ot&&(n=e,e={},r=1),e[i]=o};return i(),{clear:i,has:function(t){return Fb(e,t)||Fb(n,t)},get:function(t){return Fb(e,t)?e[t]:Fb(n,t)?o(t,n[t]):void 0},set:function(t,n){return Fb(e,t)?e[t]=n:o(t,n)}}}function $b(t,e,n,r){var i=e.length,o=n.length;if(!o)return e;if(!i)return n;for(var a=r||new e.constructor(i+o),c=0,l=0,u=0;c0?n[l++]:e[c++];for(;c=0;)n+=t;return n}function Jb(t,e,n,r){var i=n||" ",o=t+"",a=e-o.length;return a<=0?o:"left"===r?Kb(i,a)+o:"center"===r?Kb(i,~~(a/2))+o+Kb(i,Math.ceil(a/2)):o+Kb(i,a)}function Qb(t){return t&&tb(t)-t[0]||0}function tx(t){return qy(t)?"["+t.map(tx)+"]":Yy(t)||Vb(t)?JSON.stringify(t).replace("\u2028","\\u2028").replace("\u2029","\\u2029"):t}function ex(t){return null==t||""===t?null:!(!t||"false"===t||"0"===t)&&!!t}var nx=function(t){return Hb(t)||zb(t)?t:Date.parse(t)};function rx(t,e){return e=e||nx,null==t||""===t?null:e(t)}function ix(t){return null==t||""===t?null:t+""}function ox(t){for(var e={},n=t.length,r=0;r9999?"+"+vx(e,6):vx(e,4))+"-"+vx(t.getUTCMonth()+1,2)+"-"+vx(t.getUTCDate(),2)+(o?"T"+vx(n,2)+":"+vx(r,2)+":"+vx(i,2)+"."+vx(o,3)+"Z":i?"T"+vx(n,2)+":"+vx(r,2)+":"+vx(i,2)+"Z":r||n?"T"+vx(n,2)+":"+vx(r,2)+"Z":"")}function mx(t){var e=new RegExp('["'+t+"\n\r]"),n=t.charCodeAt(0);function r(t,e){var r,i=[],o=t.length,a=0,c=0,l=o<=0,u=!1;function s(){if(l)return ux;if(u)return u=!1,lx;var e,r,i=a;if(t.charCodeAt(i)===sx){for(;a++=o?l=!0:(r=t.charCodeAt(a++))===fx?u=!0:r===hx&&(u=!0,t.charCodeAt(a)===fx&&++a),t.slice(i+1,e-1).replace(/""/g,'"')}for(;a1)r=function(t,e,n){var r,i=[],o=[];function a(t){var e=t<0?~t:t;(o[e]||(o[e]=[])).push({i:t,g:r})}function c(t){t.forEach(a)}function l(t){t.forEach(c)}function u(t){t.forEach(l)}function s(t){switch(r=t,t.type){case"GeometryCollection":t.geometries.forEach(s);break;case"LineString":c(t.arcs);break;case"MultiLineString":case"Polygon":l(t.arcs);break;case"MultiPolygon":u(t.arcs)}}return s(e),o.forEach(null==n?function(t){i.push(t[0].i)}:function(t){n(t[0].g,t[t.length-1].g)&&i.push(t[0].i)}),i}(0,e,n);else for(i=0,r=new Array(o=t.arcs.length);i=Ox?10:l>=Ex?5:l>=Mx?2:1;return c<0?(o=Math.pow(10,-c)/u,(r=Math.round(t*o))/oe&&--i,o=-o):(o=Math.pow(10,c)*u,(r=Math.round(t/o))*oe&&--i),i0))return[];if((t=+t)===(e=+e))return[t];var r=e=a))return[];var u=c-a+1,s=new Array(u);if(r)if(l<0)for(var f=0;f=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Fx(t){if(!(e=Zx.exec(t)))throw new Error("invalid format: "+t);var e;return new jx({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}function jx(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function Ix(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var n,r=t.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+t.slice(n+1)]}function Rx(t){return(t=Ix(Math.abs(t)))?t[1]:NaN}function Lx(t,e){var n=Ix(t,e);if(!n)return t+"";var r=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}Fx.prototype=jx.prototype,jx.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var Nx={"%":function(t,e){return(100*t).toFixed(e)},b:function(t){return Math.round(t).toString(2)},c:function(t){return t+""},d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)},e:function(t,e){return t.toExponential(e)},f:function(t,e){return t.toFixed(e)},g:function(t,e){return t.toPrecision(e)},o:function(t){return Math.round(t).toString(8)},p:function(t,e){return Lx(100*t,e)},r:Lx,s:function(t,e){var n=Ix(t,e);if(!n)return t+"";var r=n[0],i=n[1],o=i-(Tx=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,a=r.length;return o===a?r:o>a?r+new Array(o-a+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+Ix(t,Math.max(0,e+o-1))[0]},X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}};function Bx(t){return t}var zx,Ux,Hx,Wx=Array.prototype.map,Vx=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function Gx(t){var e,n,r=void 0===t.grouping||void 0===t.thousands?Bx:(e=Wx.call(t.grouping,Number),n=t.thousands+"",function(t,r){for(var i=t.length,o=[],a=0,c=e[0],l=0;i>0&&c>0&&(l+c+1>r&&(c=Math.max(1,r-l)),o.push(t.substring(i-=c,i+c)),!((l+=c+1)>r));)c=e[a=(a+1)%e.length];return o.reverse().join(n)}),i=void 0===t.currency?"":t.currency[0]+"",o=void 0===t.currency?"":t.currency[1]+"",a=void 0===t.decimal?".":t.decimal+"",c=void 0===t.numerals?Bx:function(t){return function(e){return e.replace(/[0-9]/g,(function(e){return t[+e]}))}}(Wx.call(t.numerals,String)),l=void 0===t.percent?"%":t.percent+"",u=void 0===t.minus?"−":t.minus+"",s=void 0===t.nan?"NaN":t.nan+"";function f(t){var e=(t=Fx(t)).fill,n=t.align,f=t.sign,h=t.symbol,d=t.zero,p=t.width,v=t.comma,g=t.precision,m=t.trim,y=t.type;"n"===y?(v=!0,y="g"):Nx[y]||(void 0===g&&(g=12),m=!0,y="g"),(d||"0"===e&&"="===n)&&(d=!0,e="0",n="=");var b="$"===h?i:"#"===h&&/[boxX]/.test(y)?"0"+y.toLowerCase():"",x="$"===h?o:/[%p]/.test(y)?l:"",w=Nx[y],S=/[defgprs%]/.test(y);function k(t){var i,o,l,h=b,k=x;if("c"===y)k=w(t)+k,t="";else{var C=(t=+t)<0||1/t<0;if(t=isNaN(t)?s:w(Math.abs(t),g),m&&(t=function(t){t:for(var e,n=t.length,r=1,i=-1;r0&&(i=0)}return i>0?t.slice(0,i)+t.slice(e+1):t}(t)),C&&0==+t&&"+"!==f&&(C=!1),h=(C?"("===f?f:u:"-"===f||"("===f?"":f)+h,k=("s"===y?Vx[8+Tx/3]:"")+k+(C&&"("===f?")":""),S)for(i=-1,o=t.length;++i(l=t.charCodeAt(i))||l>57){k=(46===l?a+t.slice(i+1):t.slice(i))+k,t=t.slice(0,i);break}}v&&!d&&(t=r(t,1/0));var O=h.length+t.length+k.length,E=O>1)+h+t+k+E.slice(O);break;default:t=E+h+t+k}return c(t)}return g=void 0===g?6:/[gprs]/.test(y)?Math.max(1,Math.min(21,g)):Math.max(0,Math.min(20,g)),k.toString=function(){return t+""},k}return{format:f,formatPrefix:function(t,e){var n=f(((t=Fx(t)).type="f",t)),r=3*Math.max(-8,Math.min(8,Math.floor(Rx(e)/3))),i=Math.pow(10,-r),o=Vx[8+r/3];return function(t){return n(i*t)+o}}}}!function(t){zx=Gx(t),Ux=zx.format,Hx=zx.formatPrefix}({thousands:",",grouping:[3],currency:["$",""]});var Xx=new Date,qx=new Date;function Yx(t,e,n,r){function i(e){return t(e=0===arguments.length?new Date:new Date(+e)),e}return i.floor=function(e){return t(e=new Date(+e)),e},i.ceil=function(n){return t(n=new Date(n-1)),e(n,1),t(n),n},i.round=function(t){var e=i(t),n=i.ceil(t);return t-e0))return c;do{c.push(a=new Date(+n)),e(n,o),t(n)}while(a=e)for(;t(e),!n(e);)e.setTime(e-1)}),(function(t,r){if(t>=t)if(r<0)for(;++r<=0;)for(;e(t,-1),!n(t););else for(;--r>=0;)for(;e(t,1),!n(t););}))},n&&(i.count=function(e,r){return Xx.setTime(+e),qx.setTime(+r),t(Xx),t(qx),Math.floor(n(Xx,qx))},i.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?i.filter(r?function(e){return r(e)%t==0}:function(e){return i.count(0,e)%t==0}):i:null}),i}var $x=1e3,Kx=6e4,Jx=36e5,Qx=864e5,tw=6048e5,ew=2592e6,nw=31536e6,rw=Yx((function(t){return t.setHours(0,0,0,0)}),(function(t,e){return t.setDate(t.getDate()+e)}),(function(t,e){return(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Kx)/Qx}),(function(t){return t.getDate()-1})),iw=(rw.range,Yx((function(t){t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+e)}),(function(t,e){return(e-t)/Qx}),(function(t){return t.getUTCDate()-1}))),ow=(iw.range,Yx((function(t){t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+e)}),(function(t,e){return(e-t)/Qx}),(function(t){return Math.floor(t/Qx)})));ow.range;function aw(t){return Yx((function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)}),(function(t,e){t.setDate(t.getDate()+7*e)}),(function(t,e){return(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Kx)/tw}))}var cw=aw(0),lw=aw(1),uw=aw(2),sw=aw(3),fw=aw(4),hw=aw(5),dw=aw(6);cw.range,lw.range,uw.range,sw.range,fw.range,hw.range,dw.range;function pw(t){return Yx((function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+7*e)}),(function(t,e){return(e-t)/tw}))}var vw=pw(0),gw=pw(1),mw=pw(2),yw=pw(3),bw=pw(4),xw=pw(5),ww=pw(6),Sw=(vw.range,gw.range,mw.range,yw.range,bw.range,xw.range,ww.range,Yx((function(t){t.setMonth(0,1),t.setHours(0,0,0,0)}),(function(t,e){t.setFullYear(t.getFullYear()+e)}),(function(t,e){return e.getFullYear()-t.getFullYear()}),(function(t){return t.getFullYear()})));Sw.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Yx((function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)}),(function(e,n){e.setFullYear(e.getFullYear()+n*t)})):null};Sw.range;var kw=Yx((function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)}),(function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()}),(function(t){return t.getUTCFullYear()}));kw.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Yx((function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),(function(e,n){e.setUTCFullYear(e.getUTCFullYear()+n*t)})):null};kw.range;var Cw=Yx((function(t){t.setDate(1),t.setHours(0,0,0,0)}),(function(t,e){t.setMonth(t.getMonth()+e)}),(function(t,e){return e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear())}),(function(t){return t.getMonth()})),Ow=(Cw.range,Yx((function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCMonth(t.getUTCMonth()+e)}),(function(t,e){return e.getUTCMonth()-t.getUTCMonth()+12*(e.getUTCFullYear()-t.getUTCFullYear())}),(function(t){return t.getUTCMonth()}))),Ew=(Ow.range,Yx((function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*$x-t.getMinutes()*Kx)}),(function(t,e){t.setTime(+t+e*Jx)}),(function(t,e){return(e-t)/Jx}),(function(t){return t.getHours()}))),Mw=(Ew.range,Yx((function(t){t.setUTCMinutes(0,0,0)}),(function(t,e){t.setTime(+t+e*Jx)}),(function(t,e){return(e-t)/Jx}),(function(t){return t.getUTCHours()}))),Aw=(Mw.range,Yx((function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*$x)}),(function(t,e){t.setTime(+t+e*Kx)}),(function(t,e){return(e-t)/Kx}),(function(t){return t.getMinutes()}))),Pw=(Aw.range,Yx((function(t){t.setUTCSeconds(0,0)}),(function(t,e){t.setTime(+t+e*Kx)}),(function(t,e){return(e-t)/Kx}),(function(t){return t.getUTCMinutes()}))),_w=(Pw.range,Yx((function(t){t.setTime(t-t.getMilliseconds())}),(function(t,e){t.setTime(+t+e*$x)}),(function(t,e){return(e-t)/$x}),(function(t){return t.getUTCSeconds()}))),Dw=(_w.range,Yx((function(){}),(function(t,e){t.setTime(+t+e)}),(function(t,e){return e-t})));Dw.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?Yx((function(e){e.setTime(Math.floor(e/t)*t)}),(function(e,n){e.setTime(+e+n*t)}),(function(e,n){return(n-e)/t})):Dw:null};var Tw,Zw,Fw,jw,Iw,Rw,Lw;Dw.range;function Nw(t,e){return null==t||null==e?NaN:te?1:t>=e?0:NaN}function Bw(t,e){return null==t||null==e?NaN:et?1:e>=t?0:NaN}function zw(t){var e,n,r;function i(t,r){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:t.length;if(i>>1;n(t[a],r)<0?i=a+1:o=a}while(i2&&void 0!==arguments[2]?arguments[2]:0,o=i(t,e,n,(arguments.length>3&&void 0!==arguments[3]?arguments[3]:t.length)-1);return o>n&&r(t[o-1],e)>-r(t[o],e)?o-1:o},right:function(t,r){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:t.length;if(i>>1;n(t[a],r)<=0?i=a+1:o=a}while(i1&&Ty("Incompatible time units: ".concat(t)),e.sort((function(t,e){return eS[t]-eS[e]})),e}var rS=(Tw={},(0,V.Z)(Tw,Hw,"%Y "),(0,V.Z)(Tw,Ww,"Q%q "),(0,V.Z)(Tw,Vw,"%b "),(0,V.Z)(Tw,Xw,"%d "),(0,V.Z)(Tw,Gw,"W%U "),(0,V.Z)(Tw,qw,"%a "),(0,V.Z)(Tw,Yw,"%j "),(0,V.Z)(Tw,$w,"%H:00"),(0,V.Z)(Tw,Kw,"00:%M"),(0,V.Z)(Tw,Jw,":%S"),(0,V.Z)(Tw,Qw,".%L"),(0,V.Z)(Tw,"".concat(Hw,"-").concat(Vw),"%Y-%m "),(0,V.Z)(Tw,"".concat(Hw,"-").concat(Vw,"-").concat(Xw),"%Y-%m-%d "),(0,V.Z)(Tw,"".concat($w,"-").concat(Kw),"%H:%M"),Tw);function iS(t,e){var n,r,i=_b({},rS,e),o=nS(t),a=o.length,c="",l=0;for(l=0;ll;--n)if(null!=i[r=o.slice(l,n).join("-")]){c+=i[r],l=n;break}return c.trim()}var oS=new Date;function aS(t){return oS.setFullYear(t),oS.setMonth(0),oS.setDate(1),oS.setHours(0,0,0,0),oS}function cS(t){return uS(new Date(t))}function lS(t){return sS(new Date(t))}function uS(t){return rw.count(aS(t.getFullYear())-1,t)}function sS(t){return cw.count(aS(t.getFullYear())-1,t)}function fS(t){return aS(t).getDay()}function hS(t,e,n,r,i,o,a){if(0<=t&&t<100){var c=new Date(-1,e,n,r,i,o,a);return c.setFullYear(t),c}return new Date(t,e,n,r,i,o,a)}function dS(t){return vS(new Date(t))}function pS(t){return gS(new Date(t))}function vS(t){var e=Date.UTC(t.getUTCFullYear(),0,1);return iw.count(e-1,t)}function gS(t){var e=Date.UTC(t.getUTCFullYear(),0,1);return vw.count(e-1,t)}function mS(t){return oS.setTime(Date.UTC(t,0,1)),oS.getUTCDay()}function yS(t,e,n,r,i,o,a){if(0<=t&&t<100){var c=new Date(Date.UTC(-1,e,n,r,i,o,a));return c.setUTCFullYear(n.y),c}return new Date(Date.UTC(t,e,n,r,i,o,a))}function bS(t,e,n,r,i){var o=e||1,a=tb(t),c=function(t,e,i){return function(t,e,n,r){var i=n<=1?t:r?function(e,i){return r+n*Math.floor((t(e,i)-r)/n)}:function(e,r){return n*Math.floor(t(e,r)/n)};return e?function(t,n){return e(i(t,n),n)}:i}(n[i=i||t],r[i],t===a&&o,e)},l=new Date,u=ox(t),s=u[Hw]?c(Hw):Ab(2012),f=u[Vw]?c(Vw):u[Ww]?c(Ww):Ry,h=u[Gw]&&u[qw]?c(qw,1,Gw+qw):u[Gw]?c(Gw,1):u[qw]?c(qw,1):u[Xw]?c(Xw,1):u[Yw]?c(Yw,1):Ly,d=u[$w]?c($w):Ry,p=u[Kw]?c(Kw):Ry,v=u[Jw]?c(Jw):Ry,g=u[Qw]?c(Qw):Ry;return function(t){l.setTime(+t);var e=s(l);return i(e,f(l),h(l,e),d(l),p(l),v(l),g(l))}}function xS(t,e,n){return e+7*t-(n+6)%7}var wS=(Zw={},(0,V.Z)(Zw,Hw,(function(t){return t.getFullYear()})),(0,V.Z)(Zw,Ww,(function(t){return Math.floor(t.getMonth()/3)})),(0,V.Z)(Zw,Vw,(function(t){return t.getMonth()})),(0,V.Z)(Zw,Xw,(function(t){return t.getDate()})),(0,V.Z)(Zw,$w,(function(t){return t.getHours()})),(0,V.Z)(Zw,Kw,(function(t){return t.getMinutes()})),(0,V.Z)(Zw,Jw,(function(t){return t.getSeconds()})),(0,V.Z)(Zw,Qw,(function(t){return t.getMilliseconds()})),(0,V.Z)(Zw,Yw,(function(t){return uS(t)})),(0,V.Z)(Zw,Gw,(function(t){return sS(t)})),(0,V.Z)(Zw,Gw+qw,(function(t,e){return xS(sS(t),t.getDay(),fS(e))})),(0,V.Z)(Zw,qw,(function(t,e){return xS(1,t.getDay(),fS(e))})),Zw),SS=(Fw={},(0,V.Z)(Fw,Ww,(function(t){return 3*t})),(0,V.Z)(Fw,Gw,(function(t,e){return xS(t,0,fS(e))})),Fw);function kS(t,e){return bS(t,e||1,wS,SS,hS)}var CS=(jw={},(0,V.Z)(jw,Hw,(function(t){return t.getUTCFullYear()})),(0,V.Z)(jw,Ww,(function(t){return Math.floor(t.getUTCMonth()/3)})),(0,V.Z)(jw,Vw,(function(t){return t.getUTCMonth()})),(0,V.Z)(jw,Xw,(function(t){return t.getUTCDate()})),(0,V.Z)(jw,$w,(function(t){return t.getUTCHours()})),(0,V.Z)(jw,Kw,(function(t){return t.getUTCMinutes()})),(0,V.Z)(jw,Jw,(function(t){return t.getUTCSeconds()})),(0,V.Z)(jw,Qw,(function(t){return t.getUTCMilliseconds()})),(0,V.Z)(jw,Yw,(function(t){return vS(t)})),(0,V.Z)(jw,Gw,(function(t){return gS(t)})),(0,V.Z)(jw,qw,(function(t,e){return xS(1,t.getUTCDay(),mS(e))})),(0,V.Z)(jw,Gw+qw,(function(t,e){return xS(gS(t),t.getUTCDay(),mS(e))})),jw),OS=(Iw={},(0,V.Z)(Iw,Ww,(function(t){return 3*t})),(0,V.Z)(Iw,Gw,(function(t,e){return xS(t,0,mS(e))})),Iw);function ES(t,e){return bS(t,e||1,CS,OS,yS)}var MS=(Rw={},(0,V.Z)(Rw,Hw,Sw),(0,V.Z)(Rw,Ww,Cw.every(3)),(0,V.Z)(Rw,Vw,Cw),(0,V.Z)(Rw,Gw,cw),(0,V.Z)(Rw,Xw,rw),(0,V.Z)(Rw,qw,rw),(0,V.Z)(Rw,Yw,rw),(0,V.Z)(Rw,$w,Ew),(0,V.Z)(Rw,Kw,Aw),(0,V.Z)(Rw,Jw,_w),(0,V.Z)(Rw,Qw,Dw),Rw),AS=(Lw={},(0,V.Z)(Lw,Hw,kw),(0,V.Z)(Lw,Ww,Ow.every(3)),(0,V.Z)(Lw,Vw,Ow),(0,V.Z)(Lw,Gw,vw),(0,V.Z)(Lw,Xw,iw),(0,V.Z)(Lw,qw,iw),(0,V.Z)(Lw,Yw,iw),(0,V.Z)(Lw,$w,Mw),(0,V.Z)(Lw,Kw,Pw),(0,V.Z)(Lw,Jw,_w),(0,V.Z)(Lw,Qw,Dw),Lw);function PS(t){return MS[t]}function _S(t){return AS[t]}function DS(t,e,n){return t?t.offset(e,n):void 0}function TS(t,e,n){return DS(PS(t),e,n)}function ZS(t,e,n){return DS(_S(t),e,n)}function FS(t,e,n,r){return t?t.range(e,n,r):void 0}function jS(t,e,n,r){return FS(PS(t),e,n,r)}function IS(t,e,n,r){return FS(_S(t),e,n,r)}var RS=1e3,LS=6e4,NS=36e5,BS=864e5,zS=2592e6,US=31536e6,HS=[Hw,Vw,Xw,$w,Kw,Jw,Qw],WS=HS.slice(0,-1),VS=WS.slice(0,-1),GS=VS.slice(0,-1),XS=GS.slice(0,-1),qS=[Hw,Vw],YS=[Hw],$S=[[WS,1,RS],[WS,5,5e3],[WS,15,15e3],[WS,30,3e4],[VS,1,LS],[VS,5,3e5],[VS,15,9e5],[VS,30,18e5],[GS,1,NS],[GS,3,108e5],[GS,6,216e5],[GS,12,432e5],[XS,1,BS],[[Hw,Gw],1,6048e5],[qS,1,zS],[qS,3,7776e6],[YS,1,US]];function KS(t){var e,n,r=t.extent,i=t.maxbins||40,o=Math.abs(Qb(r))/i,a=zw((function(t){return t[2]})).right($S,o);return a===$S.length?(e=YS,n=Dx(r[0]/US,r[1]/US,i)):a?(e=(a=$S[o/$S[a-1][2]<$S[a][2]/o?a-1:a])[0],n=a[1]):(e=HS,n=Math.max(Dx(r[0],r[1],i),1)),{units:e,step:n}}function JS(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function QS(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function tk(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}function ek(t){var e=t.dateTime,n=t.date,r=t.time,i=t.periods,o=t.days,a=t.shortDays,c=t.months,l=t.shortMonths,u=vk(i),s=gk(i),f=vk(o),h=gk(o),d=vk(a),p=gk(a),v=vk(c),g=gk(c),m=vk(l),y=gk(l),b={a:function(t){return a[t.getDay()]},A:function(t){return o[t.getDay()]},b:function(t){return l[t.getMonth()]},B:function(t){return c[t.getMonth()]},c:null,d:Rk,e:Rk,f:Uk,g:Qk,G:eC,H:Lk,I:Nk,j:Bk,L:zk,m:Hk,M:Wk,p:function(t){return i[+(t.getHours()>=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:CC,s:OC,S:Vk,u:Gk,U:Xk,V:Yk,w:$k,W:Kk,x:null,X:null,y:Jk,Y:tC,Z:nC,"%":kC},x={a:function(t){return a[t.getUTCDay()]},A:function(t){return o[t.getUTCDay()]},b:function(t){return l[t.getUTCMonth()]},B:function(t){return c[t.getUTCMonth()]},c:null,d:rC,e:rC,f:lC,g:bC,G:wC,H:iC,I:oC,j:aC,L:cC,m:uC,M:sC,p:function(t){return i[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:CC,s:OC,S:fC,u:hC,U:dC,V:vC,w:gC,W:mC,x:null,X:null,y:yC,Y:xC,Z:SC,"%":kC},w={a:function(t,e,n){var r=d.exec(e.slice(n));return r?(t.w=p.get(r[0].toLowerCase()),n+r[0].length):-1},A:function(t,e,n){var r=f.exec(e.slice(n));return r?(t.w=h.get(r[0].toLowerCase()),n+r[0].length):-1},b:function(t,e,n){var r=m.exec(e.slice(n));return r?(t.m=y.get(r[0].toLowerCase()),n+r[0].length):-1},B:function(t,e,n){var r=v.exec(e.slice(n));return r?(t.m=g.get(r[0].toLowerCase()),n+r[0].length):-1},c:function(t,n,r){return C(t,e,n,r)},d:Mk,e:Mk,f:Zk,g:kk,G:Sk,H:Pk,I:Pk,j:Ak,L:Tk,m:Ek,M:_k,p:function(t,e,n){var r=u.exec(e.slice(n));return r?(t.p=s.get(r[0].toLowerCase()),n+r[0].length):-1},q:Ok,Q:jk,s:Ik,S:Dk,u:yk,U:bk,V:xk,w:mk,W:wk,x:function(t,e,r){return C(t,n,e,r)},X:function(t,e,n){return C(t,r,e,n)},y:kk,Y:Sk,Z:Ck,"%":Fk};function S(t,e){return function(n){var r,i,o,a=[],c=-1,l=0,u=t.length;for(n instanceof Date||(n=new Date(+n));++c53)return null;"w"in o||(o.w=1),"Z"in o?(i=(r=QS(tk(o.y,0,1))).getUTCDay(),r=i>4||0===i?gw.ceil(r):gw(r),r=iw.offset(r,7*(o.V-1)),o.y=r.getUTCFullYear(),o.m=r.getUTCMonth(),o.d=r.getUTCDate()+(o.w+6)%7):(i=(r=JS(tk(o.y,0,1))).getDay(),r=i>4||0===i?lw.ceil(r):lw(r),r=rw.offset(r,7*(o.V-1)),o.y=r.getFullYear(),o.m=r.getMonth(),o.d=r.getDate()+(o.w+6)%7)}else("W"in o||"U"in o)&&("w"in o||(o.w="u"in o?o.u%7:"W"in o?1:0),i="Z"in o?QS(tk(o.y,0,1)).getUTCDay():JS(tk(o.y,0,1)).getDay(),o.m=0,o.d="W"in o?(o.w+6)%7+7*o.W-(i+5)%7:o.w+7*o.U-(i+6)%7);return"Z"in o?(o.H+=o.Z/100|0,o.M+=o.Z%100,QS(o)):JS(o)}}function C(t,e,n,r){for(var i,o,a=0,c=e.length,l=n.length;a=l)return-1;if(37===(i=e.charCodeAt(a++))){if(i=e.charAt(a++),!(o=w[i in uk?e.charAt(a++):i])||(r=o(t,n,r))<0)return-1}else if(i!=n.charCodeAt(r++))return-1}return r}return b.x=S(n,b),b.X=S(r,b),b.c=S(e,b),x.x=S(n,x),x.X=S(r,x),x.c=S(e,x),{format:function(t){var e=S(t+="",b);return e.toString=function(){return t},e},parse:function(t){var e=k(t+="",!1);return e.toString=function(){return t},e},utcFormat:function(t){var e=S(t+="",x);return e.toString=function(){return t},e},utcParse:function(t){var e=k(t+="",!0);return e.toString=function(){return t},e}}}var nk,rk,ik,ok,ak,ck,lk,uk={"-":"",_:" ",0:"0"},sk=/^\s*\d+/,fk=/^%/,hk=/[\\^$*+?|[\]().{}]/g;function dk(t,e,n){var r=t<0?"-":"",i=(r?-t:t)+"",o=i.length;return r+(o68?1900:2e3),n+r[0].length):-1}function Ck(t,e,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function Ok(t,e,n){var r=sk.exec(e.slice(n,n+1));return r?(t.q=3*r[0]-3,n+r[0].length):-1}function Ek(t,e,n){var r=sk.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function Mk(t,e,n){var r=sk.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function Ak(t,e,n){var r=sk.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function Pk(t,e,n){var r=sk.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function _k(t,e,n){var r=sk.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function Dk(t,e,n){var r=sk.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function Tk(t,e,n){var r=sk.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function Zk(t,e,n){var r=sk.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function Fk(t,e,n){var r=fk.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function jk(t,e,n){var r=sk.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function Ik(t,e,n){var r=sk.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function Rk(t,e){return dk(t.getDate(),e,2)}function Lk(t,e){return dk(t.getHours(),e,2)}function Nk(t,e){return dk(t.getHours()%12||12,e,2)}function Bk(t,e){return dk(1+rw.count(Sw(t),t),e,3)}function zk(t,e){return dk(t.getMilliseconds(),e,3)}function Uk(t,e){return zk(t,e)+"000"}function Hk(t,e){return dk(t.getMonth()+1,e,2)}function Wk(t,e){return dk(t.getMinutes(),e,2)}function Vk(t,e){return dk(t.getSeconds(),e,2)}function Gk(t){var e=t.getDay();return 0===e?7:e}function Xk(t,e){return dk(cw.count(Sw(t)-1,t),e,2)}function qk(t){var e=t.getDay();return e>=4||0===e?fw(t):fw.ceil(t)}function Yk(t,e){return t=qk(t),dk(fw.count(Sw(t),t)+(4===Sw(t).getDay()),e,2)}function $k(t){return t.getDay()}function Kk(t,e){return dk(lw.count(Sw(t)-1,t),e,2)}function Jk(t,e){return dk(t.getFullYear()%100,e,2)}function Qk(t,e){return dk((t=qk(t)).getFullYear()%100,e,2)}function tC(t,e){return dk(t.getFullYear()%1e4,e,4)}function eC(t,e){var n=t.getDay();return dk((t=n>=4||0===n?fw(t):fw.ceil(t)).getFullYear()%1e4,e,4)}function nC(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+dk(e/60|0,"0",2)+dk(e%60,"0",2)}function rC(t,e){return dk(t.getUTCDate(),e,2)}function iC(t,e){return dk(t.getUTCHours(),e,2)}function oC(t,e){return dk(t.getUTCHours()%12||12,e,2)}function aC(t,e){return dk(1+iw.count(kw(t),t),e,3)}function cC(t,e){return dk(t.getUTCMilliseconds(),e,3)}function lC(t,e){return cC(t,e)+"000"}function uC(t,e){return dk(t.getUTCMonth()+1,e,2)}function sC(t,e){return dk(t.getUTCMinutes(),e,2)}function fC(t,e){return dk(t.getUTCSeconds(),e,2)}function hC(t){var e=t.getUTCDay();return 0===e?7:e}function dC(t,e){return dk(vw.count(kw(t)-1,t),e,2)}function pC(t){var e=t.getUTCDay();return e>=4||0===e?bw(t):bw.ceil(t)}function vC(t,e){return t=pC(t),dk(bw.count(kw(t),t)+(4===kw(t).getUTCDay()),e,2)}function gC(t){return t.getUTCDay()}function mC(t,e){return dk(gw.count(kw(t)-1,t),e,2)}function yC(t,e){return dk(t.getUTCFullYear()%100,e,2)}function bC(t,e){return dk((t=pC(t)).getUTCFullYear()%100,e,2)}function xC(t,e){return dk(t.getUTCFullYear()%1e4,e,4)}function wC(t,e){var n=t.getUTCDay();return dk((t=n>=4||0===n?bw(t):bw.ceil(t)).getUTCFullYear()%1e4,e,4)}function SC(){return"+0000"}function kC(){return"%"}function CC(t){return+t}function OC(t){return Math.floor(+t/1e3)}function EC(t){var e={};return function(n){return e[n]||(e[n]=t(n))}}function MC(t){var e=EC(t.format),n=t.formatPrefix;return{format:e,formatPrefix:n,formatFloat:function(t){var n=Fx(t||",");if(null==n.precision){switch(n.precision=12,n.type){case"%":n.precision-=2;break;case"e":n.precision-=1}return function(t,e){return function(n){var r=t(n),i=r.indexOf(e);if(i<0)return r;for(var o=function(t,e){var n,r=t.lastIndexOf("e");if(r>0)return r;for(r=t.length;--r>e;)if((n=t.charCodeAt(r))>=48&&n<=57)return r+1}(r,i),a=oi;)if("0"!==r[o]){++o;break}return r.slice(0,o)+a}}(e(n),e(".1f")(1)[1])}return e(n)},formatSpan:function(t,r,i,o){o=Fx(null==o?",f":o);var a,c=Dx(t,r,i),l=Math.max(Math.abs(t),Math.abs(r));if(null==o.precision)switch(o.type){case"s":return isNaN(a=function(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(Rx(e)/3)))-Rx(Math.abs(t)))}(c,l))||(o.precision=a),n(o,l);case"":case"e":case"g":case"p":case"r":isNaN(a=function(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,Rx(e)-Rx(t))+1}(c,l))||(o.precision=a-("e"===o.type));break;case"f":case"%":isNaN(a=function(t){return Math.max(0,-Rx(Math.abs(t)))}(c))||(o.precision=a-2*("%"===o.type))}return e(o)}}}function AC(){return ck=MC({format:Ux,formatPrefix:Hx})}function PC(t){return MC(Gx(t))}function _C(t){return arguments.length?ck=PC(t):ck}function DC(t,e,n){Yy(n=n||{})||Ty("Invalid time multi-format specifier: ".concat(n));var r=e(Jw),i=e(Kw),o=e($w),a=e(Xw),c=e(Gw),l=e(Vw),u=e(Ww),s=e(Hw),f=t(n[Qw]||".%L"),h=t(n[Jw]||":%S"),d=t(n[Kw]||"%I:%M"),p=t(n[$w]||"%I %p"),v=t(n[Xw]||n[qw]||"%a %d"),g=t(n[Gw]||"%b %d"),m=t(n[Vw]||"%B"),y=t(n[Ww]||"%B"),b=t(n[Hw]||"%Y");return function(t){return(r(t)1?(fO[t]=e,this):Fb(fO,t)?fO[t]:null}function dO(t){var e=hO(t);return e&&e.responseType||"text"}function pO(t,e,n,r){var i=hO((e=e||{}).type||"json");return i||Ty("Unknown data format type: "+e.type),t=i(t,e),e.parse&&function(t,e,n,r){if(!t.length)return;var i=jC();n=n||i.timeParse,r=r||i.utcParse;var o,a,c,l,u,s,f=t.columns||Object.keys(t[0]);"auto"===e&&(e=oO(t,f));f=Object.keys(e);var h=f.map((function(t){var i,o,a=e[t];if(a&&(a.startsWith("date:")||a.startsWith("utc:")))return("'"===(o=(i=a.split(/:(.+)?/,2))[1])[0]&&"'"===o[o.length-1]||'"'===o[0]&&'"'===o[o.length-1])&&(o=o.slice(1,-1)),("utc"===i[0]?r:n)(o);if(!nO[a])throw Error("Illegal format pattern: "+t+":"+a);return nO[a]}));for(c=0,u=t.length,s=f.length;c=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function mO(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=0&&n.splice(o,1)}return n},n}function bO(t,e){return xO.apply(this,arguments)}function xO(){return xO=Gm(q().mark((function t(e,n){return q().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,n(e);case 3:t.next=8;break;case 5:t.prev=5,t.t0=t.catch(0),e.error(t.t0);case 8:case"end":return t.stop()}}),t,null,[[0,5]])}))),xO.apply(this,arguments)}var wO=Symbol("vega_id"),SO=1;function kO(t){return!(!t||!CO(t))}function CO(t){return t[wO]}function OO(t,e){return t[wO]=e,t}function EO(t){var e=t===Object(t)?t:{data:t};return CO(e)?e:OO(e,SO++)}function MO(t){return AO(t,EO({}))}function AO(t,e){for(var n in t)e[n]=t[n];return e}function PO(t,e){return OO(e,CO(t))}function _O(t,e){return t?e?function(n,r){return t(n,r)||CO(e(n))-CO(e(r))}:function(e,n){return t(e,n)||CO(e)-CO(n)}:null}function DO(t){return t&&t.constructor===TO}function TO(){var t=[],e=[],n=[],r=[],i=[],o=null,a=!1;return{constructor:TO,insert:function(e){for(var n=bb(e),r=n.length,i=0;i0&&(m(d,h,f.value),c.modifies(h));for(u=0,s=i.length;u0&&m(t,f.field,f.value)})),c.modifies(f.field);if(a)c.mod=e.length||r.length?l.filter((function(t){return v[CO(t)]>0})):l.slice();else for(p in g)c.mod.push(g[p]);return(o||null==o&&(e.length||r.length))&&c.clean(!0),c}}}var ZO="_:mod:_";function FO(){Object.defineProperty(this,ZO,{writable:!0,value:{}})}FO.prototype={set:function(t,e,n,r){var i=this,o=i[t],a=i[ZO];return null!=e&&e>=0?(o[e]!==n||r)&&(o[e]=n,a[e+":"+t]=-1,a[t]=-1):(o!==n||r)&&(i[t]=n,a[t]=qy(n)?1+n.length:-1),i},modified:function(t,e){var n=this[ZO];if(!arguments.length){for(var r in n)if(n[r])return!0;return!1}if(qy(t)){for(var i=0;i=0?e+1t?(e=n,1):0}))},debounce:function(t){var e=zO();return this.targets().add(zO(null,null,Pb(t,(function(t){var n=t.dataflow;e.receive(t),n&&n.run&&n.run()})))),e},between:function(t,e){var n=!1;return t.targets().add(zO(null,null,(function(){return n=!0}))),e.targets().add(zO(null,null,(function(){return n=!1}))),this.filter((function(){return n}))},detach:function(){this._filter=Ny,this._targets=null}};var VO={skip:!0};function GO(t,e,n,r,i,o){var a,c,l=_b({},o,VO);wb(n)||(n=Ab(n)),void 0===r?a=function(e){return t.touch(n(e))}:wb(r)?(c=new RO(null,r,i,!1),a=function(e){c.evaluate(e);var r=n(e),i=c.value;DO(i)?t.pulse(r,i,o):t.update(r,i,l)}):a=function(e){return t.update(n(e),r,l)},e.apply(a)}function XO(t,e,n,r,i,o){if(void 0===r)e.targets().add(n);else{var a=o||{},c=new RO(null,function(t,e){return e=wb(e)?e:Ab(e),t?function(n,r){var i=e(n,r);return t.skip()||(t.skip(i!==this.value).value=i),i}:e}(n,r),i,!1);c.modified(a.force),c.rank=e.rank,e.targets().add(c),n&&(c.skip(!0),c.value=n.value,c.targets().add(n),t.connect(n,[c]))}}var qO={};function YO(t,e,n){this.dataflow=t,this.stamp=null==e?-1:e,this.add=[],this.rem=[],this.mod=[],this.fields=null,this.encode=n||null}function $O(t,e){var n=[];return cx(t,e,(function(t){return n.push(t)})),n}function KO(t,e){var n={};return t.visit(e,(function(t){n[CO(t)]=1})),function(t){return n[CO(t)]?null:t}}function JO(t,e){return t?function(n,r){return t(n,r)&&e(n,r)}:e}function QO(t,e,n,r){var i=this,o=0;this.dataflow=t,this.stamp=e,this.fields=null,this.encode=r||null,this.pulses=n;var a,c=gO(n);try{for(c.s();!(a=c.n()).done;){var l=a.value;if(l.stamp===e){if(l.fields){var u=i.fields||(i.fields={});for(var s in l.fields)u[s]=1}l.changed(i.ADD)&&(o|=i.ADD),l.changed(i.REM)&&(o|=i.REM),l.changed(i.MOD)&&(o|=i.MOD)}}}catch(f){c.e(f)}finally{c.f()}this.changes=o}function tE(){return tE=Gm(q().mark((function t(e,n,r){var i,o,a,c,l,u,s,f,h;return q().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(o=[],!(i=this)._pulse){t.next=3;break}return t.abrupt("return",nE(i));case 3:if(!i._pending){t.next=6;break}return t.next=6,i._pending;case 6:if(!n){t.next=9;break}return t.next=9,bO(i,n);case 9:if(i._touched.length){t.next=12;break}return i.debug("Dataflow invoked, but nothing to do."),t.abrupt("return",i);case 12:a=++i._clock,i._pulse=new YO(i,a,e),i._touched.forEach((function(t){return i._enqueue(t,!0)})),i._touched=yO(jy),c=0,t.prev=17;case 18:if(!(i._heap.size()>0)){t.next=35;break}if((l=i._heap.pop()).rank===l.qrank){t.next=23;break}return i._enqueue(l,!0),t.abrupt("continue",18);case 23:if(!(u=l.run(i._getPulse(l,e))).then){t.next=30;break}return t.next=27,u;case 27:u=t.sent,t.next=31;break;case 30:u.async&&(o.push(u.async),u=qO);case 31:u!==qO&&l._targets&&l._targets.forEach((function(t){return i._enqueue(t)})),++c,t.next=18;break;case 35:t.next=41;break;case 37:t.prev=37,t.t0=t.catch(17),i._heap.clear(),s=t.t0;case 41:if(i._input={},i._pulse=null,i.debug("Pulse ".concat(a,": ").concat(c," operators")),s&&(i._postrun=[],i.error(s)),!i._postrun.length){t.next=55;break}f=i._postrun.sort((function(t,e){return e.priority-t.priority})),i._postrun=[],h=0;case 49:if(!(h=0&&(c=r),t[e]=t[c],c=1+((e=c)<<1);t[e]=a,oE(t,i,e,n)}(e,0,t)):n=r,n}}}function oE(t,e,n,r){for(var i,o,a=t[n];n>e&&r(a,i=t[o=n-1>>1])<0;)t[n]=i,n=o;return t[n]=a}function aE(){this.logger(Xy()),this.logLevel(Hy),this._clock=0,this._rank=0,this._locale=LC();try{this._loader=vO()}catch(F2t){}this._touched=yO(jy),this._input={},this._pulse=null,this._heap=iE((function(t,e){return t.qrank-e.qrank})),this._postrun=[]}function cE(t){return function(){return this._log[t].apply(this,arguments)}}function lE(t,e){RO.call(this,t,null,e)}aE.prototype={stamp:function(){return this._clock},loader:function(t){return arguments.length?(this._loader=t,this):this._loader},locale:function(t){return arguments.length?(this._locale=t,this):this._locale},logger:function(t){return arguments.length?(this._log=t,this):this._log},error:cE("error"),warn:cE("warn"),info:cE("info"),debug:cE("debug"),logLevel:cE("level"),cleanThreshold:1e4,add:function(t,e,n,r){var i,o=1;return t instanceof RO?i=t:t&&t.prototype instanceof RO?i=new t:wb(t)?i=new RO(null,t):(o=0,i=new RO(t,e)),this.rank(i),o&&(r=n,n=e),n&&this.connect(i,i.parameters(n,r)),this.touch(i),i},connect:function(t,e){for(var n=t.rank,r=e.length,i=0;i=0;)i.push(e=n[r]),e===t&&Ty("Cycle detected in dataflow graph.")},pulse:function(t,e,n){this.touch(t,n||rE);var r=new YO(this,this._clock+(this._pulse?0:1)),i=t.pulse&&t.pulse.source||[];return r.target=t,this._input[t.id]=e.pulse(r,i),this},touch:function(t,e){var n=e||rE;return this._pulse?this._enqueue(t):this._touched.add(t),n.skip&&t.skip(!0),this},update:function(t,e,n){var r=n||rE;return(t.set(e)||r.force)&&this.touch(t,r),this},changeset:TO,ingest:function(t,e,n){return e=this.parse(e,n),this.pulse(t,this.changeset().insert(e))},parse:function(t,e){var n=this.locale();return pO(t,e,n.timeParse,n.utcParse)},preload:function(t,e,n){return HO.apply(this,arguments)},request:function(t,e){return UO.apply(this,arguments)},events:function(t,e,n,r){for(var i,o=this,a=zO(n,r),c=function(t){t.dataflow=o;try{a.receive(t)}catch(e){o.error(e)}finally{o.run()}},l=(i="string"==typeof t&&"undefined"!=typeof document?document.querySelectorAll(t):bb(t)).length,u=0;u=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function dE(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=o)&&(n=o)}}catch(s){i.e(s)}finally{i.f()}}else{var a,c=-1,l=hE(t);try{for(l.s();!(a=l.n()).done;){var u=a.value;null!=(u=e(u,++c,t))&&(n=u)&&(n=u)}}catch(s){l.e(s)}finally{l.f()}}return n}function vE(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return gE(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return gE(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function gE(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);no||void 0===n&&o>=o)&&(n=o)}}catch(s){i.e(s)}finally{i.f()}}else{var a,c=-1,l=vE(t);try{for(l.s();!(a=l.n()).done;){var u=a.value;null!=(u=e(u,++c,t))&&(n>u||void 0===n&&u>=u)&&(n=u)}}catch(s){l.e(s)}finally{l.f()}}return n}function yE(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Nw;if(t===Nw)return bE;if("function"!=typeof t)throw new TypeError("compare is not a function");return function(e,n){var r=t(e,n);return r||0===r?r:(0===t(n,n))-(0===t(e,e))}}function bE(t,e){return(null==t||!(t>=t))-(null==e||!(e>=e))||(te?1:0)}function xE(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1/0,i=arguments.length>4?arguments[4]:void 0;if(e=Math.floor(e),n=Math.floor(Math.max(0,n)),r=Math.floor(Math.min(t.length-1,r)),!(n<=e&&e<=r))return t;for(i=void 0===i?bE:yE(i);r>n;){if(r-n>600){var o=r-n+1,a=e-n+1,c=Math.log(o),l=.5*Math.exp(2*c/3),u=.5*Math.sqrt(c*l*(o-l)/o)*(a-o/2<0?-1:1);xE(t,e,Math.max(n,Math.floor(e-a*l/o+u)),Math.min(r,Math.floor(e+(o-a)*l/o+u)),i)}var s=t[e],f=n,h=r;for(wE(t,n,e),i(t[r],s)>0&&wE(t,n,r);f0;)--h}0===i(t[n],s)?wE(t,n,h):wE(t,++h,r),h<=e&&(n=h+1),e<=h&&(r=h-1)}return t}function wE(t,e,n){var r=t[e];t[e]=t[n],t[n]=r}var SE=q().mark(EE);function kE(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return CE(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return CE(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function CE(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=i)){u.next=9;break}return u.next=9,i;case 9:u.next=4;break;case 11:u.next=16;break;case 13:u.prev=13,u.t0=u.catch(2),n.e(u.t0);case 16:return u.prev=16,n.f(),u.finish(16);case 19:u.next=40;break;case 21:o=-1,a=kE(t),u.prev=23,a.s();case 25:if((c=a.n()).done){u.next=32;break}if(l=c.value,!(null!=(l=e(l,++o,t))&&(l=+l)>=l)){u.next=30;break}return u.next=30,l;case 30:u.next=25;break;case 32:u.next=37;break;case 34:u.prev=34,u.t1=u.catch(23),a.e(u.t1);case 37:return u.prev=37,a.f(),u.finish(37);case 40:case"end":return u.stop()}}),SE,null,[[2,13,16,19],[23,34,37,40]])}function ME(t,e,n){if((r=(t=Float64Array.from(EE(t,n))).length)&&!isNaN(e=+e)){if(e<=0||r<2)return mE(t);if(e>=1)return pE(t);var r,i=(r-1)*e,o=Math.floor(i),a=pE(xE(t,o).subarray(0,o+1));return a+(mE(t.subarray(o+1))-a)*(i-o)}}function AE(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:OE;if((r=t.length)&&!isNaN(e=+e)){if(e<=0||r<2)return+n(t[0],0,t);if(e>=1)return+n(t[r-1],r-1,t);var r,i=(r-1)*e,o=Math.floor(i),a=+n(t[o],o,t);return a+(+n(t[o+1],o+1,t)-a)*(i-o)}}function PE(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return _E(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _E(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function _E(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=l&&(o+=(n=l-i)*(l-(i+=n/++r)))}}catch(d){c.e(d)}finally{c.f()}}else{var u,s=-1,f=PE(t);try{for(f.s();!(u=f.n()).done;){var h=u.value;null!=(h=e(h,++s,t))&&(h=+h)>=h&&(o+=(n=h-i)*(h-(i+=n/++r)))}}catch(d){f.e(d)}finally{f.f()}}if(r>1)return o/(r-1)}(t,e);return n?Math.sqrt(n):n}function TE(t,e){return ME(t,.5,e)}var ZE=q().mark(IE);function FE(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return jE(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return jE(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function jE(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=i)){u.next=9;break}return u.next=9,i;case 9:u.next=4;break;case 11:u.next=16;break;case 13:u.prev=13,u.t0=u.catch(2),n.e(u.t0);case 16:return u.prev=16,n.f(),u.finish(16);case 19:u.next=41;break;case 21:o=-1,a=FE(t),u.prev=23,a.s();case 25:if((c=a.n()).done){u.next=33;break}if(l=c.value,!(null!=(l=e(l,++o,t))&&""!==l&&(l=+l)>=l)){u.next=31;break}return u.next=31,l;case 31:u.next=25;break;case 33:u.next=38;break;case 35:u.prev=35,u.t1=u.catch(23),a.e(u.t1);case 38:return u.prev=38,a.f(),u.finish(38);case 41:case"end":return u.stop()}}),ZE,null,[[2,13,16,19],[23,35,38,41]])}function RE(t,e,n){var r=Float64Array.from(IE(t,n));return r.sort(Nw),e.map((function(t){return AE(r,t)}))}function LE(t,e){return RE(t,[.25,.5,.75],e)}function NE(t,e){var n=t.length,r=DE(t,e),i=LE(t,e),o=(i[2]-i[0])/1.34;return 1.06*(Math.min(r,o)||r||Math.abs(i[0])||1)*Math.pow(n,-.2)}function BE(t){var e,n,r,i,o,a,c=t.maxbins||20,l=t.base||10,u=Math.log(l),s=t.divide||[5,2],f=t.extent[0],h=t.extent[1],d=t.span||h-f||Math.abs(f)||1;if(t.step)e=t.step;else if(t.steps){for(i=d/c,o=0,a=t.steps.length;oc;)e*=l;for(o=0,a=s.length;o=r&&d/i<=c&&(e=i)}var p=(i=Math.log(e))>=0?0:1+~~(-i/u),v=Math.pow(l,-p-1);return(t.nice||void 0===t.nice)&&(f=f<(i=Math.floor(f/e+v)*e)?i-e:i,h=Math.ceil(h/e)*e),{start:f,stop:h===f?f+e:h,step:e}}var zE=Math.random;function UE(t){zE=t}function HE(t,e,n,r){if(!t.length)return[void 0,void 0];var i,o,a,c,l=Float64Array.from(IE(t,r)),u=l.length,s=e;for(a=0,c=Array(s);a=f){for(s=(u+s)/2;c>1);ra;)t[r--]=t[o]}o=a,a=n}return t}(a,e+e/4):a}function VE(t){return function(){return(t=(1103515245*t+12345)%2147483647)/2147483647}}function GE(t,e){var n,r,i;null==e&&(e=t,t=0);var o={min:function(t){return arguments.length?(i=r-(n=t||0),o):n},max:function(t){return arguments.length?(i=(r=t||0)-n,o):r},sample:function(){return n+Math.floor(i*zE())},pdf:function(t){return t===Math.floor(t)&&t>=n&&t=r?1:(e-n+1)/i},icdf:function(t){return t>=0&&t<=1?n-1+Math.floor(t*i):NaN}};return o.min(t).max(e)}var XE=Math.sqrt(2*Math.PI),qE=Math.SQRT2,YE=NaN;function $E(t,e){t=t||0,e=null==e?1:e;var n,r,i=0,o=0;if(YE==YE)i=YE,YE=NaN;else{do{n=(i=2*zE()-1)*i+(o=2*zE()-1)*o}while(0===n||n>1);i*=r=Math.sqrt(-2*Math.log(n)/n),YE=o*r}return t+i*e}function KE(t,e,n){var r=(t-(e||0))/(n=null==n?1:n);return Math.exp(-.5*r*r)/(n*XE)}function JE(t,e,n){var r,i=(t-(e=e||0))/(n=null==n?1:n),o=Math.abs(i);if(o>37)r=0;else{var a=Math.exp(-o*o/2);o<7.07106781186547?(r=a*((((((.0352624965998911*o+.700383064443688)*o+6.37396220353165)*o+33.912866078383)*o+112.079291497871)*o+221.213596169931)*o+220.206867912376),r/=((((((.0883883476483184*o+1.75566716318264)*o+16.064177579207)*o+86.7807322029461)*o+296.564248779674)*o+637.333633378831)*o+793.826512519948)*o+440.413735824752):r=a/(o+1/(o+2/(o+3/(o+4/(o+.65)))))/2.506628274631}return i>0?1-r:r}function QE(t,e,n){return t<0||t>1?NaN:(e||0)+(null==n?1:n)*qE*function(t){var e,n=-Math.log((1-t)*(1+t));e=n<6.25?1.6536545626831027+(e=.24015818242558962+(e=(e=(e=.00018673420803405714+(e=(e=(e=4.2347877827932404e-7+(e=(e=(e=1.0512122733215323e-9+(e=(e=(e=26335093153082323e-28+(e=(e=(e=6637638134358324e-30+(e=20972767875968562e-33+(e=(e=11157877678025181e-33+(e=128584807152564e-32+(e=(e=-364441206401782e-35)*(n-=3.125)-16850591381820166e-35)*n)*n)*n-1333171662854621e-31)*n)*n)*n-4054566272975207e-29)*n-8151934197605472e-29)*n)*n-12975133253453532e-27)*n-5415412054294628e-26)*n)*n-4.112633980346984e-9)*n-2.9070369957882005e-8)*n)*n-13654692000834679e-22)*n-13882523362786469e-21)*n)*n-.000740702534166267)*n-.006033670871430149)*n)*n:n<16?3.0838856104922208+(e=1.0052589676941592+(e=.005370914553590064+(e=(e=.002491442096107851+(e=(e=.0009532893797373805+(e=(e=24031110387097894e-21+(e=6828485145957318e-20+(e=(e=12475304481671779e-21+(e=29234449089955446e-22+(e=(e=15027403968909828e-22+(e=1.8239629214389228e-8+(e=(e=9.075656193888539e-8+(e=2.2137376921775787e-9)*(n=Math.sqrt(n)-3.25))*n-2.7517406297064545e-7)*n)*n)*n-4013867526981546e-21)*n)*n)*n-47318229009055734e-21)*n)*n)*n-.0003550375203628475)*n)*n-.0016882755560235047)*n)*n-.003751208507569241)*n)*n)*n:Number.isFinite(n)?4.849906401408584+(e=1.0103004648645344+(e=(e=(e=7599527703001776e-20+(e=(e=4526062597223154e-21+(e=(e=2.2900482228026655e-7+(e=(e=2.914795345090108e-8+(e=(e=7.61570120807834e-9+(e=(e=1.5076572693500548e-9+(e=(e=-27109920616438573e-27)*(n=Math.sqrt(n)-5)-2.555641816996525e-10)*n)*n-3.789465440126737e-9)*n)*n-1.496002662714924e-8)*n)*n-6.771199775845234e-8)*n)*n-9.9298272942317e-7)*n)*n-1968177810553167e-20)*n)*n-.00021503011930044477)*n-.00013871931833623122)*n)*n:1/0;return e*t}(2*t-1)}function tM(t,e){var n,r,i={mean:function(t){return arguments.length?(n=t||0,i):n},stdev:function(t){return arguments.length?(r=null==t?1:t,i):r},sample:function(){return $E(n,r)},pdf:function(t){return KE(t,n,r)},cdf:function(t){return JE(t,n,r)},icdf:function(t){return QE(t,n,r)}};return i.mean(t).stdev(e)}function eM(t,e){var n=tM(),r=0,i={data:function(n){return arguments.length?(t=n,r=n?n.length:0,i.bandwidth(e)):t},bandwidth:function(n){return arguments.length?(!(e=n)&&t&&(e=NE(t)),i):e},sample:function(){return t[~~(zE()*r)]+e*n.sample()},pdf:function(i){for(var o=0,a=0;a=e&&t<=n?1/(n-e):0}function sM(t,e,n){return null==n&&(n=null==e?1:e,e=0),tn?1:(t-e)/(n-e)}function fM(t,e,n){return null==n&&(n=null==e?1:e,e=0),t>=0&&t<=1?e+t*(n-e):NaN}function hM(t,e){var n,r,i={min:function(t){return arguments.length?(n=t||0,i):n},max:function(t){return arguments.length?(r=null==t?1:t,i):r},sample:function(){return lM(n,r)},pdf:function(t){return uM(t,n,r)},cdf:function(t){return sM(t,n,r)},icdf:function(t){return fM(t,n,r)}};return null==e&&(e=null==t?1:t,t=0),i.min(t).max(e)}function dM(t,e,n){var r,i=0,o=0,a=FE(t);try{for(a.s();!(r=a.n()).done;){var c=r.value,l=n(c);null==e(c)||null==l||isNaN(l)||(i+=(l-i)/++o)}}catch(u){a.e(u)}finally{a.f()}return{coef:[i],predict:function(){return i},rSquared:0}}function pM(t,e,n,r){var i=r-t*t,o=Math.abs(i)<1e-24?0:(n-t*e)/i;return[e-o*t,o]}function vM(t,e,n,r){t=t.filter((function(t){var r=e(t),i=n(t);return null!=r&&(r=+r)>=r&&null!=i&&(i=+i)>=i})),r&&t.sort((function(t,n){return e(t)-e(n)}));var i,o,a,c,l=t.length,u=new Float64Array(l),s=new Float64Array(l),f=0,h=0,d=0,p=FE(t);try{for(p.s();!(c=p.n()).done;)a=c.value,u[f]=i=+e(a),s[f]=o=+n(a),h+=(i-h)/++f,d+=(o-d)/f}catch(v){p.e(v)}finally{p.f()}for(f=0;f=i&&null!=o&&(o=+o)>=o&&r(i,o,++c)}}catch(s){l.e(s)}finally{l.f()}}function mM(t,e,n,r,i){var o=0,a=0;return gM(t,e,n,(function(t,e){var n=e-i(t),c=e-r;o+=n*n,a+=c*c})),1-o/a}function yM(t,e,n){var r=0,i=0,o=0,a=0,c=0;gM(t,e,n,(function(t,e){++c,r+=(t-r)/c,i+=(e-i)/c,o+=(t*e-o)/c,a+=(t*t-a)/c}));var l=pM(r,i,o,a),u=function(t){return l[0]+l[1]*t};return{coef:l,predict:u,rSquared:mM(t,e,n,i,u)}}function bM(t,e,n){var r=0,i=0,o=0,a=0,c=0;gM(t,e,n,(function(t,e){++c,t=Math.log(t),r+=(t-r)/c,i+=(e-i)/c,o+=(t*e-o)/c,a+=(t*t-a)/c}));var l=pM(r,i,o,a),u=function(t){return l[0]+l[1]*Math.log(t)};return{coef:l,predict:u,rSquared:mM(t,e,n,i,u)}}function xM(t,e,n){var r,i,o,a=vM(t,e,n),c=(0,G.Z)(a,4),l=c[0],u=(c[1],c[2]),s=c[3],f=0,h=0,d=0,p=0,v=0;gM(t,e,n,(function(t,e){r=l[v++],i=Math.log(e),f+=(e*i-f)/v,h+=((o=r*e)-h)/v,d+=(o*i-d)/v,p+=(r*o-p)/v}));var g=pM(h/s,f/s,d/s,p/s),m=(0,G.Z)(g,2),y=m[0],b=m[1],x=function(t){return Math.exp(y+b*(t-u))};return{coef:[Math.exp(y-b*u),b],predict:x,rSquared:mM(t,e,n,s,x)}}function wM(t,e,n){var r=0,i=0,o=0,a=0,c=0,l=0;gM(t,e,n,(function(t,e){var n=Math.log(t),u=Math.log(e);++l,r+=(n-r)/l,i+=(u-i)/l,o+=(n*u-o)/l,a+=(n*n-a)/l,c+=(e-c)/l}));var u=pM(r,i,o,a),s=function(t){return u[0]*Math.pow(t,u[1])};return u[0]=Math.exp(u[0]),{coef:u,predict:s,rSquared:mM(t,e,n,c,s)}}function SM(t,e,n){var r,i,o,a,c=vM(t,e,n),l=(0,G.Z)(c,4),u=l[0],s=l[1],f=l[2],h=l[3],d=u.length,p=0,v=0,g=0,m=0,y=0;for(r=0;rMath.abs(t[e][i])&&(i=n);for(r=e;r=e;r--)t[r][n]-=t[r][e]*t[e][n]/t[e][e]}for(n=a-1;n>=0;--n){for(o=0,r=n+1;r=0;--i)for(a=e[i],c=1,l[i]+=a,o=1;o<=i;++o)c*=(i+1-o)/o,l[i-o]+=a*Math.pow(n,o)*c;return l[0]+=r,l}var OM=2,EM=1e-12;function MM(t,e,n,r){for(var i=vM(t,e,n,!0),o=(0,G.Z)(i,4),a=o[0],c=o[1],l=o[2],u=o[3],s=a.length,f=Math.max(2,~~(r*s)),h=new Float64Array(s),d=new Float64Array(s),p=new Float64Array(s).fill(1),v=-1;++v<=OM;){for(var g=[0,f-1],m=0;ma[x]-y?b:x,S=0,k=0,C=0,O=0,E=0,M=1/Math.abs(a[w]-y||1),A=b;A<=x;++A){var P=a[A],_=c[A],D=AM(Math.abs(y-P)*M)*p[A],T=P*D;S+=D,k+=T,C+=_*D,O+=_*T,E+=P*T}var Z=pM(k/S,C/S,O/S,E/S),F=(0,G.Z)(Z,2),j=F[0],I=F[1];h[m]=j+I*y,d[m]=Math.abs(c[m]-h[m]),PM(a,m+1,g)}if(v===OM)break;var R=TE(d);if(Math.abs(R)=1?EM:(N=1-L*L)*N}return function(t,e,n,r){for(var i,o=t.length,a=[],c=0,l=0,u=[];c=t.length))for(;e>i&&t[o]-r<=r-t[i];)n[0]=++i,n[1]=o,++o}var _M=.5*Math.PI/180;function DM(t,e,n,r){n=n||25,r=Math.max(n,r||200);var i=function(e){return[e,t(e)]},o=e[0],a=e[1],c=a-o,l=c/r,u=[i(o)],s=[];if(n===r){for(var f=1;f0;)s.push(i(o+h/n*c));for(var d=u[0],p=s[s.length-1],v=1/c,g=function(t,e){for(var n=t,r=t,i=e.length,o=0;or&&(r=a)}return 1/(r-n)}(d[1],s);p;){var m=i((d[0]+p[0])/2);m[0]-d[0]>=l&&TM(d,m,p,v,g)>_M?s.push(m):(d=p,u.push(p),s.pop()),p=s[s.length-1]}return u}function TM(t,e,n,r,i){var o=Math.atan2(i*(n[1]-t[1]),r*(n[0]-t[0])),a=Math.atan2(i*(e[1]-t[1]),r*(e[0]-t[0]));return Math.abs(o-a)}function ZM(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return FM(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return FM(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function FM(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function RM(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n1?t.dev/(t.valid-1):void 0},add:function(t,e){return t.dev+=t.mean_d*(e-t.mean)},rem:function(t,e){return t.dev-=t.mean_d*(e-t.mean)},req:["mean"],idx:1},variancep:{value:function(t){return t.valid>1?t.dev/t.valid:void 0},req:["variance"],idx:2},stdev:{value:function(t){return t.valid>1?Math.sqrt(t.dev/(t.valid-1)):void 0},req:["variance"],idx:2},stdevp:{value:function(t){return t.valid>1?Math.sqrt(t.dev/t.valid):void 0},req:["variance"],idx:2},stderr:{value:function(t){return t.valid>1?Math.sqrt(t.dev/(t.valid*(t.valid-1))):void 0},req:["variance"],idx:2},distinct:{value:function(t){return t.cell.data.distinct(t.get)},req:["values"],idx:3},ci0:{value:function(t){return t.cell.data.ci0(t.get)},req:["values"],idx:3},ci1:{value:function(t){return t.cell.data.ci1(t.get)},req:["values"],idx:3},median:{value:function(t){return t.cell.data.q2(t.get)},req:["values"],idx:3},q1:{value:function(t){return t.cell.data.q1(t.get)},req:["values"],idx:3},q3:{value:function(t){return t.cell.data.q3(t.get)},req:["values"],idx:3},min:{init:function(t){return t.min=void 0},value:function(t){return t.min=Number.isNaN(t.min)?t.cell.data.min(t.get):t.min},add:function(t,e){(et.max||void 0===t.max)&&(t.max=e)},rem:function(t,e){e>=t.max&&(t.max=NaN)},req:["values"],idx:4},argmin:{init:function(t){return t.argmin=void 0},value:function(t){return t.argmin||t.cell.data.argmin(t.get)},add:function(t,e,n){et.max&&(t.argmax=n)},rem:function(t,e){e>=t.max&&(t.argmax=void 0)},req:["max","values"],idx:3}},HM=Object.keys(UM).filter((function(t){return"__count__"!==t}));function WM(t,e){return UM[t](e)}function VM(t,e){return t.idx-e.idx}function GM(){var t=this;this.valid=0,this.missing=0,this._ops.forEach((function(e){return e.init(t)}))}function XM(t,e){var n=this;null!=t&&""!==t?t==t&&(++this.valid,this._ops.forEach((function(r){return r.add(n,t,e)}))):++this.missing}function qM(t,e){var n=this;null!=t&&""!==t?t==t&&(--this.valid,this._ops.forEach((function(r){return r.rem(n,t,e)}))):--this.missing}function YM(t){var e=this;return this._out.forEach((function(n){return t[n.out]=n.value(e)})),t}function $M(t,e){var n=e||Iy,r=function(t){var e={};return t.forEach((function(t){return e[t.name]=t})),t.forEach((function t(n){n.req&&n.req.forEach((function(n){e[n]||t(e[n]=UM[n]())}))})),Object.values(e).sort(VM)}(t),i=t.slice().sort(VM);function o(t){this._ops=r,this._out=i,this.cell=t,this.init()}return o.prototype.init=GM,o.prototype.add=XM,o.prototype.rem=qM,o.prototype.set=YM,o.prototype.get=n,o.fields=t.map((function(t){return t.out})),o}function KM(t){this._key=t?Fy(t):CO,this.reset()}[].concat((0,Xm.Z)(HM),["__count__"]).forEach((function(t){UM[t]=function(t,e){return function(n){return _b({name:t,out:n||t},zM,e)}}(t,UM[t])}));var JM=KM.prototype;function QM(t){lE.call(this,null,t),this._adds=[],this._mods=[],this._alen=0,this._mlen=0,this._drop=!0,this._cross=!1,this._dims=[],this._dnames=[],this._measures=[],this._countOnly=!1,this._counts=null,this._prev=null,this._inputs=null,this._outputs=null}JM.reset=function(){this._add=[],this._rem=[],this._ext=null,this._get=null,this._q=null},JM.add=function(t){this._add.push(t)},JM.rem=function(t){this._rem.push(t)},JM.values=function(){if(this._get=null,0===this._rem.length)return this._add;var t,e,n,r=this._add,i=this._rem,o=this._key,a=r.length,c=i.length,l=Array(a-c),u={};for(t=0;t=0;)Fb(r,e=t(n[i])+"")||(r[e]=1,++o);return o},JM.extent=function(t){if(this._get!==t||!this._ext){var e=this.values(),n=Tb(e,t);this._ext=[e[n[0]],e[n[1]]],this._get=t}return this._ext},JM.argmin=function(t){return this.extent(t)[0]||{}},JM.argmax=function(t){return this.extent(t)[1]||{}},JM.min=function(t){var e=this.extent(t)[0];return null!=e?t(e):void 0},JM.max=function(t){var e=this.extent(t)[1];return null!=e?t(e):void 0},JM.quartile=function(t){return this._get===t&&this._q||(this._q=LE(this.values(),t),this._get=t),this._q},JM.q1=function(t){return this.quartile(t)[0]},JM.q2=function(t){return this.quartile(t)[1]},JM.q3=function(t){return this.quartile(t)[2]},JM.ci=function(t){return this._get===t&&this._ci||(this._ci=HE(this.values(),1e3,.05,t),this._get=t),this._ci},JM.ci0=function(t){return this.ci(t)[0]},JM.ci1=function(t){return this.ci(t)[1]},QM.Definition={type:"Aggregate",metadata:{generates:!0,changes:!0},params:[{name:"groupby",type:"field",array:!0},{name:"ops",type:"enum",array:!0,values:HM},{name:"fields",type:"field",null:!0,array:!0},{name:"as",type:"string",null:!0,array:!0},{name:"drop",type:"boolean",default:!0},{name:"cross",type:"boolean",default:!1},{name:"key",type:"field"}]},Lb(QM,lE,{transform:function(t,e){var n=this,r=this,i=e.fork(e.NO_SOURCE|e.NO_FIELDS),o=t.modified();return r.stamp=i.stamp,r.value&&(o||e.modified(r._inputs,!0))?(r._prev=r.value,r.value=o?r.init(t):Object.create(null),e.visit(e.SOURCE,(function(t){return r.add(t)}))):(r.value=r.value||r.init(t),e.visit(e.REM,(function(t){return r.rem(t)})),e.visit(e.ADD,(function(t){return r.add(t)}))),i.modifies(r._outputs),r._drop=!1!==t.drop,t.cross&&r._dims.length>1&&(r._drop=!1,r.cross()),e.clean()&&r._drop&&i.clean(!0).runAfter((function(){return n.clean()})),r.changes(i)},cross:function(){var t=this,e=t.value,n=t._dnames,r=n.map((function(){return{}})),i=n.length;function o(t){var e,o,a,c;for(e in t)for(a=t[e].tuple,o=0;oc?1/0:(e=Math.max(a,Math.min(e,c-o)),a+o*Math.floor(1e-14+(e-a)/o))};return l.start=a,l.stop=i.stop,l.step=o,this.value=Ey(l,Ay(r),t.name||"bin_"+My(r))}}),nA.Definition={type:"Collect",metadata:{source:!0},params:[{name:"sort",type:"compare"}]},Lb(nA,lE,{transform:function(t,e){var n=e.fork(e.ALL),r=eA(CO,this.value,n.materialize(n.ADD).add),i=t.sort,o=e.changed()||i&&(t.modified("sort")||e.modified(i.fields));return n.visit(n.REM,r.remove),this.modified(o),this.value=n.source=r.data(_O(i),o),e.source&&e.source.root&&(this.value.root=e.source.root),n}}),Lb(rA,RO),oA.Definition={type:"CountPattern",metadata:{generates:!0,changes:!0},params:[{name:"field",type:"field",required:!0},{name:"case",type:"enum",values:["upper","lower","mixed"],default:"mixed"},{name:"pattern",type:"string",default:'[\\w"]+'},{name:"stopwords",type:"string",default:""},{name:"as",type:"string",array:!0,length:2,default:["text","count"]}]},Lb(oA,lE,{transform:function(t,e){var n=function(e){return function(n){for(var r,i=function(t,e,n){switch(e){case"upper":t=t.toUpperCase();break;case"lower":t=t.toLowerCase()}return t.match(n)}(c(n),t.case,o)||[],l=0,u=i.length;lh&&(h=m),p[++n][u]=m}}catch(y){g.e(y)}finally{g.f()}}return this.value={start:f,stop:h,step:c},e.reflow(!0).modifies(u)}}),Lb(gA,RO),yA.Definition={type:"Extent",metadata:{},params:[{name:"field",type:"field",required:!0}]},Lb(yA,lE,{transform:function(t,e){var n=this.value,r=t.field,i=e.changed()||e.modified(r.fields)||t.modified("field"),o=n[0],a=n[1];if((i||null==o)&&(o=1/0,a=-1/0),e.visit(i?e.SOURCE:e.ADD,(function(t){var e=eb(r(t));null!=e&&(ea&&(a=e))})),!Number.isFinite(o)||!Number.isFinite(a)){var c=My(r);c&&(c=' for field "'.concat(c,'"')),e.dataflow.warn("Infinite extent".concat(c,": [").concat(o,", ").concat(a,"]")),o=a=void 0}this.value=[o,a]}}),Lb(bA,RO,{connect:function(t){return this.detachSubflow=t.detachSubflow,this.targets().add(t),t.source=this},add:function(t){this.count+=1,this.value.add.push(t)},rem:function(t){this.count-=1,this.value.rem.push(t)},mod:function(t){this.value.mod.push(t)},init:function(t){this.value.init(t,t.NO_SOURCE)},evaluate:function(){return this.value}}),Lb(xA,lE,{activate:function(t){this._targets[this._targets.active++]=t},subflow:function(t,e,n,r){var i,o,a=this.value,c=Fb(a,t)&&a[t];return c?c.value.stamp0}));this.initTargets(i)}},initTargets:function(t){for(var e=this._targets,n=e.length,r=t?t.length:0,i=0;ir.cleanThreshold&&r.runAfter(a.clean),e}}),Lb(wA,RO),kA.Definition={type:"Filter",metadata:{changes:!0},params:[{name:"expr",type:"expr",required:!0}]},Lb(kA,lE,{transform:function(t,e){var n=e.dataflow,r=this.value,i=e.fork(),o=i.add,a=i.rem,c=i.mod,l=t.expr,u=!0;function s(e){var n=CO(e),i=l(e,t),s=r.get(n);i&&s?(r.delete(n),o.push(e)):i||s?u&&i&&!s&&c.push(e):(r.set(n,1),a.push(e))}return e.visit(e.REM,(function(t){var e=CO(t);r.has(e)?r.delete(e):a.push(t)})),e.visit(e.ADD,(function(e){l(e,t)?o.push(e):r.set(CO(e),1)})),e.visit(e.MOD,s),t.modified()&&(u=!1,e.visit(e.REFLOW,s)),r.empty>n.cleanThreshold&&n.runAfter(r.clean),i}}),CA.Definition={type:"Flatten",metadata:{generates:!0},params:[{name:"fields",type:"field",array:!0,required:!0},{name:"index",type:"string"},{name:"as",type:"string",array:!0}]},Lb(CA,lE,{transform:function(t,e){var n=e.fork(e.NO_SOURCE),r=t.fields,i=dA(r,t.as||[]),o=t.index||null,a=i.length;return n.rem=this.value,e.visit(e.SOURCE,(function(t){for(var e,c,l,u=r.map((function(e){return e(t)})),s=u.reduce((function(t,e){return Math.max(t,e.length)}),0),f=0;f0){for(n=[];--l>=0;)n.push(i=EO(a(t))),c.push(i);o.add=o.add.length?o.materialize(o.ADD).add.concat(n):n}else r=c.slice(0,-l),o.rem=o.rem.length?o.materialize(o.REM).rem.concat(r):r,c=c.slice(-l);return o.source=this.value=c,o}});var AA={value:"value",median:TE,mean:function(t,e){var n=0,r=0;if(void 0===e){var i,o=ZM(t);try{for(o.s();!(i=o.n()).done;){var a=i.value;null!=a&&(a=+a)>=a&&(++n,r+=a)}}catch(f){o.e(f)}finally{o.f()}}else{var c,l=-1,u=ZM(t);try{for(u.s();!(c=u.n()).done;){var s=c.value;null!=(s=e(s,++l,t))&&(s=+s)>=s&&(++n,r+=s)}}catch(f){u.e(f)}finally{u.f()}}if(n)return r/n},min:mE,max:pE},PA=[];function _A(t){lE.call(this,[],t)}function DA(t){QM.call(this,t)}function TA(t){lE.call(this,null,t)}function ZA(t){RO.call(this,null,FA,t)}function FA(t){return this.value&&!t.modified()?this.value:Gb(t.fields,t.flat)}function jA(t){lE.call(this,[],t),this._pending=null}function IA(t,e,n){n.forEach(EO);var r=e.fork(e.NO_FIELDS&e.NO_SOURCE);return r.rem=t.value,t.value=r.source=r.add=n,t._pending=null,r.rem.length&&r.clean(!0),r}function RA(t){lE.call(this,{},t)}function LA(t){RO.call(this,null,NA,t)}function NA(t){if(this.value&&!t.modified())return this.value;var e,n,r=t.extents,i=r.length,o=1/0,a=-1/0;for(e=0;ea&&(a=n[1]);return[o,a]}function BA(t){RO.call(this,null,zA,t)}function zA(t){return this.value&&!t.modified()?this.value:t.values.reduce((function(t,e){return t.concat(e)}),[])}function UA(t){lE.call(this,null,t)}function HA(t){QM.call(this,t)}function WA(t){xA.call(this,t)}function VA(t){lE.call(this,null,t)}function GA(t){lE.call(this,null,t)}function XA(t){lE.call(this,null,t)}_A.Definition={type:"Impute",metadata:{changes:!0},params:[{name:"field",type:"field",required:!0},{name:"key",type:"field",required:!0},{name:"keyvals",array:!0},{name:"groupby",type:"field",array:!0},{name:"method",type:"enum",default:"value",values:["value","mean","median","max","min"]},{name:"value",default:0}]},Lb(_A,lE,{transform:function(t,e){var n,r,i,o,a,c,l,u,s,f,h=e.fork(e.ALL),d=function(t){var e,n=t.method||AA.value;if(null!=AA[n])return n===AA.value?(e=void 0!==t.value?t.value:0,function(){return e}):AA[n];Ty("Unrecognized imputation method: "+n)}(t),p=function(t){var e=t.field;return function(t){return t?e(t):NaN}}(t),v=My(t.field),g=My(t.key),m=(t.groupby||[]).map(My),y=function(t,e,n,r){var i,o,a,c,l,u,s,f,h=function(t){return t(f)},d=[],p=r?r.slice():[],v={},g={};for(p.forEach((function(t,e){return v[t]=e+1})),c=0,s=t.length;c1&&!d&&Ty('Multi-field lookup requires explicit "as" parameter.'),d&&d.length!==s*r&&Ty('The "as" parameter has too few output field names.'),d=d||c.map(My),n=function(t){for(var e,n,i=0,u=0;i=l&&(e=a[r],o[CO(e)]&&n.rem.push(e),a[r]=t),++c}if(e.rem.length&&(e.visit(e.REM,(function(t){var e=CO(t);o[e]&&(o[e]=-1,n.rem.push(t)),--c})),a=a.filter((function(t){return-1!==o[CO(t)]}))),(e.rem.length||r)&&a.lengthi){for(var s=a.length-i,f=0;fh&&(h=i))})),o.start=f,o.stop=h,e.modifies(r?c:l)},_floor:function(t,e){var n="utc"===t.timezone,r=t.units?{units:t.units,step:t.step||1}:KS({extent:t.extent||Db(e.materialize(e.SOURCE).source,t.field),maxbins:t.maxbins}),i=r.units,o=r.step,a=nS(i),c=this.value||{},l=(n?ES:kS)(a,o);return l.unit=tb(a),l.units=a,l.step=o,l.start=c.start,l.stop=c.stop,this.value=l}}),Lb(tP,lE,{transform:function(t,e){var n=e.dataflow,r=t.field,i=this.value,o=function(t){return i.set(r(t),t)},a=!0;return t.modified("field")||e.modified(r.fields)?(i.clear(),e.visit(e.SOURCE,o)):e.changed()?(e.visit(e.REM,(function(t){return i.delete(r(t))})),e.visit(e.ADD,o)):a=!1,this.modified(a),i.empty>n.cleanThreshold&&n.runAfter(i.clean),e.fork()}}),Lb(eP,lE,{transform:function(t,e){(!this.value||t.modified("field")||t.modified("sort")||e.changed()||t.sort&&e.modified(t.sort.fields))&&(this.value=(t.sort?e.source.slice().sort(_O(t.sort)):e.source).map(t.field))}});var nP={row_number:function(){return{next:function(t){return t.index+1}}},rank:function(){var t;return{init:function(){return t=1},next:function(e){var n=e.index,r=e.data;return n&&e.compare(r[n-1],r[n])?t=n+1:t}}},dense_rank:function(){var t;return{init:function(){return t=1},next:function(e){var n=e.index,r=e.data;return n&&e.compare(r[n-1],r[n])?++t:t}}},percent_rank:function(){var t=nP.rank(),e=t.next;return{init:t.init,next:function(t){return(e(t)-1)/(t.data.length-1)}}},cume_dist:function(){var t;return{init:function(){return t=0},next:function(e){var n=e.data,r=e.compare,i=e.index;if(t0||Ty("ntile num must be greater than zero.");var n=nP.cume_dist(),r=n.next;return{init:n.init,next:function(t){return Math.ceil(e*r(t))}}},lag:function(t,e){return e=+e||1,{next:function(n){var r=n.index-e;return r>=0?t(n.data[r]):null}}},lead:function(t,e){return e=+e||1,{next:function(n){var r=n.index+e,i=n.data;return r0||Ty("nth_value nth must be greater than zero."),{next:function(n){var r=n.i0+(e-1);return r0&&!i(o[n],o[n-1])&&(t.i0=e.left(o,o[n])),r0)for(var r,i=t[0],o=e[0],a=t[n]-i,c=e[n]-o,l=-1;++l<=n;)r=l/n,this._basis.point(this._beta*t[l]+(1-this._beta)*(i+r*a),this._beta*e[l]+(1-this._beta)*(o+r*c));this._x=this._y=null,this._basis.lineEnd()},point:function(t,e){this._x.push(+t),this._y.push(+e)}};var gP=function t(e){function n(t){return 1===e?new fP(t):new vP(t,e)}return n.beta=function(e){return t(+e)},n}(.85);function mP(t,e,n){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-n),t._x2,t._y2)}function yP(t,e){this._context=t,this._k=(1-e)/6}yP.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:mP(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:mP(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var bP=function t(e){function n(t){return new yP(t,e)}return n.tension=function(e){return t(+e)},n}(0);function xP(t,e){this._context=t,this._k=(1-e)/6}xP.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:mP(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var wP=function t(e){function n(t){return new xP(t,e)}return n.tension=function(e){return t(+e)},n}(0);function SP(t,e){this._context=t,this._k=(1-e)/6}SP.prototype={areaStart:hP,areaEnd:hP,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:mP(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var kP=function t(e){function n(t){return new SP(t,e)}return n.tension=function(e){return t(+e)},n}(0),CP=Math.abs,OP=Math.atan2,EP=Math.cos,MP=Math.max,AP=Math.min,PP=Math.sin,_P=Math.sqrt,DP=1e-12,TP=Math.PI,ZP=TP/2,FP=2*TP;function jP(t){return t>=1?ZP:t<=-1?-ZP:Math.asin(t)}function IP(t,e,n){var r=t._x1,i=t._y1,o=t._x2,a=t._y2;if(t._l01_a>DP){var c=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,l=3*t._l01_a*(t._l01_a+t._l12_a);r=(r*c-t._x0*t._l12_2a+t._x2*t._l01_2a)/l,i=(i*c-t._y0*t._l12_2a+t._y2*t._l01_2a)/l}if(t._l23_a>DP){var u=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,s=3*t._l23_a*(t._l23_a+t._l12_a);o=(o*u+t._x1*t._l23_2a-e*t._l12_2a)/s,a=(a*u+t._y1*t._l23_2a-n*t._l12_2a)/s}t._context.bezierCurveTo(r,i,o,a,t._x2,t._y2)}function RP(t,e){this._context=t,this._alpha=e}RP.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:IP(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var LP=function t(e){function n(t){return e?new RP(t,e):new yP(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function NP(t,e){this._context=t,this._alpha=e}NP.prototype={areaStart:hP,areaEnd:hP,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:IP(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var BP=function t(e){function n(t){return e?new NP(t,e):new SP(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function zP(t,e){this._context=t,this._alpha=e}zP.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:IP(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var UP,HP,WP,VP,GP,XP,qP,YP,$P,KP,JP,QP,t_,e_,n_=function t(e){function n(t){return e?new zP(t,e):new xP(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function r_(t){this._context=t}function i_(t){return new r_(t)}function o_(t){this._context=t}function a_(t){return t<0?-1:1}function c_(t,e,n){var r=t._x1-t._x0,i=e-t._x1,o=(t._y1-t._y0)/(r||i<0&&-0),a=(n-t._y1)/(i||r<0&&-0),c=(o*i+a*r)/(r+i);return(a_(o)+a_(a))*Math.min(Math.abs(o),Math.abs(a),.5*Math.abs(c))||0}function l_(t,e){var n=t._x1-t._x0;return n?(3*(t._y1-t._y0)/n-e)/2:e}function u_(t,e,n){var r=t._x0,i=t._y0,o=t._x1,a=t._y1,c=(o-r)/3;t._context.bezierCurveTo(r+c,i+c*e,o-c,a-c*n,o,a)}function s_(t){this._context=t}function f_(t){this._context=new h_(t)}function h_(t){this._context=t}function d_(t){this._context=t}function p_(t){var e,n,r=t.length-1,i=new Array(r),o=new Array(r),a=new Array(r);for(i[0]=0,o[0]=2,a[0]=t[0]+2*t[1],e=1;e=0;--e)i[e]=(a[e]-i[e+1])/o[e];for(o[r-1]=(t[r]+i[r-1])/2,e=0;e=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var n=this._x*(1-this._t)+t*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,e)}}this._x=t,this._y=e}};var y_=Math.PI,b_=2*y_,x_=1e-6,w_=b_-x_;function S_(t){this._+=t[0];for(var e=1,n=t.length;e=0))throw new Error("invalid digits: ".concat(t));if(e>15)return S_;var n=Math.pow(10,e);return function(t){this._+=t[0];for(var e=1,r=t.length;ex_)if(Math.abs(s*c-l*u)>x_&&i){var h=n-o,d=r-a,p=c*c+l*l,v=h*h+d*d,g=Math.sqrt(p),m=Math.sqrt(f),y=i*Math.tan((y_-Math.acos((p+f-v)/(2*g*m)))/2),b=y/m,x=y/g;Math.abs(b-1)>x_&&this._append(YP||(YP=m_(["L",",",""])),t+b*u,e+b*s),this._append($P||($P=m_(["A",",",",0,0,",",",",",""])),i,i,+(s*h>u*d),this._x1=t+x*c,this._y1=e+x*l)}else this._append(qP||(qP=m_(["L",",",""])),this._x1=t,this._y1=e);else;}},{key:"arc",value:function(t,e,n,r,i,o){if(t=+t,e=+e,o=!!o,(n=+n)<0)throw new Error("negative radius: ".concat(n));var a=n*Math.cos(r),c=n*Math.sin(r),l=t+a,u=e+c,s=1^o,f=o?r-i:i-r;null===this._x1?this._append(KP||(KP=m_(["M",",",""])),l,u):(Math.abs(this._x1-l)>x_||Math.abs(this._y1-u)>x_)&&this._append(JP||(JP=m_(["L",",",""])),l,u),n&&(f<0&&(f=f%b_+b_),f>w_?this._append(QP||(QP=m_(["A",",",",0,1,",",",",","A",",",",0,1,",",",",",""])),n,n,s,t-a,e-c,n,n,s,this._x1=l,this._y1=u):f>x_&&this._append(t_||(t_=m_(["A",",",",0,",",",",",",",""])),n,n,+(f>=y_),s,this._x1=t+n*Math.cos(i),this._y1=e+n*Math.sin(i)))}},{key:"rect",value:function(t,e,n,r){this._append(e_||(e_=m_(["M",",","h","v","h","Z"])),this._x0=this._x1=+t,this._y0=this._y1=+e,n=+n,+r,-n)}},{key:"toString",value:function(){return this._}}]),t}();function C_(){return new k_}function O_(t){var e=3;return t.digits=function(n){if(!arguments.length)return e;if(null==n)e=null;else{var r=Math.floor(n);if(!(r>=0))throw new RangeError("invalid digits: ".concat(n));e=r}return t},function(){return new k_(e)}}function E_(t){return t.innerRadius}function M_(t){return t.outerRadius}function A_(t){return t.startAngle}function P_(t){return t.endAngle}function __(t){return t&&t.padAngle}function D_(t,e,n,r,i,o,a){var c=t-n,l=e-r,u=(a?o:-o)/_P(c*c+l*l),s=u*l,f=-u*c,h=t+s,d=e+f,p=n+s,v=r+f,g=(h+p)/2,m=(d+v)/2,y=p-h,b=v-d,x=y*y+b*b,w=i-o,S=h*v-p*d,k=(b<0?-1:1)*_P(MP(0,w*w*x-S*S)),C=(S*b-y*k)/x,O=(-S*y-b*k)/x,E=(S*b+y*k)/x,M=(-S*y+b*k)/x,A=C-g,P=O-m,_=E-g,D=M-m;return A*A+P*P>_*_+D*D&&(C=E,O=M),{cx:C,cy:O,x01:-s,y01:-f,x11:C*(i/w-1),y11:O*(i/w-1)}}C_.prototype=k_.prototype;Array.prototype.slice;function T_(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}function Z_(t){return t[0]}function F_(t){return t[1]}function j_(t,e){var n=g_(!0),r=null,i=i_,o=null,a=O_(c);function c(c){var l,u,s,f=(c=T_(c)).length,h=!1;for(null==r&&(o=i(s=a())),l=0;l<=f;++l)!(l=f;--h)c.point(m[h],y[h]);c.lineEnd(),c.areaEnd()}g&&(m[s]=+t(d,s,u),y[s]=+e(d,s,u),c.point(r?+r(d,s,u):m[s],n?+n(d,s,u):y[s]))}if(p)return c=null,p+""||null}function s(){return j_().defined(i).curve(a).context(o)}return t="function"==typeof t?t:void 0===t?Z_:g_(+t),e="function"==typeof e?e:g_(void 0===e?0:+e),n="function"==typeof n?n:void 0===n?F_:g_(+n),u.x=function(e){return arguments.length?(t="function"==typeof e?e:g_(+e),r=null,u):t},u.x0=function(e){return arguments.length?(t="function"==typeof e?e:g_(+e),u):t},u.x1=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:g_(+t),u):r},u.y=function(t){return arguments.length?(e="function"==typeof t?t:g_(+t),n=null,u):e},u.y0=function(t){return arguments.length?(e="function"==typeof t?t:g_(+t),u):e},u.y1=function(t){return arguments.length?(n=null==t?null:"function"==typeof t?t:g_(+t),u):n},u.lineX0=u.lineY0=function(){return s().x(t).y(e)},u.lineY1=function(){return s().x(t).y(n)},u.lineX1=function(){return s().x(r).y(e)},u.defined=function(t){return arguments.length?(i="function"==typeof t?t:g_(!!t),u):i},u.curve=function(t){return arguments.length?(a=t,null!=o&&(c=a(o)),u):a},u.context=function(t){return arguments.length?(null==t?o=c=null:c=a(o=t),u):o},u}_P(3);var R_={draw:function(t,e){var n=_P(e/TP);t.moveTo(n,0),t.arc(0,0,n,0,FP)}},L_=(_P(1/3),PP(TP/10)/PP(7*TP/10));PP(FP/10),EP(FP/10),_P(3),_P(3),_P(3),_P(12);function N_(t,e){if("undefined"!=typeof document&&document.createElement){var n=document.createElement("canvas");if(n&&n.getContext)return n.width=t,n.height=e,n}return null}var B_=function(){return"undefined"!=typeof Image?Image:null},z_=/^(data:|([A-Za-z]+:)?\/\/)/,U_=/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,H_=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,W_="file://";function V_(t,e){return G_.apply(this,arguments)}function G_(){return(G_=Gm(q().mark((function t(e,n){var r,i;return q().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.sanitize(e,n);case 2:return r=t.sent,i=r.href,t.abrupt("return",r.localFile?this.file(i):this.http(i,n));case 5:case"end":return t.stop()}}),t,this)})))).apply(this,arguments)}function X_(t,e){return q_.apply(this,arguments)}function q_(){return q_=Gm(q().mark((function t(e,n){var r,i,o,a,c,l,u;return q().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=_b({},this.options,n),r=this.fileAccess,i={href:null},l=U_.test(e.replace(H_,"")),null!=e&&"string"==typeof e&&l||Ty("Sanitize failure, invalid URI: "+tx(e)),u=z_.test(e),(c=n.baseURL)&&!u&&(e.startsWith("/")||c.endsWith("/")||(e="/"+e),e=c+e),a=(o=e.startsWith(W_))||"file"===n.mode||"http"!==n.mode&&!u&&r,o?e=e.slice(W_.length):e.startsWith("//")&&("file"===n.defaultProtocol?(e=e.slice(2),a=!0):e=(n.defaultProtocol||"http")+":"+e),Object.defineProperty(i,"localFile",{value:!!a}),i.href=e,n.target&&(i.target=n.target+""),n.rel&&(i.rel=n.rel+""),"image"===n.context&&n.crossOrigin&&(i.crossOrigin=n.crossOrigin+""),t.abrupt("return",i);case 14:case"end":return t.stop()}}),t,this)}))),q_.apply(this,arguments)}function Y_(t){return t?function(e){return new Promise((function(n,r){t.readFile(e,(function(t,e){t?r(t):n(e)}))}))}:$_}function $_(){return K_.apply(this,arguments)}function K_(){return(K_=Gm(q().mark((function t(){return q().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:Ty("No file system access.");case 1:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function J_(t){return t?function(){var e=Gm(q().mark((function e(n,r){var i,o,a;return q().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=_b({},this.options.http,r),o=r&&r.response,e.next=4,t(n,i);case 4:return a=e.sent,e.abrupt("return",a.ok?wb(a[o])?a[o]():a.text():Ty(a.status+""+a.statusText));case 6:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}():Q_}function Q_(){return tD.apply(this,arguments)}function tD(){return(tD=Gm(q().mark((function t(){return q().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:Ty("No HTTP fetch method available.");case 1:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function eD(t){var e=function(e,n){var r={delimiter:t};return nD(e,n?_b(n,r):r)};return e.responseType="text",e}function nD(t,e){return e.header&&(t=e.header.map(tx).join(e.delimiter)+"\n"+t),mx(e.delimiter).parse(t+"")}function rD(t,e){var n,r=e&&e.property?Fy(e.property):Iy;return!Yy(t)||(n=t,"function"==typeof Buffer&&wb(Buffer.isBuffer)&&Buffer.isBuffer(n))?r(JSON.parse(t)):function(t,e){!qy(t)&&Ub(t)&&(t=(0,Xm.Z)(t));return e&&e.copy?JSON.parse(JSON.stringify(t)):t}(r(t),e)}nD.responseType="text",rD.responseType="json";var iD={interior:function(t,e){return t!==e},exterior:function(t,e){return t===e}};function oD(t,e){var n,r,i,o;return t=rD(t,e),e&&e.feature?(n=bx,i=e.feature):e&&e.mesh?(n=kx,i=e.mesh,o=iD[e.filter]):Ty("Missing TopoJSON feature or mesh parameter."),(r=(r=t.objects[i])?n(t,r,o):Ty("Invalid TopoJSON object: "+i))&&r.features||[r]}oD.responseType="json";eD(","),eD("\t");var aD=function(t,e){return function(n){return{options:n||{},sanitize:X_,load:V_,fileAccess:!!e,file:Y_(e),http:J_(t)}}}("undefined"!=typeof fetch&&fetch,null),cD=zw(Nw),lD=cD.right,uD=cD.left,sD=(zw(OE).center,lD),fD=n(23713),hD=n(44922);function dD(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+e*n)}}function pD(t){return+t}var vD=[0,1];function gD(t){return t}function mD(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:function(t){return function(){return t}}(isNaN(e)?NaN:.5)}function yD(t,e,n){var r=t[0],i=t[1],o=e[0],a=e[1];return ie&&(n=t,t=e,e=n),function(n){return Math.max(t,Math.min(e,n))}}(a[0],a[t-1])),r=t>2?bD:yD,i=o=null,f}function f(e){return null==e||isNaN(e=+e)?n:(i||(i=r(a.map(t),c,l)))(t(u(e)))}return f.invert=function(n){return u(e((o||(o=r(c,a.map(t),hD.Z)))(n)))},f.domain=function(t){return arguments.length?(a=Array.from(t,pD),s()):a.slice()},f.range=function(t){return arguments.length?(c=Array.from(t),s()):c.slice()},f.rangeRound=function(t){return c=Array.from(t),l=dD,s()},f.clamp=function(t){return arguments.length?(u=!!t||gD,s()):u!==gD},f.interpolate=function(t){return arguments.length?(l=t,s()):l},f.unknown=function(t){return arguments.length?(n=t,f):n},function(n,r){return t=n,e=r,s()}}function SD(){return wD()(gD,gD)}function kD(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t)}return this}function CD(t,e){switch(arguments.length){case 0:break;case 1:"function"==typeof t?this.interpolator(t):this.range(t);break;default:this.domain(t),"function"==typeof e?this.interpolator(e):this.range(e)}return this}var OD,ED=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function MD(t){if(!(e=ED.exec(t)))throw new Error("invalid format: "+t);var e;return new AD({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}function AD(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function PD(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var n,r=t.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+t.slice(n+1)]}function _D(t){return(t=PD(Math.abs(t)))?t[1]:NaN}function DD(t,e){var n=PD(t,e);if(!n)return t+"";var r=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}MD.prototype=AD.prototype,AD.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var TD={"%":function(t,e){return(100*t).toFixed(e)},b:function(t){return Math.round(t).toString(2)},c:function(t){return t+""},d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)},e:function(t,e){return t.toExponential(e)},f:function(t,e){return t.toFixed(e)},g:function(t,e){return t.toPrecision(e)},o:function(t){return Math.round(t).toString(8)},p:function(t,e){return DD(100*t,e)},r:DD,s:function(t,e){var n=PD(t,e);if(!n)return t+"";var r=n[0],i=n[1],o=i-(OD=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,a=r.length;return o===a?r:o>a?r+new Array(o-a+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+PD(t,Math.max(0,e+o-1))[0]},X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}};function ZD(t){return t}var FD,jD,ID,RD=Array.prototype.map,LD=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function ND(t){var e,n,r=void 0===t.grouping||void 0===t.thousands?ZD:(e=RD.call(t.grouping,Number),n=t.thousands+"",function(t,r){for(var i=t.length,o=[],a=0,c=e[0],l=0;i>0&&c>0&&(l+c+1>r&&(c=Math.max(1,r-l)),o.push(t.substring(i-=c,i+c)),!((l+=c+1)>r));)c=e[a=(a+1)%e.length];return o.reverse().join(n)}),i=void 0===t.currency?"":t.currency[0]+"",o=void 0===t.currency?"":t.currency[1]+"",a=void 0===t.decimal?".":t.decimal+"",c=void 0===t.numerals?ZD:function(t){return function(e){return e.replace(/[0-9]/g,(function(e){return t[+e]}))}}(RD.call(t.numerals,String)),l=void 0===t.percent?"%":t.percent+"",u=void 0===t.minus?"−":t.minus+"",s=void 0===t.nan?"NaN":t.nan+"";function f(t){var e=(t=MD(t)).fill,n=t.align,f=t.sign,h=t.symbol,d=t.zero,p=t.width,v=t.comma,g=t.precision,m=t.trim,y=t.type;"n"===y?(v=!0,y="g"):TD[y]||(void 0===g&&(g=12),m=!0,y="g"),(d||"0"===e&&"="===n)&&(d=!0,e="0",n="=");var b="$"===h?i:"#"===h&&/[boxX]/.test(y)?"0"+y.toLowerCase():"",x="$"===h?o:/[%p]/.test(y)?l:"",w=TD[y],S=/[defgprs%]/.test(y);function k(t){var i,o,l,h=b,k=x;if("c"===y)k=w(t)+k,t="";else{var C=(t=+t)<0||1/t<0;if(t=isNaN(t)?s:w(Math.abs(t),g),m&&(t=function(t){t:for(var e,n=t.length,r=1,i=-1;r0&&(i=0)}return i>0?t.slice(0,i)+t.slice(e+1):t}(t)),C&&0==+t&&"+"!==f&&(C=!1),h=(C?"("===f?f:u:"-"===f||"("===f?"":f)+h,k=("s"===y?LD[8+OD/3]:"")+k+(C&&"("===f?")":""),S)for(i=-1,o=t.length;++i(l=t.charCodeAt(i))||l>57){k=(46===l?a+t.slice(i+1):t.slice(i))+k,t=t.slice(0,i);break}}v&&!d&&(t=r(t,1/0));var O=h.length+t.length+k.length,E=O>1)+h+t+k+E.slice(O);break;default:t=E+h+t+k}return c(t)}return g=void 0===g?6:/[gprs]/.test(y)?Math.max(1,Math.min(21,g)):Math.max(0,Math.min(20,g)),k.toString=function(){return t+""},k}return{format:f,formatPrefix:function(t,e){var n=f(((t=MD(t)).type="f",t)),r=3*Math.max(-8,Math.min(8,Math.floor(_D(e)/3))),i=Math.pow(10,-r),o=LD[8+r/3];return function(t){return n(i*t)+o}}}}function BD(t,e,n,r){var i,o=Dx(t,e,n);switch((r=MD(null==r?",f":r)).type){case"s":var a=Math.max(Math.abs(t),Math.abs(e));return null!=r.precision||isNaN(i=function(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(_D(e)/3)))-_D(Math.abs(t)))}(o,a))||(r.precision=i),ID(r,a);case"":case"e":case"g":case"p":case"r":null!=r.precision||isNaN(i=function(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,_D(e)-_D(t))+1}(o,Math.max(Math.abs(t),Math.abs(e))))||(r.precision=i-("e"===r.type));break;case"f":case"%":null!=r.precision||isNaN(i=function(t){return Math.max(0,-_D(Math.abs(t)))}(o))||(r.precision=i-2*("%"===r.type))}return jD(r)}function zD(t){var e=t.domain;return t.ticks=function(t){var n=e();return Px(n[0],n[n.length-1],null==t?10:t)},t.tickFormat=function(t,n){var r=e();return BD(r[0],r[r.length-1],null==t?10:t,n)},t.nice=function(n){null==n&&(n=10);var r,i,o=e(),a=0,c=o.length-1,l=o[a],u=o[c],s=10;for(u0;){if((i=_x(l,u,n))===r)return o[a]=l,o[c]=u,e(o);if(i>0)l=Math.floor(l/i)*i,u=Math.ceil(u/i)*i;else{if(!(i<0))break;l=Math.ceil(l*i)/i,u=Math.floor(u*i)/i}r=i}return t},t}function UD(t,e){var n,r=0,i=(t=t.slice()).length-1,o=t[r],a=t[i];return a0){for(;h<=d;++h)for(s=1;sc)break;v.push(f)}}else for(;h<=d;++h)for(s=o-1;s>=1;--s)if(!((f=h>0?s/n(-h):s*n(h))c)break;v.push(f)}2*v.length68?1900:2e3),n+r[0].length):-1}function FT(t,e,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function jT(t,e,n){var r=xT.exec(e.slice(n,n+1));return r?(t.q=3*r[0]-3,n+r[0].length):-1}function IT(t,e,n){var r=xT.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function RT(t,e,n){var r=xT.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function LT(t,e,n){var r=xT.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function NT(t,e,n){var r=xT.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function BT(t,e,n){var r=xT.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function zT(t,e,n){var r=xT.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function UT(t,e,n){var r=xT.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function HT(t,e,n){var r=xT.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function WT(t,e,n){var r=wT.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function VT(t,e,n){var r=xT.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function GT(t,e,n){var r=xT.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function XT(t,e){return kT(t.getDate(),e,2)}function qT(t,e){return kT(t.getHours(),e,2)}function YT(t,e){return kT(t.getHours()%12||12,e,2)}function $T(t,e){return kT(1+rw.count(Sw(t),t),e,3)}function KT(t,e){return kT(t.getMilliseconds(),e,3)}function JT(t,e){return KT(t,e)+"000"}function QT(t,e){return kT(t.getMonth()+1,e,2)}function tZ(t,e){return kT(t.getMinutes(),e,2)}function eZ(t,e){return kT(t.getSeconds(),e,2)}function nZ(t){var e=t.getDay();return 0===e?7:e}function rZ(t,e){return kT(cw.count(Sw(t)-1,t),e,2)}function iZ(t){var e=t.getDay();return e>=4||0===e?fw(t):fw.ceil(t)}function oZ(t,e){return t=iZ(t),kT(fw.count(Sw(t),t)+(4===Sw(t).getDay()),e,2)}function aZ(t){return t.getDay()}function cZ(t,e){return kT(lw.count(Sw(t)-1,t),e,2)}function lZ(t,e){return kT(t.getFullYear()%100,e,2)}function uZ(t,e){return kT((t=iZ(t)).getFullYear()%100,e,2)}function sZ(t,e){return kT(t.getFullYear()%1e4,e,4)}function fZ(t,e){var n=t.getDay();return kT((t=n>=4||0===n?fw(t):fw.ceil(t)).getFullYear()%1e4,e,4)}function hZ(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+kT(e/60|0,"0",2)+kT(e%60,"0",2)}function dZ(t,e){return kT(t.getUTCDate(),e,2)}function pZ(t,e){return kT(t.getUTCHours(),e,2)}function vZ(t,e){return kT(t.getUTCHours()%12||12,e,2)}function gZ(t,e){return kT(1+iw.count(kw(t),t),e,3)}function mZ(t,e){return kT(t.getUTCMilliseconds(),e,3)}function yZ(t,e){return mZ(t,e)+"000"}function bZ(t,e){return kT(t.getUTCMonth()+1,e,2)}function xZ(t,e){return kT(t.getUTCMinutes(),e,2)}function wZ(t,e){return kT(t.getUTCSeconds(),e,2)}function SZ(t){var e=t.getUTCDay();return 0===e?7:e}function kZ(t,e){return kT(vw.count(kw(t)-1,t),e,2)}function CZ(t){var e=t.getUTCDay();return e>=4||0===e?bw(t):bw.ceil(t)}function OZ(t,e){return t=CZ(t),kT(bw.count(kw(t),t)+(4===kw(t).getUTCDay()),e,2)}function EZ(t){return t.getUTCDay()}function MZ(t,e){return kT(gw.count(kw(t)-1,t),e,2)}function AZ(t,e){return kT(t.getUTCFullYear()%100,e,2)}function PZ(t,e){return kT((t=CZ(t)).getUTCFullYear()%100,e,2)}function _Z(t,e){return kT(t.getUTCFullYear()%1e4,e,4)}function DZ(t,e){var n=t.getUTCDay();return kT((t=n>=4||0===n?bw(t):bw.ceil(t)).getUTCFullYear()%1e4,e,4)}function TZ(){return"+0000"}function ZZ(){return"%"}function FZ(t){return+t}function jZ(t){return Math.floor(+t/1e3)}function IZ(t){return new Date(t)}function RZ(t){return t instanceof Date?+t:+new Date(+t)}function LZ(t,e,n,r,i,o,a,c,l,u){var s=SD(),f=s.invert,h=s.domain,d=u(".%L"),p=u(":%S"),v=u("%I:%M"),g=u("%I %p"),m=u("%a %d"),y=u("%b %d"),b=u("%B"),x=u("%Y");function w(t){return(l(t)=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function XZ(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:FZ,s:jZ,S:eZ,u:nZ,U:rZ,V:oZ,w:aZ,W:cZ,x:null,X:null,y:lZ,Y:sZ,Z:hZ,"%":ZZ},x={a:function(t){return a[t.getUTCDay()]},A:function(t){return o[t.getUTCDay()]},b:function(t){return l[t.getUTCMonth()]},B:function(t){return c[t.getUTCMonth()]},c:null,d:dZ,e:dZ,f:yZ,g:PZ,G:DZ,H:pZ,I:vZ,j:gZ,L:mZ,m:bZ,M:xZ,p:function(t){return i[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:FZ,s:jZ,S:wZ,u:SZ,U:kZ,V:OZ,w:EZ,W:MZ,x:null,X:null,y:AZ,Y:_Z,Z:TZ,"%":ZZ},w={a:function(t,e,n){var r=d.exec(e.slice(n));return r?(t.w=p.get(r[0].toLowerCase()),n+r[0].length):-1},A:function(t,e,n){var r=f.exec(e.slice(n));return r?(t.w=h.get(r[0].toLowerCase()),n+r[0].length):-1},b:function(t,e,n){var r=m.exec(e.slice(n));return r?(t.m=y.get(r[0].toLowerCase()),n+r[0].length):-1},B:function(t,e,n){var r=v.exec(e.slice(n));return r?(t.m=g.get(r[0].toLowerCase()),n+r[0].length):-1},c:function(t,n,r){return C(t,e,n,r)},d:RT,e:RT,f:HT,g:ZT,G:TT,H:NT,I:NT,j:LT,L:UT,m:IT,M:BT,p:function(t,e,n){var r=u.exec(e.slice(n));return r?(t.p=s.get(r[0].toLowerCase()),n+r[0].length):-1},q:jT,Q:VT,s:GT,S:zT,u:AT,U:PT,V:_T,w:MT,W:DT,x:function(t,e,r){return C(t,n,e,r)},X:function(t,e,n){return C(t,r,e,n)},y:ZT,Y:TT,Z:FT,"%":WT};function S(t,e){return function(n){var r,i,o,a=[],c=-1,l=0,u=t.length;for(n instanceof Date||(n=new Date(+n));++c53)return null;"w"in o||(o.w=1),"Z"in o?(i=(r=pT(vT(o.y,0,1))).getUTCDay(),r=i>4||0===i?gw.ceil(r):gw(r),r=iw.offset(r,7*(o.V-1)),o.y=r.getUTCFullYear(),o.m=r.getUTCMonth(),o.d=r.getUTCDate()+(o.w+6)%7):(i=(r=dT(vT(o.y,0,1))).getDay(),r=i>4||0===i?lw.ceil(r):lw(r),r=rw.offset(r,7*(o.V-1)),o.y=r.getFullYear(),o.m=r.getMonth(),o.d=r.getDate()+(o.w+6)%7)}else("W"in o||"U"in o)&&("w"in o||(o.w="u"in o?o.u%7:"W"in o?1:0),i="Z"in o?pT(vT(o.y,0,1)).getUTCDay():dT(vT(o.y,0,1)).getDay(),o.m=0,o.d="W"in o?(o.w+6)%7+7*o.W-(i+5)%7:o.w+7*o.U-(i+6)%7);return"Z"in o?(o.H+=o.Z/100|0,o.M+=o.Z%100,pT(o)):dT(o)}}function C(t,e,n,r){for(var i,o,a=0,c=e.length,l=n.length;a=l)return-1;if(37===(i=e.charCodeAt(a++))){if(i=e.charAt(a++),!(o=w[i in bT?e.charAt(a++):i])||(r=o(t,n,r))<0)return-1}else if(i!=n.charCodeAt(r++))return-1}return r}return b.x=S(n,b),b.X=S(r,b),b.c=S(e,b),x.x=S(n,x),x.X=S(r,x),x.c=S(e,x),{format:function(t){var e=S(t+="",b);return e.toString=function(){return t},e},parse:function(t){var e=k(t+="",!1);return e.toString=function(){return t},e},utcFormat:function(t){var e=S(t+="",x);return e.toString=function(){return t},e},utcParse:function(t){var e=k(t+="",!0);return e.toString=function(){return t},e}}}(t),mT=gT.format,gT.parse,yT=gT.utcFormat,gT.utcParse}({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});var YZ=n(94785);function $Z(t,e,n){return $Z=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(F2t){return!1}}()?Reflect.construct.bind():function(t,e,n){var r=[null];r.push.apply(r,e);var i=new(Function.bind.apply(t,r));return n&&(0,YZ.Z)(i,n.prototype),i},$Z.apply(null,arguments)}function KZ(t){var e="function"==typeof Map?new Map:void 0;return KZ=function(t){if(null===t||(n=t,-1===Function.toString.call(n).indexOf("[native code]")))return t;var n;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,r)}function r(){return $Z(t,arguments,(0,Um.Z)(this).constructor)}return r.prototype=Object.create(t.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),(0,YZ.Z)(r,t)},KZ(t)}function JZ(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return QZ(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return QZ(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function QZ(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n1&&void 0!==arguments[1]?arguments[1]:aF;if((0,Rm.Z)(this,n),r=e.call(this),Object.defineProperties((0,Nm.Z)(r),{_intern:{value:new Map},_key:{value:i}}),null!=t){var o,a=JZ(t);try{for(a.s();!(o=a.n()).done;){var c=(0,G.Z)(o.value,2),l=c[0],u=c[1];r.set(l,u)}}catch(s){a.e(s)}finally{a.f()}}return r}return(0,Lm.Z)(n,[{key:"get",value:function(t){return qZ((0,Um.Z)(n.prototype),"get",this).call(this,rF(this,t))}},{key:"has",value:function(t){return qZ((0,Um.Z)(n.prototype),"has",this).call(this,rF(this,t))}},{key:"set",value:function(t,e){return qZ((0,Um.Z)(n.prototype),"set",this).call(this,iF(this,t),e)}},{key:"delete",value:function(t){return qZ((0,Um.Z)(n.prototype),"delete",this).call(this,oF(this,t))}}]),n}(KZ(Map)),nF=function(t){(0,Bm.Z)(n,t);var e=tF(n);function n(t){var r,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:aF;if((0,Rm.Z)(this,n),r=e.call(this),Object.defineProperties((0,Nm.Z)(r),{_intern:{value:new Map},_key:{value:i}}),null!=t){var o,a=JZ(t);try{for(a.s();!(o=a.n()).done;){var c=o.value;r.add(c)}}catch(l){a.e(l)}finally{a.f()}}return r}return(0,Lm.Z)(n,[{key:"has",value:function(t){return qZ((0,Um.Z)(n.prototype),"has",this).call(this,rF(this,t))}},{key:"add",value:function(t){return qZ((0,Um.Z)(n.prototype),"add",this).call(this,iF(this,t))}},{key:"delete",value:function(t){return qZ((0,Um.Z)(n.prototype),"delete",this).call(this,oF(this,t))}}]),n}(KZ(Set));function rF(t,e){var n=t._intern,r=(0,t._key)(e);return n.has(r)?n.get(r):e}function iF(t,e){var n=t._intern,r=(0,t._key)(e);return n.has(r)?n.get(r):(n.set(r,e),e)}function oF(t,e){var n=t._intern,r=(0,t._key)(e);return n.has(r)&&(e=n.get(r),n.delete(r)),e}function aF(t){return null!==t&&"object"==typeof t?t.valueOf():t}function cF(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return lF(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return lF(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function lF(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n180?e+=360:e-t>180&&(t+=360),o.push({i:n.push(i(n)+"rotate(",null,r)-2,x:(0,hD.Z)(t,e)})):e&&n.push(i(n)+"rotate("+e+r)}(o.rotate,a.rotate,c,l),function(t,e,n,o){t!==e?o.push({i:n.push(i(n)+"skewX(",null,r)-2,x:(0,hD.Z)(t,e)}):e&&n.push(i(n)+"skewX("+e+r)}(o.skewX,a.skewX,c,l),function(t,e,n,r,o,a){if(t!==n||e!==r){var c=o.push(i(o)+"scale(",null,",",null,")");a.push({i:c-4,x:(0,hD.Z)(t,n)},{i:c-2,x:(0,hD.Z)(e,r)})}else 1===n&&1===r||o.push(i(o)+"scale("+n+","+r+")")}(o.scaleX,o.scaleY,a.scaleX,a.scaleY,c,l),o=a=null,function(t){for(var e,n=-1,r=l.length;++nWF?Math.pow(t,1/3):t/HF+zF}function YF(t){return t>UF?t*t*t:HF*(t-zF)}function $F(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function KF(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function JF(t){if(t instanceof tj)return new tj(t.h,t.c,t.l,t.opacity);if(t instanceof XF||(t=VF(t)),0===t.a&&0===t.b)return new tj(NaN,00?r:1:0}var kj="linear",Cj="log",Oj="pow",Ej="sqrt",Mj="symlog",Aj="time",Pj="utc",_j="sequential",Dj="diverging",Tj="quantile",Zj="quantize",Fj="threshold",jj="ordinal",Ij="point",Rj="band",Lj="bin-ordinal",Nj="continuous",Bj="discrete",zj="discretizing",Uj="interpolating",Hj="temporal";function Wj(){var t,e,n=sF().unknown(void 0),r=n.domain,i=n.range,o=[0,1],a=!1,c=0,l=0,u=.5;function s(){var n=r().length,s=o[1]o[1-l])))return n=Math.max(0,lD(u,f)-1),a=f===h?n:lD(u,h)-1,f-u[n]>e+1e-10&&++n,l&&(c=n,n=s-a,a=s-c),n>a?void 0:r().slice(n,a+1)}},n.invert=function(t){var e=n.invertRange([t,t]);return e?e[0]:e},n.copy=function(){return Wj().domain(r()).range(o).round(a).paddingInner(c).paddingOuter(l).align(u)},s()}function Vj(t){var e=t.copy;return t.padding=t.paddingOuter,delete t.paddingInner,t.copy=function(){return Vj(e())},t}var Gj=Array.prototype.map;var Xj=Array.prototype.slice;var qj=new Map,Yj=Symbol("vega_scale");function $j(t){return t[Yj]=!0,t}function Kj(t,e,n){return arguments.length>1?(qj.set(t,function(t,e,n){var r=function(){var n=e();return n.invertRange||(n.invertRange=n.invert?function(t){return function(e){var n,r=e[0],i=e[1];return i=c&&a[i]<=l&&(u<0&&(u=i),n=i);if(!(u<0))return c=t.invertExtent(a[u]),l=t.invertExtent(a[n]),[void 0===c[0]?c[1]:c[0],void 0===l[1]?l[0]:l[1]]}}(n):void 0),n.type=t,$j(n)};return r.metadata=ox(bb(n)),r}(t,e,n)),this):Jj(t)?qj.get(t):void 0}function Jj(t){return qj.has(t)}function Qj(t,e){var n=qj.get(t);return n&&n.metadata[e]}function tI(t){return Qj(t,Nj)}function eI(t){return Qj(t,Bj)}function nI(t){return Qj(t,zj)}function rI(t){return Qj(t,Cj)}function iI(t){return Qj(t,Uj)}function oI(t){return Qj(t,Tj)}Kj("identity",(function t(e){var n;function r(t){return null==t||isNaN(t=+t)?n:t}return r.invert=r,r.domain=r.range=function(t){return arguments.length?(e=Array.from(t,pD),r):e.slice()},r.unknown=function(t){return arguments.length?(n=t,r):n},r.copy=function(){return t(e).unknown(n)},e=arguments.length?Array.from(e,pD):[0,1],zD(r)})),Kj(kj,(function t(){var e=SD();return e.copy=function(){return xD(e,t())},kD.apply(e,arguments),zD(e)}),Nj),Kj(Cj,(function t(){var e=YD(wD()).domain([1,10]);return e.copy=function(){return xD(e,t()).base(e.base())},kD.apply(e,arguments),e}),[Nj,Cj]),Kj(Oj,tT,Nj),Kj(Ej,(function(){return tT.apply(null,arguments).exponent(.5)}),Nj),Kj(Mj,(function t(){var e=rT(wD());return e.copy=function(){return xD(e,t()).constant(e.constant())},kD.apply(e,arguments)}),Nj),Kj(Aj,(function(){return kD.apply(LZ(fT,hT,Sw,Cw,cw,rw,Ew,Aw,_w,mT).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}),[Nj,Hj]),Kj(Pj,(function(){return kD.apply(LZ(cT,lT,kw,Ow,vw,iw,Mw,Pw,_w,yT).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}),[Nj,Hj]),Kj(_j,zZ,[Nj,Uj]),Kj("".concat(_j,"-").concat(kj),zZ,[Nj,Uj]),Kj("".concat(_j,"-").concat(Cj),(function t(){var e=YD(NZ()).domain([1,10]);return e.copy=function(){return BZ(e,t()).base(e.base())},CD.apply(e,arguments)}),[Nj,Uj,Cj]),Kj("".concat(_j,"-").concat(Oj),UZ,[Nj,Uj]),Kj("".concat(_j,"-").concat(Ej),(function(){return UZ.apply(null,arguments).exponent(.5)}),[Nj,Uj]),Kj("".concat(_j,"-").concat(Mj),(function t(){var e=rT(NZ());return e.copy=function(){return BZ(e,t()).constant(e.constant())},CD.apply(e,arguments)}),[Nj,Uj]),Kj("".concat(Dj,"-").concat(kj),(function t(){var e=zD(WZ()(gD));return e.copy=function(){return BZ(e,t())},CD.apply(e,arguments)}),[Nj,Uj]),Kj("".concat(Dj,"-").concat(Cj),(function t(){var e=YD(WZ()).domain([.1,1,10]);return e.copy=function(){return BZ(e,t()).base(e.base())},CD.apply(e,arguments)}),[Nj,Uj,Cj]),Kj("".concat(Dj,"-").concat(Oj),VZ,[Nj,Uj]),Kj("".concat(Dj,"-").concat(Ej),(function(){return VZ.apply(null,arguments).exponent(.5)}),[Nj,Uj]),Kj("".concat(Dj,"-").concat(Mj),(function t(){var e=rT(WZ());return e.copy=function(){return BZ(e,t()).constant(e.constant())},CD.apply(e,arguments)}),[Nj,Uj]),Kj(Tj,(function t(){var e,n=[],r=[],i=[];function o(){var t=0,e=Math.max(1,r.length);for(i=new Array(e-1);++t0?i[e-1]:n[0],e=i?[o[i-1],r]:[o[e-1],o[e]]},c.unknown=function(t){return arguments.length?(e=t,c):c},c.thresholds=function(){return o.slice()},c.copy=function(){return t().domain([n,r]).range(a).unknown(e)},kD.apply(zD(c),arguments)}),zj),Kj(Fj,(function t(){var e,n=[.5],r=[0,1],i=1;function o(t){return null!=t&&t<=t?r[sD(n,t,0,i)]:e}return o.domain=function(t){return arguments.length?(n=Array.from(t),i=Math.min(n.length,r.length-1),o):n.slice()},o.range=function(t){return arguments.length?(r=Array.from(t),i=Math.min(n.length,r.length-1),o):r.slice()},o.invertExtent=function(t){var e=r.indexOf(t);return[n[e-1],n[e]]},o.unknown=function(t){return arguments.length?(e=t,o):e},o.copy=function(){return t().domain(n).range(r).unknown(e)},kD.apply(o,arguments)}),zj),Kj(Lj,(function t(){var e=[],n=[];function r(t){return null==t||t!=t?void 0:n[(sD(e,t)-1)%n.length]}return r.domain=function(t){return arguments.length?(e=function(t){return Gj.call(t,eb)}(t),r):e.slice()},r.range=function(t){return arguments.length?(n=Xj.call(t),r):n.slice()},r.tickFormat=function(t,n){return BD(e[0],tb(e),null==t?10:t,n)},r.copy=function(){return t().domain(r.domain()).range(r.range())},r}),[Bj,zj]),Kj(jj,sF,Bj),Kj(Rj,Wj,Bj),Kj(Ij,(function(){return Vj(Wj().paddingInner(1))}),Bj);var aI=["clamp","base","constant","exponent"];function cI(t,e){var n=e[0],r=tb(e)-n;return function(e){return t(n+e*r)}}function lI(t,e,n){return HZ(fI(e||"rgb",n),t)}function uI(t,e){for(var n=new Array(e),r=e+1,i=0;i1?(pI[t]=e,this):pI[t]}dI({category10:"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf",category20:"1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5",category20b:"393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6",category20c:"3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9",tableau10:"4c78a8f58518e4575672b7b254a24beeca3bb279a2ff9da69d755dbab0ac",tableau20:"4c78a89ecae9f58518ffbf7954a24b88d27ab79a20f2cf5b43989483bcb6e45756ff9d9879706ebab0acd67195fcbfd2b279a2d6a5c99e765fd8b5a5",accent:"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666",dark2:"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666",paired:"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928",pastel1:"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2",pastel2:"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc",set1:"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999",set2:"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3",set3:"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f"},hI),dI({blues:"cfe1f2bed8eca8cee58fc1de74b2d75ba3cf4592c63181bd206fb2125ca40a4a90",greens:"d3eecdc0e6baabdda594d3917bc77d60ba6c46ab5e329a512089430e7735036429",greys:"e2e2e2d4d4d4c4c4c4b1b1b19d9d9d8888887575756262624d4d4d3535351e1e1e",oranges:"fdd8b3fdc998fdb87bfda55efc9244f87f2cf06b18e4580bd14904b93d029f3303",purples:"e2e1efd4d4e8c4c5e0b4b3d6a3a0cc928ec3827cb97566ae684ea25c3696501f8c",reds:"fdc9b4fcb49afc9e80fc8767fa7051f6573fec3f2fdc2a25c81b1db21218970b13",blueGreen:"d5efedc1e8e0a7ddd18bd2be70c6a958ba9144ad77319c5d2089460e7736036429",bluePurple:"ccddecbad0e4a8c2dd9ab0d4919cc98d85be8b6db28a55a6873c99822287730f71",greenBlue:"d3eecec5e8c3b1e1bb9bd8bb82cec269c2ca51b2cd3c9fc7288abd1675b10b60a1",orangeRed:"fddcaffdcf9bfdc18afdad77fb9562f67d53ee6545e24932d32d1ebf130da70403",purpleBlue:"dbdaebc8cee4b1c3de97b7d87bacd15b9fc93a90c01e7fb70b70ab056199045281",purpleBlueGreen:"dbd8eac8cee4b0c3de93b7d872acd1549fc83892bb1c88a3097f8702736b016353",purpleRed:"dcc9e2d3b3d7ce9eccd186c0da6bb2e14da0e23189d91e6fc61159ab07498f023a",redPurple:"fccfccfcbec0faa9b8f98faff571a5ec539ddb3695c41b8aa908808d0179700174",yellowGreen:"e4f4acd1eca0b9e2949ed68880c97c62bb6e47aa5e3297502083440e723b036034",yellowOrangeBrown:"feeaa1fedd84fecc63feb746fca031f68921eb7215db5e0bc54c05ab3d038f3204",yellowOrangeRed:"fee087fed16ffebd59fea849fd903efc7335f9522bee3423de1b20ca0b22af0225",blueOrange:"134b852f78b35da2cb9dcae1d2e5eff2f0ebfce0bafbbf74e8932fc5690d994a07",brownBlueGreen:"704108a0651ac79548e3c78af3e6c6eef1eac9e9e48ed1c74da79e187a72025147",purpleGreen:"5b1667834792a67fb6c9aed3e6d6e8eff0efd9efd5aedda971bb75368e490e5e29",purpleOrange:"4114696647968f83b7b9b4d6dadbebf3eeeafce0bafbbf74e8932fc5690d994a07",redBlue:"8c0d25bf363adf745ef4ae91fbdbc9f2efeed2e5ef9dcae15da2cb2f78b3134b85",redGrey:"8c0d25bf363adf745ef4ae91fcdccbfaf4f1e2e2e2c0c0c0969696646464343434",yellowGreenBlue:"eff9bddbf1b4bde5b594d5b969c5be45b4c22c9ec02182b82163aa23479c1c3185",redYellowBlue:"a50026d4322cf16e43fcac64fedd90faf8c1dcf1ecabd6e875abd04a74b4313695",redYellowGreen:"a50026d4322cf16e43fcac63fedd8df9f7aed7ee8ea4d86e64bc6122964f006837",pinkYellowGreen:"8e0152c0267edd72adf0b3d6faddedf5f3efe1f2cab6de8780bb474f9125276419",spectral:"9e0142d13c4bf0704afcac63fedd8dfbf8b0e0f3a1a9dda269bda94288b55e4fa2",viridis:"440154470e61481a6c482575472f7d443a834144873d4e8a39568c35608d31688e2d708e2a788e27818e23888e21918d1f988b1fa08822a8842ab07f35b77943bf7154c56866cc5d7ad1518fd744a5db36bcdf27d2e21be9e51afde725",magma:"0000040404130b0924150e3720114b2c11603b0f704a107957157e651a80721f817f24828c29819a2e80a8327db6377ac43c75d1426fde4968e95462f1605df76f5cfa7f5efc8f65fe9f6dfeaf78febf84fece91fddea0fcedaffcfdbf",inferno:"0000040403130c0826170c3b240c4f330a5f420a68500d6c5d126e6b176e781c6d86216b932667a12b62ae305cbb3755c73e4cd24644dd513ae65c30ed6925f3771af8850ffb9506fca50afcb519fac62df6d645f2e661f3f484fcffa4",plasma:"0d088723069033059742039d5002a25d01a66a00a87801a88405a7900da49c179ea72198b12a90ba3488c33d80cb4779d35171da5a69e16462e76e5bed7953f2834cf68f44fa9a3dfca636fdb32ffec029fcce25f9dc24f5ea27f0f921",cividis:"00205100235800265d002961012b65042e670831690d346b11366c16396d1c3c6e213f6e26426e2c456e31476e374a6e3c4d6e42506e47536d4c566d51586e555b6e5a5e6e5e616e62646f66676f6a6a706e6d717270717573727976737c79747f7c75827f758682768985778c8877908b78938e789691789a94789e9778a19b78a59e77a9a177aea575b2a874b6ab73bbaf71c0b26fc5b66dc9b96acebd68d3c065d8c462ddc85fe2cb5ce7cf58ebd355f0d652f3da4ff7de4cfae249fce647",rainbow:"6e40aa883eb1a43db3bf3cafd83fa4ee4395fe4b83ff576eff6659ff7847ff8c38f3a130e2b72fcfcc36bee044aff05b8ff4576ff65b52f6673af27828ea8d1ddfa319d0b81cbecb23abd82f96e03d82e14c6edb5a5dd0664dbf6e40aa",sinebow:"ff4040fc582af47218e78d0bd5a703bfbf00a7d5038de70b72f41858fc2a40ff402afc5818f4720be78d03d5a700bfbf03a7d50b8de71872f42a58fc4040ff582afc7218f48d0be7a703d5bf00bfd503a7e70b8df41872fc2a58ff4040",turbo:"23171b32204a3e2a71453493493eae4b49c54a53d7485ee44569ee4074f53c7ff8378af93295f72e9ff42ba9ef28b3e926bce125c5d925cdcf27d5c629dcbc2de3b232e9a738ee9d3ff39347f68950f9805afc7765fd6e70fe667cfd5e88fc5795fb51a1f84badf545b9f140c5ec3cd0e637dae034e4d931ecd12ef4c92bfac029ffb626ffad24ffa223ff9821ff8d1fff821dff771cfd6c1af76118f05616e84b14df4111d5380fcb2f0dc0260ab61f07ac1805a313029b0f00950c00910b00",browns:"eedbbdecca96e9b97ae4a865dc9856d18954c7784cc0673fb85536ad44339f3632",tealBlues:"bce4d89dd3d181c3cb65b3c245a2b9368fae347da0306a932c5985",teals:"bbdfdfa2d4d58ac9c975bcbb61b0af4da5a43799982b8b8c1e7f7f127273006667",warmGreys:"dcd4d0cec5c1c0b8b4b3aaa7a59c9998908c8b827f7e7673726866665c5a59504e",goldGreen:"f4d166d5ca60b6c35c98bb597cb25760a6564b9c533f8f4f33834a257740146c36",goldOrange:"f4d166f8be5cf8aa4cf5983bf3852aef701be2621fd65322c54923b142239e3a26",goldRed:"f4d166f6be59f9aa51fc964ef6834bee734ae56249db5247cf4244c43141b71d3e",lightGreyRed:"efe9e6e1dad7d5cbc8c8bdb9bbaea9cd967ddc7b43e15f19df4011dc000b",lightGreyTeal:"e4eaead6dcddc8ced2b7c2c7a6b4bc64b0bf22a6c32295c11f85be1876bc",lightMulti:"e0f1f2c4e9d0b0de9fd0e181f6e072f6c053f3993ef77440ef4a3c",lightOrange:"f2e7daf7d5baf9c499fab184fa9c73f68967ef7860e8645bde515bd43d5b",lightTealBlue:"e3e9e0c0dccf9aceca7abfc859afc0389fb9328dad2f7ca0276b95255988",darkBlue:"3232322d46681a5c930074af008cbf05a7ce25c0dd38daed50f3faffffff",darkGold:"3c3c3c584b37725e348c7631ae8b2bcfa424ecc31ef9de30fff184ffffff",darkGreen:"3a3a3a215748006f4d048942489e4276b340a6c63dd2d836ffeb2cffffaa",darkMulti:"3737371f5287197d8c29a86995ce3fffe800ffffff",darkRed:"3434347036339e3c38cc4037e75d1eec8620eeab29f0ce32ffeb2c"},(function(t){return lI(hI(t))}));var gI="symbol",mI="discrete",yI=function(t){return qy(t)?t.map((function(t){return String(t)})):String(t)},bI=function(t,e){return t[1]-e[1]},xI=function(t,e){return e[1]-t[1]};function wI(t,e,n){var r;return Hb(e)&&(t.bins&&(e=Math.max(e,t.bins.length)),null!=n&&(e=Math.min(e,Math.floor(Qb(t.domain())/n||1)))),Yy(e)&&(r=e.step,e=e.interval),Vb(e)&&(e=t.type===Aj?PS(e):t.type==Pj?_S(e):Ty("Only time and utc scales accept interval strings."),r&&(e=e.every(r))),e}function SI(t,e,n){var r=t.range(),i=r[0],o=tb(r),a=bI;if(i>o&&(r=o,o=i,i=r,a=xI),i=Math.floor(i),o=Math.ceil(o),e=e.map((function(e){return[e,t(e)]})).filter((function(t){return i<=t[1]&&t[1]<=o})).sort(a).map((function(t){return t[0]})),n>0&&e.length>1){for(var c=[e[0],tb(e)];e.length>n&&e.length>=3;)e=e.filter((function(t,e){return!(e%2)}));e.length<3&&(e=c)}return e}function kI(t,e){return t.bins?SI(t,t.bins):t.ticks?t.ticks(e):t.domain()}function CI(t,e,n,r,i,o){var a=e.type,c=yI;if(a===Aj||i===Aj)c=t.timeFormat(r);else if(a===Pj||i===Pj)c=t.utcFormat(r);else if(rI(a)){var l=t.formatFloat(r);if(o||e.bins)c=l;else{var u=OI(e,n,!1);c=function(t){return u(t)?l(t):""}}}else if(e.tickFormat){var s=e.domain();c=t.formatSpan(s[0],s[s.length-1],n,r)}else r&&(c=t.format(r));return c}function OI(t,e,n){var r=kI(t,e),i=t.base(),o=Math.log(i),a=Math.max(1,i*e/r.length),c=function(t){var e=t/Math.pow(i,Math.round(Math.log(t)/o));return e*i1?i[1]-i[0]:i[0];for(r=1;rr?c.slice(0,r-2).map(i).join(", ")+", ending with "+c.slice(-1).map(i):c.map(i).join(", ");return"".concat(l," value").concat(1===l?"":"s",": ").concat(u)}var s=e.domain();return"values from ".concat(i(s[0])," to ").concat(i(tb(s)))}function LI(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return NI(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return NI(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function NI(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n1&&(n*=v=Math.sqrt(v),r*=v);var g=h/n,m=f/n,y=-f/r,b=h/r,x=g*c+m*l,w=y*c+b*l,S=g*t+m*e,k=y*t+b*e,C=1/((S-x)*(S-x)+(k-w)*(k-w))-.25;C<0&&(C=0);var O=Math.sqrt(C);o==i&&(O=-O);var E=.5*(x+S)-O*(k-w),M=.5*(w+k)+O*(S-x),A=Math.atan2(w-M,x-E),P=Math.atan2(k-M,S-E)-A;P<0&&1===o?P+=nR:P>0&&0===o&&(P-=nR);for(var _=Math.ceil(Math.abs(P/(eR+.001))),D=[],T=0;T<_;++T){var Z=A+T*P/_,F=A+(T+1)*P/_;D[T]=[E,M,Z,F,n,r,f,h]}return iR[u]=D}(r[5],r[6],r[0],r[1],r[3],r[4],r[2],e,n),o=0;od;if(c||(c=u=l()),hDP)if(v>FP-DP)c.moveTo(h*EP(d),h*PP(d)),c.arc(0,0,h,d,p,!g),f>DP&&(c.moveTo(f*EP(p),f*PP(p)),c.arc(0,0,f,p,d,g));else{var m,y,b=d,x=p,w=d,S=p,k=v,C=v,O=a.apply(this,arguments)/2,E=O>DP&&(r?+r.apply(this,arguments):_P(f*f+h*h)),M=AP(CP(h-f)/2,+n.apply(this,arguments)),A=M,P=M;if(E>DP){var _=jP(E/f*PP(O)),D=jP(E/h*PP(O));(k-=2*_)>DP?(w+=_*=g?1:-1,S-=_):(k=0,w=S=(d+p)/2),(C-=2*D)>DP?(b+=D*=g?1:-1,x-=D):(C=0,b=x=(d+p)/2)}var T=h*EP(b),Z=h*PP(b),F=f*EP(S),j=f*PP(S);if(M>DP){var I,R=h*EP(x),L=h*PP(x),N=f*EP(w),B=f*PP(w);if(v1?0:t<-1?TP:Math.acos(t)}((z*H+U*W)/(_P(z*z+U*U)*_P(H*H+W*W)))/2),G=_P(I[0]*I[0]+I[1]*I[1]);A=AP(M,(f-G)/(V-1)),P=AP(M,(h-G)/(V+1))}else A=P=0}C>DP?P>DP?(m=D_(N,B,T,Z,h,P,g),y=D_(R,L,F,j,h,P,g),c.moveTo(m.cx+m.x01,m.cy+m.y01),PDP&&k>DP?A>DP?(m=D_(F,j,R,L,f,-A,g),y=D_(T,Z,N,B,f,-A,g),c.lineTo(m.cx+m.x01,m.cy+m.y01),Athis.x2&&(this.x2=t),e>this.y2&&(this.y2=e),this},expand:function(t){return this.x1-=t,this.y1-=t,this.x2+=t,this.y2+=t,this},round:function(){return this.x1=Math.floor(this.x1),this.y1=Math.floor(this.y1),this.x2=Math.ceil(this.x2),this.y2=Math.ceil(this.y2),this},scale:function(t){return this.x1*=t,this.y1*=t,this.x2*=t,this.y2*=t,this},translate:function(t,e){return this.x1+=t,this.x2+=t,this.y1+=e,this.y2+=e,this},rotate:function(t,e,n){var r=this.rotatedPoints(t,e,n);return this.clear().add(r[0],r[1]).add(r[2],r[3]).add(r[4],r[5]).add(r[6],r[7])},rotatedPoints:function(t,e,n){var r=this.x1,i=this.y1,o=this.x2,a=this.y2,c=Math.cos(t),l=Math.sin(t),u=e-e*c+n*l,s=n-e*l-n*c;return[c*r-l*i+u,l*r+c*i+s,c*r-l*a+u,l*r+c*a+s,c*o-l*i+u,l*o+c*i+s,c*o-l*a+u,l*o+c*a+s]},union:function(t){return t.x1this.x2&&(this.x2=t.x2),t.y2>this.y2&&(this.y2=t.y2),this},intersect:function(t){return t.x1>this.x1&&(this.x1=t.x1),t.y1>this.y1&&(this.y1=t.y1),t.x2=t.x2&&this.y1<=t.y1&&this.y2>=t.y2},alignsWith:function(t){return t&&(this.x1==t.x1||this.x2==t.x2||this.y1==t.y1||this.y2==t.y2)},intersects:function(t){return t&&!(this.x2t.x2||this.y2t.y2)},contains:function(t,e){return!(tthis.x2||ethis.y2)},width:function(){return this.x2-this.x1},height:function(){return this.y2-this.y1}},Lb(HR,UR),WR.prototype={pending:function(){return this._pending},sanitizeURL:function(t){var e=this;return VR(e),e._loader.sanitize(t,{context:"href"}).then((function(t){return GR(e),t})).catch((function(){return GR(e),null}))},loadImage:function(t){var e=this,n=B_();return VR(e),e._loader.sanitize(t,{context:"image"}).then((function(t){var r=t.href;if(!r||!n)throw{url:r};var i=new n,o=Fb(t,"crossOrigin")?t.crossOrigin:"anonymous";return null!=o&&(i.crossOrigin=o),i.onload=function(){return GR(e)},i.onerror=function(){return GR(e)},i.src=r,i})).catch((function(t){return GR(e),{complete:!1,width:0,height:0,src:t&&t.url||""}}))},ready:function(){var t=this;return new Promise((function(e){!function n(r){t.pending()?setTimeout((function(){n(!0)}),10):e(r)}(!1)}))}};var qR,YR,$R,KR,JR,QR,tL,eL,nL=nR-1e-8,rL=function(t,e){return qR.add(t,e)},iL=function(t,e){return rL(YR=t,$R=e)},oL=function(t){return rL(t,qR.y1)},aL=function(t){return rL(qR.x1,t)},cL=function(t,e){return JR*t+tL*e},lL=function(t,e){return QR*t+eL*e},uL=function(t,e){return rL(cL(t,e),lL(t,e))},sL=function(t,e){return iL(cL(t,e),lL(t,e))};function fL(t,e){return qR=t,e?(KR=e*tR,JR=eL=Math.cos(KR),QR=Math.sin(KR),tL=-QR):(JR=eL=1,KR=QR=tL=0),hL}var hL={beginPath:function(){},closePath:function(){},moveTo:sL,lineTo:sL,rect:function(t,e,n,r){KR?(uL(t+n,e),uL(t+n,e+r),uL(t,e+r),sL(t,e)):(rL(t+n,e+r),iL(t,e))},quadraticCurveTo:function(t,e,n,r){var i=cL(t,e),o=lL(t,e),a=cL(n,r),c=lL(n,r);dL(YR,i,a,oL),dL($R,o,c,aL),iL(a,c)},bezierCurveTo:function(t,e,n,r,i,o){var a=cL(t,e),c=lL(t,e),l=cL(n,r),u=lL(n,r),s=cL(i,o),f=lL(i,o);pL(YR,a,l,s,oL),pL($R,c,u,f,aL),iL(s,f)},arc:function(t,e,n,r,i,o){if(r+=KR,i+=KR,YR=n*Math.cos(i)+t,$R=n*Math.sin(i)+e,Math.abs(i-r)>nL)rL(t-n,e-n),rL(t+n,e+n);else{var a,c,l=function(r){return rL(n*Math.cos(r)+t,n*Math.sin(r)+e)};if(l(r),l(i),i!==r)if((r%=nR)<0&&(r+=nR),(i%=nR)<0&&(i+=nR),ii;++c,a-=eR)l(a);else for(a=r-r%eR+eR,c=0;c<4&&a1e-14?(o=c*c+l*a)>=0&&(u=(-c+(o=Math.sqrt(o)))/a,s=(-c-o)/a):u=.5*l/c,0g)return!1;c>v&&(v=c)}else if(o>0){if(c0&&(t.globalAlpha=n,t.fillStyle=EL(t,e,e.fill),!0)}var AL=[];function PL(t,e,n){var r=null!=(r=e.strokeWidth)?r:1;return!(r<=0)&&((n*=null==e.strokeOpacity?1:e.strokeOpacity)>0&&(t.globalAlpha=n,t.strokeStyle=EL(t,e,e.stroke),t.lineWidth=r,t.lineCap=e.strokeCap||"butt",t.lineJoin=e.strokeJoin||"miter",t.miterLimit=e.strokeMiterLimit||10,t.setLineDash&&(t.setLineDash(e.strokeDash||AL),t.lineDashOffset=e.strokeDashOffset||0),!0))}function _L(t,e){return t.zindex-e.zindex||t.index-e.index}function DL(t){if(!t.zdirty)return t.zitems;var e,n,r,i=t.items,o=[];for(n=0,r=i.length;n=0;)if(n=e(i[r]))return n;if(i===o)for(r=(i=t.items).length;--r>=0;)if(!i[r].zindex&&(n=e(i[r])))return n;return null}function FL(t){return function(e,n,r){TL(n,(function(n){r&&!r.intersects(n.bounds)||IL(t,e,n,n)}))}}function jL(t){return function(e,n,r){!n.items.length||r&&!r.intersects(n.bounds)||IL(t,e,n.items[0],n.items)}}function IL(t,e,n,r){var i=null==n.opacity?1:n.opacity;0!==i&&(t(e,r)||(kL(e,n),n.fill&&ML(e,n,i)&&e.fill(),n.stroke&&PL(e,n,i)&&e.stroke()))}function RL(t){return t=t||Ny,function(e,n,r,i,o,a){return r*=e.pixelRatio,i*=e.pixelRatio,ZL(n,(function(n){var c=n.bounds;if((!c||c.contains(o,a))&&c)return t(e,n,r,i,o,a)?n:void 0}))}}function LL(t,e){return function(n,r,i,o){var a,c,l=Array.isArray(r)?r[0]:r,u=null==e?l.fill:e,s=l.stroke&&n.isPointInStroke;return s&&(a=l.strokeWidth,c=l.strokeCap,n.lineWidth=null!=a?a:1,n.lineCap=null!=c?c:"butt"),!t(n,r)&&(u&&n.isPointInPath(i,o)||s&&n.isPointInStroke(i,o))}}function NL(t){return RL(LL(t))}function BL(t,e){return"translate("+t+","+e+")"}function zL(t){return"rotate("+t+")"}function UL(t){return BL(t.x||0,t.y||0)}function HL(t,e,n){function r(t,n){var r=n.x||0,i=n.y||0,o=n.angle||0;t.translate(r,i),o&&t.rotate(o*=tR),t.beginPath(),e(t,n),o&&t.rotate(-o),t.translate(-r,-i)}return{type:t,tag:"path",nested:!1,attr:function(t,n){t("transform",function(t){return BL(t.x||0,t.y||0)+(t.angle?" "+zL(t.angle):"")}(n)),t("d",e(null,n))},bound:function(t,n){return e(fL(t,n.angle),n),XR(t,n).translate(n.x||0,n.y||0)},draw:FL(r),pick:NL(r),isect:n||yL(r)}}var WL=HL("arc",(function(t,e){return PR.context(t)(e)}));function VL(t,e,n){function r(t,n){t.beginPath(),e(t,n)}var i=LL(r);return{type:t,tag:"path",nested:!0,attr:function(t,n){var r=n.mark.items;r.length&&t("d",e(null,r))},bound:function(t,n){var r=n.items;return 0===r.length?t:(e(fL(t),r),XR(t,r[0]))},draw:jL(r),pick:function(t,e,n,r,o,a){var c=e.items,l=e.bounds;return!c||!c.length||l&&!l.contains(o,a)?null:(n*=t.pixelRatio,r*=t.pixelRatio,i(t,c,n,r)?c[0]:null)},isect:bL,tip:n}}var GL=VL("area",(function(t,e){var n=e[0],r=n.interpolate||"linear";return("horizontal"===n.orient?DR:_R).curve(XI(r,n.orient,n.tension)).context(t)(e)}),(function(t,e){for(var n,r,i="horizontal"===t[0].orient?e[1]:e[0],o="horizontal"===t[0].orient?"y":"x",a=t.length,c=1/0;--a>=0;)!1!==t[a].defined&&(r=Math.abs(t[a][o]-i)).5&&e<1.5?.5-Math.abs(e-1):0}function YL(t,e){var n=qL(e);t("d",RR(null,e,n,n))}function $L(t,e,n,r){var i=qL(e);t.beginPath(),RR(t,e,(n||0)+i,(r||0)+i)}var KL=LL($L),JL=LL($L,!1),QL=LL($L,!0);var tN={type:"group",tag:"g",nested:!1,attr:function(t,e){t("transform",UL(e))},bound:function(t,e){if(!e.clip&&e.items)for(var n=e.items,r=n.length,i=0;ip||ov)){if(t.save(),t.translate(f,h),f=i-f,h=o-h,g&&IR(u)&&!QL(t,u,c,l))return t.restore(),null;var m=u.strokeForeground,y=!1!==e.interactive;return y&&m&&u.stroke&&JL(t,u,c,l)?(t.restore(),u):(!(s=ZL(u,(function(t){return function(t,e,n){return(!1!==t.interactive||"group"===t.marktype)&&t.bounds&&t.bounds.contains(e,n)}(t,f,h)?a.pick(t,n,r,f,h):null})))&&y&&(u.fill||!m&&u.stroke)&&KL(t,u,c,l)&&(s=u),t.restore(),s||null)}}}))},isect:xL,content:function(t,e,n){t("clip-path",e.clip?BR(n,e,e):null)},background:function(t,e){t("class","background"),t("aria-hidden",!0),YL(t,e)},foreground:function(t,e){t("class","foreground"),t("aria-hidden",!0),e.strokeForeground?YL(t,e):t("d","")}},eN={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",version:"1.1"};function nN(t,e){var n=t.image;return(!n||t.url&&t.url!==n.url)&&(n={complete:!1,width:0,height:0},e.loadImage(t.url).then((function(e){t.image=e,t.image.url=t.url}))),n}function rN(t,e){return null!=t.width?t.width:e&&e.width?!1!==t.aspect&&t.height?t.height*e.width/e.height:e.width:0}function iN(t,e){return null!=t.height?t.height:e&&e.height?!1!==t.aspect&&t.width?t.width*e.height/e.width:e.height:0}function oN(t,e){return"center"===t?e/2:"right"===t?e:0}function aN(t,e){return"middle"===t?e/2:"bottom"===t?e:0}var cN={type:"image",tag:"image",nested:!1,attr:function(t,e,n){var r=nN(e,n),i=rN(e,r),o=iN(e,r),a=(e.x||0)-oN(e.align,i),c=(e.y||0)-aN(e.baseline,o);t("href",!r.src&&r.toDataURL?r.toDataURL():r.src||"",eN["xmlns:xlink"],"xlink:href"),t("transform",BL(a,c)),t("width",i),t("height",o),t("preserveAspectRatio",!1===e.aspect?"none":"xMidYMid")},bound:function(t,e){var n=e.image,r=rN(e,n),i=iN(e,n),o=(e.x||0)-oN(e.align,r),a=(e.y||0)-aN(e.baseline,i);return t.set(o,a,o+r,a+i)},draw:function(t,e,n){var r=this;TL(e,(function(e){if(!n||n.intersects(e.bounds)){var i=nN(e,r),o=rN(e,i),a=iN(e,i);if(0!==o&&0!==a){var c,l,u,s,f=(e.x||0)-oN(e.align,o),h=(e.y||0)-aN(e.baseline,a);!1!==e.aspect&&(l=i.width/i.height,u=e.width/e.height,l==l&&u==u&&l!==u&&(u=0;)if(!1!==t[o].defined&&(n=t[o].x-e[0])*n+(r=t[o].y-e[1])*r1?e:e[0]:e;var e}function MN(t){var e=EN(t);return(qy(e)?e.length-1:0)*ON(t)}function AN(t,e){var n=null==e?"":(e+"").trim();return t.limit>0&&n.length?function(t,e){var n=+t.limit,r=function(t){if(yN.width===SN){var e=_N(t);return function(t){return kN(t,e)}}var n=CN(t);return function(t){return wN(t,n)}}(t);if(r(e)>>1,r(e.slice(i))>n?c=i+1:l=i;return o+e.slice(c)}for(;c>>1),r(e.slice(0,i))=0;)if(!1!==t[i].defined&&(n=t[i].x-e[0])*n+(r=t[i].y-e[1])*r<(n=t[i].size||1)*n)return t[i];return null})),LN={arc:WL,area:GL,group:tN,image:cN,line:lN,path:sN,rect:hN,rule:pN,shape:vN,symbol:gN,text:IN,trail:RN};function NN(t,e,n){var r=LN[t.mark.marktype],i=e||r.bound;return r.nested&&(t=t.mark),i(t.bounds||(t.bounds=new zR),t,n)}var BN={mark:null};function zN(t,e,n){var r,i,o,a,c=LN[t.marktype],l=c.bound,u=t.items,s=u&&u.length;if(c.nested)return s?o=u[0]:(BN.mark=t,o=BN),a=NN(o,l,n),e=e&&e.union(a)||a;if(e=e||t.bounds&&t.bounds.clear()||new zR,s)for(r=0,i=u.length;re;)t.removeChild(n[--r]);return t}function JN(t){return"mark-"+t.marktype+(t.role?" role-"+t.role:"")+(t.name?" "+t.name:"")}function QN(t,e){var n=e.getBoundingClientRect();return[t.clientX-n.left-(e.clientLeft||0),t.clientY-n.top-(e.clientTop||0)]}function tB(t,e){this._active=null,this._handlers={},this._loader=t||aD(),this._tooltip=e||eB}function eB(t,e,n,r){t.element().setAttribute("title",r||"")}function nB(t){this._el=null,this._bgcolor=null,this._loader=new WR(t)}GN.prototype={toJSON:function(t){return HN(this.root,t||0)},mark:function(t,e,n){var r=XN(t,e=e||this.root.items[0]);return e.items[n]=r,r.zindex&&(r.group.zdirty=!0),r}},tB.prototype={initialize:function(t,e,n){return this._el=t,this._obj=n||null,this.origin(e)},element:function(){return this._el},canvas:function(){return this._el&&this._el.firstChild},origin:function(t){return arguments.length?(this._origin=t||[0,0],this):this._origin.slice()},scene:function(t){return arguments.length?(this._scene=t,this):this._scene},on:function(){},off:function(){},_handlerIndex:function(t,e,n){for(var r=t?t.length:0;--r>=0;)if(t[r].type===e&&(!n||t[r].handler===n))return r;return-1},handlers:function(t){var e=this._handlers,n=[];if(t)n.push.apply(n,(0,Xm.Z)(e[this.eventName(t)]));else for(var r in e)n.push.apply(n,(0,Xm.Z)(e[r]));return n},eventName:function(t){var e=t.indexOf(".");return e<0?t:t.slice(0,e)},handleHref:function(t,e,n){this._loader.sanitize(n,{context:"href"}).then((function(e){var n=new MouseEvent(t.type,t),r=qN(null,"a");for(var i in e)r.setAttribute(i,e[i]);r.dispatchEvent(n)})).catch((function(){}))},handleTooltip:function(t,e,n){if(e&&null!=e.tooltip){e=function(t,e,n,r){var i,o,a=t&&t.mark;if(a&&(i=LN[a.marktype]).tip){for((o=QN(e,n))[0]-=r[0],o[1]-=r[1];t=t.mark.group;)o[0]-=t.x||0,o[1]-=t.y||0;t=i.tip(a.items,o)}return t}(e,t,this.canvas(),this._origin);var r=n&&e&&e.tooltip||null;this._tooltip.call(this._obj,this,t,e,r)}},getItemBoundingClientRect:function(t){var e=this.canvas();if(e){for(var n=e.getBoundingClientRect(),r=this._origin,i=t.bounds,o=i.width(),a=i.height(),c=i.x1+r[0]+n.left,l=i.y1+r[1]+n.top;t.mark&&(t=t.mark.group);)c+=t.x||0,l+=t.y||0;return{x:c,y:l,width:o,height:a,left:c,top:l,right:c+o,bottom:l+a}}}},nB.prototype={initialize:function(t,e,n,r,i){return this._el=t,this.resize(e,n,r,i)},element:function(){return this._el},canvas:function(){return this._el&&this._el.firstChild},background:function(t){return 0===arguments.length?this._bgcolor:(this._bgcolor=t,this)},resize:function(t,e,n,r){return this._width=t,this._height=e,this._origin=n||[0,0],this._scale=r||1,this},dirty:function(){},render:function(t){var e=this;return e._call=function(){e._render(t)},e._call(),e._call=null,e},_render:function(){},renderAsync:function(t){var e=this.render(t);return this._ready?this._ready.then((function(){return e})):Promise.resolve(e)},_load:function(t,e){var n=this,r=n._loader[t](e);if(!n._ready){var i=n._call;n._ready=n._loader.ready().then((function(t){t&&i(),n._ready=null}))}return r},sanitizeURL:function(t){return this._load("sanitizeURL",t)},loadImage:function(t){return this._load("loadImage",t)}};var rB="dragenter",iB="dragleave",oB="dragover",aB="mousedown",cB="mousemove",lB="mouseout",uB="mouseover",sB="click",fB="mousewheel",hB="touchstart",dB="touchmove",pB="touchend",vB=cB,gB=lB,mB=sB;function yB(t,e){tB.call(this,t,e),this._down=null,this._touch=null,this._first=!0,this._events={}}function bB(t,e){(function(t){return t===hB||t===dB||t===pB?[hB,dB,pB]:[t]})(e).forEach((function(e){return function(t,e){var n=t.canvas();n&&!t._events[e]&&(t._events[e]=1,n.addEventListener(e,t[e]?function(n){return t[e](n)}:function(n){return t.fire(e,n)}))}(t,e)}))}function xB(t,e,n){return function(r){var i=this._active,o=this.pickEvent(r);o===i||(i&&i.exit||this.fire(n,r),this._active=o,this.fire(e,r)),this.fire(t,r)}}function wB(t){return function(e){this.fire(t,e),this._active=null}}Lb(yB,tB,{initialize:function(t,e,n){var r=this;return this._canvas=t&&YN(t,"canvas"),[sB,aB,cB,lB,iB].forEach((function(t){return bB(r,t)})),tB.prototype.initialize.call(this,t,e,n)},canvas:function(){return this._canvas},context:function(){return this._canvas.getContext("2d")},events:["keydown","keypress","keyup",rB,iB,oB,aB,"mouseup",cB,lB,uB,sB,"dblclick","wheel",fB,hB,dB,pB],DOMMouseScroll:function(t){this.fire(fB,t)},mousemove:xB(cB,uB,lB),dragover:xB(oB,rB,iB),mouseout:wB(lB),dragleave:wB(iB),mousedown:function(t){this._down=this._active,this.fire(aB,t)},click:function(t){this._down===this._active&&(this.fire(sB,t),this._down=null)},touchstart:function(t){this._touch=this.pickEvent(t.changedTouches[0]),this._first&&(this._active=this._touch,this._first=!1),this.fire(hB,t,!0)},touchmove:function(t){this.fire(dB,t,!0)},touchend:function(t){this.fire(pB,t,!0),this._touch=null},fire:function(t,e,n){var r=n?this._touch:this._active,i=this._handlers[t];if(e.vegaType=t,t===mB&&r&&r.href?this.handleHref(e,r,r.href):t!==vB&&t!==gB||this.handleTooltip(e,r,t!==gB),i)for(var o=0,a=i.length;o=0&&r.splice(i,1),this},pickEvent:function(t){var e=QN(t,this._canvas),n=this._origin;return this.pick(this._scene,e[0],e[1],e[0]-n[0],e[1]-n[1])},pick:function(t,e,n,r,i){var o=this.context();return LN[t.marktype].pick.call(this,o,t,e,n,r,i)}});var SB="undefined"!=typeof window&&window.devicePixelRatio||1;function kB(t){nB.call(this,t),this._options={},this._redraw=!1,this._dirty=new zR,this._tempb=new zR}var CB=nB.prototype;function OB(t,e){tB.call(this,t,e);var n=this;n._hrefHandler=EB(n,(function(t,e){e&&e.href&&n.handleHref(t,e,e.href)})),n._tooltipHandler=EB(n,(function(t,e){n.handleTooltip(t,e,t.type!==gB)}))}Lb(kB,nB,{initialize:function(t,e,n,r,i,o){return this._options=o||{},this._canvas=this._options.externalContext?null:N_(1,1,this._options.type),t&&this._canvas&&(KN(t,0).appendChild(this._canvas),this._canvas.setAttribute("class","marks")),CB.initialize.call(this,t,e,n,r,i)},resize:function(t,e,n,r){if(CB.resize.call(this,t,e,n,r),this._canvas)!function(t,e,n,r,i,o){var a="undefined"!=typeof HTMLElement&&t instanceof HTMLElement&&null!=t.parentNode,c=t.getContext("2d"),l=a?SB:i;for(var u in t.width=e*l,t.height=n*l,o)c[u]=o[u];a&&1!==l&&(t.style.width=e+"px",t.style.height=n+"px"),c.pixelRatio=l,c.setTransform(l,0,0,l,l*r[0],l*r[1])}(this._canvas,this._width,this._height,this._origin,this._scale,this._options.context);else{var i=this._options.externalContext;i||Ty("CanvasRenderer is missing a valid canvas or context"),i.scale(this._scale,this._scale),i.translate(this._origin[0],this._origin[1])}return this._redraw=!0,this},canvas:function(){return this._canvas},context:function(){return this._options.externalContext||(this._canvas?this._canvas.getContext("2d"):null)},dirty:function(t){for(var e=this._tempb.clear().union(t.bounds),n=t.mark.group;n;)e.translate(n.x||0,n.y||0),n=n.mark.group;this._dirty.union(e)},_render:function(t){var e=this.context(),n=this._origin,r=this._width,i=this._height,o=this._dirty,a=function(t,e,n){return(new zR).set(0,0,e,n).translate(-t[0],-t[1])}(n,r,i);e.save();var c=this._redraw||o.empty()?(this._redraw=!1,a.expand(1)):function(t,e,n){return e.expand(1).round(),t.pixelRatio%1&&e.scale(t.pixelRatio).round().scale(1/t.pixelRatio),e.translate(-n[0]%1,-n[1]%1),t.beginPath(),t.rect(e.x1,e.y1,e.width(),e.height()),t.clip(),e}(e,a.intersect(o),n);return this.clear(-n[0],-n[1],r,i),this.draw(e,t,c),e.restore(),o.clear(),this},draw:function(t,e,n){var r=LN[e.marktype];e.clip&&function(t,e){var n=e.clip;t.save(),wb(n)?(t.beginPath(),n(t),t.clip()):XL(t,e.group)}(t,e),r.draw.call(this,t,e,n),e.clip&&t.restore()},clear:function(t,e,n,r){var i=this._options,o=this.context();"pdf"===i.type||i.externalContext||o.clearRect(t,e,n,r),null!=this._bgcolor&&(o.fillStyle=this._bgcolor,o.fillRect(t,e,n,r))}});var EB=function(t,e){return function(n){var r=n.target.__data__;r=Array.isArray(r)?r[0]:r,n.vegaType=n.type,e.call(t._obj,n,r)}};Lb(OB,tB,{initialize:function(t,e,n){var r=this._svg;return r&&(r.removeEventListener(mB,this._hrefHandler),r.removeEventListener(vB,this._tooltipHandler),r.removeEventListener(gB,this._tooltipHandler)),this._svg=r=t&&YN(t,"svg"),r&&(r.addEventListener(mB,this._hrefHandler),r.addEventListener(vB,this._tooltipHandler),r.addEventListener(gB,this._tooltipHandler)),tB.prototype.initialize.call(this,t,e,n)},canvas:function(){return this._svg},on:function(t,e){var n=this.eventName(t),r=this._handlers;if(this._handlerIndex(r[n],t,e)<0){var i={type:t,handler:e,listener:EB(this,e)};(r[n]||(r[n]=[])).push(i),this._svg&&this._svg.addEventListener(n,i.listener)}return this},off:function(t,e){var n=this.eventName(t),r=this._handlers[n],i=this._handlerIndex(r,t,e);return i>=0&&(this._svg&&this._svg.removeEventListener(n,r[i].listener),r.splice(i,1)),this}});var MB="aria-hidden",AB="aria-label",PB="role",_B="aria-roledescription",DB="graphics-object",TB="graphics-symbol",ZB=function(t,e,n){var r;return r={},(0,V.Z)(r,PB,t),(0,V.Z)(r,_B,e),(0,V.Z)(r,AB,n||void 0),r},FB=ox(["axis-domain","axis-grid","axis-label","axis-tick","axis-title","legend-band","legend-entry","legend-gradient","legend-label","legend-title","legend-symbol","title"]),jB={axis:{desc:"axis",caption:function(t){var e=t.datum,n=t.orient,r=e.title?BB(t):null,i=t.context,o=i.scales[e.scale].value,a=i.dataflow.locale(),c=o.type,l="left"===n||"right"===n?"Y":"X";return"".concat(l,"-axis")+(r?" titled '".concat(r,"'"):"")+" for a ".concat(eI(c)?"discrete":c," scale")+" with ".concat(RI(a,o,t))}},legend:{desc:"legend",caption:function(t){var e=t.datum,n=e.title?BB(t):null,r="".concat(e.type||""," legend").trim(),i=e.scales,o=Object.keys(i),a=t.context,c=a.scales[i[o[0]]].value,l=a.dataflow.locale();return function(t){return t.length?t[0].toUpperCase()+t.slice(1):t}(r)+(n?" titled '".concat(n,"'"):"")+" for ".concat(function(t){return t=t.map((function(t){return t+("fill"===t||"stroke"===t?" color":"")})),t.length<2?t[0]:t.slice(0,-1).join(", ")+" and "+tb(t)}(o))+" with ".concat(RI(l,c,t))}},"title-text":{desc:"title",caption:function(t){return"Title text '".concat(NB(t),"'")}},"title-subtitle":{desc:"subtitle",caption:function(t){return"Subtitle text '".concat(NB(t),"'")}}},IB={ariaRole:PB,ariaRoleDescription:_B,description:AB};function RB(t,e){var n=!1===e.aria;if(t(MB,n||void 0),n||null==e.description)for(var r in IB)t(IB[r],void 0);else{var i=e.mark.marktype;t(AB,e.description),t(PB,e.ariaRole||("group"===i?DB:TB)),t(_B,e.ariaRoleDescription||"".concat(i," mark"))}}function LB(t){return!1===t.aria?(0,V.Z)({},MB,!0):FB[t.role]?null:jB[t.role]?function(t,e){try{var n=t.items[0],r=e.caption||function(){return""};return ZB(e.role||TB,e.desc,n.description||r(n))}catch(i){return null}}(t,jB[t.role]):function(t){var e=t.marktype,n="group"===e||"text"===e||t.items.some((function(t){return null!=t.description&&!1!==t.aria}));return ZB(n?DB:TB,"".concat(e," mark container"),t.description)}(t)}function NB(t){return bb(t.text).join(" ")}function BB(t){try{return bb(tb(t.items).items[0].text).join(" ")}catch(e){return null}}var zB=function(t){return(t+"").replace(/&/g,"&").replace(//g,">")},UB=function(t){return zB(t).replace(/"/g,""").replace(/\t/g," ").replace(/\n/g," ").replace(/\r/g," ")};function HB(){var t="",e="",n="",r=[],i=function(){return e=n=""},o=function(t,n){return null!=n&&(e+=" ".concat(t,'="').concat(UB(n),'"')),a},a={open:function(c){!function(o){e&&(t+="".concat(e,">").concat(n),i()),r.push(o)}(c),e="<"+c;for(var l=arguments.length,u=new Array(l>1?l-1:0),s=1;s".concat(n,""):"/>"):""),i(),a},attr:o,text:function(t){return n+=zB(t),a},toString:function(){return t}};return a}var WB=function(t){return VB(HB(),t)+""};function VB(t,e){if(t.open(e.tagName),e.hasAttributes())for(var n=e.attributes,r=n.length,i=0;i1&&t.previousSibling!=e}(a,n))&&e.insertBefore(a,n?n.nextSibling:e.firstChild),a}Lb(KB,nB,{initialize:function(t,e,n,r,i){return this._defs={},this._clearDefs(),t&&(this._svg=$N(t,0,"svg",$B),this._svg.setAttributeNS(YB,"xmlns",$B),this._svg.setAttributeNS(YB,"xmlns:xlink",eN["xmlns:xlink"]),this._svg.setAttribute("version",eN.version),this._svg.setAttribute("class","marks"),KN(t,1),this._root=$N(this._svg,0,"g",$B),lz(this._root,qB),KN(this._svg,1)),this.background(this._bgcolor),JB.initialize.call(this,t,e,n,r,i)},background:function(t){return arguments.length&&this._svg&&this._svg.style.setProperty("background-color",t),JB.background.apply(this,arguments)},resize:function(t,e,n,r){return JB.resize.call(this,t,e,n,r),this._svg&&(lz(this._svg,{width:this._width*this._scale,height:this._height*this._scale,viewBox:"0 0 ".concat(this._width," ").concat(this._height)}),this._root.setAttribute("transform","translate(".concat(this._origin,")"))),this._dirty=[],this},canvas:function(){return this._svg},svg:function(){var t,e=this._svg,n=this._bgcolor;if(!e)return null;n&&(e.removeAttribute("style"),lz(t=$N(e,0,"rect",$B),{width:this._width,height:this._height,fill:n}));var r=WB(e);return n&&(e.removeChild(t),this._svg.style.setProperty("background-color",n)),r},_render:function(t){return this._dirtyCheck()&&(this._dirtyAll&&this._clearDefs(),this.mark(this._root,t),KN(this._root,1)),this.defs(),this._dirty=[],++this._dirtyID,this},dirty:function(t){t.dirty!==this._dirtyID&&(t.dirty=this._dirtyID,this._dirty.push(t))},isDirty:function(t){return this._dirtyAll||!t._svg||!t._svg.ownerSVGElement||t.dirty===this._dirtyID},_dirtyCheck:function(){this._dirtyAll=!0;var t=this._dirty;if(!t.length||!this._dirtyID)return!0;var e,n,r,i,o,a,c,l=++this._dirtyID;for(o=0,a=t.length;o1?(vz[t]=e,this):vz[t]}function mz(t,e,n){var r=[],i=(new zR).union(e),o=t.marktype;return o?yz(t,i,n,r):"group"===o?bz(t,i,n,r):Ty("Intersect scene must be mark node or group item.")}function yz(t,e,n,r){if(function(t,e,n){return t.bounds&&e.intersects(t.bounds)&&("group"===t.marktype||!1!==t.interactive&&(!n||n(t)))}(t,e,n)){var i=t.items,o=t.marktype,a=i.length,c=0;if("group"===o)for(;c=0;r--)if(i[r]!=o[r])return!1;for(r=i.length-1;r>=0;r--)if(!Cz(t[n=i[r]],e[n],n))return!1;return typeof t==typeof e}(t,e):t==e)}function Oz(t,e){return Cz(QI(t),QI(e))}function Ez(){NR(),BI=0}var Mz="top",Az="left",Pz="right",_z="bottom",Dz="top-left",Tz="top-right",Zz="bottom-left",Fz="bottom-right",jz="start",Iz="middle",Rz="end",Lz="x",Nz="y",Bz="group",zz="axis",Uz="title",Hz="frame",Wz="scope",Vz="legend",Gz="row-header",Xz="row-footer",qz="row-title",Yz="column-header",$z="column-footer",Kz="column-title",Jz="padding",Qz="symbol",tU="fit",eU="fit-x",nU="fit-y",rU="pad",iU="none",oU="all",aU="each",cU="flush",lU="column",uU="row";function sU(t){lE.call(this,null,t)}function fU(t,e,n){return e(t.bounds.clear(),t,n)}Lb(sU,lE,{transform:function(t,e){var n,r=e.dataflow,i=t.mark,o=i.marktype,a=LN[o],c=a.bound,l=i.bounds;if(a.nested)i.items.length&&r.dirty(i.items[0]),l=fU(i,c),i.items.forEach((function(t){t.bounds.clear().union(l)}));else if(o===Bz||t.modified())switch(e.visit(e.MOD,(function(t){return r.dirty(t)})),l.clear(),i.items.forEach((function(t){return l.union(fU(t,c))})),i.role){case zz:case Vz:case Uz:e.reflow()}else n=e.changed(e.REM),e.visit(e.ADD,(function(t){l.union(fU(t,c))})),e.visit(e.MOD,(function(t){n=n||l.alignsWith(t.bounds),r.dirty(t),l.union(fU(t,c))})),n&&(l.clear(),i.items.forEach((function(t){return l.union(t.bounds)})));return Sz(i),e.modifies("bounds")}});var hU=":vega_identifier:";function dU(t){lE.call(this,0,t)}function pU(t){lE.call(this,null,t)}function vU(t){lE.call(this,null,t)}dU.Definition={type:"Identifier",metadata:{modifies:!0},params:[{name:"as",type:"string",required:!0}]},Lb(dU,lE,{transform:function(t,e){var n=function(t){return t._signals[hU]||(t._signals[hU]=t.add(0))}(e.dataflow),r=t.as,i=n.value;return e.visit(e.ADD,(function(t){return t[r]=t[r]||++i})),n.set(this.value=i),e}}),Lb(pU,lE,{transform:function(t,e){var n=this.value;n||((n=e.dataflow.scenegraph().mark(t.markdef,function(t){var e=t.groups,n=t.parent;return e&&1===e.size?e.get(Object.keys(e.object)[0]):e&&n?e.lookup(n):null}(t),t.index)).group.context=t.context,t.context.group||(t.context.group=n.group),n.source=this.source,n.clip=t.clip,n.interactive=t.interactive,this.value=n);var r=n.marktype===Bz?HR:UR;return e.visit(e.ADD,(function(t){return r.call(t,n)})),(t.modified("clip")||t.modified("interactive"))&&(n.clip=t.clip,n.interactive=!!t.interactive,n.zdirty=!0,e.reflow()),n.items=e.source,e}});var gU={parity:function(t){return t.filter((function(t,e){return e%2?t.opacity=0:1}))},greedy:function(t,e){var n;return t.filter((function(t,r){return r&&mU(n.bounds,t.bounds,e)?t.opacity=0:(n=t,1)}))}},mU=function(t,e,n){return n>Math.max(e.x1-t.x2,t.x1-e.x2,e.y1-t.y2,t.y1-e.y2)},yU=function(t,e){for(var n,r=1,i=t.length,o=t[0].bounds;r1&&e.height()>1},xU=function(t){return t.forEach((function(t){return t.opacity=1})),t},wU=function(t,e){return t.reflow(e.modified()).modifies("opacity")};function SU(t){lE.call(this,null,t)}Lb(vU,lE,{transform:function(t,e){var n,r,i=gU[t.method]||gU.parity,o=t.separation||0,a=e.materialize(e.SOURCE).source;if(a&&a.length){if(!t.method)return t.modified("method")&&(xU(a),e=wU(e,t)),e;if((a=a.filter(bU)).length){if(t.sort&&(a=a.slice().sort(t.sort)),n=xU(a),e=wU(e,t),n.length>=3&&yU(n,o)){do{n=i(n,o)}while(n.length>=3&&yU(n,o));n.length<3&&!tb(a).opacity&&(n.length>1&&(tb(n).opacity=0),tb(a).opacity=1)}t.boundScale&&t.boundTolerance>=0&&(r=function(t,e,n){var r=t.range(),i=new zR;return e===Mz||e===_z?i.set(r[0],-1/0,r[1],1/0):i.set(-1/0,r[0],1/0,r[1]),i.expand(n||1),function(t){return i.encloses(t.bounds)}}(t.boundScale,t.boundOrient,+t.boundTolerance),a.forEach((function(t){r(t)||(t.opacity=0)})));var c=n[0].mark.bounds.clear();return a.forEach((function(t){t.opacity&&c.union(t.bounds)})),e}}}}),Lb(SU,lE,{transform:function(t,e){var n=e.dataflow;if(e.visit(e.ALL,(function(t){return n.dirty(t)})),e.fields&&e.fields.zindex){var r=e.source&&e.source[0];r&&(r.mark.zdirty=!0)}}});var kU=new zR;function CU(t,e,n){return t[e]===n?0:(t[e]=n,1)}function OU(t){var e=t.items[0].orient;return e===Az||e===Pz}function EU(t,e,n,r){var i,o,a=e.items[0],c=a.datum,l=null!=a.translate?a.translate:.5,u=a.orient,s=function(t){var e=+t.grid;return[t.ticks?e++:-1,t.labels?e++:-1,e+ +t.domain]}(c),f=a.range,h=a.offset,d=a.position,p=a.minExtent,v=a.maxExtent,g=c.title&&a.items[s[2]].items[0],m=a.titlePadding,y=a.bounds,b=g&&MN(g),x=0,w=0;switch(kU.clear().union(y),y.clear(),(i=s[0])>-1&&y.union(a.items[i].bounds),(i=s[1])>-1&&y.union(a.items[i].bounds),u){case Mz:x=d||0,w=-h,o=Math.max(p,Math.min(v,-y.y1)),y.add(0,-o).add(f,0),g&&MU(t,g,o,m,b,0,-1,y);break;case Az:x=-h,w=d||0,o=Math.max(p,Math.min(v,-y.x1)),y.add(-o,0).add(0,f),g&&MU(t,g,o,m,b,1,-1,y);break;case Pz:x=n+h,w=d||0,o=Math.max(p,Math.min(v,y.x2)),y.add(0,0).add(o,f),g&&MU(t,g,o,m,b,1,1,y);break;case _z:x=d||0,w=r+h,o=Math.max(p,Math.min(v,y.y2)),y.add(0,0).add(f,o),g&&MU(t,g,o,m,0,0,1,y);break;default:x=a.x,w=a.y}return XR(y.translate(x,w),a),CU(a,"x",x+l)|CU(a,"y",w+l)&&(a.bounds=kU,t.dirty(a),a.bounds=y,t.dirty(a)),a.mark.bounds.clear().union(y)}function MU(t,e,n,r,i,o,a,c){var l=e.bounds;if(e.auto){var u=a*(n+i+r),s=0,f=0;t.dirty(e),o?s=(e.x||0)-(e.x=u):f=(e.y||0)-(e.y=u),e.mark.bounds.clear().union(l.translate(-s,-f)),t.dirty(e)}c.union(l)}var AU=function(t,e){return Math.floor(Math.min(t,e))},PU=function(t,e){return Math.ceil(Math.max(t,e))};function _U(t){return(new zR).set(0,0,t.width||0,t.height||0)}function DU(t){var e=t.bounds.clone();return e.empty()?e.set(0,0,0,0):e.translate(-(t.x||0),-(t.y||0))}function TU(t,e,n){var r=Yy(t)?t[e]:t;return null!=r?r:void 0!==n?n:0}function ZU(t){return t<0?Math.ceil(-t):0}function FU(t,e,n){var r,i,o,a,c,l,u,s,f,h,d,p=!n.nodirty,v=n.bounds===cU?_U:DU,g=kU.set(0,0,0,0),m=TU(n.align,lU),y=TU(n.align,uU),b=TU(n.padding,lU),x=TU(n.padding,uU),w=n.columns||e.length,S=w<=0?1:Math.ceil(e.length/w),k=e.length,C=Array(k),O=Array(w),E=0,M=Array(k),A=Array(S),P=0,_=Array(k),D=Array(k),T=Array(k);for(i=0;i1)for(i=0;i0&&(_[i]+=f/2);if(y&&TU(n.center,uU)&&1!==w)for(i=0;i0&&(D[i]+=h/2);for(i=0;ii&&(t.warn("Grid headers exceed limit: "+i),e=e.slice(0,i)),C+=o,v=0,m=e.length;v=0&&null==(x=n[g]);g-=h);c?(w=null==d?x.x:Math.round(x.bounds.x1+d*x.bounds.width()),S=C):(w=C,S=null==d?x.y:Math.round(x.bounds.y1+d*x.bounds.height())),y.union(b.bounds.translate(w-(b.x||0),S-(b.y||0))),b.x=w,b.y=S,t.dirty(b),O=a(O,y[u])}return O}function NU(t,e,n,r,i,o){if(e){t.dirty(e);var a=n,c=n;r?a=Math.round(i.x1+o*i.width()):c=Math.round(i.y1+o*i.height()),e.bounds.translate(a-(e.x||0),c-(e.y||0)),e.mark.bounds.clear().union(e.bounds),e.x=a,e.y=c,t.dirty(e)}}function BU(t,e,n,r,i,o,a){var c=function(t,e){var n=t[e]||{};return function(e,r){return null!=n[e]?n[e]:null!=t[e]?t[e]:r}}(n,e),l=function(t,e){var n=-1/0;return t.forEach((function(t){null!=t.offset&&(n=Math.max(n,t.offset))})),n>-1/0?n:e}(t,c("offset",0)),u=c("anchor",jz),s=u===Rz?1:u===Iz?.5:0,f={align:aU,bounds:c("bounds",cU),columns:"vertical"===c("direction")?1:t.length,padding:c("margin",8),center:c("center"),nodirty:!0};switch(e){case Az:f.anchor={x:Math.floor(r.x1)-l,column:Rz,y:s*(a||r.height()+2*r.y1),row:u};break;case Pz:f.anchor={x:Math.ceil(r.x2)+l,y:s*(a||r.height()+2*r.y1),row:u};break;case Mz:f.anchor={y:Math.floor(i.y1)-l,row:Rz,x:s*(o||i.width()+2*i.x1),column:u};break;case _z:f.anchor={y:Math.ceil(i.y2)+l,x:s*(o||i.width()+2*i.x1),column:u};break;case Dz:f.anchor={x:l,y:l};break;case Tz:f.anchor={x:o-l,y:l,column:Rz};break;case Zz:f.anchor={x:l,y:a-l,row:Rz};break;case Fz:f.anchor={x:o-l,y:a-l,column:Rz,row:Rz}}return f}function zU(t,e){var n,r,i=e.items[0],o=i.datum,a=i.orient,c=i.bounds,l=i.x,u=i.y;return i._bounds?i._bounds.clear().union(c):i._bounds=c.clone(),c.clear(),function(t,e,n){var r=e.padding,i=r-n.x,o=r-n.y;if(e.datum.title){var a=e.items[1].items[0],c=a.anchor,l=e.titlePadding||0,u=r-a.x,s=r-a.y;switch(a.orient){case Az:i+=Math.ceil(a.bounds.width())+l;break;case Pz:case _z:break;default:o+=a.bounds.height()+l}switch((i||o)&&HU(t,n,i,o),a.orient){case Az:s+=UU(e,n,a,c,1,1);break;case Pz:u+=UU(e,n,a,Rz,0,0)+l,s+=UU(e,n,a,c,1,1);break;case _z:u+=UU(e,n,a,c,0,0),s+=UU(e,n,a,Rz,-1,0,1)+l;break;default:u+=UU(e,n,a,c,0,0)}(u||s)&&HU(t,a,u,s),(u=Math.round(a.bounds.x1-r))<0&&(HU(t,n,-u,0),HU(t,a,-u,0))}else(i||o)&&HU(t,n,i,o)}(t,i,i.items[0].items[0]),c=function(t,e){return t.items.forEach((function(t){return e.union(t.bounds)})),e.x1=t.padding,e.y1=t.padding,e}(i,c),n=2*i.padding,r=2*i.padding,c.empty()||(n=Math.ceil(c.width()+n),r=Math.ceil(c.height()+r)),o.type===Qz&&function(t){var e=t.reduce((function(t,e){return t[e.column]=Math.max(e.bounds.x2-e.x,t[e.column]||0),t}),{});t.forEach((function(t){t.width=e[t.column],t.height=t.bounds.y2-t.y}))}(i.items[0].items[0].items[0].items),a!==iU&&(i.x=l=0,i.y=u=0),i.width=n,i.height=r,XR(c.set(l,u,l+n,u+r),i),i.mark.bounds.clear().union(c),i}function UU(t,e,n,r,i,o,a){var c="symbol"!==t.datum.type,l=n.datum.vgrad,u=(!c||!o&&l||a?e:e.items[0]).bounds[i?"y2":"x2"]-t.padding,s=l&&o?u:0,f=l&&o?0:u,h=i<=0?0:MN(n);return Math.round(r===jz?s:r===Rz?f-h:.5*(u-h))}function HU(t,e,n,r){e.x+=n,e.y+=r,e.bounds.translate(n,r),e.mark.bounds.translate(n,r),t.dirty(e)}function WU(t){lE.call(this,null,t)}Lb(WU,lE,{transform:function(t,e){var n=e.dataflow;return t.mark.items.forEach((function(e){t.layout&&jU(n,e,t.layout),function(t,e,n){var r,i,o,a,c,l=e.items,u=Math.max(0,e.width||0),s=Math.max(0,e.height||0),f=(new zR).set(0,0,u,s),h=f.clone(),d=f.clone(),p=[];for(a=0,c=l.length;a=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function GU(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);nn.cleanThreshold)&&n.runAfter(a.clean),r}}),Lb(KU,lE,{transform:function(t,e){var n=e.fork(e.ADD_REM),r=t.mod||!1,i=t.encoders,o=e.encode;if(qy(o)){if(!n.changed()&&!o.every((function(t){return i[t]})))return e.StopPropagation;o=o[0],n.encode=null}var a="enter"===o,c=i.update||By,l=i.enter||By,u=i.exit||By,s=(o&&!a?i[o]:c)||By;if(e.changed(e.ADD)&&(e.visit(e.ADD,(function(e){l(e,t),c(e,t)})),n.modifies(l.output),n.modifies(c.output),s!==By&&s!==c&&(e.visit(e.ADD,(function(e){s(e,t)})),n.modifies(s.output))),e.changed(e.REM)&&u!==By&&(e.visit(e.REM,(function(e){u(e,t)})),n.modifies(u.output)),a||s!==By){var f=e.MOD|(t.modified()?e.REFLOW:0);a?(e.visit(f,(function(e){var i=l(e,t)||r;(s(e,t)||i)&&n.mod.push(e)})),n.mod.length&&n.modifies(l.output)):e.visit(f,(function(e){(s(e,t)||r)&&n.mod.push(e)})),n.mod.length&&n.modifies(s.output)}return n.changed()?n:e.StopPropagation}}),Lb(JU,lE,{transform:function(t,e){if(null!=this.value&&!t.modified())return e.StopPropagation;var n,r,i,o,a,c=e.dataflow.locale(),l=e.fork(e.NO_SOURCE|e.NO_FIELDS),u=this.value,s=t.type||gI,f=t.scale,h=+t.limit,d=wI(f,null==t.count?5:t.count,t.minstep),p=!!t.values||s===gI,v=t.format||_I(c,f,d,s,t.formatSpecifier,t.formatType,p),g=t.values||AI(f,d);return u&&(l.rem=u),s===gI?(h&&g.length>h?(e.dataflow.warn("Symbol legend count exceeds limit, filtering items."),u=g.slice(0,h-1),a=!0):u=g,wb(i=t.size)?(t.values||0!==f(u[0])||(u=u.slice(1)),o=u.reduce((function(e,n){return Math.max(e,i(n,t))}),0)):i=Ab(o=i||8),u=u.map((function(e,n){return EO({index:n,label:v(e,n,u),value:e,offset:o,size:i(e,t)})})),a&&(a=g[u.length],u.push(EO({index:u.length,label:"…".concat(g.length-u.length," entries"),value:a,offset:o,size:i(a,t)})))):"gradient"===s?(n=f.domain(),r=sI(f,n[0],tb(n)),g.length<3&&!t.values&&n[0]!==tb(n)&&(g=[n[0],tb(n)]),u=g.map((function(t,e){return EO({index:e,label:v(t,e,g),value:t,perc:r(t)})}))):(i=g.length-1,r=function(t){var e=t.domain(),n=e.length-1,r=+e[0],i=+tb(e),o=i-r;if(t.type===Fj){var a=n?o/n:.1;o=(i+=a)-(r-=a)}return function(t){return(t-r)/o}}(f),u=g.map((function(t,e){return EO({index:e,label:v(t,e,g),value:t,perc:e?r(t):0,perc2:e===i?1:r(g[e+1])})}))),l.source=u,l.add=u,this.value=u,l}});var QU=function(t){return t.source.x},tH=function(t){return t.source.y},eH=function(t){return t.target.x},nH=function(t){return t.target.y};function rH(t){lE.call(this,{},t)}rH.Definition={type:"LinkPath",metadata:{modifies:!0},params:[{name:"sourceX",type:"field",default:"source.x"},{name:"sourceY",type:"field",default:"source.y"},{name:"targetX",type:"field",default:"target.x"},{name:"targetY",type:"field",default:"target.y"},{name:"orient",type:"enum",default:"vertical",values:["horizontal","vertical","radial"]},{name:"shape",type:"enum",default:"line",values:["line","arc","curve","diagonal","orthogonal"]},{name:"require",type:"signal"},{name:"as",type:"string",default:"path"}]},Lb(rH,lE,{transform:function(t,e){var n=t.sourceX||QU,r=t.sourceY||tH,i=t.targetX||eH,o=t.targetY||nH,a=t.as||"path",c=t.orient||"vertical",l=t.shape||"line",u=cH.get(l+"-"+c)||cH.get(l);return u||Ty("LinkPath unsupported type: "+t.shape+(t.orient?"-"+t.orient:"")),e.visit(e.SOURCE,(function(t){t[a]=u(n(t),r(t),i(t),o(t))})),e.reflow(t.modified()).modifies(a)}});var iH=function(t,e,n,r){return"M"+t+","+e+"L"+n+","+r},oH=function(t,e,n,r){var i=n-t,o=r-e,a=Math.hypot(i,o)/2;return"M"+t+","+e+"A"+a+","+a+" "+180*Math.atan2(o,i)/Math.PI+" 0 1 "+n+","+r},aH=function(t,e,n,r){var i=n-t,o=r-e,a=.2*(i+o),c=.2*(o-i);return"M"+t+","+e+"C"+(t+a)+","+(e+c)+" "+(n+c)+","+(r-a)+" "+n+","+r},cH=Ib({line:iH,"line-radial":function(t,e,n,r){return iH(e*Math.cos(t),e*Math.sin(t),r*Math.cos(n),r*Math.sin(n))},arc:oH,"arc-radial":function(t,e,n,r){return oH(e*Math.cos(t),e*Math.sin(t),r*Math.cos(n),r*Math.sin(n))},curve:aH,"curve-radial":function(t,e,n,r){return aH(e*Math.cos(t),e*Math.sin(t),r*Math.cos(n),r*Math.sin(n))},"orthogonal-horizontal":function(t,e,n,r){return"M"+t+","+e+"V"+r+"H"+n},"orthogonal-vertical":function(t,e,n,r){return"M"+t+","+e+"H"+n+"V"+r},"orthogonal-radial":function(t,e,n,r){var i=Math.cos(t),o=Math.sin(t),a=Math.cos(n),c=Math.sin(n);return"M"+e*i+","+e*o+"A"+e+","+e+" 0 0,"+((Math.abs(n-t)>Math.PI?n<=t:n>t)?1:0)+" "+e*a+","+e*c+"L"+r*a+","+r*c},"diagonal-horizontal":function(t,e,n,r){var i=(t+n)/2;return"M"+t+","+e+"C"+i+","+e+" "+i+","+r+" "+n+","+r},"diagonal-vertical":function(t,e,n,r){var i=(e+r)/2;return"M"+t+","+e+"C"+t+","+i+" "+n+","+i+" "+n+","+r},"diagonal-radial":function(t,e,n,r){var i=Math.cos(t),o=Math.sin(t),a=Math.cos(n),c=Math.sin(n),l=(e+r)/2;return"M"+e*i+","+e*o+"C"+l*i+","+l*o+" "+l*a+","+l*c+" "+r*a+","+r*c}});function lH(t){lE.call(this,null,t)}lH.Definition={type:"Pie",metadata:{modifies:!0},params:[{name:"field",type:"field"},{name:"startAngle",type:"number",default:0},{name:"endAngle",type:"number",default:6.283185307179586},{name:"sort",type:"boolean",default:!1},{name:"as",type:"string",array:!0,length:2,default:["startAngle","endAngle"]}]},Lb(lH,lE,{transform:function(t,e){var n,r,i,o=t.as||["startAngle","endAngle"],a=o[0],c=o[1],l=t.field||Ly,u=t.startAngle||0,s=null!=t.endAngle?t.endAngle:2*Math.PI,f=e.source,h=f.map(l),d=h.length,p=u,v=(s-u)/XU(h),g=jM(d);for(t.sort&&g.sort((function(t,e){return h[t]-h[e]})),n=0;n0?1:0)}),0));r!==e.length&&n.warn("Log scale domain includes zero: "+tx(e))}return e}function pH(t,e,n){return wb(t)&&(e||n)?cI(t,vH(e||[0,1],n)):t}function vH(t,e){return e?t.slice().reverse():t}function gH(t){lE.call(this,null,t)}Lb(hH,lE,{transform:function(t,e){var n=e.dataflow,r=this.value,i=function(t){var e,n=t.type,r="";if(n===_j)return _j+"-"+kj;(function(t){var e=t.type;return tI(e)&&e!==Aj&&e!==Pj&&(t.scheme||t.range&&t.range.length&&t.range.every(Vb))})(t)&&(r=2===(e=t.rawDomain?t.rawDomain.length:t.domain?t.domain.length+ +(null!=t.domainMid):0)?_j+"-":3===e?Dj+"-":"");return(r+n||kj).toLowerCase()}(t);for(i in r&&i===r.type||(this.value=r=Kj(i)()),t)if(!fH[i]){if("padding"===i&&sH(r.type))continue;wb(r[i])?r[i](t[i]):n.warn("Unsupported scale property: "+i)}return function(t,e,n){var r=t.type,i=e.round||!1,o=e.range;if(null!=e.rangeStep)o=function(t,e,n){t!==Rj&&t!==Ij&&Ty("Only band and point scales support rangeStep.");var r=(null!=e.paddingOuter?e.paddingOuter:e.padding)||0,i=t===Ij?1:(null!=e.paddingInner?e.paddingInner:e.padding)||0;return[0,e.rangeStep*Sj(n,i,r)]}(r,e,n);else if(e.scheme&&(o=function(t,e,n){var r,i=e.schemeExtent;qy(e.scheme)?r=lI(e.scheme,e.interpolate,e.interpolateGamma):(r=vI(e.scheme.toLowerCase()))||Ty("Unrecognized scheme name: ".concat(e.scheme));return n=t===Fj?n+1:t===Lj?n-1:t===Tj||t===Zj?+e.schemeCount||uH:n,iI(t)?pH(r,i,e.reverse):wb(r)?uI(pH(r,i),n):t===jj?r:r.slice(0,n)}(r,e,n),wb(o))){if(t.interpolator)return t.interpolator(o);Ty("Scale type ".concat(r," does not support interpolating color schemes."))}if(o&&iI(r))return t.interpolator(lI(vH(o,e.reverse),e.interpolate,e.interpolateGamma));o&&e.interpolate&&t.interpolate?t.interpolate(fI(e.interpolate,e.interpolateGamma)):wb(t.round)?t.round(i):wb(t.rangeRound)&&t.interpolate(i?dD:fD.Z);o&&t.range(vH(o,e.reverse))}(r,t,function(t,e,n){var r=e.bins;if(r&&!qy(r)){var i=t.domain(),o=i[0],a=tb(i),c=r.step,l=null==r.start?o:r.start,u=null==r.stop?a:r.stop;c||Ty("Scale bins parameter missing step property."),la&&(u=c*Math.floor(a/c)),r=jM(l,u+c/2,c)}r?t.bins=r:t.bins&&delete t.bins;t.type===Lj&&(r?e.domain||e.domainRaw||(t.domain(r),n=r.length):t.bins=t.domain());return n}(r,t,function(t,e,n){var r=function(t,e,n){return e?(t.domain(dH(t.type,e,n)),e.length):-1}(t,e.domainRaw,n);if(r>-1)return r;var i,o,a=e.domain,c=t.type,l=e.zero||void 0===e.zero&&function(t){var e=t.type;return!t.bins&&(e===kj||e===Oj||e===Ej)}(t);if(!a)return 0;sH(c)&&e.padding&&a[0]!==tb(a)&&(a=function(t,e,n,r,i,o){var a=Math.abs(tb(n)-n[0]),c=a/(a-2*r),l=t===Cj?pb(e,null,c):t===Ej?vb(e,null,c,.5):t===Oj?vb(e,null,c,i||1):t===Mj?gb(e,null,c,o||1):db(e,null,c);return e=e.slice(),e[0]=l[0],e[e.length-1]=l[1],e}(c,a,e.range,e.padding,e.exponent,e.constant));if((l||null!=e.domainMin||null!=e.domainMax||null!=e.domainMid)&&(i=(a=a.slice()).length-1||1,l&&(a[0]>0&&(a[0]=0),a[i]<0&&(a[i]=0)),null!=e.domainMin&&(a[0]=e.domainMin),null!=e.domainMax&&(a[i]=e.domainMax),null!=e.domainMid)){var u=(o=e.domainMid)>a[i]?i+1:oh&&(h=f),n&&s.sort(n)}return d.max=h,d}(e.source,t.groupby,u,s),r=0,i=n.length,o=n.max;r0){for(o=r[--i];i>0&&(t=o,!(n=(e=r[--i])-((o=t+e)-t))););i>0&&(n<0&&r[i-1]<0||n>0&&r[i-1]>0)&&(e=2*n)==(t=o+e)-o&&(o=t)}return o}}]),t}();var ZH=1e-6,FH=1e-12,jH=Math.PI,IH=jH/2,RH=jH/4,LH=2*jH,NH=180/jH,BH=jH/180,zH=Math.abs,UH=Math.atan,HH=Math.atan2,WH=Math.cos,VH=Math.ceil,GH=Math.exp,XH=(Math.floor,Math.hypot),qH=Math.log,YH=Math.pow,$H=Math.sin,KH=Math.sign||function(t){return t>0?1:t<0?-1:0},JH=Math.sqrt,QH=Math.tan;function tW(t){return t>1?0:t<-1?jH:Math.acos(t)}function eW(t){return t>1?IH:t<-1?-IH:Math.asin(t)}function nW(){}var rW,iW,oW,aW,cW=new TH,lW=new TH,uW={point:nW,lineStart:nW,lineEnd:nW,polygonStart:function(){uW.lineStart=sW,uW.lineEnd=dW},polygonEnd:function(){uW.lineStart=uW.lineEnd=uW.point=nW,cW.add(zH(lW)),lW=new TH},result:function(){var t=cW/2;return cW=new TH,t}};function sW(){uW.point=fW}function fW(t,e){uW.point=hW,rW=oW=t,iW=aW=e}function hW(t,e){lW.add(aW*t-oW*e),oW=t,aW=e}function dW(){hW(rW,iW)}var pW=uW,vW=1/0,gW=vW,mW=-vW,yW=mW,bW={point:function(t,e){tmW&&(mW=t);eyW&&(yW=e)},lineStart:nW,lineEnd:nW,polygonStart:nW,polygonEnd:nW,result:function(){var t=[[vW,gW],[mW,yW]];return mW=yW=-(gW=vW=1/0),t}};var xW,wW,SW,kW,CW=bW,OW=0,EW=0,MW=0,AW=0,PW=0,_W=0,DW=0,TW=0,ZW=0,FW={point:jW,lineStart:IW,lineEnd:NW,polygonStart:function(){FW.lineStart=BW,FW.lineEnd=zW},polygonEnd:function(){FW.point=jW,FW.lineStart=IW,FW.lineEnd=NW},result:function(){var t=ZW?[DW/ZW,TW/ZW]:_W?[AW/_W,PW/_W]:MW?[OW/MW,EW/MW]:[NaN,NaN];return OW=EW=MW=AW=PW=_W=DW=TW=ZW=0,t}};function jW(t,e){OW+=t,EW+=e,++MW}function IW(){FW.point=RW}function RW(t,e){FW.point=LW,jW(SW=t,kW=e)}function LW(t,e){var n=t-SW,r=e-kW,i=JH(n*n+r*r);AW+=i*(SW+t)/2,PW+=i*(kW+e)/2,_W+=i,jW(SW=t,kW=e)}function NW(){FW.point=jW}function BW(){FW.point=UW}function zW(){HW(xW,wW)}function UW(t,e){FW.point=HW,jW(xW=SW=t,wW=kW=e)}function HW(t,e){var n=t-SW,r=e-kW,i=JH(n*n+r*r);AW+=i*(SW+t)/2,PW+=i*(kW+e)/2,_W+=i,DW+=(i=kW*t-SW*e)*(SW+t),TW+=i*(kW+e),ZW+=3*i,jW(SW=t,kW=e)}var WW=FW;function VW(t){this._context=t}VW.prototype={_radius:4.5,pointRadius:function(t){return this._radius=t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(t,e){switch(this._point){case 0:this._context.moveTo(t,e),this._point=1;break;case 1:this._context.lineTo(t,e);break;default:this._context.moveTo(t+this._radius,e),this._context.arc(t,e,this._radius,0,LH)}},result:nW};var GW,XW,qW,YW,$W,KW=new TH,JW={point:nW,lineStart:function(){JW.point=QW},lineEnd:function(){GW&&tV(XW,qW),JW.point=nW},polygonStart:function(){GW=!0},polygonEnd:function(){GW=null},result:function(){var t=+KW;return KW=new TH,t}};function QW(t,e){JW.point=tV,XW=YW=t,qW=$W=e}function tV(t,e){YW-=t,$W-=e,KW.add(JH(YW*YW+$W*$W)),YW=t,$W=e}var eV,nV,rV,iV,oV,aV,cV,lV,uV=JW,sV=function(){function t(e){(0,Rm.Z)(this,t),this._append=null==e?fV:function(t){var e=Math.floor(t);if(!(e>=0))throw new RangeError("invalid digits: ".concat(t));if(e>15)return fV;if(e!==oV){var n=Math.pow(10,e);oV=e,aV=function(t){var e=1;this._+=t[0];for(var r=t.length;e=0))throw new RangeError("invalid digits: ".concat(t));i=n}return null===e&&(r=new sV(i)),a},a.projection(t).digits(i).context(e)}function dV(){var t,e=[];return{point:function(e,n,r){t.push([e,n,r])},lineStart:function(){e.push(t=[])},lineEnd:nW,rejoin:function(){e.length>1&&e.push(e.pop().concat(e.shift()))},result:function(){var n=e;return e=[],t=null,n}}}function pV(t,e){return zH(t[0]-e[0])=0;--o)i.point((s=u[o])[0],s[1]);else r(h.x,h.p.x,-1,i);h=h.p}u=(h=h.o).z,d=!d}while(!h.v);i.lineEnd()}}}function mV(t){if(e=t.length){for(var e,n,r=0,i=t[0];++r=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function AV(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=0?1:-1,E=O*C,M=E>jH,A=g*S;if(l.add(HH(A*O*$H(E),m*k+A*WH(E))),a+=M?C+O*LH:C,M^p>=n^x>=n){var P=wV(bV(d),bV(b));CV(P);var _=wV(o,P);CV(_);var D=(M^C>=0?-1:1)*eW(_[2]);(r>D||r===D&&(P[0]||P[1]))&&(c+=M^C>=0?1:-1)}}return(a<-ZH||a0){for(f||(i.polygonStart(),f=!0),i.lineStart(),t=0;t1&&2&l&&h.push(h.pop().concat(h.shift())),a.push(h.filter(TV))}return h}}function TV(t){return t.length>1}function ZV(t,e){return((t=t.x)[0]<0?t[1]-IH-ZH:IH-t[1])-((e=e.x)[0]<0?e[1]-IH-ZH:IH-e[1])}var FV=DV((function(){return!0}),(function(t){var e,n=NaN,r=NaN,i=NaN;return{lineStart:function(){t.lineStart(),e=1},point:function(o,a){var c=o>0?jH:-jH,l=zH(o-n);zH(l-jH)0?IH:-IH),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(c,r),t.point(o,r),e=0):i!==c&&l>=jH&&(zH(n-i)ZH?UH(($H(e)*(o=WH(r))*$H(n)-$H(r)*(i=WH(e))*$H(t))/(i*o*a)):(e+r)/2}(n,r,o,a),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(c,r),e=0),t.point(n=o,r=a),i=c},lineEnd:function(){t.lineEnd(),n=r=NaN},clean:function(){return 2-e}}}),(function(t,e,n,r){var i;if(null==t)i=n*IH,r.point(-jH,i),r.point(0,i),r.point(jH,i),r.point(jH,0),r.point(jH,-i),r.point(0,-i),r.point(-jH,-i),r.point(-jH,0),r.point(-jH,i);else if(zH(t[0]-e[0])>ZH){var o=t[0]0?io)&&(i+=r*LH));for(var u,s=i;r>0?s>o:s0)do{u.point(0===s||3===s?t:n,s>1?r:e)}while((s=(s+c+4)%4)!==f);else u.point(o[0],o[1])}function a(r,i){return zH(r[0]-t)0?0:3:zH(r[0]-n)0?2:1:zH(r[1]-e)0?1:0:i>0?3:2}function c(t,e){return l(t.x,e.x)}function l(t,e){var n=a(t,1),r=a(e,1);return n!==r?n-r:0===n?e[1]-t[1]:1===n?t[0]-e[0]:2===n?t[1]-e[1]:e[0]-t[0]}return function(a){var l,u,s,f,h,d,p,v,g,m,y,b=a,x=dV(),w={point:S,lineStart:function(){w.point=k,u&&u.push(s=[]);m=!0,g=!1,p=v=NaN},lineEnd:function(){l&&(k(f,h),d&&g&&x.rejoin(),l.push(x.result()));w.point=S,g&&b.lineEnd()},polygonStart:function(){b=x,l=[],u=[],y=!0},polygonEnd:function(){var e=function(){for(var e=0,n=0,i=u.length;nr&&(h-o)*(r-a)>(d-a)*(t-o)&&++e:d<=r&&(h-o)*(r-a)<(d-a)*(t-o)&&--e;return e}(),n=y&&e,i=(l=_V(l)).length;(n||i)&&(a.polygonStart(),n&&(a.lineStart(),o(null,null,1,a),a.lineEnd()),i&&gV(l,c,e,o,a),a.polygonEnd());b=a,l=u=s=null}};function S(t,e){i(t,e)&&b.point(t,e)}function k(o,a){var c=i(o,a);if(u&&s.push([o,a]),m)f=o,h=a,d=c,m=!1,c&&(b.lineStart(),b.point(o,a));else if(c&&g)b.point(o,a);else{var l=[p=Math.max(LV,Math.min(RV,p)),v=Math.max(LV,Math.min(RV,v))],x=[o=Math.max(LV,Math.min(RV,o)),a=Math.max(LV,Math.min(RV,a))];!function(t,e,n,r,i,o){var a,c=t[0],l=t[1],u=0,s=1,f=e[0]-c,h=e[1]-l;if(a=n-c,f||!(a>0)){if(a/=f,f<0){if(a0){if(a>s)return;a>u&&(u=a)}if(a=i-c,f||!(a<0)){if(a/=f,f<0){if(a>s)return;a>u&&(u=a)}else if(f>0){if(a0)){if(a/=h,h<0){if(a0){if(a>s)return;a>u&&(u=a)}if(a=o-l,h||!(a<0)){if(a/=h,h<0){if(a>s)return;a>u&&(u=a)}else if(h>0){if(a0&&(t[0]=c+u*f,t[1]=l+u*h),s<1&&(e[0]=c+s*f,e[1]=l+s*h),!0}}}}}(l,x,t,e,n,r)?c&&(b.lineStart(),b.point(o,a),y=!1):(g||(b.lineStart(),b.point(l[0],l[1])),b.point(x[0],x[1]),c||b.lineEnd(),y=!1)}p=o,v=a,g=c}return w}}function BV(t,e){function n(n,r){return n=t(n,r),e(n[0],n[1])}return t.invert&&e.invert&&(n.invert=function(n,r){return(n=e.invert(n,r))&&t.invert(n[0],n[1])}),n}function zV(t,e){return zH(t)>jH&&(t-=Math.round(t/LH)*LH),[t,e]}function UV(t,e,n){return(t%=LH)?e||n?BV(WV(t),VV(e,n)):WV(t):e||n?VV(e,n):zV}function HV(t){return function(e,n){return zH(e+=t)>jH&&(e-=Math.round(e/LH)*LH),[e,n]}}function WV(t){var e=HV(t);return e.invert=HV(-t),e}function VV(t,e){var n=WH(t),r=$H(t),i=WH(e),o=$H(e);function a(t,e){var a=WH(e),c=WH(t)*a,l=$H(t)*a,u=$H(e),s=u*n+c*r;return[HH(l*i-s*o,c*n-u*r),eW(s*i+l*o)]}return a.invert=function(t,e){var a=WH(e),c=WH(t)*a,l=$H(t)*a,u=$H(e),s=u*i-l*o;return[HH(l*i+u*o,c*n+s*r),eW(s*n-c*r)]},a}function GV(t){return function(e){var n=new XV;for(var r in t)n[r]=t[r];return n.stream=e,n}}function XV(){}function qV(t,e,n){var r=t.clipExtent&&t.clipExtent();return t.scale(150).translate([0,0]),null!=r&&t.clipExtent(null),DH(n,t.stream(CW)),e(CW.result()),null!=r&&t.clipExtent(r),t}function YV(t,e,n){return qV(t,(function(n){var r=e[1][0]-e[0][0],i=e[1][1]-e[0][1],o=Math.min(r/(n[1][0]-n[0][0]),i/(n[1][1]-n[0][1])),a=+e[0][0]+(r-o*(n[1][0]+n[0][0]))/2,c=+e[0][1]+(i-o*(n[1][1]+n[0][1]))/2;t.scale(150*o).translate([a,c])}),n)}function $V(t,e,n){return YV(t,[[0,0],e],n)}function KV(t,e,n){return qV(t,(function(n){var r=+e,i=r/(n[1][0]-n[0][0]),o=(r-i*(n[1][0]+n[0][0]))/2,a=-i*n[0][1];t.scale(150*i).translate([o,a])}),n)}function JV(t,e,n){return qV(t,(function(n){var r=+e,i=r/(n[1][1]-n[0][1]),o=-i*n[0][0],a=(r-i*(n[1][1]+n[0][1]))/2;t.scale(150*i).translate([o,a])}),n)}zV.invert=zV,XV.prototype={constructor:XV,point:function(t,e){this.stream.point(t,e)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};var QV=16,tG=WH(30*BH);function eG(t,e){return+e?function(t,e){function n(r,i,o,a,c,l,u,s,f,h,d,p,v,g){var m=u-r,y=s-i,b=m*m+y*y;if(b>4*e&&v--){var x=a+h,w=c+d,S=l+p,k=JH(x*x+w*w+S*S),C=eW(S/=k),O=zH(zH(S)-1)e||zH((m*P+y*_)/b-.5)>.3||a*h+c*d+l*p0,i=zH(e)>ZH;function o(t,n){return WH(t)*WH(n)>e}function a(t,n,r){var i=[1,0,0],o=wV(bV(t),bV(n)),a=xV(o,o),c=o[0],l=a-c*c;if(!l)return!r&&t;var u=e*a/l,s=-e*c/l,f=wV(i,o),h=kV(i,u);SV(h,kV(o,s));var d=f,p=xV(h,d),v=xV(d,d),g=p*p-v*(xV(h,h)-1);if(!(g<0)){var m=JH(g),y=kV(d,(-p-m)/v);if(SV(y,h),y=yV(y),!r)return y;var b,x=t[0],w=n[0],S=t[1],k=n[1];w0^y[1]<(zH(y[0]-x)jH^(x<=y[0]&&y[0]<=w)){var E=kV(d,(-p+m)/v);return SV(E,h),[y,yV(E)]}}}function c(e,n){var i=r?t:jH-t,o=0;return e<-i?o|=1:e>i&&(o|=2),n<-i?o|=4:n>i&&(o|=8),o}return DV(o,(function(t){var e,n,l,u,s;return{lineStart:function(){u=l=!1,s=1},point:function(f,h){var d,p=[f,h],v=o(f,h),g=r?v?0:c(f,h):v?c(f+(f<0?jH:-jH),h):0;if(!e&&(u=l=v)&&t.lineStart(),v!==l&&(!(d=a(e,p))||pV(e,d)||pV(p,d))&&(p[2]=1),v!==l)s=0,v?(t.lineStart(),d=a(p,e),t.point(d[0],d[1])):(d=a(e,p),t.point(d[0],d[1],2),t.lineEnd()),e=d;else if(i&&e&&r^v){var m;g&n||!(m=a(p,e,!0))||(s=0,r?(t.lineStart(),t.point(m[0][0],m[0][1]),t.point(m[1][0],m[1][1]),t.lineEnd()):(t.point(m[1][0],m[1][1]),t.lineEnd(),t.lineStart(),t.point(m[0][0],m[0][1],3)))}!v||e&&pV(e,p)||t.point(p[0],p[1]),e=p,l=v,n=g},lineEnd:function(){l&&t.lineEnd(),e=null},clean:function(){return s|(u&&l)<<1}}}),(function(e,r,i,o){jV(o,t,n,i,e,r)}),r?[0,-t]:[-jH,t-jH])}(S=t*BH):(S=null,FV),_()):S*NH},M.clipExtent=function(t){return arguments.length?(O=null==t?(C=r=i=o=null,OH):NV(C=+t[0][0],r=+t[0][1],i=+t[1][0],o=+t[1][1]),_()):null==C?null:[[C,r],[i,o]]},M.scale=function(t){return arguments.length?(f=+t,P()):f},M.translate=function(t){return arguments.length?(h=+t[0],d=+t[1],P()):[h,d]},M.center=function(t){return arguments.length?(p=t[0]%360*BH,v=t[1]%360*BH,P()):[p*NH,v*NH]},M.rotate=function(t){return arguments.length?(g=t[0]%360*BH,m=t[1]%360*BH,y=t.length>2?t[2]%360*BH:0,P()):[g*NH,m*NH,y*NH]},M.angle=function(t){return arguments.length?(b=t%360*BH,P()):b*NH},M.reflectX=function(t){return arguments.length?(x=t?-1:1,P()):x<0},M.reflectY=function(t){return arguments.length?(w=t?-1:1,P()):w<0},M.precision=function(t){return arguments.length?(a=eG(c,E=t*t),_()):JH(E)},M.fitExtent=function(t,e){return YV(M,t,e)},M.fitSize=function(t,e){return $V(M,t,e)},M.fitWidth=function(t,e){return KV(M,t,e)},M.fitHeight=function(t,e){return JV(M,t,e)},function(){return e=t.apply(this,arguments),M.invert=e.invert&&A,P()}}function aG(t){var e=0,n=jH/3,r=oG(t),i=r(e,n);return i.parallels=function(t){return arguments.length?r(e=t[0]*BH,n=t[1]*BH):[e*NH,n*NH]},i}function cG(t,e){var n=$H(t),r=(n+$H(e))/2;if(zH(r)2?t[2]*BH:0),e.invert=function(e){return(e=t.invert(e[0]*BH,e[1]*BH))[0]*=NH,e[1]*=NH,e},e}(i.rotate()).invert([0,0]));return l(null==u?[[c[0]-o,c[1]-o],[c[0]+o,c[1]+o]]:t===pG?[[Math.max(c[0]-o,u),e],[Math.min(c[0]+o,n),r]]:[[u,Math.max(c[1]-o,e)],[n,Math.min(c[1]+o,r)]])}return i.scale=function(t){return arguments.length?(a(t),s()):a()},i.translate=function(t){return arguments.length?(c(t),s()):c()},i.center=function(t){return arguments.length?(o(t),s()):o()},i.clipExtent=function(t){return arguments.length?(null==t?u=e=n=r=null:(u=+t[0][0],e=+t[0][1],n=+t[1][0],r=+t[1][1]),s()):null==u?null:[[u,e],[n,r]]},s()}function gG(t){return QH((IH+t)/2)}function mG(t,e){var n=WH(t),r=t===e?$H(t):qH(n/WH(e))/qH(gG(e)/gG(t)),i=n*YH(gG(t),r)/r;if(!r)return pG;function o(t,e){i>0?e<-IH+ZH&&(e=-IH+ZH):e>IH-ZH&&(e=IH-ZH);var n=i/YH(gG(e),r);return[n*$H(r*t),i-n*WH(r*t)]}return o.invert=function(t,e){var n=i-e,o=KH(r)*JH(t*t+n*n),a=HH(t,zH(n))*KH(n);return n*r<0&&(a-=jH*KH(t)*KH(n)),[a/r,2*UH(YH(i/o,1/r))-IH]},o}function yG(t,e){return[t,e]}function bG(t,e){var n=WH(t),r=t===e?$H(t):(n-WH(e))/(e-t),i=n/r+t;if(zH(r)ZH&&--i>0);return[t/(.8707+(o=r*r)*(o*(o*o*o*(.003971-.001529*o)-.013791)-.131979)),r]},AG.invert=fG(eW),PG.invert=fG((function(t){return 2*UH(t)})),_G.invert=function(t,e){return[-e,2*UH(GH(t))-IH]};var DG=Math.abs,TG=(Math.atan,Math.atan2,Math.ceil,Math.cos),ZG=(Math.exp,Math.floor,Math.log,Math.max,Math.min,Math.pow,Math.round,Math.sign,Math.sin),FG=(Math.tan,1e-6),jG=Math.PI,IG=jG/2,RG=(Math.SQRT1_2,NG(2));NG(jG);function LG(t){return t>1?IG:t<-1?-IG:Math.asin(t)}function NG(t){return t>0?Math.sqrt(t):0}function BG(t,e){var n,r=t*ZG(e),i=30;do{e-=n=(e+ZG(e)-r)/(1+TG(e))}while(DG(n)>FG&&--i>0);return e/2}var zG=function(t,e,n){function r(r,i){return[t*r*TG(i=BG(n,i)),e*ZG(i)]}return r.invert=function(r,i){return i=LG(i/e),[r/(t*TG(i)),LG((2*i+ZG(2*i))/n)]},r}(RG/IG,RG,jG);var UG=hV(),HG=["clipAngle","clipExtent","scale","translate","center","rotate","parallels","precision","reflectX","reflectY","coefficient","distance","fraction","lobes","parallel","radius","ratio","spacing","tilt"];function WG(t,e){if(!t||"string"!=typeof t)throw new Error("Projection type must be a name string.");return t=t.toLowerCase(),arguments.length>1?(GG[t]=function(t,e){return function n(){var r=e();return r.type=t,r.path=hV().projection(r),r.copy=r.copy||function(){var t=n();return HG.forEach((function(e){r[e]&&t[e](r[e]())})),t.path.pointRadius(r.path.pointRadius()),t},$j(r)}}(t,e),this):GG[t]||null}function VG(t){return t&&t.path||UG}var GG={albers:uG,albersusa:function(){var t,e,n,r,i,o,a=uG(),c=lG().rotate([154,0]).center([-2,58.5]).parallels([55,65]),l=lG().rotate([157,0]).center([-3,19.9]).parallels([8,18]),u={point:function(t,e){o=[t,e]}};function s(t){var e=t[0],a=t[1];return o=null,n.point(e,a),o||(r.point(e,a),o)||(i.point(e,a),o)}function f(){return t=e=null,s}return s.invert=function(t){var e=a.scale(),n=a.translate(),r=(t[0]-n[0])/e,i=(t[1]-n[1])/e;return(i>=.12&&i<.234&&r>=-.425&&r<-.214?c:i>=.166&&i<.234&&r>=-.214&&r<-.115?l:a).invert(t)},s.stream=function(n){return t&&e===n?t:(r=[a.stream(e=n),c.stream(n),l.stream(n)],i=r.length,t={point:function(t,e){for(var n=-1;++n2?t[2]+90:90]):[(t=n())[0],t[1],t[2]-90]},n([0,0,90]).scale(159.155)}};for(var XG in GG)WG(XG,GG[XG]);function qG(t,e,n){var r=jM(t,e-ZH,n).concat(e);return function(t){return r.map((function(e){return[t,e]}))}}function YG(t,e,n){var r=jM(t,e-ZH,n).concat(e);return function(t){return r.map((function(e){return[e,t]}))}}function $G(){var t,e,n,r,i,o,a,c,l,u,s,f,h=10,d=h,p=90,v=360,g=2.5;function m(){return{type:"MultiLineString",coordinates:y()}}function y(){return jM(VH(r/p)*p,n,p).map(s).concat(jM(VH(c/v)*v,a,v).map(f)).concat(jM(VH(e/h)*h,t,h).filter((function(t){return zH(t%p)>ZH})).map(l)).concat(jM(VH(o/d)*d,i,d).filter((function(t){return zH(t%v)>ZH})).map(u))}return m.lines=function(){return y().map((function(t){return{type:"LineString",coordinates:t}}))},m.outline=function(){return{type:"Polygon",coordinates:[s(r).concat(f(a).slice(1),s(n).reverse().slice(1),f(c).reverse().slice(1))]}},m.extent=function(t){return arguments.length?m.extentMajor(t).extentMinor(t):m.extentMinor()},m.extentMajor=function(t){return arguments.length?(r=+t[0][0],n=+t[1][0],c=+t[0][1],a=+t[1][1],r>n&&(t=r,r=n,n=t),c>a&&(t=c,c=a,a=t),m.precision(g)):[[r,c],[n,a]]},m.extentMinor=function(n){return arguments.length?(e=+n[0][0],t=+n[1][0],o=+n[0][1],i=+n[1][1],e>t&&(n=e,e=t,t=n),o>i&&(n=o,o=i,i=n),m.precision(g)):[[e,o],[t,i]]},m.step=function(t){return arguments.length?m.stepMajor(t).stepMinor(t):m.stepMinor()},m.stepMajor=function(t){return arguments.length?(p=+t[0],v=+t[1],m):[p,v]},m.stepMinor=function(t){return arguments.length?(h=+t[0],d=+t[1],m):[h,d]},m.precision=function(h){return arguments.length?(g=+h,l=qG(o,i,90),u=YG(e,t,g),s=qG(c,a,90),f=YG(r,n,g),m):g},m.extentMajor([[-180,-90+ZH],[180,90-ZH]]).extentMinor([[-180,-80-ZH],[180,80+ZH]])}function KG(){}var JG=[[],[[[1,1.5],[.5,1]]],[[[1.5,1],[1,1.5]]],[[[1.5,1],[.5,1]]],[[[1,.5],[1.5,1]]],[[[1,1.5],[.5,1]],[[1,.5],[1.5,1]]],[[[1,.5],[1,1.5]]],[[[1,.5],[.5,1]]],[[[.5,1],[1,.5]]],[[[1,1.5],[1,.5]]],[[[.5,1],[1,.5]],[[1.5,1],[1,1.5]]],[[[1.5,1],[1,.5]]],[[[.5,1],[1.5,1]]],[[[1,1.5],[1.5,1]]],[[[.5,1],[1,1.5]]],[]];function QG(){var t=1,e=1,n=a;function r(t,e){return e.map((function(e){return i(t,e)}))}function i(r,i){var a=[],c=[];return function(n,r,i){var a,c,l,u,s,f,h=new Array,d=new Array;a=c=-1,u=n[0]>=r,JG[u<<1].forEach(p);for(;++a=r,JG[l|u<<1].forEach(p);JG[u<<0].forEach(p);for(;++c=r,s=n[c*t]>=r,JG[u<<1|s<<2].forEach(p);++a=r,f=s,s=n[c*t+a+1]>=r,JG[l|u<<1|s<<2|f<<3].forEach(p);JG[u|s<<3].forEach(p)}a=-1,s=n[c*t]>=r,JG[s<<2].forEach(p);for(;++a=r,JG[s<<2|f<<3].forEach(p);function p(t){var e,n,r=[t[0][0]+a,t[0][1]+c],l=[t[1][0]+a,t[1][1]+c],u=o(r),s=o(l);(e=d[u])?(n=h[s])?(delete d[e.end],delete h[n.start],e===n?(e.ring.push(l),i(e.ring)):h[e.start]=d[n.end]={start:e.start,end:n.end,ring:e.ring.concat(n.ring)}):(delete d[e.end],e.ring.push(l),d[e.end=s]=e):(e=h[s])?(n=d[u])?(delete h[e.start],delete d[n.end],e===n?(e.ring.push(l),i(e.ring)):h[n.start]=d[e.end]={start:n.start,end:e.end,ring:n.ring.concat(e.ring)}):(delete h[e.start],e.ring.unshift(r),h[e.start=u]=e):h[u]=d[s]={start:u,end:s,ring:[r,l]}}JG[s<<3].forEach(p)}(r,i,(function(t){n(t,r,i),function(t){var e=0,n=t.length,r=t[n-1][1]*t[0][0]-t[n-1][0]*t[0][1];for(;++e0?a.push([t]):c.push(t)})),c.forEach((function(t){for(var e,n=0,r=a.length;n0&&a0&&c=0&&o>=0||Ty("invalid size"),t=i,e=o,r},r.smooth=function(t){return arguments.length?(n=t?a:KG,r):n===a},r}function tX(t,e){for(var n,r=-1,i=e.length;++rr!=d>r&&n<(h-u)*(r-s)/(d-s)+u&&(i=-i)}return i}function nX(t,e,n){var r,i,o,a;return function(t,e,n){return(e[0]-t[0])*(n[1]-t[1])==(n[0]-t[0])*(e[1]-t[1])}(t,e,n)&&(i=t[r=+(t[0]===e[0])],o=n[r],a=e[r],i<=o&&o<=a||a<=o&&o<=i)}function rX(t,e,n){return function(r){var i=Db(r),o=n?Math.min(i[0],0):i[0],a=i[1],c=a-o,l=e?Dx(o,a,t):c/(t+1);return jM(o+l,a,l)}}function iX(t){lE.call(this,null,t)}function oX(t,e,n,r,i){var o=t.x1||0,a=t.y1||0,c=e*n<0;function l(t){t.forEach(u)}function u(t){c&&t.reverse(),t.forEach(s)}function s(t){t[0]=(t[0]-o)*e+r,t[1]=(t[1]-a)*n+i}return function(t){return t.coordinates.forEach(l),t}}function aX(t,e,n){var r=t>=0?t:NE(e,n);return Math.round((Math.sqrt(4*r*r+1)-1)/2)}function cX(t){return wb(t)?t:Ab(+t)}function lX(){var t=function(t){return t[0]},e=function(t){return t[1]},n=Ly,r=[-1,-1],i=960,o=500,a=2;function c(c,l){var u=aX(r[0],c,t)>>a,s=aX(r[1],c,e)>>a,f=u?u+2:0,h=s?s+2:0,d=2*f+(i>>a),p=2*h+(o>>a),v=new Float32Array(d*p),g=new Float32Array(d*p),m=v;c.forEach((function(r){var i=f+(+t(r)>>a),o=h+(+e(r)>>a);i>=0&&i=0&&o0&&s>0?(uX(d,p,v,g,u),sX(d,p,g,v,s),uX(d,p,v,g,u),sX(d,p,g,v,s),uX(d,p,v,g,u),sX(d,p,g,v,s)):u>0?(uX(d,p,v,g,u),uX(d,p,g,v,u),uX(d,p,v,g,u),m=g):s>0&&(sX(d,p,v,g,s),sX(d,p,g,v,s),sX(d,p,v,g,s),m=g);for(var y=l?Math.pow(2,-2*a):1/XU(m),b=0,x=d*p;b>a),y2:h+(o>>a)}}return c.x=function(e){return arguments.length?(t=cX(e),c):t},c.y=function(t){return arguments.length?(e=cX(t),c):e},c.weight=function(t){return arguments.length?(n=cX(t),c):n},c.size=function(t){if(!arguments.length)return[i,o];var e=+t[0],n=+t[1];return e>=0&&n>=0||Ty("invalid size"),i=e,o=n,c},c.cellSize=function(t){return arguments.length?((t=+t)>=1||Ty("invalid cell size"),a=Math.floor(Math.log(t)/Math.LN2),c):1<=i&&(c>=o&&(l-=n[c-o+a*t]),r[c-i+a*t]=l/Math.min(c+1,t-1+o-c,o))}function sX(t,e,n,r,i){for(var o=1+(i<<1),a=0;a=i&&(c>=o&&(l-=n[a+(c-o)*t]),r[a+(c-i)*t]=l/Math.min(c+1,e-1+o-c,o))}function fX(t){lE.call(this,null,t)}iX.Definition={type:"Isocontour",metadata:{generates:!0},params:[{name:"field",type:"field"},{name:"thresholds",type:"number",array:!0},{name:"levels",type:"number"},{name:"nice",type:"boolean",default:!1},{name:"resolve",type:"enum",values:["shared","independent"],default:"independent"},{name:"zero",type:"boolean",default:!0},{name:"smooth",type:"boolean",default:!0},{name:"scale",type:"number",expr:!0},{name:"translate",type:"number",array:!0,expr:!0},{name:"as",type:"string",null:!0,default:"contour"}]},Lb(iX,lE,{transform:function(t,e){if(this.value&&!e.changed()&&!t.modified())return e.StopPropagation;var n=e.fork(e.NO_SOURCE|e.NO_FIELDS),r=e.materialize(e.SOURCE).source,i=t.field||Iy,o=QG().smooth(!1!==t.smooth),a=t.thresholds||function(t,e,n){var r=rX(n.levels||10,n.nice,!1!==n.zero);return"shared"!==n.resolve?r:r(t.map((function(t){return pE(e(t).values)})))}(r,i,t),c=null===t.as?null:t.as||"contour",l=[];return r.forEach((function(e){var n=i(e),r=o.size([n.width,n.height])(n.values,qy(a)?a:a(n.values));!function(t,e,n,r){var i=r.scale||e.scale,o=r.translate||e.translate;wb(i)&&(i=i(n,r));wb(o)&&(o=o(n,r));if((1===i||null==i)&&!o)return;var a=(Hb(i)?i:i[0])||1,c=(Hb(i)?i:i[1])||1,l=o&&o[0]||0,u=o&&o[1]||0;t.forEach(oX(e,a,c,l,u))}(r,n,e,t),r.forEach((function(t){l.push(AO(e,EO(null!=c?(0,V.Z)({},c,t):t)))}))})),this.value&&(n.rem=this.value),this.value=n.source=n.add=l,n}}),fX.Definition={type:"KDE2D",metadata:{generates:!0},params:[{name:"size",type:"number",array:!0,length:2,required:!0},{name:"x",type:"field",required:!0},{name:"y",type:"field",required:!0},{name:"weight",type:"field"},{name:"groupby",type:"field",array:!0},{name:"cellSize",type:"number"},{name:"bandwidth",type:"number",array:!0,length:2},{name:"counts",type:"boolean",default:!1},{name:"as",type:"string",default:"grid"}]};var hX=["x","y","weight","size","cellSize","bandwidth"];function dX(t,e){return hX.forEach((function(n){return null!=e[n]?t[n](e[n]):0})),t}function pX(t){lE.call(this,null,t)}Lb(fX,lE,{transform:function(t,e){if(this.value&&!e.changed()&&!t.modified())return e.StopPropagation;var n,r=e.fork(e.NO_SOURCE|e.NO_FIELDS),i=function(t,e){var n,r,i,o,a,c,l=[],u=function(t){return t(o)};if(null==e)l.push(t);else for(n={},r=0,i=t.length;r=(o=(v+m)/2))?v=o:m=o,(s=n>=(a=(g+y)/2))?g=a:y=a,i=d,!(d=d[f=s<<1|u]))return i[f]=p,t;if(c=+t._x.call(null,d.data),l=+t._y.call(null,d.data),e===c&&n===l)return p.next=d,i?i[f]=p:t._root=p,t;do{i=i?i[f]=new Array(4):t._root=new Array(4),(u=e>=(o=(v+m)/2))?v=o:m=o,(s=n>=(a=(g+y)/2))?g=a:y=a}while((f=s<<1|u)==(h=(l>=a)<<1|c>=o));return i[h]=d,i[f]=p,t}function MX(t,e,n,r,i){this.node=t,this.x0=e,this.y0=n,this.x1=r,this.y1=i}function AX(t){return t[0]}function PX(t){return t[1]}function _X(t,e,n){var r=new DX(null==e?AX:e,null==n?PX:n,NaN,NaN,NaN,NaN);return null==t?r:r.addAll(t)}function DX(t,e,n,r,i,o){this._x=t,this._y=e,this._x0=n,this._y0=r,this._x1=i,this._y1=o,this._root=void 0}function TX(t){for(var e={data:t.data},n=e;t=t.next;)n=n.next={data:t.data};return e}mX.Definition={type:"GeoJSON",metadata:{},params:[{name:"fields",type:"field",array:!0,length:2},{name:"geojson",type:"field"}]},Lb(mX,lE,{transform:function(t,e){var n,r=this._features,i=this._points,o=t.fields,a=o&&o[0],c=o&&o[1],l=t.geojson||!o&&Iy,u=e.ADD;n=t.modified()||e.changed(e.REM)||e.modified(Ay(l))||a&&e.modified(Ay(a))||c&&e.modified(Ay(c)),this.value&&!n||(u=e.SOURCE,this._features=r=[],this._points=i=[]),l&&e.visit(u,(function(t){return r.push(l(t))})),a&&c&&(e.visit(u,(function(t){var e=a(t),n=c(t);null!=e&&null!=n&&(e=+e)===e&&(n=+n)===n&&i.push([e,n])})),r=r.concat({type:vX,geometry:{type:"MultiPoint",coordinates:i}})),this.value={type:gX,features:r}}}),yX.Definition={type:"GeoPath",metadata:{modifies:!0},params:[{name:"projection",type:"projection"},{name:"field",type:"field"},{name:"pointRadius",type:"number",expr:!0},{name:"as",type:"string",default:"path"}]},Lb(yX,lE,{transform:function(t,e){var n=e.fork(e.ALL),r=this.value,i=t.field||Iy,o=t.as||"path",a=n.SOURCE;!r||t.modified()?(this.value=r=VG(t.projection),n.materialize().reflow()):a=i===Iy||e.modified(i.fields)?n.ADD_MOD:n.ADD;var c=function(t,e){var n=t.pointRadius();t.context(null),null!=e&&t.pointRadius(e);return n}(r,t.pointRadius);return n.visit(a,(function(t){return t[o]=r(i(t))})),r.pointRadius(c),n.modifies(o)}}),bX.Definition={type:"GeoPoint",metadata:{modifies:!0},params:[{name:"projection",type:"projection",required:!0},{name:"fields",type:"field",array:!0,required:!0,length:2},{name:"as",type:"string",array:!0,length:2,default:["x","y"]}]},Lb(bX,lE,{transform:function(t,e){var n,r=t.projection,i=t.fields[0],o=t.fields[1],a=t.as||["x","y"],c=a[0],l=a[1];function u(t){var e=r([i(t),o(t)]);e?(t[c]=e[0],t[l]=e[1]):(t[c]=void 0,t[l]=void 0)}return t.modified()?e=e.materialize().reflow(!0).visit(e.SOURCE,u):(n=e.modified(i.fields)||e.modified(o.fields),e.visit(n?e.ADD_MOD:e.ADD,u)),e.modifies(a)}}),xX.Definition={type:"GeoShape",metadata:{modifies:!0,nomod:!0},params:[{name:"projection",type:"projection"},{name:"field",type:"field",default:"datum"},{name:"pointRadius",type:"number",expr:!0},{name:"as",type:"string",default:"shape"}]},Lb(xX,lE,{transform:function(t,e){var n=e.fork(e.ALL),r=this.value,i=t.as||"shape",o=n.ADD;return r&&!t.modified()||(this.value=r=function(t,e,n){var r=null==n?function(n){return t(e(n))}:function(r){var i=t.pointRadius(),o=t.pointRadius(n)(e(r));return t.pointRadius(i),o};return r.context=function(e){return t.context(e),r},r}(VG(t.projection),t.field||Fy("datum"),t.pointRadius),n.materialize().reflow(),o=n.SOURCE),n.visit(o,(function(t){return t[i]=r})),n.modifies(i)}}),wX.Definition={type:"Graticule",metadata:{changes:!0,generates:!0},params:[{name:"extent",type:"array",array:!0,length:2,content:{type:"number",array:!0,length:2}},{name:"extentMajor",type:"array",array:!0,length:2,content:{type:"number",array:!0,length:2}},{name:"extentMinor",type:"array",array:!0,length:2,content:{type:"number",array:!0,length:2}},{name:"step",type:"number",array:!0,length:2},{name:"stepMajor",type:"number",array:!0,length:2,default:[90,360]},{name:"stepMinor",type:"number",array:!0,length:2,default:[10,10]},{name:"precision",type:"number",default:2.5}]},Lb(wX,lE,{transform:function(t,e){var n,r=this.value,i=this.generator;if(!r.length||t.modified())for(var o in t)wb(i[o])&&i[o](t[o]);return n=i(),r.length?e.mod.push(PO(r[0],n)):e.add.push(EO(n)),r[0]=n,e}}),SX.Definition={type:"heatmap",metadata:{modifies:!0},params:[{name:"field",type:"field"},{name:"color",type:"string",expr:!0},{name:"opacity",type:"number",expr:!0},{name:"resolve",type:"enum",values:["shared","independent"],default:"independent"},{name:"as",type:"string",default:"image"}]},Lb(SX,lE,{transform:function(t,e){if(!e.changed()&&!t.modified())return e.StopPropagation;var n=e.materialize(e.SOURCE).source,r="shared"===t.resolve,i=t.field||Iy,o=function(t,e){var n;wb(t)?(n=function(n){return t(n,e)},n.dep=kX(t)):t?n=Ab(t):(n=function(t){return t.$value/t.$max||0},n.dep=!0);return n}(t.opacity,t),a=function(t,e){var n;wb(t)?(n=function(n){return(0,DF.B8)(t(n,e))},n.dep=kX(t)):n=Ab((0,DF.B8)(t||"#888"));return n}(t.color,t),c=t.as||"image",l={$x:0,$y:0,$value:0,$max:r?pE(n.map((function(t){return pE(i(t).values)}))):0};return n.forEach((function(t){var e=i(t),n=_b({},t,l);r||(n.$max=pE(e.values||[])),t[c]=function(t,e,n,r){for(var i=t.width,o=t.height,a=t.x1||0,c=t.y1||0,l=t.x2||i,u=t.y2||o,s=t.values,f=s?function(t){return s[t]}:Ry,h=N_(l-a,u-c),d=h.getContext("2d"),p=d.getImageData(0,0,l-a,u-c),v=p.data,g=c,m=0;gs&&(s=r),if&&(f=i));if(l>s||u>f)return this;for(this.cover(l,u).cover(s,f),n=0;nt||t>=i||r>e||e>=o;)switch(c=(eh||(o=l.y0)>d||(a=l.x1)=m)<<1|t>=g)&&(l=p[p.length-1],p[p.length-1]=p[p.length-1-u],p[p.length-1-u]=l)}else{var y=t-+this._x.call(null,v.data),b=e-+this._y.call(null,v.data),x=y*y+b*b;if(x=(c=(p+g)/2))?p=c:g=c,(s=a>=(l=(v+m)/2))?v=l:m=l,e=d,!(d=d[f=s<<1|u]))return this;if(!d.length)break;(e[f+1&3]||e[f+2&3]||e[f+3&3])&&(n=e,h=f)}for(;d.data!==t;)if(r=d,!(d=d.next))return this;return(i=d.next)&&delete d.next,r?(i?r.next=i:delete r.next,this):e?(i?e[f]=i:delete e[f],(d=e[0]||e[1]||e[2]||e[3])&&d===(e[3]||e[2]||e[1]||e[0])&&!d.length&&(n?n[h]=d:this._root=d),this):(this._root=i,this)},ZX.removeAll=function(t){for(var e=0,n=t.length;e=0&&(n=t.slice(r+1),t=t.slice(0,r)),t&&!e.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:n}}))}(t+"",r),o=-1,a=i.length;if(!(arguments.length<2)){if(null!=e&&"function"!=typeof e)throw new Error("invalid callback: "+e);for(;++o0)for(var n,r,i=new Array(n),o=0;o=0&&e._call.call(void 0,t),e=e._next;--GX}()}finally{GX=0,function(){var t,e,n=HX,r=1/0;for(;n;)n._call?(r>n._time&&(r=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:HX=e);WX=t,cq(r)}(),KX=0}}function aq(){var t=QX.now(),e=t-$X;e>YX&&(JX-=e,$X=t)}function cq(t){GX||(XX&&(XX=clearTimeout(XX)),t-KX>24?(t<1/0&&(XX=setTimeout(oq,t-QX.now()-JX)),qX&&(qX=clearInterval(qX))):(qX||($X=QX.now(),qX=setInterval(aq,YX)),GX=1,tq(oq)))}rq.prototype=iq.prototype={constructor:rq,restart:function(t,e,n){if("function"!=typeof t)throw new TypeError("callback is not a function");n=(null==n?eq():+n)+(null==e?0:+e),this._next||WX===this||(WX?WX._next=this:HX=this,WX=this),this._call=t,this._time=n,cq()},stop:function(){this._call&&(this._call=null,this._time=1/0,cq())}};var lq=1664525,uq=1013904223,sq=4294967296;function fq(t){return t.x}function hq(t){return t.y}var dq=10,pq=Math.PI*(3-Math.sqrt(5));function vq(t){var e,n=1,r=.001,i=1-Math.pow(r,1/300),o=0,a=.6,c=new Map,l=iq(f),u=VX("tick","end"),s=function(){var t=1;return function(){return(t=(lq*t+uq)%sq)/sq}}();function f(){h(),u.call("tick",e),n1?(null==n?c.delete(t):c.set(t,p(n)),e):c.get(t)},find:function(e,n,r){var i,o,a,c,l,u=0,s=t.length;for(null==r?r=1/0:r*=r,u=0;u1?(u.on(t,n),e):u.on(t)}}}function gq(t){return t.index}function mq(t,e){var n=t.get(e);if(!n)throw new Error("node not found: "+e);return n}var yq={center:function(t,e){var n,r=1;function i(){var i,o,a=n.length,c=0,l=0;for(i=0;iu+p||os+p||al.index){var v=u-c.x-c.vx,g=s-c.y-c.vy,m=v*v+g*g;mt.r&&(t.r=t[e].r)}function l(){if(e){var r,i,o=e.length;for(n=new Array(o),r=0;r=c)){(t.data!==e||t.next)&&(0===f&&(p+=(f=jX(n))*f),0===h&&(p+=(h=jX(n))*h),p=0;)e+=n[r].value;else e=1;t.value=e}function Pq(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return _q(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _q(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function _q(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Tq(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=0;)i.tick();else if(i.stopped()&&i.restart(),!o)return e.StopPropagation;return this.finish(t,e)},finish:function(t,e){for(var n,r=e.dataflow,i=this._argops,o=0,a=i.length;o=0;--o)l.push(r=i[o]=new Bq(i[o])),r.parent=n,r.depth=n.depth+1;return c.eachBefore(Nq)}function Iq(t){return t.children}function Rq(t){return Array.isArray(t)?t[1]:null}function Lq(t){void 0!==t.data.value&&(t.value=t.data.value),t.data=t.data.data}function Nq(t){var e=0;do{t.height=e}while((t=t.parent)&&t.height<++e)}function Bq(t){this.data=t,this.depth=this.height=0,this.parent=null}function zq(t){return null==t?null:Uq(t)}function Uq(t){if("function"!=typeof t)throw new Error;return t}function Hq(){return 0}function Wq(t){return function(){return t}}Bq.prototype=jq.prototype=(0,V.Z)({constructor:Bq,count:function(){return this.eachAfter(Aq)},each:function(t,e){var n,r=-1,i=Pq(this);try{for(i.s();!(n=i.n()).done;){var o=n.value;t.call(e,o,++r,this)}}catch(a){i.e(a)}finally{i.f()}return this},eachAfter:function(t,e){for(var n,r,i,o=this,a=[o],c=[],l=-1;o=a.pop();)if(c.push(o),n=o.children)for(r=0,i=n.length;r=0;--r)o.push(n[r]);return this},find:function(t,e){var n,r=-1,i=Dq(this);try{for(i.s();!(n=i.n()).done;){var o=n.value;if(t.call(e,o,++r,this))return o}}catch(a){i.e(a)}finally{i.f()}},sum:function(t){return this.eachAfter((function(e){for(var n=+t(e.data)||0,r=e.children,i=r&&r.length;--i>=0;)n+=r[i].value;e.value=n}))},sort:function(t){return this.eachBefore((function(e){e.children&&e.children.sort(t)}))},path:function(t){for(var e=this,n=function(t,e){if(t===e)return t;var n=t.ancestors(),r=e.ancestors(),i=null;t=n.pop(),e=r.pop();for(;t===e;)i=t,t=n.pop(),e=r.pop();return i}(e,t),r=[e];e!==n;)e=e.parent,r.push(e);for(var i=r.length;t!==n;)r.splice(i,0,t),t=t.parent;return r},ancestors:function(){for(var t=this,e=[t];t=t.parent;)e.push(t);return e},descendants:function(){return Array.from(this)},leaves:function(){var t=[];return this.eachBefore((function(e){e.children||t.push(e)})),t},links:function(){var t=this,e=[];return t.each((function(n){n!==t&&e.push({source:n.parent,target:n})})),e},copy:function(){return jq(this).eachBefore(Lq)}},Symbol.iterator,Fq);var Vq=1664525,Gq=1013904223,Xq=4294967296;function qq(t,e){for(var n,r,i=0,o=(t=function(t,e){for(var n,r,i=t.length;i;)r=e()*i--|0,n=t[i],t[i]=t[r],t[r]=n;return t}(Array.from(t),e)).length,a=[];i0&&n*n>r*r+i*i}function Jq(t,e){for(var n=0;n1e-6?(M+Math.sqrt(M*M-4*E*A))/(2*E):A/M);return{x:r+S+k*P,y:i+C+O*P,r:P}}function nY(t,e,n){var r,i,o,a,c=t.x-e.x,l=t.y-e.y,u=c*c+l*l;u?(i=e.r+n.r,i*=i,a=t.r+n.r,i>(a*=a)?(r=(u+a-i)/(2*u),o=Math.sqrt(Math.max(0,a/u-r*r)),n.x=t.x-r*c-o*l,n.y=t.y-r*l+o*c):(r=(u+i-a)/(2*u),o=Math.sqrt(Math.max(0,i/u-r*r)),n.x=e.x+r*c-o*l,n.y=e.y+r*l+o*c)):(n.x=e.x+n.r,n.y=e.y)}function rY(t,e){var n=t.r+e.r-1e-6,r=e.x-t.x,i=e.y-t.y;return n>0&&n*n>r*r+i*i}function iY(t){var e=t._,n=t.next._,r=e.r+n.r,i=(e.x*n.r+n.x*e.r)/r,o=(e.y*n.r+n.y*e.r)/r;return i*i+o*o}function oY(t){this._=t,this.next=null,this.previous=null}function aY(t,e){if(!(o=(t=function(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}(t)).length))return 0;var n,r,i,o,a,c,l,u,s,f,h;if((n=t[0]).x=0,n.y=0,!(o>1))return n.r;if(r=t[1],n.x=-r.r,r.x=n.r,r.y=0,!(o>2))return n.r+r.r;nY(r,n,i=t[2]),n=new oY(n),r=new oY(r),i=new oY(i),n.next=i.previous=r,r.next=n.previous=i,i.next=r.previous=n;t:for(l=3;l=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function pY(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=0&&(u=h[S]).data===mY;--S)u.data=null}if(c.parent=vY,c.eachBefore((function(t){t.depth=t.parent.depth+1,--i})).eachBefore(Nq),c.parent=null,i>0)throw new Error("cycle");return c}return r.id=function(t){return arguments.length?(e=zq(t),r):e},r.parentId=function(t){return arguments.length?(n=zq(t),r):n},r.path=function(e){return arguments.length?(t=zq(e),r):t},r}function wY(t){var e=t.length;if(e<2)return"";for(;--e>1&&!SY(t,e););return t.slice(0,e)}function SY(t,e){if("/"===t[e]){for(var n=0;e>0&&"\\"===t[--e];)++n;if(0==(1&n))return!0}return!1}function kY(t,e){return t.parent===e.parent?1:2}function CY(t){var e=t.children;return e?e[0]:t.t}function OY(t){var e=t.children;return e?e[e.length-1]:t.t}function EY(t,e,n){var r=n/(e.i-t.i);e.c-=r,e.s+=n,t.c+=r,e.z+=n,e.m+=n}function MY(t,e,n){return t.a.parent===e.parent?t.a:n}function AY(t,e){this._=t,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=e}function PY(t,e){return t.parent===e.parent?1:2}function _Y(t,e){return t+e.x}function DY(t,e){return Math.max(t,e.y)}function TY(t,e,n,r,i){for(var o,a=t.children,c=-1,l=a.length,u=t.value&&(i-n)/t.value;++ch&&(h=c),g=s*s*v,(d=Math.max(h/g,g/f))>p){s-=c;break}p=d}m.push(a={value:s,dice:l1?e:1)},n}(ZY),IY=function t(e){function n(t,n,r,i,o){if((a=t._squarify)&&a.ratio===e)for(var a,c,l,u,s,f=-1,h=a.length,d=t.value;++f1?e:1)},n}(ZY);function RY(t,e,n){var r={};return t.each((function(t){var i=t.data;n(i)&&(r[e(i)]=t)})),t.lookup=r,t}function LY(t){lE.call(this,null,t)}LY.Definition={type:"Nest",metadata:{treesource:!0,changes:!0},params:[{name:"keys",type:"field",array:!0},{name:"generate",type:"boolean"}]};var NY=function(t){return t.values};function BY(){var t=[],e={entries:function(t){return r(n(t,0),0)},key:function(n){return t.push(n),e}};function n(e,r){if(r>=t.length)return e;for(var i,o,a,c=e.length,l=t[r++],u={},s={},f=-1;++ft.length)return e;var i=[];for(var o in e)i.push({key:o,values:r(e[o],n)});return i}return e}function zY(t){lE.call(this,null,t)}Lb(LY,lE,{transform:function(t,e){e.source||Ty("Nest transform requires an upstream data source.");var n=t.generate,r=t.modified(),i=e.clone(),o=this.value;return(!o||r||e.changed())&&(o&&o.each((function(t){t.children&&kO(t.data)&&i.rem.push(t.data)})),this.value=o=jq({values:bb(t.keys).reduce((function(t,e){return t.key(e),t}),BY()).entries(i.source)},NY),n&&o.each((function(t){t.children&&(t=EO(t.data),i.add.push(t),i.source.push(t))})),RY(o,CO,CO)),i.source.root=o,i}});var UY=function(t,e){return t.parent===e.parent?1:2};Lb(zY,lE,{transform:function(t,e){e.source&&e.source.root||Ty(this.constructor.name+" transform requires a backing tree data source.");var n=this.layout(t.method),r=this.fields,i=e.source.root,o=t.as||r;t.field?i.sum(t.field):i.count(),t.sort&&i.sort(_O(t.sort,(function(t){return t.data}))),function(t,e,n){for(var r,i=0,o=e.length;i=0;--i)c.push(n=e.children[i]=new AY(r[i],i)),n.parent=e;return(a.parent=new AY(null,0)).children=[a],a}(i);if(l.eachAfter(o),l.parent.m=-l.z,l.eachBefore(a),r)i.eachBefore(c);else{var u=i,s=i,f=i;i.eachBefore((function(t){t.xs.x&&(s=t),t.depth>f.depth&&(f=t)}));var h=u===s?1:t(u,s)/2,d=h-u.x,p=e/(s.x+h+d),v=n/(f.depth||1);i.eachBefore((function(t){t.x=(t.x+d)*p,t.y=t.depth*v}))}return i}function o(e){var n=e.children,r=e.parent.children,i=e.i?r[e.i-1]:null;if(n){!function(t){for(var e,n=0,r=0,i=t.children,o=i.length;--o>=0;)(e=i[o]).z+=n,e.m+=n,n+=e.s+(r+=e.c)}(e);var o=(n[0].z+n[n.length-1].z)/2;i?(e.z=i.z+t(e._,i._),e.m=e.z-o):e.z=o}else i&&(e.z=i.z+t(e._,i._));e.parent.A=function(e,n,r){if(n){for(var i,o=e,a=e,c=n,l=o.parent.children[0],u=o.m,s=a.m,f=c.m,h=l.m;c=OY(c),o=CY(o),c&&o;)l=CY(l),(a=OY(a)).a=e,(i=c.z+f-o.z-u+t(c._,o._))>0&&(EY(MY(c,e,r),e,i),u+=i,s+=i),f+=c.m,u+=o.m,h+=l.m,s+=a.m;c&&!OY(a)&&(a.t=c,a.m+=f-s),o&&!CY(l)&&(l.t=o,l.m+=u-h,r=e)}return r}(e,i,e.parent.A||r[0])}function a(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function c(t){t.x*=e,t.y=t.depth*n}return i.separation=function(e){return arguments.length?(t=e,i):t},i.size=function(t){return arguments.length?(r=!1,e=+t[0],n=+t[1],i):r?null:[e,n]},i.nodeSize=function(t){return arguments.length?(r=!0,e=+t[0],n=+t[1],i):r?[e,n]:null},i},cluster:function(){var t=PY,e=1,n=1,r=!1;function i(i){var o,a=0;i.eachAfter((function(e){var n=e.children;n?(e.x=function(t){return t.reduce(_Y,0)/t.length}(n),e.y=function(t){return 1+t.reduce(DY,0)}(n)):(e.x=o?a+=t(e,o):0,e.y=0,o=e)}));var c=function(t){for(var e;e=t.children;)t=e[0];return t}(i),l=function(t){for(var e;e=t.children;)t=e[e.length-1];return t}(i),u=c.x-t(c,l)/2,s=l.x+t(l,c)/2;return i.eachAfter(r?function(t){t.x=(t.x-i.x)*e,t.y=(i.y-t.y)*n}:function(t){t.x=(t.x-u)/(s-u)*e,t.y=(1-(i.y?t.y/i.y:1))*n})}return i.separation=function(e){return arguments.length?(t=e,i):t},i.size=function(t){return arguments.length?(r=!1,e=+t[0],n=+t[1],i):r?null:[e,n]},i.nodeSize=function(t){return arguments.length?(r=!0,e=+t[0],n=+t[1],i):r?[e,n]:null},i}},YY=["x","y","depth","children"];function $Y(t){zY.call(this,t)}function KY(t){lE.call(this,[],t)}$Y.Definition={type:"Tree",metadata:{tree:!0,modifies:!0},params:[{name:"field",type:"field"},{name:"sort",type:"compare"},{name:"method",type:"enum",default:"tidy",values:["tidy","cluster"]},{name:"size",type:"number",array:!0,length:2},{name:"nodeSize",type:"number",array:!0,length:2},{name:"separation",type:"boolean",default:!0},{name:"as",type:"string",array:!0,length:YY.length,default:YY}]},Lb($Y,zY,{layout:function(t){var e=t||"tidy";if(Fb(qY,e))return qY[e]();Ty("Unrecognized Tree layout method: "+e)},params:["size","nodeSize"],fields:YY}),KY.Definition={type:"TreeLinks",metadata:{tree:!0,generates:!0,changes:!0},params:[]},Lb(KY,lE,{transform:function(t,e){var n=this.value,r=e.source&&e.source.root,i=e.fork(e.NO_SOURCE),o={};return r||Ty("TreeLinks transform requires a tree data source."),e.changed(e.ADD_REM)?(i.rem=n,e.visit(e.SOURCE,(function(t){return o[CO(t)]=1})),r.each((function(t){var e=t.data,n=t.parent&&t.parent.data;n&&o[CO(e)]&&o[CO(n)]&&i.add.push(EO({source:n,target:e}))})),this.value=i.add):e.changed(e.MOD)&&(e.visit(e.MOD,(function(t){return o[CO(t)]=1})),n.forEach((function(t){(o[CO(t.source)]||o[CO(t.target)])&&i.mod.push(t)}))),i}});var JY={binary:function(t,e,n,r,i){var o,a,c=t.children,l=c.length,u=new Array(l+1);for(u[0]=a=o=0;o=n-1){var s=c[e];return s.x0=i,s.y0=o,s.x1=a,void(s.y1=l)}var f=u[e],h=r/2+f,d=e+1,p=n-1;for(;d>>1;u[v]l-o){var y=r?(i*m+a*g)/r:a;t(e,d,g,i,o,y,l),t(d,n,m,y,o,a,l)}else{var b=r?(o*m+l*g)/r:l;t(e,d,g,i,o,a,b),t(d,n,m,i,b,a,l)}}(0,l,t.value,e,n,r,i)},dice:hY,slice:TY,slicedice:function(t,e,n,r,i){(1&t.depth?TY:hY)(t,e,n,r,i)},squarify:jY,resquarify:IY},QY=["x0","y0","x1","y1","depth","children"];function t$(t){zY.call(this,t)}function e$(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function n$(t){for(var e=1;e>>c$]&1<<(i&l$)},set:function(e,n){var i=n*t+e;r(i>>>c$,1<<(i&l$))},clear:function(e,n){var r=n*t+e;i(r>>>c$,~(1<<(r&l$)))},getRange:function(e,r,i,o){for(var a,c,l,u,s=o;s>=r;--s)if((l=(a=s*t+e)>>>c$)==(u=(c=s*t+i)>>>c$)){if(n[l]&s$[a&l$]&f$[1+(c&l$)])return!0}else{if(n[l]&s$[a&l$])return!0;if(n[u]&f$[1+(c&l$)])return!0;for(var f=l+1;f>>c$)==(u=(c=n*t+i)>>>c$))r(l,s$[a&l$]&f$[1+(c&l$)]);else for(r(l,s$[a&l$]),r(u,f$[1+(c&l$)]),s=l+1;s>>c$)==(u=(c=n*t+r)>>>c$))i(l,f$[a&l$]|s$[1+(c&l$)]);else for(i(l,f$[a&l$]),i(u,s$[1+(c&l$)]),s=l+1;s=e||i>=t}}}(i,o)},a.ratio=r,a.padding=n,a.width=t,a.height=e,a}function p$(t,e,n,r,i,o){var a=n/2;return t-a<0||t+a>i||e-(a=r/2)<0||e+a>o}function v$(t,e,n,r,i,o,a,c){var l=i*o/(2*r),u=t(e-l),s=t(e+l),f=t(n-(o/=2)),h=t(n+o);return a.outOfBounds(u,f,s,h)||a.getRange(u,f,s,h)||c&&c.getRange(u,f,s,h)}var g$=[-1,-1,1,1],m$=[-1,1,-1,1];var y$=["right","center","left"],b$=["bottom","middle","top"];function x$(t,e,n,r,i,o,a,c,l,u,s,f){return!(i.outOfBounds(t,n,e,r)||(f&&o||i).getRange(t,n,e,r))}var w$={"top-left":0,top:1,"top-right":2,left:4,middle:5,right:6,"bottom-left":8,bottom:9,"bottom-right":10},S$={naive:function(t,e,n,r){var i=t.width,o=t.height;return function(t){for(var e,n,a,c,l,u,s,f=t.datum.datum.items[r].items,h=f.length,d=t.datum.fontSize,p=yN.width(t.datum,t.datum.text),v=0,g=0;g=v&&(v=s,t.x=l,t.y=u);return l=p/2,u=d/2,e=t.x-l,n=t.x+l,a=t.y-u,c=t.y+u,t.align="center",e<0&&n<=i?t.align="left":0<=e&&i=1;)v$(t,f,h,u,l,s=(d+p)/2,a,c)?p=s:d=s;if(d>r)return[f,h,d,!0]}}return function(e){for(var c,u,s,f,h,d,p,v,g,m,y,b,x,w,S,k,C,O=e.datum.datum.items[r].items,E=O.length,M=e.datum.fontSize,A=yN.width(e.datum,e.datum.text),P=n?M:0,_=!1,D=!1,T=0,Z=0;Z(u=void 0===O[Z].x2?c:O[Z].x2)&&(C=c,c=u,u=C),s>(f=void 0===O[Z].y2?s:O[Z].y2)&&(C=s,s=f,f=C),m=~~(((g=t(c))+(y=t(u)))/2),x=~~(((b=t(s))+(w=t(f)))/2),p=m;p>=g;--p)for(v=x;v>=b;--v)if(k=l(p,v,P,A,M)){var F=k,j=(0,G.Z)(F,4);e.x=j[0],e.y=j[1],P=j[2],_=j[3]}for(p=m;p<=y;++p)for(v=x;v<=w;++v)if(k=l(p,v,P,A,M)){var I=k,R=(0,G.Z)(I,4);e.x=R[0],e.y=R[1],P=R[2],_=R[3]}_||n||(h=(c+u)/2,d=(s+f)/2,(S=Math.abs(u-c+f-s))>=T&&!p$(h,d,A,M,i,o)&&!v$(t,h,d,M,A,M,a,null)&&(T=S,e.x=h,e.y=d,D=!0))}return!(!_&&!D)&&(h=A/2,d=M/2,a.setRange(t(e.x-h),t(e.y-d),t(e.x+h),t(e.y+d)),e.align="center",e.baseline="middle",!0)}},floodfill:function(t,e,n,r){var i=t.width,o=t.height,a=e[0],c=e[1],l=t.bitmap();return function(e){for(var u,s,f,h,d,p,v,g,m,y,b,x,w=e.datum.datum.items[r].items,S=w.length,k=e.datum.fontSize,C=yN.width(e.datum,e.datum.text),O=[],E=n?k:0,M=!1,A=!1,P=0,_=0;_=1;)v$(t,d,p,k,C,b=(m+y)/2,a,c)?y=b:m=b;m>E&&(e.x=d,e.y=p,E=m,M=!0)}}}M||n||(d=(u+s)/2,p=(f+h)/2,(x=Math.abs(s-u+h-f))>=P&&!p$(d,p,C,k,i,o)&&!v$(t,d,p,k,C,k,a,null)&&(P=x,e.x=d,e.y=p,A=!0))}return!(!M&&!A)&&(d=C/2,p=k/2,a.setRange(t(e.x-d),t(e.y-p),t(e.x+d),t(e.y+p)),e.align="center",e.baseline="middle",!0)}}};function k$(t,e,n,r,i,o,a,c,l,u,s){if(!t.length)return t;var f,h=Math.max(r.length,i.length),d=function(t,e){for(var n=new Float64Array(e),r=t.length,i=0;ii||s[3]>o)return!1;for(var h,d,p,v,g,m,y,b,x,w,S,k,C,O,E,M=null!==(u=e.textWidth)&&void 0!==u?u:0,A=0;A>>2&3)-1,p=0===h&&0===d||r[A]<0,v=h&&d?Math.SQRT1_2:1,g=r[A]<0?-1:1,m=s[1+h]+r[A]*h*v,b=(S=s[4+d]+g*f*d/2+r[A]*d*v)-f/2,x=S+f/2,k=t(m),O=t(b),E=t(x),!M){if(!x$(k,k,O,E,a,c,0,0,0,0,0,p))continue;M=yN.width(e.datum,e.datum.text)}if(y=(w=m+g*M*h/2)+M/2,x$(k=t(m=w-M/2),C=t(y),O,E,a,c,0,0,0,0,0,p))return e.x=h?h*g<0?y:m:w,e.y=d?d*g<0?x:b:S,e.align=y$[h*g+1],e.baseline=b$[d*g+1],a.setRange(k,O,C,E),!0}return!1}}(O,C,p,d);return k.forEach((function(t){return t.opacity=+P(t)})),k}var C$=["x","y","opacity","align","baseline"],O$=["top-left","left","bottom-left","top","bottom","top-right","right","bottom-right"];function E$(t){lE.call(this,null,t)}function M$(t,e){var n,r,i,o,a,c,l=[],u=function(t){return t(o)};if(null==e)l.push(t);else for(n={},r=0,i=t.length;ru==s>-u?(o=u,u=e[++f]):(o=s,s=r[++h]);var d=0;if(fu==s>-u?(c=o-((a=u+o)-u),u=e[++f]):(c=o-((a=s+o)-s),s=r[++h]),o=a,0!==c&&(i[d++]=c);fu==s>-u?(c=o-((a=o+u)-(l=a-o))+(u-l),u=e[++f]):(c=o-((a=o+s)-(l=a-o))+(s-l),s=r[++h]),o=a,0!==c&&(i[d++]=c);for(;f=33306690738754716e-32*u?l:-function(t,e,n,r,i,o,a){var c,l,u,s,f,h,d,p,v,g,m,y,b,x,w,S,k,C,O=t-i,E=n-i,M=e-o,A=r-o;f=(w=(p=O-(d=(h=D$*O)-(h-O)))*(g=A-(v=(h=D$*A)-(h-A)))-((x=O*A)-d*v-p*v-d*g))-(m=w-(k=(p=M-(d=(h=D$*M)-(h-M)))*(g=E-(v=(h=D$*E)-(h-E)))-((S=M*E)-d*v-p*v-d*g))),R$[0]=w-(m+f)+(f-k),f=(b=x-((y=x+m)-(f=y-x))+(m-f))-(m=b-S),R$[1]=b-(m+f)+(f-S),f=(C=y+m)-y,R$[2]=y-(C-f)+(m-f),R$[3]=C;var P=function(t,e){for(var n=e[0],r=1;r=_||-P>=_)return P;if(c=t-(O+(f=t-O))+(f-i),u=n-(E+(f=n-E))+(f-i),l=e-(M+(f=e-M))+(f-o),s=r-(A+(f=r-A))+(f-o),0===c&&0===l&&0===u&&0===s)return P;if(_=I$*a+T$*Math.abs(P),(P+=O*s+A*c-(M*u+E*l))>=_||-P>=_)return P;f=(w=(p=c-(d=(h=D$*c)-(h-c)))*(g=A-(v=(h=D$*A)-(h-A)))-((x=c*A)-d*v-p*v-d*g))-(m=w-(k=(p=l-(d=(h=D$*l)-(h-l)))*(g=E-(v=(h=D$*E)-(h-E)))-((S=l*E)-d*v-p*v-d*g))),z$[0]=w-(m+f)+(f-k),f=(b=x-((y=x+m)-(f=y-x))+(m-f))-(m=b-S),z$[1]=b-(m+f)+(f-S),f=(C=y+m)-y,z$[2]=y-(C-f)+(m-f),z$[3]=C;var D=Z$(4,R$,4,z$,L$);f=(w=(p=O-(d=(h=D$*O)-(h-O)))*(g=s-(v=(h=D$*s)-(h-s)))-((x=O*s)-d*v-p*v-d*g))-(m=w-(k=(p=M-(d=(h=D$*M)-(h-M)))*(g=u-(v=(h=D$*u)-(h-u)))-((S=M*u)-d*v-p*v-d*g))),z$[0]=w-(m+f)+(f-k),f=(b=x-((y=x+m)-(f=y-x))+(m-f))-(m=b-S),z$[1]=b-(m+f)+(f-S),f=(C=y+m)-y,z$[2]=y-(C-f)+(m-f),z$[3]=C;var T=Z$(D,L$,4,z$,N$);f=(w=(p=c-(d=(h=D$*c)-(h-c)))*(g=s-(v=(h=D$*s)-(h-s)))-((x=c*s)-d*v-p*v-d*g))-(m=w-(k=(p=l-(d=(h=D$*l)-(h-l)))*(g=u-(v=(h=D$*u)-(h-u)))-((S=l*u)-d*v-p*v-d*g))),z$[0]=w-(m+f)+(f-k),f=(b=x-((y=x+m)-(f=y-x))+(m-f))-(m=b-S),z$[1]=b-(m+f)+(f-S),f=(C=y+m)-y,z$[2]=y-(C-f)+(m-f),z$[3]=C;var Z=Z$(T,N$,4,z$,B$);return B$[Z-1]}(t,e,n,r,i,o,u)}F$(4),F$(4),F$(4),F$(4),F$(4),F$(4),F$(4),F$(4),F$(4),F$(8),F$(8),F$(8),F$(4),F$(8),F$(8),F$(8),F$(12),F$(192),F$(192);F$(4),F$(4),F$(4),F$(4),F$(4),F$(4),F$(4),F$(4),F$(8),F$(8),F$(8),F$(8),F$(8),F$(8),F$(8),F$(8),F$(8),F$(4),F$(4),F$(4),F$(8),F$(16),F$(16),F$(16),F$(32),F$(32),F$(48),F$(64),F$(1152),F$(1152);F$(4),F$(4),F$(4),F$(4),F$(4),F$(4),F$(4),F$(4),F$(4),F$(4),F$(24),F$(24),F$(24),F$(24),F$(24),F$(24),F$(24),F$(24),F$(24),F$(24),F$(1152),F$(1152),F$(1152),F$(1152),F$(1152),F$(2304),F$(2304),F$(3456),F$(5760),F$(8),F$(8),F$(8),F$(16),F$(24),F$(48),F$(48),F$(96),F$(192),F$(384),F$(384),F$(384),F$(768);F$(96),F$(96),F$(96),F$(1152);var H$=Math.pow(2,-52),W$=new Uint32Array(512),V$=function(){function t(e){(0,Rm.Z)(this,t);var n=e.length>>1;if(n>0&&"number"!=typeof e[0])throw new Error("Expected coords to contain numbers.");this.coords=e;var r=Math.max(2*n-5,0);this._triangles=new Uint32Array(3*r),this._halfedges=new Int32Array(3*r),this._hashSize=Math.ceil(Math.sqrt(n)),this._hullPrev=new Uint32Array(n),this._hullNext=new Uint32Array(n),this._hullTri=new Uint32Array(n),this._hullHash=new Int32Array(this._hashSize).fill(-1),this._ids=new Uint32Array(n),this._dists=new Float64Array(n),this.update()}return(0,Lm.Z)(t,[{key:"update",value:function(){for(var t=this.coords,e=this._hullPrev,n=this._hullNext,r=this._hullTri,i=this._hullHash,o=t.length>>1,a=1/0,c=1/0,l=-1/0,u=-1/0,s=0;sl&&(l=f),h>u&&(u=h),this._ids[s]=s}for(var d,p,v,g=(a+l)/2,m=(c+u)/2,y=1/0,b=0;b0&&(p=k,y=C)}for(var O=t[2*p],E=t[2*p+1],M=1/0,A=0;AI&&(Z[F++]=R,I=this._dists[R])}return this.hull=Z.subarray(0,F),this.triangles=new Uint32Array(0),void(this.halfedges=new Uint32Array(0))}if(U$(w,S,O,E,_,D)<0){var L=p,N=O,B=E;p=v,O=_,E=D,v=L,_=N,D=B}var z=function(t,e,n,r,i,o){var a=n-t,c=r-e,l=i-t,u=o-e,s=a*a+c*c,f=l*l+u*u,h=.5/(a*u-c*l),d=t+(u*s-c*f)*h,p=e+(a*f-l*s)*h;return{x:d,y:p}}(w,S,O,E,_,D);this._cx=z.x,this._cy=z.y;for(var U=0;U0&&Math.abs(q-W)<=H$&&Math.abs(Y-V)<=H$)&&(W=q,V=Y,X!==d&&X!==p&&X!==v)){for(var $=0,K=0,J=this._hashKey(q,Y);K=0;)if((Q=tt)===$){Q=-1;break}if(-1!==Q){var et=this._addTriangle(Q,X,n[Q],-1,-1,r[Q]);r[X]=this._legalize(et+2),r[Q]=et,H++;for(var nt=n[Q];tt=n[nt],U$(q,Y,t[2*nt],t[2*nt+1],t[2*tt],t[2*tt+1])<0;)et=this._addTriangle(nt,X,tt,r[X],-1,r[nt]),r[X]=this._legalize(et+2),n[nt]=nt,H--,nt=tt;if(Q===$)for(;U$(q,Y,t[2*(tt=e[Q])],t[2*tt+1],t[2*Q],t[2*Q+1])<0;)et=this._addTriangle(tt,X,Q,-1,r[Q],r[tt]),this._legalize(et+2),r[tt]=et,n[Q]=Q,H--,Q=tt;this._hullStart=e[X]=Q,n[Q]=e[nt]=X,n[X]=nt,i[this._hashKey(q,Y)]=X,i[this._hashKey(t[2*Q],t[2*Q+1])]=Q}}}this.hull=new Uint32Array(H);for(var rt=0,it=this._hullStart;rt0?3-i:1+i)/4*this._hashSize))%this._hashSize;var n,r,i}},{key:"_legalize",value:function(t){for(var e=this._triangles,n=this._halfedges,r=this.coords,i=0,o=0;;){var a=n[t],c=t-t%3;if(o=c+(t+2)%3,-1!==a){var l=a-a%3,u=c+(t+1)%3,s=l+(a+2)%3,f=e[o],h=e[t],d=e[u],p=e[s];if(X$(r[2*f],r[2*f+1],r[2*h],r[2*h+1],r[2*d],r[2*d+1],r[2*p],r[2*p+1])){e[t]=p,e[a]=f;var v=n[s];if(-1===v){var g=this._hullStart;do{if(this._hullTri[g]===s){this._hullTri[g]=t;break}g=this._hullPrev[g]}while(g!==this._hullStart)}this._link(t,v),this._link(a,n[o]),this._link(o,s);var m=l+(a+1)%3;i1&&void 0!==arguments[1]?arguments[1]:K$,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:J$,i=e.length,o=new Float64Array(2*i),a=0;a=n&&e[t[c]]>a;)t[c+1]=t[c--];t[c+1]=o}else{var l=n+1,u=r;$$(t,n+r>>1,l),e[t[n]]>e[t[r]]&&$$(t,n,r),e[t[l]]>e[t[r]]&&$$(t,l,r),e[t[n]]>e[t[l]]&&$$(t,n,l);for(var s=t[l],f=e[s];;){do{l++}while(e[t[l]]f);if(u=u-n?(Y$(t,e,l,r),Y$(t,e,n,u-1)):(Y$(t,e,n,u-1),Y$(t,e,l,r))}}function $$(t,e,n){var r=t[e];t[e]=t[n],t[n]=r}function K$(t){return t[0]}function J$(t){return t[1]}var Q$=1e-6,tK=function(){function t(){(0,Rm.Z)(this,t),this._x0=this._y0=this._x1=this._y1=null,this._=""}return(0,Lm.Z)(t,[{key:"moveTo",value:function(t,e){this._+="M".concat(this._x0=this._x1=+t,",").concat(this._y0=this._y1=+e)}},{key:"closePath",value:function(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")}},{key:"lineTo",value:function(t,e){this._+="L".concat(this._x1=+t,",").concat(this._y1=+e)}},{key:"arc",value:function(t,e,n){var r=(t=+t)+(n=+n),i=e=+e;if(n<0)throw new Error("negative radius");null===this._x1?this._+="M".concat(r,",").concat(i):(Math.abs(this._x1-r)>Q$||Math.abs(this._y1-i)>Q$)&&(this._+="L"+r+","+i),n&&(this._+="A".concat(n,",").concat(n,",0,1,1,").concat(t-n,",").concat(e,"A").concat(n,",").concat(n,",0,1,1,").concat(this._x1=r,",").concat(this._y1=i))}},{key:"rect",value:function(t,e,n,r){this._+="M".concat(this._x0=this._x1=+t,",").concat(this._y0=this._y1=+e,"h").concat(+n,"v").concat(+r,"h").concat(-n,"Z")}},{key:"value",value:function(){return this._||null}}]),t}(),eK=function(){function t(){(0,Rm.Z)(this,t),this._=[]}return(0,Lm.Z)(t,[{key:"moveTo",value:function(t,e){this._.push([t,e])}},{key:"closePath",value:function(){this._.push(this._[0].slice())}},{key:"lineTo",value:function(t,e){this._.push([t,e])}},{key:"value",value:function(){return this._.length?this._:null}}]),t}();function nK(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return rK(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return rK(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function rK(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n1&&void 0!==arguments[1]?arguments[1]:[0,0,960,500],r=(0,G.Z)(n,4),i=r[0],o=r[1],a=r[2],c=r[3];if((0,Rm.Z)(this,t),!((a=+a)>=(i=+i)&&(c=+c)>=(o=+o)))throw new Error("invalid bounds");this.delaunay=e,this._circumcenters=new Float64Array(2*e.points.length),this.vectors=new Float64Array(2*e.points.length),this.xmax=a,this.xmin=i,this.ymax=c,this.ymin=o,this._init()}return(0,Lm.Z)(t,[{key:"update",value:function(){return this.delaunay.update(),this._init(),this}},{key:"_init",value:function(){for(var t,e,n,r,i=this.delaunay,o=i.points,a=i.hull,c=i.triangles,l=this.vectors,u=this.circumcenters=this._circumcenters.subarray(0,c.length/3*2),s=0,f=0,h=c.length;s1;)i-=2;for(var o=2;o0){if(e>=this.ymax)return null;(i=(this.ymax-e)/r)0){if(t>=this.xmax)return null;(i=(this.xmax-t)/n)this.xmax?2:0)|(ethis.ymax?8:0)}},{key:"_simplify",value:function(t){if(t&&t.length>4){for(var e=0;e=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function cK(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n2&&function(t){for(var e=t.triangles,n=t.coords,r=0;r1e-10)return!1}return!0}(t)){this.collinear=Int32Array.from({length:e.length/2},(function(t,e){return e})).sort((function(t,n){return e[2*t]-e[2*n]||e[2*t+1]-e[2*n+1]}));for(var n=this.collinear[0],r=this.collinear[this.collinear.length-1],i=[e[2*n],e[2*n+1],e[2*r],e[2*r+1]],o=1e-8*Math.hypot(i[3]-i[1],i[2]-i[0]),a=0,c=e.length/2;a0&&(this.triangles=new Int32Array(3).fill(-1),this.halfedges=new Int32Array(3).fill(-1),this.triangles[0]=s[0],h[s[0]]=1,2===s.length&&(h[s[1]]=0,this.triangles[1]=s[1],this.triangles[2]=s[1]))}},{key:"voronoi",value:function(t){return new iK(this,t)}},{key:"neighbors",value:q().mark((function t(e){var n,r,i,o,a,c,l,u,s,f,h;return q().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=this.inedges,r=this.hull,i=this._hullIndex,o=this.halfedges,a=this.triangles,!(c=this.collinear)){t.next=10;break}if(!((l=c.indexOf(e))>0)){t.next=6;break}return t.next=6,c[l-1];case 6:if(!(l2&&void 0!==arguments[2]?arguments[2]:0;if((t=+t)!=t||(e=+e)!=e)return-1;for(var r,i=n;(r=this._step(n,t,e))>=0&&r!==n&&r!==i;)n=r;return r}},{key:"_step",value:function(t,e,n){var r=this.inedges,i=this.hull,o=this._hullIndex,a=this.halfedges,c=this.triangles,l=this.points;if(-1===r[t]||!l.length)return(t+1)%(l.length>>1);var u=t,s=uK(e-l[2*t],2)+uK(n-l[2*t+1],2),f=r[t],h=f;do{var d=c[h],p=uK(e-l[2*d],2)+uK(n-l[2*d+1],2);if(p1&&void 0!==arguments[1]?arguments[1]:sK,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:fK,i=arguments.length>3?arguments[3]:void 0;return new t("length"in e?function(t,e,n,r){for(var i=t.length,o=new Float64Array(2*i),a=0;a=f));)if(e.x=a+i,e.y=u+o,!(e.x+e.x0<0||e.y+e.y0<0||e.x+e.x1>c[0]||e.y+e.y1>c[1])&&(!n||!kK(e,t,c[0]))&&(!n||OK(e,n))){for(var v,g=e.sprite,m=e.width>>5,y=c[0]>>5,b=e.x-(m<<4),x=127&b,w=32-x,S=e.y1-e.y0,k=(e.y+e.y0)*y+(b>>5),C=0;C>>x:0);k+=y}return e.sprite=null,!0}return!1}return f.layout=function(){for(var l=function(t){t.width=t.height=1;var e=Math.sqrt(t.getContext("2d").getImageData(0,0,1,1).data.length>>2);t.width=(bK<<5)/e,t.height=xK/e;var n=t.getContext("2d");return n.fillStyle=n.strokeStyle="red",n.textAlign="center",{context:n,ratio:e}}(N_()),f=function(t){var e=[],n=-1;for(;++n>5)*c[1]),d=null,p=u.length,v=-1,g=[],m=u.map((function(c){return{text:t(c),font:e(c),style:r(c),weight:i(c),rotate:o(c),size:~~(n(c)+1e-14),padding:a(c),xoff:0,yoff:0,x1:0,y1:0,x0:0,y0:0,hasText:!1,sprite:null,datum:c}})).sort((function(t,e){return e.size-t.size}));++v>1,y.y=c[1]*(s()+.5)>>1,SK(l,y,m,v),y.hasText&&h(f,y,d)&&(g.push(y),d?CK(d,y):d=[{x:y.x+y.x0,y:y.y+y.y0},{x:y.x+y.x1,y:y.y+y.y1}],y.x-=c[0]>>1,y.y-=c[1]>>1)}return g},f.words=function(t){return arguments.length?(u=t,f):u},f.size=function(t){return arguments.length?(c=[+t[0],+t[1]],f):c},f.font=function(t){return arguments.length?(e=MK(t),f):e},f.fontStyle=function(t){return arguments.length?(r=MK(t),f):r},f.fontWeight=function(t){return arguments.length?(i=MK(t),f):i},f.rotate=function(t){return arguments.length?(o=MK(t),f):o},f.text=function(e){return arguments.length?(t=MK(e),f):t},f.spiral=function(t){return arguments.length?(l=AK[t]||t,f):l},f.fontSize=function(t){return arguments.length?(n=MK(t),f):n},f.padding=function(t){return arguments.length?(a=MK(t),f):a},f.random=function(t){return arguments.length?(s=t,f):s},f}function SK(t,e,n,r){if(!e.sprite){var i=t.context,o=t.ratio;i.clearRect(0,0,(bK<<5)/o,xK/o);var a,c,l,u,s,f=0,h=0,d=0,p=n.length;for(--r;++r>5<<5,l=~~Math.max(Math.abs(y+b),Math.abs(y-b))}else a=a+31>>5<<5;if(l>d&&(d=l),f+a>=bK<<5&&(f=0,h+=d,d=0),h+l>=xK)break;i.translate((f+(a>>1))/o,(h+(l>>1))/o),e.rotate&&i.rotate(e.rotate*yK),i.fillText(e.text,0,0),e.padding&&(i.lineWidth=2*e.padding,i.strokeText(e.text,0,0)),i.restore(),e.width=a,e.height=l,e.xoff=f,e.yoff=h,e.x1=a>>1,e.y1=l>>1,e.x0=-e.x1,e.y0=-e.y1,e.hasText=!0,f+=a}for(var w=i.getImageData(0,0,(bK<<5)/o,xK/o).data,S=[];--r>=0;)if((e=n[r]).hasText){for(c=(a=e.width)>>5,l=e.y1-e.y0,u=0;u>5),E=w[(h+s)*(bK<<5)+(f+u)<<2]?1<<31-u%32:0;S[O]|=E,k|=E}k?C=s:(e.y0++,l--,s--,h++)}e.y1=e.y0+C,e.sprite=S.slice(0,(e.y1-e.y0)*c)}}}function kK(t,e,n){n>>=5;for(var r,i=t.sprite,o=t.width>>5,a=t.x-(o<<4),c=127&a,l=32-c,u=t.y1-t.y0,s=(t.y+t.y0)*n+(a>>5),f=0;f>>c:0))&e[s+h])return!0;s+=n}return!1}function CK(t,e){var n=t[0],r=t[1];e.x+e.x0r.x&&(r.x=e.x+e.x1),e.y+e.y1>r.y&&(r.y=e.y+e.y1)}function OK(t,e){return t.x+t.x1>e[0].x&&t.x+t.x0e[0].y&&t.y+t.y0>1,v=d[1]>>1,g=h.length,m=0;mi?1:0})),function(t,e){return Array.from(e,(function(e){return t[e]}))}(t,e)}(h,f),u)a=e,c=t,e=Array(u+s),t=FK(u+s),function(t,e,n,r,i,o,a,c,l){var u,s=0,f=0;for(u=0;s0)for(l=0;l=e?t:((n=n||new t.constructor(e)).set(t),n)}(n,e.length)},add:function(t){for(var n,r=0,i=e.length,o=t.length;rr.length||n>t)&&(t=Math.max(n,t),r=jK(e,t,r),i=jK(e,t))}}}(),t),this._indices=null,this._dims=null}function NK(t){lE.call(this,null,t)}LK.Definition={type:"CrossFilter",metadata:{},params:[{name:"fields",type:"field",array:!0,required:!0},{name:"query",type:"array",array:!0,required:!0,content:{type:"number",array:!0,length:2}}]},Lb(LK,lE,{transform:function(t,e){return this._dims?t.modified("fields")||t.fields.some((function(t){return e.modified(t.fields)}))?this.reinit(t,e):this.eval(t,e):this.init(t,e)},init:function(t,e){for(var n,r,i=t.fields,o=t.query,a=this._indices={},c=this._dims=[],l=o.length,u=0;ug)for(i=g,o=Math.min(p,m);im)for(i=Math.max(p,m),o=v;id)for(i=d,o=Math.min(f,p);ip)for(i=Math.max(f,p),o=h;i1?(hJ[t]=e,this):Fb(hJ,t)?hJ[t]:null}function pJ(t){var e=dJ(t);return e&&e.responseType||"text"}function vJ(t,e,n,r){var i=dJ((e=e||{}).type||"json");return i||Ty("Unknown data format type: "+e.type),t=i(t,e),e.parse&&function(t,e,n,r){if(!t.length)return;var i=jC();n=n||i.timeParse,r=r||i.utcParse;var o,a,c,l,u,s,f=t.columns||Object.keys(t[0]);"auto"===e&&(e=aJ(t,f));f=Object.keys(e);var h=f.map((function(t){var i,o,a=e[t];if(a&&(a.startsWith("date:")||a.startsWith("utc:")))return("'"===(o=(i=a.split(/:(.+)?/,2))[1])[0]&&"'"===o[o.length-1]||'"'===o[0]&&'"'===o[o.length-1])&&(o=o.slice(1,-1)),("utc"===i[0]?r:n)(o);if(!nJ[a])throw Error("Illegal format pattern: "+t+":"+a);return nJ[a]}));for(c=0,u=t.length,s=f.length;c",gJ[jJ]="Identifier",gJ[IJ]="Keyword",gJ[RJ]="Null",gJ[LJ]="Numeric",gJ[NJ]="Punctuator",gJ[BJ]="String",gJ[9]="RegularExpression";var zJ="ArrayExpression",UJ="BinaryExpression",HJ="CallExpression",WJ="ConditionalExpression",VJ="Identifier",GJ="Literal",XJ="LogicalExpression",qJ="MemberExpression",YJ="ObjectExpression",$J="Property",KJ="UnaryExpression",JJ="Unexpected token %0",QJ="Unexpected number",tQ="Unexpected string",eQ="Unexpected identifier",nQ="Unexpected reserved word",rQ="Unexpected end of input",iQ="Invalid regular expression",oQ="Invalid regular expression: missing /",aQ="Octal literals are not allowed in strict mode.",cQ="Duplicate data property in object literal not allowed in strict mode",lQ="ILLEGAL",uQ="Disabled.",sQ=new RegExp("[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B2\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]"),fQ=new RegExp("[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B2\\u08E4-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58\\u0C59\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D60-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA69D\\uA69F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2D\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]");function hQ(t,e){if(!t)throw new Error("ASSERT: "+e)}function dQ(t){return t>=48&&t<=57}function pQ(t){return"0123456789abcdefABCDEF".indexOf(t)>=0}function vQ(t){return"01234567".indexOf(t)>=0}function gQ(t){return 32===t||9===t||11===t||12===t||160===t||t>=5760&&[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].indexOf(t)>=0}function mQ(t){return 10===t||13===t||8232===t||8233===t}function yQ(t){return 36===t||95===t||t>=65&&t<=90||t>=97&&t<=122||92===t||t>=128&&sQ.test(String.fromCharCode(t))}function bQ(t){return 36===t||95===t||t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57||92===t||t>=128&&fQ.test(String.fromCharCode(t))}var xQ={if:1,in:1,do:1,var:1,for:1,new:1,try:1,let:1,this:1,else:1,case:1,void:1,with:1,enum:1,while:1,break:1,catch:1,throw:1,const:1,yield:1,class:1,super:1,return:1,typeof:1,delete:1,switch:1,export:1,import:1,public:1,static:1,default:1,finally:1,extends:1,package:1,private:1,function:1,continue:1,debugger:1,interface:1,protected:1,instanceof:1,implements:1};function wQ(){for(;yJ1114111||"}"!==t)&&LQ({},JJ,lQ),e<=65535?String.fromCharCode(e):(n=55296+(e-65536>>10),r=56320+(e-65536&1023),String.fromCharCode(n,r))}function CQ(){var t,e;for(t=mJ.charCodeAt(yJ++),e=String.fromCharCode(t),92===t&&(117!==mJ.charCodeAt(yJ)&&LQ({},JJ,lQ),++yJ,(t=SQ("u"))&&"\\"!==t&&yQ(t.charCodeAt(0))||LQ({},JJ,lQ),e=t);yJ>>="===(r=mJ.substr(yJ,4))?{type:NJ,value:r,start:i,end:yJ+=4}:">>>"===(n=r.substr(0,3))||"<<="===n||">>="===n?{type:NJ,value:n,start:i,end:yJ+=3}:a===(e=n.substr(0,2))[1]&&"+-<>&|".indexOf(a)>=0||"=>"===e?{type:NJ,value:e,start:i,end:yJ+=2}:("//"===e&&LQ({},JJ,lQ),"<>=!+-*%&|^/".indexOf(a)>=0?(++yJ,{type:NJ,value:a,start:i,end:yJ}):void LQ({},JJ,lQ))}function MQ(){var t,e,n;if(hQ(dQ((n=mJ[yJ]).charCodeAt(0))||"."===n,"Numeric literal must start with a decimal digit or a decimal point"),e=yJ,t="","."!==n){if(t=mJ[yJ++],n=mJ[yJ],"0"===t){if("x"===n||"X"===n)return++yJ,function(t){for(var e="";yJ=0&&LQ({},iQ,n),{value:n,literal:e}}(),r=function(t,e){var n=t;e.indexOf("u")>=0&&(n=n.replace(/\\u\{([0-9a-fA-F]+)\}/g,(function(t,e){if(parseInt(e,16)<=1114111)return"x";LQ({},iQ)})).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"));try{new RegExp(n)}catch(F2t){LQ({},iQ)}try{return new RegExp(t,e)}catch(r){return null}}(e.value,n.value),{literal:e.literal+n.literal,value:r,regex:{pattern:e.value,flags:n.value},start:t,end:yJ}}function PQ(){if(wQ(),yJ>=bJ)return{type:FJ,start:yJ,end:yJ};var t=mJ.charCodeAt(yJ);return yQ(t)?OQ():40===t||41===t||59===t?EQ():39===t||34===t?function(){var t,e,n,r,i="",o=!1;for(hQ("'"===(t=mJ[yJ])||'"'===t,"String literal must starts with a quote"),e=yJ,++yJ;yJ=0&&yJ":case"<=":case">=":case"instanceof":case"in":e=7;break;case"<<":case">>":case">>>":e=8;break;case"+":case"-":e=9;break;case"*":case"/":case"%":e=11}return e}function e0(){var t,e;return t=function(){var t,e,n,r,i,o,a,c,l,u;if(t=xJ,l=QQ(),0===(i=t0(r=xJ)))return l;for(r.prec=i,_Q(),e=[t,xJ],o=[l,r,a=QQ()];(i=t0(xJ))>0;){for(;o.length>2&&i<=o[o.length-2].prec;)a=o.pop(),c=o.pop().value,l=o.pop(),e.pop(),n=TQ(c,l,a),o.push(n);(r=_Q()).prec=i,o.push(r),e.push(xJ),n=QQ(),o.push(n)}for(n=o[u=o.length-1],e.pop();u>1;)e.pop(),n=TQ(o[u-1].value,o[u-2],n),u-=2;return n}(),zQ("?")&&(_Q(),e=e0(),BQ(":"),t=function(t,e,n){var r=new TJ(WJ);return r.test=t,r.consequent=e,r.alternate=n,r}(t,e,e0())),t}function n0(){var t=e0();if(zQ(","))throw new Error(uQ);return t}function r0(t){yJ=0,bJ=(mJ=t).length,xJ=null,DQ();var e=n0();if(xJ.type!==FJ)throw new Error("Unexpect token after expression.");return e}var i0={NaN:"NaN",E:"Math.E",LN2:"Math.LN2",LN10:"Math.LN10",LOG2E:"Math.LOG2E",LOG10E:"Math.LOG10E",PI:"Math.PI",SQRT1_2:"Math.SQRT1_2",SQRT2:"Math.SQRT2",MIN_VALUE:"Number.MIN_VALUE",MAX_VALUE:"Number.MAX_VALUE"};function o0(t){function e(e,n,r){return function(i){return function(e,n,r,i){var o=t(n[0]);return r&&(o=r+"("+o+")",0===r.lastIndexOf("new ",0)&&(o="("+o+")")),o+"."+e+(i<0?"":0===i?"()":"("+n.slice(1).map(t).join(",")+")")}(e,i,n,r)}}var n="new Date",r="String",i="RegExp";return{isNaN:"Number.isNaN",isFinite:"Number.isFinite",abs:"Math.abs",acos:"Math.acos",asin:"Math.asin",atan:"Math.atan",atan2:"Math.atan2",ceil:"Math.ceil",cos:"Math.cos",exp:"Math.exp",floor:"Math.floor",hypot:"Math.hypot",log:"Math.log",max:"Math.max",min:"Math.min",pow:"Math.pow",random:"Math.random",round:"Math.round",sin:"Math.sin",sqrt:"Math.sqrt",tan:"Math.tan",clamp:function(e){e.length<3&&Ty("Missing arguments to clamp function."),e.length>3&&Ty("Too many arguments to clamp function.");var n=e.map(t);return"Math.max("+n[1]+", Math.min("+n[2]+","+n[0]+"))"},now:"Date.now",utc:"Date.UTC",datetime:n,date:e("getDate",n,0),day:e("getDay",n,0),year:e("getFullYear",n,0),month:e("getMonth",n,0),hours:e("getHours",n,0),minutes:e("getMinutes",n,0),seconds:e("getSeconds",n,0),milliseconds:e("getMilliseconds",n,0),time:e("getTime",n,0),timezoneoffset:e("getTimezoneOffset",n,0),utcdate:e("getUTCDate",n,0),utcday:e("getUTCDay",n,0),utcyear:e("getUTCFullYear",n,0),utcmonth:e("getUTCMonth",n,0),utchours:e("getUTCHours",n,0),utcminutes:e("getUTCMinutes",n,0),utcseconds:e("getUTCSeconds",n,0),utcmilliseconds:e("getUTCMilliseconds",n,0),length:e("length",null,-1),parseFloat:"parseFloat",parseInt:"parseInt",upper:e("toUpperCase",r,0),lower:e("toLowerCase",r,0),substring:e("substring",r),split:e("split",r),trim:e("trim",r,0),regexp:i,test:e("test",i),if:function(e){e.length<3&&Ty("Missing arguments to if function."),e.length>3&&Ty("Too many arguments to if function.");var n=e.map(t);return"("+n[0]+"?"+n[1]+":"+n[2]+")"}}}function a0(t){var e=(t=t||{}).allowed?ox(t.allowed):{},n=t.forbidden?ox(t.forbidden):{},r=t.constants||i0,i=(t.functions||o0)(f),o=t.globalvar,a=t.fieldvar,c=wb(o)?o:function(t){return"".concat(o,'["').concat(t,'"]')},l={},u={},s=0;function f(t){if(Vb(t))return t;var e=h[t.type];return null==e&&Ty("Unsupported type: "+t.type),e(t)}var h={Literal:function(t){return t.raw},Identifier:function(t){var i=t.name;return s>0?i:Fb(n,i)?Ty("Illegal identifier: "+i):Fb(r,i)?r[i]:Fb(e,i)?i:(l[i]=1,c(i))},MemberExpression:function(t){var e=!t.computed,n=f(t.object);e&&(s+=1);var r=f(t.property);return n===a&&(u[function(t){var e=t&&t.length-1;return e&&('"'===t[0]&&'"'===t[e]||"'"===t[0]&&"'"===t[e])?t.slice(1,-1):t}(r)]=1),e&&(s-=1),n+(e?"."+r:"["+r+"]")},CallExpression:function(t){"Identifier"!==t.callee.type&&Ty("Illegal callee type: "+t.callee.type);var e=t.callee.name,n=t.arguments,r=Fb(i,e)&&i[e];return r||Ty("Unrecognized function: "+e),wb(r)?r(n):r+"("+n.map(f).join(",")+")"},ArrayExpression:function(t){return"["+t.elements.map(f).join(",")+"]"},BinaryExpression:function(t){return"("+f(t.left)+" "+t.operator+" "+f(t.right)+")"},UnaryExpression:function(t){return"("+t.operator+f(t.argument)+")"},ConditionalExpression:function(t){return"("+f(t.test)+"?"+f(t.consequent)+":"+f(t.alternate)+")"},LogicalExpression:function(t){return"("+f(t.left)+t.operator+f(t.right)+")"},ObjectExpression:function(t){return"{"+t.properties.map(f).join(",")+"}"},Property:function(t){s+=1;var e=f(t.key);return s-=1,e+":"+f(t.value)}};function d(t){var e={code:f(t),globals:Object.keys(l),fields:Object.keys(u)};return l={},u={},e}return d.functions=i,d.constants=r,d}var c0,l0,u0,s0,f0,h0,d0,p0,v0,g0,m0,y0,b0,x0,w0,S0,k0=new TH,C0=new TH,O0={point:nW,lineStart:nW,lineEnd:nW,polygonStart:function(){k0=new TH,O0.lineStart=E0,O0.lineEnd=M0},polygonEnd:function(){var t=+k0;C0.add(t<0?LH+t:t),this.lineStart=this.lineEnd=this.point=nW},sphere:function(){C0.add(LH)}};function E0(){O0.point=A0}function M0(){P0(c0,l0)}function A0(t,e){O0.point=P0,c0=t,l0=e,u0=t*=BH,s0=WH(e=(e*=BH)/2+RH),f0=$H(e)}function P0(t,e){var n=(t*=BH)-u0,r=n>=0?1:-1,i=r*n,o=WH(e=(e*=BH)/2+RH),a=$H(e),c=f0*a,l=s0*o+c*WH(i),u=c*r*$H(i);k0.add(HH(u,l)),u0=t,s0=o,f0=a}var _0,D0,T0,Z0,F0,j0,I0,R0,L0,N0,B0,z0,U0,H0,W0,V0,G0={point:X0,lineStart:Y0,lineEnd:$0,polygonStart:function(){G0.point=K0,G0.lineStart=J0,G0.lineEnd=Q0,x0=new TH,O0.polygonStart()},polygonEnd:function(){O0.polygonEnd(),G0.point=X0,G0.lineStart=Y0,G0.lineEnd=$0,k0<0?(h0=-(p0=180),d0=-(v0=90)):x0>ZH?v0=90:x0<-ZH&&(d0=-90),S0[0]=h0,S0[1]=p0},sphere:function(){h0=-(p0=180),d0=-(v0=90)}};function X0(t,e){w0.push(S0=[h0=t,p0=t]),ev0&&(v0=e)}function q0(t,e){var n=bV([t*BH,e*BH]);if(b0){var r=wV(b0,n),i=wV([r[1],-r[0],0],r);CV(i),i=yV(i);var o,a=t-g0,c=a>0?1:-1,l=i[0]*NH*c,u=zH(a)>180;u^(c*g0v0&&(v0=o):u^(c*g0<(l=(l+360)%360-180)&&lv0&&(v0=e)),u?tt1(h0,p0)&&(p0=t):t1(t,p0)>t1(h0,p0)&&(h0=t):p0>=h0?(tp0&&(p0=t)):t>g0?t1(h0,t)>t1(h0,p0)&&(p0=t):t1(t,p0)>t1(h0,p0)&&(h0=t)}else w0.push(S0=[h0=t,p0=t]);ev0&&(v0=e),b0=n,g0=t}function Y0(){G0.point=q0}function $0(){S0[0]=h0,S0[1]=p0,G0.point=X0,b0=null}function K0(t,e){if(b0){var n=t-g0;x0.add(zH(n)>180?n+(n>0?360:-360):n)}else m0=t,y0=e;O0.point(t,e),q0(t,e)}function J0(){O0.lineStart()}function Q0(){K0(m0,y0),O0.lineEnd(),zH(x0)>ZH&&(h0=-(p0=180)),S0[0]=h0,S0[1]=p0,b0=null}function t1(t,e){return(e-=t)<0?e+360:e}function e1(t,e){return t[0]-e[0]}function n1(t,e){return t[0]<=t[1]?t[0]<=e&&e<=t[1]:ee?1:t>=e?0:NaN}function g1(t,e){return null==t||null==e?NaN:et?1:e>=t?0:NaN}function m1(){return 0}function y1(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return b1(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return b1(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function b1(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function w1(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n2&&void 0!==arguments[2]?arguments[2]:0,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:t.length;if(i>>1;n(t[a],r)<0?i=a+1:o=a}while(i2&&void 0!==arguments[2]?arguments[2]:0,o=i(t,e,n,(arguments.length>3&&void 0!==arguments[3]?arguments[3]:t.length)-1);return o>n&&r(t[o-1],e)>-r(t[o],e)?o-1:o},right:function(t,r){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:t.length;if(i>>1;n(t[a],r)<=0?i=a+1:o=a}while(i1?e-1:0),r=1;r=0})):e})),(0,V.Z)(r1,"R_union",(function(t,e){var n=eb(e[0]),r=eb(e[1]);return n>r&&(n=e[1],r=e[0]),t.length?(t[0]>n&&(t[0]=n),t[1]r&&(n=e[1],r=e[0]),t.length?rr&&(t[1]=r),t):[n,r]})),r1);function L1(t,e,n,r){e[0].type!==SJ&&Ty("First argument to selection functions must be a string literal.");var i=e[0].value,o="unit",a="@"+o,c=":"+i;(e.length>=2&&tb(e).value)!==k1||Fb(r,a)||(r[a]=n.getData(i).indataRef(n,o)),Fb(r,c)||(r[c]=n.getData(i).tuplesRef())}function N1(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return B1(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return B1(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function B1(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);nt1(r[0],r[1])&&(r[1]=i[1]),t1(i[0],r[1])>t1(r[0],r[1])&&(r[0]=i[0])):o.push(r=i);for(a=-1/0,e=0,r=o[n=o.length-1];e<=n;r=i,++e)i=o[e],(c=t1(r[1],i[0]))>a&&(a=c,h0=i[0],p0=r[1])}return w0=S0=null,h0===1/0||d0===1/0?[[NaN,NaN],[NaN,NaN]]:[[h0,d0],[p0,v0]]})),a2=r2("centroid",(function(t){_0=D0=T0=Z0=F0=j0=I0=R0=0,L0=new TH,N0=new TH,B0=new TH,DH(t,i1);var e=+L0,n=+N0,r=+B0,i=XH(e,n,r);return i1?n-1:0),i=1;i1?n-1:0),i=1;i1?n-1:0),i=1;i1?n-1:0),i=1;i3&&void 0!==arguments[3]?arguments[3]:5,i=(t=bb(t))[t.length-1];return void 0===i||Math.hypot(i[0]-e,i[1]-n)>r?[].concat((0,Xm.Z)(t),[[e,n]]):t},lassoPath:function(t){return bb(t).reduce((function(e,n,r){var i=(0,G.Z)(n,2),o=i[0],a=i[1];return e+(0==r?"M ".concat(o,",").concat(a," "):r===t.length-1?" Z":"L ".concat(o,",").concat(a," "))}),"")},intersectLasso:function(t,e,n){var r,i=n.x,o=n.y,a=n.mark,c=(new zR).set(Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER,Number.MIN_SAFE_INTEGER,Number.MIN_SAFE_INTEGER),l=N1(e);try{for(l.s();!(r=l.n()).done;){var u=(0,G.Z)(r.value,2),s=u[0],f=u[1];sc.x2&&(c.x2=s),fc.y2&&(c.y2=f)}}catch(h){l.e(h)}finally{l.f()}return c.translate(i,o),b2([[c.x1,c.y1],[c.x2,c.y2]],t,a).filter((function(t){return function(t,e,n){for(var r=0,i=0,o=n.length-1;ie!=l>e&&t<(c-s)*(e-f)/(l-f)+s&&r++}return 1&r}(t.x,t.y,e)}))}},w2=["view","item","group","xy","x","y"],S2="this.",k2={},C2={forbidden:["_"],allowed:["datum","event","item"],fieldvar:"datum",globalvar:function(t){return"_[".concat(tx(K1+t),"]")},functions:function(t){var e=o0(t);for(var n in w2.forEach((function(t){return e[t]="event.vega."+t})),x2)e[n]=S2+n;return _b(e,n2(t,x2,k2)),e},constants:i0,visitors:k2},O2=a0(C2);function E2(t,e,n){return 1===arguments.length?x2[t]:(x2[t]=e,n&&(k2[t]=n),O2&&(O2.functions[t]=S2+t),this)}function M2(t,e){var n,r={};try{n=r0(t=Vb(t)?t:tx(t)+"")}catch(o){Ty("Expression parse error: "+t)}n.visit((function(t){if(t.type===EJ){var n=t.callee.name,i=C2.visitors[n];i&&i(n,t.arguments,e,r)}}));var i=O2(n);return i.globals.forEach((function(t){var n=K1+t;!Fb(r,n)&&e.getSignal(t)&&(r[n]=e.signalRef(t))})),{$expr:_b({code:i.code},e.options.ast?{ast:n}:null),$fields:i.fields,$params:r}}E2("bandwidth",(function(t,e){var n=e2(t,(e||this).context);return n&&n.bandwidth?n.bandwidth():0}),Q1),E2("copy",(function(t,e){var n=e2(t,(e||this).context);return n?n.copy():void 0}),Q1),E2("domain",(function(t,e){var n=e2(t,(e||this).context);return n?n.domain():[]}),Q1),E2("range",(function(t,e){var n=e2(t,(e||this).context);return n&&n.range?n.range():[]}),Q1),E2("invert",(function(t,e,n){var r=e2(t,(n||this).context);return r?qy(e)?(r.invertRange||r.invert)(e):(r.invert||r.invertExtent)(e):void 0}),Q1),E2("scale",(function(t,e,n){var r=e2(t,(n||this).context);return r?r(e):void 0}),Q1),E2("gradient",(function(t,e,n,r,i){t=e2(t,(i||this).context);var o=VI(e,n),a=t.domain(),c=a[0],l=tb(a),u=Iy;return l-c?u=sI(t,c,l):t=(t.interpolator?Kj("sequential")().interpolator(t.interpolator()):Kj("linear")().interpolate(t.interpolate()).range(t.range())).domain([c=0,l=1]),t.ticks&&(c!==(a=t.ticks(+r||15))[0]&&a.unshift(c),l!==tb(a)&&a.push(l)),a.forEach((function(e){return o.stop(u(e),t(e))})),o}),Q1),E2("geoArea",i2,Q1),E2("geoBounds",o2,Q1),E2("geoCentroid",a2,Q1),E2("geoShape",(function(t,e,n){var r=e2(t,(n||this).context);return function(t){return r?r.path.context(t)(e):""}}),Q1),E2("indata",(function(t,e,n){var r=this.context.data[t]["index:"+e],i=r?r.value.get(n):void 0;return i?i.count:i}),(function(t,e,n,r){e[0].type!==SJ&&Ty("First argument to indata must be a string literal."),e[1].type!==SJ&&Ty("Second argument to indata must be a string literal.");var i=e[0].value,o=e[1].value,a="@"+o;Fb(a,r)||(r[a]=n.getData(i).indataRef(n,o))})),E2("data",z1,J1),E2("treePath",(function(t,e,n){var r=m2(t,this),i=r[e],o=r[n];return i&&o?i.path(o).map(g2):void 0}),J1),E2("treeAncestors",(function(t,e){var n=m2(t,this)[e];return n?n.ancestors().map(g2):void 0}),J1),E2("vlSelectionTest",(function(t,e,n){for(var r,i,o,a,c,l=this.context.data[t],u=l?l.values.value:[],s=l?l[T1]&&l[T1].value:void 0,f=n===k1,h=u.length,d=0;d v || v == null) && u != null ? ").concat(r,"\n : ((v = v instanceof Date ? +v : v), (u = u instanceof Date ? +u : u)) !== u && v === v ? ").concat(n,"\n : v !== v && u === u ? ").concat(r," : ")}(i,o,-a,a)})).join("")+"0;");return n?r.bind(n):r}}};function Z2(t,e,n){if(!t||!Yy(t))return t;for(var r,i=0,o=F2.length;i=0;)if(r=i[o].type,n=i[o].handler,t===r&&(e===n||e===n.raw)){this._handler.off(r,n);break}return this},addResizeListener:function(t){var e=this._resizeListeners;return e.indexOf(t)<0&&e.push(t),this},removeResizeListener:function(t){var e=this._resizeListeners,n=e.indexOf(t);return n>=0&&e.splice(n,1),this},addSignalListener:function(t,e){return N5(this,t,R5(this,t),e)},removeSignalListener:function(t,e){return B5(this,R5(this,t),e)},addDataListener:function(t,e){return N5(this,t,U2(this,t).values,e)},removeDataListener:function(t,e){return B5(this,U2(this,t).values,e)},globalCursor:function(t){if(arguments.length){if(this._globalCursor!==!!t){var e=z2(this,null);this._globalCursor=!!t,e&&z2(this,e)}return this}return this._globalCursor},preventDefault:function(t){return arguments.length?(this._preventDefault=t,this):this._preventDefault},timer:function(t,e){this._timers.push(function(t,e,n){var r=new rq,i=e;return null==e?(r.restart(t,e,n),r):(r._restart=r.restart,r.restart=function(t,e,n){e=+e,n=null==n?eq():+n,r._restart((function o(a){a+=i,r._restart(o,i+=e,n),t(a)}),e,n)},r.restart(t,e,n),r)}((function(e){t({timestamp:Date.now(),elapsed:e})}),e))},events:function(t,e,n){var r,i=this,o=new BO(n),a=function(n,r){i.runAsync(null,(function(){t===Y2&&function(t,e){var n=t._eventConfig.defaults,r=n.prevent,i=n.allow;return!1!==r&&!0!==i&&(!0===r||!1===i||(r?r[e]:i?!i[e]:t.preventDefault()))}(i,e)&&n.preventDefault(),o.receive(q2(i,n,r))}))};if("timer"===t)J2(i,"timer",e)&&i.timer(a,e);else if(t===Y2)J2(i,"view",e)&&i.addEventListener(e,a,$2);else if("window"===t?J2(i,"window",e)&&"undefined"!=typeof window&&(r=[window]):"undefined"!=typeof document&&J2(i,"selector",e)&&(r=Array.from(document.querySelectorAll(t))),r){for(var c=0,l=r.length;c=0;)i[t].stop();for(t=o.length;--t>=0;)for(e=(n=o[t]).sources.length;--e>=0;)n.sources[e].removeEventListener(n.type,n.handler);return r&&r.call(this,this._handler,null,null,null),this},hover:function(t,e){return e=[e||"update",(t=[t||"hover"])[0]],this.on(this.events("view","mouseover",Q2),t5,e5(t)),this.on(this.events("view","mouseout",Q2),t5,e5(e)),this},data:function(t,e){return arguments.length<2?U2(this,t).values.value:H2.call(this,t,TO().remove(Ny).insert(e))},change:H2,insert:function(t,e){return H2.call(this,t,TO().insert(e))},remove:function(t,e){return H2.call(this,t,TO().remove(e))},scale:function(t){var e=this._runtime.scales;return Fb(e,t)||Ty("Unrecognized scale or projection: "+t),e[t].value},initialize:function(t,e){var n=this,r=n._renderType,i=n._eventConfig.bind,o=gz(r);t=n._el=t?g5(n,t,!0):null,function(t){var e=t.container();e&&(e.setAttribute("role","graphics-document"),e.setAttribute("aria-roleDescription","visualization"),N2(e,t.description()))}(n),o||n.error("Unrecognized renderer type: "+r);var a=o.handler||yB,c=t?o.renderer:o.headless;return n._renderer=c?p5(n,n._renderer,t,c):null,n._handler=function(t,e,n,r){var i=new r(t.loader(),v5(t,t.tooltip())).scene(t.scenegraph().root).initialize(n,G2(t),t);return e&&e.handlers().forEach((function(t){i.on(t.type,t.handler)})),i}(n,n._handler,t,a),n._redraw=!0,t&&"none"!==i&&(e=e?n._elBind=g5(n,e,!0):t.appendChild(n5("form",{class:"vega-bindings"})),n._bind.forEach((function(t){t.param.element&&"container"!==i&&(t.element=g5(n,t.param.element,!!t.param.input))})),n._bind.forEach((function(t){!function(t,e,n){if(e){var r=n.param,i=n.state;i||(i=n.state={elements:null,active:!1,set:null,update:function(e){e!=t.signal(r.signal)&&t.runAsync(null,(function(){i.source=!0,t.signal(r.signal,e)}))}},r.debounce&&(i.update=Pb(r.debounce,i.update))),(null==r.input&&r.element?a5:c5)(i,e,r,t),i.active||(t.on(t._signals[r.signal],null,(function(){i.source?i.source=!1:i.set(t.signal(r.signal))})),i.active=!0)}}(n,t.element||e,t)}))),n},toImageURL:function(t,e){return w5.apply(this,arguments)},toCanvas:function(t,e){return k5.apply(this,arguments)},toSVG:function(t){return C5.apply(this,arguments)},getState:function(t){return this._runtime.getState(t||{data:D5,signals:T5,recurse:!0})},setState:function(t){return this.runAsync(null,(function(e){e._trigger=!1,e._runtime.setState(t)}),(function(t){t._trigger=!0})),this}});var z5,U5,H5="view",W5="[",V5="]",G5="{",X5="}",q5=":",Y5=",",$5="@",K5=">",J5=/[[\]{}]/,Q5={"*":1,arc:1,area:1,group:1,image:1,line:1,path:1,rect:1,rule:1,shape:1,symbol:1,text:1,trail:1};function t3(t,e,n){return z5=e||H5,U5=n||Q5,n3(t.trim()).map(r3)}function e3(t,e,n,r,i){for(var o,a=t.length,c=0;e=0?--c:r&&r.indexOf(o)>=0&&++c}return e}function n3(t){for(var e=[],n=t.length,r=0,i=0;i' after between selector: "+t;e=e.map(r3);var i=r3(t.slice(1).trim());if(i.between)return{between:e,stream:i};i.between=e;return i}(t):function(t){var e,n,r={source:z5},i=[],o=[0,0],a=0,c=0,l=t.length,u=0;if(t[l-1]===X5){if(!((u=t.lastIndexOf(G5))>=0))throw"Unmatched right brace: "+t;try{o=function(t){var e=t.split(Y5);if(!t.length||e.length>2)throw t;return e.map((function(e){var n=+e;if(n!=n)throw t;return n}))}(t.substring(u+1,l-1))}catch(F2t){throw"Invalid throttle specification: "+t}l=(t=t.slice(0,u).trim()).length,u=0}if(!l)throw t;t[0]===$5&&(a=++u);e=e3(t,u,q5),e1?(r.type=i[1],a?r.markname=i[0].slice(1):!function(t){return U5[t]}(i[0])?r.source=i[0]:r.marktype=i[0]):r.type=i[0];"!"===r.type.slice(-1)&&(r.consume=!0,r.type=r.type.slice(0,-1));null!=n&&(r.filter=n);o[0]&&(r.throttle=o[0]);o[1]&&(r.debounce=o[1]);return r}(t)}function i3(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return o3(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return o3(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function o3(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0;)e+=".mark.group";t.parent?(r=t.parent,e+=".datum"):r=t.group}else t.datum?(e="datum",r=t.datum):Ty("Invalid field reference: "+tx(t));return t.signal||(r=Vb(r)?Zy(r).map(tx).join("]["):B3(r)),e+"["+r+"]"}function z3(t,e,n,r,i,o){var a={};for(var c in(o=o||{}).encoders={$encode:a},t=function(t,e,n,r,i){var o,a,c,l={},u={};for(a in a="lineBreak","text"!==e||null==i[a]||p3(a,t)||F3(l,a,i[a]),("legend"==n||String(n).startsWith("axis"))&&(n=null),c=n===g3?i.group:n===v3?_b({},i.mark,i[e]):null)p3(a,t)||("fill"===a||"stroke"===a)&&(p3("fill",t)||p3("stroke",t))||F3(l,a,c[a]);for(a in bb(r).forEach((function(e){var n=i.style&&i.style[e];for(var r in n)p3(r,t)||F3(l,r,n[r])})),t=_b({},t),l)(c=l[a]).signal?(o=o||{})[a]=c:u[a]=c;return t.enter=_b(u,t.enter),o&&(t.update=_b(o,t.update)),t}(t,e,n,r,i.config),t)a[c]=U3(t[c],e,o,i);return o}function U3(t,e,n,r){var i,o={},a={};for(var c in t)null!=t[c]&&(o[c]=H3((i=t[c],qy(i)?function(t){var e="";return t.forEach((function(t){var n=I3(t);e+=t.test?"(".concat(t.test,")?").concat(n,":"):n})),":"===tb(e)&&(e+="null"),e}(i):I3(i)),r,n,a));return{$expr:{marktype:e,channels:o},$fields:Object.keys(a),$output:Object.keys(t)}}function H3(t,e,n,r){var i=M2(t,e);return i.$fields.forEach((function(t){return r[t]=1})),_b(n,i.$params),i.$expr}var W3="outer",V3=["value","update","init","react","bind"];function G3(t,e){Ty(t+' for "outer" push: '+tx(e))}function X3(t,e){var n=t.name;if(t.push===W3)e.signals[n]||G3("No prior signal definition",n),V3.forEach((function(e){void 0!==t[e]&&G3("Invalid property ",e)}));else{var r=e.addSignal(n,t.value);!1===t.react&&(r.react=!1),t.bind&&e.addBinding(n,t.bind)}}function q3(t,e,n,r){this.id=-1,this.type=t,this.value=e,this.params=n,r&&(this.parent=r)}function Y3(t,e,n,r){return new q3(t,e,n,r)}function $3(t,e){return Y3("operator",t,e)}function K3(t){var e={$ref:t.id};return t.id<0&&(t.refs=t.refs||[]).push(e),e}function J3(t,e){return e?{$field:t,$name:e}:{$field:t}}var Q3=J3("key");function t6(t,e){return{$compare:t,$order:e}}var e6="descending";function n6(t,e){return(t&&t.signal?"$"+t.signal:t||"")+(t&&e?"_":"")+(e&&e.signal?"$"+e.signal:e||"")}var r6="scope",i6="view";function o6(t){return t&&t.signal}function a6(t){if(o6(t))return!0;if(Yy(t))for(var e in t)if(a6(t[e]))return!0;return!1}function c6(t,e){return null!=t?t:e}function l6(t){return t&&t.signal||t}var u6="timer";function s6(t,e){return(t.merge?f6:t.stream?h6:t.type?d6:Ty("Invalid stream specification: "+tx(t)))(t,e)}function f6(t,e){var n=t.merge.map((function(t){return s6(t,e)})),r=p6({merge:n},t,e);return e.addStream(r).id}function h6(t,e){var n=p6({stream:s6(t.stream,e)},t,e);return e.addStream(n).id}function d6(t,e){var n;t.type===u6?(n=e.event(u6,t.throttle),t={between:t.between,filter:t.filter}):n=e.event(function(t){return t===r6?i6:t||i6}(t.source),t.type);var r=p6({stream:n},t,e);return 1===Object.keys(r).length?n:e.addStream(r).id}function p6(t,e,n){var r=e.between;return r&&(2!==r.length&&Ty('Stream "between" parameter must have 2 entries: '+tx(e)),t.between=[s6(r[0],n),s6(r[1],n)]),r=e.filter?[].concat(e.filter):[],(e.marktype||e.markname||e.markrole)&&r.push(function(t,e,n){var r="event.item";return r+(t&&"*"!==t?"&&"+r+".mark.marktype==='"+t+"'":"")+(n?"&&"+r+".mark.role==='"+n+"'":"")+(e?"&&"+r+".mark.name==='"+e+"'":"")}(e.marktype,e.markname,e.markrole)),e.source===r6&&r.push("inScope(event.item)"),r.length&&(t.filter=M2("("+r.join(")&&(")+")",n).$expr),null!=(r=e.throttle)&&(t.throttle=+r),null!=(r=e.debounce)&&(t.debounce=+r),e.consume&&(t.consume=!0),t}var v6={code:"_.$value",ast:{type:"Identifier",value:"value"}};function g6(t,e,n){var r=t.encode,i={target:n},o=t.events,a=t.update,c=[];o||Ty("Signal update missing events specification."),Vb(o)&&(o=t3(o,e.isSubscope()?r6:i6)),o=bb(o).filter((function(t){return t.signal||t.scale?(c.push(t),0):1})),c.length>1&&(c=[m6(c)]),o.length&&c.push(o.length>1?{merge:o}:o[0]),null!=r&&(a&&Ty("Signal encode and update are mutually exclusive."),a="encode(item(),"+tx(r)+")"),i.update=Vb(a)?M2(a,e):null!=a.expr?M2(a.expr,e):null!=a.value?a.value:null!=a.signal?{$expr:v6,$params:{$value:e.signalRef(a.signal)}}:Ty("Invalid signal update specification."),t.force&&(i.options={force:!0}),c.forEach((function(t){return e.addUpdate(_b(function(t,e){return{source:t.signal?e.signalRef(t.signal):t.scale?e.scaleRef(t.scale):s6(t,e)}}(t,e),i))}))}function m6(t){return{signal:"["+t.map((function(t){return t.scale?'scale("'+t.scale+'")':t.signal}))+"]"}}var y6=function(t){return function(e,n,r){return Y3(t,n,e||void 0,r)}},b6=y6("aggregate"),x6=y6("axisticks"),w6=y6("bound"),S6=y6("collect"),k6=y6("compare"),C6=y6("datajoin"),O6=y6("encode"),E6=y6("expression"),M6=y6("facet"),A6=y6("field"),P6=y6("key"),_6=y6("legendentries"),D6=y6("load"),T6=y6("mark"),Z6=y6("multiextent"),F6=y6("multivalues"),j6=y6("overlap"),I6=y6("params"),R6=y6("prefacet"),L6=y6("projection"),N6=y6("proxy"),B6=y6("relay"),z6=y6("render"),U6=y6("scale"),H6=y6("sieve"),W6=y6("sortitems"),V6=y6("viewlayout"),G6=y6("values"),X6=0,q6={min:"min",max:"max",count:"sum"};function Y6(t,e){var n,r=e.getScale(t.name).params;for(n in r.domain=Q6(t.domain,t,e),null!=t.range&&(r.range=c4(t,e,r)),null!=t.interpolate&&function(t,e){e.interpolate=$6(t.type||t),null!=t.gamma&&(e.interpolateGamma=$6(t.gamma))}(t.interpolate,r),null!=t.nice&&(r.nice=function(t){return Yy(t)?{interval:$6(t.interval),step:$6(t.step)}:$6(t)}(t.nice)),null!=t.bins&&(r.bins=function(t,e){return t.signal||qy(t)?K6(t,e):e.objectProperty(t)}(t.bins,e)),t)Fb(r,n)||"name"===n||(r[n]=$6(t[n],e))}function $6(t,e){return Yy(t)?t.signal?e.signalRef(t.signal):Ty("Unsupported object: "+tx(t)):t}function K6(t,e){return t.signal?e.signalRef(t.signal):t.map((function(t){return $6(t,e)}))}function J6(t){Ty("Can not find data set: "+tx(t))}function Q6(t,e,n){if(t)return t.signal?n.signalRef(t.signal):(qy(t)?t4:t.fields?n4:e4)(t,e,n);null==e.domainMin&&null==e.domainMax||Ty("No scale domain defined for domainMin/domainMax to override.")}function t4(t,e,n){return t.map((function(t){return $6(t,n)}))}function e4(t,e,n){var r=n.getData(t.data);return r||J6(t.data),eI(e.type)?r.valuesRef(n,t.field,i4(t.sort,!1)):oI(e.type)?r.domainRef(n,t.field):r.extentRef(n,t.field)}function n4(t,e,n){var r=t.data,i=t.fields.reduce((function(t,e){return e=Vb(e)?{data:r,field:e}:qy(e)||e.signal?function(t,e){var n="_:vega:_"+X6++,r=S6({});if(qy(t))r.value={$ingest:t};else if(t.signal){var i="setdata("+tx(n)+","+t.signal+")";r.params.input=e.signalRef(i)}return e.addDataPipeline(n,[r,H6({})]),{data:n,field:"data"}}(e,n):e,t.push(e),t}),[]);return(eI(e.type)?r4:oI(e.type)?o4:a4)(t,n,i)}function r4(t,e,n){var r,i,o=i4(t.sort,!0),a=n.map((function(t){var n=e.getData(t.data);return n||J6(t.data),n.countsRef(e,t.field,o)})),c={groupby:Q3,pulse:a};o&&(r=o.op||"count",i=o.field?n6(r,o.field):"count",c.ops=[q6[r]],c.fields=[e.fieldRef(i)],c.as=[i]),r=e.add(b6(c));var l=e.add(S6({pulse:K3(r)}));return i=e.add(G6({field:Q3,sort:e.sortRef(o),pulse:K3(l)})),K3(i)}function i4(t,e){return t&&(t.field||t.op?t.field||"count"===t.op?e&&t.field&&t.op&&!q6[t.op]&&Ty("Multiple domain scales can not be sorted using "+t.op):Ty("No field provided for sort aggregate op: "+t.op):Yy(t)?t.field="key":t={field:"key"}),t}function o4(t,e,n){var r=n.map((function(t){var n=e.getData(t.data);return n||J6(t.data),n.domainRef(e,t.field)}));return K3(e.add(F6({values:r})))}function a4(t,e,n){var r=n.map((function(t){var n=e.getData(t.data);return n||J6(t.data),n.extentRef(e,t.field)}));return K3(e.add(Z6({extents:r})))}function c4(t,e,n){var r=e.config.range,i=t.range;if(i.signal)return e.signalRef(i.signal);if(Vb(i)){if(r&&Fb(r,i))return c4(t=_b({},t,{range:r[i]}),e,n);"width"===i?i=[0,{signal:"width"}]:"height"===i?i=eI(t.type)?[0,{signal:"height"}]:[{signal:"height"},0]:Ty("Unrecognized scale range value: "+tx(i))}else{if(i.scheme)return n.scheme=qy(i.scheme)?K6(i.scheme,e):$6(i.scheme,e),i.extent&&(n.schemeExtent=K6(i.extent,e)),void(i.count&&(n.schemeCount=$6(i.count,e)));if(i.step)return void(n.rangeStep=$6(i.step,e));if(eI(t.type)&&!qy(i))return Q6(i,t,e);qy(i)||Ty("Unsupported range type: "+tx(i))}return i.map((function(t){return(qy(t)?K6:$6)(t,e)}))}function l4(t,e,n){return qy(t)?t.map((function(t){return l4(t,e,n)})):Yy(t)?t.signal?n.signalRef(t.signal):"fit"===e?t:Ty("Unsupported parameter object: "+tx(t)):t}var u4="top",s4="left",f4="right",h4="bottom",d4="center",p4="vertical",v4="start",g4="end",m4="index",y4="label",b4="offset",x4="perc",w4="perc2",S4="value",k4="guide-label",C4="guide-title",O4="group-title",E4="group-subtitle",M4="symbol",A4="gradient",P4="discrete",_4="size",D4=[_4,"shape","fill","stroke","strokeWidth","strokeDash","opacity"],T4={name:1,style:1,interactive:1},Z4={value:0},F4={value:1},j4="group",I4="rect",R4="rule",L4="symbol",N4="text";function B4(t){return t.type=j4,t.interactive=t.interactive||!1,t}function z4(t,e){var n=function(n,r){return c6(t[n],c6(e[n],r))};return n.isVertical=function(n){return p4===c6(t.direction,e.direction||(n?e.symbolDirection:e.gradientDirection))},n.gradientLength=function(){return c6(t.gradientLength,e.gradientLength||e.gradientWidth)},n.gradientThickness=function(){return c6(t.gradientThickness,e.gradientThickness||e.gradientHeight)},n.entryColumns=function(){return c6(t.columns,c6(e.columns,+n.isVertical(!0)))},n}function U4(t,e){var n=e&&(e.update&&e.update[t]||e.enter&&e.enter[t]);return n&&n.signal?n:n?n.value:null}function H4(t,e,n){return"item.anchor === '".concat(v4,"' ? ").concat(t," : item.anchor === '").concat(g4,"' ? ").concat(e," : ").concat(n)}var W4=H4(tx(s4),tx(f4),tx(d4));function V4(t,e){return e?t?Yy(t)?Object.assign({},t,{offset:V4(t.offset,e)}):{value:t,offset:e}:e:t}function G4(t,e){return e?(t.name=e.name,t.style=e.style||t.style,t.interactive=!!e.interactive,t.encode=d3(t.encode,e,T4)):t.interactive=!1,t}function X4(t,e,n,r){var i,o,a,c,l,u=z4(t,n),s=u.isVertical(),f=u.gradientThickness(),h=u.gradientLength();s?(o=[0,1],a=[0,0],c=f,l=h):(o=[0,0],a=[1,0],c=h,l=f);var d={enter:i={opacity:Z4,x:Z4,y:Z4,width:s3(c),height:s3(l)},update:_b({},i,{opacity:F4,fill:{gradient:e,start:o,stop:a}}),exit:{opacity:Z4}};return h3(d,{stroke:u("gradientStrokeColor"),strokeWidth:u("gradientStrokeWidth")},{opacity:u("gradientOpacity")}),G4({type:I4,role:M3,encode:d},r)}function q4(t,e,n,r,i){var o,a,c,l,u=z4(t,n),s=u.isVertical(),f=u.gradientThickness(),h=u.gradientLength(),d="";s?(o="y",c="y2",a="x",l="width",d="1-"):(o="x",c="x2",a="y",l="height");var p={opacity:Z4,fill:{scale:e,field:S4}};p[o]={signal:d+"datum."+x4,mult:h},p[a]=Z4,p[c]={signal:d+"datum."+w4,mult:h},p[l]=s3(f);var v={enter:p,update:_b({},p,{opacity:F4}),exit:{opacity:Z4}};return h3(v,{stroke:u("gradientStrokeColor"),strokeWidth:u("gradientStrokeWidth")},{opacity:u("gradientOpacity")}),G4({type:I4,role:O3,key:S4,from:i,encode:v},r)}var Y4="datum.".concat(x4,'<=0?"').concat(s4,'":datum.').concat(x4,'>=1?"').concat(f4,'":"').concat(d4,'"'),$4="datum.".concat(x4,'<=0?"').concat(h4,'":datum.').concat(x4,'>=1?"').concat(u4,'":"').concat("middle",'"');function K4(t,e,n,r){var i,o,a,c,l=z4(t,e),u=l.isVertical(),s=s3(l.gradientThickness()),f=l.gradientLength(),h=l("labelOverlap"),d="",p={enter:i={opacity:Z4},update:o={opacity:F4,text:{field:y4}},exit:{opacity:Z4}};return h3(p,{fill:l("labelColor"),fillOpacity:l("labelOpacity"),font:l("labelFont"),fontSize:l("labelFontSize"),fontStyle:l("labelFontStyle"),fontWeight:l("labelFontWeight"),limit:c6(t.labelLimit,e.gradientLabelLimit)}),u?(i.align={value:"left"},i.baseline=o.baseline={signal:$4},a="y",c="x",d="1-"):(i.align=o.align={signal:Y4},i.baseline={value:"top"},a="x",c="y"),i[a]=o[a]={signal:d+"datum."+x4,mult:f},i[c]=o[c]=s,s.offset=c6(t.labelOffset,e.gradientLabelOffset)||0,h=h?{separation:l("labelSeparation"),method:h,order:"datum."+m4}:void 0,G4({type:N4,role:A3,style:k4,key:S4,from:r,encode:p,overlap:h},n)}function J4(t,e,n,r,i){var o,a,c,l,u,s=z4(t,e),f=n.entries,h=!(!f||!f.interactive),d=f?f.name:void 0,p=s("clipHeight"),v=s("symbolOffset"),g={data:"value"},m="(".concat(i,") ? datum.").concat(b4," : datum.").concat(_4),y=p?s3(p):{field:_4},b="datum.".concat(m4),x="max(1, ".concat(i,")");y.mult=.5,o={enter:a={opacity:Z4,x:{signal:m,mult:.5,offset:v},y:y},update:c={opacity:F4,x:a.x,y:a.y},exit:{opacity:Z4}};var w=null,S=null;t.fill||(w=e.symbolBaseFillColor,S=e.symbolBaseStrokeColor),h3(o,{fill:s("symbolFillColor",w),shape:s("symbolType"),size:s("symbolSize"),stroke:s("symbolStrokeColor",S),strokeDash:s("symbolDash"),strokeDashOffset:s("symbolDashOffset"),strokeWidth:s("symbolStrokeWidth")},{opacity:s("symbolOpacity")}),D4.forEach((function(e){t[e]&&(c[e]=a[e]={scale:t[e],field:S4})}));var k=G4({type:L4,role:P3,key:S4,from:g,clip:!!p||void 0,encode:o},n.symbols),C=s3(v);C.offset=s("labelOffset"),h3(o={enter:a={opacity:Z4,x:{signal:m,offset:C},y:y},update:c={opacity:F4,text:{field:y4},x:a.x,y:a.y},exit:{opacity:Z4}},{align:s("labelAlign"),baseline:s("labelBaseline"),fill:s("labelColor"),fillOpacity:s("labelOpacity"),font:s("labelFont"),fontSize:s("labelFontSize"),fontStyle:s("labelFontStyle"),fontWeight:s("labelFontWeight"),limit:s("labelLimit")});var O=G4({type:N4,role:A3,style:k4,key:S4,from:g,encode:o},n.labels);return o={enter:{noBound:{value:!p},width:Z4,height:p?s3(p):Z4,opacity:Z4},exit:{opacity:Z4},update:c={opacity:F4,row:{signal:null},column:{signal:null}}},s.isVertical(!0)?(l="ceil(item.mark.items.length / ".concat(x,")"),c.row.signal="".concat(b,"%").concat(l),c.column.signal="floor(".concat(b," / ").concat(l,")"),u={field:["row",b]}):(c.row.signal="floor(".concat(b," / ").concat(x,")"),c.column.signal="".concat(b," % ").concat(x),u={field:b}),c.column.signal="(".concat(i,")?").concat(c.column.signal,":").concat(b),B4({role:m3,from:r={facet:{data:r,name:"value",groupby:m4}},encode:d3(o,f,T4),marks:[k,O],name:d,interactive:h,sort:u})}var Q4='item.orient === "left"',t8='item.orient === "right"',e8="(".concat(Q4," || ").concat(t8,")"),n8="datum.vgrad && ".concat(e8),r8=H4('"top"','"bottom"','"middle"'),i8=H4('"right"','"left"','"center"'),o8="datum.vgrad && ".concat(t8," ? (").concat(i8,") : (").concat(e8," && !(datum.vgrad && ").concat(Q4,')) ? "left" : ').concat(W4),a8="item._anchor || (".concat(e8,' ? "middle" : "start")'),c8="".concat(n8," ? (").concat(Q4," ? -90 : 90) : 0"),l8="".concat(e8," ? (datum.vgrad ? (").concat(t8,' ? "bottom" : "top") : ').concat(r8,') : "top"');function u8(t,e){var n;return Yy(t)&&(t.signal?n=t.signal:t.path?n="pathShape("+s8(t.path)+")":t.sphere&&(n="geoShape("+s8(t.sphere)+', {type: "Sphere"})')),n?e.signalRef(n):!!t}function s8(t){return Yy(t)&&t.signal?t.signal:tx(t)}function f8(t){var e=t.role||"";return e.indexOf("axis")&&e.indexOf("legend")&&e.indexOf("title")?t.type===j4?m3:e||v3:e}function h8(t){return{marktype:t.type,name:t.name||void 0,role:t.role||f8(t),zindex:+t.zindex||void 0,aria:t.aria,description:t.description}}function d8(t,e){return t&&t.signal?e.signalRef(t.signal):!1!==t}function p8(t,e){var n=sE(t.type);n||Ty("Unrecognized transform type: "+tx(t.type));var r=Y3(n.type.toLowerCase(),null,v8(n,t,e));return t.signal&&e.addSignal(t.signal,e.proxy(r)),r.metadata=n.metadata||{},r}function v8(t,e,n){for(var r={},i=t.params.length,o=0;o0?",":"")+(Yy(i)?i.signal||b7(i):tx(i))}return n+"]"}function w7(t){var e,n,r="{",i=0;for(e in t)n=t[e],r+=(++i>1?",":"")+tx(e)+":"+(Yy(n)?n.signal||b7(n):tx(n));return r+"}"}function S7(t,e,n){return Yy(t)||Ty("Input Vega specification must be an object."),e=Ky(function(){var t="sans-serif",e="#4c78a8",n="#000",r="#888",i="#ddd";return{description:"Vega visualization",padding:0,autosize:"pad",background:null,events:{defaults:{allow:["wheel"]}},group:null,mark:null,arc:{fill:e},area:{fill:e},image:null,line:{stroke:e,strokeWidth:2},path:{stroke:e},rect:{fill:e},rule:{stroke:n},shape:{stroke:e},symbol:{fill:e,size:64},text:{fill:n,font:t,fontSize:11},trail:{fill:e,size:2},style:{"guide-label":{fill:n,font:t,fontSize:10},"guide-title":{fill:n,font:t,fontSize:11,fontWeight:"bold"},"group-title":{fill:n,font:t,fontSize:13,fontWeight:"bold"},"group-subtitle":{fill:n,font:t,fontSize:12},point:{size:30,strokeWidth:2,shape:"circle"},circle:{size:30,strokeWidth:2},square:{size:30,strokeWidth:2,shape:"square"},cell:{fill:"transparent",stroke:i},view:{fill:"transparent"}},title:{orient:"top",anchor:"middle",offset:4,subtitlePadding:3},axis:{minExtent:0,maxExtent:200,bandPosition:.5,domain:!0,domainWidth:1,domainColor:r,grid:!1,gridWidth:1,gridColor:i,labels:!0,labelAngle:0,labelLimit:180,labelOffset:0,labelPadding:2,ticks:!0,tickColor:r,tickOffset:0,tickRound:!0,tickSize:5,tickWidth:1,titlePadding:4},axisBand:{tickOffset:-.5},projection:{type:"mercator"},legend:{orient:"right",padding:0,gridAlign:"each",columnPadding:10,rowPadding:2,symbolDirection:"vertical",gradientDirection:"vertical",gradientLength:200,gradientThickness:16,gradientStrokeColor:i,gradientStrokeWidth:0,gradientLabelOffset:2,labelAlign:"left",labelBaseline:"middle",labelLimit:160,labelOffset:4,labelOverlap:!0,symbolLimit:30,symbolType:"circle",symbolSize:100,symbolOffset:0,symbolStrokeWidth:1.5,symbolBaseFillColor:"transparent",symbolBaseStrokeColor:r,titleLimit:180,titleOrient:"top",titlePadding:5,layout:{offset:18,direction:"horizontal",left:{direction:"vertical"},right:{direction:"vertical"}}},range:{category:{scheme:"tableau10"},ordinal:{scheme:"blues"},heatmap:{scheme:"yellowgreenblue"},ramp:{scheme:"blues"},diverging:{scheme:"blueorange",extent:[1,0]},symbol:["circle","square","triangle-up","cross","diamond","triangle-right","triangle-down","triangle-left"]}}}(),e,t.config),v7(t,new m7(e,n)).toRuntime()}m7.prototype=y7.prototype={parse:function(t){return d7(t,this)},fork:function(){return new y7(this)},isSubscope:function(){return this._subid>0},toRuntime:function(){return this.finish(),{description:this.description,operators:this.operators,streams:this.streams,updates:this.updates,bindings:this.bindings,eventConfig:this.eventConfig,locale:this.locale}},id:function(){return(this._subid?this._subid+":":0)+this._id++},add:function(t){return this.operators.push(t),t.id=this.id(),t.refs&&(t.refs.forEach((function(e){e.$ref=t.id})),t.refs=null),t},proxy:function(t){var e=t instanceof q3?K3(t):t;return this.add(N6({value:e}))},addStream:function(t){return this.streams.push(t),t.id=this.id(),t},addUpdate:function(t){return this.updates.push(t),t},finish:function(){var t,e;for(t in this.root&&(this.root.root=!0),this.signals)this.signals[t].signal=t;for(t in this.scales)this.scales[t].scale=t;function n(t,e,n){var r;t&&((r=t.data||(t.data={}))[e]||(r[e]=[])).push(n)}for(t in this.data)for(var r in n((e=this.data[t]).input,t,"input"),n(e.output,t,"output"),n(e.values,t,"values"),e.index)n(e.index[r],t,"index:"+r);return this},pushState:function(t,e,n){this._encode.push(K3(this.add(H6({pulse:t})))),this._parent.push(e),this._lookup.push(n?K3(this.proxy(n)):null),this._markpath.push(-1)},popState:function(){this._encode.pop(),this._parent.pop(),this._lookup.pop(),this._markpath.pop()},parent:function(){return tb(this._parent)},encode:function(){return tb(this._encode)},lookup:function(){return tb(this._lookup)},markpath:function(){var t=this._markpath;return++t[t.length-1]},fieldRef:function(t,e){if(Vb(t))return J3(t,e);t.signal||Ty("Unsupported field reference: "+tx(t));var n=t.signal,r=this.field[n];if(!r){var i={name:this.signalRef(n)};e&&(i.as=e),this.field[n]=r=K3(this.add(A6(i)))}return r},compareRef:function(t){var e=this,n=!1,r=function(t){return o6(t)?(n=!0,e.signalRef(t.signal)):function(t){return t&&t.expr}(t)?(n=!0,e.exprRef(t.expr)):t},i=bb(t.field).map(r),o=bb(t.order).map(r);return n?K3(this.add(k6({fields:i,orders:o}))):t6(i,o)},keyRef:function(t,e){var n=!1,r=this.signals;return t=bb(t).map((function(t){return o6(t)?(n=!0,K3(r[t.signal])):t})),n?K3(this.add(P6({fields:t,flat:e}))):function(t,e){var n={$key:t};return e&&(n.$flat=!0),n}(t,e)},sortRef:function(t){if(!t)return t;var e=n6(t.op,t.field),n=t.order||"ascending";return n.signal?K3(this.add(k6({fields:e,orders:this.signalRef(n.signal)}))):t6(e,n)},event:function(t,e){var n=t+":"+e;if(!this.events[n]){var r=this.id();this.streams.push({id:r,source:t,type:e}),this.events[n]=r}return this.events[n]},hasOwnSignal:function(t){return Fb(this.signals,t)},addSignal:function(t,e){this.hasOwnSignal(t)&&Ty("Duplicate signal name: "+tx(t));var n=e instanceof q3?e:this.add($3(e));return this.signals[t]=n},getSignal:function(t){return this.signals[t]||Ty("Unrecognized signal name: "+tx(t)),this.signals[t]},signalRef:function(t){return this.signals[t]?K3(this.signals[t]):(Fb(this.lambdas,t)||(this.lambdas[t]=this.add($3(null))),K3(this.lambdas[t]))},parseLambdas:function(){for(var t=Object.keys(this.lambdas),e=0,n=t.length;e":function(t,e){return t>e},"<":function(t,e){return t=":function(t,e){return t>=e},"==":function(t,e){return t==e},"!=":function(t,e){return t!=e},"===":function(t,e){return t===e},"!==":function(t,e){return t!==e},"&":function(t,e){return t&e},"|":function(t,e){return t|e},"^":function(t,e){return t^e},"<<":function(t,e){return t<>":function(t,e){return t>>e},">>>":function(t,e){return t>>>e}},E7={"+":function(t){return+t},"-":function(t){return-t},"~":function(t){return~t},"!":function(t){return!t}},M7=Array.prototype.slice,A7=function(t,e,n){var r=n?n(e[0]):e[0];return r[t].apply(r,M7.call(e,1))},P7={isNaN:Number.isNaN,isFinite:Number.isFinite,abs:Math.abs,acos:Math.acos,asin:Math.asin,atan:Math.atan,atan2:Math.atan2,ceil:Math.ceil,cos:Math.cos,exp:Math.exp,floor:Math.floor,log:Math.log,max:Math.max,min:Math.min,pow:Math.pow,random:Math.random,round:Math.round,sin:Math.sin,sqrt:Math.sqrt,tan:Math.tan,clamp:function(t,e,n){return Math.max(e,Math.min(n,t))},now:Date.now,utc:Date.UTC,datetime:function(t,e,n,r,i,o,a){return new Date(t,e||0,null!=n?n:1,r||0,i||0,o||0,a||0)},date:function(t){return new Date(t).getDate()},day:function(t){return new Date(t).getDay()},year:function(t){return new Date(t).getFullYear()},month:function(t){return new Date(t).getMonth()},hours:function(t){return new Date(t).getHours()},minutes:function(t){return new Date(t).getMinutes()},seconds:function(t){return new Date(t).getSeconds()},milliseconds:function(t){return new Date(t).getMilliseconds()},time:function(t){return new Date(t).getTime()},timezoneoffset:function(t){return new Date(t).getTimezoneOffset()},utcdate:function(t){return new Date(t).getUTCDate()},utcday:function(t){return new Date(t).getUTCDay()},utcyear:function(t){return new Date(t).getUTCFullYear()},utcmonth:function(t){return new Date(t).getUTCMonth()},utchours:function(t){return new Date(t).getUTCHours()},utcminutes:function(t){return new Date(t).getUTCMinutes()},utcseconds:function(t){return new Date(t).getUTCSeconds()},utcmilliseconds:function(t){return new Date(t).getUTCMilliseconds()},length:function(t){return t.length},join:function(){return A7("join",arguments)},indexof:function(){return A7("indexOf",arguments)},lastindexof:function(){return A7("lastIndexOf",arguments)},slice:function(){return A7("slice",arguments)},reverse:function(t){return t.slice().reverse()},parseFloat:parseFloat,parseInt:parseInt,upper:function(t){return String(t).toUpperCase()},lower:function(t){return String(t).toLowerCase()},substring:function(){return A7("substring",arguments,String)},split:function(){return A7("split",arguments,String)},replace:function(){return A7("replace",arguments,String)},trim:function(t){return String(t).trim()},regexp:RegExp,test:function(t,e){return RegExp(t).test(e)}},_7=["view","item","group","xy","x","y"],D7=new Set([Function,eval,setTimeout,setInterval]);"function"==typeof setImmediate&&D7.add(setImmediate);var T7={Literal:function(t,e){return e.value},Identifier:function(t,e){var n=e.name;return t.memberDepth>0?n:"datum"===n?t.datum:"event"===n?t.event:"item"===n?t.item:C7[n]||t.params["$"+n]},MemberExpression:function(t,e){var n=!e.computed,r=t(e.object);n&&(t.memberDepth+=1);var i=t(e.property);if(n&&(t.memberDepth-=1),!D7.has(r[i]))return r[i];console.error('Prevented interpretation of member "'.concat(i,'" which could lead to insecure code execution'))},CallExpression:function(t,e){var n=e.arguments,r=e.callee.name;return r.startsWith("_")&&(r=r.slice(1)),"if"===r?t(n[0])?t(n[1]):t(n[2]):(t.fn[r]||P7[r]).apply(t.fn,n.map(t))},ArrayExpression:function(t,e){return e.elements.map(t)},BinaryExpression:function(t,e){return O7[e.operator](t(e.left),t(e.right))},UnaryExpression:function(t,e){return E7[e.operator](t(e.argument))},ConditionalExpression:function(t,e){return t(e.test)?t(e.consequent):t(e.alternate)},LogicalExpression:function(t,e){return"&&"===e.operator?t(e.left)&&t(e.right):t(e.left)||t(e.right)},ObjectExpression:function(t,e){return e.properties.reduce((function(e,n){t.memberDepth+=1;var r=t(n.key);return t.memberDepth-=1,D7.has(t(n.value))?console.error('Prevented interpretation of property "'.concat(r,'" which could lead to insecure code execution')):e[r]=t(n.value),e}),{})}};function Z7(t,e,n,r,i,o){var a=function t(e){return T7[e.type](t,e)};return a.memberDepth=0,a.fn=Object.create(e),a.params=n,a.datum=r,a.event=i,a.item=o,_7.forEach((function(t){return a.fn[t]=function(){var e;return(e=i.vega)[t].apply(e,arguments)}})),a(t)}var F7={operator:function(t,e){var n=e.ast,r=t.functions;return function(t){return Z7(n,r,t)}},parameter:function(t,e){var n=e.ast,r=t.functions;return function(t,e){return Z7(n,r,e,t)}},event:function(t,e){var n=e.ast,r=t.functions;return function(t){return Z7(n,r,void 0,void 0,t)}},handler:function(t,e){var n=e.ast,r=t.functions;return function(t,e){var i=e.item&&e.item.datum;return Z7(n,r,t,i,e)}},encode:function(t,e){var n=e.marktype,r=e.channels,i=t.functions,o="group"===n||"image"===n||"rect"===n;return function(t,e){var a,c=t.datum,l=0;for(var u in r)a=Z7(r[u].ast,i,e,c,void 0,t),t[u]!==a&&(t[u]=a,l=1);return"rule"!==n&&function(t,e,n){var r;e.x2&&(e.x?(n&&t.x>t.x2&&(r=t.x,t.x=t.x2,t.x2=r),t.width=t.x2-t.x):t.x=t.x2-(t.width||0)),e.xc&&(t.x=t.xc-(t.width||0)/2),e.y2&&(e.y?(n&&t.y>t.y2&&(r=t.y,t.y=t.y2,t.y2=r),t.height=t.y2-t.y):t.y=t.y2-(t.height||0)),e.yc&&(t.y=t.yc-(t.height||0)/2)}(t,r,o),l}}},j7=n(53746),I7=n.n(j7),R7=n(2412),L7=n.n(R7),N7=n(16726),B7=n.n(N7);function z7(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return U7(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return U7(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function U7(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function $7(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n1?e-1:0),r=1;r1&&void 0!==arguments[1]?arguments[1]:"datum",n=Zy(t),r=[],i=1;i<=n.length;i++){var o="[".concat(n.slice(0,i).map(tx).join("]["),"]");r.push("".concat(e).concat(o))}return r.join(" && ")}function E9(t){return"".concat(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"datum","[").concat(tx(Zy(t).join(".")),"]")}function M9(t){return t.replace(/(\[|\]|\.|'|")/g,"\\$1")}function A9(t){return"".concat(Zy(t).map(M9).join("\\."))}function P9(t,e,n){return t.replace(new RegExp(e.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"g"),n)}function _9(t){return"".concat(Zy(t).join("."))}function D9(t){return t?Zy(t).length:0}function T9(){for(var t=arguments.length,e=new Array(t),n=0;n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Zet(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Ket(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n3&&void 0!==arguments[3]?arguments[3]:{},i=r.vgChannel,o=r.ignoreVgConfig;return i&&void 0!==e[i]?e[i]:void 0!==e[t]?e[t]:!o||i&&i!==t?unt(t,e,n,r):void 0}function unt(t,e,n){var r=(arguments.length>3&&void 0!==arguments[3]?arguments[3]:{}).vgChannel;return T9(r?snt(t,e,n.style):void 0,snt(t,e,n.style),r?n[e.type][r]:void 0,n[e.type][t],r?n.mark[r]:n.mark[t])}function snt(t,e,n){return fnt(t,cnt(e),n)}function fnt(t,e,n){var r,i,o=$et(e=bb(e));try{for(o.s();!(i=o.n()).done;){var a=n[i.value];a&&void 0!==a[t]&&(r=a[t])}}catch(c){o.e(c)}finally{o.f()}return r}function hnt(t,e){return bb(t).reduce((function(t,n){var r;return t.field.push(Wot(n,e)),t.order.push(null!==(r=n.sort)&&void 0!==r?r:"ascending"),t}),{field:[],order:[]})}function dnt(t,e){var n=(0,Xm.Z)(t);return e.forEach((function(t){var e,r=$et(n);try{for(r.s();!(e=r.n()).done;){var i=e.value;if(K7(i,t))return}}catch(o){r.e(o)}finally{r.f()}n.push(t)})),n}function pnt(t,e){return K7(t,e)||!e?t:t?[].concat((0,Xm.Z)(bb(t)),(0,Xm.Z)(bb(e))).join(", "):e}function vnt(t,e){var n=t.value,r=e.value;if(null==n||null===r)return{explicit:t.explicit,value:null};if((Bet(n)||zet(n))&&(Bet(r)||zet(r)))return{explicit:t.explicit,value:pnt(n,r)};if(Bet(n)||zet(n))return{explicit:t.explicit,value:n};if(Bet(r)||zet(r))return{explicit:t.explicit,value:r};if(!(Bet(n)||zet(n)||Bet(r)||zet(r)))return{explicit:t.explicit,value:dnt(n,r)};throw new Error("It should never reach here")}function gnt(t){return"Invalid specification ".concat(n9(t),'. Make sure the specification includes at least one of the following properties: "mark", "layer", "facet", "hconcat", "vconcat", "concat", or "repeat".')}var mnt='Autosize "fit" only works for single views and layered views.';function ynt(t){return"".concat("width"==t?"Width":"Height",' "container" only works for single views and layered views.')}function bnt(t){var e="width"==t?"x":"y";return"".concat("width"==t?"Width":"Height",' "container" only works well with autosize "fit" or "fit-').concat(e,'".')}function xnt(t){return t?'Dropping "fit-'.concat(t,'" because spec has discrete ').concat(Vtt(t),"."):'Dropping "fit" because spec has discrete size.'}function wnt(t){return"Unknown field for ".concat(t,". Cannot calculate view size.")}function Snt(t){return'Cannot project a selection on encoding channel "'.concat(t,'", which has no field.')}function knt(t,e){return'Cannot project a selection on encoding channel "'.concat(t,'" as it uses an aggregate function ("').concat(e,'").')}function Cnt(t){return"Selection not supported for ".concat(t," yet.")}var Ont="The same selection must be used to override scale domains in a layered view.";function Ent(t){return'The "columns" property cannot be used when "'.concat(t,'" has nested row/column.')}function Mnt(t,e,n){return'An ancestor parsed field "'.concat(t,'" as ').concat(n," but a child wants to parse the field as ").concat(e,".")}function Ant(t){return"Ignoring an invalid transform: ".concat(n9(t),".")}function Pnt(t){return"Config.customFormatTypes is not true, thus custom format type and format for channel ".concat(t," are dropped.")}function _nt(t){return'Invalid field type "'.concat(t,'".')}function Dnt(t,e){var n=e.fill,r=e.stroke;return"Dropping color ".concat(t," as the plot also has ").concat(n&&r?"fill and stroke":n?"fill":"stroke",".")}function Tnt(t,e){return"Dropping ".concat(n9(t),' from channel "').concat(e,'" since it does not contain any data field, datum, value, or signal.')}function Znt(t,e,n){return"".concat(t,' dropped as it is incompatible with "').concat(e,'"').concat(n?" when ".concat(n):"",".")}function Fnt(t){return"".concat(t," encoding has no scale, so specified scale is ignored.")}function jnt(t){return"".concat(t," encoding should be discrete (ordinal / nominal / binned).")}function Int(t){return"".concat(t," encoding should be discrete (ordinal / nominal / binned) or use a discretizing scale (e.g. threshold).")}function Rnt(t,e){return'Using discrete channel "'.concat(t,'" to encode "').concat(e,'" field can be misleading as it does not encode ').concat("ordinal"===e?"order":"magnitude",".")}function Lnt(t){return"Using unaggregated domain with raw field has no effect (".concat(n9(t),").")}function Nnt(t){return'Unaggregated domain not applicable for "'.concat(t,'" since it produces values outside the origin domain of the source data.')}function Bnt(t){return"Unaggregated domain is currently unsupported for log scale (".concat(n9(t),").")}function znt(t,e,n){return"".concat(n,"-scale's \"").concat(e,'" is dropped as it does not work with ').concat(t," scale.")}function Unt(t){return'The step for "'.concat(t,'" is dropped because the ').concat("width"===t?"x":"y"," is continuous.")}var Hnt="Domains that should be unioned has conflicting sort properties. Sort will be set to true.";function Wnt(t,e){return"Invalid ".concat(t,": ").concat(n9(e),".")}function Vnt(t){return"1D error band does not support ".concat(t,".")}function Gnt(t){return"Channel ".concat(t,' is required for "binned" bin.')}var Xnt=Xy(Wy),qnt=Xnt;function Ynt(){return qnt=Xnt}function $nt(){var t;(t=qnt).warn.apply(t,arguments)}function Knt(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return Jnt(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Jnt(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Jnt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n1&&($nt(function(t){return"Dropping day from datetime ".concat(n9(t)," as day cannot be combined with other units.")}(t)),delete(t=J7(t)).day),void 0!==t.year?n.push(t.year):n.push(2012),void 0!==t.month){var r=e?function(t){if(N9(t)&&(t=+t),Hb(t))return t-1;var e=t.toLowerCase(),n=trt.indexOf(e);if(-1!==n)return n;var r=e.substr(0,3),i=ert.indexOf(r);if(-1!==i)return i;throw new Error(Wnt("month",t))}(t.month):t.month;n.push(r)}else if(void 0!==t.quarter){var i=e?function(t){if(N9(t)&&(t=+t),Hb(t))return t>4&&$nt(Wnt("quarter",t)),t-1;throw new Error(Wnt("quarter",t))}(t.quarter):t.quarter;n.push(Hb(i)?3*i:"".concat(i,"*3"))}else n.push(0);if(void 0!==t.date)n.push(t.date);else if(void 0!==t.day){var o=e?function(t){if(N9(t)&&(t=+t),Hb(t))return t%7;var e=t.toLowerCase(),n=nrt.indexOf(e);if(-1!==n)return n;var r=e.substr(0,3),i=rrt.indexOf(r);if(-1!==i)return i;throw new Error(Wnt("day",t))}(t.day):t.day;n.push(Hb(o)?o+1:"".concat(o,"+1"))}else n.push(1);for(var a=0,c=["hours","minutes","seconds","milliseconds"];a=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function lrt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0&&"seconds"===e&&"i"===t.charAt(n-1))&&(!(t.length>n+3&&"day"===e&&"o"===t.charAt(n+3))&&!(n>0&&"year"===e&&"f"===t.charAt(n-1))))}function xrt(t,e){var n,r=(arguments.length>2&&void 0!==arguments[2]?arguments[2]:{end:!1}).end,i=O9(e),o=vrt(t)?"utc":"";var a,c,l={},u=crt(hrt);try{for(u.s();!(a=u.n()).done;){var s=a.value;brt(t,s)&&(l[s]="quarter"===(c=s)?"(".concat(o,"quarter(").concat(i,")-1)"):"".concat(o).concat(c,"(").concat(i,")"),n=s)}}catch(f){u.e(f)}finally{u.f()}return r&&(l[n]+="+1"),function(t){var e=irt(t,!1).join(", ");return t.utc?"utc(".concat(e,")"):"datetime(".concat(e,")")}(l)}function wrt(t){if(t){var e=mrt(t);return"timeUnitSpecifier(".concat(n9(e),", ").concat(n9(grt),")")}}function Srt(t){var e;if(t)return Vb(t)?e=prt(t)?{unit:t.substring(6),binned:!0}:{unit:t}:Yy(t)&&(e=srt(srt({},t),t.unit?{unit:t.unit}:{})),vrt(e.unit)&&(e.utc=!0,e.unit=function(t){return t.substring(3)}(e.unit)),e}function krt(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(t){return t},n=Srt(t),r=yrt(n.unit);if(r&&"day"!==r){var i={year:2001,month:1,date:1,hours:0,minutes:0,seconds:0,milliseconds:0},o=Ort(r,n.step),a=o.step,c=o.part,l=srt(srt({},i),{},(0,V.Z)({},c,+i[c]+a));return"".concat(e(ort(l))," - ").concat(e(ort(i)))}}var Crt={year:1,month:1,date:1,hours:1,minutes:1,seconds:1,milliseconds:1};function Ort(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;if(function(t){return!!Crt[t]}(t))return{part:t,step:e};switch(t){case"day":case"dayofyear":return{part:"date",step:e};case"quarter":return{part:"month",step:3*e};case"week":return{part:"date",step:7*e}}}function Ert(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Mrt(t){for(var e=1;e1&&void 0!==arguments[1])||arguments[1],n=t.field,r=Srt(t.timeUnit)||{},i=r.unit,o=r.binned,a=Wot(t,{expr:"datum"}),c=i?"time(".concat(o?a:xrt(i,n),")"):a;if(Art(t))return"".concat(c,"===").concat(Irt(t.equal,i));if(Prt(t)){var l=t.lt;return"".concat(c,"<").concat(Irt(l,i))}if(Drt(t)){var u=t.gt;return"".concat(c,">").concat(Irt(u,i))}if(_rt(t)){var s=t.lte;return"".concat(c,"<=").concat(Irt(s,i))}if(Trt(t)){var f=t.gte;return"".concat(c,">=").concat(Irt(f,i))}if(Frt(t))return"indexof([".concat(function(t,e){return t.map((function(t){return Irt(t,e)}))}(t.oneOf,i).join(","),"], ").concat(c,") !== -1");if(function(t){return!(null==t||!t.field)&&void 0!==t.valid}(t))return Lrt(c,t.valid);if(Zrt(t)){var h=t.range,d=zet(h)?{signal:"".concat(h.signal,"[0]")}:h[0],p=zet(h)?{signal:"".concat(h.signal,"[1]")}:h[1];if(null!==d&&null!==p&&e)return"inrange("+c+", ["+Irt(d,i)+", "+Irt(p,i)+"])";var v=[];return null!==d&&v.push("".concat(c," >= ").concat(Irt(d,i))),null!==p&&v.push("".concat(c," <= ").concat(Irt(p,i))),v.length>0?v.join(" && "):"true"}throw new Error("Invalid field predicate: ".concat(n9(t)))}function Lrt(t){return!(arguments.length>1&&void 0!==arguments[1])||arguments[1]?"isValid(".concat(t,") && isFinite(+").concat(t,")"):"!isValid(".concat(t,") || !isFinite(+").concat(t,")")}function Nrt(t){return jrt(t)&&t.timeUnit?Mrt(Mrt({},t),{},{timeUnit:Srt(t.timeUnit)}):t}var Brt={quantitative:"quantitative",ordinal:"ordinal",temporal:"temporal",nominal:"nominal",geojson:"geojson"};function zrt(t){return"ordinal"===t||"nominal"===t}var Urt=Brt.quantitative,Hrt=Brt.ordinal,Wrt=Brt.temporal,Vrt=Brt.nominal,Grt=Brt.geojson;m9(Brt);var Xrt={LINEAR:"linear",LOG:"log",POW:"pow",SQRT:"sqrt",SYMLOG:"symlog",IDENTITY:"identity",SEQUENTIAL:"sequential",TIME:"time",UTC:"utc",QUANTILE:"quantile",QUANTIZE:"quantize",THRESHOLD:"threshold",BIN_ORDINAL:"bin-ordinal",ORDINAL:"ordinal",POINT:"point",BAND:"band"},qrt={linear:"numeric",log:"numeric",pow:"numeric",sqrt:"numeric",symlog:"numeric",identity:"numeric",sequential:"numeric",time:"time",utc:"time",ordinal:"ordinal","bin-ordinal":"bin-ordinal",point:"ordinal-position",band:"ordinal-position",quantile:"discretizing",quantize:"discretizing",threshold:"discretizing"};m9(qrt);function Yrt(t,e){var n=qrt[t],r=qrt[e];return n===r||"ordinal-position"===n&&"time"===r||"ordinal-position"===r&&"time"===n}var $rt={linear:0,log:1,pow:1,sqrt:1,symlog:1,identity:1,sequential:1,time:0,utc:0,point:10,band:11,ordinal:0,"bin-ordinal":0,quantile:0,quantize:0,threshold:0};function Krt(t){return $rt[t]}var Jrt=new Set(["linear","log","pow","sqrt","symlog"]),Qrt=new Set([].concat((0,Xm.Z)(Jrt),["time","utc"]));function tit(t){return Jrt.has(t)}var eit=new Set(["quantile","quantize","threshold"]),nit=new Set([].concat((0,Xm.Z)(Qrt),(0,Xm.Z)(eit),["sequential","identity"])),rit=new Set(["ordinal","bin-ordinal","point","band"]);new Set(["time","utc"]);function iit(t){return rit.has(t)}function oit(t){return nit.has(t)}function ait(t){return Qrt.has(t)}function cit(t){return eit.has(t)}function lit(t){return null==t?void 0:t.param}var uit={type:1,domain:1,domainMax:1,domainMin:1,domainMid:1,domainRaw:1,align:1,range:1,rangeMax:1,rangeMin:1,scheme:1,bins:1,reverse:1,round:1,clamp:1,nice:1,base:1,exponent:1,constant:1,interpolate:1,zero:1,padding:1,paddingInner:1,paddingOuter:1},sit=(m9(uit),(0,I.Z)(uit,["type","domain","range","rangeMax","rangeMin","scheme"])),fit=m9(sit);function hit(t,e){switch(e){case"type":case"domain":case"reverse":case"range":return!0;case"scheme":case"interpolate":return!["point","band","identity"].includes(t);case"bins":return!["point","band","identity","ordinal"].includes(t);case"round":return ait(t)||"band"===t||"point"===t;case"padding":case"rangeMin":case"rangeMax":return ait(t)||["point","band"].includes(t);case"paddingOuter":case"align":return["point","band"].includes(t);case"paddingInner":return"band"===t;case"domainMax":case"domainMid":case"domainMin":case"domainRaw":case"clamp":return ait(t);case"nice":return ait(t)||"quantize"===t||"threshold"===t;case"exponent":return"pow"===t;case"base":return"log"===t;case"constant":return"symlog"===t;case"zero":return oit(t)&&!o9(["log","time","utc","threshold","quantile"],t)}}function dit(t,e){switch(e){case"interpolate":case"scheme":case"domainMid":return Dtt(t)?void 0:'Cannot use the scale property "'.concat(e,'" with non-color channel.');case"align":case"type":case"bins":case"domain":case"domainMax":case"domainMin":case"domainRaw":case"range":case"base":case"exponent":case"constant":case"nice":case"padding":case"paddingInner":case"paddingOuter":case"rangeMax":case"rangeMin":case"reverse":case"round":case"clamp":case"zero":return}}var pit={arc:"arc",area:"area",bar:"bar",image:"image",line:"line",point:"point",rect:"rect",rule:"rule",text:"text",tick:"tick",trail:"trail",circle:"circle",square:"square",geoshape:"geoshape"},vit=pit.arc,git=pit.area,mit=pit.bar,yit=pit.image,bit=pit.line,xit=pit.point,wit=pit.rect,Sit=pit.rule,kit=pit.text,Cit=pit.tick,Oit=pit.trail,Eit=pit.circle,Mit=pit.square,Ait=pit.geoshape;function Pit(t){return["line","area","trail"].includes(t)}function _it(t){return["rect","bar","image","arc"].includes(t)}var Dit=new Set(m9(pit));function Tit(t){return t.type}var Zit=[].concat(["stroke","strokeWidth","strokeDash","strokeDashOffset","strokeOpacity","strokeJoin","strokeMiterLimit"],["fill","fillOpacity"]),Fit=m9({color:1,filled:1,invalid:1,order:1,radius2:1,theta2:1,timeUnitBandSize:1,timeUnitBandPosition:1}),jit=m9({mark:1,arc:1,area:1,bar:1,circle:1,image:1,line:1,point:1,rect:1,rule:1,square:1,text:1,tick:1,trail:1,geoshape:1});function Iit(t){return t&&null!=t.band}var Rit={horizontal:["cornerRadiusTopRight","cornerRadiusBottomRight"],vertical:["cornerRadiusTopLeft","cornerRadiusTopRight"]},Lit={binSpacing:1,continuousBandSize:5,minBandSize:.25,timeUnitBandPosition:.5},Nit={binSpacing:0,continuousBandSize:5,minBandSize:.25,timeUnitBandPosition:.5};function Bit(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function zit(t){for(var e=1;e1&&void 0!==arguments[1])||arguments[1];return Lrt(Vb(t)?t:Wot(t,{expr:"datum"}),!e)}function Vit(t,e,n,r){var i={};if(e&&(i.scale=e),Tot(t)){var o=t.datum;Qnt(o)?i.signal=ort(o):zet(o)?i.signal=o.signal:Fet(o)?i.signal=o.expr:i.value=o}else i.field=Wot(t,n);if(r){var a=r.offset,c=r.band;a&&(i.offset=a),c&&(i.band=c)}return i}function Git(t){var e=t.scaleName,n=t.fieldOrDatumDef,r=t.fieldOrDatumDef2,i=t.offset,o=t.startSuffix,a=t.bandPosition,c=void 0===a?.5:a,l=01&&void 0!==arguments[1]?arguments[1]:{},o=t.field,a=i.prefix,c=i.suffix,l="";if(function(t){return"count"===t.aggregate}(t))o=I9("count");else{var u;if(!i.nofn)if(function(t){return"op"in t}(t))u=t.op;else{var s,f,h=t.bin,d=t.aggregate,p=t.timeUnit;if(Met(h))u=Eet(h),c=(null!==(s=i.binSuffix)&&void 0!==s?s:"")+(null!==(f=i.suffix)&&void 0!==f?f:"");else if(d)bet(d)?(l='["'.concat(o,'"]'),o="argmax_".concat(d.argmax)):yet(d)?(l='["'.concat(o,'"]'),o="argmin_".concat(d.argmin)):u=String(d);else if(p&&!drt(p)){var v;e=Srt(p),n=e.utc,u=(r=(0,I.Z)(e,art)).unit?(n?"utc":"")+m9(r).map((function(t){return w9("".concat("unit"===t?"":"_".concat(t,"_")).concat(r[t]))})).join(""):(n?"utc":"")+"timeunit"+m9(r).map((function(t){return w9("_".concat(t,"_").concat(r[t]))})).join(""),c=(!["range","mid"].includes(i.binSuffix)&&i.binSuffix||"")+(null!==(v=i.suffix)&&void 0!==v?v:"")}}u&&(o=o?"".concat(u,"_").concat(o):u)}return c&&(o="".concat(o,"_").concat(c)),a&&(o="".concat(a,"_").concat(o)),i.forAs?_9(o):i.expr?E9(o,i.expr)+l:A9(o)+l}function Vot(t){switch(t.type){case"nominal":case"ordinal":case"geojson":return!0;case"quantitative":return _ot(t)&&!!t.bin;case"temporal":return!1}throw new Error(_nt(t.type))}var Got=function(t,e){switch(e.fieldTitle){case"plain":return t.field;case"functional":return function(t){var e=t.aggregate,n=t.bin,r=t.timeUnit,i=t.field;if(bet(e))return"".concat(i," for argmax(").concat(e.argmax,")");if(yet(e))return"".concat(i," for argmin(").concat(e.argmin,")");var o=r&&!drt(r)?Srt(r):void 0,a=e||(null==o?void 0:o.unit)||(null==o?void 0:o.maxbins)&&"timeunit"||Met(n)&&"bin";return a?"".concat(a.toUpperCase(),"(").concat(i,")"):i}(t);default:return function(t,e){var n=t.field,r=t.bin,i=t.timeUnit,o=t.aggregate;if("count"===o)return e.countTitle;if(Met(r))return"".concat(n," (binned)");if(i&&!drt(i)){var a,c=null===(a=Srt(i))||void 0===a?void 0:a.unit;if(c)return"".concat(n," (").concat(mrt(c).join("-"),")")}else if(o)return bet(o)?"".concat(n," for max ").concat(o.argmax):yet(o)?"".concat(n," for min ").concat(o.argmin):"".concat(C9(o)," of ").concat(n);return n}(t,e)}},Xot=Got;function qot(t){Xot=t}function Yot(t,e,n){var r,i=n.allowDisabling,o=n.includeDefault,a=void 0===o||o,c=null===(r=$ot(t))||void 0===r?void 0:r.title;if(!_ot(t))return null!=c?c:t.title;var l,u=t,s=a?Kot(u,e):void 0;return i?T9(c,u.title,s):null!==(l=null!=c?c:u.title)&&void 0!==l?l:s}function $ot(t){return Bot(t)&&t.axis?t.axis:zot(t)&&t.legend?t.legend:pot(t)&&t.header?t.header:void 0}function Kot(t,e){return Xot(t,e)}function Jot(t){if(Uot(t))return{format:t.format,formatType:t.formatType};var e,n=null!==(e=$ot(t))&&void 0!==e?e:{};return{format:n.format,formatType:n.formatType}}function Qot(t){return _ot(t)?t:Aot(t)?t.condition:void 0}function tat(t){return Iot(t)?t:Pot(t)?t.condition:void 0}function eat(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return Vb(t)||Hb(t)||Bb(t)?($nt(function(t,e,n){return"Channel ".concat(t," is a ").concat(e,". Converted to {value: ").concat(n9(n),"}.")}(e,Vb(t)?"string":Hb(t)?"number":"boolean",t)),{value:t}):Iot(t)?nat(t,e,n,r):Pot(t)?xot(xot({},t),{},{condition:nat(t.condition,e,n,r)}):t}function nat(t,e,n,r){if(Uot(t)){t.format;var i=t.formatType,o=(0,I.Z)(t,got);if(Yit(i)&&!n.customFormatTypes)return $nt(Pnt(e)),nat(o,e,n,r)}else{var a=Bot(t)?"axis":zot(t)?"legend":pot(t)?"header":null;if(a&&t[a]){var c=t[a],l=(c.format,c.formatType),u=(0,I.Z)(c,mot);if(Yit(l)&&!n.customFormatTypes)return $nt(Pnt(e)),nat(xot(xot({},t),{},(0,V.Z)({},a,u)),e,n,r)}}return _ot(t)?rat(t,e,r):function(t){var e=t.type;if(e)return t;var n=t.datum;return e=Hb(n)?"quantitative":Vb(n)?"nominal":Qnt(n)?"temporal":void 0,xot(xot({},t),{},{type:e})}(t)}function rat(t,e){var n=(arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}).compositeMark,r=void 0!==n&&n,i=t.aggregate,o=t.timeUnit,a=t.bin,c=t.field,l=xot({},t);if(r||!i||xet(i)||bet(i)||yet(i)||($nt(function(t){return'Invalid aggregation operator "'.concat(t,'".')}(i)),delete l.aggregate),o&&(l.timeUnit=Srt(o)),c&&(l.field="".concat(c)),Met(a)&&(l.bin=iat(a,e)),Aet(a)&&!tet(e)&&$nt(function(t){return"Channel ".concat(t,' should not be used with "binned" bin.')}(e)),Rot(l)){var u=l.type,s=function(t){if(t)switch(t=t.toLowerCase()){case"q":case Urt:return"quantitative";case"t":case Wrt:return"temporal";case"o":case Hrt:return"ordinal";case"n":case Vrt:return"nominal";case Grt:return"geojson"}}(u);u!==s&&(l.type=s),"quantitative"!==u&&ket(i)&&($nt(function(t,e){return'Invalid field type "'.concat(t,'" for aggregate: "').concat(e,'", using "quantitative" instead.')}(u,i)),l.type="quantitative")}else if(!ztt(e)){var f=function(t,e){var n;switch(e){case"latitude":case"longitude":return"quantitative";case"row":case"column":case"facet":case"shape":case"strokeDash":return"nominal";case"order":return"ordinal"}if(Sot(t)&&qy(t.sort))return"ordinal";var r=t.aggregate,i=t.bin;if(t.timeUnit)return"temporal";if(i||r&&!bet(r)&&!yet(r))return"quantitative";if(Not(t)&&null!==(n=t.scale)&&void 0!==n&&n.type)switch(qrt[t.scale.type]){case"numeric":case"discretizing":return"quantitative";case"time":return"temporal"}return"nominal"}(l,e);l.type=f}if(Rot(l)){var h=function(t,e){var n=t.type;if("geojson"===n&&"shape"!==e)return{compatible:!1,warning:"Channel ".concat(e," should not be used with a geojson data.")};switch(e){case U9:case H9:case W9:return Vot(t)?oat:{compatible:!1,warning:jnt(e)};case V9:case G9:case Y9:case $9:case ott:case att:case ctt:case gtt:case ytt:case btt:case xtt:case wtt:case Stt:case stt:case Q9:case K9:case ktt:return oat;case ntt:case itt:case ett:case rtt:return n!==Urt?{compatible:!1,warning:"Channel ".concat(e," should be used with a quantitative field only, not ").concat(t.type," field.")}:oat;case ftt:case htt:case dtt:case ptt:case utt:case ttt:case J9:case X9:case q9:return"nominal"!==n||t.sort?oat:{compatible:!1,warning:"Channel ".concat(e," should not be used with an unsorted discrete field.")};case ltt:case vtt:return Vot(t)||function(t){var e;return Not(t)&&cit(null===(e=t.scale)||void 0===e?void 0:e.type)}(t)?oat:{compatible:!1,warning:Int(e)};case mtt:return"nominal"!==t.type||"sort"in t?oat:{compatible:!1,warning:"Channel order is inappropriate for nominal field, which has no inherent order."}}}(l,e)||{},d=h.compatible,p=h.warning;!1===d&&$nt(p)}if(Sot(l)&&Vb(l.sort)){var v=l.sort;if(uot(v))return xot(xot({},l),{},{sort:{encoding:v}});var g=v.substr(1);if("-"===v.charAt(0)&&uot(g))return xot(xot({},l),{},{sort:{encoding:g,order:"descending"}})}if(pot(l)){var m=l.header;if(m){var y=m.orient,b=(0,I.Z)(m,yot);if(y)return xot(xot({},l),{},{header:xot(xot({},b),{},{labelOrient:m.labelOrient||y,titleOrient:m.titleOrient||y})})}}return l}function iat(t,e){return Bb(t)?{maxbins:Det(e)}:"binned"===t?{binned:!0}:t.maxbins||t.step?t:xot(xot({},t),{},{maxbins:Det(e)})}var oat={compatible:!0};function aat(t){var e=Jot(t).formatType;return"time"===e||!e&&function(t){return t&&("temporal"===t.type||_ot(t)&&!!t.timeUnit)}(t)}function cat(t,e){var n,r,i=e.timeUnit,o=e.type,a=e.wrapTime,c=e.undefinedIfExprNotRequired,l=i&&(null===(n=Srt(i))||void 0===n?void 0:n.unit),u=l||"temporal"===o;return Fet(t)?r=t.expr:zet(t)?r=t.signal:Qnt(t)?(u=!0,r=ort(t)):(Vb(t)||Hb(t))&&u&&(r="datetime(".concat(n9(t),")"),function(t){return!!frt[t]}(l)&&(Hb(t)&&t<1e4||Vb(t)&&isNaN(Date.parse(t)))&&(r=ort((0,V.Z)({},l,t)))),r?a&&u?"time(".concat(r,")"):r:c?void 0:n9(t)}function lat(t,e){var n=t.type;return e.map((function(e){var r=cat(e,{timeUnit:_ot(t)&&!drt(t.timeUnit)?t.timeUnit:void 0,type:n,undefinedIfExprNotRequired:!0});return void 0!==r?{signal:r}:e}))}function uat(t,e){return Met(t.bin)?fet(e)&&["ordinal","nominal"].includes(t.type):(console.warn("Only call this method for binned field defs."),!1)}function sat(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function fat(t){for(var e=1;e=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Cat(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function zat(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n3&&void 0!==arguments[3])||arguments[3];if("tooltip"in n)return{tooltip:n.tooltip};var i=t.map((function(t){var n=t.fieldPrefix,i=t.titlePrefix,o=r?" of ".concat(Hat(e)):"";return{field:n+e.field,type:e.type,title:zet(i)?{signal:"".concat(i,'"').concat(escape(o),'"')}:i+o}})),o=function(t){var e,n=[],r=kat(m9(t));try{for(r.s();!(e=r.n()).done;){var i=e.value;if(Mat(t,i)){var o,a=kat(bb(t[i]));try{for(a.s();!(o=a.n()).done;){var c=o.value;_ot(c)?n.push(c):Aot(c)&&n.push(c.condition)}}catch(l){a.e(l)}finally{a.f()}}}}catch(l){r.e(l)}finally{r.f()}return n}(n).map(Hot);return{tooltip:[].concat((0,Xm.Z)(i),(0,Xm.Z)(s9(o,r9)))}}function Hat(t){return T9(t.title,t.field)}function Wat(t,e,n,r,i){var o=n.scale,a=n.axis;return function(c){var l=c.partName,u=c.mark,s=c.positionPrefix,f=c.endPositionPrefix,h=void 0===f?void 0:f,d=c.extraEncoding,p=void 0===d?{}:d,v=Hat(n);return Vat(t,l,i,{mark:u,encoding:Nat(Nat(Nat((0,V.Z)({},e,Nat(Nat(Nat({field:"".concat(s,"_").concat(n.field),type:n.type},void 0!==v?{title:v}:{}),void 0!==o?{scale:o}:{}),void 0!==a?{axis:a}:{})),Vb(h)?(0,V.Z)({},"".concat(e,"2"),{field:"".concat(h,"_").concat(n.field)}):{}),r),p)})}}function Vat(t,e,n,r){var i=t.clip,o=t.color,a=t.opacity,c=t.type;return t[e]||void 0===t[e]&&n[e]?[Nat(Nat({},r),{},{mark:Nat(Nat(Nat(Nat(Nat(Nat({},n[e]),i?{clip:i}:{}),o?{color:o}:{}),a?{opacity:a}:{}),Tit(r.mark)?r.mark:{type:r.mark}),{},{style:"".concat(c,"-").concat(String(e))},Bb(t[e])?{}:t[e])})]:[]}function Gat(t,e,n){var r=t.encoding,i="vertical"===e?"y":"x",o=r[i],a=r["".concat(i,"2")],c=r["".concat(i,"Error")],l=r["".concat(i,"Error2")];return{continuousAxisChannelDef:Xat(o,n),continuousAxisChannelDef2:Xat(a,n),continuousAxisChannelDefError:Xat(c,n),continuousAxisChannelDefError2:Xat(l,n),continuousAxis:i}}function Xat(t,e){if(null!=t&&t.aggregate){var n=t.aggregate,r=(0,I.Z)(t,Rat);return n!==e&&$nt(function(t,e){return"Continuous axis should not have customized aggregation function ".concat(t,"; ").concat(e," already agregates the axis.")}(n,e)),r}return t}function qat(t,e){var n=t.mark,r=t.encoding,i=r.x,o=r.y;if(Tit(n)&&n.orient)return n.orient;if(Zot(i)){if(Zot(o)){var a=_ot(i)&&i.aggregate,c=_ot(o)&&o.aggregate;if(a||c!==e){if(c||a!==e){if(a===e&&c===e)throw new Error("Both x and y cannot have aggregate");return aat(o)&&!aat(i)?"horizontal":"vertical"}return"horizontal"}return"vertical"}return"horizontal"}if(Zot(o))return"vertical";throw new Error("Need a valid continuous axis for ".concat(e,"s"))}var Yat=["mark","encoding","params","projection"],$at=["color","size"],Kat=["tooltip"];function Jat(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var r=n.call(t,e||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}function Qat(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function tct(t){for(var e=1;e ").concat(G,")")}],mark:"point",encoding:tct(tct(tct((0,V.Z)({},b,tct(tct(tct({field:y.field,type:y.type},void 0!==Q?{title:Q}:{}),void 0!==K?{scale:K}:{}),g9(tt)?{}:{axis:tt})),$),E?{color:E}:{}),O?{tooltip:O}:{})})[0],nt=[].concat((0,Xm.Z)(v),(0,Xm.Z)(g),[q]);et?N={transform:nt,layer:[et,Y]}:(B=(N=Y).transform).unshift.apply(B,(0,Xm.Z)(nt));return tct(tct({},c),{},{layer:[N,{transform:m,layer:L}]})}function oct(t){return[{op:"q1",field:t,as:"lower_box_".concat(t)},{op:"q3",field:t,as:"upper_box_".concat(t)}]}var act=["mark","encoding","params","projection"];function cct(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return lct(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return lct(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function lct(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n1?{layer:g}:fct({},g[0]))}function vct(t,e){var n=t.encoding;if(function(t){return(Iot(t.x)||Iot(t.y))&&!Iot(t.x2)&&!Iot(t.y2)&&!Iot(t.xError)&&!Iot(t.xError2)&&!Iot(t.yError)&&!Iot(t.yError2)}(n))return{orient:qat(t,e),inputType:"raw"};var r=function(t){return Iot(t.x2)||Iot(t.y2)}(n),i=function(t){return Iot(t.xError)||Iot(t.xError2)||Iot(t.yError)||Iot(t.yError2)}(n),o=n.x,a=n.y;if(r){if(i)throw new Error("".concat(e," cannot be both type aggregated-upper-lower and aggregated-error"));var c=n.x2,l=n.y2;if(Iot(c)&&Iot(l))throw new Error("".concat(e," cannot have both x2 and y2"));if(Iot(c)){if(Zot(o))return{orient:"horizontal",inputType:"aggregated-upper-lower"};throw new Error("Both x and x2 have to be quantitative in ".concat(e))}if(Iot(l)){if(Zot(a))return{orient:"vertical",inputType:"aggregated-upper-lower"};throw new Error("Both y and y2 have to be quantitative in ".concat(e))}throw new Error("No ranged axis")}var u=n.xError,s=n.xError2,f=n.yError,h=n.yError2;if(Iot(s)&&!Iot(u))throw new Error("".concat(e," cannot have xError2 without xError"));if(Iot(h)&&!Iot(f))throw new Error("".concat(e," cannot have yError2 without yError"));if(Iot(u)&&Iot(f))throw new Error("".concat(e," cannot have both xError and yError with both are quantiative"));if(Iot(u)){if(Zot(o))return{orient:"horizontal",inputType:"aggregated-error"};throw new Error("All x, xError, and xError2 (if exist) have to be quantitative")}if(Iot(f)){if(Zot(a))return{orient:"vertical",inputType:"aggregated-error"};throw new Error("All y, yError, and yError2 (if exist) have to be quantitative")}throw new Error("No ranged axis")}function gct(t,e,n){var r,i=t.mark,o=t.encoding,a=t.params,c=(t.projection,(0,I.Z)(t,act)),l=Tit(i)?i:{type:i};a&&$nt(Cnt(e));var u=vct(t,e),s=u.orient,f=u.inputType,h=Gat(t,s,e),d=h.continuousAxisChannelDef,p=h.continuousAxisChannelDef2,v=h.continuousAxisChannelDefError,g=h.continuousAxisChannelDefError2,m=h.continuousAxis,y=function(t,e,n,r,i,o,a,c){var l,u=[],s=[],f=e.field,h=!1;if("raw"===o){var d,p,v,g=t.center?t.center:t.extent?"iqr"===t.extent?"median":"mean":c.errorbar.center,m=t.extent?t.extent:"mean"===g?"stderr":"iqr";if("median"===g!=("iqr"===m)&&$nt(function(t,e,n){return"".concat(t," is not usually used with ").concat(e," for ").concat(n,".")}(g,m,a)),"stderr"===m||"stdev"===m)u=[{op:m,field:f,as:"extent_".concat(f)},{op:g,field:f,as:"center_".concat(f)}],s=[{calculate:'datum["center_'.concat(f,'"] + datum["extent_').concat(f,'"]'),as:"upper_".concat(f)},{calculate:'datum["center_'.concat(f,'"] - datum["extent_').concat(f,'"]'),as:"lower_".concat(f)}],l=[{fieldPrefix:"center_",titlePrefix:C9(g)},{fieldPrefix:"upper_",titlePrefix:mct(g,m,"+")},{fieldPrefix:"lower_",titlePrefix:mct(g,m,"-")}],h=!0;else"ci"===m?(d="mean",p="ci0",v="ci1"):(d="median",p="q1",v="q3"),u=[{op:p,field:f,as:"lower_".concat(f)},{op:v,field:f,as:"upper_".concat(f)},{op:d,field:f,as:"center_".concat(f)}],l=[{fieldPrefix:"upper_",titlePrefix:Yot({field:f,aggregate:v,type:"quantitative"},c,{allowDisabling:!1})},{fieldPrefix:"lower_",titlePrefix:Yot({field:f,aggregate:p,type:"quantitative"},c,{allowDisabling:!1})},{fieldPrefix:"center_",titlePrefix:Yot({field:f,aggregate:d,type:"quantitative"},c,{allowDisabling:!1})}]}else{(t.center||t.extent)&&$nt(function(t,e){return"".concat(e?"extent ":"").concat(e&&t?"and ":"").concat(t?"center ":"").concat(e&&t?"are ":"is ","not needed when data are aggregated.")}(t.center,t.extent)),"aggregated-upper-lower"===o?(l=[],s=[{calculate:'datum["'.concat(n.field,'"]'),as:"upper_".concat(f)},{calculate:'datum["'.concat(f,'"]'),as:"lower_".concat(f)}]):"aggregated-error"===o&&(l=[{fieldPrefix:"",titlePrefix:f}],s=[{calculate:'datum["'.concat(f,'"] + datum["').concat(r.field,'"]'),as:"upper_".concat(f)}],i?s.push({calculate:'datum["'.concat(f,'"] + datum["').concat(i.field,'"]'),as:"lower_".concat(f)}):s.push({calculate:'datum["'.concat(f,'"] - datum["').concat(r.field,'"]'),as:"lower_".concat(f)}));var y,b=cct(s);try{for(b.s();!(y=b.n()).done;){var x=y.value;l.push({fieldPrefix:x.as.substring(0,6),titlePrefix:P9(P9(x.calculate,'datum["',""),'"]',"")})}}catch(w){b.e(w)}finally{b.f()}}return{postAggregateCalculates:s,errorBarSpecificAggregate:u,tooltipSummary:l,tooltipTitleWithFieldName:h}}(l,d,p,v,g,f,e,n),b=y.errorBarSpecificAggregate,x=y.postAggregateCalculates,w=y.tooltipSummary,S=y.tooltipTitleWithFieldName,k="x"===m?"x2":"y2",C="x"===m?"xError":"yError",O="x"===m?"xError2":"yError2",E=(o[m],o[k],o[C],o[O],Dat((0,I.Z)(o,[m,k,C,O].map(uct)),n)),M=E.bins,A=E.timeUnits,P=E.aggregate,_=E.groupby,D=E.encoding,T=[].concat((0,Xm.Z)(P),(0,Xm.Z)(b)),Z="raw"!==f?[]:_,F=Uat(w,d,D,S);return{transform:[].concat((0,Xm.Z)(null!==(r=c.transform)&&void 0!==r?r:[]),(0,Xm.Z)(M),(0,Xm.Z)(A),(0,Xm.Z)(0===T.length?[]:[{aggregate:T,groupby:Z}]),(0,Xm.Z)(x)),groupby:Z,continuousAxisChannelDef:d,continuousAxis:m,encodingWithoutContinuousAxis:D,ticksOrient:"vertical"===s?"horizontal":"vertical",markDef:l,outerSpec:c,tooltipEncoding:F}}function mct(t,e,n){return"".concat(C9(t)," ").concat(n," ").concat(e)}function yct(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function bct(t){for(var e=1;e window:mousemove!",encodings:["x","y"],translate:"[mousedown, window:mouseup] > window:mousemove!",zoom:"wheel!",mark:{fill:"#333",fillOpacity:.125,stroke:"white"},resolve:"global",clear:"dblclick"}};function jct(t){return"legend"===t||!(null==t||!t.legend)}function Ict(t){return jct(t)&&Yy(t)}function Rct(t){return!(null==t||!t.select)}var Lct=["expr","bind"];function Nct(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Bct(t){for(var e=1;e=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Uct(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function qct(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function elt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0&&void 0!==arguments[0]?arguments[0]:{},e=t.color,n=t.font,r=t.fontSize,i=t.selection,o=(0,I.Z)(t,Qct),a=Ky({},J7(llt),n?function(t){return{text:{font:t},style:{"guide-label":{font:t},"guide-title":{font:t},"group-title":{font:t},"group-subtitle":{font:t}}}}(n):{},e?function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{signals:[{name:"color",value:Yy(t)?rlt(rlt({},flt),t):flt}],mark:{color:{signal:"color.blue"}},rule:{color:{signal:"color.gray0"}},text:{color:{signal:"color.gray0"}},style:{"guide-label":{fill:{signal:"color.gray0"}},"guide-title":{fill:{signal:"color.gray0"}},"group-title":{fill:{signal:"color.gray0"}},"group-subtitle":{fill:{signal:"color.gray0"}},cell:{stroke:{signal:"color.gray8"}}},axis:{domainColor:{signal:"color.gray13"},gridColor:{signal:"color.gray8"},tickColor:{signal:"color.gray13"}},range:{category:[{signal:"color.blue"},{signal:"color.orange"},{signal:"color.red"},{signal:"color.teal"},{signal:"color.green"},{signal:"color.yellow"},{signal:"color.purple"},{signal:"color.pink"},{signal:"color.brown"},{signal:"color.grey8"}]}}}(e):{},r?function(t){return{signals:[{name:"fontSize",value:Yy(t)?rlt(rlt({},slt),t):slt}],text:{fontSize:{signal:"fontSize.text"}},style:{"guide-label":{fontSize:{signal:"fontSize.guideLabel"}},"guide-title":{fontSize:{signal:"fontSize.guideTitle"}},"group-title":{fontSize:{signal:"fontSize.groupTitle"}},"group-subtitle":{fontSize:{signal:"fontSize.groupSubtitle"}}}}}(r):{},o||{});i&&Jy(a,"selection",i,!0);for(var c=e9(a,dlt),l=0,u=["background","lineBreak","padding"];l=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Elt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Flt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n1?e:e.type}function zlt(t){for(var e=0,n=["line","area","rule","trail"];e1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;return"transparent"===t.point?{opacity:0}:t.point?Yy(t.point)?t.point:{}:void 0!==t.point?null:e.point||n.shape?Yy(e.point)?e.point:{}:void 0}function Hlt(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return t.line?!0===t.line?{}:t.line:void 0!==t.line?null:e.line?!0===e.line?{}:e.line:void 0}var Wlt=function(){function t(){(0,Rm.Z)(this,t),this.name="path-overlay"}return(0,Lm.Z)(t,[{key:"hasMatchingType",value:function(t,e){if(xat(t)){var n=t.mark,r=t.encoding,i=Tit(n)?n:{type:n};switch(i.type){case"line":case"rule":case"trail":return!!Ult(i,e[i.type],r);case"area":return!!Ult(i,e[i.type],r)||!!Hlt(i,e[i.type])}}return!1}},{key:"run",value:function(t,e,n){var r=e.config,i=t.params,o=t.projection,a=t.mark,c=t.name,l=t.encoding,u=(0,I.Z)(t,Rlt),s=Zat(l,r),f=Tit(a)?a:{type:a},h=Ult(f,r[f.type],s),d="area"===f.type&&Hlt(f,r[f.type]),p=[Nlt(Nlt({name:c},i?{params:i}:{}),{},{mark:Blt(Nlt(Nlt({},"area"===f.type&&void 0===f.opacity&&void 0===f.fillOpacity?{opacity:.7}:{}),f)),encoding:e9(s,["shape"])})],v=Tlt(jlt(f,s,r),s),g=s;if(v){var m=v.fieldChannel,y=v.offset;g=Nlt(Nlt({},s),{},(0,V.Z)({},m,Nlt(Nlt({},s[m]),y?{stack:y}:{})))}return g=e9(g,["y2","x2"]),d&&p.push(Nlt(Nlt({},o?{projection:o}:{}),{},{mark:Nlt(Nlt({type:"line"},t9(f,["clip","interpolate","tension","tooltip"])),d),encoding:g})),h&&p.push(Nlt(Nlt({},o?{projection:o}:{}),{},{mark:Nlt(Nlt({type:"point",opacity:1,filled:!0},t9(f,["clip","tooltip"])),h),encoding:g})),n(Nlt(Nlt({},u),{},{layer:p}),Nlt(Nlt({},e),{},{config:zlt(r)}))}}]),t}(),Vlt=["condition"];function Glt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Xlt(t){for(var e=1;e=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function iut(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function vut(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n1?"are":"is"," also specified.")));for(var o={},a={},c=0,l=[U9,H9];c=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Qut(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function ust(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);nn[e-1])})))&&a.push(l)}}catch(h){s.e(h)}finally{s.f()}}else a.push(l)}}catch(h){c.e(h)}finally{c.f()}return a.length&&(t.params=a),t}}]),n}(Clt),hst=function(){var t=pst[dst],e=fst.prototype[t];fst.prototype[t]=function(t,n){return e.call(this,t,function(t,e){var n;return t.name?cst(cst({},e),{},{path:(null!==(n=e.path)&&void 0!==n?n:[]).concat(t.name)}):e}(t,n))}},dst=0,pst=["mapFacet","mapRepeat","mapHConcat","mapVConcat","mapLayer"];dst1&&void 0!==arguments[1]?arguments[1]:{},n={config:e};return xst.map(yst.map(bst.map(t,n),n),n)}(t,e),r=function(t,e,n){var r=e.width,i=e.height,o=xat(t)||xlt(t),a={};o?"container"==r&&"container"==i?(a.type="fit",a.contains="padding"):"container"==r?(a.type="fit-x",a.contains="padding"):"container"==i&&(a.type="fit-y",a.contains="padding"):("container"==r&&($nt(ynt("width")),r=void 0),"container"==i&&($nt(ynt("height")),i=void 0));var c=gst(gst(gst({type:"pad"},a),n?wst(n.autosize):{}),wst(t.autosize));"fit"!==c.type||o||($nt(mnt),c.type="pad");"container"==r&&"fit"!=c.type&&"fit-x"!=c.type&&$nt(bnt("width"));"container"==i&&"fit"!=c.type&&"fit-y"!=c.type&&$nt(bnt("height"));if(K7(c,{type:"pad"}))return;return c}(n,{width:t.width,height:t.height,autosize:t.autosize},e);return gst(gst({},n),r?{autosize:r}:{})}var yst=new but,bst=new est,xst=new fst;function wst(t){return Vb(t)?{type:t}:null!=t?t:{}}function Sst(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return kst(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return kst(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function kst(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Mst(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};(0,Rm.Z)(this,t),this.explicit=e,this.implicit=n}return(0,Lm.Z)(t,[{key:"clone",value:function(){return new t(J7(this.explicit),J7(this.implicit))}},{key:"combine",value:function(){return Pst(Pst({},this.explicit),this.implicit)}},{key:"get",value:function(t){return T9(this.explicit[t],this.implicit[t])}},{key:"getWithExplicit",value:function(t){return void 0!==this.explicit[t]?{explicit:!0,value:this.explicit[t]}:void 0!==this.implicit[t]?{explicit:!1,value:this.implicit[t]}:{explicit:!1,value:void 0}}},{key:"setWithExplicit",value:function(t,e){var n=e.value,r=e.explicit;void 0!==n&&this.set(t,n,r)}},{key:"set",value:function(t,e,n){return delete this[n?"implicit":"explicit"][t],this[n?"explicit":"implicit"][t]=e,this}},{key:"copyKeyFromSplit",value:function(t,e){var n=e.explicit,r=e.implicit;void 0!==n[t]?this.set(t,n[t],!0):void 0!==r[t]&&this.set(t,r[t],!1)}},{key:"copyKeyFromObject",value:function(t,e){void 0!==e[t]&&this.set(t,e[t],!0)}},{key:"copyAll",value:function(t){var e,n=Est(m9(t.combine()));try{for(n.s();!(e=n.n()).done;){var r=e.value,i=t.getWithExplicit(r);this.setWithExplicit(r,i)}}catch(o){n.e(o)}finally{n.f()}}}]),t}();function Dst(t){return{explicit:!0,value:t}}function Tst(t){return{explicit:!1,value:t}}function Zst(t){return function(e,n,r,i){var o=t(e.value,n.value);return o>0?e:o<0?n:Fst(e,n,r,i)}}function Fst(t,e,n,r){return t.explicit&&e.explicit&&$nt(function(t,e,n,r){return"Conflicting ".concat(e.toString(),' property "').concat(t.toString(),'" (').concat(n9(n)," and ").concat(n9(r),"). Using ").concat(n9(n),".")}(n,r,t.value,e.value)),t}function jst(t,e,n,r){var i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:Fst;return void 0===t||void 0===t.value?e:t.explicit&&!e.explicit?t:e.explicit&&!t.explicit?e:K7(t.value,e.value)?t:i(t,e,n,r)}function Ist(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(F2t){return!1}}();return function(){var n,r=(0,Um.Z)(t);if(e){var i=(0,Um.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,zm.Z)(this,n)}}var Rst,Lst=function(t){(0,Bm.Z)(n,t);var e=Ist(n);function n(){var t,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return(0,Rm.Z)(this,n),(t=e.call(this,r,i)).explicit=r,t.implicit=i,t.parseNothing=o,t}return(0,Lm.Z)(n,[{key:"clone",value:function(){var t=qZ((0,Um.Z)(n.prototype),"clone",this).call(this);return t.parseNothing=this.parseNothing,t}}]),n}(_st);function Nst(t){return"url"in t}function Bst(t){return"values"in t}function zst(t){return"name"in t&&!Nst(t)&&!Bst(t)&&!Ust(t)}function Ust(t){return t&&(Hst(t)||Wst(t)||Vst(t))}function Hst(t){return"sequence"in t}function Wst(t){return"sphere"in t}function Vst(t){return"graticule"in t}!function(t){t[t.Raw=0]="Raw",t[t.Main=1]="Main",t[t.Row=2]="Row",t[t.Column=3]="Column",t[t.Lookup=4]="Lookup"}(Rst||(Rst={}));var Gst=["signals","hasLegend","index"];function Xst(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return qst(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return qst(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function qst(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Iy;if(qy(t)){var o=t.map((function(t){return $st(t,r,i)}));return r?"[".concat(o.join(", "),"]"):o}return Qnt(t)?i(r?ort(t):(n=irt(e=t,!0),e.utc?+new Date(Date.UTC.apply(Date,(0,Xm.Z)(n))):+$Z(Date,(0,Xm.Z)(n)))):r?i(n9(t)):t}function Kst(t,e){var n,r,i=Xst(y9(null!==(n=t.component.selection)&&void 0!==n?n:{}));try{for(i.s();!(r=i.n()).done;){var o,a=r.value,c=Xst(sdt);try{for(c.s();!(o=c.n()).done;){var l=o.value;l.defined(a)&&l.marks&&(e=l.marks(t,a,e))}}catch(u){c.e(u)}finally{c.f()}}}catch(u){i.e(u)}finally{i.f()}return e}function Jst(t){return t.map((function(t){return t.on&&!t.on.length&&delete t.on,t}))}function Qst(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(F2t){return!1}}();return function(){var n,r=(0,Um.Z)(t);if(e){var i=(0,Um.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,zm.Z)(this,n)}}function tft(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return eft(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return eft(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function eft(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function cft(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function mft(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0||e.project.hasSelectionId?n:n.concat({name:r,value:e.project.items.map(Yst)})}},wft=xft;function Sft(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return kft(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return kft(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function kft(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=0)i.update="{".concat(r.map((function(t){return"".concat(tx(A9(t.field)),": ").concat(t.signals.data)})).join(", "),"}");else{var a,c=Sft(r);try{for(c.s();!(a=c.n()).done;){var l=a.value,u="".concat(tx(A9(l.field)),": ").concat(l.signals.data);o.includes(u)||(o="".concat(o.substring(0,o.length-1),", ").concat(u,"}"))}}catch(s){c.e(s)}finally{c.f()}i.update=o}return n.concat(r.map((function(t){return{name:t.signals.data}})))},signals:function(t,e,n){if(t.parent&&!Mft(t)){var r,i=Sft(e.scales);try{var o=function(){var t=r.value,e=n.filter((function(e){return e.name===t.signals.data}))[0];e.push="outer",delete e.value,delete e.update};for(i.s();!(r=i.n()).done;)o()}catch(a){i.e(a)}finally{i.f()}}return n}},Oft=Cft;function Eft(t,e){var n=tx(t.scaleName(e));return"domain(".concat(n,")")}function Mft(t){var e;return t.parent&&syt(t.parent)&&(null!==(e=!t.parent.parent)&&void 0!==e?e:Mft(t.parent.parent))}var Aft=["fill","fillOpacity","cursor"];function Pft(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return _ft(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _ft(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function _ft(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n1&&void 0!==arguments[1]?arguments[1]:"text",n=t.encoding[e];return Hft(t,n,e,(function(e){return Vft(e,t.config)}))}function Vft(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"datum";if(t){if(Lot(t))return rnt(t.value);if(Iot(t)){var r=Jot(t);return Jit({fieldOrDatumDef:t,format:r.format,formatType:r.formatType,expr:n,config:e})}}}n(27207);function Gft(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Xft(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:{},n=t.encoding,r=t.markDef,i=t.config,o=t.stack,a=n.tooltip;if(qy(a))return{tooltip:$ft({tooltip:a},o,i,e)};var c=e.reactiveGeom?"datum.datum":"datum";return Hft(t,a,"tooltip",(function(t){var a=Vft(t,i,c);if(a)return a;if(null!==t){var l=lnt("tooltip",r,i);return!0===l&&(l={content:"encoding"}),Vb(l)?{value:l}:Yy(l)?zet(l)?l:"encoding"===l.content?$ft(n,o,i,e):{signal:c}:void 0}}))}function Yft(t,e,n){var r=(arguments.length>3&&void 0!==arguments[3]?arguments[3]:{}).reactiveGeom,i=Xft(Xft({},n),n.tooltipFormat),o={},a=r?"datum.datum":"datum",c=[];function l(n,r){var l,u,s=Utt(r),f=Rot(n)?n:Xft(Xft({},n),{},{type:t[s].type}),h=bb(f.title||Kot(f,i)).join(", ").replaceAll(/"/g,'\\"');if(tet(r)){var d="x"===r?"x2":"y2",p=Qot(t[d]);if(Aet(f.bin)&&p){var v=Wot(f,{expr:a}),g=Wot(p,{expr:a}),m=Jot(f);u=aot(v,g,m.format,m.formatType,i),o[d]=!0}}if((tet(r)||r===Q9||r===K9)&&e&&e.fieldChannel===r&&"normalize"===e.offset){var y=Jot(f);u=Jit({fieldOrDatumDef:f,format:y.format,formatType:y.formatType,expr:a,config:i,normalizeStack:!0}).signal}null!==(l=u)&&void 0!==l||(u=Vft(f,i,a).signal),c.push({channel:r,key:h,value:u})}Fat(t,(function(t,e){_ot(t)?l(t,e):Aot(t)&&l(t.condition,e)}));for(var u={},s=0,f=c;s3&&void 0!==arguments[3]?arguments[3]:{}).reactiveGeom}),i=b9(r).map((function(t){var e=(0,G.Z)(t,2),n=e[0],r=e[1];return'"'.concat(n,'": ').concat(r)}));return i.length>0?{signal:"{".concat(i.join(", "),"}")}:void 0}function Kft(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Jft(t){for(var e=1;e0?"; ":"").concat(r,': " + (').concat(i,")")})).join(" + ")}}}(t))}function tht(t,e){var n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=e.markDef,o=e.encoding,a=e.config,c=r.vgChannel,l=r.defaultRef,u=r.defaultValue;void 0===l&&(null!==(n=u)&&void 0!==n||(u=lnt(t,i,a,{vgChannel:c,ignoreVgConfig:!0})),void 0!==u&&(l=rnt(u)));var s=o[t];return Hft(e,s,null!=c?c:t,(function(n){return Xit({channel:t,channelDef:n,markDef:i,config:a,scaleName:e.scaleName(t),scale:e.getScaleComponent(t),stack:null,defaultRef:l})}))}function eht(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function nht(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:{filled:void 0},a=t.markDef,c=t.encoding,l=t.config,u=a.type,s=null!==(e=o.filled)&&void 0!==e?e:lnt("filled",a,l),f=o9(["bar","point","circle","square","geoshape"],u)?"transparent":void 0,h=null!==(n=null!==(r=lnt(!0===s?"color":void 0,a,l,{vgChannel:"fill"}))&&void 0!==r?r:l.mark[!0===s&&"color"])&&void 0!==n?n:f,d=null!==(i=lnt(!1===s?"color":void 0,a,l,{vgChannel:"stroke"}))&&void 0!==i?i:l.mark[!1===s&&"color"],p=s?"fill":"stroke",v=nht(nht({},h?{fill:rnt(h)}:{}),d?{stroke:rnt(d)}:{});return a.color&&(s?a.fill:a.stroke)&&$nt(Dnt("property",{fill:"fill"in a,stroke:"stroke"in a})),nht(nht(nht(nht({},v),tht("color",t,{vgChannel:p,defaultValue:s?h:d})),tht("fill",t,{defaultValue:c.fill?h:void 0})),tht("stroke",t,{defaultValue:c.stroke?d:void 0}))}function iht(t){var e=t.channel,n=t.markDef,r=t.encoding,i=void 0===r?{}:r,o=t.model,a=t.bandPosition,c="".concat(e,"Offset"),l=n[c],u=i[c];if(("xOffset"===c||"yOffset"===c)&&u)return{offsetType:"encoding",offset:Xit({channel:c,channelDef:u,markDef:n,config:null==o?void 0:o.config,scaleName:o.scaleName(c),scale:o.getScaleComponent(c),stack:null,defaultRef:rnt(l),bandPosition:a})};var s=n[c];return s?{offsetType:"visual",offset:s}:{}}function oht(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function aht(t){for(var e=1;e3&&void 0!==arguments[3]?arguments[3]:"middle";if("radius"===t||"theta"===t)return Htt(t);var i,o="x"===t?"align":"baseline",a=lnt(o,e,n);return zet(a)?($nt(function(t){return"The ".concat(t," for range marks cannot be an expression")}(o)),i=void 0):i=a,"x"===t?uht[i||("top"===r?"left":"center")]:sht[i||r]}function hht(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function dht(t){for(var e=1;e0){var a=r?"||":"&&";return o.map((function(t){return Wit(t,r)})).join(" ".concat(a," "))}return}(t,{invalid:!0,channels:set});if(o)return(0,V.Z)({},e,[{test:o,value:null}].concat((0,Xm.Z)(bb(n))))}return n?(0,V.Z)({},e,n):{}}function Mht(t){var e=t.config;if(lnt("invalid",t.markDef,e)){var n=function(t,e){var n=e.invalid,r=void 0!==n&&n,i=e.channels.reduce((function(e,n){var r=t.getScaleComponent(n);if(r){var i,o=r.get("type"),a=t.vgField(n,{expr:"datum",binSuffix:null!==(i=t.stack)&&void 0!==i&&i.impute?"mid":void 0});a&&oit(o)&&(e[a]=!0)}return e}),{}),o=m9(i);if(o.length>0){var a=r?"||":"&&";return o.map((function(t){return Wit(t,r)})).join(" ".concat(a," "))}return}(t,{channels:Qtt});if(n)return{defined:{signal:n}}}return{}}function Aht(t,e){if(void 0!==e)return(0,V.Z)({},t,rnt(e))}function Pht(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function _ht(t){for(var e=1;e=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Tht(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=0&&(u=!0)})),u||n.splice(l+1,0,c),n}},jht=Fht;function Iht(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Rht(t){for(var e=1;e=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Hht(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Ght(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0?o.on.push({events:c.map((function(t){return{signal:t}})),update:u}):c.length>0&&(o.update=u,delete o.value,delete o.on);var s=n.find((function(t){return t.name===r+Bht})),f=Ict(e.bind)&&e.bind.legend;return s&&(e.events?s.on.push(qht(qht({},s.on[0]),{},{events:f})):s.on[0].events=f),n}};var $ht="_translate_anchor",Kht="_translate_delta",Jht={defined:function(t){return"interval"===t.type&&t.translate},signals:function(t,e,n){var r=e.name,i=Oft.defined(e),o=r+$ht,a=e.project.hasChannel,c=a.x,l=a.y,u=t3(e.translate,"scope");return i||(u=u.map((function(t){return t.between[0].markname=r+Zft,t}))),n.push({name:o,value:{},on:[{events:u.map((function(t){return t.between[0]})),update:"{x: x(unit), y: y(unit)"+(void 0!==c?", extent_x: ".concat(i?Eft(t,V9):"slice(".concat(c.signals.visual,")")):"")+(void 0!==l?", extent_y: ".concat(i?Eft(t,G9):"slice(".concat(l.signals.visual,")")):"")+"}"}]},{name:r+Kht,value:{},on:[{events:u,update:"{x: ".concat(o,".x - x(unit), y: ").concat(o,".y - y(unit)}")}]}),void 0!==c&&Qht(t,e,c,"width",n),void 0!==l&&Qht(t,e,l,"height",n),n}};function Qht(t,e,n,r,i){var o,a,c=e.name,l=c+$ht,u=c+Kht,s=n.channel,f=Oft.defined(e),h=i.filter((function(t){return t.name===n.signals[f?"data":"visual"]}))[0],d=t.getSizeSignalRef(r).signal,p=t.getScaleComponent(s),v=p&&p.get("type"),g=p&&p.get("reverse"),m=f?s===V9?g?"":"-":g?"-":"":"",y="".concat(l,".extent_").concat(s),b="".concat(m).concat(u,".").concat(s," / ").concat(f?"".concat(d):"span(".concat(y,")")),x=f&&p?"log"===v?"panLog":"symlog"===v?"panSymlog":"pow"===v?"panPow":"panLinear":"panLinear",w=f?"pow"===v?", ".concat(null!==(o=p.get("exponent"))&&void 0!==o?o:1):"symlog"===v?", ".concat(null!==(a=p.get("constant"))&&void 0!==a?a:1):"":"",S="".concat(x,"(").concat(y,", ").concat(b).concat(w,")");h.on.push({events:{signal:u},update:f?S:"clampRange(".concat(S,", 0, ").concat(d,")")})}var tdt="_zoom_anchor",edt="_zoom_delta",ndt={defined:function(t){return"interval"===t.type&&t.zoom},signals:function(t,e,n){var r=e.name,i=Oft.defined(e),o=r+edt,a=e.project.hasChannel,c=a.x,l=a.y,u=tx(t.scaleName(V9)),s=tx(t.scaleName(G9)),f=t3(e.zoom,"scope");return i||(f=f.map((function(t){return t.markname=r+Zft,t}))),n.push({name:r+tdt,on:[{events:f,update:i?"{"+[u?"x: invert(".concat(u,", x(unit))"):"",s?"y: invert(".concat(s,", y(unit))"):""].filter((function(t){return t})).join(", ")+"}":"{x: x(unit), y: y(unit)}"}]},{name:o,on:[{events:f,force:!0,update:"pow(1.001, event.deltaY * pow(16, event.deltaMode))"}]}),void 0!==c&&rdt(t,e,c,"width",n),void 0!==l&&rdt(t,e,l,"height",n),n}};function rdt(t,e,n,r,i){var o,a,c=e.name,l=n.channel,u=Oft.defined(e),s=i.filter((function(t){return t.name===n.signals[u?"data":"visual"]}))[0],f=t.getSizeSignalRef(r).signal,h=t.getScaleComponent(l),d=h&&h.get("type"),p=u?Eft(t,l):s.name,v=c+edt,g="".concat(c).concat(tdt,".").concat(l),m=u&&h?"log"===d?"zoomLog":"symlog"===d?"zoomSymlog":"pow"===d?"zoomPow":"zoomLinear":"zoomLinear",y=u?"pow"===d?", ".concat(null!==(o=h.get("exponent"))&&void 0!==o?o:1):"symlog"===d?", ".concat(null!==(a=h.get("constant"))&&void 0!==a?a:1):"":"",b="".concat(m,"(").concat(p,", ").concat(g,", ").concat(v).concat(y,")");s.on.push({events:{signal:v},update:u?b:"clampRange(".concat(b,", 0, ").concat(f,")")})}function idt(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return odt(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return odt(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function odt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n1&&void 0!==arguments[1]?arguments[1]:{escape:!0}).escape?tx(t.name):t.name,n=function(t){for(var e=t.parent;e&&!lyt(e);)e=e.parent;return e}(t);if(n){var r,i=n.facet,o=idt(Ztt);try{for(o.s();!(r=o.n()).done;){var a=r.value;i[a]&&(e+=" + '__facet_".concat(a,"_' + (facet[").concat(tx(n.vgField(a)),"])"))}}catch(c){o.e(c)}finally{o.f()}}return e}function hdt(t){var e;return y9(null!==(e=t.component.selection)&&void 0!==e?e:{}).reduce((function(t,e){return t||e.project.hasSelectionId}),!1)}function ddt(t,e){!Vb(e.select)&&e.select.on||delete t.events,!Vb(e.select)&&e.select.clear||delete t.clear,!Vb(e.select)&&e.select.toggle||delete t.toggle}function pdt(t){var e=[];return"Identifier"===t.type?[t.name]:"Literal"===t.type?[t.value]:("MemberExpression"===t.type&&(e.push.apply(e,(0,Xm.Z)(pdt(t.object))),e.push.apply(e,(0,Xm.Z)(pdt(t.property)))),e)}function vdt(t){return"MemberExpression"===t.object.type?vdt(t.object):"datum"===t.object.name}function gdt(t){var e=r0(t),n=new Set;return e.visit((function(t){"MemberExpression"===t.type&&vdt(t)&&n.add(pdt(t).slice(1).join("."))})),n}function mdt(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(F2t){return!1}}();return function(){var n,r=(0,Um.Z)(t);if(e){var i=(0,Um.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,zm.Z)(this,n)}}var ydt=function(t){(0,Bm.Z)(n,t);var e=mdt(n);function n(t,r,i){var o;return(0,Rm.Z)(this,n),(o=e.call(this,t)).model=r,o.filter=i,o.expr=Odt(o.model,o.filter,(0,Nm.Z)(o)),o._dependentFields=gdt(o.expr),o}return(0,Lm.Z)(n,[{key:"clone",value:function(){return new n(null,this.model,J7(this.filter))}},{key:"dependentFields",value:function(){return this._dependentFields}},{key:"producedFields",value:function(){return new Set}},{key:"assemble",value:function(){return{type:"filter",expr:this.expr}}},{key:"hash",value:function(){return"Filter ".concat(this.expr)}}]),n}(nft);function bdt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function xdt(t){for(var e=1;e=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Sdt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n3&&void 0!==arguments[3]?arguments[3]:"datum",o=Vb(e)?e:e.param,a=w9(o),c=tx(a+adt);try{r=t.getSelectionComponent(a,o)}catch(F2t){return"!!".concat(a)}if(r.project.timeUnit){var l=null!=n?n:t.component.data.raw,u=r.project.timeUnit.clone();l.parent?u.insertAsParentOf(l):l.parent=u}var s=r.project.hasSelectionId?"vlSelectionIdTest(":"vlSelectionTest(",f="global"===r.resolve?")":", ".concat(tx(r.resolve),")"),h="".concat(s).concat(c,", ").concat(i).concat(f),d="length(data(".concat(c,"))");return!1===e.empty?"".concat(d," && ").concat(h):"!".concat(d," || ").concat(h)}function Cdt(t,e,n){var r,i=w9(e),o=n.encoding,a=n.field;try{r=t.getSelectionComponent(i,e)}catch(F2t){return i}if(o||a){if(o&&!a){var c=r.project.items.filter((function(t){return t.channel===o}));!c.length||c.length>1?(a=r.project.items[0].field,$nt((c.length?"Multiple ":"No ")+"matching ".concat(tx(o)," encoding found for selection ").concat(tx(n.param),". ")+'Using "field": '.concat(tx(a),"."))):a=c[0].field}}else a=r.project.items[0].field,r.project.items.length>1&&$nt('A "field" or "encoding" must be specified when using a selection as a scale domain. '+'Using "field": '.concat(tx(a),"."));return"".concat(r.name,"[").concat(tx(A9(a)),"]")}function Odt(t,e,n){return S9(e,(function(e){return Vb(e)?e:function(t){return null==t?void 0:t.param}(e)?kdt(t,e,n):Rrt(e)}))}var Edt=["disable","orient","scale","labelExpr","title","zindex"],Mdt=["condition"],Adt=["test"],Pdt=["test"];function _dt(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return Ddt(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Ddt(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Ddt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n3&&void 0!==arguments[3]?arguments[3]:{header:!1},i=t.combine(),o=i.disable,a=i.orient,c=i.scale,l=i.labelExpr,u=i.title,s=i.zindex,f=(0,I.Z)(i,Edt);if(!o){for(var h in f){var d=vat[h],p=f[h];if(d&&d!==e&&"both"!==d)delete f[h];else if(dat(p)){var v=p.condition,g=(0,I.Z)(p,Mdt),m=bb(v),y=hat[h];if(y){var b=y.vgProp,x=y.part,w=[].concat((0,Xm.Z)(m.map((function(t){var e=t.test,n=(0,I.Z)(t,Adt);return Zdt({test:Odt(null,e)},n)}))),[g]);Fdt(f,x,b,w),delete f[h]}else if(null===y){var S={signal:m.map((function(t){var e=t.test,n=(0,I.Z)(t,Pdt);return"".concat(Odt(null,e)," ? ").concat(ont(n)," : ")})).join("")+ont(g)};f[h]=S}}else if(zet(p)){var k=hat[h];if(k){var C=k.vgProp;Fdt(f,k.part,C,p),delete f[h]}}o9(["labelAlign","labelBaseline"],h)&&null===f[h]&&delete f[h]}if("grid"===e){if(!f.grid)return;if(f.encode){var O=f.encode.grid;f.encode=Zdt({},O?{grid:O}:{}),g9(f.encode)&&delete f.encode}return Zdt(Zdt({scale:c,orient:a},f),{},{domain:!1,labels:!1,aria:!1,maxExtent:0,minExtent:0,ticks:!1,zindex:T9(s,0)})}if(r.header||!t.mainExtracted){if(void 0!==l){var E,M=l;null!==(E=f.encode)&&void 0!==E&&null!==(E=E.labels)&&void 0!==E&&E.update&&zet(f.encode.labels.update.text)&&(M=P9(l,"datum.label",f.encode.labels.update.text.signal)),Fdt(f,"labels","text",{signal:M})}if(null===f.labelAlign&&delete f.labelAlign,f.encode){var A,P=_dt(pat);try{for(P.s();!(A=P.n()).done;){var _=A.value;t.hasAxisPart(_)||delete f.encode[_]}}catch(T){P.e(T)}finally{P.f()}g9(f.encode)&&delete f.encode}var D=function(t,e){if(t)return qy(t)&&!Bet(t)?t.map((function(t){return Kot(t,e)})).join(", "):t}(u,n);return Zdt(Zdt(Zdt(Zdt({scale:c,orient:a,grid:!1},D?{title:D}:{}),f),!1===n.aria?{aria:!1}:{}),{},{zindex:T9(s,0)})}}}function Idt(t){var e,n=t.component.axes,r=[],i=_dt(Qtt);try{for(i.s();!(e=i.n()).done;){var o=e.value;if(n[o]){var a,c=_dt(n[o]);try{for(c.s();!(a=c.n()).done;){var l=a.value;if(!l.get("disable")&&!l.get("gridScale")){var u="x"===o?"height":"width",s=t.getSizeSignalRef(u).signal;u!==s&&r.push({name:u,update:s})}}}catch(f){c.e(f)}finally{c.f()}}}}catch(f){i.e(f)}finally{i.f()}return r}function Rdt(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return Ldt(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Ldt(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Ldt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n3&&void 0!==arguments[3]?arguments[3]:{},i=fnt(t,n,e);if(void 0!==i)return{configFrom:"style",configValue:i};for(var o=0,a=["vlOnlyAxisConfig","vgAxisConfig","axisConfigStyle"];o=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Jdt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function opt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n2&&void 0!==arguments[2]?arguments[2]:"middle"){case"start":return{align:"left"};case"end":return{align:"right"}}var n=Vdt(e,"row"===t?"left":"top","row"===t?"y":"x");return n?{align:n}:{}}function spt(t,e){var n=Wdt(t,"row"===e?"left":"top","row"===e?"y":"x",!0);return n?{baseline:n}:{}}function fpt(t,e){var n,r=t.component.layoutHeaders[e],i=[],o=ipt(rpt);try{for(o.s();!(n=o.n()).done;){var a=n.value;if(r[a]){var c,l=ipt(r[a]);try{for(l.s();!(c=l.n()).done;){var u=ppt(t,e,a,r,c.value);null!=u&&i.push(u)}}catch(s){l.e(s)}finally{l.f()}}}}catch(s){o.e(s)}finally{o.f()}return i}function hpt(t,e){var n,r=t.sort;return fot(r)?{field:Wot(r,{expr:"datum"}),order:null!==(n=r.order)&&void 0!==n?n:"ascending"}:qy(r)?{field:$dt(t,e,{expr:"datum"}),order:"ascending"}:{field:Wot(t,{expr:"datum"}),order:null!=r?r:"ascending"}}function dpt(t,e,n){var r=ept(["format","formatType","labelAngle","labelAnchor","labelOrient","labelExpr"],t.header,n,e),i=r.format,o=r.formatType,a=r.labelAngle,c=r.labelAnchor,l=r.labelOrient,u=r.labelExpr,s=Jit({fieldOrDatumDef:t,format:i,formatType:o,expr:"parent",config:n}).signal,f=Qdt(e,l);return cpt(cpt(cpt(cpt({text:{signal:u?P9(P9(u,"datum.label",s),"datum.value",Wot(t,{expr:"parent"})):s}},"row"===e?{orient:"left"}:{}),{},{style:"guide-label",frame:"group"},spt(a,f)),upt(f,a,c)),mpt(n,t,e,Pct,Mct))}function ppt(t,e,n,r,i){if(i){var o=null,a=r.facetFieldDef,c=t.config?t.config:void 0;if(a&&i.labels){var l=ept(["labelOrient"],a.header,c,e).labelOrient;("row"===e&&!o9(["top","bottom"],l)||"column"===e&&!o9(["left","right"],l))&&(o=dpt(a,e,c))}var u=lyt(t)&&!dot(t.facet),s=i.axes,f=(null==s?void 0:s.length)>0;if(o||f){var h="row"===e?"height":"width";return cpt(cpt(cpt(cpt(cpt({name:t.getName("".concat(e,"_").concat(n)),type:"group",role:"".concat(e,"-").concat(n)},r.facetFieldDef?{from:{data:t.getName("".concat(e,"_domain"))},sort:hpt(a,e)}:{}),f&&u?{from:{data:t.getName("facet_domain_".concat(e))}}:{}),o?{title:o}:{}),i.sizeSignal?{encode:{update:(0,V.Z)({},h,i.sizeSignal)}}:{}),f?{axes:s}:{})}}return null}var vpt={column:{start:0,end:1},row:{start:1,end:0}};function gpt(t,e){return vpt[e][t]}function mpt(t,e,n,r,i){var o,a={},c=ipt(r);try{for(c.s();!(o=c.n()).done;){var l=o.value;if(i[l]){var u=tpt(l,null==e?void 0:e.header,t,n);void 0!==u&&(a[i[l]]=u)}}}catch(s){c.e(s)}finally{c.f()}return a}function ypt(t){return[].concat((0,Xm.Z)(bpt(t,"width")),(0,Xm.Z)(bpt(t,"height")),(0,Xm.Z)(bpt(t,"childWidth")),(0,Xm.Z)(bpt(t,"childHeight")))}function bpt(t,e){var n="width"===e?"x":"y",r=t.component.layoutSize.get(e);if(!r||"merged"===r)return[];var i=t.getSizeSignalRef(e).signal;if("step"===r){var o=t.getScaleComponent(n);if(o){var a=o.get("type"),c=o.get("range");if(iit(a)&&Uet(c)){var l=t.scaleName(n);if(lyt(t.parent))if("independent"===t.parent.component.resolve.scale[n])return[xpt(l,c)];return[xpt(l,c),{name:i,update:wpt(l,o,"domain('".concat(l,"').length"))}]}}throw new Error("layout size is step although width/height is not step.")}if("container"==r){var u=i.endsWith("width"),s=u?"containerSize()[0]":"containerSize()[1]",f=ilt(t.config.view,u?"width":"height"),h="isFinite(".concat(s,") ? ").concat(s," : ").concat(f);return[{name:i,init:h,on:[{update:h,events:"window:resize"}]}]}return[{name:i,value:r}]}function xpt(t,e){var n="".concat(t,"_step");return zet(e.step)?{name:n,update:e.step.signal}:{name:n,value:e.step}}function wpt(t,e,n){var r=e.get("type"),i=e.get("padding"),o=T9(e.get("paddingOuter"),i),a=e.get("paddingInner");return a="band"===r?void 0!==a?a:i:1,"bandspace(".concat(n,", ").concat(ant(a),", ").concat(ant(o),") * ").concat(t,"_step")}function Spt(t){return"childWidth"===t?"width":"childHeight"===t?"height":t}function kpt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Cpt(t){for(var e=1;e= 0))")})).join(" || ")}}var zpt={direction:function(t){return t.direction},format:function(t){var e=t.fieldOrDatumDef,n=t.legend,r=t.config,i=n.format,o=n.formatType;return eot(e,e.type,i,o,r,!1)},formatType:function(t){var e=t.legend,n=t.fieldOrDatumDef,r=t.scaleType,i=e.formatType;return not(i,n,r)},gradientLength:function(t){var e,n,r=t.legend,i=t.legendConfig;return null!==(e=null!==(n=r.gradientLength)&&void 0!==n?n:i.gradientLength)&&void 0!==e?e:function(t){var e=t.legendConfig,n=t.model,r=t.direction,i=t.orient,o=t.scaleType,a=e.gradientHorizontalMaxLength,c=e.gradientHorizontalMinLength,l=e.gradientVerticalMaxLength,u=e.gradientVerticalMinLength;if(ait(o))return"horizontal"===r?"top"===i||"bottom"===i?Wpt(n,"width",c,a):c:Wpt(n,"height",u,l);return}(t)},labelOverlap:function(t){var e,n,r=t.legend,i=t.legendConfig,o=t.scaleType;return null!==(e=null!==(n=r.labelOverlap)&&void 0!==n?n:i.labelOverlap)&&void 0!==e?e:function(t){if(o9(["quantile","threshold","log","symlog"],t))return"greedy";return}(o)},symbolType:function(t){var e,n=t.legend,r=t.markDef,i=t.channel,o=t.encoding;return null!==(e=n.symbolType)&&void 0!==e?e:function(t,e,n,r){if("shape"!==e){var i,o=null!==(i=Lpt(n))&&void 0!==i?i:r;if(o)return o}switch(t){case"bar":case"rect":case"image":case"square":return"square";case"line":case"trail":case"rule":return"stroke";case"arc":case"point":case"circle":case"tick":case"geoshape":case"area":case"text":return"circle"}}(r.type,i,o.shape,r.shape)},title:function(t){return Yot(t.fieldOrDatumDef,t.config,{allowDisabling:!0})},type:function(t){var e=t.legendType,n=t.scaleType;if(Dtt(t.channel)&&ait(n)){if("gradient"===e)return}else if("symbol"===e)return;return e},values:function(t){var e=t.fieldOrDatumDef;return function(t,e){var n=t.values;if(qy(n))return lat(e,n);if(zet(n))return n;return}(t.legend,e)}};function Upt(t){return T9(t.legend.type,function(t){var e=t.channel,n=t.timeUnit,r=t.scaleType;if(Dtt(e)){if(o9(["quarter","month","day"],n))return"symbol";if(ait(r))return"gradient"}return"symbol"}(t))}function Hpt(t){var e,n,r=t.legendConfig,i=t.legendType,o=t.orient;return null!==(e=null!==(n=t.legend.direction)&&void 0!==n?n:r[i?"gradientDirection":"symbolDirection"])&&void 0!==e?e:function(t,e){switch(t){case"top":case"bottom":return"horizontal";case"left":case"right":case"none":case void 0:return;default:return"gradient"===e?"horizontal":void 0}}(o,i)}function Wpt(t,e,n,r){var i=t.getSizeSignalRef(e).signal;return{signal:"clamp(".concat(i,", ").concat(n,", ").concat(r,")")}}function Vpt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Gpt(t){for(var e=1;e=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function qpt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function evt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n1?"[".concat(o.join(", "),"]"):o[0]}},n)]}return[ivt(ivt({name:r},{translate:{signal:"[width / 2, height / 2]"}}),n)]}var cvt=["type","clipAngle","clipExtent","center","rotate","precision","reflectX","reflectY","coefficient","distance","fraction","lobes","parallel","radius","ratio","spacing","tilt"];function lvt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function uvt(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(F2t){return!1}}();return function(){var n,r=(0,Um.Z)(t);if(e){var i=(0,Um.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,zm.Z)(this,n)}}var svt=function(t){(0,Bm.Z)(n,t);var e=uvt(n);function n(t,r,i,o){var a;return(0,Rm.Z)(this,n),a=e.call(this,function(t){for(var e=1;e=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function hvt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Svt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Tvt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Lvt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0){o[l]=!0;break}}}catch(b){d.e(b)}finally{d.f()}}}catch(b){u.e(b)}finally{u.f()}if(o[l]){var v='length(data("'.concat(this.facet.name,'"))'),g="row"===l?n?{signal:"ceil(".concat(v," / ").concat(n,")")}:1:n?{signal:"min(".concat(v,", ").concat(n,")")}:{signal:v};i.push({name:"".concat(this.facet.name,"_").concat(l),transform:[{type:"sequence",start:0,stop:g}]})}}}catch(b){a.e(b)}finally{a.f()}var m=o.row,y=o.column;return(m||y)&&i.unshift(this.assembleRowColumnHeaderData("facet",null,t)),i}},{key:"assemble",value:function(){var t=[],e=null,n=this.getChildIndependentFieldsWithStep(),r=this.column,i=this.row,o=this.facet;if(r&&i&&(n.x||n.y)){var a,c;e="cross_".concat(this.column.name,"_").concat(this.row.name);var l=[].concat(null!==(a=n.x)&&void 0!==a?a:[],null!==(c=n.y)&&void 0!==c?c:[]),u=l.map((function(){return"distinct"}));t.push({name:e,source:this.data,transform:[{type:"aggregate",groupby:this.fields,fields:l,ops:u}]})}for(var s=0,f=[H9,U9];s=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Hvt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n1?t.field in e||(e[t.field]="flatten"):Not(t)&&fot(t.sort)&&D9(t.sort.field)>1&&(t.sort.field in e||(e[t.sort.field]="flatten"))}if((cyt(t)||lyt(t))&&t.forEachFieldDef((function(e,r){if(Rot(e))n(e);else{var i=Utt(r),o=t.fieldDef(i);n(Vvt(Vvt({},e),{},{type:o.type}))}})),cyt(t)){var r=t.mark,i=t.markDef,o=t.encoding;if(Pit(r)&&!t.encoding.order){var a=o["horizontal"===i.orient?"y":"x"];_ot(a)&&"quantitative"===a.type&&!(a.field in e)&&(e[a.field]="number")}}return e}var Yvt=function(t){(0,Bm.Z)(n,t);var e=zvt(n);function n(t,r){var i;return(0,Rm.Z)(this,n),(i=e.call(this,t))._parse=r,i}return(0,Lm.Z)(n,[{key:"clone",value:function(){return new n(null,J7(this._parse))}},{key:"hash",value:function(){return"Parse ".concat(r9(this._parse))}},{key:"parse",get:function(){return this._parse}},{key:"merge",value:function(t){this._parse=Vvt(Vvt({},this._parse),t.parse),t.remove()}},{key:"assembleFormatParse",value:function(){var t,e={},n=Uvt(m9(this._parse));try{for(n.s();!(t=n.n()).done;){var r=t.value,i=this._parse[r];1===D9(r)&&(e[r]=i)}}catch(o){n.e(o)}finally{n.f()}return e}},{key:"producedFields",value:function(){return new Set(m9(this._parse))}},{key:"dependentFields",value:function(){return new Set(m9(this._parse))}},{key:"assembleTransforms",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return m9(this._parse).filter((function(t){return!e||D9(t)>1})).map((function(e){var n=function(t,e){var n=O9(t);if("number"===e)return"toNumber(".concat(n,")");if("boolean"===e)return"toBoolean(".concat(n,")");if("string"===e)return"toString(".concat(n,")");if("date"===e)return"toDate(".concat(n,")");if("flatten"===e)return n;if(e.startsWith("date:")){var r=Gvt(e.slice(5,e.length));return"timeParse(".concat(n,",'").concat(r,"')")}if(e.startsWith("utc:")){var i=Gvt(e.slice(4,e.length));return"utcParse(".concat(n,",'").concat(i,"')")}return $nt('Unrecognized parse "'.concat(e,'".')),null}(e,t._parse[e]);return n?{type:"formula",expr:n,as:_9(e)}:null})).filter((function(t){return null!==t}))}}],[{key:"makeExplicit",value:function(t,e,n){var r,i={},o=e.data;return!Ust(o)&&null!=o&&null!==(r=o.format)&&void 0!==r&&r.parse&&(i=o.format.parse),this.makeWithAncestors(t,i,{},n)}},{key:"makeWithAncestors",value:function(t,e,r,i){var o,a=Uvt(m9(r));try{for(a.s();!(o=a.n()).done;){var c=o.value,l=i.getWithExplicit(c);void 0!==l.value&&(l.explicit||l.value===r[c]||"derived"===l.value||"flatten"===r[c]?delete r[c]:$nt(Mnt(c,r[c],l.value)))}}catch(b){a.e(b)}finally{a.f()}var u,s=Uvt(m9(e));try{for(s.s();!(u=s.n()).done;){var f=u.value,h=i.get(f);void 0!==h&&(h===e[f]?delete e[f]:$nt(Mnt(f,e[f],h)))}}catch(b){s.e(b)}finally{s.f()}var d=new _st(e,r);i.copyAll(d);var p,v={},g=Uvt(m9(d.combine()));try{for(g.s();!(p=g.n()).done;){var m=p.value,y=d.get(m);null!==y&&(v[m]=y)}}catch(b){g.e(b)}finally{g.f()}return 0===m9(v).length||i.parseNothing?null:new n(t,v)}}]),n}(nft);function $vt(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(F2t){return!1}}();return function(){var n,r=(0,Um.Z)(t);if(e){var i=(0,Um.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,zm.Z)(this,n)}}var Kvt=function(t){(0,Bm.Z)(n,t);var e=$vt(n);function n(t){return(0,Rm.Z)(this,n),e.call(this,t)}return(0,Lm.Z)(n,[{key:"clone",value:function(){return new n(null)}},{key:"dependentFields",value:function(){return new Set}},{key:"producedFields",value:function(){return new Set([Zct])}},{key:"hash",value:function(){return"Identifier"}},{key:"assemble",value:function(){return{type:"identifier",as:Zct}}}]),n}(nft);function Jvt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Qvt(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(F2t){return!1}}();return function(){var n,r=(0,Um.Z)(t);if(e){var i=(0,Um.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,zm.Z)(this,n)}}var tgt=function(t){(0,Bm.Z)(n,t);var e=Qvt(n);function n(t,r){var i;return(0,Rm.Z)(this,n),(i=e.call(this,t)).params=r,i}return(0,Lm.Z)(n,[{key:"clone",value:function(){return new n(null,this.params)}},{key:"dependentFields",value:function(){return new Set}},{key:"producedFields",value:function(){}},{key:"hash",value:function(){return"Graticule ".concat(r9(this.params))}},{key:"assemble",value:function(){return function(t){for(var e=1;e=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function ugt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function bgt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n1&&(this.setModified(),this.mergeNodes(t,n[a]))}}catch(c){o.e(c)}finally{o.f()}}}]),n}(mgt),Sgt=function(t){(0,Bm.Z)(n,t);var e=xgt(n);function n(t){var r;return(0,Rm.Z)(this,n),(r=e.call(this)).requiresSelectionId=t&&hdt(t),r}return(0,Lm.Z)(n,[{key:"run",value:function(t){t instanceof Kvt&&(this.requiresSelectionId&&(pgt(t.parent)||t.parent instanceof Fvt||t.parent instanceof Yvt)||(this.setModified(),t.remove()))}}]),n}(mgt),kgt=function(t){(0,Bm.Z)(n,t);var e=xgt(n);function n(){return(0,Rm.Z)(this,n),e.apply(this,arguments)}return(0,Lm.Z)(n,[{key:"optimize",value:function(t){return this.run(t,new Set),this.modifiedFlag}},{key:"run",value:function(t,e){var n=new Set;t instanceof dft&&d9(n=t.producedFields(),e)&&(this.setModified(),t.removeFormulas(e),0===t.producedFields.length&&t.remove());var r,i=ygt(t.children);try{for(i.s();!(r=i.n()).done;){var o=r.value;this.run(o,new Set([].concat((0,Xm.Z)(e),(0,Xm.Z)(n))))}}catch(a){i.e(a)}finally{i.f()}}}]),n}(vgt),Cgt=function(t){(0,Bm.Z)(n,t);var e=xgt(n);function n(){return(0,Rm.Z)(this,n),e.call(this)}return(0,Lm.Z)(n,[{key:"run",value:function(t){t instanceof rft&&!t.isRequired()&&(this.setModified(),t.remove())}}]),n}(mgt),Ogt=function(t){(0,Bm.Z)(n,t);var e=xgt(n);function n(){return(0,Rm.Z)(this,n),e.apply(this,arguments)}return(0,Lm.Z)(n,[{key:"run",value:function(t){if(!(pgt(t)||t.numChildren()>1)){var e,n=ygt(t.children);try{for(n.s();!(e=n.n()).done;){var r=e.value;if(r instanceof Yvt)if(t instanceof Yvt)this.setModified(),t.merge(r);else{if(v9(t.producedFields(),r.dependentFields()))continue;this.setModified(),r.swapWithParent()}}}catch(i){n.e(i)}finally{n.f()}}}}]),n}(ggt),Egt=function(t){(0,Bm.Z)(n,t);var e=xgt(n);function n(){return(0,Rm.Z)(this,n),e.apply(this,arguments)}return(0,Lm.Z)(n,[{key:"run",value:function(t){var e=(0,Xm.Z)(t.children),n=t.children.filter((function(t){return t instanceof Yvt}));if(t.numChildren()>1&&n.length>=1){var r,i={},o=new Set,a=ygt(n);try{for(a.s();!(r=a.n()).done;){var c,l=r.value.parse,u=ygt(m9(l));try{for(u.s();!(c=u.n()).done;){var s=c.value;s in i?i[s]!==l[s]&&o.add(s):i[s]=l[s]}}catch(x){u.e(x)}finally{u.f()}}}catch(x){a.e(x)}finally{a.f()}var f,h=ygt(o);try{for(h.s();!(f=h.n()).done;){delete i[f.value]}}catch(x){h.e(x)}finally{h.f()}if(!g9(i)){this.setModified();var d,p=new Yvt(t,i),v=ygt(e);try{for(v.s();!(d=v.n()).done;){var g=d.value;if(g instanceof Yvt){var m,y=ygt(m9(i));try{for(y.s();!(m=y.n()).done;){var b=m.value;delete g.parse[b]}}catch(x){y.e(x)}finally{y.f()}}t.removeChild(g),g.parent=p,g instanceof Yvt&&0===m9(g.parse).length&&g.remove()}}catch(x){v.e(x)}finally{v.f()}}}}}]),n}(ggt),Mgt=function(t){(0,Bm.Z)(n,t);var e=xgt(n);function n(){return(0,Rm.Z)(this,n),e.apply(this,arguments)}return(0,Lm.Z)(n,[{key:"run",value:function(t){t instanceof rft||t.numChildren()>0||t instanceof Bvt||t instanceof cgt||(this.setModified(),t.remove())}}]),n}(ggt),Agt=function(t){(0,Bm.Z)(n,t);var e=xgt(n);function n(){return(0,Rm.Z)(this,n),e.apply(this,arguments)}return(0,Lm.Z)(n,[{key:"run",value:function(t){var e,n=t.children.filter((function(t){return t instanceof dft})),r=n.pop(),i=ygt(n);try{for(i.s();!(e=i.n()).done;){var o=e.value;this.setModified(),r.merge(o)}}catch(a){i.e(a)}finally{i.f()}}}]),n}(ggt),Pgt=function(t){(0,Bm.Z)(n,t);var e=xgt(n);function n(){return(0,Rm.Z)(this,n),e.apply(this,arguments)}return(0,Lm.Z)(n,[{key:"run",value:function(t){var e,n={},r=ygt(t.children.filter((function(t){return t instanceof Fvt})));try{for(r.s();!(e=r.n()).done;){var i=e.value,o=r9(i.groupBy);o in n||(n[o]=[]),n[o].push(i)}}catch(d){r.e(d)}finally{r.f()}var a,c=ygt(m9(n));try{for(c.s();!(a=c.n()).done;){var l=n[a.value];if(l.length>1){var u,s=l.pop(),f=ygt(l);try{for(f.s();!(u=f.n()).done;){var h=u.value;s.merge(h)&&(t.removeChild(h),h.parent=s,h.remove(),this.setModified())}}catch(d){f.e(d)}finally{f.f()}}}}catch(d){c.e(d)}finally{c.f()}}}]),n}(ggt),_gt=function(t){(0,Bm.Z)(n,t);var e=xgt(n);function n(t){var r;return(0,Rm.Z)(this,n),(r=e.call(this)).model=t,r}return(0,Lm.Z)(n,[{key:"run",value:function(t){var e,n=!(pgt(t)||t instanceof ydt||t instanceof Yvt||t instanceof Kvt),r=[],i=[],o=ygt(t.children);try{for(o.s();!(e=o.n()).done;){var a=e.value;a instanceof Pvt&&(n&&!v9(t.producedFields(),a.dependentFields())?r.push(a):i.push(a))}}catch(v){o.e(v)}finally{o.f()}if(r.length>0){var c,l=r.pop(),u=ygt(r);try{for(u.s();!(c=u.n()).done;){var s=c.value;l.merge(s,this.model.renameSignal.bind(this.model))}}catch(v){u.e(v)}finally{u.f()}this.setModified(),t instanceof Pvt?t.merge(l,this.model.renameSignal.bind(this.model)):l.swapWithParent()}if(i.length>1){var f,h=i.pop(),d=ygt(i);try{for(d.s();!(f=d.n()).done;){var p=f.value;h.merge(p,this.model.renameSignal.bind(this.model))}}catch(v){d.e(v)}finally{d.f()}this.setModified()}}}]),n}(ggt),Dgt=function(t){(0,Bm.Z)(n,t);var e=xgt(n);function n(){return(0,Rm.Z)(this,n),e.apply(this,arguments)}return(0,Lm.Z)(n,[{key:"run",value:function(t){var e=(0,Xm.Z)(t.children),n=a9(e,(function(t){return t instanceof rft}));if(n&&!(t.numChildren()<=1)){var r,i,o=[],a=ygt(e);try{for(a.s();!(i=a.n()).done;){var c=i.value;if(c instanceof rft){for(var l=c;1===l.numChildren();){var u=(0,G.Z)(l.children,1)[0];if(!(u instanceof rft))break;l=u}o.push.apply(o,(0,Xm.Z)(l.children)),r?(t.removeChild(c),c.parent=r.parent,r.parent.removeChild(r),r.parent=l,this.setModified()):r=l}else o.push(c)}}catch(d){a.e(d)}finally{a.f()}if(o.length){this.setModified();var s,f=ygt(o);try{for(f.s();!(s=f.n()).done;){var h=s.value;h.parent.removeChild(h),h.parent=r}}catch(d){f.e(d)}finally{f.f()}}}}}]),n}(ggt);function Tgt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Zgt(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return Fgt(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Fgt(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Fgt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Lgt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0?e.map((function(t){return t.bin?n?[Wot(t,{binSuffix:"mid"})]:[Wot(t,{}),Wot(t,{binSuffix:"end"})]:[Wot(t)]})).flat():null!=r?r:[]}},{key:"assemble",value:function(){var t=[],e=this._stack,n=e.facetby,r=e.dimensionFieldDefs,i=e.stackField,o=e.stackby,a=e.sort,c=e.offset,l=e.impute,u=e.as;if(l){var s,f=Rgt(r);try{for(f.s();!(s=f.n()).done;){var h=s.value,d=h.bandPosition,p=void 0===d?.5:d;if(h.bin){var v=Wot(h,{expr:"datum"}),g=Wot(h,{expr:"datum",binSuffix:"end"});t.push({type:"formula",expr:"".concat(p,"*").concat(v,"+").concat(1-p,"*").concat(g),as:Wot(h,{binSuffix:"mid",forAs:!0})})}t.push({type:"impute",field:i,groupby:[].concat((0,Xm.Z)(o),(0,Xm.Z)(n)),key:Wot(h,{binSuffix:"mid"}),method:"value",value:0})}}catch(m){f.e(m)}finally{f.f()}}return t.push({type:"stack",groupby:[].concat((0,Xm.Z)(this.getGroupbyFields()),(0,Xm.Z)(n)),field:i,sort:a,as:u,offset:c}),t}}],[{key:"makeFromTransform",value:function(t,e){var r=e.stack,i=e.groupby,o=e.as,a=e.offset,c=void 0===a?"zero":a,l=[],u=[];if(void 0!==e.sort){var s,f=Rgt(e.sort);try{for(f.s();!(s=f.n()).done;){var h=s.value;l.push(h.field),u.push(T9(h.order,"ascending"))}}catch(v){f.e(v)}finally{f.f()}}var d,p={field:l,order:u};return d=function(t){return qy(t)&&t.every((function(t){return Vb(t)}))&&t.length>1}(o)?o:Vb(o)?[o,"".concat(o,"_end")]:["".concat(e.stack,"_start"),"".concat(e.stack,"_end")],new n(t,{dimensionFieldDefs:[],stackField:r,groupby:i,offset:c,sort:p,facetby:[],as:d})}},{key:"makeFromEncoding",value:function(t,e){var r=e.stack,i=e.encoding;if(!r)return null;var o,a=r.groupbyChannels,c=r.fieldChannel,l=r.offset,u=r.impute,s=a.map((function(t){return Qot(i[t])})).filter((function(t){return!!t})),f=function(t){return t.stack.stackBy.reduce((function(t,e){var n=Wot(e.fieldDef);return n&&t.push(n),t}),[])}(e),h=e.encoding.order;if(qy(h)||_ot(h))o=hnt(h);else{var d=Eot(h)?h.sort:"y"===c?"descending":"ascending";o=f.reduce((function(t,e){return t.field.push(e),t.order.push(d),t}),{field:[],order:[]})}return new n(t,{dimensionFieldDefs:s,stackField:e.vgField(c),facetby:[],stackby:f,sort:o,offset:l,impute:u,as:[e.vgField(c,{suffix:"start",forAs:!0}),e.vgField(c,{suffix:"end",forAs:!0})]})}}]),n}(nft);function zgt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Ugt(t){for(var e=1;e=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Wgt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function qgt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Jgt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0})),i=nmt(new Mgt,r)||i,r=r.filter((function(t){return t.numChildren()>0})),n||(i=nmt(new Ogt,r)||i,i=nmt(new _gt(e),r)||i,i=nmt(new kgt,r)||i,i=nmt(new Egt,r)||i,i=nmt(new Pgt,r)||i,i=nmt(new Agt,r)||i,i=nmt(new wgt,r)||i,i=nmt(new Dgt,r)||i),t.sources=r,i}var imt=function(){function t(e){(0,Rm.Z)(this,t),Object.defineProperty(this,"signal",{enumerable:!0,get:e})}return(0,Lm.Z)(t,null,[{key:"fromName",value:function(e,n){return new t((function(){return e(n)}))}}]),t}(),omt=["sort"];function amt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function cmt(t){for(var e=1;e=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function umt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0){var i=n[0];if(n.length>1){$nt(Hnt);var o=n.filter((function(t){return Yy(t)&&"op"in t&&"min"!==t.op}));i=!n.every((function(t){return Yy(t)&&"op"in t}))||1!==o.length||o[0]}else if(Yy(i)&&"field"in i){var a=i.field;r.field===a&&(i=!i.order||{order:i.order})}return cmt(cmt({},r),{},{sort:i})}return r}var c,l=s9(n.map((function(t){return x9(t)||!("op"in t)||Vb(t.op)&&t.op in met?t:($nt(function(t){return"Dropping sort property ".concat(n9(t),' as unioned domains only support boolean or op "count", "min", and "max".')}(t)),!0)})),r9);1===l.length?c=l[0]:l.length>1&&($nt(Hnt),c=!0);var u=s9(t.map((function(t){return Het(t)?t.data:null})),(function(t){return t}));return 1===u.length&&null!==u[0]?cmt({data:u[0],fields:e.map((function(t){return t.field}))},c?{sort:c}:{}):cmt({fields:e},c?{sort:c}:{})}}function bmt(t){if(Het(t)&&Vb(t.field))return t.field;if(function(t){return!qy(t)&&"fields"in t&&!("data"in t)}(t)){var e,n,r=lmt(t.fields);try{for(r.s();!(n=r.n()).done;){var i=n.value;if(Het(i)&&Vb(i.field))if(e){if(e!==i.field)return $nt("Detected faceted independent scales that union domain of multiple fields from different data sources. We will use the first field. The result view size may be incorrect."),e}else e=i.field}}catch(a){r.e(a)}finally{r.f()}return $nt("Detected faceted independent scales that union domain of the same fields from different source. We will assume that this is the same field from a different fork of the same data source. However, if this is not the case, the result view size may be incorrect."),e}if(function(t){return!qy(t)&&"fields"in t&&"data"in t}(t)){$nt("Detected faceted independent scales that union domain of multiple fields from the same data source. We will use the first field. The result view size may be incorrect.");var o=t.fields[0];return Vb(o)?o:void 0}}function xmt(t,e){var n=t.component.scales[e].get("domains").map((function(e){return Het(e)&&(e.data=t.lookupDataSource(e.data)),e}));return ymt(n)}var wmt=["name","type","selectionExtent","domains","range","reverse"];function Smt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function kmt(t){for(var e=1;er[1]?"isValid(".concat(i,") && reverse(").concat(i,")"):i}}(t,c,r,f):null;return e.push(kmt(kmt(kmt(kmt({name:o,type:a},f?{domain:f}:{}),h?{domainRaw:h}:{}),{},{range:s},void 0!==l?{reverse:l}:{}),u)),e}),[])}function Emt(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(F2t){return!1}}();return function(){var n,r=(0,Um.Z)(t);if(e){var i=(0,Um.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,zm.Z)(this,n)}}var Mmt=function(t){(0,Bm.Z)(n,t);var e=Emt(n);function n(t,r){var i;return(0,Rm.Z)(this,n),(i=e.call(this,{},{name:t})).merged=!1,i.setWithExplicit("type",r),i}return(0,Lm.Z)(n,[{key:"domainDefinitelyIncludesZero",value:function(){return!1!==this.get("zero")||a9(this.get("domains"),(function(t){return qy(t)&&2===t.length&&t[0]<=0&&t[1]>=0}))}}]),n}(_st);function Amt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Pmt(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return _mt(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _mt(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function _mt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Umt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n5&&void 0!==arguments[5]&&arguments[5];if(void 0!==t)return;if(tet(e)){var a=i.bandPaddingInner,c=i.barBandPaddingInner,l=i.rectBandPaddingInner,u=i.bandWithNestedOffsetPaddingInner;return o?u:T9(a,"bar"===n?c:l)}if(oet(e)&&r===Xrt.BAND)return i.offsetBandPaddingInner;return}(e,n,r.type,i,o.scale,a)},paddingOuter:function(t){var e=t.scalePadding,n=t.channel,r=t.scaleType,i=t.scalePaddingInner,o=t.config,a=t.hasNestedOffsetScale;return function(t,e,n,r,i){var o=arguments.length>5&&void 0!==arguments[5]&&arguments[5];if(void 0!==t)return;if(tet(e)){var a=i.bandPaddingOuter,c=i.bandWithNestedOffsetPaddingOuter;if(o)return c;if(n===Xrt.BAND)return T9(a,zet(r)?{signal:"".concat(r.signal,"/2")}:r/2)}else if(oet(e)){if(n===Xrt.POINT)return.5;if(n===Xrt.BAND)return i.offsetBandPaddingOuter}return}(e,n,r,i,o.scale,a)},reverse:function(t){var e=t.fieldOrDatumDef,n=t.scaleType,r=t.channel,i=t.config;return function(t,e,n,r){if("x"===n&&void 0!==r.xReverse)return oit(t)&&"descending"===e?zet(r.xReverse)?{signal:"!".concat(r.xReverse.signal)}:!r.xReverse:r.xReverse;if(oit(t)&&"descending"===e)return!0;return}(n,_ot(e)?e.sort:void 0,r,i.scale)},zero:function(t){var e=t.channel,n=t.fieldOrDatumDef,r=t.domain,i=t.markDef,o=t.scaleType,a=t.config,c=t.hasSecondaryRangeChannel;return function(t,e,n,r,i,o,a){if(n&&"unaggregated"!==n&&oit(i)){if(qy(n)){var c=n[0],l=n[n.length-1];if(c<=0&&l>=0)return!0}return!1}if("size"===t&&"quantitative"===e.type&&!cit(i))return!0;if((!_ot(e)||!e.bin)&&o9([].concat((0,Xm.Z)(Qtt),(0,Xm.Z)(net)),t)){var u=r.orient,s=r.type;return(!o9(["bar","area","line","trail"],s)||!("horizontal"===u&&"y"===t||"vertical"===u&&"x"===t))&&(!(!o9(["bar","area"],s)||a)||(null==o?void 0:o.zero))}return!1}(e,n,r,i,o,a.scale,c)}};function Vmt(t){cyt(t)?function(t){var e,n=t.component.scales,r=Pmt(set);try{for(r.s();!(e=r.n()).done;){var i=e.value,o=n[i];if(o){var a=Zmt(i,t);o.setWithExplicit("range",a)}}}catch(c){r.e(c)}finally{r.f()}}(t):Gmt(t,"range")}function Gmt(t,e){var n,r=t.component.scales,i=zmt(t.children);try{for(i.s();!(n=i.n()).done;){var o=n.value;"range"===e?Vmt(o):Hmt(o,e)}}catch(d){i.e(d)}finally{i.f()}var a,c=zmt(m9(r));try{for(c.s();!(a=c.n()).done;){var l,u=a.value,s=void 0,f=zmt(t.children);try{for(f.s();!(l=f.n()).done;){var h=l.value.component.scales[u];if(h)s=jst(s,h.getWithExplicit(e),e,"scale",Zst((function(t,n){return"range"===e&&t.step&&n.step?t.step-n.step:0})))}}catch(d){f.e(d)}finally{f.f()}r[u].setWithExplicit(e,s)}}catch(d){c.e(d)}finally{c.f()}}function Xmt(t,e,n,r){var i,o,a=function(t,e,n,r){switch(e.type){case"nominal":case"ordinal":var i;if(Dtt(t)||"discrete"===vet(t))return"shape"===t&&"ordinal"===e.type&&$nt(Rnt(t,"ordinal")),"ordinal";if(tet(t)||oet(t)){if(o9(["rect","bar","image","rule"],n.type))return"band";if(r)return"band"}else if("arc"===n.type&&t in eet)return"band";return Iit(n[Vtt(t)])||Bot(e)&&null!==(i=e.axis)&&void 0!==i&&i.tickBand?"band":"point";case"temporal":return Dtt(t)?"time":"discrete"===vet(t)?($nt(Rnt(t,"temporal")),"ordinal"):_ot(e)&&e.timeUnit&&Srt(e.timeUnit).utc?"utc":"time";case"quantitative":return Dtt(t)?_ot(e)&&Met(e.bin)?"bin-ordinal":"linear":"discrete"===vet(t)?($nt(Rnt(t,"quantitative")),"ordinal"):"linear";case"geojson":return}throw new Error(_nt(e.type))}(e,n,r,arguments.length>4&&void 0!==arguments[4]&&arguments[4]),c=t.type;return fet(e)?void 0!==c?function(t,e){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!fet(t))return!1;switch(t){case V9:case G9:case Y9:case $9:case Q9:case K9:return!!ait(e)||"band"===e||"point"===e&&!n;case utt:case ptt:case ftt:case htt:case dtt:case stt:return ait(e)||cit(e)||o9(["band","point","ordinal"],e);case ott:case att:case ctt:return"band"!==e;case vtt:case ltt:return"ordinal"===e||cit(e)}}(e,c)?_ot(n)&&(i=c,o=n.type,!(o9([Hrt,Vrt],o)?void 0===i||iit(i):o===Wrt?o9([Xrt.TIME,Xrt.UTC,void 0],i):o!==Urt||tit(i)||cit(i)||void 0===i))?($nt(function(t,e){return'FieldDef does not work with "'.concat(t,'" scale. We are using "').concat(e,'" scale instead.')}(c,a)),a):c:($nt(function(t,e,n){return'Channel "'.concat(t,'" does not work with "').concat(e,'" scale. We are using "').concat(n,'" scale instead.')}(e,c,a)),a):a:null}function qmt(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return Ymt(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Ymt(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Ymt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function ryt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n1&&void 0!==arguments[1]?arguments[1]:{}).ignoreRange;$mt(t),smt(t);var n,r=qmt(fit);try{for(r.s();!(n=r.n()).done;)Hmt(t,n.value)}catch(i){r.e(i)}finally{r.f()}e||Vmt(t)}(this)}},{key:"parseProjection",value:function(){vvt(this)}},{key:"renameTopLevelLayoutSizeSignal",value:function(){"width"!==this.getName("width")&&this.renameSignal(this.getName("width"),"width"),"height"!==this.getName("height")&&this.renameSignal(this.getName("height"),"height")}},{key:"parseLegends",value:function(){Ypt(this)}},{key:"assembleEncodeFromView",value:function(t){t.style;var e,n=(0,I.Z)(t,Jmt),r={},i=nyt(m9(n));try{for(i.s();!(e=i.n()).done;){var o=e.value,a=n[o];void 0!==a&&(r[o]=rnt(a))}}catch(c){i.e(c)}finally{i.f()}return r}},{key:"assembleGroupEncodeEntry",value:function(t){var e,n={};if((this.view&&(n=this.assembleEncodeFromView(this.view)),!t)&&(this.description&&(n.description=rnt(this.description)),"unit"===this.type||"layer"===this.type))return oyt({width:this.getSizeSignalRef("width"),height:this.getSizeSignalRef("height")},null!==(e=n)&&void 0!==e?e:{});return g9(n)?void 0:n}},{key:"assembleLayout",value:function(){if(this.layout){var t=this.layout,e=t.spacing,n=(0,I.Z)(t,Qmt),r=this.component,i=this.config,o=function(t,e){var n,r={},i=ipt(Ztt);try{for(i.s();!(n=i.n()).done;){var o=n.value,a=t[o];if(null!=a&&a.facetFieldDef){var c=ept(["titleAnchor","titleOrient"],a.facetFieldDef.header,e,o),l=c.titleAnchor,u=Qdt(o,c.titleOrient),s=gpt(l,u);void 0!==s&&(r[u]=s)}}}catch(f){i.e(f)}finally{i.f()}return g9(r)?void 0:r}(r.layoutHeaders,i);return oyt(oyt(oyt({padding:e},this.assembleDefaultLayout()),n),o?{titleBand:o}:{})}}},{key:"assembleDefaultLayout",value:function(){return{}}},{key:"assembleHeaderMarks",value:function(){var t,e=this.component.layoutHeaders,n=[],r=nyt(Ztt);try{for(r.s();!(t=r.n()).done;){var i=t.value;e[i].title&&n.push(lpt(this,i))}}catch(l){r.e(l)}finally{r.f()}var o,a=nyt(npt);try{for(a.s();!(o=a.n()).done;){var c=o.value;n=n.concat(fpt(this,c))}}catch(l){a.e(l)}finally{a.f()}return n}},{key:"assembleAxes",value:function(){return function(t,e){var n=t.x,r=void 0===n?[]:n,i=t.y,o=void 0===i?[]:i;return[].concat((0,Xm.Z)(r.map((function(t){return jdt(t,"grid",e)}))),(0,Xm.Z)(o.map((function(t){return jdt(t,"grid",e)}))),(0,Xm.Z)(r.map((function(t){return jdt(t,"main",e)}))),(0,Xm.Z)(o.map((function(t){return jdt(t,"main",e)})))).filter((function(t){return t}))}(this.component.axes,this.config)}},{key:"assembleLegends",value:function(){return nvt(this)}},{key:"assembleProjections",value:function(){return ovt(this)}},{key:"assembleTitle",value:function(){var t,e=null!==(t=this.title)&&void 0!==t?t:{},n=e.encoding,r=(0,I.Z)(e,tyt),i=oyt(oyt(oyt({},Net(this.config.title).nonMarkTitleProperties),r),n?{encode:{update:n}}:{});if(i.text){var o,a;if(o9(["unit","layer"],this.type)){if(o9(["middle",void 0],i.anchor))null!==(o=i.frame)&&void 0!==o||(i.frame="group")}else null!==(a=i.anchor)&&void 0!==a||(i.anchor="start");return g9(i)?void 0:i}}},{key:"assembleGroup",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e={};(t=t.concat(this.assembleSignals())).length>0&&(e.signals=t);var n=this.assembleLayout();n&&(e.layout=n),e.marks=[].concat(this.assembleHeaderMarks(),this.assembleMarks());var r=!this.parent||lyt(this.parent)?Cmt(this):[];r.length>0&&(e.scales=r);var i=this.assembleAxes();i.length>0&&(e.axes=i);var o=this.assembleLegends();return o.length>0&&(e.legends=o),e}},{key:"getName",value:function(t){return w9((this.name?"".concat(this.name,"_"):"")+t)}},{key:"getDataName",value:function(t){return this.getName(Rst[t].toLowerCase())}},{key:"requestDataName",value:function(t){var e=this.getDataName(t),n=this.component.data.outputNodeRefCounts;return n[e]=(n[e]||0)+1,e}},{key:"getSizeSignalRef",value:function(t){if(lyt(this.parent)){var e=ret(Spt(t)),n=this.component.scales[e];if(n&&!n.merged){var r=n.get("type"),i=n.get("range");if(iit(r)&&Uet(i)){var o=n.get("name"),a=bmt(xmt(this,e));return a?{signal:wpt(o,n,Wot({aggregate:"distinct",field:a},{expr:"datum"}))}:($nt(wnt(e)),null)}}}return{signal:this.signalNameMap.get(this.getName(t))}}},{key:"lookupDataSource",value:function(t){var e=this.component.data.outputNodes[t];return e?e.getSource():t}},{key:"getSignalName",value:function(t){return this.signalNameMap.get(t)}},{key:"renameSignal",value:function(t,e){this.signalNameMap.rename(t,e)}},{key:"renameScale",value:function(t,e){this.scaleNameMap.rename(t,e)}},{key:"renameProjection",value:function(t,e){this.projectionNameMap.rename(t,e)}},{key:"scaleName",value:function(t,e){return e?this.getName(t):Ntt(t)&&fet(t)&&this.component.scales[t]||this.scaleNameMap.has(this.getName(t))?this.scaleNameMap.get(this.getName(t)):void 0}},{key:"projectionName",value:function(t){return t?this.getName("projection"):this.component.projection&&!this.component.projection.merged||this.projectionNameMap.has(this.getName("projection"))?this.projectionNameMap.get(this.getName("projection")):void 0}},{key:"getScaleComponent",value:function(t){if(!this.component.scales)throw new Error("getScaleComponent cannot be called before parseScale(). Make sure you have called parseScale or use parseUnitModelWithScale().");var e=this.component.scales[t];return e&&!e.merged?e:this.parent?this.parent.getScaleComponent(t):void 0}},{key:"getSelectionComponent",value:function(t,e){var n=this.component.selection[t];if(!n&&this.parent&&(n=this.parent.getSelectionComponent(t,e)),!n)throw new Error('Cannot find a selection named "'.concat(e,'".'));return n}},{key:"hasAxisOrientSignalRef",value:function(){var t,e;return(null===(t=this.component.axes.x)||void 0===t?void 0:t.some((function(t){return t.hasOrientSignalRef()})))||(null===(e=this.component.axes.y)||void 0===e?void 0:e.some((function(t){return t.hasOrientSignalRef()})))}}]),t}(),hyt=function(t){(0,Bm.Z)(n,t);var e=eyt(n);function n(){return(0,Rm.Z)(this,n),e.apply(this,arguments)}return(0,Lm.Z)(n,[{key:"vgField",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.fieldDef(t);if(n)return Wot(n,e)}},{key:"reduceFieldDef",value:function(t,e){return function(t,e,n,r){return t?m9(t).reduce((function(n,i){var o=t[i];return qy(o)?o.reduce((function(t,n){return e.call(r,t,n,i)}),n):e.call(r,n,o,i)}),n):n}(this.getMapping(),(function(e,n,r){var i=Qot(n);return i?t(e,i,r):e}),e)}},{key:"forEachFieldDef",value:function(t,e){Fat(this.getMapping(),(function(e,n){var r=Qot(e);r&&t(r,n)}),e)}}]),n}(fyt),dyt=["density"];function pyt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function vyt(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(F2t){return!1}}();return function(){var n,r=(0,Um.Z)(t);if(e){var i=(0,Um.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,zm.Z)(this,n)}}var gyt=function(t){(0,Bm.Z)(n,t);var e=vyt(n);function n(t,r){var i,o,a,c;(0,Rm.Z)(this,n),(c=e.call(this,t)).transform=r,c.transform=J7(r);var l=null!==(i=c.transform.as)&&void 0!==i?i:[void 0,void 0];return c.transform.as=[null!==(o=l[0])&&void 0!==o?o:"value",null!==(a=l[1])&&void 0!==a?a:"density"],r.groupby&&null==r.minsteps&&null==r.maxsteps&&null==r.steps&&(c.transform.steps=200),c}return(0,Lm.Z)(n,[{key:"clone",value:function(){return new n(null,J7(this.transform))}},{key:"dependentFields",value:function(){var t;return new Set([this.transform.density].concat((0,Xm.Z)(null!==(t=this.transform.groupby)&&void 0!==t?t:[])))}},{key:"producedFields",value:function(){return new Set(this.transform.as)}},{key:"hash",value:function(){return"DensityTransform ".concat(r9(this.transform))}},{key:"assemble",value:function(){var t=this.transform,e=function(t){for(var e=1;e0?{type:"filter",expr:e.join(" && ")}:null}}],[{key:"make",value:function(t,e){var r=e.config,i=e.mark;if("filter"!==lnt("invalid",e.markDef,r))return null;var o=e.reduceFieldDef((function(t,n,r){var o=fet(r)&&e.getScaleComponent(r);o&&(oit(o.get("type"))&&"count"!==n.aggregate&&!Pit(i)&&(t[n.field]=n));return t}),{});return m9(o).length?new n(t,o):null}}]),n}(nft);function Syt(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(F2t){return!1}}();return function(){var n,r=(0,Um.Z)(t);if(e){var i=(0,Um.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,zm.Z)(this,n)}}var kyt=function(t){(0,Bm.Z)(n,t);var e=Syt(n);function n(t,r){var i;(0,Rm.Z)(this,n),(i=e.call(this,t)).transform=r,i.transform=J7(r);var o=i.transform,a=o.flatten,c=o.as,l=void 0===c?[]:c;return i.transform.as=a.map((function(t,e){var n;return null!==(n=l[e])&&void 0!==n?n:t})),i}return(0,Lm.Z)(n,[{key:"clone",value:function(){return new n(this.parent,J7(this.transform))}},{key:"dependentFields",value:function(){return new Set(this.transform.flatten)}},{key:"producedFields",value:function(){return new Set(this.transform.as)}},{key:"hash",value:function(){return"FlattenTransform ".concat(r9(this.transform))}},{key:"assemble",value:function(){var t=this.transform;return{type:"flatten",fields:t.flatten,as:t.as}}}]),n}(nft);function Cyt(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(F2t){return!1}}();return function(){var n,r=(0,Um.Z)(t);if(e){var i=(0,Um.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,zm.Z)(this,n)}}var Oyt=function(t){(0,Bm.Z)(n,t);var e=Cyt(n);function n(t,r){var i,o,a,c;(0,Rm.Z)(this,n),(c=e.call(this,t)).transform=r,c.transform=J7(r);var l=null!==(i=c.transform.as)&&void 0!==i?i:[void 0,void 0];return c.transform.as=[null!==(o=l[0])&&void 0!==o?o:"key",null!==(a=l[1])&&void 0!==a?a:"value"],c}return(0,Lm.Z)(n,[{key:"clone",value:function(){return new n(null,J7(this.transform))}},{key:"dependentFields",value:function(){return new Set(this.transform.fold)}},{key:"producedFields",value:function(){return new Set(this.transform.as)}},{key:"hash",value:function(){return"FoldTransform ".concat(r9(this.transform))}},{key:"assemble",value:function(){var t=this.transform;return{type:"fold",fields:t.fold,as:t.as}}}]),n}(nft);function Eyt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Myt(t){for(var e=1;e=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function obt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0?(t.push(i),r.data=i.name):r.data=i.source,void t.push.apply(t,(0,Xm.Z)(r.assemble()));if((r instanceof tgt||r instanceof rgt||r instanceof wyt||r instanceof ydt||r instanceof Ydt||r instanceof Dyt||r instanceof Fvt||r instanceof Hyt||r instanceof Ggt||r instanceof Igt||r instanceof Oyt||r instanceof kyt||r instanceof gyt||r instanceof Nyt||r instanceof Xyt||r instanceof Kyt||r instanceof Kvt||r instanceof rbt||r instanceof ebt||r instanceof yyt)&&i.transform.push(r.assemble()),(r instanceof Pvt||r instanceof dft||r instanceof jyt||r instanceof Bgt||r instanceof Pyt)&&(l=i.transform).push.apply(l,(0,Xm.Z)(r.assemble())),r instanceof rft)if(i.source&&0===i.transform.length)r.setSource(i.source);else if(r.parent instanceof rft)r.setSource(i.name);else{if(i.name||(i.name="data_".concat(e++)),r.setSource(i.name),1===r.numChildren())t.push(i),i={name:null,source:i.name,transform:[]}}switch(r.numChildren()){case 0:r instanceof rft&&(!i.source||i.transform.length>0)&&t.push(i);break;case 1:n(r.children[0],i);break;default:i.name||(i.name="data_".concat(e++));var u=i.name;!i.source||i.transform.length>0?t.push(i):u=i.source;var s,f=ibt(r.children);try{for(f.s();!(s=f.n()).done;){n(s.value,{name:null,source:u,transform:[]})}}catch(h){f.e(h)}finally{f.f()}}}}function ubt(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return sbt(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return sbt(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function sbt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function gbt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function wbt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0?{aggregate:Cbt(Cbt({},S?{cross:S}:{}),l.length?{fields:l,ops:u,as:s}:{})}:{})}},{key:"facetSortFields",value:function(t){var e=this.facet[t];return e?fot(e.sort)?[Obt(e,e.sort,{expr:"datum"})]:qy(e.sort)?[$dt(e,t,{expr:"datum"})]:[Wot(e,{expr:"datum"})]:[]}},{key:"facetSortOrder",value:function(t){var e=this.facet[t];if(e){var n=e.sort;return[(fot(n)?n.order:!qy(n)&&n)||"ascending"]}return[]}},{key:"assembleLabelTitle",value:function(){var t=this.facet,e=this.config;if(t.facet)return dpt(t.facet,"facet",e);var n,r={row:["top","bottom"],column:["left","right"]},i=xbt(npt);try{for(i.s();!(n=i.n()).done;){var o=n.value;if(t[o]){var a,c=tpt("labelOrient",null===(a=t[o])||void 0===a?void 0:a.header,e,o);if(r[o].includes(c))return dpt(t[o],o,e)}}}catch(l){i.e(l)}finally{i.f()}}},{key:"assembleMarks",value:function(){var t=this,e=this.child,n=function(t){var e,n=[],r=lbt(n),i=ibt(t.children);try{for(i.s();!(e=i.n()).done;)r(e.value,{source:t.name,name:null,transform:[]})}catch(o){i.e(o)}finally{i.f()}return n}(this.component.data.facetRoot),r=e.assembleGroupEncodeEntry(!1),i=this.assembleLabelTitle()||e.assembleTitle(),o=e.assembleGroupStyle(),a=Cbt(Cbt(Cbt(Cbt(Cbt({name:this.getName("cell"),type:"group"},i?{title:i}:{}),o?{style:o}:{}),{},{from:{facet:this.assembleFacet()},sort:{field:Ztt.map((function(e){return t.facetSortFields(e)})).flat(),order:Ztt.map((function(e){return t.facetSortOrder(e)})).flat()}},n.length>0?{data:n}:{}),r?{encode:{update:r}}:{}),e.assembleGroup(function(t,e){if(t.component.selection&&m9(t.component.selection).length){var n=tx(t.getName("cell"));e.unshift({name:"facet",value:{},on:[{events:t3("mousemove","scope"),update:"isTuple(facet) ? facet : group(".concat(n,").datum")}]})}return Jst(e)}(this,[])));return[a]}},{key:"getMapping",value:function(){return this.facet}}]),n}(hyt);function Mbt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Abt(t){for(var e=1;e=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function _bt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0&&(i=function(t,e,n){var r,i=0,o=Pbt(e.transforms);try{for(o.s();!(r=o.n()).done;){var a=r.value,c=void 0,l=void 0;if(Fut(a))l=t=new Ydt(t,a),c="derived";else if(Sut(a)){var u,s=Xvt(a);l=t=null!==(u=Yvt.makeWithAncestors(t,{},s,n))&&void 0!==u?u:t,t=new ydt(t,e,a.filter)}else if(jut(a))l=t=Pvt.makeFromTransform(t,a,e),c="number";else if(Rut(a))c="date",void 0===n.getWithExplicit(a.field).value&&(t=new Yvt(t,(0,V.Z)({},a.field,c)),n.set(a.field,c,!1)),l=t=dft.makeFromTransform(t,a);else if(Lut(a))l=t=Fvt.makeFromTransform(t,a),c="number",hdt(e)&&(t=new Kvt(t));else if(Cut(a))l=t=Hyt.make(t,e,a,i++),c="derived";else if(Dut(a))l=t=new Ggt(t,a),c="number";else if(Tut(a))l=t=new Igt(t,a),c="number";else if(Nut(a))l=t=Bgt.makeFromTransform(t,a),c="derived";else if(But(a))l=t=new Oyt(t,a),c="derived";else if(zut(a))l=t=new yyt(t,a),c="derived";else if(Zut(a))l=t=new kyt(t,a),c="derived";else if(Out(a))l=t=new ebt(t,a),c="derived";else if(_ut(a))t=new rbt(t,a);else if(Iut(a))l=t=jyt.makeFromTransform(t,a),c="derived";else if(Eut(a))l=t=new gyt(t,a),c="derived";else if(Mut(a))l=t=new Xyt(t,a),c="derived";else if(Aut(a))l=t=new Kyt(t,a),c="derived";else{if(!Put(a)){$nt(Ant(a));continue}l=t=new Nyt(t,a),c="derived"}if(l&&void 0!==c){var f,h,d=Pbt(null!==(f=l.producedFields())&&void 0!==f?f:[]);try{for(d.s();!(h=d.n()).done;){var p=h.value;n.set(p,c,!1)}}catch(v){d.e(v)}finally{d.f()}}}}catch(v){o.e(v)}finally{o.f()}return t}(i,t,u));var h=function(t){var e={};if(cyt(t)&&t.component.selection){var n,r=Uvt(m9(t.component.selection));try{for(r.s();!(n=r.n()).done;){var i,o=n.value,a=Uvt(t.component.selection[o].project.items);try{for(a.s();!(i=a.n()).done;){var c=i.value;!c.channel&&D9(c.field)>1&&(e[c.field]="flatten")}}catch(l){a.e(l)}finally{a.f()}}}catch(l){r.e(l)}finally{r.f()}}return e}(t),d=qvt(t);if(i=null!==(r=Yvt.makeWithAncestors(i,{},Abt(Abt({},h),d),u))&&void 0!==r?r:i,cyt(t)&&(i=Pyt.parseAll(i,t),i=Dyt.parseAll(i,t)),cyt(t)||lyt(t)){var p,v;if(!f)i=null!==(v=Pvt.makeFromEncoding(i,t))&&void 0!==v?v:i;i=null!==(p=dft.makeFromEncoding(i,t))&&void 0!==p?p:i,i=Ydt.parseAllForSortIndex(i,t)}var g,m=t.getDataName(Rst.Raw),y=new rft(i,m,Rst.Raw,c);if(a[m]=y,i=y,cyt(t)){var b,x,w=Fvt.makeFromEncoding(i,t);w&&(i=w,hdt(t)&&(i=new Kvt(i))),i=null!==(b=jyt.makeFromEncoding(i,t))&&void 0!==b?b:i,i=null!==(x=Bgt.makeFromEncoding(i,t))&&void 0!==x?x:i}cyt(t)&&(i=null!==(g=wyt.make(i,t))&&void 0!==g?g:i);var S=t.getDataName(Rst.Main),k=new rft(i,S,Rst.Main,c);a[S]=k,i=k,cyt(t)&&function(t,e){var n,r,i=wdt(b9(null!==(n=t.component.selection)&&void 0!==n?n:{}));try{for(i.s();!(r=i.n()).done;){var o=(0,G.Z)(r.value,2),a=o[0],c=o[1],l=t.getName("lookup_".concat(a));t.component.data.outputNodes[l]=c.materialized=new rft(new ydt(e,t,{param:a}),l,Rst.Lookup,t.component.data.outputNodeRefCounts)}}catch(u){i.e(u)}finally{i.f()}}(t,k);var C=null;if(lyt(t)){var O,E=t.getName("facet");i=null!==(O=function(t,e){var n=e.row,r=e.column;if(n&&r){for(var i=null,o=0,a=[n,r];o=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Ibt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0&&void 0!==arguments[0]?arguments[0]:{},i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return(0,Rm.Z)(this,n),(t=e.call(this)).explicit=r,t.implicit=i,t.mainExtracted=o,t}return(0,Lm.Z)(n,[{key:"clone",value:function(){return new n(J7(this.explicit),J7(this.implicit),this.mainExtracted)}},{key:"hasAxisPart",value:function(t){return"axis"===t||("grid"===t||"title"===t?!!this.get(t):!function(t){return!1===t||null===t}(this.get(t)))}},{key:"hasOrientSignalRef",value:function(){return zet(this.explicit.orient)}}]),n}(_st);function Vbt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Gbt(t){for(var e=1;e=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function qbt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function nxt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Dxt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0)return function(t,e){return[{name:t.getName("pathgroup"),type:"group",from:{facet:{name:Ixt+t.requestDataName(Rst.Main),data:t.requestDataName(Rst.Main),groupby:e}},encode:{update:{width:{field:{group:"width"}},height:{field:{group:"height"}}}},marks:Lxt(t,{fromPrefix:Ixt})}]}(t,e)}else if(t.mark===mit){var n=Get.some((function(e){return lnt(e,t.markDef,t.config)}));if(t.stack&&!t.fieldDef("size")&&n)return function(t){var e,n,r,i=Lxt(t,{fromPrefix:Rxt}),o=(0,G.Z)(i,1)[0],a=t.scaleName(t.stack.fieldChannel),c=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return t.vgField(t.stack.fieldChannel,e)},l=function(t,e){var n=[c({prefix:"min",suffix:"start",expr:e}),c({prefix:"max",suffix:"start",expr:e}),c({prefix:"min",suffix:"end",expr:e}),c({prefix:"max",suffix:"end",expr:e})];return"".concat(t,"(").concat(n.map((function(t){return"scale('".concat(a,"',").concat(t,")")})).join(","),")")};"x"===t.stack.fieldChannel?(n=Zxt(Zxt({},t9(o.encode.update,["y","yc","y2","height"].concat((0,Xm.Z)(Get)))),{},{x:{signal:l("min","datum")},x2:{signal:l("max","datum")},clip:{value:!0}}),r={x:{field:{group:"x"},mult:-1},height:{field:{group:"height"}}},o.encode.update=Zxt(Zxt({},e9(o.encode.update,["y","yc","y2"])),{},{height:{field:{group:"height"}}})):(n=Zxt(Zxt({},t9(o.encode.update,["x","xc","x2","width"])),{},{y:{signal:l("min","datum")},y2:{signal:l("max","datum")},clip:{value:!0}}),r={y:{field:{group:"y"},mult:-1},width:{field:{group:"width"}}},o.encode.update=Zxt(Zxt({},e9(o.encode.update,["x","xc","x2"])),{},{width:{field:{group:"width"}}}));var u,s=_xt(Get);try{for(s.s();!(u=s.n()).done;){var f=u.value,h=unt(f,t.markDef,t.config);o.encode.update[f]?(n[f]=o.encode.update[f],delete o.encode.update[f]):h&&(n[f]=rnt(h)),h&&(o.encode.update[f]={value:0})}}catch(b){s.e(b)}finally{s.f()}var d=[];if((null===(e=t.stack.groupbyChannels)||void 0===e?void 0:e.length)>0){var p,v=_xt(t.stack.groupbyChannels);try{for(v.s();!(p=v.n()).done;){var g=p.value,m=t.fieldDef(g),y=Wot(m);y&&d.push(y),(null!=m&&m.bin||null!=m&&m.timeUnit)&&d.push(Wot(m,{binSuffix:"end"}))}}catch(b){v.e(b)}finally{v.f()}}n=["stroke","strokeWidth","strokeJoin","strokeCap","strokeDash","strokeDashOffset","strokeMiterLimit","strokeOpacity"].reduce((function(e,n){if(o.encode.update[n])return Zxt(Zxt({},e),{},(0,V.Z)({},n,o.encode.update[n]));var r=unt(n,t.markDef,t.config);return void 0!==r?Zxt(Zxt({},e),{},(0,V.Z)({},n,rnt(r))):e}),n),n.stroke&&(n.strokeForeground={value:!0},n.strokeOffset={value:0});return[{type:"group",from:{facet:{data:t.requestDataName(Rst.Main),name:Rxt+t.requestDataName(Rst.Main),groupby:d,aggregate:{fields:[c({suffix:"start"}),c({suffix:"start"}),c({suffix:"end"}),c({suffix:"end"})],ops:["min","max","min","max"]}}},encode:{update:n},marks:[{type:"group",encode:{update:r},marks:[o]}]}]}(t)}return Lxt(t)}var Ixt="faceted_path_";var Rxt="stack_group_";function Lxt(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{fromPrefix:""},n=t.mark,r=t.markDef,i=t.encoding,o=t.config,a=T9(r.clip,function(t){var e=t.getScaleComponent("x"),n=t.getScaleComponent("y");return!!(null!=e&&e.get("selectionExtent")||null!=n&&n.get("selectionExtent"))||void 0}(t),function(t){var e=t.component.projection;return!(!e||e.isFit)||void 0}(t)),c=cnt(r),l=i.key,u=function(t){var e=t.encoding,n=t.stack,r=t.mark,i=t.markDef,o=t.config,a=e.order;if(!(!qy(a)&&Lot(a)&&i9(a.value)||!a&&i9(lnt("order",i,o)))){if((qy(a)||_ot(a))&&!n)return hnt(a,{expr:"datum"});if(Pit(r)){var c="horizontal"===i.orient?"y":"x",l=e[c];if(_ot(l)){var u,s=l.sort;if(qy(s))return{field:Wot(l,{prefix:c,suffix:"sort_index",expr:"datum"})};if(fot(s))return{field:Wot({aggregate:_at(t.encoding)?s.op:void 0,field:s.field},{expr:"datum"})};if(sot(s))return{field:Wot(t.fieldDef(s.encoding),{expr:"datum"}),order:s.order};if(null===s)return;return{field:Wot(l,{binSuffix:null!==(u=t.stack)&&void 0!==u&&u.impute?"mid":void 0,expr:"datum"})}}}}}(t),s=function(t){if(!t.component.selection)return null;var e=m9(t.component.selection).length,n=e,r=t.parent;for(;r&&0===n;)n=m9(r.component.selection).length,r=r.parent;return n?{interactive:e>0||"geoshape"===t.mark||!!t.encoding.tooltip}:null}(t),f=lnt("aria",r,o),h=Fxt[n].postEncodingTransform?Fxt[n].postEncodingTransform(t):null;return[Zxt(Zxt(Zxt(Zxt(Zxt(Zxt(Zxt({name:t.getName("marks"),type:Fxt[n].vgMark},a?{clip:!0}:{}),c?{style:c}:{}),l?{key:l.field}:{}),u?{sort:u}:{}),s||{}),!1===f?{aria:f}:{}),{},{from:{data:e.fromPrefix+t.requestDataName(Rst.Main)},encode:{update:Fxt[n].encodeEntry(t)}},h?{transform:h}:{})]}function Nxt(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return Bxt(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Bxt(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Bxt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n3&&void 0!==arguments[3]?arguments[3]:{},l=arguments.length>4?arguments[4]:void 0;(0,Rm.Z)(this,n),(a=e.call(this,t,"unit",r,i,l,void 0,Kct(t)?t.view:void 0)).specifiedScales={},a.specifiedAxes={},a.specifiedLegends={},a.specifiedProjection={},a.selection=[],a.children=[];var u=Tit(t.mark)?Uxt({},t.mark):{type:t.mark},s=u.type;void 0===u.filled&&(u.filled=function(t,e,n){if(n.graticule)return!1;var r=unt("filled",t,e),i=t.type;return T9(r,i!==xit&&i!==bit&&i!==Sit)}(u,l,{graticule:t.data&&Vst(t.data)}));var f=a.encoding=Tat(t.encoding||{},s,u.filled,l);return a.markDef=jlt(u,f,l),a.size=function(t){var e,n=t.encoding,r=t.size,i=ext(Qtt);try{for(i.s();!(e=i.n()).done;){var o=e.value,a=Vtt(o);$ct(r[a])&&Zot(n[o])&&(delete r[a],$nt(Unt(a)))}}catch(c){i.e(c)}finally{i.f()}return r}({encoding:f,size:Kct(t)?Uxt(Uxt(Uxt({},c),t.width?{width:t.width}:{}),t.height?{height:t.height}:{}):c}),a.stack=Tlt(a.markDef,f),a.specifiedScales=a.initScales(s,f),a.specifiedAxes=a.initAxes(f),a.specifiedLegends=a.initLegends(f),a.specifiedProjection=t.projection,a.selection=(null!==(o=t.params)&&void 0!==o?o:[]).filter((function(t){return Rct(t)})),a}return(0,Lm.Z)(n,[{key:"hasProjection",get:function(){var t=this.encoding,e=this.mark===Ait,n=t&&Ptt.some((function(e){return Iot(t[e])}));return e||n}},{key:"scaleDomain",value:function(t){var e=this.specifiedScales[t];return e?e.domain:void 0}},{key:"axis",value:function(t){return this.specifiedAxes[t]}},{key:"legend",value:function(t){return this.specifiedLegends[t]}},{key:"initScales",value:function(t,e){var n=this;return set.reduce((function(t,r){var i,o=tat(e[r]);o&&(t[r]=n.initScale(null!==(i=o.scale)&&void 0!==i?i:{}));return t}),{})}},{key:"initScale",value:function(t){var e=t.domain,n=t.range,r=jet(t);return qy(e)&&(r.domain=e.map(ent)),qy(n)&&(r.range=n.map(ent)),r}},{key:"initAxes",value:function(t){var e=this;return Qtt.reduce((function(n,r){var i=t[r];if(Iot(i)||r===V9&&Iot(t.x2)||r===G9&&Iot(t.y2)){var o=Iot(i)?i.axis:void 0;n[r]=o?e.initAxis(Uxt({},o)):o}return n}),{})}},{key:"initAxis",value:function(t){var e,n={},r=Nxt(m9(t));try{for(r.s();!(e=r.n()).done;){var i=e.value,o=t[i];n[i]=dat(o)?tnt(o):ent(o)}}catch(a){r.e(a)}finally{r.f()}return n}},{key:"initLegends",value:function(t){return cet.reduce((function(e,n){var r=tat(t[n]);if(r&&function(t){switch(t){case ott:case att:case ctt:case utt:case ltt:case ftt:case ptt:case vtt:return!0;case htt:case dtt:case stt:return!1}}(n)){var i=r.legend;e[n]=i?jet(i):i}return e}),{})}},{key:"parseData",value:function(){this.component.data=Tbt(this)}},{key:"parseLayoutSize",value:function(){!function(t){var e,n=t.size,r=t.component,i=vbt(Qtt);try{for(i.s();!(e=i.n()).done;){var o=Vtt(e.value);if(n[o]){var a=n[o];r.layoutSize.set(o,$ct(a)?"step":a,!0)}else{var c=bbt(t,o);r.layoutSize.set(o,c,!1)}}}catch(l){i.e(l)}finally{i.f()}}(this)}},{key:"parseSelections",value:function(){this.component.selection=function(t,e){var n={},r=t.config.selection;if(!e||!e.length)return n;var i,o=wdt(e);try{for(o.s();!(i=o.n()).done;){var a=i.value,c=w9(a.name),l=a.select,u=Vb(l)?l:l.type,s=Yy(l)?J7(l):{type:u},f=r[u];for(var h in f){var d;"fields"!==h&&"encodings"!==h&&("mark"===h&&(s[h]=xdt(xdt({},f[h]),s[h])),(void 0===s[h]||!0===s[h])&&(s[h]=J7(null!==(d=f[h])&&void 0!==d?d:s[h])))}var p,v=n[c]=xdt(xdt({},s),{},{name:c,type:u,init:a.value,bind:a.bind,events:Vb(s.on)?t3(s.on,"scope"):bb(J7(s.on))}),g=J7(a),m=wdt(sdt);try{for(m.s();!(p=m.n()).done;){var y=p.value;y.defined(v)&&y.parse&&y.parse(t,v,g)}}catch(b){m.e(b)}finally{m.f()}}}catch(b){o.e(b)}finally{o.f()}return n}(this,this.selection)}},{key:"parseMarkGroup",value:function(){this.component.mark=jxt(this)}},{key:"parseAxesAndHeaders",value:function(){var t;this.component.axes=(t=this,Qtt.reduce((function(e,n){return t.component.scales[n]&&(e[n]=[txt(n,t)]),e}),{}))}},{key:"assembleSelectionTopLevelSignals",value:function(t){return function(t,e){var n,r,i=!1,o=Xst(y9(null!==(n=t.component.selection)&&void 0!==n?n:{}));try{var a=function(){var n=r.value,o=n.name,a=tx(o+adt),c=e.filter((function(t){return t.name===o}));if(0===c.length){var l="global"===n.resolve?"union":n.resolve,u="point"===n.type?", true, true)":")";e.push({name:n.name,update:"".concat(udt,"(").concat(a,", ").concat(tx(l)).concat(u)})}i=!0;var s,f=Xst(sdt);try{for(f.s();!(s=f.n()).done;){var h=s.value;h.defined(n)&&h.topLevelSignals&&(e=h.topLevelSignals(t,n,e))}}catch(d){f.e(d)}finally{f.f()}};for(o.s();!(r=o.n()).done;)a()}catch(l){o.e(l)}finally{o.f()}if(i){var c=e.filter((function(t){return"unit"===t.name}));0===c.length&&e.unshift({name:"unit",value:{},on:[{events:"mousemove",update:"isTuple(group()) ? group() : unit"}]})}return Jst(e)}(this,t)}},{key:"assembleSignals",value:function(){return[].concat((0,Xm.Z)(Idt(this)),(0,Xm.Z)(function(t,e){var n,r,i=Xst(y9(null!==(n=t.component.selection)&&void 0!==n?n:{}));try{for(i.s();!(r=i.n()).done;){var o,a=r.value,c=a.name,l="".concat(c).concat(cdt,", ").concat("global"===a.resolve?"true":"{unit: ".concat(fdt(t),"}")),u=Xst(sdt);try{for(u.s();!(o=u.n()).done;){var s=o.value;s.defined(a)&&(s.signals&&(e=s.signals(t,a,e)),s.modifyExpr&&(l=s.modifyExpr(t,a,l)))}}catch(f){u.e(f)}finally{u.f()}e.push({name:c+ldt,on:[{events:{signal:a.name+cdt},update:"modify(".concat(tx(a.name+adt),", ").concat(l,")")}]})}}catch(f){i.e(f)}finally{i.f()}return Jst(e)}(this,[])))}},{key:"assembleSelectionData",value:function(t){return function(t,e){var n,r,i=(0,Xm.Z)(e),o=fdt(t,{escape:!1}),a=Xst(y9(null!==(n=t.component.selection)&&void 0!==n?n:{}));try{var c=function(){var t=r.value,e={name:t.name+adt};if(t.project.hasSelectionId&&(e.transform=[{type:"collect",sort:{field:Zct}}]),t.init){var n=t.project.items.map(Yst);e.values=t.project.hasSelectionId?t.init.map((function(t){return(0,V.Z)({unit:o},Zct,$st(t,!1)[0])})):t.init.map((function(t){return{unit:o,fields:n,values:$st(t,!1)}}))}i.filter((function(e){return e.name===t.name+adt})).length||i.push(e)};for(a.s();!(r=a.n()).done;)c()}catch(l){a.e(l)}finally{a.f()}return i}(this,t)}},{key:"assembleLayout",value:function(){return null}},{key:"assembleLayoutSignals",value:function(){return ypt(this)}},{key:"assembleMarks",value:function(){var t,e=null!==(t=this.component.mark)&&void 0!==t?t:[];return this.parent&&syt(this.parent)||(e=Kst(this,e)),e.map(this.correctDataNames)}},{key:"assembleGroupStyle",value:function(){var t=(this.view||{}).style;return void 0!==t?t:this.encoding.x||this.encoding.y?"cell":"view"}},{key:"getMapping",value:function(){return this.encoding}},{key:"mark",get:function(){return this.markDef.type}},{key:"channelHasField",value:function(t){return Mat(this.encoding,t)}},{key:"fieldDef",value:function(t){return Qot(this.encoding[t])}},{key:"typedFieldDef",value:function(t){var e=this.fieldDef(t);return Rot(e)?e:null}}]),n}(hyt);function Vxt(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return Gxt(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Gxt(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function Gxt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0&&!k){var C=Ybt[S];o[S]>o[C]&&x.set("orient",C,!1)}o[S]++}}}catch(_){b.e(_)}finally{b.f()}}delete g.component.axes[p]}}}catch(_){v.e(_)}finally{v.f()}if("independent"===i.axis[p]&&r[p]&&r[p].length>1){var O,E=Xbt((r[p]||[]).entries());try{for(E.s();!(O=E.n()).done;){var M=(0,G.Z)(O.value,2),A=M[0],P=M[1];A>0&&P.get("grid")&&!P.explicit.grid&&(P.implicit.grid=!1)}}catch(_){E.e(_)}finally{E.f()}}}}catch(_){h.e(_)}finally{h.f()}}(this)}},{key:"assembleSelectionTopLevelSignals",value:function(t){return this.children.reduce((function(t,e){return e.assembleSelectionTopLevelSignals(t)}),t)}},{key:"assembleSignals",value:function(){return this.children.reduce((function(t,e){return t.concat(e.assembleSignals())}),Idt(this))}},{key:"assembleLayoutSignals",value:function(){return this.children.reduce((function(t,e){return t.concat(e.assembleLayoutSignals())}),ypt(this))}},{key:"assembleSelectionData",value:function(t){return this.children.reduce((function(t,e){return e.assembleSelectionData(t)}),t)}},{key:"assembleGroupStyle",value:function(){var t,e=new Set,n=Vxt(this.children);try{for(n.s();!(t=n.n()).done;){var r,i=Vxt(bb(t.value.assembleGroupStyle()));try{for(i.s();!(r=i.n()).done;){var o=r.value;e.add(o)}}catch(c){i.e(c)}finally{i.f()}}}catch(c){n.e(c)}finally{n.f()}var a=Array.from(e);return a.length>1?a:1===a.length?a[0]:void 0}},{key:"assembleTitle",value:function(){var t=qZ((0,Um.Z)(n.prototype),"assembleTitle",this).call(this);if(t)return t;var e,r=Vxt(this.children);try{for(r.s();!(e=r.n()).done;){if(t=e.value.assembleTitle())return t}}catch(i){r.e(i)}finally{r.f()}}},{key:"assembleLayout",value:function(){return null}},{key:"assembleMarks",value:function(){return function(t,e){var n,r=Xst(t.children);try{for(r.s();!(n=r.n()).done;){var i=n.value;cyt(i)&&(e=Kst(i,e))}}catch(o){r.e(o)}finally{r.f()}return e}(this,this.children.flatMap((function(t){return t.assembleMarks()})))}},{key:"assembleLegends",value:function(){return this.children.reduce((function(t,e){return t.concat(e.assembleLegends())}),nvt(this))}}]),n}(fyt);function Kxt(t,e,n,r,i){if(vot(t))return new Ebt(t,e,n,i);if(xlt(t))return new $xt(t,e,n,r,i);if(xat(t))return new Wxt(t,e,n,r,i);if(function(t){return Vct(t)||Gct(t)||Wct(t)}(t))return new Lbt(t,e,n,i);throw new Error(gnt(t))}var Jxt=["params"];function Qxt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function twt(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:{};n.logger&&(e=n.logger,qnt=e),n.fieldTitle&&qot(n.fieldTitle);try{var r=plt(Ky(n.config,t.config)),i=mst(t,r),o=Kxt(i,null,"",void 0,r);o.parse(),function(t,e){emt(t.sources);for(var n=0,r=0,i=0;i2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3?arguments[3]:void 0,i=t.config?ylt(t.config):void 0,o=[].concat(t.assembleSelectionData([]),function(t,e){var n,r=[],i=lbt(r),o=0,a=ibt(t.sources);try{for(a.s();!(n=a.n()).done;){var c=n.value;c.hasName()||(c.dataName="source_".concat(o++));var l=c.assemble();i(c,l)}}catch(A){a.e(A)}finally{a.f()}for(var u=0,s=r;u0?{projections:a}:{}),t.assembleGroup([].concat((0,Xm.Z)(s),(0,Xm.Z)(t.assembleSelectionTopLevelSignals([])),(0,Xm.Z)(Hct(f))))),i?{config:i}:{}),r?{usermeta:r}:{})}(o,function(t,e,n,r){var i=r.component.layoutSize.get("width"),o=r.component.layoutSize.get("height");void 0===e?(e={type:"pad"},r.hasAxisOrientSignalRef()&&(e.resize=!0)):Vb(e)&&(e={type:e});if(i&&o&&(l=e.type,"fit"===l||"fit-x"===l||"fit-y"===l))if("step"===i&&"step"===o)$nt(xnt()),e.type="pad";else if("step"===i||"step"===o){var a="step"===i?"width":"height";$nt(xnt(ret(a)));var c="width"===a?"height":"width";e.type=function(t){return t?"fit-".concat(ret(t)):"fit"}(c)}var l;return twt(twt(twt({},1===m9(e).length&&e.type?"pad"===e.type?{}:{autosize:e.type}:{autosize:e}),Ost(n,!1)),Ost(t,!0))}(t,i.autosize,r,o),t.datasets,t.usermeta);return{spec:a,normalized:i}}finally{n.logger&&Ynt(),n.fieldTitle&&qot(Got)}}var nwt="5.14.1";var rwt=function(t){var e=/schema\/([\w-]+)\/([\w\.\-]+)\.json$/g.exec(t).slice(1,3),n=(0,G.Z)(e,2);return{library:n[0],version:n[1]}},iwt="2.14.0",owt="#fff",awt="#888",cwt={background:"#333",view:{stroke:awt},title:{color:owt,subtitleColor:owt},style:{"guide-label":{fill:owt},"guide-title":{fill:owt}},axis:{domainColor:owt,gridColor:awt,tickColor:owt}},lwt="#4572a7",uwt={background:"#fff",arc:{fill:lwt},area:{fill:lwt},line:{stroke:lwt,strokeWidth:2},path:{stroke:lwt},rect:{fill:lwt},shape:{stroke:lwt},symbol:{fill:lwt,strokeWidth:1.5,size:50},axis:{bandPosition:.5,grid:!0,gridColor:"#000000",gridOpacity:1,gridWidth:.5,labelPadding:10,tickSize:5,tickWidth:.5},axisBand:{grid:!1,tickExtra:!0},legend:{labelBaseline:"middle",labelFontSize:11,symbolSize:50,symbolType:"square"},range:{category:["#4572a7","#aa4643","#8aa453","#71598e","#4598ae","#d98445","#94aace","#d09393","#b9cc98","#a99cbc"]}},swt="#30a2da",fwt="#cbcbcb",hwt="#f0f0f0",dwt="#333",pwt={arc:{fill:swt},area:{fill:swt},axis:{domainColor:fwt,grid:!0,gridColor:fwt,gridWidth:1,labelColor:"#999",labelFontSize:10,titleColor:"#333",tickColor:fwt,tickSize:10,titleFontSize:14,titlePadding:10,labelPadding:4},axisBand:{grid:!1},background:hwt,group:{fill:hwt},legend:{labelColor:dwt,labelFontSize:11,padding:1,symbolSize:30,symbolType:"square",titleColor:dwt,titleFontSize:14,titlePadding:10},line:{stroke:swt,strokeWidth:2},path:{stroke:swt,strokeWidth:.5},rect:{fill:swt},range:{category:["#30a2da","#fc4f30","#e5ae38","#6d904f","#8b8b8b","#b96db8","#ff9e27","#56cc60","#52d2ca","#52689e","#545454","#9fe4f8"],diverging:["#cc0020","#e77866","#f6e7e1","#d6e8ed","#91bfd9","#1d78b5"],heatmap:["#d6e8ed","#cee0e5","#91bfd9","#549cc6","#1d78b5"]},point:{filled:!0,shape:"circle"},shape:{stroke:swt},bar:{binSpacing:2,fill:swt,stroke:null},title:{anchor:"start",fontSize:24,fontWeight:600,offset:20}},vwt="#000",gwt={group:{fill:"#e5e5e5"},arc:{fill:vwt},area:{fill:vwt},line:{stroke:vwt},path:{stroke:vwt},rect:{fill:vwt},shape:{stroke:vwt},symbol:{fill:vwt,size:40},axis:{domain:!1,grid:!0,gridColor:"#FFFFFF",gridOpacity:1,labelColor:"#7F7F7F",labelPadding:4,tickColor:"#7F7F7F",tickSize:5.67,titleFontSize:16,titleFontWeight:"normal"},legend:{labelBaseline:"middle",labelFontSize:11,symbolSize:40},range:{category:["#000000","#7F7F7F","#1A1A1A","#999999","#333333","#B0B0B0","#4D4D4D","#C9C9C9","#666666","#DCDCDC"]}},mwt="Benton Gothic, sans-serif",ywt="#82c6df",bwt="Benton Gothic Bold, sans-serif",xwt="normal",wwt={"category-6":["#ec8431","#829eb1","#c89d29","#3580b1","#adc839","#ab7fb4"],"fire-7":["#fbf2c7","#f9e39c","#f8d36e","#f4bb6a","#e68a4f","#d15a40","#ab4232"],"fireandice-6":["#e68a4f","#f4bb6a","#f9e39c","#dadfe2","#a6b7c6","#849eae"],"ice-7":["#edefee","#dadfe2","#c4ccd2","#a6b7c6","#849eae","#607785","#47525d"]},Swt={background:"#ffffff",title:{anchor:"start",color:"#000000",font:bwt,fontSize:22,fontWeight:"normal"},arc:{fill:ywt},area:{fill:ywt},line:{stroke:ywt,strokeWidth:2},path:{stroke:ywt},rect:{fill:ywt},shape:{stroke:ywt},symbol:{fill:ywt,size:30},axis:{labelFont:mwt,labelFontSize:11.5,labelFontWeight:"normal",titleFont:bwt,titleFontSize:13,titleFontWeight:xwt},axisX:{labelAngle:0,labelPadding:4,tickSize:3},axisY:{labelBaseline:"middle",maxExtent:45,minExtent:45,tickSize:2,titleAlign:"left",titleAngle:0,titleX:-45,titleY:-11},legend:{labelFont:mwt,labelFontSize:11.5,symbolType:"square",titleFont:bwt,titleFontSize:13,titleFontWeight:xwt},range:{category:wwt["category-6"],diverging:wwt["fireandice-6"],heatmap:wwt["fire-7"],ordinal:wwt["fire-7"],ramp:wwt["fire-7"]}},kwt="#ab5787",Cwt="#979797",Owt={background:"#f9f9f9",arc:{fill:kwt},area:{fill:kwt},line:{stroke:kwt},path:{stroke:kwt},rect:{fill:kwt},shape:{stroke:kwt},symbol:{fill:kwt,size:30},axis:{domainColor:Cwt,domainWidth:.5,gridWidth:.2,labelColor:Cwt,tickColor:Cwt,tickWidth:.2,titleColor:Cwt},axisBand:{grid:!1},axisX:{grid:!0,tickSize:10},axisY:{domain:!1,grid:!0,tickSize:0},legend:{labelFontSize:11,padding:1,symbolSize:30,symbolType:"square"},range:{category:["#ab5787","#51b2e5","#703c5c","#168dd9","#d190b6","#00609f","#d365ba","#154866","#666666","#c4c4c4"]}},Ewt="#3e5c69",Mwt={background:"#fff",arc:{fill:Ewt},area:{fill:Ewt},line:{stroke:Ewt},path:{stroke:Ewt},rect:{fill:Ewt},shape:{stroke:Ewt},symbol:{fill:Ewt},axis:{domainWidth:.5,grid:!0,labelPadding:2,tickSize:5,tickWidth:.5,titleFontWeight:"normal"},axisBand:{grid:!1},axisX:{gridWidth:.2},axisY:{gridDash:[3],gridWidth:.4},legend:{labelFontSize:11,padding:1,symbolType:"square"},range:{category:["#3e5c69","#6793a6","#182429","#0570b0","#3690c0","#74a9cf","#a6bddb","#e2ddf2"]}},Awt="#1696d2",Pwt="#000000",_wt="Lato",Dwt="Lato",Twt={"main-colors":["#1696d2","#d2d2d2","#000000","#fdbf11","#ec008b","#55b748","#5c5859","#db2b27"],"shades-blue":["#CFE8F3","#A2D4EC","#73BFE2","#46ABDB","#1696D2","#12719E","#0A4C6A","#062635"],"shades-gray":["#F5F5F5","#ECECEC","#E3E3E3","#DCDBDB","#D2D2D2","#9D9D9D","#696969","#353535"],"shades-yellow":["#FFF2CF","#FCE39E","#FDD870","#FCCB41","#FDBF11","#E88E2D","#CA5800","#843215"],"shades-magenta":["#F5CBDF","#EB99C2","#E46AA7","#E54096","#EC008B","#AF1F6B","#761548","#351123"],"shades-green":["#DCEDD9","#BCDEB4","#98CF90","#78C26D","#55B748","#408941","#2C5C2D","#1A2E19"],"shades-black":["#D5D5D4","#ADABAC","#848081","#5C5859","#332D2F","#262223","#1A1717","#0E0C0D"],"shades-red":["#F8D5D4","#F1AAA9","#E9807D","#E25552","#DB2B27","#A4201D","#6E1614","#370B0A"],"one-group":["#1696d2","#000000"],"two-groups-cat-1":["#1696d2","#000000"],"two-groups-cat-2":["#1696d2","#fdbf11"],"two-groups-cat-3":["#1696d2","#db2b27"],"two-groups-seq":["#a2d4ec","#1696d2"],"three-groups-cat":["#1696d2","#fdbf11","#000000"],"three-groups-seq":["#a2d4ec","#1696d2","#0a4c6a"],"four-groups-cat-1":["#000000","#d2d2d2","#fdbf11","#1696d2"],"four-groups-cat-2":["#1696d2","#ec0008b","#fdbf11","#5c5859"],"four-groups-seq":["#cfe8f3","#73bf42","#1696d2","#0a4c6a"],"five-groups-cat-1":["#1696d2","#fdbf11","#d2d2d2","#ec008b","#000000"],"five-groups-cat-2":["#1696d2","#0a4c6a","#d2d2d2","#fdbf11","#332d2f"],"five-groups-seq":["#cfe8f3","#73bf42","#1696d2","#0a4c6a","#000000"],"six-groups-cat-1":["#1696d2","#ec008b","#fdbf11","#000000","#d2d2d2","#55b748"],"six-groups-cat-2":["#1696d2","#d2d2d2","#ec008b","#fdbf11","#332d2f","#0a4c6a"],"six-groups-seq":["#cfe8f3","#a2d4ec","#73bfe2","#46abdb","#1696d2","#12719e"],"diverging-colors":["#ca5800","#fdbf11","#fdd870","#fff2cf","#cfe8f3","#73bfe2","#1696d2","#0a4c6a"]},Zwt={background:"#FFFFFF",title:{anchor:"start",fontSize:18,font:_wt},axisX:{domain:!0,domainColor:Pwt,domainWidth:1,grid:!1,labelFontSize:12,labelFont:Dwt,labelAngle:0,tickColor:Pwt,tickSize:5,titleFontSize:12,titlePadding:10,titleFont:_wt},axisY:{domain:!1,domainWidth:1,grid:!0,gridColor:"#DEDDDD",gridWidth:1,labelFontSize:12,labelFont:Dwt,labelPadding:8,ticks:!1,titleFontSize:12,titlePadding:10,titleFont:_wt,titleAngle:0,titleY:-10,titleX:18},legend:{labelFontSize:12,labelFont:Dwt,symbolSize:100,titleFontSize:12,titlePadding:10,titleFont:_wt,orient:"right",offset:10},view:{stroke:"transparent"},range:{category:Twt["six-groups-cat-1"],diverging:Twt["diverging-colors"],heatmap:Twt["diverging-colors"],ordinal:Twt["six-groups-seq"],ramp:Twt["shades-blue"]},area:{fill:Awt},rect:{fill:Awt},line:{color:Awt,stroke:Awt,strokeWidth:5},trail:{color:Awt,stroke:Awt,strokeWidth:0,size:1},path:{stroke:Awt,strokeWidth:.5},point:{filled:!0},text:{font:"Lato",color:Awt,fontSize:11,align:"center",fontWeight:400,size:11},style:{bar:{fill:Awt,stroke:null}},arc:{fill:Awt},shape:{stroke:Awt},symbol:{fill:Awt,size:30}},Fwt="#3366CC",jwt="#ccc",Iwt="Arial, sans-serif",Rwt={arc:{fill:Fwt},area:{fill:Fwt},path:{stroke:Fwt},rect:{fill:Fwt},shape:{stroke:Fwt},symbol:{stroke:Fwt},circle:{fill:Fwt},background:"#fff",padding:{top:10,right:10,bottom:10,left:10},style:{"guide-label":{font:Iwt,fontSize:12},"guide-title":{font:Iwt,fontSize:12},"group-title":{font:Iwt,fontSize:12}},title:{font:Iwt,fontSize:14,fontWeight:"bold",dy:-3,anchor:"start"},axis:{gridColor:jwt,tickColor:jwt,domain:!1,grid:!0},range:{category:["#4285F4","#DB4437","#F4B400","#0F9D58","#AB47BC","#00ACC1","#FF7043","#9E9D24","#5C6BC0","#F06292","#00796B","#C2185B"],heatmap:["#c6dafc","#5e97f6","#2a56c6"]}},Lwt=function(t){return t*(1/3+1)},Nwt=Lwt(9),Bwt=Lwt(10),zwt=Lwt(12),Uwt="Segoe UI",Hwt="wf_standard-font, helvetica, arial, sans-serif",Wwt="#252423",Vwt="#605E5C",Gwt="transparent",Xwt="#118DFF",qwt="#DEEFFF",Ywt=[qwt,Xwt],$wt={view:{stroke:Gwt},background:Gwt,font:Uwt,header:{titleFont:Hwt,titleFontSize:zwt,titleColor:Wwt,labelFont:Uwt,labelFontSize:Bwt,labelColor:Vwt},axis:{ticks:!1,grid:!1,domain:!1,labelColor:Vwt,labelFontSize:Nwt,titleFont:Hwt,titleColor:Wwt,titleFontSize:zwt,titleFontWeight:"normal"},axisQuantitative:{tickCount:3,grid:!0,gridColor:"#C8C6C4",gridDash:[1,5],labelFlush:!1},axisBand:{tickExtra:!0},axisX:{labelPadding:5},axisY:{labelPadding:10},bar:{fill:Xwt},line:{stroke:Xwt,strokeWidth:3,strokeCap:"round",strokeJoin:"round"},text:{font:Uwt,fontSize:Nwt,fill:Vwt},arc:{fill:Xwt},area:{fill:Xwt,line:!0,opacity:.6},path:{stroke:Xwt},rect:{fill:Xwt},point:{fill:Xwt,filled:!0,size:75},shape:{stroke:Xwt},symbol:{fill:Xwt,strokeWidth:1.5,size:50},legend:{titleFont:Uwt,titleFontWeight:"bold",titleColor:Vwt,labelFont:Uwt,labelFontSize:Bwt,labelColor:Vwt,symbolType:"circle",symbolSize:75},range:{category:[Xwt,"#12239E","#E66C37","#6B007B","#E044A7","#744EC2","#D9B300","#D64550"],diverging:Ywt,heatmap:Ywt,ordinal:[qwt,"#c7e4ff","#b0d9ff","#9aceff","#83c3ff","#6cb9ff","#55aeff","#3fa3ff","#2898ff",Xwt]}},Kwt='IBM Plex Sans,system-ui,-apple-system,BlinkMacSystemFont,".sfnstext-regular",sans-serif',Jwt=["#8a3ffc","#33b1ff","#007d79","#ff7eb6","#fa4d56","#fff1f1","#6fdc8c","#4589ff","#d12771","#d2a106","#08bdba","#bae6ff","#ba4e00","#d4bbff"],Qwt=["#6929c4","#1192e8","#005d5d","#9f1853","#fa4d56","#570408","#198038","#002d9c","#ee538b","#b28600","#009d9a","#012749","#8a3800","#a56eff"];function tSt(t){var e=t.type,n="dark"===e?"#161616":"#ffffff",r="dark"===e?"#f4f4f4":"#161616",i="dark"===e?"#d4bbff":"#6929c4";return{background:t.background,arc:{fill:i},area:{fill:i},path:{stroke:i},rect:{fill:i},shape:{stroke:i},symbol:{stroke:i},circle:{fill:i},view:{fill:n,stroke:n},group:{fill:n},title:{color:r,anchor:"start",dy:-15,fontSize:16,font:Kwt,fontWeight:600},axis:{labelColor:r,labelFontSize:12,grid:!0,gridColor:"#525252",titleColor:r,labelAngle:0},style:{"guide-label":{font:Kwt,fill:r,fontWeight:400},"guide-title":{font:Kwt,fill:r,fontWeight:400}},range:{category:"dark"===e?Jwt:Qwt,diverging:["#750e13","#a2191f","#da1e28","#fa4d56","#ff8389","#ffb3b8","#ffd7d9","#fff1f1","#e5f6ff","#bae6ff","#82cfff","#33b1ff","#1192e8","#0072c3","#00539a","#003a6d"],heatmap:["#f6f2ff","#e8daff","#d4bbff","#be95ff","#a56eff","#8a3ffc","#6929c4","#491d8b","#31135e","#1c0f30"]}}}var eSt=tSt({type:"light",background:"#ffffff"}),nSt=tSt({type:"light",background:"#f4f4f4"}),rSt=tSt({type:"dark",background:"#262626"}),iSt=tSt({type:"dark",background:"#161616"}),oSt=iwt;function aSt(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return cSt(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return cSt(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function cSt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=0||(i[n]=t[n]);return i}(t,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(i[n]=t[n])}return i}var hSt=["title","image"];function dSt(t,e){return JSON.stringify(t,function(t){var e=[];return function(n,r){if("object"!=typeof r||null===r)return r;var i=e.indexOf(this)+1;return e.length=i,e.length>t?"[Object]":e.indexOf(r)>=0?"[Circular]":(e.push(r),r)}}(e))}var pSt="vg-tooltip-element",vSt={offsetX:10,offsetY:10,id:pSt,styleId:"vega-tooltip-style",theme:"light",disableDefaultStyle:!1,sanitize:function(t){return String(t).replace(/&/g,"&").replace(/".concat(e(o),"")),a&&(r+=''));var l=Object.keys(c);if(l.length>0){r+="";var u,s=aSt(l);try{for(s.s();!(u=s.n()).done;){var f=u.value,h=c[f];void 0!==h&&(Yy(h)&&(h=dSt(h,n)),r+='"))}}catch(d){s.e(d)}finally{s.f()}r+="
    '.concat(e(f),':').concat(e(h),"
    "}return r||"{}"}return e(t)}};function gSt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function mSt(t){for(var e=1;e0?i.insertBefore(r,i.childNodes[0]):i.appendChild(r)}}return(0,Lm.Z)(t,[{key:"tooltipHandler",value:function(t,e,n,r){var i;(this.el=document.getElementById(this.options.id),this.el)||(this.el=document.createElement("div"),this.el.setAttribute("id",this.options.id),this.el.classList.add("vg-tooltip"),(null!==(i=document.fullscreenElement)&&void 0!==i?i:document.body).appendChild(this.el));if(null!=r&&""!==r){this.el.innerHTML=this.options.formatTooltip(r,this.options.sanitize,this.options.maxDepth),this.el.classList.add("visible","".concat(this.options.theme,"-theme"));var o=function(t,e,n,r){var i=t.clientX+n;i+e.width>window.innerWidth&&(i=+t.clientX-n-e.width);var o=t.clientY+r;return o+e.height>window.innerHeight&&(o=+t.clientY-r-e.height),{x:i,y:o}}(e,this.el.getBoundingClientRect(),this.options.offsetX,this.options.offsetY),a=o.x,c=o.y;this.el.style.top="".concat(c,"px"),this.el.style.left="".concat(a,"px")}else this.el.classList.remove("visible","".concat(this.options.theme,"-theme"))}}]),t}();function SSt(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return kSt(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return kSt(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function kSt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0)for(var n=0,r=arguments.length;n1)n=e;else{if(!this.head)throw new TypeError("Reduce of empty list with no initial value");r=this.head.next,n=this.head.value}for(var i=0;null!==r;i++)n=t(n,r.value,i),r=r.next;return n},PSt.prototype.reduceReverse=function(t,e){var n,r=this.tail;if(arguments.length>1)n=e;else{if(!this.tail)throw new TypeError("Reduce of empty list with no initial value");r=this.tail.prev,n=this.tail.value}for(var i=this.length-1;null!==r;i--)n=t(n,r.value,i),r=r.prev;return n},PSt.prototype.toArray=function(){for(var t=new Array(this.length),e=0,n=this.head;null!==n;e++)t[e]=n.value,n=n.next;return t},PSt.prototype.toArrayReverse=function(){for(var t=new Array(this.length),e=0,n=this.tail;null!==n;e++)t[e]=n.value,n=n.prev;return t},PSt.prototype.slice=function(t,e){(e=e||this.length)<0&&(e+=this.length),(t=t||0)<0&&(t+=this.length);var n=new PSt;if(ethis.length&&(e=this.length);for(var r=0,i=this.head;null!==i&&rthis.length&&(e=this.length);for(var r=this.length,i=this.tail;null!==i&&r>e;r--)i=i.prev;for(;null!==i&&r>t;r--,i=i.prev)n.push(i.value);return n},PSt.prototype.splice=function(t,e){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);for(var n=0,r=this.head;null!==r&&nthis[jSt])return $St(this,this[HSt].get(t)),!1;var o=this[HSt].get(t).value;return this[BSt]&&(this[zSt]||this[BSt](t,o.value)),o.now=r,o.maxAge=n,o.value=e,this[ISt]+=i-o.length,o.length=i,this.get(t),YSt(this),!0}var a=new KSt(t,e,i,r,n);return a.length>this[jSt]?(this[BSt]&&this[BSt](t,e),!1):(this[ISt]+=a.length,this[USt].unshift(a),this[HSt].set(t,this[USt].head),YSt(this),!0)}},{key:"has",value:function(t){if(!this[HSt].has(t))return!1;var e=this[HSt].get(t).value;return!qSt(this,e)}},{key:"get",value:function(t){return XSt(this,t,!0)}},{key:"peek",value:function(t){return XSt(this,t,!1)}},{key:"pop",value:function(){var t=this[USt].tail;return t?($St(this,t),t.value):null}},{key:"del",value:function(t){$St(this,this[HSt].get(t))}},{key:"load",value:function(t){this.reset();for(var e=Date.now(),n=t.length-1;n>=0;n--){var r=t[n],i=r.e||0;if(0===i)this.set(r.k,r.v);else{var o=i-e;o>0&&this.set(r.k,r.v,o)}}}},{key:"prune",value:function(){var t=this;this[HSt].forEach((function(e,n){return XSt(t,n,!1)}))}}]),t}(),XSt=function(t,e,n){var r=t[HSt].get(e);if(r){var i=r.value;if(qSt(t,i)){if($St(t,r),!t[LSt])return}else n&&(t[WSt]&&(r.value.now=Date.now()),t[USt].unshiftNode(r));return i.value}},qSt=function(t,e){if(!e||!e.maxAge&&!t[NSt])return!1;var n=Date.now()-e.now;return e.maxAge?n>e.maxAge:t[NSt]&&n>t[NSt]},YSt=function(t){if(t[ISt]>t[jSt])for(var e=t[USt].tail;t[ISt]>t[jSt]&&null!==e;){var n=e.prev;$St(t,e),e=n}},$St=function(t,e){if(e){var n=e.value;t[BSt]&&t[BSt](n.key,n.value),t[ISt]-=n.length,t[HSt].delete(n.key),t[USt].removeNode(e)}},KSt=(0,Lm.Z)((function t(e,n,r,i,o){(0,Rm.Z)(this,t),this.key=e,this.value=n,this.length=r,this.now=i,this.maxAge=o||0})),JSt=function(t,e,n,r){var i=n.value;qSt(t,i)&&($St(t,n),t[LSt]||(i=void 0)),i&&e.call(r,i.value,i.key,t)},QSt=GSt,tkt=Object.freeze({loose:!0}),ekt=Object.freeze({}),nkt=function(t){return t?"object"!=typeof t?tkt:t:ekt},rkt={exports:{}},ikt={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_BUILD_LENGTH:250,MAX_SAFE_INTEGER:Number.MAX_SAFE_INTEGER||9007199254740991,RELEASE_TYPES:["major","premajor","minor","preminor","patch","prepatch","prerelease"],SEMVER_SPEC_VERSION:"2.0.0",FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2},okt="object"==typeof process&&{}.NODE_DEBUG&&/\bsemver\b/i.test({}.NODE_DEBUG)?function(){for(var t,e=arguments.length,n=new Array(e),r=0;r)?=?)"),d("XRANGEIDENTIFIERLOOSE","".concat(l[u.NUMERICIDENTIFIERLOOSE],"|x|X|\\*")),d("XRANGEIDENTIFIER","".concat(l[u.NUMERICIDENTIFIER],"|x|X|\\*")),d("XRANGEPLAIN","[v=\\s]*(".concat(l[u.XRANGEIDENTIFIER],")")+"(?:\\.(".concat(l[u.XRANGEIDENTIFIER],")")+"(?:\\.(".concat(l[u.XRANGEIDENTIFIER],")")+"(?:".concat(l[u.PRERELEASE],")?").concat(l[u.BUILD],"?")+")?)?"),d("XRANGEPLAINLOOSE","[v=\\s]*(".concat(l[u.XRANGEIDENTIFIERLOOSE],")")+"(?:\\.(".concat(l[u.XRANGEIDENTIFIERLOOSE],")")+"(?:\\.(".concat(l[u.XRANGEIDENTIFIERLOOSE],")")+"(?:".concat(l[u.PRERELEASELOOSE],")?").concat(l[u.BUILD],"?")+")?)?"),d("XRANGE","^".concat(l[u.GTLT],"\\s*").concat(l[u.XRANGEPLAIN],"$")),d("XRANGELOOSE","^".concat(l[u.GTLT],"\\s*").concat(l[u.XRANGEPLAINLOOSE],"$")),d("COERCE","".concat("(^|[^\\d])(\\d{1,").concat(n,"})")+"(?:\\.(\\d{1,".concat(n,"}))?")+"(?:\\.(\\d{1,".concat(n,"}))?")+"(?:$|[^\\d])"),d("COERCERTL",l[u.COERCE],!0),d("LONETILDE","(?:~>?)"),d("TILDETRIM","(\\s*)".concat(l[u.LONETILDE],"\\s+"),!0),e.tildeTrimReplace="$1~",d("TILDE","^".concat(l[u.LONETILDE]).concat(l[u.XRANGEPLAIN],"$")),d("TILDELOOSE","^".concat(l[u.LONETILDE]).concat(l[u.XRANGEPLAINLOOSE],"$")),d("LONECARET","(?:\\^)"),d("CARETTRIM","(\\s*)".concat(l[u.LONECARET],"\\s+"),!0),e.caretTrimReplace="$1^",d("CARET","^".concat(l[u.LONECARET]).concat(l[u.XRANGEPLAIN],"$")),d("CARETLOOSE","^".concat(l[u.LONECARET]).concat(l[u.XRANGEPLAINLOOSE],"$")),d("COMPARATORLOOSE","^".concat(l[u.GTLT],"\\s*(").concat(l[u.LOOSEPLAIN],")$|^$")),d("COMPARATOR","^".concat(l[u.GTLT],"\\s*(").concat(l[u.FULLPLAIN],")$|^$")),d("COMPARATORTRIM","(\\s*)".concat(l[u.GTLT],"\\s*(").concat(l[u.LOOSEPLAIN],"|").concat(l[u.XRANGEPLAIN],")"),!0),e.comparatorTrimReplace="$1$2$3",d("HYPHENRANGE","^\\s*(".concat(l[u.XRANGEPLAIN],")")+"\\s+-\\s+"+"(".concat(l[u.XRANGEPLAIN],")")+"\\s*$"),d("HYPHENRANGELOOSE","^\\s*(".concat(l[u.XRANGEPLAINLOOSE],")")+"\\s+-\\s+"+"(".concat(l[u.XRANGEPLAINLOOSE],")")+"\\s*$"),d("STAR","(<|>)?=?\\s*\\*"),d("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),d("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")}(rkt,rkt.exports);var ckt,lkt,ukt,skt,fkt=rkt.exports,hkt=/^[0-9]+$/,dkt=function(t,e){var n=hkt.test(t),r=hkt.test(e);return n&&r&&(t=+t,e=+e),t===e?0:n&&!r?-1:r&&!n?1:tgkt)throw new TypeError("version is longer than ".concat(gkt," characters"));vkt("SemVer",e,n),this.options=n,this.loose=!!n.loose,this.includePrerelease=!!n.includePrerelease;var r=e.trim().match(n.loose?ykt[bkt.LOOSE]:ykt[bkt.FULL]);if(!r)throw new TypeError("Invalid Version: ".concat(e));if(this.raw=e,this.major=+r[1],this.minor=+r[2],this.patch=+r[3],this.major>mkt||this.major<0)throw new TypeError("Invalid major version");if(this.minor>mkt||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>mkt||this.patch<0)throw new TypeError("Invalid patch version");r[4]?this.prerelease=r[4].split(".").map((function(t){if(/^[0-9]+$/.test(t)){var e=+t;if(e>=0&&e=0;)"number"==typeof this.prerelease[i]&&(this.prerelease[i]++,i=-2);if(-1===i){if(e===this.prerelease.join(".")&&!1===n)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(r)}}if(e){var o=[e,r];!1===n&&(o=[e]),0===wkt(this.prerelease[0],e)?isNaN(this.prerelease[1])&&(this.prerelease=o):this.prerelease=o}break;default:throw new Error("invalid increment argument: ".concat(t))}return this.raw=this.format(),this.build.length&&(this.raw+="+".concat(this.build.join("."))),this}}]),t}(),kkt=Skt,Ckt=kkt,Okt=function(t,e,n){return new Ckt(t,n).compare(new Ckt(e,n))},Ekt=Okt,Mkt=function(t,e,n){return 0===Ekt(t,e,n)},Akt=Okt,Pkt=function(t,e,n){return 0!==Akt(t,e,n)},_kt=Okt,Dkt=function(t,e,n){return _kt(t,e,n)>0},Tkt=Okt,Zkt=function(t,e,n){return Tkt(t,e,n)>=0},Fkt=Okt,jkt=function(t,e,n){return Fkt(t,e,n)<0},Ikt=Okt,Rkt=function(t,e,n){return Ikt(t,e,n)<=0},Lkt=Mkt,Nkt=Pkt,Bkt=Dkt,zkt=Zkt,Ukt=jkt,Hkt=Rkt,Wkt=function(t,e,n,r){switch(e){case"===":return"object"==typeof t&&(t=t.version),"object"==typeof n&&(n=n.version),t===n;case"!==":return"object"==typeof t&&(t=t.version),"object"==typeof n&&(n=n.version),t!==n;case"":case"=":case"==":return Lkt(t,n,r);case"!=":return Nkt(t,n,r);case">":return Bkt(t,n,r);case">=":return zkt(t,n,r);case"<":return Ukt(t,n,r);case"<=":return Hkt(t,n,r);default:throw new TypeError("Invalid operator: ".concat(e))}};function Vkt(){if(skt)return ukt;skt=1;var t=function(){function t(e,i){var o=this;if((0,Rm.Z)(this,t),i=n(i),e instanceof t)return e.loose===!!i.loose&&e.includePrerelease===!!i.includePrerelease?e:new t(e.raw,i);if(e instanceof r)return this.raw=e.value,this.set=[[e]],this.format(),this;if(this.options=i,this.loose=!!i.loose,this.includePrerelease=!!i.includePrerelease,this.raw=e.trim().split(/\s+/).join(" "),this.set=this.raw.split("||").map((function(t){return o.parseRange(t.trim())})).filter((function(t){return t.length})),!this.set.length)throw new TypeError("Invalid SemVer Range: ".concat(this.raw));if(this.set.length>1){var a=this.set[0];if(this.set=this.set.filter((function(t){return!d(t[0])})),0===this.set.length)this.set=[a];else if(this.set.length>1){var c,l=SSt(this.set);try{for(l.s();!(c=l.n()).done;){var u=c.value;if(1===u.length&&p(u[0])){this.set=[u];break}}}catch(s){l.e(s)}finally{l.f()}}}this.format()}return(0,Lm.Z)(t,[{key:"format",value:function(){return this.range=this.set.map((function(t){return t.join(" ").trim()})).join("||").trim(),this.range}},{key:"toString",value:function(){return this.range}},{key:"parseRange",value:function(t){var n=this,o=((this.options.includePrerelease&&f)|(this.options.loose&&h))+":"+t,p=e.get(o);if(p)return p;var v=this.options.loose,m=v?a[c.HYPHENRANGELOOSE]:a[c.HYPHENRANGE];t=t.replace(m,E(this.options.includePrerelease)),i("hyphen replace",t),t=t.replace(a[c.COMPARATORTRIM],l),i("comparator trim",t),t=t.replace(a[c.TILDETRIM],u),i("tilde trim",t),t=t.replace(a[c.CARETTRIM],s),i("caret trim",t);var y=t.split(" ").map((function(t){return g(t,n.options)})).join(" ").split(/\s+/).map((function(t){return O(t,n.options)}));v&&(y=y.filter((function(t){return i("loose invalid filter",t,n.options),!!t.match(a[c.COMPARATORLOOSE])}))),i("range list",y);var b,x=new Map,w=y.map((function(t){return new r(t,n.options)})),S=SSt(w);try{for(S.s();!(b=S.n()).done;){var k=b.value;if(d(k))return[k];x.set(k.value,k)}}catch(M){S.e(M)}finally{S.f()}x.size>1&&x.has("")&&x.delete("");var C=(0,Xm.Z)(x.values());return e.set(o,C),C}},{key:"intersects",value:function(e,n){if(!(e instanceof t))throw new TypeError("a Range is required");return this.set.some((function(t){return v(t,n)&&e.set.some((function(e){return v(e,n)&&t.every((function(t){return e.every((function(e){return t.intersects(e,n)}))}))}))}))}},{key:"test",value:function(t){if(!t)return!1;if("string"==typeof t)try{t=new o(t,this.options)}catch(j2t){return!1}for(var e=0;e")||!t.operator.startsWith(">"))&&(!this.operator.startsWith("<")||!t.operator.startsWith("<"))&&(this.semver.version!==t.semver.version||!this.operator.includes("=")||!t.operator.includes("="))&&!(o(this.semver,"<",t.semver,r)&&this.operator.startsWith(">")&&t.operator.startsWith("<"))&&!(o(this.semver,">",t.semver,r)&&this.operator.startsWith("<")&&t.operator.startsWith(">")))}}],[{key:"ANY",get:function(){return t}}]),e}();ckt=e;var n=nkt,r=fkt.safeRe,i=fkt.t,o=Wkt,a=akt,c=kkt,l=Vkt();return ckt}(),i=akt,o=kkt,a=fkt.safeRe,c=fkt.t,l=fkt.comparatorTrimReplace,u=fkt.tildeTrimReplace,s=fkt.caretTrimReplace,f=ikt.FLAG_INCLUDE_PRERELEASE,h=ikt.FLAG_LOOSE,d=function(t){return"<0.0.0-0"===t.value},p=function(t){return""===t.value},v=function(t,e){for(var n=!0,r=t.slice(),i=r.pop();n&&r.length;)n=r.every((function(t){return i.intersects(t,e)})),i=r.pop();return n},g=function(t,e){return i("comp",t,e),t=x(t,e),i("caret",t),t=y(t,e),i("tildes",t),t=S(t,e),i("xrange",t),t=C(t,e),i("stars",t),t},m=function(t){return!t||"x"===t.toLowerCase()||"*"===t},y=function(t,e){return t.trim().split(/\s+/).map((function(t){return b(t,e)})).join(" ")},b=function(t,e){var n=e.loose?a[c.TILDELOOSE]:a[c.TILDE];return t.replace(n,(function(e,n,r,o,a){var c;return i("tilde",t,e,n,r,o,a),m(n)?c="":m(r)?c=">=".concat(n,".0.0 <").concat(+n+1,".0.0-0"):m(o)?c=">=".concat(n,".").concat(r,".0 <").concat(n,".").concat(+r+1,".0-0"):a?(i("replaceTilde pr",a),c=">=".concat(n,".").concat(r,".").concat(o,"-").concat(a," <").concat(n,".").concat(+r+1,".0-0")):c=">=".concat(n,".").concat(r,".").concat(o," <").concat(n,".").concat(+r+1,".0-0"),i("tilde return",c),c}))},x=function(t,e){return t.trim().split(/\s+/).map((function(t){return w(t,e)})).join(" ")},w=function(t,e){i("caret",t,e);var n=e.loose?a[c.CARETLOOSE]:a[c.CARET],r=e.includePrerelease?"-0":"";return t.replace(n,(function(e,n,o,a,c){var l;return i("caret",t,e,n,o,a,c),m(n)?l="":m(o)?l=">=".concat(n,".0.0").concat(r," <").concat(+n+1,".0.0-0"):m(a)?l="0"===n?">=".concat(n,".").concat(o,".0").concat(r," <").concat(n,".").concat(+o+1,".0-0"):">=".concat(n,".").concat(o,".0").concat(r," <").concat(+n+1,".0.0-0"):c?(i("replaceCaret pr",c),l="0"===n?"0"===o?">=".concat(n,".").concat(o,".").concat(a,"-").concat(c," <").concat(n,".").concat(o,".").concat(+a+1,"-0"):">=".concat(n,".").concat(o,".").concat(a,"-").concat(c," <").concat(n,".").concat(+o+1,".0-0"):">=".concat(n,".").concat(o,".").concat(a,"-").concat(c," <").concat(+n+1,".0.0-0")):(i("no pr"),l="0"===n?"0"===o?">=".concat(n,".").concat(o,".").concat(a).concat(r," <").concat(n,".").concat(o,".").concat(+a+1,"-0"):">=".concat(n,".").concat(o,".").concat(a).concat(r," <").concat(n,".").concat(+o+1,".0-0"):">=".concat(n,".").concat(o,".").concat(a," <").concat(+n+1,".0.0-0")),i("caret return",l),l}))},S=function(t,e){return i("replaceXRanges",t,e),t.split(/\s+/).map((function(t){return k(t,e)})).join(" ")},k=function(t,e){t=t.trim();var n=e.loose?a[c.XRANGELOOSE]:a[c.XRANGE];return t.replace(n,(function(n,r,o,a,c,l){i("xRange",t,n,r,o,a,c,l);var u=m(o),s=u||m(a),f=s||m(c),h=f;return"="===r&&h&&(r=""),l=e.includePrerelease?"-0":"",u?n=">"===r||"<"===r?"<0.0.0-0":"*":r&&h?(s&&(a=0),c=0,">"===r?(r=">=",s?(o=+o+1,a=0,c=0):(a=+a+1,c=0)):"<="===r&&(r="<",s?o=+o+1:a=+a+1),"<"===r&&(l="-0"),n="".concat(r+o,".").concat(a,".").concat(c).concat(l)):s?n=">=".concat(o,".0.0").concat(l," <").concat(+o+1,".0.0-0"):f&&(n=">=".concat(o,".").concat(a,".0").concat(l," <").concat(o,".").concat(+a+1,".0-0")),i("xRange return",n),n}))},C=function(t,e){return i("replaceStars",t,e),t.trim().replace(a[c.STAR],"")},O=function(t,e){return i("replaceGTE0",t,e),t.trim().replace(a[e.includePrerelease?c.GTE0PRE:c.GTE0],"")},E=function(t){return function(e,n,r,i,o,a,c,l,u,s,f,h,d){return n=m(r)?"":m(i)?">=".concat(r,".0.0").concat(t?"-0":""):m(o)?">=".concat(r,".").concat(i,".0").concat(t?"-0":""):a?">=".concat(n):">=".concat(n).concat(t?"-0":""),l=m(u)?"":m(s)?"<".concat(+u+1,".0.0-0"):m(f)?"<".concat(u,".").concat(+s+1,".0-0"):h?"<=".concat(u,".").concat(s,".").concat(f,"-").concat(h):t?"<".concat(u,".").concat(s,".").concat(+f+1,"-0"):"<=".concat(l),"".concat(n," ").concat(l).trim()}},M=function(t,e,n){for(var o=0;o0){var c=t[a].semver;if(c.major===e.major&&c.minor===e.minor&&c.patch===e.patch)return!0}return!1}return!0};return ukt}var Gkt=Vkt(),Xkt=function(t,e,n){try{e=new Gkt(e,n)}catch(j2t){return!1}return e.test(t)},qkt=MSt(Xkt);function Ykt(t,e,n){var r=t.open(e),i=new URL(e).origin,o=40;t.addEventListener("message",(function e(n){n.source===r&&(o=0,t.removeEventListener("message",e,!1))}),!1),setTimeout((function t(){o<=0||(r.postMessage(n,i),setTimeout(t,250),o-=1)}),250)}var $kt='.vega-embed {\n position: relative;\n display: inline-block;\n box-sizing: border-box;\n}\n.vega-embed.has-actions {\n padding-right: 38px;\n}\n.vega-embed details:not([open]) > :not(summary) {\n display: none !important;\n}\n.vega-embed summary {\n list-style: none;\n position: absolute;\n top: 0;\n right: 0;\n padding: 6px;\n z-index: 1000;\n background: white;\n box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.1);\n color: #1b1e23;\n border: 1px solid #aaa;\n border-radius: 999px;\n opacity: 0.2;\n transition: opacity 0.4s ease-in;\n cursor: pointer;\n line-height: 0px;\n}\n.vega-embed summary::-webkit-details-marker {\n display: none;\n}\n.vega-embed summary:active {\n box-shadow: #aaa 0px 0px 0px 1px inset;\n}\n.vega-embed summary svg {\n width: 14px;\n height: 14px;\n}\n.vega-embed details[open] summary {\n opacity: 0.7;\n}\n.vega-embed:hover summary, .vega-embed:focus-within summary {\n opacity: 1 !important;\n transition: opacity 0.2s ease;\n}\n.vega-embed .vega-actions {\n position: absolute;\n z-index: 1001;\n top: 35px;\n right: -9px;\n display: flex;\n flex-direction: column;\n padding-bottom: 8px;\n padding-top: 8px;\n border-radius: 4px;\n box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.2);\n border: 1px solid #d9d9d9;\n background: white;\n animation-duration: 0.15s;\n animation-name: scale-in;\n animation-timing-function: cubic-bezier(0.2, 0, 0.13, 1.5);\n text-align: left;\n}\n.vega-embed .vega-actions a {\n padding: 8px 16px;\n font-family: sans-serif;\n font-size: 14px;\n font-weight: 600;\n white-space: nowrap;\n color: #434a56;\n text-decoration: none;\n}\n.vega-embed .vega-actions a:hover, .vega-embed .vega-actions a:focus {\n background-color: #f7f7f9;\n color: black;\n}\n.vega-embed .vega-actions::before, .vega-embed .vega-actions::after {\n content: "";\n display: inline-block;\n position: absolute;\n}\n.vega-embed .vega-actions::before {\n left: auto;\n right: 14px;\n top: -16px;\n border: 8px solid rgba(0, 0, 0, 0);\n border-bottom-color: #d9d9d9;\n}\n.vega-embed .vega-actions::after {\n left: auto;\n right: 15px;\n top: -14px;\n border: 7px solid rgba(0, 0, 0, 0);\n border-bottom-color: #fff;\n}\n.vega-embed .chart-wrapper.fit-x {\n width: 100%;\n}\n.vega-embed .chart-wrapper.fit-y {\n height: 100%;\n}\n\n.vega-embed-wrapper {\n max-width: 100%;\n overflow: auto;\n padding-right: 14px;\n}\n\n@keyframes scale-in {\n from {\n opacity: 0;\n transform: scale(0.6);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n';function Kkt(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;r
    '),o="
    ".concat(n,""),a=window.open("");a.document.write(i+t+o),a.document.title="".concat(aCt[r]," JSON Source")}function dCt(t,e){if(t.$schema){var n,r=rwt(t.$schema);if(e&&e!==r.library)console.warn("The given visualization spec is written in ".concat(aCt[r.library],", but mode argument sets ").concat(null!==(n=aCt[e])&&void 0!==n?n:e,"."));var i=r.library;return qkt(cCt[i],"^".concat(r.version.slice(1)))||console.warn("The input spec uses ".concat(aCt[i]," ").concat(r.version,", but the current version of ").concat(aCt[i]," is v").concat(cCt[i],".")),i}return"mark"in t||"encoding"in t||"layer"in t||"hconcat"in t||"vconcat"in t||"facet"in t||"repeat"in t?"vega-lite":"marks"in t||"signals"in t||"scales"in t||"axes"in t?"vega":null!=e?e:"vega"}function pCt(t){return(e=t)&&"load"in e?t:eCt.loader(t);var e}function vCt(t){var e,n,r=null!==(e=null===(n=t.usermeta)||void 0===n?void 0:n.embedOptions)&&void 0!==e?e:{};return Vb(r.defaultStyle)&&(r.defaultStyle=!1),r}function gCt(){return gCt=Gm(q().mark((function t(e,n){var r,i,o,a,c,l,u,s,f,h,d,p=arguments;return q().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(o=p.length>2&&void 0!==p[2]?p[2]:{},!Vb(n)){t.next=10;break}return c=pCt(o.loader),t.t0=JSON,t.next=6,c.load(n);case 6:t.t1=t.sent,a=t.t0.parse.call(t.t0,t.t1),t.next=11;break;case 10:a=n;case 11:return l=vCt(a),u=l.loader,c&&!u||(c=pCt(null!==(s=o.loader)&&void 0!==s?s:u)),t.next=16,mCt(l,c);case 16:return f=t.sent,t.next=19,mCt(o,c);case 19:return h=t.sent,d=tCt(tCt({},Kkt(h,f)),{},{config:Ky(null!==(r=h.config)&&void 0!==r?r:{},null!==(i=f.config)&&void 0!==i?i:{})}),t.next=23,xCt(e,a,d,c);case 23:return t.abrupt("return",t.sent);case 24:case"end":return t.stop()}}),t)}))),gCt.apply(this,arguments)}function mCt(t,e){return yCt.apply(this,arguments)}function yCt(){return yCt=Gm(q().mark((function t(e,n){var r,i,o;return q().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!Vb(e.config)){t.next=8;break}return t.t1=JSON,t.next=4,n.load(e.config);case 4:t.t2=t.sent,t.t0=t.t1.parse.call(t.t1,t.t2),t.next=9;break;case 8:t.t0=null!==(r=e.config)&&void 0!==r?r:{};case 9:if(i=t.t0,!Vb(e.patch)){t.next=18;break}return t.t4=JSON,t.next=14,n.load(e.patch);case 14:t.t5=t.sent,t.t3=t.t4.parse.call(t.t4,t.t5),t.next=19;break;case 18:t.t3=e.patch;case 19:return o=t.t3,t.abrupt("return",tCt(tCt(tCt({},e),o?{patch:o}:{}),i?{config:i}:{}));case 21:case"end":return t.stop()}}),t)}))),yCt.apply(this,arguments)}function bCt(t){var e,n=t.getRootNode?t.getRootNode():document;return n instanceof ShadowRoot?{root:n,rootContainer:n}:{root:document,rootContainer:null!==(e=document.head)&&void 0!==e?e:document.body}}function xCt(t,e){return wCt.apply(this,arguments)}function wCt(){return wCt=Gm(q().mark((function t(e,n){var r,i,o,a,c,l,u,s,f,h,d,p,v,g,m,y,x,w,S,k,C,O,E,M,A,P,_,D,T,Z,F,j,I,R,L,N,B,z,U,H,W,V,G,X,Y,$,K,J,Q,tt,et,nt=arguments;return q().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(et=function(){z&&document.removeEventListener("click",z),j.finalize()},f=nt.length>3?nt[3]:void 0,h=(s=nt.length>2&&void 0!==nt[2]?nt[2]:{}).theme?Ky(b[s.theme],null!==(r=s.config)&&void 0!==r?r:{}):s.config,d=Bb(s.actions)?s.actions:Kkt({},iCt,null!==(i=s.actions)&&void 0!==i?i:{}),p=tCt(tCt({},oCt),s.i18n),v=null!==(o=s.renderer)&&void 0!==o?o:"canvas",g=null!==(a=s.logLevel)&&void 0!==a?a:eCt.Warn,m=null!==(c=s.downloadFileName)&&void 0!==c?c:"visualization",y="string"==typeof e?document.querySelector(e):e){t.next=12;break}throw new Error("".concat(e," does not exist"));case 12:if(!1!==s.defaultStyle&&(x="vega-embed-style",w=bCt(y),S=w.root,k=w.rootContainer,S.getElementById(x)||((C=document.createElement("style")).id=x,C.innerHTML=void 0===s.defaultStyle||!0===s.defaultStyle?$kt.toString():s.defaultStyle,k.appendChild(C))),O=dCt(n,s.mode),E=lCt[O](n,h),"vega-lite"===O&&E.$schema&&(M=rwt(E.$schema),qkt(cCt.vega,"^".concat(M.version.slice(1)))||console.warn("The compiled spec uses Vega ".concat(M.version,", but current version is v").concat(cCt.vega,"."))),y.classList.add("vega-embed"),d&&y.classList.add("has-actions"),y.innerHTML="",A=y,d&&((P=document.createElement("div")).classList.add(sCt),y.appendChild(P),A=P),(_=s.patch)&&(E=_ instanceof Function?_(E):fy(E,_,!0,!1).newDocument),s.formatLocale&&eCt.formatLocale(s.formatLocale),s.timeFormatLocale&&eCt.timeFormatLocale(s.timeFormatLocale),s.expressionFunctions)for(D in s.expressionFunctions)"fn"in(T=s.expressionFunctions[D])?eCt.expressionFunction(D,T.fn,T.visitor):T instanceof Function&&eCt.expressionFunction(D,T);return Z=s.ast,F=eCt.parse(E,"vega-lite"===O?{}:h,{ast:Z}),(j=new(s.viewClass||eCt.View)(F,tCt({loader:f,logLevel:g,renderer:v},Z?{expr:null!==(l=null!==(u=eCt.expressionInterpreter)&&void 0!==u?u:s.expr)&&void 0!==l?l:F7}:{}))).addSignalListener("autosize",(function(t,e){var n=e.type;"fit-x"==n?(A.classList.add("fit-x"),A.classList.remove("fit-y")):"fit-y"==n?(A.classList.remove("fit-x"),A.classList.add("fit-y")):"fit"==n?A.classList.add("fit-x","fit-y"):A.classList.remove("fit-x","fit-y")})),!1!==s.tooltip&&(I=fCt(s.tooltip)?s.tooltip:new wSt(!0===s.tooltip?{}:s.tooltip).call,j.tooltip(I)),void 0===(R=s.hover)&&(R="vega"===O),R&&(N=(L="boolean"==typeof R?{}:R).hoverSet,B=L.updateSet,j.hover(N,B)),s&&(null!=s.width&&j.width(s.width),null!=s.height&&j.height(s.height),null!=s.padding&&j.padding(s.padding)),t.next=37,j.initialize(A,s.bind).runAsync();case 37:if(!1===d){t.next=54;break}if(U=y,!1!==s.defaultStyle&&((H=document.createElement("details")).title=p.CLICK_TO_VIEW_ACTIONS,y.append(H),U=H,(W=document.createElement("summary")).innerHTML=uCt,H.append(W),z=function(t){H.contains(t.target)||H.removeAttribute("open")},document.addEventListener("click",z)),V=document.createElement("div"),U.append(V),V.classList.add("vega-actions"),!0!==d&&!1===d.export){t.next=51;break}G=q().mark((function t(){var e,n,r,i;return q().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:e=Y[X],(!0===d||!0===d.export||d.export[e])&&(n=p["".concat(e.toUpperCase(),"_ACTION")],r=document.createElement("a"),i=Yy(s.scaleFactor)?s.scaleFactor[e]:s.scaleFactor,r.text=n,r.href="#",r.target="_blank",r.download="".concat(m,".").concat(e),r.addEventListener("mousedown",function(){var t=Gm(q().mark((function t(n){var r;return q().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n.preventDefault(),t.next=3,j.toImageURL(e,i);case 3:r=t.sent,this.href=r;case 5:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}()),V.append(r));case 2:case"end":return t.stop()}}),t)})),X=0,Y=["svg","png"];case 46:if(!(X0}function ACt(t,e){var n=Object.keys(e);return n.forEach((function(n){try{t.removeSignalListener(n,e[n])}catch(r){console.warn("Cannot remove invalid signal listener.",r)}})),n.length>0}function PCt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function _Ct(t){for(var e=1;e0&&this.vegaEmbed.current.modifyView((function(e){SCt(e,t),e.resize().run()}))}},{key:"render",value:function(){var t=this.props,e=(t.data,(0,I.Z)(t,ICt));return Z.createElement(jCt,LCt({ref:this.vegaEmbed},e,{onNewView:this.handleNewView}))}}]),n}(Z.PureComponent);NCt(BCt,"defaultProps",{data:{}});var zCt=n(45107),UCt=function(t){var e=t.raster,n=t.library,r=t.goal,i=Z.useState(!1),o=i[0],a=i[1];return Z.createElement("div",null,e&&Z.createElement("div",{className:"border rounded bg-white"},Z.createElement("img",{role:"button",onClick:function(){a(!0)},style:{height:"390px"},src:"data:image/png;base64,"+e,className:"rounded object-fit bg-white p-2 pt-4",alt:"chart"})),!e&&Z.createElement("div",{style:{minWidth:"200px"}}," ",Z.createElement(zCt.Z,{className:"w-5 h-5 text-orange-400 inline-block"})," ","No visualization image generated."),Z.createElement(Ss,{title:Z.createElement(Z.Fragment,null,Z.createElement("span",{className:"capitalize"},n)," Chart"),open:o,onOk:function(){a(!1)},onCancel:function(){a(!1)},width:800},Z.createElement("div",{className:"mb-2"},null==r?void 0:r.question),Z.createElement("div",{className:"mb-4 text-secondary"},null==r?void 0:r.rationale),Z.createElement("img",{style:{width:"100%",height:"100%"},src:"data:image/png;base64,"+e,className:"rounded object-fit p-2 pt-4 bg-white",alt:"chart"})))},HCt=["title","titleId"];var WCt=Z.forwardRef((function(t,e){var n=t.title,r=t.titleId,i=(0,I.Z)(t,HCt);return Z.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true",ref:e,"aria-labelledby":r},i),n?Z.createElement("title",{id:r},n):null,Z.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M17.25 6.75L22.5 12l-5.25 5.25m-10.5 0L1.5 12l5.25-5.25m7.5-3l-4.5 16.5"}))})),VCt=function(t){var e=t.spec,n=t.code,r=t.error,i=t.status,o=[];return null!==e&&o.push({label:Z.createElement("div",null," ",Z.createElement(rl,{className:"inline-block h-4"})," Vega-Lite Spec"),key:"1",children:Z.createElement("div",{className:"w-full overflow-hidden"},Z.createElement(Cs.d,{code:JSON.stringify(e,null,2),language:"javascript",wrapLines:!0,maxHeight:"280px"}))}),o.push({label:Z.createElement("div",null," ",Z.createElement(WCt,{className:"inline-block h-4"})," Python Code"),key:"2",children:Z.createElement("div",{className:"w-full overflow-hidden"},Z.createElement(Cs.d,{code:n,language:"python",wrapLines:!0,maxHeight:"280px"}))}),!1===i&&r&&o.push({label:Z.createElement("div",{className:""}," ",Z.createElement(zCt.Z,{className:"inline-block h-4 text-orange-400"})," ","Error"),key:"3",children:Z.createElement("div",{className:"w-full overflow-hidden"},Z.createElement("div",{className:"text-xs mb-2 text-primary mt-2 "}," Error Message "),Z.createElement(Cs.d,{code:r.message,language:"javascript",wrapLines:!0}),Z.createElement("div",{className:"text-xs mb-2 text-primary mt-2"}," Traceback "),Z.createElement(Cs.d,{code:r.traceback,language:"javascript",wrapLines:!0}))}),Z.createElement("div",{className:"w-full p-3 border rounded text-primary "},Z.createElement(Im,{defaultActiveKey:"1",onChange:function(){},items:o}))},GCt=function(t){var e=t.vizData,n=t.vizConfig,r=Z.useState(!1),i=r[0],o=r[1],a=Z.useState(null),c=(a[0],a[1]),l=Z.useState([]),u=l[0],s=l[1],f=Z.useRef(null);Z.useEffect((function(){s([])}),[e]);var h=null==u?void 0:u.map((function(t,e){var n="accessibility"===t.section;return Z.createElement("div",{className:"mb-4",key:"explanationsrow"+e},Z.createElement("div",{className:"font-semibold text-lg"}," ",t.section),Z.createElement("div",{className:"flex gap-4"},Z.createElement("div",{className:(n?"":" w-1/2")+" "},t.explanation),!n&&Z.createElement("div",{className:"w-1/2"},Z.createElement(Cs.d,{code:""+t.code,language:"python",wrapLines:!0}))))}));return Z.createElement("div",{className:"text-primary"},Z.createElement("div",{onClick:function(){return function(){c(null),o(!0),s([]),setTimeout((function(){(0,N.kI)(f)}),600);var t={method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({code:e.code,library:n.library,textgen_config:n.textgen_config})};(0,N.ZV)("/api/visualize/explain",t,(function(t){t&&t.status?(console.log("Explanation data",t),s(t.explanations),kc.success(t.message),setTimeout((function(){(0,N.kI)(f)}),400)):(kc.error(t.message),c(t)),o(!1)}),(function(t){kc.error(t.message),o(!1),c(t)}))}()},role:"button",className:"px-5 bg-accent duration-300 hover:brightness-110 text-white inline-block rounded p-2 "+(i?"opacity-50 pointer-events-none":"")+" "},!i&&Z.createElement(nv.Z,{className:"w-5 h-5 mr-1 inline-block"}),i&&Z.createElement(ks.rH,{className:"text-white inline-block"})," Explain the chart."),i&&Z.createElement("div",{className:"mt-4"},Z.createElement(ks.rH,{className:"text-accent",subtitle:"loading explanations .."}),Z.createElement(Gc,{active:!0,className:"mt-4",paragraph:{rows:12}})),Z.createElement("div",{ref:f,className:"mt-4"},h))},XCt=n(11005),qCt=["title","titleId"];var YCt,$Ct,KCt,JCt=Z.forwardRef((function(t,e){var n=t.title,r=t.titleId,i=(0,I.Z)(t,qCt);return Z.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",ref:e,"aria-labelledby":r},i),n?Z.createElement("title",{id:r},n):null,Z.createElement("path",{fillRule:"evenodd",d:"M10.788 3.21c.448-1.077 1.976-1.077 2.424 0l2.082 5.007 5.404.433c1.164.093 1.636 1.545.749 2.305l-4.117 3.527 1.257 5.273c.271 1.136-.964 2.033-1.96 1.425L12 18.354 7.373 21.18c-.996.608-2.231-.29-1.96-1.425l1.257-5.273-4.117-3.527c-.887-.76-.415-2.212.749-2.305l5.404-.433 2.082-5.006z",clipRule:"evenodd"}))})),QCt=n(70903),tOt=n(90326);!function(t){t.FORE="fore",t.MID="mid",t.BG="bg"}(YCt||(YCt={})),function(t){t.TOP="top",t.TOP_LEFT="top-left",t.TOP_RIGHT="top-right",t.RIGHT="right",t.RIGHT_TOP="right-top",t.RIGHT_BOTTOM="right-bottom",t.LEFT="left",t.LEFT_TOP="left-top",t.LEFT_BOTTOM="left-bottom",t.BOTTOM="bottom",t.BOTTOM_LEFT="bottom-left",t.BOTTOM_RIGHT="bottom-right",t.RADIUS="radius",t.CIRCLE="circle",t.NONE="none"}($Ct||($Ct={})),function(t){t.AXIS="axis",t.GRID="grid",t.LEGEND="legend",t.TOOLTIP="tooltip",t.ANNOTATION="annotation",t.SLIDER="slider",t.SCROLLBAR="scrollbar",t.OTHER="other"}(KCt||(KCt={}));var eOt,nOt,rOt,iOt,oOt=3,aOt=2,cOt=1;!function(t){t.BEFORE_RENDER="beforerender",t.AFTER_RENDER="afterrender",t.BEFORE_PAINT="beforepaint",t.AFTER_PAINT="afterpaint",t.BEFORE_CHANGE_DATA="beforechangedata",t.AFTER_CHANGE_DATA="afterchangedata",t.BEFORE_CLEAR="beforeclear",t.AFTER_CLEAR="afterclear",t.BEFORE_DESTROY="beforedestroy",t.BEFORE_CHANGE_SIZE="beforechangesize",t.AFTER_CHANGE_SIZE="afterchangesize"}(eOt||(eOt={})),function(t){t.BEFORE_DRAW_ANIMATE="beforeanimate",t.AFTER_DRAW_ANIMATE="afteranimate",t.BEFORE_RENDER_LABEL="beforerenderlabel",t.AFTER_RENDER_LABEL="afterrenderlabel"}(nOt||(nOt={})),function(t){t.MOUSE_ENTER="plot:mouseenter",t.MOUSE_DOWN="plot:mousedown",t.MOUSE_MOVE="plot:mousemove",t.MOUSE_UP="plot:mouseup",t.MOUSE_LEAVE="plot:mouseleave",t.TOUCH_START="plot:touchstart",t.TOUCH_MOVE="plot:touchmove",t.TOUCH_END="plot:touchend",t.TOUCH_CANCEL="plot:touchcancel",t.CLICK="plot:click",t.DBLCLICK="plot:dblclick",t.CONTEXTMENU="plot:contextmenu",t.LEAVE="plot:leave",t.ENTER="plot:enter"}(rOt||(rOt={})),function(t){t.ACTIVE="active",t.INACTIVE="inactive",t.SELECTED="selected",t.DEFAULT="default"}(iOt||(iOt={}));var lOt,uOt,sOt,fOt,hOt=["color","shape","size"],dOt="_origin",pOt={};function vOt(t,e){pOt[t]=e}function gOt(t){lOt||(lOt=document.createElement("table"),uOt=document.createElement("tr"),sOt=/^\s*<(\w+|!)[^>]*>/,fOt={tr:document.createElement("tbody"),tbody:lOt,thead:lOt,tfoot:lOt,td:uOt,th:uOt,"*":document.createElement("div")});var e=sOt.test(t)&&RegExp.$1;e&&e in fOt||(e="*");var n=fOt[e];t="string"==typeof t?t.replace(/(^\s*)|(\s*$)/g,""):t,n.innerHTML=""+t;var r=n.childNodes[0];return r&&n.contains(r)&&n.removeChild(r),r}function mOt(t,e){if(t)for(var n in e)e.hasOwnProperty(n)&&(t.style[n]=e[n]);return t}function yOt(t){return"number"==typeof t&&!isNaN(t)}function bOt(t,e,n,r){var i=n,o=r;if(e){var a=function(t){var e=getComputedStyle(t);return{width:(t.clientWidth||parseInt(e.width,10))-parseInt(e.paddingLeft,10)-parseInt(e.paddingRight,10),height:(t.clientHeight||parseInt(e.height,10))-parseInt(e.paddingTop,10)-parseInt(e.paddingBottom,10)}}(t);i=a.width?a.width:i,o=a.height?a.height:o}return{width:Math.max(yOt(i)?i:1,1),height:Math.max(yOt(o)?o:1,1)}}var xOt=n(81819),wOt=function(t){function e(e){var n=t.call(this)||this;n.destroyed=!1;var r=e.visible,i=void 0===r||r;return n.visible=i,n}return(0,QCt.ZT)(e,t),e.prototype.show=function(){this.visible||this.changeVisible(!0)},e.prototype.hide=function(){this.visible&&this.changeVisible(!1)},e.prototype.destroy=function(){this.off(),this.destroyed=!0},e.prototype.changeVisible=function(t){this.visible!==t&&(this.visible=t)},e}(xOt.Z),SOt=wOt,kOt=n(82854),COt=function(){function t(t){var e=t.xField,n=t.yField,r=t.adjustNames,i=void 0===r?["x","y"]:r,o=t.dimValuesMap;this.adjustNames=i,this.xField=e,this.yField=n,this.dimValuesMap=o}return t.prototype.isAdjust=function(t){return this.adjustNames.indexOf(t)>=0},t.prototype.getAdjustRange=function(t,e,n){var r,i,o=this.yField,a=n.indexOf(e),c=n.length;return!o&&this.isAdjust("y")?(r=0,i=1):c>1?(r=n[0===a?0:a-1],i=n[a===c-1?c-1:a+1],0!==a?r+=(e-r)/2:r-=(i-e)/2,a!==c-1?i-=(i-e)/2:i+=(e-n[c-2])/2):(r=0===e?0:e-.5,i=0===e?1:e+.5),{pre:r,next:i}},t.prototype.adjustData=function(t,e){var n=this,r=this.getDimValues(e);tOt.S6(t,(function(t,e){tOt.S6(r,(function(r,i){n.adjustDim(i,r,t,e)}))}))},t.prototype.groupData=function(t,e){return tOt.S6(t,(function(t){void 0===t[e]&&(t[e]=0)})),tOt.vM(t,e)},t.prototype.adjustDim=function(t,e,n,r){},t.prototype.getDimValues=function(t){var e=this.xField,n=this.yField,r=tOt.f0({},this.dimValuesMap),i=[];if(e&&this.isAdjust("x")&&i.push(e),n&&this.isAdjust("y")&&i.push(n),i.forEach((function(e){r&&r[e]||(r[e]=tOt.I(t,e).sort((function(t,e){return t-e})))})),!n&&this.isAdjust("y")){r.y=[0,1]}return r},t}(),OOt=COt,EOt={},MOt=function(t){return EOt[t.toLowerCase()]},AOt=function(t,e){if(MOt(t))throw new Error("Adjust type '"+t+"' existed.");EOt[t.toLowerCase()]=e},POt=function(t,e){return POt=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])},POt(t,e)};function _Ot(t,e){function n(){this.constructor=t}POt(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}var DOt=function(){return DOt=Object.assign||function(t){for(var e,n=1,r=arguments.length;n=0)r=u+this.getIntervalOnlyOffset(n,e);else if(!tOt.UM(l)&&tOt.UM(c)&&l>=0){r=u+this.getDodgeOnlyOffset(n,e)}else if(!tOt.UM(c)&&!tOt.UM(l)&&c>=0&&l>=0){r=u+this.getIntervalAndDodgeOffset(n,e)}else{var h=f*o/n,d=a*h;r=(u+s)/2+(.5*(f-n*h-(n-1)*d)+((e+1)*h+e*d)-.5*h-.5*f)}return r},e.prototype.getIntervalOnlyOffset=function(t,e){var n=this,r=n.defaultSize,i=n.intervalPadding,o=n.xDimensionLegenth,a=n.groupNum,c=n.dodgeRatio,l=n.maxColumnWidth,u=n.minColumnWidth,s=n.columnWidthRatio,f=i/o,h=(1-(a-1)*f)/a*c/(t-1),d=((1-f*(a-1))/a-h*(t-1))/t;if(d=tOt.UM(s)?d:1/a/t*s,!tOt.UM(l)){var p=l/o;d=Math.min(d,p)}if(!tOt.UM(u)){var v=u/o;d=Math.max(d,v)}return((.5+e)*(d=r?r/o:d)+e*(h=((1-(a-1)*f)/a-t*d)/(t-1))+.5*f)*a-f/2},e.prototype.getDodgeOnlyOffset=function(t,e){var n=this,r=n.defaultSize,i=n.dodgePadding,o=n.xDimensionLegenth,a=n.groupNum,c=n.marginRatio,l=n.maxColumnWidth,u=n.minColumnWidth,s=n.columnWidthRatio,f=i/o,h=1*c/(a-1),d=((1-h*(a-1))/a-f*(t-1))/t;if(d=s?1/a/t*s:d,!tOt.UM(l)){var p=l/o;d=Math.min(d,p)}if(!tOt.UM(u)){var v=u/o;d=Math.max(d,v)}return((.5+e)*(d=r?r/o:d)+e*f+.5*(h=(1-(d*t+f*(t-1))*a)/(a-1)))*a-h/2},e.prototype.getIntervalAndDodgeOffset=function(t,e){var n=this,r=n.intervalPadding,i=n.dodgePadding,o=n.xDimensionLegenth,a=n.groupNum,c=r/o,l=i/o;return((.5+e)*(((1-c*(a-1))/a-l*(t-1))/t)+e*l+.5*c)*a-c/2},e.prototype.getDistribution=function(t){var e=this.adjustDataArray,n=this.cacheMap,r=n[t];return r||(r={},tOt.S6(e,(function(e,n){var i=tOt.I(e,t);i.length||i.push(0),tOt.S6(i,(function(t){r[t]||(r[t]=[]),r[t].push(n)}))})),n[t]=r),r},e}(OOt),ZOt=TOt;var FOt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return _Ot(e,t),e.prototype.process=function(t){var e=tOt.d9(t),n=tOt.xH(e);return this.adjustData(e,n),e},e.prototype.adjustDim=function(t,e,n){var r=this,i=this.groupData(n,t);return tOt.S6(i,(function(n,i){return r.adjustGroup(n,t,parseFloat(i),e)}))},e.prototype.getAdjustOffset=function(t){var e=t.pre,n=t.next,r=.05*(n-e);return function(t,e){return(e-t)*Math.random()+t}(e+r,n-r)},e.prototype.adjustGroup=function(t,e,n,r){var i=this,o=this.getAdjustRange(e,n,r);return tOt.S6(t,(function(t){t[e]=i.getAdjustOffset(o)})),t},e}(OOt),jOt=FOt,IOt=tOt.Ct,ROt=function(t){function e(e){var n=t.call(this,e)||this,r=e.adjustNames,i=void 0===r?["y"]:r,o=e.height,a=void 0===o?NaN:o,c=e.size,l=void 0===c?10:c,u=e.reverseOrder,s=void 0!==u&&u;return n.adjustNames=i,n.height=a,n.size=l,n.reverseOrder=s,n}return _Ot(e,t),e.prototype.process=function(t){var e=this.yField,n=this.reverseOrder,r=e?this.processStack(t):this.processOneDimStack(t);return n?this.reverse(r):r},e.prototype.reverse=function(t){return t.slice(0).reverse()},e.prototype.processStack=function(t){var e=this,n=e.xField,r=e.yField,i=e.reverseOrder?this.reverse(t):t,o=new IOt,a=new IOt;return i.map((function(t){return t.map((function(t){var e,i=tOt.U2(t,n,0),c=tOt.U2(t,[r]),l=i.toString();if(c=tOt.kJ(c)?c[1]:c,!tOt.UM(c)){var u=c>=0?o:a;u.has(l)||u.set(l,0);var s=u.get(l),f=c+s;return u.set(l,f),DOt(DOt({},t),((e={})[r]=[s,f],e))}return t}))}))},e.prototype.processOneDimStack=function(t){var e=this,n=this,r=n.xField,i=n.height,o=n.reverseOrder,a=o?this.reverse(t):t,c=new IOt;return a.map((function(t){return t.map((function(t){var n,o=e.size,a=t[r],l=2*o/i;c.has(a)||c.set(a,l/2);var u=c.get(a);return c.set(a,u+l),DOt(DOt({},t),((n={}).y=u,n))}))}))},e}(OOt),LOt=ROt,NOt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return _Ot(e,t),e.prototype.process=function(t){var e=tOt.xH(t),n=this.xField,r=this.yField,i=this.getXValuesMaxMap(e),o=Math.max.apply(Math,Object.keys(i).map((function(t){return i[t]})));return tOt.UI(t,(function(t){return tOt.UI(t,(function(t){var e,a,c=t[r],l=t[n];if(tOt.kJ(c)){var u=(o-i[l])/2;return DOt(DOt({},t),((e={})[r]=tOt.UI(c,(function(t){return u+t})),e))}var s=(o-c)/2;return DOt(DOt({},t),((a={})[r]=[s,c+s],a))}))}))},e.prototype.getXValuesMaxMap=function(t){var e=this,n=this.xField,r=this.yField,i=tOt.vM(t,(function(t){return t[n]}));return tOt.Q8(i,(function(t){return e.getDimMaxValue(t,r)}))},e.prototype.getDimMaxValue=function(t,e){var n=tOt.UI(t,(function(t){return tOt.U2(t,e,[])})),r=tOt.xH(n);return Math.max.apply(Math,r)},e}(OOt),BOt=NOt;AOt("Dodge",ZOt),AOt("Jitter",jOt),AOt("Stack",LOt),AOt("Symmetric",BOt);var zOt=function(t,e){return(0,tOt.HD)(e)?e:t.invert(t.scale(e))},UOt=function(){function t(t){this.names=[],this.scales=[],this.linear=!1,this.values=[],this.callback=function(){return[]},this._parseCfg(t)}return t.prototype.mapping=function(){for(var t=this,e=[],n=0;n1?1:Number(e),r=t.length-1,i=Math.floor(r*n),o=r*n-i,a=t[i],c=i===r?a:t[i+1];return YOt([qOt(a,c,o,0),qOt(a,c,o,1),qOt(a,c,o,2)])}(n,t)}},toRGB:(0,tOt.HP)(QOt),toCSSGradient:function(t){if(/^[r,R,L,l]{1}[\s]*\(/.test(t)){var e,n=void 0;if("l"===t[0]){var r=+(i=VOt.exec(t))[1]+90;n=i[2],e="linear-gradient("+r+"deg, "}else if("r"===t[0]){var i;e="radial-gradient(",n=(i=GOt.exec(t))[4]}var o=n.match(XOt);return(0,tOt.S6)(o,(function(t,n){var r=t.split(":");e+=r[1]+" "+100*r[0]+"%",n!==o.length-1&&(e+=", ")})),e+=")"}return t}},eEt=function(t){function e(e){var n=t.call(this,e)||this;return n.type="color",n.names=["color"],(0,tOt.HD)(n.values)&&(n.linear=!0),n.gradient=tEt.gradient(n.values),n}return(0,QCt.ZT)(e,t),e.prototype.getLinearValue=function(t){return this.gradient(t)},e}(HOt),nEt=eEt,rEt=function(t){function e(e){var n=t.call(this,e)||this;return n.type="opacity",n.names=["opacity"],n}return(0,QCt.ZT)(e,t),e}(HOt),iEt=rEt,oEt=function(t){function e(e){var n=t.call(this,e)||this;return n.names=["x","y"],n.type="position",n}return(0,QCt.ZT)(e,t),e.prototype.mapping=function(t,e){var n=this.scales,r=n[0],i=n[1];return(0,tOt.UM)(t)||(0,tOt.UM)(e)?[]:[(0,tOt.kJ)(t)?t.map((function(t){return r.scale(t)})):r.scale(t),(0,tOt.kJ)(e)?e.map((function(t){return i.scale(t)})):i.scale(e)]},e}(HOt),aEt=oEt,cEt=function(t){function e(e){var n=t.call(this,e)||this;return n.type="shape",n.names=["shape"],n}return(0,QCt.ZT)(e,t),e.prototype.getLinearValue=function(t){var e=Math.round((this.values.length-1)*t);return this.values[e]},e}(HOt),lEt=cEt,uEt=function(t){function e(e){var n=t.call(this,e)||this;return n.type="size",n.names=["size"],n}return(0,QCt.ZT)(e,t),e}(HOt),sEt=uEt,fEt={};function hEt(t,e){fEt[t]=e}var dEt=function(){function t(t){this.type="base",this.isCategory=!1,this.isLinear=!1,this.isContinuous=!1,this.isIdentity=!1,this.values=[],this.range=[0,1],this.ticks=[],this.__cfg__=t,this.initCfg(),this.init()}return t.prototype.translate=function(t){return t},t.prototype.change=function(t){(0,tOt.f0)(this.__cfg__,t),this.init()},t.prototype.clone=function(){return this.constructor(this.__cfg__)},t.prototype.getTicks=function(){var t=this;return(0,tOt.UI)(this.ticks,(function(e,n){return(0,tOt.Kn)(e)?e:{text:t.getText(e,n),tickValue:e,value:t.scale(e)}}))},t.prototype.getText=function(t,e){var n=this.formatter,r=n?n(t,e):t;return(0,tOt.UM)(r)||!(0,tOt.mf)(r.toString)?"":r.toString()},t.prototype.getConfig=function(t){return this.__cfg__[t]},t.prototype.init=function(){(0,tOt.f0)(this,this.__cfg__),this.setDomain(),(0,tOt.xb)(this.getConfig("ticks"))&&(this.ticks=this.calculateTicks())},t.prototype.initCfg=function(){},t.prototype.setDomain=function(){},t.prototype.calculateTicks=function(){var t=this.tickMethod,e=[];if((0,tOt.HD)(t)){var n=function(t){return fEt[t]}(t);if(!n)throw new Error("There is no method to to calculate ticks!");e=n(this)}else(0,tOt.mf)(t)&&(e=t(this));return e},t.prototype.rangeMin=function(){return this.range[0]},t.prototype.rangeMax=function(){return this.range[1]},t.prototype.calcPercent=function(t,e,n){return(0,tOt.hj)(t)?(t-e)/(n-e):NaN},t.prototype.calcValue=function(t,e,n){return e+t*(n-e)},t}(),pEt=dEt,vEt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="cat",e.isCategory=!0,e}return(0,QCt.ZT)(e,t),e.prototype.buildIndexMap=function(){if(!this.translateIndexMap){this.translateIndexMap=new Map;for(var t=0;tthis.max?NaN:this.values[r]},e.prototype.getText=function(e){for(var n=[],r=1;r1?t-1:t}this.translateIndexMap&&(this.translateIndexMap=void 0)},e}(pEt),gEt=vEt,mEt=/d{1,4}|M{1,4}|YY(?:YY)?|S{1,3}|Do|ZZ|Z|([HhMsDm])\1?|[aA]|"[^"]*"|'[^']*'/g,yEt="\\d\\d?",bEt="\\d\\d",xEt="[^\\s]+",wEt=/\[([^]*?)\]/gm;function SEt(t,e){for(var n=[],r=0,i=t.length;r-1?i:null}};function CEt(t){for(var e=[],n=1;n3?0:(t-t%10!=10?1:0)*t%10]}},PEt=CEt({},AEt),_Et=function(t){return PEt=CEt(PEt,t)},DEt=function(t){return t.replace(/[|\\{()[^$+*?.-]/g,"\\$&")},TEt=function(t,e){for(void 0===e&&(e=2),t=String(t);t.length0?"-":"+")+TEt(100*Math.floor(Math.abs(e)/60)+Math.abs(e)%60,4)},Z:function(t){var e=t.getTimezoneOffset();return(e>0?"-":"+")+TEt(Math.floor(Math.abs(e)/60),2)+":"+TEt(Math.abs(e)%60,2)}},FEt=function(t){return+t-1},jEt=[null,yEt],IEt=[null,xEt],REt=["isPm",xEt,function(t,e){var n=t.toLowerCase();return n===e.amPm[0]?0:n===e.amPm[1]?1:null}],LEt=["timezoneOffset","[^\\s]*?[\\+\\-]\\d\\d:?\\d\\d|[^\\s]*?Z?",function(t){var e=(t+"").match(/([+-]|\d\d)/gi);if(e){var n=60*+e[1]+parseInt(e[2],10);return"+"===e[0]?n:-n}return 0}],NEt={D:["day",yEt],DD:["day",bEt],Do:["day",yEt+xEt,function(t){return parseInt(t,10)}],M:["month",yEt,FEt],MM:["month",bEt,FEt],YY:["year",bEt,function(t){var e=+(""+(new Date).getFullYear()).substr(0,2);return+(""+(+t>68?e-1:e)+t)}],h:["hour",yEt,void 0,"isPm"],hh:["hour",bEt,void 0,"isPm"],H:["hour",yEt],HH:["hour",bEt],m:["minute",yEt],mm:["minute",bEt],s:["second",yEt],ss:["second",bEt],YYYY:["year","\\d{4}"],S:["millisecond","\\d",function(t){return 100*+t}],SS:["millisecond",bEt,function(t){return 10*+t}],SSS:["millisecond","\\d{3}"],d:jEt,dd:jEt,ddd:IEt,dddd:IEt,MMM:["month",xEt,kEt("monthNamesShort")],MMMM:["month",xEt,kEt("monthNames")],a:REt,A:REt,ZZ:LEt,Z:LEt},BEt={default:"ddd MMM DD YYYY HH:mm:ss",shortDate:"M/D/YY",mediumDate:"MMM D, YYYY",longDate:"MMMM D, YYYY",fullDate:"dddd, MMMM D, YYYY",isoDate:"YYYY-MM-DD",isoDateTime:"YYYY-MM-DDTHH:mm:ssZ",shortTime:"HH:mm",mediumTime:"HH:mm:ss",longTime:"HH:mm:ss.SSS"},zEt=function(t){return CEt(BEt,t)},UEt=function(t,e,n){if(void 0===e&&(e=BEt.default),void 0===n&&(n={}),"number"==typeof t&&(t=new Date(t)),"[object Date]"!==Object.prototype.toString.call(t)||isNaN(t.getTime()))throw new Error("Invalid Date pass to format");e=BEt[e]||e;var r=[];e=e.replace(wEt,(function(t,e){return r.push(e),"@@@"}));var i=CEt(CEt({},PEt),n);return(e=e.replace(mEt,(function(e){return ZEt[e](t,i)}))).replace(/@@@/g,(function(){return r.shift()}))};function HEt(t,e,n){if(void 0===n&&(n={}),"string"!=typeof e)throw new Error("Invalid format in fecha parse");if(e=BEt[e]||e,t.length>1e3)return null;var r={year:(new Date).getFullYear(),month:0,day:1,hour:0,minute:0,second:0,millisecond:0,isPm:null,timezoneOffset:null},i=[],o=[],a=e.replace(wEt,(function(t,e){return o.push(DEt(e)),"@@@"})),c={},l={};a=DEt(a).replace(mEt,(function(t){var e=NEt[t],n=e[0],r=e[1],o=e[3];if(c[n])throw new Error("Invalid format. "+n+" specified twice in format");return c[n]=!0,o&&(l[o]=!0),i.push(e),"("+r+")"})),Object.keys(l).forEach((function(t){if(!c[t])throw new Error("Invalid format. "+t+" is required in specified format")})),a=a.replace(/@@@/g,(function(){return o.shift()}));var u=t.match(new RegExp(a,"i"));if(!u)return null;for(var s,f=CEt(CEt({},PEt),n),h=1;h11||r.month<0||r.day>31||r.day<1||r.hour>23||r.hour<0||r.minute>59||r.minute<0||r.second>59||r.second<0)return null;return s}var WEt={format:UEt,parse:HEt,defaultI18n:AEt,setGlobalDateI18n:_Et,setGlobalDateMasks:zEt};var VEt="format";function GEt(t,e){return(x[VEt]||WEt[VEt])(t,e)}function XEt(t){return(0,tOt.HD)(t)&&(t=t.indexOf("T")>0?new Date(t).getTime():new Date(t.replace(/-/gi,"/")).getTime()),(0,tOt.J_)(t)&&(t=t.getTime()),t}var qEt=1e3,YEt=6e4,$Et=36e5,KEt=24*$Et,JEt=31*KEt,QEt=365*KEt,tMt=[["HH:mm:ss",qEt],["HH:mm:ss",1e4],["HH:mm:ss",3e4],["HH:mm",YEt],["HH:mm",6e5],["HH:mm",18e5],["HH",$Et],["HH",6*$Et],["HH",12*$Et],["YYYY-MM-DD",KEt],["YYYY-MM-DD",4*KEt],["YYYY-WW",7*KEt],["YYYY-MM",JEt],["YYYY-MM",4*JEt],["YYYY-MM",6*JEt],["YYYY",380*KEt]];function eMt(t,e,n){var r=(e-t)/n,i=function(t){return function(e,n,r,i){for(var o=(0,tOt.UM)(r)?0:r,a=(0,tOt.UM)(i)?e.length:i;o>>1;t(e[c])>n?a=c:o=c+1}return o}}((function(t){return t[1]}))(tMt,r)-1,o=tMt[i];return i<0?o=tMt[0]:i>=tMt.length&&(o=(0,tOt.Z$)(tMt)),o}var nMt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="timeCat",e}return(0,QCt.ZT)(e,t),e.prototype.translate=function(t){t=XEt(t);var e=this.values.indexOf(t);return-1===e&&(e=(0,tOt.hj)(t)&&t-1){var r=this.values[n],i=this.formatter;return r=i?i(r,e):GEt(r,this.mask)}return t},e.prototype.initCfg=function(){this.tickMethod="time-cat",this.mask="YYYY-MM-DD",this.tickCount=7},e.prototype.setDomain=function(){var e=this.values;(0,tOt.S6)(e,(function(t,n){e[n]=XEt(t)})),e.sort((function(t,e){return t-e})),t.prototype.setDomain.call(this)},e}(gEt),rMt=nMt,iMt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.isContinuous=!0,e}return(0,QCt.ZT)(e,t),e.prototype.scale=function(t){if((0,tOt.UM)(t))return NaN;var e=this.rangeMin(),n=this.rangeMax();return this.max===this.min?e:e+this.getScalePercent(t)*(n-e)},e.prototype.init=function(){t.prototype.init.call(this);var e=this.ticks,n=(0,tOt.YM)(e),r=(0,tOt.Z$)(e);nthis.max&&(this.max=r),(0,tOt.UM)(this.minLimit)||(this.min=n),(0,tOt.UM)(this.maxLimit)||(this.max=r)},e.prototype.setDomain=function(){var t=(0,tOt.rx)(this.values),e=t.min,n=t.max;(0,tOt.UM)(this.min)&&(this.min=e),(0,tOt.UM)(this.max)&&(this.max=n),this.min>this.max&&(this.min=e,this.max=n)},e.prototype.calculateTicks=function(){var e=this,n=t.prototype.calculateTicks.call(this);return this.nice||(n=(0,tOt.hX)(n,(function(t){return t>=e.min&&t<=e.max}))),n},e.prototype.getScalePercent=function(t){var e=this.max,n=this.min;return(t-n)/(e-n)},e.prototype.getInvertPercent=function(t){return(t-this.rangeMin())/(this.rangeMax()-this.rangeMin())},e}(pEt),oMt=iMt,aMt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="linear",e.isLinear=!0,e}return(0,QCt.ZT)(e,t),e.prototype.invert=function(t){var e=this.getInvertPercent(t);return this.min+e*(this.max-this.min)},e.prototype.initCfg=function(){this.tickMethod="wilkinson-extended",this.nice=!1},e}(oMt),cMt=aMt;function lMt(t,e){var n=Math.E;return e>=0?Math.pow(n,Math.log(e)/t):-1*Math.pow(n,Math.log(-e)/t)}function uMt(t,e){return 1===t?1:Math.log(e)/Math.log(t)}function sMt(t,e,n){(0,tOt.UM)(n)&&(n=Math.max.apply(null,t));var r=n;return(0,tOt.S6)(t,(function(t){t>0&&t1&&(r=1),r}var fMt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="log",e}return(0,QCt.ZT)(e,t),e.prototype.invert=function(t){var e,n=this.base,r=uMt(n,this.max),i=this.rangeMin(),o=this.rangeMax()-i,a=this.positiveMin;if(a){if(0===t)return 0;var c=1/(r-(e=uMt(n,a/n)))*o;if(t=0?1:-1;return Math.pow(o,n)*a},e.prototype.initCfg=function(){this.tickMethod="pow",this.exponent=2,this.tickCount=5,this.nice=!0},e.prototype.getScalePercent=function(t){var e=this.max,n=this.min;if(e===n)return 0;var r=this.exponent;return(lMt(r,t)-lMt(r,n))/(lMt(r,e)-lMt(r,n))},e}(oMt),pMt=dMt,vMt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="time",e}return(0,QCt.ZT)(e,t),e.prototype.getText=function(t,e){var n=this.translate(t),r=this.formatter;return r?r(n,e):GEt(n,this.mask)},e.prototype.scale=function(e){var n=e;return((0,tOt.HD)(n)||(0,tOt.J_)(n))&&(n=this.translate(n)),t.prototype.scale.call(this,n)},e.prototype.translate=function(t){return XEt(t)},e.prototype.initCfg=function(){this.tickMethod="time-pretty",this.mask="YYYY-MM-DD",this.tickCount=7,this.nice=!1},e.prototype.setDomain=function(){var t=this.values,e=this.getConfig("min"),n=this.getConfig("max");if((0,tOt.UM)(e)&&(0,tOt.hj)(e)||(this.min=this.translate(this.min)),(0,tOt.UM)(n)&&(0,tOt.hj)(n)||(this.max=this.translate(this.max)),t&&t.length){var r=[],i=1/0,o=i,a=0;(0,tOt.S6)(t,(function(t){var e=XEt(t);if(isNaN(e))throw new TypeError("Invalid Time: "+t+" in time scale!");i>e?(o=i,i=e):o>e&&(o=e),a1&&(this.minTickInterval=o-i),(0,tOt.UM)(e)&&(this.min=i),(0,tOt.UM)(n)&&(this.max=a)}},e}(cMt),gMt=vMt,mMt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="quantize",e}return(0,QCt.ZT)(e,t),e.prototype.invert=function(t){var e=this.ticks,n=e.length,r=this.getInvertPercent(t),i=Math.floor(r*(n-1));if(i>=n-1)return(0,tOt.Z$)(e);if(i<0)return(0,tOt.YM)(e);var o=e[i],a=i/(n-1);return o+(r-a)/((i+1)/(n-1)-a)*(e[i+1]-o)},e.prototype.initCfg=function(){this.tickMethod="r-pretty",this.tickCount=5,this.nice=!0},e.prototype.calculateTicks=function(){var e=t.prototype.calculateTicks.call(this);return this.nice||((0,tOt.Z$)(e)!==this.max&&e.push(this.max),(0,tOt.YM)(e)!==this.min&&e.unshift(this.min)),e},e.prototype.getScalePercent=function(t){var e=this.ticks;if(t<(0,tOt.YM)(e))return 0;if(t>(0,tOt.Z$)(e))return 1;var n=0;return(0,tOt.S6)(e,(function(e,r){if(!(t>=e))return!1;n=r})),n/(e.length-1)},e}(oMt),yMt=mMt,bMt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="quantile",e}return(0,QCt.ZT)(e,t),e.prototype.initCfg=function(){this.tickMethod="quantile",this.tickCount=5,this.nice=!0},e}(yMt),xMt=bMt,wMt={};function SMt(t){return wMt[t]}function kMt(t,e){if(SMt(t))throw new Error("type '"+t+"' existed.");wMt[t]=e}var CMt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="identity",e.isIdentity=!0,e}return(0,QCt.ZT)(e,t),e.prototype.calculateTicks=function(){return this.values},e.prototype.scale=function(t){return this.values[0]!==t&&(0,tOt.hj)(t)?t:this.range[0]},e.prototype.invert=function(t){var e=this.range;return te[1]?NaN:this.values[0]},e}(pEt),OMt=CMt;function EMt(t){var e=t.values,n=t.tickInterval,r=t.tickCount,i=t.showLast;if((0,tOt.hj)(n)){var o=(0,tOt.hX)(e,(function(t,e){return e%n==0})),a=(0,tOt.Z$)(e);return i&&(0,tOt.Z$)(o)!==a&&o.push(a),o}var c=e.length,l=t.min,u=t.max;if((0,tOt.UM)(l)&&(l=0),(0,tOt.UM)(u)&&(u=e.length-1),!(0,tOt.hj)(r)||r>=c)return e.slice(l,u+1);if(r<=0||u<=0)return[];for(var s=1===r?c:Math.floor(c/(r-1)),f=[],h=l,d=0;d=u);d++)h=Math.min(l+d*s,u),d===r-1&&i?f.push(e[u]):f.push(e[h]);return f}var MMt=Math.sqrt(50),AMt=Math.sqrt(10),PMt=Math.sqrt(2),_Mt=function(){function t(){this._domain=[0,1]}return t.prototype.domain=function(t){return t?(this._domain=Array.from(t,Number),this):this._domain.slice()},t.prototype.nice=function(t){var e,n;void 0===t&&(t=5);var r,i=this._domain.slice(),o=0,a=this._domain.length-1,c=this._domain[o],l=this._domain[a];return l0?r=DMt(c=Math.floor(c/r)*r,l=Math.ceil(l/r)*r,t):r<0&&(r=DMt(c=Math.ceil(c*r)/r,l=Math.floor(l*r)/r,t)),r>0?(i[o]=Math.floor(c/r)*r,i[a]=Math.ceil(l/r)*r,this.domain(i)):r<0&&(i[o]=Math.ceil(c*r)/r,i[a]=Math.floor(l*r)/r,this.domain(i)),this},t.prototype.ticks=function(t){return void 0===t&&(t=5),function(t,e,n){var r,i,o,a,c=-1;if(e=+e,n=+n,(t=+t)===e&&n>0)return[t];(r=e0)for(t=Math.ceil(t/a),e=Math.floor(e/a),o=new Array(i=Math.ceil(e-t+1));++c=0?(o>=MMt?10:o>=AMt?5:o>=PMt?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=MMt?10:o>=AMt?5:o>=PMt?2:1)}function TMt(t,e,n){return("ceil"===n?Math.ceil(t/e):"floor"===n?Math.floor(t/e):Math.round(t/e))*e}function ZMt(t,e,n){var r=TMt(t,n,"floor"),i=TMt(e,n,"ceil");r=(0,tOt.ri)(r,n),i=(0,tOt.ri)(i,n);for(var o=[],a=Math.max((i-r)/(Math.pow(2,12)-1),n),c=r;c<=i;c+=a){var l=(0,tOt.ri)(c,a);o.push(l)}return{min:r,max:i,ticks:o}}function FMt(t,e,n){var r,i=t.minLimit,o=t.maxLimit,a=t.min,c=t.max,l=t.tickCount,u=void 0===l?5:l,s=(0,tOt.UM)(i)?(0,tOt.UM)(e)?a:e:i,f=(0,tOt.UM)(o)?(0,tOt.UM)(n)?c:n:o;if(s>f&&(f=(r=[s,f])[0],s=r[1]),u<=2)return[s,f];for(var h=(f-s)/(u-1),d=[],p=0;p=0&&(l=1),1-c/(a-1)-n+l}function NMt(t,e,n){var r=(0,tOt.dp)(e);return 1-(0,tOt.cq)(e,t)/(r-1)-n+1}function BMt(t,e,n,r,i,o){var a=(t-1)/(o-i),c=(e-1)/(Math.max(o,r)-Math.min(n,i));return 2-Math.max(a/c,c/a)}function zMt(t,e){return t>=e?2-(t-1)/(e-1):1}function UMt(t,e,n,r){var i=e-t;return 1-.5*(Math.pow(e-r,2)+Math.pow(t-n,2))/Math.pow(.1*i,2)}function HMt(t,e,n){var r=e-t;if(n>r){var i=(n-r)/2;return 1-Math.pow(i,2)/Math.pow(.1*r,2)}return 1}function WMt(t,e,n,r,i,o){void 0===n&&(n=5),void 0===r&&(r=!0),void 0===i&&(i=IMt),void 0===o&&(o=[.25,.2,.5,.05]);var a=n<0?0:Math.round(n);if(Number.isNaN(t)||Number.isNaN(e)||"number"!=typeof t||"number"!=typeof e||!a)return{min:0,max:0,ticks:[]};if(e-t<1e-15||1===a)return{min:t,max:e,ticks:[t]};if(e-t>1e148){var c=(e-t)/(w=n||5);return{min:t,max:e,ticks:Array(w).fill(null).map((function(e,n){return jMt(t+c*n)}))}}for(var l={score:-2,lmin:0,lmax:0,lstep:0},u=1;u<1/0;){for(var s=0;sl.score&&(!r||k<=t&&C>=e)&&(l.lmin=k,l.lmax=C,l.lstep=O,l.score=P)}g+=1}d+=1}}u+=1}var _=jMt(l.lmax),D=jMt(l.lmin),T=jMt(l.lstep),Z=Math.floor(function(t){return Math.round(1e12*t)/1e12}((_-D)/T))+1,F=new Array(Z);F[0]=jMt(D);for(s=1;s1&&(i*=Math.ceil(a)),r&&iQEt)for(var l=XMt(n),u=Math.ceil(o/QEt),s=c;s<=l+u;s+=u)a.push(qMt(s));else if(o>JEt){var f=Math.ceil(o/JEt),h=YMt(e),d=function(t,e){var n=XMt(t),r=XMt(e),i=YMt(t);return 12*(r-n)+(YMt(e)-i)%12}(e,n);for(s=0;s<=d+f;s+=f)a.push($Mt(c,s+h))}else if(o>KEt){var p=(b=new Date(e)).getFullYear(),v=b.getMonth(),g=b.getDate(),m=Math.ceil(o/KEt),y=function(t,e){return Math.ceil((e-t)/KEt)}(e,n);for(s=0;s$Et){p=(b=new Date(e)).getFullYear(),v=b.getMonth(),m=b.getDate();var b,x=b.getHours(),w=Math.ceil(o/$Et),S=function(t,e){return Math.ceil((e-t)/$Et)}(e,n);for(s=0;s<=S+w;s+=w)a.push(new Date(p,v,m,x+s).getTime())}else if(o>YEt){var k=function(t,e){return Math.ceil((e-t)/6e4)}(e,n),C=Math.ceil(o/YEt);for(s=0;s<=k+C;s+=C)a.push(e+s*YEt)}else{var O=o;O=512&&console.warn("Notice: current ticks length("+a.length+') >= 512, may cause performance issues, even out of memory. Because of the configure "tickInterval"(in milliseconds, current is '+o+") is too small, increase the value to solve the problem!"),a})),hEt("log",(function(t){var e,n=t.base,r=t.tickCount,i=t.min,o=t.max,a=t.values,c=uMt(n,o);if(i>0)e=Math.floor(uMt(n,i));else{var l=sMt(a,n,o);e=Math.floor(uMt(n,l))}for(var u=c-e,s=Math.ceil(u/r),f=[],h=e;h=0?1:-1;return Math.pow(t,e)*n}))})),hEt("quantile",(function(t){var e=t.tickCount,n=t.values;if(!n||!n.length)return[];for(var r=n.slice().sort((function(t,e){return t-e})),i=[],o=0;o=0&&this.radius<=1&&(n*=this.radius),this.d=Math.floor(n*(1-this.innerRadius)/e),this.a=this.d/(2*Math.PI),this.x={start:this.startAngle,end:this.endAngle},this.y={start:this.innerRadius*n,end:this.innerRadius*n+.99*this.d}},e.prototype.convertPoint=function(t){var e,n=t.x,r=t.y;this.isTransposed&&(n=(e=[r,n])[0],r=e[1]);var i=this.convertDim(n,"x"),o=this.a*i,a=this.convertDim(r,"y");return{x:this.center.x+Math.cos(i)*(o+a),y:this.center.y+Math.sin(i)*(o+a)}},e.prototype.invertPoint=function(t){var e,n=this.d+this.y.start,r=lAt.$X([0,0],[t.x,t.y],[this.center.x,this.center.y]),i=rAt.Dg(r,[1,0],!0),o=i*this.a;lAt.kE(r)this.width/r?(e=this.width/r,this.circleCenter={x:this.center.x-(.5-o)*this.width,y:this.center.y-(.5-a)*e*i}):(e=this.height/i,this.circleCenter={x:this.center.x-(.5-o)*e*r,y:this.center.y-(.5-a)*this.height}),this.polarRadius=this.radius,this.radius?this.radius>0&&this.radius<=1?this.polarRadius=e*this.radius:(this.radius<=0||this.radius>e)&&(this.polarRadius=e):this.polarRadius=e,this.x={start:this.startAngle,end:this.endAngle},this.y={start:this.innerRadius*this.polarRadius,end:this.polarRadius}},e.prototype.getRadius=function(){return this.polarRadius},e.prototype.convertPoint=function(t){var e,n=this.getCenter(),r=t.x,i=t.y;return this.isTransposed&&(r=(e=[i,r])[0],i=e[1]),r=this.convertDim(r,"x"),i=this.convertDim(i,"y"),{x:n.x+Math.cos(r)*i,y:n.y+Math.sin(r)*i}},e.prototype.invertPoint=function(t){var e,n=this.getCenter(),r=[t.x-n.x,t.y-n.y],i=this.startAngle,o=this.endAngle;this.isReflect("x")&&(i=(e=[o,i])[0],o=e[1]);var a=[1,0,0,0,1,0,0,0,1];rAt.zu(a,a,i);var c=[1,0,0];eAt(c,c,a);var l=[c[0],c[1]],u=rAt.Dg(l,r,o0?f:-f;var h=this.invertDim(s,"y"),d={x:0,y:0};return d.x=this.isTransposed?h:f,d.y=this.isTransposed?f:h,d},e.prototype.getCenter=function(){return this.circleCenter},e.prototype.getOneBox=function(){var t=this.startAngle,e=this.endAngle;if(Math.abs(e-t)>=2*Math.PI)return{minX:-1,maxX:1,minY:-1,maxY:1};for(var n=[0,Math.cos(t),Math.cos(e)],r=[0,Math.sin(t),Math.sin(e)],i=Math.min(t,e);i=0;n--)t.removeChild(e[n])}function CAt(t){var e=t.start,n=t.end,r=Math.min(e.x,n.x),i=Math.min(e.y,n.y),o=Math.max(e.x,n.x),a=Math.max(e.y,n.y);return{x:r,y:i,minX:r,minY:i,maxX:o,maxY:a,width:o-r,height:a-i}}function OAt(t,e,n,r){var i=t+n,o=e+r;return{x:t,y:e,width:n,height:r,minX:t,minY:e,maxX:isNaN(i)?0:i,maxY:isNaN(o)?0:o}}function EAt(t,e,n){return(1-n)*t+e*n}function MAt(t,e,n){return{x:t.x+Math.cos(n)*e,y:t.y+Math.sin(n)*e}}var AAt=function(t,e,n){return void 0===n&&(n=Math.pow(Number.EPSILON,.5)),[t,e].includes(1/0)?Math.abs(t)===Math.abs(e):Math.abs(t-e)0?(0,tOt.S6)(h,(function(t){if(t.get("visible")){if(t.isGroup()&&0===t.get("children").length)return!0;var e=PAt(t),n=t.applyToMatrix([e.minX,e.minY,1]),r=t.applyToMatrix([e.minX,e.maxY,1]),i=t.applyToMatrix([e.maxX,e.minY,1]),o=t.applyToMatrix([e.maxX,e.maxY,1]),a=Math.min(n[0],r[0],i[0],o[0]),c=Math.max(n[0],r[0],i[0],o[0]),h=Math.min(n[1],r[1],i[1],o[1]),d=Math.max(n[1],r[1],i[1],o[1]);au&&(u=c),hf&&(f=d)}})):(l=0,u=0,s=0,f=0),e=OAt(l,s,u-l,f-s)}else e=t.getBBox();return c?(n=e,r=c,i=Math.max(n.minX,r.minX),o=Math.max(n.minY,r.minY),OAt(i,o,Math.min(n.maxX,r.maxX)-i,Math.min(n.maxY,r.maxY)-o)):e}function _At(t){return t+"px"}function DAt(t,e,n,r){var i,o,a,c,l=r/(i=t,a=(o=e).x-i.x,c=o.y-i.y,Math.sqrt(a*a+c*c)),u=0;return"start"===n?u=0-l:"end"===n&&(u=1+l),{x:EAt(t.x,e.x,u),y:EAt(t.y,e.y,u)}}var TAt={none:[],point:["x","y"],region:["start","end"],points:["points"],circle:["center","radius","startAngle","endAngle"]},ZAt=function(t){function e(e){var n=t.call(this,e)||this;return n.initCfg(),n}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){return{id:"",name:"",type:"",locationType:"none",offsetX:0,offsetY:0,animate:!1,capture:!0,updateAutoRender:!1,animateOption:{appear:null,update:{duration:400,easing:"easeQuadInOut"},enter:{duration:400,easing:"easeQuadInOut"},leave:{duration:350,easing:"easeQuadIn"}},events:null,defaultCfg:{},visible:!0}},e.prototype.clear=function(){},e.prototype.update=function(t){var e=this,n=this.get("defaultCfg")||{};(0,tOt.S6)(t,(function(t,r){var i=t;e.get(r)!==t&&((0,tOt.Kn)(t)&&n[r]&&(i=(0,tOt.b$)({},n[r],t)),e.set(r,i))})),this.updateInner(t),this.afterUpdate(t)},e.prototype.updateInner=function(t){},e.prototype.afterUpdate=function(t){(0,tOt.wH)(t,"visible")&&(t.visible?this.show():this.hide()),(0,tOt.wH)(t,"capture")&&this.setCapture(t.capture)},e.prototype.getLayoutBBox=function(){return this.getBBox()},e.prototype.getLocationType=function(){return this.get("locationType")},e.prototype.getOffset=function(){return{offsetX:this.get("offsetX"),offsetY:this.get("offsetY")}},e.prototype.setOffset=function(t,e){this.update({offsetX:t,offsetY:e})},e.prototype.setLocation=function(t){var e=(0,QCt.pi)({},t);this.update(e)},e.prototype.getLocation=function(){var t=this,e={},n=this.get("locationType"),r=TAt[n];return(0,tOt.S6)(r,(function(n){e[n]=t.get(n)})),e},e.prototype.isList=function(){return!1},e.prototype.isSlider=function(){return!1},e.prototype.init=function(){},e.prototype.initCfg=function(){var t=this,e=this.get("defaultCfg");(0,tOt.S6)(e,(function(e,n){var r=t.get(n);if((0,tOt.Kn)(r)){var i=(0,tOt.b$)({},e,r);t.set(n,i)}}))},e}(kOt.Base),FAt=ZAt,jAt="update_status",IAt=["visible","tip","delegateObject"],RAt=["container","group","shapesMap","isRegister","isUpdating","destroyed"],LAt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{container:null,shapesMap:{},group:null,capture:!0,isRegister:!1,isUpdating:!1,isInit:!0})},e.prototype.remove=function(){this.clear(),this.get("group").remove()},e.prototype.clear=function(){this.get("group").clear(),this.set("shapesMap",{}),this.clearOffScreenCache(),this.set("isInit",!0)},e.prototype.getChildComponentById=function(t){var e=this.getElementById(t);return e&&e.get("component")},e.prototype.getElementById=function(t){return this.get("shapesMap")[t]},e.prototype.getElementByLocalId=function(t){var e=this.getElementId(t);return this.getElementById(e)},e.prototype.getElementsByName=function(t){var e=[];return(0,tOt.S6)(this.get("shapesMap"),(function(n){n.get("name")===t&&e.push(n)})),e},e.prototype.getContainer=function(){return this.get("container")},e.prototype.updateInner=function(t){this.offScreenRender(),this.get("updateAutoRender")&&this.render()},e.prototype.render=function(){var t=this.get("offScreenGroup");t||(t=this.offScreenRender());var e=this.get("group");this.updateElements(t,e),this.deleteElements(),this.applyOffset(),this.get("eventInitted")||(this.initEvent(),this.set("eventInitted",!0)),this.set("isInit",!1)},e.prototype.show=function(){this.get("group").show(),this.set("visible",!0)},e.prototype.hide=function(){this.get("group").hide(),this.set("visible",!1)},e.prototype.setCapture=function(t){this.get("group").set("capture",t),this.set("capture",t)},e.prototype.destroy=function(){this.removeEvent(),this.remove(),t.prototype.destroy.call(this)},e.prototype.getBBox=function(){return this.get("group").getCanvasBBox()},e.prototype.getLayoutBBox=function(){var t=this.get("group"),e=this.getInnerLayoutBBox(),n=t.getTotalMatrix();return n&&(e=function(t,e){var n=bAt(t,[e.minX,e.minY]),r=bAt(t,[e.maxX,e.minY]),i=bAt(t,[e.minX,e.maxY]),o=bAt(t,[e.maxX,e.maxY]),a=Math.min(n[0],r[0],i[0],o[0]),c=Math.max(n[0],r[0],i[0],o[0]),l=Math.min(n[1],r[1],i[1],o[1]),u=Math.max(n[1],r[1],i[1],o[1]);return{x:a,y:l,minX:a,minY:l,maxX:c,maxY:u,width:c-a,height:u-l}}(n,e)),e},e.prototype.on=function(t,e,n){return this.get("group").on(t,e,n),this},e.prototype.off=function(t,e){var n=this.get("group");return n&&n.off(t,e),this},e.prototype.emit=function(t,e){this.get("group").emit(t,e)},e.prototype.init=function(){t.prototype.init.call(this),this.get("group")||this.initGroup(),this.offScreenRender()},e.prototype.getInnerLayoutBBox=function(){return this.get("offScreenBBox")||this.get("group").getBBox()},e.prototype.delegateEmit=function(t,e){var n=this.get("group");e.target=n,n.emit(t,e),vAt(n,t,e)},e.prototype.createOffScreenGroup=function(){return new(this.get("group").getGroupBase())({delegateObject:this.getDelegateObject()})},e.prototype.applyOffset=function(){var t=this.get("offsetX"),e=this.get("offsetY");this.moveElementTo(this.get("group"),{x:t,y:e})},e.prototype.initGroup=function(){var t=this.get("container");this.set("group",t.addGroup({id:this.get("id"),name:this.get("name"),capture:this.get("capture"),visible:this.get("visible"),isComponent:!0,component:this,delegateObject:this.getDelegateObject()}))},e.prototype.offScreenRender=function(){this.clearOffScreenCache();var t=this.createOffScreenGroup();return this.renderInner(t),this.set("offScreenGroup",t),this.set("offScreenBBox",PAt(t)),t},e.prototype.addGroup=function(t,e){this.appendDelegateObject(t,e);var n=t.addGroup(e);return this.get("isRegister")&&this.registerElement(n),n},e.prototype.addShape=function(t,e){this.appendDelegateObject(t,e);var n=t.addShape(e);return this.get("isRegister")&&this.registerElement(n),n},e.prototype.addComponent=function(t,e){var n=e.id,r=e.component,i=(0,QCt._T)(e,["id","component"]),o=new r((0,QCt.pi)((0,QCt.pi)({},i),{id:n,container:t,updateAutoRender:this.get("updateAutoRender")}));return o.init(),o.render(),this.get("isRegister")&&this.registerElement(o.get("group")),o},e.prototype.initEvent=function(){},e.prototype.removeEvent=function(){this.get("group").off()},e.prototype.getElementId=function(t){return this.get("id")+"-"+this.get("name")+"-"+t},e.prototype.registerElement=function(t){var e=t.get("id");this.get("shapesMap")[e]=t},e.prototype.unregisterElement=function(t){var e=t.get("id");delete this.get("shapesMap")[e]},e.prototype.moveElementTo=function(t,e){var n=yAt(e);t.attr("matrix",n)},e.prototype.addAnimation=function(t,e,n){var r=e.attr("opacity");(0,tOt.UM)(r)&&(r=1),e.attr("opacity",0),e.animate({opacity:r},n)},e.prototype.removeAnimation=function(t,e,n){e.animate({opacity:0},n)},e.prototype.updateAnimation=function(t,e,n,r){e.animate(n,r)},e.prototype.updateElements=function(t,e){var n,r=this,i=this.get("animate"),o=this.get("animateOption"),a=t.getChildren().slice(0);(0,tOt.S6)(a,(function(t){var a=t.get("id"),c=r.getElementById(a),l=t.get("name");if(c)if(t.get("isComponent")){var u=t.get("component"),s=c.get("component"),f=(0,tOt.ei)(u.cfg,(0,tOt.e5)((0,tOt.XP)(u.cfg),RAt));s.update(f),c.set(jAt,"update")}else{var h=r.getReplaceAttrs(c,t);i&&o.update?r.updateAnimation(l,c,h,o.update):c.attr(h),t.isGroup()&&r.updateElements(t,c),(0,tOt.S6)(IAt,(function(e){c.set(e,t.get(e))})),function(t,e){if(t.getClip()||e.getClip()){var n=e.getClip();if(n){var r={type:n.get("type"),attrs:n.attr()};t.setClip(r)}else t.setClip(null)}}(c,t),n=c,c.set(jAt,"update")}else{e.add(t);var d=e.getChildren();if(d.splice(d.length-1,1),n){var p=d.indexOf(n);d.splice(p+1,0,t)}else d.unshift(t);if(r.registerElement(t),t.set(jAt,"add"),t.get("isComponent"))(u=t.get("component")).set("container",e);else t.isGroup()&&r.registerNewGroup(t);if(n=t,i){var v=r.get("isInit")?o.appear:o.enter;v&&r.addAnimation(l,t,v)}}}))},e.prototype.clearUpdateStatus=function(t){var e=t.getChildren();(0,tOt.S6)(e,(function(t){t.set(jAt,null)}))},e.prototype.clearOffScreenCache=function(){var t=this.get("offScreenGroup");t&&t.destroy(),this.set("offScreenGroup",null),this.set("offScreenBBox",null)},e.prototype.getDelegateObject=function(){var t;return(t={})[this.get("name")]=this,t.component=this,t},e.prototype.appendDelegateObject=function(t,e){var n=t.get("delegateObject");e.delegateObject||(e.delegateObject={}),(0,tOt.CD)(e.delegateObject,n)},e.prototype.getReplaceAttrs=function(t,e){var n=t.attr(),r=e.attr();return(0,tOt.S6)(n,(function(t,e){void 0===r[e]&&(r[e]=void 0)})),r},e.prototype.registerNewGroup=function(t){var e=this,n=t.getChildren();(0,tOt.S6)(n,(function(t){e.registerElement(t),t.set(jAt,"add"),t.isGroup()&&e.registerNewGroup(t)}))},e.prototype.deleteElements=function(){var t=this,e=this.get("shapesMap"),n=[];(0,tOt.S6)(e,(function(t,e){!t.get(jAt)||t.destroyed?n.push([e,t]):t.set(jAt,null)}));var r=this.get("animate"),i=this.get("animateOption");(0,tOt.S6)(n,(function(n){var o=n[0],a=n[1];if(!a.destroyed){var c=a.get("name");if(r&&i.leave){var l=(0,tOt.CD)({callback:function(){t.removeElement(a)}},i.leave);t.removeAnimation(c,a,l)}else t.removeElement(a)}delete e[o]}))},e.prototype.removeElement=function(t){if(t.get("isGroup")){var e=t.get("component");e&&e.destroy()}t.remove()},e}(FAt),NAt=LAt,BAt="…";function zAt(t,e){return t.charCodeAt(e)>0&&t.charCodeAt(e)<128?1:2}var UAt="…",HAt=2,WAt=400;function VAt(t){if(t.length>WAt)return function(t){for(var e=t.map((function(t){var e=t.attr("text");return(0,tOt.UM)(e)?"":""+e})),n=0,r=0,i=0;i=19968&&c<=40869?2:1}o>n&&(n=o,r=i)}return t[r].getBBox().width}(t);var e=0;return(0,tOt.S6)(t,(function(t){var n=t.getBBox().width;e=0?function(t,e,n){void 0===n&&(n="tail");var r=t.length,i="";if("tail"===n){for(var o=0,a=0;o1||r<0)&&(r=1),{x:EAt(t.x,e.x,r),y:EAt(t.y,e.y,r)}},e.prototype.renderLabel=function(t){var e=this.get("text"),n=this.get("start"),r=this.get("end"),i=e.position,o=e.content,a=e.style,c=e.offsetX,l=e.offsetY,u=e.autoRotate,s=e.maxLength,f=e.autoEllipsis,h=e.ellipsisPosition,d=e.background,p=e.isVertical,v=void 0!==p&&p,g=this.getLabelPoint(n,r,i),m=g.x+c,y=g.y+l,b={id:this.getElementId("line-text"),name:"annotation-line-text",x:m,y:y,content:o,style:a,maxLength:s,autoEllipsis:f,ellipsisPosition:h,background:d,isVertical:v};if(u){var x=[r.x-n.x,r.y-n.y];b.rotate=Math.atan2(x[1],x[0])}XAt(t,b)},e}(NAt),$At=YAt,KAt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{name:"annotation",type:"text",locationType:"point",x:0,y:0,content:"",rotate:null,style:{},background:null,maxLength:null,autoEllipsis:!0,isVertical:!1,ellipsisPosition:"tail",defaultCfg:{style:{fill:qAt.textColor,fontSize:12,textAlign:"center",textBaseline:"middle",fontFamily:qAt.fontFamily}}})},e.prototype.setLocation=function(t){this.set("x",t.x),this.set("y",t.y),this.resetLocation()},e.prototype.renderInner=function(t){var e=this.getLocation(),n=e.x,r=e.y,i=this.get("content"),o=this.get("style");XAt(t,{id:this.getElementId("text"),name:this.get("name")+"-text",x:n,y:r,content:i,style:o,maxLength:this.get("maxLength"),autoEllipsis:this.get("autoEllipsis"),isVertical:this.get("isVertical"),ellipsisPosition:this.get("ellipsisPosition"),background:this.get("background"),rotate:this.get("rotate")})},e.prototype.resetLocation=function(){var t=this.getElementByLocalId("text-group");if(t){var e=this.getLocation(),n=e.x,r=e.y,i=this.get("rotate");wAt(t,n,r),xAt(t,i,n,r)}},e}(NAt),JAt=KAt,QAt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{name:"annotation",type:"arc",locationType:"circle",center:null,radius:100,startAngle:-Math.PI/2,endAngle:3*Math.PI/2,style:{stroke:"#999",lineWidth:1}})},e.prototype.renderInner=function(t){this.renderArc(t)},e.prototype.getArcPath=function(){var t=this.getLocation(),e=t.center,n=t.radius,r=t.startAngle,i=t.endAngle,o=MAt(e,n,r),a=MAt(e,n,i),c=i-r>Math.PI?1:0,l=[["M",o.x,o.y]];if(i-r==2*Math.PI){var u=MAt(e,n,r+Math.PI);l.push(["A",n,n,0,c,1,u.x,u.y]),l.push(["A",n,n,0,c,1,a.x,a.y])}else l.push(["A",n,n,0,c,1,a.x,a.y]);return l},e.prototype.renderArc=function(t){var e=this.getArcPath(),n=this.get("style");this.addShape(t,{type:"path",id:this.getElementId("arc"),name:"annotation-arc",attrs:(0,QCt.pi)({path:e},n)})},e}(NAt),tPt=QAt,ePt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{name:"annotation",type:"region",locationType:"region",start:null,end:null,style:{},defaultCfg:{style:{lineWidth:0,fill:qAt.regionColor,opacity:.4}}})},e.prototype.renderInner=function(t){this.renderRegion(t)},e.prototype.renderRegion=function(t){var e=this.get("start"),n=this.get("end"),r=this.get("style"),i=CAt({start:e,end:n});this.addShape(t,{type:"rect",id:this.getElementId("region"),name:"annotation-region",attrs:(0,QCt.pi)({x:i.x,y:i.y,width:i.width,height:i.height},r)})},e}(NAt),nPt=ePt,rPt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{name:"annotation",type:"image",locationType:"region",start:null,end:null,src:null,style:{}})},e.prototype.renderInner=function(t){this.renderImage(t)},e.prototype.getImageAttrs=function(){var t=this.get("start"),e=this.get("end"),n=this.get("style"),r=CAt({start:t,end:e}),i=this.get("src");return(0,QCt.pi)({x:r.x,y:r.y,img:i,width:r.width,height:r.height},n)},e.prototype.renderImage=function(t){this.addShape(t,{type:"image",id:this.getElementId("image"),name:"annotation-image",attrs:this.getImageAttrs()})},e}(NAt),iPt=rPt,oPt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{name:"annotation",type:"dataMarker",locationType:"point",x:0,y:0,point:{},line:{},text:{},direction:"upward",autoAdjust:!0,coordinateBBox:null,defaultCfg:{point:{display:!0,style:{r:3,fill:"#FFFFFF",stroke:"#1890FF",lineWidth:2}},line:{display:!0,length:20,style:{stroke:qAt.lineColor,lineWidth:1}},text:{content:"",display:!0,style:{fill:qAt.textColor,opacity:.65,fontSize:12,textAlign:"start",fontFamily:qAt.fontFamily}}}})},e.prototype.renderInner=function(t){(0,tOt.U2)(this.get("line"),"display")&&this.renderLine(t),(0,tOt.U2)(this.get("text"),"display")&&this.renderText(t),(0,tOt.U2)(this.get("point"),"display")&&this.renderPoint(t),this.get("autoAdjust")&&this.autoAdjust(t)},e.prototype.applyOffset=function(){this.moveElementTo(this.get("group"),{x:this.get("x")+this.get("offsetX"),y:this.get("y")+this.get("offsetY")})},e.prototype.renderPoint=function(t){var e=this.getShapeAttrs().point;this.addShape(t,{type:"circle",id:this.getElementId("point"),name:"annotation-point",attrs:e})},e.prototype.renderLine=function(t){var e=this.getShapeAttrs().line;this.addShape(t,{type:"path",id:this.getElementId("line"),name:"annotation-line",attrs:e})},e.prototype.renderText=function(t){var e=this.getShapeAttrs().text,n=e.x,r=e.y,i=e.text,o=(0,QCt._T)(e,["x","y","text"]),a=this.get("text"),c=a.background,l=a.maxLength,u=a.autoEllipsis,s=a.isVertival,f=a.ellipsisPosition;XAt(t,{x:n,y:r,id:this.getElementId("text"),name:"annotation-text",content:i,style:o,background:c,maxLength:l,autoEllipsis:u,isVertival:s,ellipsisPosition:f})},e.prototype.autoAdjust=function(t){var e=this.get("direction"),n=this.get("x"),r=this.get("y"),i=(0,tOt.U2)(this.get("line"),"length",0),o=this.get("coordinateBBox"),a=t.getBBox(),c=a.minX,l=a.maxX,u=a.minY,s=a.maxY,f=t.findById(this.getElementId("text-group")),h=t.findById(this.getElementId("text")),d=t.findById(this.getElementId("line"));if(o&&f){var p=f.attr("x"),v=f.attr("y"),g=h.getCanvasBBox(),m=g.width,y=g.height,b=0,x=0;if(n+c<=o.minX)if("leftward"===e)b=1;else{var w=o.minX-(n+c);p=f.attr("x")+w}else if(n+l>=o.maxX)if("rightward"===e)b=-1;else{w=n+l-o.maxX;p=f.attr("x")-w}if(b&&(d&&d.attr("path",[["M",0,0],["L",i*b,0]]),p=(i+2+m)*b),r+u<=o.minY)if("upward"===e)x=1;else{w=o.minY-(r+u);v=f.attr("y")+w}else if(r+s>=o.maxY)if("downward"===e)x=-1;else{w=r+s-o.maxY;v=f.attr("y")-w}x&&(d&&d.attr("path",[["M",0,0],["L",0,i*x]]),v=(i+2+y)*x),p===f.attr("x")&&v===f.attr("y")||wAt(f,p,v)}},e.prototype.getShapeAttrs=function(){var t=(0,tOt.U2)(this.get("line"),"display"),e=(0,tOt.U2)(this.get("point"),"style",{}),n=(0,tOt.U2)(this.get("line"),"style",{}),r=(0,tOt.U2)(this.get("text"),"style",{}),i=this.get("direction"),o=t?(0,tOt.U2)(this.get("line"),"length",0):0,a=0,c=0,l="top",u="start";switch(i){case"upward":c=-1,l="bottom";break;case"downward":c=1,l="top";break;case"leftward":a=-1,u="end";break;case"rightward":a=1,u="start"}return{point:(0,QCt.pi)({x:0,y:0},e),line:(0,QCt.pi)({path:[["M",0,0],["L",o*a,o*c]]},n),text:(0,QCt.pi)({x:(o+2)*a,y:(o+2)*c,text:(0,tOt.U2)(this.get("text"),"content",""),textBaseline:l,textAlign:u},r)}},e}(NAt),aPt=oPt,cPt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{name:"annotation",type:"dataRegion",locationType:"points",points:[],lineLength:0,region:{},text:{},defaultCfg:{region:{style:{lineWidth:0,fill:qAt.regionColor,opacity:.4}},text:{content:"",style:{textAlign:"center",textBaseline:"bottom",fontSize:12,fill:qAt.textColor,fontFamily:qAt.fontFamily}}}})},e.prototype.renderInner=function(t){var e=(0,tOt.U2)(this.get("region"),"style",{}),n=((0,tOt.U2)(this.get("text"),"style",{}),this.get("lineLength")||0),r=this.get("points");if(r.length){var i=function(t){var e=t.map((function(t){return t.x})),n=t.map((function(t){return t.y})),r=Math.min.apply(Math,e),i=Math.min.apply(Math,n),o=Math.max.apply(Math,e),a=Math.max.apply(Math,n);return{x:r,y:i,minX:r,minY:i,maxX:o,maxY:a,width:o-r,height:a-i}}(r),o=[];o.push(["M",r[0].x,i.minY-n]),r.forEach((function(t){o.push(["L",t.x,t.y])})),o.push(["L",r[r.length-1].x,r[r.length-1].y-n]),this.addShape(t,{type:"path",id:this.getElementId("region"),name:"annotation-region",attrs:(0,QCt.pi)({path:o},e)}),XAt(t,(0,QCt.pi)({id:this.getElementId("text"),name:"annotation-text",x:(i.minX+i.maxX)/2,y:i.minY-n},this.get("text")))}},e}(NAt),lPt=cPt,uPt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{name:"annotation",type:"regionFilter",locationType:"region",start:null,end:null,color:null,shape:[]})},e.prototype.renderInner=function(t){var e=this,n=this.get("start"),r=this.get("end"),i=this.addGroup(t,{id:this.getElementId("region-filter"),capture:!1});(0,tOt.S6)(this.get("shapes"),(function(t,n){var r=t.get("type"),o=(0,tOt.d9)(t.attr());e.adjustShapeAttrs(o),e.addShape(i,{id:e.getElementId("shape-"+r+"-"+n),capture:!1,type:r,attrs:o})}));var o=CAt({start:n,end:r});i.setClip({type:"rect",attrs:{x:o.minX,y:o.minY,width:o.width,height:o.height}})},e.prototype.adjustShapeAttrs=function(t){var e=this.get("color");t.fill&&(t.fill=t.fillStyle=e),t.stroke=t.strokeStyle=e},e}(NAt),sPt=uPt,fPt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{name:"annotation",type:"shape",draw:tOt.ZT})},e.prototype.renderInner=function(t){var e=this.get("render");(0,tOt.mf)(e)&&e(t)},e}(NAt),hPt=fPt;function dPt(t,e,n){var r;try{r=window.getComputedStyle?window.getComputedStyle(t,null)[e]:t.style[e]}catch(F2t){}finally{r=void 0===r?n:r}return r}function pPt(t,e){var n=function(t,e){var n=dPt(t,"width",e);return"auto"===n&&(n=t.offsetWidth),parseFloat(n)}(t,e),r=parseFloat(dPt(t,"borderLeftWidth"))||0,i=parseFloat(dPt(t,"paddingLeft"))||0,o=parseFloat(dPt(t,"paddingRight"))||0,a=parseFloat(dPt(t,"borderRightWidth"))||0,c=parseFloat(dPt(t,"marginRight"))||0;return n+r+a+i+o+(parseFloat(dPt(t,"marginLeft"))||0)+c}function vPt(t,e){var n=function(t,e){var n=dPt(t,"height",e);return"auto"===n&&(n=t.offsetHeight),parseFloat(n)}(t,e),r=parseFloat(dPt(t,"borderTopWidth"))||0,i=parseFloat(dPt(t,"paddingTop"))||0,o=parseFloat(dPt(t,"paddingBottom"))||0;return n+r+(parseFloat(dPt(t,"borderBottomWidth"))||0)+i+o+(parseFloat(dPt(t,"marginTop"))||0)+(parseFloat(dPt(t,"marginBottom"))||0)}var gPt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{container:null,containerTpl:"
    ",updateAutoRender:!0,containerClassName:"",parent:null})},e.prototype.getContainer=function(){return this.get("container")},e.prototype.show=function(){this.get("container").style.display="",this.set("visible",!0)},e.prototype.hide=function(){this.get("container").style.display="none",this.set("visible",!1)},e.prototype.setCapture=function(t){var e=t?"auto":"none";this.getContainer().style.pointerEvents=e,this.set("capture",t)},e.prototype.getBBox=function(){var t=this.getContainer();return OAt(parseFloat(t.style.left)||0,parseFloat(t.style.top)||0,t.clientWidth,t.clientHeight)},e.prototype.clear=function(){kAt(this.get("container"))},e.prototype.destroy=function(){this.removeEvent(),this.removeDom(),t.prototype.destroy.call(this)},e.prototype.init=function(){t.prototype.init.call(this),this.initContainer(),this.initDom(),this.resetStyles(),this.applyStyles(),this.initEvent(),this.initCapture(),this.initVisible()},e.prototype.initCapture=function(){this.setCapture(this.get("capture"))},e.prototype.initVisible=function(){this.get("visible")?this.show():this.hide()},e.prototype.initDom=function(){},e.prototype.initContainer=function(){var t=this.get("container");if((0,tOt.UM)(t)){t=this.createDom();var e=this.get("parent");(0,tOt.HD)(e)&&(e=document.getElementById(e),this.set("parent",e)),e.appendChild(t),this.get("containerId")&&t.setAttribute("id",this.get("containerId")),this.set("container",t)}else(0,tOt.HD)(t)&&(t=document.getElementById(t),this.set("container",t));this.get("parent")||this.set("parent",t.parentNode)},e.prototype.resetStyles=function(){var t=this.get("domStyles"),e=this.get("defaultStyles");t=t?(0,tOt.b$)({},e,t):e,this.set("domStyles",t)},e.prototype.applyStyles=function(){var t=this.get("domStyles");if(t){var e=this.getContainer();this.applyChildrenStyles(e,t);var n,r=this.get("containerClassName");if(r&&(n=r,e.className.match(new RegExp("(\\s|^)"+n+"(\\s|$)"))))mOt(e,t[r])}},e.prototype.applyChildrenStyles=function(t,e){(0,tOt.S6)(e,(function(e,n){var r=t.getElementsByClassName(n);(0,tOt.S6)(r,(function(t){mOt(t,e)}))}))},e.prototype.applyStyle=function(t,e){mOt(e,this.get("domStyles")[t])},e.prototype.createDom=function(){return gOt(this.get("containerTpl"))},e.prototype.initEvent=function(){},e.prototype.removeDom=function(){var t=this.get("container");t&&t.parentNode&&t.parentNode.removeChild(t)},e.prototype.removeEvent=function(){},e.prototype.updateInner=function(t){(0,tOt.wH)(t,"domStyles")&&(this.resetStyles(),this.applyStyles()),this.resetPosition()},e.prototype.resetPosition=function(){},e}(FAt),mPt=gPt,yPt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{name:"annotation",type:"html",locationType:"point",x:0,y:0,containerTpl:'
    ',alignX:"left",alignY:"top",html:"",zIndex:7})},e.prototype.render=function(){var t=this.getContainer(),e=this.get("html");kAt(t);var n=(0,tOt.mf)(e)?e(t):e;if((0,tOt.kK)(n))t.appendChild(n);else if((0,tOt.HD)(n)||(0,tOt.hj)(n)){var r=gOt(""+n);r&&t.appendChild(r)}this.resetPosition()},e.prototype.resetPosition=function(){var t=this.getContainer(),e=this.getLocation(),n=e.x,r=e.y,i=this.get("alignX"),o=this.get("alignY"),a=this.get("offsetX"),c=this.get("offsetY"),l=pPt(t),u=vPt(t),s={x:n,y:r};"middle"===i?s.x-=Math.round(l/2):"right"===i&&(s.x-=Math.round(l)),"middle"===o?s.y-=Math.round(u/2):"bottom"===o&&(s.y-=Math.round(u)),a&&(s.x+=a),c&&(s.y+=c),mOt(t,{position:"absolute",left:s.x+"px",top:s.y+"px",zIndex:this.get("zIndex")})},e}(mPt),bPt=yPt;function xPt(t,e,n){var r=e+"Style",i=null;return(0,tOt.S6)(n,(function(e,n){t[n]&&e[r]&&(i||(i={}),(0,tOt.CD)(i,e[r]))})),i}var wPt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{name:"axis",ticks:[],line:{},tickLine:{},subTickLine:null,title:null,label:{},verticalFactor:1,verticalLimitLength:null,overlapOrder:["autoRotate","autoEllipsis","autoHide"],tickStates:{},optimize:{},defaultCfg:{line:{style:{lineWidth:1,stroke:qAt.lineColor}},tickLine:{style:{lineWidth:1,stroke:qAt.lineColor},alignTick:!0,length:5,displayWithLabel:!0},subTickLine:{style:{lineWidth:1,stroke:qAt.lineColor},count:4,length:2},label:{autoRotate:!0,autoHide:!1,autoEllipsis:!1,style:{fontSize:12,fill:qAt.textColor,fontFamily:qAt.fontFamily,fontWeight:"normal"},offset:10,offsetX:0,offsetY:0},title:{autoRotate:!0,spacing:5,position:"center",style:{fontSize:12,fill:qAt.textColor,textBaseline:"middle",fontFamily:qAt.fontFamily,textAlign:"center"},iconStyle:{fill:qAt.descriptionIconFill,stroke:qAt.descriptionIconStroke},description:""},tickStates:{active:{labelStyle:{fontWeight:500},tickLineStyle:{lineWidth:2}},inactive:{labelStyle:{fill:qAt.uncheckedColor}}},optimize:{enable:!0,threshold:400}},theme:{}})},e.prototype.renderInner=function(t){this.get("line")&&this.drawLine(t),this.drawTicks(t),this.get("title")&&this.drawTitle(t)},e.prototype.isList=function(){return!0},e.prototype.getItems=function(){return this.get("ticks")},e.prototype.setItems=function(t){this.update({ticks:t})},e.prototype.updateItem=function(t,e){(0,tOt.CD)(t,e),this.clear(),this.render()},e.prototype.clearItems=function(){var t=this.getElementByLocalId("label-group");t&&t.clear()},e.prototype.setItemState=function(t,e,n){t[e]=n,this.updateTickStates(t)},e.prototype.hasState=function(t,e){return!!t[e]},e.prototype.getItemStates=function(t){var e=this.get("tickStates"),n=[];return(0,tOt.S6)(e,(function(e,r){t[r]&&n.push(r)})),n},e.prototype.clearItemsState=function(t){var e=this,n=this.getItemsByState(t);(0,tOt.S6)(n,(function(n){e.setItemState(n,t,!1)}))},e.prototype.getItemsByState=function(t){var e=this,n=this.getItems();return(0,tOt.hX)(n,(function(n){return e.hasState(n,t)}))},e.prototype.getSidePoint=function(t,e){var n=this.getSideVector(e,t);return{x:t.x+n[0],y:t.y+n[1]}},e.prototype.getTextAnchor=function(t){var e;return(0,tOt.vQ)(t[0],0)?e="center":t[0]>0?e="start":t[0]<0&&(e="end"),e},e.prototype.getTextBaseline=function(t){var e;return(0,tOt.vQ)(t[1],0)?e="middle":t[1]>0?e="top":t[1]<0&&(e="bottom"),e},e.prototype.processOverlap=function(t){},e.prototype.drawLine=function(t){var e=this.getLinePath(),n=this.get("line");this.addShape(t,{type:"path",id:this.getElementId("line"),name:"axis-line",attrs:(0,tOt.CD)({path:e},n.style)})},e.prototype.getTickLineItems=function(t){var e=this,n=[],r=this.get("tickLine"),i=r.alignTick,o=r.length,a=1;return t.length>=2&&(a=t[1].value-t[0].value),(0,tOt.S6)(t,(function(t){var r=t.point;i||(r=e.getTickPoint(t.value-a/2));var c=e.getSidePoint(r,o);n.push({startPoint:r,tickValue:t.value,endPoint:c,tickId:t.id,id:"tickline-"+t.id})})),n},e.prototype.getSubTickLineItems=function(t){var e=[],n=this.get("subTickLine"),r=n.count,i=t.length;if(i>=2)for(var o=0;o0){var n=(0,tOt.dp)(e);if(n>t.threshold){var r=Math.ceil(n/t.threshold),i=e.filter((function(t,e){return e%r==0}));this.set("ticks",i),this.set("originalTicks",e)}}},e.prototype.getLabelAttrs=function(t,e,n){var r=this.get("label"),i=r.offset,o=r.offsetX,a=r.offsetY,c=r.rotate,l=r.formatter,u=this.getSidePoint(t.point,i),s=this.getSideVector(i,u),f=l?l(t.name,t,e):t.name,h=r.style;h=(0,tOt.mf)(h)?(0,tOt.U2)(this.get("theme"),["label","style"],{}):h;var d=(0,tOt.CD)({x:u.x+o,y:u.y+a,text:f,textAlign:this.getTextAnchor(s),textBaseline:this.getTextBaseline(s)},h);return c&&(d.matrix=mAt(u,c)),d},e.prototype.drawLabels=function(t){var e=this,n=this.get("ticks"),r=this.addGroup(t,{name:"axis-label-group",id:this.getElementId("label-group")});(0,tOt.S6)(n,(function(t,i){e.addShape(r,{type:"text",name:"axis-label",id:e.getElementId("label-"+t.id),attrs:e.getLabelAttrs(t,i,n),delegateObject:{tick:t,item:t,index:i}})})),this.processOverlap(r);var i=r.getChildren(),o=(0,tOt.U2)(this.get("theme"),["label","style"],{}),a=this.get("label"),c=a.style,l=a.formatter;if((0,tOt.mf)(c)){var u=i.map((function(t){return(0,tOt.U2)(t.get("delegateObject"),"tick")}));(0,tOt.S6)(i,(function(t,e){var n=t.get("delegateObject").tick,r=l?l(n.name,n,e):n.name,i=(0,tOt.CD)({},o,c(r,e,u));t.attr(i)}))}},e.prototype.getTitleAttrs=function(){var t=this.get("title"),e=t.style,n=t.position,r=t.offset,i=t.spacing,o=void 0===i?0:i,a=t.autoRotate,c=e.fontSize,l=.5;"start"===n?l=0:"end"===n&&(l=1);var u=this.getTickPoint(l),s=this.getSidePoint(u,r||o+c/2),f=(0,tOt.CD)({x:s.x,y:s.y,text:t.text},e),h=t.rotate,d=h;if((0,tOt.UM)(h)&&a){var p=this.getAxisVector(u);d=rAt.Dg(p,[1,0],!0)}if(d){var v=mAt(s,d);f.matrix=v}return f},e.prototype.drawTitle=function(t){var e,n=this.getTitleAttrs(),r=this.addShape(t,{type:"text",id:this.getElementId("title"),name:"axis-title",attrs:n});(null===(e=this.get("title"))||void 0===e?void 0:e.description)&&this.drawDescriptionIcon(t,r,n.matrix)},e.prototype.drawDescriptionIcon=function(t,e,n){var r=this.addGroup(t,{name:"axis-description",id:this.getElementById("description")}),i=e.getBBox(),o=i.maxX,a=i.maxY,c=i.height,l=this.get("title").iconStyle,u=c/2,s=u/6,f=o+4,h=a-c/2,d=[f+u,h-u],p=d[0],v=d[1],g=[p+u,v+u],m=g[0],y=g[1],b=[p,y+u],x=b[0],w=b[1],S=[f,v+u],k=S[0],C=S[1],O=[f+u,h-c/4],E=O[0],M=O[1],A=[E,M+s],P=A[0],_=A[1],D=[P,_+s],T=D[0],Z=D[1],F=[T,Z+3*u/4],j=F[0],I=F[1];this.addShape(r,{type:"path",id:this.getElementId("title-description-icon"),name:"axis-title-description-icon",attrs:(0,QCt.pi)({path:[["M",p,v],["A",u,u,0,0,1,m,y],["A",u,u,0,0,1,x,w],["A",u,u,0,0,1,k,C],["A",u,u,0,0,1,p,v],["M",E,M],["L",P,_],["M",T,Z],["L",j,I]],lineWidth:s,matrix:n},l)}),this.addShape(r,{type:"rect",id:this.getElementId("title-description-rect"),name:"axis-title-description-rect",attrs:{x:f,y:h-c/2,width:c,height:c,stroke:"#000",fill:"#000",opacity:0,matrix:n,cursor:"pointer"}})},e.prototype.applyTickStates=function(t,e){if(this.getItemStates(t).length){var n=this.get("tickStates"),r=this.getElementId("label-"+t.id),i=e.findById(r);if(i){var o=xPt(t,"label",n);o&&i.attr(o)}var a=this.getElementId("tickline-"+t.id),c=e.findById(a);if(c){var l=xPt(t,"tickLine",n);l&&c.attr(l)}}},e.prototype.updateTickStates=function(t){var e=this.getItemStates(t),n=this.get("tickStates"),r=this.get("label"),i=this.getElementByLocalId("label-"+t.id),o=this.get("tickLine"),a=this.getElementByLocalId("tickline-"+t.id);if(e.length){if(i){var c=xPt(t,"label",n);c&&i.attr(c)}if(a){var l=xPt(t,"tickLine",n);l&&a.attr(l)}}else i&&i.attr(r.style),a&&a.attr(o.style)},e}(NAt),SPt=wPt;function kPt(t,e,n,r){var i=e.getChildren(),o=!1;return(0,tOt.S6)(i,(function(e){var i=GAt(t,e,n,r);o=o||i})),o}function CPt(){return EPt}function OPt(t,e,n){return kPt(t,e,n,"head")}function EPt(t,e,n){return kPt(t,e,n,"tail")}function MPt(t,e,n){return kPt(t,e,n,"middle")}function APt(t){var e=function(t){var e=t.attr("matrix");return e&&1!==e[0]}(t)?function(t){var e=[0,0,0];return eAt(e,[1,0,0],t),Math.atan2(e[1],e[0])}(t.attr("matrix")):0;return e%360}function PPt(t,e,n,r){var i=!1,o=APt(e),a=t?Math.abs(n.attr("y")-e.attr("y")):Math.abs(n.attr("x")-e.attr("x")),c=(t?n.attr("y")>e.attr("y"):n.attr("x")>e.attr("x"))?e.getBBox():n.getBBox();if(t){var l=Math.abs(Math.cos(o));i=AAt(l,0,Math.PI/180)?c.width+r>a:c.height/l+r>a}else{l=Math.abs(Math.sin(o));i=AAt(l,0,Math.PI/180)?c.width+r>a:c.height/l+r>a}return i}function _Pt(t,e,n,r){var i=(null==r?void 0:r.minGap)||0,o=e.getChildren().slice().filter((function(t){return t.get("visible")}));if(!o.length)return!1;var a=!1;n&&o.reverse();for(var c=o.length,l=o[0],u=1;u1){h=Math.ceil(h);for(var p=0;p2){var a=i[0],c=i[i.length-1];a.get("visible")||(a.show(),_Pt(t,e,!1,r)&&(o=!0)),c.get("visible")||(c.show(),_Pt(t,e,!0,r)&&(o=!0))}return o}function LPt(t,e,n,r){var i=e.getChildren();if(!i.length)return!1;if(!t&&i.length<2)return!1;var o=VAt(i),a=!1;t?a=!!n&&o>n:a=o>Math.abs(i[1].attr("x")-i[0].attr("x"));a&&function(t,e){(0,tOt.S6)(t,(function(t){var n=mAt({x:t.attr("x"),y:t.attr("y")},e);t.attr("matrix",n)}))}(i,r(n,o));return a}function NPt(){return BPt}function BPt(t,e,n,r){return LPt(t,e,n,(function(){return(0,tOt.hj)(r)?r:t?qAt.verticalAxisRotate:qAt.horizontalAxisRotate}))}function zPt(t,e,n){return LPt(t,e,n,(function(e,n){if(!e)return t?qAt.verticalAxisRotate:qAt.horizontalAxisRotate;if(t)return-Math.acos(e/n);var r=0;return(e>n||(r=Math.asin(e/n))>Math.PI/4)&&(r=Math.PI/4),r}))}var UPt,HPt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{type:"line",locationType:"region",start:null,end:null})},e.prototype.getLinePath=function(){var t=this.get("start"),e=this.get("end"),n=[];return n.push(["M",t.x,t.y]),n.push(["L",e.x,e.y]),n},e.prototype.getInnerLayoutBBox=function(){var e=this.get("start"),n=this.get("end"),r=t.prototype.getInnerLayoutBBox.call(this),i=Math.min(e.x,n.x,r.x),o=Math.min(e.y,n.y,r.y),a=Math.max(e.x,n.x,r.maxX),c=Math.max(e.y,n.y,r.maxY);return{x:i,y:o,minX:i,minY:o,maxX:a,maxY:c,width:a-i,height:c-o}},e.prototype.isVertical=function(){var t=this.get("start"),e=this.get("end");return(0,tOt.vQ)(t.x,e.x)},e.prototype.isHorizontal=function(){var t=this.get("start"),e=this.get("end");return(0,tOt.vQ)(t.y,e.y)},e.prototype.getTickPoint=function(t){var e=this.get("start"),n=this.get("end"),r=n.x-e.x,i=n.y-e.y;return{x:e.x+r*t,y:e.y+i*t}},e.prototype.getSideVector=function(t){var e=this.getAxisVector(),n=lAt.Fv([0,0],e),r=this.get("verticalFactor"),i=[n[1],-1*n[0]];return lAt.bA([0,0],i,t*r)},e.prototype.getAxisVector=function(){var t=this.get("start"),e=this.get("end");return[e.x-t.x,e.y-t.y]},e.prototype.processOverlap=function(t){var e=this,n=this.isVertical(),r=this.isHorizontal();if(n||r){var i=this.get("label"),o=this.get("title"),a=this.get("verticalLimitLength"),c=i.offset,l=a,u=0,s=0;o&&(u=o.style.fontSize,s=o.spacing),l&&(l=l-c-s-u);var f=this.get("overlapOrder");if((0,tOt.S6)(f,(function(n){i[n]&&e.canProcessOverlap(n)&&e.autoProcessOverlap(n,i[n],t,l)})),o&&(0,tOt.UM)(o.offset)){var h=t.getCanvasBBox(),d=n?h.width:h.height;o.offset=c+d+s+u/2}}},e.prototype.canProcessOverlap=function(t){var e=this.get("label");return"autoRotate"!==t||(0,tOt.UM)(e.rotate)},e.prototype.autoProcessOverlap=function(t,e,n,r){var i=this,o=this.isVertical(),a=!1,c=O[t];if(!0===e){this.get("label");a=c.getDefault()(o,n,r)}else if((0,tOt.mf)(e))a=e(o,n,r);else if((0,tOt.Kn)(e)){var l=e;c[l.type]&&(a=c[l.type](o,n,r,l.cfg))}else c[e]&&(a=c[e](o,n,r));if("autoRotate"===t){if(a){var u=n.getChildren(),s=this.get("verticalFactor");(0,tOt.S6)(u,(function(t){if("center"===t.attr("textAlign")){var e=s>0?"end":"start";t.attr("textAlign",e)}}))}}else if("autoHide"===t){var f=n.getChildren().slice(0);(0,tOt.S6)(f,(function(t){t.get("visible")||(i.get("isRegister")&&i.unregisterElement(t),t.remove())}))}},e}(SPt),WPt=HPt,VPt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{type:"circle",locationType:"circle",center:null,radius:null,startAngle:-Math.PI/2,endAngle:3*Math.PI/2})},e.prototype.getLinePath=function(){var t=this.get("center"),e=t.x,n=t.y,r=this.get("radius"),i=r,o=this.get("startAngle"),a=this.get("endAngle"),c=[];if(Math.abs(a-o)===2*Math.PI)c=[["M",e,n-i],["A",r,i,0,1,1,e,n+i],["A",r,i,0,1,1,e,n-i],["Z"]];else{var l=this.getCirclePoint(o),u=this.getCirclePoint(a),s=Math.abs(a-o)>Math.PI?1:0,f=o>a?0:1;c=[["M",e,n],["L",l.x,l.y],["A",r,i,0,s,f,u.x,u.y],["L",e,n]]}return c},e.prototype.getTickPoint=function(t){var e=this.get("startAngle"),n=e+(this.get("endAngle")-e)*t;return this.getCirclePoint(n)},e.prototype.getSideVector=function(t,e){var n=this.get("center"),r=[e.x-n.x,e.y-n.y],i=this.get("verticalFactor"),o=lAt.kE(r);return lAt.bA(r,r,i*t/o),r},e.prototype.getAxisVector=function(t){var e=this.get("center"),n=[t.x-e.x,t.y-e.y];return[n[1],-1*n[0]]},e.prototype.getCirclePoint=function(t,e){var n=this.get("center");return e=e||this.get("radius"),{x:n.x+Math.cos(t)*e,y:n.y+Math.sin(t)*e}},e.prototype.canProcessOverlap=function(t){var e=this.get("label");return"autoRotate"!==t||(0,tOt.UM)(e.rotate)},e.prototype.processOverlap=function(t){var e=this,n=this.get("label"),r=this.get("title"),i=this.get("verticalLimitLength"),o=n.offset,a=i,c=0,l=0;r&&(c=r.style.fontSize,l=r.spacing),a&&(a=a-o-l-c);var u=this.get("overlapOrder");if((0,tOt.S6)(u,(function(r){n[r]&&e.canProcessOverlap(r)&&e.autoProcessOverlap(r,n[r],t,a)})),r&&(0,tOt.UM)(r.offset)){var s=t.getCanvasBBox().height;r.offset=o+s+l+c/2}},e.prototype.autoProcessOverlap=function(t,e,n,r){var i=this,o=!1,a=O[t];if(r>0)if(!0===e)o=a.getDefault()(!1,n,r);else if((0,tOt.mf)(e))o=e(!1,n,r);else if((0,tOt.Kn)(e)){var c=e;a[c.type]&&(o=a[c.type](!1,n,r,c.cfg))}else a[e]&&(o=a[e](!1,n,r));if("autoRotate"===t){if(o){var l=n.getChildren(),u=this.get("verticalFactor");(0,tOt.S6)(l,(function(t){if("center"===t.attr("textAlign")){var e=u>0?"end":"start";t.attr("textAlign",e)}}))}}else if("autoHide"===t){var s=n.getChildren().slice(0);(0,tOt.S6)(s,(function(t){t.get("visible")||(i.get("isRegister")&&i.unregisterElement(t),t.remove())}))}},e}(SPt),GPt=VPt,XPt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{name:"crosshair",type:"base",line:{},text:null,textBackground:{},capture:!1,defaultCfg:{line:{style:{lineWidth:1,stroke:qAt.lineColor}},text:{position:"start",offset:10,autoRotate:!1,content:null,style:{fill:qAt.textColor,textAlign:"center",textBaseline:"middle",fontFamily:qAt.fontFamily}},textBackground:{padding:5,style:{stroke:qAt.lineColor}}}})},e.prototype.renderInner=function(t){this.get("line")&&this.renderLine(t),this.get("text")&&(this.renderText(t),this.renderBackground(t))},e.prototype.renderText=function(t){var e=this.get("text"),n=e.style,r=e.autoRotate,i=e.content;if(!(0,tOt.UM)(i)){var o=this.getTextPoint(),a=null;if(r)a=mAt(o,this.getRotateAngle());this.addShape(t,{type:"text",name:"crosshair-text",id:this.getElementId("text"),attrs:(0,QCt.pi)((0,QCt.pi)((0,QCt.pi)({},o),{text:i,matrix:a}),n)})}},e.prototype.renderLine=function(t){var e=this.getLinePath(),n=this.get("line").style;this.addShape(t,{type:"path",name:"crosshair-line",id:this.getElementId("line"),attrs:(0,QCt.pi)({path:e},n)})},e.prototype.renderBackground=function(t){var e=this.getElementId("text"),n=t.findById(e),r=this.get("textBackground");if(r&&n){var i=n.getBBox(),o=SAt(r.padding),a=r.style;this.addShape(t,{type:"rect",name:"crosshair-text-background",id:this.getElementId("text-background"),attrs:(0,QCt.pi)({x:i.x-o[3],y:i.y-o[0],width:i.width+o[1]+o[3],height:i.height+o[0]+o[2],matrix:n.attr("matrix")},a)}).toBack()}},e}(NAt),qPt=XPt,YPt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{type:"line",locationType:"region",start:null,end:null})},e.prototype.getRotateAngle=function(){var t=this.getLocation(),e=t.start,n=t.end,r=this.get("text").position,i=Math.atan2(n.y-e.y,n.x-e.x);return"start"===r?i-Math.PI/2:i+Math.PI/2},e.prototype.getTextPoint=function(){var t=this.getLocation(),e=t.start,n=t.end,r=this.get("text");return DAt(e,n,r.position,r.offset)},e.prototype.getLinePath=function(){var t=this.getLocation(),e=t.start,n=t.end;return[["M",e.x,e.y],["L",n.x,n.y]]},e}(qPt),$Pt=YPt,KPt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{type:"circle",locationType:"circle",center:null,radius:100,startAngle:-Math.PI/2,endAngle:3*Math.PI/2})},e.prototype.getRotateAngle=function(){var t=this.getLocation(),e=t.startAngle,n=t.endAngle;return"start"===this.get("text").position?e+Math.PI/2:n-Math.PI/2},e.prototype.getTextPoint=function(){var t=this.get("text"),e=t.position,n=t.offset,r=this.getLocation(),i=r.center,o=r.radius,a=r.startAngle,c=r.endAngle,l="start"===e?a:c,u=this.getRotateAngle()-Math.PI,s=MAt(i,o,l),f=Math.cos(u)*n,h=Math.sin(u)*n;return{x:s.x+f,y:s.y+h}},e.prototype.getLinePath=function(){var t=this.getLocation(),e=t.center,n=t.radius,r=t.startAngle,i=t.endAngle,o=null;if(i-r==2*Math.PI){var a=e.x,c=e.y;o=[["M",a,c-n],["A",n,n,0,1,1,a,c+n],["A",n,n,0,1,1,a,c-n],["Z"]]}else{var l=MAt(e,n,r),u=MAt(e,n,i),s=Math.abs(i-r)>Math.PI?1:0,f=r>i?0:1;o=[["M",l.x,l.y],["A",n,n,0,s,f,u.x,u.y]]}return o},e}(qPt),JPt=KPt,QPt="g2-crosshair",t_t=QPt+"-line",e_t=QPt+"-text",n_t=((UPt={})[""+QPt]={position:"relative"},UPt[""+t_t]={position:"absolute",backgroundColor:"rgba(0, 0, 0, 0.25)"},UPt[""+e_t]={position:"absolute",color:qAt.textColor,fontFamily:qAt.fontFamily},UPt),r_t=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{name:"crosshair",type:"html",locationType:"region",start:{x:0,y:0},end:{x:0,y:0},capture:!1,text:null,containerTpl:'
    ',crosshairTpl:'
    ',textTpl:'{content}',domStyles:null,containerClassName:QPt,defaultStyles:n_t,defaultCfg:{text:{position:"start",content:null,align:"center",offset:10}}})},e.prototype.render=function(){this.resetText(),this.resetPosition()},e.prototype.initCrossHair=function(){var t=this.getContainer(),e=gOt(this.get("crosshairTpl"));t.appendChild(e),this.applyStyle(t_t,e),this.set("crosshairEl",e)},e.prototype.getTextPoint=function(){var t=this.getLocation(),e=t.start,n=t.end,r=this.get("text");return DAt(e,n,r.position,r.offset)},e.prototype.resetText=function(){var t=this.get("text"),e=this.get("textEl");if(t){var n=t.content;if(!e){var r=this.getContainer();e=gOt((0,tOt.ng)(this.get("textTpl"),t)),r.appendChild(e),this.applyStyle(e_t,e),this.set("textEl",e)}e.innerHTML=n}else e&&e.remove()},e.prototype.isVertical=function(t,e){return t.x===e.x},e.prototype.resetPosition=function(){var t=this.get("crosshairEl");t||(this.initCrossHair(),t=this.get("crosshairEl"));var e=this.get("start"),n=this.get("end"),r=Math.min(e.x,n.x),i=Math.min(e.y,n.y);this.isVertical(e,n)?mOt(t,{width:"1px",height:_At(Math.abs(n.y-e.y))}):mOt(t,{height:"1px",width:_At(Math.abs(n.x-e.x))}),mOt(t,{top:_At(i),left:_At(r)}),this.alignText()},e.prototype.alignText=function(){var t=this.get("textEl");if(t){var e=this.get("text").align,n=t.clientWidth,r=this.getTextPoint();switch(e){case"center":r.x=r.x-n/2;break;case"right":r.x=r.x-n}mOt(t,{top:_At(r.y),left:_At(r.x)})}},e.prototype.updateInner=function(e){(0,tOt.wH)(e,"text")&&this.resetText(),t.prototype.updateInner.call(this,e)},e}(mPt),i_t=r_t,o_t=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{name:"grid",line:{},alternateColor:null,capture:!1,items:[],closed:!1,defaultCfg:{line:{type:"line",style:{lineWidth:1,stroke:qAt.lineColor}}}})},e.prototype.getLineType=function(){return(this.get("line")||this.get("defaultCfg").line).type},e.prototype.renderInner=function(t){this.drawGrid(t)},e.prototype.getAlternatePath=function(t,e){var n=this.getGridPath(t),r=e.slice(0).reverse(),i=this.getGridPath(r,!0);return this.get("closed")?n=n.concat(i):(i[0][0]="L",(n=n.concat(i)).push(["Z"])),n},e.prototype.getPathStyle=function(){return this.get("line").style},e.prototype.drawGrid=function(t){var e=this,n=this.get("line"),r=this.get("items"),i=this.get("alternateColor"),o=null;(0,tOt.S6)(r,(function(a,c){var l=a.id||c;if(n){var u=e.getPathStyle();u=(0,tOt.mf)(u)?u(a,c,r):u;var s=e.getElementId("line-"+l),f=e.getGridPath(a.points);e.addShape(t,{type:"path",name:"grid-line",id:s,attrs:(0,tOt.CD)({path:f},u)})}if(i&&c>0){var h=e.getElementId("region-"+l),d=c%2==0;if((0,tOt.HD)(i))d&&e.drawAlternateRegion(h,t,o.points,a.points,i);else{var p=d?i[1]:i[0];e.drawAlternateRegion(h,t,o.points,a.points,p)}}o=a}))},e.prototype.drawAlternateRegion=function(t,e,n,r,i){var o=this.getAlternatePath(n,r);this.addShape(e,{type:"path",id:t,name:"grid-region",attrs:{path:o,fill:i}})},e}(NAt),a_t=o_t;var c_t,l_t=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{type:"circle",center:null,closed:!0})},e.prototype.getGridPath=function(t,e){var n=this.getLineType(),r=this.get("closed"),i=[];if(t.length)if("circle"===n){var o=this.get("center"),a=t[0],c=function(t,e,n,r){var i=n-t,o=r-e;return Math.sqrt(i*i+o*o)}(o.x,o.y,a.x,a.y),l=e?0:1;r?(i.push(["M",o.x,o.y-c]),i.push(["A",c,c,0,0,l,o.x,o.y+c]),i.push(["A",c,c,0,0,l,o.x,o.y-c]),i.push(["Z"])):(0,tOt.S6)(t,(function(t,e){0===e?i.push(["M",t.x,t.y]):i.push(["A",c,c,0,0,l,t.x,t.y])}))}else(0,tOt.S6)(t,(function(t,e){0===e?i.push(["M",t.x,t.y]):i.push(["L",t.x,t.y])})),r&&i.push(["Z"]);return i},e}(a_t),u_t=l_t,s_t=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{type:"line"})},e.prototype.getGridPath=function(t){var e=[];return(0,tOt.S6)(t,(function(t,n){0===n?e.push(["M",t.x,t.y]):e.push(["L",t.x,t.y])})),e},e}(a_t),f_t=s_t,h_t=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{name:"legend",layout:"horizontal",locationType:"point",x:0,y:0,offsetX:0,offsetY:0,title:null,background:null})},e.prototype.getLayoutBBox=function(){var e=t.prototype.getLayoutBBox.call(this),n=this.get("maxWidth"),r=this.get("maxHeight"),i=e.width,o=e.height;return n&&(i=Math.min(i,n)),r&&(o=Math.min(o,r)),OAt(e.minX,e.minY,i,o)},e.prototype.setLocation=function(t){this.set("x",t.x),this.set("y",t.y),this.resetLocation()},e.prototype.resetLocation=function(){var t=this.get("x"),e=this.get("y"),n=this.get("offsetX"),r=this.get("offsetY");this.moveElementTo(this.get("group"),{x:t+n,y:e+r})},e.prototype.applyOffset=function(){this.resetLocation()},e.prototype.getDrawPoint=function(){return this.get("currentPoint")},e.prototype.setDrawPoint=function(t){return this.set("currentPoint",t)},e.prototype.renderInner=function(t){this.resetDraw(),this.get("title")&&this.drawTitle(t),this.drawLegendContent(t),this.get("background")&&this.drawBackground(t)},e.prototype.drawBackground=function(t){var e=this.get("background"),n=t.getBBox(),r=SAt(e.padding),i=(0,QCt.pi)({x:0,y:0,width:n.width+r[1]+r[3],height:n.height+r[0]+r[2]},e.style);this.addShape(t,{type:"rect",id:this.getElementId("background"),name:"legend-background",attrs:i}).toBack()},e.prototype.drawTitle=function(t){var e=this.get("currentPoint"),n=this.get("title"),r=n.spacing,i=n.style,o=n.text,a=this.addShape(t,{type:"text",id:this.getElementId("title"),name:"legend-title",attrs:(0,QCt.pi)({text:o,x:e.x,y:e.y},i)}).getBBox();this.set("currentPoint",{x:e.x,y:a.maxY+r})},e.prototype.resetDraw=function(){var t=this.get("background"),e={x:0,y:0};if(t){var n=SAt(t.padding);e.x=n[3],e.y=n[0]}this.set("currentPoint",e)},e}(NAt),d_t=h_t,p_t={marker:{style:{inactiveFill:"#000",inactiveOpacity:.45,fill:"#000",opacity:1,size:12}},text:{style:{fill:"#ccc",fontSize:12}}},v_t={fill:qAt.textColor,fontSize:12,textAlign:"start",textBaseline:"middle",fontFamily:qAt.fontFamily,fontWeight:"normal",lineHeight:12},g_t="navigation-arrow-right",m_t="navigation-arrow-left",y_t={right:90*Math.PI/180,left:270*Math.PI/180,up:0,down:180*Math.PI/180},b_t=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.currentPageIndex=1,e.totalPagesCnt=1,e.pageWidth=0,e.pageHeight=0,e.startX=0,e.startY=0,e.onNavigationBack=function(){var t=e.getElementByLocalId("item-group");if(e.currentPageIndex>1){e.currentPageIndex-=1,e.updateNavigation();var n=e.getCurrentNavigationMatrix();e.get("animate")?t.animate({matrix:n},100):t.attr({matrix:n})}},e.onNavigationAfter=function(){var t=e.getElementByLocalId("item-group");if(e.currentPageIndexp&&(p=y),"horizontal"===f?(v&&vc}(t,v))&&(1===g&&(m=v.x+s,n.moveElementTo(d,{x:k,y:v.y+f/2-p.height/2-p.minY})),g+=1,v.x=r,v.y+=S),n.moveElementTo(t,v),t.getParent().setClip({type:"rect",attrs:{x:v.x,y:v.y,width:i+s,height:f}}),v.x+=i+s}))}else{(0,tOt.S6)(a,(function(t){var e=t.getBBox();e.width>y&&(y=e.width)})),b=y,y+=s,c&&(y=Math.min(c,y),b=Math.min(c,b)),this.pageWidth=y,this.pageHeight=l-Math.max(p.height,f+x);var C=Math.floor(this.pageHeight/(f+x));(0,tOt.S6)(a,(function(t,e){0!==e&&e%C==0&&(g+=1,v.x+=y,v.y=i),n.moveElementTo(t,v),t.getParent().setClip({type:"rect",attrs:{x:v.x,y:v.y,width:y,height:f}}),v.y+=f+x})),this.totalPagesCnt=g,this.moveElementTo(d,{x:r+b/2-p.width/2-p.minX,y:l-p.height-p.minY})}this.pageHeight&&this.pageWidth&&e.getParent().setClip({type:"rect",attrs:{x:this.startX,y:this.startY,width:this.pageWidth,height:this.pageHeight}}),"horizontal"===o&&this.get("maxRow")?this.totalPagesCnt=Math.ceil(g/this.get("maxRow")):this.totalPagesCnt=g,this.currentPageIndex>this.totalPagesCnt&&(this.currentPageIndex=1),this.updateNavigation(d),e.attr("matrix",this.getCurrentNavigationMatrix())},e.prototype.drawNavigation=function(t,e,n,r){var i={x:0,y:0},o=this.addGroup(t,{id:this.getElementId("navigation-group"),name:"legend-navigation"}),a=(0,tOt.U2)(r.marker,"style",{}),c=a.size,l=void 0===c?12:c,u=(0,QCt._T)(a,["size"]),s=this.drawArrow(o,i,m_t,"horizontal"===e?"up":"left",l,u);s.on("click",this.onNavigationBack);var f=s.getBBox();i.x+=f.width+2;var h=this.addShape(o,{type:"text",id:this.getElementId("navigation-text"),name:"navigation-text",attrs:(0,QCt.pi)({x:i.x,y:i.y+l/2,text:n,textBaseline:"middle"},(0,tOt.U2)(r.text,"style"))}).getBBox();return i.x+=h.width+2,this.drawArrow(o,i,g_t,"horizontal"===e?"down":"right",l,u).on("click",this.onNavigationAfter),o},e.prototype.updateNavigation=function(t){var e=(0,tOt.b$)({},p_t,this.get("pageNavigator")).marker.style,n=e.fill,r=e.opacity,i=e.inactiveFill,o=e.inactiveOpacity,a=this.currentPageIndex+"/"+this.totalPagesCnt,c=t?t.getChildren()[1]:this.getElementByLocalId("navigation-text"),l=t?t.findById(this.getElementId(m_t)):this.getElementByLocalId(m_t),u=t?t.findById(this.getElementId(g_t)):this.getElementByLocalId(g_t);c.attr("text",a),l.attr("opacity",1===this.currentPageIndex?o:r),l.attr("fill",1===this.currentPageIndex?i:n),l.attr("cursor",1===this.currentPageIndex?"not-allowed":"pointer"),u.attr("opacity",this.currentPageIndex===this.totalPagesCnt?o:r),u.attr("fill",this.currentPageIndex===this.totalPagesCnt?i:n),u.attr("cursor",this.currentPageIndex===this.totalPagesCnt?"not-allowed":"pointer");var s=l.getBBox().maxX+2;c.attr("x",s),s+=c.getBBox().width+2,this.updateArrowPath(u,{x:s,y:0})},e.prototype.drawArrow=function(t,e,n,r,i,o){var a=e.x,c=e.y,l=this.addShape(t,{type:"path",id:this.getElementId(n),name:n,attrs:(0,QCt.pi)({size:i,direction:r,path:[["M",a+i/2,c],["L",a,c+i],["L",a+i,c+i],["Z"]],cursor:"pointer"},o)});return l.attr("matrix",mAt({x:a+i/2,y:c+i/2},y_t[r])),l},e.prototype.updateArrowPath=function(t,e){var n=e.x,r=e.y,i=t.attr(),o=i.size,a=i.direction,c=mAt({x:n+o/2,y:r+o/2},y_t[a]);t.attr("path",[["M",n+o/2,r],["L",n,r+o],["L",n+o,r+o],["Z"]]),t.attr("matrix",c)},e.prototype.getCurrentNavigationMatrix=function(){var t=this,e=t.currentPageIndex,n=t.pageWidth,r=t.pageHeight;return yAt("horizontal"===this.get("layout")?{x:0,y:r*(1-e)}:{x:n*(1-e),y:0})},e.prototype.applyItemStates=function(t,e){if(this.getItemStates(t).length>0){var n=e.getChildren(),r=this.get("itemStates");(0,tOt.S6)(n,(function(e){var n=e.get("name").split("-")[2],i=xPt(t,n,r);i&&(e.attr(i),"marker"!==n||e.get("isStroke")&&e.get("isFill")||(e.get("isStroke")&&e.attr("fill",null),e.get("isFill")&&e.attr("stroke",null)))}))}},e.prototype.getLimitItemWidth=function(){var t=this.get("itemWidth"),e=this.get("maxItemWidth");return e?t&&(e=t<=e?t:e):t&&(e=t),e},e}(d_t),x_t=b_t,w_t=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{type:"continue",min:0,max:100,value:null,colors:[],track:{},rail:{},label:{},handler:{},slidable:!0,tip:null,step:null,maxWidth:null,maxHeight:null,defaultCfg:{label:{align:"rail",spacing:5,formatter:null,style:{fontSize:12,fill:qAt.textColor,textBaseline:"middle",fontFamily:qAt.fontFamily}},handler:{size:10,style:{fill:"#fff",stroke:"#333"}},track:{},rail:{type:"color",size:20,defaultLength:100,style:{fill:"#DCDEE2"}},title:{spacing:5,style:{fill:qAt.textColor,fontSize:12,textAlign:"start",textBaseline:"top"}}}})},e.prototype.isSlider=function(){return!0},e.prototype.getValue=function(){return this.getCurrentValue()},e.prototype.getRange=function(){return{min:this.get("min"),max:this.get("max")}},e.prototype.setRange=function(t,e){this.update({min:t,max:e})},e.prototype.setValue=function(t){var e=this.getValue();this.set("value",t);var n=this.get("group");this.resetTrackClip(),this.get("slidable")&&this.resetHandlers(n),this.delegateEmit("valuechanged",{originValue:e,value:t})},e.prototype.initEvent=function(){var t=this.get("group");this.bindSliderEvent(t),this.bindRailEvent(t),this.bindTrackEvent(t)},e.prototype.drawLegendContent=function(t){this.drawRail(t),this.drawLabels(t),this.fixedElements(t),this.resetTrack(t),this.resetTrackClip(t),this.get("slidable")&&this.resetHandlers(t)},e.prototype.bindSliderEvent=function(t){this.bindHandlersEvent(t)},e.prototype.bindHandlersEvent=function(t){var e=this;t.on("legend-handler-min:drag",(function(t){var n=e.getValueByCanvasPoint(t.x,t.y),r=e.getCurrentValue()[1];rn&&(r=n),e.setValue([r,n])}))},e.prototype.bindRailEvent=function(t){},e.prototype.bindTrackEvent=function(t){var e=this,n=null;t.on("legend-track:dragstart",(function(t){n={x:t.x,y:t.y}})),t.on("legend-track:drag",(function(t){if(n){var r=e.getValueByCanvasPoint(n.x,n.y),i=e.getValueByCanvasPoint(t.x,t.y),o=e.getCurrentValue(),a=o[1]-o[0],c=e.getRange(),l=i-r;l<0?o[0]+l>c.min?e.setValue([o[0]+l,o[1]+l]):e.setValue([c.min,c.min+a]):l>0&&(l>0&&o[1]+li&&(l=i),l0&&this.changeRailLength(r,i,n[i]-u)}},e.prototype.changeRailLength=function(t,e,n){var r,i=t.getBBox();r="height"===e?this.getRailPath(i.x,i.y,i.width,n):this.getRailPath(i.x,i.y,n,i.height),t.attr("path",r)},e.prototype.changeRailPosition=function(t,e,n){var r=t.getBBox(),i=this.getRailPath(e,n,r.width,r.height);t.attr("path",i)},e.prototype.fixedHorizontal=function(t,e,n,r){var i=this.get("label"),o=i.align,a=i.spacing,c=n.getBBox(),l=t.getBBox(),u=e.getBBox(),s=c.height;this.fitRailLength(l,u,c,n),c=n.getBBox(),"rail"===o?(t.attr({x:r.x,y:r.y+s/2}),this.changeRailPosition(n,r.x+l.width+a,r.y),e.attr({x:r.x+l.width+c.width+2*a,y:r.y+s/2})):"top"===o?(t.attr({x:r.x,y:r.y}),e.attr({x:r.x+c.width,y:r.y}),this.changeRailPosition(n,r.x,r.y+l.height+a)):(this.changeRailPosition(n,r.x,r.y),t.attr({x:r.x,y:r.y+c.height+a}),e.attr({x:r.x+c.width,y:r.y+c.height+a}))},e.prototype.fixedVertail=function(t,e,n,r){var i=this.get("label"),o=i.align,a=i.spacing,c=n.getBBox(),l=t.getBBox(),u=e.getBBox();if(this.fitRailLength(l,u,c,n),c=n.getBBox(),"rail"===o)t.attr({x:r.x,y:r.y}),this.changeRailPosition(n,r.x,r.y+l.height+a),e.attr({x:r.x,y:r.y+l.height+c.height+2*a});else if("right"===o)t.attr({x:r.x+c.width+a,y:r.y}),this.changeRailPosition(n,r.x,r.y),e.attr({x:r.x+c.width+a,y:r.y+c.height});else{var s=Math.max(l.width,u.width);t.attr({x:r.x,y:r.y}),this.changeRailPosition(n,r.x+s+a,r.y),e.attr({x:r.x,y:r.y+c.height})}},e}(d_t),S_t=w_t,k_t="g2-tooltip",C_t="g2-tooltip-title",O_t="g2-tooltip-list",E_t="g2-tooltip-list-item",M_t="g2-tooltip-marker",A_t="g2-tooltip-value",P_t="g2-tooltip-name",__t="g2-tooltip-crosshair-x",D_t="g2-tooltip-crosshair-y",T_t=((c_t={})[""+k_t]={position:"absolute",visibility:"visible",zIndex:8,transition:"visibility 0.2s cubic-bezier(0.23, 1, 0.32, 1), left 0.4s cubic-bezier(0.23, 1, 0.32, 1), top 0.4s cubic-bezier(0.23, 1, 0.32, 1)",backgroundColor:"rgba(255, 255, 255, 0.9)",boxShadow:"0px 0px 10px #aeaeae",borderRadius:"3px",color:"rgb(87, 87, 87)",fontSize:"12px",fontFamily:qAt.fontFamily,lineHeight:"20px",padding:"10px 10px 6px 10px"},c_t[""+C_t]={marginBottom:"4px"},c_t[""+O_t]={margin:"0px",listStyleType:"none",padding:"0px"},c_t[""+E_t]={listStyleType:"none",marginBottom:"4px"},c_t[""+M_t]={width:"8px",height:"8px",borderRadius:"50%",display:"inline-block",marginRight:"8px"},c_t[""+A_t]={display:"inline-block",float:"right",marginLeft:"30px"},c_t[""+__t]={position:"absolute",width:"1px",backgroundColor:"rgba(0, 0, 0, 0.25)"},c_t[""+D_t]={position:"absolute",height:"1px",backgroundColor:"rgba(0, 0, 0, 0.25)"},c_t);var Z_t=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{name:"tooltip",type:"html",x:0,y:0,items:[],customContent:null,containerTpl:'
      ',itemTpl:'
    • \n \n {name}:\n {value}\n
    • ',xCrosshairTpl:'
      ',yCrosshairTpl:'
      ',title:null,showTitle:!0,region:null,crosshairsRegion:null,containerClassName:k_t,crosshairs:null,offset:10,position:"right",domStyles:null,defaultStyles:T_t})},e.prototype.render=function(){this.get("customContent")?this.renderCustomContent():(this.resetTitle(),this.renderItems()),this.resetPosition()},e.prototype.clear=function(){this.clearCrosshairs(),this.setTitle(""),this.clearItemDoms()},e.prototype.show=function(){var t=this.getContainer();t&&!this.destroyed&&(this.set("visible",!0),mOt(t,{visibility:"visible"}),this.setCrossHairsVisible(!0))},e.prototype.hide=function(){var t=this.getContainer();t&&!this.destroyed&&(this.set("visible",!1),mOt(t,{visibility:"hidden"}),this.setCrossHairsVisible(!1))},e.prototype.getLocation=function(){return{x:this.get("x"),y:this.get("y")}},e.prototype.setLocation=function(t){this.set("x",t.x),this.set("y",t.y),this.resetPosition()},e.prototype.setCrossHairsVisible=function(t){var e=t?"":"none",n=this.get("xCrosshairDom"),r=this.get("yCrosshairDom");n&&mOt(n,{display:e}),r&&mOt(r,{display:e})},e.prototype.initContainer=function(){if(t.prototype.initContainer.call(this),this.get("customContent")){this.get("container")&&this.get("container").remove();var e=this.getHtmlContentNode();this.get("parent").appendChild(e),this.set("container",e),this.resetStyles(),this.applyStyles()}},e.prototype.updateInner=function(e){this.get("customContent")?this.renderCustomContent():(function(t,e){var n=!1;return(0,tOt.S6)(e,(function(e){if((0,tOt.wH)(t,e))return n=!0,!1})),n}(e,["title","showTitle"])&&this.resetTitle(),(0,tOt.wH)(e,"items")&&this.renderItems()),t.prototype.updateInner.call(this,e)},e.prototype.initDom=function(){this.cacheDoms()},e.prototype.removeDom=function(){t.prototype.removeDom.call(this),this.clearCrosshairs()},e.prototype.resetPosition=function(){var t,e=this.get("x"),n=this.get("y"),r=this.get("offset"),i=this.getOffset(),o=i.offsetX,a=i.offsetY,c=this.get("position"),l=this.get("region"),u=this.getContainer(),s=this.getBBox(),f=s.width,h=s.height;l&&(t=CAt(l));var d=function(t,e,n,r,i,o,a){var c=function(t,e,n,r,i,o){var a=t,c=e;switch(o){case"left":a=t-r-n,c=e-i/2;break;case"right":a=t+n,c=e-i/2;break;case"top":a=t-r/2,c=e-i-n;break;case"bottom":a=t-r/2,c=e+n;break;default:a=t+n,c=e-i-n}return{x:a,y:c}}(t,e,n,r,i,o);if(a){var l=function(t,e,n,r,i){return{left:ti.x+i.width,top:ei.y+i.height}}(c.x,c.y,r,i,a);"auto"===o?(l.right&&(c.x=Math.max(0,t-r-n)),l.top&&(c.y=Math.max(0,e-i-n))):"top"===o||"bottom"===o?(l.left&&(c.x=a.x),l.right&&(c.x=a.x+a.width-r),"top"===o&&l.top&&(c.y=e+n),"bottom"===o&&l.bottom&&(c.y=e-i-n)):(l.top&&(c.y=a.y),l.bottom&&(c.y=a.y+a.height-i),"left"===o&&l.left&&(c.x=t+n),"right"===o&&l.right&&(c.x=t-r-n))}return c}(e,n,r,f,h,c,t);mOt(u,{left:_At(d.x+o),top:_At(d.y+a)}),this.resetCrosshairs()},e.prototype.renderCustomContent=function(){var t=this.getHtmlContentNode(),e=this.get("parent"),n=this.get("container");n&&n.parentNode===e?e.replaceChild(t,n):e.appendChild(t),this.set("container",t),this.resetStyles(),this.applyStyles()},e.prototype.getHtmlContentNode=function(){var t,e=this.get("customContent");if(e){var n=e(this.get("title"),this.get("items"));t=(0,tOt.kK)(n)?n:gOt(n)}return t},e.prototype.cacheDoms=function(){var t=this.getContainer(),e=t.getElementsByClassName(C_t)[0],n=t.getElementsByClassName(O_t)[0];this.set("titleDom",e),this.set("listDom",n)},e.prototype.resetTitle=function(){var t=this.get("title");this.get("showTitle")&&t?this.setTitle(t):this.setTitle("")},e.prototype.setTitle=function(t){var e=this.get("titleDom");e&&(e.innerText=t)},e.prototype.resetCrosshairs=function(){var t=this.get("crosshairsRegion"),e=this.get("crosshairs");if(t&&e){var n=CAt(t),r=this.get("xCrosshairDom"),i=this.get("yCrosshairDom");"x"===e?(this.resetCrosshair("x",n),i&&(i.remove(),this.set("yCrosshairDom",null))):"y"===e?(this.resetCrosshair("y",n),r&&(r.remove(),this.set("xCrosshairDom",null))):(this.resetCrosshair("x",n),this.resetCrosshair("y",n)),this.setCrossHairsVisible(this.get("visible"))}else this.clearCrosshairs()},e.prototype.resetCrosshair=function(t,e){var n=this.checkCrosshair(t),r=this.get(t);mOt(n,"x"===t?{left:_At(r),top:_At(e.y),height:_At(e.height)}:{top:_At(r),left:_At(e.x),width:_At(e.width)})},e.prototype.checkCrosshair=function(t){var e=t+"CrosshairDom",n=t+"CrosshairTpl",r="CROSSHAIR_"+t.toUpperCase(),i=M[r],o=this.get(e),a=this.get("parent");return o||(o=gOt(this.get(n)),this.applyStyle(i,o),a.appendChild(o),this.set(e,o)),o},e.prototype.renderItems=function(){this.clearItemDoms();var t=this.get("items"),e=this.get("itemTpl"),n=this.get("listDom");n&&((0,tOt.S6)(t,(function(t){var r=tEt.toCSSGradient(t.color),i=(0,QCt.pi)((0,QCt.pi)({},t),{color:r}),o=gOt((0,tOt.ng)(e,i));n.appendChild(o)})),this.applyChildrenStyles(n,this.get("domStyles")))},e.prototype.clearItemDoms=function(){this.get("listDom")&&kAt(this.get("listDom"))},e.prototype.clearCrosshairs=function(){var t=this.get("xCrosshairDom"),e=this.get("yCrosshairDom");t&&t.remove(),e&&e.remove(),this.set("xCrosshairDom",null),this.set("yCrosshairDom",null)},e}(mPt),F_t=Z_t,j_t={opacity:0},I_t={stroke:"#C5C5C5",strokeOpacity:.85},R_t={fill:"#CACED4",opacity:.85},L_t=n(85687);function N_t(t){return function(t){return(0,tOt.UI)(t,(function(t,e){return[0===e?"M":"L",t[0],t[1]]}))}(t)}function B_t(t,e,n,r){void 0===r&&(r=!0);var i=new cMt({values:t}),o=new gEt({values:(0,tOt.UI)(t,(function(t,e){return e}))}),a=(0,tOt.UI)(t,(function(t,r){return[o.scale(r)*e,n-i.scale(t)*n]}));return r?function(t){if(t.length<=2)return N_t(t);var e=[];(0,tOt.S6)(t,(function(t){(0,tOt.Xy)(t,e.slice(e.length-2))||e.push(t[0],t[1])}));var n=(0,L_t.e9)(e,!1),r=(0,tOt.YM)(t),i=r[0],o=r[1];return n.unshift(["M",i,o]),n}(a):N_t(a)}function z_t(t,e,n,r){var i=(0,QCt.pr)(t),o=function(t,e){var n=new cMt({values:t}),r=n.max<0?n.max:Math.max(0,n.min);return e-n.scale(r)*e}(r,n);return i.push(["L",e,o]),i.push(["L",0,o]),i.push(["Z"]),i}var U_t=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{name:"trend",x:0,y:0,width:200,height:16,smooth:!0,isArea:!1,data:[],backgroundStyle:j_t,lineStyle:I_t,areaStyle:R_t})},e.prototype.renderInner=function(t){var e=this.cfg,n=e.width,r=e.height,i=e.data,o=e.smooth,a=e.isArea,c=e.backgroundStyle,l=e.lineStyle,u=e.areaStyle;this.addShape(t,{id:this.getElementId("background"),type:"rect",attrs:(0,QCt.pi)({x:0,y:0,width:n,height:r},c)});var s=B_t(i,n,r,o);if(this.addShape(t,{id:this.getElementId("line"),type:"path",attrs:(0,QCt.pi)({path:s},l)}),a){var f=z_t(s,n,r,i);this.addShape(t,{id:this.getElementId("area"),type:"path",attrs:(0,QCt.pi)({path:f},u)})}},e.prototype.applyOffset=function(){var t=this.cfg,e=t.x,n=t.y;this.moveElementTo(this.get("group"),{x:e,y:n})},e}(NAt),H_t={fill:"#F7F7F7",stroke:"#BFBFBF",radius:2,opacity:1,cursor:"ew-resize",highLightFill:"#FFF"},W_t=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{name:"handler",x:0,y:0,width:10,height:24,style:H_t})},e.prototype.renderInner=function(t){var e=this.cfg,n=e.width,r=e.height,i=e.style,o=i.fill,a=i.stroke,c=i.radius,l=i.opacity,u=i.cursor;this.addShape(t,{type:"rect",id:this.getElementId("background"),attrs:{x:0,y:0,width:n,height:r,fill:o,stroke:a,radius:c,opacity:l,cursor:u}});var s=1/3*n,f=2/3*n,h=1/4*r,d=3/4*r;this.addShape(t,{id:this.getElementId("line-left"),type:"line",attrs:{x1:s,y1:h,x2:s,y2:d,stroke:a,cursor:u}}),this.addShape(t,{id:this.getElementId("line-right"),type:"line",attrs:{x1:f,y1:h,x2:f,y2:d,stroke:a,cursor:u}})},e.prototype.applyOffset=function(){this.moveElementTo(this.get("group"),{x:this.get("x"),y:this.get("y")})},e.prototype.initEvent=function(){this.bindEvents()},e.prototype.bindEvents=function(){var t=this;this.get("group").on("mouseenter",(function(){var e=t.get("style").highLightFill;t.getElementByLocalId("background").attr("fill",e),t.draw()})),this.get("group").on("mouseleave",(function(){var e=t.get("style").fill;t.getElementByLocalId("background").attr("fill",e),t.draw()}))},e.prototype.draw=function(){var t=this.get("container").get("canvas");t&&t.draw()},e}(NAt),V_t={fill:"#416180",opacity:.05},G_t={fill:"#5B8FF9",opacity:.15,cursor:"move"},X_t={width:10,height:24},q_t={textBaseline:"middle",fill:"#000",opacity:.45},Y_t=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.onMouseDown=function(t){return function(n){e.currentTarget=t;var r=n.originalEvent;r.stopPropagation(),r.preventDefault(),e.prevX=(0,tOt.U2)(r,"touches.0.pageX",r.pageX),e.prevY=(0,tOt.U2)(r,"touches.0.pageY",r.pageY);var i=e.getContainerDOM();i.addEventListener("mousemove",e.onMouseMove),i.addEventListener("mouseup",e.onMouseUp),i.addEventListener("mouseleave",e.onMouseUp),i.addEventListener("touchmove",e.onMouseMove),i.addEventListener("touchend",e.onMouseUp),i.addEventListener("touchcancel",e.onMouseUp)}},e.onMouseMove=function(t){var n=e.cfg.width,r=[e.get("start"),e.get("end")];t.stopPropagation(),t.preventDefault();var i=(0,tOt.U2)(t,"touches.0.pageX",t.pageX),o=(0,tOt.U2)(t,"touches.0.pageY",t.pageY),a=i-e.prevX,c=e.adjustOffsetRange(a/n);e.updateStartEnd(c),e.updateUI(e.getElementByLocalId("foreground"),e.getElementByLocalId("minText"),e.getElementByLocalId("maxText")),e.prevX=i,e.prevY=o,e.draw(),e.emit("sliderchange",[e.get("start"),e.get("end")].sort()),e.delegateEmit("valuechanged",{originValue:r,value:[e.get("start"),e.get("end")]})},e.onMouseUp=function(){e.currentTarget&&(e.currentTarget=void 0);var t=e.getContainerDOM();t&&(t.removeEventListener("mousemove",e.onMouseMove),t.removeEventListener("mouseup",e.onMouseUp),t.removeEventListener("mouseleave",e.onMouseUp),t.removeEventListener("touchmove",e.onMouseMove),t.removeEventListener("touchend",e.onMouseUp),t.removeEventListener("touchcancel",e.onMouseUp))},e}return(0,QCt.ZT)(e,t),e.prototype.setRange=function(t,e){this.set("minLimit",t),this.set("maxLimit",e);var n=this.get("start"),r=this.get("end"),i=(0,tOt.uZ)(n,t,e),o=(0,tOt.uZ)(r,t,e);this.get("isInit")||n===i&&r===o||this.setValue([i,o])},e.prototype.getRange=function(){return{min:this.get("minLimit")||0,max:this.get("maxLimit")||1}},e.prototype.setValue=function(t){var e=this.getRange();if((0,tOt.kJ)(t)&&2===t.length){var n=[this.get("start"),this.get("end")];this.update({start:(0,tOt.uZ)(t[0],e.min,e.max),end:(0,tOt.uZ)(t[1],e.min,e.max)}),this.get("updateAutoRender")||this.render(),this.delegateEmit("valuechanged",{originValue:n,value:t})}},e.prototype.getValue=function(){return[this.get("start"),this.get("end")]},e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{name:"slider",x:0,y:0,width:100,height:16,backgroundStyle:{},foregroundStyle:{},handlerStyle:{},textStyle:{},defaultCfg:{backgroundStyle:V_t,foregroundStyle:G_t,handlerStyle:X_t,textStyle:q_t}})},e.prototype.update=function(e){var n=e.start,r=e.end,i=(0,QCt.pi)({},e);(0,tOt.UM)(n)||(i.start=(0,tOt.uZ)(n,0,1)),(0,tOt.UM)(r)||(i.end=(0,tOt.uZ)(r,0,1)),t.prototype.update.call(this,i),this.minHandler=this.getChildComponentById(this.getElementId("minHandler")),this.maxHandler=this.getChildComponentById(this.getElementId("maxHandler")),this.trend=this.getChildComponentById(this.getElementId("trend"))},e.prototype.init=function(){this.set("start",(0,tOt.uZ)(this.get("start"),0,1)),this.set("end",(0,tOt.uZ)(this.get("end"),0,1)),t.prototype.init.call(this)},e.prototype.render=function(){t.prototype.render.call(this),this.updateUI(this.getElementByLocalId("foreground"),this.getElementByLocalId("minText"),this.getElementByLocalId("maxText"))},e.prototype.renderInner=function(t){var e=this.cfg,n=(e.start,e.end,e.width),r=e.height,i=e.trendCfg,o=void 0===i?{}:i,a=e.minText,c=e.maxText,l=e.backgroundStyle,u=void 0===l?{}:l,s=e.foregroundStyle,f=void 0===s?{}:s,h=e.textStyle,d=void 0===h?{}:h,p=(0,tOt.b$)({},H_t,this.cfg.handlerStyle);(0,tOt.dp)((0,tOt.U2)(o,"data"))&&(this.trend=this.addComponent(t,(0,QCt.pi)({component:U_t,id:this.getElementId("trend"),x:0,y:0,width:n,height:r},o))),this.addShape(t,{id:this.getElementId("background"),type:"rect",attrs:(0,QCt.pi)({x:0,y:0,width:n,height:r},u)});this.addShape(t,{id:this.getElementId("minText"),type:"text",attrs:(0,QCt.pi)({y:r/2,textAlign:"right",text:a,silent:!1},d)}),this.addShape(t,{id:this.getElementId("maxText"),type:"text",attrs:(0,QCt.pi)({y:r/2,textAlign:"left",text:c,silent:!1},d)}),this.addShape(t,{id:this.getElementId("foreground"),name:"foreground",type:"rect",attrs:(0,QCt.pi)({y:0,height:r},f)});var v=(0,tOt.U2)(p,"width",10),g=(0,tOt.U2)(p,"height",24);this.minHandler=this.addComponent(t,{component:W_t,id:this.getElementId("minHandler"),name:"handler-min",x:0,y:(r-g)/2,width:v,height:g,cursor:"ew-resize",style:p}),this.maxHandler=this.addComponent(t,{component:W_t,id:this.getElementId("maxHandler"),name:"handler-max",x:0,y:(r-g)/2,width:v,height:g,cursor:"ew-resize",style:p})},e.prototype.applyOffset=function(){this.moveElementTo(this.get("group"),{x:this.get("x"),y:this.get("y")})},e.prototype.initEvent=function(){this.bindEvents()},e.prototype.updateUI=function(t,e,n){var r=this.cfg,i=r.start,o=r.end,a=r.width,c=r.minText,l=r.maxText,u=r.handlerStyle,s=r.height,f=i*a,h=o*a;this.trend&&(this.trend.update({width:a,height:s}),this.get("updateAutoRender")||this.trend.render()),t.attr("x",f),t.attr("width",h-f);var d=(0,tOt.U2)(u,"width",10);e.attr("text",c),n.attr("text",l);var p=this._dodgeText([f,h],e,n),v=p[0],g=p[1];this.minHandler&&(this.minHandler.update({x:f-d/2}),this.get("updateAutoRender")||this.minHandler.render()),(0,tOt.S6)(v,(function(t,n){return e.attr(n,t)})),this.maxHandler&&(this.maxHandler.update({x:h-d/2}),this.get("updateAutoRender")||this.maxHandler.render()),(0,tOt.S6)(g,(function(t,e){return n.attr(e,t)}))},e.prototype.bindEvents=function(){var t=this.get("group");t.on("handler-min:mousedown",this.onMouseDown("minHandler")),t.on("handler-min:touchstart",this.onMouseDown("minHandler")),t.on("handler-max:mousedown",this.onMouseDown("maxHandler")),t.on("handler-max:touchstart",this.onMouseDown("maxHandler"));var e=t.findById(this.getElementId("foreground"));e.on("mousedown",this.onMouseDown("foreground")),e.on("touchstart",this.onMouseDown("foreground"))},e.prototype.adjustOffsetRange=function(t){var e=this.cfg,n=e.start,r=e.end;switch(this.currentTarget){case"minHandler":var i=0-n,o=1-n;return Math.min(o,Math.max(i,t));case"maxHandler":i=0-r,o=1-r;return Math.min(o,Math.max(i,t));case"foreground":i=0-n,o=1-r;return Math.min(o,Math.max(i,t))}},e.prototype.updateStartEnd=function(t){var e=this.cfg,n=e.start,r=e.end;switch(this.currentTarget){case"minHandler":n+=t;break;case"maxHandler":r+=t;break;case"foreground":n+=t,r+=t}this.set("start",n),this.set("end",r)},e.prototype._dodgeText=function(t,e,n){var r,i,o=this.cfg,a=o.handlerStyle,c=o.width,l=(0,tOt.U2)(a,"width",10),u=t[0],s=t[1],f=!1;u>s&&(u=(r=[s,u])[0],s=r[1],e=(i=[n,e])[0],n=i[1],f=!0);var h=e.getBBox(),d=n.getBBox(),p=h.width>u-2?{x:u+l/2+2,textAlign:"left"}:{x:u-l/2-2,textAlign:"right"},v=d.width>c-s-2?{x:s-l/2-2,textAlign:"right"}:{x:s+l/2+2,textAlign:"left"};return f?[v,p]:[p,v]},e.prototype.draw=function(){var t=this.get("container"),e=t&&t.get("canvas");e&&e.draw()},e.prototype.getContainerDOM=function(){var t=this.get("container"),e=t&&t.get("canvas");return e&&e.get("container")},e}(NAt);function $_t(t,e,n){if(t){if("function"==typeof t.addEventListener)return t.addEventListener(e,n,!1),{remove:function(){t.removeEventListener(e,n,!1)}};if("function"==typeof t.attachEvent)return t.attachEvent("on"+e,n),{remove:function(){t.detachEvent("on"+e,n)}}}}var K_t={default:{trackColor:"rgba(0,0,0,0)",thumbColor:"rgba(0,0,0,0.15)",size:8,lineCap:"round"},hover:{thumbColor:"rgba(0,0,0,0.2)"}},J_t=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.clearEvents=tOt.ZT,e.onStartEvent=function(t){return function(n){e.isMobile=t,n.originalEvent.preventDefault();var r=t?(0,tOt.U2)(n.originalEvent,"touches.0.clientX"):n.clientX,i=t?(0,tOt.U2)(n.originalEvent,"touches.0.clientY"):n.clientY;e.startPos=e.cfg.isHorizontal?r:i,e.bindLaterEvent()}},e.bindLaterEvent=function(){var t=e.getContainerDOM(),n=[];n=e.isMobile?[$_t(t,"touchmove",e.onMouseMove),$_t(t,"touchend",e.onMouseUp),$_t(t,"touchcancel",e.onMouseUp)]:[$_t(t,"mousemove",e.onMouseMove),$_t(t,"mouseup",e.onMouseUp),$_t(t,"mouseleave",e.onMouseUp)],e.clearEvents=function(){n.forEach((function(t){t.remove()}))}},e.onMouseMove=function(t){var n=e.cfg,r=n.isHorizontal,i=n.thumbOffset;t.preventDefault();var o=e.isMobile?(0,tOt.U2)(t,"touches.0.clientX"):t.clientX,a=e.isMobile?(0,tOt.U2)(t,"touches.0.clientY"):t.clientY,c=r?o:a,l=c-e.startPos;e.startPos=c,e.updateThumbOffset(i+l)},e.onMouseUp=function(t){t.preventDefault(),e.clearEvents()},e.onTrackClick=function(t){var n=e.cfg,r=n.isHorizontal,i=n.x,o=n.y,a=n.thumbLen,c=e.getContainerDOM().getBoundingClientRect(),l=t.clientX,u=t.clientY,s=r?l-c.left-i-a/2:u-c.top-o-a/2,f=e.validateRange(s);e.updateThumbOffset(f)},e.onThumbMouseOver=function(){var t=e.cfg.theme.hover.thumbColor;e.getElementByLocalId("thumb").attr("stroke",t),e.draw()},e.onThumbMouseOut=function(){var t=e.cfg.theme.default.thumbColor;e.getElementByLocalId("thumb").attr("stroke",t),e.draw()},e}return(0,QCt.ZT)(e,t),e.prototype.setRange=function(t,e){this.set("minLimit",t),this.set("maxLimit",e);var n=this.getValue(),r=(0,tOt.uZ)(n,t,e);n===r||this.get("isInit")||this.setValue(r)},e.prototype.getRange=function(){return{min:this.get("minLimit")||0,max:this.get("maxLimit")||1}},e.prototype.setValue=function(t){var e=this.getRange(),n=this.getValue();this.update({thumbOffset:(this.get("trackLen")-this.get("thumbLen"))*(0,tOt.uZ)(t,e.min,e.max)}),this.delegateEmit("valuechange",{originalValue:n,value:this.getValue()})},e.prototype.getValue=function(){return(0,tOt.uZ)(this.get("thumbOffset")/(this.get("trackLen")-this.get("thumbLen")),0,1)},e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{name:"scrollbar",isHorizontal:!0,minThumbLen:20,thumbOffset:0,theme:K_t})},e.prototype.renderInner=function(t){this.renderTrackShape(t),this.renderThumbShape(t)},e.prototype.applyOffset=function(){this.moveElementTo(this.get("group"),{x:this.get("x"),y:this.get("y")})},e.prototype.initEvent=function(){this.bindEvents()},e.prototype.renderTrackShape=function(t){var e=this.cfg,n=e.trackLen,r=e.theme,i=void 0===r?{default:{}}:r,o=(0,tOt.b$)({},K_t,i).default,a=o.lineCap,c=o.trackColor,l=o.size,u=(0,tOt.U2)(this.cfg,"size",l),s=this.get("isHorizontal")?{x1:0+u/2,y1:u/2,x2:n-u/2,y2:u/2,lineWidth:u,stroke:c,lineCap:a}:{x1:u/2,y1:0+u/2,x2:u/2,y2:n-u/2,lineWidth:u,stroke:c,lineCap:a};return this.addShape(t,{id:this.getElementId("track"),name:"track",type:"line",attrs:s})},e.prototype.renderThumbShape=function(t){var e=this.cfg,n=e.thumbOffset,r=e.thumbLen,i=e.theme,o=(0,tOt.b$)({},K_t,i).default,a=o.size,c=o.lineCap,l=o.thumbColor,u=(0,tOt.U2)(this.cfg,"size",a),s=this.get("isHorizontal")?{x1:n+u/2,y1:u/2,x2:n+r-u/2,y2:u/2,lineWidth:u,stroke:l,lineCap:c,cursor:"default"}:{x1:u/2,y1:n+u/2,x2:u/2,y2:n+r-u/2,lineWidth:u,stroke:l,lineCap:c,cursor:"default"};return this.addShape(t,{id:this.getElementId("thumb"),name:"thumb",type:"line",attrs:s})},e.prototype.bindEvents=function(){var t=this.get("group");t.on("mousedown",this.onStartEvent(!1)),t.on("mouseup",this.onMouseUp),t.on("touchstart",this.onStartEvent(!0)),t.on("touchend",this.onMouseUp),t.findById(this.getElementId("track")).on("click",this.onTrackClick);var e=t.findById(this.getElementId("thumb"));e.on("mouseover",this.onThumbMouseOver),e.on("mouseout",this.onThumbMouseOut)},e.prototype.getContainerDOM=function(){var t=this.get("container"),e=t&&t.get("canvas");return e&&e.get("container")},e.prototype.validateRange=function(t){var e=this.cfg,n=e.thumbLen,r=e.trackLen,i=t;return t+n>r?i=r-n:t+nt.x?t.x:e,n=nt.y?t.y:r,i=i=r&&t<=i}function pDt(t,e){return"object"==typeof t&&e.forEach((function(e){delete t[e]})),t}function vDt(t,e,n){var r,i;void 0===e&&(e=[]),void 0===n&&(n=new Map);try{for(var o=(0,QCt.XA)(t),a=o.next();!a.done;a=o.next()){var c=a.value;n.has(c)||(e.push(c),n.set(c,!0))}}catch(l){r={error:l}}finally{try{a&&!a.done&&(i=o.return)&&i.call(o)}finally{if(r)throw r.error}}return e}var gDt=function(){function t(t,e,n,r){void 0===t&&(t=0),void 0===e&&(e=0),void 0===n&&(n=0),void 0===r&&(r=0),this.x=t,this.y=e,this.height=r,this.width=n}return t.fromRange=function(e,n,r,i){return new t(e,n,r-e,i-n)},t.fromObject=function(e){return new t(e.minX,e.minY,e.width,e.height)},Object.defineProperty(t.prototype,"minX",{get:function(){return this.x},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"maxX",{get:function(){return this.x+this.width},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"minY",{get:function(){return this.y},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"maxY",{get:function(){return this.y+this.height},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"tl",{get:function(){return{x:this.x,y:this.y}},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"tr",{get:function(){return{x:this.maxX,y:this.y}},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"bl",{get:function(){return{x:this.x,y:this.maxY}},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"br",{get:function(){return{x:this.maxX,y:this.maxY}},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"top",{get:function(){return{x:this.x+this.width/2,y:this.minY}},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"right",{get:function(){return{x:this.maxX,y:this.y+this.height/2}},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"bottom",{get:function(){return{x:this.x+this.width/2,y:this.maxY}},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"left",{get:function(){return{x:this.minX,y:this.y+this.height/2}},enumerable:!1,configurable:!0}),t.prototype.isEqual=function(t){return this.x===t.x&&this.y===t.y&&this.width===t.width&&this.height===t.height},t.prototype.contains=function(t){return t.minX>=this.minX&&t.maxX<=this.maxX&&t.minY>=this.minY&&t.maxY<=this.maxY},t.prototype.clone=function(){return new t(this.x,this.y,this.width,this.height)},t.prototype.add=function(){for(var t=[],e=0;et.minX&&this.minYt.minY},t.prototype.size=function(){return this.width*this.height},t.prototype.isPointIn=function(t){return t.x>=this.minX&&t.x<=this.maxX&&t.y>=this.minY&&t.y<=this.maxY},t}();function mDt(t){if(t.isPolar&&!t.isTransposed)return(t.endAngle-t.startAngle)*t.getRadius();var e=t.convert({x:0,y:0}),n=t.convert({x:1,y:0});return Math.sqrt(Math.pow(n.x-e.x,2)+Math.pow(n.y-e.y,2))}function yDt(t,e){var n=t.getCenter();return Math.sqrt(Math.pow(e.x-n.x,2)+Math.pow(e.y-n.y,2))}function bDt(t,e){var n=t.getCenter();return Math.atan2(e.y-n.y,e.x-n.x)}function xDt(t,e){void 0===e&&(e=0);var n,r=t.start,i=t.end,o=t.getWidth(),a=t.getHeight();if(t.isPolar){var c=t.startAngle,l=t.endAngle,u=t.getCenter(),s=t.getRadius();return{type:"path",startState:{path:uDt(u.x,u.y,s+e,c,c)},endState:function(t){var n=(l-c)*t+c;return{path:uDt(u.x,u.y,s+e,c,n)}},attrs:{path:uDt(u.x,u.y,s+e,c,l)}}}return n=t.isTransposed?{height:a+2*e}:{width:o+2*e},{type:"rect",startState:{x:r.x-e,y:i.y-e,width:t.isTransposed?o+2*e:0,height:t.isTransposed?0:a+2*e},endState:n,attrs:{x:r.x-e,y:i.y-e,width:o+2*e,height:a+2*e}}}var wDt=/^(?:(?!0000)[0-9]{4}([-/.]+)(?:(?:0?[1-9]|1[0-2])\1(?:0?[1-9]|1[0-9]|2[0-8])|(?:0?[13-9]|1[0-2])\1(?:29|30)|(?:0?[13578]|1[02])\1(?:31))|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)([-/.]+)0?2\2(?:29))(\s+([01]|([01][0-9]|2[0-3])):([0-9]|[0-5][0-9]):([0-9]|[0-5][0-9]))?$/;function SDt(t,e,n,r){return void 0===e&&(e={}),e.type?e.type:"identity"!==t.type&&hOt.includes(n)&&["interval"].includes(r)||t.isCategory?"cat":t.type}function kDt(t,e,n){var r=e||[];if((0,tOt.hj)(t)||(0,tOt.UM)((0,tOt.Wx)(r,t))&&(0,tOt.xb)(n))return new(SMt("identity"))({field:t.toString(),values:[t]});var i=(0,tOt.I)(r,t),o=(0,tOt.U2)(n,"type",function(t){var e="linear";return wDt.test(t)?e="timeCat":(0,tOt.HD)(t)&&(e="cat"),e}(i[0]));return new(SMt(o))((0,QCt.pi)({field:t,values:i},n))}function CDt(t){return t.alias||t.field}function ODt(t,e,n){var r,i=t.values.length;if(1===i)r=[.5,1];else{var o=0;r=function(t){if(t.isPolar){var e=t.startAngle;return t.endAngle-e==2*Math.PI}return!1}(e)?e.isTransposed?[(o=1/i*(0,tOt.U2)(n,"widthRatio.multiplePie",1/1.3))/2,1-o/2]:[0,1-1/i]:[o=1/i/2,1-o]}return r}function EDt(t){var e=t.values.filter((function(t){return!(0,tOt.UM)(t)&&!isNaN(t)}));return Math.max.apply(Math,(0,QCt.ev)((0,QCt.ev)([],(0,QCt.CR)(e),!1),[(0,tOt.UM)(t.max)?-1/0:t.max],!1))}function MDt(t,e){var n={start:{x:0,y:0},end:{x:0,y:0}};t.isRect?n=function(t){var e,n;switch(t){case $Ct.TOP:e={x:0,y:1},n={x:1,y:1};break;case $Ct.RIGHT:e={x:1,y:0},n={x:1,y:1};break;case $Ct.BOTTOM:e={x:0,y:0},n={x:1,y:0};break;case $Ct.LEFT:e={x:0,y:0},n={x:0,y:1};break;default:e=n={x:0,y:0}}return{start:e,end:n}}(e):t.isPolar&&(n=function(t){var e,n;return t.isTransposed?(e={x:0,y:0},n={x:1,y:0}):(e={x:0,y:0},n={x:0,y:1}),{start:e,end:n}}(t));var r=n.start,i=n.end;return{start:t.convert(r),end:t.convert(i)}}function ADt(t){var e=t.start,n=t.end;return e.x===n.x}function PDt(t,e){var n=t.start,r=t.end;return ADt(t)?(n.y-r.y)*(e.x-n.x)>0?1:-1:(r.x-n.x)*(n.y-e.y)>0?-1:1}function _Dt(t,e){var n=(0,tOt.U2)(t,["components","axis"],{});return(0,tOt.b$)({},(0,tOt.U2)(n,["common"],{}),(0,tOt.b$)({},(0,tOt.U2)(n,[e],{})))}function DDt(t,e,n){var r=(0,tOt.U2)(t,["components","axis"],{});return(0,tOt.b$)({},(0,tOt.U2)(r,["common","title"],{}),(0,tOt.b$)({},(0,tOt.U2)(r,[e,"title"],{})),n)}function TDt(t){var e=t.x,n=t.y,r=t.circleCenter,i=n.start>n.end,o=t.isTransposed?t.convert({x:i?0:1,y:0}):t.convert({x:0,y:i?0:1}),a=[o.x-r.x,o.y-r.y],c=[1,0],l=o.y>r.y?lAt.EU(a,c):-1*lAt.EU(a,c),u=l+(e.end-e.start);return{center:r,radius:Math.sqrt(Math.pow(o.x-r.x,2)+Math.pow(o.y-r.y,2)),startAngle:l,endAngle:u}}function ZDt(t,e){return(0,tOt.jn)(t)?!1!==t&&{}:(0,tOt.U2)(t,[e])}function FDt(t,e){return(0,tOt.U2)(t,"position",e)}function jDt(t,e){return(0,tOt.U2)(e,["title","text"],CDt(t))}var IDt=function(){function t(t,e){this.destroyed=!1,this.facets=[],this.view=t,this.cfg=(0,tOt.b$)({},this.getDefaultCfg(),e)}return t.prototype.init=function(){this.container||(this.container=this.createContainer());var t=this.view.getData();this.facets=this.generateFacets(t)},t.prototype.render=function(){this.renderViews()},t.prototype.update=function(){},t.prototype.clear=function(){this.clearFacetViews()},t.prototype.destroy=function(){this.clear(),this.container&&(this.container.remove(!0),this.container=void 0),this.destroyed=!0,this.view=void 0,this.facets=[]},t.prototype.facetToView=function(t){var e=t.region,n=t.data,r=t.padding,i=void 0===r?this.cfg.padding:r,o=this.view.createView({region:e,padding:i});o.data(n||[]),t.view=o,this.beforeEachView(o,t);var a=this.cfg.eachView;return a&&a(o,t),this.afterEachView(o,t),o},t.prototype.createContainer=function(){return this.view.getLayer(YCt.FORE).addGroup()},t.prototype.renderViews=function(){this.createFacetViews()},t.prototype.createFacetViews=function(){var t=this;return this.facets.map((function(e){return t.facetToView(e)}))},t.prototype.clearFacetViews=function(){var t=this;(0,tOt.S6)(this.facets,(function(e){e.view&&(t.view.removeView(e.view),e.view=void 0)}))},t.prototype.parseSpacing=function(){var t=this.view.viewBBox,e=t.width,n=t.height;return this.cfg.spacing.map((function(t,r){return(0,tOt.hj)(t)?t/(0===r?e:n):parseFloat(t)/100}))},t.prototype.getFieldValues=function(t,e){var n=[],r={};return(0,tOt.S6)(t,(function(t){var i=t[e];(0,tOt.UM)(i)||r[i]||(n.push(i),r[i]=!0)})),n},t.prototype.getRegion=function(t,e,n,r){var i=(0,QCt.CR)(this.parseSpacing(),2),o=i[0],a=i[1],c=(1+o)/(0===e?1:e)-o,l=(1+a)/(0===t?1:t)-a,u={x:(c+o)*n,y:(l+a)*r};return{start:u,end:{x:u.x+c,y:u.y+l}}},t.prototype.getDefaultCfg=function(){return{eachView:void 0,showTitle:!0,spacing:[0,0],padding:10,fields:[]}},t.prototype.getDefaultTitleCfg=function(){return{style:{fontSize:14,fill:"#666",fontFamily:this.view.getTheme().fontFamily}}},t.prototype.processAxis=function(t,e){var n=t.getOptions(),r=n.coordinate,i=t.geometries;if("rect"===(0,tOt.U2)(r,"type","rect")&&i.length){(0,tOt.UM)(n.axes)&&(n.axes={});var o=n.axes,a=(0,QCt.CR)(i[0].getXYFields(),2),c=a[0],l=a[1],u=ZDt(o,c),s=ZDt(o,l);!1!==u&&(n.axes[c]=this.getXAxisOption(c,o,u,e)),!1!==s&&(n.axes[l]=this.getYAxisOption(l,o,s,e))}},t.prototype.getFacetDataFilter=function(t){return function(e){return(0,tOt.yW)(t,(function(t){var n=t.field,r=t.value;return!(!(0,tOt.UM)(r)&&n)||e[n]===r}))}},t}(),RDt={},LDt=function(t,e){RDt[(0,tOt.vl)(t)]=e},NDt=function(){function t(t,e){this.context=t,this.cfg=e,t.addAction(this)}return t.prototype.applyCfg=function(t){(0,tOt.f0)(this,t)},t.prototype.init=function(){this.applyCfg(this.cfg)},t.prototype.destroy=function(){this.context.removeAction(this),this.context=null},t}(),BDt=NDt,zDt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.execute=function(){this.callback&&this.callback(this.context)},e.prototype.destroy=function(){t.prototype.destroy.call(this),this.callback=null},e}(BDt),UDt=zDt,HDt={};function WDt(t){var e=HDt[t];return(0,tOt.U2)(e,"ActionClass")}function VDt(t,e,n){HDt[t]={ActionClass:e,cfg:n}}function GDt(t,e){var n=new UDt(e);return n.callback=t,n.name="callback",n}function XDt(t,e){for(var n=[t[0]],r=1,i=t.length;r=a[u]?1:0,h=s>Math.PI?1:0,d=n.convert(c),p=yDt(n,d);if(p>=.5)if(s===2*Math.PI){var v={x:(c.x+a.x)/2,y:(c.y+a.y)/2},g=n.convert(v);l.push(["A",p,p,0,h,f,g.x,g.y]),l.push(["A",p,p,0,h,f,d.x,d.y])}else l.push(["A",p,p,0,h,f,d.x,d.y]);return l}(n,r,t)):o.push(XDt(a,t));break;case"a":o.push(qDt(a,t));break;default:o.push(a)}})),function(t){(0,tOt.S6)(t,(function(e,n){if("a"===e[0].toLowerCase()){var r=t[n-1],i=t[n+1];i&&"a"===i[0].toLowerCase()?r&&"l"===r[0].toLowerCase()&&(r[0]="M"):r&&"a"===r[0].toLowerCase()&&i&&"l"===i[0].toLowerCase()&&(i[0]="M")}}))}(o),o}function tTt(t,e){return nTt(t.event.target,e)}function eTt(t,e){var n=t.getCanvasBBox(),r=n.width,i=n.height;return r>0&&i>0&&(r>=e||i>=e)}function nTt(t,e){var n=t.getCanvasBBox();return eTt(t,e)?n:null}function rTt(t,e){return t.event.maskShapes.map((function(t){return nTt(t,e)})).filter((function(t){return!!t}))}function iTt(t,e){return eTt(t,e)?t.attr("path"):null}function oTt(t){var e,n=t.event.target;return n&&(e=n.get("element")),e}function aTt(t){var e,n=t.event.target;return n&&(e=n.get("delegateObject")),e}function cTt(t){var e=t.event.gEvent;return!(e&&e.fromShape&&e.toShape&&e.fromShape.get("element")===e.toShape.get("element"))}function lTt(t){return t&&t.component&&t.component.isList()}function uTt(t){return t&&t.component&&t.component.isSlider()}function sTt(t){var e=t.event.target;return e&&"mask"===(null==e?void 0:e.get("name"))||fTt(t)}function fTt(t){var e;return"multi-mask"===(null===(e=t.event.target)||void 0===e?void 0:e.get("name"))}function hTt(t,e){var n=t.event.target;if(fTt(t))return function(t,e){var n=t.event.target;if("path"===n.get("type")){var r=function(t,e){return t.event.maskShapes.map((function(t){return iTt(t,e)}))}(t,e);return r.length>0?r.flatMap((function(e){return xTt(t.view,e)})):null}var i=rTt(t,e);if(i.length>0)return i.flatMap((function(e){return yTt(t.view,e)}));return null}(t,e);if("path"===n.get("type")){var r=function(t,e){return iTt(t.event.target,e)}(t,e);if(!r)return;return xTt(t.view,r)}var i=tTt(t,e);return i?yTt(t.view,i):null}function dTt(t,e,n){if(fTt(t))return function(t,e,n){var r=rTt(t,n);if(r.length>0)return r.flatMap((function(n){return pTt(n,t,e)}));return null}(t,e,n);var r=tTt(t,n);return r?pTt(r,t,e):null}function pTt(t,e,n){var r=e.view,i=OTt(r,n,{x:t.x,y:t.y}),o=OTt(r,n,{x:t.maxX,y:t.maxY});return yTt(n,{minX:i.x,minY:i.y,maxX:o.x,maxY:o.y})}function vTt(t){var e=t.geometries,n=[];return(0,tOt.S6)(e,(function(t){var e=t.elements;n=n.concat(e)})),t.views&&t.views.length&&(0,tOt.S6)(t.views,(function(t){n=n.concat(vTt(t))})),n}function gTt(t,e){var n=t.geometries,r=[];return(0,tOt.S6)(n,(function(t){var n=t.getElementsBy((function(t){return t.hasState(e)}));r=r.concat(n)})),r}function mTt(t,e){var n=t.getModel().data;return(0,tOt.kJ)(n)?n[0][e]:n[e]}function yTt(t,e){var n=vTt(t),r=[];return(0,tOt.S6)(n,(function(t){var n,i,o=t.shape.getCanvasBBox();n=e,(i=o).minX>n.maxX||i.maxXn.maxY||i.maxY=e.x&&t.y<=e.y&&t.maxY>e.y}function CTt(t){var e=t.parent,n=null;return e&&(n=e.views.filter((function(e){return e!==t}))),n}function OTt(t,e,n){var r=function(t,e){return t.getCoordinate().invert(e)}(t,n);return e.getCoordinate().convert(r)}function ETt(t,e,n,r){var i=!1;return(0,tOt.S6)(t,(function(t){if(t[n]===e[n]&&t[r]===e[r])return i=!0,!1})),i}function MTt(t,e){var n=t.getScaleByField(e);return!n&&t.views&&(0,tOt.S6)(t.views,(function(t){if(n=MTt(t,e))return!1})),n}var ATt=function(){function t(t){this.actions=[],this.event=null,this.cacheMap={},this.view=t}return t.prototype.cache=function(){for(var t=[],e=0;e=0&&e.splice(n,1)},t.prototype.getCurrentPoint=function(){var t=this.event;return t?t.target instanceof HTMLElement?this.view.getCanvas().getPointByClient(t.clientX,t.clientY):{x:t.x,y:t.y}:null},t.prototype.getCurrentShape=function(){return(0,tOt.U2)(this.event,["gEvent","shape"])},t.prototype.isInPlot=function(){var t=this.getCurrentPoint();return!!t&&this.view.isPointInPlot(t)},t.prototype.isInShape=function(t){var e=this.getCurrentShape();return!!e&&e.get("name")===t},t.prototype.isInComponent=function(t){var e=wTt(this.view),n=this.getCurrentPoint();return!!n&&!!e.find((function(e){var r=e.getBBox();return t?e.get("name")===t&&kTt(r,n):kTt(r,n)}))},t.prototype.destroy=function(){(0,tOt.S6)(this.actions.slice(),(function(t){t.destroy()})),this.view=null,this.event=null,this.actions=null,this.cacheMap=null},t}(),PTt=ATt,_Tt=function(){function t(t,e){this.view=t,this.cfg=e}return t.prototype.init=function(){this.initEvents()},t.prototype.initEvents=function(){},t.prototype.clearEvents=function(){},t.prototype.destroy=function(){this.clearEvents()},t}();function DTt(t,e,n){var r=t.split(":"),i=r[0],o=e.getAction(i)||function(t,e){var n=HDt[t],r=null;return n&&((r=new(0,n.ActionClass)(e,n.cfg)).name=t,r.init()),r}(i,e);if(!o)throw new Error("There is no action named ".concat(i));return{action:o,methodName:r[1],arg:n}}function TTt(t){var e=t.action,n=t.methodName,r=t.arg;if(!e[n])throw new Error("Action(".concat(e.name,") doesn't have a method called ").concat(n));e[n](r)}var ZTt="start",FTt="showEnable",jTt="end",ITt="rollback",RTt="processing",LTt=function(t){function e(e,n){var r=t.call(this,e,n)||this;return r.callbackCaches={},r.emitCaches={},r.steps=n,r}return(0,QCt.ZT)(e,t),e.prototype.init=function(){this.initContext(),t.prototype.init.call(this)},e.prototype.destroy=function(){t.prototype.destroy.call(this),this.steps=null,this.context&&(this.context.destroy(),this.context=null),this.callbackCaches=null,this.view=null},e.prototype.initEvents=function(){var t=this;(0,tOt.S6)(this.steps,(function(e,n){(0,tOt.S6)(e,(function(e){var r=t.getActionCallback(n,e);r&&t.bindEvent(e.trigger,r)}))}))},e.prototype.clearEvents=function(){var t=this;(0,tOt.S6)(this.steps,(function(e,n){(0,tOt.S6)(e,(function(e){var r=t.getActionCallback(n,e);r&&t.offEvent(e.trigger,r)}))}))},e.prototype.initContext=function(){var t=this.view,e=new PTt(t);this.context=e;var n=this.steps;(0,tOt.S6)(n,(function(t){(0,tOt.S6)(t,(function(t){if((0,tOt.mf)(t.action))t.actionObject={action:GDt(t.action,e),methodName:"execute"};else if((0,tOt.HD)(t.action))t.actionObject=DTt(t.action,e,t.arg);else if((0,tOt.kJ)(t.action)){var n=t.action,r=(0,tOt.kJ)(t.arg)?t.arg:[t.arg];t.actionObject=[],(0,tOt.S6)(n,(function(n,i){t.actionObject.push(DTt(n,e,r[i]))}))}}))}))},e.prototype.isAllowStep=function(t){var e=this.currentStepName,n=this.steps;if(e===t)return!0;if(t===FTt)return!0;if(t===RTt)return e===ZTt;if(t===ZTt)return e!==RTt;if(t===jTt)return e===RTt||e===ZTt;if(t===ITt){if(n[jTt])return e===jTt;if(e===ZTt)return!0}return!1},e.prototype.isAllowExecute=function(t,e){if(this.isAllowStep(t)){var n=this.getKey(t,e);return(!e.once||!this.emitCaches[n])&&(!e.isEnable||e.isEnable(this.context))}return!1},e.prototype.enterStep=function(t){this.currentStepName=t,this.emitCaches={}},e.prototype.afterExecute=function(t,e){t!==FTt&&this.currentStepName!==t&&this.enterStep(t);var n=this.getKey(t,e);this.emitCaches[n]=!0},e.prototype.getKey=function(t,e){return t+e.trigger+e.action},e.prototype.getActionCallback=function(t,e){var n=this,r=this.context,i=this.callbackCaches,o=e.actionObject;if(e.action&&o){var a=this.getKey(t,e);if(!i[a]){var c=function(i){r.event=i,n.isAllowExecute(t,e)?((0,tOt.kJ)(o)?(0,tOt.S6)(o,(function(t){r.event=i,TTt(t)})):(r.event=i,TTt(o)),n.afterExecute(t,e),e.callback&&(r.event=i,e.callback(r))):r.event=null};e.debounce?i[a]=(0,tOt.Ds)(c,e.debounce.wait,e.debounce.immediate):e.throttle?i[a]=(0,tOt.P2)(c,e.throttle.wait,{leading:e.throttle.leading,trailing:e.throttle.trailing}):i[a]=c}return i[a]}return null},e.prototype.bindEvent=function(t,e){var n=t.split(":");"window"===n[0]?window.addEventListener(n[1],e):"document"===n[0]?document.addEventListener(n[1],e):this.view.on(t,e)},e.prototype.offEvent=function(t,e){var n=t.split(":");"window"===n[0]?window.removeEventListener(n[1],e):"document"===n[0]?document.removeEventListener(n[1],e):this.view.off(t,e)},e}(_Tt),NTt=LTt,BTt={};function zTt(t,e){BTt[(0,tOt.vl)(t)]=e}function UTt(t,e,n){var r=function(t){return BTt[(0,tOt.vl)(t)]}(t);if(!r)return null;if((0,tOt.PO)(r)){var i=(0,tOt.CD)((0,tOt.d9)(r),n);return new NTt(e,i)}return new r(e,n)}function HTt(t){var e,n={point:{default:{fill:t.pointFillColor,r:t.pointSize,stroke:t.pointBorderColor,lineWidth:t.pointBorder,fillOpacity:t.pointFillOpacity},active:{stroke:t.pointActiveBorderColor,lineWidth:t.pointActiveBorder},selected:{stroke:t.pointSelectedBorderColor,lineWidth:t.pointSelectedBorder},inactive:{fillOpacity:t.pointInactiveFillOpacity,strokeOpacity:t.pointInactiveBorderOpacity}},hollowPoint:{default:{fill:t.hollowPointFillColor,lineWidth:t.hollowPointBorder,stroke:t.hollowPointBorderColor,strokeOpacity:t.hollowPointBorderOpacity,r:t.hollowPointSize},active:{stroke:t.hollowPointActiveBorderColor,strokeOpacity:t.hollowPointActiveBorderOpacity},selected:{lineWidth:t.hollowPointSelectedBorder,stroke:t.hollowPointSelectedBorderColor,strokeOpacity:t.hollowPointSelectedBorderOpacity},inactive:{strokeOpacity:t.hollowPointInactiveBorderOpacity}},area:{default:{fill:t.areaFillColor,fillOpacity:t.areaFillOpacity,stroke:null},active:{fillOpacity:t.areaActiveFillOpacity},selected:{fillOpacity:t.areaSelectedFillOpacity},inactive:{fillOpacity:t.areaInactiveFillOpacity}},hollowArea:{default:{fill:null,stroke:t.hollowAreaBorderColor,lineWidth:t.hollowAreaBorder,strokeOpacity:t.hollowAreaBorderOpacity},active:{fill:null,lineWidth:t.hollowAreaActiveBorder},selected:{fill:null,lineWidth:t.hollowAreaSelectedBorder},inactive:{strokeOpacity:t.hollowAreaInactiveBorderOpacity}},interval:{default:{fill:t.intervalFillColor,fillOpacity:t.intervalFillOpacity},active:{stroke:t.intervalActiveBorderColor,lineWidth:t.intervalActiveBorder},selected:{stroke:t.intervalSelectedBorderColor,lineWidth:t.intervalSelectedBorder},inactive:{fillOpacity:t.intervalInactiveFillOpacity,strokeOpacity:t.intervalInactiveBorderOpacity}},hollowInterval:{default:{fill:t.hollowIntervalFillColor,stroke:t.hollowIntervalBorderColor,lineWidth:t.hollowIntervalBorder,strokeOpacity:t.hollowIntervalBorderOpacity},active:{stroke:t.hollowIntervalActiveBorderColor,lineWidth:t.hollowIntervalActiveBorder,strokeOpacity:t.hollowIntervalActiveBorderOpacity},selected:{stroke:t.hollowIntervalSelectedBorderColor,lineWidth:t.hollowIntervalSelectedBorder,strokeOpacity:t.hollowIntervalSelectedBorderOpacity},inactive:{stroke:t.hollowIntervalInactiveBorderColor,lineWidth:t.hollowIntervalInactiveBorder,strokeOpacity:t.hollowIntervalInactiveBorderOpacity}},line:{default:{stroke:t.lineBorderColor,lineWidth:t.lineBorder,strokeOpacity:t.lineBorderOpacity,fill:null,lineAppendWidth:10,lineCap:"round",lineJoin:"round"},active:{lineWidth:t.lineActiveBorder},selected:{lineWidth:t.lineSelectedBorder},inactive:{strokeOpacity:t.lineInactiveBorderOpacity}}},r=function(t){return{title:{autoRotate:!0,position:"center",spacing:t.axisTitleSpacing,style:{fill:t.axisTitleTextFillColor,fontSize:t.axisTitleTextFontSize,lineHeight:t.axisTitleTextLineHeight,textBaseline:"middle",fontFamily:t.fontFamily},iconStyle:{fill:t.axisDescriptionIconFillColor}},label:{autoRotate:!1,autoEllipsis:!1,autoHide:{type:"equidistance",cfg:{minGap:6}},offset:t.axisLabelOffset,style:{fill:t.axisLabelFillColor,fontSize:t.axisLabelFontSize,lineHeight:t.axisLabelLineHeight,fontFamily:t.fontFamily}},line:{style:{lineWidth:t.axisLineBorder,stroke:t.axisLineBorderColor}},grid:{line:{type:"line",style:{stroke:t.axisGridBorderColor,lineWidth:t.axisGridBorder,lineDash:t.axisGridLineDash}},alignTick:!0,animate:!0},tickLine:{style:{lineWidth:t.axisTickLineBorder,stroke:t.axisTickLineBorderColor},alignTick:!0,length:t.axisTickLineLength},subTickLine:null,animate:!0}}(t),i=function(t){return{title:null,marker:{symbol:"circle",spacing:t.legendMarkerSpacing,style:{r:t.legendCircleMarkerSize,fill:t.legendMarkerColor}},itemName:{spacing:5,style:{fill:t.legendItemNameFillColor,fontFamily:t.fontFamily,fontSize:t.legendItemNameFontSize,lineHeight:t.legendItemNameLineHeight,fontWeight:t.legendItemNameFontWeight,textAlign:"start",textBaseline:"middle"}},itemStates:{active:{nameStyle:{opacity:.8}},unchecked:{nameStyle:{fill:"#D8D8D8"},markerStyle:{fill:"#D8D8D8",stroke:"#D8D8D8"}},inactive:{nameStyle:{fill:"#D8D8D8"},markerStyle:{opacity:.2}}},flipPage:!0,pageNavigator:{marker:{style:{size:t.legendPageNavigatorMarkerSize,inactiveFill:t.legendPageNavigatorMarkerInactiveFillColor,inactiveOpacity:t.legendPageNavigatorMarkerInactiveFillOpacity,fill:t.legendPageNavigatorMarkerFillColor,opacity:t.legendPageNavigatorMarkerFillOpacity}},text:{style:{fill:t.legendPageNavigatorTextFillColor,fontSize:t.legendPageNavigatorTextFontSize}}},animate:!1,maxItemWidth:200,itemSpacing:t.legendItemSpacing,itemMarginBottom:t.legendItemMarginBottom,padding:t.legendPadding}}(t);return{background:t.backgroundColor,defaultColor:t.brandColor,subColor:t.subColor,semanticRed:t.paletteSemanticRed,semanticGreen:t.paletteSemanticGreen,padding:"auto",fontFamily:t.fontFamily,columnWidthRatio:.5,maxColumnWidth:null,minColumnWidth:null,roseWidthRatio:.9999999,multiplePieWidthRatio:1/1.3,colors10:t.paletteQualitative10,colors20:t.paletteQualitative20,sequenceColors:t.paletteSequence,shapes:{point:["hollow-circle","hollow-square","hollow-bowtie","hollow-diamond","hollow-hexagon","hollow-triangle","hollow-triangle-down","circle","square","bowtie","diamond","hexagon","triangle","triangle-down","cross","tick","plus","hyphen","line"],line:["line","dash","dot","smooth"],area:["area","smooth","line","smooth-line"],interval:["rect","hollow-rect","line","tick"]},sizes:[1,10],geometries:{interval:{rect:{default:{style:n.interval.default},active:{style:n.interval.active},inactive:{style:n.interval.inactive},selected:{style:function(t){var e=t.geometry.coordinate;if(e.isPolar&&e.isTransposed){var r=fDt(t.getModel(),e),i=(r.startAngle+r.endAngle)/2,o=7.5*Math.cos(i),a=7.5*Math.sin(i);return{matrix:rAt.vs(null,[["t",o,a]])}}return n.interval.selected}}},"hollow-rect":{default:{style:n.hollowInterval.default},active:{style:n.hollowInterval.active},inactive:{style:n.hollowInterval.inactive},selected:{style:n.hollowInterval.selected}},line:{default:{style:n.hollowInterval.default},active:{style:n.hollowInterval.active},inactive:{style:n.hollowInterval.inactive},selected:{style:n.hollowInterval.selected}},tick:{default:{style:n.hollowInterval.default},active:{style:n.hollowInterval.active},inactive:{style:n.hollowInterval.inactive},selected:{style:n.hollowInterval.selected}},funnel:{default:{style:n.interval.default},active:{style:n.interval.active},inactive:{style:n.interval.inactive},selected:{style:n.interval.selected}},pyramid:{default:{style:n.interval.default},active:{style:n.interval.active},inactive:{style:n.interval.inactive},selected:{style:n.interval.selected}}},line:{line:{default:{style:n.line.default},active:{style:n.line.active},inactive:{style:n.line.inactive},selected:{style:n.line.selected}},dot:{default:{style:(0,QCt.pi)((0,QCt.pi)({},n.line.default),{lineCap:null,lineDash:[1,1]})},active:{style:(0,QCt.pi)((0,QCt.pi)({},n.line.active),{lineCap:null,lineDash:[1,1]})},inactive:{style:(0,QCt.pi)((0,QCt.pi)({},n.line.inactive),{lineCap:null,lineDash:[1,1]})},selected:{style:(0,QCt.pi)((0,QCt.pi)({},n.line.selected),{lineCap:null,lineDash:[1,1]})}},dash:{default:{style:(0,QCt.pi)((0,QCt.pi)({},n.line.default),{lineCap:null,lineDash:[5.5,1]})},active:{style:(0,QCt.pi)((0,QCt.pi)({},n.line.active),{lineCap:null,lineDash:[5.5,1]})},inactive:{style:(0,QCt.pi)((0,QCt.pi)({},n.line.inactive),{lineCap:null,lineDash:[5.5,1]})},selected:{style:(0,QCt.pi)((0,QCt.pi)({},n.line.selected),{lineCap:null,lineDash:[5.5,1]})}},smooth:{default:{style:n.line.default},active:{style:n.line.active},inactive:{style:n.line.inactive},selected:{style:n.line.selected}},hv:{default:{style:n.line.default},active:{style:n.line.active},inactive:{style:n.line.inactive},selected:{style:n.line.selected}},vh:{default:{style:n.line.default},active:{style:n.line.active},inactive:{style:n.line.inactive},selected:{style:n.line.selected}},hvh:{default:{style:n.line.default},active:{style:n.line.active},inactive:{style:n.line.inactive},selected:{style:n.line.selected}},vhv:{default:{style:n.line.default},active:{style:n.line.active},inactive:{style:n.line.inactive},selected:{style:n.line.selected}}},polygon:{polygon:{default:{style:n.interval.default},active:{style:n.interval.active},inactive:{style:n.interval.inactive},selected:{style:n.interval.selected}}},point:{circle:{default:{style:n.point.default},active:{style:n.point.active},inactive:{style:n.point.inactive},selected:{style:n.point.selected}},square:{default:{style:n.point.default},active:{style:n.point.active},inactive:{style:n.point.inactive},selected:{style:n.point.selected}},bowtie:{default:{style:n.point.default},active:{style:n.point.active},inactive:{style:n.point.inactive},selected:{style:n.point.selected}},diamond:{default:{style:n.point.default},active:{style:n.point.active},inactive:{style:n.point.inactive},selected:{style:n.point.selected}},hexagon:{default:{style:n.point.default},active:{style:n.point.active},inactive:{style:n.point.inactive},selected:{style:n.point.selected}},triangle:{default:{style:n.point.default},active:{style:n.point.active},inactive:{style:n.point.inactive},selected:{style:n.point.selected}},"triangle-down":{default:{style:n.point.default},active:{style:n.point.active},inactive:{style:n.point.inactive},selected:{style:n.point.selected}},"hollow-circle":{default:{style:n.hollowPoint.default},active:{style:n.hollowPoint.active},inactive:{style:n.hollowPoint.inactive},selected:{style:n.hollowPoint.selected}},"hollow-square":{default:{style:n.hollowPoint.default},active:{style:n.hollowPoint.active},inactive:{style:n.hollowPoint.inactive},selected:{style:n.hollowPoint.selected}},"hollow-bowtie":{default:{style:n.hollowPoint.default},active:{style:n.hollowPoint.active},inactive:{style:n.hollowPoint.inactive},selected:{style:n.hollowPoint.selected}},"hollow-diamond":{default:{style:n.hollowPoint.default},active:{style:n.hollowPoint.active},inactive:{style:n.hollowPoint.inactive},selected:{style:n.hollowPoint.selected}},"hollow-hexagon":{default:{style:n.hollowPoint.default},active:{style:n.hollowPoint.active},inactive:{style:n.hollowPoint.inactive},selected:{style:n.hollowPoint.selected}},"hollow-triangle":{default:{style:n.hollowPoint.default},active:{style:n.hollowPoint.active},inactive:{style:n.hollowPoint.inactive},selected:{style:n.hollowPoint.selected}},"hollow-triangle-down":{default:{style:n.hollowPoint.default},active:{style:n.hollowPoint.active},inactive:{style:n.hollowPoint.inactive},selected:{style:n.hollowPoint.selected}},cross:{default:{style:n.hollowPoint.default},active:{style:n.hollowPoint.active},inactive:{style:n.hollowPoint.inactive},selected:{style:n.hollowPoint.selected}},tick:{default:{style:n.hollowPoint.default},active:{style:n.hollowPoint.active},inactive:{style:n.hollowPoint.inactive},selected:{style:n.hollowPoint.selected}},plus:{default:{style:n.hollowPoint.default},active:{style:n.hollowPoint.active},inactive:{style:n.hollowPoint.inactive},selected:{style:n.hollowPoint.selected}},hyphen:{default:{style:n.hollowPoint.default},active:{style:n.hollowPoint.active},inactive:{style:n.hollowPoint.inactive},selected:{style:n.hollowPoint.selected}},line:{default:{style:n.hollowPoint.default},active:{style:n.hollowPoint.active},inactive:{style:n.hollowPoint.inactive},selected:{style:n.hollowPoint.selected}}},area:{area:{default:{style:n.area.default},active:{style:n.area.active},inactive:{style:n.area.inactive},selected:{style:n.area.selected}},smooth:{default:{style:n.area.default},active:{style:n.area.active},inactive:{style:n.area.inactive},selected:{style:n.area.selected}},line:{default:{style:n.hollowArea.default},active:{style:n.hollowArea.active},inactive:{style:n.hollowArea.inactive},selected:{style:n.hollowArea.selected}},"smooth-line":{default:{style:n.hollowArea.default},active:{style:n.hollowArea.active},inactive:{style:n.hollowArea.inactive},selected:{style:n.hollowArea.selected}}},schema:{candle:{default:{style:n.hollowInterval.default},active:{style:n.hollowInterval.active},inactive:{style:n.hollowInterval.inactive},selected:{style:n.hollowInterval.selected}},box:{default:{style:n.hollowInterval.default},active:{style:n.hollowInterval.active},inactive:{style:n.hollowInterval.inactive},selected:{style:n.hollowInterval.selected}}},edge:{line:{default:{style:n.line.default},active:{style:n.line.active},inactive:{style:n.line.inactive},selected:{style:n.line.selected}},vhv:{default:{style:n.line.default},active:{style:n.line.active},inactive:{style:n.line.inactive},selected:{style:n.line.selected}},smooth:{default:{style:n.line.default},active:{style:n.line.active},inactive:{style:n.line.inactive},selected:{style:n.line.selected}},arc:{default:{style:n.line.default},active:{style:n.line.active},inactive:{style:n.line.inactive},selected:{style:n.line.selected}}},violin:{violin:{default:{style:n.line.default},active:{style:n.line.active},inactive:{style:n.line.inactive},selected:{style:n.line.selected}},smooth:{default:{style:n.line.default},active:{style:n.line.active},inactive:{style:n.line.inactive},selected:{style:n.line.selected}},hollow:{default:{style:n.hollowArea.default},active:{style:n.hollowArea.active},inactive:{style:n.hollowArea.inactive},selected:{style:n.hollowArea.selected}},"hollow-smooth":{default:{style:n.hollowArea.default},active:{style:n.hollowArea.active},inactive:{style:n.hollowArea.inactive},selected:{style:n.hollowArea.selected}}}},components:{axis:{common:r,top:{position:"top",grid:null,title:null,verticalLimitLength:.5},bottom:{position:"bottom",grid:null,title:null,verticalLimitLength:.5},left:{position:"left",title:null,line:null,tickLine:null,verticalLimitLength:1/3},right:{position:"right",title:null,line:null,tickLine:null,verticalLimitLength:1/3},circle:{title:null,grid:(0,tOt.b$)({},r.grid,{line:{type:"line"}})},radius:{title:null,grid:(0,tOt.b$)({},r.grid,{line:{type:"circle"}})}},legend:{common:i,right:{layout:"vertical",padding:t.legendVerticalPadding},left:{layout:"vertical",padding:t.legendVerticalPadding},top:{layout:"horizontal",padding:t.legendHorizontalPadding},bottom:{layout:"horizontal",padding:t.legendHorizontalPadding},continuous:{title:null,background:null,track:{},rail:{type:"color",size:t.sliderRailHeight,defaultLength:t.sliderRailWidth,style:{fill:t.sliderRailFillColor,stroke:t.sliderRailBorderColor,lineWidth:t.sliderRailBorder}},label:{align:"rail",spacing:4,formatter:null,style:{fill:t.sliderLabelTextFillColor,fontSize:t.sliderLabelTextFontSize,lineHeight:t.sliderLabelTextLineHeight,textBaseline:"middle",fontFamily:t.fontFamily}},handler:{size:t.sliderHandlerWidth,style:{fill:t.sliderHandlerFillColor,stroke:t.sliderHandlerBorderColor}},slidable:!0,padding:i.padding}},tooltip:{showContent:!0,follow:!0,showCrosshairs:!1,showMarkers:!0,shared:!1,enterable:!1,position:"auto",marker:{symbol:"circle",stroke:"#fff",shadowBlur:10,shadowOffsetX:0,shadowOffsetY:0,shadowColor:"rgba(0,0,0,0.09)",lineWidth:2,r:4},crosshairs:{line:{style:{stroke:t.tooltipCrosshairsBorderColor,lineWidth:t.tooltipCrosshairsBorder}},text:null,textBackground:{padding:2,style:{fill:"rgba(0, 0, 0, 0.25)",lineWidth:0,stroke:null}},follow:!1},domStyles:(e={},e["".concat(k_t)]={position:"absolute",visibility:"hidden",zIndex:8,transition:"left 0.4s cubic-bezier(0.23, 1, 0.32, 1) 0s, top 0.4s cubic-bezier(0.23, 1, 0.32, 1) 0s",backgroundColor:t.tooltipContainerFillColor,opacity:t.tooltipContainerFillOpacity,boxShadow:t.tooltipContainerShadow,borderRadius:"".concat(t.tooltipContainerBorderRadius,"px"),color:t.tooltipTextFillColor,fontSize:"".concat(t.tooltipTextFontSize,"px"),fontFamily:t.fontFamily,lineHeight:"".concat(t.tooltipTextLineHeight,"px"),padding:"0 12px 0 12px"},e["".concat(C_t)]={marginBottom:"12px",marginTop:"12px"},e["".concat(O_t)]={margin:0,listStyleType:"none",padding:0},e["".concat(E_t)]={listStyleType:"none",padding:0,marginBottom:"12px",marginTop:"12px",marginLeft:0,marginRight:0},e["".concat(M_t)]={width:"8px",height:"8px",borderRadius:"50%",display:"inline-block",marginRight:"8px"},e["".concat(A_t)]={display:"inline-block",float:"right",marginLeft:"30px"},e)},annotation:{arc:{style:{stroke:t.annotationArcBorderColor,lineWidth:t.annotationArcBorder},animate:!0},line:{style:{stroke:t.annotationLineBorderColor,lineDash:t.annotationLineDash,lineWidth:t.annotationLineBorder},text:{position:"start",autoRotate:!0,style:{fill:t.annotationTextFillColor,stroke:t.annotationTextBorderColor,lineWidth:t.annotationTextBorder,fontSize:t.annotationTextFontSize,textAlign:"start",fontFamily:t.fontFamily,textBaseline:"bottom"}},animate:!0},text:{style:{fill:t.annotationTextFillColor,stroke:t.annotationTextBorderColor,lineWidth:t.annotationTextBorder,fontSize:t.annotationTextFontSize,textBaseline:"middle",textAlign:"start",fontFamily:t.fontFamily},animate:!0},region:{top:!1,style:{lineWidth:t.annotationRegionBorder,stroke:t.annotationRegionBorderColor,fill:t.annotationRegionFillColor,fillOpacity:t.annotationRegionFillOpacity},animate:!0},image:{top:!1,animate:!0},dataMarker:{top:!0,point:{style:{r:3,stroke:t.brandColor,lineWidth:2}},line:{style:{stroke:t.annotationLineBorderColor,lineWidth:t.annotationLineBorder},length:t.annotationDataMarkerLineLength},text:{style:{textAlign:"start",fill:t.annotationTextFillColor,stroke:t.annotationTextBorderColor,lineWidth:t.annotationTextBorder,fontSize:t.annotationTextFontSize,fontFamily:t.fontFamily}},direction:"upward",autoAdjust:!0,animate:!0},dataRegion:{style:{region:{fill:t.annotationRegionFillColor,fillOpacity:t.annotationRegionFillOpacity},text:{textAlign:"center",textBaseline:"bottom",fill:t.annotationTextFillColor,stroke:t.annotationTextBorderColor,lineWidth:t.annotationTextBorder,fontSize:t.annotationTextFontSize,fontFamily:t.fontFamily}},animate:!0}},slider:{common:{padding:[8,8,8,8],backgroundStyle:{fill:t.cSliderBackgroundFillColor,opacity:t.cSliderBackgroundFillOpacity},foregroundStyle:{fill:t.cSliderForegroundFillColor,opacity:t.cSliderForegroundFillOpacity},handlerStyle:{width:t.cSliderHandlerWidth,height:t.cSliderHandlerHeight,fill:t.cSliderHandlerFillColor,opacity:t.cSliderHandlerFillOpacity,stroke:t.cSliderHandlerBorderColor,lineWidth:t.cSliderHandlerBorder,radius:t.cSliderHandlerBorderRadius,highLightFill:t.cSliderHandlerHighlightFillColor},textStyle:{fill:t.cSliderTextFillColor,opacity:t.cSliderTextFillOpacity,fontSize:t.cSliderTextFontSize,lineHeight:t.cSliderTextLineHeight,fontWeight:t.cSliderTextFontWeight,stroke:t.cSliderTextBorderColor,lineWidth:t.cSliderTextBorder}}},scrollbar:{common:{padding:[8,8,8,8]},default:{style:{trackColor:t.scrollbarTrackFillColor,thumbColor:t.scrollbarThumbFillColor}},hover:{style:{thumbColor:t.scrollbarThumbHighlightFillColor}}}},labels:{offset:12,style:{fill:t.labelFillColor,fontSize:t.labelFontSize,fontFamily:t.fontFamily,stroke:t.labelBorderColor,lineWidth:t.labelBorder},fillColorDark:t.labelFillColorDark,fillColorLight:t.labelFillColorLight,autoRotate:!0},innerLabels:{style:{fill:t.innerLabelFillColor,fontSize:t.innerLabelFontSize,fontFamily:t.fontFamily,stroke:t.innerLabelBorderColor,lineWidth:t.innerLabelBorder},autoRotate:!0},overflowLabels:{style:{fill:t.overflowLabelFillColor,fontSize:t.overflowLabelFontSize,fontFamily:t.fontFamily,stroke:t.overflowLabelBorderColor,lineWidth:t.overflowLabelBorder}},pieLabels:{labelHeight:14,offset:10,labelLine:{style:{lineWidth:t.labelLineBorder}},autoRotate:!0}}}var WTt="#000",VTt="#595959",GTt="#8C8C8C",XTt="#BFBFBF",qTt="#D9D9D9",YTt="#F0F0F0",$Tt="#FFFFFF",KTt="#D9D9D9",JTt=["#5B8FF9","#5AD8A6","#5D7092","#F6BD16","#6F5EF9","#6DC8EC","#945FB9","#FF9845","#1E9493","#FF99C3"],QTt=["#5B8FF9","#CDDDFD","#5AD8A6","#CDF3E4","#5D7092","#CED4DE","#F6BD16","#FCEBB9","#6F5EF9","#D3CEFD","#6DC8EC","#D3EEF9","#945FB9","#DECFEA","#FF9845","#FFE0C7","#1E9493","#BBDEDE","#FF99C3","#FFE0ED"],tZt=["#B8E1FF","#9AC5FF","#7DAAFF","#5B8FF9","#3D76DD","#085EC0","#0047A5","#00318A","#001D70"],eZt=function(t){void 0===t&&(t={});var e=t.paletteQualitative10,n=void 0===e?JTt:e,r=t.paletteQualitative20,i=void 0===r?QTt:r,o=t.brandColor,a=void 0===o?n[0]:o,c={backgroundColor:"transparent",brandColor:a,subColor:"rgba(0,0,0,0.05)",paletteQualitative10:n,paletteQualitative20:i,paletteSemanticRed:"#F4664A",paletteSemanticGreen:"#30BF78",paletteSemanticYellow:"#FAAD14",paletteSequence:tZt,fontFamily:'"Segoe UI", Roboto, "Helvetica Neue", Arial,\n "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol",\n "Noto Color Emoji"',axisLineBorderColor:XTt,axisLineBorder:1,axisLineDash:null,axisTitleTextFillColor:VTt,axisTitleTextFontSize:12,axisTitleTextLineHeight:12,axisTitleTextFontWeight:"normal",axisTitleSpacing:12,axisDescriptionIconFillColor:KTt,axisTickLineBorderColor:XTt,axisTickLineLength:4,axisTickLineBorder:1,axisSubTickLineBorderColor:qTt,axisSubTickLineLength:2,axisSubTickLineBorder:1,axisLabelFillColor:GTt,axisLabelFontSize:12,axisLabelLineHeight:12,axisLabelFontWeight:"normal",axisLabelOffset:8,axisGridBorderColor:qTt,axisGridBorder:1,axisGridLineDash:null,legendTitleTextFillColor:GTt,legendTitleTextFontSize:12,legendTitleTextLineHeight:21,legendTitleTextFontWeight:"normal",legendMarkerColor:a,legendMarkerSpacing:8,legendMarkerSize:4,legendCircleMarkerSize:4,legendSquareMarkerSize:4,legendLineMarkerSize:5,legendItemNameFillColor:VTt,legendItemNameFontSize:12,legendItemNameLineHeight:12,legendItemNameFontWeight:"normal",legendItemSpacing:24,legendItemMarginBottom:12,legendPadding:[8,8,8,8],legendHorizontalPadding:[8,0,8,0],legendVerticalPadding:[0,8,0,8],legendPageNavigatorMarkerSize:12,legendPageNavigatorMarkerInactiveFillColor:WTt,legendPageNavigatorMarkerInactiveFillOpacity:.45,legendPageNavigatorMarkerFillColor:WTt,legendPageNavigatorMarkerFillOpacity:1,legendPageNavigatorTextFillColor:GTt,legendPageNavigatorTextFontSize:12,sliderRailFillColor:qTt,sliderRailBorder:0,sliderRailBorderColor:null,sliderRailWidth:100,sliderRailHeight:12,sliderLabelTextFillColor:GTt,sliderLabelTextFontSize:12,sliderLabelTextLineHeight:12,sliderLabelTextFontWeight:"normal",sliderHandlerFillColor:YTt,sliderHandlerWidth:10,sliderHandlerHeight:14,sliderHandlerBorder:1,sliderHandlerBorderColor:XTt,annotationArcBorderColor:qTt,annotationArcBorder:1,annotationLineBorderColor:XTt,annotationLineBorder:1,annotationLineDash:null,annotationTextFillColor:VTt,annotationTextFontSize:12,annotationTextLineHeight:12,annotationTextFontWeight:"normal",annotationTextBorderColor:null,annotationTextBorder:0,annotationRegionFillColor:WTt,annotationRegionFillOpacity:.06,annotationRegionBorder:0,annotationRegionBorderColor:null,annotationDataMarkerLineLength:16,tooltipCrosshairsBorderColor:XTt,tooltipCrosshairsBorder:1,tooltipCrosshairsLineDash:null,tooltipContainerFillColor:"rgb(255, 255, 255)",tooltipContainerFillOpacity:.95,tooltipContainerShadow:"0px 0px 10px #aeaeae",tooltipContainerBorderRadius:3,tooltipTextFillColor:VTt,tooltipTextFontSize:12,tooltipTextLineHeight:12,tooltipTextFontWeight:"bold",labelFillColor:VTt,labelFillColorDark:"#2c3542",labelFillColorLight:"#ffffff",labelFontSize:12,labelLineHeight:12,labelFontWeight:"normal",labelBorderColor:null,labelBorder:0,innerLabelFillColor:$Tt,innerLabelFontSize:12,innerLabelLineHeight:12,innerLabelFontWeight:"normal",innerLabelBorderColor:null,innerLabelBorder:0,overflowLabelFillColor:VTt,overflowLabelFontSize:12,overflowLabelLineHeight:12,overflowLabelFontWeight:"normal",overflowLabelBorderColor:$Tt,overflowLabelBorder:1,labelLineBorder:1,labelLineBorderColor:XTt,cSliderRailHieght:16,cSliderBackgroundFillColor:"#416180",cSliderBackgroundFillOpacity:.05,cSliderForegroundFillColor:"#5B8FF9",cSliderForegroundFillOpacity:.15,cSliderHandlerHeight:24,cSliderHandlerWidth:10,cSliderHandlerFillColor:"#F7F7F7",cSliderHandlerFillOpacity:1,cSliderHandlerHighlightFillColor:"#FFF",cSliderHandlerBorderColor:"#BFBFBF",cSliderHandlerBorder:1,cSliderHandlerBorderRadius:2,cSliderTextFillColor:"#000",cSliderTextFillOpacity:.45,cSliderTextFontSize:12,cSliderTextLineHeight:12,cSliderTextFontWeight:"normal",cSliderTextBorderColor:null,cSliderTextBorder:0,scrollbarTrackFillColor:"rgba(0,0,0,0)",scrollbarThumbFillColor:"rgba(0,0,0,0.15)",scrollbarThumbHighlightFillColor:"rgba(0,0,0,0.2)",pointFillColor:a,pointFillOpacity:.95,pointSize:4,pointBorder:1,pointBorderColor:$Tt,pointBorderOpacity:1,pointActiveBorderColor:WTt,pointSelectedBorder:2,pointSelectedBorderColor:WTt,pointInactiveFillOpacity:.3,pointInactiveBorderOpacity:.3,hollowPointSize:4,hollowPointBorder:1,hollowPointBorderColor:a,hollowPointBorderOpacity:.95,hollowPointFillColor:$Tt,hollowPointActiveBorder:1,hollowPointActiveBorderColor:WTt,hollowPointActiveBorderOpacity:1,hollowPointSelectedBorder:2,hollowPointSelectedBorderColor:WTt,hollowPointSelectedBorderOpacity:1,hollowPointInactiveBorderOpacity:.3,lineBorder:2,lineBorderColor:a,lineBorderOpacity:1,lineActiveBorder:3,lineSelectedBorder:3,lineInactiveBorderOpacity:.3,areaFillColor:a,areaFillOpacity:.25,areaActiveFillColor:a,areaActiveFillOpacity:.5,areaSelectedFillColor:a,areaSelectedFillOpacity:.5,areaInactiveFillOpacity:.3,hollowAreaBorderColor:a,hollowAreaBorder:2,hollowAreaBorderOpacity:1,hollowAreaActiveBorder:3,hollowAreaActiveBorderColor:WTt,hollowAreaSelectedBorder:3,hollowAreaSelectedBorderColor:WTt,hollowAreaInactiveBorderOpacity:.3,intervalFillColor:a,intervalFillOpacity:.95,intervalActiveBorder:1,intervalActiveBorderColor:WTt,intervalActiveBorderOpacity:1,intervalSelectedBorder:2,intervalSelectedBorderColor:WTt,intervalSelectedBorderOpacity:1,intervalInactiveBorderOpacity:.3,intervalInactiveFillOpacity:.3,hollowIntervalBorder:2,hollowIntervalBorderColor:a,hollowIntervalBorderOpacity:1,hollowIntervalFillColor:$Tt,hollowIntervalActiveBorder:2,hollowIntervalActiveBorderColor:WTt,hollowIntervalSelectedBorder:3,hollowIntervalSelectedBorderColor:WTt,hollowIntervalSelectedBorderOpacity:1,hollowIntervalInactiveBorderOpacity:.3};return(0,QCt.pi)((0,QCt.pi)({},c),t)};eZt();function nZt(t){var e=t.styleSheet,n=void 0===e?{}:e,r=(0,QCt._T)(t,["styleSheet"]),i=eZt(n);return(0,tOt.b$)({},HTt(i),r)}var rZt={default:nZt({})};function iZt(t){return(0,tOt.U2)(rZt,(0,tOt.vl)(t),rZt.default)}function oZt(t,e,n){var r=n.translate(t),i=n.translate(e);return(0,tOt.vQ)(r,i)}function aZt(t,e,n){var r=n.coordinate,i=n.getYScale(),o=i.field,a=r.invert(e),c=i.invert(a.y);return(0,tOt.sE)(t,(function(t){var e=t[dOt];return e[o][0]<=c&&e[o][1]>=c}))||t[t.length-1]}var cZt=(0,tOt.HP)((function(t){if(t.isCategory)return 1;for(var e=t.values,n=e.length,r=t.translate(e[0]),i=r,o=0;oi&&(i=c)}return(i-r)/(n-1)}));function lZt(t){var e,n,r,i=function(t){var e=(0,tOt.VO)(t.attributes);return(0,tOt.hX)(e,(function(t){return(0,tOt.FX)(hOt,t.type)}))}(t);try{for(var o=(0,QCt.XA)(i),a=o.next();!a.done;a=o.next()){var c=a.value,l=c.getScale(c.type);if(l&&l.isLinear)if("cat"!==SDt(l,(0,tOt.U2)(t.scaleDefs,l.field),c.type,t.type)){r=l;break}}}catch(f){e={error:f}}finally{try{a&&!a.done&&(n=o.return)&&n.call(o)}finally{if(e)throw e.error}}var u=t.getXScale(),s=t.getYScale();return r||s||u}function uZt(t,e,n){if(0===e.length)return null;var r=n.type,i=n.getXScale(),o=n.getYScale(),a=i.field,c=o.field,l=null;if("heatmap"===r||"point"===r){for(var u=n.coordinate.invert(t),s=i.invert(u.x),f=o.invert(u.y),h=1/0,d=0;d(1+o)/2&&(c=a),r.translate(r.invert(c))}(t,n),x=m[dOt][a],w=m[dOt][c],S=y[dOt][a],k=o.isLinear&&(0,tOt.kJ)(w);if((0,tOt.kJ)(x)){for(d=0;d=b){if(!k){l=P;break}(0,tOt.kJ)(l)||(l=[]),l.push(P)}}(0,tOt.kJ)(l)&&(l=aZt(l,t,n))}else{var C=void 0;if(i.isLinear||"timeCat"===i.type){if((b>i.translate(S)||bi.max||bMath.abs(i.translate(C[dOt][a])-b)&&(y=C)}var _=cZt(n.getXScale());return!l&&Math.abs(i.translate(y[dOt][a])-b)<=_/2&&(l=y),l}function sZt(t,e,n,r){var i,o;void 0===n&&(n=""),void 0===r&&(r=!1);var a,c,l=t[dOt],u=function(t,e,n){var r=e.getAttribute("position").getFields(),i=e.scales,o=(0,tOt.mf)(n)||!n?r[0]:n,a=i[o],c=a?a.getText(t[o]):t[o]||o;return(0,tOt.mf)(n)?n(c,t):c}(l,e,n),s=e.tooltipOption,f=e.theme.defaultColor,h=[];function d(e,n){if(r||!(0,tOt.UM)(n)&&""!==n){var i={title:u,data:l,mappingData:t,name:e,value:n,color:t.color||f,marker:!0};h.push(i)}}if((0,tOt.Kn)(s)){var p=s.fields,v=s.callback;if(v){var g=p.map((function(e){return t[dOt][e]})),m=v.apply(void 0,(0,QCt.ev)([],(0,QCt.CR)(g),!1)),y=(0,QCt.pi)({data:t[dOt],mappingData:t,title:u,color:t.color||f,marker:!0},m);h.push(y)}else{var b=e.scales;try{for(var x=(0,QCt.XA)(p),w=x.next();!w.done;w=x.next()){var S=w.value;if(!(0,tOt.UM)(l[S])){var k=b[S];d(a=CDt(k),c=k.getText(l[S]))}}}catch(O){i={error:O}}finally{try{w&&!w.done&&(o=x.return)&&o.call(x)}finally{if(i)throw i.error}}}}else{var C=lZt(e);c=function(t,e){var n=t[e.field];return(0,tOt.kJ)(n)?n.map((function(t){return e.getText(t)})).join("-"):e.getText(n)}(l,C),a=function(t,e){var n,r=e.getGroupScales();if(r.length&&(n=r[0]),n){var i=n.field;return n.getText(t[i])}return CDt(lZt(e))}(l,e),d(a,c)}return h}function fZt(t,e,n,r){var i,o,a=r.showNil,c=[],l=t.dataArray;if(!(0,tOt.xb)(l)){t.sort(l);try{for(var u=(0,QCt.XA)(l),s=u.next();!s.done;s=u.next()){var f=uZt(e,s.value,t);if(f){var h=t.getElementId(f),d=t.elementsMap[h];if("heatmap"===t.type||d.visible){var p=sZt(f,t,n,a);p.length&&c.push(p)}}}}catch(v){i={error:v}}finally{try{s&&!s.done&&(o=u.return)&&o.call(u)}finally{if(i)throw i.error}}}return c}function hZt(t,e,n,r){var i=r.showNil,o=[],a=t.container.getShape(e.x,e.y);if(a&&a.get("visible")&&a.get("origin")){var c=sZt(a.get("origin").mappingData,t,n,i);c.length&&o.push(c)}return o}function dZt(t,e,n){var r,i,o=[],a=t.geometries,c=n.shared,l=n.title,u=n.reversed;try{for(var s=(0,QCt.XA)(a),f=s.next();!f.done;f=s.next()){var h=f.value;if(h.visible&&!1!==h.tooltipOption){var d=h.type,p=void 0;(p=["point","edge","polygon"].includes(d)?hZt(h,e,l,n):["area","line","path","heatmap"].includes(d)||!1!==c?fZt(h,e,l,n):hZt(h,e,l,n)).length&&(u&&p.reverse(),o.push(p))}}}catch(v){r={error:v}}finally{try{f&&!f.done&&(i=s.return)&&i.call(s)}finally{if(r)throw r.error}}return o}function pZt(t){void 0===t&&(t=0);var e=(0,tOt.kJ)(t)?t:[t];switch(e.length){case 0:e=[0,0,0,0];break;case 1:e=new Array(4).fill(e[0]);break;case 2:e=(0,QCt.ev)((0,QCt.ev)([],(0,QCt.CR)(e),!1),(0,QCt.CR)(e),!1);break;case 3:e=(0,QCt.ev)((0,QCt.ev)([],(0,QCt.CR)(e),!1),[e[1]],!1);break;default:e=e.slice(0,4)}return e}var vZt={};function gZt(t,e){vZt[t]=e}var mZt=function(){function t(t){this.option=this.wrapperOption(t)}return t.prototype.update=function(t){return this.option=this.wrapperOption(t),this},t.prototype.hasAction=function(t){var e=this.option.actions;return(0,tOt.G)(e,(function(e){return e[0]===t}))},t.prototype.create=function(t,e){var n=this.option,r=n.type,i=n.cfg,o="theta"===r,a=(0,QCt.pi)({start:t,end:e},i),c=function(t){return dAt[t.toLowerCase()]}(o?"polar":r);return this.coordinate=new c(a),this.coordinate.type=r,o&&(this.hasAction("transpose")||this.transpose()),this.execActions(),this.coordinate},t.prototype.adjust=function(t,e){return this.coordinate.update({start:t,end:e}),this.coordinate.resetMatrix(),this.execActions(["scale","rotate","translate"]),this.coordinate},t.prototype.rotate=function(t){return this.option.actions.push(["rotate",t]),this},t.prototype.reflect=function(t){return this.option.actions.push(["reflect",t]),this},t.prototype.scale=function(t,e){return this.option.actions.push(["scale",t,e]),this},t.prototype.transpose=function(){return this.option.actions.push(["transpose"]),this},t.prototype.getOption=function(){return this.option},t.prototype.getCoordinate=function(){return this.coordinate},t.prototype.wrapperOption=function(t){return(0,QCt.pi)({type:"rect",actions:[],cfg:{}},t)},t.prototype.execActions=function(t){var e=this,n=this.option.actions;(0,tOt.S6)(n,(function(n){var r,i=(0,QCt.CR)(n),o=i[0],a=i.slice(1);(!!(0,tOt.UM)(t)||t.includes(o))&&(r=e.coordinate)[o].apply(r,(0,QCt.ev)([],(0,QCt.CR)(a),!1))}))},t}(),yZt=mZt,bZt=function(){function t(t,e,n){this.view=t,this.gEvent=e,this.data=n,this.type=e.type}return t.fromData=function(e,n,r){return new t(e,new kOt.Event(n,{}),r)},Object.defineProperty(t.prototype,"target",{get:function(){return this.gEvent.target},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"event",{get:function(){return this.gEvent.originalEvent},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"x",{get:function(){return this.gEvent.x},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"y",{get:function(){return this.gEvent.y},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"clientX",{get:function(){return this.gEvent.clientX},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"clientY",{get:function(){return this.gEvent.clientY},enumerable:!1,configurable:!0}),t.prototype.toString=function(){return"[Event (type=".concat(this.type,")]")},t.prototype.clone=function(){return new t(this.view,this.gEvent,this.data)},t}(),xZt=bZt;function wZt(t){var e=t.getController("axis"),n=t.getController("legend"),r=t.getController("annotation");[e,t.getController("slider"),t.getController("scrollbar"),n,r].forEach((function(t){t&&t.layout()}))}var SZt=function(){function t(){this.scales=new Map,this.syncScales=new Map}return t.prototype.createScale=function(t,e,n,r){var i=n,o=this.getScaleMeta(r);if(0===e.length&&o){var a=o.scale,c={type:a.type};a.isCategory&&(c.values=a.values),i=(0,tOt.b$)(c,o.scaleDef,n)}var l=kDt(t,e,i);return this.cacheScale(l,n,r),l},t.prototype.sync=function(t,e){var n=this;this.syncScales.forEach((function(r,i){var o=Number.MAX_SAFE_INTEGER,a=Number.MIN_SAFE_INTEGER,c=[];(0,tOt.S6)(r,(function(t){var e=n.getScale(t);a=(0,tOt.hj)(e.max)?Math.max(a,e.max):a,o=(0,tOt.hj)(e.min)?Math.min(o,e.min):o,(0,tOt.S6)(e.values,(function(t){c.includes(t)||c.push(t)}))})),(0,tOt.S6)(r,(function(r){var i=n.getScale(r);if(i.isContinuous)i.change({min:o,max:a,values:c});else if(i.isCategory){var l=i.range,u=n.getScaleMeta(r);c&&!(0,tOt.U2)(u,["scaleDef","range"])&&(l=ODt((0,tOt.b$)({},i,{values:c}),t,e)),i.change({values:c,range:l})}}))}))},t.prototype.cacheScale=function(t,e,n){var r=this.getScaleMeta(n);r&&r.scale.type===t.type?(!function(t,e){if("identity"!==t.type&&"identity"!==e.type){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);t.change(n)}}(r.scale,t),r.scaleDef=e):(r={key:n,scale:t,scaleDef:e},this.scales.set(n,r));var i=this.getSyncKey(r);if(r.syncKey=i,this.removeFromSyncScales(n),i){var o=this.syncScales.get(i);o||(o=[],this.syncScales.set(i,o)),o.push(n)}},t.prototype.getScale=function(t){var e=this.getScaleMeta(t);if(!e){var n=(0,tOt.Z$)(t.split("-")),r=this.syncScales.get(n);r&&r.length&&(e=this.getScaleMeta(r[0]))}return e&&e.scale},t.prototype.deleteScale=function(t){var e=this.getScaleMeta(t);if(e){var n=e.syncKey,r=this.syncScales.get(n);if(r&&r.length){var i=r.indexOf(t);-1!==i&&r.splice(i,1)}}this.scales.delete(t)},t.prototype.clear=function(){this.scales.clear(),this.syncScales.clear()},t.prototype.removeFromSyncScales=function(t){var e=this;this.syncScales.forEach((function(n,r){var i=n.indexOf(t);if(-1!==i)return n.splice(i,1),0===n.length&&e.syncScales.delete(r),!1}))},t.prototype.getSyncKey=function(t){var e=t.scale,n=t.scaleDef,r=e.field,i=(0,tOt.U2)(n,["sync"]);return!0===i?r:!1===i?void 0:i},t.prototype.getScaleMeta=function(t){return this.scales.get(t)},t}(),kZt=function(){function t(t,e,n,r){void 0===t&&(t=0),void 0===e&&(e=0),void 0===n&&(n=0),void 0===r&&(r=0),this.top=t,this.right=e,this.bottom=n,this.left=r}return t.instance=function(e,n,r,i){return void 0===e&&(e=0),void 0===n&&(n=0),void 0===r&&(r=0),void 0===i&&(i=0),new t(e,n,r,i)},t.prototype.max=function(t){var e=(0,QCt.CR)(t,4),n=e[0],r=e[1],i=e[2],o=e[3];return this.top=Math.max(this.top,n),this.right=Math.max(this.right,r),this.bottom=Math.max(this.bottom,i),this.left=Math.max(this.left,o),this},t.prototype.shrink=function(t){var e=(0,QCt.CR)(t,4),n=e[0],r=e[1],i=e[2],o=e[3];return this.top+=n,this.right+=r,this.bottom+=i,this.left+=o,this},t.prototype.inc=function(t,e){var n=t.width,r=t.height;switch(e){case $Ct.TOP:case $Ct.TOP_LEFT:case $Ct.TOP_RIGHT:this.top+=r;break;case $Ct.RIGHT:case $Ct.RIGHT_TOP:case $Ct.RIGHT_BOTTOM:this.right+=n;break;case $Ct.BOTTOM:case $Ct.BOTTOM_LEFT:case $Ct.BOTTOM_RIGHT:this.bottom+=r;break;case $Ct.LEFT:case $Ct.LEFT_TOP:case $Ct.LEFT_BOTTOM:this.left+=n}return this},t.prototype.getPadding=function(){return[this.top,this.right,this.bottom,this.left]},t.prototype.clone=function(){return new(t.bind.apply(t,(0,QCt.ev)([void 0],(0,QCt.CR)(this.getPadding()),!1)))},t}();function CZt(t){var e=t.padding;if(!function(t){return!(0,tOt.hj)(t)&&!(0,tOt.kJ)(t)}(e))return new(kZt.bind.apply(kZt,(0,QCt.ev)([void 0],(0,QCt.CR)(pZt(e)),!1)));var n=t.viewBBox,r=new kZt,i=[],o=[],a=[];return(0,tOt.S6)(t.getComponents(),(function(t){var e=t.type;e===KCt.AXIS?i.push(t):[KCt.LEGEND,KCt.SLIDER,KCt.SCROLLBAR].includes(e)?o.push(t):e!==KCt.GRID&&e!==KCt.TOOLTIP&&a.push(t)})),(0,tOt.S6)(i,(function(t){var e=t.component.getLayoutBBox(),i=new gDt(e.x,e.y,e.width,e.height).exceed(n);r.max(i)})),(0,tOt.S6)(o,(function(t){var e=t.component,n=t.direction,i=e.getLayoutBBox(),o=e.get("padding"),a=new gDt(i.x,i.y,i.width,i.height).expand(o);r.inc(a,n)})),(0,tOt.S6)(a,(function(t){var e=t.component,n=t.direction,i=e.getLayoutBBox(),o=new gDt(i.x,i.y,i.width,i.height);r.inc(o,n)})),r}function OZt(t,e,n){var r=n.instance();e.forEach((function(t){t.autoPadding=r.max(t.autoPadding.getPadding())}))}var EZt=function(t){function e(e){var n=t.call(this,{visible:e.visible})||this;n.views=[],n.geometries=[],n.controllers=[],n.interactions={},n.limitInPlot=!1,n.options={data:[],animate:!0},n.usedControllers=Object.keys(vZt),n.scalePool=new SZt,n.layoutFunc=wZt,n.isPreMouseInPlot=!1,n.isDataChanged=!1,n.isCoordinateChanged=!1,n.createdScaleKeys=new Map,n.onCanvasEvent=function(t){var e=t.name;if(!e.includes(":")){var r=n.createViewEvent(t);n.doPlotEvent(r),n.emit(e,r)}},n.onDelegateEvents=function(t){var e=t.name;if(e.includes(":")){var r=n.createViewEvent(t);n.emit(e,r)}};var r=e.id,i=void 0===r?(0,tOt.EL)("view"):r,o=e.parent,a=e.canvas,c=e.backgroundGroup,l=e.middleGroup,u=e.foregroundGroup,s=e.region,f=void 0===s?{start:{x:0,y:0},end:{x:1,y:1}}:s,h=e.padding,d=e.appendPadding,p=e.theme,v=e.options,g=e.limitInPlot,m=e.syncViewPadding;return n.parent=o,n.canvas=a,n.backgroundGroup=c,n.middleGroup=l,n.foregroundGroup=u,n.region=f,n.padding=h,n.appendPadding=d,n.options=(0,QCt.pi)((0,QCt.pi)({},n.options),v),n.limitInPlot=g,n.id=i,n.syncViewPadding=m,n.themeObject=(0,tOt.Kn)(p)?(0,tOt.b$)({},iZt("default"),nZt(p)):iZt(p),n.init(),n}return(0,QCt.ZT)(e,t),e.prototype.setLayout=function(t){this.layoutFunc=t},e.prototype.init=function(){this.calculateViewBBox(),this.initEvents(),this.initComponentController(),this.initOptions()},e.prototype.render=function(t,e){void 0===t&&(t=!1),this.emit(eOt.BEFORE_RENDER,xZt.fromData(this,eOt.BEFORE_RENDER,e)),this.paint(t),this.emit(eOt.AFTER_RENDER,xZt.fromData(this,eOt.AFTER_RENDER,e)),!1===this.visible&&this.changeVisible(!1)},e.prototype.clear=function(){var t=this;this.emit(eOt.BEFORE_CLEAR),this.filteredData=[],this.coordinateInstance=void 0,this.isDataChanged=!1,this.isCoordinateChanged=!1;for(var e=this.geometries,n=0;n');O.appendChild(E);var M=bOt(O,c,i,o),A=new(function(t){var e=pOt[t];if(!e)throw new Error("G engine '".concat(t,"' is not exist, please register it at first."));return e}(f).Canvas)((0,QCt.pi)({container:E,pixelRatio:h,localRefresh:p,supportCSSTransform:y},M));return(n=t.call(this,{parent:null,canvas:A,backgroundGroup:A.addGroup({zIndex:cOt}),middleGroup:A.addGroup({zIndex:aOt}),foregroundGroup:A.addGroup({zIndex:oOt}),padding:l,appendPadding:u,visible:g,options:w,limitInPlot:S,theme:k,syncViewPadding:C})||this).onResize=(0,tOt.Ds)((function(){n.forceFit()}),300),n.ele=O,n.canvas=A,n.width=M.width,n.height=M.height,n.autoFit=c,n.localRefresh=p,n.renderer=f,n.wrapperElement=E,n.updateCanvasStyle(),n.bindAutoFit(),n.initDefaultInteractions(x),n}return(0,QCt.ZT)(e,t),e.prototype.initDefaultInteractions=function(t){var e=this;(0,tOt.S6)(t,(function(t){e.interaction(t)}))},e.prototype.aria=function(t){var e="aria-label";!1===t?this.ele.removeAttribute(e):this.ele.setAttribute(e,t.label)},e.prototype.changeSize=function(t,e){return this.width===t&&this.height===e||(this.emit(eOt.BEFORE_CHANGE_SIZE),this.width=t,this.height=e,this.canvas.changeSize(t,e),this.render(!0),this.emit(eOt.AFTER_CHANGE_SIZE)),this},e.prototype.clear=function(){t.prototype.clear.call(this),this.aria(!1)},e.prototype.destroy=function(){t.prototype.destroy.call(this),this.unbindAutoFit(),this.canvas.destroy(),function(t){var e=t.parentNode;e&&e.removeChild(t)}(this.wrapperElement),this.wrapperElement=null},e.prototype.changeVisible=function(e){return t.prototype.changeVisible.call(this,e),this.wrapperElement.style.display=e?"":"none",this},e.prototype.forceFit=function(){if(!this.destroyed){var t=bOt(this.ele,!0,this.width,this.height),e=t.width,n=t.height;this.changeSize(e,n)}},e.prototype.updateCanvasStyle=function(){mOt(this.canvas.get("el"),{display:"inline-block",verticalAlign:"middle"})},e.prototype.bindAutoFit=function(){this.autoFit&&window.addEventListener("resize",this.onResize)},e.prototype.unbindAutoFit=function(){this.autoFit&&window.removeEventListener("resize",this.onResize)},e}(EZt),PZt=AZt,_Zt=function(){function t(t){this.visible=!0,this.components=[],this.view=t}return t.prototype.clear=function(t){(0,tOt.S6)(this.components,(function(t){t.component.destroy()})),this.components=[]},t.prototype.destroy=function(){this.clear()},t.prototype.getComponents=function(){return this.components},t.prototype.changeVisible=function(t){this.visible!==t&&(this.components.forEach((function(e){t?e.component.show():e.component.hide()})),this.visible=t)},t}();var DZt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.isLocked=!1,e}return(0,QCt.ZT)(e,t),Object.defineProperty(e.prototype,"name",{get:function(){return"tooltip"},enumerable:!1,configurable:!0}),e.prototype.init=function(){},e.prototype.isVisible=function(){return!1!==this.view.getOptions().tooltip},e.prototype.render=function(){},e.prototype.showTooltip=function(t){if(this.point=t,this.isVisible()){var e=this.view,n=this.getTooltipItems(t);if(n.length){var r=this.getTitle(n),i={x:n[0].x,y:n[0].y};e.emit("tooltip:show",xZt.fromData(e,"tooltip:show",(0,QCt.pi)({items:n,title:r},t)));var o=this.getTooltipCfg(),a=o.follow,c=o.showMarkers,l=o.showCrosshairs,u=o.showContent,s=o.marker,f=this.items,h=this.title;if((0,tOt.Xy)(h,r)&&(0,tOt.Xy)(f,n)?(this.tooltip&&a&&(this.tooltip.update(t),this.tooltip.show()),this.tooltipMarkersGroup&&this.tooltipMarkersGroup.show()):(e.emit("tooltip:change",xZt.fromData(e,"tooltip:change",(0,QCt.pi)({items:n,title:r},t))),((0,tOt.mf)(u)?u(n):u)&&(this.tooltip||this.renderTooltip(),this.tooltip.update((0,tOt.CD)({},o,{items:this.getItemsAfterProcess(n),title:r},a?t:{})),this.tooltip.show()),c&&this.renderTooltipMarkers(n,s)),this.items=n,this.title=r,l){var d=(0,tOt.U2)(o,["crosshairs","follow"],!1);this.renderCrosshairs(d?t:i,o)}}else this.hideTooltip()}},e.prototype.hideTooltip=function(){if(this.getTooltipCfg().follow){var t=this.tooltipMarkersGroup;t&&t.hide();var e=this.xCrosshair,n=this.yCrosshair;e&&e.hide(),n&&n.hide();var r=this.tooltip;r&&r.hide(),this.view.emit("tooltip:hide",xZt.fromData(this.view,"tooltip:hide",{})),this.point=null}else this.point=null},e.prototype.lockTooltip=function(){this.isLocked=!0,this.tooltip&&this.tooltip.setCapture(!0)},e.prototype.unlockTooltip=function(){this.isLocked=!1;var t=this.getTooltipCfg();this.tooltip&&this.tooltip.setCapture(t.capture)},e.prototype.isTooltipLocked=function(){return this.isLocked},e.prototype.clear=function(){var t=this,e=t.tooltip,n=t.xCrosshair,r=t.yCrosshair,i=t.tooltipMarkersGroup;e&&(e.hide(),e.clear()),n&&n.clear(),r&&r.clear(),i&&i.clear(),(null==e?void 0:e.get("customContent"))&&(this.tooltip.destroy(),this.tooltip=null),this.title=null,this.items=null},e.prototype.destroy=function(){this.tooltip&&this.tooltip.destroy(),this.xCrosshair&&this.xCrosshair.destroy(),this.yCrosshair&&this.yCrosshair.destroy(),this.guideGroup&&this.guideGroup.remove(!0),this.reset()},e.prototype.reset=function(){this.items=null,this.title=null,this.tooltipMarkersGroup=null,this.tooltipCrosshairsGroup=null,this.xCrosshair=null,this.yCrosshair=null,this.tooltip=null,this.guideGroup=null,this.isLocked=!1,this.point=null},e.prototype.changeVisible=function(t){if(this.visible!==t){var e=this,n=e.tooltip,r=e.tooltipMarkersGroup,i=e.xCrosshair,o=e.yCrosshair;t?(n&&n.show(),r&&r.show(),i&&i.show(),o&&o.show()):(n&&n.hide(),r&&r.hide(),i&&i.hide(),o&&o.hide()),this.visible=t}},e.prototype.getTooltipItems=function(t){var e,n,r,i,o,a,c=this.findItemsFromView(this.view,t);if(c.length){c=(0,tOt.xH)(c);try{for(var l=(0,QCt.XA)(c),u=l.next();!u.done;u=l.next()){var s=u.value;try{for(var f=(r=void 0,(0,QCt.XA)(s)),h=f.next();!h.done;h=f.next()){var d=h.value,p=d.mappingData,v=p.x,g=p.y;d.x=(0,tOt.kJ)(v)?v[v.length-1]:v,d.y=(0,tOt.kJ)(g)?g[g.length-1]:g}}catch(k){r={error:k}}finally{try{h&&!h.done&&(i=f.return)&&i.call(f)}finally{if(r)throw r.error}}}}catch(C){e={error:C}}finally{try{u&&!u.done&&(n=l.return)&&n.call(l)}finally{if(e)throw e.error}}if(!1===this.getTooltipCfg().shared&&c.length>1){var m=c[0],y=Math.abs(t.y-m[0].y);try{for(var b=(0,QCt.XA)(c),x=b.next();!x.done;x=b.next()){var w=x.value,S=Math.abs(t.y-w[0].y);S<=y&&(m=w,y=S)}}catch(O){o={error:O}}finally{try{x&&!x.done&&(a=b.return)&&a.call(b)}finally{if(o)throw o.error}}c=[m]}return function(t){for(var e=[],n=function(n){var r=t[n];(0,tOt.sE)(e,(function(t){return t.color===r.color&&t.name===r.name&&t.value===r.value&&t.title===r.title}))||e.push(r)},r=0;r'+r+"":r}})},e.prototype.getTitle=function(t){var e=t[0].title||t[0].name;return this.title=e,e},e.prototype.renderTooltip=function(){var t=this.view.getCanvas(),e={start:{x:0,y:0},end:{x:t.get("width"),y:t.get("height")}},n=this.getTooltipCfg(),r=new oDt((0,QCt.pi)((0,QCt.pi)({parent:t.get("el").parentNode,region:e},n),{visible:!1,crosshairs:null}));r.init(),this.tooltip=r},e.prototype.renderTooltipMarkers=function(t,e){var n,r,i=this.getTooltipMarkersGroup(),o=this.view.getRootView(),a=o.limitInPlot;try{for(var c=(0,QCt.XA)(t),l=c.next();!l.done;l=c.next()){var u=l.value,s=u.x,f=u.y;if(a||(null==i?void 0:i.getClip())){var h=xDt(o.getCoordinate()),d=h.type,p=h.attrs;null==i||i.setClip({type:d,attrs:p})}else null==i||i.setClip(void 0);var v=this.view.getTheme(),g=(0,tOt.U2)(v,["components","tooltip","marker"],{}),m=(0,QCt.pi)((0,QCt.pi)({fill:u.color,symbol:"circle",shadowColor:u.color},(0,tOt.mf)(e)?(0,QCt.pi)((0,QCt.pi)({},g),e(u)):e),{x:s,y:f});i.addShape("marker",{attrs:m})}}catch(y){n={error:y}}finally{try{l&&!l.done&&(r=c.return)&&r.call(c)}finally{if(n)throw n.error}}},e.prototype.renderCrosshairs=function(t,e){var n=(0,tOt.U2)(e,["crosshairs","type"],"x");"x"===n?(this.yCrosshair&&this.yCrosshair.hide(),this.renderXCrosshairs(t,e)):"y"===n?(this.xCrosshair&&this.xCrosshair.hide(),this.renderYCrosshairs(t,e)):"xy"===n&&(this.renderXCrosshairs(t,e),this.renderYCrosshairs(t,e))},e.prototype.renderXCrosshairs=function(t,e){var n,r,i=this.getViewWithGeometry(this.view).getCoordinate();if(i.isRect)i.isTransposed?(n={x:i.start.x,y:t.y},r={x:i.end.x,y:t.y}):(n={x:t.x,y:i.end.y},r={x:t.x,y:i.start.y});else{var o=bDt(i,t),a=i.getCenter(),c=i.getRadius();r=lDt(a.x,a.y,c,o),n=a}var l=(0,tOt.b$)({start:n,end:r,container:this.getTooltipCrosshairsGroup()},(0,tOt.U2)(e,"crosshairs",{}),this.getCrosshairsText("x",t,e));delete l.type;var u=this.xCrosshair;u?u.update(l):(u=new $Pt(l)).init(),u.render(),u.show(),this.xCrosshair=u},e.prototype.renderYCrosshairs=function(t,e){var n,r,i=this.getViewWithGeometry(this.view).getCoordinate();if(i.isRect){var o=void 0,a=void 0;i.isTransposed?(o={x:t.x,y:i.end.y},a={x:t.x,y:i.start.y}):(o={x:i.start.x,y:t.y},a={x:i.end.x,y:t.y}),n={start:o,end:a},r="Line"}else n={center:i.getCenter(),radius:yDt(i,t),startAngle:i.startAngle,endAngle:i.endAngle},r="Circle";delete(n=(0,tOt.b$)({container:this.getTooltipCrosshairsGroup()},n,(0,tOt.U2)(e,"crosshairs",{}),this.getCrosshairsText("y",t,e))).type;var c=this.yCrosshair;c?i.isRect&&"circle"===c.get("type")||!i.isRect&&"line"===c.get("type")?(c=new E[r](n)).init():c.update(n):(c=new E[r](n)).init(),c.render(),c.show(),this.yCrosshair=c},e.prototype.getCrosshairsText=function(t,e,n){var r=(0,tOt.U2)(n,["crosshairs","text"]),i=(0,tOt.U2)(n,["crosshairs","follow"]),o=this.items;if(r){var a=this.getViewWithGeometry(this.view),c=o[0],l=a.getXScale(),u=a.getYScales()[0],s=void 0,f=void 0;if(i){var h=this.view.getCoordinate().invert(e);s=l.invert(h.x),f=u.invert(h.y)}else s=c.data[l.field],f=c.data[u.field];var d="x"===t?s:f;return(0,tOt.mf)(r)?r=r(t,d,o,e):r.content=d,{text:r}}},e.prototype.getGuideGroup=function(){if(!this.guideGroup){var t=this.view.foregroundGroup;this.guideGroup=t.addGroup({name:"tooltipGuide",capture:!1})}return this.guideGroup},e.prototype.getTooltipMarkersGroup=function(){var t=this.tooltipMarkersGroup;return t&&!t.destroyed?(t.clear(),t.show()):((t=this.getGuideGroup().addGroup({name:"tooltipMarkersGroup"})).toFront(),this.tooltipMarkersGroup=t),t},e.prototype.getTooltipCrosshairsGroup=function(){var t=this.tooltipCrosshairsGroup;return t||((t=this.getGuideGroup().addGroup({name:"tooltipCrosshairsGroup",capture:!1})).toBack(),this.tooltipCrosshairsGroup=t),t},e.prototype.findItemsFromView=function(t,e){var n,r;if(!1===t.getOptions().tooltip)return[];var i=dZt(t,e,this.getTooltipCfg());try{for(var o=(0,QCt.XA)(t.views),a=o.next();!a.done;a=o.next()){var c=a.value;i=i.concat(this.findItemsFromView(c,e))}}catch(l){n={error:l}}finally{try{a&&!a.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}return i},e.prototype.getViewWithGeometry=function(t){var e=this;return t.geometries.length?t:(0,tOt.sE)(t.views,(function(t){return e.getViewWithGeometry(t)}))},e.prototype.getItemsAfterProcess=function(t){var e=this.getTooltipCfg().customItems,n=e||function(t){return t};return n(t)},e}(_Zt),TZt=DZt,ZZt={};function FZt(t){return ZZt[t.toLowerCase()]}function jZt(t,e){ZZt[t.toLowerCase()]=e}var IZt={appear:{duration:450,easing:"easeQuadOut"},update:{duration:400,easing:"easeQuadInOut"},enter:{duration:400,easing:"easeQuadInOut"},leave:{duration:350,easing:"easeQuadIn"}},RZt={interval:function(t){return{enter:{animation:t.isRect?t.isTransposed?"scale-in-x":"scale-in-y":"fade-in"},update:{animation:t.isPolar&&t.isTransposed?"sector-path-update":null},leave:{animation:"fade-out"}}},line:{enter:{animation:"fade-in"},leave:{animation:"fade-out"}},path:{enter:{animation:"fade-in"},leave:{animation:"fade-out"}},point:{appear:{animation:"zoom-in"},enter:{animation:"zoom-in"},leave:{animation:"zoom-out"}},area:{enter:{animation:"fade-in"},leave:{animation:"fade-out"}},polygon:{enter:{animation:"fade-in"},leave:{animation:"fade-out"}},schema:{enter:{animation:"fade-in"},leave:{animation:"fade-out"}},edge:{enter:{animation:"fade-in"},leave:{animation:"fade-out"}},label:{appear:{animation:"fade-in",delay:450},enter:{animation:"fade-in"},update:{animation:"position-update"},leave:{animation:"fade-out"}}},LZt={line:function(){return{animation:"wave-in"}},area:function(){return{animation:"wave-in"}},path:function(){return{animation:"fade-in"}},interval:function(t){var e;return t.isRect?e=t.isTransposed?"grow-in-x":"grow-in-y":(e="grow-in-xy",t.isPolar&&t.isTransposed&&(e="wave-in")),{animation:e}},schema:function(t){return{animation:t.isRect?t.isTransposed?"grow-in-x":"grow-in-y":"grow-in-xy"}},polygon:function(){return{animation:"fade-in",duration:500}},edge:function(){return{animation:"fade-in"}}};function NZt(t,e,n){var r=RZt[t];return r&&((0,tOt.mf)(r)&&(r=r(e)),r=(0,tOt.b$)({},IZt,r),n)?r[n]:r}function BZt(t,e,n){var r=(0,tOt.U2)(t.get("origin"),"data",dOt),i=e.animation,o=function(t,e){return{delay:(0,tOt.mf)(t.delay)?t.delay(e):t.delay,easing:(0,tOt.mf)(t.easing)?t.easing(e):t.easing,duration:(0,tOt.mf)(t.duration)?t.duration(e):t.duration,callback:t.callback,repeat:t.repeat}}(e,r);if(i){var a=FZt(i);a&&a(t,o,n)}else t.animate(n.toAttrs,o)}var zZt="element-background",UZt=function(t){function e(e){var n=t.call(this,e)||this;n.labelShape=[],n.states=[];var r=e.shapeFactory,i=e.container,o=e.offscreenGroup,a=e.elementIndex,c=e.visible,l=void 0===c||c;return n.shapeFactory=r,n.container=i,n.offscreenGroup=o,n.visible=l,n.elementIndex=a,n}return(0,QCt.ZT)(e,t),e.prototype.draw=function(t,e){void 0===e&&(e=!1),this.model=t,this.data=t.data,this.shapeType=this.getShapeType(t),this.drawShape(t,e),!1===this.visible&&this.changeVisible(!1)},e.prototype.update=function(t){var e=this.shapeFactory,n=this.shape;if(n){this.model=t,this.data=t.data,this.shapeType=this.getShapeType(t),this.setShapeInfo(n,t);var r=this.getOffscreenGroup(),i=e.drawShape(this.shapeType,t,r);i.cfg.data=this.data,i.cfg.origin=t,i.cfg.element=this,this.syncShapeStyle(n,i,this.getStates(),this.getAnimateCfg("update"))}},e.prototype.destroy=function(){var e=this.shapeFactory,n=this.shape;if(n){var r=this.getAnimateCfg("leave");r?BZt(n,r,{coordinate:e.coordinate,toAttrs:(0,QCt.pi)({},n.attr())}):n.remove(!0)}this.states=[],this.shapeFactory=void 0,this.container=void 0,this.shape=void 0,this.animate=void 0,this.geometry=void 0,this.labelShape=[],this.model=void 0,this.data=void 0,this.offscreenGroup=void 0,this.statesStyle=void 0,t.prototype.destroy.call(this)},e.prototype.changeVisible=function(e){t.prototype.changeVisible.call(this,e),e?(this.shape&&this.shape.show(),this.labelShape&&this.labelShape.forEach((function(t){t.show()}))):(this.shape&&this.shape.hide(),this.labelShape&&this.labelShape.forEach((function(t){t.hide()})))},e.prototype.setState=function(t,e){var n=this,r=n.states,i=n.shapeFactory,o=n.model,a=n.shape,c=n.shapeType,l=r.indexOf(t);if(e){if(l>-1)return;r.push(t),"active"!==t&&"selected"!==t||null==a||a.toFront()}else{if(-1===l)return;if(r.splice(l,1),"active"===t||"selected"===t){var u=this.geometry,s=u.sortZIndex,f=u.zIndexReversed?this.geometry.elements.length-this.elementIndex:this.elementIndex;s?a.setZIndex(f):a.set("zIndex",f)}}var h=i.drawShape(c,o,this.getOffscreenGroup());r.length?this.syncShapeStyle(a,h,r,null):this.syncShapeStyle(a,h,["reset"],null),h.remove(!0);var d={state:t,stateStatus:e,element:this,target:this.container};this.container.emit("statechange",d),vAt(this.shape,"statechange",d)},e.prototype.clearStates=function(){var t=this,e=this.states;(0,tOt.S6)(e,(function(e){t.setState(e,!1)})),this.states=[]},e.prototype.hasState=function(t){return this.states.includes(t)},e.prototype.getStates=function(){return this.states},e.prototype.getData=function(){return this.data},e.prototype.getModel=function(){return this.model},e.prototype.getBBox=function(){var t=this.shape,e=this.labelShape,n={x:0,y:0,minX:0,minY:0,maxX:0,maxY:0,width:0,height:0};return t&&(n=t.getCanvasBBox()),e&&e.forEach((function(t){var e=t.getCanvasBBox();n.x=Math.min(e.x,n.x),n.y=Math.min(e.y,n.y),n.minX=Math.min(e.minX,n.minX),n.minY=Math.min(e.minY,n.minY),n.maxX=Math.max(e.maxX,n.maxX),n.maxY=Math.max(e.maxY,n.maxY)})),n.width=n.maxX-n.minX,n.height=n.maxY-n.minY,n},e.prototype.getStatesStyle=function(){if(!this.statesStyle){var t=this,e=t.shapeType,n=t.geometry,r=t.shapeFactory,i=n.stateOption,o=r.defaultShapeType,a=r.theme[e]||r.theme[o];this.statesStyle=(0,tOt.b$)({},a,i)}return this.statesStyle},e.prototype.getStateStyle=function(t,e){var n=this.getStatesStyle(),r=(0,tOt.U2)(n,[t,"style"],{}),i=r[e]||r;return(0,tOt.mf)(i)?i(this):i},e.prototype.getAnimateCfg=function(t){var e=this,n=this.animate;if(n){var r=n[t];return r?(0,QCt.pi)((0,QCt.pi)({},r),{callback:function(){var t;(0,tOt.mf)(r.callback)&&r.callback(),null===(t=e.geometry)||void 0===t||t.emit(nOt.AFTER_DRAW_ANIMATE)}}):r}return null},e.prototype.drawShape=function(t,e){var n;void 0===e&&(e=!1);var r=this,i=r.shapeFactory,o=r.container,a=r.shapeType;if(this.shape=i.drawShape(a,t,o),this.shape){this.setShapeInfo(this.shape,t);var c=this.shape.cfg.name;c?(0,tOt.HD)(c)&&(this.shape.cfg.name=["element",c]):this.shape.cfg.name=["element",this.shapeFactory.geometryType];var l=e?"enter":"appear",u=this.getAnimateCfg(l);u&&(null===(n=this.geometry)||void 0===n||n.emit(nOt.BEFORE_DRAW_ANIMATE),BZt(this.shape,u,{coordinate:i.coordinate,toAttrs:(0,QCt.pi)({},this.shape.attr())}))}},e.prototype.getOffscreenGroup=function(){if(!this.offscreenGroup){var t=this.container.getGroupBase();this.offscreenGroup=new t({})}return this.offscreenGroup},e.prototype.setShapeInfo=function(t,e){var n=this;(t.cfg.origin=e,t.cfg.element=this,t.isGroup())&&t.get("children").forEach((function(t){n.setShapeInfo(t,e)}))},e.prototype.syncShapeStyle=function(t,e,n,r,i){var o,a=this;if(void 0===n&&(n=[]),void 0===i&&(i=0),t&&e){var c=t.get("clipShape"),l=e.get("clipShape");if(this.syncShapeStyle(c,l,n,r),t.isGroup())for(var u=t.get("children"),s=e.get("children"),f=0;f=0?e:n<=0?n:0},e.prototype.createAttrOption=function(t,e,n){if((0,tOt.UM)(e)||(0,tOt.Kn)(e))(0,tOt.Kn)(e)&&(0,tOt.Xy)(Object.keys(e),["values"])?(0,tOt.t8)(this.attributeOption,t,{fields:e.values}):(0,tOt.t8)(this.attributeOption,t,e);else{var r={};(0,tOt.hj)(e)?r.values=[e]:r.fields=eFt(e),n&&((0,tOt.mf)(n)?r.callback=n:r.values=n),(0,tOt.t8)(this.attributeOption,t,r)}},e.prototype.initAttributes=function(){var t=this,e=this,n=e.attributes,r=e.attributeOption,i=e.theme,o=e.shapeType;this.groupScales=[];var a={},c=function(e){if(r.hasOwnProperty(e)){var c=r[e];if(!c)return{value:void 0};var l=(0,QCt.pi)({},c),u=l.callback,s=l.values,f=l.fields,h=(void 0===f?[]:f).map((function(n){var r=t.scales[n];!a[n]&&hOt.includes(e)&&("cat"===SDt(r,(0,tOt.U2)(t.scaleDefs,n),e,t.type)&&(t.groupScales.push(r),a[n]=!0));return r}));l.scales=h,"position"!==e&&1===h.length&&"identity"===h[0].type?l.values=h[0].values:u||s||("size"===e?l.values=i.sizes:"shape"===e?l.values=i.shapes[o]||[]:"color"===e&&(h.length?l.values=h[0].values.length<=10?i.colors10:i.colors20:l.values=i.colors10));var d=JMt(e);n[e]=new d(l)}};for(var l in r){var u=c(l);if("object"==typeof u)return u.value}},e.prototype.processData=function(t){var e,n;this.hasSorted=!1;for(var r=this.getAttribute("position").scales.filter((function(t){return t.isCategory})),i=this.groupData(t),o=[],a=0,c=i.length;ao&&(o=u)}var s=this.scaleDefs,f={};it.max&&!(0,tOt.U2)(s,[r,"max"])&&(f.max=o),t.change(f)},e.prototype.beforeMapping=function(t){var e=t;if(this.sortable&&this.sort(e),this.generatePoints)for(var n=0,r=e.length;n1)for(var s=0;s0}))}function fFt(t,e,n){var r=n.data,i=n.origin,o=n.animateCfg,a=n.coordinate,c=(0,tOt.U2)(o,"update");t.set("data",r),t.set("origin",i),t.set("animateCfg",o),t.set("coordinate",a),t.set("visible",e.get("visible")),(t.getChildren()||[]).forEach((function(l,u){var s=e.getChildByIndex(u);if(s){l.set("data",r),l.set("origin",i),l.set("animateCfg",o),l.set("coordinate",a);var f=hDt(l,s);c?BZt(l,c,{toAttrs:f,coordinate:a}):l.attr(f),s.isGroup()&&fFt(l,s,n)}else t.removeChild(l),l.remove(!0)})),(0,tOt.S6)(e.getChildren(),(function(e,n){n>=t.getCount()&&(e.destroyed||t.add(e))}))}var hFt=function(){function t(t){this.shapesMap={};var e=t.layout,n=t.container;this.layout=e,this.container=n}return t.prototype.render=function(t,e,n){return void 0===n&&(n=!1),(0,QCt.mG)(this,void 0,void 0,(function(){var r,i,o,a,c,l,u,s,f=this;return(0,QCt.Jh)(this,(function(h){switch(h.label){case 0:if(r={},i=this.createOffscreenGroup(),!t.length)return[3,2];try{for(o=(0,QCt.XA)(t),a=o.next();!a.done;a=o.next())(c=a.value)&&(r[c.id]=this.renderLabel(c,i))}catch(d){u={error:d}}finally{try{a&&!a.done&&(s=o.return)&&s.call(o)}finally{if(u)throw u.error}}return[4,this.doLayout(t,e,r)];case 1:h.sent(),this.renderLabelLine(t,r),this.renderLabelBackground(t,r),this.adjustLabel(t,r),h.label=2;case 2:return l=this.shapesMap,(0,tOt.S6)(r,(function(t,e){if(t.destroyed)delete r[e];else{if(l[e]){var i=t.get("data"),o=t.get("origin"),a=t.get("coordinate"),c=t.get("animateCfg"),u=l[e];fFt(u,r[e],{data:i,origin:o,animateCfg:c,coordinate:a}),r[e]=u}else{if(f.container.destroyed)return;f.container.add(t);var s=(0,tOt.U2)(t.get("animateCfg"),n?"enter":"appear");s&&BZt(t,s,{toAttrs:(0,QCt.pi)({},t.attr()),coordinate:t.get("coordinate")})}delete l[e]}})),(0,tOt.S6)(l,(function(t){var e=(0,tOt.U2)(t.get("animateCfg"),"leave");e?BZt(t,e,{toAttrs:null,coordinate:t.get("coordinate")}):t.remove(!0)})),this.shapesMap=r,i.destroy(),[2]}}))}))},t.prototype.clear=function(){this.container.clear(),this.shapesMap={}},t.prototype.destroy=function(){this.container.destroy(),this.shapesMap=null},t.prototype.renderLabel=function(t,e){var n,r=t.id,i=t.elementId,o=t.data,a=t.mappingData,c=t.coordinate,l=t.animate,u=t.content,s={id:r,elementId:i,capture:t.capture,data:o,origin:(0,QCt.pi)((0,QCt.pi)({},a),{data:a[dOt]}),coordinate:c},f=e.addGroup((0,QCt.pi)({name:"label",animateCfg:!1!==this.animate&&null!==l&&!1!==l&&(0,tOt.b$)({},this.animate,l)},s));if(u.isGroup&&u.isGroup()||u.isShape&&u.isShape()){var h=u.getCanvasBBox(),d=h.width,p=h.height,v=(0,tOt.U2)(t,"textAlign","left"),g=t.x;"center"===v?g-=d/2:"right"!==v&&"end"!==v||(g-=d),aFt(u,g,t.y-p/2),n=u,f.add(u)}else{var m=(0,tOt.U2)(t,["style","fill"]);n=f.addShape("text",(0,QCt.pi)({attrs:(0,QCt.pi)((0,QCt.pi)({x:t.x,y:t.y,textAlign:t.textAlign,textBaseline:(0,tOt.U2)(t,"textBaseline","middle"),text:t.content},t.style),{fill:(0,tOt.Ft)(m)?t.color:m})},s))}return t.rotate&&cFt(n,t.rotate),f},t.prototype.doLayout=function(t,e,n){return(0,QCt.mG)(this,void 0,void 0,(function(){var r,i=this;return(0,QCt.Jh)(this,(function(o){switch(o.label){case 0:return this.layout?(r=(0,tOt.kJ)(this.layout)?this.layout:[this.layout],[4,Promise.all(r.map((function(r){var o=function(t){return VZt[t.toLowerCase()]}((0,tOt.U2)(r,"type",""));if(o){var a=[],c=[];return(0,tOt.S6)(n,(function(t,n){a.push(t),c.push(e[t.get("elementId")])})),o(t,a,c,i.region,r.cfg)}})))]):[3,2];case 1:o.sent(),o.label=2;case 2:return[2]}}))}))},t.prototype.renderLabelLine=function(t,e){(0,tOt.S6)(t,(function(t){var n=(0,tOt.U2)(t,"coordinate");if(t&&n){var r=n.getCenter(),i=n.getRadius();if(t.labelLine){var o=(0,tOt.U2)(t,"labelLine",{}),a=t.id,c=o.path;if(!c){var l=lDt(r.x,r.y,i,t.angle);c=[["M",l.x,l.y],["L",t.x,t.y]]}var u=e[a];u.destroyed||u.addShape("path",{capture:!1,attrs:(0,QCt.pi)({path:c,stroke:t.color?t.color:(0,tOt.U2)(t,["style","fill"],"#000"),fill:null},o.style),id:a,origin:t.mappingData,data:t.data,coordinate:t.coordinate})}}}))},t.prototype.renderLabelBackground=function(t,e){(0,tOt.S6)(t,(function(t){var n=(0,tOt.U2)(t,"coordinate"),r=(0,tOt.U2)(t,"background");if(r&&n){var i=t.id,o=e[i];if(!o.destroyed){var a=o.getChildren()[0];if(a){var c=uFt(o,t,r.padding),l=c.rotation,u=(0,QCt._T)(c,["rotation"]),s=o.addShape("rect",{attrs:(0,QCt.pi)((0,QCt.pi)({},u),r.style||{}),id:i,origin:t.mappingData,data:t.data,coordinate:t.coordinate});if(s.setZIndex(-1),l){var f=a.getMatrix();s.setMatrix(f)}}}}}))},t.prototype.createOffscreenGroup=function(){return new(this.container.getGroupBase())({})},t.prototype.adjustLabel=function(t,e){(0,tOt.S6)(t,(function(t){if(t){var n=t.id,r=e[n];if(!r.destroyed){var i=r.findAll((function(t){return"path"!==t.get("type")}));(0,tOt.S6)(i,(function(e){e&&(t.offsetX&&e.attr("x",e.attr("x")+t.offsetX),t.offsetY&&e.attr("y",e.attr("y")+t.offsetY))}))}}}))},t}(),dFt=hFt;function pFt(t){var e=0;return(0,tOt.S6)(t,(function(t){e+=t})),e/t.length}var vFt=function(){function t(t){this.geometry=t}return t.prototype.getLabelItems=function(t){var e=this,n=[],r=this.getLabelCfgs(t);return(0,tOt.S6)(t,(function(t,i){var o=r[i];if(!o||(0,tOt.UM)(t.x)||(0,tOt.UM)(t.y))n.push(null);else{var a=(0,tOt.kJ)(o.content)?o.content:[o.content];o.content=a;var c=a.length;(0,tOt.S6)(a,(function(r,i){if((0,tOt.UM)(r)||""===r)n.push(null);else{var a=(0,QCt.pi)((0,QCt.pi)({},o),e.getLabelPoint(o,t,i));a.textAlign||(a.textAlign=e.getLabelAlign(a,i,c)),a.offset<=0&&(a.labelLine=null),n.push(a)}}))}})),n},t.prototype.render=function(t,e){return void 0===e&&(e=!1),(0,QCt.mG)(this,void 0,void 0,(function(){var n,r,i;return(0,QCt.Jh)(this,(function(o){switch(o.label){case 0:return n=this.getLabelItems(t),r=this.getLabelsRenderer(),i=this.getGeometryShapes(),[4,r.render(n,i,e)];case 1:return o.sent(),[2]}}))}))},t.prototype.clear=function(){var t=this.labelsRenderer;t&&t.clear()},t.prototype.destroy=function(){var t=this.labelsRenderer;t&&t.destroy(),this.labelsRenderer=null},t.prototype.getCoordinate=function(){return this.geometry.coordinate},t.prototype.getDefaultLabelCfg=function(t,e){var n=this.geometry,r=n.type,i=n.theme;return"polygon"===r||"interval"===r&&"middle"===e||t<0&&!["line","point","path"].includes(r)?(0,tOt.U2)(i,"innerLabels",{}):(0,tOt.U2)(i,"labels",{})},t.prototype.getThemedLabelCfg=function(t){var e=this.geometry,n=this.getDefaultLabelCfg(),r=e.type,i=e.theme;return"polygon"===r||t.offset<0&&!["line","point","path"].includes(r)?(0,tOt.b$)({},n,i.innerLabels,t):(0,tOt.b$)({},n,i.labels,t)},t.prototype.setLabelPosition=function(t,e,n,r){},t.prototype.getLabelOffset=function(t){var e=this.getCoordinate(),n=this.getOffsetVector(t);return e.isTransposed?n[0]:n[1]},t.prototype.getLabelOffsetPoint=function(t,e,n){var r=t.offset,i=this.getCoordinate().isTransposed,o=i?"x":"y",a=i?1:-1,c={x:0,y:0};return c[o]=e>0||1===n?r*a:r*a*-1,c},t.prototype.getLabelPoint=function(t,e,n){var r=this.getCoordinate(),i=t.content.length;function o(e,n,r){void 0===r&&(r=!1);var i=e;return(0,tOt.kJ)(i)&&(i=1===t.content.length?r?pFt(i):i.length<=2?i[e.length-1]:pFt(i):i[n]),i}var a={content:t.content[n],x:0,y:0,start:{x:0,y:0},color:"#fff"},c=(0,tOt.kJ)(e.shape)?e.shape[0]:e.shape,l="funnel"===c||"pyramid"===c;if("polygon"===this.geometry.type){var u=function(t,e){if((0,tOt.hj)(t)&&(0,tOt.hj)(e))return[t,e];if(aDt(t)||aDt(e))return[cDt(t),cDt(e)];for(var n,r,i=-1,o=0,a=0,c=t.length-1,l=0;++i1&&0===e&&("right"===r?r="left":"left"===r&&(r="right"))}return r},t.prototype.getLabelId=function(t){var e=this.geometry,n=e.type,r=e.getXScale(),i=e.getYScale(),o=t[dOt],a=e.getElementId(t);return"line"===n||"area"===n?a+=" ".concat(o[r.field]):"path"===n&&(a+=" ".concat(o[r.field],"-").concat(o[i.field])),a},t.prototype.getLabelsRenderer=function(){var t=this.geometry,e=t.labelsContainer,n=t.labelOption,r=t.canvasRegion,i=t.animateOption,o=this.geometry.coordinate,a=this.labelsRenderer;return a||(a=new dFt({container:e,layout:(0,tOt.U2)(n,["cfg","layout"],{type:this.defaultLayout})}),this.labelsRenderer=a),a.region=r,a.animate=!!i&&NZt("label",o),a},t.prototype.getLabelCfgs=function(t){var e=this,n=this.geometry,r=n.labelOption,i=n.scales,o=n.coordinate,a=r,c=a.fields,l=a.callback,u=a.cfg,s=c.map((function(t){return i[t]})),f=[];return(0,tOt.S6)(t,(function(t,n){var r,i=t[dOt],a=e.getLabelText(i,s);if(l){var h=c.map((function(t){return i[t]}));if(r=l.apply(void 0,(0,QCt.ev)([],(0,QCt.CR)(h),!1)),(0,tOt.UM)(r))return void f.push(null)}var d=(0,QCt.pi)((0,QCt.pi)({id:e.getLabelId(t),elementId:e.geometry.getElementId(t),data:i,mappingData:t,coordinate:o},u),r);(0,tOt.mf)(d.position)&&(d.position=d.position(i,t,n));var p=e.getLabelOffset(d.offset||0),v=e.getDefaultLabelCfg(p,d.position);(d=(0,tOt.b$)({},v,d)).offset=e.getLabelOffset(d.offset||0);var g=d.content;(0,tOt.mf)(g)?d.content=g(i,t,n):(0,tOt.o8)(g)&&(d.content=a[0]),f.push(d)})),f},t.prototype.getLabelText=function(t,e){var n=[];return(0,tOt.S6)(e,(function(e){var r=t[e.field];r=(0,tOt.kJ)(r)?r.map((function(t){return e.getText(t)})):e.getText(r),(0,tOt.UM)(r)||""===r?n.push(null):n.push(r)})),n},t.prototype.getOffsetVector=function(t){void 0===t&&(t=0);var e=this.getCoordinate(),n=0;return(0,tOt.hj)(t)&&(n=t),e.isTransposed?e.applyMatrix(n,0):e.applyMatrix(0,n)},t.prototype.getGeometryShapes=function(){var t=this.geometry,e={};return(0,tOt.S6)(t.elementsMap,(function(t,n){e[n]=t.shape})),(0,tOt.S6)(t.getOffscreenGroup().getChildren(),(function(n){var r=t.getElementId(n.get("origin").mappingData);e[r]=n})),e},t}(),gFt=vFt;function mFt(t,e,n){if(!t)return n;var r;if(t.callback&&t.callback.length>1){var i=Array(t.callback.length-1).fill("");r=t.mapping.apply(t,(0,QCt.ev)([e],(0,QCt.CR)(i),!1)).join("")}else r=t.mapping(e).join("");return r||n}var yFt={hexagon:function(t,e,n){var r=n/2*Math.sqrt(3);return[["M",t,e-n],["L",t+r,e-n/2],["L",t+r,e+n/2],["L",t,e+n],["L",t-r,e+n/2],["L",t-r,e-n/2],["Z"]]},bowtie:function(t,e,n){var r=n-1.5;return[["M",t-n,e-r],["L",t+n,e+r],["L",t+n,e-r],["L",t-n,e+r],["Z"]]},cross:function(t,e,n){return[["M",t-n,e-n],["L",t+n,e+n],["M",t+n,e-n],["L",t-n,e+n]]},tick:function(t,e,n){return[["M",t-n/2,e-n],["L",t+n/2,e-n],["M",t,e-n],["L",t,e+n],["M",t-n/2,e+n],["L",t+n/2,e+n]]},plus:function(t,e,n){return[["M",t-n,e],["L",t+n,e],["M",t,e-n],["L",t,e+n]]},hyphen:function(t,e,n){return[["M",t-n,e],["L",t+n,e]]},line:function(t,e,n){return[["M",t,e-n],["L",t,e+n]]}},bFt=["line","cross","tick","plus","hyphen"];function xFt(t){var e=t.symbol;(0,tOt.HD)(e)&&yFt[e]&&(t.symbol=yFt[e])}function wFt(t){return t.startsWith($Ct.LEFT)||t.startsWith($Ct.RIGHT)?"vertical":"horizontal"}function SFt(t,e,n,r,i){var o=n.getScale(n.type);if(o.isCategory){var a=o.field,c=e.getAttribute("color"),l=e.getAttribute("shape"),u=t.getTheme().defaultColor,s=e.coordinate.isPolar;return o.getTicks().map((function(n,f){var h,d=n.text,p=n.value,v=d,g=o.invert(p),m=0===t.filterFieldData(a,[(h={},h[a]=g,h)]).length;(0,tOt.S6)(t.views,(function(t){var e;t.filterFieldData(a,[(e={},e[a]=g,e)]).length||(m=!0)}));var y=mFt(c,g,u),b=mFt(l,g,"point"),x=e.getShapeMarker(b,{color:y,isInPolar:s}),w=i;return(0,tOt.mf)(w)&&(w=w(v,f,(0,QCt.pi)({name:v,value:g},(0,tOt.b$)({},r,x)))),function(t,e){var n=t.symbol;if((0,tOt.HD)(n)&&-1!==bFt.indexOf(n)){var r=(0,tOt.U2)(t,"style",{}),i=(0,tOt.U2)(r,"lineWidth",1),o=r.stroke||r.fill||e;t.style=(0,tOt.b$)({},t.style,{lineWidth:i,stroke:o,fill:null})}}(x=(0,tOt.b$)({},r,x,pDt((0,QCt.pi)({},w),["style"])),y),w&&w.style&&(x.style=function(t,e){return(0,tOt.mf)(e)?e(t):(0,tOt.b$)({},t,e)}(x.style,w.style)),xFt(x),{id:g,name:v,value:g,marker:x,unchecked:m}}))}return[]}function kFt(t,e){var n=(0,tOt.U2)(t,["components","legend"],{});return(0,tOt.b$)({},(0,tOt.U2)(n,["common"],{}),(0,tOt.b$)({},(0,tOt.U2)(n,[e],{})))}function CFt(t){return!t&&(null==t||isNaN(t))}function OFt(t){if((0,tOt.kJ)(t))return CFt(t[1].y);var e=t.y;return(0,tOt.kJ)(e)?CFt(e[0]):CFt(e)}function EFt(t,e,n){if(void 0===e&&(e=!1),void 0===n&&(n=!0),!t.length||1===t.length&&!n)return[];if(e){for(var r=[],i=0,o=t.length;i=t&&i<=t+n&&o>=e&&o<=e+r}function JFt(t,e){return!(e.minX>t.maxX||e.maxXt.maxY||e.maxY=0&&a<.5*Math.PI?(r={x:l.minX,y:l.minY},i={x:l.maxX,y:l.maxY}):.5*Math.PI<=a&&a1&&(n*=Math.sqrt(d),r*=Math.sqrt(d));var p=n*n*(h*h)+r*r*(f*f),v=p?Math.sqrt((n*n*(r*r)-p)/p):1;o===a&&(v*=-1),isNaN(v)&&(v=0);var g=r?v*n*h/r:0,m=n?v*-r*f/n:0,y=(c+u)/2+Math.cos(i)*g-Math.sin(i)*m,b=(l+s)/2+Math.sin(i)*g+Math.cos(i)*m,x=[(f-g)/n,(h-m)/r],w=[(-1*f-g)/n,(-1*h-m)/r],S=ljt([1,0],x),k=ljt(x,w);return cjt(x,w)<=-1&&(k=Math.PI),cjt(x,w)>=1&&(k=0),0===a&&k>0&&(k-=2*Math.PI),1===a&&k<0&&(k+=2*Math.PI),{cx:y,cy:b,rx:QFt(t,[u,s])?0:n,ry:QFt(t,[u,s])?0:r,startAngle:S,endAngle:S+k,xRotation:i,arcFlag:o,sweepFlag:a}}var sjt=Math.sin,fjt=Math.cos,hjt=Math.atan2,djt=Math.PI;function pjt(t,e,n,r,i,o,a){var c=e.stroke,l=e.lineWidth,u=hjt(r-o,n-i),s=new oIt({type:"path",canvas:t.get("canvas"),isArrowShape:!0,attrs:{path:"M"+10*fjt(djt/6)+","+10*sjt(djt/6)+" L0,0 L"+10*fjt(djt/6)+",-"+10*sjt(djt/6),stroke:c,lineWidth:l}});s.translate(i,o),s.rotateAtPoint(i,o,u),t.set(a?"startArrowShape":"endArrowShape",s)}function vjt(t,e,n,r,i,o,a){var c=e.startArrow,l=e.endArrow,u=e.stroke,s=e.lineWidth,f=a?c:l,h=f.d,d=f.fill,p=f.stroke,v=f.lineWidth,g=(0,QCt._T)(f,["d","fill","stroke","lineWidth"]),m=hjt(r-o,n-i);h&&(i-=fjt(m)*h,o-=sjt(m)*h);var y=new oIt({type:"path",canvas:t.get("canvas"),isArrowShape:!0,attrs:(0,QCt.pi)((0,QCt.pi)({},g),{stroke:p||u,lineWidth:v||s,fill:d})});y.translate(i,o),y.rotateAtPoint(i,o,m),t.set(a?"startArrowShape":"endArrowShape",y)}function gjt(t,e,n,r,i){var o=hjt(r-e,n-t);return{dx:fjt(o)*i,dy:sjt(o)*i}}function mjt(t,e,n,r,i,o){"object"==typeof e.startArrow?vjt(t,e,n,r,i,o,!0):e.startArrow?pjt(t,e,n,r,i,o,!0):t.set("startArrowShape",null)}function yjt(t,e,n,r,i,o){"object"==typeof e.endArrow?vjt(t,e,n,r,i,o,!1):e.endArrow?pjt(t,e,n,r,i,o,!1):t.set("startArrowShape",null)}var bjt={fill:"fillStyle",stroke:"strokeStyle",opacity:"globalAlpha"};function xjt(t,e){var n=e.attr();for(var r in n){var i=n[r],o=bjt[r]?bjt[r]:r;"matrix"===o&&i?t.transform(i[0],i[1],i[3],i[4],i[6],i[7]):"lineDash"===o&&t.setLineDash?(0,tOt.kJ)(i)&&t.setLineDash(i):("strokeStyle"===o||"fillStyle"===o?i=ojt(t,e,i):"globalAlpha"===o&&(i*=t.globalAlpha),t[o]=i)}}function wjt(t,e,n){for(var r=0;rx?b:x,E=b>x?1:b/x,M=b>x?x/b:1;e.translate(m,y),e.rotate(k),e.scale(E,M),e.arc(0,0,O,w,S,1-C),e.scale(1/E,1/M),e.rotate(-k),e.translate(-m,-y)}break;case"Z":e.closePath()}if("Z"===h)c=l;else{var A=f.length;c=[f[A-2],f[A-1]]}}}}function Ajt(t,e){var n=t.get("canvas");n&&("remove"===e&&(t._cacheCanvasBBox=t.get("cacheCanvasBBox")),t.get("hasChanged")||(t.set("hasChanged",!0),t.cfg.parent&&t.cfg.parent.get("hasChanged")||(n.refreshElement(t,e,n),n.get("autoDraw")&&n.draw())))}function Pjt(t){var e,n,r;if(t.destroyed)e=t._cacheCanvasBBox;else{var i=t.get("cacheCanvasBBox"),o=i&&!(!i.width||!i.height),a=t.getCanvasBBox(),c=a&&!(!a.width||!a.height);o&&c?(r=a,e=(n=i)&&r?{minX:Math.min(n.minX,r.minX),minY:Math.min(n.minY,r.minY),maxX:Math.max(n.maxX,r.maxX),maxY:Math.max(n.maxY,r.maxY)}:n||r):o?e=i:c&&(e=a)}return e}var _jt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.onCanvasChange=function(t){Ajt(this,t)},e.prototype.getShapeBase=function(){return A},e.prototype.getGroupBase=function(){return e},e.prototype._applyClip=function(t,e){e&&(t.save(),xjt(t,e),e.createPath(t),t.restore(),t.clip(),e._afterDraw())},e.prototype.cacheCanvasBBox=function(){var t=this.cfg.children,e=[],n=[];(0,tOt.S6)(t,(function(t){var r=t.cfg.cacheCanvasBBox;r&&t.cfg.isInView&&(e.push(r.minX,r.maxX),n.push(r.minY,r.maxY))}));var r=null;if(e.length){var i=(0,tOt.VV)(e),o=(0,tOt.Fp)(e),a=(0,tOt.VV)(n),c=(0,tOt.Fp)(n);r={minX:i,minY:a,x:i,y:a,maxX:o,maxY:c,width:o-i,height:c-a};var l=this.cfg.canvas;if(l){var u=l.getViewRange();this.set("isInView",JFt(r,u))}}else this.set("isInView",!1);this.set("cacheCanvasBBox",r)},e.prototype.draw=function(t,e){var n=this.cfg.children,r=!e||this.cfg.refresh;n.length&&r&&(t.save(),xjt(t,this),this._applyClip(t,this.getClip()),wjt(t,n,e),t.restore(),this.cacheCanvasBBox()),this.cfg.refresh=null,this.set("hasChanged",!1)},e.prototype.skipDraw=function(){this.set("cacheCanvasBBox",null),this.set("hasChanged",!1)},e}(kOt.AbstractGroup),Djt=_jt,Tjt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultAttrs=function(){var e=t.prototype.getDefaultAttrs.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{lineWidth:1,lineAppendWidth:0,strokeOpacity:1,fillOpacity:1})},e.prototype.getShapeBase=function(){return A},e.prototype.getGroupBase=function(){return Djt},e.prototype.onCanvasChange=function(t){Ajt(this,t)},e.prototype.calculateBBox=function(){var t=this.get("type"),e=this.getHitLineWidth(),n=(0,kOt.getBBoxMethod)(t)(this),r=e/2,i=n.x-r,o=n.y-r,a=n.x+n.width+r,c=n.y+n.height+r;return{x:i,minX:i,y:o,minY:o,width:n.width+e,height:n.height+e,maxX:a,maxY:c}},e.prototype.isFill=function(){return!!this.attrs.fill||this.isClipShape()},e.prototype.isStroke=function(){return!!this.attrs.stroke},e.prototype._applyClip=function(t,e){e&&(t.save(),xjt(t,e),e.createPath(t),t.restore(),t.clip(),e._afterDraw())},e.prototype.draw=function(t,e){var n=this.cfg.clipShape;if(e){if(!1===this.cfg.refresh)return void this.set("hasChanged",!1);if(!JFt(e,this.getCanvasBBox()))return this.set("hasChanged",!1),void(this.cfg.isInView&&this._afterDraw())}t.save(),xjt(t,this),this._applyClip(t,n),this.drawPath(t),t.restore(),this._afterDraw()},e.prototype.getCanvasViewBox=function(){var t=this.cfg.canvas;return t?t.getViewRange():null},e.prototype.cacheCanvasBBox=function(){var t=this.getCanvasViewBox();if(t){var e=this.getCanvasBBox(),n=JFt(e,t);this.set("isInView",n),n?this.set("cacheCanvasBBox",e):this.set("cacheCanvasBBox",null)}},e.prototype._afterDraw=function(){this.cacheCanvasBBox(),this.set("hasChanged",!1),this.set("refresh",null)},e.prototype.skipDraw=function(){this.set("cacheCanvasBBox",null),this.set("isInView",null),this.set("hasChanged",!1)},e.prototype.drawPath=function(t){this.createPath(t),this.strokeAndFill(t),this.afterDrawPath(t)},e.prototype.fill=function(t){t.fill()},e.prototype.stroke=function(t){t.stroke()},e.prototype.strokeAndFill=function(t){var e=this.attrs,n=e.lineWidth,r=e.opacity,i=e.strokeOpacity,o=e.fillOpacity;this.isFill()&&((0,tOt.UM)(o)||1===o?this.fill(t):(t.globalAlpha=o,this.fill(t),t.globalAlpha=r)),this.isStroke()&&n>0&&((0,tOt.UM)(i)||1===i||(t.globalAlpha=i),this.stroke(t)),this.afterDrawPath(t)},e.prototype.createPath=function(t){},e.prototype.afterDrawPath=function(t){},e.prototype.isInShape=function(t,e){var n=this.isStroke(),r=this.isFill(),i=this.getHitLineWidth();return this.isInStrokeOrPath(t,e,n,r,i)},e.prototype.isInStrokeOrPath=function(t,e,n,r,i){return!1},e.prototype.getHitLineWidth=function(){if(!this.isStroke())return 0;var t=this.attrs;return t.lineWidth+t.lineAppendWidth},e}(kOt.AbstractShape),Zjt=Tjt,Fjt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultAttrs=function(){var e=t.prototype.getDefaultAttrs.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{x:0,y:0,r:0})},e.prototype.isInStrokeOrPath=function(t,e,n,r,i){var o=this.attr(),a=o.x,c=o.y,l=o.r,u=i/2,s=$Ft(a,c,t,e);return r&&n?s<=l+u:r?s<=l:!!n&&(s>=l-u&&s<=l+u)},e.prototype.createPath=function(t){var e=this.attr(),n=e.x,r=e.y,i=e.r;t.beginPath(),t.arc(n,r,i,0,2*Math.PI,!1),t.closePath()},e}(Zjt),jjt=Fjt;function Ijt(t,e,n,r){return t/(n*n)+e/(r*r)}var Rjt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultAttrs=function(){var e=t.prototype.getDefaultAttrs.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{x:0,y:0,rx:0,ry:0})},e.prototype.isInStrokeOrPath=function(t,e,n,r,i){var o=this.attr(),a=i/2,c=o.x,l=o.y,u=o.rx,s=o.ry,f=(t-c)*(t-c),h=(e-l)*(e-l);return r&&n?Ijt(f,h,u+a,s+a)<=1:r?Ijt(f,h,u,s)<=1:!!n&&(Ijt(f,h,u-a,s-a)>=1&&Ijt(f,h,u+a,s+a)<=1)},e.prototype.createPath=function(t){var e=this.attr(),n=e.x,r=e.y,i=e.rx,o=e.ry;if(t.beginPath(),t.ellipse)t.ellipse(n,r,i,o,0,0,2*Math.PI,!1);else{var a=i>o?i:o,c=i>o?1:i/o,l=i>o?o/i:1;t.save(),t.translate(n,r),t.scale(c,l),t.arc(0,0,a,0,2*Math.PI),t.restore(),t.closePath()}},e}(Zjt),Ljt=Rjt;function Njt(t){return t instanceof HTMLElement&&(0,tOt.HD)(t.nodeName)&&"CANVAS"===t.nodeName.toUpperCase()}var Bjt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultAttrs=function(){var e=t.prototype.getDefaultAttrs.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{x:0,y:0,width:0,height:0})},e.prototype.initAttrs=function(t){this._setImage(t.img)},e.prototype.isStroke=function(){return!1},e.prototype.isOnlyHitBox=function(){return!0},e.prototype._afterLoading=function(){if(!0===this.get("toDraw")){var t=this.get("canvas");t?t.draw():this.createPath(this.get("context"))}},e.prototype._setImage=function(t){var e=this,n=this.attrs;if((0,tOt.HD)(t)){var r=new Image;r.onload=function(){if(e.destroyed)return!1;e.attr("img",r),e.set("loading",!1),e._afterLoading();var t=e.get("callback");t&&t.call(e)},r.crossOrigin="Anonymous",r.src=t,this.set("loading",!0)}else t instanceof Image?(n.width||(n.width=t.width),n.height||(n.height=t.height)):Njt(t)&&(n.width||(n.width=Number(t.getAttribute("width"))),n.height||(n.height,Number(t.getAttribute("height"))))},e.prototype.onAttrChange=function(e,n,r){t.prototype.onAttrChange.call(this,e,n,r),"img"===e&&this._setImage(n)},e.prototype.createPath=function(t){if(this.get("loading"))return this.set("toDraw",!0),void this.set("context",t);var e=this.attr(),n=e.x,r=e.y,i=e.width,o=e.height,a=e.sx,c=e.sy,l=e.swidth,u=e.sheight,s=e.img;(s instanceof Image||Njt(s))&&((0,tOt.UM)(a)||(0,tOt.UM)(c)||(0,tOt.UM)(l)||(0,tOt.UM)(u)?t.drawImage(s,n,r,i,o):t.drawImage(s,a,c,l,u,n,r,i,o))},e}(Zjt),zjt=Bjt,Ujt=n(58609);function Hjt(t,e,n,r,i,o,a){var c=Math.min(t,n),l=Math.max(t,n),u=Math.min(e,r),s=Math.max(e,r),f=i/2;return o>=c-f&&o<=l+f&&a>=u-f&&a<=s+f&&Ujt.x1.pointToLine(t,e,n,r,o,a)<=i/2}var Wjt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultAttrs=function(){var e=t.prototype.getDefaultAttrs.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{x1:0,y1:0,x2:0,y2:0,startArrow:!1,endArrow:!1})},e.prototype.initAttrs=function(t){this.setArrow()},e.prototype.onAttrChange=function(e,n,r){t.prototype.onAttrChange.call(this,e,n,r),this.setArrow()},e.prototype.setArrow=function(){var t=this.attr(),e=t.x1,n=t.y1,r=t.x2,i=t.y2,o=t.startArrow,a=t.endArrow;o&&mjt(this,t,r,i,e,n),a&&yjt(this,t,e,n,r,i)},e.prototype.isInStrokeOrPath=function(t,e,n,r,i){if(!n||!i)return!1;var o=this.attr();return Hjt(o.x1,o.y1,o.x2,o.y2,i,t,e)},e.prototype.createPath=function(t){var e=this.attr(),n=e.x1,r=e.y1,i=e.x2,o=e.y2,a=e.startArrow,c=e.endArrow,l={dx:0,dy:0},u={dx:0,dy:0};a&&a.d&&(l=gjt(n,r,i,o,e.startArrow.d)),c&&c.d&&(u=gjt(n,r,i,o,e.endArrow.d)),t.beginPath(),t.moveTo(n+l.dx,r+l.dy),t.lineTo(i-u.dx,o-u.dy)},e.prototype.afterDrawPath=function(t){var e=this.get("startArrowShape"),n=this.get("endArrowShape");e&&e.draw(t),n&&n.draw(t)},e.prototype.getTotalLength=function(){var t=this.attr(),e=t.x1,n=t.y1,r=t.x2,i=t.y2;return Ujt.x1.length(e,n,r,i)},e.prototype.getPoint=function(t){var e=this.attr(),n=e.x1,r=e.y1,i=e.x2,o=e.y2;return Ujt.x1.pointAt(n,r,i,o,t)},e}(Zjt),Vjt=Wjt,Gjt={circle:function(t,e,n){return[["M",t-n,e],["A",n,n,0,1,0,t+n,e],["A",n,n,0,1,0,t-n,e]]},square:function(t,e,n){return[["M",t-n,e-n],["L",t+n,e-n],["L",t+n,e+n],["L",t-n,e+n],["Z"]]},diamond:function(t,e,n){return[["M",t-n,e],["L",t,e-n],["L",t+n,e],["L",t,e+n],["Z"]]},triangle:function(t,e,n){var r=n*Math.sin(1/3*Math.PI);return[["M",t-n,e+r],["L",t,e-r],["L",t+n,e+r],["Z"]]},"triangle-down":function(t,e,n){var r=n*Math.sin(1/3*Math.PI);return[["M",t-n,e-r],["L",t+n,e-r],["L",t,e+r],["Z"]]}},Xjt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.initAttrs=function(t){this._resetParamsCache()},e.prototype._resetParamsCache=function(){this.set("paramsCache",{})},e.prototype.onAttrChange=function(e,n,r){t.prototype.onAttrChange.call(this,e,n,r),-1!==["symbol","x","y","r","radius"].indexOf(e)&&this._resetParamsCache()},e.prototype.isOnlyHitBox=function(){return!0},e.prototype._getR=function(t){return(0,tOt.UM)(t.r)?t.radius:t.r},e.prototype._getPath=function(){var t,n,r=this.attr(),i=r.x,o=r.y,a=r.symbol||"circle",c=this._getR(r);if((0,tOt.mf)(a))n=(t=a)(i,o,c),n=(0,L_t.wb)(n);else{if(!(t=e.Symbols[a]))return console.warn(a+" marker is not supported."),null;n=t(i,o,c)}return n},e.prototype.createPath=function(t){Mjt(this,t,{path:this._getPath()},this.get("paramsCache"))},e.Symbols=Gjt,e}(Zjt),qjt=Xjt;function Yjt(t,e,n){var r=(0,kOt.getOffScreenContext)();return t.createPath(r),r.isPointInPath(e,n)}var $jt=1e-6;function Kjt(t){return Math.abs(t)<$jt?0:t<0?-1:1}function Jjt(t,e,n){return(n[0]-t[0])*(e[1]-t[1])==(e[0]-t[0])*(n[1]-t[1])&&Math.min(t[0],e[0])<=n[0]&&n[0]<=Math.max(t[0],e[0])&&Math.min(t[1],e[1])<=n[1]&&n[1]<=Math.max(t[1],e[1])}function Qjt(t,e,n){var r=!1,i=t.length;if(i<=2)return!1;for(var o=0;o0!=Kjt(c[1]-n)>0&&Kjt(e-(n-a[1])*(a[0]-c[0])/(a[1]-c[1])-a[0])<0&&(r=!r)}return r}function tIt(t,e,n,r,i,o,a,c){var l=(Math.atan2(c-e,a-t)+2*Math.PI)%(2*Math.PI);if(li)return!1;var u={x:t+n*Math.cos(l),y:e+n*Math.sin(l)};return $Ft(u.x,u.y,a,c)<=o/2}var eIt=rAt.vs;var nIt=(0,QCt.pi)({hasArc:function(t){for(var e=!1,n=t.length,r=0;r0&&r.push(i),{polygons:n,polylines:r}},isPointInStroke:function(t,e,n,r,i){for(var o=!1,a=e/2,c=0;cm?g:m;eAt(w,w,eIt(null,[["t",-p,-v],["r",-x],["s",1/(g>m?1:g/m),1/(g>m?m/g:1)]])),o=tIt(0,0,S,y,b,e,w[0],w[1])}if(o)break}}return o}},kOt.PathUtil);function rIt(t,e,n){for(var r=!1,i=0;i=r[0]&&t<=r[1]&&(e=(t-r[0])/(r[1]-r[0]),n=i)}));var o=i[n];if((0,tOt.UM)(o)||(0,tOt.UM)(n))return null;var a=o.length,c=i[n+1];return Ujt.Ll.pointAt(o[a-2],o[a-1],c[1],c[2],c[3],c[4],c[5],c[6],e)},e.prototype._calculateCurve=function(){var t=this.attr().path;this.set("curve",nIt.pathToCurve(t))},e.prototype._setTcache=function(){var t,e,n,r,i=0,o=0,a=[],c=this.get("curve");c&&((0,tOt.S6)(c,(function(t,e){n=c[e+1],r=t.length,n&&(i+=Ujt.Ll.length(t[r-2],t[r-1],n[1],n[2],n[3],n[4],n[5],n[6])||0)})),this.set("totalLength",i),0!==i?((0,tOt.S6)(c,(function(l,u){n=c[u+1],r=l.length,n&&((t=[])[0]=o/i,e=Ujt.Ll.length(l[r-2],l[r-1],n[1],n[2],n[3],n[4],n[5],n[6]),o+=e||0,t[1]=o/i,a.push(t))})),this.set("tCache",a)):this.set("tCache",[]))},e.prototype.getStartTangent=function(){var t,e=this.getSegments();if(e.length>1){var n=e[0].currentPoint,r=e[1].currentPoint,i=e[1].startTangent;t=[],i?(t.push([n[0]-i[0],n[1]-i[1]]),t.push([n[0],n[1]])):(t.push([r[0],r[1]]),t.push([n[0],n[1]]))}return t},e.prototype.getEndTangent=function(){var t,e=this.getSegments(),n=e.length;if(n>1){var r=e[n-2].currentPoint,i=e[n-1].currentPoint,o=e[n-1].endTangent;t=[],o?(t.push([i[0]-o[0],i[1]-o[1]]),t.push([i[0],i[1]])):(t.push([r[0],r[1]]),t.push([i[0],i[1]]))}return t},e}(Zjt),oIt=iIt;function aIt(t,e,n,r,i){var o=t.length;if(o<2)return!1;for(var a=0;a=r[0]&&t<=r[1]&&(e=(t-r[0])/(r[1]-r[0]),n=i)})),Ujt.x1.pointAt(r[n][0],r[n][1],r[n+1][0],r[n+1][1],e)},e.prototype._setTcache=function(){var t=this.attr().points;if(t&&0!==t.length){var e=this.getTotalLength();if(!(e<=0)){var n,r,i=0,o=[];(0,tOt.S6)(t,(function(a,c){t[c+1]&&((n=[])[0]=i/e,r=Ujt.x1.length(a[0],a[1],t[c+1][0],t[c+1][1]),i+=r,n[1]=i/e,o.push(n))})),this.set("tCache",o)}}},e.prototype.getStartTangent=function(){var t=this.attr().points,e=[];return e.push([t[1][0],t[1][1]]),e.push([t[0][0],t[0][1]]),e},e.prototype.getEndTangent=function(){var t=this.attr().points,e=t.length-1,n=[];return n.push([t[e-1][0],t[e-1][1]]),n.push([t[e][0],t[e][1]]),n},e}(Zjt),sIt=uIt;var fIt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultAttrs=function(){var e=t.prototype.getDefaultAttrs.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{x:0,y:0,width:0,height:0,radius:0})},e.prototype.isInStrokeOrPath=function(t,e,n,r,i){var o=this.attr(),a=o.x,c=o.y,l=o.width,u=o.height,s=o.radius;if(s){var f=!1;return n&&(f=function(t,e,n,r,i,o,a,c){return Hjt(t+i,e,t+n-i,e,o,a,c)||Hjt(t+n,e+i,t+n,e+r-i,o,a,c)||Hjt(t+n-i,e+r,t+i,e+r,o,a,c)||Hjt(t,e+r-i,t,e+i,o,a,c)||tIt(t+n-i,e+i,i,1.5*Math.PI,2*Math.PI,o,a,c)||tIt(t+n-i,e+r-i,i,0,.5*Math.PI,o,a,c)||tIt(t+i,e+r-i,i,.5*Math.PI,Math.PI,o,a,c)||tIt(t+i,e+i,i,Math.PI,1.5*Math.PI,o,a,c)}(a,c,l,u,s,i,t,e)),!f&&r&&(f=Yjt(this,t,e)),f}var h=i/2;return r&&n?KFt(a-h,c-h,l+h,u+h,t,e):r?KFt(a,c,l,u,t,e):n?function(t,e,n,r,i,o,a){var c=i/2;return KFt(t-c,e-c,n,i,o,a)||KFt(t+n-c,e-c,i,r,o,a)||KFt(t+c,e+r-c,n,i,o,a)||KFt(t-c,e+c,i,r,o,a)}(a,c,l,u,i,t,e):void 0},e.prototype.createPath=function(t){var e=this.attr(),n=e.x,r=e.y,i=e.width,o=e.height,a=e.radius;if(t.beginPath(),0===a)t.rect(n,r,i,o);else{var c=function(t){var e=0,n=0,r=0,i=0;return(0,tOt.kJ)(t)?1===t.length?e=n=r=i=t[0]:2===t.length?(e=r=t[0],n=i=t[1]):3===t.length?(e=t[0],n=i=t[1],r=t[2]):(e=t[0],n=t[1],r=t[2],i=t[3]):e=n=r=i=t,[e,n,r,i]}(a),l=c[0],u=c[1],s=c[2],f=c[3];t.moveTo(n+l,r),t.lineTo(n+i-u,r),0!==u&&t.arc(n+i-u,r+u,u,-Math.PI/2,0),t.lineTo(n+i,r+o-s),0!==s&&t.arc(n+i-s,r+o-s,s,0,Math.PI/2),t.lineTo(n+f,r+o),0!==f&&t.arc(n+f,r+o-f,f,Math.PI/2,Math.PI),t.lineTo(n,r+l),0!==l&&t.arc(n+l,r+l,l,Math.PI,1.5*Math.PI),t.closePath()}},e}(Zjt),hIt=fIt,dIt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultAttrs=function(){var e=t.prototype.getDefaultAttrs.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{x:0,y:0,text:null,fontSize:12,fontFamily:"sans-serif",fontStyle:"normal",fontWeight:"normal",fontVariant:"normal",textAlign:"start",textBaseline:"bottom"})},e.prototype.isOnlyHitBox=function(){return!0},e.prototype.initAttrs=function(t){this._assembleFont(),t.text&&this._setText(t.text)},e.prototype._assembleFont=function(){var t=this.attrs;t.font=(0,kOt.assembleFont)(t)},e.prototype._setText=function(t){var e=null;(0,tOt.HD)(t)&&-1!==t.indexOf("\n")&&(e=t.split("\n")),this.set("textArr",e)},e.prototype.onAttrChange=function(e,n,r){t.prototype.onAttrChange.call(this,e,n,r),e.startsWith("font")&&this._assembleFont(),"text"===e&&this._setText(n)},e.prototype._getSpaceingY=function(){var t=this.attrs,e=t.lineHeight,n=1*t.fontSize;return e?e-n:.14*n},e.prototype._drawTextArr=function(t,e,n){var r,i=this.attrs,o=i.textBaseline,a=i.x,c=i.y,l=1*i.fontSize,u=this._getSpaceingY(),s=(0,kOt.getTextHeight)(i.text,i.fontSize,i.lineHeight);(0,tOt.S6)(e,(function(e,i){r=c+i*(u+l)-s+l,"middle"===o&&(r+=s-l-(s-l)/2),"top"===o&&(r+=s-l),(0,tOt.UM)(e)||(n?t.fillText(e,a,r):t.strokeText(e,a,r))}))},e.prototype._drawText=function(t,e){var n=this.attr(),r=n.x,i=n.y,o=this.get("textArr");if(o)this._drawTextArr(t,o,e);else{var a=n.text;(0,tOt.UM)(a)||(e?t.fillText(a,r,i):t.strokeText(a,r,i))}},e.prototype.strokeAndFill=function(t){var e=this.attrs,n=e.lineWidth,r=e.opacity,i=e.strokeOpacity,o=e.fillOpacity;this.isStroke()&&n>0&&((0,tOt.UM)(i)||1===i||(t.globalAlpha=r),this.stroke(t)),this.isFill()&&((0,tOt.UM)(o)||1===o?this.fill(t):(t.globalAlpha=o,this.fill(t),t.globalAlpha=r)),this.afterDrawPath(t)},e.prototype.fill=function(t){this._drawText(t,!0)},e.prototype.stroke=function(t){this._drawText(t,!1)},e}(Zjt),pIt=dIt;function vIt(t,e,n){var r=t.getTotalMatrix();if(r){var i=function(t,e){if(e){var n=(0,kOt.invert)(e);return(0,kOt.multiplyVec2)(n,t)}return t}([e,n,1],r);return[i[0],i[1]]}return[e,n]}function gIt(t,e,n){if(t.isCanvas&&t.isCanvas())return!0;if(!(0,kOt.isAllowCapture)(t)||!1===t.cfg.isInView)return!1;if(t.cfg.clipShape){var r=vIt(t,e,n),i=r[0],o=r[1];if(t.isClipped(i,o))return!1}var a=t.cfg.cacheCanvasBBox||t.getCanvasBBox();return e>=a.minX&&e<=a.maxX&&n>=a.minY&&n<=a.maxY}function mIt(t,e,n){if(!gIt(t,e,n))return null;for(var r=null,i=t.getChildren(),o=i.length-1;o>=0;o--){var a=i[o];if(a.isGroup())r=mIt(a,e,n);else if(gIt(a,e,n)){var c=a,l=vIt(a,e,n),u=l[0],s=l[1];c.isInShape(u,s)&&(r=a)}if(r)break}return r}var yIt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getDefaultCfg=function(){var e=t.prototype.getDefaultCfg.call(this);return e.renderer="canvas",e.autoDraw=!0,e.localRefresh=!0,e.refreshElements=[],e.clipView=!0,e.quickHit=!1,e},e.prototype.onCanvasChange=function(t){"attr"!==t&&"sort"!==t&&"changeSize"!==t||(this.set("refreshElements",[this]),this.draw())},e.prototype.getShapeBase=function(){return A},e.prototype.getGroupBase=function(){return Djt},e.prototype.getPixelRatio=function(){var t=this.get("pixelRatio")||(window?window.devicePixelRatio:1);return t>=1?Math.ceil(t):1},e.prototype.getViewRange=function(){return{minX:0,minY:0,maxX:this.cfg.width,maxY:this.cfg.height}},e.prototype.createDom=function(){var t=document.createElement("canvas"),e=t.getContext("2d");return this.set("context",e),t},e.prototype.setDOMSize=function(e,n){t.prototype.setDOMSize.call(this,e,n);var r=this.get("context"),i=this.get("el"),o=this.getPixelRatio();i.width=o*e,i.height=o*n,o>1&&r.scale(o,o)},e.prototype.clear=function(){t.prototype.clear.call(this),this._clearFrame();var e=this.get("context"),n=this.get("el");e.clearRect(0,0,n.width,n.height)},e.prototype.getShape=function(e,n){return this.get("quickHit")?mIt(this,e,n):t.prototype.getShape.call(this,e,n,null)},e.prototype._getRefreshRegion=function(){var t,e=this.get("refreshElements"),n=this.getViewRange();e.length&&e[0]===this?t=n:(t=function(t){if(!t.length)return null;var e=[],n=[],r=[],i=[];return(0,tOt.S6)(t,(function(t){var o=Pjt(t);o&&(e.push(o.minX),n.push(o.minY),r.push(o.maxX),i.push(o.maxY))})),{minX:(0,tOt.VV)(e),minY:(0,tOt.VV)(n),maxX:(0,tOt.Fp)(r),maxY:(0,tOt.Fp)(i)}}(e),t&&(t.minX=Math.floor(t.minX),t.minY=Math.floor(t.minY),t.maxX=Math.ceil(t.maxX),t.maxY=Math.ceil(t.maxY),t.maxY+=1,this.get("clipView")&&(t=function(t,e){return t&&e&&JFt(t,e)?{minX:Math.max(t.minX,e.minX),minY:Math.max(t.minY,e.minY),maxX:Math.min(t.maxX,e.maxX),maxY:Math.min(t.maxY,e.maxY)}:null}(t,n))));return t},e.prototype.refreshElement=function(t){this.get("refreshElements").push(t)},e.prototype._clearFrame=function(){var t=this.get("drawFrame");t&&((0,tOt.VS)(t),this.set("drawFrame",null),this.set("refreshElements",[]))},e.prototype.draw=function(){var t=this.get("drawFrame");this.get("autoDraw")&&t||this._startDraw()},e.prototype._drawAll=function(){var t=this.get("context"),e=this.get("el"),n=this.getChildren();t.clearRect(0,0,e.width,e.height),xjt(t,this),wjt(t,n),this.set("refreshElements",[])},e.prototype._drawRegion=function(){var t=this.get("context"),e=this.get("refreshElements"),n=this.getChildren(),r=this._getRefreshRegion();r?(t.clearRect(r.minX,r.minY,r.maxX-r.minX,r.maxY-r.minY),t.save(),t.beginPath(),t.rect(r.minX,r.minY,r.maxX-r.minX,r.maxY-r.minY),t.clip(),xjt(t,this),Sjt(this,n,r),wjt(t,n,r),t.restore()):e.length&&Cjt(e),(0,tOt.S6)(e,(function(t){t.get("hasChanged")&&t.set("hasChanged",!1)})),this.set("refreshElements",[])},e.prototype._startDraw=function(){var t=this,e=this.get("drawFrame");e||(e=(0,tOt.U7)((function(){t.get("localRefresh")?t._drawRegion():t._drawAll(),t.set("drawFrame",null)})),this.set("drawFrame",e))},e.prototype.skipDraw=function(){},e.prototype.removeDom=function(){var t=this.get("el");t.width=0,t.height=0,t.parentNode.removeChild(t)},e}(kOt.AbstractCanvas),bIt=yIt,xIt="0.5.12",wIt={rect:"path",circle:"circle",line:"line",path:"path",marker:"path",text:"text",polyline:"polyline",polygon:"polygon",image:"image",ellipse:"ellipse",dom:"foreignObject"},SIt={opacity:"opacity",fillStyle:"fill",fill:"fill",fillOpacity:"fill-opacity",strokeStyle:"stroke",strokeOpacity:"stroke-opacity",stroke:"stroke",x:"x",y:"y",r:"r",rx:"rx",ry:"ry",width:"width",height:"height",x1:"x1",x2:"x2",y1:"y1",y2:"y2",lineCap:"stroke-linecap",lineJoin:"stroke-linejoin",lineWidth:"stroke-width",lineDash:"stroke-dasharray",lineDashOffset:"stroke-dashoffset",miterLimit:"stroke-miterlimit",font:"font",fontSize:"font-size",fontStyle:"font-style",fontVariant:"font-variant",fontWeight:"font-weight",fontFamily:"font-family",startArrow:"marker-start",endArrow:"marker-end",path:"d",class:"class",id:"id",style:"style",preserveAspectRatio:"preserveAspectRatio"};function kIt(t){return document.createElementNS("http://www.w3.org/2000/svg",t)}function CIt(t){var e=wIt[t.type],n=t.getParent();if(!e)throw new Error("the type "+t.type+" is not supported by svg");var r=kIt(e);if(t.get("id")&&(r.id=t.get("id")),t.set("el",r),t.set("attrs",{}),n){var i=n.get("el");i||(i=n.createDom(),n.set("el",i)),i.appendChild(r)}return r}function OIt(t,e){var n=t.get("el"),r=(0,tOt.qo)(n.children).sort(e),i=document.createDocumentFragment();r.forEach((function(t){i.appendChild(t)})),n.appendChild(i)}function EIt(t){var e=t.attr().matrix;if(e){for(var n=t.cfg.el,r=[],i=0;i<9;i+=3)r.push(e[i]+","+e[i+1]);-1===(r=r.join(",")).indexOf("NaN")?n.setAttribute("transform","matrix("+r+")"):console.warn("invalid matrix:",e)}}function MIt(t,e){var n=t.getClip(),r=t.get("el");if(n){if(n&&!r.hasAttribute("clip-path")){CIt(n),n.createPath(e);var i=e.addClip(n);r.setAttribute("clip-path","url(#"+i+")")}}else r.removeAttribute("clip-path")}function AIt(t,e){e.forEach((function(e){e.draw(t)}))}function PIt(t,e){var n=t.get("canvas");if(n&&n.get("autoDraw")){var r=n.get("context"),i=t.getParent(),o=i?i.getChildren():[n],a=t.get("el");if("remove"===e)if(t.get("isClipShape")){var c=a&&a.parentNode,l=c&&c.parentNode;c&&l&&l.removeChild(c)}else a&&a.parentNode&&a.parentNode.removeChild(a);else if("show"===e)a.setAttribute("visibility","visible");else if("hide"===e)a.setAttribute("visibility","hidden");else if("zIndex"===e)!function(t,e){var n=t.parentNode,r=Array.from(n.childNodes).filter((function(t){return 1===t.nodeType&&"defs"!==t.nodeName.toLowerCase()})),i=r[e],o=r.indexOf(t);if(i){if(o>e)n.insertBefore(t,i);else if(o0&&(e?"stroke"in n?this._setColor(t,"stroke",o):"strokeStyle"in n&&this._setColor(t,"stroke",a):this._setColor(t,"stroke",o||a),l&&s.setAttribute(SIt.strokeOpacity,l),u&&s.setAttribute(SIt.lineWidth,u))},e.prototype._setColor=function(t,e,n){var r=this.get("el");if(n)if(n=n.trim(),/^[r,R,L,l]{1}[\s]*\(/.test(n))(i=t.find("gradient",n))||(i=t.addGradient(n)),r.setAttribute(SIt[e],"url(#"+i+")");else if(/^[p,P]{1}[\s]*\(/.test(n)){var i;(i=t.find("pattern",n))||(i=t.addPattern(n)),r.setAttribute(SIt[e],"url(#"+i+")")}else r.setAttribute(SIt[e],n);else r.setAttribute(SIt[e],"none")},e.prototype.shadow=function(t,e){var n=this.attr(),r=e||n,i=r.shadowOffsetX,o=r.shadowOffsetY,a=r.shadowBlur,c=r.shadowColor;(i||o||a||c)&&function(t,e){var n=t.cfg.el,r=t.attr(),i={dx:r.shadowOffsetX,dy:r.shadowOffsetY,blur:r.shadowBlur,color:r.shadowColor};if(i.dx||i.dy||i.blur||i.color){var o=e.find("filter",i);o||(o=e.addShadow(i)),n.setAttribute("filter","url(#"+o+")")}else n.removeAttribute("filter")}(this,t)},e.prototype.transform=function(t){var e=this.attr();(t||e).matrix&&EIt(this)},e.prototype.isInShape=function(t,e){return this.isPointInPath(t,e)},e.prototype.isPointInPath=function(t,e){var n=this.get("el"),r=this.get("canvas").get("el").getBoundingClientRect(),i=t+r.left,o=e+r.top,a=document.elementFromPoint(i,o);return!(!a||!a.isEqualNode(n))},e.prototype.getHitLineWidth=function(){var t=this.attrs,e=t.lineWidth,n=t.lineAppendWidth;return this.isStroke()?e+n:0},e}(kOt.AbstractShape),ZIt=TIt,FIt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="circle",e.canFill=!0,e.canStroke=!0,e}return(0,QCt.ZT)(e,t),e.prototype.getDefaultAttrs=function(){var e=t.prototype.getDefaultAttrs.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{x:0,y:0,r:0})},e.prototype.createPath=function(t,e){var n=this.attr(),r=this.get("el");(0,tOt.S6)(e||n,(function(t,e){"x"===e||"y"===e?r.setAttribute("c"+e,t):SIt[e]&&r.setAttribute(SIt[e],t)}))},e}(ZIt),jIt=FIt,IIt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="dom",e.canFill=!1,e.canStroke=!1,e}return(0,QCt.ZT)(e,t),e.prototype.createPath=function(t,e){var n=this.attr(),r=this.get("el");if((0,tOt.S6)(e||n,(function(t,e){SIt[e]&&r.setAttribute(SIt[e],t)})),"function"==typeof n.html){var i=n.html.call(this,n);if(i instanceof Element||i instanceof HTMLDocument){for(var o=r.childNodes,a=o.length-1;a>=0;a--)r.removeChild(o[a]);r.appendChild(i)}else r.innerHTML=i}else r.innerHTML=n.html},e}(ZIt),RIt=IIt,LIt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="ellipse",e.canFill=!0,e.canStroke=!0,e}return(0,QCt.ZT)(e,t),e.prototype.getDefaultAttrs=function(){var e=t.prototype.getDefaultAttrs.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{x:0,y:0,rx:0,ry:0})},e.prototype.createPath=function(t,e){var n=this.attr(),r=this.get("el");(0,tOt.S6)(e||n,(function(t,e){"x"===e||"y"===e?r.setAttribute("c"+e,t):SIt[e]&&r.setAttribute(SIt[e],t)}))},e}(ZIt),NIt=LIt,BIt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="image",e.canFill=!1,e.canStroke=!1,e}return(0,QCt.ZT)(e,t),e.prototype.getDefaultAttrs=function(){var e=t.prototype.getDefaultAttrs.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{x:0,y:0,width:0,height:0})},e.prototype.createPath=function(t,e){var n=this,r=this.attr(),i=this.get("el");(0,tOt.S6)(e||r,(function(t,e){"img"===e?n._setImage(r.img):SIt[e]&&i.setAttribute(SIt[e],t)}))},e.prototype.setAttr=function(t,e){this.attrs[t]=e,"img"===t&&this._setImage(e)},e.prototype._setImage=function(t){var e=this.attr(),n=this.get("el");if((0,tOt.HD)(t))n.setAttribute("href",t);else if(t instanceof window.Image)e.width||(n.setAttribute("width",t.width),this.attr("width",t.width)),e.height||(n.setAttribute("height",t.height),this.attr("height",t.height)),n.setAttribute("href",t.src);else if(t instanceof HTMLElement&&(0,tOt.HD)(t.nodeName)&&"CANVAS"===t.nodeName.toUpperCase())n.setAttribute("href",t.toDataURL());else if(t instanceof ImageData){var r=document.createElement("canvas");r.setAttribute("width",""+t.width),r.setAttribute("height",""+t.height),r.getContext("2d").putImageData(t,0,0),e.width||(n.setAttribute("width",""+t.width),this.attr("width",t.width)),e.height||(n.setAttribute("height",""+t.height),this.attr("height",t.height)),n.setAttribute("href",r.toDataURL())}},e}(ZIt),zIt=BIt,UIt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="line",e.canFill=!1,e.canStroke=!0,e}return(0,QCt.ZT)(e,t),e.prototype.getDefaultAttrs=function(){var e=t.prototype.getDefaultAttrs.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{x1:0,y1:0,x2:0,y2:0,startArrow:!1,endArrow:!1})},e.prototype.createPath=function(t,e){var n=this.attr(),r=this.get("el");(0,tOt.S6)(e||n,(function(e,i){if("startArrow"===i||"endArrow"===i)if(e){var o=(0,tOt.Kn)(e)?t.addArrow(n,SIt[i]):t.getDefaultArrow(n,SIt[i]);r.setAttribute(SIt[i],"url(#"+o+")")}else r.removeAttribute(SIt[i]);else SIt[i]&&r.setAttribute(SIt[i],e)}))},e.prototype.getTotalLength=function(){var t=this.attr(),e=t.x1,n=t.y1,r=t.x2,i=t.y2;return Ujt.x1.length(e,n,r,i)},e.prototype.getPoint=function(t){var e=this.attr(),n=e.x1,r=e.y1,i=e.x2,o=e.y2;return Ujt.x1.pointAt(n,r,i,o,t)},e}(ZIt),HIt=UIt,WIt={circle:function(t,e,n){return[["M",t,e],["m",-n,0],["a",n,n,0,1,0,2*n,0],["a",n,n,0,1,0,2*-n,0]]},square:function(t,e,n){return[["M",t-n,e-n],["L",t+n,e-n],["L",t+n,e+n],["L",t-n,e+n],["Z"]]},diamond:function(t,e,n){return[["M",t-n,e],["L",t,e-n],["L",t+n,e],["L",t,e+n],["Z"]]},triangle:function(t,e,n){var r=n*Math.sin(1/3*Math.PI);return[["M",t-n,e+r],["L",t,e-r],["L",t+n,e+r],["z"]]},triangleDown:function(t,e,n){var r=n*Math.sin(1/3*Math.PI);return[["M",t-n,e-r],["L",t+n,e-r],["L",t,e+r],["Z"]]}},VIt={get:function(t){return WIt[t]},register:function(t,e){WIt[t]=e},remove:function(t){delete WIt[t]},getAll:function(){return WIt}},GIt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="marker",e.canFill=!0,e.canStroke=!0,e}return(0,QCt.ZT)(e,t),e.prototype.createPath=function(t){this.get("el").setAttribute("d",this._assembleMarker())},e.prototype._assembleMarker=function(){var t=this._getPath();return(0,tOt.kJ)(t)?t.map((function(t){return t.join(" ")})).join(""):t},e.prototype._getPath=function(){var t,e=this.attr(),n=e.x,r=e.y,i=e.r||e.radius,o=e.symbol||"circle";return(t=(0,tOt.mf)(o)?o:VIt.get(o))?t(n,r,i):(console.warn(t+" symbol is not exist."),null)},e.symbolsFactory=VIt,e}(ZIt),XIt=GIt,qIt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="path",e.canFill=!0,e.canStroke=!0,e}return(0,QCt.ZT)(e,t),e.prototype.getDefaultAttrs=function(){var e=t.prototype.getDefaultAttrs.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{startArrow:!1,endArrow:!1})},e.prototype.createPath=function(t,e){var n=this,r=this.attr(),i=this.get("el");(0,tOt.S6)(e||r,(function(e,o){if("path"===o&&(0,tOt.kJ)(e))i.setAttribute("d",n._formatPath(e));else if("startArrow"===o||"endArrow"===o)if(e){var a=(0,tOt.Kn)(e)?t.addArrow(r,SIt[o]):t.getDefaultArrow(r,SIt[o]);i.setAttribute(SIt[o],"url(#"+a+")")}else i.removeAttribute(SIt[o]);else SIt[o]&&i.setAttribute(SIt[o],e)}))},e.prototype._formatPath=function(t){var e=t.map((function(t){return t.join(" ")})).join("");return~e.indexOf("NaN")?"":e},e.prototype.getTotalLength=function(){var t=this.get("el");return t?t.getTotalLength():null},e.prototype.getPoint=function(t){var e=this.get("el"),n=this.getTotalLength();if(0===n)return null;var r=e?e.getPointAtLength(t*n):null;return r?{x:r.x,y:r.y}:null},e}(ZIt),YIt=qIt,$It=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="polygon",e.canFill=!0,e.canStroke=!0,e}return(0,QCt.ZT)(e,t),e.prototype.createPath=function(t,e){var n=this.attr(),r=this.get("el");(0,tOt.S6)(e||n,(function(t,e){"points"===e&&(0,tOt.kJ)(t)&&t.length>=2?r.setAttribute("points",t.map((function(t){return t[0]+","+t[1]})).join(" ")):SIt[e]&&r.setAttribute(SIt[e],t)}))},e}(ZIt),KIt=$It,JIt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="polyline",e.canFill=!0,e.canStroke=!0,e}return(0,QCt.ZT)(e,t),e.prototype.getDefaultAttrs=function(){var e=t.prototype.getDefaultAttrs.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{startArrow:!1,endArrow:!1})},e.prototype.onAttrChange=function(e,n,r){t.prototype.onAttrChange.call(this,e,n,r),-1!==["points"].indexOf(e)&&this._resetCache()},e.prototype._resetCache=function(){this.set("totalLength",null),this.set("tCache",null)},e.prototype.createPath=function(t,e){var n=this.attr(),r=this.get("el");(0,tOt.S6)(e||n,(function(t,e){"points"===e&&(0,tOt.kJ)(t)&&t.length>=2?r.setAttribute("points",t.map((function(t){return t[0]+","+t[1]})).join(" ")):SIt[e]&&r.setAttribute(SIt[e],t)}))},e.prototype.getTotalLength=function(){var t=this.attr().points,e=this.get("totalLength");return(0,tOt.UM)(e)?(this.set("totalLength",Ujt.aH.length(t)),this.get("totalLength")):e},e.prototype.getPoint=function(t){var e,n,r=this.attr().points,i=this.get("tCache");return i||(this._setTcache(),i=this.get("tCache")),(0,tOt.S6)(i,(function(r,i){t>=r[0]&&t<=r[1]&&(e=(t-r[0])/(r[1]-r[0]),n=i)})),Ujt.x1.pointAt(r[n][0],r[n][1],r[n+1][0],r[n+1][1],e)},e.prototype._setTcache=function(){var t=this.attr().points;if(t&&0!==t.length){var e=this.getTotalLength();if(!(e<=0)){var n,r,i=0,o=[];(0,tOt.S6)(t,(function(a,c){t[c+1]&&((n=[])[0]=i/e,r=Ujt.x1.length(a[0],a[1],t[c+1][0],t[c+1][1]),i+=r,n[1]=i/e,o.push(n))})),this.set("tCache",o)}}},e.prototype.getStartTangent=function(){var t=this.attr().points,e=[];return e.push([t[1][0],t[1][1]]),e.push([t[0][0],t[0][1]]),e},e.prototype.getEndTangent=function(){var t=this.attr().points,e=t.length-1,n=[];return n.push([t[e-1][0],t[e-1][1]]),n.push([t[e][0],t[e][1]]),n},e}(ZIt),QIt=JIt;var tRt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="rect",e.canFill=!0,e.canStroke=!0,e}return(0,QCt.ZT)(e,t),e.prototype.getDefaultAttrs=function(){var e=t.prototype.getDefaultAttrs.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{x:0,y:0,width:0,height:0,radius:0})},e.prototype.createPath=function(t,e){var n=this,r=this.attr(),i=this.get("el"),o=!1,a=["x","y","width","height","radius"];(0,tOt.S6)(e||r,(function(t,e){-1===a.indexOf(e)||o?-1===a.indexOf(e)&&SIt[e]&&i.setAttribute(SIt[e],t):(i.setAttribute("d",n._assembleRect(r)),o=!0)}))},e.prototype._assembleRect=function(t){var e=t.x,n=t.y,r=t.width,i=t.height,o=t.radius;if(!o)return"M "+e+","+n+" l "+r+",0 l 0,"+i+" l"+-r+" 0 z";var a=function(t){var e=0,n=0,r=0,i=0;return(0,tOt.kJ)(t)?1===t.length?e=n=r=i=t[0]:2===t.length?(e=r=t[0],n=i=t[1]):3===t.length?(e=t[0],n=i=t[1],r=t[2]):(e=t[0],n=t[1],r=t[2],i=t[3]):e=n=r=i=t,{r1:e,r2:n,r3:r,r4:i}}(o);return(0,tOt.kJ)(o)?1===o.length?a.r1=a.r2=a.r3=a.r4=o[0]:2===o.length?(a.r1=a.r3=o[0],a.r2=a.r4=o[1]):3===o.length?(a.r1=o[0],a.r2=a.r4=o[1],a.r3=o[2]):(a.r1=o[0],a.r2=o[1],a.r3=o[2],a.r4=o[3]):a.r1=a.r2=a.r3=a.r4=o,[["M "+(e+a.r1)+","+n],["l "+(r-a.r1-a.r2)+",0"],["a "+a.r2+","+a.r2+",0,0,1,"+a.r2+","+a.r2],["l 0,"+(i-a.r2-a.r3)],["a "+a.r3+","+a.r3+",0,0,1,"+-a.r3+","+a.r3],["l "+(a.r3+a.r4-r)+",0"],["a "+a.r4+","+a.r4+",0,0,1,"+-a.r4+","+-a.r4],["l 0,"+(a.r4+a.r1-i)],["a "+a.r1+","+a.r1+",0,0,1,"+a.r1+","+-a.r1],["z"]].join(" ")},e}(ZIt),eRt=tRt,nRt=n(23537),rRt={top:"before-edge",middle:"central",bottom:"after-edge",alphabetic:"baseline",hanging:"hanging"},iRt={top:"text-before-edge",middle:"central",bottom:"text-after-edge",alphabetic:"alphabetic",hanging:"hanging"},oRt={left:"left",start:"left",center:"middle",right:"end",end:"end"},aRt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="text",e.canFill=!0,e.canStroke=!0,e}return(0,QCt.ZT)(e,t),e.prototype.getDefaultAttrs=function(){var e=t.prototype.getDefaultAttrs.call(this);return(0,QCt.pi)((0,QCt.pi)({},e),{x:0,y:0,text:null,fontSize:12,fontFamily:"sans-serif",fontStyle:"normal",fontWeight:"normal",fontVariant:"normal",textAlign:"start",textBaseline:"bottom"})},e.prototype.createPath=function(t,e){var n=this,r=this.attr(),i=this.get("el");this._setFont(),(0,tOt.S6)(e||r,(function(t,e){"text"===e?n._setText(""+t):"matrix"===e&&t?EIt(n):SIt[e]&&i.setAttribute(SIt[e],t)})),i.setAttribute("paint-order","stroke"),i.setAttribute("style","stroke-linecap:butt; stroke-linejoin:miter;")},e.prototype._setFont=function(){var t=this.get("el"),e=this.attr(),n=e.textBaseline,r=e.textAlign,i=(0,nRt.qY)();i&&"firefox"===i.name?t.setAttribute("dominant-baseline",iRt[n]||"alphabetic"):t.setAttribute("alignment-baseline",rRt[n]||"baseline"),t.setAttribute("text-anchor",oRt[r]||"left")},e.prototype._setText=function(t){var e=this.get("el"),n=this.attr(),r=n.x,i=n.textBaseline,o=void 0===i?"bottom":i;if(t)if(~t.indexOf("\n")){var a=t.split("\n"),c=a.length-1,l="";(0,tOt.S6)(a,(function(t,e){0===e?"alphabetic"===o?l+=''+t+"":"top"===o?l+=''+t+"":"middle"===o?l+=''+t+"":"bottom"===o?l+=''+t+"":"hanging"===o&&(l+=''+t+""):l+=''+t+""})),e.innerHTML=l}else e.innerHTML=t;else e.innerHTML=""},e}(ZIt),cRt=aRt,lRt=/^l\s*\(\s*([\d.]+)\s*\)\s*(.*)/i,uRt=/^r\s*\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)\s*\)\s*(.*)/i,sRt=/[\d.]+:(#[^\s]+|[^)]+\))/gi;function fRt(t){var e=t.match(sRt);if(!e)return"";var n="";return e.sort((function(t,e){return t=t.split(":"),e=e.split(":"),Number(t[0])-Number(e[0])})),(0,tOt.S6)(e,(function(t){t=t.split(":"),n+=''})),n}var hRt=function(){function t(t){this.cfg={};var e=null,n=(0,tOt.EL)("gradient_");return"l"===t.toLowerCase()[0]?function(t,e){var n,r,i=lRt.exec(t),o=(0,tOt.wQ)((0,tOt.c$)(parseFloat(i[1])),2*Math.PI),a=i[2];o>=0&&o<.5*Math.PI?(n={x:0,y:0},r={x:1,y:1}):.5*Math.PI<=o&&o';e.innerHTML=n},t}(),mRt=gRt,yRt=function(){function t(t,e){this.cfg={};var n=kIt("marker"),r=(0,tOt.EL)("marker_");n.setAttribute("id",r);var i=kIt("path");i.setAttribute("stroke",t.stroke||"none"),i.setAttribute("fill",t.fill||"none"),n.appendChild(i),n.setAttribute("overflow","visible"),n.setAttribute("orient","auto-start-reverse"),this.el=n,this.child=i,this.id=r;var o=t["marker-start"===e?"startArrow":"endArrow"];return this.stroke=t.stroke||"#000",!0===o?this._setDefaultPath(e,i):(this.cfg=o,this._setMarker(t.lineWidth,i)),this}return t.prototype.match=function(){return!1},t.prototype._setDefaultPath=function(t,e){var n=this.el;e.setAttribute("d","M0,0 L"+10*Math.cos(Math.PI/6)+",5 L0,10"),n.setAttribute("refX",""+10*Math.cos(Math.PI/6)),n.setAttribute("refY","5")},t.prototype._setMarker=function(t,e){var n=this.el,r=this.cfg.path,i=this.cfg.d;(0,tOt.kJ)(r)&&(r=r.map((function(t){return t.join(" ")})).join("")),e.setAttribute("d",r),n.appendChild(e),i&&n.setAttribute("refX",""+i/t)},t.prototype.update=function(t){var e=this.child;e.attr?e.attr("fill",t):e.setAttribute("fill",t)},t}(),bRt=yRt,xRt=function(){function t(t){this.type="clip",this.cfg={};var e=kIt("clipPath");this.el=e,this.id=(0,tOt.EL)("clip_"),e.id=this.id;var n=t.cfg.el;return e.appendChild(n),this.cfg=t,this}return t.prototype.match=function(){return!1},t.prototype.remove=function(){var t=this.el;t.parentNode.removeChild(t)},t}(),wRt=/^p\s*\(\s*([axyn])\s*\)\s*(.*)/i,SRt=function(){function t(t){this.cfg={};var e=kIt("pattern");e.setAttribute("patternUnits","userSpaceOnUse");var n=kIt("image");e.appendChild(n);var r=(0,tOt.EL)("pattern_");e.id=r,this.el=e,this.id=r,this.cfg=t;var i=wRt.exec(t)[2];n.setAttribute("href",i);var o=new Image;function a(){e.setAttribute("width",""+o.width),e.setAttribute("height",""+o.height)}return i.match(/^data:/i)||(o.crossOrigin="Anonymous"),o.src=i,o.complete?a():(o.onload=a,o.src=o.src),this}return t.prototype.match=function(t,e){return this.cfg===e},t}(),kRt=SRt,CRt=function(){function t(t){var e=kIt("defs"),n=(0,tOt.EL)("defs_");e.id=n,t.appendChild(e),this.children=[],this.defaultArrow={},this.el=e,this.canvas=t}return t.prototype.find=function(t,e){for(var n=this.children,r=null,i=0;i0&&(u[0][0]="L")),o=o.concat(u)})),o.push(["Z"])}return o}function TRt(t,e,n,r,i){for(var o=PFt(t,e,!e,"lineWidth"),a=t.connectNulls,c=t.isInCircle,l=EFt(t.points,a,t.showSinglePoint),u=[],s=0,f=l.length;sr&&(r=i),i=e[0]})));var d=this.scales[f];try{for(var p=(0,QCt.XA)(t),v=p.next();!v.done;v=p.next()){var g=v.value,m=this.getDrawCfg(g),y=m.x,b=m.y,x=d.scale(g[dOt][f]);this.drawGrayScaleBlurredCircle(y-c.x,b-l.y,n+r,x,h)}}catch(k){i={error:k}}finally{try{v&&!v.done&&(o=p.return)&&o.call(p)}finally{if(i)throw i.error}}var w=h.getImageData(0,0,u,s);this.clearShadowCanvasCtx(),this.colorize(w),h.putImageData(w,0,0);var S=this.getImageShape();S.attr("x",c.x),S.attr("y",l.y),S.attr("width",u),S.attr("height",s),S.attr("img",h.canvas),S.set("origin",this.getShapeInfo(t))},e.prototype.getDefaultSize=function(){var t=this.getAttribute("position"),e=this.coordinate;return Math.min(e.getWidth()/(4*t.scales[0].ticks.length),e.getHeight()/(4*t.scales[1].ticks.length))},e.prototype.clearShadowCanvasCtx=function(){var t=this.getShadowCanvasCtx();t.clearRect(0,0,t.canvas.width,t.canvas.height)},e.prototype.getShadowCanvasCtx=function(){var t=this.shadowCanvas;return t||(t=document.createElement("canvas"),this.shadowCanvas=t),t.width=this.coordinate.getWidth(),t.height=this.coordinate.getHeight(),t.getContext("2d")},e.prototype.getGrayScaleBlurredCanvas=function(){return this.grayScaleBlurredCanvas||(this.grayScaleBlurredCanvas=document.createElement("canvas")),this.grayScaleBlurredCanvas},e.prototype.drawGrayScaleBlurredCircle=function(t,e,n,r,i){var o=this.getGrayScaleBlurredCanvas();i.globalAlpha=r,i.drawImage(o,t-n,e-n)},e.prototype.colorize=function(t){for(var e=this.getAttribute("color"),n=t.data,r=this.paletteCache,i=3;ie&&(r=e-(n=n?e/(1+r/n):0)),i+o>e&&(o=e-(i=i?e/(1+o/i):0)),[n||0,r||0,i||0,o||0]}function HRt(t,e,n){var r=[];if(n.isRect){var i=n.isTransposed?{x:n.start.x,y:e[0].y}:{x:e[0].x,y:n.start.y},o=n.isTransposed?{x:n.end.x,y:e[2].y}:{x:e[3].x,y:n.end.y},a=(0,tOt.U2)(t,["background","style","radius"]);if(a){var c=n.isTransposed?Math.abs(e[0].y-e[2].y):e[2].x-e[1].x,l=n.isTransposed?n.getWidth():n.getHeight(),u=(0,QCt.CR)(URt(a,Math.min(c,l)),4),s=u[0],f=u[1],h=u[2],d=u[3],p=n.isTransposed&&n.isReflect("y"),v=p?0:1,g=function(t){return p?-t:t};r.push(["M",i.x,o.y+g(s)]),0!==s&&r.push(["A",s,s,0,0,v,i.x+s,o.y]),r.push(["L",o.x-f,o.y]),0!==f&&r.push(["A",f,f,0,0,v,o.x,o.y+g(f)]),r.push(["L",o.x,i.y-g(h)]),0!==h&&r.push(["A",h,h,0,0,v,o.x-h,i.y]),r.push(["L",i.x+d,i.y]),0!==d&&r.push(["A",d,d,0,0,v,i.x,i.y-g(d)])}else r.push(["M",i.x,i.y]),r.push(["L",o.x,i.y]),r.push(["L",o.x,o.y]),r.push(["L",i.x,o.y]),r.push(["L",i.x,i.y]);r.push(["z"])}if(n.isPolar){var m=n.getCenter(),y=fDt(t,n),b=y.startAngle,x=y.endAngle;if("theta"===n.type||n.isTransposed){var w=function(t){return Math.pow(t,2)};s=Math.sqrt(w(m.x-e[0].x)+w(m.y-e[0].y)),f=Math.sqrt(w(m.x-e[2].x)+w(m.y-e[2].y));r=uDt(m.x,m.y,s,n.startAngle,n.endAngle,f)}else r=uDt(m.x,m.y,n.getRadius(),b,x)}return r}function WRt(t,e,n){var r=[];return(0,tOt.UM)(e)?n?r.push(["M",t[0].x,t[0].y],["L",t[1].x,t[1].y],["L",(t[2].x+t[3].x)/2,(t[2].y+t[3].y)/2],["Z"]):r.push(["M",t[0].x,t[0].y],["L",t[1].x,t[1].y],["L",t[2].x,t[2].y],["L",t[3].x,t[3].y],["Z"]):r.push(["M",t[0].x,t[0].y],["L",t[1].x,t[1].y],["L",e[1].x,e[1].y],["L",e[0].x,e[0].y],["Z"]),r}function VRt(t,e){return[e,t]}KZt("interval",{defaultShapeType:"rect",getDefaultPoints:function(t){return BRt(t)}});JZt("interval","rect",{draw:function(t,e){var n,r=PFt(t,!1,!0),i=e,o=null==t?void 0:t.background;if(o){i=e.addGroup({name:"interval-group"});var a=_Ft(t),c=HRt(t,this.parsePoints(t.points),this.coordinate);i.addShape("path",{attrs:(0,QCt.pi)((0,QCt.pi)({},a),{path:c}),capture:!1,zIndex:-1,name:zZt})}n=r.radius&&this.coordinate.isRect?function(t,e,n){var r,i,o,a,c,l,u,s=(0,QCt.CR)((0,QCt.ev)([],(0,QCt.CR)(t),!1),4),f=s[0],h=s[1],d=s[2],p=s[3],v=(0,QCt.CR)("number"==typeof n?Array(4).fill(n):n,4),g=v[0],m=v[1],y=v[2],b=v[3];e.isTransposed&&(h=(r=(0,QCt.CR)(VRt(h,p),2))[0],p=r[1]),e.isReflect("y")&&(f=(i=(0,QCt.CR)(VRt(f,h),2))[0],h=i[1],d=(o=(0,QCt.CR)(VRt(d,p),2))[0],p=o[1]),e.isReflect("x")&&(f=(a=(0,QCt.CR)(VRt(f,p),2))[0],p=a[1],h=(c=(0,QCt.CR)(VRt(h,d),2))[0],d=c[1]);var x=[],w=function(t){return Math.abs(t)};return g=(l=(0,QCt.CR)(URt([g,m,y,b],Math.min(w(p.x-f.x),w(h.y-f.y))).map((function(t){return w(t)})),4))[0],m=l[1],y=l[2],b=l[3],e.isTransposed&&(g=(u=(0,QCt.CR)([b,g,m,y],4))[0],m=u[1],y=u[2],b=u[3]),f.y1){i.sort();var v=function(t,e){var n=t.length,r=t;(0,tOt.HD)(r[0])&&(r=t.map((function(t){return e.translate(t)})));for(var i=r[1]-r[0],o=2;oa&&(i=a)}return i}(i,r);a=(r.max-r.min)/v,i.length>a&&(a=i.length)}var g=r.range,m=1/a,y=1;(n.isPolar?y=n.isTransposed&&a>1?d:p:(r.isLinear&&(m*=g[1]-g[0]),y=h),!(0,tOt.UM)(l)&&l>=0)?m=(1-(a-1)*(l/c))/a:m*=y;if(t.getAdjust("dodge")){var b=function(t,e){if(e){var n=(0,tOt.xH)(t);return(0,tOt.I)(n,e).length}return t.length}(o,t.getAdjust("dodge").dodgeBy);if(!(0,tOt.UM)(u)&&u>=0)m=(m-u/c*(b-1))/b;else!(0,tOt.UM)(l)&&l>=0?(m*=y,m/=b):m/=b;m=m>=0?m:0}if(!(0,tOt.UM)(s)&&s>=0){var x=s/c;m>x&&(m=x)}if(!(0,tOt.UM)(f)&&f>=0){var w=f/c;m0&&!(0,tOt.U2)(n,[r,"min"])&&e.change({min:0}),o<=0&&!(0,tOt.U2)(n,[r,"max"])&&e.change({max:0}))}},e.prototype.getDrawCfg=function(e){var n=t.prototype.getDrawCfg.call(this,e);return n.background=this.background,n},e}(iFt),qRt=XRt,YRt=function(t){function e(e){var n=t.call(this,e)||this;n.type="line";var r=e.sortable,i=void 0!==r&&r;return n.sortable=i,n}return(0,QCt.ZT)(e,t),e}(_Rt),$Rt=YRt,KRt=["circle","square","bowtie","diamond","hexagon","triangle","triangle-down"];function JRt(t,e,n,r,i){var o,a,c=PFt(e,i,!i,"r"),l=t.parsePoints(e.points),u=l[0];if(e.isStack)u=l[1];else if(l.length>1){var s=n.addGroup();try{for(var f=(0,QCt.XA)(l),h=f.next();!h.done;h=f.next()){var d=h.value;s.addShape({type:"marker",attrs:(0,QCt.pi)((0,QCt.pi)((0,QCt.pi)({},c),{symbol:yFt[r]||r}),d)})}}catch(p){o={error:p}}finally{try{h&&!h.done&&(a=f.return)&&a.call(f)}finally{if(o)throw o.error}}return s}return n.addShape({type:"marker",attrs:(0,QCt.pi)((0,QCt.pi)((0,QCt.pi)({},c),{symbol:yFt[r]||r}),u)})}KZt("point",{defaultShapeType:"hollow-circle",getDefaultPoints:function(t){return DFt(t)}});(0,tOt.S6)(KRt,(function(t){JZt("point","hollow-".concat(t),{draw:function(e,n){return JRt(this,e,n,t,!0)},getMarker:function(e){var n=e.color;return{symbol:yFt[t]||t,style:{r:4.5,stroke:n,fill:null}}}})}));var QRt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="point",e.shapeType="point",e.generatePoints=!0,e}return(0,QCt.ZT)(e,t),e.prototype.getDrawCfg=function(e){var n=t.prototype.getDrawCfg.call(this,e);return(0,QCt.pi)((0,QCt.pi)({},n),{isStack:!!this.getAdjust("stack")})},e}(iFt),tLt=QRt;KZt("polygon",{defaultShapeType:"polygon",getDefaultPoints:function(t){var e=[];return(0,tOt.S6)(t.x,(function(n,r){var i=t.y[r];e.push({x:n,y:i})})),e}});JZt("polygon","polygon",{draw:function(t,e){if(!(0,tOt.xb)(t.points)){var n=PFt(t,!0,!0),r=this.parsePath(function(t){for(var e=t[0],n=1,r=[["M",e.x,e.y]];n2?"weight":"normal";if(t.isInCircle){var a={x:0,y:1};return"normal"===o?n=function(t,e,n){var r=lLt(e,n),i=[["M",t.x,t.y]];return i.push(r),i}(i[0],i[1],a):(r.fill=r.stroke,n=function(t,e){var n=lLt(t[1],e),r=lLt(t[3],e),i=[["M",t[0].x,t[0].y]];return i.push(r),i.push(["L",t[3].x,t[3].y]),i.push(["L",t[2].x,t[2].y]),i.push(n),i.push(["L",t[1].x,t[1].y]),i.push(["L",t[0].x,t[0].y]),i.push(["Z"]),i}(i,a)),n=this.parsePath(n),e.addShape("path",{attrs:(0,QCt.pi)((0,QCt.pi)({},r),{path:n})})}if("normal"===o)return n=sDt(((i=this.parsePoints(i))[1].x+i[0].x)/2,i[0].y,Math.abs(i[1].x-i[0].x)/2,Math.PI,2*Math.PI),e.addShape("path",{attrs:(0,QCt.pi)((0,QCt.pi)({},r),{path:n})});var c=cLt(i[1],i[3]),l=cLt(i[2],i[0]);return n=[["M",i[0].x,i[0].y],["L",i[1].x,i[1].y],c,["L",i[3].x,i[3].y],["L",i[2].x,i[2].y],l,["Z"]],n=this.parsePath(n),r.fill=r.stroke,e.addShape("path",{attrs:(0,QCt.pi)((0,QCt.pi)({},r),{path:n})})},getMarker:function(t){return{symbol:"circle",style:{r:4.5,fill:t.color}}}}),JZt("edge","smooth",{draw:function(t,e){var n=PFt(t,!0,!1,"lineWidth"),r=t.points,i=this.parsePath(function(t,e){var n=cLt(t,e),r=[["M",t.x,t.y]];return r.push(n),r}(r[0],r[1]));return e.addShape("path",{attrs:(0,QCt.pi)((0,QCt.pi)({},n),{path:i})})},getMarker:function(t){return{symbol:"circle",style:{r:4.5,fill:t.color}}}});var uLt=1/3;JZt("edge","vhv",{draw:function(t,e){var n=PFt(t,!0,!1,"lineWidth"),r=t.points,i=this.parsePath(function(t,e){var n=[];n.push({x:t.x,y:t.y*(1-uLt)+e.y*uLt}),n.push({x:e.x,y:t.y*(1-uLt)+e.y*uLt}),n.push(e);var r=[["M",t.x,t.y]];return(0,tOt.S6)(n,(function(t){r.push(["L",t.x,t.y])})),r}(r[0],r[1]));return e.addShape("path",{attrs:(0,QCt.pi)((0,QCt.pi)({},n),{path:i})})},getMarker:function(t){return{symbol:"circle",style:{r:4.5,fill:t.color}}}}),JZt("interval","funnel",{getPoints:function(t){return t.size=2*t.size,BRt(t)},draw:function(t,e){var n=PFt(t,!1,!0),r=this.parsePath(WRt(t.points,t.nextPoints,!1));return e.addShape("path",{attrs:(0,QCt.pi)((0,QCt.pi)({},n),{path:r}),name:"interval"})},getMarker:function(t){return{symbol:"square",style:{r:4,fill:t.color}}}}),JZt("interval","hollow-rect",{draw:function(t,e){var n=PFt(t,!0,!1),r=e,i=null==t?void 0:t.background;if(i){r=e.addGroup();var o=_Ft(t),a=HRt(t,this.parsePoints(t.points),this.coordinate);r.addShape("path",{attrs:(0,QCt.pi)((0,QCt.pi)({},o),{path:a}),capture:!1,zIndex:-1,name:zZt})}var c=this.parsePath(zRt(t.points)),l=r.addShape("path",{attrs:(0,QCt.pi)((0,QCt.pi)({},n),{path:c}),name:"interval"});return i?r:l},getMarker:function(t){var e=t.color;return t.isInPolar?{symbol:"circle",style:{r:4.5,stroke:e,fill:null}}:{symbol:"square",style:{r:4,stroke:e,fill:null}}}}),JZt("interval","line",{getPoints:function(t){return function(t){var e=t.x,n=t.y,r=t.y0;return(0,tOt.kJ)(n)?n.map((function(t,n){return{x:(0,tOt.kJ)(e)?e[n]:e,y:t}})):[{x:e,y:r},{x:e,y:n}]}(t)},draw:function(t,e){var n=PFt(t,!0,!1,"lineWidth"),r=pDt((0,QCt.pi)({},n),["fill"]),i=this.parsePath(zRt(t.points,!1));return e.addShape("path",{attrs:(0,QCt.pi)((0,QCt.pi)({},r),{path:i}),name:"interval"})},getMarker:function(t){return{symbol:function(t,e,n){return[["M",t,e-n],["L",t,e+n]]},style:{r:5,stroke:t.color}}}}),JZt("interval","pyramid",{getPoints:function(t){return t.size=2*t.size,BRt(t)},draw:function(t,e){var n=PFt(t,!1,!0),r=this.parsePath(WRt(t.points,t.nextPoints,!0));return e.addShape("path",{attrs:(0,QCt.pi)((0,QCt.pi)({},n),{path:r}),name:"interval"})},getMarker:function(t){return{symbol:"square",style:{r:4,fill:t.color}}}}),JZt("interval","tick",{getPoints:function(t){return function(t){var e,n,r,i=t.x,o=t.y,a=t.y0,c=t.size;(0,tOt.kJ)(o)?(n=(e=(0,QCt.CR)(o,2))[0],r=e[1]):(n=a,r=o);var l=i+c/2,u=i-c/2;return[{x:i,y:n},{x:i,y:r},{x:u,y:n},{x:l,y:n},{x:u,y:r},{x:l,y:r}]}(t)},draw:function(t,e){var n=PFt(t,!0,!1),r=this.parsePath(function(t){return[["M",t[0].x,t[0].y],["L",t[1].x,t[1].y],["M",t[2].x,t[2].y],["L",t[3].x,t[3].y],["M",t[4].x,t[4].y],["L",t[5].x,t[5].y]]}(t.points));return e.addShape("path",{attrs:(0,QCt.pi)((0,QCt.pi)({},n),{path:r}),name:"interval"})},getMarker:function(t){return{symbol:function(t,e,n){return[["M",t-n/2,e-n],["L",t+n/2,e-n],["M",t,e-n],["L",t,e+n],["M",t-n/2,e+n],["L",t+n/2,e+n]]},style:{r:5,stroke:t.color}}}});var sLt=function(t,e,n){var r,i=t.x,o=t.y,a=e.x,c=e.y;switch(n){case"hv":r=[{x:a,y:o}];break;case"vh":r=[{x:i,y:c}];break;case"hvh":var l=(a+i)/2;r=[{x:l,y:o},{x:l,y:c}];break;case"vhv":var u=(o+c)/2;r=[{x:i,y:u},{x:a,y:u}]}return r};function fLt(t,e){var n=EFt(t.points,t.connectNulls,t.showSinglePoint),r=[];return(0,tOt.S6)(n,(function(t){var n=function(t,e){var n=[];return(0,tOt.S6)(t,(function(r,i){var o=t[i+1];if(n.push(r),o){var a=sLt(r,o,e);n=n.concat(a)}})),n}(t,e);r=r.concat(function(t){return t.map((function(t,e){return 0===e?["M",t.x,t.y]:["L",t.x,t.y]}))}(n))})),(0,QCt.pi)((0,QCt.pi)({},PFt(t,!0,!1,"lineWidth")),{path:r})}function hLt(t){var e=(0,tOt.kJ)(t)?t:[t],n=e[0],r=e[e.length-1],i=e.length>1?e[1]:n;return{min:n,max:r,min1:i,max1:e.length>3?e[3]:r,median:e.length>2?e[2]:i}}function dLt(t,e,n){var r,i=n/2;if((0,tOt.kJ)(e)){var o=hLt(e),a=o.min,c=o.max,l=o.median,u=o.min1,s=t-i,f=t+i;r=[[s,c],[f,c],[t,c],[t,h=o.max1],[s,u],[s,h],[f,h],[f,u],[t,u],[t,a],[s,a],[f,a],[s,l],[f,l]]}else{e=(0,tOt.UM)(e)?.5:e;var h,d=hLt(t),p=(a=d.min,c=d.max,l=d.median,e-i),v=e+i;r=[[a,p],[a,v],[a,e],[u=d.min1,e],[u,p],[u,v],[h=d.max1,v],[h,p],[h,e],[c,e],[c,p],[c,v],[l,p],[l,v]]}return r.map((function(t){return{x:t[0],y:t[1]}}))}function pLt(t){var e=((0,tOt.kJ)(t)?t:[t]).sort((function(t,e){return e-t}));return function(t,e,n){if((0,tOt.HD)(t))return t.padEnd(e,n);if((0,tOt.kJ)(t)){var r=t.length;if(r1){var c=e.addGroup();try{for(var l=(0,QCt.XA)(o),u=l.next();!u.done;u=l.next()){var s=u.value;c.addShape("image",{attrs:{x:s.x-i/2,y:s.y-i,width:i,height:i,img:t.shape[1]}})}}catch(f){n={error:f}}finally{try{u&&!u.done&&(r=l.return)&&r.call(l)}finally{if(n)throw n.error}}return c}return e.addShape("image",{attrs:{x:a.x-i/2,y:a.y-i,width:i,height:i,img:t.shape[1]}})},getMarker:function(t){return{symbol:"circle",style:{r:4.5,fill:t.color}}}}),(0,tOt.S6)(KRt,(function(t){JZt("point",t,{draw:function(e,n){return JRt(this,e,n,t,!1)},getMarker:function(e){var n=e.color;return{symbol:yFt[t]||t,style:{r:4.5,fill:n}}}})})),JZt("schema","box",{getPoints:function(t){return dLt(t.x,t.y,t.size)},draw:function(t,e){var n=PFt(t,!0,!1),r=this.parsePath(function(t){return[["M",t[0].x,t[0].y],["L",t[1].x,t[1].y],["M",t[2].x,t[2].y],["L",t[3].x,t[3].y],["M",t[4].x,t[4].y],["L",t[5].x,t[5].y],["L",t[6].x,t[6].y],["L",t[7].x,t[7].y],["L",t[4].x,t[4].y],["Z"],["M",t[8].x,t[8].y],["L",t[9].x,t[9].y],["M",t[10].x,t[10].y],["L",t[11].x,t[11].y],["M",t[12].x,t[12].y],["L",t[13].x,t[13].y]]}(t.points));return e.addShape("path",{attrs:(0,QCt.pi)((0,QCt.pi)({},n),{path:r,name:"schema"})})},getMarker:function(t){return{symbol:function(t,e,n){var r=dLt(t,[e-6,e-3,e,e+3,e+6],n);return[["M",r[0].x+1,r[0].y],["L",r[1].x-1,r[1].y],["M",r[2].x,r[2].y],["L",r[3].x,r[3].y],["M",r[4].x,r[4].y],["L",r[5].x,r[5].y],["L",r[6].x,r[6].y],["L",r[7].x,r[7].y],["L",r[4].x,r[4].y],["Z"],["M",r[8].x,r[8].y],["L",r[9].x,r[9].y],["M",r[10].x+1,r[10].y],["L",r[11].x-1,r[11].y],["M",r[12].x,r[12].y],["L",r[13].x,r[13].y]]},style:{r:6,lineWidth:1,stroke:t.color}}}}),JZt("schema","candle",{getPoints:function(t){return vLt(t.x,t.y,t.size)},draw:function(t,e){var n=PFt(t,!0,!0),r=this.parsePath(function(t){return[["M",t[0].x,t[0].y],["L",t[1].x,t[1].y],["M",t[2].x,t[2].y],["L",t[3].x,t[3].y],["L",t[4].x,t[4].y],["L",t[5].x,t[5].y],["Z"],["M",t[6].x,t[6].y],["L",t[7].x,t[7].y]]}(t.points));return e.addShape("path",{attrs:(0,QCt.pi)((0,QCt.pi)({},n),{path:r,name:"schema"})})},getMarker:function(t){var e=t.color;return{symbol:function(t,e,n){var r=vLt(t,[e+7.5,e+3,e-3,e-7.5],n);return[["M",r[0].x,r[0].y],["L",r[1].x,r[1].y],["M",r[2].x,r[2].y],["L",r[3].x,r[3].y],["L",r[4].x,r[4].y],["L",r[5].x,r[5].y],["Z"],["M",r[6].x,r[6].y],["L",r[7].x,r[7].y]]},style:{lineWidth:1,stroke:e,fill:e,r:6}}}}),JZt("polygon","square",{draw:function(t,e){if(!(0,tOt.xb)(t.points)){var n=PFt(t,!0,!0),r=this.parsePoints(t.points);return e.addShape("rect",{attrs:(0,QCt.pi)((0,QCt.pi)({},n),gLt(r,t.size)),name:"polygon"})}},getMarker:function(t){return{symbol:"square",style:{r:4,fill:t.color}}}}),JZt("violin","smooth",{draw:function(t,e){var n=PFt(t,!0,!0),r=this.parsePath(AFt(t.points));return e.addShape("path",{attrs:(0,QCt.pi)((0,QCt.pi)({},n),{path:r})})},getMarker:function(t){return{symbol:"circle",style:{stroke:null,r:4,fill:t.color}}}}),JZt("violin","hollow",{draw:function(t,e){var n=PFt(t,!0,!1),r=this.parsePath(MFt(t.points));return e.addShape("path",{attrs:(0,QCt.pi)((0,QCt.pi)({},n),{path:r})})},getMarker:function(t){return{symbol:"circle",style:{r:4,fill:null,stroke:t.color}}}}),JZt("violin","hollow-smooth",{draw:function(t,e){var n=PFt(t,!0,!1),r=this.parsePath(AFt(t.points));return e.addShape("path",{attrs:(0,QCt.pi)((0,QCt.pi)({},n),{path:r})})},getMarker:function(t){return{symbol:"circle",style:{r:4,fill:null,stroke:t.color}}}});var mLt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getLabelValueDir=function(t){var e=t.points;return e[0].y<=e[2].y?1:-1},e.prototype.getLabelOffsetPoint=function(e,n,r,i){var o,a=t.prototype.getLabelOffsetPoint.call(this,e,n,r),c=this.getCoordinate(),l=c.isTransposed?"x":"y",u=this.getLabelValueDir(e.mappingData);return a=(0,QCt.pi)((0,QCt.pi)({},a),((o={})[l]=a[l]*u,o)),c.isReflect("x")&&(a=(0,QCt.pi)((0,QCt.pi)({},a),{x:-1*a.x})),c.isReflect("y")&&(a=(0,QCt.pi)((0,QCt.pi)({},a),{y:-1*a.y})),a},e.prototype.getThemedLabelCfg=function(t){var e=this.geometry,n=this.getDefaultLabelCfg(),r=e.theme;return(0,tOt.b$)({},n,r.labels,"middle"===t.position?{offset:0}:{},t)},e.prototype.setLabelPosition=function(t,e,n,r){var i,o,a,c,l=this.getCoordinate(),u=l.isTransposed,s=e.points,f=l.convert(s[0]),h=l.convert(s[2]),d=this.getLabelValueDir(e),p=(0,tOt.kJ)(e.shape)?e.shape[0]:e.shape;if("funnel"===p||"pyramid"===p){var v=(0,tOt.U2)(e,"nextPoints"),g=(0,tOt.U2)(e,"points");if(v){var m=l.convert(g[0]),y=l.convert(g[1]),b=l.convert(v[0]),x=l.convert(v[1]);u?(i=Math.min(b.y,m.y),a=Math.max(b.y,m.y),o=(y.x+x.x)/2,c=(m.x+b.x)/2):(i=Math.min((y.y+x.y)/2,(m.y+b.y)/2),a=Math.max((y.y+x.y)/2,(m.y+b.y)/2),o=x.x,c=m.x)}else i=Math.min(h.y,f.y),a=Math.max(h.y,f.y),o=h.x,c=f.x}else i=Math.min(h.y,f.y),a=Math.max(h.y,f.y),o=h.x,c=f.x;switch(r){case"right":t.x=o,t.y=(i+a)/2,t.textAlign=(0,tOt.U2)(t,"textAlign",d>0?"left":"right");break;case"left":t.x=c,t.y=(i+a)/2,t.textAlign=(0,tOt.U2)(t,"textAlign",d>0?"left":"right");break;case"bottom":u&&(t.x=(o+c)/2),t.y=a,t.textAlign=(0,tOt.U2)(t,"textAlign","center"),t.textBaseline=(0,tOt.U2)(t,"textBaseline",d>0?"bottom":"top");break;case"middle":u&&(t.x=(o+c)/2),t.y=(i+a)/2,t.textAlign=(0,tOt.U2)(t,"textAlign","center"),t.textBaseline=(0,tOt.U2)(t,"textBaseline","middle");break;case"top":u&&(t.x=(o+c)/2),t.y=i,t.textAlign=(0,tOt.U2)(t,"textAlign","center"),t.textBaseline=(0,tOt.U2)(t,"textBaseline",d>0?"bottom":"top")}},e}(gFt),yLt=mLt,bLt=Math.PI/2,xLt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getLabelOffset=function(t){var e=this.getCoordinate(),n=0;if((0,tOt.hj)(t))n=t;else if((0,tOt.HD)(t)&&-1!==t.indexOf("%")){var r=e.getRadius();e.innerRadius>0&&(r*=1-e.innerRadius),n=.01*parseFloat(t)*r}return n},e.prototype.getLabelItems=function(e){var n=t.prototype.getLabelItems.call(this,e),r=this.geometry.getYScale();return(0,tOt.UI)(n,(function(t){if(t&&r){var e=r.scale((0,tOt.U2)(t.data,r.field));return(0,QCt.pi)((0,QCt.pi)({},t),{percent:e})}return t}))},e.prototype.getLabelAlign=function(t){var e,n=this.getCoordinate();if(t.labelEmit)e=t.angle<=Math.PI/2&&t.angle>=-Math.PI/2?"left":"right";else if(n.isTransposed){var r=n.getCenter(),i=t.offset;e=Math.abs(t.x-r.x)<1?"center":t.angle>Math.PI||t.angle<=0?i>0?"left":"right":i>0?"right":"left"}else e="center";return e},e.prototype.getLabelPoint=function(t,e,n){var r,i=1,o=t.content[n];this.isToMiddle(e)?r=this.getMiddlePoint(e.points):(1===t.content.length&&0===n?n=1:0===n&&(i=-1),r=this.getArcPoint(e,n));var a=t.offset*i,c=this.getPointAngle(r),l=t.labelEmit,u=this.getCirclePoint(c,a,r,l);return 0===u.r?u.content="":(u.content=o,u.angle=c,u.color=e.color),u.rotate=t.autoRotate?this.getLabelRotate(c,a,l):t.rotate,u.start={x:r.x,y:r.y},u},e.prototype.getArcPoint=function(t,e){return void 0===e&&(e=0),(0,tOt.kJ)(t.x)||(0,tOt.kJ)(t.y)?{x:(0,tOt.kJ)(t.x)?t.x[e]:t.x,y:(0,tOt.kJ)(t.y)?t.y[e]:t.y}:{x:t.x,y:t.y}},e.prototype.getPointAngle=function(t){return bDt(this.getCoordinate(),t)},e.prototype.getCirclePoint=function(t,e,n,r){var i=this.getCoordinate(),o=i.getCenter(),a=yDt(i,n);if(0===a)return(0,QCt.pi)((0,QCt.pi)({},o),{r:a});var c=t;i.isTransposed&&a>e&&!r?c=t+2*Math.asin(e/(2*a)):a+=e;return{x:o.x+a*Math.cos(c),y:o.y+a*Math.sin(c),r:a}},e.prototype.getLabelRotate=function(t,e,n){var r=t+bLt;return n&&(r-=bLt),r&&(r>bLt?r-=Math.PI:r<-bLt&&(r+=Math.PI)),r},e.prototype.getMiddlePoint=function(t){var e=this.getCoordinate(),n=t.length,r={x:0,y:0};return(0,tOt.S6)(t,(function(t){r.x+=t.x,r.y+=t.y})),r.x/=n,r.y/=n,r=e.convert(r)},e.prototype.isToMiddle=function(t){return t.x.length>2},e}(gFt),wLt=xLt,SLt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.defaultLayout="distribute",e}return(0,QCt.ZT)(e,t),e.prototype.getDefaultLabelCfg=function(e,n){var r=t.prototype.getDefaultLabelCfg.call(this,e,n);return(0,tOt.b$)({},r,(0,tOt.U2)(this.geometry.theme,"pieLabels",{}))},e.prototype.getLabelOffset=function(e){return t.prototype.getLabelOffset.call(this,e)||0},e.prototype.getLabelRotate=function(t,e,n){var r;return e<0&&((r=t)>Math.PI/2&&(r-=Math.PI),r<-Math.PI/2&&(r+=Math.PI)),r},e.prototype.getLabelAlign=function(t){var e,n=this.getCoordinate().getCenter();return e=t.angle<=Math.PI/2&&t.x>=n.x?"left":"right",t.offset<=0&&(e="right"===e?"left":"right"),e},e.prototype.getArcPoint=function(t){return t},e.prototype.getPointAngle=function(t){var e,n=this.getCoordinate(),r={x:(0,tOt.kJ)(t.x)?t.x[0]:t.x,y:t.y[0]},i={x:(0,tOt.kJ)(t.x)?t.x[1]:t.x,y:t.y[1]},o=bDt(n,r);if(t.points&&t.points[0].y===t.points[1].y)e=o;else{var a=bDt(n,i);o>=a&&(a+=2*Math.PI),e=o+(a-o)/2}return e},e.prototype.getCirclePoint=function(t,e){var n=this.getCoordinate(),r=n.getCenter(),i=n.getRadius()+e;return(0,QCt.pi)((0,QCt.pi)({},lDt(r.x,r.y,i,t)),{angle:t,r:i})},e}(wLt),kLt=SLt;function CLt(t,e,n){var r=t.filter((function(t){return!t.invisible}));r.sort((function(t,e){return t.y-e.y}));var i,o=!0,a=n.minY,c=n.maxY,l=Math.abs(a-c),u=0,s=Number.MIN_VALUE,f=r.map((function(t){return t.y>u&&(u=t.y),t.yl&&(l=u-a);o;)for(f.forEach((function(t){var e=(Math.min.apply(s,t.targets)+Math.max.apply(s,t.targets))/2;t.pos=Math.min(Math.max(s,e-t.size/2),l-t.size),t.pos=Math.max(0,t.pos)})),o=!1,i=f.length;i--;)if(i>0){var h=f[i-1],d=f[i];h.pos+h.size>d.pos&&(h.size+=d.size,h.targets=h.targets.concat(d.targets),h.pos+h.size>l&&(h.pos=l-h.size),f.splice(i,1),o=!0)}i=0,f.forEach((function(t){var n=a+e/2;t.targets.forEach((function(){r[i].y=t.pos+n,n+=e,i++}))}))}var OLt=4;var ELt=4,MLt=4;var ALt=100,PLt=function(){function t(t){void 0===t&&(t={}),this.bitmap={};var e=t.xGap,n=void 0===e?1:e,r=t.yGap,i=void 0===r?8:r;this.xGap=n,this.yGap=i}return t.prototype.hasGap=function(t){for(var e=!0,n=this.bitmap,r=Math.round(t.minX),i=Math.round(t.maxX),o=Math.round(t.minY),a=Math.round(t.maxY),c=r;c<=i;c+=1)if(n[c]){if(c===r||c===i){for(var l=o;l<=a;l++)if(n[c][l]){e=!1;break}}else if(n[c][o]||n[c][a]){e=!1;break}}else n[c]={};return e},t.prototype.fillGap=function(t){for(var e=this.bitmap,n=Math.round(t.minX),r=Math.round(t.maxX),i=Math.round(t.minY),o=Math.round(t.maxY),a=n;a<=r;a+=1)e[a]||(e[a]={});for(a=n;a<=r;a+=this.xGap){for(var c=i;c<=o;c+=this.yGap)e[a][c]=!0;e[a][o]=!0}if(1!==this.yGap)for(a=i;a<=o;a+=1)e[n][a]=!0,e[r][a]=!0;if(1!==this.xGap)for(a=n;a<=r;a+=1)e[a][i]=!0,e[a][o]=!0},t.prototype.destroy=function(){this.bitmap={}},t}();function _Lt(t,e,n,r){var i=t.getCanvasBBox(),o=i.width,a=i.height,c={x:e,y:n,textAlign:"center"};switch(r){case 0:c.y-=a+1,c.x+=1,c.textAlign="left";break;case 1:c.y-=a+1,c.x-=1,c.textAlign="right";break;case 2:c.y+=a+1,c.x-=1,c.textAlign="right";break;case 3:c.y+=a+1,c.x+=1,c.textAlign="left";break;case 5:c.y-=2*a+2;break;case 6:c.y+=2*a+2;break;case 7:c.x+=o+1,c.textAlign="left";break;case 8:c.x-=o+1,c.textAlign="right"}return t.attr(c),t.getCanvasBBox()}function DLt(t){if(t.length>4)return[];var e=function(t,e){return[e.x-t.x,e.y-t.y]};return[e(t[0],t[1]),e(t[1],t[2])]}function TLt(t,e,n){void 0===e&&(e=0),void 0===n&&(n={x:0,y:0});var r=t.x,i=t.y;return{x:(r-n.x)*Math.cos(-e)+(i-n.y)*Math.sin(-e)+n.x,y:(n.x-r)*Math.sin(-e)+(i-n.y)*Math.cos(-e)+n.y}}function ZLt(t){var e=[{x:t.x,y:t.y},{x:t.x+t.width,y:t.y},{x:t.x+t.width,y:t.y+t.height},{x:t.x,y:t.y+t.height}],n=t.rotation;return n?[TLt(e[0],n,e[0]),TLt(e[1],n,e[0]),TLt(e[2],n,e[0]),TLt(e[3],n,e[0])]:e}function FLt(t,e){if(t.length>4)return{min:0,max:0};var n=[];return t.forEach((function(t){n.push(function(t,e){return(t[0]||0)*(e[0]||0)+(t[1]||0)*(e[1]||0)+(t[2]||0)*(e[2]||0)}([t.x,t.y],e))})),{min:Math.min.apply(Math,(0,QCt.ev)([],(0,QCt.CR)(n),!1)),max:Math.max.apply(Math,(0,QCt.ev)([],(0,QCt.CR)(n),!1))}}function jLt(t,e){return t.max>e.min&&t.mint.x+t.width+n||e.x+e.widtht.y+t.height+n||e.y+e.height4)return[];var e=function(t,e){return[e.x-t.x,e.y-t.y]};return[e(t[0],t[1]),e(t[1],t[2])]}function e(t,e,n){void 0===e&&(e=0),void 0===n&&(n={x:0,y:0});var r=t.x,i=t.y;return{x:(r-n.x)*Math.cos(-e)+(i-n.y)*Math.sin(-e)+n.x,y:(n.x-r)*Math.sin(-e)+(i-n.y)*Math.cos(-e)+n.y}}function n(t){var n=[{x:t.x,y:t.y},{x:t.x+t.width,y:t.y},{x:t.x+t.width,y:t.y+t.height},{x:t.x,y:t.y+t.height}],r=t.rotation;return r?[e(n[0],r,n[0]),e(n[1],r,n[0]),e(n[2],r,n[0]),e(n[3],r,n[0])]:n}function r(t,e){if(t.length>4)return{min:0,max:0};var n=[];return t.forEach((function(t){n.push(function(t,e){return(t[0]||0)*(e[0]||0)+(t[1]||0)*(e[1]||0)+(t[2]||0)*(e[2]||0)}([t.x,t.y],e))})),{min:Math.min.apply(null,n),max:Math.max.apply(null,n)}}function i(t,e){return t.max>e.min&&t.mint.x+t.width+n||e.x+e.widtht.y+t.height+n||e.y+e.height=o.height:a.width>=o.width}(t,e,i)}))}function GLt(t,e,n){return t.some((function(t){return n(t,e)}))}function XLt(t,e){return GLt(t,e,(function(t,e){var n=lFt(t),r=lFt(e);return function(t,e,n){return void 0===n&&(n=0),Math.max(0,Math.min(t.x+t.width+n,e.x+e.width+n)-Math.max(t.x-n,e.x-n))*Math.max(0,Math.min(t.y+t.height+n,e.y+e.height+n)-Math.max(t.y-n,e.y-n))}(n.getCanvasBBox(),r.getCanvasBBox(),2)>0}))}function qLt(t,e,n){return t.some((function(t){return n(t,e)}))}function YLt(t,e){return qLt(t,e,(function(t,e){var n=lFt(t),r=lFt(e);return function(t,e,n){return void 0===n&&(n=0),Math.max(0,Math.min(t.x+t.width+n,e.x+e.width+n)-Math.max(t.x-n,e.x-n))*Math.max(0,Math.min(t.y+t.height+n,e.y+e.height+n)-Math.max(t.y-n,e.y-n))}(n.getCanvasBBox(),r.getCanvasBBox(),2)>0}))}function $Lt(){return HLt||(HLt=document.createElement("canvas").getContext("2d")),HLt}var KLt=(0,tOt.HP)((function(t,e){void 0===e&&(e={});var n=e.fontSize,r=e.fontFamily,i=e.fontWeight,o=e.fontStyle,a=e.fontVariant,c=$Lt();return c.font=[o,a,i,"".concat(n,"px"),r].join(" "),c.measureText((0,tOt.HD)(t)?t:"").width}),(function(t,e){return void 0===e&&(e={}),(0,QCt.ev)([t],(0,QCt.CR)((0,tOt.VO)(e)),!1).join("")}));function JLt(t,e,n,r,i){var o,a,c=n.start,l=n.end,u=n.getWidth(),s=n.getHeight();"y"===i?(o=c.x+u/2,a=r.yc.x?r.x:c.x,a=c.y+s/2):"xy"===i&&(n.isPolar?(o=n.getCenter().x,a=n.getCenter().y):(o=(c.x+l.x)/2,a=(c.y+l.y)/2));var f=function(t,e,n){var r,i=(0,QCt.CR)(e,2),o=i[0],a=i[1];return t.applyToMatrix([o,a,1]),"x"===n?(t.setMatrix(rAt.vs(t.getMatrix(),[["t",-o,-a],["s",.01,1],["t",o,a]])),r=rAt.vs(t.getMatrix(),[["t",-o,-a],["s",100,1],["t",o,a]])):"y"===n?(t.setMatrix(rAt.vs(t.getMatrix(),[["t",-o,-a],["s",1,.01],["t",o,a]])),r=rAt.vs(t.getMatrix(),[["t",-o,-a],["s",1,100],["t",o,a]])):"xy"===n&&(t.setMatrix(rAt.vs(t.getMatrix(),[["t",-o,-a],["s",.01,.01],["t",o,a]])),r=rAt.vs(t.getMatrix(),[["t",-o,-a],["s",100,100],["t",o,a]])),r}(t,[o,a],i);t.animate({matrix:f},e)}function QLt(t,e){var n,r=ujt(t,e),i=r.startAngle,o=r.endAngle;return!(0,tOt.vQ)(i,.5*-Math.PI)&&i<.5*-Math.PI&&(i+=2*Math.PI),!(0,tOt.vQ)(o,.5*-Math.PI)&&o<.5*-Math.PI&&(o+=2*Math.PI),0===e[5]&&(i=(n=(0,QCt.CR)([o,i],2))[0],o=n[1]),(0,tOt.vQ)(i,1.5*Math.PI)&&(i=-.5*Math.PI),(0,tOt.vQ)(o,-.5*Math.PI)&&!(0,tOt.vQ)(i,o)&&(o=1.5*Math.PI),{startAngle:i,endAngle:o}}function tNt(t){var e;return"M"===t[0]||"L"===t[0]?e=[t[1],t[2]]:"a"!==t[0]&&"A"!==t[0]&&"C"!==t[0]||(e=[t[t.length-2],t[t.length-1]]),e}function eNt(t){var e,n,r,i=t.filter((function(t){return"A"===t[0]||"a"===t[0]}));if(0===i.length)return{startAngle:0,endAngle:0,radius:0,innerRadius:0};var o=i[0],a=i.length>1?i[1]:i[0],c=t.indexOf(o),l=t.indexOf(a),u=tNt(t[c-1]),s=tNt(t[l-1]),f=QLt(u,o),h=f.startAngle,d=f.endAngle,p=QLt(s,a),v=p.startAngle,g=p.endAngle;(0,tOt.vQ)(h,v)&&(0,tOt.vQ)(d,g)?(n=h,r=d):(n=Math.min(h,v),r=Math.max(d,g));var m=o[1],y=i[i.length-1][1];return m=0;a--){var c=this.getFacetsByLevel(t,a);try{for(var l=(e=void 0,(0,QCt.XA)(c)),u=l.next();!u.done;u=l.next()){var s=u.value;this.isLeaf(s)||(s.originColIndex=s.columnIndex,s.columnIndex=this.getRegionIndex(s.children),s.columnValuesLength=i.length)}}catch(f){e={error:f}}finally{try{u&&!u.done&&(n=l.return)&&n.call(l)}finally{if(e)throw e.error}}}},e.prototype.getFacetsByLevel=function(t,e){var n=[];return t.forEach((function(t){t.rowIndex===e&&n.push(t)})),n},e.prototype.getRegionIndex=function(t){var e=t[0];return(t[t.length-1].columnIndex-e.columnIndex)/2+e.columnIndex},e.prototype.isLeaf=function(t){return!t.children||!t.children.length},e.prototype.getRows=function(){return this.cfg.fields.length+1},e.prototype.getChildFacets=function(t,e,n){var r=this,i=this.cfg.fields;if(!(i.length=n){var i=r.parsePosition([t[c],t[a.field]]);i&&f.push(i)}if(t[c]===s)return!1})),f},e.prototype.parsePercentPosition=function(t){var e=parseFloat(t[0])/100,n=parseFloat(t[1])/100,r=this.view.getCoordinate(),i=r.start,o=r.end,a=Math.min(i.x,o.x),c=Math.min(i.y,o.y);return{x:r.getWidth()*e+a,y:r.getHeight()*n+c}},e.prototype.getCoordinateBBox=function(){var t=this.view.getCoordinate(),e=t.start,n=t.end,r=t.getWidth(),i=t.getHeight(),o={x:Math.min(e.x,n.x),y:Math.min(e.y,n.y)};return{x:o.x,y:o.y,minX:o.x,minY:o.y,maxX:o.x+r,maxY:o.y+i,width:r,height:i}},e.prototype.getAnnotationCfg=function(t,e,n){var r=this,i=this.view.getCoordinate(),o=this.view.getCanvas(),a={};if((0,tOt.UM)(e))return null;var c=e.start,l=e.end,u=e.position,s=this.parsePosition(c),f=this.parsePosition(l),h=this.parsePosition(u);if(!(!["arc","image","line","region","regionFilter"].includes(t)||s&&f))return null;if(["text","dataMarker","html"].includes(t)&&!h)return null;if("arc"===t){var d=e,p=(d.start,d.end,(0,QCt._T)(d,["start","end"])),v=bDt(i,s),g=bDt(i,f);v>g&&(g=2*Math.PI+g),a=(0,QCt.pi)((0,QCt.pi)({},p),{center:i.getCenter(),radius:yDt(i,s),startAngle:v,endAngle:g})}else if("image"===t){var m=e;m.start,m.end,p=(0,QCt._T)(m,["start","end"]);a=(0,QCt.pi)((0,QCt.pi)({},p),{start:s,end:f,src:e.src})}else if("line"===t){var y=e;y.start,y.end,p=(0,QCt._T)(y,["start","end"]);a=(0,QCt.pi)((0,QCt.pi)({},p),{start:s,end:f,text:(0,tOt.U2)(e,"text",null)})}else if("region"===t){var b=e;b.start,b.end,p=(0,QCt._T)(b,["start","end"]);a=(0,QCt.pi)((0,QCt.pi)({},p),{start:s,end:f})}else if("text"===t){var x=this.view.getData(),w=e,S=(w.position,w.content),k=(p=(0,QCt._T)(w,["position","content"]),S);(0,tOt.mf)(S)&&(k=S(x)),a=(0,QCt.pi)((0,QCt.pi)((0,QCt.pi)({},h),p),{content:k})}else if("dataMarker"===t){var C=e,O=(C.position,C.point),E=C.line,M=C.text,A=C.autoAdjust,P=C.direction;p=(0,QCt._T)(C,["position","point","line","text","autoAdjust","direction"]);a=(0,QCt.pi)((0,QCt.pi)((0,QCt.pi)({},p),h),{coordinateBBox:this.getCoordinateBBox(),point:O,line:E,text:M,autoAdjust:A,direction:P})}else if("dataRegion"===t){var _=e,D=_.start,T=_.end,Z=_.region,F=(M=_.text,_.lineLength);p=(0,QCt._T)(_,["start","end","region","text","lineLength"]);a=(0,QCt.pi)((0,QCt.pi)({},p),{points:this.getRegionPoints(D,T),region:Z,text:M,lineLength:F})}else if("regionFilter"===t){var j=e,I=(j.start,j.end,j.apply),R=j.color,L=(p=(0,QCt._T)(j,["start","end","apply","color"]),this.view.geometries),N=[],B=function t(e){e&&(e.isGroup()?e.getChildren().forEach((function(e){return t(e)})):N.push(e))};(0,tOt.S6)(L,(function(t){I?(0,tOt.FX)(I,t.type)&&(0,tOt.S6)(t.elements,(function(t){B(t.shape)})):(0,tOt.S6)(t.elements,(function(t){B(t.shape)}))})),a=(0,QCt.pi)((0,QCt.pi)({},p),{color:R,shapes:N,start:s,end:f})}else if("shape"===t){var z=e,U=z.render,H=(0,QCt._T)(z,["render"]);a=(0,QCt.pi)((0,QCt.pi)({},H),{render:function(t){if((0,tOt.mf)(e.render))return U(t,r.view,{parsePosition:r.parsePosition.bind(r)})}})}else if("html"===t){var W=e,V=W.html;W.position,H=(0,QCt._T)(W,["html","position"]);a=(0,QCt.pi)((0,QCt.pi)((0,QCt.pi)({},H),h),{parent:o.get("el").parentNode,html:function(t){return(0,tOt.mf)(V)?V(t,r.view):V}})}var G=(0,tOt.b$)({},n,(0,QCt.pi)((0,QCt.pi)({},a),{top:e.top,style:e.style,offsetX:e.offsetX,offsetY:e.offsetY}));return"html"!==t&&(G.container=this.getComponentContainer(G)),G.animate=this.view.getOptions().animate&&G.animate&&(0,tOt.U2)(e,"animate",G.animate),G.animateOption=(0,tOt.b$)({},IZt,G.animateOption,e.animateOption),G},e.prototype.isTop=function(t){return(0,tOt.U2)(t,"top",!0)},e.prototype.getComponentContainer=function(t){return this.isTop(t)?this.foregroundContainer:this.backgroundContainer},e.prototype.getAnnotationTheme=function(t){return(0,tOt.U2)(this.view.getTheme(),["components","annotation",t],{})},e.prototype.updateOrCreate=function(t){var e=this.cache.get(this.getCacheKey(t));if(e){var n=t.type,r=this.getAnnotationTheme(n),i=this.getAnnotationCfg(n,t,r);i&&pDt(i,["container"]),e.component.update((0,QCt.pi)((0,QCt.pi)({},i||{}),{visible:!!i})),(0,tOt.q9)(bNt,t.type)&&e.component.render()}else(e=this.createAnnotation(t))&&(e.component.init(),(0,tOt.q9)(bNt,t.type)&&e.component.render());return e},e.prototype.syncCache=function(t){var e=this,n=new Map(this.cache);return t.forEach((function(t,e){n.set(e,t)})),n.forEach((function(t,r){(0,tOt.sE)(e.option,(function(t){return r===e.getCacheKey(t)}))||(t.component.destroy(),n.delete(r))})),n},e.prototype.getCacheKey=function(t){return t},e}(_Zt),wNt=xNt;function SNt(t,e){var n=(0,tOt.b$)({},(0,tOt.U2)(t,["components","axis","common"]),(0,tOt.U2)(t,["components","axis",e]));return(0,tOt.U2)(n,["grid"],{})}function kNt(t,e,n,r){var i=[],o=e.getTicks();return t.isPolar&&o.push({value:1,text:"",tickValue:""}),o.reduce((function(e,o,a){var c=o.value;if(r)i.push({points:[t.convert("y"===n?{x:0,y:c}:{x:c,y:0}),t.convert("y"===n?{x:1,y:c}:{x:c,y:1})]});else if(a){var l=(e.value+c)/2;i.push({points:[t.convert("y"===n?{x:0,y:l}:{x:l,y:0}),t.convert("y"===n?{x:1,y:l}:{x:l,y:1})]})}return o}),o[0]),i}function CNt(t,e,n,r,i){var o=e.values.length,a=[],c=n.getTicks();return c.reduce((function(e,n){var c=e?e.value:n.value,l=n.value,u=(c+l)/2;return"x"===i?a.push({points:[t.convert({x:r?l:u,y:0}),t.convert({x:r?l:u,y:1})]}):a.push({points:(0,tOt.UI)(Array(o+1),(function(e,n){return t.convert({x:n/o,y:r?l:u})}))}),n}),c[0]),a}function ONt(t,e){var n=(0,tOt.U2)(e,"grid");if(null===n)return!1;var r=(0,tOt.U2)(t,"grid");return!(void 0===n&&null===r)}var ENt=["container"],MNt=(0,QCt.pi)((0,QCt.pi)({},IZt),{appear:null}),ANt=function(t){function e(e){var n=t.call(this,e)||this;return n.cache=new Map,n.gridContainer=n.view.getLayer(YCt.BG).addGroup(),n.gridForeContainer=n.view.getLayer(YCt.FORE).addGroup(),n.axisContainer=n.view.getLayer(YCt.BG).addGroup(),n.axisForeContainer=n.view.getLayer(YCt.FORE).addGroup(),n}return(0,QCt.ZT)(e,t),Object.defineProperty(e.prototype,"name",{get:function(){return"axis"},enumerable:!1,configurable:!0}),e.prototype.init=function(){},e.prototype.render=function(){this.update()},e.prototype.layout=function(){var t=this,e=this.view.getCoordinate();(0,tOt.S6)(this.getComponents(),(function(n){var r,i=n.component,o=n.direction,a=n.type,c=n.extra,l=c.dim,u=c.scale,s=c.alignTick;if(a===KCt.AXIS)e.isPolar?"x"===l?r=e.isTransposed?MDt(e,o):TDt(e):"y"===l&&(r=e.isTransposed?TDt(e):MDt(e,o)):r=MDt(e,o);else if(a===KCt.GRID)if(e.isPolar){r={items:e.isTransposed?"x"===l?CNt(e,t.view.getYScales()[0],u,s,l):kNt(e,u,l,s):"x"===l?kNt(e,u,l,s):CNt(e,t.view.getXScale(),u,s,l),center:t.view.getCoordinate().getCenter()}}else r={items:kNt(e,u,l,s)};i.update(r)}))},e.prototype.update=function(){this.option=this.view.getOptions().axes;var t=new Map;this.updateXAxes(t),this.updateYAxes(t);var e=new Map;this.cache.forEach((function(n,r){t.has(r)?e.set(r,n):n.component.destroy()})),this.cache=e},e.prototype.clear=function(){t.prototype.clear.call(this),this.cache.clear(),this.gridContainer.clear(),this.gridForeContainer.clear(),this.axisContainer.clear(),this.axisForeContainer.clear()},e.prototype.destroy=function(){t.prototype.destroy.call(this),this.gridContainer.remove(!0),this.gridForeContainer.remove(!0),this.axisContainer.remove(!0),this.axisForeContainer.remove(!0)},e.prototype.getComponents=function(){var t=[];return this.cache.forEach((function(e){t.push(e)})),t},e.prototype.updateXAxes=function(t){var e=this.view.getXScale();if(e&&!e.isIdentity){var n=ZDt(this.option,e.field);if(!1!==n){var r=FDt(n,$Ct.BOTTOM),i=YCt.BG,o="x",a=this.view.getCoordinate(),c=this.getId("axis",e.field),l=this.getId("grid",e.field);if(a.isRect){if(u=this.cache.get(c))pDt(f=this.getLineAxisCfg(e,n,r),ENt),u.component.update(f),t.set(c,u);else u=this.createLineAxis(e,n,i,r,o),this.cache.set(c,u),t.set(c,u);if(s=this.cache.get(l))pDt(f=this.getLineGridCfg(e,n,r,o),ENt),s.component.update(f),t.set(l,s);else(s=this.createLineGrid(e,n,i,r,o))&&(this.cache.set(l,s),t.set(l,s))}else if(a.isPolar){var u,s;if(u=this.cache.get(c)){pDt(f=a.isTransposed?this.getLineAxisCfg(e,n,$Ct.RADIUS):this.getCircleAxisCfg(e,n,r),ENt),u.component.update(f),t.set(c,u)}else{if(a.isTransposed){if((0,tOt.o8)(n))return;u=this.createLineAxis(e,n,i,$Ct.RADIUS,o)}else u=this.createCircleAxis(e,n,i,r,o);this.cache.set(c,u),t.set(c,u)}if(s=this.cache.get(l)){var f;pDt(f=a.isTransposed?this.getCircleGridCfg(e,n,$Ct.RADIUS,o):this.getLineGridCfg(e,n,$Ct.CIRCLE,o),ENt),s.component.update(f),t.set(l,s)}else{if(a.isTransposed){if((0,tOt.o8)(n))return;s=this.createCircleGrid(e,n,i,$Ct.RADIUS,o)}else s=this.createLineGrid(e,n,i,$Ct.CIRCLE,o);s&&(this.cache.set(l,s),t.set(l,s))}}}}},e.prototype.updateYAxes=function(t){var e=this,n=this.view.getYScales();(0,tOt.S6)(n,(function(n,r){if(n&&!n.isIdentity){var i=n.field,o=ZDt(e.option,i);if(!1!==o){var a=YCt.BG,c="y",l=e.getId("axis",i),u=e.getId("grid",i),s=e.view.getCoordinate();if(s.isRect){var f=FDt(o,0===r?$Ct.LEFT:$Ct.RIGHT);if(h=e.cache.get(l))pDt(p=e.getLineAxisCfg(n,o,f),ENt),h.component.update(p),t.set(l,h);else h=e.createLineAxis(n,o,a,f,c),e.cache.set(l,h),t.set(l,h);if(d=e.cache.get(u))pDt(p=e.getLineGridCfg(n,o,f,c),ENt),d.component.update(p),t.set(u,d);else(d=e.createLineGrid(n,o,a,f,c))&&(e.cache.set(u,d),t.set(u,d))}else if(s.isPolar){var h,d;if(h=e.cache.get(l)){pDt(p=s.isTransposed?e.getCircleAxisCfg(n,o,$Ct.CIRCLE):e.getLineAxisCfg(n,o,$Ct.RADIUS),ENt),h.component.update(p),t.set(l,h)}else{if(s.isTransposed){if((0,tOt.o8)(o))return;h=e.createCircleAxis(n,o,a,$Ct.CIRCLE,c)}else h=e.createLineAxis(n,o,a,$Ct.RADIUS,c);e.cache.set(l,h),t.set(l,h)}if(d=e.cache.get(u)){var p;pDt(p=s.isTransposed?e.getLineGridCfg(n,o,$Ct.CIRCLE,c):e.getCircleGridCfg(n,o,$Ct.RADIUS,c),ENt),d.component.update(p),t.set(u,d)}else{if(s.isTransposed){if((0,tOt.o8)(o))return;d=e.createLineGrid(n,o,a,$Ct.CIRCLE,c)}else d=e.createCircleGrid(n,o,a,$Ct.RADIUS,c);d&&(e.cache.set(u,d),t.set(u,d))}}}}}))},e.prototype.createLineAxis=function(t,e,n,r,i){var o={component:new Q_t(this.getLineAxisCfg(t,e,r)),layer:n,direction:r===$Ct.RADIUS?$Ct.NONE:r,type:KCt.AXIS,extra:{dim:i,scale:t}};return o.component.set("field",t.field),o.component.init(),o},e.prototype.createLineGrid=function(t,e,n,r,i){var o=this.getLineGridCfg(t,e,r,i);if(o){var a={component:new eDt(o),layer:n,direction:$Ct.NONE,type:KCt.GRID,extra:{dim:i,scale:t,alignTick:(0,tOt.U2)(o,"alignTick",!0)}};return a.component.init(),a}},e.prototype.createCircleAxis=function(t,e,n,r,i){var o={component:new tDt(this.getCircleAxisCfg(t,e,r)),layer:n,direction:r,type:KCt.AXIS,extra:{dim:i,scale:t}};return o.component.set("field",t.field),o.component.init(),o},e.prototype.createCircleGrid=function(t,e,n,r,i){var o=this.getCircleGridCfg(t,e,r,i);if(o){var a={component:new nDt(o),layer:n,direction:$Ct.NONE,type:KCt.GRID,extra:{dim:i,scale:t,alignTick:(0,tOt.U2)(o,"alignTick",!0)}};return a.component.init(),a}},e.prototype.getLineAxisCfg=function(t,e,n){var r=(0,tOt.U2)(e,["top"])?this.axisForeContainer:this.axisContainer,i=this.view.getCoordinate(),o=MDt(i,n),a=jDt(t,e),c=_Dt(this.view.getTheme(),n),l=(0,tOt.U2)(e,["title"])?(0,tOt.b$)({title:{style:{text:a}}},{title:DDt(this.view.getTheme(),n,e.title)},e):e,u=(0,tOt.b$)((0,QCt.pi)((0,QCt.pi)({container:r},o),{ticks:t.getTicks().map((function(t){return{id:"".concat(t.tickValue),name:t.text,value:t.value}})),verticalFactor:i.isPolar?-1*PDt(o,i.getCenter()):PDt(o,i.getCenter()),theme:c}),c,l),s=this.getAnimateCfg(u),f=s.animate,h=s.animateOption;u.animateOption=h,u.animate=f;var d=ADt(o),p=(0,tOt.U2)(u,"verticalLimitLength",d?1/3:.5);if(p<=1){var v=this.view.getCanvas().get("width"),g=this.view.getCanvas().get("height");u.verticalLimitLength=p*(d?v:g)}return u},e.prototype.getLineGridCfg=function(t,e,n,r){if(ONt(_Dt(this.view.getTheme(),n),e)){var i=SNt(this.view.getTheme(),n),o=(0,tOt.b$)({container:(0,tOt.U2)(e,["top"])?this.gridForeContainer:this.gridContainer},i,(0,tOt.U2)(e,"grid"),this.getAnimateCfg(e));return o.items=kNt(this.view.getCoordinate(),t,r,(0,tOt.U2)(o,"alignTick",!0)),o}},e.prototype.getCircleAxisCfg=function(t,e,n){var r=(0,tOt.U2)(e,["top"])?this.axisForeContainer:this.axisContainer,i=this.view.getCoordinate(),o=t.getTicks().map((function(t){return{id:"".concat(t.tickValue),name:t.text,value:t.value}}));t.isCategory||Math.abs(i.endAngle-i.startAngle)!==2*Math.PI||o.length&&(o[o.length-1].name="");var a=jDt(t,e),c=_Dt(this.view.getTheme(),$Ct.CIRCLE),l=(0,tOt.U2)(e,["title"])?(0,tOt.b$)({title:{style:{text:a}}},{title:DDt(this.view.getTheme(),n,e.title)},e):e,u=(0,tOt.b$)((0,QCt.pi)((0,QCt.pi)({container:r},TDt(this.view.getCoordinate())),{ticks:o,verticalFactor:1,theme:c}),c,l),s=this.getAnimateCfg(u),f=s.animate,h=s.animateOption;return u.animate=f,u.animateOption=h,u},e.prototype.getCircleGridCfg=function(t,e,n,r){if(ONt(_Dt(this.view.getTheme(),n),e)){var i=SNt(this.view.getTheme(),$Ct.RADIUS),o=(0,tOt.b$)({container:(0,tOt.U2)(e,["top"])?this.gridForeContainer:this.gridContainer,center:this.view.getCoordinate().getCenter()},i,(0,tOt.U2)(e,"grid"),this.getAnimateCfg(e)),a=(0,tOt.U2)(o,"alignTick",!0),c="x"===r?this.view.getYScales()[0]:this.view.getXScale();return o.items=CNt(this.view.getCoordinate(),c,t,a,r),o}},e.prototype.getId=function(t,e){var n=this.view.getCoordinate();return"".concat(t,"-").concat(e,"-").concat(n.type)},e.prototype.getAnimateCfg=function(t){return{animate:this.view.getOptions().animate&&(0,tOt.U2)(t,"animate"),animateOption:t&&t.animateOption?(0,tOt.b$)({},MNt,t.animateOption):MNt}},e}(_Zt),PNt=ANt;function _Nt(t,e,n){return n===$Ct.TOP?[t.minX+t.width/2-e.width/2,t.minY]:n===$Ct.BOTTOM?[t.minX+t.width/2-e.width/2,t.maxY-e.height]:n===$Ct.LEFT?[t.minX,t.minY+t.height/2-e.height/2]:n===$Ct.RIGHT?[t.maxX-e.width,t.minY+t.height/2-e.height/2]:n===$Ct.TOP_LEFT||n===$Ct.LEFT_TOP?[t.tl.x,t.tl.y]:n===$Ct.TOP_RIGHT||n===$Ct.RIGHT_TOP?[t.tr.x-e.width,t.tr.y]:n===$Ct.BOTTOM_LEFT||n===$Ct.LEFT_BOTTOM?[t.bl.x,t.bl.y-e.height]:n===$Ct.BOTTOM_RIGHT||n===$Ct.RIGHT_BOTTOM?[t.br.x-e.width,t.br.y-e.height]:[0,0]}function DNt(t,e){return(0,tOt.jn)(t)?!1!==t&&{}:(0,tOt.U2)(t,[e],t)}function TNt(t){return(0,tOt.U2)(t,"position",$Ct.BOTTOM)}var ZNt=function(t){function e(e){var n=t.call(this,e)||this;return n.container=n.view.getLayer(YCt.FORE).addGroup(),n}return(0,QCt.ZT)(e,t),Object.defineProperty(e.prototype,"name",{get:function(){return"legend"},enumerable:!1,configurable:!0}),e.prototype.init=function(){},e.prototype.render=function(){this.update()},e.prototype.layout=function(){var t=this;this.layoutBBox=this.view.viewBBox,(0,tOt.S6)(this.components,(function(e){var n=e.component,r=e.direction,i=wFt(r),o=n.get("maxWidthRatio"),a=n.get("maxHeightRatio"),c=t.getCategoryLegendSizeCfg(i,o,a),l=n.get("maxWidth"),u=n.get("maxHeight");n.update({maxWidth:Math.min(c.maxWidth,l||0),maxHeight:Math.min(c.maxHeight,u||0)});var s=n.get("padding"),f=n.getLayoutBBox(),h=new gDt(f.x,f.y,f.width,f.height).expand(s),d=(0,QCt.CR)(_Nt(t.view.viewBBox,h,r),2),p=d[0],v=d[1],g=(0,QCt.CR)(_Nt(t.layoutBBox,h,r),2),m=g[0],y=g[1],b=0,x=0;r.startsWith("top")||r.startsWith("bottom")?(b=p,x=y):(b=m,x=v),n.setLocation({x:b+s[3],y:x+s[0]}),t.layoutBBox=t.layoutBBox.cut(h,r)}))},e.prototype.update=function(){var t=this;this.option=this.view.getOptions().legends;var e={};if((0,tOt.U2)(this.option,"custom")){var n="global-custom",r=this.getComponentById(n);if(r){var i=this.getCategoryCfg(void 0,void 0,void 0,this.option,!0);pDt(i,["container"]),r.component.update(i),e[n]=!0}else{var o=this.createCustomLegend(void 0,void 0,void 0,this.option);if(o){o.init();var a=YCt.FORE,c=TNt(this.option);this.components.push({id:n,component:o,layer:a,direction:c,type:KCt.LEGEND,extra:void 0}),e[n]=!0}}}else this.loopLegends((function(n,r,i){var o=t.getId(i.field),a=t.getComponentById(o);if(a){var c=void 0,l=DNt(t.option,i.field);!1!==l&&((0,tOt.U2)(l,"custom")?c=t.getCategoryCfg(n,r,i,l,!0):i.isLinear?c=t.getContinuousCfg(n,r,i,l):i.isCategory&&(c=t.getCategoryCfg(n,r,i,l))),c&&(pDt(c,["container"]),a.direction=TNt(l),a.component.update(c),e[o]=!0)}else{var u=t.createFieldLegend(n,r,i);u&&(u.component.init(),t.components.push(u),e[o]=!0)}}));var l=[];(0,tOt.S6)(this.getComponents(),(function(t){e[t.id]?l.push(t):t.component.destroy()})),this.components=l},e.prototype.clear=function(){t.prototype.clear.call(this),this.container.clear()},e.prototype.destroy=function(){t.prototype.destroy.call(this),this.container.remove(!0)},e.prototype.getGeometries=function(t){var e=this,n=t.geometries;return(0,tOt.S6)(t.views,(function(t){n=n.concat(e.getGeometries(t))})),n},e.prototype.loopLegends=function(t){if(this.view.getRootView()===this.view){var e=this.getGeometries(this.view),n={};(0,tOt.S6)(e,(function(e){var r=e.getGroupAttributes();(0,tOt.S6)(r,(function(r){var i=r.getScale(r.type);i&&"identity"!==i.type&&!n[i.field]&&(t(e,r,i),n[i.field]=!0)}))}))}},e.prototype.createFieldLegend=function(t,e,n){var r,i=DNt(this.option,n.field),o=YCt.FORE,a=TNt(i);if(!1!==i&&((0,tOt.U2)(i,"custom")?r=this.createCustomLegend(t,e,n,i):n.isLinear?r=this.createContinuousLegend(t,e,n,i):n.isCategory&&(r=this.createCategoryLegend(t,e,n,i))),r)return r.set("field",n.field),{id:this.getId(n.field),component:r,layer:o,direction:a,type:KCt.LEGEND,extra:{scale:n}}},e.prototype.createCustomLegend=function(t,e,n,r){var i=this.getCategoryCfg(t,e,n,r,!0);return new rDt(i)},e.prototype.createContinuousLegend=function(t,e,n,r){var i=this.getContinuousCfg(t,e,n,pDt(r,["value"]));return new iDt(i)},e.prototype.createCategoryLegend=function(t,e,n,r){var i=this.getCategoryCfg(t,e,n,r);return new rDt(i)},e.prototype.getContinuousCfg=function(t,e,n,r){var i=n.getTicks(),o=(0,tOt.sE)(i,(function(t){return 0===t.value})),a=(0,tOt.sE)(i,(function(t){return 1===t.value})),c=i.map((function(t){var r=t.value,i=t.tickValue,o=e.mapping(n.invert(r)).join("");return{value:i,attrValue:o,color:o,scaleValue:r}}));o||c.push({value:n.min,attrValue:e.mapping(n.invert(0)).join(""),color:e.mapping(n.invert(0)).join(""),scaleValue:0}),a||c.push({value:n.max,attrValue:e.mapping(n.invert(1)).join(""),color:e.mapping(n.invert(1)).join(""),scaleValue:1}),c.sort((function(t,e){return t.value-e.value}));var l={min:(0,tOt.YM)(c).value,max:(0,tOt.Z$)(c).value,colors:[],rail:{type:e.type},track:{}};"size"===e.type&&(l.track={style:{fill:"size"===e.type?this.view.getTheme().defaultColor:void 0}}),"color"===e.type&&(l.colors=c.map((function(t){return t.attrValue})));var u=this.container,s=wFt(TNt(r)),f=(0,tOt.U2)(r,"title");return f&&(f=(0,tOt.b$)({text:CDt(n)},f)),l.container=u,l.layout=s,l.title=f,l.animateOption=IZt,this.mergeLegendCfg(l,r,"continuous")},e.prototype.getCategoryCfg=function(t,e,n,r,i){var o=this.container,a=(0,tOt.U2)(r,"position",$Ct.BOTTOM),c=kFt(this.view.getTheme(),a),l=(0,tOt.U2)(c,["marker"]),u=(0,tOt.U2)(r,"marker"),s=wFt(a),f=(0,tOt.U2)(c,["pageNavigator"]),h=(0,tOt.U2)(r,"pageNavigator"),d=i?function(t,e,n){return n.map((function(n,r){var i=e;(0,tOt.mf)(i)&&(i=i(n.name,r,(0,tOt.b$)({},t,n)));var o=(0,tOt.mf)(n.marker)?n.marker(n.name,r,(0,tOt.b$)({},t,n)):n.marker,a=(0,tOt.b$)({},t,i,o);return xFt(a),n.marker=a,n}))}(l,u,r.items):SFt(this.view,t,e,l,u),p=(0,tOt.U2)(r,"title");p&&(p=(0,tOt.b$)({text:n?CDt(n):""},p));var v=(0,tOt.U2)(r,"maxWidthRatio"),g=(0,tOt.U2)(r,"maxHeightRatio"),m=this.getCategoryLegendSizeCfg(s,v,g);m.container=o,m.layout=s,m.items=d,m.title=p,m.animateOption=IZt,m.pageNavigator=(0,tOt.b$)({},f,h);var y=this.mergeLegendCfg(m,r,a);y.reversed&&y.items.reverse();var b=(0,tOt.U2)(y,"maxItemWidth");return b&&b<=1&&(y.maxItemWidth=this.view.viewBBox.width*b),y},e.prototype.mergeLegendCfg=function(t,e,n){var r=n.split("-")[0],i=kFt(this.view.getTheme(),r);return(0,tOt.b$)({},i,t,e)},e.prototype.getId=function(t){return"".concat(this.name,"-").concat(t)},e.prototype.getComponentById=function(t){return(0,tOt.sE)(this.components,(function(e){return e.id===t}))},e.prototype.getCategoryLegendSizeCfg=function(t,e,n){void 0===e&&(e=.25),void 0===n&&(n=.25);var r=this.view.viewBBox,i=r.width,o=r.height;return"vertical"===t?{maxWidth:i*e,maxHeight:o}:{maxWidth:i,maxHeight:o*n}},e}(_Zt),FNt=ZNt,jNt=function(t){function e(e){var n=t.call(this,e)||this;return n.onChangeFn=tOt.ZT,n.resetMeasure=function(){n.clear()},n.onValueChange=function(t){var e=(0,QCt.CR)(t,2),r=e[0],i=e[1];n.start=r,n.end=i,n.changeViewData(r,i)},n.container=n.view.getLayer(YCt.FORE).addGroup(),n.onChangeFn=(0,tOt.P2)(n.onValueChange,20,{leading:!0}),n.width=0,n.view.on(eOt.BEFORE_CHANGE_DATA,n.resetMeasure),n.view.on(eOt.BEFORE_CHANGE_SIZE,n.resetMeasure),n}return(0,QCt.ZT)(e,t),Object.defineProperty(e.prototype,"name",{get:function(){return"slider"},enumerable:!1,configurable:!0}),e.prototype.destroy=function(){t.prototype.destroy.call(this),this.view.off(eOt.BEFORE_CHANGE_DATA,this.resetMeasure),this.view.off(eOt.BEFORE_CHANGE_SIZE,this.resetMeasure)},e.prototype.init=function(){},e.prototype.render=function(){this.option=this.view.getOptions().slider;var t=this.getSliderCfg(),e=t.start,n=t.end;(0,tOt.UM)(this.start)&&(this.start=e,this.end=n);var r=this.view.getOptions().data;this.option&&!(0,tOt.xb)(r)?this.slider?this.slider=this.updateSlider():(this.slider=this.createSlider(),this.slider.component.on("sliderchange",this.onChangeFn)):this.slider&&(this.slider.component.destroy(),this.slider=void 0)},e.prototype.layout=function(){var t=this;if(this.option&&!this.width&&(this.measureSlider(),setTimeout((function(){t.view.destroyed||t.changeViewData(t.start,t.end)}),0)),this.slider){var e=this.view.coordinateBBox.width,n=this.slider.component.get("padding"),r=(0,QCt.CR)(n,4),i=r[0],o=(r[1],r[2],r[3]),a=this.slider.component.getLayoutBBox(),c=new gDt(a.x,a.y,Math.min(a.width,e),a.height).expand(n),l=this.getMinMaxText(this.start,this.end),u=l.minText,s=l.maxText,f=(0,QCt.CR)(_Nt(this.view.viewBBox,c,$Ct.BOTTOM),2),h=(f[0],f[1]),d=(0,QCt.CR)(_Nt(this.view.coordinateBBox,c,$Ct.BOTTOM),2),p=d[0];d[1];this.slider.component.update((0,QCt.pi)((0,QCt.pi)({},this.getSliderCfg()),{x:p+o,y:h+i,width:this.width,start:this.start,end:this.end,minText:u,maxText:s})),this.view.viewBBox=this.view.viewBBox.cut(c,$Ct.BOTTOM)}},e.prototype.update=function(){this.render()},e.prototype.createSlider=function(){var t=this.getSliderCfg(),e=new Y_t((0,QCt.pi)({container:this.container},t));return e.init(),{component:e,layer:YCt.FORE,direction:$Ct.BOTTOM,type:KCt.SLIDER}},e.prototype.updateSlider=function(){var t=this.getSliderCfg();if(this.width){var e=this.getMinMaxText(this.start,this.end),n=e.minText,r=e.maxText;t=(0,QCt.pi)((0,QCt.pi)({},t),{width:this.width,start:this.start,end:this.end,minText:n,maxText:r})}return this.slider.component.update(t),this.slider},e.prototype.measureSlider=function(){var t=this.getSliderCfg().width;this.width=t},e.prototype.getSliderCfg=function(){var t={height:16,start:0,end:1,minText:"",maxText:"",x:0,y:0,width:this.view.coordinateBBox.width};if((0,tOt.Kn)(this.option)){var e=(0,QCt.pi)({data:this.getData()},(0,tOt.U2)(this.option,"trendCfg",{}));t=(0,tOt.b$)({},t,this.getThemeOptions(),this.option),t=(0,QCt.pi)((0,QCt.pi)({},t),{trendCfg:e})}return t.start=(0,tOt.uZ)(Math.min((0,tOt.UM)(t.start)?0:t.start,(0,tOt.UM)(t.end)?1:t.end),0,1),t.end=(0,tOt.uZ)(Math.max((0,tOt.UM)(t.start)?0:t.start,(0,tOt.UM)(t.end)?1:t.end),0,1),t},e.prototype.getData=function(){var t=this.view.getOptions().data,e=(0,QCt.CR)(this.view.getYScales(),1)[0],n=this.view.getGroupScales();if(n.length){var r=n[0],i=r.field,o=r.ticks;return t.reduce((function(t,n){return n[i]===o[0]&&t.push(n[e.field]),t}),[])}return t.map((function(t){return t[e.field]||0}))},e.prototype.getThemeOptions=function(){var t=this.view.getTheme();return(0,tOt.U2)(t,["components","slider","common"],{})},e.prototype.getMinMaxText=function(t,e){var n=this.view.getOptions().data,r=this.view.getXScale(),i=(0,tOt.I)(n,r.field);r.isLinear&&(i=i.sort());var o=i,a=(0,tOt.dp)(n);if(!r||!a)return{};var c=(0,tOt.dp)(o),l=Math.round(t*(c-1)),u=Math.round(e*(c-1)),s=(0,tOt.U2)(o,[l]),f=(0,tOt.U2)(o,[u]),h=this.getSliderCfg().formatter;return h&&(s=h(s,n[l],l),f=h(f,n[u],u)),{minText:s,maxText:f}},e.prototype.changeViewData=function(t,e){var n=this.view.getOptions().data,r=this.view.getXScale(),i=(0,tOt.dp)(n);if(r&&i){var o=(0,tOt.I)(n,r.field),a=this.view.getXScale().isLinear?o.sort((function(t,e){return Number(t)-Number(e)})):o,c=a,l=(0,tOt.dp)(c),u=Math.round(t*(l-1)),s=Math.round(e*(l-1));this.view.filter(r.field,(function(t,e){var n=c.indexOf(t);return!(n>-1)||dDt(n,u,s)})),this.view.render(!0)}},e.prototype.getComponents=function(){return this.slider?[this.slider]:[]},e.prototype.clear=function(){this.slider&&(this.slider.component.destroy(),this.slider=void 0),this.width=0,this.start=void 0,this.end=void 0},e}(_Zt),INt=jNt,RNt=function(t){function e(e){var n=t.call(this,e)||this;return n.onChangeFn=tOt.ZT,n.resetMeasure=function(){n.clear()},n.onValueChange=function(t){var e=t.ratio,r=n.getValidScrollbarCfg().animate;n.ratio=(0,tOt.uZ)(e,0,1);var i=n.view.getOptions().animate;r||n.view.animate(!1),n.changeViewData(n.getScrollRange(),!0),n.view.animate(i)},n.container=n.view.getLayer(YCt.FORE).addGroup(),n.onChangeFn=(0,tOt.P2)(n.onValueChange,20,{leading:!0}),n.trackLen=0,n.thumbLen=0,n.ratio=0,n.view.on(eOt.BEFORE_CHANGE_DATA,n.resetMeasure),n.view.on(eOt.BEFORE_CHANGE_SIZE,n.resetMeasure),n}return(0,QCt.ZT)(e,t),Object.defineProperty(e.prototype,"name",{get:function(){return"scrollbar"},enumerable:!1,configurable:!0}),e.prototype.destroy=function(){t.prototype.destroy.call(this),this.view.off(eOt.BEFORE_CHANGE_DATA,this.resetMeasure),this.view.off(eOt.BEFORE_CHANGE_SIZE,this.resetMeasure)},e.prototype.init=function(){},e.prototype.render=function(){this.option=this.view.getOptions().scrollbar,this.option?this.scrollbar?this.scrollbar=this.updateScrollbar():(this.scrollbar=this.createScrollbar(),this.scrollbar.component.on("scrollchange",this.onChangeFn)):this.scrollbar&&(this.scrollbar.component.destroy(),this.scrollbar=void 0)},e.prototype.layout=function(){var t=this;if(this.option&&!this.trackLen&&(this.measureScrollbar(),setTimeout((function(){t.view.destroyed||t.changeViewData(t.getScrollRange(),!0)}))),this.scrollbar){var e=this.view.coordinateBBox.width,n=this.scrollbar.component.get("padding"),r=this.scrollbar.component.getLayoutBBox(),i=new gDt(r.x,r.y,Math.min(r.width,e),r.height).expand(n),o=this.getScrollbarComponentCfg(),a=void 0,c=void 0;if(o.isHorizontal){var l=(0,QCt.CR)(_Nt(this.view.viewBBox,i,$Ct.BOTTOM),2),u=(l[0],l[1]),s=(0,QCt.CR)(_Nt(this.view.coordinateBBox,i,$Ct.BOTTOM),2),f=s[0];s[1];a=f,c=u}else{var h=(0,QCt.CR)(_Nt(this.view.viewBBox,i,$Ct.RIGHT),2),d=(h[0],u=h[1],(0,QCt.CR)(_Nt(this.view.viewBBox,i,$Ct.RIGHT),2));f=d[0],d[1];a=f,c=u}a+=n[3],c+=n[0],this.trackLen?this.scrollbar.component.update((0,QCt.pi)((0,QCt.pi)({},o),{x:a,y:c,trackLen:this.trackLen,thumbLen:this.thumbLen,thumbOffset:(this.trackLen-this.thumbLen)*this.ratio})):this.scrollbar.component.update((0,QCt.pi)((0,QCt.pi)({},o),{x:a,y:c})),this.view.viewBBox=this.view.viewBBox.cut(i,o.isHorizontal?$Ct.BOTTOM:$Ct.RIGHT)}},e.prototype.update=function(){this.render()},e.prototype.getComponents=function(){return this.scrollbar?[this.scrollbar]:[]},e.prototype.clear=function(){this.scrollbar&&(this.scrollbar.component.destroy(),this.scrollbar=void 0),this.trackLen=0,this.thumbLen=0,this.ratio=0,this.cnt=0,this.step=0,this.data=void 0,this.xScaleCfg=void 0,this.yScalesCfg=[]},e.prototype.setValue=function(t){this.onValueChange({ratio:t})},e.prototype.getValue=function(){return this.ratio},e.prototype.getThemeOptions=function(){var t=this.view.getTheme();return(0,tOt.U2)(t,["components","scrollbar","common"],{})},e.prototype.getScrollbarTheme=function(t){var e=(0,tOt.U2)(this.view.getTheme(),["components","scrollbar"]),n=t||{},r=n.thumbHighlightColor,i=(0,QCt._T)(n,["thumbHighlightColor"]);return{default:(0,tOt.b$)({},(0,tOt.U2)(e,["default","style"],{}),i),hover:(0,tOt.b$)({},(0,tOt.U2)(e,["hover","style"],{}),{thumbColor:r})}},e.prototype.measureScrollbar=function(){var t=this.view.getXScale(),e=this.view.getYScales().slice();this.data=this.getScrollbarData(),this.step=this.getStep(),this.cnt=this.getCnt();var n=this.getScrollbarComponentCfg(),r=n.trackLen,i=n.thumbLen;this.trackLen=r,this.thumbLen=i,this.xScaleCfg={field:t.field,values:t.values||[]},this.yScalesCfg=e},e.prototype.getScrollRange=function(){var t=Math.floor((this.cnt-this.step)*(0,tOt.uZ)(this.ratio,0,1));return[t,Math.min(t+this.step-1,this.cnt-1)]},e.prototype.changeViewData=function(t,e){var n=this,r=(0,QCt.CR)(t,2),i=r[0],o=r[1],a="vertical"!==this.getValidScrollbarCfg().type,c=(0,tOt.I)(this.data,this.xScaleCfg.field),l=this.view.getXScale().isLinear?c.sort((function(t,e){return Number(t)-Number(e)})):c,u=a?l:l.reverse();this.yScalesCfg.forEach((function(t){n.view.scale(t.field,{formatter:t.formatter,type:t.type,min:t.min,max:t.max,tickMethod:t.tickMethod})})),this.view.filter(this.xScaleCfg.field,(function(t){var e=u.indexOf(t);return!(e>-1)||dDt(e,i,o)})),this.view.render(!0)},e.prototype.createScrollbar=function(){var t="vertical"!==this.getValidScrollbarCfg().type,e=new J_t((0,QCt.pi)((0,QCt.pi)({container:this.container},this.getScrollbarComponentCfg()),{x:0,y:0}));return e.init(),{component:e,layer:YCt.FORE,direction:t?$Ct.BOTTOM:$Ct.RIGHT,type:KCt.SCROLLBAR}},e.prototype.updateScrollbar=function(){var t=this.getScrollbarComponentCfg(),e=this.trackLen?(0,QCt.pi)((0,QCt.pi)({},t),{trackLen:this.trackLen,thumbLen:this.thumbLen,thumbOffset:(this.trackLen-this.thumbLen)*this.ratio}):(0,QCt.pi)({},t);return this.scrollbar.component.update(e),this.scrollbar},e.prototype.getStep=function(){if(this.step)return this.step;var t=this.view.coordinateBBox,e=this.getValidScrollbarCfg(),n=e.type,r=e.categorySize,i="vertical"!==n;return Math.floor((i?t.width:t.height)/r)},e.prototype.getCnt=function(){if(this.cnt)return this.cnt;var t=this.view.getXScale(),e=this.getScrollbarData(),n=(0,tOt.I)(e,t.field);return(0,tOt.dp)(n)},e.prototype.getScrollbarComponentCfg=function(){var t=this.view,e=t.coordinateBBox,n=t.viewBBox,r=this.getValidScrollbarCfg(),i=r.type,o=r.padding,a=r.width,c=r.height,l=r.style,u="vertical"!==i,s=(0,QCt.CR)(o,4),f=s[0],h=s[1],d=s[2],p=s[3],v=u?{x:e.minX+p,y:n.maxY-c-d}:{x:n.maxX-a-h,y:e.minY+f},g=this.getStep(),m=this.getCnt(),y=u?e.width-p-h:e.height-f-d,b=Math.max(y*(0,tOt.uZ)(g/m,0,1),20);return(0,QCt.pi)((0,QCt.pi)({},this.getThemeOptions()),{x:v.x,y:v.y,size:u?c:a,isHorizontal:u,trackLen:y,thumbLen:b,thumbOffset:0,theme:this.getScrollbarTheme(l)})},e.prototype.getValidScrollbarCfg=function(){var t={type:"horizontal",categorySize:32,width:8,height:8,padding:[0,0,0,0],animate:!0,style:{}};return(0,tOt.Kn)(this.option)&&(t=(0,QCt.pi)((0,QCt.pi)({},t),this.option)),(0,tOt.Kn)(this.option)&&this.option.padding||(t.padding=(t.type,[0,0,0,0])),t},e.prototype.getScrollbarData=function(){var t=this.view.getCoordinate(),e=this.getValidScrollbarCfg(),n=this.view.getOptions().data||[];return t.isReflect("y")&&"vertical"===e.type&&(n=(0,QCt.ev)([],(0,QCt.CR)(n),!1).reverse()),n},e}(_Zt),LNt=RNt,NNt={fill:"#CCD6EC",opacity:.3};function BNt(t,e,n){var r,i,o,a,c,l,u=function(t,e,n){var r,i,o=dZt(t,e,n);try{for(var a=(0,QCt.XA)(t.views),c=a.next();!c.done;c=a.next()){var l=c.value;o=o.concat(dZt(l,e,n))}}catch(u){r={error:u}}finally{try{c&&!c.done&&(i=a.return)&&i.call(a)}finally{if(r)throw r.error}}return o}(t,e,n);if(u.length){u=(0,tOt.xH)(u);try{for(var s=(0,QCt.XA)(u),f=s.next();!f.done;f=s.next()){var h=f.value;try{for(var d=(o=void 0,(0,QCt.XA)(h)),p=d.next();!p.done;p=d.next()){var v=p.value,g=v.mappingData,m=g.x,y=g.y;v.x=(0,tOt.kJ)(m)?m[m.length-1]:m,v.y=(0,tOt.kJ)(y)?y[y.length-1]:y}}catch(O){o={error:O}}finally{try{p&&!p.done&&(a=d.return)&&a.call(d)}finally{if(o)throw o.error}}}}catch(E){r={error:E}}finally{try{f&&!f.done&&(i=s.return)&&i.call(s)}finally{if(r)throw r.error}}if(!1===n.shared&&u.length>1){var b=u[0],x=Math.abs(e.y-b[0].y);try{for(var w=(0,QCt.XA)(u),S=w.next();!S.done;S=w.next()){var k=S.value,C=Math.abs(e.y-k[0].y);C<=x&&(b=k,x=C)}}catch(M){c={error:M}}finally{try{S&&!S.done&&(l=w.return)&&l.call(w)}finally{if(c)throw c.error}}u=[b]}return(0,tOt.jj)((0,tOt.xH)(u))}return[]}var zNt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.show=function(t){var e=this.context.view,n=this.context.event,r=e.getController("tooltip").getTooltipCfg(),i=BNt(e,{x:n.x,y:n.y},r);if(!(0,tOt.Xy)(i,this.items)&&(this.items=i,i.length)){var o=e.getXScale().field,a=i[0].data[o],c=[],l=e.geometries;if((0,tOt.S6)(l,(function(t){if("interval"===t.type||"schema"===t.type){var e=t.getElementsBy((function(t){return t.getData()[o]===a}));c=c.concat(e)}})),c.length){var u=e.getCoordinate(),s=c[0].shape.getCanvasBBox(),f=c[0].shape.getCanvasBBox(),h=s;(0,tOt.S6)(c,(function(t){var e=t.shape.getCanvasBBox();u.isTransposed?(e.minYf.maxY&&(f=e)):(e.minXf.maxX&&(f=e)),h.x=Math.min(e.minX,h.minX),h.y=Math.min(e.minY,h.minY),h.width=Math.max(e.maxX,h.maxX)-h.x,h.height=Math.max(e.maxY,h.maxY)-h.y}));var d=e.backgroundGroup,p=e.coordinateBBox,v=void 0;if(u.isRect){var g=e.getXScale(),m=t||{},y=m.appendRatio,b=m.appendWidth;(0,tOt.UM)(b)&&(y=(0,tOt.UM)(y)?g.isLinear?0:.25:y,b=u.isTransposed?y*f.height:y*s.width);var x=void 0,w=void 0,S=void 0,k=void 0;u.isTransposed?(x=p.minX,w=Math.min(f.minY,s.minY)-b,S=p.width,k=h.height+2*b):(x=Math.min(s.minX,f.minX)-b,w=p.minY,S=h.width+2*b,k=p.height),v=[["M",x,w],["L",x+S,w],["L",x+S,w+k],["L",x,w+k],["Z"]]}else{var C=(0,tOt.YM)(c),O=(0,tOt.Z$)(c),E=fDt(C.getModel(),u).startAngle,M=fDt(O.getModel(),u).endAngle,A=u.getCenter(),P=u.getRadius(),_=u.innerRadius*P;v=uDt(A.x,A.y,P,E,M,_)}if(this.regionPath)this.regionPath.attr("path",v),this.regionPath.show();else{var D=(0,tOt.U2)(t,"style",NNt);this.regionPath=d.addShape({type:"path",name:"active-region",capture:!1,attrs:(0,QCt.pi)((0,QCt.pi)({},D),{path:v})})}}}},e.prototype.hide=function(){this.regionPath&&this.regionPath.hide(),this.items=null},e.prototype.destroy=function(){this.hide(),this.regionPath&&this.regionPath.remove(!0),t.prototype.destroy.call(this)},e}(BDt),UNt=zNt,HNt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.timeStamp=0,e}return(0,QCt.ZT)(e,t),e.prototype.show=function(){var t=this.context,e=t.event,n=t.view;if(!n.isTooltipLocked()){var r=this.timeStamp,i=+new Date;if(i-r>(0,tOt.U2)(t.view.getOptions(),"tooltip.showDelay",16)){var o=this.location,a={x:e.x,y:e.y};o&&(0,tOt.Xy)(o,a)||this.showTooltip(n,a),this.timeStamp=i,this.location=a}}},e.prototype.hide=function(){var t=this.context.view,e=t.getController("tooltip"),n=this.context.event,r=n.clientX,i=n.clientY;e.isCursorEntered({x:r,y:i})||t.isTooltipLocked()||(this.hideTooltip(t),this.location=null)},e.prototype.showTooltip=function(t,e){t.showTooltip(e)},e.prototype.hideTooltip=function(t){t.hideTooltip()},e}(BDt),WNt=HNt,VNt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.showTooltip=function(t,e){var n=CTt(t);(0,tOt.S6)(n,(function(n){var r=OTt(t,n,e);n.showTooltip(r)}))},e.prototype.hideTooltip=function(t){var e=CTt(t);(0,tOt.S6)(e,(function(t){t.hideTooltip()}))},e}(WNt),GNt=VNt,XNt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.timeStamp=0,e}return(0,QCt.ZT)(e,t),e.prototype.destroy=function(){t.prototype.destroy.call(this),this.tooltip&&this.tooltip.destroy()},e.prototype.show=function(){var t=this.context.event,e=this.timeStamp,n=+new Date;if(n-e>16){var r=this.location,i={x:t.x,y:t.y};r&&(0,tOt.Xy)(r,i)||this.showTooltip(i),this.timeStamp=n,this.location=i}},e.prototype.hide=function(){this.hideTooltip(),this.location=null},e.prototype.showTooltip=function(t){var e=this.context.event.target;if(e&&e.get("tip")){this.tooltip||this.renderTooltip();var n=e.get("tip");this.tooltip.update((0,QCt.pi)({title:n},t)),this.tooltip.show()}},e.prototype.hideTooltip=function(){this.tooltip&&this.tooltip.hide()},e.prototype.renderTooltip=function(){var t,e=this.context.view,n=e.canvas,r={start:{x:0,y:0},end:{x:n.get("width"),y:n.get("height")}},i=e.getTheme(),o=(0,tOt.U2)(i,["components","tooltip","domStyles"],{}),a=new oDt({parent:n.get("el").parentNode,region:r,visible:!1,crosshairs:null,domStyles:(0,QCt.pi)({},(0,tOt.b$)({},o,(t={},t[k_t]={"max-width":"50%"},t[C_t]={"word-break":"break-all"},t)))});a.init(),a.setCapture(!1),this.tooltip=a},e}(BDt),qNt=XNt,YNt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.stateName="",e}return(0,QCt.ZT)(e,t),e.prototype.hasState=function(t){return t.hasState(this.stateName)},e.prototype.setElementState=function(t,e){t.setState(this.stateName,e)},e.prototype.setState=function(){this.setStateEnable(!0)},e.prototype.clear=function(){var t=this.context.view;this.clearViewState(t)},e.prototype.clearViewState=function(t){var e=this,n=gTt(t,this.stateName);(0,tOt.S6)(n,(function(t){e.setElementState(t,!1)}))},e}(BDt),$Nt=YNt;function KNt(t){return(0,tOt.U2)(t.get("delegateObject"),"item")}var JNt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.ignoreListItemStates=["unchecked"],e}return(0,QCt.ZT)(e,t),e.prototype.isItemIgnore=function(t,e){var n=this.ignoreListItemStates.filter((function(n){return e.hasState(t,n)}));return!!n.length},e.prototype.setStateByComponent=function(t,e,n){var r=this.context.view,i=t.get("field"),o=vTt(r);this.setElementsStateByItem(o,i,e,n)},e.prototype.setStateByElement=function(t,e){this.setElementState(t,e)},e.prototype.isMathItem=function(t,e,n){var r=MTt(this.context.view,e),i=mTt(t,e);return!(0,tOt.UM)(i)&&n.name===r.getText(i)},e.prototype.setElementsStateByItem=function(t,e,n,r){var i=this;(0,tOt.S6)(t,(function(t){i.isMathItem(t,e,n)&&t.setState(i.stateName,r)}))},e.prototype.setStateEnable=function(t){var e=oTt(this.context);if(e)cTt(this.context)&&this.setStateByElement(e,t);else{var n=aTt(this.context);if(lTt(n)){var r=n.item,i=n.component;if(r&&i&&!this.isItemIgnore(r,i)){var o=this.context.event.gEvent;if(o&&o.fromShape&&o.toShape&&KNt(o.fromShape)===KNt(o.toShape))return;this.setStateByComponent(i,r,t)}}}},e.prototype.toggle=function(){var t=oTt(this.context);if(t){var e=t.hasState(this.stateName);this.setElementState(t,!e)}},e.prototype.reset=function(){this.setStateEnable(!1)},e}($Nt),QNt=JNt,tBt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.stateName="active",e}return(0,QCt.ZT)(e,t),e.prototype.active=function(){this.setState()},e}(QNt),eBt=tBt,nBt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.cache={},e}return(0,QCt.ZT)(e,t),e.prototype.getColorScale=function(t,e){var n=e.geometry.getAttribute("color");return n?t.getScaleByField(n.getFields()[0]):null},e.prototype.getLinkPath=function(t,e){var n=this.context.view.getCoordinate().isTransposed,r=t.shape.getCanvasBBox(),i=e.shape.getCanvasBBox();return n?[["M",r.minX,r.minY],["L",i.minX,i.maxY],["L",i.maxX,i.maxY],["L",r.maxX,r.minY],["Z"]]:[["M",r.maxX,r.minY],["L",i.minX,i.minY],["L",i.minX,i.maxY],["L",r.maxX,r.maxY],["Z"]]},e.prototype.addLinkShape=function(t,e,n,r){var i={opacity:.4,fill:e.shape.attr("fill")};t.addShape({type:"path",attrs:(0,QCt.pi)((0,QCt.pi)({},(0,tOt.b$)({},i,(0,tOt.mf)(r)?r(i,e):r)),{path:this.getLinkPath(e,n)})})},e.prototype.linkByElement=function(t,e){var n=this,r=this.context.view,i=this.getColorScale(r,t);if(i){var o=mTt(t,i.field);if(!this.cache[o]){var a=function(t,e,n){return vTt(t).filter((function(t){return mTt(t,e)===n}))}(r,i.field,o),c=this.linkGroup.addGroup();this.cache[o]=c;var l=a.length;(0,tOt.S6)(a,(function(t,r){if(r=0}),e)},e}(oBt),EBt=OBt,MBt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.stateName="active",e}return(0,QCt.ZT)(e,t),e.prototype.highlight=function(){this.setState()},e.prototype.setElementState=function(t,e){vBt(vTt(this.context.view),(function(e){return t===e}),e)},e.prototype.clear=function(){pBt(this.context.view)},e}(uBt),ABt=MBt,PBt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.stateName="selected",e}return(0,QCt.ZT)(e,t),e.prototype.selected=function(){this.setState()},e}(oBt),_Bt=PBt,DBt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.stateName="selected",e}return(0,QCt.ZT)(e,t),e.prototype.selected=function(){this.setState()},e}(QNt),TBt=DBt,ZBt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.stateName="selected",e}return(0,QCt.ZT)(e,t),e.prototype.selected=function(){this.setState()},e}(uBt),FBt=ZBt,jBt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.stateName="",e.ignoreItemStates=[],e}return(0,QCt.ZT)(e,t),e.prototype.getTriggerListInfo=function(){var t=aTt(this.context),e=null;return lTt(t)&&(e={item:t.item,list:t.component}),e},e.prototype.getAllowComponents=function(){var t=this,e=wTt(this.context.view),n=[];return(0,tOt.S6)(e,(function(e){e.isList()&&t.allowSetStateByElement(e)&&n.push(e)})),n},e.prototype.hasState=function(t,e){return t.hasState(e,this.stateName)},e.prototype.clearAllComponentsState=function(){var t=this,e=this.getAllowComponents();(0,tOt.S6)(e,(function(e){e.clearItemsState(t.stateName)}))},e.prototype.allowSetStateByElement=function(t){var e=t.get("field");if(!e)return!1;if(this.cfg&&this.cfg.componentNames){var n=t.get("name");if(-1===this.cfg.componentNames.indexOf(n))return!1}var r=MTt(this.context.view,e);return r&&r.isCategory},e.prototype.allowSetStateByItem=function(t,e){var n=this.ignoreItemStates;if(n.length){var r=n.filter((function(n){return e.hasState(t,n)}));return 0===r.length}return!0},e.prototype.setStateByElement=function(t,e,n){var r=t.get("field"),i=MTt(this.context.view,r),o=mTt(e,r),a=i.getText(o);this.setItemsState(t,a,n)},e.prototype.setStateEnable=function(t){var e=this,n=oTt(this.context);if(n){var r=this.getAllowComponents();(0,tOt.S6)(r,(function(r){e.setStateByElement(r,n,t)}))}else{var i=aTt(this.context);if(lTt(i)){var o=i.item,a=i.component;this.allowSetStateByElement(a)&&this.allowSetStateByItem(o,a)&&this.setItemState(a,o,t)}}},e.prototype.setItemsState=function(t,e,n){var r=this,i=t.getItems();(0,tOt.S6)(i,(function(i){i.name===e&&r.setItemState(t,i,n)}))},e.prototype.setItemState=function(t,e,n){t.setItemState(e,this.stateName,n)},e.prototype.setState=function(){this.setStateEnable(!0)},e.prototype.reset=function(){this.setStateEnable(!1)},e.prototype.toggle=function(){var t=this.getTriggerListInfo();if(t&&t.item){var e=t.list,n=t.item,r=this.hasState(e,n);this.setItemState(e,n,!r)}},e.prototype.clear=function(){var t=this.getTriggerListInfo();t?t.list.clearItemsState(this.stateName):this.clearAllComponentsState()},e}(BDt),IBt=jBt,RBt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.stateName="active",e}return(0,QCt.ZT)(e,t),e.prototype.active=function(){this.setState()},e}(IBt),LBt=RBt,NBt="inactive",BBt="active";var zBt="inactive",UBt="active",HBt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.stateName=UBt,e.ignoreItemStates=["unchecked"],e}return(0,QCt.ZT)(e,t),e.prototype.setItemsState=function(t,e,n){this.setHighlightBy(t,(function(t){return t.name===e}),n)},e.prototype.setItemState=function(t,e,n){t.getItems();this.setHighlightBy(t,(function(t){return t===e}),n)},e.prototype.setHighlightBy=function(t,e,n){var r=t.getItems();if(n)(0,tOt.S6)(r,(function(n){e(n)?(t.hasState(n,zBt)&&t.setItemState(n,zBt,!1),t.setItemState(n,UBt,!0)):t.hasState(n,UBt)||t.setItemState(n,zBt,!0)}));else{var i=t.getItemsByState(UBt),o=!0;(0,tOt.S6)(i,(function(t){if(!e(t))return o=!1,!1})),o?this.clear():(0,tOt.S6)(r,(function(n){e(n)&&(t.hasState(n,UBt)&&t.setItemState(n,UBt,!1),t.setItemState(n,zBt,!0))}))}},e.prototype.highlight=function(){this.setState()},e.prototype.clear=function(){var t=this.getTriggerListInfo();if(t)!function(t){var e=t.getItems();(0,tOt.S6)(e,(function(e){t.hasState(e,BBt)&&t.setItemState(e,BBt,!1),t.hasState(e,NBt)&&t.setItemState(e,NBt,!1)}))}(t.list);else{var e=this.getAllowComponents();(0,tOt.S6)(e,(function(t){t.clearItemsState(UBt),t.clearItemsState(zBt)}))}},e}(IBt),WBt=HBt,VBt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.stateName="selected",e}return(0,QCt.ZT)(e,t),e.prototype.selected=function(){this.setState()},e}(IBt),GBt=VBt,XBt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.stateName="unchecked",e}return(0,QCt.ZT)(e,t),e.prototype.unchecked=function(){this.setState()},e}(IBt),qBt=XBt,YBt="unchecked",$Bt="checked",KBt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.stateName=$Bt,e}return(0,QCt.ZT)(e,t),e.prototype.setItemState=function(t,e,n){this.setCheckedBy(t,(function(t){return t===e}),n)},e.prototype.setCheckedBy=function(t,e,n){var r=t.getItems();n&&(0,tOt.S6)(r,(function(n){e(n)?(t.hasState(n,YBt)&&t.setItemState(n,YBt,!1),t.setItemState(n,$Bt,!0)):t.hasState(n,$Bt)||t.setItemState(n,YBt,!0)}))},e.prototype.toggle=function(){var t=this.getTriggerListInfo();if(t&&t.item){var e=t.list,n=t.item,r=!(0,tOt.G)(e.getItems(),(function(t){return e.hasState(t,YBt)}));r||e.hasState(n,YBt)?this.setItemState(e,n,!0):this.reset()}},e.prototype.checked=function(){this.setState()},e.prototype.reset=function(){var t=this.getAllowComponents();(0,tOt.S6)(t,(function(t){t.clearItemsState($Bt),t.clearItemsState(YBt)}))},e}(IBt),JBt=KBt,QBt="unchecked",tzt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.toggle=function(){var t,e,n,r,i,o,a,c,l=this.getTriggerListInfo();if(null==l?void 0:l.item){var u=l.list,s=l.item,f=u.getItems(),h=f.filter((function(t){return!u.hasState(t,QBt)})),d=f.filter((function(t){return u.hasState(t,QBt)})),p=h[0];if(f.length===h.length)try{for(var v=(0,QCt.XA)(f),g=v.next();!g.done;g=v.next()){var m=g.value;u.setItemState(m,QBt,m.id!==s.id)}}catch(C){t={error:C}}finally{try{g&&!g.done&&(e=v.return)&&e.call(v)}finally{if(t)throw t.error}}else if(f.length-d.length==1)if(p.id===s.id)try{for(var y=(0,QCt.XA)(f),b=y.next();!b.done;b=y.next()){m=b.value;u.setItemState(m,QBt,!1)}}catch(O){n={error:O}}finally{try{b&&!b.done&&(r=y.return)&&r.call(y)}finally{if(n)throw n.error}}else try{for(var x=(0,QCt.XA)(f),w=x.next();!w.done;w=x.next()){m=w.value;u.setItemState(m,QBt,m.id!==s.id)}}catch(E){i={error:E}}finally{try{w&&!w.done&&(o=x.return)&&o.call(x)}finally{if(i)throw i.error}}else try{for(var S=(0,QCt.XA)(f),k=S.next();!k.done;k=S.next()){m=k.value;u.setItemState(m,QBt,m.id!==s.id)}}catch(M){a={error:M}}finally{try{k&&!k.done&&(c=S.return)&&c.call(S)}finally{if(a)throw a.error}}}},e}(IBt),ezt=tzt,nzt="showRadio",rzt="legend-radio-tip",izt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.timeStamp=0,e}return(0,QCt.ZT)(e,t),e.prototype.show=function(){var t=this.getTriggerListInfo();if(null==t?void 0:t.item){var e=t.list,n=t.item;e.setItemState(n,nzt,!0)}},e.prototype.hide=function(){var t=this.getTriggerListInfo();if(null==t?void 0:t.item){var e=t.list,n=t.item;e.setItemState(n,nzt,!1)}},e.prototype.destroy=function(){t.prototype.destroy.call(this),this.tooltip&&this.tooltip.destroy()},e.prototype.showTip=function(){var t=this.context.event,e=this.timeStamp,n=+new Date,r=this.context.event.target;if(n-e>16&&"legend-item-radio"===r.get("name")){var i=this.location,o={x:t.x,y:t.y};this.timeStamp=n,this.location=o,i&&(0,tOt.Xy)(i,o)||this.showTooltip(o)}},e.prototype.hideTip=function(){this.hideTooltip(),this.location=null},e.prototype.showTooltip=function(t){var e=this.context,n=e.event.target;if(n&&n.get("tip")){this.tooltip||this.renderTooltip();var r=e.view.getCanvas().get("el").getBoundingClientRect(),i=r.x,o=r.y;this.tooltip.update((0,QCt.pi)((0,QCt.pi)({title:n.get("tip")},t),{x:t.x+i,y:t.y+o})),this.tooltip.show()}},e.prototype.hideTooltip=function(){this.tooltip&&this.tooltip.hide()},e.prototype.renderTooltip=function(){var t,e=((t={})[k_t]={padding:"6px 8px",transform:"translate(-50%, -80%)",background:"rgba(0,0,0,0.75)",color:"#fff","border-radius":"2px","z-index":100},t[C_t]={"font-size":"12px","line-height":"14px","margin-bottom":0,"word-break":"break-all"},t);document.getElementById(rzt)&&document.body.removeChild(document.getElementById(rzt));var n=new oDt({parent:document.body,region:null,visible:!1,crosshairs:null,domStyles:e,containerId:rzt});n.init(),n.setCapture(!1),this.tooltip=n},e}(IBt),ozt=izt,azt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.maskShape=null,e.points=[],e.starting=!1,e.moving=!1,e.preMovePoint=null,e.shapeType="path",e}return(0,QCt.ZT)(e,t),e.prototype.getCurrentPoint=function(){var t=this.context.event;return{x:t.x,y:t.y}},e.prototype.emitEvent=function(t){var e="mask:".concat(t),n=this.context.view,r=this.context.event;n.emit(e,{target:this.maskShape,shape:this.maskShape,points:this.points,x:r.x,y:r.y})},e.prototype.createMask=function(){var t=this.context.view,e=this.getMaskAttrs();return t.foregroundGroup.addShape({type:this.shapeType,name:"mask",draggable:!0,attrs:(0,QCt.pi)({fill:"#C5D4EB",opacity:.3},e)})},e.prototype.getMaskPath=function(){return[]},e.prototype.show=function(){this.maskShape&&(this.maskShape.show(),this.emitEvent("show"))},e.prototype.start=function(t){this.starting=!0,this.moving=!1,this.points=[this.getCurrentPoint()],this.maskShape||(this.maskShape=this.createMask(),this.maskShape.set("capture",!1)),this.updateMask(null==t?void 0:t.maskStyle),this.emitEvent("start")},e.prototype.moveStart=function(){this.moving=!0,this.preMovePoint=this.getCurrentPoint()},e.prototype.move=function(){if(this.moving&&this.maskShape){var t=this.getCurrentPoint(),e=this.preMovePoint,n=t.x-e.x,r=t.y-e.y,i=this.points;(0,tOt.S6)(i,(function(t){t.x+=n,t.y+=r})),this.updateMask(),this.emitEvent("change"),this.preMovePoint=t}},e.prototype.updateMask=function(t){var e=(0,tOt.b$)({},this.getMaskAttrs(),t);this.maskShape.attr(e)},e.prototype.moveEnd=function(){this.moving=!1,this.preMovePoint=null},e.prototype.end=function(){this.starting=!1,this.emitEvent("end"),this.maskShape&&this.maskShape.set("capture",!0)},e.prototype.hide=function(){this.maskShape&&(this.maskShape.hide(),this.emitEvent("hide"))},e.prototype.resize=function(){this.starting&&this.maskShape&&(this.points.push(this.getCurrentPoint()),this.updateMask(),this.emitEvent("change"))},e.prototype.destroy=function(){this.points=[],this.maskShape&&this.maskShape.remove(),this.maskShape=null,this.preMovePoint=null,t.prototype.destroy.call(this)},e}(BDt),czt=azt;function lzt(t){var e=(0,tOt.Z$)(t),n=0,r=0,i=0;if(t.length){var o=t[0];n=STt(o,e)/2,r=(e.x+o.x)/2,i=(e.y+o.y)/2}return{x:r,y:i,r:n}}var uzt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.shapeType="circle",e}return(0,QCt.ZT)(e,t),e.prototype.getMaskAttrs=function(){return lzt(this.points)},e}(czt),szt=uzt;function fzt(t){return{start:(0,tOt.YM)(t),end:(0,tOt.Z$)(t)}}function hzt(t,e){return{x:Math.min(t.x,e.x),y:Math.min(t.y,e.y),width:Math.abs(e.x-t.x),height:Math.abs(e.y-t.y)}}var dzt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.shapeType="rect",e}return(0,QCt.ZT)(e,t),e.prototype.getRegion=function(){return fzt(this.points)},e.prototype.getMaskAttrs=function(){var t=this.getRegion();return hzt(t.start,t.end)},e}(czt),pzt=dzt;function vzt(t){t.x=(0,tOt.uZ)(t.x,0,1),t.y=(0,tOt.uZ)(t.y,0,1)}function gzt(t,e,n,r){var i=null,o=null,a=r.invert((0,tOt.YM)(t)),c=r.invert((0,tOt.Z$)(t));return n&&(vzt(a),vzt(c)),"x"===e?(i=r.convert({x:a.x,y:0}),o=r.convert({x:c.x,y:1})):(i=r.convert({x:0,y:a.y}),o=r.convert({x:1,y:c.y})),{start:i,end:o}}var mzt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.dim="x",e.inPlot=!0,e}return(0,QCt.ZT)(e,t),e.prototype.getRegion=function(){var t=this.context.view.getCoordinate();return gzt(this.points,this.dim,this.inPlot,t)},e}(pzt),yzt=mzt;function bzt(t){var e=[];return t.length&&((0,tOt.S6)(t,(function(t,n){0===n?e.push(["M",t.x,t.y]):e.push(["L",t.x,t.y])})),e.push(["L",t[0].x,t[0].y])),e}function xzt(t){return{path:bzt(t)}}var wzt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getMaskPath=function(){return bzt(this.points)},e.prototype.getMaskAttrs=function(){return xzt(this.points)},e.prototype.addPoint=function(){this.resize()},e}(czt),Szt=wzt;function kzt(t){return function(t,e){if(t.length<=2)return KDt(t,!1);var n=t[0],r=[];(0,tOt.S6)(t,(function(t){r.push(t.x),r.push(t.y)}));var i=$Dt(r,e,null);return i.unshift(["M",n.x,n.y]),i}(t,!0)}function Czt(t){return{path:kzt(t)}}var Ozt,Ezt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getMaskPath=function(){return kzt(this.points)},e.prototype.getMaskAttrs=function(){return Czt(this.points)},e}(Szt),Mzt=Ezt,Azt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.maskShapes=[],e.starting=!1,e.moving=!1,e.recordPoints=null,e.preMovePoint=null,e.shapeType="path",e.maskType="multi-mask",e}return(0,QCt.ZT)(e,t),e.prototype.getCurrentPoint=function(){var t=this.context.event;return{x:t.x,y:t.y}},e.prototype.emitEvent=function(t){var e="".concat(this.maskType,":").concat(t),n=this.context.view,r=this.context.event,i={type:this.shapeType,name:this.maskType,get:function(t){return i.hasOwnProperty(t)?i[t]:void 0}};n.emit(e,{target:i,maskShapes:this.maskShapes,multiPoints:this.recordPoints,x:r.x,y:r.y})},e.prototype.createMask=function(t){var e=this.context.view,n=this.recordPoints[t],r=this.getMaskAttrs(n),i=e.foregroundGroup.addShape({type:this.shapeType,name:"mask",draggable:!0,attrs:(0,QCt.pi)({fill:"#C5D4EB",opacity:.3},r)});this.maskShapes.push(i)},e.prototype.getMaskPath=function(t){return[]},e.prototype.show=function(){this.maskShapes.length>0&&(this.maskShapes.forEach((function(t){return t.show()})),this.emitEvent("show"))},e.prototype.start=function(t){this.recordPointStart(),this.starting=!0,this.moving=!1;var e=this.recordPoints.length-1;this.createMask(e),this.updateShapesCapture(!1),this.updateMask(null==t?void 0:t.maskStyle),this.emitEvent("start")},e.prototype.moveStart=function(){this.moving=!0,this.preMovePoint=this.getCurrentPoint(),this.updateShapesCapture(!1)},e.prototype.move=function(){if(this.moving&&0!==this.maskShapes.length){var t=this.getCurrentPoint(),e=this.preMovePoint,n=t.x-e.x,r=t.y-e.y,i=this.getCurMaskShapeIndex();i>-1&&(this.recordPoints[i].forEach((function(t){t.x+=n,t.y+=r})),this.updateMask(),this.emitEvent("change"),this.preMovePoint=t)}},e.prototype.updateMask=function(t){var e=this;this.recordPoints.forEach((function(n,r){var i=(0,tOt.b$)({},e.getMaskAttrs(n),t);e.maskShapes[r].attr(i)}))},e.prototype.resize=function(){this.starting&&this.maskShapes.length>0&&(this.recordPointContinue(),this.updateMask(),this.emitEvent("change"))},e.prototype.moveEnd=function(){this.moving=!1,this.preMovePoint=null,this.updateShapesCapture(!0)},e.prototype.end=function(){this.starting=!1,this.emitEvent("end"),this.updateShapesCapture(!0)},e.prototype.hide=function(){this.maskShapes.length>0&&(this.maskShapes.forEach((function(t){return t.hide()})),this.emitEvent("hide"))},e.prototype.remove=function(){var t=this.getCurMaskShapeIndex();t>-1&&(this.recordPoints.splice(t,1),this.maskShapes[t].remove(),this.maskShapes.splice(t,1),this.preMovePoint=null,this.updateShapesCapture(!0),this.emitEvent("change"))},e.prototype.clearAll=function(){this.recordPointClear(),this.maskShapes.forEach((function(t){return t.remove()})),this.maskShapes=[],this.preMovePoint=null},e.prototype.clear=function(){var t=this.getCurMaskShapeIndex();-1===t?(this.recordPointClear(),this.maskShapes.forEach((function(t){return t.remove()})),this.maskShapes=[],this.emitEvent("clearAll")):(this.recordPoints.splice(t,1),this.maskShapes[t].remove(),this.maskShapes.splice(t,1),this.preMovePoint=null,this.emitEvent("clearSingle")),this.preMovePoint=null},e.prototype.destroy=function(){this.clear(),t.prototype.destroy.call(this)},e.prototype.getRecordPoints=function(){var t;return(0,QCt.ev)([],(0,QCt.CR)(null!==(t=this.recordPoints)&&void 0!==t?t:[]),!1)},e.prototype.recordPointStart=function(){var t=this.getRecordPoints(),e=this.getCurrentPoint();this.recordPoints=(0,QCt.ev)((0,QCt.ev)([],(0,QCt.CR)(t),!1),[[e]],!1)},e.prototype.recordPointContinue=function(){var t=this.getRecordPoints(),e=this.getCurrentPoint(),n=t.splice(-1,1)[0]||[];n.push(e),this.recordPoints=(0,QCt.ev)((0,QCt.ev)([],(0,QCt.CR)(t),!1),[n],!1)},e.prototype.recordPointClear=function(){this.recordPoints=[]},e.prototype.updateShapesCapture=function(t){this.maskShapes.forEach((function(e){return e.set("capture",t)}))},e.prototype.getCurMaskShapeIndex=function(){var t=this.getCurrentPoint();return this.maskShapes.findIndex((function(e){var n=e.attrs,r=n.width,i=n.height,o=n.r;return!(0===r||0===i||0===o)&&e.isHit(t.x,t.y)}))},e}(BDt),Pzt=Azt,_zt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.shapeType="rect",e}return(0,QCt.ZT)(e,t),e.prototype.getRegion=function(t){return fzt(t)},e.prototype.getMaskAttrs=function(t){var e=this.getRegion(t);return hzt(e.start,e.end)},e}(Pzt),Dzt=_zt,Tzt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.dim="x",e.inPlot=!0,e}return(0,QCt.ZT)(e,t),e.prototype.getRegion=function(t){var e=this.context.view.getCoordinate();return gzt(t,this.dim,this.inPlot,e)},e}(Dzt),Zzt=Tzt,Fzt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.shapeType="circle",e.getMaskAttrs=lzt,e}return(0,QCt.ZT)(e,t),e}(Pzt),jzt=Fzt,Izt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.getMaskPath=bzt,e.getMaskAttrs=xzt,e}return(0,QCt.ZT)(e,t),e.prototype.addPoint=function(){this.resize()},e}(Pzt),Rzt=Izt,Lzt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.getMaskPath=kzt,e.getMaskAttrs=Czt,e}return(0,QCt.ZT)(e,t),e}(Rzt),Nzt=Lzt,Bzt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.setCursor=function(t){this.context.view.getCanvas().setCursor(t)},e.prototype.default=function(){this.setCursor("default")},e.prototype.pointer=function(){this.setCursor("pointer")},e.prototype.move=function(){this.setCursor("move")},e.prototype.crosshair=function(){this.setCursor("crosshair")},e.prototype.wait=function(){this.setCursor("wait")},e.prototype.help=function(){this.setCursor("help")},e.prototype.text=function(){this.setCursor("text")},e.prototype.eResize=function(){this.setCursor("e-resize")},e.prototype.wResize=function(){this.setCursor("w-resize")},e.prototype.nResize=function(){this.setCursor("n-resize")},e.prototype.sResize=function(){this.setCursor("s-resize")},e.prototype.neResize=function(){this.setCursor("ne-resize")},e.prototype.nwResize=function(){this.setCursor("nw-resize")},e.prototype.seResize=function(){this.setCursor("se-resize")},e.prototype.swResize=function(){this.setCursor("sw-resize")},e.prototype.nsResize=function(){this.setCursor("ns-resize")},e.prototype.ewResize=function(){this.setCursor("ew-resize")},e.prototype.zoomIn=function(){this.setCursor("zoom-in")},e.prototype.zoomOut=function(){this.setCursor("zoom-out")},e}(BDt),zzt=Bzt,Uzt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.filterView=function(t,e,n){var r=this;t.getScaleByField(e)&&t.filter(e,n),t.views&&t.views.length&&(0,tOt.S6)(t.views,(function(t){r.filterView(t,e,n)}))},e.prototype.filter=function(){var t=aTt(this.context);if(t){var e=this.context.view,n=t.component,r=n.get("field");if(lTt(t)){if(r){var i=n.getItemsByState("unchecked"),o=MTt(e,r),a=i.map((function(t){return t.name}));a.length?this.filterView(e,r,(function(t){var e=o.getText(t);return!a.includes(e)})):this.filterView(e,r,null),e.render(!0)}}else if(uTt(t)){var c=n.getValue(),l=(0,QCt.CR)(c,2),u=l[0],s=l[1];this.filterView(e,r,(function(t){return t>=u&&t<=s})),e.render(!0)}}},e}(BDt),Hzt=Uzt;function Wzt(t,e,n,r){var i=Math.min(n[e],r[e]),o=Math.max(n[e],r[e]),a=(0,QCt.CR)(t.range,2),c=a[0],l=a[1];if(il&&(o=l),i===l&&o===l)return null;var u=t.invert(i),s=t.invert(o);if(t.isCategory){var f=t.values.indexOf(u),h=t.values.indexOf(s),d=t.values.slice(f,h+1);return function(t){return d.includes(t)}}return function(t){return t>=u&&t<=s}}!function(t){t.FILTER="brush-filter-processing",t.RESET="brush-filter-reset",t.BEFORE_FILTER="brush-filter:beforefilter",t.AFTER_FILTER="brush-filter:afterfilter",t.BEFORE_RESET="brush-filter:beforereset",t.AFTER_RESET="brush-filter:afterreset"}(Ozt||(Ozt={}));var Vzt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.dims=["x","y"],e.startPoint=null,e.isStarted=!1,e}return(0,QCt.ZT)(e,t),e.prototype.hasDim=function(t){return this.dims.includes(t)},e.prototype.start=function(){var t=this.context;this.isStarted=!0,this.startPoint=t.getCurrentPoint()},e.prototype.filter=function(){var t,e;if(sTt(this.context)){var n=this.context.event.target.getCanvasBBox();t={x:n.x,y:n.y},e={x:n.maxX,y:n.maxY}}else{if(!this.isStarted)return;t=this.startPoint,e=this.context.getCurrentPoint()}if(!(Math.abs(t.x-e.x)<5||Math.abs(t.x-e.y)<5)){var r=this.context,i=r.view,o={view:i,event:r.event,dims:this.dims};i.emit(Ozt.BEFORE_FILTER,xZt.fromData(i,Ozt.BEFORE_FILTER,o));var a=i.getCoordinate(),c=a.invert(e),l=a.invert(t);if(this.hasDim("x")){var u=i.getXScale(),s=Wzt(u,"x",c,l);this.filterView(i,u.field,s)}if(this.hasDim("y")){var f=i.getYScales()[0];s=Wzt(f,"y",c,l);this.filterView(i,f.field,s)}this.reRender(i,{source:Ozt.FILTER}),i.emit(Ozt.AFTER_FILTER,xZt.fromData(i,Ozt.AFTER_FILTER,o))}},e.prototype.end=function(){this.isStarted=!1},e.prototype.reset=function(){var t=this.context.view;if(t.emit(Ozt.BEFORE_RESET,xZt.fromData(t,Ozt.BEFORE_RESET,{})),this.isStarted=!1,this.hasDim("x")){var e=t.getXScale();this.filterView(t,e.field,null)}if(this.hasDim("y")){var n=t.getYScales()[0];this.filterView(t,n.field,null)}this.reRender(t,{source:Ozt.RESET}),t.emit(Ozt.AFTER_RESET,xZt.fromData(t,Ozt.AFTER_RESET,{}))},e.prototype.filterView=function(t,e,n){t.filter(e,n)},e.prototype.reRender=function(t,e){t.render(!0,e)},e}(BDt),Gzt=Vzt,Xzt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.filterView=function(t,e,n){var r=CTt(t);(0,tOt.S6)(r,(function(t){t.filter(e,n)}))},e.prototype.reRender=function(t){var e=CTt(t);(0,tOt.S6)(e,(function(t){t.render(!0)}))},e}(Gzt),qzt=Xzt,Yzt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.filter=function(){var t=aTt(this.context),e=this.context.view,n=vTt(e);if(sTt(this.context)){var r=hTt(this.context,10);r&&(0,tOt.S6)(n,(function(t){r.includes(t)?t.show():t.hide()}))}else if(t){var i=t.component,o=i.get("field");if(lTt(t)){if(o){var a=i.getItemsByState("unchecked"),c=MTt(e,o),l=a.map((function(t){return t.name}));(0,tOt.S6)(n,(function(t){var e=mTt(t,o),n=c.getText(e);l.indexOf(n)>=0?t.hide():t.show()}))}}else if(uTt(t)){var u=i.getValue(),s=(0,QCt.CR)(u,2),f=s[0],h=s[1];(0,tOt.S6)(n,(function(t){var e=mTt(t,o);e>=f&&e<=h?t.show():t.hide()}))}}},e.prototype.clear=function(){var t=vTt(this.context.view);(0,tOt.S6)(t,(function(t){t.show()}))},e.prototype.reset=function(){this.clear()},e}(BDt),$zt=Yzt,Kzt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.byRecord=!1,e}return(0,QCt.ZT)(e,t),e.prototype.filter=function(){sTt(this.context)&&(this.byRecord?this.filterByRecord():this.filterByBBox())},e.prototype.filterByRecord=function(){var t=this.context.view,e=hTt(this.context,10);if(e){var n=t.getXScale().field,r=t.getYScales()[0].field,i=e.map((function(t){return t.getModel().data})),o=CTt(t);(0,tOt.S6)(o,(function(t){var e=vTt(t);(0,tOt.S6)(e,(function(t){var e=t.getModel().data;ETt(i,e,n,r)?t.show():t.hide()}))}))}},e.prototype.filterByBBox=function(){var t=this,e=CTt(this.context.view);(0,tOt.S6)(e,(function(e){var n=dTt(t.context,e,10),r=vTt(e);n&&(0,tOt.S6)(r,(function(t){n.includes(t)?t.show():t.hide()}))}))},e.prototype.reset=function(){var t=CTt(this.context.view);(0,tOt.S6)(t,(function(t){var e=vTt(t);(0,tOt.S6)(e,(function(t){t.show()}))}))},e}(BDt),Jzt=Kzt,Qzt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.buttonGroup=null,e.buttonCfg={name:"button",text:"button",textStyle:{x:0,y:0,fontSize:12,fill:"#333333",cursor:"pointer"},padding:[8,10],style:{fill:"#f7f7f7",stroke:"#cccccc",cursor:"pointer"},activeStyle:{fill:"#e6e6e6"}},e}return(0,QCt.ZT)(e,t),e.prototype.getButtonCfg=function(){return(0,tOt.b$)(this.buttonCfg,this.cfg)},e.prototype.drawButton=function(){var t=this.getButtonCfg(),e=this.context.view.foregroundGroup.addGroup({name:t.name}),n=e.addShape({type:"text",name:"button-text",attrs:(0,QCt.pi)({text:t.text},t.textStyle)}).getBBox(),r=pZt(t.padding),i=e.addShape({type:"rect",name:"button-rect",attrs:(0,QCt.pi)({x:n.x-r[3],y:n.y-r[0],width:n.width+r[1]+r[3],height:n.height+r[0]+r[2]},t.style)});i.toBack(),e.on("mouseenter",(function(){i.attr(t.activeStyle)})),e.on("mouseleave",(function(){i.attr(t.style)})),this.buttonGroup=e},e.prototype.resetPosition=function(){var t=this.context.view.getCoordinate().convert({x:1,y:1}),e=this.buttonGroup,n=e.getBBox(),r=rAt.vs(null,[["t",t.x-n.width-10,t.y+n.height+5]]);e.setMatrix(r)},e.prototype.show=function(){this.buttonGroup||this.drawButton(),this.resetPosition(),this.buttonGroup.show()},e.prototype.hide=function(){this.buttonGroup&&this.buttonGroup.hide()},e.prototype.destroy=function(){var e=this.buttonGroup;e&&e.remove(),t.prototype.destroy.call(this)},e}(BDt),tUt=Qzt,eUt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.starting=!1,e.dragStart=!1,e}return(0,QCt.ZT)(e,t),e.prototype.start=function(){this.starting=!0,this.startPoint=this.context.getCurrentPoint()},e.prototype.drag=function(){if(this.startPoint){var t=this.context.getCurrentPoint(),e=this.context.view,n=this.context.event;this.dragStart?e.emit("drag",{target:n.target,x:n.x,y:n.y}):STt(t,this.startPoint)>4&&(e.emit("dragstart",{target:n.target,x:n.x,y:n.y}),this.dragStart=!0)}},e.prototype.end=function(){if(this.dragStart){var t=this.context.view,e=this.context.event;t.emit("dragend",{target:e.target,x:e.x,y:e.y})}this.starting=!1,this.dragStart=!1},e}(BDt),nUt=eUt,rUt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.starting=!1,e.isMoving=!1,e.startPoint=null,e.startMatrix=null,e}return(0,QCt.ZT)(e,t),e.prototype.start=function(){this.starting=!0,this.startPoint=this.context.getCurrentPoint(),this.startMatrix=this.context.view.middleGroup.getMatrix()},e.prototype.move=function(){if(this.starting){var t=this.startPoint,e=this.context.getCurrentPoint();if(STt(t,e)>5&&!this.isMoving&&(this.isMoving=!0),this.isMoving){var n=this.context.view,r=rAt.vs(this.startMatrix,[["t",e.x-t.x,e.y-t.y]]);n.backgroundGroup.setMatrix(r),n.foregroundGroup.setMatrix(r),n.middleGroup.setMatrix(r)}}},e.prototype.end=function(){this.isMoving&&(this.isMoving=!1),this.startMatrix=null,this.starting=!1,this.startPoint=null},e.prototype.reset=function(){this.starting=!1,this.startPoint=null,this.isMoving=!1;var t=this.context.view;t.backgroundGroup.resetMatrix(),t.foregroundGroup.resetMatrix(),t.middleGroup.resetMatrix(),this.isMoving=!1},e}(BDt),iUt=rUt,oUt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.dims=["x","y"],e.cfgFields=["dims"],e.cacheScaleDefs={},e}return(0,QCt.ZT)(e,t),e.prototype.hasDim=function(t){return this.dims.includes(t)},e.prototype.getScale=function(t){var e=this.context.view;return"x"===t?e.getXScale():e.getYScales()[0]},e.prototype.resetDim=function(t){var e=this.context.view;if(this.hasDim(t)&&this.cacheScaleDefs[t]){var n=this.getScale(t);e.scale(n.field,this.cacheScaleDefs[t]),this.cacheScaleDefs[t]=null}},e.prototype.reset=function(){this.resetDim("x"),this.resetDim("y"),this.context.view.render(!0)},e}(BDt),aUt=oUt,cUt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.startPoint=null,e.starting=!1,e.startCache={},e}return(0,QCt.ZT)(e,t),e.prototype.start=function(){var t=this;this.startPoint=this.context.getCurrentPoint(),this.starting=!0;var e=this.dims;(0,tOt.S6)(e,(function(e){var n=t.getScale(e),r=n.min,i=n.max,o=n.values;t.startCache[e]={min:r,max:i,values:o}}))},e.prototype.end=function(){this.startPoint=null,this.starting=!1,this.startCache={}},e.prototype.translate=function(){var t=this;if(this.starting){var e=this.startPoint,n=this.context.view.getCoordinate(),r=this.context.getCurrentPoint(),i=n.invert(e),o=n.invert(r),a=o.x-i.x,c=o.y-i.y,l=this.context.view,u=this.dims;(0,tOt.S6)(u,(function(e){t.translateDim(e,{x:-1*a,y:-1*c})})),l.render(!0)}},e.prototype.translateDim=function(t,e){if(this.hasDim(t)){var n=this.getScale(t);n.isLinear&&this.translateLinear(t,n,e)}},e.prototype.translateLinear=function(t,e,n){var r=this.context.view,i=this.startCache[t],o=i.min,a=i.max,c=a-o,l=n[t]*c;this.cacheScaleDefs[t]||(this.cacheScaleDefs[t]={nice:e.nice,min:o,max:a}),r.scale(e.field,{nice:!1,min:o+l,max:a+l})},e.prototype.reset=function(){t.prototype.reset.call(this),this.startPoint=null,this.starting=!1},e}(aUt),lUt=cUt,uUt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.zoomRatio=.05,e}return(0,QCt.ZT)(e,t),e.prototype.zoomIn=function(){this.zoom(this.zoomRatio)},e.prototype.zoom=function(t){var e=this,n=this.dims;(0,tOt.S6)(n,(function(n){e.zoomDim(n,t)})),this.context.view.render(!0)},e.prototype.zoomOut=function(){this.zoom(-1*this.zoomRatio)},e.prototype.zoomDim=function(t,e){if(this.hasDim(t)){var n=this.getScale(t);n.isLinear&&this.zoomLinear(t,n,e)}},e.prototype.zoomLinear=function(t,e,n){var r=this.context.view;this.cacheScaleDefs[t]||(this.cacheScaleDefs[t]={nice:e.nice,min:e.min,max:e.max});var i=this.cacheScaleDefs[t],o=i.max-i.min,a=e.min,c=e.max,l=n*o,u=a-l,s=c+l,f=(s-u)/o;s>u&&f<100&&f>.01&&r.scale(e.field,{nice:!1,min:a-l,max:c+l})},e}(aUt),sUt=uUt;var fUt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.scroll=function(t){var e=this.context,n=e.view,r=e.event;if(n.getOptions().scrollbar){var i=(null==t?void 0:t.wheelDelta)||1,o=n.getController("scrollbar"),a=n.getXScale(),c=n.getOptions().data,l=(0,tOt.dp)((0,tOt.I)(c,a.field)),u=(0,tOt.dp)(a.values),s=o.getValue(),f=Math.floor((l-u)*s)+(function(t){return t.gEvent.originalEvent.deltaY>0}(r)?i:-i),h=i/(l-u)/1e4,d=(0,tOt.uZ)(f/(l-u)+h,0,1);o.setValue(d)}},e}(BDt),hUt=fUt,dUt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.show=function(){var t=this.context,e=aTt(t).axis.cfg.title,n=e.description,r=e.text,i=e.descriptionTooltipStyle,o=t.event,a=o.x,c=o.y;this.tooltip||this.renderTooltip(),this.tooltip.update({title:r||"",customContent:function(){return'\n
      \n
      \n 字段说明:').concat(n,"\n
      \n
      \n ")},x:a,y:c}),this.tooltip.show()},e.prototype.destroy=function(){t.prototype.destroy.call(this),this.tooltip&&this.tooltip.destroy()},e.prototype.hide=function(){this.tooltip&&this.tooltip.hide()},e.prototype.renderTooltip=function(){var t,e=this.context.view.canvas,n={start:{x:0,y:0},end:{x:e.get("width"),y:e.get("height")}},r=new oDt({parent:e.get("el").parentNode,region:n,visible:!1,containerId:"aixs-description-tooltip",domStyles:(0,QCt.pi)({},(0,tOt.b$)({},(t={},t[k_t]={"max-width":"50%",padding:"10px","line-height":"15px","font-size":"12px",color:"rgba(0, 0, 0, .65)"},t[C_t]={"word-break":"break-all","margin-bottom":"3px"},t)))});r.init(),r.setCapture(!1),this.tooltip=r},e}(BDt),pUt=dUt;function vUt(t){return t.isInPlot()}function gUt(t){return t.gEvent.preventDefault(),t.gEvent.originalEvent.deltaY>0}!function(t,e){rZt[(0,tOt.vl)(t)]=nZt(e)}("dark",HTt(YFt)),vOt("canvas",P),vOt("svg",D),MZt("Polygon",nLt),MZt("Interval",qRt),MZt("Schema",iLt),MZt("Path",_Rt),MZt("Point",tLt),MZt("Line",$Rt),MZt("Area",jRt),MZt("Edge",RRt),MZt("Heatmap",NRt),MZt("Violin",aLt),GZt("base",gFt),GZt("interval",yLt),GZt("pie",kLt),GZt("polar",wLt),XZt("overlap",(function(t,e,n,r){var i=new PLt;(0,tOt.S6)(e,(function(t){for(var e=t.find((function(t){return"text"===t.get("type")})),n=e.attr(),r=n.x,o=n.y,a=!1,c=0;c<=8;c++){var l=_Lt(e,r,o,c);if(i.hasGap(l)){i.fillGap(l),a=!0;break}}a||t.remove(!0)})),i.destroy()})),XZt("distribute",(function(t,e,n,r){if(t.length&&e.length){var i=t[0]?t[0].offset:0,o=e[0].get("coordinate"),a=o.getRadius(),c=o.getCenter();if(i>0){var l=2*(a+i)+28,u={start:o.start,end:o.end},s=[[],[]];t.forEach((function(t){t&&("right"===t.textAlign?s[0].push(t):s[1].push(t))})),s.forEach((function(t,n){var r=l/14;t.length>r&&(t.sort((function(t,e){return e["..percent"]-t["..percent"]})),t.splice(r,t.length-r)),t.sort((function(t,e){return t.y-e.y})),function(t,e,n,r,i,o){var a,c,l,u=!0,s=r.start,f=r.end,h=Math.min(s.y,f.y),d=Math.abs(s.y-f.y),p=0,v=Number.MIN_VALUE,g=e.map((function(t){return t.y>p&&(p=t.y),t.yd&&(d=p-h);u;)for(g.forEach((function(t){var e=(Math.min.apply(v,t.targets)+Math.max.apply(v,t.targets))/2;t.pos=Math.min(Math.max(v,e-t.size/2),d-t.size)})),u=!1,l=g.length;l--;)if(l>0){var m=g[l-1],y=g[l];m.pos+m.size>y.pos&&(m.size+=y.size,m.targets=m.targets.concat(y.targets),m.pos+m.size>d&&(m.pos=d-m.size),g.splice(l,1),u=!0)}l=0,g.forEach((function(t){var r=h+n/2;t.targets.forEach((function(){e[l].y=t.pos+r,r+=n,l++}))}));var b={};try{for(var x=(0,QCt.XA)(t),w=x.next();!w.done;w=x.next()){var S=w.value;b[S.get("id")]=S}}catch(k){a={error:k}}finally{try{w&&!w.done&&(c=x.return)&&c.call(x)}finally{if(a)throw a.error}}e.forEach((function(t){var e=t.r*t.r,n=Math.pow(Math.abs(t.y-i.y),2);if(ei.maxX||r.maxY>i.maxY)&&t.remove(!0)}))})),XZt("limit-in-canvas",(function(t,e,n,r){(0,tOt.S6)(e,(function(t){var e=r.minX,n=r.minY,i=r.maxX,o=r.maxY,a=t.getCanvasBBox(),c=a.minX,l=a.minY,u=a.maxX,s=a.maxY,f=a.x,h=a.y,d=a.width,p=a.height,v=f,g=h;(ci?v=i-d:u>i&&(v-=u-i),l>o?g=o-p:s>o&&(g-=s-o),v===f&&g===h||aFt(t,v-f,g-h)}))})),XZt("limit-in-plot",(function(t,e,n,r,i){if(!(e.length<=0)){var o=(null==i?void 0:i.direction)||["top","right","bottom","left"],a=(null==i?void 0:i.action)||"translate",c=(null==i?void 0:i.margin)||0,l=e[0].get("coordinate");if(l){var u=function(t,e){void 0===e&&(e=0);var n=t.start,r=t.end,i=t.getWidth(),o=t.getHeight(),a=Math.min(n.x,r.x),c=Math.min(n.y,r.y);return gDt.fromRange(a-e,c-e,a+i+e,c+o+e)}(l,c),s=u.minX,f=u.minY,h=u.maxX,d=u.maxY;(0,tOt.S6)(e,(function(t){var e=t.getCanvasBBox(),n=e.minX,r=e.minY,i=e.maxX,c=e.maxY,l=e.x,u=e.y,p=e.width,v=e.height,g=l,m=u;if(o.indexOf("left")>=0&&(n=0&&(r=0&&(n>h?g=h-p:i>h&&(g-=i-h)),o.indexOf("bottom")>=0&&(r>d?m=d-v:c>d&&(m-=c-d)),g!==l||m!==u){var y=g-l;if("translate"===a)aFt(t,y,m-u);else if("ellipsis"===a){var b=t.findAll((function(t){return"text"===t.get("type")}));b.forEach((function(t){var e=(0,tOt.ei)(t.attr(),["fontSize","fontFamily","fontWeight","fontStyle","fontVariant"]),n=t.getCanvasBBox(),r=function(t,e,n){var r,i=KLt("...",n);r=(0,tOt.HD)(t)?t:(0,tOt.BB)(t);var o,a,c=e,l=[];if(KLt(t,n)<=e)return t;for(;o=r.substr(0,16),!((a=KLt(o,n))+i>c&&a>c);)if(l.push(o),c-=a,!(r=r.substr(16)))return l.join("");for(;o=r.substr(0,1),!((a=KLt(o,n))+i>c);)if(l.push(o),c-=a,!(r=r.substr(1)))return l.join("");return"".concat(l.join(""),"...")}(t.attr("text"),n.width-Math.abs(y),e);t.attr("text",r)}))}else t.hide()}}))}}})),XZt("pie-outer",(function(t,e,n,r){var i,o,a=(0,tOt.hX)(t,(function(t){return!(0,tOt.UM)(t)})),c=e[0]&&e[0].get("coordinate");if(c){var l=c.getCenter(),u=c.getRadius(),s={};try{for(var f=(0,QCt.XA)(e),h=f.next();!h.done;h=f.next()){var d=h.value;s[d.get("id")]=d}}catch(k){i={error:k}}finally{try{h&&!h.done&&(o=f.return)&&o.call(f)}finally{if(i)throw i.error}}var p=(0,tOt.U2)(a[0],"labelHeight",14),v=(0,tOt.U2)(a[0],"offset",0);if(!(v<=0)){var g="right",m=(0,tOt.vM)(a,(function(t){return t.xn&&(t.sort((function(t,e){return e.percent-t.percent})),(0,tOt.S6)(t,(function(t,e){e+1>n&&(s[t.id].set("visible",!1),t.invisible=!0)}))),CLt(t,p,S)})),(0,tOt.S6)(m,(function(t,e){(0,tOt.S6)(t,(function(t){var n=e===g,r=s[t.id].getChildByIndex(0);if(r){var i=u+v,o=t.y-l.y,a=Math.pow(i,2),f=Math.pow(o,2),h=a-f>0?a-f:0,d=Math.sqrt(h),p=Math.abs(Math.cos(t.angle)*i);t.x=n?l.x+Math.max(d,p):l.x-Math.max(d,p)}r&&(r.attr("y",t.y),r.attr("x",t.x)),function(t,e){var n=e.getCenter(),r=e.getRadius();if(t&&t.labelLine){var i=t.angle,o=t.offset,a=lDt(n.x,n.y,r,i),c=t.x+(0,tOt.U2)(t,"offsetX",0)*(Math.cos(i)>0?1:-1),l=t.y+(0,tOt.U2)(t,"offsetY",0)*(Math.sin(i)>0?1:-1),u={x:c-Math.cos(i)*OLt,y:l-Math.sin(i)*OLt},s=t.labelLine.smooth,f=[],h=u.x-n.x,d=u.y-n.y,p=Math.atan(d/h);if(h<0&&(p+=Math.PI),!1===s){(0,tOt.Kn)(t.labelLine)||(t.labelLine={});var v=0;(i<0&&i>-Math.PI/2||i>1.5*Math.PI)&&u.y>a.y&&(v=1),i>=0&&ia.y&&(v=1),i>=Math.PI/2&&iu.y&&(v=1),(i<-Math.PI/2||i>=Math.PI&&i<1.5*Math.PI)&&a.y>u.y&&(v=1);var g=o/2>4?4:Math.max(o/2-1,0),m=lDt(n.x,n.y,r+g,i),y=lDt(n.x,n.y,r+o/2,p);f.push("M ".concat(a.x," ").concat(a.y)),f.push("L ".concat(m.x," ").concat(m.y)),f.push("A ".concat(n.x," ").concat(n.y," 0 ").concat(0," ").concat(v," ").concat(y.x," ").concat(y.y)),f.push("L ".concat(u.x," ").concat(u.y))}else{m=lDt(n.x,n.y,r+(o/2>4?4:Math.max(o/2-1,0)),i);var b=a.xMath.pow(Math.E,-16)&&f.push.apply(f,["C",u.x+4*b,u.y,2*m.x-a.x,2*m.y-a.y,a.x,a.y]),f.push("L ".concat(a.x," ").concat(a.y))}t.labelLine.path=f.join(" ")}}(t,c)}))}))}}})),XZt("adjust-color",(function(t,e,n){if(0!==n.length){var r=n[0].get("element").geometry.theme,i=r.labels||{},o=i.fillColorLight,a=i.fillColorDark;n.forEach((function(t,n){var i=e[n].find((function(t){return"text"===t.get("type")})),c=gDt.fromObject(t.getBBox()),l=gDt.fromObject(i.getCanvasBBox()),u=!c.contains(l),s=function(t){var e=tEt.toRGB(t).toUpperCase();if(WLt[e])return WLt[e];var n=(0,QCt.CR)(tEt.rgb2arr(e),3);return(299*n[0]+587*n[1]+114*n[2])/1e3<128}(t.attr("fill"));u?i.attr(r.overflowLabels.style):s?o&&i.attr("fill",o):a&&i.attr("fill",a)}))}})),XZt("interval-adjust-position",(function(t,e,n){var r;if(0!==n.length){var i=null===(r=n[0])||void 0===r?void 0:r.get("element"),o=null==i?void 0:i.geometry;if(o&&"interval"===o.type)VLt(o,e,n)&&n.forEach((function(t,n){var r=e[n];!function(t,e,n){var r=t.coordinate,i=gDt.fromObject(n.getBBox()),o=lFt(e);r.isTransposed?o.attr({x:i.minX+i.width/2,textAlign:"center"}):o.attr({y:i.minY+i.height/2,textBaseline:"middle"})}(o,r,t)}))}})),XZt("interval-hide-overlap",(function(t,e,n){var r;if(0!==n.length){var i=null===(r=n[0])||void 0===r?void 0:r.get("element"),o=null==i?void 0:i.geometry;if(o&&"interval"===o.type){var a,c=function(t){var e=[],n=Math.max(Math.floor(t.length/500),1);return(0,tOt.S6)(t,(function(t,r){r%n==0?e.push(t):t.set("visible",!1)})),e}(e),l=(0,QCt.CR)(o.getXYFields(),1)[0],u=[],s=[],f=(0,tOt.vM)(c,(function(t){return t.get("data")[l]})),h=(0,tOt.jj)((0,tOt.UI)(c,(function(t){return t.get("data")[l]})));c.forEach((function(t){t.set("visible",!0)}));var d=function(t){t&&(t.length&&s.push(t.pop()),s.push.apply(s,(0,QCt.ev)([],(0,QCt.CR)(t),!1)))};for((0,tOt.dp)(h)>0&&(a=h.shift(),d(f[a])),(0,tOt.dp)(h)>0&&(a=h.pop(),d(f[a])),(0,tOt.S6)(h.reverse(),(function(t){d(f[t])}));s.length>0;){var p=s.shift();p.get("visible")&&(sFt(p,u)?p.set("visible",!1):u.push(p))}}}})),XZt("point-adjust-position",(function(t,e,n,r,i){var o,a;if(0!==n.length){var c=null===(o=n[0])||void 0===o?void 0:o.get("element"),l=null==c?void 0:c.geometry;if(l&&"point"===l.type){var u=(0,QCt.CR)(l.getXYFields(),2),s=u[0],f=u[1],h=(0,tOt.vM)(e,(function(t){return t.get("data")[s]})),d=[],p=i&&i.offset||(null===(a=t[0])||void 0===a?void 0:a.offset)||12;(0,tOt.UI)((0,tOt.XP)(h).reverse(),(function(t){for(var e=function(t,e){var n=t.getXYFields()[1],r=[],i=e.sort((function(t,e){return t.get("data")[n]-t.get("data")[n]}));return i.length>0&&r.push(i.shift()),i.length>0&&r.push(i.pop()),r.push.apply(r,(0,QCt.ev)([],(0,QCt.CR)(i),!1)),r}(l,h[t]);e.length;){var n=e.shift(),r=lFt(n);if(GLt(d,n,(function(t,e){return t.get("data")[s]===e.get("data")[s]&&t.get("data")[f]===e.get("data")[f]})))r.set("visible",!1);else{var i=!1;XLt(d,n)&&(r.attr("y",r.attr("y")+2*p),i=XLt(d,n)),i?r.set("visible",!1):d.push(n)}}}))}}})),XZt("pie-spider",(function(t,e,n,r){var i,o,a=e[0]&&e[0].get("coordinate");if(a){var c=a.getCenter(),l=a.getRadius(),u={};try{for(var s=(0,QCt.XA)(e),f=s.next();!f.done;f=s.next()){var h=f.value;u[h.get("id")]=h}}catch(k){i={error:k}}finally{try{f&&!f.done&&(o=s.return)&&o.call(s)}finally{if(i)throw i.error}}var d=(0,tOt.U2)(t[0],"labelHeight",14),p=Math.max((0,tOt.U2)(t[0],"offset",0),ELt);(0,tOt.S6)(t,(function(t){if(t&&(0,tOt.U2)(u,[t.id])){var e=t.x>c.x||t.x===c.x&&t.y>c.y,n=(0,tOt.UM)(t.offsetX)?4:t.offsetX,r=lDt(c.x,c.y,l+ELt,t.angle),i=p+n;t.x=c.x+(e?1:-1)*(l+i),t.y=r.y}}));var v=a.start,g=a.end,m="right",y=(0,tOt.vM)(t,(function(t){return t.xb&&(b=Math.min(e,Math.abs(v.y-g.y)))}));var x={minX:v.x,maxX:g.x,minY:c.y-b/2,maxY:c.y+b/2};(0,tOt.S6)(y,(function(t,e){var n=b/d;t.length>n&&(t.sort((function(t,e){return e.percent-t.percent})),(0,tOt.S6)(t,(function(t,e){e>n&&(u[t.id].set("visible",!1),t.invisible=!0)}))),CLt(t,d,x)}));var w=x.minY,S=x.maxY;(0,tOt.S6)(y,(function(t,e){var n=e===m;(0,tOt.S6)(t,(function(t){var e=(0,tOt.U2)(u,t&&[t.id]);if(e)if(t.yS)e.set("visible",!1);else{var r=e.getChildByIndex(0),i=r.getCanvasBBox(),o=n?i.x:i.maxX,c=i.y+i.height/2;aFt(r,t.x-o,t.y-c),t.labelLine&&function(t,e,n){var r,i=e.getCenter(),o=e.getRadius(),a={x:t.x-(n?MLt:-MLt),y:t.y},c=lDt(i.x,i.y,o+ELt,t.angle),l={x:a.x,y:a.y},u={x:c.x,y:c.y},s=lDt(i.x,i.y,o,t.angle);if(a.y!==c.y){var f=n?4:-4;l.y=a.y,t.angle<0&&t.angle>=-Math.PI/2&&(l.x=Math.max(c.x,a.x-f),a.y0&&t.anglec.y?u.y=l.y:(u.y=c.y,u.x=Math.max(u.x,l.x-f))),t.angle>Math.PI/2&&(l.x=Math.min(c.x,a.x-f),a.y>c.y?u.y=l.y:(u.y=c.y,u.x=Math.min(u.x,l.x-f))),t.angle<-Math.PI/2&&(l.x=Math.min(c.x,a.x-f),a.y0&&r.push(i.shift()),i.length>0&&r.push(i.pop()),r.push.apply(r,(0,QCt.ev)([],(0,QCt.CR)(i),!1)),r}(l,h[t]);e.length;){var n=e.shift(),r=lFt(n);if(qLt(d,n,(function(t,e){return t.get("data")[s]===e.get("data")[s]&&t.get("data")[f]===e.get("data")[f]})))r.set("visible",!1);else{var i=!1;YLt(d,n)&&(r.attr("y",r.attr("y")+2*p),i=YLt(d,n)),i?r.set("visible",!1):d.push(n)}}}))}}})),jZt("fade-in",(function(t,e,n){var r={fillOpacity:(0,tOt.UM)(t.attr("fillOpacity"))?1:t.attr("fillOpacity"),strokeOpacity:(0,tOt.UM)(t.attr("strokeOpacity"))?1:t.attr("strokeOpacity"),opacity:(0,tOt.UM)(t.attr("opacity"))?1:t.attr("opacity")};t.attr({fillOpacity:0,strokeOpacity:0,opacity:0}),t.animate(r,e)})),jZt("fade-out",(function(t,e,n){var r=e.easing,i=e.duration,o=e.delay;t.animate({fillOpacity:0,strokeOpacity:0,opacity:0},i,r,(function(){t.remove(!0)}),o)})),jZt("grow-in-x",(function(t,e,n){JLt(t,e,n.coordinate,n.minYPoint,"x")})),jZt("grow-in-xy",(function(t,e,n){JLt(t,e,n.coordinate,n.minYPoint,"xy")})),jZt("grow-in-y",(function(t,e,n){JLt(t,e,n.coordinate,n.minYPoint,"y")})),jZt("scale-in-x",(function(t,e,n){var r=t.getBBox(),i=t.get("origin").mappingData.points,o=i[0].y-i[1].y>0?r.maxX:r.minX,a=(r.minY+r.maxY)/2;t.applyToMatrix([o,a,1]);var c=rAt.vs(t.getMatrix(),[["t",-o,-a],["s",.01,1],["t",o,a]]);t.setMatrix(c),t.animate({matrix:rAt.vs(t.getMatrix(),[["t",-o,-a],["s",100,1],["t",o,a]])},e)})),jZt("scale-in-y",(function(t,e,n){var r=t.getBBox(),i=t.get("origin").mappingData,o=(r.minX+r.maxX)/2,a=i.points,c=a[0].y-a[1].y<=0?r.maxY:r.minY;t.applyToMatrix([o,c,1]);var l=rAt.vs(t.getMatrix(),[["t",-o,-c],["s",1,.01],["t",o,c]]);t.setMatrix(l),t.animate({matrix:rAt.vs(t.getMatrix(),[["t",-o,-c],["s",1,100],["t",o,c]])},e)})),jZt("wave-in",(function(t,e,n){var r=xDt(n.coordinate,20),i=r.type,o=r.startState,a=r.endState,c=t.setClip({type:i,attrs:o});n.toAttrs&&t.attr(n.toAttrs),c.animate(a,(0,QCt.pi)((0,QCt.pi)({},e),{callback:function(){t&&!t.get("destroyed")&&t.set("clipShape",null),c.remove(!0),(0,tOt.mf)(e.callback)&&e.callback()}}))})),jZt("zoom-in",(function(t,e,n){nNt(t,e,"zoomIn")})),jZt("zoom-out",(function(t,e,n){nNt(t,e,"zoomOut")})),jZt("position-update",(function(t,e,n){var r=n.toAttrs,i=r.x,o=r.y;delete r.x,delete r.y,t.attr(r),t.animate({x:i,y:o},e)})),jZt("sector-path-update",(function(t,e,n){var r=n.toAttrs,i=n.coordinate,o=r.path||[],a=o.map((function(t){return t[0]}));if(!(o.length<1)){var c=eNt(o),l=c.startAngle,u=c.endAngle,s=c.radius,f=c.innerRadius,h=eNt(t.attr("path")),d=h.startAngle,p=h.endAngle,v=i.getCenter(),g=l-d,m=u-p;0!==g||0!==m?t.animate((function(t){var e=d+t*g,n=p+t*m;return(0,QCt.pi)((0,QCt.pi)({},r),{path:(0,tOt.Xy)(a,["M","A","A","Z"])?sDt(v.x,v.y,s,e,n):uDt(v.x,v.y,s,e,n,f)})}),(0,QCt.pi)((0,QCt.pi)({},e),{callback:function(){t.attr("path",o),(0,tOt.mf)(e.callback)&&e.callback()}})):t.attr("path",o)}})),jZt("path-in",(function(t,e,n){var r=t.getTotalLength();t.attr("lineDash",[r]),t.animate((function(t){return{lineDashOffset:(1-t)*r}}),e)})),LDt("rect",pNt),LDt("mirror",hNt),LDt("list",lNt),LDt("matrix",sNt),LDt("circle",aNt),LDt("tree",gNt),gZt("axis",PNt),gZt("legend",FNt),gZt("tooltip",TZt),gZt("annotation",wNt),gZt("slider",INt),gZt("scrollbar",LNt),VDt("tooltip",WNt),VDt("sibling-tooltip",GNt),VDt("ellipsis-text",qNt),VDt("element-active",eBt),VDt("element-single-active",fBt),VDt("element-range-active",cBt),VDt("element-highlight",xBt),VDt("element-highlight-by-x",CBt),VDt("element-highlight-by-color",SBt),VDt("element-single-highlight",ABt),VDt("element-range-highlight",EBt),VDt("element-sibling-highlight",EBt,{effectSiblings:!0,effectByRecord:!0}),VDt("element-selected",TBt),VDt("element-single-selected",FBt),VDt("element-range-selected",_Bt),VDt("element-link-by-color",rBt),VDt("active-region",UNt),VDt("list-active",LBt),VDt("list-selected",GBt),VDt("list-highlight",WBt),VDt("list-unchecked",qBt),VDt("list-checked",JBt),VDt("list-focus",ezt),VDt("list-radio",ozt),VDt("legend-item-highlight",WBt,{componentNames:["legend"]}),VDt("axis-label-highlight",WBt,{componentNames:["axis"]}),VDt("axis-description",pUt),VDt("rect-mask",pzt),VDt("x-rect-mask",yzt,{dim:"x"}),VDt("y-rect-mask",yzt,{dim:"y"}),VDt("circle-mask",szt),VDt("path-mask",Szt),VDt("smooth-path-mask",Mzt),VDt("rect-multi-mask",Dzt),VDt("x-rect-multi-mask",Zzt,{dim:"x"}),VDt("y-rect-multi-mask",Zzt,{dim:"y"}),VDt("circle-multi-mask",jzt),VDt("path-multi-mask",Rzt),VDt("smooth-path-multi-mask",Nzt),VDt("cursor",zzt),VDt("data-filter",Hzt),VDt("brush",Gzt),VDt("brush-x",Gzt,{dims:["x"]}),VDt("brush-y",Gzt,{dims:["y"]}),VDt("sibling-filter",qzt),VDt("sibling-x-filter",qzt,{dims:"x"}),VDt("sibling-y-filter",qzt,{dims:"y"}),VDt("element-filter",$zt),VDt("element-sibling-filter",Jzt),VDt("element-sibling-filter-record",Jzt,{byRecord:!0}),VDt("view-drag",nUt),VDt("view-move",iUt),VDt("scale-translate",lUt),VDt("scale-zoom",sUt),VDt("reset-button",tUt,{name:"reset-button",text:"reset"}),VDt("mousewheel-scroll",hUt),zTt("tooltip",{start:[{trigger:"plot:mousemove",action:"tooltip:show",throttle:{wait:50,leading:!0,trailing:!1}},{trigger:"plot:touchmove",action:"tooltip:show",throttle:{wait:50,leading:!0,trailing:!1}}],end:[{trigger:"plot:mouseleave",action:"tooltip:hide"},{trigger:"plot:leave",action:"tooltip:hide"},{trigger:"plot:touchend",action:"tooltip:hide"}]}),zTt("ellipsis-text",{start:[{trigger:"legend-item-name:mousemove",action:"ellipsis-text:show",throttle:{wait:50,leading:!0,trailing:!1}},{trigger:"legend-item-name:touchstart",action:"ellipsis-text:show",throttle:{wait:50,leading:!0,trailing:!1}},{trigger:"axis-label:mousemove",action:"ellipsis-text:show",throttle:{wait:50,leading:!0,trailing:!1}},{trigger:"axis-label:touchstart",action:"ellipsis-text:show",throttle:{wait:50,leading:!0,trailing:!1}}],end:[{trigger:"legend-item-name:mouseleave",action:"ellipsis-text:hide"},{trigger:"legend-item-name:touchend",action:"ellipsis-text:hide"},{trigger:"axis-label:mouseleave",action:"ellipsis-text:hide"},{trigger:"axis-label:mouseout",action:"ellipsis-text:hide"},{trigger:"axis-label:touchend",action:"ellipsis-text:hide"}]}),zTt("element-active",{start:[{trigger:"element:mouseenter",action:"element-active:active"}],end:[{trigger:"element:mouseleave",action:"element-active:reset"}]}),zTt("element-selected",{start:[{trigger:"element:click",action:"element-selected:toggle"}]}),zTt("element-highlight",{start:[{trigger:"element:mouseenter",action:"element-highlight:highlight"}],end:[{trigger:"element:mouseleave",action:"element-highlight:reset"}]}),zTt("element-highlight-by-x",{start:[{trigger:"element:mouseenter",action:"element-highlight-by-x:highlight"}],end:[{trigger:"element:mouseleave",action:"element-highlight-by-x:reset"}]}),zTt("element-highlight-by-color",{start:[{trigger:"element:mouseenter",action:"element-highlight-by-color:highlight"}],end:[{trigger:"element:mouseleave",action:"element-highlight-by-color:reset"}]}),zTt("legend-active",{start:[{trigger:"legend-item:mouseenter",action:["list-active:active","element-active:active"]}],end:[{trigger:"legend-item:mouseleave",action:["list-active:reset","element-active:reset"]}]}),zTt("legend-highlight",{start:[{trigger:"legend-item:mouseenter",action:["legend-item-highlight:highlight","element-highlight:highlight"]}],end:[{trigger:"legend-item:mouseleave",action:["legend-item-highlight:reset","element-highlight:reset"]}]}),zTt("axis-label-highlight",{start:[{trigger:"axis-label:mouseenter",action:["axis-label-highlight:highlight","element-highlight:highlight"]}],end:[{trigger:"axis-label:mouseleave",action:["axis-label-highlight:reset","element-highlight:reset"]}]}),zTt("element-list-highlight",{start:[{trigger:"element:mouseenter",action:["list-highlight:highlight","element-highlight:highlight"]}],end:[{trigger:"element:mouseleave",action:["list-highlight:reset","element-highlight:reset"]}]}),zTt("element-range-highlight",{showEnable:[{trigger:"plot:mouseenter",action:"cursor:crosshair"},{trigger:"mask:mouseenter",action:"cursor:move"},{trigger:"plot:mouseleave",action:"cursor:default"},{trigger:"mask:mouseleave",action:"cursor:crosshair"}],start:[{trigger:"plot:mousedown",isEnable:function(t){return!t.isInShape("mask")},action:["rect-mask:start","rect-mask:show"]},{trigger:"mask:dragstart",action:["rect-mask:moveStart"]}],processing:[{trigger:"plot:mousemove",action:["rect-mask:resize"]},{trigger:"mask:drag",action:["rect-mask:move"]},{trigger:"mask:change",action:["element-range-highlight:highlight"]}],end:[{trigger:"plot:mouseup",action:["rect-mask:end"]},{trigger:"mask:dragend",action:["rect-mask:moveEnd"]},{trigger:"document:mouseup",isEnable:function(t){return!t.isInPlot()},action:["element-range-highlight:clear","rect-mask:end","rect-mask:hide"]}],rollback:[{trigger:"dblclick",action:["element-range-highlight:clear","rect-mask:hide"]}]}),zTt("brush",{showEnable:[{trigger:"plot:mouseenter",action:"cursor:crosshair"},{trigger:"plot:mouseleave",action:"cursor:default"}],start:[{trigger:"mousedown",isEnable:vUt,action:["brush:start","rect-mask:start","rect-mask:show"]}],processing:[{trigger:"mousemove",isEnable:vUt,action:["rect-mask:resize"]}],end:[{trigger:"mouseup",isEnable:vUt,action:["brush:filter","brush:end","rect-mask:end","rect-mask:hide","reset-button:show"]}],rollback:[{trigger:"reset-button:click",action:["brush:reset","reset-button:hide","cursor:crosshair"]}]}),zTt("brush-visible",{showEnable:[{trigger:"plot:mouseenter",action:"cursor:crosshair"},{trigger:"plot:mouseleave",action:"cursor:default"}],start:[{trigger:"plot:mousedown",action:["rect-mask:start","rect-mask:show"]}],processing:[{trigger:"plot:mousemove",action:["rect-mask:resize"]},{trigger:"mask:change",action:["element-range-highlight:highlight"]}],end:[{trigger:"plot:mouseup",action:["rect-mask:end","rect-mask:hide","element-filter:filter","element-range-highlight:clear"]}],rollback:[{trigger:"dblclick",action:["element-filter:clear"]}]}),zTt("brush-x",{showEnable:[{trigger:"plot:mouseenter",action:"cursor:crosshair"},{trigger:"plot:mouseleave",action:"cursor:default"}],start:[{trigger:"mousedown",isEnable:vUt,action:["brush-x:start","x-rect-mask:start","x-rect-mask:show"]}],processing:[{trigger:"mousemove",isEnable:vUt,action:["x-rect-mask:resize"]}],end:[{trigger:"mouseup",isEnable:vUt,action:["brush-x:filter","brush-x:end","x-rect-mask:end","x-rect-mask:hide"]}],rollback:[{trigger:"dblclick",action:["brush-x:reset"]}]}),zTt("element-path-highlight",{showEnable:[{trigger:"plot:mouseenter",action:"cursor:crosshair"},{trigger:"plot:mouseleave",action:"cursor:default"}],start:[{trigger:"mousedown",isEnable:vUt,action:"path-mask:start"},{trigger:"mousedown",isEnable:vUt,action:"path-mask:show"}],processing:[{trigger:"mousemove",action:"path-mask:addPoint"}],end:[{trigger:"mouseup",action:"path-mask:end"}],rollback:[{trigger:"dblclick",action:"path-mask:hide"}]}),zTt("brush-x-multi",{showEnable:[{trigger:"plot:mouseenter",action:"cursor:crosshair"},{trigger:"mask:mouseenter",action:"cursor:move"},{trigger:"plot:mouseleave",action:"cursor:default"},{trigger:"mask:mouseleave",action:"cursor:crosshair"}],start:[{trigger:"mousedown",isEnable:vUt,action:["x-rect-multi-mask:start","x-rect-multi-mask:show"]},{trigger:"mask:dragstart",action:["x-rect-multi-mask:moveStart"]}],processing:[{trigger:"mousemove",isEnable:function(t){return!fTt(t)},action:["x-rect-multi-mask:resize"]},{trigger:"multi-mask:change",action:"element-range-highlight:highlight"},{trigger:"mask:drag",action:["x-rect-multi-mask:move"]}],end:[{trigger:"mouseup",action:["x-rect-multi-mask:end"]},{trigger:"mask:dragend",action:["x-rect-multi-mask:moveEnd"]}],rollback:[{trigger:"dblclick",action:["x-rect-multi-mask:clear","cursor:crosshair"]},{trigger:"multi-mask:clearAll",action:["element-range-highlight:clear"]},{trigger:"multi-mask:clearSingle",action:["element-range-highlight:highlight"]}]}),zTt("element-single-selected",{start:[{trigger:"element:click",action:"element-single-selected:toggle"}]}),zTt("legend-filter",{showEnable:[{trigger:"legend-item:mouseenter",action:["cursor:pointer","list-radio:show"]},{trigger:"legend-item:mouseleave",action:["cursor:default","list-radio:hide"]}],start:[{trigger:"legend-item:click",isEnable:function(t){return!t.isInShape("legend-item-radio")},action:["legend-item-highlight:reset","element-highlight:reset","list-unchecked:toggle","data-filter:filter","list-radio:show"]},{trigger:"legend-item-radio:mouseenter",action:["list-radio:showTip"]},{trigger:"legend-item-radio:mouseleave",action:["list-radio:hideTip"]},{trigger:"legend-item-radio:click",action:["list-focus:toggle","data-filter:filter","list-radio:show"]}]}),zTt("continuous-filter",{start:[{trigger:"legend:valuechanged",action:"data-filter:filter"}]}),zTt("continuous-visible-filter",{start:[{trigger:"legend:valuechanged",action:"element-filter:filter"}]}),zTt("legend-visible-filter",{showEnable:[{trigger:"legend-item:mouseenter",action:"cursor:pointer"},{trigger:"legend-item:mouseleave",action:"cursor:default"}],start:[{trigger:"legend-item:click",action:["legend-item-highlight:reset","element-highlight:reset","list-unchecked:toggle","element-filter:filter"]}]}),zTt("active-region",{start:[{trigger:"plot:mousemove",action:"active-region:show"}],end:[{trigger:"plot:mouseleave",action:"active-region:hide"}]}),zTt("axis-description",{start:[{trigger:"axis-description:mousemove",action:"axis-description:show"}],end:[{trigger:"axis-description:mouseleave",action:"axis-description:hide"}]}),zTt("view-zoom",{start:[{trigger:"plot:mousewheel",isEnable:function(t){return gUt(t.event)},action:"scale-zoom:zoomOut",throttle:{wait:100,leading:!0,trailing:!1}},{trigger:"plot:mousewheel",isEnable:function(t){return!gUt(t.event)},action:"scale-zoom:zoomIn",throttle:{wait:100,leading:!0,trailing:!1}}]}),zTt("sibling-tooltip",{start:[{trigger:"plot:mousemove",action:"sibling-tooltip:show"}],end:[{trigger:"plot:mouseleave",action:"sibling-tooltip:hide"}]}),zTt("plot-mousewheel-scroll",{start:[{trigger:"plot:mousewheel",action:"mousewheel-scroll:scroll"}]});var mUt,yUt=["type","alias","tickCount","tickInterval","min","max","nice","minLimit","maxLimit","range","tickMethod","base","exponent","mask","sync"];!function(t){t.ERROR="error",t.WARN="warn",t.INFO="log"}(mUt||(mUt={}));var bUt="AntV/G2Plot";function xUt(t){for(var e=[],n=1;n=0})),i=n.every((function(t){return(0,tOt.U2)(t,[e])<=0}));return r?{min:0}:i?{max:0}:{}}function CUt(t,e,n,r,i){if(void 0===i&&(i=[]),!Array.isArray(t))return{nodes:[],links:[]};var o=[],a={},c=-1;return t.forEach((function(t){var l=t[e],u=t[n],s=t[r],f=SUt(t,i);a[l]||(a[l]=(0,QCt.pi)({id:++c,name:l},f)),a[u]||(a[u]=(0,QCt.pi)({id:++c,name:u},f)),o.push((0,QCt.pi)({source:a[l].id,target:a[u].id,value:s},f))})),{nodes:Object.values(a).sort((function(t,e){return t.id-e.id})),links:o}}function OUt(t,e){var n=(0,tOt.hX)(t,(function(t){var n=t[e];return null===n||"number"==typeof n&&!isNaN(n)}));return wUt(mUt.WARN,n.length===t.length,"illegal data existed in chart data."),n}var EUt,MUt={}.toString,AUt=function(t,e){return MUt.call(t)==="[object "+e+"]"},PUt=function(t){return AUt(t,"Array")},_Ut=function(t){if(!function(t){return"object"==typeof t&&null!==t}(t)||!AUt(t,"Object"))return!1;for(var e=t;null!==Object.getPrototypeOf(e);)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(t)===e},DUt=function t(e,n,r,i){for(var o in r=r||0,i=i||5,n)if(Object.prototype.hasOwnProperty.call(n,o)){var a=n[o];a?_Ut(a)?(_Ut(e[o])||(e[o]={}),r0&&(n=n.map((function(t,n){return e.forEach((function(r,i){t+=e[i][n]})),t}))),n}var HUt=function(t,e,n,r){var i,o,a,c,l=[],u=!!r;if(u){a=[1/0,1/0],c=[-1/0,-1/0];for(var s=0,f=t.length;s"},key:"".concat(0===r?"top":"bottom","-statistic")},SUt(e,["offsetX","offsetY","rotate","style","formatter"])))}}))},YUt=function(t,e,n){var r=e.statistic;[r.title,r.content].forEach((function(e){if(e){var r=(0,tOt.mf)(e.style)?e.style(n):e.style;t.annotation().html((0,QCt.pi)({position:["50%","100%"],html:function(t,i){var o=i.getCoordinate(),a=i.views[0].getCoordinate(),c=a.getCenter(),l=a.getRadius(),u=Math.max(Math.sin(a.startAngle),Math.sin(a.endAngle))*l,s=c.y+u-o.y.start-parseFloat((0,tOt.U2)(r,"fontSize",0)),f=o.getRadius()*o.innerRadius*2;XUt(t,(0,QCt.pi)({width:"".concat(f,"px"),transform:"translate(-50%, ".concat(s,"px)")},GUt(r)));var h=i.getData();if(e.customHtml)return e.customHtml(t,i,n,h);var d=e.content;return e.formatter&&(d=e.formatter(n,h)),d?(0,tOt.HD)(d)?d:"".concat(d):"
      "}},SUt(e,["offsetX","offsetY","rotate","style","formatter"])))}}))};function $Ut(t,e){return e?(0,tOt.u4)(e,(function(t,e,n){return t.replace(new RegExp("{\\s*".concat(n,"\\s*}"),"g"),e)}),t):t}function KUt(t,e){return t.views.find((function(t){return t.id===e}))}function JUt(t){var e=t.parent;return e?e.views:[]}function QUt(t){return JUt(t).filter((function(e){return e!==t}))}function tHt(t,e,n){void 0===n&&(n=t.geometries),"boolean"==typeof e?t.animate(e):t.animate(!0),(0,tOt.S6)(n,(function(t){var n;n=(0,tOt.mf)(e)?e(t.type||t.shapeType,t)||!0:e,t.animate(n)}))}function eHt(){return"object"==typeof window?null===window||void 0===window?void 0:window.devicePixelRatio:2}function nHt(t,e){void 0===e&&(e=t);var n=document.createElement("canvas"),r=eHt();return n.width=t*r,n.height=e*r,n.style.width="".concat(t,"px"),n.style.height="".concat(e,"px"),n.getContext("2d").scale(r,r),n}function rHt(t,e,n,r){void 0===r&&(r=n);var i=e.backgroundColor,o=e.opacity;t.globalAlpha=o,t.fillStyle=i,t.beginPath(),t.fillRect(0,0,n,r),t.closePath()}function iHt(t,e,n){var r=t+e;return n?2*r:r}function oHt(t,e){return e?[[t*(1/4),t*(1/4)],[t*(3/4),t*(3/4)]]:[[.5*t,.5*t]]}function aHt(t,e){var n=e*Math.PI/180;return{a:Math.cos(n)*(1/t),b:Math.sin(n)*(1/t),c:-Math.sin(n)*(1/t),d:Math.cos(n)*(1/t),e:0,f:0}}var cHt={size:6,padding:2,backgroundColor:"transparent",opacity:1,rotation:0,fill:"#fff",fillOpacity:.5,stroke:"transparent",lineWidth:0,isStagger:!0};function lHt(t,e,n,r){var i=e.size,o=e.fill,a=e.lineWidth,c=e.stroke,l=e.fillOpacity;t.beginPath(),t.globalAlpha=l,t.fillStyle=o,t.strokeStyle=c,t.lineWidth=a,t.arc(n,r,i/2,0,2*Math.PI,!1),t.fill(),a&&t.stroke(),t.closePath()}var uHt={rotation:45,spacing:5,opacity:1,backgroundColor:"transparent",strokeOpacity:.5,stroke:"#fff",lineWidth:2};function sHt(t){var e=TUt({},uHt,t),n=e.spacing,r=e.rotation,i=e.lineWidth,o=n+i||1,a=n+i||1,c="\n M 0 0 L ".concat(o," 0\n M 0 ").concat(a," L ").concat(o," ").concat(a,"\n "),l=nHt(o,a),u=l.getContext("2d");rHt(u,e,o,a),function(t,e,n){var r=e.stroke,i=e.lineWidth,o=e.strokeOpacity,a=new Path2D(n);t.globalAlpha=o,t.lineCap="square",t.strokeStyle=i?r:"transparent",t.lineWidth=i,t.stroke(a)}(u,e,c);var s=u.createPattern(l,"repeat");if(s){var f=aHt(eHt(),r);s.setTransform(f)}return s}var fHt={size:6,padding:1,isStagger:!0,backgroundColor:"transparent",opacity:1,rotation:0,fill:"#fff",fillOpacity:.5,stroke:"transparent",lineWidth:0};function hHt(t,e,n,r){var i=e.stroke,o=e.size,a=e.fill,c=e.lineWidth,l=e.fillOpacity;t.globalAlpha=l,t.strokeStyle=i,t.lineWidth=c,t.fillStyle=a,t.strokeRect(n-o/2,r-o/2,o,o),t.fillRect(n-o/2,r-o/2,o,o)}function dHt(t){var e,n=t.type,r=t.cfg;switch(n){case"dot":e=function(t){var e=TUt({},cHt,t),n=e.size,r=e.padding,i=e.isStagger,o=e.rotation,a=iHt(n,r,i),c=oHt(a,i),l=nHt(a,a),u=l.getContext("2d");rHt(u,e,a);for(var s=0,f=c;sb){var w=x/v.length,S=Math.max(1,Math.ceil(b/w)-1),k="".concat(v.slice(0,S),"...");y.attr("text",k)}}}}(t,e,n)}function xWt(t){var e=t.options,n=e.legend,r=e.seriesField,i=e.isStack;return r?!1!==n&&(n=(0,QCt.pi)({position:i?"right-top":"top-left"},n)):n=!1,t.options.legend=n,t}function wWt(t){var e=t.chart,n=t.options,r=n.data,i=n.columnStyle,o=n.color,a=n.columnWidthRatio,c=n.isPercent,l=n.isGroup,u=n.isStack,s=n.xField,f=n.yField,h=n.seriesField,d=n.groupField,p=n.tooltip,v=n.shape,g=c&&l&&u?function(t,e,n,r){var i=(0,tOt.u4)(t,(function(t,r){var i=(0,tOt.u4)(n,(function(t,e){return"".concat(t).concat(r[e])}),""),o=t.has(i)?t.get(i):0,a=r[e];return o=NUt(a)?o+a:o,t.set(i,o),t}),new Map);return(0,tOt.UI)(t,(function(t){var o,a=t[e],c=(0,tOt.u4)(n,(function(e,n){return"".concat(e).concat(t[n])}),""),l=NUt(a)&&0!==i.get(c)?a/i.get(c):0;return(0,QCt.pi)((0,QCt.pi)({},t),((o={})[r]=l,o))}))}(r,f,[s,d],f):XHt(r,f,s,f,c),m=[];u&&h&&!l?g.forEach((function(t){var e=m.find((function(e){return e[s]===t[s]&&e[h]===t[h]}));e?e[f]+=t[f]||0:m.push((0,QCt.pi)({},t))})):m=g,e.data(m);var y=c?(0,QCt.pi)({formatter:function(t){var e;return{name:l&&u?"".concat(t[h]," - ").concat(t[d]):null!==(e=t[h])&&void 0!==e?e:t[s],value:(100*Number(t[f])).toFixed(2)+"%"}}},p):p,b=TUt({},t,{options:{data:m,widthRatio:a,tooltip:y,interval:{shape:v,style:i,color:o}}});return RHt(b),b}function SWt(t){var e,n,r=t.options,i=r.xAxis,o=r.yAxis,a=r.xField,c=r.yField,l=r.data,u=r.isPercent?{max:1,min:0,minLimit:0,maxLimit:1}:{};return FUt(kHt(((e={})[a]=i,e[c]=o,e),((n={})[a]={type:"cat"},n[c]=(0,QCt.pi)((0,QCt.pi)({},kUt(l,c)),u),n)))(t)}function kWt(t){var e=t.chart,n=t.options,r=n.xAxis,i=n.yAxis,o=n.xField,a=n.yField;return!1===r?e.axis(o,!1):e.axis(o,r),!1===i?e.axis(a,!1):e.axis(a,i),t}function CWt(t){var e=t.chart,n=t.options,r=n.legend,i=n.seriesField;return r&&i?e.legend(i,r):!1===r&&e.legend(!1),t}function OWt(t){var e=t.chart,n=t.options,r=n.label,i=n.yField,o=n.isRange,a=jUt(e,"interval");if(r){var c=r.callback,l=(0,QCt._T)(r,["callback"]);a.label({fields:[i],callback:c,cfg:(0,QCt.pi)({layout:(null==l?void 0:l.position)?void 0:[{type:"interval-adjust-position"},{type:"interval-hide-overlap"},{type:"adjust-color"},{type:"limit-in-plot",cfg:{action:"hide"}}]},LUt(o?(0,QCt.pi)({content:function(t){var e;return null===(e=t[i])||void 0===e?void 0:e.join("-")}},l):l))})}else a.label(!1);return t}function EWt(t){var e=t.chart,n=t.options,r=n.tooltip,i=n.isGroup,o=n.isStack,a=n.groupField,c=n.data,l=n.xField,u=n.yField,s=n.seriesField;if(!1===r)e.tooltip(!1);else{var f=r;if(i&&o){var h=f.customItems,d=(null==f?void 0:f.formatter)||function(t){return{name:"".concat(t[s]," - ").concat(t[a]),value:t[u]}};f=(0,QCt.pi)((0,QCt.pi)({},f),{customItems:function(t){var e=[];return(0,tOt.S6)(t,(function(t){(0,tOt.hX)(c,(function(e){return(0,tOt.BD)(e,SUt(t.data,[l,s]))})).forEach((function(n){e.push((0,QCt.pi)((0,QCt.pi)((0,QCt.pi)({},t),{value:n[u],data:n,mappingData:{_origin:n}}),d(n)))}))})),h?h(e):e}})}e.tooltip(f)}return t}function MWt(t,e){void 0===e&&(e=!1);var n,r=t.options,i=r.seriesField;return FUt(xWt,bHt,pHt("columnStyle"),xHt,EHt("rect"),wWt,SWt,kWt,CWt,EWt,wHt,SHt,OWt,dWt,mHt,yHt,CHt(),function(t,e,n){return void 0===e&&(e=!0),void 0===n&&(n=!1),function(r){var i=r.options,o=r.chart,a=i.conversionTag,c=i.theme;return a&&!n&&(o.theme(TUt({},(0,tOt.Kn)(c)?c:iZt(c),{columnWidthRatio:1/3})),o.annotation().shape({render:function(n,r){var i=n.addGroup({id:"".concat(o.id,"-conversion-tag-group"),name:"conversion-tag-group"}),c=(0,tOt.sE)(o.geometries,(function(t){return"interval"===t.type})),l={view:r,geometry:c,group:i,field:t,horizontal:e,options:mWt(a,e)},u=c.elements;(0,tOt.S6)(u,(function(t,e){e>0&&bWt(l,u[e-1],t)}))}})),r}}(r.yField,!e,!!i),(void 0===(n=!r.isStack)&&(n=!1),function(t){var e=t.chart,r=t.options.connectedArea,i=function(){e.removeInteraction(pWt.hover),e.removeInteraction(pWt.click)};if(!n&&r){var o=r.trigger||"hover";i(),e.interaction(pWt[o],{start:vWt(o,r.style)})}else i();return t}),OHt)(t)}function AWt(t){var e=t.options,n=e.xField,r=e.yField,i=e.xAxis,o=e.yAxis,a={left:"bottom",right:"top",top:"left",bottom:"right"},c=!1!==o&&(0,QCt.pi)({position:a[(null==o?void 0:o.position)||"left"]},o),l=!1!==i&&(0,QCt.pi)({position:a[(null==i?void 0:i.position)||"bottom"]},i);return(0,QCt.pi)((0,QCt.pi)({},t),{options:(0,QCt.pi)((0,QCt.pi)({},e),{xField:r,yField:n,xAxis:c,yAxis:l})})}function PWt(t){var e=t.options.label;return e&&!e.position&&(e.position="left",e.layout||(e.layout=[{type:"interval-adjust-position"},{type:"interval-hide-overlap"},{type:"adjust-color"},{type:"limit-in-plot",cfg:{action:"hide"}}])),TUt({},t,{options:{label:e}})}function _Wt(t){var e=t.options,n=e.seriesField,r=e.isStack,i=e.legend;return n?!1!==i&&(i=(0,QCt.pi)({position:r?"top-left":"right-top"},i||{})):i=!1,TUt({},t,{options:{legend:i}})}function DWt(t){var e=t.options,n=[{type:"transpose"},{type:"reflectY"}].concat(e.coordinate||[]);return TUt({},t,{options:{coordinate:n}})}function TWt(t){var e=t.chart,n=t.options,r=n.barStyle,i=n.barWidthRatio,o=n.minBarWidth,a=n.maxBarWidth,c=n.barBackground;return MWt({chart:e,options:(0,QCt.pi)((0,QCt.pi)({},n),{columnStyle:r,columnWidthRatio:i,minColumnWidth:o,maxColumnWidth:a,columnBackground:c})},!0)}function ZWt(t){return FUt(AWt,PWt,_Wt,gHt,DWt,TWt)(t)}zTt(pWt.hover,{start:vWt(pWt.hover),end:[{trigger:"interval:mouseleave",action:["element-highlight-by-color:reset","element-link-by-color:unlink"]}]}),zTt(pWt.click,{start:vWt(pWt.click),end:[{trigger:"document:mousedown",action:["element-highlight-by-color:clear","element-link-by-color:clear"]}]});var FWt,jWt=TUt({},VHt.getDefaultOptions(),{barWidthRatio:.6,marginRatio:1/32,tooltip:{shared:!0,showMarkers:!1,offset:20},legend:{radio:{}},interactions:[{type:"active-region"}]}),IWt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="bar",e}return(0,QCt.ZT)(e,t),e.getDefaultOptions=function(){return jWt},e.prototype.changeData=function(t){var e,n;this.updateOption({data:t});var r=this.chart,i=this.options,o=i.isPercent,a=i.xField,c=i.yField,l=i.xAxis,u=i.yAxis;a=(e=[c,a])[0],c=e[1],l=(n=[u,l])[0],u=n[1],SWt({chart:r,options:(0,QCt.pi)((0,QCt.pi)({},i),{xField:a,yField:c,yAxis:u,xAxis:l})}),r.changeData(XHt(t,a,c,a,o))},e.prototype.getDefaultOptions=function(){return e.getDefaultOptions()},e.prototype.getSchemaAdaptor=function(){return ZWt},e}(VHt),RWt=TUt({},VHt.getDefaultOptions(),{columnWidthRatio:.6,marginRatio:1/32,tooltip:{shared:!0,showMarkers:!1,offset:20},legend:{radio:{}},interactions:[{type:"active-region"}]}),LWt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="column",e}return(0,QCt.ZT)(e,t),e.getDefaultOptions=function(){return RWt},e.prototype.changeData=function(t){this.updateOption({data:t});var e=this.options,n=e.yField,r=e.xField,i=e.isPercent;SWt({chart:this.chart,options:this.options}),this.chart.changeData(XHt(t,n,r,n,i))},e.prototype.getDefaultOptions=function(){return e.getDefaultOptions()},e.prototype.getSchemaAdaptor=function(){return MWt},e}(VHt),NWt="$$percentage$$",BWt="$$mappingValue$$",zWt="$$conversion$$",UWt="$$totalPercentage$$",HWt="$$x$$",WWt="$$y$$",VWt={appendPadding:[0,80],minSize:0,maxSize:1,meta:(FWt={},FWt[BWt]={min:0,max:1,nice:!1},FWt),label:{style:{fill:"#fff",fontSize:12}},tooltip:{showTitle:!1,showMarkers:!1,shared:!1},conversionTag:{offsetX:10,offsetY:0,style:{fontSize:12,fill:"rgba(0,0,0,0.45)"}}},GWt="CONVERSION_TAG_NAME";function XWt(t,e,n){var r,i=n.yField,o=n.maxSize,a=n.minSize,c=(0,tOt.U2)((0,tOt.UT)(e,i),[i]),l=(0,tOt.hj)(o)?o:1,u=(0,tOt.hj)(a)?a:0;return r=(0,tOt.UI)(t,(function(e,n){var r=(e[i]||0)/c;return e[NWt]=r,e[BWt]=(l-u)*r+u,e[zWt]=[(0,tOt.U2)(t,[n-1,i]),e[i]],e})),r}function qWt(t){return function(e){var n=e.chart,r=e.options,i=r.conversionTag,o=r.filteredData||n.getOptions().data;if(i){var a=i.formatter;o.forEach((function(e,r){if(!(r<=0||Number.isNaN(e[BWt]))){var c=t(e,r,o,{top:!0,name:GWt,text:{content:(0,tOt.mf)(a)?a(e,o):a,offsetX:i.offsetX,offsetY:i.offsetY,position:"end",autoRotate:!1,style:(0,QCt.pi)({textAlign:"start",textBaseline:"middle"},i.style)}});n.annotation().line(c)}}))}return e}}function YWt(t){var e=t.chart,n=t.options,r=n.data,i=void 0===r?[]:r,o=XWt(i,i,{yField:n.yField,maxSize:n.maxSize,minSize:n.minSize});return e.data(o),t}function $Wt(t){var e=t.chart,n=t.options,r=n.xField,i=n.yField,o=n.color,a=n.tooltip,c=n.label,l=n.shape,u=void 0===l?"funnel":l,s=n.funnelStyle,f=n.state,h=DHt(a,[r,i]),d=h.fields,p=h.formatter;return FHt({chart:e,options:{type:"interval",xField:r,yField:BWt,colorField:r,tooltipFields:(0,tOt.kJ)(d)&&d.concat([NWt,zWt]),mapping:{shape:u,tooltip:p,color:o,style:s},label:c,state:f}}),jUt(t.chart,"interval").adjust("symmetric"),t}function KWt(t){var e=t.chart,n=t.options.isTransposed;return e.coordinate({type:"rect",actions:n?[]:[["transpose"],["scale",1,-1]]}),t}function JWt(t){var e=t.options,n=t.chart,r=e.maxSize,i=(0,tOt.U2)(n,["geometries","0","dataArray"],[]),o=(0,tOt.U2)(n,["options","data","length"]),a=(0,tOt.UI)(i,(function(t){return(0,tOt.U2)(t,["0","nextPoints","0","x"])*o-.5}));return qWt((function(t,e,n,i){var o=r-(r-t[BWt])/2;return(0,QCt.pi)((0,QCt.pi)({},i),{start:[a[e-1]||e-.5,o],end:[a[e-1]||e-.5,o+.05]})}))(t),t}function QWt(t){return FUt(YWt,$Wt,KWt,JWt)(t)}function tVt(t){var e,n=t.chart,r=t.options,i=r.data,o=void 0===i?[]:i,a=r.yField;return n.data(o),n.scale(((e={})[a]={sync:!0},e)),t}function eVt(t){var e=t.chart,n=t.options,r=n.data,i=n.xField,o=n.yField,a=n.color,c=n.compareField,l=n.isTransposed,u=n.tooltip,s=n.maxSize,f=n.minSize,h=n.label,d=n.funnelStyle,p=n.state,v=n.showFacetTitle;return e.facet("mirror",{fields:[c],transpose:!l,padding:l?0:[32,0,0,0],showTitle:v,eachView:function(t,e){var n=l?e.rowIndex:e.columnIndex;l||t.coordinate({type:"rect",actions:[["transpose"],["scale",0===n?-1:1,-1]]});var v=XWt(e.data,r,{yField:o,maxSize:s,minSize:f});t.data(v);var g=DHt(u,[i,o,c]),m=g.fields,y=g.formatter,b=l?{offset:0===n?10:-23,position:0===n?"bottom":"top"}:{offset:10,position:"left",style:{textAlign:0===n?"end":"start"}};FHt({chart:t,options:{type:"interval",xField:i,yField:BWt,colorField:i,tooltipFields:(0,tOt.kJ)(m)&&m.concat([NWt,zWt]),mapping:{shape:"funnel",tooltip:y,color:a,style:d},label:!1!==h&&TUt({},b,h),state:p}})}}),t}function nVt(t){var e=t.chart,n=t.index,r=t.options,i=r.conversionTag,o=r.isTransposed;((0,tOt.hj)(n)?[e]:e.views).forEach((function(t,e){var a=(0,tOt.U2)(t,["geometries","0","dataArray"],[]),c=(0,tOt.U2)(t,["options","data","length"]),l=(0,tOt.UI)(a,(function(t){return(0,tOt.U2)(t,["0","nextPoints","0","x"])*c-.5}));qWt((function(t,r,a,c){var u=0===(n||e)?-1:1;return TUt({},c,{start:[l[r-1]||r-.5,t[BWt]],end:[l[r-1]||r-.5,t[BWt]+.05],text:o?{style:{textAlign:"start"}}:{offsetX:!1!==i?u*i.offsetX:0,style:{textAlign:0===(n||e)?"end":"start"}}})}))(TUt({},{chart:t,options:r}))}))}function rVt(t){return t.chart.once("beforepaint",(function(){return nVt(t)})),t}function iVt(t){var e=t.chart,n=t.options,r=n.data,i=void 0===r?[]:r,o=n.yField,a=(0,tOt.u4)(i,(function(t,e){return t+(e[o]||0)}),0),c=(0,tOt.UT)(i,o)[o],l=(0,tOt.UI)(i,(function(t,e){var n=[],r=[];if(t[UWt]=(t[o]||0)/a,e){var l=i[e-1][HWt],u=i[e-1][WWt];n[0]=l[3],r[0]=u[3],n[1]=l[2],r[1]=u[2]}else n[0]=-.5,r[0]=1,n[1]=.5,r[1]=1;return r[2]=r[1]-t[UWt],n[2]=(r[2]+1)/4,r[3]=r[2],n[3]=-n[2],t[HWt]=n,t[WWt]=r,t[NWt]=(t[o]||0)/c,t[zWt]=[(0,tOt.U2)(i,[e-1,o]),t[o]],t}));return e.data(l),t}function oVt(t){var e=t.chart,n=t.options,r=n.xField,i=n.yField,o=n.color,a=n.tooltip,c=n.label,l=n.funnelStyle,u=n.state,s=DHt(a,[r,i]),f=s.fields,h=s.formatter;return FHt({chart:e,options:{type:"polygon",xField:HWt,yField:WWt,colorField:r,tooltipFields:(0,tOt.kJ)(f)&&f.concat([NWt,zWt]),label:c,state:u,mapping:{tooltip:h,color:o,style:l}}}),t}function aVt(t){var e=t.chart,n=t.options.isTransposed;return e.coordinate({type:"rect",actions:n?[["transpose"],["reflect","x"]]:[]}),t}function cVt(t){return qWt((function(t,e,n,r){return(0,QCt.pi)((0,QCt.pi)({},r),{start:[t[HWt][1],t[WWt][1]],end:[t[HWt][1]+.05,t[WWt][1]]})}))(t),t}function lVt(t){var e,n=t.chart,r=t.options,i=r.data,o=void 0===i?[]:i,a=r.yField;return n.data(o),n.scale(((e={})[a]={sync:!0},e)),t}function uVt(t){var e=t.chart,n=t.options,r=n.seriesField,i=n.isTransposed,o=n.showFacetTitle;return e.facet("rect",{fields:[r],padding:[i?0:32,10,0,10],showTitle:o,eachView:function(e,n){QWt(TUt({},t,{chart:e,options:{data:n.data}}))}}),t}var sVt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.rendering=!1,e}return(0,QCt.ZT)(e,t),e.prototype.change=function(t){var e=this;if(!this.rendering){var n=t.seriesField,r=t.compareField,i=r?nVt:JWt,o=this.context.view,a=n||r?o.views:[o];(0,tOt.UI)(a,(function(n,r){var o=n.getController("annotation"),a=(0,tOt.hX)((0,tOt.U2)(o,["option"],[]),(function(t){return t.name!==GWt}));o.clear(!0),(0,tOt.S6)(a,(function(t){"object"==typeof t&&n.annotation()[t.type](t)}));var c=(0,tOt.U2)(n,["filteredData"],n.getOptions().data);i({chart:n,index:r,options:(0,QCt.pi)((0,QCt.pi)({},t),{filteredData:XWt(c,c,t)})}),n.filterData(c),e.rendering=!0,n.render(!0)}))}this.rendering=!1},e}(BDt),fVt="funnel-conversion-tag",hVt="funnel-afterrender",dVt={trigger:"afterrender",action:"".concat(fVt,":change")};function pVt(t){var e,n=t.options,r=n.compareField,i=n.xField,o=n.yField,a=n.locale,c=n.funnelStyle,l=n.data,u=_Ht(a),s={label:r?{fields:[i,o,r,NWt,zWt],formatter:function(t){return"".concat(t[o])}}:{fields:[i,o,NWt,zWt],offset:0,position:"middle",formatter:function(t){return"".concat(t[i]," ").concat(t[o])}},tooltip:{title:i,formatter:function(t){return{name:t[i],value:t[o]}}},conversionTag:{formatter:function(t){return"".concat(u.get(["conversionTag","label"]),": ").concat(gWt.apply(void 0,t[zWt]))}}};return(r||c)&&(e=function(t){return TUt({},r&&{lineWidth:1,stroke:"#fff"},(0,tOt.mf)(c)?c(t):c)}),TUt({options:s},t,{options:{funnelStyle:e,data:(0,tOt.d9)(l)}})}function vVt(t){var e=t.options,n=e.compareField,r=e.dynamicHeight;return e.seriesField?function(t){return FUt(lVt,uVt)(t)}(t):n?function(t){return FUt(tVt,eVt,rVt)(t)}(t):r?function(t){return FUt(iVt,oVt,aVt,cVt)(t)}(t):QWt(t)}function gVt(t){var e,n=t.options,r=n.xAxis,i=n.yAxis,o=n.xField,a=n.yField;return FUt(kHt(((e={})[o]=r,e[a]=i,e)))(t)}function mVt(t){return t.chart.axis(!1),t}function yVt(t){var e=t.chart,n=t.options.legend;return!1===n?e.legend(!1):e.legend(n),t}function bVt(t){var e=t.chart,n=t.options,r=n.interactions,i=n.dynamicHeight;return(0,tOt.S6)(r,(function(t){!1===t.enable?e.removeInteraction(t.type):e.interaction(t.type,t.cfg||{})})),i?e.removeInteraction(hVt):e.interaction(hVt,{start:[(0,QCt.pi)((0,QCt.pi)({},dVt),{arg:n})]}),t}function xVt(t){return FUt(pVt,vVt,gVt,mVt,gHt,bVt,yVt,yHt,bHt,CHt())(t)}VDt(fVt,sVt),zTt(hVt,{start:[dVt]});var wVt,SVt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="funnel",e}return(0,QCt.ZT)(e,t),e.getDefaultOptions=function(){return VWt},e.prototype.getDefaultOptions=function(){return e.getDefaultOptions()},e.prototype.getSchemaAdaptor=function(){return xVt},e.prototype.setState=function(t,e,n){void 0===n&&(n=!0);var r=RUt(this.chart);(0,tOt.S6)(r,(function(r){e(r.getData())&&r.setState(t,n)}))},e.prototype.getStates=function(){var t=RUt(this.chart),e=[];return(0,tOt.S6)(t,(function(t){var n=t.getData(),r=t.getStates();(0,tOt.S6)(r,(function(r){e.push({data:n,state:r,geometry:t.geometry,element:t})}))})),e},e.CONVERSATION_FIELD=zWt,e.PERCENT_FIELD=NWt,e.TOTAL_PERCENT_FIELD=UWt,e}(VHt),kVt="range",CVt="type",OVt="percent",EVt="#f0f0f0",MVt="indicator-view",AVt="range-view",PVt={percent:0,range:{ticks:[]},innerRadius:.9,radius:.95,startAngle:-7/6*Math.PI,endAngle:1/6*Math.PI,syncViewPadding:!0,axis:{line:null,label:{offset:-24,style:{textAlign:"center",textBaseline:"middle"}},subTickLine:{length:-8},tickLine:{length:-12},grid:null},indicator:{pointer:{style:{lineWidth:5,lineCap:"round"}},pin:{style:{r:9.75,lineWidth:4.5,fill:"#fff"}}},statistic:{title:!1},meta:(wVt={},wVt[kVt]={sync:"v"},wVt[OVt]={sync:"v",tickCount:5,tickInterval:.2},wVt),animation:!1};function _Vt(t){var e;return[(e={},e[OVt]=(0,tOt.uZ)(t,0,1),e)]}function DVt(t,e){var n=(0,tOt.U2)(e,["ticks"],[]),r=(0,tOt.dp)(n)?(0,tOt.jj)(n):[0,(0,tOt.uZ)(t,0,1),1];return r[0]||r.shift(),function(t,e){return t.map((function(n,r){var i;return(i={})[kVt]=n-(t[r-1]||0),i[CVt]="".concat(r),i[OVt]=e,i}))}(r,t)}function TVt(t){var e=t.chart,n=t.options,r=n.percent,i=n.range,o=n.radius,a=n.innerRadius,c=n.startAngle,l=n.endAngle,u=n.axis,s=n.indicator,f=n.gaugeStyle,h=n.type,d=n.meter,p=i.color,v=i.width;if(s){var g=_Vt(r),m=e.createView({id:MVt});m.data(g),m.point().position("".concat(OVt,"*1")).shape(s.shape||"gauge-indicator").customInfo({defaultColor:e.getTheme().defaultColor,indicator:s}),m.coordinate("polar",{startAngle:c,endAngle:l,radius:a*o}),m.axis(OVt,u),m.scale(OVt,SUt(u,yUt))}var y=DVt(r,n.range),b=e.createView({id:AVt});b.data(y);var x=(0,tOt.HD)(p)?[p,EVt]:p;return RHt({chart:b,options:{xField:"1",yField:kVt,seriesField:CVt,rawFields:[OVt],isStack:!0,interval:{color:x,style:f,shape:"meter"===h?"meter-gauge":null},args:{zIndexReversed:!0,sortZIndex:!0},minColumnWidth:v,maxColumnWidth:v}}).ext.geometry.customInfo({meter:d}),b.coordinate("polar",{innerRadius:a,radius:o,startAngle:c,endAngle:l}).transpose(),t}function ZVt(t){var e;return FUt(kHt(((e={range:{min:0,max:1,maxLimit:1,minLimit:0}})[OVt]={},e)))(t)}function FVt(t,e){var n=t.chart,r=t.options,i=r.statistic,o=r.percent;if(n.getController("annotation").clear(!0),i){var a=i.content,c=void 0;a&&(c=TUt({},{content:"".concat((100*o).toFixed(2),"%"),style:{opacity:.75,fontSize:"30px",lineHeight:1,textAlign:"center",color:"rgba(44,53,66,0.85)"}},a)),YUt(n,{statistic:(0,QCt.pi)((0,QCt.pi)({},i),{content:c})},{percent:o})}return e&&n.render(!0),t}function jVt(t){var e=t.chart,n=t.options.tooltip;return n?e.tooltip(TUt({showTitle:!1,showMarkers:!1,containerTpl:'
      ',domStyles:{"g2-tooltip":{padding:"4px 8px",fontSize:"10px"}},customContent:function(t,e){var n=(0,tOt.U2)(e,[0,"data",OVt],0);return"".concat((100*n).toFixed(2),"%")}},n)):e.tooltip(!1),t}function IVt(t){return t.chart.legend(!1),t}function RVt(t){return FUt(bHt,yHt,TVt,ZVt,jVt,FVt,mHt,CHt(),IVt)(t)}JZt("point","gauge-indicator",{draw:function(t,e){var n=t.customInfo,r=n.indicator,i=n.defaultColor,o=r,a=o.pointer,c=o.pin,l=e.addGroup(),u=this.parsePoint({x:0,y:0});return a&&l.addShape("line",{name:"pointer",attrs:(0,QCt.pi)({x1:u.x,y1:u.y,x2:t.x,y2:t.y,stroke:i},a.style)}),c&&l.addShape("circle",{name:"pin",attrs:(0,QCt.pi)({x:u.x,y:u.y,stroke:i},c.style)}),l}}),JZt("interval","meter-gauge",{draw:function(t,e){var n=t.customInfo.meter,r=void 0===n?{}:n,i=r.steps,o=void 0===i?50:i,a=r.stepRatio,c=void 0===a?.5:a;o=o<1?1:o,c=(0,tOt.uZ)(c,0,1);var l=this.coordinate,u=l.startAngle,s=l.endAngle,f=0;c>0&&c<1&&(f=(s-u)/o/(c/(1-c)+1-1/o));for(var h=f/(1-c)*c,d=e.addGroup(),p=this.coordinate.getCenter(),v=this.coordinate.getRadius(),g=IFt.getAngle(t,this.coordinate),m=g.startAngle,y=g.endAngle,b=m;b1?l/(r-1):c.max),!n&&!r){var s=function(t){return Math.ceil(Math.log(t.length)/Math.LN2)+1}(a);u=l/s}var f={},h=(0,tOt.vM)(o,i);(0,tOt.xb)(h)?(0,tOt.S6)(o,(function(t){var n=NVt(t[e],u,r),i="".concat(n[0],"-").concat(n[1]);(0,tOt.wH)(f,i)||(f[i]={range:n,count:0}),f[i].count+=1})):Object.keys(h).forEach((function(t){(0,tOt.S6)(h[t],(function(n){var o=NVt(n[e],u,r),a="".concat(o[0],"-").concat(o[1]),c="".concat(a,"-").concat(t);(0,tOt.wH)(f,c)||(f[c]={range:o,count:0},f[c][i]=t),f[c].count+=1}))}));var d=[];return(0,tOt.S6)(f,(function(t){d.push(t)})),d}var zVt="range",UVt="count",HVt=TUt({},VHt.getDefaultOptions(),{columnStyle:{stroke:"#FFFFFF"},tooltip:{shared:!0,showMarkers:!1},interactions:[{type:"active-region"}]});function WVt(t){var e=t.chart,n=t.options,r=n.data,i=n.binField,o=n.binNumber,a=n.binWidth,c=n.color,l=n.stackField,u=n.legend,s=n.columnStyle,f=BVt(r,i,a,o,l);return e.data(f),RHt(TUt({},t,{options:{xField:zVt,yField:UVt,seriesField:l,isStack:!0,interval:{color:c,style:s}}})),u&&l?e.legend(l,u):e.legend(!1),t}function VVt(t){var e,n=t.options,r=n.xAxis,i=n.yAxis;return FUt(kHt(((e={})[zVt]=r,e[UVt]=i,e)))(t)}function GVt(t){var e=t.chart,n=t.options,r=n.xAxis,i=n.yAxis;return!1===r?e.axis(zVt,!1):e.axis(zVt,r),!1===i?e.axis(UVt,!1):e.axis(UVt,i),t}function XVt(t){var e=t.chart,n=t.options.label,r=jUt(e,"interval");if(n){var i=n.callback,o=(0,QCt._T)(n,["callback"]);r.label({fields:[UVt],callback:i,cfg:LUt(o)})}else r.label(!1);return t}function qVt(t){return FUt(bHt,pHt("columnStyle"),WVt,VVt,GVt,xHt,XVt,gHt,mHt,yHt)(t)}var YVt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="histogram",e}return(0,QCt.ZT)(e,t),e.getDefaultOptions=function(){return HVt},e.prototype.changeData=function(t){this.updateOption({data:t});var e=this.options,n=e.binField,r=e.binNumber,i=e.binWidth,o=e.stackField;this.chart.changeData(BVt(t,n,i,r,o))},e.prototype.getDefaultOptions=function(){return e.getDefaultOptions()},e.prototype.getSchemaAdaptor=function(){return qVt},e}(VHt),$Vt=TUt({},VHt.getDefaultOptions(),{tooltip:{shared:!0,showMarkers:!0,showCrosshairs:!0,crosshairs:{type:"x"}},legend:{position:"top-left",radio:{}},isStack:!1}),KVt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.active=function(){var t=this.getView(),e=this.context.event;if(e.data){var n=e.data.items,r=t.geometries.filter((function(t){return"point"===t.type}));(0,tOt.S6)(r,(function(t){(0,tOt.S6)(t.elements,(function(t){var e=-1!==(0,tOt.cx)(n,(function(e){return e.data===t.data}));t.setState("active",e)}))}))}},e.prototype.reset=function(){var t=this.getView().geometries.filter((function(t){return"point"===t.type}));(0,tOt.S6)(t,(function(t){(0,tOt.S6)(t.elements,(function(t){t.setState("active",!1)}))}))},e.prototype.getView=function(){return this.context.view},e}(BDt);VDt("marker-active",KVt),zTt("marker-active",{start:[{trigger:"tooltip:show",action:"marker-active:active"}],end:[{trigger:"tooltip:hide",action:"marker-active:reset"}]});var JVt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="line",e}return(0,QCt.ZT)(e,t),e.getDefaultOptions=function(){return $Vt},e.prototype.changeData=function(t){this.updateOption({data:t});YHt({chart:this.chart,options:this.options}),this.chart.changeData(t)},e.prototype.getDefaultOptions=function(){return e.getDefaultOptions()},e.prototype.getSchemaAdaptor=function(){return eWt},e}(VHt),QVt=TUt({},VHt.getDefaultOptions(),{legend:{position:"right",radio:{}},tooltip:{shared:!1,showTitle:!1,showMarkers:!1},label:{layout:{type:"limit-in-plot",cfg:{action:"ellipsis"}}},pieStyle:{stroke:"white",lineWidth:1},statistic:{title:{style:{fontWeight:300,color:"#4B535E",textAlign:"center",fontSize:"20px",lineHeight:1}},content:{style:{fontWeight:"bold",color:"rgba(44,53,66,0.85)",textAlign:"center",fontSize:"32px",lineHeight:1}}},theme:{components:{annotation:{text:{animate:!1}}}}}),tGt=[1,0,0,0,1,0,0,0,1];function eGt(t,e){var n=e?(0,QCt.ev)([],e,!0):(0,QCt.ev)([],tGt,!0);return IFt.transform(n,t)}var nGt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getActiveElements=function(){var t=IFt.getDelegationObject(this.context);if(t){var e=this.context.view,n=t.component,r=t.item,i=n.get("field");if(i)return e.geometries[0].elements.filter((function(t){return t.getModel().data[i]===r.value}))}return[]},e.prototype.getActiveElementLabels=function(){var t=this.context.view,e=this.getActiveElements();return t.geometries[0].labelsContainer.getChildren().filter((function(t){return e.find((function(e){return(0,tOt.Xy)(e.getData(),t.get("data"))}))}))},e.prototype.transfrom=function(t){void 0===t&&(t=7.5);var e=this.getActiveElements(),n=this.getActiveElementLabels();e.forEach((function(e,r){var i=n[r],o=e.geometry.coordinate;if(o.isPolar&&o.isTransposed){var a=IFt.getAngle(e.getModel(),o),c=(a.startAngle+a.endAngle)/2,l=t,u=l*Math.cos(c),s=l*Math.sin(c);e.shape.setMatrix(eGt([["t",u,s]])),i.setMatrix(eGt([["t",u,s]]))}}))},e.prototype.active=function(){this.transfrom()},e.prototype.reset=function(){this.transfrom(0)},e}(BDt);var rGt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getAnnotations=function(t){return(t||this.context.view).getController("annotation").option},e.prototype.getInitialAnnotation=function(){return this.initialAnnotation},e.prototype.init=function(){var t=this,e=this.context.view;e.removeInteraction("tooltip"),e.on("afterchangesize",(function(){var n=t.getAnnotations(e);t.initialAnnotation=n}))},e.prototype.change=function(t){var e=this.context,n=e.view,r=e.event;this.initialAnnotation||(this.initialAnnotation=this.getAnnotations());var i=(0,tOt.U2)(r,["data","data"]);if(r.type.match("legend-item")){var o=IFt.getDelegationObject(this.context),a=n.getGroupedFields()[0];if(o&&a){var c=o.item;i=n.getData().find((function(t){return t[a]===c.value}))}}if(i){var l=(0,tOt.U2)(t,"annotations",[]),u=(0,tOt.U2)(t,"statistic",{});n.getController("annotation").clear(!0),(0,tOt.S6)(l,(function(t){"object"==typeof t&&n.annotation()[t.type](t)})),qUt(n,{statistic:u,plotType:"pie"},i),n.render(!0)}var s=function(t){var e,n=t.event.target;return n&&(e=n.get("element")),e}(this.context);s&&s.shape.toFront()},e.prototype.reset=function(){var t=this.context.view;t.getController("annotation").clear(!0);var e=this.getInitialAnnotation();(0,tOt.S6)(e,(function(e){t.annotation()[e.type](e)})),t.render(!0)},e}(BDt),iGt="pie-statistic";function oGt(t,e){var n;switch(t){case"inner":return n="-30%",(0,tOt.HD)(e)&&e.endsWith("%")?.01*parseFloat(e)>0?n:e:e<0?e:n;case"outer":return n=12,(0,tOt.HD)(e)&&e.endsWith("%")?.01*parseFloat(e)<0?n:e:e>0?e:n;default:return e}}function aGt(t,e){return(0,tOt.yW)(OUt(t,e),(function(t){return 0===t[e]}))}function cGt(t){var e=t.chart,n=t.options,r=n.data,i=n.angleField,o=n.colorField,a=n.color,c=n.pieStyle,l=n.shape,u=OUt(r,i);if(aGt(u,i)){var s="$$percentage$$";u=u.map((function(t){var e;return(0,QCt.pi)((0,QCt.pi)({},t),((e={})[s]=1/u.length,e))})),e.data(u),RHt(TUt({},t,{options:{xField:"1",yField:s,seriesField:o,isStack:!0,interval:{color:a,shape:l,style:c},args:{zIndexReversed:!0,sortZIndex:!0}}}))}else{e.data(u),RHt(TUt({},t,{options:{xField:"1",yField:i,seriesField:o,isStack:!0,interval:{color:a,shape:l,style:c},args:{zIndexReversed:!0,sortZIndex:!0}}}))}return t}function lGt(t){var e,n=t.chart,r=t.options,i=r.meta,o=r.colorField,a=TUt({},i);return n.scale(a,((e={})[o]={type:"cat"},e)),t}function uGt(t){var e=t.chart,n=t.options,r=n.radius,i=n.innerRadius,o=n.startAngle,a=n.endAngle;return e.coordinate({type:"theta",cfg:{radius:r,innerRadius:i,startAngle:o,endAngle:a}}),t}function sGt(t){var e=t.chart,n=t.options,r=n.label,i=n.colorField,o=n.angleField,a=e.geometries[0];if(r){var c=r.callback,l=LUt((0,QCt._T)(r,["callback"]));if(l.content){var u=l.content;l.content=function(t,n,r){var a=t[i],c=t[o],l=e.getScaleByField(o),s=null==l?void 0:l.scale(c);return(0,tOt.mf)(u)?u((0,QCt.pi)((0,QCt.pi)({},t),{percent:s}),n,r):(0,tOt.HD)(u)?$Ut(u,{value:c,name:a,percentage:(0,tOt.hj)(s)&&!(0,tOt.UM)(c)?"".concat((100*s).toFixed(2),"%"):null}):u}}var s=l.type?{inner:"",outer:"pie-outer",spider:"pie-spider"}[l.type]:"pie-outer",f=l.layout?(0,tOt.kJ)(l.layout)?l.layout:[l.layout]:[];l.layout=(s?[{type:s}]:[]).concat(f),a.label({fields:i?[o,i]:[o],callback:c,cfg:(0,QCt.pi)((0,QCt.pi)({},l),{offset:oGt(l.type,l.offset),type:"pie"})})}else a.label(!1);return t}function fGt(t){var e=t.innerRadius,n=t.statistic,r=t.angleField,i=t.colorField,o=t.meta,a=_Ht(t.locale);if(e&&n){var c=TUt({},QVt.statistic,n),l=c.title,u=c.content;return!1!==l&&(l=TUt({},{formatter:function(t){var e=t?t[i]:(0,tOt.UM)(l.content)?a.get(["statistic","total"]):l.content,n=(0,tOt.U2)(o,[i,"formatter"])||function(t){return t};return n(e)}},l)),!1!==u&&(u=TUt({},{formatter:function(t,e){var n=t?t[r]:function(t,e){var n=null;return(0,tOt.S6)(t,(function(t){"number"==typeof t[e]&&(n+=t[e])})),n}(e,r),i=(0,tOt.U2)(o,[r,"formatter"])||function(t){return t};return t||(0,tOt.UM)(u.content)?i(n):u.content}},u)),TUt({},{statistic:{title:l,content:u}},t)}return t}function hGt(t){var e=t.chart,n=fGt(t.options),r=n.innerRadius,i=n.statistic;return e.getController("annotation").clear(!0),FUt(CHt())(t),r&&i&&qUt(e,{statistic:i,plotType:"pie"}),t}function dGt(t){var e=t.chart,n=t.options,r=n.tooltip,i=n.colorField,o=n.angleField,a=n.data;if(!1===r)e.tooltip(r);else if(e.tooltip(TUt({},r,{shared:!1})),aGt(a,o)){var c=(0,tOt.U2)(r,"fields"),l=(0,tOt.U2)(r,"formatter");(0,tOt.xb)((0,tOt.U2)(r,"fields"))&&(c=[i,o],l=l||function(t){return{name:t[i],value:(0,tOt.BB)(t[o])}}),e.geometries[0].tooltip(c.join("*"),ZHt(c,l))}return t}function pGt(t){var e=t.chart,n=fGt(t.options),r=n.interactions,i=n.statistic,o=n.annotations;return(0,tOt.S6)(r,(function(t){var n,r;if(!1===t.enable)e.removeInteraction(t.type);else if("pie-statistic-active"===t.type){var a=[];(null===(n=t.cfg)||void 0===n?void 0:n.start)||(a=[{trigger:"element:mouseenter",action:"".concat(iGt,":change"),arg:{statistic:i,annotations:o}}]),(0,tOt.S6)(null===(r=t.cfg)||void 0===r?void 0:r.start,(function(t){a.push((0,QCt.pi)((0,QCt.pi)({},t),{arg:{statistic:i,annotations:o}}))})),e.interaction(t.type,TUt({},t.cfg,{start:a}))}else e.interaction(t.type,t.cfg||{})})),t}function vGt(t){return FUt(pHt("pieStyle"),cGt,lGt,bHt,uGt,vHt,dGt,sGt,xHt,hGt,pGt,yHt)(t)}VDt(iGt,rGt),zTt("pie-statistic-active",{start:[{trigger:"element:mouseenter",action:"pie-statistic:change"}],end:[{trigger:"element:mouseleave",action:"pie-statistic:reset"}]}),VDt("pie-legend",nGt),zTt("pie-legend-active",{start:[{trigger:"legend-item:mouseenter",action:"pie-legend:active"}],end:[{trigger:"legend-item:mouseleave",action:"pie-legend:reset"}]});var gGt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="pie",e}return(0,QCt.ZT)(e,t),e.getDefaultOptions=function(){return QVt},e.prototype.changeData=function(t){this.chart.emit(eOt.BEFORE_CHANGE_DATA,xZt.fromData(this.chart,eOt.BEFORE_CHANGE_DATA,null));var e=this.options,n=this.options.angleField,r=OUt(e.data,n),i=OUt(t,n);aGt(r,n)||aGt(i,n)?this.update({data:t}):(this.updateOption({data:t}),this.chart.data(i),hGt({chart:this.chart,options:this.options}),this.chart.render(!0)),this.chart.emit(eOt.AFTER_CHANGE_DATA,xZt.fromData(this.chart,eOt.AFTER_CHANGE_DATA,null))},e.prototype.getDefaultOptions=function(){return e.getDefaultOptions()},e.prototype.getSchemaAdaptor=function(){return vGt},e}(VHt),mGt=["#FAAD14","#E8EDF3"],yGt={percent:.2,color:mGt,animation:{}};function bGt(t){var e=(0,tOt.uZ)(NUt(t)?t:0,0,1);return[{current:"".concat(e),type:"current",percent:e},{current:"".concat(e),type:"target",percent:1}]}function xGt(t){var e=t.chart,n=t.options,r=n.percent,i=n.progressStyle,o=n.color,a=n.barWidthRatio;return e.data(bGt(r)),RHt(TUt({},t,{options:{xField:"current",yField:"percent",seriesField:"type",widthRatio:a,interval:{style:i,color:(0,tOt.HD)(o)?[o,mGt[1]]:o},args:{zIndexReversed:!0,sortZIndex:!0}}})),e.tooltip(!1),e.axis(!1),e.legend(!1),t}function wGt(t){return t.chart.coordinate("rect").transpose(),t}function SGt(t){return FUt(xGt,kHt({}),wGt,yHt,bHt,CHt())(t)}var kGt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="process",e}return(0,QCt.ZT)(e,t),e.getDefaultOptions=function(){return yGt},e.prototype.changeData=function(t){this.updateOption({percent:t}),this.chart.changeData(bGt(t))},e.prototype.getDefaultOptions=function(){return e.getDefaultOptions()},e.prototype.getSchemaAdaptor=function(){return SGt},e}(VHt);function CGt(t){var e=t.chart,n=t.options,r=n.innerRadius,i=n.radius;return e.coordinate("theta",{innerRadius:r,radius:i}),t}function OGt(t,e){var n=t.chart,r=t.options,i=r.innerRadius,o=r.statistic,a=r.percent,c=r.meta;if(n.getController("annotation").clear(!0),i&&o){var l=(0,tOt.U2)(c,["percent","formatter"])||function(t){return"".concat((100*t).toFixed(2),"%")},u=o.content;u&&(u=TUt({},u,{content:(0,tOt.UM)(u.content)?l(a):u.content})),qUt(n,{statistic:(0,QCt.pi)((0,QCt.pi)({},o),{content:u}),plotType:"ring-progress"},{percent:a})}return e&&n.render(!0),t}function EGt(t){return FUt(xGt,kHt({}),CGt,OGt,yHt,bHt,CHt())(t)}var MGt={percent:.2,innerRadius:.8,radius:.98,color:["#FAAD14","#E8EDF3"],statistic:{title:!1,content:{style:{fontSize:"14px",fontWeight:300,fill:"#4D4D4D",textAlign:"center",textBaseline:"middle"}}},animation:{}},AGt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="ring-process",e}return(0,QCt.ZT)(e,t),e.getDefaultOptions=function(){return MGt},e.prototype.changeData=function(t){this.chart.emit(eOt.BEFORE_CHANGE_DATA,xZt.fromData(this.chart,eOt.BEFORE_CHANGE_DATA,null)),this.updateOption({percent:t}),this.chart.data(bGt(t)),OGt({chart:this.chart,options:this.options},!0),this.chart.emit(eOt.AFTER_CHANGE_DATA,xZt.fromData(this.chart,eOt.AFTER_CHANGE_DATA,null))},e.prototype.getDefaultOptions=function(){return e.getDefaultOptions()},e.prototype.getSchemaAdaptor=function(){return EGt},e}(VHt),PGt=n(71547),_Gt={exp:PGt.regressionExp,linear:PGt.regressionLinear,loess:PGt.regressionLoess,log:PGt.regressionLog,poly:PGt.regressionPoly,pow:PGt.regressionPow,quad:PGt.regressionQuad};var DGt=function(t,e){var n=e.view,r=e.options,i=r.xField,o=r.yField,a=n.getScaleByField(i),c=n.getScaleByField(o);return WUt(t.map((function(t){return n.getCoordinate().convert({x:a.scale(t[0]),y:c.scale(t[1])})})),!1)},TGt=function(t){var e,n=t.options,r=n.xField,i=n.yField,o=n.data,a=n.regressionLine,c=a.type,l=void 0===c?"linear":c,u=a.algorithm,s=a.equation,f=null;u?(e=(0,tOt.kJ)(u)?u:u(o),f=s):f=function(t,e){var n,r,i,o=function(t,e){return void 0===e&&(e=4),Math.round(t*Math.pow(10,e))/Math.pow(10,e)},a=function(t){return Number.isFinite(t)?o(t):"?"};switch(t){case"linear":return"y = ".concat(a(e.a),"x + ").concat(a(e.b),", R^2 = ").concat(a(e.rSquared));case"exp":return"y = ".concat(a(e.a),"e^(").concat(a(e.b),"x), R^2 = ").concat(a(e.rSquared));case"log":return"y = ".concat(a(e.a),"ln(x) + ").concat(a(e.b),", R^2 = ").concat(a(e.rSquared));case"quad":return"y = ".concat(a(e.a),"x^2 + ").concat(a(e.b),"x + ").concat(a(e.c),", R^2 = ").concat(a(e.rSquared));case"poly":for(var c="y = ".concat(a(null===(n=e.coefficients)||void 0===n?void 0:n[0])," + ").concat(a(null===(r=e.coefficients)||void 0===r?void 0:r[1]),"x + ").concat(a(null===(i=e.coefficients)||void 0===i?void 0:i[2]),"x^2"),l=3;l
      ',itemTpl:"{value}",domStyles:{"g2-tooltip":{padding:"2px 4px",fontSize:"10px"}},showCrosshairs:!0,crosshairs:{type:"x"}},uXt={appendPadding:2,tooltip:(0,QCt.pi)({},lXt),animation:{}};function sXt(t){var e=t.chart,n=t.options,r=n.data,i=n.color,o=n.areaStyle,a=n.point,c=n.line,l=null==a?void 0:a.state,u=oXt(r);e.data(u);var s=TUt({},t,{options:{xField:aXt,yField:cXt,area:{color:i,style:o},line:c,point:a}}),f=TUt({},s,{options:{tooltip:!1}}),h=TUt({},s,{options:{tooltip:!1,state:l}});return jHt(s),LHt(f),NHt(h),e.axis(!1),e.legend(!1),t}function fXt(t){var e,n,r=t.options,i=r.xAxis,o=r.yAxis,a=oXt(r.data);return FUt(kHt(((e={})[aXt]=i,e[cXt]=o,e),((n={})[aXt]={type:"cat"},n[cXt]=kUt(a,cXt),n)))(t)}function hXt(t){return FUt(pHt("areaStyle"),sXt,fXt,gHt,bHt,yHt,CHt())(t)}var dXt={appendPadding:2,tooltip:(0,QCt.pi)({},lXt),color:"l(90) 0:#E5EDFE 1:#ffffff",areaStyle:{fillOpacity:.6},line:{size:1,color:"#5B8FF9"},animation:{}},pXt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="tiny-area",e}return(0,QCt.ZT)(e,t),e.getDefaultOptions=function(){return dXt},e.prototype.changeData=function(t){this.updateOption({data:t});var e=this.chart;fXt({chart:e,options:this.options}),e.changeData(oXt(t))},e.prototype.getDefaultOptions=function(){return e.getDefaultOptions()},e.prototype.getSchemaAdaptor=function(){return hXt},e}(VHt);function vXt(t){var e=t.chart,n=t.options,r=n.data,i=n.color,o=n.columnStyle,a=n.columnWidthRatio,c=oXt(r);return e.data(c),RHt(TUt({},t,{options:{xField:aXt,yField:cXt,widthRatio:a,interval:{style:o,color:i}}})),e.axis(!1),e.legend(!1),e.interaction("element-active"),t}function gXt(t){return FUt(bHt,pHt("columnStyle"),vXt,fXt,gHt,yHt,CHt())(t)}var mXt={showTitle:!1,shared:!0,showMarkers:!1,customContent:function(t,e){return"".concat((0,tOt.U2)(e,[0,"data","y"],0))},containerTpl:'
      ',itemTpl:"{value}",domStyles:{"g2-tooltip":{padding:"2px 4px",fontSize:"10px"}}},yXt={appendPadding:2,tooltip:(0,QCt.pi)({},mXt),animation:{}},bXt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="tiny-column",e}return(0,QCt.ZT)(e,t),e.getDefaultOptions=function(){return yXt},e.prototype.changeData=function(t){this.updateOption({data:t});var e=this.chart;fXt({chart:e,options:this.options}),e.changeData(oXt(t))},e.prototype.getDefaultOptions=function(){return e.getDefaultOptions()},e.prototype.getSchemaAdaptor=function(){return gXt},e}(VHt);function xXt(t){var e=t.chart,n=t.options,r=n.data,i=n.color,o=n.lineStyle,a=n.point,c=null==a?void 0:a.state,l=oXt(r);e.data(l);var u=TUt({},t,{options:{xField:aXt,yField:cXt,line:{color:i,style:o},point:a}}),s=TUt({},u,{options:{tooltip:!1,state:c}});return LHt(u),NHt(s),e.axis(!1),e.legend(!1),t}function wXt(t){return FUt(xXt,fXt,bHt,gHt,yHt,CHt())(t)}var SXt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="tiny-line",e}return(0,QCt.ZT)(e,t),e.getDefaultOptions=function(){return uXt},e.prototype.changeData=function(t){this.updateOption({data:t});var e=this.chart;fXt({chart:e,options:this.options}),e.changeData(oXt(t))},e.prototype.getDefaultOptions=function(){return e.getDefaultOptions()},e.prototype.getSchemaAdaptor=function(){return wXt},e}(VHt),kXt={line:eWt,pie:vGt,column:MWt,bar:ZWt,area:oWt,gauge:RVt,"tiny-line":wXt,"tiny-column":gXt,"tiny-area":hXt,"ring-progress":EGt,progress:SGt,scatter:HGt,histogram:qVt,funnel:xVt,stock:rXt},CXt={line:JVt,pie:gGt,column:LWt,bar:IWt,area:cWt,gauge:LVt,"tiny-line":SXt,"tiny-column":bXt,"tiny-area":pXt,"ring-progress":AGt,progress:kGt,scatter:VGt,histogram:YVt,funnel:SVt,stock:iXt},OXt={pie:{label:!1},column:{tooltip:{showMarkers:!1}},bar:{tooltip:{showMarkers:!1}}};function EXt(t,e,n){var r=CXt[t];r?(0,kXt[t])({chart:e,options:TUt({},r.getDefaultOptions(),(0,tOt.U2)(OXt,t,{}),n)}):console.error("could not find ".concat(t," plot"))}function MXt(t){var e=t.chart,n=t.options,r=n.views,i=n.legend;return(0,tOt.S6)(r,(function(t){var n=t.region,r=t.data,i=t.meta,o=t.axes,a=t.coordinate,c=t.interactions,l=t.annotations,u=t.tooltip,s=t.geometries,f=e.createView({region:n});f.data(r);var h={};o&&(0,tOt.S6)(o,(function(t,e){h[e]=SUt(t,yUt)})),h=TUt({},i,h),f.scale(h),o?(0,tOt.S6)(o,(function(t,e){f.axis(e,t)})):f.axis(!1),f.coordinate(a),(0,tOt.S6)(s,(function(t){var e=FHt({chart:f,options:t}).ext,n=t.adjust;n&&e.geometry.adjust(n)})),(0,tOt.S6)(c,(function(t){!1===t.enable?f.removeInteraction(t.type):f.interaction(t.type,t.cfg)})),(0,tOt.S6)(l,(function(t){f.annotation()[t.type]((0,QCt.pi)({},t))})),"boolean"==typeof t.animation?f.animate(!1):(f.animate(!0),(0,tOt.S6)(f.geometries,(function(e){e.animate(t.animation)}))),u&&(f.interaction("tooltip"),f.tooltip(u))})),i?(0,tOt.S6)(i,(function(t,n){e.legend(n,t)})):e.legend(!1),e.tooltip(n.tooltip),t}function AXt(t){var e=t.chart,n=t.options,r=n.plots,i=n.data,o=void 0===i?[]:i;return(0,tOt.S6)(r,(function(t){var n=t.type,r=t.region,i=t.options,a=void 0===i?{}:i,c=t.top,l=a.tooltip;if(c)EXt(n,e,(0,QCt.pi)((0,QCt.pi)({},a),{data:o}));else{var u=e.createView((0,QCt.pi)({region:r},SUt(a,WHt)));l&&u.interaction("tooltip"),EXt(n,u,(0,QCt.pi)({data:o},a))}})),t}function PXt(t){var e=t.chart,n=t.options;return e.option("slider",n.slider),t}function _Xt(t){return FUt(yHt,MXt,AXt,mHt,yHt,bHt,gHt,PXt,CHt())(t)}var DXt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getAssociationItems=function(t,e){var n,r=this.context.event,i=e||{},o=i.linkField,a=i.dim,c=[];if(null===(n=r.data)||void 0===n?void 0:n.data){var l=r.data.data;(0,tOt.S6)(t,(function(t){var e,n,r=o;if("x"===a?r=t.getXScale().field:"y"===a?r=null===(e=t.getYScales().find((function(t){return t.field===r})))||void 0===e?void 0:e.field:r||(r=null===(n=t.getGroupScales()[0])||void 0===n?void 0:n.field),r){var i=(0,tOt.UI)(IUt(t),(function(e){var n=!1,i=!1,o=(0,tOt.kJ)(l)?(0,tOt.U2)(l[0],r):(0,tOt.U2)(l,r);return function(t,e){var n=t.getModel().data;return(0,tOt.kJ)(n)?n[0][e]:n[e]}(e,r)===o?n=!0:i=!0,{element:e,view:t,active:n,inactive:i}}));c.push.apply(c,i)}}))}return c},e.prototype.showTooltip=function(t){var e=QUt(this.context.view),n=this.getAssociationItems(e,t);(0,tOt.S6)(n,(function(t){if(t.active){var e=t.element.shape.getCanvasBBox();t.view.showTooltip({x:e.minX+e.width/2,y:e.minY+e.height/2})}}))},e.prototype.hideTooltip=function(){var t=QUt(this.context.view);(0,tOt.S6)(t,(function(t){t.hideTooltip()}))},e.prototype.active=function(t){var e=JUt(this.context.view),n=this.getAssociationItems(e,t);(0,tOt.S6)(n,(function(t){var e=t.active,n=t.element;e&&n.setState("active",!0)}))},e.prototype.selected=function(t){var e=JUt(this.context.view),n=this.getAssociationItems(e,t);(0,tOt.S6)(n,(function(t){var e=t.active,n=t.element;e&&n.setState("selected",!0)}))},e.prototype.highlight=function(t){var e=JUt(this.context.view),n=this.getAssociationItems(e,t);(0,tOt.S6)(n,(function(t){var e=t.inactive,n=t.element;e&&n.setState("inactive",!0)}))},e.prototype.reset=function(){var t=JUt(this.context.view);(0,tOt.S6)(t,(function(t){!function(t){var e=IUt(t);(0,tOt.S6)(e,(function(t){t.hasState("active")&&t.setState("active",!1),t.hasState("selected")&&t.setState("selected",!1),t.hasState("inactive")&&t.setState("inactive",!1)}))}(t)}))},e}(BDt);VDt("association",DXt),zTt("association-active",{start:[{trigger:"element:mouseenter",action:"association:active"}],end:[{trigger:"element:mouseleave",action:"association:reset"}]}),zTt("association-selected",{start:[{trigger:"element:mouseenter",action:"association:selected"}],end:[{trigger:"element:mouseleave",action:"association:reset"}]}),zTt("association-highlight",{start:[{trigger:"element:mouseenter",action:"association:highlight"}],end:[{trigger:"element:mouseleave",action:"association:reset"}]}),zTt("association-tooltip",{start:[{trigger:"element:mousemove",action:"association:showTooltip"}],end:[{trigger:"element:mouseleave",action:"association:hideTooltip"}]});var TXt,ZXt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="mix",e}return(0,QCt.ZT)(e,t),e.prototype.getSchemaAdaptor=function(){return _Xt},e}(VHt);!function(t){t.DEV="DEV",t.BETA="BETA",t.STABLE="STABLE"}(TXt||(TXt={}));!function(){function t(){}Object.defineProperty(t,"MultiView",{get:function(){var t,e;return t=TXt.STABLE,e="MultiView",console.warn(t===TXt.DEV?"Plot '".concat(e,"' is in DEV stage, just give us issues."):t===TXt.BETA?"Plot '".concat(e,"' is in BETA stage, DO NOT use it in production env."):t===TXt.STABLE?"Plot '".concat(e,"' is in STABLE stage, import it by \"import { ").concat(e," } from '@antv/g2plot'\"."):"invalid Stage type."),ZXt},enumerable:!1,configurable:!0})}();var FXt="first-axes-view",jXt="second-axes-view",IXt="series-field-key";function RXt(t,e,n,r,i){var o=[];e.forEach((function(e){r.forEach((function(r){var i,a=((i={})[t]=r[t],i[n]=e,i[e]=r[e],i);o.push(a)}))}));var a=Object.values((0,tOt.vM)(o,n)),c=a[0],l=void 0===c?[]:c,u=a[1],s=void 0===u?[]:u;return i?[l.reverse(),s.reverse()]:[l,s]}function LXt(t){return"vertical"!==t}function NXt(t,e,n){var r=e[0],i=e[1],o=r.autoPadding,a=i.autoPadding,c=t.__axisPosition,l=c.layout,u=c.position;if(LXt(l)&&"top"===u&&(r.autoPadding=n.instance(o.top,0,o.bottom,o.left),i.autoPadding=n.instance(a.top,o.left,a.bottom,0)),LXt(l)&&"bottom"===u&&(r.autoPadding=n.instance(o.top,o.right/2+5,o.bottom,o.left),i.autoPadding=n.instance(a.top,a.right,a.bottom,o.right/2+5)),!LXt(l)&&"bottom"===u){var s=o.left>=a.left?o.left:a.left;r.autoPadding=n.instance(o.top,o.right,o.bottom/2+5,s),i.autoPadding=n.instance(o.bottom/2+5,a.right,a.bottom,s)}if(!LXt(l)&&"top"===u){s=o.left>=a.left?o.left:a.left;r.autoPadding=n.instance(o.top,o.right,0,s),i.autoPadding=n.instance(0,a.right,o.top,s)}}function BXt(t){var e,n,r=t.chart,i=t.options,o=i.data,a=i.xField,c=i.yField,l=i.color,u=i.barStyle,s=i.widthRatio,f=i.legend,h=i.layout,d=RXt(a,c,IXt,o,LXt(h));f?r.legend(IXt,f):!1===f&&r.legend(!1);var p=d[0],v=d[1];return LXt(h)?((e=r.createView({region:{start:{x:0,y:0},end:{x:.5,y:1}},id:FXt})).coordinate().transpose().reflect("x"),(n=r.createView({region:{start:{x:.5,y:0},end:{x:1,y:1}},id:jXt})).coordinate().transpose(),e.data(p),n.data(v)):(e=r.createView({region:{start:{x:0,y:0},end:{x:1,y:.5}},id:FXt}),(n=r.createView({region:{start:{x:0,y:.5},end:{x:1,y:1}},id:jXt})).coordinate().reflect("y"),e.data(p),n.data(v)),RHt(TUt({},t,{chart:e,options:{widthRatio:s,xField:a,yField:c[0],seriesField:IXt,interval:{color:l,style:u}}})),RHt(TUt({},t,{chart:n,options:{xField:a,yField:c[1],seriesField:IXt,widthRatio:s,interval:{color:l,style:u}}})),t}function zXt(t){var e,n,r,i=t.options,o=t.chart,a=i.xAxis,c=i.yAxis,l=i.xField,u=i.yField,s=KUt(o,FXt),f=KUt(o,jXt),h={};return(0,tOt.XP)((null==i?void 0:i.meta)||{}).map((function(t){(0,tOt.U2)(null==i?void 0:i.meta,[t,"alias"])&&(h[t]=i.meta[t].alias)})),o.scale(((e={})[IXt]={sync:!0,formatter:function(t){return(0,tOt.U2)(h,t,t)}},e)),kHt(((n={})[l]=a,n[u[0]]=c[u[0]],n))(TUt({},t,{chart:s})),kHt(((r={})[l]=a,r[u[1]]=c[u[1]],r))(TUt({},t,{chart:f})),t}function UXt(t){var e=t.chart,n=t.options,r=n.xAxis,i=n.yAxis,o=n.xField,a=n.yField,c=n.layout,l=KUt(e,FXt),u=KUt(e,jXt);return"bottom"===(null==r?void 0:r.position)?u.axis(o,(0,QCt.pi)((0,QCt.pi)({},r),{label:{formatter:function(){return""}}})):u.axis(o,!1),!1===r?l.axis(o,!1):l.axis(o,(0,QCt.pi)({position:LXt(c)?"top":"bottom"},r)),!1===i?(l.axis(a[0],!1),u.axis(a[1],!1)):(l.axis(a[0],i[a[0]]),u.axis(a[1],i[a[1]])),e.__axisPosition={position:l.getOptions().axes[o].position,layout:c},t}function HXt(t){var e=t.chart;return mHt(TUt({},t,{chart:KUt(e,FXt)})),mHt(TUt({},t,{chart:KUt(e,jXt)})),t}function WXt(t){var e=t.chart,n=t.options,r=n.yField,i=n.yAxis;return OHt(TUt({},t,{chart:KUt(e,FXt),options:{yAxis:i[r[0]]}})),OHt(TUt({},t,{chart:KUt(e,jXt),options:{yAxis:i[r[1]]}})),t}function VXt(t){var e=t.chart;return bHt(TUt({},t,{chart:KUt(e,FXt)})),bHt(TUt({},t,{chart:KUt(e,jXt)})),bHt(t),t}function GXt(t){var e=t.chart;return yHt(TUt({},t,{chart:KUt(e,FXt)})),yHt(TUt({},t,{chart:KUt(e,jXt)})),t}function XXt(t){var e,n,r=this,i=t.chart,o=t.options,a=o.label,c=o.yField,l=o.layout,u=KUt(i,FXt),s=KUt(i,jXt),f=jUt(u,"interval"),h=jUt(s,"interval");if(a){var d=a.callback,p=(0,QCt._T)(a,["callback"]);p.position||(p.position="middle"),void 0===p.offset&&(p.offset=2);var v=(0,QCt.pi)({},p);if(LXt(l)){var g=(null===(e=v.style)||void 0===e?void 0:e.textAlign)||("middle"===p.position?"center":"left");p.style=TUt({},p.style,{textAlign:g});v.style=TUt({},v.style,{textAlign:{left:"right",right:"left",center:"center"}[g]})}else{var m={top:"bottom",bottom:"top",middle:"middle"};"string"==typeof p.position?p.position=m[p.position]:"function"==typeof p.position&&(p.position=function(){for(var t=[],e=0;e1?"".concat(e,"_").concat(n):"".concat(e)}function lqt(t){var e=t.data,n=t.xField,r=t.measureField,i=t.rangeField,o=t.targetField,a=t.layout,c=[],l=[];e.forEach((function(t,e){var a=[t[i]].flat();a.sort((function(t,e){return t-e})),a.forEach((function(r,o){var l,u=0===o?r:a[o]-a[o-1];c.push(((l={rKey:"".concat(i,"_").concat(o)})[n]=n?t[n]:String(e),l[i]=u,l))}));var u=[t[r]].flat();u.forEach((function(i,o){var a;c.push(((a={mKey:cqt(u,r,o)})[n]=n?t[n]:String(e),a[r]=i,a))}));var s=[t[o]].flat();s.forEach((function(r,i){var a;c.push(((a={tKey:cqt(s,o,i)})[n]=n?t[n]:String(e),a[o]=r,a))})),l.push(t[i],t[r],t[o])}));var u=Math.min.apply(Math,l.flat(1/0)),s=Math.max.apply(Math,l.flat(1/0));return u=u>0?0:u,"vertical"===a&&c.reverse(),{min:u,max:s,ds:c}}function uqt(t){var e=t.chart,n=t.options,r=n.bulletStyle,i=n.targetField,o=n.rangeField,a=n.measureField,c=n.xField,l=n.color,u=n.layout,s=n.size,f=n.label,h=lqt(n),d=h.min,p=h.max,v=h.ds;e.data(v),RHt(TUt({},t,{options:{xField:c,yField:o,seriesField:"rKey",isStack:!0,label:(0,tOt.U2)(f,"range"),interval:{color:(0,tOt.U2)(l,"range"),style:(0,tOt.U2)(r,"range"),size:(0,tOt.U2)(s,"range")}}})),e.geometries[0].tooltip(!1),RHt(TUt({},t,{options:{xField:c,yField:a,seriesField:"mKey",isStack:!0,label:(0,tOt.U2)(f,"measure"),interval:{color:(0,tOt.U2)(l,"measure"),style:(0,tOt.U2)(r,"measure"),size:(0,tOt.U2)(s,"measure")}}}));var g=TUt({},t,{options:{xField:c,yField:i,seriesField:"tKey",label:(0,tOt.U2)(f,"target"),point:{color:(0,tOt.U2)(l,"target"),style:(0,tOt.U2)(r,"target"),size:(0,tOt.mf)((0,tOt.U2)(s,"target"))?function(t){return(0,tOt.U2)(s,"target")(t)/2}:(0,tOt.U2)(s,"target")/2,shape:"horizontal"===u?"line":"hyphen"}}});return NHt(g),"horizontal"===u&&e.coordinate().transpose(),(0,QCt.pi)((0,QCt.pi)({},t),{ext:{data:{min:d,max:p}}})}function sqt(t){var e,n,r=t.options,i=t.ext,o=r.xAxis,a=r.yAxis,c=r.targetField,l=r.rangeField,u=r.measureField,s=r.xField,f=i.data;return FUt(kHt(((e={})[s]=o,e[u]=a,e),((n={})[u]={min:null==f?void 0:f.min,max:null==f?void 0:f.max,sync:!0},n[c]={sync:"".concat(u)},n[l]={sync:"".concat(u)},n)))(t)}function fqt(t){var e=t.chart,n=t.options,r=n.xAxis,i=n.yAxis,o=n.xField,a=n.measureField,c=n.rangeField,l=n.targetField;return e.axis("".concat(c),!1),e.axis("".concat(l),!1),!1===r?e.axis("".concat(o),!1):e.axis("".concat(o),r),!1===i?e.axis("".concat(a),!1):e.axis("".concat(a),i),t}function hqt(t){var e=t.chart,n=t.options.legend;return e.removeInteraction("legend-filter"),e.legend(n),e.legend("rKey",!1),e.legend("mKey",!1),e.legend("tKey",!1),t}function dqt(t){var e=t.chart,n=t.options,r=n.label,i=n.measureField,o=n.targetField,a=n.rangeField,c=e.geometries,l=c[0],u=c[1],s=c[2];return(0,tOt.U2)(r,"range")?l.label("".concat(a),(0,QCt.pi)({layout:[{type:"limit-in-plot"}]},LUt(r.range))):l.label(!1),(0,tOt.U2)(r,"measure")?u.label("".concat(i),(0,QCt.pi)({layout:[{type:"limit-in-plot"}]},LUt(r.measure))):u.label(!1),(0,tOt.U2)(r,"target")?s.label("".concat(o),(0,QCt.pi)({layout:[{type:"limit-in-plot"}]},LUt(r.target))):s.label(!1),t}function pqt(t){FUt(uqt,sqt,fqt,hqt,bHt,dqt,gHt,mHt,yHt)(t)}var vqt=TUt({},VHt.getDefaultOptions(),{layout:"horizontal",size:{range:30,measure:20,target:20},xAxis:{tickLine:!1,line:null},bulletStyle:{range:{fillOpacity:.5}},label:{measure:{position:"right"}},tooltip:{showMarkers:!1}}),gqt=(function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="bullet",e}(0,QCt.ZT)(e,t),e.getDefaultOptions=function(){return vqt},e.prototype.changeData=function(t){this.updateOption({data:t});var e=lqt(this.options),n=e.min,r=e.max,i=e.ds;sqt({options:this.options,ext:{data:{min:n,max:r}},chart:this.chart}),this.chart.changeData(i)},e.prototype.getSchemaAdaptor=function(){return pqt},e.prototype.getDefaultOptions=function(){return e.getDefaultOptions()}}(VHt),{y:0,nodeWidthRatio:.05,weight:!1,nodePaddingRatio:.1,id:function(t){return t.id},source:function(t){return t.source},target:function(t){return t.target},sourceWeight:function(t){return t.value||1},targetWeight:function(t){return t.value||1},sortBy:null});function mqt(t,e){var n=function(t){return(0,tOt.f0)({},gqt,t)}(t),r={},i=e.nodes,o=e.links;i.forEach((function(t){var e=n.id(t);r[e]=t})),function(t,e,n){(0,tOt.U5)(t,(function(t,r){t.inEdges=e.filter((function(t){return"".concat(n.target(t))==="".concat(r)})),t.outEdges=e.filter((function(t){return"".concat(n.source(t))==="".concat(r)})),t.edges=t.outEdges.concat(t.inEdges),t.frequency=t.edges.length,t.value=0,t.inEdges.forEach((function(e){t.value+=n.targetWeight(e)})),t.outEdges.forEach((function(e){t.value+=n.sourceWeight(e)}))}))}(r,o,n),function(t,e){var n={weight:function(t,e){return e.value-t.value},frequency:function(t,e){return e.frequency-t.frequency},id:function(t,n){return"".concat(e.id(t)).localeCompare("".concat(e.id(n)))}},r=n[e.sortBy];!r&&(0,tOt.mf)(e.sortBy)&&(r=e.sortBy),r&&t.sort(r)}(i,n);var a=function(t,e){var n=t.length;if(!n)throw new TypeError("Invalid nodes: it's empty!");if(e.weight){var r=e.nodePaddingRatio;if(r<0||r>=1)throw new TypeError("Invalid nodePaddingRatio: it must be in range [0, 1)!");var i=r/(2*n),o=e.nodeWidthRatio;if(o<=0||o>=1)throw new TypeError("Invalid nodeWidthRatio: it must be in range (0, 1)!");var a=0;t.forEach((function(t){a+=t.value})),t.forEach((function(t){t.weight=t.value/a,t.width=t.weight*(1-r),t.height=o})),t.forEach((function(n,r){for(var a=0,c=r-1;c>=0;c--)a+=t[c].width+2*i;var l=n.minX=i+a,u=n.maxX=n.minX+n.width,s=n.minY=e.y-o/2,f=n.maxY=s+o;n.x=[l,u,u,l],n.y=[s,s,f,f]}))}else{var c=1/n;t.forEach((function(t,n){t.x=(n+.5)*c,t.y=e.y}))}return t}(i,n),c=function(t,e,n){if(n.weight){var r={};(0,tOt.U5)(t,(function(t,e){r[e]=t.value})),e.forEach((function(e){var i=n.source(e),o=n.target(e),a=t[i],c=t[o];if(a&&c){var l=r[i],u=n.sourceWeight(e),s=a.minX+(a.value-l)/a.value*a.width,f=s+u/a.value*a.width;r[i]-=u;var h=r[o],d=n.targetWeight(e),p=c.minX+(c.value-h)/c.value*c.width,v=p+d/c.value*c.width;r[o]-=d;var g=n.y;e.x=[s,f,p,v],e.y=[g,g,g,g],e.source=a,e.target=c}}))}else e.forEach((function(e){var r=t[n.source(e)],i=t[n.target(e)];r&&i&&(e.x=[r.x,i.x],e.y=[r.y,i.y],e.source=r,e.target=i)}));return e}(r,o,n);return{nodes:a,links:c}}var yqt="x",bqt="y",xqt="name",wqt="source",Sqt={nodeStyle:{opacity:1,fillOpacity:1,lineWidth:1},edgeStyle:{opacity:.5,lineWidth:2},label:{fields:["x","name"],callback:function(t,e){return{offsetX:(t[0]+t[1])/2>.5?-4:4,content:e}},labelEmit:!0,style:{fill:"#8c8c8c"}},tooltip:{showTitle:!1,showMarkers:!1,fields:["source","target","value","isNode"],showContent:function(t){return!(0,tOt.U2)(t,[0,"data","isNode"])},formatter:function(t){var e=t.source,n=t.target,r=t.value;return{name:"".concat(e," -> ").concat(n),value:r}}},interactions:[{type:"element-active"}],weight:!0,nodePaddingRatio:.1,nodeWidthRatio:.05};function kqt(t){var e=t.options,n=e.data,r=e.sourceField,i=e.targetField,o=e.weightField,a=e.nodePaddingRatio,c=e.nodeWidthRatio,l=e.rawFields,u=void 0===l?[]:l,s=mqt({weight:!0,nodePaddingRatio:a,nodeWidthRatio:c},CUt(n,r,i,o)),f=s.nodes,h=s.links,d=f.map((function(t){return(0,QCt.pi)((0,QCt.pi)({},SUt(t,(0,QCt.ev)(["id","x","y","name"],u,!0))),{isNode:!0})})),p=h.map((function(t){return(0,QCt.pi)((0,QCt.pi)({source:t.source.name,target:t.target.name,name:t.source.name||t.target.name},SUt(t,(0,QCt.ev)(["x","y","value"],u,!0))),{isNode:!1})}));return(0,QCt.pi)((0,QCt.pi)({},t),{ext:(0,QCt.pi)((0,QCt.pi)({},t.ext),{chordData:{nodesData:d,edgesData:p}})})}function Cqt(t){var e;return t.chart.scale(((e={x:{sync:!0,nice:!0},y:{sync:!0,nice:!0,max:1}})[xqt]={sync:"color"},e[wqt]={sync:"color"},e)),t}function Oqt(t){return t.chart.axis(!1),t}function Eqt(t){return t.chart.legend(!1),t}function Mqt(t){var e=t.chart,n=t.options.tooltip;return e.tooltip(n),t}function Aqt(t){return t.chart.coordinate("polar").reflect("y"),t}function Pqt(t){var e=t.chart,n=t.options,r=t.ext.chordData.nodesData,i=n.nodeStyle,o=n.label,a=n.tooltip,c=e.createView();return c.data(r),BHt({chart:c,options:{xField:yqt,yField:bqt,seriesField:xqt,polygon:{style:i},label:o,tooltip:a}}),t}function _qt(t){var e=t.chart,n=t.options,r=t.ext.chordData.edgesData,i=n.edgeStyle,o=n.tooltip,a=e.createView();return a.data(r),IHt({chart:a,options:{xField:yqt,yField:bqt,seriesField:wqt,edge:{style:i,shape:"arc"},tooltip:o}}),t}function Dqt(t){var e=t.chart;return tHt(e,t.options.animation,function(t){return(0,tOt.U2)(t,["views","length"],0)<=0?t.geometries:(0,tOt.u4)(t.views,(function(t,e){return t.concat(e.geometries)}),t.geometries)}(e)),t}function Tqt(t){return FUt(bHt,kqt,Aqt,Cqt,Oqt,Eqt,Mqt,_qt,Pqt,mHt,xHt,Dqt)(t)}!function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="chord",e}(0,QCt.ZT)(e,t),e.getDefaultOptions=function(){return Sqt},e.prototype.getDefaultOptions=function(){return e.getDefaultOptions()},e.prototype.getSchemaAdaptor=function(){return Tqt}}(VHt);var Zqt=["x","y","r","name","value","path","depth"],Fqt={colorField:"name",autoFit:!0,pointStyle:{lineWidth:0,stroke:"#fff"},legend:!1,hierarchyConfig:{size:[1,1],padding:0},label:{fields:["name"],layout:{type:"limit-in-shape"}},tooltip:{showMarkers:!1,showTitle:!1},drilldown:{enabled:!1}},jqt="drilldown-bread-crumb",Iqt={position:"top-left",dividerText:"/",textStyle:{fontSize:12,fill:"rgba(0, 0, 0, 0.65)",cursor:"pointer"},activeTextStyle:{fill:"#87B5FF"}},Rqt="hierarchy-data-transform-params",Lqt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.name="drill-down",e.historyCache=[],e.breadCrumbGroup=null,e.breadCrumbCfg=Iqt,e}return(0,QCt.ZT)(e,t),e.prototype.click=function(){var t=(0,tOt.U2)(this.context,["event","data","data"]);if(!t)return!1;this.drill(t),this.drawBreadCrumb()},e.prototype.resetPosition=function(){if(this.breadCrumbGroup){var t=this.context.view.getCoordinate(),e=this.breadCrumbGroup,n=e.getBBox(),r=this.getButtonCfg().position,i={x:t.start.x,y:t.end.y-(n.height+10)};t.isPolar&&(i={x:0,y:0}),"bottom-left"===r&&(i={x:t.start.x,y:t.start.y});var o=IFt.transform(null,[["t",i.x+0,i.y+n.height+5]]);e.setMatrix(o)}},e.prototype.back=function(){(0,tOt.dp)(this.historyCache)&&this.backTo(this.historyCache.slice(0,-1))},e.prototype.reset=function(){this.historyCache[0]&&this.backTo(this.historyCache.slice(0,1)),this.historyCache=[],this.hideCrumbGroup()},e.prototype.drill=function(t){var e=this.context.view,n=(0,tOt.U2)(e,["interactions","drill-down","cfg","transformData"],(function(t){return t})),r=n((0,QCt.pi)({data:t.data},t[Rqt]));e.changeData(r);for(var i=[],o=t;o;){var a=o.data;i.unshift({id:"".concat(a.name,"_").concat(o.height,"_").concat(o.depth),name:a.name,children:n((0,QCt.pi)({data:a},t[Rqt]))}),o=o.parent}this.historyCache=(this.historyCache||[]).slice(0,-1).concat(i)},e.prototype.backTo=function(t){if(t&&!(t.length<=0)){var e=this.context.view,n=(0,tOt.Z$)(t).children;e.changeData(n),t.length>1?(this.historyCache=t,this.drawBreadCrumb()):(this.historyCache=[],this.hideCrumbGroup())}},e.prototype.getButtonCfg=function(){var t=this.context.view,e=(0,tOt.U2)(t,["interactions","drill-down","cfg","drillDownConfig"]);return TUt(this.breadCrumbCfg,null==e?void 0:e.breadCrumb,this.cfg)},e.prototype.drawBreadCrumb=function(){this.drawBreadCrumbGroup(),this.resetPosition(),this.breadCrumbGroup.show()},e.prototype.drawBreadCrumbGroup=function(){var t=this,e=this.getButtonCfg(),n=this.historyCache;this.breadCrumbGroup?this.breadCrumbGroup.clear():this.breadCrumbGroup=this.context.view.foregroundGroup.addGroup({name:jqt});var r=0;n.forEach((function(i,o){var a=t.breadCrumbGroup.addShape({type:"text",id:i.id,name:"".concat(jqt,"_").concat(i.name,"_text"),attrs:(0,QCt.pi)((0,QCt.pi)({text:0!==o||(0,tOt.UM)(e.rootText)?i.name:e.rootText},e.textStyle),{x:r,y:0})}),c=a.getBBox();if(r+=c.width+4,a.on("click",(function(e){var r,i=e.target.get("id");if(i!==(null===(r=(0,tOt.Z$)(n))||void 0===r?void 0:r.id)){var o=n.slice(0,n.findIndex((function(t){return t.id===i}))+1);t.backTo(o)}})),a.on("mouseenter",(function(t){var r;t.target.get("id")!==(null===(r=(0,tOt.Z$)(n))||void 0===r?void 0:r.id)?a.attr(e.activeTextStyle):a.attr({cursor:"default"})})),a.on("mouseleave",(function(){a.attr(e.textStyle)})),o0&&n*n>r*r+i*i}function Hqt(t,e){for(var n=0;n(a*=a)?(r=(u+a-i)/(2*u),o=Math.sqrt(Math.max(0,a/u-r*r)),n.x=t.x-r*c-o*l,n.y=t.y-r*l+o*c):(r=(u+i-a)/(2*u),o=Math.sqrt(Math.max(0,i/u-r*r)),n.x=e.x+r*c-o*l,n.y=e.y+r*l+o*c)):(n.x=e.x+n.r,n.y=e.y)}function qqt(t,e){var n=t.r+e.r-1e-6,r=e.x-t.x,i=e.y-t.y;return n>0&&n*n>r*r+i*i}function Yqt(t){var e=t._,n=t.next._,r=e.r+n.r,i=(e.x*n.r+n.x*e.r)/r,o=(e.y*n.r+n.y*e.r)/r;return i*i+o*o}function $qt(t){this._=t,this.next=null,this.previous=null}function Kqt(t){if(!(i=(t=function(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}(t)).length))return 0;var e,n,r,i,o,a,c,l,u,s,f;if((e=t[0]).x=0,e.y=0,!(i>1))return e.r;if(n=t[1],e.x=-n.r,n.x=e.r,n.y=0,!(i>2))return e.r+n.r;Xqt(n,e,r=t[2]),e=new $qt(e),n=new $qt(n),r=new $qt(r),e.next=r.previous=n,n.next=e.previous=r,r.next=n.previous=e;t:for(c=3;c=0;)e+=n[r].value;else e=1;t.value=e}function lYt(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return uYt(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return uYt(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function uYt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function fYt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=0;--o)l.push(r=i[o]=new bYt(i[o])),r.parent=n,r.depth=n.depth+1;return c.eachBefore(yYt)}function vYt(t){return t.children}function gYt(t){return Array.isArray(t)?t[1]:null}function mYt(t){void 0!==t.data.value&&(t.value=t.data.value),t.data=t.data.data}function yYt(t){var e=0;do{t.height=e}while((t=t.parent)&&t.height<++e)}function bYt(t){this.data=t,this.depth=this.height=0,this.parent=null}bYt.prototype=pYt.prototype=(0,V.Z)({constructor:bYt,count:function(){return this.eachAfter(cYt)},each:function(t,e){var n,r=-1,i=lYt(this);try{for(i.s();!(n=i.n()).done;){var o=n.value;t.call(e,o,++r,this)}}catch(a){i.e(a)}finally{i.f()}return this},eachAfter:function(t,e){for(var n,r,i,o=this,a=[o],c=[],l=-1;o=a.pop();)if(c.push(o),n=o.children)for(r=0,i=n.length;r=0;--r)o.push(n[r]);return this},find:function(t,e){var n,r=-1,i=sYt(this);try{for(i.s();!(n=i.n()).done;){var o=n.value;if(t.call(e,o,++r,this))return o}}catch(a){i.e(a)}finally{i.f()}},sum:function(t){return this.eachAfter((function(e){for(var n=+t(e.data)||0,r=e.children,i=r&&r.length;--i>=0;)n+=r[i].value;e.value=n}))},sort:function(t){return this.eachBefore((function(e){e.children&&e.children.sort(t)}))},path:function(t){for(var e=this,n=function(t,e){if(t===e)return t;var n=t.ancestors(),r=e.ancestors(),i=null;t=n.pop(),e=r.pop();for(;t===e;)i=t,t=n.pop(),e=r.pop();return i}(e,t),r=[e];e!==n;)e=e.parent,r.push(e);for(var i=r.length;t!==n;)r.splice(i,0,t),t=t.parent;return r},ancestors:function(){for(var t=this,e=[t];t=t.parent;)e.push(t);return e},descendants:function(){return Array.from(this)},leaves:function(){var t=[];return this.eachBefore((function(e){e.children||t.push(e)})),t},links:function(){var t=this,e=[];return t.each((function(n){n!==t&&e.push({source:n.parent,target:n})})),e},copy:function(){return pYt(this).eachBefore(mYt)}},Symbol.iterator,dYt);var xYt="nodeIndex",wYt="childNodeCount",SYt="nodeAncestor",kYt="Invalid field: it must be a string!";function CYt(t,e){var n=t.field,r=t.fields;if((0,tOt.HD)(n))return n;if((0,tOt.kJ)(n))return console.warn(kYt),n[0];if(console.warn("".concat(kYt," will try to get fields instead.")),(0,tOt.HD)(r))return r;if((0,tOt.kJ)(r)&&r.length)return r[0];if(e)return e;throw new TypeError(kYt)}function OYt(t){var e,n,r=[];t&&t.each?t.each((function(t){var i,o;t.parent!==e?(e=t.parent,n=0):n+=1;var a=(0,tOt.hX)(((null===(i=t.ancestors)||void 0===i?void 0:i.call(t))||[]).map((function(t){return r.find((function(e){return e.name===t.name}))||t})),(function(e){var n=e.depth;return n>0&&n1;)r="".concat(null===(e=a.parent.data)||void 0===e?void 0:e.name," / ").concat(r),a=a.parent;if(o&&t.depth>2)return null;var l=TUt({},t.data,(0,QCt.pi)((0,QCt.pi)((0,QCt.pi)({},SUt(t.data,i)),{path:r}),t));l.ext=n,l[Rqt]={hierarchyConfig:n,rawFields:i,enableDrillDown:o},c.push(l)})),c}function AYt(t,e,n){var r=UUt([t,e]),i=r[0],o=r[1],a=r[2],c=r[3],l=n.width-(c+o),u=n.height-(i+a),s=Math.min(l,u),f=(l-s)/2,h=(u-s)/2;return{finalPadding:[i+h,o+f,a+h,c+f],finalSize:s<0?0:s}}function PYt(t){var e=t.chart,n=Math.min(e.viewBBox.width,e.viewBBox.height);return TUt({options:{size:function(t){return t.r*n}}},t)}function _Yt(t){var e=t.options,n=t.chart,r=n.viewBBox,i=e.padding,o=e.appendPadding,a=e.drilldown,c=o;(null==a?void 0:a.enabled)&&(c=UUt([zUt(n.appendPadding,(0,tOt.U2)(a,["breadCrumb","position"])),o]));var l=AYt(i,c,r).finalPadding;return n.padding=l,n.appendPadding=0,t}function DYt(t){var e=t.chart,n=t.options,r=e.padding,i=e.appendPadding,o=n.color,a=n.colorField,c=n.pointStyle,l=n.hierarchyConfig,u=n.sizeField,s=n.rawFields,f=void 0===s?[]:s,h=n.drilldown,d=MYt({data:n.data,hierarchyConfig:l,enableDrillDown:null==h?void 0:h.enabled,rawFields:f});e.data(d);var p=AYt(r,i,e.viewBBox).finalSize,v=function(t){return t.r*p};return u&&(v=function(t){return t[u]*p}),NHt(TUt({},t,{options:{xField:"x",yField:"y",seriesField:a,sizeField:u,rawFields:(0,QCt.ev)((0,QCt.ev)([],Zqt,!0),f,!0),point:{color:o,style:c,shape:"circle",size:v}}})),t}function TYt(t){return FUt(kHt({},{x:{min:0,max:1,minLimit:0,maxLimit:1,nice:!0},y:{min:0,max:1,minLimit:0,maxLimit:1,nice:!0}}))(t)}function ZYt(t){var e=t.chart,n=t.options.tooltip;if(!1===n)e.tooltip(!1);else{var r=n;(0,tOt.U2)(n,"fields")||(r=TUt({},{customItems:function(t){return t.map((function(t){var n=(0,tOt.U2)(e.getOptions(),"scales"),r=(0,tOt.U2)(n,["name","formatter"],(function(t){return t})),i=(0,tOt.U2)(n,["value","formatter"],(function(t){return t}));return(0,QCt.pi)((0,QCt.pi)({},t),{name:r(t.data.name),value:i(t.data.value)})}))}},r)),e.tooltip(r)}return t}function FYt(t){return t.chart.axis(!1),t}function jYt(t){var e=t.drilldown,n=t.interactions,r=void 0===n?[]:n;return(null==e?void 0:e.enabled)?TUt({},t,{interactions:(0,QCt.ev)((0,QCt.ev)([],r,!0),[{type:"drill-down",cfg:{drillDownConfig:e,transformData:MYt,enableDrillDown:!0}}],!1)}):t}function IYt(t){return mHt({chart:t.chart,options:jYt(t.options)}),t}function RYt(t){return FUt(pHt("pointStyle"),PYt,_Yt,bHt,TYt,DYt,FYt,vHt,ZYt,IYt,yHt,CHt())(t)}function LYt(t){var e=(0,tOt.U2)(t,["event","data","data"],{});return(0,tOt.kJ)(e.children)&&e.children.length>0}function NYt(t){var e=t.view.getCoordinate(),n=e.innerRadius;if(n){var r=t.event,i=r.x,o=r.y,a=e.center,c=a.x,l=a.y,u=e.getRadius()*n;return Math.sqrt(Math.pow(c-i,2)+Math.pow(l-o,2))-1)||function(t,e,n){var r=Math.min(e,n),i=Math.max(e,n);return t>=r&&t<=i}(e,s,f)})),t.getRootView().render(!0)}};function t$t(t){var e,n=t.options,r=n.geometryOptions,i=void 0===r?[]:r,o=n.xField,a=n.yField,c=(0,tOt.yW)(i,(function(t){var e=t.geometry;return e===zYt.Line||void 0===e}));return TUt({},{options:{geometryOptions:[],meta:(e={},e[o]={type:"cat",sync:!0,range:c?[0,1]:void 0},e),tooltip:{showMarkers:c,showCrosshairs:c,shared:!0,crosshairs:{type:"x"}},interactions:c?[{type:"legend-visible-filter"}]:[{type:"legend-visible-filter"},{type:"active-region"}],legend:{position:"top-left"}}},t,{options:{yAxis:$Yt(a,n.yAxis),geometryOptions:[YYt(0,a[0],i[0]),YYt(0,a[1],i[1])],annotations:$Yt(a,n.annotations)}})}function e$t(t){var e,n,r=t.chart,i=t.options.geometryOptions,o={line:0,column:1};return[{type:null===(e=i[0])||void 0===e?void 0:e.geometry,id:UYt},{type:null===(n=i[1])||void 0===n?void 0:n.geometry,id:HYt}].sort((function(t,e){return-o[t.type]+o[e.type]})).forEach((function(t){return r.createView({id:t.id})})),t}function n$t(t){var e=t.chart,n=t.options,r=n.xField,i=n.yField,o=n.geometryOptions,a=n.data,c=n.tooltip;return[(0,QCt.pi)((0,QCt.pi)({},o[0]),{id:UYt,data:a[0],yField:i[0]}),(0,QCt.pi)((0,QCt.pi)({},o[1]),{id:HYt,data:a[1],yField:i[1]})].forEach((function(t){var n=t.id,i=t.data,o=t.yField,a=qYt(t)&&t.isPercent,l=a?GHt(i,o,r,o):i,u=KUt(e,n).data(l),s=a?(0,QCt.pi)({formatter:function(e){return{name:e[t.seriesField]||o,value:(100*Number(e[o])).toFixed(2)+"%"}}},c):c;!function(t){var e=t.options,n=t.chart,r=e.geometryOption,i=r.isStack,o=r.color,a=r.seriesField,c=r.groupField,l=r.isGroup,u=["xField","yField"];if(XYt(r)){LHt(TUt({},t,{options:(0,QCt.pi)((0,QCt.pi)((0,QCt.pi)({},SUt(e,u)),r),{line:{color:r.color,style:r.lineStyle}})})),NHt(TUt({},t,{options:(0,QCt.pi)((0,QCt.pi)((0,QCt.pi)({},SUt(e,u)),r),{point:r.point&&(0,QCt.pi)({color:o,shape:"circle"},r.point)})}));var s=[];l&&s.push({type:"dodge",dodgeBy:c||a,customOffset:0}),i&&s.push({type:"stack"}),s.length&&(0,tOt.S6)(n.geometries,(function(t){t.adjust(s)}))}qYt(r)&&MWt(TUt({},t,{options:(0,QCt.pi)((0,QCt.pi)((0,QCt.pi)({},SUt(e,u)),r),{widthRatio:r.columnWidthRatio,interval:(0,QCt.pi)((0,QCt.pi)({},SUt(r,["color"])),{style:r.columnStyle})})}))}({chart:u,options:{xField:r,yField:o,tooltip:s,geometryOption:t}})})),t}function r$t(t){var e,n=t.chart,r=t.options.geometryOptions,i=(null===(e=n.getTheme())||void 0===e?void 0:e.colors10)||[],o=0;return n.once("beforepaint",(function(){(0,tOt.S6)(r,(function(t,e){var r=KUt(n,0===e?UYt:HYt);if(!t.color){var a=r.getGroupScales(),c=(0,tOt.U2)(a,[0,"values","length"],1),l=i.slice(o,o+c).concat(0===e?[]:i);r.geometries.forEach((function(e){t.seriesField?e.color(t.seriesField,l):e.color(l[0])})),o+=c}})),n.render(!0)})),t}function i$t(t){var e,n,r=t.chart,i=t.options,o=i.xAxis,a=i.yAxis,c=i.xField,l=i.yField;return kHt(((e={})[c]=o,e[l[0]]=a[0],e))(TUt({},t,{chart:KUt(r,UYt)})),kHt(((n={})[c]=o,n[l[1]]=a[1],n))(TUt({},t,{chart:KUt(r,HYt)})),t}function o$t(t){var e=t.chart,n=t.options,r=KUt(e,UYt),i=KUt(e,HYt),o=n.xField,a=n.yField,c=n.xAxis,l=n.yAxis;return e.axis(o,!1),e.axis(a[0],!1),e.axis(a[1],!1),r.axis(o,c),r.axis(a[0],KYt(l[0],BYt.Left)),i.axis(o,!1),i.axis(a[1],KYt(l[1],BYt.Right)),t}function a$t(t){var e=t.chart,n=t.options.tooltip,r=KUt(e,UYt),i=KUt(e,HYt);return e.tooltip(n),r.tooltip({shared:!0}),i.tooltip({shared:!0}),t}function c$t(t){var e=t.chart;return mHt(TUt({},t,{chart:KUt(e,UYt)})),mHt(TUt({},t,{chart:KUt(e,HYt)})),t}function l$t(t){var e=t.chart,n=t.options.annotations,r=(0,tOt.U2)(n,[0]),i=(0,tOt.U2)(n,[1]);return CHt(r)(TUt({},t,{chart:KUt(e,UYt),options:{annotations:r}})),CHt(i)(TUt({},t,{chart:KUt(e,HYt),options:{annotations:i}})),t}function u$t(t){var e=t.chart;return bHt(TUt({},t,{chart:KUt(e,UYt)})),bHt(TUt({},t,{chart:KUt(e,HYt)})),bHt(t),t}function s$t(t){var e=t.chart;return yHt(TUt({},t,{chart:KUt(e,UYt)})),yHt(TUt({},t,{chart:KUt(e,HYt)})),t}function f$t(t){var e=t.chart,n=t.options.yAxis;return OHt(TUt({},t,{chart:KUt(e,UYt),options:{yAxis:n[0]}})),OHt(TUt({},t,{chart:KUt(e,HYt),options:{yAxis:n[1]}})),t}function h$t(t){var e=t.chart,n=t.options,r=n.legend,i=n.geometryOptions,o=n.yField,a=n.data,c=KUt(e,UYt),l=KUt(e,HYt);if(!1===r)e.legend(!1);else if((0,tOt.Kn)(r)&&!0===r.custom)e.legend(r);else{var u=(0,tOt.U2)(i,[0,"legend"],r),s=(0,tOt.U2)(i,[1,"legend"],r);e.once("beforepaint",(function(){var t=a[0].length?JYt({view:c,geometryOption:i[0],yField:o[0],legend:u}):[],n=a[1].length?JYt({view:l,geometryOption:i[1],yField:o[1],legend:s}):[];e.legend(TUt({},r,{custom:!0,items:t.concat(n)}))})),i[0].seriesField&&c.legend(i[0].seriesField,u),i[1].seriesField&&l.legend(i[1].seriesField,s),e.on("legend-item:click",(function(t){var n=(0,tOt.U2)(t,"gEvent.delegateObject",{});if(n&&n.item){var r=n.item,i=r.value,a=r.isGeometry,c=r.viewId;if(a){if((0,tOt.cx)(o,(function(t){return t===i}))>-1){var l=(0,tOt.U2)(KUt(e,c),"geometries");(0,tOt.S6)(l,(function(t){t.changeVisible(!n.item.unchecked)}))}}else{var u=(0,tOt.U2)(e.getController("legend"),"option.items",[]);(0,tOt.S6)(e.views,(function(t){var n=t.getGroupScales();(0,tOt.S6)(n,(function(e){e.values&&e.values.indexOf(i)>-1&&t.filter(e.field,(function(t){return!(0,tOt.sE)(u,(function(e){return e.value===t})).unchecked}))})),e.render(!0)}))}}}))}return t}function d$t(t){var e=t.chart,n=t.options.slider,r=KUt(e,UYt),i=KUt(e,HYt);return n&&(r.option("slider",n),r.on("slider:valuechanged",(function(t){var e=t.event,n=e.value,r=e.originValue;(0,tOt.Xy)(n,r)||QYt(i,n)})),e.once("afterpaint",(function(){if(!(0,tOt.jn)(n)){var t=n.start,e=n.end;(t||e)&&QYt(i,[t,e])}}))),t}function p$t(t){return FUt(t$t,e$t,u$t,n$t,i$t,o$t,f$t,a$t,c$t,l$t,s$t,r$t,h$t,d$t)(t)}!function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="dual-axes",e}(0,QCt.ZT)(e,t),e.prototype.getDefaultOptions=function(){return TUt({},t.prototype.getDefaultOptions.call(this),{yAxis:[],syncViewPadding:!0})},e.prototype.getSchemaAdaptor=function(){return p$t}}(VHt);function v$t(t){var e=t.chart,n=t.options,r=n.type,i=n.data,o=n.fields,a=n.eachView,c=(0,tOt.CE)(n,["type","data","fields","eachView","axes","meta","tooltip","coordinate","theme","legend","interactions","annotations"]);return e.data(i),e.facet(r,(0,QCt.pi)((0,QCt.pi)({},c),{fields:o,eachView:function(t,e){var n=a(t,e);if(n.geometries)!function(t,e){var n=e.data,r=e.coordinate,i=e.interactions,o=e.annotations,a=e.animation,c=e.tooltip,l=e.axes,u=e.meta,s=e.geometries;n&&t.data(n);var f={};l&&(0,tOt.S6)(l,(function(t,e){f[e]=SUt(t,yUt)})),f=TUt({},u,f),t.scale(f),r&&t.coordinate(r),!1===l?t.axis(!1):(0,tOt.S6)(l,(function(e,n){t.axis(n,e)})),(0,tOt.S6)(s,(function(e){var n=FHt({chart:t,options:e}).ext,r=e.adjust;r&&n.geometry.adjust(r)})),(0,tOt.S6)(i,(function(e){!1===e.enable?t.removeInteraction(e.type):t.interaction(e.type,e.cfg)})),(0,tOt.S6)(o,(function(e){t.annotation()[e.type]((0,QCt.pi)({},e))})),tHt(t,a),c?(t.interaction("tooltip"),t.tooltip(c)):!1===c&&t.removeInteraction("tooltip")}(t,n);else{var r=n,i=r.options;i.tooltip&&t.interaction("tooltip"),EXt(r.type,t,i)}}})),t}function g$t(t){var e=t.chart,n=t.options,r=n.axes,i=n.meta,o=n.tooltip,a=n.coordinate,c=n.theme,l=n.legend,u=n.interactions,s=n.annotations,f={};return r&&(0,tOt.S6)(r,(function(t,e){f[e]=SUt(t,yUt)})),f=TUt({},i,f),e.scale(f),e.coordinate(a),r?(0,tOt.S6)(r,(function(t,n){e.axis(n,t)})):e.axis(!1),o?(e.interaction("tooltip"),e.tooltip(o)):!1===o&&e.removeInteraction("tooltip"),e.legend(l),c&&e.theme(c),(0,tOt.S6)(u,(function(t){!1===t.enable?e.removeInteraction(t.type):e.interaction(t.type,t.cfg)})),(0,tOt.S6)(s,(function(t){e.annotation()[t.type]((0,QCt.pi)({},t))})),t}function m$t(t){return FUt(bHt,v$t,g$t)(t)}var y$t={title:{style:{fontSize:12,fill:"rgba(0,0,0,0.65)"}},rowTitle:{style:{fontSize:12,fill:"rgba(0,0,0,0.65)"}},columnTitle:{style:{fontSize:12,fill:"rgba(0,0,0,0.65)"}}};!function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="area",e}(0,QCt.ZT)(e,t),e.getDefaultOptions=function(){return y$t},e.prototype.getDefaultOptions=function(){return e.getDefaultOptions()},e.prototype.getSchemaAdaptor=function(){return m$t}}(VHt);function b$t(t){var e=t.chart,n=t.options,r=n.data,i=n.type,o=n.xField,a=n.yField,c=n.colorField,l=n.sizeField,u=n.sizeRatio,s=n.shape,f=n.color,h=n.tooltip,d=n.heatmapStyle,p=n.meta;e.data(r);var v="polygon";"density"===i&&(v="heatmap");var g=DHt(h,[o,a,c]),m=g.fields,y=g.formatter,b=1;return(u||0===u)&&(s||l?u<0||u>1?console.warn("sizeRatio is not in effect: It must be a number in [0,1]"):b=u:console.warn("sizeRatio is not in effect: Must define shape or sizeField first")),FHt(TUt({},t,{options:{type:v,colorField:c,tooltipFields:m,shapeField:l||"",label:void 0,mapping:{tooltip:y,shape:s&&(l?function(t){var e=r.map((function(t){return t[l]})),n=(null==p?void 0:p[l])||{},i=n.min,o=n.max;return i=(0,tOt.hj)(i)?i:Math.min.apply(Math,e),o=(0,tOt.hj)(o)?o:Math.max.apply(Math,e),[s,((0,tOt.U2)(t,l)-i)/(o-i),b]}:function(){return[s,1,b]}),color:f||c&&e.getTheme().sequenceColors.join("-"),style:d}}})),t}function x$t(t){var e,n=t.options,r=n.xAxis,i=n.yAxis,o=n.xField,a=n.yField;return FUt(kHt(((e={})[o]=r,e[a]=i,e)))(t)}function w$t(t){var e=t.chart,n=t.options,r=n.xAxis,i=n.yAxis,o=n.xField,a=n.yField;return!1===r?e.axis(o,!1):e.axis(o,r),!1===i?e.axis(a,!1):e.axis(a,i),t}function S$t(t){var e=t.chart,n=t.options,r=n.legend,i=n.colorField,o=n.sizeField,a=n.sizeLegend,c=!1!==r;return i&&e.legend(i,!!c&&r),o&&e.legend(o,void 0===a?r:a),c||a||e.legend(!1),t}function k$t(t){var e=t.chart,n=t.options,r=n.label,i=n.colorField,o=jUt(e,"density"===n.type?"heatmap":"polygon");if(r){if(i){var a=r.callback,c=(0,QCt._T)(r,["callback"]);o.label({fields:[i],callback:a,cfg:LUt(c)})}}else o.label(!1);return t}function C$t(t){var e,n,r=t.chart,i=t.options,o=i.coordinate,a=i.reflect,c=TUt({actions:[]},null!=o?o:{type:"rect"});return a&&(null===(n=null===(e=c.actions)||void 0===e?void 0:e.push)||void 0===n||n.call(e,["reflect",a])),r.coordinate(c),t}function O$t(t){return FUt(bHt,pHt("heatmapStyle"),x$t,C$t,b$t,w$t,S$t,gHt,k$t,CHt(),mHt,yHt,xHt)(t)}var E$t=TUt({},VHt.getDefaultOptions(),{type:"polygon",legend:!1,coordinate:{type:"rect"},xAxis:{tickLine:null,line:null,grid:{alignTick:!1,line:{style:{lineWidth:1,lineDash:null,stroke:"#f0f0f0"}}}},yAxis:{grid:{alignTick:!1,line:{style:{lineWidth:1,lineDash:null,stroke:"#f0f0f0"}}}}});JZt("polygon","circle",{draw:function(t,e){var n,r,i=t.x,o=t.y,a=this.parsePoints(t.points),c=Math.abs(a[2].x-a[1].x),l=Math.abs(a[1].y-a[0].y),u=Math.min(c,l)/2,s=Number(t.shape[1]),f=Number(t.shape[2]),h=u*Math.sqrt(f)*Math.sqrt(s),d=(null===(n=t.style)||void 0===n?void 0:n.fill)||t.color||(null===(r=t.defaultStyle)||void 0===r?void 0:r.fill);return e.addShape("circle",{attrs:(0,QCt.pi)((0,QCt.pi)((0,QCt.pi)({x:i,y:o,r:h},t.defaultStyle),t.style),{fill:d})})}}),JZt("polygon","square",{draw:function(t,e){var n,r,i=t.x,o=t.y,a=this.parsePoints(t.points),c=Math.abs(a[2].x-a[1].x),l=Math.abs(a[1].y-a[0].y),u=Math.min(c,l),s=Number(t.shape[1]),f=Number(t.shape[2]),h=u*Math.sqrt(f)*Math.sqrt(s),d=(null===(n=t.style)||void 0===n?void 0:n.fill)||t.color||(null===(r=t.defaultStyle)||void 0===r?void 0:r.fill);return e.addShape("rect",{attrs:(0,QCt.pi)((0,QCt.pi)((0,QCt.pi)({x:i-h/2,y:o-h/2,width:h,height:h},t.defaultStyle),t.style),{fill:d})})}});!function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="heatmap",e}(0,QCt.ZT)(e,t),e.getDefaultOptions=function(){return E$t},e.prototype.getSchemaAdaptor=function(){return O$t},e.prototype.getDefaultOptions=function(){return e.getDefaultOptions()}}(VHt);var M$t="liquid";function A$t(t){return[{percent:t,type:M$t}]}function P$t(t){var e=t.chart,n=t.options,r=n.percent,i=n.liquidStyle,o=n.radius,a=n.outline,c=n.wave,l=n.shape,u=n.shapeStyle,s=n.animation;e.scale({percent:{min:0,max:1}}),e.data(A$t(r));var f=n.color||e.getTheme().defaultColor,h=RHt(TUt({},t,{options:{xField:"type",yField:"percent",widthRatio:o,interval:{color:f,style:i,shape:"liquid-fill-gauge"}}})).ext.geometry,d={percent:r,radius:o,outline:a,wave:c,shape:l,shapeStyle:u,background:e.getTheme().background,animation:s};return h.customInfo(d),e.legend(!1),e.axis(!1),e.tooltip(!1),t}function _$t(t,e){var n=t.chart,r=t.options,i=r.statistic,o=r.percent,a=r.meta;n.getController("annotation").clear(!0);var c=(0,tOt.U2)(a,["percent","formatter"])||function(t){return"".concat((100*t).toFixed(2),"%")},l=i.content;return l&&(l=TUt({},l,{content:(0,tOt.UM)(l.content)?c(o):l.content})),qUt(n,{statistic:(0,QCt.pi)((0,QCt.pi)({},i),{content:l}),plotType:"liquid"},{percent:o}),e&&n.render(!0),t}function D$t(t){return FUt(bHt,pHt("liquidStyle"),P$t,_$t,kHt({}),yHt,mHt)(t)}var T$t={radius:.9,statistic:{title:!1,content:{style:{opacity:.75,fontSize:"30px",lineHeight:"30px",textAlign:"center"}}},outline:{border:2,distance:0},wave:{count:3,length:192},shape:"circle"};function Z$t(t,e,n){return t+(e-t)*n}function F$t(t,e,n,r){return 0===e?[[t+.5*n/Math.PI/2,r/2],[t+.5*n/Math.PI,r],[t+n/4,r]]:1===e?[[t+.5*n/Math.PI/2*(Math.PI-2),r],[t+.5*n/Math.PI/2*(Math.PI-1),r/2],[t+n/4,0]]:2===e?[[t+.5*n/Math.PI/2,-r/2],[t+.5*n/Math.PI,-r],[t+n/4,-r]]:[[t+.5*n/Math.PI/2*(Math.PI-2),-r],[t+.5*n/Math.PI/2*(Math.PI-1),-r/2],[t+n/4,0]]}function j$t(t,e,n,r,i,o,a){for(var c=4*Math.ceil(2*t/n*4),l=[],u=r;u<2*-Math.PI;)u+=2*Math.PI;for(;u>0;)u-=2*Math.PI;var s=o-t+(u=u/Math.PI/2*n)-2*t;l.push(["M",s,e]);for(var f=0,h=0;h0){var O=e.addGroup({name:"waves"}),E=O.setClip({type:"path",attrs:{path:C}});!function(t,e,n,r,i,o,a,c,l,u){for(var s=i.fill,f=i.opacity,h=a.getBBox(),d=h.maxX-h.minX,p=h.maxY-h.minY,v=0;v0){var a=this.view.geometries[0],c=a.dataArray,l=o[0].name,u=[];return c.forEach((function(t){t.forEach((function(t){var e=IFt.getTooltipItems(t,a)[0];if(!r&&e&&e.name===l){var n=(0,tOt.UM)(i)?l:i;u.push((0,QCt.pi)((0,QCt.pi)({},e),{name:e.title,title:n}))}else if(r&&e){n=(0,tOt.UM)(i)?e.name||l:i;u.push((0,QCt.pi)((0,QCt.pi)({},e),{name:e.title,title:n}))}}))})),u}return[]},e}(TZt);gZt("radar-tooltip",H$t);var W$t=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.init=function(){this.context.view.removeInteraction("tooltip")},e.prototype.show=function(){var t=this.context.event;this.getTooltipController().showTooltip({x:t.x,y:t.y})},e.prototype.hide=function(){this.getTooltipController().hideTooltip()},e.prototype.getTooltipController=function(){return this.context.view.getController("radar-tooltip")},e}(BDt);VDt("radar-tooltip",W$t),zTt("radar-tooltip",{start:[{trigger:"plot:mousemove",action:"radar-tooltip:show"}],end:[{trigger:"plot:mouseleave",action:"radar-tooltip:hide"}]});var V$t=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="radar",e}return(0,QCt.ZT)(e,t),e.prototype.changeData=function(t){this.updateOption({data:t}),this.chart.changeData(t)},e.prototype.getDefaultOptions=function(){return TUt({},t.prototype.getDefaultOptions.call(this),{xAxis:{label:{offset:15},grid:{line:{type:"line"}}},yAxis:{grid:{line:{type:"circle"}}},legend:{position:"top"},tooltip:{shared:!0,showCrosshairs:!0,showMarkers:!0,crosshairs:{type:"xy",line:{style:{stroke:"#565656",lineDash:[4]}},follow:!0}}})},e.prototype.getSchemaAdaptor=function(){return U$t},e}(VHt);function G$t(t,e,n){var r=n.map((function(t){return t[e]})).filter((function(t){return void 0!==t})),i=r.length>0?Math.max.apply(Math,r):0,o=Math.abs(t)%360;return o?360*i/o:i}function X$t(t){var e=t.chart,n=t.options,r=n.barStyle,i=n.color,o=n.tooltip,a=n.colorField,c=n.type,l=n.xField,u=n.yField,s=n.data,f=n.shape,h=OUt(s,u);return e.data(h),RHt(TUt({},t,{options:{tooltip:o,seriesField:a,interval:{style:r,color:i,shape:f||("line"===c?"line":"intervel")},minColumnWidth:n.minBarWidth,maxColumnWidth:n.maxBarWidth,columnBackground:n.barBackground}})),"line"===c&&NHt({chart:e,options:{xField:l,yField:u,seriesField:a,point:{shape:"circle",color:i}}}),t}function q$t(t){var e,n=t.options,r=n.yField,i=n.xField,o=n.data,a=n.isStack,c=n.isGroup,l=n.colorField,u=n.maxAngle,s=a&&!c&&l?function(t,e,n){var r=[];return t.forEach((function(t){var i=r.find((function(n){return n[e]===t[e]}));i?i[n]+=t[n]||null:r.push((0,QCt.pi)({},t))})),r}(o,i,r):o,f=OUt(s,r);return FUt(kHt(((e={})[r]={min:0,max:G$t(u,r,f)},e)))(t)}function Y$t(t){var e=t.chart,n=t.options,r=n.radius,i=n.innerRadius,o=n.startAngle,a=n.endAngle;return e.coordinate({type:"polar",cfg:{radius:r,innerRadius:i,startAngle:o,endAngle:a}}).transpose(),t}function $$t(t){var e=t.chart,n=t.options,r=n.xField,i=n.xAxis;return e.axis(r,i),t}function K$t(t){var e=t.chart,n=t.options,r=n.label,i=n.yField,o=jUt(e,"interval");if(r){var a=r.callback,c=(0,QCt._T)(r,["callback"]);o.label({fields:[i],callback:a,cfg:(0,QCt.pi)((0,QCt.pi)({},LUt(c)),{type:"polar"})})}else o.label(!1);return t}function J$t(t){return FUt(pHt("barStyle"),X$t,q$t,$$t,Y$t,mHt,yHt,bHt,gHt,vHt,CHt(),K$t)(t)}var Q$t=TUt({},VHt.getDefaultOptions(),{interactions:[{type:"element-active"}],legend:!1,tooltip:{showMarkers:!1},xAxis:{grid:null,tickLine:null,line:null},maxAngle:240});!function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="radial-bar",e}(0,QCt.ZT)(e,t),e.getDefaultOptions=function(){return Q$t},e.prototype.changeData=function(t){this.updateOption({data:t}),q$t({chart:this.chart,options:this.options}),this.chart.changeData(t)},e.prototype.getDefaultOptions=function(){return e.getDefaultOptions()},e.prototype.getSchemaAdaptor=function(){return J$t}}(VHt);function tKt(t){var e=t.chart,n=t.options,r=n.data,i=n.sectorStyle,o=n.shape,a=n.color;return e.data(r),FUt(RHt)(TUt({},t,{options:{marginRatio:1,interval:{style:i,color:a,shape:o}}})),t}function eKt(t){var e=t.chart,n=t.options,r=n.label,i=n.xField,o=jUt(e,"interval");if(!1===r)o.label(!1);else if((0,tOt.Kn)(r)){var a=r.callback,c=r.fields,l=(0,QCt._T)(r,["callback","fields"]),u=l.offset,s=l.layout;(void 0===u||u>=0)&&(s=s?(0,tOt.kJ)(s)?s:[s]:[],l.layout=(0,tOt.hX)(s,(function(t){return"limit-in-shape"!==t.type})),l.layout.length||delete l.layout),o.label({fields:c||[i],callback:a,cfg:LUt(l)})}else wUt(mUt.WARN,null===r,"the label option must be an Object."),o.label({fields:[i]});return t}function nKt(t){var e=t.chart,n=t.options,r=n.legend,i=n.seriesField;return!1===r?e.legend(!1):i&&e.legend(i,r),t}function rKt(t){var e=t.chart,n=t.options,r=n.radius,i=n.innerRadius,o=n.startAngle,a=n.endAngle;return e.coordinate({type:"polar",cfg:{radius:r,innerRadius:i,startAngle:o,endAngle:a}}),t}function iKt(t){var e,n=t.options,r=n.xAxis,i=n.yAxis,o=n.xField,a=n.yField;return FUt(kHt(((e={})[o]=r,e[a]=i,e)))(t)}function oKt(t){var e=t.chart,n=t.options,r=n.xAxis,i=n.yAxis,o=n.xField,a=n.yField;return r?e.axis(o,r):e.axis(o,!1),i?e.axis(a,i):e.axis(a,!1),t}function aKt(t){FUt(pHt("sectorStyle"),tKt,iKt,eKt,rKt,oKt,nKt,gHt,mHt,yHt,bHt,CHt(),xHt)(t)}var cKt=TUt({},VHt.getDefaultOptions(),{xAxis:!1,yAxis:!1,legend:{position:"right",radio:{}},sectorStyle:{stroke:"#fff",lineWidth:1},label:{layout:{type:"limit-in-shape"}},tooltip:{shared:!0,showMarkers:!1},interactions:[{type:"active-region"}]}),lKt=(function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="rose",e}(0,QCt.ZT)(e,t),e.getDefaultOptions=function(){return cKt},e.prototype.changeData=function(t){this.updateOption({data:t}),this.chart.changeData(t)},e.prototype.getDefaultOptions=function(){return e.getDefaultOptions()},e.prototype.getSchemaAdaptor=function(){return aKt}}(VHt),"x"),uKt="y",sKt="name",fKt="nodes",hKt="edges";function dKt(t,e,n){if(!(0,tOt.kJ)(t))return[];var r=[],i=function(t,e,n){var r=[];return t.forEach((function(t){var i=t[e],o=t[n];r.includes(i)||r.push(i),r.includes(o)||r.push(o)})),r}(t,e,n),o=function(t,e,n,r){var i={};return e.forEach((function(t){i[t]={},e.forEach((function(e){i[t][e]=0}))})),t.forEach((function(t){i[t[n]][t[r]]=1})),i}(t,i,e,n),a={};function c(t){a[t]=1,i.forEach((function(e){if(0!=o[t][e])if(1==a[e])r.push("".concat(t,"_").concat(e));else{if(-1==a[e])return;c(e)}})),a[t]=-1}return i.forEach((function(t){a[t]=0})),i.forEach((function(t){-1!=a[t]&&c(t)})),0!==r.length&&console.warn("sankey data contains circle, ".concat(r.length," records removed."),r),t.filter((function(t){return r.findIndex((function(r){return r==="".concat(t[e],"_").concat(t[n])}))<0}))}function pKt(t){return t.target.depth}function vKt(t,e){return t.sourceLinks.length?t.depth:e-1}function gKt(t){return function(){return t}}function mKt(t,e){for(var n=0,r=0;rr)throw new Error("circular link");i=o,o=new Set}if(e)for(var c=Math.max(yKt(n,(function(t){return t.depth}))+1,0),l=void 0,u=0;un)throw new Error("circular link");r=i,i=new Set}}(y),function(e){var r=function(t){for(var e=t.nodes,r=Math.max(yKt(e,(function(t){return t.depth}))+1,0),o=(a-i-l)/(r-1),c=new Array(r).fill(0).map((function(){return[]})),u=0,s=e;u0){var m=(s/f-u.y0)*e;u.y0+=m,u.y1+=m,w(u)}}void 0===n&&a.sort(wKt),a.length&&y(a,r)}}function m(t,e,r){for(var i=t.length-2;i>=0;--i){for(var o=t[i],a=0,c=o;a0){var g=(u/s-l.y0)*e;l.y0+=g,l.y1+=g,w(l)}}void 0===n&&o.sort(wKt),o.length&&y(o,r)}}function y(e,n){var r=e.length>>1,i=e[r];x(e,i.y0-t,r-1,n),b(e,i.y1+t,r+1,n),x(e,c,e.length-1,n),b(e,o,0,n)}function b(e,n,r,i){for(;r1e-6&&(o.y0+=a,o.y1+=a),n=o.y1+t}}function x(e,n,r,i){for(;r>=0;--r){var o=e[r],a=(o.y1-n)*i;a>1e-6&&(o.y0-=a,o.y1-=a),n=o.y0-t}}function w(t){var e=t.sourceLinks,n=t.targetLinks;if(void 0===r){for(var i=0,o=n;i "+t.target,value:t.value}}},nodeWidthRatio:.008,nodePaddingRatio:.01,animation:{appear:{animation:"wave-in"},enter:{animation:"wave-in"}}}},e.prototype.changeData=function(t){this.updateOption({data:t});var e=FKt(this.options,this.chart.width,this.chart.height),n=e.nodes,r=e.edges,i=KUt(this.chart,fKt),o=KUt(this.chart,hKt);i.changeData(n),o.changeData(r)},e.prototype.getSchemaAdaptor=function(){return BKt},e.prototype.getDefaultOptions=function(){return e.getDefaultOptions()}}(VHt);var UKt="ancestor-node",HKt="value",WKt="path",VKt=[WKt,xYt,SYt,wYt,"name","depth","height"],GKt=TUt({},VHt.getDefaultOptions(),{innerRadius:0,radius:.85,hierarchyConfig:{field:"value"},tooltip:{shared:!0,showMarkers:!1,offset:20,showTitle:!1},legend:!1,sunburstStyle:{lineWidth:.5,stroke:"#FFF"},drilldown:{enabled:!0}});function XKt(t){t.x0=Math.round(t.x0),t.y0=Math.round(t.y0),t.x1=Math.round(t.x1),t.y1=Math.round(t.y1)}function qKt(t,e,n,r,i){for(var o,a=t.children,c=-1,l=a.length,u=t.value&&(r-e)/t.value;++c0)throw new Error("cycle");return o}return n.id=function(e){return arguments.length?(t=Qqt(e),n):t},n.parentId=function(t){return arguments.length?(e=Qqt(t),n):e},n}function cJt(t,e){return t.parent===e.parent?1:2}function lJt(t){var e=t.children;return e?e[0]:t.t}function uJt(t){var e=t.children;return e?e[e.length-1]:t.t}function sJt(t,e,n){var r=n/(e.i-t.i);e.c-=r,e.s+=n,t.c+=r,e.z+=n,e.m+=n}function fJt(t,e,n){return t.a.parent===e.parent?t.a:n}function hJt(t,e){this._=t,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=e}function dJt(){var t=cJt,e=1,n=1,r=null;function i(i){var l=function(t){for(var e,n,r,i,o,a=new hJt(t,0),c=[a];e=c.pop();)if(r=e._.children)for(e.children=new Array(o=r.length),i=o-1;i>=0;--i)c.push(n=e.children[i]=new hJt(r[i],i)),n.parent=e;return(a.parent=new hJt(null,0)).children=[a],a}(i);if(l.eachAfter(o),l.parent.m=-l.z,l.eachBefore(a),r)i.eachBefore(c);else{var u=i,s=i,f=i;i.eachBefore((function(t){t.xs.x&&(s=t),t.depth>f.depth&&(f=t)}));var h=u===s?1:t(u,s)/2,d=h-u.x,p=e/(s.x+h+d),v=n/(f.depth||1);i.eachBefore((function(t){t.x=(t.x+d)*p,t.y=t.depth*v}))}return i}function o(e){var n=e.children,r=e.parent.children,i=e.i?r[e.i-1]:null;if(n){!function(t){for(var e,n=0,r=0,i=t.children,o=i.length;--o>=0;)(e=i[o]).z+=n,e.m+=n,n+=e.s+(r+=e.c)}(e);var o=(n[0].z+n[n.length-1].z)/2;i?(e.z=i.z+t(e._,i._),e.m=e.z-o):e.z=o}else i&&(e.z=i.z+t(e._,i._));e.parent.A=function(e,n,r){if(n){for(var i,o=e,a=e,c=n,l=o.parent.children[0],u=o.m,s=a.m,f=c.m,h=l.m;c=uJt(c),o=lJt(o),c&&o;)l=lJt(l),(a=uJt(a)).a=e,(i=c.z+f-o.z-u+t(c._,o._))>0&&(sJt(fJt(c,e,r),e,i),u+=i,s+=i),f+=c.m,u+=o.m,h+=l.m,s+=a.m;c&&!uJt(a)&&(a.t=c,a.m+=f-s),o&&!lJt(l)&&(l.t=o,l.m+=u-h,r=e)}return r}(e,i,e.parent.A||r[0])}function a(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function c(t){t.x*=e,t.y=t.depth*n}return i.separation=function(e){return arguments.length?(t=e,i):t},i.size=function(t){return arguments.length?(r=!1,e=+t[0],n=+t[1],i):r?null:[e,n]},i.nodeSize=function(t){return arguments.length?(r=!0,e=+t[0],n=+t[1],i):r?[e,n]:null},i}function pJt(t,e,n,r,i){for(var o,a=t.children,c=-1,l=a.length,u=t.value&&(i-n)/t.value;++ch&&(h=c),g=s*s*v,(d=Math.max(h/g,g/f))>p){s-=c;break}p=d}m.push(a={value:s,dice:l1?e:1)},n}(vJt);function yJt(){var t=mJt,e=!1,n=1,r=1,i=[0],o=tYt,a=tYt,c=tYt,l=tYt,u=tYt;function s(t){return t.x0=t.y0=0,t.x1=n,t.y1=r,t.eachBefore(f),i=[0],e&&t.eachBefore(XKt),t}function f(e){var n=i[e.depth],r=e.x0+n,s=e.y0+n,f=e.x1-n,h=e.y1-n;f=n-1){var s=c[e];return s.x0=i,s.y0=o,s.x1=a,void(s.y1=l)}var f=u[e],h=r/2+f,d=e+1,p=n-1;for(;d>>1;u[v]l-o){var y=r?(i*m+a*g)/r:a;t(e,d,g,i,o,y,l),t(d,n,m,y,o,a,l)}else{var b=r?(o*m+l*g)/r:l;t(e,d,g,i,o,a,b),t(d,n,m,i,b,a,l)}}(0,l,t.value,e,n,r,i)}function xJt(t,e,n,r,i){(1&t.depth?pJt:qKt)(t,e,n,r,i)}var wJt=function t(e){function n(t,n,r,i,o){if((a=t._squarify)&&a.ratio===e)for(var a,c,l,u,s,f=-1,h=a.length,d=t.value;++f1?e:1)},n}(vJt),SJt={field:"value",tile:"treemapSquarify",size:[1,1],round:!1,ignoreParentValue:!0,padding:0,paddingInner:0,paddingOuter:0,paddingTop:0,paddingRight:0,paddingBottom:0,paddingLeft:0,as:["x","y"],sort:function(t,e){return e.value-t.value},ratio:.5*(1+Math.sqrt(5))};function kJt(t,e){var n,r=(e=(0,tOt.f0)({},SJt,e)).as;if(!(0,tOt.kJ)(r)||2!==r.length)throw new TypeError('Invalid as: it must be an array with 2 strings (e.g. [ "x", "y" ])!');try{n=CYt(e)}catch(F2t){console.warn(F2t)}var i,o,a=(i=e.tile,o=e.ratio,"treemapSquarify"===i?T[i].ratio(o):T[i]),c=function(t){return yJt().tile(a).size(e.size).round(e.round).padding(e.padding).paddingInner(e.paddingInner).paddingOuter(e.paddingOuter).paddingTop(e.paddingTop).paddingRight(e.paddingRight).paddingBottom(e.paddingBottom).paddingLeft(e.paddingLeft)(pYt(t).sum((function(t){return e.ignoreParentValue&&t.children?0:t[n]})).sort(e.sort))}(t),l=r[0],u=r[1];return c.each((function(t){t[l]=[t.x0,t.x1,t.x1,t.x0],t[u]=[t.y1,t.y1,t.y0,t.y0],["x0","x1","y0","y1"].forEach((function(e){-1===r.indexOf(e)&&delete t[e]}))})),OYt(c)}function CJt(t){var e=t.data,n=t.colorField,r=t.rawFields,i=t.hierarchyConfig,o=void 0===i?{}:i,a=o.activeDepth,c={partition:KKt,treemap:kJt},l=t.seriesField,u=t.type||"partition",s=c[u](e,(0,QCt.pi)((0,QCt.pi)({field:l||"value"},(0,tOt.CE)(o,["activeDepth"])),{type:"hierarchy.".concat(u),as:["x","y"]})),f=[];return s.forEach((function(t){var e,i,c,u,s,h;if(0===t.depth)return null;if(a>0&&t.depth>a)return null;for(var d=t.data.name,p=(0,QCt.pi)({},t);p.depth>1;)d="".concat(null===(i=p.parent.data)||void 0===i?void 0:i.name," / ").concat(d),p=p.parent;var v=(0,QCt.pi)((0,QCt.pi)((0,QCt.pi)({},SUt(t.data,(0,QCt.ev)((0,QCt.ev)([],r||[],!0),[o.field],!1))),((e={})[WKt]=d,e[UKt]=p.data.name,e)),t);l&&(v[l]=t.data[l]||(null===(u=null===(c=t.parent)||void 0===c?void 0:c.data)||void 0===u?void 0:u[l])),n&&(v[n]=t.data[n]||(null===(h=null===(s=t.parent)||void 0===s?void 0:s.data)||void 0===h?void 0:h[n])),v.ext=o,v[Rqt]={hierarchyConfig:o,colorField:n,rawFields:r},f.push(v)})),f}function OJt(t){var e,n=t.chart,r=t.options,i=r.color,o=r.colorField,a=void 0===o?UKt:o,c=r.sunburstStyle,l=r.rawFields,u=void 0===l?[]:l,s=r.shape,f=CJt(r);return n.data(f),c&&(e=function(t){return TUt({},{fillOpacity:Math.pow(.85,t.depth)},(0,tOt.mf)(c)?c(t):c)}),BHt(TUt({},t,{options:{xField:"x",yField:"y",seriesField:a,rawFields:(0,tOt.jj)((0,QCt.ev)((0,QCt.ev)([],VKt,!0),u,!0)),polygon:{color:i,style:e,shape:s}}})),t}function EJt(t){return t.chart.axis(!1),t}function MJt(t){var e=t.chart,n=t.options.label,r=jUt(e,"polygon");if(n){var i=n.fields,o=void 0===i?["name"]:i,a=n.callback,c=(0,QCt._T)(n,["fields","callback"]);r.label({fields:o,callback:a,cfg:LUt(c)})}else r.label(!1);return t}function AJt(t){var e=t.chart,n=t.options,r=n.innerRadius,i=n.radius,o=n.reflect,a=e.coordinate({type:"polar",cfg:{innerRadius:r,radius:i}});return o&&a.reflect(o),t}function PJt(t){var e,n=t.options,r=n.hierarchyConfig,i=n.meta;return FUt(kHt({},((e={})[HKt]=(0,tOt.U2)(i,(0,tOt.U2)(r,["field"],"value")),e)))(t)}function _Jt(t){var e=t.chart,n=t.options.tooltip;if(!1===n)e.tooltip(!1);else{var r=n;(0,tOt.U2)(n,"fields")||(r=TUt({},{customItems:function(t){return t.map((function(t){var n=(0,tOt.U2)(e.getOptions(),"scales"),r=(0,tOt.U2)(n,[WKt,"formatter"],(function(t){return t})),i=(0,tOt.U2)(n,[HKt,"formatter"],(function(t){return t}));return(0,QCt.pi)((0,QCt.pi)({},t),{name:r(t.data[WKt]),value:i(t.data.value)})}))}},r)),e.tooltip(r)}return t}function DJt(t){var e=t.drilldown,n=t.interactions,r=void 0===n?[]:n;return(null==e?void 0:e.enabled)?TUt({},t,{interactions:(0,QCt.ev)((0,QCt.ev)([],r,!0),[{type:"drill-down",cfg:{drillDownConfig:e,transformData:CJt}}],!1)}):t}function TJt(t){var e=t.chart,n=t.options,r=n.drilldown;return mHt({chart:e,options:DJt(n)}),(null==r?void 0:r.enabled)&&(e.appendPadding=zUt(e.appendPadding,(0,tOt.U2)(r,["breadCrumb","position"]))),t}function ZJt(t){return FUt(bHt,pHt("sunburstStyle"),OJt,EJt,PJt,vHt,AJt,_Jt,MJt,TJt,yHt,CHt())(t)}!function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="sunburst",e}(0,QCt.ZT)(e,t),e.getDefaultOptions=function(){return GKt},e.prototype.getDefaultOptions=function(){return e.getDefaultOptions()},e.prototype.getSchemaAdaptor=function(){return ZJt},e.SUNBURST_ANCESTOR_FIELD=UKt,e.SUNBURST_PATH_FIELD=WKt,e.NODE_ANCESTORS_FIELD=SYt}(VHt);function FJt(t,e){if((0,tOt.kJ)(t))return t.find((function(t){return t.type===e}))}function jJt(t,e){var n=FJt(t,e);return n&&!1!==n.enable}function IJt(t){var e=t.interactions,n=t.drilldown;return(0,tOt.U2)(n,"enabled")||jJt(e,"treemap-drill-down")}function RJt(t){var e=t.data,n=t.colorField,r=t.enableDrillDown,i=t.hierarchyConfig,o=kJt(e,(0,QCt.pi)((0,QCt.pi)({},i),{type:"hierarchy.treemap",field:"value",as:["x","y"]})),a=[];return o.forEach((function(t){if(0===t.depth)return null;if(r&&1!==t.depth)return null;if(!r&&t.children)return null;var o=t.ancestors().map((function(t){return{data:t.data,height:t.height,value:t.value}})),c=r&&(0,tOt.kJ)(e.path)?o.concat(e.path.slice(1)):o,l=Object.assign({},t.data,(0,QCt.pi)({x:t.x,y:t.y,depth:t.depth,value:t.value,path:c},t));if(!t.data[n]&&t.parent){var u=t.ancestors().find((function(t){return t.data[n]}));l[n]=null==u?void 0:u.data[n]}else l[n]=t.data[n];l[Rqt]={hierarchyConfig:i,colorField:n,enableDrillDown:r},a.push(l)})),a}function LJt(t){var e=t.options.colorField;return TUt({options:{rawFields:["value"],tooltip:{fields:["name","value",e,"path"],formatter:function(t){return{name:t.name,value:t.value}}}}},t)}function NJt(t){var e=t.chart,n=t.options,r=n.color,i=n.colorField,o=n.rectStyle,a=n.hierarchyConfig,c=n.rawFields,l=RJt({data:n.data,colorField:n.colorField,enableDrillDown:IJt(n),hierarchyConfig:a});return e.data(l),BHt(TUt({},t,{options:{xField:"x",yField:"y",seriesField:i,rawFields:c,polygon:{color:r,style:o}}})),e.coordinate().reflect("y"),t}function BJt(t){return t.chart.axis(!1),t}function zJt(t){var e=t.drilldown,n=t.interactions,r=void 0===n?[]:n;return IJt(t)?TUt({},t,{interactions:(0,QCt.ev)((0,QCt.ev)([],r,!0),[{type:"drill-down",cfg:{drillDownConfig:e,transformData:RJt}}],!1)}):t}function UJt(t){var e=t.chart,n=t.options,r=n.interactions,i=n.drilldown;mHt({chart:e,options:zJt(n)});var o=FJt(r,"view-zoom");return o&&(!1!==o.enable?e.getCanvas().on("mousewheel",(function(t){t.preventDefault()})):e.getCanvas().off("mousewheel")),IJt(n)&&(e.appendPadding=zUt(e.appendPadding,(0,tOt.U2)(i,["breadCrumb","position"]))),t}function HJt(t){return FUt(LJt,bHt,pHt("rectStyle"),NJt,BJt,vHt,gHt,UJt,yHt,CHt())(t)}var WJt={colorField:"name",rectStyle:{lineWidth:1,stroke:"#fff"},hierarchyConfig:{tile:"treemapSquarify"},label:{fields:["name"],layout:{type:"limit-in-shape"}},tooltip:{showMarkers:!1,showTitle:!1},drilldown:{enabled:!1,breadCrumb:{position:"bottom-left",rootText:"初始",dividerText:"/",textStyle:{fontSize:12,fill:"rgba(0, 0, 0, 0.65)",cursor:"pointer"},activeTextStyle:{fill:"#87B5FF"}}}},VJt=(function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="treemap",e}(0,QCt.ZT)(e,t),e.getDefaultOptions=function(){return WJt},e.prototype.changeData=function(t){var e=this.options,n=e.colorField,r=e.interactions,i=e.hierarchyConfig;this.updateOption({data:t});var o=RJt({data:t,colorField:n,enableDrillDown:jJt(r,"treemap-drill-down"),hierarchyConfig:i});this.chart.changeData(o),function(t){var e=t.interactions["drill-down"];if(e){var n=e.context.actions.find((function(t){return"drill-down-action"===t.name}));n.reset()}}(this.chart)},e.prototype.getDefaultOptions=function(){return e.getDefaultOptions()},e.prototype.getSchemaAdaptor=function(){return HJt}}(VHt),"id"),GJt="path",XJt={appendPadding:[10,0,20,0],blendMode:"multiply",tooltip:{showTitle:!1,showMarkers:!1,fields:["id","size"],formatter:function(t){return{name:t.id,value:t.size}}},legend:{position:"top-left"},label:{style:{textAlign:"center",fill:"#fff"}},interactions:[{type:"legend-filter",enable:!1}],state:{active:{style:{stroke:"#000"}},selected:{style:{stroke:"#000",lineWidth:2}},inactive:{style:{fillOpacity:.3,strokeOpacity:.3}}},defaultInteractions:["tooltip","venn-legend-active"]};function qJt(t){t&&t.geometries[0].elements.forEach((function(t){t.shape.toFront()}))}var YJt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.syncElementsPos=function(){qJt(this.context.view)},e.prototype.active=function(){t.prototype.active.call(this),this.syncElementsPos()},e.prototype.toggle=function(){t.prototype.toggle.call(this),this.syncElementsPos()},e.prototype.reset=function(){t.prototype.reset.call(this),this.syncElementsPos()},e}(WDt("element-active")),$Jt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.syncElementsPos=function(){qJt(this.context.view)},e.prototype.highlight=function(){t.prototype.highlight.call(this),this.syncElementsPos()},e.prototype.toggle=function(){t.prototype.toggle.call(this),this.syncElementsPos()},e.prototype.clear=function(){t.prototype.clear.call(this),this.syncElementsPos()},e.prototype.reset=function(){t.prototype.reset.call(this),this.syncElementsPos()},e}(WDt("element-highlight")),KJt=WDt("element-selected"),JJt=WDt("element-single-selected"),QJt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.syncElementsPos=function(){qJt(this.context.view)},e.prototype.selected=function(){t.prototype.selected.call(this),this.syncElementsPos()},e.prototype.toggle=function(){t.prototype.toggle.call(this),this.syncElementsPos()},e.prototype.reset=function(){t.prototype.reset.call(this),this.syncElementsPos()},e}(KJt),tQt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.syncElementsPos=function(){qJt(this.context.view)},e.prototype.selected=function(){t.prototype.selected.call(this),this.syncElementsPos()},e.prototype.toggle=function(){t.prototype.toggle.call(this),this.syncElementsPos()},e.prototype.reset=function(){t.prototype.reset.call(this),this.syncElementsPos()},e}(JJt);VDt("venn-element-active",YJt),VDt("venn-element-highlight",$Jt),VDt("venn-element-selected",QJt),VDt("venn-element-single-selected",tQt),zTt("venn-element-active",{start:[{trigger:"element:mouseenter",action:"venn-element-active:active"}],end:[{trigger:"element:mouseleave",action:"venn-element-active:reset"}]}),zTt("venn-element-highlight",{start:[{trigger:"element:mouseenter",action:"venn-element-highlight:highlight"}],end:[{trigger:"element:mouseleave",action:"venn-element-highlight:reset"}]}),zTt("venn-element-selected",{start:[{trigger:"element:click",action:"venn-element-selected:toggle"}],rollback:[{trigger:"dblclick",action:["venn-element-selected:reset"]}]}),zTt("venn-element-single-selected",{start:[{trigger:"element:click",action:"venn-element-single-selected:toggle"}],rollback:[{trigger:"dblclick",action:["venn-element-single-selected:reset"]}]}),zTt("venn-legend-active",{start:[{trigger:"legend-item:mouseenter",action:["list-active:active","venn-element-active:active"]}],end:[{trigger:"legend-item:mouseleave",action:["list-active:reset","venn-element-active:reset"]}]}),zTt("venn-legend-highlight",{start:[{trigger:"legend-item:mouseenter",action:["legend-item-highlight:highlight","venn-element-highlight:highlight"]}],end:[{trigger:"legend-item:mouseleave",action:["legend-item-highlight:reset","venn-element-highlight:reset"]}]});var eQt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,QCt.ZT)(e,t),e.prototype.getLabelPoint=function(t,e,n){var r=t.data,i=r.x,o=r.y,a=t.customLabelInfo,c=a.offsetX,l=a.offsetY;return{content:t.content[n],x:i+c,y:o+l}},e}(gFt);GZt("venn",eQt);var nQt=Array.isArray,rQt="\t\n\v\f\r   ᠎              \u2028\u2029",iQt=new RegExp("([a-z])["+rQt+",]*((-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?["+rQt+"]*,?["+rQt+"]*)+)","ig"),oQt=new RegExp("(-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?)["+rQt+"]*,?["+rQt+"]*","ig");Math.PI;JZt("schema","venn",{draw:function(t,e){var n=function(t){if(!t)return null;if(nQt(t))return t;var e={a:7,c:6,o:2,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,u:3,z:0},n=[];return String(t).replace(iQt,(function(t,r,i){var o=[],a=r.toLowerCase();if(i.replace(oQt,(function(t,e){e&&o.push(+e)})),"m"===a&&o.length>2&&(n.push([r].concat(o.splice(0,2))),a="l",r="m"===r?"l":"L"),"o"===a&&1===o.length&&n.push([r,o[0]]),"r"===a)n.push([r].concat(o));else for(;o.length>=e[a]&&(n.push([r].concat(o.splice(0,e[a]))),e[a]););return""})),n}(t.data[GJt]),r=function(t){return TUt({},t.defaultStyle,{fill:t.color},t.style)}(t),i=e.addGroup({name:"venn-shape"});i.addShape("path",{attrs:(0,QCt.pi)((0,QCt.pi)({},r),{path:n}),name:"venn-path"});var o=t.customInfo,a=o.offsetX,c=o.offsetY,l=IFt.transform(null,[["t",a,c]]);return i.setMatrix(l),i},getMarker:function(t){var e=t.color;return{symbol:"circle",style:{lineWidth:0,stroke:e,fill:e,r:4}}}});var aQt={normal:function(t){return t},multiply:function(t,e){return t*e/255},screen:function(t,e){return 255*(1-(1-t/255)*(1-e/255))},overlay:function(t,e){return e<128?2*t*e/255:255*(1-2*(1-t/255)*(1-e/255))},darken:function(t,e){return t>e?e:t},lighten:function(t,e){return t>e?t:e},dodge:function(t,e){return 255===t||(t=e/255*255/(1-t/255))>255?255:t},burn:function(t,e){return 255===e?255:0===t?0:255*(1-Math.min(1,(1-e/255)/(t/255)))}};function cQt(t,e,n){void 0===n&&(n="normal");var r,i=(r=function(t){if(!aQt[t])throw new Error("unknown blend mode "+t);return aQt[t]}(n),function(t,e){var n=[];return n[0]=r(t[0],e[0]),n[1]=r(t[1],e[1]),n[2]=r(t[2],e[2]),n})(lQt(t),lQt(e)),o=lQt(t),a=o[0],c=o[1],l=o[2],u=o[3],s=lQt(e),f=s[0],h=s[1],d=s[2],p=s[3],v=Number((u+p*(1-u)).toFixed(2)),g=Math.round((u*(1-p)*(a/255)+u*p*(i[0]/255)+(1-u)*p*(f/255))/v*255),m=Math.round((u*(1-p)*(c/255)+u*p*(i[1]/255)+(1-u)*p*(h/255))/v*255),y=Math.round((u*(1-p)*(l/255)+u*p*(i[2]/255)+(1-u)*p*(d/255))/v*255);return"rgba(".concat(g,", ").concat(m,", ").concat(y,", ").concat(v,")")}function lQt(t){var e,n=t.replace("/s+/g","");return"string"!=typeof n||n.startsWith("rgba")||n.startsWith("#")?(n.startsWith("rgba")&&(e=n.replace("rgba(","").replace(")","").split(",")),n.startsWith("#")&&(e=tEt.rgb2arr(n).concat([1])),e.map((function(t,e){return 3===e?Number(t):0|t}))):tEt.rgb2arr(tEt.toRGB(n)).concat([1])}var uQt=n(13125),sQt=1e-10;function fQt(t,e){var n,r=function(t){for(var e=[],n=0;ne[n].radius+sQt)return!1;return!0}(e,t)})),o=0,a=0,c=[];if(i.length>1){var l=gQt(i);for(n=0;n-1){var v=t[f.parentIndex[p]],g=Math.atan2(f.x-v.x,f.y-v.y),m=Math.atan2(s.x-v.x,s.y-v.y),y=m-g;y<0&&(y+=2*Math.PI);var b=m-y/2,x=dQt(h,{x:v.x+v.radius*Math.sin(b),y:v.y+v.radius*Math.cos(b)});x>2*v.radius&&(x=2*v.radius),(null===d||d.width>x)&&(d={circle:v,width:x,p1:f,p2:s})}null!==d&&(c.push(d),o+=hQt(d.circle.radius,d.width),s=f)}}else{var w=t[0];for(n=1;nMath.abs(w.radius-t[n].radius)){S=!0;break}S?o=a=0:(o=w.radius*w.radius*Math.PI,c.push({circle:w,p1:{x:w.x,y:w.y+w.radius},p2:{x:w.x-sQt,y:w.y+w.radius},width:2*w.radius}))}return a/=2,e&&(e.area=o+a,e.arcArea=o,e.polygonArea=a,e.arcs=c,e.innerPoints=i,e.intersectionPoints=r),o+a}function hQt(t,e){return t*t*Math.acos(1-e/t)-(t-e)*Math.sqrt(e*(2*t-e))}function dQt(t,e){return Math.sqrt((t.x-e.x)*(t.x-e.x)+(t.y-e.y)*(t.y-e.y))}function pQt(t,e,n){if(n>=t+e)return 0;if(n<=Math.abs(t-e))return Math.PI*Math.min(t,e)*Math.min(t,e);var r=e-(n*n-t*t+e*e)/(2*n);return hQt(t,t-(n*n-e*e+t*t)/(2*n))+hQt(e,r)}function vQt(t,e){var n=dQt(t,e),r=t.radius,i=e.radius;if(n>=r+i||n<=Math.abs(r-i))return[];var o=(r*r-i*i+n*n)/(2*n),a=Math.sqrt(r*r-o*o),c=t.x+o*(e.x-t.x)/n,l=t.y+o*(e.y-t.y)/n,u=-(e.y-t.y)*(a/n),s=-(e.x-t.x)*(a/n);return[{x:c+u,y:l-s},{x:c-u,y:l+s}]}function gQt(t){for(var e={x:0,y:0},n=0;n=a&&(o=r[n],a=c)}var l=(0,uQt.nelderMead)((function(n){return-1*mQt({x:n[0],y:n[1]},t,e)}),[o.x,o.y],{maxIterations:500,minErrorDelta:1e-10}).x,u={x:l[0],y:l[1]},s=!0;for(n=0;nt[n].radius){s=!1;break}for(n=0;n0&&console.log("WARNING: area "+o+" not represented on screen")}return n}var xQt=1e-10;function wQt(t,e,n){return Math.min(t,e)*Math.min(t,e)*Math.PI<=n+xQt?Math.abs(t-e):(0,uQt.bisect)((function(r){return pQt(t,e,r)-n}),0,t+e)}function SQt(t,e){var n=function(t,e){for(var n,r=e&&e.lossFunction?e.lossFunction:kQt,i={},o={},a=0;a=Math.min(i[s].size,i[f].size)&&(u=0),o[s].push({set:f,size:l.size,weight:u}),o[f].push({set:s,size:l.size,weight:u})}var h=[];for(n in o)if(o.hasOwnProperty(n)){var d=0;for(a=0;a=8){var i=function(t,e){e=e||{};var n,r=e.restarts||10,i=[],o={};for(n=0;n=Math.min(e[o].size,e[a].size)?l=1:t.size<=1e-10&&(l=-1),i[o][a]=i[a][o]=l})),{distances:r,constraints:i}}(t,i,o),l=c.distances,u=c.constraints,s=(0,uQt.norm2)(l.map(uQt.norm2))/l.length;l=l.map((function(t){return t.map((function(t){return t/s}))}));var f,h,d=function(t,e){return function(t,e,n,r){var i,o=0;for(i=0;i0&&p<=f||h<0&&p>=f||(o+=2*v*v,e[2*i]+=4*v*(a-u),e[2*i+1]+=4*v*(c-s),e[2*l]+=4*v*(u-a),e[2*l+1]+=4*v*(s-c))}return o}(t,e,l,u)};for(n=0;ne?1:-1})),e=0;ec;i.push("\nA",c,c,0,l?1:0,1,a.p1.x,a.p1.y)}return i.join(" ")}(r);/[zZ]$/.test(i)||(i+=" Z"),t[GJt]=i;var o=s[n]||{x:0,y:0};(0,tOt.f0)(t,o)})),c}var MQt=40;function AQt(t,e,n){var r=t.chart,i=t.options,o=i.blendMode,a=i.setsField,c=r.getTheme(),l=c.colors10,u=c.colors20,s=n;(0,tOt.kJ)(s)||(s=e.filter((function(t){return 1===t[a].length})).length<=10?l:u);var f=OQt(s,e,o,a);return function(t){return f.get(t)||s[0]}}function PQt(t){var e=t.chart,n=t.options,r=n.legend,i=n.appendPadding,o=n.padding,a=BUt(i);return!1!==r&&(a=zUt(i,(0,tOt.U2)(r,"position"),MQt)),e.appendPadding=UUt([a,o]),t}function _Qt(t){var e=t.options.data;e||(wUt(mUt.WARN,!1,"warn: %s","数据不能为空"),e=[]);var n=e.filter((function(t){return 1===t.sets.length})).map((function(t){return t.sets[0]})),r=e.filter((function(t){var e=t.sets;return function(t,e){for(var n=0;n1)throw new Error("quantiles must be between 0 and 1");return 1===e?t[t.length-1]:0===e?t[0]:n%1!=0?t[Math.ceil(n)-1]:t.length%2==0?(t[n-1]+t[n])/2:t[n]}function KQt(t,e,n){var r=t[e];t[e]=t[n],t[n]=r}function JQt(t,e,n,r){for(n=n||0,r=r||t.length-1;r>n;){if(r-n>600){var i=r-n+1,o=e-n+1,a=Math.log(i),c=.5*Math.exp(2*a/3),l=.5*Math.sqrt(a*c*(i-c)/i);o-i/2<0&&(l*=-1),JQt(t,e,Math.max(n,Math.floor(e-o*c/i+l)),Math.min(r,Math.floor(e+(i-o)*c/i+l)))}var u=t[e],s=n,f=r;for(KQt(t,n,e),t[r]>u&&KQt(t,n,r);su;)f--}t[n]===u?KQt(t,n,f):KQt(t,++f,r),f<=e&&(n=f+1),e<=f&&(r=f-1)}}function QQt(t,e){var n=t.slice();if(Array.isArray(e)){!function(t,e){for(var n=[0],r=0;r0?s:f};return RHt(TUt({},t,{options:{xField:i,yField:m0t,seriesField:i,rawFields:[o,y0t,x0t,m0t],widthRatio:l,interval:{style:u,shape:d||"waterfall",color:v}}})).ext.geometry.customInfo((0,QCt.pi)((0,QCt.pi)({},p),{leaderLine:c})),t}function O0t(t){var e,n,r=t.options,i=r.xAxis,o=r.yAxis,a=r.xField,c=r.yField,l=r.meta,u=TUt({},{alias:c},(0,tOt.U2)(l,c));return FUt(kHt(((e={})[a]=i,e[c]=o,e[m0t]=o,e),TUt({},l,((n={})[m0t]=u,n[y0t]=u,n[b0t]=u,n))))(t)}function E0t(t){var e=t.chart,n=t.options,r=n.xAxis,i=n.yAxis,o=n.xField,a=n.yField;return!1===r?e.axis(o,!1):e.axis(o,r),!1===i?(e.axis(a,!1),e.axis(m0t,!1)):(e.axis(a,i),e.axis(m0t,i)),t}function M0t(t){var e=t.chart,n=t.options,r=n.legend,i=n.total,o=n.risingFill,a=n.fallingFill,c=_Ht(n.locale);if(!1===r)e.legend(!1);else{var l=[{name:c.get(["general","increase"]),value:"increase",marker:{symbol:"square",style:{r:5,fill:o}}},{name:c.get(["general","decrease"]),value:"decrease",marker:{symbol:"square",style:{r:5,fill:a}}}];i&&l.push({name:i.label||"",value:"total",marker:{symbol:"square",style:TUt({},{r:5},(0,tOt.U2)(i,"style"))}}),e.legend(TUt({},{custom:!0,position:"top",items:l},r)),e.removeInteraction("legend-filter")}return t}function A0t(t){var e=t.chart,n=t.options,r=n.label,i=n.labelMode,o=n.xField,a=jUt(e,"interval");if(r){var c=r.callback,l=(0,QCt._T)(r,["callback"]);a.label({fields:"absolute"===i?[b0t,o]:[y0t,o],callback:c,cfg:LUt(l)})}else a.label(!1);return t}function P0t(t){var e=t.chart,n=t.options,r=n.tooltip,i=n.xField,o=n.yField;if(!1!==r){e.tooltip((0,QCt.pi)({showCrosshairs:!1,showMarkers:!1,shared:!0,fields:[o]},r));var a=e.geometries[0];(null==r?void 0:r.formatter)?a.tooltip("".concat(i,"*").concat(o),r.formatter):a.tooltip(o)}else e.tooltip(!1);return t}function _0t(t){return FUt(k0t,bHt,C0t,O0t,E0t,M0t,P0t,A0t,xHt,mHt,yHt,CHt())(t)}JZt("interval","waterfall",{draw:function(t,e){var n=t.customInfo,r=t.points,i=t.nextPoints,o=e.addGroup(),a=this.parsePath(function(t){for(var e=[],n=0;n>2);t.width=(I0t<<5)/e,t.height=R0t/e;var n=t.getContext("2d",{willReadFrequently:!0});return n.fillStyle=n.strokeStyle="red",n.textAlign="center",{context:n,ratio:e}}function v(e,n,r){for(var i,o,l,u=n.x,s=n.y,f=Math.sqrt(t[0]*t[0]+t[1]*t[1]),h=a(t),d=c()<.5?1:-1,p=-d;(i=h(p+=d))&&(o=~~i[0],l=~~i[1],!(Math.min(Math.abs(o),Math.abs(l))>=f));)if(n.x=u+o,n.y=s+l,!(n.x+n.x0<0||n.y+n.y0<0||n.x+n.x1>t[0]||n.y+n.y1>t[1])&&(!r||!V0t(n,e,t[0]))&&(!r||X0t(n,r))){for(var v=n.sprite,g=n.width>>5,m=t[0]>>5,y=n.x-(g<<4),b=127&y,x=32-b,w=n.y1-n.y0,S=void 0,k=(n.y+n.y0)*m+(y>>5),C=0;C>>b:0);k+=m}return delete n.sprite,!0}return!1}return d.start=function(){var a=t[0],g=t[1],m=p(h()),y=d.board?d.board:Y0t((t[0]>>5)*t[1]),b=l.length,x=[],w=l.map((function(t,a,c){return t.text=s.call(this,t,a,c),t.font=e.call(this,t,a,c),t.style=f.call(this,t,a,c),t.weight=r.call(this,t,a,c),t.rotate=i.call(this,t,a,c),t.size=~~n.call(this,t,a,c),t.padding=o.call(this,t,a,c),t})).sort((function(t,e){return e.size-t.size})),S=-1,k=d.board?[{x:0,y:0},{x:a,y:g}]:null;function C(){for(var e=Date.now();Date.now()-e>1,n.y=g*(c()+.5)>>1,W0t(m,n,w,S),n.hasText&&v(y,n,k)&&(x.push(n),k?d.hasImage||G0t(k,n):k=[{x:n.x+n.x0,y:n.y+n.y0},{x:n.x+n.x1,y:n.y+n.y1}],n.x-=t[0]>>1,n.y-=t[1]>>1)}d._tags=x,d._bounds=k}return C(),d},d.createMask=function(e){var n=document.createElement("canvas"),r=t[0],i=t[1];if(r&&i){var o=r>>5,a=Y0t((r>>5)*i);n.width=r,n.height=i;var c=n.getContext("2d");c.drawImage(e,0,0,e.width,e.height,0,0,r,i);for(var l=c.getImageData(0,0,r,i).data,u=0;u>5),h=u*r+s<<2,p=l[h]>=250&&l[h+1]>=250&&l[h+2]>=250?1<<31-s%32:0;a[f]|=p}d.board=a,d.hasImage=!0}},d.timeInterval=function(t){u=null==t?1/0:t},d.words=function(t){l=t},d.size=function(e){t=[+e[0],+e[1]]},d.font=function(t){e=K0t(t)},d.fontWeight=function(t){r=K0t(t)},d.rotate=function(t){i=K0t(t)},d.spiral=function(t){a=J0t[t]||t},d.fontSize=function(t){n=K0t(t)},d.padding=function(t){o=K0t(t)},d.random=function(t){c=K0t(t)},d}();["font","fontSize","fontWeight","padding","rotate","size","spiral","timeInterval","random"].forEach((function(t){(0,tOt.UM)(e[t])||n[t](e[t])})),n.words(t),e.imageMask&&n.createMask(e.imageMask);var r=n.start(),i=r._tags;i.forEach((function(t){t.x+=e.size[0]/2,t.y+=e.size[1]/2}));var o=e.size,a=o[0],c=o[1];return i.push({text:"",value:0,x:0,y:0,opacity:0}),i.push({text:"",value:0,x:a,y:c,opacity:0}),i}(t,e=(0,tOt.f0)({},Z0t,e))}var j0t=Math.PI/180,I0t=64,R0t=2048;function L0t(t){return t.text}function N0t(){return"serif"}function B0t(){return"normal"}function z0t(t){return t.value}function U0t(){return 90*~~(2*Math.random())}function H0t(){return 1}function W0t(t,e,n,r){if(!e.sprite){var i=t.context,o=t.ratio;i.clearRect(0,0,(I0t<<5)/o,R0t/o);var a=0,c=0,l=0,u=n.length;for(--r;++r>5<<5,f=~~Math.max(Math.abs(v+g),Math.abs(v-g))}else s=s+31>>5<<5;if(f>l&&(l=f),a+s>=I0t<<5&&(a=0,c+=l,l=0),c+f>=R0t)break;i.translate((a+(s>>1))/o,(c+(f>>1))/o),e.rotate&&i.rotate(e.rotate*j0t),i.fillText(e.text,0,0),e.padding&&(i.lineWidth=2*e.padding,i.strokeText(e.text,0,0)),i.restore(),e.width=s,e.height=f,e.xoff=a,e.yoff=c,e.x1=s>>1,e.y1=f>>1,e.x0=-e.x1,e.y0=-e.y1,e.hasText=!0,a+=s}for(var y=i.getImageData(0,0,(I0t<<5)/o,R0t/o).data,b=[];--r>=0;)if((e=n[r]).hasText){for(var x=(s=e.width)>>5,w=(f=e.y1-e.y0,0);w>5),E=y[(c+C)*(I0t<<5)+(a+w)<<2]?1<<31-w%32:0;b[O]|=E,S|=E}S?k=C:(e.y0++,f--,C--,c++)}e.y1=e.y0+k,e.sprite=b.slice(0,(e.y1-e.y0)*x)}}}function V0t(t,e,n){n>>=5;for(var r,i=t.sprite,o=t.width>>5,a=t.x-(o<<4),c=127&a,l=32-c,u=t.y1-t.y0,s=(t.y+t.y0)*n+(a>>5),f=0;f>>c:0))&e[s+h])return!0;s+=n}return!1}function G0t(t,e){var n=t[0],r=t[1];e.x+e.x0r.x&&(r.x=e.x+e.x1),e.y+e.y1>r.y&&(r.y=e.y+e.y1)}function X0t(t,e){return t.x+t.x1>e[0].x&&t.x+t.x0e[0].y&&t.y+t.y0=18&&(s1t=h1t.createRoot)}catch(F2t){}function v1t(t){var e=h1t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;e&&"object"==typeof e&&(e.usingClientEntryPoint=t)}var g1t="__rc_react_root__";function m1t(t,e){s1t?function(t,e){v1t(!0);var n=e[g1t]||s1t(e);v1t(!1),n.render(t),e[g1t]=n}(t,e):function(t,e){p1t(t,e)}(t,e)}var y1t=new Map,b1t=function(t,e,n){var r=document.createElement("div");return"tooltip"===e&&(r.setAttribute("data-uuid",n),y1t.has(n)?r=y1t.get(n):y1t.set(n,r),r.className="g2-tooltip"),m1t(t,r),r},x1t=function(t,e){return{}.toString.call(t)==="[object ".concat(e,"]")},w1t=function t(e){return e&&"object"==typeof e?(Array.isArray(e)?n=e.map((function(e){return t(e)})):(n={},Object.keys(e).forEach((function(r){return n[r]=t(e[r])}))),n):e;var n},S1t=function(t,e){for(var n=t,r=0;r0&&Z.createElement(Z.Fragment,null,Z.createElement("div",{className:"my-2"},"The visualization has been evaluated across multiple dimensions. Select a dimension to view rationale for the score"," "),Z.createElement("div",{className:" w-full grid md:grid-cols-2 sm:grid-cols-1 gap-3 "},Z.createElement("div",{className:" w-full"},Z.createElement(B1t,{data:p})),Z.createElement("div",{className:" mt-2 w-full"},Z.createElement("div",{className:"mt-2"}," ",w),Z.createElement("div",{className:"border mt-2 rounded p-2"},Z.createElement("div",{className:"my-2 capitalize"},p[y].dimension," "),Z.createElement("div",{className:"flex"},Z.createElement("div",{style:{fontSize:"50px",color:(0,N.i5)(p[y].score,1,10)},className:"text-accent mr-2"},(p[y].score/2).toFixed(1),Z.createElement("div",{className:"text-sm text-center -mt-4 text-primary"}," ","out of 5"," ")),Z.createElement("div",null," ",p[y].rationale))))))),p&&p.length>0&&Z.createElement("div",{className:"p-2 text-right"}," ",Z.createElement("div",{onClick:function(){return function(){h(null),s(!0),setTimeout((function(){(0,N.kI)(x)}),600);var t={code:n.code,feedback:p,textgen_config:i.textgen_config,library:i.library,summary:i.summary,goal:i.goal},e={method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)};(0,N.ZV)(g+"/visualize/repair",e,(function(t){t&&t.status?(console.log("Repair data",t),r(t.charts[0]),kc.success(t.message),setTimeout((function(){(0,N.kI)(x)}),400)):(kc.error(t.message),h(t)),s(!1)}),(function(t){kc.error(t.message),s(!1),h(t)}))}()},role:"button",className:"px-5 bg-accent duration-300 hover:brightness-110 text-white inline-block rounded p-2 "+(u?"opacity-50 pointer-events-none":"")+" "},!u&&Z.createElement(Z.Fragment,null," ",Z.createElement(XCt.Z,{className:"w-5 h-5 mr-1 inline-block"})," ","Auto Repair Chart."),u&&Z.createElement(Z.Fragment,null,Z.createElement(ks.rH,{className:"text-white inline-block"}),"Repairing Chart .."," ")," ")))},U1t=function(t){var e=t.vizData,n=(t.setVizData,t.vizConfig),r=Z.useState(!1),i=r[0],o=r[1],a=Z.useState(null),c=(a[0],a[1]),l=Z.useState([]),u=l[0],s=l[1],f=Z.useRef(null);Z.useEffect((function(){s([])}),[e]);var h=null==u?void 0:u.map((function(t,e){var n="accessibility"===t.section;return Z.createElement("div",{className:"mb-4",key:"recommendationsrow"+e},Z.createElement("div",{className:"font-semibold text-lg"}," ",t.section),Z.createElement("div",{className:"flex gap-4"},Z.createElement("div",{className:(n?"":" w-1/2")+" "},Z.createElement("img",{src:"data:image/png;base64,"+t.raster})),!n&&Z.createElement("div",{className:"w-1/2"},Z.createElement(Cs.d,{code:""+t.code,language:"python",wrapLines:!0}))))}));return Z.createElement("div",{className:"text-primary"},Z.createElement("div",{onClick:function(){return function(){c(null),o(!0),s([]),setTimeout((function(){(0,N.kI)(f)}),600);var t=Object.assign({},n.textgen_config);t.n=3,t.temperature=.6;var r={method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({code:e.code,library:n.library,summary:n.summary,textgen_config:t})};(0,N.ZV)("/api/visualize/recommend",r,(function(t){t&&t.status?(console.log("Recomendation data",t),s(t.charts),kc.success(t.message),setTimeout((function(){(0,N.kI)(f)}),400)):(kc.error(t.message),c(t)),o(!1)}),(function(t){kc.error(t.message),o(!1),c(t)}))}()},role:"button",className:"px-5 bg-accent duration-300 hover:brightness-110 text-white inline-block rounded p-2 "+(i?"opacity-50 pointer-events-none":"")+" "},!i&&Z.createElement(nv.Z,{className:"w-5 h-5 mr-1 inline-block"}),i&&Z.createElement(ks.rH,{className:"text-white inline-block"})," Generate Recommendations"),i&&Z.createElement("div",{className:"mt-4"},Z.createElement(ks.rH,{className:"text-accent",subtitle:"loading recommendations .."}),Z.createElement(Gc,{active:!0,className:"mt-4",paragraph:{rows:12}})),Z.createElement("div",{ref:f,className:"mt-4"},h))},H1t=function(t){var e,n=t.vizspec,r=t.config,i=r.goal,o="/api",a=Z.useState(!1),c=a[0],l=a[1],u=Z.useState(null),s=u[0],f=u[1],h=Z.useState([]),d=h[0],p=h[1],v=Z.useRef(null),g=Z.useRef(null),m=Z.useState(n),y=m[0],b=m[1],x=y.spec,w=y.raster;x&&(delete x.config,x.width=300,x.height=320,x.actions=!1,x.data.url.includes("/api")||(x.data.url=o+x.data.url),null!==(e=x.title)&&void 0!==e&&e.subtitle&&delete x.title.subtitle);var S=d.map((function(t,e){return Z.createElement("div",{className:"",key:"commandsrow"+e},Z.createElement("span",{className:"text-xs"},t))})),k=[{key:"1",label:Z.createElement("div",null," ",Z.createElement(Qp,{className:"inline-block h-4 mr-2"}),"Refine"),children:Z.createElement("div",{className:"text-primary",style:{minHeight:"300px"}},Z.createElement("div",{className:"text-sm text-primary mb-2"},"Modify Chart with Natural Language commands."),Z.createElement("div",{className:"relative mt-2 bg-secondary rounded-b-none rounded p-2 "+(c?"pointer-event-none opacity-75":"")+" "},Z.createElement("input",{ref:v,onKeyDown:function(t){var e;"Enter"===t.key&&function(t){f(null),l(!0);var e=Object.assign([],d);e.push(t);var i={method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({summary:r.summary,instructions:e,code:n.code,library:r.library,textgen_config:r.textgen_config})};(0,N.ZV)(o+"/visualize/edit",i,(function(t){var n;t&&t.status?(b(t.charts[0]),kc.success(t.message),(null===(n=v.current)||void 0===n?void 0:n.value)&&(v.current.value=""),p(e)):(kc.error(t.message),f(t)),l(!1)}),(function(t){kc.error(t.message),l(!1),f(t)}))}((null===(e=v.current)||void 0===e?void 0:e.value)||"")},className:"bg-white w-full text-gray-600 p-2 rounded",placeholder:"Change x axis label to Meters per Second",type:"input"}),c&&Z.createElement("span",{className:"absolute left-4 top-4 text-accent"}," ",Z.createElement(ks.rH,{className:""})),Z.createElement("div",{className:"text-sm text-orange-400 mt-1"},null==s?void 0:s.message)),Z.createElement("div",{className:"text-xs p-2 border border-t-0 rounded border-secondary rounded-t-none"},d&&d.length>0&&Z.createElement("div",{className:"text-right"},Z.createElement("div",{role:"button",onClick:function(){p([])},className:"text-right border inline-block p-1 rounded hover:border-accent hover:text-accent duration-300"}," ",Z.createElement(ev,{className:"w-5 h-5 inline-block"})," Clear Chat History"," ")),S))},{key:"2",label:Z.createElement("div",null," ",Z.createElement(nv.Z,{className:"inline-block h-4 mr-2"}),"Explain"),children:Z.createElement(Z.Fragment,null,Z.createElement("div",{className:"text-sm text-primary mb-2"},"Use the explain visualization button below to generate an explanation for the chart."),Z.createElement(GCt,{vizData:y,vizConfig:r}))},{key:"3",label:Z.createElement("div",null," ",Z.createElement(rv.Z,{className:"inline-block h-4 mr-2"}),"Evaluate"),children:Z.createElement(Z.Fragment,null,Z.createElement("div",{className:"text-sm text-primary mb-2"},"Use the evaluate visualization button below to generate self-evaluation scores for the chart."),Z.createElement(z1t,{vizData:y,setVizData:b,vizConfig:r}))},{key:"4",label:Z.createElement("div",null," ",Z.createElement(Ps.Z,{className:"inline-block h-4 mr-2"}),"Recommend!"),children:Z.createElement(Z.Fragment,null,Z.createElement("div",{className:"text-sm text-primary mb-2"},"Generate similar charts."),Z.createElement(U1t,{vizData:y,setVizData:b,vizConfig:r}))}];return Z.createElement("div",{className:"text-primary ",ref:g},Z.createElement("div",{className:"mb-4 w-full "},Z.createElement("div",{className:"text-lg font-semibold"},null==i?void 0:i.question),Z.createElement("span",{className:"text-sm"},null==i?void 0:i.rationale)," ",(null==i?void 0:i.visualization)&&Z.createElement("div",{className:"text-sm text-accent"},null==i?void 0:i.visualization)),Z.createElement("div",{className:"md:flex gap-4 w-full"},x&&Z.createElement("div",{className:" bg-white rounded p-2 "},Z.createElement(BCt,{spec:x,actions:!1})),w&&Z.createElement(UCt,{raster:w,library:r.library,goal:r.goal}),Z.createElement("div",{className:"flex-1 md:mt-0 mt-4 gap-3 mb-4 "},Z.createElement("div",{className:" w-full"},Z.createElement("div",{className:"text-xs word-break: break-all text-primary mb-2"},Z.createElement(iv.Z,{className:"h-4 w-4 inline-block mr-1"}),"How was this visualization created? See the specifications and code below."),Z.createElement(VCt,{spec:x,code:y.code,error:y.error,status:y.status})))),Z.createElement(Im,{defaultActiveKey:"1",items:k}))},W1t=function(t){var e=t.vizspecs,n=t.vizConfig;return Z.createElement("div",{className:" mt-4 "},Z.createElement(Kp,{locale:{emptyText:Z.createElement(Qs,{description:"No experiments found"})},dataSource:e,renderItem:function(t,e){return Z.createElement(H1t,{vizspec:t,config:n})},pagination:{pageSize:1,size:"small",hideOnSinglePage:!0}}))};function V1t(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function G1t(t){for(var e=1;e0&&Z.createElement("div",{className:"mt-4 "},Z.createElement(W1t,{vizspecs:a,vizConfig:r}))),a&&0===a.length&&Z.createElement("div",{className:"mt-4 p-2 rounded border-accent border"}," ",Z.createElement(L,{className:"inline-block h-5 mr-2"}),"No visualizations generated"," ")))};function q1t(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Y1t(t){for(var e=1;e=0&&_}),[_,at]),lt=Z.useMemo((function(){return Object.keys(W||{}).map((function(t){var e=W[t],n={value:Number(t)};return e&&"object"===(0,it.Z)(e)&&!Z.isValidElement(e)&&("label"in e||"style"in e)?(n.style=e.style,n.label=e.label):n.label=e,n})).filter((function(t){var e=t.label;return e||"number"==typeof e})).sort((function(t,e){return t.value-e.value}))}),[W]),ut=function(t,e,n,r,i,o){var a=Z.useCallback((function(n){var r=isFinite(n)?n:t;return r=Math.min(e,n),Math.max(t,r)}),[t,e]),c=Z.useCallback((function(r){if(null!==n){var i=t+Math.round((a(r)-t)/n)*n,o=function(t){return(String(t).split(".")[1]||"").length},c=Math.max(o(n),o(e),o(t)),l=Number(i.toFixed(c));return t<=l&&l<=e?l:null}return null}),[n,t,e,a]),l=Z.useCallback((function(i){var o=a(i),l=r.map((function(t){return t.value}));null!==n&&l.push(c(i)),l.push(t,e);var u=l[0],s=e-t;return l.forEach((function(t){var e=Math.abs(o-t);e<=s&&(u=t,s=e)})),u}),[t,e,r,n,a,c]),u=function i(o,a,l){var u=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"unit";if("number"==typeof a){var s,f=o[l],h=f+a,d=[];r.forEach((function(t){d.push(t.value)})),d.push(t,e),d.push(c(f));var p=a>0?1:-1;"unit"===u?d.push(c(f+p*n)):d.push(c(h)),d=d.filter((function(t){return null!==t})).filter((function(t){return a<0?t<=f:t>=f})),"unit"===u&&(d=d.filter((function(t){return t!==f})));var v="unit"===u?f:h;s=d[0];var g=Math.abs(s-v);if(d.forEach((function(t){var e=Math.abs(t-v);e1){var m=(0,Y.Z)(o);return m[l]=s,i(m,a-p,l,u)}return s}return"min"===a?t:"max"===a?e:void 0},s=function(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"unit",i=t[n],o=u(t,e,n,r);return{value:o,changed:o!==i}},f=function(t){return null===o&&0===t||"number"==typeof o&&t3&&void 0!==arguments[3]?arguments[3]:"unit",a=t.map(l),c=a[n],h=u(a,e,n,r);if(a[n]=h,!1===i){var d=o||0;n>0&&a[n-1]!==c&&(a[n]=Math.max(a[n],a[n-1]+d)),n0;m-=1)for(var y=!0;f(a[m]-a[m-1])&&y;){var b=s(a,-1,m-1);a[m-1]=b.value,y=b.changed}for(var x=a.length-1;x>0;x-=1)for(var w=!0;f(a[x]-a[x-1])&&w;){var S=s(a,-1,x-1);a[x-1]=S.value,w=S.changed}for(var k=0;k=0?k+1:2;for(n=n.slice(0,r);n.length=0&&tt.current.focus(t)}Ot(null)}),[Ct]);var Et=Z.useMemo((function(){return(!D||null!==at)&&D}),[D,at]),Mt=function(t,e,n,r,i,o,a,c,l){var u=Z.useState(null),s=(0,rr.Z)(u,2),f=s[0],h=s[1],d=Z.useState(-1),p=(0,rr.Z)(d,2),v=p[0],g=p[1],m=Z.useState(n),y=(0,rr.Z)(m,2),b=y[0],x=y[1],w=Z.useState(n),S=(0,rr.Z)(w,2),k=S[0],C=S[1],O=Z.useRef(null),E=Z.useRef(null);Z.useEffect((function(){-1===v&&x(n)}),[n,v]),Z.useEffect((function(){return function(){document.removeEventListener("mousemove",O.current),document.removeEventListener("mouseup",E.current),document.removeEventListener("touchmove",O.current),document.removeEventListener("touchend",E.current)}}),[]);var M=function(t,e){b.some((function(e,n){return e!==t[n]}))&&(void 0!==e&&h(e),x(t),a(t))},A=function(t,e){if(-1===t){var n=k[0],a=k[k.length-1],c=r-n,u=i-a,s=e*(i-r);s=Math.max(s,c),s=Math.min(s,u);var f=o(n+s);s=f-n;var h=k.map((function(t){return t+s}));M(h)}else{var d=(i-r)*e,p=(0,Y.Z)(b);p[t]=k[t];var v=l(p,d,t,"dist");M(v.values,v.value)}},P=Z.useRef(A);P.current=A;var _=Z.useMemo((function(){var t=(0,Y.Z)(n).sort((function(t,e){return t-e})),e=(0,Y.Z)(b).sort((function(t,e){return t-e}));return t.every((function(t,n){return t===e[n]}))?b:n}),[n,b]);return[v,f,_,function(r,i){r.stopPropagation();var o=n[i];g(i),h(o),C(n);var a=u2t(r),l=a.pageX,u=a.pageY,s=function(n){n.preventDefault();var r,o=u2t(n),a=o.pageX,c=o.pageY,s=a-l,f=c-u,h=t.current.getBoundingClientRect(),d=h.width,p=h.height;switch(e){case"btt":r=-f/p;break;case"ttb":r=f/p;break;case"rtl":r=-s/d;break;default:r=s/d}P.current(i,r)},f=function t(e){e.preventDefault(),document.removeEventListener("mouseup",t),document.removeEventListener("mousemove",s),document.removeEventListener("touchend",t),document.removeEventListener("touchmove",s),O.current=null,E.current=null,g(-1),c()};document.addEventListener("mouseup",f),document.addEventListener("mousemove",s),document.addEventListener("touchend",f),document.addEventListener("touchmove",s),O.current=s,E.current=f}]}(et,nt,mt,rt,ot,ft,xt,(function(){null==E||E(bt(yt.current))}),ht),Pt=(0,rr.Z)(Mt,4),_t=Pt[0],Dt=Pt[1],Tt=Pt[2],Zt=Pt[3],Ft=function(t,e){Zt(t,e),null==O||O(bt(yt.current))},jt=-1!==_t;Z.useEffect((function(){if(!jt){var t=mt.lastIndexOf(Dt);tt.current.focus(t)}}),[jt]);var It=Z.useMemo((function(){return(0,Y.Z)(Tt).sort((function(t,e){return t-e}))}),[Tt]),Rt=Z.useMemo((function(){return S?[It[0],It[It.length-1]]:[rt,It[0]]}),[It,S,rt]),Lt=(0,rr.Z)(Rt,2),Nt=Lt[0],Bt=Lt[1];Z.useImperativeHandle(e,(function(){return{focus:function(){tt.current.focus(0)},blur:function(){var t=document.activeElement;et.current.contains(t)&&(null==t||t.blur())}}})),Z.useEffect((function(){f&&tt.current.focus(0)}),[]);var zt=Z.useMemo((function(){return{min:rt,max:ot,direction:nt,disabled:l,keyboard:s,step:at,included:I,includedStart:Nt,includedEnd:Bt,range:S,tabIndex:q,ariaLabelForHandle:$,ariaLabelledByForHandle:J,ariaValueTextFormatterForHandle:Q}}),[rt,ot,nt,l,s,at,I,Nt,Bt,S,q,$,J,Q]);return Z.createElement(Q1t.Provider,{value:zt},Z.createElement("div",{ref:et,className:K()(i,o,(n={},(0,B.Z)(n,"".concat(i,"-disabled"),l),(0,B.Z)(n,"".concat(i,"-vertical"),F),(0,B.Z)(n,"".concat(i,"-horizontal"),!F),(0,B.Z)(n,"".concat(i,"-with-marks"),lt.length),n)),style:a,onMouseDown:function(t){t.preventDefault();var e,n=et.current.getBoundingClientRect(),r=n.width,i=n.height,o=n.left,a=n.top,c=n.bottom,l=n.right,u=t.clientX,s=t.clientY;switch(nt){case"btt":e=(c-s)/i;break;case"ttb":e=(s-a)/i;break;case"rtl":e=(l-u)/r;break;default:e=(u-o)/r}wt(ft(rt+e*(ot-rt)))}},Z.createElement("div",{className:"".concat(i,"-rail"),style:z}),Z.createElement(f2t,{prefixCls:i,style:L,values:It,startPoint:R,onStartMove:Et?Ft:null}),Z.createElement(v2t,{prefixCls:i,marks:lt,dots:V,style:U,activeStyle:H}),Z.createElement(l2t,{ref:tt,prefixCls:i,style:N,values:Tt,draggingIndex:_t,onStartMove:Ft,onOffsetChange:function(t,e){if(!l){var n=ht(mt,t,e);null==O||O(bt(mt)),xt(n.values),null==E||E(bt(n.values)),Ot(n.value)}},onFocus:h,onBlur:d,handleRender:G}),Z.createElement(d2t,{prefixCls:i,marks:lt,onClick:wt})))}));var m2t=g2t,y2t=Z.forwardRef((function(t,e){var n=t.open,r=(0,Z.useRef)(null),i=(0,Z.useRef)(null);function o(){pe.Z.cancel(i.current),i.current=null}return Z.useEffect((function(){return n?i.current=(0,pe.Z)((function(){var t;null===(t=r.current)||void 0===t||t.forceAlign(),i.current=null})):o(),o}),[n,t.title]),Z.createElement(ko,Object.assign({ref:(0,le.sQ)(r,e)},t))}));var b2t=y2t,x2t=function(t){var e,n,r,i,o=t.componentCls,a=t.antCls,c=t.controlSize,l=t.dotSize,u=t.marginFull,s=t.marginPart,f=t.colorFillContentHover;return(0,V.Z)({},o,Object.assign(Object.assign({},(0,Qe.Wf)(t)),(i={position:"relative",height:c,margin:"".concat(s,"px ").concat(u,"px"),padding:0,cursor:"pointer",touchAction:"none"},(0,V.Z)(i,"&-vertical",{margin:"".concat(u,"px ").concat(s,"px")}),(0,V.Z)(i,"".concat(o,"-rail"),{position:"absolute",backgroundColor:t.railBg,borderRadius:t.borderRadiusXS,transition:"background-color ".concat(t.motionDurationMid)}),(0,V.Z)(i,"".concat(o,"-track"),{position:"absolute",backgroundColor:t.trackBg,borderRadius:t.borderRadiusXS,transition:"background-color ".concat(t.motionDurationMid)}),(0,V.Z)(i,"&:hover",(e={},(0,V.Z)(e,"".concat(o,"-rail"),{backgroundColor:t.railHoverBg}),(0,V.Z)(e,"".concat(o,"-track"),{backgroundColor:t.trackHoverBg}),(0,V.Z)(e,"".concat(o,"-dot"),{borderColor:f}),(0,V.Z)(e,"".concat(o,"-handle::after"),{boxShadow:"0 0 0 ".concat(t.handleLineWidth,"px ").concat(t.colorPrimaryBorderHover)}),(0,V.Z)(e,"".concat(o,"-dot-active"),{borderColor:t.dotActiveBorderColor}),e)),(0,V.Z)(i,"".concat(o,"-handle"),(n={position:"absolute",width:t.handleSize,height:t.handleSize,outline:"none"},(0,V.Z)(n,"".concat(o,"-dragging"),{zIndex:1}),(0,V.Z)(n,"&::before",{content:'""',position:"absolute",insetInlineStart:-t.handleLineWidth,insetBlockStart:-t.handleLineWidth,width:t.handleSize+2*t.handleLineWidth,height:t.handleSize+2*t.handleLineWidth,backgroundColor:"transparent"}),(0,V.Z)(n,"&::after",{content:'""',position:"absolute",insetBlockStart:0,insetInlineStart:0,width:t.handleSize,height:t.handleSize,backgroundColor:t.colorBgElevated,boxShadow:"0 0 0 ".concat(t.handleLineWidth,"px ").concat(t.handleColor),borderRadius:"50%",cursor:"pointer",transition:"\n inset-inline-start ".concat(t.motionDurationMid,",\n inset-block-start ").concat(t.motionDurationMid,",\n width ").concat(t.motionDurationMid,",\n height ").concat(t.motionDurationMid,",\n box-shadow ").concat(t.motionDurationMid,"\n ")}),(0,V.Z)(n,"&:hover, &:active, &:focus",{"&::before":{insetInlineStart:-((t.handleSizeHover-t.handleSize)/2+t.handleLineWidthHover),insetBlockStart:-((t.handleSizeHover-t.handleSize)/2+t.handleLineWidthHover),width:t.handleSizeHover+2*t.handleLineWidthHover,height:t.handleSizeHover+2*t.handleLineWidthHover},"&::after":{boxShadow:"0 0 0 ".concat(t.handleLineWidthHover,"px ").concat(t.handleActiveColor),width:t.handleSizeHover,height:t.handleSizeHover,insetInlineStart:(t.handleSize-t.handleSizeHover)/2,insetBlockStart:(t.handleSize-t.handleSizeHover)/2}}),n)),(0,V.Z)(i,"".concat(o,"-mark"),{position:"absolute",fontSize:t.fontSize}),(0,V.Z)(i,"".concat(o,"-mark-text"),{position:"absolute",display:"inline-block",color:t.colorTextDescription,textAlign:"center",wordBreak:"keep-all",cursor:"pointer",userSelect:"none","&-active":{color:t.colorText}}),(0,V.Z)(i,"".concat(o,"-step"),{position:"absolute",background:"transparent",pointerEvents:"none"}),(0,V.Z)(i,"".concat(o,"-dot"),{position:"absolute",width:l,height:l,backgroundColor:t.colorBgElevated,border:"".concat(t.handleLineWidth,"px solid ").concat(t.dotBorderColor),borderRadius:"50%",cursor:"pointer",transition:"border-color ".concat(t.motionDurationSlow),pointerEvents:"auto","&-active":{borderColor:t.dotActiveBorderColor}}),(0,V.Z)(i,"&".concat(o,"-disabled"),(r={cursor:"not-allowed"},(0,V.Z)(r,"".concat(o,"-rail"),{backgroundColor:"".concat(t.railBg," !important")}),(0,V.Z)(r,"".concat(o,"-track"),{backgroundColor:"".concat(t.trackBgDisabled," !important")}),(0,V.Z)(r,"\n ".concat(o,"-dot\n "),{backgroundColor:t.colorBgElevated,borderColor:t.trackBgDisabled,boxShadow:"none",cursor:"not-allowed"}),(0,V.Z)(r,"".concat(o,"-handle::after"),{backgroundColor:t.colorBgElevated,cursor:"not-allowed",width:t.handleSize,height:t.handleSize,boxShadow:"0 0 0 ".concat(t.handleLineWidth,"px ").concat(new to.C(t.colorTextDisabled).onBackground(t.colorBgContainer).toHexShortString()),insetInlineStart:0,insetBlockStart:0}),(0,V.Z)(r,"\n ".concat(o,"-mark-text,\n ").concat(o,"-dot\n "),{cursor:"not-allowed !important"}),r)),(0,V.Z)(i,"&-tooltip ".concat(a,"-tooltip-inner"),{minWidth:"unset"}),i)))},w2t=function(t,e){var n,r,i,o,a=t.componentCls,c=t.railSize,l=t.handleSize,u=t.dotSize,s=e?"paddingBlock":"paddingInline",f=e?"width":"height",h=e?"height":"width",d=e?"insetBlockStart":"insetInlineStart",p=e?"top":"insetInlineStart";return o={},(0,V.Z)(o,s,c),(0,V.Z)(o,h,3*c),(0,V.Z)(o,"".concat(a,"-rail"),(n={},(0,V.Z)(n,f,"100%"),(0,V.Z)(n,h,c),n)),(0,V.Z)(o,"".concat(a,"-track"),(0,V.Z)({},h,c)),(0,V.Z)(o,"".concat(a,"-handle"),(0,V.Z)({},d,(3*c-l)/2)),(0,V.Z)(o,"".concat(a,"-mark"),(r={insetInlineStart:0,top:0},(0,V.Z)(r,p,3*c+(e?0:t.marginFull)),(0,V.Z)(r,f,"100%"),r)),(0,V.Z)(o,"".concat(a,"-step"),(i={insetInlineStart:0,top:0},(0,V.Z)(i,p,c),(0,V.Z)(i,f,"100%"),(0,V.Z)(i,h,c),i)),(0,V.Z)(o,"".concat(a,"-dot"),(0,V.Z)({position:"absolute"},d,(c-u)/2)),o},S2t=function(t){var e=t.componentCls,n=t.marginPartWithMark;return(0,V.Z)({},"".concat(e,"-horizontal"),Object.assign(Object.assign({},w2t(t,!0)),(0,V.Z)({},"&".concat(e,"-with-marks"),{marginBottom:n})))},k2t=function(t){var e=t.componentCls;return(0,V.Z)({},"".concat(e,"-vertical"),Object.assign(Object.assign({},w2t(t,!1)),{height:"100%"}))},C2t=(0,se.Z)("Slider",(function(t){var e=(0,nn.TS)(t,{marginPart:(t.controlHeight-t.controlSize)/2,marginFull:t.controlSize/2,marginPartWithMark:t.controlHeightLG-t.controlSize});return[x2t(e),S2t(e),k2t(e)]}),(function(t){var e=t.controlHeightLG/4;return{controlSize:e,railSize:4,handleSize:e,handleSizeHover:t.controlHeightSM/2,dotSize:8,handleLineWidth:t.lineWidth+1,handleLineWidthHover:t.lineWidth+3,railBg:t.colorFillTertiary,railHoverBg:t.colorFillSecondary,trackBg:t.colorPrimaryBorder,trackHoverBg:t.colorPrimaryBorderHover,handleColor:t.colorPrimaryBorder,handleActiveColor:t.colorPrimary,dotBorderColor:t.colorBorderSecondary,dotActiveBorderColor:t.colorPrimaryBorder,trackBgDisabled:t.colorBgContainerDisabled}})),O2t=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(t);i=0;--r){var i=this.tryEntries[r],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var c=o.call(i,"catchLoc"),l=o.call(i,"finallyLoc");if(c&&l){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&o.call(r,"finallyLoc")&&this.prev=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),M(n),p}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var i=r.arg;M(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,n){return this.delegate={iterator:P(t),resultName:e,nextLoc:n},"next"===this.method&&(this.arg=void 0),p}},e}t.exports=i,t.exports.__esModule=!0,t.exports.default=t.exports},59371:function(t,e,n){var r=n(3931)();t.exports=r;try{regeneratorRuntime=r}catch(i){"object"==typeof globalThis?globalThis.regeneratorRuntime=r:Function("r","regeneratorRuntime = r")(r)}}}]); //# sourceMappingURL=component---src-pages-demo-tsx-54fd6da10fa870d8d843.js.map \ No newline at end of file diff --git a/lida/web/ui/component---src-pages-demo-tsx-54fd6da10fa870d8d843.js.map b/lida/web/ui/component---src-pages-demo-tsx-54fd6da10fa870d8d843.js.map index 470a5dbe3..38c6652ae 100644 --- a/lida/web/ui/component---src-pages-demo-tsx-54fd6da10fa870d8d843.js.map +++ b/lida/web/ui/component---src-pages-demo-tsx-54fd6da10fa870d8d843.js.map @@ -1 +1 @@ -{"version":3,"file":"component---src-pages-demo-tsx-54fd6da10fa870d8d843.js","mappings":";gGAAA,IAEIA,EAA4B,WAC9B,SAASA,IACPC,KAAKC,QAAU,CAAC,CAClB,CAiGA,OA1FAF,EAAaG,UAAUC,GAAK,SAAUC,EAAKC,EAAUC,GAQnD,OAPKN,KAAKC,QAAQG,KAChBJ,KAAKC,QAAQG,GAAO,IAEtBJ,KAAKC,QAAQG,GAAKG,KAAK,CACrBF,SAAUA,EACVC,OAAQA,IAEHN,IACT,EAMAD,EAAaG,UAAUI,KAAO,SAAUF,EAAKC,GAC3C,OAAOL,KAAKG,GAAGC,EAAKC,GAAU,EAChC,EAMAN,EAAaG,UAAUM,KAAO,SAAUJ,GAGtC,IAFA,IAAIK,EAAQT,KACRU,EAAO,GACFC,EAAK,EAAGA,EAAKC,UAAUC,OAAQF,IACtCD,EAAKC,EAAK,GAAKC,UAAUD,GAE3B,IAAIG,EAASd,KAAKC,QAAQG,IAAQ,GAC9BW,EAAiBf,KAAKC,QA1Cf,MA0CoC,GAE3Ce,EAAS,SAAgBC,GAE3B,IADA,IAAIJ,EAASI,EAAGJ,OACPK,EAAI,EAAGA,EAAIL,EAAQK,IAC1B,GAAKD,EAAGC,GAAR,CAGA,IAAIC,EAAKF,EAAGC,GACVb,EAAWc,EAAGd,SACPc,EAAGb,OAEVW,EAAGG,OAAOF,EAAG,GACK,IAAdD,EAAGJ,eACEJ,EAAMR,QAAQG,GAEvBS,IACAK,KAEFb,EAASgB,MAAMZ,EAAOC,EAZtB,CAcJ,EACAM,EAAOF,GACPE,EAAOD,EACT,EAMAhB,EAAaG,UAAUoB,IAAM,SAAUlB,EAAKC,GAC1C,GAAKD,EAIH,GAAKC,EAGE,CAIL,IAFA,IAAIS,EAASd,KAAKC,QAAQG,IAAQ,GAC9BmB,EAAWT,EAAOD,OACbK,EAAI,EAAGA,EAAIK,EAAUL,IACxBJ,EAAOI,GAAGb,WAAaA,IACzBS,EAAOM,OAAOF,EAAG,GACjBK,IACAL,KAGkB,IAAlBJ,EAAOD,eACFb,KAAKC,QAAQG,EAExB,aAfSJ,KAAKC,QAAQG,QAJtBJ,KAAKC,QAAU,CAAC,EAqBlB,OAAOD,IACT,EAEAD,EAAaG,UAAUsB,UAAY,WACjC,OAAOxB,KAAKC,OACd,EACOF,CACT,CArGgC,GAsGhC,+ECrGI0B,EAAoB,SAAUC,GAEhC,SAASD,EAAKE,GACZ,IAAIlB,EAAQiB,EAAOE,KAAK5B,OAASA,KAKjCS,EAAMoB,WAAY,EAClB,IAAIC,EAAarB,EAAMsB,gBAEvB,OADAtB,EAAMkB,KAAM,QAAIG,EAAYH,GACrBlB,CACT,CAyBA,OApCA,QAAUgB,EAAMC,GAiBhBD,EAAKvB,UAAU6B,cAAgB,WAC7B,MAAO,CAAC,CACV,EAEAN,EAAKvB,UAAU8B,IAAM,SAAUC,GAC7B,OAAOjC,KAAK2B,IAAIM,EAClB,EAEAR,EAAKvB,UAAUgC,IAAM,SAAUD,EAAME,GACnCnC,KAAK2B,IAAIM,GAAQE,CACnB,EAEAV,EAAKvB,UAAUkC,QAAU,WACvBpC,KAAK2B,IAAM,CACTE,WAAW,GAEb7B,KAAKsB,MACLtB,KAAK6B,WAAY,CACnB,EACOJ,CACT,CAtCwB,CAsCtB,KACF,8EClCEY,EACAC,yDATE,EAAQ,EAEVC,EAAU,EAEVC,EAAW,EAEXC,EAAY,IAIZC,EAAY,EACZC,EAAW,EACXC,EAAY,EACZC,EAA+B,iBAAhBC,aAA4BA,YAAYC,IAAMD,YAAcE,KAC3EC,EAA6B,iBAAXC,QAAuBA,OAAOC,sBAAwBD,OAAOC,sBAAsBC,KAAKF,QAAU,SAAUG,GAC5HC,WAAWD,EAAG,GAChB,EACK,SAASN,IACd,OAAOJ,IAAaM,EAASM,GAAWZ,EAAWE,EAAME,MAAQH,EACnE,CACA,SAASW,IACPZ,EAAW,CACb,CACO,SAASa,IACdxD,KAAKyD,MAAQzD,KAAK0D,MAAQ1D,KAAK2D,MAAQ,IACzC,CAsBO,SAASC,EAAMvD,EAAUwD,EAAOC,GACrC,IAAIC,EAAI,IAAIP,EAEZ,OADAO,EAAEC,QAAQ3D,EAAUwD,EAAOC,GACpBC,CACT,CAYA,SAASE,IACPtB,GAAYD,EAAYG,EAAME,OAASH,EACvC,EAAQL,EAAU,EAClB,KAdK,WACLQ,MACE,EAGF,IAFA,IACEmB,EADEH,EAAI1B,EAED0B,IACAG,EAAIvB,EAAWoB,EAAEL,QAAU,GAAGK,EAAEN,MAAM7B,KAAK,KAAMsC,GACtDH,EAAIA,EAAEJ,QAEN,CACJ,CAKIQ,EACF,CAAE,QACA,EAAQ,EAUZ,WACE,IAAIC,EAEFC,EADAC,EAAKjC,EAELyB,EAAOS,IACT,KAAOD,GACDA,EAAGb,OACDK,EAAOQ,EAAGZ,QAAOI,EAAOQ,EAAGZ,OAC/BU,EAAKE,EAAIA,EAAKA,EAAGX,QAEjBU,EAAKC,EAAGX,MAAOW,EAAGX,MAAQ,KAC1BW,EAAKF,EAAKA,EAAGT,MAAQU,EAAKhC,EAAWgC,GAGzC/B,EAAW8B,EACXI,EAAMV,EACR,CAzBIW,GACA9B,EAAW,CACb,CACF,CACA,SAAS+B,IACP,IAAI3B,EAAMF,EAAME,MACdc,EAAQd,EAAML,EACZmB,EAAQpB,IAAWG,GAAaiB,EAAOnB,EAAYK,EACzD,CAkBA,SAASyB,EAAMV,GACT,IACAvB,IAASA,EAAUoC,aAAapC,IACxBuB,EAAOnB,EACP,IACNmB,EAAOS,MAAUhC,EAAUe,WAAWW,EAAMH,EAAOjB,EAAME,MAAQH,IACjEJ,IAAUA,EAAWoC,cAAcpC,MAElCA,IAAUE,EAAYG,EAAME,MAAOP,EAAWqC,YAAYH,EAAMjC,IACrE,EAAQ,EAAGQ,EAASgB,IAExB,CAjFAT,EAAMtD,UAAY0D,EAAM1D,UAAY,CAClC4E,YAAatB,EACbQ,QAAS,SAAiB3D,EAAUwD,EAAOC,GACzC,GAAwB,mBAAbzD,EAAyB,MAAM,IAAI0E,UAAU,8BACxDjB,GAAgB,MAARA,EAAef,KAASe,IAAkB,MAATD,EAAgB,GAAKA,GACzD7D,KAAK2D,OAASrB,IAAatC,OAC1BsC,EAAUA,EAASqB,MAAQ3D,KAAUqC,EAAWrC,KACpDsC,EAAWtC,MAEbA,KAAKyD,MAAQpD,EACbL,KAAK0D,MAAQI,EACbU,GACF,EACAQ,KAAM,WACAhF,KAAKyD,QACPzD,KAAKyD,MAAQ,KACbzD,KAAK0D,MAAQa,IACbC,IAEJ,mDC7CSS,EAAc,SAAqBC,GAC5C,MAAO,CAAC,OAAQ,SAAU,YAAa,eAAeC,SAASD,EACjE,EACWE,EAAkB,SAAyBC,GACpD,MAAO,uBAAuBC,KAAKD,EACrC,ECCIE,EAAkB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GA6E/C,SAASC,EAAOC,EAAOC,EAAWC,GAChC,IAMIC,EANAC,EAAYH,EAAUG,UAG1B,GAAIF,EAAUE,EAFJH,EAAU7B,OAEe6B,EAAUI,QAC3C,OAAO,EAGT,IAAIC,EAAWL,EAAUK,SACrBC,EAASN,EAAUM,OACnBC,GAAS,OAAUD,GAGvB,GADAL,EAAUA,EAAUE,EAAYH,EAAU7B,MACtC6B,EAAUQ,OAGZN,EAAQK,EADRL,EAAQD,EAAUI,EAAWA,OAExB,CAEL,MADAH,EAAQD,EAAUI,GACN,GAUV,OALIL,EAAUS,QACZV,EAAMW,KAAKV,EAAUS,QAAQ,IAE7BV,EAAMW,KAAKV,EAAUW,UAEhB,EARPT,EAAQK,EAAOL,EAUnB,CACA,GAAIF,EAAUS,QAAS,CACrB,IAAIG,EAAQZ,EAAUS,QAAQP,GAC9BH,EAAMW,KAAKE,EACb,MAxGF,SAAiBb,EAAOC,EAAWE,GACjC,IAAIW,EAAS,CAAC,EACVC,EAAYd,EAAUc,UACxBH,EAAUX,EAAUW,QACtB,IAAIZ,EAAM5D,UAAV,CAGA,IAAI4E,EACJ,IAAK,IAAIC,KAAKL,EACZ,KAAK,QAAQG,EAAUE,GAAIL,EAAQK,IACjC,GAAU,SAANA,EAAc,CAChB,IAAIC,EAASN,EAAQK,GACjBE,EAAWJ,EAAUE,GACrBC,EAAO9F,OAAS+F,EAAS/F,QAC3B8F,EAAS,kBAAyBN,EAAQK,IAC1CE,EAAW,kBAAyBJ,EAAUE,IAC9CE,EAAW,iBAAwBA,EAAUD,GAC7CC,EAAW,aAAoBA,EAAUD,GACzCjB,EAAUc,UAAUK,KAAOD,EAC3BlB,EAAUW,QAAQQ,KAAOF,GACfjB,EAAUoB,gBACpBH,EAAS,kBAAyBN,EAAQK,IAC1CE,EAAW,kBAAyBJ,EAAUE,IAC9CE,EAAW,aAAoBA,EAAUD,GACzCjB,EAAUc,UAAUK,KAAOD,EAC3BlB,EAAUW,QAAQQ,KAAOF,EACzBjB,EAAUoB,eAAgB,GAE5BP,EAAOG,GAAK,GACZ,IAAK,IAAIxF,EAAI,EAAGA,EAAIyF,EAAO9F,OAAQK,IAAK,CAItC,IAHA,IAAI6F,EAAcJ,EAAOzF,GACrB8F,EAAgBJ,EAAS1F,GACzB+F,EAAa,GACRC,EAAI,EAAGA,EAAIH,EAAYlG,OAAQqG,KAClC,QAASH,EAAYG,KAAOF,IAAiB,QAASA,EAAcE,KACtET,GAAS,OAAYO,EAAcE,GAAIH,EAAYG,IACnDD,EAAW1G,KAAKkG,EAAOb,KAEvBqB,EAAW1G,KAAKwG,EAAYG,IAGhCX,EAAOG,GAAGnG,KAAK0G,EACjB,CACF,MAAO,GAAU,WAANP,EAAgB,CAKzB,IACIS,GADW,OAAiBX,EAAUE,IAAMnB,EAAiBc,EAAQK,IAAMnB,EAC3D6B,CAASxB,GAC7BW,EAAOG,GAAKS,CACd,MAAWlC,EAAYyB,IAAMtB,EAAgBiB,EAAQK,IACnDH,EAAOG,GAAKL,EAAQK,IACV,QAAWL,EAAQK,MAE7BD,GAAS,OAAYD,EAAUE,GAAIL,EAAQK,IAC3CH,EAAOG,GAAKD,EAAOb,IAIzBH,EAAMW,KAAKG,EAtDX,CAuDF,CA4CIc,CAAQ5B,EAAOC,EAAWE,GAE5B,OAAO,CACT,CACA,IAAI0B,EAAwB,WAK1B,SAASA,EAASC,GAKhBvH,KAAKwH,UAAY,GAKjBxH,KAAKyH,QAAU,EAKfzH,KAAK4D,MAAQ,KACb5D,KAAKuH,OAASA,CAChB,CA4FA,OAxFAD,EAASpH,UAAUwH,UAAY,WAC7B,IAEIjC,EACAkC,EACAjC,EAJAjF,EAAQT,KAKZA,KAAK4D,MAAQ,GAAc,SAAU+B,GAEnC,GADAlF,EAAMgH,QAAU9B,EACZlF,EAAM+G,UAAU3G,OAAS,EAAG,CAC9B,IAAK,IAAIK,EAAIT,EAAM+G,UAAU3G,OAAS,EAAGK,GAAK,EAAGA,IAE/C,IADAuE,EAAQhF,EAAM+G,UAAUtG,IACdW,UAERpB,EAAMmH,eAAe1G,OAFvB,CAKA,IAAKuE,EAAMoC,kBAET,IAAK,IAAIX,GADTS,EAAalC,EAAMzD,IAAI,eACCnB,OAAS,EAAGqG,GAAK,EAAGA,IAC1CxB,EAAYiC,EAAWT,GACV1B,EAAOC,EAAOC,EAAWC,KAEpCgC,EAAWvG,OAAO8F,EAAG,IACR,EACTxB,EAAUrF,UACZqF,EAAUrF,YAKQ,IAAtBsH,EAAW9G,QACbJ,EAAMmH,eAAe1G,EAhBvB,CAmBaT,EAAM8G,OAAOvF,IAAI,aAG9BvB,EAAM8G,OAAOO,MAEjB,CACF,GACF,EAIAR,EAASpH,UAAU6H,YAAc,SAAUtC,GACzCzF,KAAKwH,UAAUjH,KAAKkF,EACtB,EAIA6B,EAASpH,UAAU0H,eAAiB,SAAUI,GAC5ChI,KAAKwH,UAAUpG,OAAO4G,EAAO,EAC/B,EAIAV,EAASpH,UAAU+H,YAAc,WAC/B,QAASjI,KAAKwH,UAAU3G,MAC1B,EAIAyG,EAASpH,UAAU8E,KAAO,WACpBhF,KAAK4D,OACP5D,KAAK4D,MAAMoB,MAEf,EAKAsC,EAASpH,UAAUgI,kBAAoB,SAAUC,QACjC,IAAVA,IACFA,GAAQ,GAEVnI,KAAKwH,UAAUY,SAAQ,SAAUC,GAC/BA,EAASC,YAAYH,EACvB,IACAnI,KAAKwH,UAAY,GACjBxH,KAAKuH,OAAOO,MACd,EAIAR,EAASpH,UAAUqI,QAAU,WAC3B,OAAOvI,KAAKyH,OACd,EACOH,CACT,CAnH4B,GAoH5B,eCtOIkB,EAAS,CAAC,YAAa,UAAW,WAAY,WAAY,YAAa,YAAa,aAAc,aAAc,aAAc,YAAa,WAAY,YAAa,WAAY,YAAa,OAAQ,cAAe,cAWxN,SAASC,EAAgBC,EAAQC,EAAMC,GACrCA,EAAS3G,KAAO0G,EAChBC,EAASF,OAASA,EAClBE,EAASC,cAAgBH,EACzBE,EAASE,eAAiBJ,EAC1BA,EAAOlI,KAAKmI,EAAMC,EACpB,CAEA,SAASG,EAAYC,EAAWL,EAAMC,GACpC,GAAIA,EAASK,QAAS,CACpB,IAAIC,OAAgB,EAChBC,GAAc,EASlB,GARa,eAATR,GACFO,EAAgBN,EAASQ,UACzBD,GAAc,GACI,eAATR,IACTQ,GAAc,EACdD,EAAgBN,EAASS,SAGvBL,EAAUM,YAAcH,EAC1B,OAGF,GAAID,IAAiB,QAASF,EAAWE,GAGvC,YADAN,EAASK,SAAU,GAIrBL,EAAS3G,KAAO0G,EAChBC,EAASC,cAAgBG,EACzBJ,EAASE,eAAiBE,EAC1BA,EAAUxI,KAAKmI,EAAMC,EACvB,CACF,CACA,IAAIW,EAA+B,WACjC,SAASA,EAAgB5H,GACvB,IAAIlB,EAAQT,KAEZA,KAAKwJ,cAAgB,KACrBxJ,KAAKyJ,UAAW,EAEhBzJ,KAAK0J,aAAe,KACpB1J,KAAK2J,eAAiB,KACtB3J,KAAK4J,eAAiB,KAEtB5J,KAAK6J,eAAiB,SAAUC,GAC9B,IAAInB,EAAOmB,EAAGnB,KACdlI,EAAMsJ,cAAcpB,EAAMmB,EAC5B,EAEA9J,KAAKgK,gBAAkB,SAAUF,GAG/B,GAFarJ,EAAM8G,OACHvF,IAAI,QACT8H,EAAGpB,SAERjI,EAAMgJ,UAAYhJ,EAAMiJ,cAAc,CACxC,IAAIO,EAAYxJ,EAAMyJ,cAAcJ,GAEhCrJ,EAAMgJ,UACRhJ,EAAM0J,WAAW,OAAQL,EAAIG,EAAWxJ,EAAM+I,cAQlD,CAEJ,EAEAxJ,KAAKoK,mBAAqB,SAAUN,GAGlC,GAFarJ,EAAM8G,OACHvF,IAAI,QACT8H,EAAGpB,QAERjI,EAAMgJ,SAAU,CAClB,IAAIQ,EAAYxJ,EAAMyJ,cAAcJ,GAChCrJ,EAAM+I,eAER/I,EAAM0J,WAAW,OAAQL,EAAIG,EAAW,MAE1CxJ,EAAM0J,WAAW,UAAWL,EAAIG,EAAWxJ,EAAM+I,eACjD/I,EAAM4J,WAAW5J,EAAM+I,cAAeS,EAAWH,EACnD,CAEJ,EACA9J,KAAKuH,OAAS5F,EAAI4F,MACpB,CAySA,OAxSAgC,EAAgBrJ,UAAUoK,KAAO,WAC/BtK,KAAKuK,aACP,EAEAhB,EAAgBrJ,UAAUqK,YAAc,WACtC,IAAI9J,EAAQT,KACRwK,EAAKxK,KAAKuH,OAAOvF,IAAI,OACzB,QAAKwG,GAAQ,SAAUiC,GACrBD,EAAGE,iBAAiBD,EAAWhK,EAAMoJ,eACvC,IACIc,WAGFA,SAASD,iBAAiB,YAAa1K,KAAKgK,iBAE5CW,SAASD,iBAAiB,UAAW1K,KAAKoK,oBAE9C,EAEAb,EAAgBrJ,UAAU0K,aAAe,WACvC,IAAInK,EAAQT,KACRwK,EAAKxK,KAAKuH,OAAOvF,IAAI,OACzB,QAAKwG,GAAQ,SAAUiC,GACrBD,EAAGK,oBAAoBJ,EAAWhK,EAAMoJ,eAC1C,IACIc,WACFA,SAASE,oBAAoB,YAAa7K,KAAKgK,iBAC/CW,SAASE,oBAAoB,UAAW7K,KAAKoK,oBAEjD,EACAb,EAAgBrJ,UAAU4K,aAAe,SAAUnC,EAAMoC,EAAOC,EAAOtC,EAAQU,EAAWC,GACxF,IAAIT,EAAW,IAAI,IAAWD,EAAMoC,GASpC,OARAnC,EAASQ,UAAYA,EACrBR,EAASS,QAAUA,EACnBT,EAASqC,EAAID,EAAMC,EACnBrC,EAASsC,EAAIF,EAAME,EACnBtC,EAASuC,QAAUH,EAAMG,QACzBvC,EAASwC,QAAUJ,EAAMI,QACzBxC,EAASyC,gBAAgB9K,KAAKmI,GAEvBE,CACT,EAEAW,EAAgBrJ,UAAUoL,UAAY,SAAUN,EAAOlB,GACrD,OAAO9J,KAAKuH,OAAOgE,SAASP,EAAMC,EAAGD,EAAME,EAAGpB,EAChD,EAEAP,EAAgBrJ,UAAUgK,cAAgB,SAAUJ,GAClD,IAAIvC,EAASvH,KAAKuH,OACdiE,EAAcjE,EAAOkE,iBAAiB3B,GACtCkB,EAAQzD,EAAOmE,gBAAgB5B,GACnC,MAAO,CACLmB,EAAGD,EAAMC,EACTC,EAAGF,EAAME,EACTC,QAASK,EAAYP,EACrBG,QAASI,EAAYN,EAEzB,EAEA3B,EAAgBrJ,UAAU6J,cAAgB,SAAUpB,EAAMmB,GACxD,IAAIG,EAAYjK,KAAKkK,cAAcJ,GAE/BrE,EAAQzF,KAAKsL,UAAUrB,EAAWH,GAClC6B,EAAS3L,KAAK,MAAQ2I,GACtBiD,GAAc,EAClB,GAAID,EACFA,EAAO/J,KAAK5B,KAAMiK,EAAWxE,EAAOqE,OAC/B,CACL,IAAI+B,EAAW7L,KAAK0J,aAEP,eAATf,GAAkC,cAATA,GAAiC,cAATA,GACnD3I,KAAKmK,WAAWxB,EAAMmB,EAAIG,EAAW,KAAM,KAAMxE,GAC7CA,GACFzF,KAAKmK,WAAWxB,EAAMmB,EAAIG,EAAWxE,EAAO,KAAMA,GAGvC,eAATkD,GAAyB3I,KAAKwJ,eAEhCxJ,KAAKmK,WAAW,YAAaL,EAAIG,EAAW,OAE5B,eAATtB,GAAkC,cAATA,GAAiC,aAATA,GAC1DiD,GAAc,EACVC,GACF7L,KAAKmK,WAAWxB,EAAMmB,EAAIG,EAAW4B,EAAUA,EAAU,MAG3D7L,KAAKmK,WAAWxB,EAAMmB,EAAIG,EAAW,KAAM4B,EAAU,MACxC,eAATlD,GAAyB3I,KAAKwJ,eAChCxJ,KAAKmK,WAAW,YAAaL,EAAIG,EAAW,OAG9CjK,KAAKmK,WAAWxB,EAAMmB,EAAIG,EAAWxE,EAAO,KAAM,KAEtD,CAMA,GAJKmG,IACH5L,KAAK0J,aAAejE,GAGlBA,IAAUA,EAAMzD,IAAI,aAAc,CACpC,IAAIuF,EAASvH,KAAKuH,OACTA,EAAOvF,IAAI,MACjB8J,MAAMC,OAAStG,EAAMW,KAAK,WAAamB,EAAOvF,IAAI,SACvD,CACF,EAEAuH,EAAgBrJ,UAAU8L,aAAe,SAAU/B,EAAWxE,EAAOsF,GAlNnD,IAoNZA,EAAMkB,SACRjM,KAAK2J,eAAiBlE,EACtBzF,KAAK4J,eAAiBK,EACtBjK,KAAKkM,mBAAqBnB,EAAMoB,WAElCnM,KAAKmK,WAAW,YAAaY,EAAOd,EAAWxE,EAAO,KAAM,KAC9D,EAGA8D,EAAgBrJ,UAAUkM,qBAAuB,SAAUrB,EAAOd,EAAWb,EAAWC,GACtF,IAAImB,EAAKxK,KAAKuH,OAAOvF,IAAI,MACrBoH,IAAcC,IACZD,IACFpJ,KAAKmK,WAAW,WAAYY,EAAOd,EAAWb,EAAWA,EAAWC,GACpErJ,KAAKmK,WAAW,aAAcY,EAAOd,EAAWb,EAAWA,EAAWC,GAEjEA,IAAWA,EAAQrH,IAAI,eAC1BwI,EAAGsB,MAAMC,OAAS/L,KAAKuH,OAAOvF,IAAI,YAGlCqH,IACFrJ,KAAKmK,WAAW,YAAaY,EAAOd,EAAWZ,EAASD,EAAWC,GACnErJ,KAAKmK,WAAW,aAAcY,EAAOd,EAAWZ,EAASD,EAAWC,IAG1E,EAEAE,EAAgBrJ,UAAUmM,oBAAsB,SAAUtB,EAAOd,EAAWb,EAAWC,EAASiD,GAC1FjD,GACEA,IAAYD,IACVA,GACFpJ,KAAKmK,WAAW,YAAaY,EAAOd,EAAWb,EAAWA,EAAWC,GAEvErJ,KAAKmK,WAAW,YAAaY,EAAOd,EAAWZ,EAASD,EAAWC,IAEhEiD,GACHtM,KAAKmK,WAAW,WAAYY,EAAOd,EAAWZ,IAEvCD,GAGTpJ,KAAKmK,WAAW,YAAaY,EAAOd,EAAWb,EAAWA,EAAWC,GAEnEiD,GACFtM,KAAKmK,WAAW,WAAYY,EAAOd,EAAWZ,EAElD,EAEAE,EAAgBrJ,UAAUmK,WAAa,SAAUb,EAAeS,EAAWc,GACrEvB,IACFA,EAActH,IAAI,WAAW,GAC7BlC,KAAKwJ,cAAgB,MAEvBxJ,KAAKyJ,UAAW,EAEhB,IAAIhE,EAAQzF,KAAKsL,UAAUrB,EAAWc,GAElCtF,IAAU+D,GACZxJ,KAAKoM,qBAAqBrB,EAAOd,EAAWT,EAAe/D,GAE7DzF,KAAK0J,aAAejE,CACtB,EAEA8D,EAAgBrJ,UAAUqM,WAAa,SAAUtC,EAAWxE,EAAOsF,GAGjE,GAtRgB,IAsRZA,EAAMkB,OAA0B,CAClC,IAAIzC,EAAgBxJ,KAAKwJ,cACrBxJ,KAAKyJ,UAEHD,GACFxJ,KAAKmK,WAAW,OAAQY,EAAOd,EAAWxE,GAE5CzF,KAAKmK,WAAW,UAAWY,EAAOd,EAAWT,GAC7CxJ,KAAKqK,WAAWb,EAAeS,EAAWc,KAE1C/K,KAAKmK,WAAW,UAAWY,EAAOd,EAAWxE,GACzCA,IAAUzF,KAAK2J,gBACjB3J,KAAKmK,WAAW,QAASY,EAAOd,EAAWxE,GAE7CzF,KAAK2J,eAAiB,KACtB3J,KAAK4J,eAAiB,KAE1B,CACF,EAEAL,EAAgBrJ,UAAUsM,YAAc,SAAUvC,EAAWxE,EAAOsF,GAClEA,EAAM0B,iBACN,IAAIZ,EAAW7L,KAAK0J,aACpB1J,KAAKqM,oBAAoBtB,EAAOd,EAAW4B,EAAUpG,GAAO,EAC9D,EAEA8D,EAAgBrJ,UAAUwM,aAAe,SAAUzC,EAAWxE,EAAOsF,GACnE,IAAIxD,EAASvH,KAAKuH,OACdsE,EAAW7L,KAAK0J,aAChBF,EAAgBxJ,KAAKwJ,cAEzB,GAAIxJ,KAAKyJ,SAEHD,GAEFxJ,KAAKqM,oBAAoBtB,EAAOd,EAAW4B,EAAUpG,GAAO,GAI9DzF,KAAKmK,WAAW,OAAQY,EAAOd,EAAWT,OACrC,CACL,IAAII,EAAiB5J,KAAK4J,eAC1B,GAAIA,EAAgB,CAElB,IAAID,EAAiB3J,KAAK2J,eAEtBgD,EADM5B,EAAMoB,UACOnM,KAAKkM,mBACxBU,EAAKhD,EAAeuB,QAAUlB,EAAUkB,QACxC0B,EAAKjD,EAAewB,QAAUnB,EAAUmB,QAExCuB,EAAa,KADNC,EAAKA,EAAKC,EAAKA,EAxUf,GA0ULlD,GAAkBA,EAAe3H,IAAI,eAEvCwH,EAAgBxJ,KAAK2J,gBACPzH,IAAI,WAAW,GAC7BlC,KAAKwJ,cAAgBA,EACrBxJ,KAAKyJ,UAAW,EAChBzJ,KAAKmK,WAAW,YAAaY,EAAOd,EAAWT,GAE/CxJ,KAAK2J,eAAiB,KACtB3J,KAAK4J,eAAiB,OACZD,GAAkBpC,EAAOvF,IAAI,cAEvChC,KAAKyJ,UAAW,EAChBzJ,KAAKmK,WAAW,YAAaY,EAAOd,EAAW,MAE/CjK,KAAK2J,eAAiB,KACtB3J,KAAK4J,eAAiB,OAEtB5J,KAAKoM,qBAAqBrB,EAAOd,EAAW4B,EAAUpG,GACtDzF,KAAKmK,WAAW,YAAaY,EAAOd,EAAWxE,KAGjDzF,KAAKoM,qBAAqBrB,EAAOd,EAAW4B,EAAUpG,GACtDzF,KAAKmK,WAAW,YAAaY,EAAOd,EAAWxE,GAEnD,MAEEzF,KAAKoM,qBAAqBrB,EAAOd,EAAW4B,EAAUpG,GAEtDzF,KAAKmK,WAAW,YAAaY,EAAOd,EAAWxE,EAEnD,CACF,EAEA8D,EAAgBrJ,UAAUiK,WAAa,SAAUxB,EAAMoC,EAAOd,EAAWxE,EAAO2D,EAAWC,GACzF,IAAIT,EAAW5I,KAAK8K,aAAanC,EAAMoC,EAAOd,EAAWxE,EAAO2D,EAAWC,GAE3E,GAAI5D,EAAO,CACTmD,EAASnD,MAAQA,EAEjBgD,EAAgBhD,EAAOkD,EAAMC,GAG7B,IAFA,IAAIkE,EAAWrH,EAAMsH,YAEdD,GAELA,EAASE,eAAerE,EAAMC,GAEzBA,EAASqE,oBACZlE,EAAY+D,EAAUnE,EAAMC,GAE9BA,EAASyC,gBAAgB9K,KAAKuM,GAC9BA,EAAWA,EAASC,WAExB,KAAO,CAILtE,EAFazI,KAAKuH,OAEMoB,EAAMC,EAChC,CACF,EACAW,EAAgBrJ,UAAUkC,QAAU,WAElCpC,KAAK4K,eAEL5K,KAAKuH,OAAS,KACdvH,KAAK0J,aAAe,KACpB1J,KAAKwJ,cAAgB,KACrBxJ,KAAK4J,eAAiB,KACtB5J,KAAK2J,eAAiB,KACtB3J,KAAKkM,mBAAqB,IAC5B,EACO3C,CACT,CAhWmC,GAiWnC,IClZI2D,GAAU,UACVC,EAAYD,GAA4B,YAAjBA,EAAQjL,KAC/BmL,EAAsB,SAAU1L,GAElC,SAAS0L,EAAOzL,GACd,IAAIlB,EAAQiB,EAAOE,KAAK5B,KAAM2B,IAAQ3B,KAKtC,OAJAS,EAAM4M,gBACN5M,EAAM6M,UACN7M,EAAM8M,aACN9M,EAAM+M,eACC/M,CACT,CAoMA,OA5MA,QAAU2M,EAAQ1L,GASlB0L,EAAOlN,UAAU6B,cAAgB,WAC/B,IAAIJ,EAAMD,EAAOxB,UAAU6B,cAAcH,KAAK5B,MAK9C,OAHA2B,EAAY,OAAI,UAEhBA,EAAyB,qBAAI,EACtBA,CACT,EAKAyL,EAAOlN,UAAUmN,cAAgB,WAC/B,IAAIrE,EAAYhJ,KAAKgC,IAAI,cACrB,QAASgH,KACXA,EAAY2B,SAAS8C,eAAezE,GACpChJ,KAAKkC,IAAI,YAAa8G,GAE1B,EAKAoE,EAAOlN,UAAUoN,QAAU,WACzB,IAAI9C,EAAKxK,KAAK0N,YACd1N,KAAKkC,IAAI,KAAMsI,GAECxK,KAAKgC,IAAI,aACf2L,YAAYnD,GAEtBxK,KAAK4N,WAAW5N,KAAKgC,IAAI,SAAUhC,KAAKgC,IAAI,UAC9C,EAKAoL,EAAOlN,UAAUqN,WAAa,WAC5B,IAAIM,EAAkB,IAAI,EAAgB,CACxCtG,OAAQvH,OAEV6N,EAAgBvD,OAChBtK,KAAKkC,IAAI,kBAAmB2L,EAC9B,EAKAT,EAAOlN,UAAUsN,aAAe,WAC9B,IAAIM,EAAW,IAAI,EAAS9N,MAC5BA,KAAKkC,IAAI,WAAY4L,EACvB,EAOAV,EAAOlN,UAAU0N,WAAa,SAAUG,EAAOC,GAC7C,IAAIxD,EAAKxK,KAAKgC,IAAI,MACd,OACFwI,EAAGsB,MAAMiC,MAAQA,EAzEP,KA0EVvD,EAAGsB,MAAMkC,OAASA,EA1ER,KA4Ed,EAEAZ,EAAOlN,UAAU+N,WAAa,SAAUF,EAAOC,GAC7ChO,KAAK4N,WAAWG,EAAOC,GACvBhO,KAAKkC,IAAI,QAAS6L,GAClB/N,KAAKkC,IAAI,SAAU8L,GACnBhO,KAAKkO,eAAe,aACtB,EAKAd,EAAOlN,UAAUiO,YAAc,WAC7B,OAAOnO,KAAKgC,IAAI,WAClB,EAKAoL,EAAOlN,UAAUkO,UAAY,WAC3B,OAAOpO,KAAKgC,IAAI,SAClB,EAKAoL,EAAOlN,UAAUmO,UAAY,SAAUtC,GACrC/L,KAAKkC,IAAI,SAAU6J,GACnB,IAAIvB,EAAKxK,KAAKgC,IAAI,MACd,MAAawI,IAEfA,EAAGsB,MAAMC,OAASA,EAEtB,EAEAqB,EAAOlN,UAAUwL,gBAAkB,SAAU5B,GAE3C,GAD0B9J,KAAKgC,IAAI,uBACV,CAEvB,GAAImL,KAAc,QAAMrD,EAAGwE,SAAWxE,EAAGwE,SAAWxE,EAAGyE,QACrD,MAAO,CACLtD,EAAGnB,EAAGwE,OACNpD,EAAGpB,EAAG0E,QAGV,KAAK,QAAM1E,EAAGyE,SAEZ,MAAO,CACLtD,EAAGnB,EAAGyE,QACNrD,EAAGpB,EAAG2E,QAGZ,CAGA,IAAItN,EAAKnB,KAAKyL,iBAAiB3B,GAC7BqB,EAAUhK,EAAG8J,EACbG,EAAUjK,EAAG+J,EACf,OAAOlL,KAAK0O,iBAAiBvD,EAASC,EACxC,EAEAgC,EAAOlN,UAAUuL,iBAAmB,SAAU3B,GAC5C,IAAI6E,EAAa7E,EAQjB,OAPIA,EAAG8E,UAEHD,EADc,aAAZ7E,EAAGnB,KACQmB,EAAG+E,eAAe,GAElB/E,EAAG8E,QAAQ,IAGrB,CACL3D,EAAG0D,EAAWxD,QACdD,EAAGyD,EAAWvD,QAElB,EAEAgC,EAAOlN,UAAUwO,iBAAmB,SAAUvD,EAASC,GACrD,IACI0D,EADK9O,KAAKgC,IAAI,MACJ+M,wBACd,MAAO,CACL9D,EAAGE,EAAU2D,EAAKE,KAClB9D,EAAGE,EAAU0D,EAAKG,IAEtB,EAEA7B,EAAOlN,UAAUgP,iBAAmB,SAAUjE,EAAGC,GAC/C,IACI4D,EADK9O,KAAKgC,IAAI,MACJ+M,wBACd,MAAO,CACL9D,EAAGA,EAAI6D,EAAKE,KACZ9D,EAAGA,EAAI4D,EAAKG,IAEhB,EAEA7B,EAAOlN,UAAU4H,KAAO,WAAa,EAKrCsF,EAAOlN,UAAUiP,UAAY,WAC3B,IAAI3E,EAAKxK,KAAKgC,IAAI,MAClBwI,EAAG4E,WAAWC,YAAY7E,EAC5B,EAKA4C,EAAOlN,UAAUoP,YAAc,WACPtP,KAAKgC,IAAI,mBACfI,SAClB,EACAgL,EAAOlN,UAAUoJ,SAAW,WAC1B,OAAO,CACT,EACA8D,EAAOlN,UAAU6M,UAAY,WAC3B,OAAO,IACT,EACAK,EAAOlN,UAAUkC,QAAU,WACzB,IAAI0L,EAAW9N,KAAKgC,IAAI,YACpBhC,KAAKgC,IAAI,eAGbhC,KAAKuP,QAEDzB,GAEFA,EAAS9I,OAEXhF,KAAKsP,cACLtP,KAAKmP,YACLzN,EAAOxB,UAAUkC,QAAQR,KAAK5B,MAChC,EACOoN,CACT,CA9M0B,CA8MxB,KACF,6ECrNIoC,EAAY,CAAC,EACbC,EAAQ,SAMZ,SAASC,EAAUC,EAASpI,GAE1B,GADAoI,EAAQzN,IAAI,SAAUqF,GAClBoI,EAAQC,UAAW,CACrB,IAAIC,EAAWF,EAAQ3N,IAAI,YACvB6N,EAAShP,QACXgP,EAASzH,SAAQ,SAAU0H,GACzBJ,EAAUI,EAAOvI,EACnB,GAEJ,CACF,CAMA,SAASwI,EAAYJ,EAAS7B,GAE5B,GADA6B,EAAQzN,IAAI,WAAY4L,GACpB6B,EAAQC,UAAW,CACrB,IAAIC,EAAWF,EAAQ3N,IAAI,YACvB6N,EAAShP,QACXgP,EAASzH,SAAQ,SAAU0H,GACzBC,EAAYD,EAAOhC,EACrB,GAEJ,CACF,CAwBA,IAAIkC,EAAyB,SAAUtO,GAErC,SAASsO,IACP,OAAkB,OAAXtO,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CA4ZA,OA/ZA,QAAUgQ,EAAWtO,GAIrBsO,EAAU9P,UAAUoJ,SAAW,WAC7B,OAAO,CACT,EAEA0G,EAAU9P,UAAU+P,QAAU,WAE5B,IAAIC,EAAO3L,IACP4L,GAAQ5L,IACR6L,EAAO7L,IACP8L,GAAQ9L,IAERsL,EAAW7P,KAAKsQ,cAAcC,QAAO,SAAUT,GACjD,OAAOA,EAAM9N,IAAI,cAAgB8N,EAAMF,WAAaE,EAAMF,WAAaE,EAAMQ,cAAczP,OAAS,EACtG,IAqCA,OApCIgP,EAAShP,OAAS,GACpB,QAAKgP,GAAU,SAAUC,GACvB,IAAI3O,EAAK2O,EAAMG,UACbO,EAAYrP,EAAG+O,KACfO,EAAYtP,EAAGgP,KACfO,EAAYvP,EAAGiP,KACfO,EAAYxP,EAAGkP,KACbG,EAAYN,IACdA,EAAOM,GAELC,EAAYN,IACdA,EAAOM,GAELC,EAAYN,IACdA,EAAOM,GAELC,EAAYN,IACdA,EAAOM,EAEX,KAEAT,EAAO,EACPC,EAAO,EACPC,EAAO,EACPC,EAAO,GAEC,CACRpF,EAAGiF,EACHhF,EAAGkF,EACHF,KAAMA,EACNE,KAAMA,EACND,KAAMA,EACNE,KAAMA,EACNtC,MAAOoC,EAAOD,EACdlC,OAAQqC,EAAOD,EAGnB,EAEAJ,EAAU9P,UAAU0Q,cAAgB,WAClC,IAAIV,EAAO3L,IACP4L,GAAQ5L,IACR6L,EAAO7L,IACP8L,GAAQ9L,IAERsL,EAAW7P,KAAKsQ,cAAcC,QAAO,SAAUT,GACjD,OAAOA,EAAM9N,IAAI,cAAgB8N,EAAMF,WAAaE,EAAMF,WAAaE,EAAMQ,cAAczP,OAAS,EACtG,IAqCA,OApCIgP,EAAShP,OAAS,GACpB,QAAKgP,GAAU,SAAUC,GACvB,IAAI3O,EAAK2O,EAAMc,gBACbJ,EAAYrP,EAAG+O,KACfO,EAAYtP,EAAGgP,KACfO,EAAYvP,EAAGiP,KACfO,EAAYxP,EAAGkP,KACbG,EAAYN,IACdA,EAAOM,GAELC,EAAYN,IACdA,EAAOM,GAELC,EAAYN,IACdA,EAAOM,GAELC,EAAYN,IACdA,EAAOM,EAEX,KAEAT,EAAO,EACPC,EAAO,EACPC,EAAO,EACPC,EAAO,GAEC,CACRpF,EAAGiF,EACHhF,EAAGkF,EACHF,KAAMA,EACNE,KAAMA,EACND,KAAMA,EACNE,KAAMA,EACNtC,MAAOoC,EAAOD,EACdlC,OAAQqC,EAAOD,EAGnB,EACAJ,EAAU9P,UAAU6B,cAAgB,WAClC,IAAIJ,EAAMD,EAAOxB,UAAU6B,cAAcH,KAAK5B,MAE9C,OADA2B,EAAc,SAAI,GACXA,CACT,EACAqO,EAAU9P,UAAU2Q,aAAe,SAAU5O,EAAME,EAAO2O,GAExD,GADApP,EAAOxB,UAAU2Q,aAAajP,KAAK5B,KAAMiC,EAAME,EAAO2O,GACzC,WAAT7O,EAAmB,CACrB,IAAI8O,EAAc/Q,KAAKgR,iBACvBhR,KAAKiR,oBAAoBF,EAC3B,CACF,EAEAf,EAAU9P,UAAUgR,YAAc,SAAUC,GAC1C,IAAIC,EAAiBpR,KAAKgR,iBAC1BtP,EAAOxB,UAAUgR,YAAYtP,KAAK5B,KAAMmR,GACxC,IAAIJ,EAAc/Q,KAAKgR,iBAGnBD,IAAgBK,GAGpBpR,KAAKiR,oBAAoBF,EAC3B,EAEAf,EAAU9P,UAAU+Q,oBAAsB,SAAUF,GAClD,IAAIlB,EAAW7P,KAAKsQ,eACpB,QAAKT,GAAU,SAAUC,GACvBA,EAAMoB,YAAYH,EACpB,GACF,EAEAf,EAAU9P,UAAUmR,SAAW,WAE7B,IADA,IAAI3Q,EAAO,GACFC,EAAK,EAAGA,EAAKC,UAAUC,OAAQF,IACtCD,EAAKC,GAAMC,UAAUD,GAEvB,IAAIgI,EAAOjI,EAAK,GACZiB,EAAMjB,EAAK,IACX,QAASiI,GACXhH,EAAMgH,EAENhH,EAAU,KAAIgH,EAEhB,IAAI2I,EAAY9B,EAAU7N,EAAIgH,MACzB2I,IACHA,GAAY,QAAW3P,EAAIgH,MAC3B6G,EAAU7N,EAAIgH,MAAQ2I,GAExB,IACI7L,EAAQ,IADIzF,KAAKuR,eACKD,IAAW3P,GAErC,OADA3B,KAAKwR,IAAI/L,GACFA,CACT,EACAuK,EAAU9P,UAAUuR,SAAW,WAE7B,IADA,IAAI/Q,EAAO,GACFC,EAAK,EAAGA,EAAKC,UAAUC,OAAQF,IACtCD,EAAKC,GAAMC,UAAUD,GAEvB,IAEI+Q,EAFAC,EAAajR,EAAK,GACpBiB,EAAMjB,EAAK,GAEb,IAAI,QAAWiR,GAEXD,EAAQ,IAAIC,EADVhQ,GAGqB,CAErBiQ,OAAQ5R,WAGP,CACL,IAAI6R,EAASF,GAAc,CAAC,EAE5BD,EAAQ,IADY1R,KAAK8R,eACjB,CAAkBD,EAC5B,CAEA,OADA7R,KAAKwR,IAAIE,GACFA,CACT,EACA1B,EAAU9P,UAAU6R,UAAY,WAO9B,OALI/R,KAAKsJ,WACEtJ,KAEAA,KAAKgC,IAAI,SAGtB,EACAgO,EAAU9P,UAAUqL,SAAW,SAAUN,EAAGC,EAAGpB,GAE7C,KAAK,QAAe9J,MAClB,OAAO,KAET,IACIyF,EADAoK,EAAW7P,KAAKsQ,cAGpB,GAAKtQ,KAAKsJ,WAQR7D,EAAQzF,KAAKgS,WAAWnC,EAAU5E,EAAGC,EAAGpB,OARpB,CACpB,IAAImI,EAAI,CAAChH,EAAGC,EAAG,GAEf+G,EAAIjS,KAAKkS,iBAAiBD,GACrBjS,KAAKmS,UAAUF,EAAE,GAAIA,EAAE,MAC1BxM,EAAQzF,KAAKgS,WAAWnC,EAAUoC,EAAE,GAAIA,EAAE,GAAInI,GAElD,CAGA,OAAOrE,CACT,EACAuK,EAAU9P,UAAU8R,WAAa,SAAUnC,EAAU5E,EAAGC,EAAGpB,GAEzD,IADA,IAAIrE,EAAQ,KACHvE,EAAI2O,EAAShP,OAAS,EAAGK,GAAK,EAAGA,IAAK,CAC7C,IAAI4O,EAAQD,EAAS3O,GAQrB,IAPI,QAAe4O,KACbA,EAAMF,UACRnK,EAAQqK,EAAMvE,SAASN,EAAGC,EAAGpB,GACpBgG,EAAMsC,MAAMnH,EAAGC,KACxBzF,EAAQqK,IAGRrK,EACF,KAEJ,CACA,OAAOA,CACT,EACAuK,EAAU9P,UAAUsR,IAAM,SAAU7B,GAClC,IAAIpI,EAASvH,KAAK+R,YACdlC,EAAW7P,KAAKsQ,cAChBxC,EAAW9N,KAAKgC,IAAI,YACpBqQ,EAAY1C,EAAQ5C,YACpBsF,GA9PR,SAAqBrJ,EAAW2G,EAASvN,QACvB,IAAZA,IACFA,GAAU,GAGRA,EACFuN,EAAQvN,WAERuN,EAAQzN,IAAI,SAAU,MACtByN,EAAQzN,IAAI,SAAU,QAExB,QAAgB8G,EAAUsH,cAAeX,EAC3C,CAmPMN,CAAYgD,EAAW1C,GAAS,GAElCA,EAAQzN,IAAI,SAAUlC,MAClBuH,GACFmI,EAAUC,EAASpI,GAEjBuG,GACFiC,EAAYJ,EAAS7B,GAEvB+B,EAAStP,KAAKoP,GACdA,EAAQzB,eAAe,OACvBlO,KAAKsS,oBAAoB3C,EAC3B,EAEAK,EAAU9P,UAAUoS,oBAAsB,SAAU3C,GAClD,IAAIoB,EAAc/Q,KAAKgR,iBAEnBD,GACFpB,EAAQuB,YAAYH,EAExB,EACAf,EAAU9P,UAAUoQ,YAAc,WAChC,OAAOtQ,KAAKgC,IAAI,WAClB,EACAgO,EAAU9P,UAAUqS,KAAO,WACzB,IA3QiBC,EA2Qb3C,EAAW7P,KAAKsQ,eAEpB,QAAKT,GAAU,SAAUC,EAAO9H,GAE9B,OADA8H,EAAML,GAASzH,EACR8H,CACT,IACAD,EAAS0C,MAjRQC,EAiRS,SAAUC,EAAMC,GACxC,OAAOD,EAAKzQ,IAAI,UAAY0Q,EAAK1Q,IAAI,SACvC,EAlRK,SAAUgN,EAAM2D,GACrB,IAAIC,EAASJ,EAAQxD,EAAM2D,GAC3B,OAAkB,IAAXC,EAAe5D,EAAKS,GAASkD,EAAMlD,GAASmD,CACrD,IAgRE5S,KAAKkO,eAAe,OACtB,EACA8B,EAAU9P,UAAUqP,MAAQ,WAE1B,GADAvP,KAAKkC,IAAI,YAAY,IACjBlC,KAAK6B,UAAT,CAIA,IADA,IAAIgO,EAAW7P,KAAKsQ,cACXpP,EAAI2O,EAAShP,OAAS,EAAGK,GAAK,EAAGA,IACxC2O,EAAS3O,GAAGkB,UAGdpC,KAAKkC,IAAI,WAAY,IACrBlC,KAAKkO,eAAe,SACpBlO,KAAKkC,IAAI,YAAY,EARrB,CASF,EACA8N,EAAU9P,UAAUkC,QAAU,WACxBpC,KAAKgC,IAAI,eAGbhC,KAAKuP,QACL7N,EAAOxB,UAAUkC,QAAQR,KAAK5B,MAChC,EAKAgQ,EAAU9P,UAAU2S,SAAW,WAC7B,OAAO7S,KAAK8S,gBAAgB,EAC9B,EAKA9C,EAAU9P,UAAU6S,QAAU,WAC5B,IAAIlD,EAAW7P,KAAKsQ,cACpB,OAAOtQ,KAAK8S,gBAAgBjD,EAAShP,OAAS,EAChD,EAKAmP,EAAU9P,UAAU4S,gBAAkB,SAAU9K,GAE9C,OADehI,KAAKsQ,cACJtI,EAClB,EAKAgI,EAAU9P,UAAU8S,SAAW,WAE7B,OADehT,KAAKsQ,cACJzP,MAClB,EAMAmP,EAAU9P,UAAU+S,QAAU,SAAUtD,GAEtC,OADe3P,KAAKsQ,cACJ4C,QAAQvD,IAAY,CACtC,EAMAK,EAAU9P,UAAUmP,YAAc,SAAUM,EAASvN,QACnC,IAAZA,IACFA,GAAU,GAERpC,KAAKiT,QAAQtD,IACfA,EAAQwD,OAAO/Q,EAEnB,EAMA4N,EAAU9P,UAAUkT,QAAU,SAAUC,GACtC,IAAIC,EAAM,GACNzD,EAAW7P,KAAKsQ,cASpB,OARA,QAAKT,GAAU,SAAUF,GACnB0D,EAAG1D,IACL2D,EAAI/S,KAAKoP,GAEPA,EAAQC,YACV0D,EAAMA,EAAIC,OAAO5D,EAAQyD,QAAQC,IAErC,IACOC,CACT,EAMAtD,EAAU9P,UAAUsT,KAAO,SAAUH,GACnC,IAAIC,EAAM,KACNzD,EAAW7P,KAAKsQ,cAWpB,OAVA,QAAKT,GAAU,SAAUF,GAMvB,GALI0D,EAAG1D,GACL2D,EAAM3D,EACGA,EAAQC,YACjB0D,EAAM3D,EAAQ6D,KAAKH,IAEjBC,EACF,OAAO,CAEX,IACOA,CACT,EAMAtD,EAAU9P,UAAUuT,SAAW,SAAUC,GACvC,OAAO1T,KAAKwT,MAAK,SAAU7D,GACzB,OAAOA,EAAQ3N,IAAI,QAAU0R,CAC/B,GACF,EAQA1D,EAAU9P,UAAUyT,gBAAkB,SAAUC,GAC9C,OAAO5T,KAAKwT,MAAK,SAAU7D,GACzB,OAAOA,EAAQ3N,IAAI,eAAiB4R,CACtC,GACF,EAMA5D,EAAU9P,UAAU2T,cAAgB,SAAU5R,GAC5C,OAAOjC,KAAKoT,SAAQ,SAAUzD,GAC5B,OAAOA,EAAQ3N,IAAI,UAAYC,CACjC,GACF,EACO+N,CACT,CAja6B,CAia3B,KACF,gHCxdI8D,EAAY,KACZC,EAAS,SACTC,EAAa,CAAC,SAAU,UAAW,UAAW,QAE9CC,EAAiB,CAAC,UAgBtB,SAASC,EAAmB7N,EAASZ,GACnC,IAAIe,EAAY,CAAC,EACbF,EAAQb,EAAMa,MAClB,IAAK,IAAII,KAAKL,EACZG,EAAUE,GAAKJ,EAAMI,GAEvB,OAAOF,CACT,CAgCA,IAAI2N,EAAuB,SAAUzS,GAEnC,SAASyS,EAAQxS,GACf,IAAIlB,EAAQiB,EAAOE,KAAK5B,KAAM2B,IAAQ3B,KAMtCS,EAAM6F,MAAQ,CAAC,EACf,IAAIA,EAAQ7F,EAAM2T,kBAKlB,OAJA,QAAI9N,EAAO3E,EAAI2E,OACf7F,EAAM6F,MAAQA,EACd7F,EAAM4T,UAAU/N,GAChB7F,EAAM6T,cACC7T,CACT,CAmoBA,OAlpBA,QAAU0T,EAASzS,GAiBnByS,EAAQjU,UAAU6B,cAAgB,WAChC,MAAO,CACLwS,SAAS,EACTC,SAAS,EACTC,OAAQ,EAEZ,EAKAN,EAAQjU,UAAUkU,gBAAkB,WAClC,MAAO,CACLjD,OAAQnR,KAAK0U,mBACbC,QAAS,EAEb,EAMAR,EAAQjU,UAAUgO,eAAiB,SAAU0G,GAAa,EAM1DT,EAAQjU,UAAUmU,UAAY,SAAU/N,GAAQ,EAKhD6N,EAAQjU,UAAUoU,YAAc,WAC9BtU,KAAKkC,IAAI,YAAY,GACrBlC,KAAKkC,IAAI,aAAa,EACxB,EACAiS,EAAQjU,UAAU0P,QAAU,WAC1B,OAAO,CACT,EACAuE,EAAQjU,UAAU6M,UAAY,WAC5B,OAAO/M,KAAKgC,IAAI,SAClB,EACAmS,EAAQjU,UAAU6R,UAAY,WAC5B,OAAO/R,KAAKgC,IAAI,SAClB,EACAmS,EAAQjU,UAAUkG,KAAO,WAGvB,IAFA,IAAIjF,EACAT,EAAO,GACFC,EAAK,EAAGA,EAAKC,UAAUC,OAAQF,IACtCD,EAAKC,GAAMC,UAAUD,GAEvB,IAAIsB,EAAOvB,EAAK,GACdyB,EAAQzB,EAAK,GACf,IAAKuB,EAAM,OAAOjC,KAAKsG,MACvB,IAAI,QAASrE,GAAO,CAClB,IAAK,IAAIyE,KAAKzE,EACZjC,KAAK6U,QAAQnO,EAAGzE,EAAKyE,IAGvB,OADA1G,KAAK8U,iBAAiB7S,GACfjC,IACT,CACA,OAAoB,IAAhBU,EAAKG,QACPb,KAAK6U,QAAQ5S,EAAME,GACnBnC,KAAK8U,mBAAkB3T,EAAK,CAAC,GAAMc,GAAQE,EAAOhB,IAC3CnB,MAEFA,KAAKsG,MAAMrE,EACpB,EAEAkS,EAAQjU,UAAUiS,UAAY,SAAU4C,EAAMC,GAC5C,IAAIC,EAAOjV,KAAKkV,UAChB,OAAOD,IAASA,EAAK7C,MAAM2C,EAAMC,EACnC,EAMAb,EAAQjU,UAAU2U,QAAU,SAAU5S,EAAME,GAC1C,IAAI2O,EAAc9Q,KAAKsG,MAAMrE,GACzB6O,IAAgB3O,IAClBnC,KAAKsG,MAAMrE,GAAQE,EACnBnC,KAAK6Q,aAAa5O,EAAME,EAAO2O,GAEnC,EAQAqD,EAAQjU,UAAU2Q,aAAe,SAAU5O,EAAME,EAAO2O,GACzC,WAAT7O,GACFjC,KAAKkC,IAAI,cAAe,KAE5B,EAKAiS,EAAQjU,UAAU4U,iBAAmB,SAAUK,GAC7C,GAAInV,KAAK2B,IAAIyT,YAAa,CACxB,IAAIC,EAAUrV,KAAK2B,IAAI0T,QACnBA,GACFA,EAAQnH,eAAe,OAE3B,MACElO,KAAKkO,eAAe,OAExB,EACAiG,EAAQjU,UAAUoV,KAAO,WAIvB,OAFAtV,KAAKkC,IAAI,WAAW,GACpBlC,KAAKkO,eAAe,QACblO,IACT,EACAmU,EAAQjU,UAAUqV,KAAO,WAIvB,OAFAvV,KAAKkC,IAAI,WAAW,GACpBlC,KAAKkO,eAAe,QACblO,IACT,EACAmU,EAAQjU,UAAUsV,UAAY,SAAUf,GACtCzU,KAAKkC,IAAI,SAAUuS,GACnB,IAAI7C,EAAS5R,KAAK+M,YAKlB,OAJI6E,GAEFA,EAAOW,OAEFvS,IACT,EACAmU,EAAQjU,UAAUuV,QAAU,WAC1B,IAAI7D,EAAS5R,KAAK+M,YAClB,GAAK6E,EAAL,CAGA,IAAI/B,EAAW+B,EAAOtB,cAElBtI,GADKhI,KAAKgC,IAAI,MACN6N,EAASqD,QAAQlT,OAC7B6P,EAASzO,OAAO4G,EAAO,GACvB6H,EAAStP,KAAKP,MACdA,KAAKkO,eAAe,SANpB,CAOF,EACAiG,EAAQjU,UAAUwV,OAAS,WACzB,IAAI9D,EAAS5R,KAAK+M,YAClB,GAAK6E,EAAL,CAGA,IAAI/B,EAAW+B,EAAOtB,cAElBtI,GADKhI,KAAKgC,IAAI,MACN6N,EAASqD,QAAQlT,OAC7B6P,EAASzO,OAAO4G,EAAO,GACvB6H,EAAS8F,QAAQ3V,MACjBA,KAAKkO,eAAe,SANpB,CAOF,EACAiG,EAAQjU,UAAUiT,OAAS,SAAU/Q,QACnB,IAAZA,IACFA,GAAU,GAEZ,IAAIwP,EAAS5R,KAAK+M,YACd6E,IACF,QAAgBA,EAAOtB,cAAetQ,MACjC4R,EAAO5P,IAAI,aAEdhC,KAAKkO,eAAe,WAGtBlO,KAAKkO,eAAe,UAElB9L,GACFpC,KAAKoC,SAET,EACA+R,EAAQjU,UAAU0V,YAAc,WAC9B5V,KAAKoG,KAAK2N,EAAQ/T,KAAK0U,oBACvB1U,KAAKkO,eAAe,SACtB,EACAiG,EAAQjU,UAAU2V,UAAY,WAC5B,OAAO7V,KAAKoG,KAAK2N,EACnB,EACAI,EAAQjU,UAAU4V,UAAY,SAAUC,GACtC/V,KAAKoG,KAAK2N,EAAQgC,GAClB/V,KAAKkO,eAAe,SACtB,EAEAiG,EAAQjU,UAAU8Q,eAAiB,WACjC,IAAID,EAAc/Q,KAAK2B,IAAIoP,YAC3B,IAAKA,EAAa,CAChB,IAAI5J,EAAgBnH,KAAKoG,KAAK,UAC1B4P,EAAehW,KAAK2B,IAAIqU,aAE1BjF,EADEiF,GAAgB7O,GACJ,QAAe6O,EAAc7O,GAE7BA,GAAiB6O,EAEjChW,KAAKkC,IAAI,cAAe6O,EAC1B,CACA,OAAOA,CACT,EAEAoD,EAAQjU,UAAUgR,YAAc,SAAUC,GACxC,IAAIhK,EAAgBnH,KAAKoG,KAAK,UAC1B2K,EAAc,KAEhBA,EADEI,GAAUhK,GACE,QAAegK,EAAQhK,GAEvBA,GAAiBgK,EAEjCnR,KAAKkC,IAAI,cAAe6O,GACxB/Q,KAAKkC,IAAI,eAAgBiP,EAC3B,EAMAgD,EAAQjU,UAAUwU,iBAAmB,WACnC,OAAO,IACT,EAEAP,EAAQjU,UAAU+V,cAAgB,SAAUhE,GAC1C,IAAId,EAASnR,KAAKoG,KAAK,UACvB,OAAI+K,GACK,QAAaA,EAAQc,GAEvBA,CACT,EAEAkC,EAAQjU,UAAUgS,iBAAmB,SAAUD,GAC7C,IAAId,EAASnR,KAAKoG,KAAK,UACvB,GAAI+K,EAAQ,CACV,IAAI+E,GAAe,QAAO/E,GAC1B,GAAI+E,EACF,OAAO,QAAaA,EAAcjE,EAEtC,CACA,OAAOA,CACT,EAEAkC,EAAQjU,UAAUiW,QAAU,SAAUC,GACpC,IAAI7O,EAASvH,KAAK+R,YAQdsE,EAAY,KAEhB,GAAID,EAAS,CACX,IAEIE,EAFYtW,KAAKuR,gBACL,QAAW6E,EAAQzN,OAE/B2N,IACFD,EAAY,IAAIC,EAAK,CACnB3N,KAAMyN,EAAQzN,KACdyM,aAAa,EACbC,QAASrV,KACTsG,MAAO8P,EAAQ9P,MACfiB,OAAQA,IAGd,CAGA,OAFAvH,KAAKkC,IAAI,YAAamU,GACtBrW,KAAKkO,eAAe,QACbmI,CACT,EACAlC,EAAQjU,UAAUgV,QAAU,WAE1B,IAAImB,EAAYrW,KAAK2B,IAAI0U,UAEzB,OAAKA,GACI,IAGX,EACAlC,EAAQjU,UAAUqW,MAAQ,WACxB,IAAI9V,EAAQT,KACRwW,EAAcxW,KAAKsG,MACnBA,EAAQ,CAAC,GACb,QAAKkQ,GAAa,SAAUtV,EAAGwF,IACzB,QAAQ8P,EAAY9P,IACtBJ,EAAMI,GAjWd,SAAyB+P,GAEvB,IADA,IAAI7D,EAAS,GACJ1R,EAAI,EAAGA,EAAIuV,EAAI5V,OAAQK,KAC1B,QAAQuV,EAAIvV,IACd0R,EAAOrS,KAAK,GAAGgT,OAAOkD,EAAIvV,KAE1B0R,EAAOrS,KAAKkW,EAAIvV,IAGpB,OAAO0R,CACT,CAuVmB8D,CAAgBF,EAAY9P,IAEvCJ,EAAMI,GAAK8P,EAAY9P,EAE3B,IACA,IAEI6P,EAAQ,IAAII,EAFL3W,KAAK8E,aAEK,CACnBwB,MAAOA,IAKT,OAHA,QAAK0N,GAAY,SAAU4C,GACzBL,EAAMrU,IAAI0U,EAASnW,EAAMuB,IAAI4U,GAC/B,IACOL,CACT,EACApC,EAAQjU,UAAUkC,QAAU,WACVpC,KAAK6B,YAIrB7B,KAAKsG,MAAQ,CAAC,EACd5E,EAAOxB,UAAUkC,QAAQR,KAAK5B,MAEhC,EAKAmU,EAAQjU,UAAU2H,gBAAkB,WAClC,OAAO7H,KAAKgC,IAAI,UAAU6U,QAC5B,EAeA1C,EAAQjU,UAAU4W,QAAU,WAE1B,IADA,IAAIpW,EAAO,GACFC,EAAK,EAAGA,EAAKC,UAAUC,OAAQF,IACtCD,EAAKC,GAAMC,UAAUD,GAEvB,GAAKX,KAAKgC,IAAI,aAAgBhC,KAAKgC,IAAI,UAAvC,CAGAhC,KAAKkC,IAAI,aAAa,GACtB,IAAI4L,EAAW9N,KAAKgC,IAAI,YACnB8L,IACHA,EAAW9N,KAAKgC,IAAI,UAAUA,IAAI,YAClChC,KAAKkC,IAAI,WAAY4L,IAEvB,IAAInG,EAAa3H,KAAKgC,IAAI,eAAiB,GAEtC8L,EAASlK,OACZkK,EAASpG,YAEX,IAQIvB,EACAD,EACA6Q,EACAC,EACAC,EAZA5Q,EAAU3F,EAAK,GACjBqF,EAAWrF,EAAK,GAChBS,EAAKT,EAAK,GACVsF,OAAgB,IAAP7E,EAAgB,aAAeA,EACxC+V,EAAKxW,EAAK,GACVL,OAAkB,IAAP6W,EAAgB,KAAOA,EAClCC,EAAKzW,EAAK,GACVmD,OAAe,IAAPsT,EAAgB,EAAIA,GAO1B,QAAW9Q,IACbF,EAAUE,EACVA,EAAU,CAAC,IACF,QAASA,IAAYA,EAAQF,UAEtCA,EAAUE,EAAQF,QAClBD,EAASG,EAAQH,SAGf,QAASH,IAEXA,GADAkR,EAAalR,GACSA,SACtBC,EAASiR,EAAWjR,QAAU,aAC9BnC,EAAQoT,EAAWpT,OAAS,EAE5BqC,EAAS+Q,EAAW/Q,QAAUA,IAAU,EACxC7F,EAAW4W,EAAW5W,UAAY,KAClC0W,EAAgBE,EAAWF,eAAiB,KAC5CC,EAAiBC,EAAWD,gBAAkB,QAG1C,QAAS3W,KACXwD,EAAQxD,EACRA,EAAW,OAGT,QAAW2F,IACb3F,EAAW2F,EACXA,EAAS,cAETA,EAASA,GAAU,cAGvB,IAAIoR,EA7bR,SAA0BC,EAAO5R,GAC/B,IAAIY,EAAU,CAAC,EACXC,EAAQb,EAAMW,OAMlB,OALA,QAAKiR,GAAO,SAAUpF,EAAGvL,IACY,IAA/BuN,EAAef,QAAQxM,KAAc,QAAQJ,EAAMI,GAAIuL,KACzD5L,EAAQK,GAAKuL,EAEjB,IACO5L,CACT,CAobwBiR,CAAiBjR,EAASrG,MAC1C0F,EAAY,CACdc,UAAW0N,EAAmBkD,EAAepX,MAC7CqG,QAAS+Q,EACTrR,SAAUA,EACVC,OAAQA,EACRE,OAAQA,EACR7F,SAAUA,EACV0W,cAAeA,EACfC,eAAgBA,EAChBnT,MAAOA,EACPgC,UAAWiI,EAASvF,UACpBmL,IAAI,UACJvN,QAASA,EACTW,eAAe,GAGba,EAAW9G,OAAS,EAEtB8G,EAtcN,SAA2BA,EAAYjC,GACrC,GAAIA,EAAUS,QACZ,OAAOwB,EAET,IAAI9B,EAAYH,EAAUG,UACxBhC,EAAQ6B,EAAU7B,MAClBkC,EAAWL,EAAUK,SACnBwR,EAAiBC,OAAOtX,UAAUqX,eAYtC,OAXA,QAAK5P,GAAY,SAAU8P,GAErB5R,EAAYhC,EAAQ4T,EAAK5R,UAAY4R,EAAK5T,MAAQ4T,EAAK1R,UAAYA,EAAW0R,EAAK5T,QACrF,QAAK6B,EAAUW,SAAS,SAAU4L,EAAGvL,GAC/B6Q,EAAe3V,KAAK6V,EAAKpR,QAASK,YAC7B+Q,EAAKpR,QAAQK,UACb+Q,EAAKjR,UAAUE,GAE1B,GAEJ,IACOiB,CACT,CAkbmB+P,CAAkB/P,EAAYjC,GAG3CoI,EAAS/F,YAAY/H,MAEvB2H,EAAWpH,KAAKmF,GAChB1F,KAAKkC,IAAI,aAAcyF,GACvB3H,KAAKkC,IAAI,SAAU,CACjB2U,UAAU,GAtFZ,CAwFF,EAKA1C,EAAQjU,UAAUoI,YAAc,SAAUH,GACxC,IAAI1H,EAAQT,UACE,IAAVmI,IACFA,GAAQ,GAEV,IAAIR,EAAa3H,KAAKgC,IAAI,eAC1B,QAAK2F,GAAY,SAAUjC,GAErByC,IACEzC,EAAUS,QACZ1F,EAAM2F,KAAKV,EAAUS,QAAQ,IAE7B1F,EAAM2F,KAAKV,EAAUW,UAGrBX,EAAUrF,UAEZqF,EAAUrF,UAEd,IACAL,KAAKkC,IAAI,aAAa,GACtBlC,KAAKkC,IAAI,aAAc,GACzB,EAIAiS,EAAQjU,UAAUyX,aAAe,WAC/B,IAAI7J,EAAW9N,KAAKgC,IAAI,YACpB2F,EAAa3H,KAAKgC,IAAI,cACtB4V,EAAY9J,EAASvF,UAczB,OAbA,QAAKZ,GAAY,SAAUjC,GACzBA,EAAUI,SAAU,EACpBJ,EAAUmS,WAAaD,EACnBlS,EAAUqR,eAEZrR,EAAUqR,eAEd,IAEA/W,KAAKkC,IAAI,SAAU,CACjB2U,UAAU,EACVe,UAAWA,IAEN5X,IACT,EAIAmU,EAAQjU,UAAU4X,cAAgB,WAChC,IACIrQ,EADWzH,KAAKgC,IAAI,YACDuG,UACnBZ,EAAa3H,KAAKgC,IAAI,cACtB4V,EAAY5X,KAAKgC,IAAI,UAAU4V,UAcnC,OAZA,QAAKjQ,GAAY,SAAUjC,GACzBA,EAAUG,UAAYH,EAAUG,WAAa4B,EAAUmQ,GACvDlS,EAAUI,SAAU,EACpBJ,EAAUmS,WAAa,KACnBnS,EAAUsR,gBACZtR,EAAUsR,gBAEd,IACAhX,KAAKkC,IAAI,SAAU,CACjB2U,UAAU,IAEZ7W,KAAKkC,IAAI,aAAcyF,GAChB3H,IACT,EAMAmU,EAAQjU,UAAU8M,eAAiB,SAAUrE,EAAMC,GACjD,IAGIM,EAHAzI,EAAQT,KACR+X,EAAQnP,EAASyC,gBACRrL,KAAKwB,YAEL,eAATmH,EACFO,EAAgBN,EAASQ,UACP,eAATT,IACTO,EAAgBN,EAASS,SAwB3B,IAtBA,IAAI2O,EAAU,SAAiB9W,GAC7B,IAAIyO,EAAUoI,EAAM7W,GAEhB+W,EAAStI,EAAQ3N,IAAI,QACzB,GAAIiW,EAAQ,CAEV,IAECtI,EAAQC,WAAaD,EAAQrG,UAAYqG,EAAQrG,aAAeJ,IAAiB,QAASyG,EAASzG,GAClG,MAAO,SAEL,QAAQ+O,IACV,QAAKA,GAAQ,SAAUC,GACrBzX,EAAM0X,kBAAkBxI,EAASuI,EAAStP,EAC5C,IAEAwP,EAAOD,kBAAkBxI,EAASsI,EAAQrP,EAE9C,CACF,EACIwP,EAASpY,KAEJkB,EAAI,EAAGA,EAAI6W,EAAMlX,OAAQK,IAAK,CAErC,GAAgB,UADF8W,EAAQ9W,GACG,KAC3B,CACF,EACAiT,EAAQjU,UAAUiY,kBAAoB,SAAUxI,EAAS1N,EAAM2G,GAC7D,IAAI9H,EAASd,KAAKwB,YAEdiJ,EAAYxI,EAvmBG,IAumBuB2G,EAASD,MAC/C7H,EAAO2J,IAAc3J,EAvmBd,QAymBT8H,EAAS3G,KAAOwI,EAChB7B,EAASC,cAAgB8G,EACzB/G,EAASE,eAAiB9I,KAE1B4I,EAASyP,eAAiB1I,EAAQ3N,IAAI,kBACtChC,KAAKQ,KAAKiK,EAAW7B,GAEzB,EAOAuL,EAAQjU,UAAUoY,UAAY,SAAUC,EAAYC,QAC/B,IAAfD,IACFA,EAAa,QAEI,IAAfC,IACFA,EAAa,GAEf,IAAIrH,EAASnR,KAAK6V,YACd4C,EAAY3E,EAAU3C,EAAQ,CAAC,CAAC,IAAKoH,EAAYC,KAErD,OADAxY,KAAK8V,UAAU2C,GACRzY,IACT,EAOAmU,EAAQjU,UAAUwY,KAAO,SAAUC,EAASC,GAC1C,IAAI3N,EAAIjL,KAAKoG,KAAK,MAAQ,EACtB8E,EAAIlL,KAAKoG,KAAK,MAAQ,EAE1B,OADApG,KAAKsY,UAAUK,EAAU1N,EAAG2N,EAAU1N,GAC/BlL,IACT,EAOAmU,EAAQjU,UAAU2Y,OAAS,SAAUF,EAASC,GAC5C,OAAO5Y,KAAK0Y,KAAKC,EAASC,EAC5B,EAOAzE,EAAQjU,UAAU4Y,MAAQ,SAAUC,EAAQC,GAC1C,IAAI7H,EAASnR,KAAK6V,YACd4C,EAAY3E,EAAU3C,EAAQ,CAAC,CAAC,IAAK4H,EAAQC,GAAUD,KAE3D,OADA/Y,KAAK8V,UAAU2C,GACRzY,IACT,EAMAmU,EAAQjU,UAAU+Y,OAAS,SAAUC,GACnC,IAAI/H,EAASnR,KAAK6V,YACd4C,EAAY3E,EAAU3C,EAAQ,CAAC,CAAC,IAAK+H,KAEzC,OADAlZ,KAAK8V,UAAU2C,GACRzY,IACT,EAMAmU,EAAQjU,UAAUiZ,cAAgB,SAAUF,GAC1C,IAAI9X,EAAKnB,KAAKoG,OACZ6E,EAAI9J,EAAG8J,EACPC,EAAI/J,EAAG+J,EACLiG,EAASnR,KAAK6V,YACd4C,EAAY3E,EAAU3C,EAAQ,CAAC,CAAC,KAAMlG,GAAIC,GAAI,CAAC,IAAK+N,GAAS,CAAC,IAAKhO,EAAGC,KAE1E,OADAlL,KAAK8V,UAAU2C,GACRzY,IACT,EAMAmU,EAAQjU,UAAUkZ,cAAgB,SAAUnO,EAAGC,EAAG+N,GAChD,IAAI9H,EAASnR,KAAK6V,YACd4C,EAAY3E,EAAU3C,EAAQ,CAAC,CAAC,KAAMlG,GAAIC,GAAI,CAAC,IAAK+N,GAAS,CAAC,IAAKhO,EAAGC,KAE1E,OADAlL,KAAK8V,UAAU2C,GACRzY,IACT,EACOmU,CACT,CAppB2B,CAopBzB,KACF,yDCptBIkF,EAA6B,SAAU3X,GAEzC,SAAS2X,IACP,OAAkB,OAAX3X,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAiBA,OApBA,QAAUqZ,EAAe3X,GAIzB2X,EAAcnZ,UAAU0P,QAAU,WAChC,OAAO,CACT,EACAyJ,EAAcnZ,UAAUoZ,cAAgB,WACtC,OAAO,CACT,EACAD,EAAcnZ,UAAUqW,MAAQ,WAI9B,IAHA,IAAIA,EAAQ7U,EAAOxB,UAAUqW,MAAM3U,KAAK5B,MAEpC6P,EAAW7P,KAAKsQ,cACXpP,EAAI,EAAGA,EAAI2O,EAAShP,OAAQK,IAAK,CACxC,IAAI4O,EAAQD,EAAS3O,GACrBqV,EAAM/E,IAAI1B,EAAMyG,QAClB,CACA,OAAOA,CACT,EACO8C,CACT,CAtBiC,UAsB/B,GACF,8ECtBIE,EAA6B,SAAU7X,GAEzC,SAAS6X,EAAc5X,GACrB,OAAOD,EAAOE,KAAK5B,KAAM2B,IAAQ3B,IACnC,CAoJA,OAvJA,QAAUuZ,EAAe7X,GAKzB6X,EAAcrZ,UAAUsZ,UAAY,SAAUzE,EAAMC,GAClD,IAAIlG,EAAO9O,KAAKiQ,UAChB,OAAOnB,EAAKoB,MAAQ6E,GAAQjG,EAAKqB,MAAQ4E,GAAQjG,EAAKsB,MAAQ4E,GAAQlG,EAAKuB,MAAQ2E,CACrF,EAMAuE,EAAcrZ,UAAU4U,iBAAmB,SAAUK,GACnDzT,EAAOxB,UAAU4U,iBAAiBlT,KAAK5B,KAAMmV,GAC7CnV,KAAKyZ,gBACP,EAEAF,EAAcrZ,UAAU+P,QAAU,WAChC,IAAInB,EAAO9O,KAAK2B,IAAImN,KAKpB,OAJKA,IACHA,EAAO9O,KAAK0Z,gBACZ1Z,KAAKkC,IAAI,OAAQ4M,IAEZA,CACT,EAEAyK,EAAcrZ,UAAU0Q,cAAgB,WACtC,IAAI+I,EAAa3Z,KAAK2B,IAAIgY,WAK1B,OAJKA,IACHA,EAAa3Z,KAAK4Z,sBAClB5Z,KAAKkC,IAAI,aAAcyX,IAElBA,CACT,EACAJ,EAAcrZ,UAAUgR,YAAc,SAAUC,GAC9CzP,EAAOxB,UAAUgR,YAAYtP,KAAK5B,KAAMmR,GAExCnR,KAAKkC,IAAI,aAAc,KACzB,EAKAqX,EAAcrZ,UAAU0Z,oBAAsB,WAC5C,IAAI9K,EAAO9O,KAAKiQ,UACZc,EAAc/Q,KAAKgR,iBACnBd,EAAOpB,EAAKoB,KACdE,EAAOtB,EAAKsB,KACZD,EAAOrB,EAAKqB,KACZE,EAAOvB,EAAKuB,KACd,GAAIU,EAAa,CACf,IAAI8I,GAAU,QAAa9I,EAAa,CAACjC,EAAKoB,KAAMpB,EAAKsB,OACrD0J,GAAW,QAAa/I,EAAa,CAACjC,EAAKqB,KAAMrB,EAAKsB,OACtD2J,GAAa,QAAahJ,EAAa,CAACjC,EAAKoB,KAAMpB,EAAKuB,OACxD2J,GAAc,QAAajJ,EAAa,CAACjC,EAAKqB,KAAMrB,EAAKuB,OAC7DH,EAAO+J,KAAKC,IAAIL,EAAQ,GAAIC,EAAS,GAAIC,EAAW,GAAIC,EAAY,IACpE7J,EAAO8J,KAAKE,IAAIN,EAAQ,GAAIC,EAAS,GAAIC,EAAW,GAAIC,EAAY,IACpE5J,EAAO6J,KAAKC,IAAIL,EAAQ,GAAIC,EAAS,GAAIC,EAAW,GAAIC,EAAY,IACpE3J,EAAO4J,KAAKE,IAAIN,EAAQ,GAAIC,EAAS,GAAIC,EAAW,GAAIC,EAAY,GACtE,CACA,IAAI1T,EAAQtG,KAAKsG,MAEjB,GAAIA,EAAM8T,YAAa,CACrB,IAAIjZ,EAAKmF,EAAM+T,WACbA,OAAoB,IAAPlZ,EAAgB,EAAIA,EACjC+V,EAAK5Q,EAAMgU,cACXA,OAAuB,IAAPpD,EAAgB,EAAIA,EACpCC,EAAK7Q,EAAMiU,cACXA,OAAuB,IAAPpD,EAAgB,EAAIA,EAClCqD,EAAatK,EAAOmK,EAAaC,EACjCG,EAActK,EAAOkK,EAAaC,EAClCI,EAAYtK,EAAOiK,EAAaE,EAChCI,EAAetK,EAAOgK,EAAaE,EACvCrK,EAAO+J,KAAKC,IAAIhK,EAAMsK,GACtBrK,EAAO8J,KAAKE,IAAIhK,EAAMsK,GACtBrK,EAAO6J,KAAKC,IAAI9J,EAAMsK,GACtBrK,EAAO4J,KAAKE,IAAI9J,EAAMsK,EACxB,CACA,MAAO,CACL1P,EAAGiF,EACHhF,EAAGkF,EACHF,KAAMA,EACNE,KAAMA,EACND,KAAMA,EACNE,KAAMA,EACNtC,MAAOoC,EAAOD,EACdlC,OAAQqC,EAAOD,EAEnB,EAKAmJ,EAAcrZ,UAAUuZ,eAAiB,WACvCzZ,KAAKkC,IAAI,OAAQ,MACjBlC,KAAKkC,IAAI,aAAc,KACzB,EAEAqX,EAAcrZ,UAAUkV,YAAc,WACpC,OAAOpV,KAAKgC,IAAI,cAClB,EAQAuX,EAAcrZ,UAAU0a,UAAY,SAAU7F,EAAMC,GAClD,OAAO,CACT,EAMAuE,EAAcrZ,UAAU2a,aAAe,WACrC,OAAO,CACT,EAEAtB,EAAcrZ,UAAUkS,MAAQ,SAAUnH,EAAGC,GAC3C,IAAI4P,EAAkB9a,KAAKgC,IAAI,mBAC3B+Y,EAAgB/a,KAAKgC,IAAI,iBACzBgZ,EAAM,CAAC/P,EAAGC,EAAG,GAEb6J,GADJiG,EAAMhb,KAAKkS,iBAAiB8I,IACb,GACbhG,EAAOgG,EAAI,GACTC,EAASjb,KAAKwZ,UAAUzE,EAAMC,GAElC,GAAIhV,KAAK6a,eACP,OAAOI,EAGT,GAAIA,IAAWjb,KAAKmS,UAAU4C,EAAMC,GAAO,CAEzC,GAAIhV,KAAK4a,UAAU7F,EAAMC,GACvB,OAAO,EAGT,GAAI8F,GAAmBA,EAAgB1I,MAAM2C,EAAMC,GACjD,OAAO,EAGT,GAAI+F,GAAiBA,EAAc3I,MAAM2C,EAAMC,GAC7C,OAAO,CAEX,CACA,OAAO,CACT,EACOuE,CACT,CAzJiC,CAyJ/B,KACF,0GC7JO,SAAS2B,EAAOnX,GACrB,OAAQA,CACV,CCFO,SAASoX,EAAOpX,GACrB,OAAOA,EAAIA,CACb,CACO,SAASqX,EAAQrX,GACtB,OAAOA,GAAK,EAAIA,EAClB,CACO,SAASsX,EAAUtX,GACxB,QAASA,GAAK,IAAM,EAAIA,EAAIA,IAAMA,GAAK,EAAIA,GAAK,GAAK,CACvD,CCRO,SAASuX,EAAQvX,GACtB,OAAOA,EAAIA,EAAIA,CACjB,CACO,SAASwX,EAASxX,GACvB,QAASA,EAAIA,EAAIA,EAAI,CACvB,CACO,SAASyX,EAAWzX,GACzB,QAASA,GAAK,IAAM,EAAIA,EAAIA,EAAIA,GAAKA,GAAK,GAAKA,EAAIA,EAAI,GAAK,CAC9D,2tCCRA,IACW0X,EAAS,SAASC,EAAOxX,GAElC,SAASuX,EAAO1X,GACd,OAAOkW,KAAK0B,IAAI5X,EAAGG,EACrB,CAEA,OALAA,GAAKA,EAILuX,EAAOG,SAAWF,EACXD,CACT,CAPoB,CADL,GASJI,EAAU,SAASH,EAAOxX,GAEnC,SAAS2X,EAAQ9X,GACf,OAAO,EAAIkW,KAAK0B,IAAI,EAAI5X,EAAGG,EAC7B,CAEA,OALAA,GAAKA,EAIL2X,EAAQD,SAAWF,EACZG,CACT,CAPqB,CATN,GAiBJC,EAAY,SAASJ,EAAOxX,GAErC,SAAS4X,EAAU/X,GACjB,QAASA,GAAK,IAAM,EAAIkW,KAAK0B,IAAI5X,EAAGG,GAAK,EAAI+V,KAAK0B,IAAI,EAAI5X,EAAGG,IAAM,CACrE,CAEA,OALAA,GAAKA,EAIL4X,EAAUF,SAAWF,EACdI,CACT,CAPuB,CAjBR,GCAXC,EAAK9B,KAAK+B,GACZC,EAASF,EAAK,EACT,SAASG,EAAMnY,GACpB,OAAc,IAANA,EAAU,EAAI,EAAIkW,KAAKkC,IAAIpY,EAAIkY,EACzC,CACO,SAASG,EAAOrY,GACrB,OAAOkW,KAAKoC,IAAItY,EAAIkY,EACtB,CACO,SAASK,EAASvY,GACvB,OAAQ,EAAIkW,KAAKkC,IAAIJ,EAAKhY,IAAM,CAClC,CCTO,SAASwY,EAAKtR,GACnB,OAA+C,oBAAvCgP,KAAK0B,IAAI,GAAI,GAAK1Q,GAAK,YACjC,CCFO,SAASuR,EAAMzY,GACpB,OAAOwY,EAAK,GAAKxY,EACnB,CACO,SAAS0Y,EAAO1Y,GACrB,OAAO,EAAIwY,EAAKxY,EAClB,CACO,SAAS2Y,EAAS3Y,GACvB,QAASA,GAAK,IAAM,EAAIwY,EAAK,EAAIxY,GAAK,EAAIwY,EAAKxY,EAAI,IAAM,CAC3D,CCTO,SAAS4Y,EAAS5Y,GACvB,OAAO,EAAIkW,KAAK2C,KAAK,EAAI7Y,EAAIA,EAC/B,CACO,SAAS8Y,EAAU9Y,GACxB,OAAOkW,KAAK2C,KAAK,KAAM7Y,EAAIA,EAC7B,CACO,SAAS+Y,EAAY/Y,GAC1B,QAASA,GAAK,IAAM,EAAI,EAAIkW,KAAK2C,KAAK,EAAI7Y,EAAIA,GAAKkW,KAAK2C,KAAK,GAAK7Y,GAAK,GAAKA,GAAK,GAAK,CACxF,CCRA,IAAIgZ,EAAK,EAAI,GACXC,EAAK,EAAI,GACTC,EAAK,EAAI,GACTC,EAAK,EAAI,EACTC,EAAK,EAAI,GACTC,EAAK,GAAK,GACVC,EAAK,GAAK,GACVC,EAAK,GAAK,GACVC,EAAK,GAAK,GACVC,EAAK,EAAIT,EAAKA,EACT,SAASU,EAAS1Z,GACvB,OAAO,EAAI2Z,EAAU,EAAI3Z,EAC3B,CACO,SAAS2Z,EAAU3Z,GACxB,OAAQA,GAAKA,GAAKgZ,EAAKS,EAAKzZ,EAAIA,EAAIA,EAAIkZ,EAAKO,GAAMzZ,GAAKiZ,GAAMjZ,EAAImZ,EAAKnZ,EAAIqZ,EAAKI,GAAMzZ,GAAKoZ,GAAMpZ,EAAIsZ,EAAKG,GAAMzZ,GAAKuZ,GAAMvZ,EAAIwZ,CACjI,CACO,SAASI,EAAY5Z,GAC1B,QAASA,GAAK,IAAM,EAAI,EAAI2Z,EAAU,EAAI3Z,GAAK2Z,EAAU3Z,EAAI,GAAK,GAAK,CACzE,CClBA,IAAI6Z,EAAY,QACLC,EAAS,SAASnC,EAAOoC,GAElC,SAASD,EAAO9Z,GACd,OAAQA,GAAKA,GAAKA,GAAK+Z,GAAK/Z,EAAI,GAAKA,EACvC,CAEA,OALA+Z,GAAKA,EAILD,EAAOD,UAAYlC,EACZmC,CACT,CAPoB,CAOlBD,GACSG,EAAU,SAASrC,EAAOoC,GAEnC,SAASC,EAAQha,GACf,QAASA,EAAIA,IAAMA,EAAI,GAAK+Z,EAAI/Z,GAAK,CACvC,CAEA,OALA+Z,GAAKA,EAILC,EAAQH,UAAYlC,EACbqC,CACT,CAPqB,CAOnBH,GACSI,EAAY,SAAStC,EAAOoC,GAErC,SAASE,EAAUja,GACjB,QAASA,GAAK,GAAK,EAAIA,EAAIA,IAAM+Z,EAAI,GAAK/Z,EAAI+Z,IAAM/Z,GAAK,GAAKA,IAAM+Z,EAAI,GAAK/Z,EAAI+Z,GAAK,GAAK,CAC7F,CAEA,OALAA,GAAKA,EAILE,EAAUJ,UAAYlC,EACfsC,CACT,CAPuB,CAOrBJ,GCvBEK,EAAM,EAAIhE,KAAK+B,GAGRkC,EAAY,SAASxC,EAAOyC,EAAGC,GACxC,IAAIN,EAAI7D,KAAKoE,KAAK,GAAKF,EAAIlE,KAAKE,IAAI,EAAGgE,MAAQC,GAAKH,GACpD,SAASC,EAAUna,GACjB,OAAOoa,EAAI5B,MAASxY,GAAKkW,KAAKoC,KAAKyB,EAAI/Z,GAAKqa,EAC9C,CAOA,OANAF,EAAUI,UAAY,SAAUH,GAC9B,OAAOzC,EAAOyC,EAAGC,EAAIH,EACvB,EACAC,EAAUK,OAAS,SAAUH,GAC3B,OAAO1C,EAAOyC,EAAGC,EACnB,EACOF,CACT,CAZuB,CAFT,EACH,IAcAM,EAAa,SAAS9C,EAAOyC,EAAGC,GACzC,IAAIN,EAAI7D,KAAKoE,KAAK,GAAKF,EAAIlE,KAAKE,IAAI,EAAGgE,MAAQC,GAAKH,GACpD,SAASO,EAAWza,GAClB,OAAO,EAAIoa,EAAI5B,EAAKxY,GAAKA,GAAKkW,KAAKoC,KAAKtY,EAAI+Z,GAAKM,EACnD,CAOA,OANAI,EAAWF,UAAY,SAAUH,GAC/B,OAAOzC,EAAOyC,EAAGC,EAAIH,EACvB,EACAO,EAAWD,OAAS,SAAUH,GAC5B,OAAO1C,EAAOyC,EAAGC,EACnB,EACOI,CACT,CAZwB,CAfV,EACH,IA2BAC,EAAe,SAAS/C,EAAOyC,EAAGC,GAC3C,IAAIN,EAAI7D,KAAKoE,KAAK,GAAKF,EAAIlE,KAAKE,IAAI,EAAGgE,MAAQC,GAAKH,GACpD,SAASQ,EAAa1a,GACpB,QAASA,EAAQ,EAAJA,EAAQ,GAAK,EAAIoa,EAAI5B,GAAMxY,GAAKkW,KAAKoC,KAAKyB,EAAI/Z,GAAKqa,GAAK,EAAID,EAAI5B,EAAKxY,GAAKkW,KAAKoC,KAAKyB,EAAI/Z,GAAKqa,IAAM,CAClH,CAOA,OANAK,EAAaH,UAAY,SAAUH,GACjC,OAAOzC,EAAOyC,EAAGC,EAAIH,EACvB,EACAQ,EAAaF,OAAS,SAAUH,GAC9B,OAAO1C,EAAOyC,EAAGC,EACnB,EACOK,CACT,CAZ0B,CA5BZ,EACH,ICFPC,EAAa,CAAC,EAKX,SAASC,EAAUhW,GAExB,OAAO+V,EAAW/V,EAAKiW,gBAAkB,EAAOjW,EAClD,CAMO,SAASkW,EAAelW,EAAM1C,GACnCyY,EAAW/V,EAAKiW,eAAiB3Y,CACnC,6FCjBA,IAAI6Y,EAAQ,IAAIC,IAMT,SAASC,EAASrW,EAAMgD,GAC7BmT,EAAM5c,IAAIyG,EAAMgD,EAClB,CAKO,SAASsT,EAAUtW,GACxB,OAAOmW,EAAM9c,IAAI2G,EACnB,CCfe,SAAS,EAAClD,GACvB,IAAIa,EAAQb,EAAMW,OAKlB,MAAO,CACL6E,EALM3E,EAAM2E,EAMZC,EALI5E,EAAM4E,EAMV6C,MALQzH,EAAMyH,MAMdC,OALS1H,EAAM0H,OAOnB,CCZe,SAAS,EAACvI,GACvB,IAAItE,EAAKsE,EAAMW,OACb6E,EAAI9J,EAAG8J,EACPC,EAAI/J,EAAG+J,EACPgU,EAAI/d,EAAG+d,EACT,MAAO,CACLjU,EAAGA,EAAIiU,EACPhU,EAAGA,EAAIgU,EACPnR,MAAW,EAAJmR,EACPlR,OAAY,EAAJkR,EAEZ,gBCVO,SAASC,EAAUC,EAAOC,GAC/B,OAAKD,GAAUC,EAGR,CACLnP,KAAM+J,KAAKC,IAAIkF,EAAMlP,KAAMmP,EAAMnP,MACjCE,KAAM6J,KAAKC,IAAIkF,EAAMhP,KAAMiP,EAAMjP,MACjCD,KAAM8J,KAAKE,IAAIiF,EAAMjP,KAAMkP,EAAMlP,MACjCE,KAAM4J,KAAKE,IAAIiF,EAAM/O,KAAMgP,EAAMhP,OAN1B+O,GAASC,CAQpB,CAEO,SAASC,EAAe7Z,EAAOqJ,GACpC,IAAIgM,EAAkBrV,EAAMzD,IAAI,mBAC5B+Y,EAAgBtV,EAAMzD,IAAI,iBAW9B,OARI8Y,IAEFhM,EAAOqQ,EAAUrQ,EADAgM,EAAgBlK,kBAG/BmK,IAEFjM,EAAOqQ,EAAUrQ,EADFiM,EAAcnK,kBAGxB9B,CACT,0CC2DA,SAASyQ,EAA6BC,EAASC,GAC7C,IAAIC,EAAWF,EAAQE,SACrBC,EAAeH,EAAQG,aACvBC,EAAYJ,EAAQI,UAClBC,EAAgB5F,KAAK0B,IAAIgE,EAAa,GAAKD,EAAS,GAAI,GAAKzF,KAAK0B,IAAIgE,EAAa,GAAKD,EAAS,GAAI,GACrGI,EAAiB7F,KAAK0B,IAAIgE,EAAa,GAAKC,EAAU,GAAI,GAAK3F,KAAK0B,IAAIgE,EAAa,GAAKC,EAAU,GAAI,GACxGG,EAAa9F,KAAK0B,IAAI+D,EAAS,GAAKE,EAAU,GAAI,GAAK3F,KAAK0B,IAAI+D,EAAS,GAAKE,EAAU,GAAI,GAE5FI,EAAe/F,KAAKgG,MAAMJ,EAAgBC,EAAiBC,IAAe,EAAI9F,KAAK2C,KAAKiD,GAAiB5F,KAAK2C,KAAKkD,KAGvH,IAAKE,GAA2C,IAA3B/F,KAAKoC,IAAI2D,KAAuB,QAAcA,EAAc,GAC/E,MAAO,CACLE,OAAQ,EACRC,OAAQ,GAGZ,IAAIC,EAASnG,KAAKoG,IAAIpG,KAAKqG,MAAMV,EAAU,GAAKD,EAAa,GAAIC,EAAU,GAAKD,EAAa,KACzFY,EAAStG,KAAKoG,IAAIpG,KAAKqG,MAAMV,EAAU,GAAKD,EAAa,GAAIC,EAAU,GAAKD,EAAa,KAY7F,OAVAS,EAASA,EAASnG,KAAK+B,GAAK,EAAI/B,KAAK+B,GAAKoE,EAASA,EACnDG,EAASA,EAAStG,KAAK+B,GAAK,EAAI/B,KAAK+B,GAAKuE,EAASA,EAGvC,CAEVL,OAAQjG,KAAKkC,IAAI6D,EAAe,EAAII,IAAWX,EAAY,GAAK,EAAIxF,KAAKoC,IAAI2D,EAAe,KAAOP,EAAY,GAAK,EAEpHU,OAAQlG,KAAKkC,IAAIoE,EAASP,EAAe,IAAMP,EAAY,GAAK,EAAIxF,KAAKoC,IAAI2D,EAAe,KAAOP,EAAY,GAAK,EAGxH,CC5GAT,EAAS,OAAQwB,GACjBxB,EAAS,QAASwB,GAClBxB,EAAS,SAAUyB,GACnBzB,EAAS,SAAUyB,GACnBzB,EAAS,YCXM,SAAUvZ,GAKvB,IAJA,IACIib,EADQjb,EAAMW,OACCsa,OACfC,EAAO,GACPC,EAAO,GACF1f,EAAI,EAAGA,EAAIwf,EAAO7f,OAAQK,IAAK,CACtC,IAAI8J,EAAQ0V,EAAOxf,GACnByf,EAAKpgB,KAAKyK,EAAM,IAChB4V,EAAKrgB,KAAKyK,EAAM,GAClB,CACA,IAAI7J,EAAK,oBAAoBwf,EAAMC,GACjC3V,EAAI9J,EAAG8J,EACPC,EAAI/J,EAAG+J,EAGL4D,EAAO,CACToB,KAAMjF,EACNmF,KAAMlF,EACNiF,KAAMlF,EALE9J,EAAG4M,MAMXsC,KAAMnF,EALG/J,EAAG6M,QAQd,MAAO,CACL/C,GAFF6D,EAAOwQ,EAAe7Z,EAAOqJ,IAEnBoB,KACRhF,EAAG4D,EAAKsB,KACRrC,MAAOe,EAAKqB,KAAOrB,EAAKoB,KACxBlC,OAAQc,EAAKuB,KAAOvB,EAAKsB,KAE7B,IDhBA4O,EAAS,WEbM,SAAUvZ,GAKvB,IAJA,IACIib,EADQjb,EAAMW,OACCsa,OACfC,EAAO,GACPC,EAAO,GACF1f,EAAI,EAAGA,EAAIwf,EAAO7f,OAAQK,IAAK,CACtC,IAAI8J,EAAQ0V,EAAOxf,GACnByf,EAAKpgB,KAAKyK,EAAM,IAChB4V,EAAKrgB,KAAKyK,EAAM,GAClB,CACA,OAAO,oBAAoB2V,EAAMC,EACnC,IFGA5B,EAAS,QGdM,SAAUvZ,GACvB,IAAIa,EAAQb,EAAMW,OACd6E,EAAI3E,EAAM2E,EACZC,EAAI5E,EAAM4E,EACV2V,EAAOva,EAAMua,KACbC,EAAWxa,EAAMwa,SACjBC,EAAaza,EAAMya,WACjBC,EAAO1a,EAAM0a,KACZA,IAEHA,GAAO,QAAa1a,IAEtB,IACIwI,EADAf,GAAQ,QAAa8S,EAAMG,GAE/B,GAAKjT,EAQE,CACL,IAAIkT,EAAY3a,EAAM2a,UACpBC,EAAe5a,EAAM4a,aACnBlT,GAAS,QAAc6S,EAAMC,EAAUC,GAEvC/V,EAAQ,CACVC,EAAGA,EACHC,EAAGA,EAAI8C,GAELiT,IACgB,QAAdA,GAAqC,UAAdA,EACzBjW,EAAMC,GAAK8C,EACY,WAAdkT,IACTjW,EAAMC,GAAK8C,EAAQ,IAGnBmT,IACmB,QAAjBA,EACFlW,EAAME,GAAK8C,EACe,WAAjBkT,IACTlW,EAAME,GAAK8C,EAAS,IAGxBc,EAAO,CACL7D,EAAGD,EAAMC,EACTC,EAAGF,EAAME,EACT6C,MAAOA,EACPC,OAAQA,EAEZ,MAnCEc,EAAO,CACL7D,EAAGA,EACHC,EAAGA,EACH6C,MAAO,EACPC,OAAQ,GAgCZ,OAAOc,CACT,IHtCAkQ,EAAS,QDsGM,SAAUvZ,GACvB,IAAIa,EAAQb,EAAMW,OACdS,EAAOP,EAAMO,KAEb4Y,EADOnZ,EAAM6a,OACQ7a,EAAMmZ,UAAY,EAEvCte,EAxHN,SAAoBigB,EAAU3B,GAI5B,IAHA,IAAIkB,EAAO,GACPC,EAAO,GACPS,EAAoB,GACfngB,EAAI,EAAGA,EAAIkgB,EAASvgB,OAAQK,IAAK,CACxC,IACIye,GADAH,EAAU4B,EAASlgB,IACIye,aACzB2B,EAAS9B,EAAQ8B,OACjB5B,EAAWF,EAAQE,SACjB6B,OAAM,EACV,OAAQ/B,EAAQgC,SACd,IAAK,IACHD,EAAM,KAASA,IAAI7B,EAAS,GAAIA,EAAS,GAAI4B,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,IACrF,MACF,IAAK,IACHC,EAAM,KAAUA,IAAI7B,EAAS,GAAIA,EAAS,GAAI4B,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,IAC5G,MACF,IAAK,IACH,IAAIG,EAAYjC,EAAQiC,UACxBF,EAAM,KAAeA,IAAIE,EAAUC,GAAID,EAAUE,GAAIF,EAAUG,GAAIH,EAAUI,GAAIJ,EAAUK,UAAWL,EAAUM,WAAYN,EAAUO,UACtI,MACF,QACErB,EAAKpgB,KAAKof,EAAa,IACvBiB,EAAKrgB,KAAKof,EAAa,IAGvB4B,IACF/B,EAAQ+B,IAAMA,EACdZ,EAAKpgB,KAAKghB,EAAItW,EAAGsW,EAAItW,EAAIsW,EAAIxT,OAC7B6S,EAAKrgB,KAAKghB,EAAIrW,EAAGqW,EAAIrW,EAAIqW,EAAIvT,SAE3ByR,IAAkC,MAApBD,EAAQgC,SAAuC,MAApBhC,EAAQgC,UAAoBhC,EAAQE,UAAYF,EAAQI,WACnGyB,EAAkB9gB,KAAKif,EAE3B,CAIAmB,EAAOA,EAAKpQ,QAAO,SAAUkH,GAC3B,OAAQwK,OAAOC,MAAMzK,IAASA,IAASlT,KAAYkT,KAAS,GAC9D,IACAmJ,EAAOA,EAAKrQ,QAAO,SAAUkH,GAC3B,OAAQwK,OAAOC,MAAMzK,IAASA,IAASlT,KAAYkT,KAAS,GAC9D,IACA,IAAIvH,GAAO,QAAIyQ,GACXvQ,GAAO,QAAIwQ,GACXzQ,GAAO,QAAIwQ,GACXtQ,GAAO,QAAIuQ,GACf,GAAiC,IAA7BS,EAAkBxgB,OACpB,MAAO,CACLoK,EAAGiF,EACHhF,EAAGkF,EACHrC,MAAOoC,EAAOD,EACdlC,OAAQqC,EAAOD,GAGnB,IAASlP,EAAI,EAAGA,EAAImgB,EAAkBxgB,OAAQK,IAAK,CACjD,IAAIse,GACAG,GADAH,EAAU6B,EAAkBngB,IACLye,cAEV,KAAOzP,EAEtBA,GADQqP,EAA6BC,EAASC,GAC1BS,OACXP,EAAa,KAAOxP,IAE7BA,GADQoP,EAA6BC,EAASC,GAC1BS,QAElBP,EAAa,KAAOvP,EAEtBA,GADQmP,EAA6BC,EAASC,GAC1BU,OACXR,EAAa,KAAOtP,IAE7BA,GADQkP,EAA6BC,EAASC,GAC1BU,OAExB,CACA,MAAO,CACLlV,EAAGiF,EACHhF,EAAGkF,EACHrC,MAAOoC,EAAOD,EACdlC,OAAQqC,EAAOD,EAEnB,CAuCW+R,CADM1c,EAAMzD,IAAI,cAAe,QAAc6E,GACxB4Y,GAC5BxU,EAAI9J,EAAG8J,EACPC,EAAI/J,EAAG+J,EAGL4D,EAAO,CACToB,KAAMjF,EACNmF,KAAMlF,EACNiF,KAAMlF,EALE9J,EAAG4M,MAMXsC,KAAMnF,EALG/J,EAAG6M,QAQd,MAAO,CACL/C,GAFF6D,EAAOwQ,EAAe7Z,EAAOqJ,IAEnBoB,KACRhF,EAAG4D,EAAKsB,KACRrC,MAAOe,EAAKqB,KAAOrB,EAAKoB,KACxBlC,OAAQc,EAAKuB,KAAOvB,EAAKsB,KAE7B,IC7HA4O,EAAS,QIhBM,SAAUvZ,GACvB,IAAIa,EAAQb,EAAMW,OACdgc,EAAK9b,EAAM8b,GACbC,EAAK/b,EAAM+b,GACXC,EAAKhc,EAAMgc,GACXC,EAAKjc,EAAMic,GAKTzT,EAAO,CACToB,KALS+J,KAAKC,IAAIkI,EAAIE,GAMtBnS,KALS8J,KAAKE,IAAIiI,EAAIE,GAMtBlS,KALS6J,KAAKC,IAAImI,EAAIE,GAMtBlS,KALS4J,KAAKE,IAAIkI,EAAIE,IAQxB,MAAO,CACLtX,GAFF6D,EAAOwQ,EAAe7Z,EAAOqJ,IAEnBoB,KACRhF,EAAG4D,EAAKsB,KACRrC,MAAOe,EAAKqB,KAAOrB,EAAKoB,KACxBlC,OAAQc,EAAKuB,KAAOvB,EAAKsB,KAE7B,IJNA4O,EAAS,WKlBM,SAAUvZ,GACvB,IAAIa,EAAQb,EAAMW,OACd6E,EAAI3E,EAAM2E,EACZC,EAAI5E,EAAM4E,EACV0W,EAAKtb,EAAMsb,GACXC,EAAKvb,EAAMub,GACb,MAAO,CACL5W,EAAGA,EAAI2W,EACP1W,EAAGA,EAAI2W,EACP9T,MAAY,EAAL6T,EACP5T,OAAa,EAAL6T,EAEZ,sCCZA,IAAIW,EAA0B,WAC5B,SAASA,EAAW7Z,EAAMoC,GAKxB/K,KAAKiJ,SAAU,EAKfjJ,KAAK0I,OAAS,KAKd1I,KAAK6I,cAAgB,KAKrB7I,KAAK8I,eAAiB,KAKtB9I,KAAKqY,eAAiB,KAKtBrY,KAAKyiB,kBAAmB,EAKxBziB,KAAKiN,oBAAqB,EAK1BjN,KAAKyF,MAAQ,KAKbzF,KAAKoJ,UAAY,KAKjBpJ,KAAKqJ,QAAU,KAEfrJ,KAAKqL,gBAAkB,GACvBrL,KAAK2I,KAAOA,EACZ3I,KAAKiC,KAAO0G,EACZ3I,KAAK0iB,cAAgB3X,EACrB/K,KAAKmM,UAAYpB,EAAMoB,SACzB,CAsBA,OAlBAqW,EAAWtiB,UAAUuM,eAAiB,WACpCzM,KAAKyiB,kBAAmB,EACpBziB,KAAK0iB,cAAcjW,gBACrBzM,KAAK0iB,cAAcjW,gBAEvB,EAIA+V,EAAWtiB,UAAUyiB,gBAAkB,WACrC3iB,KAAKiN,oBAAqB,CAC5B,EACAuV,EAAWtiB,UAAU0iB,SAAW,WAE9B,MAAO,gBADI5iB,KAAK2I,KACgB,IAClC,EACA6Z,EAAWtiB,UAAU2iB,KAAO,WAAa,EACzCL,EAAWtiB,UAAU4iB,QAAU,WAAa,EACrCN,CACT,CAjF8B,GAkF9B,05CC/DWO,EAAU,kFCTd,SAASC,EAAe7E,EAAG8E,GAChC,IAAIC,EAAM,GACNC,EAAMhF,EAAE,GACRiF,EAAMjF,EAAE,GACRkF,EAAMlF,EAAE,GACRmF,EAAMnF,EAAE,GACRoF,EAAMpF,EAAE,GACRqF,EAAMrF,EAAE,GACRsF,EAAMtF,EAAE,GACRuF,EAAMvF,EAAE,GACRwF,EAAMxF,EAAE,GACRyF,EAAMX,EAAE,GACRY,EAAMZ,EAAE,GACRa,EAAMb,EAAE,GACRc,EAAMd,EAAE,GACRe,EAAMf,EAAE,GACRgB,EAAMhB,EAAE,GACRiB,EAAMjB,EAAE,GACRkB,EAAMlB,EAAE,GACRmB,EAAMnB,EAAE,GAUZ,OATAC,EAAI,GAAKU,EAAMT,EAAMU,EAAMP,EAAMQ,EAAML,EACvCP,EAAI,GAAKU,EAAMR,EAAMS,EAAMN,EAAMO,EAAMJ,EACvCR,EAAI,GAAKU,EAAMP,EAAMQ,EAAML,EAAMM,EAAMH,EACvCT,EAAI,GAAKa,EAAMZ,EAAMa,EAAMV,EAAMW,EAAMR,EACvCP,EAAI,GAAKa,EAAMX,EAAMY,EAAMT,EAAMU,EAAMP,EACvCR,EAAI,GAAKa,EAAMV,EAAMW,EAAMR,EAAMS,EAAMN,EACvCT,EAAI,GAAKgB,EAAMf,EAAMgB,EAAMb,EAAMc,EAAMX,EACvCP,EAAI,GAAKgB,EAAMd,EAAMe,EAAMZ,EAAMa,EAAMV,EACvCR,EAAI,GAAKgB,EAAMb,EAAMc,EAAMX,EAAMY,EAAMT,EAChCT,CACT,CAMO,SAASmB,EAAatO,EAAG9D,GAC9B,IAAIiR,EAAM,GACNjY,EAAIgH,EAAE,GACN/G,EAAI+G,EAAE,GAGV,OAFAiR,EAAI,GAAKnN,EAAE,GAAK9K,EAAI8K,EAAE,GAAK7K,EAAI6K,EAAE,GACjCmN,EAAI,GAAKnN,EAAE,GAAK9K,EAAI8K,EAAE,GAAK7K,EAAI6K,EAAE,GAC1BmN,CACT,CAKO,SAASoB,EAAOnG,GACrB,IAAI+E,EAAM,GACNC,EAAMhF,EAAE,GACRiF,EAAMjF,EAAE,GACRkF,EAAMlF,EAAE,GACRmF,EAAMnF,EAAE,GACRoF,EAAMpF,EAAE,GACRqF,EAAMrF,EAAE,GACRsF,EAAMtF,EAAE,GACRuF,EAAMvF,EAAE,GACRwF,EAAMxF,EAAE,GACR0F,EAAMF,EAAMJ,EAAMC,EAAME,EACxBM,GAAOL,EAAML,EAAME,EAAMC,EACzBU,EAAMT,EAAMJ,EAAMC,EAAME,EAExBc,EAAMpB,EAAMU,EAAMT,EAAMY,EAAMX,EAAMc,EACxC,OAAKI,GAGLA,EAAM,EAAMA,EACZrB,EAAI,GAAKW,EAAMU,EACfrB,EAAI,KAAOS,EAAMP,EAAMC,EAAMK,GAAOa,EACpCrB,EAAI,IAAMM,EAAMJ,EAAMC,EAAME,GAAOgB,EACnCrB,EAAI,GAAKc,EAAMO,EACfrB,EAAI,IAAMS,EAAMR,EAAME,EAAMI,GAAOc,EACnCrB,EAAI,KAAOM,EAAML,EAAME,EAAMC,GAAOiB,EACpCrB,EAAI,GAAKiB,EAAMI,EACfrB,EAAI,KAAOQ,EAAMP,EAAMC,EAAMK,GAAOc,EACpCrB,EAAI,IAAMK,EAAMJ,EAAMC,EAAME,GAAOiB,EAC5BrB,GAZE,IAaX,sJCvFA,IAAIsB,EAAe,KACZ,SAASC,IACd,IAAKD,EAAc,CACjB,IAAIjd,EAASoD,SAAS+Z,cAAc,UACpCnd,EAAOwG,MAAQ,EACfxG,EAAOyG,OAAS,EAChBwW,EAAejd,EAAOod,WAAW,KACnC,CACA,OAAOH,CACT,6ZCTII,EAAS,2CACTC,EAAe,IAAIC,OAAO,WAAaF,EAAS,wCAA0CA,EAAS,QAAUA,EAAS,QAAS,MAC/HG,EAAc,IAAID,OAAO,qCAAuCF,EAAS,QAAUA,EAAS,KAAM,MAElGI,EAAkB,SAAyBC,GAC7C,IAAKA,EACH,OAAO,KAET,IAAI,QAAQA,GACV,OAAOA,EAET,IAAIC,EAAc,CAChB/G,EAAG,EACHgH,EAAG,EACHC,EAAG,EACHC,EAAG,EACHC,EAAG,EACHvP,EAAG,EACHmJ,EAAG,EACHqG,EAAG,EACHzH,EAAG,EACH/Z,EAAG,EACHkO,EAAG,EACHuT,EAAG,EACHC,EAAG,GAEDC,EAAO,GA2BX,OA1BAC,OAAOV,GAAYW,QAAQf,GAAc,SAAU1G,EAAG8E,EAAGkC,GACvD,IAAI7D,EAAS,GACTrf,EAAOghB,EAAErE,cAYb,GAXAuG,EAAES,QAAQb,GAAa,SAAU5G,EAAG8E,GAClCA,GAAK3B,EAAO/gB,MAAM0iB,EACpB,IACa,MAAThhB,GAAgBqf,EAAOzgB,OAAS,IAClC6kB,EAAKnlB,KAAK,CAAC0iB,GAAG1P,OAAO+N,EAAOlgB,OAAO,EAAG,KACtCa,EAAO,IACPghB,EAAU,MAANA,EAAY,IAAM,KAEX,MAAThhB,GAAkC,IAAlBqf,EAAOzgB,QACzB6kB,EAAKnlB,KAAK,CAAC0iB,EAAG3B,EAAO,KAEV,MAATrf,EACFyjB,EAAKnlB,KAAK,CAAC0iB,GAAG1P,OAAO+N,SAErB,KAAOA,EAAOzgB,QAAUqkB,EAAYjjB,KAClCyjB,EAAKnlB,KAAK,CAAC0iB,GAAG1P,OAAO+N,EAAOlgB,OAAO,EAAG8jB,EAAYjjB,MAC7CijB,EAAYjjB,MAKrB,OAAOgjB,CACT,IACOS,CACT,EAEIG,EAAqB,SAA4BC,EAAKL,GAGxD,IAFA,IAAIM,EAAI,GAEC7kB,EAAI,EAAG8kB,EAAOF,EAAIjlB,OAAQmlB,EAAO,GAAKP,EAAIvkB,EAAGA,GAAK,EAAG,CAC5D,IAAIkd,EAAI,CAAC,CACPnT,GAAI6a,EAAI5kB,EAAI,GACZgK,GAAI4a,EAAI5kB,EAAI,IACX,CACD+J,GAAI6a,EAAI5kB,GACRgK,GAAI4a,EAAI5kB,EAAI,IACX,CACD+J,GAAI6a,EAAI5kB,EAAI,GACZgK,GAAI4a,EAAI5kB,EAAI,IACX,CACD+J,GAAI6a,EAAI5kB,EAAI,GACZgK,GAAI4a,EAAI5kB,EAAI,KAEVukB,EACGvkB,EAKM8kB,EAAO,IAAM9kB,EACtBkd,EAAE,GAAK,CACLnT,GAAI6a,EAAI,GACR5a,GAAI4a,EAAI,IAEDE,EAAO,IAAM9kB,IACtBkd,EAAE,GAAK,CACLnT,GAAI6a,EAAI,GACR5a,GAAI4a,EAAI,IAEV1H,EAAE,GAAK,CACLnT,GAAI6a,EAAI,GACR5a,GAAI4a,EAAI,KAhBV1H,EAAE,GAAK,CACLnT,GAAI6a,EAAIE,EAAO,GACf9a,GAAI4a,EAAIE,EAAO,IAkBfA,EAAO,IAAM9kB,EACfkd,EAAE,GAAKA,EAAE,GACCld,IACVkd,EAAE,GAAK,CACLnT,GAAI6a,EAAI5kB,GACRgK,GAAI4a,EAAI5kB,EAAI,KAIlB6kB,EAAExlB,KAAK,CAAC,MAAO6d,EAAE,GAAGnT,EAAI,EAAImT,EAAE,GAAGnT,EAAImT,EAAE,GAAGnT,GAAK,IAAKmT,EAAE,GAAGlT,EAAI,EAAIkT,EAAE,GAAGlT,EAAIkT,EAAE,GAAGlT,GAAK,GAAIkT,EAAE,GAAGnT,EAAI,EAAImT,EAAE,GAAGnT,EAAImT,EAAE,GAAGnT,GAAK,GAAImT,EAAE,GAAGlT,EAAI,EAAIkT,EAAE,GAAGlT,EAAIkT,EAAE,GAAGlT,GAAK,EAAGkT,EAAE,GAAGnT,EAAGmT,EAAE,GAAGlT,GAC9K,CACA,OAAO6a,CACT,EACIE,EAAc,SAAqBhb,EAAGC,EAAG0W,EAAIC,EAAI1D,GACnD,IAAI+H,EAAM,GAQV,GAPU,OAAN/H,GAAqB,OAAP0D,IAChBA,EAAKD,GAEP3W,GAAKA,EACLC,GAAKA,EACL0W,GAAMA,EACNC,GAAMA,EACI,OAAN1D,EAAY,CACd,IAAIgI,EAAMlM,KAAK+B,GAAK,IAChBoG,EAAKnX,EAAI2W,EAAK3H,KAAKkC,KAAK0F,EAAKsE,GAC7B7D,EAAKrX,EAAI2W,EAAK3H,KAAKkC,KAAKgC,EAAIgI,GAGhCD,EAAM,CAAC,CAAC,IAAK9D,EAFJlX,EAAI0W,EAAK3H,KAAKoC,KAAKwF,EAAKsE,IAEX,CAAC,IAAKvE,EAAIA,EAAI,IAAKzD,EAAI0D,EAAK,KAAM,EAAGS,EADlDpX,EAAI0W,EAAK3H,KAAKoC,KAAK8B,EAAIgI,IAElC,MACED,EAAM,CAAC,CAAC,IAAKjb,EAAGC,GAAI,CAAC,IAAK,GAAI2W,GAAK,CAAC,IAAKD,EAAIC,EAAI,EAAG,EAAG,EAAG,EAAG,EAAIA,GAAK,CAAC,IAAKD,EAAIC,EAAI,EAAG,EAAG,EAAG,GAAI,EAAIA,GAAK,CAAC,MAE7G,OAAOqE,CACT,EACIE,EAAiB,SAAwBC,GAE3C,KADAA,EAAYrB,EAAgBqB,MACTA,EAAUxlB,OAC3B,MAAO,CAAC,CAAC,IAAK,EAAG,IAEnB,IAMIylB,EACAC,EAPAL,EAAM,GACNjb,EAAI,EACJC,EAAI,EACJsb,EAAK,EACLC,EAAK,EACLC,EAAQ,EAGY,MAApBL,EAAU,GAAG,KAGfG,EAFAvb,GAAKob,EAAU,GAAG,GAGlBI,EAFAvb,GAAKmb,EAAU,GAAG,GAGlBK,IACAR,EAAI,GAAK,CAAC,IAAKjb,EAAGC,IAGpB,IADA,IAAIyb,EAA2B,IAArBN,EAAUxlB,QAAoC,MAApBwlB,EAAU,GAAG,IAAgD,MAAlCA,EAAU,GAAG,GAAGO,eAA2D,MAAlCP,EAAU,GAAG,GAAGO,cAC/G1H,OAAI,EAAQ2H,OAAK,EAAQ3lB,EAAIwlB,EAAOI,EAAKT,EAAUxlB,OAAQK,EAAI4lB,EAAI5lB,IAAK,CAI/E,GAHAglB,EAAI3lB,KAAK2e,EAAI,KAEboH,GADAO,EAAKR,EAAUnlB,IACN,MACGolB,EAAIM,cAEd,OADA1H,EAAE,GAAKoH,EAAIM,cACH1H,EAAE,IACR,IAAK,IACHA,EAAE,GAAK2H,EAAG,GACV3H,EAAE,GAAK2H,EAAG,GACV3H,EAAE,GAAK2H,EAAG,GACV3H,EAAE,GAAK2H,EAAG,GACV3H,EAAE,GAAK2H,EAAG,GACV3H,EAAE,IAAM2H,EAAG,GAAK5b,EAChBiU,EAAE,IAAM2H,EAAG,GAAK3b,EAChB,MACF,IAAK,IACHgU,EAAE,IAAM2H,EAAG,GAAK3b,EAChB,MACF,IAAK,IACHgU,EAAE,IAAM2H,EAAG,GAAK5b,EAChB,MACF,IAAK,IAEH,IAAK,IAAI/D,EAAI,EAAG6f,GADhBR,EAAO,CAACtb,EAAGC,GAAGqI,OAAOsT,EAAGG,MAAM,KACJnmB,OAAQqG,EAAI6f,EAAI7f,IACxCqf,EAAKrf,IAAMqf,EAAKrf,GAAK+D,EACrBsb,IAAOrf,IAAMqf,EAAKrf,GAAKgE,EAEzBgb,EAAIe,MACJf,EAAMA,EAAI3S,OAAOsS,EAAmBU,EAAMI,IAC1C,MACF,IAAK,IACHT,EAAIe,OACJV,EAAON,EAAYhb,EAAGC,EAAG2b,EAAG,GAAIA,EAAG,KAC9BtmB,KAAKgmB,EAAK,IACfL,EAAMA,EAAI3S,OAAOgT,GACjB,MACF,IAAK,IACHL,EAAIe,MACJf,EAAMA,EAAI3S,OAAO0S,EAAYhb,EAAGC,EAAG2b,EAAG,GAAIA,EAAG,GAAIA,EAAG,KACpD3H,EAAI,CAAC,KAAK3L,OAAO2S,EAAIA,EAAIrlB,OAAS,GAAGmmB,OAAO,IAC5C,MACF,IAAK,IACHR,GAAMK,EAAG,GAAK5b,EACdwb,GAAMI,EAAG,GAAK3b,EACd,MAEF,QACE,IAAShE,EAAI,EAAG6f,EAAKF,EAAGhmB,OAAQqG,EAAI6f,EAAI7f,IACtCgY,EAAEhY,IAAM2f,EAAG3f,IAAMA,EAAI,EAAI+D,EAAIC,QAG9B,GAAY,MAARob,EACTC,EAAO,CAACtb,EAAGC,GAAGqI,OAAOsT,EAAGG,MAAM,IAC9Bd,EAAIe,MACJf,EAAMA,EAAI3S,OAAOsS,EAAmBU,EAAMI,IAC1CzH,EAAI,CAAC,KAAK3L,OAAOsT,EAAGG,OAAO,SACtB,GAAY,MAARV,EACTJ,EAAIe,OACJV,EAAON,EAAYhb,EAAGC,EAAG2b,EAAG,GAAIA,EAAG,KAC9BtmB,KAAKgmB,EAAK,IACfL,EAAMA,EAAI3S,OAAOgT,QACZ,GAAY,MAARD,EACTJ,EAAIe,MACJf,EAAMA,EAAI3S,OAAO0S,EAAYhb,EAAGC,EAAG2b,EAAG,GAAIA,EAAG,GAAIA,EAAG,KACpD3H,EAAI,CAAC,KAAK3L,OAAO2S,EAAIA,EAAIrlB,OAAS,GAAGmmB,OAAO,SAE5C,IAAK,IAAItgB,EAAI,EAAGwgB,EAAKL,EAAGhmB,OAAQ6F,EAAIwgB,EAAIxgB,IACtCwY,EAAExY,GAAKmgB,EAAGngB,GAId,GAAY,OADZ4f,EAAMA,EAAIM,eAER,OAAQ1H,EAAE,IACR,IAAK,IACHjU,GAAKub,EACLtb,GAAKub,EACL,MACF,IAAK,IACHxb,EAAIiU,EAAE,GACN,MACF,IAAK,IACHhU,EAAIgU,EAAE,GACN,MACF,IAAK,IACHsH,EAAKtH,EAAEA,EAAEre,OAAS,GAClB4lB,EAAKvH,EAAEA,EAAEre,OAAS,GAClB,MAEF,QACEoK,EAAIiU,EAAEA,EAAEre,OAAS,GACjBqK,EAAIgU,EAAEA,EAAEre,OAAS,GAGzB,CACA,OAAOqlB,CACT,EACIiB,EAAM,SAAa/E,EAAIC,EAAIC,EAAIC,GACjC,MAAO,CAACH,EAAIC,EAAIC,EAAIC,EAAID,EAAIC,EAC9B,EACI6E,EAAM,SAAahF,EAAIC,EAAIgF,EAAIC,EAAIhF,EAAIC,GACzC,IAAIgF,EAAM,EAAI,EACVC,EAAM,EAAI,EACd,MAAO,CAACD,EAAMnF,EAAKoF,EAAMH,EAAIE,EAAMlF,EAAKmF,EAAMF,EAAIC,EAAMjF,EAAKkF,EAAMH,EAAIE,EAAMhF,EAAKiF,EAAMF,EAAIhF,EAAIC,EAClG,EACIkF,EAAM,SAASA,EAAIrF,EAAIC,EAAIT,EAAIC,EAAI6F,EAAOC,EAAgBC,EAAYtF,EAAIC,EAAIsF,GAG5EjG,IAAOC,IACTD,GAAM,GAER,IAGIkG,EACAC,EACAC,EACAtG,EACAC,EAPAsG,EAAiB,IAAVhO,KAAK+B,GAAW,IACvBmK,EAAMlM,KAAK+B,GAAK,MAAQ0L,GAAS,GACjCxB,EAAM,GAMNjN,EAAS,SAAgBhO,EAAGC,EAAGib,GAGjC,MAAO,CACLlb,EAHMA,EAAIgP,KAAKkC,IAAIgK,GAAOjb,EAAI+O,KAAKoC,IAAI8J,GAIvCjb,EAHMD,EAAIgP,KAAKoC,IAAI8J,GAAOjb,EAAI+O,KAAKkC,IAAIgK,GAK3C,EACA,GAAK0B,EA0CHE,EAAKF,EAAU,GACfG,EAAKH,EAAU,GACfnG,EAAKmG,EAAU,GACflG,EAAKkG,EAAU,OA7CD,CAEdzF,GADA0F,EAAK7O,EAAOmJ,EAAIC,GAAK8D,IACblb,EACRoX,EAAKyF,EAAG5c,EAERoX,GADAwF,EAAK7O,EAAOqJ,EAAIC,GAAK4D,IACblb,EACRsX,EAAKuF,EAAG5c,EACJkX,IAAOE,GAAMD,IAAOE,IAEtBD,GAAM,EACNC,GAAM,GAIR,IAAItX,GAAKmX,EAAKE,GAAM,EAChBpX,GAAKmX,EAAKE,GAAM,EAChB8C,EAAIpa,EAAIA,GAAK2W,EAAKA,GAAM1W,EAAIA,GAAK2W,EAAKA,GACtCwD,EAAI,IAENzD,GADAyD,EAAIpL,KAAK2C,KAAKyI,GAEdxD,GAAKwD,GAEP,IAAI6C,EAAMtG,EAAKA,EACXuG,EAAMtG,EAAKA,EACXnb,GAAKihB,IAAmBC,GAAc,EAAI,GAAK3N,KAAK2C,KAAK3C,KAAKoG,KAAK6H,EAAMC,EAAMD,EAAMhd,EAAIA,EAAIid,EAAMld,EAAIA,IAAMid,EAAMhd,EAAIA,EAAIid,EAAMld,EAAIA,KACzIyW,EAAKhb,EAAIkb,EAAK1W,EAAI2W,GAAMO,EAAKE,GAAM,EACnCX,EAAKjb,GAAKmb,EAAK5W,EAAI2W,GAAMS,EAAKE,GAAM,EAEpCwF,EAAK9N,KAAKoE,OAAOgE,EAAKV,GAAME,GAAIuG,QAAQ,IAExCJ,EAAK/N,KAAKoE,OAAOkE,EAAKZ,GAAME,GAAIuG,QAAQ,IACxCL,EAAK3F,EAAKV,EAAKzH,KAAK+B,GAAK+L,EAAKA,EAC9BC,EAAK1F,EAAKZ,EAAKzH,KAAK+B,GAAKgM,EAAKA,EAC9BD,EAAK,IAAMA,EAAe,EAAV9N,KAAK+B,GAAS+L,GAC9BC,EAAK,IAAMA,EAAe,EAAV/N,KAAK+B,GAASgM,GAC1BJ,GAAcG,EAAKC,IACrBD,GAAoB,EAAV9N,KAAK+B,KAEZ4L,GAAcI,EAAKD,IACtBC,GAAoB,EAAV/N,KAAK+B,GAEnB,CAMA,IAAIqM,EAAKL,EAAKD,EACd,GAAI9N,KAAKoG,IAAIgI,GAAMJ,EAAM,CACvB,IAAIK,EAAQN,EACRO,EAAQjG,EACRkG,EAAQjG,EACZyF,EAAKD,EAAKE,GAAQL,GAAcI,EAAKD,EAAK,GAAK,GAG/C7B,EAAMuB,EAFNnF,EAAKZ,EAAKE,EAAK3H,KAAKkC,IAAI6L,GACxBzF,EAAKZ,EAAKE,EAAK5H,KAAKoC,IAAI2L,GACNpG,EAAIC,EAAI6F,EAAO,EAAGE,EAAYW,EAAOC,EAAO,CAACR,EAAIM,EAAO5G,EAAIC,GAChF,CACA0G,EAAKL,EAAKD,EACV,IAAIU,EAAKxO,KAAKkC,IAAI4L,GACdW,EAAKzO,KAAKoC,IAAI0L,GACdY,EAAK1O,KAAKkC,IAAI6L,GACdY,EAAK3O,KAAKoC,IAAI2L,GACdjkB,EAAIkW,KAAK4O,IAAIR,EAAK,GAClBS,EAAK,EAAI,EAAIlH,EAAK7d,EAClBglB,EAAK,EAAI,EAAIlH,EAAK9d,EAClBilB,EAAK,CAAC5G,EAAIC,GACV4G,EAAK,CAAC7G,EAAK0G,EAAKJ,EAAIrG,EAAK0G,EAAKN,GAC9BS,EAAK,CAAC5G,EAAKwG,EAAKF,EAAIrG,EAAKwG,EAAKJ,GAC9BQ,EAAK,CAAC7G,EAAIC,GAGd,GAFA0G,EAAG,GAAK,EAAID,EAAG,GAAKC,EAAG,GACvBA,EAAG,GAAK,EAAID,EAAG,GAAKC,EAAG,GACnBpB,EACF,MAAO,CAACoB,EAAIC,EAAIC,GAAI5V,OAAO2S,GAI7B,IADA,IAAIkD,EAAS,GACJloB,EAAI,EAAG4lB,GAFhBZ,EAAM,CAAC+C,EAAIC,EAAIC,GAAI5V,OAAO2S,GAAKmD,OAAOC,MAAM,MAEnBzoB,OAAQK,EAAI4lB,EAAI5lB,IACvCkoB,EAAOloB,GAAKA,EAAI,EAAI+X,EAAOiN,EAAIhlB,EAAI,GAAIglB,EAAIhlB,GAAIilB,GAAKjb,EAAI+N,EAAOiN,EAAIhlB,GAAIglB,EAAIhlB,EAAI,GAAIilB,GAAKlb,EAE1F,OAAOme,CACT,EACIG,EAAc,SAAqB1iB,EAAM2iB,GAC3C,IA0BI1C,EA1BA1I,EAAIgI,EAAevf,GACnB4iB,EAAKD,GAASpD,EAAeoD,GAC7BljB,EAAQ,CACV2E,EAAG,EACHC,EAAG,EACHwe,GAAI,EACJC,GAAI,EACJC,EAAG,EACHC,EAAG,EACHC,GAAI,KACJC,GAAI,MAEFC,EAAS,CACX/e,EAAG,EACHC,EAAG,EACHwe,GAAI,EACJC,GAAI,EACJC,EAAG,EACHC,EAAG,EACHC,GAAI,KACJC,GAAI,MAEFE,EAAS,GACTC,EAAS,GACTC,EAAS,GACTC,EAAO,GAEPC,EAAc,SAAqBxjB,EAAMkf,EAAGqE,GAC9C,IAAIE,EACAC,EACJ,IAAK1jB,EACH,MAAO,CAAC,IAAKkf,EAAE9a,EAAG8a,EAAE7a,EAAG6a,EAAE9a,EAAG8a,EAAE7a,EAAG6a,EAAE9a,EAAG8a,EAAE7a,GAM1C,SAJErE,EAAK,IAAM,CACX2jB,EAAG,EACHC,EAAG,MACE1E,EAAE+D,GAAK/D,EAAEgE,GAAK,MACbljB,EAAK,IACX,IAAK,IACHkf,EAAE6D,EAAI/iB,EAAK,GACXkf,EAAE8D,EAAIhjB,EAAK,GACX,MACF,IAAK,IACHA,EAAO,CAAC,KAAK0M,OAAOkU,EAAIpmB,MAAM,EAAG,CAAC0kB,EAAE9a,EAAG8a,EAAE7a,GAAGqI,OAAO1M,EAAKmgB,MAAM,MAC9D,MACF,IAAK,IACU,MAAToD,GAAyB,MAATA,GAElBE,EAAW,EAANvE,EAAE9a,EAAQ8a,EAAE2D,GACjBa,EAAW,EAANxE,EAAE7a,EAAQ6a,EAAE4D,KAGjBW,EAAKvE,EAAE9a,EACPsf,EAAKxE,EAAE7a,GAETrE,EAAO,CAAC,IAAKyjB,EAAIC,GAAIhX,OAAO1M,EAAKmgB,MAAM,IACvC,MACF,IAAK,IACU,MAAToD,GAAyB,MAATA,GAElBrE,EAAE+D,GAAW,EAAN/D,EAAE9a,EAAQ8a,EAAE+D,GACnB/D,EAAEgE,GAAW,EAANhE,EAAE7a,EAAQ6a,EAAEgE,KAGnBhE,EAAE+D,GAAK/D,EAAE9a,EACT8a,EAAEgE,GAAKhE,EAAE7a,GAEXrE,EAAO,CAAC,KAAK0M,OAAO6T,EAAIrB,EAAE9a,EAAG8a,EAAE7a,EAAG6a,EAAE+D,GAAI/D,EAAEgE,GAAIljB,EAAK,GAAIA,EAAK,KAC5D,MACF,IAAK,IACHkf,EAAE+D,GAAKjjB,EAAK,GACZkf,EAAEgE,GAAKljB,EAAK,GACZA,EAAO,CAAC,KAAK0M,OAAO6T,EAAIrB,EAAE9a,EAAG8a,EAAE7a,EAAGrE,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,KAClE,MACF,IAAK,IACHA,EAAO,CAAC,KAAK0M,OAAO4T,EAAIpB,EAAE9a,EAAG8a,EAAE7a,EAAGrE,EAAK,GAAIA,EAAK,KAChD,MACF,IAAK,IACHA,EAAO,CAAC,KAAK0M,OAAO4T,EAAIpB,EAAE9a,EAAG8a,EAAE7a,EAAGrE,EAAK,GAAIkf,EAAE7a,IAC7C,MACF,IAAK,IACHrE,EAAO,CAAC,KAAK0M,OAAO4T,EAAIpB,EAAE9a,EAAG8a,EAAE7a,EAAG6a,EAAE9a,EAAGpE,EAAK,KAC5C,MACF,IAAK,IACHA,EAAO,CAAC,KAAK0M,OAAO4T,EAAIpB,EAAE9a,EAAG8a,EAAE7a,EAAG6a,EAAE6D,EAAG7D,EAAE8D,IAK7C,OAAOhjB,CACT,EACI6jB,EAAS,SAAgBC,EAAIzpB,GAC/B,GAAIypB,EAAGzpB,GAAGL,OAAS,EAAG,CACpB8pB,EAAGzpB,GAAG0pB,QAEN,IADA,IAAI7O,EAAK4O,EAAGzpB,GACL6a,EAAGlb,QACRopB,EAAO/oB,GAAK,IACZuoB,IAAOS,EAAOhpB,GAAK,KACnBypB,EAAGvpB,OAAOF,IAAK,EAAG,CAAC,KAAKqS,OAAOwI,EAAG3a,OAAO,EAAG,KAE9CupB,EAAGvpB,OAAOF,EAAG,GACb4lB,EAAK7M,KAAKE,IAAIiE,EAAEvd,OAAQ4oB,GAAMA,EAAG5oB,QAAU,EAC7C,CACF,EACIgqB,EAAO,SAAcC,EAAOtB,EAAOuB,EAAIC,EAAI9pB,GACzC4pB,GAAStB,GAAyB,MAAhBsB,EAAM5pB,GAAG,IAA8B,MAAhBsoB,EAAMtoB,GAAG,KACpDsoB,EAAMpoB,OAAOF,EAAG,EAAG,CAAC,IAAK8pB,EAAG/f,EAAG+f,EAAG9f,IAClC6f,EAAGrB,GAAK,EACRqB,EAAGpB,GAAK,EACRoB,EAAG9f,EAAI6f,EAAM5pB,GAAG,GAChB6pB,EAAG7f,EAAI4f,EAAM5pB,GAAG,GAChB4lB,EAAK7M,KAAKE,IAAIiE,EAAEvd,OAAQ4oB,GAAMA,EAAG5oB,QAAU,GAE/C,EACAimB,EAAK7M,KAAKE,IAAIiE,EAAEvd,OAAQ4oB,GAAMA,EAAG5oB,QAAU,GAC3C,IAAK,IAAIK,EAAI,EAAGA,EAAI4lB,EAAI5lB,IAAK,CAC3Bkd,EAAEld,KAAOipB,EAAS/L,EAAEld,GAAG,IACR,MAAXipB,IAEFF,EAAO/oB,GAAKipB,EACZjpB,IAAMkpB,EAAOH,EAAO/oB,EAAI,KAG1Bkd,EAAEld,GAAKmpB,EAAYjM,EAAEld,GAAIoF,EAAO8jB,GACd,MAAdH,EAAO/oB,IAAyB,MAAXipB,IAAgBF,EAAO/oB,GAAK,KAGrDwpB,EAAOtM,EAAGld,GACNuoB,IAEFA,EAAGvoB,KAAOipB,EAASV,EAAGvoB,GAAG,IACV,MAAXipB,IACFD,EAAOhpB,GAAKipB,EACZjpB,IAAMkpB,EAAOF,EAAOhpB,EAAI,KAE1BuoB,EAAGvoB,GAAKmpB,EAAYZ,EAAGvoB,GAAI8oB,EAAQI,GACjB,MAAdF,EAAOhpB,IAAyB,MAAXipB,IACvBD,EAAOhpB,GAAK,KAEdwpB,EAAOjB,EAAIvoB,IAEb2pB,EAAKzM,EAAGqL,EAAInjB,EAAO0jB,EAAQ9oB,GAC3B2pB,EAAKpB,EAAIrL,EAAG4L,EAAQ1jB,EAAOpF,GAC3B,IAAI+pB,EAAM7M,EAAEld,GACRgqB,EAAOzB,GAAMA,EAAGvoB,GAChBiqB,EAASF,EAAIpqB,OACbuqB,EAAU3B,GAAMyB,EAAKrqB,OACzByF,EAAM2E,EAAIggB,EAAIE,EAAS,GACvB7kB,EAAM4E,EAAI+f,EAAIE,EAAS,GACvB7kB,EAAMojB,GAAK2B,WAAWJ,EAAIE,EAAS,KAAO7kB,EAAM2E,EAChD3E,EAAMqjB,GAAK0B,WAAWJ,EAAIE,EAAS,KAAO7kB,EAAM4E,EAChD8e,EAAON,GAAKD,IAAO4B,WAAWH,EAAKE,EAAU,KAAOpB,EAAO/e,GAC3D+e,EAAOL,GAAKF,IAAO4B,WAAWH,EAAKE,EAAU,KAAOpB,EAAO9e,GAC3D8e,EAAO/e,EAAIwe,GAAMyB,EAAKE,EAAU,GAChCpB,EAAO9e,EAAIue,GAAMyB,EAAKE,EAAU,EAClC,CACA,OAAO3B,EAAK,CAACrL,EAAGqL,GAAMrL,CACxB,EACIkN,EAAM,gBACNC,EAAiB,SAAwB1kB,GAC3C,OAAOA,EAAKwiB,KAAK,KAAKzD,QAAQ0F,EAAK,KACrC,EACIE,EAAQ,SAAeznB,EAAG0nB,EAAIhC,EAAIiC,EAAIC,GAGxC,OAAO5nB,GADEA,IADC,EAAI0nB,EAAK,EAAIhC,EAAK,EAAIiC,EAAK,EAAIC,GACvB,EAAIF,EAAK,GAAKhC,EAAK,EAAIiC,GACzB,EAAID,EAAK,EAAIhC,CAC/B,EACImC,EAAS,SAAgBxJ,EAAIC,EAAIC,EAAIC,EAAIsJ,EAAIC,EAAIC,EAAIC,EAAIvG,GACjD,OAANA,IACFA,EAAI,GAQN,IALA,IAAIwG,GADJxG,EAAIA,EAAI,EAAI,EAAIA,EAAI,EAAI,EAAIA,GACf,EAETyG,EAAU,EAAE,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OACzGC,EAAU,CAAC,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,OACnGC,EAAM,EACDlrB,EAAI,EAAGA,EAJR,GAIeA,IAAK,CAC1B,IAAImrB,EAAKJ,EAAKC,EAAQhrB,GAAK+qB,EACvBK,EAAQd,EAAMa,EAAIjK,EAAIE,EAAIuJ,EAAIE,GAC9BQ,EAAQf,EAAMa,EAAIhK,EAAIE,EAAIuJ,EAAIE,GAC9BQ,EAAOF,EAAQA,EAAQC,EAAQA,EACnCH,GAAOD,EAAQjrB,GAAK+Y,KAAK2C,KAAK4P,EAChC,CACA,OAAOP,EAAKG,CACd,EACIK,EAAW,SAAkBC,EAAIC,EAAIvK,EAAIC,EAAIC,EAAIC,EAAIsJ,EAAIC,GAO3D,IANA,IAEI3N,EACA8E,EACAkC,EACAphB,EALA6oB,EAAU,GACVC,EAAS,CAAC,GAAI,IAKT3rB,EAAI,EAAGA,EAAI,IAAKA,EAUvB,GATU,IAANA,GACF+hB,EAAI,EAAIyJ,EAAK,GAAKtK,EAAK,EAAIE,EAC3BnE,GAAK,EAAIuO,EAAK,EAAItK,EAAK,EAAIE,EAAK,EAAIuJ,EACpC1G,EAAI,EAAI/C,EAAK,EAAIsK,IAEjBzJ,EAAI,EAAI0J,EAAK,GAAKtK,EAAK,EAAIE,EAC3BpE,GAAK,EAAIwO,EAAK,EAAItK,EAAK,EAAIE,EAAK,EAAIuJ,EACpC3G,EAAI,EAAI9C,EAAK,EAAIsK,GAEf1S,KAAKoG,IAAIlC,GAAK,MAAlB,CACE,GAAIlE,KAAKoG,IAAI4C,GAAK,MAChB,UAEFlf,GAAKohB,EAAIlC,GACD,GAAKlf,EAAI,GACf6oB,EAAQrsB,KAAKwD,EAGjB,KATA,CAUA,IAAI+oB,EAAO7J,EAAIA,EAAI,EAAIkC,EAAIhH,EACvB4O,EAAW9S,KAAK2C,KAAKkQ,GACzB,KAAIA,EAAO,GAAX,CAGA,IAAIxoB,IAAO2e,EAAI8J,IAAa,EAAI5O,GAC5B7Z,EAAK,GAAKA,EAAK,GACjBsoB,EAAQrsB,KAAK+D,GAEf,IAAID,IAAO4e,EAAI8J,IAAa,EAAI5O,GAC5B9Z,EAAK,GAAKA,EAAK,GACjBuoB,EAAQrsB,KAAK8D,EAPf,CALA,CAkBF,IAHA,IAEI2oB,EAFA9lB,EAAI0lB,EAAQ/rB,OACZosB,EAAO/lB,EAEJA,KAEL8lB,EAAK,GADLjpB,EAAI6oB,EAAQ1lB,IAEZ2lB,EAAO,GAAG3lB,GAAK8lB,EAAKA,EAAKA,EAAKN,EAAK,EAAIM,EAAKA,EAAKjpB,EAAIqe,EAAK,EAAI4K,EAAKjpB,EAAIA,EAAIue,EAAKve,EAAIA,EAAIA,EAAI8nB,EAC5FgB,EAAO,GAAG3lB,GAAK8lB,EAAKA,EAAKA,EAAKL,EAAK,EAAIK,EAAKA,EAAKjpB,EAAIse,EAAK,EAAI2K,EAAKjpB,EAAIA,EAAIwe,EAAKxe,EAAIA,EAAIA,EAAI+nB,EAO9F,OALAe,EAAO,GAAGI,GAAQP,EAClBG,EAAO,GAAGI,GAAQN,EAClBE,EAAO,GAAGI,EAAO,GAAKpB,EACtBgB,EAAO,GAAGI,EAAO,GAAKnB,EACtBe,EAAO,GAAGhsB,OAASgsB,EAAO,GAAGhsB,OAASosB,EAAO,EACtC,CACL/S,IAAK,CACHjP,EAAGgP,KAAKC,IAAI7Y,MAAM,EAAGwrB,EAAO,IAC5B3hB,EAAG+O,KAAKC,IAAI7Y,MAAM,EAAGwrB,EAAO,KAE9B1S,IAAK,CACHlP,EAAGgP,KAAKE,IAAI9Y,MAAM,EAAGwrB,EAAO,IAC5B3hB,EAAG+O,KAAKE,IAAI9Y,MAAM,EAAGwrB,EAAO,KAGlC,EACIK,EAAY,SAAmB9K,EAAIC,EAAIC,EAAIC,EAAIsJ,EAAIC,EAAIC,EAAIC,GAC7D,KAAI/R,KAAKE,IAAIiI,EAAIE,GAAMrI,KAAKC,IAAI2R,EAAIE,IAAO9R,KAAKC,IAAIkI,EAAIE,GAAMrI,KAAKE,IAAI0R,EAAIE,IAAO9R,KAAKE,IAAIkI,EAAIE,GAAMtI,KAAKC,IAAI4R,EAAIE,IAAO/R,KAAKC,IAAImI,EAAIE,GAAMtI,KAAKE,IAAI2R,EAAIE,IAAzJ,CAGA,IAEImB,GAAe/K,EAAKE,IAAOwJ,EAAKE,IAAO3J,EAAKE,IAAOsJ,EAAKE,GAC5D,GAAKoB,EAAL,CAGA,IAAIC,IANMhL,EAAKG,EAAKF,EAAKC,IAAOuJ,EAAKE,IAAO3J,EAAKE,IAAOuJ,EAAKG,EAAKF,EAAKC,IAMzDoB,EACVE,IANMjL,EAAKG,EAAKF,EAAKC,IAAOwJ,EAAKE,IAAO3J,EAAKE,IAAOsJ,EAAKG,EAAKF,EAAKC,IAMzDoB,EACVG,GAAOF,EAAGhF,QAAQ,GAClBmF,GAAOF,EAAGjF,QAAQ,GACtB,KAAIkF,GAAOrT,KAAKC,IAAIkI,EAAIE,GAAI8F,QAAQ,IAAMkF,GAAOrT,KAAKE,IAAIiI,EAAIE,GAAI8F,QAAQ,IAAMkF,GAAOrT,KAAKC,IAAI2R,EAAIE,GAAI3D,QAAQ,IAAMkF,GAAOrT,KAAKE,IAAI0R,EAAIE,GAAI3D,QAAQ,IAAMmF,GAAOtT,KAAKC,IAAImI,EAAIE,GAAI6F,QAAQ,IAAMmF,GAAOtT,KAAKE,IAAIkI,EAAIE,GAAI6F,QAAQ,IAAMmF,GAAOtT,KAAKC,IAAI4R,EAAIE,GAAI5D,QAAQ,IAAMmF,GAAOtT,KAAKE,IAAI2R,EAAIE,GAAI5D,QAAQ,IAG9S,MAAO,CACLnd,EAAGmiB,EACHliB,EAAGmiB,EAVL,CANA,CAkBF,EACIG,EAAoB,SAA2B1e,EAAM7D,EAAGC,GAC1D,OAAOD,GAAK6D,EAAK7D,GAAKA,GAAK6D,EAAK7D,EAAI6D,EAAKf,OAAS7C,GAAK4D,EAAK5D,GAAKA,GAAK4D,EAAK5D,EAAI4D,EAAKd,MACtF,EACIyf,EAAW,SAAkBxiB,EAAGC,EAAGwiB,EAAGrI,EAAGnG,GAC3C,GAAIA,EACF,MAAO,CAAC,CAAC,KAAMjU,IAAKiU,EAAGhU,GAAI,CAAC,IAAKwiB,EAAQ,EAAJxO,EAAO,GAAI,CAAC,IAAKA,EAAGA,EAAG,EAAG,EAAG,EAAGA,EAAGA,GAAI,CAAC,IAAK,EAAGmG,EAAQ,EAAJnG,GAAQ,CAAC,IAAKA,EAAGA,EAAG,EAAG,EAAG,GAAIA,EAAGA,GAAI,CAAC,IAAS,EAAJA,EAAQwO,EAAG,GAAI,CAAC,IAAKxO,EAAGA,EAAG,EAAG,EAAG,GAAIA,GAAIA,GAAI,CAAC,IAAK,EAAO,EAAJA,EAAQmG,GAAI,CAAC,IAAKnG,EAAGA,EAAG,EAAG,EAAG,EAAGA,GAAIA,GAAI,CAAC,MAEtO,IAAIgH,EAAM,CAAC,CAAC,IAAKjb,EAAGC,GAAI,CAAC,IAAKwiB,EAAG,GAAI,CAAC,IAAK,EAAGrI,GAAI,CAAC,KAAMqI,EAAG,GAAI,CAAC,MAGjE,OADAxH,EAAIqF,eAAiBA,EACdrF,CACT,EACI3E,EAAM,SAAatW,EAAGC,EAAG6C,EAAOC,GAUlC,OATU,OAAN/C,IACFA,EAAIC,EAAI6C,EAAQC,EAAS,GAEjB,OAAN9C,IACFA,EAAID,EAAEC,EACN6C,EAAQ9C,EAAE8C,MACVC,EAAS/C,EAAE+C,OACX/C,EAAIA,EAAEA,GAED,CACLA,EAAGA,EACHC,EAAGA,EACH6C,MAAOA,EACP2f,EAAG3f,EACHC,OAAQA,EACRqX,EAAGrX,EACHsU,GAAIrX,EAAI8C,EACRwU,GAAIrX,EAAI8C,EACR0T,GAAIzW,EAAI8C,EAAQ,EAChB4T,GAAIzW,EAAI8C,EAAS,EACjB2f,GAAI1T,KAAKC,IAAInM,EAAOC,GAAU,EAC9B4f,GAAI3T,KAAKE,IAAIpM,EAAOC,GAAU,EAC9B6f,GAAI5T,KAAK2C,KAAK7O,EAAQA,EAAQC,EAASA,GAAU,EACjDnH,KAAM4mB,EAASxiB,EAAGC,EAAG6C,EAAOC,GAC5B8f,GAAI,CAAC7iB,EAAGC,EAAG6C,EAAOC,GAAQqb,KAAK,KAEnC,EAMI0E,EAAa,SAAoBC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,IACjE,QAAQP,KACXA,EAAM,CAACA,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,IAE5C,IAAIzf,EAAO2d,EAASprB,MAAM,KAAM2sB,GAChC,OAAOzM,EAAIzS,EAAKoL,IAAIjP,EAAG6D,EAAKoL,IAAIhP,EAAG4D,EAAKqL,IAAIlP,EAAI6D,EAAKoL,IAAIjP,EAAG6D,EAAKqL,IAAIjP,EAAI4D,EAAKoL,IAAIhP,EACpF,EACIsjB,EAAoB,SAA2BR,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKxqB,GACzF,IAAIO,EAAK,EAAIP,EACT0qB,EAAMxU,KAAK0B,IAAIrX,EAAI,GACnBoqB,EAAMzU,KAAK0B,IAAIrX,EAAI,GACnBD,EAAKN,EAAIA,EACT4qB,EAAKtqB,EAAKN,EAGVyiB,EAAKwH,EAAM,EAAIjqB,GAAKmqB,EAAMF,GAAO3pB,GAAM+pB,EAAM,EAAIF,EAAMF,GACvDvH,EAAKwH,EAAM,EAAIlqB,GAAKoqB,EAAMF,GAAO5pB,GAAMgqB,EAAM,EAAIF,EAAMF,GACvD3D,EAAK4D,EAAM,EAAInqB,GAAKqqB,EAAMF,GAAO7pB,GAAMiqB,EAAM,EAAIF,EAAMF,GACvD3D,EAAK4D,EAAM,EAAIpqB,GAAKsqB,EAAMF,GAAO9pB,GAAMkqB,EAAM,EAAIF,EAAMF,GAO3D,MAAO,CACLljB,EAbMwjB,EAAMT,EAAY,EAANU,EAAU3qB,EAAImqB,EAAW,EAAL5pB,EAASP,EAAIA,EAAIqqB,EAAMO,EAAKL,EAclEpjB,EAbMujB,EAAMR,EAAY,EAANS,EAAU3qB,EAAIoqB,EAAW,EAAL7pB,EAASP,EAAIA,EAAIsqB,EAAMM,EAAKJ,EAclExY,EAAG,CACD9K,EAAGub,EACHtb,EAAGub,GAELmI,EAAG,CACD3jB,EAAGqf,EACHpf,EAAGqf,GAEL7D,MAAO,CACLzb,EAlBK3G,EAAK0pB,EAAMjqB,EAAImqB,EAmBpBhjB,EAlBK5G,EAAK2pB,EAAMlqB,EAAIoqB,GAoBtBU,IAAK,CACH5jB,EApBK3G,EAAK8pB,EAAMrqB,EAAIuqB,EAqBpBpjB,EApBK5G,EAAK+pB,EAAMtqB,EAAIwqB,GAsBtBO,MArBU,GAAoC,IAA/B7U,KAAKqG,MAAMkG,EAAK8D,EAAI7D,EAAK8D,GAAYtQ,KAAK+B,GAuB7D,EACI+S,EAAc,SAAqBC,EAAMC,EAAMC,GAGjD,IAvDoB,SAAyB9P,EAAOC,GAGpD,OAFAD,EAAQmC,EAAInC,GACZC,EAAQkC,EAAIlC,GACLmO,EAAkBnO,EAAOD,EAAMnU,EAAGmU,EAAMlU,IAAMsiB,EAAkBnO,EAAOD,EAAMkD,GAAIlD,EAAMlU,IAAMsiB,EAAkBnO,EAAOD,EAAMnU,EAAGmU,EAAMmD,KAAOiL,EAAkBnO,EAAOD,EAAMkD,GAAIlD,EAAMmD,KAAOiL,EAAkBpO,EAAOC,EAAMpU,EAAGoU,EAAMnU,IAAMsiB,EAAkBpO,EAAOC,EAAMiD,GAAIjD,EAAMnU,IAAMsiB,EAAkBpO,EAAOC,EAAMpU,EAAGoU,EAAMkD,KAAOiL,EAAkBpO,EAAOC,EAAMiD,GAAIjD,EAAMkD,MAAQnD,EAAMnU,EAAIoU,EAAMiD,IAAMlD,EAAMnU,EAAIoU,EAAMpU,GAAKoU,EAAMpU,EAAImU,EAAMkD,IAAMjD,EAAMpU,EAAImU,EAAMnU,KAAOmU,EAAMlU,EAAImU,EAAMkD,IAAMnD,EAAMlU,EAAImU,EAAMnU,GAAKmU,EAAMnU,EAAIkU,EAAMmD,IAAMlD,EAAMnU,EAAIkU,EAAMlU,EAC3iB,CAmDOikB,CAFOpB,EAAWiB,GACXjB,EAAWkB,IAErB,OAAOC,EAAY,EAAI,GAUzB,IARA,IAEIE,KAFKxD,EAAOvqB,MAAM,EAAG2tB,GAER,GACbK,KAFKzD,EAAOvqB,MAAM,EAAG4tB,GAER,GACbK,EAAQ,GACRC,EAAQ,GACRzH,EAAK,CAAC,EACN5B,EAAMgJ,EAAY,EAAI,GACjBhuB,EAAI,EAAGA,EAAIkuB,EAAK,EAAGluB,IAAK,CAC/B,IAAI6kB,EAAIyI,EAAkBntB,MAAM,EAAG2tB,EAAKzb,OAAOrS,EAAIkuB,IACnDE,EAAM/uB,KAAK,CACT0K,EAAG8a,EAAE9a,EACLC,EAAG6a,EAAE7a,EACLnH,EAAG7C,EAAIkuB,GAEX,CACA,IAASluB,EAAI,EAAGA,EAAImuB,EAAK,EAAGnuB,IAAK,CAC3B6kB,EAAIyI,EAAkBntB,MAAM,EAAG4tB,EAAK1b,OAAOrS,EAAImuB,IACnDE,EAAMhvB,KAAK,CACT0K,EAAG8a,EAAE9a,EACLC,EAAG6a,EAAE7a,EACLnH,EAAG7C,EAAImuB,GAEX,CACA,IAASnuB,EAAI,EAAGA,EAAIkuB,EAAIluB,IACtB,IAAK,IAAIgG,EAAI,EAAGA,EAAImoB,EAAInoB,IAAK,CAC3B,IAAIsoB,EAAKF,EAAMpuB,GACXuuB,EAAMH,EAAMpuB,EAAI,GAChBwuB,EAAKH,EAAMroB,GACXyoB,EAAMJ,EAAMroB,EAAI,GAChB0oB,EAAK3V,KAAKoG,IAAIoP,EAAIxkB,EAAIukB,EAAGvkB,GAAK,KAAQ,IAAM,IAC5C4kB,EAAK5V,KAAKoG,IAAIsP,EAAI1kB,EAAIykB,EAAGzkB,GAAK,KAAQ,IAAM,IAC5C6kB,EAAK5C,EAAUsC,EAAGvkB,EAAGukB,EAAGtkB,EAAGukB,EAAIxkB,EAAGwkB,EAAIvkB,EAAGwkB,EAAGzkB,EAAGykB,EAAGxkB,EAAGykB,EAAI1kB,EAAG0kB,EAAIzkB,GACpE,GAAI4kB,EAAI,CACN,GAAIhI,EAAGgI,EAAG7kB,EAAEmd,QAAQ,MAAQ0H,EAAG5kB,EAAEkd,QAAQ,GACvC,SAEFN,EAAGgI,EAAG7kB,EAAEmd,QAAQ,IAAM0H,EAAG5kB,EAAEkd,QAAQ,GACnC,IAAI9jB,EAAKkrB,EAAGzrB,EAAIkW,KAAKoG,KAAKyP,EAAGF,GAAMJ,EAAGI,KAAQH,EAAIG,GAAMJ,EAAGI,MAASH,EAAI1rB,EAAIyrB,EAAGzrB,GAC3EM,EAAKqrB,EAAG3rB,EAAIkW,KAAKoG,KAAKyP,EAAGD,GAAMH,EAAGG,KAAQF,EAAIE,GAAMH,EAAGG,MAASF,EAAI5rB,EAAI2rB,EAAG3rB,GAC3EO,GAAM,GAAKA,GAAM,GAAKD,GAAM,GAAKA,GAAM,IACrC6qB,EAEFhJ,GAAO,EAGPA,EAAI3lB,KAAK,CACP0K,EAAG6kB,EAAG7kB,EACNC,EAAG4kB,EAAG5kB,EACN5G,GAAIA,EACJD,GAAIA,IAIZ,CACF,CAEF,OAAO6hB,CACT,EAkEI6J,EAAe,SAAsBjF,EAAOtB,GAC9C,OAlEoB,SAAyBsB,EAAOtB,EAAO0F,GAG3D,IAAI9M,EACAC,EACAC,EACAC,EACAyN,EACAC,EACAC,EACAC,EACAnB,EACAC,EAXJnE,EAAQvB,EAAYuB,GACpBtB,EAAQD,EAAYC,GAYpB,IADA,IAAItD,EAAMgJ,EAAY,EAAI,GACjBhuB,EAAI,EAAG4lB,EAAKgE,EAAMjqB,OAAQK,EAAI4lB,EAAI5lB,IAAK,CAC9C,IAAI6a,EAAK+O,EAAM5pB,GACf,GAAc,MAAV6a,EAAG,GACLqG,EAAK4N,EAAMjU,EAAG,GACdsG,EAAK4N,EAAMlU,EAAG,OACT,CACS,MAAVA,EAAG,IACLiT,EAAO,CAAC5M,EAAIC,GAAI9O,OAAOwI,EAAGiL,MAAM,IAChC5E,EAAK4M,EAAK,GACV3M,EAAK2M,EAAK,KAEVA,EAAO,CAAC5M,EAAIC,EAAID,EAAIC,EAAI2N,EAAKC,EAAKD,EAAKC,GACvC7N,EAAK4N,EACL3N,EAAK4N,GAEP,IAAK,IAAI/oB,EAAI,EAAG6f,EAAKyC,EAAM3oB,OAAQqG,EAAI6f,EAAI7f,IAAK,CAC9C,IAAIkpB,EAAK5G,EAAMtiB,GACf,GAAc,MAAVkpB,EAAG,GACL9N,EAAK4N,EAAME,EAAG,GACd7N,EAAK4N,EAAMC,EAAG,OACT,CACS,MAAVA,EAAG,IACLnB,EAAO,CAAC3M,EAAIC,GAAIhP,OAAO6c,EAAGpJ,MAAM,IAChC1E,EAAK2M,EAAK,GACV1M,EAAK0M,EAAK,KAEVA,EAAO,CAAC3M,EAAIC,EAAID,EAAIC,EAAI2N,EAAKC,EAAKD,EAAKC,GACvC7N,EAAK4N,EACL3N,EAAK4N,GAEP,IAAIE,EAAOtB,EAAYC,EAAMC,EAAMC,GACnC,GAAIA,EAEFhJ,GAAOmK,MACF,CAEL,IAAK,IAAI3pB,EAAI,EAAGwgB,EAAKmJ,EAAKxvB,OAAQ6F,EAAIwgB,EAAIxgB,IACxC2pB,EAAK3pB,GAAG4pB,SAAWpvB,EACnBmvB,EAAK3pB,GAAG6pB,SAAWrpB,EACnBmpB,EAAK3pB,GAAGsoB,KAAOA,EACfqB,EAAK3pB,GAAGuoB,KAAOA,EAGjB/I,EAAMA,EAAI3S,OAAO8c,EACnB,CACF,CACF,CACF,CACF,CACA,OAAOnK,CACT,CAESsK,CAAgB1F,EAAOtB,EAChC,EACA,SAASiH,EAAY/P,EAAQ3c,GAC3B,IAAIiL,EAAO,GACP2D,EAAQ,GAsBZ,OAHI+N,EAAO7f,QAlBX,SAAS6vB,EAAQhQ,EAAQ3c,GACvB,GAAsB,IAAlB2c,EAAO7f,OACTmO,EAAKzO,KAAKmgB,EAAO,IACjB/N,EAAMpS,KAAKmgB,EAAO,QACb,CAEL,IADA,IAAIiQ,EAAe,GACVzvB,EAAI,EAAGA,EAAIwf,EAAO7f,OAAS,EAAGK,IAC3B,IAANA,GACF8N,EAAKzO,KAAKmgB,EAAO,IAEfxf,IAAMwf,EAAO7f,OAAS,GACxB8R,EAAMpS,KAAKmgB,EAAOxf,EAAI,IAExByvB,EAAazvB,GAAK,EAAE,EAAI6C,GAAK2c,EAAOxf,GAAG,GAAK6C,EAAI2c,EAAOxf,EAAI,GAAG,IAAK,EAAI6C,GAAK2c,EAAOxf,GAAG,GAAK6C,EAAI2c,EAAOxf,EAAI,GAAG,IAE/GwvB,EAAQC,EAAc5sB,EACxB,CACF,CAEE2sB,CAAQhQ,EAAQ3c,GAEX,CACLiL,KAAMA,EACN2D,MAAOA,EAAMie,UAEjB,CA+CA,IAAIC,EAAe,SAAsBnK,EAAOmI,EAAKiC,GACnD,GAAc,IAAVA,EACF,MAAO,CAAC,GAAGvd,OAAOmT,IAEpB,IAAItF,EAAW,GACf,GAAe,MAAXyN,EAAI,IAAyB,MAAXA,EAAI,IAAyB,MAAXA,EAAI,GAC1CzN,EAAWA,EAAS7N,OApDxB,SAAoBmT,EAAOmI,EAAKiC,GAC9B,IAAIpQ,EAAS,CAAC,CAACgG,EAAM,GAAIA,EAAM,KAC/BoK,EAAQA,GAAS,EACjB,IAAI1P,EAAW,GACA,MAAXyN,EAAI,IACNnO,EAAOngB,KAAKsuB,EAAI,IAChBnO,EAAOngB,KAAKsuB,EAAI,KACI,MAAXA,EAAI,IACbnO,EAAOngB,KAAK,CAACsuB,EAAI,GAAIA,EAAI,KACzBnO,EAAOngB,KAAK,CAACsuB,EAAI,GAAIA,EAAI,KACzBnO,EAAOngB,KAAK,CAACsuB,EAAI,GAAIA,EAAI,MACL,MAAXA,EAAI,IAAyB,MAAXA,EAAI,IAC/BnO,EAAOngB,KAAK,CAACsuB,EAAI,GAAIA,EAAI,KACzBnO,EAAOngB,KAAK,CAACsuB,EAAI,GAAIA,EAAI,MAEzBnO,EAAOngB,KAAK,CAACsuB,EAAI,GAAIA,EAAI,KAI3B,IAFA,IAAIkC,EAAerQ,EACf3c,EAAI,EAAI+sB,EACH5vB,EAAI,EAAGA,EAAI4vB,EAAQ,EAAG5vB,IAAK,CAClC,IACIooB,EAAQmH,EAAYM,EADfhtB,GAAK,EAAIA,EAAI7C,IAEtBkgB,EAAS7gB,KAAK+oB,EAAMta,MACpB+hB,EAAezH,EAAM3W,KACvB,CAoBA,OAnBAyO,EAAS7gB,KAAKwwB,GACD3P,EAAS4P,KAAI,SAAUxR,GAClC,IAAIyR,EAAM,GAeV,OAduB,IAAnBzR,EAAQ3e,SACVowB,EAAI1wB,KAAK,KACT0wB,EAAMA,EAAI1d,OAAOiM,EAAQ,KAEvBA,EAAQ3e,QAAU,IACG,IAAnB2e,EAAQ3e,QACVowB,EAAI1wB,KAAK,KAEX0wB,EAAMA,EAAI1d,OAAOiM,EAAQ,KAEJ,IAAnBA,EAAQ3e,QACVowB,EAAI1wB,KAAK,KAEL0wB,EAAI1d,OAAOiM,EAAQA,EAAQ3e,OAAS,GAE5C,GAEF,CAO+BqwB,CAAWxK,EAAOmI,EAAKiC,QAC7C,CACL,IAAIK,EAAO,GAAG5d,OAAOmT,GACL,MAAZyK,EAAK,KACPA,EAAK,GAAK,KAEZ,IAAK,IAAIjwB,EAAI,EAAGA,GAAK4vB,EAAQ,EAAG5vB,IAC9BkgB,EAAS7gB,KAAK4wB,EAElB,CACA,OAAO/P,CACT,EACIgQ,EAAW,SAAkBC,EAAQ3oB,GACvC,GAAsB,IAAlB2oB,EAAOxwB,OACT,OAAOwwB,EAET,IAAIC,EAAYD,EAAOxwB,OAAS,EAC5B0wB,EAAY7oB,EAAO7H,OAAS,EAC5B+E,EAAQ0rB,EAAYC,EACpBC,EAAiB,GACrB,GAAsB,IAAlBH,EAAOxwB,QAAiC,MAAjBwwB,EAAO,GAAG,GAAY,CAC/C,IAAK,IAAInwB,EAAI,EAAGA,EAAIqwB,EAAYD,EAAWpwB,IACzCmwB,EAAO9wB,KAAK8wB,EAAO,IAErB,OAAOA,CACT,CACA,IAASnwB,EAAI,EAAGA,EAAIqwB,EAAWrwB,IAAK,CAClC,IAAI8G,EAAQiS,KAAKwX,MAAM7rB,EAAQ1E,GAC/BswB,EAAexpB,IAAUwpB,EAAexpB,IAAU,GAAK,CACzD,CACA,IAAI0pB,EAASF,EAAeG,QAAO,SAAUD,EAAQZ,EAAO5vB,GAC1D,OAAIA,IAAMowB,EACDI,EAAOne,OAAO8d,EAAOC,IAEvBI,EAAOne,OAAOsd,EAAaQ,EAAOnwB,GAAImwB,EAAOnwB,EAAI,GAAI4vB,GAC9D,GAAG,IAKH,OAJAY,EAAO/b,QAAQ0b,EAAO,IACI,MAAtB3oB,EAAO6oB,IAA4C,MAAtB7oB,EAAO6oB,IACtCG,EAAOnxB,KAAK,KAEPmxB,CACT,EACIE,EAAU,SAAiBnf,EAAMC,GACnC,GAAID,EAAK5R,SAAW6R,EAAK7R,OACvB,OAAO,EAET,IAAI+R,GAAS,EAOb,OANA,QAAKH,GAAM,SAAUgF,EAAMvW,GACzB,GAAIuW,IAAS/E,EAAKxR,GAEhB,OADA0R,GAAS,GACF,CAEX,IACOA,CACT,EACA,SAASif,EAAWC,EAAKtgB,EAAKugB,GAC5B,IAAIppB,EAAO,KACPuR,EAAM6X,EASV,OARIvgB,EAAM0I,IACRA,EAAM1I,EACN7I,EAAO,OAELmpB,EAAM5X,IACRA,EAAM4X,EACNnpB,EAAO,OAEF,CACLA,KAAMA,EACNuR,IAAKA,EAET,CAKA,IAsCI8X,EAAiB,SAAwBX,EAAQ3oB,GACnD,IAAIupB,EAvCoB,SAA6BZ,EAAQ3oB,GAC7D,IAEIwpB,EACAC,EAHAb,EAAYD,EAAOxwB,OACnB0wB,EAAY7oB,EAAO7H,OAGnBswB,EAAO,EACX,GAAkB,IAAdG,GAAiC,IAAdC,EACrB,OAAO,KAGT,IADA,IAAIa,EAAO,GACFlxB,EAAI,EAAGA,GAAKowB,EAAWpwB,IAC9BkxB,EAAKlxB,GAAK,GACVkxB,EAAKlxB,GAAG,GAAK,CACXgZ,IAAKhZ,GAGT,IAAK,IAAIgG,EAAI,EAAGA,GAAKqqB,EAAWrqB,IAC9BkrB,EAAK,GAAGlrB,GAAK,CACXgT,IAAKhT,GAGT,IAAShG,EAAI,EAAGA,GAAKowB,EAAWpwB,IAE9B,IADAgxB,EAAgBb,EAAOnwB,EAAI,GAClBgG,EAAI,EAAGA,GAAKqqB,EAAWrqB,IAAK,CACnCirB,EAAgBzpB,EAAOxB,EAAI,GAEzBiqB,EADES,EAAQM,EAAeC,GAClB,EAEA,EAET,IAAIL,EAAMM,EAAKlxB,EAAI,GAAGgG,GAAGgT,IAAM,EAC3B1I,EAAM4gB,EAAKlxB,GAAGgG,EAAI,GAAGgT,IAAM,EAC3B6X,EAASK,EAAKlxB,EAAI,GAAGgG,EAAI,GAAGgT,IAAMiX,EACtCiB,EAAKlxB,GAAGgG,GAAK2qB,EAAWC,EAAKtgB,EAAKugB,EACpC,CAEF,OAAOK,CACT,CAEmBC,CAAoBhB,EAAQ3oB,GACzC4oB,EAAYD,EAAOxwB,OACnB0wB,EAAY7oB,EAAO7H,OACnByxB,EAAU,GACVtqB,EAAQ,EACRuqB,EAAS,EAEb,GAAIN,EAAWX,GAAWC,GAAWrX,MAAQoX,EAAW,CAEtD,IAAK,IAAIpwB,EAAI,EAAGA,GAAKowB,EAAWpwB,IAAK,CACnC,IAAIgZ,EAAM+X,EAAW/wB,GAAGA,GAAGgZ,IAC3BqY,EAASrxB,EACT,IAAK,IAAIgG,EAAIc,EAAOd,GAAKqqB,EAAWrqB,IAC9B+qB,EAAW/wB,GAAGgG,GAAGgT,IAAMA,IACzBA,EAAM+X,EAAW/wB,GAAGgG,GAAGgT,IACvBqY,EAASrrB,GAGbc,EAAQuqB,EACJN,EAAW/wB,GAAG8G,GAAOW,MACvB2pB,EAAQ/xB,KAAK,CACXyH,MAAO9G,EAAI,EACXyH,KAAMspB,EAAW/wB,GAAG8G,GAAOW,MAGjC,CAEA,IAASzH,EAAIoxB,EAAQzxB,OAAS,EAAGK,GAAK,EAAGA,IACvC8G,EAAQsqB,EAAQpxB,GAAG8G,MACK,QAApBsqB,EAAQpxB,GAAGyH,KACb0oB,EAAOjwB,OAAO4G,EAAO,EAAG,GAAGuL,OAAO8d,EAAOrpB,KAEzCqpB,EAAOjwB,OAAO4G,EAAO,EAG3B,CAGA,IAAIwqB,EAAOjB,GADXD,EAAYD,EAAOxwB,QAEnB,GAAIywB,EAAYC,EACd,IAASrwB,EAAI,EAAGA,EAAIsxB,EAAMtxB,IACS,MAA7BmwB,EAAOC,EAAY,GAAG,IAA2C,MAA7BD,EAAOC,EAAY,GAAG,GAC5DD,EAAOjwB,OAAOkwB,EAAY,EAAG,EAAGD,EAAOC,EAAY,IAEnDD,EAAO9wB,KAAK8wB,EAAOC,EAAY,IAEjCA,GAAa,EAGjB,OAAOD,CACT,EAEA,SAASoB,EAAa/R,EAAQgS,EAAQ5B,GAKpC,IAJA,IACI9oB,EADA4K,EAAS,GAAGW,OAAOmN,GAEnB3c,EAAI,GAAK+sB,EAAQ,GACjB6B,EAAYC,EAAkBF,GAAQ,GACjCxxB,EAAI,EAAGA,GAAK4vB,EAAO5vB,IAC1B6C,GAAK7C,EAES,KADd8G,EAAQiS,KAAKwX,MAAM/Q,EAAO7f,OAASkD,IAEjC6O,EAAO+C,QAAQ,CAACgd,EAAU,GAAK5uB,EAAI2c,EAAO1Y,GAAO,IAAM,EAAIjE,GAAI4uB,EAAU,GAAK5uB,EAAI2c,EAAO1Y,GAAO,IAAM,EAAIjE,KAE1G6O,EAAOxR,OAAO4G,EAAO,EAAG,CAAC2qB,EAAU,GAAK5uB,EAAI2c,EAAO1Y,GAAO,IAAM,EAAIjE,GAAI4uB,EAAU,GAAK5uB,EAAI2c,EAAO1Y,GAAO,IAAM,EAAIjE,KAGvH,OAAO6O,CACT,CAOA,SAASggB,EAAkBpT,GACzB,IAAIkB,EAAS,GACb,OAAQlB,EAAQ,IACd,IAAK,IAGL,IAAK,IAUL,IAAK,IACHkB,EAAOngB,KAAK,CAACif,EAAQ,GAAIA,EAAQ,KACjC,MATF,IAAK,IACHkB,EAAOngB,KAAK,CAACif,EAAQ,GAAIA,EAAQ,KACjC,MACF,IAAK,IAYL,IAAK,IACHkB,EAAOngB,KAAK,CAACif,EAAQ,GAAIA,EAAQ,KACjCkB,EAAOngB,KAAK,CAACif,EAAQ,GAAIA,EAAQ,KACjC,MARF,IAAK,IACHkB,EAAOngB,KAAK,CAACif,EAAQ,GAAIA,EAAQ,KACjCkB,EAAOngB,KAAK,CAACif,EAAQ,GAAIA,EAAQ,KACjCkB,EAAOngB,KAAK,CAACif,EAAQ,GAAIA,EAAQ,KACjC,MAKF,IAAK,IAGL,IAAK,IACHkB,EAAOngB,KAAK,CAACif,EAAQ,GAAIA,EAAQ,KAIrC,OAAOkB,CACT,CACA,IAAImS,EAAa,SAAoBjsB,EAAUD,GAC7C,GAAIC,EAAS/F,QAAU,EACrB,OAAO+F,EAGT,IADA,IAAI8Z,EACKxf,EAAI,EAAGA,EAAIyF,EAAO9F,OAAQK,IACjC,GAAI0F,EAAS1F,GAAG,KAAOyF,EAAOzF,GAAG,GAG/B,OADAwf,EAASkS,EAAkBhsB,EAAS1F,IAC5ByF,EAAOzF,GAAG,IAChB,IAAK,IACH0F,EAAS1F,GAAK,CAAC,KAAKqS,OAAOmN,EAAO,IAClC,MACF,IAAK,IACH9Z,EAAS1F,GAAK,CAAC,KAAKqS,OAAOmN,EAAO,IAClC,MACF,IAAK,IACH9Z,EAAS1F,GAAK,GAAGqS,OAAO5M,EAAOzF,IAC/B0F,EAAS1F,GAAG,GAAKwf,EAAO,GAAG,GAC3B9Z,EAAS1F,GAAG,GAAKwf,EAAO,GAAG,GAC3B,MACF,IAAK,IACH,GAAIA,EAAO7f,OAAS,EAAG,CACrB,KAAIK,EAAI,GAED,CACL0F,EAAS1F,GAAKyF,EAAOzF,GACrB,KACF,CAJEwf,EAAS+R,EAAa/R,EAAQ9Z,EAAS1F,EAAI,GAAI,EAKnD,CACA0F,EAAS1F,GAAK,CAAC,KAAKqS,OAAOmN,EAAOiR,QAAO,SAAUlb,EAAKvV,GACtD,OAAOuV,EAAIlD,OAAOrS,EACpB,GAAG,KACH,MACF,IAAK,IACH0F,EAAS1F,GAAK,CAAC,KAAKqS,OAAOmN,EAAO,IAClC,MACF,IAAK,IACH,GAAIA,EAAO7f,OAAS,EAAG,CACrB,KAAIK,EAAI,GAED,CACL0F,EAAS1F,GAAKyF,EAAOzF,GACrB,KACF,CAJEwf,EAAS+R,EAAa/R,EAAQ9Z,EAAS1F,EAAI,GAAI,EAKnD,CACA0F,EAAS1F,GAAK,CAAC,KAAKqS,OAAOmN,EAAOiR,QAAO,SAAUlb,EAAKvV,GACtD,OAAOuV,EAAIlD,OAAOrS,EACpB,GAAG,KACH,MACF,IAAK,IACH,GAAIwf,EAAO7f,OAAS,EAAG,CACrB,KAAIK,EAAI,GAED,CACL0F,EAAS1F,GAAKyF,EAAOzF,GACrB,KACF,CAJEwf,EAAS+R,EAAa/R,EAAQ9Z,EAAS1F,EAAI,GAAI,EAKnD,CACA0F,EAAS1F,GAAK,CAAC,KAAKqS,OAAOmN,EAAOiR,QAAO,SAAUlb,EAAKvV,GACtD,OAAOuV,EAAIlD,OAAOrS,EACpB,GAAG,KACH,MACF,QACE0F,EAAS1F,GAAKyF,EAAOzF,GAI7B,OAAO0F,CACT,iJC5sCO,SAASksB,EAAcjS,EAAMC,EAAUC,GAC5C,IAAIgS,EAAY,EAIhB,IAHI,QAASlS,KACXkS,EAAYlS,EAAKyI,MAAM,MAAMzoB,QAE3BkyB,EAAY,EAAG,CACjB,IAAIC,EAUD,SAAyBlS,EAAUC,GACxC,OAAOA,EAAaA,EAAaD,EAAsB,IAAXA,CAC9C,CAZoBmS,CAAgBnS,EAAUC,GAC1C,OAAOD,EAAWiS,EAAYC,GAAaD,EAAY,EACzD,CACA,OAAOjS,CACT,CAcO,SAASoS,EAAarS,EAAMG,GACjC,IAAImS,GAAU,SACVplB,EAAQ,EAEZ,IAAI,QAAM8S,IAAkB,KAATA,EACjB,OAAO9S,EAIT,GAFAolB,EAAQtQ,OACRsQ,EAAQnS,KAAOA,GACX,QAASH,IAASA,EAAK1b,SAAS,MAAO,CACzC,IAAIiuB,EAAUvS,EAAKyI,MAAM,OACzB,QAAK8J,GAAS,SAAUC,GACtB,IAAIC,EAAeH,EAAQI,YAAYF,GAAStlB,MAC5CA,EAAQulB,IACVvlB,EAAQulB,EAEZ,GACF,MACEvlB,EAAQolB,EAAQI,YAAY1S,GAAM9S,MAGpC,OADAolB,EAAQrQ,UACD/U,CACT,CACO,SAASylB,EAAaltB,GAC3B,IAAIwa,EAAWxa,EAAMwa,SACnB2S,EAAantB,EAAMmtB,WACnBC,EAAaptB,EAAMotB,WAGrB,MAAO,CAFOptB,EAAMqtB,UACJrtB,EAAMstB,YACUF,EAAY5S,EAAW,KAAM2S,GAAYpK,KAAK,KAAKwK,MACrF,2VC9DO,SAASC,EAAgBrd,EAAKsd,GACnC,IAAI/rB,EAAQyO,EAAIvD,QAAQ6gB,IACT,IAAX/rB,GACFyO,EAAIrV,OAAO4G,EAAO,EAEtB,CACO,IAAIgsB,EAA8B,oBAAX9wB,aAAqD,IAApBA,OAAOyH,SAG/D,SAASspB,EAASjrB,EAAWvD,GAElC,GAAIuD,EAAUM,WACZ,OAAO,EAIT,IAFA,IAAIsI,EAASnM,EAAMsH,YACfknB,GAAW,EACRriB,GAAQ,CACb,GAAIA,IAAW5I,EAAW,CACxBirB,GAAW,EACX,KACF,CACAriB,EAASA,EAAO7E,WAClB,CACA,OAAOknB,CACT,CACO,SAASC,EAAevkB,GAE7B,OAAOA,EAAQhO,IAAI4S,SAAW5E,EAAQhO,IAAI6S,OAC5C,yYCnBO,SAAS2f,EAAS/R,EAAIC,EAAIC,EAAIC,GACnC,IAAI3V,EAAKwV,EAAKE,EACVzV,EAAKwV,EAAKE,EACd,OAAOtI,KAAK2C,KAAKhQ,EAAKA,EAAKC,EAAKA,EAClC,CACO,SAASunB,EAAcC,EAAIC,GAChC,OAAOra,KAAKoG,IAAIgU,EAAKC,GAAM,IAC7B,CACO,SAASC,EAAe5T,EAAMC,GACnC,IAAI1Q,GAAO,QAAIyQ,GACXvQ,GAAO,QAAIwQ,GAGf,MAAO,CACL3V,EAAGiF,EACHhF,EAAGkF,EACHrC,OALS,QAAI4S,GAKCzQ,EACdlC,QALS,QAAI4S,GAKExQ,EAEnB,CACO,SAASokB,EAAapS,EAAIC,EAAIC,EAAIC,GACvC,MAAO,CACLrS,MAAM,QAAI,CAACkS,EAAIE,IACfnS,MAAM,QAAI,CAACiS,EAAIE,IACflS,MAAM,QAAI,CAACiS,EAAIE,IACflS,MAAM,QAAI,CAACgS,EAAIE,IAEnB,CACO,SAASkS,EAAM/M,GACpB,OAAQA,EAAkB,EAAVzN,KAAK+B,KAAqB,EAAV/B,KAAK+B,GACvC,gBCrCA,GASEuF,IAAK,SAAaa,EAAIC,EAAIC,EAAIC,GAC5B,OAAOgS,EAAe,CAACnS,EAAIE,GAAK,CAACD,EAAIE,GACvC,EASA1hB,OAAQ,SAAgBuhB,EAAIC,EAAIC,EAAIC,GAClC,OAAO4R,EAAS/R,EAAIC,EAAIC,EAAIC,EAC9B,EAUAmS,QAAS,SAAiBtS,EAAIC,EAAIC,EAAIC,EAAIxe,GACxC,MAAO,CACLkH,GAAI,EAAIlH,GAAKqe,EAAKre,EAAIue,EACtBpX,GAAI,EAAInH,GAAKse,EAAKte,EAAIwe,EAE1B,EAWAoS,cAAe,SAAuBvS,EAAIC,EAAIC,EAAIC,EAAItX,EAAGC,GAGvD,IAAI0pB,GAAStS,EAAKF,IAAOnX,EAAImX,IAAOG,EAAKF,IAAOnX,EAAImX,GACpD,OAAIuS,EAAQ,EACHT,EAAS/R,EAAIC,EAAIpX,EAAGC,GAGzB0pB,GADgBtS,EAAKF,IAAOE,EAAKF,IAAOG,EAAKF,IAAOE,EAAKF,GAEpD8R,EAAS7R,EAAIC,EAAItX,EAAGC,GAEtBlL,KAAK60B,YAAYzS,EAAIC,EAAIC,EAAIC,EAAItX,EAAGC,EAC7C,EAWA2pB,YAAa,SAAqBzS,EAAIC,EAAIC,EAAIC,EAAItX,EAAGC,GACnD,IAAI6a,EAAI,CAACzD,EAAKF,EAAIG,EAAKF,GAEvB,GAAIyS,EAAA,GAAiB/O,EAAG,CAAC,EAAG,IAC1B,OAAO9L,KAAK2C,MAAM3R,EAAImX,IAAOnX,EAAImX,IAAOlX,EAAImX,IAAOnX,EAAImX,IAEzD,IAAImD,EAAI,EAAEO,EAAE,GAAIA,EAAE,IAClB+O,EAAA,GAAetP,EAAGA,GAClB,IAAIrH,EAAI,CAAClT,EAAImX,EAAIlX,EAAImX,GACrB,OAAOpI,KAAKoG,IAAIyU,EAAA,GAAS3W,EAAGqH,GAC9B,EASAuP,aAAc,SAAsB3S,EAAIC,EAAIC,EAAIC,GAC9C,OAAOtI,KAAKqG,MAAMiC,EAAKF,EAAIC,EAAKF,EAClC,GCpFK,SAAS,EAAazB,EAAMC,EAAM3V,EAAGC,EAAG8pB,EAAWn0B,GACxD,IAAIkD,EACAgiB,EAAIxhB,IACJ0wB,EAAK,CAAChqB,EAAGC,GACTgqB,EAAS,GACTr0B,GAAUA,EAAS,MACrBq0B,EAASr0B,EAAS,IAIpB,IAFA,IAAIs0B,EAAe,EAAID,EACnB1yB,EAAW2yB,EAAe,GACrBj0B,EAAI,EAAGA,GAAKg0B,EAAQh0B,IAAK,CAChC,IAAIk0B,EAAKl0B,EAAIi0B,EACTd,EAAK,CAACW,EAAU3zB,MAAM,KAAMsf,EAAKpN,OAAO,CAAC6hB,KAAOJ,EAAU3zB,MAAM,KAAMuf,EAAKrN,OAAO,CAAC6hB,OACnFC,EAAKlB,EAASc,EAAG,GAAIA,EAAG,GAAIZ,EAAG,GAAIA,EAAG,KACjCtO,IACPhiB,EAAIqxB,EACJrP,EAAIsP,EAER,CAEA,GAAU,IAANtxB,EACF,MAAO,CACLkH,EAAG0V,EAAK,GACRzV,EAAG0V,EAAK,IAGZ,GAAU,IAAN7c,EAAS,CACX,IAAI+sB,EAAQnQ,EAAK9f,OACjB,MAAO,CACLoK,EAAG0V,EAAKmQ,EAAQ,GAChB5lB,EAAG0V,EAAKkQ,EAAQ,GAEpB,CACA/K,EAAIxhB,IACJ,IAASrD,EAAI,EAAGA,EAAI,MACdsB,EA5CM,MA2CYtB,IAAK,CAI3B,IAAIo0B,EAAOvxB,EAAIvB,EACX+yB,EAAOxxB,EAAIvB,EAEX6yB,GADAhB,EAAK,CAACW,EAAU3zB,MAAM,KAAMsf,EAAKpN,OAAO,CAAC+hB,KAASN,EAAU3zB,MAAM,KAAMuf,EAAKrN,OAAO,CAAC+hB,MAChFnB,EAASc,EAAG,GAAIA,EAAG,GAAIZ,EAAG,GAAIA,EAAG,KAC1C,GAAIiB,GAAQ,GAAKD,EAAKtP,EACpBhiB,EAAIuxB,EACJvP,EAAIsP,MACC,CACL,IAAIf,EAAK,CAACU,EAAU3zB,MAAM,KAAMsf,EAAKpN,OAAO,CAACgiB,KAASP,EAAU3zB,MAAM,KAAMuf,EAAKrN,OAAO,CAACgiB,MACrFC,EAAKrB,EAASc,EAAG,GAAIA,EAAG,GAAIX,EAAG,GAAIA,EAAG,IACtCiB,GAAQ,GAAKC,EAAKzP,GACpBhiB,EAAIwxB,EACJxP,EAAIyP,GAEJhzB,GAAY,EAEhB,CACF,CACA,MAAO,CACLyI,EAAG+pB,EAAU3zB,MAAM,KAAMsf,EAAKpN,OAAO,CAACxP,KACtCmH,EAAG8pB,EAAU3zB,MAAM,KAAMuf,EAAKrN,OAAO,CAACxP,KAE1C,CClEA,SAAS0xB,EAAYC,EAAIjK,EAAIhC,EAAI1lB,GAC/B,IAAI4xB,EAAO,EAAI5xB,EACf,OAAO4xB,EAAOA,EAAOD,EAAK,EAAI3xB,EAAI4xB,EAAOlK,EAAK1nB,EAAIA,EAAI0lB,CACxD,CAEA,SAASmM,EAAQF,EAAIjK,EAAIhC,GACvB,IAAItL,EAAIuX,EAAKjM,EAAK,EAAIgC,EACtB,GAAI2I,EAAcjW,EAAG,GACnB,MAAO,CAAC,IAEV,IAAI7K,GAAOoiB,EAAKjK,GAAMtN,EACtB,OAAI7K,GAAO,GAAKA,GAAO,EACd,CAACA,GAEH,EACT,CACA,SAASuiB,EAAaH,EAAIjK,EAAIhC,EAAI1lB,GAChC,OAAO,GAAK,EAAIA,IAAM0nB,EAAKiK,GAAM,EAAI3xB,GAAK0lB,EAAKgC,EACjD,CAEA,SAASqK,EAAgB1T,EAAIC,EAAIC,EAAIC,EAAIsJ,EAAIC,EAAI/nB,GAE/C,IAAIgyB,EAAKN,EAAYrT,EAAIE,EAAIuJ,EAAI9nB,GAC7BiyB,EAAKP,EAAYpT,EAAIE,EAAIuJ,EAAI/nB,GAE7BkyB,EAAgBC,EAAKxB,QAAQtS,EAAIC,EAAIC,EAAIC,EAAIxe,GAE7CoyB,EAAgBD,EAAKxB,QAAQpS,EAAIC,EAAIsJ,EAAIC,EAAI/nB,GACjD,MAAO,CAAC,CAACqe,EAAIC,EAAI4T,EAAchrB,EAAGgrB,EAAc/qB,EAAG6qB,EAAIC,GAAK,CAACD,EAAIC,EAAIG,EAAclrB,EAAGkrB,EAAcjrB,EAAG2gB,EAAIC,GAC7G,CAEA,SAASsK,EAAgBhU,EAAIC,EAAIC,EAAIC,EAAIsJ,EAAIC,EAAIuK,GAC/C,GAAuB,IAAnBA,EACF,OAAQlC,EAAS/R,EAAIC,EAAIC,EAAIC,GAAM4R,EAAS7R,EAAIC,EAAIsJ,EAAIC,GAAMqI,EAAS/R,EAAIC,EAAIwJ,EAAIC,IAAO,EAE5F,IAAIwK,EAAaR,EAAgB1T,EAAIC,EAAIC,EAAIC,EAAIsJ,EAAIC,EAAI,IACrD9c,EAAOsnB,EAAW,GAClB3jB,EAAQ2jB,EAAW,GAGvB,OAFAtnB,EAAKzO,KAAK81B,EAAiB,GAC3B1jB,EAAMpS,KAAK81B,EAAiB,GACrBD,EAAgB/0B,MAAM,KAAM2N,GAAQonB,EAAgB/0B,MAAM,KAAMsR,EACzE,CACA,OACE4O,IAAK,SAAaa,EAAIC,EAAIC,EAAIC,EAAIsJ,EAAIC,GACpC,IAAIyK,EAAWX,EAAQxT,EAAIE,EAAIuJ,GAAI,GAC/B2K,EAAWZ,EAAQvT,EAAIE,EAAIuJ,GAAI,GAE/BnL,EAAO,CAACyB,EAAIyJ,GACZjL,EAAO,CAACyB,EAAIyJ,GAOhB,YANiB2K,IAAbF,GACF5V,EAAKpgB,KAAKk1B,EAAYrT,EAAIE,EAAIuJ,EAAI0K,SAEnBE,IAAbD,GACF5V,EAAKrgB,KAAKk1B,EAAYpT,EAAIE,EAAIuJ,EAAI0K,IAE7BjC,EAAe5T,EAAMC,EAC9B,EACA/f,OAAQ,SAAgBuhB,EAAIC,EAAIC,EAAIC,EAAIsJ,EAAIC,GAC1C,OAAOsK,EAAgBhU,EAAIC,EAAIC,EAAIC,EAAIsJ,EAAIC,EAAI,EACjD,EACA4K,aAAc,SAAsBtU,EAAIC,EAAIC,EAAIC,EAAIsJ,EAAIC,EAAIY,EAAIC,GAC9D,OAAO,EAAc,CAACvK,EAAIE,EAAIuJ,GAAK,CAACxJ,EAAIE,EAAIuJ,GAAKY,EAAIC,EAAI8I,EAC3D,EACAd,cAAe,SAAuBvS,EAAIC,EAAIC,EAAIC,EAAIsJ,EAAIC,EAAIY,EAAIC,GAChE,IAAI3hB,EAAQhL,KAAK02B,aAAatU,EAAIC,EAAIC,EAAIC,EAAIsJ,EAAIC,EAAIY,EAAIC,GAC1D,OAAOwH,EAASnpB,EAAMC,EAAGD,EAAME,EAAGwhB,EAAIC,EACxC,EACAgK,gBAAiBlB,EACjBf,QAAS,SAAiBtS,EAAIC,EAAIC,EAAIC,EAAIsJ,EAAIC,EAAI/nB,GAChD,MAAO,CACLkH,EAAGwqB,EAAYrT,EAAIE,EAAIuJ,EAAI9nB,GAC3BmH,EAAGuqB,EAAYpT,EAAIE,EAAIuJ,EAAI/nB,GAE/B,EACA6yB,OAAQ,SAAgBxU,EAAIC,EAAIC,EAAIC,EAAIsJ,EAAIC,EAAI/nB,GAC9C,OAAO+xB,EAAgB1T,EAAIC,EAAIC,EAAIC,EAAIsJ,EAAIC,EAAI/nB,EACjD,EACAgxB,aAAc,SAAsB3S,EAAIC,EAAIC,EAAIC,EAAIsJ,EAAIC,EAAI/nB,GAC1D,IAAI6I,EAAKipB,EAAazT,EAAIE,EAAIuJ,EAAI9nB,GAC9B8I,EAAKgpB,EAAaxT,EAAIE,EAAIuJ,EAAI/nB,GAElC,OAAO0wB,EADKxa,KAAKqG,MAAMzT,EAAID,GAE7B,GCnFF,SAASiqB,EAAQnB,EAAIjK,EAAIhC,EAAIiC,EAAI3nB,GAC/B,IAAI4xB,EAAO,EAAI5xB,EACf,OAAO4xB,EAAOA,EAAOA,EAAOD,EAAK,EAAIjK,EAAK1nB,EAAI4xB,EAAOA,EAAO,EAAIlM,EAAK1lB,EAAIA,EAAI4xB,EAAOjK,EAAK3nB,EAAIA,EAAIA,CACnG,CACA,SAAS,EAAa2xB,EAAIjK,EAAIhC,EAAIiC,EAAI3nB,GACpC,IAAI4xB,EAAO,EAAI5xB,EACf,OAAO,GAAK4xB,EAAOA,GAAQlK,EAAKiK,GAAM,EAAIC,EAAO5xB,GAAK0lB,EAAKgC,GAAM1nB,EAAIA,GAAK2nB,EAAKjC,GACjF,CACA,SAAS,EAAQiM,EAAIjK,EAAIhC,EAAIiC,GAC3B,IAIIpnB,EACAD,EACAyyB,EANA3Y,GAAK,EAAIuX,EAAK,EAAIjK,EAAK,EAAIhC,EAAK,EAAIiC,EACpCzI,EAAI,EAAIyS,EAAK,GAAKjK,EAAK,EAAIhC,EAC3BtE,EAAI,EAAIsG,EAAK,EAAIiK,EACjBqB,EAAW,GAIf,GAAI3C,EAAcjW,EAAG,GACdiW,EAAcnR,EAAG,KACpB3e,GAAM6gB,EAAIlC,IACA,GAAK3e,GAAM,GACnByyB,EAASx2B,KAAK+D,OAGb,CACL,IAAI0yB,EAAO/T,EAAIA,EAAI,EAAI9E,EAAIgH,EACvBiP,EAAc4C,EAAM,GACtBD,EAASx2B,MAAM0iB,GAAK,EAAI9E,IACf6Y,EAAO,IAGhB3yB,IAAO4e,GAFP6T,EAAW7c,KAAK2C,KAAKoa,MAEG,EAAI7Y,IAD5B7Z,IAAO2e,EAAI6T,IAAa,EAAI3Y,KAElB,GAAK7Z,GAAM,GACnByyB,EAASx2B,KAAK+D,GAEZD,GAAM,GAAKA,GAAM,GACnB0yB,EAASx2B,KAAK8D,GAGpB,CACA,OAAO0yB,CACT,CAEA,SAASE,EAAY7U,EAAIC,EAAIC,EAAIC,EAAIsJ,EAAIC,EAAIC,EAAIC,EAAIjoB,GAEnD,IAAIgyB,EAAKc,EAAQzU,EAAIE,EAAIuJ,EAAIE,EAAIhoB,GAC7BiyB,EAAKa,EAAQxU,EAAIE,EAAIuJ,EAAIE,EAAIjoB,GAE7B0kB,EAAKyN,EAAKxB,QAAQtS,EAAIC,EAAIC,EAAIC,EAAIxe,GAClC4kB,EAAKuN,EAAKxB,QAAQpS,EAAIC,EAAIsJ,EAAIC,EAAI/nB,GAClCmzB,EAAKhB,EAAKxB,QAAQ7I,EAAIC,EAAIC,EAAIC,EAAIjoB,GAClCozB,EAAMjB,EAAKxB,QAAQjM,EAAGxd,EAAGwd,EAAGvd,EAAGyd,EAAG1d,EAAG0d,EAAGzd,EAAGnH,GAC3CqzB,EAAMlB,EAAKxB,QAAQ/L,EAAG1d,EAAG0d,EAAGzd,EAAGgsB,EAAGjsB,EAAGisB,EAAGhsB,EAAGnH,GAC/C,MAAO,CAAC,CAACqe,EAAIC,EAAIoG,EAAGxd,EAAGwd,EAAGvd,EAAGisB,EAAIlsB,EAAGksB,EAAIjsB,EAAG6qB,EAAIC,GAAK,CAACD,EAAIC,EAAIoB,EAAInsB,EAAGmsB,EAAIlsB,EAAGgsB,EAAGjsB,EAAGisB,EAAGhsB,EAAG6gB,EAAIC,GAC7F,CAEA,SAASqL,EAAYjV,EAAIC,EAAIC,EAAIC,EAAIsJ,EAAIC,EAAIC,EAAIC,EAAIqK,GACnD,GAAuB,IAAnBA,EACF,OFYG,SAAoB1V,EAAMC,GAG/B,IAFA,IAAI0W,EAAc,EACdxG,EAAQnQ,EAAK9f,OACRK,EAAI,EAAGA,EAAI4vB,EAAO5vB,IAKzBo2B,GAAenD,EAJPxT,EAAKzf,GACL0f,EAAK1f,GACDyf,GAAMzf,EAAI,GAAK4vB,GACflQ,GAAM1f,EAAI,GAAK4vB,IAG7B,OAAOwG,EAAc,CACvB,CEvBWC,CAAW,CAACnV,EAAIE,EAAIuJ,EAAIE,GAAK,CAAC1J,EAAIE,EAAIuJ,EAAIE,IAEnD,IAAIwL,EAASP,EAAY7U,EAAIC,EAAIC,EAAIC,EAAIsJ,EAAIC,EAAIC,EAAIC,EAAI,IACrDhd,EAAOwoB,EAAO,GACd7kB,EAAQ6kB,EAAO,GAGnB,OAFAxoB,EAAKzO,KAAK81B,EAAiB,GAC3B1jB,EAAMpS,KAAK81B,EAAiB,GACrBgB,EAAYh2B,MAAM,KAAM2N,GAAQqoB,EAAYh2B,MAAM,KAAMsR,EACjE,CACA,OACEijB,QAAS,EACTrU,IAAK,SAAaa,EAAIC,EAAIC,EAAIC,EAAIsJ,EAAIC,EAAIC,EAAIC,GAK5C,IAJA,IAAIrL,EAAO,CAACyB,EAAI2J,GACZnL,EAAO,CAACyB,EAAI2J,GACZuK,EAAW,EAAQnU,EAAIE,EAAIuJ,EAAIE,GAC/ByK,EAAW,EAAQnU,EAAIE,EAAIuJ,EAAIE,GAC1B9qB,EAAI,EAAGA,EAAIq1B,EAAS11B,OAAQK,IACnCyf,EAAKpgB,KAAKs2B,EAAQzU,EAAIE,EAAIuJ,EAAIE,EAAIwK,EAASr1B,KAE7C,IAASA,EAAI,EAAGA,EAAIs1B,EAAS31B,OAAQK,IACnC0f,EAAKrgB,KAAKs2B,EAAQxU,EAAIE,EAAIuJ,EAAIE,EAAIwK,EAASt1B,KAE7C,OAAOqzB,EAAe5T,EAAMC,EAC9B,EACA/f,OAAQ,SAAgBuhB,EAAIC,EAAIC,EAAIC,EAAIsJ,EAAIC,EAAIC,EAAIC,GAElD,OAAOqL,EAAYjV,EAAIC,EAAIC,EAAIC,EAAIsJ,EAAIC,EAAIC,EAAIC,EAAI,EACrD,EACA0K,aAAc,SAAsBtU,EAAIC,EAAIC,EAAIC,EAAIsJ,EAAIC,EAAIC,EAAIC,EAAIU,EAAIC,EAAI9rB,GAC1E,OAAO,EAAc,CAACuhB,EAAIE,EAAIuJ,EAAIE,GAAK,CAAC1J,EAAIE,EAAIuJ,EAAIE,GAAKU,EAAIC,EAAIkK,EAASh2B,EAC5E,EACA8zB,cAAe,SAAuBvS,EAAIC,EAAIC,EAAIC,EAAIsJ,EAAIC,EAAIC,EAAIC,EAAIU,EAAIC,EAAI9rB,GAC5E,IAAImK,EAAQhL,KAAK02B,aAAatU,EAAIC,EAAIC,EAAIC,EAAIsJ,EAAIC,EAAIC,EAAIC,EAAIU,EAAIC,EAAI9rB,GACtE,OAAOszB,EAASnpB,EAAMC,EAAGD,EAAME,EAAGwhB,EAAIC,EACxC,EACAgK,gBAAiBE,EACjBnC,QAAS,SAAiBtS,EAAIC,EAAIC,EAAIC,EAAIsJ,EAAIC,EAAIC,EAAIC,EAAIjoB,GACxD,MAAO,CACLkH,EAAG4rB,EAAQzU,EAAIE,EAAIuJ,EAAIE,EAAIhoB,GAC3BmH,EAAG2rB,EAAQxU,EAAIE,EAAIuJ,EAAIE,EAAIjoB,GAE/B,EACA6yB,OAAQ,SAAgBxU,EAAIC,EAAIC,EAAIC,EAAIsJ,EAAIC,EAAIC,EAAIC,EAAIjoB,GACtD,OAAOkzB,EAAY7U,EAAIC,EAAIC,EAAIC,EAAIsJ,EAAIC,EAAIC,EAAIC,EAAIjoB,EACrD,EACAgxB,aAAc,SAAsB3S,EAAIC,EAAIC,EAAIC,EAAIsJ,EAAIC,EAAIC,EAAIC,EAAIjoB,GAClE,IAAI6I,EAAK,EAAawV,EAAIE,EAAIuJ,EAAIE,EAAIhoB,GAClC8I,EAAK,EAAawV,EAAIE,EAAIuJ,EAAIE,EAAIjoB,GACtC,OAAO0wB,EAAMxa,KAAKqG,MAAMzT,EAAID,GAC9B,YCrGF,SAAS6qB,EAASpD,EAAIC,GACpB,IAAIoD,EAAOzd,KAAKoG,IAAIgU,GACpB,OAAOC,EAAK,EAAIoD,GAAe,EAARA,CACzB,CACA,MAsCgB,SAAsBzsB,EAAGC,EAAG0W,EAAIC,EAAI6K,EAAIC,GACpD,IAAIxO,EAAIyD,EACJqB,EAAIpB,EAER,GAAU,IAAN1D,GAAiB,IAAN8E,EACb,MAAO,CACLhY,EAAGA,EACHC,EAAGA,GAeP,IAXA,IAQIysB,EACAC,EATAC,EAAYnL,EAAKzhB,EACjB6sB,EAAYnL,EAAKzhB,EACjBkiB,EAAKnT,KAAKoG,IAAIwX,GACdxK,EAAKpT,KAAKoG,IAAIyX,GACdC,EAAU5Z,EAAIA,EACd6Z,EAAU/U,EAAIA,EAEdlf,EAAIkW,KAAK+B,GAAK,EAIT9a,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1By2B,EAAWxZ,EAAIlE,KAAKkC,IAAIpY,GACxB6zB,EAAW3U,EAAIhJ,KAAKoC,IAAItY,GACxB,IAAIk0B,GAAMF,EAAUC,GAAW/d,KAAK0B,IAAI1B,KAAKkC,IAAIpY,GAAI,GAAKoa,EACtD+Z,GAAMF,EAAUD,GAAW9d,KAAK0B,IAAI1B,KAAKoC,IAAItY,GAAI,GAAKkf,EACtDkV,EAAMR,EAAWM,EACjBG,EAAMR,EAAWM,EACjBpO,EAAKsD,EAAK6K,EACVlO,EAAKsD,EAAK6K,EACVhZ,EAAIjF,KAAKoe,MAAMD,EAAKD,GACpB5S,EAAItL,KAAKoe,MAAMtO,EAAID,GAGvB/lB,GAFcmb,EAAIjF,KAAKoE,MAAM8Z,EAAMpO,EAAKqO,EAAMtO,IAAO5K,EAAIqG,IACjCtL,KAAK2C,KAAKmb,EAAUC,EAAUL,EAAWA,EAAWC,EAAWA,GAEvF7zB,EAAIkW,KAAKC,IAAID,KAAK+B,GAAK,EAAG/B,KAAKE,IAAI,EAAGpW,GACxC,CACA,MAAO,CACLkH,EAAGA,EAAIwsB,EAASE,EAAUE,GAC1B3sB,EAAGA,EAAIusB,EAASG,EAAUE,GAE9B,ECzEF,SAASQ,EAAI5W,EAAIC,EAAIC,EAAIC,EAAIC,EAAW4F,GACtC,OAAO9F,EAAK3H,KAAKkC,IAAI2F,GAAa7H,KAAKkC,IAAIuL,GAAS7F,EAAK5H,KAAKoC,IAAIyF,GAAa7H,KAAKoC,IAAIqL,GAAShG,CACnG,CAEA,SAAS6W,EAAI7W,EAAIC,EAAIC,EAAIC,EAAIC,EAAW4F,GACtC,OAAO9F,EAAK3H,KAAKoC,IAAIyF,GAAa7H,KAAKkC,IAAIuL,GAAS7F,EAAK5H,KAAKkC,IAAI2F,GAAa7H,KAAKoC,IAAIqL,GAAS/F,CACnG,CAQA,SAAS6W,EAAS5W,EAAIC,EAAI6F,GACxB,MAAO,CACLzc,EAAG2W,EAAK3H,KAAKkC,IAAIuL,GACjBxc,EAAG2W,EAAK5H,KAAKoC,IAAIqL,GAErB,CAEA,SAASzO,EAAOhO,EAAGC,EAAGwc,GACpB,IAAIvL,EAAMlC,KAAKkC,IAAIuL,GACfrL,EAAMpC,KAAKoC,IAAIqL,GACnB,MAAO,CAACzc,EAAIkR,EAAMjR,EAAImR,EAAKpR,EAAIoR,EAAMnR,EAAIiR,EAC3C,CACA,OAYEoF,IAAK,SAAaG,EAAIC,EAAIC,EAAIC,EAAIC,EAAWC,EAAYC,GAKvD,IAJA,IAAIyW,EA/CR,SAAkB7W,EAAIC,EAAIC,GACxB,OAAO7H,KAAKye,MAAM7W,EAAKD,EAAK3H,KAAK4O,IAAI/G,GACvC,CA6CeyU,CAAS3U,EAAIC,EAAIC,GACxB5R,EAAO3L,IACP4L,GAAQ5L,IACRo0B,EAAK,CAAC5W,EAAYC,GACb9gB,EAAe,GAAV+Y,KAAK+B,GAAQ9a,GAAe,EAAV+Y,KAAK+B,GAAQ9a,GAAK+Y,KAAK+B,GAAI,CACzD,IAAIoE,EAASqY,EAAOv3B,EAChB6gB,EAAaC,EACXD,EAAa3B,GAAUA,EAAS4B,GAClC2W,EAAGp4B,KAAK6f,GAGN4B,EAAW5B,GAAUA,EAAS2B,GAChC4W,EAAGp4B,KAAK6f,EAGd,CACA,IAASlf,EAAI,EAAGA,EAAIy3B,EAAG93B,OAAQK,IAAK,CAClC,IAAI+J,EAAIqtB,EAAI5W,EAAIC,EAAIC,EAAIC,EAAIC,EAAW6W,EAAGz3B,IACtC+J,EAAIiF,IACNA,EAAOjF,GAELA,EAAIkF,IACNA,EAAOlF,EAEX,CACA,IAAI2tB,EApER,SAAkBhX,EAAIC,EAAIC,GACxB,OAAO7H,KAAKye,KAAK7W,GAAMD,EAAK3H,KAAK4O,IAAI/G,IACvC,CAkEe0U,CAAS5U,EAAIC,EAAIC,GACxB1R,EAAO7L,IACP8L,GAAQ9L,IACRs0B,EAAK,CAAC9W,EAAYC,GACtB,IAAS9gB,EAAe,GAAV+Y,KAAK+B,GAAQ9a,GAAe,EAAV+Y,KAAK+B,GAAQ9a,GAAK+Y,KAAK+B,GAAI,CACzD,IAAIuE,EAASqY,EAAO13B,EAChB6gB,EAAaC,EACXD,EAAaxB,GAAUA,EAASyB,GAClC6W,EAAGt4B,KAAKggB,GAGNyB,EAAWzB,GAAUA,EAASwB,GAChC8W,EAAGt4B,KAAKggB,EAGd,CACA,IAASrf,EAAI,EAAGA,EAAI23B,EAAGh4B,OAAQK,IAAK,CAClC,IAAIgK,EAAIqtB,EAAI7W,EAAIC,EAAIC,EAAIC,EAAIC,EAAW+W,EAAG33B,IACtCgK,EAAIkF,IACNA,EAAOlF,GAELA,EAAImF,IACNA,EAAOnF,EAEX,CACA,MAAO,CACLD,EAAGiF,EACHhF,EAAGkF,EACHrC,MAAOoC,EAAOD,EACdlC,OAAQqC,EAAOD,EAEnB,EAYAvP,OAAQ,SAAgB6gB,EAAIC,EAAIC,EAAIC,EAAIC,EAAWC,EAAYC,GAAW,EAc1E0U,aAAc,SAAsBhV,EAAIC,EAAIC,EAAIC,EAAIC,EAAWC,EAAYC,EAAU0K,EAAIC,GAEvF,IAAImM,EAAiB7f,EAAOyT,EAAKhL,EAAIiL,EAAKhL,GAAKG,GAC3CM,EAAK0W,EAAe,GACtBzW,EAAKyW,EAAe,GAElBC,EAAgBC,EAAqB,EAAG,EAAGpX,EAAIC,EAAIO,EAAIC,GAEvDqF,EAzHR,SAAkB9F,EAAIC,EAAI6K,EAAIC,GAG5B,OAFY1S,KAAKqG,MAAMqM,EAAK/K,EAAI8K,EAAK7K,GAEX,EAAV5H,KAAK+B,KAAqB,EAAV/B,KAAK+B,GACvC,CAqHgBid,CAASrX,EAAIC,EAAIkX,EAAc9tB,EAAG8tB,EAAc7tB,GAExDwc,EAAQ3F,EAEVgX,EAAgBP,EAAS5W,EAAIC,EAAIE,GACxB2F,EAAQ1F,IAEjB+W,EAAgBP,EAAS5W,EAAIC,EAAIG,IAGnC,IAAIkX,EAASjgB,EAAO8f,EAAc9tB,EAAG8tB,EAAc7tB,EAAG4W,GACtD,MAAO,CACL7W,EAAGiuB,EAAO,GAAKxX,EACfxW,EAAGguB,EAAO,GAAKvX,EAEnB,EACAgT,cAAe,SAAuBjT,EAAIC,EAAIC,EAAIC,EAAIC,EAAWC,EAAYC,EAAU0K,EAAIC,GACzF,IAAI+J,EAAe12B,KAAK02B,aAAahV,EAAIC,EAAIC,EAAIC,EAAI6K,EAAIC,GACzD,OAAOwH,EAASuC,EAAazrB,EAAGyrB,EAAaxrB,EAAGwhB,EAAIC,EACtD,EACA+H,QAAS,SAAiBhT,EAAIC,EAAIC,EAAIC,EAAIC,EAAWC,EAAYC,EAAUje,GACzE,IAAI2jB,GAAS1F,EAAWD,GAAche,EAAIge,EAC1C,MAAO,CACL9W,EAAGqtB,EAAI5W,EAAIC,EAAIC,EAAIC,EAAIC,EAAW4F,GAClCxc,EAAGqtB,EAAI7W,EAAIC,EAAIC,EAAIC,EAAIC,EAAW4F,GAEtC,EACAqN,aAAc,SAAsBrT,EAAIC,EAAIC,EAAIC,EAAIC,EAAWC,EAAYC,EAAUje,GACnF,IAAI2jB,GAAS1F,EAAWD,GAAche,EAAIge,EACtCnV,EA9KR,SAAuB8U,EAAIC,EAAIC,EAAIC,EAAIC,EAAWC,EAAYC,EAAU0F,GACtE,OAAQ,EAAI9F,EAAK3H,KAAKkC,IAAI2F,GAAa7H,KAAKoC,IAAIqL,GAAS7F,EAAK5H,KAAKoC,IAAIyF,GAAa7H,KAAKkC,IAAIuL,EAC/F,CA4KayR,CAAczX,EAAIC,EAAIC,EAAIC,EAAIC,EAAWC,EAAYC,EAAU0F,GACpE7a,EA3KR,SAAuB6U,EAAIC,EAAIC,EAAIC,EAAIC,EAAWC,EAAYC,EAAU0F,GACtE,OAAQ,EAAI9F,EAAK3H,KAAKoC,IAAIyF,GAAa7H,KAAKoC,IAAIqL,GAAS7F,EAAK5H,KAAKkC,IAAI2F,GAAa7H,KAAKkC,IAAIuL,EAC/F,CAyKa0R,CAAc1X,EAAIC,EAAIC,EAAIC,EAAIC,EAAWC,EAAYC,EAAU0F,GACxE,OAAO+M,EAAMxa,KAAKqG,MAAMzT,EAAID,GAC9B,GClLF,SAASysB,EAAc3Y,GAIrB,IAFA,IAAI4W,EAAc,EACdlW,EAAW,GACNlgB,EAAI,EAAGA,EAAIwf,EAAO7f,OAAS,EAAGK,IAAK,CAC1C,IAAIo4B,EAAO5Y,EAAOxf,GACdq4B,EAAK7Y,EAAOxf,EAAI,GAChBK,EAAW4yB,EAASmF,EAAK,GAAIA,EAAK,GAAIC,EAAG,GAAIA,EAAG,IAChDtO,EAAM,CACRqO,KAAMA,EACNC,GAAIA,EACJ14B,OAAQU,GAEV6f,EAAS7gB,KAAK0qB,GACdqM,GAAe/1B,CACjB,CACA,MAAO,CACL6f,SAAUA,EACVkW,YAAaA,EAEjB,CACO,SAASkC,EAAgB9Y,GAC9B,GAAIA,EAAO7f,OAAS,EAClB,OAAO,EAGT,IADA,IAAIy2B,EAAc,EACTp2B,EAAI,EAAGA,EAAIwf,EAAO7f,OAAS,EAAGK,IAAK,CAC1C,IAAIo4B,EAAO5Y,EAAOxf,GACdq4B,EAAK7Y,EAAOxf,EAAI,GACpBo2B,GAAenD,EAASmF,EAAK,GAAIA,EAAK,GAAIC,EAAG,GAAIA,EAAG,GACtD,CACA,OAAOjC,CACT,CAOO,SAASmC,EAAgB/Y,EAAQ3c,GAEtC,GAAIA,EAAI,GAAKA,EAAI,GAAK2c,EAAO7f,OAAS,EACpC,OAAO,KAET,IAAIM,EAAKk4B,EAAc3Y,GACrBU,EAAWjgB,EAAGigB,SACdkW,EAAcn2B,EAAGm2B,YAEnB,GAAoB,IAAhBA,EACF,MAAO,CACLrsB,EAAGyV,EAAO,GAAG,GACbxV,EAAGwV,EAAO,GAAG,IAMjB,IAFA,IAAIgZ,EAAa,EACb1uB,EAAQ,KACH9J,EAAI,EAAGA,EAAIkgB,EAASvgB,OAAQK,IAAK,CACxC,IAAI+pB,EAAM7J,EAASlgB,GACfo4B,EAAOrO,EAAIqO,KACbC,EAAKtO,EAAIsO,GACPI,EAAe1O,EAAIpqB,OAASy2B,EAChC,GAAIvzB,GAAK21B,GAAc31B,GAAK21B,EAAaC,EAAc,CACrD,IAAIC,GAAc71B,EAAI21B,GAAcC,EACpC3uB,EAAQkrB,EAAKxB,QAAQ4E,EAAK,GAAIA,EAAK,GAAIC,EAAG,GAAIA,EAAG,GAAIK,GACrD,KACF,CACAF,GAAcC,CAChB,CACA,OAAO3uB,CACT,CAMO,SAAS6uB,EAAgBnZ,EAAQ3c,GAEtC,GAAIA,EAAI,GAAKA,EAAI,GAAK2c,EAAO7f,OAAS,EACpC,OAAO,EAQT,IANA,IAAIM,EAAKk4B,EAAc3Y,GACrBU,EAAWjgB,EAAGigB,SACdkW,EAAcn2B,EAAGm2B,YAEfoC,EAAa,EACbhS,EAAQ,EACHxmB,EAAI,EAAGA,EAAIkgB,EAASvgB,OAAQK,IAAK,CACxC,IAAI+pB,EAAM7J,EAASlgB,GACfo4B,EAAOrO,EAAIqO,KACbC,EAAKtO,EAAIsO,GACPI,EAAe1O,EAAIpqB,OAASy2B,EAChC,GAAIvzB,GAAK21B,GAAc31B,GAAK21B,EAAaC,EAAc,CACrDjS,EAAQzN,KAAKqG,MAAMiZ,EAAG,GAAKD,EAAK,GAAIC,EAAG,GAAKD,EAAK,IACjD,KACF,CACAI,GAAcC,CAChB,CACA,OAAOjS,CACT,CACO,SAASoS,EAAkBpZ,EAAQzV,EAAGC,GAE3C,IADA,IAAI6uB,EAAcx1B,IACTrD,EAAI,EAAGA,EAAIwf,EAAO7f,OAAS,EAAGK,IAAK,CAC1C,IAAI8J,EAAQ0V,EAAOxf,GACf0e,EAAYc,EAAOxf,EAAI,GACvB84B,EAAa9D,EAAKvB,cAAc3pB,EAAM,GAAIA,EAAM,GAAI4U,EAAU,GAAIA,EAAU,GAAI3U,EAAGC,GACnF8uB,EAAaD,IACfA,EAAcC,EAElB,CACA,OAAOD,CACT,CC/GA,OAMExY,IAAK,SAAab,GAGhB,IAFA,IAAIC,EAAO,GACPC,EAAO,GACF1f,EAAI,EAAGA,EAAIwf,EAAO7f,OAAQK,IAAK,CACtC,IAAI8J,EAAQ0V,EAAOxf,GACnByf,EAAKpgB,KAAKyK,EAAM,IAChB4V,EAAKrgB,KAAKyK,EAAM,GAClB,CACA,OAAOupB,EAAe5T,EAAMC,EAC9B,EAMA/f,OAAQ,SAAgB6f,GACtB,OAAO8Y,EAAgB9Y,EACzB,EAOAgU,QAAS,SAAiBhU,EAAQ3c,GAChC,OAAO01B,EAAgB/Y,EAAQ3c,EACjC,EAQA4wB,cAAe,SAAuBjU,EAAQzV,EAAGC,GAC/C,OAAO4uB,EAAkBpZ,EAAQzV,EAAGC,EACtC,EAOA6pB,aAAc,SAAsBrU,EAAQ3c,GAC1C,OAAO81B,EAAgBnZ,EAAQ3c,EACjC,kMCjDK,SAASk2B,EAAc/W,EAAK/E,EAAGlM,GACpC,IAAIioB,EAAW,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAExC,OADA,KAAqBA,EAAUjoB,GACxB,KAAciR,EAAKgX,EAAU/b,EACtC,CACO,SAASgc,EAAWjX,EAAK/E,EAAGgI,GACjC,IAAIiU,EAAY,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAEzC,OADA,KAAkBA,EAAWjU,GACtB,KAAcjD,EAAKkX,EAAWjc,EACvC,CACO,SAASkc,EAAUnX,EAAK/E,EAAGlM,GAChC,IAAIqoB,EAAW,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAExC,OADA,KAAiBA,EAAUroB,GACpB,KAAciR,EAAKoX,EAAUnc,EACtC,CASO,SAASrK,EAAUiC,EAAGwkB,GAE3B,IADA,IAToBrX,EAAK/E,EAAG4M,EASxB5Z,EAAS4E,EAAI,GAAGxC,OAAOwC,GAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAChD7U,EAAI,EAAGs5B,EAAMD,EAAQ15B,OAAQK,EAAIs5B,EAAKt5B,IAAK,CAClD,IAAIu5B,EAASF,EAAQr5B,GACrB,OAAQu5B,EAAO,IACb,IAAK,IACHR,EAAc9oB,EAAQA,EAAQ,CAACspB,EAAO,GAAIA,EAAO,KACjD,MACF,IAAK,IACHJ,EAAUlpB,EAAQA,EAAQ,CAACspB,EAAO,GAAIA,EAAO,KAC7C,MACF,IAAK,IACHN,EAAWhpB,EAAQA,EAAQspB,EAAO,IAClC,MACF,IAAK,IAtBWvX,EAuBD/R,EAvBMgN,EAuBEhN,EAvBC4Z,EAuBO0P,EAAO,GAtBnC,KAAcvX,EAAK6H,EAAI5M,GA2B9B,CACA,OAAOhN,CACT,CAgBO,SAASupB,EAAQrG,EAAIC,EAAIqG,GAC9B,IAAIC,EAAM,KAAWvG,EAAIC,GACrBuG,EAXC,SAAmBxG,EAAIC,GAC5B,OAAOD,EAAG,GAAKC,EAAG,GAAKA,EAAG,GAAKD,EAAG,EACpC,CASyByG,CAAUzG,EAAIC,IAAO,EAC5C,OAAIqG,EACEE,EACe,EAAV5gB,KAAK+B,GAAS4e,EAEhBA,EAELC,EACKD,EAEQ,EAAV3gB,KAAK+B,GAAS4e,CACvB,sLC7EIG,EAAY,iCACZC,EAAW,aA+Bf,MA9BA,SAAmB5c,GACjB,IAAIvX,EAAOuX,GAAK,GAChB,OAAI,QAAQvX,GACHA,GAEL,QAASA,IACXA,EAAOA,EAAKo0B,MAAMF,IAClB,QAAKl0B,GAAM,SAAU4Q,EAAMzP,GAGzB,IADAyP,EAAOA,EAAKwjB,MAAMD,IACT,GAAGn6B,OAAS,EAAG,CACtB,IAAIq6B,EAAMzjB,EAAK,GAAG0jB,OAAO,GAEzB1jB,EAAKrW,OAAO,EAAG,EAAGqW,EAAK,GAAG2jB,OAAO,IAEjC3jB,EAAK,GAAKyjB,CACZ,EAEA,QAAKzjB,GAAM,SAAU4jB,EAAKn6B,GACnBghB,MAAMmZ,KAET5jB,EAAKvW,IAAMm6B,EAEf,IAEAx0B,EAAKmB,GAASyP,CAChB,IACO5Q,QAtBT,CAwBF,aCiFA,MAhCA,SAA2Bif,EAAKL,EAAG6V,QACvB,IAAN7V,IACFA,GAAI,QAEa,IAAf6V,IACFA,EAAa,CAAC,CAAC,EAAG,GAAI,CAAC,EAAG,KAI5B,IAFA,IAAIC,IAAW9V,EACX+V,EAAY,GACPt6B,EAAI,EAAGokB,EAAIQ,EAAIjlB,OAAQK,EAAIokB,EAAGpkB,GAAK,EAC1Cs6B,EAAUj7B,KAAK,CAACulB,EAAI5kB,GAAI4kB,EAAI5kB,EAAI,KAElC,IAGIu6B,EACAC,EACAtd,EALAud,EA5FN,SAAsBjb,EAAQkb,EAAQL,EAAQD,GAC5C,IAEIO,EACAjc,EACA1F,EACAC,EACA2hB,EACAL,EACAM,EARAC,EAAM,GACNC,IAAkBX,EAQtB,GAAIW,EAAe,CACjB/hB,EAAMohB,EAAW,GAAInhB,EAAMmhB,EAAW,GACtC,IAAK,IAAIp6B,EAAI,EAAGokB,EAAI5E,EAAO7f,OAAQK,EAAIokB,EAAGpkB,GAAK,EAAG,CAChD,IAAI8J,EAAQ0V,EAAOxf,GACnBgZ,EAAM4a,EAAA,GAAS,CAAC,EAAG,GAAI5a,EAAKlP,GAC5BmP,EAAM2a,EAAA,GAAS,CAAC,EAAG,GAAI3a,EAAKnP,EAC9B,CACF,CACS9J,EAAI,EAAb,IAAK,IAAWs5B,EAAM9Z,EAAO7f,OAAQK,EAAIs5B,EAAKt5B,GAAK,EAEjD,GADI8J,EAAQ0V,EAAOxf,GACT,IAANA,GAAYq6B,EAET,GAAIr6B,IAAMs5B,EAAM,GAAMe,EAItB,CAELM,EAAYnb,EADE,CAACxf,EAAIA,EAAI,EAAIs5B,EAAM,EAAGt5B,EAAI,GAAGq6B,EAAS,EAAI,IAExD3b,EAAYc,EAAO6a,GAAUr6B,EAAI,GAAKs5B,EAAMt5B,EAAI,GAChD,IAAI+Q,EAAI,CAAC,EAAG,GACZA,EAAI6iB,EAAA,GAAS7iB,EAAG2N,EAAWic,GAC3B5pB,EAAI6iB,EAAA,GAAW7iB,EAAGA,EAAG2pB,GACrB,IAAIM,EAAKpH,EAAA,GAAc9pB,EAAO6wB,GAC1BxG,EAAKP,EAAA,GAAc9pB,EAAO4U,GAC1BwM,EAAM8P,EAAK7G,EACH,IAARjJ,IACF8P,GAAM9P,EACNiJ,GAAMjJ,GAER,IAAIiI,EAAKS,EAAA,GAAW,CAAC,EAAG,GAAI7iB,GAAIiqB,GAC5B5H,EAAKQ,EAAA,GAAW,CAAC,EAAG,GAAI7iB,EAAGojB,GAC/BoG,EAAM3G,EAAA,GAAS,CAAC,EAAG,GAAI9pB,EAAOqpB,GAC9ByH,EAAUhH,EAAA,GAAS,CAAC,EAAG,GAAI9pB,EAAOspB,GAElCwH,EAAUhH,EAAA,GAAS,CAAC,EAAG,GAAIgH,EAAShH,EAAA,GAAS,CAAC,EAAG,GAAIlV,EAAW5U,IAChE8wB,EAAUhH,EAAA,GAAS,CAAC,EAAG,GAAIgH,EAAShH,EAAA,GAAS,CAAC,EAAG,GAAIlV,EAAW5U,IAEhEqpB,EAAKS,EAAA,GAAS,CAAC,EAAG,GAAIgH,EAAS9wB,GAC/BqpB,EAAKS,EAAA,GAAW,CAAC,EAAG,GAAIT,GAAK6H,EAAK7G,GAClCoG,EAAM3G,EAAA,GAAS,CAAC,EAAG,GAAI9pB,EAAOqpB,GAE9BoH,EAAM3G,EAAA,GAAS,CAAC,EAAG,GAAI2G,EAAK3G,EAAA,GAAS,CAAC,EAAG,GAAI+G,EAAW7wB,IACxDywB,EAAM3G,EAAA,GAAS,CAAC,EAAG,GAAI2G,EAAK3G,EAAA,GAAS,CAAC,EAAG,GAAI+G,EAAW7wB,IAExDspB,EAAKQ,EAAA,GAAS,CAAC,EAAG,GAAI9pB,EAAOywB,GAC7BnH,EAAKQ,EAAA,GAAW,CAAC,EAAG,GAAIR,EAAIe,EAAK6G,GACjCJ,EAAUhH,EAAA,GAAS,CAAC,EAAG,GAAI9pB,EAAOspB,GAC9B2H,IACFR,EAAM3G,EAAA,GAAS,CAAC,EAAG,GAAI2G,EAAKvhB,GAC5BuhB,EAAM3G,EAAA,GAAS,CAAC,EAAG,GAAI2G,EAAKthB,GAC5B2hB,EAAUhH,EAAA,GAAS,CAAC,EAAG,GAAIgH,EAAS5hB,GACpC4hB,EAAUhH,EAAA,GAAS,CAAC,EAAG,GAAIgH,EAAS3hB,IAEtC6hB,EAAIz7B,KAAKw7B,GACTC,EAAIz7B,KAAKk7B,GACTM,EAAMD,CACR,MA5CEL,EAAMzwB,EACNgxB,EAAIz7B,KAAKw7B,GACTC,EAAIz7B,KAAKk7B,QAJTM,EAAM/wB,EAmDV,OAHIuwB,GACFS,EAAIz7B,KAAKy7B,EAAIpR,SAERoR,CACT,CAmByBG,CAAaX,EAAW,GAAKD,EAAQD,GACxDd,EAAMgB,EAAU36B,OAChBw0B,EAAK,GAIT,IAASn0B,EAAI,EAAGA,EAAIs5B,EAAM,EAAGt5B,GAAK,EAChCu6B,EAAME,EAAqB,EAAJz6B,GACvBw6B,EAAMC,EAAqB,EAAJz6B,EAAQ,GAC/Bkd,EAAIod,EAAUt6B,EAAI,GAClBm0B,EAAG90B,KAAK,CAAC,IAAKk7B,EAAI,GAAIA,EAAI,GAAIC,EAAI,GAAIA,EAAI,GAAItd,EAAE,GAAIA,EAAE,KAQxD,OANImd,IACFE,EAAME,EAAiBnB,GACvBkB,EAAMC,EAAiBnB,EAAM,GAC7Bpc,EAAIod,EAAU,GACdnG,EAAG90B,KAAK,CAAC,IAAKk7B,EAAI,GAAIA,EAAI,GAAIC,EAAI,GAAIA,EAAI,GAAItd,EAAE,GAAIA,EAAE,MAEjDiX,CACT,EC/GA,IAAIzQ,EAAS,2CACTC,EAAe,IAAIC,OAAO,WAAaF,EAAS,wCAA0CA,EAAS,QAAUA,EAAS,QAAS,MAC/HG,EAAc,IAAID,OAAO,qCAAuCF,EAAS,QAAUA,EAAS,KAAM,MAEvF,SAASI,EAAgBC,GACtC,IAAKA,EACH,OAAO,KAET,IAAI,QAAQA,GACV,OAAOA,EAET,IAAIC,EAAc,CAChB/G,EAAG,EACHgH,EAAG,EACHC,EAAG,EACHC,EAAG,EACHC,EAAG,EACHvP,EAAG,EACHmJ,EAAG,EACHqG,EAAG,EACHzH,EAAG,EACH/Z,EAAG,EACHkO,EAAG,EACHuT,EAAG,EACHC,EAAG,GAEDC,EAAO,GA2BX,OA1BAC,OAAOV,GAAYW,QAAQf,GAAc,SAAU1G,EAAG8E,EAAGkC,GACvD,IAAI7D,EAAS,GACTrf,EAAOghB,EAAErE,cAYb,GAXAuG,EAAES,QAAQb,GAAa,SAAU5G,EAAG8E,GAClCA,GAAK3B,EAAO/gB,MAAM0iB,EACpB,IACa,MAAThhB,GAAgBqf,EAAOzgB,OAAS,IAClC6kB,EAAKnlB,KAAK,CAAC0iB,GAAG1P,OAAO+N,EAAOlgB,OAAO,EAAG,KACtCa,EAAO,IACPghB,EAAU,MAANA,EAAY,IAAM,KAEX,MAAThhB,GAAkC,IAAlBqf,EAAOzgB,QACzB6kB,EAAKnlB,KAAK,CAAC0iB,EAAG3B,EAAO,KAEV,MAATrf,EACFyjB,EAAKnlB,KAAK,CAAC0iB,GAAG1P,OAAO+N,SAErB,KAAOA,EAAOzgB,QAAUqkB,EAAYjjB,KAClCyjB,EAAKnlB,KAAK,CAAC0iB,GAAG1P,OAAO+N,EAAOlgB,OAAO,EAAG8jB,EAAYjjB,MAC7CijB,EAAYjjB,MAKrB,MAAO,EACT,IACOyjB,CACT,CCtDA,IAAI0W,EAAW,QACf,SAASC,EAAWje,EAAG+G,GACrB,MAAO,CAACA,EAAE,IAAMA,EAAE,GAAK/G,EAAE,IAAK+G,EAAE,IAAMA,EAAE,GAAK/G,EAAE,IACjD,CACe,SAASgI,EAAenB,GACrC,IAAIoB,EAAYrB,EAAgBC,GAChC,IAAKoB,IAAcA,EAAUxlB,OAC3B,MAAO,CAAC,CAAC,IAAK,EAAG,IAGnB,IADA,IAAIy7B,GAAc,EACTp7B,EAAI,EAAGA,EAAImlB,EAAUxlB,OAAQK,IAAK,CACzC,IAAI+vB,EAAM5K,EAAUnlB,GAAG,GAEvB,GAAIk7B,EAAS92B,KAAK2rB,IAAQ,CAAC,IAAK,IAAK,IAAK,KAAK/d,QAAQ+d,IAAQ,EAAG,CAChEqL,GAAc,EACd,KACF,CACF,CAGA,IAAKA,EACH,OAAOjW,EAET,IAAIH,EAAM,GACNjb,EAAI,EACJC,EAAI,EACJsb,EAAK,EACLC,EAAK,EACLC,EAAQ,EAGR6V,EAAQlW,EAAU,GACL,MAAbkW,EAAM,IAA2B,MAAbA,EAAM,KAG5B/V,EAFAvb,GAAKsxB,EAAM,GAGX9V,EAFAvb,GAAKqxB,EAAM,GAGX7V,IACAR,EAAI,GAAK,CAAC,IAAKjb,EAAGC,IAEXhK,EAAIwlB,EAAb,IAAK,IAAeI,EAAKT,EAAUxlB,OAAQK,EAAI4lB,EAAI5lB,IAAK,CACtD,IAAI2lB,EAAKR,EAAUnlB,GACfs7B,EAAYtW,EAAIhlB,EAAI,GACpBge,EAAI,GAEJud,GADAxL,EAAMpK,EAAG,IACGD,cAChB,GAAIqK,IAAQwL,EAEV,OADAvd,EAAE,GAAKud,EACCA,GACN,IAAK,IACHvd,EAAE,GAAK2H,EAAG,GACV3H,EAAE,GAAK2H,EAAG,GACV3H,EAAE,GAAK2H,EAAG,GACV3H,EAAE,GAAK2H,EAAG,GACV3H,EAAE,GAAK2H,EAAG,GACV3H,EAAE,IAAM2H,EAAG,GAAK5b,EAChBiU,EAAE,IAAM2H,EAAG,GAAK3b,EAChB,MACF,IAAK,IACHgU,EAAE,IAAM2H,EAAG,GAAK3b,EAChB,MACF,IAAK,IACHgU,EAAE,IAAM2H,EAAG,GAAK5b,EAChB,MACF,IAAK,IACHub,GAAMK,EAAG,GAAK5b,EACdwb,GAAMI,EAAG,GAAK3b,EACdgU,EAAE,GAAKsH,EACPtH,EAAE,GAAKuH,EACP,MAEF,QACE,IAAK,IAAIvf,EAAI,EAAG6f,EAAKF,EAAGhmB,OAAQqG,EAAI6f,EAAI7f,IACtCgY,EAAEhY,IAAM2f,EAAG3f,IAAMA,EAAI,EAAI+D,EAAIC,QAKnCgU,EAAImH,EAAUnlB,GAGhB,OAAQu7B,GACN,IAAK,IACHxxB,GAAKub,EACLtb,GAAKub,EACL,MACF,IAAK,IAEHvH,EAAI,CAAC,IADLjU,EAAIiU,EAAE,GACOhU,GACb,MACF,IAAK,IAEHgU,EAAI,CAAC,IAAKjU,EADVC,EAAIgU,EAAE,IAEN,MACF,IAAK,IACHjU,EAAIiU,EAAE,GACNhU,EAAIgU,EAAE,GAGN,IAAIwd,EAAYL,EAAW,CAACG,EAAU,GAAIA,EAAU,IAAK,CAACA,EAAU,GAAIA,EAAU,KAClFtd,EAAI,CAAC,IAAKwd,EAAU,GAAIA,EAAU,GAAIzxB,EAAGC,GACzC,MACF,IAAK,IACHD,EAAIiU,EAAEA,EAAEre,OAAS,GACjBqK,EAAIgU,EAAEA,EAAEre,OAAS,GAGjB,IAAIU,EAAWi7B,EAAU37B,OACrB87B,EAAYN,EAAW,CAACG,EAAUj7B,EAAW,GAAIi7B,EAAUj7B,EAAW,IAAK,CAACi7B,EAAUj7B,EAAW,GAAIi7B,EAAUj7B,EAAW,KAC9H2d,EAAI,CAAC,IAAKyd,EAAU,GAAIA,EAAU,GAAIzd,EAAE,GAAIA,EAAE,GAAIjU,EAAGC,GACrD,MACF,IAAK,IACHsb,EAAKtH,EAAEA,EAAEre,OAAS,GAClB4lB,EAAKvH,EAAEA,EAAEre,OAAS,GAClB,MAEF,QACEoK,EAAIiU,EAAEA,EAAEre,OAAS,GACjBqK,EAAIgU,EAAEA,EAAEre,OAAS,GAErBqlB,EAAI3lB,KAAK2e,EACX,CACA,OAAOgH,CACT,CC5HUjM,KAAK+B,GCEf,SAAS4gB,EAAK3qB,GACZ,OAAOgI,KAAK2C,KAAK3K,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAC1C,CAEA,SAAS4qB,EAAOrX,EAAGvT,GAEjB,OAAO2qB,EAAKpX,GAAKoX,EAAK3qB,IAAMuT,EAAE,GAAKvT,EAAE,GAAKuT,EAAE,GAAKvT,EAAE,KAAO2qB,EAAKpX,GAAKoX,EAAK3qB,IAAM,CACjF,CAEA,SAAS6qB,EAAOtX,EAAGvT,GACjB,OAAQuT,EAAE,GAAKvT,EAAE,GAAKuT,EAAE,GAAKvT,EAAE,IAAM,EAAI,GAAKgI,KAAKgG,KAAK4c,EAAOrX,EAAGvT,GACpE,CAMO,SAAS8qB,EAAYC,EAAQC,GAClC,OAAOD,EAAO,KAAOC,EAAO,IAAMD,EAAO,KAAOC,EAAO,EACzD,CAEe,SAASC,EAAaC,EAAY7b,GAC/C,IAAIM,EAAKN,EAAO,GACZO,EAAKP,EAAO,GACZQ,GAAY,SAAI,QAASR,EAAO,IAAe,EAAVrH,KAAK+B,IAC1CohB,EAAU9b,EAAO,GACjB+b,EAAY/b,EAAO,GAEnBc,EAAK+a,EAAW,GAChB9a,EAAK8a,EAAW,GAEhB7a,EAAKhB,EAAO,GACZiB,EAAKjB,EAAO,GACZgc,EAAKrjB,KAAKkC,IAAI2F,IAAcM,EAAKE,GAAM,EAAMrI,KAAKoC,IAAIyF,IAAcO,EAAKE,GAAM,EAC/Egb,GAAM,EAAItjB,KAAKoC,IAAIyF,IAAcM,EAAKE,GAAM,EAAMrI,KAAKkC,IAAI2F,IAAcO,EAAKE,GAAM,EACpFib,EAASF,EAAKA,GAAM1b,EAAKA,GAAM2b,EAAKA,GAAM1b,EAAKA,GAC/C2b,EAAS,IACX5b,GAAM3H,KAAK2C,KAAK4gB,GAChB3b,GAAM5H,KAAK2C,KAAK4gB,IAElB,IAAIhL,EAAO5Q,EAAKA,GAAM2b,EAAKA,GAAM1b,EAAKA,GAAMyb,EAAKA,GAC7Cj6B,EAAImvB,EAAOvY,KAAK2C,MAAMgF,EAAKA,GAAMC,EAAKA,GAAM2Q,GAAQA,GAAQ,EAC5D4K,IAAYC,IACdh6B,IAAM,GAEJ6e,MAAM7e,KACRA,EAAI,GAGN,IAAIo6B,EAAM5b,EAAKxe,EAAIue,EAAK2b,EAAK1b,EAAK,EAC9B6b,EAAM9b,EAAKve,GAAKwe,EAAKyb,EAAK1b,EAAK,EAE/BF,GAAMU,EAAKE,GAAM,EAAMrI,KAAKkC,IAAI2F,GAAa2b,EAAMxjB,KAAKoC,IAAIyF,GAAa4b,EACzE/b,GAAMU,EAAKE,GAAM,EAAMtI,KAAKoC,IAAIyF,GAAa2b,EAAMxjB,KAAKkC,IAAI2F,GAAa4b,EAEzElY,EAAI,EAAE8X,EAAKG,GAAO7b,GAAK2b,EAAKG,GAAO7b,GAEnC5P,EAAI,GAAG,EAAIqrB,EAAKG,GAAO7b,IAAM,EAAI2b,EAAKG,GAAO7b,GAE7C8b,EAAQb,EAAO,CAAC,EAAG,GAAItX,GAEvBoY,EAASd,EAAOtX,EAAGvT,GAavB,OAZI4qB,EAAOrX,EAAGvT,KAAO,IACnB2rB,EAAS3jB,KAAK+B,IAEZ6gB,EAAOrX,EAAGvT,IAAM,IAClB2rB,EAAS,GAEO,IAAdP,GAAmBO,EAAS,IAC9BA,GAAkB,EAAI3jB,KAAK+B,IAEX,IAAdqhB,GAAmBO,EAAS,IAC9BA,GAAkB,EAAI3jB,KAAK+B,IAEtB,CACL0F,GAAIA,EACJC,GAAIA,EAEJC,GAAImb,EAAYI,EAAY,CAAC7a,EAAIC,IAAO,EAAIX,EAC5CC,GAAIkb,EAAYI,EAAY,CAAC7a,EAAIC,IAAO,EAAIV,EAC5CE,WAAY4b,EACZ3b,SAAU2b,EAAQC,EAClB9b,UAAWA,EACXsb,QAASA,EACTC,UAAWA,EAEf,CCpFA,SAAS,EAAWryB,EAAO6yB,GACzB,MAAO,CAACA,EAAO,IAAMA,EAAO,GAAK7yB,EAAM,IAAK6yB,EAAO,IAAMA,EAAO,GAAK7yB,EAAM,IAC7E,CACe,SAAS8yB,EAAYj3B,GAQlC,IANA,IAAIua,EAAW,GACXzB,EAAe,KACfoe,EAAa,KACbC,EAAiB,KACjBC,EAA0B,EAC1BnN,GANJjqB,EAAO,EAAUA,IAMAhG,OACRK,EAAI,EAAGA,EAAI4vB,EAAO5vB,IAAK,CAC9B,IAAIogB,EAASza,EAAK3F,GAClB68B,EAAal3B,EAAK3F,EAAI,GACtB,IAAIsgB,EAAUF,EAAO,GAEjB9B,EAAU,CACZgC,QAASA,EACT9B,SAAUC,EACV2B,OAAQA,EACR4c,aAAc,KACdC,WAAY,MAEd,OAAQ3c,GACN,IAAK,IACHwc,EAAiB,CAAC1c,EAAO,GAAIA,EAAO,IACpC2c,EAA0B/8B,EAC1B,MACF,IAAK,IACH,IAAIugB,EAAYyb,EAAavd,EAAc2B,GAC3C9B,EAAmB,UAAIiC,EAK3B,GAAgB,MAAZD,EAEF7B,EAAeqe,EAEfD,EAAal3B,EAAKo3B,EAA0B,OACvC,CACL,IAAIzD,EAAMlZ,EAAOzgB,OACjB8e,EAAe,CAAC2B,EAAOkZ,EAAM,GAAIlZ,EAAOkZ,EAAM,GAChD,CACIuD,GAAgC,MAAlBA,EAAW,KAE3BA,EAAal3B,EAAKo3B,GACd7c,EAAS6c,KAEX7c,EAAS6c,GAAyBve,SAAWC,IAGjDH,EAAsB,aAAIG,EAEtByB,EAAS6c,IAA4BlB,EAAYpd,EAAcyB,EAAS6c,GAAyBte,gBACnGyB,EAAS6c,GAAyBve,SAAWF,EAAQE,UAEvD,IAAIE,EAAYme,EAAa,CAACA,EAAWA,EAAWl9B,OAAS,GAAIk9B,EAAWA,EAAWl9B,OAAS,IAAM,KACtG2e,EAAmB,UAAII,EAEvB,IAAIF,EAAWF,EAAQE,SACvB,GAAI,CAAC,IAAK,IAAK,KAAKva,SAASqc,GAC3BhC,EAAQ0e,aAAe,CAACxe,EAAS,GAAKC,EAAa,GAAID,EAAS,GAAKC,EAAa,IAClFH,EAAQ2e,WAAa,CAACxe,EAAa,GAAKD,EAAS,GAAIC,EAAa,GAAKD,EAAS,SAC3E,GAAgB,MAAZ8B,EAAiB,CAE1B,IAAI4c,EAAK,CAAC9c,EAAO,GAAIA,EAAO,IAE5B9B,EAAQ0e,aAAe,CAACxe,EAAS,GAAK0e,EAAG,GAAI1e,EAAS,GAAK0e,EAAG,IAC9D5e,EAAQ2e,WAAa,CAACxe,EAAa,GAAKye,EAAG,GAAIze,EAAa,GAAKye,EAAG,GACtE,MAAO,GAAgB,MAAZ5c,EAAiB,CAEtB4c,EAAK,GADLC,EAAajd,EAASlgB,EAAI,IACCye,aAAcD,GAClB,MAAvB2e,EAAW7c,SACbhC,EAAQgC,QAAU,IAClBhC,EAAQ0e,aAAe,CAACxe,EAAS,GAAK0e,EAAG,GAAI1e,EAAS,GAAK0e,EAAG,IAC9D5e,EAAQ2e,WAAa,CAACxe,EAAa,GAAKye,EAAG,GAAIze,EAAa,GAAKye,EAAG,MAEpE5e,EAAQgC,QAAU,KAClBhC,EAAQ0e,aAAe,CAACxe,EAAS,GAAKC,EAAa,GAAID,EAAS,GAAKC,EAAa,IAClFH,EAAQ2e,WAAa,CAACxe,EAAa,GAAKD,EAAS,GAAIC,EAAa,GAAKD,EAAS,IAEpF,MAAO,GAAgB,MAAZ8B,EAAiB,CAE1B,IAAIia,EAAM,CAACna,EAAO,GAAIA,EAAO,IACzBoa,EAAM,CAACpa,EAAO,GAAIA,EAAO,IAC7B9B,EAAQ0e,aAAe,CAACxe,EAAS,GAAK+b,EAAI,GAAI/b,EAAS,GAAK+b,EAAI,IAChEjc,EAAQ2e,WAAa,CAACxe,EAAa,GAAK+b,EAAI,GAAI/b,EAAa,GAAK+b,EAAI,IAEtC,IAA5Blc,EAAQ0e,aAAa,IAAwC,IAA5B1e,EAAQ0e,aAAa,KACxD1e,EAAQ0e,aAAe,CAACzC,EAAI,GAAKC,EAAI,GAAID,EAAI,GAAKC,EAAI,KAE1B,IAA1Blc,EAAQ2e,WAAW,IAAsC,IAA1B3e,EAAQ2e,WAAW,KACpD3e,EAAQ2e,WAAa,CAACzC,EAAI,GAAKD,EAAI,GAAIC,EAAI,GAAKD,EAAI,IAExD,MAAO,GAAgB,MAAZja,EAAiB,CAC1B,IAAI6c,EACA5C,EAAM,GADN4C,EAAajd,EAASlgB,EAAI,IACEye,aAAcD,GAC1Cgc,EAAM,CAACpa,EAAO,GAAIA,EAAO,IACF,MAAvB+c,EAAW7c,SACbhC,EAAQgC,QAAU,IAClBhC,EAAQ0e,aAAe,CAACxe,EAAS,GAAK+b,EAAI,GAAI/b,EAAS,GAAK+b,EAAI,IAChEjc,EAAQ2e,WAAa,CAACxe,EAAa,GAAK+b,EAAI,GAAI/b,EAAa,GAAK+b,EAAI,MAEtElc,EAAQgC,QAAU,KAClBhC,EAAQ0e,aAAe,CAACxe,EAAS,GAAKgc,EAAI,GAAIhc,EAAS,GAAKgc,EAAI,IAChElc,EAAQ2e,WAAa,CAACxe,EAAa,GAAK+b,EAAI,GAAI/b,EAAa,GAAK+b,EAAI,IAE1E,MAAO,GAAgB,MAAZla,EAAiB,CAC1B,IAAIuE,EAAI,KACJ5kB,EAAKqe,EAAmB,WAAK,CAAC,EAChCtI,EAAK/V,EAAGugB,GACRA,OAAY,IAAPxK,EAAgB,EAAIA,EACzBC,EAAKhW,EAAGwgB,GACRA,OAAY,IAAPxK,EAAgB,EAAIA,EACzBmnB,EAAKn9B,EAAGygB,GACRA,OAAY,IAAP0c,EAAgB,EAAIA,EACzBC,EAAKp9B,EAAG0gB,GACRA,OAAY,IAAP0c,EAAgB,EAAIA,EACzBC,EAAKr9B,EAAGk8B,UACRA,OAAmB,IAAPmB,EAAgB,EAAIA,EAChCC,EAAKt9B,EAAG4gB,WACRA,OAAoB,IAAP0c,EAAgB,EAAIA,EACjCC,EAAKv9B,EAAG6gB,SACRA,OAAkB,IAAP0c,EAAgB,EAAIA,EACf,IAAdrB,IACFtX,IAAM,GAER,IAAI4Y,EAAM/c,EAAK3H,KAAKkC,IAAI4F,EAAagE,GAAKrE,EACtCkd,EAAM/c,EAAK5H,KAAKoC,IAAI0F,EAAagE,GAAKpE,EAC1CnC,EAAQ0e,aAAe,CAACS,EAAMX,EAAe,GAAIY,EAAMZ,EAAe,IACtE,IAAIa,EAAMjd,EAAK3H,KAAKkC,IAAI4F,EAAaC,EAAW+D,GAAKrE,EACjDod,EAAMjd,EAAK5H,KAAKoC,IAAI0F,EAAaC,EAAW+D,GAAKpE,EACrDnC,EAAQ2e,WAAa,CAACze,EAAS,GAAKmf,EAAKnf,EAAS,GAAKof,EACzD,CACA1d,EAAS7gB,KAAKif,EAChB,CACA,OAAO4B,CACT,CCzIA,IAAI2d,EAAY,KAEhB,SAASC,EAAK/zB,GACZ,OAAIgP,KAAKoG,IAAIpV,GAAK8zB,EACT,EAEF9zB,EAAI,GAAK,EAAI,CACtB,CAEA,SAASg0B,EAAUxT,EAAIhC,EAAIlE,GACzB,OAAKA,EAAE,GAAKkG,EAAG,KAAOhC,EAAG,GAAKgC,EAAG,MAAShC,EAAG,GAAKgC,EAAG,KAAOlG,EAAE,GAAKkG,EAAG,KAAOxR,KAAKC,IAAIuR,EAAG,GAAIhC,EAAG,KAAOlE,EAAE,IAAMA,EAAE,IAAMtL,KAAKE,IAAIsR,EAAG,GAAIhC,EAAG,KAAOxP,KAAKC,IAAIuR,EAAG,GAAIhC,EAAG,KAAOlE,EAAE,IAAMA,EAAE,IAAMtL,KAAKE,IAAIsR,EAAG,GAAIhC,EAAG,GAIhN,CAEe,SAASyV,EAAYxe,EAAQzV,EAAGC,GAC7C,IAAIkH,GAAQ,EACRwc,EAAIlO,EAAO7f,OACf,GAAI+tB,GAAK,EAEP,OAAO,EAET,IAAK,IAAI1tB,EAAI,EAAGA,EAAI0tB,EAAG1tB,IAAK,CAC1B,IAAIuqB,EAAK/K,EAAOxf,GACZuoB,EAAK/I,GAAQxf,EAAI,GAAK0tB,GAC1B,GAAIqQ,EAAUxT,EAAIhC,EAAI,CAACxe,EAAGC,IAExB,OAAO,EAIL8zB,EAAKvT,EAAG,GAAKvgB,GAAK,GAAM8zB,EAAKvV,EAAG,GAAKve,GAAK,GAAK8zB,EAAK/zB,GAAKC,EAAIugB,EAAG,KAAOA,EAAG,GAAKhC,EAAG,KAAOgC,EAAG,GAAKhC,EAAG,IAAMgC,EAAG,IAAM,IACrHrZ,GAASA,EAEb,CACA,OAAOA,CACT,CC1CA,IAAI+sB,EAAY,SAAmBh9B,EAAO+X,EAAKC,GAC7C,OAAOhY,GAAS+X,GAAO/X,GAASgY,CAClC,ECCA,SAASilB,EAAa1e,GAGpB,IAFA,IAAI2e,EAAQ,GACRvO,EAAQpQ,EAAO7f,OACVK,EAAI,EAAGA,EAAI4vB,EAAQ,EAAG5vB,IAAK,CAClC,IAAI8J,EAAQ0V,EAAOxf,GACfq0B,EAAO7U,EAAOxf,EAAI,GACtBm+B,EAAM9+B,KAAK,CACT+4B,KAAM,CACJruB,EAAGD,EAAM,GACTE,EAAGF,EAAM,IAEXuuB,GAAI,CACFtuB,EAAGsqB,EAAK,GACRrqB,EAAGqqB,EAAK,KAGd,CACA,GAAI8J,EAAMx+B,OAAS,EAAG,CACpB,IAAI07B,EAAQ7b,EAAO,GACf4e,EAAO5e,EAAOoQ,EAAQ,GAC1BuO,EAAM9+B,KAAK,CACT+4B,KAAM,CACJruB,EAAGq0B,EAAK,GACRp0B,EAAGo0B,EAAK,IAEV/F,GAAI,CACFtuB,EAAGsxB,EAAM,GACTrxB,EAAGqxB,EAAM,KAGf,CACA,OAAO8C,CACT,CACA,SAASE,EAAqBF,EAAOnJ,GACnC,IAAIsJ,GAAc,EAOlB,OANA,QAAKH,GAAO,SAAU/Z,GACpB,GDpCW,SAA0BoQ,EAAIjK,EAAIhC,EAAIiC,GACnD,IACI+T,EACChW,EAAGxe,EAAIyqB,EAAGzqB,EADXw0B,EAEChW,EAAGve,EAAIwqB,EAAGxqB,EAEXw0B,EACCjU,EAAGxgB,EAAIyqB,EAAGzqB,EADXy0B,EAECjU,EAAGvgB,EAAIwqB,EAAGxqB,EAEXy0B,EACCjU,EAAGzgB,EAAIwe,EAAGxe,EADX00B,EAECjU,EAAGxgB,EAAIue,EAAGve,EAEX00B,EAAQF,EAAOC,EAAOD,EAAOC,EAI7B30B,EAAQ,KACZ,GAJe40B,EAAQA,EAdP,MAeFF,EAAOA,EAAOA,EAAOA,IACrBC,EAAOA,EAAOA,EAAOA,GAEW,CAC5C,IAAI7hB,GAAK2hB,EAAME,EAAOF,EAAME,GAAQC,EAChC77B,GAAK07B,EAAMC,EAAOD,EAAMC,GAAQE,EAChCT,EAAUrhB,EAAG,EAAG,IAAMqhB,EAAUp7B,EAAG,EAAG,KACxCiH,EAAQ,CACNC,EAAGyqB,EAAGzqB,EAAI6S,EAAI4hB,EACdx0B,EAAGwqB,EAAGxqB,EAAI4S,EAAI4hB,GAGpB,CACA,OAAO10B,CACT,CCMQ60B,CAAiBva,EAAEgU,KAAMhU,EAAEiU,GAAIrD,EAAKoD,KAAMpD,EAAKqD,IAEjD,OADAiG,GAAc,GACP,CAEX,IACOA,CACT,CACA,SAASvvB,EAAQyQ,GACf,IAAIC,EAAOD,EAAOsQ,KAAI,SAAU5S,GAC9B,OAAOA,EAAE,EACX,IACIwC,EAAOF,EAAOsQ,KAAI,SAAU5S,GAC9B,OAAOA,EAAE,EACX,IACA,MAAO,CACLlO,KAAM+J,KAAKC,IAAI7Y,MAAM,KAAMsf,GAC3BxQ,KAAM8J,KAAKE,IAAI9Y,MAAM,KAAMsf,GAC3BvQ,KAAM6J,KAAKC,IAAI7Y,MAAM,KAAMuf,GAC3BvQ,KAAM4J,KAAKE,IAAI9Y,MAAM,KAAMuf,GAE/B,CAIe,SAASkf,EAAoBC,EAASC,GAEnD,GAAID,EAAQl/B,OAAS,GAAKm/B,EAAQn/B,OAAS,EACzC,OAAO,EAET,IARqBo/B,EAAMC,EAQvB9gB,EAAQnP,EAAQ8vB,GAChB1gB,EAAQpP,EAAQ+vB,GAEpB,GAXqBC,EAWF7gB,GAXQ8gB,EAWD7gB,GAVZnP,KAAO+vB,EAAK9vB,MAAQ+vB,EAAK/vB,KAAO8vB,EAAK/vB,MAAQgwB,EAAK9vB,KAAO6vB,EAAK5vB,MAAQ6vB,EAAK7vB,KAAO4vB,EAAK7vB,KAWnG,OAAO,EAET,IAAI+vB,GAAO,EAQX,IANA,QAAKH,GAAS,SAAUh1B,GACtB,GAAI,EAAiB+0B,EAAS/0B,EAAM,GAAIA,EAAM,IAE5C,OADAm1B,GAAO,GACA,CAEX,IACIA,EACF,OAAO,EAST,IANA,QAAKJ,GAAS,SAAU/0B,GACtB,GAAI,EAAiBg1B,EAASh1B,EAAM,GAAIA,EAAM,IAE5C,OADAm1B,GAAO,GACA,CAEX,IACIA,EACF,OAAO,EAET,IAAIC,EAAShB,EAAaW,GACtBM,EAASjB,EAAaY,GACtBR,GAAc,EAOlB,OANA,QAAKa,GAAQ,SAAUnK,GACrB,GAAIqJ,EAAqBa,EAAQlK,GAE/B,OADAsJ,GAAc,GACP,CAEX,IACOA,CACT,s4DCzGA,IASA,EATkB,SAAqBr9B,GAOrC,OAAiB,OAAVA,GAAmC,mBAAVA,GAAwBm+B,SAASn+B,EAAMtB,OACzE,ECDA,EANe,SAAkB4V,EAAKtU,GACpC,QAAK,EAAYsU,IAGVA,EAAIvD,QAAQ/Q,IAAU,CAC/B,ECQA,EAba,SAAgBsU,EAAK8pB,GAChC,IAAK,EAAY9pB,GACf,OAAOA,EAGT,IADA,IAAI7D,EAAS,GACJ5K,EAAQ,EAAGA,EAAQyO,EAAI5V,OAAQmH,IAAS,CAC/C,IAAI7F,EAAQsU,EAAIzO,GACZu4B,EAAKp+B,EAAO6F,IACd4K,EAAOrS,KAAK4B,EAEhB,CACA,OAAOyQ,CACT,ECMA,EARiB,SAAoB6D,EAAK+pB,GAIxC,YAHe,IAAXA,IACFA,EAAS,IAEJ,EAAO/pB,GAAK,SAAUtU,GAC3B,OAAQ,EAASq+B,EAAQr+B,EAC3B,GACF,EClBI,EAAW,CAAC,EAAEygB,SAIlB,EAHa,SAAgBzgB,EAAOwG,GAClC,OAAO,EAAS/G,KAAKO,KAAW,WAAawG,EAAO,GACtD,ECGA,WAA0BxG,GACxB,OAAO,EAAOA,EAAO,WACtB,ECAD,EAPY,SAAeA,GAKzB,OAAOA,OACT,ECNA,WAA0BA,GACxB,OAAOs+B,MAAMC,QAAUD,MAAMC,QAAQv+B,GAAS,EAAOA,EAAO,QAC7D,ECHD,WAA0BA,GAOxB,IAAIwG,SAAcxG,EAClB,OAAiB,OAAVA,GAA2B,WAATwG,GAA8B,aAATA,CAC/C,ECgBD,MAvBA,SAAcg4B,EAAUJ,GACtB,GAAKI,EAIL,GAAI,EAAQA,GACV,IAAK,IAAIz/B,EAAI,EAAGs5B,EAAMmG,EAAS9/B,OAAQK,EAAIs5B,IAE7B,IADN+F,EAAKI,EAASz/B,GAAIA,GADsBA,UAM3C,GAAI,EAASy/B,GAClB,IAAK,IAAIj6B,KAAKi6B,EACZ,GAAIA,EAASppB,eAAe7Q,KAEd,IADN65B,EAAKI,EAASj6B,GAAIA,GAEtB,KAKV,ECXA,EAXW8Q,OAAOopB,KAAO,SAAU7M,GACjC,OAAOvc,OAAOopB,KAAK7M,EACrB,EAAI,SAAUA,GACZ,IAAInhB,EAAS,GAMb,OALA,EAAKmhB,GAAK,SAAU5xB,EAAO0+B,GACnB,EAAW9M,IAAgB,cAAR8M,GACvBjuB,EAAOrS,KAAKsgC,EAEhB,IACOjuB,CACT,ECEA,MAZA,SAAiBmhB,EAAKztB,GACpB,IAAIw6B,EAAQ,EAAKx6B,GACbzF,EAASigC,EAAMjgC,OACnB,GAAI,EAAMkzB,GAAM,OAAQlzB,EACxB,IAAK,IAAIK,EAAI,EAAGA,EAAIL,EAAQK,GAAK,EAAG,CAClC,IAAI2/B,EAAMC,EAAM5/B,GAChB,GAAIoF,EAAMu6B,KAAS9M,EAAI8M,MAAUA,KAAO9M,GACtC,OAAO,CAEX,CACA,OAAO,CACT,ECJA,EATmB,SAAsB5xB,GAOvC,MAAwB,iBAAVA,GAAgC,OAAVA,CACtC,ECaA,EAnBoB,SAAuBA,GAOzC,IAAK,EAAaA,KAAW,EAAOA,EAAO,UACzC,OAAO,EAET,GAAqC,OAAjCqV,OAAOupB,eAAe5+B,GACxB,OAAO,EAGT,IADA,IAAI6+B,EAAQ7+B,EAC4B,OAAjCqV,OAAOupB,eAAeC,IAC3BA,EAAQxpB,OAAOupB,eAAeC,GAEhC,OAAOxpB,OAAOupB,eAAe5+B,KAAW6+B,CAC1C,ECIA,MApBA,SAAcvqB,EAAKwqB,GACjB,IAAK,EAAQxqB,GAAM,OAAO,KAC1B,IAAIyqB,EASJ,GARI,EAAWD,KACbC,EAAaD,GAEX,EAAcA,KAChBC,EAAa,SAAoB/iB,GAC/B,OAAO,EAAQA,EAAG8iB,EACpB,GAEEC,EACF,IAAK,IAAIhgC,EAAI,EAAGA,EAAIuV,EAAI5V,OAAQK,GAAK,EACnC,GAAIggC,EAAWzqB,EAAIvV,IACjB,OAAOuV,EAAIvV,GAIjB,OAAO,IACT,ECXA,MAZA,SAAmBuV,EAAKwqB,EAAWE,QACf,IAAdA,IACFA,EAAY,GAEd,IAAK,IAAIjgC,EAAIigC,EAAWjgC,EAAIuV,EAAI5V,OAAQK,IACtC,GAAI+/B,EAAUxqB,EAAIvV,GAAIA,GAEpB,OAAOA,EAGX,OAAQ,CACV,ECOA,EAhBiB,SAAoBwkB,EAAMzjB,GAEzC,IADA,IAAIqR,EAAM,KACDpS,EAAI,EAAGA,EAAIwkB,EAAK7kB,OAAQK,IAAK,CACpC,IACIiB,EADMujB,EAAKxkB,GACCe,GAChB,IAAK,EAAME,GAAQ,CAEfmR,EADE,EAAQnR,GACJA,EAAM,GAENA,EAER,KACF,CACF,CACA,OAAOmR,CACT,ECGA,EAVc,SAAiBmD,GAC7B,IAAK,EAAQA,GACX,MAAO,GAGT,IADA,IAAInD,EAAM,GACDpS,EAAI,EAAGA,EAAIuV,EAAI5V,OAAQK,IAC9BoS,EAAMA,EAAIC,OAAOkD,EAAIvV,IAEvB,OAAOoS,CACT,ECDA,WAA0BmD,GACxB,GAAK,EAAQA,GAGb,OAAOA,EAAIkb,QAAO,SAAU2D,EAAM8L,GAChC,OAAOnnB,KAAKE,IAAImb,EAAM8L,EACxB,GAAG3qB,EAAI,GACR,ECPD,WAA0BA,GACxB,GAAK,EAAQA,GAGb,OAAOA,EAAIkb,QAAO,SAAU2D,EAAM8L,GAChC,OAAOnnB,KAAKC,IAAIob,EAAM8L,EACxB,GAAG3qB,EAAI,GACR,ECID,EA1Be,SAAkB+pB,GAE/B,IAAIa,EAAeb,EAAOjwB,QAAO,SAAU0B,GACzC,OAAQiQ,MAAMjQ,EAChB,IACA,IAAKovB,EAAaxgC,OAEhB,MAAO,CACLqZ,IAAK,EACLC,IAAK,GAGT,GAAI,EAAQqmB,EAAO,IAAK,CAEtB,IADA,IAAIc,EAAM,GACDpgC,EAAI,EAAGA,EAAIs/B,EAAO3/B,OAAQK,IACjCogC,EAAMA,EAAI/tB,OAAOitB,EAAOt/B,IAE1BmgC,EAAeC,CACjB,CACA,IAAInnB,EAAM,EAAOknB,GAEjB,MAAO,CACLnnB,IAFQ,EAAOmnB,GAGflnB,IAAKA,EAET,EC5BIonB,EAAed,MAAMvgC,UCCrB,GDASqhC,EAAangC,OACZmgC,EAAaruB,QCDdutB,MAAMvgC,UAAUkB,QAiB7B,EAhBa,SAAgBqV,EAAK+qB,GAChC,IAAK,EAAY/qB,GACf,MAAO,GAIT,IAFA,IAAI5V,EAAS4V,EAAM+qB,EAAQ3gC,OAAS,EAChCy+B,EAAOz+B,EAAS,EACbA,KAAU,CACf,IAAI4gC,OAAW,EACXz5B,EAAQw5B,EAAQ3gC,GAChBA,IAAWy+B,GAAQt3B,IAAUy5B,IAC/BA,EAAWz5B,EACX,EAAOpG,KAAK6U,EAAKzO,EAAO,GAE5B,CACA,OAAOyO,CACT,ECJA,EAVa,SAAgBA,EAAKpD,EAAI/I,GACpC,IAAK,EAAQmM,KAAS,EAAcA,GAClC,OAAOA,EAET,IAAI7D,EAAStI,EAIb,OAHA,EAAKmM,GAAK,SAAUiP,EAAMxkB,GACxB0R,EAASS,EAAGT,EAAQ8S,EAAMxkB,EAC5B,IACO0R,CACT,ECcA,EAxBa,SAAgB6D,EAAKwqB,GAOhC,IAAIruB,EAAS,GACb,IAAK,EAAY6D,GACf,OAAO7D,EAKT,IAHA,IAAI1R,GAAK,EACLsgC,EAAU,GACV3gC,EAAS4V,EAAI5V,SACRK,EAAIL,GAAQ,CACnB,IAAIsB,EAAQsU,EAAIvV,GACZ+/B,EAAU9+B,EAAOjB,EAAGuV,KACtB7D,EAAOrS,KAAK4B,GACZq/B,EAAQjhC,KAAKW,GAEjB,CAEA,OADA,EAAOuV,EAAK+qB,GACL5uB,CACT,ECxBA,WAA0B8uB,GACxB,OAAO,EAAOA,EAAK,SACpB,EC6BD,MA7BA,SAAgBjrB,EAAKoqB,GACnB,IAAIc,EACJ,GAAI,EAAWd,GACbc,EAAW,SAAkBxjB,EAAG8E,GAC9B,OAAO4d,EAAI1iB,GAAK0iB,EAAI5d,EACtB,MACK,CACL,IAAI2e,EAAS,GACT,EAASf,GACXe,EAAOrhC,KAAKsgC,GACH,EAAQA,KACjBe,EAASf,GAEXc,EAAW,SAAkBxjB,EAAG8E,GAC9B,IAAK,IAAI/hB,EAAI,EAAGA,EAAI0gC,EAAO/gC,OAAQK,GAAK,EAAG,CACzC,IAAIgE,EAAO08B,EAAO1gC,GAClB,GAAIid,EAAEjZ,GAAQ+d,EAAE/d,GACd,OAAO,EAET,GAAIiZ,EAAEjZ,GAAQ+d,EAAE/d,GACd,OAAQ,CAEZ,CACA,OAAO,CACT,CACF,CAEA,OADAuR,EAAIlE,KAAKovB,GACFlrB,CACT,EC/Be,SAASorB,EAAKprB,EAAKqI,QAClB,IAAVA,IACFA,EAAQ,IAAIC,KAEd,IAAIG,EAAI,GACR,GAAIuhB,MAAMC,QAAQjqB,GAChB,IAAK,IAAIvV,EAAI,EAAGs5B,EAAM/jB,EAAI5V,OAAQK,EAAIs5B,EAAKt5B,IAAK,CAC9C,IAAIuW,EAAOhB,EAAIvV,GAEV4d,EAAMgjB,IAAIrqB,KACbyH,EAAE3e,KAAKkX,GACPqH,EAAM5c,IAAIuV,GAAM,GAEpB,CAEF,OAAOyH,CACT,CCdA,eAA0BwG,EAAMzjB,GAG9B,IAFA,IAAIqR,EAAM,GACNyuB,EAAS,CAAC,EACL7gC,EAAI,EAAGA,EAAIwkB,EAAK7kB,OAAQK,IAAK,CACpC,IACIiB,EADMujB,EAAKxkB,GACCe,GAChB,IAAK,EAAME,GAAQ,CAEZ,EAAQA,KACXA,EAAQ,CAACA,IAEX,IAAK,IAAI+E,EAAI,EAAGA,EAAI/E,EAAMtB,OAAQqG,IAAK,CACrC,IAAI7B,EAAMlD,EAAM+E,GAEX66B,EAAO18B,KACViO,EAAI/S,KAAK8E,GACT08B,EAAO18B,IAAO,EAElB,CACF,CACF,CACA,OAAOiO,CACR,ECvBc,SAAS0uB,EAAK5c,GAC3B,GAAI,EAAYA,GACd,OAAOA,EAAE,EAGb,CCLe,SAASka,EAAKla,GAC3B,GAAI,EAAYA,GAAI,CAElB,OADUA,IACKvkB,OAAS,EAC1B,CAEF,CCFA,ICMA,EANY,SAAe4V,EAAK8pB,GAC9B,IAAK,IAAIr/B,EAAI,EAAGA,EAAIuV,EAAI5V,OAAQK,IAC9B,IAAKq/B,EAAK9pB,EAAIvV,GAAIA,GAAI,OAAO,EAE/B,OAAO,CACT,ECCA,EANW,SAAcuV,EAAK8pB,GAC5B,IAAK,IAAIr/B,EAAI,EAAGA,EAAIuV,EAAI5V,OAAQK,IAC9B,GAAIq/B,EAAK9pB,EAAIvV,GAAIA,GAAI,OAAO,EAE9B,OAAO,CACT,ECRI,EAAiBsW,OAAOtX,UAAUqX,eAsBtC,MArBA,SAAiBmO,EAAMuc,GACrB,IAAKA,IAAc,EAAQvc,GACzB,MAAO,CAAC,EAQV,IANA,IAKImb,EALAjuB,EAAS,CAAC,EAEVquB,EAAY,EAAWgB,GAAaA,EAAY,SAAUxqB,GAC5D,OAAOA,EAAKwqB,EACd,EAES/gC,EAAI,EAAGA,EAAIwkB,EAAK7kB,OAAQK,IAAK,CACpC,IAAIuW,EAAOiO,EAAKxkB,GAChB2/B,EAAMI,EAAUxpB,GACZ,EAAe7V,KAAKgR,EAAQiuB,GAC9BjuB,EAAOiuB,GAAKtgC,KAAKkX,GAEjB7E,EAAOiuB,GAAO,CAACppB,EAEnB,CACA,OAAO7E,CACT,ECfe,SAASsvB,EAAWxc,EAAMuc,GACvC,IAAKA,EACH,MAAO,CACL,EAAGvc,GAGP,IAAK,EAAWuc,GAAY,CAE1B,IAAIE,EAAoB,EAAQF,GAAaA,EAAYA,EAAUrc,QAAQ,OAAQ,IAAI0D,MAAM,KAC7F2Y,EAAY,SAAmBG,GAG7B,IAFA,IAAIC,EAAS,IAEJnhC,EAAI,EAAGokB,EAAI6c,EAAkBthC,OAAQK,EAAIokB,EAAGpkB,IACnDmhC,GAAUD,EAAID,EAAkBjhC,KAAOkhC,EAAID,EAAkBjhC,IAAI0hB,WAEnE,OAAOyf,CACT,CACF,CACA,OAAO,EAAQ3c,EAAMuc,EACvB,CC1BA,eAA0Bvc,EAAMuc,GAC9B,IAAKA,EAEH,MAAO,CAACvc,GAEV,IAAI4c,EAASJ,EAAWxc,EAAMuc,GAC1BM,EAAQ,GACZ,IAAK,IAAIrhC,KAAKohC,EACZC,EAAMhiC,KAAK+hC,EAAOphC,IAEpB,OAAOqhC,CACR,ECoBD,ICxBA,EARY,SAAepkB,EAAGjE,EAAKC,GACjC,OAAIgE,EAAIjE,EACCA,EACEiE,EAAIhE,EACNA,EAEFgE,CACT,ECKA,EAZgB,SAAmBlM,EAAGuwB,GACpC,IAAId,EAAMc,EAAK5f,WACX5a,EAAQ05B,EAAIxuB,QAAQ,KACxB,IAAe,IAAXlL,EACF,OAAOiS,KAAKwoB,MAAMxwB,GAEpB,IAAIpR,EAAS6gC,EAAItG,OAAOpzB,EAAQ,GAAGnH,OAInC,OAHIA,EAAS,KACXA,EAAS,IAEJwqB,WAAWpZ,EAAEmW,QAAQvnB,GAC9B,ECHA,EAHe,SAAkBsB,GAC/B,OAAO,EAAOA,EAAO,SACvB,ECPIugC,GCCYzgB,OAAO0gB,WAAY1gB,OAAO0gB,UDD1B,MACD,SAASvO,EAAcjW,EAAG8E,EAAG2f,GAI1C,YAHkB,IAAdA,IACFA,EAAYF,GAEPzoB,KAAKoG,IAAIlC,EAAI8E,GAAK2f,CAC3B,CELA,ICeA,WAA0BnsB,EAAKpD,GAC7B,GAAK,EAAQoD,GAAb,CAKA,IAFA,IAAIosB,EACA1oB,GAAO5V,IACFrD,EAAI,EAAGA,EAAIuV,EAAI5V,OAAQK,IAAK,CACnC,IAAIuW,EAAOhB,EAAIvV,GACX+Q,EAAI,EAAWoB,GAAMA,EAAGoE,GAAQA,EAAKpE,GACrCpB,EAAIkI,IACN0oB,EAAUprB,EACV0C,EAAMlI,EAEV,CACA,OAAO4wB,CAXP,CAYD,ECfD,WAA0BpsB,EAAKpD,GAC7B,GAAK,EAAQoD,GAAb,CAKA,IAFA,IAAIqsB,EACA5oB,EAAM3V,IACDrD,EAAI,EAAGA,EAAIuV,EAAI5V,OAAQK,IAAK,CACnC,IAAIuW,EAAOhB,EAAIvV,GACX+Q,EAAI,EAAWoB,GAAMA,EAAGoE,GAAQA,EAAKpE,GACrCpB,EAAIiI,IACN4oB,EAAUrrB,EACVyC,EAAMjI,EAEV,CACA,OAAO6wB,CAXP,CAYD,EC5BD,EAHU,SAAalU,EAAG7Y,GACxB,OAAQ6Y,EAAI7Y,EAAIA,GAAKA,CACvB,ECFIgtB,GCAe9oB,KAAK+B,GDAX/B,KAAK+B,GAAK,KAIvB,EAHe,SAAkBgnB,GAC/B,OAAOD,EAASC,CAClB,EEFA,ICAA,ECDA,SAA0BjP,EAAK8M,GAC7B,OAAO9M,EAAIxc,eAAespB,EAC3B,ECYD,GAXarpB,OAAOgpB,OAAS,SAAUzM,GACrC,OAAOvc,OAAOgpB,OAAOzM,EACvB,EAAI,SAAUA,GACZ,IAAInhB,EAAS,GAMb,OALA,EAAKmhB,GAAK,SAAU5xB,EAAO0+B,GACnB,EAAW9M,IAAgB,cAAR8M,GACvBjuB,EAAOrS,KAAK4B,EAEhB,IACOyQ,CACT,ECZA,YAA0BzQ,GACxB,OAAI,EAAMA,GAAe,GAClBA,EAAMygB,UACd,ECAD,GAHgB,SAAmB8e,GACjC,OAAO,GAASA,GAAK9iB,aACvB,ECQA,OAXA,SAAoB8iB,EAAKtc,GACvB,OAAKsc,GAAQtc,EAGNsc,EAAI9b,QAAQ,oBAAoB,SAAUqV,EAAOh5B,GACtD,MAAwB,OAApBg5B,EAAME,OAAO,GACRF,EAAMjU,MAAM,QAEFyP,IAAZrR,EAAEnjB,GAAsB,GAAKmjB,EAAEnjB,EACxC,IAPSy/B,CAQX,ECLA,GAJiB,SAAoBv/B,GACnC,IAAIu/B,EAAM,GAASv/B,GACnB,OAAOu/B,EAAIvG,OAAO,GAAGvU,cAAgB8a,EAAIuB,UAAU,EACrD,ECJI,GAAW,CAAC,EAAErgB,SAIlB,GAHc,SAAiBzgB,GAC7B,OAAO,GAASP,KAAKO,GAAOyjB,QAAQ,aAAc,IAAIA,QAAQ,KAAM,GACtE,ECOA,GAHgB,SAAmBzjB,GACjC,OAAO,EAAOA,EAAO,UACvB,ECLA,GAHa,SAAgBA,GAC3B,OAAO,EAAOA,EAAO,OACvB,ECHA,IAGA,GAHa,SAAgBA,GAC3B,OAAiB,OAAVA,CACT,ECFI+gC,GAAc1rB,OAAOtX,UAMzB,GALkB,SAAqBiC,GACrC,IAAIghC,EAAOhhC,GAASA,EAAM2C,YAE1B,OAAO3C,KADqB,mBAATghC,GAAuBA,EAAKjjC,WAAagjC,GAE9D,ECFA,GAHkB,SAAqB/gC,GACrC,YAAiBs0B,IAAVt0B,CACT,ECKA,GAHgB,SAAmBijB,GACjC,OAAOA,aAAajR,SAAWiR,aAAage,YAC9C,ECNe,SAASjgC,GAAsBkQ,GAQ5C,OAPanQ,OAAOC,uBAAyBD,OAAOmgC,6BAEpDngC,OAAOogC,0BAEPpgC,OAAOqgC,yBAA2B,SAAUlgC,GAC1C,OAAOC,WAAWD,EAAG,GACvB,GACcgQ,EAChB,CCTe,SAASmwB,GAAqBC,IAC9BvgC,OAAOsgC,sBAAwBtgC,OAAOwgC,4BAEnDxgC,OAAOygC,yBAEPzgC,OAAO0gC,wBAA0Bj/B,cAC1B8+B,EACT,CCLA,ICyBA,GA1BY,SAASltB,EAAMwd,GACzB,GAAmB,iBAARA,GAA4B,OAARA,EAC7B,OAAOA,EAET,IAAIzgB,EACJ,GAAI,EAAQygB,GAAM,CAChBzgB,EAAM,GACN,IAAK,IAAIpS,EAAI,EAAGokB,EAAIyO,EAAIlzB,OAAQK,EAAIokB,EAAGpkB,IACf,iBAAX6yB,EAAI7yB,IAA6B,MAAV6yB,EAAI7yB,GACpCoS,EAAIpS,GAAKqV,EAAMwd,EAAI7yB,IAEnBoS,EAAIpS,GAAK6yB,EAAI7yB,EAGnB,MAEE,IAAK,IAAIwF,KADT4M,EAAM,CAAC,EACOygB,EACU,iBAAXA,EAAIrtB,IAA6B,MAAVqtB,EAAIrtB,GACpC4M,EAAI5M,GAAK6P,EAAMwd,EAAIrtB,IAEnB4M,EAAI5M,GAAKqtB,EAAIrtB,GAInB,OAAO4M,CACT,ECPA,OAnBA,SAAkBitB,EAAMsD,EAAMC,GAC5B,IAAIvhC,EACJ,OAAO,WACL,IAAI4wB,EAAUnzB,KACZU,EAAOE,UAOLmjC,EAAUD,IAAcvhC,EAC5BoC,aAAapC,GACbA,EAAUe,YARE,WACVf,EAAU,KACLuhC,GACHvD,EAAKl/B,MAAM8xB,EAASzyB,EAExB,GAG4BmjC,GACxBE,GACFxD,EAAKl/B,MAAM8xB,EAASzyB,EAExB,CACF,ECXA,YAA0B2C,EAAG2gC,GAC3B,IAAK,EAAW3gC,GACd,MAAM,IAAI0B,UAAU,uBAEtB,IAAIk/B,EAAW,SAASA,IAEtB,IADA,IAAIvjC,EAAO,GACFC,EAAK,EAAGA,EAAKC,UAAUC,OAAQF,IACtCD,EAAKC,GAAMC,UAAUD,GAGvB,IAAIkgC,EAAMmD,EAAWA,EAAS3iC,MAAMrB,KAAMU,GAAQA,EAAK,GACnDoe,EAAQmlB,EAASnlB,MACrB,GAAIA,EAAMgjB,IAAIjB,GACZ,OAAO/hB,EAAM9c,IAAI6+B,GAEnB,IAAIjuB,EAASvP,EAAEhC,MAAMrB,KAAMU,GAG3B,OADAoe,EAAM5c,IAAI2+B,EAAKjuB,GACRA,CACT,EAEA,OADAqxB,EAASnlB,MAAQ,IAAIC,IACdklB,CACR,EC1BD,SAASC,GAAS9R,EAAM+R,EAAKC,EAAOC,GAGlC,IAAK,IAAIxD,KAFTuD,EAAQA,GAAS,EACjBC,EAAWA,GAHO,EAIFF,EACd,GAAIA,EAAI5sB,eAAespB,GAAM,CAC3B,IAAI1+B,EAAQgiC,EAAItD,GACF,OAAV1+B,GAAkB,EAAcA,IAC7B,EAAciwB,EAAKyO,MACtBzO,EAAKyO,GAAO,CAAC,GAEXuD,EAAQC,EACVH,GAAS9R,EAAKyO,GAAM1+B,EAAOiiC,EAAQ,EAAGC,GAEtCjS,EAAKyO,GAAOsD,EAAItD,IAET,EAAQ1+B,IACjBiwB,EAAKyO,GAAO,GACZzO,EAAKyO,GAAOzO,EAAKyO,GAAKttB,OAAOpR,SACVs0B,IAAVt0B,IACTiwB,EAAKyO,GAAO1+B,EAEhB,CAEJ,CAEA,IAUA,GAVc,SAAiBmR,GAE7B,IADA,IAAI5S,EAAO,GACFC,EAAK,EAAGA,EAAKC,UAAUC,OAAQF,IACtCD,EAAKC,EAAK,GAAKC,UAAUD,GAE3B,IAAK,IAAIO,EAAI,EAAGA,EAAIR,EAAKG,OAAQK,GAAK,EACpCgjC,GAAS5wB,EAAK5S,EAAKQ,IAErB,OAAOoS,CACT,ECnBA,GAjBc,SAAiBmD,EAAKsd,GAClC,IAAK,EAAYtd,GACf,OAAQ,EAEV,IAAIV,EAAI0qB,MAAMvgC,UAAUgT,QACxB,GAAI6C,EACF,OAAOA,EAAEnU,KAAK6U,EAAKsd,GAGrB,IADA,IAAI/rB,GAAS,EACJ9G,EAAI,EAAGA,EAAIuV,EAAI5V,OAAQK,IAC9B,GAAIuV,EAAIvV,KAAO6yB,EAAK,CAClB/rB,EAAQ9G,EACR,KACF,CAEF,OAAO8G,CACT,ECbI,GAAiBwP,OAAOtX,UAAUqX,eA+BtC,OA9BA,SAAiBpV,GAUf,GAAI,EAAMA,GACR,OAAO,EAET,GAAI,EAAYA,GACd,OAAQA,EAAMtB,OAEhB,IAAI8H,EAAO,GAAQxG,GACnB,GAAa,QAATwG,GAA2B,QAATA,EACpB,OAAQxG,EAAMmiC,KAEhB,GAAI,GAAYniC,GACd,OAAQqV,OAAOopB,KAAKz+B,GAAOtB,OAE7B,IAAK,IAAIggC,KAAO1+B,EACd,GAAI,GAAeP,KAAKO,EAAO0+B,GAC7B,OAAO,EAGX,OAAO,CACT,ECSA,GAxCc,SAASjP,EAAQzvB,EAAOoiC,GACpC,GAAIpiC,IAAUoiC,EACZ,OAAO,EAET,IAAKpiC,IAAUoiC,EACb,OAAO,EAET,GAAI,EAASpiC,IAAU,EAASoiC,GAC9B,OAAO,EAET,GAAI,EAAYpiC,IAAU,EAAYoiC,GAAQ,CAC5C,GAAIpiC,EAAMtB,SAAW0jC,EAAM1jC,OACzB,OAAO,EAGT,IADA,IAAIyS,GAAM,EACDpS,EAAI,EAAGA,EAAIiB,EAAMtB,SACxByS,EAAMse,EAAQzvB,EAAMjB,GAAIqjC,EAAMrjC,KADEA,KAMlC,OAAOoS,CACT,CACA,GAAI,EAAanR,IAAU,EAAaoiC,GAAQ,CAC9C,IAAIC,EAAYhtB,OAAOopB,KAAKz+B,GACxBsiC,EAAYjtB,OAAOopB,KAAK2D,GAC5B,GAAIC,EAAU3jC,SAAW4jC,EAAU5jC,OACjC,OAAO,EAGT,IADIyS,GAAM,EACDpS,EAAI,EAAGA,EAAIsjC,EAAU3jC,SAC5ByS,EAAMse,EAAQzvB,EAAMqiC,EAAUtjC,IAAKqjC,EAAMC,EAAUtjC,MADfA,KAMtC,OAAOoS,CACT,CACA,OAAO,CACT,EC7BA,GAZU,SAAamD,EAAK8pB,GAC1B,IAAK,EAAY9pB,GAEf,OAAOA,EAGT,IADA,IAAI7D,EAAS,GACJ5K,EAAQ,EAAGA,EAAQyO,EAAI5V,OAAQmH,IAAS,CAC/C,IAAI7F,EAAQsU,EAAIzO,GAChB4K,EAAOrS,KAAKggC,EAAKp+B,EAAO6F,GAC1B,CACA,OAAO4K,CACT,ECVI8xB,GAAW,SAAkBzyB,GAC/B,OAAOA,CACT,EACA,YAA0B0yB,EAAQpE,QACnB,IAATA,IACFA,EAAOmE,IAET,IAAIxlB,EAAI,CAAC,EAOT,OANI,EAASylB,KAAY,EAAMA,IAC7BntB,OAAOopB,KAAK+D,GAAQv8B,SAAQ,SAAUy4B,GAEpC3hB,EAAE2hB,GAAON,EAAKoE,EAAO9D,GAAMA,EAC7B,IAEK3hB,CACR,EChBD,SAAS0lB,GAAKxS,EAAM2B,GAClB,IAAK,IAAI8M,KAAO9M,EACVA,EAAIxc,eAAespB,IAAgB,gBAARA,QAAsCpK,IAAb1C,EAAI8M,KAC1DzO,EAAKyO,GAAO9M,EAAI8M,GAGtB,CACe,SAAS,GAAIzO,EAAMyS,EAAMC,EAAMC,GAI5C,OAHIF,GAAMD,GAAKxS,EAAMyS,GACjBC,GAAMF,GAAKxS,EAAM0S,GACjBC,GAAMH,GAAKxS,EAAM2S,GACd3S,CACT,CCNA,gBAA0B2B,EAAK8M,EAAKmE,GAGlC,IAFA,IAAI5mB,EAAI,EACJ6mB,EAAS,EAASpE,GAAOA,EAAIvX,MAAM,KAAOuX,EACvC9M,GAAO3V,EAAI6mB,EAAOpkC,QACvBkzB,EAAMA,EAAIkR,EAAO7mB,MAEnB,YAAeqY,IAAR1C,GAAqB3V,EAAI6mB,EAAOpkC,OAASmkC,EAAejR,CAChE,ECLD,YAA0BA,EAAKltB,EAAM1E,GACnC,IAAIijB,EAAI2O,EACJkR,EAAS,EAASp+B,GAAQA,EAAKyiB,MAAM,KAAOziB,EAYhD,OAXAo+B,EAAO78B,SAAQ,SAAUy4B,EAAKqE,GAExBA,EAAMD,EAAOpkC,OAAS,GACnB,EAASukB,EAAEyb,MACdzb,EAAEyb,GAAO,EAASoE,EAAOC,EAAM,IAAM,GAAK,CAAC,GAE7C9f,EAAIA,EAAEyb,IAENzb,EAAEyb,GAAO1+B,CAEb,IACO4xB,CACR,ECtBG,GAAiBvc,OAAOtX,UAAUqX,eACtC,YAA0BotB,EAAQ/D,GAChC,GAAe,OAAX+D,IAAoB,EAAcA,GACpC,MAAO,CAAC,EAEV,IAAI/xB,EAAS,CAAC,EAMd,OALA,EAAKguB,GAAM,SAAUC,GACf,GAAej/B,KAAK+iC,EAAQ9D,KAC9BjuB,EAAOiuB,GAAO8D,EAAO9D,GAEzB,IACOjuB,CACR,ECbD,YAA0BmhB,EAAK6M,GAC7B,OAAO,EAAO7M,GAAK,SAAU7U,EAAGkiB,EAAMP,GAIpC,OAHKD,EAAKz7B,SAAS07B,KACjB3hB,EAAE2hB,GAAOO,GAEJliB,CACT,GAAG,CAAC,EACL,ECRD,YAA0BqhB,EAAMsD,EAAMsB,GACpC,IAAI5iC,EAAS4wB,EAASzyB,EAAMkS,EACxB6uB,EAAW,EACV0D,IAASA,EAAU,CAAC,GACzB,IAAIC,EAAQ,WACV3D,GAA+B,IAApB0D,EAAQE,QAAoB,EAAIriC,KAAKD,MAChDR,EAAU,KACVqQ,EAAS2tB,EAAKl/B,MAAM8xB,EAASzyB,GACxB6B,IAAS4wB,EAAUzyB,EAAO,KACjC,EACI4kC,EAAY,WACd,IAAIviC,EAAMC,KAAKD,MACV0+B,IAAgC,IAApB0D,EAAQE,UAAmB5D,EAAW1+B,GACvD,IAAIwiC,EAAY1B,GAAQ9gC,EAAM0+B,GAc9B,OAbAtO,EAAUnzB,KACVU,EAAOE,UACH2kC,GAAa,GAAKA,EAAY1B,GAC5BthC,IACFoC,aAAapC,GACbA,EAAU,MAEZk/B,EAAW1+B,EACX6P,EAAS2tB,EAAKl/B,MAAM8xB,EAASzyB,GACxB6B,IAAS4wB,EAAUzyB,EAAO,OACrB6B,IAAgC,IAArB4iC,EAAQK,WAC7BjjC,EAAUe,WAAW8hC,EAAOG,IAEvB3yB,CACT,EAMA,OALA0yB,EAAUG,OAAS,WACjB9gC,aAAapC,GACbk/B,EAAW,EACXl/B,EAAU4wB,EAAUzyB,EAAO,IAC7B,EACO4kC,CACR,EClCD,YAA0BnjC,GACxB,OAAO,EAAYA,GAASs+B,MAAMvgC,UAAU8mB,MAAMplB,KAAKO,GAAS,EACjE,ECHG,GAAM,CAAC,EACX,YAA0BujC,GAOxB,OALK,GADLA,EAASA,GAAU,KAIjB,GAAIA,IAAW,EAFf,GAAIA,GAAU,EAITA,EAAS,GAAIA,EACrB,ECTD,cAA8B,ECEf,SAASpB,GAAKlf,GAC3B,OAAI,EAAMA,GACD,EAEL,EAAYA,GACPA,EAAEvkB,OAEJ2W,OAAOopB,KAAKxb,GAAGvkB,MACxB,KCNI8kC,eAIJ,GAAeC,IAAQ,SAAU/kB,EAAMG,QACxB,IAATA,IACFA,EAAO,CAAC,GAEV,IAAIF,EAAWE,EAAKF,SAClB2S,EAAazS,EAAKyS,WAClBC,EAAa1S,EAAK0S,WAClBC,EAAY3S,EAAK2S,UACjBC,EAAc5S,EAAK4S,YAKrB,OAJK+R,KACHA,GAAMh7B,SAAS+Z,cAAc,UAAUC,WAAW,OAEpDghB,GAAI3kB,KAAO,CAAC2S,EAAWC,EAAaF,EAAY5S,EAAW,KAAM2S,GAAYpK,KAAK,KAC3Esc,GAAIpS,YAAY,EAAS1S,GAAQA,EAAO,IAAI9S,KACrD,IAAG,SAAU8S,EAAMG,GAIjB,YAHa,IAATA,IACFA,EAAO,CAAC,IAEH,SAAe,CAACH,GAAO,GAAOG,IAAOqI,KAAK,GACnD,ICdA,YAA0BxI,EAAMglB,EAAU7kB,EAAM0gB,QAClC,IAARA,IACFA,EAAM,OAER,IAKIoE,EACAC,EALAC,EAAoB,GAAiBtE,EAAK1gB,GAC1CilB,EAAY,EAASplB,GAAyBA,EAAjB,GAASA,GACtCqlB,EAAYL,EACZ3mB,EAAI,GAGR,GAAI,GAAiB2B,EAAMG,IAAS6kB,EAClC,OAAOhlB,EAIT,KAEEilB,EAAcG,EAAS7K,OAAO,EAdrB,OAgBT2K,EAAe,GAAiBD,EAAa9kB,IAE1BglB,EAAoBE,GACjCH,EAAeG,IASrB,GALAhnB,EAAE3e,KAAKulC,GAEPI,GAAaH,IACbE,EAAWA,EAAS7K,OA1BX,KA6BP,OAAOlc,EAAEmK,KAAK,IAKlB,KAEEyc,EAAcG,EAAS7K,OAAO,EAAG,MAEjC2K,EAAe,GAAiBD,EAAa9kB,IAE1BglB,EAAoBE,IAOvC,GAJAhnB,EAAE3e,KAAKulC,GAEPI,GAAaH,IACbE,EAAWA,EAAS7K,OAAO,IAEzB,OAAOlc,EAAEmK,KAAK,IAGlB,MAAO,GAAKnK,EAAEmK,KAAK,IAAMqY,CAC1B,ECzCD,GAzB6B,WAC3B,SAASyE,IACPnmC,KAAKgxB,IAAM,CAAC,CACd,CAoBA,OAnBAmV,EAAUjmC,UAAU4hC,IAAM,SAAUjB,GAClC,YAAyBpK,IAAlBz2B,KAAKgxB,IAAI6P,EAClB,EACAsF,EAAUjmC,UAAU8B,IAAM,SAAU6+B,EAAKuF,GACvC,IAAIn0B,EAAIjS,KAAKgxB,IAAI6P,GACjB,YAAapK,IAANxkB,EAAkBm0B,EAAMn0B,CACjC,EACAk0B,EAAUjmC,UAAUgC,IAAM,SAAU2+B,EAAK1+B,GACvCnC,KAAKgxB,IAAI6P,GAAO1+B,CAClB,EACAgkC,EAAUjmC,UAAUqP,MAAQ,WAC1BvP,KAAKgxB,IAAM,CAAC,CACd,EACAmV,EAAUjmC,UAAUmmC,OAAS,SAAUxF,UAC9B7gC,KAAKgxB,IAAI6P,EAClB,EACAsF,EAAUjmC,UAAUokC,KAAO,WACzB,OAAO9sB,OAAOopB,KAAK5gC,KAAKgxB,KAAKnwB,MAC/B,EACOslC,CACT,CAxB6B,sBCH7B,IAAI5vB,EAAQ,WACV,aAEA,SAAS+vB,EAAYvS,EAAKprB,GACxB,OAAe,MAARA,GAAgBorB,aAAeprB,CACxC,CACA,IAAI49B,EAQAC,EAMAC,EAbJ,IACEF,EAAYxnB,GACd,CAAE,MAAO2nB,GAGPH,EAAY,WAAsB,CACpC,CAEA,IACEC,EAAYG,GACd,CAAE,MAAOD,GACPF,EAAY,WAAsB,CACpC,CAEA,IACEC,EAAgBG,OAClB,CAAE,MAAOF,GACPD,EAAgB,WAA0B,CAC5C,CAuBA,SAASlwB,EAAM3E,EAAQi1B,EAAUC,EAAO5mC,EAAW6mC,GACzB,iBAAbF,IACTC,EAAQD,EAASC,MACjB5mC,EAAY2mC,EAAS3mC,UACrB6mC,EAAuBF,EAASE,qBAChCF,EAAWA,EAASA,UAItB,IAAIG,EAAa,GACbC,EAAc,GACdC,EAA6B,oBAAVC,OAuHvB,YAtHuB,IAAZN,IAAyBA,GAAW,QAC3B,IAATC,IAAsBA,EAAQviC,KAGzC,SAAS6iC,EAAOx1B,EAAQk1B,GAEtB,GAAe,OAAXl1B,EAAiB,OAAO,KAC5B,GAAc,IAAVk1B,EAAa,OAAOl1B,EACxB,IAAI9B,EACAkxB,EACJ,GAAqB,iBAAVpvB,EACT,OAAOA,EAET,GAAI00B,EAAY10B,EAAQ20B,GACtBz2B,EAAQ,IAAIy2B,OACP,GAAID,EAAY10B,EAAQ40B,GAC7B12B,EAAQ,IAAI02B,OACP,GAAIF,EAAY10B,EAAQ60B,GAC7B32B,EAAQ,IAAI22B,GAAc,SAAUY,EAASC,GAC3C11B,EAAO21B,MAAK,SAAUplC,GACpBklC,EAAQD,EAAOjlC,EAAO2kC,EAAQ,GAChC,IAAG,SAAUU,GACXF,EAAOF,EAAOI,EAAKV,EAAQ,GAC7B,GACF,SACK,GAAIvwB,EAAMkxB,UAAU71B,GACzB9B,EAAQ,QACH,GAAIyG,EAAMmxB,WAAW91B,GAC1B9B,EAAQ,IAAIgV,OAAOlT,EAAOyf,OAAQsW,EAAiB/1B,IAC/CA,EAAOg2B,YAAW93B,EAAM83B,UAAYh2B,EAAOg2B,gBAC1C,GAAIrxB,EAAMsxB,SAASj2B,GACxB9B,EAAQ,IAAI9M,KAAK4O,EAAOrJ,eACnB,IAAI2+B,GAAaC,OAAOW,SAASl2B,GAStC,OANE9B,EAFEq3B,OAAOY,YAEDZ,OAAOY,YAAYn2B,EAAO/Q,QAG1B,IAAIsmC,OAAOv1B,EAAO/Q,QAE5B+Q,EAAOo2B,KAAKl4B,GACLA,EACEw2B,EAAY10B,EAAQq2B,OAC7Bn4B,EAAQ0H,OAAO0wB,OAAOt2B,QAEE,IAAb1R,GACT8gC,EAAQxpB,OAAOupB,eAAenvB,GAC9B9B,EAAQ0H,OAAO0wB,OAAOlH,KAEtBlxB,EAAQ0H,OAAO0wB,OAAOhoC,GACtB8gC,EAAQ9gC,EAEZ,CACA,GAAI2mC,EAAU,CACZ,IAAI7+B,EAAQg/B,EAAW9zB,QAAQtB,GAC/B,IAAc,GAAV5J,EACF,OAAOi/B,EAAYj/B,GAErBg/B,EAAWzmC,KAAKqR,GAChBq1B,EAAY1mC,KAAKuP,EACnB,CAcA,IAAK,IAAI5O,KAbLolC,EAAY10B,EAAQ20B,IACtB30B,EAAOxJ,SAAQ,SAAUjG,EAAO0+B,GAC9B,IAAIsH,EAAWf,EAAOvG,EAAKiG,EAAQ,GAC/BsB,EAAahB,EAAOjlC,EAAO2kC,EAAQ,GACvCh3B,EAAM5N,IAAIimC,EAAUC,EACtB,IAEE9B,EAAY10B,EAAQ40B,IACtB50B,EAAOxJ,SAAQ,SAAUjG,GACvB,IAAIkmC,EAAajB,EAAOjlC,EAAO2kC,EAAQ,GACvCh3B,EAAM0B,IAAI62B,EACZ,IAEYz2B,EAAQ,CACpB,IAAItL,EACA06B,IACF16B,EAAQkR,OAAO8wB,yBAAyBtH,EAAO9/B,IAE7CoF,GAAsB,MAAbA,EAAMpE,MAGnB4N,EAAM5O,GAAKkmC,EAAOx1B,EAAO1Q,GAAI4lC,EAAQ,GACvC,CACA,GAAItvB,OAAO+wB,sBACT,KAAIC,EAAUhxB,OAAO+wB,sBAAsB32B,GAC3C,IAAS1Q,EAAI,EAAGA,EAAIsnC,EAAQ3nC,OAAQK,IAAK,CAGvC,IAAIunC,EAASD,EAAQtnC,MACjBwnC,EAAalxB,OAAO8wB,yBAAyB12B,EAAQ62B,KACtCC,EAAWC,YAAe5B,KAG7Cj3B,EAAM24B,GAAUrB,EAAOx1B,EAAO62B,GAAS3B,EAAQ,GAC1C4B,EAAWC,YACdnxB,OAAOoxB,eAAe94B,EAAO24B,EAAQ,CACnCE,YAAY,IAGlB,CAfkD,CAiBpD,GAAI5B,EACF,KAAI8B,EAAmBrxB,OAAOsxB,oBAAoBl3B,GAClD,IAAS1Q,EAAI,EAAGA,EAAI2nC,EAAiBhoC,OAAQK,IAAK,CAChD,IACIwnC,EADAK,EAAeF,EAAiB3nC,IAChCwnC,EAAalxB,OAAO8wB,yBAAyB12B,EAAQm3B,KACvCL,EAAWC,aAG7B74B,EAAMi5B,GAAgB3B,EAAOx1B,EAAOm3B,GAAejC,EAAQ,GAC3DtvB,OAAOoxB,eAAe94B,EAAOi5B,EAAc,CACzCJ,YAAY,IAEhB,CAXyD,CAa3D,OAAO74B,CACT,CACOs3B,CAAOx1B,EAAQk1B,EACxB,CAkBA,SAASkC,EAAW5jB,GAClB,OAAO5N,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,EACxC,CAcA,SAASuiB,EAAiBsB,GACxB,IAAIC,EAAQ,GAIZ,OAHID,EAAGE,SAAQD,GAAS,KACpBD,EAAGG,aAAYF,GAAS,KACxBD,EAAGI,YAAWH,GAAS,KACpBA,CACT,CAEA,OAjCA3yB,EAAM+yB,eAAiB,SAAwB13B,GAC7C,GAAe,OAAXA,EAAiB,OAAO,KAC5B,IAAIuT,EAAI,WAAc,EAEtB,OADAA,EAAEjlB,UAAY0R,EACP,IAAIuT,CACb,EAOA5O,EAAMyyB,WAAaA,EAInBzyB,EAAMsxB,SAHN,SAAkBziB,GAChB,MAAoB,iBAANA,GAAoC,kBAAlB4jB,EAAW5jB,EAC7C,EAKA7O,EAAMkxB,UAHN,SAAmBriB,GACjB,MAAoB,iBAANA,GAAoC,mBAAlB4jB,EAAW5jB,EAC7C,EAKA7O,EAAMmxB,WAHN,SAAoBtiB,GAClB,MAAoB,iBAANA,GAAoC,oBAAlB4jB,EAAW5jB,EAC7C,EASA7O,EAAMoxB,iBAAmBA,EAClBpxB,CACT,CA9NY,GA+NsBgzB,EAAOC,UACvCD,EAAOC,QAAUjzB,8PC/NZ,SAASkzB,IAAS,CACzB,IAAIC,EAAU,GAEVC,EAAY,EAAID,EAEhBE,EAAM,sBACRC,EAAM,oDACNC,EAAM,qDACNC,EAAQ,qBACRC,EAAe,IAAIllB,OAAO,UAAUvR,OAAOq2B,EAAK,KAAKr2B,OAAOq2B,EAAK,KAAKr2B,OAAOq2B,EAAK,SAClFK,EAAe,IAAInlB,OAAO,UAAUvR,OAAOu2B,EAAK,KAAKv2B,OAAOu2B,EAAK,KAAKv2B,OAAOu2B,EAAK,SAClFI,EAAgB,IAAIplB,OAAO,WAAWvR,OAAOq2B,EAAK,KAAKr2B,OAAOq2B,EAAK,KAAKr2B,OAAOq2B,EAAK,KAAKr2B,OAAOs2B,EAAK,SACrGM,EAAgB,IAAIrlB,OAAO,WAAWvR,OAAOu2B,EAAK,KAAKv2B,OAAOu2B,EAAK,KAAKv2B,OAAOu2B,EAAK,KAAKv2B,OAAOs2B,EAAK,SACrGO,EAAe,IAAItlB,OAAO,UAAUvR,OAAOs2B,EAAK,KAAKt2B,OAAOu2B,EAAK,KAAKv2B,OAAOu2B,EAAK,SAClFO,EAAgB,IAAIvlB,OAAO,WAAWvR,OAAOs2B,EAAK,KAAKt2B,OAAOu2B,EAAK,KAAKv2B,OAAOu2B,EAAK,KAAKv2B,OAAOs2B,EAAK,SACnGS,EAAQ,CACVC,UAAW,SACXC,aAAc,SACdC,KAAM,MACNC,WAAY,QACZC,MAAO,SACPC,MAAO,SACPC,OAAQ,SACRC,MAAO,EACPC,eAAgB,SAChBC,KAAM,IACNC,WAAY,QACZC,MAAO,SACPC,UAAW,SACXC,UAAW,QACXC,WAAY,QACZC,UAAW,SACXC,MAAO,SACPC,eAAgB,QAChBC,SAAU,SACVC,QAAS,SACTC,KAAM,MACNC,SAAU,IACVC,SAAU,MACVC,cAAe,SACfC,SAAU,SACVC,UAAW,MACXC,SAAU,SACVC,UAAW,SACXC,YAAa,QACbC,eAAgB,QAChBC,WAAY,SACZC,WAAY,SACZC,QAAS,QACTC,WAAY,SACZC,aAAc,QACdC,cAAe,QACfC,cAAe,QACfC,cAAe,QACfC,cAAe,MACfC,WAAY,QACZC,SAAU,SACVC,YAAa,MACbC,QAAS,QACTC,QAAS,QACTC,WAAY,QACZC,UAAW,SACXC,YAAa,SACbC,YAAa,QACbC,QAAS,SACTC,UAAW,SACXC,WAAY,SACZC,KAAM,SACNC,UAAW,SACXC,KAAM,QACNC,MAAO,MACPC,YAAa,SACbC,KAAM,QACNC,SAAU,SACVC,QAAS,SACTC,UAAW,SACXC,OAAQ,QACRC,MAAO,SACPC,MAAO,SACPC,SAAU,SACVC,cAAe,SACfC,UAAW,QACXC,aAAc,SACdC,UAAW,SACXC,WAAY,SACZC,UAAW,SACXC,qBAAsB,SACtBC,UAAW,SACXC,WAAY,QACZC,UAAW,SACXC,UAAW,SACXC,YAAa,SACbC,cAAe,QACfC,aAAc,QACdC,eAAgB,QAChBC,eAAgB,QAChBC,eAAgB,SAChBC,YAAa,SACbC,KAAM,MACNC,UAAW,QACXC,MAAO,SACPC,QAAS,SACTC,OAAQ,QACRC,iBAAkB,QAClBC,WAAY,IACZC,aAAc,SACdC,aAAc,QACdC,eAAgB,QAChBC,gBAAiB,QACjBC,kBAAmB,MACnBC,gBAAiB,QACjBC,gBAAiB,SACjBC,aAAc,QACdC,UAAW,SACXC,UAAW,SACXC,SAAU,SACVC,YAAa,SACbC,KAAM,IACNC,QAAS,SACTC,MAAO,QACPC,UAAW,QACXC,OAAQ,SACRC,UAAW,SACXC,OAAQ,SACRC,cAAe,SACfC,UAAW,SACXC,cAAe,SACfC,cAAe,SACfC,WAAY,SACZC,UAAW,SACXC,KAAM,SACNC,KAAM,SACNC,KAAM,SACNC,WAAY,SACZC,OAAQ,QACRC,cAAe,QACfC,IAAK,SACLC,UAAW,SACXC,UAAW,QACXC,YAAa,QACbC,OAAQ,SACRC,WAAY,SACZC,SAAU,QACVC,SAAU,SACVC,OAAQ,SACRC,OAAQ,SACRC,QAAS,QACTC,UAAW,QACXC,UAAW,QACXC,UAAW,QACXC,KAAM,SACNC,YAAa,MACbC,UAAW,QACXlqB,IAAK,SACLmqB,KAAM,MACNC,QAAS,SACTC,OAAQ,SACRC,UAAW,QACXC,OAAQ,SACRC,MAAO,SACPC,MAAO,SACPC,WAAY,SACZC,OAAQ,SACRC,YAAa,UAiBf,SAASC,IACP,OAAO1zC,KAAK2zC,MAAMC,WACpB,CAOA,SAASC,IACP,OAAO7zC,KAAK2zC,MAAMG,WACpB,CACe,SAASC,EAAMC,GAC5B,IAAIj+B,EAAGuP,EAEP,OADA0uB,GAAUA,EAAS,IAAIngB,OAAOjV,eACtB7I,EAAIg0B,EAAMkK,KAAKD,KAAY1uB,EAAIvP,EAAE,GAAGlV,OAAQkV,EAAIm+B,SAASn+B,EAAE,GAAI,IAAW,IAANuP,EAAU6uB,EAAKp+B,GACnF,IAANuP,EAAU,IAAI8uB,EAAIr+B,GAAK,EAAI,GAAMA,GAAK,EAAI,IAAMA,GAAK,EAAI,GAAU,IAAJA,GAAe,GAAJA,IAAY,EAAQ,GAAJA,EAAS,GAC7F,IAANuP,EAAU+uB,EAAKt+B,GAAK,GAAK,IAAMA,GAAK,GAAK,IAAMA,GAAK,EAAI,KAAW,IAAJA,GAAY,KACrE,IAANuP,EAAU+uB,EAAKt+B,GAAK,GAAK,GAAMA,GAAK,EAAI,IAAMA,GAAK,EAAI,GAAMA,GAAK,EAAI,IAAMA,GAAK,EAAI,GAAU,IAAJA,IAAgB,GAAJA,IAAY,EAAQ,GAAJA,GAAW,KAClI,OACGA,EAAIi0B,EAAaiK,KAAKD,IAAW,IAAII,EAAIr+B,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAI,IAC7DA,EAAIk0B,EAAagK,KAAKD,IAAW,IAAII,EAAW,IAAPr+B,EAAE,GAAW,IAAY,IAAPA,EAAE,GAAW,IAAY,IAAPA,EAAE,GAAW,IAAK,IAC/FA,EAAIm0B,EAAc+J,KAAKD,IAAWK,EAAKt+B,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,KAC3DA,EAAIo0B,EAAc8J,KAAKD,IAAWK,EAAY,IAAPt+B,EAAE,GAAW,IAAY,IAAPA,EAAE,GAAW,IAAY,IAAPA,EAAE,GAAW,IAAKA,EAAE,KAC/FA,EAAIq0B,EAAa6J,KAAKD,IAAWM,EAAKv+B,EAAE,GAAIA,EAAE,GAAK,IAAKA,EAAE,GAAK,IAAK,IACpEA,EAAIs0B,EAAc4J,KAAKD,IAAWM,EAAKv+B,EAAE,GAAIA,EAAE,GAAK,IAAKA,EAAE,GAAK,IAAKA,EAAE,IACxEu0B,EAAM/yB,eAAey8B,GAAUG,EAAK7J,EAAM0J,IAC/B,gBAAXA,EAA2B,IAAII,EAAIG,IAAKA,IAAKA,IAAK,GAAK,IAC3D,CACA,SAASJ,EAAKvlB,GACZ,OAAO,IAAIwlB,EAAIxlB,GAAK,GAAK,IAAMA,GAAK,EAAI,IAAU,IAAJA,EAAU,EAC1D,CACA,SAASylB,EAAKn1B,EAAGs1B,EAAGvxB,EAAG9E,GAErB,OADIA,GAAK,IAAGe,EAAIs1B,EAAIvxB,EAAIsxB,KACjB,IAAIH,EAAIl1B,EAAGs1B,EAAGvxB,EAAG9E,EAC1B,CACO,SAASs2B,EAAWrvB,GAEzB,OADMA,aAAaqkB,IAAQrkB,EAAI2uB,EAAM3uB,IAChCA,EAEE,IAAIgvB,GADXhvB,EAAIA,EAAEuuB,OACWz0B,EAAGkG,EAAEovB,EAAGpvB,EAAEnC,EAAGmC,EAAEzQ,SAFjB,IAAIy/B,CAGrB,CACO,SAAST,EAAIz0B,EAAGs1B,EAAGvxB,EAAGtO,GAC3B,OAA4B,IAArB/T,UAAUC,OAAe4zC,EAAWv1B,GAAK,IAAIk1B,EAAIl1B,EAAGs1B,EAAGvxB,EAAc,MAAXtO,EAAkB,EAAIA,EACzF,CACO,SAASy/B,EAAIl1B,EAAGs1B,EAAGvxB,EAAGtO,GAC3B3U,KAAKkf,GAAKA,EACVlf,KAAKw0C,GAAKA,EACVx0C,KAAKijB,GAAKA,EACVjjB,KAAK2U,SAAWA,CAClB,CA0BA,SAAS+/B,IACP,MAAO,IAAInhC,OAAOohC,EAAI30C,KAAKkf,IAAI3L,OAAOohC,EAAI30C,KAAKw0C,IAAIjhC,OAAOohC,EAAI30C,KAAKijB,GACrE,CAIA,SAAS2xB,IACP,IAAIz2B,EAAI02B,EAAO70C,KAAK2U,SACpB,MAAO,GAAGpB,OAAa,IAAN4K,EAAU,OAAS,SAAS5K,OAAOuhC,EAAO90C,KAAKkf,GAAI,MAAM3L,OAAOuhC,EAAO90C,KAAKw0C,GAAI,MAAMjhC,OAAOuhC,EAAO90C,KAAKijB,IAAI1P,OAAa,IAAN4K,EAAU,IAAM,KAAK5K,OAAO4K,EAAG,KACtK,CACA,SAAS02B,EAAOlgC,GACd,OAAOuN,MAAMvN,GAAW,EAAIsF,KAAKE,IAAI,EAAGF,KAAKC,IAAI,EAAGvF,GACtD,CACA,SAASmgC,EAAO3yC,GACd,OAAO8X,KAAKE,IAAI,EAAGF,KAAKC,IAAI,IAAKD,KAAKwoB,MAAMtgC,IAAU,GACxD,CACA,SAASwyC,EAAIxyC,GAEX,QADAA,EAAQ2yC,EAAO3yC,IACC,GAAK,IAAM,IAAMA,EAAMygB,SAAS,GAClD,CACA,SAAS0xB,EAAKjvB,EAAGvH,EAAGwH,EAAGnH,GAErB,OADIA,GAAK,EAAGkH,EAAIvH,EAAIwH,EAAIivB,IAAajvB,GAAK,GAAKA,GAAK,EAAGD,EAAIvH,EAAIy2B,IAAaz2B,GAAK,IAAGuH,EAAIkvB,KACjF,IAAIQ,EAAI1vB,EAAGvH,EAAGwH,EAAGnH,EAC1B,CACO,SAAS62B,EAAW5vB,GACzB,GAAIA,aAAa2vB,EAAK,OAAO,IAAIA,EAAI3vB,EAAEC,EAAGD,EAAEtH,EAAGsH,EAAEE,EAAGF,EAAEzQ,SAEtD,GADMyQ,aAAaqkB,IAAQrkB,EAAI2uB,EAAM3uB,KAChCA,EAAG,OAAO,IAAI2vB,EACnB,GAAI3vB,aAAa2vB,EAAK,OAAO3vB,EAE7B,IAAIlG,GADJkG,EAAIA,EAAEuuB,OACIz0B,EAAI,IACZs1B,EAAIpvB,EAAEovB,EAAI,IACVvxB,EAAImC,EAAEnC,EAAI,IACV/I,EAAMD,KAAKC,IAAIgF,EAAGs1B,EAAGvxB,GACrB9I,EAAMF,KAAKE,IAAI+E,EAAGs1B,EAAGvxB,GACrBoC,EAAIkvB,IACJz2B,EAAI3D,EAAMD,EACVoL,GAAKnL,EAAMD,GAAO,EAQpB,OAPI4D,GACauH,EAAXnG,IAAM/E,GAAUq6B,EAAIvxB,GAAKnF,EAAc,GAAT02B,EAAIvxB,GAAgBuxB,IAAMr6B,GAAU8I,EAAI/D,GAAKpB,EAAI,GAAYoB,EAAIs1B,GAAK12B,EAAI,EAC5GA,GAAKwH,EAAI,GAAMnL,EAAMD,EAAM,EAAIC,EAAMD,EACrCmL,GAAK,IAELvH,EAAIwH,EAAI,GAAKA,EAAI,EAAI,EAAID,EAEpB,IAAI0vB,EAAI1vB,EAAGvH,EAAGwH,EAAGF,EAAEzQ,QAC5B,CACO,SAASsgC,EAAI5vB,EAAGvH,EAAGwH,EAAG3Q,GAC3B,OAA4B,IAArB/T,UAAUC,OAAem0C,EAAW3vB,GAAK,IAAI0vB,EAAI1vB,EAAGvH,EAAGwH,EAAc,MAAX3Q,EAAkB,EAAIA,EACzF,CACA,SAASogC,EAAI1vB,EAAGvH,EAAGwH,EAAG3Q,GACpB3U,KAAKqlB,GAAKA,EACVrlB,KAAK8d,GAAKA,EACV9d,KAAKslB,GAAKA,EACVtlB,KAAK2U,SAAWA,CAClB,CA6BA,SAASugC,EAAO/yC,GAEd,OADAA,GAASA,GAAS,GAAK,KACR,EAAIA,EAAQ,IAAMA,CACnC,CACA,SAASgzC,EAAOhzC,GACd,OAAO8X,KAAKE,IAAI,EAAGF,KAAKC,IAAI,EAAG/X,GAAS,GAC1C,CAGA,SAASizC,EAAQ/vB,EAAG2D,EAAIC,GACtB,OAA4G,KAApG5D,EAAI,GAAK2D,GAAMC,EAAKD,GAAM3D,EAAI,GAAKA,EAAI,IAAM4D,EAAK5D,EAAI,IAAM2D,GAAMC,EAAKD,IAAO,IAAM3D,GAAK,GAAK2D,EACxG,EA1LA,OAAOygB,EAAOsK,EAAO,CACnB/L,KAAM,SAAcqN,GAClB,OAAO79B,OAAO89B,OAAO,IAAIt1C,KAAK8E,YAAe9E,KAAMq1C,EACrD,EACAE,YAAa,WACX,OAAOv1C,KAAK2zC,MAAM4B,aACpB,EACAZ,IAAKjB,EAELE,UAAWF,EACX8B,WAQF,WACE,OAAOx1C,KAAK2zC,MAAM6B,YACpB,EATEC,UAUF,WACE,OAAOT,EAAWh1C,MAAMy1C,WAC1B,EAXE3B,UAAWD,EACXjxB,SAAUixB,KAqDZ,OAAOO,EAAKT,GAAK,OAAOlK,EAAO,CAC7BiM,SAAU,SAAkBhvC,GAE1B,OADAA,EAAS,MAALA,EAAYijC,EAAY1vB,KAAK0B,IAAIguB,EAAWjjC,GACzC,IAAI0tC,EAAIp0C,KAAKkf,EAAIxY,EAAG1G,KAAKw0C,EAAI9tC,EAAG1G,KAAKijB,EAAIvc,EAAG1G,KAAK2U,QAC1D,EACAghC,OAAQ,SAAgBjvC,GAEtB,OADAA,EAAS,MAALA,EAAYgjC,EAAUzvB,KAAK0B,IAAI+tB,EAAShjC,GACrC,IAAI0tC,EAAIp0C,KAAKkf,EAAIxY,EAAG1G,KAAKw0C,EAAI9tC,EAAG1G,KAAKijB,EAAIvc,EAAG1G,KAAK2U,QAC1D,EACAg/B,IAAK,WACH,OAAO3zC,IACT,EACA41C,MAAO,WACL,OAAO,IAAIxB,EAAIU,EAAO90C,KAAKkf,GAAI41B,EAAO90C,KAAKw0C,GAAIM,EAAO90C,KAAKijB,GAAI4xB,EAAO70C,KAAK2U,SAC7E,EACA4gC,YAAa,WACX,OAAQ,IAAOv1C,KAAKkf,GAAKlf,KAAKkf,EAAI,QAAU,IAAOlf,KAAKw0C,GAAKx0C,KAAKw0C,EAAI,QAAU,IAAOx0C,KAAKijB,GAAKjjB,KAAKijB,EAAI,OAAS,GAAKjjB,KAAK2U,SAAW3U,KAAK2U,SAAW,CAC1J,EACAggC,IAAKD,EAELd,UAAWc,EACXc,WAOF,WACE,MAAO,IAAIjiC,OAAOohC,EAAI30C,KAAKkf,IAAI3L,OAAOohC,EAAI30C,KAAKw0C,IAAIjhC,OAAOohC,EAAI30C,KAAKijB,IAAI1P,OAAOohC,EAA+C,KAA1CzyB,MAAMliB,KAAK2U,SAAW,EAAI3U,KAAK2U,UACpH,EAREm/B,UAAWc,EACXhyB,SAAUgyB,MA0DZ,OAAOG,EAAKE,GAAK,OAAOxL,EAAO,CAC7BiM,SAAU,SAAkBhvC,GAE1B,OADAA,EAAS,MAALA,EAAYijC,EAAY1vB,KAAK0B,IAAIguB,EAAWjjC,GACzC,IAAIquC,EAAI/0C,KAAKqlB,EAAGrlB,KAAK8d,EAAG9d,KAAKslB,EAAI5e,EAAG1G,KAAK2U,QAClD,EACAghC,OAAQ,SAAgBjvC,GAEtB,OADAA,EAAS,MAALA,EAAYgjC,EAAUzvB,KAAK0B,IAAI+tB,EAAShjC,GACrC,IAAIquC,EAAI/0C,KAAKqlB,EAAGrlB,KAAK8d,EAAG9d,KAAKslB,EAAI5e,EAAG1G,KAAK2U,QAClD,EACAg/B,IAAK,WACH,IAAItuB,EAAIrlB,KAAKqlB,EAAI,IAAqB,KAAdrlB,KAAKqlB,EAAI,GAC/BvH,EAAIoE,MAAMmD,IAAMnD,MAAMliB,KAAK8d,GAAK,EAAI9d,KAAK8d,EACzCwH,EAAItlB,KAAKslB,EACT2D,EAAK3D,GAAKA,EAAI,GAAMA,EAAI,EAAIA,GAAKxH,EACjCkL,EAAK,EAAI1D,EAAI2D,EACf,OAAO,IAAImrB,EAAIgB,EAAQ/vB,GAAK,IAAMA,EAAI,IAAMA,EAAI,IAAK2D,EAAIC,GAAKmsB,EAAQ/vB,EAAG2D,EAAIC,GAAKmsB,EAAQ/vB,EAAI,IAAMA,EAAI,IAAMA,EAAI,IAAK2D,EAAIC,GAAKjpB,KAAK2U,QACvI,EACAihC,MAAO,WACL,OAAO,IAAIb,EAAIG,EAAOl1C,KAAKqlB,GAAI8vB,EAAOn1C,KAAK8d,GAAIq3B,EAAOn1C,KAAKslB,GAAIuvB,EAAO70C,KAAK2U,SAC7E,EACA4gC,YAAa,WACX,OAAQ,GAAKv1C,KAAK8d,GAAK9d,KAAK8d,GAAK,GAAKoE,MAAMliB,KAAK8d,KAAO,GAAK9d,KAAKslB,GAAKtlB,KAAKslB,GAAK,GAAK,GAAKtlB,KAAK2U,SAAW3U,KAAK2U,SAAW,CAC7H,EACA8gC,UAAW,WACT,IAAIt3B,EAAI02B,EAAO70C,KAAK2U,SACpB,MAAO,GAAGpB,OAAa,IAAN4K,EAAU,OAAS,SAAS5K,OAAO2hC,EAAOl1C,KAAKqlB,GAAI,MAAM9R,OAAwB,IAAjB4hC,EAAOn1C,KAAK8d,GAAU,OAAOvK,OAAwB,IAAjB4hC,EAAOn1C,KAAKslB,GAAU,KAAK/R,OAAa,IAAN4K,EAAU,IAAM,KAAK5K,OAAO4K,EAAG,KACxL,wCCnVa,SAAS,EAACrZ,EAAa+wC,EAAS31C,GAC7C4E,EAAY5E,UAAY21C,EAAQ31C,UAAYA,EAC5CA,EAAU4E,YAAcA,CAC1B,CACO,SAASgxC,EAAOlkC,EAAQmkC,GAC7B,IAAI71C,EAAYsX,OAAO0wB,OAAOt2B,EAAO1R,WACrC,IAAK,IAAI2gC,KAAOkV,EAAY71C,EAAU2gC,GAAOkV,EAAWlV,GACxD,OAAO3gC,CACT,4KCNe,SAAS,EAACie,EAAG8E,GAC1B,QAAQ,OAAcA,GAAK,IAAc+yB,GAAc73B,EAAG8E,EAC5D,CACO,SAAS+yB,EAAa73B,EAAG8E,GAC9B,IAIE/hB,EAJE+0C,EAAKhzB,EAAIA,EAAEpiB,OAAS,EACtBq1C,EAAK/3B,EAAIlE,KAAKC,IAAI+7B,EAAI93B,EAAEtd,QAAU,EAClCoK,EAAI,IAAIw1B,MAAMyV,GACd/wB,EAAI,IAAIsb,MAAMwV,GAEhB,IAAK/0C,EAAI,EAAGA,EAAIg1C,IAAMh1C,EAAG+J,EAAE/J,IAAK,OAAMid,EAAEjd,GAAI+hB,EAAE/hB,IAC9C,KAAOA,EAAI+0C,IAAM/0C,EAAGikB,EAAEjkB,GAAK+hB,EAAE/hB,GAC7B,OAAO,SAAU6C,GACf,IAAK7C,EAAI,EAAGA,EAAIg1C,IAAMh1C,EAAGikB,EAAEjkB,GAAK+J,EAAE/J,GAAG6C,GACrC,OAAOohB,CACT,CACF,sCCjBO,SAASgxB,EAAM7xC,EAAI2wB,EAAIZ,EAAIC,EAAI8hB,GACpC,IAAI/xC,EAAKC,EAAKA,EACZqqB,EAAKtqB,EAAKC,EACZ,QAAS,EAAI,EAAIA,EAAK,EAAID,EAAKsqB,GAAMsG,GAAM,EAAI,EAAI5wB,EAAK,EAAIsqB,GAAM0F,GAAM,EAAI,EAAI/vB,EAAK,EAAID,EAAK,EAAIsqB,GAAM2F,EAAK3F,EAAKynB,GAAM,CAC1H,CACe,SAAS,EAAC5V,GACvB,IAAI5R,EAAI4R,EAAO3/B,OAAS,EACxB,OAAO,SAAUkD,GACf,IAAI7C,EAAI6C,GAAK,EAAIA,EAAI,EAAIA,GAAK,GAAKA,EAAI,EAAG6qB,EAAI,GAAK3U,KAAKwX,MAAM1tB,EAAI6qB,GAChEyF,EAAKmM,EAAOt/B,GACZozB,EAAKkM,EAAOt/B,EAAI,GAChB+zB,EAAK/zB,EAAI,EAAIs/B,EAAOt/B,EAAI,GAAK,EAAImzB,EAAKC,EACtC8hB,EAAKl1C,EAAI0tB,EAAI,EAAI4R,EAAOt/B,EAAI,GAAK,EAAIozB,EAAKD,EAC5C,OAAO8hB,GAAOpyC,EAAI7C,EAAI0tB,GAAKA,EAAGqG,EAAIZ,EAAIC,EAAI8hB,EAC5C,CACF,2ICde,SAAS,EAAC5V,GACvB,IAAI5R,EAAI4R,EAAO3/B,OACf,OAAO,SAAUkD,GACf,IAAI7C,EAAI+Y,KAAKwX,QAAQ1tB,GAAK,GAAK,IAAMA,EAAIA,GAAK6qB,GAC5CqG,EAAKuL,GAAQt/B,EAAI0tB,EAAI,GAAKA,GAC1ByF,EAAKmM,EAAOt/B,EAAI0tB,GAChB0F,EAAKkM,GAAQt/B,EAAI,GAAK0tB,GACtBwnB,EAAK5V,GAAQt/B,EAAI,GAAK0tB,GACxB,OAAO,QAAO7qB,EAAI7C,EAAI0tB,GAAKA,EAAGqG,EAAIZ,EAAIC,EAAI8hB,EAC5C,CACF,qICVA,SAASl7B,EAAOiD,EAAG4H,GACjB,OAAO,SAAUhiB,GACf,OAAOoa,EAAIpa,EAAIgiB,CACjB,CACF,CAMO,SAASswB,EAAIl4B,EAAG8E,GACrB,IAAI8C,EAAI9C,EAAI9E,EACZ,OAAO4H,EAAI7K,EAAOiD,EAAG4H,EAAI,KAAOA,GAAK,IAAMA,EAAI,IAAM9L,KAAKwoB,MAAM1c,EAAI,KAAOA,IAAK,OAAS7D,MAAM/D,GAAK8E,EAAI9E,EAC1G,CACO,SAASm4B,EAAMprC,GACpB,OAAoB,IAAZA,GAAKA,GAAWqrC,EAAU,SAAUp4B,EAAG8E,GAC7C,OAAOA,EAAI9E,EAXf,SAAqBA,EAAG8E,EAAG/X,GACzB,OAAOiT,EAAIlE,KAAK0B,IAAIwC,EAAGjT,GAAI+X,EAAIhJ,KAAK0B,IAAIsH,EAAG/X,GAAKiT,EAAGjT,EAAI,EAAIA,EAAG,SAAUnH,GACtE,OAAOkW,KAAK0B,IAAIwC,EAAIpa,EAAIkf,EAAG/X,EAC7B,CACF,CAOmBsrC,CAAYr4B,EAAG8E,EAAG/X,IAAK,OAASgX,MAAM/D,GAAK8E,EAAI9E,EAChE,CACF,CACe,SAASo4B,EAAQp4B,EAAG8E,GACjC,IAAI8C,EAAI9C,EAAI9E,EACZ,OAAO4H,EAAI7K,EAAOiD,EAAG4H,IAAK,OAAS7D,MAAM/D,GAAK8E,EAAI9E,EACpD,oCCvBA,aAA0BlT,GACxB,OAAO,WACL,OAAOA,CACT,CACD,sCCJc,SAAS,EAACkT,EAAG8E,GAC1B,IAAI8C,EAAI,IAAI/iB,KACZ,OAAOmb,GAAKA,EAAG8E,GAAKA,EAAG,SAAUlf,GAC/B,OAAOgiB,EAAE0wB,QAAQt4B,GAAK,EAAIpa,GAAKkf,EAAIlf,GAAIgiB,CACzC,CACF,qECLe,SAAS,EAAC5H,EAAG8E,GAC1B,OAAO9E,GAAKA,EAAG8E,GAAKA,EAAG,SAAUlf,GAC/B,OAAOoa,GAAK,EAAIpa,GAAKkf,EAAIlf,CAC3B,CACF,oECJe,SAAS,EAACoa,EAAG8E,GACrBA,IAAGA,EAAI,IACZ,IAEE/hB,EAFE0tB,EAAIzQ,EAAIlE,KAAKC,IAAI+I,EAAEpiB,OAAQsd,EAAEtd,QAAU,EACzCskB,EAAIlC,EAAE+D,QAER,OAAO,SAAUjjB,GACf,IAAK7C,EAAI,EAAGA,EAAI0tB,IAAK1tB,EAAGikB,EAAEjkB,GAAKid,EAAEjd,IAAM,EAAI6C,GAAKkf,EAAE/hB,GAAK6C,EACvD,OAAOohB,CACT,CACF,CACO,SAASuxB,EAAczrC,GAC5B,OAAO0rC,YAAYC,OAAO3rC,MAAQA,aAAa4rC,SACjD,2ICXe,SAAS,EAAC14B,EAAG8E,GAC1B,IAEEvc,EAFExF,EAAI,CAAC,EACPikB,EAAI,CAAC,EAIP,IAAKze,KAFK,OAANyX,GAA2B,iBAANA,IAAgBA,EAAI,CAAC,GACpC,OAAN8E,GAA2B,iBAANA,IAAgBA,EAAI,CAAC,GACpCA,EACJvc,KAAKyX,EACPjd,EAAEwF,IAAK,OAAMyX,EAAEzX,GAAIuc,EAAEvc,IAErBye,EAAEze,GAAKuc,EAAEvc,GAGb,OAAO,SAAU3C,GACf,IAAK2C,KAAKxF,EAAGikB,EAAEze,GAAKxF,EAAEwF,GAAG3C,GACzB,OAAOohB,CACT,CACF,8ICIA,SAAS2xB,EAAUC,GACjB,OAAO,SAAUC,GACf,IAIE91C,EACA6yC,EALEnlB,EAAIooB,EAAOn2C,OACbqe,EAAI,IAAIuhB,MAAM7R,GACd4lB,EAAI,IAAI/T,MAAM7R,GACd3L,EAAI,IAAIwd,MAAM7R,GAGhB,IAAK1tB,EAAI,EAAGA,EAAI0tB,IAAK1tB,EACnB6yC,GAAQ,QAASiD,EAAO91C,IACxBge,EAAEhe,GAAK6yC,EAAM70B,GAAK,EAClBs1B,EAAEtzC,GAAK6yC,EAAMS,GAAK,EAClBvxB,EAAE/hB,GAAK6yC,EAAM9wB,GAAK,EAMpB,OAJA/D,EAAI63B,EAAO73B,GACXs1B,EAAIuC,EAAOvC,GACXvxB,EAAI8zB,EAAO9zB,GACX8wB,EAAMp/B,QAAU,EACT,SAAU5Q,GAIf,OAHAgwC,EAAM70B,EAAIA,EAAEnb,GACZgwC,EAAMS,EAAIA,EAAEzwC,GACZgwC,EAAM9wB,EAAIA,EAAElf,GACLgwC,EAAQ,EACjB,CACF,CACF,CA3CA,KAAe,SAAUkD,EAAS/rC,GAChC,IAAI6oC,GAAQ,QAAM7oC,GAClB,SAASyoC,EAAIjtB,EAAOmI,GAClB,IAAI3P,EAAI60B,GAAOrtB,GAAQ,QAASA,IAAQxH,GAAI2P,GAAM,QAASA,IAAM3P,GAC/Ds1B,EAAIT,EAAMrtB,EAAM8tB,EAAG3lB,EAAI2lB,GACvBvxB,EAAI8wB,EAAMrtB,EAAMzD,EAAG4L,EAAI5L,GACvBtO,GAAU,QAAQ+R,EAAM/R,QAASka,EAAIla,SACvC,OAAO,SAAU5Q,GAKf,OAJA2iB,EAAMxH,EAAIA,EAAEnb,GACZ2iB,EAAM8tB,EAAIA,EAAEzwC,GACZ2iB,EAAMzD,EAAIA,EAAElf,GACZ2iB,EAAM/R,QAAUA,EAAQ5Q,GACjB2iB,EAAQ,EACjB,CACF,CAEA,OADAitB,EAAI2C,MAAQW,EACLtD,CACR,CAjBD,CAiBG,GA2BI,IAAIuD,EAAWJ,EAAU,KACrBK,EAAiBL,EAAU,wFChDlCM,EAAM,8CACRC,EAAM,IAAIvyB,OAAOsyB,EAAI/lB,OAAQ,KAWhB,SAAS,EAAClT,EAAG8E,GAC1B,IAEEq0B,EAEAC,EAEAC,EANEC,EAAKL,EAAIxP,UAAYyP,EAAIzP,UAAY,EAQvC1mC,GAAK,EAEL4c,EAAI,GAEJyH,EAAI,GAMN,IAHApH,GAAQ,GAAI8E,GAAQ,IAGZq0B,EAAKF,EAAInD,KAAK91B,MAAQo5B,EAAKF,EAAIpD,KAAKhxB,MACrCu0B,EAAKD,EAAGvvC,OAASyvC,IAEpBD,EAAKv0B,EAAE+D,MAAMywB,EAAID,GACb15B,EAAE5c,GAAI4c,EAAE5c,IAAMs2C,EACb15B,IAAI5c,GAAKs2C,IAEXF,EAAKA,EAAG,OAASC,EAAKA,EAAG,IAExBz5B,EAAE5c,GAAI4c,EAAE5c,IAAMq2C,EACbz5B,IAAI5c,GAAKq2C,GAGdz5B,IAAI5c,GAAK,KACTqkB,EAAEhlB,KAAK,CACLW,EAAGA,EACH+J,GAAG,OAAOqsC,EAAIC,MAGlBE,EAAKJ,EAAIzP,UAYX,OARI6P,EAAKx0B,EAAEpiB,SACT22C,EAAKv0B,EAAE+D,MAAMywB,GACT35B,EAAE5c,GAAI4c,EAAE5c,IAAMs2C,EACb15B,IAAI5c,GAAKs2C,GAKT15B,EAAEjd,OAAS,EAAI0kB,EAAE,GAvD1B,SAAatC,GACX,OAAO,SAAUlf,GACf,OAAOkf,EAAElf,GAAK,EAChB,CACF,CAmD+B2zC,CAAInyB,EAAE,GAAGta,GA5DxC,SAAcgY,GACZ,OAAO,WACL,OAAOA,CACT,CACF,CAwD6C00B,CAAK10B,IAAMA,EAAIsC,EAAE1kB,OAAQ,SAAUkD,GAC5E,IAAK,IAAWqhB,EAAPlkB,EAAI,EAAMA,EAAI+hB,IAAK/hB,EAAG4c,GAAGsH,EAAIG,EAAErkB,IAAIA,GAAKkkB,EAAEna,EAAElH,GACrD,OAAO+Z,EAAEuL,KAAK,GAChB,EACF,4KC1De,SAAS,EAAClL,EAAG8E,GAC1B,IACEkC,EADEphB,SAAWkf,EAEf,OAAY,MAALA,GAAmB,YAANlf,GAAkB,OAASkf,IAAY,WAANlf,EAAiB,IAAe,WAANA,GAAkBohB,GAAI,QAAMlC,KAAOA,EAAIkC,EAAG,MAAO,IAASlC,aAAa,KAAQ,KAAMA,aAAajgB,KAAO,KAAO,OAAcigB,GAAK,IAAcwd,MAAMC,QAAQzd,GAAK,IAAoC,mBAAdA,EAAE20B,SAAgD,mBAAf30B,EAAEL,UAA2BV,MAAMe,GAAK,IAAS,KAAQ9E,EAAG8E,EAC1W,wBCVS,SAAUumB,GACjB,aAEA,SAASqO,EAAephC,EAAKvV,GAC3B,OAAO42C,EAAgBrhC,IAAQshC,EAAsBthC,EAAKvV,IAAM82C,GAClE,CACA,SAASF,EAAgBrhC,GACvB,GAAIgqB,MAAMC,QAAQjqB,GAAM,OAAOA,CACjC,CACA,SAASshC,EAAsBthC,EAAKvV,GAClC,IAAI+2C,EAAO,GACPC,GAAK,EACL5Z,GAAK,EACLC,OAAK9H,EACT,IACE,IAAK,IAAiC0hB,EAA7Bx3C,EAAK8V,EAAI2hC,OAAOC,cAAmBH,GAAMC,EAAKx3C,EAAG40B,QAAQ+iB,QAChEL,EAAK13C,KAAK43C,EAAGh2C,QACTjB,GAAK+2C,EAAKp3C,SAAWK,GAF8Cg3C,GAAK,GAIhF,CAAE,MAAO1Q,GACPlJ,GAAK,EACLC,EAAKiJ,CACP,CAAE,QACA,IACO0Q,GAAsB,MAAhBv3C,EAAW,QAAWA,EAAW,QAC9C,CAAE,QACA,GAAI29B,EAAI,MAAMC,CAChB,CACF,CACA,OAAO0Z,CACT,CACA,SAASD,IACP,MAAM,IAAIjzC,UAAU,uDACtB,CAKA,SAAS2b,EAAOgF,EAAMza,EAAGC,EAAGqH,GAC1BmT,EAAOA,EAAKnV,QAAO,SAAUwV,EAAG7kB,GAC9B,IAAIskB,EAAIva,EAAE8a,EAAG7kB,GACX+Q,EAAI/G,EAAE6a,EAAG7kB,GACX,OAAY,MAALskB,GAAa8a,SAAS9a,IAAW,MAALvT,GAAaquB,SAASruB,EAC3D,IACIM,GACFmT,EAAKnT,MAAK,SAAU4L,EAAG8E,GACrB,OAAOhY,EAAEkT,GAAKlT,EAAEgY,EAClB,IAWF,IATA,IAMEs1B,EACAC,EACAzyB,EARE6I,EAAIlJ,EAAK7kB,OACX+oB,EAAI,IAAI6uB,aAAa7pB,GACrB/E,EAAI,IAAI4uB,aAAa7pB,GAEnB8pB,EAAK,EACPC,EAAK,EAIEz3C,EAAI,EAAGA,EAAI0tB,GAClB7I,EAAIL,EAAKxkB,GACT0oB,EAAE1oB,GAAKq3C,GAAMttC,EAAE8a,EAAG7kB,EAAGwkB,GACrBmE,EAAE3oB,GAAKs3C,GAAMttC,EAAE6a,EAAG7kB,EAAGwkB,GAErBgzB,IAAOH,EAAKG,KADVx3C,EAEFy3C,IAAOH,EAAKG,GAAMz3C,EAGpB,IAAK,IAAIP,EAAK,EAAGA,EAAKiuB,IAAKjuB,EACzBipB,EAAEjpB,IAAO+3C,EACT7uB,EAAElpB,IAAOg4C,EAEX,MAAO,CAAC/uB,EAAGC,EAAG6uB,EAAIC,EACpB,CACA,SAASC,EAAYlzB,EAAMza,EAAGC,EAAG2tC,GAE/B,IADA,IAAIC,EAAa,EACR53C,EAAI,EAAG0tB,EAAIlJ,EAAK7kB,OAAQK,EAAI0tB,EAAG1tB,IAAK,CAC3C,IAAI6kB,EAAIL,EAAKxkB,GACX0L,GAAM3B,EAAE8a,EAAG7kB,EAAGwkB,GACd7Y,GAAM3B,EAAE6a,EAAG7kB,EAAGwkB,GACN,MAAN9Y,GAAc0zB,SAAS1zB,IAAa,MAANC,GAAcyzB,SAASzzB,IACvDgsC,EAAGjsC,EAAIC,EAAIisC,IAEf,CACF,CAIA,SAASC,EAAcrzB,EAAMza,EAAGC,EAAG8tC,EAAIC,GACrC,IAAIC,EAAM,EACRC,EAAM,EAOR,OANAP,EAAYlzB,EAAMza,EAAGC,GAAG,SAAU0B,EAAIC,GACpC,IAAIusC,EAAMvsC,EAAKosC,EAAQrsC,GACrBysC,EAAMxsC,EAAKmsC,EACbE,GAAOE,EAAMA,EACbD,GAAOE,EAAMA,CACf,IACO,EAAIH,EAAMC,CACnB,CAGA,SAASzxB,EAAMwO,GACb,OAAsE,IAA/Djc,KAAKqG,MAAM4V,EAAK,GAAG,GAAKA,EAAK,GAAG,GAAIA,EAAK,GAAG,GAAKA,EAAK,GAAG,IAAYjc,KAAK+B,EACnF,CAEA,SAASs9B,EAASpjB,GAChB,MAAO,EAAEA,EAAK,GAAG,GAAKA,EAAK,GAAG,IAAM,GAAIA,EAAK,GAAG,GAAKA,EAAK,GAAG,IAAM,EACrE,CAIA,SAASqjB,EAAUC,EAAMC,EAAMR,GAM7B,IALA,IAAI3zB,EAAIrL,KAAKy/B,IAAID,EAAOD,GAAQv/B,KAAK0/B,OAAS,EAAI,EAC9C/W,EAAY,EAAI3oB,KAAK0B,IAAI,IAAK2J,EAAI,EAAI,GACxCs0B,EAAU,IACRl5B,EAAS,CAAC0M,EAAGosB,GAAOpsB,EAAGqsB,IACzBI,EAAO,EACFrmC,EAAKkN,IAAWm5B,EAAOD,IAC9B,OAAOl5B,EACP,SAAS0M,EAAGniB,GACV,MAAO,CAACA,EAAGguC,EAAQhuC,GACrB,CACA,SAASuI,EAAKkN,GACZm5B,IAGA,IAFA,IAAIjrB,EAAIlO,EAAO7f,OACXi5C,GAAQ,EACH54C,EAAI,EAAGA,EAAI0tB,EAAI,EAAG1tB,IAAK,CAC9B,IAAIw0B,EAAKhV,EAAOxf,GAEd6U,EAAIujC,EAAS,CAAC5jB,EADThV,EAAOxf,EAAI,KAEhB64C,EAAK3sB,EAAGrX,EAAE,IACVikC,EAAKtyB,EAAM,CAACgO,EAAI3f,IAChBgV,EAAKrD,EAAM,CAACgO,EAAIqkB,IACZ9/B,KAAKoG,IAAI25B,EAAKjvB,GACZ6X,IACNliB,EAAOtf,OAAOF,EAAI,EAAG,EAAG64C,GACxBD,GAAQ,EAEZ,CACA,OAAOA,CACT,CACF,CAKA,SAASG,EAAIC,EAAIlB,EAAImB,EAAKC,GACxB,IAAIC,EAAQD,EAAMF,EAAKA,EACrBI,EAAQrgC,KAAKoG,IAAIg6B,GAAS,MAAQ,GAAKF,EAAMD,EAAKlB,GAAMqB,EAE1D,MAAO,CADOrB,EAAKsB,EAAQJ,EACRI,EACrB,CACA,SAAS9D,IACP,IAME+D,EANEtvC,EAAI,SAAW8a,GACf,OAAOA,EAAE,EACX,EACA7a,EAAI,SAAW6a,GACb,OAAOA,EAAE,EACX,EAEF,SAASywB,EAAY9wB,GACnB,IAAIkJ,EAAI,EACN/E,EAAI,EACJ2wB,EAAK,EACLC,EAAK,EACLC,EAAM,EACNC,EAAM,EACNnB,EAAOe,GAAUA,EAAO,GAAKh2C,IAC7Bk1C,EAAOc,GAAUA,EAAO,IAAK,IAC/B3B,EAAYlzB,EAAMza,EAAGC,GAAG,SAAU0B,EAAIC,GACpC,IAAI+tC,EAAK3gC,KAAKy/B,IAAI7sC,GAChBib,EAAKlb,EAAKC,IACV+hB,EACF/E,IAAMhd,EAAKgd,GAAK+E,EAChB6rB,IAAO3yB,EAAK2yB,GAAM7rB,EAClB+rB,IAAQ/tC,EAAKkb,EAAK6yB,GAAO/rB,EACzB4rB,IAAO3tC,EAAK+tC,EAAKJ,GAAM5rB,EACvB8rB,IAAQ5yB,EAAK8yB,EAAKF,GAAO9rB,EACpB2rB,IACC3tC,EAAK4sC,IAAMA,EAAO5sC,GAClBA,EAAK6sC,IAAMA,EAAO7sC,GAE1B,IACA,IACEiuC,EAAQhD,EADCoC,EAAIQ,EAAK5wB,EAAG2wB,EAAK3wB,EAAG6wB,EAAM7wB,EAAG8wB,EAAM9wB,GACf,GAC7B1L,EAAI08B,EAAM,GACV53B,EAAI43B,EAAM,GACZ18B,EAAIlE,KAAK6gC,IAAI38B,GACb,IAAI9K,EAAK,SAAYpI,GACjB,OAAOkT,EAAIlE,KAAK6gC,IAAI73B,EAAIhY,EAC1B,EACAiY,EAAMq2B,EAAUC,EAAMC,EAAMpmC,GAK9B,OAJA6P,EAAI/E,EAAIA,EACR+E,EAAID,EAAIA,EACRC,EAAI+1B,QAAU5lC,EACd6P,EAAI63B,SAAWhC,EAAcrzB,EAAMza,EAAGC,EAAG2e,EAAGxW,GACrC6P,CACT,CAUA,OATAszB,EAAY+D,OAAS,SAAU9jC,GAC7B,OAAO7V,UAAUC,QAAU05C,EAAS9jC,EAAK+/B,GAAe+D,CAC1D,EACA/D,EAAYvrC,EAAI,SAAUoI,GACxB,OAAOzS,UAAUC,QAAUoK,EAAIoI,EAAImjC,GAAevrC,CACpD,EACAurC,EAAYtrC,EAAI,SAAUmI,GACxB,OAAOzS,UAAUC,QAAUqK,EAAImI,EAAImjC,GAAetrC,CACpD,EACOsrC,CACT,CACA,SAASt7B,IACP,IAMEq/B,EANEtvC,EAAI,SAAW8a,GACf,OAAOA,EAAE,EACX,EACA7a,EAAI,SAAW6a,GACb,OAAOA,EAAE,EACX,EAEF,SAAS7K,EAAOwK,GACd,IAAIkJ,EAAI,EACNhF,EAAI,EAEJC,EAAI,EAEJ4wB,EAAK,EAELO,EAAK,EAELxB,EAAOe,GAAUA,EAAO,GAAKh2C,IAC7Bk1C,EAAOc,GAAUA,EAAO,IAAK,IAC/B3B,EAAYlzB,EAAMza,EAAGC,GAAG,SAAU0B,EAAIC,KAClC+hB,EACFhF,IAAMhd,EAAKgd,GAAKgF,EAChB/E,IAAMhd,EAAKgd,GAAK+E,EAChB6rB,IAAO7tC,EAAKC,EAAK4tC,GAAM7rB,EACvBosB,IAAOpuC,EAAKA,EAAKouC,GAAMpsB,EAClB2rB,IACC3tC,EAAK4sC,IAAMA,EAAO5sC,GAClBA,EAAK6sC,IAAMA,EAAO7sC,GAE1B,IACA,IACEiuC,EAAQhD,EADCoC,EAAIrwB,EAAGC,EAAG4wB,EAAIO,GACM,GAC7BC,EAAYJ,EAAM,GAClBP,EAAQO,EAAM,GACdxnC,EAAK,SAAYpI,GACf,OAAOqvC,EAAQrvC,EAAIgwC,CACrB,EACA/3B,EAAM,CAAC,CAACs2B,EAAMnmC,EAAGmmC,IAAQ,CAACC,EAAMpmC,EAAGomC,KAKrC,OAJAv2B,EAAI/E,EAAIm8B,EACRp3B,EAAID,EAAIg4B,EACR/3B,EAAI+1B,QAAU5lC,EACd6P,EAAI63B,SAAWhC,EAAcrzB,EAAMza,EAAGC,EAAG2e,EAAGxW,GACrC6P,CACT,CAUA,OATAhI,EAAOq/B,OAAS,SAAU9jC,GACxB,OAAO7V,UAAUC,QAAU05C,EAAS9jC,EAAKyE,GAAUq/B,CACrD,EACAr/B,EAAOjQ,EAAI,SAAUoI,GACnB,OAAOzS,UAAUC,QAAUoK,EAAIoI,EAAI6H,GAAUjQ,CAC/C,EACAiQ,EAAOhQ,EAAI,SAAUmI,GACnB,OAAOzS,UAAUC,QAAUqK,EAAImI,EAAI6H,GAAUhQ,CAC/C,EACOgQ,CACT,CAGA,SAASggC,EAAOzkC,GACdA,EAAIlE,MAAK,SAAU4L,EAAG8E,GACpB,OAAO9E,EAAI8E,CACb,IACA,IAAI/hB,EAAIuV,EAAI5V,OAAS,EACrB,OAAOK,EAAI,GAAM,GAAKuV,EAAIvV,EAAI,GAAKuV,EAAIvV,IAAM,EAAIuV,EAAIwD,KAAKwX,MAAMvwB,GAClE,CACA,IAAIi6C,EAAW,EACbC,EAAU,MACZ,SAASC,IACP,IAAIpwC,EAAI,SAAW8a,GACf,OAAOA,EAAE,EACX,EACA7a,EAAI,SAAW6a,GACb,OAAOA,EAAE,EACX,EACAu1B,EAAY,GACd,SAASD,EAAM31B,GAYb,IAXA,IACE61B,EAAW1D,EADCn3B,EAAOgF,EAAMza,EAAGC,GAAG,GACI,GACnCqtC,EAAKgD,EAAS,GACd/C,EAAK+C,EAAS,GACd7C,EAAK6C,EAAS,GACd5C,EAAK4C,EAAS,GACd3sB,EAAI2pB,EAAG13C,OACP26C,EAAKvhC,KAAKE,IAAI,KAAMmhC,EAAY1sB,IAChC6sB,EAAO,IAAIhD,aAAa7pB,GACxB8sB,EAAY,IAAIjD,aAAa7pB,GAC7B+sB,EAAgB,IAAIlD,aAAa7pB,GAAGgtB,KAAK,GAClC/B,GAAQ,IAAKA,GAAQsB,GAAW,CAEvC,IADA,IAAI34C,EAAW,CAAC,EAAGg5C,EAAK,GACft6C,EAAI,EAAGA,EAAI0tB,IAAK1tB,EAAG,CAY1B,IAXA,IAAI0L,EAAK2rC,EAAGr3C,GACV26C,EAAKr5C,EAAS,GACds5C,EAAKt5C,EAAS,GACdu5C,EAAOnvC,EAAK2rC,EAAGsD,GAAMtD,EAAGuD,GAAMlvC,EAAKivC,EAAKC,EACtCE,EAAI,EACNpyB,EAAI,EACJC,EAAI,EACJ4wB,EAAK,EACLO,EAAK,EACLiB,EAAQ,EAAIhiC,KAAKoG,IAAIk4B,EAAGwD,GAAQnvC,GAAM,GAE/BlG,EAAIm1C,EAAIn1C,GAAKo1C,IAAMp1C,EAAG,CAC7B,IAAIw1C,EAAK3D,EAAG7xC,GACVy1C,EAAK3D,EAAG9xC,GACRgnB,EAAI0uB,EAAQniC,KAAKoG,IAAIzT,EAAKsvC,GAAMD,GAASN,EAAcj1C,GACvD21C,EAAMH,EAAKxuB,EACbsuB,GAAKtuB,EACL9D,GAAKyyB,EACLxyB,GAAKsyB,EAAKzuB,EACV+sB,GAAM0B,EAAKE,EACXrB,GAAMkB,EAAKG,CACb,CAEA,IACExB,EAAQhD,EADCoC,EAAIrwB,EAAIoyB,EAAGnyB,EAAImyB,EAAGvB,EAAKuB,EAAGhB,EAAKgB,GACX,GAC7B79B,EAAI08B,EAAM,GACV53B,EAAI43B,EAAM,GACZY,EAAKv6C,GAAKid,EAAI8E,EAAIrW,EAClB8uC,EAAUx6C,GAAK+Y,KAAKoG,IAAIm4B,EAAGt3C,GAAKu6C,EAAKv6C,IACrCo7C,EAAe/D,EAAIr3C,EAAI,EAAGsB,EAC5B,CACA,GAAIq3C,IAASsB,EACX,MAEF,IAAIoB,EAAiBrB,EAAOQ,GAC5B,GAAIzhC,KAAKoG,IAAIk8B,GAAkBnB,EAAS,MACxC,IAAK,IAAYoB,EAAKC,EAAb97C,EAAK,EAAYA,EAAKiuB,IAAKjuB,EAClC67C,EAAMd,EAAU/6C,IAAO,EAAI47C,GAG3BZ,EAAch7C,GAAM67C,GAAO,EAAIpB,GAAWqB,EAAK,EAAID,EAAMA,GAAOC,CAEpE,CACA,OAAOC,EAAOnE,EAAIkD,EAAM/C,EAAIC,EAC9B,CAUA,OATA0C,EAAMC,UAAY,SAAUE,GAC1B,OAAO56C,UAAUC,QAAUy6C,EAAYE,EAAIH,GAASC,CACtD,EACAD,EAAMpwC,EAAI,SAAUoI,GAClB,OAAOzS,UAAUC,QAAUoK,EAAIoI,EAAIgoC,GAASpwC,CAC9C,EACAowC,EAAMnwC,EAAI,SAAUmI,GAClB,OAAOzS,UAAUC,QAAUqK,EAAImI,EAAIgoC,GAASnwC,CAC9C,EACOmwC,CACT,CAEA,SAASe,EAAQnxC,GACf,OAAQA,EAAI,EAAIA,EAAIA,EAAIA,GAAKA,EAAIA,CACnC,CAEA,SAASqxC,EAAe/D,EAAIr3C,EAAGsB,GAC7B,IAAI6C,EAAMkzC,EAAGr3C,GACX8N,EAAOxM,EAAS,GAChBmQ,EAAQnQ,EAAS,GAAK,EACxB,KAAImQ,GAAS4lC,EAAG13C,QAGhB,KAAOK,EAAI8N,GAAQupC,EAAG5lC,GAAStN,GAAOA,EAAMkzC,EAAGvpC,IAC7CxM,EAAS,KAAOwM,EAChBxM,EAAS,GAAKmQ,IACZA,CAEN,CAGA,SAAS+pC,EAAOnE,EAAIkD,EAAM/C,EAAIC,GAO5B,IANA,IAKE1mC,EALE2c,EAAI2pB,EAAG13C,OACTqiB,EAAM,GACJhiB,EAAI,EACNy7C,EAAM,EACNrnB,EAAO,GAEFp0B,EAAI0tB,IAAK1tB,EACd+Q,EAAIsmC,EAAGr3C,GAAKw3C,EACRpjB,EAAK,KAAOrjB,EAEdqjB,EAAK,KAAOmmB,EAAKv6C,GAAKo0B,EAAK,MAAQqnB,GAGnCA,EAAM,EACNrnB,EAAK,IAAMqjB,EACXrjB,EAAO,CAACrjB,EAAGwpC,EAAKv6C,IAChBgiB,EAAI3iB,KAAK+0B,IAIb,OADAA,EAAK,IAAMqjB,EACJz1B,CACT,CACA,SAAS05B,IACP,IAOErC,EAPEtvC,EAAI,SAAW8a,GACf,OAAOA,EAAE,EACX,EACA7a,EAAI,SAAW6a,GACb,OAAOA,EAAE,EACX,EACAyc,EAAOvoB,KAAKwlB,EAEd,SAASmd,EAAYl3B,GACnB,IAAIkJ,EAAI,EACNhF,EAAI,EACJC,EAAI,EACJ4wB,EAAK,EACLO,EAAK,EACLxB,EAAOe,GAAUA,EAAO,GAAKh2C,IAC7Bk1C,EAAOc,GAAUA,EAAO,IAAK,IAC7BsC,EAAK5iC,KAAKy/B,IAAIlX,GAChBoW,EAAYlzB,EAAMza,EAAGC,GAAG,SAAU0B,EAAIC,GACpC,IAAIiwC,EAAK7iC,KAAKy/B,IAAI9sC,GAAMiwC,IACtBjuB,EACFhF,IAAMkzB,EAAKlzB,GAAKgF,EAChB/E,IAAMhd,EAAKgd,GAAK+E,EAChB6rB,IAAOqC,EAAKjwC,EAAK4tC,GAAM7rB,EACvBosB,IAAO8B,EAAKA,EAAK9B,GAAMpsB,EAClB2rB,IACC3tC,EAAK4sC,IAAMA,EAAO5sC,GAClBA,EAAK6sC,IAAMA,EAAO7sC,GAE1B,IACA,IACEiuC,EAAQhD,EADCoC,EAAIrwB,EAAGC,EAAG4wB,EAAIO,GACM,GAC7BC,EAAYJ,EAAM,GAClBP,EAAQO,EAAM,GACdxnC,EAAK,SAAYpI,GACf,OAAOqvC,EAAQrgC,KAAKy/B,IAAIzuC,GAAK4xC,EAAK5B,CACpC,EACA/3B,EAAMq2B,EAAUC,EAAMC,EAAMpmC,GAK9B,OAJA6P,EAAI/E,EAAIm8B,EACRp3B,EAAID,EAAIg4B,EACR/3B,EAAI+1B,QAAU5lC,EACd6P,EAAI63B,SAAWhC,EAAcrzB,EAAMza,EAAGC,EAAG2e,EAAGxW,GACrC6P,CACT,CAaA,OAZA05B,EAAYrC,OAAS,SAAU9jC,GAC7B,OAAO7V,UAAUC,QAAU05C,EAAS9jC,EAAKmmC,GAAerC,CAC1D,EACAqC,EAAY3xC,EAAI,SAAUoI,GACxB,OAAOzS,UAAUC,QAAUoK,EAAIoI,EAAIupC,GAAe3xC,CACpD,EACA2xC,EAAY1xC,EAAI,SAAUmI,GACxB,OAAOzS,UAAUC,QAAUqK,EAAImI,EAAIupC,GAAe1xC,CACpD,EACA0xC,EAAYpa,KAAO,SAAU5T,GAC3B,OAAOhuB,UAAUC,QAAU2hC,EAAO5T,EAAGguB,GAAepa,CACtD,EACOoa,CACT,CACA,SAASG,IACP,IAMExC,EANEtvC,EAAI,SAAW8a,GACf,OAAOA,EAAE,EACX,EACA7a,EAAI,SAAW6a,GACb,OAAOA,EAAE,EACX,EAEF,SAASi3B,EAAUt3B,GACjB,IAYExkB,EACA0L,EACAC,EACAyV,EAdAi5B,EAAW1D,EADCn3B,EAAOgF,EAAMza,EAAGC,GACO,GACnCqtC,EAAKgD,EAAS,GACd/C,EAAK+C,EAAS,GACd7C,EAAK6C,EAAS,GACd5C,EAAK4C,EAAS,GACd3sB,EAAI2pB,EAAG13C,OACLm6C,EAAK,EACPiC,EAAK,EACLC,EAAK,EACLzC,EAAK,EACLE,EAAM,EAKR,IAAKz5C,EAAI,EAAGA,EAAI0tB,GACdhiB,EAAK2rC,EAAGr3C,GACR2L,EAAK2rC,EAAGt3C,KAER85C,KADA14B,EAAK1V,EAAKA,GACEouC,GAAM95C,EAClB+7C,IAAO36B,EAAK1V,EAAKqwC,GAAM/7C,EACvBg8C,IAAO56B,EAAKA,EAAK46B,GAAMh8C,EACvBu5C,IAAO7tC,EAAKC,EAAK4tC,GAAMv5C,EACvBy5C,IAAQr4B,EAAKzV,EAAK8tC,GAAOz5C,EAE3B,IAAI2oB,EAAI,EACNszB,EAAK,EACL3D,EAAOe,GAAUA,EAAO,GAAKh2C,IAC7Bk1C,EAAOc,GAAUA,EAAO,IAAK,IAC/B3B,EAAYlzB,EAAMza,EAAGC,GAAG,SAAU0B,EAAIC,GACpCswC,IACAtzB,IAAMhd,EAAKgd,GAAKszB,EACX5C,IACC3tC,EAAK4sC,IAAMA,EAAO5sC,GAClBA,EAAK6sC,IAAMA,EAAO7sC,GAE1B,IACA,IAAIwwC,EAAOF,EAAKlC,EAAKA,EACnBj1B,EAAIi1B,EAAKoC,EAAOH,EAAKA,EACrB9+B,GAAKw8B,EAAMK,EAAKP,EAAKwC,GAAMl3B,EAC3B9C,GAAKw3B,EAAK2C,EAAOzC,EAAMsC,GAAMl3B,EAC7BZ,GAAKhH,EAAI68B,EACT3nC,EAAK,SAAYpI,GAEf,OAAOkT,GADPlT,GAAQytC,GACOztC,EAAIgY,EAAIhY,EAAIka,EAAIwzB,CACjC,EACEz1B,EAAMq2B,EAAUC,EAAMC,EAAMpmC,GAMhC,OALA6P,EAAI/E,EAAIA,EACR+E,EAAID,EAAIA,EAAI,EAAI9E,EAAIu6B,EACpBx1B,EAAIiC,EAAIA,EAAIlC,EAAIy1B,EAAKv6B,EAAIu6B,EAAKA,EAAKC,EACnCz1B,EAAI+1B,QAAU5lC,EACd6P,EAAI63B,SAAWhC,EAAcrzB,EAAMza,EAAGC,EAAG2e,EAAGxW,GACrC6P,CACT,CAUA,OATA85B,EAAUzC,OAAS,SAAU9jC,GAC3B,OAAO7V,UAAUC,QAAU05C,EAAS9jC,EAAKumC,GAAazC,CACxD,EACAyC,EAAU/xC,EAAI,SAAUoI,GACtB,OAAOzS,UAAUC,QAAUoK,EAAIoI,EAAI2pC,GAAa/xC,CAClD,EACA+xC,EAAU9xC,EAAI,SAAUmI,GACtB,OAAOzS,UAAUC,QAAUqK,EAAImI,EAAI2pC,GAAa9xC,CAClD,EACO8xC,CACT,CAQA,SAASK,IACP,IAOE9C,EAPEtvC,EAAI,SAAW8a,GACf,OAAOA,EAAE,EACX,EACA7a,EAAI,SAAW6a,GACb,OAAOA,EAAE,EACX,EACAu3B,EAAQ,EAEV,SAASD,EAAW33B,GAElB,GAAc,IAAV43B,EAAa,CACf,IAAIl4B,EAAIlK,IAASjQ,EAAEA,GAAGC,EAAEA,GAAGqvC,OAAOA,EAA1Br/B,CAAkCwK,GAI1C,OAHAN,EAAEm4B,aAAe,CAACn4B,EAAEnC,EAAGmC,EAAEjH,UAClBiH,EAAEjH,SACFiH,EAAEnC,EACFmC,CACT,CACA,GAAc,IAAVk4B,EAAa,CACf,IAAIE,EAAKT,IAAO9xC,EAAEA,GAAGC,EAAEA,GAAGqvC,OAAOA,EAAxBwC,CAAgCr3B,GAKzC,OAJA83B,EAAGD,aAAe,CAACC,EAAGr4B,EAAGq4B,EAAGv6B,EAAGu6B,EAAGr/B,UAC3Bq/B,EAAGr/B,SACHq/B,EAAGv6B,SACHu6B,EAAGr4B,EACHq4B,CACT,CACA,IAsBIt8C,EAAGgG,EAAGoe,EAAGrT,EAAGkT,EArBdo2B,EAAW1D,EADCn3B,EAAOgF,EAAMza,EAAGC,GACO,GACnCqtC,EAAKgD,EAAS,GACd/C,EAAK+C,EAAS,GACd7C,EAAK6C,EAAS,GACd5C,EAAK4C,EAAS,GACd3sB,EAAI2pB,EAAG13C,OACP48C,EAAM,GACNC,EAAM,GACNh3C,EAAI42C,EAAQ,EACVzzB,EAAI,EACNszB,EAAK,EACL3D,EAAOe,GAAUA,EAAO,GAAKh2C,IAC7Bk1C,EAAOc,GAAUA,EAAO,IAAK,IAU/B,IATA3B,EAAYlzB,EAAMza,EAAGC,GAAG,SAAU0B,EAAIC,KAClCswC,EACFtzB,IAAMhd,EAAKgd,GAAKszB,EACX5C,IACC3tC,EAAK4sC,IAAMA,EAAO5sC,GAClBA,EAAK6sC,IAAMA,EAAO7sC,GAE1B,IAEK1L,EAAI,EAAGA,EAAIwF,IAAKxF,EAAG,CACtB,IAAKokB,EAAI,EAAGrT,EAAI,EAAGqT,EAAIsJ,IAAKtJ,EAC1BrT,GAAKgI,KAAK0B,IAAI48B,EAAGjzB,GAAIpkB,GAAKs3C,EAAGlzB,GAI/B,IAFAm4B,EAAIl9C,KAAK0R,GACTkT,EAAI,IAAIszB,aAAa/xC,GAChBQ,EAAI,EAAGA,EAAIR,IAAKQ,EAAG,CACtB,IAAKoe,EAAI,EAAGrT,EAAI,EAAGqT,EAAIsJ,IAAKtJ,EAC1BrT,GAAKgI,KAAK0B,IAAI48B,EAAGjzB,GAAIpkB,EAAIgG,GAE3Bie,EAAEje,GAAK+K,CACT,CACAyrC,EAAIn9C,KAAK4kB,EACX,CACAu4B,EAAIn9C,KAAKk9C,GACT,IAAIE,EAAOC,EAAoBF,GAC7BrqC,EAAK,SAAYpI,GACfA,GAAKytC,EACL,IAAIxtC,EAAIytC,EAAKgF,EAAK,GAAKA,EAAK,GAAK1yC,EAAI0yC,EAAK,GAAK1yC,EAAIA,EACnD,IAAK/J,EAAI,EAAGA,EAAIwF,IAAKxF,EACnBgK,GAAKyyC,EAAKz8C,GAAK+Y,KAAK0B,IAAI1Q,EAAG/J,GAE7B,OAAOgK,CACT,EACAgY,EAAMq2B,EAAUC,EAAMC,EAAMpmC,GAI9B,OAHA6P,EAAIq6B,aAAeM,EAASn3C,EAAGi3C,GAAOjF,EAAIC,GAC1Cz1B,EAAI+1B,QAAU5lC,EACd6P,EAAI63B,SAAWhC,EAAcrzB,EAAMza,EAAGC,EAAG2e,EAAGxW,GACrC6P,CACT,CAaA,OAZAm6B,EAAW9C,OAAS,SAAU9jC,GAC5B,OAAO7V,UAAUC,QAAU05C,EAAS9jC,EAAK4mC,GAAc9C,CACzD,EACA8C,EAAWpyC,EAAI,SAAUoI,GACvB,OAAOzS,UAAUC,QAAUoK,EAAIoI,EAAIgqC,GAAcpyC,CACnD,EACAoyC,EAAWnyC,EAAI,SAAUmI,GACvB,OAAOzS,UAAUC,QAAUqK,EAAImI,EAAIgqC,GAAcnyC,CACnD,EACAmyC,EAAWC,MAAQ,SAAU1uB,GAC3B,OAAOhuB,UAAUC,QAAUy8C,EAAQ1uB,EAAGyuB,GAAcC,CACtD,EACOD,CACT,CACA,SAASQ,EAASn3C,EAAGyX,EAAGlT,EAAGC,GACzB,IACIhK,EAAGgG,EAAG+K,EAAGkT,EADTM,EAAIgb,MAAM/5B,GAGd,IAAKxF,EAAI,EAAGA,EAAIwF,IAAKxF,EACnBukB,EAAEvkB,GAAK,EAGT,IAAKA,EAAIwF,EAAI,EAAGxF,GAAK,IAAKA,EAIxB,IAHA+Q,EAAIkM,EAAEjd,GACNikB,EAAI,EACJM,EAAEvkB,IAAM+Q,EACH/K,EAAI,EAAGA,GAAKhG,IAAKgG,EACpBie,IAAMjkB,EAAI,EAAIgG,GAAKA,EAEnBue,EAAEvkB,EAAIgG,IAAM+K,EAAIgI,KAAK0B,IAAI1Q,EAAG/D,GAAKie,EAKrC,OADAM,EAAE,IAAMva,EACDua,CACT,CAGA,SAASm4B,EAAoBzsC,GAC3B,IAEIjQ,EAAGgG,EAAGR,EAAGwY,EAAGnb,EAFZ6qB,EAAIzd,EAAOtQ,OAAS,EACtB88C,EAAO,GAET,IAAKz8C,EAAI,EAAGA,EAAI0tB,IAAK1tB,EAAG,CAGtB,IAFAge,EAAIhe,EAECgG,EAAIhG,EAAI,EAAGgG,EAAI0nB,IAAK1nB,EACnB+S,KAAKoG,IAAIlP,EAAOjQ,GAAGgG,IAAM+S,KAAKoG,IAAIlP,EAAOjQ,GAAGge,MAC9CA,EAAIhY,GAGR,IAAKR,EAAIxF,EAAGwF,EAAIkoB,EAAI,IAAKloB,EACvB3C,EAAIoN,EAAOzK,GAAGxF,GACdiQ,EAAOzK,GAAGxF,GAAKiQ,EAAOzK,GAAGwY,GACzB/N,EAAOzK,GAAGwY,GAAKnb,EAEjB,IAAKmD,EAAIhG,EAAI,EAAGgG,EAAI0nB,IAAK1nB,EACvB,IAAKR,EAAIkoB,EAAGloB,GAAKxF,EAAGwF,IAClByK,EAAOzK,GAAGQ,IAAMiK,EAAOzK,GAAGxF,GAAKiQ,EAAOjQ,GAAGgG,GAAKiK,EAAOjQ,GAAGA,EAG9D,CACA,IAAKgG,EAAI0nB,EAAI,EAAG1nB,GAAK,IAAKA,EAAG,CAE3B,IADAnD,EAAI,EACC2C,EAAIQ,EAAI,EAAGR,EAAIkoB,IAAKloB,EACvB3C,GAAKoN,EAAOzK,GAAGQ,GAAKy2C,EAAKj3C,GAE3Bi3C,EAAKz2C,IAAMiK,EAAOyd,GAAG1nB,GAAKnD,GAAKoN,EAAOjK,GAAGA,EAC3C,CACA,OAAOy2C,CACT,CACA,SAASG,IACP,IAMEvD,EANEtvC,EAAI,SAAW8a,GACf,OAAOA,EAAE,EACX,EACA7a,EAAI,SAAW6a,GACb,OAAOA,EAAE,EACX,EAEF,SAAS+3B,EAAMp4B,GACb,IAAIkJ,EAAI,EACNhF,EAAI,EACJC,EAAI,EACJ4wB,EAAK,EACLO,EAAK,EACL+C,EAAK,EACLvE,EAAOe,GAAUA,EAAO,GAAKh2C,IAC7Bk1C,EAAOc,GAAUA,EAAO,IAAK,IAC/B3B,EAAYlzB,EAAMza,EAAGC,GAAG,SAAU0B,EAAIC,GACpC,IAAIiwC,EAAK7iC,KAAKy/B,IAAI9sC,GAChBguC,EAAK3gC,KAAKy/B,IAAI7sC,KACd+hB,EACFhF,IAAMkzB,EAAKlzB,GAAKgF,EAChB/E,IAAM+wB,EAAK/wB,GAAK+E,EAChB6rB,IAAOqC,EAAKlC,EAAKH,GAAM7rB,EACvBosB,IAAO8B,EAAKA,EAAK9B,GAAMpsB,EACvBmvB,IAAOlxC,EAAKkxC,GAAMnvB,EACb2rB,IACC3tC,EAAK4sC,IAAMA,EAAO5sC,GAClBA,EAAK6sC,IAAMA,EAAO7sC,GAE1B,IACA,IACEiuC,EAAQhD,EADCoC,EAAIrwB,EAAGC,EAAG4wB,EAAIO,GACM,GAC7B78B,EAAI08B,EAAM,GACV53B,EAAI43B,EAAM,GACZ18B,EAAIlE,KAAK6gC,IAAI38B,GACb,IAAI9K,EAAK,SAAYpI,GACjB,OAAOkT,EAAIlE,KAAK0B,IAAI1Q,EAAGgY,EACzB,EACAC,EAAMq2B,EAAUC,EAAMC,EAAMpmC,GAK9B,OAJA6P,EAAI/E,EAAIA,EACR+E,EAAID,EAAIA,EACRC,EAAI+1B,QAAU5lC,EACd6P,EAAI63B,SAAWhC,EAAcrzB,EAAMza,EAAGC,EAAG6yC,EAAI1qC,GACtC6P,CACT,CAUA,OATA46B,EAAMvD,OAAS,SAAU9jC,GACvB,OAAO7V,UAAUC,QAAU05C,EAAS9jC,EAAKqnC,GAASvD,CACpD,EACAuD,EAAM7yC,EAAI,SAAUoI,GAClB,OAAOzS,UAAUC,QAAUoK,EAAIoI,EAAIyqC,GAAS7yC,CAC9C,EACA6yC,EAAM5yC,EAAI,SAAUmI,GAClB,OAAOzS,UAAUC,QAAUqK,EAAImI,EAAIyqC,GAAS5yC,CAC9C,EACO4yC,CACT,CACAtU,EAAQwU,cAAgBxH,EACxBhN,EAAQyU,iBAAmB/iC,EAC3BsuB,EAAQ0U,gBAAkB7C,EAC1B7R,EAAQ2U,cAAgBvB,EACxBpT,EAAQ4U,eAAiBf,EACzB7T,EAAQ6U,cAAgBP,EACxBtU,EAAQ8U,eAAiBvB,EACzBvlC,OAAOoxB,eAAeY,EAAS,aAAc,CAC3CrnC,OAAO,GAEX,CAlvBiE0zC,CAAQrM,wECFzE,IAAI+U,EAA8C,SAAUhlB,EAAID,EAAMklB,GACpE,GAAIA,GAA6B,IAArB59C,UAAUC,OAAc,IAAK,IAA4B49C,EAAxBv9C,EAAI,EAAGokB,EAAIgU,EAAKz4B,OAAYK,EAAIokB,EAAGpkB,KAC1Eu9C,GAAQv9C,KAAKo4B,IACVmlB,IAAIA,EAAKhe,MAAMvgC,UAAU8mB,MAAMplB,KAAK03B,EAAM,EAAGp4B,IAClDu9C,EAAGv9C,GAAKo4B,EAAKp4B,IAGjB,OAAOq4B,EAAGhmB,OAAOkrC,GAAMhe,MAAMvgC,UAAU8mB,MAAMplB,KAAK03B,GACpD,EACIolB,EACF,SAAqBz8C,EAAM8gB,EAAS47B,GAClC3+C,KAAKiC,KAAOA,EACZjC,KAAK+iB,QAAUA,EACf/iB,KAAK2+C,GAAKA,EACV3+C,KAAK2I,KAAO,SACd,EAIEi2C,EACF,SAAkB77B,GAChB/iB,KAAK+iB,QAAUA,EACf/iB,KAAK2I,KAAO,OACZ3I,KAAKiC,KAAO,OACZjC,KAAK2+C,GAAKE,QAAQC,QACpB,EAIEC,EACF,SAA6B98C,EAAM8gB,EAAS47B,EAAIK,GAC9Ch/C,KAAKiC,KAAOA,EACZjC,KAAK+iB,QAAUA,EACf/iB,KAAK2+C,GAAKA,EACV3+C,KAAKg/C,IAAMA,EACXh/C,KAAK2I,KAAO,YACd,EAIEs2C,EACF,WACEj/C,KAAK2I,KAAO,MACZ3I,KAAKg/C,KAAM,EACXh/C,KAAKiC,KAAO,MACZjC,KAAK+iB,QAAU,KACf/iB,KAAK2+C,GAAK,IACZ,EAIEO,EACF,WACEl/C,KAAK2I,KAAO,eACZ3I,KAAKiC,KAAO,eACZjC,KAAK+iB,QAAU,KACf/iB,KAAK2+C,GAAK,IACZ,EAMEQ,EAAqB,qFACrBC,EAAyB,EACzBC,EAAiB,CAAC,CAAC,MAAO,0BAA2B,CAAC,OAAQ,qBAAsB,CAAC,WAAY,uBAAwB,CAAC,gBAAiB,0BAA2B,CAAC,YAAa,yBAA0B,CAAC,UAAW,8BAA+B,CAAC,OAAQ,yBAA0B,CAAC,OAAQ,4BAA6B,CAAC,SAAU,6BAA8B,CAAC,gBAAiB,qBAAsB,CAAC,mBAAoB,0DAA2D,CAAC,SAAU,oDAAqD,CAAC,YAAa,iCAAkC,CAAC,QAAS,6BAA8B,CAAC,UAAW,+BAAgC,CAAC,QAAS,qBAAsB,CAAC,aAAc,mCAAoC,CAAC,QAAS,6BAA8B,CAAC,QAAS,2BAA4B,CAAC,MAAO,oDAAqD,CAAC,MAAO,iGAAkG,CAAC,WAAY,wCAAyC,CAAC,KAAM,6CAA8C,CAAC,KAAM,uCAAwC,CAAC,KAAM,gBAAiB,CAAC,OAAQ,qCAAsC,CAAC,UAAW,uBAAwB,CAAC,MAAO,0CAA2C,CAAC,SAAU,gCAAiC,CAAC,WAAY,uBAAwB,CAAC,YAAa,yBAA0B,CAAC,cAAe,mCAAoC,CAAC,cAAe,qCAAsC,CAAC,OAAQ,sBAAuB,CAAC,YAHthD,iIAIrBC,EAAuB,CAAC,CAAC,MAAO,kBAAmB,CAAC,aAAc,WAAY,CAAC,gBAAiB,mBAAoB,CAAC,iBAAkB,YAAa,CAAC,YAAa,UAAW,CAAC,eAAgB,SAAU,CAAC,aAAc,qCAAsC,CAAC,aAAc,wBAAyB,CAAC,eAAgB,mCAAoC,CAAC,aAAc,iCAAkC,CAAC,sBAAuB,oBAAqB,CAAC,gBAAiB,oBAAqB,CAAC,YAAa,oBAAqB,CAAC,YAAa,oBAAqB,CAAC,cAAe,oBAAqB,CAAC,aAAc,qBAAsB,CAAC,aAAc,cAAe,CAAC,aAAc,uDAAwD,CAAC,WAAY,WAAY,CAAC,SAAU,SAAU,CAAC,YAAa,QAAS,CAAC,QAAS,iBAAkB,CAAC,SAAU,6BAA8B,CAAC,MAAO,OAAQ,CAAC,OAAQ,QAAS,CAAC,OAAQ,UACt4B,SAASC,EAAOC,GACrB,OAAMA,EACGC,EAAeD,GAEA,oBAAb70C,UAAiD,oBAAd+0C,WAAmD,gBAAtBA,UAAUC,QAC5E,IAAIT,EAEY,oBAAdQ,UACFD,EAAeC,UAAUF,WA+DF,oBAAZX,SAA2BA,QAAQ97B,QACvC,IAAI67B,EAASC,QAAQ97B,QAAQiE,MAAM,IAAM,IA7D3D,CACA,SAAS44B,EAAeC,GAKtB,MAAc,KAAPA,GAAaR,EAAe1tB,QAAO,SAAUmuB,EAAS3+C,GAC3D,IAAI+L,EAAU/L,EAAG,GACf4+C,EAAQ5+C,EAAG,GACb,GAAI2+C,EACF,OAAOA,EAET,IAAIE,EAAUD,EAAM9L,KAAK4L,GACzB,QAASG,GAAW,CAAC9yC,EAAS8yC,EAChC,IAAG,EACL,CAKO,SAASP,EAAeI,GAC7B,IAAII,EAAcL,EAAeC,GACjC,IAAKI,EACH,OAAO,KAET,IAAIh+C,EAAOg+C,EAAY,GACrBhlB,EAAQglB,EAAY,GACtB,GAAa,cAATh+C,EACF,OAAO,IAAIg9C,EAGb,IAAIiB,EAAejlB,EAAM,IAAMA,EAAM,GAAG3R,MAAM,KAAKD,KAAK,KAAKC,MAAM,KAAKtC,MAAM,EAAG,GAC7Ek5B,EACEA,EAAar/C,OAASu+C,IACxBc,EAAe3B,EAAcA,EAAc,GAAI2B,GAAc,GA6BnE,SAA4BpvB,GAE1B,IADA,IAAI4rB,EAAS,GACJ51B,EAAK,EAAGA,EAAKgK,EAAOhK,IAC3B41B,EAAOn8C,KAAK,KAEd,OAAOm8C,CACT,CAnC0EyD,CAAmBf,EAAyBc,EAAar/C,SAAS,IAGxIq/C,EAAe,GAEjB,IAAIn9B,EAAUm9B,EAAa72B,KAAK,KAC5Bs1B,EAOC,SAAkBkB,GACvB,IAAK,IAAI/4B,EAAK,EAAGgK,EAAQwuB,EAAqBz+C,OAAQimB,EAAKgK,EAAOhK,IAAM,CACtE,IAAI3lB,EAAKm+C,EAAqBx4B,GAC5B63B,EAAKx9C,EAAG,GAGV,GAFUA,EAAG,GACK8yC,KAAK4L,GAErB,OAAOlB,CAEX,CACA,OAAO,IACT,CAlBWyB,CAASP,GACdQ,EAAiBlB,EAAmBlL,KAAK4L,GAC7C,OAAIQ,GAAkBA,EAAe,GAC5B,IAAItB,EAAoB98C,EAAM8gB,EAAS47B,EAAI0B,EAAe,IAE5D,IAAI3B,EAAYz8C,EAAM8gB,EAAS47B,EACxC,iCCzHApV,EAAOC,QAAU,SAAS8W,EAAMniC,EAAG8E,GACjC,GAAI9E,IAAM8E,EAAG,OAAO,EACpB,GAAI9E,GAAK8E,GAAiB,iBAAL9E,GAA6B,iBAAL8E,EAAe,CAC1D,GAAI9E,EAAErZ,cAAgBme,EAAEne,YAAa,OAAO,EAC5C,IAAIjE,EAAQK,EAAG0/B,EACf,GAAIH,MAAMC,QAAQviB,GAAI,CAEpB,IADAtd,EAASsd,EAAEtd,SACGoiB,EAAEpiB,OAAQ,OAAO,EAC/B,IAAKK,EAAIL,EAAgB,GAARK,KAAY,IAAKo/C,EAAMniC,EAAEjd,GAAI+hB,EAAE/hB,IAAK,OAAO,EAC5D,OAAO,CACT,CACA,GAAIid,EAAErZ,cAAgBggB,OAAQ,OAAO3G,EAAEkT,SAAWpO,EAAEoO,QAAUlT,EAAE+qB,QAAUjmB,EAAEimB,MAC5E,GAAI/qB,EAAEy5B,UAAYpgC,OAAOtX,UAAU03C,QAAS,OAAOz5B,EAAEy5B,YAAc30B,EAAE20B,UACrE,GAAIz5B,EAAEyE,WAAapL,OAAOtX,UAAU0iB,SAAU,OAAOzE,EAAEyE,aAAeK,EAAEL,WAGxE,IADA/hB,GADA+/B,EAAOppB,OAAOopB,KAAKziB,IACLtd,UACC2W,OAAOopB,KAAK3d,GAAGpiB,OAAQ,OAAO,EAC7C,IAAKK,EAAIL,EAAgB,GAARK,KAAY,IAAKsW,OAAOtX,UAAUqX,eAAe3V,KAAKqhB,EAAG2d,EAAK1/B,IAAK,OAAO,EAC3F,IAAKA,EAAIL,EAAgB,GAARK,KAAY,CAC3B,IAAI2/B,EAAMD,EAAK1/B,GACf,IAAKo/C,EAAMniC,EAAE0iB,GAAM5d,EAAE4d,IAAO,OAAO,CACrC,CACA,OAAO,CACT,CAGA,OAAO1iB,GAAMA,GAAK8E,GAAMA,CAC1B,kCC5BAsmB,EAAOC,QAAU,SAAU9jB,EAAM66B,GAC1BA,IAAMA,EAAO,CAAC,GACC,mBAATA,IAAqBA,EAAO,CACrCC,IAAKD,IAEP,IACgCl9C,EAD5Bo9C,EAAgC,kBAAhBF,EAAKE,QAAuBF,EAAKE,OACjDD,EAAMD,EAAKC,MAAiBn9C,EAc9Bk9C,EAAKC,IAbE,SAAUE,GACf,OAAO,SAAUviC,EAAG8E,GAClB,IAAI09B,EAAO,CACT9f,IAAK1iB,EACLhc,MAAOu+C,EAAKviC,IAEVyiC,EAAO,CACT/f,IAAK5d,EACL9gB,MAAOu+C,EAAKz9B,IAEd,OAAO5f,EAAEs9C,EAAMC,EACjB,CACF,GAEEC,EAAO,GACX,OAAO,SAASC,EAAUJ,GAIxB,GAHIA,GAAQA,EAAKK,QAAiC,mBAAhBL,EAAKK,SACrCL,EAAOA,EAAKK,eAEDtqB,IAATiqB,EAAJ,CACA,GAAmB,iBAARA,EAAkB,OAAOpgB,SAASogB,GAAQ,GAAKA,EAAO,OACjE,GAAoB,iBAATA,EAAmB,OAAOM,KAAKF,UAAUJ,GACpD,IAAIx/C,EAAGgiB,EACP,GAAIud,MAAMC,QAAQggB,GAAO,CAEvB,IADAx9B,EAAM,IACDhiB,EAAI,EAAGA,EAAIw/C,EAAK7/C,OAAQK,IACvBA,IAAGgiB,GAAO,KACdA,GAAO49B,EAAUJ,EAAKx/C,KAAO,OAE/B,OAAOgiB,EAAM,GACf,CACA,GAAa,OAATw9B,EAAe,MAAO,OAC1B,IAA4B,IAAxBG,EAAK3tC,QAAQwtC,GAAc,CAC7B,GAAID,EAAQ,OAAOO,KAAKF,UAAU,aAClC,MAAM,IAAI/7C,UAAU,wCACtB,CACA,IAAIk8C,EAAYJ,EAAKtgD,KAAKmgD,GAAQ,EAC9B9f,EAAOppB,OAAOopB,KAAK8f,GAAMnuC,KAAKiuC,GAAOA,EAAIE,IAE7C,IADAx9B,EAAM,GACDhiB,EAAI,EAAGA,EAAI0/B,EAAK//B,OAAQK,IAAK,CAChC,IAAI2/B,EAAMD,EAAK1/B,GACXiB,EAAQ2+C,EAAUJ,EAAK7f,IACtB1+B,IACD+gB,IAAKA,GAAO,KAChBA,GAAO89B,KAAKF,UAAUjgB,GAAO,IAAM1+B,EACrC,CAEA,OADA0+C,EAAKz/C,OAAO6/C,EAAW,GAChB,IAAM/9B,EAAM,GA5BW,CA6BhC,CAjCO,CAiCLwC,EACJ,wBCxDS,SAAU8jB,GACjB,aAIA,SAAS0X,EAAO79C,EAAG8a,EAAG8E,EAAGk+B,GAEvB,IAAIC,GADJD,EAAaA,GAAc,CAAC,GACGC,eAAiB,IAC9CriB,EAAYoiB,EAAWpiB,WAAa,MACpCsiB,EAAKh+C,EAAE8a,GACPmjC,EAAKj+C,EAAE4f,GACPo3B,EAAQp3B,EAAI9E,EACd,GAAIkjC,EAAKC,EAAK,EACZ,KAAM,iDAER,GAAW,IAAPD,EAAU,OAAOljC,EACrB,GAAW,IAAPmjC,EAAU,OAAOr+B,EACrB,IAAK,IAAI/hB,EAAI,EAAGA,EAAIkgD,IAAiBlgD,EAAG,CAEtC,IAAIqgD,EAAMpjC,GADVk8B,GAAS,GAEPmH,EAAOn+C,EAAEk+C,GAIX,GAHIC,EAAOH,GAAM,IACfljC,EAAIojC,GAEFtnC,KAAKoG,IAAIg6B,GAAStb,GAAsB,IAATyiB,EACjC,OAAOD,CAEX,CACA,OAAOpjC,EAAIk8B,CACb,CAIA,SAASoH,EAAMx2C,GAEb,IADA,IAAIiU,EAAI,IAAIuhB,MAAMx1B,GACT/J,EAAI,EAAGA,EAAI+J,IAAK/J,EACvBge,EAAEhe,GAAK,EAET,OAAOge,CACT,CACA,SAASwiC,EAAOz2C,EAAGC,GACjB,OAAOu2C,EAAMx2C,GAAG+lB,KAAI,WAClB,OAAOywB,EAAMv2C,EACf,GACF,CACA,SAASy2C,EAAIxjC,EAAG8E,GAEd,IADA,IAAI2+B,EAAM,EACD1gD,EAAI,EAAGA,EAAIid,EAAEtd,SAAUK,EAC9B0gD,GAAOzjC,EAAEjd,GAAK+hB,EAAE/hB,GAElB,OAAO0gD,CACT,CACA,SAASC,EAAM1jC,GACb,OAAOlE,KAAK2C,KAAK+kC,EAAIxjC,EAAGA,GAC1B,CACA,SAASrF,EAAM8oC,EAAKz/C,EAAOgjB,GACzB,IAAK,IAAIjkB,EAAI,EAAGA,EAAIiB,EAAMtB,SAAUK,EAClC0gD,EAAI1gD,GAAKiB,EAAMjB,GAAKikB,CAExB,CACA,SAAS28B,EAAYF,EAAKG,EAAI1tB,EAAI2tB,EAAI1tB,GACpC,IAAK,IAAIptB,EAAI,EAAGA,EAAI06C,EAAI/gD,SAAUqG,EAChC06C,EAAI16C,GAAK66C,EAAK1tB,EAAGntB,GAAK86C,EAAK1tB,EAAGptB,EAElC,CAGA,SAAS+6C,EAAW5+C,EAAGqpB,EAAIy0B,GAEzB,IASEe,EATEd,GADJD,EAAaA,GAAc,CAAC,GACGC,eAA6B,IAAZ10B,EAAG7rB,OACjDshD,EAAehB,EAAWgB,cAAgB,KAC1CC,EAAYjB,EAAWiB,WAAa,KACpCC,EAAgBlB,EAAWkB,eAAiB,KAC5CC,EAAenB,EAAWkB,eAAiB,KAC3CE,OAAyB9rB,IAAnB0qB,EAAWoB,IAAoBpB,EAAWoB,IAAM,EACtDC,OAAyB/rB,IAAnB0qB,EAAWqB,IAAoBrB,EAAWqB,IAAM,EACtDC,OAAyBhsB,IAAnB0qB,EAAWsB,IAAoBtB,EAAWsB,KAAO,GACvDC,OAA6BjsB,IAArB0qB,EAAWuB,MAAsBvB,EAAWuB,MAAQ,GAI1DC,EAAIj2B,EAAG7rB,OACT+hD,EAAU,IAAIniB,MAAMkiB,EAAI,GAC1BC,EAAQ,GAAKl2B,EACbk2B,EAAQ,GAAGC,GAAKx/C,EAAEqpB,GAClBk2B,EAAQ,GAAGlvC,GAAK,EAChB,IAAK,IAAIxS,EAAI,EAAGA,EAAIyhD,IAAKzhD,EAAG,CAC1B,IAAI8J,EAAQ0hB,EAAG1F,QACfhc,EAAM9J,GAAK8J,EAAM9J,GAAK8J,EAAM9J,GAAKihD,EAAeC,EAChDQ,EAAQ1hD,EAAI,GAAK8J,EACjB43C,EAAQ1hD,EAAI,GAAG2hD,GAAKx/C,EAAE2H,GACtB43C,EAAQ1hD,EAAI,GAAGwS,GAAKxS,EAAI,CAC1B,CACA,SAAS4hD,EAAc3gD,GACrB,IAAK,IAAIjB,EAAI,EAAGA,EAAIiB,EAAMtB,OAAQK,IAChC0hD,EAAQD,GAAGzhD,GAAKiB,EAAMjB,GAExB0hD,EAAQD,GAAGE,GAAK1gD,EAAM0gD,EACxB,CAQA,IAPA,IAAIE,EAAY,SAAmB5kC,EAAG8E,GACpC,OAAO9E,EAAE0kC,GAAK5/B,EAAE4/B,EAClB,EACIG,EAAWt2B,EAAG1F,QAChBi8B,EAAYv2B,EAAG1F,QACfk8B,EAAax2B,EAAG1F,QAChBm8B,EAAWz2B,EAAG1F,QACPo8B,EAAY,EAAGA,EAAYhC,IAAiBgC,EAAW,CAE9D,GADAR,EAAQrwC,KAAKwwC,GACT5B,EAAWkC,QAAS,CAGtB,IAAIC,EAAgBV,EAAQ5xB,KAAI,SAAU/lB,GACxC,IAAIs4C,EAAQt4C,EAAE+b,QAGd,OAFAu8B,EAAMV,GAAK53C,EAAE43C,GACbU,EAAM7vC,GAAKzI,EAAEyI,GACN6vC,CACT,IACAD,EAAc/wC,MAAK,SAAU4L,EAAG8E,GAC9B,OAAO9E,EAAEzK,GAAKuP,EAAEvP,EAClB,IACAytC,EAAWkC,QAAQ9iD,KAAK,CACtB0K,EAAG23C,EAAQ,GAAG57B,QACd67B,GAAID,EAAQ,GAAGC,GACfD,QAASU,GAEb,CAEA,IADApB,EAAU,EACLhhD,EAAI,EAAGA,EAAIyhD,IAAKzhD,EACnBghD,EAAUjoC,KAAKE,IAAI+nC,EAASjoC,KAAKoG,IAAIuiC,EAAQ,GAAG1hD,GAAK0hD,EAAQ,GAAG1hD,KAElE,GAAI+Y,KAAKoG,IAAIuiC,EAAQ,GAAGC,GAAKD,EAAQD,GAAGE,IAAMR,GAAiBH,EAAUI,EACvE,MAIF,IAAKphD,EAAI,EAAGA,EAAIyhD,IAAKzhD,EAAG,CACtB8hD,EAAS9hD,GAAK,EACd,IAAK,IAAIgG,EAAI,EAAGA,EAAIy7C,IAAKz7C,EACvB87C,EAAS9hD,IAAM0hD,EAAQ17C,GAAGhG,GAE5B8hD,EAAS9hD,IAAMyhD,CACjB,CAIA,IAAIa,EAAQZ,EAAQD,GAKpB,GAJAb,EAAYmB,EAAW,EAAIV,EAAKS,GAAWT,EAAKiB,GAChDP,EAAUJ,GAAKx/C,EAAE4/C,GAGbA,EAAUJ,GAAKD,EAAQ,GAAGC,GAC5Bf,EAAYqB,EAAU,EAAIX,EAAKQ,GAAWR,EAAKgB,GAC/CL,EAASN,GAAKx/C,EAAE8/C,GACZA,EAASN,GAAKI,EAAUJ,GAC1BC,EAAcK,GAEdL,EAAcG,QAMb,GAAIA,EAAUJ,IAAMD,EAAQD,EAAI,GAAGE,GAAI,CAC1C,IAAIY,GAAe,EAoBnB,GAnBIR,EAAUJ,GAAKW,EAAMX,IAEvBf,EAAYoB,EAAY,EAAIT,EAAKO,GAAWP,EAAKe,GACjDN,EAAWL,GAAKx/C,EAAE6/C,GACdA,EAAWL,GAAKW,EAAMX,GACxBC,EAAcI,GAEdO,GAAe,IAIjB3B,EAAYoB,EAAY,EAAIT,EAAMF,EAAKS,EAAUP,EAAMF,EAAKiB,GAC5DN,EAAWL,GAAKx/C,EAAE6/C,GACdA,EAAWL,GAAKI,EAAUJ,GAC5BC,EAAcI,GAEdO,GAAe,GAGfA,EAAc,CAEhB,GAAIf,GAAS,EAAG,MAGhB,IAAKxhD,EAAI,EAAGA,EAAI0hD,EAAQ/hD,SAAUK,EAChC4gD,EAAYc,EAAQ1hD,GAAI,EAAIwhD,EAAOE,EAAQ,GAAIF,EAAOE,EAAQ1hD,IAC9D0hD,EAAQ1hD,GAAG2hD,GAAKx/C,EAAEu/C,EAAQ1hD,GAE9B,CACF,MACE4hD,EAAcG,EAElB,CAEA,OADAL,EAAQrwC,KAAKwwC,GACN,CACLF,GAAID,EAAQ,GAAGC,GACf53C,EAAG23C,EAAQ,GAEf,CASA,SAASc,EAAgBrgD,EAAGsgD,EAAIl8C,EAAS8tB,EAAMpX,EAAGsK,EAAIE,GACpD,IAAIi7B,EAAOn8C,EAAQo7C,GACjBgB,EAAYlC,EAAIl6C,EAAQq8C,QAASH,GACjCI,EAAMH,EACNI,EAAUJ,EACVK,EAAWJ,EACX7J,EAAK,EAIP,SAASkK,EAAKC,EAAMC,EAAQC,GAC1B,IAAK,IAAIjB,EAAY,EAAGA,EAAY,KAAMA,EAKxC,GAJAjlC,GAAKgmC,EAAOC,GAAU,EACtBtC,EAAYvsB,EAAKtqB,EAAG,EAAKxD,EAAQwD,EAAGkT,EAAGwlC,GACvCI,EAAMxuB,EAAKstB,GAAKx/C,EAAEkyB,EAAKtqB,EAAGsqB,EAAKuuB,SAC/BG,EAAWtC,EAAIpsB,EAAKuuB,QAASH,GACzBI,EAAMH,EAAOn7B,EAAKtK,EAAI0lC,GAAaE,GAAOM,EAC5CD,EAASjmC,MACJ,CACL,GAAIlE,KAAKoG,IAAI4jC,KAAct7B,EAAKk7B,EAC9B,OAAO1lC,EAEL8lC,GAAYG,EAASD,IAAS,IAChCC,EAASD,GAEXA,EAAOhmC,EACPkmC,EAASN,CACX,CAEF,OAAO,CACT,CAvBA5lC,EAAIA,GAAK,EACTsK,EAAKA,GAAM,KACXE,EAAKA,GAAM,GAsBX,IAAK,IAAIy6B,EAAY,EAAGA,EAAY,KAAMA,EAAW,CAInD,GAHAtB,EAAYvsB,EAAKtqB,EAAG,EAAKxD,EAAQwD,EAAGkT,EAAGwlC,GACvCI,EAAMxuB,EAAKstB,GAAKx/C,EAAEkyB,EAAKtqB,EAAGsqB,EAAKuuB,SAC/BG,EAAWtC,EAAIpsB,EAAKuuB,QAASH,GACzBI,EAAMH,EAAOn7B,EAAKtK,EAAI0lC,GAAaT,GAAaW,GAAOC,EACzD,OAAOE,EAAKlK,EAAI77B,EAAG6lC,GAErB,GAAI/pC,KAAKoG,IAAI4jC,KAAct7B,EAAKk7B,EAC9B,OAAO1lC,EAET,GAAI8lC,GAAY,EACd,OAAOC,EAAK/lC,EAAG67B,EAAI+J,GAErBC,EAAUD,EACV/J,EAAK77B,EACLA,GAAK,CACP,CACA,OAAOA,CACT,CACA,SAASmmC,EAAkBjhD,EAAGkhD,EAASjjC,GAGrC,IAWEqiC,EACAxyB,EAEAiwB,EAdE35C,EAAU,CACVwD,EAAGs5C,EAAQv9B,QACX67B,GAAI,EACJiB,QAASS,EAAQv9B,SAEnBuO,EAAO,CACLtqB,EAAGs5C,EAAQv9B,QACX67B,GAAI,EACJiB,QAASS,EAAQv9B,SAEnBm1B,EAAKoI,EAAQv9B,QAGb7I,EAAI,EAGNijC,GADA9/B,EAASA,GAAU,CAAC,GACG8/B,eAAkC,GAAjBmD,EAAQ1jD,OAChD4G,EAAQo7C,GAAKx/C,EAAEoE,EAAQwD,EAAGxD,EAAQq8C,SAElChrC,EADA6qC,EAAKl8C,EAAQq8C,QAAQ98B,QACXvf,EAAQq8C,SAAU,GAC5B,IAAK,IAAI5iD,EAAI,EAAGA,EAAIkgD,IAAiBlgD,EAAG,CAYtC,GAXAid,EAAIulC,EAAgBrgD,EAAGsgD,EAAIl8C,EAAS8tB,EAAMpX,GAGtCmD,EAAO+hC,SACT/hC,EAAO+hC,QAAQ9iD,KAAK,CAClB0K,EAAGxD,EAAQwD,EAAE+b,QACb67B,GAAIp7C,EAAQo7C,GACZiB,QAASr8C,EAAQq8C,QAAQ98B,QACzB8H,MAAO3Q,IAGNA,EAIE,CAEL2jC,EAAY3F,EAAI,EAAG5mB,EAAKuuB,SAAU,EAAGr8C,EAAQq8C,SAC7C,IAAIU,EAAU7C,EAAIl6C,EAAQq8C,QAASr8C,EAAQq8C,SAE3ChC,EAAY6B,EADD1pC,KAAKE,IAAI,EAAGwnC,EAAIxF,EAAI5mB,EAAKuuB,SAAWU,GACvBb,GAAK,EAAGpuB,EAAKuuB,SACrC3yB,EAAO1pB,EACPA,EAAU8tB,EACVA,EAAOpE,CACT,MAVErY,EAAM6qC,EAAIl8C,EAAQq8C,SAAU,GAW9B,GAAIjC,EAAMp6C,EAAQq8C,UAAY,KAC5B,KAEJ,CASA,OARIxiC,EAAO+hC,SACT/hC,EAAO+hC,QAAQ9iD,KAAK,CAClB0K,EAAGxD,EAAQwD,EAAE+b,QACb67B,GAAIp7C,EAAQo7C,GACZiB,QAASr8C,EAAQq8C,QAAQ98B,QACzB8H,MAAO3Q,IAGJ1W,CACT,CACA,SAASg9C,EAAgBphD,EAAGkhD,EAASjjC,GASnC,IAPA,IAAI8/B,GADJ9/B,EAASA,GAAU,CAAC,GACO8/B,eAAkC,IAAjBmD,EAAQ1jD,OAClD6jD,EAAYpjC,EAAOojC,WAAa,KAChCj9C,EAAU,CACRwD,EAAGs5C,EAAQv9B,QACX67B,GAAI,EACJiB,QAASS,EAAQv9B,SAEZ9lB,EAAI,EAAGA,EAAIkgD,IAClB35C,EAAQo7C,GAAKx/C,EAAEoE,EAAQwD,EAAGxD,EAAQq8C,SAC9BxiC,EAAO+hC,SACT/hC,EAAO+hC,QAAQ9iD,KAAK,CAClB0K,EAAGxD,EAAQwD,EAAE+b,QACb67B,GAAIp7C,EAAQo7C,GACZiB,QAASr8C,EAAQq8C,QAAQ98B,UAG7B86B,EAAYr6C,EAAQwD,EAAG,EAAGxD,EAAQwD,GAAIy5C,EAAWj9C,EAAQq8C,WACrDjC,EAAMp6C,EAAQq8C,UAAY,SAVK5iD,GAcrC,OAAOuG,CACT,CACA,SAASk9C,EAA0BthD,EAAGkhD,EAASjjC,GAC7CA,EAASA,GAAU,CAAC,EACpB,IAeE6P,EAfE1pB,EAAU,CACVwD,EAAGs5C,EAAQv9B,QACX67B,GAAI,EACJiB,QAASS,EAAQv9B,SAEnBuO,EAAO,CACLtqB,EAAGs5C,EAAQv9B,QACX67B,GAAI,EACJiB,QAASS,EAAQv9B,SAEnBo6B,EAAgB9/B,EAAO8/B,eAAkC,IAAjBmD,EAAQ1jD,OAChD6jD,EAAYpjC,EAAOojC,WAAa,EAChCf,EAAKY,EAAQv9B,QACbyB,EAAKnH,EAAOmH,IAAM,KAClBE,EAAKrH,EAAOqH,IAAM,GAElBi8B,EAAgB,GAClB,GAAItjC,EAAO+hC,QAAS,CAElB,IAAIwB,EAAQxhD,EACZA,EAAI,SAAW4H,EAAG64C,GAEhB,OADAc,EAAcrkD,KAAK0K,EAAE+b,SACd69B,EAAM55C,EAAG64C,EAClB,CACF,CACAr8C,EAAQo7C,GAAKx/C,EAAEoE,EAAQwD,EAAGxD,EAAQq8C,SAClC,IAAK,IAAI5iD,EAAI,EAAGA,EAAIkgD,IAClBtoC,EAAM6qC,EAAIl8C,EAAQq8C,SAAU,GAC5BY,EAAYhB,EAAgBrgD,EAAGsgD,EAAIl8C,EAAS8tB,EAAMmvB,EAAWj8B,EAAIE,GAC7DrH,EAAO+hC,UACT/hC,EAAO+hC,QAAQ9iD,KAAK,CAClB0K,EAAGxD,EAAQwD,EAAE+b,QACb67B,GAAIp7C,EAAQo7C,GACZiB,QAASr8C,EAAQq8C,QAAQ98B,QACzB49B,cAAeA,EACfF,UAAWA,EACX51B,MAAO41B,IAETE,EAAgB,IAElBzzB,EAAO1pB,EACPA,EAAU8tB,EACVA,EAAOpE,IACW,IAAduzB,GAAmB7C,EAAMp6C,EAAQq8C,SAAW,SAjBb5iD,GAmBrC,OAAOuG,CACT,CACA+hC,EAAQ0X,OAASA,EACjB1X,EAAQyY,WAAaA,EACrBzY,EAAQ8a,kBAAoBA,EAC5B9a,EAAQib,gBAAkBA,EAC1Bjb,EAAQmb,0BAA4BA,EACpCnb,EAAQiY,MAAQA,EAChBjY,EAAQkY,OAASA,EACjBlY,EAAQqY,MAAQA,EAChBrY,EAAQsY,YAAcA,EACtBtY,EAAQ1wB,MAAQA,CAClB,CAzZiE+8B,CAAQrM,qFCM9Dsb,EAAqC,oBAAjBC,aAA+BA,aAAetkB,MACzDxmB,KAAK+qC,OAUZ/qC,KAAK+B,GAuBb/B,KAAKoe,QAAOpe,KAAKoe,MAAQ,WAG5B,IAFA,IAAIntB,EAAI,EACNhK,EAAIN,UAAUC,OACTK,KACLgK,GAAKtK,UAAUM,GAAKN,UAAUM,GAEhC,OAAO+Y,KAAK2C,KAAK1R,EACnB,iLC4JO,SAASoZ,EAAOpB,EAAK/E,GAC1B,IAAIgF,EAAMhF,EAAE,GACViF,EAAMjF,EAAE,GACRkF,EAAMlF,EAAE,GACNmF,EAAMnF,EAAE,GACVoF,EAAMpF,EAAE,GACRqF,EAAMrF,EAAE,GACNsF,EAAMtF,EAAE,GACVuF,EAAMvF,EAAE,GACRwF,EAAMxF,EAAE,GACN0F,EAAMF,EAAMJ,EAAMC,EAAME,EACxBM,GAAOL,EAAML,EAAME,EAAMC,EACzBU,EAAMT,EAAMJ,EAAMC,EAAME,EAExBc,EAAMpB,EAAMU,EAAMT,EAAMY,EAAMX,EAAMc,EACxC,OAAKI,GAGLA,EAAM,EAAMA,EACZrB,EAAI,GAAKW,EAAMU,EACfrB,EAAI,KAAOS,EAAMP,EAAMC,EAAMK,GAAOa,EACpCrB,EAAI,IAAMM,EAAMJ,EAAMC,EAAME,GAAOgB,EACnCrB,EAAI,GAAKc,EAAMO,EACfrB,EAAI,IAAMS,EAAMR,EAAME,EAAMI,GAAOc,EACnCrB,EAAI,KAAOM,EAAML,EAAME,EAAMC,GAAOiB,EACpCrB,EAAI,GAAKiB,EAAMI,EACfrB,EAAI,KAAOQ,EAAMP,EAAMC,EAAMK,GAAOc,EACpCrB,EAAI,IAAMK,EAAMJ,EAAMC,EAAME,GAAOiB,EAC5BrB,GAZE,IAaX,CA0DO,SAAS+hC,EAAS/hC,EAAK/E,EAAG8E,GAC/B,IAAIE,EAAMhF,EAAE,GACViF,EAAMjF,EAAE,GACRkF,EAAMlF,EAAE,GACNmF,EAAMnF,EAAE,GACVoF,EAAMpF,EAAE,GACRqF,EAAMrF,EAAE,GACNsF,EAAMtF,EAAE,GACVuF,EAAMvF,EAAE,GACRwF,EAAMxF,EAAE,GACNyF,EAAMX,EAAE,GACVY,EAAMZ,EAAE,GACRa,EAAMb,EAAE,GACNc,EAAMd,EAAE,GACVe,EAAMf,EAAE,GACRgB,EAAMhB,EAAE,GACNiB,EAAMjB,EAAE,GACVkB,EAAMlB,EAAE,GACRmB,EAAMnB,EAAE,GAUV,OATAC,EAAI,GAAKU,EAAMT,EAAMU,EAAMP,EAAMQ,EAAML,EACvCP,EAAI,GAAKU,EAAMR,EAAMS,EAAMN,EAAMO,EAAMJ,EACvCR,EAAI,GAAKU,EAAMP,EAAMQ,EAAML,EAAMM,EAAMH,EACvCT,EAAI,GAAKa,EAAMZ,EAAMa,EAAMV,EAAMW,EAAMR,EACvCP,EAAI,GAAKa,EAAMX,EAAMY,EAAMT,EAAMU,EAAMP,EACvCR,EAAI,GAAKa,EAAMV,EAAMW,EAAMR,EAAMS,EAAMN,EACvCT,EAAI,GAAKgB,EAAMf,EAAMgB,EAAMb,EAAMc,EAAMX,EACvCP,EAAI,GAAKgB,EAAMd,EAAMe,EAAMZ,EAAMa,EAAMV,EACvCR,EAAI,GAAKgB,EAAMb,EAAMc,EAAMX,EAAMY,EAAMT,EAChCT,CACT,CAoGO,SAASgiC,EAAgBhiC,EAAKjR,GAUnC,OATAiR,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAKjR,EAAE,GACXiR,EAAI,GAAKjR,EAAE,GACXiR,EAAI,GAAK,EACFA,CACT,CAaO,SAASiiC,EAAajiC,EAAKiD,GAChC,IAAIrI,EAAI7D,KAAKoC,IAAI8J,GACfhB,EAAIlL,KAAKkC,IAAIgK,GAUf,OATAjD,EAAI,GAAKiC,EACTjC,EAAI,GAAKpF,EACToF,EAAI,GAAK,EACTA,EAAI,IAAMpF,EACVoF,EAAI,GAAKiC,EACTjC,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACFA,CACT,CAaO,SAASkiC,EAAYliC,EAAKjR,GAU/B,OATAiR,EAAI,GAAKjR,EAAE,GACXiR,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAKjR,EAAE,GACXiR,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACFA,CACT,+XC7YO,SAAS1R,EAAI0R,EAAK/E,EAAG8E,GAG1B,OAFAC,EAAI,GAAK/E,EAAE,GAAK8E,EAAE,GAClBC,EAAI,GAAK/E,EAAE,GAAK8E,EAAE,GACXC,CACT,CAUO,SAASmiC,EAASniC,EAAK/E,EAAG8E,GAG/B,OAFAC,EAAI,GAAK/E,EAAE,GAAK8E,EAAE,GAClBC,EAAI,GAAK/E,EAAE,GAAK8E,EAAE,GACXC,CACT,CAgEO,SAAShJ,EAAIgJ,EAAK/E,EAAG8E,GAG1B,OAFAC,EAAI,GAAKjJ,KAAKC,IAAIiE,EAAE,GAAI8E,EAAE,IAC1BC,EAAI,GAAKjJ,KAAKC,IAAIiE,EAAE,GAAI8E,EAAE,IACnBC,CACT,CAUO,SAAS/I,EAAI+I,EAAK/E,EAAG8E,GAG1B,OAFAC,EAAI,GAAKjJ,KAAKE,IAAIgE,EAAE,GAAI8E,EAAE,IAC1BC,EAAI,GAAKjJ,KAAKE,IAAIgE,EAAE,GAAI8E,EAAE,IACnBC,CACT,CAuBO,SAASpK,EAAMoK,EAAK/E,EAAG8E,GAG5B,OAFAC,EAAI,GAAK/E,EAAE,GAAK8E,EAChBC,EAAI,GAAK/E,EAAE,GAAK8E,EACTC,CACT,CAwBO,SAASiR,EAAShW,EAAG8E,GAC1B,IAAIhY,EAAIgY,EAAE,GAAK9E,EAAE,GACfjT,EAAI+X,EAAE,GAAK9E,EAAE,GACf,OAAOlE,KAAKoe,MAAMptB,EAAGC,EACvB,CAqBO,SAASrK,EAAOsd,GACrB,IAAIlT,EAAIkT,EAAE,GACRjT,EAAIiT,EAAE,GACR,OAAOlE,KAAKoe,MAAMptB,EAAGC,EACvB,CA+CO,SAASo6C,EAAUpiC,EAAK/E,GAC7B,IAAIlT,EAAIkT,EAAE,GACRjT,EAAIiT,EAAE,GACJqc,EAAMvvB,EAAIA,EAAIC,EAAIA,EAOtB,OANIsvB,EAAM,IAERA,EAAM,EAAIvgB,KAAK2C,KAAK4d,IAEtBtX,EAAI,GAAK/E,EAAE,GAAKqc,EAChBtX,EAAI,GAAK/E,EAAE,GAAKqc,EACTtX,CACT,CASO,SAASy+B,EAAIxjC,EAAG8E,GACrB,OAAO9E,EAAE,GAAK8E,EAAE,GAAK9E,EAAE,GAAK8E,EAAE,EAChC,CA2FO,SAASsiC,EAAcriC,EAAK/E,EAAGpI,GACpC,IAAI9K,EAAIkT,EAAE,GACRjT,EAAIiT,EAAE,GAGR,OAFA+E,EAAI,GAAKnN,EAAE,GAAK9K,EAAI8K,EAAE,GAAK7K,EAAI6K,EAAE,GACjCmN,EAAI,GAAKnN,EAAE,GAAK9K,EAAI8K,EAAE,GAAK7K,EAAI6K,EAAE,GAC1BmN,CACT,CA8CO,SAASwE,EAAMvJ,EAAG8E,GACvB,IAAIb,EAAKjE,EAAE,GACTkE,EAAKlE,EAAE,GACPmE,EAAKW,EAAE,GACPV,EAAKU,EAAE,GAEPuiC,EAAMvrC,KAAK2C,KAAKwF,EAAKA,EAAKC,EAAKA,GAAMpI,KAAK2C,KAAK0F,EAAKA,EAAKC,EAAKA,GAE9DkjC,EAASD,IAAQpjC,EAAKE,EAAKD,EAAKE,GAAMijC,EAExC,OAAOvrC,KAAKgG,KAAKhG,KAAKC,IAAID,KAAKE,IAAIsrC,GAAS,GAAI,GAClD,CA+BO,SAASC,EAAYvnC,EAAG8E,GAC7B,OAAO9E,EAAE,KAAO8E,EAAE,IAAM9E,EAAE,KAAO8E,EAAE,EACrC,CAqBO,IA/gBDC,EAkkBAlI,EA7CKqgB,EAAMgqB,EArhBXniC,EAAM,IAAI,KAAoB,GAC9B,MAAuB6hC,eACzB7hC,EAAI,GAAK,EACTA,EAAI,GAAK,GA+jBPlI,EA7jBGkI,kCCbT,IAAIyiC,EAAe,4BACnBpc,EAAOC,QAAU,SAAmBoc,EAAWzgB,GAC7C,IAAI0gB,EAAQC,EAAWC,EAKvB,OAJA5gB,EAAUA,GAAW,CAAC,EACtB0gB,EAAS7E,KAAKF,UAAU,CAAC,QAAIrqB,OAA8BA,IAAnB0O,EAAQ0gB,OAAuB,EAAI1gB,EAAQ0gB,QAAQ7+B,MAAM,GAAI,GACrG8+B,EAAuB,KAAXD,EAAgBthD,SAAiCkyB,IAAtB0O,EAAQ2gB,UAA0B,GAAK3gB,EAAQ2gB,UACtFC,EAAW5gB,EAAQ4gB,SACZ,SAASC,EAAWjyB,EAAKkyB,EAAeC,GAE7C,IAAIr3B,EAAK7mB,EAAOm+C,EAAOtlB,EAAKulB,EAASxlB,EAAM//B,EAAQwlD,EAAYC,EAAY5/B,EAAO6/B,EAAQpkD,EAK1F,GAJI4xB,GAA6B,mBAAfA,EAAIgtB,SACpBhtB,EAAMA,EAAIgtB,eAGGtqB,KADf8vB,EAASvF,KAAKF,UAAU/sB,EAAKgyB,IAE3B,OAAOQ,EAGT,GADA1lD,EAASilD,EAAYG,EAAcplD,OAASqlD,EACxCK,EAAO1lD,QAAUA,IACnBylD,EAAaC,EAAO3gC,QAAQ+/B,GAAc,SAAU1qB,EAAOurB,GACzD,OAAOA,GAAiBvrB,EAAQ,GAClC,KACep6B,QAAUA,EACvB,OAAOylD,EAOX,GAJgB,MAAZP,IACFhyB,EAAMitB,KAAKyF,MAAMF,GACjBR,OAAWtvB,GAEM,iBAAR1C,GAA4B,OAARA,EAAc,CAI3C,GAHAsyB,EAAaJ,EAAgBJ,EAC7BM,EAAQ,GACRn+C,EAAQ,EACJy4B,MAAMC,QAAQ3M,GAIhB,IAHArN,EAAQ,IACRmI,EAAM,IACNhuB,EAASkzB,EAAIlzB,OACNmH,EAAQnH,EAAQmH,IACrBm+C,EAAM5lD,KAAKylD,EAAWjyB,EAAI/rB,GAAQq+C,EAAYr+C,IAAUnH,EAAS,EAAI,EAAI,IAAM,aAOjF,IAJA6lB,EAAQ,IACRmI,EAAM,IAENhuB,GADA+/B,EAAOppB,OAAOopB,KAAK7M,IACLlzB,OACPmH,EAAQnH,EAAQmH,IACrB64B,EAAMD,EAAK54B,GACXo+C,EAAUpF,KAAKF,UAAUjgB,GAAO,UAElBpK,KADdt0B,EAAQ6jD,EAAWjyB,EAAI8M,GAAMwlB,EAAYD,EAAQvlD,QAAUmH,IAAUnH,EAAS,EAAI,EAAI,MAEpFslD,EAAM5lD,KAAK6lD,EAAUjkD,GAI3B,GAAIgkD,EAAMtlD,OAAS,EACjB,MAAO,CAAC6lB,EAAOm/B,EAASM,EAAM98B,KAAK,MAAQg9B,GAAax3B,GAAKxF,KAAK,KAAO48B,EAE7E,CACA,OAAOM,CACT,CArDO,CAqDLX,EAAW,GAAI,EACnB,kCCjEA,IAAIc,EAAOnd,EAAOC,QAClBD,EAAOC,QAAQmd,SAAW,SAAU17C,GAClC,MAAoB,iBAANA,CAChB,EACAs+B,EAAOC,QAAQod,QAAU,SAAUnwC,GACjC,GAAmB,IAAfA,EAAI5V,OACN,OAAO0D,IAGT,IADA,IAAI68B,EAAO3qB,EAAI,GACNvV,EAAI,EAAGA,EAAIuV,EAAI5V,OAAQK,IAC9BkgC,EAAOnnB,KAAKC,IAAIknB,EAAM3qB,EAAIvV,IAE5B,OAAOkgC,CACT,EACAmI,EAAOC,QAAQqd,QAAU,SAAUpwC,GACjC,GAAmB,IAAfA,EAAI5V,OACN,OAAQ0D,IAGV,IADA,IAAI68B,EAAO3qB,EAAI,GACNvV,EAAI,EAAGA,EAAIuV,EAAI5V,OAAQK,IAC9BkgC,EAAOnnB,KAAKE,IAAIinB,EAAM3qB,EAAIvV,IAE5B,OAAOkgC,CACT,EACAmI,EAAOC,QAAQsd,aAAe,SAAUrwC,GAEtC,IADA,IAAI2qB,EAAOslB,EAAKE,QAAQnwC,EAAI,IACnBvV,EAAI,EAAGA,EAAIuV,EAAI5V,OAAQK,IAC9BkgC,EAAOnnB,KAAKC,IAAIknB,EAAMslB,EAAKE,QAAQnwC,EAAIvV,KAEzC,OAAOkgC,CACT,EACAmI,EAAOC,QAAQud,aAAe,SAAUtwC,GAEtC,IADA,IAAI2qB,EAAOslB,EAAKG,QAAQpwC,EAAI,IACnBvV,EAAI,EAAGA,EAAIuV,EAAI5V,OAAQK,IAC9BkgC,EAAOnnB,KAAKE,IAAIinB,EAAMslB,EAAKG,QAAQpwC,EAAIvV,KAEzC,OAAOkgC,CACT,EACAmI,EAAOC,QAAQwd,OAAS,SAAU9sC,EAAKC,EAAKlP,GAC1C,OAAOiP,GAAOjP,GAAKA,GAAKkP,CAC1B,sCCxCA,IAEI8sC,EAAOhtC,KAAKy/B,IAAI,GAChBgN,EAAOnd,EAAOC,QACd0d,EAAS,EAAQ,OAGrB,SAASC,EAAOl8C,GACd,OAAO,EAAIgP,KAAKoG,IAAIpV,EACtB,CAQAs+B,EAAOC,QAAQ4d,iBAAmB,SAAU3wC,EAAK0uB,GAC/C,OAAOuhB,EAAKW,sBAAsB,CAAC5wC,GAAM0uB,EAC3C,EACAoE,EAAOC,QAAQ6d,sBAAwB,SAAUC,EAAUniB,GACzDA,EAAUA,GAAW,CAAC,EACtB,IAAIoiB,GAAW,EACXC,GAAW,EACXz5C,EAAQm5C,EAAOP,SAASxhB,EAAQp3B,OAASo3B,EAAQp3B,MAvBnC,EAwBdu2B,EAAO4iB,EAAOP,SAASxhB,EAAQb,MAAQa,EAAQb,KAzBlC,GA0BbpqB,EAAMgtC,EAAOP,SAASxhB,EAAQjrB,KAAOirB,EAAQjrB,KAAOqtC,GAAW,EAAML,EAAOJ,aAAaQ,IACzFntC,EAAM+sC,EAAOP,SAASxhB,EAAQhrB,KAAOgrB,EAAQhrB,KAAOqtC,GAAW,EAAMN,EAAOH,aAAaO,IAEzFG,GADQttC,EAAMD,IACEoqB,EAAO,GAS3B,OANIijB,IACFrtC,GAAY,EAAInM,EAAQ05C,GAEtBD,IACFrtC,GAAY,EAAIpM,EAAQ05C,GAEnB,CACLvtC,IAAKA,EACLC,IAAKA,EAET,EACAovB,EAAOC,QAAQtB,OAAS,SAAUzxB,EAAK0uB,GAErC,GADAA,EAAUA,GAAW,CAAC,GACjB1uB,GAAsB,IAAfA,EAAI5V,OACd,MAAO,GAET,IAAIyjC,EAAO4iB,EAAOP,SAASxhB,EAAQb,MAAQa,EAAQb,KAhDlC,GAiDbv2B,EAAQm5C,EAAOP,SAASxhB,EAAQp3B,OAASo3B,EAAQp3B,MAhDnC,EAiDd25C,EAAmBhB,EAAKU,iBAAiB3wC,EAAK,CAChD6tB,KAAMA,EACNv2B,MAAOA,EACPmM,IAAKirB,EAAQjrB,IACbC,IAAKgrB,EAAQhrB,MAEXD,EAAMwtC,EAAiBxtC,IAEvBytC,EADMD,EAAiBvtC,IACTD,EACdutC,EAAOE,GAASrjB,EAAO,GAC3B,GAAc,IAAVqjB,EAEF,MAAO,CAAC,CACN18C,EAAGiP,EACHhP,EAAG,IAOP,IADA,IAAI08C,EAAU,GACL1mD,EAAI,EAAGA,EAAIojC,EAAMpjC,IACxB0mD,EAAQrnD,KAAK,CACX0K,EAAGiP,EAAMhZ,EAAIumD,EACbv8C,EAAG,IAGP,IAGI28C,EAqDN,SAA8BV,EAAQp5C,GAGpC,IAFA,IAAI+5C,EAAe,CAAC,EAChBC,EAAc,EACT7mD,GAAK6M,EAAO7M,GAAK6M,EAAO7M,IAC/B6mD,GAAeZ,EAAOjmD,EAAI6M,GAC1B+5C,EAAa5mD,GAAK6mD,EAEpB,OAAOD,CACT,CA7DoBE,CAAqBb,EAAQp5C,GAC3Ck6C,EAAWJ,EAAY95C,GACvBoX,EAAI0iC,EAAY95C,EAAQ,GAAK85C,EAAY95C,EAAQ,GACjDm6C,EAAc,EAClBzxC,EAAIrO,SAAQ,SAAU6C,GACpB,IAAIk9C,EARU,SAAmBl9C,GACjC,OAAOgP,KAAKwX,OAAOxmB,EAAIiP,GAAOutC,EAChC,CAMeW,CAAUn9C,GAGvB,KAAIk9C,EAASp6C,EAAQ,GAAKo6C,EAASp6C,GAAS65C,EAAQ/mD,QAApD,CAGA,IAAI6lB,EAAQzM,KAAKE,IAAIguC,EAASp6C,EAAO,GACjCwzC,EAAM4G,EACNt5B,EAAM5U,KAAKC,IAAIiuC,EAASp6C,EAAO65C,EAAQ/mD,OAAS,GAChDwnD,EAAiB3hC,GAASyhC,EAASp6C,GACnCu6C,EAAkBH,EAASp6C,EAAQ8gB,EACnC05B,EAAkBV,GAAa95C,EAAQ,EAAIs6C,IAAmB,EAC9DG,EAAmBX,GAAa95C,EAAQ,EAAIu6C,IAAoB,EAChEG,EAASR,GAAYA,EAAWM,EAAkBC,GAClDH,EAAiB,IACnBH,GAAeO,GAAUJ,EAAiB,GAAKljC,GAIjD,IAAIujC,EAAezuC,KAAKE,IAAI,EAAGguC,EAASp6C,EAAQ,GAC5Cm5C,EAAOF,OAAO,EAAGY,EAAQ/mD,OAAS,EAAG6nD,KACvCd,EAAQc,GAAcx9C,GAAc,EAATu9C,EAAatjC,GAEtC+hC,EAAOF,OAAO,EAAGY,EAAQ/mD,OAAS,EAAG0gD,EAAM,KAC7CqG,EAAQrG,EAAM,GAAGr2C,GAAc,EAATu9C,EAAatjC,GAEjC+hC,EAAOF,OAAO,EAAGY,EAAQ/mD,OAAS,EAAGguB,EAAM,KAC7C+4B,EAAQ/4B,EAAM,GAAG3jB,GAAc,EAATu9C,EAAatjC,EAtBrC,CAwBF,IACA,IAAI4iC,EAAcG,EACdS,EAAkB,EAClBC,EAAO,EAcX,OAbAhB,EAAQx/C,SAAQ,SAAU+/C,GACxBQ,GAAmBR,EAAOj9C,EAC1B68C,GAAeY,EACfR,EAAOj9C,EAAI68C,EACXa,GAAQb,CACV,IAGIa,EAAO,GACThB,EAAQx/C,SAAQ,SAAU+/C,GACxBA,EAAOj9C,GAAK09C,CACd,IAEKhB,CACT,EAUAre,EAAOC,QAAQqf,wBAA0B,SAAUC,GACjD,GAAKA,GAAsB,IAAfA,EAAIjoD,OAAhB,CAGA,IAAIkoD,EAAW,EAIf,OAHAD,EAAI1gD,SAAQ,SAAU2rB,GACpBg1B,GAAYh1B,EAAI9oB,EAAI8oB,EAAI7oB,CAC1B,IACO69C,CALP,CAMF,EACAxf,EAAOC,QAAQwf,qBAAuB,SAAUF,EAAKF,GACnD,GAAKE,GAAsB,IAAfA,EAAIjoD,OAAhB,CAKA,IAFA,IAAIknD,EAAc,EACdzoB,EAAO,EACFp+B,EAAI,EAAGA,EAAI4nD,EAAIjoD,SACtBy+B,EAAOp+B,KACP6mD,GAAee,EAAI5nD,GAAGgK,IACH09C,IAHW1nD,KAOhC,OAAO4nD,EAAIxpB,GAAMr0B,CAVjB,CAWF,EACAs+B,EAAOC,QAAQyf,cAAgB,SAAUH,GACvC,GAAKA,GAAsB,IAAfA,EAAIjoD,OAAhB,CAGA,IAAIqoD,EAAU,EAQd,OAPAJ,EAAI1gD,SAAQ,SAAU2rB,GACpB,IAAIo1B,EAAKlvC,KAAKy/B,IAAI3lB,EAAI7oB,GAClBo1B,SAAS6oB,KACXD,GAAWn1B,EAAI7oB,EAAIi+C,EAEvB,IACAD,GAAWA,EAAUjC,EACdhtC,KAAK0B,IAAI,EAAGutC,EATnB,CAUF,oCCpLA1xC,OAAOoxB,eAAeY,EAAS,aAAc,CAC3CrnC,OAAO,IAETqnC,EAAQ4f,eAAiB5f,EAAQ6f,gBAAkB7f,EAAQ8f,kBAAe,EAO1E9f,EAAQ8f,aADW,iBAGnB9f,EAAQ6f,gBADc,qBAGtB7f,EAAQ4f,eADa,uCCbrB5xC,OAAOoxB,eAAeY,EAAS,aAAc,CAC3CrnC,OAAO,IAETqnC,EAAiB,aAAI,EAoBrBA,EAAiB,QAdF,SAAkBn2B,GAC/B,IAAIxP,EAAQjD,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,GAC5EgD,EAAQ,KACZ,OAAO,WAEL,IADA,IAAInD,EAAQT,KACHupD,EAAO3oD,UAAUC,OAAQH,EAAO,IAAI+/B,MAAM8oB,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E9oD,EAAK8oD,GAAQ5oD,UAAU4oD,GAEzB7kD,aAAaf,GACbA,EAAQN,YAAW,WACjB+P,EAAGhS,MAAMZ,EAAOC,EAClB,GAAGmD,EACL,CACF,mCCtBA2T,OAAOoxB,eAAeY,EAAS,aAAc,CAC3CrnC,OAAO,IAETqnC,EAAiB,aAAI,EAMrB,IAAI91B,EAAK,EAST81B,EAAiB,QAHF,WACb,MAAO,GAAGj2B,OAAOG,IACnB,sCCd8B81B,EAAQ,QAAO,EAC7C,IAAIigB,EAAc,EAAQ,OA0B1BjgB,EAAQ,GAdG,SAAc75B,EAASkpC,GAChC,IAAI6Q,GAAS,EAAID,EAAYE,WAAWh6C,GAIxC,OAFA+5C,EAAOtmD,KAAKy1C,GAEL,WACL6Q,EAAOE,OAAO/Q,EAChB,CACF,sCCxBArhC,OAAOoxB,eAAeY,EAAS,aAAc,CAC3CrnC,OAAO,IAETqnC,EAAQqgB,aAAergB,EAAQmgB,eAAY,EAC3C,IAGgC51B,EAH5B+1B,GAG4B/1B,EAHC,EAAQ,QAIzBA,EAAIg2B,WAAah2B,EAAM,CACnC,QAAWA,GAJXi2B,EAAW,EAAQ,MACnBC,EAAY,EAAQ,OAgBxB,IAAIC,EAAU,CAAC,EA0Bf1gB,EAAQmgB,UAnBQ,SAAmBh6C,GACjC,IAAIw6C,EAAWx6C,EAAQy6C,aAAaH,EAAUX,cAE9C,GAAIa,GAAYD,EAAQC,GACtB,OAAOD,EAAQC,GAGjB,IAAIE,GAAQ,EAAIP,EAAa,WAC7Bn6C,EAAQ26C,aAAaL,EAAUX,aAAce,GAC7C,IAAIX,GAAS,EAAIM,EAASO,cAAc56C,GAGxC,OADAu6C,EAAQG,GAASX,EACVA,CACT,EAkBAlgB,EAAQqgB,aAXW,SAAsBH,GACvC,IAAIS,EAAWT,EAAO/5C,QAAQy6C,aAAaH,EAAUX,cAErDI,EAAO/5C,QAAQ66C,gBAAgBP,EAAUX,cAEzCI,EAAOtnD,UAEH+nD,GAAYD,EAAQC,WACfD,EAAQC,EAEnB,qCC3DA3yC,OAAOoxB,eAAeY,EAAS,aAAc,CAC3CrnC,OAAO,IAETqnC,EAAQ+gB,kBAAe,EACvB,IAAIE,EAAU,EAAQ,OAClBC,EAAkB,EAAQ,OAW1BH,EAAyC,oBAAnBI,eAAiCD,EAAgBH,aAAeE,EAAQF,aAClG/gB,EAAQ+gB,aAAeA,sCCjBvB/yC,OAAOoxB,eAAeY,EAAS,aAAc,CAC3CrnC,OAAO,IAETqnC,EAAQ+gB,kBAAe,EACvB,IAEgCx2B,EAF5B62B,GAE4B72B,EAFO,EAAQ,SAG/BA,EAAIg2B,WAAah2B,EAAM,CACnC,QAAWA,GAHXk2B,EAAY,EAAQ,OAkHxBzgB,EAAQ+gB,aAvGW,SAAsB56C,GACvC,IAAI+5C,OAASjzB,EAETo0B,EAAY,GAwCZC,GAAiB,EAAIF,EAAmB,UAAG,WAE7CC,EAAUziD,SAAQ,SAAU2iD,GAC1BA,EAASp7C,EACX,GACF,IAmBIvN,EAAU,WACRsnD,GAAUA,EAAOt6C,aACfs6C,EAAOsB,iBAETtB,EAAOsB,gBAAgBC,YAAYpgD,oBAAoB,SAAUigD,GAGnEpB,EAAOt6C,WAAWC,YAAYq6C,GAE9BA,OAASjzB,EACTo0B,EAAY,GAEhB,EAiBA,MAAO,CACLl7C,QAASA,EACTvM,KA5CS,SAAcy1C,GAElB6Q,IACHA,EAhDY,WAE6B,WAAvCwB,iBAAiBv7C,GAASw7C,WAC5Bx7C,EAAQ7D,MAAMq/C,SAAW,YAE3B,IAAIp3B,EAAMppB,SAAS+Z,cAAc,UAuBjC,OAtBAqP,EAAIq3B,OAAS,WACXr3B,EAAIi3B,gBAAgBC,YAAYvgD,iBAAiB,SAAUogD,GAE3DA,GACF,EACA/2B,EAAIjoB,MAAMu/C,QAAU,QACpBt3B,EAAIjoB,MAAMq/C,SAAW,WACrBp3B,EAAIjoB,MAAMmD,IAAM,IAChB8kB,EAAIjoB,MAAMkD,KAAO,IACjB+kB,EAAIjoB,MAAMkC,OAAS,OACnB+lB,EAAIjoB,MAAMiC,MAAQ,OAClBgmB,EAAIjoB,MAAMw/C,SAAW,SACrBv3B,EAAIjoB,MAAMy/C,cAAgB,OAC1Bx3B,EAAIjoB,MAAM2I,OAAS,KACnBsf,EAAIjoB,MAAM6I,QAAU,IACpBof,EAAIu2B,aAAa,QAASL,EAAUZ,iBACpCt1B,EAAIu2B,aAAa,WAAYL,EAAUb,gBACvCr1B,EAAIprB,KAAO,YAEXgH,EAAQhC,YAAYomB,GAEpBA,EAAIrO,KAAO,cACJqO,CACT,CAmBay3B,KAEoB,IAA3BX,EAAU33C,QAAQ2lC,IACpBgS,EAAUtqD,KAAKs4C,EAEnB,EAqCEz2C,QAASA,EACTwnD,OAfW,SAAgB/Q,GAC3B,IAAI3T,EAAM2lB,EAAU33C,QAAQ2lC,IACf,IAAT3T,GACF2lB,EAAUzpD,OAAO8jC,EAAK,GAIC,IAArB2lB,EAAUhqD,QAAgB6oD,GAC5BtnD,GAEJ,EAOF,sCCtHAoV,OAAOoxB,eAAeY,EAAS,aAAc,CAC3CrnC,OAAO,IAETqnC,EAAQ+gB,kBAAe,EACvB,IACgCx2B,EAD5B62B,GAC4B72B,EADO,EAAQ,SAE/BA,EAAIg2B,WAAah2B,EAAM,CACnC,QAAWA,GAgFfyV,EAAQ+gB,aAxEW,SAAsB56C,GACvC,IAAI+5C,OAASjzB,EAETo0B,EAAY,GAKZC,GAAiB,EAAIF,EAAmB,UAAG,WAE7CC,EAAUziD,SAAQ,SAAU2iD,GAC1BA,EAASp7C,EACX,GACF,IA+BIvN,EAAU,WACZsnD,EAAO+B,aACPZ,EAAY,GACZnB,OAASjzB,CACX,EAiBA,MAAO,CACL9mB,QAASA,EACTvM,KAnCS,SAAcy1C,GAbT,IACV/6B,EAaC4rC,KAbD5rC,EAAI,IAAI6sC,eAAeG,IAEzBY,QAAQ/7C,GAEVm7C,IAUEpB,EATK5rC,IAWwB,IAA3B+sC,EAAU33C,QAAQ2lC,IACpBgS,EAAUtqD,KAAKs4C,EAEnB,EA6BEz2C,QAASA,EACTwnD,OAfW,SAAgB/Q,GAC3B,IAAI3T,EAAM2lB,EAAU33C,QAAQ2lC,IACf,IAAT3T,GACF2lB,EAAUzpD,OAAO8jC,EAAK,GAIC,IAArB2lB,EAAUhqD,QAAgB6oD,GAC5BtnD,GAEJ,EAOF,uQCxEA,IAAIupD,EAAiB,SAAuB5lC,EAAG9C,GAQ7C,OAPA0oC,EAAiBn0C,OAAOo0C,gBAAkB,CACxCC,UAAW,cACAprB,OAAS,SAAU1a,EAAG9C,GACjC8C,EAAE8lC,UAAY5oC,CAChB,GAAK,SAAU8C,EAAG9C,GAChB,IAAK,IAAI7E,KAAK6E,EAAOzL,OAAOtX,UAAUqX,eAAe3V,KAAKqhB,EAAG7E,KAAI2H,EAAE3H,GAAK6E,EAAE7E,GAC5E,EACOutC,EAAe5lC,EAAG9C,EAC3B,EACO,SAAS6oC,EAAU/lC,EAAG9C,GAC3B,GAAiB,mBAANA,GAA0B,OAANA,EAAY,MAAM,IAAIle,UAAU,uBAAyB4gB,OAAO1C,GAAK,iCAEpG,SAAS8oC,IACP/rD,KAAK8E,YAAcihB,CACrB,CAHA4lC,EAAe5lC,EAAG9C,GAIlB8C,EAAE7lB,UAAkB,OAAN+iB,EAAazL,OAAO0wB,OAAOjlB,IAAM8oC,EAAG7rD,UAAY+iB,EAAE/iB,UAAW,IAAI6rD,EACjF,CACA,IAAIC,EAAU,WAQZ,OAPAA,EAAUx0C,OAAO89B,QAAU,SAAkBvxC,GAC3C,IAAK,IAAI+Z,EAAG5c,EAAI,EAAG0tB,EAAIhuB,UAAUC,OAAQK,EAAI0tB,EAAG1tB,IAE9C,IAAK,IAAIkd,KADTN,EAAIld,UAAUM,GACOsW,OAAOtX,UAAUqX,eAAe3V,KAAKkc,EAAGM,KAAIra,EAAEqa,GAAKN,EAAEM,IAE5E,OAAOra,CACT,EACOioD,EAAQ3qD,MAAMrB,KAAMY,UAC7B,EAEO,SAASqrD,EAAOnuC,EAAG5Z,GACxB,IAAIH,EAAI,CAAC,EACT,IAAK,IAAIqa,KAAKN,EAAOtG,OAAOtX,UAAUqX,eAAe3V,KAAKkc,EAAGM,IAAMla,EAAEgP,QAAQkL,GAAK,IAAGra,EAAEqa,GAAKN,EAAEM,IAC9F,GAAS,MAALN,GAAqD,mBAAjCtG,OAAO+wB,sBAA2C,KAAIrnC,EAAI,EAAb,IAAgBkd,EAAI5G,OAAO+wB,sBAAsBzqB,GAAI5c,EAAIkd,EAAEvd,OAAQK,IAClIgD,EAAEgP,QAAQkL,EAAEld,IAAM,GAAKsW,OAAOtX,UAAUgsD,qBAAqBtqD,KAAKkc,EAAGM,EAAEld,MAAK6C,EAAEqa,EAAEld,IAAM4c,EAAEM,EAAEld,IADuB,CAGvH,OAAO6C,CACT,CAyEO,SAASooD,EAAUC,EAASC,EAAYC,EAAGC,GAMhD,OAAO,IAAKD,IAAMA,EAAI1lB,WAAU,SAAUS,EAASC,GACjD,SAASklB,EAAUrqD,GACjB,IACEslD,EAAK8E,EAAUh3B,KAAKpzB,GACtB,CAAE,MAAO+B,GACPojC,EAAOpjC,EACT,CACF,CACA,SAASuoD,EAAStqD,GAChB,IACEslD,EAAK8E,EAAiB,MAAEpqD,GAC1B,CAAE,MAAO+B,GACPojC,EAAOpjC,EACT,CACF,CACA,SAASujD,EAAK70C,GApBhB,IAAezQ,EAqBXyQ,EAAO0lC,KAAOjR,EAAQz0B,EAAOzQ,QArBlBA,EAqBiCyQ,EAAOzQ,MApB9CA,aAAiBmqD,EAAInqD,EAAQ,IAAImqD,GAAE,SAAUjlB,GAClDA,EAAQllC,EACV,KAkB4DolC,KAAKilB,EAAWC,EAC5E,CACAhF,GAAM8E,EAAYA,EAAUlrD,MAAM+qD,EAASC,GAAc,KAAK92B,OAChE,GACF,CACO,SAASm3B,EAAYN,EAASO,GACnC,IASEtpD,EACA6H,EACAnH,EACAywC,EAZE9N,EAAI,CACJkmB,MAAO,EACPC,KAAM,WACJ,GAAW,EAAP9oD,EAAE,GAAQ,MAAMA,EAAE,GACtB,OAAOA,EAAE,EACX,EACA+oD,KAAM,GACNC,IAAK,IAMT,OAAOvY,EAAI,CACTjf,KAAMy3B,EAAK,GACX,MAASA,EAAK,GACd,OAAUA,EAAK,IACI,mBAAX5U,SAA0B5D,EAAE4D,OAAOC,UAAY,WACvD,OAAOr4C,IACT,GAAIw0C,EACJ,SAASwY,EAAKp+B,GACZ,OAAO,SAAU3c,GACf,OAGJ,SAAcg7C,GACZ,GAAI5pD,EAAG,MAAM,IAAI0B,UAAU,mCAC3B,KAAOyvC,IAAMA,EAAI,EAAGyY,EAAG,KAAOvmB,EAAI,IAAKA,OACrC,GAAIrjC,EAAI,EAAG6H,IAAMnH,EAAY,EAARkpD,EAAG,GAAS/hD,EAAU,OAAI+hD,EAAG,GAAK/hD,EAAS,SAAOnH,EAAImH,EAAU,SAAMnH,EAAEnC,KAAKsJ,GAAI,GAAKA,EAAEqqB,SAAWxxB,EAAIA,EAAEnC,KAAKsJ,EAAG+hD,EAAG,KAAK3U,KAAM,OAAOv0C,EAE3J,OADImH,EAAI,EAAGnH,IAAGkpD,EAAK,CAAS,EAARA,EAAG,GAAQlpD,EAAE5B,QACzB8qD,EAAG,IACT,KAAK,EACL,KAAK,EACHlpD,EAAIkpD,EACJ,MACF,KAAK,EAEH,OADAvmB,EAAEkmB,QACK,CACLzqD,MAAO8qD,EAAG,GACV3U,MAAM,GAEV,KAAK,EACH5R,EAAEkmB,QACF1hD,EAAI+hD,EAAG,GACPA,EAAK,CAAC,GACN,SACF,KAAK,EACHA,EAAKvmB,EAAEqmB,IAAI9lC,MACXyf,EAAEomB,KAAK7lC,MACP,SACF,QACE,KAAMljB,EAAI2iC,EAAEomB,MAAM/oD,EAAIA,EAAElD,OAAS,GAAKkD,EAAEA,EAAElD,OAAS,KAAkB,IAAVosD,EAAG,IAAsB,IAAVA,EAAG,IAAW,CACtFvmB,EAAI,EACJ,QACF,CACA,GAAc,IAAVumB,EAAG,MAAclpD,GAAKkpD,EAAG,GAAKlpD,EAAE,IAAMkpD,EAAG,GAAKlpD,EAAE,IAAK,CACvD2iC,EAAEkmB,MAAQK,EAAG,GACb,KACF,CACA,GAAc,IAAVA,EAAG,IAAYvmB,EAAEkmB,MAAQ7oD,EAAE,GAAI,CACjC2iC,EAAEkmB,MAAQ7oD,EAAE,GACZA,EAAIkpD,EACJ,KACF,CACA,GAAIlpD,GAAK2iC,EAAEkmB,MAAQ7oD,EAAE,GAAI,CACvB2iC,EAAEkmB,MAAQ7oD,EAAE,GACZ2iC,EAAEqmB,IAAIxsD,KAAK0sD,GACX,KACF,CACIlpD,EAAE,IAAI2iC,EAAEqmB,IAAI9lC,MAChByf,EAAEomB,KAAK7lC,MACP,SAEJgmC,EAAKN,EAAK/qD,KAAKwqD,EAAS1lB,EAC1B,CAAE,MAAOxiC,GACP+oD,EAAK,CAAC,EAAG/oD,GACTgH,EAAI,CACN,CAAE,QACA7H,EAAIU,EAAI,CACV,CACA,GAAY,EAARkpD,EAAG,GAAQ,MAAMA,EAAG,GACxB,MAAO,CACL9qD,MAAO8qD,EAAG,GAAKA,EAAG,QAAK,EACvB3U,MAAM,EAEV,CA/DWmP,CAAK,CAAC74B,EAAG3c,GAClB,CACF,CA8DF,CAC6BuF,OAAO0wB,OAmB7B,SAASglB,EAAS9nC,GACvB,IAAItH,EAAsB,mBAAXs6B,QAAyBA,OAAOC,SAC7CtiC,EAAI+H,GAAKsH,EAAEtH,GACX5c,EAAI,EACN,GAAI6U,EAAG,OAAOA,EAAEnU,KAAKwjB,GACrB,GAAIA,GAAyB,iBAAbA,EAAEvkB,OAAqB,MAAO,CAC5C00B,KAAM,WAEJ,OADInQ,GAAKlkB,GAAKkkB,EAAEvkB,SAAQukB,OAAI,GACrB,CACLjjB,MAAOijB,GAAKA,EAAElkB,KACdo3C,MAAOlzB,EAEX,GAEF,MAAM,IAAIrgB,UAAU+Y,EAAI,0BAA4B,kCACtD,CACO,SAASqvC,EAAO/nC,EAAGwJ,GACxB,IAAI7Y,EAAsB,mBAAXqiC,QAAyBhzB,EAAEgzB,OAAOC,UACjD,IAAKtiC,EAAG,OAAOqP,EACf,IACElG,EAEAhb,EAHEhD,EAAI6U,EAAEnU,KAAKwjB,GAEbq5B,EAAK,GAEP,IACE,WAAc,IAAN7vB,GAAgBA,KAAM,MAAQ1P,EAAIhe,EAAEq0B,QAAQ+iB,MAAMmG,EAAGl+C,KAAK2e,EAAE/c,MACtE,CAAE,MAAOirD,GACPlpD,EAAI,CACFkpD,MAAOA,EAEX,CAAE,QACA,IACMluC,IAAMA,EAAEo5B,OAASviC,EAAI7U,EAAU,SAAI6U,EAAEnU,KAAKV,EAChD,CAAE,QACA,GAAIgD,EAAG,MAAMA,EAAEkpD,KACjB,CACF,CACA,OAAO3O,CACT,CASO,SAAS4O,IACd,IAAK,IAAIvvC,EAAI,EAAG5c,EAAI,EAAGosD,EAAK1sD,UAAUC,OAAQK,EAAIosD,EAAIpsD,IAAK4c,GAAKld,UAAUM,GAAGL,OACxE,IAAIqe,EAAIuhB,MAAM3iB,GAAIpX,EAAI,EAA3B,IAA8BxF,EAAI,EAAGA,EAAIosD,EAAIpsD,IAAK,IAAK,IAAIid,EAAIvd,UAAUM,GAAIgG,EAAI,EAAGqmD,EAAKpvC,EAAEtd,OAAQqG,EAAIqmD,EAAIrmD,IAAKR,IAAKwY,EAAExY,GAAKyX,EAAEjX,GAC9H,OAAOgY,CACT,CACO,SAASq/B,EAAchlB,EAAID,EAAMklB,GACtC,GAAIA,GAA6B,IAArB59C,UAAUC,OAAc,IAAK,IAA4B49C,EAAxBv9C,EAAI,EAAGokB,EAAIgU,EAAKz4B,OAAYK,EAAIokB,EAAGpkB,KAC1Eu9C,GAAQv9C,KAAKo4B,IACVmlB,IAAIA,EAAKhe,MAAMvgC,UAAU8mB,MAAMplB,KAAK03B,EAAM,EAAGp4B,IAClDu9C,EAAGv9C,GAAKo4B,EAAKp4B,IAGjB,OAAOq4B,EAAGhmB,OAAOkrC,GAAMhe,MAAMvgC,UAAU8mB,MAAMplB,KAAK03B,GACpD,CAyFyB9hB,OAAO0wB,OA4DkB,mBAApBslB,iBAAiCA,oDCld/D,IAAIC,EAAc,EAAQ,MACtBC,EAAW,EAAQ,OAEnBj8B,EAAQxX,KAAKwX,MACb0J,EAASsyB,EAAY,GAAGtyB,QACxBvV,EAAU6nC,EAAY,GAAG7nC,SACzB+nC,EAAcF,EAAY,GAAGzmC,OAE7B4mC,EAAuB,8BACvBC,EAAgC,sBAIpCtkB,EAAOC,QAAU,SAAUsW,EAASpe,EAAKypB,EAAU2C,EAAUC,EAAeC,GAC1E,IAAIC,EAAU9C,EAAWrL,EAAQj/C,OAC7BkV,EAAI+3C,EAASjtD,OACb2nC,EAAUqlB,EAKd,YAJsBp3B,IAAlBs3B,IACFA,EAAgBL,EAASK,GACzBvlB,EAAUolB,GAELhoC,EAAQooC,EAAaxlB,GAAS,SAAUvN,EAAOizB,GACpD,IAAI15C,EACJ,OAAQ2mB,EAAO+yB,EAAI,IACjB,IAAK,IAAK,MAAO,IACjB,IAAK,IAAK,OAAOpO,EACjB,IAAK,IAAK,OAAO6N,EAAYjsB,EAAK,EAAGypB,GACrC,IAAK,IAAK,OAAOwC,EAAYjsB,EAAKusB,GAClC,IAAK,IACHz5C,EAAUu5C,EAAcJ,EAAYO,EAAI,GAAI,IAC5C,MACF,QACE,IAAIt/B,GAAKs/B,EACT,GAAU,IAANt/B,EAAS,OAAOqM,EACpB,GAAIrM,EAAI7Y,EAAG,CACT,IAAI1S,EAAIouB,EAAM7C,EAAI,IAClB,OAAU,IAANvrB,EAAgB43B,EAChB53B,GAAK0S,OAA8B0gB,IAApBq3B,EAASzqD,EAAI,GAAmB83B,EAAO+yB,EAAI,GAAKJ,EAASzqD,EAAI,GAAK83B,EAAO+yB,EAAI,GACzFjzB,CACT,CACAzmB,EAAUs5C,EAASl/B,EAAI,GAE3B,YAAmB6H,IAAZjiB,EAAwB,GAAKA,CACtC,GACF,sCC5CA,IAAI25C,EAAW,EAAQ,OACnBC,EAAU,EAAQ,OAGlBC,EAFkB,EAAQ,KAElBC,CAAgB,SAI5B/kB,EAAOC,QAAU,SAAU+kB,GACzB,IAAIC,EACJ,OAAOL,EAASI,UAAmC93B,KAA1B+3B,EAAWD,EAAGF,MAA0BG,EAA0B,UAAfJ,EAAQG,GACtF,sCCXA,IAAIE,EAAW,EAAQ,OAIvBllB,EAAOC,QAAU,WACf,IAAIklB,EAAOD,EAASzuD,MAChB4S,EAAS,GASb,OARI87C,EAAKC,aAAY/7C,GAAU,KAC3B87C,EAAKvlB,SAAQv2B,GAAU,KACvB87C,EAAKtlB,aAAYx2B,GAAU,KAC3B87C,EAAKrlB,YAAWz2B,GAAU,KAC1B87C,EAAKE,SAAQh8C,GAAU,KACvB87C,EAAKG,UAASj8C,GAAU,KACxB87C,EAAKI,cAAal8C,GAAU,KAC5B87C,EAAKK,SAAQn8C,GAAU,KACpBA,CACT,sCChBA,IAAIhR,EAAO,EAAQ,OACfotD,EAAS,EAAQ,OACjBC,EAAgB,EAAQ,OACxBC,EAAc,EAAQ,OAEtBC,EAAkBrqC,OAAO5kB,UAE7BqpC,EAAOC,QAAU,SAAU4lB,GACzB,IAAIlmB,EAAQkmB,EAAElmB,MACd,YAAiBzS,IAAVyS,GAAyB,UAAWimB,GAAqBH,EAAOI,EAAG,WAAYH,EAAcE,EAAiBC,GAC1FlmB,EAAvBtnC,EAAKstD,EAAaE,EACxB,sCCXA,IAAIhB,EAAU,EAAQ,OAElBiB,EAAU1pC,OAEd4jB,EAAOC,QAAU,SAAU8lB,GACzB,GAA0B,WAAtBlB,EAAQkB,GAAwB,MAAMvqD,UAAU,6CACpD,OAAOsqD,EAAQC,EACjB,sCCPA,IAAIC,EAAI,EAAQ,OACZC,EAAmB,EAAQ,MAC3B9B,EAAW,EAAQ,OACnB+B,EAAoB,EAAQ,OAC5BC,EAAsB,EAAQ,OAC9BC,EAAqB,EAAQ,OAIjCJ,EAAE,CAAE7mD,OAAQ,QAASs4B,OAAO,GAAQ,CAClC4uB,KAAM,WACJ,IAAIC,EAAWjvD,UAAUC,OAASD,UAAU,QAAK61B,EAC7Cq5B,EAAIpC,EAAS1tD,MACbsxB,EAAYm+B,EAAkBK,GAC9BC,EAAIJ,EAAmBG,EAAG,GAE9B,OADAC,EAAElvD,OAAS2uD,EAAiBO,EAAGD,EAAGA,EAAGx+B,EAAW,OAAgBmF,IAAbo5B,EAAyB,EAAIH,EAAoBG,IAC7FE,CACT,wCCfqB,EAAQ,MAG/BC,CAAiB,4CCLjB,IAAIT,EAAI,EAAQ,OAGZU,EAASh2C,KAAKoe,MACdhY,EAAMpG,KAAKoG,IACXzD,EAAO3C,KAAK2C,KAQhB2yC,EAAE,CAAE7mD,OAAQ,OAAQwnD,MAAM,EAAMC,MAAO,EAAGC,SAJ3BH,GAAUA,EAAO1rD,IAAUgwC,OAAShwC,KAIS,CAE1D8zB,MAAO,SAAeg4B,EAAQC,GAM5B,IALA,IAII9T,EAAK+T,EAJLnkC,EAAM,EACNlrB,EAAI,EACJsvD,EAAO5vD,UAAUC,OACjB4vD,EAAO,EAEJvvD,EAAIsvD,GAELC,GADJjU,EAAMn8B,EAAIzf,UAAUM,QAGlBkrB,EAAMA,GADNmkC,EAAME,EAAOjU,GACK+T,EAAM,EACxBE,EAAOjU,GAGPpwB,GAFSowB,EAAM,GACf+T,EAAM/T,EAAMiU,GACCF,EACD/T,EAEhB,OAAOiU,IAASlsD,IAAWA,IAAWksD,EAAO7zC,EAAKwP,EACpD,wCCjCF,IAAImjC,EAAI,EAAQ,OACZ3tD,EAAO,EAAQ,OACf6rD,EAAc,EAAQ,MACtBiD,EAAyB,EAAQ,OACjCC,EAAa,EAAQ,OACrBC,EAAoB,EAAQ,OAC5BpC,EAAW,EAAQ,OACnB5rC,EAAW,EAAQ,OACnB3D,EAAY,EAAQ,OACpB4xC,EAAiB,EAAQ,OACzBC,EAAkB,EAAQ,OAC1BxC,EAAkB,EAAQ,MAC1ByC,EAAU,EAAQ,OAElBC,EAAU1C,EAAgB,WAC1B2C,EAAalsD,UACbmO,EAAUu6C,EAAY,GAAGv6C,SACzB0S,EAAU6nC,EAAY,GAAG7nC,SACzB+nC,EAAcF,EAAY,GAAGzmC,OAC7B7M,EAAMF,KAAKE,IAEX+2C,EAAgB,SAAU3K,EAAQ4K,EAAahwB,GACjD,OAAIA,EAAYolB,EAAO1lD,QAAgB,EACnB,KAAhBswD,EAA2BhwB,EACxBjuB,EAAQqzC,EAAQ4K,EAAahwB,EACtC,EAIAouB,EAAE,CAAE7mD,OAAQ,SAAUs4B,OAAO,GAAQ,CACnCowB,WAAY,SAAoBD,EAAaE,GAC3C,IACIC,EAAYpoB,EAAO6c,EAAUQ,EAAQgL,EAAcC,EAAmBC,EAAcC,EAAW1D,EAD/F8B,EAAIY,EAAuB1wD,MAE3BmrD,EAAW,EACXwG,EAAiB,EACjB/+C,EAAS,GACb,IAAKg+C,EAAkBO,GAAc,CAEnC,IADAG,EAAa9C,EAAS2C,MAEpBjoB,EAAQtmB,EAAS8tC,EAAuBG,EAAeM,OACjDj+C,EAAQg2B,EAAO,MAAM,MAAM+nB,EAAW,mDAG9C,GADAlL,EAAW9mC,EAAUkyC,EAAaH,GAEhC,OAAOpvD,EAAKmkD,EAAUoL,EAAarB,EAAGuB,GACjC,GAAIN,GAAWO,EACpB,OAAO1rC,EAAQhD,EAASktC,GAAIqB,EAAaE,EAE7C,CAQA,IAPA9K,EAAS3jC,EAASktC,GAClByB,EAAe3uC,EAASuuC,IACxBK,EAAoBb,EAAWU,MACPA,EAAezuC,EAASyuC,IAChDI,EAAeF,EAAa1wD,OAC5B6wD,EAAYv3C,EAAI,EAAGs3C,GACnBtG,EAAW+F,EAAc3K,EAAQgL,EAAc,IAC1B,IAAdpG,GACL6C,EAAcwD,EACV5uC,EAASyuC,EAAaE,EAAcpG,EAAU5E,IAC9CuK,EAAgBS,EAAchL,EAAQ4E,EAAU,QAAI10B,EAAW46B,GACnEz+C,GAAU+6C,EAAYpH,EAAQoL,EAAgBxG,GAAY6C,EAC1D2D,EAAiBxG,EAAWsG,EAC5BtG,EAAW+F,EAAc3K,EAAQgL,EAAcpG,EAAWuG,GAK5D,OAHIC,EAAiBpL,EAAO1lD,SAC1B+R,GAAU+6C,EAAYpH,EAAQoL,IAEzB/+C,CACT,wCCnEF,EAAQ,8yhBCDJg/C,EAAY,CAAC,QAAS,WAuB1B,IACA,EADiB,cArBjB,SAA+BC,EAAMC,GACnC,IAAIC,EAAQF,EAAKE,MACfC,EAAUH,EAAKG,QACf36C,GAAQ,OAAyBw6C,EAAMD,GACzC,OAAoB,gBAAoB,MAAOp6C,OAAO89B,OAAO,CAC3D2c,MAAO,6BACPrW,KAAM,OACNsW,QAAS,YACTC,YAAa,IACbhxC,OAAQ,eACR,cAAe,OACfixC,IAAKN,EACL,kBAAmBE,GAClB36C,GAAQ06C,EAAqB,gBAAoB,QAAS,CAC3Dr+C,GAAIs+C,GACHD,GAAS,KAAmB,gBAAoB,OAAQ,CACzDM,cAAe,QACfC,eAAgB,QAChBvsC,EAAG,6EAEP,0BCtBI,EAAY,CAAC,QAAS,WAuB1B,IACA,EADiB,cArBjB,SAA6B8rC,EAAMC,GACjC,IAAIC,EAAQF,EAAKE,MACfC,EAAUH,EAAKG,QACf36C,GAAQ,OAAyBw6C,EAAM,GACzC,OAAoB,gBAAoB,MAAOr6C,OAAO89B,OAAO,CAC3D2c,MAAO,6BACPrW,KAAM,OACNsW,QAAS,YACTC,YAAa,IACbhxC,OAAQ,eACR,cAAe,OACfixC,IAAKN,EACL,kBAAmBE,GAClB36C,GAAQ06C,EAAqB,gBAAoB,QAAS,CAC3Dr+C,GAAIs+C,GACHD,GAAS,KAAmB,gBAAoB,OAAQ,CACzDM,cAAe,QACfC,eAAgB,QAChBvsC,EAAG,qJAEP,ICtBI,EAAY,CAAC,QAAS,WAuB1B,IACA,EADiB,cArBjB,SAAmB8rC,EAAMC,GACvB,IAAIC,EAAQF,EAAKE,MACfC,EAAUH,EAAKG,QACf36C,GAAQ,OAAyBw6C,EAAM,GACzC,OAAoB,gBAAoB,MAAOr6C,OAAO89B,OAAO,CAC3D2c,MAAO,6BACPrW,KAAM,OACNsW,QAAS,YACTC,YAAa,IACbhxC,OAAQ,eACR,cAAe,OACfixC,IAAKN,EACL,kBAAmBE,GAClB36C,GAAQ06C,EAAqB,gBAAoB,QAAS,CAC3Dr+C,GAAIs+C,GACHD,GAAS,KAAmB,gBAAoB,OAAQ,CACzDM,cAAe,QACfC,eAAgB,QAChBvsC,EAAG,mWAEP,0JCtBe,SAASwsC,KAEtBA,GAAsB,WACpB,OAAO/oB,CACT,EACA,IAAIA,EAAU,CAAC,EACbgpB,EAAKh7C,OAAOtX,UACZ8uD,EAASwD,EAAGj7C,eACZqxB,EAAiBpxB,OAAOoxB,gBAAkB,SAAU7U,EAAK8M,EAAK4xB,GAC5D1+B,EAAI8M,GAAO4xB,EAAKtwD,KAClB,EACAuwD,EAAU,mBAAqBta,OAASA,OAAS,CAAC,EAClDua,EAAiBD,EAAQra,UAAY,aACrCua,EAAsBF,EAAQG,eAAiB,kBAC/CC,EAAoBJ,EAAQK,aAAe,gBAC7C,SAASC,EAAOj/B,EAAK8M,EAAK1+B,GACxB,OAAOqV,OAAOoxB,eAAe7U,EAAK8M,EAAK,CACrC1+B,MAAOA,EACPwmC,YAAY,EACZsqB,cAAc,EACdC,UAAU,IACRn/B,EAAI8M,EACV,CACA,IACEmyB,EAAO,CAAC,EAAG,GACb,CAAE,MAAOxrB,GACPwrB,EAAS,SAAgBj/B,EAAK8M,EAAK1+B,GACjC,OAAO4xB,EAAI8M,GAAO1+B,CACpB,CACF,CACA,SAASgxD,EAAKC,EAASC,EAAS3M,EAAM4M,GACpC,IAAIC,EAAiBF,GAAWA,EAAQnzD,qBAAqBszD,EAAYH,EAAUG,EACjFjH,EAAY/0C,OAAO0wB,OAAOqrB,EAAerzD,WACzCizB,EAAU,IAAIsgC,EAAQH,GAAe,IACvC,OAAO1qB,EAAe2jB,EAAW,UAAW,CAC1CpqD,MAAOuxD,EAAiBN,EAAS1M,EAAMvzB,KACrCo5B,CACN,CACA,SAASoH,EAAStgD,EAAI0gB,EAAKyoB,GACzB,IACE,MAAO,CACL7zC,KAAM,SACN6zC,IAAKnpC,EAAGzR,KAAKmyB,EAAKyoB,GAEtB,CAAE,MAAOhV,GACP,MAAO,CACL7+B,KAAM,QACN6zC,IAAKhV,EAET,CACF,CACAgC,EAAQ2pB,KAAOA,EACf,IAAIS,EAAmB,CAAC,EACxB,SAASJ,IAAa,CACtB,SAASK,IAAqB,CAC9B,SAASC,IAA8B,CACvC,IAAIC,EAAoB,CAAC,EACzBf,EAAOe,EAAmBpB,GAAgB,WACxC,OAAO3yD,IACT,IACA,IAAIg0D,EAAWx8C,OAAOupB,eACpBkzB,EAA0BD,GAAYA,EAASA,EAASxzB,EAAO,MACjEyzB,GAA2BA,IAA4BzB,GAAMxD,EAAOptD,KAAKqyD,EAAyBtB,KAAoBoB,EAAoBE,GAC1I,IAAIC,EAAKJ,EAA2B5zD,UAAYszD,EAAUtzD,UAAYsX,OAAO0wB,OAAO6rB,GACpF,SAASI,EAAsBj0D,GAC7B,CAAC,OAAQ,QAAS,UAAUkI,SAAQ,SAAUuD,GAC5CqnD,EAAO9yD,EAAWyL,GAAQ,SAAU6wC,GAClC,OAAOx8C,KAAKo0D,QAAQzoD,EAAQ6wC,EAC9B,GACF,GACF,CACA,SAAS6X,EAAc9H,EAAW+H,GAChC,SAASC,EAAO5oD,EAAQ6wC,EAAKnV,EAASC,GACpC,IAAIktB,EAASb,EAASpH,EAAU5gD,GAAS4gD,EAAW/P,GACpD,GAAI,UAAYgY,EAAO7rD,KAAM,CAC3B,IAAIiK,EAAS4hD,EAAOhY,IAClBr6C,EAAQyQ,EAAOzQ,MACjB,OAAOA,GAAS,WAAY,QAAQA,IAAU6sD,EAAOptD,KAAKO,EAAO,WAAamyD,EAAYjtB,QAAQllC,EAAMsyD,SAASltB,MAAK,SAAUplC,GAC9HoyD,EAAO,OAAQpyD,EAAOklC,EAASC,EACjC,IAAG,SAAUE,GACX+sB,EAAO,QAAS/sB,EAAKH,EAASC,EAChC,IAAKgtB,EAAYjtB,QAAQllC,GAAOolC,MAAK,SAAUmtB,GAC7C9hD,EAAOzQ,MAAQuyD,EAAWrtB,EAAQz0B,EACpC,IAAG,SAAUw6C,GACX,OAAOmH,EAAO,QAASnH,EAAO/lB,EAASC,EACzC,GACF,CACAA,EAAOktB,EAAOhY,IAChB,CACA,IAAImY,EACJ/rB,EAAe5oC,KAAM,UAAW,CAC9BmC,MAAO,SAAewJ,EAAQ6wC,GAC5B,SAASoY,IACP,OAAO,IAAIN,GAAY,SAAUjtB,EAASC,GACxCitB,EAAO5oD,EAAQ6wC,EAAKnV,EAASC,EAC/B,GACF,CACA,OAAOqtB,EAAkBA,EAAkBA,EAAgBptB,KAAKqtB,EAA4BA,GAA8BA,GAC5H,GAEJ,CACA,SAASlB,EAAiBN,EAAS1M,EAAMvzB,GACvC,IAAIowB,EAAQ,iBACZ,OAAO,SAAU53C,EAAQ6wC,GACvB,GAAI,cAAgB+G,EAAO,MAAM,IAAItb,MAAM,gCAC3C,GAAI,cAAgBsb,EAAO,CACzB,GAAI,UAAY53C,EAAQ,MAAM6wC,EAC9B,OAAOqY,GACT,CACA,IAAK1hC,EAAQxnB,OAASA,EAAQwnB,EAAQqpB,IAAMA,IAAO,CACjD,IAAIsY,EAAW3hC,EAAQ2hC,SACvB,GAAIA,EAAU,CACZ,IAAIC,EAAiBC,EAAoBF,EAAU3hC,GACnD,GAAI4hC,EAAgB,CAClB,GAAIA,IAAmBnB,EAAkB,SACzC,OAAOmB,CACT,CACF,CACA,GAAI,SAAW5hC,EAAQxnB,OAAQwnB,EAAQ05B,KAAO15B,EAAQ8hC,MAAQ9hC,EAAQqpB,SAAS,GAAI,UAAYrpB,EAAQxnB,OAAQ,CAC7G,GAAI,mBAAqB43C,EAAO,MAAMA,EAAQ,YAAapwB,EAAQqpB,IACnErpB,EAAQ+hC,kBAAkB/hC,EAAQqpB,IACpC,KAAO,WAAarpB,EAAQxnB,QAAUwnB,EAAQgiC,OAAO,SAAUhiC,EAAQqpB,KACvE+G,EAAQ,YACR,IAAIiR,EAASb,EAASP,EAAS1M,EAAMvzB,GACrC,GAAI,WAAaqhC,EAAO7rD,KAAM,CAC5B,GAAI46C,EAAQpwB,EAAQmlB,KAAO,YAAc,iBAAkBkc,EAAOhY,MAAQoX,EAAkB,SAC5F,MAAO,CACLzxD,MAAOqyD,EAAOhY,IACdlE,KAAMnlB,EAAQmlB,KAElB,CACA,UAAYkc,EAAO7rD,OAAS46C,EAAQ,YAAapwB,EAAQxnB,OAAS,QAASwnB,EAAQqpB,IAAMgY,EAAOhY,IAClG,CACF,CACF,CACA,SAASwY,EAAoBF,EAAU3hC,GACrC,IAAIiiC,EAAajiC,EAAQxnB,OACvBA,EAASmpD,EAASzc,SAAS+c,GAC7B,QAAI3+B,IAAc9qB,EAAQ,OAAOwnB,EAAQ2hC,SAAW,KAAM,UAAYM,GAAcN,EAASzc,SAAiB,SAAMllB,EAAQxnB,OAAS,SAAUwnB,EAAQqpB,SAAM/lB,EAAWu+B,EAAoBF,EAAU3hC,GAAU,UAAYA,EAAQxnB,SAAW,WAAaypD,IAAejiC,EAAQxnB,OAAS,QAASwnB,EAAQqpB,IAAM,IAAIz3C,UAAU,oCAAsCqwD,EAAa,aAAcxB,EAClY,IAAIY,EAASb,EAAShoD,EAAQmpD,EAASzc,SAAUllB,EAAQqpB,KACzD,GAAI,UAAYgY,EAAO7rD,KAAM,OAAOwqB,EAAQxnB,OAAS,QAASwnB,EAAQqpB,IAAMgY,EAAOhY,IAAKrpB,EAAQ2hC,SAAW,KAAMlB,EACjH,IAAIyB,EAAOb,EAAOhY,IAClB,OAAO6Y,EAAOA,EAAK/c,MAAQnlB,EAAQ2hC,EAASQ,YAAcD,EAAKlzD,MAAOgxB,EAAQoC,KAAOu/B,EAASS,QAAS,WAAapiC,EAAQxnB,SAAWwnB,EAAQxnB,OAAS,OAAQwnB,EAAQqpB,SAAM/lB,GAAYtD,EAAQ2hC,SAAW,KAAMlB,GAAoByB,GAAQliC,EAAQxnB,OAAS,QAASwnB,EAAQqpB,IAAM,IAAIz3C,UAAU,oCAAqCouB,EAAQ2hC,SAAW,KAAMlB,EACrW,CACA,SAAS4B,EAAaC,GACpB,IAAIC,EAAQ,CACVC,OAAQF,EAAK,IAEf,KAAKA,IAASC,EAAME,SAAWH,EAAK,IAAK,KAAKA,IAASC,EAAMG,WAAaJ,EAAK,GAAIC,EAAMI,SAAWL,EAAK,IAAKz1D,KAAK+1D,WAAWx1D,KAAKm1D,EACrI,CACA,SAASM,EAAcN,GACrB,IAAIlB,EAASkB,EAAMO,YAAc,CAAC,EAClCzB,EAAO7rD,KAAO,gBAAiB6rD,EAAOhY,IAAKkZ,EAAMO,WAAazB,CAChE,CACA,SAASf,EAAQH,GACftzD,KAAK+1D,WAAa,CAAC,CACjBJ,OAAQ,SACNrC,EAAYlrD,QAAQotD,EAAcx1D,MAAOA,KAAKk2D,OAAM,EAC1D,CACA,SAAS11B,EAAO21B,GACd,GAAIA,EAAU,CACZ,IAAIC,EAAiBD,EAASxD,GAC9B,GAAIyD,EAAgB,OAAOA,EAAex0D,KAAKu0D,GAC/C,GAAI,mBAAqBA,EAAS5gC,KAAM,OAAO4gC,EAC/C,IAAKj0C,MAAMi0C,EAASt1D,QAAS,CAC3B,IAAIK,GAAK,EACPq0B,EAAO,SAASA,IACd,OAASr0B,EAAIi1D,EAASt1D,QAAS,GAAImuD,EAAOptD,KAAKu0D,EAAUj1D,GAAI,OAAOq0B,EAAKpzB,MAAQg0D,EAASj1D,GAAIq0B,EAAK+iB,MAAO,EAAI/iB,EAC9G,OAAOA,EAAKpzB,WAAQs0B,EAAWlB,EAAK+iB,MAAO,EAAI/iB,CACjD,EACF,OAAOA,EAAKA,KAAOA,CACrB,CACF,CACA,MAAO,CACLA,KAAMs/B,EAEV,CACA,SAASA,IACP,MAAO,CACL1yD,WAAOs0B,EACP6hB,MAAM,EAEV,CACA,OAAOub,EAAkB3zD,UAAY4zD,EAA4BlrB,EAAesrB,EAAI,cAAe,CACjG/xD,MAAO2xD,EACPb,cAAc,IACZrqB,EAAekrB,EAA4B,cAAe,CAC5D3xD,MAAO0xD,EACPZ,cAAc,IACZY,EAAkBwC,YAAcrD,EAAOc,EAA4BhB,EAAmB,qBAAsBtpB,EAAQ8sB,oBAAsB,SAAUC,GACtJ,IAAIC,EAAO,mBAAqBD,GAAUA,EAAOzxD,YACjD,QAAS0xD,IAASA,IAAS3C,GAAqB,uBAAyB2C,EAAKH,aAAeG,EAAKv0D,MACpG,EAAGunC,EAAQitB,KAAO,SAAUF,GAC1B,OAAO/+C,OAAOo0C,eAAiBp0C,OAAOo0C,eAAe2K,EAAQzC,IAA+ByC,EAAO1K,UAAYiI,EAA4Bd,EAAOuD,EAAQzD,EAAmB,sBAAuByD,EAAOr2D,UAAYsX,OAAO0wB,OAAOgsB,GAAKqC,CAC5O,EAAG/sB,EAAQktB,MAAQ,SAAUla,GAC3B,MAAO,CACLiY,QAASjY,EAEb,EAAG2X,EAAsBE,EAAcn0D,WAAY8yD,EAAOqB,EAAcn0D,UAAW0yD,GAAqB,WACtG,OAAO5yD,IACT,IAAIwpC,EAAQ6qB,cAAgBA,EAAe7qB,EAAQmtB,MAAQ,SAAUvD,EAASC,EAAS3M,EAAM4M,EAAagB,QACxG,IAAWA,IAAgBA,EAAc1tB,SACzC,IAAIiT,EAAO,IAAIwa,EAAclB,EAAKC,EAASC,EAAS3M,EAAM4M,GAAcgB,GACxE,OAAO9qB,EAAQ8sB,oBAAoBjD,GAAWxZ,EAAOA,EAAKtkB,OAAOgS,MAAK,SAAU30B,GAC9E,OAAOA,EAAO0lC,KAAO1lC,EAAOzQ,MAAQ03C,EAAKtkB,MAC3C,GACF,EAAG4+B,EAAsBD,GAAKlB,EAAOkB,EAAIpB,EAAmB,aAAcE,EAAOkB,EAAIvB,GAAgB,WACnG,OAAO3yD,IACT,IAAIgzD,EAAOkB,EAAI,YAAY,WACzB,MAAO,oBACT,IAAI1qB,EAAQ5I,KAAO,SAAUv7B,GAC3B,IAAIs/B,EAASntB,OAAOnS,GAClBu7B,EAAO,GACT,IAAK,IAAIC,KAAO8D,EAAQ/D,EAAKrgC,KAAKsgC,GAClC,OAAOD,EAAKhQ,UAAW,SAAS2E,IAC9B,KAAOqL,EAAK//B,QAAS,CACnB,IAAIggC,EAAMD,EAAK3Z,MACf,GAAI4Z,KAAO8D,EAAQ,OAAOpP,EAAKpzB,MAAQ0+B,EAAKtL,EAAK+iB,MAAO,EAAI/iB,CAC9D,CACA,OAAOA,EAAK+iB,MAAO,EAAI/iB,CACzB,CACF,EAAGiU,EAAQhJ,OAASA,EAAQizB,EAAQvzD,UAAY,CAC9C4E,YAAa2uD,EACbyC,MAAO,SAAeU,GACpB,GAAI52D,KAAKs1B,KAAO,EAAGt1B,KAAKu1B,KAAO,EAAGv1B,KAAK6sD,KAAO7sD,KAAKi1D,WAAQx+B,EAAWz2B,KAAKs4C,MAAO,EAAIt4C,KAAK80D,SAAW,KAAM90D,KAAK2L,OAAS,OAAQ3L,KAAKw8C,SAAM/lB,EAAWz2B,KAAK+1D,WAAW3tD,QAAQ4tD,IAAiBY,EAAe,IAAK,IAAI30D,KAAQjC,KAAM,MAAQiC,EAAKk5B,OAAO,IAAM6zB,EAAOptD,KAAK5B,KAAMiC,KAAUigB,OAAOjgB,EAAK+kB,MAAM,MAAQhnB,KAAKiC,QAAQw0B,EACtU,EACAzxB,KAAM,WACJhF,KAAKs4C,MAAO,EACZ,IAAIue,EAAa72D,KAAK+1D,WAAW,GAAGE,WACpC,GAAI,UAAYY,EAAWluD,KAAM,MAAMkuD,EAAWra,IAClD,OAAOx8C,KAAK82D,IACd,EACA5B,kBAAmB,SAA2B6B,GAC5C,GAAI/2D,KAAKs4C,KAAM,MAAMye,EACrB,IAAI5jC,EAAUnzB,KACd,SAASg3D,EAAOC,EAAKC,GACnB,OAAO1C,EAAO7rD,KAAO,QAAS6rD,EAAOhY,IAAMua,EAAW5jC,EAAQoC,KAAO0hC,EAAKC,IAAW/jC,EAAQxnB,OAAS,OAAQwnB,EAAQqpB,SAAM/lB,KAAcygC,CAC5I,CACA,IAAK,IAAIh2D,EAAIlB,KAAK+1D,WAAWl1D,OAAS,EAAGK,GAAK,IAAKA,EAAG,CACpD,IAAIw0D,EAAQ11D,KAAK+1D,WAAW70D,GAC1BszD,EAASkB,EAAMO,WACjB,GAAI,SAAWP,EAAMC,OAAQ,OAAOqB,EAAO,OAC3C,GAAItB,EAAMC,QAAU31D,KAAKs1B,KAAM,CAC7B,IAAI6hC,EAAWnI,EAAOptD,KAAK8zD,EAAO,YAChC0B,EAAapI,EAAOptD,KAAK8zD,EAAO,cAClC,GAAIyB,GAAYC,EAAY,CAC1B,GAAIp3D,KAAKs1B,KAAOogC,EAAME,SAAU,OAAOoB,EAAOtB,EAAME,UAAU,GAC9D,GAAI51D,KAAKs1B,KAAOogC,EAAMG,WAAY,OAAOmB,EAAOtB,EAAMG,WACxD,MAAO,GAAIsB,GACT,GAAIn3D,KAAKs1B,KAAOogC,EAAME,SAAU,OAAOoB,EAAOtB,EAAME,UAAU,OACzD,CACL,IAAKwB,EAAY,MAAM,IAAInvB,MAAM,0CACjC,GAAIjoC,KAAKs1B,KAAOogC,EAAMG,WAAY,OAAOmB,EAAOtB,EAAMG,WACxD,CACF,CACF,CACF,EACAV,OAAQ,SAAgBxsD,EAAM6zC,GAC5B,IAAK,IAAIt7C,EAAIlB,KAAK+1D,WAAWl1D,OAAS,EAAGK,GAAK,IAAKA,EAAG,CACpD,IAAIw0D,EAAQ11D,KAAK+1D,WAAW70D,GAC5B,GAAIw0D,EAAMC,QAAU31D,KAAKs1B,MAAQ05B,EAAOptD,KAAK8zD,EAAO,eAAiB11D,KAAKs1B,KAAOogC,EAAMG,WAAY,CACjG,IAAIwB,EAAe3B,EACnB,KACF,CACF,CACA2B,IAAiB,UAAY1uD,GAAQ,aAAeA,IAAS0uD,EAAa1B,QAAUnZ,GAAOA,GAAO6a,EAAaxB,aAAewB,EAAe,MAC7I,IAAI7C,EAAS6C,EAAeA,EAAapB,WAAa,CAAC,EACvD,OAAOzB,EAAO7rD,KAAOA,EAAM6rD,EAAOhY,IAAMA,EAAK6a,GAAgBr3D,KAAK2L,OAAS,OAAQ3L,KAAKu1B,KAAO8hC,EAAaxB,WAAYjC,GAAoB5zD,KAAKs3D,SAAS9C,EAC5J,EACA8C,SAAU,SAAkB9C,EAAQsB,GAClC,GAAI,UAAYtB,EAAO7rD,KAAM,MAAM6rD,EAAOhY,IAC1C,MAAO,UAAYgY,EAAO7rD,MAAQ,aAAe6rD,EAAO7rD,KAAO3I,KAAKu1B,KAAOi/B,EAAOhY,IAAM,WAAagY,EAAO7rD,MAAQ3I,KAAK82D,KAAO92D,KAAKw8C,IAAMgY,EAAOhY,IAAKx8C,KAAK2L,OAAS,SAAU3L,KAAKu1B,KAAO,OAAS,WAAai/B,EAAO7rD,MAAQmtD,IAAa91D,KAAKu1B,KAAOugC,GAAWlC,CACtQ,EACA2D,OAAQ,SAAgB1B,GACtB,IAAK,IAAI30D,EAAIlB,KAAK+1D,WAAWl1D,OAAS,EAAGK,GAAK,IAAKA,EAAG,CACpD,IAAIw0D,EAAQ11D,KAAK+1D,WAAW70D,GAC5B,GAAIw0D,EAAMG,aAAeA,EAAY,OAAO71D,KAAKs3D,SAAS5B,EAAMO,WAAYP,EAAMI,UAAWE,EAAcN,GAAQ9B,CACrH,CACF,EACA,MAAS,SAAgB+B,GACvB,IAAK,IAAIz0D,EAAIlB,KAAK+1D,WAAWl1D,OAAS,EAAGK,GAAK,IAAKA,EAAG,CACpD,IAAIw0D,EAAQ11D,KAAK+1D,WAAW70D,GAC5B,GAAIw0D,EAAMC,SAAWA,EAAQ,CAC3B,IAAInB,EAASkB,EAAMO,WACnB,GAAI,UAAYzB,EAAO7rD,KAAM,CAC3B,IAAI6uD,EAAShD,EAAOhY,IACpBwZ,EAAcN,EAChB,CACA,OAAO8B,CACT,CACF,CACA,MAAM,IAAIvvB,MAAM,wBAClB,EACAwvB,cAAe,SAAuBtB,EAAUb,EAAYC,GAC1D,OAAOv1D,KAAK80D,SAAW,CACrBzc,SAAU7X,EAAO21B,GACjBb,WAAYA,EACZC,QAASA,GACR,SAAWv1D,KAAK2L,SAAW3L,KAAKw8C,SAAM/lB,GAAYm9B,CACvD,GACCpqB,CACL,CC9SA,SAASkuB,GAAmBC,EAAKtwB,EAASC,EAAQ3jC,EAAOi0D,EAAQ/2B,EAAK2b,GACpE,IACE,IAAI6Y,EAAOsC,EAAI92B,GAAK2b,GAChBr6C,EAAQkzD,EAAKlzD,KACnB,CAAE,MAAOirD,GAEP,YADA9lB,EAAO8lB,EAET,CACIiI,EAAK/c,KACPjR,EAAQllC,GAERykC,QAAQS,QAAQllC,GAAOolC,KAAK5jC,EAAOi0D,EAEvC,CACe,SAASC,GAAkBxkD,GACxC,OAAO,WACL,IAAIqzC,EAAO1mD,KACTU,EAAOE,UACT,OAAO,IAAIgmC,SAAQ,SAAUS,EAASC,GACpC,IAAIqwB,EAAMtkD,EAAGhS,MAAMqlD,EAAMhmD,GACzB,SAASiD,EAAMxB,GACbu1D,GAAmBC,EAAKtwB,EAASC,EAAQ3jC,EAAOi0D,EAAQ,OAAQz1D,EAClE,CACA,SAASy1D,EAAOpwB,GACdkwB,GAAmBC,EAAKtwB,EAASC,EAAQ3jC,EAAOi0D,EAAQ,QAASpwB,EACnE,CACA7jC,OAAM8yB,EACR,GACF,CACF,iBC1BIqhC,GAAW,GAAGvkD,OAFD,ogCAEoB,KAAKA,OADzB,0tBAC4C+V,MAAM,WAG/DyuC,GAAa,QACbC,GAAa,QACjB,SAAS/8B,GAAM4F,EAAK6E,GAClB,OAA+B,IAAxB7E,EAAI3tB,QAAQwyB,EACrB,CAMe,SAASuyB,GAAU5gD,GAChC,IACI6gD,EADAC,EAAWv3D,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,IAAmBA,UAAU,GAG5Es3D,GADe,IAAbC,EACa,CACbC,MAAM,EACN1yC,MAAM,EACNtf,MAAM,IAEc,IAAb+xD,EACM,CACbC,MAAM,IAGO,QAAc,CAAC,EAAGD,GAEnC,IAAI7xD,EAAQ,CAAC,EAYb,OAXAkR,OAAOopB,KAAKvpB,GAAOjP,SAAQ,SAAUy4B,IAGnCq3B,EAAaE,OAAiB,SAARv3B,GAAkB5F,GAAM4F,EAAKk3B,MAEnDG,EAAaxyC,MAAQuV,GAAM4F,EAAKm3B,KAEhCE,EAAa9xD,MAAQ0xD,GAAS3yD,SAAS07B,MACrCv6B,EAAMu6B,GAAOxpB,EAAMwpB,GAEvB,IACOv6B,CACT,CCrCA,SAAS+xD,GAAQC,GACf,IAAIz3C,EAAOy3C,EAAIC,cAAgBD,EAAIE,SACnC,IAAK33C,EACH,OAAOA,EAET,IACE,OAAOmgC,KAAKyF,MAAM5lC,EACpB,CAAE,MAAO3c,GACP,OAAO2c,CACT,CACF,CACe,SAAS43C,GAAOC,GAE7B,IAAIJ,EAAM,IAAIK,eACVD,EAAOE,YAAcN,EAAIG,SAC3BH,EAAIG,OAAOI,WAAa,SAAkB30D,GACpCA,EAAE40D,MAAQ,IACZ50D,EAAE60D,QAAU70D,EAAE80D,OAAS90D,EAAE40D,MAAQ,KAEnCJ,EAAOE,WAAW10D,EACpB,GAGF,IAAI+0D,EAAW,IAAIC,SACfR,EAAOhzC,MACTlO,OAAOopB,KAAK83B,EAAOhzC,MAAMtd,SAAQ,SAAUy4B,GACzC,IAAI1+B,EAAQu2D,EAAOhzC,KAAKmb,GAEpBJ,MAAMC,QAAQv+B,GAChBA,EAAMiG,SAAQ,SAAUqP,GAGtBwhD,EAASE,OAAO,GAAG5lD,OAAOstB,EAAK,MAAOppB,EACxC,IAGFwhD,EAASE,OAAOt4B,EAAK1+B,EACvB,IAGEu2D,EAAOU,gBAAgBC,KACzBJ,EAASE,OAAOT,EAAOY,SAAUZ,EAAOU,KAAMV,EAAOU,KAAKn3D,MAE1Dg3D,EAASE,OAAOT,EAAOY,SAAUZ,EAAOU,MAE1Cd,EAAIiB,QAAU,SAAer1D,GAC3Bw0D,EAAOc,QAAQt1D,EACjB,EACAo0D,EAAIlN,OAAS,WAGX,OAAIkN,EAAImB,OAAS,KAAOnB,EAAImB,QAAU,IAC7Bf,EAAOc,QA5DpB,SAAkBd,EAAQJ,GACxB,IAAIoB,EAAM,UAAUnmD,OAAOmlD,EAAO/sD,OAAQ,KAAK4H,OAAOmlD,EAAOj+B,OAAQ,KAAKlnB,OAAO+kD,EAAImB,OAAQ,KACzFjyB,EAAM,IAAIS,MAAMyxB,GAIpB,OAHAlyB,EAAIiyB,OAASnB,EAAImB,OACjBjyB,EAAI77B,OAAS+sD,EAAO/sD,OACpB67B,EAAImyB,IAAMjB,EAAOj+B,OACV+M,CACT,CAqD4BoyB,CAASlB,EAAQJ,GAAMD,GAAQC,IAEhDI,EAAOmB,UAAUxB,GAAQC,GAAMA,EACxC,EACAA,EAAIwB,KAAKpB,EAAO/sD,OAAQ+sD,EAAOj+B,QAAQ,GAEnCi+B,EAAOqB,iBAAmB,oBAAqBzB,IACjDA,EAAIyB,iBAAkB,GAExB,IAAIC,EAAUtB,EAAOsB,SAAW,CAAC,EAYjC,OAToC,OAAhCA,EAAQ,qBACV1B,EAAI2B,iBAAiB,mBAAoB,kBAE3CziD,OAAOopB,KAAKo5B,GAAS5xD,SAAQ,SAAUid,GAClB,OAAf20C,EAAQ30C,IACVizC,EAAI2B,iBAAiB50C,EAAG20C,EAAQ30C,GAEpC,IACAizC,EAAI4B,KAAKjB,GACF,CACLkB,MAAO,WACL7B,EAAI6B,OACN,EAEJ,CCtFA,IAAIp3D,IAAO,IAAIC,KACXgF,GAAQ,EACG,SAASoyD,KAEtB,MAAO,aAAa7mD,OAAOxQ,GAAK,KAAKwQ,SAASvL,GAChD,iBCJA,YAA0BoxD,EAAMiB,GAC9B,GAAIjB,GAAQiB,EAAe,CACzB,IAAIC,EAAqB75B,MAAMC,QAAQ25B,GAAiBA,EAAgBA,EAAc/wC,MAAM,KACxFixC,EAAWnB,EAAKn3D,MAAQ,GACxBu4D,EAAWpB,EAAKzwD,MAAQ,GACxB8xD,EAAeD,EAAS50C,QAAQ,QAAS,IAC7C,OAAO00C,EAAmBI,MAAK,SAAU/xD,GACvC,IAAIgyD,EAAYhyD,EAAKkrB,OAErB,GAAI,cAAcvuB,KAAKqD,GACrB,OAAO,EAGT,GAA4B,MAAxBgyD,EAAUx/B,OAAO,GAAY,CAC/B,IAAIy/B,EAAgBL,EAAS37C,cACzBi8C,EAAYF,EAAU/7C,cACtBk8C,EAAY,CAACD,GAIjB,MAHkB,SAAdA,GAAsC,UAAdA,IAC1BC,EAAY,CAAC,OAAQ,UAEhBA,EAAUJ,MAAK,SAAUK,GAC9B,OAAOH,EAAcI,SAASD,EAChC,GACF,CAEA,MAAI,QAAQz1D,KAAKq1D,GACRF,IAAiBE,EAAU/0C,QAAQ,QAAS,IAGjD40C,IAAaG,KAIb,QAAQr1D,KAAKq1D,MACf,UAAQ,EAAO,6CAA6CpnD,OAAOonD,EAAW,uBACvE,EAGX,GACF,CACA,OAAO,CACR,ECxBD,IAsCA,GAtCuB,SAA0BM,EAAO56D,EAAU66D,GAEhE,IAAIC,EAAoB,SAASA,EAAkB1jD,EAAM5Q,GAEvD4Q,EAAK5Q,KAAOA,GAAQ,GAChB4Q,EAAK2jD,OACP3jD,EAAK2hD,MAAK,SAAUA,GACd8B,EAAW9B,KAET3hD,EAAK4jD,WAAajC,EAAKkC,qBACzB9jD,OAAO+jD,iBAAiBnC,EAAM,CAC5BkC,mBAAoB,CAClBpI,UAAU,KAIdkG,EAAKkC,mBAAqB7jD,EAAK4jD,SAASz1C,QAAQ,MAAO,IACvDpO,OAAO+jD,iBAAiBnC,EAAM,CAC5BkC,mBAAoB,CAClBpI,UAAU,MAIhB7yD,EAAS,CAAC+4D,IAEd,IACS3hD,EAAK+jD,aA5CpB,SAAmB/jD,EAAMpX,GACvB,IAAIo7D,EAAYhkD,EAAKikD,eACjBC,EAAW,IACf,SAASC,IACPH,EAAUI,aAAY,SAAUC,GAC9B,IAAIC,EAAYt7B,MAAMvgC,UAAU8mB,MAAM3lB,MAAMy6D,GAC5CH,EAAWA,EAASpoD,OAAOwoD,GAETA,EAAUl7D,OAI1B+6D,IAFAv7D,EAASs7D,EAIb,GACF,CACAC,EACF,CA4BMI,CAAUvkD,GAAM,SAAUqkD,GACxBA,EAAQ1zD,SAAQ,SAAU6zD,GACxBd,EAAkBc,EAAW,GAAG1oD,OAAO1M,GAAM0M,OAAOkE,EAAKxV,KAAM,KACjE,GACF,GAEJ,EACAg5D,EAAM7yD,SAAQ,SAAUgxD,GACtB+B,EAAkB/B,EAAK8C,mBACzB,GACF,EC5CI,GAAY,CAAC,YAAa,YAAa,YAAa,WAAY,KAAM,QAAS,WAAY,SAAU,UAAW,WAAY,YAAa,wBAAyB,eAAgB,gBAQlLC,GAA4B,SAAUC,IACxC,QAAUD,EAAcC,GACxB,IAAI16D,GAAS,QAAay6D,GAC1B,SAASA,IACP,IAAI17D,GACJ,OAAgBT,KAAMm8D,GACtB,IAAK,IAAI5S,EAAO3oD,UAAUC,OAAQH,EAAO,IAAI+/B,MAAM8oB,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E9oD,EAAK8oD,GAAQ5oD,UAAU4oD,GA4LzB,OA1LA/oD,EAAQiB,EAAOE,KAAKP,MAAMK,EAAQ,CAAC1B,MAAMuT,OAAO7S,KAC1C6iD,MAAQ,CACZ6W,IAAK,MAEP35D,EAAM47D,KAAO,CAAC,EACd57D,EAAM67D,eAAY,EAClB77D,EAAM87D,gBAAa,EACnB97D,EAAM+7D,SAAW,SAAUt4D,GACzB,IAAIu4D,EAAch8D,EAAM4W,MACtBqlD,EAASD,EAAYC,OACrBC,EAAYF,EAAYE,UACtB1B,EAAQ/2D,EAAEwE,OAAOuyD,MACjBZ,GAAgB,OAAmBY,GAAO1qD,QAAO,SAAU6oD,GAC7D,OAAQuD,GAAa,GAAWvD,EAAMsD,EACxC,IACAj8D,EAAMm8D,YAAYvC,GAClB55D,EAAMy1D,OACR,EACAz1D,EAAMo8D,QAAU,SAAU34D,GACxB,IAAIsG,EAAK/J,EAAM67D,UACf,GAAK9xD,EAAL,CAGA,IAAIsyD,EAAer8D,EAAM4W,MACvBxH,EAAWitD,EAAajtD,SACxBgtD,EAAUC,EAAaD,QACzB,GAAIhtD,GAA8B,WAAlBA,EAASlH,KAAmB,CAC1C,IAAIiJ,EAASpH,EAAG4E,WAChBwC,EAAOmrD,QACPnrD,EAAOorD,cAAc,UAAUC,MACjC,CACAzyD,EAAG0yD,QACCL,GACFA,EAAQ34D,EAXV,CAaF,EACAzD,EAAM08D,UAAY,SAAUj5D,GACZ,UAAVA,EAAE28B,KACJpgC,EAAMo8D,QAAQ34D,EAElB,EACAzD,EAAM28D,WAAa,SAAUl5D,GAC3B,IAAIm5D,EAAW58D,EAAM4W,MAAMgmD,SAE3B,GADAn5D,EAAEuI,iBACa,aAAXvI,EAAEyE,KAGN,GAAIlI,EAAM4W,MAAMslD,UACd,GAAiBl8B,MAAMvgC,UAAU8mB,MAAMplB,KAAKsC,EAAEo5D,aAAanX,OAAQ1lD,EAAMm8D,aAAa,SAAUW,GAC9F,OAAO,GAAWA,EAAO98D,EAAM4W,MAAMqlD,OACvC,QACK,CACL,IAAIzB,GAAQ,OAAmB/2D,EAAEo5D,aAAarC,OAAO1qD,QAAO,SAAU6oD,GACpE,OAAO,GAAWA,EAAM34D,EAAM4W,MAAMqlD,OACtC,KACiB,IAAbW,IACFpC,EAAQA,EAAMj0C,MAAM,EAAG,IAEzBvmB,EAAMm8D,YAAY3B,EACpB,CACF,EACAx6D,EAAMm8D,YAAc,SAAU3B,GAC5B,IAAIuC,GAAc,OAAmBvC,GACjCwC,EAAYD,EAAYxsC,KAAI,SAAUooC,GAGxC,OADAA,EAAKgB,IAAM,KACJ35D,EAAMi9D,YAAYtE,EAAMoE,EACjC,IAEA52B,QAAQ+2B,IAAIF,GAAWl2B,MAAK,SAAUo0B,GACpC,IAAIiC,EAAen9D,EAAM4W,MAAMumD,aAC/BA,SAA4DA,EAAajC,EAAS3qC,KAAI,SAAU6gC,GAG9F,MAAO,CACLuH,KAHWvH,EAAKgM,OAIhBC,WAHajM,EAAKiM,WAKtB,KACAnC,EAASprD,QAAO,SAAU6oD,GACxB,OAA2B,OAApBA,EAAK0E,UACd,IAAG11D,SAAQ,SAAUgxD,GACnB34D,EAAMs9D,KAAK3E,EACb,GACF,GACF,EACA34D,EAAMi9D,YAA2B,WAC/B,IAAIM,EAAQnG,GAAgCtF,KAAsBkE,MAAK,SAASwH,EAAQ7E,EAAMuC,GAC5F,IAAIuC,EAAcC,EAAiB1jC,EAAQ2jC,EAAc14C,EAAM24C,EAAYC,EAAYR,EAAYS,EACnG,OAAOhM,KAAsBY,MAAK,SAAkBqL,GAClD,OACE,OAAQA,EAASlpC,KAAOkpC,EAASjpC,MAC/B,KAAK,EAGH,GAFA2oC,EAAez9D,EAAM4W,MAAM6mD,aAC3BC,EAAkB/E,GACb8E,EAAc,CACjBM,EAASjpC,KAAO,GAChB,KACF,CAGA,OAFAipC,EAASlpC,KAAO,EAChBkpC,EAASjpC,KAAO,EACT2oC,EAAa9E,EAAMuC,GAC5B,KAAK,EACHwC,EAAkBK,EAAS3R,KAC3B2R,EAASjpC,KAAO,GAChB,MACF,KAAK,EACHipC,EAASlpC,KAAO,EAChBkpC,EAASp6D,GAAKo6D,EAAgB,MAAE,GAEhCL,GAAkB,EACpB,KAAK,GACH,IAA0B,IAApBA,EAA4B,CAChCK,EAASjpC,KAAO,GAChB,KACF,CACA,OAAOipC,EAASrJ,OAAO,SAAU,CAC/B0I,OAAQzE,EACR0E,WAAY,KACZrjC,OAAQ,KACR/U,KAAM,OAEV,KAAK,GAGH,GAAwB,mBADxB+U,EAASh6B,EAAM4W,MAAMojB,QACgB,CACnC+jC,EAASjpC,KAAO,GAChB,KACF,CAEA,OADAipC,EAASjpC,KAAO,GACTkF,EAAO2+B,GAChB,KAAK,GACHgF,EAAeI,EAAS3R,KACxB2R,EAASjpC,KAAO,GAChB,MACF,KAAK,GACH6oC,EAAe3jC,EACjB,KAAK,GAGH,GAAsB,mBADtB/U,EAAOjlB,EAAM4W,MAAMqO,MACgB,CACjC84C,EAASjpC,KAAO,GAChB,KACF,CAEA,OADAipC,EAASjpC,KAAO,GACT7P,EAAK0zC,GACd,KAAK,GACHiF,EAAaG,EAAS3R,KACtB2R,EAASjpC,KAAO,GAChB,MACF,KAAK,GACH8oC,EAAa34C,EACf,KAAK,GAcH,OAbA44C,EAG8B,YAA7B,QAAQH,IAA4D,iBAApBA,IAAiCA,EAAoC/E,EAAlB+E,EAElGL,EADEQ,aAAsBG,KACXH,EAEA,IAAIG,KAAK,CAACH,GAAalF,EAAKn3D,KAAM,CAC7C0G,KAAMywD,EAAKzwD,QAGf41D,EAAmBT,GACF1D,IAAMhB,EAAKgB,IACrBoE,EAASrJ,OAAO,SAAU,CAC/B0I,OAAQzE,EACR1zC,KAAM24C,EACNP,WAAYS,EACZ9jC,OAAQ2jC,IAEZ,KAAK,GACL,IAAK,MACH,OAAOI,EAASx5D,OAGxB,GAAGi5D,EAAS,KAAM,CAAC,CAAC,EAAG,IACzB,KACA,OAAO,SAAUS,EAAIC,GACnB,OAAOX,EAAM38D,MAAMrB,KAAMY,UAC3B,CACF,CAhGiC,GAiGjCH,EAAMm+D,cAAgB,SAAUle,GAC9BjgD,EAAM67D,UAAY5b,CACpB,EACOjgD,CACT,CAoJA,OAnJA,QAAa07D,EAAc,CAAC,CAC1Bt7B,IAAK,oBACL1+B,MAAO,WACLnC,KAAKu8D,YAAa,CACpB,GACC,CACD17B,IAAK,uBACL1+B,MAAO,WACLnC,KAAKu8D,YAAa,EAClBv8D,KAAKm6D,OACP,GACC,CACDt5B,IAAK,OACL1+B,MAAO,SAAc08D,GACnB,IAAIC,EAAS9+D,KACT0lB,EAAOm5C,EAAMn5C,KACfm4C,EAASgB,EAAMhB,OACfpjC,EAASokC,EAAMpkC,OACfqjC,EAAae,EAAMf,WACrB,GAAK99D,KAAKu8D,WAAV,CAGA,IAAIwC,EAAe/+D,KAAKqX,MACtB2nD,EAAUD,EAAaC,QACvBC,EAAgBF,EAAaE,cAC7Bh9D,EAAO88D,EAAa98D,KACpB+3D,EAAU+E,EAAa/E,QACvBD,EAAkBgF,EAAahF,gBAC/BpuD,EAASozD,EAAapzD,OACpByuD,EAAMyD,EAAOzD,IACb8E,EAAUD,GAAiB,GAC3BE,EAAgB,CAClB1kC,OAAQA,EACR6+B,SAAUr3D,EACVyjB,KAAMA,EACN0zC,KAAM0E,EACN9D,QAASA,EACTD,gBAAiBA,EACjBpuD,OAAQA,GAAU,OAClBitD,WAAY,SAAoB10D,GAC9B,IAAI00D,EAAakG,EAAOznD,MAAMuhD,WAC9BA,SAAwDA,EAAW10D,EAAG45D,EACxE,EACAjE,UAAW,SAAmBjY,EAAK0W,GACjC,IAAIuB,EAAYiF,EAAOznD,MAAMwiD,UAC7BA,SAAsDA,EAAUjY,EAAKkc,EAAYxF,UAC1EwG,EAAOzC,KAAKjC,EACrB,EACAZ,QAAS,SAAiBhyB,EAAKoa,GAC7B,IAAI4X,EAAUsF,EAAOznD,MAAMmiD,QAC3BA,SAAkDA,EAAQhyB,EAAKoa,EAAKkc,UAC7DgB,EAAOzC,KAAKjC,EACrB,GAEF4E,EAAQnB,GACR79D,KAAKq8D,KAAKjC,GAAO8E,EAAQC,EAlCzB,CAmCF,GACC,CACDt+B,IAAK,QACL1+B,MAAO,WACLnC,KAAKo/D,SAAS,CACZhF,IAAK,MAET,GACC,CACDv5B,IAAK,QACL1+B,MAAO,SAAei3D,GACpB,IAAIiD,EAAOr8D,KAAKq8D,KAChB,GAAIjD,EAAM,CACR,IAAIgB,EAAMhB,EAAKgB,IAAMhB,EAAKgB,IAAMhB,EAC5BiD,EAAKjC,IAAQiC,EAAKjC,GAAKD,OACzBkC,EAAKjC,GAAKD,eAELkC,EAAKjC,EACd,MACE5iD,OAAOopB,KAAKy7B,GAAMj0D,SAAQ,SAAUgyD,GAC9BiC,EAAKjC,IAAQiC,EAAKjC,GAAKD,OACzBkC,EAAKjC,GAAKD,eAELkC,EAAKjC,EACd,GAEJ,GACC,CACDv5B,IAAK,SACL1+B,MAAO,WACL,IAAIk9D,EACAC,EAAet/D,KAAKqX,MACtBkoD,EAAMD,EAAaE,UACnBC,EAAYH,EAAaG,UACzB7rD,EAAY0rD,EAAa1rD,UACzB8rD,EAAWJ,EAAaI,SACxBhsD,EAAK4rD,EAAa5rD,GAClB5H,EAAQwzD,EAAaxzD,MACrBuxD,EAAWiC,EAAajC,SACxBX,EAAS4C,EAAa5C,OACtBloD,EAAU8qD,EAAa9qD,QACvB3E,EAAWyvD,EAAazvD,SACxB8sD,EAAY2C,EAAa3C,UACzBgD,EAAwBL,EAAaK,sBACrCC,EAAeN,EAAaM,aAC5BC,EAAeP,EAAaO,aAC5BC,GAAa,QAAyBR,EAAc,IAClDS,EAAM,KAAYV,EAAc,CAAC,GAAG,OAAgBA,EAAaI,GAAW,IAAO,OAAgBJ,EAAa,GAAG9rD,OAAOksD,EAAW,aAAcC,IAAW,OAAgBL,EAAazrD,EAAWA,GAAYyrD,IAElNW,EAAWrD,EAAY,CACzBA,UAAW,YACXsD,gBAAiB,mBACf,CAAC,EACDn/D,EAAS4+D,EAAW,CAAC,EAAI,CAC3B7C,QAAS8C,EAAwB3/D,KAAK68D,QAAU,WAAa,EAC7DM,UAAWwC,EAAwB3/D,KAAKm9D,UAAY,WAAa,EACjEyC,aAAcA,EACdC,aAAcA,EACdK,OAAQlgE,KAAKo9D,WACb+C,WAAYngE,KAAKo9D,WACjBgD,SAAU,KAEZ,OAAoB,gBAAoBb,GAAK,OAAS,CAAC,EAAGz+D,EAAQ,CAChE8S,UAAWmsD,EACXM,KAAM,SACNv0D,MAAOA,IACQ,gBAAoB,SAAS,OAAS,CAAC,EAAGmsD,GAAU6H,EAAY,CAC/E1H,MAAM,EACN1yC,MAAM,IACJ,CACFhS,GAAIA,EACJ/K,KAAM,OACNypD,IAAKpyD,KAAK4+D,cACV/B,QAAS,SAAiB34D,GACxB,OAAOA,EAAEye,iBACX,EAGAke,IAAK7gC,KAAKujD,MAAM6W,IAChBtuD,MAAO,CACLu/C,QAAS,QAEXqR,OAAQA,GACPsD,EAAU,CACX3C,SAAUA,EACVb,SAAUx8D,KAAKw8D,UACH,MAAXhoD,EAAkB,CACnBA,QAASA,GACP,CAAC,IAAK3E,EACZ,KAEKssD,CACT,CAzVgC,CAyV9B,EAAAmE,WACF,MCpWA,SAASC,KAAS,CAClB,IAAIC,GAAsB,SAAUpE,IAClC,QAAUoE,EAAQpE,GAClB,IAAI16D,GAAS,QAAa8+D,GAC1B,SAASA,IACP,IAAI//D,GACJ,OAAgBT,KAAMwgE,GACtB,IAAK,IAAIjX,EAAO3oD,UAAUC,OAAQH,EAAO,IAAI+/B,MAAM8oB,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E9oD,EAAK8oD,GAAQ5oD,UAAU4oD,GAOzB,OALA/oD,EAAQiB,EAAOE,KAAKP,MAAMK,EAAQ,CAAC1B,MAAMuT,OAAO7S,KAC1C+/D,cAAW,EACjBhgE,EAAMigE,aAAe,SAAUhgB,GAC7BjgD,EAAMggE,SAAW/f,CACnB,EACOjgD,CACT,CAcA,OAbA,QAAa+/D,EAAQ,CAAC,CACpB3/B,IAAK,QACL1+B,MAAO,SAAei3D,GACpBp5D,KAAKygE,SAAStG,MAAMf,EACtB,GACC,CACDv4B,IAAK,SACL1+B,MAAO,WACL,OAAoB,gBAAoB,IAAY,OAAS,CAAC,EAAGnC,KAAKqX,MAAO,CAC3E+6C,IAAKpyD,KAAK0gE,eAEd,KAEKF,CACT,CA9B0B,CA8BxB,EAAAF,WACFE,GAAOG,aAAe,CACpBnB,UAAW,OACXC,UAAW,YACX/5C,KAAM,CAAC,EACPs0C,QAAS,CAAC,EACV/3D,KAAM,OACN2+D,WAAW,EACX5B,QAASuB,GACT/G,QAAS+G,GACT1G,UAAW0G,GACXlD,UAAU,EACVa,aAAc,KACde,cAAe,KACflF,iBAAiB,EACjB4F,uBAAuB,GAEzB,ICxDA,GDwDA,oDExDIkB,GAA+B,iBAAoB,GAC5CC,GAA0B,SAAiCjP,GACpE,IAAIhiD,EAAWgiD,EAAKhiD,SAClB6vD,EAAW7N,EAAK6N,SACdqB,EAAiB,aAAiBF,IACtC,OAAoB,gBAAoBA,GAAgBG,SAAU,CAChE7+D,MAAOu9D,QAA2CA,EAAWqB,GAC5DlxD,EACL,EACA,MCRA,IADiC,IAAAoxD,oBAAcxqC,GCD/C,IAEEyqC,eAAgB,SAChBC,QAAS,QACTC,gBAAiB,UACjBC,KAAM,OAENC,UAAW,gBACXC,UAAW,YACXC,OAAQ,mBACRC,OAAQ,eACRC,OAAQ,mBACRC,OAAQ,eACRC,UAAW,aCgBb,GA7Ba,CACXC,OAAQ,QACRC,MAAO,QACP/+D,IAAK,MACLg/D,YAAa,gBACbC,GAAI,KACJzyD,MAAO,QACP0yD,MAAO,QACPC,KAAM,OACNC,WAAY,cACZC,WAAY,cACZC,WAAY,gBACZC,YAAa,iBACbC,WAAY,gBACZC,aAAc,kBACdC,WAAY,OACZC,WAAY,WACZC,UAAW,IACXC,eAAgB,oBAChBC,iBAAiB,EACjBC,cAAe,0BACfC,UAAW,wBACXC,aAAc,6BACdC,SAAU,8BACVC,eAAgB,cAChBC,WAAY,cACZC,gBAAiB,eACjBC,YAAa,gBCvBf,GAJa,CACXC,YAAa,cACbC,iBAAkB,CAAC,aAAc,aCC/B,GAAS,CACXC,KAAMhsD,OAAO89B,OAAO,CAClBguB,YAAa,cACbG,gBAAiB,cACjBC,mBAAoB,iBACpBC,iBAAkB,eAClBC,gBAAiB,cACjBL,iBAAkB,CAAC,aAAc,YACjCM,qBAAsB,CAAC,aAAc,YACrCC,wBAAyB,CAAC,gBAAiB,eAC3CC,sBAAuB,CAAC,cAAe,aACvCC,qBAAsB,CAAC,aAAc,aACpC,IACHC,iBAAkBzsD,OAAO89B,OAAO,CAAC,EAAG,KCXlC4uB,GAAe,kCA0InB,GAzImB,CACjBrC,OAAQ,KACRsC,WAAY,GACZC,WDWF,GCVEC,WAAY,GACZC,SDSF,GCREn7B,OAAQ,CACNm6B,YAAa,iBAEfiB,MAAO,CACLC,YAAa,cACbC,cAAe,KACfC,YAAa,QACbC,gBAAiB,aACjBC,eAAgB,mBAChBC,wBAAyB,oBACzBC,UAAW,UACXC,UAAW,sBACXC,aAAc,sBACdC,WAAY,iBACZC,aAAc,kBACdC,UAAW,OACXC,OAAQ,aACRC,SAAU,eACVC,YAAa,2BACbC,WAAY,0BACZC,WAAY,2BAEdC,KAAM,CACJC,KAAM,OACNC,SAAU,WACVC,OAAQ,UAEVC,MAAO,CACLC,OAAQ,KACRC,WAAY,SACZC,WAAY,MAEdC,WAAY,CACVH,OAAQ,KACRC,WAAY,UAEdG,SAAU,CACRC,OAAQ,CAAC,GAAI,IACbC,kBAAmB,cACnBC,SAAU,OACVC,UAAW,QACXnzD,OAAQ,SACRozD,cAAe,sBACfC,cAAe,sBACfzB,UAAW,kBACX0B,UAAW,kBACXzB,aAAc,uBAEhBxE,OAAQ,CACNkG,UAAW,eACXC,WAAY,cACZC,YAAa,eACbC,YAAa,eACbC,aAAc,iBAEhBC,MAAO,CACLC,YAAa,WAEfC,KAAM,CACJC,KAAM,QAERC,KAAM,CACJC,KAAM,OACNp/B,KAAM,OACNq/B,OAAQ,SACRjC,OAAQ,UAEVkC,WAAY,CACVC,KAAM,QAERC,KAAM,CACJC,SAAU,aACVC,wBAAyB,CACvBC,QAAS,sCACTC,SAAU,wBACVC,KAAM,oCACNC,WAAY,uCACZC,KAAM,CACJ/zB,OAAQ,kCACRyS,MAAO,yCACPuhB,QAAS,+BAEXC,MAAO,CACL1hB,OAAQ2d,GACRv4D,OAAQu4D,GACR3hC,MAAO2hC,GACPv/B,OAAQu/B,GACRgE,OAAQhE,GACR6D,KAAM7D,GACNiE,QAASjE,GACTkE,QAASlE,GACTmE,MAAOnE,GACPoE,OAAQpE,GACRqE,MAAOrE,GACPvK,IAAKuK,GACLvvB,IAAKuvB,IAEP3d,OAAQ,CACN/rB,IAAK,qCACLtgB,IAAK,8CACLC,IAAK,2CACLwtC,MAAO,qDAETugB,OAAQ,CACN1tC,IAAK,mCACLtgB,IAAK,kCACLC,IAAK,kCACLwtC,MAAO,0CAETplB,MAAO,CACL/H,IAAK,0BACLtgB,IAAK,2BACLC,IAAK,0BACLwtC,MAAO,wDAET6gB,QAAS,CACPC,SAAU,oDAIhBC,MAAO,CACLC,QAAS,WAEXC,OAAQ,CACNC,QAAS,kBACTC,QAAS,WAEXC,YAAa,CACXC,YAAa,UCvHjB,GAlBgB,SAAmBC,EAAeC,GAChD,IAAIC,EAAa,aAAiB,IAC9BC,EAAY,WAAc,WAC5B,IAAIjoE,EACA0gE,EAASqH,GAAiB,GAAkBD,GAC5CI,EAAiH,QAA5FloE,EAAKgoE,aAA+C,EAASA,EAAWF,UAAmC,IAAP9nE,EAAgBA,EAAK,CAAC,EACnJ,OAAOqW,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAqB,mBAAXusB,EAAwBA,IAAWA,GAASwH,GAAqB,CAAC,EAClH,GAAG,CAACJ,EAAeC,EAAeC,IASlC,MAAO,CAACC,EARY,WAAc,WAChC,IAAIE,EAAaH,aAA+C,EAASA,EAAWtH,OAEpF,OAAKsH,aAA+C,EAASA,EAAWI,SAAWD,EAC1E,GAAkBzH,OAEpByH,CACT,GAAG,CAACH,IAEN,ECOA,GA1BkB,CAChB,KAAQ,SAAgBK,EAAcC,GACpC,MAAO,CACL,IAAO,MACP,MAAS,CACP,QAAW,gBACX,UAAa,SAEf,SAAY,CAAC,CACX,IAAO,OACP,MAAS,CACP,EAAK,qDACL,KAAQA,IAET,CACD,IAAO,OACP,MAAS,CACP,EAAK,4OACL,KAAQD,KAIhB,EACA,KAAQ,OACR,MAAS,uBClBP,GAAc,SAAqBnyD,EAAO+6C,GAC5C,OAAoB,gBAAoBsX,GAAA,GAAU,OAAS,CAAC,EAAGryD,EAAO,CACpE+6C,IAAKA,EACL8U,KAAM,KAEV,EAIA,OAA4B,aAAiB,ICE7C,GAjBsB,CACpB,KAAQ,CACN,IAAO,MACP,MAAS,CACP,QAAW,gBACX,UAAa,SAEf,SAAY,CAAC,CACX,IAAO,OACP,MAAS,CACP,EAAK,kUAIX,KAAQ,UACR,MAAS,YCTP,GAAkB,SAAyB7vD,EAAO+6C,GACpD,OAAoB,gBAAoBsX,GAAA,GAAU,OAAS,CAAC,EAAGryD,EAAO,CACpE+6C,IAAKA,EACL8U,KAAM,KAEV,EAIA,OAA4B,aAAiB,ICE7C,GAjBwB,CACtB,KAAQ,CACN,IAAO,MACP,MAAS,CACP,QAAW,gBACX,UAAa,SAEf,SAAY,CAAC,CACX,IAAO,OACP,MAAS,CACP,EAAK,4zBAIX,KAAQ,aACR,MAAS,YCTP,GAAoB,SAA2B7vD,EAAO+6C,GACxD,OAAoB,gBAAoBsX,GAAA,GAAU,OAAS,CAAC,EAAGryD,EAAO,CACpE+6C,IAAKA,EACL8U,KAAM,KAEV,EAIA,OAA4B,aAAiB,IC6B7C,GA5CqB,CACnB,KAAQ,SAAgBsC,EAAcC,GACpC,MAAO,CACL,IAAO,MACP,MAAS,CACP,QAAW,gBACX,UAAa,SAEf,SAAY,CAAC,CACX,IAAO,OACP,MAAS,CACP,EAAK,iSACL,KAAQD,IAET,CACD,IAAO,OACP,MAAS,CACP,EAAK,6DACL,KAAQC,IAET,CACD,IAAO,OACP,MAAS,CACP,EAAK,uJACL,KAAQA,IAET,CACD,IAAO,OACP,MAAS,CACP,EAAK,2CACL,KAAQA,IAET,CACD,IAAO,OACP,MAAS,CACP,EAAK,mHACL,KAAQD,KAIhB,EACA,KAAQ,UACR,MAAS,WCpCP,GAAiB,SAAwBnyD,EAAO+6C,GAClD,OAAoB,gBAAoBsX,GAAA,GAAU,OAAS,CAAC,EAAGryD,EAAO,CACpE+6C,IAAKA,EACL8U,KAAM,KAEV,EAIA,OAA4B,aAAiB,gBCd9B,SAASyC,KACtB,IAAIC,EAAoB,cAAiB,SAAU3+D,GAC/C,OAAOA,EAAI,CACb,GAAG,GAGL,OAFuB,OAAe2+D,EAAmB,GACtB,EAErC,KCCIC,kDCVJ,YAA0Bl6D,GACxB,IAAKA,EACH,OAAO,EAET,GAAIA,aAAmBwE,QAAS,CAC9B,GAAIxE,EAAQm6D,aACV,OAAO,EAET,GAAIn6D,EAAQM,QAAS,CACnB,IAAI85D,EAAWp6D,EAAQM,UACrBlC,EAAQg8D,EAASh8D,MACjBC,EAAS+7D,EAAS/7D,OACpB,GAAID,GAASC,EACX,OAAO,CAEX,CACA,GAAI2B,EAAQZ,sBAAuB,CACjC,IAAIi7D,EAAwBr6D,EAAQZ,wBAClCk7D,EAASD,EAAsBj8D,MAC/Bm8D,EAAUF,EAAsBh8D,OAClC,GAAIi8D,GAAUC,EACZ,OAAO,CAEX,CACF,CACA,OAAO,CACR,cCxBGC,GAAe,SAAsBC,GACvC,IAAIC,EAAeD,EAAMC,aACvBC,EAAeF,EAAME,aACvB,OAAO,OAAgB,CAAC,EAAGD,EAAc,CACvClf,SAAU,WACVof,WAAY,cACZhf,cAAe,OACfif,UAAW,aACXz2B,MAAO,qBAAqBxgC,OAAO+2D,EAAc,KACjDG,UAAW,uBACX91D,QAAS,GAET,uBAAwB,CACtB+1D,WAAY,CAAC,mBAAmBn3D,OAAO62D,EAAMO,mBAAoB,cAAcp3D,OAAO62D,EAAMO,oBAAoBthD,KAAK,KACrH,WAAY,CACVohD,UAAW,yBACX91D,QAAS,GAEX,eAAgB,CACd+1D,WAAY,CAAC,mBAAmBn3D,OAAO62D,EAAMQ,iBAAkB,iBAAiBr3D,OAAO62D,EAAMQ,kBAAkBvhD,KAAK,QAI5H,EACA,IAAe,EAAAwhD,GAAA,GAAsB,QAAQ,SAAUT,GACrD,MAAO,CAACD,GAAaC,GACvB,4BFtBIU,IAAY,QAAc,CAAC,EAAG,IAC9B/nD,GAAU+nD,GAAU/nD,QACtBgoD,GAAcD,GAAUE,OACxBC,GAAyBH,GAAUG,uBAErC,IACoBhpD,QAAQc,IAAW,IAAIuG,MAAM,KAAK,KACjC,KACjBugD,GAAaiB,GAAUjB,WAE3B,CAAE,MAAO3lE,KAET,CACA,SAASgnE,GAAcC,GACrB,IAAIC,EAAqDN,GAAUM,mDAC/DA,GAAsH,YAAhE,QAAQA,KAChEA,EAAmDC,sBAAwBF,EAE/E,CACA,IAAIG,GAAO,oBAqBJ,SAAS,GAAO5qB,EAAM13C,GACvB6gE,GAlBN,SAAsBnpB,EAAM13C,GAC1BkiE,IAAc,GACd,IAAIK,EAAOviE,EAAUsiE,KAASzB,GAAW7gE,GACzCkiE,IAAc,GACdK,EAAKP,OAAOtqB,GACZ13C,EAAUsiE,IAAQC,CACpB,CAaIC,CAAa9qB,EAAM13C,GAZvB,SAAsB03C,EAAM13C,GAC1B+hE,GAAYrqB,EAAM13C,EACpB,CAaEyiE,CAAa/qB,EAAM13C,EACrB,CAGA,SAAS0iE,GAAchN,GACrB,OAAOiN,GAAetqE,MAAMrB,KAAMY,UACpC,CACA,SAAS+qE,KAgBP,OAfAA,GAAiB9T,GAAgCtF,KAAsBkE,MAAK,SAASwH,EAAQj1D,GAC3F,OAAOupD,KAAsBY,MAAK,SAAkBqL,GAClD,cAAkBA,EAASlpC,KAAOkpC,EAASjpC,MACzC,KAAK,EACH,OAAOipC,EAASrJ,OAAO,SAAUvuB,QAAQS,UAAUE,MAAK,WACtD,IAAIqkC,EACoC,QAAvCA,EAAkB5iE,EAAUsiE,WAAuC,IAApBM,GAAsCA,EAAgBC,iBAC/F7iE,EAAUsiE,GACnB,KACF,KAAK,EACL,IAAK,MACH,OAAO9M,EAASx5D,OAEtB,GAAGi5D,EACL,KACO0N,GAAetqE,MAAMrB,KAAMY,UACpC,CACA,SAASkrE,GAAc9iE,GACrBiiE,GAAuBjiE,EACzB,CAQO,SAAS6iE,GAAQlN,GACtB,OAAOoN,GAAS1qE,MAAMrB,KAAMY,UAC9B,CACA,SAASmrE,KAkBP,OAjBAA,GAAWlU,GAAgCtF,KAAsBkE,MAAK,SAASuV,EAAShjE,GACtF,OAAOupD,KAAsBY,MAAK,SAAmB8Y,GACnD,cAAkBA,EAAU32C,KAAO22C,EAAU12C,MAC3C,KAAK,EACH,QAAqBkB,IAAfozC,GAA2B,CAC/BoC,EAAU12C,KAAO,EACjB,KACF,CACA,OAAO02C,EAAU9W,OAAO,SAAUuW,GAAc1iE,IAClD,KAAK,EACH8iE,GAAc9iE,GAChB,KAAK,EACL,IAAK,MACH,OAAOijE,EAAUjnE,OAEvB,GAAGgnE,EACL,MACgB3qE,MAAMrB,KAAMY,UAC9B,CGpGO,SAASsrE,GAAiBn4B,GAC/B,OAAOA,GAAmB,SAAVA,GAA8B,YAAVA,GAAiC,uBAAVA,GAA4C,2BAAVA,GATxF,SAAmBA,GAExB,IAAI9Y,GAAS8Y,GAAS,IAAI9Y,MAAM,2CAChC,QAAIA,GAASA,EAAM,IAAMA,EAAM,IAAMA,EAAM,IAChCA,EAAM,KAAOA,EAAM,IAAMA,EAAM,KAAOA,EAAM,GAGzD,CAEqIkxC,CAAUp4B,KAAW,wBAAwBzuC,KAAKyuC,IAE3K,gBAAVA,CACF,CCZO,IAAIq4B,GAAa,kBCQxB,SAASC,GAAYlqE,GACnB,OAAO8f,OAAOC,MAAM/f,GAAS,EAAIA,CACnC,CACA,IAAImqE,GAAa,SAAoBj1D,GACnC,IAAIzD,EAAYyD,EAAMzD,UACpBlL,EAAS2O,EAAM3O,OACf82D,EAAYnoD,EAAMmoD,UAChB+M,EAAS,SAAa,MACtBC,EAAkB,WAAe,MACnCC,GAAmB,OAAeD,EAAiB,GACnDz4B,EAAQ04B,EAAiB,GACzBC,EAAeD,EAAiB,GAC9BE,EAAmB,WAAe,IACpCC,GAAmB,OAAeD,EAAkB,GACpDE,EAAeD,EAAiB,GAChCE,EAAkBF,EAAiB,GACjCG,EAAmB,WAAe,GACpCC,GAAmB,OAAeD,EAAkB,GACpD/9D,EAAOg+D,EAAiB,GACxBC,EAAUD,EAAiB,GACzBE,EAAmB,WAAe,GACpCC,GAAmB,OAAeD,EAAkB,GACpDj+D,EAAMk+D,EAAiB,GACvBC,EAASD,EAAiB,GACxBE,EAAmB,WAAe,GACpCC,GAAoB,OAAeD,EAAkB,GACrDt/D,EAAQu/D,EAAkB,GAC1BC,EAAWD,EAAkB,GAC3BE,EAAoB,WAAe,GACrCC,GAAoB,OAAeD,EAAmB,GACtDx/D,EAASy/D,EAAkB,GAC3BC,EAAYD,EAAkB,GAC5BE,EAAoB,YAAe,GACrCC,GAAoB,OAAeD,EAAmB,GACtDE,EAAUD,EAAkB,GAC5BE,EAAaF,EAAkB,GAC7BG,EAAY,CACd/+D,KAAMA,EACNC,IAAKA,EACLlB,MAAOA,EACPC,OAAQA,EACR6+D,aAAcA,EAAa77C,KAAI,SAAUg9C,GACvC,MAAO,GAAGz6D,OAAOy6D,EAAQ,KAC3B,IAAG3kD,KAAK,MAKV,SAAS4kD,IACP,IAAIC,EAAYhjB,iBAAiBxiD,GAEjCgkE,EF9CG,SAA4BhsB,GACjC,IAAIytB,EAAoBjjB,iBAAiBxK,GACvC0tB,EAAiBD,EAAkBC,eACnCC,EAAcF,EAAkBE,YAChCC,EAAkBH,EAAkBG,gBACtC,OAAIpC,GAAiBkC,GACZA,EAELlC,GAAiBmC,GACZA,EAELnC,GAAiBoC,GACZA,EAEF,IACT,CE+BiBC,CAAmB7lE,IAChC,IAAI8lE,EAAkC,WAAvBN,EAAU/iB,SAErBsjB,EAAkBP,EAAUO,gBAC9BC,EAAiBR,EAAUQ,eAC7BzB,EAAQuB,EAAW9lE,EAAOimE,WAAatC,IAAahhD,WAAWojD,KAC/DrB,EAAOoB,EAAW9lE,EAAOkmE,UAAYvC,IAAahhD,WAAWqjD,KAC7DnB,EAAS7kE,EAAOmmE,aAChBnB,EAAUhlE,EAAOomE,cAEjB,IAAIC,EAAsBb,EAAUa,oBAClCC,EAAuBd,EAAUc,qBACjCC,EAAyBf,EAAUe,uBACnCC,EAA0BhB,EAAUgB,wBACtCpC,EAAgB,CAACiC,EAAqBC,EAAsBE,EAAyBD,GAAwBj+C,KAAI,SAAUg9C,GACzH,OAAO3B,GAAYhhD,WAAW2iD,GAChC,IACF,CAqBA,GA5CIj6B,IACFg6B,EAAU,gBAAkBh6B,GAuB9B,aAAgB,WACd,GAAIrrC,EAAQ,CAGV,IAKIymE,EALAz7D,GAAK,EAAA07D,GAAA,IAAI,WACXnB,IACAH,GAAW,EACb,IAOA,MAJ8B,oBAAnBnjB,iBACTwkB,EAAiB,IAAIxkB,eAAesjB,IACrBviB,QAAQhjD,GAElB,WACL0mE,GAAA,EAAI3pC,OAAO/xB,GACXy7D,SAAgEA,EAAe1jB,YACjF,CACF,CACF,GAAG,KACEoiB,EACH,OAAO,KAET,IAAIwB,GAAkC,aAAd7P,GAA0C,UAAdA,KAA2B92D,aAAuC,EAASA,EAAO4mE,UAAUC,SAASnD,KACzJ,OAAoB,gBAAoB,MAAW,CACjD73D,SAAS,EACTi7D,cAAc,EACdC,WAAY,cACZC,eAAgB,IAChBC,YAAa,SAAqBjpC,EAAG37B,GACnC,IAAI5J,EACJ,GAAI4J,EAAM6kE,UAAmC,YAAvB7kE,EAAMg+B,aAA4B,CACtD,IAAI8mC,EAAmC,QAAzB1uE,EAAKorE,EAAO9kE,eAA4B,IAAPtG,OAAgB,EAASA,EAAG2uE,cAC3EjE,GAAQgE,GAAQtoC,MAAK,WACnBsoC,SAAgDA,EAAO18D,QACzD,GACF,CACA,OAAO,CACT,IACC,SAAU0+C,GACX,IAAIke,EAAkBle,EAAKj+C,UAC3B,OAAoB,gBAAoB,MAAO,CAC7Cw+C,IAAKma,EACL34D,UAAW,IAAWA,EAAW,CAC/B,aAAcy7D,GACbU,GACHjkE,MAAOiiE,GAEX,GACF,EAkBA,GAjBqB,SAAwBrlE,EAAQ2sD,GACnD,IAAIl0D,EAGJ,GAAkB,aAFFk0D,EAAKmK,YAEsD,QAAxCr+D,EAAKuH,EAAOs0D,cAAc,gBAA6B,IAAP77D,OAAgB,EAASA,EAAG6uE,SAA/G,CAIA,IAAIH,EAASllE,SAAS+Z,cAAc,OACpCmrD,EAAO/jE,MAAMq/C,SAAW,WACxB0kB,EAAO/jE,MAAMkD,KAAO,MACpB6gE,EAAO/jE,MAAMmD,IAAM,MACnBvG,SAAgDA,EAAOunE,aAAaJ,EAAQnnE,aAAuC,EAASA,EAAOwnE,YACnI,GAAqB,gBAAoB5D,GAAY90D,OAAO89B,OAAO,CAAC,EAAG+f,EAAM,CAC3E3sD,OAAQA,KACLmnE,EATL,CAUF,cCtFA,OAhDW,SAAcx4D,GACvB,IAAIxH,EAAWwH,EAAMxH,SACnB6vD,EAAWroD,EAAMqoD,SACjBF,EAAYnoD,EAAMmoD,UAElB2Q,GADgB,IAAAC,YAAW,OACAD,aACzBE,GAAe,IAAAC,QAAO,MAEtB7Q,EAAY0Q,EAAa,QACzBI,EAAY,GAAS9Q,GAEvB+Q,GADa,OAAeD,EAAW,GACnB,GAElBE,ECdS,SAAiBC,EAAS98D,EAAW4rD,GAClD,IACEmR,EADsB,aAAiB,OACdA,KACvBC,GAAY,EAAAC,GAAA,KACdC,GAAa,OAAeF,EAAW,GACvCxG,EAAQ0G,EAAW,GACnBN,EAASM,EAAW,GAClBL,GAAW,EAAAM,GAAA,IAAS,SAAUhmE,GAChC,IAAI21C,EAAOgwB,EAAQjpE,QACnB,KAAKkpE,aAAmC,EAASA,EAAKjR,WAAchf,EAApE,CAGA,IAAIswB,EAAatwB,EAAKsc,cAAc,IAAIzpD,OAAO64D,MAAgB1rB,IACpDiwB,GAAQ,CAAC,GACAM,YAEL,IAAgBD,EAAY,CACzCp9D,UAAWA,EACXw2D,MAAOA,EACP5K,UAAWA,EACXz0D,MAAOA,EACPylE,OAAQA,GAVV,CAYF,IACIU,EAAQ,WAQZ,OANuB,SAA0BnmE,GAC/CqkE,GAAA,EAAI3pC,OAAOyrC,EAAMzpE,SACjBypE,EAAMzpE,SAAU,EAAA2nE,GAAA,IAAI,WAClBqB,EAAS1lE,EACX,GACF,CAEF,CDnBiBomE,CAAQd,EAAc,IAAW5Q,EAAW+Q,GAAShR,GAwBpE,GAtBA,aAAgB,WACd,IAAI9e,EAAO2vB,EAAa5oE,QACxB,GAAKi5C,GAA0B,IAAlBA,EAAK0wB,WAAkB1R,EAApC,CAIA,IAAI7C,EAAU,SAAiB34D,IAExBmtE,GAAUntE,EAAEwE,UAEhBg4C,EAAK0J,cAAgB1J,EAAK0J,aAAa,aAAe1J,EAAKgf,UAAYhf,EAAK9sC,UAAUzO,SAAS,aAAeu7C,EAAK9sC,UAAUzO,SAAS,WAGvIsrE,EAASvsE,EACX,EAGA,OADAw8C,EAAKh2C,iBAAiB,QAASmyD,GAAS,GACjC,WACLnc,EAAK71C,oBAAoB,QAASgyD,GAAS,EAC7C,CAfA,CAgBF,GAAG,CAAC6C,KAEe,iBAAqB7vD,GACtC,OAAOA,QAA2CA,EAAW,KAE/D,IAAIuiD,GAAM,SAAWviD,IAAY,SAAWA,EAASuiD,IAAKie,GAAgBA,EAC1E,OAAO,SAAaxgE,EAAU,CAC5BuiD,IAAKA,GAET,yBErCWkf,GAAuC,gBAAoB,MAC3DC,GAAwB,SAA+B9R,EAAW3kC,GAC3E,IAAI02C,EAAqB,aAAiBF,IACtCG,EAAwB,WAAc,WACxC,IAAIpS,EACJ,IAAKmS,EACH,MAAO,GAET,IAAIE,EAAmBF,EAAmBE,iBACxCC,EAAcH,EAAmBG,YACjCC,EAAaJ,EAAmBI,WAC9BC,EAAiC,aAArBH,EAAkC,aAAe,IACjE,OAAO,IAAW,GAAGn+D,OAAOksD,EAAW,YAAYlsD,OAAOs+D,EAAW,SAAUxS,EAAc,CAAC,GAAG,OAAgBA,EAAa,GAAG9rD,OAAOksD,EAAW,YAAYlsD,OAAOs+D,EAAW,cAAeF,IAAc,OAAgBtS,EAAa,GAAG9rD,OAAOksD,EAAW,YAAYlsD,OAAOs+D,EAAW,aAAcD,IAAa,OAAgBvS,EAAa,GAAG9rD,OAAOksD,EAAW,YAAYlsD,OAAOs+D,EAAW,YAA2B,QAAd/2C,GAAsBukC,GAC9a,GAAG,CAACI,EAAW3kC,EAAW02C,IAC1B,MAAO,CACLM,YAAaN,aAA+D,EAASA,EAAmBM,YACxGJ,iBAAkBF,aAA+D,EAASA,EAAmBE,iBAC7GD,sBAAuBA,EAE3B,EACWM,GAAiB,SAAwBlgB,GAClD,IAAIhiD,EAAWgiD,EAAKhiD,SACpB,OAAoB,gBAAoByhE,GAAwBtQ,SAAU,CACxE7+D,MAAO,MACN0N,EACL,ECvCImiE,IAA2B,IAAAC,aAAW,SAAU56D,EAAO+6C,GACzD,IAAIx+C,EAAYyD,EAAMzD,UACpB9H,EAAQuL,EAAMvL,MACd+D,EAAWwH,EAAMxH,SACjB4vD,EAAYpoD,EAAMooD,UAChByS,EAAiB,IAAW,GAAG3+D,OAAOksD,EAAW,SAAU7rD,GAC/D,OAAoB,gBAAoB,OAAQ,CAC9Cw+C,IAAKA,EACLx+C,UAAWs+D,EACXpmE,MAAOA,GACN+D,EACL,IACA,MCTIsiE,IAAgC,IAAAF,aAAW,SAAUpgB,EAAMO,GAC7D,IAAIqN,EAAY5N,EAAK4N,UACnB7rD,EAAYi+C,EAAKj+C,UACjB9H,EAAQ+lD,EAAK/lD,MACbsmE,EAAgBvgB,EAAKugB,cACnBC,EAAgB,IAAW,GAAG9+D,OAAOksD,EAAW,iBAAkB7rD,GACtE,OAAoB,gBAAoB,GAAa,CACnD6rD,UAAWA,EACX7rD,UAAWy+D,EACXvmE,MAAOA,EACPsmD,IAAKA,GACS,gBAAoB,GAAiB,CACnDx+C,UAAWw+D,IAEf,IACIE,GAAoB,WACtB,MAAO,CACLvkE,MAAO,EACP4G,QAAS,EACTb,UAAW,WAEf,EACIy+D,GAAe,SAAsB7xB,GACvC,MAAO,CACL3yC,MAAO2yC,EAAK8xB,YACZ79D,QAAS,EACTb,UAAW,WAEf,EAsCA,GArCkB,SAAqBuD,GACrC,IAAIooD,EAAYpoD,EAAMooD,UACpBgT,EAAUp7D,EAAMo7D,QAChBC,EAAYr7D,EAAMq7D,UAClB9+D,EAAYyD,EAAMzD,UAClB9H,EAAQuL,EAAMvL,MACZyI,IAAYk+D,EAChB,OAAIC,EACkB,gBAAoBP,GAAkB,CACxD1S,UAAWA,EACX7rD,UAAWA,EACX9H,MAAOA,IAGS,gBAAoB,MAAW,CACjDyI,QAASA,EAETk7D,WAAY,GAAGl8D,OAAOksD,EAAW,wBACjCkT,eAAe,EACfC,cAAeN,GACfO,eAAgBN,GAChBO,aAAcR,GACdS,cAAeR,GACfS,aAAcT,GACdU,cAAeX,KACd,SAAUtU,EAAO5L,GAClB,IAAI8gB,EAAYlV,EAAMpqD,UACpBu/D,EAAcnV,EAAMlyD,MACtB,OAAoB,gBAAoBqmE,GAAkB,CACxD1S,UAAWA,EACX7rD,UAAWA,EACX9H,MAAO0L,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGxpC,GAAQqnE,GAC/C/gB,IAAKA,EACLggB,cAAec,GAEnB,GACF,ECpEI,GAAgC,SAAUp1D,EAAG5Z,GAC/C,IAAIH,EAAI,CAAC,EACT,IAAK,IAAIqa,KAAKN,EAAOtG,OAAOtX,UAAUqX,eAAe3V,KAAKkc,EAAGM,IAAMla,EAAEgP,QAAQkL,GAAK,IAAGra,EAAEqa,GAAKN,EAAEM,IAC9F,GAAS,MAALN,GAAqD,mBAAjCtG,OAAO+wB,sBAA2C,KAAIrnC,EAAI,EAAb,IAAgBkd,EAAI5G,OAAO+wB,sBAAsBzqB,GAAI5c,EAAIkd,EAAEvd,OAAQK,IAClIgD,EAAEgP,QAAQkL,EAAEld,IAAM,GAAKsW,OAAOtX,UAAUgsD,qBAAqBtqD,KAAKkc,EAAGM,EAAEld,MAAK6C,EAAEqa,EAAEld,IAAM4c,EAAEM,EAAEld,IADuB,CAGvH,OAAO6C,CACT,EAMWqvE,GAAgC,qBAAoB38C,GAmC/D,GAlCkB,SAAqBpf,GACrC,IAAIgoD,EACAgU,EAAoB,aAAiB,OACvClD,EAAekD,EAAkBlD,aACjCr1C,EAAYu4C,EAAkBv4C,UAC5Bw4C,EAAqBj8D,EAAMooD,UAC7Bn7B,EAAOjtB,EAAMitB,KACb1wB,EAAYyD,EAAMzD,UAClB2/D,EAAS,GAAOl8D,EAAO,CAAC,YAAa,OAAQ,cAC3CooD,EAAY0Q,EAAa,YAAamD,GACtC1C,GAAY,EAAAC,GAAA,KAEdL,GADa,OAAeI,EAAW,GACnB,GAClB4C,EAAU,GACd,OAAQlvC,GACN,IAAK,QACHkvC,EAAU,KACV,MACF,IAAK,QACHA,EAAU,KAQd,IAAIC,EAAU,IAAWhU,GAAYJ,EAAc,CAAC,GAAG,OAAgBA,EAAa,GAAG9rD,OAAOksD,EAAW,KAAKlsD,OAAOigE,GAAUA,IAAU,OAAgBnU,EAAa,GAAG9rD,OAAOksD,EAAW,QAAuB,QAAd3kC,GAAsBukC,GAAczrD,EAAW48D,GACnP,OAAoB,gBAAoB4C,GAAiBpS,SAAU,CACjE7+D,MAAOmiC,GACO,gBAAoB,MAAO9sB,OAAO89B,OAAO,CAAC,EAAGi+B,EAAQ,CACnE3/D,UAAW6/D,KAEf,EC/CIC,GAAc,uBACPC,GAAcD,GAAYpuE,KAAKlC,KAAKswE,IACxC,SAAS,GAAShyC,GACvB,MAAsB,iBAARA,CAChB,CACO,SAASkyC,GAAuBjrE,GACrC,MAAgB,SAATA,GAA4B,SAATA,CAC5B,CAmBO,SAASkrE,GAAchkE,EAAUikE,GACtC,IAAIC,GAAkB,EAClBC,EAAY,GAahB,OAZA,WAAe5rE,QAAQyH,GAAU,SAAUC,GACzC,IAAInH,SAAcmH,EACdmkE,EAA8B,WAATtrE,GAA8B,WAATA,EAC9C,GAAIorE,GAAmBE,EAAoB,CACzC,IAAIrsC,EAAYosC,EAAUnzE,OAAS,EAC/BqzE,EAAYF,EAAUpsC,GAC1BosC,EAAUpsC,GAAa,GAAGr0B,OAAO2gE,GAAW3gE,OAAOzD,EACrD,MACEkkE,EAAUzzE,KAAKuP,GAEjBikE,EAAkBE,CACpB,IACO,WAAejjD,IAAIgjD,GAAW,SAAUlkE,GAC7C,OAlCJ,SAA6BA,EAAOgkE,GAClC,GAAIhkE,QAAJ,CAGA,IAAIqkE,EAAQL,EAAe,IAAM,GACjC,MAAqB,iBAAVhkE,GAAuC,iBAAVA,GAAsB,GAASA,EAAMnH,OAASgrE,GAAY7jE,EAAMuH,MAAMxH,WACrG,SAAaC,EAAO,CACzBD,SAAUC,EAAMuH,MAAMxH,SAASyZ,MAAM,IAAID,KAAK8qD,KAG9C,GAASrkE,GACJ6jE,GAAY7jE,GAAsB,gBAAoB,OAAQ,KAAMA,EAAMwZ,MAAM,IAAID,KAAK8qD,IAAuB,gBAAoB,OAAQ,KAAMrkE,IAEvJ,SAAWA,GACO,gBAAoB,OAAQ,KAAMA,GAEjDA,CAbP,CAcF,CAiBWskE,CAAoBtkE,EAAOgkE,EACpC,GACF,CACA,gBCXO,SAASO,GAAoBjK,GAClC,IAAIjlC,EAAUvkC,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,CAChFm8D,OAAO,GAELsN,EAAeD,EAAMC,aACrBiK,EAAa,GAAG/gE,OAAO82D,EAAc,YACzC,OAAO,OAAgB,CAAC,EAAGiK,EAAY98D,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAxCtE,SAA2B80B,EAAOmK,EAAWpvC,GAC3C,IAAI64B,EACAwW,EAAarvC,EAAQqvC,WACvBzX,EAAQ53B,EAAQ43B,MAEd0X,EADYtvC,EAAQuvC,YACY,MAAQ,GACxCC,EAAe,CAAC,QAAS5X,EAAQ,QAAU,KAAM,UAAUxsD,OAAOqkE,SAAS5jD,KAAI,SAAUpC,GAC3F,MAAO,KAAKrb,OAAOqb,EAAG,KAAKrb,OAAOkhE,EACpC,IAAGprD,KAAK,KACR,OAAO20C,EAAQ,CAAC,GAAG,OAAgBA,EAAO,cAAczqD,OAAOghE,EAAW,eAAgB,CACxFM,iBAAkBzK,EAAM3qD,aACtB,OAAgBu+C,EAAO,SAAUxmD,OAAO89B,OAAO99B,OAAO89B,QAAO,OAAgB,CAAC,EAAGq/B,EAAc,CACjGlgE,OAAQ,IACN+/D,GAAa,OAAgB,CAAC,EAAG,IAAIjhE,OAAOihE,GAAa,CAC3D//D,OAAQ,IACL,CAAC,IAAI,OAAgB,CAAC,EAAG,eAAelB,OAAOkhE,GAAkB,CACpEhgE,OAAQ,MACJupD,CACR,CAsByE8W,CAAkB1K,EAAOkK,EAAYnvC,IApB9G,SAAiCs6B,EAAW8U,EAAWpvC,GACrD,IAAI05B,EACA6V,EAAcvvC,EAAQuvC,YACtBD,EAAkBC,EAAc,KAAKnhE,OAAOmhE,GAAe,GAC/D,OAAO7V,EAAQ,CAAC,GAAG,OAAgBA,EAAO,cAActrD,OAAOghE,EAAW,qBAAqBhhE,OAAOghE,EAAW,gBAAgBhhE,OAAOkhE,GAAkB,CACxJ5H,aAAc,KACZ,OAAgBhO,EAAO,cAActrD,OAAOghE,EAAW,eAAehhE,OAAOghE,EAAW,gBAAgB,OAAgB,CAAC,EAAG,KAAKhhE,OAAOkhE,EAAiB,OAAOlhE,OAAOksD,EAAW,QAAQlsD,OAAOkhE,EAAiB,OAAOlhE,OAAOksD,EAAW,QAAQlsD,OAAOkhE,GAAkB,CAC9QM,qBAAsB,EACtBC,mBAAoB,MACjB,OAAgBnW,EAAO,cAActrD,OAAOghE,EAAW,gBAAgBhhE,OAAOghE,EAAW,eAAe,OAAgB,CAAC,EAAG,KAAKhhE,OAAOkhE,EAAiB,OAAOlhE,OAAOksD,EAAW,QAAQlsD,OAAOkhE,EAAiB,OAAOlhE,OAAOksD,EAAW,QAAQlsD,OAAOkhE,GAAkB,CAC/QQ,uBAAwB,EACxBC,qBAAsB,KACnBrW,CACP,CAOyHsW,CAAwB9K,EAAciK,EAAYnvC,IAC3K,CCjBO,SAASiwC,GAA4BhL,GAC1C,IAbuC3K,EAAW8U,EAC9CvW,EAYAsW,EAAa,GAAG/gE,OAAO62D,EAAMC,aAAc,qBAC/C,OAAO,OAAgB,CAAC,EAAGiK,EAAY98D,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EA3BtE,SAAmC80B,EAAOmK,GACxC,IAAI1iB,EACJ,OAAOA,EAAO,CAAC,GAAG,OAAgBA,EAAM,cAAct+C,OAAOghE,EAAW,eAAgB,CACtFc,cAAejL,EAAM3qD,aACnB,OAAgBoyC,EAAM,SAAU,CAClC,2BAA4B,CAC1Bp9C,OAAQ,GAEV,cAAe,CACbA,OAAQ,KAERo9C,CACN,CAeyEyjB,CAA0BlL,EAAOkK,KAdjE7U,EAc+G2K,EAAMC,aAd1GkK,EAcwHD,EAZnKtW,EAAQ,CAAC,GAAG,OAAgBA,EAAO,cAAczqD,OAAOghE,EAAW,qBAAqBhhE,OAAOghE,EAAW,eAAgB,CAC/H1H,aAAc,KACZ,OAAgB7O,EAAO,SAASzqD,OAAOghE,EAAW,oBAAoBhhE,OAAOghE,EAAW,gBAAgB,OAAgB,CAAC,EAAG,OAAOhhE,OAAOksD,EAAW,UAAUlsD,OAAOksD,EAAW,OAAQ,CAC3LuV,mBAAoB,EACpBE,qBAAsB,MACnB,OAAgBlX,EAAO,SAASzqD,OAAOghE,EAAW,mBAAmBhhE,OAAOghE,EAAW,iBAAiB,OAAgB,CAAC,EAAG,OAAOhhE,OAAOksD,EAAW,UAAUlsD,OAAOksD,EAAW,OAAQ,CAC5LwV,uBAAwB,EACxBF,qBAAsB,KACnB/W,IAKP,iBC5BIuX,GAAuB,SAA8BC,EAAenH,GACtE,OAAO,OAAgB,CAAC,EAAG,aAAa96D,OAAOiiE,GAAgB,CAC7D,sBAAsB,OAAgB,CAAC,EAAG,UAAUjiE,OAAOiiE,GAAgB,CACzE,mBAAoB,CAClBC,qBAAsBpH,KAG1B,uBAAuB,OAAgB,CAAC,EAAG,UAAU96D,OAAOiiE,GAAgB,CAC1E,mBAAoB,CAClBE,uBAAwBrH,MAIhC,EAmCA,GAlCoB,SAAuBjE,GACzC,IAAIuL,EAAe3X,EACfqM,EAAeD,EAAMC,aACvBvpD,EAAWspD,EAAMtpD,SACjBrB,EAAY2qD,EAAM3qD,UAClBm2D,EAAoBxL,EAAMwL,kBAC1BC,EAAkBzL,EAAMyL,gBAC1B,OAAO,OAAgB,CAAC,EAAG,GAAGtiE,OAAO82D,EAAc,UAAW,EAAErM,EAAQ,CACtE7S,SAAU,WACVE,QAAS,gBACR,OAAgB2S,EAAO,aAAazqD,OAAO82D,GAAe,CAC3D,sBAAsB,OAAgB,CAAC,EAAG,UAAU92D,OAAO82D,GAAe,CACxE0K,qBAAsB,EACtBC,mBAAoB,IAEtB,uBAAuB,OAAgB,CACrCc,mBAAoBr2D,GACnB,UAAUlM,OAAO82D,GAAe,CACjC4K,uBAAwB,EACxBC,qBAAsB,OAEtB,OAAgBlX,EAAOqM,GAAesL,EAAgB,CACxDxqB,SAAU,WACV12C,OAAQ,IACP,OAAgBkhE,EAAe,mDAAoD,CACpFlhE,OAAQ,KACN,OAAgBkhE,EAAe,cAAe,CAChDlhE,OAAQ,IACNkhE,KAAiB,OAAgB3X,EAAO,GAAGzqD,OAAO82D,EAAc,cAAe,CACjFvpD,SAAUA,IACRk9C,GAEJuX,GAAqB,GAAGhiE,OAAO82D,EAAc,YAAauL,GAAoBL,GAAqB,GAAGhiE,OAAO82D,EAAc,WAAYwL,IACzI,ECzCIE,GAAuB,SAA8B3L,GACvD,IAAIuL,EACAtL,EAAeD,EAAMC,aACvB2L,EAAU5L,EAAM4L,QAChBC,EAAmB7L,EAAM6L,iBAC3B,OAAO,OAAgB,CAAC,EAAG5L,GAAesL,EAAgB,CACxDO,QAAS,OACT/qB,SAAU,WACVE,QAAS,eACT33B,WAAYuiD,EACZE,WAAY,SACZl1D,UAAW,SACXm1D,gBAAiB,OACjB9H,gBAAiB,cACjB+H,OAAQ,GAAG9iE,OAAO62D,EAAM3qD,UAAW,OAAOlM,OAAO62D,EAAMkM,SAAU,gBACjEvqE,OAAQ,UACR2+D,WAAY,OAAOn3D,OAAO62D,EAAMmM,kBAAmB,KAAKhjE,OAAO62D,EAAMQ,iBACrE4L,WAAY,OACZC,YAAa,eACb11D,WAAYqpD,EAAMrpD,WAClBgzB,MAAOq2B,EAAMsM,UACb,iBAAkB,CAChBnrB,cAAe,QAEjB,SAAU,CACRF,QAAS,kBAEV,OAAgBsqB,EAAe,GAAGpiE,OAAO82D,EAAc,SAAU,CAClEtpD,WAAY,KACV,OAAgB40D,EAAe,KAAKpiE,OAAOyiE,EAAS,sBAAsBziE,OAAOyiE,GAAU,CAC7FF,kBAAmB1L,EAAMuM,YACvB,OAAgBhB,EAAe,SAASpiE,OAAO82D,EAAc,kBAAkB92D,OAAO82D,EAAc,UAAU,OAAgB,CAAC,EAAG,IAAI92D,OAAO82D,EAAc,qCAAsC,CACnMwK,gBAAiBzK,EAAMuM,aACpB,OAAgBhB,EAAe,MAAO,CACzC5hC,MAAO,kBACL,OAAgB4hC,EAAe,mBAAoBn+D,OAAO89B,OAAO,CAAC,GAAG,SAAc80B,MAAU,OAAgBuL,EAAe,cAAcpiE,OAAO82D,EAAc,iBAAkB,CACnLuM,KAAM,UACJ,OAAgBjB,EAAe,iBAAiBpiE,OAAO82D,EAAc,aAAa,OAAgB,CAAC,EAAG,uBAAuB92D,OAAO82D,EAAc,iBAAiB92D,OAAO82D,EAAc,4BAA6B,CACvNlf,SAAU,WACV,WAAY,CACVA,SAAU,WACVl8C,KAAMm7D,EAAM3qD,UACZo3D,kBAAmBzM,EAAM3qD,UACzB4rC,QAAS,eACTt9C,MAAOq8D,EAAM3qD,UACbzR,OAAQ,eAAeuF,OAAyB,EAAlB62D,EAAM3qD,UAAe,OACnD6uD,gBAAiBlE,EAAMwL,kBACvBkB,QAAS,UAER,OAAgBnB,EAAe,2BAA2B,OAAgB,CAAC,EAAG,IAAIpiE,OAAO82D,EAAc,aAAa,OAAgB,CAAC,EAAG,uBAAuB92D,OAAO82D,EAAc,0BAA0B92D,OAAO82D,EAAc,4BAA6B,CACnQlf,SAAU,WACV,WAAY,CACVA,SAAU,WACVl8C,KAAMm7D,EAAM3qD,UACZo3D,kBAAmBzM,EAAM3qD,UACzB4rC,QAAS,eACTt9C,MAAO,eAAewF,OAAyB,EAAlB62D,EAAM3qD,UAAe,OAClDzR,OAAQo8D,EAAM3qD,UACd6uD,gBAAiBlE,EAAMwL,kBACvBkB,QAAS,UAEPnB,GACR,EACIoB,GAA4B,SAAmCC,EAAQC,EAAYC,GACrF,OAAO,OAAgB,CAAC,EAAG,wBAAwB3jE,OAAOyjE,EAAQ,cAAe,CAC/E,UAAWC,EACX,WAAYC,GAEhB,EAEIC,GAAuB,SAA8B/M,GACvD,MAAO,CACLgN,SAAUhN,EAAMiN,cAChBC,mBAAoB,EACpBC,iBAAkB,EAClB1K,aAAc,MAElB,EACI2K,GAAsB,SAA6BpN,GACrD,MAAO,CACLyC,aAAczC,EAAMiN,cACpBC,mBAAoBlN,EAAMiN,cAAgB,EAC1CE,iBAAkBnN,EAAMiN,cAAgB,EAE5C,EAWII,GAAsB,SAA6BT,EAAQU,EAAWrJ,EAAasJ,EAAmBC,EAAqBX,EAAYC,GACzI,OAAO,OAAgB,CAAC,EAAG,IAAI3jE,OAAOyjE,EAAQ,qBAAsBx/D,OAAO89B,OAAO99B,OAAO89B,OAAO,CAC9FvB,MAAO2jC,QAAajhD,EACpB63C,gBAAiB,cACjBD,YAAaA,QAAe53C,EAC5Bg0C,UAAW,QACVsM,GAA0BC,EAAQx/D,OAAO89B,OAAO,CACjDg5B,gBAAiB,eAChB2I,GAAaz/D,OAAO89B,OAAO,CAC5Bg5B,gBAAiB,eAChB4I,KAAgB,CACjB,aAAc,CACZnrE,OAAQ,cACRgoC,MAAO4jC,QAAqBlhD,EAC5B43C,YAAauJ,QAAuBnhD,KAG1C,EACIohD,GAA8B,SAAqCzN,GACrE,OAAO,OAAgB,CAAC,EAAG,gBAAgB72D,OAAO62D,EAAMC,aAAc,aAAc7yD,OAAO89B,OAAO,CAAC,EA5B9E,SAA0B80B,GAC/C,MAAO,CACLr+D,OAAQ,cACRsiE,YAAajE,EAAM0N,YACnB/jC,MAAOq2B,EAAM2N,kBACbzJ,gBAAiBlE,EAAM4N,yBACvBvN,UAAW,OAEf,CAoBwGwN,CAAiB7N,IACzH,EACI8N,GAAsB,SAA6B9N,GACrD,OAAO5yD,OAAO89B,OAAO,CAAC,EAAGuiC,GAA4BzN,GACvD,EACI+N,GAA6B,SAAoC/N,GACnE,OAAO,OAAgB,CAAC,EAAG,gBAAgB72D,OAAO62D,EAAMC,aAAc,aAAc,CAClFt+D,OAAQ,cACRgoC,MAAOq2B,EAAM2N,mBAEjB,EAEIK,GAAwB,SAA+BhO,GACzD,OAAO5yD,OAAO89B,OAAO99B,OAAO89B,OAAO99B,OAAO89B,OAAO99B,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAG4iC,GAAoB9N,IAAS,CAC5GkE,gBAAiBlE,EAAMiO,iBACvBhK,YAAajE,EAAM0N,YACnBrN,UAAW,KAAKl3D,OAAO62D,EAAMkO,oBAAqB,SAAS/kE,OAAO62D,EAAMmO,qBACtExB,GAA0B3M,EAAMC,aAAc,CAChDt2B,MAAOq2B,EAAMwL,kBACbvH,YAAajE,EAAMwL,mBAClB,CACD7hC,MAAOq2B,EAAMoO,mBACbnK,YAAajE,EAAMoO,sBAChBf,GAAoBrN,EAAMC,aAAcD,EAAMiO,iBAAkBjO,EAAMiO,iBAAkBjO,EAAM2N,kBAAmB3N,EAAM0N,eAAe,OAAgB,CAAC,EAAG,IAAIvkE,OAAO62D,EAAMC,aAAc,cAAe7yD,OAAO89B,OAAO99B,OAAO89B,OAAO99B,OAAO89B,OAAO,CACrPvB,MAAOq2B,EAAMqO,WACbpK,YAAajE,EAAMqO,YAClB1B,GAA0B3M,EAAMC,aAAc,CAC/Ct2B,MAAOq2B,EAAMyL,gBACbxH,YAAajE,EAAMsO,uBAClB,CACD3kC,MAAOq2B,EAAMuO,iBACbtK,YAAajE,EAAMuO,oBAChBlB,GAAoBrN,EAAMC,aAAcD,EAAMqO,WAAYrO,EAAMqO,WAAYrO,EAAM2N,kBAAmB3N,EAAM0N,cAAeD,GAA4BzN,KAC7J,EA0EIwO,GAAqB,SAA4BxO,GACnD,IAAIyO,EACAxO,EAAeD,EAAMC,aACzB,OAAOwO,EAAQ,CAAC,GAAG,OAAgBA,EAAO,GAAGtlE,OAAO82D,EAAc,YAAa+N,GAAsBhO,KAAS,OAAgByO,EAAO,GAAGtlE,OAAO82D,EAAc,YA3EnI,SAA+BD,GACzD,OAAO5yD,OAAO89B,OAAO99B,OAAO89B,OAAO99B,OAAO89B,OAAO99B,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAG4iC,GAAoB9N,IAAS,CAC5Gr2B,MAAOq2B,EAAM0O,oBACbxK,gBAAiBlE,EAAME,aACvBG,UAAW,KAAKl3D,OAAO62D,EAAMkO,oBAAqB,SAAS/kE,OAAO62D,EAAM2O,kBACtEhC,GAA0B3M,EAAMC,aAAc,CAChDt2B,MAAOq2B,EAAM0O,oBACbxK,gBAAiBlE,EAAMwL,mBACtB,CACD7hC,MAAOq2B,EAAM0O,oBACbxK,gBAAiBlE,EAAMoO,sBACpBf,GAAoBrN,EAAMC,aAAcD,EAAME,aAAcF,EAAME,aAAcF,EAAM2N,kBAAmB3N,EAAM0N,YAAa,CAC/H/jC,MAAOq2B,EAAMwL,kBACbvH,YAAajE,EAAMwL,mBAClB,CACD7hC,MAAOq2B,EAAMoO,mBACbnK,YAAajE,EAAMoO,uBAChB,OAAgB,CAAC,EAAG,IAAIjlE,OAAO62D,EAAMC,aAAc,cAAe7yD,OAAO89B,OAAO99B,OAAO89B,OAAO99B,OAAO89B,OAAO,CAC/Gg5B,gBAAiBlE,EAAMqO,WACvBhO,UAAW,KAAKl3D,OAAO62D,EAAMkO,oBAAqB,SAAS/kE,OAAO62D,EAAM4O,oBACvEjC,GAA0B3M,EAAMC,aAAc,CAC/CiE,gBAAiBlE,EAAMyL,iBACtB,CACDvH,gBAAiBlE,EAAMuO,oBACpBlB,GAAoBrN,EAAMC,aAAcD,EAAMqO,WAAYrO,EAAMqO,WAAYrO,EAAM2N,kBAAmB3N,EAAM0N,YAAa,CAC3H/jC,MAAOq2B,EAAMyL,gBACbxH,YAAajE,EAAMyL,iBAClB,CACD9hC,MAAOq2B,EAAMuO,iBACbtK,YAAajE,EAAMuO,oBAChBd,GAA4BzN,KACnC,CA4C4K6O,CAAsB7O,KAAS,OAAgByO,EAAO,GAAGtlE,OAAO82D,EAAc,WA1C/N,SAA8BD,GACvD,OAAO5yD,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAG8iC,GAAsBhO,IAAS,CACpE8O,YAAa,UAEjB,CAsCsQC,CAAqB/O,KAAS,OAAgByO,EAAO,GAAGtlE,OAAO82D,EAAc,SApC1T,SAA4BD,GACnD,OAAO5yD,OAAO89B,OAAO99B,OAAO89B,OAAO99B,OAAO89B,OAAO,CAC/CvB,MAAOq2B,EAAMgP,WACZrC,GAA0B3M,EAAMC,aAAc,CAC/Ct2B,MAAOq2B,EAAMiP,gBACZ,CACDtlC,MAAOq2B,EAAMkP,mBACVnB,GAA2B/N,KAAS,OAAgB,CAAC,EAAG,IAAI72D,OAAO62D,EAAMC,aAAc,cAAe7yD,OAAO89B,OAAO99B,OAAO89B,OAAO,CACrIvB,MAAOq2B,EAAMqO,YACZ1B,GAA0B3M,EAAMC,aAAc,CAC/Ct2B,MAAOq2B,EAAMyL,iBACZ,CACD9hC,MAAOq2B,EAAMuO,oBACVR,GAA2B/N,KAClC,CAsB6VmP,CAAmBnP,KAAS,OAAgByO,EAAO,GAAGtlE,OAAO82D,EAAc,SApB/Y,SAA4BD,GACnD,OAAO5yD,OAAO89B,OAAO99B,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGyhC,GAA0B3M,EAAMC,aAAc,CACjGt2B,MAAOq2B,EAAMsM,UACbpI,gBAAiBlE,EAAMoP,kBACtB,CACDzlC,MAAOq2B,EAAMsM,UACbpI,gBAAiBlE,EAAMqP,qBACpBtB,GAA2B/N,KAAS,OAAgB,CAAC,EAAG,IAAI72D,OAAO62D,EAAMC,aAAc,cAAe7yD,OAAO89B,OAAO99B,OAAO89B,OAAO,CACrIvB,MAAOq2B,EAAMqO,YACZN,GAA2B/N,IAAS2M,GAA0B3M,EAAMC,aAAc,CACnFt2B,MAAOq2B,EAAMyL,gBACbvH,gBAAiBlE,EAAMsP,cACtB,CACD3lC,MAAOq2B,EAAMyL,gBACbvH,gBAAiBlE,EAAMsP,iBAE3B,CAIkbC,CAAmBvP,KAAS,OAAgByO,EAAO,GAAGtlE,OAAO82D,EAAc,UAAWoN,GAAoBrN,EAAMC,aAAcD,EAAMiO,iBAAkBjO,EAAMiO,iBAAkBjO,EAAM2N,kBAAmB3N,EAAM0N,cAAee,CAC9oB,EAEIe,GAAqB,SAA4BxP,GACnD,IAAIyP,EAAWC,EACXC,EAAgBn5E,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,GACpFypE,EAAeD,EAAMC,aACvBgN,EAAgBjN,EAAMiN,cACtBv2D,EAAWspD,EAAMtpD,SACjBC,EAAaqpD,EAAMrpD,WACnBtB,EAAY2qD,EAAM3qD,UAClBotD,EAAezC,EAAMyC,aACrBmN,EAA0B5P,EAAM4P,wBAChChE,EAAU5L,EAAM4L,QACdiE,EAAkBhgE,KAAKE,IAAI,GAAIk9D,EAAgBv2D,EAAWC,GAAc,EAAItB,GAC5Ey6D,EAAoBF,EAA0Bv6D,EAC9C06D,EAAc,GAAG5mE,OAAO82D,EAAc,cAC1C,MAAO,EACP,OAAgB,CAAC,EAAG,GAAG92D,OAAO82D,GAAc92D,OAAOwmE,IAAiBD,EAAkB,CACpFh5D,SAAUA,EACV9S,OAAQqpE,EACR+C,QAAS,GAAG7mE,OAAO0mE,EAAiB,OAAO1mE,OAAO2mE,EAAmB,MACrErN,aAAcA,IACb,OAAgBiN,EAAiB,IAAIvmE,OAAO4mE,IAAeN,EAAY,CACxE9rE,MAAOspE,EACPC,mBAAoB,EACpBC,iBAAkB,IACjB,OAAgBsC,EAAW,IAAItmE,OAAO82D,EAAc,UAAW,CAChEt8D,MAAO,UACL,OAAgB8rE,EAAW7D,EAAS,CACtCl1D,SAAUspD,EAAMiQ,yBACdR,KAAa,OAAgBC,EAAiB,IAAIvmE,OAAO82D,EAAc,YAAa,CACtF11D,QAASy1D,EAAMkQ,eACfvuE,OAAQ,aACN,OAAgB+tE,EAAiB,GAAGvmE,OAAO82D,EAAc,iBAAkB,CAC7EK,WAAY,SAASn3D,OAAO62D,EAAMmQ,mBAAoB,KAAKhnE,OAAO62D,EAAMQ,gBAAiB,cAAcr3D,OAAO62D,EAAMmQ,mBAAoB,KAAKhnE,OAAO62D,EAAMQ,mBACxJkP,KACJ,OAAgB,CAAC,EAAG,GAAGvmE,OAAO82D,GAAc92D,OAAO82D,EAAc,WAAW92D,OAAOwmE,GAAgB5C,GAAqB/M,KAAS,OAAgB,CAAC,EAAG,GAAG72D,OAAO82D,GAAc92D,OAAO82D,EAAc,UAAU92D,OAAOwmE,GAAgBvC,GAAoBpN,IACzP,EACIoQ,GAAyB,SAAgCpQ,GAC3D,OAAOwP,GAAmBxP,EAC5B,EACIqQ,GAA0B,SAAiCrQ,GAC7D,IAAIsQ,GAAa,SAAWtQ,EAAO,CACjCiN,cAAejN,EAAMuQ,gBACrBP,QAAShQ,EAAMwQ,UACfZ,wBAAyB,EACzBnN,aAAczC,EAAMyQ,eACpBR,uBAAwBjQ,EAAM0Q,WAAa,IAE7C,OAAOlB,GAAmBc,EAAY,GAAGnnE,OAAO62D,EAAMC,aAAc,OACtE,EACI0Q,GAA0B,SAAiC3Q,GAC7D,IAAI4Q,GAAa,SAAW5Q,EAAO,CACjCiN,cAAejN,EAAM6Q,gBACrBn6D,SAAUspD,EAAM0Q,WAChBjO,aAAczC,EAAM8Q,eACpBb,uBAAwBjQ,EAAM0Q,WAAa,IAE7C,OAAOlB,GAAmBoB,EAAY,GAAGznE,OAAO62D,EAAMC,aAAc,OACtE,EACI8Q,GAAsB,SAA6B/Q,GACrD,IAAIC,EAAeD,EAAMC,aACzB,OAAO,OAAgB,CAAC,EAAGA,GAAc,OAAgB,CAAC,EAAG,IAAI92D,OAAO82D,EAAc,UAAW,CAC/Ft8D,MAAO,SAEX,EAEA,IAAe,EAAA88D,GAAA,GAAsB,UAAU,SAAUT,GACvD,IAAImO,EAAoBnO,EAAMmO,kBAC5B6C,EAA2BhR,EAAMgR,yBAC/BC,GAAc,SAAWjR,EAAO,CAClCkR,oBAAqB/C,EACrByB,wBAAyBoB,EACzBf,uBAAwBjQ,EAAM0Q,WAC9B7E,iBAAkB,MAEpB,MAAO,CAEPF,GAAqBsF,GAErBZ,GAAwBY,GAAcb,GAAuBa,GAAcN,GAAwBM,GAEnGF,GAAoBE,GAEpBzC,GAAmByC,GAEnB,GAAcA,GAEdhH,GAAoBjK,GAAQgL,GAA4BhL,GAC1D,IC/TI,GAAgC,SAAUtsD,EAAG5Z,GAC/C,IAAIH,EAAI,CAAC,EACT,IAAK,IAAIqa,KAAKN,EAAOtG,OAAOtX,UAAUqX,eAAe3V,KAAKkc,EAAGM,IAAMla,EAAEgP,QAAQkL,GAAK,IAAGra,EAAEqa,GAAKN,EAAEM,IAC9F,GAAS,MAALN,GAAqD,mBAAjCtG,OAAO+wB,sBAA2C,KAAIrnC,EAAI,EAAb,IAAgBkd,EAAI5G,OAAO+wB,sBAAsBzqB,GAAI5c,EAAIkd,EAAEvd,OAAQK,IAClIgD,EAAEgP,QAAQkL,EAAEld,IAAM,GAAKsW,OAAOtX,UAAUgsD,qBAAqBtqD,KAAKkc,EAAGM,EAAEld,MAAK6C,EAAEqa,EAAEld,IAAM4c,EAAEM,EAAEld,IADuB,CAGvH,OAAO6C,CACT,EAiBO,SAASw3E,GAAmB5yE,GACjC,MAAa,WAATA,EACK,CACL6yE,QAAQ,GAGL,CACL7yE,KAAMA,EAEV,CAeA,IAAI8yE,GAAiB,SAAwBpkE,EAAO+6C,GAClD,IAAIiN,EACAl+D,EAAI+V,EACJwkE,EAAiBrkE,EAAMo7D,QACzBA,OAA6B,IAAnBiJ,GAAoCA,EAC9CpI,EAAqBj8D,EAAMooD,UAC3Bkc,EAActkE,EAAM1O,KACpBA,OAAuB,IAAhBgzE,EAAyB,UAAYA,EAC5CH,EAASnkE,EAAMmkE,OACfI,EAAevkE,EAAM5R,MACrBA,OAAyB,IAAjBm2E,EAA0B,UAAYA,EAC9CC,EAAgBxkE,EAAMitB,KACtBw3C,EAASzkE,EAAMykE,OACfC,EAAiB1kE,EAAMqoD,SACvB9rD,EAAYyD,EAAMzD,UAClBooE,EAAgB3kE,EAAM2kE,cACtBnsE,EAAWwH,EAAMxH,SACjBq3D,EAAO7vD,EAAM6vD,KACb+U,EAAe5kE,EAAM6kE,MACrBA,OAAyB,IAAjBD,GAAkCA,EAC1CE,EAAe9kE,EAAM+kE,MACrBA,OAAyB,IAAjBD,GAAkCA,EAC1CE,EAAkBhlE,EAAMilE,SACxBA,OAA+B,IAApBD,EAA6B,SAAWA,EACnDE,EAAmBllE,EAAMmlE,WACzBC,EAAeplE,EAAMvL,MACrB4wE,OAA+B,IAAjBD,EAA0B,CAAC,EAAIA,EAC7CE,EAAO,GAAOtlE,EAAO,CAAC,UAAW,YAAa,OAAQ,SAAU,QAAS,OAAQ,SAAU,WAAY,YAAa,gBAAiB,WAAY,OAAQ,QAAS,QAAS,WAAY,aAAc,UACnMulE,GAAc,IAAAxM,YAAW,OAC3BD,EAAeyM,EAAYzM,aAC3B0M,EAA0BD,EAAYC,wBACtC/hD,EAAY8hD,EAAY9hD,UACxB7uB,EAAS2wE,EAAY3wE,OACnBwzD,EAAY0Q,EAAa,MAAOmD,GAChC/C,EAAY,GAAS9Q,GACvBqd,GAAa,OAAevM,EAAW,GACvCwM,EAAUD,EAAW,GACrBtM,EAASsM,EAAW,GAClBpd,GAAW,IAAA0Q,YAAW,IACtB4M,EAAiBjB,QAAuDA,EAAiBrc,EACzFud,GAAY,IAAA7M,YAAWgD,IACvB8J,GAAiB,IAAAC,UAAQ,WAC3B,OAxDJ,SAA0B1K,GACxB,GAAuB,iBAAZA,GAAwBA,EAAS,CAC1C,IAAI5uE,EAAQ4uE,aAAyC,EAASA,EAAQ5uE,MAEtE,MAAO,CACL4uE,SAAS,EACT5uE,MAHaoe,OAAOC,MAAMre,IAA2B,iBAAVA,EAGlB,EAARA,EAErB,CACA,MAAO,CACL4uE,UAAWA,EACX5uE,MAAO,EAEX,CA2CWu5E,CAAiB3K,EAC1B,GAAG,CAACA,IACA4K,GAAY,IAAAC,UAASJ,EAAezK,SACtC8K,GAAa,OAAeF,EAAW,GACvCG,EAAeD,EAAW,GAC1BE,EAAaF,EAAW,GACtBG,GAAa,IAAAJ,WAAS,GACxBK,GAAa,OAAeD,EAAY,GACxCE,GAAeD,EAAW,GAC1BE,GAAkBF,EAAW,GAC3BG,IAA2B,IAAAC,aAC3BC,IAAY,SAAW5rB,EAAK0rB,IAC5BhK,GAA4C,IAA7B,EAAAmK,SAASntD,MAAMjhB,KAAoBq3D,IAAS0M,GAAuBjrE,IACtF,IAAAu1E,YAAU,WACR,IAAIC,EAAa,KAejB,OAdIjB,EAAer5E,MAAQ,EACzBs6E,EAAa76E,YAAW,WACtB66E,EAAa,KACbV,GAAW,EACb,GAAGP,EAAer5E,OAElB45E,EAAWP,EAAezK,SAE5B,WACM0L,IACFx5E,aAAaw5E,GACbA,EAAa,KAEjB,CAEF,GAAG,CAACjB,KACJ,IAAAgB,YAAU,WAER,GAAKF,IAAcA,GAAUv2E,UAAuC,IAA5Bo1E,EAAxC,CAGA,IAAIuB,EAAaJ,GAAUv2E,QAAQ42E,YAC/BvK,IAAgBH,GAAYyK,GACzBR,IACHC,IAAgB,GAETD,IACTC,IAAgB,EAPlB,CASF,GAAG,CAACG,KACJ,IAAIM,GAAc,SAAqBp6E,GACrC,IAAI24D,EAAUxlD,EAAMwlD,QAEhB2gB,GAAgBR,EAClB94E,EAAEuI,iBAGJowD,SAAkDA,EAAQ34D,EAC5D,EAGIq6E,IAA8C,IAA5B1B,EAClB2B,GAAwBjN,GAAsB9R,EAAW3kC,GAC3Dg3C,GAAc0M,GAAsB1M,YACpCL,GAAwB+M,GAAsB/M,sBAC5CgN,GAAmB,CACrBC,MAAO,KACPC,MAAO,KACPC,YAAQnoD,GAENooD,IAAe,SAAQ,SAAUC,GACnC,IAAI39E,EAAI+V,EACR,OAAqJ,QAA7IA,EAAiG,QAA3F/V,EAAK06E,QAAqDA,EAAgB/J,UAAgC,IAAP3wE,EAAgBA,EAAK87E,SAA8B,IAAP/lE,EAAgBA,EAAK4nE,CACpL,IACItL,GAAUqL,IAAeJ,GAAiBI,KAAsB,GAChEE,GAAWvB,EAAe,UAAYtW,EACtC8X,IAAsB,QAAKrC,EAAM,CAAC,aAClClJ,GAAU,IAAWhU,EAAW+Q,GAASnR,EAAc,CAAC,GAAG,OAAgBA,EAAa,GAAG9rD,OAAOksD,EAAW,KAAKlsD,OAAO9N,GAAkB,YAAVA,GAAuBA,IAAQ,OAAgB45D,EAAa,GAAG9rD,OAAOksD,EAAW,KAAKlsD,OAAO5K,GAAOA,IAAO,OAAgB02D,EAAa,GAAG9rD,OAAOksD,EAAW,KAAKlsD,OAAOigE,IAAUA,KAAU,OAAgBnU,EAAa,GAAG9rD,OAAOksD,EAAW,eAAgB5vD,GAAyB,IAAbA,KAAoBkvE,KAAW,OAAgB1f,EAAa,GAAG9rD,OAAOksD,EAAW,qBAAsByc,IAAUtI,GAAuBjrE,KAAQ,OAAgB02D,EAAa,GAAG9rD,OAAOksD,EAAW,YAAa+d,IAAe,OAAgBne,EAAa,GAAG9rD,OAAOksD,EAAW,sBAAuBme,IAAgBW,KAAoBf,IAAe,OAAgBne,EAAa,GAAG9rD,OAAOksD,EAAW,UAAW2c,IAAQ,OAAgB/c,EAAa,GAAG9rD,OAAOksD,EAAW,gBAAiB+b,IAAS,OAAgBnc,EAAa,GAAG9rD,OAAOksD,EAAW,QAAuB,QAAd3kC,GAAsBukC,GAAcoS,GAAuB79D,EAAWooE,EAAe/vE,aAAuC,EAASA,EAAO2H,WAC9jCqrE,GAAYznE,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGrpC,aAAuC,EAASA,EAAOH,OAAQ4wE,GAC3GwC,GAAc,IAAW3C,aAA2D,EAASA,EAAiBrV,KAAmF,QAA5E/lE,EAAK8K,aAAuC,EAASA,EAAOuwE,kBAA+B,IAAPr7E,OAAgB,EAASA,EAAG+lE,MACrOiY,GAAY3nE,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,GAAIwmC,aAAuC,EAASA,EAAO5U,OAAS,CAAC,IAA8E,QAAxEhwD,EAAKjL,aAAuC,EAASA,EAAO6vE,cAA2B,IAAP5kE,OAAgB,EAASA,EAAGgwD,OAAS,CAAC,GAC1OkY,GAAWlY,IAASsW,EAA4B,gBAAoB,GAAa,CACnF/d,UAAWA,EACX7rD,UAAWsrE,GACXpzE,MAAOqzE,IACNjY,GAAqB,gBAAoB,GAAa,CACvDwL,YAAaxL,EACbzH,UAAWA,EACXgT,UAAW+K,IAET6B,GAAOxvE,GAAyB,IAAbA,EAAiBgkE,GAAchkE,EAAUikE,IAAgByK,IAAmB,KACnG,QAAiC9nD,IAA7BuoD,GAAoBM,KACtB,OAAOvC,EAAsB,gBAAoB,IAAKvlE,OAAO89B,OAAO,CAAC,EAAG0pC,GAAqB,CAC3FprE,UAAW,IAAW6/D,IAAS,OAAgB,CAAC,EAAG,GAAGlgE,OAAOksD,EAAW,aAAcud,IACtFlxE,MAAOmzE,GACPpiB,QAASyhB,GACTlsB,IAAK4rB,KACHoB,GAAUC,KAEhB,IAAIE,GAA0B,gBAAoB,SAAU/nE,OAAO89B,OAAO,CAAC,EAAGqnC,EAAM,CAClFh0E,KAAM2zE,EACN1oE,UAAW6/D,GACX3nE,MAAOmzE,GACPpiB,QAASyhB,GACT5e,SAAUsd,EACV5qB,IAAK4rB,KACHoB,GAAUC,IAOd,OANKzL,GAAuBjrE,KAC1B42E,GAA0B,gBAAoB,GAAM,CAClD/f,UAAW,SACXE,WAAY8d,GACX+B,KAEExC,EAAQwC,GACjB,EACIC,IAAsB,IAAAvN,YAAWwJ,IAIrC+D,GAAOC,MAAQ,GACfD,GAAOE,cAAe,EACtB,IC5MA,GD4MA,GE/MO,SAASC,GAASvmB,GACvB,OAAO5hD,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAG8jB,GAAO,CAC5CwmB,aAAcxmB,EAAKwmB,aACnBC,iBAAkBzmB,EAAKymB,iBACvB59E,KAAMm3D,EAAKn3D,KACXqiC,KAAM80B,EAAK90B,KACX37B,KAAMywD,EAAKzwD,KACXyxD,IAAKhB,EAAKgB,IACVrB,QAAS,EACT+mB,cAAe1mB,GAEnB,CAEO,SAAS2mB,GAAe3mB,EAAMuC,GACnC,IAAIqkB,GAAe,OAAmBrkB,GAClCskB,EAAYD,EAAaE,WAAU,SAAUruB,GAE/C,OADUA,EAAKuI,MACAhB,EAAKgB,GACtB,IAMA,OALmB,IAAf6lB,EACFD,EAAaz/E,KAAK64D,GAElB4mB,EAAaC,GAAa7mB,EAErB4mB,CACT,CACO,SAASG,GAAY/mB,EAAMuC,GAChC,IAAIykB,OAAwB3pD,IAAb2iC,EAAKgB,IAAoB,MAAQ,OAChD,OAAOuB,EAASprD,QAAO,SAAUkH,GAC/B,OAAOA,EAAK2oE,KAAchnB,EAAKgnB,EACjC,IAAG,EACL,CAYA,IAOIC,GAAkB,SAAyB13E,GAC7C,OAAkC,IAA3BA,EAAKuK,QAAQ,SACtB,EACWotE,GAAa,SAAoBlnB,GAC1C,GAAIA,EAAKzwD,OAASywD,EAAKmnB,SACrB,OAAOF,GAAgBjnB,EAAKzwD,MAE9B,IAAIgxD,EAAMP,EAAKmnB,UAAYnnB,EAAKO,KAAO,GACnC6mB,EAfQ,WACZ,IACIrvD,GADMvwB,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,IAC/D0oB,MAAM,KAEjBm3D,EADWtvD,EAAKA,EAAKtwB,OAAS,GACGyoB,MAAM,QAAQ,GACnD,OAAQ,cAAc2qB,KAAKwsC,IAA0B,CAAC,KAAK,EAC7D,CASkBC,CAAQ/mB,GACxB,SAAI,gBAAgBr0D,KAAKq0D,KAAQ,2DAA2Dr0D,KAAKk7E,MAG7F,SAASl7E,KAAKq0D,KAId6mB,CAKN,EACIG,GAAe,IACZ,SAASC,GAAaxnB,GAC3B,OAAO,IAAIxyB,SAAQ,SAAUS,GAC3B,GAAK+xB,EAAKzwD,MAAS03E,GAAgBjnB,EAAKzwD,MAAxC,CAIA,IAAIpB,EAASoD,SAAS+Z,cAAc,UACpCnd,EAAOwG,MAAQ4yE,GACfp5E,EAAOyG,OAAS2yE,GAChBp5E,EAAOuE,MAAM+0E,QAAU,4CAA4CttE,OAAOotE,GAAc,gBAAgBptE,OAAOotE,GAAc,qCAC7Hh2E,SAASgiD,KAAKh/C,YAAYpG,GAC1B,IAAIo+B,EAAMp+B,EAAOod,WAAW,MACxBm8D,EAAM,IAAIpY,MAsBd,GArBAoY,EAAI11B,OAAS,WACX,IAAIr9C,EAAQ+yE,EAAI/yE,MACdC,EAAS8yE,EAAI9yE,OACX+yE,EAAYJ,GACZK,EAAaL,GACbpyE,EAAU,EACVE,EAAU,EACVV,EAAQC,EAEVS,KADAuyE,EAAahzE,GAAU2yE,GAAe5yE,IACbgzE,GAAa,EAGtCxyE,KADAwyE,EAAYhzE,GAAS4yE,GAAe3yE,IACZgzE,GAAc,EAExCr7C,EAAIs7C,UAAUH,EAAKvyE,EAASE,EAASsyE,EAAWC,GAChD,IAAIE,EAAU35E,EAAO45E,YACrBx2E,SAASgiD,KAAKt9C,YAAY9H,GAC1BrE,OAAOk+E,IAAIC,gBAAgBP,EAAI38C,KAC/BkD,EAAQ65C,EACV,EACAJ,EAAIQ,YAAc,YACdloB,EAAKzwD,KAAK44E,WAAW,iBAAkB,CACzC,IAAIC,EAAS,IAAIC,WACjBD,EAAOp2B,OAAS,WACVo2B,EAAO5uE,SAAQkuE,EAAI38C,IAAMq9C,EAAO5uE,OACtC,EACA4uE,EAAOE,cAActoB,EACvB,MAAO,GAAIA,EAAKzwD,KAAK44E,WAAW,aAAc,CAC5C,IAAII,EAAU,IAAIF,WAClBE,EAAQv2B,OAAS,WACXu2B,EAAQ/uE,QAAQy0B,EAAQs6C,EAAQ/uE,OACtC,EACA+uE,EAAQD,cAActoB,EACxB,MACE0nB,EAAI38C,IAAMjhC,OAAOk+E,IAAIQ,gBAAgBxoB,EA1CvC,MAFE/xB,EAAQ,GA8CZ,GACF,CC3HA,IAiBA,GAjBqB,CACnB,KAAQ,CACN,IAAO,MACP,MAAS,CACP,QAAW,gBACX,UAAa,SAEf,SAAY,CAAC,CACX,IAAO,OACP,MAAS,CACP,EAAK,0VAIX,KAAQ,SACR,MAAS,YCTP,GAAiB,SAAwBhwB,EAAO+6C,GAClD,OAAoB,gBAAoBsX,GAAA,GAAU,OAAS,CAAC,EAAGryD,EAAO,CACpE+6C,IAAKA,EACL8U,KAAM,KAEV,EAIA,OAA4B,aAAiB,ICE7C,GAjBuB,CACrB,KAAQ,CACN,IAAO,MACP,MAAS,CACP,QAAW,gBACX,UAAa,SAEf,SAAY,CAAC,CACX,IAAO,OACP,MAAS,CACP,EAAK,oTAIX,KAAQ,WACR,MAAS,YCTP,GAAmB,SAA0B7vD,EAAO+6C,GACtD,OAAoB,gBAAoBsX,GAAA,GAAU,OAAS,CAAC,EAAGryD,EAAO,CACpE+6C,IAAKA,EACL8U,KAAM,KAEV,EAIA,OAA4B,aAAiB,ICE7C,GAjBkB,CAChB,KAAQ,CACN,IAAO,MACP,MAAS,CACP,QAAW,gBACX,UAAa,SAEf,SAAY,CAAC,CACX,IAAO,OACP,MAAS,CACP,EAAK,oeAIX,KAAQ,MACR,MAAS,YCTP,GAAc,SAAqB7vD,EAAO+6C,GAC5C,OAAoB,gBAAoBsX,GAAA,GAAU,OAAS,CAAC,EAAGryD,EAAO,CACpE+6C,IAAKA,EACL8U,KAAM,KAEV,EAIA,OAA4B,aAAiB,ICE7C,GAjBwB,CACtB,KAAQ,CACN,IAAO,MACP,MAAS,CACP,QAAW,gBACX,UAAa,SAEf,SAAY,CAAC,CACX,IAAO,OACP,MAAS,CACP,EAAK,wRAIX,KAAQ,eACR,MAAS,UCTP,GAAoB,SAA2B7vD,EAAO+6C,GACxD,OAAoB,gBAAoBsX,GAAA,GAAU,OAAS,CAAC,EAAGryD,EAAO,CACpE+6C,IAAKA,EACL8U,KAAM,KAEV,EAIA,OAA4B,aAAiB,ICE7C,GAjBoB,CAClB,KAAQ,CACN,IAAO,MACP,MAAS,CACP,QAAW,gBACX,UAAa,SAEf,SAAY,CAAC,CACX,IAAO,OACP,MAAS,CACP,EAAK,+LAIX,KAAQ,QACR,MAAS,YCTP,GAAgB,SAAuB7vD,EAAO+6C,GAChD,OAAoB,gBAAoBsX,GAAA,GAAU,OAAS,CAAC,EAAGryD,EAAO,CACpE+6C,IAAKA,EACL8U,KAAM,KAEV,EAIA,OAA4B,aAAiB,ICG7C,GAlBwB,CACtB,KAAQ,CACN,IAAO,MACP,MAAS,CACP,YAAa,UACb,QAAW,gBACX,UAAa,SAEf,SAAY,CAAC,CACX,IAAO,OACP,MAAS,CACP,EAAK,qsBAIX,KAAQ,eACR,MAAS,UCVP,GAAoB,SAA2B7vD,EAAO+6C,GACxD,OAAoB,gBAAoBsX,GAAA,GAAU,OAAS,CAAC,EAAGryD,EAAO,CACpE+6C,IAAKA,EACL8U,KAAM,KAEV,EAIA,OAA4B,aAAiB,ICG7C,GAlBoB,CAClB,KAAQ,CACN,IAAO,MACP,MAAS,CACP,YAAa,UACb,QAAW,gBACX,UAAa,SAEf,SAAY,CAAC,CACX,IAAO,OACP,MAAS,CACP,EAAK,goBAIX,KAAQ,QACR,MAAS,YCVP,GAAgB,SAAuB7vD,EAAO+6C,GAChD,OAAoB,gBAAoBsX,GAAA,GAAU,OAAS,CAAC,EAAGryD,EAAO,CACpE+6C,IAAKA,EACL8U,KAAM,KAEV,EAIA,OAA4B,aAAiB,ICflCvG,GAAe,CACxB5H,QAAS,EACT0G,UAAW,cACXoiB,YAAa,UACbxvB,cAAe,QACfF,YAAa,EACb2vB,WAAY,UACZC,WAAY,EACZC,YAAa,UAEJC,GAAwB,WACjC,IAAIC,GAAW,IAAA5R,QAAO,IAClB6R,GAAgB,IAAA7R,QAAO,MAmB3B,OAlBA,IAAA4N,YAAU,WACR,IAAIn7E,EAAMC,KAAKD,MACXq/E,GAAU,EACdF,EAASz6E,QAAQW,SAAQ,SAAUvB,GACjC,GAAKA,EAAL,CAGAu7E,GAAU,EACV,IAAIC,EAAYx7E,EAAKiF,MACrBu2E,EAAUC,mBAAqB,sBAC3BH,EAAc16E,SAAW1E,EAAMo/E,EAAc16E,QAAU,MACzD46E,EAAUC,mBAAqB,SALjC,CAOF,IACIF,IACFD,EAAc16E,QAAUzE,KAAKD,MAEjC,IACOm/E,EAASz6E,OAClB,ECmDA,4BCjFI86E,GAAO,EAEAC,IAAqD,EAAAC,GAAA,KAchE,gBAA0B/uE,GAExB,IAAI84D,EAAkB,aACpBC,GAAmB,QAAeD,EAAiB,GACnDkW,EAAUjW,EAAiB,GAC3BkW,EAAalW,EAAiB,GAIhC,OAHA,aAAgB,WAlBlB,IACMmW,EAkBFD,EAAW,eAAepvE,QAfxBivE,IACFI,EAAQL,GACRA,IAAQ,GAERK,EAAQ,cAEHA,IAUP,GAAG,IACIlvE,GAAMgvE,CACd,ECzBG,GAAY,CAAC,KAAM,YAAa,QAAS,cAAe,aAAc,YAAa,cAAe,aAAc,gBAAiB,QAAS,YAAa,cAAe,WAK1K,SAASG,GAAqB9pB,GAC5B,OAAQA,EAAQnzC,QAAQ,IAAK,GAC/B,CACA,SAAS,GAAQzjB,GACf,IAAI2gF,EAAc3gF,QAAqCA,EAAQ,GAC/D,OAAOs+B,MAAMC,QAAQoiD,GAAeA,EAAc,CAACA,EACrD,CACA,IAAIC,GAAgB,IAChBC,GAAiB,SAAwBC,EAAWC,EAAqBC,EAAQpqB,EAASqqB,EAAWC,EAAWrB,EAAaH,EAAaxvB,EAAeF,GAC3J,IAAImxB,EAAY1iF,UAAUC,OAAS,SAAwB41B,IAAlB71B,UAAU,IAAoBA,UAAU,IAAM,EACnF2iF,EAAYJ,EAAS,IAAM,MAAQ,IAAME,GAAa,KACtDG,EAA4B,IAAdH,EAAkB,EAAI,CACtCI,OAAQ,EACRx0E,IAAK,IACLD,KAAM,GACN2D,OAAQ,IACRqvE,GACE0B,GAAoB,IAAM3qB,GAAW,IAAMmqB,EAU/C,MAPsB,UAAlB7wB,GAAyC,MAAZ0G,IAC/B2qB,GAAoBvxB,EAAc,IAEV+wB,IACtBQ,EAAmBR,EAAsB,KAGtC,CACL/hE,OAA+B,iBAAhB0gE,EAA2BA,OAAcprD,EACxDktD,gBAAiB,GAAGpwE,OAAO2vE,EAAqB,OAAO3vE,OAAO0vE,GAC9DS,iBAAkBA,EAAmBJ,EACrCxvE,UAAW,UAAUP,OAAO6vE,EAAYG,EAAYC,EAAa,QACjEI,gBAAiB,MACjBlZ,WAAY,2HACZmZ,YAAa,EAEjB,EAgIA,OA/Ha,SAAgBxsE,GAC3B,IAoCMysE,EApCFC,GAAsB,SAAc,QAAc,CAAC,EAAGpjB,IAAetpD,GACvE3D,EAAKqwE,EAAoBrwE,GACzB+rD,EAAYskB,EAAoBtkB,UAChCukB,EAAQD,EAAoBC,MAC5B7xB,EAAc4xB,EAAoB5xB,YAClC4vB,EAAagC,EAAoBhC,WACjCkC,EAAwBF,EAAoBV,UAC5CA,OAAsC,IAA1BY,EAAmC,EAAIA,EACnDjC,EAAc+B,EAAoB/B,YAClCF,EAAaiC,EAAoBjC,WACjCzvB,EAAgB0xB,EAAoB1xB,cACpCvmD,EAAQi4E,EAAoBj4E,MAC5B8H,EAAYmwE,EAAoBnwE,UAChCiuE,EAAckC,EAAoBlC,YAClC9oB,EAAUgrB,EAAoBhrB,QAC9BmrB,GAAY,QAAyBH,EAAqB,IACxDI,EAAWC,GAAM1wE,GACjB2wE,EAAa,GAAG9wE,OAAO4wE,EAAU,aACjCnW,EAAS+U,GAAoB5wB,EAAc,EAC3C8wB,EAAsB,EAAVhpE,KAAK+B,GAASgyD,EAC1BoV,EAAYC,EAAY,EAAI,GAAKA,EAAY,GAAK,GAClDH,EAAsBD,IAAc,IAAMI,GAAa,KACvDxxB,EAA0B,YAAnB,QAAQmyB,GAAsBA,EAAQ,CAC7ClzD,MAAOkzD,EACPM,MAAO,GAETC,EAAY1yB,EAAK/gC,MACjBwyD,EAAYzxB,EAAKyyB,MACfE,EAAcxB,GAAeC,EAAWC,EAAqB,EAAG,IAAKE,EAAWC,EAAWrB,EAAaF,EAAYzvB,EAAeF,GACnIsyB,EAAc,GAAQ1rB,GACtB2rB,EAAkB,GAAQ7C,GAC1B8C,EAAWD,EAAgBlxE,MAAK,SAAUugC,GAC5C,OAAOA,GAA4B,YAAnB,QAAQA,EAC1B,IACIh8B,EAAQkqE,KA0DZ,OAAoB,gBAAoB,OAAO,OAAS,CACtDruE,UAAW,IAAW,GAAGL,OAAOksD,EAAW,WAAY7rD,GACvDs+C,QAAS,GAAG3+C,QAAO,GAAoB,KAAKA,QAAO,GAAoB,KAAKA,OAAOwvE,GAAe,KAAKxvE,OAAOwvE,IAC9Gj3E,MAAOA,EACP4H,GAAIA,EACJ2sD,KAAM,gBACL6jB,GAAYS,GAAyB,gBAAoB,OAAQ,KAAmB,gBAAoB,iBAAkB,CAC3HjxE,GAAI2wE,EACJjiE,GAAI,OACJC,GAAI,KACJC,GAAI,KACJC,GAAI,MACH/K,OAAOopB,KAAK+jD,GAAUpyE,MAAK,SAAU4L,EAAG8E,GACzC,OAAO4/D,GAAqB1kE,GAAK0kE,GAAqB5/D,EACxD,IAAG+N,KAAI,SAAU6P,EAAK74B,GACpB,OAAoB,gBAAoB,OAAQ,CAC9C64B,IAAK74B,EACLm7E,OAAQtiD,EACR+jD,UAAWD,EAAS9jD,IAExB,OAAO0jD,GAA0B,gBAAoB,SAAU,CAC7D3wE,UAAW,GAAGL,OAAOksD,EAAW,iBAChCvgD,EAAG8uD,EACHtsD,GAAI,EACJC,GAAI,EACJR,OAAQ2gE,EACRzvB,cAAeA,EACfF,YAAa4vB,GAAc5vB,EAC3BrmD,MAAO04E,IACLD,EA1DmB,WAErB,IAAI98E,EAAUwS,KAAKwoB,MAAM8hD,GAAaE,EAAY,GAAK,MACnDI,EAAU,IAAMN,EAChBT,EAAW,EACf,OAAO,IAAIrjD,MAAM8jD,GAAW3oC,KAAK,MAAM5qB,KAAI,SAAU0V,EAAG1+B,GACtD,IAAI+rC,EAAQ/rC,GAASP,EAAU,EAAIi9E,EAAgB,GAAK5C,EACpD3gE,EAAS4yB,GAA4B,YAAnB,QAAQA,GAAsB,QAAQxgC,OAAO8wE,EAAY,UAAO5tD,EAClFquD,EAAsB9B,GAAeC,EAAWC,EAAqBY,EAAUe,EAASzB,EAAWC,EAAWrB,EAAajuC,EAAO,OAAQoe,EAAamxB,GAE3J,OADAQ,GAAuF,KAA1EZ,EAAsB4B,EAAoBpB,iBAAmBJ,GAAmBJ,EACzE,gBAAoB,SAAU,CAChDriD,IAAK74B,EACL4L,UAAW,GAAGL,OAAOksD,EAAW,gBAChCvgD,EAAG8uD,EACHtsD,GAAI,EACJC,GAAI,EACJR,OAAQA,EAIRgxC,YAAaA,EACbx9C,QAAS,EACT7I,MAAOg5E,EACP1yB,IAAK,SAAa2yB,GAChBhtE,EAAM/P,GAAS+8E,CACjB,GAEJ,GACF,CA8BgBC,IArFVlB,EAAW,EACRW,EAAYzzD,KAAI,SAAUi0D,EAAKj9E,GACpC,IAAI+rC,EAAQ2wC,EAAgB18E,IAAU08E,EAAgBA,EAAgB7jF,OAAS,GAC3EsgB,EAAS4yB,GAA4B,YAAnB,QAAQA,GAAsB,QAAQxgC,OAAO8wE,EAAY,UAAO5tD,EAClFquD,EAAsB9B,GAAeC,EAAWC,EAAqBY,EAAUmB,EAAK7B,EAAWC,EAAWrB,EAAajuC,EAAOse,EAAeF,GAEjJ,OADA2xB,GAAYmB,EACQ,gBAAoB,SAAU,CAChDpkD,IAAK74B,EACL4L,UAAW,GAAGL,OAAOksD,EAAW,gBAChCvgD,EAAG8uD,EACHtsD,GAAI,EACJC,GAAI,EACJR,OAAQA,EACRkxC,cAAeA,EACfF,YAAaA,EACbx9C,QAAiB,IAARswE,EAAY,EAAI,EACzBn5E,MAAOg5E,EACP1yB,IAAK,SAAa2yB,GAKhBhtE,EAAM/P,GAAS+8E,CACjB,GAEJ,IAAGn0D,WA6DP,ECvKA,GADgC,gBAAoB,kBCKhDs0D,GAAa,OCJbC,eAgCJ,SAASC,GAAW1jD,GAClB,IAAIzG,EAAQyG,EAAIzG,MAAM,YAClB94B,EAAQ8f,OAAOgZ,aAAqC,EAASA,EAAM,IACvE,OAAOhZ,OAAOC,MAAM/f,GAlCP,SAA0BkjF,GACvC,GAAwB,oBAAb16E,SACT,OAAO,EAET,GAAI06E,QAAoB5uD,IAAX0uD,GAAsB,CACjC,IAAItgC,EAAQl6C,SAAS+Z,cAAc,OACnCmgC,EAAM/4C,MAAMiC,MAAQ,OACpB82C,EAAM/4C,MAAMkC,OAAS,QACrB,IAAIs3E,EAAQ36E,SAAS+Z,cAAc,OAC/B6gE,EAAaD,EAAMx5E,MACvBy5E,EAAWp6B,SAAW,WACtBo6B,EAAWt2E,IAAM,IACjBs2E,EAAWv2E,KAAO,IAClBu2E,EAAWh6B,cAAgB,OAC3Bg6B,EAAWC,WAAa,SACxBD,EAAWx3E,MAAQ,QACnBw3E,EAAWv3E,OAAS,QACpBu3E,EAAWj6B,SAAW,SACtBg6B,EAAM33E,YAAYk3C,GAClBl6C,SAASgiD,KAAKh/C,YAAY23E,GAC1B,IAAIG,EAAiB5gC,EAAMgqB,YAC3ByW,EAAMx5E,MAAMw/C,SAAW,SACvB,IAAIo6B,EAAc7gC,EAAMgqB,YACpB4W,IAAmBC,IACrBA,EAAcJ,EAAMK,aAEtBh7E,SAASgiD,KAAKt9C,YAAYi2E,GAC1BH,GAASM,EAAiBC,CAC5B,CACA,OAAOP,EACT,CAI+BS,GAAqBzjF,CACpD,CChCA,IAAI0jF,GAAY,kBAAkBtyE,OAAOvQ,KAAKD,OAC1C,GAAO,EACI,SAAS+iF,GAAgBC,GACtC,IAAIC,IAAeD,EACfvZ,EAAkB,YAAe,WAEjC,OADA,IAAQ,EACD,GAAGj5D,OAAOsyE,GAAW,KAAKtyE,OAAO,GAC1C,IAEAG,GADmB,QAAe84D,EAAiB,GAC7B,IACxB,EAAAyZ,GAAA,IAAgB,WACd,GAAID,EAAY,CACd,IAAIE,EDqBH,SAAgCx9E,GACrC,KAAwB,oBAAbiC,UAA6BjC,GAAYA,aAAkByL,SACpE,MAAO,CACLpG,MAAO,EACPC,OAAQ,GAGZ,IAAImgE,EAAoBjjB,iBAAiBxiD,EAAQ,uBAC/CqF,EAAQogE,EAAkBpgE,MAC1BC,EAASmgE,EAAkBngE,OAC7B,MAAO,CACLD,MAAOq3E,GAAWr3E,GAClBC,OAAQo3E,GAAWp3E,GAEvB,CCnC0Bm4E,CAAuBx7E,SAASgiD,MAAM5+C,MACtDq4E,ECfDz7E,SAASgiD,KAAK05B,cAAgBnjF,OAAOojF,aAAe37E,SAAS47E,gBAAgBC,eAAiBtjF,OAAOujF,WAAa97E,SAASgiD,KAAKkiB,aDgBnI,SAAU,2CAA2Ct7D,OAAO6yE,EAAa,sBAAsB7yE,OAAO2yE,EAAe,QAAU,GAAI,OAAQxyE,EAC7I,MACE,SAAUA,GAEZ,OAAO,YACL,SAAUA,EACZ,CACF,GAAG,CAACsyE,EAAYtyE,GAClB,CE5BO,IAAIgzE,IAAS,ECUpB,IAAIC,GAAqB,SAA4BC,GACnD,OAAqB,IAAjBA,KAGC,EAAAnE,GAAA,MAAgBmE,EAGO,iBAAjBA,EACFj8E,SAASqyD,cAAc4pB,GAEJ,mBAAjBA,EACFA,IAEFA,EARE,KASX,EACIC,GAAsB,cAAiB,SAAUxvE,EAAO+6C,GAC1D,IAAI0H,EAAOziD,EAAMyiD,KACfgtB,EAAWzvE,EAAMyvE,SACjBF,EAAevvE,EAAMuvE,aAErBG,GADQ1vE,EAAM2vE,MACO3vE,EAAM4vE,aAC3BA,OAAqC,IAAvBF,GAAuCA,EACrDl3E,EAAWwH,EAAMxH,SACf28D,EAAkB,WAAe1S,GACnC2S,GAAmB,QAAeD,EAAiB,GACnD0a,EAAeza,EAAiB,GAChC0a,EAAkB1a,EAAiB,GACjC2a,EAAeF,GAAgBptB,EAQnC,aAAgB,YACVmtB,GAAentB,IACjBqtB,EAAgBrtB,EAEpB,GAAG,CAACA,EAAMmtB,IAGV,IAAIta,EAAmB,YAAe,WAClC,OAAOga,GAAmBC,EAC5B,IACAha,GAAmB,QAAeD,EAAkB,GACpD0a,EAAiBza,EAAiB,GAClC0a,EAAoB1a,EAAiB,GACvC,aAAgB,WACd,IAAI2a,EAAqBZ,GAAmBC,GAG5CU,EAAkBC,QAA+DA,EAAqB,KACxG,IACA,IAAIC,ELpDS,SAAgBxc,EAAQgc,GACrC,IAAIxa,EAAkB,YAAe,WACjC,OAAK,EAAAiW,GAAA,KAGY93E,SAAS+Z,cAAc,OAF/B,IAOX,IAEA+iE,GADmB,QAAejb,EAAiB,GAC5B,GAGrBkb,EAAc,UAAa,GAC3BC,EAAc,aAAiB,IAC/Bhb,EAAmB,WAAeuY,IACpCtY,GAAmB,QAAeD,EAAkB,GACpDib,EAAQhb,EAAiB,GACzBib,EAAWjb,EAAiB,GAC1Bkb,EAAoBH,IAAgBD,EAAYjgF,aAAUgvB,EAAY,SAAUsxD,GAClFF,GAAS,SAAUhqB,GAEjB,MADe,CAACkqB,GAAUx0E,QAAO,OAAmBsqD,GAEtD,GACF,GAGA,SAAS1E,IACFsuB,EAAI3X,eACPnlE,SAASgiD,KAAKh/C,YAAY85E,GAE5BC,EAAYjgF,SAAU,CACxB,CACA,SAASugF,IACP,IAAIC,EACyC,QAA5CA,EAAqBR,EAAI3X,qBAAkD,IAAvBmY,GAAyCA,EAAmB54E,YAAYo4E,GAC7HC,EAAYjgF,SAAU,CACxB,CAqBA,OApBA,EAAAw+E,GAAA,IAAgB,WAUd,OATIjb,EACE2c,EACFA,EAAYxuB,GAEZA,IAGF6uB,IAEKA,CACT,GAAG,CAAChd,KACJ,EAAAib,GAAA,IAAgB,WACV2B,EAAM/mF,SACR+mF,EAAMx/E,SAAQ,SAAU2/E,GACtB,OAAOA,GACT,IACAF,EAAS3C,IAEb,GAAG,CAAC0C,IACG,CAACH,EAAKK,EACf,CKTgBI,CAAOd,IAAiBC,GACpCc,GAAW,QAAeX,EAAS,GACnCY,EAAmBD,EAAS,GAC5BR,EAAcQ,EAAS,GACrBE,EAAkBhB,QAAuDA,EAAiBe,EAG9FtC,GAAgBgB,GAAYhtB,IAAQ,EAAA2oB,GAAA,OAAgB4F,IAAoBD,GAAoBC,IAAoB19E,SAASgiD,OAGzH,IAAI27B,EAAW,KACXz4E,IAAY,SAAWA,IAAauiD,IAEtCk2B,EADWz4E,EACKuiD,KAElB,IAAIm2B,GAAY,SAAcD,EAAUl2B,GAKxC,IAAKg1B,KAAiB,EAAA3E,GAAA,WAAkChsD,IAAnB4wD,EACnC,OAAO,KAIT,IDxFyBmB,ECwFrBC,GAAmC,IAApBJ,IDvFO,kBAAfG,IACT9B,GAAS8B,GAEJ9B,ICqFHgC,EAAiB74E,EAMrB,OALIuiD,IACFs2B,EAA8B,eAAmB74E,EAAU,CACzDuiD,IAAKm2B,KAGW,gBAAoB,GAAavnB,SAAU,CAC7D7+D,MAAOwlF,GACNc,EAAeC,GAA8B,KAAAC,cAAaD,EAAgBL,GAC/E,IAIA,ICpGA,GDoGA,eEhGIO,GAAU,WACZ,GAAmB,oBAAR7pE,IACT,OAAOA,IAST,SAAS8pE,EAASpyE,EAAKoqB,GACrB,IAAIjuB,GAAU,EAQd,OAPA6D,EAAIikD,MAAK,SAAUhF,EAAO1tD,GACxB,OAAI0tD,EAAM,KAAO70B,IACfjuB,EAAS5K,GACF,EAGX,IACO4K,CACT,CACA,OAAqB,WACjB,SAASk2E,IACP9oF,KAAK+oF,YAAc,EACrB,CAuEA,OAtEAvxE,OAAOoxB,eAAekgD,EAAQ5oF,UAAW,OAAQ,CAI/C8B,IAAK,WACH,OAAOhC,KAAK+oF,YAAYloF,MAC1B,EACA8nC,YAAY,EACZsqB,cAAc,IAMhB61B,EAAQ5oF,UAAU8B,IAAM,SAAU6+B,GAChC,IAAI74B,EAAQ6gF,EAAS7oF,KAAK+oF,YAAaloD,GACnC60B,EAAQ11D,KAAK+oF,YAAY/gF,GAC7B,OAAO0tD,GAASA,EAAM,EACxB,EAMAozB,EAAQ5oF,UAAUgC,IAAM,SAAU2+B,EAAK1+B,GACrC,IAAI6F,EAAQ6gF,EAAS7oF,KAAK+oF,YAAaloD,IAClC74B,EACHhI,KAAK+oF,YAAY/gF,GAAO,GAAK7F,EAE7BnC,KAAK+oF,YAAYxoF,KAAK,CAACsgC,EAAK1+B,GAEhC,EAKA2mF,EAAQ5oF,UAAUmmC,OAAS,SAAUxF,GACnC,IAAIi7B,EAAU97D,KAAK+oF,YACf/gF,EAAQ6gF,EAAS/sB,EAASj7B,IACzB74B,GACH8zD,EAAQ16D,OAAO4G,EAAO,EAE1B,EAKA8gF,EAAQ5oF,UAAU4hC,IAAM,SAAUjB,GAChC,SAAUgoD,EAAS7oF,KAAK+oF,YAAaloD,EACvC,EAIAioD,EAAQ5oF,UAAUqP,MAAQ,WACxBvP,KAAK+oF,YAAY3nF,OAAO,EAC1B,EAMA0nF,EAAQ5oF,UAAUkI,QAAU,SAAU/H,EAAUslC,QAClC,IAARA,IACFA,EAAM,MAER,IAAK,IAAIhlC,EAAK,EAAGQ,EAAKnB,KAAK+oF,YAAapoF,EAAKQ,EAAGN,OAAQF,IAAM,CAC5D,IAAI+0D,EAAQv0D,EAAGR,GACfN,EAASuB,KAAK+jC,EAAK+vB,EAAM,GAAIA,EAAM,GACrC,CACF,EACOozB,CACT,CA3EK,EA6ET,CAnGc,GAwGV90D,GAA8B,oBAAX9wB,QAA8C,oBAAbyH,UAA4BzH,OAAOyH,WAAaA,SAGpGq+E,QACoB,IAAX,EAAAx0C,GAA0B,EAAAA,EAAOv6B,OAASA,KAC5C,EAAAu6B,EAEW,oBAATkS,MAAwBA,KAAKzsC,OAASA,KACxCysC,KAEa,oBAAXxjD,QAA0BA,OAAO+W,OAASA,KAC5C/W,OAGF+lF,SAAS,cAATA,GASLC,GACmC,mBAA1B/lF,sBAIFA,sBAAsBC,KAAK4lF,IAE7B,SAAU3oF,GACf,OAAOiD,YAAW,WAChB,OAAOjD,EAAS2C,KAAKD,MACvB,GAAG,IAAO,GACZ,EAsEF,IAGIomF,GAAiB,CAAC,MAAO,QAAS,SAAU,OAAQ,QAAS,SAAU,OAAQ,UAE/EC,GAAwD,oBAArBC,iBAInCC,GAAwC,WAM1C,SAASA,IAMPtpF,KAAKupF,YAAa,EAMlBvpF,KAAKwpF,sBAAuB,EAM5BxpF,KAAKypF,mBAAqB,KAM1BzpF,KAAK0pF,WAAa,GAClB1pF,KAAK2pF,iBAAmB3pF,KAAK2pF,iBAAiBvmF,KAAKpD,MACnDA,KAAK8oE,QAlGT,SAAkBzoE,EAAUwD,GAC1B,IAAI+lF,GAAc,EAChBC,GAAe,EACfC,EAAe,EAOjB,SAASC,IACHH,IACFA,GAAc,EACdvpF,KAEEwpF,GACFG,GAEJ,CAQA,SAASC,IACPf,GAAwBa,EAC1B,CAMA,SAASC,IACP,IAAI79E,EAAYnJ,KAAKD,MACrB,GAAI6mF,EAAa,CAEf,GAAIz9E,EAAY29E,EA/CA,EAgDd,OAMFD,GAAe,CACjB,MACED,GAAc,EACdC,GAAe,EACfvmF,WAAW2mF,EAAiBpmF,GAE9BimF,EAAe39E,CACjB,CACA,OAAO69E,CACT,CA4CmBE,CAASlqF,KAAK8oE,QAAQ1lE,KAAKpD,MAzC1B,GA0ClB,CAiKA,OA1JAspF,EAAyBppF,UAAUiqF,YAAc,SAAUC,IACnDpqF,KAAK0pF,WAAWx2E,QAAQk3E,IAC5BpqF,KAAK0pF,WAAWnpF,KAAK6pF,GAGlBpqF,KAAKupF,YACRvpF,KAAKqqF,UAET,EAOAf,EAAyBppF,UAAUoqF,eAAiB,SAAUF,GAC5D,IAAIG,EAAYvqF,KAAK0pF,WACjB1hF,EAAQuiF,EAAUr3E,QAAQk3E,IAEzBpiF,GACHuiF,EAAUnpF,OAAO4G,EAAO,IAGrBuiF,EAAU1pF,QAAUb,KAAKupF,YAC5BvpF,KAAKwqF,aAET,EAOAlB,EAAyBppF,UAAU4oE,QAAU,WACrB9oE,KAAKyqF,oBAIzBzqF,KAAK8oE,SAET,EASAwgB,EAAyBppF,UAAUuqF,iBAAmB,WAEpD,IAAIC,EAAkB1qF,KAAK0pF,WAAWn5E,QAAO,SAAU65E,GACrD,OAAOA,EAASO,eAAgBP,EAASQ,WAC3C,IASA,OAHAF,EAAgBtiF,SAAQ,SAAUgiF,GAChC,OAAOA,EAASS,iBAClB,IACOH,EAAgB7pF,OAAS,CAClC,EAOAyoF,EAAyBppF,UAAUmqF,SAAW,WAGvCr2D,KAAah0B,KAAKupF,aAMvB5+E,SAASD,iBAAiB,gBAAiB1K,KAAK2pF,kBAChDzmF,OAAOwH,iBAAiB,SAAU1K,KAAK8oE,SACnCsgB,IACFppF,KAAKypF,mBAAqB,IAAIJ,iBAAiBrpF,KAAK8oE,SACpD9oE,KAAKypF,mBAAmB/9B,QAAQ/gD,SAAU,CACxCmgF,YAAY,EACZ9W,WAAW,EACX+W,eAAe,EACfC,SAAS,MAGXrgF,SAASD,iBAAiB,qBAAsB1K,KAAK8oE,SACrD9oE,KAAKwpF,sBAAuB,GAE9BxpF,KAAKupF,YAAa,EACpB,EAOAD,EAAyBppF,UAAUsqF,YAAc,WAG1Cx2D,IAAch0B,KAAKupF,aAGxB5+E,SAASE,oBAAoB,gBAAiB7K,KAAK2pF,kBACnDzmF,OAAO2H,oBAAoB,SAAU7K,KAAK8oE,SACtC9oE,KAAKypF,oBACPzpF,KAAKypF,mBAAmBh+B,aAEtBzrD,KAAKwpF,sBACP7+E,SAASE,oBAAoB,qBAAsB7K,KAAK8oE,SAE1D9oE,KAAKypF,mBAAqB,KAC1BzpF,KAAKwpF,sBAAuB,EAC5BxpF,KAAKupF,YAAa,EACpB,EAQAD,EAAyBppF,UAAUypF,iBAAmB,SAAUxoF,GAC9D,IAAI+V,EAAK/V,EAAG4nC,aACVA,OAAsB,IAAP7xB,EAAgB,GAAKA,EAElC+zE,EAAmB9B,GAAezuB,MAAK,SAAU75B,GACnD,SAAUkI,EAAa71B,QAAQ2tB,EACjC,IACIoqD,GACFjrF,KAAK8oE,SAET,EAMAwgB,EAAyB4B,YAAc,WAIrC,OAHKlrF,KAAKmrF,YACRnrF,KAAKmrF,UAAY,IAAI7B,GAEhBtpF,KAAKmrF,SACd,EAMA7B,EAAyB6B,UAAY,KAC9B7B,CACT,CAnM4C,GA4MxC8B,GAAqB,SAA4B1iF,EAAQ2O,GAC3D,IAAK,IAAI1W,EAAK,EAAGQ,EAAKqW,OAAOopB,KAAKvpB,GAAQ1W,EAAKQ,EAAGN,OAAQF,IAAM,CAC9D,IAAIkgC,EAAM1/B,EAAGR,GACb6W,OAAOoxB,eAAelgC,EAAQm4B,EAAK,CACjC1+B,MAAOkV,EAAMwpB,GACb8H,YAAY,EACZuqB,UAAU,EACVD,cAAc,GAElB,CACA,OAAOvqD,CACT,EAQI2iF,GAAc,SAAqB3iF,GAOrC,OAHkBA,GAAUA,EAAO4iF,eAAiB5iF,EAAO4iF,cAAcrgC,aAGnD+9B,EACxB,EAGIuC,GAAYC,GAAe,EAAG,EAAG,EAAG,GAOxC,SAASC,GAAQtpF,GACf,OAAOkpB,WAAWlpB,IAAU,CAC9B,CAQA,SAASupF,GAAe5P,GAEtB,IADA,IAAI6P,EAAY,GACPhrF,EAAK,EAAGA,EAAKC,UAAUC,OAAQF,IACtCgrF,EAAUhrF,EAAK,GAAKC,UAAUD,GAEhC,OAAOgrF,EAAUh6D,QAAO,SAAU2S,EAAM6mB,GAEtC,OAAO7mB,EAAOmnD,GADF3P,EAAO,UAAY3wB,EAAW,UAE5C,GAAG,EACL,CAkCA,SAASygC,GAA0BljF,GAGjC,IAAIi9E,EAAcj9E,EAAOi9E,YACvBa,EAAe99E,EAAO89E,aASxB,IAAKb,IAAgBa,EACnB,OAAO+E,GAET,IAAIzP,EAASuP,GAAY3iF,GAAQwiD,iBAAiBxiD,GAC9CmjF,EA5CN,SAAqB/P,GAGnB,IAFA,IACI+P,EAAW,CAAC,EACPlrF,EAAK,EAAGmrF,EAFD,CAAC,MAAO,QAAS,SAAU,QAEDnrF,EAAKmrF,EAAYjrF,OAAQF,IAAM,CACvE,IAAIwqD,EAAW2gC,EAAYnrF,GACvBwB,EAAQ25E,EAAO,WAAa3wB,GAChC0gC,EAAS1gC,GAAYsgC,GAAQtpF,EAC/B,CACA,OAAO0pF,CACT,CAmCiBE,CAAYjQ,GACvBkQ,EAAWH,EAAS78E,KAAO68E,EAASl5E,MACpCs5E,EAAUJ,EAAS58E,IAAM48E,EAASpI,OAKlC11E,EAAQ09E,GAAQ3P,EAAO/tE,OACzBC,EAASy9E,GAAQ3P,EAAO9tE,QAqB1B,GAlByB,eAArB8tE,EAAOtR,YAOLvwD,KAAKwoB,MAAM10B,EAAQi+E,KAAcrG,IACnC53E,GAAS29E,GAAe5P,EAAQ,OAAQ,SAAWkQ,GAEjD/xE,KAAKwoB,MAAMz0B,EAASi+E,KAAazF,IACnCx4E,GAAU09E,GAAe5P,EAAQ,MAAO,UAAYmQ,KAuD1D,SAA2BvjF,GACzB,OAAOA,IAAW2iF,GAAY3iF,GAAQiC,SAAS47E,eACjD,CAlDO2F,CAAkBxjF,GAAS,CAK9B,IAAIyjF,EAAgBlyE,KAAKwoB,MAAM10B,EAAQi+E,GAAYrG,EAC/CyG,EAAiBnyE,KAAKwoB,MAAMz0B,EAASi+E,GAAWzF,EAMpB,IAA5BvsE,KAAKoG,IAAI8rE,KACXp+E,GAASo+E,GAEsB,IAA7BlyE,KAAKoG,IAAI+rE,KACXp+E,GAAUo+E,EAEd,CACA,OAAOZ,GAAeK,EAAS78E,KAAM68E,EAAS58E,IAAKlB,EAAOC,EAC5D,CAOA,IAAIq+E,GAGgC,oBAAvBC,mBACF,SAAU5jF,GACf,OAAOA,aAAkB2iF,GAAY3iF,GAAQ4jF,kBAC/C,EAKK,SAAU5jF,GACf,OAAOA,aAAkB2iF,GAAY3iF,GAAQ6jF,YAAwC,mBAAnB7jF,EAAOuH,OAC3E,EAiBF,SAASu8E,GAAe9jF,GACtB,OAAKsrB,GAGDq4D,GAAqB3jF,GArH3B,SAA2BA,GACzB,IAAIoG,EAAOpG,EAAOuH,UAClB,OAAOu7E,GAAe,EAAG,EAAG18E,EAAKf,MAAOe,EAAKd,OAC/C,CAmHWy+E,CAAkB/jF,GAEpBkjF,GAA0BljF,GALxB6iF,EAMX,CAuCA,SAASC,GAAevgF,EAAGC,EAAG6C,EAAOC,GACnC,MAAO,CACL/C,EAAGA,EACHC,EAAGA,EACH6C,MAAOA,EACPC,OAAQA,EAEZ,CAMA,IAAI0+E,GAAiC,WAMnC,SAASA,EAAkBhkF,GAMzB1I,KAAK2sF,eAAiB,EAMtB3sF,KAAK4sF,gBAAkB,EAMvB5sF,KAAK6sF,aAAerB,GAAe,EAAG,EAAG,EAAG,GAC5CxrF,KAAK0I,OAASA,CAChB,CAwBA,OAjBAgkF,EAAkBxsF,UAAU4sF,SAAW,WACrC,IAAItsE,EAAOgsE,GAAexsF,KAAK0I,QAE/B,OADA1I,KAAK6sF,aAAersE,EACbA,EAAKzS,QAAU/N,KAAK2sF,gBAAkBnsE,EAAKxS,SAAWhO,KAAK4sF,eACpE,EAOAF,EAAkBxsF,UAAU6sF,cAAgB,WAC1C,IAAIvsE,EAAOxgB,KAAK6sF,aAGhB,OAFA7sF,KAAK2sF,eAAiBnsE,EAAKzS,MAC3B/N,KAAK4sF,gBAAkBpsE,EAAKxS,OACrBwS,CACT,EACOksE,CACT,CAnDqC,GAoDjCM,GAOF,SAA6BtkF,EAAQukF,GACnC,IAAIC,EAxGR,SAA4B/rF,GAC1B,IAAI8J,EAAI9J,EAAG8J,EACTC,EAAI/J,EAAG+J,EACP6C,EAAQ5M,EAAG4M,MACXC,EAAS7M,EAAG6M,OAEVm/E,EAAoC,oBAApBC,gBAAkCA,gBAAkB51E,OACpEgJ,EAAOhJ,OAAO0wB,OAAOilD,EAAOjtF,WAYhC,OAVAkrF,GAAmB5qE,EAAM,CACvBvV,EAAGA,EACHC,EAAGA,EACH6C,MAAOA,EACPC,OAAQA,EACRiB,IAAK/D,EACLyH,MAAO1H,EAAI8C,EACX01E,OAAQz1E,EAAS9C,EACjB8D,KAAM/D,IAEDuV,CACT,CAoFsB6sE,CAAmBJ,GAOrC7B,GAAmBprF,KAAM,CACvB0I,OAAQA,EACRwkF,YAAaA,GAEjB,EAGEI,GAAiC,WAWnC,SAASA,EAAkBjtF,EAAUktF,EAAYC,GAc/C,GAPAxtF,KAAKytF,oBAAsB,GAM3BztF,KAAK0tF,cAAgB,IAAI9E,GACD,mBAAbvoF,EACT,MAAM,IAAI0E,UAAU,2DAEtB/E,KAAK2tF,UAAYttF,EACjBL,KAAK4tF,YAAcL,EACnBvtF,KAAK6tF,aAAeL,CACtB,CAmHA,OA5GAF,EAAkBptF,UAAUwrD,QAAU,SAAUhjD,GAC9C,IAAK9H,UAAUC,OACb,MAAM,IAAIkE,UAAU,4CAGtB,GAAuB,oBAAZoP,SAA6BA,mBAAmBqD,OAA3D,CAGA,KAAM9O,aAAkB2iF,GAAY3iF,GAAQyL,SAC1C,MAAM,IAAIpP,UAAU,yCAEtB,IAAI+oF,EAAe9tF,KAAK0tF,cAEpBI,EAAahsD,IAAIp5B,KAGrBolF,EAAa5rF,IAAIwG,EAAQ,IAAIgkF,GAAkBhkF,IAC/C1I,KAAK4tF,YAAYzD,YAAYnqF,MAE7BA,KAAK4tF,YAAY9kB,UAZjB,CAaF,EAOAwkB,EAAkBptF,UAAU6tF,UAAY,SAAUrlF,GAChD,IAAK9H,UAAUC,OACb,MAAM,IAAIkE,UAAU,4CAGtB,GAAuB,oBAAZoP,SAA6BA,mBAAmBqD,OAA3D,CAGA,KAAM9O,aAAkB2iF,GAAY3iF,GAAQyL,SAC1C,MAAM,IAAIpP,UAAU,yCAEtB,IAAI+oF,EAAe9tF,KAAK0tF,cAEnBI,EAAahsD,IAAIp5B,KAGtBolF,EAAaznD,OAAO39B,GACfolF,EAAaxpD,MAChBtkC,KAAK4tF,YAAYtD,eAAetqF,MAXlC,CAaF,EAMAstF,EAAkBptF,UAAUurD,WAAa,WACvCzrD,KAAKguF,cACLhuF,KAAK0tF,cAAcn+E,QACnBvP,KAAK4tF,YAAYtD,eAAetqF,KAClC,EAOAstF,EAAkBptF,UAAUyqF,aAAe,WACzC,IAAIlqF,EAAQT,KACZA,KAAKguF,cACLhuF,KAAK0tF,cAActlF,SAAQ,SAAU6lF,GAC/BA,EAAYnB,YACdrsF,EAAMgtF,oBAAoBltF,KAAK0tF,EAEnC,GACF,EAOAX,EAAkBptF,UAAU2qF,gBAAkB,WAE5C,GAAK7qF,KAAK4qF,YAAV,CAGA,IAAIjlD,EAAM3lC,KAAK6tF,aAEX/xB,EAAU97D,KAAKytF,oBAAoBz8D,KAAI,SAAUi9D,GACnD,OAAO,IAAIjB,GAAoBiB,EAAYvlF,OAAQulF,EAAYlB,gBACjE,IACA/sF,KAAK2tF,UAAU/rF,KAAK+jC,EAAKm2B,EAASn2B,GAClC3lC,KAAKguF,aAPL,CAQF,EAMAV,EAAkBptF,UAAU8tF,YAAc,WACxChuF,KAAKytF,oBAAoBrsF,OAAO,EAClC,EAMAksF,EAAkBptF,UAAU0qF,UAAY,WACtC,OAAO5qF,KAAKytF,oBAAoB5sF,OAAS,CAC3C,EACOysF,CACT,CAnJqC,GAwJjC/C,GAA+B,oBAAZ2D,QAA0B,IAAIA,QAAY,IAAItF,GAKjE,GAOF,SAASj+B,EAAetqD,GACtB,KAAML,gBAAgB2qD,GACpB,MAAM,IAAI5lD,UAAU,sCAEtB,IAAKnE,UAAUC,OACb,MAAM,IAAIkE,UAAU,4CAEtB,IAAIwoF,EAAajE,GAAyB4B,cACtCd,EAAW,IAAIkD,GAAkBjtF,EAAUktF,EAAYvtF,MAC3DuqF,GAAUroF,IAAIlC,KAAMoqF,EACtB,EAIF,CAAC,UAAW,YAAa,cAAchiF,SAAQ,SAAUuD,GACvD,GAAezL,UAAUyL,GAAU,WACjC,IAAIxK,EACJ,OAAQA,EAAKopF,GAAUvoF,IAAIhC,OAAO2L,GAAQtK,MAAMF,EAAIP,UACtD,CACF,IACA,IAOA,QALyC,IAA5BooF,GAASr+B,eACXq+B,GAASr+B,eAEX,GC96BLwjC,GAAmB,IAAIpvE,IAW3B,IAAIowD,GAAiB,IAAI,IAVzB,SAAkBif,GAChBA,EAAShmF,SAAQ,SAAUimF,GACzB,IAAIC,EACA5lF,EAAS2lF,EAAO3lF,OACuC,QAA1D4lF,EAAwBH,GAAiBnsF,IAAI0G,UAA+C,IAA1B4lF,GAA4CA,EAAsBlmF,SAAQ,SAAU2iD,GACrJ,OAAOA,EAASriD,EAClB,GACF,GACF,ICHA,IAAI6lF,GAA0B,SAAUC,IACtC,QAAUD,EAAYC,GACtB,IAAI9sF,GAAS,QAAa6sF,GAC1B,SAASA,IAEP,OADA,OAAgBvuF,KAAMuuF,GACf7sF,EAAOL,MAAMrB,KAAMY,UAC5B,CAOA,OANA,QAAa2tF,EAAY,CAAC,CACxB1tD,IAAK,SACL1+B,MAAO,WACL,OAAOnC,KAAKqX,MAAMxH,QACpB,KAEK0+E,CACT,CAd8B,CAc5B,aCrBSE,GAAiC,gBAAoB,MCMhE,SAASC,GAAer3E,EAAO+6C,GAC7B,IAAIviD,EAAWwH,EAAMxH,SACnB6vD,EAAWroD,EAAMqoD,SACfivB,EAAa,SAAa,MAC1BC,EAAa,SAAa,MAC1BC,EAAqB,aAAiBJ,IAEtCK,EAAoC,mBAAbj/E,EACvBk/E,EAAiBD,EAAgBj/E,EAAS8+E,GAAc9+E,EAExDm/E,EAAU,SAAa,CACzBjhF,OAAQ,EACRC,QAAS,EACT6gE,aAAc,EACdC,cAAe,IAGbmgB,GAAUH,GAA8B,iBAAqBC,KAAmB,SAAWA,GAC3FG,EAAYD,EAASF,EAAe38B,IAAM,KAC1Cm2B,EAAY,WAAc,WAC5B,OAAO,SAAW2G,EAAWP,EAC/B,GAAG,CAACO,EAAWP,IACXQ,EAAS,WACX,OAAO,EAAAC,GAAA,GAAYT,EAAWlnF,WAAY,EAAA2nF,GAAA,GAAYR,EAAWnnF,QACnE,EACA,sBAA0B2qD,GAAK,WAC7B,OAAO+8B,GACT,IAEA,IAAIE,EAAW,SAAah4E,GAC5Bg4E,EAAS5nF,QAAU4P,EAEnB,IAAIi4E,EAAmB,eAAkB,SAAU5mF,GACjD,IAAI6mF,EAAoBF,EAAS5nF,QAC/B+nF,EAAWD,EAAkBC,SAC7B9pE,EAAO6pE,EAAkB7pE,KACvB+pE,EAAwB/mF,EAAOqG,wBACjChB,EAAQ0hF,EAAsB1hF,MAC9BC,EAASyhF,EAAsBzhF,OAC7B6gE,EAAcnmE,EAAOmmE,YACvBC,EAAepmE,EAAOomE,aAMpB4gB,EAAaz1E,KAAKwX,MAAM1jB,GACxB4hF,EAAc11E,KAAKwX,MAAMzjB,GAC7B,GAAIghF,EAAQvnF,QAAQsG,QAAU2hF,GAAcV,EAAQvnF,QAAQuG,SAAW2hF,GAAeX,EAAQvnF,QAAQonE,cAAgBA,GAAemgB,EAAQvnF,QAAQqnE,eAAiBA,EAAc,CAClL,IAAIxqC,EAAO,CACTv2B,MAAO2hF,EACP1hF,OAAQ2hF,EACR9gB,YAAaA,EACbC,aAAcA,GAEhBkgB,EAAQvnF,QAAU68B,EAElB,IAAIsrD,EAAoB/gB,IAAgB50D,KAAKwoB,MAAM10B,GAASA,EAAQ8gE,EAChEghB,EAAqB/gB,IAAiB70D,KAAKwoB,MAAMz0B,GAAUA,EAAS8gE,EACpEghB,GAAW,SAAc,QAAc,CAAC,EAAGxrD,GAAO,CAAC,EAAG,CACxDuqC,YAAa+gB,EACb9gB,aAAc+gB,IAGhBhB,SAAwEA,EAAmBiB,EAAUpnF,EAAQgd,GACzG8pE,GAEF5oD,QAAQS,UAAUE,MAAK,WACrBioD,EAASM,EAAUpnF,EACrB,GAEJ,CACF,GAAG,IAYH,OAVA,aAAgB,WACd,IHhEoBiH,EAAStP,EGgEzB0vF,EAAiBZ,IAIrB,OAHIY,IAAmBrwB,IHjEH/vD,EGkEVogF,EHlEmB1vF,EGkEHivF,EHjEvBnB,GAAiBrsD,IAAInyB,KACxBw+E,GAAiBjsF,IAAIyN,EAAS,IAAIg3B,KAClCwoC,GAAezjB,QAAQ/7C,IAEzBw+E,GAAiBnsF,IAAI2N,GAAS6B,IAAInR,IG+DzB,WACL,OH9DC,SAAmBsP,EAAStP,GAC7B8tF,GAAiBrsD,IAAInyB,KACvBw+E,GAAiBnsF,IAAI2N,GAAS02B,OAAOhmC,GAChC8tF,GAAiBnsF,IAAI2N,GAAS20B,OACjC6qC,GAAe4e,UAAUp+E,GACzBw+E,GAAiB9nD,OAAO12B,IAG9B,CGsDao+E,CAAUgC,EAAgBT,EACnC,CACF,GAAG,CAACX,EAAWlnF,QAASi4D,IAEJ,gBAAoB6uB,GAAY,CAClDn8B,IAAKw8B,GACJK,EAAsB,eAAmBF,EAAgB,CAC1D38B,IAAKm2B,IACFwG,EACP,CAKA,OAJqC,aAAiBL,ICvFtD,SAAS,GAAer3E,EAAO+6C,GAC7B,IAAIviD,EAAWwH,EAAMxH,SASrB,OARqC,mBAAbA,EAA0B,CAACA,IAAY,QAAQA,IAQrDmhB,KAAI,SAAUlhB,EAAO9H,GACrC,IAAI64B,GAAO/wB,aAAqC,EAASA,EAAM+wB,MAAQ,GAAGttB,OAfpD,kBAegF,KAAKA,OAAOvL,GAClH,OAAoB,gBAAoB,IAAgB,OAAS,CAAC,EAAGqP,EAAO,CAC1EwpB,IAAKA,EACLuxB,IAAe,IAAVpqD,EAAcoqD,OAAM37B,IACvB3mB,EACN,GACF,CACA,IAAIkgF,GAAiC,aAAiB,IAItDA,GAAkBC,WF3BX,SAAoBp+B,GACzB,IAAIhiD,EAAWgiD,EAAKhiD,SAClBqgF,EAAgBr+B,EAAKq+B,cACnBC,EAAc,SAAa,GAC3BC,EAAiB,SAAa,IAC9BvB,EAAqB,aAAiBJ,IACtCe,EAAW,eAAkB,SAAUlrD,EAAM30B,EAAS+V,GACxDyqE,EAAY1oF,SAAW,EACvB,IAAI4oF,EAAYF,EAAY1oF,QAC5B2oF,EAAe3oF,QAAQlH,KAAK,CAC1B+jC,KAAMA,EACN30B,QAASA,EACT+V,KAAMA,IAERkhB,QAAQS,UAAUE,MAAK,WACjB8oD,IAAcF,EAAY1oF,UAC5ByoF,SAA8DA,EAAcE,EAAe3oF,SAC3F2oF,EAAe3oF,QAAU,GAE7B,IAEAonF,SAAwEA,EAAmBvqD,EAAM30B,EAAS+V,EAC5G,GAAG,CAACwqE,EAAerB,IACnB,OAAoB,gBAAoBJ,GAAkBztB,SAAU,CAClE7+D,MAAOqtF,GACN3/E,EACL,EEEA,sBCzBA,IAAI,GAAO,EAQI,SAAS,GAAM6D,GAE5B,IAAI84D,EAAkB,WAAe,UACnCC,GAAmB,QAAeD,EAAiB,GACnDkW,EAAUjW,EAAiB,GAC3BkW,EAAalW,EAAiB,GAC5B6jB,GAjBY,QAAc,CAAC,EAAG,GACjBlM,MAiBbmM,EAAgBD,aAAiD,EAASA,IAU9E,OATA,aAAgB,WACd,IAAKA,EAAa,CAChB,IAAIE,EAAS,GACb,IAAQ,EACR7N,EAAW,aAAapvE,OAAOi9E,GACjC,CACF,GAAG,IAGC98E,IAUG68E,GAAiB7N,EAC1B,CC5CA,kBACE,GAAyB,oBAAdhjC,WAA+C,oBAAXx8C,OAC7C,OAAO,EAET,IAAIutF,EAAQ/wC,UAAUF,WAAaE,UAAUgxC,QAAUxtF,OAAOytF,MAC9D,MAAO,sVAAsVrrF,KAAKmrF,IAAU,4hDAA4hDnrF,KAAKmrF,aAAqC,EAASA,EAAMr1D,OAAO,EAAG,GAC58D,ECJD,GADkC,gBAAoB,MCAtD,SAAS,GAAQ/1B,GACf,OAAOA,EAAMo7B,MAAMC,QAAQr7B,GAAOA,EAAM,CAACA,GAAO,EAClD,CCFA,SAASurF,KACP,IAAI7lE,EAAKnqB,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,GACzEoqB,EAAKpqB,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,GAE7E,OADmBA,UAAUC,OAAS,EAAID,UAAU,QAAK61B,GAEhD1L,EAAG,KAAOC,EAAG,GAEfD,EAAG,KAAOC,EAAG,IAAMD,EAAG,KAAOC,EAAG,EACzC,CAeO,SAAS6lE,GAAUpxB,EAAWqxB,EAAQprF,EAAWqrF,GACtD,OAAID,IAGAprF,EACK,CACL+pE,WAAY,GAAGl8D,OAAOksD,EAAW,KAAKlsD,OAAO7N,IAG7CqrF,EACK,CACLthB,WAAYshB,GAGT,KACT,CACO,SAASC,GAAOvJ,GACrB,OAAOA,EAAI6D,cAAcrgC,WAC3B,CAOO,SAASgmC,GAAgBxJ,GAI9B,IAHA,IAAIyJ,EAAe,GACfzpF,EAAUggF,aAAiC,EAASA,EAAI3X,cACxDqhB,EAAc,CAAC,SAAU,SAAU,OAAQ,QACxC1pF,GAAS,CACd,IAAI2pF,EAAwBJ,GAAOvpF,GAASyjD,iBAAiBzjD,GAIzD,CAHU2pF,EAAsBC,UACtBD,EAAsBE,UACvBF,EAAsB9lC,UACEoP,MAAK,SAAUt1C,GAClD,OAAO+rE,EAAYhsF,SAASigB,EAC9B,KACE8rE,EAAa3wF,KAAKkH,GAEpBA,EAAUA,EAAQqoE,aACpB,CACA,OAAOohB,CACT,CACO,SAASK,GAAMC,GACpB,IAAIxsD,EAAepkC,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,EACvF,OAAOqhB,OAAOC,MAAMsvE,GAAOxsD,EAAewsD,CAC5C,CACA,SAASC,GAAWpsF,GAClB,OAAOksF,GAAMlmE,WAAWhmB,GAAM,EAChC,CAuBO,SAASqsF,GAAeC,EAAUT,GACvC,IAAIU,GAAc,QAAc,CAAC,EAAGD,GAuDpC,OAtDCT,GAAgB,IAAI9oF,SAAQ,SAAUq/E,GACrC,KAAIA,aAAeoK,iBAAnB,CAKA,IAAIC,EAAyBd,GAAOvJ,GAAKv8B,iBAAiBu8B,GACxDn8B,EAAWwmC,EAAuBxmC,SAClCymC,EAAqBD,EAAuBC,mBAC5CrjB,EAAiBojB,EAAuBpjB,eACxCsjB,EAAoBF,EAAuBE,kBAC3CvjB,EAAkBqjB,EAAuBrjB,gBACzCwjB,EAAmBH,EAAuBG,iBACxCC,EAAUzK,EAAI14E,wBACdojF,EAAe1K,EAAI3Y,aACrBsjB,EAAiB3K,EAAIjB,aACrB6L,EAAc5K,EAAI5Y,YAClByjB,EAAgB7K,EAAI9B,YAClB4M,EAAed,GAAW/iB,GAC1B8jB,EAAkBf,GAAWO,GAC7BS,EAAgBhB,GAAWhjB,GAC3BikB,EAAiBjB,GAAWQ,GAC5BU,EAASpB,GAAMt3E,KAAKwoB,MAAMyvD,EAAQnkF,MAAQskF,EAAc,KAAQ,KAChEO,EAASrB,GAAMt3E,KAAKwoB,MAAMyvD,EAAQlkF,OAASmkF,EAAe,KAAQ,KAGlEU,GAAkBR,EAAcC,EAAgBG,EAAgBC,GAAkBC,EAClFG,GAAmBX,EAAeC,EAAiBG,EAAeC,GAAmBI,EAGrFG,EAAuBR,EAAeK,EACtCI,EAA0BR,EAAkBI,EAC5CK,EAAwBR,EAAgBE,EACxCO,EAAyBR,EAAiBC,EAG1CQ,EAAkB,EAClBC,EAAmB,EACvB,GAAiB,SAAb9nC,EAAqB,CACvB,IAAI+nC,EAAU5B,GAAWM,GACzBoB,EAAkBE,EAAUV,EAC5BS,EAAmBC,EAAUT,CAC/B,CAGA,IAAIU,EAAUpB,EAAQjnF,EAAIgoF,EAAwBE,EAC9CI,EAASrB,EAAQhnF,EAAI6nF,EAAuBK,EAC5CI,EAAWF,EAAUpB,EAAQnkF,MAAQ,EAAIolF,EAAkBF,EAAwBC,EAAyBL,EAC5GY,EAAYF,EAASrB,EAAQlkF,OAAS,EAAIolF,EAAmBL,EAAuBC,EAA0BF,EAClHlB,EAAY5iF,KAAOiL,KAAKE,IAAIy3E,EAAY5iF,KAAMskF,GAC9C1B,EAAY3iF,IAAMgL,KAAKE,IAAIy3E,EAAY3iF,IAAKskF,GAC5C3B,EAAYj/E,MAAQsH,KAAKC,IAAI03E,EAAYj/E,MAAO6gF,GAChD5B,EAAYnO,OAASxpE,KAAKC,IAAI03E,EAAYnO,OAAQgQ,EAjDlD,CAkDF,IACO7B,CACT,CCjJA,SAAS8B,GAAcpvD,GACrB,IACIqvD,EAAY,GAAGpgF,OADN3S,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,GAE7EgzF,EAAQD,EAAU14D,MAAM,YAC5B,OAAI24D,EACKtvD,GAAQjZ,WAAWuoE,EAAM,IAAM,KAEjCvoE,WAAWsoE,EACpB,CACA,SAASE,GAAgBrzE,EAAM2iE,GAC7B,IAAItxB,EAAOsxB,GAAU,GACnBnlB,GAAQ,QAAenM,EAAM,GAC7BtjD,EAAUyvD,EAAM,GAChBvvD,EAAUuvD,EAAM,GAClB,MAAO,CAAC01B,GAAclzE,EAAKzS,MAAOQ,GAAUmlF,GAAclzE,EAAKxS,OAAQS,GACzE,CACA,SAASqlF,KACP,IAAIpzE,EAAS9f,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,GACjF,MAAO,CAAC8f,EAAO,GAAIA,EAAO,GAC5B,CACA,SAASqzE,GAAcvzE,EAAME,GAC3B,IAGIxV,EAHA8oF,EAAYtzE,EAAO,GACnBuzE,EAAYvzE,EAAO,GAqBvB,OAfExV,EADgB,MAAd8oF,EACExzE,EAAKtV,EACc,MAAd8oF,EACLxzE,EAAKtV,EAAIsV,EAAKxS,OAEdwS,EAAKtV,EAAIsV,EAAKxS,OAAS,EAWtB,CACL/C,EARgB,MAAdgpF,EACEzzE,EAAKvV,EACc,MAAdgpF,EACLzzE,EAAKvV,EAAIuV,EAAKzS,MAEdyS,EAAKvV,EAAIuV,EAAKzS,MAAQ,EAI1B7C,EAAGA,EAEP,CACA,SAASgpF,GAAcxzE,EAAQ1Y,GAC7B,IAAImsF,EAAa,CACfpwF,EAAG,IACHkf,EAAG,IACHqC,EAAG,IACHpG,EAAG,KAEL,OAAOwB,EAAOsQ,KAAI,SAAUhmB,EAAO9J,GACjC,OAAIA,IAAM8G,EACDmsF,EAAWnpF,IAAU,IAEvBA,CACT,IAAGqe,KAAK,GACV,UCnEe,SAAS+qE,GAAM/8E,GAC5B,IAAIooD,EAAYpoD,EAAMooD,UACpB40B,EAAQh9E,EAAMg9E,MACdC,EAAQj9E,EAAMi9E,MACdC,EAAWl9E,EAAMk9E,SACf1iC,EAAOyiC,GAAS,CAAC,EACnB1gF,EAAYi+C,EAAKj+C,UACjBkjE,EAAUjlB,EAAKilB,QACb0d,EAAcD,EAAStpF,EACzBA,OAAoB,IAAhBupF,EAAyB,EAAIA,EACjCC,EAAcF,EAASrpF,EACvBA,OAAoB,IAAhBupF,EAAyB,EAAIA,EAC/BC,EAAW,WAGf,IAAKL,IAAUA,EAAM3zE,OACnB,OAAO,KAET,IAAIi0E,EAAa,CACfxpC,SAAU,YAIZ,IAAwB,IAApBkpC,EAAMO,UAAqB,CAC7B,IAAIC,EAAcR,EAAM3zE,OAAO,GAC3Bo0E,EAAeT,EAAM3zE,OAAO,GAC5Bq0E,EAAUF,EAAY,GACtBG,EAAUH,EAAY,GACtBI,EAAWH,EAAa,GACxBI,EAAWJ,EAAa,GAGxBC,IAAYE,GAAa,CAAC,IAAK,KAAK9vF,SAAS4vF,GAE1B,MAAZA,EACTJ,EAAW1lF,IAAM,EAEjB0lF,EAAWlR,OAAS,EAJpBkR,EAAW1lF,IAAM/D,EAQf8pF,IAAYE,GAAa,CAAC,IAAK,KAAK/vF,SAAS6vF,GAE1B,MAAZA,EACTL,EAAW3lF,KAAO,EAElB2lF,EAAWhiF,MAAQ,EAJnBgiF,EAAW3lF,KAAO/D,CAMtB,CACA,OAAoB,gBAAoB,MAAO,CAC7CmnD,IAAKsiC,EACL9gF,UAAW,IAAW,GAAGL,OAAOksD,EAAW,UAAW7rD,GACtD9H,MAAO6oF,GACN7d,EACL,CCpDe,SAASqe,GAAK99E,GAC3B,IAAIooD,EAAYpoD,EAAMooD,UACpB3F,EAAOziD,EAAMyiD,KACbrlD,EAAS4C,EAAM5C,OACf2gF,EAAO/9E,EAAM+9E,KACbtE,EAASz5E,EAAMy5E,OACjB,OAAKsE,EAGe,gBAAoB,OAAW,OAAS,CAAC,EAAGtE,EAAQ,CACtEthB,cAAc,EACdj7D,QAASulD,EACT6Y,eAAe,KACb,SAAU9gB,GACZ,IAAIj+C,EAAYi+C,EAAKj+C,UACrB,OAAoB,gBAAoB,MAAO,CAC7C9H,MAAO,CACL2I,OAAQA,GAEVb,UAAW,IAAW,GAAGL,OAAOksD,EAAW,SAAU7rD,IAEzD,IAdS,IAeX,CChBA,OATgC,QAAW,SAAUi+C,GAEnD,OADeA,EAAKhiD,QAEtB,IAAG,SAAU62B,EAAGnR,GACd,OAAOA,EAAKzW,KACd,ICMIu2E,GAAqB,cAAiB,SAAUh+E,EAAO+6C,GACzD,IAAIkjC,EAAQj+E,EAAMi+E,MAChB1hF,EAAYyD,EAAMzD,UAClB6rD,EAAYpoD,EAAMooD,UAClB3zD,EAAQuL,EAAMvL,MACdpD,EAAS2O,EAAM3O,OACf6sF,EAAoBl+E,EAAMm+E,iBAC1B17B,EAAOziD,EAAMyiD,KACb27B,EAAUp+E,EAAMo+E,QAChB54B,EAAUxlD,EAAMwlD,QAChBu4B,EAAO/9E,EAAM+9E,KACbd,EAAQj9E,EAAMi9E,MACdC,EAAWl9E,EAAMk9E,SACjBF,EAAQh9E,EAAMg9E,MACdvD,EAASz5E,EAAMy5E,OACf4E,EAAar+E,EAAMq+E,WACnBC,EAAct+E,EAAMs+E,YACpBC,EAAoBv+E,EAAMu+E,kBAC1B3O,EAAc5vE,EAAM4vE,YACpBJ,EAASxvE,EAAMw+E,OACfphF,EAAS4C,EAAM5C,OACfmrD,EAAevoD,EAAMuoD,aACrBC,EAAexoD,EAAMwoD,aACrBi2B,EAAiBz+E,EAAMy+E,eACvBC,EAAQ1+E,EAAM0+E,MACdxnF,EAAU8I,EAAM9I,QAChBE,EAAU4I,EAAM5I,QAChBunF,EAAU3+E,EAAM2+E,QAChBC,EAAU5+E,EAAM4+E,QAChBC,EAAU7+E,EAAM6+E,QAChBC,EAAY9+E,EAAM8+E,UAClBC,EAAU/+E,EAAM++E,QAChBC,EAAch/E,EAAMg/E,YACpBC,EAAej/E,EAAMi/E,aACnBC,EAA6B,mBAAVjB,EAAuBA,IAAUA,EAGpDkB,EAAgB18B,GAAQ27B,EAGxBgB,GAA+Bb,aAA6D,EAASA,EAAkB/0F,QAAU,EACjI2rE,EAAkB,YAAgBopB,IAAsBa,GAC1DhqB,GAAmB,QAAeD,EAAiB,GACnDl3D,EAAOm3D,EAAiB,GACxBiqB,EAAUjqB,EAAiB,GAU7B,IAPA,EAAAwZ,GAAA,IAAgB,YACT3wE,GAAQmhF,GAA+B/tF,GAC1CguF,GAAQ,EAEZ,GAAG,CAACphF,EAAMmhF,EAA6B/tF,KAGlC4M,EACH,OAAO,KAIT,IAAIqhF,EAAO,OACPC,EAAc,CAChB5nF,KAAM,UACNC,IAAK,UACL0D,MAAOgkF,EACPlT,OAAQkT,GAIV,GAAIZ,IAAUj8B,EAAM,CAClB,IAAIp5C,EAAS2zE,EAAM3zE,OACjBm2E,EAAgBxC,EAAMwC,cACpBC,EAAeD,aAAqD,EAASA,EAAcC,aAC3FC,EAAaD,GAAiC,MAAjBp2E,EAAO,GAAG,GACvCs2E,EAAcF,GAAiC,MAAjBp2E,EAAO,GAAG,GACxCq2E,GACFH,EAAYjkF,MAAQqjF,EACpBY,EAAY5nF,KAAO2nF,IAEnBC,EAAY5nF,KAAOT,EACnBqoF,EAAYjkF,MAAQgkF,GAElBK,GACFJ,EAAYnT,OAASwS,EACrBW,EAAY3nF,IAAM0nF,IAElBC,EAAY3nF,IAAMR,EAClBmoF,EAAYnT,OAASkT,EAEzB,CAGA,IAAIM,EAAY,CAAC,EAgBjB,OAfIb,IACEA,EAAQjxF,SAAS,WAAamxF,EAChCW,EAAUjpF,OAASsoF,EACVF,EAAQjxF,SAAS,cAAgBmxF,IAC1CW,EAAUC,UAAYZ,GAEpBF,EAAQjxF,SAAS,UAAYkxF,EAC/BY,EAAUlpF,MAAQsoF,EACTD,EAAQjxF,SAAS,aAAekxF,IACzCY,EAAU7f,SAAWif,IAGpBv8B,IACHm9B,EAAU1rC,cAAgB,QAER,gBAAoBs7B,EAAQ,CAC9C/sB,KAAM67B,GAAea,EACrB5P,aAAcgP,GAAqB,WACjC,OAAOA,EAAkBltF,EAC3B,EACAu+E,YAAaA,GACC,gBAAoBkO,GAAM,CACxC11B,UAAWA,EACX3F,KAAMA,EACNrlD,OAAQA,EACR2gF,KAAMA,EACNtE,OAAQ4E,IACO,gBAAoB,GAAgB,CACnDlG,SAAU0G,EACVx2B,UAAW5F,IACV,SAAUq9B,GACX,OAAoB,gBAAoB,OAAW,OAAS,CAC1D3nB,cAAc,EACd4nB,aAAa,EACbC,aAAa,EACb1kB,eAAe,EACfgjB,YAAaA,EACb2B,gBAAiB,GAAG/jF,OAAOksD,EAAW,YACrCqxB,EAAQ,CACTyG,gBAAiBpB,EACjBqB,eAAgBrB,EAChB5hF,QAASulD,EACT07B,iBAAkB,SAA0BiC,GAC1C,IAAIC,EACJ5G,SAAsG,QAArD4G,EAAwB5G,EAAO0E,wBAAwD,IAA1BkC,GAA4CA,EAAsB91F,KAAKkvF,EAAQ2G,GAC7LlC,EAAkBkC,EACpB,KACE,SAAU5lC,EAAM8lC,GAClB,IAAI5nB,EAAkBle,EAAKj+C,UACzBu/D,EAActhB,EAAK/lD,MACjBi0D,EAAM,IAAWN,EAAWsQ,EAAiBn8D,GACjD,OAAoB,gBAAoB,MAAO,CAC7Cw+C,KAAK,SAAW+kC,EAAmB/kC,EAAKulC,GACxC/jF,UAAWmsD,EACXj0D,OAAO,SAAc,SAAc,SAAc,QAAc,CAC7D,YAAa,GAAGyH,OAAOghF,EAAStpF,GAAK,EAAG,MACxC,YAAa,GAAGsI,OAAOghF,EAASrpF,GAAK,EAAG,OACvC0rF,GAAcK,GAAY9jB,GAAc,CAAC,EAAG,CAC7C3I,UAAW,aACX/1D,OAAQA,GACP3I,GACH8zD,aAAcA,EACdC,aAAcA,EACdi2B,eAAgBA,EAChBj5B,QAASA,GACRy3B,GAAsB,gBAAoBF,GAAO,CAClD30B,UAAWA,EACX60B,MAAOA,EACPC,SAAUA,EACVF,MAAOA,IACQ,gBAAoB,GAAc,CACjDv1E,OAAQg7C,GACPy8B,GACL,GACF,IACF,IAIA,UCrLIqB,GAA8B,cAAiB,SAAUvgF,EAAO+6C,GAClE,IAAIviD,EAAWwH,EAAMxH,SACnBgoF,EAAoBxgF,EAAMwgF,kBACxBC,GAAY,SAAWjoF,GAGvBkoF,EAAS,eAAkB,SAAUr3C,IACvC,SAAQ0R,EAAKylC,EAAoBA,EAAkBn3C,GAAQA,EAC7D,GAAG,CAACm3C,IACAtP,GAAY,SAAcwP,EAAQloF,EAASuiD,KAC/C,OAAO0lC,EAAyB,eAAmBjoF,EAAU,CAC3DuiD,IAAKm2B,IACF14E,CACP,IAIA,UChBI,GAAY,CAAC,YAAa,WAAY,SAAU,aAAc,aAAc,eAAgB,sBAAuB,uBAAwB,0BAA2B,kBAAmB,kBAAmB,aAAc,YAAa,OAAQ,eAAgB,oBAAqB,cAAe,cAAe,qBAAsB,QAAS,iBAAkB,aAAc,iBAAkB,oBAAqB,aAAc,SAAU,UAAW,6BAA8B,aAAc,eAAgB,eAAgB,QAAS,cAAe,aAAc,sBAAuB,iBAAkB,qBAAsB,gBAAiB,YAAa,qBAsgB9oB,OA7eO,WACL,IAAImoF,EAAkBp3F,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,GACtFq3F,EAAuB,cAAiB,SAAU5gF,EAAO+6C,GAC3D,IAAI8lC,EAAmB7gF,EAAMooD,UAC3BA,OAAiC,IAArBy4B,EAA8B,mBAAqBA,EAC/DroF,EAAWwH,EAAMxH,SACjBsoF,EAAgB9gF,EAAMojB,OACtBA,OAA2B,IAAlB09D,EAA2B,QAAUA,EAC9CC,EAAa/gF,EAAM+gF,WACnBC,EAAahhF,EAAMghF,WACnBC,EAAejhF,EAAMihF,aACrBC,EAAsBlhF,EAAMkhF,oBAC5BC,EAAuBnhF,EAAMmhF,qBAC7BC,EAA0BphF,EAAMohF,wBAChCC,EAAkBrhF,EAAMqhF,gBACxBC,EAAwBthF,EAAMuhF,gBAC9BA,OAA4C,IAA1BD,EAAmC,GAAMA,EAC3DE,EAAaxhF,EAAMwhF,WACnBC,EAAYzhF,EAAMyhF,UAClB1D,EAAO/9E,EAAM+9E,KACb2D,EAAsB1hF,EAAM2hF,aAC5BA,OAAuC,IAAxBD,GAAwCA,EACvDnD,EAAoBv+E,EAAMu+E,kBAC1BD,EAAct+E,EAAMs+E,YACpB1O,EAAc5vE,EAAM4vE,YACpBgS,EAAqB5hF,EAAM4hF,mBAC3B3D,EAAQj+E,EAAMi+E,MACd4D,EAAiB7hF,EAAM6hF,eACvBC,EAAa9hF,EAAM8hF,WACnBC,EAAiB/hF,EAAM+hF,eACvBC,EAAwBhiF,EAAMiiF,kBAC9BA,OAA8C,IAA1BD,EAAmC,CAAC,EAAIA,EAC5DE,EAAaliF,EAAMkiF,WACnB9kF,EAAS4C,EAAM5C,OACf2hF,EAAU/+E,EAAM++E,QAChBoD,EAA6BniF,EAAMmiF,2BACnCC,EAAapiF,EAAMoiF,WACnBC,EAAeriF,EAAMqiF,aACrBC,EAAetiF,EAAMsiF,aACrBrF,EAAQj9E,EAAMi9E,MACdsF,EAAcviF,EAAMuiF,YACpBlE,EAAar+E,EAAMq+E,WACnBmE,EAAsBxiF,EAAMwiF,oBAC5BC,EAAiBziF,EAAMyiF,eACvBC,EAAqB1iF,EAAM0iF,mBAC3BC,EAAgB3iF,EAAM2iF,cACtBpmF,EAAYyD,EAAMzD,UAClBikF,EAAoBxgF,EAAMwgF,kBAC1B3T,GAAY,QAAyB7sE,EAAO,IAC1C4iF,EAAoBhT,GAAegS,IAAsB,EAGzDzsB,EAAkB,YAAe,GACnCC,IAAmB,QAAeD,EAAiB,GACnD0tB,GAASztB,GAAiB,GAC1B0tB,GAAY1tB,GAAiB,IAC/B,EAAAwZ,GAAA,IAAgB,WACdkU,GAAUC,KACZ,GAAG,IAGH,IAAIC,GAAmB,SAAa,CAAC,GACjCC,GAAgB,aAAiB,IACjCnnE,GAAU,WAAc,WAC1B,MAAO,CACLonE,iBAAkB,SAA0B7mF,EAAI8mF,GAC9CH,GAAiB5yF,QAAQiM,GAAM8mF,EAC/BF,UAA8DA,GAAcC,iBAAiB7mF,EAAI8mF,EACnG,EAEJ,GAAG,CAACF,KAGA5mF,GAAK,KACLi5D,GAAmB,WAAe,MACpCC,IAAmB,QAAeD,GAAkB,GACpD8tB,GAAW7tB,GAAiB,GAC5B8tB,GAAc9tB,GAAiB,GAC7B+tB,IAAc,EAAA5pB,GAAA,IAAS,SAAUrwB,IAC/B,QAAMA,IAAS+5C,KAAa/5C,GAC9Bg6C,GAAYh6C,GAEd45C,UAA8DA,GAAcC,iBAAiB7mF,GAAIgtC,EACnG,IAIIqsB,GAAmB,WAAe,MACpCC,IAAmB,QAAeD,GAAkB,GACpD6tB,GAAY5tB,GAAiB,GAC7B6tB,GAAe7tB,GAAiB,GAC9B8tB,IAAe,EAAA/pB,GAAA,IAAS,SAAUrwB,IAChC,QAAMA,IAASk6C,KAAcl6C,GAC/Bm6C,GAAan6C,EAEjB,IAGI5wC,GAAQ,WAAeirF,KAAKlrF,GAC5BmrF,IAAoBlrF,cAAqC,EAASA,GAAMuH,QAAU,CAAC,EACnF4jF,GAAa,CAAC,EACdC,IAAiB,EAAAnqB,GAAA,IAAS,SAAU0W,GACtC,IAAI0T,EAAgBC,EAChBC,EAAWT,GACf,OAAQS,aAA2C,EAASA,EAAS9rB,SAASkY,MAAyD,QAA9C0T,GAAiB,QAAcE,UAA0C,IAAnBF,OAA4B,EAASA,EAAeG,QAAU7T,GAAOA,IAAQ4T,IAAaZ,cAA2C,EAASA,GAASlrB,SAASkY,MAA0D,QAA/C2T,GAAkB,QAAcX,WAA2C,IAApBW,OAA6B,EAASA,EAAgBE,QAAU7T,GAAOA,IAAQgT,IAAYjjF,OAAOgpB,OAAO65D,GAAiB5yF,SAASizD,MAAK,SAAU8/B,GACjgB,OAAQA,aAAiD,EAASA,EAAYjrB,SAASkY,KAASA,IAAQ+S,CAC1G,GACF,IAGIe,GAAmB1K,GAAUpxB,EAAWm6B,EAAaE,EAAgBD,GACrE2B,GAAkB3K,GAAUpxB,EAAWi2B,EAAYsE,EAAeD,GAGlE7sB,GAAmB,WAAeqrB,IAAuB,GAC3DprB,IAAmB,QAAeD,GAAkB,GACpDuuB,GAAetuB,GAAiB,GAChCuuB,GAAkBvuB,GAAiB,GAGjCwuB,GAAarD,QAAmDA,EAAemD,GAG/EG,IAAgB,EAAA7qB,GAAA,IAAS,SAAU8qB,QAChBplE,IAAjB6hE,GACFoD,GAAgBG,EAEpB,KACA,EAAA5V,GAAA,IAAgB,WACdyV,GAAgBpD,IAAgB,EAClC,GAAG,CAACA,IACJ,IAAIwD,GAAU,SAAaH,IAC3BG,GAAQr0F,QAAUk0F,GAClB,IAAII,IAAsB,EAAAhrB,GAAA,IAAS,SAAU8qB,IAG3C,KAAAG,YAAU,WACJL,KAAeE,IACjBD,GAAcC,GACdrD,SAA4EA,EAAqBqD,GAErG,GACF,IAGII,GAAW,WACXC,GAAa,WACfv3F,aAAas3F,GAASx0F,QACxB,EACI00F,GAAc,SAAqBN,GACrC,IAAIh4F,EAAQjD,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,EAChFs7F,KACc,IAAVr4F,EACFk4F,GAAoBF,GAEpBI,GAASx0F,QAAUnE,YAAW,WAC5By4F,GAAoBF,EACtB,GAAW,IAARh4F,EAEP,EACA,aAAgB,WACd,OAAOq4F,EACT,GAAG,IAGH,IAAI7uB,GAAmB,YAAe,GACpCC,IAAoB,QAAeD,GAAkB,GACrD+uB,GAAW9uB,GAAkB,GAC7B+uB,GAAc/uB,GAAkB,IAClC,EAAA2Y,GAAA,IAAgB,SAAUqW,GACnBA,IAAcX,IACjBU,IAAY,EAEhB,GAAG,CAACV,KACJ,IAAInuB,GAAoB,WAAe,MACrCC,IAAoB,QAAeD,GAAmB,GACtD+uB,GAAuB9uB,GAAkB,GACzC+uB,GAA0B/uB,GAAkB,GAG1CE,GAAoB,WAAe,CAAC,EAAG,IACzCC,IAAoB,QAAeD,GAAmB,GACtD8uB,GAAW7uB,GAAkB,GAC7B8uB,GAAc9uB,GAAkB,GAC9B+uB,GAAqB,SAA4B5xF,GACnD2xF,GAAY,CAAC3xF,EAAMI,QAASJ,EAAMK,SACpC,EACIwxF,GNjJO,SAAkB9iC,EAAM2gC,EAAU/xF,EAAQm0F,EAAWvD,EAAmBC,EAAYI,GACjG,IAAIntB,EAAkB,WAAe,CACjCupB,OAAO,EACPxnF,QAAS,EACTE,QAAS,EACTunF,QAAS,EACTC,QAAS,EACT6G,OAAQ,EACRC,OAAQ,EACRpK,OAAQ,EACRC,OAAQ,EACRyB,MAAOiF,EAAkBuD,IAAc,CAAC,IAE1CpwB,GAAmB,QAAeD,EAAiB,GACnDwwB,EAAavwB,EAAiB,GAC9BwwB,EAAgBxwB,EAAiB,GAC/BywB,EAAgB,SAAa,GAC7BhM,EAAe,WAAc,WAC/B,OAAKuJ,EAGExJ,GAAgBwJ,GAFd,EAGX,GAAG,CAACA,IAKA0C,EAAc,SAAa,CAAC,GAI3BrjC,IAFHqjC,EAAY11F,QAAU,CAAC,GAOzB,IAAIyuF,GAAU,EAAAnlB,GAAA,IAAS,WACrB,GAAI0pB,GAAY/xF,GAAUoxD,EAAM,CAG9B,IAoCIsjC,EApCAC,EAA6B,SAAoC9uF,EAASE,GAC5E,IAAIm6C,EAAOhoD,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAKgxF,EAC3EtsE,EAAIg4E,EAAUryF,EAAIsD,EAClBxK,EAAIu5F,EAAUpyF,EAAIuD,EAClByQ,EAAIoG,EAAIi4E,EACRt6E,EAAIlf,EAAIy5F,EACRC,EAAWxjF,KAAKE,IAAImL,EAAGsjC,EAAK55C,MAC5B0uF,EAAWzjF,KAAKE,IAAIpW,EAAG6kD,EAAK35C,KAC5B0uF,EAAW1jF,KAAKC,IAAIgF,EAAG0pC,EAAKj2C,OAC5BirF,EAAW3jF,KAAKC,IAAI+I,EAAG2lC,EAAK66B,QAChC,OAAOxpE,KAAKE,IAAI,GAAIwjF,EAAWF,IAAaG,EAAWF,GACzD,EACIG,EAAwB,WAC1BC,GAAaR,EAAUpyF,EAAI6yF,GAC3BC,GAAkBF,GAAaN,EAC/BS,GAAaX,EAAUryF,EAAIizF,GAC3BC,GAAiBF,GAAaV,CAChC,EACIa,EAAe3D,EACf4D,EAAaD,EAAatyF,MAAMkD,KAChCsvF,EAAYF,EAAatyF,MAAMmD,IAC/BsvF,EAAcH,EAAatyF,MAAM6G,MACjC6rF,EAAeJ,EAAatyF,MAAM23E,OAClCgb,EAAML,EAAa9S,cACnBoT,EAAM1N,GAAOoN,GAGbO,GAAgB,SAAc,QAAc,CAAC,EAAGrF,EAAkBuD,IAAatD,GAUnF,GAPA6E,EAAatyF,MAAMkD,KAAO,IAC1BovF,EAAatyF,MAAMmD,IAAM,IACzBmvF,EAAatyF,MAAM6G,MAAQ,OAC3ByrF,EAAatyF,MAAM23E,OAAS,OAIxBhjD,MAAMC,QAAQh4B,GAChB00F,EAAa,CACXnyF,EAAGvC,EAAO,GACVwC,EAAGxC,EAAO,GACVqF,MAAO,EACPC,OAAQ,OAEL,CACL,IAAIwS,EAAO9X,EAAOqG,wBAClBquF,EAAa,CACXnyF,EAAGuV,EAAKvV,EACRC,EAAGsV,EAAKtV,EACR6C,MAAOyS,EAAKzS,MACZC,OAAQwS,EAAKxS,OAEjB,CACA,IAAIsvF,EAAYc,EAAarvF,wBACzB6vF,EAAwBF,EAAIxzC,iBAAiBkzC,GAC/CrwF,EAAQ6wF,EAAsB7wF,MAC9BC,EAAS4wF,EAAsB5wF,OAC7B6wF,EAAuBJ,EAAIlY,gBAC7BZ,EAAckZ,EAAqBlZ,YACnCa,EAAeqY,EAAqBrY,aACpChU,EAAcqsB,EAAqBrsB,YACnC6T,EAAewY,EAAqBxY,aACpCyY,EAAYD,EAAqBC,UACjCC,EAAaF,EAAqBE,WAChCvB,EAAcF,EAAUtvF,OACxBuvF,EAAaD,EAAUvvF,MACvBuoF,EAAe8G,EAAWpvF,OAC1BqoF,EAAc+G,EAAWrvF,MAGzBixF,EAAgB,CAClBhwF,KAAM,EACNC,IAAK,EACL0D,MAAOgzE,EACPlC,OAAQ+C,GAENyY,EAAe,CACjBjwF,MAAO+vF,EACP9vF,KAAM6vF,EACNnsF,MAAO6/D,EAAcusB,EACrBtb,OAAQ4C,EAAeyY,GAErBI,EAAaP,EAAcO,WAC3BC,EAAU,UACVC,EAAgB,eACD,WAAfF,GAA2BA,IAAeE,IAC5CF,EAAaC,GAEf,IAAIE,EAAiBH,IAAeE,EAChCE,EAAmB5N,GAAeuN,EAAc/N,GAChDqO,EAAoB7N,GAAesN,EAAe9N,GAClDU,EAAcsN,IAAeC,EAAUI,EAAoBD,EAI3DE,EAAyBH,EAAiBE,EAAoB3N,EAGlEwM,EAAatyF,MAAMkD,KAAO,OAC1BovF,EAAatyF,MAAMmD,IAAM,OACzBmvF,EAAatyF,MAAM6G,MAAQ,IAC3ByrF,EAAatyF,MAAM23E,OAAS,IAC5B,IAAIgc,EAAkBrB,EAAarvF,wBAGnCqvF,EAAatyF,MAAMkD,KAAOqvF,EAC1BD,EAAatyF,MAAMmD,IAAMqvF,EACzBF,EAAatyF,MAAM6G,MAAQ4rF,EAC3BH,EAAatyF,MAAM23E,OAAS+a,EAG5B,IAAIkB,EAAUnO,GAAMt3E,KAAKwoB,MAAM86D,EAAalyE,WAAWtd,GAAS,KAAQ,KACpE4xF,EAAUpO,GAAMt3E,KAAKwoB,MAAM+6D,EAAcnyE,WAAWrd,GAAU,KAAQ,KAG1E,GAAgB,IAAZ0xF,GAA6B,IAAZC,IAAiB,QAAMj3F,KAAY2oE,GAAU3oE,GAChE,OAIF,IAAIy6E,EAASwb,EAAcxb,OACzByc,EAAejB,EAAciB,aAC3BC,EAAmBhM,GAAgByJ,EAAWna,GAChD2c,GAAoB,QAAeD,EAAkB,GACrDE,GAAeD,EAAkB,GACjCE,GAAeF,EAAkB,GAC/BG,GAAoBpM,GAAgBuJ,EAAYwC,GAClDM,IAAoB,QAAeD,GAAmB,GACtDE,GAAgBD,GAAkB,GAClCE,GAAgBF,GAAkB,GACpC9C,EAAWnyF,GAAKk1F,GAChB/C,EAAWlyF,GAAKk1F,GAGhB,IAsCItC,GACAE,GACAC,GACAE,GAzCAt/B,GAAQ8/B,EAAcj+E,QAAU,GAClC2/E,IAAQ,QAAexhC,GAAO,GAC9ByhC,GAAaD,GAAM,GAEjBvL,GAAehB,GADHuM,GAAM,IAElBxL,GAAcf,GAAYwM,IAC1BC,GAAmBxM,GAAcqJ,EAAYtI,IAC7C0L,GAAkBzM,GAAcuJ,EAAWzI,IAG3C4L,IAAgB,QAAc,CAAC,EAAG9B,GAGlCT,GAAcqC,GAAiBt1F,EAAIu1F,GAAgBv1F,EAAI80F,GACvDhC,GAAcwC,GAAiBr1F,EAAIs1F,GAAgBt1F,EAAI80F,GACvDU,GAAgCrD,EAA2Ba,GAAaH,IAGxE4C,GAAkCtD,EAA2Ba,GAAaH,GAAawB,GAGvFqB,GAAqB7M,GAAcqJ,EAAY,CAAC,IAAK,MACrDyD,GAAoB9M,GAAcuJ,EAAW,CAAC,IAAK,MACnDwD,GAAqB/M,GAAcqJ,EAAY,CAAC,IAAK,MACrD2D,GAAoBhN,GAAcuJ,EAAW,CAAC,IAAK,MACnDhyC,GAAWqzC,EAAcrzC,UAAY,CAAC,EACtC01C,GAAU11C,GAAS01C,QACrBC,GAAU31C,GAAS21C,QACnBC,GAAS51C,GAAS41C,OAClBC,GAAS71C,GAAS61C,OAChBC,GAAgB,SAAuB/7F,GACzC,MAAmB,kBAARA,EACFA,EAEFA,GAAO,CAChB,EAOAw4F,IAGA,IAAIwD,GAAcD,GAAcH,IAC5BK,GAASzM,GAAY,KAAOC,GAAa,GAG7C,GAAIuM,IAAkC,MAAnBxM,GAAY,KAAemJ,GAAkBwB,EAAuB/b,QAAU0Z,EAAY11F,QAAQ85F,IAAK,CACxH,IAAIC,GAAiBzD,GACjBuD,GACFE,IAAkBhE,EAAclH,EAEhCkL,GAAiBZ,GAAmB11F,EAAI61F,GAAkB71F,EAAI80F,GAEhE,IAAIyB,GAAiBpE,EAA2Ba,GAAasD,IACzDE,GAA0BrE,EAA2Ba,GAAasD,GAAgBjC,GAGtFkC,GAAiBf,IAAiCe,KAAmBf,MAAmCrB,GAExGqC,IAA2Bf,KACzBxD,EAAY11F,QAAQ85F,IAAK,EACzBxD,GAAcyD,GACdxB,IAAgBA,GAChBS,GAAc//E,OAAS,CAACwzE,GAAcW,GAAa,GAAIX,GAAcY,GAAc,KAEnFqI,EAAY11F,QAAQ85F,IAAK,CAE7B,CAGA,GAAIF,IAAkC,MAAnBxM,GAAY,KAAeiJ,GAAa0B,EAAuBvwF,KAAOkuF,EAAY11F,QAAQk6F,IAAK,CAChH,IAAIC,GAAkB7D,GAClBuD,GACFM,IAAmBpE,EAAclH,EAEjCsL,GAAkBd,GAAmB51F,EAAI21F,GAAkB31F,EAAI80F,GAEjE,IAAI6B,GAAkBxE,EAA2Ba,GAAa0D,IAC1DE,GAA2BzE,EAA2Ba,GAAa0D,GAAiBrC,GAGxFsC,GAAkBnB,IAAiCmB,KAAoBnB,MAAmCrB,GAE1GyC,IAA4BnB,KAC1BxD,EAAY11F,QAAQk6F,IAAK,EACzB5D,GAAc6D,GACd5B,IAAgBA,GAChBS,GAAc//E,OAAS,CAACwzE,GAAcW,GAAa,GAAIX,GAAcY,GAAc,KAEnFqI,EAAY11F,QAAQk6F,IAAK,CAE7B,CAGA,IAAII,GAAcX,GAAcJ,IAG5BgB,GAASnN,GAAY,KAAOC,GAAa,GAG7C,GAAIiN,IAAkC,MAAnBlN,GAAY,KAAesJ,GAAiBqB,EAAuB7sF,OAASwqF,EAAY11F,QAAQw6F,IAAK,CACtH,IAAIC,GAAiBhE,GACjB8D,GACFE,IAAkB3E,EAAalH,EAE/B6L,GAAiBtB,GAAmB31F,EAAI81F,GAAkB91F,EAAI80F,GAEhE,IAAIoC,GAAmB9E,EAA2B6E,GAAgBnE,IAC9DqE,GAA4B/E,EAA2B6E,GAAgBnE,GAAawB,GAGxF4C,GAAmBzB,IAAiCyB,KAAqBzB,MAAmCrB,GAE5G+C,IAA6BzB,KAC3BxD,EAAY11F,QAAQw6F,IAAK,EACzB/D,GAAcgE,GACdnC,IAAgBA,GAChBU,GAAc//E,OAAS,CAACwzE,GAAcW,GAAa,GAAIX,GAAcY,GAAc,KAEnFqI,EAAY11F,QAAQw6F,IAAK,CAE7B,CAGA,GAAIF,IAAkC,MAAnBlN,GAAY,KAAeoJ,GAAauB,EAAuBxwF,MAAQmuF,EAAY11F,QAAQ46F,IAAK,CACjH,IAAIC,GAAkBpE,GAClB8D,GACFM,IAAmB/E,EAAalH,EAEhCiM,GAAkBxB,GAAmB71F,EAAI41F,GAAkB51F,EAAI80F,GAEjE,IAAIwC,GAAmBlF,EAA2BiF,GAAiBvE,IAC/DyE,GAA4BnF,EAA2BiF,GAAiBvE,GAAawB,GAGzFgD,GAAmB7B,IAAiC6B,KAAqB7B,MAAmCrB,GAE5GmD,IAA6B7B,KAC3BxD,EAAY11F,QAAQ46F,IAAK,EACzBnE,GAAcoE,GACdvC,IAAgBA,GAChBU,GAAc//E,OAAS,CAACwzE,GAAcW,GAAa,GAAIX,GAAcY,GAAc,KAEnFqI,EAAY11F,QAAQ46F,IAAK,CAE7B,CAGAxE,IACA,IAAI4E,IAAuB,IAAXvB,GAAkB,EAAIA,GACb,iBAAduB,KAELxE,GAAasB,EAAkBvwF,OACjCkvF,IAAeD,GAAasB,EAAkBvwF,KAAO+wF,GACjD3C,EAAWnyF,EAAIorF,EAAckJ,EAAkBvwF,KAAOyzF,KACxDvE,IAAed,EAAWnyF,EAAIs0F,EAAkBvwF,KAAOqnF,EAAcoM,KAKrEtE,GAAiBoB,EAAkB5sF,QACrCurF,IAAeC,GAAiBoB,EAAkB5sF,MAAQotF,GACtD3C,EAAWnyF,EAAIs0F,EAAkB5sF,MAAQ8vF,KAC3CvE,IAAed,EAAWnyF,EAAIs0F,EAAkB5sF,MAAQ8vF,MAI9D,IAAIC,IAAuB,IAAXvB,GAAkB,EAAIA,GACb,iBAAduB,KAEL5E,GAAayB,EAAkBtwF,MACjC8uF,IAAeD,GAAayB,EAAkBtwF,IAAM+wF,GAIhD5C,EAAWlyF,EAAIorF,EAAeiJ,EAAkBtwF,IAAMyzF,KACxD3E,IAAeX,EAAWlyF,EAAIq0F,EAAkBtwF,IAAMqnF,EAAeoM,KAKrE1E,GAAkBuB,EAAkB9b,SACtCsa,IAAeC,GAAkBuB,EAAkB9b,OAASuc,GACxD5C,EAAWlyF,EAAIq0F,EAAkB9b,OAASif,KAC5C3E,IAAeX,EAAWlyF,EAAIq0F,EAAkB9b,OAASif,MAO/D,IAAIC,GAAYrF,EAAUryF,EAAIizF,GAC1B0E,GAAaD,GAAYpF,EACzBsF,GAAWvF,EAAUpyF,EAAI6yF,GACzB+E,GAAcD,GAAWrF,EACzBuF,GAAa3F,EAAWnyF,EACxB+3F,GAAcD,GAAa1M,EAC3B4M,GAAY7F,EAAWlyF,EACvBg4F,GAAeD,GAAY3M,EAI3B6M,IAHUlpF,KAAKE,IAAIwoF,GAAWI,IACnB9oF,KAAKC,IAAI0oF,GAAYI,KACC,EACVL,GAIvBS,IAHSnpF,KAAKE,IAAI0oF,GAAUI,IAChBhpF,KAAKC,IAAI4oF,GAAaI,KACD,EACVL,GAC3BlJ,SAA4DA,EAAac,EAAUgG,IAGnF,IAAI4C,GAAgB5D,EAAgB9sF,MAAQ2qF,EAAUryF,GAAKizF,GAAcZ,EAAUvvF,OAC/Eu1F,GAAiB7D,EAAgBhc,OAAS6Z,EAAUpyF,GAAK6yF,GAAcT,EAAUtvF,QACrFivF,EAAc,CACZlH,OAAO,EACPxnF,QAAS2vF,GAAcwB,EACvBjxF,QAASsvF,GAAc4B,EACvB3J,QAASqN,GAAgB3D,EACzBzJ,QAASqN,GAAiB3D,EAC1B7C,OAAQqG,GAAazD,EACrB3C,OAAQqG,GAAazD,EACrBhN,OAAQ+M,EACR9M,OAAQ+M,EACRtL,MAAOoM,IAEX,CACF,IAcI8C,EAAa,WACftG,GAAc,SAAUuG,GACtB,OAAO,SAAc,QAAc,CAAC,EAAGA,GAAM,CAAC,EAAG,CAC/CzN,OAAO,GAEX,GACF,EAOA,OANA,EAAA9P,GAAA,GAAgBsd,EAAY,CAAC1G,KAC7B,EAAA5W,GAAA,IAAgB,WACTnsB,GACHypC,GAEJ,GAAG,CAACzpC,IACG,CAACkjC,EAAWjH,MAAOiH,EAAWzuF,QAASyuF,EAAWvuF,QAASuuF,EAAWhH,QAASgH,EAAW/G,QAAS+G,EAAWF,OAAQE,EAAWD,OAAQC,EAAWrK,OAAQqK,EAAWpK,OAAQoK,EAAW3I,MA1B9K,WACjB6I,EAAcz1F,SAAW,EACzB,IAAIiM,EAAKwpF,EAAcz1F,QAGvBm/B,QAAQS,UAAUE,MAAK,WACjB21D,EAAcz1F,UAAYiM,GAC5BwiF,GAEJ,GACF,EAiBF,CM7RoBuN,CAAS9H,GAAYlB,GAAUhB,EAAagD,GAAW7B,GAAWxB,EAAgBE,EAAmBC,EAAYI,GAC/H+J,IAAa,QAAe9G,GAAW,IACvC7G,GAAQ2N,GAAW,GACnBn1F,GAAUm1F,GAAW,GACrBj1F,GAAUi1F,GAAW,GACrB1N,GAAU0N,GAAW,GACrBzN,GAAUyN,GAAW,GACrB5G,GAAS4G,GAAW,GACpB3G,GAAS2G,GAAW,GACpB/Q,GAAS+Q,GAAW,GACpB9Q,GAAS8Q,GAAW,GACpBC,GAAYD,GAAW,GACvBxN,GAAUwN,GAAW,IACnBE,GRhOO,SAAmB1J,EAAQz/D,EAAQ29D,EAAYC,GAC5D,OAAO,WAAc,WACnB,IAAIwL,EAAmB,GAAQzL,QAA+CA,EAAa39D,GACvFqpE,EAAmB,GAAQzL,QAA+CA,EAAa59D,GACvFspE,EAAgB,IAAIp9D,IAAIk9D,GACxBG,EAAgB,IAAIr9D,IAAIm9D,GAW5B,OAVI5J,IACE6J,EAAcjiE,IAAI,WACpBiiE,EAAc19D,OAAO,SACrB09D,EAAcvyF,IAAI,UAEhBwyF,EAAcliE,IAAI,WACpBkiE,EAAc39D,OAAO,SACrB29D,EAAcxyF,IAAI,WAGf,CAACuyF,EAAeC,EACzB,GAAG,CAAC9J,EAAQz/D,EAAQ29D,EAAYC,GAClC,CQ8MqB4L,CAAU/J,GAAQz/D,EAAQ29D,EAAYC,GACrD6L,IAAc,QAAeN,GAAY,GACzCO,GAAcD,GAAY,GAC1BE,GAAcF,GAAY,GACxBG,GAAcF,GAAYriE,IAAI,SAC9BwiE,GAAcF,GAAYtiE,IAAI,UAAYsiE,GAAYtiE,IAAI,eAC1DyiE,IAAe,EAAAxzB,GAAA,IAAS,WACrBqrB,IACHlG,IAEJ,KC3OW,SAAkBp8B,EAAMpxD,EAAQ4sF,EAAOY,EAASsO,IAC7D,EAAAve,GAAA,IAAgB,WACd,GAAInsB,GAAQpxD,GAAU4sF,EAAO,CAC3B,IAAImP,EAAe,WACjBvO,IACAsO,GACF,EAEIpG,EAAe9I,EACfoP,EAAmBzT,GAFHvoF,GAGhBi8F,EAAkB1T,GAAgBmN,GAClCM,EAAM1N,GAAOoN,GACbwG,EAAa,IAAIj+D,IAAI,CAAC+3D,GAAKnrF,QAAO,OAAmBmxF,IAAmB,OAAmBC,KAY/F,OAXAC,EAAWx8F,SAAQ,SAAUy8F,GAC3BA,EAASn6F,iBAAiB,SAAU+5F,EAAc,CAChDK,SAAS,GAEb,IACApG,EAAIh0F,iBAAiB,SAAU+5F,EAAc,CAC3CK,SAAS,IAIX5O,IACO,WACL0O,EAAWx8F,SAAQ,SAAUy8F,GAC3BA,EAASh6F,oBAAoB,SAAU45F,GACvC/F,EAAI7zF,oBAAoB,SAAU45F,EACpC,GACF,CACF,CACF,GAAG,CAAC3qC,EAAMpxD,EAAQ4sF,GACpB,CDiNIyP,CAASpJ,GAAYf,GAAWH,GAAU8J,IAL3B,WACTzI,GAAQr0F,SAAWgyF,GAAc6K,IACnCnI,IAAY,EAEhB,KAEA,EAAAlW,GAAA,IAAgB,WACdse,IACF,GAAG,CAAC9H,GAAUrD,KAGd,EAAAnT,GAAA,IAAgB,YACV0V,IAAgBrC,SAA8DA,EAAkBF,IAClGmL,IAEJ,GAAG,CAACvjD,KAAKF,UAAUy4C,KACnB,IAAIyL,GAAmB,WAAc,WACnC,IAAIC,EPtPH,SAAgC3L,EAAmB75B,EAAW40B,EAAO6Q,GAG1E,IAFA,IAAIxkF,EAAS2zE,EAAM3zE,OACfykF,EAAa3tF,OAAOopB,KAAK04D,GACpBp4F,EAAI,EAAGA,EAAIikG,EAAWtkG,OAAQK,GAAK,EAAG,CAC7C,IAAIkkG,EACAvI,EAAYsI,EAAWjkG,GAC3B,GAAI0vF,GAAsE,QAA1DwU,EAAwB9L,EAAkBuD,UAAkD,IAA1BuI,OAAmC,EAASA,EAAsB1kF,OAAQA,EAAQwkF,GAClK,MAAO,GAAG3xF,OAAOksD,EAAW,eAAelsD,OAAOspF,EAEtD,CACA,MAAO,EACT,CO2O0BwI,CAAuB/L,EAAmB75B,EAAWkkC,GAAWlK,GACpF,OAAO,IAAWwL,EAAezL,aAA+E,EAASA,EAA2BmK,IACtJ,GAAG,CAACA,GAAWnK,EAA4BF,EAAmB75B,EAAWg6B,IACzE,sBAA0BrnC,GAAK,WAC7B,MAAO,CACLkzC,WAAYf,GAEhB,KAiBA,EAAAte,GAAA,IAAgB,WACVsW,KACFrG,KACAqG,KACAC,GAAwB,MAE5B,GAAG,CAACD,KAGJ,IAAIgJ,GAAoB,WAAe,GACrCC,IAAoB,QAAeD,GAAmB,GACtDlP,GAAcmP,GAAkB,GAChCC,GAAiBD,GAAkB,GACjCE,GAAoB,WAAe,GACrCC,IAAoB,QAAeD,GAAmB,GACtDpP,GAAeqP,GAAkB,GACjCC,GAAkBD,GAAkB,GActC,SAASE,GAAcp7F,EAAWoxF,EAAUh4F,EAAOiiG,GACjD7K,GAAWxwF,GAAa,SAAUM,GAChC,IAAIg7F,EACJD,SAAoDA,EAAS/6F,GAC7DoxF,GAAYN,EAAUh4F,GAGtB,IAAK,IAAI0lD,EAAO3oD,UAAUC,OAAQH,EAAO,IAAI+/B,MAAM8oB,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IAClG9oD,EAAK8oD,EAAO,GAAK5oD,UAAU4oD,GAE6B,QAAzDu8C,EAAwB/K,GAAiBvwF,UAAkD,IAA1Bs7F,GAA4CA,EAAsBnkG,KAAKP,MAAM0kG,EAAuB,CAAC/K,GAAkBjwF,GAAOwI,OAAO7S,GACzM,CACF,EAGI2jG,IAAeC,MACjBrJ,GAAWp+B,QAAU,SAAU9xD,GAC7B,IAAIi7F,EACAlK,GAAQr0F,SAAW68F,GACrBnI,IAAY,IACFL,GAAQr0F,SAAW48F,KAC7B1H,GAAmB5xF,GACnBoxF,IAAY,IAId,IAAK,IAAI8J,EAAQrlG,UAAUC,OAAQH,EAAO,IAAI+/B,MAAMwlE,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACxGxlG,EAAKwlG,EAAQ,GAAKtlG,UAAUslG,GAEyB,QAAtDF,EAAwBhL,GAAiBn+B,eAA+C,IAA1BmpC,GAA4CA,EAAsBpkG,KAAKP,MAAM2kG,EAAuB,CAAChL,GAAkBjwF,GAAOwI,OAAO7S,GACtM,GE9US,SAAqBo5D,EAAMwqC,EAAa1J,EAAWH,EAAUrF,EAAM4D,EAAckC,EAAgBiB,GAC9G,IAAIL,EAAU,SAAahiC,GAGvBqsC,EAAU,UAAa,GACvBrK,EAAQr0F,UAAYqyD,IACtBqsC,EAAQ1+F,SAAU,EAClBq0F,EAAQr0F,QAAUqyD,GAEpB,aAAgB,WACd,IAAIpmD,GAAK,EAAA07D,GAAA,IAAI,WACX+2B,EAAQ1+F,SAAU,CACpB,IACA,OAAO,WACL2nE,GAAA,EAAI3pC,OAAO/xB,EACb,CACF,GAAG,CAAComD,IAGJ,aAAgB,WACd,GAAIwqC,GAAe7J,KAAcrF,GAAQ4D,GAAe,CACtD,IAAIoN,EAAiB,WACnB,IAAIC,GAAc,EAclB,MAAO,CAViB,SAA2Bx0C,GACjD,IAAInpD,EAASmpD,EAAKnpD,OAClB29F,EAAcnL,EAAexyF,EAC/B,EACoB,SAAuBs1D,GACzC,IAAIt1D,EAASs1D,EAAMt1D,OACdy9F,EAAQ1+F,UAAWq0F,EAAQr0F,SAAY4+F,GAAgBnL,EAAexyF,IACzEyzF,GAAY,EAEhB,EAEF,EAGImK,EAAkBF,IACpBG,GAAmB,QAAeD,EAAiB,GACnDE,EAAiBD,EAAiB,GAClCE,EAAaF,EAAiB,GAC5BG,EAAmBN,IACrBO,GAAmB,QAAeD,EAAkB,GACpDE,EAAoBD,EAAiB,GACrCE,EAAgBF,EAAiB,GAC/BjI,EAAM1N,GAAOyJ,GACjBiE,EAAIh0F,iBAAiB,YAAa87F,GAAgB,GAClD9H,EAAIh0F,iBAAiB,QAAS+7F,GAAY,GAC1C/H,EAAIh0F,iBAAiB,cAAe+7F,GAAY,GAGhD,IAAIK,GAAmB,QAAclM,GAcrC,OAbIkM,IACFA,EAAiBp8F,iBAAiB,YAAak8F,GAAmB,GAClEE,EAAiBp8F,iBAAiB,QAASm8F,GAAe,GAC1DC,EAAiBp8F,iBAAiB,cAAem8F,GAAe,IAU3D,WACLnI,EAAI7zF,oBAAoB,YAAa27F,GAAgB,GACrD9H,EAAI7zF,oBAAoB,QAAS47F,GAAY,GAC7C/H,EAAI7zF,oBAAoB,cAAe47F,GAAY,GAC/CK,IACFA,EAAiBj8F,oBAAoB,YAAa+7F,GAAmB,GACrEE,EAAiBj8F,oBAAoB,QAASg8F,GAAe,GAC7DC,EAAiBj8F,oBAAoB,cAAeg8F,GAAe,GAEvE,CACF,CACF,GAAG,CAACvC,EAAa1J,EAAWH,EAAUrF,EAAM4D,GAC9C,CFkQI+N,CAAYpL,GAAY2I,GAAa1J,GAAWH,GAAUrF,EAAM4D,EAAckC,GAAgBiB,IAG9F,IAEI6K,GACAC,GAHAC,GAAc/C,GAAYriE,IAAI,SAC9BqlE,GAAc/C,GAAYtiE,IAAI,SAG9BolE,KAEFrB,GAAc,gBAAgB,EAAMnN,GAAiB,SAAU3tF,GAC7D4xF,GAAmB5xF,EACrB,IACA86F,GAAc,kBAAkB,EAAMnN,GAAiB,SAAU3tF,GAC/D4xF,GAAmB5xF,EACrB,IACAi8F,GAAoB,YAEdrL,IAAcS,KAChBD,IAAY,EAAMzD,EAEtB,EAGIe,IACFwB,GAAWmM,YAAc,SAAUr8F,GACjC,IAAIs8F,EAEuD,QAA1DA,EAAwBrM,GAAiBoM,mBAAmD,IAA1BC,GAA4CA,EAAsBzlG,KAAKo5F,GAAkBjwF,EAC9J,IAGAo8F,KACFtB,GAAc,gBAAgB,EAAOjN,GACrCiN,GAAc,kBAAkB,EAAOjN,GACvCqO,GAAoB,WAClB9K,IAAY,EAAOvD,EACrB,GAIEuL,GAAYriE,IAAI,UAClB+jE,GAAc,WAAW,EAAMhN,GAE7BuL,GAAYtiE,IAAI,UAClB+jE,GAAc,UAAU,EAAO/M,GAI7BqL,GAAYriE,IAAI,iBAClBm5D,GAAWqM,cAAgB,SAAUv8F,GACnC,IAAIw8F,EACAzL,GAAQr0F,SAAW28F,GAAYtiE,IAAI,eACrCq6D,IAAY,IAEZQ,GAAmB5xF,GACnBoxF,IAAY,IAEdpxF,EAAM0B,iBAGN,IAAK,IAAI+6F,EAAQ5mG,UAAUC,OAAQH,EAAO,IAAI+/B,MAAM+mE,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACxG/mG,EAAK+mG,EAAQ,GAAK7mG,UAAU6mG,GAEgC,QAA7DF,EAAyBvM,GAAiBsM,qBAAsD,IAA3BC,GAA6CA,EAAuB3lG,KAAKP,MAAMkmG,EAAwB,CAACvM,GAAkBjwF,GAAOwI,OAAO7S,GAChN,GAIEkT,IACFqnF,GAAWrnF,UAAY,IAAWonF,GAAiBpnF,UAAWA,IAIhE,IAAI8zF,IAAsB,SAAc,QAAc,CAAC,EAAG1M,IAAmBC,IAGzE0M,GAAc,CAAC,EACG,CAAC,gBAAiB,UAAW,cAAe,eAAgB,eAAgB,eAAgB,UAAW,UAC7Gv/F,SAAQ,SAAUqC,GAC5By5E,EAAUz5E,KACZk9F,GAAYl9F,GAAa,WAEvB,IADA,IAAIm9F,EACKC,EAAQjnG,UAAUC,OAAQH,EAAO,IAAI+/B,MAAMonE,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFpnG,EAAKonG,GAASlnG,UAAUknG,GAEmC,QAA5DF,EAAwBF,GAAoBj9F,UAAkD,IAA1Bm9F,GAA4CA,EAAsBhmG,KAAKP,MAAMumG,EAAuB,CAACF,IAAqBn0F,OAAO7S,IACtMwjF,EAAUz5E,GAAWpJ,MAAM6iF,EAAWxjF,EACxC,EAEJ,IAGA,IAAIqnG,GAA2B,eAAmBj4F,IAAO,SAAc,QAAc,CAAC,EAAG43F,IAAsBC,KAC3GpT,GAAW,CACbtpF,EAAG6xF,GACH5xF,EAAG6xF,IAEDiL,GAAa1T,GAAQ,QAAc,CAAC,GAAa,IAAVA,EAAiBA,EAAQ,CAAC,GAAK,KAG1E,OAAoB,gBAAoB,WAAgB,KAAmB,gBAAoB,GAAgB,CAC7G50B,UAAWi8B,GACXvpC,IAAK0oC,GACLtL,SAtJmB,SAAwB9oD,EAAG+gD,GAE9C,GADA8c,KACInO,EAAS,CACX,IAAI51E,EAAOinE,EAAI14E,wBACf02F,GAAejlF,EAAKzS,OACpB63F,GAAgBplF,EAAKxS,OACvB,CACF,GAgJgB,gBAAoB,GAAgB,CAClD6pF,kBAAmBA,GAClBkQ,KAA4B,gBAAoB,GAAe/mC,SAAU,CAC1E7+D,MAAOgxB,IACO,gBAAoB,GAAO,CACzC0iE,OAAQmC,EACR5lC,IAAKuoC,GACLl7B,UAAWA,EACX61B,MAAOA,EACP1hF,UAAW,IAAWslF,EAAgB8L,IACtCl5F,MAAOqtF,EACPzwF,OAAQkyF,GACRh7B,aAAconC,GACdnnC,aAAconC,GAIdnR,eAAgBkR,GAChBvyF,OAAQA,EAIRqlD,KAAM6hC,GACNlG,QAAS2G,GAITv/B,QAAS68B,EAITtE,KAAMA,EAINtE,OAAQyK,GACR7F,WAAY8F,GACZhG,iBA3NqB,SAA0BjhF,GAC/C8nF,IAAY,GACZnG,KACAuC,SAAkFA,EAAwBlkF,EAC5G,EAwNE4hF,UArNc,WACd,OAAO,IAAIvvD,SAAQ,SAAUS,GAC3Bm1D,IAAwB,WACtB,OAAOn1D,CACT,GACF,GACF,EAmNEsuD,YAAaA,EACb1O,YAAagT,EACbrE,kBAAmBA,EAInBvB,MAAOsP,GACPrP,MAAO0T,GACPzT,SAAUA,GAIVwB,MAAOA,GACPxnF,QAASA,GACTE,QAASA,GACTunF,QAASA,GACTC,QAASA,GACTC,QAASqO,GAITnO,QAASA,EACTC,YAAaA,GAAc1D,GAC3B2D,aAAcA,GAAe1D,MAEjC,IAIA,OAAOqF,CACT,CACA,CAA+B,IGzgB3BgQ,GAA8B,CAChC/G,OAAQ,GACRD,QAAS,GAEPiH,GAA8B,CAChClH,QAAS,EACTG,QAAQ,GAENvB,GAAe,CAAC,EAAG,GACZuF,GAAa,CACtBn2F,KAAM,CACJ0R,OAAQ,CAAC,KAAM,MACf4qC,SAAU48C,GACV/kB,OAAQ,EAAE,EAAG,GACbyc,aAAcA,IAEhBjtF,MAAO,CACL+N,OAAQ,CAAC,KAAM,MACf4qC,SAAU48C,GACV/kB,OAAQ,CAAC,EAAG,GACZyc,aAAcA,IAEhB3wF,IAAK,CACHyR,OAAQ,CAAC,KAAM,MACf4qC,SAAU28C,GACV9kB,OAAQ,CAAC,GAAI,GACbyc,aAAcA,IAEhBnc,OAAQ,CACN/iE,OAAQ,CAAC,KAAM,MACf4qC,SAAU28C,GACV9kB,OAAQ,CAAC,EAAG,GACZyc,aAAcA,IAEhB/lF,QAAS,CACP6G,OAAQ,CAAC,KAAM,MACf4qC,SAAU28C,GACV9kB,OAAQ,CAAC,GAAI,GACbyc,aAAcA,IAEhBuI,QAAS,CACPznF,OAAQ,CAAC,KAAM,MACf4qC,SAAU48C,GACV/kB,OAAQ,EAAE,EAAG,GACbyc,aAAcA,IAEhB9lF,SAAU,CACR4G,OAAQ,CAAC,KAAM,MACf4qC,SAAU28C,GACV9kB,OAAQ,CAAC,GAAI,GACbyc,aAAcA,IAEhBwI,SAAU,CACR1nF,OAAQ,CAAC,KAAM,MACf4qC,SAAU48C,GACV/kB,OAAQ,CAAC,EAAG,GACZyc,aAAcA,IAEhB5lF,YAAa,CACX0G,OAAQ,CAAC,KAAM,MACf4qC,SAAU28C,GACV9kB,OAAQ,CAAC,EAAG,GACZyc,aAAcA,IAEhByI,YAAa,CACX3nF,OAAQ,CAAC,KAAM,MACf4qC,SAAU48C,GACV/kB,OAAQ,CAAC,EAAG,GACZyc,aAAcA,IAEhB7lF,WAAY,CACV2G,OAAQ,CAAC,KAAM,MACf4qC,SAAU28C,GACV9kB,OAAQ,CAAC,EAAG,GACZyc,aAAcA,IAEhB0I,WAAY,CACV5nF,OAAQ,CAAC,KAAM,MACf4qC,SAAU48C,GACV/kB,OAAQ,EAAE,EAAG,GACbyc,aAAcA,KC9EH,SAAS,GAAMvoF,GAC5B,IAAIxH,EAAWwH,EAAMxH,SACnB4vD,EAAYpoD,EAAMooD,UAClB/rD,EAAK2D,EAAM3D,GACX60F,EAAoBlxF,EAAMkxF,kBAC1B30F,EAAYyD,EAAMzD,UAClB9H,EAAQuL,EAAMvL,MAChB,OAAoB,gBAAoB,MAAO,CAC7C8H,UAAW,IAAW,GAAGL,OAAOksD,EAAW,YAAa7rD,GACxD9H,MAAOA,GACO,gBAAoB,MAAO,CACzC8H,UAAW,GAAGL,OAAOksD,EAAW,UAChC/rD,GAAIA,EACJ2sD,KAAM,UACNv0D,MAAOy8F,GACc,mBAAb14F,EAA0BA,IAAaA,GACnD,CCfA,IAAI,GAAY,CAAC,mBAAoB,UAAW,kBAAmB,kBAAmB,eAAgB,YAAa,WAAY,kBAAmB,qBAAsB,iBAAkB,YAAa,SAAU,YAAa,QAAS,uBAAwB,iBAAkB,sBAAuB,oBAAqB,eAAgB,UAAW,KAAM,aAM1V24F,GAAU,SAAiBnxF,EAAO+6C,GACpC,IAAIq2C,EAAmBpxF,EAAMoxF,iBAC3BC,EAAiBrxF,EAAMsxF,QACvBA,OAA6B,IAAnBD,EAA4B,CAAC,SAAWA,EAClDE,EAAwBvxF,EAAMqhF,gBAC9BA,OAA4C,IAA1BkQ,EAAmC,EAAIA,EACzDjQ,EAAwBthF,EAAMuhF,gBAC9BA,OAA4C,IAA1BD,EAAmC,GAAMA,EAC3DkQ,EAAexxF,EAAMwxF,aACrB3Q,EAAmB7gF,EAAMooD,UACzBA,OAAiC,IAArBy4B,EAA8B,aAAeA,EACzDroF,EAAWwH,EAAMxH,SACjBi5F,EAAkBzxF,EAAMyxF,gBACxBC,EAAqB1xF,EAAM0xF,mBAC3BhY,EAAiB15E,EAAM05E,eACvBrrF,EAAY2R,EAAM3R,UAClBorF,EAASz5E,EAAMy5E,OACfkY,EAAmB3xF,EAAMwlF,UACzBA,OAAiC,IAArBmM,EAA8B,QAAUA,EACpDC,EAAe5xF,EAAMg9E,MACrBA,OAAyB,IAAjB4U,EAA0B,CAAC,EAAIA,EACvCC,EAAwB7xF,EAAM8xF,qBAC9BA,OAAiD,IAA1BD,GAA2CA,EAClEE,EAAiB/xF,EAAM+xF,eACvBC,EAAsBhyF,EAAMgyF,oBAC5Bd,EAAoBlxF,EAAMkxF,kBAE1Be,GADejyF,EAAMkyF,aACXlyF,EAAMiyF,SAChB51F,EAAK2D,EAAM3D,GACX81F,EAAmBnyF,EAAMoyF,UACzBA,OAAiC,IAArBD,GAAqCA,EACjDtlB,GAAY,QAAyB7sE,EAAO,IAC1CqyF,GAAa,IAAAp5B,QAAO,OACxB,IAAAq5B,qBAAoBv3C,GAAK,WACvB,OAAOs3C,EAAWjiG,OACpB,IACA,IAAImiG,GAAa,QAAc,CAAC,EAAG1lB,GAC/B,YAAa7sE,IACfuyF,EAAWtR,aAAejhF,EAAM9C,SAUlC,OAAoB,gBAAoB,IAAS,OAAS,CACxD2kF,eAAgBuP,EAChBhpC,UAAWA,EACX61B,MAXoB,WACpB,OAAoB,gBAAoB,GAAO,CAC7Cz0D,IAAK,UACL4+B,UAAWA,EACX/rD,GAAIA,EACJ60F,kBAAmBA,GAClBe,EACL,EAKE7uE,OAAQkuE,EACRrP,kBAAmB6L,GACnB/L,eAAgByD,EAChBzqC,IAAKs3C,EACLnQ,WAAYlF,EACZuB,kBAAmByT,EACnB7Q,qBAAsBsQ,EACtBrQ,wBAAyBsQ,EACzBlP,oBAAqB9I,EACrB+I,eAAgBp0F,EAChBk0F,YAAa9I,EACbyH,oBAAqB6Q,EACrBniB,YAAakiB,EACbvQ,gBAAiBA,EACjBO,WAAY0P,EACZnQ,gBAAiBA,EACjBpE,MAAOmV,GACNG,GAAa/5F,EAClB,EC5EA,ID6E4B,IAAAoiE,YAAWu2B,IEhF5BqB,GAAe,SAAsB97F,EAAO+7F,EAAaC,EAAaC,EAASv/B,GACxF,IAAIw/B,EAAYl8F,EAAQ,EAEpBuZ,EAAK2iF,EACLvgF,EAAmB,EAAdqgF,EAAkB9vF,KAAK2C,KAAK,GACjC+M,EAAKsgF,EAAYF,GAAe,EAAI,EAAI9vF,KAAK2C,KAAK,IAClD8E,EAAKuoF,EAAYH,GAAe,EAAI7vF,KAAK2C,KAAK,IAC9C+E,EAAKooF,GAAe9vF,KAAK2C,KAAK,GAAK,GAAKktF,GAAe,EAAI7vF,KAAK2C,KAAK,IACrEhQ,EAAK,EAAIq9F,EAAYvoF,EACrB7U,EAAK8U,EACLsW,EAAK,EAAIgyE,EAAYvgF,EACrBwO,EAAKvO,EACLk5B,EAAK,EAAIonD,EAVJ,EAWLC,EAAK5iF,EACL6iF,EAAcF,EAAYhwF,KAAK2C,KAAK,GAAKmtF,GAAe9vF,KAAK2C,KAAK,GAAK,GACvEwtF,EAAgBL,GAAe9vF,KAAK2C,KAAK,GAAK,GAClD,MAAO,CACL2uC,cAAe,OACfx9C,MAAOA,EACPC,OAAQD,EACRu9C,SAAU,SACV,YAAa,CACXH,SAAU,WACVs4B,OAAQ,EACR5M,iBAAkB,EAClB9oE,MAAOA,EACPC,OAAQD,EAAQ,EAChBw8D,WAAYy/B,EACZK,SAAU,CACRC,eAAe,EACfnoG,MAAO,CAAC,WAAWoR,OAAO62F,EAAe,iBAAiB72F,OAAO62F,EAAe,QAAQ72F,OAAO,EAAI02F,EAAYG,EAAe,aAAa72F,OAAO62F,EAAe,YAAa,WAAW72F,OA5BtL,EA4BiM,KAAKA,OAAO+T,EAAI,OAAO/T,OAAOw2F,EAAa,KAAKx2F,OAAOw2F,EAAa,WAAWx2F,OAAOmW,EAAI,KAAKnW,OAAOoW,EAAI,OAAOpW,OAAOmO,EAAI,KAAKnO,OAAOoO,EAAI,OAAOpO,OAAOu2F,EAAa,KAAKv2F,OAAOu2F,EAAa,WAAWv2F,OAAO3G,EAAI,KAAK2G,OAAO1G,EAAI,OAAO0G,OAAO0kB,EAAI,KAAK1kB,OAAO2kB,EAAI,OAAO3kB,OAAOw2F,EAAa,KAAKx2F,OAAOw2F,EAAa,WAAWx2F,OAAOsvC,EAAI,KAAKtvC,OAAO22F,EAAI,UAExiBpzB,QAAS,MAEX,WAAY,CACVA,QAAS,KACT3rB,SAAU,WACVp9C,MAAOo8F,EACPn8F,OAAQm8F,EACR1mB,OAAQ,EACR8mB,YAAa,EACbC,OAAQ,OACR39B,aAAc,CACZ49B,cAAc,EACdtoG,MAAO,OAAOoR,OAAOu2F,EAAa,SAEpCh2F,UAAW,kCACX22D,UAAWA,EACXh2D,OAAQ,EACR81D,WAAY,eAGlB,EClDWmgC,GAA8B,EAClC,SAASC,GAAexlE,GAC7B,IAAIylE,EAA2BF,GAC3BG,EAAgB1lE,EAAQ0lE,cAExBC,EAAsBD,EAAgB,GAAKA,EAAgB,EAAI,GAEnE,MAAO,CACLC,oBAAqBA,EACrBC,4BALsB5lE,EAAQ6lE,oBAEwBJ,EAA2BE,EAKrF,CACA,SAASG,GAASC,EAAOC,GACvB,OAAKD,EACEC,EADY,CAAC,CAEtB,CACe,SAASC,GAAchhC,EAAOjlC,GAC3C,IAAIkmE,EAAWC,EAAYC,EAAYC,EACnCnhC,EAAeD,EAAMC,aACvBohC,EAAiBrhC,EAAMqhC,eACvBC,EAAiBthC,EAAMshC,eACvBC,EAAoBvhC,EAAMuhC,kBAC1BC,EAAwBxhC,EAAMwhC,sBAC5BC,EAAU1mE,EAAQ0mE,QACpBC,EAAwB3mE,EAAQ0lE,cAChCA,OAA0C,IAA1BiB,EAAmC1hC,EAAM8Q,eAAiB4wB,EAC1Ed,EAAsB7lE,EAAQ6lE,oBAC9Be,EAAwB5mE,EAAQ6mE,cAChCA,OAA0C,IAA1BD,EAAmC,EAAIA,EACvDE,EAAwB9mE,EAAQ+mE,eAChCA,OAA2C,IAA1BD,EAAmC,CAClDj9F,MAAM,EACN2D,OAAO,EACP1D,KAAK,EACLw0E,QAAQ,GACNwoB,EACFE,EAAkBxB,GAAe,CACjCE,cAAeA,EACfG,oBAAqBA,IAEvBD,EAA8BoB,EAAgBpB,4BAC9CD,EAAsBqB,EAAgBrB,oBACxC,OAAO,OAAgB,CAAC,EAAGzgC,EAAc7yD,OAAO89B,OAAO99B,OAAO89B,OAAO99B,OAAO89B,OAAO99B,OAAO89B,QAAO,OAAgB,CAAC,EAAG,GAAG/hC,OAAO82D,EAAc,UAAW,CAAC7yD,OAAO89B,OAAO99B,OAAO89B,OAAO,CACnL6V,SAAU,WACV12C,OAAQ,EACR42C,QAAS,SACRw+C,GAAa4B,EAAgBC,EAAgBC,EAAmBE,EAASD,IAAyB,CACnG,WAAY,CACVrhC,WAAYshC,OAEVZ,KAAWiB,EAAej9F,KAAMo8F,EAAY,CAAC,GAAG,OAAgBA,EAAW,CAAC,mBAAmB93F,OAAO82D,EAAc,UAAW,uBAAuB92D,OAAO82D,EAAc,UAAW,wBAAwB92D,OAAO82D,EAAc,WAAWhhD,KAAK,KAAM,CAC7Po6D,OAAQuoB,EACRl4F,UAAW,qCACT,OAAgBu3F,EAAW,mBAAmB93F,OAAO82D,EAAc,UAAW,CAChFr7D,KAAM,CACJy7F,cAAc,EACdtoG,MAAO,OAET2R,UAAW,sDACT,OAAgBu3F,EAAW,uBAAuB93F,OAAO82D,EAAc,UAAW,CACpFr7D,KAAM,CACJy7F,cAAc,EACdtoG,MAAO2oG,MAEP,OAAgBO,EAAW,wBAAwB93F,OAAO82D,EAAc,UAAW,CACrF13D,MAAO,CACL83F,cAAc,EACdtoG,MAAO2oG,KAEPO,KAAcJ,KAAWiB,EAAezoB,QAAS6nB,EAAa,CAAC,GAAG,OAAgBA,EAAY,CAAC,sBAAsB/3F,OAAO82D,EAAc,UAAW,0BAA0B92D,OAAO82D,EAAc,UAAW,2BAA2B92D,OAAO82D,EAAc,WAAWhhD,KAAK,KAAM,CACvRpa,IAAK+8F,EACLl4F,UAAW,uBACT,OAAgBw3F,EAAY,sBAAsB/3F,OAAO82D,EAAc,UAAW,CACpFr7D,KAAM,CACJy7F,cAAc,EACdtoG,MAAO,OAET2R,UAAW,wCACT,OAAgBw3F,EAAY,0BAA0B/3F,OAAO82D,EAAc,UAAW,CACxFr7D,KAAM,CACJy7F,cAAc,EACdtoG,MAAO2oG,MAEP,OAAgBQ,EAAY,2BAA2B/3F,OAAO82D,EAAc,UAAW,CACzF13D,MAAO,CACL83F,cAAc,EACdtoG,MAAO2oG,KAEPQ,KAAeL,KAAWiB,EAAel9F,MAAOu8F,EAAa,CAAC,GAAG,OAAgBA,EAAY,CAAC,oBAAoBh4F,OAAO82D,EAAc,UAAW,uBAAuB92D,OAAO82D,EAAc,UAAW,0BAA0B92D,OAAO82D,EAAc,WAAWhhD,KAAK,KAAM,CAChR1W,MAAO,CACL83F,cAAc,EACdtoG,MAAO6pG,GAETl4F,UAAW,oCACT,OAAgBy3F,EAAY,oBAAoBh4F,OAAO82D,EAAc,UAAW,CAClFp7D,IAAK,CACHw7F,cAAc,EACdtoG,MAAO,OAET2R,UAAW,qDACT,OAAgBy3F,EAAY,uBAAuBh4F,OAAO82D,EAAc,UAAW,CACrFp7D,IAAK87F,KACH,OAAgBQ,EAAY,0BAA0Bh4F,OAAO82D,EAAc,UAAW,CACxFoZ,OAAQsnB,IACNQ,KAAeN,KAAWiB,EAAev5F,OAAQ64F,EAAa,CAAC,GAAG,OAAgBA,EAAY,CAAC,qBAAqBj4F,OAAO82D,EAAc,UAAW,wBAAwB92D,OAAO82D,EAAc,UAAW,2BAA2B92D,OAAO82D,EAAc,WAAWhhD,KAAK,KAAM,CACpRra,KAAM,CACJy7F,cAAc,EACdtoG,MAAO6pG,GAETl4F,UAAW,sCACT,OAAgB03F,EAAY,qBAAqBj4F,OAAO82D,EAAc,UAAW,CACnFp7D,IAAK,CACHw7F,cAAc,EACdtoG,MAAO,OAET2R,UAAW,uDACT,OAAgB03F,EAAY,wBAAwBj4F,OAAO82D,EAAc,UAAW,CACtFp7D,IAAK87F,KACH,OAAgBS,EAAY,2BAA2Bj4F,OAAO82D,EAAc,UAAW,CACzFoZ,OAAQsnB,IACNS,KACN,CC7FA,IAAIY,GAAoB,CACtBp9F,KAAM,CACJ0R,OAAQ,CAAC,KAAM,OAEjB/N,MAAO,CACL+N,OAAQ,CAAC,KAAM,OAEjBzR,IAAK,CACHyR,OAAQ,CAAC,KAAM,OAEjB+iE,OAAQ,CACN/iE,OAAQ,CAAC,KAAM,OAEjB7G,QAAS,CACP6G,OAAQ,CAAC,KAAM,OAEjBynF,QAAS,CACPznF,OAAQ,CAAC,KAAM,OAEjB5G,SAAU,CACR4G,OAAQ,CAAC,KAAM,OAEjB0nF,SAAU,CACR1nF,OAAQ,CAAC,KAAM,OAEjB1G,YAAa,CACX0G,OAAQ,CAAC,KAAM,OAEjB2nF,YAAa,CACX3nF,OAAQ,CAAC,KAAM,OAEjB3G,WAAY,CACV2G,OAAQ,CAAC,KAAM,OAEjB4nF,WAAY,CACV5nF,OAAQ,CAAC,KAAM,QAGf2rF,GAA+B,CACjCxyF,QAAS,CACP6G,OAAQ,CAAC,KAAM,OAEjBynF,QAAS,CACPznF,OAAQ,CAAC,KAAM,OAEjB5G,SAAU,CACR4G,OAAQ,CAAC,KAAM,OAEjB0nF,SAAU,CACR1nF,OAAQ,CAAC,KAAM,OAEjB1G,YAAa,CACX0G,OAAQ,CAAC,KAAM,OAEjB2nF,YAAa,CACX3nF,OAAQ,CAAC,KAAM,OAEjB3G,WAAY,CACV2G,OAAQ,CAAC,KAAM,OAEjB4nF,WAAY,CACV5nF,OAAQ,CAAC,KAAM,QAGf4rF,GAAuB,IAAI3lE,IAAI,CAAC,UAAW,WAAY,aAAc,cAAe,UAAW,aAAc,WAAY,gBAC9G,SAAS4lE,GAAcC,GACpC,IAAIC,EAAaD,EAAOC,WACtBC,EAAqBF,EAAOE,mBAC5BC,EAAqBH,EAAOG,mBAC5BxpB,EAASqpB,EAAOrpB,OAChBtW,EAAe2/B,EAAO3/B,aACtB+/B,EAAeJ,EAAOI,aACpBC,EAAiBJ,EAAa,EAC9BK,EAAe,CAAC,EAkEpB,OAjEAt1F,OAAOopB,KAAKwrE,IAAmBhkG,SAAQ,SAAUy4B,GAC/C,IAAIksE,EAAWJ,GAAsBN,GAA6BxrE,IAAQurE,GAAkBvrE,GACxF89D,EAAgBnnF,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGy3D,GAAW,CAC7D5pB,OAAQ,CAAC,EAAG,KAQd,OANA2pB,EAAajsE,GAAO89D,EAEhB2N,GAAqBxqE,IAAIjB,KAC3B89D,EAAc/J,WAAY,GAGpB/zD,GACN,IAAK,MACL,IAAK,UACL,IAAK,WACH89D,EAAcxb,OAAO,IAAM0pB,EAAiB1pB,EAC5C,MACF,IAAK,SACL,IAAK,aACL,IAAK,cACHwb,EAAcxb,OAAO,GAAK0pB,EAAiB1pB,EAC3C,MACF,IAAK,OACL,IAAK,UACL,IAAK,aACHwb,EAAcxb,OAAO,IAAM0pB,EAAiB1pB,EAC5C,MACF,IAAK,QACL,IAAK,WACL,IAAK,cACHwb,EAAcxb,OAAO,GAAK0pB,EAAiB1pB,EAI/C,IAAI6pB,EAAcrC,GAAe,CAC/BE,cAAeh+B,EACfm+B,qBAAqB,IAEvB,GAAI2B,EACF,OAAQ9rE,GACN,IAAK,UACL,IAAK,aACH89D,EAAcxb,OAAO,IAAM6pB,EAAYlC,oBAAsB+B,EAC7D,MACF,IAAK,WACL,IAAK,cACHlO,EAAcxb,OAAO,GAAK6pB,EAAYlC,oBAAsB+B,EAC5D,MACF,IAAK,UACL,IAAK,WACHlO,EAAcxb,OAAO,IAAM6pB,EAAYlC,oBAAsB+B,EAC7D,MACF,IAAK,aACL,IAAK,cACHlO,EAAcxb,OAAO,GAAK6pB,EAAYlC,oBAAsB+B,EAKlElO,EAAcrzC,SAlKX,SAA4BuxC,EAAWmQ,EAAaP,EAAYC,GACrE,IAA2B,IAAvBA,EACF,MAAO,CACL1L,SAAS,EACTC,SAAS,GAGb,IAAI31C,EAAWohD,GAAoD,iBAAvBA,EAAkCA,EAAqB,CAAC,EAChGO,EAAe,CAAC,EACpB,OAAQpQ,GACN,IAAK,MACL,IAAK,SACHoQ,EAAa/L,OAA2C,EAAlC8L,EAAYlC,oBAA0B2B,EAC5D,MACF,IAAK,OACL,IAAK,QACHQ,EAAa9L,OAAmD,EAA1C6L,EAAYjC,4BAAkC0B,EAGxE,IAAIS,EAAiB11F,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAG23D,GAAe3hD,GAQpE,OANK4hD,EAAehM,SAClBgM,EAAelM,SAAU,GAEtBkM,EAAe/L,SAClB+L,EAAejM,SAAU,GAEpBiM,CACT,CAsI6BC,CAAmBtsE,EAAKmsE,EAAaP,EAAYC,GAEtEE,IACFjO,EAAcO,WAAa,eAE/B,IACO4N,CACT,yHC/IiB,MAEF,MAAc1iC,MAJ7B,OAZA,WACE,IAAIgjC,GAAoB,UACtBC,GAAqB,OAAeD,EAAmB,GAIzD,MAAO,CACLE,MAJQD,EAAmB,GAK3BjjC,MAJQijC,EAAmB,GAK3B78B,OAJS68B,EAAmB,GAMhC,ECVWE,IDiBS,KCjBI,SAAoBr6B,EAAWs6B,EAAaC,EAAc1nG,GAChF,IAAI8rD,EAEA67C,EADY9sG,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,IAAmBA,UAAU,GAC7C,IAAM,GACxC,OAAOixD,EAAO,CAAC,GAAG,OAAgBA,EAAM,WAAWt+C,OAAOm6F,GAAiBn6F,OAAO2/D,EAAW,mBAAmB3/D,OAAOm6F,GAAiBn6F,OAAO2/D,EAAW,iBAAkB17D,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAjBpL,SAA0BvvC,GAC/C,MAAO,CACL4nG,kBAAmB5nG,EACnB6nG,kBAAmB,OAEvB,CAY8MC,CAAiB9nG,IAAY,CACvO+nG,mBAAoB,aACjB,OAAgBj8C,EAAM,GAAGt+C,OAAOm6F,GAAiBn6F,OAAO2/D,EAAW,UAAW17D,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAZtF,SAA+BvvC,GACzD,MAAO,CACL4nG,kBAAmB5nG,EACnB6nG,kBAAmB,OAEvB,CAOqHG,CAAsBhoG,IAAY,CACnJ+nG,mBAAoB,aACjB,OAAgBj8C,EAAM,WAAWt+C,OAAOm6F,GAAiBn6F,OAAO2/D,EAAW,UAAU3/D,OAAO2/D,EAAW,0BAA0B3/D,OAAOm6F,GAAiBn6F,OAAO2/D,EAAW,WAAW3/D,OAAO2/D,EAAW,wBAAyB,CACpO86B,cAAeR,EACfM,mBAAoB,aAClB,OAAgBj8C,EAAM,GAAGt+C,OAAOm6F,GAAiBn6F,OAAO2/D,EAAW,UAAU3/D,OAAO2/D,EAAW,iBAAkB,CACnH86B,cAAeP,EACfK,mBAAoB,UACpBviD,cAAe,SACbsG,CACN,GC3BWo8C,GAAS,IAAI,MAAU,YAAa,CAC7C,KAAM,CACJn6F,UAAW,aACXa,QAAS,GAEX,OAAQ,CACNb,UAAW,WACXa,QAAS,KAGFu5F,GAAU,IAAI,MAAU,aAAc,CAC/C,KAAM,CACJp6F,UAAW,YAEb,OAAQ,CACNA,UAAW,aACXa,QAAS,KAGFw5F,GAAY,IAAI,MAAU,eAAgB,CACnD,KAAM,CACJr6F,UAAW,aACXa,QAAS,GAEX,OAAQ,CACNb,UAAW,WACXa,QAAS,KAGFy5F,GAAa,IAAI,MAAU,gBAAiB,CACrD,KAAM,CACJt6F,UAAW,YAEb,OAAQ,CACNA,UAAW,aACXa,QAAS,KAGF05F,GAAW,IAAI,MAAU,cAAe,CACjD,KAAM,CACJv6F,UAAW,aACX8vE,gBAAiB,SACjBjvE,QAAS,GAEX,OAAQ,CACNb,UAAW,WACX8vE,gBAAiB,YAGV0qB,GAAY,IAAI,MAAU,eAAgB,CACnD,KAAM,CACJx6F,UAAW,WACX8vE,gBAAiB,UAEnB,OAAQ,CACN9vE,UAAW,aACX8vE,gBAAiB,SACjBjvE,QAAS,KAqET45F,GAAa,CACfrqD,KAAM,CACJspD,YAAaS,GACbR,aAAcS,IAEhB,WAAY,CACVV,YAAaW,GACbV,aAAcW,IAEhB,gBAAiB,CACfZ,YAAaW,GACbV,aAAcW,IAEhB,YAAa,CACXZ,YAhFoB,IAAI,MAAU,gBAAiB,CACrD,KAAM,CACJ15F,UAAW,aACX8vE,gBAAiB,SACjBjvE,QAAS,GAEX,OAAQ,CACNb,UAAW,WACX8vE,gBAAiB,YAyEjB6pB,aAtEqB,IAAI,MAAU,iBAAkB,CACvD,KAAM,CACJ35F,UAAW,WACX8vE,gBAAiB,UAEnB,OAAQ,CACN9vE,UAAW,aACX8vE,gBAAiB,SACjBjvE,QAAS,MAgEX,aAAc,CACZ64F,YA9DqB,IAAI,MAAU,iBAAkB,CACvD,KAAM,CACJ15F,UAAW,aACX8vE,gBAAiB,WACjBjvE,QAAS,GAEX,OAAQ,CACNb,UAAW,WACX8vE,gBAAiB,cAuDjB6pB,aApDsB,IAAI,MAAU,kBAAmB,CACzD,KAAM,CACJ35F,UAAW,WACX8vE,gBAAiB,YAEnB,OAAQ,CACN9vE,UAAW,aACX8vE,gBAAiB,WACjBjvE,QAAS,MA8CX,UAAW,CACT64F,YAAaa,GACbZ,aAAca,IAEhB,YAAa,CACXd,YAhDoB,IAAI,MAAU,gBAAiB,CACrD,KAAM,CACJ15F,UAAW,aACX8vE,gBAAiB,WACjBjvE,QAAS,GAEX,OAAQ,CACNb,UAAW,WACX8vE,gBAAiB,cAyCjB6pB,aAtCqB,IAAI,MAAU,iBAAkB,CACvD,KAAM,CACJ35F,UAAW,WACX8vE,gBAAiB,YAEnB,OAAQ,CACN9vE,UAAW,aACX8vE,gBAAiB,WACjBjvE,QAAS,OAiCF65F,GAAiB,SAAwBpkC,EAAOqF,GACzD,IAAI5d,EACA48C,EAASrkC,EAAMqkC,OACfv7B,EAAY,GAAG3/D,OAAOk7F,EAAQ,KAAKl7F,OAAOk8D,GAC1Ci/B,EAAwBH,GAAW9+B,GACrC+9B,EAAckB,EAAsBlB,YACpCC,EAAeiB,EAAsBjB,aACvC,MAAO,CAACF,GAAWr6B,EAAWs6B,EAAaC,EAA6B,kBAAfh+B,EAAiCrF,EAAMukC,mBAAqBvkC,EAAMmM,oBAAqB1kB,EAAO,CAAC,GAAG,OAAgBA,EAAM,aAAat+C,OAAO2/D,EAAW,qBAAqB3/D,OAAO2/D,EAAW,mBAAoB,CACzQp/D,UAAW,WACXa,QAAS,EACTi6F,wBAAyBxkC,EAAMO,kBAC/B,YAAa,CACX72D,UAAW,WAEX,OAAgB+9C,EAAM,GAAGt+C,OAAO2/D,EAAW,UAAW,CACxD07B,wBAAyBxkC,EAAMykC,sBAC7Bh9C,GACN,EChLWi9C,GAAe,CAAC,OAAQ,SAAU,OAAQ,QAAS,UAAW,OAAQ,MAAO,SAAU,SAAU,UAAW,WAAY,OAAQ,QCC5H,SAASC,GAAe3kC,EAAO4kC,GAC5C,OAAOF,GAAan9E,QAAO,SAAU2D,EAAM25E,GACzC,IAAIC,EAAa9kC,EAAM,GAAG72D,OAAO07F,EAAU,MACvCE,EAAmB/kC,EAAM,GAAG72D,OAAO07F,EAAU,MAC7CG,EAAYhlC,EAAM,GAAG72D,OAAO07F,EAAU,MACtCv3B,EAAYtN,EAAM,GAAG72D,OAAO07F,EAAU,MAC1C,OAAOz3F,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGhgB,GAAO05E,EAAOC,EAAU,CAC7DC,WAAYA,EACZC,iBAAkBA,EAClBC,UAAWA,EACX13B,UAAWA,IAEf,GAAG,CAAC,EACN,CCTA,IAAI23B,GAAkB,SAAyBjlC,GAC7C,IAAIklC,EACAjlC,EAAeD,EAAMC,aACvBklC,EAAkBnlC,EAAMmlC,gBACxBC,EAAeplC,EAAMolC,aACrBC,EAAYrlC,EAAMqlC,UAClBC,EAAsBtlC,EAAMslC,oBAC5BC,EAAcvlC,EAAMulC,YACpBt4B,EAAgBjN,EAAMiN,cACtBu4B,EAAqBxlC,EAAMwlC,mBAC3BC,EAAYzlC,EAAMylC,UAClBj1B,EAAYxQ,EAAMwQ,UAClBk1B,EAAqB1lC,EAAM0lC,mBAC7B,MAAO,EAAC,OAAgB,CAAC,EAAGzlC,EAAc7yD,OAAO89B,OAAO99B,OAAO89B,OAAO99B,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,GAAG,SAAe80B,KAAUklC,EAAiB,CAC9InkD,SAAU,WACV12C,OAAQk7F,EACRtkD,QAAS,QACTt9C,MAAO,cACP83B,SAAU0pE,EACV/pB,WAAY,UACZ5B,gBAAiB,0CACjB,WAAY,CACVv4B,QAAS,QAEX,gCAAiCokD,IAChC,OAAgBH,EAAgB,GAAG/7F,OAAO82D,EAAc,UAAW,CACpE+M,SAAUC,EACV6f,UAAW7f,EACX+C,QAAS,GAAG7mE,OAAOs8F,EAAY,EAAG,OAAOt8F,OAAOqnE,EAAW,MAC3D7mC,MAAOy7D,EACPvuF,UAAW,QACX8uF,eAAgB,OAChBC,SAAU,aACV1hC,gBAAiBmhC,EACjB5iC,aAAc6iC,EACdjlC,UAAWmlC,EACXplC,UAAW,gBACT,OAAgB8kC,EAAgB,CAAC,mBAAoB,sBAAuB,yBAA0B,oBAAqB,uBAAwB,2BAA2BjmF,KAAK,MAAM,OAAgB,CAAC,EAAG,GAAG9V,OAAO82D,EAAc,UAAW,CAClPwC,aAAc5yD,KAAKC,IAAIw1F,EAAqBhF,QACzC,OAAgB4E,EAAgB,GAAG/7F,OAAO82D,EAAc,YAAa,CACxElf,SAAU,aACRmkD,IAAkBP,GAAe3kC,GAAO,SAAU6kC,EAAUp9C,GAC9D,IAAIioB,EACAs1B,EAAYv9C,EAAKu9C,UACrB,OAAO,OAAgB,CAAC,EAAG,IAAI77F,OAAO82D,EAAc,KAAK92D,OAAO07F,IAAYn1B,EAAkB,CAAC,GAAG,OAAgBA,EAAiB,GAAGvmE,OAAO82D,EAAc,UAAW,CACpKiE,gBAAiB8gC,KACf,OAAgBt1B,EAAiB,GAAGvmE,OAAO82D,EAAc,UAAW,CACtE,gCAAiC+kC,IAC/Bt1B,GACN,KAAK,CAEH,QAAS,CACPh/C,UAAW,UAIfswE,IAAc,SAAWhhC,EAAO,CAC9BuhC,kBAAmBmE,IACjB,CACFjE,QAAS,qCACThB,cAAe6E,EACf1E,qBAAqB,KAEvB,OAAgB,CAAC,EAAG,GAAGz3F,OAAO82D,EAAc,SAAU,CACpDlf,SAAU,WACVtlB,SAAU,OACV2kE,OAAQpgC,EAAMqhC,iBAElB,EAEA,YAA0BhsC,EAAWwwC,GACnC,IAAIC,GAAgB,EAAArlC,GAAA,GAAsB,WAAW,SAAUT,GAE7D,IAAoB,IAAhB6lC,EACF,MAAO,GAET,IAAIpjC,EAAezC,EAAMyC,aACvBiM,EAAsB1O,EAAM0O,oBAC5Bq3B,EAAiB/lC,EAAM+lC,eACvBxE,EAAoBvhC,EAAMuhC,kBACxByE,GAAe,SAAWhmC,EAAO,CAEnCmlC,gBAAiB,IACjBC,aAAc12B,EACd42B,oBAAqB7iC,EACrB4iC,UAAWU,EACXL,mBAAoBnE,EAAoB,EAAI,EAAIA,IAElD,MAAO,CAAC0D,GAAgBe,GAAe5B,GAAepkC,EAAO,iBAC/D,IAAG,SAAUpM,GAGX,MAAO,CACL2xC,YAHoB3xC,EAAMqyC,gBAGK,GAC/BF,eAHmBnyC,EAAMsyC,iBAK7B,GAAG,CACDC,YAAY,IAEd,OAAOL,EAAczwC,EACtB,ECvGG+wC,GAAgB1B,GAAa99E,KAAI,SAAU+iB,GAC7C,MAAO,GAAGxgC,OAAOwgC,EAAO,WAC1B,ICAO,SAAS08D,GAAWhxC,EAAW1rB,GACpC,IAAI28D,EDMC,SAAuB38D,GAE5B,OADqBnzC,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,KAAmBA,UAAU,GAI7EkuG,GAAa3pG,SAAS4uC,GAFpB,GAAGxgC,QAAO,OAAmBi9F,KAAgB,OAAmB1B,KAAe3pG,SAAS4uC,EAGnG,CCZwB48D,CAAc58D,GAChCngC,EAAY,KAAW,OAAgB,CAAC,EAAG,GAAGL,OAAOksD,EAAW,KAAKlsD,OAAOwgC,GAAQA,GAAS28D,IAC7F7H,EAAe,CAAC,EAChB+H,EAAa,CAAC,EAMlB,OALI78D,IAAU28D,IACZ7H,EAAat+B,WAAax2B,EAE1B68D,EAAW,iCAAmC78D,GAEzC,CACLngC,UAAWA,EACXi1F,aAAcA,EACd+H,WAAYA,EAEhB,CCXA,IA+BA,GA/BgB,SAAmBv5F,GACjC,IAAIi8D,EAAqBj8D,EAAMooD,UAC7B7rD,EAAYyD,EAAMzD,UAClBo1F,EAAmB3xF,EAAMwlF,UACzBA,OAAiC,IAArBmM,EAA8B,MAAQA,EAClDj3C,EAAQ16C,EAAM06C,MACdhe,EAAQ18B,EAAM08B,MACdw0D,EAAoBlxF,EAAMkxF,kBAGxB9oC,GAAY0Q,EAFQ,aAAiB,OACNA,cACN,UAAWmD,GACpC/C,EAAY,GAAS9Q,GAAW,GAClCqd,GAAa,OAAevM,EAAW,GACvCwM,EAAUD,EAAW,GACrBtM,EAASsM,EAAW,GAElB+zB,EAAYJ,GAAWhxC,EAAW1rB,GAClC+8D,EAAoBD,EAAUD,WAC9BG,EAA6Bv5F,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGizD,GAAoBsI,EAAUhI,cAC3F9oC,EAAM,IAAWyQ,EAAQ/Q,EAAW,GAAGlsD,OAAOksD,EAAW,SAAU,GAAGlsD,OAAOksD,EAAW,eAAelsD,OAAOspF,GAAYjpF,EAAWi9F,EAAUj9F,WACnJ,OAAOmpE,EAAsB,gBAAoB,MAAO,CACtDnpE,UAAWmsD,EACXj0D,MAAOglG,GACO,gBAAoB,MAAO,CACzCl9F,UAAW,GAAGL,OAAOksD,EAAW,YACjB,gBAAoB,GAAOjoD,OAAO89B,OAAO,CAAC,EAAGj+B,EAAO,CACnEzD,UAAW48D,EACX/Q,UAAWA,EACX8oC,kBAAmBwI,IACjBh/C,IACN,EClCI,GAAgC,SAAUj0C,EAAG5Z,GAC/C,IAAIH,EAAI,CAAC,EACT,IAAK,IAAIqa,KAAKN,EAAOtG,OAAOtX,UAAUqX,eAAe3V,KAAKkc,EAAGM,IAAMla,EAAEgP,QAAQkL,GAAK,IAAGra,EAAEqa,GAAKN,EAAEM,IAC9F,GAAS,MAALN,GAAqD,mBAAjCtG,OAAO+wB,sBAA2C,KAAIrnC,EAAI,EAAb,IAAgBkd,EAAI5G,OAAO+wB,sBAAsBzqB,GAAI5c,EAAIkd,EAAEvd,OAAQK,IAClIgD,EAAEgP,QAAQkL,EAAEld,IAAM,GAAKsW,OAAOtX,UAAUgsD,qBAAqBtqD,KAAKkc,EAAGM,EAAEld,MAAK6C,EAAEqa,EAAEld,IAAM4c,EAAEM,EAAEld,IADuB,CAGvH,OAAO6C,CACT,EAeI,GAAWupG,GAkBf,SAAS0D,GAA8BrhG,EAAS8vD,GAC9C,IAAIwxC,EAActhG,EAAQhH,KAC1B,KAAkC,IAA7BsoG,EAAYvxB,cAA0C,WAAjB/vE,EAAQhH,OAAsBgH,EAAQ0H,MAAMqoD,WAAyC,IAA7BuxC,EAAYC,eAA0BvhG,EAAQ0H,MAAMqoD,UAAY/vD,EAAQ0H,MAAMo7D,WAAwC,IAA5Bw+B,EAAYE,aAAwBxhG,EAAQ0H,MAAMqoD,SAAU,CAGtP,IAAI0xC,EAtBU,SAAqBr9E,EAAK6M,GAC1C,IAAIywE,EAAS,CAAC,EACVC,EAAU95F,OAAO89B,OAAO,CAAC,EAAGvhB,GAOhC,OANA6M,EAAKx4B,SAAQ,SAAUy4B,GACjB9M,GAAO8M,KAAO9M,IAChBs9E,EAAOxwE,GAAO9M,EAAI8M,UACXywE,EAAQzwE,GAEnB,IACO,CACLwwE,OAAQA,EACRC,QAASA,EAEb,CASuBC,CAAY5hG,EAAQ0H,MAAMvL,MAAO,CAAC,WAAY,OAAQ,QAAS,MAAO,SAAU,QAAS,UAAW,WACrHulG,EAASD,EAAaC,OACtBC,EAAUF,EAAaE,QACrBE,EAAYh6F,OAAO89B,OAAO99B,OAAO89B,OAAO,CAC1C+V,QAAS,gBACRgmD,GAAS,CACVtlG,OAAQ,cACRgC,MAAO4B,EAAQ0H,MAAM+kE,MAAQ,YAAS3lD,IAEpCg7E,EAAcj6F,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGg8D,GAAU,CAC1D/lD,cAAe,SAEbz7C,GAAQ,SAAaH,EAAS,CAChC7D,MAAO2lG,EACP79F,UAAW,OAEb,OAAoB,gBAAoB,OAAQ,CAC9C9H,MAAO0lG,EACP59F,UAAW,IAAWjE,EAAQ0H,MAAMzD,UAAW,GAAGL,OAAOksD,EAAW,kCACnE3vD,EACL,CACA,OAAOH,CACT,CACA,IAAI,GAAuB,cAAiB,SAAU0H,EAAO+6C,GAC3D,IAAIjxD,EAAI+V,EACJo8D,EAAqBj8D,EAAMooD,UAC7BiyC,EAAgBr6F,EAAMq6F,cACtBrI,EAAsBhyF,EAAMgyF,oBAC5BZ,EAAmBpxF,EAAMoxF,iBACzB10D,EAAQ18B,EAAM08B,MACdw0D,EAAoBlxF,EAAMkxF,kBAC1B14F,EAAWwH,EAAMxH,SACjB8hG,EAAkBt6F,EAAMs6F,gBACxB5I,EAAqB1xF,EAAM0xF,mBAC3BI,EAAuB9xF,EAAM8xF,qBAC7ByI,EAAev6F,EAAMi9E,MACrBA,OAAyB,IAAjBsd,GAAiCA,EACzC7/C,EAAQ16C,EAAM06C,MACdu3C,EAAUjyF,EAAMiyF,QAChBhQ,EAAoBjiF,EAAMiiF,kBAC1BuY,EAAwBx6F,EAAMs1F,mBAC9BA,OAA+C,IAA1BkF,GAA2CA,EAChEC,EAAwBz6F,EAAMq1F,mBAC9BA,OAA+C,IAA1BoF,GAA0CA,EAC7DC,IAAoBzd,EAEtBlqB,EADc,KACIA,MAChBiJ,EAAoB,aAAiB,OACvC2+B,EAA2B3+B,EAAkBuiB,kBAC7CzlB,EAAekD,EAAkBlD,aACjCr1C,EAAYu4C,EAAkBv4C,UAE5Bm3E,EAAa,SAAa,MAC1B3M,EAAa,WACf,IAAInkG,EAC0B,QAA7BA,EAAK8wG,EAAWxqG,eAA4B,IAAPtG,GAAyBA,EAAGmkG,YACpE,EACA,sBAA0BlzC,GAAK,WAC7B,MAAO,CACLkzC,WAAYA,EACZ4M,gBAAiB,WAEf5M,GACF,EAEJ,IAaA,IAAI6M,GAAkB,EAAAC,GAAA,IAAe,EAAO,CACxCjwG,MAA6B,QAArBhB,EAAKkW,EAAMyiD,YAAyB,IAAP34D,EAAgBA,EAAKkW,EAAM9C,QAChEywB,aAA2C,QAA5B9tB,EAAKG,EAAMg7F,mBAAgC,IAAPn7F,EAAgBA,EAAKG,EAAM+xF,iBAEhFkJ,GAAmB,OAAeH,EAAiB,GACnDr4C,EAAOw4C,EAAiB,GACxBC,EAAUD,EAAiB,GACzBE,GAAWzgD,IAAUu3C,GAAqB,IAAVv3C,EAShC0gD,EAAoB,WAAc,WACpC,IAAItxG,EAAI+V,EACJw7F,EAA2B/F,EAI/B,MAHqB,iBAAVrY,IACToe,EAA2H,QAA/Fx7F,EAAoC,QAA9B/V,EAAKmzF,EAAMqe,qBAAkC,IAAPxxG,EAAgBA,EAAKmzF,EAAMqY,0BAAuC,IAAPz1F,EAAgBA,EAAKy1F,GAEnJrT,GAAqBiT,GAAc,CACxCI,mBAAoB+F,EACpBhG,mBAAoBA,EACpBD,WAAYsF,EAAkB3nC,EAAMqhC,eAAiB,EACrD5+B,aAAczC,EAAMyC,aACpBsW,OAAQ/Y,EAAMwoC,UACdhG,cAAc,GAElB,GAAG,CAACD,EAAoBrY,EAAOgF,EAAmBlvB,IAC9CyoC,EAAc,WAAc,WAC9B,OAAc,IAAV9gD,EACKA,EAEFu3C,GAAWv3C,GAAS,EAC7B,GAAG,CAACu3C,EAASv3C,IACT+gD,EAAkC,gBAAoB/gC,GAAgB,KAA6B,mBAAhB8gC,EAA6BA,IAAgBA,GAChIjd,EAAoBv+E,EAAMu+E,kBAC5BoT,EAAmB3xF,EAAMwlF,UACzBA,OAAiC,IAArBmM,EAA8B,MAAQA,EAClDJ,EAAwBvxF,EAAMqhF,gBAC9BA,OAA4C,IAA1BkQ,EAAmC,GAAMA,EAC3DjQ,EAAwBthF,EAAMuhF,gBAC9BA,OAA4C,IAA1BD,EAAmC,GAAMA,EAC3DkQ,EAAexxF,EAAMwxF,aACrB7sB,EAAgB3kE,EAAM2kE,cACtBlc,EAAa,GAAOzoD,EAAO,CAAC,oBAAqB,YAAa,kBAAmB,kBAAmB,eAAgB,kBAClHooD,EAAY0Q,EAAa,UAAWmD,GACpCy/B,GAAgB5iC,IAChB6iC,GAAoB37F,EAAM,uBAC1B47F,GAAWn5C,EAET,SAAUziD,GAAY,YAAaA,IAAUm7F,IACjDS,IAAW,GAGb,IAAInjG,GAAQkhG,IAA8B,SAAenhG,MAAc,SAAWA,GAAYA,EAAwB,gBAAoB,OAAQ,KAAMA,GAAW4vD,GAC/JyzC,GAAapjG,GAAMuH,MACnB87F,GAAYD,GAAWt/F,WAA6C,iBAAzBs/F,GAAWt/F,UAA4Gs/F,GAAWt/F,UAA9F,IAAWs/F,GAAWt/F,UAAW89F,GAAiB,GAAGn+F,OAAOksD,EAAW,UAEtJ8Q,GAAY,GAAS9Q,GAAYuzC,IACnCl2B,IAAa,OAAevM,GAAW,GACvCwM,GAAUD,GAAW,GACrBtM,GAASsM,GAAW,GAElB+zB,GAAYJ,GAAWhxC,EAAW1rB,GAClC+8D,GAAoBD,GAAUD,WAC9BG,GAA6Bv5F,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGizD,GAAoBsI,GAAUhI,cAC3FuK,GAAyB,IAAW3K,GAAkB,OAAgB,CAAC,EAAG,GAAGl1F,OAAOksD,EAAW,QAAuB,QAAd3kC,GAAsB+1E,GAAUj9F,UAAWooE,EAAexL,IACtK,OAAOuM,GAAsB,gBAAoB,GAAWvlE,OAAO89B,OAAO,CAAC,EAAGwqB,EAAY,CACxF2pC,UAAWsI,EACXlV,UAAWA,EACXnE,gBAAiBA,EACjBE,gBAAiBA,EACjBn5B,UAAWA,EACXgpC,iBAAkB2K,GAClBvK,aAAcrxF,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGw7D,IAAoBjI,GAClEQ,oBAAqBzT,GAAqByT,GAAuB2I,EACjE5/C,IAAK6/C,EACL3Y,kBAAmBmZ,EACnBnJ,QAASwJ,EACTv+F,QAAS0+F,GACTnK,gBA3EiB,SAAsBuK,GACvC,IAAIlyG,EAAI+V,EACRq7F,GAAQC,GAAkBa,GACrBb,IAC2B,QAA7BrxG,EAAKkW,EAAMi8F,oBAAiC,IAAPnyG,GAAyBA,EAAGS,KAAKyV,EAAOg8F,GAC7C,QAAhCn8F,EAAKG,EAAMyxF,uBAAoC,IAAP5xF,GAAyBA,EAAGtV,KAAKyV,EAAOg8F,GAErF,EAqEEtK,mBAAoB4I,QAAyDA,EAAkB5I,EAC/FR,kBAAmBwI,GACnBxH,aAA2B,gBAAoB,OAAQ,CACrD31F,UAAW,GAAGL,OAAOksD,EAAW,oBAElCqxB,OAAQ,CACNrhB,YAAY,QAAkBsjC,GAAe,gBAAiB17F,EAAM05E,gBACpErhB,eAAgB,KAElBy5B,uBAAwBA,IACtB8J,IAAW,SAAanjG,GAAO,CACjC8D,UAAWu/F,KACRrjG,IACP,IAIA,GAAQyjG,uCAAyC,GACjD,UClOO,SAASC,GAAcC,GAC5B,OAAKA,GAAYA,EAAW,EACnB,EAELA,EAAW,IACN,IAEFA,CACT,CACO,SAASC,GAAkB7hD,GAChC,IAAI8hD,EAAU9hD,EAAK8hD,QAEf56C,EADelH,EAAK+hD,eAUxB,OAPID,GAAW,aAAcA,IAE3B56C,EAAU46C,EAAQF,UAEhBE,GAAW,YAAaA,IAC1B56C,EAAU46C,EAAQ56C,SAEbA,CACT,CACO,IAAI86C,GAAgB,SAAuB71C,GAChD,IAAIjF,EAAUiF,EAAMjF,QAGhB+6C,EAAqBN,GAAcE,GAAkB,CACvDC,QAHU31C,EAAM21C,QAIhBC,eAHiB51C,EAAM41C,kBAKzB,MAAO,CAACE,EAAoBN,GAAcA,GAAcz6C,GAAW+6C,GACrE,EAQWC,GAAU,SAAiBzvE,EAAM37B,EAAMqrG,GAChD,IAAI7yG,EAAI+V,EAAIC,EAAImnB,EACZvwB,GAAS,EACTC,GAAU,EACd,GAAa,SAATrF,EAAiB,CACnB,IAAIq7E,EAAQgwB,EAAMhwB,MACd7xB,EAAc6hD,EAAM7hD,YACxB,GAAoB,iBAAT7tB,QAAqC,IAATA,EACrCv2B,EAAiB,UAATu2B,EAAmB,EAAI,GAC/Bt2B,EAASmkD,QAAiDA,EAAc,OACnE,GAAoB,iBAAT7tB,EAChBv2B,EAAQu2B,EACRt2B,EAASs2B,MACJ,CACL,IAAI2vE,GAAQ,OAAe3vE,EAAM,GAC7B4vE,EAASD,EAAM,GACnBlmG,OAAmB,IAAXmmG,EAAoB,GAAKA,EACjC,IAAIC,EAAUF,EAAM,GACpBjmG,OAAqB,IAAZmmG,EAAqB,EAAIA,CACpC,CACApmG,GAASi2E,CACX,MAAO,GAAa,SAATr7E,EAAiB,CAC1B,IAAIyrG,EAAeJ,aAAqC,EAASA,EAAM7hD,YACvE,GAAoB,iBAAT7tB,QAAqC,IAATA,EACrCt2B,EAASomG,IAA0B,UAAT9vE,EAAmB,EAAI,QAC5C,GAAoB,iBAATA,EAChBv2B,EAAQu2B,EACRt2B,EAASs2B,MACJ,CACL,IAAI+vE,GAAS,OAAe/vE,EAAM,GAC9BgwE,EAAUD,EAAO,GACrBtmG,OAAoB,IAAZumG,GAAsB,EAAIA,EAClC,IAAIC,EAAWF,EAAO,GACtBrmG,OAAsB,IAAbumG,EAAsB,EAAIA,CACrC,CACF,MAAO,GAAa,WAAT5rG,GAA8B,cAATA,EAC9B,GAAoB,iBAAT27B,QAAqC,IAATA,EAAsB,CAC3D,IAAI+7D,EAAiB,UAAT/7D,EAAmB,CAAC,GAAI,IAAM,CAAC,IAAK,KAC5CkwE,GAAQ,OAAenU,EAAO,GAClCtyF,EAAQymG,EAAM,GACdxmG,EAASwmG,EAAM,EACjB,KAA2B,iBAATlwE,GAChBv2B,EAAQu2B,EACRt2B,EAASs2B,IAKTv2B,EAA2E,QAAlEmJ,EAAwB,QAAlB/V,EAAKmjC,EAAK,UAAuB,IAAPnjC,EAAgBA,EAAKmjC,EAAK,UAAuB,IAAPptB,EAAgBA,EAAK,IACxGlJ,EAA4E,QAAlEswB,EAAwB,QAAlBnnB,EAAKmtB,EAAK,UAAuB,IAAPntB,EAAgBA,EAAKmtB,EAAK,UAAuB,IAAPhG,EAAgBA,EAAK,KAG7G,MAAO,CAACvwB,EAAOC,EACjB,ECrBA,GAhEa,SAAgBqJ,GAC3B,IAAIooD,EAAYpoD,EAAMooD,UACpBg1C,EAAoBp9F,EAAMyqE,WAC1BA,OAAmC,IAAtB2yB,EAA+B,KAAOA,EACnDC,EAAuBr9F,EAAMg7C,cAC7BA,OAAyC,IAAzBqiD,EAAkC,QAAUA,EAC5D1yB,EAAc3qE,EAAM2qE,YACpBqB,EAAYhsE,EAAMgsE,UAClBsxB,EAAet9F,EAAMtJ,MACrB6mG,OAA+B,IAAjBD,EAA0B,IAAMA,EAC9ChsG,EAAO0O,EAAM1O,KACbkH,EAAWwH,EAAMxH,SACjB8jG,EAAUt8F,EAAMs8F,QAChBkB,EAAcx9F,EAAMitB,KAElBwwE,EAAWf,QADU,IAAhBc,EAAyBD,EAAcC,EACnB,UAC3BE,GAAY,OAAeD,EAAU,GACrC/mG,EAAQgnG,EAAU,GAClB/mG,EAAS+mG,EAAU,GACjB5iD,EAAc96C,EAAM86C,iBACJ17B,IAAhB07B,IACFA,EAAcl4C,KAAKE,IAxBH,SAAuBpM,GACzC,OAF4B,EAEKA,EAAQ,GAC3C,CAsB2BinG,CAAcjnG,GAAQ,IAE/C,IAAIy2E,EAAc,CAChBz2E,MAAOA,EACPC,OAAQA,EACR8S,SAAkB,IAAR/S,EAAe,GAEvBknG,EAAgB,WAAc,WAEhC,OAAI5xB,GAA2B,IAAdA,EACRA,EAEI,cAAT16E,EACK,QADT,CAIF,GAAG,CAAC06E,EAAW16E,IACXusG,EAASlzB,GAAwB,cAATr5E,GAAwB,eAAY8tB,EAE5D0+E,EAAmE,oBAAtD39F,OAAOtX,UAAU0iB,SAAShhB,KAAKyV,EAAMwqE,aAClDA,EDhBsB,SAAwBhjB,GAClD,IAAIu2C,EAAgBv2C,EAAM80C,QACxBA,OAA4B,IAAlByB,EAA2B,CAAC,EAAIA,EAC1CvzB,EAAchjB,EAAMgjB,YAEtB,MAAO,CADY8xB,EAAQ9xB,aACH,MAAoBh0C,MAAOg0C,GAAe,KACpE,CCUoBwzB,CAAe,CAC/B1B,QAASA,EACT9xB,YAAaxqE,EAAMwqE,cAEjByzB,EAAmB,IAAW,GAAG/hG,OAAOksD,EAAW,WAAW,OAAgB,CAAC,EAAG,GAAGlsD,OAAOksD,EAAW,oBAAqB01C,IAC5HI,EAA6B,gBAAoB,GAAU,CAC7Dx8C,QAAS86C,GAAcx8F,GACvB86C,YAAaA,EACb4vB,WAAY5vB,EACZ0vB,YAAaA,EACbxvB,cAAeA,EACfyvB,WAAYA,EACZriB,UAAWA,EACX4jB,UAAW4xB,EACXjzB,YAAakzB,IAEf,OAAoB,gBAAoB,MAAO,CAC7CthG,UAAW0hG,EACXxpG,MAAO04E,GACNz2E,GAAS,GAAkB,gBAAoB,GAAS,CACzDgkD,MAAOliD,GACO,gBAAoB,OAAQ,KAAM0lG,IAA+B,gBAAoB,WAAgB,KAAMA,EAAe1lG,GAC5I,ECzEI,GAAgC,SAAUiO,EAAG5Z,GAC/C,IAAIH,EAAI,CAAC,EACT,IAAK,IAAIqa,KAAKN,EAAOtG,OAAOtX,UAAUqX,eAAe3V,KAAKkc,EAAGM,IAAMla,EAAEgP,QAAQkL,GAAK,IAAGra,EAAEqa,GAAKN,EAAEM,IAC9F,GAAS,MAALN,GAAqD,mBAAjCtG,OAAO+wB,sBAA2C,KAAIrnC,EAAI,EAAb,IAAgBkd,EAAI5G,OAAO+wB,sBAAsBzqB,GAAI5c,EAAIkd,EAAEvd,OAAQK,IAClIgD,EAAEgP,QAAQkL,EAAEld,IAAM,GAAKsW,OAAOtX,UAAUgsD,qBAAqBtqD,KAAKkc,EAAGM,EAAEld,MAAK6C,EAAEqa,EAAEld,IAAM4c,EAAEM,EAAEld,IADuB,CAGvH,OAAO6C,CACT,EAgDWyxG,GAAiB,SAAwB3zB,EAAa4zB,GAC/D,IAlC8CC,EAC1CC,EAiCAC,EAAoB/zB,EAAYvoD,KAClCA,OAA6B,IAAtBs8E,EAA+B,MAAoB5qE,KAAO4qE,EACjEC,EAAkBh0B,EAAYtoD,GAC9BA,OAAyB,IAApBs8E,EAA6B,MAAoB7qE,KAAO6qE,EAC7DC,EAAwBj0B,EAAY/mD,UACpCA,OAAsC,IAA1Bg7E,EAAuD,QAApBL,EAA4B,UAAY,WAAaK,EACpGn5B,EAAO,GAAOkF,EAAa,CAAC,OAAQ,KAAM,cAC5C,GAAiC,IAA7BrqE,OAAOopB,KAAK+7C,GAAM97E,OAAc,CAClC,IAAIk1G,GA1CwCL,EA0CT/4B,EAzCjCg5B,EAAU,GACdn+F,OAAOopB,KAAK80E,GAAWttG,SAAQ,SAAUy4B,GACvC,IAAIm1E,EAAe3qF,WAAWwV,EAAIjb,QAAQ,KAAM,KAC3C1D,MAAM8zF,IACTL,EAAQp1G,KAAK,CACXsgC,IAAKm1E,EACL7zG,MAAOuzG,EAAU70E,IAGvB,IACA80E,EAAUA,EAAQpjG,MAAK,SAAU4L,EAAG8E,GAClC,OAAO9E,EAAE0iB,IAAM5d,EAAE4d,GACnB,IACO80E,EAAQ3kF,KAAI,SAAU6gC,GAC3B,IAAIhxB,EAAMgxB,EAAKhxB,IACb1+B,EAAQ0vD,EAAK1vD,MACf,MAAO,GAAGoR,OAAOpR,EAAO,KAAKoR,OAAOstB,EAAK,IAC3C,IAAGxX,KAAK,OAyBN,MAAO,CACL+sD,gBAAiB,mBAAmB7iE,OAAOunB,EAAW,MAAMvnB,OAAOwiG,EAAiB,KAExF,CACA,MAAO,CACL3/B,gBAAiB,mBAAmB7iE,OAAOunB,EAAW,MAAMvnB,OAAO+lB,EAAM,MAAM/lB,OAAOgmB,EAAI,KAE9F,EA8DA,GA7DW,SAAcliB,GACvB,IAAIooD,EAAYpoD,EAAMooD,UACpBg2C,EAAkBp+F,EAAMyjB,UACxBi+B,EAAU1hD,EAAM0hD,QAChBz0B,EAAOjtB,EAAMitB,KACb6tB,EAAc96C,EAAM86C,YACpB0vB,EAAcxqE,EAAMwqE,YACpB6yB,EAAuBr9F,EAAMg7C,cAC7BA,OAAyC,IAAzBqiD,EAAkC,QAAUA,EAC5D7kG,EAAWwH,EAAMxH,SACjB4kG,EAAoBp9F,EAAMyqE,WAC1BA,OAAmC,IAAtB2yB,EAA+B,KAAOA,EACnDd,EAAUt8F,EAAMs8F,QACdsC,EAAkBp0B,GAAsC,iBAAhBA,EAA2B2zB,GAAe3zB,EAAa4zB,GAAmB,CACpHnnC,gBAAiBuT,GAEfhV,EAAiC,WAAlBxa,GAAgD,SAAlBA,EAA2B,OAAI57B,EAC5Ey/E,EAAa,CACf5nC,gBAAiBwT,QAAcrrD,EAC/Bo2C,aAAcA,GAGZioC,EAAWf,GADEzvE,QAAmCA,EAAO,EAAE,EAAG6tB,IAAyB,UAAT7tB,EAAmB,EAAI,IACpE,OAAQ,CACvC6tB,YAAaA,IAEf4iD,GAAY,OAAeD,EAAU,GACrC/mG,EAAQgnG,EAAU,GAClB/mG,EAAS+mG,EAAU,GAIrB,IAAIoB,EAAe3+F,OAAO89B,OAAO,CAC/BvnC,MAAO,GAAGwF,OAAOigG,GAAcz6C,GAAU,KACzC/qD,OAAQA,EACR6+D,aAAcA,GACbopC,GACCrC,EAAiBF,GAAkBr8F,GACnC++F,EAAsB,CACxBroG,MAAO,GAAGwF,OAAOigG,GAAcI,GAAiB,KAChD5lG,OAAQA,EACR6+D,aAAcA,EACdyB,gBAAiBqlC,aAAyC,EAASA,EAAQ9xB,aAEzE0D,EAAa,CACfx3E,MAAOA,EAAQ,EAAI,OAASA,EAC5BC,OAAQA,GAEV,OAAoB,gBAAoB,WAAgB,KAAmB,gBAAoB,MAAO,CACpG4F,UAAW,GAAGL,OAAOksD,EAAW,UAChC3zD,MAAOy5E,GACO,gBAAoB,MAAO,CACzC3xE,UAAW,GAAGL,OAAOksD,EAAW,UAChC3zD,MAAOoqG,GACO,gBAAoB,MAAO,CACzCtiG,UAAW,GAAGL,OAAOksD,EAAW,OAChC3zD,MAAOqqG,SACc1/E,IAAnBm9E,EAA4C,gBAAoB,MAAO,CACzEhgG,UAAW,GAAGL,OAAOksD,EAAW,eAChC3zD,MAAOsqG,IACJ,OAAQvmG,EACf,ECzFA,GAxCY,SAAewH,GAwBzB,IAvBA,IAAIitB,EAAOjtB,EAAMitB,KACf0/C,EAAQ3sE,EAAM2sE,MACdqyB,EAAiBh/F,EAAM0hD,QACvBA,OAA6B,IAAnBs9C,EAA4B,EAAIA,EAC1CC,EAAqBj/F,EAAM86C,YAC3BA,OAAqC,IAAvBmkD,EAAgC,EAAIA,EAClDz0B,EAAcxqE,EAAMwqE,YACpB4yB,EAAoBp9F,EAAMyqE,WAC1BA,OAAmC,IAAtB2yB,EAA+B,KAAOA,EACnDh1C,EAAYpoD,EAAMooD,UAClB5vD,EAAWwH,EAAMxH,SACfpI,EAAUwS,KAAKwoB,MAAMuhD,GAASjrB,EAAU,MAGxC+7C,EAAWf,GADEzvE,QAAmCA,EAAO,CADlC,UAATA,EAAmB,EAAI,GACgC6tB,GACpC,OAAQ,CACvC6xB,MAAOA,EACP7xB,YAAaA,IAEf4iD,GAAY,OAAeD,EAAU,GACrC/mG,EAAQgnG,EAAU,GAClB/mG,EAAS+mG,EAAU,GACjB9K,EAAYl8F,EAAQi2E,EACpBuyB,EAAc,IAAI91E,MAAMujD,GACnB9iF,EAAI,EAAGA,EAAI8iF,EAAO9iF,IAAK,CAC9B,IAAI6yC,EAAQtT,MAAMC,QAAQmhD,GAAeA,EAAY3gF,GAAK2gF,EAC1D00B,EAAYr1G,GAAkB,gBAAoB,MAAO,CACvD2/B,IAAK3/B,EACL0S,UAAW,IAAW,GAAGL,OAAOksD,EAAW,gBAAgB,OAAgB,CAAC,EAAG,GAAGlsD,OAAOksD,EAAW,sBAAuBv+D,GAAKuG,EAAU,IAC1IqE,MAAO,CACLwiE,gBAAiBptE,GAAKuG,EAAU,EAAIssC,EAAQ+tC,EAC5C/zE,MAAOk8F,EACPj8F,OAAQA,IAGd,CACA,OAAoB,gBAAoB,MAAO,CAC7C4F,UAAW,GAAGL,OAAOksD,EAAW,iBAC/B82C,EAAa1mG,EAClB,ECxCI2mG,GAAuB,SAA8BC,GACvD,IAAI37E,EAAY27E,EAAQ,OAAS,QACjC,OAAO,IAAI,MAAU,cAAcljG,OAAOkjG,EAAQ,MAAQ,MAAO,UAAW,CAC1E,KAAM,CACJ3iG,UAAW,cAAcP,OAAOunB,EAAW,eAC3CnmB,QAAS,IAEX,MAAO,CACLb,UAAW,cAAcP,OAAOunB,EAAW,eAC3CnmB,QAAS,IAEX4kB,GAAI,CACFzlB,UAAW,0BACXa,QAAS,IAGf,EACI+hG,GAAe,SAAsBtsC,GACvC,IAAIusC,EAAWC,EAAWtH,EACtBuH,EAAczsC,EAAMC,aACtBysC,EAAgB1sC,EAAM4L,QACxB,OAAO,OAAgB,CAAC,EAAG6gC,EAAar/F,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,GAAG,SAAe80B,KAAUklC,EAAiB,CAChHjkD,QAAS,eACT,QAAS,CACPvwB,UAAW,OAEb,SAAU,CACRqwB,SAAU,WACVp9C,MAAO,OACP+S,SAAUspD,EAAMtpD,SAChB+zD,gBAAiBzK,EAAMuM,SACvBtB,aAAcjL,EAAMuM,YAErB,OAAgB24B,EAAgB,GAAG/7F,OAAOsjG,EAAa,UAAW,CACnExrD,QAAS,eACTt9C,MAAO,UACL,OAAgBuhG,EAAgB,IAAI/7F,OAAOsjG,EAAa,eAAe,OAAgB,CAAC,EAAG,GAAGtjG,OAAOsjG,EAAa,UAAW,CAC/HhiC,gBAAiB,eAAethE,OAAO62D,EAAMuM,SAAU,OACvDY,iBAAkB,cAAchkE,OAAO62D,EAAMwQ,UAAW,WACrD,OAAgB00B,EAAgB,GAAG/7F,OAAOsjG,EAAa,UAAW,CACrE1rD,SAAU,WACVE,QAAS,eACTt9C,MAAO,OACPu9C,SAAU,SACVyrD,cAAe,SACfzoC,gBAAiBlE,EAAM4sC,uBACvBnqC,aAAczC,EAAM6sC,sBAClB,OAAgB3H,EAAgB,GAAG/7F,OAAOsjG,EAAa,eAAetjG,OAAOsjG,EAAa,sBAAsB,OAAgB,CAAC,EAAG,GAAGtjG,OAAOsjG,EAAa,gBAAiB,CAC9K11F,OAAQipD,EAAMymC,cACX,OAAgBvB,EAAgB,GAAG/7F,OAAOsjG,EAAa,iBAAiBtjG,OAAOsjG,EAAa,OAAQ,CACvG1rD,SAAU,WACVmjB,gBAAiBlE,EAAMymC,UACvBhkC,aAAczC,EAAM6sC,mBACpBvsC,WAAY,OAAOn3D,OAAO62D,EAAMmQ,mBAAoB,KAAKhnE,OAAO62D,EAAMykC,wBACpE,OAAgBS,EAAgB,GAAG/7F,OAAOsjG,EAAa,eAAgB,CACzE1rD,SAAU,WACV+rD,gBAAiB,EACjBrgC,iBAAkB,EAClBvI,gBAAiBlE,EAAM+sC,gBACrB,OAAgB7H,EAAgB,GAAG/7F,OAAOsjG,EAAa,UAAU,OAAgB,CACnFxrD,QAAS,eACTt9C,MAAO,MACP+nE,kBAAmB1L,EAAMuM,SACzB5iC,MAAOq2B,EAAMgtC,sBACbr2F,WAAY,EACZo1D,WAAY,SACZl1D,UAAW,QACX81F,cAAe,SACfM,UAAW,UACVP,EAAe,CAChBh2F,SAAUspD,EAAMtpD,aACb,OAAgBwuF,EAAgB,IAAI/7F,OAAOsjG,EAAa,mBAAmB,OAAgB,CAAC,EAAG,GAAGtjG,OAAOsjG,EAAa,eAAgB,CACzI1rD,SAAU,WACVmsD,MAAO,EACPhpC,gBAAiBlE,EAAMiO,iBACvBxL,aAAczC,EAAM6sC,mBACpBtiG,QAAS,EACTq5F,cAAewI,KACf7I,kBAAmBvjC,EAAMmtC,6BACzB3I,wBAAyBxkC,EAAMotC,mBAC/BC,wBAAyB,WACzB3gC,QAAS,SACN,OAAgBw4B,EAAgB,IAAI/7F,OAAOsjG,EAAa,QAAQtjG,OAAOsjG,EAAa,mBAAmB,OAAgB,CAAC,EAAG,GAAGtjG,OAAOsjG,EAAa,eAAgB,CACrK7I,cAAewI,IAAqB,OACjC,OAAgBlH,EAAgB,IAAI/7F,OAAOsjG,EAAa,sBAAuBF,EAAY,CAAC,GAAG,OAAgBA,EAAW,GAAGpjG,OAAOsjG,EAAa,OAAQ,CAC5JvoC,gBAAiBlE,EAAMqO,cACrB,OAAgBk+B,EAAW,GAAGpjG,OAAOsjG,EAAa,SAAU,CAC9D9iE,MAAOq2B,EAAMqO,aACXk+B,KAAa,OAAgBrH,EAAgB,IAAI/7F,OAAOsjG,EAAa,sBAAsBtjG,OAAOsjG,EAAa,eAAetjG,OAAOsjG,EAAa,sBAAsB,OAAgB,CAAC,EAAG,GAAGtjG,OAAOsjG,EAAa,gBAAiB,CACtO11F,OAAQipD,EAAMqO,eACX,OAAgB62B,EAAgB,IAAI/7F,OAAOsjG,EAAa,oBAAqBD,EAAY,CAAC,GAAG,OAAgBA,EAAW,GAAGrjG,OAAOsjG,EAAa,OAAQ,CAC1JvoC,gBAAiBlE,EAAM+sC,gBACrB,OAAgBP,EAAW,GAAGrjG,OAAOsjG,EAAa,SAAU,CAC9D9iE,MAAOq2B,EAAM+sC,eACXP,KAAa,OAAgBtH,EAAgB,IAAI/7F,OAAOsjG,EAAa,oBAAoBtjG,OAAOsjG,EAAa,eAAetjG,OAAOsjG,EAAa,sBAAsB,OAAgB,CAAC,EAAG,GAAGtjG,OAAOsjG,EAAa,gBAAiB,CACpO11F,OAAQipD,EAAM+sC,gBACX7H,IACP,EACIoI,GAAiB,SAAwBttC,GAC3C,IAAIutC,EAAc35C,EACd64C,EAAczsC,EAAMC,aACtBysC,EAAgB1sC,EAAM4L,QACxB,OAAOhY,EAAQ,CAAC,GAAG,OAAgBA,EAAO64C,GAAcc,EAAe,CAAC,GAAG,OAAgBA,EAAc,GAAGpkG,OAAOsjG,EAAa,iBAAkB,CAChJ11F,OAAQipD,EAAM4sC,0BACZ,OAAgBW,EAAc,IAAIpkG,OAAOsjG,EAAa,YAAYtjG,OAAOsjG,EAAa,UAAW,CACnG1rD,SAAU,WACVpqC,WAAY,EACZutD,gBAAiB,iBACf,OAAgBqpC,EAAc,IAAIpkG,OAAOsjG,EAAa,YAAYtjG,OAAOsjG,EAAa,UAAU,OAAgB,CAClH1rD,SAAU,WACV+rD,gBAAiB,MACjBrgC,iBAAkB,EAClB9oE,MAAO,OACPy8F,OAAQ,EACRpwB,QAAS,EACTrmC,MAAOq2B,EAAMsM,UACb31D,WAAY,EACZo1D,WAAY,SACZl1D,UAAW,SACXnN,UAAW,oBACVgjG,EAAe,CAChBh2F,SAAU,GAAGvN,OAAO62D,EAAMtpD,SAAWspD,EAAMwtC,WAAY,UACpD,OAAgBD,EAAc,GAAGpkG,OAAOsjG,EAAa,8BAA8B,OAAgB,CAAC,EAAG,GAAGtjG,OAAOsjG,EAAa,SAAU,CAC3I9iE,MAAOq2B,EAAMqO,eACV,OAAgBk/B,EAAc,GAAGpkG,OAAOsjG,EAAa,4BAA4B,OAAgB,CAAC,EAAG,GAAGtjG,OAAOsjG,EAAa,SAAU,CACzI9iE,MAAOq2B,EAAM+sC,gBACVQ,KAAgB,OAAgB35C,EAAO,GAAGzqD,OAAOsjG,EAAa,mBAAmB,OAAgB,CACpG91F,WAAY,GACX,GAAGxN,OAAOsjG,EAAa,UAAW,CACnCE,cAAe,YACZ/4C,CACP,EACI65C,GAAe,SAAsBztC,GACvC,IAAIysC,EAAczsC,EAAMC,aACxB,OAAO,OAAgB,CAAC,EAAGwsC,GAAa,OAAgB,CAAC,EAAG,GAAGtjG,OAAOsjG,EAAa,UAAW,CAC5FxrD,QAAS,eACT,UAAW,CACTA,QAAS,OACTysD,cAAe,MACfC,WAAY,UAEd,SAAU,CACRC,WAAY,EACZ5gC,SAAUhN,EAAM6tC,qBAChBpjC,gBAAiBzK,EAAM8tC,4BACvB5pC,gBAAiBlE,EAAM4sC,uBACvBtsC,WAAY,OAAOn3D,OAAO62D,EAAMmQ,oBAChC,WAAY,CACVjM,gBAAiBlE,EAAMymC,cAI/B,EACIsH,GAAe,SAAsB/tC,GACvC,IAAIysC,EAAczsC,EAAMC,aACtBysC,EAAgB1sC,EAAM4L,QACxB,OAAO,OAAgB,CAAC,EAAG6gC,GAAa,OAAgB,CAAC,EAAG,GAAGtjG,OAAOsjG,EAAa,kBAAkBtjG,OAAOsjG,EAAa,iBAAiBtjG,OAAOsjG,EAAa,UAAUtjG,OAAOujG,GAAgB,CAC7Lh2F,SAAUspD,EAAMwtC,aAEpB,EACA,IAAe,EAAA/sC,GAAA,GAAsB,YAAY,SAAUT,GACzD,IAAI8tC,EAA8B9tC,EAAMwoC,UAAY,EAChDwF,GAAgB,SAAWhuC,EAAO,CACpC6sC,mBAAoB,IACpBG,sBAAuBhtC,EAAMsM,UAC7B2hC,qBAAsBjuC,EAAMymC,UAC5BmG,uBAAwB5sC,EAAMkuC,mBAC9BJ,4BAA6BA,EAC7BD,qBAAsBC,EACtBX,6BAA8B,SAEhC,MAAO,CAACb,GAAa0B,GAAgBV,GAAeU,GAAgBP,GAAaO,GAAgBD,GAAaC,GAChH,IC9KI,GAAgC,SAAUt6F,EAAG5Z,GAC/C,IAAIH,EAAI,CAAC,EACT,IAAK,IAAIqa,KAAKN,EAAOtG,OAAOtX,UAAUqX,eAAe3V,KAAKkc,EAAGM,IAAMla,EAAEgP,QAAQkL,GAAK,IAAGra,EAAEqa,GAAKN,EAAEM,IAC9F,GAAS,MAALN,GAAqD,mBAAjCtG,OAAO+wB,sBAA2C,KAAIrnC,EAAI,EAAb,IAAgBkd,EAAI5G,OAAO+wB,sBAAsBzqB,GAAI5c,EAAIkd,EAAEvd,OAAQK,IAClIgD,EAAEgP,QAAQkL,EAAEld,IAAM,GAAKsW,OAAOtX,UAAUgsD,qBAAqBtqD,KAAKkc,EAAGM,EAAEld,MAAK6C,EAAEqa,EAAEld,IAAM4c,EAAEM,EAAEld,IADuB,CAGvH,OAAO6C,CACT,EAgBIw0G,GAAmB,CAAC,SAAU,YAAa,SAAU,WACrDC,GAAwB,cAAiB,SAAUnhG,EAAO+6C,GAC5D,IAAIiN,EACAiU,EAAqBj8D,EAAMooD,UAC7B7rD,EAAYyD,EAAMzD,UAClBooE,EAAgB3kE,EAAM2kE,cACtBgI,EAAQ3sE,EAAM2sE,MACdnC,EAAcxqE,EAAMwqE,YACpBw0B,EAAiBh/F,EAAM0hD,QACvBA,OAA6B,IAAnBs9C,EAA4B,EAAIA,EAC1CxB,EAAcx9F,EAAMitB,KACpBA,OAAuB,IAAhBuwE,EAAyB,UAAYA,EAC5C4D,EAAkBphG,EAAMqhG,SACxBA,OAA+B,IAApBD,GAAoCA,EAC/C98B,EAActkE,EAAM1O,KACpBA,OAAuB,IAAhBgzE,EAAyB,OAASA,EACzCliB,EAASpiD,EAAMoiD,OACfzlB,EAAS38B,EAAM28B,OACfloC,EAAQuL,EAAMvL,MACdo4E,EAAY,GAAO7sE,EAAO,CAAC,YAAa,YAAa,gBAAiB,QAAS,cAAe,UAAW,OAAQ,WAAY,OAAQ,SAAU,SAAU,UACvJshG,EAAgB,WAAc,WAChC,IAAIx3G,EAAI+V,EACJ08F,EAAiBF,GAAkBr8F,GACvC,OAAO68B,cAA4Bzd,IAAnBm9E,EAAoH,QAApFzyG,EAAKyyG,QAAuDA,EAAiB,SAAsB,IAAPzyG,OAAgB,EAASA,EAAGyhB,WAA6E,QAA/D1L,EAAK6hD,QAAyCA,EAAU,SAAsB,IAAP7hD,OAAgB,EAASA,EAAG0L,WAAY,GACvS,GAAG,CAACm2C,EAAS1hD,EAAMs8F,QAASt8F,EAAMu8F,iBAC9BgF,EAAiB,WAAc,WACjC,OAAKL,GAAiBpzG,SAASs0D,IAAWk/C,GAAiB,IAClD,UAEFl/C,GAAU,QACnB,GAAG,CAACA,EAAQk/C,IACRtlC,EAAoB,aAAiB,OACvClD,EAAekD,EAAkBlD,aACjCr1C,EAAYu4C,EAAkBv4C,UAC9B+9E,EAAgBxlC,EAAkBogC,SAChCh0C,EAAY0Q,EAAa,WAAYmD,GACrC/C,EAAY,GAAS9Q,GACvBqd,GAAa,OAAevM,EAAW,GACvCwM,EAAUD,EAAW,GACrBtM,EAASsM,EAAW,GAClBg8B,EAAe,WAAc,WAC/B,IAAKJ,EACH,OAAO,KAET,IACI73F,EADA+yF,EAAiBF,GAAkBr8F,GAKnC0hG,EAAsB,SAATpwG,EAQjB,OAPIqrC,GAA6B,cAAnB4kE,GAAqD,YAAnBA,EAC9C/3F,GALkBmzB,GAAU,SAAUk0B,GACtC,MAAO,GAAG30D,OAAO20D,EAAQ,IAC3B,GAGuBsrC,GAAcz6C,GAAUy6C,GAAcI,IAC/B,cAAnBgF,EACT/3F,EAAOk4F,EAA0B,gBAAoB,GAAmB,MAAqB,gBAAoB,GAAe,MACpG,YAAnBH,IACT/3F,EAAOk4F,EAA0B,gBAAoB,GAAmB,MAAqB,gBAAoB,GAAe,OAE9G,gBAAoB,OAAQ,CAC9CnlG,UAAW,GAAGL,OAAOksD,EAAW,SAChC1N,MAAuB,iBAATlxC,EAAoBA,OAAO4V,GACxC5V,EACL,GAAG,CAAC63F,EAAU3/C,EAAS4/C,EAAeC,EAAgBjwG,EAAM82D,EAAWzrB,IAKvE,IAEIy/D,EAFAuF,EAAsBv4E,MAAMC,QAAQmhD,GAAeA,EAAY,GAAKA,EACpEo3B,EAAgD,iBAAhBp3B,GAA4BphD,MAAMC,QAAQmhD,GAAeA,OAAcprD,EAG9F,SAAT9tB,EACF8qG,EAAWzvB,EAAqB,gBAAoB,GAAOxsE,OAAO89B,OAAO,CAAC,EAAGj+B,EAAO,CAClFwqE,YAAao3B,EACbx5C,UAAWA,EACXukB,MAAOA,IACL80B,GAA6B,gBAAoB,GAAMthG,OAAO89B,OAAO,CAAC,EAAGj+B,EAAO,CAClFwqE,YAAam3B,EACbv5C,UAAWA,EACX3kC,UAAWA,IACTg+E,GACc,WAATnwG,GAA8B,cAATA,IAC9B8qG,EAAwB,gBAAoB,GAAQj8F,OAAO89B,OAAO,CAAC,EAAGj+B,EAAO,CAC3EwqE,YAAam3B,EACbv5C,UAAWA,EACXm5C,eAAgBA,IACdE,IAEN,IAAII,EAAc,IAAWz5C,EAAW,GAAGlsD,OAAOksD,EAAW,YAAYlsD,OAAOqlG,GAAiB,GAAGrlG,OAAOksD,EAAW,KAAKlsD,QAAgB,cAAT5K,EAAwB,SAAYq7E,GAAS,UAAWr7E,IAAQ02D,EAAc,CAAC,GAAG,OAAgBA,EAAa,GAAG9rD,OAAOksD,EAAW,kBAA4B,WAAT92D,GAAqBorG,GAAQzvE,EAAM,UAAU,IAAM,KAAK,OAAgB+6B,EAAa,GAAG9rD,OAAOksD,EAAW,cAAei5C,IAAW,OAAgBr5C,EAAa,GAAG9rD,OAAOksD,EAAW,KAAKlsD,OAAO+wB,GAAuB,iBAATA,IAAoB,OAAgB+6B,EAAa,GAAG9rD,OAAOksD,EAAW,QAAuB,QAAd3kC,GAAsBukC,GAAcw5C,aAAqD,EAASA,EAAcjlG,UAAWA,EAAWooE,EAAexL,GAC7sB,OAAOuM,EAAsB,gBAAoB,MAAOvlE,OAAO89B,OAAO,CACpE8c,IAAKA,EACLtmD,MAAO0L,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGujE,aAAqD,EAASA,EAAc/sG,OAAQA,GAC3H8H,UAAWslG,EACX74C,KAAM,cACN,gBAAiBs4C,IAChB,QAAKz0B,EAAW,CAAC,aAAc,cAAe,QAAS,YAAa,cAAe,gBAAiB,UAAW,oBAAqBuvB,GACzI,IAIA,ICzHA,GDyHA,GEjHI0F,GAAwB,cAAiB,SAAUtnD,EAAMO,GAC3D,IAqBIjxD,EAAI+V,EArBJuoD,EAAY5N,EAAK4N,UACnB7rD,EAAYi+C,EAAKj+C,UACjB9H,EAAQ+lD,EAAK/lD,MACb+1D,EAAShQ,EAAKgQ,OACdu3C,EAAWvnD,EAAKunD,SAChBhgD,EAAOvH,EAAKuH,KACZjT,EAAQ0L,EAAK1L,MACbkzD,EAAgBxnD,EAAK4hD,SACrB6F,EAAaznD,EAAKynD,WAClBC,EAAmB1nD,EAAK0nD,iBACxBC,EAAa3nD,EAAK2nD,WAClBC,EAAW5nD,EAAK4nD,SAChBC,EAAkB7nD,EAAK6nD,gBACvBC,EAAiB9nD,EAAK8nD,eACtBC,EAAmB/nD,EAAK+nD,iBACxBC,EAAoBhoD,EAAKioD,YACzBC,EAAmBloD,EAAKmoD,WACxBC,EAAqBpoD,EAAKqoD,aAC1BC,EAAYtoD,EAAKsoD,UACjBC,EAAavoD,EAAKuoD,WAClBC,EAAUxoD,EAAKwoD,QAGb5gD,EAASL,EAAKK,OACd+S,EAAkB,WAAe/S,GACnCgT,GAAmB,OAAeD,EAAiB,GACnD8tC,EAAe7tC,EAAiB,GAChC8tC,EAAkB9tC,EAAiB,GACrC,aAAgB,WACC,YAAXhT,GACF8gD,EAAgB9gD,EAEpB,GAAG,CAACA,IAEJ,IAAIkT,EAAmB,YAAe,GACpCC,GAAmB,OAAeD,EAAkB,GACpD6tC,EAAe5tC,EAAiB,GAChC6tC,EAAkB7tC,EAAiB,GACrC,aAAgB,WACd,IAAIhpE,EAAQN,YAAW,WACrBm3G,GAAgB,EAClB,GAAG,KACH,OAAO,WACL91G,aAAaf,EACf,CACF,GAAG,IACH,IAAIw7E,EAAWk6B,EAAWlgD,GACtB8N,EAAoB,gBAAoB,MAAO,CACjDtzD,UAAW,GAAGL,OAAOksD,EAAW,UAC/B2f,GACH,GAAiB,YAAbg6B,GAAuC,iBAAbA,GAA4C,mBAAbA,EAC3D,GAAqB,cAAjBkB,IAAiClhD,EAAKmnB,WAAannB,EAAKO,IAAK,CAC/D,IAAI+gD,EAAqB,IAAW,GAAGnnG,OAAOksD,EAAW,yBAAyB,OAAgB,CAAC,EAAG,GAAGlsD,OAAOksD,EAAW,mBAAqC,cAAjB66C,IAC/IpzC,EAAoB,gBAAoB,MAAO,CAC7CtzD,UAAW8mG,GACVt7B,EACL,KAAO,CACL,IAAIu7B,GAAalB,aAA2C,EAASA,EAASrgD,IAAsB,gBAAoB,MAAO,CAC7Hj1B,IAAKi1B,EAAKmnB,UAAYnnB,EAAKO,IAC3BihD,IAAKxhD,EAAKn3D,KACV2R,UAAW,GAAGL,OAAOksD,EAAW,oBAChC6hB,YAAaloB,EAAKkoB,cACflC,EACDy7B,EAAa,IAAW,GAAGtnG,OAAOksD,EAAW,yBAAyB,OAAgB,CAAC,EAAG,GAAGlsD,OAAOksD,EAAW,mBAAoBg6C,IAAaA,EAASrgD,KAC7J8N,EAAoB,gBAAoB,IAAK,CAC3CtzD,UAAWinG,EACXh+C,QAAS,SAAiB34D,GACxB,OAAOi2G,EAAU/gD,EAAMl1D,EACzB,EACAo7E,KAAMlmB,EAAKO,KAAOP,EAAKmnB,SACvB73E,OAAQ,SACRoyG,IAAK,uBACJH,EACL,CAEF,IAAII,EAAoB,IAAW,GAAGxnG,OAAOksD,EAAW,cAAe,GAAGlsD,OAAOksD,EAAW,eAAelsD,OAAO+mG,IAC9GU,EAAsC,iBAAnB5hD,EAAK4hD,UAAyBh6D,KAAKyF,MAAM2S,EAAK4hD,WAAa5hD,EAAK4hD,UACnFhB,EAAaL,EAAiBJ,GAA8C,mBAArBQ,EAAkCA,EAAiB3gD,GAAQ2gD,IAAkC,gBAAoB,GAAgB,OAAO,WACjM,OAAOM,EAAQjhD,EACjB,GAAGqG,EAAWoC,EAAO8E,YAAc,KAC/BuzC,EAAeN,GAAqC,SAAjBU,EAA0Bf,GAAgD,mBAAvBU,EAAoCA,EAAmB7gD,GAAQ6gD,IAAoC,gBAAoB,GAAkB,OAAO,WACxO,OAAOG,EAAWhhD,EACpB,GAAGqG,EAAWoC,EAAOiF,cAAgB,KACjCm0C,EAAgC,iBAAb7B,GAA4C,mBAAbA,GAA8C,gBAAoB,OAAQ,CAC9Hv4E,IAAK,kBACLjtB,UAAW,IAAW,GAAGL,OAAOksD,EAAW,sBAAuB,CAChEy7C,QAAsB,YAAb9B,KAEVc,EAAcF,GACbmB,EAAoB,IAAW,GAAG5nG,OAAOksD,EAAW,oBACpDlF,EAAWnB,EAAKO,IAAM,CAAc,gBAAoB,IAAKniD,OAAO89B,OAAO,CAC7EzU,IAAK,OACLn4B,OAAQ,SACRoyG,IAAK,sBACLlnG,UAAWunG,EACXppD,MAAOqH,EAAKn3D,MACX+4G,EAAW,CACZ17B,KAAMlmB,EAAKO,IACXkD,QAAS,SAAiB34D,GACxB,OAAOi2G,EAAU/gD,EAAMl1D,EACzB,IACEk1D,EAAKn3D,MAAOg5G,GAAoB,CAAc,gBAAoB,OAAQ,CAC5Ep6E,IAAK,OACLjtB,UAAWunG,EACXt+C,QAAS,SAAiB34D,GACxB,OAAOi2G,EAAU/gD,EAAMl1D,EACzB,EACA6tD,MAAOqH,EAAKn3D,MACXm3D,EAAKn3D,MAAOg5G,GAKXnB,EAAcJ,EAA+B,gBAAoB,IAAK,CACxEp6B,KAAMlmB,EAAKO,KAAOP,EAAKmnB,SACvB73E,OAAQ,SACRoyG,IAAK,sBACLhvG,MAAOstD,EAAKO,KAAOP,EAAKmnB,cAAW9pD,EARlB,CACjB80B,cAAe,OACf52C,QAAS,IAOTkoD,QAAS,SAAiB34D,GACxB,OAAOi2G,EAAU/gD,EAAMl1D,EACzB,EACA6tD,MAAO8P,EAAOgF,aACgB,mBAAtBgzC,EAAmCA,EAAkBzgD,GAAQygD,GAAkC,gBAAoB,GAAa,OAAS,KAC/IuB,GAAmC,iBAAbhC,GAA4C,mBAAbA,IAAmD,cAAjBkB,GAA6C,gBAAoB,OAAQ,CAClK1mG,UAAW,GAAGL,OAAOksD,EAAW,uBAC/Bq6C,EAA8B,SAAjBQ,GAA2BJ,EAAcF,GAGrDjH,GAAgB5iC,EAFI,aAAiB,OACNA,gBAE/BkrC,EAAmB,gBAAoB,MAAO,CAChDznG,UAAWmnG,GACV7zC,EAAM3M,EAAU6gD,EAAoBZ,GAA6B,gBAAoB,MAAW,CACjG/qC,WAAY,GAAGl8D,OAAOw/F,EAAe,SACrCx+F,QAA0B,cAAjB+lG,EACT5qC,eAAgB,MACf,SAAU1R,GACX,IAAI+R,EAAkB/R,EAAMpqD,UAExB0nG,EAAkB,YAAaliD,EAAoB,gBAAoB,GAAU5hD,OAAO89B,OAAO,CAAC,EAAG+jE,EAAe,CACpH1wG,KAAM,OACNowD,QAASK,EAAKL,QACd,aAAcK,EAAK,cACnB,kBAAmBA,EAAK,sBACpB,KACN,OAAoB,gBAAoB,MAAO,CAC7CxlD,UAAW,IAAW,GAAGL,OAAOksD,EAAW,uBAAwBsQ,IAClEurC,EACL,KACIC,GAAUniD,EAAKZ,UAAqC,iBAAlBY,EAAKZ,SAAwBY,EAAKZ,UAAkC,QAArBr3D,EAAKi4D,EAAKhM,aAA0B,IAAPjsD,OAAgB,EAASA,EAAGq6G,cAAsC,QAArBtkG,EAAKkiD,EAAKhM,aAA0B,IAAPl2C,OAAgB,EAASA,EAAGqkG,UAAY15C,EAAO+E,YACvOnvD,GAAwB,UAAjB6iG,EAAwC,gBAAoB,GAAS,CAC9EvoD,MAAOwpD,GACP3lB,kBAAmB,SAA2Bl1C,GAC5C,OAAOA,EAAKtxC,UACd,GACCisG,GAAOA,EACV,OAAoB,gBAAoB,MAAO,CAC7CznG,UAAW,IAAW,GAAGL,OAAOksD,EAAW,wBAAyB7rD,GACpE9H,MAAOA,EACPsmD,IAAKA,GACJonD,EAAaA,EAAW/hG,GAAM2hD,EAAMjT,EAAO,CAC5Cs1D,SAAUrB,EAAWh3G,KAAK,KAAMg2D,GAChCuP,QAASwxC,EAAU/2G,KAAK,KAAMg2D,GAC9BjmD,OAAQknG,EAAQj3G,KAAK,KAAMg2D,KACxB3hD,GACP,IACA,MCjKIikG,GAAqB,SAA4BrkG,EAAO+6C,GAC1D,IAAIupD,EAAkBtkG,EAAM+hG,SAC1BA,OAA+B,IAApBuC,EAA6B,OAASA,EACjDC,EAAqBvkG,EAAMwvD,YAC3BA,OAAqC,IAAvB+0C,EAAgCh7B,GAAeg7B,EAC7DzB,EAAY9iG,EAAM8iG,UAClBC,EAAa/iG,EAAM+iG,WACnByB,EAAWxkG,EAAMwkG,SACjBh6C,EAASxqD,EAAMwqD,OACfy3C,EAAajiG,EAAMiiG,WACnBwC,EAAoBzkG,EAAMipE,WAC1Bm5B,OAAiC,IAAtBqC,EAA+Bx7B,GAAaw7B,EACvDxoC,EAAqBj8D,EAAMooD,UAC3Bs8C,EAAe1kG,EAAM8uC,MACrBA,OAAyB,IAAjB41D,EAA0B,GAAKA,EACvCC,EAAwB3kG,EAAMqiG,gBAC9BA,OAA4C,IAA1BsC,GAA0CA,EAC5DC,EAAwB5kG,EAAMsiG,eAC9BA,OAA2C,IAA1BsC,GAA0CA,EAC3DC,EAAwB7kG,EAAMuiG,iBAC9BA,OAA6C,IAA1BsC,GAA2CA,EAC9DlC,EAAa3iG,EAAM2iG,WACnBF,EAAcziG,EAAMyiG,YACpBI,EAAe7iG,EAAM6iG,aACrBiC,EAAkB9kG,EAAMo8F,SACxBA,OAA+B,IAApB0I,EAA6B,CACtC73E,KAAM,EAAE,EAAG,GACXo0E,UAAU,GACRyD,EACJC,EAAe/kG,EAAM+kG,aACrBC,EAAwBhlG,EAAMilG,oBAC9BA,OAAgD,IAA1BD,GAA0CA,EAChE7C,EAAaniG,EAAMmiG,WACnB95C,EAAWroD,EAAMqoD,SACf68C,EAAc5yC,KACd6C,EAAkB,YAAe,GACnCC,GAAmB,OAAeD,EAAiB,GACnDgD,EAAe/C,EAAiB,GAChC+vC,EAAkB/vC,EAAiB,GAErC,aAAgB,WACG,YAAb2sC,GAAuC,iBAAbA,GAA4C,mBAAbA,IAG5DjzD,GAAS,IAAI/9C,SAAQ,SAAUgxD,GACN,oBAAbzuD,UAA8C,oBAAXzH,QAA2BA,OAAOu+E,YAAev+E,OAAOu7D,OAAUrF,EAAK0mB,yBAAyBrhB,MAAQrF,EAAK0mB,yBAAyBzmB,YAA2B5iC,IAAlB2iC,EAAKmnB,WAGlMnnB,EAAKmnB,SAAW,GACZ1Z,GACFA,EAAYzN,EAAK0mB,eAAev4C,MAAK,SAAUk1E,GAE7CrjD,EAAKmnB,SAAWk8B,GAAkB,GAClCF,GACF,IAEJ,GACF,GAAG,CAACnD,EAAUjzD,EAAO0gB,IACrB,aAAgB,WACd21C,GAAgB,EAClB,GAAG,IAEH,IAAIE,EAAoB,SAA2BtjD,EAAMl1D,GACvD,GAAKi2G,EAIL,OADAj2G,SAAsCA,EAAEuI,iBACjC0tG,EAAU/gD,EACnB,EACIujD,EAAqB,SAA4BvjD,GACzB,mBAAfghD,EACTA,EAAWhhD,GACFA,EAAKO,KACdz2D,OAAO42D,KAAKV,EAAKO,IAErB,EACIijD,EAAkB,SAAyBxjD,GAC7CyiD,SAAoDA,EAASziD,EAC/D,EACIyjD,EAAqB,SAA4BzjD,GACnD,GAAIkgD,EACF,OAAOA,EAAWlgD,EAAMggD,GAE1B,IAAI0D,EAA4B,cAAhB1jD,EAAKK,OACjBsjD,EAAWtD,GAAYA,EAASrgD,GAAqB,gBAAoB,GAAgB,MAAqB,gBAAoB,GAAa,MAC/I8N,EAAO41C,EAAyB,gBAAoB,GAAiB,MAAqB,gBAAoB,GAAmB,MAMrI,MALiB,YAAb1D,EACFlyC,EAAO41C,EAAyB,gBAAoB,GAAiB,MAAQC,EACvD,iBAAb3D,GAA4C,mBAAbA,IACxClyC,EAAO41C,EAAYj7C,EAAO6E,UAAYq2C,GAEjC71C,CACT,EACIqyC,EAAmB,SAA0ByD,EAAY38G,EAAUo/D,EAAW1N,GAChF,IAAIkrD,EAAW,CACbt0G,KAAM,OACN27B,KAAM,QACNytB,MAAOA,EACP8K,QAAS,SAAiB34D,GACxB7D,KACI,SAAe28G,IAAeA,EAAW3lG,MAAMwlD,SACjDmgD,EAAW3lG,MAAMwlD,QAAQ34D,EAE7B,EACA0P,UAAW,GAAGL,OAAOksD,EAAW,qBAChCC,SAAUA,GAEZ,IAAI,SAAes9C,GAAa,CAC9B,IAAIE,GAAU,SAAaF,EAAYxlG,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAG0nE,EAAW3lG,OAAQ,CACxFwlD,QAAS,WAAoB,KAE/B,OAAoB,gBAAoB,GAAQrlD,OAAO89B,OAAO,CAAC,EAAG2nE,EAAU,CAC1E/1C,KAAMg2C,IAEV,CACA,OAAoB,gBAAoB,GAAQ1lG,OAAO89B,OAAO,CAAC,EAAG2nE,GAAwB,gBAAoB,OAAQ,KAAMD,GAC9H,EAGA,sBAA0B5qD,GAAK,WAC7B,MAAO,CACL+qD,cAAeT,EACfU,eAAgBT,EAEpB,IACA,IACExsC,EADsB,aAAiB,OACNA,aAE/B1Q,EAAY0Q,EAAa,SAAUmD,GACnCy/B,EAAgB5iC,IAChBktC,EAAiB,IAAW,GAAG9pG,OAAOksD,EAAW,SAAU,GAAGlsD,OAAOksD,EAAW,UAAUlsD,OAAO6lG,IAEjGkE,GAAgB,OAAmBn3D,EAAMn1B,KAAI,SAAUooC,GACzD,MAAO,CACLv4B,IAAKu4B,EAAKgB,IACVhB,KAAMA,EAEV,KACImkD,EAAkC,iBAAbnE,GAA4C,mBAAbA,EAAgC,iBAAmB,UAEvGoE,EAAe,CACjB9tC,eAAgB,IAChBD,WAAY,GAAGl8D,OAAOksD,EAAW,KAAKlsD,OAAOgqG,GAC7C38E,KAAM08E,EACN9tC,aAAcA,GAEZiuC,EAAiB,WAAc,WACjC,IAAI3sB,EAASt5E,OAAO89B,OAAO,CAAC,GAAG,QAAmBy9D,IAIlD,cAHOjiB,EAAOnhB,mBACPmhB,EAAO4sB,kBACP5sB,EAAO6sB,WACP7sB,CACT,GAAG,CAACiiB,IAIJ,MAHiB,iBAAbqG,GAA4C,mBAAbA,IACjCoE,EAAehmG,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGmoE,GAAiBD,IAE9C,gBAAoB,MAAO,CAC7C5pG,UAAWypG,GACG,gBAAoB,MAAe7lG,OAAO89B,OAAO,CAAC,EAAGkoE,EAAc,CACjFh+C,WAAW,KACT,SAAU3N,GACZ,IAAIhxB,EAAMgxB,EAAKhxB,IACbu4B,EAAOvH,EAAKuH,KACZ2W,EAAkBle,EAAKj+C,UACvBu/D,EAActhB,EAAK/lD,MACrB,OAAoB,gBAAoB,GAAU,CAChD+0B,IAAKA,EACLghC,OAAQA,EACRpC,UAAWA,EACX7rD,UAAWm8D,EACXjkE,MAAOqnE,EACP/Z,KAAMA,EACNjT,MAAOA,EACPstD,SAAUA,EACV2F,SAAUA,EACVK,SAAUA,EACVC,gBAAiBA,EACjBC,eAAgBA,EAChBC,iBAAkBA,EAClBI,WAAYA,EACZF,YAAaA,EACbI,aAAcA,EACdZ,WAAYuD,EACZtD,iBAAkBA,EAClBC,WAAYA,EACZW,UAAWuC,EACXtC,WAAYuC,EACZtC,QAASuC,GAEb,IAAIR,GAA6B,gBAAoB,MAAW5kG,OAAO89B,OAAO,CAAC,EAAGkoE,EAAc,CAC9FjpG,QAAS+nG,EACT3mB,aAAa,KACX,SAAU33B,GACZ,IAAI+R,EAAkB/R,EAAMpqD,UAC1Bu/D,EAAcnV,EAAMlyD,MACtB,OAAO,SAAaswG,GAAc,SAAUwB,GAC1C,MAAO,CACLhqG,UAAW,IAAWgqG,EAAShqG,UAAWm8D,GAC1CjkE,MAAO0L,OAAO89B,OAAO99B,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAG69B,GAAc,CAEjE5nB,cAAewkB,EAAkB,YAASt5C,IACxCmnF,EAAS9xG,OAEjB,GACF,IACF,EAKA,OAJ8B,aAAiB4vG,gBCjL/C,GA5CsB,SAAyBtxC,GAC7C,IAAIyP,EACAxP,EAAeD,EAAMC,aACvB2L,EAAU5L,EAAM4L,QAClB,OAAO,OAAgB,CAAC,EAAG,GAAGziE,OAAO82D,EAAc,aAAa,OAAgB,CAAC,EAAG,GAAG92D,OAAO82D,EAAc,UAAWwP,EAAY,CACjI1uB,SAAU,WACVp9C,MAAO,OACPC,OAAQ,OACRiT,UAAW,SACXspD,WAAYH,EAAMyzC,eAClBxnC,OAAQ,GAAG9iE,OAAO62D,EAAM3qD,UAAW,cAAclM,OAAO62D,EAAM0N,aAC9DjL,aAAczC,EAAM8Q,eACpBnvE,OAAQ,UACR2+D,WAAY,gBAAgBn3D,OAAO62D,EAAMmQ,sBACxC,OAAgBV,EAAWxP,EAAc,CAC1C+P,QAAS,GAAG7mE,OAAO62D,EAAMgQ,QAAS,WAChC,OAAgBP,EAAW,GAAGtmE,OAAO82D,EAAc,QAAS,CAC9Dhf,QAAS,QACTt9C,MAAO,OACPC,OAAQ,OACRkoE,QAAS,UACP,OAAgB2D,EAAW,GAAGtmE,OAAO82D,EAAc,mBAAoB,CACzEhf,QAAS,aACT0rD,cAAe,YACb,OAAgBl9B,EAAW,SAAStmE,OAAO82D,EAAc,oBAAqB,CAChFgE,YAAajE,EAAMwL,qBACjB,OAAgBiE,EAAW,IAAItmE,OAAO82D,EAAc,eAAe,OAAgB,CACrFgL,aAAcjL,EAAMogC,QACnBx0B,EAAS,CACVjiC,MAAOq2B,EAAME,aACbxpD,SAAUspD,EAAM0zC,wBACb,OAAgBjkC,EAAW,IAAItmE,OAAO82D,EAAc,SAAU,CACjEmgC,OAAQ,OAAOj3F,OAAO62D,EAAMwoC,UAAW,MACvC7+D,MAAOq2B,EAAM2zC,iBACbj9F,SAAUspD,EAAM0Q,cACd,OAAgBjB,EAAW,IAAItmE,OAAO82D,EAAc,SAAU,CAChEt2B,MAAOq2B,EAAM4zC,qBACbl9F,SAAUspD,EAAMtpD,YACd,OAAgB+4D,EAAW,IAAItmE,OAAO82D,EAAc,cAAc,OAAgB,CACpFt+D,OAAQ,eACP,IAAIwH,OAAO82D,EAAc,eAAe92D,OAAOyiE,EAAS,oBAAoBziE,OAAO82D,EAAc,yBAAyB92D,OAAO82D,EAAc,qBAAsB,CACtKt2B,MAAOq2B,EAAM2N,qBACV8B,IACP,ECwCA,GAlFmB,SAAsBzP,GACvC,IAAI6zC,EAAaC,EAAUC,EAAcC,EAAU9O,EAC/CjlC,EAAeD,EAAMC,aACvBokC,EAASrkC,EAAMqkC,OACfz4B,EAAU5L,EAAM4L,QAChBl1D,EAAWspD,EAAMtpD,SACjBC,EAAaqpD,EAAMrpD,WACjBs9F,EAAU,GAAG9qG,OAAO82D,EAAc,cAClCi0C,EAAa,GAAG/qG,OAAO8qG,EAAS,YAChCE,EAAY,GAAGhrG,OAAO8qG,EAAS,WAC/BG,EAAmBvkG,KAAKwoB,MAAM3hB,EAAWC,GAC7C,OAAO,OAAgB,CAAC,EAAG,GAAGxN,OAAO82D,EAAc,aAAa,OAAgB,CAAC,EAAG,GAAG92D,OAAO82D,EAAc,SAAU7yD,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,GAAG,aAAcg6D,EAAiB,CACnLvuF,WAAYqpD,EAAMrpD,aACjB,OAAgBuuF,EAAgB+O,GAAUH,EAAW,CACtD/yD,SAAU,WACVn9C,OAAQo8D,EAAMrpD,WAAaD,EAC3B29F,UAAWr0C,EAAMuM,SACjB71D,SAAUA,EACVuqC,QAAS,OACT0sD,WAAY,SACZrtC,WAAY,oBAAoBn3D,OAAO62D,EAAMmQ,oBAC7C,UAAW,CACTjM,gBAAiBlE,EAAMs0C,sBAExB,OAAgBR,EAAU,GAAG3qG,OAAO8qG,EAAS,SAAU7mG,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAG,OAAe,CACvG8kC,QAAS,KAAK7mE,OAAO62D,EAAMwQ,UAAW,MACtC75D,WAAYA,EACZ61D,KAAM,OACNlM,WAAY,OAAOn3D,OAAO62D,EAAMmQ,wBAC7B,OAAgB2jC,EAAUI,GAAaL,EAAc,CAAC,GAAG,OAAgBA,EAAaM,EAAW,CACpG5pG,QAAS,KACP,OAAgBspG,EAAa,GAAG1qG,OAAOgrG,GAAWhrG,OAAOk7F,EAAQ,WAAY,CAC/EzgG,OAAQwwG,EACRnoC,OAAQ,EACRt1D,WAAY,EAEZ,SAAU,CACRjN,UAAW,eAEX,OAAgBmqG,EAAa,mBAAmB1qG,OAAOgrG,EAAW,qCAAqChrG,OAAOgrG,EAAW,kBAAmB,CAC9I5pG,QAAS,KACP,OAAgBspG,EAAajoC,EAAS,CACxCjiC,MAAOq2B,EAAMu0C,aACbj0C,WAAY,OAAOn3D,OAAO62D,EAAMmQ,uBAC9B,OAAgB0jC,EAAa,WAAW1qG,OAAOyiE,GAAU,CAC3DjiC,MAAOq2B,EAAMsM,YACXunC,KAAe,OAAgBC,EAAU,GAAG3qG,OAAO82D,EAAc,UAAU92D,OAAOyiE,GAAU,CAC9FjiC,MAAOq2B,EAAM4zC,qBACbl9F,SAAUA,KACR,OAAgBo9F,EAAU,GAAG3qG,OAAO8qG,EAAS,aAAc,CAC7DlzD,SAAU,WACVs4B,QAASrZ,EAAMw0C,qBACf7wG,MAAO,OACPupE,mBAAoBx2D,EAAWspD,EAAMwQ,UACrC95D,SAAUA,EACVC,WAAY,EACZwqC,cAAe,OACf,QAAS,CACPi/C,OAAQ,KAER0T,KAAY,OAAgB5O,EAAgB,GAAG/7F,OAAO8qG,EAAS,WAAW9qG,OAAOgrG,GAAY,CAC/F5pG,QAAS,EACTo/B,MAAOq2B,EAAMsM,aACX,OAAgB44B,EAAgB,GAAG/7F,OAAO8qG,EAAS,WAAYD,EAAW,CAC5ErqE,MAAOq2B,EAAMqO,aACZ,OAAgB2lC,EAAU,GAAG7qG,OAAO8qG,EAAS,WAAW9qG,OAAO82D,EAAc,UAAU92D,OAAOyiE,GAAU,CACzGjiC,MAAOq2B,EAAMqO,cACX,OAAgB2lC,EAAUE,GAAaH,EAAe,CAAC,GAAG,OAAgBA,EAAc,GAAG5qG,OAAOyiE,EAAS,MAAMziE,OAAOyiE,EAAS,UAAW,CAC9IjiC,MAAOq2B,EAAMqO,cACX,OAAgB0lC,EAAcI,EAAW,CAC3C5pG,QAAS,IACPwpG,IAAgBC,KAAY,OAAgB9O,EAAgB,GAAG/7F,OAAO82D,EAAc,wBAAyB,CAC/GK,WAAY,WAAWn3D,OAAO62D,EAAMmQ,mBAAoB,aAAahnE,OAAO62D,EAAMmQ,oBAElF,YAAa,CACXlvB,QAAS,QACTt9C,MAAO,EACPC,OAAQ,EACR8oE,QAAS,QAETw4B,KACN,EChFWuP,GAAS,IAAI,MAAU,YAAa,CAC7C,KAAM,CACJlqG,QAAS,GAEX,OAAQ,CACNA,QAAS,KAGFmqG,GAAU,IAAI,MAAU,aAAc,CAC/C,KAAM,CACJnqG,QAAS,GAEX,OAAQ,CACNA,QAAS,KAGFoqG,GAAiB,SAAwB30C,GAClD,IAAIvY,EACAmtD,EAAYp+G,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,IAAmBA,UAAU,GAC3E6tG,EAASrkC,EAAMqkC,OACfv7B,EAAY,GAAG3/D,OAAOk7F,EAAQ,SAC9Bf,EAAkBsR,EAAY,IAAM,GACxC,MAAO,CAACzR,GAAWr6B,EAAW2rC,GAAQC,GAAS10C,EAAMmM,kBAAmByoC,IAAantD,EAAO,CAAC,GAAG,OAAgBA,EAAM,aAAat+C,OAAOm6F,GAAiBn6F,OAAO2/D,EAAW,qBAAqB3/D,OAAOm6F,GAAiBn6F,OAAO2/D,EAAW,mBAAoB,CAC9Pv+D,QAAS,EACTi6F,wBAAyB,YACvB,OAAgB/8C,EAAM,GAAGt+C,OAAOm6F,GAAiBn6F,OAAO2/D,EAAW,UAAW,CAChF07B,wBAAyB,WACvB/8C,GACN,EC5BIotD,GAAwB,IAAI,MAAU,wBAAyB,CACjE3lF,KAAM,CACJvrB,MAAO,EACPC,OAAQ,EACRw8F,OAAQ,EACRpwB,QAAS,EACTzlE,QAAS,KAGTuqG,GAAyB,IAAI,MAAU,yBAA0B,CACnE3lF,GAAI,CACFxrB,MAAO,EACPC,OAAQ,EACRw8F,OAAQ,EACRpwB,QAAS,EACTzlE,QAAS,KAkBb,GAdqB,SAAwBy1D,GAC3C,IAAIg0C,EACA/zC,EAAeD,EAAMC,aACrB80C,EAAY,GAAG5rG,OAAO82D,EAAc,mBACxC,MAAO,EAAC,OAAgB,CAAC,EAAG,GAAG92D,OAAO82D,EAAc,aAAc+zC,EAAW,CAAC,GAAG,OAAgBA,EAAU,GAAG7qG,OAAO4rG,EAAW,aAAa5rG,OAAO4rG,EAAW,YAAY5rG,OAAO4rG,EAAW,UAAW,CACtMxR,kBAAmBvjC,EAAMmQ,mBACzBq0B,wBAAyBxkC,EAAMykC,oBAC/BjB,kBAAmB,cACjB,OAAgBwQ,EAAU,GAAG7qG,OAAO4rG,EAAW,aAAa5rG,OAAO4rG,EAAW,UAAW,CAC3FnR,cAAeiR,MACb,OAAgBb,EAAU,GAAG7qG,OAAO4rG,EAAW,UAAW,CAC5DnR,cAAekR,KACbd,KAAY,OAAgB,CAAC,EAAG,GAAG7qG,OAAO82D,EAAc,YAAa00C,GAAe30C,IAAS60C,GAAuBC,GAC1H,EC/BIE,GAAkB,SAAyBh1C,GAC7C,IAAIklC,EAAgB4O,EAAUpkC,EAAiBulC,EAAcC,EACzDj1C,EAAeD,EAAMC,aACvB2L,EAAU5L,EAAM4L,QAChB8nC,EAAsB1zC,EAAM0zC,oBAC5Bc,EAAuBx0C,EAAMw0C,qBAC3BW,EAAU,GAAGhsG,OAAO82D,EAAc,SAClCg0C,EAAU,GAAG9qG,OAAOgsG,EAAS,SACjC,OAAO,OAAgB,CAAC,EAAG,GAAGhsG,OAAO82D,EAAc,aAAci1C,EAAY,CAAC,GAAG,OAAgBA,EAAW,aAAa/rG,OAAOgsG,GAAShsG,OAAOgsG,EAAS,uBAAuBhsG,OAAOgsG,GAAShsG,OAAOgsG,EAAS,4BAA4BhsG,OAAOgsG,GAAShsG,OAAOgsG,EAAS,4BAA6BF,EAAe,CAAC,GAAG,OAAgBA,EAAchB,GAAUH,EAAW,CAC7W/yD,SAAU,WACVn9C,OAAQ8vG,EAAwC,EAAlB1zC,EAAM3qD,UAAkC,EAAlB2qD,EAAMwQ,UAC1DR,QAAShQ,EAAMwQ,UACfvE,OAAQ,GAAG9iE,OAAO62D,EAAM3qD,UAAW,OAAOlM,OAAO62D,EAAMkM,SAAU,KAAK/iE,OAAO62D,EAAM0N,aACnFjL,aAAczC,EAAM8Q,eACpB,UAAW,CACT3Q,WAAY,iBAEb,OAAgB2zC,EAAU,GAAG3qG,OAAO8qG,EAAS,cAAe7mG,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAG,QAAgBg6D,EAAiB,CAC9HvhG,MAAO+vG,EACP9vG,OAAQ8vG,EACR/8F,WAAY,GAAGxN,OAAOuqG,EAAsB1zC,EAAMylC,UAAW,MAC7D5uF,UAAW,SACX21D,KAAM,SACL,OAAgB04B,EAAgBt5B,EAAS,CAC1Cl1D,SAAUspD,EAAMo1C,iBAChBzrE,MAAOq2B,EAAME,gBACX,OAAgBglC,EAAgB,MAAO,CACzCjkD,QAAS,QACTt9C,MAAO,OACPC,OAAQ,OACRs9C,SAAU,WACRgkD,MAAmB,OAAgB4O,EAAU,GAAG3qG,OAAO8qG,EAAS,aAAc,CAChF56B,OAAQm7B,EACR7wG,MAAO,eAAewF,OAAyB,EAAlB62D,EAAMylC,UAAe,OAClD4O,UAAW,EACXnnC,mBAAoBwmC,EAAsB1zC,EAAMwQ,YAC9CsjC,KAAY,OAAgBmB,EAAc,GAAG9rG,OAAO8qG,EAAS,WAAW,OAAgB,CAC1FhwC,YAAajE,EAAMqO,YAClB,GAAGllE,OAAO8qG,EAAS,eAAe9qG,OAAOyiE,IAAW8D,EAAkB,CAAC,GAAG,OAAgBA,EAAiB,kBAAkBvmE,OAAO,MAAK,GAAI,MAAO,CACrJqoC,KAAMwuB,EAAMsP,gBACV,OAAgBI,EAAiB,kBAAkBvmE,OAAO,MAAKksG,QAAS,MAAO,CACjF7jE,KAAMwuB,EAAMqO,aACVqB,MAAoB,OAAgBulC,EAAc,GAAG9rG,OAAO8qG,EAAS,eAAe,OAAgB,CACtGnlC,YAAa,UACZ,GAAG3lE,OAAO8qG,EAAS,SAAU,CAC9BhpC,aAAcupC,KACXS,KAAgB,OAAgBC,EAAW,GAAG/rG,OAAOgsG,GAAShsG,OAAOgsG,EAAS,oBAAoBhsG,OAAO8qG,IAAU,OAAgB,CAAC,EAAG,iBAAiB9qG,OAAO8qG,EAAS,cAAe,CAC1LxxC,aAAc,SACXyyC,GACP,EACII,GAAsB,SAA6Bt1C,GACrD,IAAIu1C,EAAkBC,EAAWC,EAAwBC,EAAiB9hD,EACtEqM,EAAeD,EAAMC,aACvB2L,EAAU5L,EAAM4L,QAChB8E,EAAa1Q,EAAM0Q,WACnBhC,EAAsB1O,EAAM0O,oBAC1BymC,EAAU,GAAGhsG,OAAO82D,EAAc,SAClCg0C,EAAU,GAAG9qG,OAAOgsG,EAAS,SAC7BQ,EAAwB31C,EAAM41C,kBAClC,OAAOhiD,EAAQ,CAAC,GAAG,OAAgBA,EAAO,WAAWzqD,OAAO82D,EAAc,YAAY92D,OAAO82D,EAAc,kCAAkC92D,OAAO82D,EAAc,YAAY92D,OAAO82D,EAAc,iCAAkC7yD,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,GAAG,aAAcwqE,EAAkB,CACnSz0D,QAAS,eACTt9C,MAAO,SACN,OAAgB+xG,EAAiB,GAAGvsG,OAAO82D,GAAc92D,OAAO82D,EAAc,YAAas1C,EAAmB,CAC/G5xG,MAAOgyG,EACP/xG,OAAQ+xG,EACRlrC,gBAAiBzK,EAAMuM,SACvBtB,aAAcjL,EAAMuM,SACpB11D,UAAW,SACX81F,cAAe,MACfzoC,gBAAiBlE,EAAMyzC,eACvBxnC,OAAQ,GAAG9iE,OAAO62D,EAAM3qD,UAAW,cAAclM,OAAO62D,EAAM0N,aAC9DjL,aAAczC,EAAM8Q,eACpBnvE,OAAQ,UACR2+D,WAAY,gBAAgBn3D,OAAO62D,EAAMmQ,sBACxC,OAAgBolC,EAAkB,KAAKpsG,OAAO82D,GAAe,CAC9Dhf,QAAS,OACT0sD,WAAY,SACZkI,eAAgB,SAChBjyG,OAAQ,OACRiT,UAAW,YACT,OAAgB0+F,EAAkB,SAASpsG,OAAO82D,EAAc,oBAAqB,CACvFgE,YAAajE,EAAME,eACjBq1C,KAAoB,OAAgBG,EAAiB,GAAGvsG,OAAOgsG,GAAShsG,OAAOgsG,EAAS,mBAAmBhsG,OAAOgsG,GAAShsG,OAAOgsG,EAAS,oBAAqBM,EAAyB,CAAC,GAAG,OAAgBA,EAAwB,GAAGtsG,OAAOgsG,EAAS,mBAAoB,CAC9Ql0D,QAAS,eACTt9C,MAAOgyG,EACP/xG,OAAQ+xG,EACRG,YAAa,KAAK3sG,OAAO62D,EAAMuM,SAAU,MACzCwpC,aAAc,KAAK5sG,OAAO62D,EAAMuM,SAAU,MAC1CogC,cAAe,SACb,OAAgB8I,EAAwB,WAAY,CACtDx0D,QAAS,UACP,OAAgBw0D,EAAwBxB,EAAS,CACnDrwG,OAAQ,OACRw8F,OAAQ,EACR,YAAa,CACXr/C,SAAU,WACV12C,OAAQ,EACR1G,MAAO,eAAewF,OAAyB,EAAlB62D,EAAMwQ,UAAe,OAClD5sE,OAAQ,eAAeuF,OAAyB,EAAlB62D,EAAMwQ,UAAe,OACnDtM,gBAAiBlE,EAAMg2C,YACvBzrG,QAAS,EACT+1D,WAAY,OAAOn3D,OAAO62D,EAAMmQ,oBAChCzD,QAAS,UAET,OAAgB+oC,EAAwB,GAAGtsG,OAAO8qG,EAAS,WAAW,OAAgB,CAAC,EAAG,cAAc9qG,OAAO8qG,EAAS,YAAa,CACvI1pG,QAAS,MACN,OAAgBkrG,EAAwB,GAAGtsG,OAAO8qG,EAAS,aAAa,OAAgB,CAC3FlzD,SAAU,WACV0rB,iBAAkB,EAClBpiE,OAAQ,GACR1G,MAAO,OACPooE,WAAY,SACZl1D,UAAW,SACXtM,QAAS,EACT+1D,WAAY,OAAOn3D,OAAO62D,EAAMmQ,qBAC/B,GAAGhnE,OAAOyiE,EAAS,UAAUziE,OAAOyiE,EAAS,eAAeziE,OAAOyiE,EAAS,WAAY,CACzFvhE,OAAQ,GACR1G,MAAO+sE,EACP0vB,OAAQ,KAAKj3F,OAAO62D,EAAMwoC,UAAW,MACrC9xF,SAAUg6D,EACV/uE,OAAQ,UACR2+D,WAAY,OAAOn3D,OAAO62D,EAAMmQ,oBAChC8lC,IAAK,CACHtJ,cAAe,gBAEd,OAAgB8I,EAAwB,GAAGtsG,OAAO8qG,EAAS,cAAc9qG,OAAO8qG,EAAS,mBAAmB,OAAgB,CAAC,EAAG,GAAG9qG,OAAOyiE,EAAS,UAAUziE,OAAOyiE,EAAS,eAAeziE,OAAOyiE,EAAS,WAAY,CAC3NjiC,MAAO,IAAI,KAAU+kC,GAAqBwnC,SAAS,KAAMC,cACzD,UAAW,CACTxsE,MAAO+kC,OAEN,OAAgB+mC,EAAwB,GAAGtsG,OAAO8qG,EAAS,gBAAgB9qG,OAAO8qG,EAAS,kBAAmB,CACjHlzD,SAAU,SACVE,QAAS,QACTt9C,MAAO,OACPC,OAAQ,OACRwyG,UAAW,aACT,OAAgBX,EAAwB,GAAGtsG,OAAO8qG,EAAS,SAAU,CACvEhzD,QAAS,OACTpqC,UAAW,YACT,OAAgB4+F,EAAwB,GAAGtsG,OAAO8qG,EAAS,YAAY9qG,OAAO8qG,EAAS,SAAU,CACnGlzD,SAAU,WACVs4B,OAAQrZ,EAAMogC,OACdn/C,QAAS,QACTt9C,MAAO,eAAewF,OAAyB,EAAlB62D,EAAMwQ,UAAe,UAChD,OAAgBilC,EAAwB,GAAGtsG,OAAO8qG,EAAS,eAAgBuB,EAAY,CAAC,GAAG,OAAgBA,EAAW,IAAIrsG,OAAO8qG,GAAU,CAC7I/vC,gBAAiBlE,EAAMyzC,kBACrB,OAAgB+B,EAAW,cAAcrsG,OAAOyiE,EAAS,UAAUziE,OAAOyiE,EAAS,eAAeziE,OAAOyiE,EAAS,WAAY,CAChI3qB,QAAS,SACPu0D,KAAa,OAAgBC,EAAwB,GAAGtsG,OAAO8qG,EAAS,aAAc,CACxF56B,OAAQrZ,EAAMq2C,SACd1yG,MAAO,eAAewF,OAAyB,EAAlB62D,EAAMwQ,UAAe,OAClDtD,mBAAoB,IAClBuoC,IAA0BC,MAAoB,OAAgB9hD,EAAO,GAAGzqD,OAAO82D,EAAc,YAAY92D,OAAO82D,EAAc,4BAA4B,OAAgB,CAAC,EAAG,GAAG92D,OAAO82D,GAAc92D,OAAO82D,EAAc,WAAY,CACzOwC,aAAc,SACX7O,CACP,ECvJA,GANkB,SAAqBoM,GACrC,IAAIC,EAAeD,EAAMC,aACzB,OAAO,OAAgB,CAAC,EAAG,GAAG92D,OAAO82D,EAAc,QAAS,CAC1DvvC,UAAW,OAEf,ECEI,GAAe,SAAsBsvC,GACvC,IAAIklC,EACAjlC,EAAeD,EAAMC,aACvB0N,EAAoB3N,EAAM2N,kBAC5B,OAAO,OAAgB,CAAC,EAAG,GAAGxkE,OAAO82D,EAAc,YAAa7yD,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,GAAG,SAAe80B,KAAUklC,EAAiB,CAAC,GAAG,OAAgBA,EAAgBjlC,EAAc,CAC1L6L,QAAS,EACT,qBAAsB,CACpBnqE,OAAQ,cAER,OAAgBujG,EAAgB,GAAG/7F,OAAO82D,EAAc,WAAY,CACtEhf,QAAS,kBACP,OAAgBikD,EAAgB,GAAG/7F,OAAO82D,EAAc,aAAc,CACxEt2B,MAAOgkC,EACPhsE,OAAQ,gBACNujG,IACN,EAEA,IAAe,EAAAzkC,GAAA,GAAsB,UAAU,SAAUT,GACvD,IAAIs2C,EAAmBt2C,EAAMs2C,iBAC3B5/F,EAAWspD,EAAMtpD,SACjBC,EAAaqpD,EAAMrpD,WACnBtB,EAAY2qD,EAAM3qD,UAClBw7D,EAAkB7Q,EAAM6Q,gBACtBujC,EAAmBvkG,KAAKwoB,MAAM3hB,EAAWC,GACzC4/F,GAAc,SAAWv2C,EAAO,CAClC0zC,oBAAwC,EAAnB4C,EACrB9B,qBAAsBJ,EAAmB,EAAI/+F,EAC7CugG,kBAAqC,KAAlB/kC,IAErB,MAAO,CAAC,GAAa0lC,GAAc,GAAgBA,GAAcvB,GAAgBuB,GAAcjB,GAAoBiB,GAAc,GAAaA,GAAc,GAAeA,GAAc,GAAYA,IAAc,QAAkBA,GACvO,IAAG,SAAUv2C,GACX,MAAO,CACLu0C,aAAcv0C,EAAM4zC,qBAExB,ICvCI7xD,GAAsC,SAAUC,EAASC,EAAYC,EAAGC,GAM1E,OAAO,IAAKD,IAAMA,EAAI1lB,WAAU,SAAUS,EAASC,GACjD,SAASklB,EAAUrqD,GACjB,IACEslD,EAAK8E,EAAUh3B,KAAKpzB,GACtB,CAAE,MAAO+B,KACPojC,EAAOpjC,IACT,CACF,CACA,SAASuoD,EAAStqD,GAChB,IACEslD,EAAK8E,EAAiB,MAAEpqD,GAC1B,CAAE,MAAO+B,KACPojC,EAAOpjC,IACT,CACF,CACA,SAASujD,EAAK70C,GACZA,EAAO0lC,KAAOjR,EAAQz0B,EAAOzQ,OArBjC,SAAeA,GACb,OAAOA,aAAiBmqD,EAAInqD,EAAQ,IAAImqD,GAAE,SAAUjlB,GAClDA,EAAQllC,EACV,GACF,CAiB0Cy+G,CAAMhuG,EAAOzQ,OAAOolC,KAAKilB,EAAWC,EAC5E,CACAhF,GAAM8E,EAAYA,EAAUlrD,MAAM+qD,EAASC,GAAc,KAAK92B,OAChE,GACF,EAcWsrF,GAAc,iBAAiBttG,OAAOvQ,KAAKD,MAAO,MACzD+9G,GAAiB,SAAwBzpG,EAAO+6C,GAClD,IAAIiN,EACA1D,EAAWtkD,EAAMskD,SACnBolD,EAAkB1pG,EAAM0pG,gBACxBlF,EAAWxkG,EAAMwkG,SACjBmF,EAAwB3pG,EAAM4pG,eAC9BA,OAA2C,IAA1BD,GAA0CA,EAC3DrF,EAAkBtkG,EAAM+hG,SACxBA,OAA+B,IAApBuC,EAA6B,OAASA,EACjDxB,EAAY9iG,EAAM8iG,UAClBC,EAAa/iG,EAAM+iG,WACnB59C,EAAWnlD,EAAMmlD,SACjB0D,EAAS7oD,EAAM6oD,OACf2G,EAAcxvD,EAAMwvD,YACpBkV,EAAiB1kE,EAAMqoD,SACvBwhD,EAAa7pG,EAAMwqD,OACnBy3C,EAAajiG,EAAMiiG,WACnBh5B,EAAajpE,EAAMipE,WACnBmzB,EAAWp8F,EAAMo8F,SACjBngC,EAAqBj8D,EAAMooD,UAC3B7rD,EAAYyD,EAAMzD,UAClB+nE,EAActkE,EAAM1O,KACpBA,OAAuB,IAAhBgzE,EAAyB,SAAWA,EAC3C9rE,EAAWwH,EAAMxH,SACjB/D,EAAQuL,EAAMvL,MACd0tG,EAAaniG,EAAMmiG,WACnB2H,EAAW9pG,EAAM8pG,SACjBC,EAAc/pG,EAAMqO,KACpBA,OAAuB,IAAhB07F,EAAyB,CAAC,EAAIA,EACrCC,EAAkBhqG,EAAMgmD,SACxBA,OAA+B,IAApBgkD,GAAqCA,EAChDlpB,EAAgB9gF,EAAMojB,OACtBA,OAA2B,IAAlB09D,EAA2B,GAAKA,EACzCmpB,EAAgBjqG,EAAMqlD,OACtBA,OAA2B,IAAlB4kD,EAA2B,GAAKA,EACzCC,EAAwBlqG,EAAMmqG,oBAC9BA,OAAgD,IAA1BD,GAA0CA,EAE9D7hD,EAAW,aAAiB,IAC5Bsd,EAAiBjB,QAAuDA,EAAiBrc,EACzFyyC,GAAkB,EAAAC,GAAA,GAAe2O,GAAmB,GAAI,CACxD5+G,MAAOw5D,EACP8lD,UAAW,SAAmBC,GAC5B,OAAOA,QAAmCA,EAAO,EACnD,IAEFpP,GAAmB,OAAeH,EAAiB,GACnDwP,EAAiBrP,EAAiB,GAClCsP,EAAoBtP,EAAiB,GACnC9lC,EAAkB,WAAe,QACnCC,GAAmB,OAAeD,EAAiB,GACnDq1C,EAAYp1C,EAAiB,GAC7Bq1C,EAAer1C,EAAiB,GAC9BhU,GAAS,SAAa,MAI1B,WAAc,WACZ,IAAIspD,EAAY/+G,KAAKD,OACpB44D,GAAY,IAAIvzD,SAAQ,SAAUgxD,EAAMpxD,GAClCoxD,EAAKgB,KAAQ5iD,OAAOwqG,SAAS5oD,KAChCA,EAAKgB,IAAM,WAAW7mD,OAAOwuG,EAAW,KAAKxuG,OAAOvL,EAAO,MAE/D,GACF,GAAG,CAAC2zD,IACJ,IAAIsmD,GAAmB,SAA0B7oD,EAAM8oD,EAAiBn3G,GACtE,IAAIo3G,GAAY,OAAmBD,GAC/BE,GAAiB,EAEJ,IAAbjB,EACFgB,EAAYA,EAAUn7F,OAAO,GACpBm6F,IACTiB,EAAiBD,EAAUthH,OAASsgH,EACpCgB,EAAYA,EAAUn7F,MAAM,EAAGm6F,KAIjC,KAAAnlB,YAAU,WACR4lB,EAAkBO,EACpB,IACA,IAAIE,EAAa,CACfjpD,KAAMA,EACNuC,SAAUwmD,GAERp3G,IACFs3G,EAAWt3G,MAAQA,GAEhBq3G,IAELD,EAAUznD,MAAK,SAAUr3D,GACvB,OAAOA,EAAE+2D,MAAQhB,EAAKgB,GACxB,MACE,KAAA4hC,YAAU,WACRx/B,SAAoDA,EAAS6lD,EAC/D,GAEJ,EAwDIzkD,GAAe,SAAsB0kD,GAEvC,IAAIC,EAAuBD,EAAkB/xG,QAAO,SAAU8kD,GAC5D,OAAQA,EAAK+D,KAAKynD,GACpB,IAEA,GAAK0B,EAAqB1hH,OAA1B,CAGA,IAAI2hH,EAAiBD,EAAqBvxF,KAAI,SAAUqkC,GACtD,OAAOsqB,GAAStqB,EAAK+D,KACvB,IAEIqpD,GAAc,OAAmBd,GACrCa,EAAep6G,SAAQ,SAAUs6G,GAE/BD,EAAc1iC,GAAe2iC,EAASD,EACxC,IACAD,EAAep6G,SAAQ,SAAUs6G,EAAS16G,GAExC,IAAI26G,EAAiBD,EACrB,GAAKH,EAAqBv6G,GAAO81D,WAoB/B4kD,EAAQjpD,OAAS,gBApB0B,CAE3C,IACIljD,EADAupE,EAAgB4iC,EAAQ5iC,cAE5B,IACEvpE,EAAQ,IAAIkoD,KAAK,CAACqhB,GAAgBA,EAAc79E,KAAM,CACpD0G,KAAMm3E,EAAcn3E,MAExB,CAAE,MAAOzE,MACPqS,EAAQ,IAAI8iD,KAAK,CAACymB,GAAgB,CAChCn3E,KAAMm3E,EAAcn3E,QAEhB1G,KAAO69E,EAAc79E,KAC3BsU,EAAMspE,iBAAmB,IAAI78E,KAC7BuT,EAAMqpE,cAAe,IAAI58E,MAAOuF,SAClC,CACAgO,EAAM6jD,IAAMsoD,EAAQtoD,IACpBuoD,EAAiBpsG,CACnB,CAIA0rG,GAAiBU,EAAgBF,EACnC,GApCA,CAqCF,EACI5oD,GAAY,SAAmBrB,EAAUY,EAAMd,GACjD,IAC0B,iBAAbE,IACTA,EAAWxX,KAAKyF,MAAM+R,GAE1B,CAAE,MAAOt0D,KAET,CAEA,GAAKi8E,GAAY/mB,EAAMuoD,GAAvB,CAGA,IAAIiB,EAAajjC,GAASvmB,GAC1BwpD,EAAWnpD,OAAS,OACpBmpD,EAAW7pD,QAAU,IACrB6pD,EAAWpqD,SAAWA,EACtBoqD,EAAWtqD,IAAMA,EACjB,IAAI0nB,EAAeD,GAAe6iC,EAAYjB,GAC9CM,GAAiBW,EAAY5iC,EAP7B,CAQF,EACIpnB,GAAa,SAAoB10D,EAAGk1D,GAEtC,GAAK+mB,GAAY/mB,EAAMuoD,GAAvB,CAGA,IAAIiB,EAAajjC,GAASvmB,GAC1BwpD,EAAWnpD,OAAS,YACpBmpD,EAAW7pD,QAAU70D,EAAE60D,QACvB,IAAIinB,EAAeD,GAAe6iC,EAAYjB,GAC9CM,GAAiBW,EAAY5iC,EAAc97E,EAL3C,CAMF,EACIs1D,GAAU,SAAiBpM,EAAOoL,EAAUY,GAE9C,GAAK+mB,GAAY/mB,EAAMuoD,GAAvB,CAGA,IAAIiB,EAAajjC,GAASvmB,GAC1BwpD,EAAWx1D,MAAQA,EACnBw1D,EAAWpqD,SAAWA,EACtBoqD,EAAWnpD,OAAS,QACpB,IAAIumB,EAAeD,GAAe6iC,EAAYjB,GAC9CM,GAAiBW,EAAY5iC,EAN7B,CAOF,EACI6iC,GAAe,SAAsBzpD,GACvC,IAAI0pD,EACJl8E,QAAQS,QAA4B,mBAAbw0E,EAA0BA,EAASziD,GAAQyiD,GAAUt0E,MAAK,SAAUqa,GACzF,IAAIzgD,EAEJ,IAAY,IAARygD,EAAJ,CAGA,IAAImhE,EhFrQH,SAAwB3pD,EAAMuC,GACnC,IAAIykB,OAAwB3pD,IAAb2iC,EAAKgB,IAAoB,MAAQ,OAC5C4oD,EAAUrnD,EAASprD,QAAO,SAAUkH,GACtC,OAAOA,EAAK2oE,KAAchnB,EAAKgnB,EACjC,IACA,OAAI4iC,EAAQniH,SAAW86D,EAAS96D,OACvB,KAEFmiH,CACT,CgF4P4BC,CAAe7pD,EAAMuoD,GACvCoB,IACFD,EAActrG,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAG8jB,GAAO,CACnDK,OAAQ,YAEVkoD,SAAgEA,EAAev5G,SAAQ,SAAUqP,GAC/F,IAAI2oE,OAA+B3pD,IAApBqsF,EAAY1oD,IAAoB,MAAQ,OACnD3iD,EAAK2oE,KAAc0iC,EAAY1iC,IAAc5oE,OAAOwqG,SAASvqG,KAC/DA,EAAKgiD,OAAS,UAElB,IAC0B,QAAzBt4D,EAAKs3D,GAAOhxD,eAA4B,IAAPtG,GAAyBA,EAAGg5D,MAAM2oD,GACpEb,GAAiBa,EAAaC,GAbhC,CAeF,GACF,EACI3lD,GAAa,SAAoBl5D,GACnC49G,EAAa59G,EAAEyE,MACA,SAAXzE,EAAEyE,OACJu3D,SAAgDA,EAAOh8D,GAE3D,EAEA,sBAA0BkuD,GAAK,WAC7B,MAAO,CACLwL,aAAcA,GACd/D,UAAWA,GACXjB,WAAYA,GACZY,QAASA,GACTmC,SAAUgmD,EACVlpD,OAAQA,GAAOhxD,QAEnB,IACA,IAAI4rE,GAAoB,aAAiB,OACvClD,GAAekD,GAAkBlD,aACjCr1C,GAAYu4C,GAAkBv4C,UAC9BooF,GAAY7vC,GAAkB5a,OAC5BgH,GAAY0Q,GAAa,SAAUmD,GACnC6vC,GAAgB3rG,OAAO89B,OAAO99B,OAAO89B,OAAO,CAC9CsoB,aAAcA,GACdpE,QAASA,GACTZ,WAAYA,GACZiB,UAAWA,IACVxiD,GAAQ,CACTqO,KAAMA,EACN23C,SAAUA,EACV5iC,OAAQA,EACRiiC,OAAQA,EACR8kD,oBAAqBA,EACrB/hD,UAAWA,GACXC,SAAUsd,EACV9e,aA3MuB,SAA4B9E,EAAMgqD,GACzD,OAAOj3D,QAAU,OAAQ,OAAQ,EAAqB,UAAyB,SAAS8R,IACtF,IAAIC,EAAcmlD,EAAevlD,EAAYlrD,EAC7C,OAAO,UAAyB,SAAkB4rD,GAChD,cAAkBA,EAASlpC,KAAOkpC,EAASjpC,MACzC,KAAK,EAGH,GAFA2oC,EAAe7mD,EAAM6mD,aAAcmlD,EAAgBhsG,EAAMgsG,cACzDvlD,EAAa1E,GACR8E,EAAc,CACjBM,EAASjpC,KAAO,GAChB,KACF,CAEA,OADAipC,EAASjpC,KAAO,EACT2oC,EAAa9E,EAAMgqD,GAC5B,KAAK,EAEH,IAAiB,KADjBxwG,EAAS4rD,EAAS3R,MACO,CACvB2R,EAASjpC,KAAO,EAChB,KACF,CACA,OAAOipC,EAASrJ,OAAO,UAAU,GACnC,KAAK,EAGH,UADOiE,EAAKynD,IACNjuG,IAAWiuG,GAAc,CAC7BriD,EAASjpC,KAAO,GAChB,KACF,CAKA,OAJA/d,OAAOoxB,eAAewwB,EAAMynD,GAAa,CACvC1+G,OAAO,EACP8wD,cAAc,IAETuL,EAASrJ,OAAO,UAAU,GACnC,KAAK,GACmB,iBAAXviD,GAAuBA,IAChCkrD,EAAalrD,GAEjB,KAAK,GACH,IAAKywG,EAAe,CAClB7kD,EAASjpC,KAAO,GAChB,KACF,CAEA,OADAipC,EAASjpC,KAAO,GACT8tF,EAAcvlD,GACvB,KAAK,GACHA,EAAaU,EAAS3R,KACxB,KAAK,GACH,OAAO2R,EAASrJ,OAAO,SAAU2I,GACnC,KAAK,GACL,IAAK,MACH,OAAOU,EAASx5D,OAEtB,GAAGi5D,EACL,IACF,EAsJEzB,cAAU/lC,WAEL0sF,GAAcvvG,iBACduvG,GAAcr3G,MAKhB+D,IAAYmtE,UACRmmC,GAAczvG,GAEvB,IAAI68D,GAAY,GAAS9Q,IACvBqd,IAAa,OAAevM,GAAW,GACvCwM,GAAUD,GAAW,GACrBtM,GAASsM,GAAW,GAClBwmC,GAAa,GAAU,SAAU,GAAc9iD,QAEjD+iD,IADc,OAAeD,GAAY,GACb,GAC1BzxD,GAAiC,kBAAnBovD,EAA+B,CAAC,EAAIA,EACpDtH,GAAiB9nD,GAAK8nD,eACtBD,GAAkB7nD,GAAK6nD,gBACvBE,GAAmB/nD,GAAK+nD,iBACxBI,GAAanoD,GAAKmoD,WAClBF,GAAcjoD,GAAKioD,YACnBI,GAAeroD,GAAKqoD,aAClBsJ,GAAmB,SAA0Bv3G,EAAQw3G,GACvD,OAAKxC,EAGe,gBAAoB,GAAY,CAClDxhD,UAAWA,GACX25C,SAAUA,EACVjzD,MAAOw7D,EACP96C,YAAaA,EACbszC,UAAWA,EACXC,WAAYA,EACZyB,SAAUgH,GACVlJ,gBAAiB38B,GAAkB28B,GACnCD,gBAAiBA,GACjBE,iBAAkBA,GAClBI,WAAYA,GACZF,YAAaA,GACbI,aAAcA,GACdZ,WAAYA,EACZz3C,OAAQrqD,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGiuE,IAAgBrC,GACxD5gC,WAAYA,EACZmzB,SAAUA,EACV2I,aAAcnwG,EACdqwG,oBAAqBmH,EACrBjK,WAAYA,EACZ95C,SAAUsd,IAvBH/wE,CAyBX,EACIy3G,GAAa,IAAW,GAAGnwG,OAAOksD,GAAW,YAAa7rD,EAAW48D,GAAQ0yC,cAA6C,EAASA,GAAUtvG,WAAYyrD,EAAc,CAAC,GAAG,OAAgBA,EAAa,GAAG9rD,OAAOksD,GAAW,QAAuB,QAAd3kC,KAAsB,OAAgBukC,EAAa,GAAG9rD,OAAOksD,GAAW,yBAAuC,iBAAb25C,IAA8B,OAAgB/5C,EAAa,GAAG9rD,OAAOksD,GAAW,2BAAyC,mBAAb25C,GAAgC/5C,IACpdskD,GAAcnsG,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAG4tE,cAA6C,EAASA,GAAUp3G,OAAQA,GAC1H,GAAa,SAATnD,EAAiB,CACnB,IAAIi7G,GACAC,GAAU,IAAWrzC,GAAQ/Q,GAAW,GAAGlsD,OAAOksD,GAAW,UAAWmkD,GAAe,CAAC,GAAG,OAAgBA,GAAc,GAAGrwG,OAAOksD,GAAW,mBAAoBkiD,EAAejnD,MAAK,SAAUtB,GAClM,MAAuB,cAAhBA,EAAKK,MACd,MAAK,OAAgBmqD,GAAc,GAAGrwG,OAAOksD,GAAW,eAA8B,aAAdoiD,IAA2B,OAAgB+B,GAAc,GAAGrwG,OAAOksD,GAAW,aAAcud,IAAiB,OAAgB4mC,GAAc,GAAGrwG,OAAOksD,GAAW,QAAuB,QAAd3kC,IAAsB8oF,KACvQ,OAAO7mC,GAAsB,gBAAoB,OAAQ,CACvDnpE,UAAW8vG,IACG,gBAAoB,MAAO,CACzC9vG,UAAWiwG,GACX/3G,MAAO63G,GACPzjD,OAAQ9C,GACR+C,WAAY/C,GACZ0mD,YAAa1mD,IACC,gBAAoB,GAAU5lD,OAAO89B,OAAO,CAAC,EAAG6tE,GAAe,CAC7E/wD,IAAKqG,GACL7kD,UAAW,GAAGL,OAAOksD,GAAW,UACjB,gBAAoB,MAAO,CAC1C7rD,UAAW,GAAGL,OAAOksD,GAAW,oBAC/B5vD,KAAa2zG,MAClB,CACA,IACqDO,GADjDC,GAAkB,IAAWvkD,GAAW,GAAGlsD,OAAOksD,GAAW,YAAY,OAAgB,CAAC,EAAG,GAAGlsD,OAAOksD,GAAW,aAAcud,IAShIinC,IARiDF,GAQfl0G,OAAW4mB,EAAY,CAC3D40B,QAAS,QARW,gBAAoB,MAAO,CAC7Cz3C,UAAWowG,GACXl4G,MAAOi4G,IACO,gBAAoB,GAAUvsG,OAAO89B,OAAO,CAAC,EAAG6tE,GAAe,CAC7E/wD,IAAKqG,QAMT,OACSskB,GADQ,iBAAbq8B,GAA4C,mBAAbA,EACJ,gBAAoB,OAAQ,CACvDxlG,UAAW8vG,IACVF,GAAiBS,KAAgBp0G,IAET,gBAAoB,OAAQ,CACvD+D,UAAW8vG,IACVO,GAAcT,MACnB,EAKA,OAJ0B,aAAiB1C,IC1bvC,GAAgC,SAAUhjG,EAAG5Z,GAC/C,IAAIH,EAAI,CAAC,EACT,IAAK,IAAIqa,KAAKN,EAAOtG,OAAOtX,UAAUqX,eAAe3V,KAAKkc,EAAGM,IAAMla,EAAEgP,QAAQkL,GAAK,IAAGra,EAAEqa,GAAKN,EAAEM,IAC9F,GAAS,MAALN,GAAqD,mBAAjCtG,OAAO+wB,sBAA2C,KAAIrnC,EAAI,EAAb,IAAgBkd,EAAI5G,OAAO+wB,sBAAsBzqB,GAAI5c,EAAIkd,EAAEvd,OAAQK,IAClIgD,EAAEgP,QAAQkL,EAAEld,IAAM,GAAKsW,OAAOtX,UAAUgsD,qBAAqBtqD,KAAKkc,EAAGM,EAAEld,MAAK6C,EAAEqa,EAAEld,IAAM4c,EAAEM,EAAEld,IADuB,CAGvH,OAAO6C,CACT,EAGImgH,GAAuB,cAAiB,SAAU/iH,EAAIixD,GACxD,IAAItmD,EAAQ3K,EAAG2K,MACbkC,EAAS7M,EAAG6M,OACZk2E,EAAY,GAAO/iF,EAAI,CAAC,QAAS,WACnC,OAAoB,gBAAoB,GAAQqW,OAAO89B,OAAO,CAC5D8c,IAAKA,GACJ8xB,EAAW,CACZv7E,KAAM,OACNmD,MAAO0L,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGxpC,GAAQ,CAC7CkC,OAAQA,MAGd,IAIA,UCtBI,GAAS,GACb,GAAOk2G,QAAU,GACjB,GAAOrD,YAAcA,GACrB,8CCHA,IAA4B,IAAA5/C,oBAAcxqC,GCHtC0tF,GAAgB3sG,OAAO89B,OAAO,CAAC,EAAG,GAAcuwB,OAChDu+C,GAAa,GACbC,GAAiB,WACnB,OAAOD,GAAWzyF,QAAO,SAAU2yF,EAAQziD,GACzC,OAAOrqD,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGgvE,GAASziD,EAClD,GAAG,GAAcgE,MACnB,EAeO,SAAS0+C,KACd,OAAOJ,EACT,CCQA,OAxBqB,SAAwB9sG,GAC3C,IAAImtG,EAAgBntG,EAAMwqD,OACxBA,OAA2B,IAAlB2iD,EAA2B,CAAC,EAAIA,EACzC30G,EAAWwH,EAAMxH,SACHwH,EAAMotG,YAItB,aAAgB,WACd,IAAIC,EDTD,SAA6BC,GAClC,GAAIA,EAAW,CACb,IAAIC,EAAcptG,OAAO89B,OAAO,CAAC,EAAGqvE,GAGpC,OAFAP,GAAW7jH,KAAKqkH,GAChBT,GAAgBE,KACT,WACLD,GAAaA,GAAW7zG,QAAO,SAAUsxD,GACvC,OAAOA,IAAW+iD,CACpB,IACAT,GAAgBE,IAClB,CACF,CACAF,GAAgB3sG,OAAO89B,OAAO,CAAC,EAAG,GAAcuwB,MAClD,CCJsBg/C,CAAoBhjD,GAAUA,EAAOgE,OACvD,OAAO6+C,CACT,GAAG,CAAC7iD,IACJ,IAAIijD,EAA0B,WAAc,WAC1C,OAAOttG,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGusB,GAAS,CAC9C0H,OAAO,GAEX,GAAG,CAAC1H,IACJ,OAAoB,gBAAoB,GAAcb,SAAU,CAC9D7+D,MAAO2iH,GACNj1G,EACL,ECtBIk1G,GAAmB,QAAQxxG,OAAOvQ,KAAKD,MAAO,KAAKwQ,OAAO0G,KAAK+qC,UA0E5D,SAASggE,GAAcC,EAAiB3X,GAC7C,IAAIxhG,EA1EC,SAAkBm5G,EAAiB3X,GACxC,IAAI4X,EAAY,CAAC,EACbC,EAAc,SAAqBpxE,EAAOqxE,GAC5C,IAAI7uG,EAAQw9B,EAAMx9B,QAElB,OADAA,GAAS6uG,aAAyC,EAASA,EAAQ7uG,KAAWA,GACjEgqG,aACf,EACI8E,EAAY,SAAmBC,EAAU38G,GAC3C,IAAI48G,EAAY,IAAI,KAAUD,GAC1BE,GAAgB,SAASD,EAAUhF,eACvC2E,EAAU,GAAG3xG,OAAO5K,EAAM,WAAaw8G,EAAYI,GACnDL,EAAU,GAAG3xG,OAAO5K,EAAM,oBAAsB68G,EAAc,GAC9DN,EAAU,GAAG3xG,OAAO5K,EAAM,iBAAmB68G,EAAc,GAC3DN,EAAU,GAAG3xG,OAAO5K,EAAM,kBAAoB68G,EAAc,GAC5DN,EAAU,GAAG3xG,OAAO5K,EAAM,mBAAqB48G,EAAUhvG,QAAQ+pG,SAAS,IAAKC,cAC/E2E,EAAU,GAAG3xG,OAAO5K,EAAM,yBAA2B68G,EAAc,GACnEN,EAAU,GAAG3xG,OAAO5K,EAAM,6BAA+B68G,EAAc,EACzE,EAEA,GAAIlY,EAAM9jC,aAAc,CACtB67C,EAAU/X,EAAM9jC,aAAc,WAC9B,IAAIA,EAAe,IAAI,KAAU8jC,EAAM9jC,cACnCi8C,GAAgB,SAASj8C,EAAa+2C,eAE1CkF,EAAcr9G,SAAQ,SAAU2rC,EAAO/rC,GACrCk9G,EAAU,WAAW3xG,OAAOvL,EAAQ,IAAM+rC,CAC5C,IAEAmxE,EAAU,iCAAmCC,EAAY37C,GAAc,SAAUrkD,GAC/E,OAAOA,EAAEugG,QAAQ,GACnB,IACAR,EAAU,iCAAmCC,EAAY37C,GAAc,SAAUrkD,GAC/E,OAAOA,EAAEugG,QAAQ,GACnB,IACAR,EAAU,iCAAmCC,EAAY37C,GAAc,SAAUrkD,GAC/E,OAAOA,EAAEwgG,KAAK,GAChB,IACAT,EAAU,iCAAmCC,EAAY37C,GAAc,SAAUrkD,GAC/E,OAAOA,EAAEwgG,KAAK,GAChB,IACAT,EAAU,iCAAmCC,EAAY37C,GAAc,SAAUrkD,GAC/E,OAAOA,EAAEm7F,SAAwB,IAAfn7F,EAAEygG,WACtB,IACA,IAAIC,EAAqB,IAAI,KAAUJ,EAAc,IACrDP,EAAU,wCAA0CC,EAAYU,GAAoB,SAAU1gG,GAC5F,OAAOA,EAAEm7F,SAAwB,GAAfn7F,EAAEygG,WACtB,IACAV,EAAU,wCAA0CC,EAAYU,GAAoB,SAAU1gG,GAC5F,OAAOA,EAAE2gG,OAAO,EAClB,GACF,CAEIxY,EAAMyY,cACRV,EAAU/X,EAAMyY,aAAc,WAG5BzY,EAAM0Y,cACRX,EAAU/X,EAAM0Y,aAAc,WAG5B1Y,EAAM2Y,YACRZ,EAAU/X,EAAM2Y,WAAY,SAG1B3Y,EAAM4Y,WACRb,EAAU/X,EAAM4Y,UAAW,QAG7B,IAAIC,EAAU3uG,OAAOopB,KAAKskF,GAAWl0F,KAAI,SAAU6P,GACjD,MAAO,KAAKttB,OAAO0xG,EAAiB,KAAK1xG,OAAOstB,EAAK,MAAMttB,OAAO2xG,EAAUrkF,GAAM,IACpF,IACA,MAAO,oBAAoBttB,OAAO4yG,EAAQ98F,KAAK,MAAO,aAAawK,MACrE,CAEcuyF,CAASnB,EAAiB3X,IAClC,EAAA7qB,GAAA,OACF,SAAU32E,EAAO,GAAGyH,OAAOwxG,GAAkB,kBAIjD,iBC5EA,OARA,WAGE,MAAO,CACLsB,mBAHsB,IAAAj2C,YAAW,IAIjCk2C,eAHkB,IAAAl2C,YAAWm2C,GAAA,GAKjC,cCNe,SAASC,GAAcnvG,GACpC,IAAIxH,EAAWwH,EAAMxH,SACjB+gE,GAAY,EAAAC,GAAA,KAGZigB,GAFW,OAAelgB,EAAW,GACpB,GACFkgB,OACf21B,EAA4B,UAAa,GAE7C,OADAA,EAA0Bh/G,QAAUg/G,EAA0Bh/G,UAAsB,IAAXqpF,EACrE21B,EAA0Bh/G,QACR,gBAAoB,MAAgB,CACtDqpF,OAAQA,GACPjhF,GAEEA,CACT,CCbA,ICyCIo1G,GACAyB,GACAC,GDvBJ,GApBe,SAAkB7P,EAAe8P,GAC9C,IAAIh2C,GAAY,EAAAC,GAAA,KACdC,GAAa,OAAeF,EAAW,GACvC08B,EAAQx8B,EAAW,GACnB1G,EAAQ0G,EAAW,GAErB,OAAO,SAAiB,CACtBw8B,MAAOA,EACPljC,MAAOA,EACPoG,OAAQ,GACR3pE,KAAM,CAAC,mBAAoBiwG,GAC3B+P,MAAO,WACL,OAAOD,aAAiC,EAASA,EAAIC,KACvD,IACC,WACD,MAAO,EAAC,OAAgB,CAAC,EAAG,IAAItzG,OAAOujG,GAAgBt/F,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,GAAG,aAAc,OAAgB,CAAC,EAAG,IAAI/hC,OAAOujG,EAAe,MAAMvjG,OAAOujG,EAAe,SAAU,CACvLzrD,QAAS,YAEb,GACF,ECrBI,GAAgC,SAAUvtC,EAAG5Z,GAC/C,IAAIH,EAAI,CAAC,EACT,IAAK,IAAIqa,KAAKN,EAAOtG,OAAOtX,UAAUqX,eAAe3V,KAAKkc,EAAGM,IAAMla,EAAEgP,QAAQkL,GAAK,IAAGra,EAAEqa,GAAKN,EAAEM,IAC9F,GAAS,MAALN,GAAqD,mBAAjCtG,OAAO+wB,sBAA2C,KAAIrnC,EAAI,EAAb,IAAgBkd,EAAI5G,OAAO+wB,sBAAsBzqB,GAAI5c,EAAIkd,EAAEvd,OAAQK,IAClIgD,EAAEgP,QAAQkL,EAAEld,IAAM,GAAKsW,OAAOtX,UAAUgsD,qBAAqBtqD,KAAKkc,EAAGM,EAAEld,MAAK6C,EAAEqa,EAAEld,IAAM4c,EAAEM,EAAEld,IADuB,CAGvH,OAAO6C,CACT,EAkCI+iH,GAAe,CAAC,qBAAsB,oBAAqB,cAAe,aAAc,QAAS,aAAc,OAAQ,SAAU,UAKrI,SAASC,KACP,OAAO9B,IALqB,KAM9B,CACA,SAAS+B,KACP,OAAON,IAAuB,KAChC,CAMA,IAmBWO,GAAe,WACxB,MAAO,CACL92C,aAAc,SAAsB+2C,EAAW5zC,GAC7C,OAAIA,IAGG4zC,EAAY,GAAG3zG,OAAOwzG,KAAsB,KAAKxzG,OAAO2zG,GAAaH,KAC9E,EACAI,iBAAkBH,GAClBI,iBAAkB,WAEhB,OAAInC,IAIG8B,IACT,EACAM,SAAU,WACR,OAAOV,EACT,EAEJ,EACIW,GAAmB,SAA0BjwG,GAC/C,IAAIxH,EAAWwH,EAAMxH,SACnB03G,EAAYlwG,EAAMuvG,IAClB/pC,EAA0BxlE,EAAMwlE,wBAChC2qC,EAAQnwG,EAAMmwG,MACdC,EAASpwG,EAAMowG,OACfC,EAAOrwG,EAAMqwG,KACb7lD,EAASxqD,EAAMwqD,OACfykD,EAAgBjvG,EAAMivG,cACtBxrF,EAAYzjB,EAAMyjB,UAClBwpD,EAAQjtE,EAAMitE,MACdqjC,EAAUtwG,EAAMswG,QAChBC,EAA2BvwG,EAAMuwG,yBACjCC,EAAwBxwG,EAAMwwG,sBAC9BC,EAAgBzwG,EAAMywG,cACtBC,EAAe1wG,EAAM0wG,aACrBztB,EAAgBjjF,EAAMijF,cACtB0tB,EAAsB3wG,EAAMy/F,cAC5BxJ,EAAQj2F,EAAMi2F,MACd+Y,EAAoBhvG,EAAMgvG,kBAC1B4B,EAAY5wG,EAAM4wG,UAClBC,EAAY7wG,EAAM6wG,UAClBC,EAAO9wG,EAAM8wG,KACbC,EAAW/wG,EAAM+wG,SACjBC,EAAWhxG,EAAMgxG,SACjBC,EAAWjxG,EAAMixG,SACjBjjD,EAAWhuD,EAAMguD,SACjBkjD,EAAalxG,EAAMkxG,WACnBC,EAAWnxG,EAAMmxG,SACjBC,EAAepxG,EAAMoxG,aACrBC,EAAUrxG,EAAMqxG,QAChBC,EAAStxG,EAAMsxG,OACfC,EAAWvxG,EAAMuxG,SACjB5kC,EAAQ3sE,EAAM2sE,MACd6kC,EAAQxxG,EAAMwxG,MACdC,EAASzxG,EAAMyxG,OACfpH,EAAOrqG,EAAMqqG,KACbqH,EAAW1xG,EAAM0xG,SACjBC,EAAQ3xG,EAAM2xG,MACdvV,EAAWp8F,EAAMo8F,SACjB7gG,EAASyE,EAAMzE,OACfq2G,EAAS5xG,EAAM4xG,OACfC,EAAa7xG,EAAM6xG,WACnBC,EAAO9xG,EAAM8xG,KACbC,EAAa/xG,EAAM+xG,WACnBC,EAAQhyG,EAAMgyG,MACd9oD,EAAQlpD,EAAMkpD,MACd+oD,EAAQjyG,EAAMiyG,MACdC,EAAQlyG,EAAMkyG,MACdC,EAAOnyG,EAAMmyG,KACbC,EAASpyG,EAAMqyG,OACfC,EAAWtyG,EAAMsyG,SACjBC,GAASvyG,EAAMuyG,OACfrO,GAAUlkG,EAAMkkG,QAChBrgF,GAAM7jB,EAAM6jB,IACZ2uF,GAAQxyG,EAAMwyG,MACdC,GAAOzyG,EAAMyyG,KACbC,GAAO1yG,EAAM0yG,KACbj8G,GAAWuJ,EAAMvJ,SACjBk8G,GAAa3yG,EAAM2yG,WACnBvxD,GAASphD,EAAMohD,OACfwxD,GAAe5yG,EAAM4yG,aACrBC,GAAO7yG,EAAM6yG,KACbC,GAAc9yG,EAAM8yG,YACpBC,GAAa/yG,EAAM+yG,WACnBz5C,GAAOt5D,EAAMs5D,KAMf,IAAIR,GAAe,eAAkB,SAAU+2C,EAAW5zC,GACxD,IAAI7T,EAAYpoD,EAAMooD,UACtB,GAAI6T,EACF,OAAOA,EAET,IAAI+2C,EAAkB5qD,GAAa66B,EAAcnqB,aAAa,IAC9D,OAAO+2C,EAAY,GAAG3zG,OAAO82G,EAAiB,KAAK92G,OAAO2zG,GAAamD,CACzE,GAAG,CAAC/vB,EAAcnqB,aAAc94D,EAAMooD,YAClCq3C,GAAgBkR,GAAuB1tB,EAAcwc,eAAiB,MACtEwT,GAAgBxT,KAAkBxc,EAAcwc,cAChD8P,GAAMW,GAAajtB,EAAcssB,IACjC7pC,GAAU,GAAS+5B,GAAe8P,IAClC2D,GCrLS,SAAkBjd,EAAOkd,GACtC,IAAIC,EAAcnd,GAAS,CAAC,EACxBod,GAA4C,IAAxBD,EAAYE,SAAsBH,EAA8BA,EAAhB,MACxE,OAAO,EAAArtC,GAAA,IAAQ,WACb,IAAKmwB,EACH,OAAOkd,EAGT,IAAII,EAAmBpzG,OAAO89B,OAAO,CAAC,EAAGo1E,EAAkBG,YAK3D,OAJArzG,OAAOopB,KAAK0sE,EAAMud,YAAc,CAAC,GAAGziH,SAAQ,SAAU6gE,GACpD2hD,EAAiB3hD,GAAiBzxD,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGs1E,EAAiB3hD,IAAiBqkC,EAAMud,WAAW5hD,GACvH,IAEOzxD,OAAO89B,OAAO99B,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGo1E,GAAoBD,GAAc,CACrFrgD,MAAO5yD,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGo1E,EAAkBtgD,OAAQqgD,EAAYrgD,OAC7EygD,WAAYD,GAEhB,GAAG,CAACH,EAAaC,IAAoB,SAAUp1F,EAAMC,GACnD,OAAOD,EAAKolC,MAAK,SAAUowD,EAAW9iH,GACpC,IAAI+iH,EAAYx1F,EAAKvtB,GACrB,QAAQ,EAAA4pB,GAAA,GAAQk5F,EAAWC,GAAW,EACxC,GACF,GACF,CD8JoBC,CAAS1d,EAAOhT,EAAcgT,OAIhD,IAAI2d,GAAa,CACfrE,IAAKA,GACL/pC,wBAAyBA,EACzB2qC,MAAOA,EACPC,OAAQA,EACR5lD,OAAQA,GAAUkmD,EAClBjtF,UAAWA,EACXwpD,MAAOA,EACPqjC,QAASA,EACTE,sBAAuBA,QAAqEA,EAAwBD,EACpHE,cAAeA,EACf33C,aAAcA,GACd2mC,cAAeA,GACfxJ,MAAOid,GACPtC,UAAWA,EACXC,UAAWA,EACXC,KAAMA,EACNC,SAAUA,EACVC,SAAUA,EACVC,SAAUA,EACVjjD,SAAUA,EACVkjD,WAAYA,EACZC,SAAUA,EACVC,aAAcA,EACdC,QAASA,EACTC,OAAQA,EACRC,SAAUA,EACV5kC,MAAOA,EACP6kC,MAAOA,EACPQ,MAAOA,EACPP,OAAQA,EACRpH,KAAMA,EACNqH,SAAUA,EACVC,MAAOA,EACPvV,SAAUA,EACV7gG,OAAQA,EACRq2G,OAAQA,EACRC,WAAYA,EACZC,KAAMA,EACNC,WAAYA,EACZ7oD,MAAOA,EACP+oD,MAAOA,EACPC,MAAOA,EACPC,KAAMA,EACNE,OAAQD,EACRE,SAAUA,EACVC,OAAQA,GACRrO,QAASA,GACTrgF,IAAKA,GACL2uF,MAAOA,GACPC,KAAMA,GACNC,KAAMA,GACNj8G,SAAUA,GACVk8G,WAAYA,GACZvxD,OAAQA,GACRwxD,aAAcA,GACdC,KAAMA,GACNC,YAAaA,GACbC,WAAYA,GACZz5C,KAAMA,IAEJ67B,GAASh1F,OAAO89B,OAAO,CAAC,EAAGglD,GAC/B9iF,OAAOopB,KAAKqqF,IAAY7iH,SAAQ,SAAUy4B,QAChBpK,IAApBw0F,GAAWpqF,KACb2rE,GAAO3rE,GAAOoqF,GAAWpqF,GAE7B,IAGAimF,GAAa1+G,SAAQ,SAAU8iH,GAC7B,IAAIC,EAAY9zG,EAAM6zG,GAClBC,IACF3e,GAAO0e,GAAYC,EAEvB,IAEA,IAAIC,IAAe,EAAAjuC,GAAA,IAAQ,WACzB,OAAOqvB,EACT,GAAGA,IAAQ,SAAU6e,EAAYC,GAC/B,IAAIC,EAAW/zG,OAAOopB,KAAKyqF,GACvBG,EAAch0G,OAAOopB,KAAK0qF,GAC9B,OAAOC,EAAS1qH,SAAW2qH,EAAY3qH,QAAU0qH,EAAS7wD,MAAK,SAAU75B,GACvE,OAAOwqF,EAAWxqF,KAASyqF,EAAczqF,EAC3C,GACF,IACI4qF,GAAuB,WAAc,WACvC,MAAO,CACLhsD,UAAWq3C,GACX8P,IAAKA,GAET,GAAG,CAAC9P,GAAe8P,KACfrwB,GAAY+zB,GAAgBvtC,GAAQltE,GAAYA,EAChD67G,GAAmB,WAAc,WACnC,IAAIvqH,EAAI+V,EAAIC,EAAImnB,EAChB,OAAO,SAAqC,QAA7Bn9B,EAAK,GAAcqmE,YAAyB,IAAPrmE,OAAgB,EAASA,EAAGumE,0BAA4B,CAAC,GAAuF,QAAlFvwD,EAAoC,QAA9BD,EAAKk0G,GAAavpD,cAA2B,IAAP3qD,OAAgB,EAASA,EAAGswD,YAAyB,IAAPrwD,OAAgB,EAASA,EAAGuwD,0BAA4B,CAAC,GAAiC,QAA5BppC,EAAK8sF,GAAa1D,YAAyB,IAAPppF,OAAgB,EAASA,EAAGotF,mBAAqB,CAAC,GAAIhE,aAAmC,EAASA,EAAKgE,mBAAqB,CAAC,EAC7a,GAAG,CAACN,GAAc1D,aAAmC,EAASA,EAAKgE,mBAC/Dl0G,OAAOopB,KAAK8qF,IAAkB7qH,OAAS,IACzC01F,GAAyB,gBAAoB,GAAwBv1B,SAAU,CAC7E7+D,MAAOupH,IACN77G,IAEDgyD,IACF00B,GAAyB,gBAAoB,GAAgB,CAC3D10B,OAAQA,EACR4iD,YL7RgB,gBK8RfluB,MAEDugB,IAAiB8P,MACnBrwB,GAAyB,gBAAoB,KAAYv1B,SAAU,CACjE7+D,MAAOspH,IACNl1B,KAED+vB,IACF/vB,GAAyB,gBAAoBgwB,GAAA,EAAqB,CAChEjiF,KAAMgiF,GACL/vB,KAGLA,GAAyB,gBAAoBiwB,GAAe,KAAMjwB,IAElE,IAAIo1B,GAAY,WAAc,WAC5B,IAAIxqH,EAAKopH,IAAe,CAAC,EACvBqB,EAAYzqH,EAAGyqH,UACfxhD,EAAQjpE,EAAGipE,MACXygD,EAAa1pH,EAAG0pH,WAChBluC,EAAO,GAAOx7E,EAAI,CAAC,YAAa,QAAS,eACvC0qH,EAAWD,KAAenrF,MAAMC,QAAQkrF,IAAcA,EAAU/qH,OAAS,IAAK,SAAY+qH,GAAa,MACvGE,EAAmB,CAAC,EAgBxB,OAfAt0G,OAAOskD,QAAQ+uD,GAAc,CAAC,GAAGziH,SAAQ,SAAU41D,GACjD,IAAIa,GAAQ,OAAeb,EAAO,GAChCiL,EAAgBpK,EAAM,GACtBktD,EAAiBltD,EAAM,GACrBmtD,EAAcx0G,OAAO89B,OAAO,CAAC,EAAGy2E,GAChC,cAAeC,KACa,IAA1BA,EAAYJ,UACdI,EAAY1e,MAAQue,GACXprF,MAAMC,QAAQsrF,EAAYJ,YAA+C,mBAA1BI,EAAYJ,aACpEI,EAAY1e,OAAQ,SAAY0e,EAAYJ,mBAEvCI,EAAYJ,WAErBE,EAAiB7iD,GAAiB+iD,CACpC,IACOx0G,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGqnC,GAAO,CAC5C2wB,MAAOue,EACPzhD,MAAO5yD,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAG,MAAmB80B,GAC1DygD,WAAYiB,GAEhB,GAAG,CAACvB,KAYJ,OAXIjd,IACF/W,GAAyB,gBAAoB,MAAmBv1B,SAAU,CACxE7+D,MAAOwpH,IACNp1B,UAGqB9/D,IAAtB4vF,IACF9vB,GAAyB,gBAAoBz1B,GAAyB,CACpEpB,SAAU2mD,GACT9vB,KAEe,gBAAoB,MAAcv1B,SAAU,CAC9D7+D,MAAOipH,IACN70B,GACL,EACI01B,GAAiB,SAAwB50G,GAC3C,IAAI8b,EAAU,aAAiB,OAC3B+4F,EAAY,aAAiB,IACjC,OAAoB,gBAAoB5E,GAAkB9vG,OAAO89B,OAAO,CACtEglD,cAAennE,EACf40F,aAAcmE,GACb70G,GACL,EACA40G,GAAeE,cAAgB,MAC/BF,GAAe1F,YAAcA,GAAA,EAC7B0F,GAAezf,OA9SO,SAAyB36C,GAC7C,IAAI4N,EAAY5N,EAAK4N,UACnBq3C,EAAgBjlD,EAAKilD,cACrBxJ,EAAQz7C,EAAKy7C,WACG72E,IAAdgpC,IACFwlD,GAAkBxlD,QAEEhpC,IAAlBqgF,IACF4P,GAAsB5P,GAEpBxJ,KAfN,SAAuBA,GACrB,OAAO91F,OAAOopB,KAAK0sE,GAAO5yC,MAAK,SAAU75B,GACvC,OAAOA,EAAIm6B,SAAS,QACtB,GACF,CAYQoxD,CAAc9e,GAIhBqZ,GAAcrZ,EAFd0X,GAAc+B,KAAsBzZ,GAK1C,EA6RA2e,GAAeI,UAAY,GAC3B70G,OAAOoxB,eAAeqjF,GAAgB,cAAe,CACnDjqH,IAAK,WAEH,OAAOukH,GAAA,CACT,IAKF,UEnWA,GAjB8B,CAC5B,KAAQ,CACN,IAAO,MACP,MAAS,CACP,QAAW,gBACX,UAAa,SAEf,SAAY,CAAC,CACX,IAAO,OACP,MAAS,CACP,EAAK,uOAIX,KAAQ,qBACR,MAAS,UCTP,GAA0B,SAAiClvG,EAAO+6C,GACpE,OAAoB,gBAAoBsX,GAAA,GAAU,OAAS,CAAC,EAAGryD,EAAO,CACpE+6C,IAAKA,EACL8U,KAAM,KAEV,EAIA,OAA4B,aAAiB,ICE7C,GAjBuB,CACrB,KAAQ,CACN,IAAO,MACP,MAAS,CACP,QAAW,gBACX,UAAa,SAEf,SAAY,CAAC,CACX,IAAO,OACP,MAAS,CACP,EAAK,uOAIX,KAAQ,cACR,MAAS,UCTP,GAAmB,SAA0B7vD,EAAO+6C,GACtD,OAAoB,gBAAoBsX,GAAA,GAAU,OAAS,CAAC,EAAGryD,EAAO,CACpE+6C,IAAKA,EACL8U,KAAM,KAEV,EAIA,OAA4B,aAAiB,gBCVzColD,GAAsB,cAAiB,SAAUj1G,EAAO+6C,GAC1D,IAAIqN,EAAYpoD,EAAMooD,UACpB3zD,EAAQuL,EAAMvL,MACd8H,EAAYyD,EAAMzD,UAClB24G,EAAkBl1G,EAAMtR,SACxBA,OAA+B,IAApBwmH,EAA6B,IAAMA,EAC9CC,EAAWn1G,EAAMm1G,SACjB11C,EAAUz/D,EAAMy/D,QAChB21C,EAAWp1G,EAAMo1G,SACjBC,EAAmBr1G,EAAMs1G,UACzBA,OAAiC,IAArBD,EAA8B,IAAMA,EAChDE,EAAWv1G,EAAMA,MACjBwlD,EAAUxlD,EAAMwlD,QAChBgwD,EAAgBx1G,EAAMw1G,cACtBC,EAAQz1G,EAAMy1G,MACZtgD,EAAkB,YAAe,GACnCC,GAAmB,QAAeD,EAAiB,GACnDugD,EAAWtgD,EAAiB,GAC5BugD,EAAcvgD,EAAiB,GAE7BmwC,EAAkB,WACpBiQ,EAAcL,EAChB,EAOA,aAAgB,WACd,IAAKO,GAAYhnH,EAAW,EAAG,CAC7B,IAAIxD,EAAUe,YAAW,WACvBs5G,GACF,GAAc,IAAX72G,GACH,OAAO,WACLpB,aAAapC,EACf,CACF,CAEF,GAAG,CAACwD,EAAUgnH,EAAUD,IAExB,IAAIG,EAAkB,GAAG15G,OAAOksD,EAAW,WAC3C,OAAoB,gBAAoB,OAAO,OAAS,CAAC,EAAGmtD,EAAU,CACpEx6D,IAAKA,EACLx+C,UAAW,IAAWq5G,EAAiBr5G,GAAW,OAAgB,CAAC,EAAG,GAAGL,OAAO05G,EAAiB,aAAcR,IAC/G3gH,MAAOA,EACP8zD,aAAc,WACZotD,GAAY,EACd,EACAntD,aAAc,WACZmtD,GAAY,EACd,EACAnwD,QAASA,IACM,gBAAoB,MAAO,CAC1CjpD,UAAW,GAAGL,OAAO05G,EAAiB,aACrCn2C,GAAU21C,GAAyB,gBAAoB,IAAK,CAC7DrsD,SAAU,EACVxsD,UAAW,GAAGL,OAAO05G,EAAiB,UACtC9vD,UAnCmB,SAAwBj5D,GAC7B,UAAVA,EAAE28B,KAA8B,UAAX38B,EAAEinG,MAAoBjnG,EAAEgpH,UAAYC,GAAA,EAAQC,OACnExQ,GAEJ,EAgCE//C,QAAS,SAAiB34D,GACxBA,EAAEuI,iBACFvI,EAAEye,kBACFi6F,GACF,GACC+P,GACL,IACA,MC9DIU,GAA6B,cAAiB,SAAUh2G,EAAO+6C,GACjE,IAAI8lC,EAAmB7gF,EAAMooD,UAC3BA,OAAiC,IAArBy4B,EAA8B,kBAAoBA,EAC9DlvF,EAAYqO,EAAMrO,UAClB8nF,EAASz5E,EAAMy5E,OACfqwB,EAAW9pG,EAAM8pG,SACjBvtG,EAAYyD,EAAMzD,UAClB9H,EAAQuL,EAAMvL,MACdwhH,EAAej2G,EAAMi2G,aACnB9gD,EAAkB,WAAe,IACnCC,GAAmB,QAAeD,EAAiB,GACnD+gD,EAAa9gD,EAAiB,GAC9B+gD,EAAgB/gD,EAAiB,GAE/BogD,EAAgB,SAAuBhsF,GACzC,IAAI4sF,EAEAjhB,EAAS+gB,EAAW/5G,MAAK,SAAUiE,GACrC,OAAOA,EAAKopB,MAAQA,CACtB,IACA2rE,SAAuF,QAAtCihB,EAAkBjhB,EAAO6N,eAAyC,IAApBoT,GAAsCA,EAAgB7rH,KAAK4qG,GAC1JghB,GAAc,SAAU9L,GACtB,OAAOA,EAAKnxG,QAAO,SAAUkH,GAC3B,OAAOA,EAAKopB,MAAQA,CACtB,GACF,GACF,EAEA,sBAA0BuxB,GAAK,WAC7B,MAAO,CACL0H,KAAM,SAAc0yC,GAClBghB,GAAc,SAAU9L,GACtB,IAOMgM,EAPFn3G,GAAQ,OAAmBmrG,GAE3B15G,EAAQuO,EAAM2pE,WAAU,SAAUzoE,GACpC,OAAOA,EAAKopB,MAAQ2rE,EAAO3rE,GAC7B,IACI8sF,GAAc,QAAc,CAAC,EAAGnhB,GAChCxkG,GAAS,GAEX2lH,EAAYb,QAA0C,QAA/BY,EAAchM,EAAK15G,UAAoC,IAAhB0lH,OAAyB,EAASA,EAAYZ,QAAU,GAAK,EAC3Hv2G,EAAMvO,GAAS2lH,IAEfA,EAAYb,MAAQ,EACpBv2G,EAAMhW,KAAKotH,IAKb,OAHIxM,EAAW,GAAK5qG,EAAM1V,OAASsgH,IACjC5qG,EAAQA,EAAMyQ,OAAOm6F,IAEhB5qG,CACT,GACF,EACAq3G,MAAO,SAAe/sF,GACpBgsF,EAAchsF,EAChB,EACAz+B,QAAS,WACPorH,EAAc,GAChB,EAEJ,IAEA,IAAI7gD,EAAmB,WAAe,CAAC,GACrCC,GAAmB,QAAeD,EAAkB,GACpDw4B,EAAav4B,EAAiB,GAC9BihD,EAAgBjhD,EAAiB,GACnC,aAAgB,WACd,IAAIkhD,EAAiB,CAAC,EACtBP,EAAWnlH,SAAQ,SAAUokG,GAC3B,IAAIuhB,EAAoBvhB,EAAO3P,UAC7BA,OAAkC,IAAtBkxB,EAA+B,WAAaA,EACtDlxB,IACFixB,EAAejxB,GAAaixB,EAAejxB,IAAc,GACzDixB,EAAejxB,GAAWt8F,KAAKisG,GAEnC,IAEAh1F,OAAOopB,KAAKukE,GAAY/8F,SAAQ,SAAUy0F,GACxCixB,EAAejxB,GAAaixB,EAAejxB,IAAc,EAC3D,IACAgxB,EAAcC,EAChB,GAAG,CAACP,IAEJ,IAWIS,EAAW,UAAa,GAW5B,GAVA,aAAgB,WACVx2G,OAAOopB,KAAKukE,GAAYtkG,OAAS,EACnCmtH,EAASvmH,SAAU,EACVumH,EAASvmH,UAElB6lH,SAA4DA,IAC5DU,EAASvmH,SAAU,EAEvB,GAAG,CAAC09F,KAECn8F,EACH,OAAO,KAET,IAAIilH,EAAgBz2G,OAAOopB,KAAKukE,GAChC,OAAoB,KAAAxc,cAA2B,gBAAoB,WAAgB,KAAMslC,EAAcj9F,KAAI,SAAU6rE,GACnH,IACIj8D,EADsBukE,EAAWtI,GACN7rE,KAAI,SAAUw7E,GAC3C,MAAO,CACLA,OAAQA,EACR3rE,IAAK2rE,EAAO3rE,IAEhB,IACIqtF,EAAoC,mBAAXp9B,EAAwBA,EAAO+L,GAAa/L,EACzE,OAAoB,gBAAoB,OAAe,OAAS,CAC9DjwD,IAAKg8D,EACLjpF,UAAW,IAAW6rD,EAAW,GAAGlsD,OAAOksD,EAAW,KAAKlsD,OAAOspF,GAAYjpF,aAA6C,EAASA,EAAUipF,IAC9I/wF,MAAOA,aAAqC,EAASA,EAAM+wF,GAC3Dj8D,KAAMA,EACN4uC,cAAc,GACb0+C,EAAiB,CAClBZ,aAAc,YA1CO,SAA4BzwB,GACnDgxB,GAAc,SAAUM,GACtB,IAAI53G,GAAQ,QAAc,CAAC,EAAG43G,GAK9B,OAJW53G,EAAMsmF,IAAc,IACrBh8F,eACD0V,EAAMsmF,GAERtmF,CACT,GACF,CAkCM63G,CAAmBvxB,EACrB,KACE,SAAUhrC,EAAM6e,GAClB,IAAI87B,EAAS36C,EAAK26C,OAChBz8B,EAAkBle,EAAKj+C,UACvBu/D,EAActhB,EAAK/lD,MACjB+0B,EAAM2rE,EAAO3rE,IACfisF,EAAQtgB,EAAOsgB,MACbuB,EAAkB7hB,EAAO54F,UAC3B06G,EAAc9hB,EAAO1gG,MACvB,OAAoB,gBAAoByiH,IAAQ,OAAS,CAAC,EAAG/hB,EAAQ,CACnEp6C,IAAKse,EACLjR,UAAWA,EACX7rD,UAAW,IAAWm8D,EAAiBs+C,GACvCviH,OAAO,SAAc,QAAc,CAAC,EAAGqnE,GAAcm7C,GACrDxB,MAAOA,EACPjsF,IAAKA,EACL2rF,SAAU3rF,EACVgsF,cAAeA,IAEnB,GACF,KAAK7jH,EACP,IAIA,UC9JI,GAAY,CAAC,eAAgB,SAAU,YAAa,WAAY,YAAa,QAAS,gBAGtFwlH,GAAsB,WACxB,OAAO7jH,SAASgiD,IAClB,EACI8hE,GAAY,EAkBD,SAASC,KACtB,IAAIC,EAAa/tH,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAClFguH,EAAwBD,EAAW/nC,aACrCA,OAAyC,IAA1BgoC,EAAmCJ,GAAsBI,EACxE99B,EAAS69B,EAAW79B,OACpBrxB,EAAYkvD,EAAWlvD,UACvB0hD,EAAWwN,EAAWxN,SACtBvtG,EAAY+6G,EAAW/6G,UACvB9H,EAAQ6iH,EAAW7iH,MACnBwhH,EAAeqB,EAAWrB,aAC1BuB,GAAc,QAAyBF,EAAY,IACjDniD,EAAkB,aACpBC,GAAmB,QAAeD,EAAiB,GACnDxjE,EAAYyjE,EAAiB,GAC7BqiD,EAAeriD,EAAiB,GAC9BsiD,EAAmB,WACnBC,EAA6B,gBAAoB,GAAe,CAClEhmH,UAAWA,EACXopD,IAAK28D,EACLtvD,UAAWA,EACXqxB,OAAQA,EACRqwB,SAAUA,EACVvtG,UAAWA,EACX9H,MAAOA,EACPwhH,aAAcA,IAEZ3gD,EAAmB,WAAe,IACpCC,GAAmB,QAAeD,EAAkB,GACpDsiD,EAAYriD,EAAiB,GAC7BsiD,EAAetiD,EAAiB,GAE9BuiD,EAAM,WAAc,WACtB,MAAO,CACLr1D,KAAM,SAAc0yC,GAClB,IAAIt0C,EAnDZ,WAEE,IADA,IAAI3hD,EAAQ,CAAC,EACJgzC,EAAO3oD,UAAUC,OAAQuuH,EAAU,IAAI3uF,MAAM8oB,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAClF4lE,EAAQ5lE,GAAQ5oD,UAAU4oD,GAY5B,OAVA4lE,EAAQhnH,SAAQ,SAAU2rB,GACpBA,GACFvc,OAAOopB,KAAK7M,GAAK3rB,SAAQ,SAAUy4B,GACjC,IAAIx7B,EAAM0uB,EAAI8M,QACFpK,IAARpxB,IACFkR,EAAMsqB,GAAOx7B,EAEjB,GAEJ,IACOkR,CACT,CAmC2B84G,CAAYR,EAAariB,GACnB,OAArBt0C,EAAar3B,UAAqCpK,IAArByhC,EAAar3B,MAC5Cq3B,EAAar3B,IAAM,mBAAmBttB,OAAOk7G,IAC7CA,IAAa,GAEfS,GAAa,SAAUtnC,GACrB,MAAO,GAAGr0E,QAAO,OAAmBq0E,GAAQ,CAAC,CAC3Cj/E,KAAM,OACN6jG,OAAQt0C,IAEZ,GACF,EACA01D,MAAO,SAAe/sF,GACpBquF,GAAa,SAAUtnC,GACrB,MAAO,GAAGr0E,QAAO,OAAmBq0E,GAAQ,CAAC,CAC3Cj/E,KAAM,QACNk4B,IAAKA,IAET,GACF,EACAz+B,QAAS,WACP8sH,GAAa,SAAUtnC,GACrB,MAAO,GAAGr0E,QAAO,OAAmBq0E,GAAQ,CAAC,CAC3Cj/E,KAAM,YAEV,GACF,EAEJ,GAAG,IAqCH,OAjCA,aAAgB,WACdmmH,EAAaloC,IACf,IAEA,aAAgB,WAEVmoC,EAAiBtnH,SAAWwnH,EAAUpuH,SACxCouH,EAAU7mH,SAAQ,SAAUknH,GAC1B,OAAQA,EAAK3mH,MACX,IAAK,OACHomH,EAAiBtnH,QAAQqyD,KAAKw1D,EAAK9iB,QACnC,MACF,IAAK,QACHuiB,EAAiBtnH,QAAQmmH,MAAM0B,EAAKzuF,KACpC,MACF,IAAK,UACHkuF,EAAiBtnH,QAAQrF,UAG/B,IAMA8sH,GAAa,SAAUK,GACrB,OAAOA,EAASh/G,QAAO,SAAU++G,GAC/B,OAAQL,EAAU9pH,SAASmqH,EAC7B,GACF,IAEJ,GAAG,CAACL,IAEG,CAACE,EAAKH,EACf,CC3HA,IAAIQ,GAAkB,SAAyBplD,GAC7C,IAAIqlD,EAAcngB,EACdjlC,EAAeD,EAAMC,aACvB2L,EAAU5L,EAAM4L,QAChBvL,EAAYL,EAAMK,UAClBiM,EAAYtM,EAAMsM,UAClBygC,EAAe/sC,EAAM+sC,aACrB1+B,EAAarO,EAAMqO,WACnBi3C,EAAetlD,EAAMslD,aACrB7e,EAAYzmC,EAAMymC,UAClB/1B,EAAa1Q,EAAM0Q,WACnB+zB,EAAsBzkC,EAAMykC,oBAC5Bt0B,EAAqBnQ,EAAMmQ,mBAC3B5D,EAAWvM,EAAMuM,SACjBiE,EAAYxQ,EAAMwQ,UAClBM,EAAiB9Q,EAAM8Q,eACvBy0B,EAAcvlC,EAAMulC,YACpBggB,EAAiBvlD,EAAMulD,eACvBC,EAAYxlD,EAAMwlD,UAChBC,EAAY,GAAGt8G,OAAO82D,EAAc,WACpCylD,EAAgB,IAAI,MAAU,gBAAiB,CACjD,KAAM,CACJ11C,QAAS,EACTtmE,UAAW,oBACXa,QAAS,GAEX,OAAQ,CACNylE,QAASQ,EACT9mE,UAAW,gBACXa,QAAS,KAGTo7G,EAAiB,IAAI,MAAU,iBAAkB,CACnD,KAAM,CACJC,UAAW5lD,EAAMp8D,OACjBosE,QAASQ,EACTjmE,QAAS,GAEX,OAAQ,CACNq7G,UAAW,EACX51C,QAAS,EACTzlE,QAAS,KAGTs7G,GAAeR,EAAe,CAChCr1C,QAASQ,EACT35D,UAAW,WACV,OAAgBwuG,EAAc,GAAGl8G,OAAO82D,EAAc,sBAAsB92D,OAAOyiE,GAAU,CAC9F+gC,cAAe,cACfliC,gBAAiB8B,EACjB71D,SAAUg6D,KACR,OAAgB20C,EAAc,GAAGl8G,OAAOs8G,EAAW,YAAa,CAClExkE,QAAS,eACT+uB,QAASu1C,EACTplD,WAAYqlD,EACZ/iD,aAAcqO,EACdzQ,UAAWA,EACXlf,cAAe,SACb,OAAgBkkE,EAAc,GAAGl8G,OAAO82D,EAAc,eAAe92D,OAAOyiE,GAAU,CACxFjiC,MAAOojE,KACL,OAAgBsY,EAAc,GAAGl8G,OAAO82D,EAAc,aAAa92D,OAAOyiE,GAAU,CACtFjiC,MAAO0kC,KACL,OAAgBg3C,EAAc,GAAGl8G,OAAO82D,EAAc,eAAe92D,OAAOyiE,GAAU,CACxFjiC,MAAO27E,KACL,OAAgBD,EAAc,GAAGl8G,OAAO82D,EAAc,YAAY92D,OAAOyiE,EAAS,aAAaziE,OAAO82D,EAAc,eAAe92D,OAAOyiE,GAAU,CACtJjiC,MAAO88D,IACL4e,GACJ,MAAO,EACP,OAAgB,CAAC,EAAGplD,EAAc7yD,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,GAAG,SAAe80B,KAAUklC,EAAiB,CAC1Gv7D,MAAO2iC,EACPvrB,SAAU,QACVl8C,IAAK0nE,EACL5oE,MAAO,OACPw9C,cAAe,OACf92C,OAAQk7F,IACP,OAAgBL,EAAgB,GAAG/7F,OAAO82D,EAAc,YAAa,CACtEujC,kBAAmB,cACjB,OAAgB0B,EAAgB,aAAa/7F,OAAO82D,EAAc,8BAA8B92D,OAAO82D,EAAc,0BAA2B,CAClJ2jC,cAAe8hB,EACfniB,kBAAmBpzB,EACnBuzB,mBAAoB,SACpBc,wBAAyBC,KACvB,OAAgBS,EAAgB,aAAa/7F,OAAO82D,EAAc,mBAAmB92D,OAAO82D,EAAc,qCAAqC92D,OAAO82D,EAAc,kBAAkB92D,OAAO82D,EAAc,iCAAkC,CAC/OyjC,mBAAoB,aAClB,OAAgBwB,EAAgB,GAAG/7F,OAAO82D,EAAc,kBAAmB,CAC7E2jC,cAAe+hB,EACfpiB,kBAAmBpzB,EACnBuzB,mBAAoB,SACpBc,wBAAyBC,KACvB,OAAgBS,EAAgB,GAAG/7F,OAAO82D,EAAc,kBAAkB92D,OAAO82D,EAAc,yBAA0B,CAC3HyjC,mBAAoB,aAClB,OAAgBwB,EAAgB,QAAS,CAC3Cx0E,UAAW,MACXo1F,KAAM,CACJp1F,UAAW,SAEXw0E,MACJ,OAAgB,CAAC,EAAGjlC,GAAc,OAAgB,CAAC,EAAGwlD,EAAWr4G,OAAO89B,OAAO,CAAC,EAAG26E,MACnF,OAAgB,CAAC,EAAG,GAAG18G,OAAO82D,EAAc,sBAAuB7yD,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAG26E,GAAc,CAC/G71C,QAAS,EACTn5D,UAAW,WAEf,EAEA,IAAe,EAAA4pD,GAAA,GAAsB,WAAW,SAAUT,GAExD,IAAI+lD,GAAgB,SAAW/lD,EAAO,CACpCp8D,OAAQ,MAEV,MAAO,CAACwhH,GAAgBW,GAC1B,IAAG,SAAU/lD,GACX,MAAO,CACLulC,YAAavlC,EAAMimC,gBAAkB,GACrCuf,UAAWxlD,EAAMgmD,gBACjBT,eAAgB,GAAGp8G,QAAQ62D,EAAM6Q,gBAAkB7Q,EAAMtpD,SAAWspD,EAAMrpD,YAAc,EAAG,OAAOxN,OAAO62D,EAAMylC,UAAW,MAE9H,GAAG,CACDwgB,YAAY,ICxHV,GAAgC,SAAUvyG,EAAG5Z,GAC/C,IAAIH,EAAI,CAAC,EACT,IAAK,IAAIqa,KAAKN,EAAOtG,OAAOtX,UAAUqX,eAAe3V,KAAKkc,EAAGM,IAAMla,EAAEgP,QAAQkL,GAAK,IAAGra,EAAEqa,GAAKN,EAAEM,IAC9F,GAAS,MAALN,GAAqD,mBAAjCtG,OAAO+wB,sBAA2C,KAAIrnC,EAAI,EAAb,IAAgBkd,EAAI5G,OAAO+wB,sBAAsBzqB,GAAI5c,EAAIkd,EAAEvd,OAAQK,IAClIgD,EAAEgP,QAAQkL,EAAEld,IAAM,GAAKsW,OAAOtX,UAAUgsD,qBAAqBtqD,KAAKkc,EAAGM,EAAEld,MAAK6C,EAAEqa,EAAEld,IAAM4c,EAAEM,EAAEld,IADuB,CAGvH,OAAO6C,CACT,EAWWusH,GAAW,CACpBj7D,KAAmB,gBAAoB,GAAkB,MACzDs+C,QAAsB,gBAAoB,GAAmB,MAC7DvmD,MAAoB,gBAAoB,GAAmB,MAC3DmjE,QAAsB,gBAAoB,GAAyB,MACnE99C,QAAsB,gBAAoB,GAAiB,OAElD+9C,GAAc,SAAqB3+D,GAC5C,IAAI4N,EAAY5N,EAAK4N,UACnB92D,EAAOkpD,EAAKlpD,KACZu+D,EAAOrV,EAAKqV,KACZr3D,EAAWgiD,EAAKhiD,SAClB,OAAoB,gBAAoB,MAAO,CAC7C+D,UAAW,IAAW,GAAGL,OAAOksD,EAAW,mBAAoB,GAAGlsD,OAAOksD,EAAW,KAAKlsD,OAAO5K,KAC/Fu+D,GAAQopD,GAAS3nH,GAAoB,gBAAoB,OAAQ,KAAMkH,GAC5E,EA2BA,GAzBgB,SAAmBwH,GACjC,IAAIo5G,EAAkBp5G,EAAMooD,UAC1B7rD,EAAYyD,EAAMzD,UAClBjL,EAAO0O,EAAM1O,KACbu+D,EAAO7vD,EAAM6vD,KACb4P,EAAUz/D,EAAMy/D,QAChBoN,EAAY,GAAO7sE,EAAO,CAAC,YAAa,YAAa,OAAQ,OAAQ,YAErE84D,EADsB,aAAiB,OACNA,aAC/B1Q,EAAYgxD,GAAmBtgD,EAAa,WAC5CI,EAAY,GAAS9Q,GAEvB+Q,GADa,OAAeD,EAAW,GACnB,GACtB,OAAoB,gBAAoBg+C,GAAQ/2G,OAAO89B,OAAO,CAAC,EAAG4uC,EAAW,CAC3EzkB,UAAWA,EACX7rD,UAAW,IAAWA,EAAW48D,EAAQ,GAAGj9D,OAAOksD,EAAW,uBAC9D+sD,SAAU,OACVzmH,SAAU,KACV+wE,QAAsB,gBAAoB05C,GAAa,CACrD/wD,UAAWA,EACX92D,KAAMA,EACNu+D,KAAMA,GACL4P,KAEP,ECtDO,SAAS45C,GAAcC,GAC5B,IAAIC,EACAC,EAAe,IAAIjqF,SAAQ,SAAUS,GACvCupF,EAAUD,GAAO,WACftpF,GAAQ,EACV,GACF,IACIz0B,EAAS,WACXg+G,SAAkDA,GACpD,EAKA,OAJAh+G,EAAO20B,KAAO,SAAU7V,EAAQ+6B,GAC9B,OAAOokE,EAAatpF,KAAK7V,EAAQ+6B,EACnC,EACA75C,EAAOk+G,QAAUD,EACVj+G,CACT,CCnBA,IAAI,GAAgC,SAAUkL,EAAG5Z,GAC/C,IAAIH,EAAI,CAAC,EACT,IAAK,IAAIqa,KAAKN,EAAOtG,OAAOtX,UAAUqX,eAAe3V,KAAKkc,EAAGM,IAAMla,EAAEgP,QAAQkL,GAAK,IAAGra,EAAEqa,GAAKN,EAAEM,IAC9F,GAAS,MAALN,GAAqD,mBAAjCtG,OAAO+wB,sBAA2C,KAAIrnC,EAAI,EAAb,IAAgBkd,EAAI5G,OAAO+wB,sBAAsBzqB,GAAI5c,EAAIkd,EAAEvd,OAAQK,IAClIgD,EAAEgP,QAAQkL,EAAEld,IAAM,GAAKsW,OAAOtX,UAAUgsD,qBAAqBtqD,KAAKkc,EAAGM,EAAEld,MAAK6C,EAAEqa,EAAEld,IAAM4c,EAAEM,EAAEld,IADuB,CAGvH,OAAO6C,CACT,EAYIgtH,GAAsB,cAAiB,SAAU15G,EAAO+6C,GAC1D,IAAInjD,EAAMoI,EAAMpI,IACdwhH,EAAkBp5G,EAAMooD,UACxBuxD,EAAqB35G,EAAMuvE,aAC3Bu6B,EAAW9pG,EAAM8pG,SACjBoL,EAAkBl1G,EAAMtR,SACxBA,OAA+B,IAApBwmH,EAPQ,EAOwCA,EAC3D0E,EAAM55G,EAAM45G,IACZlgC,EAAiB15E,EAAM05E,eACvBu8B,EAAej2G,EAAMi2G,aACnBj6C,EAAoB,aAAiB,OACvClD,EAAekD,EAAkBlD,aACjCylB,EAAoBviB,EAAkBuiB,kBACtC2lB,EAAUloC,EAAkBkoC,QAC1B97C,EAAYgxD,GAAmBtgD,EAAa,WAC5CI,EAAY,GAAS9Q,GAEvB+Q,GADa,OAAeD,EAAW,GACnB,GAiBlB2gD,EAA+B,gBAAoB,OAAQ,CAC7Dt9G,UAAW,GAAGL,OAAOksD,EAAW,aAClB,gBAAoB,GAAe,CACjD7rD,UAAW,GAAGL,OAAOksD,EAAW,kBAG9B0xD,EAAqB,GAAkB,CACvC1xD,UAAWA,EACX3zD,MAvBW,WACb,MAAO,CACLkD,KAAM,MACN8E,UAAW,mBACX7E,IAAKA,QAAiCA,EAzBvB,EA2BnB,EAkBI2E,UAjBe,WACjB,OAAO,IAAW48D,GAAQ,OAAgB,CAAC,EAAG,GAAGj9D,OAAOksD,EAAW,QAASwxD,GAC9E,EAgBIngC,OAdwB,WAC1B,ODpDG,SAAmBrxB,EAAWsxB,GACnC,MAAO,CACLthB,WAAYshB,QAAuDA,EAAiB,GAAGx9E,OAAOksD,EAAW,YAE7G,CCgDW,CAAUA,EAAWsxB,EAC9B,EAaI07B,UAAU,EACVE,UAAWuE,EACXnrH,SAAUA,EACV6gF,aAAc,WACZ,OAAQoqC,aAA+D,EAASA,OAA0Bp7B,aAA6D,EAASA,MAAwBjrF,SAASgiD,IACnN,EACAw0D,SAAUA,EACVmM,aAAcA,IAEhB8D,GAAsB,OAAeD,EAAoB,GACzDhC,EAAMiC,EAAoB,GAC1BvhD,EAASuhD,EAAoB,GAS/B,OAPA,sBAA0Bh/D,GAAK,WAC7B,OAAO56C,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAG65E,GAAM,CAC3C1vD,UAAWA,EACX+Q,OAAQA,EACR+qC,QAASA,GAEb,IACO1rC,CACT,IAIIwhD,GAAW,EACR,SAASC,GAAmBC,GACjC,IAAIC,EAAY,SAAa,MAEzBC,EAAU,WAAc,WAG1B,IAAI7D,EAAQ,SAAe/sF,GACzB,IAAI1/B,EACyB,QAA5BA,EAAKqwH,EAAU/pH,eAA4B,IAAPtG,GAAyBA,EAAGysH,MAAM/sF,EACzE,EAEIi5B,EAAO,SAAc0yC,GACvB,IAAKglB,EAAU/pH,QAAS,CAEtB,IAAIiqH,EAAa,WAAuB,EAExC,OADAA,EAAWnqF,KAAO,WAAa,EACxBmqF,CACT,CACA,IAAIC,EAAqBH,EAAU/pH,QACjCmqH,EAAaD,EAAmB73D,KAChC2F,EAAYkyD,EAAmBlyD,UAC/B+Q,EAASmhD,EAAmBnhD,OAC5B+qC,EAAUoW,EAAmBpW,QAC3B0R,EAAkB,GAAG15G,OAAOksD,EAAW,WACvCqX,EAAU01B,EAAO11B,QACnB5P,EAAOslC,EAAOtlC,KACdv+D,EAAO6jG,EAAO7jG,KACdk4B,EAAM2rE,EAAO3rE,IACbjtB,EAAY44F,EAAO54F,UACnB9H,EAAQ0gG,EAAO1gG,MACf+lH,EAAWrlB,EAAO6N,QAClByX,EAAa,GAAOtlB,EAAQ,CAAC,UAAW,OAAQ,OAAQ,MAAO,YAAa,QAAS,YACnFulB,EAAYlxF,EAKhB,OAJIkxF,UAEFA,EAAY,gBAAgBx+G,OAD5B89G,IAAY,IAGPX,IAAc,SAAUrpF,GAiB7B,OAhBAuqF,EAAWp6G,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGw8E,GAAa,CACtDjxF,IAAKkxF,EACLj7C,QAAsB,gBAAoB05C,GAAa,CACrD/wD,UAAWA,EACX92D,KAAMA,EACNu+D,KAAMA,GACL4P,GACH+lB,UAAW,MACXjpF,UAAW,IAAWjL,GAAQ,GAAG4K,OAAO05G,EAAiB,KAAK15G,OAAO5K,GAAO6nE,EAAQ58D,EAAW2nG,aAAyC,EAASA,EAAQ3nG,WACzJ9H,MAAO0L,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGimE,aAAyC,EAASA,EAAQzvG,OAAQA,GACzGuuG,QAAS,WACPwX,SAAoDA,IACpDxqF,GACF,KAGK,WACLumF,EAAMmE,EACR,CACF,GACF,EAUIx7G,EAAQ,CACVujD,KAAMA,EACN13D,QAVY,SAAiBy+B,GAC7B,IAAI1/B,OACQs1B,IAARoK,EACF+sF,EAAM/sF,GAEuB,QAA5B1/B,EAAKqwH,EAAU/pH,eAA4B,IAAPtG,GAAyBA,EAAGiB,SAErE,GAmCA,MA9BW,CAAC,OAAQ,UAAW,UAAW,QAAS,WAC9CgG,SAAQ,SAAUO,GA2BrB4N,EAAM5N,GA1BS,SAAkBqpH,EAAcjsH,EAAUs0G,GACvD,IAAI7N,EASAylB,EACAC,EARF1lB,EADEwlB,GAAwC,iBAAjBA,GAA6B,YAAaA,EAC1DA,EAEA,CACPl7C,QAASk7C,GAMW,mBAAbjsH,EACTmsH,EAAgBnsH,GAEhBksH,EAAiBlsH,EACjBmsH,EAAgB7X,GAElB,IAAIniD,EAAe1gD,OAAO89B,OAAO99B,OAAO89B,OAAO,CAC7C+kE,QAAS6X,EACTnsH,SAAUksH,GACTzlB,GAAS,CACV7jG,KAAMA,IAER,OAAOmxD,EAAK5B,EACd,CAEF,IACO3hD,CACT,GAAG,IAEH,MAAO,CAACk7G,EAAsB,gBAAoBV,GAAQv5G,OAAO89B,OAAO,CACtEzU,IAAK,kBACJ0wF,EAAe,CAChBn/D,IAAKo/D,KAET,CChMA,IAAIjW,GAAU,KACV4W,GAAM,SAAa9xH,GACrB,OAAOA,GACT,EACI4uH,GAAY,GACZmD,GAAsB,CAAC,EAoB3B,IAAIC,GAA4B,cAAiB,SAAU3rF,EAAG0rB,GAC5D,IAAIkgE,EAA0B,WAC5B,IAAIC,EArBR,WACE,IAAIC,EAAuBJ,GACzBnN,EAAkBuN,EAAqB/yD,UACvCgzD,EAAqBD,EAAqB5rC,aAC1C7gF,EAAWysH,EAAqBzsH,SAChCkrH,EAAMuB,EAAqBvB,IAC3B9P,EAAWqR,EAAqBrR,SAChClyG,EAAMujH,EAAqBvjH,IAG7B,MAAO,CACLwwD,UAHoBwlD,QAAyDA,EAAkBgC,KAAe92C,aAAa,WAI3HnnE,WAHqBypH,aAA+D,EAASA,MAAyB9nH,SAASgiD,KAI/H5mD,SAAUA,EACVkrH,IAAKA,EACL9P,SAAUA,EACVlyG,IAAKA,EAET,CAG4ByjH,GACtBjzD,EAAY8yD,EAAkB9yD,UAC9Bz2D,EAAYupH,EAAkBvpH,UAKhC,MAAO,CACLy2D,UAAWA,EACXmnB,aAAc,WACZ,OAAO59E,CACT,EACAm4G,SATWoR,EAAkBpR,SAU7Bp7G,SATWwsH,EAAkBxsH,SAU7BkrH,IATMsB,EAAkBtB,IAUxBhiH,IATMsjH,EAAkBtjH,IAW5B,EACIu9D,EAAkB,WAAe8lD,GACnC7lD,GAAmB,OAAeD,EAAiB,GACnD+kD,EAAgB9kD,EAAiB,GACjCkmD,EAAmBlmD,EAAiB,GAClCmmD,EAAsBtB,GAAmBC,GAC3CsB,GAAuB,OAAeD,EAAqB,GAC3DzD,EAAM0D,EAAqB,GAC3BhjD,EAASgjD,EAAqB,GAC5B1pF,EAAS89E,KACTlU,EAAgB5pE,EAAOi+E,mBACvB0L,EAAoB3pF,EAAOg+E,mBAC3B7Z,EAAQnkE,EAAOk+E,WACf0L,EAAO,WACTJ,EAAiBL,EACnB,EAeA,OAdA,YAAgBS,EAAM,IACtB,sBAA0B3gE,GAAK,WAC7B,IAAI4gE,EAAWx7G,OAAO89B,OAAO,CAAC,EAAG65E,GAOjC,OANA33G,OAAOopB,KAAKoyF,GAAU5qH,SAAQ,SAAUuD,GACtCqnH,EAASrnH,GAAU,WAEjB,OADAonH,IACO5D,EAAIxjH,GAAQtK,MAAM8tH,EAAKvuH,UAChC,CACF,IACO,CACLoyH,SAAUA,EACVD,KAAMA,EAEV,IACoB,gBAAoB,GAAgB,CACtDtzD,UAAWszC,EACX+D,cAAegc,EACfxlB,MAAOA,GACNz9B,EACL,IACA,SAASojD,KACP,IAAK1X,GAAS,CACZ,IAAI2X,EAAiBvoH,SAASwoH,yBAC1BC,EAAa,CACfC,SAAUH,GAqBZ,OAnBA3X,GAAU6X,OAEVjB,IAAI,WACF,GAAqB,gBAAoBE,GAAc,CACrDjgE,IAAK,SAAa1R,GAChB,IAAImR,EAAOnR,GAAQ,CAAC,EAClBsyE,EAAWnhE,EAAKmhE,SAChBD,EAAOlhE,EAAKkhE,KAEdnsF,QAAQS,UAAUE,MAAK,YAChB6rF,EAAWJ,UAAYA,IAC1BI,EAAWJ,SAAWA,EACtBI,EAAWL,KAAOA,EAClBE,KAEJ,GACF,IACEC,EACN,GAEF,CAEK3X,GAAQyX,WAIb/D,GAAU7mH,SAAQ,SAAUknH,GAC1B,IAAI3mH,EAAO2mH,EAAK3mH,KAIhB,IAHY2mH,EAAKgE,QAIf,OAAQ3qH,GACN,IAAK,OAEDwpH,IAAI,WACF,IAAIvB,EAAUrV,GAAQyX,SAASl5D,KAAKtiD,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAG88E,IAAsB9C,EAAK9iB,SAC/FokB,SAAkDA,EAAQrpF,KAAK+nF,EAAKjoF,SACpEioF,EAAKiE,WAAW3C,EAClB,IACA,MAEJ,IAAK,UACHuB,IAAI,WACF5W,UAAkDA,GAAQyX,SAAS5wH,QAAQktH,EAAKzuF,IAClF,IACA,MAEF,QAEIsxF,IAAI,WACF,IAAIqB,EACA5C,GAAW4C,EAAoBjY,GAAQyX,UAAUrqH,GAAMtH,MAAMmyH,GAAmB,OAAmBlE,EAAK5uH,OAC5GkwH,SAAkDA,EAAQrpF,KAAK+nF,EAAKjoF,SACpEioF,EAAKiE,WAAW3C,EAClB,IAIV,IAEA3B,GAAY,GACd,CAyEA,IACIwE,GAAoB,CACtB35D,KA/DF,SAAc0yC,GACZ,IAAI55F,EAAS89G,IAAc,SAAUrpF,GACnC,IAAIupF,EACAtB,EAAO,CACT3mH,KAAM,OACN6jG,OAAQA,EACRnlE,QAASA,EACTksF,WAAY,SAAoBlgH,GAC9Bu9G,EAAUv9G,CACZ,GAGF,OADA47G,GAAU1uH,KAAK+uH,GACR,WACDsB,EACFuB,IAAI,WACFvB,GACF,IAEAtB,EAAKgE,SAAU,CAEnB,CACF,IAEA,OADAL,KACOrgH,CACT,EAwCExQ,QAVF,SAAiBy+B,GACfouF,GAAU1uH,KAAK,CACboI,KAAM,UACNk4B,IAAKA,IAEPoyF,IACF,EAKEzmB,OAzEF,SAAgCA,GAC9B4lB,GAAsB56G,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAG88E,IAAsB5lB,GAE5E2lB,IAAI,WACF,IAAIhxH,EACsE,QAAzEA,EAAKo6G,cAAyC,EAASA,GAAQwX,YAAyB,IAAP5xH,GAAyBA,EAAGS,KAAK25G,GACrH,GACF,EAmEEmY,WDjCa,SAAoBnC,GACjC,OAAOD,GAAmBC,EAC5B,ECgCEhe,uCAAwC,IAEtCogB,GAAgBF,GARN,CAAC,UAAW,OAAQ,UAAW,QAAS,WAS9CrrH,SAAQ,SAAUO,GACxBgrH,GAAchrH,GAAQ,WACpB,IAAK,IAAI4gD,EAAO3oD,UAAUC,OAAQH,EAAO,IAAI+/B,MAAM8oB,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E9oD,EAAK8oD,GAAQ5oD,UAAU4oD,GAEzB,OAlDJ,SAAkB7gD,EAAMjI,GAKtB,IAAIkS,EAAS89G,IAAc,SAAUrpF,GACnC,IAAIupF,EACAtB,EAAO,CACT3mH,KAAMA,EACNjI,KAAMA,EACN2mC,QAASA,EACTksF,WAAY,SAAoBlgH,GAC9Bu9G,EAAUv9G,CACZ,GAGF,OADA47G,GAAU1uH,KAAK+uH,GACR,WACDsB,EACFuB,IAAI,WACFvB,GACF,IAEAtB,EAAKgE,SAAU,CAEnB,CACF,IAEA,OADAL,KACOrgH,CACT,CAsBWghH,CAASjrH,EAAMjI,EACxB,CACF,IAqBA,UCpPA,GArBc,SAAiB2W,GAC7B,IAAIgoD,EAAaukD,EACbnkD,EAAYpoD,EAAMooD,UACpB7rD,EAAYyD,EAAMzD,UAClB9H,EAAQuL,EAAMvL,MACdw4B,EAAOjtB,EAAMitB,KACb7+B,EAAQ4R,EAAM5R,MACZ+tE,EAAU,KAAYnU,EAAc,CAAC,GAAG,OAAgBA,EAAa,GAAG9rD,OAAOksD,EAAW,OAAiB,UAATn7B,IAAmB,OAAgB+6B,EAAa,GAAG9rD,OAAOksD,EAAW,OAAiB,UAATn7B,GAAmB+6B,IAClMw0D,EAAW,KAAYjQ,EAAe,CAAC,GAAG,OAAgBA,EAAc,GAAGrwG,OAAOksD,EAAW,WAAsB,WAAVh6D,IAAqB,OAAgBm+G,EAAc,GAAGrwG,OAAOksD,EAAW,WAAsB,WAAVh6D,IAAqB,OAAgBm+G,EAAc,GAAGrwG,OAAOksD,EAAW,UAAqB,UAAVh6D,GAAoBm+G,IACpSkQ,EAAY,WAAc,WAC5B,MAAuB,iBAATxvF,EAAoB,CAChCv2B,MAAOu2B,EACPt2B,OAAQs2B,EACRvjB,WAAY,GAAGxN,OAAO+wB,EAAM,OAC1B,CAAC,CACP,GAAG,CAACA,IACJ,OAAoB,gBAAoB,OAAQ,CAC9C1wB,UAAW,IAAW6rD,EAAW+T,EAASqgD,EAAUjgH,GACpD9H,MAAO0L,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGw+E,GAAYhoH,IAEvD,ECpBIioH,GAAqB,IAAI,MAAU,uBAAwB,CAC7D,KAAM,CACJC,mBAAoB,YAEtB,OAAQ,CACNA,mBAAoB,WAGpBC,GAA+B,SAAsC3vF,GACvE,MAAO,CACLt2B,OAAQs2B,EACRvjB,WAAY,GAAGxN,OAAO+wB,EAAM,MAEhC,EACI4vF,GAA+B,SAAsC5vF,GACvE,OAAO9sB,OAAO89B,OAAO,CACnBvnC,MAAOu2B,GACN2vF,GAA6B3vF,GAClC,EAWI6vF,GAA8B,SAAqC7vF,GACrE,OAAO9sB,OAAO89B,OAAO,CACnBvnC,MAAc,EAAPu2B,EACP8yC,SAAiB,EAAP9yC,GACT2vF,GAA6B3vF,GAClC,EA+BI8vF,GAA8B,SAAqC9vF,GACrE,OAAO9sB,OAAO89B,OAAO,CACnBvnC,MAAOu2B,GACN2vF,GAA6B3vF,GAClC,EAyBI+vF,GAAgC,SAAuCjqD,EAAO9lC,EAAMgwF,GACtF,IAAIj0B,EACAk0B,EAAoBnqD,EAAMmqD,kBAC9B,OAAOl0B,EAAQ,CAAC,GAAG,OAAgBA,EAAO,GAAG9sF,OAAO+gH,GAAW/gH,OAAOghH,EAAmB,WAAY,CACnGxmH,MAAOu2B,EACP8yC,SAAU9yC,EACVuoC,aAAc,SACZ,OAAgBwzB,EAAO,GAAG9sF,OAAO+gH,GAAW/gH,OAAOghH,EAAmB,UAAW,CACnF1nD,aAAcvoC,IACZ+7D,CACN,EACIm0B,GAA+B,SAAsClwF,GACvE,OAAO9sB,OAAO89B,OAAO,CACnBvnC,MAAc,EAAPu2B,EACP8yC,SAAiB,EAAP9yC,GACT2vF,GAA6B3vF,GAClC,EAkBI,GAAe,SAAsB8lC,GACvC,IAAIg0C,EAAUkB,EAAW3I,EAAWgJ,EAAkBnL,EAClDnqC,EAAeD,EAAMC,aACvBoqD,EAAoBrqD,EAAMqqD,kBAC1BC,EAAmBtqD,EAAMsqD,iBACzBC,EAAuBvqD,EAAMuqD,qBAC7BJ,EAAoBnqD,EAAMmqD,kBAC1BK,EAAmBxqD,EAAMwqD,iBACzBC,EAAmBzqD,EAAMyqD,iBACzBx9C,EAAgBjN,EAAMiN,cACtB4D,EAAkB7Q,EAAM6Q,gBACxBN,EAAkBvQ,EAAMuQ,gBACxBm6C,EAAoB1qD,EAAM0qD,kBAC1B16C,EAAUhQ,EAAMgQ,QAChB26C,EAAW3qD,EAAM2qD,SACjBloD,EAAezC,EAAMyC,aACrBmoD,EAAc5qD,EAAM4qD,YACpBC,EAAc7qD,EAAM6qD,YACpBC,EAAoB9qD,EAAM8qD,kBAC1BC,EAAkB/qD,EAAM+qD,gBACxBC,EAAqBhrD,EAAMgrD,mBAC7B,OAAO5gB,EAAQ,CAAC,GAAG,OAAgBA,EAAO,GAAGjhG,OAAO82D,IAAgBssC,EAAY,CAC9EtrD,QAAS,QACTt9C,MAAO,SACN,OAAgB4oG,EAAW,GAAGpjG,OAAO82D,EAAc,YAAa+zC,EAAW,CAC5E/yD,QAAS,aACTksB,iBAAkB6C,EAClB28B,cAAe,QACd,OAAgBqH,EAAU,GAAG7qG,OAAOkhH,GAAoBj9G,OAAO89B,OAAO,CACvE+V,QAAS,eACT0rD,cAAe,MACfxsC,WAAYuqD,GACXZ,GAA6B78C,MAAkB,OAAgB+mC,EAAU,GAAG7qG,OAAOkhH,EAAmB,WAAY,CACnH5nD,aAAc,SACZ,OAAgBuxC,EAAU,GAAG7qG,OAAOkhH,EAAmB,OAAQj9G,OAAO89B,OAAO,CAAC,EAAG4+E,GAA6Bj5C,MAAoB,OAAgBmjC,EAAU,GAAG7qG,OAAOkhH,EAAmB,OAAQj9G,OAAO89B,OAAO,CAAC,EAAG4+E,GAA6Bv5C,KAAoByjC,KAAY,OAAgBzH,EAAW,GAAGpjG,OAAO82D,EAAc,aAAci1C,EAAY,CAC/Vj0D,QAAS,aACTt9C,MAAO,OACPgpG,cAAe,QACd,OAAgBuI,EAAW,GAAG/rG,OAAOmhH,IAAmB,OAAgB,CACzE3mH,MAAO,OACPC,OAAQgnH,EACRzqD,WAAYuqD,EACZjoD,aAAcooD,GACb,KAAK1hH,OAAOohH,GAAuB,CACpCU,iBAAkB16C,MACf,OAAgB2kC,EAAW,GAAG/rG,OAAOohH,GAAuB,CAC/Dv6C,QAAS,EACT,OAAQ,CACNrsE,MAAO,OACPC,OAAQknH,EACRI,UAAW,OACX/qD,WAAYuqD,EACZjoD,aAAcooD,EACd,OAAQ,CACNI,iBAAkBF,OAGpB,OAAgB7V,EAAW,GAAG/rG,OAAOohH,EAAsB,wDAAyD,CACtH5mH,MAAO,QACLuxG,KAAa,OAAgB3I,EAAW,WAAWpjG,OAAO82D,EAAc,aAAa,OAAgB,CAAC,EAAG,GAAG92D,OAAOmhH,EAAkB,MAAMnhH,OAAOohH,EAAsB,SAAU,CACpL9nD,aAAcA,KACX8pC,KAAa,OAAgBnC,EAAO,GAAGjhG,OAAO82D,EAAc,iBAAiB92D,OAAO82D,EAAc,aAAa,OAAgB,CAAC,EAAG,GAAG92D,OAAOmhH,IAAmB,OAAgB,CACnLW,iBAAkBN,GACjB,KAAKxhH,OAAOohH,GAAuB,CACpCU,iBAAkBD,OACd,OAAgB5gB,EAAO,GAAGjhG,OAAO82D,GAAc92D,OAAO82D,EAAc,YAAa7yD,OAAO89B,OAAO99B,OAAO89B,OAAO99B,OAAO89B,OAAO99B,OAAO89B,OAAO,CAC7I+V,QAAS,eACTt9C,MAAO,QApFoB,SAAkCq8D,GAC/D,IAAIyQ,EAAiBzQ,EAAMyQ,eACzB05C,EAAoBnqD,EAAMmqD,kBAC1Bl9C,EAAgBjN,EAAMiN,cACtB4D,EAAkB7Q,EAAM6Q,gBACxBN,EAAkBvQ,EAAMuQ,gBACxBm6C,EAAoB1qD,EAAM0qD,kBAC5B,OAAOt9G,OAAO89B,OAAO99B,OAAO89B,OAAO99B,OAAO89B,OAAO99B,OAAO89B,OAAO99B,OAAO89B,QAAO,OAAgB,CAAC,EAAG,GAAG/hC,OAAOghH,GAAoB/8G,OAAO89B,OAAO,CAC3I+V,QAAS,eACT0rD,cAAe,MACfxsC,WAAYuqD,EACZjoD,aAAcgO,EACd9sE,MAAuB,EAAhBspE,EACPD,SAA0B,EAAhBC,GACTm9C,GAA6Bn9C,KAAkBg9C,GAA8BjqD,EAAOiN,EAAek9C,KAAqB,OAAgB,CAAC,EAAG,GAAGhhH,OAAOghH,EAAmB,OAAQ/8G,OAAO89B,OAAO,CAAC,EAAGk/E,GAA6Bv5C,MAAqBo5C,GAA8BjqD,EAAO6Q,EAAiB,GAAG1nE,OAAOghH,EAAmB,UAAU,OAAgB,CAAC,EAAG,GAAGhhH,OAAOghH,EAAmB,OAAQ/8G,OAAO89B,OAAO,CAAC,EAAGk/E,GAA6B75C,MAAqB05C,GAA8BjqD,EAAOuQ,EAAiB,GAAGpnE,OAAOghH,EAAmB,QACviB,CAsEKgB,CAAyBnrD,IAjKC,SAAkCA,GAC/D,IAAIvY,EACA4iE,EAAoBrqD,EAAMqqD,kBAC5BK,EAAoB1qD,EAAM0qD,kBAC1Bz9C,EAAgBjN,EAAMiN,cACtB4D,EAAkB7Q,EAAM6Q,gBACxBN,EAAkBvQ,EAAMuQ,gBAC1B,OAAO9oB,EAAO,CAAC,GAAG,OAAgBA,EAAM,GAAGt+C,OAAOkhH,GAAoBj9G,OAAO89B,OAAO,CAClF+V,QAAS,eACT0rD,cAAe,MACfxsC,WAAYuqD,GACXZ,GAA6B78C,MAAkB,OAAgBxlB,EAAM,GAAGt+C,OAAOkhH,GAAmBlhH,OAAOkhH,EAAmB,WAAY,CACzI5nD,aAAc,SACZ,OAAgBhb,EAAM,GAAGt+C,OAAOkhH,GAAmBlhH,OAAOkhH,EAAmB,OAAQj9G,OAAO89B,OAAO,CAAC,EAAG4+E,GAA6Bj5C,MAAoB,OAAgBppB,EAAM,GAAGt+C,OAAOkhH,GAAmBlhH,OAAOkhH,EAAmB,OAAQj9G,OAAO89B,OAAO,CAAC,EAAG4+E,GAA6Bv5C,KAAoB9oB,CACtT,CAmJuC2jE,CAAyBprD,IAlJlC,SAAiCA,GAC7D,IAAIpM,EACAqZ,EAAgBjN,EAAMiN,cACxBwD,EAAiBzQ,EAAMyQ,eACvB+5C,EAAmBxqD,EAAMwqD,iBACzB35C,EAAkB7Q,EAAM6Q,gBACxBN,EAAkBvQ,EAAMuQ,gBACxBm6C,EAAoB1qD,EAAM0qD,kBAC5B,OAAO92D,EAAQ,CAAC,GAAG,OAAgBA,EAAO,GAAGzqD,OAAOqhH,GAAmBp9G,OAAO89B,OAAO,CACnF+V,QAAS,eACT0rD,cAAe,MACfxsC,WAAYuqD,EACZjoD,aAAcgO,GACbs5C,GAA4B98C,MAAkB,OAAgBrZ,EAAO,GAAGzqD,OAAOqhH,EAAkB,OAAQp9G,OAAO89B,OAAO,CAAC,EAAG6+E,GAA4Bl5C,MAAoB,OAAgBjd,EAAO,GAAGzqD,OAAOqhH,EAAkB,OAAQp9G,OAAO89B,OAAO,CAAC,EAAG6+E,GAA4Bx5C,KAAoB3c,CAC7S,CAoIyEy3D,CAAwBrrD,IA9HnE,SAAiCA,GAC7D,IAAIklC,EAAgBzwC,EAChBg2D,EAAmBzqD,EAAMyqD,iBAC3Ba,EAAgBtrD,EAAMsrD,cACtBZ,EAAoB1qD,EAAM0qD,kBAC1Bj6C,EAAiBzQ,EAAMyQ,eACzB,OAAOhc,EAAQ,CAAC,GAAG,OAAgBA,EAAO,GAAGtrD,OAAOshH,GAAmBr9G,OAAO89B,OAAO99B,OAAO89B,OAAO,CACjG+V,QAAS,OACT0sD,WAAY,SACZkI,eAAgB,SAChBlJ,cAAe,MACfxsC,WAAYuqD,EACZjoD,aAAcgO,GACbu5C,GAA4C,EAAhBsB,KAAsBpmB,EAAiB,CAAC,GAAG,OAAgBA,EAAgB,GAAG/7F,OAAOshH,EAAkB,SAAU,CAC9Ij5E,KAAM,aACJ,OAAgB0zD,EAAgB,GAAG/7F,OAAOshH,EAAkB,QAASr9G,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAG8+E,GAA4BsB,IAAiB,CACpJ7vF,SAA0B,EAAhB6vF,EACV1F,UAA2B,EAAhB0F,MACR,OAAgBpmB,EAAgB,GAAG/7F,OAAOshH,EAAkB,QAAQthH,OAAOshH,EAAkB,eAAgB,CAChHhoD,aAAc,QACZyiC,MAAmB,OAAgBzwC,EAAO,GAAGtrD,OAAOshH,GAAkBthH,OAAOshH,EAAkB,WAAY,CAC7GhoD,aAAc,QACZhO,CACN,CAuG0G82D,CAAwBvrD,MAAU,OAAgBoqC,EAAO,GAAGjhG,OAAO82D,GAAc92D,OAAO82D,EAAc,WAAYs1C,EAAmB,CAC3O5xG,MAAO,SACN,OAAgB4xG,EAAkB,GAAGpsG,OAAOghH,GAAoB,CACjExmH,MAAO,UACL,OAAgB4xG,EAAkB,GAAGpsG,OAAOqhH,GAAmB,CACjE7mH,MAAO,SACL4xG,KAAoB,OAAgBnL,EAAO,GAAGjhG,OAAO82D,GAAc92D,OAAO82D,EAAc,YAAY,OAAgB,CAAC,EAAG,aAAa92D,OAAOmhH,EAAkB,eAAenhH,OAAOohH,EAAsB,oBAAoBphH,OAAOkhH,EAAmB,eAAelhH,OAAOghH,EAAmB,eAAehhH,OAAOqhH,EAAkB,eAAerhH,OAAOshH,EAAkB,YAAar9G,OAAO89B,OAAO,CAAC,EAvL5X,SAA0B80B,GAC/C,MAAO,CACLG,WAAYH,EAAMwrD,0BAClBC,eAAgB,YAChB7nB,cAAe+lB,GACfpmB,kBAAmBvjC,EAAM0rD,8BACzBlnB,wBAAyB,OACzB6I,wBAAyB,WAE7B,CA8KsZse,CAAiB3rD,MAAWoqC,CAClb,EAEA,IAAe,EAAA3pC,GAAA,GAAsB,YAAY,SAAUT,GACzD,IAAIC,EAAeD,EAAMC,aACrB2rD,GAAgB,SAAW5rD,EAAO,CACpCqqD,kBAAmB,GAAGlhH,OAAO82D,EAAc,WAC3CqqD,iBAAkB,GAAGnhH,OAAO82D,EAAc,UAC1CsqD,qBAAsB,GAAGphH,OAAO82D,EAAc,cAC9CkqD,kBAAmB,GAAGhhH,OAAO82D,EAAc,WAC3CuqD,iBAAkB,GAAGrhH,OAAO82D,EAAc,UAC1CwqD,iBAAkB,GAAGthH,OAAO82D,EAAc,UAC1CqrD,cAAqC,IAAtBtrD,EAAMiN,cACrBxK,aAAc,IACd+oD,0BAA2B,0BAA0BriH,OAAO62D,EAAM0qD,kBAAmB,UAAUvhH,OAAO62D,EAAM6rD,gBAAiB,UAAU1iH,OAAO62D,EAAM0qD,kBAAmB,SACvKgB,8BAA+B,SAEjC,MAAO,CAAC,GAAaE,GACvB,IAAG,SAAU5rD,GACX,IAAI8rD,EAAmB9rD,EAAM8rD,iBAC3BC,EAAY/rD,EAAM+rD,UAGpB,MAAO,CACLpiF,MAHsBmiF,EAItBE,iBAHoBD,EAIpBrB,kBALsBoB,EAMtBD,gBALoBE,EAMpBnB,YAAa5qD,EAAMiN,cAAgB,EACnC49C,YAAa7qD,EAAMyQ,eACnBu6C,mBAAoBhrD,EAAMisD,SAAWjsD,EAAMwoC,UAC3CsiB,kBAAmB9qD,EAAMiN,cAAgB,EAE7C,GAAG,CACDi/C,iBAAkB,CAAC,CAAC,QAAS,qBAAsB,CAAC,mBAAoB,sBC7M1E,GA1BqB,SAAwBj/G,GAC3C,IAAIi8D,EAAqBj8D,EAAMooD,UAC7B7rD,EAAYyD,EAAMzD,UAClBooE,EAAgB3kE,EAAM2kE,cACtBu6C,EAASl/G,EAAMk/G,OACf36C,EAAevkE,EAAM5R,MACrBA,OAAyB,IAAjBm2E,EAA0B,SAAWA,EAC7Ci5B,EAAcx9F,EAAMitB,KACpBA,OAAuB,IAAhBuwE,EAAyB,UAAYA,EAG1Cp1C,GAAY0Q,EAFQ,aAAiB,OACNA,cACN,WAAYmD,GACrC/C,EAAY,GAAS9Q,GACvBqd,GAAa,OAAevM,EAAW,GACvCwM,EAAUD,EAAW,GACrBtM,EAASsM,EAAW,GAClBhd,GAAa,QAAKzoD,EAAO,CAAC,YAAa,cACvC0oD,EAAM,IAAWN,EAAW,GAAGlsD,OAAOksD,EAAW,aAAa,OAAgB,CAAC,EAAG,GAAGlsD,OAAOksD,EAAW,WAAY82D,GAAS3iH,EAAWooE,EAAexL,GAC1J,OAAOuM,EAAsB,gBAAoB,MAAO,CACtDnpE,UAAWmsD,GACG,gBAAoB,GAASvoD,OAAO89B,OAAO,CACzDmqB,UAAW,GAAGlsD,OAAOksD,EAAW,WAChCh6D,MAAOA,EACP6+B,KAAMA,GACLw7B,KACL,ECCA,GA1BqB,SAAwBzoD,GAC3C,IAAIgoD,EACAiU,EAAqBj8D,EAAMooD,UAC7B7rD,EAAYyD,EAAMzD,UAClBooE,EAAgB3kE,EAAM2kE,cACtBu6C,EAASl/G,EAAMk/G,OACfp6C,EAAe9kE,EAAM+kE,MACrBA,OAAyB,IAAjBD,GAAkCA,EAC1C04B,EAAcx9F,EAAMitB,KACpBA,OAAuB,IAAhBuwE,EAAyB,UAAYA,EAG1Cp1C,GAAY0Q,EAFQ,aAAiB,OACNA,cACN,WAAYmD,GACrC/C,EAAY,GAAS9Q,GACvBqd,GAAa,OAAevM,EAAW,GACvCwM,EAAUD,EAAW,GACrBtM,EAASsM,EAAW,GAClBhd,GAAa,QAAKzoD,EAAO,CAAC,cAC1B0oD,EAAM,IAAWN,EAAW,GAAGlsD,OAAOksD,EAAW,aAAcJ,EAAc,CAAC,GAAG,OAAgBA,EAAa,GAAG9rD,OAAOksD,EAAW,WAAY82D,IAAS,OAAgBl3D,EAAa,GAAG9rD,OAAOksD,EAAW,UAAW2c,GAAQ/c,GAAczrD,EAAWooE,EAAexL,GACzQ,OAAOuM,EAAsB,gBAAoB,MAAO,CACtDnpE,UAAWmsD,GACG,gBAAoB,GAASvoD,OAAO89B,OAAO,CACzDmqB,UAAW,GAAGlsD,OAAOksD,EAAW,WAChCn7B,KAAMA,GACLw7B,KACL,ECEA,GA5BoB,SAAuBzoD,GACzC,IAAIi8D,EAAqBj8D,EAAMooD,UAC7B7rD,EAAYyD,EAAMzD,UAClBooE,EAAgB3kE,EAAM2kE,cACtBlwE,EAAQuL,EAAMvL,MACdyqH,EAASl/G,EAAMk/G,OAGb92D,GAAY0Q,EAFQ,aAAiB,OACNA,cACN,WAAYmD,GACrC/C,EAAY,GAAS9Q,GACvBqd,GAAa,OAAevM,EAAW,GACvCwM,EAAUD,EAAW,GACrBtM,EAASsM,EAAW,GAClB/c,EAAM,IAAWN,EAAW,GAAGlsD,OAAOksD,EAAW,aAAa,OAAgB,CAAC,EAAG,GAAGlsD,OAAOksD,EAAW,WAAY82D,GAAS3iH,EAAWooE,EAAexL,GAC1J,OAAOuM,EAAsB,gBAAoB,MAAO,CACtDnpE,UAAWmsD,GACG,gBAAoB,MAAO,CACzCnsD,UAAW,IAAW,GAAGL,OAAOksD,EAAW,UAAW7rD,GACtD9H,MAAOA,GACO,gBAAoB,MAAO,CACzComD,QAAS,gBACTD,MAAO,6BACPr+C,UAAW,GAAGL,OAAOksD,EAAW,eAClB,gBAAoB,OAAQ,CAC1C15C,EAzBO,k3BA0BPnS,UAAW,GAAGL,OAAOksD,EAAW,oBAEpC,ECDA,GAzBoB,SAAuBpoD,GACzC,IAAIgoD,EACAiU,EAAqBj8D,EAAMooD,UAC7B7rD,EAAYyD,EAAMzD,UAClBooE,EAAgB3kE,EAAM2kE,cACtBu6C,EAASl/G,EAAMk/G,OACfn6C,EAAQ/kE,EAAM+kE,MACdy4B,EAAcx9F,EAAMitB,KACpBA,OAAuB,IAAhBuwE,EAAyB,UAAYA,EAG1Cp1C,GAAY0Q,EAFQ,aAAiB,OACNA,cACN,WAAYmD,GACrC/C,EAAY,GAAS9Q,GACvBqd,GAAa,OAAevM,EAAW,GACvCwM,EAAUD,EAAW,GACrBtM,EAASsM,EAAW,GAClBhd,GAAa,QAAKzoD,EAAO,CAAC,cAC1B0oD,EAAM,IAAWN,EAAW,GAAGlsD,OAAOksD,EAAW,aAAcJ,EAAc,CAAC,GAAG,OAAgBA,EAAa,GAAG9rD,OAAOksD,EAAW,WAAY82D,IAAS,OAAgBl3D,EAAa,GAAG9rD,OAAOksD,EAAW,UAAW2c,GAAQ/c,GAAczrD,EAAWooE,EAAexL,GACzQ,OAAOuM,EAAsB,gBAAoB,MAAO,CACtDnpE,UAAWmsD,GACG,gBAAoB,GAASvoD,OAAO89B,OAAO,CACzDmqB,UAAW,GAAGlsD,OAAOksD,EAAW,UAChCn7B,KAAMA,GACLw7B,KACL,ECdA,GAjBuB,CACrB,KAAQ,CACN,IAAO,MACP,MAAS,CACP,QAAW,gBACX,UAAa,SAEf,SAAY,CAAC,CACX,IAAO,OACP,MAAS,CACP,EAAK,+RAIX,KAAQ,YACR,MAAS,YCTP,GAAmB,SAA0BzoD,EAAO+6C,GACtD,OAAoB,gBAAoBsX,GAAA,GAAU,OAAS,CAAC,EAAGryD,EAAO,CACpE+6C,IAAKA,EACL8U,KAAM,KAEV,EAIA,OAA4B,aAAiB,ICc7C,GAvBmB,SAAsB7vD,GACvC,IAAIi8D,EAAqBj8D,EAAMooD,UAC7B7rD,EAAYyD,EAAMzD,UAClBooE,EAAgB3kE,EAAM2kE,cACtBlwE,EAAQuL,EAAMvL,MACdyqH,EAASl/G,EAAMk/G,OACf1mH,EAAWwH,EAAMxH,SAGf4vD,GAAY0Q,EAFQ,aAAiB,OACNA,cACN,WAAYmD,GACrC/C,EAAY,GAAS9Q,GACvBqd,GAAa,OAAevM,EAAW,GACvCwM,EAAUD,EAAW,GACrBtM,EAASsM,EAAW,GAClB/c,EAAM,IAAWN,EAAW,GAAGlsD,OAAOksD,EAAW,aAAa,OAAgB,CAAC,EAAG,GAAGlsD,OAAOksD,EAAW,WAAY82D,GAAS/lD,EAAQ58D,EAAWooE,GAC/IlF,EAAUjnE,QAA2CA,EAAwB,gBAAoB,GAAkB,MACvH,OAAOktE,EAAsB,gBAAoB,MAAO,CACtDnpE,UAAWmsD,GACG,gBAAoB,MAAO,CACzCnsD,UAAW,IAAW,GAAGL,OAAOksD,EAAW,UAAW7rD,GACtD9H,MAAOA,GACNgrE,IACL,ECQA,GAlCgB,SAAmBz/D,GACjC,IAAIm/G,EAAW,SAAkBxuH,GAC/B,IAAI+F,EAAQsJ,EAAMtJ,MAChB0oH,EAAcp/G,EAAMq/G,KACpBA,OAAuB,IAAhBD,EAAyB,EAAIA,EACtC,OAAIh2F,MAAMC,QAAQ3yB,GACTA,EAAM/F,GAGX0uH,EAAO,IAAM1uH,EACR+F,OADT,CAIF,EACI0xD,EAAYpoD,EAAMooD,UACpB7rD,EAAYyD,EAAMzD,UAClB9H,EAAQuL,EAAMvL,MACd4qH,EAAOr/G,EAAMq/G,KACXC,GAAU,OAAmBl2F,MAAMi2F,IAAO1lG,KAAI,SAAU0V,EAAG1+B,GAC7D,OAEE,gBAAoB,KAAM,CACxB64B,IAAK74B,EACL8D,MAAO,CACLiC,MAAOyoH,EAASxuH,KAIxB,IACA,OAAoB,gBAAoB,KAAM,CAC5C4L,UAAW,IAAW6rD,EAAW7rD,GACjC9H,MAAOA,GACN6qH,EACL,ECrBA,GAZY,SAAe9kE,GACzB,IAAI4N,EAAY5N,EAAK4N,UACnB7rD,EAAYi+C,EAAKj+C,UACjB7F,EAAQ8jD,EAAK9jD,MACbjC,EAAQ+lD,EAAK/lD,MACf,OAAoB,gBAAoB,KAAM,CAC5C8H,UAAW,IAAW6rD,EAAW7rD,GACjC9H,MAAO0L,OAAO89B,OAAO,CACnBvnC,MAAOA,GACNjC,IAEP,ECAA,SAAS8qH,GAAkB1xH,GACzB,OAAIA,GAAwB,iBAATA,EACVA,EAEF,CAAC,CACV,CAyCA,IAAI2xH,GAAW,SAAkBx/G,GAC/B,IAAIi8D,EAAqBj8D,EAAMooD,UAC7BgT,EAAUp7D,EAAMo7D,QAChB7+D,EAAYyD,EAAMzD,UAClBooE,EAAgB3kE,EAAM2kE,cACtBlwE,EAAQuL,EAAMvL,MACd+D,EAAWwH,EAAMxH,SACjBinH,EAAgBz/G,EAAMuyG,OACtBA,OAA2B,IAAlBkN,GAAmCA,EAC5CC,EAAe1/G,EAAM06C,MACrBA,OAAyB,IAAjBglE,GAAiCA,EACzCC,EAAmB3/G,EAAM4/G,UACzBA,OAAiC,IAArBD,GAAqCA,EACjDT,EAASl/G,EAAMk/G,OACf9zF,EAAQprB,EAAMorB,MACZ4wC,EAAoB,aAAiB,OACvClD,EAAekD,EAAkBlD,aACjCr1C,EAAYu4C,EAAkBv4C,UAC9B8tF,EAAWv1C,EAAkBu1C,SAC3BnpD,EAAY0Q,EAAa,WAAYmD,GACrC/C,EAAY,GAAS9Q,GACvBqd,GAAa,OAAevM,EAAW,GACvCwM,EAAUD,EAAW,GACrBtM,EAASsM,EAAW,GACtB,GAAIrK,KAAa,YAAap7D,GAAQ,CACpC,IAAIgoD,EAKA63D,EAUAC,EAdAC,IAAcxN,EACdyN,IAAatlE,EACbulE,IAAiBL,EAGrB,GAAIG,EAAW,CACb,IAAIG,EAAc//G,OAAO89B,OAAO99B,OAAO89B,OAAO,CAC5CmqB,UAAW,GAAGlsD,OAAOksD,EAAW,YAzExC,SAA6B43D,EAAUC,GACrC,OAAID,IAAaC,EAER,CACLhzF,KAAM,QACN7+B,MAAO,UAGJ,CACL6+B,KAAM,QACN7+B,MAAO,SAEX,CA8DS+xH,CAAoBH,EAAUC,IAAgBV,GAAkBhN,IAEnEsN,EAA0B,gBAAoB,MAAO,CACnDtjH,UAAW,GAAGL,OAAOksD,EAAW,YAClB,gBAAoB,GAASjoD,OAAO89B,OAAO,CAAC,EAAGiiF,IACjE,CAEA,GAAIF,GAAYC,EAAc,CAE5B,IAAIG,EAQAC,EAPJ,GAAIL,EAAU,CACZ,IAAIM,EAAangH,OAAO89B,OAAO99B,OAAO89B,OAAO,CAC3CmqB,UAAW,GAAGlsD,OAAOksD,EAAW,WAzE1C,SAA4B23D,EAAWE,GACrC,OAAKF,GAAaE,EACT,CACLvpH,MAAO,OAGPqpH,GAAaE,EACR,CACLvpH,MAAO,OAGJ,CAAC,CACV,CA8DW6pH,CAAmBR,EAAWE,IAAgBV,GAAkB7kE,IACnE0lE,EAAsB,gBAAoB,GAAOjgH,OAAO89B,OAAO,CAAC,EAAGqiF,GACrE,CAGA,GAAIL,EAAc,CAChB,IAAIO,EAAiBrgH,OAAO89B,OAAO99B,OAAO89B,OAAO,CAC/CmqB,UAAW,GAAGlsD,OAAOksD,EAAW,eApE1C,SAAgC23D,EAAWC,GACzC,IAAIS,EAAa,CAAC,EAWlB,OATKV,GAAcC,IACjBS,EAAW/pH,MAAQ,OAInB+pH,EAAWpB,MADRU,GAAaC,EACE,EAEA,EAEbS,CACT,CAwDWC,CAAuBX,EAAWC,IAAYT,GAAkBK,IACnES,EAA6B,gBAAoB,GAAWlgH,OAAO89B,OAAO,CAAC,EAAGuiF,GAChF,CACAV,EAA2B,gBAAoB,MAAO,CACpDvjH,UAAW,GAAGL,OAAOksD,EAAW,aAC/Bg4D,EAAQC,EACb,CACA,IAAI33D,EAAM,IAAWN,GAAYJ,EAAc,CAAC,GAAG,OAAgBA,EAAa,GAAG9rD,OAAOksD,EAAW,gBAAiB23D,IAAY,OAAgB/3D,EAAa,GAAG9rD,OAAOksD,EAAW,WAAY82D,IAAS,OAAgBl3D,EAAa,GAAG9rD,OAAOksD,EAAW,QAAuB,QAAd3kC,IAAsB,OAAgBukC,EAAa,GAAG9rD,OAAOksD,EAAW,UAAWh9B,GAAQ48B,GAAcupD,aAA2C,EAASA,EAASh1G,UAAWA,EAAWooE,EAAexL,GAC/c,OAAOuM,EAAsB,gBAAoB,MAAO,CACtDnpE,UAAWmsD,EACXj0D,MAAO0L,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGszE,aAA2C,EAASA,EAAS98G,OAAQA,IAC3GorH,EAAYC,GACjB,CACA,YAA2B,IAAbtnH,EAA2BA,EAAW,IACtD,EACAgnH,GAASr3C,OAAS,GAClBq3C,GAASmB,OAAS,GAClBnB,GAASoB,MAAQ,GACjBpB,GAASnuD,MAAQ,GACjBmuD,GAASqB,KAAO,GAIhB,ICvIA,GDuIA,eEzII,GAAY,CAAC,QAAS,WAuB1B,IACA,GADiB,cArBjB,SAAgCrmE,EAAMC,GACpC,IAAIC,EAAQF,EAAKE,MACfC,EAAUH,EAAKG,QACf36C,GAAQ,OAAyBw6C,EAAM,IACzC,OAAoB,gBAAoB,MAAOr6C,OAAO89B,OAAO,CAC3D2c,MAAO,6BACPrW,KAAM,OACNsW,QAAS,YACTC,YAAa,IACbhxC,OAAQ,eACR,cAAe,OACfixC,IAAKN,EACL,kBAAmBE,GAClB36C,GAAQ06C,EAAqB,gBAAoB,QAAS,CAC3Dr+C,GAAIs+C,GACHD,GAAS,KAAmB,gBAAoB,OAAQ,CACzDM,cAAe,QACfC,eAAgB,QAChBvsC,EAAG,oOAEP,ICtBI,GAAY,CAAC,QAAS,WAuB1B,IACA,GADiB,cArBjB,SAAqB8rC,EAAMC,GACzB,IAAIC,EAAQF,EAAKE,MACfC,EAAUH,EAAKG,QACf36C,GAAQ,OAAyBw6C,EAAM,IACzC,OAAoB,gBAAoB,MAAOr6C,OAAO89B,OAAO,CAC3D2c,MAAO,6BACPrW,KAAM,OACNsW,QAAS,YACTC,YAAa,IACbhxC,OAAQ,eACR,cAAe,OACfixC,IAAKN,EACL,kBAAmBE,GAClB36C,GAAQ06C,EAAqB,gBAAoB,QAAS,CAC3Dr+C,GAAIs+C,GACHD,GAAS,KAAmB,gBAAoB,OAAQ,CACzDM,cAAe,QACfC,eAAgB,QAChBvsC,EAAG,uEAEP,ICtBI,GAAY,CAAC,QAAS,WAuB1B,IACA,GADiB,cArBjB,SAA0B8rC,EAAMC,GAC9B,IAAIC,EAAQF,EAAKE,MACfC,EAAUH,EAAKG,QACf36C,GAAQ,OAAyBw6C,EAAM,IACzC,OAAoB,gBAAoB,MAAOr6C,OAAO89B,OAAO,CAC3D2c,MAAO,6BACPrW,KAAM,OACNsW,QAAS,YACTC,YAAa,IACbhxC,OAAQ,eACR,cAAe,OACfixC,IAAKN,EACL,kBAAmBE,GAClB36C,GAAQ06C,EAAqB,gBAAoB,QAAS,CAC3Dr+C,GAAIs+C,GACHD,GAAS,KAAmB,gBAAoB,OAAQ,CACzDM,cAAe,QACfC,eAAgB,QAChBvsC,EAAG,oiBAEP,ICtBI,GAAY,CAAC,QAAS,WA2B1B,IACA,GADiB,cAzBjB,SAAiB8rC,EAAMC,GACrB,IAAIC,EAAQF,EAAKE,MACfC,EAAUH,EAAKG,QACf36C,GAAQ,OAAyBw6C,EAAM,IACzC,OAAoB,gBAAoB,MAAOr6C,OAAO89B,OAAO,CAC3D2c,MAAO,6BACPrW,KAAM,OACNsW,QAAS,YACTC,YAAa,IACbhxC,OAAQ,eACR,cAAe,OACfixC,IAAKN,EACL,kBAAmBE,GAClB36C,GAAQ06C,EAAqB,gBAAoB,QAAS,CAC3Dr+C,GAAIs+C,GACHD,GAAS,KAAmB,gBAAoB,OAAQ,CACzDM,cAAe,QACfC,eAAgB,QAChBvsC,EAAG,4MACY,gBAAoB,OAAQ,CAC3CssC,cAAe,QACfC,eAAgB,QAChBvsC,EAAG,wBAEP,IC1BI,GAAY,CAAC,QAAS,WAuB1B,IACA,GADiB,cArBjB,SAA8B8rC,EAAMC,GAClC,IAAIC,EAAQF,EAAKE,MACfC,EAAUH,EAAKG,QACf36C,GAAQ,OAAyBw6C,EAAM,IACzC,OAAoB,gBAAoB,MAAOr6C,OAAO89B,OAAO,CAC3D2c,MAAO,6BACPrW,KAAM,OACNsW,QAAS,YACTC,YAAa,IACbhxC,OAAQ,eACR,cAAe,OACfixC,IAAKN,EACL,kBAAmBE,GAClB36C,GAAQ06C,EAAqB,gBAAoB,QAAS,CAC3Dr+C,GAAIs+C,GACHD,GAAS,KAAmB,gBAAoB,OAAQ,CACzDM,cAAe,QACfC,eAAgB,QAChBvsC,EAAG,8RAEP,ICtBI,GAAY,CAAC,QAAS,WAuB1B,IACA,GADiB,cArBjB,SAA+B8rC,EAAMC,GACnC,IAAIC,EAAQF,EAAKE,MACfC,EAAUH,EAAKG,QACf36C,GAAQ,OAAyBw6C,EAAM,IACzC,OAAoB,gBAAoB,MAAOr6C,OAAO89B,OAAO,CAC3D2c,MAAO,6BACPrW,KAAM,OACNsW,QAAS,YACTC,YAAa,IACbhxC,OAAQ,eACR,cAAe,OACfixC,IAAKN,EACL,kBAAmBE,GAClB36C,GAAQ06C,EAAqB,gBAAoB,QAAS,CAC3Dr+C,GAAIs+C,GACHD,GAAS,KAAmB,gBAAoB,OAAQ,CACzDM,cAAe,QACfC,eAAgB,QAChBvsC,EAAG,4iBAEP,gBClBA,SAASoyG,GAAWC,GAClB,SAAUA,IAASA,EAAM7wF,KAC3B,CACA,IA4FA,GA5FmB,SAAsBlwB,GACvC,IAAI1O,EAAO0O,EAAM1O,KACfkH,EAAWwH,EAAMxH,SACjB4vD,EAAYpoD,EAAMooD,UAClB44D,EAAchhH,EAAMghH,YACpBzK,EAAQv2G,EAAMu2G,MACd0K,EAAYjhH,EAAMihH,UAClBC,EAAYlhH,EAAMkhH,UAClBC,EAAWnhH,EAAMmhH,SACjBC,EAA2BphH,EAAMohH,yBACjCC,EAAWrhH,EAAMqhH,SACfC,EAAa,UAAa,GAC1B36C,EAAY,SAAa,MACzBX,GAAY,EAAAC,GAAA,IAAS,GACvBC,GAAa,OAAeF,EAAW,GACvC5K,EAAU8K,EAAW,GACrBE,EAAaF,EAAW,GACtBq/B,EAAkB,WACpBgR,SAA8CA,EAAMvsH,WAAM,EAAQT,UACpE,EACA,aAAgB,WACd,IAAIg4H,EAAY,KAOhB,OANIN,IACFM,EAAYt1H,YAAW,WACrB,IAAInC,EACyB,QAA5BA,EAAK68E,EAAUv2E,eAA4B,IAAPtG,GAAyBA,EAAG47D,OACnE,KAEK,WACD67D,GACFj0H,aAAai0H,EAEjB,CACF,GAAG,IAmDH,OAAoB,gBAAoB,GAAQphH,OAAO89B,OAAO,CAAC,EAAGimC,GAAmB5yE,GAAO,CAC1Fk0D,QA/BY,SAAiB34D,GAC7B,IAAIy0H,EAAWlxH,QAIf,GADAkxH,EAAWlxH,SAAU,EAChBixH,EAAL,CAIA,IAAIG,EACJ,GAAIN,GAEF,GADAM,EAAoBH,EAASx0H,GACzBu0H,IAA6BN,GAAWU,GAG1C,OAFAF,EAAWlxH,SAAU,OACrBm1G,EAAgB14G,QAGb,GAAIw0H,EAAS73H,OAClBg4H,EAAoBH,EAAS9K,GAE7B+K,EAAWlxH,SAAU,OAGrB,KADAoxH,EAAoBH,KAGlB,YADA9b,KA5CkB,SAA2Bic,GAC5CV,GAAWU,KAGhBp7C,GAAW,GACXo7C,EAAkBtxF,MAAK,WACrBk2C,GAAW,GAAO,GAClBm/B,EAAgBv7G,WAAM,EAAQT,WAC9B+3H,EAAWlxH,SAAU,CACvB,IAAG,SAAUvD,GAKX,GAHAu5E,GAAW,GAAO,GAClBk7C,EAAWlxH,SAAU,IAEjB+wH,aAA2C,EAASA,KAGxD,OAAO5xF,QAAQU,OAAOpjC,EACxB,IACF,CA6BE40H,CAAkBD,EApBlB,MAFEjc,GAuBJ,EAGEnqC,QAASA,EACThT,UAAWA,GACV44D,EAAa,CACdjmE,IAAK4rB,IACHnuE,EACN,cClGO,SAASkpH,GAAct5D,EAAWsxB,EAAgBid,GACvD,IAAIv+B,EAAashB,EAIjB,OAHKthB,GAAcu+B,IACjBv+B,EAAa,GAAGl8D,OAAOksD,EAAW,KAAKlsD,OAAOy6F,IAEzCv+B,CACT,CAGA,SAASupD,GAAUtrG,EAAGze,GACpB,IAAI2yC,EAAMl0B,EAAE,OAAOna,OAAOtE,EAAM,IAAM,IAAK,WACvCtD,EAAS,SAAS4H,OAAOtE,EAAM,MAAQ,QAC3C,GAAmB,iBAAR2yC,EAAkB,CAC3B,IAAI77B,EAAI2H,EAAE/iB,SAES,iBADnBi3C,EAAM77B,EAAEwgE,gBAAgB56E,MAEtBi2C,EAAM77B,EAAE4mC,KAAKhhD,GAEjB,CACA,OAAOi2C,CACT,CCpBA,OAA4B,QAAW,SAAUiQ,GAE/C,OADeA,EAAKhiD,QAEtB,IAAG,SAAU62B,EAAGs3B,GAEd,OADmBA,EAAMi7D,YAE3B,ICFIC,GAAgB,CAClBnrH,MAAO,EACPC,OAAQ,EACRs9C,SAAU,SACV4qB,QAAS,QAEPijD,GAAqB,cAAiB,SAAU9hH,EAAO+6C,GACzD,IAAIqN,EAAYpoD,EAAMooD,UACpB7rD,EAAYyD,EAAMzD,UAClB9H,EAAQuL,EAAMvL,MACdimD,EAAQ16C,EAAM06C,MACdqnE,EAAS/hH,EAAM+hH,OACfC,EAAShiH,EAAMgiH,OACf5M,EAAWp1G,EAAMo1G,SACjBE,EAAYt1G,EAAMs1G,UAClBtS,EAAUhjG,EAAMgjG,QAChBxqG,EAAWwH,EAAMxH,SACjBypH,EAAYjiH,EAAMiiH,UAClBC,EAAYliH,EAAMkiH,UAClBC,EAAcniH,EAAMmiH,YACpBC,EAAcpiH,EAAMoiH,YACpBC,EAAYriH,EAAMqiH,UAClBlI,EAAYn6G,EAAMm6G,UAClBj9G,EAAU8C,EAAM9C,QAChBohF,EAAct+E,EAAMs+E,YACpB5nF,EAAQsJ,EAAMtJ,MACdC,EAASqJ,EAAMrJ,OAGb2rH,GAAmB,IAAArpD,UACnBspD,GAAiB,IAAAtpD,UACrB,sBAA0Ble,GAAK,WAC7B,MAAO,CACL2K,MAAO,WACL,IAAI88D,EACmD,QAAtDA,EAAwBF,EAAiBlyH,eAA+C,IAA1BoyH,GAA4CA,EAAsB98D,OACnI,EACA+8D,aAAc,SAAsBvkG,GAClC,IACEwkG,EADcpvH,SACYovH,cACxBxkG,GAAQwkG,IAAkBH,EAAenyH,QAC3CkyH,EAAiBlyH,QAAQs1D,QACfxnC,GAAQwkG,IAAkBJ,EAAiBlyH,SACrDmyH,EAAenyH,QAAQs1D,OAE3B,EAEJ,IAGA,IAQIi9D,EAMAC,EASAC,EAvBAC,EAAe,CAAC,OACN1jG,IAAV1oB,IACFosH,EAAapsH,MAAQA,QAER0oB,IAAXzoB,IACFmsH,EAAansH,OAASA,GAIpBqrH,IACFW,EAA0B,gBAAoB,MAAO,CACnDpmH,UAAW,GAAGL,OAAOksD,EAAW,YAC/B45D,IAGDtnE,IACFkoE,EAA0B,gBAAoB,MAAO,CACnDrmH,UAAW,GAAGL,OAAOksD,EAAW,YAClB,gBAAoB,MAAO,CACzC7rD,UAAW,GAAGL,OAAOksD,EAAW,UAChC/rD,GAAI0lH,GACHrnE,KAGD06D,IACFyN,EAAsB,gBAAoB,SAAU,CAClDvxH,KAAM,SACNk0D,QAASw9C,EACT,aAAc,QACdzmG,UAAW,GAAGL,OAAOksD,EAAW,WAC/BktD,GAA0B,gBAAoB,OAAQ,CACvD/4G,UAAW,GAAGL,OAAOksD,EAAW,gBAGpC,IAAIqX,EAAuB,gBAAoB,MAAO,CACpDljE,UAAW,GAAGL,OAAOksD,EAAW,aAC/By6D,EAAQD,EAAyB,gBAAoB,OAAO,OAAS,CACtErmH,UAAW,GAAGL,OAAOksD,EAAW,SAChC3zD,MAAOwtH,GACNC,GAAY1pH,GAAWmqH,GAC1B,OAAoB,gBAAoB,MAAO,CAC7Cn5F,IAAK,iBACLw/B,KAAM,SACN,kBAAmBtO,EAAQqnE,EAAS,KACpC,aAAc,OACdhnE,IAAKo/D,EACL1lH,OAAO,SAAc,QAAc,CAAC,EAAGA,GAAQquH,GAC/CvmH,UAAW,IAAW6rD,EAAW7rD,GACjC6lH,YAAaA,EACbC,UAAWA,GACG,gBAAoB,MAAO,CACzCt5D,SAAU,EACVhO,IAAKunE,EACL7tH,MAAOotH,GACP,cAAe,SACA,gBAAoBkB,GAAc,CACjDnB,aAAc1kH,GAAWohF,GACxB6jC,EAAcA,EAAY1iD,GAAWA,GAAuB,gBAAoB,MAAO,CACxF1W,SAAU,EACVhO,IAAKwnE,EACL9tH,MAAOotH,GACP,cAAe,SAEnB,IAIA,UCjHImB,GAAuB,cAAiB,SAAUhjH,EAAO+6C,GAC3D,IAAIqN,EAAYpoD,EAAMooD,UACpB1N,EAAQ16C,EAAM06C,MACdjmD,EAAQuL,EAAMvL,MACd8H,EAAYyD,EAAMzD,UAClBW,EAAU8C,EAAM9C,QAChBohF,EAAct+E,EAAMs+E,YACpB2kC,EAAiBjjH,EAAMijH,eACvB7qD,EAAap4D,EAAMo4D,WACnB2pD,EAAS/hH,EAAM+hH,OACf5jC,EAAmBn+E,EAAMm+E,iBACzB+kC,EAAgBljH,EAAMkjH,cACpBC,GAAY,IAAAlqD,UAGZ9D,EAAkB,aACpBC,GAAmB,QAAeD,EAAiB,GACnDoX,EAAkBnX,EAAiB,GACnCguD,EAAqBhuD,EAAiB,GACpC0tD,EAAe,CAAC,EAIpB,SAAShkC,IACP,IAAIukC,EHXD,SAAgBlwH,GACrB,IAAIgW,EAAOhW,EAAGuE,wBACV4rH,EAAM,CACR3rH,KAAMwR,EAAKxR,KACXC,IAAKuR,EAAKvR,KAERwvF,EAAMj0F,EAAG8gF,cACT59D,EAAI+wE,EAAIxzC,aAAewzC,EAAIm8B,aAG/B,OAFAD,EAAI3rH,MAAQgqH,GAAUtrG,GACtBitG,EAAI1rH,KAAO+pH,GAAUtrG,GAAG,GACjBitG,CACT,CGAwBx3C,CAAOq3C,EAAU/yH,SACrCgzH,EAAmBF,EAAgB,GAAGhnH,OAAOgnH,EAActvH,EAAIyvH,EAAc1rH,KAAM,OAAOuE,OAAOgnH,EAAcrvH,EAAIwvH,EAAczrH,IAAK,MAAQ,GAChJ,CAGA,OATI20E,IACFu2C,EAAav2C,gBAAkBA,GAQb,gBAAoB,MAAW,CACjDrvE,QAASA,EACTihF,iBAAkBA,EAClB+B,gBAAiBpB,EACjBqB,eAAgBrB,EAChBR,YAAaA,EACblmB,WAAYA,EACZkD,cAAe2nD,EACfloE,IAAKooE,IACJ,SAAU3oE,EAAM8lC,GACjB,IAAI5nB,EAAkBle,EAAKj+C,UACzBu/D,EAActhB,EAAK/lD,MACrB,OAAoB,gBAAoB,IAAO,OAAS,CAAC,EAAGuL,EAAO,CACjE+6C,IAAKA,EACLL,MAAOA,EACPqnE,OAAQA,EACR35D,UAAWA,EACX+xD,UAAW75B,EACX7rF,OAAO,SAAc,SAAc,QAAc,CAAC,EAAGqnE,GAAcrnE,GAAQquH,GAC3EvmH,UAAW,IAAWA,EAAWm8D,KAErC,GACF,IACAsqD,GAAQhkE,YAAc,UACtB,UCzDe,SAAS,GAAKh/C,GAC3B,IAAIooD,EAAYpoD,EAAMooD,UACpB3zD,EAAQuL,EAAMvL,MACdyI,EAAU8C,EAAM9C,QAChBsmH,EAAYxjH,EAAMwjH,UAClBprD,EAAap4D,EAAMo4D,WACrB,OAAoB,gBAAoB,MAAW,CACjD5uC,IAAK,OACLtsB,QAASA,EACTk7D,WAAYA,EACZ6nB,gBAAiB,GAAG/jF,OAAOksD,EAAW,kBACrC,SAAU5N,EAAMO,GACjB,IAAI2d,EAAkBle,EAAKj+C,UACzBu/D,EAActhB,EAAK/lD,MACrB,OAAoB,gBAAoB,OAAO,OAAS,CACtDsmD,IAAKA,EACLtmD,OAAO,SAAc,QAAc,CAAC,EAAGqnE,GAAcrnE,GACrD8H,UAAW,IAAW,GAAGL,OAAOksD,EAAW,SAAUsQ,IACpD8qD,GACL,GACF,CCZe,SAASC,GAAOzjH,GAC7B,IAAI6gF,EAAmB7gF,EAAMooD,UAC3BA,OAAiC,IAArBy4B,EAA8B,YAAcA,EACxDzjF,EAAS4C,EAAM5C,OACfsmH,EAAiB1jH,EAAM9C,QACvBA,OAA6B,IAAnBwmH,GAAoCA,EAC9CC,EAAkB3jH,EAAM4jH,SACxBA,OAA+B,IAApBD,GAAoCA,EAC/CE,EAAwB7jH,EAAM8jH,uBAC9BA,OAAmD,IAA1BD,GAA0CA,EACnEE,EAAY/jH,EAAM+jH,UAClBC,EAAgBhkH,EAAMgkH,cACtBC,EAAYjkH,EAAMikH,UAClBjhB,EAAUhjG,EAAMgjG,QAChB1I,EAAkBt6F,EAAMs6F,gBACxB4pB,EAAalkH,EAAMkkH,WACnBxqC,EAAiB15E,EAAM05E,eACvBrrF,EAAY2R,EAAM3R,UAClB81H,EAAkBnkH,EAAMo1G,SACxBA,OAA+B,IAApB+O,GAAoCA,EAC/CC,EAAcpkH,EAAM+9E,KACpBA,OAAuB,IAAhBqmC,GAAgCA,EACvC1hC,EAAqB1iF,EAAM0iF,mBAC3BC,EAAgB3iF,EAAM2iF,cACtBjB,EAAsB1hF,EAAM2hF,aAC5BA,OAAuC,IAAxBD,GAAwCA,EACvD2iC,EAAYrkH,EAAMqkH,UAClBb,EAAYxjH,EAAMwjH,UAClB7+C,EAAgB3kE,EAAM2kE,cACpB2/C,GAA8B,IAAArrD,UAC9Bse,GAAa,IAAAte,UACbsrD,GAAa,IAAAtrD,UACb9D,EAAkB,WAAej4D,GACnCk4D,GAAmB,QAAeD,EAAiB,GACnDqvD,EAAkBpvD,EAAiB,GACnCqvD,EAAqBrvD,EAAiB,GAGpC2sD,EAAS,KAuCb,SAASxc,EAAgB14G,GACvBm2G,SAAkDA,EAAQn2G,EAC5D,CAGA,IAAI63H,GAAkB,IAAAzrD,SAAO,GACzB0rD,GAAoB,IAAA1rD,UAepB2rD,EAAiB,KAyCrB,OAxCIjjC,IACFijC,EAAiB,SAAwB/3H,GACnC63H,EAAgBt0H,QAClBs0H,EAAgBt0H,SAAU,EACjBmnF,EAAWnnF,UAAYvD,EAAEwE,QAClCk0G,EAAgB14G,EAEpB,IAkBF,IAAAg6E,YAAU,WACJ3pE,IACFunH,GAAmB,IAtFhB,EAAAvsD,GAAA,GAASqf,EAAWnnF,QAASkD,SAASovH,iBACzC4B,EAA4Bl0H,QAAUkD,SAASovH,eAwFnD,GAAG,CAACxlH,KAGJ,IAAA2pE,YAAU,WACR,OAAO,WACLv5E,aAAaq3H,EAAkBv0H,QACjC,CACF,GAAG,IAGiB,gBAAoB,OAAO,OAAS,CACtDmM,UAAW,IAAW,GAAGL,OAAOksD,EAAW,SAAUuc,IACpD/jB,GAAU5gD,EAAO,CAClBqO,MAAM,KACU,gBAAoB,GAAM,CAC1C+5C,UAAWA,EACXlrD,QAAS6gF,GAAQ7gF,EACjBk7D,WAAYspD,GAAct5D,EAAWs6B,EAAoBC,GACzDluF,OAAO,QAAc,CACnB2I,OAAQA,GACPinH,GACHb,UAAWA,IACI,gBAAoB,OAAO,OAAS,CACnDz6D,UAAW,EACXjD,UA7CF,SAA0Bj5D,GACxB,GAAI+2H,GAAY/2H,EAAEgpH,UAAYC,GAAA,EAAQ+O,IAGpC,OAFAh4H,EAAEye,uBACFi6F,EAAgB14G,GAKdqQ,GACErQ,EAAEgpH,UAAYC,GAAA,EAAQgP,KACxBP,EAAWn0H,QAAQqyH,cAAc51H,EAAEk4H,SAGzC,EAiCExoH,UAAW,IAAW,GAAGL,OAAOksD,EAAW,SAAU47D,GACrDjpE,IAAKw8B,EACL/xB,QAASo/D,EACTnwH,OAAO,SAAc,QAAc,CACjC2I,OAAQA,GACP2mH,GAAY,CAAC,EAAG,CACjB/vE,QAAUwwE,EAA2B,KAAT,UAE7BP,GAAyB,gBAAoB,IAAS,OAAS,CAAC,EAAGjkH,EAAO,CAC3EoiH,YA7EuB,WACvB90H,aAAaq3H,EAAkBv0H,SAC/Bs0H,EAAgBt0H,SAAU,CAC5B,EA2EEiyH,UA1EqB,WACrBsC,EAAkBv0H,QAAUnE,YAAW,WACrCy4H,EAAgBt0H,SAAU,CAC5B,GACF,EAuEE2qD,IAAKwpE,EACLnP,SAAUA,EACV2M,OAAQA,EACR35D,UAAWA,EACXlrD,QAASA,GAAWsnH,EACpBxhB,QAASuC,EACTpnB,iBAvHF,SAAgC6mC,GAE9B,GAAIA,GATC,EAAA9sD,GAAA,GAASqf,EAAWnnF,QAASkD,SAASovH,gBAEM,QAA9CuC,EAAsBV,EAAWn0H,eAA6C,IAAxB60H,GAA0CA,EAAoBv/D,YAShH,CAGL,GADA++D,GAAmB,GACf1mC,GAAQumC,EAA4Bl0H,SAAW0zH,EAAwB,CACzE,IACEQ,EAA4Bl0H,QAAQs1D,MAAM,CACxCw/D,eAAe,GAEnB,CAAE,MAAOr4H,KAET,CACAy3H,EAA4Bl0H,QAAU,IACxC,CAGIo0H,IACFN,SAAwDA,IAE5D,CA9BF,IAEQe,EA6BN3qB,SAAkEA,EAAgB0qB,EACpF,EAgGE5sD,WAAYspD,GAAct5D,EAAWsxB,EAAgBrrF,OAEzD,CC7KA,IAAI82H,GAAa,SAAoBnlH,GACnC,IAAI9C,EAAU8C,EAAM9C,QAClBqyE,EAAevvE,EAAMuvE,aACrB+O,EAAct+E,EAAMs+E,YACpB8mC,EAAwBplH,EAAMijH,eAC9BA,OAA2C,IAA1BmC,GAA2CA,EAC5DC,EAAcrlH,EAAMkkH,WAClB/uD,EAAkB,WAAej4D,GACnCk4D,GAAmB,QAAeD,EAAiB,GACnDqvD,EAAkBpvD,EAAiB,GACnCqvD,EAAqBrvD,EAAiB,GAkBxC,OAjBA,aAAgB,WACVl4D,GACFunH,GAAmB,EAEvB,GAAG,CAACvnH,IAaCohF,IAAe2kC,GAAmBuB,EAGnB,gBAAoB,GAAQ,CAC9C/hE,KAAMvlD,GAAWohF,GAAekmC,EAChC50C,aAAa,EACbL,aAAcA,EACdE,SAAUvyE,GAAWsnH,GACP,gBAAoBf,IAAQ,OAAS,CAAC,EAAGzjH,EAAO,CAC9DijH,eAAgBA,EAChBiB,WAAY,WACVmB,SAA0DA,IAC1DZ,GAAmB,EACrB,MAZO,IAcX,EACAU,GAAWnmE,YAAc,SACzB,ICxDA,GDwDA,GEzDO,IAIHsmE,GAJOC,GAAmB,WAC5B,OAAO,EAAAn6C,GAAA,MAAev/E,OAAOyH,SAAS47E,eACxC,cCFWs2C,GAAY,yBAEnBC,GAAc,YAChB,UAAQ,EAAO,wEACjB,EAmCA,GAlC2B,gBAAoB,CAC7CC,cAAeD,GACfE,eAAgBF,GAChBG,cAAeH,GACfI,gBAAiBJ,GACjBK,eAAgBL,GAChBM,gBAAiBN,GACjBO,eAAgBP,GAChBQ,kBAAmBR,GACnBS,mBAAoBT,GACpBU,YAAaV,GACbW,UAAWX,GACXY,cAAeZ,GACfa,eAAgBb,GAChBc,eAAgBd,GAChBe,OAAQf,GACRgB,iBAAkB,WAEhB,OADAhB,KACO,CACLiB,SAAUjB,GACVkB,gBAAiBlB,GACjBmB,cAAenB,GACfoB,aAAcpB,GACdqB,iBAAkBrB,GAClBsB,YAAatB,GACbuB,aAAcvB,GACdwB,cAAexB,GACfyB,UAAWzB,GACX0B,oBAAqB1B,GACrB2B,YAAa3B,GACb4B,gBAAiB5B,GAErB,ICrCF,GAD+B,gBAAoB,MCD5C,SAAS,GAAQ36H,GACtB,OAAIA,QACK,GAEFs+B,MAAMC,QAAQv+B,GAASA,EAAQ,CAACA,EACzC,CCLA,SAASw8H,KAYP,OAXAA,GAAWnnH,OAAO89B,OAAS99B,OAAO89B,OAAOlyC,OAAS,SAAUsF,GAC1D,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CACzC,IAAImwB,EAASzwB,UAAUM,GACvB,IAAK,IAAI2/B,KAAOxP,EACV7Z,OAAOtX,UAAUqX,eAAe3V,KAAKyvB,EAAQwP,KAC/Cn4B,EAAOm4B,GAAOxP,EAAOwP,GAG3B,CACA,OAAOn4B,CACT,EACOi2H,GAASt9H,MAAMrB,KAAMY,UAC9B,CAMA,SAASg+H,GAAgBx5G,GAIvB,OAHAw5G,GAAkBpnH,OAAOo0C,eAAiBp0C,OAAOupB,eAAe39B,OAAS,SAAyBgiB,GAChG,OAAOA,EAAEymC,WAAar0C,OAAOupB,eAAe3b,EAC9C,EACOw5G,GAAgBx5G,EACzB,CACA,SAASy5G,GAAgBz5G,EAAGhH,GAK1B,OAJAygH,GAAkBrnH,OAAOo0C,eAAiBp0C,OAAOo0C,eAAexoD,OAAS,SAAyBgiB,EAAGhH,GAEnG,OADAgH,EAAEymC,UAAYztC,EACPgH,CACT,EACOy5G,GAAgBz5G,EAAGhH,EAC5B,CAYA,SAAS0gH,GAAWC,EAAQr+H,EAAMs+H,GAahC,OATEF,GAfJ,WACE,GAAuB,oBAAZG,UAA4BA,QAAQC,UAAW,OAAO,EACjE,GAAID,QAAQC,UAAUC,KAAM,OAAO,EACnC,GAAqB,mBAAVC,MAAsB,OAAO,EACxC,IAEE,OADAxqD,QAAQ10E,UAAU03C,QAAQh2C,KAAKq9H,QAAQC,UAAUtqD,QAAS,IAAI,WAAa,MACpE,CACT,CAAE,MAAO1wE,KACP,OAAO,CACT,CACF,CAEMm7H,GACWJ,QAAQC,UAAU97H,OAElB,SAAoB27H,EAAQr+H,EAAMs+H,GAC7C,IAAI7gH,EAAI,CAAC,MACTA,EAAE5d,KAAKc,MAAM8c,EAAGzd,GAChB,IACIsyH,EAAW,IADG/pC,SAAS7lF,KAAK/B,MAAM09H,EAAQ5gH,IAG9C,OADI6gH,GAAOH,GAAgB7L,EAAUgM,EAAM9+H,WACpC8yH,CACT,EAEK8L,GAAWz9H,MAAM,KAAMT,UAChC,CAIA,SAAS0+H,GAAiBN,GACxB,IAAIO,EAAwB,mBAARxgH,IAAqB,IAAIA,SAAQ0X,EAuBrD,OAtBA6oG,GAAmB,SAA0BN,GAC3C,GAAc,OAAVA,IANmB3rH,EAMkB2rH,GALqB,IAAzD/1C,SAASrmE,SAAShhB,KAAKyR,GAAIH,QAAQ,kBAKS,OAAO8rH,EAN5D,IAA2B3rH,EAOvB,GAAqB,mBAAV2rH,EACT,MAAM,IAAIj6H,UAAU,sDAEtB,QAAsB,IAAXw6H,EAAwB,CACjC,GAAIA,EAAOz9F,IAAIk9F,GAAQ,OAAOO,EAAOv9H,IAAIg9H,GACzCO,EAAOr9H,IAAI88H,EAAOQ,EACpB,CACA,SAASA,IACP,OAAOV,GAAWE,EAAOp+H,UAAWg+H,GAAgB5+H,MAAM8E,YAC5D,CASA,OARA06H,EAAQt/H,UAAYsX,OAAO0wB,OAAO82F,EAAM9+H,UAAW,CACjD4E,YAAa,CACX3C,MAAOq9H,EACP72F,YAAY,EACZuqB,UAAU,EACVD,cAAc,KAGX4rE,GAAgBW,EAASR,EAClC,EACOM,GAAiBN,EAC1B,CAGA,IAAIS,GAAe,WAcnB,SAASC,GAAmBC,GAC1B,IAAKA,IAAWA,EAAO9+H,OAAQ,OAAO,KACtC,IAAI++H,EAAS,CAAC,EAMd,OALAD,EAAOv3H,SAAQ,SAAUglD,GACvB,IAAIyyE,EAAQzyE,EAAMyyE,MAClBD,EAAOC,GAASD,EAAOC,IAAU,GACjCD,EAAOC,GAAOt/H,KAAK6sD,EACrB,IACOwyE,CACT,CACA,SAAS5rF,GAAO+4D,GACd,IAAK,IAAIxjD,EAAO3oD,UAAUC,OAAQH,EAAO,IAAI+/B,MAAM8oB,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IAClG9oD,EAAK8oD,EAAO,GAAK5oD,UAAU4oD,GAE7B,IAAItoD,EAAI,EACJs5B,EAAM95B,EAAKG,OACf,GAAwB,mBAAbksG,EACT,OAAOA,EAAS1rG,MAAM,KAAMX,GAE9B,GAAwB,iBAAbqsG,EAAuB,CAChC,IAAIrrE,EAAMqrE,EAASnnF,QAAQ65G,IAAc,SAAUx0H,GACjD,GAAU,OAANA,EACF,MAAO,IAET,GAAI/J,GAAKs5B,EACP,OAAOvvB,EAET,OAAQA,GACN,IAAK,KACH,OAAO0a,OAAOjlB,EAAKQ,MACrB,IAAK,KACH,OAAO+gB,OAAOvhB,EAAKQ,MACrB,IAAK,KACH,IACE,OAAO8/C,KAAKF,UAAUpgD,EAAKQ,KAC7B,CAAE,MAAOwlC,GACP,MAAO,YACT,CACA,MACF,QACE,OAAOz7B,EAEb,IACA,OAAOy2B,CACT,CACA,OAAOqrE,CACT,CAIA,SAAS+yB,GAAa39H,EAAOwG,GAC3B,OAAIxG,YAGS,UAATwG,IAAoB83B,MAAMC,QAAQv+B,IAAWA,EAAMtB,YAPzD,SAA4B8H,GAC1B,MAAgB,WAATA,GAA8B,QAATA,GAA2B,QAATA,GAA2B,UAATA,GAA6B,SAATA,GAA4B,YAATA,CACzG,CAQMo3H,CAAmBp3H,IAA0B,iBAAVxG,GAAuBA,GAIhE,CAgBA,SAAS69H,GAAiBvpH,EAAK8pB,EAAMlgC,GACnC,IAAI2H,EAAQ,EACRi4H,EAAYxpH,EAAI5V,QACpB,SAAS00B,EAAKoqG,GACZ,GAAIA,GAAUA,EAAO9+H,OACnBR,EAASs/H,OADX,CAIA,IAAIO,EAAWl4H,EACfA,GAAgB,EACZk4H,EAAWD,EACb1/F,EAAK9pB,EAAIypH,GAAW3qG,GAEpBl1B,EAAS,GANX,CAQF,CACAk1B,CAAK,GACP,CAQA,IAAI4qG,GAAoC,SAAUC,GA/LlD,IAAwBC,EAAUC,EAiMhC,SAASH,EAAqBR,EAAQC,GACpC,IAAIn/H,EAIJ,OAHAA,EAAQ2/H,EAAOx+H,KAAK5B,KAAM,2BAA6BA,MACjD2/H,OAASA,EACfl/H,EAAMm/H,OAASA,EACRn/H,CACT,CACA,OAxMgC6/H,EAgMKF,GAhMfC,EAgMPF,GA/LNjgI,UAAYsX,OAAO0wB,OAAOo4F,EAAWpgI,WAC9CmgI,EAASngI,UAAU4E,YAAcu7H,EACjCxB,GAAgBwB,EAAUC,GAqMnBH,CACT,CAVwC,CAUxBb,GAAiBr3F,QACjC,SAASs4F,GAASC,EAAQ9nE,EAAQn4B,EAAMlgC,EAAUgxB,GAChD,GAAIqnC,EAAOn8B,MAAO,CAChB,IAAIkkG,EAAW,IAAI75F,SAAQ,SAAUS,EAASC,GAC5C,IAIIo5F,EAzBV,SAAuBF,GACrB,IAAI5+E,EAAM,GAIV,OAHApqC,OAAOopB,KAAK4/F,GAAQp4H,SAAQ,SAAU1B,GACpCk7C,EAAIrhD,KAAKc,MAAMugD,EAAK4+E,EAAO95H,IAAM,GACnC,IACOk7C,CACT,CAmBuB++E,CAAcH,GAC/BR,GAAiBU,EAAYngG,GALlB,SAAco/F,GAEvB,OADAt/H,EAASs/H,GACFA,EAAO9+H,OAASymC,EAAO,IAAI64F,GAAqBR,EAAQD,GAAmBC,KAAYt4F,EAAQhW,EACxG,GAGF,IAIA,OAHAovG,EAAgB,OAAE,SAAUv8H,GAC1B,OAAOA,CACT,IACOu8H,CACT,CACA,IAAIG,GAAqC,IAAvBloE,EAAOkoE,YAAuBppH,OAAOopB,KAAK4/F,GAAU9nE,EAAOkoE,aAAe,GACxFC,EAAarpH,OAAOopB,KAAK4/F,GACzBM,EAAeD,EAAWhgI,OAC1Bi4D,EAAQ,EACRioE,EAAU,GACVC,EAAU,IAAIp6F,SAAQ,SAAUS,EAASC,GAC3C,IAAI/R,EAAO,SAAcoqG,GAGvB,GAFAoB,EAAQxgI,KAAKc,MAAM0/H,EAASpB,KAC5B7mE,IACcgoE,EAEZ,OADAzgI,EAAS0gI,GACFA,EAAQlgI,OAASymC,EAAO,IAAI64F,GAAqBY,EAASrB,GAAmBqB,KAAa15F,EAAQhW,EAE7G,EACKwvG,EAAWhgI,SACdR,EAAS0gI,GACT15F,EAAQhW,IAEVwvG,EAAWz4H,SAAQ,SAAUy4B,GAC3B,IAAIpqB,EAAM+pH,EAAO3/F,IACiB,IAA9B+/F,EAAY1tH,QAAQ2tB,GACtBm/F,GAAiBvpH,EAAK8pB,EAAMhL,GAvFpC,SAA4B9e,EAAK8pB,EAAMlgC,GACrC,IAAI0gI,EAAU,GACVjoE,EAAQ,EACRmnE,EAAYxpH,EAAI5V,OACpB,SAASiwB,EAAM6uG,GACboB,EAAQxgI,KAAKc,MAAM0/H,EAASpB,GAAU,MACtC7mE,IACcmnE,GACZ5/H,EAAS0gI,EAEb,CACAtqH,EAAIrO,SAAQ,SAAU+V,GACpBoiB,EAAKpiB,EAAG2S,EACV,GACF,CA2EQmwG,CAAmBxqH,EAAK8pB,EAAMhL,EAElC,GACF,IAIA,OAHAyrG,EAAe,OAAE,SAAU98H,GACzB,OAAOA,CACT,IACO88H,CACT,CAcA,SAASE,GAAgBC,EAAM9vG,GAC7B,OAAO,SAAU+vG,GACf,IAAIC,EAfYttG,EAqBhB,OAJEstG,EADEF,EAAKG,WAbb,SAAkBn/H,EAAO0E,GAEvB,IADA,IAAIoL,EAAI9P,EACCjB,EAAI,EAAGA,EAAI2F,EAAKhG,OAAQK,IAAK,CACpC,GAASu1B,MAALxkB,EACF,OAAOA,EAETA,EAAIA,EAAEpL,EAAK3F,GACb,CACA,OAAO+Q,CACT,CAKmBsvH,CAASlwG,EAAQ8vG,EAAKG,YAEtBjwG,EAAO+vG,EAAGvB,OAASsB,EAAKK,YAnBvBztG,EAqBDqtG,SApBgB3qG,IAAhB1C,EAAIwnF,SAqBjB6lB,EAAGvB,MAAQuB,EAAGvB,OAASsB,EAAKK,UAC5BJ,EAAGC,WAAaA,EACTD,GAEF,CACL7lB,QAAuB,mBAAP6lB,EAAoBA,IAAOA,EAC3CC,WAAYA,EACZxB,MAAOuB,EAAGvB,OAASsB,EAAKK,UAE5B,CACF,CACA,SAASC,GAAU/4H,EAAQ2oB,GACzB,GAAIA,EACF,IAAK,IAAIvT,KAAKuT,EACZ,GAAIA,EAAO9Z,eAAeuG,GAAI,CAC5B,IAAI3b,EAAQkvB,EAAOvT,GACE,iBAAV3b,GAA2C,iBAAduG,EAAOoV,GAC7CpV,EAAOoV,GAAK6gH,GAAS,CAAC,EAAGj2H,EAAOoV,GAAI3b,GAEpCuG,EAAOoV,GAAK3b,CAEhB,CAGJ,OAAOuG,CACT,CACA,IAyBIg5H,GAzBAC,GAAa,SAAkBR,EAAMh/H,EAAOkvB,EAAQsuG,EAAQx6F,EAASx8B,IACnEw4H,EAAKv5D,UAAcv2C,EAAO9Z,eAAe4pH,EAAKtB,SAAUC,GAAa39H,EAAOwG,GAAQw4H,EAAKx4H,OAC3Fg3H,EAAOp/H,KAAKyzC,GAAO7O,EAAQy8F,SAASh6D,SAAUu5D,EAAKK,WAEvD,EA8DIK,GAEK,uOAFLA,GAOG,iCAEH55D,GAAQ,CACVG,QAAS,SAAiBjmE,GACxB,OAAO8lE,GAAMC,OAAO/lE,IAAU+xC,SAAS/xC,EAAO,MAAQA,CACxD,EACA,MAAS,SAAeA,GACtB,OAAO8lE,GAAMC,OAAO/lE,KAAW8lE,GAAMG,QAAQjmE,EAC/C,EACAogC,MAAO,SAAepgC,GACpB,OAAOs+B,MAAMC,QAAQv+B,EACvB,EACAmmE,OAAQ,SAAgBnmE,GACtB,GAAIA,aAAiB2iB,OACnB,OAAO,EAET,IACE,QAAS,IAAIA,OAAO3iB,EACtB,CAAE,MAAO+B,KACP,OAAO,CACT,CACF,EACA6jE,KAAM,SAAc5lE,GAClB,MAAgC,mBAAlBA,EAAMoG,SAAoD,mBAAnBpG,EAAM2/H,UAAoD,mBAAlB3/H,EAAM4/H,UAA2B7/G,MAAM/f,EAAMoG,UAC5I,EACA2/D,OAAQ,SAAgB/lE,GACtB,OAAI+f,MAAM/f,IAGc,iBAAVA,CAChB,EACAwiC,OAAQ,SAAgBxiC,GACtB,MAAwB,iBAAVA,IAAuB8lE,GAAM1lC,MAAMpgC,EACnD,EACAwJ,OAAQ,SAAgBxJ,GACtB,MAAwB,mBAAVA,CAChB,EACAomE,MAAO,SAAepmE,GACpB,MAAwB,iBAAVA,GAAsBA,EAAMtB,QAAU,OAASsB,EAAM84B,MAAM4mG,GAC3E,EACAloE,IAAK,SAAax3D,GAChB,MAAwB,iBAAVA,GAAsBA,EAAMtB,QAAU,QAAUsB,EAAM84B,MAxFtD,WAChB,GAAIymG,GACF,OAAOA,GAET,IAAIM,EAAO,eACP/+G,EAAI,SAAWkiB,GACjB,OAAOA,GAAWA,EAAQ88F,kBAAoB,mBAAqBD,EAAO,SAAWA,EAAO,cAAgB,EAC9G,EACIE,EAAK,iGACLC,EAAQ,mBACRC,GAAM,aAAeD,EAAQ,WAAaA,EAAQ,mFAAqFA,EAAQ,WAAaD,EAAK,KAAOC,EAAQ,kHAAoHA,EAAQ,YAAcD,EAAK,QAAUC,EAAQ,8GAAgHA,EAAQ,eAAiBA,EAAQ,UAAYD,EAAK,QAAUC,EAAQ,4FAA8FA,EAAQ,eAAiBA,EAAQ,UAAYD,EAAK,QAAUC,EAAQ,4FAA8FA,EAAQ,eAAiBA,EAAQ,UAAYD,EAAK,QAAUC,EAAQ,4FAA8FA,EAAQ,eAAiBA,EAAQ,UAAYD,EAAK,QAAUC,EAAQ,oGAAsGA,EAAQ,UAAYD,EAAK,QAAUC,EAAQ,sLAAsLv8G,QAAQ,eAAgB,IAAIA,QAAQ,MAAO,IAAIiO,OAEj2CwuG,EAAW,IAAIv9G,OAAO,OAASo9G,EAAK,UAAYE,EAAK,MACrDE,EAAU,IAAIx9G,OAAO,IAAMo9G,EAAK,KAChCK,EAAU,IAAIz9G,OAAO,IAAMs9G,EAAK,KAChCI,EAAK,SAAYr9F,GACnB,OAAOA,GAAWA,EAAQs9F,MAAQJ,EAAW,IAAIv9G,OAAO,MAAQ7B,EAAEkiB,GAAW+8F,EAAKj/G,EAAEkiB,GAAW,QAAUliB,EAAEkiB,GAAWi9F,EAAKn/G,EAAEkiB,GAAW,IAAK,IAC/I,EACAq9F,EAAGN,GAAK,SAAU/8F,GAChB,OAAOA,GAAWA,EAAQs9F,MAAQH,EAAU,IAAIx9G,OAAO,GAAK7B,EAAEkiB,GAAW+8F,EAAKj/G,EAAEkiB,GAAU,IAC5F,EACAq9F,EAAGJ,GAAK,SAAUj9F,GAChB,OAAOA,GAAWA,EAAQs9F,MAAQF,EAAU,IAAIz9G,OAAO,GAAK7B,EAAEkiB,GAAWi9F,EAAKn/G,EAAEkiB,GAAU,IAC5F,EACA,IAEIu9F,EAAOF,EAAGN,KAAK7wG,OACfsxG,EAAOH,EAAGJ,KAAK/wG,OAQnB,OADAqwG,GAAS,IAAI58G,OAAO,qEADiD49G,EAAO,IAAMC,EAC9D,qMAAuB,IAE7C,CAoD8EC,GAC5E,EACAjuF,IAAK,SAAaxyC,GAChB,MAAwB,iBAAVA,KAAwBA,EAAM84B,MAAM4mG,GACpD,GA4DEgB,GAAS,OAyBTC,GAAQ,CACVl7D,SAAU+5D,GACV75D,WA3Le,SAAoBq5D,EAAMh/H,EAAOkvB,EAAQsuG,EAAQx6F,IAC5D,QAAQ7/B,KAAKnD,IAAoB,KAAVA,IACzBw9H,EAAOp/H,KAAKyzC,GAAO7O,EAAQy8F,SAAS95D,WAAYq5D,EAAKK,WAEzD,EAwLE74H,KAtFW,SAAcw4H,EAAMh/H,EAAOkvB,EAAQsuG,EAAQx6F,GACtD,GAAIg8F,EAAKv5D,eAAsBnxC,IAAVt0B,EACnBw/H,GAAWR,EAAMh/H,EAAOkvB,EAAQsuG,EAAQx6F,OAD1C,CAIA,IACI49F,EAAW5B,EAAKx4H,KADP,CAAC,UAAW,QAAS,QAAS,SAAU,SAAU,SAAU,QAAS,SAAU,OAAQ,MAAO,OAEhGuK,QAAQ6vH,IAAa,EACzB96D,GAAM86D,GAAU5gI,IACnBw9H,EAAOp/H,KAAKyzC,GAAO7O,EAAQy8F,SAAS35D,MAAM86D,GAAW5B,EAAKK,UAAWL,EAAKx4H,OAEnEo6H,UAAmB5gI,IAAUg/H,EAAKx4H,MAC3Cg3H,EAAOp/H,KAAKyzC,GAAO7O,EAAQy8F,SAAS35D,MAAM86D,GAAW5B,EAAKK,UAAWL,EAAKx4H,MAR5E,CAUF,EAyEEg/C,MAxEU,SAAew5E,EAAMh/H,EAAOkvB,EAAQsuG,EAAQx6F,GACtD,IAAI3K,EAA0B,iBAAb2mG,EAAK3mG,IAClBtgB,EAA0B,iBAAbinH,EAAKjnH,IAClBC,EAA0B,iBAAbgnH,EAAKhnH,IAGlB9U,EAAMlD,EACN0+B,EAAM,KACN2wD,EAAuB,iBAAVrvF,EACbu/B,EAAuB,iBAAVv/B,EACbsU,EAAMgqB,MAAMC,QAAQv+B,GAWxB,GAVIqvF,EACF3wD,EAAM,SACGa,EACTb,EAAM,SACGpqB,IACToqB,EAAM,UAKHA,EACH,OAAO,EAELpqB,IACFpR,EAAMlD,EAAMtB,QAEV6gC,IAEFr8B,EAAMlD,EAAMyjB,QAxBC,kCAwBiB,KAAK/kB,QAEjC25B,EACEn1B,IAAQ87H,EAAK3mG,KACfmlG,EAAOp/H,KAAKyzC,GAAO7O,EAAQy8F,SAAS/gG,GAAKrG,IAAK2mG,EAAKK,UAAWL,EAAK3mG,MAE5DtgB,IAAQC,GAAO9U,EAAM87H,EAAKjnH,IACnCylH,EAAOp/H,KAAKyzC,GAAO7O,EAAQy8F,SAAS/gG,GAAK3mB,IAAKinH,EAAKK,UAAWL,EAAKjnH,MAC1DC,IAAQD,GAAO7U,EAAM87H,EAAKhnH,IACnCwlH,EAAOp/H,KAAKyzC,GAAO7O,EAAQy8F,SAAS/gG,GAAK1mB,IAAKgnH,EAAKK,UAAWL,EAAKhnH,MAC1DD,GAAOC,IAAQ9U,EAAM87H,EAAKjnH,KAAO7U,EAAM87H,EAAKhnH,MACrDwlH,EAAOp/H,KAAKyzC,GAAO7O,EAAQy8F,SAAS/gG,GAAK8mB,MAAOw5E,EAAKK,UAAWL,EAAKjnH,IAAKinH,EAAKhnH,KAEnF,EA+BE,KA7BiB,SAAoBgnH,EAAMh/H,EAAOkvB,EAAQsuG,EAAQx6F,GAClEg8F,EAAK0B,IAAUpiG,MAAMC,QAAQygG,EAAK0B,KAAW1B,EAAK0B,IAAU,IACvB,IAAjC1B,EAAK0B,IAAQ3vH,QAAQ/Q,IACvBw9H,EAAOp/H,KAAKyzC,GAAO7O,EAAQy8F,SAASiB,IAAS1B,EAAKK,UAAWL,EAAK0B,IAAQx5G,KAAK,OAEnF,EAyBEm/C,QAxBc,SAAiB24D,EAAMh/H,EAAOkvB,EAAQsuG,EAAQx6F,GAC5D,GAAIg8F,EAAK34D,QACP,GAAI24D,EAAK34D,mBAAmB1jD,OAI1Bq8G,EAAK34D,QAAQ5gC,UAAY,EACpBu5F,EAAK34D,QAAQljE,KAAKnD,IACrBw9H,EAAOp/H,KAAKyzC,GAAO7O,EAAQy8F,SAASp5D,QAAQC,SAAU04D,EAAKK,UAAWr/H,EAAOg/H,EAAK34D,eAE/E,GAA4B,iBAAjB24D,EAAK34D,QAAsB,CAC5B,IAAI1jD,OAAOq8G,EAAK34D,SACjBljE,KAAKnD,IACjBw9H,EAAOp/H,KAAKyzC,GAAO7O,EAAQy8F,SAASp5D,QAAQC,SAAU04D,EAAKK,UAAWr/H,EAAOg/H,EAAK34D,SAEtF,CAEJ,GA+MI7/D,GAAO,SAAcw4H,EAAMh/H,EAAO9B,EAAUgxB,EAAQ8T,GACtD,IAAI49F,EAAW5B,EAAKx4H,KAChBg3H,EAAS,GAEb,GADewB,EAAKv5D,WAAau5D,EAAKv5D,UAAYv2C,EAAO9Z,eAAe4pH,EAAKtB,OAC/D,CACZ,GAAIC,GAAa39H,EAAO4gI,KAAc5B,EAAKv5D,SACzC,OAAOvnE,IAETyiI,GAAMl7D,SAASu5D,EAAMh/H,EAAOkvB,EAAQsuG,EAAQx6F,EAAS49F,GAChDjD,GAAa39H,EAAO4gI,IACvBD,GAAMn6H,KAAKw4H,EAAMh/H,EAAOkvB,EAAQsuG,EAAQx6F,EAE5C,CACA9kC,EAASs/H,EACX,EAYIqD,GAAa,CACfz8E,OAjOW,SAAgB46E,EAAMh/H,EAAO9B,EAAUgxB,EAAQ8T,GAC1D,IAAIw6F,EAAS,GAEb,GADewB,EAAKv5D,WAAau5D,EAAKv5D,UAAYv2C,EAAO9Z,eAAe4pH,EAAKtB,OAC/D,CACZ,GAAIC,GAAa39H,EAAO,YAAcg/H,EAAKv5D,SACzC,OAAOvnE,IAETyiI,GAAMl7D,SAASu5D,EAAMh/H,EAAOkvB,EAAQsuG,EAAQx6F,EAAS,UAChD26F,GAAa39H,EAAO,YACvB2gI,GAAMn6H,KAAKw4H,EAAMh/H,EAAOkvB,EAAQsuG,EAAQx6F,GACxC29F,GAAMn7E,MAAMw5E,EAAMh/H,EAAOkvB,EAAQsuG,EAAQx6F,GACzC29F,GAAMt6D,QAAQ24D,EAAMh/H,EAAOkvB,EAAQsuG,EAAQx6F,IACnB,IAApBg8F,EAAKr5D,YACPg7D,GAAMh7D,WAAWq5D,EAAMh/H,EAAOkvB,EAAQsuG,EAAQx6F,GAGpD,CACA9kC,EAASs/H,EACX,EAgNEh0H,OA/MW,SAAgBw1H,EAAMh/H,EAAO9B,EAAUgxB,EAAQ8T,GAC1D,IAAIw6F,EAAS,GAEb,GADewB,EAAKv5D,WAAau5D,EAAKv5D,UAAYv2C,EAAO9Z,eAAe4pH,EAAKtB,OAC/D,CACZ,GAAIC,GAAa39H,KAAWg/H,EAAKv5D,SAC/B,OAAOvnE,IAETyiI,GAAMl7D,SAASu5D,EAAMh/H,EAAOkvB,EAAQsuG,EAAQx6F,QAC9B1O,IAAVt0B,GACF2gI,GAAMn6H,KAAKw4H,EAAMh/H,EAAOkvB,EAAQsuG,EAAQx6F,EAE5C,CACA9kC,EAASs/H,EACX,EAmMEz3D,OAlMW,SAAgBi5D,EAAMh/H,EAAO9B,EAAUgxB,EAAQ8T,GAC1D,IAAIw6F,EAAS,GAEb,GADewB,EAAKv5D,WAAau5D,EAAKv5D,UAAYv2C,EAAO9Z,eAAe4pH,EAAKtB,OAC/D,CAIZ,GAHc,KAAV19H,IACFA,OAAQs0B,GAENqpG,GAAa39H,KAAWg/H,EAAKv5D,SAC/B,OAAOvnE,IAETyiI,GAAMl7D,SAASu5D,EAAMh/H,EAAOkvB,EAAQsuG,EAAQx6F,QAC9B1O,IAAVt0B,IACF2gI,GAAMn6H,KAAKw4H,EAAMh/H,EAAOkvB,EAAQsuG,EAAQx6F,GACxC29F,GAAMn7E,MAAMw5E,EAAMh/H,EAAOkvB,EAAQsuG,EAAQx6F,GAE7C,CACA9kC,EAASs/H,EACX,EAkLE,QAjLa,SAAkBwB,EAAMh/H,EAAO9B,EAAUgxB,EAAQ8T,GAC9D,IAAIw6F,EAAS,GAEb,GADewB,EAAKv5D,WAAau5D,EAAKv5D,UAAYv2C,EAAO9Z,eAAe4pH,EAAKtB,OAC/D,CACZ,GAAIC,GAAa39H,KAAWg/H,EAAKv5D,SAC/B,OAAOvnE,IAETyiI,GAAMl7D,SAASu5D,EAAMh/H,EAAOkvB,EAAQsuG,EAAQx6F,QAC9B1O,IAAVt0B,GACF2gI,GAAMn6H,KAAKw4H,EAAMh/H,EAAOkvB,EAAQsuG,EAAQx6F,EAE5C,CACA9kC,EAASs/H,EACX,EAqKEr3D,OApKW,SAAgB64D,EAAMh/H,EAAO9B,EAAUgxB,EAAQ8T,GAC1D,IAAIw6F,EAAS,GAEb,GADewB,EAAKv5D,WAAau5D,EAAKv5D,UAAYv2C,EAAO9Z,eAAe4pH,EAAKtB,OAC/D,CACZ,GAAIC,GAAa39H,KAAWg/H,EAAKv5D,SAC/B,OAAOvnE,IAETyiI,GAAMl7D,SAASu5D,EAAMh/H,EAAOkvB,EAAQsuG,EAAQx6F,GACvC26F,GAAa39H,IAChB2gI,GAAMn6H,KAAKw4H,EAAMh/H,EAAOkvB,EAAQsuG,EAAQx6F,EAE5C,CACA9kC,EAASs/H,EACX,EAwJEv3D,QAvJY,SAAiB+4D,EAAMh/H,EAAO9B,EAAUgxB,EAAQ8T,GAC5D,IAAIw6F,EAAS,GAEb,GADewB,EAAKv5D,WAAau5D,EAAKv5D,UAAYv2C,EAAO9Z,eAAe4pH,EAAKtB,OAC/D,CACZ,GAAIC,GAAa39H,KAAWg/H,EAAKv5D,SAC/B,OAAOvnE,IAETyiI,GAAMl7D,SAASu5D,EAAMh/H,EAAOkvB,EAAQsuG,EAAQx6F,QAC9B1O,IAAVt0B,IACF2gI,GAAMn6H,KAAKw4H,EAAMh/H,EAAOkvB,EAAQsuG,EAAQx6F,GACxC29F,GAAMn7E,MAAMw5E,EAAMh/H,EAAOkvB,EAAQsuG,EAAQx6F,GAE7C,CACA9kC,EAASs/H,EACX,EA0IE,MAzIY,SAAiBwB,EAAMh/H,EAAO9B,EAAUgxB,EAAQ8T,GAC5D,IAAIw6F,EAAS,GAEb,GADewB,EAAKv5D,WAAau5D,EAAKv5D,UAAYv2C,EAAO9Z,eAAe4pH,EAAKtB,OAC/D,CACZ,GAAIC,GAAa39H,KAAWg/H,EAAKv5D,SAC/B,OAAOvnE,IAETyiI,GAAMl7D,SAASu5D,EAAMh/H,EAAOkvB,EAAQsuG,EAAQx6F,QAC9B1O,IAAVt0B,IACF2gI,GAAMn6H,KAAKw4H,EAAMh/H,EAAOkvB,EAAQsuG,EAAQx6F,GACxC29F,GAAMn7E,MAAMw5E,EAAMh/H,EAAOkvB,EAAQsuG,EAAQx6F,GAE7C,CACA9kC,EAASs/H,EACX,EA4HEp9F,MA3HU,SAAe4+F,EAAMh/H,EAAO9B,EAAUgxB,EAAQ8T,GACxD,IAAIw6F,EAAS,GAEb,GADewB,EAAKv5D,WAAau5D,EAAKv5D,UAAYv2C,EAAO9Z,eAAe4pH,EAAKtB,OAC/D,CACZ,GAAI,MAAC19H,IAA2Cg/H,EAAKv5D,SACnD,OAAOvnE,IAETyiI,GAAMl7D,SAASu5D,EAAMh/H,EAAOkvB,EAAQsuG,EAAQx6F,EAAS,SACjDhjC,UACF2gI,GAAMn6H,KAAKw4H,EAAMh/H,EAAOkvB,EAAQsuG,EAAQx6F,GACxC29F,GAAMn7E,MAAMw5E,EAAMh/H,EAAOkvB,EAAQsuG,EAAQx6F,GAE7C,CACA9kC,EAASs/H,EACX,EA8GEh7F,OA7GW,SAAgBw8F,EAAMh/H,EAAO9B,EAAUgxB,EAAQ8T,GAC1D,IAAIw6F,EAAS,GAEb,GADewB,EAAKv5D,WAAau5D,EAAKv5D,UAAYv2C,EAAO9Z,eAAe4pH,EAAKtB,OAC/D,CACZ,GAAIC,GAAa39H,KAAWg/H,EAAKv5D,SAC/B,OAAOvnE,IAETyiI,GAAMl7D,SAASu5D,EAAMh/H,EAAOkvB,EAAQsuG,EAAQx6F,QAC9B1O,IAAVt0B,GACF2gI,GAAMn6H,KAAKw4H,EAAMh/H,EAAOkvB,EAAQsuG,EAAQx6F,EAE5C,CACA9kC,EAASs/H,EACX,EAiGE,KA/Fe,SAAoBwB,EAAMh/H,EAAO9B,EAAUgxB,EAAQ8T,GAClE,IAAIw6F,EAAS,GAEb,GADewB,EAAKv5D,WAAau5D,EAAKv5D,UAAYv2C,EAAO9Z,eAAe4pH,EAAKtB,OAC/D,CACZ,GAAIC,GAAa39H,KAAWg/H,EAAKv5D,SAC/B,OAAOvnE,IAETyiI,GAAMl7D,SAASu5D,EAAMh/H,EAAOkvB,EAAQsuG,EAAQx6F,QAC9B1O,IAAVt0B,GACF2gI,GAAU,KAAE3B,EAAMh/H,EAAOkvB,EAAQsuG,EAAQx6F,EAE7C,CACA9kC,EAASs/H,EACX,EAmFEn3D,QAlFY,SAAiB24D,EAAMh/H,EAAO9B,EAAUgxB,EAAQ8T,GAC5D,IAAIw6F,EAAS,GAEb,GADewB,EAAKv5D,WAAau5D,EAAKv5D,UAAYv2C,EAAO9Z,eAAe4pH,EAAKtB,OAC/D,CACZ,GAAIC,GAAa39H,EAAO,YAAcg/H,EAAKv5D,SACzC,OAAOvnE,IAETyiI,GAAMl7D,SAASu5D,EAAMh/H,EAAOkvB,EAAQsuG,EAAQx6F,GACvC26F,GAAa39H,EAAO,WACvB2gI,GAAMt6D,QAAQ24D,EAAMh/H,EAAOkvB,EAAQsuG,EAAQx6F,EAE/C,CACA9kC,EAASs/H,EACX,EAsEE53D,KArES,SAAco5D,EAAMh/H,EAAO9B,EAAUgxB,EAAQ8T,GAEtD,IAAIw6F,EAAS,GAGb,GAFewB,EAAKv5D,WAAau5D,EAAKv5D,UAAYv2C,EAAO9Z,eAAe4pH,EAAKtB,OAE/D,CACZ,GAAIC,GAAa39H,EAAO,UAAYg/H,EAAKv5D,SACvC,OAAOvnE,IAIP,IAAI4iI,EADN,GADAH,GAAMl7D,SAASu5D,EAAMh/H,EAAOkvB,EAAQsuG,EAAQx6F,IACvC26F,GAAa39H,EAAO,QAGrB8gI,EADE9gI,aAAiBa,KACNb,EAEA,IAAIa,KAAKb,GAExB2gI,GAAMn6H,KAAKw4H,EAAM8B,EAAY5xG,EAAQsuG,EAAQx6F,GACzC89F,GACFH,GAAMn7E,MAAMw5E,EAAM8B,EAAW16H,UAAW8oB,EAAQsuG,EAAQx6F,EAG9D,CACA9kC,EAASs/H,EACX,EA8CEhmE,IAAKhxD,GACLgsC,IAAKhsC,GACL4/D,MAAO5/D,GACPi/D,SAhDa,SAAkBu5D,EAAMh/H,EAAO9B,EAAUgxB,EAAQ8T,GAC9D,IAAIw6F,EAAS,GACTh3H,EAAO83B,MAAMC,QAAQv+B,GAAS,eAAiBA,EACnD2gI,GAAMl7D,SAASu5D,EAAMh/H,EAAOkvB,EAAQsuG,EAAQx6F,EAASx8B,GACrDtI,EAASs/H,EACX,EA4CEuD,IA5BQ,SAAa/B,EAAMh/H,EAAO9B,EAAUgxB,EAAQ8T,GACpD,IAAIw6F,EAAS,GAEb,GADewB,EAAKv5D,WAAau5D,EAAKv5D,UAAYv2C,EAAO9Z,eAAe4pH,EAAKtB,OAC/D,CACZ,GAAIC,GAAa39H,KAAWg/H,EAAKv5D,SAC/B,OAAOvnE,IAETyiI,GAAMl7D,SAASu5D,EAAMh/H,EAAOkvB,EAAQsuG,EAAQx6F,EAC9C,CACA9kC,EAASs/H,EACX,GAoBA,SAASwD,KACP,MAAO,CACL,QAAW,+BACXv7D,SAAU,iBACV,KAAQ,uBACRE,WAAY,qBACZC,KAAM,CACJ/zB,OAAQ,sCACRyS,MAAO,8CACPuhB,QAAS,yBAEXC,MAAO,CACL1hB,OAAQ,iBACR56C,OAAQ,4BACR42B,MAAO,kBACPoC,OAAQ,kBACRujC,OAAQ,iBACRH,KAAM,iBACN,QAAW,iBACXK,QAAS,kBACT,MAAS,iBACTE,OAAQ,uBACRC,MAAO,uBACP5O,IAAK,uBACLhlB,IAAK,wBAEP4R,OAAQ,CACN/rB,IAAK,mCACLtgB,IAAK,oCACLC,IAAK,yCACLwtC,MAAO,2CAETugB,OAAQ,CACN1tC,IAAK,mBACLtgB,IAAK,4BACLC,IAAK,+BACLwtC,MAAO,gCAETplB,MAAO,CACL/H,IAAK,kCACLtgB,IAAK,sCACLC,IAAK,yCACLwtC,MAAO,0CAET6gB,QAAS,CACPC,SAAU,yCAEZlyD,MAAO,WACL,IAAI6sH,EAASpiF,KAAKyF,MAAMzF,KAAKF,UAAU9gD,OAEvC,OADAojI,EAAO7sH,MAAQvW,KAAKuW,MACb6sH,CACT,EAEJ,CACA,IAAIxB,GAAWuB,KASXE,GAAsB,WAGxB,SAASA,EAAO36F,GACd1oC,KAAK8iI,MAAQ,KACb9iI,KAAKsjI,UAAY1B,GACjB5hI,KAAKgzD,OAAOtqB,EACd,CACA,IAAI66F,EAASF,EAAOnjI,UAoPpB,OAnPAqjI,EAAOvwE,OAAS,SAAgB8vE,GAC9B,IAAIriI,EAAQT,KACZ,IAAK8iI,EACH,MAAM,IAAI76F,MAAM,2CAElB,GAAqB,iBAAV66F,GAAsBriG,MAAMC,QAAQoiG,GAC7C,MAAM,IAAI76F,MAAM,2BAElBjoC,KAAK8iI,MAAQ,CAAC,EACdtrH,OAAOopB,KAAKkiG,GAAO16H,SAAQ,SAAUnG,GACnC,IAAIwV,EAAOqrH,EAAM7gI,GACjBxB,EAAMqiI,MAAM7gI,GAAQw+B,MAAMC,QAAQjpB,GAAQA,EAAO,CAACA,EACpD,GACF,EACA8rH,EAAO3B,SAAW,SAAkB0B,GAIlC,OAHIA,IACFtjI,KAAKsjI,UAAY7B,GAAU0B,KAAeG,IAErCtjI,KAAKsjI,SACd,EACAC,EAAOC,SAAW,SAAkBC,EAASr+G,EAAGs+G,GAC9C,IAAI5kE,EAAS9+D,UACH,IAANolB,IACFA,EAAI,CAAC,QAEI,IAAPs+G,IACFA,EAAK,WAAe,GAEtB,IAAIryG,EAASoyG,EACTt+F,EAAU/f,EACV/kB,EAAWqjI,EAKf,GAJuB,mBAAZv+F,IACT9kC,EAAW8kC,EACXA,EAAU,CAAC,IAERnlC,KAAK8iI,OAA4C,IAAnCtrH,OAAOopB,KAAK5gC,KAAK8iI,OAAOjiI,OAIzC,OAHIR,GACFA,EAAS,KAAMgxB,GAEVuV,QAAQS,QAAQhW,GAuBzB,GAAI8T,EAAQy8F,SAAU,CACpB,IAAI+B,EAAa3jI,KAAK4hI,WAClB+B,IAAe/B,KACjB+B,EAAaR,MAEf1B,GAAUkC,EAAYx+F,EAAQy8F,UAC9Bz8F,EAAQy8F,SAAW+B,CACrB,MACEx+F,EAAQy8F,SAAW5hI,KAAK4hI,WAE1B,IAAIgC,EAAS,CAAC,GACHz+F,EAAQvE,MAAQppB,OAAOopB,KAAK5gC,KAAK8iI,QACvC16H,SAAQ,SAAUqd,GACrB,IAAIhP,EAAMqoD,EAAOgkE,MAAMr9G,GACnBtjB,EAAQkvB,EAAO5L,GACnBhP,EAAIrO,SAAQ,SAAU8W,GACpB,IAAIiiH,EAAOjiH,EACmB,mBAAnBiiH,EAAKrtH,YACVud,IAAWoyG,IACbpyG,EAASstG,GAAS,CAAC,EAAGttG,IAExBlvB,EAAQkvB,EAAO5L,GAAK07G,EAAKrtH,UAAU3R,KAGnCg/H,EADkB,mBAATA,EACF,CACL0C,UAAW1C,GAGNxC,GAAS,CAAC,EAAGwC,IAGjB0C,UAAY/kE,EAAOglE,oBAAoB3C,GACvCA,EAAK0C,YAGV1C,EAAKtB,MAAQp6G,EACb07G,EAAKK,UAAYL,EAAKK,WAAa/7G,EACnC07G,EAAKx4H,KAAOm2D,EAAOilE,QAAQ5C,GAC3ByC,EAAOn+G,GAAKm+G,EAAOn+G,IAAM,GACzBm+G,EAAOn+G,GAAGllB,KAAK,CACb4gI,KAAMA,EACNh/H,MAAOA,EACPkvB,OAAQA,EACRwuG,MAAOp6G,IAEX,GACF,IACA,IAAIu+G,EAAc,CAAC,EACnB,OAAOzD,GAASqD,EAAQz+F,GAAS,SAAUzf,EAAMu+G,GAC/C,IAwEI/9G,EAxEAi7G,EAAOz7G,EAAKy7G,KACZ+C,IAAsB,WAAd/C,EAAKx4H,MAAmC,UAAdw4H,EAAKx4H,MAA6C,iBAAhBw4H,EAAKvB,QAAoD,iBAAtBuB,EAAKgD,cAGhH,SAASC,EAAavjG,EAAKwjG,GACzB,OAAO1F,GAAS,CAAC,EAAG0F,EAAQ,CAC1B7C,UAAWL,EAAKK,UAAY,IAAM3gG,EAClCygG,WAAYH,EAAKG,WAAa,GAAG/tH,OAAO4tH,EAAKG,WAAY,CAACzgG,IAAQ,CAACA,IAEvE,CACA,SAASgY,EAAG30C,QACA,IAANA,IACFA,EAAI,IAEN,IAAIogI,EAAY7jG,MAAMC,QAAQx8B,GAAKA,EAAI,CAACA,IACnCihC,EAAQo/F,iBAAmBD,EAAUzjI,QACxCwiI,EAAO9S,QAAQ,mBAAoB+T,GAEjCA,EAAUzjI,aAA2B41B,IAAjB0qG,EAAK5lB,UAC3B+oB,EAAY,GAAG/wH,OAAO4tH,EAAK5lB,UAG7B,IAAIipB,EAAeF,EAAUtzG,IAAIkwG,GAAgBC,EAAM9vG,IACvD,GAAI8T,EAAQ5I,OAASioG,EAAa3jI,OAEhC,OADAmjI,EAAY7C,EAAKtB,OAAS,EACnBoE,EAAKO,GAEd,GAAKN,EAEE,CAIL,GAAI/C,EAAKv5D,WAAaliD,EAAKvjB,MAMzB,YALqBs0B,IAAjB0qG,EAAK5lB,QACPipB,EAAe,GAAGjxH,OAAO4tH,EAAK5lB,SAASvqF,IAAIkwG,GAAgBC,EAAM9vG,IACxD8T,EAAQioB,QACjBo3E,EAAe,CAACr/F,EAAQioB,MAAM+zE,EAAMntF,GAAO7O,EAAQy8F,SAASh6D,SAAUu5D,EAAKtB,UAEtEoE,EAAKO,GAEd,IAAIC,EAAe,CAAC,EAChBtD,EAAKgD,cACP3sH,OAAOopB,KAAKlb,EAAKvjB,OAAO6uB,KAAI,SAAU6P,GACpC4jG,EAAa5jG,GAAOsgG,EAAKgD,YAC3B,IAEFM,EAAe9F,GAAS,CAAC,EAAG8F,EAAc/+G,EAAKy7G,KAAKvB,QACpD,IAAI8E,EAAoB,CAAC,EACzBltH,OAAOopB,KAAK6jG,GAAcr8H,SAAQ,SAAUy3H,GAC1C,IAAI8E,EAAcF,EAAa5E,GAC3B+E,EAAkBnkG,MAAMC,QAAQikG,GAAeA,EAAc,CAACA,GAClED,EAAkB7E,GAAS+E,EAAgB5zG,IAAIozG,EAAahhI,KAAK,KAAMy8H,GACzE,IACA,IAAIwE,EAAS,IAAIhB,EAAOqB,GACxBL,EAAOzC,SAASz8F,EAAQy8F,UACpBl8G,EAAKy7G,KAAKh8F,UACZzf,EAAKy7G,KAAKh8F,QAAQy8F,SAAWz8F,EAAQy8F,SACrCl8G,EAAKy7G,KAAKh8F,QAAQioB,MAAQjoB,EAAQioB,OAEpCi3E,EAAOb,SAAS99G,EAAKvjB,MAAOujB,EAAKy7G,KAAKh8F,SAAWA,GAAS,SAAU0/F,GAClE,IAAIC,EAAc,GACdN,GAAgBA,EAAa3jI,QAC/BikI,EAAYvkI,KAAKc,MAAMyjI,EAAaN,GAElCK,GAAQA,EAAKhkI,QACfikI,EAAYvkI,KAAKc,MAAMyjI,EAAaD,GAEtCZ,EAAKa,EAAYjkI,OAASikI,EAAc,KAC1C,GACF,MA1CEb,EAAKO,EA2CT,CAEA,GAvEAN,EAAOA,IAAS/C,EAAKv5D,WAAau5D,EAAKv5D,UAAYliD,EAAKvjB,OACxDg/H,EAAKtB,MAAQn6G,EAAKm6G,MAsEdsB,EAAK4D,eACP7+G,EAAMi7G,EAAK4D,eAAe5D,EAAMz7G,EAAKvjB,MAAO02C,EAAInzB,EAAK2L,OAAQ8T,QACxD,GAAIg8F,EAAK0C,UAAW,CACzB,IACE39G,EAAMi7G,EAAK0C,UAAU1C,EAAMz7G,EAAKvjB,MAAO02C,EAAInzB,EAAK2L,OAAQ8T,EAC1D,CAAE,MAAOioB,GACU,MAAjB43E,QAAQ53E,OAAyB43E,QAAQ53E,MAAMA,GAE1CjoB,EAAQ8/F,wBACX3hI,YAAW,WACT,MAAM8pD,CACR,GAAG,GAELvU,EAAGuU,EAAMmuD,QACX,EACY,IAARr1F,EACF2yB,KACiB,IAAR3yB,EACT2yB,EAA2B,mBAAjBsoF,EAAK5lB,QAAyB4lB,EAAK5lB,QAAQ4lB,EAAKK,WAAaL,EAAKtB,OAASsB,EAAK5lB,UAAY4lB,EAAKK,WAAaL,EAAKtB,OAAS,UAC7H35G,aAAeua,MACxBoY,EAAG3yB,GACMA,aAAe+hB,OACxB4Q,EAAG3yB,EAAIq1F,QAEX,CACIr1F,GAAOA,EAAIqhB,MACbrhB,EAAIqhB,MAAK,WACP,OAAOsR,GACT,IAAG,SAAU30C,GACX,OAAO20C,EAAG30C,EACZ,GAEJ,IAAG,SAAU68H,IA/Kb,SAAkBA,GAChB,IAAIpB,EAAS,GACTC,EAAS,CAAC,EACd,SAASpuH,EAAItN,GAET,IAAIghI,EADFzkG,MAAMC,QAAQx8B,GAEhBy7H,GAAUuF,EAAUvF,GAAQpsH,OAAOlS,MAAM6jI,EAAShhI,GAElDy7H,EAAOp/H,KAAK2D,EAEhB,CACA,IAAK,IAAIhD,EAAI,EAAGA,EAAI6/H,EAAQlgI,OAAQK,IAClCsQ,EAAIuvH,EAAQ7/H,IAETy+H,EAAO9+H,QAGV++H,EAASF,GAAmBC,GAC5Bt/H,EAASs/H,EAAQC,IAHjBv/H,EAAS,KAAMgxB,EAKnB,CA4JEimC,CAASypE,EACX,GAAG1vG,EACL,EACAkyG,EAAOQ,QAAU,SAAiB5C,GAIhC,QAHkB1qG,IAAd0qG,EAAKx4H,MAAsBw4H,EAAK34D,mBAAmB1jD,SACrDq8G,EAAKx4H,KAAO,WAEgB,mBAAnBw4H,EAAK0C,WAA4B1C,EAAKx4H,OAASq6H,GAAWzrH,eAAe4pH,EAAKx4H,MACvF,MAAM,IAAIs/B,MAAM+L,GAAO,uBAAwBmtF,EAAKx4H,OAEtD,OAAOw4H,EAAKx4H,MAAQ,QACtB,EACA46H,EAAOO,oBAAsB,SAA6B3C,GACxD,GAA8B,mBAAnBA,EAAK0C,UACd,OAAO1C,EAAK0C,UAEd,IAAIjjG,EAAOppB,OAAOopB,KAAKugG,GACnBgE,EAAevkG,EAAK1tB,QAAQ,WAIhC,OAHsB,IAAlBiyH,GACFvkG,EAAKx/B,OAAO+jI,EAAc,GAER,IAAhBvkG,EAAK//B,QAA4B,aAAZ+/B,EAAK,GACrBoiG,GAAWp7D,SAEbo7D,GAAWhjI,KAAK+jI,QAAQ5C,UAAU1qG,CAC3C,EACO4sG,CACT,CA7P0B,GA8P1BA,GAAOrkH,SAAW,SAAkBrW,EAAMk7H,GACxC,GAAyB,mBAAdA,EACT,MAAM,IAAI57F,MAAM,oEAElB+6F,GAAWr6H,GAAQk7H,CACrB,EACAR,GAAO9S,QAt+BO,WAAoB,EAu+BlC8S,GAAOzB,SAAWA,GAClByB,GAAOL,WAAaA,GClkCpB,IAAI,GAAe,mCACRt7D,GAA0B,CACnCC,QAAS,sCACTC,SAAU,wBACVC,KAAM,qCACNC,WAAY,4BACZC,KAAM,CACJ/zB,OAAQ,uCACRyS,MAAO,wCACPuhB,QAAS,6BAEXC,MAAO,CACL1hB,OAAQ,GACR56C,OAAQ,GACR42B,MAAO,GACPoC,OAAQ,GACRujC,OAAQ,GACRH,KAAM,GACNI,QAAS,GACTC,QAAS,GACTC,MAAO,GACPC,OAAQ,GACRC,MAAO,GACP5O,IAAK,GACLhlB,IAAK,IAEP4R,OAAQ,CACN/rB,IAAK,8CACLtgB,IAAK,+CACLC,IAAK,oDACLwtC,MAAO,0DAETugB,OAAQ,CACN1tC,IAAK,8BACLtgB,IAAK,uCACLC,IAAK,0CACLwtC,MAAO,+CAETplB,MAAO,CACL/H,IAAK,6CACLtgB,IAAK,iDACLC,IAAK,oDACLwtC,MAAO,yDAET6gB,QAAS,CACPC,SAAU,gDClCV28D,GAAiB,GAKrB,SAASC,GAAet4B,EAAUu4B,GAChC,OAAOv4B,EAASnnF,QAAQ,cAAc,SAAU8b,GAC9C,IAAIb,EAAMa,EAAI1a,MAAM,GAAI,GACxB,OAAOs+G,EAAGzkG,EACZ,GACF,CACA,IAAI0kG,GAAmB,mBACvB,SAASC,GAAa9mE,EAAIC,EAAK8mE,EAAKC,EAAKC,GACvC,OAAOC,GAAcvkI,MAAMrB,KAAMY,UACnC,CAKA,SAASglI,KAwFP,OAvFAA,GAAgB/tE,GAAgCtF,KAAsBkE,MAAK,SAASuV,EAAS/pE,EAAME,EAAOg/H,EAAMh8F,EAAS0gG,GACvH,IAAIC,EAAWC,EAAiBC,EAAcnC,EAAWjC,EAAUhvH,EAAQqzH,EAAYX,EAAIY,EAC3F,OAAO3zE,KAAsBY,MAAK,SAAmB8Y,GACnD,cAAkBA,EAAU32C,KAAO22C,EAAU12C,MAC3C,KAAK,EAgCH,cA/BAuwG,GAAY,QAAc,CAAC,EAAG3E,IAGbgF,UAEjBf,GAAe7U,QAAU,WAEzB,EACIuV,EAAUjC,YACZkC,EAAkBD,EAAUjC,UAC5BiC,EAAUjC,UAAY,WACpB,IACE,OAAOkC,EAAgB1kI,WAAM,EAAQT,UACvC,CAAE,MAAOwsD,GAEP,OADA43E,QAAQ53E,MAAMA,GACPxmB,QAAQU,OAAOi+F,GACxB,CACF,GAGFS,EAAe,KACXF,GAAgC,UAAnBA,EAAUn9H,MAAoBm9H,EAAU3B,eACvD6B,EAAeF,EAAU3B,oBAClB2B,EAAU3B,cAEnBN,EAAY,IAAIuB,IAAe,OAAgB,CAAC,EAAGnjI,EAAM,CAAC6jI,KAC1DlE,GAAW,QAAMl6D,GAAyBviC,EAAQumF,kBAClDmY,EAAUjC,SAASA,GACnBhvH,EAAS,GACTq5D,EAAU32C,KAAO,GACjB22C,EAAU12C,KAAO,GACVqR,QAAQS,QAAQw8F,EAAUL,UAAS,OAAgB,CAAC,EAAGvhI,EAAME,IAAQ,QAAc,CAAC,EAAGgjC,KAChG,KAAK,GACH8mC,EAAU12C,KAAO,GACjB,MACF,KAAK,GACH02C,EAAU32C,KAAO,GACjB22C,EAAU7nE,GAAK6nE,EAAiB,MAAE,IAC9BA,EAAU7nE,GAAGu7H,SACf/sH,EAASq5D,EAAU7nE,GAAGu7H,OAAO3uG,KAAI,SAAUqvE,EAAOr4F,GAChD,IAAIuzG,EAAUlb,EAAMkb,QAChB6qB,EAAgB7qB,IAAYgqB,GAAmB3D,EAASj6D,QAAU4zC,EACtE,OAAoB,iBAAqB6qB,GAEzC,eAAmBA,EAAe,CAChCvlG,IAAK,SAASttB,OAAOvL,KAClBo+H,CACP,KAEJ,KAAK,GACH,GAAOxzH,EAAO/R,SAAUmlI,EAAe,CACrC/5D,EAAU12C,KAAO,GACjB,KACF,CAEA,OADA02C,EAAU12C,KAAO,GACVqR,QAAQ+2B,IAAIx7D,EAAM6uB,KAAI,SAAUq1G,EAAUnlI,GAC/C,OAAOskI,GAAa,GAAGjyH,OAAOtR,EAAM,KAAKsR,OAAOrS,GAAImlI,EAAUL,EAAc7gG,EAAS0gG,EACvF,KACF,KAAK,GAEH,OADAI,EAAah6D,EAAUpf,KAChBof,EAAU9W,OAAO,SAAU8wE,EAAWt0G,QAAO,SAAU2D,EAAMqqG,GAClE,MAAO,GAAGpsH,QAAO,OAAmB+hB,IAAO,OAAmBqqG,GAChE,GAAG,KACL,KAAK,GAYH,OAVA2F,GAAK,SAAc,QAAc,CAAC,EAAGnE,GAAO,CAAC,EAAG,CAC9Cl/H,KAAMA,EACN4lE,MAAOs5D,EAAKt5D,MAAQ,IAAIx+C,KAAK,OAC5Bw8G,GACHK,EAAqBtzH,EAAOoe,KAAI,SAAUo8B,GACxC,MAAqB,iBAAVA,EACFi4E,GAAej4E,EAAOk4E,GAExBl4E,CACT,IACO6e,EAAU9W,OAAO,SAAU+wE,GACpC,KAAK,GACL,IAAK,MACH,OAAOj6D,EAAUjnE,OAEvB,GAAGgnE,EAAU,KAAM,CAAC,CAAC,GAAI,KAC3B,KACO45D,GAAcvkI,MAAMrB,KAAMY,UACnC,CACO,SAAS0lI,GAAcC,EAAUpkI,EAAO2gI,EAAO39F,EAASqhG,EAAeX,GAC5E,IAyDIY,EAzDAxkI,EAAOskI,EAASl9G,KAAK,KAErBq9G,EAAc5D,EAAM9xG,KAAI,SAAU21G,EAAaR,GACjD,IAAIS,EAAsBD,EAAY9C,UAClCiC,GAAY,SAAc,QAAc,CAAC,EAAGa,GAAc,CAAC,EAAG,CAChER,UAAWA,IAoCb,OAjCIS,IACFd,EAAUjC,UAAY,SAAU1C,EAAM97H,EAAKhF,GACzC,IAAIwmI,GAAa,EAeb/V,EAAU8V,EAAoBzF,EAAM97H,GAblB,WACpB,IAAK,IAAIkkD,EAAO3oD,UAAUC,OAAQH,EAAO,IAAI+/B,MAAM8oB,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E9oD,EAAK8oD,GAAQ5oD,UAAU4oD,GAGzB5iB,QAAQS,UAAUE,MAAK,YACrB,UAASs/F,EAAY,qFAChBA,GACHxmI,EAASgB,WAAM,EAAQX,EAE3B,GACF,IAGAmmI,EAAa/V,GAAmC,mBAAjBA,EAAQvpF,MAAgD,mBAAlBupF,EAAQgW,OAK7E,SAAQD,EAAY,8DAChBA,GACF/V,EAAQvpF,MAAK,WACXlnC,GACF,IAAGymI,OAAM,SAAUt/F,GACjBnnC,EAASmnC,GAAO,IAClB,GAEJ,GAEKs+F,CACT,IAAGvzH,MAAK,SAAUs/C,EAAMmM,GACtB,IAAIjc,EAAK8P,EAAKk1E,YACZjrF,EAAK+V,EAAKs0E,UACRnkF,EAAKgc,EAAM+oE,YACbC,EAAKhpE,EAAMmoE,UACb,QAAMpkF,KAASC,EAENlG,EAAKkrF,EAEVjlF,EACK,GAED,CACV,IAGA,IAAsB,IAAlBykF,EAEFC,EAAiB,IAAI7/F,QAAsB,WACzC,IAAIi4B,EAAQhH,GAAgCtF,KAAsBkE,MAAK,SAASwH,EAAQ52B,EAASC,GAC/F,IAAIpmC,EAAGigI,EAAMxB,EACb,OAAOptE,KAAsBY,MAAK,SAAkBqL,GAClD,cAAkBA,EAASlpC,KAAOkpC,EAASjpC,MACzC,KAAK,EACHr0B,EAAI,EACN,KAAK,EACH,KAAMA,EAAIwlI,EAAY7lI,QAAS,CAC7B29D,EAASjpC,KAAO,GAChB,KACF,CAGA,OAFA4rG,EAAOuF,EAAYxlI,GACnBs9D,EAASjpC,KAAO,EACTiwG,GAAavjI,EAAME,EAAOg/H,EAAMh8F,EAAS0gG,GAClD,KAAK,EAEH,KADAlG,EAASnhE,EAAS3R,MACNhsD,OAAQ,CAClB29D,EAASjpC,KAAO,EAChB,KACF,CAKA,OAJA+R,EAAO,CAAC,CACNq4F,OAAQA,EACRwB,KAAMA,KAED3iE,EAASrJ,OAAO,UACzB,KAAK,EACHj0D,GAAK,EACLs9D,EAASjpC,KAAO,EAChB,MACF,KAAK,GAEH8R,EAAQ,IACV,KAAK,GACL,IAAK,MACH,OAAOm3B,EAASx5D,OAEtB,GAAGi5D,EACL,KACA,OAAO,SAAUgpE,EAAKC,GACpB,OAAOroE,EAAMx9D,MAAMrB,KAAMY,UAC3B,CACF,CA1C2C,QA2CtC,CAEL,IAAIumI,EAAeT,EAAY11G,KAAI,SAAUmwG,GAC3C,OAAOqE,GAAavjI,EAAME,EAAOg/H,EAAMh8F,EAAS0gG,GAAkBt+F,MAAK,SAAUo4F,GAC/E,MAAO,CACLA,OAAQA,EACRwB,KAAMA,EAEV,GACF,IACAsF,GAAkBD,EAgCtB,SAA6BY,GAC3B,OAAOC,GAAqBhmI,MAAMrB,KAAMY,UAC1C,CAlCsC0mI,CAAoBH,GAW1D,SAA2BI,GACzB,OAAOC,GAAmBnmI,MAAMrB,KAAMY,UACxC,CAb0E6mI,CAAkBN,IAAe5/F,MAAK,SAAUo4F,GAEpH,OAAO/4F,QAAQU,OAAOq4F,EACxB,GACF,CAKA,OAHA8G,EAAeK,OAAM,SAAU5iI,GAC7B,OAAOA,CACT,IACOuiI,CACT,CAIA,SAASe,KAgBP,OAfAA,GAAqB3vE,GAAgCtF,KAAsBkE,MAAK,SAASixE,EAASP,GAChG,OAAO50E,KAAsBY,MAAK,SAAmBw0E,GACnD,cAAkBA,EAAUryG,KAAOqyG,EAAUpyG,MAC3C,KAAK,EACH,OAAOoyG,EAAUxyE,OAAO,SAAUvuB,QAAQ+2B,IAAIwpE,GAAc5/F,MAAK,SAAUqgG,GACzE,IAAIpzB,EAEJ,OADcA,EAAQ,IAAIjhG,OAAOlS,MAAMmzG,GAAO,OAAmBozB,GAEnE,KACF,KAAK,EACL,IAAK,MACH,OAAOD,EAAU3iI,OAEvB,GAAG0iI,EACL,MAC0BrmI,MAAMrB,KAAMY,UACxC,CAIA,SAASymI,KA0BP,OAzBAA,GAAuBxvE,GAAgCtF,KAAsBkE,MAAK,SAASoxE,EAASV,GAClG,IAAIr2G,EACJ,OAAOyhC,KAAsBY,MAAK,SAAmB20E,GACnD,cAAkBA,EAAUxyG,KAAOwyG,EAAUvyG,MAC3C,KAAK,EAEH,OADAzE,EAAQ,EACDg3G,EAAU3yE,OAAO,SAAU,IAAIvuB,SAAQ,SAAUS,GACtD8/F,EAAa/+H,SAAQ,SAAU0oH,GAC7BA,EAAQvpF,MAAK,SAAUwgG,GACjBA,EAAUpI,OAAO9+H,QACnBwmC,EAAQ,CAAC0gG,KAEXj3G,GAAS,KACKq2G,EAAatmI,QACzBwmC,EAAQ,GAEZ,GACF,GACF,KACF,KAAK,EACL,IAAK,MACH,OAAOygG,EAAU9iI,OAEvB,GAAG6iI,EACL,KACOR,GAAqBhmI,MAAMrB,KAAMY,UAC1C,iBC3RO,SAASonI,GAAYnhI,GAC1B,OAAO,GAAQA,EACjB,CACO,SAASohI,GAAoBC,EAAOC,GACzC,IAAIC,EAAW,CAAC,EAKhB,OAJAD,EAAa//H,SAAQ,SAAUm+H,GAC7B,IAAIpkI,GAAQ,EAAAH,GAAA,GAASkmI,EAAO3B,GAC5B6B,GAAW,EAAAlmI,GAAA,GAASkmI,EAAU7B,EAAUpkI,EAC1C,IACOimI,CACT,CACO,SAASC,GAAiBF,EAAc5B,GAC7C,OAAO4B,GAAgBA,EAAaztE,MAAK,SAAU7zD,GACjD,OAAOyhI,GAAczhI,EAAM0/H,EAC7B,GACF,CACO,SAAS+B,GAAc/B,EAAUgC,GACtC,SAAKhC,IAAagC,GAAmBhC,EAAS1lI,SAAW0nI,EAAgB1nI,SAGlE0lI,EAASiC,OAAM,SAAUC,EAAUvnI,GACxC,OAAOqnI,EAAgBrnI,KAAOunI,CAChC,GACF,CAuBO,SAASC,GAAyBC,GACvC,IAAI59H,EAAQnK,UAAUC,QAAU,OAAI41B,EAAY71B,UAAU,GAC1D,OAAImK,GAASA,EAAMrC,QAAoC,YAA1B,QAAQqC,EAAMrC,SAAwBigI,KAAiB59H,EAAMrC,OACjFqC,EAAMrC,OAAOigI,GAEf59H,CACT,CAWO,SAAS,GAAKw3B,EAAOqmG,EAAWC,GACrC,IAAIhoI,EAAS0hC,EAAM1hC,OACnB,GAAI+nI,EAAY,GAAKA,GAAa/nI,GAAUgoI,EAAU,GAAKA,GAAWhoI,EACpE,OAAO0hC,EAET,IAAI9qB,EAAO8qB,EAAMqmG,GACbp2G,EAAOo2G,EAAYC,EACvB,OAAIr2G,EAAO,EAEF,GAAGjf,QAAO,OAAmBgvB,EAAMvb,MAAM,EAAG6hH,IAAW,CAACpxH,IAAO,OAAmB8qB,EAAMvb,MAAM6hH,EAASD,KAAa,OAAmBrmG,EAAMvb,MAAM4hH,EAAY,EAAG/nI,KAEvK2xB,EAAO,EAEF,GAAGjf,QAAO,OAAmBgvB,EAAMvb,MAAM,EAAG4hH,KAAa,OAAmBrmG,EAAMvb,MAAM4hH,EAAY,EAAGC,EAAU,IAAK,CAACpxH,IAAO,OAAmB8qB,EAAMvb,MAAM6hH,EAAU,EAAGhoI,KAE5K0hC,CACT,CClFA,IAAI,GAAY,CAAC,QAUbumG,GAAe,GACnB,SAASC,GAAc9P,EAAc3jG,EAAMC,EAAMyzG,EAAWC,EAAW5zE,GACrE,MAA4B,mBAAjB4jE,EACFA,EAAa3jG,EAAMC,EAAM,WAAY8/B,EAAO,CACjDhkC,OAAQgkC,EAAKhkC,QACX,CAAC,GAEA23G,IAAcC,CACvB,CAEA,IAAIC,GAAqB,SAAU16C,IACjC,QAAU06C,EAAO16C,GACjB,IAAI9sF,GAAS,QAAawnI,GAE1B,SAASA,EAAM7xH,GACb,IAAI5W,IACJ,OAAgBT,KAAMkpI,IACtBzoI,EAAQiB,EAAOE,KAAK5B,KAAMqX,IAEpBksC,MAAQ,CACZ4lF,WAAY,GAEd1oI,EAAM2oI,mBAAqB,KAC3B3oI,EAAM4oI,SAAU,EAKhB5oI,EAAM6oI,SAAU,EAMhB7oI,EAAM8oI,OAAQ,EACd9oI,EAAM+oI,qBAAkB,EACxB/oI,EAAMgpI,oBAAiB,EACvBhpI,EAAMk/H,OAASmJ,GACfroI,EAAMipI,SAAWZ,GACjBroI,EAAMkpI,eAAiB,WACrB,IAAIltE,EAAch8D,EAAM4W,MACtBuyH,EAAWntE,EAAYmtE,SACvBC,EAAcptE,EAAYotE,YAC1B5nI,EAAOw6D,EAAYx6D,KACjBxB,EAAM2oI,oBACR3oI,EAAM2oI,mBAAmBS,EAAaD,EAAU5B,GAAY/lI,IAE9DxB,EAAM2oI,mBAAqB,IAC7B,EAEA3oI,EAAMunI,YAAc,WAClB,IAAIlrE,EAAer8D,EAAM4W,MACvBpV,EAAO66D,EAAa76D,KAElB6nI,EADahtE,EAAaitE,aACWC,WACvCA,OAAuC,IAA1BF,EAAmC,GAAKA,EACvD,YAAgBrzG,IAATx0B,EAAqB,GAAGsR,QAAO,OAAmBy2H,IAAa,OAAmB/nI,IAAS,EACpG,EACAxB,EAAMwpI,SAAW,WACf,IAAIlrE,EAAet+D,EAAM4W,MACvB6yH,EAAqBnrE,EAAa+jE,MAClCA,OAA+B,IAAvBoH,EAAgC,GAAKA,EAC7CH,EAAehrE,EAAagrE,aAC9B,OAAOjH,EAAM9xG,KAAI,SAAUmwG,GACzB,MAAoB,mBAATA,EACFA,EAAK4I,GAEP5I,CACT,GACF,EACA1gI,EAAMqoE,QAAU,WACTroE,EAAM4oI,SAIX5oI,EAAM2+D,UAAS,SAAUvN,GAEvB,MAAO,CACLs3E,WAFet3E,EAAKs3E,WAEK,EAE7B,GACF,EAEA1oI,EAAM0pI,UAAY,KAClB1pI,EAAM2pI,iBAAmB,SAAUhoI,GACjC,IAAIioI,EAAe5pI,EAAM4W,MAAMgzH,aAC/B,GAAIA,EAAc,CAChB,IAAIC,GAAO,SAAc,QAAc,CAAC,EAAG7pI,EAAM8pI,WAAY,CAAC,EAAG,CAC/DnoI,QAASA,KAEN,EAAAwvB,GAAA,GAAQnxB,EAAM0pI,UAAWG,IAC5BD,EAAaC,GAEf7pI,EAAM0pI,UAAYG,CACpB,MACE7pI,EAAM0pI,UAAY,IAEtB,EAGA1pI,EAAM+pI,cAAgB,SAAUC,EAAWtC,EAAc9yE,GACvD,IAAIiK,EAAe7+D,EAAM4W,MACvB4hH,EAAe35D,EAAa25D,aAC5ByR,EAAwBprE,EAAaqrE,aACrCA,OAAyC,IAA1BD,EAAmC,GAAKA,EACvDE,EAAUtrE,EAAasrE,QACrB1C,EAAQ7yE,EAAK6yE,MACb3B,EAAW9lI,EAAMunI,cACjBgB,EAAYvoI,EAAM8gI,SAASkJ,GAC3BI,EAAWpqI,EAAM8gI,SAAS2G,GAC1B4C,EAAgB3C,GAAgBE,GAAiBF,EAAc5B,GAUnE,OARkB,gBAAdlxE,EAAK1sD,MAA0C,aAAhB0sD,EAAKhkC,QAAyB23G,IAAc6B,IAC7EpqI,EAAM6oI,SAAU,EAChB7oI,EAAM8oI,OAAQ,EACd9oI,EAAM+oI,gBAAkB,KACxB/oI,EAAMk/H,OAASmJ,GACfroI,EAAMipI,SAAWZ,GACjBroI,EAAM2pI,oBAEA/0E,EAAK1sD,MACX,IAAK,QACH,IAAKw/H,GAAgB2C,EAUnB,OARArqI,EAAM6oI,SAAU,EAChB7oI,EAAM8oI,OAAQ,EACd9oI,EAAM+oI,qBAAkB/yG,EACxBh2B,EAAMk/H,OAASmJ,GACfroI,EAAMipI,SAAWZ,GACjBroI,EAAM2pI,mBACNQ,SAAkDA,SAClDnqI,EAAMqoE,UAGR,MAOF,IAAK,SAED,GAAImwD,EAEF,YADAx4H,EAAMsqI,WAGR,MAEJ,IAAK,WAED,GAAID,EAAe,CACjB,IAAIplH,EAAO2vC,EAAK3vC,KAgBhB,MAfI,YAAaA,IACfjlB,EAAM6oI,QAAU5jH,EAAK4jH,SAEnB,eAAgB5jH,KAAU,kBAAmBA,KAC/CjlB,EAAM+oI,gBAAkB9jH,EAAKslH,WAAapkG,QAAQS,QAAQ,IAAM,MAE9D,WAAY3hB,IACdjlB,EAAMk/H,OAASj6G,EAAKi6G,QAAUmJ,IAE5B,aAAcpjH,IAChBjlB,EAAMipI,SAAWhkH,EAAKgkH,UAAYZ,IAEpCroI,EAAM8oI,OAAQ,EACd9oI,EAAM2pI,wBACN3pI,EAAMsqI,UAER,CAEA,GAAI9R,IAAiBsN,EAAS1lI,QAAUkoI,GAAc9P,EAAcwR,EAAWvC,EAAOc,EAAW6B,EAAUx1E,GAEzG,YADA50D,EAAMsqI,WAGR,MAEJ,IAAK,qBASD,GAJqBJ,EAAa35G,IAAIg3G,IAInBttE,MAAK,SAAUuwE,GAChC,OAAO5C,GAAiBhzE,EAAK61E,cAAeD,EAC9C,IAEE,YADAxqI,EAAMsqI,WAGR,MAEJ,QAWE,GAAID,KAAmBH,EAAa9pI,QAAU0lI,EAAS1lI,QAAUo4H,IAAiB8P,GAAc9P,EAAcwR,EAAWvC,EAAOc,EAAW6B,EAAUx1E,GAEnJ,YADA50D,EAAMsqI,YAKS,IAAjB9R,GACFx4H,EAAMsqI,UAEV,EACAtqI,EAAM6lI,cAAgB,SAAUnhG,GAE9B,IAAIohG,EAAW9lI,EAAMunI,cACjBmD,EAAe1qI,EAAM8gI,WACrBvjE,EAAQ74B,GAAW,CAAC,EACtBimG,EAAcptE,EAAMotE,YACpBC,EAAqBrtE,EAAMstE,aAC3BA,OAAsC,IAAvBD,GAAwCA,EAErDE,EAAc3kG,QAAQS,UAAUE,MAAK,WACvC,IAAK9mC,EAAM4oI,QACT,MAAO,GAET,IAAImC,EAAe/qI,EAAM4W,MACvBo0H,EAAwBD,EAAahF,cACrCA,OAA0C,IAA1BiF,GAA2CA,EAC3D5F,EAAmB2F,EAAa3F,iBAC9B6F,EAAgBjrI,EAAMwpI,WACtBmB,IACFM,EAAgBA,EAAcn7H,QAAO,SAAU4wH,GAC7C,OAAOA,CACT,IAAG5wH,QAAO,SAAU4wH,GAClB,IAAIwK,EAAkBxK,EAAKwK,gBAC3B,OAAKA,GAGa,GAAQA,GACPxmI,SAASimI,EAC9B,KAEF,IAAIta,EAAUwV,GAAcC,EAAU4E,EAAcO,EAAevmG,EAASqhG,EAAeX,GA2B3F,OA1BA/U,EAAQgW,OAAM,SAAU5iI,GACtB,OAAOA,CACT,IAAGqjC,MAAK,WACN,IAAIqkG,EAAahrI,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAKkoI,GACrF,GAAIroI,EAAM+oI,kBAAoB+B,EAAa,CACzC,IAAIM,EACJprI,EAAM+oI,gBAAkB,KAExB,IAAIsC,EAAa,GACbC,EAAe,GAC4B,QAA9CF,EAAsBD,EAAWxjI,eAA6C,IAAxByjI,GAA0CA,EAAoBjqI,KAAKgqI,GAAY,SAAU/sE,GAC9I,IAAIkoE,EAAcloE,EAAMsiE,KAAK4F,YAC3BiF,EAAentE,EAAM8gE,OACrBA,OAA0B,IAAjBqM,EAA0BlD,GAAekD,EAChDjF,EACFgF,EAAaxrI,KAAKc,MAAM0qI,GAAc,OAAmBpM,IAEzDmM,EAAWvrI,KAAKc,MAAMyqI,GAAY,OAAmBnM,GAEzD,IACAl/H,EAAMk/H,OAASmM,EACfrrI,EAAMipI,SAAWqC,EACjBtrI,EAAM2pI,mBACN3pI,EAAMsqI,UACR,CACF,IACOja,CACT,IACA,OAAIwa,IAGJ7qI,EAAM+oI,gBAAkB+B,EACxB9qI,EAAM8oI,OAAQ,EACd9oI,EAAMk/H,OAASmJ,GACfroI,EAAMipI,SAAWZ,GACjBroI,EAAM2pI,mBAEN3pI,EAAMsqI,YARGQ,CAUX,EACA9qI,EAAM68H,kBAAoB,WACxB,QAAS78H,EAAM+oI,eACjB,EACA/oI,EAAM48H,eAAiB,WACrB,OAAO58H,EAAM6oI,OACf,EACA7oI,EAAMwrI,aAAe,WAEnB,SAAIxrI,EAAM8oI,YAAsC9yG,IAA7Bh2B,EAAM4W,MAAM60H,oBAOcz1G,KAAzCioG,EAHej+H,EAAM4W,MAAM0yH,aACUjM,iBAAiBjB,IAChB6B,iBACtBj+H,EAAMunI,cAI5B,EACAvnI,EAAM0rI,UAAY,WAChB,OAAO1rI,EAAMk/H,MACf,EACAl/H,EAAM2rI,YAAc,WAClB,OAAO3rI,EAAMipI,QACf,EACAjpI,EAAMopI,YAAc,WAClB,OAAOppI,EAAM4W,MAAMwyH,WACrB,EACAppI,EAAM4rI,OAAS,WACb,OAAO5rI,EAAM4W,MAAMg1H,MACrB,EACA5rI,EAAM6rI,WAAa,WACjB,OAAO7rI,EAAM4W,MAAMuyH,QACrB,EAEAnpI,EAAM8pI,QAAU,WAWd,OATA9pI,EAAMgpI,eAAiBhpI,EAAM68H,oBAClB,CACTgM,QAAS7oI,EAAM48H,iBACf2N,WAAYvqI,EAAMgpI,eAClB9J,OAAQl/H,EAAMk/H,OACd+J,SAAUjpI,EAAMipI,SAChBznI,KAAMxB,EAAMunI,cACZuE,UAAqC,OAA1B9rI,EAAM+oI,gBAGrB,EAEA/oI,EAAM+rI,aAAe,SAAU38H,GAE7B,GAAwB,mBAAbA,EAAyB,CAClC,IAAIy6H,EAAO7pI,EAAM8pI,UACjB,OAAO,SAAc,QAAc,CAAC,EAAG9pI,EAAM+rI,aAAa38H,EAASpP,EAAMgsI,gBAAiBnC,EAAM7pI,EAAM4W,MAAM0yH,gBAAiB,CAAC,EAAG,CAC/H2C,YAAY,GAEhB,CAEA,IAAI14D,GAAY,QAAgBnkE,GAChC,OAAyB,IAArBmkE,EAAUnzE,QAA+B,iBAAqBmzE,EAAU,IAMrE,CACLlkE,MAAOkkE,EAAU,GACjB04D,YAAY,GAPL,CACL58H,MAAOkkE,EACP04D,YAAY,EAOlB,EAEAjsI,EAAM8gI,SAAW,SAAU2G,GACzB,IAAIlL,EAAiBv8H,EAAM4W,MAAM0yH,aAAa/M,eAC1CuJ,EAAW9lI,EAAMunI,cACrB,OAAO,EAAAhmI,GAAA,GAASkmI,GAASlL,GAAe,GAAOuJ,EACjD,EACA9lI,EAAMgsI,cAAgB,WACpB,IAAIv5B,EAAatyG,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAClF+rI,EAAelsI,EAAM4W,MACvBsxF,EAAUgkC,EAAahkC,QACvBgjC,EAAkBgB,EAAahB,gBAC/BiB,EAAoBD,EAAaC,kBACjCtnF,EAAYqnF,EAAarnF,UACzBqjF,EAAgBgE,EAAahE,cAC7BkE,EAAgBF,EAAaE,cAC7B9C,EAAe4C,EAAa5C,aAC1B+C,OAA4Cr2G,IAApBk1G,EAAgCA,EAAkB5B,EAAa4B,gBACvFpF,EAAW9lI,EAAMunI,cACjBlK,EAAmBiM,EAAajM,iBAClCd,EAAiB+M,EAAa/M,eAE9Be,EADsBD,EAAiBjB,IACVkB,SAC3B57H,EAAQ1B,EAAM8gI,WACdwL,EAAsBF,GAAiB,SAAUxnI,GACnD,OAAO,OAAgB,CAAC,EAAGsjI,EAAetjI,EAC5C,EAEI2nI,EAAoB95B,EAAWvK,GAC/BskC,GAAU,SAAc,QAAc,CAAC,EAAG/5B,GAAa65B,EAAoB5qI,IAkD/E,OAhDA8qI,EAAQtkC,GAAW,WAKjB,IAAIukC,EAHJzsI,EAAM6oI,SAAU,EAChB7oI,EAAM8oI,OAAQ,EACd9oI,EAAM2pI,mBAEN,IAAK,IAAI7gF,EAAO3oD,UAAUC,OAAQH,EAAO,IAAI+/B,MAAM8oB,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E9oD,EAAK8oD,GAAQ5oD,UAAU4oD,GAGvB0jF,EADEN,EACSA,EAAkBvrI,WAAM,EAAQX,GAEhCgoI,GAAyBrnI,WAAM,EAAQ,CAACsnI,GAAep1H,OAAO7S,IAEvE4kD,IACF4nF,EAAW5nF,EAAU4nF,EAAU/qI,EAAO66H,GAAe,KAEvDe,EAAS,CACPp1H,KAAM,cACN49H,SAAUA,EACVpkI,MAAO+qI,IAELF,GACFA,EAAkB3rI,WAAM,EAAQX,EAEpC,EAE0B,GAAQosI,GAAyB,IACvC1kI,SAAQ,SAAUgjI,GAEpC,IAAI+B,EAAgBF,EAAQ7B,GAC5B6B,EAAQ7B,GAAe,WACjB+B,GACFA,EAAc9rI,WAAM,EAAQT,WAG9B,IAAIkiI,EAAQriI,EAAM4W,MAAMyrH,MACpBA,GAASA,EAAMjiI,QAGjBk9H,EAAS,CACPp1H,KAAM,gBACN49H,SAAUA,EACV6E,YAAaA,GAGnB,CACF,IACO6B,CACT,EACI51H,EAAM0yH,gBAIR/L,GAFyBF,EADFzmH,EAAM0yH,aAAajM,kBACAjB,IACHmB,kBACvB,QAAuBv9H,IAEzC,OAAOA,CACT,CAwDA,OAvDA,QAAayoI,EAAO,CAAC,CACnBroG,IAAK,oBACL1+B,MAAO,WACL,IAAIirI,EAAeptI,KAAKqX,MACtB4hH,EAAemU,EAAanU,aAC5B8Q,EAAeqD,EAAarD,aAG9B,GAFA/pI,KAAKqpI,SAAU,EAEXU,EAAc,CAChB,IAEE9L,GADuBH,EADFiM,EAAajM,kBACMjB,IACLoB,cACrCj+H,KAAKopI,mBAAqBnL,EAAcj+H,KAC1C,EAEqB,IAAjBi5H,GACFj5H,KAAK+qI,UAET,GACC,CACDlqG,IAAK,uBACL1+B,MAAO,WACLnC,KAAK2pI,iBACL3pI,KAAKoqI,kBAAiB,GACtBpqI,KAAKqpI,SAAU,CACjB,GACC,CACDxoG,IAAK,WACL1+B,MAAO,WACAnC,KAAKqpI,SACVrpI,KAAKu8G,aACP,GACC,CACD17E,IAAK,SACL1+B,MAAO,WACL,IAMIkrI,EANAlE,EAAanpI,KAAKujD,MAAM4lF,WACxBt5H,EAAW7P,KAAKqX,MAAMxH,SACtBy9H,EAAqBttI,KAAKwsI,aAAa38H,GACzCC,EAAQw9H,EAAmBx9H,MAY7B,OAXew9H,EAAmBZ,WAIhCW,EAAkBv9H,EACK,iBAAqBA,GAC5Cu9H,EAA+B,eAAmBv9H,EAAO9P,KAAKysI,cAAc38H,EAAMuH,UAElF,UAASvH,EAAO,qDAChBu9H,EAAkBv9H,GAEA,gBAAoB,WAAgB,CACtD+wB,IAAKsoG,GACJkE,EACL,KAEKnE,CACT,CA3eyB,CA2evB,aACFA,GAAMqE,YAAcC,GACpBtE,GAAMvoE,aAAe,CACnBgoC,QAAS,WACTggC,cAAe,SAyBjB,OAvBA,SAAsBn0B,GACpB,IAAIvyG,EAAOuyG,EAAMvyG,KACfiiF,GAAY,QAAyBswB,EAAO,IAC1Cu1B,EAAe,aAAiByD,IAChCC,EAAc,aAAiB,IAC/BlH,OAAoB9vG,IAATx0B,EAAqB+lI,GAAY/lI,QAAQw0B,EACpDoK,EAAM,OASV,OARKqjD,EAAU2lD,cACbhpG,EAAM,IAAIttB,QAAQgzH,GAAY,IAAIl9G,KAAK,OAOrB,gBAAoB6/G,IAAO,OAAS,CACtDroG,IAAKA,EACL5+B,KAAMskI,EACNsD,cAAe4D,GACdvpD,EAAW,CACZ6lD,aAAcA,IAElB,ECtZA,OAvIA,SAAcl4E,GACZ,IAAI5vD,EAAO4vD,EAAK5vD,KACdiqI,EAAer6E,EAAKq6E,aACpBr8H,EAAWgiD,EAAKhiD,SAChBizH,EAAQjxE,EAAKixE,MACb6I,EAAkB95E,EAAK85E,gBACvB9B,EAAch4E,EAAKg4E,YACjB12G,EAAU,aAAiBq6G,IAC3BE,EAAqB,aAAiB,IAKtCC,EAJS,SAAa,CACxB/sG,KAAM,GACNltB,GAAI,IAEkBjM,QACpBuiI,EAAa,WAAc,WAC7B,IAAI4D,EAAmB5F,GAAY70G,EAAQ62G,aAAe,GAC1D,MAAO,GAAGz2H,QAAO,OAAmBq6H,IAAmB,OAAmB5F,GAAY/lI,IACxF,GAAG,CAACkxB,EAAQ62G,WAAY/nI,IACpB8nI,EAAe,WAAc,WAC/B,OAAO,SAAc,QAAc,CAAC,EAAG52G,GAAU,CAAC,EAAG,CACnD62G,WAAYA,GAEhB,GAAG,CAAC72G,EAAS62G,IAETyD,EAAc,WAAc,WAC9B,MAAO,CACLI,OAAQ,SAAgBtH,GACtB,IAAI/rG,EAAMwvG,EAAWnpI,OACjBitI,EAAWvH,EAAS/rG,GACxB,MAAO,CAACmzG,EAAW/sG,KAAKktG,GAAWvH,EAASv/G,MAAMwT,EAAM,GAC1D,EAEJ,GAAG,CAACwvG,IAEJ,MAAwB,mBAAbn6H,IACT,UAAQ,EAAO,gDACR,MASW,gBAAoB,GAAYmxD,SAAU,CAC5D7+D,MAAOsrI,GACO,gBAAoBD,GAAaxsE,SAAU,CACzD7+D,MAAO4nI,GACO,gBAAoB,GAAO,CACzC9nI,KAAM,GACNg3H,aAbiB,SAAsB+P,EAAWC,EAAWjrE,GAE7D,MAAe,aADFA,EAAM3sC,QAIZ23G,IAAcC,CACvB,EAQEnG,MAAOA,EACP6I,gBAAiBA,EACjBO,aAAcA,EACdG,QAAQ,EACRxC,YAAaA,QAAiDA,IAAgB6D,IAC7E,SAAU7uE,EAAOyrE,GAClB,IAAIyD,EAAclvE,EAAM18D,MACtBA,OAAwB,IAAhB4rI,EAAyB,GAAKA,EACtCvxE,EAAWqC,EAAMrC,SACfugE,EAAgB5pG,EAAQ4pG,cACxBiR,EAAc,WAEhB,OADajR,EAAciN,GAAc,KACxB,EACnB,EAIIiE,EAAa,CACfz8H,IAAK,SAAawzB,EAAch9B,GAE9B,IAAIklI,EAAWc,IACXhmI,GAAS,GAAKA,GAASklI,EAASrsI,QAClC8sI,EAAW/sG,KAAO,GAAGrtB,QAAO,OAAmBo6H,EAAW/sG,KAAK5Z,MAAM,EAAGhf,IAAS,CAAC2lI,EAAWj6H,KAAK,OAAmBi6H,EAAW/sG,KAAK5Z,MAAMhf,KAC3Iw0D,EAAS,GAAGjpD,QAAO,OAAmB25H,EAASlmH,MAAM,EAAGhf,IAAS,CAACg9B,IAAe,OAAmBkoG,EAASlmH,MAAMhf,QAKnH2lI,EAAW/sG,KAAO,GAAGrtB,QAAO,OAAmBo6H,EAAW/sG,MAAO,CAAC+sG,EAAWj6H,KAC7E8oD,EAAS,GAAGjpD,QAAO,OAAmB25H,GAAW,CAACloG,MAEpD2oG,EAAWj6H,IAAM,CACnB,EACAP,OAAQ,SAAgBnL,GACtB,IAAIklI,EAAWc,IACXE,EAAW,IAAIvnG,IAAIlG,MAAMC,QAAQ14B,GAASA,EAAQ,CAACA,IACnDkmI,EAAS5pG,MAAQ,IAGrBqpG,EAAW/sG,KAAO+sG,EAAW/sG,KAAKrwB,QAAO,SAAUm2B,EAAGynG,GACpD,OAAQD,EAASpsG,IAAIqsG,EACvB,IAEA3xE,EAAS0wE,EAAS38H,QAAO,SAAUm2B,EAAG0nG,GACpC,OAAQF,EAASpsG,IAAIssG,EACvB,KACF,EACA11H,KAAM,SAAc4gB,EAAMC,GACxB,GAAID,IAASC,EAAb,CAGA,IAAI2zG,EAAWc,IAEX10G,EAAO,GAAKA,GAAQ4zG,EAASrsI,QAAU04B,EAAK,GAAKA,GAAM2zG,EAASrsI,SAGpE8sI,EAAW/sG,KAAO,GAAM+sG,EAAW/sG,KAAMtH,EAAMC,GAE/CijC,EAAS,GAAM0wE,EAAU5zG,EAAMC,IAR/B,CASF,GAEE80G,EAAYlsI,GAAS,GAOzB,OANKs+B,MAAMC,QAAQ2tG,KACjBA,EAAY,IAKPx+H,EAASw+H,EAAUr9G,KAAI,SAAU+6B,EAAI/jD,GAC1C,IAAI64B,EAAM8sG,EAAW/sG,KAAK54B,GAM1B,YALYyuB,IAARoK,IACF8sG,EAAW/sG,KAAK54B,GAAS2lI,EAAWj6H,GACpCmtB,EAAM8sG,EAAW/sG,KAAK54B,GACtB2lI,EAAWj6H,IAAM,GAEZ,CACLzR,KAAM+F,EACN64B,IAAKA,EACLgpG,aAAa,EAEjB,IAAIoE,EAAY3D,EAClB,KACF,ECzIA,IAAIgE,GAAQ,mBAIZ,SAAShpF,GAAUihF,GACjB,OAAOA,EAASv1G,KAAI,SAAUu9G,GAC5B,MAAO,GAAGh7H,QAAO,QAAQg7H,GAAO,KAAKh7H,OAAOg7H,EAC9C,IAECllH,KAAKilH,GACR,CAIA,IAAIE,GAAuB,WACzB,SAASA,KACP,OAAgBxuI,KAAMwuI,GACtBxuI,KAAKyuI,IAAM,IAAI1vH,GACjB,CA6DA,OA5DA,QAAayvH,EAAS,CAAC,CACrB3tG,IAAK,MACL1+B,MAAO,SAAa0+B,EAAK1+B,GACvBnC,KAAKyuI,IAAIvsI,IAAIojD,GAAUzkB,GAAM1+B,EAC/B,GACC,CACD0+B,IAAK,MACL1+B,MAAO,SAAa0+B,GAClB,OAAO7gC,KAAKyuI,IAAIzsI,IAAIsjD,GAAUzkB,GAChC,GACC,CACDA,IAAK,SACL1+B,MAAO,SAAgB0+B,EAAKukF,GAC1B,IACI7vF,EAAO6vF,EADEplH,KAAKgC,IAAI6+B,IAEjBtL,EAGHv1B,KAAKkC,IAAI2+B,EAAKtL,GAFdv1B,KAAKqmC,OAAOxF,EAIhB,GACC,CACDA,IAAK,SACL1+B,MAAO,SAAiB0+B,GACtB7gC,KAAKyuI,IAAIpoG,OAAOif,GAAUzkB,GAC5B,GAEC,CACDA,IAAK,MACL1+B,MAAO,SAAa9B,GAClB,OAAO,OAAmBL,KAAKyuI,IAAI3yE,WAAW9qC,KAAI,SAAU6gC,GAC1D,IAAImM,GAAQ,QAAenM,EAAM,GAC/BhxB,EAAMm9B,EAAM,GACZ77D,EAAQ67D,EAAM,GACZ41B,EAAQ/yD,EAAIvX,MAAMglH,IACtB,OAAOjuI,EAAS,CACdwgC,IAAK+yD,EAAM5iE,KAAI,SAAUu9G,GACvB,IAAIG,EAAcH,EAAKtzG,MAAM,kBAC3B0zG,GAAe,QAAeD,EAAa,GAC3C/lI,EAAOgmI,EAAa,GACpBC,EAAOD,EAAa,GACtB,MAAgB,WAAThmI,EAAoBsZ,OAAO2sH,GAAQA,CAC5C,IACAzsI,MAAOA,GAEX,GACF,GACC,CACD0+B,IAAK,SACL1+B,MAAO,WACL,IAAI0sI,EAAO,CAAC,EAOZ,OANA7uI,KAAKgxB,KAAI,SAAU6tC,GACjB,IAAIh+B,EAAMg+B,EAAMh+B,IACd1+B,EAAQ08D,EAAM18D,MAEhB,OADA0sI,EAAKhuG,EAAIxX,KAAK,MAAQlnB,EACf,IACT,IACO0sI,CACT,KAEKL,CACT,CAlE2B,GAmE3B,MC/EI,GAAY,CAAC,QASNM,IAAyB,SAAa,SAASA,EAAUC,GAClE,IAAItuI,EAAQT,MACZ,OAAgBA,KAAM8uI,GACtB9uI,KAAKgvI,YAAa,EAClBhvI,KAAK+uI,qBAAkB,EACvB/uI,KAAKivI,cAAe,EACpBjvI,KAAKkoI,MAAQ,CAAC,EACdloI,KAAKkvI,cAAgB,GACrBlvI,KAAKmvI,cAAgB,CAAC,EACtBnvI,KAAKovI,UAAY,CAAC,EAClBpvI,KAAK0rH,iBAAmB,KACxB1rH,KAAK4pI,SAAW,KAChB5pI,KAAKqvI,oBAAsB,KAC3BrvI,KAAKsvI,QAAU,WACb,MAAO,CACLvS,cAAet8H,EAAMs8H,cACrBC,eAAgBv8H,EAAMu8H,eACtBC,cAAex8H,EAAMw8H,cACrBC,gBAAiBz8H,EAAMy8H,gBACvBC,eAAgB18H,EAAM08H,eACtBC,gBAAiB38H,EAAM28H,gBACvBC,eAAgB58H,EAAM48H,eACtBC,kBAAmB78H,EAAM68H,kBACzBC,mBAAoB98H,EAAM88H,mBAC1BC,YAAa/8H,EAAM+8H,YACnBC,UAAWh9H,EAAMg9H,UACjBC,cAAej9H,EAAMi9H,cACrBC,eAAgBl9H,EAAMk9H,eACtBC,eAAgBn9H,EAAMm9H,eACtBC,OAAQp9H,EAAMo9H,OACd0R,OAAO,EACPzR,iBAAkBr9H,EAAMq9H,iBAE5B,EAEA99H,KAAK89H,iBAAmB,SAAUj9F,GAChC,OAAIA,IAAQg8F,IACVp8H,EAAMuuI,YAAa,EACZ,CACLjR,SAAUt9H,EAAMs9H,SAChBC,gBAAiBv9H,EAAMu9H,gBACvBC,cAAex9H,EAAMw9H,cACrBC,aAAcz9H,EAAMy9H,aACpBC,iBAAkB19H,EAAM09H,iBACxBC,YAAa39H,EAAM29H,YACnBC,aAAc59H,EAAM49H,aACpBG,oBAAqB/9H,EAAM+9H,oBAC3BD,UAAW99H,EAAM89H,UACjBE,YAAah+H,EAAMg+H,YACnBC,gBAAiBj+H,EAAMi+H,gBACvBJ,cAAe79H,EAAM69H,kBAGzB,UAAQ,EAAO,mEACR,KACT,EACAt+H,KAAKk+H,aAAe,SAAU+Q,GAC5BxuI,EAAMwuI,aAAeA,CACvB,EAKAjvI,KAAKwvI,qBAAuB,KAI5BxvI,KAAKm+H,iBAAmB,SAAUgR,EAAe7kI,GAE/C,GADA7J,EAAM0uI,cAAgBA,GAAiB,CAAC,EACpC7kI,EAAM,CACR,IAAImlI,EACAC,GAAY,QAAMP,EAAe1uI,EAAMynI,OAIc,QAAxDuH,EAAwBhvI,EAAM+uI,4BAA4D,IAA1BC,GAA4CA,EAAsBz+G,KAAI,SAAU6gC,GAC/I,IAAI00E,EAAW10E,EAAKhxB,IACpB6uG,GAAY,EAAAxtI,GAAA,GAASwtI,EAAWnJ,GAAU,EAAAvkI,GAAA,GAASmtI,EAAe5I,GACpE,IACA9lI,EAAM+uI,qBAAuB,KAC7B/uI,EAAMkvI,YAAYD,EACpB,CACF,EACA1vI,KAAKo+H,YAAc,WACjB,IAAIoR,EAAuB,IAAI,GAC/B/uI,EAAMmvI,kBAAiB,GAAMxnI,SAAQ,SAAUimF,GACxC5tF,EAAMovI,iBAAiBxhD,EAAOi+C,eACjCkD,EAAqBttI,IAAImsF,EAAO25C,eAAe,EAEnD,IACAvnI,EAAM+uI,qBAAuBA,CAC/B,EACAxvI,KAAK0+H,gBAAkB,SAAU6H,GAC/B,IAAIuJ,GAAY,EAAA9tI,GAAA,GAASvB,EAAM0uI,cAAe5I,GAE9C,OAAOA,EAAS1lI,QAAS,QAAMivI,GAAaA,CAC9C,EACA9vI,KAAKq+H,aAAe,SAAU+Q,GAC5B3uI,EAAM2uI,UAAYA,CACpB,EACApvI,KAAKw+H,oBAAsB,SAAU9S,GACnCjrH,EAAMirH,iBAAmBA,CAC3B,EACA1rH,KAAKy+H,YAAc,SAAUmL,GAC3BnpI,EAAMmpI,SAAWA,CACnB,EAEA5pI,KAAK+vI,UAAY,GACjB/vI,KAAKs+H,cAAgB,SAAUj+H,GAE7B,OADAI,EAAMsvI,UAAUxvI,KAAKF,GACd,WACLI,EAAMsvI,UAAYtvI,EAAMsvI,UAAUx/H,QAAO,SAAU8C,GACjD,OAAOA,IAAOhT,CAChB,GACF,CACF,EACAL,KAAKgwI,YAAc,WACjB,IAAIzJ,EAAW3lI,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,GAEnF,GAAIH,EAAMsvI,UAAUlvI,OAAQ,CAC1B,IAAI2/B,EAAS//B,EAAMu8H,iBACfiT,EAAYxvI,EAAMu8H,gBAAe,GACrCv8H,EAAMsvI,UAAU3nI,SAAQ,SAAU/H,GAChCA,EAASmgC,EAAQyvG,EAAW1J,EAC9B,GACF,CACF,EAEAvmI,KAAK44H,UAAY,KACjB54H,KAAKkwI,gBAAkB,WACjB,CAQN,EAEAlwI,KAAK2vI,YAAc,SAAUD,GAC3BjvI,EAAMynI,MAAQwH,CAChB,EAMA1vI,KAAK4vI,iBAAmB,WAEtB,OADWhvI,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,IAAmBA,UAAU,GAInEH,EAAMyuI,cAAc3+H,QAAO,SAAUsvH,GAC1C,OAAOA,EAAMmI,cAAcnnI,MAC7B,IAJSJ,EAAMyuI,aAKjB,EACAlvI,KAAKmwI,aAAe,WAClB,IAAIC,EAAOxvI,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,IAAmBA,UAAU,GACtEke,EAAQ,IAAI,GAKhB,OAJAre,EAAMmvI,iBAAiBQ,GAAMhoI,SAAQ,SAAUy3H,GAC7C,IAAI0G,EAAW1G,EAAMmI,cACrBlpH,EAAM5c,IAAIqkI,EAAU1G,EACtB,IACO/gH,CACT,EACA9e,KAAKqwI,gCAAkC,SAAUC,GAC/C,IAAKA,EACH,OAAO7vI,EAAMmvI,kBAAiB,GAEhC,IAAI9wH,EAAQre,EAAM0vI,cAAa,GAC/B,OAAOG,EAASt/G,KAAI,SAAU/uB,GAC5B,IAAIskI,EAAWyB,GAAY/lI,GAC3B,OAAO6c,EAAM9c,IAAIukI,IAAa,CAC5BgK,qBAAsBvI,GAAY/lI,GAEtC,GACF,EACAjC,KAAKg9H,eAAiB,SAAUsT,EAAUE,GAGxC,IAAIC,EACAC,EACAC,EAQJ,GAZAlwI,EAAMyvI,mBAKW,IAAbI,GAAqB7vG,MAAMC,QAAQ4vG,IACrCG,EAAiBH,EACjBI,EAAmBF,GACVF,GAAkC,YAAtB,QAAQA,KAC7BK,EAAeL,EAASM,OACxBF,EAAmBJ,EAAS//H,SAEP,IAAnBkgI,IAA4BC,EAC9B,OAAOjwI,EAAMynI,MAEf,IAAIgH,EAAgBzuI,EAAM4vI,gCAAgC5vG,MAAMC,QAAQ+vG,GAAkBA,EAAiB,MACvGI,EAAmB,GAuBvB,OAtBA3B,EAAc9mI,SAAQ,SAAUimF,GAC9B,IAAIyiD,EAKEC,EAJFxK,EAAW,yBAA0Bl4C,EAASA,EAAOkiD,qBAAuBliD,EAAO25C,cAGvF,GAAI2I,GAEF,GAAyC,QAApCI,EAAiB1iD,EAAOg+C,cAAuC,IAAnB0E,OAA4B,EAASA,EAAenvI,KAAKysF,GACxG,YAEG,IAAKoiD,IAAkE,QAA9CK,EAAsBziD,EAAOw7C,mBAAiD,IAAxBiH,OAAiC,EAASA,EAAoBlvI,KAAKysF,IACvJ,OAEF,GAAKqiD,EAEE,CACL,IAAIpG,EAAO,YAAaj8C,EAASA,EAAOk8C,UAAY,KAChDmG,EAAiBpG,IACnBuG,EAAiBtwI,KAAKgmI,EAE1B,MANEsK,EAAiBtwI,KAAKgmI,EAO1B,IACO0B,GAAoBxnI,EAAMynI,MAAO2I,EAAiB7/G,IAAIg3G,IAC/D,EACAhoI,KAAK+8H,cAAgB,SAAU96H,GAC7BxB,EAAMyvI,kBACN,IAAI3J,EAAWyB,GAAY/lI,GAC3B,OAAO,EAAAD,GAAA,GAASvB,EAAMynI,MAAO3B,EAC/B,EACAvmI,KAAKm9H,eAAiB,SAAUmT,GAG9B,OAFA7vI,EAAMyvI,kBACczvI,EAAM4vI,gCAAgCC,GACrCt/G,KAAI,SAAUq9D,EAAQrmF,GACzC,OAAIqmF,KAAY,yBAA0BA,GACjC,CACLpsF,KAAMosF,EAAO25C,cACbrI,OAAQtxC,EAAO89C,YACfzC,SAAUr7C,EAAO+9C,eAGd,CACLnqI,KAAM+lI,GAAYsI,EAAStoI,IAC3B23H,OAAQ,GACR+J,SAAU,GAEd,GACF,EACA1pI,KAAKi9H,cAAgB,SAAUh7H,GAC7BxB,EAAMyvI,kBACN,IAAI3J,EAAWyB,GAAY/lI,GAE3B,OADiBxB,EAAM08H,eAAe,CAACoJ,IAAW,GAChC5G,MACpB,EACA3/H,KAAKk9H,gBAAkB,SAAUj7H,GAC/BxB,EAAMyvI,kBACN,IAAI3J,EAAWyB,GAAY/lI,GAE3B,OADiBxB,EAAM08H,eAAe,CAACoJ,IAAW,GAChCmD,QACpB,EACA1pI,KAAKo9H,gBAAkB,WACrB38H,EAAMyvI,kBACN,IAAK,IAAI3mF,EAAO3oD,UAAUC,OAAQH,EAAO,IAAI+/B,MAAM8oB,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E9oD,EAAK8oD,GAAQ5oD,UAAU4oD,GAEzB,IAEI2+E,EAFA6I,EAAOtwI,EAAK,GACduwI,EAAOvwI,EAAK,GAEVwwI,GAAqB,EACL,IAAhBxwI,EAAKG,OACPsnI,EAAe,KACU,IAAhBznI,EAAKG,OACV4/B,MAAMC,QAAQswG,IAChB7I,EAAe6I,EAAKhgH,IAAIg3G,IACxBkJ,GAAqB,IAErB/I,EAAe,KACf+I,EAAqBF,IAGvB7I,EAAe6I,EAAKhgH,IAAIg3G,IACxBkJ,EAAqBD,GAEvB,IAAI/B,EAAgBzuI,EAAMmvI,kBAAiB,GACvCvS,EAAiB,SAAwBwC,GAC3C,OAAOA,EAAMxC,gBACf,EAEA,IAAK8K,EACH,OAAO+I,EAAqBhC,EAAc1G,MAAMnL,GAAkB6R,EAAcx0E,KAAK2iE,GAGvF,IAAIrsG,EAAM,IAAI,GACdm3G,EAAa//H,SAAQ,SAAU+oI,GAC7BngH,EAAI9uB,IAAIivI,EAAe,GACzB,IACAjC,EAAc9mI,SAAQ,SAAUy3H,GAC9B,IAAIuR,EAAgBvR,EAAMmI,cAE1BG,EAAa//H,SAAQ,SAAU+oI,GACzBA,EAAc3I,OAAM,SAAUC,EAAUvnI,GAC1C,OAAOkwI,EAAclwI,KAAOunI,CAC9B,KACEz3G,EAAIxrB,OAAO2rI,GAAe,SAAUzvB,GAClC,MAAO,GAAGnuG,QAAO,OAAmBmuG,GAAO,CAACme,GAC9C,GAEJ,GACF,IAEA,IAAIwR,EAAwB,SAA+BjjD,GACzD,OAAOA,EAAS1zB,KAAK2iE,EACvB,EACIiU,EAAuBtgH,EAAIA,KAAI,SAAUgtC,GAE3C,OADYA,EAAM77D,KAEpB,IACA,OAAO+uI,EAAqBI,EAAqB9I,MAAM6I,GAAyBC,EAAqB52E,KAAK22E,EAC5G,EACArxI,KAAKq9H,eAAiB,SAAUp7H,GAE9B,OADAxB,EAAMyvI,kBACCzvI,EAAM28H,gBAAgB,CAACn7H,GAChC,EACAjC,KAAKu9H,mBAAqB,SAAU+S,GAClC7vI,EAAMyvI,kBACN,IAAIhB,EAAgBzuI,EAAMmvI,mBAC1B,IAAKU,EACH,OAAOpB,EAAcx0E,MAAK,SAAU62E,GAClC,OAAOA,EAAUjU,mBACnB,IAEF,IAAI6K,EAAemI,EAASt/G,IAAIg3G,IAChC,OAAOkH,EAAcx0E,MAAK,SAAU62E,GAClC,IAAIH,EAAgBG,EAAUvJ,cAC9B,OAAOK,GAAiBF,EAAciJ,IAAkBG,EAAUjU,mBACpE,GACF,EACAt9H,KAAKs9H,kBAAoB,SAAUr7H,GAEjC,OADAxB,EAAMyvI,kBACCzvI,EAAM88H,mBAAmB,CAACt7H,GACnC,EAKAjC,KAAKwxI,2BAA6B,WAChC,IAAIn8E,EAAOz0D,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAE5Eke,EAAQ,IAAI,GACZowH,EAAgBzuI,EAAMmvI,kBAAiB,GAC3CV,EAAc9mI,SAAQ,SAAUy3H,GAC9B,IAAIqM,EAAerM,EAAMxoH,MAAM60H,aAC3B3F,EAAW1G,EAAMmI,cAErB,QAAqBvxG,IAAjBy1G,EAA4B,CAC9B,IAAIuF,EAAU3yH,EAAM9c,IAAIukI,IAAa,IAAI5/F,IACzC8qG,EAAQjgI,IAAI,CACV68E,OAAQwxC,EACR19H,MAAO+pI,IAETptH,EAAM5c,IAAIqkI,EAAUkL,EACtB,CACF,IAEA,IAyBIC,EACAr8E,EAAK+4B,SACPsjD,EAAwBr8E,EAAK+4B,SACpB/4B,EAAK8yE,cACduJ,EAAwB,GACxBr8E,EAAK8yE,aAAa//H,SAAQ,SAAUm+H,GAClC,IAEMoL,EAFFF,EAAU3yH,EAAM9c,IAAIukI,GACpBkL,IAEDE,EAAwBD,GAAuBnxI,KAAKc,MAAMswI,GAAuB,QAAmB,OAAmBF,GAASzgH,KAAI,SAAU9R,GAC7I,OAAOA,EAAEmvE,MACX,KAEJ,KAEAqjD,EAAwBxC,EAEVwC,EAzCLtpI,SAAQ,SAAUy3H,GAEzB,QAAqBppG,IADFopG,EAAMxoH,MAAM60H,aACC,CAC9B,IAAI3F,EAAW1G,EAAMmI,cAErB,QAAyBvxG,IADFh2B,EAAMi+H,gBAAgB6H,IAG3C,UAAQ,EAAO,+CAA+ChzH,OAAOgzH,EAASl9G,KAAK,KAAM,uCACpF,CACL,IAAIooH,EAAU3yH,EAAM9c,IAAIukI,GACxB,GAAIkL,GAAWA,EAAQntG,KAAO,GAE5B,UAAQ,EAAO,6BAA6B/wB,OAAOgzH,EAASl9G,KAAK,KAAM,iEAClE,GAAIooH,EAAS,CAClB,IAAI3gI,EAAcrQ,EAAMs8H,cAAcwJ,GAEjClxE,EAAKu8E,gBAA6Bn7G,IAAhB3lB,GACrBrQ,EAAMkvI,aAAY,EAAAztI,GAAA,GAASzB,EAAMynI,MAAO3B,GAAU,OAAmBkL,GAAS,GAAGtvI,OAErF,CACF,CACF,CACF,GAoBJ,EACAnC,KAAKw9H,YAAc,SAAU8S,GAC3B7vI,EAAMyvI,kBACN,IAAIzF,EAAYhqI,EAAMynI,MACtB,IAAKoI,EAOH,OANA7vI,EAAMkvI,aAAY,QAAMlvI,EAAM0uI,gBAC9B1uI,EAAM+wI,6BACN/wI,EAAMoxI,gBAAgBpH,EAAW,KAAM,CACrC9hI,KAAM,eAERlI,EAAMuvI,cAIR,IAAI7H,EAAemI,EAASt/G,IAAIg3G,IAChCG,EAAa//H,SAAQ,SAAUm+H,GAC7B,IAAI2F,EAAezrI,EAAMi+H,gBAAgB6H,GACzC9lI,EAAMkvI,aAAY,EAAAztI,GAAA,GAASzB,EAAMynI,MAAO3B,EAAU2F,GACpD,IACAzrI,EAAM+wI,2BAA2B,CAC/BrJ,aAAcA,IAEhB1nI,EAAMoxI,gBAAgBpH,EAAWtC,EAAc,CAC7Cx/H,KAAM,UAERlI,EAAMuvI,YAAY7H,EACpB,EACAnoI,KAAKy9H,UAAY,SAAUmC,GACzBn/H,EAAMyvI,kBACN,IAAIzF,EAAYhqI,EAAMynI,MAClBC,EAAe,GACnBvI,EAAOx3H,SAAQ,SAAU0pI,GACvB,IAAI7vI,EAAO6vI,EAAU7vI,KACnByjB,GAAO,QAAyBosH,EAAW,IACzCvL,EAAWyB,GAAY/lI,GAC3BkmI,EAAa5nI,KAAKgmI,GAEd,UAAW7gH,GACbjlB,EAAMkvI,aAAY,EAAAztI,GAAA,GAASzB,EAAMynI,MAAO3B,EAAU7gH,EAAKvjB,QAEzD1B,EAAMoxI,gBAAgBpH,EAAW,CAAClE,GAAW,CAC3C59H,KAAM,WACN+c,KAAMosH,GAEV,IACArxI,EAAMuvI,YAAY7H,EACpB,EACAnoI,KAAKu+H,UAAY,WACf,IACIqB,EADWn/H,EAAMmvI,kBAAiB,GAChB5+G,KAAI,SAAU6uG,GAClC,IAAI0G,EAAW1G,EAAMmI,cACjBsC,EAAOzK,EAAM0K,UACbuH,GAAY,SAAc,QAAc,CAAC,EAAGxH,GAAO,CAAC,EAAG,CACzDroI,KAAMskI,EACNpkI,MAAO1B,EAAMs8H,cAAcwJ,KAK7B,OAHA/uH,OAAOoxB,eAAekpG,EAAW,gBAAiB,CAChD3vI,OAAO,IAEF2vI,CACT,IACA,OAAOlS,CACT,EAKA5/H,KAAKg+H,gBAAkB,SAAU3vC,GAC/B,IAAI69C,EAAe79C,EAAOh3E,MAAM60H,aAChC,QAAqBz1G,IAAjBy1G,EAA4B,CAC9B,IAAI3F,EAAWl4C,EAAO25C,mBAEJvxG,KADF,EAAAz0B,GAAA,GAASvB,EAAMynI,MAAO3B,IAEpC9lI,EAAMkvI,aAAY,EAAAztI,GAAA,GAASzB,EAAMynI,MAAO3B,EAAU2F,GAEtD,CACF,EACAlsI,KAAK6vI,iBAAmB,SAAUkC,GAChC,IAAIC,OAAmCv7G,IAAlBs7G,EAA8BA,EAAgBtxI,EAAMmpI,SACzE,OAAOoI,SAAuDA,CAChE,EACAhyI,KAAKi+H,cAAgB,SAAU5vC,GAC7B5tF,EAAMyuI,cAAc3uI,KAAK8tF,GACzB,IAAIk4C,EAAWl4C,EAAO25C,cAGtB,GAFAvnI,EAAMuvI,YAAY,CAACzJ,SAEe9vG,IAA9B43D,EAAOh3E,MAAM60H,aAA4B,CAC3C,IAAIzB,EAAYhqI,EAAMynI,MACtBznI,EAAM+wI,2BAA2B,CAC/BpjD,SAAU,CAACC,GACXujD,WAAW,IAEbnxI,EAAMoxI,gBAAgBpH,EAAW,CAACp8C,EAAO25C,eAAgB,CACvDr/H,KAAM,cACN0oB,OAAQ,YAEZ,CAEA,OAAO,SAAUw4G,EAAaD,GAC5B,IAAIqI,EAAcrxI,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,GAKtF,GAJAH,EAAMyuI,cAAgBzuI,EAAMyuI,cAAc3+H,QAAO,SAAUkH,GACzD,OAAOA,IAAS42E,CAClB,KAEK5tF,EAAMovI,iBAAiBjG,MAAeC,GAAeoI,EAAYpxI,OAAS,GAAI,CACjF,IAAImkC,EAAe6kG,OAAcpzG,EAAYh2B,EAAMi+H,gBAAgB6H,GACnE,GAAIA,EAAS1lI,QAAUJ,EAAMs8H,cAAcwJ,KAAcvhG,GAAgBvkC,EAAMyuI,cAAc1G,OAAM,SAAU3I,GAC3G,OAEGyI,GAAczI,EAAMmI,cAAezB,EAExC,IAAI,CACF,IAAI2L,EAAazxI,EAAMynI,MACvBznI,EAAMkvI,aAAY,EAAAztI,GAAA,GAASgwI,EAAY3L,EAAUvhG,GAAc,IAE/DvkC,EAAMoxI,gBAAgBK,EAAY,CAAC3L,GAAW,CAC5C59H,KAAM,WAGRlI,EAAM0xI,0BAA0BD,EAAY3L,EAC9C,CACF,CACA9lI,EAAMuvI,YAAY,CAACzJ,GACrB,CACF,EACAvmI,KAAK+9H,SAAW,SAAUtjG,GACxB,OAAQA,EAAO9xB,MACb,IAAK,cAED,IAAI49H,EAAW9rG,EAAO8rG,SACpBpkI,EAAQs4B,EAAOt4B,MACjB1B,EAAM2xI,YAAY7L,EAAUpkI,GAC5B,MAEJ,IAAK,gBAED,IAAIkwI,EAAY53G,EAAO8rG,SACrB6E,EAAc3wG,EAAO2wG,YACvB3qI,EAAMm9H,eAAe,CAACyU,GAAY,CAChCjH,YAAaA,IAOvB,EAEAprI,KAAK6xI,gBAAkB,SAAUpH,EAAWtC,EAAc9yE,GACxD,GAAI50D,EAAMwuI,aAAc,CACtB,IAAIqD,GAAa,SAAc,QAAc,CAAC,EAAGj9E,GAAO,CAAC,EAAG,CAC1D6yE,MAAOznI,EAAMu8H,gBAAe,KAE9Bv8H,EAAMmvI,mBAAmBxnI,SAAQ,SAAUy2D,IAEzC2rE,EADoB3rE,EAAM2rE,eACZC,EAAWtC,EAAcmK,EACzC,GACF,MACE7xI,EAAMsuI,iBAEV,EAKA/uI,KAAKmyI,0BAA4B,SAAU1H,EAAWlE,GACpD,IAAIgM,EAAiB9xI,EAAM+xI,4BAA4BjM,GAQvD,OAPIgM,EAAe1xI,QACjBJ,EAAMm9H,eAAe2U,GAEvB9xI,EAAMoxI,gBAAgBpH,EAAW8H,EAAgB,CAC/C5pI,KAAM,qBACNuiI,cAAe,CAAC3E,GAAUhzH,QAAO,OAAmBg/H,MAE/CA,CACT,EACAvyI,KAAKoyI,YAAc,SAAUnwI,EAAME,GACjC,IAAIokI,EAAWyB,GAAY/lI,GACvBwoI,EAAYhqI,EAAMynI,MACtBznI,EAAMkvI,aAAY,EAAAztI,GAAA,GAASzB,EAAMynI,MAAO3B,EAAUpkI,IAClD1B,EAAMoxI,gBAAgBpH,EAAW,CAAClE,GAAW,CAC3C59H,KAAM,cACN0oB,OAAQ,aAEV5wB,EAAMuvI,YAAY,CAACzJ,IAEnB,IAAIgM,EAAiB9xI,EAAM0xI,0BAA0B1H,EAAWlE,GAE5DkM,EAAiBhyI,EAAM2uI,UAAUqD,eACjCA,GAEFA,EADoBxK,GAAoBxnI,EAAMynI,MAAO,CAAC3B,IACxB9lI,EAAMu8H,kBAEtCv8H,EAAMiyI,sBAAsB,CAACnM,GAAUhzH,QAAO,OAAmBg/H,IACnE,EAEAvyI,KAAK29H,eAAiB,SAAUuK,GAC9BznI,EAAMyvI,kBACN,IAAIzF,EAAYhqI,EAAMynI,MACtB,GAAIA,EAAO,CACT,IAAIwH,GAAY,QAAMjvI,EAAMynI,MAAOA,GACnCznI,EAAMkvI,YAAYD,EACpB,CACAjvI,EAAMoxI,gBAAgBpH,EAAW,KAAM,CACrC9hI,KAAM,cACN0oB,OAAQ,aAEV5wB,EAAMuvI,aACR,EACAhwI,KAAK09H,cAAgB,SAAUz7H,EAAME,GACnC1B,EAAMg9H,UAAU,CAAC,CACfx7H,KAAMA,EACNE,MAAOA,IAEX,EACAnC,KAAKwyI,4BAA8B,SAAUG,GAC3C,IAAI9iI,EAAW,IAAI82B,IACf4rG,EAAiB,GACjBK,EAAsB,IAAI,GAK9BnyI,EAAMmvI,mBAAmBxnI,SAAQ,SAAUy3H,IACtBA,EAAMxoH,MAAMszH,cACd,IAAIviI,SAAQ,SAAU6iI,GACrC,IAAI4H,EAAqB7K,GAAYiD,GACrC2H,EAAoBptI,OAAOqtI,GAAoB,WAC7C,IAAIjT,EAASh/H,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,IAAI+lC,IAErF,OADAi5F,EAAOpuH,IAAIquH,GACJD,CACT,GACF,GACF,IAeA,OAdmB,SAASkT,EAAavM,IAC1BqM,EAAoB5wI,IAAIukI,IAAa,IAAI5/F,KAC/Cv+B,SAAQ,SAAUy3H,GACvB,IAAKhwH,EAASiyB,IAAI+9F,GAAQ,CACxBhwH,EAAS2B,IAAIquH,GACb,IAAIuR,EAAgBvR,EAAMmI,cACtBnI,EAAMoM,gBAAkBmF,EAAcvwI,SACxC0xI,EAAehyI,KAAK6wI,GACpB0B,EAAa1B,GAEjB,CACF,GACF,CACA0B,CAAaH,GACNJ,CACT,EACAvyI,KAAK0yI,sBAAwB,SAAUvK,EAAc4K,GACnD,IAAIC,EAAiBvyI,EAAM2uI,UAAU4D,eACrC,GAAIA,EAAgB,CAClB,IAAIpT,EAASn/H,EAAM89H,YAInB,GAAIwU,EAAa,CACf,IAAIj0H,EAAQ,IAAI,GAChBi0H,EAAY3qI,SAAQ,SAAUi4F,GAC5B,IAAIp+F,EAAOo+F,EAAMp+F,KACf09H,EAASt/B,EAAMs/B,OACjB7gH,EAAM5c,IAAID,EAAM09H,EAClB,IACAC,EAAOx3H,SAAQ,SAAUy3H,GAEvBA,EAAMF,OAAS7gH,EAAM9c,IAAI69H,EAAM59H,OAAS49H,EAAMF,MAChD,GACF,CACA,IAAIsT,EAAgBrT,EAAOrvH,QAAO,SAAUikG,GAC1C,IAAI0+B,EAAY1+B,EAAMvyG,KACtB,OAAOomI,GAAiBF,EAAc+K,EACxC,IACID,EAAcpyI,QAChBmyI,EAAeC,EAAerT,EAElC,CACF,EAEA5/H,KAAK49H,eAAiB,SAAUqT,EAAMkC,GAEpC,IAAI7C,EACAnrG,EAFJ1kC,EAAMyvI,kBAGFzvG,MAAMC,QAAQuwG,IAAyB,iBAATA,GAAqC,iBAATkC,GAC5D7C,EAAWW,EACX9rG,EAAUguG,GAEVhuG,EAAU8rG,EAEZ,IAAImC,IAAoB9C,EACpBnI,EAAeiL,EAAkB9C,EAASt/G,IAAIg3G,IAAe,GAE7DqL,EAAc,GAEdC,EAAY3tH,OAAO3iB,KAAKD,OACxBwwI,EAAuB,IAAI5sG,IAC/BlmC,EAAMmvI,kBAAiB,GAAMxnI,SAAQ,SAAUy3H,GAC7C,IAAI2T,EASJ,GAPKJ,GACHjL,EAAa5nI,KAAKs/H,EAAMmI,gBAMI,QAAxBwL,EAAWruG,SAAkC,IAAbquG,OAAsB,EAASA,EAAS3rH,YAAcurH,EAAiB,CAC3G,IAAI7M,EAAW1G,EAAMmI,cAIrBzB,EAASiC,OAAM,SAAUC,EAAUvnI,GACjC,OAAOovI,EAASpvI,KAAOunI,QAA4BhyG,IAAhB65G,EAASpvI,EAC9C,KACEinI,EAAa5nI,KAAKgmI,EAEtB,CAEA,GAAK1G,EAAMxoH,MAAMyrH,OAAUjD,EAAMxoH,MAAMyrH,MAAMjiI,OAA7C,CAGA,IAAIuwI,EAAgBvR,EAAMmI,cAG1B,GAFAuL,EAAqB/hI,IAAI4/H,EAAc/nH,KAAKiqH,KAEvCF,GAAmB/K,GAAiBF,EAAciJ,GAAgB,CACrE,IAAItgB,EAAU+O,EAAMyG,eAAc,QAAc,CAC9C5a,kBAAkB,SAAc,QAAc,CAAC,EAAGhkD,IAA0BjnE,EAAMirH,mBACjFvmF,IAEHkuG,EAAY9yI,KAAKuwH,EAAQvpF,MAAK,WAC5B,MAAO,CACLtlC,KAAMmvI,EACNzR,OAAQ,GACR+J,SAAU,GAEd,IAAG5C,OAAM,SAAU8E,GACjB,IAAIC,EACA4H,EAAe,GACfC,EAAiB,GAUrB,OAT+C,QAA9C7H,EAAsBD,EAAWxjI,eAA6C,IAAxByjI,GAA0CA,EAAoBjqI,KAAKgqI,GAAY,SAAU/yD,GAC9I,IAAIkuD,EAAcluD,EAAMsoD,KAAK4F,YAC3BpH,EAAS9mD,EAAM8mD,OACboH,EACF2M,EAAenzI,KAAKc,MAAMqyI,GAAgB,OAAmB/T,IAE7D8T,EAAalzI,KAAKc,MAAMoyI,GAAc,OAAmB9T,GAE7D,IACI8T,EAAa5yI,OACR+lC,QAAQU,OAAO,CACpBrlC,KAAMmvI,EACNzR,OAAQ8T,EACR/J,SAAUgK,IAGP,CACLzxI,KAAMmvI,EACNzR,OAAQ8T,EACR/J,SAAUgK,EAEd,IACF,CAzCA,CA0CF,IACA,IAAIjN,EC7wBD,SAA0B4M,GAC/B,IAAIM,GAAW,EACX7iH,EAAQuiH,EAAYxyI,OACpBkgI,EAAU,GACd,OAAKsS,EAAYxyI,OAGV,IAAI+lC,SAAQ,SAAUS,EAASC,GACpC+rG,EAAYjrI,SAAQ,SAAU0oH,EAAS9oH,GACrC8oH,EAAQgW,OAAM,SAAU5iI,GAEtB,OADAyvI,GAAW,EACJzvI,CACT,IAAGqjC,MAAK,SAAU30B,GAChBke,GAAS,EACTiwG,EAAQ/4H,GAAS4K,EACbke,EAAQ,IAGR6iH,GACFrsG,EAAOy5F,GAET15F,EAAQ05F,GACV,GACF,GACF,IAnBSn6F,QAAQS,QAAQ,GAoB3B,CDovByBusG,CAAiBP,GACtC5yI,EAAM4uI,oBAAsB5I,EAE5BA,EAAeK,OAAM,SAAU/F,GAC7B,OAAOA,CACT,IAAGx5F,MAAK,SAAUw5F,GAChB,IAAI8S,EAAqB9S,EAAQ/vG,KAAI,SAAU8iH,GAE7C,OADWA,EAAM7xI,IAEnB,IACAxB,EAAMoxI,gBAAgBpxI,EAAMynI,MAAO2L,EAAoB,CACrDlrI,KAAM,mBAERlI,EAAMiyI,sBAAsBmB,EAAoB9S,EAClD,IACA,IAAIgT,EAAgBtN,EAAel/F,MAAK,WACtC,OAAI9mC,EAAM4uI,sBAAwB5I,EACzB7/F,QAAQS,QAAQ5mC,EAAMu8H,eAAemL,IAEvCvhG,QAAQU,OAAO,GACxB,IAAGw/F,OAAM,SAAU/F,GACjB,IAAIuD,EAAYvD,EAAQxwH,QAAO,SAAUqC,GACvC,OAAOA,GAAUA,EAAO+sH,OAAO9+H,MACjC,IACA,OAAO+lC,QAAQU,OAAO,CACpB9G,OAAQ//B,EAAMu8H,eAAemL,GAC7BnE,YAAaM,EACb0P,UAAWvzI,EAAM4uI,sBAAwB5I,GAE7C,IAEAsN,EAAcjN,OAAM,SAAU5iI,GAC5B,OAAOA,CACT,IAEA,IAAI+vI,EAAsB9L,EAAa53H,QAAO,SAAUg2H,GACtD,OAAOgN,EAAqBzxG,IAAIykG,EAASl9G,KAAKiqH,GAChD,IAEA,OADA7yI,EAAMiyI,sBAAsBuB,GACrBF,CACT,EAEA/zI,KAAK69H,OAAS,WACZp9H,EAAMyvI,kBACNzvI,EAAMm9H,iBAAiBr2F,MAAK,SAAU/G,GACpC,IAAI0zG,EAAWzzI,EAAM2uI,UAAU8E,SAC/B,GAAIA,EACF,IACEA,EAAS1zG,EACX,CAAE,MAAOgH,GAEPw9F,QAAQ53E,MAAM5lB,EAChB,CAEJ,IAAGs/F,OAAM,SAAU5iI,GACjB,IAAIiwI,EAAiB1zI,EAAM2uI,UAAU+E,eACjCA,GACFA,EAAejwI,EAEnB,GACF,EACAlE,KAAK+uI,gBAAkBA,CACzB,IAoBA,OAnBA,SAAiBrnB,GACf,IAAI0sB,EAAU,WACV5nE,EAAkB,WAAe,CAAC,GAEpC+vC,GADmB,QAAe/vC,EAAiB,GACpB,GACjC,IAAK4nE,EAAQ3sI,QACX,GAAIigH,EACF0sB,EAAQ3sI,QAAUigH,MACb,CAEL,IAGI2sB,EAAY,IAAIvF,IAHA,WAClBvyB,EAAY,CAAC,EACf,IAEA63B,EAAQ3sI,QAAU4sI,EAAU/E,SAC9B,CAEF,MAAO,CAAC8E,EAAQ3sI,QAClB,EE31BI6sI,GAA2B,gBAAoB,CACjDC,kBAAmB,WAA8B,EACjDC,kBAAmB,WAA8B,EACjDC,aAAc,WAAyB,EACvCC,eAAgB,WAA2B,IAiD7C,MCpDI,GAAY,CAAC,OAAQ,gBAAiB,SAAU,OAAQ,WAAY,WAAY,YAAa,mBAAoB,kBAAmB,iBAAkB,iBAAkB,WAAY,kBA+HxL,GAxHW,SAAc7iF,EAAMO,GAC7B,IAAInwD,EAAO4vD,EAAK5vD,KACdktI,EAAgBt9E,EAAKs9E,cACrBvP,EAAS/tE,EAAK+tE,OACdlY,EAAO71D,EAAK61D,KACZkiB,EAAW/3E,EAAK+3E,SAChB/5H,EAAWgiD,EAAKhiD,SAChB8kI,EAAiB9iF,EAAK2N,UACtBc,OAA+B,IAAnBq0E,EAA4B,OAASA,EACjDjpB,EAAmB75D,EAAK65D,iBACxBkpB,EAAuB/iF,EAAK85E,gBAC5BA,OAA2C,IAAzBiJ,EAAkC,WAAaA,EACjEnC,EAAiB5gF,EAAK4gF,eACtBoC,EAAkBhjF,EAAKmhF,eACvB8B,EAAYjjF,EAAKqiF,SACjBC,EAAiBtiF,EAAKsiF,eACtBjwD,GAAY,QAAyBryB,EAAM,IACzCkjF,EAAc,aAAiB,IAG/BC,EAAW,GAAQttB,GAErButB,GADY,QAAeD,EAAU,GACZ,GACvBE,EAAwBD,EAAanX,iBAAiBjB,IACxDqB,EAAegX,EAAsBhX,aACrCC,EAAmB+W,EAAsB/W,iBACzCE,EAAe6W,EAAsB7W,aACrCG,EAAsB0W,EAAsB1W,oBAC5CC,EAAcyW,EAAsBzW,YACpCL,EAAc8W,EAAsB9W,YAEtC,sBAA0BhsE,GAAK,WAC7B,OAAO6iF,CACT,IAEA,aAAgB,WAEd,OADAF,EAAYN,aAAaxyI,EAAMgzI,GACxB,WACLF,EAAYL,eAAezyI,EAC7B,CACF,GAAG,CAAC8yI,EAAaE,EAAchzI,IAE/Bu8H,GAAoB,SAAc,QAAc,CAAC,EAAGuW,EAAYrpB,kBAAmBA,IACnF2S,EAAa,CACXoU,eAAgBA,EAChBO,eAAgB,SAAwBC,GAEtC,GADA8B,EAAYR,kBAAkBtyI,EAAMgxI,GAChC4B,EAAiB,CACnB,IAAK,IAAItrF,EAAO3oD,UAAUC,OAAQ87E,EAAO,IAAIl8C,MAAM8oB,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IAClGmzB,EAAKnzB,EAAO,GAAK5oD,UAAU4oD,GAE7BqrF,EAAgBxzI,WAAM,EAAQ,CAAC4xI,GAAe1/H,OAAOopE,GACvD,CACF,EACAu3D,SAAU,SAAkB1zG,GAC1Bu0G,EAAYP,kBAAkBvyI,EAAMu+B,GAChCs0G,GACFA,EAAUt0G,EAEd,EACA2zG,eAAgBA,IAElB1V,EAAYmL,GAEZ,IAWIuL,EAXAC,EAAW,SAAa,MAC5BjX,EAAiBgR,GAAgBiG,EAAS3tI,SACrC2tI,EAAS3tI,UACZ2tI,EAAS3tI,SAAU,GAErB,aAAgB,WACd,OAAO22H,CACT,GAEA,IAGA,IAAIiX,EAA0C,mBAAbxlI,EAC7BwlI,EAEFF,EAAetlI,EADFolI,EAAajY,gBAAe,GACTiY,GAEhCE,EAAetlI,EAGjBquH,GAAcmX,GAEd,IAAIC,EAAgB,WACpB,aAAgB,YP7DX,SAAmBjkH,EAAQ3oB,GAChC,GAAI2oB,IAAW3oB,EACb,OAAO,EAET,IAAK2oB,GAAU3oB,GAAU2oB,IAAW3oB,EAClC,OAAO,EAET,IAAK2oB,IAAW3oB,GAA8B,YAApB,QAAQ2oB,IAA4C,YAApB,QAAQ3oB,GAChE,OAAO,EAET,IAAI6sI,EAAa/9H,OAAOopB,KAAKvP,GACzBmkH,EAAah+H,OAAOopB,KAAKl4B,GACzBk4B,EAAO,IAAI+F,IAAI,GAAGpzB,OAAOgiI,EAAYC,IACzC,OAAO,OAAmB50G,GAAM4nG,OAAM,SAAU3nG,GAC9C,IAAI40G,EAAcpkH,EAAOwP,GACrB60G,EAAchtI,EAAOm4B,GACzB,MAA2B,mBAAhB40G,GAAqD,mBAAhBC,GAGzCD,IAAgBC,CACzB,GACF,EOyCSC,CAAUL,EAAc7tI,SAAW,GAAIm4H,GAAU,KACpDqV,EAAaxX,UAAUmC,GAAU,IAEnC0V,EAAc7tI,QAAUm4H,CAC1B,GAAG,CAACA,EAAQqV,IACZ,IAAIW,EAAmB,WAAc,WACnC,OAAO,SAAc,QAAc,CAAC,EAAGX,GAAe,CAAC,EAAG,CACxDtJ,gBAAiBA,GAErB,GAAG,CAACsJ,EAActJ,IACdkK,EAA2B,gBAAoB,GAAY70E,SAAU,CACvE7+D,MAAO,MACO,gBAAoBqrI,GAAaxsE,SAAU,CACzD7+D,MAAOyzI,GACNT,IACH,OAAkB,IAAd70E,EACKu1E,EAEW,gBAAoBv1E,GAAW,OAAS,CAAC,EAAG4jB,EAAW,CACzE4xD,SAAU,SAAkB/qI,GAC1BA,EAAM0B,iBACN1B,EAAM4X,kBACNsyH,EAAapX,QACf,EACA+M,QAAS,SAAiB7/H,GACxB,IAAIgrI,EACJhrI,EAAM0B,iBACNwoI,EAAazX,cACgC,QAA5CuY,EAAqB7xD,EAAU0mD,eAA4C,IAAvBmL,GAAyCA,EAAmBn0I,KAAKsiF,EAAWn5E,EACnI,IACE8qI,EACN,EC5HO,SAAS/0F,GAAU3+C,GACxB,IACE,OAAO6+C,KAAKF,UAAU3+C,EACxB,CAAE,MAAOqlC,GACP,OAAOvtB,KAAK+qC,QACd,CACF,CACA,IAAIgxF,GAIA,WAAa,EA6DjB,OA5DA,WACE,IAAK,IAAIzsF,EAAO3oD,UAAUC,OAAQH,EAAO,IAAI+/B,MAAM8oB,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E9oD,EAAK8oD,GAAQ5oD,UAAU4oD,GAEzB,IAAIysF,EAASv1I,EAAK,GAChBiqI,OAA0B,IAAXsL,EAAoB,GAAKA,EACxCC,EAAUx1I,EAAK,GACfy1I,OAAoB,IAAZD,EAAqB,CAAC,EAAIA,EAChC/wG,EZpBC,SAAwBuiF,GAC7B,OAAOA,KAAUA,EAAK6nB,KACxB,CYkBgB6G,CAAeD,GAAS,CACpCzuB,KAAMyuB,GACJA,EACAzuB,EAAOviF,EAAQuiF,KACfrqC,GAAY,IAAAC,YACdC,GAAa,QAAeF,EAAW,GACvCl7E,EAAQo7E,EAAW,GACnB84D,EAAW94D,EAAW,GACpB+4D,GAAW,IAAAn5D,UAAQ,WACrB,OAAOr8B,GAAU3+C,EACnB,GAAG,CAACA,IACAo0I,GAAc,IAAAjmE,QAAOgmE,GACzBC,EAAY9uI,QAAU6uI,EACtB,IAAIvM,GAAe,IAAA35D,YAAWo9D,IAC1ByH,EAAevtB,GAAQqiB,EACvByM,EAAcvB,GAAgBA,EAAa1F,MAK3ChJ,EAAWyB,GAAY2C,GACvB8L,GAAc,IAAAnmE,QAAOi2D,GA6BzB,OA5BAkQ,EAAYhvI,QAAU8+H,EACtByP,GAAgBzP,IAChB,IAAAroD,YAAU,WAER,GAAKs4D,EAAL,CAGA,IAAIxZ,EAAiBiY,EAAajY,eAI9B2M,GAAiBrL,GAFGR,EADHmX,EAAanX,kBACOjB,IACLyB,gBACD,SAAU99F,EAAQyvG,GACnD,IAAI/C,GAAW,EAAAlrI,GAAA,GAASmjC,EAAQykG,SAAWqG,EAAYzvG,EAAQi2G,EAAYhvI,SACvEivI,EAAe51F,GAAUosF,GAEzBqJ,EAAY9uI,UAAYivI,IAC1BH,EAAY9uI,QAAUivI,EACtBL,EAASnJ,GAEb,IAEIhB,GAAe,EAAAlqI,GAAA,GAASmjC,EAAQykG,SAAW5M,GAAe,GAAQA,IAAkByZ,EAAYhvI,SAEpG,OADA4uI,EAASnK,GACFvC,CAjBP,CAkBF,GAGA,CAAC6M,IACMr0I,CACT,ECnEIw0I,GAD4B,aAAiB,IAEjDA,GAAQC,aHFW,SAAsB/kF,GACvC,IAAI65D,EAAmB75D,EAAK65D,iBAC1BmrB,EAAehlF,EAAKglF,aACpBC,EAAejlF,EAAKilF,aACpBjnI,EAAWgiD,EAAKhiD,SACdklI,EAAc,aAAiBT,IAC/ByC,EAAW,SAAa,CAAC,GAC7B,OAAoB,gBAAoBzC,GAAYtzE,SAAU,CAC5D7+D,OAAO,SAAc,QAAc,CAAC,EAAG4yI,GAAc,CAAC,EAAG,CACvDrpB,kBAAkB,SAAc,QAAc,CAAC,EAAGqpB,EAAYrpB,kBAAmBA,GAIjF6oB,kBAAmB,SAA2BtyI,EAAMgxI,GAC9C4D,GACFA,EAAa50I,EAAM,CACjBgxI,cAAeA,EACf+D,MAAOD,EAAStvI,UAGpBstI,EAAYR,kBAAkBtyI,EAAMgxI,EACtC,EACAuB,kBAAmB,SAA2BvyI,EAAMu+B,GAC9Cs2G,GACFA,EAAa70I,EAAM,CACjBu+B,OAAQA,EACRw2G,MAAOD,EAAStvI,UAGpBstI,EAAYP,kBAAkBvyI,EAAMu+B,EACtC,EACAi0G,aAAc,SAAsBxyI,EAAMylH,GACpCzlH,IACF80I,EAAStvI,SAAU,SAAc,QAAc,CAAC,EAAGsvI,EAAStvI,SAAU,CAAC,GAAG,OAAgB,CAAC,EAAGxF,EAAMylH,KAEtGqtB,EAAYN,aAAaxyI,EAAMylH,EACjC,EACAgtB,eAAgB,SAAwBzyI,GACtC,IAAIg1I,GAAW,QAAc,CAAC,EAAGF,EAAStvI,gBACnCwvI,EAASh1I,GAChB80I,EAAStvI,QAAUwvI,EACnBlC,EAAYL,eAAezyI,EAC7B,KAED4N,EACL,EG1CA8mI,GAAQzN,MAAQ,GAChByN,GAAQO,KAAO,GACfP,GAAQQ,QAAU,GAClBR,GAAQ5xC,SAAW,GAEnB,ICAWqyC,GAAoC,gBAAoB,CAAC,GACzDC,GAAc,SAAqBxlF,GAC5C,IAAIhiD,EAAWgiD,EAAKhiD,SAClB4pD,EAAS5H,EAAK4H,OACd69E,EAAWzlF,EAAKylF,SACdC,GAAuB,IAAAnnE,YAAWgnE,IAClCI,GAA0B,IAAAr6D,UAAQ,WACpC,IAAIs6D,EAAajgI,OAAO89B,OAAO,CAAC,EAAGiiG,GASnC,OARID,UACKG,EAAWC,gBAEhBj+E,WACKg+E,EAAWh+E,cACXg+E,EAAWE,mBACXF,EAAWG,cAEbH,CACT,GAAG,CAACh+E,EAAQ69E,EAAUC,IACtB,OAAoB,gBAAoBH,GAAqBp2E,SAAU,CACrE7+D,MAAOq1I,GACN3nI,EACL,EC9BO,SAASgoI,GAAgBp4E,EAAWktD,GACzC,OAAoB,gBAAoB,OAAQ,CAC9C/4G,UAAW,GAAGL,OAAOksD,EAAW,aAC/BktD,GAA0B,gBAAoB,GAAe,CAC9D/4G,UAAW,GAAGL,OAAOksD,EAAW,iBAEpC,CACO,IAAIq4E,GAAS,SAAgBzgI,GAClC,IAAIyuD,EAASzuD,EAAMyuD,OACjBiyE,EAAgB1gI,EAAM2gI,OACtBA,OAA2B,IAAlBD,EAA2B,UAAYA,EAChDhyE,EAAa1uD,EAAM0uD,WACnBkyE,EAAiB5gI,EAAM4gI,eACvBC,EAAO7gI,EAAM6gI,KACbC,EAAW9gI,EAAM8gI,SACjBC,EAAgB/gI,EAAM+gI,cACtBC,EAAoBhhI,EAAMghI,kBACxB/0B,EAAa,GAAU,QAASiB,MAElC1iD,GADc,OAAeyhD,EAAY,GACpB,GACvB,OAAoB,gBAAoBxiD,GAAyB,CAC/DpB,UAAU,GACI,gBAAoB,GAAQloD,OAAO89B,OAAO,CACxDunB,QAASs7E,GACRE,GAAoBtyE,IAAelE,aAAuC,EAASA,EAAOkE,aAA2B,gBAAoB,GAAQvuD,OAAO89B,OAAO,CAAC,EAAGimC,GAAmBy8D,GAAS,CAChMvlE,QAASwlE,EACTp7E,QAASq7E,GACRE,GAAgBtyE,IAAWjE,aAAuC,EAASA,EAAOiE,SACvF,EChCA,SAASvkD,GAAI4pC,GACX,MAAO,CACLA,SAAUA,EACVl8C,IAAK,EACLqpI,eAAgB,EAChB70D,OAAQ,EACR5M,iBAAkB,EAEtB,CACO,ICUH0jD,GDVOge,GAAoB,SAA2BnuE,GACxD,IAAIg0C,EACA/zC,EAAeD,EAAMC,aACvBokC,EAASrkC,EAAMqkC,OACjB,MAAO,EAAC,OAAgB,CAAC,EAAG,GAAGl7F,OAAO82D,EAAc,UAAW+zC,EAAW,CAAC,GAAG,OAAgBA,EAAU,GAAG7qG,OAAO82D,GAAc92D,OAAOk7F,EAAQ,iBAAiBl7F,OAAO82D,GAAc92D,OAAOk7F,EAAQ,gBAAiB,CAEnN36F,UAAW,OACXa,QAAS,EACTg5F,kBAAmBvjC,EAAMmQ,mBAEzB/D,WAAY,UACV,OAAgB4nC,EAAU,GAAG7qG,OAAO82D,GAAc92D,OAAOk7F,EAAQ,gBAAgBl7F,OAAO82D,EAAc,YAAa,CACrH9e,cAAe,UACb,OAAgB6yD,EAAU,GAAG7qG,OAAO82D,EAAc,SAAU7yD,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAG/zB,GAAI,WAAW,OAAgB,CAC7H9M,OAAQ21D,EAAMimC,gBACdriG,OAAQ,OACRsgE,gBAAiBlE,EAAMg2C,aACtB,GAAG7sG,OAAO82D,EAAc,WAAY,CACrChf,QAAS,YACL,OAAgB+yD,EAAU,GAAG7qG,OAAO82D,EAAc,SAAU7yD,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAG/zB,GAAI,UAAW,CAC/G+pC,SAAU,OACV4qB,QAAS,EACTsiE,wBAAyB,WACtBp6B,KAAY,OAAgB,CAAC,EAAG,GAAG7qG,OAAO82D,EAAc,SAAU00C,GAAe30C,IACxF,EACIquE,GAAgB,SAAuBruE,GACzC,IAAIsuE,EAAiB/hC,EAAWmJ,EAAiBF,EAC7Cv1C,EAAeD,EAAMC,aACzB,MAAO,EACP,OAAgB,CAAC,EAAG,GAAG92D,OAAO82D,EAAc,UAAWssC,EAAY,CAAC,GAAG,OAAgBA,EAAW,GAAGpjG,OAAO82D,EAAc,SAAU,CAClI51D,OAAQ21D,EAAMimC,gBACdllD,SAAU,QACVmsD,MAAO,EACPhsD,SAAU,OACV4qB,QAAS,EACTsiE,wBAAyB,WACvB,OAAgB7hC,EAAW,GAAGpjG,OAAO82D,EAAc,aAAc,CACnEvvC,UAAW,SACT,OAAgB67E,EAAW,GAAGpjG,OAAO82D,EAAc,cAAc,OAAgB,CACnFppD,UAAW,SACX,YAAa,CACXoqC,QAAS,eACTt9C,MAAO,EACPC,OAAQ,OACR+oG,cAAe,SACfjgC,QAAS,OAEVzM,EAAc,CACfp7D,IAAK,EACLo8C,QAAS,eACTstF,cAAe,EACf13H,UAAW,QACX81F,cAAe,aACZ,OAAgBJ,EAAW,sBAAsBpjG,OAAO62D,EAAMwuE,YAAa,MAAOF,EAAkB,CAAC,GAAG,OAAgBA,EAAiBruE,EAAc,CAC1JxkC,SAAU,qBACV2kE,OAAQ,GAAGj3F,OAAO62D,EAAMuM,SAAU,YAChC,OAAgB+hE,EAAiB,GAAGnlI,OAAO82D,EAAc,cAAc,OAAgB,CAAC,EAAGA,EAAc,CAC3GuM,KAAM,KACH8hE,IAAmB/hC,KACxB,OAAgB,CAAC,EAAGtsC,EAAc7yD,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,GAAG,SAAe80B,KAAU01C,EAAkB,CAC3Gv0D,cAAe,OACfJ,SAAU,WACVl8C,IAAK,IACLlB,MAAO,OACP83B,SAAU,gBAAgBtyB,OAAsB,EAAf62D,EAAMogC,OAAY,OACnDA,OAAQ,SACRmuC,cAAevuE,EAAMyuE,YACpB,OAAgB/4B,EAAiB,GAAGvsG,OAAO82D,EAAc,UAAW,CACrEmgC,OAAQ,EACRz2D,MAAOq2B,EAAM0uE,WACbplH,WAAY02C,EAAM2uE,iBAClBj4H,SAAUspD,EAAM4uE,cAChBj4H,WAAYqpD,EAAM6uE,gBAClBjpC,SAAU,gBACR,OAAgB8P,EAAiB,GAAGvsG,OAAO82D,EAAc,YAAa,CACxElf,SAAU,WACVmjB,gBAAiBlE,EAAMwlD,UACvBspB,eAAgB,cAChB7iE,OAAQ,EACRxJ,aAAczC,EAAM8Q,eACpBzQ,UAAWL,EAAMK,UACjBlf,cAAe,OACf6uB,QAAS,GAAG7mE,OAAO62D,EAAM+uE,UAAW,OAAO5lI,OAAO62D,EAAMgvE,2BAA4B,SAClF,OAAgBt5B,EAAiB,GAAGvsG,OAAO82D,EAAc,UAAW7yD,OAAO89B,OAAO,CACpF6V,SAAU,WACVl8C,KAAMm7D,EAAMivE,kBAAoBjvE,EAAMkvE,mBAAqB,EAC3DhB,gBAAiBluE,EAAMivE,kBAAoBjvE,EAAMkvE,mBAAqB,EACtE7kI,OAAQ21D,EAAMimC,gBAAkB,GAChCj2B,QAAS,EACTrmC,MAAOq2B,EAAMmvE,oBACb7lH,WAAY02C,EAAM2uE,iBAClBh4H,WAAY,EACZgvF,eAAgB,OAChBxlC,WAAY,cACZsC,aAAczC,EAAMyQ,eACpB9sE,MAAOq8D,EAAMkvE,kBACbtrI,OAAQo8D,EAAMkvE,kBACdjjE,OAAQ,EACRH,QAAS,EACTnqE,OAAQ,UACR2+D,WAAY,SAASn3D,OAAO62D,EAAMmM,kBAAmB,uBAAuBhjE,OAAO62D,EAAMmM,mBACzF,MAAO,CACLlrB,QAAS,OACTvqC,SAAUspD,EAAM0Q,WAChBnnD,UAAW,SACX5S,WAAY,GAAGxN,OAAO62D,EAAMkvE,kBAAmB,MAC/Cr5B,eAAgB,SAChBu5B,cAAe,OACfC,cAAe,QAEjB,UAAW,CACT1lG,MAAOq2B,EAAMsvE,oBACbprE,gBAAiBlE,EAAMuvE,UAAY,cAAgBvvE,EAAM8rD,iBACzDnmB,eAAgB,QAElB,WAAY,CACVzhC,gBAAiBlE,EAAMuvE,UAAY,cAAgBvvE,EAAMwvE,yBAE1D,SAAcxvE,MAAU,OAAgB01C,EAAiB,GAAGvsG,OAAO82D,EAAc,WAAY,CAC9Ft2B,MAAOq2B,EAAMsM,UACbnM,WAAYH,EAAMyvE,SAClBhtE,aAAc,GAAGt5D,OAAO62D,EAAM8Q,eAAgB,OAAO3nE,OAAO62D,EAAM8Q,eAAgB,UAClF7F,aAAcjL,EAAMuM,YAClB,OAAgBmpC,EAAiB,GAAGvsG,OAAO82D,EAAc,SAAU,CACrEvpD,SAAUspD,EAAMtpD,SAChBC,WAAYqpD,EAAMrpD,WAClBivF,SAAU,gBACR,OAAgB8P,EAAiB,GAAGvsG,OAAO82D,EAAc,YAAY,OAAgB,CACvFppD,UAAW,MACXspD,WAAYH,EAAM0vE,SAClBr7B,UAAWr0C,EAAM2qD,UAChB,GAAGxhH,OAAO62D,EAAMqkC,OAAQ,WAAWl7F,OAAO62D,EAAMqkC,OAAQ,aAAal7F,OAAO62D,EAAMqkC,OAAQ,sBAAuB,CAClHp5B,aAAc,EACdS,kBAAmB1L,EAAMuM,aACtB,OAAgBmpC,EAAiB,GAAGvsG,OAAO82D,EAAc,SAAU,CACtE/e,SAAU,WACRw0D,MACJ,OAAgB,CAAC,EAAG,GAAGvsG,OAAO82D,EAAc,gBAAiBu1C,EAAY,CACvE3wG,IAAK,OACLmrE,QAAS,EACT/uB,QAAS,OACTysD,cAAe,WACd,OAAgB8H,EAAW,GAAGrsG,OAAO82D,EAAc,yBAAyB92D,OAAO82D,EAAc,sBAAsB92D,OAAO82D,EAAc,yBAA0B,CACvKhf,QAAS,OACTysD,cAAe,SACflhC,KAAM,UACJ,OAAgBgpC,EAAW,GAAGrsG,OAAO82D,EAAc,iBAAkB,CACvEgL,aAAc,SACZuqC,IACN,EACIm6B,GAAuB,SAA8B3vE,GACvD,IAAI4vE,EAAWC,EAAWC,EAAsBrhE,EAC5CxO,EAAeD,EAAMC,aACrB8vE,EAAsB,GAAG5mI,OAAO82D,EAAc,YAClD,OAAOwO,EAAQ,CAAC,GAAG,OAAgBA,EAAOshE,GAAsBD,EAAuB,CACrF,QAAS,CACPp/G,UAAW,SAEZ,OAAgBo/G,EAAsB,GAAG3mI,OAAO62D,EAAMqkC,OAAQ,iBAAkB,CACjFpjD,QAAS,UACP,OAAgB6uF,EAAsB,GAAG3mI,OAAO4mI,EAAqB,iBAAkB3iI,OAAO89B,OAAO,CAAC,GAAG,cAAc,OAAgB4kG,EAAsB,GAAG3mI,OAAO4mI,EAAqB,UAAWF,EAAY,CACrN5uF,QAAS,OACT+uF,SAAU,OACVriC,WAAY,WACX,OAAgBkiC,EAAW,GAAG1mI,OAAO4mI,EAAqB,WAAW,OAAgB,CACtFvjE,KAAM,WACNvrB,QAAS,QAGTC,SAAU,SACVvX,MAAOq2B,EAAM2zC,iBACbrqF,WAAY02C,EAAM2uE,iBAClBj4H,SAAUspD,EAAM4uE,cAChBj4H,WAAYqpD,EAAM6uE,iBACjB,KAAK1lI,OAAO4mI,EAAqB,YAAa,CAC/C9kB,iBAAkBjrD,EAAMuM,SACxB0jE,UAAW,OACXx0G,SAAU,eAAetyB,OAAO62D,EAAMkwE,qBAAuBlwE,EAAM2qD,SAAU,WAC1E,OAAgBklB,EAAW,GAAG1mI,OAAO4mI,EAAqB,YAAa,CAC1EpmG,MAAOq2B,EAAMsM,UACb51D,SAAUspD,EAAMtpD,YACd,OAAgBm5H,EAAW,KAAK1mI,OAAO62D,EAAM4L,UAAWgkE,EAAY,CACtEpjE,KAAM,OACN/B,gBAAiBzK,EAAM2qD,SACvBj0G,SAAUspD,EAAMkwE,uBACf,OAAgBN,EAAW,KAAKzmI,OAAO4mI,EAAqB,UAAW,CACxEvjE,KAAM,KACJ,OAAgBojE,EAAW,KAAKzmI,OAAO4mI,EAAqB,aAAa5mI,OAAO4mI,EAAqB,YAAa,CACpHrkE,kBAAmB1L,EAAMkwE,qBAAuBlwE,EAAM2qD,WACpDilB,IAAaC,KAAa,OAAgBC,EAAsB,GAAG3mI,OAAO4mI,EAAqB,UAAU,OAAgB,CAC3Hl5H,UAAW,MACXw9F,UAAWr0C,EAAM2qD,UAChB,GAAGxhH,OAAO62D,EAAMqkC,OAAQ,WAAWl7F,OAAO62D,EAAMqkC,OAAQ,QAAS,CAClEp5B,aAAc,EACdS,kBAAmB1L,EAAMuM,YACtBujE,KAAwB,OAAgBrhE,EAAO,GAAGtlE,OAAO4mI,EAAqB,WAAW5mI,OAAO4mI,EAAqB,YAAY5mI,OAAO62D,EAAM4L,SAAU,CAC3JjiC,MAAOq2B,EAAMqO,cACX,OAAgBI,EAAO,GAAGtlE,OAAO4mI,EAAqB,aAAa5mI,OAAO4mI,EAAqB,YAAY5mI,OAAO62D,EAAM4L,QAAS,eAAeziE,OAAO4mI,EAAqB,aAAa5mI,OAAO4mI,EAAqB,YAAY5mI,OAAO62D,EAAM4L,SAAU,CAC1PjiC,MAAOq2B,EAAMslD,gBACX,OAAgB72C,EAAO,GAAGtlE,OAAO4mI,EAAqB,UAAU5mI,OAAO4mI,EAAqB,YAAY5mI,OAAO62D,EAAM4L,SAAU,CACjIjiC,MAAOq2B,EAAMymC,aACX,OAAgBh4B,EAAO,GAAGtlE,OAAO4mI,EAAqB,aAAa5mI,OAAO4mI,EAAqB,YAAY5mI,OAAO62D,EAAM4L,SAAU,CACpIjiC,MAAOq2B,EAAM+sC,eACXt+B,CACN,EACI0hE,GAAc,SAAqBnwE,GACrC,IAAIC,EAAeD,EAAMC,aACzB,OAAO,OAAgB,CAAC,EAAG,GAAG92D,OAAO82D,EAAc,UAAU,OAAgB,CAAC,EAAG,GAAG92D,OAAO82D,EAAc,cAAc,OAAgB,CACrIvvC,UAAW,OACV,GAAGvnB,OAAO82D,EAAc,iBAAkB,CAC3CvvC,UAAW,SAEf,EACI0/G,GAAoB,SAA2BpwE,GACjD,IAAIuL,EAAe8kE,EAAuBC,EACtCrwE,EAAeD,EAAMC,aACvBokC,EAASrkC,EAAMqkC,OACb0rC,EAAsB,GAAG5mI,OAAO82D,EAAc,YAClD,OAAOqwE,EAAQ,CAAC,GAAG,OAAgBA,EAAOrwE,GAAesL,EAAgB,CAAC,GAAG,OAAgBA,EAAe,GAAGpiE,OAAO82D,EAAc,YAAa,CAC/I+P,QAAS,KACP,OAAgBzE,EAAe,GAAGpiE,OAAO82D,EAAc,WAAY,CACrE+P,QAAShQ,EAAMuwE,mBACfC,aAAc,GAAGrnI,OAAO62D,EAAMywE,uBAAwB,OAAOtnI,OAAO62D,EAAM0wE,uBAAwB,KAAKvnI,OAAO62D,EAAM2wE,6BACpH1lE,aAAc,KACZ,OAAgBM,EAAe,GAAGpiE,OAAO82D,EAAc,SAAU,CACnE+P,QAAShQ,EAAM4wE,oBACb,OAAgBrlE,EAAe,GAAGpiE,OAAO82D,EAAc,WAAY,CACrE+P,QAAS,GAAG7mE,OAAO62D,EAAM6wE,2BAA4B,OAAO1nI,OAAO62D,EAAM8wE,6BAA8B,MACvGC,UAAW,GAAG5nI,OAAO62D,EAAMgxE,uBAAwB,OAAO7nI,OAAO62D,EAAMixE,uBAAwB,KAAK9nI,OAAO62D,EAAMkxE,6BACjHzuE,aAAc,OAAOt5D,OAAO62D,EAAM8Q,eAAgB,OAAO3nE,OAAO62D,EAAM8Q,eAAgB,MACtFujC,UAAW,IACT9oC,KAAiB,OAAgB+kE,EAAOP,GAAsBM,EAAwB,CAAC,GAAG,OAAgBA,EAAuB,GAAGlnI,OAAOk7F,EAAQ,eAAgB,CACrKr0B,QAAS,GAAG7mE,OAAuB,EAAhB62D,EAAMgQ,QAAa,OAAO7mE,OAAuB,EAAhB62D,EAAMgQ,QAAa,OAAO7mE,OAAO62D,EAAMyuE,UAAW,SACpG,OAAgB4B,EAAuB,GAAGlnI,OAAO4mI,EAAqB,UAAU,OAAgB,CAAC,EAAG,KAAK5mI,OAAO62D,EAAM4L,UAAU,OAAgB,CAClJnB,gBAAiBzK,EAAMogC,QACtB,KAAKj3F,OAAO4mI,EAAqB,aAAa5mI,OAAO4mI,EAAqB,YAAa,CACxFrkE,kBAAmB1L,EAAMkwE,qBAAuBlwE,EAAMogC,YAClD,OAAgBiwC,EAAuB,GAAGlnI,OAAO4mI,EAAqB,SAAU,CACpF17B,UAAWr0C,EAAMisD,WACfokB,IAAyBC,CAC/B,EAEA,IAAe,EAAA7vE,GAAA,GAAsB,SAAS,SAAUT,GACtD,IAAImxE,EAAwBnxE,EAAMgQ,QAC9BohE,EAAiBpxE,EAAMqxE,iBACvBC,EAAmBtxE,EAAMuxE,mBACzBC,GAAa,SAAWxxE,EAAO,CACjC4wE,iBAAkB5wE,EAAMyuE,UACxB8B,mBAAoB,GAAGpnI,OAAOgoI,EAAuB,OAAOhoI,OAAO62D,EAAMyuE,UAAW,MACpFgC,uBAAwBzwE,EAAM3qD,UAC9Bq7H,uBAAwB1wE,EAAMkM,SAC9BykE,4BAA6B3wE,EAAMyxE,WACnCxC,kBAAmBqC,EAAmBF,EAAyC,EAAxBD,EACvDD,4BAA6BlxE,EAAMyxE,WACnCR,uBAAwBjxE,EAAMkM,SAC9B2kE,2BAA4B7wE,EAAMwQ,UAClCsgE,6BAA8B9wE,EAAMgQ,QACpCghE,uBAAwBhxE,EAAM3qD,UAC9Bi6H,oBAAqBtvE,EAAM0xE,eAC3BvC,oBAAqBnvE,EAAM2xE,UAC3BzC,kBAAmBlvE,EAAMtpD,SAAWspD,EAAMrpD,WAC1Cu5H,qBAAsBlwE,EAAMtpD,SAAWspD,EAAMrpD,aAE/C,MAAO,CAAC03H,GAAcmD,GAAa7B,GAAqB6B,GAAarB,GAAYqB,GAAarD,GAAkBqD,GAAaxxE,EAAMuvE,WAAaa,GAAkBoB,GAAaptC,GAAeotC,EAAY,QAC5M,IAAG,SAAUxxE,GACX,MAAO,CACL0vE,SAAU,cACVD,SAAUzvE,EAAMgmD,gBAChB6oB,gBAAiB7uE,EAAMuxE,mBACvB3C,cAAe5uE,EAAMqxE,iBACrB7rB,UAAWxlD,EAAMgmD,gBACjB0oB,WAAY1uE,EAAM2zC,iBAEtB,IC5RI,GAAgC,SAAUjgG,EAAG5Z,GAC/C,IAAIH,EAAI,CAAC,EACT,IAAK,IAAIqa,KAAKN,EAAOtG,OAAOtX,UAAUqX,eAAe3V,KAAKkc,EAAGM,IAAMla,EAAEgP,QAAQkL,GAAK,IAAGra,EAAEqa,GAAKN,EAAEM,IAC9F,GAAS,MAALN,GAAqD,mBAAjCtG,OAAO+wB,sBAA2C,KAAIrnC,EAAI,EAAb,IAAgBkd,EAAI5G,OAAO+wB,sBAAsBzqB,GAAI5c,EAAIkd,EAAEvd,OAAQK,IAClIgD,EAAEgP,QAAQkL,EAAEld,IAAM,GAAKsW,OAAOtX,UAAUgsD,qBAAqBtqD,KAAKkc,EAAGM,EAAEld,MAAK6C,EAAEqa,EAAEld,IAAM4c,EAAEM,EAAEld,IADuB,CAGvH,OAAO6C,CACT,EA6BI64H,MACFjyH,SAAS47E,gBAAgB77E,iBAAiB,SAdrB,SAA0BxG,GAC/Cq2H,GAAgB,CACdtvH,EAAG/G,EAAE83I,MACL9wI,EAAGhH,EAAE+3I,OAKP34I,YAAW,WACTi3H,GAAgB,IAClB,GAAG,IACL,IAGuE,GAEvE,IAgFA,GAhFY,SAAeljH,GACzB,IAAIgoD,EACAl+D,EACAkyE,EAAoB,aAAiB,OACvC2+B,EAA2B3+B,EAAkBuiB,kBAC7CzlB,EAAekD,EAAkBlD,aACjCr1C,EAAYu4C,EAAkBv4C,UAC9BkuF,EAAQ31C,EAAkB21C,MACxBkzB,EAAe,SAAsBh4I,GACvC,IAAIi0I,EAAW9gI,EAAM8gI,SACrBA,SAAoDA,EAASj0I,EAC/D,EAMIovE,EAAqBj8D,EAAMooD,UAC7B7rD,EAAYyD,EAAMzD,UAClBooE,EAAgB3kE,EAAM2kE,cACtBliB,EAAOziD,EAAMyiD,KACbuhE,EAAgBhkH,EAAMgkH,cACtB8gB,EAAW9kI,EAAM8kI,SACjBv1D,EAAevvE,EAAMuvE,aACrB+lC,EAAYt1G,EAAMs1G,UAClBF,EAAWp1G,EAAMo1G,SACjByO,EAAwB7jH,EAAM8jH,uBAC9BA,OAAmD,IAA1BD,GAA0CA,EACnEpvH,EAAQuL,EAAMvL,MACdyI,EAAU8C,EAAM9C,QAChBogG,EAAet9F,EAAMtJ,MACrBA,OAAyB,IAAjB4mG,EAA0B,IAAMA,EACxC0kB,EAAShiH,EAAMgiH,OACfn1C,EAAY,GAAO7sE,EAAO,CAAC,YAAa,YAAa,gBAAiB,OAAQ,gBAAiB,WAAY,eAAgB,YAAa,WAAY,yBAA0B,QAAS,UAAW,QAAS,WACzMooD,EAAY0Q,EAAa,QAASmD,GAClCy/B,EAAgB5iC,IAEhBI,EAAY,GAAS9Q,GACvBqd,GAAa,OAAevM,EAAW,GACvCwM,EAAUD,EAAW,GACrBtM,EAASsM,EAAW,GAClBs/D,EAAwB,IAAW/gB,GAAgBh8D,EAAc,CAAC,GAAG,OAAgBA,EAAa,GAAG9rD,OAAOksD,EAAW,eAAgB08E,IAAW,OAAgB98E,EAAa,GAAG9rD,OAAOksD,EAAW,aAA4B,QAAd3kC,GAAsBukC,IAI5O,IAAIg9E,OAA0B5lH,IAAX4iG,EAAoC,gBAAoBye,GAAQtgI,OAAO89B,OAAO,CAAC,EAAGj+B,EAAO,CAC1G6gI,KAlCa,SAAkBh0I,GAC/B,IAAIg0I,EAAO7gI,EAAM6gI,KACjBA,SAA4CA,EAAKh0I,EACnD,EAgCEi0I,SAAU+D,KACN7iB,EACFijB,EC/ES,SAAqB7vB,EAAUE,EAAW4vB,GACvD,IAAIC,EAAmB57I,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAkB,gBAAoB,GAAe,MAEvI67I,EAZN,SAA0BhwB,EAAUE,EAAW+vB,GAC7C,MAAwB,kBAAbjwB,EACFA,OAESh2F,IAAdk2F,IACO+vB,GAEU,IAAd/vB,GAAqC,OAAdA,CAChC,CAIuBgwB,CAAiBlwB,EAAUE,EAD1B/rH,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,IAAmBA,UAAU,IAErF,IAAK67I,EACH,MAAO,EAAC,EAAO,MAEjB,IAAIvrB,EAAuC,kBAAdvE,GAAP,MAAkCA,EAAgD6vB,EAAmB7vB,EAC3H,MAAO,EAAC,EAAM4vB,EAAwBA,EAAsBrrB,GAAmBA,EACjF,CDsEqB0rB,CAAYnwB,EAAUE,GAAW,SAAUzlD,GAC1D,OAAO2wE,GAAgBp4E,EAAWyH,EACpC,GAAgB,gBAAoB,GAAe,CACjDtzD,UAAW,GAAGL,OAAOksD,EAAW,kBAC9B,GACJo9E,GAAgB,OAAeP,EAAc,GAC7CG,EAAiBI,EAAc,GAC/B3rB,EAAkB2rB,EAAc,GAClC,OAAO9/D,EAAsB,gBAAoBhL,GAAgB,KAAmB,gBAAoBslE,GAAa,CACnH59E,QAAQ,EACR69E,UAAU,GACI,gBAAoB,GAAQ9/H,OAAO89B,OAAO,CACxDvnC,MAAOA,GACNm2E,EAAW,CACZ0C,kBAA+BnwD,IAAjBmwD,EAA6BorB,EAA2BprB,EACtEnnB,UAAWA,EACXuc,cAAe,IAAWxL,EAAQwL,GAClCq/C,cAAe+gB,EACf/iB,OAAQgjB,EACR9nI,QAASulD,QAAmCA,EAAOvlD,EACnDgmH,cAAkD,QAAlCp5H,EAAK+iF,EAAUq2C,qBAAkC,IAAPp5H,EAAgBA,EAAKo5H,GAC/ElgB,QAAS6hC,EACTzvB,SAAUgwB,EACV9vB,UAAWuE,EACXiK,uBAAwBA,EACxBpqC,gBAAgB,QAAkBgiB,EAAe,OAAQ17F,EAAM05E,gBAC/DgJ,oBAAoB,QAAkBgZ,EAAe,OAAQ17F,EAAM0iF,oBACnEnmF,UAAW,IAAW48D,EAAQ58D,EAAWo1G,aAAqC,EAASA,EAAMp1G,WAC7F9H,MAAO0L,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAG0zE,aAAqC,EAASA,EAAMl9G,OAAQA,QAEvG,EE1GO,SAASgxI,GAAezlI,GAC7B,IAAI6vD,EAAO7vD,EAAM6vD,KACfixE,EAAW9gI,EAAM8gI,SACjBD,EAAO7gI,EAAM6gI,KACb6E,EAAS1lI,EAAMu2G,MACfovB,EAAY3lI,EAAM2lI,UAClBxkB,EAAWnhH,EAAMmhH,SACjB1yD,EAASzuD,EAAMyuD,OACfsyE,EAAgB/gI,EAAM+gI,cACtBryE,EAAa1uD,EAAM0uD,WACnBsyE,EAAoBhhI,EAAMghI,kBAC1B4E,EAAmB5lI,EAAM4lI,iBACzBlqC,EAAgB17F,EAAM07F,cACtBpqG,EAAO0O,EAAM1O,KACbu0I,EAAW7lI,EAAM6lI,SACjB7jB,EAAShiH,EAAMgiH,OACf8jB,EAAe9lI,EAAMwqD,OAGnBu7E,EAAal2E,EAEjB,IAAKA,GAAiB,OAATA,EACX,OAAQv+D,GACN,IAAK,OACHy0I,EAA0B,gBAAoB,GAAkB,MAChE,MACF,IAAK,UACHA,EAA0B,gBAAoB,GAAmB,MACjE,MACF,IAAK,QACHA,EAA0B,gBAAoB,GAAmB,MACjE,MACF,QACEA,EAA0B,gBAAoB,GAAyB,MAG7E,IAAIpF,EAAS3gI,EAAM2gI,QAAU,UAEzBqF,EAAiBH,QAA2CA,EAAoB,YAATv0I,EACvE20I,EAA4C,OAA1BjmI,EAAMimI,kBAAmCjmI,EAAMimI,iBAAmB,MACpFh6B,EAAa,GAAU,SAEzBzhD,GADc,OAAeyhD,EAAY,GACpB,GACnBi6B,EAAeJ,GAAgBt7E,EAC/B27E,EAAeH,GAA+B,gBAAoB,GAAc,CAClF7kB,SAAUA,EACVE,SAAUyf,EACVvqB,MAAO,WACLmvB,SAAgDA,EAAO17I,WAAM,EAAQT,WACrEo8I,SAAsDA,GAAU,EAClE,EACA1kB,UAA+B,WAApBglB,EACXjlB,YAAaggB,EACb54E,UAAW,GAAGlsD,OAAOw/F,EAAe,SACnChtC,IAAew3E,aAAmD,EAASA,EAAax3E,aAC3F,OAAoB,gBAAoB,MAAO,CAC7CnyD,UAAW,GAAGL,OAAO0pI,EAAkB,kBACzB,gBAAoB,MAAO,CACzCrpI,UAAW,GAAGL,OAAO0pI,EAAkB,UACtCG,OAA4B3mH,IAAhBpf,EAAM06C,MAAsB,KAAoB,gBAAoB,OAAQ,CACzFn+C,UAAW,GAAGL,OAAO0pI,EAAkB,WACtC5lI,EAAM06C,OAAqB,gBAAoB,MAAO,CACvDn+C,UAAW,GAAGL,OAAO0pI,EAAkB,aACtC5lI,EAAMy/D,eAAsBrgD,IAAX4iG,EAAoC,gBAAoB,MAAO,CACjFzlH,UAAW,GAAGL,OAAO0pI,EAAkB,UACtCO,EAA2B,gBAAoB,GAAc,CAC9DhlB,SAAUA,EACV7vH,KAAMqvI,EACNtf,SAAUwf,EACVtqB,MAAO,WACLmvB,SAAgDA,EAAO17I,WAAM,EAAQT,WACrEo8I,SAAsDA,GAAU,EAClE,EACA1kB,UAA+B,OAApBglB,EACXjlB,YAAa+f,EACb34E,UAAW,GAAGlsD,OAAOw/F,EAAe,SACnCjtC,IAAWu3E,EAAiBE,aAAmD,EAASA,EAAaz3E,OAASy3E,aAAmD,EAASA,EAAav3E,cAAgBqzD,EAC5M,CA0EA,OAzEoB,SAAuBhiH,GACzC,IAAIu2G,EAAQv2G,EAAMu2G,MAChBn5G,EAAS4C,EAAM5C,OACf8mH,EAAalkH,EAAMkkH,WAEnBzhE,GADUziD,EAAM9C,QACT8C,EAAMyiD,MACbmhE,EAAW5jH,EAAM4jH,SACjBkhB,EAAW9kI,EAAM8kI,SACjBv1D,EAAevvE,EAAMuvE,aACrB80C,EAAYrkH,EAAMqkH,UAClB5gG,EAAYzjB,EAAMyjB,UAClB2kC,EAAYpoD,EAAMooD,UAClB47D,EAAgBhkH,EAAMgkH,cACtBtoB,EAAgB17F,EAAM07F,cACtB+D,EAAgBz/F,EAAMy/F,cACtBxJ,EAAQj2F,EAAMi2F,MACdgsB,EAAYjiH,EAAMiiH,UAClBkC,EAAkBnkH,EAAMo1G,SACxBA,OAA+B,IAApB+O,GAAqCA,EAChD7O,EAAYt1G,EAAMs1G,UAClB6M,EAAcniH,EAAMmiH,YACpB2B,EAAyB9jH,EAAM8jH,uBAIjC,IAAI8hB,EAAmB,GAAG1pI,OAAOksD,EAAW,YACxC1xD,EAAQsJ,EAAMtJ,OAAS,IACvBjC,EAAQuL,EAAMvL,OAAS,CAAC,EACxBspF,OAAsB3+D,IAAfpf,EAAM+9E,MAA4B/9E,EAAM+9E,KAE/C4D,OAAsCviE,IAAvBpf,EAAM2hF,cAAqC3hF,EAAM2hF,aAChEkgB,EAAc,IAAW+jC,EAAkB,GAAG1pI,OAAO0pI,EAAkB,KAAK1pI,OAAO8D,EAAM1O,OAAO,OAAgB,CAAC,EAAG,GAAG4K,OAAO0pI,EAAkB,QAAuB,QAAdniH,GAAsBzjB,EAAMzD,WACzL,OAAoB,gBAAoB,GAAgB,CACtD6rD,UAAWszC,EACX+D,cAAeA,EACfh8E,UAAWA,EACXwyE,MAAOA,GACO,gBAAoB,GAAQ,CAC1C7tC,UAAWA,EACX7rD,UAAWslG,EACXmiB,cAAe,KAAW,OAAgB,CAAC,EAAG,GAAG9nH,OAAO0pI,EAAkB,eAAgB5lI,EAAM8kI,UAAW9gB,GAC3G8c,SAAU,WACR,OAAOvqB,aAAqC,EAASA,EAAM,CACzD6vB,eAAe,GAEnB,EACA3jF,KAAMA,EACN/H,MAAO,GACPsnE,OAAQ,KACRtoC,gBAAgB,QAAkBgiB,EAAe,OAAQ17F,EAAM05E,gBAC/DgJ,oBAAoB,QAAkBgZ,EAAe,OAAQ17F,EAAM0iF,oBACnE3E,KAAMA,EACN4D,aAAcA,EACd0iC,UAAWA,EACX5vH,MAAOA,EACPwtH,UAAWA,EACXvrH,MAAOA,EACP0G,OAAQA,EACR8mH,WAAYA,EACZN,SAAUA,EACVkhB,SAAUA,EACVv1D,aAAcA,EACd6lC,SAAUA,EACVE,UAAWA,EACX6M,YAAaA,EACb2B,uBAAwBA,GACV,gBAAoB2hB,GAAgBtlI,OAAO89B,OAAO,CAAC,EAAGj+B,EAAO,CAC3E4lI,iBAAkBA,MAEtB,EChKA,GADiB,GCCb,GAAgC,SAAUn/H,EAAG5Z,GAC/C,IAAIH,EAAI,CAAC,EACT,IAAK,IAAIqa,KAAKN,EAAOtG,OAAOtX,UAAUqX,eAAe3V,KAAKkc,EAAGM,IAAMla,EAAEgP,QAAQkL,GAAK,IAAGra,EAAEqa,GAAKN,EAAEM,IAC9F,GAAS,MAALN,GAAqD,mBAAjCtG,OAAO+wB,sBAA2C,KAAIrnC,EAAI,EAAb,IAAgBkd,EAAI5G,OAAO+wB,sBAAsBzqB,GAAI5c,EAAIkd,EAAEvd,OAAQK,IAClIgD,EAAEgP,QAAQkL,EAAEld,IAAM,GAAKsW,OAAOtX,UAAUgsD,qBAAqBtqD,KAAKkc,EAAGM,EAAEld,MAAK6C,EAAEqa,EAAEld,IAAM4c,EAAEM,EAAEld,IADuB,CAGvH,OAAO6C,CACT,EAQI25I,GAAuB,GAIZ,SAAS,GAAQlxC,GAK9B,IAMIosB,EANA5vH,EAAY2B,SAASwoH,yBAErB7H,EAAgB9zG,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGk3D,GAAS,CAC3DohB,MAAOA,EACP9zD,MAAM,IAGR,SAAS13D,IACP,IAAK,IAAImnD,EAAO3oD,UAAUC,OAAQH,EAAO,IAAI+/B,MAAM8oB,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E9oD,EAAK8oD,GAAQ5oD,UAAU4oD,GAEzB,IAAIi0F,EAAgB/8I,EAAKg6D,MAAK,SAAUijF,GACtC,OAAOA,GAASA,EAAMF,aACxB,IACIjxC,EAAO2rC,UAAYsF,GACrBjxC,EAAO2rC,SAAS92I,MAAMmrG,EAAQ,CAAC,WAAa,GAAGj5F,QAAO,OAAmB7S,EAAKsmB,MAAM,MAEtF,IAAK,IAAI9lB,EAAI,EAAGA,EAAI,GAAWL,OAAQK,IAAK,CAG1C,GAFS,GAAWA,KAET0sH,EAAO,CAChB,GAAWxsH,OAAOF,EAAG,GACrB,KACF,CACF,CACA,GAAa8H,EACf,CACA,SAASgiE,EAAO7pE,GACd,IAAI2kE,EAAS3kE,EAAG2kE,OACdC,EAAa5kE,EAAG4kE,WAChBuN,EAAqBnyE,EAAGs+D,UACxBmnB,EAAezlF,EAAGylF,aAClBvvE,EAAQ,GAAOlW,EAAI,CAAC,SAAU,aAAc,YAAa,iBAC3DwD,aAAai0H,GAMbA,EAAYt1H,YAAW,WACrB,IAAI6gH,EAAgBI,KAChBq5B,EAAgB32B,KAClB92C,EAAeytE,EAAcztE,aAC7Bg3C,EAAmBy2B,EAAcz2B,iBACjCE,EAAWu2B,EAAcv2B,SAEvBtU,EAAgB5iC,OAAa15C,EArD9BinH,IAsDCj+E,EAAY6T,GAAsB,GAAG//D,OAAOw/F,EAAe,UAC3D+D,EAAgBqQ,IAChB7Z,EAAQ+Z,IACRw2B,EAAqBj3D,GACE,IAAvBi3D,IACFA,OAAqBpnH,GAKvB,GAA0B,gBAAoB,GAAejf,OAAO89B,OAAO,CAAC,EAAGj+B,EAAO,CACpFuvE,aAAci3D,EACdp+E,UAAWA,EACXszC,cAAeA,EACf+D,cAAeA,EACfhxC,OAAQA,EACRjE,OAAQsiD,EACR7W,MAAOA,EACPvnC,WAAYA,GAAco+C,EAAcp+C,cACrC/8D,EACP,GACF,CACA,SAAS4kH,IAEP,IADA,IAAIntH,EAAQT,KACHimG,EAAQrlG,UAAUC,OAAQH,EAAO,IAAI+/B,MAAMwlE,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFxlG,EAAKwlG,GAAStlG,UAAUslG,IAE1BolB,EAAgB9zG,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGg2E,GAAgB,CAC9DxxD,MAAM,EACNyhE,WAAY,WACuB,mBAAtB/uB,EAAO+uB,YAChB/uB,EAAO+uB,aAETn5H,EAAQf,MAAMZ,EAAOC,EACvB,KAGgB6T,gBACT+2G,EAAc/2G,QAEvBy2D,EAAOsgD,EACT,CAWA,OAFAtgD,EAAOsgD,GACP,GAAW/qH,KAAKqtH,GACT,CACLxrH,QAASwrH,EACTpoH,OAZF,SAAgBs4I,GAMd9yE,EAJEsgD,EAD0B,mBAAjBwyB,EACOA,EAAaxyB,GAEb9zG,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGg2E,GAAgBwyB,GAGpE,EAOF,CACO,SAASC,GAAS1mI,GACvB,OAAOG,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGj+B,GAAQ,CAC7C1O,KAAM,WAEV,CACO,SAASq1I,GAAS3mI,GACvB,OAAOG,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGj+B,GAAQ,CAC7C1O,KAAM,QAEV,CACO,SAASs1I,GAAY5mI,GAC1B,OAAOG,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGj+B,GAAQ,CAC7C1O,KAAM,WAEV,CACO,SAASu1I,GAAU7mI,GACxB,OAAOG,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGj+B,GAAQ,CAC7C1O,KAAM,SAEV,CACO,SAASw1I,GAAY9mI,GAC1B,OAAOG,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGj+B,GAAQ,CAC7C1O,KAAM,WAEV,CCrJO,SAASy1I,GAAoB99E,GAClC,OAAO,SAAkCjpD,GACvC,OAAoB,gBAAoB,GAAgB,CACtDi2F,MAAO,CACLljC,MAAO,CACL0mB,QAAQ,EACRuf,gBAAiB,KAGP,gBAAoB/vC,EAAW9oD,OAAO89B,OAAO,CAAC,EAAGj+B,IACnE,CACF,CCbA,IAAI,GAAgC,SAAUyG,EAAG5Z,GAC/C,IAAIH,EAAI,CAAC,EACT,IAAK,IAAIqa,KAAKN,EAAOtG,OAAOtX,UAAUqX,eAAe3V,KAAKkc,EAAGM,IAAMla,EAAEgP,QAAQkL,GAAK,IAAGra,EAAEqa,GAAKN,EAAEM,IAC9F,GAAS,MAALN,GAAqD,mBAAjCtG,OAAO+wB,sBAA2C,KAAIrnC,EAAI,EAAb,IAAgBkd,EAAI5G,OAAO+wB,sBAAsBzqB,GAAI5c,EAAIkd,EAAEvd,OAAQK,IAClIgD,EAAEgP,QAAQkL,EAAEld,IAAM,GAAKsW,OAAOtX,UAAUgsD,qBAAqBtqD,KAAKkc,EAAGM,EAAEld,MAAK6C,EAAEqa,EAAEld,IAAM4c,EAAEM,EAAEld,IADuB,CAGvH,OAAO6C,CACT,EAuDA,GAAeq6I,IA9CC,SAAmB/mI,GACjC,IAAIi8D,EAAqBj8D,EAAMooD,UAC7B7rD,EAAYyD,EAAMzD,UAClB+4G,EAAYt1G,EAAMs1G,UAClBF,EAAWp1G,EAAMo1G,SACjB9jH,EAAO0O,EAAM1O,KACbopD,EAAQ16C,EAAM06C,MACdliD,EAAWwH,EAAMxH,SACjBq0E,EAAY,GAAO7sE,EAAO,CAAC,YAAa,YAAa,YAAa,WAAY,OAAQ,QAAS,aAE/F84D,EADsB,aAAiB,OACNA,aAC/B4iC,EAAgB5iC,IAChB1Q,EAAY6T,GAAsBnD,EAAa,SAC/CI,EAAY,GAAS9Q,GAEvB+Q,GADa,OAAeD,EAAW,GACnB,GAClB0sE,EAAmB,GAAG1pI,OAAOksD,EAAW,YAExC4+E,EAAkB,CAAC,EAoBvB,OAlBEA,EADE11I,EACgB,CAChB8jH,SAAUA,SAA2CA,EACrD16D,MAAO,GACPsnE,OAAQ,GACRxpH,SAAuB,gBAAoBitI,GAAgBtlI,OAAO89B,OAAO,CAAC,EAAGj+B,EAAO,CAClF4lI,iBAAkBA,EAClBlqC,cAAeA,EACfj8B,QAASjnE,MAIK,CAChB48G,SAAUA,SAA2CA,EACrD16D,MAAOA,EACPsnE,YAAyB5iG,IAAjBpf,EAAMgiH,OAAoC,gBAAoBye,GAAQtgI,OAAO89B,OAAO,CAAC,EAAGj+B,IAAUA,EAAMgiH,OAChHxpH,SAAUA,GAGM,gBAAoB,GAAO2H,OAAO89B,OAAO,CAC3DmqB,UAAWA,EACX7rD,UAAW,IAAW48D,EAAQ,GAAGj9D,OAAOksD,EAAW,eAAgB92D,GAAQs0I,EAAkBt0I,GAAQ,GAAG4K,OAAO0pI,EAAkB,KAAK1pI,OAAO5K,GAAOiL,IACnJswE,EAAW,CACZyoC,UAAWkrB,GAAgBp4E,EAAWktD,GACtCF,SAAUA,GACT4xB,GACL,IC7DA,IAAI,GAAgC,SAAUvgI,EAAG5Z,GAC/C,IAAIH,EAAI,CAAC,EACT,IAAK,IAAIqa,KAAKN,EAAOtG,OAAOtX,UAAUqX,eAAe3V,KAAKkc,EAAGM,IAAMla,EAAEgP,QAAQkL,GAAK,IAAGra,EAAEqa,GAAKN,EAAEM,IAC9F,GAAS,MAALN,GAAqD,mBAAjCtG,OAAO+wB,sBAA2C,KAAIrnC,EAAI,EAAb,IAAgBkd,EAAI5G,OAAO+wB,sBAAsBzqB,GAAI5c,EAAIkd,EAAEvd,OAAQK,IAClIgD,EAAEgP,QAAQkL,EAAEld,IAAM,GAAKsW,OAAOtX,UAAUgsD,qBAAqBtqD,KAAKkc,EAAGM,EAAEld,MAAK6C,EAAEqa,EAAEld,IAAM4c,EAAEM,EAAEld,IADuB,CAGvH,OAAO6C,CACT,EAMIu6I,GAAY,SAAmBn9I,EAAIixD,GACrC,IAAIl7C,EACAqnI,EAAiBp9I,EAAGo6H,WACtB/uB,EAASrrG,EAAGqrG,OACZtoB,EAAY,GAAO/iF,EAAI,CAAC,aAAc,WACpCqrE,EAAkB,YAAe,GACnCC,GAAmB,OAAeD,EAAiB,GACnD1S,EAAO2S,EAAiB,GACxB8lC,EAAU9lC,EAAiB,GACzBE,EAAmB,WAAe6/B,GACpC5/B,GAAmB,OAAeD,EAAkB,GACpDghD,EAAc/gD,EAAiB,GAC/B4xE,EAAiB5xE,EAAiB,GAChCyG,EAAoB,aAAiB,OACvCv4C,EAAYu4C,EAAkBv4C,UAC9Bq1C,EAAekD,EAAkBlD,aAC/B1Q,EAAY0Q,EAAa,SACzB4iC,EAAgB5iC,IAMhBy9C,EAAQ,WACVrb,GAAQ,GACR,IAAK,IAAIhpD,EAAO3oD,UAAUC,OAAQH,EAAO,IAAI+/B,MAAM8oB,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E9oD,EAAK8oD,GAAQ5oD,UAAU4oD,GAEzB,IAAIi0F,EAAgB/8I,EAAKg6D,MAAK,SAAUijF,GACtC,OAAOA,GAASA,EAAMF,aACxB,IACI9vB,EAAYwqB,UAAYsF,GAC1B9vB,EAAYwqB,SAAS92I,MAAMssH,EAAa,CAAC,WAAa,GAAGp6G,QAAO,OAAmB7S,EAAKsmB,MAAM,KAElG,EACA,sBAA0BorC,GAAK,WAC7B,MAAO,CACLhwD,QAASwrH,EACTpoH,OAAQ,SAAgBi5I,GACtBD,GAAe,SAAUE,GACvB,OAAOlnI,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGopG,GAAeD,EACxD,GACF,EAEJ,IACA,IAAIpB,EAAiD,QAA/BnmI,EAAKy2G,EAAYuvB,gBAA6B,IAAPhmI,EAAgBA,EAA0B,YAArBy2G,EAAYhlH,KAC1F26G,EAAa,GAAU,QAAS,GAAcz9C,OAEhD09C,GADc,OAAeD,EAAY,GACb,GAC9B,OAAoB,gBAAoB,GAAe9rG,OAAO89B,OAAO,CACnEmqB,UAAWA,EACXszC,cAAeA,GACd4a,EAAa,CACdC,MAAOA,EACP9zD,KAAMA,EACNyhE,WArCe,WACf,IAAIp6H,EACJo9I,IACkC,QAAjCp9I,EAAKwsH,EAAY4N,kBAA+B,IAAPp6H,GAAyBA,EAAGS,KAAK+rH,EAC7E,EAkCE7nD,OAAQ6nD,EAAY7nD,SAAWu3E,EAAiB95B,aAAqD,EAASA,EAAcz9C,OAASy9C,aAAqD,EAASA,EAAcv9C,YACjNlrC,UAAW6yF,EAAY7yF,WAAaA,EACpCirC,WAAY4nD,EAAY5nD,aAAew9C,aAAqD,EAASA,EAAcx9C,aAClHme,GACL,EACA,GAA4B,aAAiBo6D,ICrEzC,GAAO,EACPK,GAA8B,OAAyB,cAAiB,SAAUC,EAAQxsF,GAC5F,IAAIysF,ECNS,WACb,IAAIryE,EAAkB,WAAe,IACnCC,GAAmB,OAAeD,EAAiB,GACnD7rC,EAAW8rC,EAAiB,GAC5BqyE,EAAcryE,EAAiB,GAgBjC,MAAO,CAAC9rC,EAfW,eAAkB,SAAUhxB,GAO7C,OALAmvI,GAAY,SAAUC,GACpB,MAAO,GAAGxrI,QAAO,OAAmBwrI,GAAiB,CAACpvI,GACxD,IAGO,WACLmvI,GAAY,SAAUC,GACpB,OAAOA,EAAexuI,QAAO,SAAUk3E,GACrC,OAAOA,IAAQ93E,CACjB,GACF,GACF,CACF,GAAG,IAEL,CDfyBqvI,GACrBC,GAAoB,OAAeJ,EAAkB,GACrDl+G,EAAWs+G,EAAkB,GAC7BC,EAAeD,EAAkB,GAOnC,OANA,sBAA0B7sF,GAAK,WAC7B,MAAO,CACL8sF,aAAcA,EAElB,GAAG,IAEiB,gBAAoB,WAAgB,KAAMv+G,EAChE,KAiGA,OAhGA,WACE,IAAI6wF,EAAY,SAAa,MAEzBhlD,EAAkB,WAAe,IACnCC,GAAmB,OAAeD,EAAiB,GACnD2yE,EAAc1yE,EAAiB,GAC/B2yE,EAAiB3yE,EAAiB,GACpC,aAAgB,WACV0yE,EAAYt+I,UACG,OAAmBs+I,GACzB/2I,SAAQ,SAAUqyB,GAC3BA,GACF,IACA2kH,EAAe,IAEnB,GAAG,CAACD,IAEJ,IAAIE,EAAiB,eAAkB,SAAUC,GAC/C,OAAO,SAAqB9yC,GAC1B,IAAIrrG,EACJ,IAAQ,EACR,IAEIo+I,EAKAC,EAPAC,EAAwB,cAGxB3uB,EAAU,IAAIlqF,SAAQ,SAAUS,GAClCk4G,EAAiBl4G,CACnB,IACIq4G,GAAS,EAET12B,EAAqB,gBAAoB,GAAW,CACtDnoF,IAAK,SAASttB,OAAO,IACrBi5F,OAAQ8yC,EAAS9yC,GACjBp6C,IAAKqtF,EACLlkB,WAAY,WACVikB,SAAsDA,GACxD,EACAhnB,SAAU,WACR,OAAOknB,CACT,EACA1C,UAAW,SAAmB2C,GAC5BJ,EAAeI,EACjB,KAEFH,EAAyC,QAA5Br+I,EAAKqwH,EAAU/pH,eAA4B,IAAPtG,OAAgB,EAASA,EAAG+9I,aAAal2B,KAExF,GAAWzoH,KAAKi/I,GAElB,IAAIxsB,EAAW,CACb5wH,QAAS,WACP,SAASw9I,IACP,IAAIz+I,EACwB,QAA3BA,EAAKs+I,EAASh4I,eAA4B,IAAPtG,GAAyBA,EAAGiB,SAClE,CACIq9I,EAASh4I,QACXm4I,IAEAR,GAAe,SAAU9pH,GACvB,MAAO,GAAG/hB,QAAO,OAAmB+hB,GAAO,CAACsqH,GAC9C,GAEJ,EACAp6I,OAAQ,SAAgBi5I,GACtB,SAASoB,IACP,IAAI1+I,EACwB,QAA3BA,EAAKs+I,EAASh4I,eAA4B,IAAPtG,GAAyBA,EAAGqE,OAAOi5I,EACzE,CACIgB,EAASh4I,QACXo4I,IAEAT,GAAe,SAAU9pH,GACvB,MAAO,GAAG/hB,QAAO,OAAmB+hB,GAAO,CAACuqH,GAC9C,GAEJ,EACAt4G,KAAM,SAAcF,GAElB,OADAq4G,GAAS,EACF5uB,EAAQvpF,KAAKF,EACtB,GAEF,OAAO2rF,CACT,CACF,GAAG,IAUH,MAAO,CATG,WAAc,WACtB,MAAO,CACL39D,KAAMgqF,EAAerB,IACrBrqC,QAAS0rC,EAAepB,IACxB7wF,MAAOiyF,EAAenB,IACtB3tB,QAAS8uB,EAAetB,IACxB+B,QAAST,EAAelB,IAE5B,GAAG,IACuB,gBAAoBQ,GAAgB,CAC5D99G,IAAK,eACLuxB,IAAKo/D,IAET,EE7GA,SAASuuB,GAAU1oI,GACjB,OAAO,GAAQ0mI,GAAS1mI,GAC1B,CACA,IAAI,GAAQ,GACZ,GAAM2oI,SAAW,GACjB,GAAM3qF,KAAO,SAAgBh+C,GAC3B,OAAO,GAAQ2mI,GAAS3mI,GAC1B,EACA,GAAMs8F,QAAU,SAAmBt8F,GACjC,OAAO,GAAQ4mI,GAAY5mI,GAC7B,EACA,GAAM+1C,MAAQ,SAAiB/1C,GAC7B,OAAO,GAAQ6mI,GAAU7mI,GAC3B,EACA,GAAMk5G,QAAUwvB,GAChB,GAAME,KAAOF,GACb,GAAMD,QAAU,SAAmBzoI,GACjC,OAAO,GAAQ8mI,GAAY9mI,GAC7B,EACA,GAAM6oI,WAAa,WACjB,KAAO,GAAWr/I,QAAQ,CACxB,IAAI+sH,EAAQ,GAAW3mG,MACnB2mG,GACFA,GAEJ,CACF,EACA,GAAMphB,ONwHC,SAA2B36C,GAChC,IAAIkhD,EAAgBlhD,EAAKkhD,cAEzB2qC,GAAuB3qC,CACzB,EM3HA,GAAMQ,uCAAyC,GAI/C,kCCgLA,GArMoB,SAAH1hD,GAQV,IAPLsuF,EAAatuF,EAAbsuF,cAQQC,EAA4CD,EAA5CC,UAAyBC,GAAmBF,EAAjCG,aAAiCH,EAAnBE,gBAC3BE,EAAUH,aAAS,EAATA,EAAWG,QAC3BljE,GAAsCC,EAAAA,EAAAA,WAAS,GAAxCkjE,EAAWnjE,EAAA,GAAEojE,EAAcpjE,EAAA,GA2C5BqjE,EAAa,SAAH1iF,GAAuC,IAC/C2iF,EADqB3iF,EAAP4iF,QACQ5vH,KAAI,SAAClT,EAAQ5c,GACvC,OACE2/I,EAAAA,cAAA,QACEhgH,IAAK,aAAe3/B,EACpB0S,UAAU,oDAETkK,EAGP,IACA,OACE+iI,EAAAA,cAACC,GAAAA,EAAW,CAAC/uF,MAAM,eAAe+H,MAAM,GACtC+mF,EAAAA,cAAA,OAAKjtI,UAAU,+BAA+B+sI,GAGpD,EAcMI,EAAaR,aAAO,EAAPA,EAAS3gB,OAAO5uG,KAAI,SAAC9rB,EAAWhE,GACjD,OACE2/I,EAAAA,cAAA,OACEhgH,IAAK,SAAW3/B,EAChB0S,UAAU,gFAEVitI,EAAAA,cAAA,WACG,IACDA,EAAAA,cAAA,QAAMjtI,UAAU,eA/ER,SAACotI,EAAe18G,GAC9B,YADkC,IAAJA,IAAAA,EAAO,GAC7B08G,GACN,IAAK,SACH,OACEH,EAAAA,cAACI,GAAsB,CACrBlvF,MAAM,SACNn+C,UAAS,kBAAyB0wB,EAAzB,MAAwCA,IAGvD,IAAK,SACH,OACEu8G,EAAAA,cAACK,GAAW,CACVnvF,MAAM,SACNn+C,UAAS,kBAAyB0wB,EAAzB,MAAwCA,IAGvD,IAAK,OACH,OACEu8G,EAAAA,cAACM,GAAgB,CACfpvF,MAAM,OACNn+C,UAAS,kBAAyB0wB,EAAzB,MAAwCA,IAGvD,IAAK,WACH,OACEu8G,EAAAA,cAACO,GAAO,CACNrvF,MAAM,WACNn+C,UAAS,kBAAyB0wB,EAAzB,MAAwCA,IAIvD,QACE,OACEu8G,EAAAA,cAACQ,GAAoB,CACnBtvF,MAAM,QACNn+C,UAAS,kBAAyB0wB,EAAzB,MAAwCA,IAI3D,CAyCWg9G,CAAQp8I,EAAKq8I,WAAWP,QACnB,IACRH,EAAAA,cAAA,QAAMjtI,UAAU,sCACb,IACA1O,EAAKs8I,SAGVX,EAAAA,cAAA,OAAKjtI,UAAU,IACbitI,EAAAA,cAAA,QAAM9uF,MAAM,eAAe7sD,EAAKq8I,WAAWP,OAAa,KAAG,IAC3DH,EAAAA,cAAA,QAAM9uF,MAAM,iBAAiB7sD,EAAKq8I,WAAWE,cAAc,MAE7DZ,EAAAA,cAAA,OAAKjtI,UAAU,0BACZ1O,EAAKq8I,WAAWv6E,aAEnB65E,EAAAA,cAAA,OAAKjtI,UAAU,0BAAyB,oBACpB1O,EAAKq8I,WAAWG,kBAAmB,KAEvDb,EAAAA,cAAA,OAAKjtI,UAAU,0BACZ1O,EAAKq8I,WAAWrnI,KAAO,SAAWhV,EAAKq8I,WAAWrnI,IAAK,IACvDhV,EAAKq8I,WAAWpnI,KAAO,WAAajV,EAAKq8I,WAAWpnI,IAAK,IACzDjV,EAAKq8I,WAAWI,KAAO,WAAaz8I,EAAKq8I,WAAWI,IAAIv5H,QAAQ,GAAI,KAGvEy4H,EAAAA,cAAA,OAAKjtI,UAAU,kEACbitI,EAAAA,cAACH,EAAU,CAACE,QAAS17I,EAAKq8I,WAAWX,WAK7C,IACA,OACEC,EAAAA,cAAA,OAAKjtI,UAAU,IACZ2sI,IAAYF,GACXQ,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,OAAKjtI,UAAU,mCACZ,IACDitI,EAAAA,cAACe,GAAqB,CAAChuI,UAAU,qBAAqB,iBAGxDitI,EAAAA,cAAA,OAAKjtI,UAAU,gCAA+B,2FAI9CitI,EAAAA,cAAA,OAAKjtI,UAAU,SACbitI,EAAAA,cAAA,QAAMjtI,UAAU,IAAG,IAAE2sI,EAAQt+I,KAAK,KAClC4+I,EAAAA,cAAA,QAAMjtI,UAAU,+BACb2sI,EAAQsB,sBAIbhB,EAAAA,cAAA,OAEEjtI,UAAU,gCAET2sI,GACCM,EAAAA,cAACC,GAAAA,EAAW,CAAC/uF,MAAK,kBAAoBwuF,EAAQt+I,KAAQ63D,MAAM,GAC1D+mF,EAAAA,cAAA,WACEA,EAAAA,cAAA,OAAKjtI,UAAU,2DACZmtI,MAMPR,GAAWM,EAAAA,cAAA,WAAK,6BACjBR,GACCQ,EAAAA,cAAA,OAAKjtI,UAAU,qBACZ,IACDitI,EAAAA,cAAA,QAAMjtI,UAAU,iCACb,IACDitI,EAAAA,cAAC55E,GAAAA,EAAI,CAACC,KAAM,UAAW5iC,KAAM,KACvB,IAAI,wCAC0B,KAG1Cu8G,EAAAA,cAAA,WACEA,EAAAA,cAAA,OACExgF,KAAM,SACNxD,QAnGI,WAChB4jF,GAAe,EACjB,EAkGc7sI,UAAU,oDACX,qBAGDitI,EAAAA,cAACh7E,GAAK,CACJ9T,MAAM,sBACN+H,KAAM0mF,EACNtI,KAvGG,WACfuI,GAAe,EACjB,EAsGctI,SApGO,WACnBsI,GAAe,EACjB,GAoGcI,EAAAA,cAAA,OAAKjtI,UAAU,QAAO,sDAGtBitI,EAAAA,cAACiB,GAAAA,EAAS,CACR32C,KAAMnqD,KAAKF,UAAUy/F,EAAS,KAAM,GACpCwB,SAAS,mBAS3B,2kBChNA,IA+JA,GA/JoB,SAAHlwF,GAUV,IATL26C,EAAM36C,EAAN26C,OAWQw1C,EACNx1C,EADMw1C,kBAAmBC,EACzBz1C,EADyBy1C,YAAa3B,EACtC9zC,EADsC8zC,aAAc4B,EACpD11C,EADoD01C,SAAU9B,EAC9D5zC,EAD8D4zC,UAoH1DO,EAlHU,CACd,CACE1+I,KAAM,aACN03D,IAAK,6EAEP,CACE13D,KAAM,YACN03D,IAAK,4EAEP,CACE13D,KAAM,aACN03D,IAAK,6EAGP,CACE13D,KAAM,cACN03D,IAAK,8EAEP,CACE13D,KAAM,sBACN03D,IAAK,sFAEP,CACE13D,KAAM,YACN03D,IAAK,4EAEP,CACE13D,KAAM,eACN03D,IAAK,+EAEP,CACE13D,KAAM,eACN03D,IAAK,gFAkFmB3oC,KAAI,SAACtL,EAAMxkB,GACrC,OACE2/I,EAAAA,cAAA,OACExgF,KAAK,SACLxD,QAAS,YAlFO,SAACslF,GAErBH,GAAkB,GAClBC,IAEA,IAAMG,EAAU,CACdz2I,OAAQ,OACRquD,QAAS,CACP,eAAgB,mBAChBqoF,OAAQ,oBAEV11F,KAAM3L,KAAKF,UAAU,CACnB6Y,IAAKwoF,EACLG,eAAgBlC,EAAUkC,mBAyB9BC,EAAAA,EAAAA,IArCeC,qBAqCAJ,GArBG,SAAC18H,GACbA,GAAQA,EAAK+zC,OACf6mF,EAAYmC,GAAAA,GAAC,CAAC,EACTrC,GAAS,IACZG,QAAS76H,EAAK66H,QACdmC,KAAM,SAGRR,EAAS,CAAEzoF,QAAQ,EAAO8hD,QAAS71F,EAAK61F,UACxCA,GAAQnuD,MAAM1nC,EAAK61F,UAErBymC,GAAkB,EACpB,IAEgB,SAAC50F,GACf40F,GAAkB,GAClBhd,QAAQtrF,IAAI0T,GACZ80F,EAAS,CAAEzoF,QAAQ,EAAO8hD,QAASnuD,EAAMmuD,UACzCA,GAAQnuD,MAAMA,EAAQ,GACxB,GAyCF,CAMQu1F,CAAcj9H,EAAKi0C,IACrB,EACA/lD,UAAU,wEACVitB,IAAK,YAAc3/B,GAElBwkB,EAAKzjB,KAGZ,IAEA,OACE4+I,EAAAA,cAAA,WACEA,EAAAA,cAAA,OAAKjtI,UAAS,SACZitI,EAAAA,cAAA,OAAKjtI,UAAU,SACbitI,EAAAA,cAAA,QAAMjtI,UAAU,kBACditI,EAAAA,cAAC+B,EAAmB,CAAChvI,UAAU,qBAAqB,qBAE9C,IACRitI,EAAAA,cAAA,QAAMjtI,UAAU,sBAAqB,+BAGvCitI,EAAAA,cAAA,OAAKjtI,UAAU,mCAAmC+sI,IAI1D,cCnKI,GAAY,CAAC,QAAS,WAuB1B,IACA,GADiB,cArBjB,SAA4B9uF,EAAMC,GAChC,IAAIC,EAAQF,EAAKE,MACfC,EAAUH,EAAKG,QACf36C,GAAQ,OAAyBw6C,EAAM,IACzC,OAAoB,gBAAoB,MAAOr6C,OAAO89B,OAAO,CAC3D2c,MAAO,6BACPrW,KAAM,OACNsW,QAAS,YACTC,YAAa,IACbhxC,OAAQ,eACR,cAAe,OACfixC,IAAKN,EACL,kBAAmBE,GAClB36C,GAAQ06C,EAAqB,gBAAoB,QAAS,CAC3Dr+C,GAAIs+C,GACHD,GAAS,KAAmB,gBAAoB,OAAQ,CACzDM,cAAe,QACfC,eAAgB,QAChBvsC,EAAG,4JAEP,6kBCbA,IAyGA,GAzGiB,SAAH8rC,GASP,IARL26C,EAAM36C,EAAN26C,OASQq2C,EAAiDr2C,EAAjDq2C,MAAOvC,EAA0C9zC,EAA1C8zC,aAAcF,EAA4B5zC,EAA5B4zC,UAAW0C,EAAiBt2C,EAAjBs2C,aACxCt2E,EAAwCq0E,EAAAA,SAA8B,GAA/DkC,EAAYv2E,EAAA,GAAEw2E,EAAex2E,EAAA,GAGpCq0E,EAAAA,WAAgB,WACTT,EAAUsC,MACbM,EAAgB,EAEpB,GAAG,CAAC5C,EAAUsC,OAEd,IAAMO,EAAYJ,aAAK,EAALA,EAAO7xH,KAAI,SAAC0xH,EAAaxhJ,GACzC,IAAM4rF,EAAWi2D,IAAiB7hJ,EAClC,OACE2/I,EAAAA,cAAA,OACExgF,KAAM,SACNxD,QAAS,WACPyjF,EAAYmC,GAAAA,GAAC,CAAC,EACTrC,GAAS,IACZsC,KAAMA,KAERM,EAAgB9hJ,EAClB,EACA2/B,IAAK3/B,EACL4K,MAAO,CAAEiC,MAAOm1I,SAChBtvI,UAAS,oFACPk5E,EAAW,iBAAmB,uBAGhC+zD,EAAAA,cAAA,OAAKjtI,UAAS,MACditI,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,OAAKjtI,UAAU,mCACZ,IACDitI,EAAAA,cAAA,QACEjtI,UAAU,6EAGT1S,EAAI,GACC,IACPwhJ,EAAKS,UAGNtC,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,OAAKjtI,UAAU,iCACZ8uI,EAAKU,eAERvC,EAAAA,cAAA,OAAKjtI,UAAU,8BAA8B8uI,EAAKW,aAM9D,IACA,OACExC,EAAAA,cAAA,OAAKjtI,UAAU,UACZivI,IAAUC,GAAgB1C,EAAUG,SACnCM,EAAAA,cAAA,OAAKjtI,UAAU,KACbitI,EAAAA,cAAA,OAAKjtI,UAAU,+CACbitI,EAAAA,cAACyC,GAAAA,EAAa,CAAC1vI,UAAU,qBAAqB,qBAEhDitI,EAAAA,cAAA,OAAKjtI,UAAU,gCAA+B,0GAI9CitI,EAAAA,cAACC,GAAAA,EAAW,CAAC/uF,MAAK,UAAY8wF,EAAMhiJ,OAAM,IAAKi5D,MAAM,GAInD+mF,EAAAA,cAAA,OAAKjtI,UAAU,yBACbitI,EAAAA,cAAA,OACEjtI,UAAU,cACV9H,MAAO,CAAEiC,MAAO,IAAsBk1I,EAAUpiJ,OAAS,OAExDoiJ,KAIPpC,EAAAA,cAAA,OAAKjtI,UAAU,eACbitI,EAAAA,cAAC0C,GAAAA,GAAY,CACX1mF,QAAS,WACP0+C,GAAQlmD,KAAK,yBACf,GACD,QACO,IACNwrF,EAAAA,cAAC2C,GAAkB,CAAC5vI,UAAU,iCAChB,IAChBitI,EAAAA,cAAA,QAAMjtI,UAAU,sBACb,IAAI,yCACkC,OAOrD,aCjHI,GAAY,CAAC,QAAS,WA2B1B,IACA,GADiB,cAzBjB,SAAuBi+C,EAAMC,GAC3B,IAAIC,EAAQF,EAAKE,MACfC,EAAUH,EAAKG,QACf36C,GAAQ,OAAyBw6C,EAAM,IACzC,OAAoB,gBAAoB,MAAOr6C,OAAO89B,OAAO,CAC3D2c,MAAO,6BACPrW,KAAM,OACNsW,QAAS,YACTC,YAAa,IACbhxC,OAAQ,eACR,cAAe,OACfixC,IAAKN,EACL,kBAAmBE,GAClB36C,GAAQ06C,EAAqB,gBAAoB,QAAS,CAC3Dr+C,GAAIs+C,GACHD,GAAS,KAAmB,gBAAoB,OAAQ,CACzDM,cAAe,QACfC,eAAgB,QAChBvsC,EAAG,29BACY,gBAAoB,OAAQ,CAC3CssC,cAAe,QACfC,eAAgB,QAChBvsC,EAAG,qCAEP,IC1BI,GAAY,CAAC,QAAS,WAuB1B,IACA,GADiB,cArBjB,SAA2B8rC,EAAMC,GAC/B,IAAIC,EAAQF,EAAKE,MACfC,EAAUH,EAAKG,QACf36C,GAAQ,OAAyBw6C,EAAM,IACzC,OAAoB,gBAAoB,MAAOr6C,OAAO89B,OAAO,CAC3D2c,MAAO,6BACPrW,KAAM,OACNsW,QAAS,YACTC,YAAa,IACbhxC,OAAQ,eACR,cAAe,OACfixC,IAAKN,EACL,kBAAmBE,GAClB36C,GAAQ06C,EAAqB,gBAAoB,QAAS,CAC3Dr+C,GAAIs+C,GACHD,GAAS,KAAmB,gBAAoB,OAAQ,CACzDM,cAAe,QACfC,eAAgB,QAChBvsC,EAAG,gGAEP,ICJA,OAnBA,WAcE,IAbA,IAAIsmC,EAAazrD,UACbgS,EAAS4E,OAAO89B,OAAO,CAAC,EAAG10C,UAAUC,QAAU,OAAI41B,EAAY71B,UAAU,IACzE6iJ,EAAQ,WACV,IAAI1vH,EAAM7yB,EAAI,GAAKmrD,EAAWxrD,QAAUK,OAAIu1B,EAAY41B,EAAWnrD,GAC/D6yB,GACFvc,OAAOopB,KAAK7M,GAAK3rB,SAAQ,SAAUy4B,GACjC,IAAIx7B,EAAM0uB,EAAI8M,QACFpK,IAARpxB,IACFuN,EAAOiuB,GAAOx7B,EAElB,GAEJ,EACSnE,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IACpCuiJ,IAEF,OAAO7wI,CACT,ECdW8wI,GAAkB,CAAC,MAAO,KAAM,KAAM,KAAM,KAAM,MACzDC,GAAmB,SAA0Bv5E,GAC/C,MAAO,CACLzxC,GAAI,eAAeplB,OAAO62D,EAAMw5E,YAAa,OAC7CC,GAAI,eAAetwI,OAAO62D,EAAM05E,SAAU,OAC1CC,GAAI,eAAexwI,OAAO62D,EAAM45E,SAAU,OAC1CC,GAAI,eAAe1wI,OAAO62D,EAAM85E,SAAU,OAC1CC,GAAI,eAAe5wI,OAAO62D,EAAMg6E,SAAU,OAC1CC,IAAK,eAAe9wI,OAAO62D,EAAMk6E,UAAW,OAEhD,EAKIC,GAAsB,SAA6Bn6E,GACrD,IAAIo6E,EAAiBp6E,EACjBq6E,EAAiB,GAAGlxI,OAAOmwI,IAAiB9yH,UAoBhD,OAnBA6zH,EAAer8I,SAAQ,SAAUs8I,EAAYxjJ,GAC3C,IAAIyjJ,EAAkBD,EAAW99H,cAC7Bg+H,EAAY,SAASrxI,OAAOoxI,EAAiB,OAC7CE,EAAS,SAAStxI,OAAOoxI,GAC7B,KAAMH,EAAeI,IAAcJ,EAAeK,IAChD,MAAM,IAAI58G,MAAM,GAAG10B,OAAOqxI,EAAW,MAAMrxI,OAAOsxI,EAAQ,eAAetxI,OAAOixI,EAAeI,GAAY,MAAMrxI,OAAOixI,EAAeK,GAAS,MAElJ,GAAI3jJ,EAAIujJ,EAAe5jJ,OAAS,EAAG,CACjC,IAAIikJ,EAAY,SAASvxI,OAAOoxI,EAAiB,OACjD,KAAMH,EAAeK,IAAWL,EAAeM,IAC7C,MAAM,IAAI78G,MAAM,GAAG10B,OAAOsxI,EAAQ,MAAMtxI,OAAOuxI,EAAW,eAAevxI,OAAOixI,EAAeK,GAAS,MAAMtxI,OAAOixI,EAAeM,GAAY,MAElJ,IAAIC,EAAyBN,EAAevjJ,EAAI,GAAG0lB,cAC/Co+H,EAAgB,SAASzxI,OAAOwxI,EAAwB,OAC5D,KAAMP,EAAeM,IAAcN,EAAeQ,IAChD,MAAM,IAAI/8G,MAAM,GAAG10B,OAAOuxI,EAAW,MAAMvxI,OAAOyxI,EAAe,eAAezxI,OAAOixI,EAAeM,GAAY,MAAMvxI,OAAOixI,EAAeQ,GAAgB,KAElK,CACF,IACO56E,CACT,EACe,SAAS66E,KACtB,IAAIr0E,GAAY,EAAAC,GAAA,KAEdzG,GADa,OAAewG,EAAW,GACpB,GACjBs0E,EAAgBvB,GAAiBY,GAAoBn6E,IAEzD,OAAO,WAAc,WACnB,IAAI+6E,EAAc,IAAIpmI,IAClBqmI,GAAU,EACVC,EAAU,CAAC,EACf,MAAO,CACLC,cAAe,CAAC,EAChBvnB,SAAU,SAAkBwnB,GAK1B,OAJAF,EAAUE,EACVJ,EAAY/8I,SAAQ,SAAUm4B,GAC5B,OAAOA,EAAK8kH,EACd,IACOF,EAAY7gH,MAAQ,CAC7B,EACAkhH,UAAW,SAAmBjlH,GAK5B,OAJK4kH,EAAY7gH,MAAMtkC,KAAKgf,WAC5BomI,GAAU,EACVD,EAAYjjJ,IAAIkjJ,EAAQ7kH,GACxBA,EAAK8kH,GACED,CACT,EACAK,YAAa,SAAqBC,GAChCP,EAAY9+G,OAAOq/G,GACdP,EAAY7gH,MAAMtkC,KAAK2lJ,YAC9B,EACAA,WAAY,WACV,IAAIllJ,EAAQT,KACZwX,OAAOopB,KAAKskH,GAAe98I,SAAQ,SAAUy8I,GAC3C,IAAIe,EAAkBV,EAAcL,GAChCphH,EAAUhjC,EAAM6kJ,cAAcM,GAClCniH,SAAkDA,EAAQoiH,IAAIC,eAAeriH,aAAyC,EAASA,EAAQsnB,SACzI,IACAo6F,EAAY51I,OACd,EACAyP,SAAU,WACR,IAAI8/C,EAAS9+D,KACbwX,OAAOopB,KAAKskH,GAAe98I,SAAQ,SAAUy8I,GAC3C,IAAIe,EAAkBV,EAAcL,GAChC95F,EAAW,SAAkB8G,GAC/B,IAAIk0F,EAAUl0F,EAAKk0F,QACnBjnF,EAAOi/D,SAASvmH,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAG+vG,IAAU,OAAgB,CAAC,EAAGR,EAAQkB,IACxF,EACIF,EAAM3iJ,OAAO8iJ,WAAWJ,GAC5BC,EAAII,YAAYl7F,GAChB+T,EAAOwmF,cAAcM,GAAmB,CACtCC,IAAKA,EACL96F,SAAUA,GAEZA,EAAS86F,EACX,GACF,EACAX,cAAeA,EAEnB,GAAG,CAAC96E,GACN,CCxCA,OA1DY,WACV,IAAIwG,GAAY,EAAAC,GAAA,KAEdzG,GADa,OAAewG,EAAW,GACpB,GAGjBs1E,EAFU,IAAI,KAAU97E,EAAM+7E,aAETC,QAAQ9gI,EAAI,GAAM,CACzC3Q,QAAS,KACP,CAAC,EACL,OAAoB,gBAAoB,MAAO,CAC7C7I,MAAOo6I,EACPn4I,MAAO,MACPC,OAAQ,MACRkkD,QAAS,cACTD,MAAO,8BACO,gBAAoB,IAAK,CACvCrW,KAAM,OACNyqG,SAAU,WACI,gBAAoB,IAAK,CACvCvyI,UAAW,uBACG,gBAAoB,UAAW,CAC7C+vE,YAAa,KACbjoC,KAAM,UACNl6B,GAAI,SACJC,GAAI,SACJC,GAAI,SACJC,GAAI,WACW,gBAAoB,OAAQ,CAC3CkE,EAAG,+IACH61B,KAAM,YACS,gBAAoB,OAAQ,CAC3C71B,EAAG,2IACH61B,KAAM,yBACN9nC,UAAW,qBACI,gBAAoB,OAAQ,CAC3CiS,EAAG,0FACH61B,KAAM,YACS,gBAAoB,OAAQ,CAC3C71B,EAAG,ujBACH61B,KAAM,aACU,gBAAoB,OAAQ,CAC5C71B,EAAG,yOACH61B,KAAM,YACS,gBAAoB,IAAK,CACxC9nC,UAAW,2BACX8nC,KAAM,QACQ,gBAAoB,UAAW,CAC7Cl6B,GAAI,SACJC,GAAI,QACJC,GAAI,QACJC,GAAI,UACW,gBAAoB,OAAQ,CAC3CkE,EAAG,2DAEP,ECPA,OA9Ca,WACX,IAAI6qD,GAAY,EAAAC,GAAA,KAEdzG,GADa,OAAewG,EAAW,GACpB,GACjBulD,EAAY/rD,EAAM+rD,UACpBmwB,EAAoBl8E,EAAMk8E,kBAC1BC,EAAsBn8E,EAAMm8E,oBAC5BluE,EAAmBjO,EAAMiO,iBACvBmuE,GAAW,IAAArpE,UAAQ,WACnB,MAAO,CACL9O,YAAa,IAAI,KAAU8nD,GAAWswB,aAAapuE,GAAkBquE,mBACrEtsI,YAAa,IAAI,KAAUksI,GAAmBG,aAAapuE,GAAkBquE,mBAC7EC,aAAc,IAAI,KAAUJ,GAAqBE,aAAapuE,GAAkBquE,mBAEpF,GAAG,CAACvwB,EAAWmwB,EAAmBC,EAAqBluE,IACvDhK,EAAcm4E,EAASn4E,YACvBj0D,EAAcosI,EAASpsI,YACvBusI,EAAeH,EAASG,aAC1B,OAAoB,gBAAoB,MAAO,CAC7C54I,MAAO,KACPC,OAAQ,KACRkkD,QAAS,YACTD,MAAO,8BACO,gBAAoB,IAAK,CACvCn+C,UAAW,iBACX8nC,KAAM,OACNyqG,SAAU,WACI,gBAAoB,UAAW,CAC7CzqG,KAAMxhC,EACNsH,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,MACW,gBAAoB,IAAK,CACxCwkI,SAAU,UACVllI,OAAQktD,GACM,gBAAoB,OAAQ,CAC1CtoD,EAAG,kHACY,gBAAoB,OAAQ,CAC3CA,EAAG,gPACH61B,KAAM+qG,MAEV,EC5CIC,GAAsB,SAA6Bx8E,GACrD,IAAIy8E,EAASlxE,EACTtL,EAAeD,EAAMC,aACvBmgC,EAASpgC,EAAMogC,OACf7zB,EAAWvM,EAAMuM,SACjB8pC,EAAWr2C,EAAMq2C,SACjB3/F,EAAWspD,EAAMtpD,SACjBC,EAAaqpD,EAAMrpD,WACrB,OAAO,OAAgB,CAAC,EAAGspD,GAAesL,EAAgB,CACxDwqC,aAAcxpC,EACd71D,SAAUA,EACVC,WAAYA,EACZE,UAAW,WACV,OAAgB00D,EAAe,GAAGpiE,OAAO82D,EAAc,UAAW,CACnEr8D,OAAQo8D,EAAM08E,eACdzxE,aAAcsB,EACdhiE,QAASy1D,EAAM28E,aACfjmE,IAAK,CACH9yE,OAAQ,QAEVqyG,IAAK,CACHx6E,SAAU,OACV73B,OAAQ,OACRw8F,OAAQ,WAER,OAAgB70B,EAAe,GAAGpiE,OAAO82D,EAAc,gBAAiB,CAC1Et2B,MAAOq2B,EAAMsM,aACX,OAAgBf,EAAe,GAAGpiE,OAAO82D,EAAc,WAAY,CACrEo0C,UAAWjU,KACT,OAAgB70B,EAAe,YAAakxE,EAAU,CACxD3mC,YAAaO,EACb1sE,MAAOq2B,EAAM2N,oBACZ,OAAgB8uE,EAAS,GAAGtzI,OAAO82D,EAAc,gBAAiB,CACnEt2B,MAAOq2B,EAAM2N,qBACX,OAAgB8uE,EAAS,GAAGtzI,OAAO82D,EAAc,UAAW,CAC9Dr8D,OAAQo8D,EAAM48E,mBACZH,KAAW,OAAgBlxE,EAAe,WAAW,OAAgB,CACvEuqC,YAAavpC,EACb5iC,MAAOq2B,EAAM2N,mBACZ,GAAGxkE,OAAO82D,EAAc,UAAW,CACpCr8D,OAAQo8D,EAAM68E,oBACXtxE,GACP,EAEA,IAAe,EAAA9K,GAAA,GAAsB,SAAS,SAAUT,GACtD,IAAIC,EAAeD,EAAMC,aACvB4Q,EAAkB7Q,EAAM6Q,gBACtBisE,GAAa,SAAW98E,EAAO,CACjC+8E,YAAa,GAAG5zI,OAAO82D,EAAc,QACrCy8E,eAAkC,IAAlB7rE,EAChB+rE,iBAAkB/rE,EAClBgsE,iBAAoC,KAAlBhsE,IAEpB,MAAO,CAAC2rE,GAAoBM,GAC9B,ICrDI,GAAgC,SAAUppI,EAAG5Z,GAC/C,IAAIH,EAAI,CAAC,EACT,IAAK,IAAIqa,KAAKN,EAAOtG,OAAOtX,UAAUqX,eAAe3V,KAAKkc,EAAGM,IAAMla,EAAEgP,QAAQkL,GAAK,IAAGra,EAAEqa,GAAKN,EAAEM,IAC9F,GAAS,MAALN,GAAqD,mBAAjCtG,OAAO+wB,sBAA2C,KAAIrnC,EAAI,EAAb,IAAgBkd,EAAI5G,OAAO+wB,sBAAsBzqB,GAAI5c,EAAIkd,EAAEvd,OAAQK,IAClIgD,EAAEgP,QAAQkL,EAAEld,IAAM,GAAKsW,OAAOtX,UAAUgsD,qBAAqBtqD,KAAKkc,EAAGM,EAAEld,MAAK6C,EAAEqa,EAAEld,IAAM4c,EAAEM,EAAEld,IADuB,CAGvH,OAAO6C,CACT,EAQIqjJ,GAA+B,gBAAoB,GAAiB,MACpEC,GAA8B,gBAAoB,GAAgB,MAClE,GAAQ,SAAelmJ,GACzB,IAAIk+D,EACAzrD,EAAYzS,EAAGyS,UACjBooE,EAAgB76E,EAAG66E,cACnB1I,EAAqBnyE,EAAGs+D,UACxB6nF,EAAWnmJ,EAAG0nH,MACdA,OAAqB,IAAby+B,EAAsBF,GAAkBE,EAChDtgF,EAAc7lE,EAAG6lE,YACjBn3D,EAAW1O,EAAG0O,SACd03I,EAAapmJ,EAAGomJ,WAChBz7I,EAAQ3K,EAAG2K,MACXo4E,EAAY,GAAO/iF,EAAI,CAAC,YAAa,gBAAiB,YAAa,QAAS,cAAe,WAAY,aAAc,UACnHkyE,EAAoB,aAAiB,OACvClD,EAAekD,EAAkBlD,aACjCr1C,EAAYu4C,EAAkBv4C,UAC9BylC,EAAQ8S,EAAkB9S,MACxBd,EAAY0Q,EAAa,QAASmD,GAClC/C,EAAY,GAAS9Q,GACvBqd,GAAa,OAAevM,EAAW,GACvCwM,EAAUD,EAAW,GACrBtM,EAASsM,EAAW,GAClBwmC,EAAa,GAAU,SAEzBzhD,GADc,OAAeyhD,EAAY,GACpB,GACnBkkC,OAA6B,IAAhBxgF,EAA8BA,EAAcnF,aAAuC,EAASA,EAAOmF,YAChH4zC,EAAqB,iBAAR4sC,EAAmBA,EAAM,QACtCC,EAAY,KAShB,OAPEA,EADmB,iBAAV5+B,EACgB,gBAAoB,MAAO,CAClDjO,IAAKA,EACLz2E,IAAK0kF,IAGKA,EAEP9rC,EAAsB,gBAAoB,MAAOvlE,OAAO89B,OAAO,CACpE1hC,UAAW,IAAW48D,EAAQ/Q,EAAWc,aAAqC,EAASA,EAAM3sD,WAAYyrD,EAAc,CAAC,GAAG,OAAgBA,EAAa,GAAG9rD,OAAOksD,EAAW,WAAYopD,IAAUw+B,KAAiB,OAAgBhoF,EAAa,GAAG9rD,OAAOksD,EAAW,QAAuB,QAAd3kC,GAAsBukC,GAAczrD,EAAWooE,GAC9TlwE,MAAO0L,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGirB,aAAqC,EAASA,EAAMz0D,OAAQA,IAClGo4E,GAAyB,gBAAoB,MAAO,CACrDtwE,UAAW,GAAGL,OAAOksD,EAAW,UAChC3zD,MAAOy7I,GACNE,GAAYD,GAAoB,gBAAoB,MAAO,CAC5D5zI,UAAW,GAAGL,OAAOksD,EAAW,iBAC/B+nF,GAAM33I,GAAyB,gBAAoB,MAAO,CAC3D+D,UAAW,GAAGL,OAAOksD,EAAW,YAC/B5vD,IACL,EACA,GAAM63I,wBAA0BN,GAChC,GAAMO,uBAAyBN,GAI/B,UC5CA,GA1ByB,SAA4BhwI,GACnD,IAAI4xD,EAAgB5xD,EAAM4xD,cAGtBvjC,GAASyqC,GAFK,IAAAC,YAAW,OACAD,cACH,SAC1B,OAAQlH,GACN,IAAK,QACL,IAAK,OACH,OAAoB,gBAAoB,GAAO,CAC7C4/C,MAAO,GAAM8+B,yBAEjB,IAAK,SACL,IAAK,aACL,IAAK,WACL,IAAK,WACL,IAAK,WACH,OAAoB,gBAAoB,GAAO,CAC7C9+B,MAAO,GAAM8+B,uBACb/zI,UAAW,GAAGL,OAAOmyB,EAAQ,YAGjC,QAEE,OAAoB,gBAAoB,GAAO,MAErD,ECzBA,cACE,IAAI8mC,EAAkB,YAAe,GACnCC,GAAmB,OAAeD,EAAiB,GACnDo7E,EAAWn7E,EAAiB,GAC5Bo7E,EAAcp7E,EAAiB,GAIjC,OAHA,aAAgB,WACdo7E,E5CFgC,WAClC,IAAKjrB,KACH,OAAO,EAET,QAAyBnmG,IAArBkmG,GACF,OAAOA,GAGT,IAAI/lD,EAAOjsE,SAAS+Z,cAAc,OAClCkyD,EAAK9qE,MAAMu/C,QAAU,OACrBurB,EAAK9qE,MAAMgsG,cAAgB,SAC3BlhC,EAAK9qE,MAAMg8I,OAAS,MAEpBlxE,EAAKjpE,YAAYhD,SAAS+Z,cAAc,QACxCkyD,EAAKjpE,YAAYhD,SAAS+Z,cAAc,QAExC,IAAI1b,EAAY2B,SAAS+Z,cAAc,OAQvC,OAPA1b,EAAU8C,MAAMq/C,SAAW,WAC3BniD,EAAU8C,MAAM2I,OAAS,QACzBzL,EAAU2E,YAAYipE,GAEtBjsE,SAASgiD,KAAKh/C,YAAY3E,GAC1B2zH,GAAyC,IAAtB/lD,EAAKyP,aACxB17E,SAASgiD,KAAKt9C,YAAYrG,GACnB2zH,EACT,C4CvBgBorB,GACd,GAAG,IACIH,CACR,ECVD,IAD8B,IAAA3mF,eAAc,CAAC,GCEzC+mF,GAAkB,SAAyB59E,GAC7C,IAAIC,EAAeD,EAAMC,aACzB,OAAO,OAAgB,CAAC,EAAGA,EAAc,CACvChf,QAAS,OACT48F,SAAU,WACV7wE,SAAU,EACV,sBAAuB,CACrB/rB,QAAS,QAEX,YAAa,CACX+uF,SAAU,UAGZ,UAAW,CACTn6B,eAAgB,cAGlB,WAAY,CACVA,eAAgB,UAGlB,QAAS,CACPA,eAAgB,YAElB,kBAAmB,CACjBA,eAAgB,iBAElB,iBAAkB,CAChBA,eAAgB,gBAElB,iBAAkB,CAChBA,eAAgB,gBAGlB,QAAS,CACPlI,WAAY,cAGd,WAAY,CACVA,WAAY,UAEd,WAAY,CACVA,WAAY,aAGlB,EAEImwC,GAAkB,SAAyB99E,GAC7C,IAAIC,EAAeD,EAAMC,aACzB,OAAO,OAAgB,CAAC,EAAGA,EAAc,CACvClf,SAAU,WACVtlB,SAAU,OAEVqxD,UAAW,GAEf,EAkDIixD,GAAe,SAAsB/9E,EAAOoJ,GAC9C,OAlD4B,SAAiCpJ,EAAOoJ,GAIpE,IAHA,IAAInJ,EAAeD,EAAMC,aACvB+9E,EAAch+E,EAAMg+E,YAClBC,EAAmB,CAAC,EACfnnJ,EAAIknJ,EAAalnJ,GAAK,EAAGA,IACtB,IAANA,GACFmnJ,EAAiB,GAAG90I,OAAO82D,GAAc92D,OAAOigE,EAAS,KAAKjgE,OAAOrS,IAAM,CACzEmqD,QAAS,QAEXg9F,EAAiB,GAAG90I,OAAO82D,EAAc,UAAU92D,OAAOrS,IAAM,CAC9D21E,iBAAkB,QAEpBwxE,EAAiB,GAAG90I,OAAO82D,EAAc,UAAU92D,OAAOrS,IAAM,CAC9Do3I,eAAgB,QAElB+P,EAAiB,GAAG90I,OAAO82D,GAAc92D,OAAOigE,EAAS,UAAUjgE,OAAOrS,IAAM,CAC9E21E,iBAAkB,QAEpBwxE,EAAiB,GAAG90I,OAAO82D,GAAc92D,OAAOigE,EAAS,UAAUjgE,OAAOrS,IAAM,CAC9Eo3I,eAAgB,QAElB+P,EAAiB,GAAG90I,OAAO82D,GAAc92D,OAAOigE,EAAS,YAAYjgE,OAAOrS,IAAM,CAChF40E,kBAAmB,GAErBuyE,EAAiB,GAAG90I,OAAO82D,GAAc92D,OAAOigE,EAAS,WAAWjgE,OAAOrS,IAAM,CAC/Eo8C,MAAO,KAGT+qG,EAAiB,GAAG90I,OAAO82D,GAAc92D,OAAOigE,EAAS,KAAKjgE,OAAOrS,IAAM,CACzEmqD,QAAS,QACTurB,KAAM,OAAOrjE,OAAOrS,EAAIknJ,EAAc,IAAK,KAC3CviH,SAAU,GAAGtyB,OAAOrS,EAAIknJ,EAAc,IAAK,MAE7CC,EAAiB,GAAG90I,OAAO82D,GAAc92D,OAAOigE,EAAS,UAAUjgE,OAAOrS,IAAM,CAC9E21E,iBAAkB,GAAGtjE,OAAOrS,EAAIknJ,EAAc,IAAK,MAErDC,EAAiB,GAAG90I,OAAO82D,GAAc92D,OAAOigE,EAAS,UAAUjgE,OAAOrS,IAAM,CAC9Eo3I,eAAgB,GAAG/kI,OAAOrS,EAAIknJ,EAAc,IAAK,MAEnDC,EAAiB,GAAG90I,OAAO82D,GAAc92D,OAAOigE,EAAS,YAAYjgE,OAAOrS,IAAM,CAChF40E,kBAAmB,GAAGviE,OAAOrS,EAAIknJ,EAAc,IAAK,MAEtDC,EAAiB,GAAG90I,OAAO82D,GAAc92D,OAAOigE,EAAS,WAAWjgE,OAAOrS,IAAM,CAC/Eo8C,MAAOp8C,IAIb,OAAOmnJ,CACT,CAESC,CAAwBl+E,EAAOoJ,EACxC,EAKW+0E,IAAc,EAAA19E,GAAA,GAAsB,QAAQ,SAAUT,GAC/D,MAAO,CAAC49E,GAAgB59E,GAC1B,IACWo+E,IAAc,EAAA39E,GAAA,GAAsB,QAAQ,SAAUT,GAC/D,IAAIq+E,GAAY,SAAWr+E,EAAO,CAChCg+E,YAAa,KAGXM,EAAoB,CACtB,MAAOD,EAAUE,YACjB,MAAOF,EAAUG,YACjB,MAAOH,EAAUI,YACjB,MAAOJ,EAAUK,YACjB,OAAQL,EAAUM,cAEpB,MAAO,CAACb,GAAgBO,GAAYN,GAAaM,EAAW,IAAKN,GAAaM,EAAW,OAAQjxI,OAAOopB,KAAK8nH,GAAmB13H,KAAI,SAAU6P,GAC5I,OApBoB,SAA2BupC,EAAO4+E,EAAYx1E,GACpE,OAAO,OAAgB,CAAC,EAAG,sBAAsBjgE,OAAOy1I,EAAY,OAAQxxI,OAAO89B,OAAO,CAAC,EAAG6yG,GAAa/9E,EAAOoJ,IACpH,CAkBWy1E,CAAkBR,EAAWC,EAAkB7nH,GAAMA,EAC9D,IAAGlP,QAAO,SAAUu3H,EAAKC,GACvB,OAAO3xI,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAG4zG,GAAMC,EAC/C,GAAG,CAAC,GACN,ICrII,GAAgC,SAAUrrI,EAAG5Z,GAC/C,IAAIH,EAAI,CAAC,EACT,IAAK,IAAIqa,KAAKN,EAAOtG,OAAOtX,UAAUqX,eAAe3V,KAAKkc,EAAGM,IAAMla,EAAEgP,QAAQkL,GAAK,IAAGra,EAAEqa,GAAKN,EAAEM,IAC9F,GAAS,MAALN,GAAqD,mBAAjCtG,OAAO+wB,sBAA2C,KAAIrnC,EAAI,EAAb,IAAgBkd,EAAI5G,OAAO+wB,sBAAsBzqB,GAAI5c,EAAIkd,EAAEvd,OAAQK,IAClIgD,EAAEgP,QAAQkL,EAAEld,IAAM,GAAKsW,OAAOtX,UAAUgsD,qBAAqBtqD,KAAKkc,EAAGM,EAAEld,MAAK6C,EAAEqa,EAAEld,IAAM4c,EAAEM,EAAEld,IADuB,CAGvH,OAAO6C,CACT,EAUA,SAASqlJ,GAAqBC,EAASxE,GACrC,IAAIr4E,EAAkB,WAAkC,iBAAZ68E,EAAuBA,EAAU,IAC3E58E,GAAmB,OAAeD,EAAiB,GACnDtnE,EAAOunE,EAAiB,GACxB68E,EAAU78E,EAAiB,GAsB7B,OAHA,aAAgB,YAlBc,WAI5B,GAHuB,iBAAZ48E,GACTC,EAAQD,GAEa,iBAAZA,EAGX,IAAK,IAAInoJ,EAAI,EAAGA,EAAIwiJ,GAAgB7iJ,OAAQK,IAAK,CAC/C,IAAIwjJ,EAAahB,GAAgBxiJ,GAEjC,GAAK2jJ,EAAOH,GAAZ,CACA,IAAI6E,EAASF,EAAQ3E,GACrB,QAAejuH,IAAX8yH,EAEF,YADAD,EAAQC,EAHuB,CAMnC,CACF,CAEEC,EACF,GAAG,CAACxoG,KAAKF,UAAUuoG,GAAUxE,IACtB3/I,CACT,CACA,IAAIukJ,GAAmB,cAAiB,SAAUpyI,EAAO+6C,GACvD,IAAIiN,EACAiU,EAAqBj8D,EAAMooD,UAC7BiqF,EAAUryI,EAAMqyI,QAChBr1D,EAAQh9E,EAAMg9E,MACdzgF,EAAYyD,EAAMzD,UAClB9H,EAAQuL,EAAMvL,MACd+D,EAAWwH,EAAMxH,SACjB85I,EAAgBtyI,EAAMuyI,OACtBA,OAA2B,IAAlBD,EAA2B,EAAIA,EACxCx2F,EAAO97C,EAAM87C,KACbogB,EAAS,GAAOl8D,EAAO,CAAC,YAAa,UAAW,QAAS,YAAa,QAAS,WAAY,SAAU,SACnGg8D,EAAoB,aAAiB,OACvClD,EAAekD,EAAkBlD,aACjCr1C,EAAYu4C,EAAkBv4C,UAC5B6xC,EAAmB,WAAe,CAClCh0C,IAAI,EACJkrH,IAAI,EACJE,IAAI,EACJE,IAAI,EACJE,IAAI,EACJE,KAAK,IAEPz3E,GAAmB,OAAeD,EAAkB,GACpD04E,EAAUz4E,EAAiB,GAC3Bi9E,EAAaj9E,EAAiB,GAE5BG,EAAmB,WAAe,CAClCp0C,IAAI,EACJkrH,IAAI,EACJE,IAAI,EACJE,IAAI,EACJE,IAAI,EACJE,KAAK,IAEPr3E,GAAmB,OAAeD,EAAkB,GACpD+8E,EAAa98E,EAAiB,GAC9B+8E,EAAgB/8E,EAAiB,GAE/Bg9E,EAAaZ,GAAqB/0D,EAAOy1D,GACzCG,EAAeb,GAAqBM,EAASI,GAC7CI,EAAiBC,KACjBC,EAAY,SAAaR,GACzBS,EAAqBpF,KAEzB,aAAgB,WACd,IAAI76E,EAAQigF,EAAmB7E,WAAU,SAAUX,GACjDkF,EAAclF,GACd,IAAIyF,EAAgBF,EAAU3iJ,SAAW,IACpCg5B,MAAMC,QAAQ4pH,IAA2C,iBAAlBA,GAA8B7pH,MAAMC,QAAQ4pH,KAA+C,iBAArBA,EAAc,IAA+C,iBAArBA,EAAc,MACtKT,EAAWhF,EAEf,IACA,OAAO,WACL,OAAOwF,EAAmB5E,YAAYr7E,EACxC,CACF,GAAG,IAEH,IACM22D,EAiBFthE,EAAY0Q,EAAa,MAAOmD,GAChCi3E,EAAehC,GAAY9oF,GAC7B+qF,GAAgB,OAAeD,EAAc,GAC7CxtE,EAAUytE,EAAc,GACxBh6E,EAASg6E,EAAc,GACrBC,GAtBE1pB,EAAU,MAACtqG,OAAWA,IACHgK,MAAMC,QAAQkpH,GAAUA,EAAS,CAACA,OAAQnzH,IAChDruB,SAAQ,SAAUosC,EAAGxsC,GACpC,GAAiB,iBAANwsC,EACT,IAAK,IAAItzC,EAAI,EAAGA,EAAIwiJ,GAAgB7iJ,OAAQK,IAAK,CAC/C,IAAIwjJ,EAAahB,GAAgBxiJ,GACjC,GAAImkJ,EAAQX,SAAiCjuH,IAAlB+d,EAAEkwG,GAA2B,CACtD3jB,EAAQ/4H,GAASwsC,EAAEkwG,GACnB,KACF,CACF,MAEA3jB,EAAQ/4H,GAASwsC,CAErB,IACOusF,GAQLttD,EAAU,IAAWhU,GAAYJ,EAAc,CAAC,GAAG,OAAgBA,EAAa,GAAG9rD,OAAOksD,EAAW,aAAsB,IAATtM,IAAiB,OAAgBkM,EAAa,GAAG9rD,OAAOksD,EAAW,KAAKlsD,OAAO02I,GAAeA,IAAe,OAAgB5qF,EAAa,GAAG9rD,OAAOksD,EAAW,KAAKlsD,OAAOy2I,GAAaA,IAAa,OAAgB3qF,EAAa,GAAG9rD,OAAOksD,EAAW,QAAuB,QAAd3kC,GAAsBukC,GAAczrD,EAAW48D,GAEjak6E,EAAW,CAAC,EACZC,EAAiC,MAAdF,EAAQ,IAAcA,EAAQ,GAAK,EAAIA,EAAQ,IAAM,OAAIh0H,EAC5Em0H,EAA+B,MAAdH,EAAQ,IAAcA,EAAQ,GAAK,EAAIA,EAAQ,IAAM,OAAIh0H,EAK9E,GAJIk0H,IACFD,EAASG,WAAaF,EACtBD,EAASI,YAAcH,GAErBT,EAAgB,CAElB,IAAIa,GAAW,OAAeN,EAAS,GACvCC,EAAS5C,OAASiD,EAAS,EAC7B,MAAWH,IACTF,EAASjsC,UAAYmsC,EACrBF,EAASr1E,aAAeu1E,GAI1B,IAAII,GAAY,OAAeP,EAAS,GACtCQ,EAAUD,EAAU,GACpBE,EAAUF,EAAU,GAClBG,EAAa,WAAc,WAC7B,MAAO,CACLvB,OAAQ,CAACqB,EAASC,GAClB/3F,KAAMA,EACN+2F,eAAgBA,EAEpB,GAAG,CAACe,EAASC,EAAS/3F,EAAM+2F,IAC5B,OAAOntE,EAAsB,gBAAoB,GAAW/b,SAAU,CACpE7+D,MAAOgpJ,GACO,gBAAoB,MAAO3zI,OAAO89B,OAAO,CAAC,EAAGi+B,EAAQ,CACnE3/D,UAAW6/D,EACX3nE,MAAO0L,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGo1G,GAAW5+I,GAClDsmD,IAAKA,IACHviD,IACN,IAIA,UCnJA,OAlBA,WACE,IAAIu7I,IAAkBxqJ,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,KAAmBA,UAAU,GACjFyqJ,GAAa,IAAA/6E,QAAO,CAAC,GACrBisC,EAAc5yC,KACd0gF,EAAqBpF,KAYzB,OAXA,EAAAh/D,GAAA,IAAgB,WACd,IAAI7b,EAAQigF,EAAmB7E,WAAU,SAAU8F,GACjDD,EAAW5jJ,QAAU6jJ,EACjBF,GACF7uC,GAEJ,IACA,OAAO,WACL,OAAO8tC,EAAmB5E,YAAYr7E,EACxC,CACF,GAAG,IACIihF,EAAW5jJ,OACpB,ECHA,GAjByB,CACvB,KAAQ,CACN,IAAO,MACP,MAAS,CACP,QAAW,gBACX,UAAa,SAEf,SAAY,CAAC,CACX,IAAO,OACP,MAAS,CACP,EAAK,qXAIX,KAAQ,cACR,MAAS,YCTP,GAAqB,SAA4B4P,EAAO+6C,GAC1D,OAAoB,gBAAoBsX,GAAA,GAAU,OAAS,CAAC,EAAGryD,EAAO,CACpE+6C,IAAKA,EACL8U,KAAM,KAEV,EAIA,OAA4B,aAAiB,ICE7C,GAjB0B,CACxB,KAAQ,CACN,IAAO,MACP,MAAS,CACP,QAAW,gBACX,UAAa,SAEf,SAAY,CAAC,CACX,IAAO,OACP,MAAS,CACP,EAAK,uXAIX,KAAQ,eACR,MAAS,YCTP,GAAsB,SAA6B7vD,EAAO+6C,GAC5D,OAAoB,gBAAoBsX,GAAA,GAAU,OAAS,CAAC,EAAGryD,EAAO,CACpE+6C,IAAKA,EACL8U,KAAM,KAEV,EAIA,OAA4B,aAAiB,ICE7C,GAjBmB,CACjB,KAAQ,CACN,IAAO,MACP,MAAS,CACP,QAAW,gBACX,UAAa,SAEf,SAAY,CAAC,CACX,IAAO,OACP,MAAS,CACP,EAAK,4LAIX,KAAQ,OACR,MAAS,YCTP,GAAe,SAAsB7vD,EAAO+6C,GAC9C,OAAoB,gBAAoBsX,GAAA,GAAU,OAAS,CAAC,EAAGryD,EAAO,CACpE+6C,IAAKA,EACL8U,KAAM,KAEV,EAIA,OAA4B,aAAiB,gBCL7C,GAXc,CACZqkF,KAAM,GACNC,KAAM,GACNC,YAAa,GACbC,YAAa,IACbC,UAAW,EACXC,OAAQ,GACRx+B,MAAO,GACPy+B,SAAU,GACVC,WAAY,ICFVC,GAAuB,SAAUv9D,IACnC,QAAUu9D,EAASv9D,GACnB,IAAI9sF,GAAS,QAAaqqJ,GAC1B,SAASA,IACP,IAAItrJ,GACJ,OAAgBT,KAAM+rJ,GACtB,IAAK,IAAIxiG,EAAO3oD,UAAUC,OAAQH,EAAO,IAAI+/B,MAAM8oB,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E9oD,EAAK8oD,GAAQ5oD,UAAU4oD,GAmDzB,OAjDA/oD,EAAQiB,EAAOE,KAAKP,MAAMK,EAAQ,CAAC1B,MAAMuT,OAAO7S,KAC1C6iD,MAAQ,CACZyoG,YAAa,IAEfvrJ,EAAMwrJ,cAAgB,WACpB,IAAID,EAAcvrJ,EAAM8iD,MAAMyoG,YAE9B,OAAQA,GAAe/pI,OAAOC,MAAM8pI,QAAev1H,EAAYxU,OAAO+pI,EACxE,EACAvrJ,EAAMyrJ,gBAAkB,SAAU/pJ,GAChC,MAAO,GAAGoR,OAAOpR,EAAO,KAAKoR,OAAO9S,EAAM4W,MAAMwqD,OAAOX,eACzD,EACAzgE,EAAMwN,WAAa,SAAU9L,GAC3B1B,EAAM4W,MAAMpJ,WAAWgU,OAAO9f,GAChC,EACA1B,EAAM0rJ,aAAe,SAAUjoJ,GAC7BzD,EAAM2+D,SAAS,CACb4sF,YAAa9nJ,EAAEwE,OAAOvG,OAE1B,EACA1B,EAAM2rJ,WAAa,SAAUloJ,GAC3B,IAAIu4D,EAAch8D,EAAM4W,MACtBg1I,EAAW5vF,EAAY4vF,SACvBC,EAAU7vF,EAAY6vF,QACtBv5C,EAAgBt2C,EAAYs2C,cAC1Bi5C,EAAcvrJ,EAAM8iD,MAAMyoG,YAC1BK,GAA4B,KAAhBL,IAGhBvrJ,EAAM2+D,SAAS,CACb4sF,YAAa,KAEX9nJ,EAAEqoJ,gBAAkBroJ,EAAEqoJ,cAAc34I,UAAUV,QAAQ,GAAGK,OAAOw/F,EAAe,gBAAkB,GAAK7uG,EAAEqoJ,cAAc34I,UAAUV,QAAQ,GAAGK,OAAOw/F,EAAe,WAAa,IAGlLu5C,EAAQ7rJ,EAAMwrJ,iBAChB,EACAxrJ,EAAM+rJ,GAAK,SAAUtoJ,GAEC,KADFzD,EAAM8iD,MAAMyoG,cAI1B9nJ,EAAEgpH,UAAY,GAAQE,OAAoB,UAAXlpH,EAAEyE,OACnClI,EAAM2+D,SAAS,CACb4sF,YAAa,KAEfvrJ,EAAM4W,MAAMi1I,QAAQ7rJ,EAAMwrJ,kBAE9B,EACOxrJ,CACT,CAkGA,OAjGA,QAAasrJ,EAAS,CAAC,CACrBlrH,IAAK,qBACL1+B,MAAO,WACL,IAAI26D,EAAe98D,KAAKqX,MACtBo1I,EAAW3vF,EAAa2vF,SACxBC,EAAkB5vF,EAAa4vF,gBACjC,OAAIA,EAAgBhyF,MAAK,SAAUhC,GACjC,OAAOA,EAAO91C,aAAe6pI,EAAS7pI,UACxC,IACS8pI,EAEFA,EAAgBn5I,OAAO,CAACk5I,EAAS7pI,aAAarQ,MAAK,SAAU4L,EAAG8E,GAKrE,OAHchB,OAAOC,MAAMD,OAAO9D,IAAM,EAAI8D,OAAO9D,KAErC8D,OAAOC,MAAMD,OAAOgB,IAAM,EAAIhB,OAAOgB,GAErD,GACF,GACC,CACD4d,IAAK,SACL1+B,MAAO,WACL,IAAI28D,EAAS9+D,KACT++D,EAAe/+D,KAAKqX,MACtBo1I,EAAW1tF,EAAa0tF,SACxB5qF,EAAS9C,EAAa8C,OACtBkxC,EAAgBh0C,EAAag0C,cAC7B9kG,EAAa8wD,EAAa9wD,WAC1Bq+I,EAAUvtF,EAAautF,QACvBD,EAAWttF,EAAastF,SACxBM,EAAuB5tF,EAAa4tF,qBACpCT,EAAkBntF,EAAamtF,gBAC/BU,EAAkB7tF,EAAa6tF,gBAC/BltF,EAAWX,EAAaW,SACtBssF,EAAchsJ,KAAKujD,MAAMyoG,YACzBvsF,EAAY,GAAGlsD,OAAOw/F,EAAe,YACrC85C,EAASF,EACTG,EAAe,KACfC,EAAU,KACVC,EAAa,KACjB,IAAK/+I,IAAeq+I,EAClB,OAAO,KAET,IAAII,EAAkB1sJ,KAAKitJ,qBAC3B,GAAIh/I,GAAc4+I,EAAQ,CACxB,IAAI1nH,EAAUunH,EAAgB17H,KAAI,SAAUk8H,EAAKhsJ,GAC/C,OAAoB,gBAAoB2rJ,EAAOM,OAAQ,CACrDtsH,IAAK3/B,EACLiB,MAAO+qJ,EAAItqI,aACTspI,GAAmBptF,EAAOotF,iBAAiBgB,GACjD,IACAJ,EAA4B,gBAAoBD,EAAQ,CACtDntF,SAAUA,EACVD,UAAWmtF,EACXQ,YAAY,EACZx5I,UAAW,GAAGL,OAAOksD,EAAW,iBAChC4tF,gBAAiB,WACjBxlC,uBAAuB,EACvB1lH,OAAQsqJ,GAAYC,EAAgB,IAAI9pI,WACxC45C,SAAUx8D,KAAKiO,WACf2nF,kBAAmB,SAA2BmS,GAC5C,OAAOA,EAAY34F,UACrB,EACA,aAAcyyD,EAAOD,UACrBywC,aAAa,GACZltE,EACL,CA0BA,OAzBImnH,IACED,IACFW,EAAiC,kBAAbX,EAAsC,gBAAoB,SAAU,CACtF1jJ,KAAM,SACNk0D,QAAS78D,KAAKwsJ,GACdc,QAASttJ,KAAKwsJ,GACd9sF,SAAUA,EACV9rD,UAAW,GAAGL,OAAOksD,EAAW,yBAC/BoC,EAAOT,iBAAgC,gBAAoB,OAAQ,CACpEvE,QAAS78D,KAAKwsJ,GACdc,QAASttJ,KAAKwsJ,IACbH,IAELU,EAAuB,gBAAoB,MAAO,CAChDn5I,UAAW,GAAGL,OAAOksD,EAAW,kBAC/BoC,EAAOV,QAAsB,gBAAoB,QAAS,CAC3DzB,SAAUA,EACV/2D,KAAM,OACNxG,MAAO6pJ,EACPxvF,SAAUx8D,KAAKmsJ,aACfmB,QAASttJ,KAAKwsJ,GACde,OAAQvtJ,KAAKosJ,WACb,aAAcvqF,EAAOR,OACnBQ,EAAOR,KAAM2rF,IAEC,gBAAoB,KAAM,CAC5Cp5I,UAAW,GAAGL,OAAOksD,IACpBqtF,EAAcC,EACnB,KAEKhB,CACT,CA9J2B,CA8JzB,aACFA,GAAQprF,aAAe,CACrB+rF,gBAAiB,CAAC,KAAM,KAAM,KAAM,QAEtC,UCzIA,GA5BY,SAAer1I,GACzB,IAAIgoD,EACA0zC,EAAgB17F,EAAM07F,cACxB1xC,EAAOhqD,EAAMgqD,KACbk1D,EAASl/G,EAAMk/G,OACf3iH,EAAYyD,EAAMzD,UAClB45I,EAAYn2I,EAAMm2I,UAClB3wF,EAAUxlD,EAAMwlD,QAChB4wF,EAAap2I,EAAMo2I,WACnBj0C,EAAaniG,EAAMmiG,WACjB/5C,EAAY,GAAGlsD,OAAOw/F,EAAe,SACrChzC,EAAM,IAAWN,EAAW,GAAGlsD,OAAOksD,EAAW,KAAKlsD,OAAO8tD,IAAQhC,EAAc,CAAC,GAAG,OAAgBA,EAAa,GAAG9rD,OAAOksD,EAAW,WAAY82D,IAAS,OAAgBl3D,EAAa,GAAG9rD,OAAOksD,EAAW,cAAe4B,IAAO,OAAgBhC,EAAahoD,EAAMzD,UAAWA,GAAYyrD,IAOpS,OAAoB,gBAAoB,KAAM,CAC5CtN,MAAOy7F,EAAYnsF,EAAKz+C,WAAa,KACrChP,UAAWmsD,EACXlD,QATgB,WAChBA,EAAQwE,EACV,EAQEosF,WAPmB,SAAwBvpJ,GAC3CupJ,EAAWvpJ,EAAG24D,EAASwE,EACzB,EAMEjB,SAAU,GACTo5C,EAAWn4C,EAAM,OAAqB,gBAAoB,IAAK,CAChEy5C,IAAK,YACJz5C,IACL,ECjBA,SAAS,KAAQ,CACjB,SAAS1+B,GAAU1wB,GACjB,IAAI9P,EAAQ8f,OAAOhQ,GACnB,MAEmB,iBAAV9P,IAAuB8f,OAAOC,MAAM/f,IAAUm+B,SAASn+B,IAAU8X,KAAKwX,MAAMtvB,KAAWA,CAElG,CAIA,SAASurJ,GAActvI,EAAGmlC,EAAOlsC,GAC/B,IAAIo1I,OAAwB,IAANruI,EAAoBmlC,EAAMkpG,SAAWruI,EAC3D,OAAOnE,KAAKwX,OAAOpa,EAAMyhD,MAAQ,GAAK2zF,GAAY,CACpD,CACA,IAAItoF,GAA0B,SAAUqqB,IACtC,QAAUrqB,EAAYqqB,GACtB,IAAI9sF,GAAS,QAAayiE,GAC1B,SAASA,EAAW9sD,GAClB,IAAI5W,GACJ,OAAgBT,KAAMmkE,IACtB1jE,EAAQiB,EAAOE,KAAK5B,KAAMqX,IACpBs2I,eAA8B,cACpCltJ,EAAMmtJ,gBAAkB,WACtB,OAAO3zI,KAAKE,IAAI,EAAG1Z,EAAM8iD,MAAM97C,SAAWhH,EAAM4W,MAAMw2I,cAAgB,EAAI,GAC5E,EACAptJ,EAAMqtJ,gBAAkB,WACtB,OAAO7zI,KAAKC,IAAIwzI,QAAcj3H,EAAWh2B,EAAM8iD,MAAO9iD,EAAM4W,OAAQ5W,EAAM8iD,MAAM97C,SAAWhH,EAAM4W,MAAMw2I,cAAgB,EAAI,GAC7H,EACAptJ,EAAMstJ,YAAc,SAAU7mF,EAAMta,GAClC,IAAI6S,EAAYh/D,EAAM4W,MAAMooD,UACxB2f,EAAWlY,GAAqB,gBAAoB,SAAU,CAChEv+D,KAAM,SACN,aAAcikD,EACdh5C,UAAW,GAAGL,OAAOksD,EAAW,gBAKlC,MAHoB,mBAATyH,IACTkY,EAAwB,gBAAoBlY,GAAM,QAAc,CAAC,EAAGzmE,EAAM4W,SAErE+nE,CACT,EACA3+E,EAAMutJ,QAAU,SAAU3sF,GACxB,IAAIvI,EAAQr4D,EAAM4W,MAAMyhD,MACxB,OAAOn2B,GAAU0+B,IAASA,IAAS5gE,EAAM8iD,MAAM97C,SAAWk7B,GAAUm2B,IAAUA,EAAQ,CACxF,EACAr4D,EAAMwtJ,yBAA2B,WAC/B,IAAIxxF,EAAch8D,EAAM4W,MACtB62I,EAAkBzxF,EAAYyxF,gBAGhC,QAFUzxF,EAAY3D,OACPr4D,EAAM8iD,MAAMkpG,WAIpByB,CACT,EACAztJ,EAAM0tJ,cAAgB,SAAUjqJ,GAC1BA,EAAEgpH,UAAY,GAAQ2+B,UAAY3nJ,EAAEgpH,UAAY,GAAQ4+B,YAC1D5nJ,EAAEuI,gBAEN,EACAhM,EAAM2tJ,YAAc,SAAUlqJ,GAC5B,IAAI/B,EAAQ1B,EAAMwrJ,cAAc/nJ,GAE5B/B,IADoB1B,EAAM8iD,MAAM8qG,mBAElC5tJ,EAAM2+D,SAAS,CACbivF,kBAAmBlsJ,IAGnB+B,EAAEgpH,UAAY,GAAQE,MACxB3sH,EAAM0rJ,aAAahqJ,GACV+B,EAAEgpH,UAAY,GAAQ2+B,SAC/BprJ,EAAM0rJ,aAAahqJ,EAAQ,GAClB+B,EAAEgpH,UAAY,GAAQ4+B,YAC/BrrJ,EAAM0rJ,aAAahqJ,EAAQ,EAE/B,EACA1B,EAAM2rJ,WAAa,SAAUloJ,GAC3B,IAAI/B,EAAQ1B,EAAMwrJ,cAAc/nJ,GAChCzD,EAAM0rJ,aAAahqJ,EACrB,EACA1B,EAAM6tJ,eAAiB,SAAUhqH,GAC/B,IAAI78B,EAAUhH,EAAM8iD,MAAM97C,QACtB8mJ,EAAab,GAAcppH,EAAM7jC,EAAM8iD,MAAO9iD,EAAM4W,OACxD5P,EAAUA,EAAU8mJ,EAAaA,EAAa9mJ,EAG3B,IAAf8mJ,IAEF9mJ,EAAUhH,EAAM8iD,MAAM97C,SAEJ,iBAAT68B,IACH,aAAc7jC,EAAM4W,OACxB5W,EAAM2+D,SAAS,CACbqtF,SAAUnoH,IAGR,YAAa7jC,EAAM4W,OACvB5W,EAAM2+D,SAAS,CACb33D,QAASA,EACT4mJ,kBAAmB5mJ,KAIzBhH,EAAM4W,MAAMm3I,iBAAiB/mJ,EAAS68B,GAClC,aAAc7jC,EAAM4W,OAAS5W,EAAM4W,MAAMmlD,UAC3C/7D,EAAM4W,MAAMmlD,SAAS/0D,EAAS68B,EAElC,EACA7jC,EAAM0rJ,aAAe,SAAU9qF,GAC7B,IAAIvE,EAAer8D,EAAM4W,MACvBqoD,EAAW5C,EAAa4C,SACxBlD,EAAWM,EAAaN,SACtBiyF,EAAchuJ,EAAM8iD,MACtBkpG,EAAWgC,EAAYhC,SACvBhlJ,EAAUgnJ,EAAYhnJ,QACtB4mJ,EAAoBI,EAAYJ,kBAClC,GAAI5tJ,EAAMutJ,QAAQ3sF,KAAU3B,EAAU,CACpC,IAAIgvF,EAAchB,QAAcj3H,EAAWh2B,EAAM8iD,MAAO9iD,EAAM4W,OAC1Ds3I,EAAUttF,EAiBd,OAhBIA,EAAOqtF,EACTC,EAAUD,EACDrtF,EAAO,IAChBstF,EAAU,GAEN,YAAaluJ,EAAM4W,OACvB5W,EAAM2+D,SAAS,CACb33D,QAASknJ,IAGTA,IAAYN,GACd5tJ,EAAM2+D,SAAS,CACbivF,kBAAmBM,IAGvBnyF,EAASmyF,EAASlC,GACXkC,CACT,CACA,OAAOlnJ,CACT,EACAhH,EAAM60B,KAAO,WACP70B,EAAMmuJ,WACRnuJ,EAAM0rJ,aAAa1rJ,EAAM8iD,MAAM97C,QAAU,EAE7C,EACAhH,EAAM80B,KAAO,WACP90B,EAAMouJ,WACRpuJ,EAAM0rJ,aAAa1rJ,EAAM8iD,MAAM97C,QAAU,EAE7C,EACAhH,EAAMquJ,SAAW,WACfruJ,EAAM0rJ,aAAa1rJ,EAAMmtJ,kBAC3B,EACAntJ,EAAMsuJ,SAAW,WACftuJ,EAAM0rJ,aAAa1rJ,EAAMqtJ,kBAC3B,EACArtJ,EAAMmuJ,QAAU,WACd,OAAOnuJ,EAAM8iD,MAAM97C,QAAU,CAC/B,EACAhH,EAAMouJ,QAAU,WACd,OAAOpuJ,EAAM8iD,MAAM97C,QAAUimJ,QAAcj3H,EAAWh2B,EAAM8iD,MAAO9iD,EAAM4W,MAC3E,EACA5W,EAAMuuJ,WAAa,SAAUjkJ,EAAO1K,GAClC,GAAkB,UAAd0K,EAAM81B,KAAsC,KAAnB91B,EAAMkkJ,SAAiB,CAClD,IAAK,IAAI1lG,EAAO3oD,UAAUC,OAAQquJ,EAAa,IAAIzuH,MAAM8oB,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IACxG0lG,EAAW1lG,EAAO,GAAK5oD,UAAU4oD,GAEnCnpD,EAASgB,WAAM,EAAQ6tJ,EACzB,CACF,EACAzuJ,EAAM0uJ,eAAiB,SAAUjrJ,GAC/BzD,EAAMuuJ,WAAW9qJ,EAAGzD,EAAM60B,KAC5B,EACA70B,EAAM2uJ,eAAiB,SAAUlrJ,GAC/BzD,EAAMuuJ,WAAW9qJ,EAAGzD,EAAM80B,KAC5B,EACA90B,EAAM4uJ,mBAAqB,SAAUnrJ,GACnCzD,EAAMuuJ,WAAW9qJ,EAAGzD,EAAMquJ,SAC5B,EACAruJ,EAAM6uJ,mBAAqB,SAAUprJ,GACnCzD,EAAMuuJ,WAAW9qJ,EAAGzD,EAAMsuJ,SAC5B,EACAtuJ,EAAM8uJ,WAAa,SAAUrrJ,GACvBA,EAAEgpH,UAAY,GAAQE,OAAoB,UAAXlpH,EAAEyE,MACnClI,EAAM0rJ,aAAa1rJ,EAAM8iD,MAAM8qG,kBAEnC,EACA5tJ,EAAM+uJ,WAAa,SAAUC,GAC3B,IAAI1wF,EAAet+D,EAAM4W,MACvBq4I,EAAW3wF,EAAa2wF,SAEtBC,GAAan2C,EADFz6C,EAAay6C,YACAi2C,EAAU,OAAQhvJ,EAAMstJ,YAAY2B,EAAU,cACtEhwF,GAAYj/D,EAAMmuJ,UACtB,OAAoB,IAAAgB,gBAAeD,IAA2B,IAAAE,cAAaF,EAAY,CACrFjwF,SAAUA,IACPiwF,CACP,EACAlvJ,EAAMqvJ,WAAa,SAAUC,GAC3B,IAAIzwF,EAAe7+D,EAAM4W,MACvB24I,EAAW1wF,EAAa0wF,SAEtBC,GAAaz2C,EADFl6C,EAAak6C,YACAu2C,EAAU,OAAQtvJ,EAAMstJ,YAAYiC,EAAU,cACtEtwF,GAAYj/D,EAAMouJ,UACtB,OAAoB,IAAAe,gBAAeK,IAA2B,IAAAJ,cAAaI,EAAY,CACrFvwF,SAAUA,IACPuwF,CACP,EACA,IAAIC,EAAc74I,EAAMmlD,WAAa,GACnB,YAAanlD,IACZ64I,GAEjBlrB,QAAQib,KAAK,2IAEf,IAAIkQ,EAAW94I,EAAM+4I,eACjB,YAAa/4I,IAEf84I,EAAW94I,EAAM5P,SAEnB,IAAI4oJ,EAAYh5I,EAAMi5I,gBAWtB,MAVI,aAAcj5I,IAEhBg5I,EAAYh5I,EAAMo1I,UAEpB0D,EAAWl2I,KAAKC,IAAIi2I,EAAUzC,GAAc2C,OAAW55H,EAAWpf,IAClE5W,EAAM8iD,MAAQ,CACZ97C,QAAS0oJ,EACT9B,kBAAmB8B,EACnB1D,SAAU4D,GAEL5vJ,CACT,CA0TA,OAzTA,QAAa0jE,EAAY,CAAC,CACxBtjC,IAAK,qBACL1+B,MAAO,SAA4BukC,EAAG6pH,GAGpC,IAAI9wF,EAAYz/D,KAAKqX,MAAMooD,UAC3B,GAAI8wF,EAAU9oJ,UAAYzH,KAAKujD,MAAM97C,SAAWzH,KAAK2tJ,eAAelmJ,QAAS,CAC3E,IAEM+oJ,EAFFC,EAAkBzwJ,KAAK2tJ,eAAelmJ,QAAQu1D,cAAc,IAAIzpD,OAAOksD,EAAW,UAAUlsD,OAAOg9I,EAAU9oJ,UACjH,GAAIgpJ,GAAmB9lJ,SAASovH,gBAAkB02B,EAEhDA,SAAqH,QAAlDD,EAAwBC,EAAgBxzF,YAA4C,IAA1BuzF,GAA4CA,EAAsB5uJ,KAAK6uJ,EAExM,CACF,GACC,CACD5vH,IAAK,gBACL1+B,MAAO,SAAuB+B,GAC5B,IAAIwsJ,EAAaxsJ,EAAEwE,OAAOvG,MACtBwuJ,EAAWjD,QAAcj3H,EAAWz2B,KAAKujD,MAAOvjD,KAAKqX,OACrDg3I,EAAoBruJ,KAAKujD,MAAM8qG,kBAYnC,MAVmB,KAAfqC,EACMA,EAECzuI,OAAOC,MAAMD,OAAOyuI,IACrBrC,EACCqC,GAAcC,EACfA,EAEA1uI,OAAOyuI,EAGnB,GACC,CACD7vH,IAAK,qBACL1+B,MAAO,WACL,IAAIqpI,EAAexrI,KAAKqX,MACtBu5I,EAAkBplB,EAAaolB,gBAC/B93F,EAAQ0yE,EAAa1yE,MACrB+3F,EAA+BrlB,EAAaqlB,6BAC9C,YAA+B,IAApBD,EACFA,EAEF93F,EAAQ+3F,CACjB,GACC,CACDhwH,IAAK,SACL1+B,MAAO,WACL,IAAIwqI,EAAe3sI,KAAKqX,MACtBooD,EAAYktE,EAAaltE,UACzB7rD,EAAY+4H,EAAa/4H,UACzB9H,EAAQ6gI,EAAa7gI,MACrB4zD,EAAWitE,EAAajtE,SACxBoxF,EAAmBnkB,EAAamkB,iBAChCh4F,EAAQ6zE,EAAa7zE,MACrB+I,EAAS8qE,EAAa9qE,OACtBqsF,EAAkBvhB,EAAauhB,gBAC/BL,EAAgBlhB,EAAakhB,cAC7BL,EAAY7gB,EAAa6gB,UACzBuD,EAAYpkB,EAAaokB,UACzBC,EAASrkB,EAAaqkB,OACtBx3C,EAAamzB,EAAanzB,WAC1By3C,EAAsBtkB,EAAaskB,oBACnCC,EAAevkB,EAAaukB,aAC5BC,EAAexkB,EAAawkB,aAC5BxE,EAAuBhgB,EAAaggB,qBACpCC,EAAkBjgB,EAAaigB,gBAC/BF,EAAkB/f,EAAa+f,gBAC7B0E,EAAepxJ,KAAKujD,MACtB97C,EAAU2pJ,EAAa3pJ,QACvBglJ,EAAW2E,EAAa3E,SACxB4B,EAAoB+C,EAAa/C,kBAEnC,IAAyB,IAArByC,GAA6Bh4F,GAAS2zF,EACxC,OAAO,KAET,IAAIkE,EAAWjD,QAAcj3H,EAAWz2B,KAAKujD,MAAOvjD,KAAKqX,OACrDg6I,EAAY,GACZvC,EAAW,KACXC,EAAW,KACXuC,EAAa,KACbC,EAAY,KACZvE,EAAa,KACbX,EAAW6B,GAAmBA,EAAgB7B,SAC9CmF,EAAiB3D,EAAgB,EAAI,EACrC4B,EAAWhoJ,EAAU,EAAI,EAAIA,EAAU,EAAI,EAC3CsoJ,EAAWtoJ,EAAU,EAAIkpJ,EAAWlpJ,EAAU,EAAIkpJ,EAClDc,EAA2Bx5F,GAAUj4D,KAAKqX,MAAO,CACnD+gD,MAAM,EACN1yC,MAAM,IAEJgsI,EAAYX,GAA0B,gBAAoB,KAAM,CAClEn9I,UAAW,GAAGL,OAAOksD,EAAW,gBAC/BsxF,EAAUj4F,EAAO,CAAW,IAAVA,EAAc,GAAKrxD,EAAU,GAAKglJ,EAAW,EAAGhlJ,EAAUglJ,EAAW3zF,EAAQA,EAAQrxD,EAAUglJ,KACpH,GAAIuE,EAmBF,OAlBI3E,IAEAW,EADsB,kBAAbX,EACiB,gBAAoB,SAAU,CACtD1jJ,KAAM,SACNk0D,QAAS78D,KAAKuvJ,WACdjC,QAASttJ,KAAKuvJ,YACb1tF,EAAOT,iBAEgB,gBAAoB,OAAQ,CACpDvE,QAAS78D,KAAKuvJ,WACdjC,QAASttJ,KAAKuvJ,YACblD,GAELW,EAA0B,gBAAoB,KAAM,CAClDj7F,MAAOy7F,EAAY,GAAGj6I,OAAOsuD,EAAOV,SAAS5tD,OAAO9L,EAAS,KAAK8L,OAAOo9I,GAAY,KACrF/8I,UAAW,GAAGL,OAAOksD,EAAW,kBAC/ButF,IAEe,gBAAoB,MAAM,OAAS,CACrDp5I,UAAW,IAAW6rD,EAAW,GAAGlsD,OAAOksD,EAAW,YAAY,OAAgB,CAAC,EAAG,GAAGlsD,OAAOksD,EAAW,aAAcC,GAAW9rD,GACpI9H,MAAOA,EACPsmD,IAAKpyD,KAAK2tJ,gBACT8D,GAA2BC,EAAwB,gBAAoB,KAAM,CAC9E3/F,MAAOy7F,EAAY3rF,EAAOP,UAAY,KACtCzE,QAAS78D,KAAKs1B,KACd8qC,SAAUpgE,KAAK4uJ,UAAY,EAAI,KAC/BnB,WAAYztJ,KAAKmvJ,eACjBv7I,UAAW,IAAW,GAAGL,OAAOksD,EAAW,UAAU,OAAgB,CAAC,EAAG,GAAGlsD,OAAOksD,EAAW,cAAez/D,KAAK4uJ,YAClH,iBAAkB5uJ,KAAK4uJ,WACtB5uJ,KAAKwvJ,WAAWC,IAAyB,gBAAoB,KAAM,CACpE19F,MAAOy7F,EAAY,GAAGj6I,OAAO9L,EAAS,KAAK8L,OAAOo9I,GAAY,KAC9D/8I,UAAW,GAAGL,OAAOksD,EAAW,kBAClB,gBAAoB,QAAS,CAC3C92D,KAAM,OACNxG,MAAOksJ,EACP3uF,SAAUA,EACVvC,UAAWn9D,KAAKmuJ,cAChBb,QAASttJ,KAAKouJ,YACd5xF,SAAUx8D,KAAKouJ,YACfb,OAAQvtJ,KAAKosJ,WACb9nH,KAAM,IACS,gBAAoB,OAAQ,CAC3C1wB,UAAW,GAAGL,OAAOksD,EAAW,WAC/B,KAAMkxF,GAAwB,gBAAoB,KAAM,CACzD5+F,MAAOy7F,EAAY3rF,EAAON,UAAY,KACtC1E,QAAS78D,KAAKu1B,KACd6qC,SAAUpgE,KAAK4uJ,UAAY,EAAI,KAC/BnB,WAAYztJ,KAAKovJ,eACjBx7I,UAAW,IAAW,GAAGL,OAAOksD,EAAW,UAAU,OAAgB,CAAC,EAAG,GAAGlsD,OAAOksD,EAAW,cAAez/D,KAAK6uJ,YAClH,iBAAkB7uJ,KAAK6uJ,WACtB7uJ,KAAK8vJ,WAAWC,IAAY/C,GAEjC,GAAI2D,GAAY,EAAqB,EAAjBa,EAAoB,CACtC,IAAIG,EAAa,CACf9vF,OAAQA,EACRkxC,cAAetzC,EACf5C,QAAS78D,KAAKmsJ,aACdsB,WAAYztJ,KAAKgvJ,WACjBxB,UAAWA,EACXh0C,WAAYA,GAETm3C,GACHU,EAAU9wJ,KAAmB,gBAAoB,IAAO,OAAS,CAAC,EAAGoxJ,EAAY,CAC/E9wH,IAAK,UACLwgC,KAAM,EACNztD,UAAW,GAAGL,OAAOksD,EAAW,sBAGpC,IAAK,IAAIv+D,EAAI,EAAGA,GAAKyvJ,EAAUzvJ,GAAK,EAAG,CACrC,IAAIq1H,EAAS9uH,IAAYvG,EACzBmwJ,EAAU9wJ,KAAmB,gBAAoB,IAAO,OAAS,CAAC,EAAGoxJ,EAAY,CAC/E9wH,IAAK3/B,EACLmgE,KAAMngE,EACNq1H,OAAQA,KAEZ,CACF,KAAO,CACL,IAAIq7B,EAAgB/D,EAAgBhsF,EAAOH,OAASG,EAAOL,OACvDqwF,EAAgBhE,EAAgBhsF,EAAOF,OAASE,EAAOJ,OACvDwvF,IACFnC,EAAwB,gBAAoB,KAAM,CAChD/8F,MAAOy7F,EAAYoE,EAAgB,KACnC/wH,IAAK,OACLg8B,QAAS78D,KAAK8uJ,SACd1uF,SAAU,EACVqtF,WAAYztJ,KAAKqvJ,mBACjBz7I,UAAW,IAAW,GAAGL,OAAOksD,EAAW,eAAe,OAAgB,CAAC,EAAG,GAAGlsD,OAAOksD,EAAW,4BAA6ByxF,KAC/H13C,EAAWx5G,KAAK4tJ,kBAAmB,YAAa5tJ,KAAK+tJ,YAAYmD,EAAc,eAClFnC,EAAwB,gBAAoB,KAAM,CAChDh9F,MAAOy7F,EAAYqE,EAAgB,KACnChxH,IAAK,OACLu/B,SAAU,EACVvD,QAAS78D,KAAK+uJ,SACdtB,WAAYztJ,KAAKsvJ,mBACjB17I,UAAW,IAAW,GAAGL,OAAOksD,EAAW,eAAe,OAAgB,CAAC,EAAG,GAAGlsD,OAAOksD,EAAW,4BAA6B0xF,KAC/H33C,EAAWx5G,KAAK8tJ,kBAAmB,YAAa9tJ,KAAK+tJ,YAAYoD,EAAc,gBAEpFI,EAAyB,gBAAoB,GAAO,CAClD1vF,OAAQA,EACRviC,MAAM,EACNyzE,cAAetzC,EACf5C,QAAS78D,KAAKmsJ,aACdsB,WAAYztJ,KAAKgvJ,WACjBnuH,IAAK8vH,EACLtvF,KAAMsvF,EACNp6B,QAAQ,EACRi3B,UAAWA,EACXh0C,WAAYA,IAEd83C,EAA0B,gBAAoB,GAAO,CACnDzvF,OAAQA,EACRkxC,cAAetzC,EACf5C,QAAS78D,KAAKmsJ,aACdsB,WAAYztJ,KAAKgvJ,WACjBnuH,IAAK,EACLwgC,KAAM,EACNk1D,QAAQ,EACRi3B,UAAWA,EACXh0C,WAAYA,IAEd,IAAIxqG,EAAOiL,KAAKE,IAAI,EAAG1S,EAAU+pJ,GAC7B7+I,EAAQsH,KAAKC,IAAIzS,EAAU+pJ,EAAgBb,GAC3ClpJ,EAAU,GAAK+pJ,IACjB7+I,EAAQ,EAAqB,EAAjB6+I,GAEVb,EAAWlpJ,GAAW+pJ,IACxBxiJ,EAAO2hJ,EAA4B,EAAjBa,GAEpB,IAAK,IAAI7wJ,EAAKqO,EAAMrO,GAAMgS,EAAOhS,GAAM,EAAG,CACxC,IAAImxJ,EAAUrqJ,IAAY9G,EAC1B0wJ,EAAU9wJ,KAAmB,gBAAoB,GAAO,CACtDshE,OAAQA,EACRkxC,cAAetzC,EACf5C,QAAS78D,KAAKmsJ,aACdsB,WAAYztJ,KAAKgvJ,WACjBnuH,IAAKlgC,EACL0gE,KAAM1gE,EACN41H,OAAQu7B,EACRtE,UAAWA,EACXh0C,WAAYA,IAEhB,CACI/xG,EAAU,GAAsB,EAAjB+pJ,GAAkC,IAAZ/pJ,IACvC4pJ,EAAU,IAAkB,IAAAxB,cAAawB,EAAU,GAAI,CACrDz9I,UAAW,GAAGL,OAAOksD,EAAW,2BAElC4xF,EAAU17I,QAAQm5I,IAEhB6B,EAAWlpJ,GAA4B,EAAjB+pJ,GAAsB/pJ,IAAYkpJ,EAAW,IACrEU,EAAUA,EAAUxwJ,OAAS,IAAkB,IAAAgvJ,cAAawB,EAAUA,EAAUxwJ,OAAS,GAAI,CAC3F+S,UAAW,GAAGL,OAAOksD,EAAW,4BAElC4xF,EAAU9wJ,KAAKwuJ,IAEJ,IAAT//I,GACFqiJ,EAAU17I,QAAQ27I,GAEhB3+I,IAAUg+I,GACZU,EAAU9wJ,KAAKgxJ,EAEnB,CACA,IAAIQ,GAAgB/xJ,KAAK4uJ,YAAc+B,EACnCqB,GAAgBhyJ,KAAK6uJ,YAAc8B,EACvC,OAAoB,gBAAoB,MAAM,OAAS,CACrD/8I,UAAW,IAAW6rD,EAAW7rD,GAAW,OAAgB,CAAC,EAAG,GAAGL,OAAOksD,EAAW,aAAcC,IACnG5zD,MAAOA,EACPsmD,IAAKpyD,KAAK2tJ,gBACT8D,GAA2BC,EAAwB,gBAAoB,KAAM,CAC9E3/F,MAAOy7F,EAAY3rF,EAAOP,UAAY,KACtCzE,QAAS78D,KAAKs1B,KACd8qC,SAAU2xF,EAAe,KAAO,EAChCtE,WAAYztJ,KAAKmvJ,eACjBv7I,UAAW,IAAW,GAAGL,OAAOksD,EAAW,UAAU,OAAgB,CAAC,EAAG,GAAGlsD,OAAOksD,EAAW,aAAcsyF,IAC5G,gBAAiBA,GAChB/xJ,KAAKwvJ,WAAWC,IAAY4B,EAAwB,gBAAoB,KAAM,CAC/Et/F,MAAOy7F,EAAY3rF,EAAON,UAAY,KACtC1E,QAAS78D,KAAKu1B,KACd6qC,SAAU4xF,EAAe,KAAO,EAChCvE,WAAYztJ,KAAKovJ,eACjBx7I,UAAW,IAAW,GAAGL,OAAOksD,EAAW,UAAU,OAAgB,CAAC,EAAG,GAAGlsD,OAAOksD,EAAW,aAAcuyF,IAC5G,gBAAiBA,GAChBhyJ,KAAK8vJ,WAAWC,IAAyB,gBAAoB,GAAS,CACvErwF,SAAUA,EACVmC,OAAQA,EACRkxC,cAAetzC,EACfktF,qBAAsBA,EACtBC,gBAAiBA,EACjB3+I,WAAYjO,KAAKiyJ,qBAAuBjyJ,KAAKsuJ,eAAiB,KAC9D7mJ,QAASA,EACTglJ,SAAUA,EACVC,gBAAiBA,EACjBJ,QAAStsJ,KAAKiuJ,2BAA6BjuJ,KAAKmsJ,aAAe,KAC/DE,SAAUA,IAEd,IACE,CAAC,CACHxrH,IAAK,2BACL1+B,MAAO,SAAkCkV,EAAOk5I,GAC9C,IAAI2B,EAAW,CAAC,EAOhB,GANI,YAAa76I,IACf66I,EAASzqJ,QAAU4P,EAAM5P,QACrB4P,EAAM5P,UAAY8oJ,EAAU9oJ,UAC9ByqJ,EAAS7D,kBAAoB6D,EAASzqJ,UAGtC,aAAc4P,GAASA,EAAMo1I,WAAa8D,EAAU9D,SAAU,CAChE,IAAIhlJ,EAAU8oJ,EAAU9oJ,QACpB8mJ,EAAab,GAAcr2I,EAAMo1I,SAAU8D,EAAWl5I,GAC1D5P,EAAUA,EAAU8mJ,EAAaA,EAAa9mJ,EACxC,YAAa4P,IACjB66I,EAASzqJ,QAAUA,EACnByqJ,EAAS7D,kBAAoB5mJ,GAE/ByqJ,EAASzF,SAAWp1I,EAAMo1I,QAC5B,CACA,OAAOyF,CACT,KAEK/tF,CACT,CAjhB8B,CAihB5B,aACFA,GAAWxD,aAAe,CACxByvF,eAAgB,EAChBt3F,MAAO,EACPw3F,gBAAiB,GACjB9zF,SAAU,GACV5oD,UAAW,GACXg5I,gBAAiB,YACjBntF,UAAW,gBACXktF,qBAAsB,KACtBmE,kBAAkB,EAClBG,qBAAqB,EACrB/C,iBAAiB,EACjBL,eAAe,EACfL,WAAW,EACXgB,iBAAkB,GAClB3sF,OC9jBF,CAEEX,eAAgB,MAChBC,QAAS,KACTC,gBAAiB,KACjBC,KAAM,IAENC,UAAW,MACXC,UAAW,MACXC,OAAQ,SACRC,OAAQ,SACRC,OAAQ,SACRC,OAAQ,SACRC,UAAW,MDkjBX91D,MAAO,CAAC,EACR0tG,WA1iBsB,SAA2Bn4C,EAAM14D,EAAMgH,GAC7D,OAAOA,CACT,EAyiBEkhJ,6BAA8B,IAEhC,UE7jBWsB,GAAiC,gBAAoB,MCEjD,SAASC,KACtB,IAAIrsJ,EAAWnF,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,IAC/EulG,EAAU,SAAa,MACvBksD,EAAa,SAAa,MAiB9B,OAdA,aAAgB,WACd,OAAO,WACLnvJ,OAAOyB,aAAa0tJ,EAAW5qJ,QACjC,CACF,GAAG,IAUI,CAAC,WACN,OAAO0+F,EAAQ1+F,OACjB,EAXA,SAAgB6qJ,IACVA,GAA8B,OAApBnsD,EAAQ1+F,WACpB0+F,EAAQ1+F,QAAU6qJ,GAEpBpvJ,OAAOyB,aAAa0tJ,EAAW5qJ,SAC/B4qJ,EAAW5qJ,QAAUvE,OAAOI,YAAW,WACrC6iG,EAAQ1+F,QAAU,IACpB,GAAG1B,EACL,EAIF,CC5BA,IAAI,GAAY,CAAC,YAAa,aAAc,OAAQ,aAAc,aAAc,qBAAsB,eAAgB,UAAW,YAAa,QAAS,WAAY,UAAW,QAAS,aAKnLwsJ,QAAY97H,EAChB,SAAS+7H,GAAan7I,EAAO+6C,GAC3B,IAAIqN,EAAYpoD,EAAMooD,UACpBgzF,EAAap7I,EAAMo7I,WACnBh7I,EAAOJ,EAAMI,KACbi7I,EAAar7I,EAAMq7I,WACnBC,EAAat7I,EAAMs7I,WACnBC,EAAqBv7I,EAAMu7I,mBAC3BC,EAAex7I,EAAMw7I,aACrBC,EAAUz7I,EAAMy7I,QAChBl/I,EAAYyD,EAAMzD,UAClB9H,EAAQuL,EAAMvL,MACd+D,EAAWwH,EAAMxH,SACjBw7C,EAAUh0C,EAAMg0C,QAChB/N,EAAQjmC,EAAMimC,MACdy1G,EAAmB17I,EAAMmoD,UACzBc,OAAiC,IAArByyF,EAA8B,MAAQA,EAClD7uE,GAAY,QAAyB7sE,EAAO,IAC1C27I,EAAeL,IAAetnG,EAElC,SAAS4nG,EAAqBllJ,GAC5B8kJ,EAAaC,EAAS/kJ,EACxB,CACA,aAAgB,WACd,OAAO,WACLklJ,EAAqB,KACvB,CACF,GAAG,IAEH,IACIC,EADA38D,EAAYm8D,GAAcj7I,IAAS86I,GAAYG,EAAWj7I,GAAQ5H,EAEjE4iJ,IACHS,EAAgB,CACdv+I,QAASq+I,EAAe,EAAI,EAC5BhlJ,OAAQglJ,EAAe,EAAIT,GAC3BjhE,UAAW0hE,EAAe,SAAWT,GACrCj1G,MAAOq1G,EAAar1G,EAAQi1G,GAC5BhnG,cAAeynG,EAAe,OAAST,GACvCpnG,SAAU6nG,EAAe,WAAaT,KAG1C,IAAIY,EAAgB,CAAC,EACjBH,IACFG,EAAc,gBAAiB,GAEjC,IAAIC,EAAwB,gBAAoB9yF,GAAW,OAAS,CAClE1sD,UAAW,KAAY6+I,GAAchzF,EAAW7rD,GAChD9H,OAAO,SAAc,QAAc,CAAC,EAAGonJ,GAAgBpnJ,IACtDqnJ,EAAejvE,EAAW,CAC3B9xB,IAAKA,IACHmkC,GAUJ,OATIo8D,IACFS,EAAwB,gBAAoB,GAAgB,CAC1D5jE,SAAU,SAAkB39B,GAE1BohG,EADkBphG,EAAKgd,YAEzB,EACAnP,SAAUkzF,GACTQ,IAEEA,CACT,CACA,IAAIC,GAAoB,aAAiBb,IACzCa,GAAKh9F,YAAc,OACnB,UChEO,SAASi9F,KAEd,IAAIC,EAAgB,SAAa,MAgBjC,OAdyB,SAA4BlzJ,GAC9CkzJ,EAAc9rJ,UACjB8rJ,EAAc9rJ,QAAU,GCbf,SAAuBpH,GACpC,GAA8B,oBAAnBmzJ,gBACT,EAAApkF,GAAA,GAAI/uE,OACC,CACL,IAAIozJ,EAAU,IAAID,eAClBC,EAAQC,MAAMC,UAAY,WACxB,OAAOtzJ,GACT,EACAozJ,EAAQG,MAAMC,iBAAYp9H,EAC5B,CACF,CDIMq9H,EAAc,YACZ,KAAAC,0BAAwB,WACtBR,EAAc9rJ,QAAQW,SAAQ,SAAUiL,GACtCA,GACF,IACAkgJ,EAAc9rJ,QAAU,IAC1B,GACF,KAEF8rJ,EAAc9rJ,QAAQlH,KAAKF,EAC7B,CAEF,CAIe,SAAS2zJ,GAAeC,EAAoBjvH,GAEzD,IAAIwnC,EAAkB,WAAexnC,GACnCynC,GAAmB,QAAeD,EAAiB,GACnD0nF,EAAaznF,EAAiB,GAC9B0nF,EAAgB1nF,EAAiB,GAOnC,MAAO,CAACynF,GALW,EAAAnjF,GAAA,IAAS,SAAUk4D,GACpCgrB,GAAmB,WACjBE,EAAclrB,EAChB,GACF,IAEF,CE3CO,IAAImrB,GAA+B,gBAAoB,MCC1D,GAAY,CAAC,aACfC,GAAa,CAAC,aACdC,GAAa,CAAC,aAKZC,GAAkB,SAAyBl9I,EAAO+6C,GACpD,IAAIj/B,EAAU,aAAiBihI,IAE/B,IAAKjhI,EAAS,CACZ,IAAI4/H,EAAmB17I,EAAMmoD,UAC3Bc,OAAiC,IAArByyF,EAA8B,MAAQA,EAClDyB,GAAa,QAAyBn9I,EAAO,IAC/C,OAAoB,gBAAoBipD,GAAW,OAAS,CAAC,EAAGk0F,EAAY,CAC1EpiG,IAAKA,IAET,CACA,IAAIqiG,EAAmBthI,EAAQvf,UAC7B8gJ,GAAc,QAAyBvhI,EAASkhI,IAC9CzgJ,EAAYyD,EAAMzD,UACpBswE,GAAY,QAAyB7sE,EAAOi9I,IAE9C,OAAoB,gBAAoBF,GAAgBpzF,SAAU,CAChE7+D,MAAO,MACO,gBAAoB,IAAM,OAAS,CACjDiwD,IAAKA,EACLx+C,UAAW,IAAW6gJ,EAAkB7gJ,IACvC8gJ,EAAaxwE,IAClB,EACIywE,GAAuB,aAAiBJ,IAC5CI,GAAQt+F,YAAc,UACtB,UC9BI,GAAY,CAAC,YAAa,OAAQ,aAAc,gBAAiB,UAAW,YAAa,MAAO,QAAS,YAAa,WAAY,aAAc,gBAAiB,SAAU,YAAa,gBAAiB,mBAUzMu+F,GAAa,aACbC,GAAa,aAEjB,SAASC,GAAkBC,GACzB,MAAO,KAAKxhJ,OAAOwhJ,EAAal0J,OAAQ,OAC1C,CACA,SAASm0J,GAAS39I,EAAO+6C,GACvB,IAAI8lC,EAAmB7gF,EAAMooD,UAC3BA,OAAiC,IAArBy4B,EAA8B,cAAgBA,EAC1DkpB,EAAc/pG,EAAMqO,KACpBA,OAAuB,IAAhB07F,EAAyB,GAAKA,EACrCsxC,EAAar7I,EAAMq7I,WACnBuC,EAAgB59I,EAAM49I,cACtBnC,EAAUz7I,EAAMy7I,QAChBoC,EAAmB79I,EAAM89I,UACzBA,OAAiC,IAArBD,EAA8B,GAAKA,EAC/CE,EAAM/9I,EAAM+9I,IACZtpJ,EAAQuL,EAAMvL,MACd8H,EAAYyD,EAAMzD,UAClButG,EAAW9pG,EAAM8pG,SACjBk0C,EAAah+I,EAAMg+I,WACnBC,EAAgBj+I,EAAMi+I,cACtBC,EAASl+I,EAAMk+I,OACfxC,EAAmB17I,EAAMmoD,UACzBc,OAAiC,IAArByyF,EAA8B,MAAQA,EAClDyC,EAAgBn+I,EAAMm+I,cACtB1sD,EAAkBzxF,EAAMyxF,gBACxB5kB,GAAY,QAAyB7sE,EAAO,IAC1Co+I,EAAmB,SAARL,EACXnB,EAAqBX,KACrBoC,EAAkB1B,GAAeC,EAAoB,MACvD0B,GAAmB,QAAeD,EAAiB,GACnDE,EAAiBD,EAAiB,GAClCE,EAAoBF,EAAiB,GACnCG,EAAuBF,GAAkB,EACzCG,EAAmB/B,GAAeC,EAAoB,IAAIl1I,KAC5Di3I,GAAmB,QAAeD,EAAkB,GACpDE,EAAaD,EAAiB,GAC9BE,EAAgBF,EAAiB,GAC/BG,EAAmBnC,GAAeC,EAAoB,GACxDmC,GAAmB,QAAeD,EAAkB,GACpDE,EAAgBD,EAAiB,GACjCE,EAAmBF,EAAiB,GAClCG,EAAmBvC,GAAeC,EAAoB,GACxDuC,GAAmB,QAAeD,EAAkB,GACpDE,EAAYD,EAAiB,GAC7BE,EAAeF,EAAiB,GAC9BG,EAAmB3C,GAAeC,EAAoB,GACxD2C,GAAoB,QAAeD,EAAkB,GACrDE,EAAcD,EAAkB,GAChCE,EAAiBF,EAAkB,GACjCv5E,GAAY,IAAAC,UAAS,MACvBC,GAAa,QAAeF,EAAW,GACvC05E,EAAmBx5E,EAAW,GAC9By5E,EAAsBz5E,EAAW,GAC/BG,GAAa,IAAAJ,UAAS,MACxBK,IAAa,QAAeD,EAAY,GACxCu5E,GAAet5E,GAAW,GAC1Bu5E,GAAkBv5E,GAAW,GAC3Bw5E,GAAqB,WAAc,WACrC,OAAqB,OAAjBF,IAAyBxB,EACpBxzI,OAAOm1I,iBAETH,IAAgB,CACzB,GAAG,CAACA,GAAcrB,IACdyB,IAAa,IAAA/5E,WAAS,GACxBg6E,IAAa,QAAeD,GAAY,GACxCE,GAAYD,GAAW,GACvBE,GAAeF,GAAW,GACxBG,GAAgB,GAAGlkJ,OAAOksD,EAAW,SAErCi4F,GAAkBz9I,KAAKE,IAAIk8I,EAAeI,GAE1CkB,GAAex2C,IAAayzC,GAC5BgD,GAAmBlyI,EAAK7kB,QAAU82J,GAClClF,GAAatxC,IAAa0zC,GAI1BgD,GAAWD,IAAwC,iBAAbz2C,GAAyBz7F,EAAK7kB,OAASsgH,EAC7E9iD,IAAa,IAAA8e,UAAQ,WACvB,IAAIh3B,EAAQzgC,EAUZ,OATIkyI,GAEAzxG,EADqB,OAAnByvG,GAA2BH,EACrB/vI,EAEAA,EAAKsB,MAAM,EAAG/M,KAAKC,IAAIwL,EAAK7kB,OAAQi1J,EAAuBX,IAExC,iBAAbh0C,IAChBh7D,EAAQzgC,EAAKsB,MAAM,EAAGm6F,IAEjBh7D,CACT,GAAG,CAACzgC,EAAMyvI,EAAWS,EAAgBz0C,EAAUy2C,KAC3C7C,IAAe,IAAA53E,UAAQ,WACzB,OAAIy6E,GACKlyI,EAAKsB,MAAMmwI,GAAqB,GAElCzxI,EAAKsB,MAAMq3C,GAAWx9D,OAC/B,GAAG,CAAC6kB,EAAM24C,GAAYu5F,GAAkBT,KAEpCtpB,IAAS,IAAAiqB,cAAY,SAAUrgJ,EAAMzP,GACvC,IAAI6pD,EACJ,MAAuB,mBAAZihG,EACFA,EAAQr7I,GAE0E,QAAnFo6C,EAAOihG,IAAYr7I,aAAmC,EAASA,EAAKq7I,WAAgC,IAATjhG,EAAkBA,EAAO7pD,CAC9H,GAAG,CAAC8qJ,IACAiF,IAAmB,IAAAD,aAAYpF,GAAc,SAAUj7I,GACzD,OAAOA,CACT,EAAG,CAACi7I,IACJ,SAASsF,GAAmBlnI,EAAOmnI,EAAqBC,IAIlDjB,KAAiBnmI,QAAkC2F,IAAxBwhI,GAAqCA,IAAwBlB,KAG5FG,GAAgBpmI,GACXonI,IACHV,GAAa1mI,EAAQpL,EAAK7kB,OAAS,GACnCioG,SAAkEA,EAAgBh4E,SAExD2F,IAAxBwhI,GACFjB,EAAoBiB,GAExB,CAKA,SAASpF,GAAahyH,EAAK9yB,GACzBmoJ,GAAc,SAAUr4F,GACtB,IAAItnD,EAAQ,IAAIwI,IAAI8+C,GAMpB,OALc,OAAV9vD,EACFwI,EAAM8vB,OAAOxF,GAEbtqB,EAAMrU,IAAI2+B,EAAK9yB,GAEVwI,CACT,GACF,CASA,SAAS4hJ,GAAanwJ,GACpB,OAAOiuJ,EAAWj0J,IAAI6rI,GAAOxvE,GAAWr2D,GAAQA,GAClD,EACA,EAAAi+E,GAAA,IAAgB,WACd,GAAI6vE,GAAmD,iBAApB4B,IAAgCr5F,GAAY,CAC7E,IAAI+5F,EAAavB,EACbr8H,EAAM6jC,GAAWx9D,OACjB+mC,EAAYpN,EAAM,EAEtB,IAAKA,EAEH,YADAw9H,GAAmB,EAAG,MAGxB,IAAK,IAAI92J,EAAI,EAAGA,EAAIs5B,EAAKt5B,GAAK,EAAG,CAC/B,IAAIm3J,EAAmBF,GAAaj3J,GAMpC,GAJIu0J,IACF4C,EAAmBA,GAAoB,QAGhB5hI,IAArB4hI,EAAgC,CAClCL,GAAmB92J,EAAI,OAAGu1B,GAAW,GACrC,KACF,CAGA,GADA2hI,GAAcC,EAGA,IAAdzwH,GAAmBwwH,GAActC,GAEjC50J,IAAM0mC,EAAY,GAAKwwH,EAAaD,GAAavwH,IAAckuH,EAAsB,CAEnFkC,GAAmBpwH,EAAW,MAC9B,KACF,CAAO,GAAIwwH,EAAaV,GAAkB5B,EAAsB,CAE9DkC,GAAmB92J,EAAI,EAAGk3J,EAAaC,EAAmBxB,EAAcJ,GACxE,KACF,CACF,CACIlB,GAAU4C,GAAa,GAAKtB,EAAcf,GAC5CkB,EAAoB,KAExB,CACF,GAAG,CAAClB,EAAsBG,EAAYQ,EAAWI,EAAahpB,GAAQxvE,KAEtE,IAAIi6F,GAAcf,MAAexC,GAAal0J,OAC1C03J,GAAc,CAAC,EACM,OAArBxB,GAA6Ba,KAC/BW,GAAc,CACZptG,SAAU,WACVn8C,KAAM+nJ,EACN9nJ,IAAK,IAGT,IAgCIupJ,GAhCAC,GAAkB,CACpBh5F,UAAWg4F,GACX9E,WAAYiF,GACZp4F,UAAWg2F,EACX/C,WAAYA,IAGViG,GAAyBzD,EAAgB,SAAUx9I,EAAMzP,GAC3D,IAAI64B,EAAMgtG,GAAOp2H,EAAMzP,GACvB,OAAoB,gBAAoBosJ,GAAgBpzF,SAAU,CAChEngC,IAAKA,EACL1+B,OAAO,SAAc,QAAc,CAAC,EAAGs2J,IAAkB,CAAC,EAAG,CAC3Dn7G,MAAOt1C,EACPyP,KAAMA,EACNq7I,QAASjyH,EACTgyH,aAAcA,GACdxnG,QAASrjD,GAASmvJ,MAEnBlC,EAAcx9I,EAAMzP,GACzB,EAAI,SAAUyP,EAAMzP,GAClB,IAAI64B,EAAMgtG,GAAOp2H,EAAMzP,GACvB,OAAoB,gBAAoB,IAAM,OAAS,CAAC,EAAGywJ,GAAiB,CAC1En7G,MAAOt1C,EACP64B,IAAKA,EACLppB,KAAMA,EACNi7I,WAAYqF,GACZjF,QAASjyH,EACTgyH,aAAcA,GACdxnG,QAASrjD,GAASmvJ,KAEtB,EAGIwB,GAAmB,CACrBr7G,MAAOg7G,GAAcnB,GAAqBl1I,OAAOm1I,iBACjDxjJ,UAAW,GAAGL,OAAOkkJ,GAAe,SACpC5E,aAnGF,SAA8BnsH,EAAG34B,GAC/B2oJ,EAAa3oJ,GACbuoJ,EAAiBG,EACnB,EAiGEprG,QAASitG,IAEX,GAAKhD,EAGMA,IACTkD,GAAwB,gBAAoBpE,GAAgBpzF,SAAU,CACpE7+D,OAAO,SAAc,QAAc,CAAC,EAAGs2J,IAAkBE,KACxDrD,EAAcP,UANC,CAClB,IAAI6D,GAAmBvD,GAAcP,GACrC0D,GAAwB,gBAAoB,IAAM,OAAS,CAAC,EAAGC,GAAiBE,IAA+C,mBAArBC,GAAkCA,GAAiB7D,IAAgB6D,GAC/K,CAKA,IAAIC,GAA4B,gBAAoBv4F,GAAW,OAAS,CACtE1sD,UAAW,KAAY6+I,IAAchzF,EAAW7rD,GAChD9H,MAAOA,EACPsmD,IAAKA,GACJ8xB,GAAY7lB,GAAWrtC,IAAI0nI,IAAyBb,GAAWW,GAAW,KAAMjD,GAAuB,gBAAoB,IAAM,OAAS,CAAC,EAAGkD,GAAiB,CAChK9F,WAAYgF,GACZ/E,oBAAqBgF,GACrBt6G,MAAO65G,GACPvjJ,UAAW,GAAGL,OAAOkkJ,GAAe,WACpC5E,aAnHF,SAA4BnsH,EAAG34B,GAC7B+oJ,EAAe/oJ,EACjB,EAkHEs9C,SAAS,EACTv/C,MAAOysJ,KACLhD,IAOJ,OANIoC,KACFkB,GAA4B,gBAAoB,GAAgB,CAC9DrpE,SA3IJ,SAA0B9oD,EAAG/2B,GAC3BkmJ,EAAkBlmJ,EAAQg2E,YAC5B,EA0IIjmB,UAAWk4F,IACViB,KAEEA,EACT,CACA,IAAIC,GAA+B,aAAiB9D,IACpD8D,GAAgBziG,YAAc,WAC9ByiG,GAAgBzF,KAAO,GACvByF,GAAgBlE,WAAaA,GAC7BkE,GAAgBjE,WAAaA,GAE7B,ICnSA,GDmSA,GEhQA,GAlCe,SAAkBhjG,GAC/B,IAMIqV,EANAtzD,EAAYi+C,EAAKj+C,UACnBmlJ,EAAgBlnG,EAAKknG,cACrBC,EAAqBnnG,EAAKmnG,mBAC1BC,EAAepnG,EAAK4nE,YACpB58D,EAAUhL,EAAKgL,QACfhtD,EAAWgiD,EAAKhiD,SAOlB,OAJEq3D,EAD2B,mBAAlB6xF,EACFA,EAAcC,GAEdD,EAEW,gBAAoB,OAAQ,CAC9CnlJ,UAAWA,EACX6lH,YAAa,SAAqB1uH,GAChCA,EAAM0B,iBACFwsJ,GACFA,EAAaluJ,EAEjB,EACAe,MAAO,CACL0qE,WAAY,OACZ0iF,iBAAkB,QAEpBC,aAAc,KACdt8F,QAASA,EACT,eAAe,QACLpmC,IAATywC,EAAqBA,EAAoB,gBAAoB,OAAQ,CACtEtzD,UAAW,IAAWA,EAAU0V,MAAM,OAAO0H,KAAI,SAAU+uC,GACzD,MAAO,GAAGxsD,OAAOwsD,EAAK,QACxB,MACClwD,GACL,EC9BI,GAAQ,SAAegiD,EAAMO,GAC/B,IAAIgnG,EAAaC,EACb55F,EAAY5N,EAAK4N,UACnB/rD,EAAKm+C,EAAKn+C,GACV4lJ,EAAeznG,EAAKynG,aACpB55F,EAAW7N,EAAK6N,SAChBU,EAAWvO,EAAKuO,SAChBk4D,EAAYzmE,EAAKymE,UACjBihC,EAAe1nG,EAAK0nG,aACpBC,EAAW3nG,EAAK2nG,SAChBC,EAAqB5nG,EAAK4nG,mBAC1Bt3J,EAAQ0vD,EAAK1vD,MACb2jD,EAAY+L,EAAK/L,UACjB4zG,EAAa7nG,EAAKsL,UAClB87F,EAAepnG,EAAK4nE,YACpBkgC,EAAY9nG,EAAK2K,SACjBo9F,EAAU/nG,EAAK+nG,QACfC,EAAsBhoG,EAAKioG,mBAC3BC,EAAoBloG,EAAKmoG,iBACzBlgG,EAAOjI,EAAKiI,KACZxzD,EAAQurD,EAAKvrD,MACX2zJ,EAAYX,GAA6B,gBAAoB,QAAS,MACtEY,EAAaD,EACf/qE,EAAYgrE,EAAW9nG,IACvB+nG,EAAcD,EAAW7iJ,MACvB+iJ,EAAkBD,EAAYh9F,UAChCk9F,EAAiBF,EAAY39F,SAC7B89F,EAAoBH,EAAY1gC,YAChC8gC,EAA2BJ,EAAYL,mBACvCU,EAAyBL,EAAYH,iBACrCluJ,EAAQquJ,EAAYruJ,MA6DtB,OA5DA,WAAU,cAAemuJ,EAAU5iJ,OAAQ,yGAC3C4iJ,EAAyB,eAAmBA,GAAW,SAAc,SAAc,QAAc,CAC/FtxJ,KAAM,UACLwxJ,GAAc,CAAC,EAAG,CAEnBzmJ,GAAIA,EACJ0+C,KAAK,SAAWA,EAAK88B,GACrBxvB,SAAUA,EACVU,SAAUA,EACVm5F,aAAcA,GAAgB,MAC9BjhC,UAAWA,EACX1kH,UAAW,IAAW,GAAGL,OAAOksD,EAAW,2BAA0D,QAA7B25F,EAAca,SAAuC,IAAhBb,GAA8E,QAA3CC,EAAoBD,EAAY/hJ,aAAyC,IAAtBgiJ,OAA7D,EAAqGA,EAAkBzlJ,WAC7PysD,KAAM,WACN,aAAc,SACd,gBAAiBvG,EACjB,gBAAiB,UACjB,YAAa,GAAGvmD,OAAOG,EAAI,SAC3B,oBAAqB,OACrB,gBAAiB,GAAGH,OAAOG,EAAI,SAC/B,wBAAyBomD,EAAO2/F,OAAqBhjI,GACpDnwB,GAAQ,CAAC,EAAG,CACbnE,MAAOq3J,EAAWr3J,EAAQ,GAC1B2jD,UAAWA,EACX20G,UAAWjB,EACXL,aAAeK,EAAkB,KAAP,KAC1B1tJ,OAAO,SAAc,QAAc,CAAC,EAAGA,GAAQ,CAAC,EAAG,CACjD6I,QAAS6kJ,EAAW,KAAO,IAE7Br8F,UAAW,SAAmBpyD,GAC5B2uJ,EAAW3uJ,GACPqvJ,GACFA,EAAgBrvJ,EAEpB,EACA0uH,YAAa,SAAqB1uH,GAChCkuJ,EAAaluJ,GACTuvJ,GACFA,EAAkBvvJ,EAEtB,EACAyxD,SAAU,SAAkBzxD,GAC1B4uJ,EAAU5uJ,GACNsvJ,GACFA,EAAetvJ,EAEnB,EACA+uJ,mBAAoB,SAA4B/uJ,GAC9C8uJ,EAAoB9uJ,GAChBwvJ,GACFA,EAAyBxvJ,EAE7B,EACAivJ,iBAAkB,SAA0BjvJ,GAC1CgvJ,EAAkBhvJ,GACdyvJ,GACFA,EAAuBzvJ,EAE3B,EACA6uJ,QAASA,IAGb,EACIc,GAAwB,aAAiB,IAC7CA,GAASrkG,YAAc,QACvB,UCnGO,SAAS,GAAQl0D,GACtB,OAAIs+B,MAAMC,QAAQv+B,GACTA,OAEQs0B,IAAVt0B,EAAsB,CAACA,GAAS,EACzC,CACO,IAGI,GAH6B,oBAAXe,QAA0BA,OAAOyH,UAAYzH,OAAOyH,SAAS47E,gBAY1F,SAASo0E,GAAY5oG,GACnB,MAAO,CAAC,SAAU,UAAU5sD,UAAS,QAAQ4sD,GAC/C,CACO,SAAS6oG,GAASnjJ,GACvB,IAAIs6C,OAAQt7B,EAQZ,OAPIhf,IACEkjJ,GAAYljJ,EAAKs6C,OACnBA,EAAQt6C,EAAKs6C,MAAMnvC,WACV+3I,GAAYljJ,EAAKm1C,SAC1BmF,EAAQt6C,EAAKm1C,MAAMhqC,aAGhBmvC,CACT,CCrBA,SAAS+gG,GAAQ3wJ,GACf,IAAI04J,EACJ,OAAoC,QAA5BA,EAAa14J,EAAM0+B,WAAgC,IAAfg6H,EAAwBA,EAAa14J,EAAMA,KACzF,CACA,IAAI24J,GAAqB,SAA4B/vJ,GACnDA,EAAM0B,iBACN1B,EAAM4X,iBACR,EAkKA,GAjKqB,SAAwBtL,GAC3C,ICbsC0jJ,EAAQC,EDa1CtnJ,EAAK2D,EAAM3D,GACb+rD,EAAYpoD,EAAMooD,UAClBj/B,EAASnpB,EAAMmpB,OACfs5B,EAAOziD,EAAMyiD,KACb3I,EAAc95C,EAAM85C,YACpB8pG,EAAuB5jJ,EAAM4jJ,qBAC7BC,EAAW7jJ,EAAM6jJ,SACjB53F,EAAcjsD,EAAMisD,YACpB5D,EAAWroD,EAAMqoD,SACjBy7F,EAAO9jJ,EAAM8jJ,KACb/N,EAAa/1I,EAAM+1I,WACnB90B,EAAYjhH,EAAMihH,UAClBihC,EAAeliJ,EAAMkiJ,aACrBE,EAAqBpiJ,EAAMoiJ,mBAC3Br5F,EAAW/oD,EAAM+oD,SACjB45C,EAAa3iG,EAAM2iG,WACnBohD,EAAc/jJ,EAAM+jJ,YACpBC,EAAmBhkJ,EAAMgkJ,iBACzBC,EAAwBjkJ,EAAMkkJ,kBAC9BA,OAA8C,IAA1BD,EAAmC,SAAUE,GAC/D,MAAO,KAAKjoJ,OAAOioJ,EAAc36J,OAAQ,OAC3C,EAAIy6J,EACJG,EAAYpkJ,EAAMokJ,UAClBC,EAAerkJ,EAAMqkJ,aACrB7/C,EAAWxkG,EAAMwkG,SACjB8/C,EAAgBtkJ,EAAMskJ,cACtBC,EAAevkJ,EAAMukJ,aACrBC,EAAiBxkJ,EAAMwkJ,eACvBC,EAAmBzkJ,EAAMykJ,iBACzBC,EAA0B1kJ,EAAM0kJ,wBAChCC,EAAwB3kJ,EAAM2kJ,sBAC5BC,EAAa,SAAa,MAC1B5+E,GAAY,IAAAC,UAAS,GACvBC,GAAa,QAAeF,EAAW,GACvC6+E,EAAa3+E,EAAW,GACxB4+E,EAAgB5+E,EAAW,GACzBG,GAAa,IAAAJ,WAAS,GACxBK,GAAa,QAAeD,EAAY,GACxC0+E,EAAUz+E,EAAW,GACrB0+E,EAAa1+E,EAAW,GACtB2+E,EAAqB,GAAG/oJ,OAAOksD,EAAW,cAG1CixF,EAAa52F,GAAiB,aAATqhG,IAAgD,IAAzBF,GAA2C,SAATE,EAAkBhqG,EAAc,GAC9GorG,EAAyB,SAATpB,GAA4B,aAATA,IAAgD,IAAzBF,GAAkC7N,IAAetzF,GAAQsiG,GASvH,SAASI,EAAsB/kJ,EAAMq/D,EAAS2lF,EAAchwC,EAAUpS,GACpE,OAAoB,gBAAoB,OAAQ,CAC9CzmG,UAAW,IAAW,GAAGL,OAAO+oJ,EAAoB,UAAU,OAAgB,CAAC,EAAG,GAAG/oJ,OAAO+oJ,EAAoB,kBAAmBG,IACnI1qG,MAAO6oG,GAASnjJ,IACF,gBAAoB,OAAQ,CAC1C7D,UAAW,GAAGL,OAAO+oJ,EAAoB,kBACxCxlF,GAAU21C,GAAyB,gBAAoB,GAAU,CAClE74G,UAAW,GAAGL,OAAO+oJ,EAAoB,gBACzC7iC,YAAaqhC,GACbj+F,QAASw9C,EACT0+C,cAAe/+C,GACd,KACL,CC9EsC+gD,ED4DtB,WACdoB,EAAcF,EAAWx0J,QAAQ+qE,YACnC,EC9D8CwoF,ED8D3C,CAACtK,GC5DA,GAEF,kBAAsBqK,EAAQC,GAE9B,YAAgBD,EAAQC,GDoH1B,IAAIf,EAAyB,gBAAoB,MAAO,CACtDrmJ,UAAW,GAAGL,OAAO+oJ,EAAoB,WACzCxwJ,MAAO,CACLiC,MAAOmuJ,GAETQ,QAAS,WACPL,GAAW,EACb,EACA9O,OAAQ,WACN8O,GAAW,EACb,GACc,gBAAoB,GAAO,CACzCjqG,IAAK8oG,EACLphG,KAAMA,EACN2F,UAAWA,EACX/rD,GAAIA,EACJ4lJ,aAAc,KACd55F,SAAUA,EACV44D,UAAWA,EACXihC,aAAcA,EACdC,SAAU+C,EACV9C,mBAAoBA,EACpBt3J,MAAOuuJ,EACPvzF,UAAW0+F,EACXpiC,YAAaqiC,EACbt/F,SAAUm/F,EACV/B,QAASgC,EACT9B,mBAAoBiC,EACpB/B,iBAAkBgC,EAClB57F,SAAUA,EACV95D,MAAO2xD,GAAU5gD,GAAO,KACT,gBAAoB,OAAQ,CAC3C+6C,IAAK6pG,EACLroJ,UAAW,GAAGL,OAAO+oJ,EAAoB,kBACzC,eAAe,GACd5L,EAAY,MAGXiM,EAA6B,gBAAoB,GAAU,CAC7Dl9F,UAAW,GAAGlsD,OAAO+oJ,EAAoB,aACzC52I,KAAM8a,EACNkyH,WArEF,SAAoBkK,GAClB,IAAIH,EAAeG,EAAUl9F,SAC3B9S,EAAQgwG,EAAUhwG,MAClBzqD,EAAQy6J,EAAUz6J,MAChBsqH,GAAY/sD,IAAa+8F,EACzBI,EAAejwG,EACnB,GAAgC,iBAArByuG,IACY,iBAAVzuG,GAAuC,iBAAVA,GAAoB,CAC1D,IAAIkwG,EAAWn3I,OAAOk3I,GAClBC,EAASj8J,OAASw6J,IACpBwB,EAAe,GAAGtpJ,OAAOupJ,EAAS91I,MAAM,EAAGq0I,GAAmB,OAElE,CAEF,IAAIhhD,EAAU,SAAiBtvG,GACzBA,GAAOA,EAAM4X,kBACjBk5F,EAAS+gD,EACX,EACA,MAA4B,mBAAdnB,EAjChB,SAAiCt5J,EAAO20E,EAAS2lF,EAAchwC,EAAUpS,GAKvE,OAAoB,gBAAoB,OAAQ,CAC9Cof,YALgB,SAAqBv1H,GACrC42J,GAAmB52J,GACnBw3J,GAAc5hG,EAChB,GAGG2hG,EAAU,CACX7uG,MAAOkqB,EACP30E,MAAOA,EACPu9D,SAAU+8F,EACVhwC,SAAUA,EACVpS,QAASA,IAEb,CAmB2C0iD,CAAwB56J,EAAO06J,EAAcJ,EAAchwC,EAAUpS,GAAWmiD,EAAsBI,EAAWC,EAAcJ,EAAchwC,EAAUpS,EAClM,EAmDEg7C,WAlDF,SAAoBmG,GAClB,IAAI1kF,EAAuC,mBAAtBykF,EAAmCA,EAAkBC,GAAiBD,EAC3F,OAAOiB,EAAsB,CAC3BzqG,MAAO+kB,GACNA,GAAS,EACd,EA8CEy+E,OAAQ0E,EACRnH,QAASA,GACT3xC,SAAUi6C,IAEZ,OAAoB,gBAAoB,WAAgB,KAAMuB,GAAgBn8H,EAAO3/B,SAAW6vJ,GAA2B,gBAAoB,OAAQ,CACrJ98I,UAAW,GAAGL,OAAO+oJ,EAAoB,iBACxCh5F,GACL,EE5EA,GAlGqB,SAAwBjsD,GAC3C,IAAIiiJ,EAAejiJ,EAAMiiJ,aACvB75F,EAAYpoD,EAAMooD,UAClB/rD,EAAK2D,EAAM3D,GACXwnJ,EAAW7jJ,EAAM6jJ,SACjBx7F,EAAWroD,EAAMqoD,SACjB44D,EAAYjhH,EAAMihH,UAClBihC,EAAeliJ,EAAMkiJ,aACrBE,EAAqBpiJ,EAAMoiJ,mBAC3B0B,EAAO9jJ,EAAM8jJ,KACbrhG,EAAOziD,EAAMyiD,KACbt5B,EAASnpB,EAAMmpB,OACf8iC,EAAcjsD,EAAMisD,YACpBlD,EAAW/oD,EAAM+oD,SACjBgtF,EAAa/1I,EAAM+1I,WACnBj8F,EAAc95C,EAAM85C,YACpB6rG,EAAc3lJ,EAAM2lJ,YACpBl3G,EAAYzuC,EAAMyuC,UAClB+1G,EAAiBxkJ,EAAMwkJ,eACvBC,EAAmBzkJ,EAAMykJ,iBACzBH,EAAgBtkJ,EAAMskJ,cACtBC,EAAevkJ,EAAMukJ,aACrBG,EAA0B1kJ,EAAM0kJ,wBAChCC,EAAwB3kJ,EAAM2kJ,sBAC9BjqG,EAAQ16C,EAAM06C,MACZya,EAAkB,YAAe,GACnCC,GAAmB,QAAeD,EAAiB,GACnDywF,EAAexwF,EAAiB,GAChCywF,EAAkBzwF,EAAiB,GACjC0wF,EAAoB,aAAThC,EACXoB,EAAgBY,GAAY/P,EAC5B31I,EAAO+oB,EAAO,GACdkwH,EAAav/F,GAAe,GAC5BgsG,GAAYH,IAAgBC,IAC9BvM,EAAasM,GAEf,aAAgB,WACVG,GACFD,GAAgB,EAEpB,GAAG,CAACC,EAAUH,IAGd,IAAII,IAAwB,aAATjC,IAAwBrhG,IAASszF,MAAuBsD,EAGvE2M,OAA2B5mI,IAAVs7B,EAAsB6oG,GAASnjJ,GAAQs6C,EAa5D,OAAoB,gBAAoB,WAAgB,KAAmB,gBAAoB,OAAQ,CACrGn+C,UAAW,GAAGL,OAAOksD,EAAW,sBAClB,gBAAoB,GAAO,CACzCrN,IAAK8oG,EACLz7F,UAAWA,EACX/rD,GAAIA,EACJomD,KAAMA,EACNw/F,aAAcA,EACd55F,SAAUA,EACV44D,UAAWA,EACXihC,aAAcA,EACdC,SAAU+C,EACV9C,mBAAoBA,EACpBt3J,MAAOuuJ,EACPvzF,UAAW0+F,EACXpiC,YAAaqiC,EACbt/F,SAAU,SAAkBt4D,GAC1Bg5J,GAAgB,GAChBvB,EAAcz3J,EAChB,EACA01J,QAASgC,EACT9B,mBAAoBiC,EACpB/B,iBAAkBgC,EAClB57F,SAAUA,EACV95D,MAAO2xD,GAAU5gD,GAAO,GACxByuC,UAAWq3G,EAAWr3G,OAAYrvB,MAC9B0mI,GAAY1lJ,EAAoB,gBAAoB,OAAQ,CAChE7D,UAAW,GAAGL,OAAOksD,EAAW,mBAChC1N,MAAOsrG,EAMPvxJ,MAAOsxJ,EAAe,CACpB53E,WAAY,eACV/uD,GACHhf,EAAKm1C,OAAS,KAjDO,WACtB,GAAIn1C,EACF,OAAO,KAET,IAAI6lJ,EAAcF,EAAe,CAC/B53E,WAAY,eACV/uD,EACJ,OAAoB,gBAAoB,OAAQ,CAC9C7iB,UAAW,GAAGL,OAAOksD,EAAW,0BAChC3zD,MAAOwxJ,GACNh6F,EACL,CAsCuBi6F,GACzB,ECnFA,IAAIC,GAAW,SAAkBnmJ,EAAO+6C,GACtC,IAAI8oG,GAAW,IAAA5qF,QAAO,MAClBmtF,GAAuB,IAAAntF,SAAO,GAC9B7Q,EAAYpoD,EAAMooD,UACpB3F,EAAOziD,EAAMyiD,KACbqhG,EAAO9jJ,EAAM8jJ,KACb/N,EAAa/1I,EAAM+1I,WACnBsQ,EAAiBrmJ,EAAMqmJ,eACvBzC,EAAuB5jJ,EAAM4jJ,qBAC7B0C,EAAWtmJ,EAAMsmJ,SACjBC,EAAiBvmJ,EAAMumJ,eACvBlC,EAAerkJ,EAAMqkJ,aACrBG,EAAiBxkJ,EAAMwkJ,eACvBgC,EAASxmJ,EAAMwmJ,OAGjB,sBAA0BzrG,GAAK,WAC7B,MAAO,CACL2K,MAAO,WACLm+F,EAASzzJ,QAAQs1D,OACnB,EACAE,KAAM,WACJi+F,EAASzzJ,QAAQw1D,MACnB,EAEJ,IAGA,IAAI6gG,EAAW1L,GAAQ,GACrB2L,GAAY,QAAeD,EAAU,GACrCE,EAAoBD,EAAU,GAC9BE,EAAoBF,EAAU,GA4B5BG,GAAgB,IAAA5tF,QAAO,MACvB6tF,EAAkB,SAAyBh8J,IACe,IAAxDw7J,EAASx7J,GAAO,EAAMs7J,EAAqBh2J,UAC7Ci0J,GAAa,EAEjB,EA4DI0C,EAAc,CAChBlD,SAAUA,EACVW,eA9F2B,SAAgC9wJ,GAC3D,ICjD8BszJ,EDiD1BC,EAAQvzJ,EAAMuzJ,MACdA,IAAUnxC,GAAA,EAAQoxC,IAAMD,IAAUnxC,GAAA,EAAQqxC,MAC5CzzJ,EAAM0B,iBAEJovJ,GACFA,EAAe9wJ,GAEbuzJ,IAAUnxC,GAAA,EAAQC,OAAkB,SAAT+tC,GAAoBsC,EAAqBh2J,SAAYqyD,GAGlF8jG,SAAgEA,EAAe7yJ,EAAMrC,OAAOvG,OC3DhEk8J,ED6DRC,EC5DhB,CAERnxC,GAAA,EAAQ+O,IAAK/O,GAAA,EAAQsxC,MAAOtxC,GAAA,EAAQw+B,UAAWx+B,GAAA,EAAQgP,IAAKhP,GAAA,EAAQuxC,QAASvxC,GAAA,EAAQwxC,IAAKxxC,GAAA,EAAQyxC,KAAMzxC,GAAA,EAAQ0xC,cAAe1xC,GAAA,EAAQ2xC,KAAM3xC,GAAA,EAAQ4xC,UAAW5xC,GAAA,EAAQ6xC,OAAQ7xC,GAAA,EAAQ8xC,UAAW9xC,GAAA,EAAQ+xC,aAE3M/xC,GAAA,EAAQgyC,GAAIhyC,GAAA,EAAQiyC,GAAIjyC,GAAA,EAAQkyC,GAAIlyC,GAAA,EAAQmyC,GAAInyC,GAAA,EAAQoyC,GAAIpyC,GAAA,EAAQqyC,GAAIryC,GAAA,EAAQsyC,GAAItyC,GAAA,EAAQuyC,GAAIvyC,GAAA,EAAQwyC,GAAIxyC,GAAA,EAAQyyC,IAAKzyC,GAAA,EAAQ0yC,IAAK1yC,GAAA,EAAQ2yC,KAAK36J,SAASk5J,IDyDxJ3C,GAAa,EAEjB,EA+EEI,iBAzE6B,WAC7BmC,GAAkB,EACpB,EAwEEtC,cApDkB,SAAuB5wJ,GACzC,IAAI5I,EAAQ4I,EAAMrC,OAAOvG,MAGzB,GAAIu7J,GAAkBQ,EAAcz2J,SAAW,SAASnC,KAAK44J,EAAcz2J,SAAU,CAEnF,IAAIs4J,EAAe7B,EAAcz2J,QAAQme,QAAQ,WAAY,IAAIA,QAAQ,QAAS,KAAKA,QAAQ,UAAW,KAC1GzjB,EAAQA,EAAMyjB,QAAQm6I,EAAc7B,EAAcz2J,QACpD,CACAy2J,EAAcz2J,QAAU,KACxB02J,EAAgBh8J,EAClB,EA0CEy5J,aAzCiB,SAAsB13J,GACvC,IACI/B,EADgB+B,EAAE87J,cACIC,QAAQ,QAClC/B,EAAcz2J,QAAUtF,CAC1B,EAsCE45J,wBAjE4B,WAC5B0B,EAAqBh2J,SAAU,CACjC,EAgEEu0J,sBA/D0B,SAA+B93J,GACzDu5J,EAAqBh2J,SAAU,EAGlB,aAAT0zJ,GACFgD,EAAgBj6J,EAAEwE,OAAOvG,MAE7B,GA0DI+9J,EAAsB,aAAT/E,GAAgC,SAATA,EAA+B,gBAAoBgF,IAAkB,OAAS,CAAC,EAAG9oJ,EAAO+mJ,IAA6B,gBAAoB,IAAgB,OAAS,CAAC,EAAG/mJ,EAAO+mJ,IACtN,OAAoB,gBAAoB,MAAO,CAC7ChsG,IAAKyrG,EACLjqJ,UAAW,GAAGL,OAAOksD,EAAW,aAChC5C,QA5CY,SAAiBhL,GAChBA,EAAKnpD,SACHwyJ,EAASzzJ,eAE2BgvB,IAAtC9rB,SAASgiD,KAAK7gD,MAAMs0J,cAE7B98J,YAAW,WACT43J,EAASzzJ,QAAQs1D,OACnB,IAEAm+F,EAASzzJ,QAAQs1D,QAGvB,EAgCE08D,YA/BgB,SAAqB1uH,GACrC,IAAIs1J,EAAiBrC,IAIjBjzJ,EAAMrC,SAAWwyJ,EAASzzJ,SAAY44J,GAA2B,aAATlF,GAC1DpwJ,EAAM0B,kBAEK,aAAT0uJ,GAAyB/N,GAAeiT,IAAoBvmG,IAC1DA,IAAiC,IAAzBmhG,GACV0C,EAAS,IAAI,GAAM,GAErBjC,IAEJ,GAkBGwE,EACL,EACII,GAA+B,aAAiB9C,IACpD8C,GAAgBjqG,YAAc,WAC9B,UE9JI,GAAY,CAAC,YAAa,WAAY,UAAW,WAAY,eAAgB,iBAAkB,YAAa,iBAAkB,gBAAiB,oBAAqB,YAAa,YAAa,oBAAqB,2BAA4B,iBAAkB,gBAAiB,oBAAqB,QAAS,oBAAqB,uBAAwB,qBA8C7VkqG,GAAgB,SAAuBlpJ,EAAO+6C,GAChD,IAAIqN,EAAYpoD,EAAMooD,UAEpBlrD,GADW8C,EAAMqoD,SACProD,EAAM9C,SAChB1E,EAAWwH,EAAMxH,SACjBuuF,EAAe/mF,EAAM+mF,aACrBw3D,EAAiBv+I,EAAMu+I,eACvBlwJ,EAAY2R,EAAM3R,UAClBqrF,EAAiB15E,EAAM05E,eACvByvE,EAAgBnpJ,EAAMmpJ,cACtBC,EAAoBppJ,EAAMopJ,kBAC1BC,EAAmBrpJ,EAAMyjB,UACzBA,OAAiC,IAArB4lI,EAA8B,MAAQA,EAClD7jE,EAAYxlF,EAAMwlF,UAClBvD,EAAoBjiF,EAAMiiF,kBAC1BsuB,EAA2BvwG,EAAMuwG,yBACjC+4C,EAAiBtpJ,EAAMspJ,eACvBC,EAAgBvpJ,EAAMupJ,cACtBhrE,EAAoBv+E,EAAMu+E,kBAC1Br1B,EAAQlpD,EAAMkpD,MACds3B,EAAoBxgF,EAAMwgF,kBAC1BW,EAAuBnhF,EAAMmhF,qBAC7BwO,EAAoB3vF,EAAM2vF,kBAC1B9iB,GAAY,QAAyB7sE,EAAO,IAC1CwpJ,EAAoB,GAAGttJ,OAAOksD,EAAW,aACzCqhG,EAAY1iE,EACZuiE,IACFG,EAAYH,EAAeviE,IAE7B,IAAI2iE,EAA0B,WAAc,WAC1C,OAAOznE,GAxEgB,SAA8BsuB,GAEvD,IAAI5mB,GAAuC,IAA7B4mB,EAAoC,EAAI,EACtD,MAAO,CACL7tG,WAAY,CACV2G,OAAQ,CAAC,KAAM,MACfyiE,OAAQ,CAAC,EAAG,GACZ73B,SAAU,CACR01C,QAASA,EACTC,QAAS,GAEX/B,WAAY,UAEdllF,YAAa,CACX0G,OAAQ,CAAC,KAAM,MACfyiE,OAAQ,CAAC,EAAG,GACZ73B,SAAU,CACR01C,QAASA,EACTC,QAAS,GAEX/B,WAAY,UAEdrlF,QAAS,CACP6G,OAAQ,CAAC,KAAM,MACfyiE,OAAQ,CAAC,GAAI,GACb73B,SAAU,CACR01C,QAASA,EACTC,QAAS,GAEX/B,WAAY,UAEdplF,SAAU,CACR4G,OAAQ,CAAC,KAAM,MACfyiE,OAAQ,CAAC,GAAI,GACb73B,SAAU,CACR01C,QAASA,EACTC,QAAS,GAEX/B,WAAY,UAGlB,CA+BgC8hE,CAAqBp5C,EACnD,GAAG,CAACtuB,EAAmBsuB,IAGnBq5C,EAAuBv7J,EAAY,GAAG6N,OAAOstJ,EAAmB,KAAKttJ,OAAO7N,GAAaqrF,EAGzFmwE,EAAW,SAAa,MAC5B,sBAA0B9uG,GAAK,WAC7B,MAAO,CACL+uG,gBAAiB,WACf,OAAOD,EAASz5J,OAClB,EAEJ,IACA,IAAI0xF,GAAa,QAAc,CAC7B/hB,SAAUw+E,GACT4K,GAMH,MALwC,iBAA7B54C,EACTzuB,EAAWprF,MAAQ65G,EACVA,IACTzuB,EAAWprF,MAAQ6nJ,GAED,gBAAoB,IAAS,OAAS,CAAC,EAAG1xE,EAAW,CACvEkU,WAAYI,EAAuB,CAAC,SAAW,GAC/CH,WAAYG,EAAuB,CAAC,SAAW,GAC/CY,eAAgByD,IAA4B,QAAd/hE,EAAsB,cAAgB,cACpEw+D,kBAAmBynE,EACnBthG,UAAWohG,EACXhnE,oBAAqBonE,EACrB3rE,MAAoB,gBAAoB,MAAO,CAC7CljC,IAAK8uG,EACLthG,aAAconC,GACb85D,GACHvnE,WAAYqnE,EACZtoE,aAAc/jF,EACdqhF,kBAAmBA,EACnBsD,eAAgB,IAAWunE,GAAmB,OAAgB,CAAC,EAAG,GAAGltJ,OAAOstJ,EAAmB,UAAWtgG,IAC1G44B,WAAYA,EACZtB,kBAAmBA,EACnBW,qBAAsBA,IACpB3oF,EACN,EACIuxJ,GAAgC,aAAiBb,IACrDa,GAAiB/qG,YAAc,gBAC/B,sBCzHA,SAASw3E,GAAOnoH,EAAM1d,GACpB,IACI7F,EADA0+B,EAAMnb,EAAKmb,IAKf,MAHI,UAAWnb,IACbvjB,EAAQujB,EAAKvjB,OAEX0+B,QACKA,OAEKpK,IAAVt0B,EACKA,EAEF,gBAAgBoR,OAAOvL,EAChC,CACO,SAASq5J,GAAeC,EAAYC,GACzC,IAAI1vG,EAAOyvG,GAAc,CAAC,EAKtBE,EAJM3vG,EAAKjF,QAIa20G,EAAiB,WAAa,SAC1D,MAAO,CACL30G,MAAO40G,EACPr/J,MANQ0vD,EAAK1vD,OAMG,QAChBgjC,QANU0sB,EAAK1sB,SAMK,UACpBs8H,WANa5vG,EAAK4vG,YAMQD,EAE9B,CAsDO,SAASE,GAAsBhpG,GACpC,IAAIipG,GAAY,QAAc,CAAC,EAAGjpG,GASlC,MARM,UAAWipG,GACfnqJ,OAAOoxB,eAAe+4H,EAAW,QAAS,CACxC3/J,IAAK,WAEH,OADA,UAAQ,EAAO,iHACR2/J,CACT,IAGGA,CACT,CCzFA,IAAI,GAAY,CAAC,KAAM,YAAa,YAAa,aAAc,YAAa,YAAa,eAAgB,gBAAiB,wBAAyB,eAAgB,kBAAmB,UAAW,OAAQ,WAAY,UAAW,kBAAmB,qBAAsB,OAAQ,cAAe,0BAA2B,cAAe,sBAAuB,qBAAsB,cAAe,uBAAwB,WAAY,gBAAiB,kBAAmB,aAAc,aAAc,YAAa,aAAc,YAAa,iBAAkB,gBAAiB,oBAAqB,2BAA4B,iBAAkB,gBAAiB,YAAa,oBAAqB,oBAAqB,aAAc,UAAW,SAAU,UAAW,YAAa,eAiBvvBC,GAAqB,CAAC,QAAS,WAAY,aAAc,cAAe,YAAa,cAAe,mBAAoB,oBAAqB,uBAAwB,iBAAkB,gBAAiB,YACrM,SAAS,GAAWzG,GACzB,MAAgB,SAATA,GAA4B,aAATA,CAC5B,CACA,IAAI0G,GAA0B,cAAiB,SAAUxqJ,EAAO+6C,GAC9D,IAAI0vG,EAAuBl+C,EACvBlwG,EAAK2D,EAAM3D,GACb+rD,EAAYpoD,EAAMooD,UAClB7rD,EAAYyD,EAAMzD,UAClBw5I,EAAa/1I,EAAM+1I,WACnBqO,EAAYpkJ,EAAMokJ,UAClB3gI,EAAYzjB,EAAMyjB,UAClBinI,EAAe1qJ,EAAM0qJ,aACrBC,EAAgB3qJ,EAAM2qJ,cACtBC,EAAwB5qJ,EAAM4qJ,sBAC9BC,EAAe7qJ,EAAM6qJ,aACrBC,EAAwB9qJ,EAAM+qJ,gBAC9BA,OAA4C,IAA1BD,EAAmC,YAAcA,EACnEE,EAAUhrJ,EAAMgrJ,QAChBlH,EAAO9jJ,EAAM8jJ,KACbz7F,EAAWroD,EAAMqoD,SACjB+S,EAAUp7D,EAAMo7D,QAChB6vF,EAAkBjrJ,EAAMirJ,gBACxBC,EAAqBlrJ,EAAMkrJ,mBAC3BzoG,EAAOziD,EAAMyiD,KACbu4C,EAAch7F,EAAMg7F,YACpBmwD,EAA0BnrJ,EAAMmrJ,wBAChCxF,EAAc3lJ,EAAM2lJ,YACpByF,EAAsBprJ,EAAMorJ,oBAC5BhJ,EAAqBpiJ,EAAMoiJ,mBAC3BtoG,EAAc95C,EAAM85C,YACpB8pG,EAAuB5jJ,EAAM4jJ,qBAC7B0C,EAAWtmJ,EAAMsmJ,SACjB+E,EAAgBrrJ,EAAMqrJ,cACtBC,EAAkBtrJ,EAAMsrJ,gBACxBC,EAAavrJ,EAAMurJ,WACnBC,EAAaxrJ,EAAMwrJ,WACnBC,EAAYzrJ,EAAMyrJ,UAClBC,EAAa1rJ,EAAM0rJ,WACnBr9J,EAAY2R,EAAM3R,UAClBqrF,EAAiB15E,EAAM05E,eACvByvE,EAAgBnpJ,EAAMmpJ,cACtBC,EAAoBppJ,EAAMopJ,kBAC1B74C,EAA2BvwG,EAAMuwG,yBACjC+4C,EAAiBtpJ,EAAMspJ,eACvBC,EAAgBvpJ,EAAMupJ,cACtB/jE,EAAYxlF,EAAMwlF,UAClBvD,EAAoBjiF,EAAMiiF,kBAC1B1D,EAAoBv+E,EAAMu+E,kBAC1BotE,EAAoB3rJ,EAAM+gF,WAC1BA,OAAmC,IAAtB4qE,EAA+B,GAAKA,EACjDtG,GAAUrlJ,EAAMqlJ,QAChBnP,GAASl2I,EAAMk2I,OACfD,GAAUj2I,EAAMi2I,QAChBnwF,GAAY9lD,EAAM8lD,UAClBs8D,GAAcpiH,EAAMoiH,YACpBv1C,IAAY,QAAyB7sE,EAAO,IAG1CgmD,GAAW,GAAW89F,GACtB8H,SAAmCxsI,IAAf22H,EAA2BA,EAAa/vF,KAAsB,aAAT89F,EACzE+H,IAAW,QAAc,CAAC,EAAGh/E,IACjC09E,GAAmBx5J,SAAQ,SAAU8iH,UAC5Bg4C,GAASh4C,EAClB,IACA62C,SAA4DA,EAAa35J,SAAQ,SAAU8iH,UAClFg4C,GAASh4C,EAClB,IAGA,IAAI1+C,GAAkB,YAAe,GACnCC,IAAmB,QAAeD,GAAiB,GACnD0tB,GAASztB,GAAiB,GAC1B0tB,GAAY1tB,GAAiB,GAC/B,aAAgB,WAEd0tB,GAAUC,KACZ,GAAG,IAGH,IAAI/pB,GAAe,SAAa,MAC5B8yF,GAAiB,SAAa,MAC9Bz5D,GAAa,SAAa,MAC1B05D,GAAc,SAAa,MAC3BC,GAAU,SAAa,MAGvBC,GCxGS,WACb,IAAI/gK,EAAU3B,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,GAC9E4rE,EAAkB,YAAe,GACnCC,GAAmB,QAAeD,EAAiB,GACnD+2F,EAAO92F,EAAiB,GACxB+2F,EAAU/2F,EAAiB,GACzBwvB,EAAW,SAAa,MACxBwnE,EAAe,WACjBvgK,OAAOyB,aAAas3F,EAASx0F,QAC/B,EAaA,OAZA,aAAgB,WACd,OAAOg8J,CACT,GAAG,IAUI,CAACF,EATW,SAAsBphK,EAAO9B,GAC9CojK,IACAxnE,EAASx0F,QAAUvE,OAAOI,YAAW,WACnCkgK,EAAQrhK,GACJ9B,GACFA,GAEJ,GAAGkC,EACL,EAC4BkhK,EAC9B,CDiFuBC,GACnBC,IAAkB,QAAeL,GAAgB,GACjDM,GAAcD,GAAgB,GAC9BE,GAAiBF,GAAgB,GACjCG,GAAuBH,GAAgB,GAGzC,sBAA0BvxG,GAAK,WAC7B,IAAI2xG,EAAsBC,EAC1B,MAAO,CACLjnG,MAAwD,QAAhDgnG,EAAuBX,GAAY37J,eAA8C,IAAzBs8J,OAAkC,EAASA,EAAqBhnG,MAChIE,KAAwD,QAAjD+mG,EAAwBZ,GAAY37J,eAA+C,IAA1Bu8J,OAAmC,EAASA,EAAsB/mG,KAClIgnG,SAAU,SAAkBznH,GAC1B,IAAI0nH,EACJ,OAAgD,QAAxCA,EAAmBb,GAAQ57J,eAA0C,IAArBy8J,OAA8B,EAASA,EAAiBD,SAASznH,EAC3H,EAEJ,IAGA,IAAI2nH,GAAoB,WAAc,WACpC,IAAIC,EACJ,GAAa,aAATjJ,EACF,OAAOhqG,EAET,IAAI9rD,EAA+C,QAAxC++J,EAAkBpC,EAAc,UAAoC,IAApBoC,OAA6B,EAASA,EAAgBjiK,MACjH,MAAsB,iBAARkD,GAAmC,iBAARA,EAAmBsgB,OAAOtgB,GAAO,EAC5E,GAAG,CAAC8rD,EAAagqG,EAAM6G,IAInBqC,GAAiC,aAATlJ,GAAkD,mBAApBmH,GAAkCA,KAAqB,KAG7GgC,GAAyD,mBAAvB/B,GAAqCA,IACvEgC,IAAuB,SAAcpB,GAAgBmB,UAAiJ,QAA5DxC,EAAwBwC,GAAyBjtJ,aAA6C,IAA1ByqJ,OAA9E,EAA0HA,EAAsB1vG,KAIhRua,GAAmB,YAAe,GACpCC,IAAmB,QAAeD,GAAkB,GACpD63F,GAAW53F,GAAiB,GAC5B63F,GAAc73F,GAAiB,IACjC,EAAAqZ,GAAA,IAAgB,WACdw+E,IAAY,EACd,GAAG,IACH,IAAItyD,IAAkB,EAAAC,GAAA,IAAe,EAAO,CACxCptE,aAAcqtE,EACdlwG,MAAO23D,IAETw4C,IAAmB,QAAeH,GAAiB,GACnDuyD,GAAYpyD,GAAiB,GAC7BqyD,GAAeryD,GAAiB,GAC9B3W,KAAa6oE,IAAWE,GAGxBE,IAAoBxC,GAAmBF,GACvCxiG,GAAYklG,IAAoBjpE,IAAuB,aAATw/D,KAChDx/D,IAAa,GAEf,IAAIQ,IAAcyoE,IAA2BjpE,GACzC+/D,GAAe,eAAkB,SAAUmJ,GAC7C,IAAIhpE,OAAuBplE,IAAZouI,EAAwBA,GAAWlpE,GAC7Cj8B,IACHilG,GAAa9oE,GACTF,KAAeE,IACjB2mE,SAAkFA,EAAwB3mE,IAGhH,GAAG,CAACn8B,EAAUi8B,GAAYgpE,GAAcnC,IAGpC9E,GAAiB,WAAc,WACjC,OAAQiF,GAAmB,IAAIjoG,MAAK,SAAUoqG,GAC5C,MAAO,CAAC,KAAM,QAAQ3/J,SAAS2/J,EACjC,GACF,GAAG,CAACnC,IACAoC,GAAmB,SAA0BC,EAAYC,EAAYC,GACvE,IAAItjH,GAAM,EACNujH,EAAgBH,EACpBvC,SAA0EA,EAAoB,MAG9F,IAAI2C,EAAcF,EAAgB,KDjG/B,SAA6BrkJ,EAAMwkJ,GACxC,IAAKA,IAAWA,EAAOxkK,OACrB,OAAO,KAET,IAAIo6B,GAAQ,EAgBRymF,EAfJ,SAAS4jD,EAAS5jI,EAAKm9B,GACrB,IAAIwhC,GAAQ,QAASxhC,GACnBuL,EAAQi2B,EAAM,GACdklE,EAAallE,EAAMr5E,MAAM,GAC3B,IAAKojD,EACH,MAAO,CAAC1oC,GAEV,IAAIggF,EAAOhgF,EAAIpY,MAAM8gD,GAErB,OADAnvC,EAAQA,GAASymF,EAAK7gH,OAAS,EACxB6gH,EAAK/vF,QAAO,SAAU6zI,EAAUC,GACrC,MAAO,GAAGlyJ,QAAO,OAAmBiyJ,IAAW,OAAmBF,EAASG,EAASF,IACtF,GAAG,IAAIh1J,QAAO,SAAUq+H,GACtB,OAAOA,CACT,GACF,CACW02B,CAASzkJ,EAAMwkJ,GAC1B,OAAOpqI,EAAQymF,EAAO,IACxB,CC2E6CgkD,CAAoBV,EAAYrC,GAkBzE,MAfa,aAATxH,GAAuBiK,IACzBD,EAAgB,GAChBzC,SAA8DA,EAAc0C,GAG5E1J,IAAa,GAGb95G,GAAM,GAEJ+7G,GAAYwG,KAAsBgB,GACpCxH,EAASwH,EAAe,CACtB9zI,OAAQ4zI,EAAa,SAAW,WAG7BrjH,CACT,EAgBA,aAAgB,WACT+5C,IAAet+B,IAAqB,aAAT89F,GAC9B4J,GAAiB,IAAI,GAAO,EAEhC,GAAG,CAACppE,KAIJ,aAAgB,WACV+oE,IAAahlG,GACfilG,IAAa,GAEXjlG,GACFmkG,IAAe,EAEnB,GAAG,CAACnkG,IASJ,IAAIo+F,GAAW1L,KACb2L,IAAY,QAAeD,GAAU,GACrC6H,GAAe5H,GAAU,GACzB6H,GAAe7H,GAAU,GAyEvB8H,GAAW,UAAa,GA0CxBC,GAAmB,GACvB,aAAgB,WACd,OAAO,WACLA,GAAiB19J,SAAQ,SAAUwwH,GACjC,OAAOj0H,aAAai0H,EACtB,IACAktC,GAAiB1kK,OAAO,EAAG0kK,GAAiBjlK,OAC9C,CACF,GAAG,IACH,IAkDIklK,GAvBAh5F,GAAmB,WAAe,MACpCC,IAAmB,QAAeD,GAAkB,GACpD6oF,GAAiB5oF,GAAiB,GAClC6oF,GAAoB7oF,GAAiB,GACnCE,GAAmB,WAAe,CAAC,GAErCqvC,IADmB,QAAervC,GAAkB,GACrB,IAKjC,EAAA+Y,GAAA,IAAgB,WACd,GAAIkW,GAAa,CACf,IAAI6pE,EAEAC,EAAWhsJ,KAAKisJ,KAAwD,QAAlDF,EAAwB31F,GAAa5oE,eAA+C,IAA1Bu+J,OAAmC,EAASA,EAAsBj3J,wBAAwBhB,OAC1K6nJ,KAAmBqQ,GAAahkJ,OAAOC,MAAM+jJ,IAC/CpQ,GAAkBoQ,EAEtB,CACF,GAAG,CAAC9pE,KAIAmoE,KACFyB,GAAyB,SAAgClB,GACvDnJ,GAAamJ,EACf,GEjbW,SAAiClkI,EAAUm5B,EAAMqiC,EAAagqE,GAC3E,IAAI92E,EAAW,SAAa,MAC5BA,EAAS5nF,QAAU,CACjBqyD,KAAMA,EACNqiC,YAAaA,EACbgqE,kBAAmBA,GAErB,aAAgB,WACd,SAASC,EAAkBr7J,GACzB,IAAIwkF,EAEJ,GAA+C,QAA1CA,EAAoBF,EAAS5nF,eAA2C,IAAtB8nF,IAAgCA,EAAkB42E,kBAAzG,CAGA,IAAIz9J,EAASqC,EAAMrC,OACfA,EAAO29J,YAAct7J,EAAMu7J,WAC7B59J,EAASqC,EAAMw7J,eAAe,IAAM79J,GAElC2mF,EAAS5nF,QAAQqyD,MAAQn5B,IAAWpwB,QAAO,SAAUZ,GACvD,OAAOA,CACT,IAAG64H,OAAM,SAAU74H,GACjB,OAAQA,EAAQ4/D,SAAS7mE,IAAWiH,IAAYjH,CAClD,KAEE2mF,EAAS5nF,QAAQ00F,aAAY,EAX/B,CAaF,CAEA,OADAj5F,OAAOwH,iBAAiB,YAAa07J,GAC9B,WACL,OAAOljK,OAAO2H,oBAAoB,YAAau7J,EACjD,CACF,GAAG,GACL,CFqZEI,EAAwB,WACtB,IAAIC,EACJ,MAAO,CAACp2F,GAAa5oE,QAAyD,QAA/Cg/J,EAAuB/8D,GAAWjiG,eAA8C,IAAzBg/J,OAAkC,EAASA,EAAqBtF,kBACxJ,GAAGhlE,GAAau/D,KAAgB4I,IAGhC,IAkBIoC,GAlBAC,GAAoB,WAAc,WACpC,OAAO,SAAc,QAAc,CAAC,EAAGtvJ,GAAQ,CAAC,EAAG,CACjD+qJ,gBAAiBA,EACjBtoG,KAAM6hC,GACNQ,YAAaA,GACbzoF,GAAIA,EACJ05I,WAAY6V,GACZ5lG,SAAUA,GACVupG,WAAYlL,IAEhB,GAAG,CAACrkJ,EAAO+qJ,EAAiBjmE,GAAaR,GAAYjoF,EAAIuvJ,GAAkB5lG,GAAUq+F,KAOjFmL,KAAmBhE,GAAcpwF,EAEjCo0F,KACFH,GAAyB,gBAAoB,GAAU,CACrD9yJ,UAAW,IAAW,GAAGL,OAAOksD,EAAW,WAAW,OAAgB,CAAC,EAAG,GAAGlsD,OAAOksD,EAAW,kBAAmBgT,IAClHsmF,cAAe8J,EACf7J,mBAAoB,CAClBvmF,QAASA,EACTthB,YAAagzG,GACbrqG,KAAM6hC,GACNygE,QAASwH,GACTxW,WAAY6V,OAMlB,IAwEI6D,GA9DAC,GGreC,SAAuBtnG,EAAWunG,EAAkBhF,EAAeY,EAAYE,GACpF,IAAIpjG,EAAW9+D,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,IAAmBA,UAAU,GAC1EujK,EAAoBvjK,UAAUC,OAAS,EAAID,UAAU,QAAK61B,EAC1D0kI,EAAOv6J,UAAUC,OAAS,EAAID,UAAU,QAAK61B,EAC7CwwI,EAAkB,WAAc,WAClC,MAA4B,YAAxB,QAAQrE,GACHA,EAAWE,UAEdA,QAAN,CACF,GAAG,CAACF,EAAYE,IAOhB,MAAO,CACLF,WAPqB,WAAc,WACnC,QAAKljG,IAAckjG,IAAeZ,EAAcnhK,SAAUsjK,GAAiC,aAAThJ,GAA6C,KAAtBgJ,EAI3G,GAAG,CAACvB,EAAYljG,EAAUsiG,EAAcnhK,OAAQsjK,EAAmBhJ,IAGjE2H,UAAwB,gBAAoB,GAAU,CACpDlvJ,UAAW,GAAGL,OAAOksD,EAAW,UAChCg6D,YAAautC,EACbjO,cAAekO,GACd,KAEP,CH6cuBC,CAAcznG,GAVZ,WACrB,IAAI0nG,EACJ9E,SAAkDA,IACA,QAAjD8E,EAAwB/D,GAAY37J,eAA+C,IAA1B0/J,GAA4CA,EAAsBpqG,QAC5HklG,EAAsB,GAAI,CACxBt5J,KAAM,QACN63B,OAAQwhI,IAEV+C,GAAiB,IAAI,GAAO,EAC9B,GACgE/C,EAAeY,EAAYE,EAAWpjG,EAAUykG,GAAmBhJ,GACjIiM,GAAmBL,GAAenE,WAClCyE,GAAYN,GAAejE,UAGzBwE,GAA0B,gBAAoBvE,EAAY,CAC5D3wG,IAAKixG,KAIHkE,GAAkB,IAAW9nG,EAAW7rD,GAAYgwG,EAAe,CAAC,GAAG,OAAgBA,EAAc,GAAGrwG,OAAOksD,EAAW,YAAamkG,KAAc,OAAgBhgD,EAAc,GAAGrwG,OAAOksD,EAAW,aAAcpC,KAAW,OAAgBumD,EAAc,GAAGrwG,OAAOksD,EAAW,YAAapC,KAAW,OAAgBumD,EAAc,GAAGrwG,OAAOksD,EAAW,gBAAiBmjG,IAAa,OAAgBh/C,EAAc,GAAGrwG,OAAOksD,EAAW,eAAgBonG,KAAiB,OAAgBjjD,EAAc,GAAGrwG,OAAOksD,EAAW,aAAcC,IAAW,OAAgBkkD,EAAc,GAAGrwG,OAAOksD,EAAW,YAAagT,IAAU,OAAgBmxC,EAAc,GAAGrwG,OAAOksD,EAAW,SAAUk8B,KAAa,OAAgBioB,EAAc,GAAGrwG,OAAOksD,EAAW,oBAAqB4kG,KAAwB,OAAgBzgD,EAAc,GAAGrwG,OAAOksD,EAAW,gBAAiBwjG,IAAmBr/C,IAGx2B4jD,GAA4B,gBAAoB,GAAe,CACjEp1G,IAAKs3C,GACLhqC,SAAUA,EACVD,UAAWA,EACXlrD,QAAS4nF,GACTiC,aAAckpE,GACd1R,eAAgBA,GAChBlwJ,UAAWA,EACXqrF,eAAgBA,EAChByvE,cAAeA,EACfC,kBAAmBA,EACnB3lI,UAAWA,EACX8sF,yBAA0BA,EAC1B+4C,eAAgBA,EAChBC,cAAeA,EACf/jE,UAAWA,EACXvD,kBAAmBA,EACnB1D,kBAAmBA,EACnBr1B,MAAO2hG,EACPrqE,kBAAmB,WACjB,OAAOsrE,GAAe17J,OACxB,EACA+wF,qBAAsButE,GACtB/+D,kBA7GF,WACEuV,GAAY,CAAC,EACf,GA4GG+nD,GAAwC,eAAmBA,GAA0B,CACtFlyG,IAAKmyG,KACW,gBAAoB,IAAU,OAAS,CAAC,EAAGltJ,EAAO,CAClEwmJ,OAAQsF,GACR1jG,UAAWA,EACX65F,aAAc+K,GACdjyG,IAAKgxG,GACL1vJ,GAAIA,EACJ05I,WAAY6V,GACZhI,qBAAsBA,EACtBE,KAAMA,EACN1B,mBAAoBA,EACpBgC,UAAWA,EACXj7H,OAAQwhI,EACRloG,KAAM6hC,GACN+/D,aAAcA,GACdsB,YAAaA,EACb7rG,YAAagzG,GACbxG,SAAUoH,GACVnH,eAtU2B,SAAgCoH,GAEtDA,GAAeA,EAAWnxI,QAG/B8pI,EAASqH,EAAY,CACnB3zI,OAAQ,UAEZ,EA+TEwqF,SApOqB,SAA0Bx2G,GAC/C,IAAIoiK,EAAYzF,EAAczxJ,QAAO,SAAUrP,GAC7C,OAAOA,IAAMmE,CACf,IACA48J,EAAsBwF,EAAW,CAC/B9+J,KAAM,SACN63B,OAAQ,CAACn7B,IAEb,EA6NEq4J,eAAgBA,OAkClB,OA1BEoJ,GADExC,GACWkD,GAEa,gBAAoB,OAAO,OAAS,CAC5D5zJ,UAAW2zJ,IACVrE,GAAU,CACX9wG,IAAKie,GACLopD,YApLsB,SAA6B1uH,GACrD,IAAI28J,EACAh/J,EAASqC,EAAMrC,OACf01F,EAA8D,QAA9CspE,EAAsBh+D,GAAWjiG,eAA6C,IAAxBigK,OAAiC,EAASA,EAAoBvG,kBAGxI,GAAI/iE,GAAgBA,EAAa7uB,SAAS7mE,GAAS,CACjD,IAAIkwH,EAAYt1H,YAAW,WACzB,IAMMqkK,EANF3/J,EAAQ89J,GAAiB5yJ,QAAQ0lH,IACtB,IAAX5wH,GACF89J,GAAiB1kK,OAAO4G,EAAO,GAEjC87J,KACK5pE,IAAWkE,EAAa7uB,SAAS5kE,SAASovH,gBAEK,QAAjD4tC,EAAwBvE,GAAY37J,eAA+C,IAA1BkgK,GAA4CA,EAAsB5qG,OAEhI,IACA+oG,GAAiBvlK,KAAKq4H,EACxB,CACA,IAAK,IAAIpxB,EAAQ5mG,UAAUC,OAAQ+mK,EAAW,IAAInnI,MAAM+mE,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IAC5GmgE,EAASngE,EAAQ,GAAK7mG,UAAU6mG,GAElCgyB,UAA0DA,GAAYp4H,WAAM,EAAQ,CAAC0J,GAAOwI,OAAOq0J,GACrG,EA6JIzqG,UA9SoB,SAA2BpyD,GACjD,IAsCM88J,EAtCFC,EAAYnC,KACZrH,EAAQvzJ,EAAMuzJ,MAelB,GAdIA,IAAUnxC,GAAA,EAAQC,QAEP,aAAT+tC,GACFpwJ,EAAM0B,iBAIHkvF,IACH+/D,IAAa,IAGjBkK,KAAezB,IAGX7F,IAAUnxC,GAAA,EAAQw+B,YAAcmc,GAAazqG,KAAa8mG,IAAqBnC,EAAcnhK,OAAQ,CAGvG,IAFA,IAAIknK,GAAqB,OAAmB/F,GACxCgG,EAAsB,KACjB9mK,EAAI6mK,EAAmBlnK,OAAS,EAAGK,GAAK,EAAGA,GAAK,EAAG,CAC1D,IAAIuG,EAAUsgK,EAAmB7mK,GACjC,IAAKuG,EAAQi4D,SAAU,CACrBqoG,EAAmB3mK,OAAOF,EAAG,GAC7B8mK,EAAsBvgK,EACtB,KACF,CACF,CACIugK,GACF/F,EAAsB8F,EAAoB,CACxCp/J,KAAM,SACN63B,OAAQ,CAACwnI,IAGf,CACA,IAAK,IAAIz+G,EAAO3oD,UAAUC,OAAQ87E,EAAO,IAAIl8C,MAAM8oB,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IAClGmzB,EAAKnzB,EAAO,GAAK5oD,UAAU4oD,GAEzBmyC,IAAc0nE,GAAQ57J,UAEvBogK,EAAoBxE,GAAQ57J,SAAS01D,UAAU97D,MAAMwmK,EAAmB,CAAC98J,GAAOwI,OAAOopE,IAE1Fxf,UAAsDA,GAAU97D,WAAM,EAAQ,CAAC0J,GAAOwI,OAAOopE,GAC/F,EAoQI2wE,QAjQkB,SAAyBviJ,GAC7C,IAAK,IAAIk7F,EAAQrlG,UAAUC,OAAQ87E,EAAO,IAAIl8C,MAAMwlE,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACxGvpB,EAAKupB,EAAQ,GAAKtlG,UAAUslG,GAG5B,IAAI+hE,EADFtsE,IAAc0nE,GAAQ57J,UAEvBwgK,EAAoB5E,GAAQ57J,SAAS6lJ,QAAQjsJ,MAAM4mK,EAAmB,CAACl9J,GAAOwI,OAAOopE,IAExF2wE,UAAkDA,GAAQjsJ,WAAM,EAAQ,CAAC0J,GAAOwI,OAAOopE,GACzF,EAyPI+/E,QAzOmB,WACrBmH,IAAe,GACVnkG,IACCg9F,KAAYmJ,GAASp+J,SACvBi1J,GAAQr7J,WAAM,EAAQT,WAIpBw3F,EAAWjzF,SAAS,UACtBu2J,IAAa,IAGjBmK,GAASp+J,SAAU,CACrB,EA6NI8lJ,OA5NkB,WACpBsW,IAAe,GAAO,WACpBgC,GAASp+J,SAAU,EACnBi0J,IAAa,EACf,IACIh8F,IAGAykG,KAEW,SAAThJ,EACFwC,EAASwG,GAAmB,CAC1B9yI,OAAQ,WAEQ,aAAT8pI,GAETwC,EAAS,GAAI,CACXtsI,OAAQ,UAIVk8H,IACFA,GAAOlsJ,WAAM,EAAQT,WAEzB,IAqMMgjK,KAAgBjoE,IAA2B,gBAAoB,OAAQ,CACzE7vF,MAAO,CACLiC,MAAO,EACPC,OAAQ,EACRm9C,SAAU,WACVG,SAAU,SACV32C,QAAS,GAEX,YAAa,UACZ,GAAGpB,OAAOyuJ,EAAchxI,KAAI,SAAU6gC,GACvC,IAAIjF,EAAQiF,EAAKjF,MACfzqD,EAAQ0vD,EAAK1vD,MACf,MAAO,CAAC,SAAU,UAAUgD,UAAS,QAAQynD,IAAUA,EAAQzqD,CACjE,IAAGknB,KAAK,QAASm+I,GAAcd,GAAWU,IAAoBC,IAE5C,gBAAoBlV,GAAkBnxF,SAAU,CAClE7+D,MAAOwkK,IACNG,GACL,IAMA,UIxkBA,SAAS3hK,GAASG,EAAM4iK,GACtB,OAAO,GAAQ5iK,GAAM+jB,KAAK,IAAIzC,cAAczhB,SAAS+iK,EACvD,CACA,ICLI,GAAO,EAGA,IAAqD,EAAAzlF,GAAA,KAgBjD,SAAS,GAAM/uE,GAE5B,IAAI84D,EAAkB,aACpBC,GAAmB,QAAeD,EAAiB,GACnDkW,EAAUjW,EAAiB,GAC3BkW,EAAalW,EAAiB,GAIhC,OAHA,aAAgB,WAnBX,IACDmW,EAmBFD,EAAW,aAAapvE,QAftB,IACFqvE,EAAQ,GACR,IAAQ,GAERA,EAAQ,cAEHA,IAUP,GAAG,IACIlvE,GAAMgvE,CACf,CC9BA,IAAI,GAAY,CAAC,WAAY,SAC3B,GAAa,CAAC,YAgBT,SAAS,GAAsBylF,GACpC,IAAIC,EAAaxnK,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,IAAmBA,UAAU,GAChF,OAAO,QAAQunK,GAAOn3I,KAAI,SAAU0vB,EAAM14C,GACxC,IAAmB,iBAAqB04C,KAAUA,EAAK/3C,KACrD,OAAO,KAET,IAAIq1D,EAAQtd,EACV2nH,EAAmBrqG,EAAMr1D,KAAK0/J,iBAC9BxnI,EAAMm9B,EAAMn9B,IACZynI,EAActqG,EAAM3mD,MACpBxH,EAAWy4J,EAAYz4J,SACvBq0E,GAAY,QAAyBokF,EAAa,IACpD,OAAIF,IAAeC,EAzBvB,SAA6B3nH,GAC3B,IAAImR,EAAOnR,EACT7f,EAAMgxB,EAAKhxB,IACX0nI,EAAa12G,EAAKx6C,MAClBxH,EAAW04J,EAAW14J,SACtB1N,EAAQomK,EAAWpmK,MACnB+hF,GAAY,QAAyBqkF,EAAY,IACnD,OAAO,QAAc,CACnB1nI,IAAKA,EACL1+B,WAAiBs0B,IAAVt0B,EAAsBA,EAAQ0+B,EACrChxB,SAAUA,GACTq0E,EACL,CAcaskF,CAAoB9nH,IAEtB,SAAc,QAAc,CACjC7f,IAAK,oBAAoBttB,OAAe,OAARstB,EAAe74B,EAAQ64B,EAAK,MAC5D+rB,MAAO/rB,GACNqjD,GAAY,CAAC,EAAG,CACjB/+C,QAAS,GAAsBt1B,IAEnC,IAAGU,QAAO,SAAUmV,GAClB,OAAOA,CACT,GACF,CCrCe,SAAS+iJ,GAAWpoK,GACjC,IAAIqoK,EAAU,WACdA,EAAQjhK,QAAUpH,EAClB,IAAIsoK,EAAU,eAAkB,WAC9B,OAAOD,EAAQjhK,QAAQpG,MAAMqnK,EAAS9nK,UACxC,GAAG,IACH,OAAO+nK,CACT,CCVA,IAAIC,GAAW,WACb,OAAO,IACT,EACAA,GAASP,kBAAmB,EAC5B,UCJIlb,GAAS,WACX,OAAO,IACT,EACAA,GAAO0b,gBAAiB,EACxB,UCEIC,GAAsB,cAAiB,SAAUj3G,EAAMO,GACzD,IAAIpkD,EAAS6jD,EAAK7jD,OAChBm1E,EAAStxB,EAAKsxB,OACdtzE,EAAWgiD,EAAKhiD,SAChB4vD,EAAY5N,EAAK4N,UACjBspG,EAAgBl3G,EAAKk3G,cACrBC,EAAan3G,EAAKm3G,WAChBzjF,EAAa,CAAC,EACd0jF,EAAa,CACf59G,QAAS,OACTysD,cAAe,UAgBjB,YAderhF,IAAX0sD,IACFoC,EAAa,CACXv3E,OAAQA,EACRm9C,SAAU,WACVG,SAAU,UAEZ29G,GAAa,SAAc,QAAc,CAAC,EAAGA,GAAa,CAAC,EAAG,CAC5Dn1J,UAAW,cAAcP,OAAO4vE,EAAQ,OACxCh4B,SAAU,WACVn8C,KAAM,EACN2D,MAAO,EACP1D,IAAK,KAGW,gBAAoB,MAAO,CAC7CnD,MAAOy5E,GACO,gBAAoB,GAAgB,CAClDiK,SAAU,SAAkBxxB,GACPA,EAAM8Q,cACLi6F,GAClBA,GAEJ,GACc,gBAAoB,OAAO,OAAS,CAClDj9J,MAAOm9J,EACPr1J,UAAW,KAAW,OAAgB,CAAC,EAAG,GAAGL,OAAOksD,EAAW,iBAAkBA,IACjFrN,IAAKA,GACJ42G,GAAan5J,IAClB,IACAi5J,GAAOzyG,YAAc,SACrB,UCzCA,SAAS6yG,GAAShlK,GAChB,MAAO,YAAaA,EAAIA,EAAE0K,QAAQ,GAAGqtI,MAAQ/3I,EAAE+3I,KACjD,CACA,IAAIktB,GAAyB,SAAU36E,IACrC,QAAU26E,EAAW36E,GACrB,IAAI9sF,GAAS,QAAaynK,GAC1B,SAASA,IACP,IAAI1oK,GACJ,OAAgBT,KAAMmpK,GACtB,IAAK,IAAI5/G,EAAO3oD,UAAUC,OAAQH,EAAO,IAAI+/B,MAAM8oB,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E9oD,EAAK8oD,GAAQ5oD,UAAU4oD,GA6HzB,OA3HA/oD,EAAQiB,EAAOE,KAAKP,MAAMK,EAAQ,CAAC1B,MAAMuT,OAAO7S,KAC1C0oK,QAAU,KAChB3oK,EAAM4oK,aAA4B,cAClC5oK,EAAM6oK,SAAwB,cAC9B7oK,EAAM8oK,eAAiB,KACvB9oK,EAAM8iD,MAAQ,CACZ95C,UAAU,EACVwyI,MAAO,KACPutB,SAAU,KACVj1J,SAAS,GAEX9T,EAAMgpK,YAAc,WAClB9kK,aAAalE,EAAM8oK,gBACnB9oK,EAAM2+D,SAAS,CACb7qD,SAAS,IAEX9T,EAAM8oK,eAAiBjmK,YAAW,WAChC7C,EAAM2+D,SAAS,CACb7qD,SAAS,GAEb,GAAG,IACL,EACA9T,EAAMipK,sBAAwB,SAAUxlK,GACtCA,EAAEuI,gBACJ,EACAhM,EAAMkpK,qBAAuB,SAAUzlK,GACrCA,EAAEye,kBACFze,EAAEuI,gBACJ,EAEAhM,EAAMmpK,YAAc,WAClB1mK,OAAOwH,iBAAiB,YAAajK,EAAM2mG,aAC3ClkG,OAAOwH,iBAAiB,UAAWjK,EAAMi5H,WACzCj5H,EAAM6oK,SAAS7hK,QAAQiD,iBAAiB,YAAajK,EAAM2mG,aAC3D3mG,EAAM6oK,SAAS7hK,QAAQiD,iBAAiB,WAAYjK,EAAMi5H,UAC5D,EACAj5H,EAAMopK,aAAe,WACnB3mK,OAAO2H,oBAAoB,YAAapK,EAAM2mG,aAC9ClkG,OAAO2H,oBAAoB,UAAWpK,EAAMi5H,WACxCj5H,EAAM6oK,SAAS7hK,UACjBhH,EAAM6oK,SAAS7hK,QAAQoD,oBAAoB,YAAapK,EAAM2mG,aAC9D3mG,EAAM6oK,SAAS7hK,QAAQoD,oBAAoB,WAAYpK,EAAMi5H,YAE/DtqD,GAAA,EAAI3pC,OAAOhlC,EAAM2oK,QACnB,EAEA3oK,EAAMg5H,YAAc,SAAUv1H,GAC5B,IAAI4lK,EAAcrpK,EAAM4W,MAAMyyJ,YAC9BrpK,EAAM2+D,SAAS,CACb31D,UAAU,EACVwyI,MAAOitB,GAAShlK,GAChBslK,SAAU/oK,EAAMspK,WAElBD,IACArpK,EAAMmpK,cACN1lK,EAAEye,kBACFze,EAAEuI,gBACJ,EACAhM,EAAM2mG,YAAc,SAAUljG,GAC5B,IAAIuqJ,EAAchuJ,EAAM8iD,MACtB95C,EAAWglJ,EAAYhlJ,SACvBwyI,EAAQwS,EAAYxS,MACpButB,EAAW/a,EAAY+a,SACrBhlE,EAAW/jG,EAAM4W,MAAMmtF,SAE3B,GADAp1B,GAAA,EAAI3pC,OAAOhlC,EAAM2oK,SACb3/J,EAAU,CACZ,IACIugK,EAASR,GADCN,GAAShlK,GAAK+3I,GAExBguB,EAAoBxpK,EAAMypK,uBAC1BC,EAAoB1pK,EAAM2pK,uBAC1BnlF,EAAMklF,EAAoBH,EAASG,EAAoB,EACvDE,EAAepwJ,KAAKisJ,KAAKjhF,EAAMglF,GACnCxpK,EAAM2oK,SAAU,EAAAh6F,GAAA,IAAI,WAClBo1B,EAAS6lE,EACX,GACF,CACF,EACA5pK,EAAMi5H,UAAY,WAChB,IAAI4wC,EAAa7pK,EAAM4W,MAAMizJ,WAC7B7pK,EAAM2+D,SAAS,CACb31D,UAAU,IAEZ6gK,IACA7pK,EAAMopK,cACR,EAEAppK,EAAM8pK,cAAgB,WACpB,IAAI9tG,EAAch8D,EAAM4W,MACtBrJ,EAASyuD,EAAYzuD,OAEnBw8J,EAAax8J,EADPyuD,EAAY3rC,MACY,GAGlC,OAFA05I,EAAavwJ,KAAKE,IAAIqwJ,EAxGb,IAyGTA,EAAavwJ,KAAKC,IAAIswJ,EAAYx8J,EAAS,GACpCiM,KAAKwX,MAAM+4I,EACpB,EACA/pK,EAAMypK,qBAAuB,WAC3B,IAAIptG,EAAer8D,EAAM4W,MAGzB,OAFiBylD,EAAaupB,aACnBvpB,EAAa9uD,QACQ,CAClC,EACAvN,EAAM2pK,qBAAuB,WAG3B,OAFa3pK,EAAM4W,MAAMrJ,OACRvN,EAAM8pK,iBACO,CAChC,EACA9pK,EAAMspK,OAAS,WACb,IAAIjrE,EAAYr+F,EAAM4W,MAAMynF,UACxBmrE,EAAoBxpK,EAAMypK,uBAC1BC,EAAoB1pK,EAAM2pK,uBAC9B,OAAkB,IAAdtrE,GAAyC,IAAtBmrE,EACd,EAECnrE,EAAYmrE,EACTE,CACf,EAEA1pK,EAAMgqK,WAAa,WACjB,IAAI1rG,EAAet+D,EAAM4W,MACvBrJ,EAAS+wD,EAAa/wD,OAExB,OADiB+wD,EAAasnB,aACRr4E,CACxB,EACOvN,CACT,CA0EA,OAzEA,QAAa0oK,EAAW,CAAC,CACvBtoI,IAAK,oBACL1+B,MAAO,WACLnC,KAAKqpK,aAAa5hK,QAAQiD,iBAAiB,aAAc1K,KAAK0pK,uBAC9D1pK,KAAKspK,SAAS7hK,QAAQiD,iBAAiB,aAAc1K,KAAKy5H,YAC5D,GACC,CACD54F,IAAK,qBACL1+B,MAAO,SAA4BuoK,GAC7BA,EAAU5rE,YAAc9+F,KAAKqX,MAAMynF,WACrC9+F,KAAKypK,aAET,GACC,CACD5oI,IAAK,uBACL1+B,MAAO,WACL,IAAIwoK,EAAuBC,EAC3B5qK,KAAK6pK,eACmD,QAAvDc,EAAwB3qK,KAAKqpK,aAAa5hK,eAA+C,IAA1BkjK,GAA4CA,EAAsB9/J,oBAAoB,aAAc7K,KAAK0pK,uBACrH,QAAnDkB,EAAwB5qK,KAAKspK,SAAS7hK,eAA+C,IAA1BmjK,GAA4CA,EAAsB//J,oBAAoB,aAAc7K,KAAKy5H,aACrK90H,aAAa3E,KAAKupK,eACpB,GACC,CACD1oI,IAAK,SACL1+B,MAEA,WACE,IAAIivJ,EAAepxJ,KAAKujD,MACtB95C,EAAW2nJ,EAAa3nJ,SACxB8K,EAAU68I,EAAa78I,QACrB+qD,EAAet/D,KAAKqX,MACtBooD,EAAYH,EAAaG,UACzB3kC,EAAYwkC,EAAaxkC,UACvB+vI,EAAa7qK,KAAKuqK,gBAClBt7J,EAAMjP,KAAK+pK,SACXe,EAAY9qK,KAAKyqK,aACjBM,EAAgBD,GAAav2J,EAC7By2J,EAAmC,QAAdlwI,EAAsB,CAC7C9rB,KAAM,GACJ,CACF2D,MAAO,GAET,OAAoB,gBAAoB,MAAO,CAC7Cy/C,IAAKpyD,KAAKqpK,aACVz1J,UAAW,IAAW,GAAGL,OAAOksD,EAAW,eAAe,OAAgB,CAAC,EAAG,GAAGlsD,OAAOksD,EAAW,mBAAoBqrG,IACvHh/J,OAAO,SAAc,QAAc,CACjCiC,MAAO,EACPkB,IAAK,EACLw0E,OAAQ,GACPunF,GAAqB,CAAC,EAAG,CAC1B7/G,SAAU,WACVE,QAAS0/G,EAAgB,KAAO,SAElCtxC,YAAaz5H,KAAK2pK,qBAClBviE,YAAapnG,KAAKypK,aACJ,gBAAoB,MAAO,CACzCr3G,IAAKpyD,KAAKspK,SACV11J,UAAW,IAAW,GAAGL,OAAOksD,EAAW,qBAAqB,OAAgB,CAAC,EAAG,GAAGlsD,OAAOksD,EAAW,2BAA4Bh2D,IACrIqC,MAAO,CACLiC,MAAO,OACPC,OAAQ68J,EACR57J,IAAKA,EACLD,KAAM,EACNm8C,SAAU,WACVof,WAAY,qBACZsC,aAAc,GACd9gE,OAAQ,UACRyqE,WAAY,QAEdijD,YAAaz5H,KAAKy5H,cAEtB,KAEK0vC,CACT,CAhN6B,CAgN3B,aC5NK,SAAS,GAAKt3G,GACnB,IAAIhiD,EAAWgiD,EAAKhiD,SAClBkoF,EAASlmC,EAAKkmC,OACZkzE,EAAU,eAAkB,SAAUvqH,GACxCq3C,EAAOr3C,EACT,GAAG,IACH,OAAoB,eAAmB7wC,EAAU,CAC/CuiD,IAAK64G,GAET,CCPA,IAAIC,GAAwB,WAC1B,SAASA,KACP,OAAgBlrK,KAAMkrK,GACtBlrK,KAAKmrK,UAAO,EACZnrK,KAAKmrK,KAAO3zJ,OAAO0wB,OAAO,KAC5B,CAYA,OAXA,QAAagjI,EAAU,CAAC,CACtBrqI,IAAK,MACL1+B,MAAO,SAAa0+B,EAAK1+B,GACvBnC,KAAKmrK,KAAKtqI,GAAO1+B,CACnB,GACC,CACD0+B,IAAK,MACL1+B,MAAO,SAAa0+B,GAClB,OAAO7gC,KAAKmrK,KAAKtqI,EACnB,KAEKqqI,CACT,CAlB4B,GAmB5B,MCnBe,SAASE,GAAY1lJ,EAAMmoH,EAAQw9B,GAChD,IAAI7+F,EAAkB,WAAe9mD,GACnC+mD,GAAmB,QAAeD,EAAiB,GACnD8+F,EAAW7+F,EAAiB,GAC5B8+F,EAAc9+F,EAAiB,GAC7BE,EAAmB,WAAe,MACpCC,GAAmB,QAAeD,EAAkB,GACpD6+F,EAAW5+F,EAAiB,GAC5B6+F,EAAc7+F,EAAiB,GASjC,OARA,aAAgB,WACd,IAAIp6C,ECsBD,SAA2Bk5I,EAAYC,EAAY99B,GACxD,IAEI+9B,EACAC,EAHAC,EAAYJ,EAAW7qK,OACvB0wB,EAAYo6I,EAAW9qK,OAG3B,GAAkB,IAAdirK,GAAiC,IAAdv6I,EACrB,OAAO,KAELu6I,EAAYv6I,GACdq6I,EAAYF,EACZG,EAAWF,IAEXC,EAAYD,EACZE,EAAWH,GAEb,IAAIK,EAAc,CAChBC,gBAAgB,GAElB,SAASC,EAAWx0J,GAClB,YAAagf,IAAThf,EACKo2H,EAAOp2H,GAETs0J,CACT,CAIA,IAFA,IAAIG,EAAY,KACZ7uG,EAA+C,IAApCpjD,KAAKoG,IAAIyrJ,EAAYv6I,GAC3BrwB,EAAI,EAAGA,EAAI2qK,EAAShrK,OAAQK,GAAK,EAAG,CAC3C,IAAIirK,EAAWF,EAAWL,EAAU1qK,IAEpC,GAAIirK,IADUF,EAAWJ,EAAS3qK,IACR,CACxBgrK,EAAYhrK,EACZm8D,EAAWA,GAAY8uG,IAAaF,EAAWJ,EAAS3qK,EAAI,IAC5D,KACF,CACF,CACA,OAAqB,OAAdgrK,EAAqB,KAAO,CACjClkK,MAAOkkK,EACP7uG,SAAUA,EAEd,CD9De+uG,CAAkBd,GAAY,GAAI5lJ,GAAQ,GAAImoH,QACQp3G,KAA5DjE,aAAmC,EAASA,EAAKxqB,SACpDqjK,SAAgDA,EAAO74I,EAAKxqB,OAC5DyjK,EAAY/lJ,EAAK8M,EAAKxqB,SAExBujK,EAAY7lJ,EACd,GAAG,CAACA,IACG,CAAC8lJ,EACV,CEpBA,IACA,GADqF,YAApD,oBAAd9rH,UAA4B,aAAc,QAAQA,aAA4B,WAAWp6C,KAAKo6C,UAAUF,WCA3H,YAA0B6sH,EAAeC,GAEvC,IAAInmE,GAAU,IAAA71B,SAAO,GACjBi8F,GAAiB,IAAAj8F,QAAO,MAS5B,IAAIk8F,GAAgB,IAAAl8F,QAAO,CACzBrhE,IAAKo9J,EACL5oF,OAAQ6oF,IAIV,OAFAE,EAAc/kK,QAAQwH,IAAMo9J,EAC5BG,EAAc/kK,QAAQg8E,OAAS6oF,EACxB,SAAUG,GACf,IAAIC,EAAe9rK,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,IAAmBA,UAAU,GAC9E+rK,EAEJF,EAAS,GAAKD,EAAc/kK,QAAQwH,KAEpCw9J,EAAS,GAAKD,EAAc/kK,QAAQg8E,OAQpC,OAPIipF,GAAgBC,GAElBhoK,aAAa4nK,EAAe9kK,SAC5B0+F,EAAQ1+F,SAAU,GACRklK,IAAgBxmE,EAAQ1+F,UAxBpC9C,aAAa4nK,EAAe9kK,SAC5B0+F,EAAQ1+F,SAAU,EAClB8kK,EAAe9kK,QAAUnE,YAAW,WAClC6iG,EAAQ1+F,SAAU,CACpB,GAAG,MAuBK0+F,EAAQ1+F,SAAWklK,CAC7B,CACD,ECjCD,IAAIC,GAAa,GAAK,GCGtB,IAAI,GAAY,CAAC,YAAa,YAAa,SAAU,aAAc,aAAc,QAAS,OAAQ,WAAY,UAAW,UAAW,YAAa,YAAa,WAAY,kBAAmB,cAczLC,GAAa,GACbC,GAAc,CAChBx7E,UAAW,OACXy7E,eAAgB,QAEX,SAASC,GAAQ31J,EAAO+6C,GAC7B,IAAI8lC,EAAmB7gF,EAAMooD,UAC3BA,OAAiC,IAArBy4B,EAA8B,kBAAoBA,EAC9DtkF,EAAYyD,EAAMzD,UAClB5F,EAASqJ,EAAMrJ,OACfi/J,EAAa51J,EAAM41J,WACnBC,EAAoB71J,EAAM81J,WAC1BA,OAAmC,IAAtBD,GAAsCA,EACnDphK,EAAQuL,EAAMvL,MACd4Z,EAAOrO,EAAMqO,KACb7V,EAAWwH,EAAMxH,SACjBijJ,EAAUz7I,EAAMy7I,QAChBnrC,EAAUtwG,EAAMswG,QAChB7sF,EAAYzjB,EAAMyjB,UAClBi4H,EAAmB17I,EAAMmoD,UACzBc,OAAiC,IAArByyF,EAA8B,MAAQA,EAClDvuD,EAAWntF,EAAMmtF,SACjBsE,EAAkBzxF,EAAMyxF,gBACxBkgE,EAAa3xJ,EAAM2xJ,WACnB9kF,GAAY,QAAyB7sE,EAAO,IAE1C+1J,KAA4B,IAAZzlD,IAAqB35G,IAAUi/J,GAC/CI,EAAYD,GAAc1nJ,GAAQunJ,EAAavnJ,EAAK7kB,OAASmN,EAC7DqvE,GAAY,IAAAC,UAAS,GACvBC,GAAa,QAAeF,EAAW,GACvCyhB,EAAYvhB,EAAW,GACvB+vF,EAAe/vF,EAAW,GACxBG,GAAa,IAAAJ,WAAS,GACxBK,GAAa,QAAeD,EAAY,GACxC6vF,EAAe5vF,EAAW,GAC1B6vF,EAAkB7vF,EAAW,GAC3B4pF,EAAkB,IAAW9nG,GAAW,OAAgB,CAAC,EAAG,GAAGlsD,OAAOksD,EAAW,QAAuB,QAAd3kC,GAAsBlnB,GAChHyqD,EAAa34C,GAAQmnJ,GACrBY,GAAe,IAAAn9F,UACfo9F,GAAiB,IAAAp9F,UACjBq9F,GAAe,IAAAr9F,UAEfu9D,EAAS,eAAkB,SAAUp2H,GACvC,MAAuB,mBAAZq7I,EACFA,EAAQr7I,GAEVA,aAAmC,EAASA,EAAKq7I,EAC1D,GAAG,CAACA,IACA8a,EAAe,CACjB//B,OAAQA,GAGV,SAASggC,EAAc7D,GACrBsD,GAAa,SAAUzvG,GACrB,IAMIiwG,EA4FR,SAAqBzD,GACnB,IAAIL,EAASK,EACRpoJ,OAAOC,MAAM6rJ,GAAmBtmK,WACnCuiK,EAAS/vJ,KAAKC,IAAI8vJ,EAAQ+D,GAAmBtmK,UAG/C,OADAuiK,EAAS/vJ,KAAKE,IAAI6vJ,EAAQ,GACnBA,CACT,CAnGqBgE,CALK,mBAAXhE,EACDA,EAAOnsG,GAEPmsG,GAIV,OADAyD,EAAahmK,QAAQq3F,UAAYgvE,EAC1BA,CACT,GACF,CAGA,IAAIG,GAAW,IAAA39F,QAAO,CACpB5pD,MAAO,EACPmI,IAAKwvC,EAAWx9D,SAEdqtK,GAAc,IAAA59F,UACd69F,EAAe/C,GAAY/sG,EAAYwvE,GAEzC29B,GADgB,QAAe2C,EAAc,GACpB,GAC3BD,EAAYzmK,QAAU+jK,EAEtB,IAAI4C,EC1FS,SAAoBvgC,EAAQwgC,EAAWC,GACpD,IAAI9hG,EAAkB,WAAe,GACnCC,GAAmB,QAAeD,EAAiB,GACnD+hG,EAAc9hG,EAAiB,GAC/B+hG,EAAiB/hG,EAAiB,GAChCgiG,GAAc,IAAAn+F,QAAO,IAAIvxD,KACzB2vJ,GAAa,IAAAp+F,QAAO,IAAI,IACxBq+F,GAAgB,IAAAr+F,UACpB,SAASs+F,IACPx/F,GAAA,EAAI3pC,OAAOkpI,EAAclnK,QAC3B,CACA,SAASonK,IACPD,IACAD,EAAclnK,SAAU,EAAA2nE,GAAA,IAAI,WAC1Bq/F,EAAYhnK,QAAQW,SAAQ,SAAUuH,EAASkxB,GAC7C,GAAIlxB,GAAWA,EAAQm6D,aAAc,CACnC,IAAIglG,GAAc,EAAA1/E,GAAA,GAAYz/E,GAC1Bm/D,EAAeggG,EAAYhgG,aAC3B4/F,EAAWjnK,QAAQzF,IAAI6+B,KAASiuC,GAClC4/F,EAAWjnK,QAAQvF,IAAI2+B,EAAKiuI,EAAYhgG,aAE5C,CACF,IAEA0/F,GAAe,SAAUrpJ,GACvB,OAAOA,EAAI,CACb,GACF,GACF,CAsBA,OAHA,IAAA+4D,YAAU,WACR,OAAO0wF,CACT,GAAG,IACI,CArBP,SAAwBn3J,EAAMu7G,GAC5B,IAAInyF,EAAMgtG,EAAOp2H,GACbomD,EAAS4wG,EAAYhnK,QAAQzF,IAAI6+B,GACjCmyF,GACFy7C,EAAYhnK,QAAQvF,IAAI2+B,EAAKmyF,GAC7B67C,KAEAJ,EAAYhnK,QAAQ4+B,OAAOxF,IAGxBg9B,IAAYm1D,IACXA,EACFq7C,SAAsDA,EAAU52J,GAEhE62J,SAA4DA,EAAa72J,GAG/E,EAIwBo3J,EAAeH,EAAWjnK,QAAS8mK,EAC7D,CDuCoBQ,CAAWlhC,EAAQ,KAAM,MACzCmhC,GAAe,QAAeZ,EAAa,GAC3Ca,EAAiBD,EAAa,GAC9BH,EAAgBG,EAAa,GAC7BE,EAAUF,EAAa,GACvBG,EAAoBH,EAAa,GAE/BI,EAAiB,WAAc,WAC/B,IAAKhC,EACH,MAAO,CACL/mF,kBAAc5vD,EACd/P,MAAO,EACPmI,IAAKwvC,EAAWx9D,OAAS,EACzBsiF,YAAQ1sD,GAKV,IAAI44I,EADN,IAAKhC,EAEH,MAAO,CACLhnF,cAAoE,QAApDgpF,EAAwB3B,EAAejmK,eAA+C,IAA1B4nK,OAAmC,EAASA,EAAsBvgG,eAAiB,EAC/JpoD,MAAO,EACPmI,IAAKwvC,EAAWx9D,OAAS,EACzBsiF,YAAQ1sD,GAQZ,IALA,IACI64I,EACAC,EACAC,EAHAC,EAAU,EAIVC,EAAUrxG,EAAWx9D,OAChBK,EAAI,EAAGA,EAAIwuK,EAASxuK,GAAK,EAAG,CACnC,IAAIuW,EAAO4mD,EAAWn9D,GAClB2/B,EAAMgtG,EAAOp2H,GACbk4J,EAAcT,EAAQltK,IAAI6+B,GAC1B+uI,EAAoBH,QAA2Bh5I,IAAhBk5I,EAA4B1C,EAAa0C,GAExEC,GAAqB9wE,QAA4BroE,IAAf64I,IACpCA,EAAapuK,EACbquK,EAAcE,GAGZG,EAAoB9wE,EAAY9wF,QAAuByoB,IAAb+4I,IAC5CA,EAAWtuK,GAEbuuK,EAAUG,CACZ,CAYA,YAVmBn5I,IAAf64I,IACFA,EAAa,EACbC,EAAc,EACdC,EAAWv1J,KAAKisJ,KAAKl4J,EAASi/J,SAEfx2I,IAAb+4I,IACFA,EAAWnxG,EAAWx9D,OAAS,GAI1B,CACLwlF,aAAcopF,EACd/oJ,MAAO4oJ,EACPzgJ,IAJF2gJ,EAAWv1J,KAAKC,IAAIs1J,EAAW,EAAGnxG,EAAWx9D,QAK3CsiF,OAAQosF,EAEZ,GAAG,CAAClC,EAAWD,EAAYtuE,EAAWzgC,EAAY8wG,EAAmBnhK,IACrEq4E,GAAe+oF,EAAe/oF,aAC9B3/D,GAAQ0oJ,EAAe1oJ,MACvBmI,GAAMugJ,EAAevgJ,IACrBs0D,GAASisF,EAAejsF,OAC1B8qF,EAASxmK,QAAQif,MAAQA,GACzBunJ,EAASxmK,QAAQonB,IAAMA,GAEvB,IAAIghJ,GAAkBxpF,GAAer4E,EACjC+/J,IAAqB,IAAAz9F,QAAOu/F,IAChC9B,GAAmBtmK,QAAUooK,GAS7B,IAAIxD,GAAgBvtE,GAAa,EAC7BwtE,GAAmBxtE,GAAa+wE,GAChClD,GAAemD,GAAgBzD,GAAeC,IAgBlD,IAAIyD,GEjMS,SAAuB1C,EAAWhB,EAAeC,EAAkB0D,GAChF,IAAIC,GAAY,IAAA3/F,QAAO,GACnB4/F,GAAe,IAAA5/F,QAAO,MAEtB6/F,GAAgB,IAAA7/F,QAAO,MACvB8/F,GAAmB,IAAA9/F,SAAO,GAE1Bq8F,EAAemD,GAAgBzD,EAAeC,GA0BlD,MAAO,CAzBP,SAAiBvhK,GACf,GAAKsiK,EAAL,CACAj+F,GAAA,EAAI3pC,OAAOyqI,EAAazoK,SACxB,IAAIglK,EAAS1hK,EAAM0hK,OACnBwD,EAAUxoK,SAAWglK,EACrB0D,EAAc1oK,QAAUglK,EAEpBE,EAAaF,KAEZ,IACH1hK,EAAM0B,iBAERyjK,EAAazoK,SAAU,EAAA2nE,GAAA,IAAI,WAGzB,IAAIihG,EAAgBD,EAAiB3oK,QAAU,GAAK,EACpDuoK,EAAaC,EAAUxoK,QAAU4oK,GACjCJ,EAAUxoK,QAAU,CACtB,IAjBsB,CAkBxB,EAEA,SAAyBsD,GAClBsiK,IACL+C,EAAiB3oK,QAAUsD,EAAMulK,SAAWH,EAAc1oK,QAC5D,EAEF,CF+JuB8oK,CAAcnD,EAAYf,GAAeC,IAAkB,SAAU79J,GACtFo/J,GAAc,SAAU5+J,GAEtB,OADaA,EAAMR,CAErB,GACF,IACA+hK,IAAkB,QAAeT,GAAgB,GACjDU,GAAaD,GAAgB,GAC7BE,GAAkBF,GAAgB,ID1MvB,SAA4BnD,EAAWhK,EAAShjK,GAC7D,IAMIswK,EANAC,GAAa,IAAAtgG,SAAO,GACpBugG,GAAY,IAAAvgG,QAAO,GACnBqe,GAAa,IAAAre,QAAO,MAEpBwgG,GAAc,IAAAxgG,QAAO,MAGrBygG,EAAc,SAAqB7sK,GACrC,GAAI0sK,EAAWnpK,QAAS,CACtB,IAAIupK,EAAW/2J,KAAKisJ,KAAKhiK,EAAE0K,QAAQ,GAAGqtI,OAClCxtI,EAAUoiK,EAAUppK,QAAUupK,EAClCH,EAAUppK,QAAUupK,EAChB3wK,EAASoO,IACXvK,EAAEuI,iBAGJ7H,cAAcksK,EAAYrpK,SAC1BqpK,EAAYrpK,QAAU5C,aAAY,aAE3BxE,EADLoO,GAAWm+J,IACY,IAAS3yJ,KAAKoG,IAAI5R,IAAY,KACnD7J,cAAcksK,EAAYrpK,QAE9B,GAAG,GACL,CACF,EACIwpK,EAAa,WACfL,EAAWnpK,SAAU,EACrBkpK,GACF,EACIO,EAAe,SAAsBhtK,GACvCysK,IACyB,IAArBzsK,EAAE0K,QAAQ/N,QAAiB+vK,EAAWnpK,UACxCmpK,EAAWnpK,SAAU,EACrBopK,EAAUppK,QAAUwS,KAAKisJ,KAAKhiK,EAAE0K,QAAQ,GAAGqtI,OAC3CttD,EAAWlnF,QAAUvD,EAAEwE,OACvBimF,EAAWlnF,QAAQiD,iBAAiB,YAAaqmK,GACjDpiF,EAAWlnF,QAAQiD,iBAAiB,WAAYumK,GAEpD,EACAN,EAAgB,WACVhiF,EAAWlnF,UACbknF,EAAWlnF,QAAQoD,oBAAoB,YAAakmK,GACpDpiF,EAAWlnF,QAAQoD,oBAAoB,WAAYomK,GAEvD,GACA,EAAAhrF,GAAA,IAAgB,WAId,OAHIonF,GACFhK,EAAQ57J,QAAQiD,iBAAiB,aAAcwmK,GAE1C,WACL,IAAIhN,EACqC,QAAxCA,EAAmBb,EAAQ57J,eAA0C,IAArBy8J,GAAuCA,EAAiBr5J,oBAAoB,aAAcqmK,GAC3IP,IACA/rK,cAAcksK,EAAYrpK,QAC5B,CACF,GAAG,CAAC4lK,GACN,CCmJE8D,CAAmB/D,EAAYK,GAAc,SAAUhB,EAAQC,GAC7D,OAAIC,GAAaF,EAAQC,KAGzB+D,GAAW,CACThkK,eAAgB,WAA2B,EAC3CggK,OAAQA,KAEH,EACT,KACA,EAAAxmF,GAAA,IAAgB,WAEd,SAASmrF,EAAsBltK,GACzBkpK,GACFlpK,EAAEuI,gBAEN,CAIA,OAHAghK,EAAahmK,QAAQiD,iBAAiB,QAAS+lK,IAC/ChD,EAAahmK,QAAQiD,iBAAiB,iBAAkBgmK,IACxDjD,EAAahmK,QAAQiD,iBAAiB,sBAAuB0mK,GACtD,WACD3D,EAAahmK,UACfgmK,EAAahmK,QAAQoD,oBAAoB,QAAS4lK,IAClDhD,EAAahmK,QAAQoD,oBAAoB,iBAAkB6lK,IAC3DjD,EAAahmK,QAAQoD,oBAAoB,sBAAuBumK,GAEpE,CACF,GAAG,CAAChE,IAEJ,IAAInJ,GGxOS,SAAqB5zF,EAAc3qD,EAAMwpJ,EAASjC,EAAYp/B,EAAQghC,EAAehB,EAAewD,GACjH,IAAIC,EAAY,WAChB,OAAO,SAAU90H,GAEf,GAAIA,SAMJ,GADA4yB,GAAA,EAAI3pC,OAAO6rI,EAAU7pK,SACF,iBAAR+0C,EACTqxH,EAAcrxH,QACT,GAAIA,GAAwB,YAAjB,QAAQA,GAAmB,CAC3C,IAAIx0C,EACAqsF,EAAQ73C,EAAI63C,MAEdrsF,EADE,UAAWw0C,EACLA,EAAIx0C,MAEJ0d,EAAKw6D,WAAU,SAAUzoE,GAC/B,OAAOo2H,EAAOp2H,KAAU+kC,EAAI3b,GAC9B,IAEF,IAAI0wI,EAAc/0H,EAAI2mC,OACpBA,OAAyB,IAAhBouF,EAAyB,EAAIA,GAEvB,SAASC,EAAW1kD,EAAO2kD,GAC1C,KAAI3kD,EAAQ,IAAMz8C,EAAa5oE,QAA/B,CACA,IAAIuG,EAASqiE,EAAa5oE,QAAQ++E,aAC9BkrF,GAAoB,EACpBC,EAAiBF,EAErB,GAAIzjK,EAAQ,CAOV,IANA,IAAI4jK,EAAcH,GAAep9E,EAE7Bw9E,EAAW,EACXpC,EAAU,EACVqC,EAAa,EACbC,EAAS93J,KAAKC,IAAIwL,EAAK7kB,OAAQmH,GAC1B9G,EAAI,EAAGA,GAAK6wK,EAAQ7wK,GAAK,EAAG,CACnC,IAAI2/B,EAAMgtG,EAAOnoH,EAAKxkB,IACtBuuK,EAAUoC,EACV,IAAIlC,EAAcT,EAAQltK,IAAI6+B,GAE9BgxI,EADAC,EAAarC,QAA2Bh5I,IAAhBk5I,EAA4B1C,EAAa0C,GAE7DzuK,IAAM8G,QAAyByuB,IAAhBk5I,IACjB+B,GAAoB,EAExB,CAEA,IAAIzuE,EAAY,KAChB,OAAQ2uE,GACN,IAAK,MACH3uE,EAAYwsE,EAAUtsF,EACtB,MACF,IAAK,SACH8f,EAAY6uE,EAAa9jK,EAASm1E,EAClC,MACF,QAEI,IAAI2b,EAAYzuB,EAAa5oE,QAAQq3F,UAEjC2wE,EAAU3wE,EACZ6yE,EAAiB,MACRG,EAHQhzE,EAAY9wF,IAI7B2jK,EAAiB,UAIP,OAAd1uE,GAAsBA,IAAc5yB,EAAa5oE,QAAQq3F,WAC3D+uE,EAAc5qE,EAElB,CAEAquE,EAAU7pK,SAAU,EAAA2nE,GAAA,IAAI,WAClBsiG,GACF7C,IAEF2C,EAAW1kD,EAAQ,EAAG6kD,EACxB,GAAG,EApD2C,CAqDhD,CAEAH,CAAW,EACb,OA7EEH,GA8EJ,CACF,CHoJiBW,CAAYvE,EAAcpvG,EAAY6wG,EAASjC,EAAYp/B,EAAQghC,EAAehB,GAAe,WAC9G,IAAIoE,EAC+C,QAAlDA,EAAwBtE,EAAalmK,eAA+C,IAA1BwqK,GAA4CA,EAAsBxI,aAC/H,IACA,sBAA0Br3G,GAAK,WAC7B,MAAO,CACL6xG,SAAUA,GAEd,KAGA,EAAAh+E,GAAA,IAAgB,WACd,GAAI6iB,EAAiB,CACnB,IAAIopE,EAAa7zG,EAAWr3C,MAAMN,GAAOmI,GAAM,GAC/Ci6E,EAAgBopE,EAAY7zG,EAC9B,CACF,GAAG,CAAC33C,GAAOmI,GAAKwvC,IAEhB,IAAI8zG,GI5PS,SAAqBzwD,EAAM4tD,EAAYE,EAAU4C,EAAYC,EAAYxgH,GACtF,IAAIg8E,EAASh8E,EAAKg8E,OAClB,OAAOnsB,EAAK16F,MAAMsoJ,EAAYE,EAAW,GAAGx+I,KAAI,SAAUvZ,EAAMzP,GAC9D,IACI04C,EAAO2xH,EAAW56J,EADP63J,EAAatnK,EACU,CAEtC,GACI64B,EAAMgtG,EAAOp2H,GACjB,OAAoB,gBAAoB,GAAM,CAC5CopB,IAAKA,EACLk3D,OAAQ,SAAgBtQ,GACtB,OAAO2qF,EAAW36J,EAAMgwE,EAC1B,GACC/mC,EACL,GACF,CJ6OqB4xH,CAAYj0G,EAAY33C,GAAOmI,GAAKogJ,EAAgBp/J,EAAU+9J,GAC7E2E,GAAiB,KAUrB,OATIvkK,IACFukK,IAAiB,SAAc,OAAgB,CAAC,EAAGpF,EAAa,SAAW,YAAan/J,GAAS8+J,IAC7FM,IACFmF,GAAejhF,UAAY,SACvBi8E,IACFgF,GAAehnH,cAAgB,UAIjB,gBAAoB,OAAO,OAAS,CACtDz/C,OAAO,SAAc,QAAc,CAAC,EAAGA,GAAQ,CAAC,EAAG,CACjDq/C,SAAU,aAEZv3C,UAAW2zJ,GACVrjF,GAAyB,gBAAoB5jB,EAAW,CACzD1sD,UAAW,GAAGL,OAAOksD,EAAW,WAChC3zD,MAAOymK,GACPngH,IAAKq7G,EACLjpE,SAtFF,SAA0BtgG,GACxB,IAAImmK,EAAenmK,EAAE2E,cAAci2F,UAC/BurE,IAAiBvrE,GACnB+uE,EAAcxD,GAGhB7lE,SAAoDA,EAAStgG,EAC/D,GAgFgB,gBAAoB,GAAQ,CAC1Cu7D,UAAWA,EACXzxD,OAAQq4E,GACRlD,OAAQA,GACR4lF,cAAe8F,EACfz8G,IAAKs7G,EACL1E,WAAYA,GACXmJ,KAAgB/E,GAA2B,gBAAoBjE,GAAW,CAC3E/2G,IAAKu7G,EACLluG,UAAWA,EACXq/B,UAAWA,EACX9wF,OAAQA,EACRq4E,aAAcA,GACdv1D,MAAOutC,EAAWx9D,OAClBi6B,UAAWA,EACX0pE,SA3GF,SAAqB6lE,GAEnBwD,EADaxD,EAEf,EAyGEP,YAAa,WACX0D,GAAgB,EAClB,EACAlD,WAAY,WACVkD,GAAgB,EAClB,IAEJ,CACA,IAAI,GAAoB,aAAiBR,IACzC,GAAK32G,YAAc,OACnB,IK5SA,GL4SA,GMxSA,GADiC,gBAAoB,MCCrD,IAAI,GAAY,CAAC,WAAY,QAAS,WAAY,QAAS,aAgB3D,SAAS,GAAYygB,GACnB,MAA0B,iBAAZA,GAA2C,iBAAZA,CAC/C,CAMA,IAAIisF,GAAa,SAAoBr8H,EAAG0rB,GACtC,IAAIogH,E7CtBG,aAAiBrgB,I6CuBtB1yF,EAAY+yG,EAAc/yG,UAC1B/rD,EAAK8+J,EAAc9+J,GACnBomD,EAAO04G,EAAc14G,KACrBuD,EAAWm1G,EAAcn1G,SACzB89F,EAAOqX,EAAcrX,KACrBhqG,EAAcqhH,EAAcrhH,YAC5By1G,EAAa4L,EAAc5L,WAC3BxE,EAAkBoQ,EAAcpQ,gBAChCqQ,EAAgBD,EAAcC,cAC5Bp/F,EAAoB,aAAiB,IACvCq/F,EAAiBr/F,EAAkBq/F,eACnCC,EAAgBt/F,EAAkBs/F,cAClCC,EAA2Bv/F,EAAkBu/F,yBAC7CC,EAAWx/F,EAAkBw/F,SAC7BC,EAAuBz/F,EAAkBy/F,qBACzCC,EAAY1/F,EAAkB0/F,UAC9BzR,EAAajuF,EAAkBiuF,WAC/B35C,EAAUt0C,EAAkBs0C,QAC5B7sF,EAAYu4C,EAAkBv4C,UAC9Bk4I,EAAa3/F,EAAkB2/F,WAC/BC,EAAiB5/F,EAAkB4/F,eACjCxb,EAAgB,GAAGlkJ,OAAOksD,EAAW,SACrCyzG,GAAqB,EAAA/1F,GAAA,IAAQ,WAC/B,OAAOu1F,CACT,GAAG,CAAC54G,EAAM44G,IAAiB,SAAUp9I,EAAMC,GACzC,OAAOA,EAAK,IAAMD,EAAK,KAAOC,EAAK,EACrC,IAGI8tI,EAAU,SAAa,MACvB8P,EAAkB,SAAyBpoK,GAC7CA,EAAM0B,gBACR,EACI2mK,EAAiB,SAAwB1yK,GACvC2iK,EAAQ57J,SACV47J,EAAQ57J,QAAQw8J,SAAyB,iBAATvjK,EAAoB,CAClDsH,MAAOtH,GACLA,EAER,EAGI2yK,EAAwB,SAA+BrrK,GAGzD,IAFA,IAAIm7E,EAASviF,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,EAC7E45B,EAAM04I,EAAmBryK,OACpBK,EAAI,EAAGA,EAAIs5B,EAAKt5B,GAAK,EAAG,CAC/B,IAAIuG,GAAWO,EAAQ9G,EAAIiiF,EAAS3oD,GAAOA,EACvC84I,EAAwBJ,EAAmBzrK,GAC7CiK,EAAQ4hK,EAAsB5hK,MAC9BgU,EAAO4tJ,EAAsB5tJ,KAC/B,IAAKhU,IAAUgU,EAAKg6C,SAClB,OAAOj4D,CAEX,CACA,OAAQ,CACV,EACI+kE,EAAkB,YAAe,WACjC,OAAO6mG,EAAsB,EAC/B,IACA5mG,GAAmB,QAAeD,EAAiB,GACnD+mG,EAAc9mG,EAAiB,GAC/B+mG,EAAiB/mG,EAAiB,GAChCgnG,EAAY,SAAmBzrK,GACjC,IAAI0rK,EAAe9yK,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,IAAmBA,UAAU,GAClF4yK,EAAexrK,GACf,IAAIqtD,EAAO,CACThkC,OAAQqiJ,EAAe,WAAa,SAIlCC,EAAcT,EAAmBlrK,GAChC2rK,EAILhB,EAAcgB,EAAYxxK,MAAO6F,EAAOqtD,GAHtCs9G,EAAc,MAAO,EAAGt9G,EAI5B,GAGA,IAAA6oB,YAAU,WACRu1F,GAAuC,IAA7Bb,EAAqCS,EAAsB,IAAM,EAC7E,GAAG,CAACH,EAAmBryK,OAAQswD,IAG/B,IAAIyiH,EAAa,eAAkB,SAAUzxK,GAC3C,OAAO4wK,EAAUjxI,IAAI3/B,IAAmB,aAATg5J,CACjC,GAAG,CAACA,GAAM,OAAmB4X,GAAWnwJ,WAAYmwJ,EAAUzuI,QAG9D,IAAA45C,YAAU,WAMR,IAgBMgmF,EAhBFtrC,EAAYt1H,YAAW,WACzB,IAAK+5D,GAAYvD,GAA2B,IAAnBi5G,EAAUzuI,KAAY,CAC7C,IAAIniC,EAAQs+B,MAAMnH,KAAKy5I,GAAW,GAC9B/qK,EAAQkrK,EAAmBhzF,WAAU,SAAUruB,GAEjD,OADWA,EAAKnsC,KACJvjB,QAAUA,CACxB,KACe,IAAX6F,IACFyrK,EAAUzrK,GACVorK,EAAeprK,GAEnB,CACF,IAGI8xD,IAEuC,QAAxCoqG,EAAmBb,EAAQ57J,eAA0C,IAArBy8J,GAAuCA,EAAiBD,cAASxtI,IAEpH,OAAO,WACL,OAAO9xB,aAAai0H,EACtB,CACF,GAAG,CAAC9+D,EAAM3I,EAAauhH,EAAe7xK,SAGtC,IAAIgzK,EAAgB,SAAuB1xK,QAC3Bs0B,IAAVt0B,GACF0wK,EAAS1wK,EAAO,CACd2xK,UAAWf,EAAUjxI,IAAI3/B,KAKxBk7D,GACHupG,GAAW,EAEf,EAqEA,GAlEA,sBAA0Bx0G,GAAK,WAC7B,MAAO,CACL+K,UAAW,SAAmBpyD,GAC5B,IAAIuzJ,EAAQvzJ,EAAMuzJ,MAChByV,EAAUhpK,EAAMgpK,QAClB,OAAQzV,GAEN,KAAKnxC,GAAA,EAAQxqE,EACb,KAAKwqE,GAAA,EAAQ7gE,EACb,KAAK6gE,GAAA,EAAQoxC,GACb,KAAKpxC,GAAA,EAAQqxC,KAET,IAAIr7E,EAAS,EAYb,GAXIm7E,IAAUnxC,GAAA,EAAQoxC,GACpBp7E,GAAU,EACDm7E,IAAUnxC,GAAA,EAAQqxC,KAC3Br7E,EAAS,ECnLhB,uBAAuB79E,KAAKo6C,UAAUs0H,aDoLHD,IACxBzV,IAAUnxC,GAAA,EAAQxqE,EACpBwgC,EAAS,EACAm7E,IAAUnxC,GAAA,EAAQ7gE,IAC3B62B,GAAU,IAGC,IAAXA,EAAc,CAChB,IAAI8wF,EAAkBZ,EAAsBE,EAAcpwF,EAAQA,GAClEiwF,EAAea,GACfR,EAAUQ,GAAiB,EAC7B,CACA,MAIJ,KAAK9mD,GAAA,EAAQC,MAGT,IAAI31G,EAAOy7J,EAAmBK,GAC1B97J,IAASA,EAAKiO,KAAKg6C,SACrBm0G,EAAcp8J,EAAKtV,OAEnB0xK,OAAcp9I,GAEZqjC,GACF/uD,EAAM0B,iBAER,MAIJ,KAAK0gH,GAAA,EAAQ+O,IAET0qC,GAAW,GACP9sG,GACF/uD,EAAM4X,kBAIhB,EACA2qI,QAAS,WAAoB,EAC7B2W,SAAU,SAAkBj8J,GAC1BorK,EAAeprK,EACjB,EAEJ,IAGkC,IAA9BkrK,EAAmBryK,OACrB,OAAoB,gBAAoB,MAAO,CAC7Cw/D,KAAM,UACN3sD,GAAI,GAAGH,OAAOG,EAAI,SAClBE,UAAW,GAAGL,OAAOkkJ,EAAe,UACpCh+B,YAAa05C,GACZ/Q,GAEL,IAAI8R,EAAoB18J,OAAOopB,KAAK0gI,GAAYtwI,KAAI,SAAU6P,GAC5D,OAAOygI,EAAWzgI,EACpB,IACIszI,EAAW,SAAkB18J,GAC/B,OAAOA,EAAKm1C,KACd,EACA,SAASwnH,EAAiB38J,EAAMzP,GAE9B,MAAO,CACLq4D,KAFU5oD,EAAK/F,MAED,eAAiB,SAC/BgC,GAAI,GAAGH,OAAOG,EAAI,UAAUH,OAAOvL,GAEvC,CACA,IAAI0qJ,EAAa,SAAoB1qJ,GACnC,IAAIyP,EAAOy7J,EAAmBlrK,GAC9B,IAAKyP,EAAM,OAAO,KAClB,IAAI48J,EAAW58J,EAAKiO,MAAQ,CAAC,EACzBvjB,EAAQkyK,EAASlyK,MACjBuP,EAAQ+F,EAAK/F,MACbpL,EAAQ2xD,GAAUo8G,GAAU,GAC5B7S,EAAc2S,EAAS18J,GAC3B,OAAOA,EAAoB,gBAAoB,OAAO,OAAS,CAC7D,aAAqC,iBAAhB+pJ,GAA6B9vJ,EAAsB,KAAd8vJ,GACzDl7J,EAAO,CACRu6B,IAAK74B,GACJosK,EAAiB38J,EAAMzP,GAAQ,CAChC,gBAAiB4rK,EAAWzxK,KAC1BA,GAAS,IACf,EACImyK,EAAY,CACdj0G,KAAM,UACN3sD,GAAI,GAAGH,OAAOG,EAAI,UAEpB,OAAoB,gBAAoB,WAAgB,KAAMi0G,GAAwB,gBAAoB,OAAO,OAAS,CAAC,EAAG2sD,EAAW,CACvIxoK,MAAO,CACLkC,OAAQ,EACRD,MAAO,EACPu9C,SAAU,YAEVonG,EAAW6gB,EAAc,GAAI7gB,EAAW6gB,GAAc7gB,EAAW6gB,EAAc,IAAkB,gBAAoB,GAAM,CAC7HzgB,QAAS,MACT1gG,IAAKixG,EACL39I,KAAMwtJ,EACNllK,OAAQglK,EACR/F,WAAYgG,EACZ9F,YAAY,EACZ1zC,YAAa05C,EACb3uE,SAAUiuE,EACV9qD,QAASA,EACT7sF,UAAWA,EACXkuI,WAAYrhD,EAAU,KAAO2sD,IAC5B,SAAU78J,EAAM88J,GACjB,IAAIl1G,EACA3tD,EAAQ+F,EAAK/F,MACf8iK,EAAc/8J,EAAK+8J,YACnB9uJ,EAAOjO,EAAKiO,KACZknC,EAAQn1C,EAAKm1C,MACbzqD,EAAQsV,EAAKtV,MACX0+B,EAAMnb,EAAKmb,IAGf,GAAInvB,EAAO,CACT,IAAI+iK,EACAC,EAA4C,QAA9BD,EAAc/uJ,EAAKqsC,aAAmC,IAAhB0iH,EAAyBA,EAAc,GAAY7nH,GAASA,EAAMhqC,gBAAa6T,EACvI,OAAoB,gBAAoB,MAAO,CAC7C7iB,UAAW,IAAW6jJ,EAAe,GAAGlkJ,OAAOkkJ,EAAe,WAC9D1lG,MAAO2iH,QACIj+I,IAAVm2B,EAAsBA,EAAQ/rB,EACnC,CACA,IAAI6+B,EAAWh6C,EAAKg6C,SAClB3N,EAAQrsC,EAAKqsC,MAEbjmD,GADW4Z,EAAK7V,SACR6V,EAAK5Z,OACb8H,EAAY8R,EAAK9R,UACjBksD,GAAa,QAAyBp6C,EAAM,IAC1CiiF,GAAc,QAAK7nC,EAAYo0G,GAG/BJ,EAAWF,EAAWzxK,GACtBwyK,EAAkB,GAAGphK,OAAOkkJ,EAAe,WAC3Cmd,EAAkB,IAAWnd,EAAekd,EAAiB/gK,GAAYyrD,EAAc,CAAC,GAAG,OAAgBA,EAAa,GAAG9rD,OAAOohK,EAAiB,YAAaH,IAAc,OAAgBn1G,EAAa,GAAG9rD,OAAOohK,EAAiB,WAAYpB,IAAgBgB,IAAc70G,IAAW,OAAgBL,EAAa,GAAG9rD,OAAOohK,EAAiB,aAAcj1G,IAAW,OAAgBL,EAAa,GAAG9rD,OAAOohK,EAAiB,aAAcb,GAAWz0G,IAC7bmiG,EAAc2S,EAAS18J,GACvBo9J,GAAe/B,GAAwD,mBAAzBA,GAAuCgB,EAGrFh9F,EAAiC,iBAAhB0qF,EAA2BA,EAAcA,GAAer/J,EAEzE2yK,EAAc,GAAYh+F,GAAWA,EAAQl0D,gBAAa6T,EAI9D,YAHcA,IAAVs7B,IACF+iH,EAAc/iH,GAEI,gBAAoB,OAAO,OAAS,CAAC,EAAGkG,GAAU0vC,GAAeggB,EAA8C,CAAC,EAArCysD,EAAiB38J,EAAM88J,GAAiB,CACrI,gBAAiBT,EACjBlgK,UAAWghK,EACX7iH,MAAO+iH,EACP1tE,YAAa,WACPmsE,IAAgBgB,GAAa70G,GAGjC+zG,EAAUc,EACZ,EACA13G,QAAS,WACF6C,GACHm0G,EAAc1xK,EAElB,EACA2J,MAAOA,IACQ,gBAAoB,MAAO,CAC1C8H,UAAW,GAAGL,OAAOohK,EAAiB,aACrC79F,GAAuB,iBAAqBg8F,IAAyBgB,EAAUe,GAA4B,gBAAoB,GAAU,CAC1IjhK,UAAW,GAAGL,OAAOkkJ,EAAe,iBACpCsB,cAAe+Z,EACf9Z,mBAAoB,CAClB4a,WAAYE,IAEbA,EAAW,IAAM,MACtB,IACF,EACIiB,GAA6B,aAAiBhS,IAClDgS,GAAc1+G,YAAc,aAC5B,UE1OA,ICtHI,GAAY,CAAC,KAAM,OAAQ,YAAa,WAAY,aAAc,aAAc,cAAe,WAAY,uBAAwB,WAAY,aAAc,2BAA4B,eAAgB,aAAc,mBAAoB,kBAAmB,UAAW,WAAY,2BAA4B,uBAAwB,UAAW,YAAa,aAAc,iBAAkB,QAAS,eAAgB,eAAgB,YAgD1a2+G,GAAiB,CAAC,cAItB,IAAInoB,GAAsB,cAAiB,SAAUx1I,EAAO+6C,GAC1D,IAAI1+C,EAAK2D,EAAM3D,GACbynJ,EAAO9jJ,EAAM8jJ,KACbjjE,EAAmB7gF,EAAMooD,UACzBA,OAAiC,IAArBy4B,EAA8B,YAAcA,EACxD+8E,EAAW59J,EAAM49J,SACjB3T,EAAajqJ,EAAMiqJ,WACnB5Q,EAAar5I,EAAMq5I,WACnBv/F,EAAc95C,EAAM85C,YACpBwsG,EAAWtmJ,EAAMsmJ,SACjBuX,EAAwB79J,EAAM4jJ,qBAC9BA,OAAiD,IAA1Bia,GAA0CA,EACjErC,EAAWx7J,EAAMw7J,SACjBsC,EAAa99J,EAAM89J,WACnBC,EAAwB/9J,EAAMuwG,yBAC9BA,OAAqD,IAA1BwtD,GAA0CA,EACrEC,EAAeh+J,EAAMg+J,aACrBC,EAAaj+J,EAAMi+J,WACnBC,EAAmBl+J,EAAMk+J,iBACzBloB,EAAkBh2I,EAAMg2I,gBACxBloH,EAAU9tB,EAAM8tB,QAChBt1B,EAAWwH,EAAMxH,SACjB+iK,EAA2Bv7J,EAAMu7J,yBACjCE,EAAuBz7J,EAAMy7J,qBAC7BnrD,EAAUtwG,EAAMswG,QAChB7sF,EAAYzjB,EAAMyjB,UAClB06I,EAAoBn+J,EAAM27J,WAC1BA,OAAmC,IAAtBwC,EAA+B,IAAMA,EAClDC,EAAwBp+J,EAAM47J,eAC9BA,OAA2C,IAA1BwC,EAAmC,GAAKA,EACzDtzK,EAAQkV,EAAMlV,MACd6iC,EAAe3tB,EAAM2tB,aACrB0wI,EAAer+J,EAAMq+J,aACrBl5G,EAAWnlD,EAAMmlD,SACjB0nB,GAAY,QAAyB7sE,EAAO,IAC1C8sE,EAAW,GAAMzwE,GACjB2pD,EAAW,GAAW89F,GACtBoG,IAAqBp8H,IAAWt1B,GAChC8lK,EAAqB,WAAc,WACrC,YAAqBl/I,IAAjB4+I,GAAuC,aAATla,IAG3Bka,CACT,GAAG,CAACA,EAAcla,IAGdya,EAAmB,WAAc,WACnC,OAAOvU,GAAeC,EAAYC,EACpC,GACA,CAEAvgH,KAAKF,UAAUwgH,GAAaC,IAIxBpvD,GAAkB,EAAAC,GAAA,GAAe,GAAI,CACrCjwG,WAAuBs0B,IAAhB06B,EAA4BA,EAAcu/F,EACjDjvC,UAAW,SAAmBymD,GAC5B,OAAOA,GAAU,EACnB,IAEF51D,GAAmB,QAAeH,EAAiB,GACnDgyD,EAAoB7xD,EAAiB,GACrCujE,EAAiBvjE,EAAiB,GAGhCwjE,ECtHS,SAAoB3wI,EAASt1B,EAAUyxJ,EAAYiU,EAAkBloB,GAClF,OAAO,WAAc,WACnB,IAAI0oB,EAAgB5wI,GACEA,IAEpB4wI,EAAgB,GAAsBlmK,IAExC,IAAImmK,EAAe,IAAIj3J,IACnBk3J,EAAe,IAAIl3J,IACnBm3J,EAAkB,SAAyBC,EAAiBz9G,EAAQ73B,GAClEA,GAAsB,iBAARA,GAChBs1I,EAAgBj0K,IAAIw2D,EAAO73B,GAAM63B,EAErC,EAkBA,OAjBA,SAAS09G,EAAI9O,GAGX,IAFA,IAAI+O,EAAaz1K,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,IAAmBA,UAAU,GAEvEM,EAAI,EAAGA,EAAIomK,EAAWzmK,OAAQK,GAAK,EAAG,CAC7C,IAAIw3D,EAAS4uG,EAAWpmK,IACnBw3D,EAAO4oG,EAAWn8H,UAAYkxI,GACjCL,EAAa9zK,IAAIw2D,EAAO4oG,EAAWn/J,OAAQu2D,GAC3Cw9G,EAAgBD,EAAcv9G,EAAQ4oG,EAAW10G,OAEjDspH,EAAgBD,EAAcv9G,EAAQ68G,GACtCW,EAAgBD,EAAcv9G,EAAQ20F,IAEtC+oB,EAAI19G,EAAO4oG,EAAWn8H,UAAU,EAEpC,CACF,CACAixI,CAAIL,GACG,CACL5wI,QAAS4wI,EACTC,aAAcA,EACdC,aAAcA,EAElB,GAAG,CAAC9wI,EAASt1B,EAAUyxJ,EAAYiU,EAAkBloB,GACvD,CDiFsBipB,CAAWnxI,EAASt1B,EAAU+lK,EAAkBL,EAAkBloB,GAClF2oB,EAAeF,EAAcE,aAC/BC,EAAeH,EAAcG,aAC7BF,EAAgBD,EAAc3wI,QAG5BoxI,EAAsB,eAAkB,SAAUC,GAKpD,OAHgB,GAAQA,GAGPxlJ,KAAI,SAAU3rB,GAC7B,IAAIoxK,EACAC,EACAC,EACAC,EACAC,EAMEC,GA3FZ,SAAoB30K,GAClB,OAAQA,GAA4B,YAAnB,QAAQA,EAC3B,EAsFU40K,CAAW1xK,GACboxK,EAAWpxK,GAGXsxK,EAAStxK,EAAIw7B,IACb61I,EAAWrxK,EAAIunD,MACf6pH,EAAwC,QAA5BK,EAAazxK,EAAIlD,aAAkC,IAAf20K,EAAwBA,EAAaH,GAEvF,IAEMK,EAFFt+G,EAASs9G,EAAah0K,IAAIy0K,GAC1B/9G,SAGejiC,IAAbigJ,IAAwBA,EAAWh+G,aAAuC,EAASA,EAAO20F,GAAmBuoB,EAAiBhpH,aACnHn2B,IAAXkgJ,IAAsBA,EAAwF,QAA9EK,EAAct+G,aAAuC,EAASA,EAAO73B,WAAiC,IAAhBm2I,EAAyBA,EAAcP,GACjKG,EAAcl+G,aAAuC,EAASA,EAAOgH,SACrEm3G,EAAWn+G,aAAuC,EAASA,EAAO3G,OAUpE,MAAO,CACLnF,MAAO8pH,EACPv0K,MAAOs0K,EACP51I,IAAK81I,EACLj3G,SAAUk3G,EACV7kH,MAAO8kH,EAEX,GACF,GAAG,CAACjB,EAAkBvoB,EAAiB2oB,IAGnCiB,IAAmB,EAAA7kE,GAAA,GAAeptE,EAAc,CAChD7iC,MAAOA,IAET+0K,IAAmB,QAAeD,GAAkB,GACpDE,GAAgBD,GAAiB,GACjCE,GAAmBF,GAAiB,GAGlCG,GAAmB,WAAc,WACnC,IAAIC,EACA92I,EAAS+1I,EAAoBY,IAGjC,MAAa,aAAThc,GrCjLD,SAAwBh5J,GAC7B,OAAQA,GAAmB,IAAVA,CACnB,CqC+K+Bo1K,CAA0C,QAA1BD,EAAW92I,EAAO,UAA6B,IAAb82I,OAAsB,EAASA,EAASn1K,OAC5G,GAEFq+B,CACT,GAAG,CAAC22I,GAAeZ,EAAqBpb,IAGpCqc,GEnMN,SAA0BC,EAAezB,GACvC,IAAI0B,EAAW,SAAa,CAC1Bl3I,OAAQ,IAAIzhB,IACZomB,QAAS,IAAIpmB,MAgCf,MAAO,CA9BmB,WAAc,WACtC,IAAI44J,EAAoBD,EAASjwK,QAC/BmwK,EAAiBD,EAAkBn3I,OACnCq3I,EAAkBF,EAAkBxyI,QAGlC2yI,EAAgBL,EAAczmJ,KAAI,SAAUvZ,GAE5C,IAAIsgK,EADN,YAAmBthJ,IAAfhf,EAAKm1C,OAEA,SAAc,QAAc,CAAC,EAAGn1C,GAAO,CAAC,EAAG,CAChDm1C,MAAkE,QAA1DmrH,EAAsBH,EAAe51K,IAAIyV,EAAKtV,cAA4C,IAAxB41K,OAAiC,EAASA,EAAoBnrH,QAGrIn1C,CACT,IAGIugK,EAAa,IAAIj5J,IACjBk5J,EAAc,IAAIl5J,IAOtB,OANA+4J,EAAc1vK,SAAQ,SAAUqP,GAC9BugK,EAAW91K,IAAIuV,EAAKtV,MAAOsV,GAC3BwgK,EAAY/1K,IAAIuV,EAAKtV,MAAO6zK,EAAah0K,IAAIyV,EAAKtV,QAAU01K,EAAgB71K,IAAIyV,EAAKtV,OACvF,IACAu1K,EAASjwK,QAAQ+4B,OAASw3I,EAC1BN,EAASjwK,QAAQ09B,QAAU8yI,EACpBH,CACT,GAAG,CAACL,EAAezB,IACH,eAAkB,SAAU3wK,GAC1C,OAAO2wK,EAAah0K,IAAIqD,IAAQqyK,EAASjwK,QAAQ09B,QAAQnjC,IAAIqD,EAC/D,GAAG,CAAC2wK,IAEL,CF+JiBkC,CAASb,GAAkBrB,GACzCmC,IAAa,QAAeX,GAAW,GACvCY,GAAeD,GAAW,GAC1BE,GAAiBF,GAAW,GAC1BnW,GAAgB,WAAc,WAGhC,IAAK7G,GAAgC,IAAxBid,GAAav3K,OAAc,CACtC,IAAIy3K,EAAaF,GAAa,GAC9B,GAAyB,OAArBE,EAAWn2K,QAAwC,OAArBm2K,EAAW1rH,YAAuCn2B,IAArB6hJ,EAAW1rH,OACxE,MAAO,EAEX,CACA,OAAOwrH,GAAapnJ,KAAI,SAAUvZ,GAChC,IAAI8gK,EACJ,OAAO,SAAc,QAAc,CAAC,EAAG9gK,GAAO,CAAC,EAAG,CAChDm1C,MAAsC,QAA9B2rH,EAAc9gK,EAAKm1C,aAAmC,IAAhB2rH,EAAyBA,EAAc9gK,EAAKtV,OAE9F,GACF,GAAG,CAACg5J,EAAMid,KAGNrF,GAAY,WAAc,WAC5B,OAAO,IAAIpsI,IAAIyxI,GAAapnJ,KAAI,SAAU3rB,GACxC,OAAOA,EAAIlD,KACb,IACF,GAAG,CAACi2K,KACJ,aAAgB,WACd,GAAa,aAATjd,EAAqB,CACvB,IAAIqd,EACAC,EAAkD,QAAtCD,EAAiBJ,GAAa,UAAmC,IAAnBI,OAA4B,EAASA,EAAer2K,MAClH0zK,ErC5NC,SAAkB1zK,GACvB,OAAOA,OACT,CqC0NqBu2K,CAASD,GAAY9yJ,OAAO8yJ,GAAY,GACzD,CACF,GAAG,CAACL,KAIJ,IAAIO,GAAkBlQ,IAAW,SAAUpjK,EAAKunD,GAC9C,IAAIiF,EACA2vG,EAAc50G,QAAqCA,EAAQvnD,EAC/D,OAAOwsD,EAAO,CAAC,GAAG,OAAgBA,EAAM+jH,EAAiBzzK,MAAOkD,IAAM,OAAgBwsD,EAAM+jH,EAAiBhpH,MAAO40G,GAAc3vG,CACpI,IAGI+mH,GAAmB,WAAc,WACnC,GAAa,SAATzd,EACF,OAAO4a,EAIT,IAAI8C,GAAe,OAAmB9C,GAgBtC,OARA,OAAmBqC,IAAc7lK,MAAK,SAAU4L,EAAG8E,GACjD,OAAO9E,EAAEhc,MAAQ8gB,EAAE9gB,OAAS,EAAI,CAClC,IAAGiG,SAAQ,SAAUqP,GACnB,IAAIpS,EAAMoS,EAAKtV,OARE,SAAsBkD,GACvC,OAAO2wK,EAAal0I,IAAIz8B,EAC1B,EAOOyzK,CAAazzK,IAChBwzK,EAAat4K,KAAKo4K,GAAgBtzK,EAAKoS,EAAKm1C,OAEhD,IACOisH,CACT,GAAG,CAACF,GAAiB5C,EAAeC,EAAcoC,GAAcjd,IAC5D4d,GzBpQN,SAA0B5zI,EAASm8H,EAAYnwG,EAAakkH,EAAcE,GACxE,OAAO,WAAc,WACnB,IAAKpkH,IAAgC,IAAjBkkH,EAClB,OAAOlwI,EAET,IAAI6zI,EAAe1X,EAAWn8H,QAC5B8zI,EAAa3X,EAAW10G,MACxBy0E,EAAaigC,EAAWn/J,MACtB42K,EAAkB,GAClBG,EAA0C,mBAAjB7D,EACzB8D,EAAchoH,EAAYvqC,cAC1B4pH,EAAa0oC,EAAkB7D,EAAe,SAAU3uI,EAAGgyB,GAE7D,OAAI68G,EACKpwK,GAASuzD,EAAO68G,GAAmB4D,GAIxCzgH,EAAOsgH,GAEF7zK,GAASuzD,EAAsB,aAAfugH,EAA4BA,EAAa,SAAUE,GAErEh0K,GAASuzD,EAAO2oE,GAAa83C,EACtC,EACIC,EAAaF,EAAkB,SAAUhsB,GAC3C,OAAOwU,GAAsBxU,EAC/B,EAAI,SAAUA,GACZ,OAAOA,CACT,EAuBA,OAtBA/nH,EAAQ/8B,SAAQ,SAAUqP,GAExB,GAAIA,EAAKuhK,GAGP,GADiBxoC,EAAWr/E,EAAaioH,EAAW3hK,IAElDshK,EAAgBx4K,KAAKkX,OAChB,CAEL,IAAI4hK,EAAa5hK,EAAKuhK,GAAczoK,QAAO,SAAU+oK,GACnD,OAAO9oC,EAAWr/E,EAAaioH,EAAWE,GAC5C,IACID,EAAWx4K,QACbk4K,EAAgBx4K,MAAK,SAAc,QAAc,CAAC,EAAGkX,GAAO,CAAC,GAAG,OAAgB,CAAC,EAAGuhK,EAAcK,IAEtG,MAGE7oC,EAAWr/E,EAAaioH,EAAW3hK,KACrCshK,EAAgBx4K,KAAKkX,EAEzB,IACOshK,CACT,GAAG,CAAC5zI,EAASkwI,EAAcE,EAAkBpkH,EAAamwG,GAC3D,CyB+MuBiY,CAAiBX,GAAkBhD,EAAkBzR,EAAmBwR,EAAoBJ,GAG9GiE,GAAsB,WAAc,WACtC,MAAa,SAATre,IAAoBgJ,GAAqB4U,GAAgBr+G,MAAK,SAAUjjD,GAC1E,OAAOA,EAAK89J,GAAoB,WAAapR,CAC/C,KAII4U,GAAgBr+G,MAAK,SAAUjjD,GACjC,OAAOA,EAAKm+J,EAAiBzzK,SAAWgiK,CAC1C,IALS4U,GASF,CAACJ,GAAgBxU,IAAoB5wJ,QAAO,OAAmBwlK,IACxE,GAAG,CAACJ,GAAiBpD,EAAkBpa,EAAM4d,GAAiB5U,EAAmByR,IAC7E6D,GAAyB,WAAc,WACzC,OAAKnE,GAGE,OAAmBkE,IAAqBjnK,MAAK,SAAU4L,EAAG8E,GAC/D,OAAOqyJ,EAAWn3J,EAAG8E,EACvB,IAJSu2J,EAKX,GAAG,CAACA,GAAqBlE,IACrBoE,GAAiB,WAAc,WACjC,O9BjQG,SAAwBv0I,GAC7B,IAAI64B,EAAQp9D,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/E0gK,EAAatjG,EAAMsjG,WACnBC,EAAiBvjG,EAAMujG,eACrBoY,EAAc,GACdC,EAAkBvY,GAAeC,GAAY,GAC/C2X,EAAaW,EAAgBhtH,MAC7By0E,EAAau4C,EAAgBz3K,MAC7B62K,EAAeY,EAAgBz0I,QAC/Bs8H,EAAamY,EAAgBnY,WAgC/B,OA/BA,SAAS2U,EAAI10D,EAAMm4D,GACjBn4D,EAAKt5G,SAAQ,SAAUsd,GACrB,GAAIm0J,KAAmBb,KAAgBtzJ,GAAO,CAC5C,IAAIvjB,EAAQujB,EAAK27G,GAGjBs4C,EAAYp5K,KAAK,CACfsgC,IAAKgtG,GAAOnoH,EAAMi0J,EAAY94K,QAC9B2zK,YAAaqF,EACbn0J,KAAMA,EACNknC,MAAOlnC,EAAKuzJ,GACZ92K,MAAOA,GAEX,KAAO,CACL,IAAI23K,EAAWp0J,EAAK+7I,QACHhrI,IAAbqjJ,GAA0BvY,IAC5BuY,EAAWp0J,EAAKknC,OAIlB+sH,EAAYp5K,KAAK,CACfsgC,IAAKgtG,GAAOnoH,EAAMi0J,EAAY94K,QAC9B6Q,OAAO,EACPgU,KAAMA,EACNknC,MAAOktH,IAET1D,EAAI1wJ,EAAKszJ,IAAe,EAC1B,CACF,GACF,CACA5C,CAAIjxI,GAAS,GACNw0I,CACT,C8BuNWjH,CAAe+G,GAAwB,CAC5CnY,WAAYsU,EACZrU,eAAgBA,GAEpB,GAAG,CAACkY,GAAwB7D,EAAkBrU,IAG1CwY,GAAgB,SAAuBv5I,GACzC,IAAIi3I,EAAgBlB,EAAoB/1I,GAExC,GADA42I,GAAiBK,GACbj7G,IAEJi7G,EAAc52K,SAAWu3K,GAAav3K,QAAU42K,EAAc/8G,MAAK,SAAUs/G,EAAQhyK,GACnF,IAAIiyK,EACJ,OAAwD,QAA/CA,EAAsB7B,GAAapwK,UAA4C,IAAxBiyK,OAAiC,EAASA,EAAoB93K,UAAY63K,aAAuC,EAASA,EAAO73K,MACnM,KAAK,CACH,IAAI+3K,EAAexE,EAAe+B,EAAgBA,EAAczmJ,KAAI,SAAU/e,GAC5E,OAAOA,EAAE9P,KACX,IACIg4K,EAAgB1C,EAAczmJ,KAAI,SAAU/e,GAC9C,OAAOyvJ,GAAsB2W,GAAepmK,EAAE9P,OAChD,IACAq6D,EAEAa,EAAW68G,EAAeA,EAAa,GAEvC78G,EAAW88G,EAAgBA,EAAc,GAC3C,CACF,EAGI3tG,GAAkB,WAAe,MACnCC,IAAmB,QAAeD,GAAiB,GACnDwwF,GAAcvwF,GAAiB,GAC/B2tG,GAAiB3tG,GAAiB,GAChCE,GAAmB,WAAe,GACpCC,IAAmB,QAAeD,GAAkB,GACpD0tG,GAAqBztG,GAAiB,GACtC0tG,GAAwB1tG,GAAiB,GACvC2tG,QAA8D9jJ,IAA7Bm8I,EAAyCA,EAAoC,aAATzX,EACrGwX,GAAgB,eAAkB,SAAUp8C,EAAQvuH,GACtD,IACEwyK,GADU55K,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,CAAC,GAC1DywB,OACrBA,OAA0B,IAAjBmpJ,EAA0B,WAAaA,EAClDF,GAAsBtyK,GAClBitK,GAAqB,aAAT9Z,GAAkC,OAAX5kC,GAA8B,aAAXllG,GACxD+oJ,GAAez0J,OAAO4wG,GAE1B,GAAG,CAAC0+C,EAAU9Z,IAGVsf,GAAgB,SAAuBp1K,EAAKyuK,EAAUnrK,GACxD,IAAI+xK,EAAe,WACjB,IAAIC,EACAjiH,EAAS2/G,GAAehzK,GAC5B,MAAO,CAACqwK,EAAe,CACrB9oH,MAAO8L,aAAuC,EAASA,EAAOk9G,EAAiBhpH,OAC/EzqD,MAAOkD,EACPw7B,IAAqF,QAA/E85I,EAAejiH,aAAuC,EAASA,EAAO73B,WAAkC,IAAjB85I,EAA0BA,EAAet1K,GACpIA,EAAKq8J,GAAsBhpG,GACjC,EACA,GAAIo7G,GAAYjB,EAAU,CACxB,IAAI+H,EAAgBF,IAClBG,GAAiB,QAAeD,EAAe,GAC/CE,EAAeD,EAAe,GAC9BE,EAAUF,EAAe,GAC3BhI,EAASiI,EAAcC,EACzB,MAAO,IAAKjH,GAAYqB,GAAuB,UAATxsK,EAAkB,CACtD,IAAIqyK,EAAiBN,IACnBO,GAAiB,QAAeD,EAAgB,GAChDE,EAAgBD,EAAe,GAC/BE,EAAWF,EAAe,GAC5B9F,EAAW+F,EAAeC,EAC5B,CACF,EAGIC,GAAmB3S,IAAW,SAAUpjK,EAAKgwD,GAC/C,IAAIgmH,EAGAC,GAAej+G,GAAWhI,EAAKy+G,SAEjCuH,EADEC,EACYj+G,EAAW,GAAG9pD,QAAO,OAAmB6kK,IAAe,CAAC/yK,IAAQ,CAACA,GAEjE+yK,GAAa7nK,QAAO,SAAU0B,GAC1C,OAAOA,EAAE9P,QAAUkD,CACrB,IAEF00K,GAAcsB,GACdZ,GAAcp1K,EAAKi2K,GAGN,aAATngB,EAEFif,GAAe,IACL,KAAcnf,IACxB4a,EAAe,IACfuE,GAAe,IAEnB,IAyDImB,GAAgB,WAAc,WAChC,IAAIC,GAA0B,IAAZ7zD,IAAkD,IAA7BC,EACvC,OAAO,SAAc,QAAc,CAAC,EAAGkuD,GAAgB,CAAC,EAAG,CACzDpD,eAAgBgH,GAChB/G,cAAeA,GACfC,yBAA0B2H,GAC1B1H,SAAUuI,GACVtI,qBAAsBA,EACtBC,UAAWA,GACXzR,WAAYsU,EACZjuD,QAAS6zD,EACT1gJ,UAAWA,EACXk4I,WAAYA,EACZC,eAAgBA,EAChB1R,eAAgBA,GAEpB,GAAG,CAACuU,EAAe4D,GAAgB/G,GAAe4H,GAAgCa,GAAkBtI,EAAsBC,GAAW6C,EAAkBjuD,EAASC,EAA0BorD,EAAYC,EAAgB1R,IAWtN,OAAoB,gBAAoB,GAAcvgG,SAAU,CAC9D7+D,MAAOo5K,IACO,gBAAoB,IAAY,OAAS,CAAC,EAAGr3F,EAAW,CAEtExwE,GAAIywE,EACJ1kB,UAAWA,EACXrN,IAAKA,EACL2vG,aAAciT,GACd7Z,KAAMA,EAIN6G,cAAeA,GACfC,sBA7F0B,SAA+BwZ,EAAYpmH,GACrE0kH,GAAc0B,GACd,IAAI9yK,EAAO0sD,EAAK1sD,KACd63B,EAAS60B,EAAK70B,OACH,WAAT73B,GAA8B,UAATA,GACvB63B,EAAOp4B,SAAQ,SAAUqP,GACvBgjK,GAAchjK,EAAKtV,OAAO,EAAOwG,EACnC,GAEJ,EAwFEmyB,UAAWA,EAIXq2B,YAAagzG,EACbxG,SA1FqB,SAA0BqH,EAAY3vG,GAK3D,GAJAwgH,EAAe7Q,GACfoV,GAAe,MAGK,WAAhB/kH,EAAKhkC,OAWW,SAAhBgkC,EAAKhkC,SACM,aAAT8pI,GACF4e,GAAc/U,GAEhBrH,SAAoDA,EAASqH,QAf/D,CACE,IAAI0W,GAAa1W,GAAc,IAAInxI,OAEnC,GAAI6nJ,EAAW,CACb,IAAIC,EAAel7I,MAAMnH,KAAK,IAAIqN,IAAI,GAAGpzB,QAAO,OAAmBw/J,IAAY,CAAC2I,MAChF3B,GAAc4B,GACdlB,GAAciB,GAAW,GACzB7F,EAAe,GACjB,CAEF,CAOF,EAqEE5a,qBAAsBA,EACtByH,cArE0B,SAA+BkZ,GACzD,IAAIC,EAAcD,EACL,SAATzgB,IACF0gB,EAAcD,EAAM5qJ,KAAI,SAAUgxG,GAChC,IAAIkrB,EAAM+oB,EAAaj0K,IAAIggI,GAC3B,OAAOkrB,aAAiC,EAASA,EAAI/qJ,KACvD,IAAGoO,QAAO,SAAUlL,GAClB,YAAeoxB,IAARpxB,CACT,KAEF,IAAIs2K,EAAel7I,MAAMnH,KAAK,IAAIqN,IAAI,GAAGpzB,QAAO,OAAmBw/J,KAAY,OAAmB8I,MAClG9B,GAAc4B,GACdA,EAAavzK,SAAQ,SAAU0zK,GAC7BrB,GAAcqB,GAAa,EAC7B,GACF,EAuDEl0D,yBAA0BA,EAI1Bm7C,WAAY,GACZb,cAAewX,GAAe74K,OAI9Bm8J,YAAaA,GACbvD,mBAAoB,GAAGlmJ,OAAO4wE,EAAU,UAAU5wE,OAAO8mK,OAE7D,IAIA,IAAI0B,GAAclvB,GAClBkvB,GAAY5uB,OAAS,GACrB4uB,GAAYnT,SAAW,GACvB,IGrgBA,GHqgBA,GIpgBO,ICJIoT,GAAY,IAAI,MAAU,eAAgB,CACnD,KAAM,CACJloK,UAAW,cACX8vE,gBAAiB,QACjBjvE,QAAS,GAEX,OAAQ,CACNb,UAAW,YACX8vE,gBAAiB,QACjBjvE,QAAS,KAGFsnK,GAAa,IAAI,MAAU,gBAAiB,CACrD,KAAM,CACJnoK,UAAW,YACX8vE,gBAAiB,QACjBjvE,QAAS,GAEX,OAAQ,CACNb,UAAW,cACX8vE,gBAAiB,QACjBjvE,QAAS,KAGFunK,GAAc,IAAI,MAAU,iBAAkB,CACvD,KAAM,CACJpoK,UAAW,cACX8vE,gBAAiB,YACjBjvE,QAAS,GAEX,OAAQ,CACNb,UAAW,YACX8vE,gBAAiB,YACjBjvE,QAAS,KAGFwnK,GAAe,IAAI,MAAU,kBAAmB,CACzD,KAAM,CACJroK,UAAW,YACX8vE,gBAAiB,YACjBjvE,QAAS,GAEX,OAAQ,CACNb,UAAW,cACX8vE,gBAAiB,YACjBjvE,QAAS,KAGFynK,GAAc,IAAI,MAAU,iBAAkB,CACvD,KAAM,CACJtoK,UAAW,cACX8vE,gBAAiB,QACjBjvE,QAAS,GAEX,OAAQ,CACNb,UAAW,YACX8vE,gBAAiB,QACjBjvE,QAAS,KAGF0nK,GAAe,IAAI,MAAU,kBAAmB,CACzD,KAAM,CACJvoK,UAAW,YACX8vE,gBAAiB,QACjBjvE,QAAS,GAEX,OAAQ,CACNb,UAAW,cACX8vE,gBAAiB,QACjBjvE,QAAS,KAGF2nK,GAAe,IAAI,MAAU,kBAAmB,CACzD,KAAM,CACJxoK,UAAW,cACX8vE,gBAAiB,UACjBjvE,QAAS,GAEX,OAAQ,CACNb,UAAW,YACX8vE,gBAAiB,UACjBjvE,QAAS,KAGF4nK,GAAgB,IAAI,MAAU,mBAAoB,CAC3D,KAAM,CACJzoK,UAAW,YACX8vE,gBAAiB,UACjBjvE,QAAS,GAEX,OAAQ,CACNb,UAAW,cACX8vE,gBAAiB,UACjBjvE,QAAS,KAGT6nK,GAAc,CAChB,WAAY,CACVhvE,YAAawuE,GACbvuE,aAAcwuE,IAEhB,aAAc,CACZzuE,YAAa0uE,GACbzuE,aAAc0uE,IAEhB,aAAc,CACZ3uE,YAAa4uE,GACb3uE,aAAc4uE,IAEhB,cAAe,CACb7uE,YAAa8uE,GACb7uE,aAAc8uE,KAGPE,GAAkB,SAAyBryG,EAAOqF,GAC3D,IAAI5d,EACA48C,EAASrkC,EAAMqkC,OACfv7B,EAAY,GAAG3/D,OAAOk7F,EAAQ,KAAKl7F,OAAOk8D,GAC1CitG,EAAwBF,GAAY/sG,GACtC+9B,EAAckvE,EAAsBlvE,YACpCC,EAAeivE,EAAsBjvE,aACvC,MAAO,CAACF,GAAWr6B,EAAWs6B,EAAaC,EAAcrjC,EAAMmM,oBAAqB1kB,EAAO,CAAC,GAAG,OAAgBA,EAAM,WAAWt+C,OAAO2/D,EAAW,mBAAmB3/D,OAAO2/D,EAAW,kBAAkB,OAAgB,CACvNp/D,UAAW,WACX8vE,gBAAiB,QACjBjvE,QAAS,EACTi6F,wBAAyBxkC,EAAMotC,oBAC9B,YAAa,CACd1jG,UAAW,eACR,OAAgB+9C,EAAM,GAAGt+C,OAAO2/D,EAAW,UAAW,CACzD07B,wBAAyBxkC,EAAMuyG,oBAC7B9qH,GACN,ECnIW+qH,GAAa,IAAI,MAAU,gBAAiB,CACrD,KAAM,CACJ9oK,UAAW,0BACX8vE,gBAAiB,MACjBjvE,QAAS,GAEX,OAAQ,CACNb,UAAW,uBACX8vE,gBAAiB,MACjBjvE,QAAS,KAGFkoK,GAAc,IAAI,MAAU,iBAAkB,CACvD,KAAM,CACJ/oK,UAAW,uBACX8vE,gBAAiB,MACjBjvE,QAAS,GAEX,OAAQ,CACNb,UAAW,0BACX8vE,gBAAiB,MACjBjvE,QAAS,KAGFmoK,GAAa,IAAI,MAAU,gBAAiB,CACrD,KAAM,CACJhpK,UAAW,2BACX8vE,gBAAiB,MACjBjvE,QAAS,GAEX,OAAQ,CACNb,UAAW,uBACX8vE,gBAAiB,MACjBjvE,QAAS,KAGFooK,GAAc,IAAI,MAAU,iBAAkB,CACvD,KAAM,CACJjpK,UAAW,uBACX8vE,gBAAiB,MACjBjvE,QAAS,GAEX,OAAQ,CACNb,UAAW,2BACX8vE,gBAAiB,MACjBjvE,QAAS,KAGFqoK,GAAc,IAAI,MAAU,iBAAkB,CACvD,KAAM,CACJlpK,UAAW,0BACX8vE,gBAAiB,MACjBjvE,QAAS,GAEX,OAAQ,CACNb,UAAW,uBACX8vE,gBAAiB,MACjBjvE,QAAS,KAGFsoK,GAAe,IAAI,MAAU,kBAAmB,CACzD,KAAM,CACJnpK,UAAW,uBACX8vE,gBAAiB,MACjBjvE,QAAS,GAEX,OAAQ,CACNb,UAAW,0BACX8vE,gBAAiB,MACjBjvE,QAAS,KA2BTuoK,GAAa,CACf,UAAW,CACT1vE,YA1BkB,IAAI,MAAU,cAAe,CACjD,KAAM,CACJ15F,UAAW,2BACX8vE,gBAAiB,MACjBjvE,QAAS,GAEX,OAAQ,CACNb,UAAW,uBACX8vE,gBAAiB,MACjBjvE,QAAS,KAkBT84F,aAfmB,IAAI,MAAU,eAAgB,CACnD,KAAM,CACJ35F,UAAW,uBACX8vE,gBAAiB,MACjBjvE,QAAS,GAEX,OAAQ,CACNb,UAAW,2BACX8vE,gBAAiB,MACjBjvE,QAAS,MAQX,YAAa,CACX64F,YAAaovE,GACbnvE,aAAcovE,IAEhB,YAAa,CACXrvE,YAAasvE,GACbrvE,aAAcsvE,IAEhB,aAAc,CACZvvE,YAAawvE,GACbvvE,aAAcwvE,KAGPE,GAAiB,SAAwB/yG,EAAOqF,GACzD,IAAI5d,EACA48C,EAASrkC,EAAMqkC,OACfv7B,EAAY,GAAG3/D,OAAOk7F,EAAQ,KAAKl7F,OAAOk8D,GAC1C2tG,EAAwBF,GAAWztG,GACrC+9B,EAAc4vE,EAAsB5vE,YACpCC,EAAe2vE,EAAsB3vE,aACvC,MAAO,CAACF,GAAWr6B,EAAWs6B,EAAaC,EAAcrjC,EAAMmM,oBAAqB1kB,EAAO,CAAC,GAAG,OAAgBA,EAAM,aAAat+C,OAAO2/D,EAAW,qBAAqB3/D,OAAO2/D,EAAW,mBAAoB,CAC7Mv+D,QAAS,EACTi6F,wBAAyBxkC,EAAMO,qBAC7B,OAAgB9Y,EAAM,GAAGt+C,OAAO2/D,EAAW,UAAW,CACxD07B,wBAAyBxkC,EAAMykC,sBAC7Bh9C,GACN,EC/HIwrH,GAAe,SAAsBjzG,GACvC,IAAIkzG,EAA2BlzG,EAAMkzG,yBACnCjmG,EAAgBjN,EAAMiN,cACtBv2D,EAAWspD,EAAMtpD,SACjBC,EAAaqpD,EAAMrpD,WACrB,MAAO,CACLoqC,SAAU,WACVE,QAAS,QACT6rC,UAAW7f,EACX+C,QAAS,GAAG7mE,QAAQ8jE,EAAgBv2D,EAAWC,GAAc,EAAG,OAAOxN,OAAO+pK,EAA0B,MACxGvpI,MAAOq2B,EAAMsM,UACbhjD,WAAY,SACZ5S,SAAUA,EACVC,WAAYA,EACZypD,UAAW,aAEf,EA4EA,GA3EqB,SAAwBJ,GAC3C,IAAImzG,EAAWxC,EAASzrE,EACpBb,EAASrkC,EAAMqkC,OACjBpkC,EAAeD,EAAMC,aACnBmzG,EAAgB,GAAGjqK,OAAO82D,EAAc,SACxCozG,EAAqB,IAAIlqK,OAAOk7F,EAAQ,mBAAmBl7F,OAAOk7F,EAAQ,0BAC1EivE,EAAsB,IAAInqK,OAAOk7F,EAAQ,oBAAoBl7F,OAAOk7F,EAAQ,2BAC5EkvE,EAAqB,IAAIpqK,OAAOk7F,EAAQ,mBAAmBl7F,OAAOk7F,EAAQ,0BAC1EmvE,EAAuB,GAAGrqK,OAAO82D,EAAc,wBACnD,MAAO,EAAC,OAAgB,CAAC,EAAG,GAAG92D,OAAO82D,EAAc,aAAc7yD,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,GAAG,SAAe80B,KAAUklC,EAAiB,CAC1InkD,SAAU,WACVl8C,KAAM,KACNwF,OAAQ21D,EAAMulC,YACdnlC,UAAW,aACX4P,QAAShQ,EAAMyzG,WACfvyH,SAAU,SACVxqC,SAAUspD,EAAMtpD,SAIhB8S,YAAa,UACb06C,gBAAiBlE,EAAMgmD,gBACvBvjD,aAAczC,EAAM8Q,eACpBhF,QAAS,OACTzL,UAAWL,EAAMwlC,qBAChB,OAAgBN,EAAgB,eAAe/7F,OAAOkqK,GAAoBlqK,OAAOqqK,EAAsB,2BAA2BrqK,OAAOmqK,GAAqBnqK,OAAOqqK,EAAsB,wBAAyB,CACrN5vE,cAAeguE,MACb,OAAgB1sE,EAAgB,eAAe/7F,OAAOkqK,GAAoBlqK,OAAOqqK,EAAsB,wBAAwBrqK,OAAOmqK,GAAqBnqK,OAAOqqK,EAAsB,wBAAwBrqK,OAAOkqK,GAAoBlqK,OAAOqqK,EAAsB,yBAAyBrqK,OAAOmqK,GAAqBnqK,OAAOqqK,EAAsB,sBAAuB,CACnX5vE,cAAekuE,MACb,OAAgB5sE,EAAgB,GAAG/7F,OAAOoqK,GAAoBpqK,OAAOqqK,EAAsB,cAAe,CAC5G5vE,cAAeiuE,MACb,OAAgB3sE,EAAgB,eAAe/7F,OAAOoqK,GAAoBpqK,OAAOqqK,EAAsB,wBAAwBrqK,OAAOoqK,GAAoBpqK,OAAOqqK,EAAsB,sBAAuB,CAChN5vE,cAAemuE,MACb,OAAgB7sE,EAAgB,WAAY,CAC9CjkD,QAAS,UACP,OAAgBikD,EAAgB,GAAG/7F,OAAOiqK,GAAgBhmK,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAG+nI,GAAajzG,IAAS,CAClHr+D,OAAQ,UACR2+D,WAAY,cAAcn3D,OAAO62D,EAAMmQ,mBAAoB,SAC3D1N,aAAczC,EAAMyQ,eAEpB,UAAW,CACT9mC,MAAOq2B,EAAM4zC,qBACbl9F,SAAUspD,EAAMwtC,WAChB7rG,OAAQ,WAGV,YAAagvK,EAAU,CACrB1vH,QAAS,OACT,YAAa7zC,OAAO89B,OAAO,CACzBshC,KAAM,QACL,OACH,UAAW,CACTA,KAAM,OACNvrB,QAAS,OACT0sD,WAAY,YAEb,OAAgBgjE,EAAS,gBAAgBxnK,OAAOiqK,EAAe,qBAAsB,CACtFlvG,gBAAiBlE,EAAMs0C,sBACrB,OAAgBq8D,EAAS,kBAAkBxnK,OAAOiqK,EAAe,sBAAsB,OAAgB,CACzGzpI,MAAOq2B,EAAMsM,UACbhjD,WAAY02C,EAAM2uE,iBAClBzqE,gBAAiBlE,EAAM0zG,qBACtB,GAAGvqK,OAAOiqK,EAAe,iBAAkB,CAC5CzpI,MAAOq2B,EAAME,iBACV,OAAgBywG,EAAS,cAAewC,EAAY,CAAC,GAAG,OAAgBA,EAAW,IAAIhqK,OAAOiqK,EAAe,oBAAqB,CACrIlvG,gBAAiBlE,EAAM4N,4BACrB,OAAgBulG,EAAW,QAASnzG,EAAM2N,oBAAoB,OAAgBwlG,EAAW,SAAU,eAAgBA,KAAa,OAAgBxC,EAAS,YAAa,CACxKzjG,mBAAqD,EAAjClN,EAAMkzG,2BACxBvC,OACD,OAAgBzrE,EAAgB,QAAS,CAC5Cx0E,UAAW,QACTw0E,KAEJmtE,GAAgBryG,EAAO,YAAaqyG,GAAgBryG,EAAO,cAAe+yG,GAAe/yG,EAAO,WAAY+yG,GAAe/yG,EAAO,aACpI,ECzFI2zG,GAAqB,SAA4BlsH,GACnD,IAAI8oB,EAAkB9oB,EAAK8oB,gBAGvBqjG,GAFcnsH,EAAKwlB,cAEesD,GAAmB,EADzC9oB,EAAKpyC,UAGrB,MAAO,CAACu+J,EADe/jK,KAAKisJ,KAAK8X,EAAiB,GAEpD,EACA,SAASC,GAAa7zG,EAAOmrF,GAC3B,IAAIn3C,EAAU9O,EAAgBz1B,EAAWylC,EAAWK,EAChDt1C,EAAeD,EAAMC,aACvB2L,EAAU5L,EAAM4L,QACdkoG,EAA0B,GAAG3qK,OAAO82D,EAAc,uBAClD8zG,EAAmB/zG,EAAMuQ,gBACzByjG,EAAsBL,GAAmB3zG,GAE3C4zG,GADuB,OAAeI,EAAqB,GACrB,GACpCl3D,EAAYquC,EAAS,GAAGhiJ,OAAO82D,EAAc,KAAK92D,OAAOgiJ,GAAU,GACvE,OAAO,OAAgB,CAAC,EAAG,GAAGhiJ,OAAO82D,EAAc,aAAa92D,OAAO2zG,IAAavH,EAAmB,CACrG7+F,SAAUspD,EAAMtpD,WACf,OAAgB6+F,EAAkBu+D,EAAyB,CAC5D/yH,SAAU,WACVE,QAAS,OACTurB,KAAM,OACNwjE,SAAU,OACVv0G,SAAU,OACV,SAAU,CACR+wC,KAAM,OACNynG,UAAW,SACXx4I,SAAU,OACVwlB,QAAS,kBAET,OAAgBs0D,EAAkB,GAAGpsG,OAAO82D,EAAc,cAAe+zC,EAAW,CACtF/yD,QAAS,OACT+uF,SAAU,OACVriC,WAAY,SAEZ39B,QAAS,GAAG7mE,OAAOyqK,EAtCC,EAsCmC,OAAOzqK,OAAO+qK,EAAuB,MAC5FzxG,aAAczC,EAAMyC,eACnB,OAAgBuxC,EAAU,GAAG7qG,OAAO82D,EAAc,iBAAkB,CACrEt+D,OAAQ,UACN,OAAgBqyG,EAAU,GAAG7qG,OAAO82D,EAAc,cAAe,CACnEE,WAAYH,EAAM4N,yBAClBjsE,OAAQ,iBACN,OAAgBqyG,EAAU,UAAW,CACvC/yD,QAAS,eACTt9C,MAAO,EACPy8F,OAAQ,GAAGj3F,OAhDS,EAgDiB,QACrCwN,WAAY,GAAGxN,OAAO4qK,EAAkB,MACxC34F,WAAY,SACZ1O,QAAS,WACPsnC,KAAY,OAAgBuB,EAAkB,cAAcpsG,OAAO82D,EAAc,gBAAgB92D,OAAO82D,EAAc,yBAAyB92D,OAAO82D,EAAc,iBAAiB92D,OAAO82D,EAAc,qBAAsB,CAClOkN,iBAAkBnN,EAAMm0G,aAAen0G,EAAMkzG,4BAC3C,OAAgB39D,EAAkB,GAAGpsG,OAAO82D,EAAc,oBAAqBwP,EAAY,CAC7F1uB,SAAU,WACVE,QAAS,OACTurB,KAAM,OACNpM,UAAW,aACX3kC,SAAU,OACV73B,OAAQmwK,EACR1/D,UA7DoB,EA8DpBppC,aA9DoB,EA+DpBt0D,WAAY,GAAGxN,OAAO4qK,EAAqC,EAAlB/zG,EAAM3qD,UAAe,MAC9D8qD,WAAYH,EAAMkuC,mBAClBzrC,aAAczC,EAAMyQ,eACpB9uE,OAAQ,UACR2+D,WAAY,aAAan3D,OAAO62D,EAAMmQ,mBAAoB,kBAAkBhnE,OAAO62D,EAAMmQ,mBAAoB,aAAahnE,OAAO62D,EAAMmQ,oBACvI/D,WAAY,OACZ3B,gBAAiBypG,EACjBhnG,mBAAoBlN,EAAMwQ,UAC1BrD,iBAAkBnN,EAAMwQ,UAAY,IACnC,OAAgBf,EAAW,GAAGtmE,OAAO82D,EAAc,cAAe,CACnEt2B,MAAOq2B,EAAM2N,kBACbhsE,OAAQ,iBACN,OAAgB8tE,EAAW,YAAa,CAC1CxuB,QAAS,eACTwpB,gBAAiBzK,EAAMwQ,UAAY,EACnCtvB,SAAU,SACV6qB,WAAY,MACZqoG,aAAc,cACZ,OAAgB3kG,EAAW,WAAYriE,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,GAAG,aAAeg6D,EAAiB,CACzGjkD,QAAS,cACT0sD,WAAY,SACZhkE,MAAOq2B,EAAM2xE,UACbroH,WAAY,OACZ5S,SAAU,GACVC,WAAY,UACZhV,OAAQ,YACP,OAAgBujG,EAAgB,KAAK/7F,OAAOyiE,GAAU,CACvD+gC,cAAe,YACb,OAAgBzH,EAAgB,UAAW,CAC7Cv7D,MAAOq2B,EAAM0xE,iBACXxsC,KAAmBz1B,KAAa,OAAgB8lC,EAAkB,GAAGpsG,OAAO2qK,EAAyB,YAAY3qK,OAAO2qK,EAAyB,UAAU,OAAgB,CAAC,EAAG,GAAG3qK,OAAO82D,EAAc,qBAAsB,CAC/NyL,kBAAmB,MAChB,OAAgB6pC,EAAkB,GAAGpsG,OAAO82D,EAAc,sBAAuBi1C,EAAY,CAChGj0D,QAAS,cACTF,SAAU,WACVtlB,SAAU,OACViwC,kBAAmB1L,EAAMq0G,2BAA6BT,IACrD,OAAgB1+D,EAAW,qDAAsD,CAClFtxG,OAAQmwK,EACR1qJ,WAAY22C,EAAM32C,WAClB1S,WAAY,GAAGxN,OAAO4qK,EAAkB,MACxCzzG,WAAY,OAAOn3D,OAAO62D,EAAMmQ,uBAC9B,OAAgB+kC,EAAW,UAAW,CACxCvxG,MAAO,OACPqpE,SAAU,OACR,OAAgBkoC,EAAW,WAAY,CACzCn0D,SAAU,WACVl8C,IAAK,EACL4nE,iBAAkB,EAClByhE,eAAgB,OAChB7jI,OAAQ,IACR0hE,WAAY,MACZqP,WAAY,WACV85B,KAAa,OAAgBK,EAAkB,GAAGpsG,OAAO82D,EAAc,2BAA4B,CACrGlf,SAAU,WACVl8C,IAAK,MACL4nE,iBAAkBzM,EAAMq0G,2BACxBnmC,eAAgBluE,EAAMq0G,2BACtB3qK,UAAW,mBACX42D,WAAY,OAAOn3D,OAAO62D,EAAMmQ,sBAC9BolC,GACN,CACA,IA8BA,GA9BuB,SAA0Bv1C,GAC/C,IAAIs0G,EACAr0G,EAAeD,EAAMC,aACrBqQ,GAAa,SAAWtQ,EAAO,CACjCiN,cAAejN,EAAMuQ,gBACrBA,gBAAiBvQ,EAAM+qD,gBACvBtoD,aAAczC,EAAMyQ,eACpBA,eAAgBzQ,EAAMshC,iBAEpB1wB,GAAa,SAAW5Q,EAAO,CACjCtpD,SAAUspD,EAAM0Q,WAChBzD,cAAejN,EAAM6Q,gBACrBN,gBAAiBvQ,EAAMiN,cACvBxK,aAAczC,EAAM8Q,eACpBL,eAAgBzQ,EAAMyC,eAEpB8xG,EAAuBZ,GAAmB3zG,GAE5Cw0G,GADuB,OAAeD,EAAsB,GAClB,GAC5C,MAAO,CAACV,GAAa7zG,GAErB6zG,GAAavjG,EAAY,OACzB,OAAgB,CAAC,EAAG,GAAGnnE,OAAO82D,EAAc,aAAa92D,OAAO82D,EAAc,QAASq0G,EAAmB,CAAC,GAAG,OAAgBA,EAAkB,GAAGnrK,OAAO82D,EAAc,0BAA2B,CACjMkgC,YAAangC,EAAMy0G,2BAA6Bz0G,EAAM3qD,aACpD,OAAgBi/J,EAAkB,GAAGnrK,OAAO82D,EAAc,qBAAsB,CAClFyL,kBAAmB8oG,IACjBF,IAEJT,GAAajjG,EAAY,MAC3B,EC3JA,SAAS,GAAa5Q,EAAOmrF,GAC3B,IAAIjmD,EAAgB8O,EAAUvkC,EAAWC,EACrCzP,EAAeD,EAAMC,aACvBo0G,EAA6Br0G,EAAMq0G,2BACnC5xG,EAAezC,EAAMyC,aACnBiyG,EAA4B10G,EAAMiN,cAAkC,EAAlBjN,EAAM3qD,UACxDs/J,EAAuB9kK,KAAKisJ,KAAsB,KAAjB97F,EAAMtpD,UACvComG,EAAYquC,EAAS,GAAGhiJ,OAAO82D,EAAc,KAAK92D,OAAOgiJ,GAAU,GACvE,OAAO,OAAgB,CAAC,EAAG,GAAGhiJ,OAAO82D,EAAc,WAAW92D,OAAO2zG,IAAaptC,EAAkB,CAClGh5D,SAAUspD,EAAMtpD,WACf,OAAgBg5D,EAAiB,GAAGvmE,OAAO82D,EAAc,aAAc7yD,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,GAAG,SAAe80B,KAAUklC,EAAiB,CAClJjkD,QAAS,OACTwhB,aAAcA,IACb,OAAgByiC,EAAgB,GAAG/7F,OAAO82D,EAAc,qBAAsB,CAC/Elf,SAAU,WACVl8C,IAAK,EACL4nE,iBAAkB4nG,EAClBnmC,eAAgBmmC,EAChBh7F,OAAQ,EACR,UAAW,CACT11E,MAAO,WAEP,OAAgBuhG,EAAgB,eAAe/7F,OAAO82D,EAAc,gCAAgC92D,OAAO82D,EAAc,oCAAqC,CAChK+P,QAAS,EACTr5D,WAAY,GAAGxN,OAAOurK,EAA2B,MACjDp0G,WAAY,OAAOn3D,OAAO62D,EAAMmQ,mBAAoB,mBAEpD,wCAAyC,CACvCx5D,WAAY,GAAGxN,OAAOurK,EAA2B,UAEjD,OAAgBxvE,EAAgB,GAAG/7F,OAAO82D,EAAc,mBAAoB,CAC9Elf,SAAU,WACVqrB,WAAY,UACV,OAAgB84B,EAAgB,GAAG/7F,OAAO82D,EAAc,0BAA2B,CACrFK,WAAY,OACZnf,cAAe,UACb,OAAgB+jD,EAAgB,CAAC,UAA4C,GAAG/7F,OAAO82D,EAAc,yBAAkE,GAAG92D,OAAO82D,EAAc,iCAAiChhD,KAAK,KAAM,CAC7OgiC,QAAS,eACTt9C,MAAO,EACPy3E,WAAY,SACZ1O,QAAS,WACPw4B,MAAmB,OAAgBx1B,EAAiB,cAAcvmE,OAAO82D,EAAc,gBAAgB92D,OAAO82D,EAAc,+BAA+B92D,OAAO82D,EAAc,gBAAgB92D,OAAO82D,EAAc,kCAAmC,CAC1PkN,iBAAkBwnG,KAChB,OAAgBjlG,EAAiB,IAAIvmE,OAAO82D,EAAc,UAAU92D,OAAO82D,EAAc,mBAAoB,CAC/Gt2B,MAAOq2B,EAAM40G,wBACX,OAAgBllG,EAAiB,SAASvmE,OAAO82D,EAAc,sBAAsB,OAAgB,CAAC,EAAG,GAAG92D,OAAO82D,EAAc,cAAe+zC,EAAW,CAC7JrwG,MAAO,OACPC,OAAQo8D,EAAMiN,cACd+C,QAAS,KAAK7mE,OAAOkrK,EAA4B,QAChD,OAAgBrgE,EAAU,GAAG7qG,OAAO82D,EAAc,2BAA4B,CAC/Er8D,OAAQ8wK,KACN,OAAgB1gE,EAAU,UAAW,CACvCr9F,WAAY,GAAGxN,OAAOurK,EAA2B,QAC/C1gE,MAAa,OAAgBtkC,EAAiB,IAAIvmE,OAAO82D,EAAc,qBAAqB,OAAgB,CAAC,EAAG,GAAG92D,OAAO82D,EAAc,cAAewP,EAAY,CACrK,UAAW,CACTxuB,QAAS,UAEV,OAAgBwuB,EAAW,GAAGtmE,OAAO82D,EAAc,qBAAsB,CAC1Elf,SAAU,SACVp9C,MAAO,UACL,OAAgB8rE,EAAW,GAAGtmE,OAAO82D,EAAc,0BAA2B,CAChFlf,SAAU,WACV0rB,iBAAkB,EAClByhE,eAAgB,EAChBl+D,QAAS,KAAK7mE,OAAOkrK,EAA4B,MACjD,UAAW,CACTpzH,QAAS,UAETwuB,KAAcC,GACpB,CACe,SAAS,GAAe1P,GACrC,IAAI60G,EACA50G,EAAeD,EAAMC,aACrB60G,EAA2B90G,EAAMy0G,2BAA6Bz0G,EAAM3qD,UACxE,MAAO,CAAC,GAAa2qD,GAGrB,IAAa,SAAWA,EAAO,CAC7BiN,cAAejN,EAAMuQ,gBACrB9N,aAAczC,EAAMyQ,iBAClB,OACJ,OAAgB,CAAC,EAAG,GAAGtnE,OAAO82D,EAAc,WAAW92D,OAAO82D,EAAc,QAAQ,OAAgB,CAAC,EAAG,SAAS92D,OAAO82D,EAAc,sBAAuB40G,EAAe,CAAC,GAAG,OAAgBA,EAAc,GAAG1rK,OAAO82D,EAAc,qBAAsB,CAC1PwM,iBAAkBqoG,EAClB5mC,eAAgB4mC,KACd,OAAgBD,EAAc,GAAG1rK,OAAO82D,EAAc,aAAc,CACtE+P,QAAS,KAAK7mE,OAAO2rK,EAA0B,SAC7C,OAAgBD,EAAc,IAAI1rK,OAAO82D,EAAc,gBAAgB92D,OAAO82D,EAAc,qBAAsB,CACpHiuE,eAAgB4mC,EAA4C,IAAjB90G,EAAMtpD,YAC/C,OAAgBm+J,EAAc,kBAAkB1rK,OAAO82D,EAAc,gBAAgB92D,OAAO82D,EAAc,mCAAmC92D,OAAO82D,EAAc,gBAAgB92D,OAAO82D,EAAc,sCAAuC,CAChPkN,iBAAmC,IAAjBnN,EAAMtpD,WACtBm+J,KAGJ,IAAa,SAAW70G,EAAO,CAC7BiN,cAAejN,EAAM6Q,gBACrBn6D,SAAUspD,EAAM0Q,WAChBjO,aAAczC,EAAM8Q,iBAClB,MACN,CC7FA,IA4BIikG,GAAiB,SAAwBC,EAAeh1G,GAC1D,IAAIklC,EACA+vE,EAAyBz+K,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,IAAmBA,UAAU,GACxFypE,EAAeD,EAAMC,aACvBi1G,EAAmBl1G,EAAMk1G,iBACzBC,EAAen1G,EAAMm1G,aACrB9wE,EAASrkC,EAAMqkC,OACb+wE,EAAiBH,GAAyB,OAAgB,CAAC,EAAG,GAAG9rK,OAAO82D,EAAc,aAAc,CACtGgE,YAAaixG,IACV,CAAC,EACN,OAAO,OAAgB,CAAC,EAAGF,GAAe,OAAgB,CAAC,EAAG,SAAS7rK,OAAO82D,EAAc,mBAAmB92D,OAAO82D,EAAc,0BAA0B92D,OAAOk7F,EAAQ,6BAA8Bj3F,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGkqI,IAAkBlwE,EAAiB,CAAC,GAAG,OAAgBA,EAAgB,GAAG/7F,OAAO82D,EAAc,cAAc92D,OAAO82D,EAAc,aAAc,CACzXgE,YAAaixG,EACb70G,UAAW,SAASl3D,OAAO62D,EAAMkO,oBAAqB,OAAO/kE,OAAOgsK,GACpErpG,QAAS,KACP,OAAgBo5B,EAAgB,WAAW/7F,OAAO82D,EAAc,aAAc,CAChFgE,YAAaixG,IACXhwE,KACN,EAmBI,GAAe,SAAsBllC,GACvC,IAAI01C,EAAiB2/D,EAAiB5mG,EAClCxO,EAAeD,EAAMC,aACvBo0G,EAA6Br0G,EAAMq0G,2BACnCzoG,EAAU5L,EAAM4L,QAClB,OAAO6C,EAAQ,CAAC,GAAG,OAAgBA,EAAOxO,EAAc7yD,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,GAAG,SAAe80B,KAAUq1G,EAAkB,CACjIt0H,SAAU,WACVE,QAAS,eACTt/C,OAAQ,YACP,OAAgB0zK,EAAiB,SAASlsK,OAAO82D,EAAc,sBAAsB92D,OAAO82D,EAAc,aAAc7yD,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAzEnI,SAA0B80B,GAC/C,IAAIg0C,EAAUpgD,EACVqM,EAAeD,EAAMC,aACzB,OAAOrM,EAAQ,CACb7S,SAAU,WACVmjB,gBAAiBlE,EAAMiO,iBACvBhC,OAAQ,GAAG9iE,OAAO62D,EAAM3qD,UAAW,OAAOlM,OAAO62D,EAAMkM,SAAU,KAAK/iE,OAAO62D,EAAM0N,aACnFpN,WAAY,OAAOn3D,OAAO62D,EAAMmM,kBAAmB,KAAKhjE,OAAO62D,EAAMQ,iBACrEy+C,MAAO,CACLt9G,OAAQ,aAET,OAAgBiyD,EAAO,GAAGzqD,OAAO82D,EAAc,iBAAkB,CAClEt+D,OAAQ,OACRs9G,MAAO,CACLt9G,OAAQ,OACRgoC,MAAO,cAEP,OAAgBiqB,EAAO,GAAGzqD,OAAO82D,EAAc,eAAgB+zC,EAAW,CAC5ErqE,MAAOq2B,EAAM2N,kBACbxN,WAAYH,EAAM4N,yBAClBjsE,OAAQ,gBACP,OAAgBqyG,EAAU,GAAG7qG,OAAO82D,EAAc,cAAe,CAClEE,WAAYH,EAAM4N,4BAChB,OAAgBomC,EAAU,QAAS,CACrCryG,OAAQ,gBACNqyG,IAAYpgD,CAClB,CA+C6J0hH,CAAiBt1G,IAzBvI,SAA0CA,GAC/E,IAAIC,EAAeD,EAAMC,aACzB,OAAO,OAAgB,CAAC,EAAG,GAAG92D,OAAO82D,EAAc,2BAA4B,CAC7EmgC,OAAQ,EACRpwB,QAAS,EACT7P,WAAY,cACZ8L,OAAQ,OACRH,QAAS,OACTypG,WAAY,OACZ,kCAAmC,CACjCt0H,QAAS,OACT,qBAAsB,SAG5B,CAWuLu0H,CAAiCx1G,MAAU,OAAgBq1G,EAAiB,GAAGlsK,OAAO82D,EAAc,mBAAoB7yD,OAAO89B,OAAO,CACzTshC,KAAM,EACNljD,WAAY,UACX,SAAgB,OAAgB+rJ,EAAiB,GAAGlsK,OAAO82D,EAAc,0BAA2B7yD,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAG,OAAe,CACpJshC,KAAM,EACN7iC,MAAOq2B,EAAM40G,qBACbzzH,cAAe,WACZ,OAAgBk0H,EAAiB,GAAGlsK,OAAO82D,EAAc,UAAW7yD,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,GAAG,aAAewqE,EAAkB,CACxI30D,SAAU,WACVl8C,IAAK,MACL4nE,iBAAkB,OAClByhE,eAAgBmmC,EAChBzwK,OAAQo8D,EAAMm0G,aACd9/D,WAAYr0C,EAAMm0G,aAAe,EACjCxqI,MAAOq2B,EAAMy1G,oBACb/+J,SAAUspD,EAAMm0G,aAChBx9J,WAAY,EACZE,UAAW,SACXsqC,cAAe,OACfF,QAAS,OACT0sD,WAAY,WACX,OAAgB+H,EAAiB9pC,GAAS,OAAgB,CAC3D+gC,cAAe,MACfrsC,WAAY,aAAan3D,OAAO62D,EAAMmQ,oBACtC,QAAS,CACPw8B,cAAe,QAEhB,SAASxjG,OAAO82D,EAAc,YAAa,CAC5C9e,cAAe,WACZ,OAAgBu0D,EAAiB,GAAGvsG,OAAO82D,EAAc,eAAgB,CAC5Et+D,OAAQ,iBACN,OAAgB+zG,EAAiB,uBAAwB,CAC3DjrC,gBAAiB,IACfirC,MAAoB,OAAgB2/D,EAAiB,GAAGlsK,OAAO82D,EAAc,UAAW,CAC1Flf,SAAU,WACVl8C,IAAK,MACL4nE,iBAAkB,OAClByhE,eAAgBmmC,EAChBhqK,OAAQ,EACR42C,QAAS,eACTt9C,MAAOq8D,EAAMm0G,aACbvwK,OAAQo8D,EAAMm0G,aACd9/D,WAAYr0C,EAAMm0G,aAAe,EACjCxqI,MAAOq2B,EAAMy1G,oBACb/+J,SAAUspD,EAAMm0G,aAChB5qJ,UAAW,SACX5S,WAAY,EACZE,UAAW,SACXu4H,cAAe,OACfjvE,WAAYH,EAAMiO,iBAClBtsE,OAAQ,UACR4I,QAAS,EACT+1D,WAAY,SAASn3D,OAAO62D,EAAMmM,kBAAmB,mBAAmBhjE,OAAO62D,EAAMmQ,mBAAoB,SACzGk/D,cAAe,OACf,WAAY,CACVpuF,QAAS,SAEX,UAAW,CACTtX,MAAOq2B,EAAM01G,sBAEb,OAAgBL,EAAiB,WAAW,OAAgB,CAAC,EAAG,GAAGlsK,OAAO82D,EAAc,UAAW,CACrG11D,QAAS,KACN8qK,MAAoB,OAAgB5mG,EAAO,GAAGtlE,OAAO82D,EAAc,kBAAkB,OAAgB,CAAC,EAAG,GAAG92D,OAAO82D,EAAc,UAAW,CAC/IiuE,eAAgBmmC,EAA6Br0G,EAAMtpD,SAAWspD,EAAMwQ,aACjE/B,CACP,EAEIknG,GAAiB,SAAwB31G,GAC3C,IAAIuL,EACAtL,EAAeD,EAAMC,aACzB,MAAO,EAAC,OAAgB,CAAC,EAAGA,GAAesL,EAAgB,CAAC,GAAG,OAAgBA,EAAe,gBAAgBpiE,OAAO82D,EAAc,aAAc,CAC/IiE,gBAAiB,yBACjBD,YAAa,yBACb5D,UAAW,qBACT,OAAgBkL,EAAe,IAAIpiE,OAAO82D,EAAc,iBAAkB,CAC5Et8D,MAAO,SACL4nE,IAKJ,GAAavL,GAEb,GAAeA,GAEf,GAAiBA,GAEjB,GAAiBA,IAGjB,OAAgB,CAAC,EAAG,GAAG72D,OAAO82D,EAAc,QAAS,CACnDvvC,UAAW,QAKbqkJ,GAAe90G,GAAc,SAAWD,EAAO,CAC7Ck1G,iBAAkBl1G,EAAMwL,kBACxB2pG,aAAcn1G,EAAM2O,kBACjBomG,GAAe,GAAG5rK,OAAO82D,EAAc,kBAAkB,SAAWD,EAAO,CAC9Ek1G,iBAAkBl1G,EAAMyL,gBACxB0pG,aAAcn1G,EAAM4O,qBAClB,GAAOmmG,GAAe,GAAG5rK,OAAO82D,EAAc,oBAAoB,SAAWD,EAAO,CACtFk1G,iBAAkBl1G,EAAM41G,kBACxBT,aAAcn1G,EAAM61G,uBAClB,GAIJ5rG,GAAoBjK,EAAO,CACzBsK,YAAa,GAAGnhE,OAAO82D,EAAc,aACrCmK,WAAY,GAAGjhE,OAAO82D,EAAc,cAExC,EAEA,IAAe,EAAAQ,GAAA,GAAsB,UAAU,SAAUT,EAAOvY,GAC9D,IAAIkhD,EAAgBlhD,EAAKkhD,cACrBmtE,GAAc,SAAW91G,EAAO,CAClC2oC,cAAeA,EACf0rE,2BAA4Br0G,EAAMylC,UAAY,IAEhD,MAAO,CAACkwE,GAAeG,GACzB,IAAG,SAAU91G,GACX,MAAO,CACLulC,YAAavlC,EAAMimC,gBAAkB,GAEzC,IC/Ke,SAAS8vE,GAAqBC,EAAmBt4D,GAC9D,OAAOs4D,GAjCkB,SAA8Bt4D,GACvD,IACI8lD,EAAe,CACjBtiH,SAAU,CACR01C,SAAS,EACTC,SAAS,EACTE,QAAQ,GAEVjC,WAPiC,WAAlB4oB,EAA6B,SAAW,UAQvDjxB,cAAe,CACbC,cAAc,IAGlB,MAAO,CACL/8E,WAAYvC,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGs4H,GAAe,CACzDltJ,OAAQ,CAAC,KAAM,MACfyiE,OAAQ,CAAC,EAAG,KAEdnpE,YAAaxC,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGs4H,GAAe,CAC1DltJ,OAAQ,CAAC,KAAM,MACfyiE,OAAQ,CAAC,EAAG,KAEdtpE,QAASrC,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGs4H,GAAe,CACtDltJ,OAAQ,CAAC,KAAM,MACfyiE,OAAQ,CAAC,GAAI,KAEfrpE,SAAUtC,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGs4H,GAAe,CACvDltJ,OAAQ,CAAC,KAAM,MACfyiE,OAAQ,CAAC,GAAI,KAGnB,CAE8B,CAAqB2kC,EACnD,CCjCA,IAiBA,GAjBmB,CACjB,KAAQ,CACN,IAAO,MACP,MAAS,CACP,QAAW,gBACX,UAAa,SAEf,SAAY,CAAC,CACX,IAAO,OACP,MAAS,CACP,EAAK,gMAIX,KAAQ,OACR,MAAS,YCTP,GAAe,SAAsBzwG,EAAO+6C,GAC9C,OAAoB,gBAAoBsX,GAAA,GAAU,OAAS,CAAC,EAAGryD,EAAO,CACpE+6C,IAAKA,EACL8U,KAAM,KAEV,EAIA,OAA4B,aAAiB,ICE7C,GAjBqB,CACnB,KAAQ,CACN,IAAO,MACP,MAAS,CACP,QAAW,gBACX,UAAa,SAEf,SAAY,CAAC,CACX,IAAO,OACP,MAAS,CACP,EAAK,ugBAIX,KAAQ,SACR,MAAS,YCTP,GAAiB,SAAwB7vD,EAAO+6C,GAClD,OAAoB,gBAAoBsX,GAAA,GAAU,OAAS,CAAC,EAAGryD,EAAO,CACpE+6C,IAAKA,EACL8U,KAAM,KAEV,EAIA,OAA4B,aAAiB,ICZ7C,IAAI,GAAgC,SAAUppD,EAAG5Z,GAC/C,IAAIH,EAAI,CAAC,EACT,IAAK,IAAIqa,KAAKN,EAAOtG,OAAOtX,UAAUqX,eAAe3V,KAAKkc,EAAGM,IAAMla,EAAEgP,QAAQkL,GAAK,IAAGra,EAAEqa,GAAKN,EAAEM,IAC9F,GAAS,MAALN,GAAqD,mBAAjCtG,OAAO+wB,sBAA2C,KAAIrnC,EAAI,EAAb,IAAgBkd,EAAI5G,OAAO+wB,sBAAsBzqB,GAAI5c,EAAIkd,EAAEvd,OAAQK,IAClIgD,EAAEgP,QAAQkL,EAAEld,IAAM,GAAKsW,OAAOtX,UAAUgsD,qBAAqBtqD,KAAKkc,EAAGM,EAAEld,MAAK6C,EAAEqa,EAAEld,IAAM4c,EAAEM,EAAEld,IADuB,CAGvH,OAAO6C,CACT,EAoBIs8K,GAAkC,kCAClCC,GAAiB,SAAwBn/K,EAAIixD,GAC/C,IAAIwxD,EACA1sG,EAiEAqpK,EAhEAjtG,EAAqBnyE,EAAGs+D,UAC1B+gH,EAAcr/K,EAAGs/K,SACjBA,OAA2B,IAAhBD,GAAgCA,EAC3C5sK,EAAYzS,EAAGyS,UACfooE,EAAgB76E,EAAG66E,cACnB4Z,EAAoBz0F,EAAGy0F,kBACvBsD,EAAiB/3F,EAAG+3F,eACpBunE,EAAoBt/J,EAAGs/J,kBACvBigB,EAAgBv/K,EAAG6xK,WACnBA,OAA+B,IAAlB0N,EAA2B,IAAMA,EAC9C7jF,EAAY17F,EAAG07F,UACf8jF,EAAoBx/K,EAAG8xK,eACvBA,OAAuC,IAAtB0N,EAA+B,GAAKA,EACrD9kG,EAAgB16E,EAAGmjC,KACnBy3C,EAAiB56E,EAAGu+D,SACpB0iG,EAAkBjhK,EAAGihK,gBACrBwe,EAAez/K,EAAGs4D,OAClB6/B,EAAoBn4F,EAAGm4F,kBACvBsuB,EAA2BzmH,EAAGymH,yBAC9BC,EAAwB1mH,EAAG0mH,sBAC3Bg5D,EAAgB1/K,EAAG25B,UACnBhvB,EAAQ3K,EAAG2K,MACX82J,EAAazhK,EAAGyhK,WAChBvrJ,EAAQ,GAAOlW,EAAI,CAAC,YAAa,WAAY,YAAa,gBAAiB,oBAAqB,iBAAkB,oBAAqB,aAAc,YAAa,iBAAkB,OAAQ,WAAY,kBAAmB,SAAU,oBAAqB,2BAA4B,wBAAyB,YAAa,QAAS,eACnUkyE,EAAoB,aAAiB,OACvC2+B,EAA2B3+B,EAAkBuiB,kBAC7CzlB,EAAekD,EAAkBlD,aACjC2wG,EAAcztG,EAAkBytG,YAChCC,EAAmB1tG,EAAkBv4C,UACrC6sF,EAAUt0C,EAAkBs0C,QAC5Bq5D,EAA+B3tG,EAAkBw0C,sBACjDC,EAAgBz0C,EAAkBy0C,cAClCm5D,EAAS5tG,EAAkB4tG,OACzBxhH,EAAY0Q,EAAa,SAAUmD,GACnCy/B,EAAgB5iC,IAChBr1C,EAAY+lJ,QAAqDA,EAAgBE,EACjFviG,EAAwBjN,GAAsB9R,EAAW3kC,GAC3Dg3C,EAAc0M,EAAsB1M,YACpCL,EAAwB+M,EAAsB/M,sBAC5ClB,EAAY,GAAS9Q,GACvBqd,GAAa,OAAevM,EAAW,GACvCwM,EAAUD,EAAW,GACrBtM,EAASsM,EAAW,GAClBq+E,EAAO,WAAc,WACvB,IAAIplJ,EAAIsB,EAAM8jJ,KACd,GAAU,aAANplJ,EAGJ,OAAIA,IAAMsqK,GACD,WAEFtqK,CACT,GAAG,CAACsB,EAAM8jJ,OACN+lB,EAAsB,aAAT/lB,GAAgC,SAATA,EACpC0L,GCnFS,SAAsBhE,EAAYp5D,GAC/C,YAAqBhzE,IAAdgzE,EAA0BA,EAA2B,OAAfo5D,CAC/C,CDiFuBse,CAAa9pK,EAAMwrJ,WAAYxrJ,EAAMoyF,WACtD23E,GAA+J,QAAhIlqK,EAAK2wG,QAAqEA,EAAwBD,SAA6C,IAAP1wG,EAAgBA,EAAK8pK,EAE5LK,GAAqB,aAAiBjqC,IACxCkqC,GAAgBD,GAAmB5nH,OACnCk+E,GAAc0pC,GAAmB1pC,YACjCD,GAAkB2pC,GAAmB3pC,gBACrCE,GAAeypC,GAAmBzpC,aAChCt9B,GZ1FuB,SAAyBgnE,EAAeV,GACnE,OAAOA,GAAgBU,CACzB,CYwFqBC,CAAgBD,GAAeV,GAIhDL,OADsB9pJ,IAApB2rI,EACeA,EACC,aAATjH,EACQ,MAEC2lB,aAAiD,EAASA,EAAY,YAA2B,gBAAoB,GAAoB,CACzJ73G,cAAe,WAInB,IAAIu4G,GEtGS,SAAkB3vH,GAC/B,IAAIgxG,EAAahxG,EAAKgxG,WACpBC,EAAYjxG,EAAKixG,UACjBgQ,EAAuBjhH,EAAKihH,qBAC5B94D,EAAanoD,EAAKmoD,WAClBvnC,EAAU5gB,EAAK4gB,QACfpV,EAAWxL,EAAKwL,SAChBs6E,EAAc9lF,EAAK8lF,YACnBl4E,EAAY5N,EAAK4N,UACjBonG,EAAiBh1G,EAAKg1G,eACtBjvB,EAAe/lF,EAAK+lF,aACpBnuC,EAAY53C,EAAK43C,UACD53C,EAAKoX,cAKvB,IAAIg+F,EAAkBnE,QAA6CA,EAAyB,gBAAoB,GAAmB,MAE/H2e,EAAoB,SAA2BC,GACjD,OAAmB,OAAf7e,GAAwBlrB,GAAgBluC,EAGxB,gBAAoB,WAAgB,MAAyB,IAAnBo9D,GAA4B6a,EAAW/pC,GAAeC,GAF3G,IAGX,EAEI+pC,EAAmB,KACvB,QAAmBlrJ,IAAfosI,EACF8e,EAAmBF,EAAkB5e,QAChC,GAAIpwF,EACTkvG,EAAmBF,EAAgC,gBAAoB,GAAiB,CACtFt5D,MAAM,SAEH,CACL,IAAInyC,EAAU,GAAGziE,OAAOksD,EAAW,WACnCkiH,EAAmB,SAA0B3jH,GAC3C,IAAIlE,EAAOkE,EAAMlE,KACfszF,EAAapvF,EAAMovF,WACrB,OACSq0B,EADL3nH,GAAQszF,EAC6B,gBAAoB,GAAgB,CACzEx5I,UAAWoiE,IAGwB,gBAAoB,GAAc,CACvEpiE,UAAWoiE,IAEf,CACF,CAgBA,MAAO,CACL8sF,UAAWmE,EACXpE,WAAY8e,EACZC,cAhB2BnrJ,IAAzBq8I,EACeA,EACRz1G,EACqB,gBAAoB,GAAe,MAEhD,KAYjB28C,gBATiBvjF,IAAfujF,EACiBA,EAEa,gBAAoB,GAAe,MAQvE,CFiCkB6nE,CAASrqK,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGj+B,GAAQ,CAC7DgmD,SAAU6jH,EACVvpC,YAAaA,GACbC,aAAcA,GACdivB,eAAgBA,GAChBpnG,UAAWA,EACXgqC,UAAWpyF,EAAMoyF,UACjBxgC,cAAe,YAEjB45F,GAAa2e,GAAU3e,WACvB+e,GAAWJ,GAAUI,SACrB5nE,GAAawnE,GAAUxnE,WACvB8oD,GAAY0e,GAAU1e,UACpBsE,IAAkC,IAAfxE,EAAsB,CAC3CE,UAAWA,IACTF,EACAkf,IAAc,QAAKzqK,EAAO,CAAC,aAAc,aACzC0qK,GAA+B,IAAW7oF,GAAkBunE,GAAmB,OAAgB,CAAC,EAAG,GAAGltJ,OAAOksD,EAAW,cAAclsD,OAAOunB,GAA0B,QAAdA,GAAsBkhD,EAAexL,GAC9LwxG,IAAa,SAAQ,SAAUr8I,GACjC,IAAIxkC,EACJ,OAAmG,QAA3FA,EAAK06E,QAAqDA,EAAgB/J,SAAgC,IAAP3wE,EAAgBA,EAAKwkC,CAClI,IAEI+5B,GAAW,aAAiB,IAC5Bsd,GAAiBjB,QAAuDA,EAAiBrc,GACzF6nG,GAAkB,KAAY3jD,EAAe,CAAC,GAAG,OAAgBA,EAAc,GAAGrwG,OAAOksD,EAAW,OAAuB,UAAfuiH,KAAyB,OAAgBp+D,EAAc,GAAGrwG,OAAOksD,EAAW,OAAuB,UAAfuiH,KAAyB,OAAgBp+D,EAAc,GAAGrwG,OAAOksD,EAAW,QAAuB,QAAd3kC,IAAsB,OAAgB8oF,EAAc,GAAGrwG,OAAOksD,EAAW,gBAAiBghH,IAAW,OAAgB78D,EAAc,GAAGrwG,OAAOksD,EAAW,iBAAkBi4E,IAAkB9zB,GZpIhd,SAA6BnkD,EAAWhG,EAAQk+E,GACrD,IAAIt4E,EACJ,OAAO,KAAYA,EAAc,CAAC,GAAG,OAAgBA,EAAa,GAAG9rD,OAAOksD,EAAW,mBAA+B,YAAXhG,IAAuB,OAAgB4F,EAAa,GAAG9rD,OAAOksD,EAAW,mBAA+B,YAAXhG,IAAuB,OAAgB4F,EAAa,GAAG9rD,OAAOksD,EAAW,iBAA6B,UAAXhG,IAAqB,OAAgB4F,EAAa,GAAG9rD,OAAOksD,EAAW,sBAAkC,eAAXhG,IAA0B,OAAgB4F,EAAa,GAAG9rD,OAAOksD,EAAW,iBAAkBk4E,GAAct4E,GAC/e,CYiIse4iH,CAAoBxiH,EAAW66C,GAAcq9B,IAAclmE,EAAuBwvG,aAAuC,EAASA,EAAOrtK,UAAWA,EAAWooE,EAAexL,GAE9oB0xG,GAAgB,WAAc,WAChC,YAAkBzrJ,IAAdomE,EACKA,EAEY,QAAd/hE,EAAsB,cAAgB,YAC/C,GAAG,CAAC+hE,EAAW/hE,IACXimI,GAA0Bof,GAAqB7mF,EAAmBwuB,GAQtE,OAAO/qC,EAAsB,gBAAoB,GAAUvlE,OAAO89B,OAAO,CACvE8c,IAAKA,EACLu1D,QAASA,EACTylC,WAAY6zB,aAAuC,EAASA,EAAO7zB,YAClE00B,GAAa,CACdh2K,MAAO0L,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAG2rI,aAAuC,EAASA,EAAOn1K,OAAQA,GACtG87G,yBAA0Bw5D,GAC1B9nF,kBAAmBynE,GACnBhwE,gBAAgB,QAAkBgiB,EAAe,WAAY17F,EAAM05E,gBACnEiiF,WAAYA,EACZC,eAAgBA,EAChB9X,KAAMA,EACN17F,UAAWA,EACXo9B,UAAWqlF,GACXpnJ,UAAWA,EACX+nI,WAAYA,GACZiQ,qBAAsB8O,GACtB5nE,WAAYA,GACZ4oD,WAAYwE,GACZhF,gBAAiBme,EACjB3sK,UAAW2zJ,GACX3xE,kBAAmBA,GAAqBoc,EACxCyuD,kBAAmBshB,GACnBriH,SAAUsd,MAEd,EAIA,IAAI,GAAsB,aAAiBsjG,IAGvC,GnGtKW,SAAsBhgH,EAAW6hH,EAAkBC,EAAgBC,GAoEhF,OAAOjkC,IAnEP,SAAmB/mI,GACjB,IAAIi8D,EAAqBj8D,EAAMooD,UAC7B3zD,EAAQuL,EAAMvL,MACZ0lH,EAAY,SAAa,MACzBhlD,EAAkB,WAAe,GACnCC,GAAmB,OAAeD,EAAiB,GACnDgxB,EAAc/wB,EAAiB,GAC/B61G,EAAiB71G,EAAiB,GAChCE,EAAmB,WAAe,GACpCC,GAAmB,OAAeD,EAAkB,GACpD4wB,EAAa3wB,EAAiB,GAC9B21G,EAAgB31G,EAAiB,GAC/BulC,GAAkB,EAAAC,GAAA,IAAe,EAAO,CACxCjwG,MAAOkV,EAAMyiD,OAEfw4C,GAAmB,OAAeH,EAAiB,GACnDr4C,EAAOw4C,EAAiB,GACxBC,EAAUD,EAAiB,GAGzB7yC,GAAY0Q,EAFQ,aAAiB,OACNA,cACNgyG,GAAoB,SAAU7uG,GAC3D,aAAgB,WAGd,GADAi/B,GAAQ,GACsB,oBAAnB5nD,eAAgC,CACzC,IAAIwkB,EAAiB,IAAIxkB,gBAAe,SAAUmR,GAChD,IAAInsD,EAAUmsD,EAAQ,GAAGpzD,OACzB45K,EAAe3yK,EAAQm/D,aAAe,GACtCyzG,EAAc5yK,EAAQk/D,YACxB,IACIrsE,EAAWqC,aAAY,WACzB,IAAI1D,EACAqhL,EAAcJ,EAAiB,IAAI7uK,OAAO6uK,EAAe3iH,IAAc,IAAIlsD,OAAOksD,EAAW,aAC7F61B,EAAqC,QAA5Bn0F,EAAKqwH,EAAU/pH,eAA4B,IAAPtG,OAAgB,EAASA,EAAG67D,cAAcwlH,GACvFltF,IACF1wF,cAAcpC,GACd2sE,EAAezjB,QAAQ4pC,GAE3B,GAAG,IACH,OAAO,WACL1wF,cAAcpC,GACd2sE,EAAe1jB,YACjB,CACF,CACF,GAAG,IACH,IAAIg3H,EAAcjrK,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGj+B,GAAQ,CACxDvL,MAAO0L,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGxpC,GAAQ,CAC7C0+F,OAAQ,IAEV1wC,KAAMA,EACNvlD,QAASulD,EACT87B,kBAAmB,WACjB,OAAO47B,EAAU/pH,OACnB,IAKF,OAHI46K,IACFI,EAAcJ,EAAUI,IAEN,gBAAoB,MAAO,CAC7CrwH,IAAKo/D,EACL1lH,MAAO,CACL6sI,cAAen7C,EACfryC,SAAU,WACVisB,SAAUmmB,IAEE,gBAAoBj9B,EAAW9oD,OAAO89B,OAAO,CAAC,EAAGmtI,IACnE,GAEF,CmGiGgBC,CAAa,IAC7B,GAAOrC,gCAAkCA,GACzC,GAAOlzB,OAAS,GAChB,GAAOyb,SAAW,GAClB,GAAOr1D,uCAAyC,GAIhD,UG7LIovE,GAAa,SAAoBtrK,GACnC,OAAoB,gBAAoB,GAAQG,OAAO89B,OAAO,CAAC,EAAGj+B,EAAO,CACvE+1I,YAAY,EACZ9oH,KAAM,UAEV,EACIs+I,GAAe,SAAsBvrK,GACvC,OAAoB,gBAAoB,GAAQG,OAAO89B,OAAO,CAAC,EAAGj+B,EAAO,CACvE+1I,YAAY,EACZ9oH,KAAM,WAEV,EACAq+I,GAAWx1B,OAAS,GAAOA,OAC3By1B,GAAaz1B,OAAS,GAAOA,OCXtB,IAgBI01B,GAAgB,SAAuBz4G,GAChD,MAAO,CACLiE,YAAajE,EAAM04G,sBACnBC,qBAAsB34G,EAAM3qD,UAEhC,EACWujK,GAAiB,SAAwB54G,GAClD,MAAO,CACLiE,YAAajE,EAAM04G,sBACnBr4G,UAAW,SAASl3D,OAAO62D,EAAMkO,oBAAqB,OAAO/kE,OAAO62D,EAAM2O,gBAC1EgqG,qBAAsB34G,EAAM3qD,UAC5By2D,QAAS,EAEb,EACW,GAAmB,SAA0B9L,GACtD,MAAO,CACLr2B,MAAOq2B,EAAM2N,kBACbzJ,gBAAiBlE,EAAM4N,yBACvB3J,YAAajE,EAAM0N,YACnBrN,UAAW,OACX1+D,OAAQ,cACR4I,QAAS,EACT,UAAW6C,OAAO89B,OAAO,CAAC,EAAGutI,IAAc,SAAWz4G,EAAO,CAC3D04G,sBAAuB14G,EAAM0N,gBAGnC,EACImrG,GAAqB,SAA4B74G,GACnD,IAAI84G,EAAyB94G,EAAM84G,uBACjCpoG,EAAa1Q,EAAM0Q,WACnBqoG,EAAe/4G,EAAM+4G,aACrBjoG,EAAiB9Q,EAAM8Q,eACvBkoG,EAA2Bh5G,EAAMg5G,yBACnC,MAAO,CACLhpG,QAAS,GAAG7mE,OAAO2vK,EAAwB,OAAO3vK,OAAO6vK,EAA0B,MACnFtiK,SAAUg6D,EACV/5D,WAAYoiK,EACZt2G,aAAcqO,EAElB,EACWmoG,GAAqB,SAA4Bj5G,GAC1D,MAAO,CACLgQ,QAAS,GAAG7mE,OAAO62D,EAAMk5G,uBAAwB,OAAO/vK,OAAO62D,EAAMy0G,2BAA6B,EAAG,MACrGhyG,aAAczC,EAAMyQ,eAExB,EACW,GAAiB,SAAwBzQ,EAAOmK,GACzD,IAAI1iB,EACAwY,EAAeD,EAAMC,aACvBoO,EAAarO,EAAMqO,WACnBi3C,EAAetlD,EAAMslD,aACrB12C,EAAoB5O,EAAM4O,kBAC1BinG,EAAsB71G,EAAM61G,oBAC5BvnG,EAAwBtO,EAAMsO,sBAC9B6qG,EAA0Bn5G,EAAMm5G,wBAClC,OAAO1xH,EAAO,CAAC,GAAG,OAAgBA,EAAM,sBAAsBt+C,OAAOghE,EAAW,mBAAmBhhE,OAAOghE,EAAW,gBAAgBhhE,OAAOghE,IAAY,OAAgB,CACtKlG,YAAaoK,EACb,UAAW,CACTpK,YAAaqK,GAEf,qBAAsBlhE,OAAO89B,OAAO,CAAC,EAAG0tI,IAAe,SAAW54G,EAAO,CACvEo5G,uBAAwB/qG,EACxBqqG,sBAAuBrqG,EACvBM,eAAgBC,OAEjB,GAAGzlE,OAAO82D,EAAc,aAAa92D,OAAO82D,EAAc,WAAY,CACvEt2B,MAAO0kC,MACJ,OAAgB5mB,EAAM,wBAAwBt+C,OAAOghE,EAAW,mBAAmBhhE,OAAOghE,EAAW,gBAAgBhhE,OAAOghE,IAAY,OAAgB,CAC3JlG,YAAaqhD,EACb,UAAW,CACTrhD,YAAak1G,GAEf,qBAAsB/rK,OAAO89B,OAAO,CAAC,EAAG0tI,IAAe,SAAW54G,EAAO,CACvEo5G,uBAAwB9zD,EACxBozD,sBAAuBpzD,EACvB32C,eAAgBknG,OAEjB,GAAG1sK,OAAO82D,EAAc,aAAa92D,OAAO82D,EAAc,WAAY,CACvEt2B,MAAO27E,KACJ79D,CACP,EACW4xH,GAAqB,SAA4Br5G,GAC1D,OAAO5yD,OAAO89B,OAAO99B,OAAO89B,OAAO,CACjC6V,SAAU,WACVE,QAAS,eACTt9C,MAAO,OACPqpE,SAAU,EACVgD,QAAS,GAAG7mE,OAAO62D,EAAMs5G,qBAAsB,OAAOnwK,OAAO62D,EAAMu5G,uBAAwB,MAC3F5vI,MAAOq2B,EAAMsM,UACb51D,SAAUspD,EAAMtpD,SAChBC,WAAYqpD,EAAMrpD,WAClButD,gBAAiBlE,EAAMiO,iBACvBjC,gBAAiB,OACjBwtG,YAAax5G,EAAM3qD,UACnBy5D,YAAa9O,EAAMkM,SACnBjI,YAAajE,EAAM0N,YACnBjL,aAAczC,EAAMyC,aACpBnC,WAAY,OAAOn3D,OAAO62D,EAAMmM,oBAjHH,SAA6BxiC,GAC5D,MAAO,CAEL,sBAAuB,CACrBp/B,QAAS,GAEX,iBAAkB,CAChBo/B,MAAOA,EACPyiC,WAAY,QAGd,sBAAuB,CACrBgoG,aAAc,YAGpB,CAmGKqF,CAAoBz5G,EAAM40G,uBAAwB,CACnD,UAAWxnK,OAAO89B,OAAO,CAAC,EAAGutI,GAAcz4G,IAC3C,qBAAsB5yD,OAAO89B,OAAO,CAAC,EAAG0tI,GAAe54G,IACvD,0BAA2B5yD,OAAO89B,OAAO,CAAC,EAAG,GAAiB80B,IAC9D,eAAgB,CACd,0DAA2D,CACzDkE,gBAAiB,cACjB+H,OAAQ,OACR5L,UAAW,SAIf,YAAa,CACX5kC,SAAU,OACV73B,OAAQ,OACRkpF,UAAW9sB,EAAMiN,cACjBt2D,WAAYqpD,EAAMrpD,WAClBg2F,cAAe,SACfrsC,WAAY,OAAOn3D,OAAO62D,EAAMmQ,mBAAoB,eACpDupG,OAAQ,YAGV,OAAQtsK,OAAO89B,OAAO,CAAC,EAAG2tI,GAAmB74G,IAC7C,OAAQ5yD,OAAO89B,OAAO,CAAC,EAAG+tI,GAAmBj5G,IAE7C,QAAS,CACPtvC,UAAW,OAEb,iBAAkB,CAChBA,UAAW,QAGjB,EAwKIipJ,GAAgB,SAAuB35G,GACzC,IAAI45G,EACA35G,EAAeD,EAAMC,aACvBsQ,EAAkBvQ,EAAMuQ,gBAGtBspG,GAAqBtpG,EAA8B,EAFzCvQ,EAAM3qD,UACY,IACwD,EACxF,OAAO,OAAgB,CAAC,EAAG4qD,EAAc7yD,OAAO89B,OAAO99B,OAAO89B,OAAO99B,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,GAAG,SAAe80B,IAASq5G,GAAmBr5G,IAAS,GAAeA,EAAOC,IAAgB,CAC7L,mBAAoB25G,EAAa,CAC/Bh2K,OAAQo8D,EAAMiN,gBACb,OAAgB2sG,EAAY,IAAIzwK,OAAO82D,EAAc,OAAQ,CAC9Dr8D,OAAQo8D,EAAM6Q,mBACZ,OAAgB+oG,EAAY,IAAIzwK,OAAO82D,EAAc,OAAQ,CAC/Dr8D,OAAQ2sE,EACRupG,WAAYD,EACZtrC,cAAesrC,IACbD,GACJ,8FAA+F,CAC7F,qBAAsB,UAG5B,EA0BIG,GAAgB,SAAuB/5G,GACzC,IAAIq1G,EACAp1G,EAAeD,EAAMC,aACvB+5G,EAAoBh6G,EAAMg6G,kBAC1BpmE,EAAuB5zC,EAAM4zC,qBAC7BzjC,EAAqBnQ,EAAMmQ,mBAC3BwhE,EAAY3xE,EAAM2xE,UAClBD,EAAiB1xE,EAAM0xE,eACvB9lE,EAAU5L,EAAM4L,QAClB,OAAO,OAAgB,CAAC,EAAG,GAAGziE,OAAO82D,EAAc,kBAAmB7yD,OAAO89B,OAAO99B,OAAO89B,OAAO99B,OAAO89B,OAAO99B,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGmuI,GAAmBr5G,KAAUq1G,EAAkB,CAC7Lp0H,QAAS,gBACR,OAAgBo0H,EAAiB,SAASlsK,OAAO82D,EAAc,kCAAmC7yD,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGutI,GAAcz4G,KAAS,OAAgB,CAC1K31D,OAAQ,GACP,GAAGlB,OAAO82D,EAAc,yBAA0B,CACnD51D,OAAQ,OACJ,OAAgBgrK,EAAiB,qBAAsB,CAC3DhrK,OAAQ,KACN,OAAgBgrK,EAAiB,cAAc,OAAgB,CAAC,EAAG,GAAGlsK,OAAO82D,EAAc,cAAe,CAC5GE,WAAY,kBACT,OAAgBk1G,EAAiB,UAAUlsK,OAAO82D,GAAe,CACpE+P,QAAS,EACTt5D,SAAU,UACVu1D,OAAQ,OACRxJ,aAAc,EACdqJ,QAAS,OACT,gBAAiB,CACf7qB,QAAS,QAEX,UAAW,CACTof,UAAW,sBAEX,OAAgBg1G,EAAiB,YAAa,CAChDp0H,QAAS,eACTt9C,MAAO,EACPy3E,WAAY,SACZ1O,QAAS,YACP,OAAgB2oG,EAAiB,GAAGlsK,OAAO82D,GAAe,CAC5D,qBAAsB,CACpBhf,QAAS,OACTurB,KAAM,OACNmhC,WAAY,SACZ,uBAAwB,CACtBljC,gBAAiBzK,EAAMwQ,YAG3B,sBAAuB,CACrB7mC,MAAOiqE,GAET,0BAA2B,CACzBnpC,gBAAiBzK,EAAMyzG,YAEzB,WAAY,CACVhpG,gBAAiBuvG,GAEnB,WAAY,CACVtuG,kBAAmBsuG,KAEnB3E,IAlFmB,SAA4Br1G,GACnD,IAAIC,EAAeD,EAAMC,aACzB,OAAO,OAAgB,CAAC,EAAG,GAAG92D,OAAO82D,EAAc,eAAgB,CACjEmgC,OAAQ,EACRz2D,MAAOq2B,EAAMy1G,oBACb/+J,SAAUspD,EAAMm0G,aAChBxnE,eAAgB,EAGhBhrG,OAAQ,UACR2+D,WAAY,SAASn3D,OAAO62D,EAAMmQ,oBAClC,UAAW,CACTxmC,MAAOq2B,EAAM01G,mBAEf,WAAY,CACV/rI,MAAOq2B,EAAMsM,WAEf,WAAY,CACV8O,WAAY,UAEd,eAAgB,CACdglB,OAAQ,KAAKj3F,OAAO62D,EAAMg6G,kBAAmB,QAGnD,CA0DyBC,CAAmBj6G,KAAS,OAAgB,CAAC,EAAG,GAAG72D,OAAOyiE,GAASziE,OAAO82D,EAAc,kBAAmB,CAChIt2B,MAAOgoG,EACPhwI,OAAQ,UACR2+D,WAAY,OAAOn3D,OAAOgnE,GAC1B,UAAW,CACTxmC,MAAO+nG,MAEN,GAAe1xE,EAAO,GAAG72D,OAAO82D,EAAc,oBACrD,EACI,GAAgB,SAAuBD,GACzC,IAAIk6G,EACAj6G,EAAeD,EAAMC,aACvBoO,EAAarO,EAAMqO,WACnBi3C,EAAetlD,EAAMslD,aACrBx0C,EAAiB9Q,EAAM8Q,eACvBL,EAAiBzQ,EAAMyQ,eACzB,OAAO,OAAgB,CAAC,EAAG,GAAGtnE,OAAO82D,EAAc,UAAW7yD,OAAO89B,OAAO99B,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,GAAG,SAAe80B,IA/R7F,SAA4BA,GAC1D,IAAIg0C,EAAUmmE,EAAQjlE,EAAW3I,EAAW6tE,EAAkBl1E,EAAgBtxC,EAC1EqM,EAAeD,EAAMC,aACvBokC,EAASrkC,EAAMqkC,OACjB,OAAOzwC,EAAQ,CACb7S,SAAU,WACVE,QAAS,QACTt9C,MAAO,OACP02K,eAAgB,WAChBC,cAAe,IACd,OAAgB1mH,EAAO,mBAAoB,CAC5CuZ,iBAAkBnN,EAAMwQ,UACxB,eAAgB,CACdrD,iBAAkB,MAElB,OAAgBvZ,EAAO,QAAQzqD,OAAO82D,EAAc,aAAa92D,OAAO82D,EAAc,gBAAiB7yD,OAAO89B,OAAO,CAAC,EAAG2tI,GAAmB74G,MAAU,OAAgBpM,EAAO,QAAQzqD,OAAO82D,EAAc,aAAa92D,OAAO82D,EAAc,gBAAiB7yD,OAAO89B,OAAO,CAAC,EAAG+tI,GAAmBj5G,MAAU,OAAgBpM,EAAO,QAAQzqD,OAAOk7F,EAAQ,mBAAmBl7F,OAAOk7F,EAAQ,oBAAqB,CACnZzgG,OAAQo8D,EAAM6Q,mBACZ,OAAgBjd,EAAO,QAAQzqD,OAAOk7F,EAAQ,mBAAmBl7F,OAAOk7F,EAAQ,oBAAqB,CACvGzgG,OAAQo8D,EAAMuQ,mBACZ,OAAgB3c,EAAO,KAAKzqD,OAAO82D,GAAe,CACpDhf,QAAS,aACT,uCAAwC,CACtCwhB,aAAc,MAEd,OAAgB7O,EAAO,GAAGzqD,OAAO82D,EAAc,WAAYi1C,EAAY,CAAC,GAAG,OAAgBA,EAAW,kBAAmB,CAC3Hj0D,QAAS,aACTt9C,MAAO,EACPooE,WAAY,SACZ4gC,cAAe,SACf,uCAAwC,CACtClqC,aAAc,MAEd,OAAgByyC,EAAW,aAAc,CAC3Cj0D,QAAS,sBACP,OAAgBi0D,EAAW,WAAYilE,EAAS,CAClDp5H,SAAU,WACVivB,QAAS,KAAK7mE,OAAO62D,EAAMu5G,uBAAwB,MACnD5vI,MAAOq2B,EAAMsM,UACbhjD,WAAY,SACZ5S,SAAUspD,EAAMtpD,SAChBG,UAAW,SACXqtD,gBAAiBlE,EAAMyzC,eACvBxnC,OAAQ,GAAG9iE,OAAO62D,EAAM3qD,UAAW,OAAOlM,OAAO62D,EAAMkM,SAAU,KAAK/iE,OAAO62D,EAAM0N,aACnFjL,aAAczC,EAAMyC,aACpBnC,WAAY,OAAOn3D,OAAO62D,EAAMmQ,oBAChCx5D,WAAY,IACX,OAAgBwjK,EAAQ,GAAGhxK,OAAOk7F,EAAQ,YAAa2P,EAAW,CACnE5T,OAAQ,IAAIj3F,OAAO62D,EAAMs5G,qBAAuB,EAAG,QAAQnwK,OAAO62D,EAAMu5G,uBAAwB,QAC/F,OAAgBvlE,EAAU,IAAI7qG,OAAOk7F,EAAQ,uBAAuBl7F,OAAOk7F,EAAQ,6BAA6B,OAAgB,CAAC,EAAG,GAAGl7F,OAAOk7F,EAAQ,oBAAqB,CAC5KngC,gBAAiB,UACjB+H,OAAQ,GAAG9iE,OAAO62D,EAAM3qD,UAAW,OAAOlM,OAAO62D,EAAMkM,SAAU,gBACjE7L,UAAW,WACR,OAAgB2zC,EAAU,qBAAqB,OAAgB,CAAC,EAAG,GAAG7qG,OAAOk7F,EAAQ,oBAAqB,CAC7G16D,MAAOq2B,EAAME,gBACV8zC,KAAY,OAAgBmmE,EAAQ,GAAGhxK,OAAOk7F,EAAQ,qBAAqB,OAAgB,CAC9FjE,OAAQ,SAASj3F,OAAO62D,EAAMu5G,uBAAwB,MACtDr1G,gBAAiB,eAChB,GAAG/6D,OAAOk7F,EAAQ,mBAAoB,CACvCxtF,UAAW,QACXo1D,OAAQ,EACR5L,UAAW,UACR85G,KAAU,OAAgBjlE,EAAW,sBAAuB,CAC/DqlE,gBAAiB,KACf,OAAgBrlE,EAAW,qBAAsB,CACnDslE,kBAAmB,IACjBtlE,KAAa,OAAgBthD,EAAO,GAAGzqD,OAAO82D,GAAe,CAC/Dt8D,MAAO,OACPsnE,aAAc,EACdp0D,UAAW,UACX,UAAW,CACTxM,OAAQ,EACRsuK,qBAAsB,GAExB,WAAW,OAAgB,CACzBtuK,OAAQ,EACRsuK,qBAAsB,GACrB,GAAGxvK,OAAO82D,EAAc,yBAA0B,CACnD51D,OAAQ,OAER,OAAgBupD,EAAO,KAAKzqD,OAAO82D,EAAc,kBAAkB92D,OAAO82D,EAAc,6BAA6B,OAAgB,CACvI0K,qBAAsB,EACtBC,mBAAoB,GACnB,GAAGzhE,OAAOk7F,EAAQ,YAAYl7F,OAAOk7F,EAAQ,oBAAqB,CACnE15B,qBAAsB,EACtBC,mBAAoB,MACjB,OAAgBhX,EAAO,KAAKzqD,OAAO82D,EAAc,mBAAoBssC,EAAY,CAAC,GAAG,OAAgBA,EAAW,uBAAuBpjG,OAAO82D,GAAe,CAChK4K,uBAAwB,EACxBC,qBAAsB,KACpB,OAAgByhC,EAAW,sBAAsBpjG,OAAO82D,GAAe,CACzE0K,qBAAsB,EACtBC,mBAAoB,IAClB2hC,KAAa,OAAgB34C,EAAO,KAAKzqD,OAAO82D,EAAc,iBAAiB92D,OAAO82D,EAAc,4BAA4B,OAAgB,CAClJ4K,uBAAwB,EACxBC,qBAAsB,GACrB,GAAG3hE,OAAOk7F,EAAQ,YAAYl7F,OAAOk7F,EAAQ,oBAAqB,CACnEx5B,uBAAwB,EACxBC,qBAAsB,MACnB,OAAgBlX,EAAO,GAAGzqD,OAAO82D,EAAc,mBAAmB,OAAgB,CACrF,sBAAsB,OAAgB,CACpC0K,qBAAsB,EACtBC,mBAAoB,GACnB,GAAGzhE,OAAO82D,EAAc,aAAc,CACvC4K,uBAAwB7K,EAAMyC,aAC9BqI,qBAAsB9K,EAAMyC,gBAE7B,wBAAwBt5D,OAAO82D,EAAc,+BAAgC,CAC9E4K,uBAAwB,EACxBC,qBAAsB,MACnB,OAAgBlX,EAAO,IAAIzqD,OAAO82D,EAAc,kBAAmB7yD,OAAO89B,OAAO99B,OAAO89B,OAAO,CAClG+V,QAAS,UACR,aAAcikD,EAAiB,CAAC,GAAG,OAAgBA,EAAgB,GAAG/7F,OAAO82D,EAAc,kBAAkB92D,OAAO82D,EAAc,mBAAmB92D,OAAO82D,GAAe,CAC5K,uCAAwC,CACtC04G,qBAAsB34G,EAAM3qD,UAC5B,UAAW,CACThL,OAAQ,GAEV,UAAW,CACTA,OAAQ,OAGV,OAAgB66F,EAAgB,QAAS,CAC3CjkD,QAAS,eACTgd,MAAO,OACP0uC,cAAe,MACflqC,aAAc,KACZ,OAAgByiC,EAAgB,iBAAiB/7F,OAAO82D,EAAc,iCAAiC92D,OAAO82D,EAAc,wCAAwC92D,OAAOk7F,EAAQ,yBAA0B,CAC/MpjD,QAAS,iBACP,OAAgBikD,EAAgB,yBAA0B,CAC5Dz6B,iBAAkBzK,EAAM3qD,UACxBsjK,qBAAsB34G,EAAM3qD,aAC1B,OAAgB6vF,EAAgB,GAAG/7F,OAAO82D,GAAe,CAC3DhC,MAAO,UACL,OAAgBinC,EAAgB,OAAO/7F,OAAOk7F,EAAQ,cAAcl7F,OAAOk7F,EAAQ,iCAAiCl7F,OAAOk7F,EAAQ,0BAA0Bl7F,OAAO82D,EAAc,iBAAiB92D,OAAOk7F,EAAQ,qBAAqBl7F,OAAO82D,EAAc,iBAAiB92D,OAAO82D,EAAc,mBAAmB92D,OAAO82D,GAAe,CAC7U04G,qBAAsB34G,EAAM3qD,UAC5BotD,aAAc,EACd,UAAW,CACTp4D,OAAQ,GAEV,UAAW,CACTA,OAAQ,MAER,OAAgB66F,EAAgB,OAAO/7F,OAAOk7F,EAAQ,mBAAoB,CAC5Eh6F,OAAQ,KACN,OAAgB66F,EAAgB,OAAO/7F,OAAOk7F,EAAQ,cAAcl7F,OAAOk7F,EAAQ,iBAAkB,CACvGh6F,OAAQ,KACN,OAAgB66F,EAAgB,iCAAiC/7F,OAAOk7F,EAAQ,0BAA0Bl7F,OAAOk7F,EAAQ,iCAAiCl7F,OAAOk7F,EAAQ,sCAAsCl7F,OAAO82D,EAAc,iBAAiB92D,OAAOk7F,EAAQ,iCAAiCl7F,OAAO82D,GAAe,CAC7T4K,uBAAwB7K,EAAMyC,aAC9BqI,qBAAsB9K,EAAMyC,gBAC1B,OAAgByiC,EAAgB,gCAAgC/7F,OAAOk7F,EAAQ,yBAAyBl7F,OAAOk7F,EAAQ,iCAAiCl7F,OAAOk7F,EAAQ,gCAAgCl7F,OAAO82D,EAAc,iBAAiB92D,OAAOk7F,EAAQ,wCAAwCl7F,OAAO82D,GAAe,CAC5T04G,qBAAsB34G,EAAM3qD,UAC5Bs1D,qBAAsB3K,EAAMyC,aAC5BmI,mBAAoB5K,EAAMyC,gBACxB,OAAgByiC,EAAgB,OAAO/7F,OAAOk7F,EAAQ,0BAA0Bl7F,OAAO82D,GAAe,CACxG0sC,cAAe,SACb,OAAgBzH,EAAgB,GAAG/7F,OAAO82D,EAAc,qBAAqB92D,OAAO82D,EAAc,mBAAmB,OAAgB,CACvIyL,mBAAoB1L,EAAM3qD,WACzB,GAAGlM,OAAO82D,EAAc,kBAAmB,CAC5CwC,aAAc,MACX,OAAgByiC,EAAgB,GAAG/7F,OAAO82D,EAAc,oCAAoC,OAAgB,CAAC,EAAG,IAAI92D,OAAO82D,EAAc,cAAc92D,OAAO82D,EAAc,WAAYm6G,EAAmB,CAAC,GAAG,OAAgBA,EAAkB,OAAOjxK,OAAO82D,EAAc,mBAAmB92D,OAAO82D,EAAc,kBAAmB,CAC3UwC,aAAc,KACZ,OAAgB23G,EAAkB,OAAOjxK,OAAO82D,GAAe,CACjE4K,uBAAwB7K,EAAMyC,aAC9BkI,qBAAsB,EACtBC,mBAAoB,EACpBE,qBAAsB9K,EAAMyC,eAC1B23G,KAAqBl1E,KAAmBtxC,CAC9C,CAyHsI6mH,CAAmBz6G,IAAS,CAC9J,QAAS,CACPtvC,UAAW,OAEb,aAAcwpJ,EAAW,CACvBj5H,QAAS,eACTt9C,MAAO,OACPkT,UAAW,QACX81F,cAAe,MACf,QAAS,CACPj8E,UAAW,OAGb,QAAQ,OAAgB,CAAC,EAAG,GAAGvnB,OAAO82D,EAAc,gBAAiB,CACnEwC,aAAcqO,EACdp6D,SAAUspD,EAAM0Q,aAElB,QAAQ,OAAgB,CAAC,EAAG,GAAGvnE,OAAO82D,EAAc,gBAAiB,CACnEwC,aAAcgO,IAGhB,kBAAkB,OAAgB,CAAC,EAAG,GAAGtnE,OAAO82D,EAAc,gBAAiB,CAC7Et2B,MAAO0kC,EACPpK,YAAaoK,IAEf,oBAAoB,OAAgB,CAAC,EAAG,GAAGllE,OAAO82D,EAAc,gBAAiB,CAC/Et2B,MAAO27E,EACPrhD,YAAaqhD,IAEf,cAAc,OAAgB,CAAC,EAAG,GAAGn8G,OAAO82D,EAAc,gBAAiB7yD,OAAO89B,OAAO,CAAC,EAAG,GAAiB80B,OAC7G,OAAgBk6G,EAAU,SAAS/wK,OAAO82D,EAAc,6BAA6B92D,OAAO82D,EAAc,uBAAuB92D,OAAO82D,EAAc,kBAAkB,OAAgB,CAAC,EAAG,GAAG92D,OAAO82D,EAAc,MAAM92D,OAAO82D,EAAc,gBAAiB,CACjQwC,aAAc,MACX,OAAgBy3G,EAAU,SAAS/wK,OAAO82D,EAAc,uBAAuB92D,OAAO82D,EAAc,wBAAwB,OAAgB,CAAC,EAAG,GAAG92D,OAAO82D,EAAc,MAAM92D,OAAO82D,EAAc,gBAAiB,CACvN0K,qBAAsB,EACtBC,mBAAoB,MACjB,OAAgBsvG,EAAU,SAAS/wK,OAAO82D,EAAc,wBAAwB92D,OAAO82D,EAAc,uBAAuB,OAAgB,CAAC,EAAG,GAAG92D,OAAO82D,EAAc,MAAM92D,OAAO82D,EAAc,gBAAiB,CACvN4K,uBAAwB,EACxBC,qBAAsB,KACnBovG,KAET,EACIQ,GAAsB,SAA6B16G,GACrD,IAAI26G,EAAWC,EAAYC,EACvB56G,EAAeD,EAAMC,aACvBokC,EAASrkC,EAAMqkC,OACby2E,EAAkB,GAAG3xK,OAAO82D,EAAc,WAC9C,OAAO,OAAgB,CAAC,EAAG66G,GAAkBD,EAAmB,CAAC,GAAG,OAAgBA,EAAkB,GAAG1xK,OAAO82D,GAAe,CAC7H,oBAAoB,OAAgB,CAClCgE,YAAajE,EAAMwL,mBAClB,KAAKriE,OAAO82D,EAAc,iBAAiB92D,OAAO2xK,EAAiB,gBAAgB3xK,OAAOk7F,EAAQ,iBAAkB,CACrH/4B,uBAAwBtL,EAAMwL,uBAE9B,OAAgBqvG,EAAkB,GAAG1xK,OAAO82D,EAAc,kBAAmB,CAC/EwC,aAAc,KACZ,OAAgBo4G,EAAkB,GAAG1xK,OAAO82D,EAAc,OAAQ,CACpEtpD,WAAYqpD,EAAM+4G,aAAe,QAC/B,OAAgB8B,EAAkB,KAAK1xK,OAAO82D,EAAc,WAAW,OAAgB,CAAC,EAAG,KAAK92D,OAAO82D,EAAc,4BAA6B06G,EAAY,CAChKluG,kBAAmB,EACnBuD,QAAS,EACT/D,OAAQ,IACP,OAAgB0uG,EAAW,GAAGxxK,OAAO2xK,EAAiB,WAAY,CACnEhB,WAAY,EACZvrC,cAAe,EACf1jE,uBAAwB,EACxBF,qBAAsB3K,EAAMyC,aAC5BmI,mBAAoB5K,EAAMyC,aAC1BqI,qBAAsB,KACpB,OAAgB6vG,EAAW,GAAGxxK,OAAO2xK,EAAiB,gBAAgB3xK,OAAOk7F,EAAQ,kBAAkB,OAAgB,CACzH16D,MAAOq2B,EAAM4zC,qBACb,UAAW,CACTjqE,MAAOq2B,EAAMwL,mBAEf,WAAY,CACV7hC,MAAOq2B,EAAMoO,qBAEd,IAAIjlE,OAAOk7F,EAAQ,wBAAyB,CAC7C53B,iBAAkB,EAClByhE,eAAgB,EAChBphC,gBAAiB,EACjBiuE,cAAe,KACZJ,MAAc,OAAgBE,EAAkB,GAAG1xK,OAAO2xK,EAAiB,WAAY,CAC1Fl3K,OAAQo8D,EAAMiN,cACd,mBAAoB,CAClB5iE,OAAQ,MAER,OAAgBwwK,EAAkB,WAAW1xK,OAAO2xK,EAAiB,WAAY,CACnFl3K,OAAQo8D,EAAM6Q,mBACZ,OAAgBgqG,EAAkB,WAAW1xK,OAAO2xK,EAAiB,WAAY,CACnFl3K,OAAQo8D,EAAMuQ,mBACZ,OAAgBsqG,EAAkB,QAAS,CAC7CnqJ,UAAW,SACT,OAAgBmqJ,EAAkB,IAAI1xK,OAAO82D,EAAc,kBAAmB26G,EAAa,CAAC,GAAG,OAAgBA,EAAY,SAASzxK,OAAO82D,EAAc,wBAAwB,OAAgB,CAAC,EAAG,GAAG92D,OAAO82D,EAAc,iBAAiB,OAAgB,CAAC,EAAG,GAAG92D,OAAO82D,EAAc,kBAAmB,CAC/SwK,iBAAkBzK,EAAM3qD,UACxBotD,aAAc,OACV,OAAgBm4G,EAAY,SAASzxK,OAAO82D,EAAc,yBAAyB,OAAgB,CAAC,EAAG,GAAG92D,OAAO82D,EAAc,KAAK92D,OAAO82D,EAAc,kBAAmB,CAChLwC,aAAc,MACX,OAAgBm4G,EAAY,KAAKzxK,OAAO82D,EAAc,iBAAiB92D,OAAO82D,EAAc,+BAA+B92D,OAAO82D,EAAc,eAAe92D,OAAO82D,EAAc,kBAAmB,CAC1M,2BAA4B,CAC1B51D,OAAQ,MAER,OAAgBuwK,EAAY,KAAKzxK,OAAO82D,EAAc,0BAA2B,CACnF51D,OAAQ,IACNuwK,IAAcC,GACpB,EACO,SAASG,GAAeh7G,GAE7B,OAAO,SAAWA,EAAO,CACvBg6G,kBAAmBh6G,EAAMyzG,WACzB6F,qBAAsBzpK,KAAKE,IAAIF,KAAKwoB,OAAO2nC,EAAMiN,cAAgBjN,EAAMtpD,SAAWspD,EAAMrpD,YAAc,EAAI,IAAM,GAAKqpD,EAAM3qD,UAAW,GACtIyjK,uBAAwBjpK,KAAKisJ,MAAM97F,EAAM6Q,gBAAkB7Q,EAAM0Q,WAAa1Q,EAAM+4G,cAAgB,EAAI,IAAM,GAAK/4G,EAAM3qD,UACzH6jK,uBAAwBrpK,KAAKE,IAAIF,KAAKwoB,OAAO2nC,EAAMuQ,gBAAkBvQ,EAAMtpD,SAAWspD,EAAMrpD,YAAc,EAAI,IAAM,GAAKqpD,EAAM3qD,UAAW,GAC1IkkK,uBAAwBv5G,EAAMylC,UAAYzlC,EAAM3qD,UAChDy/J,yBAA0B90G,EAAMwQ,UAAYxQ,EAAM3qD,UAClD2jK,yBAA0Bh5G,EAAMkzG,yBAA2BlzG,EAAM3qD,UACjEqjK,sBAAuB14G,EAAMwL,kBAC7B4tG,uBAAwBp5G,EAAMwL,mBAElC,CACA,IAAIyvG,GAAmB,SAA0Bj7G,GAC/C,IAAIk7G,EAAYC,EAAYC,EAAqBC,EAC7Cp7G,EAAeD,EAAMC,aACvBwuE,EAAYzuE,EAAMyuE,UAChB6sC,EAAoB,GAAGnyK,OAAO82D,EAAc,aAChD,OAAO,OAAgB,CAAC,EAAGq7G,GAAoBD,EAAqB,CAClEt6H,SAAU,WACV,gBAAiBm6H,EAAa,CAAC,GAAG,OAAgBA,EAAY,KAAK/xK,OAAO82D,GAAe,CACvFr8D,OAAQ,UACN,OAAgBs3K,EAAY,GAAG/xK,OAAO82D,EAAc,eAAgB,CACtElf,SAAU,WACVs4B,QAASrZ,EAAMtpD,SAAWspD,EAAMrpD,WAChCu3H,eAAgB,EAChBvkG,MAAOq2B,EAAM4zC,qBACb7nC,WAAY,SACZ5qB,cAAe,SACb+5H,GACJ,iBAAiB,OAAgB,CAAC,EAAG,KAAK/xK,OAAO82D,GAAe,CAC9DkN,iBAAkBshE,MAEnB,OAAgB4sC,EAAoB,kBAAkBlyK,OAAOmyK,EAAmB,kBAAkB,OAAgB,CAAC,EAAG,GAAGnyK,OAAO82D,GAAe,CAChJkN,iBAAkBshE,MACf,OAAgB4sC,EAAoB,kBAAkBlyK,OAAO82D,EAAc,mBAAoBm7G,EAAsB,CACxHprG,QAAS,IACR,OAAgBorG,EAAqB,aAAajyK,OAAO82D,GAAe,CACzEvpD,SAAU,UACVu1D,OAAQ,OACRH,QAAS,OACT,UAAW,CACTzL,UAAW,sBAEX,OAAgB+6G,EAAqB,GAAGjyK,OAAO82D,EAAc,YAAak7G,EAAa,CACzF/6E,OAAQ,EACR,uBAAwB,CACtB2V,aAAc,KAEf,OAAgBolE,EAAY,GAAGhyK,OAAO82D,EAAc,eAAgB,CACrElf,SAAU,WACVmtF,eAAgBluE,EAAMwQ,UACtBs8B,gBAAiB9sC,EAAMwQ,aACrB,OAAgB2qG,EAAY,GAAGhyK,OAAOmyK,EAAmB,WAAY,CACvEv6H,SAAU,WACVl8C,IAAK,EACLqpI,eAAgBluE,EAAMu5G,uBACtBlgG,OAAQ,EACRhvE,OAAQ,EACR42C,QAAS,cACT0sD,WAAY,SACZvN,OAAQ,OACRj/C,cAAe,SACbg6H,IAAcC,IAAuBC,GAC3C,ECpRIE,KDsRW,EAAA96G,GAAA,GAAsB,SAAS,SAAUT,GACtD,IAAIw7G,EAAaR,GAAeh7G,GAChC,MAAO,CAAC25G,GAAc6B,GAAaP,GAAiBO,GAAazB,GAAcyB,GAAa,GAAcA,GAAad,GAAoBc,GAI3IvxG,GAAoBuxG,GACtB,IC7RyB,SAA4Bx7G,GACnD,IAAI01C,EAAiBjnC,EACjBxO,EAAeD,EAAMC,aACzB,OAAOwO,EAAQ,CAAC,GAAG,OAAgBA,EAAOxO,EAAc7yD,OAAO89B,OAAO99B,OAAO89B,OAAO99B,OAAO89B,OAAO99B,OAAO89B,OAAO99B,OAAO89B,OAAO99B,OAAO89B,OAAO99B,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,GAAG,SAAe80B,KAAS,OAAgB,CAClN,SAAU,CACRogC,OAAQ,EACRpwB,QAAS,EACTk7C,UAAW,QAEb,WAAY,CACVjqE,QAAS,QACT97C,MAAO,OACPvB,OAAQ,EACRs9C,SAAU,SACVk6B,WAAY,SACZ1O,QAAS,OAEV,GAAGvjE,OAAO82D,EAAc,eAAgB,CACzChf,QAAS,eACTr9C,OAAQo8D,EAAMy7G,SACdhxG,gBAAiBzK,EAAMuM,SACvB51D,WAAY,GAAGxN,OAAO62D,EAAMy7G,SAAW,EAAG,MAC1C9uE,cAAe,YAxEU,SAAgC3sC,GAC3D,IAAIw1C,EACAv1C,EAAeD,EAAMC,aACzB,OAAO,OAAgB,CAAC,EAAG,GAAG92D,OAAO82D,EAAc,UAAWu1C,EAAY,CACxEv0D,QAAS,eACT+rB,SAAUhN,EAAMy7G,SAChB73K,OAAQo8D,EAAMy7G,SACdhxG,gBAAiBzK,EAAMuM,SACvBljD,WAAY22C,EAAM32C,WAClB1S,WAAY,GAAGxN,OAAO62D,EAAMy7G,SAAW,EAAG,MAC1C5kK,UAAW,SACX81F,cAAe,SACfue,UAAW,OACXhnD,gBAAiB,cACjB+H,OAAQ,GAAG9iE,OAAO62D,EAAM3qD,UAAW,OAAOlM,OAAO62D,EAAMkM,SAAU,gBACjEzJ,aAAczC,EAAMyC,aACpBqJ,QAAS,EACTnqE,OAAQ,UACRyqE,WAAY,OACZr4D,EAAG,CACDktC,QAAS,QACT+uB,QAAS,KAAK7mE,OAAO62D,EAAM07G,4BAA6B,MACxD/xI,MAAOq2B,EAAMsM,UACb,UAAW,CACTq5B,eAAgB,WAGnB,OAAgB6P,EAAW,SAASrsG,OAAO82D,EAAc,iBAAkB,CAC5E,UAAW,CACTK,WAAY,OAAOn3D,OAAO62D,EAAMmM,mBAChCjI,gBAAiBlE,EAAMoP,kBAEzB,WAAY,CACVlL,gBAAiBlE,EAAMqP,sBAEvB,OAAgBmmC,EAAW,WAAY,CACzClsF,WAAY02C,EAAM2uE,iBAClBzqE,gBAAiBlE,EAAM27G,aACvB13G,YAAajE,EAAME,aACnBnsD,EAAG,CACD41B,MAAOq2B,EAAME,cAEf,UAAW,CACT+D,YAAajE,EAAMwL,mBAErB,YAAa,CACX7hC,MAAOq2B,EAAMwL,qBAEbgqC,GACN,CAwBOomE,CAAuB57G,IApLD,SAAgCA,GAC3D,IAAIusC,EAAWsvE,EAASC,EAAkBC,EAAkB9lF,EACxDh2B,EAAeD,EAAMC,aACzB,OAAOg2B,EAAQ,CAAC,GAAG,OAAgBA,EAAO,GAAG9sF,OAAO82D,EAAc,gBAAgB92D,OAAO82D,EAAc,eAAgB67G,EAAmB,CACxIhwG,QAAS,IACR,OAAgBgwG,EAAkB,GAAG3yK,OAAO82D,EAAc,oBAAqBssC,EAAY,CAC5FxrD,SAAU,aACT,OAAgBwrD,EAAW,GAAGpjG,OAAO82D,EAAc,mBAAoB,CACxEt2B,MAAOq2B,EAAME,aACbxpD,SAAUspD,EAAMwtC,WAChBjjG,QAAS,EACT+1D,WAAY,OAAOn3D,OAAO62D,EAAMmM,mBAChC,QAAS,CACPtnE,IAAK,EACLqpI,eAAgB,EAChB70D,OAAQ,EACR5M,iBAAkB,EAClB2zB,OAAQ,WAER,OAAgBmM,EAAW,GAAGpjG,OAAO82D,EAAc,kBAAmB,CACxElf,SAAU,WACVl8C,IAAK,EACLqpI,eAAgB,EAChB70D,OAAQ,EACR5M,iBAAkB,EAClBxrB,QAAS,QACTm/C,OAAQ,OACRz2D,MAAOq2B,EAAM2N,kBACbtkD,WAAY,+BACZ2yJ,cAAeh8G,EAAMi8G,gCACrBplK,UAAW,SACXqlK,WAAYl8G,EAAMm8G,6BAClB5xK,QAAS,EACT+1D,WAAY,OAAOn3D,OAAO62D,EAAMmM,qBAC9BogC,KAAa,OAAgBuvE,EAAkB,WAAYD,EAAU,CAAC,GAAG,OAAgBA,EAAS,GAAG1yK,OAAO82D,EAAc,mBAAoB,CAChJ11D,QAAS,KACP,OAAgBsxK,EAAS,GAAG1yK,OAAO82D,EAAc,kBAAmB,CACtE11D,QAAS,IACPsxK,IAAWC,KAAoB,OAAgB7lF,EAAO,SAAS9sF,OAAO82D,EAAc,gBAAgB92D,OAAO82D,EAAc,qBAAqB92D,OAAO82D,EAAc,oBAAqB,CAC1LwK,gBAAiBzK,EAAMuM,YACrB,OAAgB0pB,EAAO,SAAS9sF,OAAO82D,EAAc,gBAAgB92D,OAAO82D,EAAc,gBAAgB92D,OAAO82D,EAAc,qBAAqB92D,OAAO82D,EAAc,oBAAqB,CAChMhf,QAAS,eACT+rB,SAAUhN,EAAMy7G,SAChB73K,OAAQo8D,EAAMy7G,SACd9xI,MAAOq2B,EAAMsM,UACbjjD,WAAY22C,EAAM32C,WAClB1S,WAAY,GAAGxN,OAAO62D,EAAMy7G,SAAU,MACtC5kK,UAAW,SACX81F,cAAe,SACfue,UAAW,OACXzoD,aAAczC,EAAMyC,aACpB9gE,OAAQ,UACR2+D,WAAY,OAAOn3D,OAAO62D,EAAMmM,sBAC9B,OAAgB8pB,EAAO,GAAG9sF,OAAO82D,EAAc,WAAW92D,OAAO82D,EAAc,UAAW87G,EAAmB,CAC/G1yJ,WAAY,+BACZyiD,QAAS,EACTjqE,OAAQ,CACN8nC,MAAOq2B,EAAMsM,UACb3qE,OAAQ,UACRyqE,WAAY,UAEb,OAAgB2vG,EAAkB,GAAG5yK,OAAO82D,EAAc,cAAe,CAC1Ehf,QAAS,QACTt9C,MAAO,OACPC,OAAQ,OACRosE,QAAS,EACTt5D,SAAUspD,EAAMwtC,WAChB32F,UAAW,SACXqtD,gBAAiB,cACjB+H,OAAQ,GAAG9iE,OAAO62D,EAAM3qD,UAAW,OAAOlM,OAAO62D,EAAMkM,SAAU,gBACjEzJ,aAAczC,EAAMyC,aACpBqJ,QAAS,OACTxL,WAAY,OAAOn3D,OAAO62D,EAAMmM,sBAC9B,OAAgB4vG,EAAkB,WAAW5yK,OAAO82D,EAAc,cAAe,CACnFiE,gBAAiBlE,EAAMoP,oBACrB,OAAgB2sG,EAAkB,YAAY5yK,OAAO82D,EAAc,cAAe,CACpFiE,gBAAiBlE,EAAMqP,qBACrB,OAAgB0sG,EAAkB,IAAI5yK,OAAO82D,EAAc,oBAAoB,OAAgB,CAAC,EAAG,GAAG92D,OAAO82D,EAAc,cAAe,CAC5IiE,gBAAiB,iBACd63G,KAAoB,OAAgB9lF,EAAO,GAAG9sF,OAAO82D,EAAc,UAAW,CACjFwK,gBAAiBzK,EAAMo8G,+BACvB1wG,kBAAmB1L,EAAMq8G,oCACvB,OAAgBpmF,EAAO,GAAG9sF,OAAO82D,EAAc,YAAa,CAC9Dhf,QAAS,eACTyqB,kBAAmB1L,EAAMogC,OACzBuM,cAAe,SACf,yBAA0B,CACxB1rD,QAAS,eACTt9C,MAAO,QAET,iBAAkB,CAChBs9C,QAAS,eACTr9C,OAAQo8D,EAAMiN,cACdvB,kBAAmB1L,EAAMuM,SACzB51D,WAAY,GAAGxN,OAAO62D,EAAMiN,cAAe,MAC3C0/B,cAAe,MACfsS,MAAO7xG,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGmuI,GAAmBr5G,IAAS,CACjEr8D,MAA+B,KAAxBq8D,EAAM6Q,gBACbjtE,OAAQo8D,EAAMiN,cACd7M,UAAW,aACXggC,OAAQ,EACR10B,kBAAmB1L,EAAMuM,SACzB9B,gBAAiBzK,EAAMuM,cAGzB0pB,CACN,CA0EuCqmF,CAAuBt8G,IAzO/B,SAAkCA,GAC/D,IAAIvL,EACAwL,EAAeD,EAAMC,aACzB,OAAOxL,EAAQ,CAAC,GAAG,OAAgBA,EAAO,UAAUtrD,OAAO82D,EAAc,YAAY92D,OAAO82D,EAAc,iBAAiB92D,OAAO82D,EAAc,YAAY92D,OAAO82D,EAAc,gBAAgB,OAAgB,CAC/Mr8D,OAAQo8D,EAAMu8G,WACd5lK,WAAY,GAAGxN,OAAO62D,EAAMu8G,WAAY,MACxC5vE,cAAe,OACd,GAAGxjG,OAAO82D,EAAc,cAAe,CACxCr8D,OAAQo8D,EAAMu8G,WACdr4G,gBAAiB,cACjB+H,OAAQ,EACR,UAAW,CACT/H,gBAAiBlE,EAAMoP,kBAEzB,WAAY,CACVlL,gBAAiBlE,EAAMqP,mBAEzB,WAAY,CACVzrE,OAAQo8D,EAAMu8G,WACd5lK,WAAY,GAAGxN,OAAO62D,EAAMu8G,WAAY,WAEvC,OAAgB9nH,EAAO,IAAItrD,OAAO82D,EAAc,YAAY92D,OAAO82D,EAAc,iBAAkB,CACtGhf,QAAS,eACTr9C,OAAQo8D,EAAMu8G,WACd9xG,gBAAiBzK,EAAMuM,SACvB0yC,MAAO,CACL7+C,UAAW,aACXx8D,OAAQ,OACR6mE,gBAAiBzK,EAAMuM,SACvByD,QAAS,KAAK7mE,OAAO62D,EAAM07G,4BAA6B,MACxD7kK,UAAW,SACXqtD,gBAAiBlE,EAAMw8G,YACvBvwG,OAAQ,GAAG9iE,OAAO62D,EAAM3qD,UAAW,OAAOlM,OAAO62D,EAAMkM,SAAU,KAAK/iE,OAAO62D,EAAM0N,aACnFjL,aAAczC,EAAMyC,aACpBqJ,QAAS,OACTxL,WAAY,gBAAgBn3D,OAAO62D,EAAMmM,mBACzCxiC,MAAO,UACP,UAAW,CACTs6B,YAAajE,EAAME,cAErB,UAAW,CACT+D,YAAajE,EAAMwL,kBACnBnL,UAAW,GAAGl3D,OAAO62D,EAAMy8G,mBAAoB,SAAStzK,OAAO62D,EAAMkO,oBAAqB,OAAO/kE,OAAO62D,EAAM2O,iBAEhH,cAAe,CACbhlC,MAAOq2B,EAAM2N,kBACbzJ,gBAAiBlE,EAAM4N,yBACvB3J,YAAajE,EAAM0N,YACnB/rE,OAAQ,kBAGV8yD,CACN,CAqLuEioH,CAAyB18G,IAhSnE,SAAgCA,GAC3D,IAAIs0G,EAAkB8F,EAAkBxmH,EACpCqM,EAAeD,EAAMC,aACzB,OAAOrM,EAAQ,CAAC,GAAG,OAAgBA,EAAO,IAAIzqD,OAAO82D,EAAc,UAAU92D,OAAO82D,EAAc,kBAAkB92D,OAAO82D,EAAc,UAAU92D,OAAO82D,EAAc,iBAAkB,CACxLr8D,OAAQo8D,EAAMu8G,WACd5lK,WAAY,GAAGxN,OAAO62D,EAAMu8G,WAAY,SACtC,OAAgB3oH,EAAO,IAAIzqD,OAAO82D,EAAc,UAAU92D,OAAO82D,EAAc,SAAU,CAC3F+M,SAAUhN,EAAMu8G,WAChB34K,OAAQo8D,EAAMu8G,WACdn8E,OAAQ,EACRzpF,WAAY,GAAGxN,OAAO62D,EAAMu8G,WAAa,EAAG,SAC1C,OAAgB3oH,EAAO,IAAIzqD,OAAO82D,EAAc,cAAc92D,OAAO82D,EAAc,eAAe92D,OAAO82D,EAAc,cAAc92D,OAAO82D,EAAc,iBAAkB,CAC9KiE,gBAAiB,cACjBD,YAAa,cACb,UAAW,CACTC,gBAAiBlE,EAAMoP,kBAEzB,WAAY,CACVlL,gBAAiBlE,EAAMqP,sBAEvB,OAAgBzb,EAAO,IAAIzqD,OAAO82D,EAAc,UAAU92D,OAAO82D,EAAc,YAAY92D,OAAO82D,EAAc,UAAU92D,OAAO82D,EAAc,SAAU,CAC3J+M,SAAUhN,EAAMu8G,WAChB34K,OAAQo8D,EAAMu8G,WACdn8E,OAAQ,EACRzpF,WAAY,GAAGxN,OAAO62D,EAAMu8G,WAAY,SACtC,OAAgB3oH,EAAO,IAAIzqD,OAAO82D,EAAc,cAAc92D,OAAO82D,EAAc,eAAe,OAAgB,CAAC,EAAG,GAAG92D,OAAO82D,EAAc,WAAW92D,OAAO82D,EAAc,UAAWq0G,EAAmB,CAAC,GAAG,OAAgBA,EAAkB,WAAWnrK,OAAO82D,EAAc,cAAe,CACnSiE,gBAAiBlE,EAAMoP,oBACrB,OAAgBklG,EAAkB,YAAYnrK,OAAO82D,EAAc,cAAe,CACpFiE,gBAAiBlE,EAAMqP,qBACrB,OAAgBilG,EAAkB,IAAInrK,OAAO82D,EAAc,oBAAoB92D,OAAO82D,EAAc,cAAe,CACrHiE,gBAAiB,gBACfowG,MAAqB,OAAgB1gH,EAAO,UAAUzqD,OAAO82D,EAAc,UAAU92D,OAAO82D,EAAc,UAAU92D,OAAO82D,EAAc,sBAAsB92D,OAAO82D,EAAc,UAAU92D,OAAO82D,EAAc,UAAU92D,OAAO82D,EAAc,oBAAqB,CACzQiE,gBAAiB,cACjBD,YAAa,cACb,WAAY,CACVrgE,OAAQo8D,EAAMu8G,WACd5lK,WAAY,GAAGxN,OAAO62D,EAAMu8G,WAAY,UAExC,OAAgB3oH,EAAO,IAAIzqD,OAAO82D,EAAc,UAAU92D,OAAO82D,EAAc,iBAAiB92D,OAAO82D,EAAc,UAAU92D,OAAO82D,EAAc,cAAe,CACrKr8D,OAAQo8D,EAAMu8G,WACd9xG,gBAAiB,EACjB9zD,WAAY,GAAGxN,OAAO62D,EAAMu8G,WAAY,SACtC,OAAgB3oH,EAAO,IAAIzqD,OAAO82D,EAAc,UAAU92D,OAAO82D,EAAc,aAAcm6G,EAAmB,CAClH1uG,kBAAmB1L,EAAM28G,yCACxB,OAAgBvC,EAAkB,iBAAkB,CACrDv1K,IAAKm7D,EAAM48G,6BACT,OAAgBxC,EAAkB,iBAAkB,CACtDx2K,OAAQo8D,EAAMu8G,WACd5lK,WAAY,GAAGxN,OAAO62D,EAAMu8G,WAAY,MACxCt9D,MAAO7xG,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAG+tI,GAAmBj5G,IAAS,CACjEr8D,MAAOq8D,EAAM68G,oCACbj5K,OAAQo8D,EAAMuQ,oBAEd6pG,IAAoBxmH,CAC1B,CA0OyGkpH,CAAuB98G,IA9V/F,SAAoCA,GACnE,IAAI0P,EAAiBD,EAAWhoB,EAC5BwY,EAAeD,EAAMC,aACzB,OAAOxY,EAAO,CAAC,GAAG,OAAgBA,EAAM,GAAGt+C,OAAO82D,EAAc,aAAc,CAC5E,cAAc,OAAgB,CAC5Bt+D,OAAQ,eACP,GAAGwH,OAAO82D,EAAc,cAAe,CACxCt2B,MAAOq2B,EAAM2N,kBACbhsE,OAAQ,gBAEV,mBAAmB,OAAgB,CACjCA,OAAQ,eACP,GAAGwH,OAAO82D,EAAc,cAAe,CACxCt2B,MAAOq2B,EAAM2N,kBACbhsE,OAAQ,mBAER,OAAgB8lD,EAAM,IAAIt+C,OAAO82D,EAAc,cAAewP,EAAY,CAC5E9tE,OAAQ,gBACP,OAAgB8tE,EAAW,GAAGtmE,OAAO82D,EAAc,SAAU,CAC9Dt+D,OAAQ,cACR,oBAAqB,CACnBuiE,gBAAiB,eAEnBnwD,EAAG,CACD41B,MAAOq2B,EAAM2N,kBACbzJ,gBAAiB,cACjB+H,OAAQ,OACRtqE,OAAQ,eAEV,WAAY,CACVsiE,YAAajE,EAAM0N,YACnBxJ,gBAAiBlE,EAAM+8G,qBACvB,oBAAqB,CACnB74G,gBAAiBlE,EAAM+8G,sBAEzBhpK,EAAG,CACD41B,MAAOq2B,EAAMg9G,6BAGf,OAAgBvtG,EAAW,GAAGtmE,OAAO82D,EAAc,eAAe,OAAgB,CACpFt2B,MAAOq2B,EAAM2N,kBACbhsE,OAAQ,cACR,oBAAqB,CACnBuiE,gBAAiB,gBAElB,GAAG/6D,OAAO82D,EAAc,YAAa,CACtCiE,gBAAiB,cACjB,oBAAqB,CACnBA,gBAAiB,mBAEhB,OAAgBuL,EAAW,GAAGtmE,OAAO82D,EAAc,iBAAkB,CACxEt2B,MAAOq2B,EAAM2N,qBACX,OAAgB8B,EAAW,GAAGtmE,OAAO82D,EAAc,gBAAgB92D,OAAO82D,EAAc,eAAgByP,EAAkB,CAAC,GAAG,OAAgBA,EAAiB,GAAGvmE,OAAO82D,EAAc,mBAAoB,CAC7M11D,QAAS,KACP,OAAgBmlE,EAAiB,GAAGvmE,OAAO82D,EAAc,kBAAmB,CAC9E11D,QAAS,IACPmlE,IAAmBD,KAAa,OAAgBhoB,EAAM,IAAIt+C,OAAO82D,EAAc,YAAY,OAAgB,CAAC,EAAG,GAAG92D,OAAO82D,EAAc,WAAW92D,OAAO82D,EAAc,UAAU,OAAgB,CAAC,EAAG,IAAI92D,OAAO82D,EAAc,cAAc92D,OAAO82D,EAAc,cAAe,CAClR,oBAAqB,CACnBiE,gBAAiB,mBAEfzc,CACR,CAiSyIw1H,CAA2Bj9G,KAAU01C,EAAkB,CAAC,GAAG,OAAgBA,EAAiB,sCAAsCvsG,OAAO62D,EAAM85E,SAAU,QAAQ,OAAgB,CAAC,EAAG,GAAG3wI,OAAO82D,EAAc,SAAU,CAC5V,wCAAyC,CACvChf,QAAS,YAER,OAAgBy0D,EAAiB,sCAAsCvsG,OAAO62D,EAAM05E,SAAU,QAAQ,OAAgB,CAAC,EAAG,GAAGvwI,OAAO82D,EAAc,YAAa,CAClKhf,QAAS,UACNy0D,MAAoB,OAAgBjnC,EAAO,IAAItlE,OAAO62D,EAAMC,aAAc,QAAS,CACtFvvC,UAAW,QACT+9C,CACN,GACIyuG,GAAmB,SAA0Bl9G,GAC/C,IAAIm9G,EAAkBC,EAAuBC,EAAmBztC,EAAW0tC,EAAmB5zC,EAC1FzpE,EAAeD,EAAMC,aACzB,OAAOypE,EAAQ,CAAC,GAAG,OAAgBA,EAAO,GAAGvgI,OAAO82D,GAAc92D,OAAO82D,EAAc,kBAAkB92D,OAAO82D,EAAc,WAAYm9G,EAAwB,CAChK,cAAc,OAAgB,CAAC,EAAG,GAAGj0K,OAAO82D,EAAc,cAAe,CACvEgE,YAAajE,EAAM0N,cAErB,mBAAmB,OAAgB,CAAC,EAAG,GAAGvkE,OAAO82D,EAAc,cAAe,CAC5EgE,YAAajE,EAAM0N,gBAEpB,OAAgB0vG,EAAuB,GAAGj0K,OAAO82D,EAAc,WAAW92D,OAAO82D,EAAc,eAAgBk9G,EAAmB,CACnIj5G,gBAAiBlE,EAAM4N,yBACvB3J,YAAajE,EAAM0N,cAClB,OAAgByvG,EAAkB,eAAeh0K,OAAO82D,EAAc,iBAAkB,CACzFiE,gBAAiBlE,EAAM4N,yBACvB3J,YAAajE,EAAM0N,YACnB35D,EAAG,CACD41B,MAAOq2B,EAAM2N,sBAEb,OAAgBwvG,EAAkB,IAAIh0K,OAAO82D,EAAc,gBAAiB,CAC9EiE,gBAAiBlE,EAAM+8G,uBACrBI,KAAoB,OAAgBC,EAAuB,GAAGj0K,OAAO82D,EAAc,WAAW92D,OAAO82D,EAAc,UAAU,OAAgB,CAC/I,iBAAkB,CAChBiE,gBAAiBlE,EAAM4N,yBACvB3J,YAAajE,EAAM0N,YACnB/jC,MAAOq2B,EAAM2N,oBAEd,GAAGxkE,OAAO82D,EAAc,cAAe,CACxCiE,gBAAiBlE,EAAM4N,yBACvB3J,YAAajE,EAAM0N,eAChB0vG,KAAyB,OAAgB1zC,EAAO,GAAGvgI,OAAO82D,EAAc,SAAS92D,OAAO82D,EAAc,WAAYq9G,EAAoB,CAAC,GAAG,OAAgBA,EAAmB,GAAGn0K,OAAO82D,EAAc,WAAW92D,OAAO82D,EAAc,UAAWo9G,EAAoB,CACvQ,iBAAkB,CAChBp5G,YAAajE,EAAMwL,kBACnBtH,gBAAiBlE,EAAMu9G,UAExB,OAAgBF,EAAmB,GAAGl0K,OAAO82D,EAAc,cAAe,CAC3EiE,gBAAiBlE,EAAMw9G,WACvBv5G,YAAajE,EAAM0N,eACjB,OAAgB2vG,EAAmB,WAAWl0K,OAAO82D,EAAc,cAAe,CACpFgE,YAAajE,EAAME,aACnBgE,gBAAiBlE,EAAMu9G,OACvB5zI,MAAOq2B,EAAME,gBACX,OAAgBm9G,EAAmB,IAAIl0K,OAAO82D,EAAc,cAAc,OAAgB,CAAC,EAAG,GAAG92D,OAAO82D,EAAc,cAAe,CACvIgE,YAAajE,EAAM0N,YACnB/jC,MAAOq2B,EAAM2N,qBACV0vG,KAAqB,OAAgBC,EAAmB,GAAGn0K,OAAO82D,EAAc,UAAW2vE,EAAY,CAC1G1rE,gBAAiBlE,EAAMu9G,OACvBtxG,OAAQ,GAAG9iE,OAAO62D,EAAM3qD,UAAW,OAAOlM,OAAO62D,EAAMkM,SAAU,KAAK/iE,OAAO62D,EAAM0N,eAClF,OAAgBkiE,EAAW,eAAezmI,OAAO82D,EAAc,iBAAkB,CAClFgE,YAAajE,EAAME,aACnBgE,gBAAiBlE,EAAMu9G,OACvBxpK,EAAG,CACD41B,MAAOq2B,EAAME,iBAEb,OAAgB0vE,EAAW,WAAY,CACzC3rE,YAAajE,EAAME,eACjB0vE,IAAa0tC,IAAqB5zC,CACxC,EACI+zC,GAA0B,SAAiCz9G,GAC7D,IAAIq1G,EAAiBqI,EACjBz9G,EAAeD,EAAMC,aACzB,OAAO,OAAgB,CAAC,EAAG,GAAG92D,OAAO82D,EAAc,SAAS92D,OAAO82D,EAAc,eAAgBy9G,EAAoB,CAAC,GAAG,OAAgBA,EAAmB,GAAGv0K,OAAO82D,EAAc,SAAU7yD,OAAO89B,OAAO,CAAC,GAAG,SAAc80B,MAAU,OAAgB09G,EAAmB,GAAGv0K,OAAO82D,EAAc,gBAAgB92D,OAAO82D,EAAc,cAAe,CACrV,kBAAmB7yD,OAAO89B,QAAQmqI,EAAkB,CAAC,GAAG,OAAgBA,EAAiB,GAAGlsK,OAAO82D,EAAc,mBAAoB,CACnI11D,QAAS,KACP,OAAgB8qK,EAAiB,GAAGlsK,OAAO82D,EAAc,kBAAmB,CAC9E11D,QAAS,IACP8qK,IAAkB,SAAgBr1G,OACpC,OAAgB09G,EAAmB,GAAGv0K,OAAO82D,EAAc,WAAW92D,OAAO82D,EAAc,UAAU,OAAgB,CAAC,EAAG,mBAAmB92D,OAAO82D,EAAc,cAAe7yD,OAAO89B,OAAO,CAAC,GAAG,SAAgB80B,MAAW09G,GACnO,EAEA,IAAe,EAAAj9G,GAAA,GAAsB,cAAc,SAAUT,GAC3D,IAAI29G,GAAkB,SAAW39G,EAAO,CACtCy8G,mBAAoB,EACpBE,uCAAwC38G,EAAMwoC,UAAY,EAC1Dq0E,oCAA6D,IAAxB78G,EAAM6Q,gBAC3C6qG,4BAA+C,IAAlB17G,EAAMwoC,UACnCyzE,gCAAiCj8G,EAAMwoC,UAAY,EACnD6zE,iCAAkCr8G,EAAMwoC,UACxC4zE,+BAAgCp8G,EAAM2qD,SACtCwxD,6BAA8B,UAC7BnB,GAAeh7G,IAClB,MAAO,CAACu7G,GAAmBoC,GAAkBF,GAAwBE,GAAkB39G,EAAMuvE,WAAa2tC,GAAiBS,GAC7H,IAAG,SAAU39G,GACX,MAAO,CACLu9G,OAAQv9G,EAAMiO,iBACdwtG,SAAUz7G,EAAMiN,cAChBsvG,WAAYv8G,EAAMuQ,gBAClBorG,aAAc37G,EAAMiO,iBACpBuvG,WAAYx9G,EAAMiO,iBAClB+uG,wBAAyBh9G,EAAM2N,kBAC/BovG,qBAAsB/8G,EAAM49G,4BAC5BpB,YAAax8G,EAAMiO,iBACnB2uG,0BAA2B,EAE/B,ICxcI,GAAgC,SAAUlpK,EAAG5Z,GAC/C,IAAIH,EAAI,CAAC,EACT,IAAK,IAAIqa,KAAKN,EAAOtG,OAAOtX,UAAUqX,eAAe3V,KAAKkc,EAAGM,IAAMla,EAAEgP,QAAQkL,GAAK,IAAGra,EAAEqa,GAAKN,EAAEM,IAC9F,GAAS,MAALN,GAAqD,mBAAjCtG,OAAO+wB,sBAA2C,KAAIrnC,EAAI,EAAb,IAAgBkd,EAAI5G,OAAO+wB,sBAAsBzqB,GAAI5c,EAAIkd,EAAEvd,OAAQK,IAClIgD,EAAEgP,QAAQkL,EAAEld,IAAM,GAAKsW,OAAOtX,UAAUgsD,qBAAqBtqD,KAAKkc,EAAGM,EAAEld,MAAK6C,EAAEqa,EAAEld,IAAM4c,EAAEM,EAAEld,IADuB,CAGvH,OAAO6C,CACT,EAuGA,OAxFiB,SAAoBsT,GACnC,IAAIgoD,EACAiU,EAAqBj8D,EAAMooD,UAC7BwoH,EAA2B5wK,EAAMu1I,gBACjCh5I,EAAYyD,EAAMzD,UAClBooE,EAAgB3kE,EAAM2kE,cACtBlwE,EAAQuL,EAAMvL,MACd+vE,EAAgBxkE,EAAMitB,KACtB4jJ,EAAe7wK,EAAMwqD,OACrB8qF,EAAuBt1I,EAAMs1I,qBAC7BgG,EAAat7I,EAAMs7I,WACnB/B,EAAkBv5I,EAAMu5I,gBACxB1sE,EAAY,GAAO7sE,EAAO,CAAC,YAAa,kBAAmB,YAAa,gBAAiB,QAAS,OAAQ,SAAU,uBAAwB,aAAc,oBAE1JshB,EADmB,GAAcg6H,GACbh6H,GAClB06C,EAAoB,aAAiB,OACvClD,EAAekD,EAAkBlD,aACjCr1C,EAAYu4C,EAAkBv4C,UAC9BqtJ,EAAwB90G,EAAkB+1C,WAC1CA,OAAuC,IAA1B++D,EAAmC,CAAC,EAAIA,EACnD1oH,EAAY0Q,EAAa,aAAcmD,GAEvC/C,EAAY,GAAS9Q,GACvBqd,GAAa,OAAevM,EAAW,GACvCwM,EAAUD,EAAW,GACrBtM,EAASsM,EAAW,GAClBsrG,EAAwBx3B,QAAyDA,EAAkBxnC,EAAWwnC,gBAC9Gy3B,EAAa,WAAc,WAC7B,IAAIC,EAAwB,gBAAoB,OAAQ,CACtD10K,UAAW,GAAGL,OAAOksD,EAAW,mBAC/B,OA6BH,MAAO,CACLiwF,SA7B0B,gBAAoB,SAAU,CACxD97I,UAAW,GAAGL,OAAOksD,EAAW,cAChC92D,KAAM,SACNy3D,UAAW,GACI,QAAdtlC,EAAmC,gBAAoBytJ,GAAA,EAAe,MAAqB,gBAAoB,GAAc,OA0B9Hv4B,SAzB0B,gBAAoB,SAAU,CACxDp8I,UAAW,GAAGL,OAAOksD,EAAW,cAChC92D,KAAM,SACNy3D,UAAW,GACI,QAAdtlC,EAAmC,gBAAoB,GAAc,MAAqB,gBAAoBytJ,GAAA,EAAe,OAsB9Hr3B,aArB8B,gBAAoB,IAAK,CACvDt9I,UAAW,GAAGL,OAAOksD,EAAW,eAClB,gBAAoB,MAAO,CACzC7rD,UAAW,GAAGL,OAAOksD,EAAW,oBACjB,QAAd3kC,EAAmC,gBAAoB,GAAqB,CAC7ElnB,UAAW,GAAGL,OAAOksD,EAAW,qBAChB,gBAAoB,GAAoB,CACxD7rD,UAAW,GAAGL,OAAOksD,EAAW,qBAC9B6oH,IAcFn3B,aAb8B,gBAAoB,IAAK,CACvDv9I,UAAW,GAAGL,OAAOksD,EAAW,eAClB,gBAAoB,MAAO,CACzC7rD,UAAW,GAAGL,OAAOksD,EAAW,oBACjB,QAAd3kC,EAAmC,gBAAoB,GAAoB,CAC5ElnB,UAAW,GAAGL,OAAOksD,EAAW,qBAChB,gBAAoB,GAAqB,CACzD7rD,UAAW,GAAGL,OAAOksD,EAAW,qBAC9B6oH,IAON,GAAG,CAACxtJ,EAAW2kC,IACX6jD,EAAa,GAAU,aAAc,IAEvCC,GADc,OAAeD,EAAY,GACb,GAC1BzhD,EAASrqD,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGiuE,GAAgB2kE,GACzDlG,GAAa,QAAQnmG,GACrB2sG,EAAyB,UAAfxG,MAA6BrpJ,GAAOqpJ,IAAcrvB,GAC5D/F,EAAkBz8E,EAAa,SAAU83G,GACzCQ,EAAoB,KAAYppH,EAAc,CAAC,GAAG,OAAgBA,EAAa,GAAG9rD,OAAOksD,EAAW,SAAU+oH,IAAU,OAAgBnpH,EAAa,GAAG9rD,OAAOksD,EAAW,QAAuB,QAAd3kC,GAAsBukC,GAAc+pD,aAA+C,EAASA,EAAWx1G,UAAWA,EAAWooE,EAAexL,GAC/TmzC,EAAcnsG,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAG8zE,aAA+C,EAASA,EAAWt9G,OAAQA,GAC7H,OAAOixE,EAAsB,gBAAoB,GAAcvlE,OAAO89B,OAAO,CAAC,EAAG+yI,EAAYnkG,EAAW,CACtGp4E,MAAO63G,EACPlkD,UAAWA,EACXmtF,gBAAiBA,EACjBh5I,UAAW60K,EACX97B,qBAAsBA,IAAyB67B,EAAU7F,GAAaC,IACtE/gH,OAAQA,EACR+uF,gBAAiBw3B,KAErB,ECzGA,MCgJA,SAASM,GAAS7kL,EAAOxD,EAAU8kC,GACjC,IACEwjJ,GADSxjJ,GAAW,CAAC,GACDyjJ,QAEtB,OAhIF,SAAkB/kL,EAAOxD,EAAU8kC,GACjC,IAaI0jJ,EAbAh3H,EAAO1sB,GAAW,CAAC,EACrB2jJ,EAAkBj3H,EAAKk3H,WACvBA,OAAiC,IAApBD,GAAqCA,EAClDE,EAAiBn3H,EAAKo3H,UACtBA,OAA+B,IAAnBD,GAAoCA,EAChDE,EAAoBr3H,EAAKs3H,aACzBA,OAAqC,IAAtBD,OAA+BzyJ,EAAYyyJ,EAQxDE,GAAY,EAEZC,EAAW,EAEf,SAASC,IACHT,GACFlkL,aAAakkL,EAEjB,CAeA,SAASU,IACP,IAAK,IAAIhgI,EAAO3oD,UAAUC,OAAQ2oL,EAAa,IAAI/oJ,MAAM8oB,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IACrFggI,EAAWhgI,GAAQ5oD,UAAU4oD,GAE/B,IAAI9C,EAAO1mD,KACP2F,EAAU3C,KAAKD,MAAQsmL,EAK3B,SAASp1I,IACPo1I,EAAWrmL,KAAKD,MAChB1C,EAASgB,MAAMqlD,EAAM8iI,EACvB,CAMA,SAASj6K,IACPs5K,OAAYpyJ,CACd,CAfI2yJ,IAgBCH,IAAaE,GAAiBN,GAMjC50I,IAEFq1I,SACqB7yJ,IAAjB0yJ,GAA8BxjL,EAAU9B,EACtColL,GAMFI,EAAWrmL,KAAKD,MACXgmL,IACHF,EAAYvlL,WAAW6lL,EAAe55K,EAAQ0kC,EAAMpwC,KAOtDowC,KAEsB,IAAf80I,IAYTF,EAAYvlL,WAAW6lL,EAAe55K,EAAQ0kC,OAAuBxd,IAAjB0yJ,EAA6BtlL,EAAQ8B,EAAU9B,IAEvG,CAGA,OAFA0lL,EAAQ9jJ,OA7ER,SAAgBN,GACd,IACEskJ,GADUtkJ,GAAW,CAAC,GACKukJ,aAC3BA,OAAsC,IAAvBD,GAAwCA,EACzDH,IACAF,GAAaM,CACf,EAyEOH,CACT,CAuBS,CAAS1lL,EAAOxD,EAAU,CAC/B8oL,cAA0B,UAFC,IAAjBR,GAAkCA,IAIhD,CCtJA,IAAIgB,GAAc,IAAI,MAAU,cAAe,CAC7CpwJ,GAAI,CACF5kB,QAAS,KAGTi1K,GAAY,IAAI,MAAU,YAAa,CACzCrwJ,GAAI,CACFzlB,UAAW,oBAGX+1K,GAAe,SAAsBz/G,GACvC,IAAI0/G,EAAKC,EAAKC,EAAaC,EAAgB36E,EAC3C,OAAO,OAAgB,CAAC,EAAG,GAAG/7F,OAAO62D,EAAMC,cAAe7yD,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,GAAG,SAAe80B,KAAUklC,EAAiB,CAClInkD,SAAU,WACVE,QAAS,OACTtX,MAAOq2B,EAAME,aACbxpD,SAAU,EACVG,UAAW,SACX81F,cAAe,SACfpiG,QAAS,EACT+1D,WAAY,aAAan3D,OAAO62D,EAAMmQ,mBAAoB,KAAKhnE,OAAO62D,EAAMykC,qBAC5E,aAAc,CACZ1jD,SAAU,SACVE,QAAS,eACT12C,QAAS,GAEX,oBAAqBs1K,EAAiB,CACpC9+H,SAAU,aACT,OAAgB8+H,EAAgB,WAAW12K,OAAO62D,EAAMC,eAAgB2/G,EAAc,CACvF7+H,SAAU,WACVl8C,IAAK,EACL4nE,iBAAkB,EAClBpiE,OAAQ,EACR42C,QAAS,QACTt9C,MAAO,OACPC,OAAQ,OACRgiH,UAAW5lD,EAAM8/G,gBAChB,OAAgBF,EAAa,GAAGz2K,OAAO62D,EAAMC,aAAc,QAAS,CACrElf,SAAU,WACVl8C,IAAK,MACL4nE,iBAAkB,MAClB2zB,QAASpgC,EAAM+/G,YAAc,KAC3B,OAAgBH,EAAa,GAAGz2K,OAAO62D,EAAMC,aAAc,SAAU,CACvElf,SAAU,WACVl8C,IAAK,MACLlB,MAAO,OACPm2K,YAAa95G,EAAM+/G,YAAc//G,EAAMtpD,UAAY,EAAI,EACvDspK,WAAY,aAAa72K,OAAO62D,EAAMiO,kBACtCv3D,SAAUspD,EAAMtpD,YACd,OAAgBkpK,EAAa,IAAIz2K,OAAO62D,EAAMC,aAAc,eAAe92D,OAAO62D,EAAMC,aAAc,QAAS,CACjHo0C,WAAar0C,EAAM+/G,YAAc,EAAK,MACpC,OAAgBH,EAAa,QAASF,EAAM,CAAC,GAAG,OAAgBA,EAAK,GAAGv2K,OAAO62D,EAAMC,aAAc,QAAS,CAC9GmgC,QAASpgC,EAAMigH,cAAgB,KAC7B,OAAgBP,EAAK,GAAGv2K,OAAO62D,EAAMC,aAAc,SAAU,CAC/D65G,YAAa95G,EAAMigH,cAAgBjgH,EAAMtpD,UAAY,EAAI,KACvD,OAAgBgpK,EAAK,IAAIv2K,OAAO62D,EAAMC,aAAc,eAAe92D,OAAO62D,EAAMC,aAAc,QAAS,CACzGo0C,WAAar0C,EAAMigH,cAAgB,EAAK,KACtCP,KAAO,OAAgBE,EAAa,QAASD,EAAM,CAAC,GAAG,OAAgBA,EAAK,GAAGx2K,OAAO62D,EAAMC,aAAc,QAAS,CACrHmgC,QAAUpgC,EAAMkgH,cAAgB,KAC9B,OAAgBP,EAAK,GAAGx2K,OAAO62D,EAAMC,aAAc,SAAU,CAC/D65G,YAAa95G,EAAMkgH,cAAgBlgH,EAAMtpD,UAAY,EAAI,KACvD,OAAgBipK,EAAK,IAAIx2K,OAAO62D,EAAMC,aAAc,eAAe92D,OAAO62D,EAAMC,aAAc,QAAS,CACzGo0C,WAAar0C,EAAMkgH,cAAgB,EAAK,KACtCP,IAAOC,KAAe,OAAgBC,EAAgB,GAAG12K,OAAO62D,EAAMC,aAAc,cAAe,CACrGlf,SAAU,WACVuf,WAAY,WAAWn3D,OAAO62D,EAAMmQ,oBACpC,WAAY,CACVpvB,SAAU,WACVl8C,IAAK,EACLqpI,eAAgB,EAChB70D,OAAQ,EACR5M,iBAAkB,EAClBpiE,OAAQ,GACR1G,MAAO,OACPC,OAAQ,OACRu8D,WAAYH,EAAMiO,iBAClB1jE,QAAS,EACT+1D,WAAY,OAAOn3D,OAAO62D,EAAMmQ,oBAChCzD,QAAS,KACTvrB,cAAe,WAEf,OAAgB0+H,EAAgB,GAAG12K,OAAO62D,EAAMC,aAAc,UAAU,OAAgB,CAC1F96D,MAAO,OACPoF,QAAS,GACT6hE,WAAY,OACZjrB,cAAe,QACd,WAAY,CACb52C,QAAS,GACT42C,cAAe,UACZ0+H,KACJ,OAAgB36E,EAAgB,QAAS,CAC1Cv7D,MAAOq2B,EAAMmgH,kBACX,OAAgBj7E,EAAgB,GAAG/7F,OAAO62D,EAAMC,aAAc,QAAS,CACzElf,SAAU,WACVE,QAAS,eACTvqC,SAAUspD,EAAM+/G,YAChBp8K,MAAO,MACPC,OAAQ,MACR,SAAU,CACRm9C,SAAU,WACVE,QAAS,QACTt9C,OAAQq8D,EAAM+/G,YAAc//G,EAAMwoC,UAAY,GAAK,EACnD5kG,QAASo8D,EAAM+/G,YAAc//G,EAAMwoC,UAAY,GAAK,EACpDtkC,gBAAiBlE,EAAME,aACvBuC,aAAc,OACd/4D,UAAW,cACX8vE,gBAAiB,UACjBjvE,QAAS,GACTq5F,cAAe27E,GACfh8E,kBAAmB,KACnB8J,wBAAyB,WACzB7I,wBAAyB,SACzB2O,mBAAoB,YACpB,iBAAkB,CAChBtuG,IAAK,EACL4nE,iBAAkB,GAEpB,iBAAkB,CAChB5nE,IAAK,EACLqpI,eAAgB,EAChBkyC,eAAgB,QAElB,iBAAkB,CAChBlyC,eAAgB,EAChB70D,OAAQ,EACR+mG,eAAgB,QAElB,iBAAkB,CAChB/mG,OAAQ,EACR5M,iBAAkB,EAClB2zG,eAAgB,SAGpB,SAAU,CACR12K,UAAW,gBACXk6F,cAAe47E,GACfj8E,kBAAmB,OACnB8J,wBAAyB,WACzB7I,wBAAyB,aAEzB,OAAgBU,EAAgB,QAAQ/7F,OAAO62D,EAAMC,aAAc,QAAS,CAC9EvpD,SAAUspD,EAAMigH,cAChBnpL,EAAG,CACD6M,OAAQq8D,EAAMigH,cAAgBjgH,EAAMwoC,UAAY,GAAK,EACrD5kG,QAASo8D,EAAMigH,cAAgBjgH,EAAMwoC,UAAY,GAAK,MAEtD,OAAgBtD,EAAgB,QAAQ/7F,OAAO62D,EAAMC,aAAc,QAAS,CAC9EvpD,SAAUspD,EAAMkgH,cAChBppL,EAAG,CACD6M,OAAQq8D,EAAMkgH,cAAgBlgH,EAAMwoC,WAAa,EACjD5kG,QAASo8D,EAAMkgH,cAAgBlgH,EAAMwoC,WAAa,MAElD,OAAgBtD,EAAgB,IAAI/7F,OAAO62D,EAAMC,aAAc,eAAe92D,OAAO62D,EAAMC,aAAc,SAAU,CACrHhf,QAAS,UACPikD,IACN,EAEA,IAAe,EAAAzkC,GAAA,GAAsB,QAAQ,SAAUT,GACrD,IAAIqgH,GAAY,SAAWrgH,EAAO,CAChCmgH,eAAgBngH,EAAM4zC,qBACtBmsE,YAAa//G,EAAM6Q,gBAAkB,EACrCovG,cAAuC,IAAxBjgH,EAAM6Q,gBACrBqvG,cAAelgH,EAAMiN,gBAEvB,MAAO,CAACwyG,GAAaY,GACvB,GAAG,CACDP,cAAe,MCtKb,GAAgC,SAAUpsK,EAAG5Z,GAC/C,IAAIH,EAAI,CAAC,EACT,IAAK,IAAIqa,KAAKN,EAAOtG,OAAOtX,UAAUqX,eAAe3V,KAAKkc,EAAGM,IAAMla,EAAEgP,QAAQkL,GAAK,IAAGra,EAAEqa,GAAKN,EAAEM,IAC9F,GAAS,MAALN,GAAqD,mBAAjCtG,OAAO+wB,sBAA2C,KAAIrnC,EAAI,EAAb,IAAgBkd,EAAI5G,OAAO+wB,sBAAsBzqB,GAAI5c,EAAIkd,EAAEvd,OAAQK,IAClIgD,EAAEgP,QAAQkL,EAAEld,IAAM,GAAKsW,OAAOtX,UAAUgsD,qBAAqBtqD,KAAKkc,EAAGM,EAAEld,MAAK6C,EAAEqa,EAAEld,IAAM4c,EAAEM,EAAEld,IADuB,CAGvH,OAAO6C,CACT,EAWI2mL,GAAmB,KAqCvB,IAAIC,GAAO,SAActzK,GACvB,IAAIgoD,EACAI,EAAYpoD,EAAMuzK,cACpBC,EAAkBxzK,EAAMyzK,SACxBC,OAAqC,IAApBF,GAAoCA,EACrDG,EAAe3zK,EAAMxT,MACrBA,OAAyB,IAAjBmnL,EAA0B,EAAIA,EACtCp3K,EAAYyD,EAAMzD,UAClBooE,EAAgB3kE,EAAM2kE,cACtB64B,EAAcx9F,EAAMitB,KACpBA,OAAuB,IAAhBuwE,EAAyB,UAAYA,EAC5Co2E,EAAM5zK,EAAM4zK,IACZ31E,EAAmBj+F,EAAMi+F,iBACzBxpG,EAAQuL,EAAMvL,MACd+D,EAAWwH,EAAMxH,SACjB2gE,EAASn5D,EAAMm5D,OACf0T,EAAY,GAAO7sE,EAAO,CAAC,gBAAiB,WAAY,QAAS,YAAa,gBAAiB,OAAQ,MAAO,mBAAoB,QAAS,WAAY,WACrJm1D,EAAkB,YAAe,WACjC,OAAOu+G,IArBb,SAAqBD,EAAUjnL,GAC7B,QAASinL,KAAcjnL,IAAUqe,MAAMD,OAAOpe,GAChD,CAmBgCqnL,CAAYH,EAAgBlnL,EACxD,IACA4oE,GAAmB,OAAeD,EAAiB,GACnDs+G,EAAWr+G,EAAiB,GAC5B0+G,EAAc1+G,EAAiB,GACjC,aAAgB,WACd,GAAIs+G,EAAgB,CAClB,IAAIK,EAAe1C,GAAS7kL,GAAO,WACjCsnL,GAAY,EACd,IAEA,OADAC,IACO,WACL,IAAIjqL,EACuF,QAA1FA,EAAKiqL,aAAmD,EAASA,EAAa3lJ,cAA2B,IAAPtkC,GAAyBA,EAAGS,KAAKwpL,EACtI,CACF,CACAD,GAAY,EACd,GAAG,CAACtnL,EAAOknL,IACX,IAAIM,EAAkB,WAAc,WAClC,YAA2B,IAAbx7K,CAChB,GAAG,CAACA,IAIJ,IAAIwjE,EAAoB,aAAiB,OACvCv4C,EAAYu4C,EAAkBv4C,UAC9BqtF,EAAO90C,EAAkB80C,KACvBmjE,EAAgB,IAAW7rH,EAAW0oD,aAAmC,EAASA,EAAKv0G,WAAYyrD,EAAc,CAAC,GAAG,OAAgBA,EAAa,GAAG9rD,OAAOksD,EAAW,OAAiB,UAATn7B,IAAmB,OAAgB+6B,EAAa,GAAG9rD,OAAOksD,EAAW,OAAiB,UAATn7B,IAAmB,OAAgB+6B,EAAa,GAAG9rD,OAAOksD,EAAW,aAAcqrH,IAAW,OAAgBzrH,EAAa,GAAG9rD,OAAOksD,EAAW,gBAAiBwrH,IAAM,OAAgB5rH,EAAa,GAAG9rD,OAAOksD,EAAW,QAAuB,QAAd3kC,GAAsBukC,GAAczrD,EAAWooE,EAAexL,GAC5hB+6G,EAAqB,IAAW,GAAGh4K,OAAOksD,EAAW,eAAe,OAAgB,CAAC,EAAG,GAAGlsD,OAAOksD,EAAW,SAAUqrH,IAEvHl+D,GAAW,QAAK1oC,EAAW,CAAC,YAAa,cACzCy/B,EAAcnsG,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAG6yE,aAAmC,EAASA,EAAKr8G,OAAQA,GACvG0/K,EAA2B,gBAAoB,MAAOh0K,OAAO89B,OAAO,CAAC,EAAGs3E,EAAU,CACpF9gH,MAAO63G,EACP/vG,UAAW03K,EACX,YAAa,SACb,YAAaR,IA1FjB,SAAyBrrH,EAAWpoD,GAClC,IAAIo0K,EAAYp0K,EAAMo0K,UAClBC,EAAe,GAAGn4K,OAAOksD,EAAW,QAExC,OAAkB,OAAdgsH,EACK,MAEL,SAAeA,IACV,SAAaA,EAAW,CAC7B73K,UAAW,IAAW63K,EAAUp0K,MAAMzD,UAAW83K,MAGjD,SAAehB,KACV,SAAaA,GAAkB,CACpC92K,UAAW,IAAW82K,GAAiBrzK,MAAMzD,UAAW83K,KAGxC,gBAAoB,OAAQ,CAC9C93K,UAAW,IAAW83K,EAAc,GAAGn4K,OAAOksD,EAAW,eAC3C,gBAAoB,IAAK,CACvC7rD,UAAW,GAAGL,OAAOksD,EAAW,aAChC5+B,IAAK,IACU,gBAAoB,IAAK,CACxCjtB,UAAW,GAAGL,OAAOksD,EAAW,aAChC5+B,IAAK,IACU,gBAAoB,IAAK,CACxCjtB,UAAW,GAAGL,OAAOksD,EAAW,aAChC5+B,IAAK,IACU,gBAAoB,IAAK,CACxCjtB,UAAW,GAAGL,OAAOksD,EAAW,aAChC5+B,IAAK,IAET,CA2DM8qJ,CAAgBlsH,EAAWpoD,GAAQ4zK,GAAOI,EAA+B,gBAAoB,MAAO,CACtGz3K,UAAW,GAAGL,OAAOksD,EAAW,UAC/BwrH,GAAO,MACV,OAAII,EACkB,gBAAoB,MAAO7zK,OAAO89B,OAAO,CAAC,EAAGs3E,EAAU,CACzEh5G,UAAW,IAAW,GAAGL,OAAOksD,EAAW,mBAAoB61C,EAAkB9kC,KAC/Es6G,GAAyB,gBAAoB,MAAO,CACtDjqJ,IAAK,WACJ2qJ,GAA2B,gBAAoB,MAAO,CACvD53K,UAAW23K,EACX1qJ,IAAK,aACJhxB,IAEE27K,CACT,EACII,GAAS,SAAgBv0K,GAC3B,IAAIi8D,EAAqBj8D,EAAMooD,UAG3BmrH,GAAgBz6G,EAFK,aAAiB,OACNA,cACH,OAAQmD,GACrC/C,EAAY,GAASq6G,GACvB9tG,GAAa,OAAevM,EAAW,GACvCwM,EAAUD,EAAW,GACrBtM,EAASsM,EAAW,GAClB+uG,EAAiBr0K,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGj+B,GAAQ,CAC3DuzK,cAAeA,EACfp6G,OAAQA,IAEV,OAAOuM,EAAsB,gBAAoB4tG,GAAMnzK,OAAO89B,OAAO,CAAC,EAAGu2I,IAC3E,EACAD,GAAOE,oBAAsB,SAAUL,GACrCf,GAAmBe,CACrB,EAIA,UCpJI,GAAgC,SAAU3tK,EAAG5Z,GAC/C,IAAIH,EAAI,CAAC,EACT,IAAK,IAAIqa,KAAKN,EAAOtG,OAAOtX,UAAUqX,eAAe3V,KAAKkc,EAAGM,IAAMla,EAAEgP,QAAQkL,GAAK,IAAGra,EAAEqa,GAAKN,EAAEM,IAC9F,GAAS,MAALN,GAAqD,mBAAjCtG,OAAO+wB,sBAA2C,KAAIrnC,EAAI,EAAb,IAAgBkd,EAAI5G,OAAO+wB,sBAAsBzqB,GAAI5c,EAAIkd,EAAEvd,OAAQK,IAClIgD,EAAEgP,QAAQkL,EAAEld,IAAM,GAAKsW,OAAOtX,UAAUgsD,qBAAqBtqD,KAAKkc,EAAGM,EAAEld,MAAK6C,EAAEqa,EAAEld,IAAM4c,EAAEM,EAAEld,IADuB,CAGvH,OAAO6C,CACT,EAeA,IAAIgoL,GAAQ,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,OACvCC,GAAmB,cAAiB,SAAU30K,EAAO+6C,GACvD,IAAIiN,EACAgU,EAAoB,aAAiB,OACvClD,EAAekD,EAAkBlD,aACjCr1C,EAAYu4C,EAAkBv4C,UAC5BumJ,EAAqB,aAAiB,IACxCz3B,EAASy3B,EAAmBz3B,OAC5Bz2F,EAAOkuH,EAAmBluH,KAC1B+2F,EAAiBm3B,EAAmBn3B,eAClC52E,EAAqBj8D,EAAMooD,UAC7BywD,EAAO74G,EAAM64G,KACb5yE,EAAQjmC,EAAMimC,MACd6lC,EAAS9rE,EAAM8rE,OACf5iF,EAAO8W,EAAM9W,KACb0rL,EAAO50K,EAAM40K,KACbr4K,EAAYyD,EAAMzD,UAClB/D,EAAWwH,EAAMxH,SACjB+mE,EAAOv/D,EAAMu/D,KACb9qE,EAAQuL,EAAMvL,MACdynE,EAAS,GAAOl8D,EAAO,CAAC,YAAa,OAAQ,QAAS,SAAU,OAAQ,OAAQ,YAAa,WAAY,OAAQ,UAC/GooD,EAAY0Q,EAAa,MAAOmD,GAChC44G,EAAe1jC,GAAY/oF,GAC7B0sH,GAAgB,OAAeD,EAAc,GAC7CnvG,EAAUovG,EAAc,GACxB37G,EAAS27G,EAAc,GACrBC,EAAe,CAAC,EACpBL,GAAM3jL,SAAQ,SAAUk8B,GACtB,IAAIgrE,EACA+8E,EAAY,CAAC,EACbC,EAAWj1K,EAAMitB,GACG,iBAAbgoJ,EACTD,EAAUn8D,KAAOo8D,EACY,iBAAbA,IAChBD,EAAYC,GAAY,CAAC,UAEpB/4G,EAAOjvC,GACd8nJ,EAAe50K,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAG82I,IAAgB98E,EAAiB,CAAC,GAAG,OAAgBA,EAAgB,GAAG/7F,OAAOksD,EAAW,KAAKlsD,OAAO+wB,EAAM,KAAK/wB,OAAO84K,EAAUn8D,WAA0Bz5F,IAAnB41J,EAAUn8D,OAAqB,OAAgB5gB,EAAgB,GAAG/7F,OAAOksD,EAAW,KAAKlsD,OAAO+wB,EAAM,WAAW/wB,OAAO84K,EAAU/uI,OAAQ+uI,EAAU/uI,OAA6B,IAApB+uI,EAAU/uI,QAAc,OAAgBgyD,EAAgB,GAAG/7F,OAAOksD,EAAW,KAAKlsD,OAAO+wB,EAAM,YAAY/wB,OAAO84K,EAAUlpG,QAASkpG,EAAUlpG,QAA+B,IAArBkpG,EAAUlpG,SAAe,OAAgBmsB,EAAgB,GAAG/7F,OAAOksD,EAAW,KAAKlsD,OAAO+wB,EAAM,UAAU/wB,OAAO84K,EAAU9rL,MAAO8rL,EAAU9rL,MAA2B,IAAnB8rL,EAAU9rL,OAAa,OAAgB+uG,EAAgB,GAAG/7F,OAAOksD,EAAW,KAAKlsD,OAAO+wB,EAAM,UAAU/wB,OAAO84K,EAAUJ,MAAOI,EAAUJ,MAA2B,IAAnBI,EAAUJ,OAAa,OAAgB38E,EAAgB,GAAG/7F,OAAOksD,EAAW,KAAKlsD,OAAO+wB,EAAM,UAAU/wB,OAAO84K,EAAUz1G,MAAOy1G,EAAUz1G,MAA2B,SAAnBy1G,EAAUz1G,OAAkB,OAAgB04B,EAAgB,GAAG/7F,OAAOksD,EAAW,QAAuB,QAAd3kC,GAAsBw0E,GACxhC,IACA,IAAI77B,EAAU,IAAWhU,GAAYJ,EAAc,CAAC,GAAG,OAAgBA,EAAa,GAAG9rD,OAAOksD,EAAW,KAAKlsD,OAAO28G,QAAgBz5F,IAATy5F,IAAqB,OAAgB7wD,EAAa,GAAG9rD,OAAOksD,EAAW,WAAWlsD,OAAO+pC,GAAQA,IAAQ,OAAgB+hB,EAAa,GAAG9rD,OAAOksD,EAAW,YAAYlsD,OAAO4vE,GAASA,IAAS,OAAgB9jB,EAAa,GAAG9rD,OAAOksD,EAAW,UAAUlsD,OAAOhT,GAAOA,IAAO,OAAgB8+D,EAAa,GAAG9rD,OAAOksD,EAAW,UAAUlsD,OAAO04K,GAAOA,GAAO5sH,GAAczrD,EAAWw4K,EAAc57G,GACjgBmzC,EAAc,CAAC,EAEnB,GAAIimC,GAAUA,EAAO,GAAK,EAAG,CAC3B,IAAIe,EAAmBf,EAAO,GAAK,EACnCjmC,EAAY4oE,YAAc5hC,EAC1BhnC,EAAY6oE,aAAe7hC,CAC7B,CAEA,GAAIf,GAAUA,EAAO,GAAK,IAAMM,EAAgB,CAC9C,IAAIU,EAAiBhB,EAAO,GAAK,EACjCjmC,EAAYugE,WAAat5B,EACzBjnC,EAAYg1B,cAAgBiS,CAC9B,CASA,OARIh0E,IACF+sC,EAAY/sC,KA/DhB,SAAmBA,GACjB,MAAoB,iBAATA,EACF,GAAGrjE,OAAOqjE,EAAM,KAAKrjE,OAAOqjE,EAAM,SAEvC,6BAA6BtxE,KAAKsxE,GAC7B,OAAOrjE,OAAOqjE,GAEhBA,CACT,CAuDuB61G,CAAU71G,IAGhB,IAATzjB,GAAmBwwD,EAAYvsC,WACjCusC,EAAYvsC,SAAW,IAGpB2F,EAAsB,gBAAoB,MAAOvlE,OAAO89B,OAAO,CAAC,EAAGi+B,EAAQ,CAChFznE,MAAO0L,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGquE,GAAc73G,GACrD8H,UAAW6/D,EACXrhB,IAAKA,IACHviD,GACN,IAIA,UC7FW,GAA2B,gBAAoB,CAAC,GCAvD,IDCsB,GAAY68K,SCDF,SAAU5uK,EAAG5Z,GAC/C,IAAIH,EAAI,CAAC,EACT,IAAK,IAAIqa,KAAKN,EAAOtG,OAAOtX,UAAUqX,eAAe3V,KAAKkc,EAAGM,IAAMla,EAAEgP,QAAQkL,GAAK,IAAGra,EAAEqa,GAAKN,EAAEM,IAC9F,GAAS,MAALN,GAAqD,mBAAjCtG,OAAO+wB,sBAA2C,KAAIrnC,EAAI,EAAb,IAAgBkd,EAAI5G,OAAO+wB,sBAAsBzqB,GAAI5c,EAAIkd,EAAEvd,OAAQK,IAClIgD,EAAEgP,QAAQkL,EAAEld,IAAM,GAAKsW,OAAOtX,UAAUgsD,qBAAqBtqD,KAAKkc,EAAGM,EAAEld,MAAK6C,EAAEqa,EAAEld,IAAM4c,EAAEM,EAAEld,IADuB,CAGvH,OAAO6C,CACT,GA+BI,GAAe,SAAsB5C,EAAIixD,GAC3C,IAaMx/C,EAbF0gE,EAAqBnyE,EAAGs+D,UAC1B5vD,EAAW1O,EAAG0O,SACd0qB,EAAUp5B,EAAGo5B,QACby5E,EAAQ7yG,EAAG6yG,MACXpgG,EAAYzS,EAAGyS,UACf+4K,EAAWxrL,EAAGwrL,SACdp5G,EAAS,GAAOpyE,EAAI,CAAC,YAAa,WAAY,UAAW,QAAS,YAAa,aAC7EyrL,GAAe,IAAAx8G,YAAW,IAC5By8G,EAAOD,EAAaC,KACpBC,EAAaF,EAAaE,WAE1B38G,GADiB,IAAAC,YAAW,OACAD,aAgB1B1Q,EAAY0Q,EAAa,OAAQmD,GACjCy5G,EAAiBxyJ,GAAWA,EAAQ15B,OAAS,GAAkB,gBAAoB,KAAM,CAC3F+S,UAAW,GAAGL,OAAOksD,EAAW,gBAChC5+B,IAAK,WACJtG,EAAQvJ,KAAI,SAAUyJ,EAAQv5B,GAC/B,OAEE,gBAAoB,KAAM,CACxB2/B,IAAK,GAAGttB,OAAOksD,EAAW,iBAAiBlsD,OAAOrS,IACjDu5B,EAAQv5B,IAAMq5B,EAAQ15B,OAAS,GAAkB,gBAAoB,KAAM,CAC5E+S,UAAW,GAAGL,OAAOksD,EAAW,wBAGtC,KACItrD,EAAU04K,EAAO,MAAQ,KACzBG,EAA4B,gBAAoB74K,EAASqD,OAAO89B,OAAO,CAAC,EAAGi+B,EAASs5G,EAEpF,CAAC,EAF0F,CAC7Fz6H,IAAKA,GACC,CACNx+C,UAAW,IAAW,GAAGL,OAAOksD,EAAW,UAAU,OAAgB,CAAC,EAAG,GAAGlsD,OAAOksD,EAAW,mBAvB3E,aAAfqtH,EACO94E,GATX,EAAA/1B,SAAS71E,QAAQyH,GAAU,SAAUF,GACZ,iBAAZA,IACTiD,GAAS,EAEb,MACOA,GAAU,EAAAqrE,SAASntD,MAAMjhB,GAAY,MA0BoF+D,KAC/G,aAAfk5K,GAA6B94E,EAAQ,CAAc,gBAAoB,MAAO,CAChFpgG,UAAW,GAAGL,OAAOksD,EAAW,cAChC5+B,IAAK,WACJhxB,EAAUk9K,GAA8B,gBAAoB,MAAO,CACpEn5K,UAAW,GAAGL,OAAOksD,EAAW,eAChC5+B,IAAK,SACJmzE,IAAU,CAACnkG,EAAUk9K,GAAgB,SAAa/4E,EAAO,CAC1DnzE,IAAK,YAEP,OAAOgsJ,EAAoB,gBAAoB,GAAK,CAClDz6H,IAAKA,EACLwkB,KAAM,EACN9qE,MAAO6gL,GACNK,GAAgBA,CACrB,EACI,IAAoB,IAAA/6G,YAAW,IACnC,GAAKg7G,KAvFa,SAAc9rL,GAC9B,IAAImyE,EAAqBnyE,EAAGs+D,UAC1B7rD,EAAYzS,EAAGyS,UACfg2G,EAASzoH,EAAGyoH,OACZ73D,EAAQ5wD,EAAG4wD,MACXiV,EAAc7lE,EAAG6lE,YACjBuM,EAAS,GAAOpyE,EAAI,CAAC,YAAa,YAAa,SAAU,QAAS,gBAGhEs+D,GAAY0Q,GAFE,IAAAC,YAAW,OACAD,cACA,OAAQmD,GACjC4lC,EAAc,IAAW,GAAG3lG,OAAOksD,EAAW,cAAe7rD,GAC7DkjE,EAAuB,gBAAoB,MAAO,CACpDljE,UAAW,GAAGL,OAAOksD,EAAW,uBAC/B1N,GAAsB,gBAAoB,KAAM,CACjDn+C,UAAW,GAAGL,OAAOksD,EAAW,qBAC/B1N,GAAQiV,GAA4B,gBAAoB,MAAO,CAChEpzD,UAAW,GAAGL,OAAOksD,EAAW,2BAC/BuH,IACH,OAAoB,gBAAoB,MAAOxvD,OAAO89B,OAAO,CAAC,EAAGi+B,EAAQ,CACvE3/D,UAAWslG,IACT0Q,GAAuB,gBAAoB,MAAO,CACpDh2G,UAAW,GAAGL,OAAOksD,EAAW,sBAC/BmqD,IAAU73D,GAASiV,IAAgB8P,EACxC,EAiEA,UCpGI,GAAmB,SAA0B1M,GAC/C,IAAIg0C,EAAUvsD,EACVq7H,EAAkB9iH,EAAM8iH,gBAC1B7iH,EAAeD,EAAMC,aACrBwuE,EAAYzuE,EAAMyuE,UAClBruC,EAASpgC,EAAMogC,OACf2iF,EAAgB/iH,EAAM+iH,cACtBC,EAAgBhjH,EAAMgjH,cACtB/2D,EAAWjsD,EAAMisD,SACjBn7C,EAAiB9Q,EAAM8Q,eACzB,OAAOrpB,EAAO,CAAC,GAAG,OAAgBA,EAAM,GAAGt+C,OAAO25K,IAAmB9uE,EAAW,CAC9E/nC,OAAQ,GAAG9iE,OAAO62D,EAAM3qD,UAAW,OAAOlM,OAAO62D,EAAMkM,SAAU,KAAK/iE,OAAO62D,EAAM0N,aACnFjL,aAAcqO,IACb,OAAgBkjC,EAAU,GAAG7qG,OAAO82D,EAAc,YAAY92D,OAAO82D,EAAc,YAAY92D,OAAO82D,EAAc,SAAU,CAC/HgjH,cAAex0C,KACb,OAAgBz6B,EAAU,GAAG7qG,OAAO82D,EAAc,eAAgB,CACpEmgC,OAAQ,GAAGj3F,OAAOi3F,EAAQ,OAAOj3F,OAAO8iH,EAAU,QAChDjY,KAAY,OAAgBvsD,EAAM,GAAGt+C,OAAO25K,GAAiB35K,OAAO82D,EAAc,QAAQ,OAAgB,CAAC,EAAG,GAAG92D,OAAO82D,EAAc,UAAU92D,OAAO82D,EAAc,YAAY92D,OAAO82D,EAAc,WAAY,CACpN+P,QAAS+yG,MACN,OAAgBt7H,EAAM,GAAGt+C,OAAO25K,GAAiB35K,OAAO82D,EAAc,QAAQ,OAAgB,CAAC,EAAG,GAAG92D,OAAO82D,EAAc,UAAU92D,OAAO82D,EAAc,YAAY92D,OAAO82D,EAAc,WAAY,CACzM+P,QAASgzG,KACNv7H,CACP,EACIy7H,GAAqB,SAA4BljH,GACnD,IAAImjH,EAAkBvzC,EAAWwzC,EAAmBxvH,EAChDqM,EAAeD,EAAMC,aACvBy5E,EAAW15E,EAAM05E,SACjBE,EAAW55E,EAAM45E,SACjB3tB,EAAWjsD,EAAMisD,SACjBtB,EAAW3qD,EAAM2qD,SACjBvqB,EAASpgC,EAAMogC,OACjB,OAAOxsC,EAAQ,CAAC,GAAG,OAAgBA,EAAO,gCAAgCzqD,OAAOywI,EAAU,MAAOupC,EAAmB,CAAC,GAAG,OAAgBA,EAAkB,GAAGh6K,OAAO82D,IAAe,OAAgB,CAAC,EAAG,GAAG92D,OAAO82D,EAAc,UAAU,OAAgB,CAAC,EAAG,GAAG92D,OAAO82D,EAAc,gBAAiB,CACrSyL,kBAAmBugD,OACf,OAAgBk3D,EAAkB,GAAGh6K,OAAO82D,EAAc,cAAc,OAAgB,CAAC,EAAG,GAAG92D,OAAO82D,EAAc,UAAU,OAAgB,CAAC,EAAG,GAAG92D,OAAO82D,EAAc,eAAgB,CAC9LyL,kBAAmBugD,MACfk3D,KAAoB,OAAgBvvH,EAAO,iCAAiCzqD,OAAOuwI,EAAU,MAAO0pC,EAAoB,CAAC,GAAG,OAAgBA,EAAmB,GAAGj6K,OAAO82D,IAAe,OAAgB,CAAC,EAAG,GAAG92D,OAAO82D,EAAc,UAAU,OAAgB,CAClQ+vE,SAAU,QACT,GAAG7mI,OAAO82D,EAAc,WAAY,CACrCyL,kBAAmBi/C,OACf,OAAgBy4D,EAAmB,GAAGj6K,OAAO82D,EAAc,cAAc,OAAgB,CAAC,EAAG,GAAG92D,OAAO82D,EAAc,UAAW2vE,EAAY,CAChJI,SAAU,iBACT,OAAgBJ,EAAW,GAAGzmI,OAAO82D,EAAc,cAAe,CACnE+M,SAAUhN,EAAMqjH,gBACd,OAAgBzzC,EAAW,GAAGzmI,OAAO82D,EAAc,eAAgB,CACrEmgC,OAAQ,aAAaj3F,OAAOi3F,EAAQ,QAClCwvC,KAAcwzC,IAAqBxvH,CACzC,EAEI,GAAe,SAAsBoM,GACvC,IAAI46G,EAAYO,EAAYmI,EAAY5tE,EAAiB4+D,EAAkB7/G,EACvEwL,EAAeD,EAAMC,aACvBokC,EAASrkC,EAAMqkC,OACfp3B,EAAgBjN,EAAMiN,cACtB6f,EAAY9sB,EAAM8sB,UAClB2Y,EAAYzlC,EAAMylC,UAClBwmB,EAAWjsD,EAAMisD,SACjBj8C,EAAUhQ,EAAMgQ,QAChBuzG,EAAcvjH,EAAMujH,YACpBrjH,EAAeF,EAAME,aACrB6iH,EAAgB/iH,EAAM+iH,cACtBC,EAAgBhjH,EAAMgjH,cACtBxyG,EAAYxQ,EAAMwQ,UAClB4vB,EAASpgC,EAAMogC,OACf9zB,EAAYtM,EAAMsM,UAClBsnC,EAAuB5zC,EAAM4zC,qBAC7BzjC,EAAqBnQ,EAAMmQ,mBAC3B96D,EAAY2qD,EAAM3qD,UAClBo6H,EAAWzvE,EAAMyvE,SACjBC,EAAW1vE,EAAM0vE,SACjB8zC,EAAmBxjH,EAAMwjH,iBACzBC,EAAmBzjH,EAAMyjH,iBACzBC,EAAoB1jH,EAAM0jH,kBAC1BC,EAAoB3jH,EAAM2jH,kBAC1BC,EAAsB5jH,EAAM4jH,oBAC1BC,EAAW,CAAC,EAMhB,MALA,CAAC,QAAS,SAAU,OAAO7lL,SAAQ,SAAUqP,GAC3Cw2K,EAAS,WAAW16K,OAAOkE,IAAS,CAClCwJ,UAAWxJ,EAEf,IACOonD,EAAQ,CAAC,GAAG,OAAgBA,EAAO,GAAGtrD,OAAO82D,GAAe7yD,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,GAAG,SAAe80B,KAAU01C,EAAkB,CAC5I30D,SAAU,WACV,IAAK,CACH+qB,QAAS,UAEV,OAAgB4pC,EAAiB,GAAGvsG,OAAO82D,EAAc,WAAY,CACtEE,WAAYsvE,KACV,OAAgB/5B,EAAiB,GAAGvsG,OAAO82D,EAAc,WAAY,CACvEE,WAAYuvE,KACV,OAAgBh6B,EAAiB,GAAGvsG,OAAO82D,EAAc,aAAa92D,OAAO82D,EAAc,WAAY,CACzG6jH,aAAcr+E,KACZ,OAAgBiQ,EAAiB,GAAGvsG,OAAO82D,EAAc,eAAgB7yD,OAAO89B,OAAO99B,OAAO89B,OAAO,CACvG+/E,iBAAkBgB,GACjB43D,IAAW,OAAgB,CAAC,EAAG,GAAG16K,OAAOk7F,EAAQ,uBAAwB,CAC1ExtF,UAAW,aACP,OAAgB6+F,EAAiB,GAAGvsG,OAAO82D,EAAc,SAAU,CACvE6sB,UAAWA,EACXj2E,UAAW,YACT,OAAgB6+F,EAAiB,GAAGvsG,OAAO82D,EAAc,UAAW,CACtEmgC,OAAQ,EACRpwB,QAAS,EACTk7C,UAAW,UACT,OAAgBxV,EAAiB,GAAGvsG,OAAO82D,EAAc,UAAWqjH,EAAa,CACnFriI,QAAS,OACT0sD,WAAY,SACZkI,eAAgB,gBAChB7lC,QAASuzG,EACT55I,MAAO2iC,IACN,OAAgBg3G,EAAY,GAAGn6K,OAAO82D,EAAc,eAAgB26G,EAAa,CAClF35H,QAAS,OACTurB,KAAM,EACNmhC,WAAY,aACZlyE,SAAU,SACT,OAAgBm/I,EAAY,GAAGzxK,OAAO82D,EAAc,qBAAsB,CAC3EwK,gBAAiBi5G,KACf,OAAgB9I,EAAY,GAAGzxK,OAAO82D,EAAc,sBAAuB,CAC7EuM,KAAM,MACN7oE,MAAO,EACPgmC,MAAO2iC,KACL,OAAgBsuG,EAAY,GAAGzxK,OAAO82D,EAAc,oBAAqB,CAC3EmgC,OAAQ,OAAOj3F,OAAO62D,EAAMwoC,UAAW,QACvC7+D,MAAO2iC,EACP51D,SAAUspD,EAAMtpD,SAChBC,WAAYqpD,EAAMrpD,WAClB,OAAO,OAAgB,CACrBgzB,MAAO2iC,EACPhM,WAAY,OAAOn3D,OAAOgnE,IACzB,UAAW,CACZxmC,MAAOu2B,OAEP,OAAgB06G,EAAY,GAAGzxK,OAAO82D,EAAc,0BAA2B,CACjFt2B,MAAOiqE,EACPl9F,SAAUktK,EACVjtK,WAAYqpD,EAAMrpD,aAChBikK,KAAc,OAAgB0I,EAAY,GAAGn6K,OAAO82D,EAAc,iBAAkBk7G,EAAa,CACnG3uG,KAAM,WACNd,kBAAmB1L,EAAM+jH,UACzB/zG,QAAS,EACTt5D,SAAU,EACVw0G,UAAW,SACV,OAAgBiwD,EAAY,UAAU,OAAgB,CACvDp6H,SAAU,WACVE,QAAS,eACT+uB,QAAS,KAAK7mE,OAAOqnE,EAAW,MAChC7mC,MAAOiqE,EACPl9F,SAAUspD,EAAMtpD,SAChBC,WAAYqpD,EAAMrpD,WAClBE,UAAW,UACV,gBAAiB,CAClBq2D,mBAAoB,MACjB,OAAgBiuG,EAAY,GAAGhyK,OAAO82D,EAAc,sBAAuB,CAC9Elf,SAAU,WACV+rD,gBAAiB,MACjBohC,eAAgB,EAChBvqI,MAAO0R,EACPzR,OAAQiM,KAAKisJ,KAAK97F,EAAMtpD,SAAWspD,EAAMrpD,YAAgC,EAAlBqpD,EAAMwoC,UAC7D9+F,UAAW,mBACXw6D,gBAAiBlE,EAAMyxE,aACrB0pC,IAAcmI,KAAc,OAAgB5tE,EAAiB,GAAGvsG,OAAO82D,EAAc,UAAW,CAClG+P,QAAS,GAAG7mE,OAAO6mE,EAAS,QAC5BrmC,MAAOiqE,EACPl9F,SAAUspD,EAAMwtC,WAChB32F,UAAW,YACT,OAAgB6+F,EAAiB,GAAGvsG,OAAO82D,EAAc,eAAgB,CAC3E+P,QAASwzG,EACT75I,MAAOq2B,EAAM2N,kBACbj3D,SAAUspD,EAAMtpD,SAChBG,UAAW,YACT,OAAgB6+F,EAAiB,GAAGvsG,OAAO82D,EAAc,iBAAkB,CAC7Ehf,QAAS,UACPy0D,MAAoB,OAAgBjhD,EAAO,GAAGtrD,OAAO82D,EAAc,UAAU92D,OAAOk7F,EAAQ,WAAWl7F,OAAO82D,EAAc,SAAU,CACxIhf,QAAS,QACTxlB,SAAU,OACVuoJ,eAAgB5jF,EAChB0jF,aAAc,EACdG,eAAgB,UACd,OAAgBxvH,EAAO,GAAGtrD,OAAO82D,EAAc,cAAc92D,OAAO82D,EAAc,UAAWq0G,EAAmB,CAClH3mE,WAAY,YACX,OAAgB2mE,EAAkB,GAAGnrK,OAAO82D,EAAc,cAAe,CAC1Ehf,QAAS,QACTurB,KAAM,KACJ,OAAgB8nG,EAAkB,GAAGnrK,OAAO82D,EAAc,eAAgB,CAC5EyL,kBAAmBugD,KACjB,OAAgBqoD,EAAkB,GAAGnrK,OAAO82D,EAAc,eAAe,OAAgB,CAC3F+jH,eAAgBP,GACf,GAAGt6K,OAAO82D,EAAc,oBAAqB,CAC9CgrD,iBAAkB,EAClB+4D,eAAgBL,EAChBh6I,MAAO2iC,EACP51D,SAAUspD,EAAM0Q,WAChB/5D,WAAYqpD,EAAM+4G,iBACf,OAAgBzE,EAAkB,GAAGnrK,OAAO82D,EAAc,gBAAiB,CAC9EgrD,iBAAkBj7C,EAClBtE,kBAAmB,OACnB,QAAQ,OAAgB,CACtBsE,QAAS,KAAK7mE,OAAO6mE,EAAS,OAC7B,gBAAiB,CAClB9C,mBAAoB,MAEpBonG,KAAoB,OAAgB7/G,EAAO,GAAGtrD,OAAO82D,EAAc,WAAW92D,OAAO82D,EAAc,UAAU,OAAgB,CAC/HgkH,eAAgB,GAAG96K,OAAO62D,EAAM3qD,UAAW,OAAOlM,OAAO62D,EAAMkM,SAAU,KAAK/iE,OAAO62D,EAAMyxE,aAC1F,eAAgB,CACjBwyC,eAAgB,WACb,OAAgBxvH,EAAO,GAAGtrD,OAAO82D,EAAc,WAAW92D,OAAO82D,EAAc,WAAY,CAC9FgkH,eAAgB,GAAG96K,OAAO62D,EAAM3qD,UAAW,OAAOlM,OAAO62D,EAAMkM,SAAU,KAAK/iE,OAAO62D,EAAMyxE,eACzF,OAAgBh9E,EAAO,GAAGtrD,OAAO82D,EAAc,UAAU92D,OAAO82D,EAAc,WAAW92D,OAAO82D,EAAc,WAAY,CAC5H8wE,UAAW,GAAG5nI,OAAO62D,EAAM3qD,UAAW,OAAOlM,OAAO62D,EAAMkM,SAAU,KAAK/iE,OAAO62D,EAAMyxE,eACpF,OAAgBh9E,EAAO,GAAGtrD,OAAO82D,EAAc,aAAa92D,OAAO82D,EAAc,wBAAyB,CAC5G6sB,UAAW7f,KACT,OAAgBxY,EAAO,GAAGtrD,OAAO82D,EAAc,UAAU92D,OAAO82D,EAAc,+BAA+B92D,OAAOk7F,EAAQ,sBAAsBl7F,OAAO82D,EAAc,aAAa92D,OAAO82D,EAAc,oBAAqB,CAChOgkH,eAAgB,GAAG96K,OAAO62D,EAAM3qD,UAAW,OAAOlM,OAAO62D,EAAMkM,SAAU,KAAK/iE,OAAO62D,EAAMyxE,eACzF,OAAgBh9E,EAAO,GAAGtrD,OAAO82D,EAAc,QAAQ92D,OAAO82D,EAAc,SAAU,CACxF+P,QAASgzG,KACP,OAAgBvuH,EAAO,GAAGtrD,OAAO82D,EAAc,QAAQ92D,OAAO82D,EAAc,SAAU,CACxF+P,QAAS+yG,KACP,OAAgBtuH,EAAO,GAAGtrD,OAAO82D,EAAc,SAAS92D,OAAO82D,EAAc,eAAe,OAAgB,CAAC,EAAG,GAAG92D,OAAO82D,EAAc,kBAAkB,OAAgB,CAAC,EAAG,GAAG92D,OAAO82D,EAAc,gBAAiB,CACzNhC,MAAO,YACHxJ,CACR,EAEA,IAAe,EAAAgM,GAAA,GAAsB,QAAQ,SAAUT,GACrD,IAAIkkH,GAAY,SAAWlkH,EAAO,CAChC8iH,gBAAiB,GAAG35K,OAAO62D,EAAMC,aAAc,aAC/C6sB,UAAW9sB,EAAM6Q,kBAEnB,MAAO,CAAC,GAAaqzG,GAAY,GAAiBA,GAAYhB,GAAmBgB,GACnF,IAAG,SAAUlkH,GACX,MAAO,CACLqjH,aAAc,IACdE,YAAa,GAAGp6K,OAAO62D,EAAMmkH,uBAAwB,QACrDpB,cAAe,GAAG55K,OAAO62D,EAAMokH,yBAA0B,OAAOj7K,OAAO62D,EAAMgR,yBAA0B,MACvGgyG,cAAe,GAAG75K,OAAO62D,EAAMqkH,yBAA0B,OAAOl7K,OAAO62D,EAAMgvE,2BAA4B,MACzGS,SAAU,cACVC,SAAU,cACV8zC,iBAAkBxjH,EAAMgQ,QACxByzG,iBAAkBzjH,EAAMgQ,QACxB0zG,kBAAmB1jH,EAAMgQ,QACzB2zG,kBAAmB3jH,EAAMylC,UACzBm+E,oBAAqB5jH,EAAMtpD,SAE/B,IC9OI,GAAgC,SAAUhD,EAAG5Z,GAC/C,IAAIH,EAAI,CAAC,EACT,IAAK,IAAIqa,KAAKN,EAAOtG,OAAOtX,UAAUqX,eAAe3V,KAAKkc,EAAGM,IAAMla,EAAEgP,QAAQkL,GAAK,IAAGra,EAAEqa,GAAKN,EAAEM,IAC9F,GAAS,MAALN,GAAqD,mBAAjCtG,OAAO+wB,sBAA2C,KAAIrnC,EAAI,EAAb,IAAgBkd,EAAI5G,OAAO+wB,sBAAsBzqB,GAAI5c,EAAIkd,EAAEvd,OAAQK,IAClIgD,EAAEgP,QAAQkL,EAAEld,IAAM,GAAKsW,OAAOtX,UAAUgsD,qBAAqBtqD,KAAKkc,EAAGM,EAAEld,MAAK6C,EAAEqa,EAAEld,IAAM4c,EAAEM,EAAEld,IADuB,CAGvH,OAAO6C,CACT,EAgBA,SAAS,GAAK5C,GACZ,IAAIk+D,EACAnoD,EACAw3K,EAAgBvtL,EAAGioH,WACrBA,OAA+B,IAAlBslE,GAAmCA,EAChDp7G,EAAqBnyE,EAAGs+D,UACxB+gH,EAAcr/K,EAAGs/K,SACjBA,OAA2B,IAAhBD,GAAiCA,EAC5CmO,EAAWxtL,EAAGmoB,MACdA,OAAqB,IAAbqlK,GAA6BA,EACrC/6K,EAAYzS,EAAGyS,UACfooE,EAAgB76E,EAAG66E,cACnBlwE,EAAQ3K,EAAG2K,MACX+D,EAAW1O,EAAG0O,SACdi9K,EAAa3rL,EAAG2rL,WAChB8B,EAAWztL,EAAGytL,SACd/B,EAAO1rL,EAAG0rL,KACVgC,EAAgB1tL,EAAG2tL,WACnBA,OAA+B,IAAlBD,EAA2B,GAAKA,EAC7CvqJ,EAAOnjC,EAAGmjC,KACVyqJ,EAAS5tL,EAAG4tL,OACZ11D,EAASl4H,EAAGk4H,OACZ21D,EAAa7tL,EAAGsxE,QAChBA,OAAyB,IAAfu8G,GAAgCA,EAC1CC,EAAS9tL,EAAG8tL,OACZv8B,EAAavxJ,EAAGuxJ,WAChB7wF,EAAS1gE,EAAG0gE,OACZ8a,EAAO,GAAOx7E,EAAI,CAAC,aAAc,YAAa,WAAY,QAAS,YAAa,gBAAiB,QAAS,WAAY,aAAc,WAAY,OAAQ,aAAc,OAAQ,SAAU,SAAU,UAAW,SAAU,aAAc,WACnO+tL,EAAgB9lE,GAAoC,iBAAfA,EAA0BA,EAAa,CAAC,EAC7E58C,EAAkB,WAAe0iH,EAAc9+B,gBAAkB,GACnE3jF,GAAmB,OAAeD,EAAiB,GACnD2iH,EAAoB1iH,EAAiB,GACrC2iH,EAAuB3iH,EAAiB,GACtCE,EAAmB,WAAeuiH,EAAc5+B,iBAAmB,IACrE1jF,GAAmB,OAAeD,EAAkB,GACpD0iH,EAAiBziH,EAAiB,GAClC0iH,EAAoB1iH,EAAiB,GACnCyG,EAAoB,aAAiB,OACvClD,EAAekD,EAAkBlD,aACjC2wG,EAAcztG,EAAkBytG,YAChChmJ,EAAYu4C,EAAkBv4C,UAC9B4mF,EAAOruC,EAAkBquC,KAKvB6tE,EAAyB,SAAgC9kL,GAC3D,OAAO,SAAU42D,EAAMorF,GACrB,IAAItrJ,EACJiuL,EAAqB/tH,GACrBiuH,EAAkB7iC,GACdrjC,GAAcA,EAAW3+G,KAC8D,QAAxFtJ,EAAKioH,aAA+C,EAASA,EAAW3+G,UAA+B,IAAPtJ,GAAyBA,EAAGS,KAAKwnH,EAAY/nD,EAAMorF,GAExJ,CACF,EACI+iC,EAAqBD,EAAuB,YAC5CE,EAA6BF,EAAuB,oBAqBpD9vH,EAAY0Q,EAAa,OAAQmD,GAEjC/C,EAAY,GAAS9Q,GACvBqd,GAAa,OAAevM,EAAW,GACvCwM,EAAUD,EAAW,GACrBtM,GAASsM,EAAW,GAClB4yG,GAAcj9G,EACS,kBAAhBi9G,KACTA,GAAc,CACZ5E,SAAU4E,KAGd,IAAI5yE,GAAY4yE,IAAeA,GAAY5E,SAGvCt3G,GAAU,GACd,OAAQlvC,GACN,IAAK,QACHkvC,GAAU,KACV,MACF,IAAK,QACHA,GAAU,KAKd,IAAI0lC,GAAc,IAAWz5C,GAAYJ,EAAc,CAAC,GAAG,OAAgBA,EAAa,GAAG9rD,OAAOksD,EAAW,aAA6B,aAAfqtH,IAA4B,OAAgBztH,EAAa,GAAG9rD,OAAOksD,EAAW,KAAKlsD,OAAOigE,IAAUA,KAAU,OAAgBnU,EAAa,GAAG9rD,OAAOksD,EAAW,UAAWn2C,IAAQ,OAAgB+1C,EAAa,GAAG9rD,OAAOksD,EAAW,aAAcghH,IAAW,OAAgBphH,EAAa,GAAG9rD,OAAOksD,EAAW,YAAaq9C,KAAY,OAAgBz9C,EAAa,GAAG9rD,OAAOksD,EAAW,WAAYotH,IAAO,OAAgBxtH,EAAa,GAAG9rD,OAAOksD,EAAW,iCA5B/iBmvH,GAAYxlE,GAAciQ,KA4BilB,OAAgBh6D,EAAa,GAAG9rD,OAAOksD,EAAW,QAAuB,QAAd3kC,GAAsBukC,GAAcqiD,aAAmC,EAASA,EAAK9tG,UAAWA,EAAWooE,EAAexL,IACxyBm/G,GAAkB,GA/DO,CAC3BloL,QAAS,EACTqxD,MAAO,GA6DmD,CAC1DA,MAAOg2H,EAAWjuL,OAClB4G,QAAS0nL,EACT1iC,SAAU4iC,GACTjmE,GAAc,CAAC,GACdwmE,GAAc31K,KAAKisJ,KAAKypB,GAAgB72H,MAAQ62H,GAAgBljC,UAChEkjC,GAAgBloL,QAAUmoL,KAC5BD,GAAgBloL,QAAUmoL,IAE5B,IAAIC,GAAoBzmE,EAA0B,gBAAoB,MAAO,CAC3Ex1G,UAAW,IAAW,GAAGL,OAAOksD,EAAW,eAAgB,GAAGlsD,OAAOksD,EAAW,sBAAsBlsD,OAA0G,QAAlG2D,EAAKy4K,cAAyD,EAASA,GAAgBt7F,aAA0B,IAAPn9E,EAAgBA,EAAK,SAC/N,gBAAoB,GAAYM,OAAO89B,OAAO,CAAC,EAAGq6I,GAAiB,CACjFnzH,SAAUgzH,EACVhhC,iBAAkBihC,MACb,KACHK,IAAkB,OAAmBhB,GACrC1lE,GACE0lE,EAAWjuL,QAAU8uL,GAAgBloL,QAAU,GAAKkoL,GAAgBljC,WACtEqjC,IAAkB,OAAmBhB,GAAY1tL,QAAQuuL,GAAgBloL,QAAU,GAAKkoL,GAAgBljC,SAAUkjC,GAAgBljC,WAGtI,IAAIsjC,GAAiBv4K,OAAOopB,KAAKisJ,GAAQ,CAAC,GAAGnyH,MAAK,SAAU75B,GAC1D,MAAO,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,OAAO17B,SAAS07B,EACxD,IACIwkH,GAAU,GAAc0qC,IACxBC,GAAoB,WAAc,WACpC,IAAK,IAAI9uL,EAAI,EAAGA,EAAIwiJ,GAAgB7iJ,OAAQK,GAAK,EAAG,CAClD,IAAIwjJ,EAAahB,GAAgBxiJ,GACjC,GAAImkJ,GAAQX,GACV,OAAOA,CAEX,CAEF,GAAG,CAACW,KACAsnC,GAAW,WAAc,WAC3B,GAAKE,EAAL,CAGA,IAAIoD,EAAcD,IAAqBnD,EAAKmD,IAAqBnD,EAAKmD,IAAqBnD,EAAKrrC,OAChG,OAAIyuC,EACK,CACLliL,MAAO,GAAGwF,OAAO,IAAM08K,EAAa,KACpCpqJ,SAAU,GAAGtyB,OAAO,IAAM08K,EAAa,WAH3C,CAFA,CAQF,GAAG,CAACpD,aAAmC,EAASA,EAAKrrC,OAAQwuC,KACzDE,GAAkBpzE,IAA0B,gBAAoB,MAAO,CACzEhxG,MAAO,CACLorF,UAAW,MAGf,GAAI44F,GAAgBjvL,OAAS,EAAG,CAC9B,IAAIslD,GAAQ2pI,GAAgB9+J,KAAI,SAAUvZ,EAAMzP,GAC9C,OApGkB,SAAyByP,EAAMzP,GACnD,OAAK0qJ,IAGH7xH,EADoB,mBAAXouJ,EACHA,EAAOx3K,GACJw3K,EACHx3K,EAAKw3K,GAELx3K,EAAKopB,OAGXA,EAAM,aAAattB,OAAOvL,IAER,gBAAoB,WAAgB,CACtD64B,IAAKA,GACJ6xH,EAAWj7I,EAAMzP,KAdI,KACxB,IAAI64B,CAcN,CAoFWsvJ,CAAgB14K,EAAMzP,EAC/B,IACAkoL,GAAkBrD,EAAoB,gBAAoB,GAAK,CAC7DjjC,OAAQijC,EAAKjjC,QACZ,WAAe54H,IAAIm1B,IAAO,SAAUr2C,GACrC,OAAoB,gBAAoB,MAAO,CAC7C+wB,IAAK/wB,aAAqC,EAASA,EAAM+wB,IACzD/0B,MAAO6gL,IACN78K,EACL,KAAmB,gBAAoB,KAAM,CAC3C8D,UAAW,GAAGL,OAAOksD,EAAW,WAC/BtZ,GACL,MAAYt2C,GAAaitG,KACvBozE,GAA+B,gBAAoB,MAAO,CACxDt8K,UAAW,GAAGL,OAAOksD,EAAW,gBAC/BoC,GAAUA,EAAOiD,YAAcg8G,aAAiD,EAASA,EAAY,UAAyB,gBAAoB,GAAoB,CACvK73G,cAAe,WAGnB,IAAImnH,GAAqBT,GAAgBxkI,UAAY,SACjDklI,GAAe,WAAc,WAC/B,MAAO,CACLxD,KAAMA,EACNC,WAAYA,EAEhB,GAAG,CAAC9rI,KAAKF,UAAU+rI,GAAOC,IAC1B,OAAO/vG,EAAsB,gBAAoB,GAAY/b,SAAU,CACrE7+D,MAAOkuL,IACO,gBAAoB,MAAO74K,OAAO89B,OAAO,CACvDxpC,MAAO0L,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGosE,aAAmC,EAASA,EAAK51G,OAAQA,GAChG8H,UAAWslG,IACVv8B,IAA+B,QAAvByzG,IAAuD,SAAvBA,KAAkCP,GAAmBd,GAAuB,gBAAoB,MAAO,CAChJn7K,UAAW,GAAGL,OAAOksD,EAAW,YAC/BsvH,GAAsB,gBAAoB,GAAMv3K,OAAO89B,OAAO,CAAC,EAAGo6I,IAAcQ,GAAiBrgL,GAAWwpH,GAAuB,gBAAoB,MAAO,CAC/JzlH,UAAW,GAAGL,OAAOksD,EAAW,YAC/B45D,GAASu1D,IAAoC,WAAvBwB,IAA0D,SAAvBA,KAAkCP,KAChG,CAIA,GAAKx8B,KAAO,GACZ,UClOI,GAAY,CAAC,QAAS,WAuB1B,IACA,GADiB,cArBjB,SAAoCxhG,EAAMC,GACxC,IAAIC,EAAQF,EAAKE,MACfC,EAAUH,EAAKG,QACf36C,GAAQ,OAAyBw6C,EAAM,IACzC,OAAoB,gBAAoB,MAAOr6C,OAAO89B,OAAO,CAC3D2c,MAAO,6BACPrW,KAAM,OACNsW,QAAS,YACTC,YAAa,IACbhxC,OAAQ,eACR,cAAe,OACfixC,IAAKN,EACL,kBAAmBE,GAClB36C,GAAQ06C,EAAqB,gBAAoB,QAAS,CAC3Dr+C,GAAIs+C,GACHD,GAAS,KAAmB,gBAAoB,OAAQ,CACzDM,cAAe,QACfC,eAAgB,QAChBvsC,EAAG,geAEP,ICtBI,GAAY,CAAC,QAAS,WAuB1B,IACA,GADiB,cArBjB,SAA6B8rC,EAAMC,GACjC,IAAIC,EAAQF,EAAKE,MACfC,EAAUH,EAAKG,QACf36C,GAAQ,OAAyBw6C,EAAM,IACzC,OAAoB,gBAAoB,MAAOr6C,OAAO89B,OAAO,CAC3D2c,MAAO,6BACPrW,KAAM,OACNsW,QAAS,YACTC,YAAa,IACbhxC,OAAQ,eACR,cAAe,OACfixC,IAAKN,EACL,kBAAmBE,GAClB36C,GAAQ06C,EAAqB,gBAAoB,QAAS,CAC3Dr+C,GAAIs+C,GACHD,GAAS,KAAmB,gBAAoB,OAAQ,CACzDM,cAAe,QACfC,eAAgB,QAChBvsC,EAAG,iUAEP,wCCLA,GAjBuB,CACrB,KAAQ,CACN,IAAO,MACP,MAAS,CACP,QAAW,gBACX,UAAa,SAEf,SAAY,CAAC,CACX,IAAO,OACP,MAAS,CACP,EAAK,iIAIX,KAAQ,WACR,MAAS,YCTP,GAAmB,SAA0B1O,EAAO+6C,GACtD,OAAoB,gBAAoBsX,GAAA,GAAU,OAAS,CAAC,EAAGryD,EAAO,CACpE+6C,IAAKA,EACL8U,KAAM,KAEV,EAIA,OAA4B,aAAiB,ICc7C,GA7BmB,CACjB,KAAQ,CACN,IAAO,MACP,MAAS,CACP,QAAW,gBACX,UAAa,SAEf,SAAY,CAAC,CACX,IAAO,OACP,MAAS,CAAC,EACV,SAAY,CAAC,CACX,IAAO,QACP,MAAS,CAAC,KAEX,CACD,IAAO,OACP,MAAS,CACP,EAAK,8DAEN,CACD,IAAO,OACP,MAAS,CACP,EAAK,gEAIX,KAAQ,OACR,MAAS,YCrBP,GAAe,SAAsB7vD,EAAO+6C,GAC9C,OAAoB,gBAAoBsX,GAAA,GAAU,OAAS,CAAC,EAAGryD,EAAO,CACpE+6C,IAAKA,EACL8U,KAAM,KAEV,EAIA,OAA4B,aAAiB,ICf7C,IAA4B,IAAAjG,eAAc,MCCtCqvH,GAAuB,cAAiB,SAAUz+H,EAAMO,GAC1D,IAAIqN,EAAY5N,EAAK4N,UACnB7rD,EAAYi+C,EAAKj+C,UACjB9H,EAAQ+lD,EAAK/lD,MACb4H,EAAKm+C,EAAKn+C,GACV6iH,EAAS1kE,EAAK0kE,OACdg6D,EAAS1+H,EAAK0+H,OACd1gL,EAAWgiD,EAAKhiD,SAClB,OAAoB,gBAAoB,MAAO,CAC7C6D,GAAIA,GAAM,GAAGH,OAAOG,EAAI,WAAWH,OAAOg9K,GAC1ClwH,KAAM,WACND,SAAUm2D,EAAS,GAAK,EACxB,kBAAmB7iH,GAAM,GAAGH,OAAOG,EAAI,SAASH,OAAOg9K,GACvD,eAAgBh6D,EAChBzqH,MAAOA,EACP8H,UAAW,IAAW6rD,EAAW82D,GAAU,GAAGhjH,OAAOksD,EAAW,WAAY7rD,GAC5Ew+C,IAAKA,GACJviD,EACL,IAIA,UCpBI,GAAY,CAAC,MAAO,cAAe,QAAS,aAMjC,SAAS2gL,GAAa3+H,GACnC,IAAIn+C,EAAKm+C,EAAKn+C,GACZ+8K,EAAY5+H,EAAK4+H,UACjBC,EAAW7+H,EAAK6+H,SAChBC,EAAc9+H,EAAK8+H,YACnBC,EAAyB/+H,EAAK++H,uBAC5Bv9G,EAAoB,aAAiBw9G,IACvCpxH,EAAY4T,EAAkB5T,UAC9BsqD,EAAO12C,EAAkB02C,KACvB+mE,EAAkBJ,EAASK,QAC3BC,EAAmB,GAAGz9K,OAAOksD,EAAW,YAC5C,OAAoB,gBAAoB,MAAO,CAC7C7rD,UAAW,IAAW,GAAGL,OAAOksD,EAAW,qBAC7B,gBAAoB,MAAO,CACzC7rD,UAAW,IAAW,GAAGL,OAAOksD,EAAW,YAAa,GAAGlsD,OAAOksD,EAAW,aAAalsD,OAAOo9K,IAAc,OAAgB,CAAC,EAAG,GAAGp9K,OAAOksD,EAAW,qBAAsBqxH,KAC7K/mE,EAAK/4F,KAAI,SAAUgtC,GACpB,IAAIn9B,EAAMm9B,EAAMn9B,IACd80D,EAAc33B,EAAM23B,YACpBs7F,EAAYjzH,EAAMlyD,MAClBolL,EAAgBlzH,EAAMpqD,UACtBu9K,GAAe,QAAyBnzH,EAAO,IAC7Cu4D,EAAS11F,IAAQ4vJ,EACrB,OAAoB,gBAAoB,OAAW,OAAS,CAC1D5vJ,IAAKA,EACLtsB,QAASgiH,EACT5gC,YAAaA,EACbhjB,gBAAiBi+G,EACjBt5F,gBAAiB,GAAG/jF,OAAOy9K,EAAkB,YAC5CN,EAASU,gBAAgB,SAAUvyH,EAAOzM,GAC3C,IAAI+gB,EAActU,EAAM/yD,MACtBikE,EAAkBlR,EAAMjrD,UAC1B,OAAoB,gBAAoB,IAAS,OAAS,CAAC,EAAGu9K,EAAc,CAC1E1xH,UAAWuxH,EACXt9K,GAAIA,EACJ68K,OAAQ1vJ,EACR6vJ,SAAUI,EACVv6D,OAAQA,EACRzqH,OAAO,SAAc,QAAc,CAAC,EAAGmlL,GAAY99G,GACnDv/D,UAAW,IAAWs9K,EAAenhH,GACrC3d,IAAKA,IAET,GACF,KACF,CCnDA,IAAIi/H,GAAe,CACjBtjL,MAAO,EACPC,OAAQ,EACRgB,KAAM,EACNC,IAAK,GCJQ,SAASqiL,GAAaC,EAAc/0H,GACjD,IAAIg1H,EAAW,SAAaD,GACxB/kH,EAAkB,WAAe,CAAC,GAEpC+vC,GADmB,QAAe/vC,EAAiB,GACpB,GASjC,MAAO,CAACglH,EAAS/pL,QARjB,SAAkB29G,GAChB,IAAI8nB,EAA8B,mBAAZ9nB,EAAyBA,EAAQosE,EAAS/pL,SAAW29G,EACvE8nB,IAAaskD,EAAS/pL,SACxB+0D,EAAS0wE,EAAUskD,EAAS/pL,SAE9B+pL,EAAS/pL,QAAUylI,EACnB3wB,EAAY,CAAC,EACf,EAEF,CCbA,IAAIk1E,GAAqB,GACrBC,GAAsB,IACtBC,GAAmB,GACnBC,GAAqB33K,KAAK0B,IAAI,KAAOg2K,ICE1B,SAASE,GAAUxxL,GAChC,IAAIg9E,GAAY,IAAAC,UAAS,GACvBC,GAAa,QAAeF,EAAW,GACvCvsD,EAAQysD,EAAW,GACnBu0G,EAAWv0G,EAAW,GACpBw0G,GAAY,IAAAzhH,QAAO,GACnB0hH,GAAc,IAAA1hH,UAUlB,OATA0hH,EAAYvqL,QAAUpH,GAGtB,SAAsB,WACpB,IAAI4xL,EAC6C,QAAhDA,EAAuBD,EAAYvqL,eAA8C,IAAzBwqL,GAA2CA,EAAqBrwL,KAAKowL,EAChI,GAAG,CAAClhK,IAGG,WACDihK,EAAUtqL,UAAYqpB,IAG1BihK,EAAUtqL,SAAW,EACrBqqL,EAASC,EAAUtqL,SACrB,CACF,CC9BA,IAAI,GAAe,CACjBsG,MAAO,EACPC,OAAQ,EACRgB,KAAM,EACNC,IAAK,EACL0D,MAAO,GCFF,SAAS,GAAUohB,GACxB,IAAIm+J,EASJ,OARIn+J,aAAehV,KACjBmzK,EAAM,CAAC,EACPn+J,EAAI3rB,SAAQ,SAAU6J,EAAGvL,GACvBwrL,EAAIxrL,GAAKuL,CACX,KAEAigL,EAAMn+J,EAEDitB,KAAKF,UAAUoxI,EACxB,CACA,IAAIC,GAAuB,UACpB,SAASC,GAAevxJ,GAC7B,OAAOlb,OAAOkb,GAAKjb,QAAQ,KAAMusK,GACnC,CACO,SAASE,GAAa5lE,EAAUE,EAAW6sC,EAAU95F,GAC1D,SAEC85F,GAED95F,IAEa,IAAb+sD,QAEah2F,IAAbg2F,KAAyC,IAAdE,GAAqC,OAAdA,GAIpD,CChCA,SAAS2lE,GAAUzgI,EAAMO,GACvB,IAAIqN,EAAY5N,EAAK4N,UACnB+5F,EAAW3nG,EAAK2nG,SAChB33F,EAAShQ,EAAKgQ,OACd/1D,EAAQ+lD,EAAK/lD,MACf,OAAK0tJ,IAAiC,IAArBA,EAAS+4B,QAGN,gBAAoB,SAAU,CAChDngI,IAAKA,EACLzpD,KAAM,SACNiL,UAAW,GAAGL,OAAOksD,EAAW,YAChC3zD,MAAOA,EACP,cAAe+1D,aAAuC,EAASA,EAAO2wH,eAAiB,UACvF31H,QAAS,SAAiB9xD,GACxByuJ,EAASi5B,OAAO,MAAO,CACrB1nL,MAAOA,GAEX,GACCyuJ,EAASk5B,SAAW,KAbd,IAcX,CACA,OAA4B,aAAiBJ,ICpBzCK,GAA4B,cAAiB,SAAU9gI,EAAMO,GAC/D,IAII0kB,EAJA3rB,EAAW0G,EAAK1G,SAClBsU,EAAY5N,EAAK4N,UACjBu0C,EAAQniD,EAAKmiD,MACf,IAAKA,EAAO,OAAO,KAInB,IAAI4+E,EAAc,CAAC,EAYnB,MAXuB,YAAnB,QAAQ5+E,IAAsC,iBAAqBA,GAGrE4+E,EAAYjgL,MAAQqhG,EAFpB4+E,EAAc5+E,EAIC,UAAb7oD,IACF2rB,EAAU87G,EAAYjgL,OAEP,SAAbw4C,IACF2rB,EAAU87G,EAAY5jL,MAEjB8nE,EAAuB,gBAAoB,MAAO,CACvDljE,UAAW,GAAGL,OAAOksD,EAAW,kBAChCrN,IAAKA,GACJ0kB,GAAW,IAChB,IAIA,UC3BIolD,GAAM/O,GAAA,EAAQ+O,IAChBC,GAAMhP,GAAA,EAAQgP,ICFhB,IAAI02D,IAAuB,IAAA5gH,aAAW,SAAU56D,EAAO+6C,GACrD,IAAIk3C,EAAUjyF,EAAMiyF,QAClBhV,EAAQj9E,EAAMi9E,MACd70B,EAAYpoD,EAAMooD,UAChBqzH,GAAc,IAAA31G,UAAQ,WAOxB,MALuB,mBAAZmsB,EACQA,IAEAA,CAGrB,GAAG,CAACA,IACAypF,GAAc,SAAW3gI,EAAK0gI,aAAiD,EAASA,EAAY1gI,KACxG,OAAoB,gBAAoB,WAAgB,KAAMkiC,GAAsB,gBAAoB,MAAO,CAC7G1gF,UAAW,GAAGL,OAAOksD,EAAW,YACjB,eAAmBqzH,EAAa,CAC/C1gI,KAAK,SAAW0gI,GAAeC,OAAct8J,IAEjD,IACA,MCtBIi2E,GAAqB,CACvB1L,QAAS,EACTC,QAAS,GAEP,GAAe,CAAC,EAAG,GAuCvB,GAtCiB,CACfpnF,QAAS,CACP6G,OAAQ,CAAC,KAAM,MACf4qC,SAAUohD,GACVvpB,OAAQ,CAAC,GAAI,GACbyc,aAAc,IAEhB3wF,IAAK,CACHyR,OAAQ,CAAC,KAAM,MACf4qC,SAAUohD,GACVvpB,OAAQ,CAAC,GAAI,GACbyc,aAAc,IAEhB9lF,SAAU,CACR4G,OAAQ,CAAC,KAAM,MACf4qC,SAAUohD,GACVvpB,OAAQ,CAAC,GAAI,GACbyc,aAAc,IAEhB7lF,WAAY,CACV2G,OAAQ,CAAC,KAAM,MACf4qC,SAAUohD,GACVvpB,OAAQ,CAAC,EAAG,GACZyc,aAAc,IAEhBnc,OAAQ,CACN/iE,OAAQ,CAAC,KAAM,MACf4qC,SAAUohD,GACVvpB,OAAQ,CAAC,EAAG,GACZyc,aAAc,IAEhB5lF,YAAa,CACX0G,OAAQ,CAAC,KAAM,MACf4qC,SAAUohD,GACVvpB,OAAQ,CAAC,EAAG,GACZyc,aAAc,KCpCd,GAAY,CAAC,QAAS,YAAa,iBAAkB,YAAa,QAAS,YAAa,aAAc,oBAAqB,aAAc,aAAc,mBAAoB,eAAgB,UAAW,UAAW,YAAa,UAAW,WAAY,mBAQzP,SAASozF,GAAS37K,EAAO+6C,GACvB,IAAI6gI,EACArhF,EAAev6F,EAAMi9E,MACvBA,OAAyB,IAAjBsd,GAAkCA,EAC1C1Z,EAAmB7gF,EAAMooD,UACzBA,OAAiC,IAArBy4B,EAA8B,cAAgBA,EAC1DnH,EAAiB15E,EAAM05E,eACvBrrF,EAAY2R,EAAM3R,UAClB2uF,EAAQh9E,EAAMg9E,MACd2U,EAAmB3xF,EAAMwlF,UACzBA,OAAiC,IAArBmM,EAA8B,aAAeA,EACzDkqF,EAAoB77K,EAAM8tF,WAC1BA,OAAmC,IAAtB+tF,EAA+B,GAAaA,EACzDt9F,EAAoBv+E,EAAMu+E,kBAC1BwC,EAAa/gF,EAAM+gF,WACnBC,EAAahhF,EAAMghF,WACnBoQ,EAAmBpxF,EAAMoxF,iBACzBI,EAAexxF,EAAMwxF,aACrBt0F,EAAU8C,EAAM9C,QAChBm0F,EAAiBrxF,EAAMsxF,QACvBA,OAA6B,IAAnBD,EAA4B,CAAC,SAAWA,EAClD4vB,EAAYjhH,EAAMihH,UAClBhvB,EAAUjyF,EAAMiyF,QAChBz5F,EAAWwH,EAAMxH,SACjBi5F,EAAkBzxF,EAAMyxF,gBACxBhpC,GAAa,QAAyBzoD,EAAO,IAC3Cm1D,EAAkB,aACpBC,GAAmB,QAAeD,EAAiB,GACnD2mH,EAAiB1mH,EAAiB,GAClC2mH,EAAoB3mH,EAAiB,GACnCs+F,EAAgB,YAAa1zJ,EAAQ9C,EAAU4+K,EAC/CzpF,EAAa,SAAa,MAC1B2pF,EAAa,SAAa,MAC1B/qG,EAAW,SAAa,MAC5B,sBAA0Bl2B,GAAK,WAC7B,OAAOs3C,EAAWjiG,OACpB,IACA,IAAI6rL,EAAsB,SAA6Bj3D,GACrD+2D,EAAkB/2D,GAClBvzB,SAAkEA,EAAgBuzB,EACpF,GH/Ca,SAA0BxqE,GACvC,IAAIt9C,EAAUs9C,EAAKt9C,QACjBm1F,EAAa73C,EAAK63C,WAClBZ,EAAkBj3C,EAAKi3C,gBACvBwvB,EAAYzmE,EAAKymE,UACjB+6D,EAAaxhI,EAAKwhI,WAChBE,EAAe,UAAa,GAC5BC,EAAgC,WAEhC,IAAI9rB,EAAqB+rB,EADvBl/K,IAE6C,QAA9CmzJ,EAAsBh+D,EAAWjiG,eAA6C,IAAxBigK,GAAkG,QAAvD+rB,EAAwB/rB,EAAoB3qG,aAA6C,IAA1B02H,GAA4CA,EAAsB7xL,KAAK8lK,GACxO5+D,SAAkEA,GAAgB,GAEtF,EACI4qF,EAAY,WACd,IAAIC,EACJ,QAAmD,QAA9CA,EAAsBN,EAAW5rL,eAA6C,IAAxBksL,IAAkCA,EAAoB52H,QAC/Gs2H,EAAW5rL,QAAQs1D,QACnBw2H,EAAa9rL,SAAU,EAChB,GAGX,EACI0mJ,EAAgB,SAAuBpjJ,GACzC,OAAQA,EAAMmiH,SACZ,KAAKgP,GACHs3D,IACA,MACF,KAAKr3D,GAED,IAAIy3D,GAAc,EACbL,EAAa9rL,UAChBmsL,EAAcF,KAEZE,EACF7oL,EAAM0B,iBAEN+mL,IAKV,EACA,aAAgB,WACd,OAAIj/K,GACFrR,OAAOwH,iBAAiB,UAAWyjJ,GAC/B71B,IAEF,EAAAlpD,GAAA,GAAIskH,EAAW,GAEV,WACLxwL,OAAO2H,oBAAoB,UAAWsjJ,GACtColC,EAAa9rL,SAAU,CACzB,GAEK,WACL8rL,EAAa9rL,SAAU,CACzB,CACF,GAAG,CAAC8M,GACN,CGXEs/K,CAAiB,CACft/K,QAASw2J,EACTrhE,WAAYphB,EACZwgB,gBAAiBwqF,EACjBh7D,UAAWA,EACX+6D,WAAYA,IAEd,IA8BM3hF,EARAoiF,EACFr6F,EAhBAs6F,EAAiB,WACnB,OAAoB,gBAAoB,GAAS,CAC/C3hI,IAAKihI,EACL/pF,QAASA,EACT7pC,UAAWA,EACX60B,MAAOA,GAEX,EAsBI6gD,EAA4B,eAAmBtlI,EAAU,CAC3D+D,UAAW,IAAkD,QAAtCq/K,EAAkBpjL,EAASwH,aAAuC,IAApB47K,OAA6B,EAASA,EAAgBr/K,UAAWm3J,IAPlIr5D,EAAgBr6F,EAAMq6F,mBACJj7E,IAAlBi7E,EACKA,EAEF,GAAGn+F,OAAOksD,EAAW,WAI5BrN,KAAK,SAAWviD,IAAY,SAAWy4E,EAAUz4E,EAASuiD,UAAO37B,IAE/Du9J,EAAoB37F,EAIxB,OAHK27F,IAAyD,IAApCrrF,EAAQz1F,QAAQ,iBACxC8gL,EAAoB,CAAC,UAEH,gBAAoB,IAAS,OAAS,CACxD16F,kBAAmB6L,GAClBrlC,EAAY,CACbL,UAAWA,EACXrN,IAAKs3C,EACLxQ,eAAgB,IAAWuP,GAAkB,OAAgB,CAAC,EAAG,GAAGl1F,OAAOksD,EAAW,eAAgB60B,IACtG6E,WAAY0P,EACZpuE,OAAQkuE,EACRvQ,WAAYA,EACZC,WAAY27F,EACZ56F,eAAgByD,EAChBtD,WAAYlF,EACZwF,oBAAqB9I,EACrB+I,eAAgBp0F,EAChB4yF,aAAcyyE,EACd30E,SArCI09F,EAA8Bz8K,EAAMy8K,4BACtCr6F,EAAapiF,EAAMoiF,YACjB,gCAAiCpiF,EAC5By8K,GAEDr6F,GAgCoC,WAAa,IACzDnE,MA5CuB,mBAAZgU,EACFyqF,EAEFA,IA0CPv7F,qBAAsB86F,EACtB55F,aA9DY,SAAiBx1F,GAC7B,IAAI+vL,EAAiB58K,EAAM48K,eAC3Bb,GAAkB,GACda,GACFA,EAAe/vL,EAEnB,EAyDE0xF,kBAAmBA,IACjBu/C,EACN,CACA,IC7HA,GD6H4B,aAAiB69C,IE7HlCkB,GAAyB,gBAAoB,MACjD,SAASC,GAAU5xG,EAAMiqC,GAC9B,YAAa/1F,IAAT8rD,EACK,KAEF,GAAGhvE,OAAOgvE,EAAM,KAAKhvE,OAAOi5G,EACrC,CAKO,SAAS4nE,GAAU5nE,GAExB,OAAO2nE,GADE,aAAiBD,IACL1nE,EACvB,CCbA,IAAI,GAAY,CAAC,WAAY,UAIlB6nE,GAA2B,gBAAoB,MAW3C,SAASC,GAA2BziI,GACjD,IAAIhiD,EAAWgiD,EAAKhiD,SAClByiJ,EAASzgG,EAAKygG,OACdpuE,GAAY,QAAyBryB,EAAM,IACzC1+B,EAAU,aAAiBkhK,IAC3BE,GAAqB,EAAAp3G,GAAA,IAAQ,WAC/B,OAhBJ,SAAoBtf,EAAQn1D,GAC1B,IAAI6N,GAAQ,QAAc,CAAC,EAAGsnD,GAO9B,OANArmD,OAAOopB,KAAKl4B,GAAQN,SAAQ,SAAUy4B,GACpC,IAAI1+B,EAAQuG,EAAOm4B,QACLpK,IAAVt0B,IACFoU,EAAMsqB,GAAO1+B,EAEjB,IACOoU,CACT,CAOWi+K,CAAWrhK,EAAS+wD,EAC7B,GAAG,CAAC/wD,EAAS+wD,IAAY,SAAU5uD,EAAMC,GACvC,QAAQ+8H,GAAWh9H,EAAK,KAAOC,EAAK,KAAO,EAAA3D,GAAA,GAAQ0D,EAAK,GAAIC,EAAK,IAAI,GACvE,IACA,OAAoB,gBAAoB8+J,GAAYrzH,SAAU,CAC5D7+D,MAAOoyL,GACN1kL,EACL,CC5BA,IAAI4kL,GAAY,GAILC,GAAmC,gBAAoB,MAC3D,SAASC,KACd,OAAO,aAAiBD,GAC1B,CAGO,IAAIE,GAAkC,gBAAoBH,IAC1D,SAASI,GAAYroE,GAC1B,IAAIsoE,EAAgB,aAAiBF,IACrC,OAAO,WAAc,WACnB,YAAoBn+J,IAAb+1F,EAAyB,GAAGj5G,QAAO,OAAmBuhL,GAAgB,CAACtoE,IAAasoE,CAC7F,GAAG,CAACA,EAAetoE,GACrB,CAIO,IAAIuoE,GAA+B,gBAAoB,MCpB9D,GADkC,gBAAoB,CAAC,GCCvD,SAASC,GAAUt0I,GACjB,IAAIu0I,EAAkBr0L,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,IAAmBA,UAAU,GACrF,GAAIywE,GAAU3wB,GAAO,CACnB,IAAIw0I,EAAWx0I,EAAKw0I,SAASt2K,cACzBu2K,EAEJ,CAAC,QAAS,SAAU,WAAY,UAAUhwL,SAAS+vL,IAEnDx0I,EAAK00I,mBAEQ,MAAbF,KAAsBx0I,EAAK0J,aAAa,QAGpCirI,EAAe30I,EAAK0J,aAAa,YACjCkrI,EAAcrzK,OAAOozK,GAGrBj1H,EAAW,KAWf,OAVIi1H,IAAiBpzK,OAAOC,MAAMozK,GAChCl1H,EAAWk1H,EACFH,GAAmC,OAAb/0H,IAC/BA,EAAW,GAIT+0H,GAAsBz0I,EAAKgf,WAC7BU,EAAW,MAEO,OAAbA,IAAsBA,GAAY,GAAK60H,GAAmB70H,EAAW,EAC9E,CACA,OAAO,CACT,CACO,SAASm1H,GAAiB70I,GAC/B,IAAIu0I,EAAkBr0L,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,IAAmBA,UAAU,GACjFslB,GAAM,OAAmBw6B,EAAK80I,iBAAiB,MAAMjlL,QAAO,SAAUT,GACxE,OAAOklL,GAAUllL,EAAOmlL,EAC1B,IAIA,OAHID,GAAUt0I,EAAMu0I,IAClB/uK,EAAIvQ,QAAQ+qC,GAEPx6B,CACT,CCnCA,IAAIuvK,GAAOtoE,GAAA,EAAQsoE,KACjBC,GAAQvoE,GAAA,EAAQuoE,MAChBn3B,GAAKpxC,GAAA,EAAQoxC,GACbC,GAAOrxC,GAAA,EAAQqxC,KACfpxC,GAAQD,GAAA,EAAQC,MAChB,GAAMD,GAAA,EAAQ+O,IACdy5D,GAAOxoE,GAAA,EAAQwoE,KACfC,GAAMzoE,GAAA,EAAQyoE,IACZC,GAAY,CAACt3B,GAAIC,GAAMi3B,GAAMC,IAkFjC,SAASI,GAAqB9sL,EAAW23B,GAEvC,OADW40J,GAAiBvsL,GAAW,GAC3BuH,QAAO,SAAUk3E,GAC3B,OAAO9mD,EAASmB,IAAI2lD,EACtB,GACF,CACA,SAASsuG,GAAoBC,EAAsBr1J,EAAUs1J,GAC3D,IAAI9yG,EAASviF,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,EAEjF,IAAKo1L,EACH,OAAO,KAIT,IAAIE,EAAoCJ,GAAqBE,EAAsBr1J,GAG/E7P,EAAQolK,EAAkCr1L,OAC1Cs1L,EAAaD,EAAkCh2G,WAAU,SAAUuH,GACrE,OAAOwuG,IAAqBxuG,CAC9B,IAaA,OAZItE,EAAS,GACS,IAAhBgzG,EACFA,EAAarlK,EAAQ,EAErBqlK,GAAc,EAEPhzG,EAAS,IAClBgzG,GAAc,GAKTD,EAHPC,GAAcA,EAAarlK,GAASA,EAItC,CACe,SAAS,GAAiBqqI,EAAMs1B,EAAWh6E,EAAO/iG,EAAI28D,EAAc+lH,EAASC,EAAYC,EAAkBC,EAA0BC,GAClJ,IAAIC,EAAS,WACTC,EAAY,WAChBA,EAAUjvL,QAAUgpL,EACpB,IAAIkG,EAAW,WACbvnH,GAAA,EAAI3pC,OAAOgxJ,EAAOhvL,QACpB,EAMA,OALA,aAAgB,WACd,OAAO,WACLkvL,GACF,CACF,GAAG,IACI,SAAUzyL,GACf,IAAIo6J,EAAQp6J,EAAEo6J,MACd,GAAI,GAAG/qJ,OAAOsiL,GAAW,CAACzoE,GAAO,GAAKuoE,GAAMC,KAAMzwL,SAASm5J,GAAQ,CAEjE,IAAI39H,EACAi2J,EACAC,EAGAC,EAAkB,WAapB,OAZAn2J,EAAW,IAAIgG,IACfiwJ,EAAc,IAAI73K,IAClB83K,EAAc,IAAI93K,IACPq3K,IACNhuL,SAAQ,SAAUy4B,GACrB,IAAIlxB,EAAUhF,SAASqyD,cAAc,kBAAkBzpD,OAAO4gL,GAAUzgL,EAAImtB,GAAM,OAC9ElxB,IACFgxB,EAASnvB,IAAI7B,GACbknL,EAAY30L,IAAIyN,EAASkxB,GACzB+1J,EAAY10L,IAAI2+B,EAAKlxB,GAEzB,IACOgxB,CACT,EACAm2J,IAGA,IACIb,EAzFV,SAAyBl8D,EAAep5F,GAEtC,IADA,IAAIl5B,EAAUsyH,GAAiBpvH,SAASovH,cACjCtyH,GAAS,CACd,GAAIk5B,EAASmB,IAAIr6B,GACf,OAAOA,EAETA,EAAUA,EAAQqoE,aACpB,CACA,OAAO,IACT,CAgF6BinH,CADHH,EAAY50L,IAAIyuL,GACkB9vJ,GAClDq2J,EAAeH,EAAY70L,IAAIi0L,GAC/BgB,EA9JV,SAAmB97B,EAAM+7B,EAAazgF,EAAO6nD,GAC3C,IAAI64B,EAASC,EAAaC,EAAWC,EACjChiK,EAAO,OACPC,EAAO,OACP1lB,EAAW,WACX+B,EAAS,SAGb,GAAa,WAATupJ,GAAqBmD,IAAUlxC,GACjC,MAAO,CACLmqE,eAAe,GAGnB,IAAI7wG,GAAUywG,EAAU,CAAC,GAAG,OAAgBA,EAAS54B,GAAIjpI,IAAO,OAAgB6hK,EAAS34B,GAAMjpI,GAAO4hK,GAClGK,GAAcJ,EAAc,CAAC,GAAG,OAAgBA,EAAa3B,GAAMh/E,EAAQlhF,EAAOD,IAAO,OAAgB8hK,EAAa1B,GAAOj/E,EAAQnhF,EAAOC,IAAO,OAAgB6hK,EAAa54B,GAAM3uJ,IAAW,OAAgBunL,EAAahqE,GAAOv9G,GAAWunL,GAChPK,GAAYJ,EAAY,CAAC,GAAG,OAAgBA,EAAW94B,GAAIjpI,IAAO,OAAgB+hK,EAAW74B,GAAMjpI,IAAO,OAAgB8hK,EAAWjqE,GAAOv9G,IAAW,OAAgBwnL,EAAW,GAAKzlL,IAAS,OAAgBylL,EAAW5B,GAAMh/E,EAAQ5mG,EAAW+B,IAAS,OAAgBylL,EAAW3B,GAAOj/E,EAAQ7kG,EAAS/B,GAAWwnL,GAU/T,OADsF,QAA1EC,EARE,CACZ5wG,OAAQA,EACR8wG,WAAYA,EACZC,SAAUA,EACVC,UAAWhxG,EACXixG,cAAeF,EACfG,YAAaH,GAEgB,GAAGlkL,OAAO4nJ,GAAM5nJ,OAAO2jL,EAAc,GAAK,eAAkC,IAAbI,OAAsB,EAASA,EAASh5B,IAEpI,KAAKhpI,EACH,MAAO,CACL6tD,QAAS,EACT00G,SAAS,GAEb,KAAKtiK,EACH,MAAO,CACL4tD,OAAQ,EACR00G,SAAS,GAEb,KAAKjmL,EACH,MAAO,CACLuxE,QAAS,EACT00G,SAAS,GAEb,KAAKhoL,EACH,MAAO,CACLszE,OAAQ,EACR00G,SAAS,GAEb,QACE,OAAO,KAEb,CA6GsBC,CAAU38B,EAAgD,IAA1Ck7B,EAAWW,GAAc,GAAMn2L,OAAc41G,EAAO6nD,GAGpF,IAAK24B,GAAa34B,IAAUq3B,IAAQr3B,IAAUs3B,GAC5C,QAIEC,GAAU1wL,SAASm5J,IAAU,CAACq3B,GAAMC,IAAKzwL,SAASm5J,KACpDp6J,EAAEuI,iBAEJ,IAAIsrL,EAAW,SAAkBC,GAC/B,GAAIA,EAAa,CACf,IAAIC,EAAqBD,EAGrBE,EAAOF,EAAYh7H,cAAc,KACjCk7H,SAAoCA,EAAK9tI,aAAa,UACxD6tI,EAAqBC,GAEvB,IAAIC,EAAYtB,EAAY70L,IAAIg2L,GAChC1B,EAAiB6B,GAOjBxB,IACAF,EAAOhvL,SAAU,EAAA2nE,GAAA,IAAI,WACfsnH,EAAUjvL,UAAY0wL,GACxBF,EAAmBl7H,OAEvB,GACF,CACF,EACA,GAAI,CAAC44H,GAAMC,IAAKzwL,SAASm5J,IAAU24B,EAAUY,UAAY5B,EAAkB,CAGzE,IAAID,EAQAoC,EAJFpC,EAHGC,GAA6B,WAAT96B,EApJjC,SAAyBxrJ,GAEvB,IADA,IAAIlI,EAAUkI,EACPlI,GAAS,CACd,GAAIA,EAAQ2iD,aAAa,kBACvB,OAAO3iD,EAETA,EAAUA,EAAQqoE,aACpB,CAIA,OAAO,IACT,CA2IiCuoH,CAAgBpC,GAFhB5lH,EAAa5oE,QAOtC,IAAI6wL,EAAoBxC,GAAqBE,EAAsBr1J,GAEjEy3J,EADE95B,IAAUq3B,GACI2C,EAAkB,GACzBh6B,IAAUs3B,GACH0C,EAAkBA,EAAkBz3L,OAAS,GAE7Ck1L,GAAoBC,EAAsBr1J,EAAUs1J,EAAkBgB,EAAU9zG,QAGlG40G,EAASK,EAGX,MAAO,GAAInB,EAAUM,cAEnBhB,EAAyBS,QAEpB,GAAIC,EAAU9zG,OAAS,EAC5BozG,EAAyBS,GAAc,GACvCL,IACAF,EAAOhvL,SAAU,EAAA2nE,GAAA,IAAI,WAEnB0nH,IACA,IAAIyB,EAAYtC,EAAiB7rI,aAAa,iBAI1CguI,EAAgBrC,GAHIprL,SAAS8C,eAAe8qL,GAGW53J,GAG3Do3J,EAASK,EACX,GAAG,QACE,GAAInB,EAAU9zG,OAAS,EAAG,CAC/B,IAAIq1G,EAAUnC,EAAWW,GAAc,GACnCyB,EAAYD,EAAQA,EAAQ33L,OAAS,GACrC63L,EAAoB9B,EAAY50L,IAAIy2L,GAGxClC,EAAyBkC,GAAW,GACpCV,EAASW,EACX,CACF,CAGAlC,SAAkEA,EAAgBtyL,EACpF,CACF,CCtQA,IAAIy0L,GAAa,yBACbC,GAAa,SAAoBJ,GACnC,OAAOA,EAAQnvK,KAAKsvK,GACtB,EAIWE,GAAe,eACX,SAASC,KACtB,IAAItsH,EAAkB,WAAe,CAAC,GAEpCusH,GADmB,QAAevsH,EAAiB,GACZ,GACrCwsH,GAAc,IAAA1oH,QAAO,IAAIvxD,KACzBk6K,GAAc,IAAA3oH,QAAO,IAAIvxD,KACzB4tD,EAAmB,WAAe,IACpCC,GAAmB,QAAeD,EAAkB,GACpDusH,EAAetsH,EAAiB,GAChCusH,EAAkBvsH,EAAiB,GACjCwsH,GAAY,IAAA9oH,QAAO,GACnB+oH,GAAa,IAAA/oH,SAAO,GAMpBgpH,GAAe,IAAAxhC,cAAY,SAAUj3H,EAAK23J,GAO5C,IAAIe,EAAgBX,GAAWJ,GAC/BS,EAAYxxL,QAAQvF,IAAIq3L,EAAe14J,GACvCm4J,EAAYvxL,QAAQvF,IAAI2+B,EAAK04J,GAC7BH,EAAU3xL,SAAW,EACrB,IC1CsBpH,ED0ClBqT,EAAK0lL,EAAU3xL,QC1CGpH,ED2CZ,WACJqT,IAAO0lL,EAAU3xL,UAjBlB4xL,EAAW5xL,SACdsxL,EAAoB,CAAC,GAmBvB,EC7CFnyJ,QAAQS,UAAUE,KAAKlnC,ED8CvB,GAAG,IACCm5L,GAAiB,IAAA1hC,cAAY,SAAUj3H,EAAK23J,GAC9C,IAAIe,EAAgBX,GAAWJ,GAC/BS,EAAYxxL,QAAQ4+B,OAAOkzJ,GAC3BP,EAAYvxL,QAAQ4+B,OAAOxF,EAC7B,GAAG,IACC44J,GAAsB,IAAA3hC,cAAY,SAAUl3H,GAC9Cu4J,EAAgBv4J,EAClB,GAAG,IACCy1J,GAAa,IAAAv+B,cAAY,SAAUtrC,EAAUktE,GAC/C,IAAIr+H,EAAW29H,EAAYvxL,QAAQzF,IAAIwqH,IAAa,GAChD5rF,EAAmBy6B,EAhDP/xC,MAAMqvK,IAoDtB,OAHIe,GAAmBR,EAAa/zL,SAASy7B,EAAK,KAChDA,EAAKjrB,QAAQkjL,IAERj4J,CACT,GAAG,CAACs4J,IACAS,GAAe,IAAA7hC,cAAY,SAAU8hC,EAAUptE,GACjD,OAAOotE,EAASl/H,MAAK,SAAUm/H,GAE7B,OADkBxD,EAAWwD,GAAS,GACnB10L,SAASqnH,EAC9B,GACF,GAAG,CAAC6pE,IAYAyD,GAAiB,IAAAhiC,cAAY,SAAUj3H,GACzC,IAAI04J,EAAgB,GAAGhmL,OAAOylL,EAAYvxL,QAAQzF,IAAI6+B,IAAMttB,OAAOolL,IAC/DiB,EAAW,IAAIjzJ,IAMnB,OALA,OAAmBsyJ,EAAYxxL,QAAQm5B,QAAQx4B,SAAQ,SAAUyxL,GAC3DA,EAAQt4G,WAAWg4G,IACrBK,EAASpoL,IAAIynL,EAAYxxL,QAAQzF,IAAI63L,GAEzC,IACOD,CACT,GAAG,IAMH,OALA,aAAgB,WACd,OAAO,WACLP,EAAW5xL,SAAU,CACvB,CACF,GAAG,IACI,CAEL6xL,aAAcA,EACdE,eAAgBA,EAChBC,oBAAqBA,EAErBE,aAAcA,EACdtD,WAAYA,EACZD,QAlCY,WACZ,IAAIx1J,GAAO,OAAmBo4J,EAAYvxL,QAAQm5B,QAIlD,OAHIs4J,EAAar4L,QACf+/B,EAAKrgC,KAAKs4L,IAELj4J,CACT,EA6BEk5J,eAAgBA,EAEpB,CEtGe,SAASC,GAAgBx5J,GACtC,IAAIy5J,EAAS,SAAaz5J,GAC1By5J,EAAOvyL,QAAU84B,EACjB,IAAIlgC,EAAW,eAAkB,WAE/B,IADA,IAAI45L,EACK1wI,EAAO3oD,UAAUC,OAAQH,EAAO,IAAI+/B,MAAM8oB,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E9oD,EAAK8oD,GAAQ5oD,UAAU4oD,GAEzB,OAA8C,QAAtCywI,EAAkBD,EAAOvyL,eAAyC,IAApBwyL,OAA6B,EAASA,EAAgBr4L,KAAKP,MAAM44L,EAAiB,CAACD,GAAQzmL,OAAO7S,GAC1J,GAAG,IACH,OAAO6/B,EAAOlgC,OAAWo2B,CAC3B,CCdA,IAAIyjK,GAAejgL,KAAK+qC,SAAS58B,QAAQ,GAAGxF,WAAWoE,MAAM,GACzDmzK,GAAa,ECFF,SAASC,GAAU5tE,EAAU9sD,EAAUE,EAAcC,GAClE,IAAIwT,EAAoB,aAAiBghH,IACvC5D,EAAYp9G,EAAkBo9G,UAC9B4J,EAAWhnH,EAAkBgnH,SAC7BC,EAAajnH,EAAkBinH,WAC7B14I,EAAM,CACR20E,OAAQk6D,IAAcjkE,GAoBxB,OAhBK9sD,IACH9d,EAAIge,aAAe,SAAU26H,GAC3B36H,SAA4DA,EAAa,CACvE/+B,IAAK2rF,EACL+tE,SAAUA,IAEZF,EAAS7tE,EACX,EACA5qE,EAAIie,aAAe,SAAU06H,GAC3B16H,SAA4DA,EAAa,CACvEh/B,IAAK2rF,EACL+tE,SAAUA,IAEZD,EAAW9tE,EACb,GAEK5qE,CACT,CC3Be,SAAS44I,GAAkBp2J,GACxC,IAAIivC,EAAoB,aAAiBghH,IACvCl5B,EAAO9nF,EAAkB8nF,KACzBlqC,EAAM59C,EAAkB49C,IACxBwpE,EAAepnH,EAAkBonH,aACnC,GAAa,WAATt/B,EACF,OAAO,KAGT,OAAOlqC,EAAM,CACXu7D,aAFQpoJ,EAEYq2J,GAClB,CACFlO,YAJQnoJ,EAIWq2J,EAEvB,CCde,SAASxzH,GAAKpV,GAC3B,IAAIqV,EAAOrV,EAAKqV,KACd7vD,EAAQw6C,EAAKx6C,MACbxH,EAAWgiD,EAAKhiD,SAQlB,OANoB,mBAATq3D,EACe,gBAAoBA,GAAM,QAAc,CAAC,EAAG7vD,IAGzD6vD,IAEMr3D,GAAY,IACjC,CCbA,IAAI,GAAY,CAAC,QAOV,SAAS6qL,GAAa7oI,GAC3B,IAAIp6C,EAAOo6C,EAAKp6C,KACdkjL,GAAW,QAAyB9oI,EAAM,IAO5C,OANAr6C,OAAOoxB,eAAe+xJ,EAAU,OAAQ,CACtC34L,IAAK,WAEH,OADA,UAAQ,EAAO,uHACRyV,CACT,IAEKkjL,CACT,CCTA,IAAI,GAAY,CAAC,QAAS,YAAa,cACrC,GAAa,CAAC,QAAS,YAAa,WAAY,UAAW,WAAY,WAAY,WAAY,OAAQ,eAAgB,eAAgB,UAAW,YAAa,WAC/J,GAAa,CAAC,UAmBZC,GAA8B,SAAUpsG,IAC1C,QAAUosG,EAAgBpsG,GAC1B,IAAI9sF,GAAS,QAAak5L,GAC1B,SAASA,IAEP,OADA,OAAgB56L,KAAM46L,GACfl5L,EAAOL,MAAMrB,KAAMY,UAC5B,CAuBA,OAtBA,QAAag6L,EAAgB,CAAC,CAC5B/5J,IAAK,SACL1+B,MAAO,WACL,IAAIs6D,EAAcz8D,KAAKqX,MACrB06C,EAAQ0K,EAAY1K,MACpB8oI,EAAYp+H,EAAYo+H,UACxBlsG,EAAalyB,EAAYkyB,WACzBzK,GAAY,QAAyBznB,EAAa,IAMhDkrC,GAAc,QAAKzjB,EAAW,CAAC,WAAY,iBAAkB,cAAe,iBAEhF,OADA,UAAS22G,EAAW,2EACA,gBAAoB,GAASxnC,MAAM,OAAS,CAAC,EAAGwnC,EAAW,CAC7E9oI,MAAwB,iBAAVA,EAAqBA,OAAQt7B,GAC1CkxE,EAAa,CACdv1C,IAAKu8B,IAET,KAEKisG,CACT,CA9BkC,CA8BhC,aAIEE,GAAgC,cAAiB,SAAUzjL,EAAO+6C,GACpE,IAAIiN,EACAvzD,EAAQuL,EAAMvL,MAChB8H,EAAYyD,EAAMzD,UAClB44G,EAAWn1G,EAAMm1G,SAEjB9sD,GADUroD,EAAM0jL,QACL1jL,EAAMqoD,UACjBkiH,EAAWvqK,EAAMuqK,SACjB/xK,EAAWwH,EAAMxH,SACjBwwD,EAAOhpD,EAAMgpD,KACbT,EAAevoD,EAAMuoD,aACrBC,EAAexoD,EAAMwoD,aACrBhD,EAAUxlD,EAAMwlD,QAChBM,EAAY9lD,EAAM8lD,UAClBu/F,EAAUrlJ,EAAMqlJ,QAChBx4E,GAAY,QAAyB7sE,EAAO,IAC1C2jL,EAAY5G,GAAU5nE,GACtBn5C,EAAoB,aAAiBghH,IACvC50H,EAAY4T,EAAkB5T,UAC9Bw7H,EAAc5nH,EAAkB4nH,YAChCC,EAAkB7nH,EAAkB3T,SACpCy7H,EAAmB9nH,EAAkB8nH,iBACrCC,EAAkB/nH,EAAkBuuG,SACpCyZ,EAAehoH,EAAkBgoH,aACjChB,EAAWhnH,EAAkBgnH,SAE7BiB,EADuB,aAAiB,IACKA,wBAC3Cj9E,EAAU,GAAG9qG,OAAOksD,EAAW,SAC/B87H,EAAoB,WACpB5sG,EAAa,WACb3R,EAAiBk+G,GAAmBx7H,EACpC87H,GAAe,SAAcppI,EAAKu8B,GAClC8sG,EAAgB5G,GAAYroE,GAQhC,IAAIkvE,EAAe,SAAsBx3L,GACvC,MAAO,CACL28B,IAAK2rF,EAELgsE,SAAS,OAAmBiD,GAAe7qK,UAC3CnZ,KAAM8jL,EAAkB9zL,QACxB8yL,SAAUr2L,EAEd,EAGIy3L,EAAiB/Z,GAAYwZ,EAG7BQ,EAAaxB,GAAU5tE,EAAUxvC,EAAgBpd,EAAcC,GACjE02D,EAASqlE,EAAWrlE,OACpBslE,GAAc,QAAyBD,EAAY,IAGjD9nB,EAAWunB,EAAal2L,SAASqnH,GAGjCsvE,EAAiBtB,GAAkBiB,EAAc56L,QAgCjDk7L,EAAkB,CAAC,EACJ,WAAf1kL,EAAMgpD,OACR07H,EAAgB,iBAAmBjoB,GAErC,IAAIhN,EAA0B,gBAAoB8zB,IAAgB,OAAS,CACzExoI,IAAKmpI,EACL5sG,WAAY6sG,EACZn7H,KAAe,OAATA,EAAgB,OAASA,GAAQ,WACvCD,SAAUV,EAAW,MAAQ,EAC7B,eAAgBy7H,GAAoBH,EAAY,KAAOA,GACtD92G,EAAW23G,EAAaE,EAAiB,CAC1Cv8H,UAAW,KACX,gBAAiBE,EACjB5zD,OAAO,SAAc,QAAc,CAAC,EAAGgwL,GAAiBhwL,GACxD8H,UAAW,IAAWyqG,GAAUh/C,EAAc,CAAC,GAAG,OAAgBA,EAAa,GAAG9rD,OAAO8qG,EAAS,WAAYkY,IAAS,OAAgBl3D,EAAa,GAAG9rD,OAAO8qG,EAAS,aAAcy1D,IAAW,OAAgBz0G,EAAa,GAAG9rD,OAAO8qG,EAAS,aAAcrhC,GAAiB3d,GAAczrD,GAC7RipD,QA5CoB,SAAyB34D,GAC7C,IAAI84E,EAAJ,CAGA,IAAI3nB,EAAOqmI,EAAax3L,GACxB24D,SAAkDA,EAAQ69H,GAAarlI,IACvE4lI,EAAY5lI,EAHZ,CAIF,EAsCE8H,UArCsB,SAA2Bj5D,GAEjD,GADAi5D,SAAsDA,EAAUj5D,GAC5DA,EAAEo6J,QAAUnxC,GAAA,EAAQC,MAAO,CAC7B,IAAI/3D,EAAOqmI,EAAax3L,GAGxB24D,SAAkDA,EAAQ69H,GAAarlI,IACvE4lI,EAAY5lI,EACd,CACF,EA6BEqnG,QAvBoB,SAAyBx4J,GAC7Cm2L,EAAS7tE,GACTkwC,SAAkDA,EAAQx4J,EAC5D,IAqBI2L,EAAuB,gBAAoBo3D,GAAM,CACnD5vD,OAAO,SAAc,QAAc,CAAC,EAAGA,GAAQ,CAAC,EAAG,CACjDu8J,WAAYE,IAEd5sG,KAAMy0H,KAOR,OALIL,IACFx0B,EAAaw0B,EAAwBx0B,EAAYzvJ,EAAO,CACtDy8J,SAAUA,KAGPhN,CACT,IACA,SAASk1B,GAAS3kL,EAAO+6C,GACvB,IAAIo6D,EAAWn1G,EAAMm1G,SAGjByvE,EAAUtH,KACVuH,EAAmBrH,GAAYroE,GAWnC,OARA,aAAgB,WACd,GAAIyvE,EAEF,OADAA,EAAQ3C,aAAa9sE,EAAU0vE,GACxB,WACLD,EAAQzC,eAAehtE,EAAU0vE,EACnC,CAEJ,GAAG,CAACA,IACAD,EACK,KAIW,gBAAoBnB,IAAkB,OAAS,CAAC,EAAGzjL,EAAO,CAC5E+6C,IAAKA,IAET,CACA,OAA4B,aAAiB4pI,ICpNzC,GAAY,CAAC,YAAa,YAI1BG,GAAsB,SAA6BtqI,EAAMO,GAC3D,IAAIx+C,EAAYi+C,EAAKj+C,UACnB/D,EAAWgiD,EAAKhiD,SAChBq0E,GAAY,QAAyBryB,EAAM,IACzCwhB,EAAoB,aAAiBghH,IACvC50H,EAAY4T,EAAkB5T,UAC9B07F,EAAO9nF,EAAkB8nF,KACzBlqC,EAAM59C,EAAkB49C,IAC1B,OAAoB,gBAAoB,MAAM,OAAS,CACrDr9G,UAAW,IAAW6rD,EAAWwxD,GAAO,GAAG19G,OAAOksD,EAAW,QAAS,GAAGlsD,OAAOksD,EAAW,QAAS,GAAGlsD,OAAOksD,EAAW,KAAKlsD,OAAgB,WAAT4nJ,EAAoB,SAAW,YAAavnJ,GACjLysD,KAAM,QACL6jB,EAAW,CACZ,kBAAkB,EAClB9xB,IAAKA,IACHviD,EACN,EACIusL,GAA2B,aAAiBD,IAChDC,GAAY/lI,YAAc,cAC1B,UCrBO,SAASgmI,GAAcxsL,EAAU2oL,GACtC,OAAO,QAAQ3oL,GAAUmhB,KAAI,SAAUlhB,EAAO9H,GAC5C,GAAkB,iBAAqB8H,GAAQ,CAC7C,IAAIwsL,EAAWC,EACX17J,EAAM/wB,EAAM+wB,IACZ2rF,EAA+H,QAAnH8vE,EAA6C,QAAhCC,EAAezsL,EAAMuH,aAAoC,IAAjBklL,OAA0B,EAASA,EAAa/vE,gBAAoC,IAAd8vE,EAAuBA,EAAYz7J,EAC/J2rF,UAEbA,EAAW,WAAWj5G,OAAO,GAAGA,QAAO,OAAmBilL,GAAU,CAACxwL,IAAQqhB,KAAK,OAEpF,IAAI4xE,EAAa,CACfp6D,IAAK2rF,EACLA,SAAUA,GAKZ,OAAoB,eAAmB18G,EAAOmrF,EAChD,CACA,OAAOnrF,CACT,GACF,CCxBA,IAAI,GAAqB,CACvBkxF,QAAS,EACTC,QAAS,GAEA,GAAa,CACtBpnF,QAAS,CACP6G,OAAQ,CAAC,KAAM,MACf4qC,SAAU,IAEZxxC,SAAU,CACR4G,OAAQ,CAAC,KAAM,MACf4qC,SAAU,IAEZvxC,WAAY,CACV2G,OAAQ,CAAC,KAAM,MACf4qC,SAAU,IAEZtxC,YAAa,CACX0G,OAAQ,CAAC,KAAM,MACf4qC,SAAU,IAEZ68C,QAAS,CACPznF,OAAQ,CAAC,KAAM,MACf4qC,SAAU,IAEZg9C,WAAY,CACV5nF,OAAQ,CAAC,KAAM,MACf4qC,SAAU,IAEZ88C,SAAU,CACR1nF,OAAQ,CAAC,KAAM,MACf4qC,SAAU,IAEZ+8C,YAAa,CACX3nF,OAAQ,CAAC,KAAM,MACf4qC,SAAU,KAGHkxI,GAAgB,CACzB3iL,QAAS,CACP6G,OAAQ,CAAC,KAAM,MACf4qC,SAAU,IAEZxxC,SAAU,CACR4G,OAAQ,CAAC,KAAM,MACf4qC,SAAU,IAEZvxC,WAAY,CACV2G,OAAQ,CAAC,KAAM,MACf4qC,SAAU,IAEZtxC,YAAa,CACX0G,OAAQ,CAAC,KAAM,MACf4qC,SAAU,IAEZ88C,SAAU,CACR1nF,OAAQ,CAAC,KAAM,MACf4qC,SAAU,IAEZ+8C,YAAa,CACX3nF,OAAQ,CAAC,KAAM,MACf4qC,SAAU,IAEZ68C,QAAS,CACPznF,OAAQ,CAAC,KAAM,MACf4qC,SAAU,IAEZg9C,WAAY,CACV5nF,OAAQ,CAAC,KAAM,MACf4qC,SAAU,KCrEP,SAAS,GAAU6vG,EAAMrqE,EAAQ2rG,GACtC,OAAI3rG,IAGA2rG,EACKA,EAAethC,IAASshC,EAAel4J,WADhD,EAIF,CCEA,IAAIm4J,GAAoB,CACtBlF,WAAY,aACZC,SAAU,WACV,gBAAiB,WACjB,iBAAkB,WAEL,SAASkF,GAAa9qI,GACnC,IAAI4N,EAAY5N,EAAK4N,UACnBlrD,EAAUs9C,EAAKt9C,QACf1E,EAAWgiD,EAAKhiD,SAChBylF,EAAQzjC,EAAKyjC,MACb4D,EAAiBrnC,EAAKqnC,eACtB0jG,EAAc/qI,EAAK+qI,YACnBl9H,EAAW7N,EAAK6N,SAChBy7F,EAAOtpG,EAAKspG,KACZryD,EAAkBj3C,EAAKi3C,gBACrBz1B,EAAoB,aAAiBghH,IACvCz+F,EAAoBviB,EAAkBuiB,kBACtCq7B,EAAM59C,EAAkB49C,IACxB4rE,EAAmBxpH,EAAkBwpH,iBACrCC,EAAoBzpH,EAAkBypH,kBACtCxjG,EAAoBjmB,EAAkBimB,kBACtCyjG,EAAuB1pH,EAAkB0pH,qBACzCC,EAAqB3pH,EAAkB2pH,mBACvChhH,EAAgB3I,EAAkB2I,cAClC8U,EAASzd,EAAkByd,OAC3B2rG,EAAiBppH,EAAkBopH,eACjCjwH,EAAkB,YAAe,GACnCC,GAAmB,QAAeD,EAAiB,GACnDywH,EAAexwH,EAAiB,GAChCywH,EAAkBzwH,EAAiB,GACjCowB,EAAYo0B,GAAM,SAAc,QAAc,CAAC,EAAGurE,IAAgBljG,IAAqB,SAAc,QAAc,CAAC,EAAG,IAAaA,GACpIF,EAAiBsjG,GAAkBvhC,GACnCgiC,EAAe,GAAUhiC,EAAMrqE,EAAQ2rG,GACvCW,EAAkB,SAAaD,GACtB,WAAThiC,IAKFiiC,EAAgB31L,QAAU01L,GAE5B,IAAIE,GAAe,SAAc,QAAc,CAAC,EAAGD,EAAgB31L,SAAU,CAAC,EAAG,CAC/E6vF,gBAAiB,GAAG/jF,OAAOksD,EAAW,WACtCkT,eAAe,EACfnD,cAAc,IAIZ8tH,EAAa,WASjB,OARA,aAAgB,WAId,OAHAA,EAAW71L,SAAU,EAAA2nE,GAAA,IAAI,WACvB8tH,EAAgB3oL,EAClB,IACO,WACL66D,GAAA,EAAI3pC,OAAO63J,EAAW71L,QACxB,CACF,GAAG,CAAC8M,IACgB,gBAAoB,GAAS,CAC/CkrD,UAAWA,EACXy5B,eAAgB,IAAW,GAAG3lF,OAAOksD,EAAW,WAAW,OAAgB,CAAC,EAAG,GAAGlsD,OAAOksD,EAAW,QAASwxD,GAAM/3B,EAAgBld,GACnIoa,QAAkB,eAAT+kE,EAAwB,WAAa,KAC9CvlE,kBAAmBA,EACnB0D,kBAAmBuD,EACnBzD,eAAgBA,EAChBd,aAAc2kG,EACd3nG,MAAOA,EACPiE,WAAYqjG,GAAe,CACzBz5G,OAAQy5G,GAEVniK,OAAQilC,EAAW,GAAK,CAACq9H,GACzBrkG,gBAAiBmkG,EACjBjkG,gBAAiBkkG,EACjBtkG,qBAAsBsQ,EACtBnT,YAAaqnG,EACbpjG,YAAayjG,GACZxtL,EACL,CC/Ee,SAAS0tL,GAAkB1rI,GACxC,IAAIn+C,EAAKm+C,EAAKn+C,GACZomD,EAAOjI,EAAKiI,KACZ0+H,EAAU3mI,EAAK2mI,QACf3oL,EAAWgiD,EAAKhiD,SACd2tL,EAAY,SACZnqH,EAAoB,aAAiBghH,IACvC50H,EAAY4T,EAAkB5T,UAC9Bu9H,EAAqB3pH,EAAkB2pH,mBACvClsG,EAASzd,EAAkByd,OAC3B2rG,EAAiBppH,EAAkBopH,eACnCthC,EAAO9nF,EAAkB8nF,KAGvBsiC,EAAc,UAAa,GAC/BA,EAAYh2L,QAAU0zJ,IAASqiC,EAI/B,IAAIhxH,EAAkB,YAAgBixH,EAAYh2L,SAChDglE,GAAmB,QAAeD,EAAiB,GACnDpqE,EAAUqqE,EAAiB,GAC3BixH,EAAajxH,EAAiB,GAC5BkvB,IAAa8hG,EAAYh2L,SAAUqyD,EAIvC,aAAgB,WACV2jI,EAAYh2L,SACdi2L,GAAW,EAEf,GAAG,CAACviC,IAGJ,IAAIkiC,GAAe,QAAc,CAAC,EAAG,GAAUG,EAAW1sG,EAAQ2rG,IAG9DjE,EAAQ33L,OAAS,IACnBw8L,EAAa7tH,cAAe,GAI9B,IAAImuH,EAAyBN,EAAa7nG,iBAO1C,OANA6nG,EAAa7nG,iBAAmB,SAAU6mC,GAIxC,OAHKohE,EAAYh2L,SAAY40H,GAC3BqhE,GAAW,GAENC,aAAuE,EAASA,EAAuBthE,EAChH,EACIj6H,EACK,KAEW,gBAAoB,GAAqB,CAC3D+4J,KAAMqiC,EACNlrC,QAASmrC,EAAYh2L,SACP,gBAAoB,OAAW,OAAS,CACtD8M,QAASonF,GACR0hG,EAAc,CACf1nG,YAAaqnG,EACbrqH,eAAe,EACf2kB,gBAAiB,GAAG/jF,OAAOksD,EAAW,cACpC,SAAUzB,GACZ,IAAI+R,EAAkB/R,EAAMpqD,UAC1Bu/D,EAAcnV,EAAMlyD,MACtB,OAAoB,gBAAoB,GAAa,CACnD4H,GAAIA,EACJE,UAAWm8D,EACXjkE,MAAOqnE,GACNtjE,EACL,IACF,CCzEA,IAAI,GAAY,CAAC,QAAS,YAAa,QAAS,WAAY,UAAW,WAAY,qBAAsB,WAAY,WAAY,aAAc,iBAAkB,cAAe,UAAW,eAAgB,eAAgB,eAAgB,oBAAqB,qBAC9P,GAAa,CAAC,UAkBZ+tL,GAAkB,SAAyBvmL,GAC7C,IAAIgoD,EACAvzD,EAAQuL,EAAMvL,MAChB8H,EAAYyD,EAAMzD,UAClBm+C,EAAQ16C,EAAM06C,MACdy6D,EAAWn1G,EAAMm1G,SAEjB9sD,GADUroD,EAAM0jL,QACL1jL,EAAMqoD,UACjBm+H,EAAqBxmL,EAAMwmL,mBAC3BhuL,EAAWwH,EAAMxH,SACjB+xK,EAAWvqK,EAAMuqK,SACjBkc,EAAazmL,EAAMymL,WACnB5kG,EAAiB7hF,EAAM6hF,eACvB0jG,EAAcvlL,EAAMulL,YACpB//H,EAAUxlD,EAAMwlD,QAChB+C,EAAevoD,EAAMuoD,aACrBC,EAAexoD,EAAMwoD,aACrBk+H,EAAe1mL,EAAM0mL,aACrBC,EAAoB3mL,EAAM2mL,kBAC1BC,EAAoB5mL,EAAM4mL,kBAC1B/5G,GAAY,QAAyB7sE,EAAO,IAC1C2jL,EAAY5G,GAAU5nE,GACtBn5C,EAAoB,aAAiBghH,IACvC50H,EAAY4T,EAAkB5T,UAC9B07F,EAAO9nF,EAAkB8nF,KACzB+iC,EAAW7qH,EAAkB6qH,SAC7BhD,EAAkB7nH,EAAkB3T,SACpCy7H,EAAmB9nH,EAAkB8nH,iBACrC1K,EAAYp9G,EAAkBo9G,UAC9B4K,EAAehoH,EAAkBgoH,aACjCD,EAAkB/nH,EAAkBuuG,SACpCuc,EAAoB9qH,EAAkByqH,WACtC7C,EAAc5nH,EAAkB4nH,YAChC3nF,EAAejgC,EAAkBigC,aACjC+mF,EAAWhnH,EAAkBgnH,SAE7B+D,EADuB,aAAiB,IACQA,2BAEhDzE,EADuB,aAAiB5E,IACN4E,aAChCJ,EAAgB1E,KAChBwJ,EAAmB,GAAG9qL,OAAOksD,EAAW,YACxCud,EAAiBk+G,GAAmBx7H,EACpCivB,EAAa,WACbuyE,EAAW,WAQf,IAAIy6B,EAAiB/Z,GAAYwZ,EAC7BkD,EAAmBR,GAAcK,EAGjCvsE,EAAassE,EAAS/4L,SAASqnH,GAC/B1yD,GAAQqhI,GAAoBvpE,EAG5B2sE,EAAmB5E,EAAa0B,EAAc7uE,GAG9CovE,EAAaxB,GAAU5tE,EAAUxvC,EAAgBghH,EAAmBC,GACtE1nE,EAASqlE,EAAWrlE,OACpBslE,GAAc,QAAyBD,EAAY,IAGjDpvH,EAAkB,YAAe,GACnCC,IAAmB,QAAeD,EAAiB,GACnDgyH,GAAiB/xH,GAAiB,GAClCgyH,GAAoBhyH,GAAiB,GACnCiyH,GAAwB,SAA+BC,GACpD3hH,GACHyhH,GAAkBE,EAEtB,EAeIC,GAAe,WAAc,WAC/B,OAAIroE,GAGS,WAAT4kC,IACKqjC,IAAkB7E,EAAa,CAAClJ,GAAYjkE,GAGvD,GAAG,CAAC2uC,EAAM5kC,EAAQk6D,EAAW+N,GAAgBhyE,EAAUmtE,IAGnDmC,GAAiBtB,GAAkBjB,EAAc14L,QAqBjDg+L,GAAoB9E,IAAgB,SAAU1kI,GAChDwH,SAAkDA,EAAQ69H,GAAarlI,IACvE4lI,EAAY5lI,EACd,IAkBIypI,GAAU9D,GAAa,GAAGznL,OAAOynL,EAAW,UAG5C+D,GAAyB,gBAAoB,OAAO,OAAS,CAC/D1+H,KAAM,WACNv0D,MAAOgwL,GACPloL,UAAW,GAAGL,OAAO8qL,EAAkB,UACvCj+H,SAAU4c,EAAiB,MAAQ,EACnC5qB,IAAKu8B,EACL58B,MAAwB,iBAAVA,EAAqBA,EAAQ,KAC3C,eAAgBopI,GAAoBH,EAAY,KAAOA,EACvD,gBAAiBlhI,EACjB,iBAAiB,EACjB,gBAAiBglI,GACjB,gBAAiB9hH,EACjBngB,QArDyB,SAA8B34D,GAEnD84E,IAGJ+gH,SAA4DA,EAAa,CACvEl9J,IAAK2rF,EACL+tE,SAAUr2L,IAIC,WAATi3J,GACF7nD,EAAakZ,GAAWoF,GAE5B,EAwCE8qC,QArBoB,WACpB29B,EAAS7tE,EACX,GAoBGqvE,GAAc9pI,EAAoB,gBAAoBkV,GAAM,CAC7DC,KAAe,eAATi0F,EAAwBmjC,EAAmB,KACjDjnL,OAAO,SAAc,QAAc,CAAC,EAAGA,GAAQ,CAAC,EAAG,CACjD2nL,OAAQllI,EAERmlI,WAAW,KAEC,gBAAoB,IAAK,CACvCrrL,UAAW,GAAGL,OAAO8qL,EAAkB,cAIrCa,GAAiB,SAAa/jC,GAMlC,GALa,WAATA,GAAqBo+B,EAAc14L,OAAS,EAC9Cq+L,GAAez3L,QAAU,WAEzBy3L,GAAez3L,QAAU0zJ,GAEtBggC,EAAkB,CACrB,IAAIgE,GAAcD,GAAez3L,QAIjCs3L,GAAyB,gBAAoBpC,GAAc,CACzDxhC,KAAMgkC,GACN1/H,UAAW4+H,EACX9pL,SAAUspL,GAAsB/jI,GAAiB,WAATqhG,EACxCjiE,eAAgBA,EAChB0jG,YAAaA,EACbtnG,MAAoB,gBAAoB,GAEtC,CACA6lE,KAAsB,eAAhBgkC,GAA+B,WAAaA,IACpC,gBAAoB,GAAa,CAC/CzrL,GAAIorL,GACJ1sI,IAAK8uG,GACJrxJ,IACH6vD,SAAUsd,EACV8rB,gBAtEuB,SAA8BuzB,GAC1C,WAAT8+B,GACF7nD,EAAakZ,EAAU6P,EAE3B,GAmEK0iE,GACL,CAGA,IAAIK,GAAwB,gBAAoB,GAAS/rC,MAAM,OAAS,CACtEhzF,KAAM,QACL6jB,EAAW,CACZ1kB,UAAW,KACX1zD,MAAOA,EACP8H,UAAW,IAAWyqL,EAAkB,GAAG9qL,OAAO8qL,EAAkB,KAAK9qL,OAAO4nJ,GAAOvnJ,GAAYyrD,EAAc,CAAC,GAAG,OAAgBA,EAAa,GAAG9rD,OAAO8qL,EAAkB,SAAUvkI,IAAO,OAAgBuF,EAAa,GAAG9rD,OAAO8qL,EAAkB,WAAYO,KAAe,OAAgBv/H,EAAa,GAAG9rD,OAAO8qL,EAAkB,aAAcE,IAAmB,OAAgBl/H,EAAa,GAAG9rD,OAAO8qL,EAAkB,aAAcrhH,GAAiB3d,IACrcO,aArIyB,SAA8B26H,GACvDmE,IAAsB,GACtB9+H,SAA4DA,EAAa,CACvE/+B,IAAK2rF,EACL+tE,SAAUA,GAEd,EAgIE16H,aA/HyB,SAA8B06H,GACvDmE,IAAsB,GACtB7+H,SAA4DA,EAAa,CACvEh/B,IAAK2rF,EACL+tE,SAAUA,GAEd,IA0HIwE,IAAY5D,GAAiC,gBAAoBoC,GAAmB,CACtF7pL,GAAIorL,GACJhlI,KAAMA,EACN0+H,QAASe,GACR1pL,IAWH,OAVIuuL,IACFgB,GAAWhB,EAA2BgB,GAAU/nL,EAAO,CACrDy8J,SAAUyqB,EACVhoE,OAAQqoE,GACR9kI,KAAMA,EACN4F,SAAUsd,KAKM,gBAAoB,GAAqB,CAC3Di+G,YAAa4D,GACb1jC,KAAe,eAATA,EAAwB,WAAaA,EAC3CymB,SAAU+Z,EACVmC,WAAYQ,GACXc,GACL,EACe,SAASC,GAAQhoL,GAC9B,IAiBIyvJ,EAjBAt6C,EAAWn1G,EAAMm1G,SACnB38G,EAAWwH,EAAMxH,SACfqsL,EAAmBrH,GAAYroE,GAC/Bx4C,EAAYqoH,GAAcxsL,EAAUqsL,GAGpCD,EAAUtH,KAmBd,OAhBA,aAAgB,WACd,GAAIsH,EAEF,OADAA,EAAQ3C,aAAa9sE,EAAU0vE,GACxB,WACLD,EAAQzC,eAAehtE,EAAU0vE,EACnC,CAEJ,GAAG,CAACA,IAKFp1B,EADEm1B,EACWjoH,EAEa,gBAAoB4pH,GAAiBvmL,EAAO28D,GAEpD,gBAAoB4gH,GAAmB5zH,SAAU,CACnE7+D,MAAO+5L,GACNp1B,EACL,CC5RA,IAAI,GAAY,CAAC,YAAa,QAAS,WAAY,YACjD,GAAa,CAAC,YAOZw4B,GAAwB,SAA+BztI,GACzD,IAAIj+C,EAAYi+C,EAAKj+C,UACnBm+C,EAAQF,EAAKE,MAEbliD,GADWgiD,EAAK26D,SACL36D,EAAKhiD,UAChBq0E,GAAY,QAAyBryB,EAAM,IAE3C4N,EADsB,aAAiB40H,IACT50H,UAC5B8/H,EAAiB,GAAGhsL,OAAOksD,EAAW,eAC1C,OAAoB,gBAAoB,MAAM,OAAS,CACrDY,KAAM,gBACL6jB,EAAW,CACZrnB,QAAS,SAAiB34D,GACxB,OAAOA,EAAEye,iBACX,EACA/O,UAAW,IAAW2rL,EAAgB3rL,KACvB,gBAAoB,MAAO,CAC1CysD,KAAM,eACNzsD,UAAW,GAAGL,OAAOgsL,EAAgB,UACrCxtI,MAAwB,iBAAVA,EAAqBA,OAAQt7B,GAC1Cs7B,GAAqB,gBAAoB,KAAM,CAChDsO,KAAM,QACNzsD,UAAW,GAAGL,OAAOgsL,EAAgB,UACpC1vL,GACL,EACe,SAAS2vL,GAAcxhI,GACpC,IAAInuD,EAAWmuD,EAAMnuD,SACnBwH,GAAQ,QAAyB2mD,EAAO,IAEtCgW,EAAYqoH,GAAcxsL,EADPglL,GAAYx9K,EAAMm1G,WAGzC,OADcmoE,KAEL3gH,EAEW,gBAAoBsrH,IAAuB,QAAKjoL,EAAO,CAAC,YAAa28D,EAC3F,CCzCe,SAASyrH,GAAQ5tI,GAC9B,IAAIj+C,EAAYi+C,EAAKj+C,UACnB9H,EAAQ+lD,EAAK/lD,MAEb2zD,EADsB,aAAiB40H,IACT50H,UAEhC,OADck1H,KAEL,KAEW,gBAAoB,KAAM,CAC5C/gL,UAAW,IAAW,GAAGL,OAAOksD,EAAW,iBAAkB7rD,GAC7D9H,MAAOA,GAEX,CCdA,IAAI,GAAY,CAAC,QAAS,WAAY,MAAO,QAO7C,SAAS4zL,GAAoBh+E,GAC3B,OAAQA,GAAQ,IAAI1wF,KAAI,SAAUk8H,EAAKllJ,GACrC,GAAIklJ,GAAwB,YAAjB,QAAQA,GAAmB,CACpC,IAAIr7F,EAAOq7F,EACTtgG,EAAQiF,EAAKjF,MACb/8C,EAAWgiD,EAAKhiD,SAChBgxB,EAAMgxB,EAAKhxB,IACXl4B,EAAOkpD,EAAKlpD,KACZu7E,GAAY,QAAyBryB,EAAM,IACzCkgE,EAAYlxF,QAAiCA,EAAM,OAAOttB,OAAOvL,GAGrE,OAAI6H,GAAqB,UAATlH,EACD,UAATA,EAEkB,gBAAoB62L,IAAe,OAAS,CAC9D3+J,IAAKkxF,GACJ7tC,EAAW,CACZnyB,MAAOnF,IACL8yI,GAAoB7vL,IAIN,gBAAoBwvL,IAAS,OAAS,CACxDx+J,IAAKkxF,GACJ7tC,EAAW,CACZnyB,MAAOnF,IACL8yI,GAAoB7vL,IAIb,YAATlH,EACkB,gBAAoB82L,IAAS,OAAS,CACxD5+J,IAAKkxF,GACJ7tC,IAEe,gBAAoB,IAAU,OAAS,CACzDrjD,IAAKkxF,GACJ7tC,GAAYt3B,EACjB,CACA,OAAO,IACT,IAAGr8C,QAAO,SAAU28I,GAClB,OAAOA,CACT,GACF,CACO,SAASyyC,GAAW9vL,EAAUs2C,EAAOqyI,GAC1C,IAAIoH,EAAa/vL,EAIjB,OAHIs2C,IACFy5I,EAAaF,GAAoBv5I,IAE5Bk2I,GAAcuD,EAAYpH,EACnC,CCvDA,IAAI,GAAY,CAAC,YAAa,gBAAiB,QAAS,YAAa,WAAY,QAAS,WAAY,YAAa,KAAM,OAAQ,kBAAmB,WAAY,mBAAoB,mBAAoB,oBAAqB,qBAAsB,kBAAmB,WAAY,YAAa,qBAAsB,aAAc,WAAY,sBAAuB,eAAgB,WAAY,aAAc,eAAgB,SAAU,iBAAkB,uBAAwB,oBAAqB,WAAY,aAAc,sBAAuB,oCAAqC,oBAAqB,UAAW,eAAgB,YAAa,gBAAiB,qBAAsB,0BAA2B,8BAoC1rB,GAAa,GACbqH,GAAoB,cAAiB,SAAUxoL,EAAO+6C,GACxD,IAAI0tI,EAAazgI,EACbxN,EAAOx6C,EACT0oL,EAAiBluI,EAAK4N,UACtBA,OAA+B,IAAnBsgI,EAA4B,UAAYA,EACpD/jH,EAAgBnqB,EAAKmqB,cACrBlwE,EAAQ+lD,EAAK/lD,MACb8H,EAAYi+C,EAAKj+C,UACjBosL,EAAgBnuI,EAAKuO,SACrBA,OAA6B,IAAlB4/H,EAA2B,EAAIA,EAC1C75I,EAAQ0L,EAAK1L,MACbt2C,EAAWgiD,EAAKhiD,SAChBirB,EAAY+2B,EAAK/2B,UACjBpnB,EAAKm+C,EAAKn+C,GACVusL,EAAYpuI,EAAKspG,KACjBA,OAAqB,IAAd8kC,EAAuB,WAAaA,EAC3CC,EAAkBruI,EAAKquI,gBACvBxgI,EAAW7N,EAAK6N,SAChBygI,EAAmBtuI,EAAKsuI,iBACxBC,EAAwBvuI,EAAKgrI,iBAC7BA,OAA6C,IAA1BuD,EAAmC,GAAMA,EAC5DC,EAAwBxuI,EAAKirI,kBAC7BA,OAA8C,IAA1BuD,EAAmC,GAAMA,EAC7DrD,EAAqBnrI,EAAKmrI,mBAC1BsD,EAAkBzuI,EAAKyuI,gBACvBpC,EAAWrsI,EAAKqsI,SAChBzN,EAAY5+H,EAAK4+H,UACjB8P,EAAqB1uI,EAAK0uI,mBAC1BC,EAAkB3uI,EAAK4uI,WACvBA,OAAiC,IAApBD,GAAoCA,EACjDE,EAAgB7uI,EAAKwL,SACrBA,OAA6B,IAAlBqjI,GAAmCA,EAC9CC,EAAsB9uI,EAAK8uI,oBAC3BtF,EAAexpI,EAAKwpI,aACpBxoB,EAAWhhH,EAAKghH,SAChBsC,EAAatjH,EAAKsjH,WAClByrB,EAAoB/uI,EAAK4oI,aACzBA,OAAqC,IAAtBmG,EAA+B,GAAKA,EACnD9vG,EAASj/B,EAAKi/B,OACd2rG,EAAiB5qI,EAAK4qI,eACtBoE,EAAwBhvI,EAAKkrI,qBAC7BA,OAAiD,IAA1B8D,EAAmC,QAAUA,EACpEvnG,EAAoBznC,EAAKynC,kBACzBsoF,EAAW/vH,EAAK+vH,SAChBkc,EAAajsI,EAAKisI,WAClBgD,EAAwBjvI,EAAKkvI,oBAC7BA,OAAgD,IAA1BD,EAAmC,MAAQA,EACjEE,GAAoCnvI,EAAKmvI,kCACzCprG,GAAoB/jC,EAAK+jC,kBACzB/4B,GAAUhL,EAAKgL,QACfy2C,GAAezhD,EAAKyhD,aACpBn2C,GAAYtL,EAAKsL,UAGjBm+H,IAFgBzpI,EAAKovI,cACApvI,EAAKqvI,mBACArvI,EAAKypI,yBAC/B8C,GAA6BvsI,EAAKusI,2BAClCl6G,IAAY,QAAyBryB,EAAM,IACzCmiB,GAAY,WAAc,WAC5B,OAAO2rH,GAAW9vL,EAAUs2C,EAAO,GACrC,GAAG,CAACt2C,EAAUs2C,IACVqmB,GAAkB,YAAe,GACnCC,IAAmB,QAAeD,GAAiB,GACnD68D,GAAU58D,GAAiB,GAC3B00H,GAAa10H,GAAiB,GAC5B4D,GAAe,WACfkS,GhBvGS,SAAiB7uE,GAC9B,IAAIy+F,GAAkB,EAAAC,GAAA,GAAe1+F,EAAI,CACrCvR,MAAOuR,IAET4+F,GAAmB,QAAeH,EAAiB,GACnD5vB,EAAO+vB,EAAiB,GACxB8uF,EAAU9uF,EAAiB,GAM7B,OALA,aAAgB,WACd6nF,IAAc,EACd,IAAI9vI,EAAmD,GAAG92C,OAAO2mL,GAAc,KAAK3mL,OAAO4mL,IAC3FiH,EAAQ,gBAAgB7tL,OAAO82C,GACjC,GAAG,IACIk4B,CACT,CgB0Fa8+G,CAAQ3tL,GACf+iG,GAAsB,QAAd37E,EAQZ,IAAIq3E,IAAkB,EAAAC,GAAA,GAAekuF,EAAiB,CAClDn+L,MAAO+7L,EACPz8E,UAAW,SAAmB7gF,GAC5B,OAAOA,GAAQ,EACjB,IAEF0xE,IAAmB,QAAeH,GAAiB,GACnDmvF,GAAiBhvF,GAAiB,GAClCivF,GAAoBjvF,GAAiB,GAInCkvF,GAAkB,SAAyB5gK,GAE7C,SAAS6gK,IACPF,GAAkB3gK,GAClB0yE,UAA4DA,GAAa1yE,EAC3E,CAJiBhgC,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,IAAmBA,UAAU,IAM9E,KAAAo7F,WAAUylG,GAEVA,GAEJ,EAGI90H,GAAmB,WAAe20H,IACpC10H,IAAmB,QAAeD,GAAkB,GACpD+0H,GAAsB90H,GAAiB,GACvC+0H,GAAyB/0H,GAAiB,GACxCwoE,GAAW,UAAa,GAGxBg6B,GAAiB,WAAc,WAC/B,MAAc,WAATjU,GAA8B,aAATA,IAAwB+kC,EAG3C,CAAC/kC,GAAM,GAFL,CAAC,WAAY+kC,EAGxB,GAAG,CAAC/kC,EAAM+kC,IACV0B,IAAkB,QAAexyB,GAAgB,GACjDyyB,GAAaD,GAAgB,GAC7BE,GAAwBF,GAAgB,GACtCG,GAA8B,WAAfF,GACf90H,GAAmB,WAAe80H,IACpC70H,IAAmB,QAAeD,GAAkB,GACpDi1H,GAAeh1H,GAAiB,GAChCi1H,GAAkBj1H,GAAiB,GACjCE,GAAmB,WAAe40H,IACpC30H,IAAmB,QAAeD,GAAkB,GACpDg1H,GAA0B/0H,GAAiB,GAC3Cg1H,GAA6Bh1H,GAAiB,GAChD,aAAgB,WACd80H,GAAgBJ,IAChBM,GAA2BL,IACtB1sD,GAAS3tI,UAIVs6L,GACFR,GAAkBG,IAGlBF,GAAgB,IAEpB,GAAG,CAACK,GAAYC,KAGhB,IAAIz0H,GAAmB,WAAe,GACpCC,IAAoB,QAAeD,GAAkB,GACrD+0H,GAAmB90H,GAAkB,GACrC+0H,GAAsB/0H,GAAkB,GACtCg1H,GAAaF,IAAoBpuH,GAAUnzE,OAAS,GAAsB,eAAjBmhM,IAAiC7B,EAG9F,aAAgB,WACV4B,IACFJ,GAAuBL,GAE3B,GAAG,CAACA,KACJ,aAAgB,WAEd,OADAlsD,GAAS3tI,SAAU,EACZ,WACL2tI,GAAS3tI,SAAU,CACrB,CACF,GAAG,IAGH,IAAI86L,GAAiBzJ,KACnBQ,GAAeiJ,GAAejJ,aAC9BE,GAAiB+I,GAAe/I,eAChCC,GAAsB8I,GAAe9I,oBACrCE,GAAe4I,GAAe5I,aAC9BtD,GAAakM,GAAelM,WAC5BD,GAAUmM,GAAenM,QACzB0D,GAAiByI,GAAezI,eAC9B0I,GAAsB,WAAc,WACtC,MAAO,CACLlJ,aAAcA,GACdE,eAAgBA,GAEpB,GAAG,CAACF,GAAcE,KACdiJ,GAAkB,WAAc,WAClC,MAAO,CACL9I,aAAcA,GAElB,GAAG,CAACA,KACJ,aAAgB,WACdF,GAAoB6I,GAAa,GAAatuH,GAAUhtD,MAAMo7K,GAAmB,GAAGpxK,KAAI,SAAUlhB,GAChG,OAAOA,EAAM+wB,GACf,IACF,GAAG,CAACuhK,GAAkBE,KAGtB,IAAIrrB,IAAmB,EAAA7kE,GAAA,GAAeq+E,GAAa8P,IAAwD,QAAhCT,EAAc9rH,GAAU,UAAgC,IAAhB8rH,OAAyB,EAASA,EAAYj/J,KAAM,CACnK1+B,MAAOsuL,IAETvZ,IAAmB,QAAeD,GAAkB,GACpDyrB,GAAkBxrB,GAAiB,GACnCyrB,GAAqBzrB,GAAiB,GACpCmjB,GAAWN,IAAgB,SAAUl5J,GACvC8hK,GAAmB9hK,EACrB,IACIy5J,GAAaP,IAAgB,WAC/B4I,QAAmBlsK,EACrB,KACA,IAAAkzE,qBAAoBv3C,GAAK,WACvB,MAAO,CACLsvD,KAAMrxC,GAAa5oE,QACnBs1D,MAAO,SAAe53B,GACpB,IAAIy9J,EAKE58B,EAAuB68B,EAAwBC,EAJjDC,EAAiBL,SAAyDA,GAEtE,QAFyFE,EAAkB5uH,GAAUxgE,MAAK,SAAUktC,GAC1I,OAAQA,EAAKrpC,MAAMqoD,QACrB,WAAoC,IAApBkjI,OAA6B,EAASA,EAAgB/hK,IAClEkiK,IAEiD,QAAlD/8B,EAAwB31F,GAAa5oE,eAA+C,IAA1Bu+J,GAAkL,QAArI68B,EAAyB78B,EAAsBhpG,cAAc,oBAAoBzpD,OAAO4gL,GAAU5xG,GAAMwgH,GAAiB,cAA+C,IAA3BF,GAAyG,QAA3DC,EAAyBD,EAAuB9lI,aAA8C,IAA3B+lI,GAA6CA,EAAuBlhM,KAAKihM,EAAwB19J,GAE3c,EAEJ,IAIA,IAAI69J,IAAmB,EAAA5wF,GAAA,GAAeuuF,GAAuB,GAAI,CAC7Dx+L,MAAOk5L,EAEP55E,UAAW,SAAmB7gF,GAC5B,OAAIH,MAAMC,QAAQE,GACTA,EAELA,QACK,GAEF,CAACA,EACV,IAEFqiK,IAAmB,QAAeD,GAAkB,GACpDE,GAAmBD,GAAiB,GACpCE,GAAsBF,GAAiB,GA2CrCG,GAAkBrJ,IAAgB,SAAU1kI,GAC9CwH,UAAkDA,GAAQ69H,GAAarlI,IAzClD,SAA0BA,GAC/C,GAAIorI,EAAY,CAEd,IAEI4C,EAFAlL,EAAY9iI,EAAKx0B,IACjB0oC,EAAQ25H,GAAiB/9L,SAASgzL,GAIlCkL,EAFAhmI,EACEkM,EACc25H,GAAiB3yL,QAAO,SAAUswB,GAChD,OAAOA,IAAQs3J,CACjB,IAEgB,GAAG5kL,QAAO,OAAmB2vL,IAAmB,CAAC/K,IAGnD,CAACA,GAEnBgL,GAAoBE,GAGpB,IAAIC,GAAa,SAAc,QAAc,CAAC,EAAGjuI,GAAO,CAAC,EAAG,CAC1DgmI,aAAcgI,IAEZ95H,EACF4rG,SAAwDA,EAAWmuB,GAEnEzwB,SAAoDA,EAASywB,EAEjE,EAGKjmI,GAAYikI,GAAezgM,QAA2B,WAAjBmhM,IACxCR,GAAgB,GAEpB,CAQE+B,CAAiBluI,EACnB,IACImuI,GAAuBzJ,IAAgB,SAAUl5J,EAAKi5B,GACxD,IAAI2pI,EAAcnC,GAAe/wL,QAAO,SAAU7J,GAChD,OAAOA,IAAMm6B,CACf,IACA,GAAIi5B,EACF2pI,EAAYljM,KAAKsgC,QACZ,GAAqB,WAAjBmhK,GAA2B,CAEpC,IAAI0B,EAAc5J,GAAej5J,GACjC4iK,EAAcA,EAAYlzL,QAAO,SAAU7J,GACzC,OAAQg9L,EAAY5hK,IAAIp7B,EAC1B,GACF,EACK,EAAAkrB,GAAA,GAAQ0vK,GAAgBmC,GAAa,IACxCjC,GAAgBiC,GAAa,EAEjC,IAOIE,GAAoB,GAAiB3B,GAAcU,GAAiBjsF,GAAOl0B,GAAMlS,GAAc+lH,GAASC,GAAYsM,IAJzF,SAAkC9hK,EAAKi5B,GACpE,IAAI+hC,EAAW/hC,QAAmCA,GAAQwnI,GAAen8L,SAAS07B,GAClF2iK,GAAqB3iK,EAAKg7D,EAC5B,GACsK1+B,IAGtK,aAAgB,WACdgkI,IAAW,EACb,GAAG,IAGH,IAAIyC,GAAiB,WAAc,WACjC,MAAO,CACLtI,wBAAyBA,GACzB8C,2BAA4BA,GAEhC,GAAG,CAAC9C,GAAyB8C,KAKzByF,GAAoC,eAAjB7B,IAAiC7B,EAAmBnsH,GAE3EA,GAAUhjD,KAAI,SAAUlhB,EAAO9H,GAC7B,OAEE,gBAAoB,GAAqB,CACvC64B,IAAK/wB,EAAM+wB,IACXs6J,iBAAkBnzL,EAAQo6L,IACzBtyL,EAEP,IAGI9G,GAAyB,gBAAoB,IAAU,OAAS,CAClE0K,GAAIA,EACJ0+C,IAAKie,GACL5Q,UAAW,GAAGlsD,OAAOksD,EAAW,aAChCD,UAAW,KACXg2F,cAAe,GACf5hJ,UAAW,IAAW6rD,EAAW,GAAGlsD,OAAOksD,EAAW,SAAU,GAAGlsD,OAAOksD,EAAW,KAAKlsD,OAAOyuL,IAAepuL,GAAYyrD,EAAc,CAAC,GAAG,OAAgBA,EAAa,GAAG9rD,OAAOksD,EAAW,qBAAsByiI,KAA0B,OAAgB7iI,EAAa,GAAG9rD,OAAOksD,EAAW,QAASg3C,IAAQp3C,GAAc2c,GACjU8nH,IAAKhpK,EACLhvB,MAAOA,EACPu0D,KAAM,OACND,SAAUA,EACV16C,KAAMm+K,GACN5uC,cAAe,SAAuBv0G,GACpC,OAAOA,CACT,EACA40G,cAAe,SAAuByuC,GAEpC,IAAIvpK,EAAMupK,EAAUljM,OAChBmjM,EAAkBxpK,EAAMw5C,GAAUhtD,OAAOwT,GAAO,KACpD,OAAoB,gBAAoB6kK,GAAS,CAC/C7yE,SAAUqsE,GACV9mI,MAAOgvI,EACPrhI,SAAU4iI,GACVzE,mBAA4B,IAARrjK,EACpB0+D,eAAgB8nG,IACfgD,EACL,EACA7iF,SAA2B,eAAjB6gF,IAAiC7B,EAAmB,GAAStrC,WAAa,GAASD,WAC7FQ,IAAK,OACL,kBAAkB,EAClBtsD,gBAAiB,SAAyBm7F,GACxC5B,GAAoB4B,EACtB,EACA9mI,UAAWwmI,IACVz/G,KAGH,OAAoB,gBAAoB,GAAeljB,SAAU,CAC/D7+D,MAAOyhM,IACO,gBAAoB1P,GAAUlzH,SAAU,CACtD7+D,MAAOogF,IACO,gBAAoB,GAAqB,CACvD9iB,UAAWA,EACXuc,cAAeA,EACfm/E,KAAM6mC,GACN9D,SAAUoD,GACVrwE,IAAKxa,GAIL/2C,SAAUA,EAIVoxB,OAAQu4C,GAAUv4C,EAAS,KAC3B2rG,eAAgBpzD,GAAUozD,EAAiB,KAI3ChM,UAAWiS,GACXrI,SAAUA,GACVC,WAAYA,GAIZe,aAAc6H,GAIdzI,aAAcA,EAIdoC,iBAAkBA,EAClBC,kBAAmBA,EACnBE,mBAAoBA,EACpB1jG,kBAAmBA,EACnByjG,qBAAsBA,EACtBnnG,kBAAmBA,GAInBgsF,SAAUA,EACVkc,WAAYA,EAIZ7C,YAAamI,GACb9vF,aAAckwF,IACA,gBAAoBzO,GAAgB/zH,SAAU,CAC5D7+D,MAAOsgM,IACNz5L,IAAyB,gBAAoB,MAAO,CACrD8C,MAAO,CACLu/C,QAAS,QAEX,eAAe,GACD,gBAAoBqpI,GAAoB1zH,SAAU,CAChE7+D,MAAOqgM,IACNxuH,OACL,ICndIkwH,GDodJ,GCndAA,GAAW7wC,KAAO,GAClB6wC,GAAW7E,QAAUA,GACrB6E,GAAWC,UAAY3E,GACvB0E,GAAWzE,QAAUA,GACrB,UCHA,SAAS2E,GAAcvyI,EAAMO,GAC3B,IAAIqN,EAAY5N,EAAK4N,UACnB/rD,EAAKm+C,EAAKn+C,GACVq2G,EAAOl4D,EAAKk4D,KACZloD,EAAShQ,EAAKgQ,OACdq4B,EAASroC,EAAKqoC,OACdmqG,EAAgBxyI,EAAKyyI,SACrBA,OAA6B,IAAlBD,EAA2B,OAASA,EAC/CE,EAAqB1yI,EAAK0yI,mBAC1Bz4L,EAAQ+lD,EAAK/lD,MACb8H,EAAYi+C,EAAKj+C,UACjB4lJ,EAAW3nG,EAAK2nG,SAChBgrC,EAAe3yI,EAAK2yI,aACpBvzE,EAAMp/D,EAAKo/D,IACXwzE,EAAkB5yI,EAAK4yI,gBACvBC,EAAa7yI,EAAK6yI,WAClB9uG,EAAoB/jC,EAAK+jC,kBACzBsD,EAAiBrnC,EAAKqnC,eAEpB7b,GAAY,IAAAC,WAAS,GACvBC,GAAa,QAAeF,EAAW,GACvCvjB,EAAOyjB,EAAW,GAClBg1B,EAAUh1B,EAAW,GACnBG,GAAa,IAAAJ,UAAS,MACxBK,GAAa,QAAeD,EAAY,GACxCinH,EAAchnH,EAAW,GACzBinH,EAAiBjnH,EAAW,GAC1BmhH,EAAU,GAAGvrL,OAAOG,EAAI,eACxBmxL,EAAiB,GAAGtxL,OAAOksD,EAAW,aACtCqlI,EAAiC,OAAhBH,EAAuB,GAAGpxL,OAAOurL,EAAS,KAAKvrL,OAAOoxL,GAAe,KACtFI,EAAoBljI,aAAuC,EAASA,EAAOkjI,kBAS/E,IAAI57E,EAAoB,gBAAoB,GAAM,CAChDtsD,QAAS,SAAiBmB,GACxB,IAAIn9B,EAAMm9B,EAAMn9B,IACd05J,EAAWv8H,EAAMu8H,SACnBmK,EAAW7jK,EAAK05J,GAChBhoF,GAAQ,EACV,EACA9yC,UAAW,GAAGlsD,OAAOsxL,EAAgB,SACrCnxL,GAAIorL,EACJ1+H,UAAW,EACXC,KAAM,UACN,wBAAyBykI,EACzBzJ,aAAc,CAACsJ,GACf,kBAAoCluK,IAAtBsuK,EAAkCA,EAAoB,qBACnEh7E,EAAK/4F,KAAI,SAAUg0K,GACpB,IAAIv4E,EAAWu4E,EAAIv4E,SACjB/sD,EAAWslI,EAAItlI,SACfitD,EAAYq4E,EAAIr4E,UAChB9rF,EAAMmkK,EAAInkK,IACV+rB,EAAQo4I,EAAIp4I,MACVq4I,EAAY5S,GAAa5lE,EAAUE,EAAW6sC,EAAU95F,GAC5D,OAAoB,gBAAoB,GAAU,CAChD7+B,IAAKA,EACLntB,GAAI,GAAGH,OAAOurL,EAAS,KAAKvrL,OAAOstB,GACnCw/B,KAAM,SACN,gBAAiB3sD,GAAM,GAAGH,OAAOG,EAAI,WAAWH,OAAOstB,GACvD6+B,SAAUA,GACI,gBAAoB,OAAQ,KAAM9S,GAAQq4I,GAA0B,gBAAoB,SAAU,CAChHt8L,KAAM,SACN,aAAc87L,GAAmB,SACjCrkI,SAAU,EACVxsD,UAAW,GAAGL,OAAOsxL,EAAgB,qBACrChoI,QAAS,SAAiB34D,GACxBA,EAAEye,kBAzCR,SAAqB5X,EAAO81B,GAC1B91B,EAAM0B,iBACN1B,EAAM4X,kBACN62I,EAASi5B,OAAO,SAAU,CACxB5xJ,IAAKA,EACL91B,MAAOA,GAEX,CAmCMm6L,CAAYhhM,EAAG28B,EACjB,GACC8rF,GAAa6sC,EAASx/C,YAAc,KACzC,KACA,SAASmrF,EAAahiH,GAQpB,IAPA,IAAIiiH,EAAcr7E,EAAKx5G,QAAO,SAAUy0L,GACtC,OAAQA,EAAItlI,QACd,IACI2lI,EAAgBD,EAAYllH,WAAU,SAAU8kH,GAClD,OAAOA,EAAInkK,MAAQ8jK,CACrB,KAAM,EACFnqK,EAAM4qK,EAAYvkM,OACbK,EAAI,EAAGA,EAAIs5B,EAAKt5B,GAAK,EAAG,CAE/B,IAAI8jM,EAAMI,EADVC,GAAiBA,EAAgBliH,EAAS3oD,GAAOA,GAEjD,IAAKwqK,EAAItlI,SAEP,YADAklI,EAAeI,EAAInkK,IAGvB,CACF,EA8BA,IAAAq9C,YAAU,WAER,IAAIuJ,EAAM98E,SAAS8C,eAAeq3L,GAC9Br9G,GAAOA,EAAI2rF,gBACb3rF,EAAI2rF,gBAAe,EAEvB,GAAG,CAACuxB,KACJ,IAAAzmH,YAAU,WACHpkB,GACH8qI,EAAe,KAEnB,GAAG,CAAC9qI,IAGJ,IAAIwrI,GAAY,OAAgB,CAAC,EAAGr0E,EAAM,cAAgB,aAAcuzE,GACnEz6E,EAAKlpH,SACRykM,EAAU9/G,WAAa,SACvB8/G,EAAUhoJ,MAAQ,GAEpB,IAAImrD,EAAmB,KAAW,OAAgB,CAAC,EAAG,GAAGl1F,OAAOsxL,EAAgB,QAAS5zE,IACrFs0E,EAAWrrG,EAAS,KAAoB,gBAAoB,GAAU,CACxEz6B,UAAWolI,EACXv7F,QAAS6f,EACTxgB,QAAS,CAAC,SACVp0F,UAASw1G,EAAKlpH,QAASi5D,EACvBi3B,eAAgBwzG,EAChBz7F,gBAAiByJ,EACjB9J,iBAAkB,IAAWA,EAAkBvP,GAC/CR,gBAAiB,GACjBE,gBAAiB,GACjBhD,kBAAmBA,GACL,gBAAoB,SAAU,CAC5CjtF,KAAM,SACNiL,UAAW,GAAGL,OAAOksD,EAAW,aAChC3zD,MAAOw5L,EACPllI,UAAW,EACX,cAAe,OACf,gBAAiB,UACjB,gBAAiB0+H,EACjBprL,GAAI,GAAGH,OAAOG,EAAI,SAClB,gBAAiBomD,EACjBqD,UAtEF,SAAmBj5D,GACjB,IAAIo6J,EAAQp6J,EAAEo6J,MACd,GAAKxkG,EAOL,OAAQwkG,GACN,KAAKnxC,GAAA,EAAQoxC,GACX4mC,GAAc,GACdjhM,EAAEuI,iBACF,MACF,KAAK0gH,GAAA,EAAQqxC,KACX2mC,EAAa,GACbjhM,EAAEuI,iBACF,MACF,KAAK0gH,GAAA,EAAQ+O,IACX3pB,GAAQ,GACR,MACF,KAAK4a,GAAA,EAAQh5C,MACb,KAAKg5C,GAAA,EAAQC,MACS,OAAhBu3E,GAAsBD,EAAWC,EAAazgM,OApBhD,CAACipH,GAAA,EAAQqxC,KAAMrxC,GAAA,EAAQh5C,MAAOg5C,GAAA,EAAQC,OAAOjoH,SAASm5J,KACxD/rD,GAAQ,GACRruG,EAAEuI,iBAqBR,GA6CG63L,IACH,OAAoB,gBAAoB,MAAO,CAC7C1wL,UAAW,IAAW,GAAGL,OAAOksD,EAAW,mBAAoB7rD,GAC/D9H,MAAOA,EACPsmD,IAAKA,GACJmzI,EAAuB,gBAAoB,GAAW,CACvD9lI,UAAWA,EACXoC,OAAQA,EACR23F,SAAUA,IAEd,CACA,OAA4B,OAAyB,aAAiB4qC,KAAgB,SAAU19J,EAAGnR,GACjG,OAGEA,EACF,SACF,IClHA,OAzEA,SAAiBs8B,GACf,IAAIwN,EACAI,EAAY5N,EAAK4N,UACnB/rD,EAAKm+C,EAAKn+C,GACV6iH,EAAS1kE,EAAK0kE,OACdivE,EAAW3zI,EAAKmzI,IAChBnkK,EAAM2kK,EAAS3kK,IACf+rB,EAAQ44I,EAAS54I,MACjB8S,EAAW8lI,EAAS9lI,SACpBitD,EAAY64E,EAAS74E,UACrBF,EAAW56D,EAAK46D,SAChBg5E,EAAgB5zI,EAAK4zI,cACrBhB,EAAkB5yI,EAAK4yI,gBACvBjrC,EAAW3nG,EAAK2nG,SAChB38F,EAAUhL,EAAKgL,QACf6/F,EAAU7qG,EAAK6qG,QACf5wJ,EAAQ+lD,EAAK/lD,MACX45L,EAAY,GAAGnyL,OAAOksD,EAAW,QACjCwlI,EAAY5S,GAAa5lE,EAAUE,EAAW6sC,EAAU95F,GAC5D,SAAS0jI,EAAgBl/L,GACnBw7D,GAGJ7C,EAAQ34D,EACV,CASA,IAAIw8C,EAAoB,gBAAoB,MAAO,CACjD7f,IAAKA,EAIL,gBAAiBuxJ,GAAevxJ,GAChCjtB,UAAW,IAAW8xL,GAAYrmI,EAAc,CAAC,GAAG,OAAgBA,EAAa,GAAG9rD,OAAOmyL,EAAW,gBAAiBT,IAAY,OAAgB5lI,EAAa,GAAG9rD,OAAOmyL,EAAW,WAAYnvE,IAAS,OAAgBl3D,EAAa,GAAG9rD,OAAOmyL,EAAW,aAAchmI,GAAWL,IACrRvzD,MAAOA,EACP+wD,QAASumI,GACK,gBAAoB,MAAO,CACzC/iI,KAAM,MACN,gBAAiBk2D,EACjB7iH,GAAIA,GAAM,GAAGH,OAAOG,EAAI,SAASH,OAAOstB,GACxCjtB,UAAW,GAAGL,OAAOmyL,EAAW,QAChC,gBAAiBhyL,GAAM,GAAGH,OAAOG,EAAI,WAAWH,OAAOstB,GACvD,gBAAiB6+B,EACjBU,SAAUV,EAAW,KAAO,EAC5B7C,QAAS,SAAiB34D,GACxBA,EAAEye,kBACFygL,EAAgBl/L,EAClB,EACAi5D,UAAW,SAAmBj5D,GACxB,CAACipH,GAAA,EAAQh5C,MAAOg5C,GAAA,EAAQC,OAAOjoH,SAASjB,EAAEo6J,SAC5Cp6J,EAAEuI,iBACF22L,EAAgBl/L,GAEpB,EACAw4J,QAASA,GACR9vG,GAAQq4I,GAA0B,gBAAoB,SAAU,CACjEt8L,KAAM,SACN,aAAc87L,GAAmB,SACjCrkI,SAAU,EACVxsD,UAAW,GAAGL,OAAOmyL,EAAW,WAChC7oI,QAAS,SAAiB34D,GAzC5B,IAAqB6G,EA0CjB7G,EAAEye,mBA1Ce5X,EA2CL7G,GA1CRuI,iBACN1B,EAAM4X,kBACN62I,EAASi5B,OAAO,SAAU,CACxB5xJ,IAAKA,EACL91B,MAAOA,GAuCT,GACC4hH,GAAa6sC,EAASx/C,YAAc,MACvC,OAAOyrF,EAAgBA,EAAc/kJ,GAAQA,CAC/C,ECtDI,GAAU,SAAiBilJ,GAC7B,IAAI9zI,EAAO8zI,EAAOl+L,SAAW,CAAC,EAC5Bm+L,EAAmB/zI,EAAKgd,YACxBA,OAAmC,IAArB+2H,EAA8B,EAAIA,EAChDC,EAAoBh0I,EAAKid,aAE3B,MAAO,CAACD,OAD+B,IAAtBg3H,EAA+B,EAAIA,EAEtD,EAKIC,GAAe,SAAsBxhK,EAAMyhK,GAC7C,OAAOzhK,EAAKyhK,EAAyB,EAAI,EAC3C,EACA,SAASC,GAAW3uL,EAAO+6C,GACzB,IAAIiN,EACAgU,EAAoB,aAAiBw9G,IACvCpxH,EAAY4T,EAAkB5T,UAC9BsqD,EAAO12C,EAAkB02C,KACvBn2G,EAAYyD,EAAMzD,UACpB9H,EAAQuL,EAAMvL,MACd4H,EAAK2D,EAAM3D,GACXg9K,EAAWr5K,EAAMq5K,SACjBD,EAAYp5K,EAAMo5K,UAClBx/D,EAAM55G,EAAM45G,IACZjd,EAAQ38F,EAAM28F,MACdwlD,EAAWniJ,EAAMmiJ,SACjB33F,EAASxqD,EAAMwqD,OACf8uH,EAAct5K,EAAMs5K,YACpB6T,EAAentL,EAAMmtL,aACrB30L,EAAWwH,EAAMxH,SACjB60L,EAAartL,EAAMqtL,WACnBuB,EAAc5uL,EAAM4uL,YAClB51H,GAAe,IAAAC,UACf41H,GAAe,IAAA51H,UACf61H,GAAgB,IAAA71H,UAChB81H,GAAiB,IAAA91H,UACjB+1H,GAAa,IAAA/1H,UACbg2H,GAAgB,IAAAh2H,UAChBi2H,GAAoB,IAAAj2H,UAGpBy1H,EAAyC,QAAhBpV,GAAyC,WAAhBA,EAClD6V,EAAgBlV,GAAa,GAAG,SAAU/7J,EAAMD,GAC5CywK,GAA0BE,GAC5BA,EAAY,CACVnrK,UAAWvF,EAAOD,EAAO,OAAS,SAGxC,IACAmxK,GAAiB,QAAeD,EAAe,GAC/CE,EAAgBD,EAAe,GAC/BE,EAAmBF,EAAe,GAChCG,EAAiBtV,GAAa,GAAG,SAAU/7J,EAAMD,IAC5CywK,GAA0BE,GAC7BA,EAAY,CACVnrK,UAAWvF,EAAOD,EAAO,MAAQ,UAGvC,IACAuxK,GAAiB,QAAeD,EAAgB,GAChDE,EAAeD,EAAe,GAC9BE,EAAkBF,EAAe,GAC/BxpH,GAAY,IAAAC,UAAS,CAAC,EAAG,IAC3BC,GAAa,QAAeF,EAAW,GACvC2pH,EAA4BzpH,EAAW,GACvC0pH,EAA+B1pH,EAAW,GACxCG,GAAa,IAAAJ,UAAS,CAAC,EAAG,IAC5BK,GAAa,QAAeD,EAAY,GACxCwpH,EAAiBvpH,EAAW,GAC5BwpH,EAAoBxpH,EAAW,GAC7B05E,GAAa,IAAA/5E,UAAS,CAAC,EAAG,IAC5Bg6E,GAAa,QAAeD,EAAY,GACxC+vC,EAAU9vC,EAAW,GACrB+vC,EAAa/vC,EAAW,GACtBgwC,GAAa,IAAAhqH,UAAS,CAAC,EAAG,IAC5BiqH,IAAa,QAAeD,EAAY,GACxCE,GAAgBD,GAAW,GAC3BE,GAAmBF,GAAW,GAC5BG,GvCvEC,SAAwBnW,GAC7B,IAAIoW,GAAW,IAAAr3H,QAAO,IAClBoN,GAAa,IAAAJ,UAAS,CAAC,GAEzBi/B,GADa,QAAe7+B,EAAY,GACf,GACvBn6B,GAAQ,IAAA+sB,QAA+B,mBAAjBihH,EAA8BA,IAAiBA,GACrEqW,EAAc/V,IAAU,WAC1B,IAAIpqL,EAAU87C,EAAM97C,QACpBkgM,EAASlgM,QAAQW,SAAQ,SAAU/H,GACjCoH,EAAUpH,EAASoH,EACrB,IACAkgM,EAASlgM,QAAU,GACnB87C,EAAM97C,QAAUA,EAChB80G,EAAY,CAAC,EACf,IAKA,MAAO,CAACh5D,EAAM97C,QAJd,SAAiBpH,GACfsnM,EAASlgM,QAAQlH,KAAKF,GACtBunM,GACF,EAEF,CuCmDwBC,CAAe,IAAI9oL,KACvC+oL,IAAmB,QAAeJ,GAAiB,GACnDK,GAAWD,GAAiB,GAC5BE,GAAcF,GAAiB,GAC7BG,G1CnGS,SAAoBl+E,EAAMg+E,EAAUG,GACjD,OAAO,IAAA/qH,UAAQ,WAKb,IAJA,IAAIgrH,EACAn3K,EAAM,IAAIjS,IACVqpL,EAAaL,EAAS/lM,IAA2B,QAAtBmmM,EAASp+E,EAAK,UAA2B,IAAXo+E,OAAoB,EAASA,EAAOtnK,MAAQwwJ,GACrGgX,EAAcD,EAAWp5L,KAAOo5L,EAAWr6L,MACtC7M,EAAI,EAAGA,EAAI6oH,EAAKlpH,OAAQK,GAAK,EAAG,CACvC,IAKMonM,EALFznK,EAAMkpF,EAAK7oH,GAAG2/B,IACdnb,EAAOqiL,EAAS/lM,IAAI6+B,GAGnBnb,IAEHA,EAAOqiL,EAAS/lM,IAA8B,QAAzBsmM,EAAQv+E,EAAK7oH,EAAI,UAA0B,IAAVonM,OAAmB,EAASA,EAAMznK,MAAQwwJ,IAElG,IAAIhjG,EAASr9D,EAAIhvB,IAAI6+B,KAAQ,QAAc,CAAC,EAAGnb,GAG/C2oE,EAAO17E,MAAQ01L,EAAch6G,EAAOr/E,KAAOq/E,EAAOtgF,MAGlDijB,EAAI9uB,IAAI2+B,EAAKwtD,EACf,CACA,OAAOr9D,CACT,GAAG,CAAC+4F,EAAK/4F,KAAI,SAAUg0K,GACrB,OAAOA,EAAInkK,GACb,IAAGxX,KAAK,KAAM0+K,EAAUG,GAC1B,C0CwEmBK,CAAWx+E,EAAMg+E,GAAUb,EAAe,IAGvDsB,GAAiC1C,GAAakB,EAA2BjB,GACzE0C,GAAsB3C,GAAaoB,EAAgBnB,GACnD2C,GAAe5C,GAAasB,EAASrB,GACrC4C,GAAqB7C,GAAa0B,GAAezB,GACjD6C,GAAaJ,GAAiCC,GAAsBC,GACpEG,GAAyBD,GAAaJ,GAAiCG,GAAqBH,GAAiCE,GAG7HI,GAA4B,GAAGv1L,OAAOksD,EAAW,0BACjDspI,GAAe,EACfC,GAAe,EAWnB,SAASC,GAAa9mM,GACpB,OAAIA,EAAQ4mM,GACHA,GAEL5mM,EAAQ6mM,GACHA,GAEF7mM,CACT,CAlBK4jM,GAGM90E,GACT83E,GAAe,EACfC,GAAe/uL,KAAKE,IAAI,EAAGsuL,GAAsBI,MAJjDE,GAAe9uL,KAAKC,IAAI,EAAG2uL,GAAyBJ,IACpDO,GAAe,GAmBjB,IAAIE,IAAiB,IAAA54H,UACjB64H,IAAa,IAAA7rH,YACf8rH,IAAc,QAAeD,GAAY,GACzCE,GAAgBD,GAAY,GAC5BE,GAAmBF,GAAY,GACjC,SAASG,KACPD,GAAiBtmM,KAAKD,MACxB,CACA,SAASymM,KACPtmM,OAAOyB,aAAaukM,GAAezhM,QACrC,ExC/Ia,SAAsB2qD,EAAKq3I,GACxC,IAAIpsH,GAAY,IAAAC,YACdC,GAAa,QAAeF,EAAW,GACvCqsH,EAAgBnsH,EAAW,GAC3BosH,EAAmBpsH,EAAW,GAC5BG,GAAa,IAAAJ,UAAS,GACxBK,GAAa,QAAeD,EAAY,GACxCksH,EAAgBjsH,EAAW,GAC3BksH,EAAmBlsH,EAAW,GAC5B05E,GAAa,IAAA/5E,UAAS,GACxBg6E,GAAa,QAAeD,EAAY,GACxCyyC,EAAexyC,EAAW,GAC1ByyC,EAAkBzyC,EAAW,GAC3BgwC,GAAa,IAAAhqH,YACfiqH,GAAa,QAAeD,EAAY,GACxCc,EAAab,EAAW,GACxByC,EAAgBzC,EAAW,GACzB5vG,GAAY,IAAArnB,UAgEZ25H,GAAwB,IAAA35H,UAwBxB45H,GAAiB,IAAA55H,QAAO,MAC5B45H,EAAeziM,QAAU,CACvBypK,aAtFF,SAAsBhtK,GACpB,IAAIimM,EAAcjmM,EAAE0K,QAAQ,GAC1Bw7L,EAAUD,EAAYC,QACtBC,EAAUF,EAAYE,QACxBV,EAAiB,CACf1+L,EAAGm/L,EACHl/L,EAAGm/L,IAELnnM,OAAO0B,cAAc+yF,EAAUlwF,QACjC,EA8EEspK,YA7EF,SAAqB7sK,GACnB,GAAKwlM,EAAL,CACAxlM,EAAEuI,iBACF,IAAI69L,EAAepmM,EAAE0K,QAAQ,GAC3Bw7L,EAAUE,EAAaF,QACvBC,EAAUC,EAAaD,QACzBV,EAAiB,CACf1+L,EAAGm/L,EACHl/L,EAAGm/L,IAEL,IAAI97L,EAAU67L,EAAUV,EAAcz+L,EAClCwD,EAAU47L,EAAUX,EAAcx+L,EACtCu+L,EAASl7L,EAASE,GAClB,IAAI1L,EAAMC,KAAKD,MACf8mM,EAAiB9mM,GACjBgnM,EAAgBhnM,EAAM6mM,GACtBI,EAAc,CACZ/+L,EAAGsD,EACHrD,EAAGuD,GAjBqB,CAmB5B,EA0DEwiK,WAzDF,WACE,GAAKy4B,IACLC,EAAiB,MACjBK,EAAc,MAGV5B,GAAY,CACd,IAAImC,EAAYnC,EAAWn9L,EAAI6+L,EAC3BU,EAAYpC,EAAWl9L,EAAI4+L,EAC3BW,EAAOxwL,KAAKoG,IAAIkqL,GAChBG,EAAOzwL,KAAKoG,IAAImqL,GAGpB,GAAIvwL,KAAKE,IAAIswL,EAAMC,GAAQjZ,GAAoB,OAC/C,IAAIkZ,EAAWJ,EACXv5B,EAAWw5B,EACf7yG,EAAUlwF,QAAUvE,OAAO2B,aAAY,WACjCoV,KAAKoG,IAAIsqL,GAAYjZ,IAAuBz3K,KAAKoG,IAAI2wJ,GAAY0gB,GACnExuL,OAAO0B,cAAc+yF,EAAUlwF,SAKjCgiM,GAFAkB,GAAY/Y,IAEQD,IADpB3gB,GAAY4gB,IACqCD,GACnD,GAAGA,GACL,CACF,EAgCEiZ,QA5BF,SAAiB1mM,GACf,IAAI2mM,EAAS3mM,EAAE2mM,OACbp+B,EAASvoK,EAAEuoK,OAGTq+B,EAAQ,EACRL,EAAOxwL,KAAKoG,IAAIwqL,GAChBH,EAAOzwL,KAAKoG,IAAIosJ,GAChBg+B,IAASC,EACXI,EAA0C,MAAlCb,EAAsBxiM,QAAkBojM,EAASp+B,EAChDg+B,EAAOC,GAChBI,EAAQD,EACRZ,EAAsBxiM,QAAU,MAEhCqjM,EAAQr+B,EACRw9B,EAAsBxiM,QAAU,KAE9BgiM,GAAUqB,GAAQA,IACpB5mM,EAAEuI,gBAEN,GAUA,aAAgB,WAId,SAASs+L,EAAiB7mM,GACxBgmM,EAAeziM,QAAQspK,YAAY7sK,EACrC,CACA,SAAS8mM,EAAgB9mM,GACvBgmM,EAAeziM,QAAQwpK,WAAW/sK,EACpC,CAgBA,OAZAyG,SAASD,iBAAiB,YAAaqgM,EAAkB,CACvDjmG,SAAS,IAEXn6F,SAASD,iBAAiB,WAAYsgM,EAAiB,CACrDlmG,SAAS,IAIX1yC,EAAI3qD,QAAQiD,iBAAiB,cApB7B,SAA2BxG,GACzBgmM,EAAeziM,QAAQypK,aAAahtK,EACtC,GAkB8D,CAC5D4gG,SAAS,IAEX1yC,EAAI3qD,QAAQiD,iBAAiB,SAd7B,SAAsBxG,GACpBgmM,EAAeziM,QAAQmjM,QAAQ1mM,EACjC,IAaO,WACLyG,SAASE,oBAAoB,YAAakgM,GAC1CpgM,SAASE,oBAAoB,WAAYmgM,EAC3C,CACF,GAAG,GACL,CwCEEC,CAAa7E,GAAgB,SAAU73L,EAASE,GAC9C,SAASy8L,EAAO9rI,EAAU+jB,GACxB/jB,GAAS,SAAUj9D,GAEjB,OADe8mM,GAAa9mM,EAAQghF,EAEtC,GACF,CAGA,QAAKylH,KAGD7C,EACFmF,EAAOvE,EAAkBp4L,GAEzB28L,EAAOnE,EAAiBt4L,GAE1B+6L,KACAD,MACO,EACT,KACA,IAAArrH,YAAU,WAOR,OANAsrH,KACIH,KACFH,GAAezhM,QAAUvE,OAAOI,YAAW,WACzCgmM,GAAiB,EACnB,GAAG,MAEEE,EACT,GAAG,CAACH,KAIJ,IAAI8B,GtClLS,SAAyBlD,EAAYY,EAAwB/0L,EAAW20L,EAAqB2C,EAAkBC,EAAwBx5I,GACpJ,IAGIy5I,EACAngJ,EACAogJ,EALAxhF,EAAOl4D,EAAKk4D,KACd4mE,EAAc9+H,EAAK8+H,YACnB1/D,EAAMp/D,EAAKo/D,IAab,MATI,CAAC,MAAO,UAAU9rH,SAASwrL,IAC7B2a,EAAW,QACXngJ,EAAW8lE,EAAM,QAAU,OAC3Bs6E,EAAgBtxL,KAAKoG,IAAIvM,KAEzBw3L,EAAW,SACXngJ,EAAW,MACXogJ,GAAiBz3L,IAEZ,IAAAqpE,UAAQ,WACb,IAAK4sC,EAAKlpH,OACR,MAAO,CAAC,EAAG,GAIb,IAFA,IAAI25B,EAAMuvF,EAAKlpH,OACX2uK,EAAWh1I,EACNt5B,EAAI,EAAGA,EAAIs5B,EAAKt5B,GAAK,EAAG,CAC/B,IAAIiiF,EAAS8kH,EAAWjmM,IAAI+nH,EAAK7oH,GAAG2/B,MAAQ,GAC5C,GAAIsiD,EAAOh4B,GAAYg4B,EAAOmoH,GAAYC,EAAgB1C,EAAwB,CAChFr5B,EAAWtuK,EAAI,EACf,KACF,CACF,CAEA,IADA,IAAIouK,EAAa,EACR3uK,EAAK65B,EAAM,EAAG75B,GAAM,EAAGA,GAAM,EAEpC,IADcsnM,EAAWjmM,IAAI+nH,EAAKppH,GAAIkgC,MAAQ,IAClCsqB,GAAYogJ,EAAe,CACrCj8B,EAAa3uK,EAAK,EAClB,KACF,CAEF,OAAO2uK,GAAcE,EAAW,CAAC,EAAG,GAAK,CAACF,EAAYE,EACxD,GAAG,CAACy4B,EAAYY,EAAwBJ,EAAqB2C,EAAkBC,EAAwBE,EAAe5a,EAAa5mE,EAAK/4F,KAAI,SAAUg0K,GACpJ,OAAOA,EAAInkK,GACb,IAAGxX,KAAK,KAAM4nG,GAChB,CsCyIyBu6E,CAAgBvD,GAErCY,GAEA9C,EAAyBW,EAAgBI,EAEzC2B,GAEAC,GAEAC,IAAoB,SAAc,QAAc,CAAC,EAAGtxL,GAAQ,CAAC,EAAG,CAC9D0yG,KAAMA,KAER0hF,IAAoB,QAAeN,GAAkB,GACrDO,GAAeD,GAAkB,GACjCE,GAAaF,GAAkB,GAG7BG,IAAc,EAAA76H,GAAA,IAAS,WACzB,IAAIlwC,EAAMjgC,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK6vL,EAC1Eob,EAAY5D,GAAWjmM,IAAI6+B,IAAQ,CACrC9yB,MAAO,EACPC,OAAQ,EACRgB,KAAM,EACN2D,MAAO,EACP1D,IAAK,GAEP,GAAI82L,EAAwB,CAE1B,IAAI+F,EAAepF,EAGfz1E,EACE46E,EAAUl5L,MAAQ+zL,EACpBoF,EAAeD,EAAUl5L,MAChBk5L,EAAUl5L,MAAQk5L,EAAU99L,MAAQ24L,EAAgBmC,KAC7DiD,EAAeD,EAAUl5L,MAAQk5L,EAAU99L,MAAQ86L,IAI9CgD,EAAU78L,MAAQ03L,EACzBoF,GAAgBD,EAAU78L,KACjB68L,EAAU78L,KAAO68L,EAAU99L,OAAS24L,EAAgBmC,KAC7DiD,IAAiBD,EAAU78L,KAAO68L,EAAU99L,MAAQ86L,KAEtD9B,EAAgB,GAChBJ,EAAiBsC,GAAa6C,GAChC,KAAO,CAEL,IAAIC,EAAgBjF,EAChB+E,EAAU58L,KAAO63L,EACnBiF,GAAiBF,EAAU58L,IAClB48L,EAAU58L,IAAM48L,EAAU79L,QAAU84L,EAAe+B,KAC5DkD,IAAkBF,EAAU58L,IAAM48L,EAAU79L,OAAS66L,KAEvDlC,EAAiB,GACjBI,EAAgBkC,GAAa8C,GAC/B,CACF,IAGIC,GAAe,CAAC,EACA,QAAhBrb,GAAyC,WAAhBA,EAC3Bqb,GAAa/6E,EAAM,cAAgB,cAAgBuzE,EAEnDwH,GAAavtF,UAAY+lF,EAE3B,IAAIyH,GAAWliF,EAAK/4F,KAAI,SAAUg0K,EAAK9jM,GACrC,IAAI2/B,EAAMmkK,EAAInkK,IACd,OAAoB,gBAAoB,GAAS,CAC/CntB,GAAIA,EACJ+rD,UAAWA,EACX5+B,IAAKA,EACLmkK,IAAKA,EAELl5L,MAAa,IAAN5K,OAAUu1B,EAAYu1K,GAC7Bv/E,SAAUu4E,EAAIv4E,SACd+sC,SAAUA,EACVjjC,OAAQ11F,IAAQ4vJ,EAChBgV,cAAe51L,EACf40L,gBAAiB5iI,aAAuC,EAASA,EAAO4iI,gBACxE5nI,QAAS,SAAiB34D,GACxBwgM,EAAW7jK,EAAK38B,EAClB,EACAw4J,QAAS,WACPkvC,GAAY/qK,GACZ0oK,KACKnD,EAAe3+L,UAIfwpH,IACHm1E,EAAe3+L,QAAQs3F,WAAa,GAEtCqnG,EAAe3+L,QAAQq3F,UAAY,EACrC,GAEJ,IAGIotG,GAAiB,WACnB,OAAOlE,IAAY,WACjB,IAAImE,EAAW,IAAIptL,IAcnB,OAbAgrG,EAAK3hH,SAAQ,SAAU41D,GACrB,IAAIouI,EACAvrK,EAAMm9B,EAAMn9B,IACZwrK,EAAyD,QAA9CD,EAAsB/F,EAAW5+L,eAA6C,IAAxB2kM,OAAiC,EAASA,EAAoBpvI,cAAc,mBAAoBzpD,OAAO6+K,GAAevxJ,GAAM,OAC7LwrK,GACFF,EAASjqM,IAAI2+B,EAAK,CAChB9yB,MAAOs+L,EAAQx9H,YACf7gE,OAAQq+L,EAAQv9H,aAChB9/D,KAAMq9L,EAAQ19H,WACd1/D,IAAKo9L,EAAQz9H,WAGnB,IACOu9H,CACT,GACF,GACA,IAAAjuH,YAAU,WACRguH,IACF,GAAG,CAACniF,EAAK/4F,KAAI,SAAUg0K,GACrB,OAAOA,EAAInkK,GACb,IAAGxX,KAAK,OACR,IAAIijL,GAAqBza,IAAU,WAEjC,IAAI0a,EAAgB,GAAQl8H,GACxBm8H,EAAgB,GAAQtG,GACxBuG,EAAiB,GAAQtG,GAC7Bc,EAA6B,CAACsF,EAAc,GAAKC,EAAc,GAAKC,EAAe,GAAIF,EAAc,GAAKC,EAAc,GAAKC,EAAe,KAC5I,IAAIC,EAAa,GAAQnG,GACzBc,EAAWqF,GACX,IAAIC,EAAmB,GAAQrG,GAC/BmB,GAAiBkF,GAGjB,IAAIC,EAAqB,GAAQvG,GACjCc,EAAkB,CAACyF,EAAmB,GAAKF,EAAW,GAAIE,EAAmB,GAAKF,EAAW,KAG7FR,IACF,IAGIW,GAAkB9iF,EAAK/iG,MAAM,EAAG0kL,IAChCoB,GAAgB/iF,EAAK/iG,MAAM2kL,GAAa,GACxCoB,GAAa,GAAGx5L,QAAO,OAAmBs5L,KAAkB,OAAmBC,KAG/EE,IAAc,IAAA1vH,YAChB2vH,IAAc,QAAeD,GAAa,GAC1CE,GAAWD,GAAY,GACvBE,GAAcF,GAAY,GACxBG,GAAkBnF,GAAWjmM,IAAIyuL,GAGjC4c,IAAe,IAAA/8H,UACnB,SAASg9H,KACPl+H,GAAA,EAAI3pC,OAAO4nK,GAAa5lM,QAC1B,EACA,IAAAy2E,YAAU,WACR,IAAIqvH,EAAc,CAAC,EAkBnB,OAjBIH,KACErH,GACE90E,EACFs8E,EAAY56L,MAAQy6L,GAAgBz6L,MAEpC46L,EAAYv+L,KAAOo+L,GAAgBp+L,KAErCu+L,EAAYx/L,MAAQq/L,GAAgBr/L,QAEpCw/L,EAAYt+L,IAAMm+L,GAAgBn+L,IAClCs+L,EAAYv/L,OAASo/L,GAAgBp/L,SAGzCs/L,KACAD,GAAa5lM,SAAU,EAAA2nE,GAAA,IAAI,WACzB+9H,GAAYI,EACd,IACOD,EACT,GAAG,CAACF,GAAiBrH,EAAwB90E,KAG7C,IAAA/yC,YAAU,WACR0tH,IAEF,GAAG,CAACnb,EAAWsY,GAAcC,GAAc,GAAUoE,IAAkB,GAAUnF,IAAalC,KAG9F,IAAA7nH,YAAU,WACRouH,IAEF,GAAG,CAACr7E,IAGJ,IAEIu8E,GACAC,GACAC,GACAC,GALAC,KAAgBb,GAAWlsM,OAC3BgtM,GAAa,GAAGt6L,OAAOksD,EAAW,aAiBtC,OAZIsmI,EACE90E,GACFw8E,GAAY/G,EAAgB,EAC5B8G,GAAW9G,IAAkBsC,KAE7BwE,GAAW9G,EAAgB,EAC3B+G,GAAY/G,IAAkBqC,KAGhC2E,GAAU5G,EAAe,EACzB6G,GAAa7G,IAAiBiC,IAEZ,gBAAoB,GAAgB,CACtDv5G,SAAU88G,IACI,gBAAoB,MAAO,CACzCl6I,KAAK,SAAcA,EAAKie,GACxBhQ,KAAM,UACNzsD,UAAW,IAAW,GAAGL,OAAOksD,EAAW,QAAS7rD,GACpD9H,MAAOA,EACPqxD,UAAW,WAETosI,IACF,GACc,gBAAoB,GAAc,CAChDn3I,IAAK8zI,EACL/6I,SAAU,OACV6oD,MAAOA,EACPv0C,UAAWA,IACI,gBAAoB,MAAO,CAC1C7rD,UAAW,IAAWi6L,IAAaxuI,EAAc,CAAC,GAAG,OAAgBA,EAAa,GAAG9rD,OAAOs6L,GAAY,cAAeL,KAAW,OAAgBnuI,EAAa,GAAG9rD,OAAOs6L,GAAY,eAAgBJ,KAAY,OAAgBpuI,EAAa,GAAG9rD,OAAOs6L,GAAY,aAAcH,KAAU,OAAgBruI,EAAa,GAAG9rD,OAAOs6L,GAAY,gBAAiBF,IAAatuI,IAC7WjN,IAAKg0I,GACS,gBAAoB,GAAgB,CAClD52G,SAAU88G,IACI,gBAAoB,MAAO,CACzCl6I,IAAKi0I,EACLzyL,UAAW,GAAGL,OAAOksD,EAAW,aAChC3zD,MAAO,CACLgI,UAAW,aAAaP,OAAOmzL,EAAe,QAAQnzL,OAAOuzL,EAAc,OAC3Ep8H,WAAY2+H,GAAgB,YAAS5yK,IAEtCw1K,GAAuB,gBAAoB,GAAW,CACvD75I,IAAKm0I,EACL9mI,UAAWA,EACXoC,OAAQA,EACR23F,SAAUA,EACV1tJ,OAAO,SAAc,QAAc,CAAC,EAAuB,IAApBmgM,GAASprM,YAAe41B,EAAYu1K,IAAe,CAAC,EAAG,CAC5FxmH,WAAYooH,GAAc,SAAW,SAExB,gBAAoB,MAAO,CAC1Ch6L,UAAW,IAAW,GAAGL,OAAOksD,EAAW,aAAa,OAAgB,CAAC,EAAG,GAAGlsD,OAAOksD,EAAW,qBAAsBixH,EAASod,SAChIhiM,MAAOohM,QACW,gBAAoB,IAAe,OAAS,CAAC,EAAG71L,EAAO,CACzEotL,gBAAiB5iI,aAAuC,EAASA,EAAO4iI,gBACxEryI,IAAKk0I,EACL7mI,UAAWA,EACXsqD,KAAMgjF,GACNn5L,WAAYg6L,IAAe9E,GAC3BiF,YAAa1E,MACG,gBAAoB,GAAc,CAClDj3I,IAAK+zI,EACLh7I,SAAU,QACV6oD,MAAOA,EACPv0C,UAAWA,KAGf,CAEA,OAA4B,aAAiBumI,ICnczC,GAAY,CAAC,gBACf,GAAa,CAAC,QAAS,OAQV,SAASgI,GAAkBn8I,GACxC,IAAIo8I,EAAep8I,EAAKo8I,aACtB/pH,GAAY,QAAyBryB,EAAM,IAE3Ck4D,EADsB,aAAiB8mE,IACd9mE,KAC3B,GAAIkkF,EAAc,CAChB,IAAIC,GAAiB,SAAc,QAAc,CAAC,EAAGhqH,GAAY,CAAC,EAAG,CAEnEiqH,MAAOpkF,EAAK/4F,KAAI,SAAUgtC,GACxB,IAAIpR,EAAQoR,EAAMpR,MAChB/rB,EAAMm9B,EAAMn9B,IACZswJ,GAAe,QAAyBnzH,EAAO,IACjD,OAAoB,gBAAoB,IAAS,OAAS,CACxDgnI,IAAKp4I,EACL/rB,IAAKA,EACL0vJ,OAAQ1vJ,GACPswJ,GACL,MAEF,OAAO8c,EAAaC,EAAgB,GACtC,CACA,OAAoB,gBAAoB,GAAYhqH,EACtD,CC5BA,IAAI,GAAY,CAAC,KAAM,YAAa,YAAa,QAAS,YAAa,YAAa,mBAAoB,WAAY,WAAY,cAAe,eAAgB,cAAe,qBAAsB,SAAU,WAAY,qBAAsB,yBAA0B,eAAgB,WAAY,aAAc,cAAe,oBAAqB,kBAuBpV,GAAO,EACX,SAASkqH,GAAKv8I,EAAMO,GAClB,IAAIiN,EACA3rD,EAAKm+C,EAAKn+C,GACZqsL,EAAiBluI,EAAK4N,UACtBA,OAA+B,IAAnBsgI,EAA4B,UAAYA,EACpDnsL,EAAYi+C,EAAKj+C,UACjBuyC,EAAQ0L,EAAK1L,MACbrrB,EAAY+2B,EAAK/2B,UACjB21J,EAAY5+H,EAAK4+H,UACjB4d,EAAmBx8I,EAAKw8I,iBACxB70C,EAAW3nG,EAAK2nG,SAChBk3B,EAAW7+H,EAAK6+H,SAChB4d,EAAmBz8I,EAAK8+H,YACxBA,OAAmC,IAArB2d,EAA8B,MAAQA,EACpD9J,EAAe3yI,EAAK2yI,aACpB+J,EAAc18I,EAAK08I,YACnBC,EAAqB38I,EAAK28I,mBAC1B3sI,EAAShQ,EAAKgQ,OACdyiI,EAAWzyI,EAAKyyI,SAChBC,EAAqB1yI,EAAK0yI,mBAC1B3T,EAAyB/+H,EAAK++H,uBAC9Bqd,EAAep8I,EAAKo8I,aACpBzxI,EAAW3K,EAAK2K,SAChBkoI,EAAa7yI,EAAK6yI,WAClBuB,EAAcp0I,EAAKo0I,YACnBrwG,EAAoB/jC,EAAK+jC,kBACzBsD,EAAiBrnC,EAAKqnC,eACtBhV,GAAY,QAAyBryB,EAAM,IACzCk4D,EAAO,WAAc,WACvB,OAAQ5jE,GAAS,IAAI51C,QAAO,SAAUkH,GACpC,OAAOA,GAA0B,YAAlB,QAAQA,IAAsB,QAASA,CACxD,GACF,GAAG,CAAC0uC,IACA8qE,EAAoB,QAAdn2F,EACN2zK,EC7DS,WACb,IAIIA,EAJA/d,EAAW9vL,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,CACjFktM,QAAQ,EACR/c,SAAS,GA6BX,OAzBE0d,GADe,IAAb/d,EACe,CACfod,QAAQ,EACR/c,SAAS,IAEW,IAAbL,EACQ,CACfod,QAAQ,EACR/c,SAAS,IAGM,QAAc,CAC7B+c,QAAQ,GACe,YAAtB,QAAQpd,GAAyBA,EAAW,CAAC,IAI/BU,oBAA4C36J,IAA3Bg4K,EAAe1d,UACjD0d,EAAe1d,SAAU,IAEtB0d,EAAerd,eAAiBqd,EAAe1d,UAIlD0d,EAAe1d,SAAU,GAEpB0d,CACT,CD4BuBC,CAAiBhe,GAGlCrzG,GAAY,IAAAC,WAAS,GACvBC,GAAa,QAAeF,EAAW,GACvC6c,EAAS3c,EAAW,GACpB4c,EAAY5c,EAAW,IACzB,IAAAW,YAAU,WAERic,EAAUC,KACZ,GAAG,IAGH,IAAI+X,GAAkB,EAAAC,GAAA,IAAe,WACjC,IAAI+1F,EACJ,OAA8B,QAAtBA,EAASp+E,EAAK,UAA2B,IAAXo+E,OAAoB,EAASA,EAAOtnK,GAC5E,GAAG,CACD1+B,MAAOsuL,EACPzrJ,aAAcqpK,IAEhB/7F,GAAmB,QAAeH,EAAiB,GACnDuwF,EAAkBpwF,EAAiB,GACnCqwF,EAAqBrwF,EAAiB,GACpC50B,GAAa,IAAAJ,WAAS,WACtB,OAAOysC,EAAK7pC,WAAU,SAAU8kH,GAC9B,OAAOA,EAAInkK,MAAQ6hK,CACrB,GACF,IACA/kH,GAAa,QAAeD,EAAY,GACxC61F,EAAc51F,EAAW,GACzB61F,EAAiB71F,EAAW,IAG9B,IAAAO,YAAU,WACR,IAIMywH,EAJFC,EAAiB7kF,EAAK7pC,WAAU,SAAU8kH,GAC5C,OAAOA,EAAInkK,MAAQ6hK,CACrB,KACwB,IAApBkM,IAEFA,EAAiB30L,KAAKE,IAAI,EAAGF,KAAKC,IAAIq5J,EAAaxpD,EAAKlpH,OAAS,IACjE8hM,EAAqE,QAAjDgM,EAAuB5kF,EAAK6kF,UAAsD,IAAzBD,OAAkC,EAASA,EAAqB9tK,MAE/I2yI,EAAeo7B,EACjB,GAAG,CAAC7kF,EAAK/4F,KAAI,SAAUg0K,GACrB,OAAOA,EAAInkK,GACb,IAAGxX,KAAK,KAAMq5K,EAAiBnvB,IAG/B,IAAI0D,GAAmB,EAAA7kE,GAAA,GAAe,KAAM,CACxCjwG,MAAOuR,IAETwjK,GAAmB,QAAeD,EAAkB,GACpD9yF,EAAW+yF,EAAiB,GAC5B23B,EAAc33B,EAAiB,IAGjC,IAAAh5F,YAAU,WACHxqE,IACHm7L,EAAY,WAAWt7L,OAAkD,KACzE,IAAQ,EAEZ,GAAG,IAaH,IAAI6qJ,EAAc,CAChB1qJ,GAAIywE,EACJssG,UAAWiS,EACXhS,SAAU+d,EACV9d,YAAaA,EACb1/D,IAAKA,EACL/2B,OAAQA,GAGNg0G,GAAiB,SAAc,QAAc,CAAC,EAAG9vC,GAAc,CAAC,EAAG,CACrE5E,SAAUA,EACV33F,OAAQA,EACRyiI,SAAUA,EACVC,mBAAoBA,EACpBC,aAAcA,EACdE,WAzBF,SAA4B7jK,EAAK38B,GAC/BwgM,SAAwDA,EAAW7jK,EAAK38B,GACxE,IAAI4qM,EAAkBjuK,IAAQ6hK,EAC9BC,EAAmB9hK,GACfiuK,IACFtyI,SAAoDA,EAAS37B,GAEjE,EAmBEolK,YAAaA,EACbjyF,MAAOw6F,EACP1iM,MAAOyiM,EACPJ,MAAO,KACPv4G,kBAAmBA,EACnBsD,eAAgBA,IAElB,OAAoB,gBAAoB23F,GAAW7vH,SAAU,CAC3D7+D,MAAO,CACL4nH,KAAMA,EACNtqD,UAAWA,IAEC,gBAAoB,OAAO,OAAS,CAClDrN,IAAKA,EACL1+C,GAAIA,EACJE,UAAW,IAAW6rD,EAAW,GAAGlsD,OAAOksD,EAAW,KAAKlsD,OAAOo9K,IAAetxH,EAAc,CAAC,GAAG,OAAgBA,EAAa,GAAG9rD,OAAOksD,EAAW,WAAYy6B,IAAS,OAAgB76B,EAAa,GAAG9rD,OAAOksD,EAAW,aAAc+5F,IAAW,OAAgBn6F,EAAa,GAAG9rD,OAAOksD,EAAW,QAASwxD,GAAM5xD,GAAczrD,IACnUswE,GAxBC6qH,UAwBmC,gBAAoBf,IAAmB,OAAS,CAAC,EAAGE,EAAgB,CACzGD,aAAcA,KACE,gBAAoBzd,IAAc,OAAS,CAC3DI,uBAAwBA,GACvBxyB,EAAa,CACdsyB,SAAU+d,MAEd,CAKA,IErLA,GFiL+B,aAAiBL,IG5KhD,OANc,WACZ,OAAO,IACT,ECDI,GAAS,CACX5+H,cAAc,EACd4nB,aAAa,EACbC,aAAa,GCJf,IAAI,GAAgC,SAAUv5E,EAAG5Z,GAC/C,IAAIH,EAAI,CAAC,EACT,IAAK,IAAIqa,KAAKN,EAAOtG,OAAOtX,UAAUqX,eAAe3V,KAAKkc,EAAGM,IAAMla,EAAEgP,QAAQkL,GAAK,IAAGra,EAAEqa,GAAKN,EAAEM,IAC9F,GAAS,MAALN,GAAqD,mBAAjCtG,OAAO+wB,sBAA2C,KAAIrnC,EAAI,EAAb,IAAgBkd,EAAI5G,OAAO+wB,sBAAsBzqB,GAAI5c,EAAIkd,EAAEvd,OAAQK,IAClIgD,EAAEgP,QAAQkL,EAAEld,IAAM,GAAKsW,OAAOtX,UAAUgsD,qBAAqBtqD,KAAKkc,EAAGM,EAAEld,MAAK6C,EAAEqa,EAAEld,IAAM4c,EAAEM,EAAEld,IADuB,CAGvH,OAAO6C,CACT,ECLA,IA8BA,GA9BqB,SAAwBqmE,GAC3C,IAAIC,EAAeD,EAAMC,aACvBkQ,EAAqBnQ,EAAMmQ,mBAC7B,MAAO,EAAC,OAAgB,CAAC,EAAGlQ,GAAc,OAAgB,CAAC,EAAG,GAAG92D,OAAO82D,EAAc,WAAY,CAChG,oBAAqB,CACnBK,WAAY,OACZ,UAAW,CACT/1D,QAAS,GAEX,WAAY,CACVA,QAAS,EACT+1D,WAAY,WAAWn3D,OAAOgnE,KAGlC,UAAW,CACTpvB,SAAU,WACVuf,WAAY,OACZ4sC,MAAO,EACP,UAAW,CACT3iG,QAAS,GAEX,WAAY,CACVA,QAAS,EACT+1D,WAAY,WAAWn3D,OAAOgnE,QAKpC,CAACkiG,GAAgBryG,EAAO,YAAaqyG,GAAgBryG,EAAO,eAC9D,EC3BI4kI,GAAe,SAAsB5kI,GACvC,IAAI0P,EAAiBm1H,EAAkBzqB,EAAkB2B,EAAkBoB,EAAkB3wE,EACzFvsC,EAAeD,EAAMC,aACvB6kI,EAAkB9kI,EAAM8kI,gBACxBC,EAAS/kI,EAAM+kI,OACfC,EAAahlI,EAAMglI,WACnBC,EAAuBjlI,EAAMilI,qBAC7BC,EAAoBllI,EAAMklI,kBAC5B,OAAO,OAAgB,CAAC,EAAG,GAAG/7L,OAAO82D,EAAc,UAAWusC,EAAY,CAAC,GAAG,OAAgBA,EAAW,KAAKrjG,OAAO82D,EAAc,kBAAkB92D,OAAO82D,EAAc,SAAUyP,EAAkB,CAAC,GAAG,OAAgBA,EAAiB,GAAGvmE,OAAO82D,EAAc,QAAS,CAC1QmgC,OAAQ,EACRpwB,QAAS80H,EACT3kI,WAAY4kI,EACZ94H,OAAQ,GAAG9iE,OAAO62D,EAAM3qD,UAAW,OAAOlM,OAAO62D,EAAMkM,SAAU,KAAK/iE,OAAO87L,GAC7E3kI,WAAY,OAAOn3D,OAAO62D,EAAMmQ,mBAAoB,KAAKhnE,OAAO62D,EAAMQ,oBACpE,OAAgBkP,EAAiB,GAAGvmE,OAAO82D,EAAc,eAAgB,CAC3Et2B,MAAOu7J,EACP/kI,WAAYH,EAAMiO,oBAChB,OAAgByB,EAAiB,GAAGvmE,OAAO82D,EAAc,YAAa,CACxEmb,WAAY,WACV1L,KAAmB,OAAgB88B,EAAW,IAAIrjG,OAAO82D,EAAc,WAAW92D,OAAO82D,EAAc,YAAY,OAAgB,CAAC,EAAG,KAAK92D,OAAO82D,EAAc,kBAAkB92D,OAAO82D,EAAc,SAAS,OAAgB,CAAC,EAAG,GAAG92D,OAAO82D,EAAc,WAAW92D,OAAO82D,EAAc,QAAS,CACxSwgF,WAAY,CACVpgD,cAAc,EACdtoG,MAAO,GAAGoR,OAAO67L,EAAY,YAE3B,OAAgBx4F,EAAW,IAAIrjG,OAAO82D,EAAc,SAAS,OAAgB,CAAC,EAAG,KAAK92D,OAAO82D,EAAc,kBAAkB92D,OAAO82D,EAAc,SAAU4kI,EAAmB,CAAC,GAAG,OAAgBA,EAAkB,GAAG17L,OAAO82D,EAAc,QAAS,CAC1PwC,aAAc,GAAGt5D,OAAO62D,EAAM8Q,eAAgB,OAAO3nE,OAAO62D,EAAM8Q,eAAgB,aAChF,OAAgB+zH,EAAkB,GAAG17L,OAAO82D,EAAc,eAAgB,CAC5EklI,kBAAmBnlI,EAAMiO,mBACvB42H,MAAqB,OAAgBr4F,EAAW,IAAIrjG,OAAO82D,EAAc,YAAY,OAAgB,CAAC,EAAG,KAAK92D,OAAO82D,EAAc,kBAAkB92D,OAAO82D,EAAc,SAAUm6G,EAAmB,CAAC,GAAG,OAAgBA,EAAkB,GAAGjxK,OAAO82D,EAAc,QAAS,CAChRwC,aAAc,OAAOt5D,OAAO62D,EAAM8Q,eAAgB,OAAO3nE,OAAO62D,EAAM8Q,eAAgB,SACpF,OAAgBspG,EAAkB,GAAGjxK,OAAO82D,EAAc,eAAgB,CAC5E+D,eAAgBhE,EAAMiO,mBACpBmsG,MAAqB,OAAgB5tE,EAAW,IAAIrjG,OAAO82D,EAAc,YAAY92D,OAAO82D,EAAc,WAAW,OAAgB,CAAC,EAAG,KAAK92D,OAAO82D,EAAc,kBAAkB92D,OAAO82D,EAAc,SAAS,OAAgB,CAAC,EAAG,GAAG92D,OAAO82D,EAAc,WAAW92D,OAAO82D,EAAc,QAAS,CAC1So0C,UAAW,GAAGlrG,OAAO67L,EAAY,WAC7B,OAAgBx4F,EAAW,IAAIrjG,OAAO82D,EAAc,UAAU,OAAgB,CAAC,EAAG,KAAK92D,OAAO82D,EAAc,kBAAkB92D,OAAO82D,EAAc,SAAU87G,EAAmB,CAAC,GAAG,OAAgBA,EAAkB,GAAG5yK,OAAO82D,EAAc,QAAS,CAC3PwC,aAAc,CACZ49B,cAAc,EACdtoG,MAAO,GAAGoR,OAAO62D,EAAM8Q,eAAgB,WAAW3nE,OAAO62D,EAAM8Q,eAAgB,UAE/E,OAAgBirG,EAAkB,GAAG5yK,OAAO82D,EAAc,eAAgB,CAC5EmlI,iBAAkB,CAChB/kG,cAAc,EACdtoG,MAAOioE,EAAMiO,oBAEb8tG,MAAqB,OAAgBvvE,EAAW,IAAIrjG,OAAO82D,EAAc,WAAW,OAAgB,CAAC,EAAG,KAAK92D,OAAO82D,EAAc,kBAAkB92D,OAAO82D,EAAc,SAAUk9G,EAAmB,CAAC,GAAG,OAAgBA,EAAkB,GAAGh0K,OAAO82D,EAAc,QAAS,CAC/QwC,aAAc,CACZ49B,cAAc,EACdtoG,MAAO,KAAKoR,OAAO62D,EAAM8Q,eAAgB,OAAO3nE,OAAO62D,EAAM8Q,eAAgB,YAE7E,OAAgBqsG,EAAkB,GAAGh0K,OAAO82D,EAAc,eAAgB,CAC5EolI,gBAAiB,CACfhlG,cAAc,EACdtoG,MAAOioE,EAAMiO,oBAEbkvG,KAAqB3wE,GAC3B,EACI84F,GAAmB,SAA0BtlI,GAC/C,IAAIC,EAAeD,EAAMC,aACvBslI,EAAiBvlI,EAAMulI,eACvBC,EAAmCxlI,EAAMwlI,iCAC3C,OAAO,OAAgB,CAAC,EAAG,GAAGr8L,OAAO82D,EAAc,aAAc7yD,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,GAAG,SAAe80B,KAAS,OAAgB,CACvIjf,SAAU,WACVl8C,KAAM,KACND,KAAM,CACJy7F,cAAc,EACdtoG,OAAQ,MAEVsS,OAAQ21D,EAAMulC,YACdtkD,QAAS,QACT,WAAY,CACVA,QAAS,SAEV,GAAG93C,OAAO82D,EAAc,kBAAmB,CAC5C2lD,UAAW5lD,EAAMylI,mBACjBrlG,OAAQ,EACRpwB,QAAS,GAAG7mE,OAAOq8L,EAAkC,QACrDv+G,UAAW,SACXC,UAAW,OACXrwE,UAAW,CACTwpF,cAAc,EACdtoG,MAAO,QAET2tM,cAAe,OACfxhI,gBAAiBlE,EAAMiO,iBACvB6gE,eAAgB,cAChBrsE,aAAczC,EAAM8Q,eACpBhF,QAAS,OACTzL,UAAWL,EAAMwlC,mBACjB,SAAUp4F,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAG,OAAe,CACvD+V,QAAS,OACT0sD,WAAY,SACZ3gC,SAAUhN,EAAM2lI,kBAChBvlG,OAAQ,EACRpwB,QAAS,GAAG7mE,OAAO62D,EAAMyzG,WAAY,OAAOtqK,OAAO62D,EAAMylC,UAAW,MACpE97D,MAAOq2B,EAAMsM,UACbhjD,WAAY,SACZ5S,SAAUspD,EAAMtpD,SAChBC,WAAYqpD,EAAMrpD,WAClBhV,OAAQ,UACR2+D,WAAY,OAAOn3D,OAAO62D,EAAMmQ,oBAChC,SAAU,CACR3D,KAAM,EACNT,WAAY,UAEd,WAAY,CACVS,KAAM,OACNi0E,WAAY,CACVpgD,cAAc,EACdtoG,MAAOioE,EAAM2qD,UAEfhhF,MAAOq2B,EAAM4zC,qBACbl9F,SAAUspD,EAAMwtC,WAChBrtC,WAAY,cACZ8L,OAAQ,EACRtqE,OAAQ,UACR,UAAW,CACTgoC,MAAO47J,IAGX,UAAW,CACTplI,WAAYH,EAAMs0C,oBAEpB,aAAc,CACZ,aAAc,CACZ3qE,MAAOq2B,EAAM2N,kBACbxN,WAAY,cACZx+D,OAAQ,qBAKlB,EACIikM,GAAmB,SAA0B5lI,GAC/C,IAAIw1C,EAAWqwF,EAAmBj2D,EAAWC,EAAW6tC,EAAmB9C,EAAYO,EAAY1mH,EAC/FwL,EAAeD,EAAMC,aACvBmgC,EAASpgC,EAAMogC,OACf6kG,EAAuBjlI,EAAMilI,qBAC7Ba,EAAmB9lI,EAAM8lI,iBACzBC,EAAsB/lI,EAAM+lI,oBAC5BC,EAAqBhmI,EAAMgmI,mBAC7B,OAAOvxI,EAAQ,CAAC,GAAG,OAAgBA,EAAO,GAAGtrD,OAAO82D,EAAc,UAAU92D,OAAO82D,EAAc,YAAY,OAAgB,CAC3HytC,cAAe,UACd,KAAKvkG,OAAO82D,EAAc,kBAAkB92D,OAAO82D,EAAc,SAAU4lI,EAAoB,CAChGzlG,OAAQ0lG,EACR,YAAa,CACX/kJ,SAAU,WACVx4C,MAAO,CACL83F,cAAc,EACdtoG,MAAO,GAET6M,KAAM,CACJy7F,cAAc,EACdtoG,MAAO,GAETy4I,aAAc,GAAGrnI,OAAO62D,EAAM3qD,UAAW,OAAOlM,OAAO62D,EAAMkM,SAAU,KAAK/iE,OAAO87L,GACnFv4H,QAAS,QAEV,OAAgBm5H,EAAmB,GAAG18L,OAAO82D,EAAc,YAAa,CACzEr8D,OAAQo8D,EAAMimI,cACd,aAAc,CACZ3lI,WAAY,SAASn3D,OAAO62D,EAAMmQ,mBAAoB,WAAWhnE,OAAO62D,EAAMmQ,mBAAoB,yBAAyBhnE,OAAO62D,EAAMmQ,wBAExI,OAAgB01H,EAAmB,GAAG18L,OAAO82D,EAAc,cAAeu1C,EAAY,CACxF,sBAAuB,CACrB3wG,IAAK,EACLw0E,OAAQ,EACR11E,MAAOq8D,EAAMiN,eAEf,YAAa,CACXroE,KAAM,CACJy7F,cAAc,EACdtoG,MAAO,GAETsoE,UAAWL,EAAMkmI,2BAEnB,WAAY,CACV39L,MAAO,CACL83F,cAAc,EACdtoG,MAAO,GAETsoE,UAAWL,EAAMmmI,8BAElB,OAAgB3wF,EAAW,IAAIrsG,OAAO82D,EAAc,+BAAgC,CACrF11D,QAAS,KACP,OAAgBirG,EAAW,IAAIrsG,OAAO82D,EAAc,+BAAgC,CACtF11D,QAAS,IACPirG,IAAaqwF,MAAsB,OAAgBpxI,EAAO,GAAGtrD,OAAO82D,EAAc,SAAS,OAAgB,CAAC,EAAG,KAAK92D,OAAO82D,EAAc,2BAA2B92D,OAAO82D,EAAc,SAAS,OAAgB,CACpN,YAAa,CACXoZ,OAAQ,IAET,GAAGlwE,OAAO82D,EAAc,YAAa,CACtCoZ,OAAQ,OACJ,OAAgB5kB,EAAO,GAAGtrD,OAAO82D,EAAc,YAAa2vE,EAAY,CAAC,GAAG,OAAgBA,EAAW,KAAKzmI,OAAO82D,EAAc,kBAAkB92D,OAAO82D,EAAc,SAAS,OAAgB,CACrM/sB,MAAO,EACPmhE,UAAW,GAAGlrG,OAAOi3F,EAAQ,MAC7Bn1B,aAAc,EACd,YAAa,CACXpmE,IAAK,IAEN,GAAGsE,OAAO82D,EAAc,YAAa,CACtCp7D,IAAK,MACF,OAAgB+qI,EAAW,KAAKzmI,OAAO82D,EAAc,6BAA6B92D,OAAO82D,EAAc,mBAAoB,CAC9H/sB,MAAO,IACL08F,KAAa,OAAgBn7E,EAAO,GAAGtrD,OAAO82D,EAAc,WAAW92D,OAAO82D,EAAc,WAAW,OAAgB,CAAC,EAAG,KAAK92D,OAAO82D,EAAc,kBAAkB92D,OAAO82D,EAAc,SAAUy9G,EAAoB,CAC5NhwE,cAAe,SACf1gC,SAAgC,KAAtBhN,EAAMiN,gBACf,OAAgBywG,EAAmB,GAAGv0K,OAAO82D,EAAc,QAAS,CACrE+P,QAAS+1H,EACTlvL,UAAW,YACT,OAAgB6mK,EAAmB,GAAGv0K,OAAO82D,EAAc,WAAW92D,OAAO82D,EAAc,QAAS,CACtGmgC,OAAQ4lG,KACN,OAAgBtoB,EAAmB,GAAGv0K,OAAO82D,EAAc,cAAe4vE,EAAY,CACxFniC,cAAe,SACf,sBAAuB,CACrBnlG,MAAO,CACL83F,cAAc,EACdtoG,MAAO,GAET6M,KAAM,CACJy7F,cAAc,EACdtoG,MAAO,GAET6L,OAAQo8D,EAAMiN,eAEhB,YAAa,CACXpoE,IAAK,EACLw7D,UAAWL,EAAMomI,0BAEnB,WAAY,CACV/sH,OAAQ,EACRhZ,UAAWL,EAAMqmI,+BAElB,OAAgBx2D,EAAW,IAAI1mI,OAAO82D,EAAc,8BAA+B,CACpF11D,QAAS,KACP,OAAgBslI,EAAW,IAAI1mI,OAAO82D,EAAc,gCAAiC,CACvF11D,QAAS,IACPslI,KAAa,OAAgB6tC,EAAmB,GAAGv0K,OAAO82D,EAAc,YAAa,CACvFt8D,MAAOq8D,EAAMimI,cACb,aAAc,CACZ3lI,WAAY,UAAUn3D,OAAO62D,EAAMmQ,mBAAoB,UAAUhnE,OAAO62D,EAAMmQ,wBAE9E,OAAgButG,EAAmB,GAAGv0K,OAAO82D,EAAc,eAAe92D,OAAO82D,EAAc,mBAAoB,CACrHuM,KAAM,WACNkhC,cAAe,WACbgwE,MAAsB,OAAgBjpH,EAAO,GAAGtrD,OAAO82D,EAAc,UAAW26G,EAAa,CAAC,GAAG,OAAgBA,EAAY,KAAKzxK,OAAO82D,EAAc,kBAAkB92D,OAAO82D,EAAc,SAAS,OAAgB,CAAC,EAAG,GAAG92D,OAAO82D,EAAc,YAAa,CAClQ13D,MAAO,CACL83F,cAAc,EACdtoG,MAAO,OAEN,OAAgB6iL,EAAY,KAAKzxK,OAAO82D,EAAc,6BAA6B92D,OAAO82D,EAAc,oBAAoB,OAAgB,CAC/IwgF,WAAY,CACVpgD,cAAc,EACdtoG,MAAO,IAAIoR,OAAO62D,EAAM3qD,UAAW,OAErCixL,WAAY,CACVjmG,cAAc,EACdtoG,MAAO,GAAGoR,OAAO62D,EAAM3qD,UAAW,OAAOlM,OAAO62D,EAAMkM,SAAU,KAAK/iE,OAAO62D,EAAM0N,eAEnF,KAAKvkE,OAAO82D,EAAc,eAAe92D,OAAO82D,EAAc,YAAa,CAC5EkiH,YAAa,CACX9hF,cAAc,EACdtoG,MAAOioE,EAAMyuE,cAEZmsC,KAAc,OAAgBnmH,EAAO,GAAGtrD,OAAO82D,EAAc,WAAYk7G,EAAa,CAAC,GAAG,OAAgBA,EAAY,KAAKhyK,OAAO82D,EAAc,kBAAkB92D,OAAO82D,EAAc,SAAS,OAAgB,CACnN/sB,MAAO,GACN,GAAG/pC,OAAO82D,EAAc,YAAa,CACtCr7D,KAAM,CACJy7F,cAAc,EACdtoG,MAAO,OAEN,OAAgBojL,EAAY,KAAKhyK,OAAO82D,EAAc,6BAA6B92D,OAAO82D,EAAc,oBAAoB,OAAgB,CAC/I/sB,MAAO,EACPwtG,YAAa,CACXrgD,cAAc,EACdtoG,OAAQioE,EAAM3qD,WAEhBkxL,YAAa,CACXlmG,cAAc,EACdtoG,MAAO,GAAGoR,OAAO62D,EAAM3qD,UAAW,OAAOlM,OAAO62D,EAAMkM,SAAU,KAAK/iE,OAAO62D,EAAM0N,eAEnF,KAAKvkE,OAAO82D,EAAc,eAAe92D,OAAO82D,EAAc,YAAa,CAC5EmiH,aAAc,CACZ/hF,cAAc,EACdtoG,MAAOioE,EAAMyuE,cAEZ0sC,IAAc1mH,CACrB,EACI,GAAe,SAAsBuL,GACvC,IAAIwmI,EAAYC,EAAYxwG,EACxBh2B,EAAeD,EAAMC,aACvBymI,EAAgB1mI,EAAM0mI,cACtBC,EAAgB3mI,EAAM2mI,cACtBC,EAA0B5mI,EAAM4mI,wBAChCC,EAA0B7mI,EAAM6mI,wBAClC,OAAO5wG,EAAQ,CAAC,GAAG,OAAgBA,EAAOh2B,EAAc,CACtD,WAAW,OAAgB,CAAC,EAAG,KAAK92D,OAAO82D,EAAc,SAAS,OAAgB,CAAC,EAAG,GAAG92D,OAAO82D,EAAc,QAAS,CACrH+P,QAAS42H,EACTlwL,SAAUspD,EAAM8mI,mBAElB,WAAW,OAAgB,CAAC,EAAG,KAAK39L,OAAO82D,EAAc,SAAS,OAAgB,CAAC,EAAG,GAAG92D,OAAO82D,EAAc,QAAS,CACrH+P,QAAS62H,EACTnwL,SAAUspD,EAAM+mI,sBAEhB,OAAgB9wG,EAAO,GAAG9sF,OAAO82D,EAAc,UAAWwmI,EAAa,CAAC,GAAG,OAAgBA,EAAY,IAAIt9L,OAAO82D,EAAc,WAAYumI,EAAa,CAAC,GAAG,OAAgBA,EAAY,KAAKr9L,OAAO82D,EAAc,SAAS,OAAgB,CAAC,EAAG,GAAG92D,OAAO82D,EAAc,QAAS,CACnR+P,QAAS02H,MACN,OAAgBF,EAAY,IAAIr9L,OAAO82D,EAAc,YAAY,OAAgB,CAAC,EAAG,KAAK92D,OAAO82D,EAAc,SAAS92D,OAAO82D,EAAc,QAAS,CACzJwC,aAAc,OAAOt5D,OAAO62D,EAAMyC,aAAc,OAAOt5D,OAAO62D,EAAMyC,aAAc,UAC/E,OAAgB+jI,EAAY,IAAIr9L,OAAO82D,EAAc,SAAS,OAAgB,CAAC,EAAG,KAAK92D,OAAO82D,EAAc,SAAS92D,OAAO82D,EAAc,QAAS,CACtJwC,aAAc,GAAGt5D,OAAO62D,EAAMyC,aAAc,OAAOt5D,OAAO62D,EAAMyC,aAAc,cAC3E,OAAgB+jI,EAAY,IAAIr9L,OAAO82D,EAAc,WAAW,OAAgB,CAAC,EAAG,KAAK92D,OAAO82D,EAAc,SAAS92D,OAAO82D,EAAc,QAAS,CACxJwC,aAAc,CACZ49B,cAAc,EACdtoG,MAAO,KAAKoR,OAAO62D,EAAMyC,aAAc,OAAOt5D,OAAO62D,EAAMyC,aAAc,aAExE,OAAgB+jI,EAAY,IAAIr9L,OAAO82D,EAAc,UAAU,OAAgB,CAAC,EAAG,KAAK92D,OAAO82D,EAAc,SAAS92D,OAAO82D,EAAc,QAAS,CACvJwC,aAAc,CACZ49B,cAAc,EACdtoG,MAAO,GAAGoR,OAAO62D,EAAMyC,aAAc,WAAWt5D,OAAO62D,EAAMyC,aAAc,UAE1E+jI,KAAc,OAAgBC,EAAY,IAAIt9L,OAAO82D,EAAc,WAAW,OAAgB,CAAC,EAAG,KAAK92D,OAAO82D,EAAc,SAAS,OAAgB,CAAC,EAAG,GAAG92D,OAAO82D,EAAc,QAAS,CAC7L+P,QAAS22H,MACLF,IAAcxwG,CACtB,EA8EI,GAAc,SAAqBj2B,GACrC,IAAIgnI,EAAYC,EAAYC,EAAYC,EAAS14H,EAC7CxO,EAAeD,EAAMC,aACvBmnI,EAA8BpnI,EAAMonI,4BACpCx7H,EAAU5L,EAAM4L,QAChBo5H,EAAahlI,EAAMglI,WACjBqC,EAAS,GAAGl+L,OAAO82D,EAAc,QACrC,OAAOwO,EAAQ,CAAC,GAAG,OAAgBA,EAAO44H,GAASF,EAAU,CAC3Dz2K,UAAW,QACV,OAAgBy2K,EAAS,GAAGh+L,OAAO82D,EAAc,SAAS,OAAgB,CAAC,EAAG,GAAG92D,OAAO82D,EAAc,SAAU+mI,EAAa,CAC9H5mG,OAAQ,CACNC,cAAc,EACdtoG,MAAOqvM,KAER,OAAgBJ,EAAY,GAAG79L,OAAO82D,EAAc,qBAAsB,CAC3EwgF,WAAY,CACVpgD,cAAc,EACdtoG,MAAO,MAEP,OAAgBivM,EAAYp7H,EAAS,CACvC80E,YAAa,CACXrgD,cAAc,EACdtoG,MAAO,GAET0oJ,WAAY,CACVpgD,cAAc,EACdtoG,MAAO,GAAGoR,OAAO62D,EAAM2qD,SAAU,UAEjC,OAAgBq8E,EAAY,GAAG79L,OAAO82D,EAAc,gBAAgB,OAAgB,CACtFygF,YAAa,CACXrgD,cAAc,EACdtoG,MAAO,GAAGoR,OAAO62D,EAAMuM,SAAU,OAEnCk0E,WAAY,CACVpgD,cAAc,EACdtoG,MAAO,IAAIoR,OAAO62D,EAAMwoC,UAAW,QAEpC58B,EAAS,CACVw0B,OAAQ,KACL4mG,MAAe,OAAgBG,EAAS,IAAIh+L,OAAO82D,EAAc,UAAWgnI,EAAa,CAAC,GAAG,OAAgBA,EAAY,KAAK99L,OAAO82D,EAAc,QAAS,CAC/J/sB,MAAO,KACL,OAAgB+zJ,EAAY,KAAK99L,OAAO82D,EAAc,mBAAoB,CAC5E/sB,MAAO,IACL+zJ,KAAc,OAAgBE,EAAS,IAAIh+L,OAAO82D,EAAc,WAAYinI,EAAa,CAAC,GAAG,OAAgBA,EAAY,KAAK/9L,OAAO82D,EAAc,QAAS,CAC9J/sB,MAAO,KACL,OAAgBg0J,EAAY,KAAK/9L,OAAO82D,EAAc,mBAAoB,CAC5E/sB,MAAO,IACLg0J,KAAc,OAAgBC,EAAS,IAAIh+L,OAAO82D,EAAc,SAAS92D,OAAO82D,EAAc,WAAW92D,OAAO82D,EAAc,SAAS92D,OAAO82D,EAAc,YAAY,OAAgB,CAAC,EAAG,KAAK92D,OAAO82D,EAAc,kBAAkB92D,OAAO82D,EAAc,SAAS,OAAgB,CAAC,EAAG,GAAG92D,OAAO82D,EAAc,WAAW92D,OAAO82D,EAAc,QAAS,CAC7VygF,YAAa,CACXrgD,cAAc,EACdtoG,MAAOitM,GAETvkD,WAAY,CACVpgD,cAAc,EACdtoG,MAAO,OAELovM,KAAW,OAAgB14H,EAAO,GAAGtlE,OAAO82D,EAAc,iBAAkB,CAChFvvC,UAAW,SACT,OAAgB+9C,EAAO,GAAGtlE,OAAO82D,EAAc,eAAe,OAAgB,CAAC,EAAG,GAAG92D,OAAO82D,EAAc,iBAAkB,CAC9HppD,UAAW,CACTwpF,cAAc,EACdtoG,MAAO,YAEN02E,CACP,EACI64H,GAAe,SAAsBtnI,GACvC,IAAIunI,EAAmB7xF,EAAiB2/D,EAAiB3rC,EACrDzpE,EAAeD,EAAMC,aACvB6kI,EAAkB9kI,EAAM8kI,gBACxB0C,EAAaxnI,EAAMwnI,WACnBxC,EAAahlI,EAAMglI,WACnBO,EAAiBvlI,EAAMulI,eACvBkC,EAAkBznI,EAAMynI,gBACxBxC,EAAuBjlI,EAAMilI,qBAC/B,OAAOv7D,EAAQ,CAAC,GAAG,OAAgBA,EAAOzpE,EAAc7yD,OAAO89B,OAAO99B,OAAO89B,OAAO99B,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,GAAG,SAAe80B,KAAU01C,EAAkB,CAC7Jz0D,QAAS,SACR,OAAgBy0D,EAAiB,KAAKvsG,OAAO82D,EAAc,kBAAkB92D,OAAO82D,EAAc,SAAUsnI,EAAoB,CACjIxmJ,SAAU,WACVE,QAAS,OACTurB,KAAM,OACNmhC,WAAY,WACX,OAAgB45F,EAAmB,GAAGp+L,OAAO82D,EAAc,aAAc,CAC1Elf,SAAU,WACVE,QAAS,OACTurB,KAAM,OACNynG,UAAW,UACX/yH,SAAU,SACV6qB,WAAY,SACZriE,UAAW,eAEX,sBAAuB,CACrBq3C,SAAU,WACV12C,OAAQ,EACRE,QAAS,EACT+1D,WAAY,WAAWn3D,OAAO62D,EAAMmQ,oBACpCzD,QAAS,KACTvrB,cAAe,WAEf,OAAgBomJ,EAAmB,GAAGp+L,OAAO82D,EAAc,aAAc,CAC3Elf,SAAU,WACVE,QAAS,OACTqf,WAAY,WAAWn3D,OAAO62D,EAAMmQ,uBAClC,OAAgBo3H,EAAmB,GAAGp+L,OAAO82D,EAAc,mBAAoB,CACjFhf,QAAS,OACTgzH,UAAW,aACT,OAAgBszB,EAAmB,GAAGp+L,OAAO82D,EAAc,0BAA2B,CACxFlf,SAAU,WACVq6B,WAAY,SACZj6B,cAAe,UACb,OAAgBomJ,EAAmB,GAAGp+L,OAAO82D,EAAc,aAAc,CAC3Elf,SAAU,WACVivB,QAAS80H,EACT3kI,WAAY,cACZ8L,OAAQ,EACRtiC,MAAOq2B,EAAMsM,UACb,WAAY,CACVvrB,SAAU,WACVx4C,MAAO,CACL83F,cAAc,EACdtoG,MAAO,GAETshF,OAAQ,EACRz0E,KAAM,CACJy7F,cAAc,EACdtoG,MAAO,GAET6L,OAAQo8D,EAAM6Q,gBAAkB,EAChCnnE,UAAW,mBACXgjE,QAAS,SAET,OAAgB66H,EAAmB,GAAGp+L,OAAO82D,EAAc,YAAa7yD,OAAO89B,OAAO,CACxF8hC,SAAUw6H,EACV/mD,WAAY,CACVpgD,cAAc,EACdtoG,MAAOitM,GAETh1H,QAAS,KAAK7mE,OAAO62D,EAAMwQ,UAAW,MACtCrQ,WAAY,cACZ8L,OAAQ,GAAG9iE,OAAO62D,EAAM3qD,UAAW,OAAOlM,OAAO62D,EAAMkM,SAAU,KAAK/iE,OAAO87L,GAC7ExiI,aAAc,GAAGt5D,OAAO62D,EAAM8Q,eAAgB,OAAO3nE,OAAO62D,EAAM8Q,eAAgB,UAClFhF,QAAS,OACTnqE,OAAQ,UACRgoC,MAAOq2B,EAAMsM,UACbhM,WAAY,OAAOn3D,OAAO62D,EAAMmQ,mBAAoB,KAAKhnE,OAAO62D,EAAMQ,iBACtE,UAAW,CACT72B,MAAO47J,GAET,wCAAyC,CACvC57J,MAAO89J,KAER,SAAcznI,KAAUunI,KAAqB,OAAgB7xF,EAAiB,GAAGvsG,OAAO82D,EAAc,kBAAmB,CAC1HuM,KAAM,UACJ,OAAgBkpC,EAAiB,GAAGvsG,OAAO82D,EAAc,YAAa,CACxElf,SAAU,WACVof,WAAYH,EAAM0nI,YAClBvmJ,cAAe,SACbu0D,IAzOY,SAAqB11C,GACrC,IAAI2nI,EAASv9F,EACTnqC,EAAeD,EAAMC,aACvBwnI,EAAkBznI,EAAMynI,gBACxBlC,EAAiBvlI,EAAMulI,eACvB35H,EAAU5L,EAAM4L,QAChBg8H,EAA2B5nI,EAAM4nI,yBACjCC,EAAwB7nI,EAAM6nI,sBAC9B3C,EAAoBllI,EAAMklI,kBACxB4C,EAAS,GAAG3+L,OAAO82D,EAAc,QACrC,OAAOmqC,EAAQ,CAAC,GAAG,OAAgBA,EAAO09F,GAASH,EAAU,CAC3D5mJ,SAAU,WACVE,QAAS,cACT0sD,WAAY,SACZ39B,QAAS63H,EACTnxL,SAAUspD,EAAM4uE,cAChBzuE,WAAY,cACZ8L,OAAQ,EACRH,QAAS,OACTnqE,OAAQ,UACR,kBAAmByL,OAAO89B,OAAO,CAC/B,wCAAyC,CACvCvB,MAAO89J,KAER,SAAcznI,IACjB,QAAS,CACP8L,QAAS,OACTxL,WAAY,YAEd,WAAY,CACVkM,KAAM,OACNk0E,YAAa,CACXrgD,cAAc,EACdtoG,OAAQioE,EAAMwoC,WAEhBi4C,WAAY,CACVpgD,cAAc,EACdtoG,MAAOioE,EAAMuM,UAEf5iC,MAAOq2B,EAAM4zC,qBACbl9F,SAAUspD,EAAMwtC,WAChBrtC,WAAY,cACZ8L,OAAQ,OACRH,QAAS,OACTnqE,OAAQ,UACR2+D,WAAY,OAAOn3D,OAAO62D,EAAMmQ,oBAChC,UAAW,CACTxmC,MAAOq2B,EAAM2zC,mBAGjB,UAAW,CACThqE,MAAO47J,KAER,OAAgBoC,EAAS,IAAIx+L,OAAO2+L,EAAQ,YAAY3+L,OAAO2+L,EAAQ,QAAS,CACjFn+J,MAAOu7J,EACPllB,WAAYhgH,EAAM+nI,wBAChB,OAAgBJ,EAAS,IAAIx+L,OAAO2+L,EAAQ,aAAc,CAC5Dn+J,MAAOq2B,EAAM2N,kBACbhsE,OAAQ,iBACN,OAAgBgmM,EAAS,IAAIx+L,OAAO2+L,EAAQ,cAAc3+L,OAAO2+L,EAAQ,WAAW3+L,OAAO2+L,EAAQ,cAAc3+L,OAAO82D,EAAc,WAAY,CACpJ,oBAAqB,CACnBt2B,MAAOq2B,EAAM2N,sBAEb,OAAgBg6H,EAAS,KAAKx+L,OAAO2+L,EAAQ,YAAY3+L,OAAOyiE,GAAU,CAC5Ew0B,OAAQ,KACN,OAAgBunG,EAAS/7H,EAAS,CACpC80E,YAAa,CACXrgD,cAAc,EACdtoG,MAAOioE,EAAM2qD,YAEbg9E,KAAW,OAAgBv9F,EAAO,GAAGjhG,OAAO2+L,EAAQ,OAAO3+L,OAAO2+L,GAAS,CAC7E1nG,OAAQ,CACNC,cAAc,EACdtoG,MAAO6vM,KAEPx9F,CACN,CA6JyB49F,CAAYhoI,KAAUq1G,EAAkB,CAAC,GAAG,OAAgBA,EAAiB,GAAGlsK,OAAO82D,EAAc,YAAa,CACvIlf,SAAU,WACVp9C,MAAO,UACL,OAAgB0xK,EAAiB,GAAGlsK,OAAO82D,EAAc,mBAAoB,CAC/EuM,KAAM,OACNQ,SAAU,EACV8f,UAAW,KACT,OAAgBuoF,EAAiB,GAAGlsK,OAAO82D,EAAc,YAAa,CACxE6L,QAAS,OACT,WAAY,CACV7qB,QAAS,UAETo0H,MAAoB,OAAgB3rC,EAAO,GAAGvgI,OAAO82D,EAAc,cAAc,OAAgB,CAAC,EAAG,KAAK92D,OAAO82D,EAAc,kBAAkB92D,OAAO82D,EAAc,SAAS,OAAgB,CAAC,EAAG,GAAG92D,OAAO82D,EAAc,cAAc,OAAgB,CAAC,EAAG,kBAAkB92D,OAAO82D,EAAc,qBAAsB,CAC5T41C,eAAgB,cACX6zB,CACT,EAEA,IAAe,EAAAjpE,GAAA,GAAsB,QAAQ,SAAUT,GACrD,IAAIioI,GAAY,SAAWjoI,EAAO,CAEhC8kI,gBAAiB9kI,EAAMkoI,aAAe,GAAG/+L,QAAQ62D,EAAMwnI,WAAa33L,KAAKwoB,MAAM2nC,EAAMtpD,SAAWspD,EAAMrpD,aAAe,EAAIqpD,EAAM3qD,UAAW,OAAOlM,OAAO62D,EAAMgQ,QAAS,MACvKw1H,iCAAkCxlI,EAAMyzG,WACxCs0B,qBAAsB,0BACtBtC,mBAAoB,IACpBE,kBAAmB,IACnBiC,yBAA0B,SAASz+L,OAAO62D,EAAMmoI,qBAAsB,MACtEf,4BAA6B,SAASj+L,OAAO62D,EAAMmoI,qBAAsB,QAE3E,MAAO,CAAC,GAAaF,GAAY,GAAYA,GAAYrC,GAAiBqC,GAAY3C,GAAiB2C,GAAYrD,GAAaqD,GAAYX,GAAaW,GAAY,GAAeA,GACtL,IAAG,SAAUjoI,GACX,IAAIwnI,EAAaxnI,EAAM6Q,gBACvB,MAAO,CACL00B,YAAavlC,EAAMimC,gBAAkB,GACrC8+F,OAAQ/kI,EAAMyzC,eACd+zF,WAAYA,EAEZU,YAAa,GACbxB,cAAe,GAAGv9L,OAA0B,IAAnB62D,EAAMyzG,WAAkB,OAAOtqK,OAAO62D,EAAMgQ,QAAS,MAC9E22H,cAAe,GAAGx9L,OAAO62D,EAAMwQ,UAAW,OAAOrnE,OAAO62D,EAAMgQ,QAAS,OAAO7mE,OAA0B,IAAnB62D,EAAMyzG,WAAkB,MAC7G7kC,cAAe5uE,EAAMtpD,SACrBqwL,gBAAiB/mI,EAAM0Q,WACvBo2H,gBAAiB9mI,EAAMtpD,SACvBgxL,YAAa1nI,EAAME,aACnB4lI,iBAAkB,OAAO38L,OAAO62D,EAAMogC,OAAQ,QAC9C+nG,qBAAsB,GAEtBC,qBAAsB,GACtBC,wBAAyB,GACzBR,sBAAuB,GAAG1+L,OAAO62D,EAAMylC,UAAW,QAClDmhG,wBAAyB,GAAGz9L,OAAO62D,EAAMwQ,UAAW,QACpDq2H,wBAAyB,GAAG19L,OAAO62D,EAAMgQ,QAAS,QAClD+1H,oBAAqB,GAAG58L,OAAO62D,EAAMwQ,UAAW,OAAOrnE,OAAO62D,EAAMyuE,UAAW,MAC/Eu3D,mBAAoB,GAAG78L,OAAO62D,EAAMogC,OAAQ,YAC5C8kG,kBAAmBllI,EAAME,aACzBqlI,eAAgBvlI,EAAMwL,kBACtBi8H,gBAAiBznI,EAAMoO,mBACvB42H,WAAYhlI,EAAMwoC,UAAY,EAElC,ICtmBI,GAAgC,SAAU90F,EAAG5Z,GAC/C,IAAIH,EAAI,CAAC,EACT,IAAK,IAAIqa,KAAKN,EAAOtG,OAAOtX,UAAUqX,eAAe3V,KAAKkc,EAAGM,IAAMla,EAAEgP,QAAQkL,GAAK,IAAGra,EAAEqa,GAAKN,EAAEM,IAC9F,GAAS,MAALN,GAAqD,mBAAjCtG,OAAO+wB,sBAA2C,KAAIrnC,EAAI,EAAb,IAAgBkd,EAAI5G,OAAO+wB,sBAAsBzqB,GAAI5c,EAAIkd,EAAEvd,OAAQK,IAClIgD,EAAEgP,QAAQkL,EAAEld,IAAM,GAAKsW,OAAOtX,UAAUgsD,qBAAqBtqD,KAAKkc,EAAGM,EAAEld,MAAK6C,EAAEqa,EAAEld,IAAM4c,EAAEM,EAAEld,IADuB,CAGvH,OAAO6C,CACT,EAcI,GAAO,SAAcsT,GACvB,IAAIgoD,EA4BAm6F,EA3BA7wJ,EAAO0O,EAAM1O,KACfiL,EAAYyD,EAAMzD,UAClBooE,EAAgB3kE,EAAM2kE,cACtB02H,EAAar7L,EAAMitB,KACnBquK,EAAUt7L,EAAMo7K,OAChBmgB,EAAUv7L,EAAMu7L,QAChBz2D,EAAW9kI,EAAM8kI,SACjBu2C,EAAUr7K,EAAMq7K,QAChBx5F,EAAiB7hF,EAAM6hF,eACvBrpF,EAAWwH,EAAMxH,SACjBs2C,EAAQ9uC,EAAM8uC,MACduqI,EAAWr5K,EAAMq5K,SACjB5kL,EAAQuL,EAAMvL,MACdg0D,EAAa,GAAOzoD,EAAO,CAAC,OAAQ,YAAa,gBAAiB,OAAQ,SAAU,UAAW,WAAY,UAAW,iBAAkB,WAAY,QAAS,WAAY,UACvKi8D,EAAqBxT,EAAWL,UAClCozI,EAAuB/yI,EAAWwkI,SAClCA,OAAoC,IAAzBuO,EAA+C,gBAAoB,GAAkB,MAAQA,EACtGx/H,EAAoB,aAAiB,OACvCv4C,EAAYu4C,EAAkBv4C,UAC9BivF,EAAO12C,EAAkB02C,KACzB55C,EAAekD,EAAkBlD,aACjCylB,EAAoBviB,EAAkBuiB,kBACpCn2B,EAAY0Q,EAAa,OAAQmD,GACjC/C,EAAY,GAAS9Q,GACvBqd,GAAa,OAAevM,EAAW,GACvCwM,EAAUD,EAAW,GACrBtM,EAASsM,EAAW,GAET,kBAATn0E,IACF6wJ,EAAW,CACTi5B,OAAQ,SAAgBqgB,EAAUjhJ,GAChC,IAAIhxB,EAAMgxB,EAAKhxB,IACb91B,EAAQ8mD,EAAK9mD,MACf4nM,SAAkDA,EAAqB,QAAbG,EAAqB/nM,EAAQ81B,EAAKiyK,EAC9F,EACA94F,WAAyB,gBAAoB,GAAe,MAC5D04E,QAASA,GAAwB,gBAAoB,GAAc,MACnEH,SAAqB,IAAZqgB,IAGb,IAAI7/F,EAAgB5iC,IAEhB4iI,EHrDS,SAAwB5sJ,EAAOt2C,GAC5C,GAAIs2C,EACF,OAAOA,EAGT,IAAI6sJ,GAAgB,QAAQnjM,GAAUmhB,KAAI,SAAU0vB,GAClD,GAAkB,iBAAqBA,GAAO,CAC5C,IAAI7f,EAAM6f,EAAK7f,IAEX1/B,EADMu/C,EAAKrpC,OACG,CAAC,EACjB2tL,EAAM7jM,EAAG6jM,IACT9gH,EAAY,GAAO/iF,EAAI,CAAC,QAM1B,OALWqW,OAAO89B,OAAO99B,OAAO89B,OAAO,CACrCzU,IAAKlb,OAAOkb,IACXqjD,GAAY,CACbt3B,MAAOo4I,GAGX,CACA,OAAO,IACT,IACA,OA1BF,SAAgB7+I,GACd,OAAOA,EAAM51C,QAAO,SAAUkH,GAC5B,OAAOA,CACT,GACF,CAsBSlH,CAAOyiM,EAChB,CG+BoBC,CAAe9sJ,EAAOt2C,GACpC4+L,EJhES,SAA0BhvI,GACvC,IAIIgvI,EAJA/d,EAAW9vL,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,CACjFktM,QAAQ,EACR/c,SAAS,GAuBX,OAnBE0d,GADe,IAAb/d,EACe,CACfod,QAAQ,EACR/c,SAAS,IAEW,IAAbL,EACQ,CACfod,QAAQ,EACR/c,SAAS,GAGMv5K,OAAO89B,OAAO,CAC7Bw4J,QAAQ,GACa,iBAAbpd,EAAwBA,EAAW,CAAC,IAE7BK,UACjB0d,EAAerd,cAAgB55K,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAG,IAAS,CACtEm6B,YAAY,QAAkBhQ,EAAW,aAGtCgvI,CACT,CIqCuB,CAAiBhvI,EAAWixH,GAC7CpsJ,GAAO,QAAQouK,GACf/uF,EAAcnsG,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGy0E,aAAmC,EAASA,EAAKj+G,OAAQA,GAC3G,OAAOixE,EAAsB,gBAAoB,GAAQvlE,OAAO89B,OAAO,CACrExa,UAAWA,EACX86D,kBAAmBA,EACnB2uG,mBAAoB,GAAGhxL,OAAOw/F,EAAe,cAC5CjzC,EAAY,CACb3Z,MAAO4sJ,EACPn/L,UAAW,KAAYyrD,EAAc,CAAC,GAAG,OAAgBA,EAAa,GAAG9rD,OAAOksD,EAAW,KAAKlsD,OAAO+wB,GAAOA,IAAO,OAAgB+6B,EAAa,GAAG9rD,OAAOksD,EAAW,SAAU,CAAC,OAAQ,iBAAiBt6D,SAASwD,KAAQ,OAAgB02D,EAAa,GAAG9rD,OAAOksD,EAAW,kBAA4B,kBAAT92D,IAA2B,OAAgB02D,EAAa,GAAG9rD,OAAOksD,EAAW,aAAc08E,GAAW98E,GAAc0qD,aAAmC,EAASA,EAAKn2G,UAAWA,EAAWooE,EAAexL,GAC3e0oB,eAAgB,IAAWA,EAAgB1oB,GAC3C1kE,MAAO63G,EACP61C,SAAUA,EACV8qC,SAAUA,EACV7kI,UAAWA,EACXixH,SAAU+d,KAEd,EACA,GAAKne,QAAU,GAIf,iFC5FI4iB,GAAQ,CAAC,EACE,SAASC,GAAah1L,EAAG8E,QAC5B,IAAN9E,IACFA,EAAI+0L,SAEI,IAANjwL,IACFA,EAAIiwL,IAEN,IAAIE,EAAQ57L,OAAOopB,KAAKziB,GACpBk1L,EAAQ77L,OAAOopB,KAAK3d,GACxB,OAAO9E,IAAM8E,GAAKmwL,EAAMvyM,SAAWwyM,EAAMxyM,QAAUuyM,EAAM5qE,OAAM,SAAU3nG,GACvE,OAAO1iB,EAAE0iB,KAAS5d,EAAE4d,EACtB,GACF,CCbA,SAAS,GAAmB82B,EAAKtwB,EAASC,EAAQ3jC,EAAOi0D,EAAQ/2B,EAAK2b,GACpE,IACE,IAAI6Y,EAAOsC,EAAI92B,GAAK2b,GAChBr6C,EAAQkzD,EAAKlzD,KACnB,CAAE,MAAOirD,GAEP,YADA9lB,EAAO8lB,EAET,CACIiI,EAAK/c,KACPjR,EAAQllC,GAERykC,QAAQS,QAAQllC,GAAOolC,KAAK5jC,EAAOi0D,EAEvC,CACe,SAAS,GAAkBvkD,GACxC,OAAO,WACL,IAAIqzC,EAAO1mD,KACTU,EAAOE,UACT,OAAO,IAAIgmC,SAAQ,SAAUS,EAASC,GACpC,IAAIqwB,EAAMtkD,EAAGhS,MAAMqlD,EAAMhmD,GACzB,SAASiD,EAAMxB,GACb,GAAmBw1D,EAAKtwB,EAASC,EAAQ3jC,EAAOi0D,EAAQ,OAAQz1D,EAClE,CACA,SAASy1D,EAAOpwB,GACd,GAAmBmwB,EAAKtwB,EAASC,EAAQ3jC,EAAOi0D,EAAQ,QAASpwB,EACnE,CACA7jC,OAAM8yB,EACR,GACF,CACF,iBCxBIq1B,GAAsC,WACxC,IAAIH,EAAiB,SAAuB5lC,EAAG9C,GAQ7C,OAPA0oC,EAAiBn0C,OAAOo0C,gBAAkB,CACxCC,UAAW,cACAprB,OAAS,SAAU1a,EAAG9C,GACjC8C,EAAE8lC,UAAY5oC,CAChB,GAAK,SAAU8C,EAAG9C,GAChB,IAAK,IAAI7E,KAAK6E,EAAOA,EAAE1L,eAAe6G,KAAI2H,EAAE3H,GAAK6E,EAAE7E,GACrD,EACOutC,EAAe5lC,EAAG9C,EAC3B,EACA,OAAO,SAAU8C,EAAG9C,GAElB,SAAS8oC,IACP/rD,KAAK8E,YAAcihB,CACrB,CAHA4lC,EAAe5lC,EAAG9C,GAIlB8C,EAAE7lB,UAAkB,OAAN+iB,EAAazL,OAAO0wB,OAAOjlB,IAAM8oC,EAAG7rD,UAAY+iB,EAAE/iB,UAAW,IAAI6rD,EACjF,CACF,CAlB0C,GAmBtCunJ,GAAkB97L,OAAOtX,UAAUqX,eAChC,SAAS,GAAewc,EAAK8M,GAClC,OAAOyyK,GAAgB1xM,KAAKmyB,EAAK8M,EACnC,CACO,SAAS0yK,GAAYx/K,GAC1B,GAAI0M,MAAMC,QAAQ3M,GAAM,CAEtB,IADA,IAAI6N,EAAS,IAAInB,MAAM1M,EAAIlzB,QAClB6F,EAAI,EAAGA,EAAIk7B,EAAO/gC,OAAQ6F,IACjCk7B,EAAOl7B,GAAK,GAAKA,EAEnB,OAAOk7B,CACT,CACA,GAAIpqB,OAAOopB,KACT,OAAOppB,OAAOopB,KAAK7M,GAErB,IAAI6M,EAAO,GACX,IAAK,IAAI1/B,KAAK6yB,EACR,GAAeA,EAAK7yB,IACtB0/B,EAAKrgC,KAAKW,GAGd,OAAO0/B,CACT,CAQO,SAAS4yK,GAAWz/K,GACzB,cAAeA,GACb,IAAK,SACH,OAAOitB,KAAKyF,MAAMzF,KAAKF,UAAU/sB,IAEnC,IAAK,YACH,OAAO,KAET,QACE,OAAOA,EAGb,CAEO,SAAS,GAAU2N,GAIxB,IAHA,IAEIutH,EAFA/tJ,EAAI,EACJs5B,EAAMkH,EAAI7gC,OAEPK,EAAIs5B,GAAK,CAEd,MADAy0H,EAAWvtH,EAAI+xK,WAAWvyM,KACV,IAAM+tJ,GAAY,IAIlC,OAAO,EAHL/tJ,GAIJ,CACA,OAAO,CACT,CAMO,SAASwyM,GAAoB7sM,GAClC,OAA2B,IAAvBA,EAAKqM,QAAQ,OAAsC,IAAvBrM,EAAKqM,QAAQ,KAAoBrM,EAC1DA,EAAK+e,QAAQ,KAAM,MAAMA,QAAQ,MAAO,KACjD,CAMO,SAAS+tL,GAAsB9sM,GACpC,OAAOA,EAAK+e,QAAQ,MAAO,KAAKA,QAAQ,MAAO,IACjD,CA8BO,SAASguL,GAAa7/K,GAC3B,QAAY0C,IAAR1C,EACF,OAAO,EAET,GAAIA,EACF,GAAI0M,MAAMC,QAAQ3M,IAChB,IAAK,IAAI8/K,EAAM,EAAGr5K,EAAMzG,EAAIlzB,OAAQgzM,EAAMr5K,EAAKq5K,IAC7C,GAAID,GAAa7/K,EAAI8/K,IACnB,OAAO,OAGN,GAAmB,iBAAR9/K,EAGhB,IAFA,IAAI+/K,EAAUP,GAAYx/K,GACtBggL,EAAgBD,EAAQjzM,OACnBK,EAAI,EAAGA,EAAI6yM,EAAe7yM,IACjC,GAAI0yM,GAAa7/K,EAAI+/K,EAAQ5yM,KAC3B,OAAO,EAKf,OAAO,CACT,CACA,SAAS8yM,GAA2Bz4F,EAAS76G,GAC3C,IAAIuzM,EAAe,CAAC14F,GACpB,IAAK,IAAI16E,KAAOngC,EAAM,CACpB,IAAIyB,EAA6B,iBAAdzB,EAAKmgC,GAAoBmgB,KAAKF,UAAUpgD,EAAKmgC,GAAM,KAAM,GAAKngC,EAAKmgC,QACjE,IAAV1+B,GACT8xM,EAAa1zM,KAAKsgC,EAAM,KAAO1+B,EAEnC,CACA,OAAO8xM,EAAa5qL,KAAK,KAC3B,CACA,IAAI6qL,GAA0B,SAAUxyM,GAEtC,SAASwyM,EAAW34F,EAASt5G,EAAM+F,EAAOmsM,EAAWjqF,GACnD,IAAIkqF,EAAap0M,KAAK8E,YAClBrE,EAAQiB,EAAOE,KAAK5B,KAAMg0M,GAA2Bz4F,EAAS,CAChEt5G,KAAMA,EACN+F,MAAOA,EACPmsM,UAAWA,EACXjqF,KAAMA,MACDlqH,KAYP,OAXAS,EAAMwB,KAAOA,EACbxB,EAAMuH,MAAQA,EACdvH,EAAM0zM,UAAYA,EAClB1zM,EAAMypH,KAAOA,EACb1yG,OAAOo0C,eAAenrD,EAAO2zM,EAAWl0M,WACxCO,EAAM86G,QAAUy4F,GAA2Bz4F,EAAS,CAClDt5G,KAAMA,EACN+F,MAAOA,EACPmsM,UAAWA,EACXjqF,KAAMA,IAEDzpH,CACT,CACA,OAtBAqrD,GAAUooJ,EAAYxyM,GAsBfwyM,CACT,CAxB8B,CAwB5BjsK,OCxLSosK,GAAiBH,GACjBI,GAAYd,GAQnBe,GAAS,CACX/iM,IAAK,SAAauiB,EAAK8M,EAAKl2B,GAE1B,OADAopB,EAAI8M,GAAO7gC,KAAKmC,MACT,CACLqyM,YAAa7pM,EAEjB,EACAwI,OAAQ,SAAgB4gB,EAAK8M,EAAKl2B,GAChC,IAAIq4G,EAAUjvF,EAAI8M,GAElB,cADO9M,EAAI8M,GACJ,CACL2zK,YAAa7pM,EACbq4G,QAASA,EAEb,EACAp9F,QAAS,SAAiBmO,EAAK8M,EAAKl2B,GAClC,IAAIq4G,EAAUjvF,EAAI8M,GAElB,OADA9M,EAAI8M,GAAO7gC,KAAKmC,MACT,CACLqyM,YAAa7pM,EACbq4G,QAASA,EAEb,EACAtqG,KAAM,SAAcqb,EAAK8M,EAAKl2B,GAI5B,IAAIq4G,EAAUyxF,GAAkB9pM,EAAU3K,KAAK6G,MAC3Cm8G,IACFA,EAAUwwF,GAAWxwF,IAEvB,IAAI0xF,EAAgBC,GAAehqM,EAAU,CAC3CsiD,GAAI,SACJpmD,KAAM7G,KAAKs5B,OACV0pF,QAMH,OALA2xF,GAAehqM,EAAU,CACvBsiD,GAAI,MACJpmD,KAAM7G,KAAK6G,KACX1E,MAAOuyM,IAEF,CACLF,YAAa7pM,EACbq4G,QAASA,EAEb,EACAh7E,KAAM,SAAcjU,EAAK8M,EAAKl2B,GAC5B,IAAIiqM,EAAcH,GAAkB9pM,EAAU3K,KAAKs5B,MAOnD,OALAq7K,GAAehqM,EAAU,CACvBsiD,GAAI,MACJpmD,KAAM7G,KAAK6G,KACX1E,MAAOqxM,GAAWoB,KAEb,CACLJ,YAAa7pM,EAEjB,EACArF,KAAM,SAAcyuB,EAAK8M,EAAKl2B,GAC5B,MAAO,CACL6pM,YAAa7pM,EACbrF,KAAMuvM,GAAW9gL,EAAI8M,GAAM7gC,KAAKmC,OAEpC,EACA2yM,KAAM,SAAc/gL,EAAK8M,EAAKl2B,GAE5B,OADA3K,KAAKmC,MAAQ4xB,EAAI8M,GACV,CACL2zK,YAAa7pM,EAEjB,GAGEoqM,GAAS,CACXvjM,IAAK,SAAaiF,EAAKvV,EAAGyJ,GAQxB,OAPI,GAAUzJ,GACZuV,EAAIrV,OAAOF,EAAG,EAAGlB,KAAKmC,OAGtBsU,EAAIvV,GAAKlB,KAAKmC,MAGT,CACLqyM,YAAa7pM,EACb3C,MAAO9G,EAEX,EACAiS,OAAQ,SAAgBsD,EAAKvV,EAAGyJ,GAE9B,MAAO,CACL6pM,YAAa7pM,EACbq4G,QAHgBvsG,EAAIrV,OAAOF,EAAG,GAGT,GAEzB,EACA0kB,QAAS,SAAiBnP,EAAKvV,EAAGyJ,GAChC,IAAIq4G,EAAUvsG,EAAIvV,GAElB,OADAuV,EAAIvV,GAAKlB,KAAKmC,MACP,CACLqyM,YAAa7pM,EACbq4G,QAASA,EAEb,EACAtqG,KAAM67L,GAAO77L,KACbsvB,KAAMusK,GAAOvsK,KACb1iC,KAAMivM,GAAOjvM,KACbwvM,KAAMP,GAAOO,MAUR,SAASL,GAAkB9pM,EAAUqqM,GAC1C,GAAe,IAAXA,EACF,OAAOrqM,EAET,IAAIsqM,EAAyB,CAC3BhoJ,GAAI,OACJpmD,KAAMmuM,GAGR,OADAL,GAAehqM,EAAUsqM,GAClBA,EAAuB9yM,KAChC,CAeO,SAASwyM,GAAehqM,EAAUwpM,EAAWe,EAAmBC,EAAgBC,EAA2BptM,GAqBhH,QApB0B,IAAtBktM,IACFA,GAAoB,QAEC,IAAnBC,IACFA,GAAiB,QAEe,IAA9BC,IACFA,GAA4B,QAEhB,IAAVptM,IACFA,EAAQ,GAENktM,IAC8B,mBAArBA,EACTA,EAAkBf,EAAW,EAAGxpM,EAAUwpM,EAAUttM,MAEpDg9H,GAAUswE,EAAW,IAIF,KAAnBA,EAAUttM,KAAa,CACzB,IAAIwuM,EAAc,CAChBb,YAAa7pM,GAEf,GAAqB,QAAjBwpM,EAAUlnJ,GAEZ,OADAooJ,EAAYb,YAAcL,EAAUhyM,MAC7BkzM,EACF,GAAqB,YAAjBlB,EAAUlnJ,GAGnB,OAFAooJ,EAAYb,YAAcL,EAAUhyM,MACpCkzM,EAAYryF,QAAUr4G,EACf0qM,EACF,GAAqB,SAAjBlB,EAAUlnJ,IAAkC,SAAjBknJ,EAAUlnJ,GAO9C,OALAooJ,EAAYb,YAAcC,GAAkB9pM,EAAUwpM,EAAU76K,MAC3C,SAAjB66K,EAAUlnJ,KAEZooJ,EAAYryF,QAAUr4G,GAEjB0qM,EACF,GAAqB,SAAjBlB,EAAUlnJ,GAAe,CAElC,GADAooJ,EAAY/vM,KAAOuvM,GAAWlqM,EAAUwpM,EAAUhyM,QACzB,IAArBkzM,EAAY/vM,KACd,MAAM,IAAI+uM,GAAe,wBAAyB,wBAAyBrsM,EAAOmsM,EAAWxpM,GAG/F,OADA0qM,EAAYb,YAAc7pM,EACnB0qM,CACT,CAAO,GAAqB,WAAjBlB,EAAUlnJ,GAInB,OAFAooJ,EAAYryF,QAAUr4G,EACtB0qM,EAAYb,YAAc,KACnBa,EACF,GAAqB,SAAjBlB,EAAUlnJ,GAEnB,OADAknJ,EAAUhyM,MAAQwI,EACX0qM,EAGP,GAAIH,EACF,MAAM,IAAIb,GAAe,uEAAwE,uBAAwBrsM,EAAOmsM,EAAWxpM,GAE3I,OAAO0qM,CAGb,CACOF,IACHxqM,EAAW6oM,GAAW7oM,IAExB,IACIi2B,GADOuzK,EAAUttM,MAAQ,IACbyiB,MAAM,KAClByK,EAAMppB,EACN5G,EAAI,EACJy2B,EAAMoG,EAAK//B,OACXy0M,OAAuB7+K,EACvBoK,OAAM,EACN00K,OAAmB,EAMvB,IAJEA,EAD8B,mBAArBL,EACUA,EAEArxE,KAER,CAKX,IAJAhjG,EAAMD,EAAK78B,MACqB,GAArB88B,EAAI3tB,QAAQ,OACrB2tB,EAAM8yK,GAAsB9yK,IAE1Bu0K,IAAqC,aAAPv0K,GAA6B,aAAPA,GAAsB98B,EAAI,GAAoB,eAAf68B,EAAK78B,EAAI,IAC9F,MAAM,IAAIgB,UAAU,iPAetB,GAbImwM,QAC2Bz+K,IAAzB6+K,SACe7+K,IAAb1C,EAAI8M,GACNy0K,EAAuB10K,EAAK5Z,MAAM,EAAGjjB,GAAGslB,KAAK,KACpCtlB,GAAKy2B,EAAM,IACpB86K,EAAuBnB,EAAUttM,WAEN4vB,IAAzB6+K,GACFC,EAAiBpB,EAAW,EAAGxpM,EAAU2qM,IAI/CvxM,IACI08B,MAAMC,QAAQ3M,GAAM,CACtB,GAAY,MAAR8M,EACFA,EAAM9M,EAAIlzB,WACL,CACL,GAAIq0M,IAAsB,GAAUr0K,GAClC,MAAM,IAAIwzK,GAAe,0HAA2H,qCAAsCrsM,EAAOmsM,EAAWxpM,GAErM,GAAUk2B,KACjBA,IAAQA,EAEZ,CACA,GAAI98B,GAAKy2B,EAAK,CACZ,GAAI06K,GAAsC,QAAjBf,EAAUlnJ,IAAgBpsB,EAAM9M,EAAIlzB,OAC3D,MAAM,IAAIwzM,GAAe,mFAAoF,gCAAiCrsM,EAAOmsM,EAAWxpM,GAGlK,IAAyB,KADrB0qM,EAAcN,GAAOZ,EAAUlnJ,IAAIrrD,KAAKuyM,EAAWpgL,EAAK8M,EAAKl2B,IACjDrF,KACd,MAAM,IAAI+uM,GAAe,wBAAyB,wBAAyBrsM,EAAOmsM,EAAWxpM,GAE/F,OAAO0qM,CACT,CACF,MACE,GAAItxM,GAAKy2B,EAAK,CAEZ,IAAyB,KADrB66K,EAAcd,GAAOJ,EAAUlnJ,IAAIrrD,KAAKuyM,EAAWpgL,EAAK8M,EAAKl2B,IACjDrF,KACd,MAAM,IAAI+uM,GAAe,wBAAyB,wBAAyBrsM,EAAOmsM,EAAWxpM,GAE/F,OAAO0qM,CACT,CAKF,GAHAthL,EAAMA,EAAI8M,GAGNq0K,GAAqBnxM,EAAIy2B,KAASzG,GAAsB,iBAARA,GAClD,MAAM,IAAIsgL,GAAe,+CAAgD,8BAA+BrsM,EAAOmsM,EAAWxpM,EAE9H,CAEJ,CAeO,SAAS6qM,GAAW7qM,EAAU8qM,EAAOP,EAAmBC,EAAgBC,GAO7E,QANuB,IAAnBD,IACFA,GAAiB,QAEe,IAA9BC,IACFA,GAA4B,GAE1BF,IACGz0K,MAAMC,QAAQ+0K,GACjB,MAAM,IAAIpB,GAAe,kCAAmC,yBAG3Dc,IACHxqM,EAAW6oM,GAAW7oM,IAGxB,IADA,IAAIo2H,EAAU,IAAItgG,MAAMg1K,EAAM50M,QACrBK,EAAI,EAAGK,EAAWk0M,EAAM50M,OAAQK,EAAIK,EAAUL,IAErD6/H,EAAQ7/H,GAAKyzM,GAAehqM,EAAU8qM,EAAMv0M,GAAIg0M,GAAmB,EAAME,EAA2Bl0M,GACpGyJ,EAAWo2H,EAAQ7/H,GAAGszM,YAIxB,OADAzzE,EAAQyzE,YAAc7pM,EACfo2H,CACT,CAUO,SAAS20E,GAAa/qM,EAAUwpM,EAAWnsM,GAChD,IAAI2tM,EAAkBhB,GAAehqM,EAAUwpM,GAC/C,IAA6B,IAAzBwB,EAAgBrwM,KAElB,MAAM,IAAI+uM,GAAe,wBAAyB,wBAAyBrsM,EAAOmsM,EAAWxpM,GAE/F,OAAOgrM,EAAgBnB,WACzB,CAQO,SAAS3wE,GAAUswE,EAAWnsM,EAAO2C,EAAU2qM,GACpD,GAAyB,iBAAdnB,GAAwC,OAAdA,GAAsB1zK,MAAMC,QAAQyzK,GACvE,MAAM,IAAIE,GAAe,6BAA8B,0BAA2BrsM,EAAOmsM,EAAWxpM,GAC/F,IAAK4pM,GAAOJ,EAAUlnJ,IAC3B,MAAM,IAAIonJ,GAAe,uEAAwE,uBAAwBrsM,EAAOmsM,EAAWxpM,GACtI,GAA8B,iBAAnBwpM,EAAUttM,KAC1B,MAAM,IAAIwtM,GAAe,4CAA6C,yBAA0BrsM,EAAOmsM,EAAWxpM,GAC7G,GAAoC,IAAhCwpM,EAAUttM,KAAKqM,QAAQ,MAAcihM,EAAUttM,KAAKhG,OAAS,EAEtE,MAAM,IAAIwzM,GAAe,gDAAiD,yBAA0BrsM,EAAOmsM,EAAWxpM,GACjH,IAAsB,SAAjBwpM,EAAUlnJ,IAAkC,SAAjBknJ,EAAUlnJ,KAA4C,iBAAnBknJ,EAAU76K,KAClF,MAAM,IAAI+6K,GAAe,wFAAyF,0BAA2BrsM,EAAOmsM,EAAWxpM,GAC1J,IAAsB,QAAjBwpM,EAAUlnJ,IAAiC,YAAjBknJ,EAAUlnJ,IAAqC,SAAjBknJ,EAAUlnJ,UAAsCx2B,IAApB09K,EAAUhyM,MACxG,MAAM,IAAIkyM,GAAe,mGAAoG,2BAA4BrsM,EAAOmsM,EAAWxpM,GACtK,IAAsB,QAAjBwpM,EAAUlnJ,IAAiC,YAAjBknJ,EAAUlnJ,IAAqC,SAAjBknJ,EAAUlnJ,KAAkB2mJ,GAAaO,EAAUhyM,OACrH,MAAM,IAAIkyM,GAAe,mGAAoG,2CAA4CrsM,EAAOmsM,EAAWxpM,GACtL,GAAIA,EACT,GAAoB,OAAhBwpM,EAAUlnJ,GAAa,CACzB,IAAI2oJ,EAAUzB,EAAUttM,KAAKyiB,MAAM,KAAKzoB,OACpCg1M,EAAkBP,EAAqBhsL,MAAM,KAAKzoB,OACtD,GAAI+0M,IAAYC,EAAkB,GAAKD,IAAYC,EACjD,MAAM,IAAIxB,GAAe,wDAAyD,4BAA6BrsM,EAAOmsM,EAAWxpM,EAErI,MAAO,GAAqB,YAAjBwpM,EAAUlnJ,IAAqC,WAAjBknJ,EAAUlnJ,IAAoC,SAAjBknJ,EAAUlnJ,IAC9E,GAAIknJ,EAAUttM,OAASyuM,EACrB,MAAM,IAAIjB,GAAe,6DAA8D,8BAA+BrsM,EAAOmsM,EAAWxpM,QAErI,GAAqB,SAAjBwpM,EAAUlnJ,IAAkC,SAAjBknJ,EAAUlnJ,GAAe,CAC7D,IAKIG,EAAQo2E,GAAS,CALD,CAClBv2E,GAAI,OACJpmD,KAAMstM,EAAU76K,KAChBn3B,WAAOs0B,IAE6B9rB,GACtC,GAAIyiD,GAAwB,gCAAfA,EAAMnrD,KACjB,MAAM,IAAIoyM,GAAe,+DAAgE,8BAA+BrsM,EAAOmsM,EAAWxpM,EAE9I,CAEJ,CAQO,SAAS64H,GAAS5nE,EAAUjxD,EAAUmrM,GAC3C,IACE,IAAKr1K,MAAMC,QAAQk7B,GACjB,MAAM,IAAIy4I,GAAe,kCAAmC,yBAE9D,GAAI1pM,EAEF6qM,GAAWhC,GAAW7oM,GAAW6oM,GAAW53I,GAAWk6I,IAAqB,OACvE,CACLA,EAAoBA,GAAqBjyE,GACzC,IAAK,IAAI3iI,EAAI,EAAGA,EAAI06D,EAAS/6D,OAAQK,IACnC40M,EAAkBl6I,EAAS16D,GAAIA,EAAGyJ,OAAU8rB,EAEhD,CACF,CAAE,MAAOvyB,KACP,GAAIA,eAAamwM,GACf,OAAOnwM,IAEP,MAAMA,GAEV,CACF,CAmBO,SAAS2wM,GAAW12L,EAAG8E,GAC5B,GAAI9E,IAAM8E,EAAG,OAAO,EACpB,GAAI9E,GAAK8E,GAAiB,iBAAL9E,GAA6B,iBAAL8E,EAAe,CAC1D,IAEE/hB,EACAL,EACAggC,EAJEk1K,EAAOt1K,MAAMC,QAAQviB,GACvB63L,EAAOv1K,MAAMC,QAAQzd,GAIvB,GAAI8yL,GAAQC,EAAM,CAEhB,IADAn1M,EAASsd,EAAEtd,SACGoiB,EAAEpiB,OAAQ,OAAO,EAC/B,IAAKK,EAAIL,EAAgB,GAARK,KAAY,IAAK2zM,GAAW12L,EAAEjd,GAAI+hB,EAAE/hB,IAAK,OAAO,EACjE,OAAO,CACT,CACA,GAAI60M,GAAQC,EAAM,OAAO,EACzB,IAAIp1K,EAAOppB,OAAOopB,KAAKziB,GAEvB,IADAtd,EAAS+/B,EAAK//B,UACC2W,OAAOopB,KAAK3d,GAAGpiB,OAAQ,OAAO,EAC7C,IAAKK,EAAIL,EAAgB,GAARK,KAAY,IAAK+hB,EAAE1L,eAAeqpB,EAAK1/B,IAAK,OAAO,EACpE,IAAKA,EAAIL,EAAgB,GAARK,KAEf,IAAK2zM,GAAW12L,EADhB0iB,EAAMD,EAAK1/B,IACa+hB,EAAE4d,IAAO,OAAO,EAE1C,OAAO,CACT,CACA,OAAO1iB,GAAMA,GAAK8E,GAAMA,CAC1B,CCzcA,IAAIgzL,GAAa,IAAI/nH,QACjBgoH,GACF,SAAgBniL,GACd/zB,KAAKuqF,UAAY,IAAIxrE,IACrB/e,KAAK+zB,IAAMA,CACb,EAGEoiL,GACF,SAAsB91M,EAAU+pF,GAC9BpqF,KAAKK,SAAWA,EAChBL,KAAKoqF,SAAWA,CAClB,EAeK,SAAS,GAAU7e,EAAM6e,GAC9BA,EAAS2D,WACX,CAIO,SAAS,GAAQh6D,EAAK1zB,GAC3B,IACI+pF,EACAgsH,EArBN,SAAmBriL,GACjB,OAAOkiL,GAAWj0M,IAAI+xB,EACxB,CAmBesiL,CAAUtiL,GACvB,GAAKqiL,EAGE,CACL,IAAIE,EAvBR,SAA+BF,EAAQ/1M,GACrC,OAAO+1M,EAAO7rH,UAAUvoF,IAAI3B,EAC9B,CAqBuBk2M,CAAsBH,EAAQ/1M,GACjD+pF,EAAWksH,GAAgBA,EAAalsH,QAC1C,MALEgsH,EAAS,IAAIF,GAAOniL,GACpBkiL,GAAW/zM,IAAI6xB,EAAKqiL,GAKtB,GAAIhsH,EACF,OAAOA,EAIT,GAFAA,EAAW,CAAC,EACZgsH,EAAOj0M,MAAQqxM,GAAWz/K,GACtB1zB,EAAU,CACZ+pF,EAAS/pF,SAAWA,EACpB+pF,EAAS70D,KAAO,KAChB,IAAIihL,EAAa,WACfC,GAASrsH,EACX,EACIssH,EAAY,WACd/xM,aAAaylF,EAAS70D,MACtB60D,EAAS70D,KAAOjyB,WAAWkzM,EAC7B,EACsB,oBAAXtzM,SAETA,OAAOwH,iBAAiB,UAAWgsM,GACnCxzM,OAAOwH,iBAAiB,QAASgsM,GACjCxzM,OAAOwH,iBAAiB,YAAagsM,GACrCxzM,OAAOwH,iBAAiB,UAAWgsM,GACnCxzM,OAAOwH,iBAAiB,SAAUgsM,GAEtC,CAgBA,OAfAtsH,EAASusH,QAlCK,GAmCdvsH,EAASzlD,OAAS5Q,EAClBq2D,EAAS2D,UAAY,WACnB0oH,GAASrsH,GACTzlF,aAAaylF,EAAS70D,MAnD1B,SAAkC6gL,EAAQhsH,GACxCgsH,EAAO7rH,UAAUlkD,OAAO+jD,EAAS/pF,SACnC,CAkDIu2M,CAAyBR,EAAQhsH,GACX,oBAAXlnF,SACTA,OAAO2H,oBAAoB,UAAW6rM,GACtCxzM,OAAO2H,oBAAoB,QAAS6rM,GACpCxzM,OAAO2H,oBAAoB,YAAa6rM,GACxCxzM,OAAO2H,oBAAoB,UAAW6rM,GACtCxzM,OAAO2H,oBAAoB,SAAU6rM,GAEzC,EACAN,EAAO7rH,UAAUroF,IAAI7B,EAAU,IAAI81M,GAAa91M,EAAU+pF,IACnDA,CACT,CAIO,SAASqsH,GAASrsH,EAAUysH,QACd,IAAfA,IACFA,GAAa,GAEf,IAAIT,EAASH,GAAWj0M,IAAIooF,EAASzlD,QACrCmyK,GAAUV,EAAOj0M,MAAOioF,EAASzlD,OAAQylD,EAASusH,QAAS,GAAIE,GAC3DzsH,EAASusH,QAAQ91M,QACnB20M,GAAWY,EAAOj0M,MAAOioF,EAASusH,SAEpC,IAAIxlL,EAAOi5D,EAASusH,QAOpB,OANIxlL,EAAKtwB,OAAS,IAChBupF,EAASusH,QAAU,GACfvsH,EAAS/pF,UACX+pF,EAAS/pF,SAAS8wB,IAGfA,CACT,CAEA,SAAS2lL,GAAUV,EAAQriL,EAAK4iL,EAAS9vM,EAAMgwM,GAC7C,GAAI9iL,IAAQqiL,EAAZ,CAG0B,mBAAfriL,EAAIgtB,SACbhtB,EAAMA,EAAIgtB,UAOZ,IALA,IAAIg2J,EAAUxD,GAAYx/K,GACtBijL,EAAUzD,GAAY6C,GAEtBa,GAAU,EAELlzM,EAAIizM,EAAQn2M,OAAS,EAAGkD,GAAK,EAAGA,IAAK,CAC5C,IACImzM,EAASd,EADTv1K,EAAMm2K,EAAQjzM,IAElB,IAAI,GAAegwB,EAAK8M,SAAuBpK,IAAb1C,EAAI8M,SAAiCpK,IAAXygL,IAA+C,IAAvBz2K,MAAMC,QAAQ3M,GAqBvF0M,MAAMC,QAAQ01K,KAAY31K,MAAMC,QAAQ3M,IAC7C8iL,GACFF,EAAQp2M,KAAK,CACX0sD,GAAI,OACJpmD,KAAMA,EAAO,IAAM6sM,GAAoB7yK,GACvC1+B,MAAOqxM,GAAW0D,KAGtBP,EAAQp2M,KAAK,CACX0sD,GAAI,SACJpmD,KAAMA,EAAO,IAAM6sM,GAAoB7yK,KAEzCo2K,GAAU,IAENJ,GACFF,EAAQp2M,KAAK,CACX0sD,GAAI,OACJpmD,KAAMA,EACN1E,MAAOi0M,IAGXO,EAAQp2M,KAAK,CACX0sD,GAAI,UACJpmD,KAAMA,EACN1E,MAAO4xB,KAEC,OA/CuG,CACjH,IAAIimJ,EAASjmJ,EAAI8M,GACI,iBAAVq2K,GAAgC,MAAVA,GAAmC,iBAAVl9B,GAAgC,MAAVA,GAAkBv5I,MAAMC,QAAQw2K,KAAYz2K,MAAMC,QAAQs5I,GACxI88B,GAAUI,EAAQl9B,EAAQ28B,EAAS9vM,EAAO,IAAM6sM,GAAoB7yK,GAAMg2K,GAEtEK,IAAWl9B,KACH,EACN68B,GACFF,EAAQp2M,KAAK,CACX0sD,GAAI,OACJpmD,KAAMA,EAAO,IAAM6sM,GAAoB7yK,GACvC1+B,MAAOqxM,GAAW0D,KAGtBP,EAAQp2M,KAAK,CACX0sD,GAAI,UACJpmD,KAAMA,EAAO,IAAM6sM,GAAoB7yK,GACvC1+B,MAAOqxM,GAAWx5B,KAI1B,CA4BF,CACA,GAAKi9B,GAAWF,EAAQl2M,QAAUm2M,EAAQn2M,OAG1C,IAASkD,EAAI,EAAGA,EAAIgzM,EAAQl2M,OAAQkD,IAAK,CACvC,IAAI88B,EACC,GAAeu1K,EADhBv1K,EAAMk2K,EAAQhzM,UAC+B0yB,IAAb1C,EAAI8M,IACtC81K,EAAQp2M,KAAK,CACX0sD,GAAI,MACJpmD,KAAMA,EAAO,IAAM6sM,GAAoB7yK,GACvC1+B,MAAOqxM,GAAWz/K,EAAI8M,KAG5B,CA1EA,CA2EF,CAIO,SAASruB,GAAQ2kM,EAAOC,EAAOP,QACjB,IAAfA,IACFA,GAAa,GAEf,IAAIF,EAAU,GAEd,OADAG,GAAUK,EAAOC,EAAOT,EAAS,GAAIE,GAC9BF,CACT,CChMen/L,OAAO89B,OAAO,CAAC,EAAG,EAAM,EAAQ,CAC7C++J,eAAgB,GAChBC,UAAW,GACXZ,oBAAqBA,GACrBC,sBAAuBA,KAJzB,2BCXA,SAAS0D,GAAShkM,EAAIusH,EAAQ39H,GAG5B,OAFAoR,EAAGusH,OAASA,GAAU,GACtBvsH,EAAGikM,MAAQr1M,EACJoR,CACT,CACA,SAASkkM,GAAalkM,GACpB,OAAa,MAANA,EAAa,KAAOA,EAAGikM,KAChC,CACA,SAASE,GAAenkM,GACtB,OAAa,MAANA,EAAa,KAAOA,EAAGusH,MAChC,CACA,SAAS63E,GAAO5wM,GACd,OAAuB,IAAhBA,EAAKhG,OAAe62M,GAAK7wM,EAAK,IAAM8wM,GAAK9wM,EAClD,CACA,IAAI6wM,GAAO,SAAc73E,GACvB,OAAO,SAAU9rG,GACf,OAAOA,EAAI8rG,EACb,CACF,EACI83E,GAAO,SAAc9wM,GACvB,IAAI2zB,EAAM3zB,EAAKhG,OACf,OAAO,SAAUkzB,GACf,IAAK,IAAI7yB,EAAI,EAAGA,EAAIs5B,IAAOt5B,EACzB6yB,EAAMA,EAAIltB,EAAK3F,IAEjB,OAAO6yB,CACT,CACF,EACA,SAAS,GAAMwnF,GACb,MAAMtzE,MAAMszE,EACd,CACA,SAASq8F,GAAgBx5L,GACvB,IAKEld,EACAgG,EACAie,EAPEte,EAAO,GACT+nB,EAAIxQ,EAAEvd,OACJ0kB,EAAI,KACNtC,EAAI,EACJnF,EAAI,GAKN,SAASvd,IACPsG,EAAKtG,KAAKud,EAAIM,EAAE6kB,UAAU/hC,EAAGgG,IAC7B4W,EAAI,GACJ5c,EAAIgG,EAAI,CACV,CACA,IANAkX,GAAQ,GAMHld,EAAIgG,EAAI,EAAGA,EAAI0nB,IAAK1nB,EAEvB,GAAU,QADVie,EAAI/G,EAAElX,IAEJ4W,GAAKM,EAAE6kB,UAAU/hC,EAAGgG,KACpBhG,EAAIgG,OACC,GAAIie,IAAMI,EACfhlB,IACAglB,EAAI,KACJtC,GAAK,MACA,IAAIsC,EACT,SACSrkB,IAAM+hB,GAAW,MAANkC,GAGXjkB,IAAM+hB,GAAW,MAANkC,GAFpBjkB,EAAIgG,EAAI,EACRqe,EAAIJ,GAIW,MAANA,GAAclC,EAMR,MAANkC,GACLje,EAAIhG,GAAGX,IACX0iB,EAAI/hB,EAAIgG,EAAI,GACG,MAANie,IACJlC,GAAG,GAAM,qCAAuC7E,GACjD6E,EAAI,GAAG1iB,IACX0iB,EAAI,EACJ/hB,EAAIgG,EAAI,GAZJA,EAAIhG,EACNX,IAEAW,EAAIgG,EAAI,CAUZ,CAQF,OANI+b,GAAG,GAAM,wCAA0C7E,GACnDmH,GAAG,GAAM,sCAAwCnH,GACjDlX,EAAIhG,IACNgG,IACA3G,KAEKsG,CACT,CACA,SAASg5H,GAAMA,EAAO59H,EAAMirJ,GAC1B,IAAIrmJ,EAAO+wM,GAAgB/3E,GAE3B,OADAA,EAAwB,IAAhBh5H,EAAKhG,OAAegG,EAAK,GAAKg5H,EAC/Bw3E,IAAUnqD,GAAOA,EAAIlrJ,KAAOy1M,IAAQ5wM,GAAO,CAACg5H,GAAQ59H,GAAQ49H,EACrE,CACA,IAAInsH,GAAKmsH,GAAM,MACXn7F,GAAW2yK,IAAS,SAAU3wK,GAChC,OAAOA,CACT,GAAG,GAAI,YACHiR,GAAO0/J,IAAS,WAClB,OAAO,CACT,GAAG,GAAI,QACH3/J,GAAM2/J,IAAS,WACjB,OAAO,CACT,GAAG,GAAI,OACHQ,GAASR,IAAS,WACpB,OAAO,CACT,GAAG,GAAI,QACHS,GAAQT,IAAS,WACnB,OAAO,CACT,GAAG,GAAI,SACP,SAASU,GAAMpsM,EAAQy4B,EAAOilF,GAC5B,IAAI3oH,EAAO,CAAC0jC,GAAO7wB,OAAO,GAAGyT,MAAMplB,KAAKynH,IACxC2b,QAAQr5H,GAAQtK,MAAM2jI,QAAStkI,EACjC,CAEA,IAAIs3M,GAAO,EACPC,GAAU,EACV,GAAO,EACP,GAAO,EACP,GAAQ,EACZ,SAASC,GAAOxxK,EAAG/6B,GACjB,IAAI83B,EAAU7iC,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAKm3M,GAC9EI,EAASzxK,GAAKsxK,GAClB,MAAO,CACL5zK,MAAO,SAAesC,GACpB,OAAI9lC,UAAUC,QACZs3M,GAAUzxK,EACH1mC,MAEAm4M,CAEX,EACA/qJ,MAAO,WAEL,OADI+qJ,GAAUF,IAASx0K,EAAQ93B,GAAU,QAAS,QAAS/K,WACpDZ,IACT,EACAigJ,KAAM,WAEJ,OADIk4D,GAAU,IAAM10K,EAAQ93B,GAAU,OAAQ,OAAQ/K,WAC/CZ,IACT,EACAq1D,KAAM,WAEJ,OADI8iJ,GAAU,IAAM10K,EAAQ93B,GAAU,MAAO,OAAQ/K,WAC9CZ,IACT,EACAgnF,MAAO,WAEL,OADImxH,GAAU,IAAO10K,EAAQ93B,GAAU,MAAO,QAAS/K,WAChDZ,IACT,EAEJ,CACA,IAAI,GAAUygC,MAAMC,QACpB,SAASytB,GAASznB,GAChB,OAAOA,IAAMlvB,OAAOkvB,EACtB,CACA,IAAI0xK,GAAa,SAAoBv3K,GACnC,MAAe,cAARA,CACT,EACA,SAAS,KACP,IAAK,IAAI0oB,EAAO3oD,UAAUC,OAAQw3M,EAAU,IAAI53K,MAAM8oB,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAClF6uJ,EAAQ7uJ,GAAQ5oD,UAAU4oD,GAE5B,OAAO6uJ,EAAQ1mL,QAAO,SAAUzO,EAAKmO,GACnC,IAAK,IAAI60E,KAAS70E,EAChB,GAAc,YAAV60E,EAIFhjF,EAAIo1L,QAAUC,GAAWr1L,EAAIo1L,QAASjnL,EAAOinL,aACxC,CAKL,IAAIp5L,EAAc,WAAVgnF,EAAqB,CAC3B4iB,OAAQ,GACI,UAAV5iB,GAA2B,KAC/BsyG,GAAYt1L,EAAKgjF,EAAO70E,EAAO60E,GAAQhnF,EACzC,CAEF,OAAOgE,CACT,GAAG,CAAC,EACN,CACA,SAASs1L,GAAY97J,EAAQ7b,EAAK1+B,EAAOuuB,GAEvC,IAAIhqB,EAAG0e,EADP,GAAKgzL,GAAWv3K,GAEhB,GAAIstB,GAAShsD,KAAW,GAAQA,GAE9B,IAAKuE,KADL0e,EAAI+oC,GAASzR,EAAO7b,IAAQ6b,EAAO7b,GAAO6b,EAAO7b,GAAO,CAAC,EAC/C1+B,EACJuuB,KAAwB,IAAZA,GAAoBA,EAAQhqB,IAC1C8xM,GAAYpzL,EAAG1e,EAAGvE,EAAMuE,IACf0xM,GAAW1xM,KACpB0e,EAAE1e,GAAKvE,EAAMuE,SAIjBg2C,EAAO7b,GAAO1+B,CAElB,CACA,SAASo2M,GAAWp6L,EAAG8E,GACrB,GAAS,MAAL9E,EAAW,OAAO8E,EACtB,IAAI+N,EAAM,CAAC,EACT9N,EAAM,GACR,SAAS1R,EAAIk1B,GACN1V,EAAI0V,EAAEzkC,QACT+uB,EAAI0V,EAAEzkC,MAAQ,EACdihB,EAAI3iB,KAAKmmC,GAEb,CAGA,OAFAzjB,EAAE7a,QAAQoJ,GACV2M,EAAE/V,QAAQoJ,GACH0R,CACT,CACA,SAASu1L,GAAKl2K,GACZ,OAAOA,EAAMA,EAAM1hC,OAAS,EAC9B,CACA,SAAS63M,GAAShyK,GAChB,OAAY,MAALA,GAAmB,KAANA,EAAW,MAAQA,CACzC,CACA,IAAIoU,GAAM,SAAa69J,GACrB,OAAO,SAAU1tM,GACf,OAAO0tM,EAAO1+L,KAAK6gC,IAAI7vC,EACzB,CACF,EACIyuC,GAAM,SAAai/J,GACrB,OAAO,SAAU1tM,GACf,OAAOgP,KAAKy/B,IAAIi/J,EAAO1tM,EACzB,CACF,EACI2tM,GAAS,SAAgBzzL,GAC3B,OAAO,SAAUla,GACf,OAAOgP,KAAK0+L,KAAK1tM,GAAKgP,KAAK4+L,MAAM5+L,KAAKoG,IAAIpV,EAAIka,GAChD,CACF,EACI2zL,GAAS,SAAgB3zL,GAC3B,OAAO,SAAUla,GACf,OAAOgP,KAAK0+L,KAAK1tM,GAAKgP,KAAK8+L,MAAM9+L,KAAKoG,IAAIpV,IAAMka,CAClD,CACF,EACIxJ,GAAM,SAAaC,GACrB,OAAO,SAAU3Q,GACf,OAAOA,EAAI,GAAKgP,KAAK0B,KAAK1Q,EAAG2Q,GAAY3B,KAAK0B,IAAI1Q,EAAG2Q,EACvD,CACF,EACA,SAASo9L,GAAIz+J,EAAQF,EAAO4+J,EAAMC,GAChC,IAAIh9K,EAAK+8K,EAAK1+J,EAAO,IACnBllB,EAAK4jL,EAAKR,GAAKl+J,IACf4+J,GAAM9jL,EAAK6G,GAAMme,EACnB,MAAO,CAAC6+J,EAAOh9K,EAAKi9K,GAAKD,EAAO7jL,EAAK8jL,GACvC,CACA,SAASC,GAAU7+J,EAAQF,GACzB,OAAO2+J,GAAIz+J,EAAQF,EAAOq+J,GAAUh0K,GACtC,CACA,SAAS20K,GAAO9+J,EAAQF,GACtB,IAAIs+J,EAAO1+L,KAAK0+L,KAAKp+J,EAAO,IAC5B,OAAOy+J,GAAIz+J,EAAQF,EAAOX,GAAIi/J,GAAO79J,GAAI69J,GAC3C,CACA,SAASW,GAAO/+J,EAAQF,EAAOz+B,GAC7B,OAAOo9L,GAAIz+J,EAAQF,EAAO1+B,GAAIC,GAAWD,GAAI,EAAIC,GACnD,CACA,SAAS29L,GAAUh/J,EAAQF,EAAOm/J,GAChC,OAAOR,GAAIz+J,EAAQF,EAAOu+J,GAAOY,GAAWV,GAAOU,GACrD,CACA,SAASt1J,GAAK3J,EAAQktE,EAAQ3uG,EAAOmgM,EAAMC,GACzC,IAAIh9K,EAAK+8K,EAAK1+J,EAAO,IACnBllB,EAAK4jL,EAAKR,GAAKl+J,IACfk/J,EAAe,MAAVhyF,EAAiBwxF,EAAKxxF,IAAWvrF,EAAK7G,GAAM,EACnD,MAAO,CAAC6jL,EAAOO,GAAMv9K,EAAKu9K,GAAM3gM,GAAQogM,EAAOO,GAAMpkL,EAAKokL,GAAM3gM,GAClE,CACA,SAAS4gM,GAAWn/J,EAAQktE,EAAQ3uG,GAClC,OAAOorC,GAAK3J,EAAQktE,EAAQ3uG,EAAO4/L,GAAUh0K,GAC/C,CACA,SAASi1K,GAAQp/J,EAAQktE,EAAQ3uG,GAC/B,IAAI6/L,EAAO1+L,KAAK0+L,KAAKp+J,EAAO,IAC5B,OAAO2J,GAAK3J,EAAQktE,EAAQ3uG,EAAO4gC,GAAIi/J,GAAO79J,GAAI69J,GACpD,CACA,SAASiB,GAAQr/J,EAAQktE,EAAQ3uG,EAAO8C,GACtC,OAAOsoC,GAAK3J,EAAQktE,EAAQ3uG,EAAO6C,GAAIC,GAAWD,GAAI,EAAIC,GAC5D,CACA,SAASi+L,GAAWt/J,EAAQktE,EAAQ3uG,EAAO0gM,GACzC,OAAOt1J,GAAK3J,EAAQktE,EAAQ3uG,EAAO8/L,GAAOY,GAAWV,GAAOU,GAC9D,CACA,SAASM,GAAQ/xI,GACf,OAAO,KAAO,IAAI/kE,KAAK+kE,GAAM+5D,WAAa,EAC5C,CACA,SAASi4E,GAAWhyI,GAClB,OAAO,KAAO,IAAI/kE,KAAK+kE,GAAMiyI,cAAgB,EAC/C,CACA,SAAS,GAAMtzK,GACb,OAAY,MAALA,EAAY,GAAQA,GAAKA,EAAI,CAACA,GAAK,EAC5C,CASA,SAASuzK,GAAWtyJ,EAAOztC,EAAKC,GAC9B,IAEE+1G,EAFEgqF,EAAKvyJ,EAAM,GACbwyJ,EAAKxyJ,EAAM,GAQb,OANIwyJ,EAAKD,IACPhqF,EAAOiqF,EACPA,EAAKD,EACLA,EAAKhqF,IAEPA,EAAOiqF,EAAKD,IACG//L,EAAMD,EAAM,CAACA,EAAKC,GAAO,CAAC+/L,EAAKjgM,KAAKC,IAAID,KAAKE,IAAI+/L,EAAIhgM,GAAMC,EAAM+1G,GAAOgqF,EAAKhqF,EAC9F,CACA,SAASwc,GAAWhmG,GAClB,MAAoB,mBAANA,CAChB,CACA,IAAI0zK,GAAa,aACjB,SAAS,GAAQx6E,EAAQy6E,EAAQntD,GAC/BA,EAAMA,GAAO,CAAC,EACdmtD,EAAS,GAAMA,IAAW,GAC1B,IAAIC,EAAM,GACRt4M,EAAM,GACNu4M,EAAO,CAAC,EACR5iJ,EAAMu1F,EAAIstD,YAAcA,GAS1B,OARA,GAAM56E,GAAQx3H,SAAQ,SAAU/E,EAAGnC,GACxB,MAALmC,IACJi3M,EAAI/5M,KAAK85M,EAAOn5M,KAAOk5M,IAAc,EAAI,GACzCp4M,EAAIzB,KAAK8C,EAAIqpI,GAAWrpI,GAAKA,EAAIw8H,GAAMx8H,EAAG,KAAM6pJ,KAC/CsqD,GAAen0M,IAAM,IAAI+E,SAAQ,SAAUs+B,GAC1C,OAAO6zK,EAAK7zK,GAAK,CACnB,IACF,IACsB,IAAf1kC,EAAInB,OAAe,KAAOw2M,GAAS1/I,EAAI31D,EAAKs4M,GAAM9iM,OAAOopB,KAAK25K,GACvE,CACA,IAAIE,GAAY,SAAmBj1L,EAAGvT,GACpC,OAAQuT,EAAIvT,GAAU,MAALuT,IAAmB,MAALvT,GAAa,GAAKuT,EAAIvT,GAAU,MAALA,IAAmB,MAALuT,EAAY,GAAKvT,EAAIA,aAAajP,MAAQiP,EAAIA,GAAGuT,EAAIA,aAAaxiB,MAAQwiB,EAAIA,KAAOA,GAAKvT,GAAMA,GAAK,EAAIA,GAAMA,GAAKuT,GAAMA,EAAI,EAAI,EAC5M,EACIg1L,GAAa,SAAoB56E,EAAQy6E,GAC3C,OAAyB,IAAlBz6E,EAAO/+H,OAAe65M,GAAS96E,EAAO,GAAIy6E,EAAO,IAAMM,GAAS/6E,EAAQy6E,EAAQz6E,EAAO/+H,OAChG,EACI65M,GAAW,SAAkB76E,EAAOviF,GACtC,OAAO,SAAUn/B,EAAG8E,GAClB,OAAOw3L,GAAU56E,EAAM1hH,GAAI0hH,EAAM58G,IAAMq6B,CACzC,CACF,EACIq9J,GAAW,SAAkB/6E,EAAQy6E,EAAQzrL,GAE/C,OADAyrL,EAAO95M,KAAK,GACL,SAAU4d,EAAG8E,GAIlB,IAHA,IAAI5f,EACF8hB,EAAI,EACJjkB,GAAK,EACM,IAANikB,KAAajkB,EAAI0tB,GACtBvrB,EAAIu8H,EAAO1+H,GACXikB,EAAIs1L,GAAUp3M,EAAE8a,GAAI9a,EAAE4f,IAExB,OAAOkC,EAAIk1L,EAAOn5M,EACpB,CACF,EACA,SAAS,GAASwlC,GAChB,OAAOgmG,GAAWhmG,GAAKA,EAAI,WACzB,OAAOA,CACT,CACF,CACA,SAAS,GAAS7iC,EAAO4/B,GACvB,IAAIm3K,EACJ,OAAO,SAAU12M,GACX02M,GAAKj2M,aAAai2M,GACtBA,EAAMt3M,YAAW,WACf,OAAOmgC,EAAQv/B,GAAI02M,EAAM,IAC3B,GAAG/2M,EACL,CACF,CACA,SAASiyC,GAAOpP,GACd,IAAK,IAAIz7B,EAAGvE,EAAGxF,EAAI,EAAGs5B,EAAM55B,UAAUC,OAAQK,EAAIs5B,IAAOt5B,EAEvD,IAAKwF,KADLuE,EAAIrK,UAAUM,GAEZwlC,EAAEhgC,GAAKuE,EAAEvE,GAGb,OAAOggC,CACT,CAMA,SAAS,GAAOnE,EAAOl/B,GACrB,IACEurB,EACA3c,EACAiI,EACAC,EAJEjZ,EAAI,EAKR,GAAIqhC,IAAU3T,EAAI2T,EAAM1hC,QACtB,GAAS,MAALwC,EAAW,CAEb,IAAK4O,EAAIswB,EAAMrhC,GAAIA,EAAI0tB,IAAW,MAAL3c,GAAaA,GAAMA,GAAIA,EAAIswB,IAAQrhC,IAIhE,IAHAgZ,EAAMC,EAAMlI,EAGL/Q,EAAI0tB,IAAK1tB,EAGL,OAFT+Q,EAAIswB,EAAMrhC,MAGJ+Q,EAAIiI,IAAKA,EAAMjI,GACfA,EAAIkI,IAAKA,EAAMlI,GAGzB,KAAO,CAEL,IAAKA,EAAI5O,EAAEk/B,EAAMrhC,IAAKA,EAAI0tB,IAAW,MAAL3c,GAAaA,GAAMA,GAAIA,EAAI5O,EAAEk/B,IAAQrhC,KAIrE,IAHAgZ,EAAMC,EAAMlI,EAGL/Q,EAAI0tB,IAAK1tB,EAGL,OAFT+Q,EAAI5O,EAAEk/B,EAAMrhC,OAGN+Q,EAAIiI,IAAKA,EAAMjI,GACfA,EAAIkI,IAAKA,EAAMlI,GAGzB,CAEF,MAAO,CAACiI,EAAKC,EACf,CACA,SAAS0gM,GAAYt4K,EAAOl/B,GAC1B,IAEE8a,EACA8E,EACAkC,EACAK,EACAvT,EANE2c,EAAI2T,EAAM1hC,OACVK,GAAK,EAMT,GAAS,MAALmC,EAAW,CACb,OAASnC,EAAI0tB,GAEX,GAAS,OADT3L,EAAIsf,EAAMrhC,KACO+hB,GAAKA,EAAG,CACvB9E,EAAIgH,EAAIlC,EACR,KACF,CAEF,GAAI/hB,IAAM0tB,EAAG,MAAO,EAAE,GAAI,GAE1B,IADApJ,EAAIvT,EAAI/Q,IACCA,EAAI0tB,GAEF,OADT3L,EAAIsf,EAAMrhC,MAEJid,EAAI8E,IACN9E,EAAI8E,EACJuC,EAAItkB,GAEFikB,EAAIlC,IACNkC,EAAIlC,EACJhR,EAAI/Q,GAIZ,KAAO,CACL,OAASA,EAAI0tB,GAEX,GAAS,OADT3L,EAAI5f,EAAEk/B,EAAMrhC,GAAIA,EAAGqhC,KACFtf,GAAKA,EAAG,CACvB9E,EAAIgH,EAAIlC,EACR,KACF,CAEF,GAAI/hB,IAAM0tB,EAAG,MAAO,EAAE,GAAI,GAE1B,IADApJ,EAAIvT,EAAI/Q,IACCA,EAAI0tB,GAEF,OADT3L,EAAI5f,EAAEk/B,EAAMrhC,GAAIA,EAAGqhC,MAEbpkB,EAAI8E,IACN9E,EAAI8E,EACJuC,EAAItkB,GAEFikB,EAAIlC,IACNkC,EAAIlC,EACJhR,EAAI/Q,GAIZ,CACA,MAAO,CAACskB,EAAGvT,EACb,CACA,IAAI6oM,GAAMtjM,OAAOtX,UAAUqX,eAC3B,SAASwjM,GAAKp2K,EAAQq2K,GACpB,OAAOF,GAAIl5M,KAAK+iC,EAAQq2K,EAC1B,CACA,IAAIC,GAAO,CAAC,EACZ,SAASC,GAAQ7xF,GACf,IACE8xF,EADEpnL,EAAM,CAAC,EAEX,SAASqnL,EAAMv6K,GACb,OAAOk6K,GAAKhnL,EAAK8M,IAAQ9M,EAAI8M,KAASo6K,EACxC,CACA,IAAIjqL,EAAM,CACRsT,KAAM,EACNi8B,MAAO,EACP57B,OAAQ5Q,EACR+N,IAAKs5K,EACLp5M,IAAK,SAAa6+B,GAChB,OAAOu6K,EAAMv6K,GAAO9M,EAAI8M,QAAOpK,CACjC,EACAv0B,IAAK,SAAa2+B,EAAK1+B,GAMrB,OALKi5M,EAAMv6K,OACP7P,EAAIsT,KACFvQ,EAAI8M,KAASo6K,MAAQjqL,EAAIuvC,OAE/BxsC,EAAI8M,GAAO1+B,EACJnC,IACT,EACAqmC,OAAQ,SAAiBxF,GAMvB,OALIu6K,EAAMv6K,OACN7P,EAAIsT,OACJtT,EAAIuvC,MACNxsC,EAAI8M,GAAOo6K,IAENj7M,IACT,EACAuP,MAAO,WACLyhB,EAAIsT,KAAOtT,EAAIuvC,MAAQ,EACvBvvC,EAAI2T,OAAS5Q,EAAM,CAAC,CACtB,EACAzuB,KAAM,SAAcohC,GAClB,OAAI9lC,UAAUC,QACZs6M,EAAQz0K,EACD1V,GAEAmqL,CAEX,EACAE,MAAO,WACL,IAAI9lL,EAAO,CAAC,EACR+O,EAAO,EACX,IAAK,IAAImjE,KAAS1zE,EAAK,CACrB,IAAI5xB,EAAQ4xB,EAAI0zE,GACZtlG,IAAU84M,IAAUE,GAAUA,EAAMh5M,KACtCozB,EAAKkyE,GAAStlG,IACZmiC,EAEN,CACAtT,EAAIsT,KAAOA,EACXtT,EAAIuvC,MAAQ,EACZvvC,EAAI2T,OAAS5Q,EAAMwB,CACrB,GAKF,OAHI8zF,GAAO7xG,OAAOopB,KAAKyoF,GAAOjhH,SAAQ,SAAUy4B,GAC9C7P,EAAI9uB,IAAI2+B,EAAKwoF,EAAMxoF,GACrB,IACO7P,CACT,CACA,SAASsqL,GAAM3zJ,EAAOxlD,EAAOo5M,EAAWvsM,EAAM2D,EAAOkrB,GACnD,IAAK09K,GAA2B,IAAdA,EAAiB,OAAO19K,EAC1C,IAGEvY,EAHEvhB,GAAKw3M,EACLp9L,EAAIwpC,EAAM,GACZ1kC,EAAIw1L,GAAK9wJ,GAIP1kC,EAAI9E,IACNmH,EAAInH,EACJA,EAAI8E,EACJA,EAAIqC,GAINA,EAAIrL,KAAKoG,IAAIle,EAAQgc,GACrB,IAAIe,EAAIjF,KAAKoG,IAAI4C,EAAI9gB,GAGrB,OAAOmjB,EAAIpG,GAAKoG,GAAKvhB,EAAIiL,EAAOkQ,GAAKnb,EAAI4O,EAAQkrB,CACnD,CACA,SAAS,GAAS/tB,EAAO8B,EAAQ4pM,GAC/B,IAAIx6K,EAAQlxB,EAAM5P,UAAYsX,OAAO0wB,OAAOt2B,EAAO1R,WAOnD,OANAsX,OAAOoxB,eAAe5H,EAAO,cAAe,CAC1C7+B,MAAO2N,EACPojD,UAAU,EACVvqB,YAAY,EACZsqB,cAAc,IAETnd,GAAO9U,EAAOw6K,EACvB,CAOA,SAASC,GAAQt5M,EAAOwlD,EAAO34C,EAAM2D,GACnC,IAEE5O,EAFE8pB,EAAK85B,EAAM,GACbh6B,EAAKg6B,EAAMA,EAAM9mD,OAAS,GAS5B,OAPIgtB,EAAKF,IACP5pB,EAAI8pB,EACJA,EAAKF,EACLA,EAAK5pB,GAGP4O,OAAkB8jB,IAAV9jB,GAAuBA,IAD/B3D,OAAgBynB,IAATznB,GAAsBA,GAEd6e,GAAM1rB,EAAQ0rB,EAAK1rB,KAAWwQ,EAAQxQ,GAASwrB,EAAKxrB,EAAQwrB,EAC7E,CACA,SAAS+tL,GAAUh1K,GACjB,MAAoB,kBAANA,CAChB,CACA,SAASi1K,GAAOj1K,GACd,MAA6C,kBAAtClvB,OAAOtX,UAAU0iB,SAAShhB,KAAK8kC,EACxC,CACA,SAASk1K,GAAWl1K,GAClB,OAAOA,GAAKgmG,GAAWhmG,EAAE0R,OAAOC,UAClC,CACA,SAASsO,GAASjgB,GAChB,MAAoB,iBAANA,CAChB,CACA,SAAS8nB,GAAS9nB,GAChB,MAA6C,oBAAtClvB,OAAOtX,UAAU0iB,SAAShhB,KAAK8kC,EACxC,CACA,SAAS,GAASA,GAChB,MAAoB,iBAANA,CAChB,CACA,SAAS7F,GAAI++F,EAAQhwE,EAAMs9F,GACrBttB,IACFA,EAAShwE,EAAO,GAAMgwE,GAAQ5uG,KAAI,SAAU3tB,GAC1C,OAAOA,EAAEuiB,QAAQ,SAAU,KAC7B,IAAK,GAAMg6G,IAEb,IAKIvsH,EALAmnB,EAAMolG,GAAUA,EAAO/+H,OACzB82D,EAAMu1F,GAAOA,EAAIlrJ,KAAOy1M,GACxBzmL,EAAM,SAAa3tB,GACjB,OAAOs0D,EAAI/H,EAAO,CAACvsD,GAAKu0M,GAAgBv0M,GAC1C,EAEF,GAAKm3B,EAIE,GAAY,IAARA,EAAW,CACpB,IAAIx4B,EAAMgvB,EAAI4uG,EAAO,IACrBvsH,EAAK,SAAYqzB,GACf,MAAO,GAAK1kC,EAAI0kC,EAClB,CACF,KAAO,CACL,IAAIouK,EAAOl1E,EAAO5uG,IAAIA,GACtB3d,EAAK,SAAYqzB,GAGf,IAFA,IAAI5oB,EAAI,GAAKg3L,EAAK,GAAGpuK,GACnBxlC,EAAI,IACGA,EAAIs5B,GAAK1c,GAAK,IAAMg3L,EAAK5zM,GAAGwlC,GACrC,OAAO5oB,CACT,CACF,MAhBEzK,EAAK,WACH,MAAO,EACT,EAeF,OAAOgkM,GAAShkM,EAAIusH,EAAQ,MAC9B,CACA,SAASi8E,GAAKt5K,EAAOu5K,GACnB,IAAI5B,EAAK33K,EAAM,GACb43K,EAAK1B,GAAKl2K,GACVl/B,GAAKy4M,EACP,OAAQz4M,EAAe,IAANA,EAAU82M,EAAKD,EAAK72M,GAAK82M,EAAKD,GAAnCA,CACd,CACA,IAAI6B,GAAmB,IAGvB,SAASC,GAASC,GAEhB,IAAI76K,EAAM9L,EAAMgP,EADhB23K,GAAWA,GAAWF,GAEtB,IAAIxsM,EAAQ,WACV6xB,EAAO,CAAC,EACR9L,EAAO,CAAC,EACRgP,EAAO,CACT,EACI9+B,EAAS,SAAgBq7B,EAAK1+B,GAMhC,QALMmiC,EAAO23K,IACX3mL,EAAO8L,EACPA,EAAO,CAAC,EACRkD,EAAO,GAEFlD,EAAKP,GAAO1+B,CACrB,EAEA,OADAoN,IACO,CACLA,MAAOA,EACPuyB,IAAK,SAAajB,GAChB,OAAOk6K,GAAK35K,EAAMP,IAAQk6K,GAAKzlL,EAAMuL,EACvC,EACA7+B,IAAK,SAAa6+B,GAChB,OAAOk6K,GAAK35K,EAAMP,GAAOO,EAAKP,GAAOk6K,GAAKzlL,EAAMuL,GAAOr7B,EAAOq7B,EAAKvL,EAAKuL,SAAQpK,CAClF,EACAv0B,IAAK,SAAa2+B,EAAK1+B,GACrB,OAAO44M,GAAK35K,EAAMP,GAAOO,EAAKP,GAAO1+B,EAAQqD,EAAOq7B,EAAK1+B,EAC3D,EAEJ,CACA,SAAS+5M,GAAM1pM,EAAS2pM,EAAQC,EAAQ1/J,GACtC,IAAIS,EAAKg/J,EAAOt7M,OACduuB,EAAKgtL,EAAOv7M,OACd,IAAKuuB,EAAI,OAAO+sL,EAChB,IAAKh/J,EAAI,OAAOi/J,EAKhB,IAJA,IAAI93F,EAAS5nE,GAAU,IAAIy/J,EAAOr3M,YAAYq4C,EAAK/tB,GAC/CysB,EAAK,EACPC,EAAK,EACL56C,EAAI,EACC26C,EAAKsB,GAAMrB,EAAK1sB,IAAMluB,EAC3BojH,EAAOpjH,GAAKsR,EAAQ2pM,EAAOtgK,GAAKugK,EAAOtgK,IAAO,EAAIsgK,EAAOtgK,KAAQqgK,EAAOtgK,KAE1E,KAAOA,EAAKsB,IAAMtB,IAAM36C,EACtBojH,EAAOpjH,GAAKi7M,EAAOtgK,GAErB,KAAOC,EAAK1sB,IAAM0sB,IAAM56C,EACtBojH,EAAOpjH,GAAKk7M,EAAOtgK,GAErB,OAAOwoE,CACT,CACA,SAASp+G,GAAOw7B,EAAK26K,GAEnB,IADA,IAAIv+L,EAAI,KACCu+L,GAAQ,GAAGv+L,GAAK4jB,EACzB,OAAO5jB,CACT,CACA,SAASw+L,GAAI56K,EAAK7gC,EAAQ07M,EAASloH,GACjC,IAAIlvE,EAAIo3L,GAAW,IACjBz+L,EAAI4jB,EAAM,GACV9S,EAAI/tB,EAASid,EAAEjd,OACjB,OAAO+tB,GAAK,EAAI9Q,EAAc,SAAVu2E,EAAmBnuF,GAAOif,EAAGyJ,GAAK9Q,EAAc,WAAVu2E,EAAqBnuF,GAAOif,KAAMyJ,EAAI,IAAM9Q,EAAI5X,GAAOif,EAAGlL,KAAKisJ,KAAKt3I,EAAI,IAAM9Q,EAAI5X,GAAOif,EAAGyJ,EACxJ,CAMA,SAASshG,GAAK3tF,GACZ,OAAOA,GAASk2K,GAAKl2K,GAASA,EAAM,IAAM,CAC5C,CACA,SAASgtB,GAAEtkD,GACT,OAAO,GAAQA,GAAK,IAAMA,EAAE+lB,IAAIu+B,IAAK,IAAMpB,GAASljD,IAAM,GAASA,GAGnE+1C,KAAKF,UAAU71C,GAAG2a,QAAQ,SAAU,WAAWA,QAAQ,SAAU,WAAa3a,CAChF,CACA,SAASuxM,GAAU91K,GACjB,OAAY,MAALA,GAAmB,KAANA,EAAW,QAAQA,GAAW,UAANA,GAAuB,MAANA,MAAsBA,CACrF,CACA,IAAI+1K,GAAgB,SAAuB/1K,GACzC,OAAOigB,GAASjgB,IAASi1K,GAAOj1K,GAAXA,EAAoB1jC,KAAKyjD,MAAM/f,EACtD,EACA,SAAS,GAAOA,EAAGg2K,GAEjB,OADAA,EAASA,GAAUD,GACP,MAAL/1K,GAAmB,KAANA,EAAW,KAAOg2K,EAAOh2K,EAC/C,CACA,SAAS,GAASA,GAChB,OAAY,MAALA,GAAmB,KAANA,EAAW,KAAOA,EAAI,EAC5C,CACA,SAASi2K,GAAMj2K,GAGb,IAFA,IAAI5oB,EAAI,CAAC,EACP8Q,EAAI8X,EAAE7lC,OACCK,EAAI,EAAGA,EAAI0tB,IAAK1tB,EAAG4c,EAAE4oB,EAAExlC,KAAM,EACtC,OAAO4c,CACT,CACA,SAAS8+L,GAASl7K,EAAK7gC,EAAQwzF,EAAOi0F,GACpC,IAAIpkL,EAAgB,MAAZokL,EAAmBA,EAAW,IACpCxqK,EAAI4jB,EAAM,GACV9S,EAAI9Q,EAAEjd,OACNykB,EAAIrL,KAAKE,IAAI,EAAGtZ,EAASqD,EAAErD,QAC7B,OAAO+tB,GAAK/tB,EAASid,EAAc,SAAVu2E,EAAmBnwF,EAAI4Z,EAAEkJ,MAAM4H,EAAItJ,GAAe,WAAV+uE,EAAqBv2E,EAAEkJ,MAAM,EAAG/M,KAAKisJ,KAAK5gJ,EAAI,IAAMphB,EAAI4Z,EAAEkJ,MAAM4H,KAAOtJ,EAAI,IAAMxH,EAAEkJ,MAAM,EAAG1B,GAAKphB,CACpK,CACA,SAAS24M,GAAWt6K,EAAOhyB,EAAQusM,GACjC,GAAIv6K,EACF,GAAIhyB,EAEF,IADA,IAAIqe,EAAI2T,EAAM1hC,OACLK,EAAI,EAAGA,EAAI0tB,IAAK1tB,EAAG,CAC1B,IAAI6C,EAAIwM,EAAOgyB,EAAMrhC,IACjB6C,GAAG+4M,EAAQ/4M,EAAG7C,EAAGqhC,EACvB,MAEAA,EAAMn6B,QAAQ00M,EAGpB,CC9vBA,IAAIC,GAAM,CAAC,EACTC,GAAM,CAAC,EACPC,GAAQ,GACRC,GAAU,GACVC,GAAS,GACX,SAASC,GAAgBC,GACvB,OAAO,IAAIp0H,SAAS,IAAK,WAAao0H,EAAQrsL,KAAI,SAAU/uB,EAAMf,GAChE,OAAO8/C,KAAKF,UAAU7+C,GAAQ,OAASf,EAAI,SAC7C,IAAGmoB,KAAK,KAAO,IACjB,CASA,SAASi0L,GAAa5mF,GACpB,IAAI6mF,EAAY/lM,OAAO0wB,OAAO,MAC5Bm1K,EAAU,GAQZ,OAPA3mF,EAAKtuH,SAAQ,SAAUg6B,GACrB,IAAK,IAAIo/G,KAAUp/G,EACXo/G,KAAU+7D,GACdF,EAAQ98M,KAAKg9M,EAAU/7D,GAAUA,EAGvC,IACO67D,CACT,CACA,SAAS,GAAIl7M,EAAO4L,GAClB,IAAI+P,EAAI3b,EAAQ,GACdtB,EAASid,EAAEjd,OACb,OAAOA,EAASkN,EAAQ,IAAI0yB,MAAM1yB,EAAQlN,EAAS,GAAGwoB,KAAK,GAAKvL,EAAIA,CACtE,CAIA,SAAS0/L,GAAWz1I,GAClB,IAJkB7F,EAIdu7I,EAAQ11I,EAAK21I,cACfC,EAAU51I,EAAK61I,gBACfC,EAAU91I,EAAK+1I,gBACfC,EAAeh2I,EAAKi2I,qBACtB,OAAO97L,MAAM6lD,GAAQ,iBARH7F,EAQ+B6F,EAAKk2I,kBAPxC,EAAI,IAAM,IAAK/7I,EAAM,GAAKA,EAAO,KAAO,IAAM,GAAIA,EAAM,GAAK,GAAIA,EAAM,IAOR,IAAM,GAAI6F,EAAKiyI,cAAgB,EAAG,GAAK,IAAM,GAAIjyI,EAAKm2I,aAAc,IAAMH,EAAe,IAAM,GAAIN,EAAO,GAAK,IAAM,GAAIE,EAAS,GAAK,IAAM,GAAIE,EAAS,GAAK,IAAM,GAAIE,EAAc,GAAK,IAAMF,EAAU,IAAM,GAAIJ,EAAO,GAAK,IAAM,GAAIE,EAAS,GAAK,IAAM,GAAIE,EAAS,GAAK,IAAMF,GAAWF,EAAQ,IAAM,GAAIA,EAAO,GAAK,IAAM,GAAIE,EAAS,GAAK,IAAM,GAC9a,CACe,SAAS,GAACQ,GACvB,IAAIC,EAAW,IAAIt5L,OAAO,KAAQq5L,EAAY,SAC5CE,EAAYF,EAAU1K,WAAW,GAWnC,SAAS6K,EAAUz9L,EAAMxd,GACvB,IAOEU,EAPE2yH,EAAO,GAET/zE,EAAI9hC,EAAKhgB,OACT09M,EAAI,EAEJ3vL,EAAI,EAIJ4vL,EAAM77J,GAAK,EAEX87J,GAAM,EAKR,SAASr0I,IACP,GAAIo0I,EAAK,OAAOxB,GAChB,GAAIyB,EAAK,OAAOA,GAAM,EAAO1B,GAG7B,IAAI77M,EAEFikB,EADAje,EAAIq3M,EAEN,GAAI19L,EAAK4yL,WAAWvsM,KAAO+1M,GAAO,CAChC,KAAOsB,IAAM57J,GAAK9hC,EAAK4yL,WAAW8K,KAAOtB,IAASp8L,EAAK4yL,aAAa8K,KAAOtB,KAK3E,OAJK/7M,EAAIq9M,IAAM57J,EAAG67J,GAAM,GAAer5L,EAAItE,EAAK4yL,WAAW8K,QAAUrB,GAASuB,GAAM,EAAct5L,IAAMg4L,KACtGsB,GAAM,EACF59L,EAAK4yL,WAAW8K,KAAOrB,MAAWqB,GAEjC19L,EAAKmG,MAAM9f,EAAI,EAAGhG,EAAI,GAAG0kB,QAAQ,MAAO,IACjD,CAGA,KAAO24L,EAAI57J,GAAG,CACZ,IAAKx9B,EAAItE,EAAK4yL,WAAWvyM,EAAIq9M,QAAUrB,GAASuB,GAAM,OAAU,GAAIt5L,IAAMg4L,GACxEsB,GAAM,EACF59L,EAAK4yL,WAAW8K,KAAOrB,MAAWqB,OACjC,GAAIp5L,IAAMk5L,EAAW,SAC5B,OAAOx9L,EAAKmG,MAAM9f,EAAGhG,EACvB,CAGA,OAAOs9M,GAAM,EAAM39L,EAAKmG,MAAM9f,EAAGy7C,EACnC,CACA,IA/BI9hC,EAAK4yL,WAAW9wJ,EAAI,KAAOu6J,MAAWv6J,EACtC9hC,EAAK4yL,WAAW9wJ,EAAI,KAAOw6J,MAAUx6J,GA8BjC5+C,EAAIqmE,OAAa4yI,IAAK,CAE5B,IADA,IAAI56K,EAAM,GACHr+B,IAAMg5M,IAAOh5M,IAAMi5M,IAAK56K,EAAI7hC,KAAKwD,GAAIA,EAAIqmE,IAC5C/mE,GAA4B,OAAtB++B,EAAM/+B,EAAE++B,EAAKxT,OACvB8nG,EAAKn2H,KAAK6hC,EACZ,CACA,OAAOs0F,CACT,CACA,SAASgoF,EAAchoF,EAAM2mF,GAC3B,OAAO3mF,EAAK1lG,KAAI,SAAUoR,GACxB,OAAOi7K,EAAQrsL,KAAI,SAAUwwH,GAC3B,OAAOm9D,EAAYv8K,EAAIo/G,GACzB,IAAGn4H,KAAK80L,EACV,GACF,CAYA,SAASS,EAAUx8K,GACjB,OAAOA,EAAIpR,IAAI2tL,GAAat1L,KAAK80L,EACnC,CACA,SAASQ,EAAYx8M,GACnB,OAAgB,MAATA,EAAgB,GAAKA,aAAiBa,KAAOw6M,GAAWr7M,GAASi8M,EAAS94M,KAAKnD,GAAS,IAAM,IAAOA,EAAMyjB,QAAQ,KAAM,MAAU,IAAOzjB,CACnJ,CACA,MAAO,CACLskD,MAzFF,SAAe5lC,EAAMxd,GACnB,IAAIw7M,EACFxB,EACA3mF,EAAO4nF,EAAUz9L,GAAM,SAAUuhB,EAAKlhC,GACpC,GAAI29M,EAAS,OAAOA,EAAQz8K,EAAKlhC,EAAI,GACrCm8M,EAAUj7K,EAAKy8K,EAAUx7M,EA3CjC,SAAyBg6M,EAASh6M,GAChC,IAAIshC,EAASy4K,GAAgBC,GAC7B,OAAO,SAAUj7K,EAAKlhC,GACpB,OAAOmC,EAAEshC,EAAOvC,GAAMlhC,EAAGm8M,EAC3B,CACF,CAsCqCyB,CAAgB18K,EAAK/+B,GAAK+5M,GAAgBh7K,EACzE,IAEF,OADAs0F,EAAK2mF,QAAUA,GAAW,GACnB3mF,CACT,EAiFE4nF,UAAWA,EACXtqK,OApBF,SAAgB0iF,EAAM2mF,GAEpB,OADe,MAAXA,IAAiBA,EAAUC,GAAa5mF,IACrC,CAAC2mF,EAAQrsL,IAAI2tL,GAAat1L,KAAK80L,IAAY5qM,OAAOmrM,EAAchoF,EAAM2mF,IAAUh0L,KAAK,KAC9F,EAkBE01L,WAjBF,SAAoBroF,EAAM2mF,GAExB,OADe,MAAXA,IAAiBA,EAAUC,GAAa5mF,IACrCgoF,EAAchoF,EAAM2mF,GAASh0L,KAAK,KAC3C,EAeE21L,WAdF,SAAoBtoF,GAClB,OAAOA,EAAK1lG,IAAI4tL,GAAWv1L,KAAK,KAClC,EAaEu1L,UAAWA,EACXD,YAAaA,EAEjB,CCjJe,SAAS,GAAC1zM,GACvB,OAAOA,CACT,CCAe,SAAS,GAACg0M,EAAU75L,GAEjC,MADiB,iBAANA,IAAgBA,EAAI65L,EAASC,QAAQ95L,IAC9B,uBAAXA,EAAEzc,KAAgC,CACvCA,KAAM,oBACNw2M,SAAU/5L,EAAEg6L,WAAWpuL,KAAI,SAAU5L,GACnC,OAAO,GAAQ65L,EAAU75L,EAC3B,KACE,GAAQ65L,EAAU75L,EACxB,CACA,SAAS,GAAQ65L,EAAU75L,GACzB,IAAI1R,EAAK0R,EAAE1R,GACT5E,EAAOsW,EAAEtW,KACTyyI,EAA6B,MAAhBn8H,EAAEm8H,WAAqB,CAAC,EAAIn8H,EAAEm8H,WAC3C89D,EAAW,GAAOJ,EAAU75L,GAC9B,OAAa,MAAN1R,GAAsB,MAAR5E,EAAe,CAClCnG,KAAM,UACN44I,WAAYA,EACZ89D,SAAUA,GACA,MAARvwM,EAAe,CACjBnG,KAAM,UACN+K,GAAIA,EACJ6tI,WAAYA,EACZ89D,SAAUA,GACR,CACF12M,KAAM,UACN+K,GAAIA,EACJ5E,KAAMA,EACNyyI,WAAYA,EACZ89D,SAAUA,EAEd,CACO,SAAS,GAAOJ,EAAU75L,GAC/B,IAAIk6L,ECjCS,SAAUxrM,GACvB,GAAiB,MAAbA,EAAmB,OAAO,GAC9B,IAAI4Y,EACFC,EACA4yL,EAAKzrM,EAAUgF,MAAM,GACrB0mM,EAAK1rM,EAAUgF,MAAM,GACrBlM,EAAKkH,EAAUwE,UAAU,GACzBzL,EAAKiH,EAAUwE,UAAU,GAC3B,OAAO,SAAU+wG,EAAOnoH,GACjBA,IAAGwrB,EAAKC,EAAK,GAClB,IAAIzlB,EAAI,EACN0nB,EAAIy6F,EAAMxoH,OACV67C,EAAS,IAAIjc,MAAM7R,GAGrB,IAFA8tB,EAAO,IAAMhwB,GAAM28F,EAAM,IAAMk2F,EAAK3yM,EACpC8vC,EAAO,IAAM/vB,GAAM08F,EAAM,IAAMm2F,EAAK3yM,EAC7B3F,EAAI0nB,GAAG8tB,EAAOx1C,GAAKmiH,EAAMniH,KAAMA,EACtC,OAAOw1C,CACT,CACF,CDeuB5oC,CAAUmrM,EAASnrM,WACtC2rM,EAAOR,EAASQ,KAClB,SAASC,EAAIx+M,EAAGwf,GACVA,EAAO7f,QAAQ6f,EAAOuG,MAC1B,IAAK,IAAI9I,EAAIshM,EAAKv+M,EAAI,GAAKA,EAAIA,GAAIwF,EAAI,EAAGkoB,EAAIzQ,EAAEtd,OAAQ6F,EAAIkoB,IAAKloB,EAC/Dga,EAAOngB,KAAK++M,EAAenhM,EAAEzX,GAAIA,IAE/BxF,EAAI,GEzCG,SAAUqhC,EAAO3T,GAI9B,IAHA,IAAI7qB,EACFmD,EAAIq7B,EAAM1hC,OACVK,EAAIgG,EAAI0nB,EACH1tB,IAAMgG,GAAGnD,EAAIw+B,EAAMrhC,GAAIqhC,EAAMrhC,KAAOqhC,EAAMr7B,GAAIq7B,EAAMr7B,GAAKnD,CAClE,CFoCe6sB,CAAQlQ,EAAQkO,EAC7B,CACA,SAAS5jB,EAAMoT,GACb,OAAOkhM,EAAelhM,EACxB,CACA,SAAS8X,EAAKupL,GAEZ,IADA,IAAI/+L,EAAS,GACJxf,EAAI,EAAG0tB,EAAI6wL,EAAK5+M,OAAQK,EAAI0tB,IAAK1tB,EAAGw+M,EAAID,EAAKv+M,GAAIwf,GAE1D,OADIA,EAAO7f,OAAS,GAAG6f,EAAOngB,KAAKmgB,EAAO,IACnCA,CACT,CACA,SAASi/L,EAAKF,GAEZ,IADA,IAAI/+L,EAASwV,EAAKupL,GACX/+L,EAAO7f,OAAS,GAAG6f,EAAOngB,KAAKmgB,EAAO,IAC7C,OAAOA,CACT,CACA,SAASk/L,EAAQH,GACf,OAAOA,EAAKzuL,IAAI2uL,EAClB,CAoCA,OAnCA,SAASN,EAASj6L,GAChB,IACEy6L,EADEl3M,EAAOyc,EAAEzc,KAEb,OAAQA,GACN,IAAK,qBACH,MAAO,CACLA,KAAMA,EACNy2M,WAAYh6L,EAAEg6L,WAAWpuL,IAAIquL,IAEjC,IAAK,QACHQ,EAAc70M,EAAMoa,EAAEy6L,aACtB,MACF,IAAK,aACHA,EAAcz6L,EAAEy6L,YAAY7uL,IAAIhmB,GAChC,MACF,IAAK,aACH60M,EAAc3pL,EAAK9Q,EAAEq6L,MACrB,MACF,IAAK,kBACHI,EAAcz6L,EAAEq6L,KAAKzuL,IAAIkF,GACzB,MACF,IAAK,UACH2pL,EAAcD,EAAQx6L,EAAEq6L,MACxB,MACF,IAAK,eACHI,EAAcz6L,EAAEq6L,KAAKzuL,IAAI4uL,GACzB,MACF,QACE,OAAO,KAEX,MAAO,CACLj3M,KAAMA,EACNk3M,YAAaA,EAEjB,CACOR,CAASj6L,EAClB,CGhGe,SAAS,GAAC65L,EAAUQ,GACjC,IAAIK,EAAe,CAAC,EAClBC,EAAkB,CAAC,EACnBC,EAAgB,CAAC,EACjBC,EAAY,GACZC,GAAc,EAoDhB,SAAS5E,EAAM0E,EAAeD,GAC5B,IAAK,IAAIr5M,KAAKs5M,EAAe,CAC3B,IAAI38M,EAAI28M,EAAct5M,UACfq5M,EAAgB18M,EAAEqjB,cAClBrjB,EAAEqjB,aACFrjB,EAAEwrB,IACTxrB,EAAE+E,SAAQ,SAAUlH,GAClB4+M,EAAa5+M,EAAI,GAAKA,EAAIA,GAAK,CACjC,IACA++M,EAAU1/M,KAAK8C,EACjB,CACF,CAMA,OAlEAo8M,EAAKr3M,SAAQ,SAAUlH,EAAGgG,GACxB,IACEnD,EADE27M,EAAMT,EAASQ,KAAKv+M,EAAI,GAAKA,EAAIA,GAEjCw+M,EAAI7+M,OAAS,IAAM6+M,EAAI,GAAG,KAAOA,EAAI,GAAG,KAC1C37M,EAAI07M,IAAOS,GAAaT,EAAKS,GAAch/M,EAAGu+M,EAAKv4M,GAAKnD,EAE5D,IACA07M,EAAKr3M,SAAQ,SAAUlH,GACrB,IAGEmC,EACAmxC,EAJEtwC,EAgCN,SAAchD,GACZ,IAEEuqB,EAFEi0L,EAAMT,EAASQ,KAAKv+M,EAAI,GAAKA,EAAIA,GACnCw0B,EAAKgqL,EAAI,GAEPT,EAASnrM,WAAW2X,EAAK,CAAC,EAAG,GAAIi0L,EAAIt3M,SAAQ,SAAU+3M,GACzD10L,EAAG,IAAM00L,EAAG,GAAI10L,EAAG,IAAM00L,EAAG,EAC9B,KAAQ10L,EAAKi0L,EAAIA,EAAI7+M,OAAS,GAC9B,OAAOK,EAAI,EAAI,CAACuqB,EAAIiK,GAAM,CAACA,EAAIjK,EACjC,CAxCU20L,CAAKl/M,GACXwlB,EAAQxiB,EAAE,GACV2qB,EAAM3qB,EAAE,GAGV,GAAIb,EAAI28M,EAAct5L,GAIpB,UAHOs5L,EAAc38M,EAAEwrB,KACvBxrB,EAAE9C,KAAKW,GACPmC,EAAEwrB,IAAMA,EACJ2lB,EAAIurK,EAAgBlxL,GAAM,QACrBkxL,EAAgBvrK,EAAE9tB,OACzB,IAAI25L,EAAK7rK,IAAMnxC,EAAIA,EAAIA,EAAEkQ,OAAOihC,GAChCurK,EAAgBM,EAAG35L,MAAQrjB,EAAEqjB,OAASs5L,EAAcK,EAAGxxL,IAAM2lB,EAAE3lB,KAAOwxL,CACxE,MACEN,EAAgB18M,EAAEqjB,OAASs5L,EAAc38M,EAAEwrB,KAAOxrB,OAE/C,GAAIA,EAAI08M,EAAgBlxL,GAI7B,UAHOkxL,EAAgB18M,EAAEqjB,OACzBrjB,EAAEsS,QAAQzU,GACVmC,EAAEqjB,MAAQA,EACN8tB,EAAIwrK,EAAct5L,GAAQ,QACrBs5L,EAAcxrK,EAAE3lB,KACvB,IAAIyxL,EAAK9rK,IAAMnxC,EAAIA,EAAImxC,EAAEjhC,OAAOlQ,GAChC08M,EAAgBO,EAAG55L,MAAQ8tB,EAAE9tB,OAASs5L,EAAcM,EAAGzxL,IAAMxrB,EAAEwrB,KAAOyxL,CACxE,MACEP,EAAgB18M,EAAEqjB,OAASs5L,EAAc38M,EAAEwrB,KAAOxrB,OAIpD08M,GADA18M,EAAI,CAACnC,IACawlB,MAAQA,GAASs5L,EAAc38M,EAAEwrB,IAAMA,GAAOxrB,CAEpE,IAsBAi4M,EAAM0E,EAAeD,GACrBzE,EAAMyE,EAAiBC,GACvBP,EAAKr3M,SAAQ,SAAUlH,GAChB4+M,EAAa5+M,EAAI,GAAKA,EAAIA,IAAI++M,EAAU1/M,KAAK,CAACW,GACrD,IACO++M,CACT,CCzEe,SAAS,GAAChB,GACvB,OAAO,GAAOA,EAAUsB,GAASl/M,MAAMrB,KAAMY,WAC/C,CACO,SAAS2/M,GAAStB,EAAUt6K,EAAQp0B,GACzC,IAAIkvM,EAAMv+M,EAAG0tB,EACb,GAAIhuB,UAAUC,OAAS,EAAG4+M,EAM5B,SAAqBR,EAAUt6K,EAAQp0B,GACrC,IAEEiwM,EAFEf,EAAO,GACTgB,EAAa,GAEf,SAASC,EAASx/M,GAChB,IAAIgG,EAAIhG,EAAI,GAAKA,EAAIA,GACpBu/M,EAAWv5M,KAAOu5M,EAAWv5M,GAAK,KAAK3G,KAAK,CAC3CW,EAAGA,EACHszC,EAAGgsK,GAEP,CACA,SAASG,EAASlB,GAChBA,EAAKr3M,QAAQs4M,EACf,CACA,SAASE,EAASnB,GAChBA,EAAKr3M,QAAQu4M,EACf,CACA,SAASE,EAASpB,GAChBA,EAAKr3M,QAAQw4M,EACf,CACA,SAASvB,EAASj6L,GAChB,OAAQo7L,EAAOp7L,EAAGA,EAAEzc,MAClB,IAAK,qBACHyc,EAAEg6L,WAAWh3M,QAAQi3M,GACrB,MACF,IAAK,aACHsB,EAASv7L,EAAEq6L,MACX,MACF,IAAK,kBACL,IAAK,UACHmB,EAASx7L,EAAEq6L,MACX,MACF,IAAK,eACHoB,EAASz7L,EAAEq6L,MAGjB,CAOA,OANAJ,EAAS16K,GACT87K,EAAWr4M,QAAkB,MAAVmI,EAAiB,SAAUuwM,GAC5CrB,EAAKl/M,KAAKugN,EAAM,GAAG5/M,EACrB,EAAI,SAAU4/M,GACRvwM,EAAOuwM,EAAM,GAAGtsK,EAAGssK,EAAMA,EAAMjgN,OAAS,GAAG2zC,IAAIirK,EAAKl/M,KAAKugN,EAAM,GAAG5/M,EACxE,GACOu+M,CACT,CAlDmCsB,CAAY9B,EAAUt6K,EAAQp0B,QAAa,IAAKrP,EAAI,EAAGu+M,EAAO,IAAIh/K,MAAM7R,EAAIqwL,EAASQ,KAAK5+M,QAASK,EAAI0tB,IAAK1tB,EAAGu+M,EAAKv+M,GAAKA,EAC1J,MAAO,CACLyH,KAAM,kBACN82M,KAAMuB,GAAO/B,EAAUQ,GAE3B,CCXA,IAAIwB,GAAMhnM,KAAK2C,KAAK,IAClBskM,GAAKjnM,KAAK2C,KAAK,IACfukM,GAAKlnM,KAAK2C,KAAK,GACjB,SAASwkM,GAAS16L,EAAO1hB,EAAM8rB,GAC7B,IAIIgrB,EAAIkrF,EAAIq6E,EAJR55J,GAAQziD,EAAO0hB,GAASzM,KAAKE,IAAI,EAAG2W,GACtCgtB,EAAQ7jC,KAAKwX,MAAMxX,KAAKqnM,MAAM75J,IAC9B2F,EAAQ3F,EAAOxtC,KAAK0B,IAAI,GAAImiC,GAC5ByjK,EAASn0J,GAAS6zJ,GAAM,GAAK7zJ,GAAS8zJ,GAAK,EAAI9zJ,GAAS+zJ,GAAK,EAAI,EAgBnE,OAdIrjK,EAAQ,GACVujK,EAAMpnM,KAAK0B,IAAI,IAAKmiC,GAASyjK,GAC7BzlK,EAAK7hC,KAAKwoB,MAAM/b,EAAQ26L,IAEfA,EAAM36L,KAASo1B,GADxBkrF,EAAK/sH,KAAKwoB,MAAMz9B,EAAOq8M,IAEdA,EAAMr8M,KAAQgiI,EACvBq6E,GAAOA,IAEPA,EAAMpnM,KAAK0B,IAAI,GAAImiC,GAASyjK,GAC5BzlK,EAAK7hC,KAAKwoB,MAAM/b,EAAQ26L,IAEfA,EAAM36L,KAASo1B,GADxBkrF,EAAK/sH,KAAKwoB,MAAMz9B,EAAOq8M,IAEdA,EAAMr8M,KAAQgiI,GAErBA,EAAKlrF,GAAM,IAAOhrB,GAASA,EAAQ,EAAUswL,GAAS16L,EAAO1hB,EAAc,EAAR8rB,GAChE,CAACgrB,EAAIkrF,EAAIq6E,EAClB,CACe,SAASG,GAAM96L,EAAO1hB,EAAM8rB,GAEzC,MAD8BA,GAASA,GACzB,GAAI,MAAO,GACzB,IAFcpK,GAASA,MAAvB1hB,GAAQA,GAEY,MAAO,CAAC0hB,GAC5B,IAAIkK,EAAU5rB,EAAO0hB,EACnBmrC,EAAOjhC,EAAUwwL,GAASp8M,EAAM0hB,EAAOoK,GAASswL,GAAS16L,EAAO1hB,EAAM8rB,GACtEktC,GAAQ,OAAenM,EAAM,GAC7B/V,EAAKkiB,EAAM,GACXgpE,EAAKhpE,EAAM,GACXqjJ,EAAMrjJ,EAAM,GACd,KAAMgpE,GAAMlrF,GAAK,MAAO,GACxB,IAAIltB,EAAIo4G,EAAKlrF,EAAK,EAChB0lK,EAAQ,IAAI/gL,MAAM7R,GACpB,GAAIgC,EACF,GAAIywL,EAAM,EAAG,IAAK,IAAIngN,EAAI,EAAGA,EAAI0tB,IAAK1tB,EAAGsgN,EAAMtgN,IAAM8lI,EAAK9lI,IAAMmgN,OAAS,IAAK,IAAI1gN,EAAK,EAAGA,EAAKiuB,IAAKjuB,EAAI6gN,EAAM7gN,IAAOqmI,EAAKrmI,GAAM0gN,OAEhI,GAAIA,EAAM,EAAG,IAAK,IAAII,EAAM,EAAGA,EAAM7yL,IAAK6yL,EAAKD,EAAMC,IAAQ3lK,EAAK2lK,IAAQJ,OAAS,IAAK,IAAIK,EAAM,EAAGA,EAAM9yL,IAAK8yL,EAAKF,EAAME,IAAQ5lK,EAAK4lK,GAAOL,EAEjJ,OAAOG,CACT,CACO,SAASG,GAAcj7L,EAAO1hB,EAAM8rB,GAEzC,OAAOswL,GADO16L,GAASA,EAAvB1hB,GAAQA,EAAsB8rB,GAASA,GACH,EACtC,CACO,SAAS8wL,GAASl7L,EAAO1hB,EAAM8rB,GACNA,GAASA,EACvC,IAAIF,GADJ5rB,GAAQA,IAAM0hB,GAASA,GAErB26L,EAAMzwL,EAAU+wL,GAAc38M,EAAM0hB,EAAOoK,GAAS6wL,GAAcj7L,EAAO1hB,EAAM8rB,GACjF,OAAQF,GAAW,EAAI,IAAMywL,EAAM,EAAI,GAAKA,EAAMA,EACpD,CCvDA,ICAWQ,GDAP54K,GAAK,2EACM,SAAS64K,GAAgBC,GACtC,KAAM9mL,EAAQgO,GAAGgL,KAAK8tK,IAAa,MAAM,IAAI95K,MAAM,mBAAqB85K,GACxE,IAAI9mL,EACJ,OAAO,IAAI+mL,GAAgB,CACzBpmK,KAAM3gB,EAAM,GACZo5D,MAAOp5D,EAAM,GACb09K,KAAM19K,EAAM,GACZwN,OAAQxN,EAAM,GACd0c,KAAM1c,EAAM,GACZltB,MAAOktB,EAAM,GACbgnL,MAAOhnL,EAAM,GACb2H,UAAW3H,EAAM,IAAMA,EAAM,GAAGjU,MAAM,GACtC6M,KAAMoH,EAAM,GACZtyB,KAAMsyB,EAAM,KAEhB,CAGO,SAAS+mL,GAAgBD,GAC9B/hN,KAAK47C,UAA0BnlB,IAAnBsrL,EAAUnmK,KAAqB,IAAMmmK,EAAUnmK,KAAO,GAClE57C,KAAKq0F,WAA4B59D,IAApBsrL,EAAU1tH,MAAsB,IAAM0tH,EAAU1tH,MAAQ,GACrEr0F,KAAK24M,UAA0BliL,IAAnBsrL,EAAUpJ,KAAqB,IAAMoJ,EAAUpJ,KAAO,GAClE34M,KAAKyoC,YAA8BhS,IAArBsrL,EAAUt5K,OAAuB,GAAKs5K,EAAUt5K,OAAS,GACvEzoC,KAAK23C,OAASoqK,EAAUpqK,KACxB33C,KAAK+N,WAA4B0oB,IAApBsrL,EAAUh0M,WAAsB0oB,GAAasrL,EAAUh0M,MACpE/N,KAAKiiN,QAAUF,EAAUE,MACzBjiN,KAAK4iC,eAAoCnM,IAAxBsrL,EAAUn/K,eAA0BnM,GAAasrL,EAAUn/K,UAC5E5iC,KAAK6zB,OAASkuL,EAAUluL,KACxB7zB,KAAK2I,UAA0B8tB,IAAnBsrL,EAAUp5M,KAAqB,GAAKo5M,EAAUp5M,KAAO,EACnE,CExBO,SAASu5M,GAAmBj3M,EAAGmT,GACpC,IAAKld,GAAK+J,EAAImT,EAAInT,EAAEk3M,cAAc/jM,EAAI,GAAKnT,EAAEk3M,iBAAiBjvM,QAAQ,MAAQ,EAAG,OAAO,KACxF,IAAIhS,EACFkhN,EAAcn3M,EAAE+b,MAAM,EAAG9lB,GAI3B,MAAO,CAACkhN,EAAYvhN,OAAS,EAAIuhN,EAAY,GAAKA,EAAYp7L,MAAM,GAAKo7L,GAAcn3M,EAAE+b,MAAM9lB,EAAI,GACrG,CCde,SAAS,GAAC+J,GACvB,OAAOA,EAAIi3M,GAAmBjoM,KAAKoG,IAAIpV,KAASA,EAAE,GAAKspC,GACzD,CCFe,SAAS,GAACtpC,EAAGmT,GAC1B,IAAI2H,EAAIm8L,GAAmBj3M,EAAGmT,GAC9B,IAAK2H,EAAG,OAAO9a,EAAI,GACnB,IAAIm3M,EAAcr8L,EAAE,GAClBnK,EAAWmK,EAAE,GACf,OAAOnK,EAAW,EAAI,KAAO,IAAI6kB,OAAO7kB,GAAUyN,KAAK,KAAO+4L,EAAcA,EAAYvhN,OAAS+a,EAAW,EAAIwmM,EAAYp7L,MAAM,EAAGpL,EAAW,GAAK,IAAMwmM,EAAYp7L,MAAMpL,EAAW,GAAKwmM,EAAc,IAAI3hL,MAAM7kB,EAAWwmM,EAAYvhN,OAAS,GAAGwoB,KAAK,IAC/P,CJWAy4L,GAAgB5hN,UAAY8hN,GAAgB9hN,UAc5C8hN,GAAgB9hN,UAAU0iB,SAAW,WACnC,OAAO5iB,KAAK47C,KAAO57C,KAAKq0F,MAAQr0F,KAAK24M,KAAO34M,KAAKyoC,QAAUzoC,KAAK23C,KAAO,IAAM,UAAsBlhB,IAAfz2B,KAAK+N,MAAsB,GAAKkM,KAAKE,IAAI,EAAgB,EAAbna,KAAK+N,SAAe/N,KAAKiiN,MAAQ,IAAM,UAA0BxrL,IAAnBz2B,KAAK4iC,UAA0B,GAAK,IAAM3oB,KAAKE,IAAI,EAAoB,EAAjBna,KAAK4iC,aAAmB5iC,KAAK6zB,KAAO,IAAM,IAAM7zB,KAAK2I,IAC3R,EK/BA,QACE,IAAK,SAAWsC,EAAGmT,GACjB,OAAY,IAAJnT,GAASmd,QAAQhK,EAC3B,EACA,EAAK,SAAWnT,GACd,OAAOgP,KAAKwoB,MAAMx3B,GAAG2X,SAAS,EAChC,EACA,EAAK,SAAW3X,GACd,OAAOA,EAAI,EACb,EACA,EHba,SAAUA,GACvB,OAAOgP,KAAKoG,IAAIpV,EAAIgP,KAAKwoB,MAAMx3B,KAAO,KAAOA,EAAEo3M,eAAe,MAAMz8L,QAAQ,KAAM,IAAM3a,EAAE2X,SAAS,GACrG,EGYE,EAAK,SAAW3X,EAAGmT,GACjB,OAAOnT,EAAEk3M,cAAc/jM,EACzB,EACA,EAAK,SAAWnT,EAAGmT,GACjB,OAAOnT,EAAEmd,QAAQhK,EACnB,EACA,EAAK,SAAWnT,EAAGmT,GACjB,OAAOnT,EAAEq3M,YAAYlkM,EACvB,EACA,EAAK,SAAWnT,GACd,OAAOgP,KAAKwoB,MAAMx3B,GAAG2X,SAAS,EAChC,EACA,EAAK,SAAW3X,EAAGs3M,GACjB,OAAOC,GAAkB,IAAJv3M,EAASs3M,EAChC,EACA,EAAKC,GACL,EJ5Ba,SAAUv3M,EAAGmT,GAC1B,IAAI2H,EAAIm8L,GAAmBj3M,EAAGmT,GAC9B,IAAK2H,EAAG,OAAO9a,EAAI,GACnB,IAAIm3M,EAAcr8L,EAAE,GAClBnK,EAAWmK,EAAE,GACb7kB,EAAI0a,GAAYimM,GAAuE,EAAtD5nM,KAAKE,KAAK,EAAGF,KAAKC,IAAI,EAAGD,KAAKwX,MAAM7V,EAAW,MAAY,EAC5FgT,EAAIwzL,EAAYvhN,OAClB,OAAOK,IAAM0tB,EAAIwzL,EAAclhN,EAAI0tB,EAAIwzL,EAAc,IAAI3hL,MAAMv/B,EAAI0tB,EAAI,GAAGvF,KAAK,KAAOnoB,EAAI,EAAIkhN,EAAYp7L,MAAM,EAAG9lB,GAAK,IAAMkhN,EAAYp7L,MAAM9lB,GAAK,KAAO,IAAIu/B,MAAM,EAAIv/B,GAAGmoB,KAAK,KAAO64L,GAAmBj3M,EAAGgP,KAAKE,IAAI,EAAGiE,EAAIld,EAAI,IAAI,EACzO,EIqBE,EAAK,SAAW+J,GACd,OAAOgP,KAAKwoB,MAAMx3B,GAAG2X,SAAS,IAAIgE,aACpC,EACA,EAAK,SAAW83C,GACd,OAAOzkD,KAAKwoB,MAAMi8B,GAAI97C,SAAS,GACjC,GCpCa,SAAS,GAAC3X,GACvB,OAAOA,CACT,CCMA,ICPI,GACO,GACAw3M,GDKPzxL,GAAMyP,MAAMvgC,UAAU8wB,IACxB0xL,GAAW,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAC9E,SAAS,GAAC7gJ,GACvB,IEXuB8gJ,EAAUC,EFW7BlxM,OAA4B+kB,IAApBorC,EAAO8gJ,eAA+ClsL,IAArBorC,EAAO+gJ,UAA0B,IEXvDD,EFW8E3xL,GAAIpvB,KAAKigE,EAAO8gJ,SAAU1gM,QEX9F2gM,EFWuG/gJ,EAAO+gJ,UAAY,GEVpJ,SAAUzgN,EAAO4L,GAMtB,IALA,IAAI7M,EAAIiB,EAAMtB,OACZkD,EAAI,GACJmD,EAAI,EACJstC,EAAImuK,EAAS,GACb9hN,EAAS,EACJK,EAAI,GAAKszC,EAAI,IACd3zC,EAAS2zC,EAAI,EAAIzmC,IAAOymC,EAAIv6B,KAAKE,IAAI,EAAGpM,EAAQlN,IACpDkD,EAAExD,KAAK4B,EAAM8gC,UAAU/hC,GAAKszC,EAAGtzC,EAAIszC,OAC9B3zC,GAAU2zC,EAAI,GAAKzmC,KACxBymC,EAAImuK,EAASz7M,GAAKA,EAAI,GAAKy7M,EAAS9hN,QAEtC,OAAOkD,EAAE6sB,UAAUvH,KAAKu5L,EAC1B,GFFEC,OAAqCpsL,IAApBorC,EAAOihJ,SAAyB,GAAKjhJ,EAAOihJ,SAAS,GAAK,GAC3EC,OAAqCtsL,IAApBorC,EAAOihJ,SAAyB,GAAKjhJ,EAAOihJ,SAAS,GAAK,GAC3EE,OAA6BvsL,IAAnBorC,EAAOmhJ,QAAwB,IAAMnhJ,EAAOmhJ,QAAU,GAChEC,OAA+BxsL,IAApBorC,EAAOohJ,SAAyB,GGfhC,SAAUA,GACvB,OAAO,SAAU9gN,GACf,OAAOA,EAAMyjB,QAAQ,UAAU,SAAU1kB,GACvC,OAAO+hN,GAAU/hN,EACnB,GACF,CACF,CHS0DgiN,CAAelyL,GAAIpvB,KAAKigE,EAAOohJ,SAAUt9L,SAC/FozC,OAA6BtiC,IAAnBorC,EAAO9I,QAAwB,IAAM8I,EAAO9I,QAAU,GAChEoqJ,OAAyB1sL,IAAjBorC,EAAOshJ,MAAsB,IAAMthJ,EAAOshJ,MAAQ,GAC1DC,OAAqB3sL,IAAforC,EAAOuhJ,IAAoB,MAAQvhJ,EAAOuhJ,IAAM,GACxD,SAASC,EAAUtB,GAEjB,IAAInmK,GADJmmK,EAAYD,GAAgBC,IACPnmK,KACnBy4C,EAAQ0tH,EAAU1tH,MAClBskH,EAAOoJ,EAAUpJ,KACjBlwK,EAASs5K,EAAUt5K,OACnBkP,EAAOoqK,EAAUpqK,KACjB5pC,EAAQg0M,EAAUh0M,MAClBk0M,EAAQF,EAAUE,MAClBr/K,EAAYm/K,EAAUn/K,UACtB/O,EAAOkuL,EAAUluL,KACjBlrB,EAAOo5M,EAAUp5M,KAGN,MAATA,GAAcs5M,GAAQ,EAAMt5M,EAAO,KAG7B26M,GAAY36M,UAAqB8tB,IAAdmM,IAA4BA,EAAY,IAAK/O,GAAO,EAAMlrB,EAAO,MAG1FgvC,GAAiB,MAATiE,GAA0B,MAAVy4C,KAAe18C,GAAO,EAAMiE,EAAO,IAAKy4C,EAAQ,KAI5E,IAAI3uD,EAAoB,MAAX+C,EAAiBo6K,EAA4B,MAAXp6K,GAAkB,SAASnjC,KAAKqD,GAAQ,IAAMA,EAAKiW,cAAgB,GAChH22I,EAAoB,MAAX9sH,EAAiBs6K,EAAiB,OAAOz9M,KAAKqD,GAAQowD,EAAU,GAKvEwqJ,EAAaD,GAAY36M,GAC3B66M,EAAc,aAAal+M,KAAKqD,GAOlC,SAASqrC,EAAO7xC,GACd,IAEEjB,EACA0tB,EACAzJ,EAJEs+L,EAAc/9K,EAChBg+K,EAAcnuD,EAIhB,GAAa,MAAT5sJ,EACF+6M,EAAcH,EAAWphN,GAASuhN,EAClCvhN,EAAQ,OACH,CAIL,IAAIwhN,GAHJxhN,GAASA,GAGmB,GAAK,EAAIA,EAAQ,EAiB7C,GAdAA,EAAQ+f,MAAM/f,GAASihN,EAAMG,EAAWtpM,KAAKoG,IAAIle,GAAQygC,GAGrD/O,IAAM1xB,EI3EH,SAAU2b,GACvBoF,EAAK,IAAK,IAAkC44B,EAA9BltB,EAAI9Q,EAAEjd,OAAQK,EAAI,EAAG26C,GAAM,EAAO36C,EAAI0tB,IAAK1tB,EACvD,OAAQ4c,EAAE5c,IACR,IAAK,IACH26C,EAAKC,EAAK56C,EACV,MACF,IAAK,IACQ,IAAP26C,IAAUA,EAAK36C,GACnB46C,EAAK56C,EACL,MACF,QACE,KAAM4c,EAAE5c,GAAI,MAAMgiB,EACd24B,EAAK,IAAGA,EAAK,GAIvB,OAAOA,EAAK,EAAI/9B,EAAEkJ,MAAM,EAAG60B,GAAM/9B,EAAEkJ,MAAM80B,EAAK,GAAKh+B,CACrD,CJ0D0B8lM,CAAWzhN,IAGzBwhN,GAA4B,IAAVxhN,GAAwB,MAATw2M,IAAcgL,GAAgB,GAGnEF,GAAeE,EAAyB,MAAThL,EAAeA,EAAOwK,EAAiB,MAATxK,GAAyB,MAATA,EAAe,GAAKA,GAAQ8K,EACzGC,GAAwB,MAAT/6M,EAAe+5M,GAAS,EAAIb,GAAiB,GAAK,IAAM6B,GAAeC,GAA0B,MAAThL,EAAe,IAAM,IAIxH6K,EAEF,IADAtiN,GAAK,EAAG0tB,EAAIzsB,EAAMtB,SACTK,EAAI0tB,GACX,GAA6B,IAAzBzJ,EAAIhjB,EAAMsxM,WAAWvyM,KAAcikB,EAAI,GAAI,CAC7Cu+L,GAAqB,KAANv+L,EAAW69L,EAAU7gN,EAAM6kB,MAAM9lB,EAAI,GAAKiB,EAAM6kB,MAAM9lB,IAAMwiN,EAC3EvhN,EAAQA,EAAM6kB,MAAM,EAAG9lB,GACvB,KACF,CAGN,CAGI+gN,IAAUtqK,IAAMx1C,EAAQuP,EAAMvP,EAAOoC,MAGzC,IAAI1D,EAAS4iN,EAAY5iN,OAASsB,EAAMtB,OAAS6iN,EAAY7iN,OAC3Du5E,EAAUv5E,EAASkN,EAAQ,IAAI0yB,MAAM1yB,EAAQlN,EAAS,GAAGwoB,KAAKuyB,GAAQ,GAMxE,OAHIqmK,GAAStqK,IAAMx1C,EAAQuP,EAAM0oE,EAAUj4E,EAAOi4E,EAAQv5E,OAASkN,EAAQ21M,EAAY7iN,OAAS0D,KAAW61E,EAAU,IAG7Gia,GACN,IAAK,IACHlyF,EAAQshN,EAActhN,EAAQuhN,EAActpI,EAC5C,MACF,IAAK,IACHj4E,EAAQshN,EAAcrpI,EAAUj4E,EAAQuhN,EACxC,MACF,IAAK,IACHvhN,EAAQi4E,EAAQpzD,MAAM,EAAGnmB,EAASu5E,EAAQv5E,QAAU,GAAK4iN,EAActhN,EAAQuhN,EAActpI,EAAQpzD,MAAMnmB,GAC3G,MACF,QACEsB,EAAQi4E,EAAUqpI,EAActhN,EAAQuhN,EAG5C,OAAOT,EAAS9gN,EAClB,CAIA,OAzEAygC,OAA0BnM,IAAdmM,EAA0B,EAAI,SAASt9B,KAAKqD,GAAQsR,KAAKE,IAAI,EAAGF,KAAKC,IAAI,GAAI0oB,IAAc3oB,KAAKE,IAAI,EAAGF,KAAKC,IAAI,GAAI0oB,IAsEhIoR,EAAOpxB,SAAW,WAChB,OAAOm/L,EAAY,EACrB,EACO/tK,CACT,CAUA,MAAO,CACLA,OAAQqvK,EACRZ,aAXF,SAAsBV,EAAW5/M,GAC/B,IAAIkB,EAAIggN,IAAWtB,EAAYD,GAAgBC,IAAsBp5M,KAAO,IAAKo5M,IAC/E79M,EAAiE,EAA7D+V,KAAKE,KAAK,EAAGF,KAAKC,IAAI,EAAGD,KAAKwX,MAAM7V,GAASzZ,GAAS,KAC1DuE,EAAIuT,KAAK0B,IAAI,IAAKzX,GAClBwhC,EAASg9K,GAAS,EAAIx+M,EAAI,GAC5B,OAAO,SAAU/B,GACf,OAAOkB,EAAEqD,EAAIvE,GAASujC,CACxB,CACF,EAKF,ECvIe,SAAuBqQ,GACpC,GAAS,GAAaA,GACtB,GAAS,GAAO/B,OAChByuK,GAAe,GAAOA,YAExB,CAVAv5I,CAAc,CACZ05I,UAAW,IACXD,SAAU,CAAC,GACXG,SAAU,CAAC,IAAK,MIPlB,IAAI1+M,GAAK,IAAIpB,KACXsB,GAAK,IAAItB,KACJ,SAAS6gN,GAAaC,EAAQC,EAASjzL,EAAO+uG,GACnD,SAASr9H,EAASulE,GAChB,OAAO+7I,EAAO/7I,EAA4B,IAArBnnE,UAAUC,OAAe,IAAImC,KAAS,IAAIA,MAAM+kE,IAAQA,CAC/E,CAqDA,OApDAvlE,EAASivB,MAAQ,SAAUs2C,GACzB,OAAO+7I,EAAO/7I,EAAO,IAAI/kE,MAAM+kE,IAAQA,CACzC,EACAvlE,EAAS0jK,KAAO,SAAUn+F,GACxB,OAAO+7I,EAAO/7I,EAAO,IAAI/kE,KAAK+kE,EAAO,IAAKg8I,EAAQh8I,EAAM,GAAI+7I,EAAO/7I,GAAOA,CAC5E,EACAvlE,EAASigC,MAAQ,SAAUslC,GACzB,IAAI7rC,EAAK15B,EAASulE,GAChB1yC,EAAK7yB,EAAS0jK,KAAKn+F,GACrB,OAAOA,EAAO7rC,EAAK7G,EAAK0yC,EAAO7rC,EAAK7G,CACtC,EACA7yB,EAAS2gF,OAAS,SAAUpb,EAAMtgB,GAChC,OAAOs8J,EAAQh8I,EAAO,IAAI/kE,MAAM+kE,GAAe,MAARtgB,EAAe,EAAIxtC,KAAKwX,MAAMg2B,IAAQsgB,CAC/E,EACAvlE,EAASmlD,MAAQ,SAAUjhC,EAAO1hB,EAAMyiD,GACtC,IAIIhmB,EAJAkmB,EAAQ,GAGZ,GAFAjhC,EAAQlkB,EAAS0jK,KAAKx/I,GACtB+gC,EAAe,MAARA,EAAe,EAAIxtC,KAAKwX,MAAMg2B,KAC/B/gC,EAAQ1hB,GAAWyiD,EAAO,GAAI,OAAOE,EAE3C,GAAGA,EAAMpnD,KAAKkhC,EAAW,IAAIz+B,MAAM0jB,IAASq9L,EAAQr9L,EAAO+gC,GAAOq8J,EAAOp9L,SAAe+a,EAAW/a,GAASA,EAAQ1hB,GACpH,OAAO2iD,CACT,EACAnlD,EAAS+N,OAAS,SAAUjL,GAC1B,OAAOu+M,IAAa,SAAU97I,GAC5B,GAAIA,GAAQA,EAAM,KAAO+7I,EAAO/7I,IAAQziE,EAAKyiE,IAAOA,EAAKtxB,QAAQsxB,EAAO,EAC1E,IAAG,SAAUA,EAAMtgB,GACjB,GAAIsgB,GAAQA,EACV,GAAItgB,EAAO,EAAG,OAASA,GAAQ,GAC7B,KAAOs8J,EAAQh8I,GAAO,IAAKziE,EAAKyiE,UAC3B,OAAStgB,GAAQ,GACtB,KAAOs8J,EAAQh8I,EAAM,IAAMziE,EAAKyiE,KAGtC,GACF,EAEIj3C,IACFtuB,EAASsuB,MAAQ,SAAUpK,EAAOmI,GAGhC,OAFAzqB,GAAGqyC,SAAS/vB,GAAQpiB,GAAGmyC,SAAS5nB,GAChCi1L,EAAO1/M,IAAK0/M,EAAOx/M,IACZ2V,KAAKwX,MAAMX,EAAM1sB,GAAIE,IAC9B,EACA9B,EAASgmI,MAAQ,SAAU/gF,GAEzB,OADAA,EAAOxtC,KAAKwX,MAAMg2B,GACVnnB,SAASmnB,IAAWA,EAAO,EAAcA,EAAO,EAAgBjlD,EAAS+N,OAAOsvH,EAAQ,SAAU95G,GACxG,OAAO85G,EAAM95G,GAAK0hC,GAAS,CAC7B,EAAI,SAAU1hC,GACZ,OAAOvjB,EAASsuB,MAAM,EAAG/K,GAAK0hC,GAAS,CACzC,GAJ6DjlD,EAArB,IAK1C,GAEKA,CACT,CC3DO,IAAIwhN,GAAiB,IACjBC,GAAiBD,IACjBE,GAAeD,KACfE,GAAcD,MACdE,GAAeD,OACfE,GAAgBF,OAChBG,GAAeH,QCJfI,GAAUV,IAAa,SAAU97I,GAC1C,OAAOA,EAAKy8I,SAAS,EAAG,EAAG,EAAG,EAChC,IAAG,SAAUz8I,EAAMtgB,GACjB,OAAOsgB,EAAK08I,QAAQ18I,EAAK28I,UAAYj9J,EACvC,IAAG,SAAU/gC,EAAOmI,GAClB,OAAQA,EAAMnI,GAASmI,EAAI81L,oBAAsBj+L,EAAMi+L,qBAAuBV,IAAkBE,EAClG,IAAG,SAAUp8I,GACX,OAAOA,EAAK28I,UAAY,CAC1B,IAEWE,IADWL,GAAQ58J,MACVk8J,IAAa,SAAU97I,GACzCA,EAAK88I,YAAY,EAAG,EAAG,EAAG,EAC5B,IAAG,SAAU98I,EAAMtgB,GACjBsgB,EAAK+8I,WAAW/8I,EAAKm2I,aAAez2J,EACtC,IAAG,SAAU/gC,EAAOmI,GAClB,OAAQA,EAAMnI,GAASy9L,EACzB,IAAG,SAAUp8I,GACX,OAAOA,EAAKm2I,aAAe,CAC7B,KAEW6G,IADUH,GAAOj9J,MACPk8J,IAAa,SAAU97I,GAC1CA,EAAK88I,YAAY,EAAG,EAAG,EAAG,EAC5B,IAAG,SAAU98I,EAAMtgB,GACjBsgB,EAAK+8I,WAAW/8I,EAAKm2I,aAAez2J,EACtC,IAAG,SAAU/gC,EAAOmI,GAClB,OAAQA,EAAMnI,GAASy9L,EACzB,IAAG,SAAUp8I,GACX,OAAO9tD,KAAKwX,MAAMs2C,EAAOo8I,GAC3B,KACsBY,GAAQp9J,MC7B9B,SAASq9J,GAAY9jN,GACnB,OAAO2iN,IAAa,SAAU97I,GAC5BA,EAAK08I,QAAQ18I,EAAK28I,WAAa38I,EAAKk9I,SAAW,EAAI/jN,GAAK,GACxD6mE,EAAKy8I,SAAS,EAAG,EAAG,EAAG,EACzB,IAAG,SAAUz8I,EAAMtgB,GACjBsgB,EAAK08I,QAAQ18I,EAAK28I,UAAmB,EAAPj9J,EAChC,IAAG,SAAU/gC,EAAOmI,GAClB,OAAQA,EAAMnI,GAASmI,EAAI81L,oBAAsBj+L,EAAMi+L,qBAAuBV,IAAkBG,EAClG,GACF,CACO,IAAIc,GAAaF,GAAY,GACzBG,GAAaH,GAAY,GACzBI,GAAcJ,GAAY,GAC1BK,GAAgBL,GAAY,GAC5BM,GAAeN,GAAY,GAC3BO,GAAaP,GAAY,GACzBQ,GAAeR,GAAY,GACbE,GAAWv9J,MACXw9J,GAAWx9J,MACVy9J,GAAYz9J,MACV09J,GAAc19J,MACf29J,GAAa39J,MACf49J,GAAW59J,MACT69J,GAAa79J,MACxC,SAAS89J,GAAWvkN,GAClB,OAAO2iN,IAAa,SAAU97I,GAC5BA,EAAK+8I,WAAW/8I,EAAKm2I,cAAgBn2I,EAAK29I,YAAc,EAAIxkN,GAAK,GACjE6mE,EAAK88I,YAAY,EAAG,EAAG,EAAG,EAC5B,IAAG,SAAU98I,EAAMtgB,GACjBsgB,EAAK+8I,WAAW/8I,EAAKm2I,aAAsB,EAAPz2J,EACtC,IAAG,SAAU/gC,EAAOmI,GAClB,OAAQA,EAAMnI,GAAS09L,EACzB,GACF,CACO,IAAIuB,GAAYF,GAAW,GACvBG,GAAYH,GAAW,GACvBI,GAAaJ,GAAW,GACxBK,GAAeL,GAAW,GAC1BM,GAAcN,GAAW,GACzBO,GAAYP,GAAW,GACvBQ,GAAcR,GAAW,GCzCzBS,ID0CaP,GAAUh+J,MACVi+J,GAAUj+J,MACTk+J,GAAWl+J,MACTm+J,GAAan+J,MACdo+J,GAAYp+J,MACdq+J,GAAUr+J,MACRs+J,GAAYt+J,MChDhBk8J,IAAa,SAAU97I,GAC3CA,EAAKo+I,SAAS,EAAG,GACjBp+I,EAAKy8I,SAAS,EAAG,EAAG,EAAG,EACzB,IAAG,SAAUz8I,EAAMtgB,GACjBsgB,EAAKq+I,YAAYr+I,EAAKs+I,cAAgB5+J,EACxC,IAAG,SAAU/gC,EAAOmI,GAClB,OAAOA,EAAIw3L,cAAgB3/L,EAAM2/L,aACnC,IAAG,SAAUt+I,GACX,OAAOA,EAAKs+I,aACd,KAGAH,GAAS19E,MAAQ,SAAU9hI,GACzB,OAAQ45B,SAAS55B,EAAIuT,KAAKwX,MAAM/qB,KAASA,EAAI,EAAYm9M,IAAa,SAAU97I,GAC9EA,EAAKq+I,YAAYnsM,KAAKwX,MAAMs2C,EAAKs+I,cAAgB3/M,GAAKA,GACtDqhE,EAAKo+I,SAAS,EAAG,GACjBp+I,EAAKy8I,SAAS,EAAG,EAAG,EAAG,EACzB,IAAG,SAAUz8I,EAAMtgB,GACjBsgB,EAAKq+I,YAAYr+I,EAAKs+I,cAAgB5+J,EAAO/gD,EAC/C,IANkD,IAOpD,EACuBw/M,GAASv+J,MAAzB,IACI2+J,GAAUzC,IAAa,SAAU97I,GAC1CA,EAAKw+I,YAAY,EAAG,GACpBx+I,EAAK88I,YAAY,EAAG,EAAG,EAAG,EAC5B,IAAG,SAAU98I,EAAMtgB,GACjBsgB,EAAKy+I,eAAez+I,EAAKk2I,iBAAmBx2J,EAC9C,IAAG,SAAU/gC,EAAOmI,GAClB,OAAOA,EAAIovL,iBAAmBv3L,EAAMu3L,gBACtC,IAAG,SAAUl2I,GACX,OAAOA,EAAKk2I,gBACd,IAGAqI,GAAQ99E,MAAQ,SAAU9hI,GACxB,OAAQ45B,SAAS55B,EAAIuT,KAAKwX,MAAM/qB,KAASA,EAAI,EAAYm9M,IAAa,SAAU97I,GAC9EA,EAAKy+I,eAAevsM,KAAKwX,MAAMs2C,EAAKk2I,iBAAmBv3M,GAAKA,GAC5DqhE,EAAKw+I,YAAY,EAAG,GACpBx+I,EAAK88I,YAAY,EAAG,EAAG,EAAG,EAC5B,IAAG,SAAU98I,EAAMtgB,GACjBsgB,EAAKy+I,eAAez+I,EAAKk2I,iBAAmBx2J,EAAO/gD,EACrD,IANkD,IAOpD,EACsB4/M,GAAQ3+J,MAAvB,IC3CI8+J,GAAY5C,IAAa,SAAU97I,GAC5CA,EAAK08I,QAAQ,GACb18I,EAAKy8I,SAAS,EAAG,EAAG,EAAG,EACzB,IAAG,SAAUz8I,EAAMtgB,GACjBsgB,EAAKo+I,SAASp+I,EAAK+5D,WAAar6E,EAClC,IAAG,SAAU/gC,EAAOmI,GAClB,OAAOA,EAAIizG,WAAap7G,EAAMo7G,WAAyD,IAA3CjzG,EAAIw3L,cAAgB3/L,EAAM2/L,cACxE,IAAG,SAAUt+I,GACX,OAAOA,EAAK+5D,UACd,IAEW4kF,IADaD,GAAU9+J,MACZk8J,IAAa,SAAU97I,GAC3CA,EAAK+8I,WAAW,GAChB/8I,EAAK88I,YAAY,EAAG,EAAG,EAAG,EAC5B,IAAG,SAAU98I,EAAMtgB,GACjBsgB,EAAKw+I,YAAYx+I,EAAKiyI,cAAgBvyJ,EACxC,IAAG,SAAU/gC,EAAOmI,GAClB,OAAOA,EAAImrL,cAAgBtzL,EAAMszL,cAAkE,IAAjDnrL,EAAIovL,iBAAmBv3L,EAAMu3L,iBACjF,IAAG,SAAUl2I,GACX,OAAOA,EAAKiyI,aACd,KCnBW2M,IDoBYD,GAAS/+J,MCpBVk8J,IAAa,SAAU97I,GAC3CA,EAAKtxB,QAAQsxB,EAAOA,EAAK6+I,kBAAoB7+I,EAAK8+I,aAAe7C,GAAiBj8I,EAAK++I,aAAe7C,GACxG,IAAG,SAAUl8I,EAAMtgB,GACjBsgB,EAAKtxB,SAASsxB,EAAOtgB,EAAOy8J,GAC9B,IAAG,SAAUx9L,EAAOmI,GAClB,OAAQA,EAAMnI,GAASw9L,EACzB,IAAG,SAAUn8I,GACX,OAAOA,EAAKg/I,UACd,KAEWC,IADYL,GAASh/J,MACXk8J,IAAa,SAAU97I,GAC1CA,EAAKk/I,cAAc,EAAG,EAAG,EAC3B,IAAG,SAAUl/I,EAAMtgB,GACjBsgB,EAAKtxB,SAASsxB,EAAOtgB,EAAOy8J,GAC9B,IAAG,SAAUx9L,EAAOmI,GAClB,OAAQA,EAAMnI,GAASw9L,EACzB,IAAG,SAAUn8I,GACX,OAAOA,EAAK21I,aACd,KClBWwJ,IDmBWF,GAAQr/J,MCnBNk8J,IAAa,SAAU97I,GAC7CA,EAAKtxB,QAAQsxB,EAAOA,EAAK6+I,kBAAoB7+I,EAAK8+I,aAAe7C,GACnE,IAAG,SAAUj8I,EAAMtgB,GACjBsgB,EAAKtxB,SAASsxB,EAAOtgB,EAAOw8J,GAC9B,IAAG,SAAUv9L,EAAOmI,GAClB,OAAQA,EAAMnI,GAASu9L,EACzB,IAAG,SAAUl8I,GACX,OAAOA,EAAK++I,YACd,KAEWK,IADcD,GAAWv/J,MACbk8J,IAAa,SAAU97I,GAC5CA,EAAKq/I,cAAc,EAAG,EACxB,IAAG,SAAUr/I,EAAMtgB,GACjBsgB,EAAKtxB,SAASsxB,EAAOtgB,EAAOw8J,GAC9B,IAAG,SAAUv9L,EAAOmI,GAClB,OAAQA,EAAMnI,GAASu9L,EACzB,IAAG,SAAUl8I,GACX,OAAOA,EAAK61I,eACd,KClBWyJ,IDmBaF,GAAUx/J,MCnBdk8J,IAAa,SAAU97I,GACzCA,EAAKtxB,QAAQsxB,EAAOA,EAAK6+I,kBAC3B,IAAG,SAAU7+I,EAAMtgB,GACjBsgB,EAAKtxB,SAASsxB,EAAOtgB,EAAOu8J,GAC9B,IAAG,SAAUt9L,EAAOmI,GAClB,OAAQA,EAAMnI,GAASs9L,EACzB,IAAG,SAAUj8I,GACX,OAAOA,EAAK+1I,eACd,KCTWwJ,IDUUD,GAAO1/J,MCVHk8J,IAAa,WAEtC,IAAG,SAAU97I,EAAMtgB,GACjBsgB,EAAKtxB,SAASsxB,EAAOtgB,EACvB,IAAG,SAAU/gC,EAAOmI,GAClB,OAAOA,EAAMnI,CACf,KAGA4gM,GAAY9+E,MAAQ,SAAU9hI,GAE5B,OADAA,EAAIuT,KAAKwX,MAAM/qB,GACV45B,SAAS55B,IAAQA,EAAI,EACpBA,EAAI,EACHm9M,IAAa,SAAU97I,GAC5BA,EAAKtxB,QAAQx8B,KAAKwX,MAAMs2C,EAAOrhE,GAAKA,EACtC,IAAG,SAAUqhE,EAAMtgB,GACjBsgB,EAAKtxB,SAASsxB,EAAOtgB,EAAO/gD,EAC9B,IAAG,SAAUggB,EAAOmI,GAClB,OAAQA,EAAMnI,GAAShgB,CACzB,IAPqB4gN,GADgB,IASvC,EACO,ICrBHC,GAAoBC,GAAWC,GAAWC,GAASC,GAASC,GAAgBC,GDqBtDP,GAAY3/J,MEtBvB,SAAS,GAAUxpC,EAAG8E,GACnC,OAAY,MAAL9E,GAAkB,MAAL8E,EAAYsxB,IAAMp2B,EAAI8E,GAAK,EAAI9E,EAAI8E,EAAI,EAAI9E,GAAK8E,EAAI,EAAIsxB,GAC9E,CCFe,SAASuzK,GAAW3pM,EAAG8E,GACpC,OAAY,MAAL9E,GAAkB,MAAL8E,EAAYsxB,IAAMtxB,EAAI9E,GAAK,EAAI8E,EAAI9E,EAAI,EAAI8E,GAAK9E,EAAI,EAAIo2B,GAC9E,CCAe,SAASwzK,GAAS1kN,GAC/B,IAAIq3M,EAAUsN,EAAU3tK,EAoBxB,SAASrrC,EAAKmP,EAAGlT,GACf,IAAIivM,EAAKt5M,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,EACzEu5M,EAAKv5M,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAKud,EAAEtd,OAC/E,GAAIq5M,EAAKC,EAAI,CACX,GAAuB,IAAnBO,EAASzvM,EAAGA,GAAU,OAAOkvM,EACjC,EAAG,CACD,IAAI54J,EAAM24J,EAAKC,IAAO,EAClB6N,EAAS7pM,EAAEojC,GAAMt2C,GAAK,EAAGivM,EAAK34J,EAAM,EAAO44J,EAAK54J,CACtD,OAAS24J,EAAKC,EAChB,CACA,OAAOD,CACT,CAmBA,OA3CiB,IAAb72M,EAAExC,QACJ65M,EAAW,GACXsN,EAAW,SAAkBjiM,EAAG9a,GAC9B,OAAO,GAAU5H,EAAE0iB,GAAI9a,EACzB,EACAovC,EAAQ,SAAet0B,EAAG9a,GACxB,OAAO5H,EAAE0iB,GAAK9a,CAChB,IAEAyvM,EAAWr3M,IAAM,IAAaA,IAAMykN,GAAazkN,EAAI,GACrD2kN,EAAW3kN,EACXg3C,EAAQh3C,GAgCH,CACL2L,KAAMA,EACN6uB,OARF,SAAgB1f,EAAGlT,GACjB,IAAIivM,EAAKt5M,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,EAEzEM,EAAI8N,EAAKmP,EAAGlT,EAAGivM,GADVt5M,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAKud,EAAEtd,QACnD,GAC5B,OAAOK,EAAIg5M,GAAM7/J,EAAMl8B,EAAEjd,EAAI,GAAI+J,IAAMovC,EAAMl8B,EAAEjd,GAAI+J,GAAK/J,EAAI,EAAIA,CAClE,EAIEyR,MArBF,SAAewL,EAAGlT,GAChB,IAAIivM,EAAKt5M,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,EACzEu5M,EAAKv5M,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAKud,EAAEtd,OAC/E,GAAIq5M,EAAKC,EAAI,CACX,GAAuB,IAAnBO,EAASzvM,EAAGA,GAAU,OAAOkvM,EACjC,EAAG,CACD,IAAI54J,EAAM24J,EAAKC,IAAO,EAClB6N,EAAS7pM,EAAEojC,GAAMt2C,IAAM,EAAGivM,EAAK34J,EAAM,EAAO44J,EAAK54J,CACvD,OAAS24J,EAAKC,EAChB,CACA,OAAOD,CACT,EAYF,CACA,SAAS,KACP,OAAO,CACT,CHxDA,IAAI+N,GAAO,OACPC,GAAU,UACVC,GAAQ,QACRC,GAAO,OACPC,GAAO,OACPC,GAAM,MACNC,GAAY,YACZC,GAAQ,QACRC,GAAU,UACVC,GAAU,UACVC,GAAe,eACfC,GAAa,CAACX,GAAMC,GAASC,GAAOC,GAAMC,GAAMC,GAAKC,GAAWC,GAAOC,GAASC,GAASC,IACzFE,GAAQD,GAAWj3L,QAAO,SAAUvM,EAAGI,EAAGtkB,GAC5C,OAAOkkB,EAAEI,GAAK,EAAItkB,EAAGkkB,CACvB,GAAG,CAAC,GACJ,SAAS0jM,GAAUC,GACjB,IAAIvjM,EAAI,GAAMujM,GAAO/hM,QACnBjR,EAAI,CAAC,EAoBP,OAjBKyP,EAAE3kB,QAAQ,GAAM,sBACrB2kB,EAAEpd,SAAQ,SAAUwmI,GACd,GAAei6E,GAAOj6E,GACxB74H,EAAE64H,GAAQ,EAEV,GAAM,sBAAsBr7H,OAAOq7H,EAAM,KAE7C,KACgB74H,EAAEqyM,KAASryM,EAAEuyM,IAAO,EAAI,IAAMvyM,EAAEmyM,KAAYnyM,EAAEoyM,KAAUpyM,EAAEsyM,IAAQ,EAAI,IAAMtyM,EAAEwyM,IAAa,EAAI,GAChG,GACb,GAAM,4BAA4Bh1M,OAAOw1M,IAI3CvjM,EAAEjT,MAAK,SAAU4L,EAAG8E,GAClB,OAAO4lM,GAAM1qM,GAAK0qM,GAAM5lM,EAC1B,IACOuC,CACT,CACA,IAAIwjM,IAAqBzB,GAAqB,CAAC,GAAG,OAAgBA,GAAoBU,GAAM,QAAQ,OAAgBV,GAAoBW,GAAS,SAAS,OAAgBX,GAAoBY,GAAO,QAAQ,OAAgBZ,GAAoBc,GAAM,QAAQ,OAAgBd,GAAoBa,GAAM,SAAS,OAAgBb,GAAoBe,GAAK,QAAQ,OAAgBf,GAAoBgB,GAAW,QAAQ,OAAgBhB,GAAoBiB,GAAO,UAAU,OAAgBjB,GAAoBkB,GAAS,UAAU,OAAgBlB,GAAoBmB,GAAS,QAAQ,OAAgBnB,GAAoBoB,GAAc,QAAQ,OAAgBpB,GAAoB,GAAGh0M,OAAO00M,GAAM,KAAK10M,OAAO40M,IAAQ,WAAW,OAAgBZ,GAAoB,GAAGh0M,OAAO00M,GAAM,KAAK10M,OAAO40M,GAAO,KAAK50M,OAAO80M,IAAO,cAAc,OAAgBd,GAAoB,GAAGh0M,OAAOi1M,GAAO,KAAKj1M,OAAOk1M,IAAU,SAAUlB,IACr4B,SAAS0B,GAAkBF,EAAOG,GAChC,IAKEr6L,EACAgS,EANE/iB,EAAIg4B,GAAO,CAAC,EAAGkzK,GAAmBE,GACpC1jM,EAAIsjM,GAAUC,GACdn6L,EAAIpJ,EAAE3kB,OACJsoN,EAAM,GACRziM,EAAQ,EAGV,IAAKA,EAAQ,EAAGA,EAAQkI,GACtB,IAAKC,EAAMrJ,EAAE3kB,OAAQguB,EAAMnI,IAASmI,EAElC,GAAc,MAAV/Q,EADJ+iB,EAAMrb,EAAEwB,MAAMN,EAAOmI,GAAKxF,KAAK,MACX,CAClB8/L,GAAOrrM,EAAE+iB,GACTna,EAAQmI,EACR,KACF,CAGJ,OAAOs6L,EAAIt1L,MACb,CACA,IAAI,GAAK,IAAI7wB,KACb,SAASomN,GAAUl+M,GAKjB,OAJA,GAAGk7M,YAAYl7M,GACf,GAAGi7M,SAAS,GACZ,GAAG1B,QAAQ,GACX,GAAGD,SAAS,EAAG,EAAG,EAAG,GACd,EACT,CACA,SAAS6E,GAAUtjM,GACjB,OAAOujM,GAAe,IAAItmN,KAAK+iB,GACjC,CACA,SAASwjM,GAAKxjM,GACZ,OAAOyjM,GAAa,IAAIxmN,KAAK+iB,GAC/B,CACA,SAASujM,GAAevjM,GACtB,OAAOw+L,GAAQzzL,MAAMs4L,GAAUrjM,EAAEsgM,eAAiB,EAAGtgM,EACvD,CACA,SAASyjM,GAAazjM,GACpB,OAAO,GAAS+K,MAAMs4L,GAAUrjM,EAAEsgM,eAAiB,EAAGtgM,EACxD,CACA,SAAS0jM,GAAWv+M,GAClB,OAAOk+M,GAAUl+M,GAAG+5M,QACtB,CACA,SAASyE,GAAUx+M,EAAG6K,EAAGgQ,EAAG4jM,EAAGC,EAAGC,EAAGC,GACnC,GAAI,GAAK5+M,GAAKA,EAAI,IAAK,CACrB,IAAI68D,EAAO,IAAI/kE,MAAM,EAAG+S,EAAGgQ,EAAG4jM,EAAGC,EAAGC,EAAGC,GAEvC,OADA/hJ,EAAKq+I,YAAYl7M,GACV68D,CACT,CACA,OAAO,IAAI/kE,KAAKkI,EAAG6K,EAAGgQ,EAAG4jM,EAAGC,EAAGC,EAAGC,EACpC,CACA,SAASC,GAAahkM,GACpB,OAAOikM,GAAa,IAAIhnN,KAAK+iB,GAC/B,CACA,SAASkkM,GAAQlkM,GACf,OAAOmkM,GAAW,IAAIlnN,KAAK+iB,GAC7B,CACA,SAASikM,GAAajkM,GACpB,IAAI7a,EAAIlI,KAAKmnN,IAAIpkM,EAAEk4L,iBAAkB,EAAG,GACxC,OAAO2G,GAAO9zL,MAAM5lB,EAAI,EAAG6a,EAC7B,CACA,SAASmkM,GAAWnkM,GAClB,IAAI7a,EAAIlI,KAAKmnN,IAAIpkM,EAAEk4L,iBAAkB,EAAG,GACxC,OAAO,GAAQntL,MAAM5lB,EAAI,EAAG6a,EAC9B,CACA,SAASqkM,GAASl/M,GAEhB,OADA,GAAGurC,QAAQzzC,KAAKmnN,IAAIj/M,EAAG,EAAG,IACnB,GAAGw6M,WACZ,CACA,SAAS2E,GAAQn/M,EAAG6K,EAAGgQ,EAAG4jM,EAAGC,EAAGC,EAAGC,GACjC,GAAI,GAAK5+M,GAAKA,EAAI,IAAK,CACrB,IAAI68D,EAAO,IAAI/kE,KAAKA,KAAKmnN,KAAK,EAAGp0M,EAAGgQ,EAAG4jM,EAAGC,EAAGC,EAAGC,IAEhD,OADA/hJ,EAAKy+I,eAAezgM,EAAE7a,GACf68D,CACT,CACA,OAAO,IAAI/kE,KAAKA,KAAKmnN,IAAIj/M,EAAG6K,EAAGgQ,EAAG4jM,EAAGC,EAAGC,EAAGC,GAC7C,CACA,SAASr4L,GAAMs3L,EAAOthK,EAAMzlD,EAAKsoN,EAAKC,GACpC,IAAIzsM,EAAI2pC,GAAQ,EACdxkC,EAAIw1L,GAAKsQ,GACTriL,EAAI,SAAWkoG,EAAMxwH,EAAGyiB,GAEtB,OAiBN,SAAiBx9B,EAAGinN,EAAK7iK,EAAM+iK,GAC7B,IAAIhlM,EAAIiiC,GAAQ,EAAIpkD,EAAImnN,EAAQ,SAAUzkM,EAAG7a,GAC3C,OAAOs/M,EAAQ/iK,EAAOxtC,KAAKwX,OAAOpuB,EAAE0iB,EAAG7a,GAAKs/M,GAAS/iK,EACvD,EAAI,SAAU1hC,EAAG7a,GACf,OAAOu8C,EAAOxtC,KAAKwX,MAAMpuB,EAAE0iB,EAAG7a,GAAKu8C,EACrC,EACA,OAAO6iK,EAAM,SAAUvkM,EAAG7a,GACxB,OAAOo/M,EAAI9kM,EAAEO,EAAG7a,GAAIA,EACtB,EAAIsa,CACN,CA1BailM,CAAQzoN,EADf6+B,EAAMA,GAAO+tG,GACY07E,EAAIzpL,GAAM+tG,IAAS3rH,GAAKnF,EAAGM,EACtD,EACEra,EAAI,IAAIf,KACVwiB,EAAIm3L,GAAMoM,GACV79M,EAAIsa,EAAEyiM,IAAQvhL,EAAEuhL,IAAQ,GAAS,MACjClyM,EAAIyP,EAAE2iM,IAASzhL,EAAEyhL,IAAS3iM,EAAE0iM,IAAWxhL,EAAEwhL,IAAWvwK,GACpD5xB,EAAIP,EAAE4iM,KAAS5iM,EAAE8iM,IAAO5hL,EAAE4hL,GAAK,EAAGF,GAAOE,IAAO9iM,EAAE4iM,IAAQ1hL,EAAE0hL,GAAM,GAAK5iM,EAAE8iM,IAAO5hL,EAAE4hL,GAAK,GAAK9iM,EAAE6iM,IAAQ3hL,EAAE2hL,GAAM,GAAK7iM,EAAE+iM,IAAa7hL,EAAE6hL,GAAW,GAAK7wK,GACpJiyK,EAAInkM,EAAEgjM,IAAS9hL,EAAE8hL,IAAS7wK,GAC1BiyK,EAAIpkM,EAAEijM,IAAW/hL,EAAE+hL,IAAW9wK,GAC9BkyK,EAAIrkM,EAAEkjM,IAAWhiL,EAAEgiL,IAAW/wK,GAC9BmyK,EAAItkM,EAAEmjM,IAAgBjiL,EAAEiiL,IAAgBhxK,GAC1C,OAAO,SAAU1lC,GACflO,EAAE0yC,SAASxkC,GACX,IAAIiwD,EAAOh3D,EAAEnH,GACb,OAAOwmN,EAAQroJ,EAAMnsD,EAAEhS,GAAIgiB,EAAEhiB,EAAGm+D,GAAOynJ,EAAE5lN,GAAI6lN,EAAE7lN,GAAI8lN,EAAE9lN,GAAI+lN,EAAE/lN,GAC7D,CACF,CAcA,SAAS2mN,GAAQnB,EAAMoB,EAAKC,GAC1B,OAAOD,EAAa,EAAPpB,GAAYqB,EAAW,GAAK,CAC3C,CAIA,IAAIC,IAAYrD,GAAY,CAAC,GAAG,OAAgBA,GAAWS,IAAM,SAAUliM,GACzE,OAAOA,EAAEsgM,aACX,KAAI,OAAgBmB,GAAWU,IAAS,SAAUniM,GAChD,OAAO9L,KAAKwX,MAAM1L,EAAE+7G,WAAa,EACnC,KAAI,OAAgB0lF,GAAWW,IAAO,SAAUpiM,GAC9C,OAAOA,EAAE+7G,UACX,KAAI,OAAgB0lF,GAAWa,IAAM,SAAUtiM,GAC7C,OAAOA,EAAE2+L,SACX,KAAI,OAAgB8C,GAAWgB,IAAO,SAAUziM,GAC9C,OAAOA,EAAEghM,UACX,KAAI,OAAgBS,GAAWiB,IAAS,SAAU1iM,GAChD,OAAOA,EAAE+gM,YACX,KAAI,OAAgBU,GAAWkB,IAAS,SAAU3iM,GAChD,OAAOA,EAAE8gM,YACX,KAAI,OAAgBW,GAAWmB,IAAc,SAAU5iM,GACrD,OAAOA,EAAE6gM,iBACX,KAAI,OAAgBY,GAAWe,IAAW,SAAUxiM,GAClD,OAAOujM,GAAevjM,EACxB,KAAI,OAAgByhM,GAAWY,IAAM,SAAUriM,GAC7C,OAAOyjM,GAAazjM,EACtB,KAAI,OAAgByhM,GAAWY,GAAOE,IAAK,SAAUviM,EAAG7a,GACtD,OAAOw/M,GAAQlB,GAAazjM,GAAIA,EAAEk/L,SAAUwE,GAAWv+M,GACzD,KAAI,OAAgBs8M,GAAWc,IAAK,SAAUviM,EAAG7a,GAC/C,OAAOw/M,GAAQ,EAAG3kM,EAAEk/L,SAAUwE,GAAWv+M,GAC3C,IAAIs8M,IACAsD,IAAYrD,GAAY,CAAC,GAAG,OAAgBA,GAAWS,IAAS,SAAU3iM,GAC5E,OAAO,EAAIA,CACb,KAAI,OAAgBkiM,GAAWW,IAAM,SAAU16L,EAAGxiB,GAChD,OAAOw/M,GAAQh9L,EAAG,EAAG+7L,GAAWv+M,GAClC,IAAIu8M,IACJ,SAASsD,GAAUhC,EAAOthK,GACxB,OAAOh2B,GAAMs3L,EAAOthK,GAAQ,EAAGojK,GAAUC,GAAUpB,GACrD,CAIA,IAAIsB,IAAUtD,GAAU,CAAC,GAAG,OAAgBA,GAASO,IAAM,SAAUliM,GACnE,OAAOA,EAAEk4L,gBACX,KAAI,OAAgByJ,GAASQ,IAAS,SAAUniM,GAC9C,OAAO9L,KAAKwX,MAAM1L,EAAEi0L,cAAgB,EACtC,KAAI,OAAgB0N,GAASS,IAAO,SAAUpiM,GAC5C,OAAOA,EAAEi0L,aACX,KAAI,OAAgB0N,GAASW,IAAM,SAAUtiM,GAC3C,OAAOA,EAAEm4L,YACX,KAAI,OAAgBwJ,GAASc,IAAO,SAAUziM,GAC5C,OAAOA,EAAE23L,aACX,KAAI,OAAgBgK,GAASe,IAAS,SAAU1iM,GAC9C,OAAOA,EAAE63L,eACX,KAAI,OAAgB8J,GAASgB,IAAS,SAAU3iM,GAC9C,OAAOA,EAAE+3L,eACX,KAAI,OAAgB4J,GAASiB,IAAc,SAAU5iM,GACnD,OAAOA,EAAEi4L,oBACX,KAAI,OAAgB0J,GAASa,IAAW,SAAUxiM,GAChD,OAAOikM,GAAajkM,EACtB,KAAI,OAAgB2hM,GAASU,IAAM,SAAUriM,GAC3C,OAAOmkM,GAAWnkM,EACpB,KAAI,OAAgB2hM,GAASY,IAAK,SAAUviM,EAAG7a,GAC7C,OAAOw/M,GAAQ,EAAG3kM,EAAE2/L,YAAa0E,GAASl/M,GAC5C,KAAI,OAAgBw8M,GAASU,GAAOE,IAAK,SAAUviM,EAAG7a,GACpD,OAAOw/M,GAAQR,GAAWnkM,GAAIA,EAAE2/L,YAAa0E,GAASl/M,GACxD,IAAIw8M,IACAuD,IAAUtD,GAAU,CAAC,GAAG,OAAgBA,GAASO,IAAS,SAAU3iM,GACtE,OAAO,EAAIA,CACb,KAAI,OAAgBoiM,GAASS,IAAM,SAAU16L,EAAGxiB,GAC9C,OAAOw/M,GAAQh9L,EAAG,EAAG08L,GAASl/M,GAChC,IAAIy8M,IACJ,SAASuD,GAASnC,EAAOthK,GACvB,OAAOh2B,GAAMs3L,EAAOthK,GAAQ,EAAGujK,GAAQC,GAAQZ,GACjD,CACA,IAAIc,IAAiBvD,GAAiB,CAAC,GAAG,OAAgBA,GAAgBK,GAAM/B,KAAW,OAAgB0B,GAAgBM,GAASzB,GAAUj+E,MAAM,KAAK,OAAgBo/E,GAAgBO,GAAO1B,KAAY,OAAgBmB,GAAgBQ,GAAM,KAAW,OAAgBR,GAAgBS,GAAM9D,KAAU,OAAgBqD,GAAgBU,GAAK/D,KAAU,OAAgBqD,GAAgBW,GAAWhE,KAAU,OAAgBqD,GAAgBY,GAAO7B,KAAW,OAAgBiB,GAAgBa,GAASvB,KAAa,OAAgBU,GAAgBc,GAAS,KAAa,OAAgBd,GAAgBe,GAAc,IAAkBf,IAC3mBwD,IAAgBvD,GAAgB,CAAC,GAAG,OAAgBA,GAAeI,GAAM3B,KAAU,OAAgBuB,GAAeK,GAASxB,GAASl+E,MAAM,KAAK,OAAgBq/E,GAAeM,GAAOzB,KAAW,OAAgBmB,GAAeO,GAAM,KAAU,OAAgBP,GAAeQ,GAAMzD,KAAS,OAAgBiD,GAAeS,GAAK1D,KAAS,OAAgBiD,GAAeU,GAAW3D,KAAS,OAAgBiD,GAAeW,GAAOxB,KAAU,OAAgBa,GAAeY,GAAStB,KAAY,OAAgBU,GAAea,GAAS,KAAY,OAAgBb,GAAec,GAAc,IAAiBd,IACvlB,SAAS,GAAaj5E,GACpB,OAAOu8E,GAAcv8E,EACvB,CACA,SAASy8E,GAAYz8E,GACnB,OAAOw8E,GAAax8E,EACtB,CACA,SAAS,GAAO08E,EAAMvjJ,EAAMtgB,GAC1B,OAAO6jK,EAAOA,EAAKnoI,OAAOpb,EAAMtgB,QAAQhxB,CAC1C,CACA,SAAS80L,GAAW38E,EAAM7mE,EAAMtgB,GAC9B,OAAO,GAAO,GAAamnF,GAAO7mE,EAAMtgB,EAC1C,CACA,SAAS+jK,GAAU58E,EAAM7mE,EAAMtgB,GAC7B,OAAO,GAAO4jK,GAAYz8E,GAAO7mE,EAAMtgB,EACzC,CACA,SAASmU,GAAS0vJ,EAAM5kM,EAAO1hB,EAAMyiD,GACnC,OAAO6jK,EAAOA,EAAK3jK,MAAMjhC,EAAO1hB,EAAMyiD,QAAQhxB,CAChD,CACA,SAASg1L,GAAa78E,EAAMloH,EAAO1hB,EAAMyiD,GACvC,OAAOmU,GAAS,GAAagzE,GAAOloH,EAAO1hB,EAAMyiD,EACnD,CACA,SAASikK,GAAY98E,EAAMloH,EAAO1hB,EAAMyiD,GACtC,OAAOmU,GAASyvJ,GAAYz8E,GAAOloH,EAAO1hB,EAAMyiD,EAClD,CACA,IAAI,GAAiB,IACnB,GAAiB,IACjB,GAAe,KACf,GAAc,MAEd,GAAgB,OAChB,GAAe,QACbkkK,GAAQ,CAAC1D,GAAME,GAAOE,GAAMG,GAAOC,GAASC,GAASC,IACvDiD,GAAUD,GAAM3kM,MAAM,GAAI,GAC1B6kM,GAAUD,GAAQ5kM,MAAM,GAAI,GAC5B8kM,GAAQD,GAAQ7kM,MAAM,GAAI,GAC1B+kM,GAAMD,GAAM9kM,MAAM,GAAI,GAEtBglM,GAAQ,CAAC/D,GAAME,IACf8D,GAAO,CAAChE,IACNiE,GAAY,CAAC,CAACN,GAAS,EAAG,IAAiB,CAACA,GAAS,EAAG,KAAqB,CAACA,GAAS,GAAI,MAAsB,CAACA,GAAS,GAAI,KAAsB,CAACC,GAAS,EAAG,IAAiB,CAACA,GAAS,EAAG,KAAqB,CAACA,GAAS,GAAI,KAAsB,CAACA,GAAS,GAAI,MAAsB,CAACC,GAAO,EAAG,IAAe,CAACA,GAAO,EAAG,OAAmB,CAACA,GAAO,EAAG,OAAmB,CAACA,GAAO,GAAI,OAAoB,CAACC,GAAK,EAAG,IAAc,CAHra,CAAC9D,GAAMG,IAGqa,EAXpa,QAWsb,CAAC4D,GAAO,EAAG,IAAgB,CAACA,GAAO,EAAG,QAAoB,CAACC,GAAM,EAAG,KAC3gB,SAASE,GAAIj/D,GACX,IAME67D,EACAthK,EAPE2kK,EAAMl/D,EAAIm/D,OACZlyM,EAAM+yI,EAAIo/D,SAAW,GACrB5jN,EAASuR,KAAKoG,IAAI6vG,GAAKk8F,IAAQjyM,EAC7BjZ,EAAI6mN,IAAS,SAAU7mN,GACvB,OAAOA,EAAE,EACX,IAAGyR,MAAMu5M,GAAWxjN,GAatB,OAVIxH,IAAMgrN,GAAUrrN,QAClBkoN,EAAQkD,GAAMxkK,EAAOm6J,GAASwK,EAAI,GAAK,GAAcA,EAAI,GAAK,GAAcjyM,IACnEjZ,GAET6nN,GADA7nN,EAAIgrN,GAAUxjN,EAASwjN,GAAUhrN,EAAI,GAAG,GAAKgrN,GAAUhrN,GAAG,GAAKwH,EAASxH,EAAI,EAAIA,IACtE,GACVumD,EAAOvmD,EAAE,KAET6nN,EAAQ4C,GACRlkK,EAAOxtC,KAAKE,IAAIynM,GAASwK,EAAI,GAAIA,EAAI,GAAIjyM,GAAM,IAE1C,CACL4uM,MAAOA,EACPthK,KAAMA,EAEV,CIxSA,SAAS,GAAU1hC,GACjB,GAAI,GAAKA,EAAE7a,GAAK6a,EAAE7a,EAAI,IAAK,CACzB,IAAI68D,EAAO,IAAI/kE,MAAM,EAAG+iB,EAAEhQ,EAAGgQ,EAAEA,EAAGA,EAAE4jM,EAAG5jM,EAAE6jM,EAAG7jM,EAAE8jM,EAAG9jM,EAAE+jM,GAEnD,OADA/hJ,EAAKq+I,YAAYrgM,EAAE7a,GACZ68D,CACT,CACA,OAAO,IAAI/kE,KAAK+iB,EAAE7a,EAAG6a,EAAEhQ,EAAGgQ,EAAEA,EAAGA,EAAE4jM,EAAG5jM,EAAE6jM,EAAG7jM,EAAE8jM,EAAG9jM,EAAE+jM,EAClD,CACA,SAAS,GAAQ/jM,GACf,GAAI,GAAKA,EAAE7a,GAAK6a,EAAE7a,EAAI,IAAK,CACzB,IAAI68D,EAAO,IAAI/kE,KAAKA,KAAKmnN,KAAK,EAAGpkM,EAAEhQ,EAAGgQ,EAAEA,EAAGA,EAAE4jM,EAAG5jM,EAAE6jM,EAAG7jM,EAAE8jM,EAAG9jM,EAAE+jM,IAE5D,OADA/hJ,EAAKy+I,eAAezgM,EAAE7a,GACf68D,CACT,CACA,OAAO,IAAI/kE,KAAKA,KAAKmnN,IAAIpkM,EAAE7a,EAAG6a,EAAEhQ,EAAGgQ,EAAEA,EAAGA,EAAE4jM,EAAG5jM,EAAE6jM,EAAG7jM,EAAE8jM,EAAG9jM,EAAE+jM,GAC3D,CACA,SAASS,GAAQr/M,EAAG6K,EAAGgQ,GACrB,MAAO,CACL7a,EAAGA,EACH6K,EAAGA,EACHgQ,EAAGA,EACH4jM,EAAG,EACHC,EAAG,EACHC,EAAG,EACHC,EAAG,EAEP,CACe,SAASyC,GAAa1qJ,GACnC,IAAI2qJ,EAAkB3qJ,EAAO4qJ,SAC3BC,EAAc7qJ,EAAOkG,KACrB4kJ,EAAc9qJ,EAAO/9D,KACrB8oN,EAAiB/qJ,EAAOgrJ,QACxBC,EAAkBjrJ,EAAOkrJ,KACzBC,EAAuBnrJ,EAAOorJ,UAC9BC,EAAgBrrJ,EAAOsrJ,OACvBC,EAAqBvrJ,EAAOwrJ,YAC1BC,EAAWC,GAASX,GACtBY,EAAeC,GAAab,GAC5Bc,EAAYH,GAAST,GACrBa,EAAgBF,GAAaX,GAC7Bc,EAAiBL,GAASP,GAC1Ba,EAAqBJ,GAAaT,GAClCc,EAAUP,GAASL,GACnBa,EAAcN,GAAaP,GAC3Bc,EAAeT,GAASH,GACxBa,EAAmBR,GAAaL,GAC9Bc,EAAU,CACZ,EA+OF,SAA4BnoM,GAC1B,OAAOinM,EAAqBjnM,EAAEk/L,SAChC,EAhPE,EAiPF,SAAuBl/L,GACrB,OAAO+mM,EAAgB/mM,EAAEk/L,SAC3B,EAlPE,EAmPF,SAA0Bl/L,GACxB,OAAOqnM,EAAmBrnM,EAAE+7G,WAC9B,EApPE,EAqPF,SAAqB/7G,GACnB,OAAOmnM,EAAcnnM,EAAE+7G,WACzB,EAtPE,EAAK,KACL,EAAKqsF,GACL,EAAKA,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EA2OF,SAAsB7oM,GACpB,OAAO6mM,IAAiB7mM,EAAEghM,YAAc,IAC1C,EA5OE,EA6OF,SAAuBhhM,GACrB,OAAO,KAAOA,EAAE+7G,WAAa,EAC/B,EA9OE,EAAK+sF,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAK,KACL,EAAK,KACL,EAAK,GACL,EAAKC,GACL,EAAKC,GACL,IAAKC,IAEHC,EAAa,CACf,EA+NF,SAA+BzpM,GAC7B,OAAOinM,EAAqBjnM,EAAE2/L,YAChC,EAhOE,EAiOF,SAA0B3/L,GACxB,OAAO+mM,EAAgB/mM,EAAE2/L,YAC3B,EAlOE,EAmOF,SAA6B3/L,GAC3B,OAAOqnM,EAAmBrnM,EAAEi0L,cAC9B,EApOE,EAqOF,SAAwBj0L,GACtB,OAAOmnM,EAAcnnM,EAAEi0L,cACzB,EAtOE,EAAK,KACL,EAAKyV,GACL,EAAKA,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EA2NF,SAAyBnqM,GACvB,OAAO6mM,IAAiB7mM,EAAE23L,eAAiB,IAC7C,EA5NE,EA6NF,SAA0B33L,GACxB,OAAO,KAAOA,EAAEi0L,cAAgB,EAClC,EA9NE,EAAK6U,GACL,EAAKC,GACL,EAAKqB,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAK,KACL,EAAK,KACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,IAAKpB,IAEHqB,EAAS,CACX,EAkJF,SAA2B7qM,EAAGwgC,EAAQrlD,GACpC,IAAI0tB,EAAIg/L,EAAe35K,KAAKsS,EAAOv/B,MAAM9lB,IACzC,OAAO0tB,GAAK7I,EAAE2H,EAAImgM,EAAmB7rN,IAAI4sB,EAAE,GAAGhQ,eAAgB1d,EAAI0tB,EAAE,GAAG/tB,SAAW,CACpF,EApJE,EAqJF,SAAsBklB,EAAGwgC,EAAQrlD,GAC/B,IAAI0tB,EAAI8+L,EAAUz5K,KAAKsS,EAAOv/B,MAAM9lB,IACpC,OAAO0tB,GAAK7I,EAAE2H,EAAIigM,EAAc3rN,IAAI4sB,EAAE,GAAGhQ,eAAgB1d,EAAI0tB,EAAE,GAAG/tB,SAAW,CAC/E,EAvJE,EAwJF,SAAyBklB,EAAGwgC,EAAQrlD,GAClC,IAAI0tB,EAAIo/L,EAAa/5K,KAAKsS,EAAOv/B,MAAM9lB,IACvC,OAAO0tB,GAAK7I,EAAEhQ,EAAIk4M,EAAiBjsN,IAAI4sB,EAAE,GAAGhQ,eAAgB1d,EAAI0tB,EAAE,GAAG/tB,SAAW,CAClF,EA1JE,EA2JF,SAAoBklB,EAAGwgC,EAAQrlD,GAC7B,IAAI0tB,EAAIk/L,EAAQ75K,KAAKsS,EAAOv/B,MAAM9lB,IAClC,OAAO0tB,GAAK7I,EAAEhQ,EAAIg4M,EAAY/rN,IAAI4sB,EAAE,GAAGhQ,eAAgB1d,EAAI0tB,EAAE,GAAG/tB,SAAW,CAC7E,EA7JE,EA8JF,SAA6BklB,EAAGwgC,EAAQrlD,GACtC,OAAO2vN,EAAe9qM,EAAGymM,EAAiBjmK,EAAQrlD,EACpD,EA/JE,EAAK4vN,GACL,EAAKA,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKA,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EA8HF,SAAqBvrM,EAAGwgC,EAAQrlD,GAC9B,IAAI0tB,EAAI0+L,EAASr5K,KAAKsS,EAAOv/B,MAAM9lB,IACnC,OAAO0tB,GAAK7I,EAAE3H,EAAIovM,EAAaxrN,IAAI4sB,EAAE,GAAGhQ,eAAgB1d,EAAI0tB,EAAE,GAAG/tB,SAAW,CAC9E,EAhIE,EAAK0wN,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EA2IF,SAAyBhsM,EAAGwgC,EAAQrlD,GAClC,OAAO2vN,EAAe9qM,EAAG2mM,EAAanmK,EAAQrlD,EAChD,EA5IE,EA6IF,SAAyB6kB,EAAGwgC,EAAQrlD,GAClC,OAAO2vN,EAAe9qM,EAAG4mM,EAAapmK,EAAQrlD,EAChD,EA9IE,EAAK8vN,GACL,EAAKC,GACL,EAAKe,GACL,IAAKC,IAUP,SAAS5O,EAAUtB,EAAWmM,GAC5B,OAAO,SAAUnmJ,GACf,IAIE5iD,EACAm3L,EACAtoK,EANEuS,EAAS,GACXrlD,GAAK,EACLgG,EAAI,EACJ0nB,EAAImzL,EAAUlhN,OAKhB,IADMknE,aAAgB/kE,OAAO+kE,EAAO,IAAI/kE,MAAM+kE,MACrC7mE,EAAI0tB,GACqB,KAA5BmzL,EAAUtO,WAAWvyM,KACvBqlD,EAAOhmD,KAAKwhN,EAAU/6L,MAAM9f,EAAGhG,IACgB,OAA1Co7M,EAAM4V,GAAK/sM,EAAI48L,EAAU5mL,SAASj6B,KAAcikB,EAAI48L,EAAU5mL,SAASj6B,GAAQo7M,EAAY,MAANn3L,EAAY,IAAM,KACxG6uB,EAASk6K,EAAQ/oM,MAAIA,EAAI6uB,EAAO+zB,EAAMu0I,IAC1C/1J,EAAOhmD,KAAK4kB,GACZje,EAAIhG,EAAI,GAIZ,OADAqlD,EAAOhmD,KAAKwhN,EAAU/6L,MAAM9f,EAAGhG,IACxBqlD,EAAOl9B,KAAK,GACrB,CACF,CACA,SAAS8oM,EAASpQ,EAAWqQ,GAC3B,OAAO,SAAU7rK,GACf,IAEEgjK,EACAoB,EAHE5kM,EAAIwkM,GAAQ,UAAM9zL,EAAW,GAIjC,GAHMo6L,EAAe9qM,EAAGg8L,EAAWx7J,GAAU,GAAI,IAGxCA,EAAO1lD,OAAQ,OAAO,KAG/B,GAAI,MAAOklB,EAAG,OAAO,IAAI/iB,KAAK+iB,EAAE0E,GAChC,GAAI,MAAO1E,EAAG,OAAO,IAAI/iB,KAAW,IAAN+iB,EAAEjI,GAAY,MAAOiI,EAAIA,EAAE+jM,EAAI,IAY7D,GATIsI,KAAO,MAAOrsM,KAAIA,EAAEqsM,EAAI,GAGxB,MAAOrsM,IAAGA,EAAE4jM,EAAI5jM,EAAE4jM,EAAI,GAAW,GAAN5jM,EAAE3H,QAGrBqY,IAAR1Q,EAAEhQ,IAAiBgQ,EAAEhQ,EAAI,MAAOgQ,EAAIA,EAAER,EAAI,GAG1C,MAAOQ,EAAG,CACZ,GAAIA,EAAEssM,EAAI,GAAKtsM,EAAEssM,EAAI,GAAI,OAAO,KAC1B,MAAOtsM,IAAIA,EAAE2H,EAAI,GACnB,MAAO3H,GAC2B4kM,GAApCpB,EAAO,GAAQgB,GAAQxkM,EAAE7a,EAAG,EAAG,KAAgBw6M,YAC/C6D,EAAOoB,EAAM,GAAa,IAARA,EAAY/E,GAAU1/C,KAAKqjD,GAAQ3D,GAAU2D,GAC/DA,EAAO3E,GAAOzhI,OAAOomI,EAAkB,GAAXxjM,EAAEssM,EAAI,IAClCtsM,EAAE7a,EAAIq+M,EAAKtL,iBACXl4L,EAAEhQ,EAAIwzM,EAAKvP,cACXj0L,EAAEA,EAAIwjM,EAAKrL,cAAgBn4L,EAAE2H,EAAI,GAAK,IAEAi9L,GAAtCpB,EAAO,GAAUgB,GAAQxkM,EAAE7a,EAAG,EAAG,KAAgB+5M,SACjDsE,EAAOoB,EAAM,GAAa,IAARA,EAAYxF,GAAWj/C,KAAKqjD,GAAQpE,GAAWoE,GACjEA,EAAOhF,GAAQphI,OAAOomI,EAAkB,GAAXxjM,EAAEssM,EAAI,IACnCtsM,EAAE7a,EAAIq+M,EAAKlD,cACXtgM,EAAEhQ,EAAIwzM,EAAKznF,WACX/7G,EAAEA,EAAIwjM,EAAK7E,WAAa3+L,EAAE2H,EAAI,GAAK,EAEvC,MAAW,MAAO3H,GAAK,MAAOA,KACtB,MAAOA,IAAIA,EAAE2H,EAAI,MAAO3H,EAAIA,EAAEP,EAAI,EAAI,MAAOO,EAAI,EAAI,GAC3D4kM,EAAM,MAAO5kM,EAAI,GAAQwkM,GAAQxkM,EAAE7a,EAAG,EAAG,IAAIw6M,YAAc,GAAU6E,GAAQxkM,EAAE7a,EAAG,EAAG,IAAI+5M,SACzFl/L,EAAEhQ,EAAI,EACNgQ,EAAEA,EAAI,MAAOA,GAAKA,EAAE2H,EAAI,GAAK,EAAU,EAAN3H,EAAEi2B,GAAS2uK,EAAM,GAAK,EAAI5kM,EAAE2H,EAAU,EAAN3H,EAAEusM,GAAS3H,EAAM,GAAK,GAKzF,MAAI,MAAO5kM,GACTA,EAAE4jM,GAAK5jM,EAAEqsM,EAAI,IAAM,EACnBrsM,EAAE6jM,GAAK7jM,EAAEqsM,EAAI,IACN,GAAQrsM,IAIV,GAAUA,EACnB,CACF,CACA,SAAS8qM,EAAe9qM,EAAGg8L,EAAWx7J,EAAQr/C,GAM5C,IALA,IAGEie,EACAshC,EAJEvlD,EAAI,EACN0tB,EAAImzL,EAAUlhN,OACdkV,EAAIwwC,EAAO1lD,OAGNK,EAAI0tB,GAAG,CACZ,GAAI1nB,GAAK6O,EAAG,OAAQ,EAEpB,GAAU,MADVoP,EAAI48L,EAAUtO,WAAWvyM,OAIvB,GAFAikB,EAAI48L,EAAU5mL,OAAOj6B,OACrBulD,EAAQmqK,EAAOzrM,KAAK+sM,GAAOnQ,EAAU5mL,OAAOj6B,KAAOikB,MACpCje,EAAIu/C,EAAM1gC,EAAGwgC,EAAQr/C,IAAM,EAAG,OAAQ,OAChD,GAAIie,GAAKohC,EAAOktJ,WAAWvsM,KAChC,OAAQ,CAEZ,CACA,OAAOA,CACT,CAkEA,OA5KAgnN,EAAQjjN,EAAIo4M,EAAUqJ,EAAawB,GACnCA,EAAQtkM,EAAIy5L,EAAUsJ,EAAauB,GACnCA,EAAQ/oM,EAAIk+L,EAAUmJ,EAAiB0B,GACvCsB,EAAWvkN,EAAIo4M,EAAUqJ,EAAa8C,GACtCA,EAAW5lM,EAAIy5L,EAAUsJ,EAAa6C,GACtCA,EAAWrqM,EAAIk+L,EAAUmJ,EAAiBgD,GAuKnC,CACLx7K,OAAQ,SAAgB+tK,GACtB,IAAI1+M,EAAIggN,EAAUtB,GAAa,GAAImM,GAInC,OAHA7qN,EAAEuf,SAAW,WACX,OAAOm/L,CACT,EACO1+M,CACT,EACAojD,MAAO,SAAes7J,GACpB,IAAI3jM,EAAI+zM,EAASpQ,GAAa,IAAI,GAIlC,OAHA3jM,EAAEwE,SAAW,WACX,OAAOm/L,CACT,EACO3jM,CACT,EACAm0M,UAAW,SAAmBxQ,GAC5B,IAAI1+M,EAAIggN,EAAUtB,GAAa,GAAIyN,GAInC,OAHAnsN,EAAEuf,SAAW,WACX,OAAOm/L,CACT,EACO1+M,CACT,EACAmvN,SAAU,SAAkBzQ,GAC1B,IAAI3jM,EAAI+zM,EAASpQ,GAAa,IAAI,GAIlC,OAHA3jM,EAAEwE,SAAW,WACX,OAAOm/L,CACT,EACO3jM,CACT,EAEJ,CACA,ICjWI,GACOq0M,GACAC,GACAH,GACAC,GC+FPG,GAsDAC,GFwMAV,GAAO,CACP,IAAK,GACL,EAAK,IACL,EAAK,KAEPW,GAAW,UAEXC,GAAY,KACZC,GAAY,sBACd,SAAS,GAAI5wN,EAAOy5C,EAAM7tC,GACxB,IAAI4qM,EAAOx2M,EAAQ,EAAI,IAAM,GAC3BokD,GAAUoyJ,GAAQx2M,EAAQA,GAAS,GACnCtB,EAAS0lD,EAAO1lD,OAClB,OAAO83M,GAAQ93M,EAASkN,EAAQ,IAAI0yB,MAAM1yB,EAAQlN,EAAS,GAAGwoB,KAAKuyB,GAAQ2K,EAASA,EACtF,CACA,SAASysK,GAAQl1M,GACf,OAAOA,EAAE8H,QAAQmtM,GAAW,OAC9B,CACA,SAASxF,GAAS0F,GAChB,OAAO,IAAInuM,OAAO,OAASmuM,EAAMjiM,IAAIgiM,IAAS3pM,KAAK,KAAO,IAAK,IACjE,CACA,SAASokM,GAAawF,GACpB,OAAO,IAAIl0M,IAAIk0M,EAAMjiM,KAAI,SAAU/uB,EAAMf,GACvC,MAAO,CAACe,EAAK2c,cAAe1d,EAC9B,IACF,CACA,SAAS4wN,GAAyB/rM,EAAGwgC,EAAQrlD,GAC3C,IAAI0tB,EAAIikM,GAAS5+K,KAAKsS,EAAOv/B,MAAM9lB,EAAGA,EAAI,IAC1C,OAAO0tB,GAAK7I,EAAE2H,GAAKkB,EAAE,GAAI1tB,EAAI0tB,EAAE,GAAG/tB,SAAW,CAC/C,CACA,SAAS8wN,GAAyB5rM,EAAGwgC,EAAQrlD,GAC3C,IAAI0tB,EAAIikM,GAAS5+K,KAAKsS,EAAOv/B,MAAM9lB,EAAGA,EAAI,IAC1C,OAAO0tB,GAAK7I,EAAEP,GAAKoJ,EAAE,GAAI1tB,EAAI0tB,EAAE,GAAG/tB,SAAW,CAC/C,CACA,SAAS+wN,GAAsB7rM,EAAGwgC,EAAQrlD,GACxC,IAAI0tB,EAAIikM,GAAS5+K,KAAKsS,EAAOv/B,MAAM9lB,EAAGA,EAAI,IAC1C,OAAO0tB,GAAK7I,EAAEusM,GAAK1jM,EAAE,GAAI1tB,EAAI0tB,EAAE,GAAG/tB,SAAW,CAC/C,CACA,SAASgxN,GAAmB9rM,EAAGwgC,EAAQrlD,GACrC,IAAI0tB,EAAIikM,GAAS5+K,KAAKsS,EAAOv/B,MAAM9lB,EAAGA,EAAI,IAC1C,OAAO0tB,GAAK7I,EAAEssM,GAAKzjM,EAAE,GAAI1tB,EAAI0tB,EAAE,GAAG/tB,SAAW,CAC/C,CACA,SAASkxN,GAAsBhsM,EAAGwgC,EAAQrlD,GACxC,IAAI0tB,EAAIikM,GAAS5+K,KAAKsS,EAAOv/B,MAAM9lB,EAAGA,EAAI,IAC1C,OAAO0tB,GAAK7I,EAAEi2B,GAAKptB,EAAE,GAAI1tB,EAAI0tB,EAAE,GAAG/tB,SAAW,CAC/C,CACA,SAASowN,GAAclrM,EAAGwgC,EAAQrlD,GAChC,IAAI0tB,EAAIikM,GAAS5+K,KAAKsS,EAAOv/B,MAAM9lB,EAAGA,EAAI,IAC1C,OAAO0tB,GAAK7I,EAAE7a,GAAK0jB,EAAE,GAAI1tB,EAAI0tB,EAAE,GAAG/tB,SAAW,CAC/C,CACA,SAASmwN,GAAUjrM,EAAGwgC,EAAQrlD,GAC5B,IAAI0tB,EAAIikM,GAAS5+K,KAAKsS,EAAOv/B,MAAM9lB,EAAGA,EAAI,IAC1C,OAAO0tB,GAAK7I,EAAE7a,GAAK0jB,EAAE,KAAOA,EAAE,GAAK,GAAK,KAAO,KAAO1tB,EAAI0tB,EAAE,GAAG/tB,SAAW,CAC5E,CACA,SAASmxN,GAAUjsM,EAAGwgC,EAAQrlD,GAC5B,IAAI0tB,EAAI,+BAA+BqlB,KAAKsS,EAAOv/B,MAAM9lB,EAAGA,EAAI,IAChE,OAAO0tB,GAAK7I,EAAEqsM,EAAIxjM,EAAE,GAAK,IAAMA,EAAE,IAAMA,EAAE,IAAM,OAAQ1tB,EAAI0tB,EAAE,GAAG/tB,SAAW,CAC7E,CACA,SAAS0wN,GAAaxrM,EAAGwgC,EAAQrlD,GAC/B,IAAI0tB,EAAIikM,GAAS5+K,KAAKsS,EAAOv/B,MAAM9lB,EAAGA,EAAI,IAC1C,OAAO0tB,GAAK7I,EAAER,EAAW,EAAPqJ,EAAE,GAAS,EAAG1tB,EAAI0tB,EAAE,GAAG/tB,SAAW,CACtD,CACA,SAASwwN,GAAiBtrM,EAAGwgC,EAAQrlD,GACnC,IAAI0tB,EAAIikM,GAAS5+K,KAAKsS,EAAOv/B,MAAM9lB,EAAGA,EAAI,IAC1C,OAAO0tB,GAAK7I,EAAEhQ,EAAI6Y,EAAE,GAAK,EAAG1tB,EAAI0tB,EAAE,GAAG/tB,SAAW,CAClD,CACA,SAASiwN,GAAgB/qM,EAAGwgC,EAAQrlD,GAClC,IAAI0tB,EAAIikM,GAAS5+K,KAAKsS,EAAOv/B,MAAM9lB,EAAGA,EAAI,IAC1C,OAAO0tB,GAAK7I,EAAEA,GAAK6I,EAAE,GAAI1tB,EAAI0tB,EAAE,GAAG/tB,SAAW,CAC/C,CACA,SAASswN,GAAeprM,EAAGwgC,EAAQrlD,GACjC,IAAI0tB,EAAIikM,GAAS5+K,KAAKsS,EAAOv/B,MAAM9lB,EAAGA,EAAI,IAC1C,OAAO0tB,GAAK7I,EAAEhQ,EAAI,EAAGgQ,EAAEA,GAAK6I,EAAE,GAAI1tB,EAAI0tB,EAAE,GAAG/tB,SAAW,CACxD,CACA,SAASqwN,GAAYnrM,EAAGwgC,EAAQrlD,GAC9B,IAAI0tB,EAAIikM,GAAS5+K,KAAKsS,EAAOv/B,MAAM9lB,EAAGA,EAAI,IAC1C,OAAO0tB,GAAK7I,EAAE4jM,GAAK/6L,EAAE,GAAI1tB,EAAI0tB,EAAE,GAAG/tB,SAAW,CAC/C,CACA,SAASywN,GAAavrM,EAAGwgC,EAAQrlD,GAC/B,IAAI0tB,EAAIikM,GAAS5+K,KAAKsS,EAAOv/B,MAAM9lB,EAAGA,EAAI,IAC1C,OAAO0tB,GAAK7I,EAAE6jM,GAAKh7L,EAAE,GAAI1tB,EAAI0tB,EAAE,GAAG/tB,SAAW,CAC/C,CACA,SAAS6wN,GAAa3rM,EAAGwgC,EAAQrlD,GAC/B,IAAI0tB,EAAIikM,GAAS5+K,KAAKsS,EAAOv/B,MAAM9lB,EAAGA,EAAI,IAC1C,OAAO0tB,GAAK7I,EAAE8jM,GAAKj7L,EAAE,GAAI1tB,EAAI0tB,EAAE,GAAG/tB,SAAW,CAC/C,CACA,SAASuwN,GAAkBrrM,EAAGwgC,EAAQrlD,GACpC,IAAI0tB,EAAIikM,GAAS5+K,KAAKsS,EAAOv/B,MAAM9lB,EAAGA,EAAI,IAC1C,OAAO0tB,GAAK7I,EAAE+jM,GAAKl7L,EAAE,GAAI1tB,EAAI0tB,EAAE,GAAG/tB,SAAW,CAC/C,CACA,SAASkwN,GAAkBhrM,EAAGwgC,EAAQrlD,GACpC,IAAI0tB,EAAIikM,GAAS5+K,KAAKsS,EAAOv/B,MAAM9lB,EAAGA,EAAI,IAC1C,OAAO0tB,GAAK7I,EAAE+jM,EAAI7vM,KAAKwX,MAAM7C,EAAE,GAAK,KAAO1tB,EAAI0tB,EAAE,GAAG/tB,SAAW,CACjE,CACA,SAASoxN,GAAoBlsM,EAAGwgC,EAAQrlD,GACtC,IAAI0tB,EAAIkkM,GAAU7+K,KAAKsS,EAAOv/B,MAAM9lB,EAAGA,EAAI,IAC3C,OAAO0tB,EAAI1tB,EAAI0tB,EAAE,GAAG/tB,QAAU,CAChC,CACA,SAAS2wN,GAAmBzrM,EAAGwgC,EAAQrlD,GACrC,IAAI0tB,EAAIikM,GAAS5+K,KAAKsS,EAAOv/B,MAAM9lB,IACnC,OAAO0tB,GAAK7I,EAAE0E,GAAKmE,EAAE,GAAI1tB,EAAI0tB,EAAE,GAAG/tB,SAAW,CAC/C,CACA,SAAS4wN,GAA0B1rM,EAAGwgC,EAAQrlD,GAC5C,IAAI0tB,EAAIikM,GAAS5+K,KAAKsS,EAAOv/B,MAAM9lB,IACnC,OAAO0tB,GAAK7I,EAAEjI,GAAK8Q,EAAE,GAAI1tB,EAAI0tB,EAAE,GAAG/tB,SAAW,CAC/C,CACA,SAASstN,GAAiBpoM,EAAG3H,GAC3B,OAAO,GAAI2H,EAAE2+L,UAAWtmM,EAAG,EAC7B,CACA,SAASmwM,GAAaxoM,EAAG3H,GACvB,OAAO,GAAI2H,EAAEghM,WAAY3oM,EAAG,EAC9B,CACA,SAASowM,GAAazoM,EAAG3H,GACvB,OAAO,GAAI2H,EAAEghM,WAAa,IAAM,GAAI3oM,EAAG,EACzC,CACA,SAASqwM,GAAgB1oM,EAAG3H,GAC1B,OAAO,GAAI,EAAImmM,GAAQzzL,MAAMo1L,GAASngM,GAAIA,GAAI3H,EAAG,EACnD,CACA,SAASswM,GAAmB3oM,EAAG3H,GAC7B,OAAO,GAAI2H,EAAE6gM,kBAAmBxoM,EAAG,EACrC,CACA,SAASgwM,GAAmBroM,EAAG3H,GAC7B,OAAOswM,GAAmB3oM,EAAG3H,GAAK,KACpC,CACA,SAASuwM,GAAkB5oM,EAAG3H,GAC5B,OAAO,GAAI2H,EAAE+7G,WAAa,EAAG1jH,EAAG,EAClC,CACA,SAASwwM,GAAc7oM,EAAG3H,GACxB,OAAO,GAAI2H,EAAE+gM,aAAc1oM,EAAG,EAChC,CACA,SAAS2wM,GAAchpM,EAAG3H,GACxB,OAAO,GAAI2H,EAAE8gM,aAAczoM,EAAG,EAChC,CACA,SAAS4wM,GAA0BjpM,GACjC,IAAI4kM,EAAM5kM,EAAEk/L,SACZ,OAAe,IAAR0F,EAAY,EAAIA,CACzB,CACA,SAASsE,GAAuBlpM,EAAG3H,GACjC,OAAO,GAAI8mM,GAAWp0L,MAAMo1L,GAASngM,GAAK,EAAGA,GAAI3H,EAAG,EACtD,CACA,SAAS80M,GAAKntM,GACZ,IAAI4kM,EAAM5kM,EAAEk/L,SACZ,OAAO0F,GAAO,GAAa,IAARA,EAAYrF,GAAav/L,GAAKu/L,GAAap/C,KAAKngJ,EACrE,CACA,SAASmpM,GAAoBnpM,EAAG3H,GAE9B,OADA2H,EAAImtM,GAAKntM,GACF,GAAIu/L,GAAax0L,MAAMo1L,GAASngM,GAAIA,IAA+B,IAAzBmgM,GAASngM,GAAGk/L,UAAiB7mM,EAAG,EACnF,CACA,SAAS+wM,GAA0BppM,GACjC,OAAOA,EAAEk/L,QACX,CACA,SAASmK,GAAuBrpM,EAAG3H,GACjC,OAAO,GAAI+mM,GAAWr0L,MAAMo1L,GAASngM,GAAK,EAAGA,GAAI3H,EAAG,EACtD,CACA,SAAS,GAAW2H,EAAG3H,GACrB,OAAO,GAAI2H,EAAEsgM,cAAgB,IAAKjoM,EAAG,EACvC,CACA,SAASiwM,GAActoM,EAAG3H,GAExB,OAAO,IADP2H,EAAImtM,GAAKntM,IACIsgM,cAAgB,IAAKjoM,EAAG,EACvC,CACA,SAASixM,GAAetpM,EAAG3H,GACzB,OAAO,GAAI2H,EAAEsgM,cAAgB,IAAOjoM,EAAG,EACzC,CACA,SAASkwM,GAAkBvoM,EAAG3H,GAC5B,IAAIusM,EAAM5kM,EAAEk/L,SAEZ,OAAO,IADPl/L,EAAI4kM,GAAO,GAAa,IAARA,EAAYrF,GAAav/L,GAAKu/L,GAAap/C,KAAKngJ,IACnDsgM,cAAgB,IAAOjoM,EAAG,EACzC,CACA,SAASkxM,GAAWvpM,GAClB,IAAIN,EAAIM,EAAE4+L,oBACV,OAAQl/L,EAAI,EAAI,KAAOA,IAAM,EAAG,MAAQ,GAAIA,EAAI,GAAK,EAAG,IAAK,GAAK,GAAIA,EAAI,GAAI,IAAK,EACrF,CACA,SAASgqM,GAAoB1pM,EAAG3H,GAC9B,OAAO,GAAI2H,EAAEm4L,aAAc9/L,EAAG,EAChC,CACA,SAASyxM,GAAgB9pM,EAAG3H,GAC1B,OAAO,GAAI2H,EAAE23L,cAAet/L,EAAG,EACjC,CACA,SAAS0xM,GAAgB/pM,EAAG3H,GAC1B,OAAO,GAAI2H,EAAE23L,cAAgB,IAAM,GAAIt/L,EAAG,EAC5C,CACA,SAAS2xM,GAAmBhqM,EAAG3H,GAC7B,OAAO,GAAI,EAAIwmM,GAAO9zL,MAAMw1L,GAAQvgM,GAAIA,GAAI3H,EAAG,EACjD,CACA,SAAS4xM,GAAsBjqM,EAAG3H,GAChC,OAAO,GAAI2H,EAAEi4L,qBAAsB5/L,EAAG,EACxC,CACA,SAASsxM,GAAsB3pM,EAAG3H,GAChC,OAAO4xM,GAAsBjqM,EAAG3H,GAAK,KACvC,CACA,SAAS6xM,GAAqBlqM,EAAG3H,GAC/B,OAAO,GAAI2H,EAAEi0L,cAAgB,EAAG57L,EAAG,EACrC,CACA,SAAS8xM,GAAiBnqM,EAAG3H,GAC3B,OAAO,GAAI2H,EAAE63L,gBAAiBx/L,EAAG,EACnC,CACA,SAAS+xM,GAAiBpqM,EAAG3H,GAC3B,OAAO,GAAI2H,EAAE+3L,gBAAiB1/L,EAAG,EACnC,CACA,SAASgyM,GAA6BrqM,GACpC,IAAIotM,EAAMptM,EAAE2/L,YACZ,OAAe,IAARyN,EAAY,EAAIA,CACzB,CACA,SAAS9C,GAA0BtqM,EAAG3H,GACpC,OAAO,GAAIunM,GAAU70L,MAAMw1L,GAAQvgM,GAAK,EAAGA,GAAI3H,EAAG,EACpD,CACA,SAASg1M,GAAQrtM,GACf,IAAI4kM,EAAM5kM,EAAE2/L,YACZ,OAAOiF,GAAO,GAAa,IAARA,EAAY5E,GAAYhgM,GAAKggM,GAAY7/C,KAAKngJ,EACnE,CACA,SAASuqM,GAAuBvqM,EAAG3H,GAEjC,OADA2H,EAAIqtM,GAAQrtM,GACL,GAAIggM,GAAYj1L,MAAMw1L,GAAQvgM,GAAIA,IAAiC,IAA3BugM,GAAQvgM,GAAG2/L,aAAoBtnM,EAAG,EACnF,CACA,SAASmyM,GAA6BxqM,GACpC,OAAOA,EAAE2/L,WACX,CACA,SAAS8K,GAA0BzqM,EAAG3H,GACpC,OAAO,GAAIwnM,GAAU90L,MAAMw1L,GAAQvgM,GAAK,EAAGA,GAAI3H,EAAG,EACpD,CACA,SAASqyM,GAAc1qM,EAAG3H,GACxB,OAAO,GAAI2H,EAAEk4L,iBAAmB,IAAK7/L,EAAG,EAC1C,CACA,SAASuxM,GAAiB5pM,EAAG3H,GAE3B,OAAO,IADP2H,EAAIqtM,GAAQrtM,IACCk4L,iBAAmB,IAAK7/L,EAAG,EAC1C,CACA,SAASsyM,GAAkB3qM,EAAG3H,GAC5B,OAAO,GAAI2H,EAAEk4L,iBAAmB,IAAO7/L,EAAG,EAC5C,CACA,SAASwxM,GAAqB7pM,EAAG3H,GAC/B,IAAIusM,EAAM5kM,EAAE2/L,YAEZ,OAAO,IADP3/L,EAAI4kM,GAAO,GAAa,IAARA,EAAY5E,GAAYhgM,GAAKggM,GAAY7/C,KAAKngJ,IACjDk4L,iBAAmB,IAAO7/L,EAAG,EAC5C,CACA,SAASuyM,KACP,MAAO,OACT,CACA,SAASpB,KACP,MAAO,GACT,CACA,SAASV,GAAoB9oM,GAC3B,OAAQA,CACV,CACA,SAAS+oM,GAA2B/oM,GAClC,OAAO9L,KAAKwX,OAAO1L,EAAI,IACzB,CEplBA,SAAS6f,GAAQj6B,GACf,IAAImT,EAAQ,CAAC,EACb,OAAO,SAAUu0M,GACf,OAAOv0M,EAAMu0M,KAAUv0M,EAAMu0M,GAAQ1nN,EAAO0nN,GAC9C,CACF,CAyBA,SAASC,GAAazxJ,GACpB,IAAI7tB,EAASpO,GAAQi8B,EAAO7tB,QAC1ByuK,EAAe5gJ,EAAO4gJ,aACxB,MAAO,CACLzuK,OAAQA,EACRyuK,aAAcA,EACd8Q,YAAa,SAAqBF,GAChC,IAAIv1M,EAAIgkM,GAAgBuR,GAAQ,KAChC,GAAmB,MAAfv1M,EAAE8kB,UAAmB,CAEvB,OADA9kB,EAAE8kB,UAAY,GACN9kB,EAAEnV,MACR,IAAK,IACHmV,EAAE8kB,WAAa,EACf,MACF,IAAK,IACH9kB,EAAE8kB,WAAa,EAGnB,OA1CR,SAAoB4wL,EAAcC,GAChC,OAAO,SAAUxoN,GACf,IAAIy2B,EAAM8xL,EAAavoN,GACrByoN,EAAMhyL,EAAIxuB,QAAQugN,GACpB,GAAIC,EAAM,EAAG,OAAOhyL,EAGpB,IAFA,IAAIwD,EASR,SAAwBxD,EAAKgyL,GAC3B,IACEvuM,EADEjkB,EAAIwgC,EAAIiyL,YAAY,KAExB,GAAIzyN,EAAI,EAAG,OAAOA,EAClB,IAAKA,EAAIwgC,EAAI7gC,SAAUK,EAAIwyN,GAEzB,IADAvuM,EAAIuc,EAAI+xK,WAAWvyM,KACV,IAAMikB,GAAK,GAAI,OAAOjkB,EAAI,CAEvC,CAjBc0yN,CAAelyL,EAAKgyL,GAC1B7kM,EAAMqW,EAAMxD,EAAI7gC,OAAS6gC,EAAI1a,MAAMke,GAAO,KACrCA,EAAMwuL,MAAsB,MAAbhyL,EAAIwD,GAAc,GACtCA,EACF,KACF,CACA,OAAOxD,EAAI1a,MAAM,EAAGke,GAAOrW,CAC7B,CACF,CA6BeglM,CAAW7/K,EAAOl2B,GAEzBk2B,EAAO,MAAPA,CAAc,GAAG,GAEnB,CACE,OAAOA,EAAOl2B,EAElB,EACAg2M,WAAY,SAAoBptM,EAAO1hB,EAAM8rB,EAAOixL,GAClDA,EAAYD,GAA6B,MAAbC,EAAoB,KAAOA,GACvD,IAEIn/K,EAFA6kB,EAAOm6J,GAASl7L,EAAO1hB,EAAM8rB,GAC/B3uB,EAAQ8X,KAAKE,IAAIF,KAAKoG,IAAIqG,GAAQzM,KAAKoG,IAAIrb,IAE7C,GAA2B,MAAvB+8M,EAAUn/K,UACZ,OAAQm/K,EAAUp5M,MAChB,IAAK,IAKD,OAHKuZ,MAAM0gB,ECrEV,SAAU6kB,EAAMtlD,GAC7B,OAAO8X,KAAKE,IAAI,EAAgE,EAA7DF,KAAKE,KAAK,EAAGF,KAAKC,IAAI,EAAGD,KAAKwX,MAAM7V,GAASzZ,GAAS,KAAWyZ,GAAS3B,KAAKoG,IAAIonC,IACxG,CDmEqCssK,CAAgBtsK,EAAMtlD,MAC3C4/M,EAAUn/K,UAAYA,GAEjB6/K,EAAaV,EAAW5/M,GAEnC,IAAK,GACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IAEI+f,MAAM0gB,EEhFV,SAAU6kB,EAAMttC,GAE7B,OADAstC,EAAOxtC,KAAKoG,IAAIonC,GAAOttC,EAAMF,KAAKoG,IAAIlG,GAAOstC,EACtCxtC,KAAKE,IAAI,EAAGyB,GAASzB,GAAOyB,GAAS6rC,IAAS,CACvD,CF6EqCusK,CAAevsK,EAAMtlD,MAC1C4/M,EAAUn/K,UAAYA,GAAgC,MAAnBm/K,EAAUp5M,OAE/C,MAEJ,IAAK,IACL,IAAK,IAEIuZ,MAAM0gB,EGxFV,SAAU6kB,GACvB,OAAOxtC,KAAKE,IAAI,GAAIyB,GAAS3B,KAAKoG,IAAIonC,IACxC,CHsFqCwsK,CAAexsK,MACpCs6J,EAAUn/K,UAAYA,EAAuC,GAAP,MAAnBm/K,EAAUp5M,OAMvD,OAAOqrC,EAAO+tK,EAChB,EAEJ,CAGA,SAASmS,KACP,OAAOvB,GAAsBW,GAAa,CACxCt/K,OAAQ,GACRyuK,aAAcA,IAElB,CACA,SAAS0R,GAAmBp+K,GAC1B,OAAOu9K,GAAa,GAAav9K,GACnC,CACA,SAASq+K,GAA0Br+K,GACjC,OAAOn1C,UAAUC,OAAS8xN,GAAsBwB,GAAmBp+K,GAAc48K,EACnF,CACA,SAAS0B,GAAgBrgL,EAAQxxC,EAAU6wN,GAEpCllK,GADLklK,EAAOA,GAAQ,CAAC,IAEd,GAAM,wCAAwC9/M,OAAO8/M,IAEvD,IAAIhM,EAAS7kN,EAASkmN,IACpB4L,EAAS9xN,EAASimN,IAClB8L,EAAO/xN,EAASgmN,IAChBmC,EAAMnoN,EAAS6lN,IACfkB,EAAO/mN,EAAS4lN,IAChBnmJ,EAAQz/D,EAAS2lN,IACjBrO,EAAUt3M,EAAS0lN,IACnBhmJ,EAAO1/D,EAASylN,IAChB6B,EAAI91K,EAAOq/K,EAAK1K,KAAiB,OACjCkB,EAAI71K,EAAOq/K,EAAK3K,KAAY,OAC5BkB,EAAI51K,EAAOq/K,EAAK5K,KAAY,SAC5BkB,EAAI31K,EAAOq/K,EAAK7K,KAAU,SAC1BziM,EAAIiuB,EAAOq/K,EAAKhL,KAASgL,EAAK/K,KAAQ,SACtC56L,EAAIsmB,EAAOq/K,EAAKjL,KAAS,SACzBryM,EAAIi+B,EAAOq/K,EAAKlL,KAAU,MAC1B5iM,EAAIyuB,EAAOq/K,EAAKnL,KAAY,MAC5Bh9M,EAAI8oC,EAAOq/K,EAAKpL,KAAS,MAC3B,OAAO,SAAUlgJ,GACf,OAAQs/I,EAAOt/I,GAAQA,EAAO+hJ,EAAIwK,EAAOvsJ,GAAQA,EAAO8hJ,EAAI0K,EAAKxsJ,GAAQA,EAAO6hJ,EAAIe,EAAI5iJ,GAAQA,EAAO4hJ,EAAI1nJ,EAAM8F,GAAQA,EAAOwhJ,EAAKxhJ,GAAQA,EAAOhiD,EAAI2H,EAAIw0C,EAAK6F,GAAQA,EAAO+xI,EAAQ/xI,GAAQA,EAAOhyD,EAAIwP,EAAIra,GAAG68D,EACpN,CACF,CACA,SAASysJ,GAAW3yJ,GAClB,IAAI4yJ,EAAc7uL,GAAQi8B,EAAO7tB,QAC/B0gL,EAAa9uL,GAAQi8B,EAAO0wJ,WAC9B,MAAO,CACLE,WAAY,SAAoBY,GAC9B,OAAO,GAASA,GAAQoB,EAAYpB,GAAQgB,GAAgBI,EAAa,GAAcpB,EACzF,EACAd,UAAW,SAAmBc,GAC5B,OAAO,GAASA,GAAQqB,EAAWrB,GAAQgB,GAAgBK,EAAYrJ,GAAagI,EACtF,EACAX,UAAW9sL,GAAQi8B,EAAOpb,OAC1B+rK,SAAU5sL,GAAQi8B,EAAO2wJ,UAE7B,CAGA,SAASmC,KACP,OAAO/B,GAAoB4B,GAAW,CACpCxgL,OAAQy+K,GACRhsK,MAAOisK,GACPH,UAAWA,GACXC,SAAUA,IAEd,CACA,SAASoC,GAAiB7+K,GACxB,OAAOy+K,GAAW,GAAmBz+K,GACvC,CACA,SAAS,GAAwBA,GAC/B,OAAOn1C,UAAUC,OAAS+xN,GAAoBgC,GAAiB7+K,GAAc68K,EAC/E,EDzJe,SAAuB78K,GACpC,GAASw2K,GAAax2K,GACtB08K,GAAa,GAAOz+K,OACpB0+K,GAAY,GAAOjsK,MACnB8rK,GAAY,GAAOA,UACnBC,GAAW,GAAOA,QAEpB,CAjBA,CAAc,CACZ/F,SAAU,SACV1kJ,KAAM,aACNjkE,KAAM,eACN+oN,QAAS,CAAC,KAAM,MAChBE,KAAM,CAAC,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,YACzEE,UAAW,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACtDE,OAAQ,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,YACvHE,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,SCuF7F6G,KAsDAS,KAeA,IAAIE,GAAe,SAAsB3sJ,EAAQpkE,GAC/C,OAAOgyC,GAAO,CAAC,EAAGoyB,EAAQpkE,EAC5B,EACA,SAAS,GAAOgxN,EAAYC,GAC1B,IAAI7sJ,EAAS4sJ,EAAaX,GAAmBW,GAAcV,KACvDtwN,EAAOixN,EAAWH,GAAiBG,GAAY,KACnD,OAAOF,GAAa3sJ,EAAQpkE,EAC9B,CACA,SAAS,GAAcgxN,EAAYC,GACjC,IAAIr0N,EAAOE,UAAUC,OAIrB,OAHIH,GAAiB,IAATA,GACV,GAAM,uDAEDA,EAAOm0N,GAAaT,GAA0BU,GAAa,GAAwBC,IAAaF,GAAaT,KAA6B,KACnJ,CACA,SAASY,KAGP,OAFAd,KACAS,KACO,IACT,CInLA,IAAIM,GAAc,6BAGdC,GAAa,kGACbC,GAAgB,8DAGhBC,GAAe,UAoCnB,SAASC,GAAK32J,EAAIC,GAChB,OAAO22J,GAAMj0N,MAAMrB,KAAMY,UAC3B,CAWA,SAAS00N,KAkBP,OAjBAA,GAAQ,GAAgC,UAAyB,SAAStpJ,EAASupJ,EAAKpwL,GACtF,IAAI+nH,EAAKvzF,EACT,OAAO,UAAyB,SAAmBsS,GACjD,cAAkBA,EAAU32C,KAAO22C,EAAU12C,MAC3C,KAAK,EAEH,OADA02C,EAAU12C,KAAO,EACVv1B,KAAKw1N,SAASD,EAAKpwL,GAC5B,KAAK,EAGH,OAFA+nH,EAAMjhF,EAAUpf,KAChB8M,EAAMuzF,EAAI5tE,KACHrT,EAAU9W,OAAO,SAAU+3F,EAAIuoE,UAAYz1N,KAAKo5D,KAAKO,GAAO35D,KAAK01N,KAAK/7J,EAAKx0B,IACpF,KAAK,EACL,IAAK,MACH,OAAO8mC,EAAUjnE,OAEvB,GAAGgnE,EAAUhsE,KACf,MACaqB,MAAMrB,KAAMY,UAC3B,CACA,SAAS40N,GAAS/vF,EAAKC,GACrB,OAAOiwF,GAAUt0N,MAAMrB,KAAMY,UAC/B,CASA,SAAS+0N,KAuEP,OAtEAA,GAAY,GAAgC,UAAyB,SAASjuF,EAAS6tF,EAAKpwL,GAC1F,IAAIywL,EAAYhjN,EAAQwoD,EAAQy6J,EAAUrzL,EAAMszL,EAAWC,EAC3D,OAAO,UAAyB,SAAmBpuF,GACjD,cAAkBA,EAAUryG,KAAOqyG,EAAUpyG,MAC3C,KAAK,EA2DH,OA1DA4P,EAAU2Q,GAAO,CAAC,EAAG91C,KAAKmlC,QAASA,GACnCywL,EAAa51N,KAAK41N,WAAYhjN,EAAS,CACrC0sE,KAAM,MAERw2I,EAAYZ,GAAW5vN,KAAKiwN,EAAI3vM,QAAQuvM,GAAe,KAC5C,MAAPI,GAA8B,iBAARA,GAAqBO,GAC7C,GAAM,kCAAoC,GAAYP,IAExDQ,EAAcd,GAAY3vN,KAAKiwN,IAC1B/yL,EAAO2C,EAAQ6wL,WAAaD,IAE1BR,EAAIh0I,WAAW,MAAS/+C,EAAKw4B,SAAS,OACzCu6J,EAAM,IAAMA,GAEdA,EAAM/yL,EAAO+yL,GAIfM,GAAYz6J,EAASm6J,EAAIh0I,WAAW6zI,MAAmC,SAAjBjwL,EAAQg2H,MAAoC,SAAjBh2H,EAAQg2H,OAAoB46D,GAAeH,EACxHx6J,EAEFm6J,EAAMA,EAAIvuM,MAAMouM,GAAav0N,QACpB00N,EAAIh0I,WAAW,QACQ,SAA5Bp8C,EAAQ8wL,iBAEVV,EAAMA,EAAIvuM,MAAM,GAChB6uM,GAAW,GAGXN,GAAOpwL,EAAQ8wL,iBAAmB,QAAU,IAAMV,GAKtD/9M,OAAOoxB,eAAeh2B,EAAQ,YAAa,CACzCzQ,QAAS0zN,IAIXjjN,EAAO0sE,KAAOi2I,EAGVpwL,EAAQz8B,SACVkK,EAAOlK,OAASy8B,EAAQz8B,OAAS,IAI/By8B,EAAQ21E,MACVloG,EAAOkoG,IAAM31E,EAAQ21E,IAAM,IAKL,UAApB31E,EAAQhS,SAAuBgS,EAAQm8C,cACzC1uE,EAAO0uE,YAAcn8C,EAAQm8C,YAAc,IAItCqmD,EAAUxyE,OAAO,SAAUviD,GACpC,KAAK,GACL,IAAK,MACH,OAAO+0H,EAAU3iI,OAEvB,GAAG0iI,EAAU1nI,KACf,KACO21N,GAAUt0N,MAAMrB,KAAMY,UAC/B,CACA,SAASs1N,GAAWC,GAClB,OAAOA,EAAK,SAAU78J,GACpB,OAAO,IAAI1yB,SAAQ,SAAU81B,EAAQp1B,GACnC6uL,EAAGC,SAAS98J,GAAU,SAAUlM,EAAO1nC,GACjC0nC,EAAO9lB,EAAO8lB,GAAYsP,EAAOh3C,EACvC,GACF,GACF,EAAI2wM,EACN,CAKA,SAASA,KACP,OAAOC,GAAYj1N,MAAMrB,KAAMY,UACjC,CASA,SAAS01N,KAYP,OAXAA,GAAc,GAAgC,UAAyB,SAASzuF,IAC9E,OAAO,UAAyB,SAAmBC,GACjD,cAAkBA,EAAUxyG,KAAOwyG,EAAUvyG,MAC3C,KAAK,EACH,GAAM,0BACR,KAAK,EACL,IAAK,MACH,OAAOuyG,EAAU9iI,OAEvB,GAAG6iI,EACL,MACmBxmI,MAAMrB,KAAMY,UACjC,CACA,SAAS21N,GAAWC,GAClB,OAAOA,EAAqB,WAC1B,IAAI3kK,EAAO,GAAgC,UAAyB,SAASoM,EAAQtE,EAAKx0B,GACxF,IAAI+nH,EAAKvkJ,EAAM6vD,EACf,OAAO,UAAyB,SAAkBgG,GAChD,cAAkBA,EAASlpC,KAAOkpC,EAASjpC,MACzC,KAAK,EAIH,OAHA23H,EAAMp3G,GAAO,CAAC,EAAG91C,KAAKmlC,QAAQuwL,KAAMvwL,GACpCx8B,EAAOw8B,GAAWA,EAAQqzB,SAC1BgG,EAASjpC,KAAO,EACTihM,EAAM78J,EAAKuzF,GACpB,KAAK,EAEH,OADA10F,EAAWgG,EAAS3R,KACb2R,EAASrJ,OAAO,SAAWqD,EAASwJ,GAAyD0qE,GAAWl0E,EAAS7vD,IAAS6vD,EAAS7vD,KAAU6vD,EAAS33C,OAA7G,GAAM23C,EAASiB,OAAS,GAAKjB,EAASgjD,aACxF,KAAK,EACL,IAAK,MACH,OAAOh9C,EAASx5D,OAEtB,GAAGi5D,EAASj+D,KACd,KACA,OAAO,SAAU2lI,EAAKsB,GACpB,OAAOp1E,EAAKxwD,MAAMrB,KAAMY,UAC1B,CACF,CAtB4B,GAsBtB61N,EACR,CAKA,SAASA,KACP,OAAOC,GAAYr1N,MAAMrB,KAAMY,UACjC,CACA,SAAS81N,KAYP,OAXAA,GAAc,GAAgC,UAAyB,SAASC,IAC9E,OAAO,UAAyB,SAAmBC,GACjD,cAAkBA,EAAUthM,KAAOshM,EAAUrhM,MAC3C,KAAK,EACH,GAAM,mCACR,KAAK,EACL,IAAK,MACH,OAAOqhM,EAAU5xN,OAEvB,GAAG2xN,EACL,MACmBt1N,MAAMrB,KAAMY,UACjC,CACA,IAAIotJ,GAAU,SAAiBtnH,GAC7B,OAAY,MAALA,GAAaA,GAAMA,CAC5B,EAOI,GAAW,SAAkBA,GAC/B,QAAQzkB,OAAOC,OAAOwkB,IAAQA,aAAa1jC,KAC7C,EAII6zN,GAAc,CAChB1uJ,QAASq0I,GACTp0I,QAASswI,GACTxwI,OAAQwwI,GACR3wI,KAAM,GACNxhB,OAAQ,GACRuwK,QAASpyL,IAEPqyL,GAAY,CApBA,SAAmBrwL,GACjC,MAAa,SAANA,GAAsB,UAANA,IAAuB,IAANA,IAAoB,IAANA,CACxD,EAOgB,SAAmBA,GACjC,OAAO,GAASA,IAAMzkB,OAAO0gB,WAAW+D,EAC1C,EASuC,GAjB1B,SAAgBA,GAC3B,OAAQzkB,OAAOC,MAAMlf,KAAKyjD,MAAM/f,GAClC,GAgBIswL,GAAW,CAAC,UAAW,UAAW,SAAU,QAsBhD,SAASC,GAAWvxM,EAAMk6G,GACxB,OAAOA,EAAOjuG,QAAO,SAAUs2C,EAAO43D,GAEpC,OADA53D,EAAM43D,GAvBV,SAAmBr/F,EAAQq/F,GACzB,IAAKr/F,IAAWA,EAAO3/B,OAAQ,MAAO,UAMtC,IALA,IAKuBqG,EAAG/E,EALtBysB,EAAI4R,EAAO3/B,OACbkV,EAAIghN,GAAUl2N,OACdsd,EAAI44M,GAAU/lM,KAAI,SAAU0V,EAAGxlC,GAC7B,OAAOA,EAAI,CACb,IACOA,EAAI,EAAG6C,EAAI,EAAa7C,EAAI0tB,IAAK1tB,EAExC,IADAiB,EAAQ09H,EAAQr/F,EAAOt/B,GAAG2+H,GAASr/F,EAAOt/B,GACrCgG,EAAI,EAAGA,EAAI6O,IAAK7O,EACnB,GAAIiX,EAAEjX,IAAM8mJ,GAAQ7rJ,KAAW40N,GAAU7vN,GAAG/E,KAC1Cgc,EAAEjX,GAAK,IACLnD,IACQgzN,GAAUl2N,QAAQ,MAAO,SAIzC,OAAOm2N,GAAS74M,EAAEwT,QAAO,SAAUnM,EAAGvT,GACpC,OAAa,IAANuT,EAAUvT,EAAIuT,CACvB,GAAG,GAAK,EACV,CAGmB0xM,CAAUxxM,EAAMm6G,GACxB53D,CACT,GAAG,CAAC,EACN,CACA,SAASkvJ,GAAgBhZ,GACvB,IAAI13J,EAAQ,SAAe/gC,EAAMsuB,GAC/B,IAAIojL,EAAQ,CACVjZ,UAAWA,GAEb,OAAO,GAAIz4L,EAAMsuB,EAAS8B,GAAO9B,EAAQojL,GAASA,EACpD,EAEA,OADA3wK,EAAM4wK,aAAe,OACd5wK,CACT,CACA,SAAS,GAAI/gC,EAAMsuB,GAIjB,OAHIA,EAAO+6I,SACTrpK,EAAOsuB,EAAO+6I,OAAO/9J,IAAI,IAAa3H,KAAK2qB,EAAOmqK,WAAa,KAAOz4L,GAEjE4xM,GAAUtjL,EAAOmqK,WAAW13J,MAAM/gC,EAAO,GAClD,CAKA,SAASmpH,GAAKnpH,EAAMsuB,GAClB,IAJgBtN,EAIZxhC,EAAO8uC,GAAUA,EAAOgnK,SAAWn7E,GAAM7rF,EAAOgnK,UAAYt2K,GAChE,OAAOypB,GAASzoC,KALAghB,EAKmBhhB,EAJV,mBAAXyhB,QAAyBulG,GAAWvlG,OAAOW,WAAYX,OAAOW,SAASpB,IAIVxhC,EAAK87C,KAAKyF,MAAM/gC,IAG7F,SAAmBA,EAAMsuB,IAClB,GAAQtuB,IAASk2L,GAAWl2L,KAC/BA,GAAO,QAAmBA,IAE5B,OAAOsuB,GAAUA,EAAOhM,KAAOgZ,KAAKyF,MAAMzF,KAAKF,UAAUp7B,IAASA,CACpE,CAR6C6xM,CAAUryN,EAAKwgB,GAAOsuB,EACnE,CAPA,GAAIqjL,aAAe,OAQnBxoF,GAAKwoF,aAAe,OAOpB,IAAIG,GAAU,CACZC,SAAU,SAAkBt5M,EAAG8E,GAC7B,OAAO9E,IAAM8E,CACf,EACAy0M,SAAU,SAAkBv5M,EAAG8E,GAC7B,OAAO9E,IAAM8E,CACf,GAEF,SAAS00M,GAASjyM,EAAMsuB,GACtB,IAAIroC,EAAQg5B,EAAQq2K,EAAUzqM,EAa9B,OAZAmV,EAAOmpH,GAAKnpH,EAAMsuB,GACdA,GAAUA,EAAO4jL,SACnBjsN,EAASisN,GACT5c,EAAWhnK,EAAO4jL,SACT5jL,GAAUA,EAAO6jL,MAC1BlsN,EAASksN,GACT7c,EAAWhnK,EAAO6jL,KAClBtnN,EAASinN,GAAQxjL,EAAOzjC,SAExB,GAAM,gDAERo0B,GAAUA,EAASjf,EAAKw5L,QAAQlE,IAAarvM,EAAO+Z,EAAMif,EAAQp0B,GAAU,GAAM,4BAA8ByqM,KAC/Fr2K,EAAOw6K,UAAY,CAACx6K,EACvC,CACAgzL,GAASN,aAAe,OACxB,IAAI,GAAS,CACXC,IAAK,GACLQ,IAAKX,GAAgB,KACrBY,IAAKZ,GAAgB,MACrBtoF,KAAMA,GACN8oF,SAAUA,IAEZ,SAASzJ,GAAQjsN,EAAMu/E,GACrB,OAAI5gF,UAAUC,OAAS,GACrB,GAAOoB,GAAQu/E,EACRxhF,MAEA,GAAe,GAAQiC,GAAQ,GAAOA,GAAQ,IAEzD,CACA,SAASo1N,GAAa1uN,GACpB,IAAItF,EAAI6qN,GAAQvlN,GAChB,OAAOtF,GAAKA,EAAEg0N,cAAgB,MAChC,CACA,SAASW,GAAKtyM,EAAM2+G,EAAQ4zF,EAAYC,GAEtC,IAAI12I,EAAS0sI,IADb7pF,EAASA,GAAU,CAAC,GACQ17H,MAAQ,QAKpC,OAJK64E,GAAQ,GAAM,6BAA+B6iD,EAAO17H,MACzD+c,EAAO87D,EAAO97D,EAAM2+G,GAChBA,EAAO59E,OAIb,SAAe/gC,EAAMuiD,EAAOgwJ,EAAYC,GACtC,IAAKxyM,EAAK7kB,OAAQ,OAElB,IAAIghE,EAAS,KACbo2J,EAAaA,GAAcp2J,EAAO6wJ,UAClCwF,EAAYA,GAAar2J,EAAO2wJ,SAChC,IACE2F,EACAt4F,EACA3+H,EACAgG,EACA0nB,EACA7Y,EANE6pH,EAASl6G,EAAK23L,SAAW7lM,OAAOopB,KAAKlb,EAAK,IAOhC,SAAVuiD,IAAkBA,EAAQgvJ,GAAWvxM,EAAMk6G,IAC/CA,EAASpoH,OAAOopB,KAAKqnC,GACrB,IAAImwJ,EAAUx4F,EAAO5uG,KAAI,SAAU6uG,GACjC,IACIw4F,EAAO7vJ,EADP7/D,EAAOs/D,EAAM43D,GAEjB,GAAIl3H,IAASA,EAAK44E,WAAW,UAAY54E,EAAK44E,WAAW,SAOvD,OAJmB,OADnB/Y,GADA6vJ,EAAQ1vN,EAAK2gB,MAAM,SAAU,IACb,IACJ,IAA+C,MAAhCk/C,EAAQA,EAAQ3nE,OAAS,IAA8B,MAAf2nE,EAAQ,IAA8C,MAAhCA,EAAQA,EAAQ3nE,OAAS,MAChH2nE,EAAUA,EAAQxhD,MAAM,GAAI,KAEJ,QAAbqxM,EAAM,GAAeH,EAAYD,GAChCzvJ,GAEhB,IAAKquJ,GAAYluN,GACf,MAAMs/B,MAAM,2BAA6B43F,EAAQ,IAAMl3H,GAEzD,OAAOkuN,GAAYluN,EACrB,IACA,IAAKzH,EAAI,EAAG0tB,EAAIlJ,EAAK7kB,OAAQkV,EAAI6pH,EAAO/+H,OAAQK,EAAI0tB,IAAK1tB,EAEvD,IADAi3N,EAAQzyM,EAAKxkB,GACRgG,EAAI,EAAGA,EAAI6O,IAAK7O,EAEnBixN,EADAt4F,EAAQD,EAAO14H,IACAkxN,EAAQlxN,GAAGixN,EAAMt4F,GAGtC,CA3CoBp5E,CAAM/gC,EAAM2+G,EAAO59E,MAAOwxK,EAAYC,GACpD,GAAexyM,EAAM,mBAAmBA,EAAK23L,QAC1C33L,CACT,CAyCA,IAAI4yM,GAhZJ,SAAuB9B,EAAOL,GAC5B,OAAO,SAAUhxL,GACf,MAAO,CACLA,QAASA,GAAW,CAAC,EACrBqwL,SAAUA,GACVH,KAAMA,GACNO,aAAcO,EACd/8J,KAAM88J,GAAWC,GACjBT,KAAMa,GAAWC,GAErB,CACF,CAqYa+B,CAA+B,oBAAV/B,OAAyBA,MAE3D,MC9aA,SAASgC,GAA2BpzM,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAOuzM,GAAkBvzM,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO+pM,GAAkBvzM,EAAGszM,EAAS,CAD5OE,CAA4BxzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAASmxL,GAAkBliN,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAIlL,SAASC,GAAWC,GAClB,IAAI7pK,EAAI6pK,GAAU10L,GAChBg9E,EAAO,GACP23G,EAAM,CAAC,EAkBT,OAjBA33G,EAAKlwG,IAAM,SAAUk1B,GACnB,IAAIhzB,EAAK67C,EAAE7oB,GAKX,OAJK2yL,EAAI3lN,KACP2lN,EAAI3lN,GAAM,EACVguG,EAAKnhH,KAAKmmC,IAELg7E,CACT,EACAA,EAAKvuG,OAAS,SAAUuzB,GACtB,IAAIhzB,EAAK67C,EAAE7oB,GACX,GAAI2yL,EAAI3lN,GAAK,CACX2lN,EAAI3lN,GAAM,EACV,IAAIwxB,EAAMw8E,EAAKxuG,QAAQwzB,GACnBxB,GAAO,GAAGw8E,EAAKtgH,OAAO8jC,EAAK,EACjC,CACA,OAAOw8E,CACT,EACOA,CACT,CAUA,SAAS43G,GAAc56J,EAAIC,GACzB,OAAO46J,GAAel4N,MAAMrB,KAAMY,UACpC,CACA,SAAS24N,KAqBP,OApBAA,GAAiB,GAAgC,UAAyB,SAASt7J,EAAQ51C,EAAIhoB,GAC7F,OAAO,UAAyB,SAAkBm+D,GAChD,cAAkBA,EAASlpC,KAAOkpC,EAASjpC,MACzC,KAAK,EAGH,OAFAipC,EAASlpC,KAAO,EAChBkpC,EAASjpC,KAAO,EACTl1B,EAASgoB,GAClB,KAAK,EACHm2C,EAASjpC,KAAO,EAChB,MACF,KAAK,EACHipC,EAASlpC,KAAO,EAChBkpC,EAASp6D,GAAKo6D,EAAgB,MAAE,GAChCn2C,EAAG+kC,MAAMoR,EAASp6D,IACpB,KAAK,EACL,IAAK,MACH,OAAOo6D,EAASx5D,OAEtB,GAAGi5D,EAAS,KAAM,CAAC,CAAC,EAAG,IACzB,KACOs7J,GAAel4N,MAAMrB,KAAMY,UACpC,CACA,IAAI44N,GAAephL,OAAO,WACtBqhL,GAAW,EAOf,SAASC,GAAQ31N,GACf,SAAUA,IAAK41N,GAAQ51N,GACzB,CAOA,SAAS41N,GAAQ51N,GACf,OAAOA,EAAEy1N,GACX,CAQA,SAASI,GAAM71N,EAAG2P,GAEhB,OADA3P,EAAEy1N,IAAgB9lN,EACX3P,CACT,CAWA,SAAS81N,GAAS1B,GAChB,IAAIp0N,EAAIo0N,IAAU3gN,OAAO2gN,GAASA,EAAQ,CACxCzyM,KAAMyyM,GAER,OAAOwB,GAAQ51N,GAAKA,EAAI61N,GAAM71N,EAAG01N,KACnC,CAOA,SAASK,GAAO/1N,GACd,OAAOg2N,GAASh2N,EAAG81N,GAAS,CAAC,GAC/B,CAQA,SAASE,GAASh2N,EAAGgiB,GACnB,IAAK,IAAIrf,KAAK3C,EAAGgiB,EAAErf,GAAK3C,EAAE2C,GAC1B,OAAOqf,CACT,CAQA,SAASH,GAAQ7hB,EAAGgiB,GAClB,OAAO6zM,GAAM7zM,EAAG4zM,GAAQ51N,GAC1B,CASA,SAASi2N,GAAcx5K,EAAKn9C,GAC1B,OAAQm9C,EAAan9C,EAAI,SAAU8a,EAAG8E,GACpC,OAAOu9B,EAAIriC,EAAG8E,IAAM02M,GAAQt2N,EAAE8a,IAAMw7M,GAAQt2N,EAAE4f,GAChD,EAAI,SAAU9E,EAAG8E,GACf,OAAOu9B,EAAIriC,EAAG8E,IAAM02M,GAAQx7M,GAAKw7M,GAAQ12M,EAC3C,EAJc,IAKhB,CACA,SAASg3M,GAAYhoN,GACnB,OAAOA,GAAKA,EAAEnN,cAAgBo1N,EAChC,CACA,SAASA,KACP,IAAI1oN,EAAM,GAER2oN,EAAM,GAENC,EAAM,GAENC,EAAO,GAEPC,EAAO,GACLC,EAAS,KACXC,GAAU,EACZ,MAAO,CACL11N,YAAao1N,GACbO,OAAQ,SAAgB12N,GAGtB,IAFA,IAAIgiB,EAAI,GAAMhiB,GACZ6qB,EAAI7I,EAAEllB,OACCK,EAAI,EAAGA,EAAI0tB,IAAK1tB,EAAGsQ,EAAIjR,KAAKwlB,EAAE7kB,IACvC,OAAOlB,IACT,EACAmT,OAAQ,SAAgBpP,GAItB,IAHA,IAAIoa,EAAIuuH,GAAW3oI,GAAKs2N,EAAOF,EAC7Bp0M,EAAI,GAAMhiB,GACV6qB,EAAI7I,EAAEllB,OACCK,EAAI,EAAGA,EAAI0tB,IAAK1tB,EAAGid,EAAE5d,KAAKwlB,EAAE7kB,IACrC,OAAOlB,IACT,EACA+xB,OAAQ,SAAgBhuB,EAAG87H,EAAO19H,GAChC,IAAI4T,EAAI,CACN8pH,MAAOA,EACP19H,MAAO,GAASA,IASlB,OAPIuqI,GAAW3oI,IACbgS,EAAExF,OAASxM,EACXu2N,EAAK/5N,KAAKwV,KAEVA,EAAE2kN,MAAQ32N,EACVq2N,EAAI75N,KAAKwV,IAEJ/V,IACT,EACA26N,OAAQ,SAAgB52N,EAAG7B,GAQzB,OAPIwqI,GAAW3oI,GAAIu2N,EAAK/5N,KAAK,CAC3BgQ,OAAQxM,EACR87H,MAAO39H,IACDk4N,EAAI75N,KAAK,CACfm6N,MAAO32N,EACP87H,MAAO39H,IAEFlC,IACT,EACAq7M,MAAO,SAAel5M,GAEpB,OADAo4N,EAASp4N,EACFnC,IACT,EACA46N,OAAQ,WAEN,OADAJ,GAAU,EACHx6N,IACT,EACA66N,MAAO,SAAeC,EAAQC,GAC5B,IAEI75N,EAAG0tB,EAAG7Y,EAAG1S,EAAGU,EAAG2P,EAFfy1I,EAAM,CAAC,EACTjmI,EAAM,CAAC,EAIT,IAAKhiB,EAAI,EAAG0tB,EAAImsM,EAAOl6N,OAAQK,EAAI0tB,IAAK1tB,EACtCioJ,EAAIwwE,GAAQoB,EAAO75N,KAAO,EAI5B,IAAKA,EAAI,EAAG0tB,EAAIurM,EAAIt5N,OAAQK,EAAI0tB,IAAK1tB,EAEnCioJ,EAAIwwE,GADJ51N,EAAIo2N,EAAIj5N,MACW,EAIrB,IAAKA,EAAI,EAAG0tB,EAAIyrM,EAAKx5N,OAAQK,EAAI0tB,IAAK1tB,EACpCmC,EAAIg3N,EAAKn5N,GACT65N,EAAO3yN,SAAQ,SAAUrE,GACnBV,EAAEU,KAAIolJ,EAAIwwE,GAAQ51N,KAAO,EAC/B,IAIF,IAAK7C,EAAI,EAAG0tB,EAAIpd,EAAI3Q,OAAQK,EAAI0tB,IAAK1tB,EAEnCwS,EAAKimN,GADL51N,EAAIyN,EAAItQ,IAEJioJ,EAAIz1I,GAGNy1I,EAAIz1I,GAAM,EAGVonN,EAAOtpN,IAAIjR,KAAKs5N,GAASroN,EAAItQ,KAKjC,IAAKA,EAAI,EAAG0tB,EAAImsM,EAAOl6N,OAAQK,EAAI0tB,IAAK1tB,EACtC6C,EAAIg3N,EAAO75N,GACPioJ,EAAIwwE,GAAQ51N,IAAM,GAAG+2N,EAAOX,IAAI55N,KAAKwD,GAI3C,SAASguB,EAAOhuB,EAAGV,EAAG4O,GAChBA,EACFlO,EAAEV,GAAK4O,EAAElO,GAET+2N,EAAOH,OAASt3N,EAEbm3N,IAASt3M,EAAIy2M,GAAQ51N,IAAMA,EAClC,CAGA,IAAK7C,EAAI,EAAG0tB,EAAIwrM,EAAIv5N,OAAQK,EAAI0tB,IAAK1tB,EAEnC6C,GADAgS,EAAIqkN,EAAIl5N,IACFw5N,MACNr3N,EAAI0S,EAAE8pH,OACNnsH,EAAKy1I,EAAIwwE,GAAQ51N,KACR,IACPguB,EAAOhuB,EAAGV,EAAG0S,EAAE5T,OACf24N,EAAOE,SAAS33N,IAKpB,IAAKnC,EAAI,EAAG0tB,EAAI0rM,EAAKz5N,OAAQK,EAAI0tB,IAAK1tB,EACpC6U,EAAIukN,EAAKp5N,GACTmC,EAAI0S,EAAExF,OACNwqN,EAAO3yN,SAAQ,SAAUrE,GACnBV,EAAEU,IAAMolJ,EAAIwwE,GAAQ51N,IAAM,GAC5BguB,EAAOhuB,EAAGgS,EAAE8pH,MAAO9pH,EAAE5T,MAEzB,IACA24N,EAAOE,SAASjlN,EAAE8pH,OAKpB,GAAI26F,EACFM,EAAOV,IAAMD,EAAIt5N,QAAUw5N,EAAKx5N,OAASk6N,EAAOxqN,QAAO,SAAUxM,GAC/D,OAAOolJ,EAAIwwE,GAAQ51N,IAAM,CAC3B,IAAKg3N,EAAO/zM,aAEZ,IAAKtT,KAAMwP,EAAK43M,EAAOV,IAAI75N,KAAK2iB,EAAIxP,IAOtC,OAHI6mN,GAAoB,MAAVA,IAAmBJ,EAAIt5N,QAAUw5N,EAAKx5N,UAClDi6N,EAAOzf,OAAM,GAERyf,CACT,EAEJ,CACA,IAAIG,GAAQ,UAMZ,SAASC,KACP1jN,OAAOoxB,eAAe5oC,KAAMi7N,GAAO,CACjC/nK,UAAU,EACV/wD,MAAO,CAAC,GAEZ,CACA+4N,GAAWh7N,UAAY,CAYrBgC,IAAK,SAAaD,EAAM+F,EAAO7F,EAAOg5N,GACpC,IAAI/1M,EAAIplB,KACNiS,EAAImT,EAAEnjB,GACNm4N,EAAMh1M,EAAE61M,IAWV,OAVa,MAATjzN,GAAiBA,GAAS,GACxBiK,EAAEjK,KAAW7F,GAASg5N,KACxBlpN,EAAEjK,GAAS7F,EACXi4N,EAAIpyN,EAAQ,IAAM/F,IAAS,EAC3Bm4N,EAAIn4N,IAAS,IAENgQ,IAAM9P,GAASg5N,KACxB/1M,EAAEnjB,GAAQE,EACVi4N,EAAIn4N,GAAQ,GAAQE,GAAS,EAAIA,EAAMtB,QAAU,GAE5CukB,CACT,EAWAg2M,SAAU,SAAkBn5N,EAAM+F,GAChC,IAAIoyN,EAAMp6N,KAAKi7N,IACf,IAAKr6N,UAAUC,OAAQ,CACrB,IAAK,IAAI6F,KAAK0zN,EACZ,GAAIA,EAAI1zN,GAAI,OAAO,EAErB,OAAO,CACT,CAAO,GAAI,GAAQzE,GAAO,CACxB,IAAK,IAAIo5N,EAAK,EAAGA,EAAKp5N,EAAKpB,SAAUw6N,EACnC,GAAIjB,EAAIn4N,EAAKo5N,IAAM,OAAO,EAE5B,OAAO,CACT,CACA,OAAgB,MAATrzN,GAAiBA,GAAS,EAAIA,EAAQ,EAAIoyN,EAAIn4N,MAAWm4N,EAAIpyN,EAAQ,IAAM/F,KAAUm4N,EAAIn4N,EAClG,EAKAsN,MAAO,WAEL,OADAvP,KAAKi7N,IAAS,CAAC,EACRj7N,IACT,GAEF,IAAIs7N,GAAQ,EAEVC,GAAY,IAAIL,GAuBlB,SAASM,GAASlxN,EAAM9E,EAAQ8b,EAAQm6M,GACtCz7N,KAAK0T,KAAO4nN,GACZt7N,KAAKmC,MAAQmI,EACbtK,KAAK07N,OAAS,EACd17N,KAAK27N,MAAQ,EACb37N,KAAK47N,OAAS,EACd57N,KAAKkpC,MAAQ,EACT1jC,IACFxF,KAAKqH,QAAU7B,GAEb8b,GAAQthB,KAAKmhD,WAAW7/B,EAAQm6M,EACtC,CACA,SAASI,GAAKC,GACZ,OAAO,SAAUv4K,GACf,IAAIlgD,EAAIrD,KAAKkpC,MACb,OAAyB,IAArBtoC,UAAUC,UAAwBwC,EAAIy4N,IAC1C97N,KAAKkpC,MAAQqa,EAAQlgD,EAAIy4N,EAAMz4N,GAAKy4N,EAC7B97N,KACT,CACF,CACAw7N,GAASt7N,UAAY,CAMnB67N,QAAS,WACP,OAAO/7N,KAAKg8N,WAAah8N,KAAKg8N,SAAW7C,GAAWzlN,IACtD,EAOAxR,IAAK,SAAaC,GAChB,OAAInC,KAAKmC,QAAUA,GACjBnC,KAAKmC,MAAQA,EACN,GAEA,CAEX,EAOAgpE,KAAM0wJ,GArEK,GA8EXT,SAAUS,GA7EC,GA+FX16K,WAAY,SAAoB7/B,EAAQm6M,EAAOQ,GAC7C,IAAIx7N,EAAQT,KACZy7N,GAAkB,IAAVA,EACR,IAGIx5N,EAAME,EAAOysB,EAAG1tB,EAHhBg7N,EAASl8N,KAAKm8N,QAAUn8N,KAAKm8N,SAAW,IAAIjB,GAC9CkB,EAASp8N,KAAKq8N,QAAUr8N,KAAKq8N,SAAW,GACxCrhE,EAAO,GAELxpJ,EAAM,SAAavP,EAAM+F,EAAO7F,GAC9BA,aAAiBq5N,IACfr5N,IAAU1B,IACRg7N,GAAOt5N,EAAM45N,UAAUvqN,IAAI/Q,GAC/Bu6J,EAAKz6J,KAAK4B,IAEZi6N,EAAO77N,KAAK,CACV0sD,GAAI9qD,EACJF,KAAMA,EACN+F,MAAOA,KAGTk0N,EAAOh6N,IAAID,EAAM+F,EAAO7F,EAE5B,EACA,IAAKF,KAAQqf,EAEX,GADAnf,EAAQmf,EAAOrf,GA3HT,UA4HFA,EACF,GAAME,GAAOiG,SAAQ,SAAU6kD,GACvBA,aAAcuuK,GAETvuK,IAAOxsD,IAChBwsD,EAAG8uK,UAAUvqN,IAAI/Q,GACjBu6J,EAAKz6J,KAAK0sD,IAHV,GAAM,+CAKV,IACAjtD,KAAKqxB,OAASlvB,OACT,GAAI,GAAQA,GAEjB,IADA+5N,EAAOh6N,IAAID,GAAO,EAAGw+B,MAAM7R,EAAIzsB,EAAMtB,SAChCK,EAAI,EAAGA,EAAI0tB,IAAK1tB,EAAGsQ,EAAIvP,EAAMf,EAAGiB,EAAMjB,SAE3CsQ,EAAIvP,GAAO,EAAGE,GAKlB,OAFAnC,KAAKs8N,WAAW/sN,QACZ0sN,IAAUG,EAAOH,UAAW,GACzBjhE,CACT,EAMAshE,SAAU,SAAkBZ,GAC1B,IAEIjkN,EAAMvW,EAAG+rD,EAAImtK,EAFb8B,EAASl8N,KAAKm8N,SAAWZ,GAC3Ba,EAASp8N,KAAKq8N,QAEhB,GAAID,EAAQ,CACV,IAAIxtM,EAAIwtM,EAAOv7N,OACf,IAAKK,EAAI,EAAGA,EAAI0tB,IAAK1tB,EAGnBk5N,GADAntK,GADAx1C,EAAO2kN,EAAOl7N,IACJ+rD,IACDmuK,YAAcnuK,EAAGyuK,QAAUA,EACpCQ,EAAOh6N,IAAIuV,EAAKxV,KAAMwV,EAAKzP,MAAOilD,EAAG9qD,MAAOi4N,GAE9C,GAAIgC,EAAOH,SAAU,CACnB,IAAK/6N,EAAI,EAAGA,EAAI0tB,IAAK1tB,GACnBuW,EAAO2kN,EAAOl7N,IACT+rD,GAAG8uK,UAAU5oN,OAAOnT,MAE3BA,KAAKq8N,QAAU,KACfr8N,KAAKqH,QAAU,IACjB,CACF,CACA,OAAO60N,CACT,EAKAK,OAAQ,WACN,IACIr7N,EAAG0tB,EAASq+B,EADZmvK,EAASp8N,KAAKq8N,QAElB,GAAID,EACF,IAAKl7N,EAAI,EAAG0tB,EAAIwtM,EAAOv7N,OAAQK,EAAI0tB,IAAK1tB,GAEtC+rD,EADOmvK,EAAOl7N,GACJ+rD,IACH+uK,UACL/uK,EAAG+uK,SAAS7oN,OAAOnT,MAOzBA,KAAK66N,MAAQ,KACb76N,KAAKqxB,OAAS,IAChB,EAYAmrM,SAAU,SAAkB3B,GAC1B,IAAIr1N,EAASxF,KAAKqH,QAClB,GAAI7B,EAAQ,CACV,IAAI8b,EAASthB,KAAKs8N,SAASzB,EAAMa,OAC/BzpN,EAAIzM,EAAO5D,KAAK5B,KAAMshB,EAAQu5M,GAEhC,GADAv5M,EAAO/R,QACH0C,IAAMjS,KAAKmC,MACbnC,KAAKmC,MAAQ8P,OACR,IAAKjS,KAAKo7N,WACf,OAAOP,EAAM4B,eAEjB,CACF,EAUAC,IAAK,SAAa7B,GAChB,OAAIA,EAAMa,MAAQ17N,KAAK07N,MAAcb,EAAM4B,iBAEvCz8N,KAAKmrE,QACPnrE,KAAKmrE,MAAK,GACVwxJ,EAAK,GAELA,EAAK38N,KAAKw8N,SAAS3B,GAEd76N,KAAK66N,MAAQ8B,GAAM9B,GAP1B,IAAI8B,CAQN,GA4DF,IAAIC,GAAY,EAYhB,SAASC,GAAYtsN,EAAQlP,EAAOy7N,GAClC98N,KAAK0T,KAAOkpN,GACZ58N,KAAKmC,MAAQ,KACT26N,IAAS98N,KAAK88N,QAAUA,GACxBvsN,IAAQvQ,KAAK+8N,QAAUxsN,GACvBlP,IAAOrB,KAAKg9N,OAAS37N,EAC3B,CAWA,SAAS47N,GAAO1sN,EAAQlP,EAAOy7N,GAC7B,OAAO,IAAID,GAAYtsN,EAAQlP,EAAOy7N,EACxC,CA2JA,SAASI,KAwCP,OAvCAA,GAAW,GAAgC,UAAyB,SAASlxJ,EAASrS,EAAK3lB,GACzF,IAAI3rB,EAAIoxC,EAAQ/zC,EAChB,OAAO,UAAyB,SAAmBumD,GACjD,cAAkBA,EAAU32C,KAAO22C,EAAU12C,MAC3C,KAAK,EAKH,OAJAlN,EAAKroB,KACLy5D,EAAS,EACTwS,EAAU32C,KAAO,EACjB22C,EAAU12C,KAAO,EACVlN,EAAGiwM,SAASjD,KAAK17J,EAAK,CAC3BxmC,QAAS,WACTqlC,SAAU6+J,GAAarjL,GAAUA,EAAOrrC,QAE5C,KAAK,EACH+c,EAAOumD,EAAUpf,KACjB,IACEnnC,EAAO2C,EAAGo+B,MAAM/gC,EAAMsuB,EACxB,CAAE,MAAOxM,GACPiyB,GAAU,EACVpxC,EAAG43H,KAAK,wBAAyBtmF,EAAKnyB,EACxC,CACAykC,EAAU12C,KAAO,GACjB,MACF,KAAK,EACH02C,EAAU32C,KAAO,EACjB22C,EAAU7nE,GAAK6nE,EAAiB,MAAE,GAClCxS,GAAU,EACVpxC,EAAG43H,KAAK,iBAAkBtmF,EAAKsS,EAAU7nE,IAC3C,KAAK,GACH,OAAO6nE,EAAU9W,OAAO,SAAU,CAChCzvC,KAAMA,EACN+zC,OAAQA,IAEZ,KAAK,GACL,IAAK,MACH,OAAOwS,EAAUjnE,OAEvB,GAAGgnE,EAAUhsE,KAAM,CAAC,CAAC,EAAG,IAC1B,KACOk9N,GAAS77N,MAAMrB,KAAMY,UAC9B,CAIA,SAASu8N,KAqBP,OApBAA,GAAW,GAAgC,UAAyB,SAASz1F,EAASh/H,EAAQixD,EAAK3lB,GACjG,IAAI3rB,EAAI24G,EAAS96G,EACjB,OAAO,UAAyB,SAAmByhH,GACjD,cAAkBA,EAAUryG,KAAOqyG,EAAUpyG,MAC3C,KAAK,EAIH,OAHWyrG,GAAX34G,EAAKroB,MAAmBygI,UAAY28F,GAAY/0M,IACxCg1M,UAAY,EACpB11F,EAAUpyG,KAAO,EACVlN,EAAG62C,QAAQvF,EAAK3lB,GACzB,KAAK,EAIH,OAHA9tB,EAAMyhH,EAAU96E,KAChBxkC,EAAGwyM,MAAMnyN,EAAQ2f,EAAG6xM,YAAY/mN,OAAO0kM,IAAQ4iB,OAAOv0M,EAAIR,MAAQ,KAClEs7G,EAAQ1oF,OACDqvF,EAAUxyE,OAAO,SAAUjvC,GACpC,KAAK,EACL,IAAK,MACH,OAAOyhH,EAAU3iI,OAEvB,GAAG0iI,EAAU1nI,KACf,KACOm9N,GAAS97N,MAAMrB,KAAMY,UAC9B,CACA,SAASw8N,GAAY/0M,GACnB,IAAIq0C,EACAskE,EAAU,IAAIp6F,SAAQ,SAAUzoB,GAClC,OAAOu+C,EAASv+C,CAClB,IAQA,OAPA6iH,EAAQq8F,SAAW,EACnBr8F,EAAQ1oF,KAAO,WACc,KAArB0oF,EAAQq8F,WACZh1M,EAAGo4G,SAAW,KACd/jE,EAAOr0C,GAEX,EACOA,EAAGo4G,SAAWO,CACvB,CA3OA67F,GAAY38N,UAAY,CACtB68N,QAASllB,GACTmlB,OAAQt4L,GACRq3L,QAAS,WACP,OAAO/7N,KAAKg8N,WAAah8N,KAAKg8N,SAAW7C,GAAWzlN,IACtD,EACA4pN,QAAS,SAAiB52L,GACxB,OAAK9lC,UAAUC,QACfb,KAAKu9N,WAAa72L,EACX1mC,QAFyBA,KAAKu9N,QAGvC,EACAT,QAAS,SAAiB18N,GACxB,GAAIJ,KAAK+8N,QAAQ38N,GAAM,CAIrB,IAHA,IAAIiF,EAAMrF,KAAKmC,MAAQnC,KAAKg9N,OAAO58N,GACjCo9N,EAAMx9N,KAAKg8N,SACXptM,EAAI4uM,EAAMA,EAAI38N,OAAS,EAChBK,EAAI,EAAGA,EAAI0tB,IAAK1tB,EAAGs8N,EAAIt8N,GAAG47N,QAAQz3N,GACvCrF,KAAKu9N,WACPn9N,EAAIqM,iBACJrM,EAAIuiB,kBAER,CACF,EACApS,OAAQ,SAAgBwsN,GACtB,IAAIj/M,EAAIm/M,GAAOF,GAEf,OADA/8N,KAAK+7N,UAAUvqN,IAAIsM,GACZA,CACT,EACAzc,MAAO,SAAe27N,GACpB,IAAIl/M,EAAIm/M,GAAO,KAAMD,GAErB,OADAh9N,KAAK+7N,UAAUvqN,IAAIsM,GACZA,CACT,EACAo+L,MAAO,WACL,IAAIp+L,EAAIm/M,KACRj9N,KAAK+7N,UAAUvqN,IAAIsM,GACnB,IAAK,IAAI5c,EAAI,EAAG0tB,EAAIhuB,UAAUC,OAAQK,EAAI0tB,IAAK1tB,EAC7CN,UAAUM,GAAG66N,UAAUvqN,IAAIsM,GAE7B,OAAOA,CACT,EACAosE,SAAU,SAAkBuzI,GAC1B,IAAI15N,GAAK,EACT,OAAO/D,KAAKuQ,QAAO,WACjB,IAAIxN,EAAMC,KAAKD,MACf,OAAIA,EAAMgB,EAAI05N,GACZ15N,EAAIhB,EACG,GAEA,CAEX,GACF,EACA2lL,SAAU,SAAkB7kL,GAC1B,IAAIia,EAAIm/M,KAMR,OALAj9N,KAAK+7N,UAAUvqN,IAAIyrN,GAAO,KAAM,KAAM,GAAUp5N,GAAO,SAAUK,GAC/D,IAAImkB,EAAKnkB,EAAEw5N,SACX5/M,EAAEg/M,QAAQ54N,GACNmkB,GAAMA,EAAGq0M,KAAKr0M,EAAGq0M,KACvB,MACO5+M,CACT,EACA6/M,QAAS,SAAiBx/M,EAAG8E,GAC3B,IAAIszG,GAAS,EAOb,OANAp4G,EAAE49M,UAAUvqN,IAAIyrN,GAAO,KAAM,MAAM,WACjC,OAAO1mG,GAAS,CAClB,KACAtzG,EAAE84M,UAAUvqN,IAAIyrN,GAAO,KAAM,MAAM,WACjC,OAAO1mG,GAAS,CAClB,KACOv2H,KAAKuQ,QAAO,WACjB,OAAOgmH,CACT,GACF,EACAgmG,OAAQ,WAINv8N,KAAK+8N,QAAUllB,GACf73M,KAAKg8N,SAAW,IAClB,GA4JF,IAAI4B,GAAO,CACTzyJ,MAAM,GAkCR,SAAS0yJ,GAASx1M,EAAI40M,EAAQv0N,EAAQlD,EAAQ8b,EAAQ6jB,GACpD,IACI5E,EAAM0sB,EADNigG,EAAMp3G,GAAO,CAAC,EAAG3Q,EAASy4L,IAEzBlxF,GAAWhkI,KAASA,EAAS,GAASA,SAC5B+tB,IAAXjxB,EACF+6B,EAAO,SAAcr8B,GACnB,OAAOmkB,EAAGy1M,MAAMp1N,EAAOxE,GACzB,EACSwoI,GAAWlnI,IACpBynD,EAAK,IAAIuuK,GAAS,KAAMh2N,EAAQ8b,GAAQ,GACxCif,EAAO,SAAcr8B,GACnB+oD,EAAGuvK,SAASt4N,GACZ,IAAIH,EAAI2E,EAAOxE,GACb+N,EAAIg7C,EAAG9qD,MACT83N,GAAYhoN,GAAKoW,EAAGwyM,MAAM92N,EAAGkO,EAAGkzB,GAAW9c,EAAG7iB,OAAOzB,EAAGkO,EAAGi7I,EAC7D,GAEA3sH,EAAO,SAAcr8B,GACnB,OAAOmkB,EAAG7iB,OAAOkD,EAAOxE,GAAIsB,EAAQ0nJ,EACtC,EAEF+vE,EAAO57N,MAAMk/B,EACf,CACA,SAASw9L,GAAW11M,EAAIgJ,EAAQ3oB,EAAQlD,EAAQ8b,EAAQ6jB,GACtD,QAAe1O,IAAXjxB,EACF6rB,EAAO0qM,UAAUvqN,IAAI9I,OAChB,CACL,IAAIwkJ,EAAM/nH,GAAW,CAAC,EACpB8nB,EAAK,IAAIuuK,GAAS,KAcxB,SAAiB9yN,EAAQlD,GAEvB,OADAA,EAASknI,GAAWlnI,GAAUA,EAAS,GAASA,GACzCkD,EAAS,SAAUg+B,EAAGm0L,GAC3B,IAAI14N,EAAQqD,EAAOkhC,EAAGm0L,GAItB,OAHKnyN,EAAOyiE,SACVziE,EAAOyiE,KAAKhpE,IAAUnC,KAAKmC,OAAOA,MAAQA,GAErCA,CACT,EAAIqD,CACN,CAvB8B4/G,CAAQ18G,EAAQlD,GAAS8b,GAAQ,GAC3D2rC,EAAGmuK,SAASluE,EAAIiuE,OAChBluK,EAAG0uK,KAAOtqM,EAAOsqM,KACjBtqM,EAAO0qM,UAAUvqN,IAAIy7C,GAEjBvkD,IACFukD,EAAGke,MAAK,GACRle,EAAG9qD,MAAQuG,EAAOvG,MAClB8qD,EAAG8uK,UAAUvqN,IAAI9I,GACjB2f,EAAG21M,QAAQt1N,EAAQ,CAACukD,IAExB,CACF,CA6CA,IAAIwvK,GAAkB,CAAC,EAqCvB,SAASwB,GAAMP,EAAUhC,EAAOf,GAC9B36N,KAAK09N,SAAWA,EAChB19N,KAAK07N,MAAiB,MAATA,GAAiB,EAAIA,EAClC17N,KAAKwR,IAAM,GACXxR,KAAKm6N,IAAM,GACXn6N,KAAKo6N,IAAM,GACXp6N,KAAK4/H,OAAS,KACd5/H,KAAK26N,OAASA,GAAU,IAC1B,CACA,SAASuD,GAAax4M,EAAMnV,GAC1B,IAAI2S,EAAM,GAIV,OAHA25L,GAAWn3L,EAAMnV,GAAQ,SAAUm2B,GACjC,OAAOxjB,EAAI3iB,KAAKmmC,EAClB,IACOxjB,CACT,CACA,SAAS,GAAO23M,EAAO3xL,GACrB,IAAIlY,EAAM,CAAC,EAIX,OAHA6pM,EAAMsD,MAAMj1L,GAAO,SAAUnlC,GAC3BitB,EAAI2oM,GAAQ51N,IAAM,CACpB,IACO,SAAUA,GACf,OAAOitB,EAAI2oM,GAAQ51N,IAAM,KAAOA,CAClC,CACF,CACA,SAASq6N,GAAUjgN,EAAG8E,GACpB,OAAO9E,EAAI,SAAUpa,EAAG7C,GACtB,OAAOid,EAAEpa,EAAG7C,IAAM+hB,EAAElf,EAAG7C,EACzB,EAAI+hB,CACN,CAuUA,SAASo7M,GAAWX,EAAUhC,EAAO4C,EAAQ3D,GAC3C,IAAIv8M,EAAIpe,KACJmlB,EAAI,EACRnlB,KAAK09N,SAAWA,EAChB19N,KAAK07N,MAAQA,EACb17N,KAAK4/H,OAAS,KACd5/H,KAAK26N,OAASA,GAAU,KACxB36N,KAAKs+N,OAASA,EACd,IACEC,EADEC,EAAYhG,GAA2B8F,GAE3C,IACE,IAAKE,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAImmL,EAAUF,EAAMp8N,MACpB,GAAIs8N,EAAQ/C,QAAUA,EAAtB,CACA,GAAI+C,EAAQ7+F,OAAQ,CAClB,IAAI8+F,EAAOtgN,EAAEwhH,SAAWxhH,EAAEwhH,OAAS,CAAC,GACpC,IAAK,IAAIv8H,KAAKo7N,EAAQ7+F,OACpB8+F,EAAKr7N,GAAK,CAEd,CACIo7N,EAAQE,QAAQvgN,EAAEwgN,OAAMz5M,GAAK/G,EAAEwgN,KAC/BH,EAAQE,QAAQvgN,EAAEygN,OAAM15M,GAAK/G,EAAEygN,KAC/BJ,EAAQE,QAAQvgN,EAAE0gN,OAAM35M,GAAK/G,EAAE0gN,IATE,CAUvC,CACF,CAAE,MAAOt3L,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACArD,KAAKsyB,QAAUnN,CACjB,CAsGA,SAAS45M,KA+JP,OA9JAA,GAAY,GAAgC,UAAyB,SAASl3F,EAAS8yF,EAAQqE,EAAQC,GACrG,IAAI52M,EAAIsuC,EAAO+kK,EAAO5qM,EAAOm8B,EAAI13B,EAAM63B,EAAO8xK,EAAIh+N,EAClD,OAAO,UAAyB,SAAmB4mI,GACjD,cAAkBA,EAAUxyG,KAAOwyG,EAAUvyG,MAC3C,KAAK,EAEH,GADWohC,EAAQ,KAAnBtuC,EAAKroB,MACG86N,OAAQ,CACdhzF,EAAUvyG,KAAO,EACjB,KACF,CACA,OAAOuyG,EAAU3yE,OAAO,SAAUgqK,GAAU92M,IAC9C,KAAK,EACH,IAAKA,EAAGo4G,SAAU,CAChBqH,EAAUvyG,KAAO,EACjB,KACF,CAEA,OADAuyG,EAAUvyG,KAAO,EACVlN,EAAGo4G,SACZ,KAAK,EACH,IAAKu+F,EAAQ,CACXl3F,EAAUvyG,KAAO,EACjB,KACF,CAEA,OADAuyG,EAAUvyG,KAAO,EACV+jM,GAAcjxM,EAAI22M,GAC3B,KAAK,EACH,GAAI32M,EAAG+2M,SAASv+N,OAAQ,CACtBinI,EAAUvyG,KAAO,GACjB,KACF,CAEA,OADAlN,EAAG2+D,MAAM,wCACF8gD,EAAU3yE,OAAO,SAAU9sC,GACpC,KAAK,GAEHqzM,IAAUrzM,EAAGg3M,OACbh3M,EAAGyyM,OAAS,IAAImD,GAAM51M,EAAIqzM,EAAOf,GAGjCtyM,EAAG+2M,SAASh3N,SAAQ,SAAU6kD,GAC5B,OAAO5kC,EAAGi3M,SAASryK,GAAI,EACzB,IACA5kC,EAAG+2M,SAAWjG,GAAWzlN,IACzBod,EAAQ,EACRg3G,EAAUxyG,KAAO,GACnB,KAAK,GACH,KAAMjN,EAAGk3M,MAAMj7L,OAAS,GAAI,CAC1BwjG,EAAUvyG,KAAO,GACjB,KACF,CAKA,IAHA03B,EAAK5kC,EAAGk3M,MAAMt4M,OAGL00M,OAAS1uK,EAAG2uK,MAAQ,CAC3B9zF,EAAUvyG,KAAO,GACjB,KACF,CAEA,OADAlN,EAAGi3M,SAASryK,GAAI,GACT66E,EAAU3yE,OAAO,WAAY,IACtC,KAAK,GAGH,KADA5/B,EAAO03B,EAAGyvK,IAAIr0M,EAAGm3M,UAAUvyK,EAAI0tK,KACrBpzL,KAAM,CACdugG,EAAUvyG,KAAO,GACjB,KACF,CAEA,OADAuyG,EAAUvyG,KAAO,GACVA,EACT,KAAK,GACHA,EAAOuyG,EAAUj7E,KACjBi7E,EAAUvyG,KAAO,GACjB,MACF,KAAK,GACCA,EAAKohC,QAEPA,EAAMp2D,KAAKg1B,EAAKohC,OAChBphC,EAAOknM,IAEX,KAAK,GAEClnM,IAASknM,IACPxvK,EAAG+uK,UAAU/uK,EAAG+uK,SAAS5zN,SAAQ,SAAU6kD,GAC7C,OAAO5kC,EAAGi3M,SAASryK,EACrB,MAIAn8B,EACFg3G,EAAUvyG,KAAO,GACjB,MACF,KAAK,GACHuyG,EAAUvyG,KAAO,GACjB,MACF,KAAK,GACHuyG,EAAUxyG,KAAO,GACjBwyG,EAAU1jI,GAAK0jI,EAAiB,MAAE,IAClCz/G,EAAGk3M,MAAMhwN,QACT69C,EAAQ06E,EAAU1jI,GACpB,KAAK,GAWH,GATAikB,EAAGo3M,OAAS,CAAC,EACbp3M,EAAGyyM,OAAS,KACZzyM,EAAG2+D,MAAM,SAASzzE,OAAOmoN,EAAO,MAAMnoN,OAAOud,EAAO,eAChDs8B,IACF/kC,EAAGq3M,SAAW,GACdr3M,EAAG+kC,MAAMA,KAIN/kC,EAAGq3M,SAAS7+N,OAAQ,CACvBinI,EAAUvyG,KAAO,GACjB,KACF,CACA2pM,EAAK72M,EAAGq3M,SAASntN,MAAK,SAAU4L,EAAG8E,GACjC,OAAOA,EAAE08M,SAAWxhN,EAAEwhN,QACxB,IACAt3M,EAAGq3M,SAAW,GACdx+N,EAAI,EACN,KAAK,GACH,KAAMA,EAAIg+N,EAAGr+N,QAAS,CACpBinI,EAAUvyG,KAAO,GACjB,KACF,CAEA,OADAuyG,EAAUvyG,KAAO,GACV+jM,GAAcjxM,EAAI62M,EAAGh+N,GAAGb,UACjC,KAAK,KACDa,EACF4mI,EAAUvyG,KAAO,GACjB,MACF,KAAK,GACH,IAAK0pM,EAAS,CACZn3F,EAAUvyG,KAAO,GACjB,KACF,CAEA,OADAuyG,EAAUvyG,KAAO,GACV+jM,GAAcjxM,EAAI42M,GAC3B,KAAK,GAeH,OAbItoK,EAAM91D,QACR+lC,QAAQ+2B,IAAIhH,GAAOpvB,MAAK,SAAUsR,GAChC,OAAOxwB,EAAGu3M,SAAS,MAAM,WACvB/mL,EAAGzwC,SAAQ,SAAU/E,GACnB,IACEA,EAAEglB,EACJ,CAAE,MAAOmf,GACPnf,EAAG+kC,MAAM5lB,EACX,CACF,GACF,GACF,IAEKsgG,EAAU3yE,OAAO,SAAU9sC,GACpC,KAAK,GACL,IAAK,MACH,OAAOy/G,EAAU9iI,OAEvB,GAAG6iI,EAAU7nI,KAAM,CAAC,CAAC,GAAI,KAC3B,KACO++N,GAAU19N,MAAMrB,KAAMY,UAC/B,CAuBA,SAASi/N,KA6BP,OA5BAA,GAAY,GAAgC,UAAyB,SAASlJ,EAASgE,EAAQqE,EAAQC,GACrG,IACI1vN,EADAuwN,EAAS9/N,KAEb,OAAO,UAAyB,SAAmB42N,GACjD,cAAkBA,EAAUthM,KAAOshM,EAAUrhM,MAC3C,KAAK,EACH,IAAKv1B,KAAK+/N,SAAU,CAClBnJ,EAAUrhM,KAAO,EACjB,KACF,CAEA,OADAqhM,EAAUrhM,KAAO,EACVv1B,KAAK+/N,SACd,KAAK,EACHnJ,EAAUrhM,KAAO,EACjB,MACF,KAAK,EAMH,OAJAhmB,EAAQ,WACN,OAAOuwN,EAAOC,SAAW,IAC3B,GACC//N,KAAK+/N,SAAW//N,KAAKw8N,SAAS7B,EAAQqE,EAAQC,IAAU13L,KAAKh4B,EAAOA,GAC9DqnN,EAAUzhK,OAAO,SAAUn1D,KAAK+/N,UACzC,KAAK,EACL,IAAK,MACH,OAAOnJ,EAAU5xN,OAEvB,GAAG2xN,EAAU32N,KACf,KACO6/N,GAAUx+N,MAAMrB,KAAMY,UAC/B,CA6CA,SAASu+N,GAAU92M,GAEjB,OADAA,EAAG+kC,MAAM,kEACF/kC,CACT,CA/sBA41M,GAAM/9N,UAAY,CAIhBu8N,gBAAiBA,GAIjBmC,IAxEQ,EA4ERC,IA3EM,EA+ENC,IA9EM,EAkFNkB,QAjFUpB,EAqFVqB,QApFUrB,EAwFVsB,IAvFMtB,EA4FNuB,OA3FS,EAgGTC,OA/FS,GAoGTC,UAnGY,GAwGZC,UAvGY,GAmHZC,KAAM,SAAcr3L,GAClB,OAAO,IAAI+0L,GAAMj+N,KAAK09N,UAAUpzN,KAAKtK,KAAMkpC,EAC7C,EAQA3yB,MAAO,WACL,IAAI6H,EAAIpe,KAAKugO,KAlIT3B,GAuIJ,OAJAxgN,EAAE5M,IAAM4M,EAAE5M,IAAIwV,QACd5I,EAAE+7M,IAAM/7M,EAAE+7M,IAAInzM,QACd5I,EAAEg8M,IAAMh8M,EAAEg8M,IAAIpzM,QACV5I,EAAEiT,SAAQjT,EAAEiT,OAASjT,EAAEiT,OAAOrK,SAC3B5I,EAAEoiN,YAAYN,GACvB,EAWAO,OAAQ,WACN,IAAIriN,EAAIpe,KAGR,OAFaoe,EAAEiT,QAAUjT,EAAE5M,MAAQ4M,EAAE+7M,MACjC/7M,EAAE+7M,IAAIt5N,QAAUud,EAAEiT,OAAOxwB,SAAWud,EAAE5M,IAAI3Q,UAI5Cud,EAAI,IAAI6/M,GAAMj+N,KAAK09N,UAAUpzN,KAAKtK,OAChCwR,IAAM4M,EAAEiT,OACVjT,EAAE+7M,IAAM,IAJD/7M,CAOX,EAcA9T,KAAM,SAAc65B,EAAK+E,GACvB,IAAI9qB,EAAIpe,KAmCR,OAlCAoe,EAAEs9M,MAAQv3L,EAAIu3L,MACdt9M,EAAEu8M,OAASx2L,EAAIw2L,QACXx2L,EAAIy7F,QA7KE,GA6KU12F,IAClB9qB,EAAEwhH,OAASz7F,EAAIy7F,QAvLX,EAyLF12F,GACF9qB,EAAEsiN,KAAOv8L,EAAIu8L,KACbtiN,EAAE5M,IAAM2yB,EAAI3yB,MAEZ4M,EAAEsiN,KAAO,KACTtiN,EAAE5M,IAAM,IA7LN,EA+LA03B,GACF9qB,EAAEuiN,KAAOx8L,EAAIw8L,KACbviN,EAAE+7M,IAAMh2L,EAAIg2L,MAEZ/7M,EAAEuiN,KAAO,KACTviN,EAAE+7M,IAAM,IAnMN,EAqMAjxL,GACF9qB,EAAEwiN,KAAOz8L,EAAIy8L,KACbxiN,EAAEg8M,IAAMj2L,EAAIi2L,MAEZh8M,EAAEwiN,KAAO,KACTxiN,EAAEg8M,IAAM,IApMA,GAsMNlxL,GACF9qB,EAAEyiN,KAAO,KACTziN,EAAEiT,OAAS,OAEXjT,EAAEyiN,KAAO18L,EAAI08L,KACbziN,EAAEiT,OAAS8S,EAAI9S,OACX8S,EAAI28L,SAAQ1iN,EAAE0iN,OAAS38L,EAAI28L,SAE1B1iN,CACT,EAKA2iN,SAAU,SAAkBxgM,GAC1BvgC,KAAK09N,SAASqD,SAASxgM,EACzB,EAQAo+L,QAAS,SAAiBz1L,GACxB,IAAI7lC,EAAI6lC,GAlOJ01L,EAmOJ,OAxOM,EAwOCv7N,GAAWrD,KAAKwR,IAAI3Q,QAvOvB,EAuOiCwC,GAAWrD,KAAKm6N,IAAIt5N,QAtOrD,EAsO+DwC,GAAWrD,KAAKo6N,IAAIv5N,MACzF,EAQA+5N,OAAQ,SAAgB2F,GACtB,GAAIA,EAAM,OAAOvgO,KAAKugO,KA7OlB3B,GA6O4BhE,SAChC,IAAIpgM,EAAMx6B,KAAKwR,IAAI3Q,OACjBsjC,EAAMnkC,KAAKqxB,QAAUrxB,KAAKqxB,OAAOxwB,OAKnC,OAJIsjC,GAAOA,IAAQ3J,IACjBx6B,KAAKo6N,IAAMp6N,KAAKqxB,OACZmJ,GAAKx6B,KAAKuQ,OArPZ,EAqPwB,GAAOvQ,KAvP7B,KAyPCA,IACT,EAKAq7M,MAAO,SAAel5M,GACpB,OAAIvB,UAAUC,QACZb,KAAK8gO,SAAW3+N,EACTnC,MAEAA,KAAK8gO,MAEhB,EAOA9F,SAAU,SAAkBt0L,GAC1B,IAAIg4L,EAAO1+N,KAAK4/H,SAAW5/H,KAAK4/H,OAAS,CAAC,GAQ1C,OAPI,GAAQl5F,GACVA,EAAEt+B,SAAQ,SAAU/E,GAClB,OAAOq7N,EAAKr7N,IAAK,CACnB,IAEAq7N,EAAKh4L,IAAK,EAEL1mC,IACT,EAUAo7N,SAAU,SAAkB10L,EAAGs6L,GAC7B,IAAIphG,EAAS5/H,KAAK4/H,OAClB,SAAUohG,IAAShhO,KAAKo6N,IAAIv5N,SAAW++H,KAAmBh/H,UAAUC,OAAoB,GAAQ6lC,GAAKA,EAAEg0B,MAAK,SAAUr3D,GACpH,OAAOu8H,EAAOv8H,EAChB,IAAKu8H,EAAOl5F,KAFmEk5F,EAGjF,EAgBArvH,OAAQ,SAAgB24B,EAAO+3L,GAC7B,IAAI7iN,EAAIpe,KAKR,OA5TM,EAwTFkpC,IAAa9qB,EAAEsiN,KAAOtC,GAAUhgN,EAAEsiN,KAAMO,IAvTxC,EAwTA/3L,IAAa9qB,EAAEuiN,KAAOvC,GAAUhgN,EAAEuiN,KAAMM,IAvTxC,EAwTA/3L,IAAa9qB,EAAEwiN,KAAOxC,GAAUhgN,EAAEwiN,KAAMK,IAnTrC,GAoTH/3L,IAAgB9qB,EAAEyiN,KAAOzC,GAAUhgN,EAAEyiN,KAAMI,IACxC7iN,CACT,EAQAoiN,YAAa,SAAqBt3L,GAEhC,IAAI9qB,EAAIpe,KAiBR,OAxVM,GAsUNkpC,EAAQA,GAjUJ01L,IAmUexgN,EAAEsiN,OACnBtiN,EAAE5M,IAAM0sN,GAAa9/M,EAAE5M,IAAK4M,EAAEsiN,MAC9BtiN,EAAEsiN,KAAO,MAzUP,EA2UAx3L,GAAe9qB,EAAEuiN,OACnBviN,EAAE+7M,IAAM+D,GAAa9/M,EAAE+7M,IAAK/7M,EAAEuiN,MAC9BviN,EAAEuiN,KAAO,MA5UP,EA8UAz3L,GAAe9qB,EAAEwiN,OACnBxiN,EAAEg8M,IAAM8D,GAAa9/M,EAAEg8M,IAAKh8M,EAAEwiN,MAC9BxiN,EAAEwiN,KAAO,MA3UJ,GA6UH13L,GAAkB9qB,EAAEyiN,OACtBziN,EAAEiT,OAASjT,EAAEiT,OAAO9gB,OAAO6N,EAAEyiN,MAC7BziN,EAAEyiN,KAAO,MAEJziN,CACT,EASA+/M,MAAO,SAAej1L,EAAO4zK,GAC3B,IAAI1+L,EAAIpe,KACNiS,EAAI6qM,EACN,GA9VO,GA8VH5zK,EAEF,OADA2zK,GAAWz+L,EAAEiT,OAAQjT,EAAEyiN,KAAM5uN,GACtBmM,EAvWH,EAyWF8qB,GAAa2zK,GAAWz+L,EAAE5M,IAAK4M,EAAEsiN,KAAMzuN,GAxWvC,EAyWAi3B,GAAa2zK,GAAWz+L,EAAE+7M,IAAK/7M,EAAEuiN,KAAM1uN,GAxWvC,EAyWAi3B,GAAa2zK,GAAWz+L,EAAEg8M,IAAKh8M,EAAEwiN,KAAM3uN,GAC3C,IAAIkyB,EAAM/lB,EAAEiT,OACZ,GAvWO,EAuWH6X,GAAkB/E,EAAK,CACzB,IAAI/X,EAAMhO,EAAE5M,IAAI3Q,OAASud,EAAEg8M,IAAIv5N,OAC3BurB,IAAQ+X,EAAItjC,QACdg8M,GAAW14K,EADqB/X,EAChB,GAAOhO,EA5WnBwgN,GA+WYxgN,EAAEyiN,KAHkB5uN,EAKxC,CACA,OAAOmM,CACT,GA8CF,GAASigN,GAAYJ,GAAO,CAM1BsC,KAAM,SAAcr3L,GAClB,IAAI9qB,EAAI,IAAI6/M,GAAMj+N,KAAK09N,UAAUpzN,KAAKtK,KAAMkpC,EAAQlpC,KAAKsgO,WAYzD,YAXc7pM,IAAVyS,IACEA,EAAQ9qB,EAAEwgN,KAAK5+N,KAAKm+N,MAAM//M,EAAEwgN,KAAK,SAAU76N,GAC7C,OAAOqa,EAAE5M,IAAIjR,KAAKwD,EACpB,IACImlC,EAAQ9qB,EAAEygN,KAAK7+N,KAAKm+N,MAAM//M,EAAEygN,KAAK,SAAU96N,GAC7C,OAAOqa,EAAE+7M,IAAI55N,KAAKwD,EACpB,IACImlC,EAAQ9qB,EAAE0gN,KAAK9+N,KAAKm+N,MAAM//M,EAAE0gN,KAAK,SAAU/6N,GAC7C,OAAOqa,EAAEg8M,IAAI75N,KAAKwD,EACpB,KAEKqa,CACT,EACAugN,QAAS,SAAiBz1L,GACxB,OAAOlpC,KAAKsyB,QAAU4W,CACxB,EACAkyL,SAAU,SAAkB10L,GAC1B,IAAItoB,EAAIpe,KACN4/H,EAASxhH,EAAEwhH,OACb,OAASA,GAAUxhH,EAAEkU,QAAUlU,EAAE0gN,IAAW,GAAQp4L,GAAKA,EAAEg0B,MAAK,SAAUr3D,GACxE,OAAOu8H,EAAOv8H,EAChB,IAAKu8H,EAAOl5F,GAF4B,CAG1C,EACAn2B,OAAQ,WACN,GAAM,yCACR,EACAiwN,YAAa,WACX,GAAM,+CACR,EACArC,MAAO,SAAej1L,EAAO4zK,GAC3B,IAAI1+L,EAAIpe,KACNs+N,EAASlgN,EAAEkgN,OACX1vM,EAAI0vM,EAAOz9N,OACTK,EAAI,EACR,GAAIgoC,EAAQ9qB,EAAEgiN,OACZ,KAAOl/N,EAAI0tB,IAAK1tB,EACdo9N,EAAOp9N,GAAGi9N,MAAMj1L,EAAO4zK,QAGzB,KAAO57M,EAAI0tB,IAAK1tB,EACVo9N,EAAOp9N,GAAGw6N,QAAUt9M,EAAEs9M,OACxB4C,EAAOp9N,GAAGi9N,MAAMj1L,EAAO4zK,GAI7B,OAAO1+L,CACT,IAuWF,IAAI8iN,GAAS,CACX/1J,MAAM,EACNgwJ,OAAO,GAqET,SAASgG,GAAK3gL,GACZ,IAAI2nH,EAAQ,GACZ,MAAO,CACL54J,MAAO,WACL,OAAO44J,EAAQ,EACjB,EACA7jI,KAAM,WACJ,OAAO6jI,EAAMtnK,MACf,EACA43M,KAAM,WACJ,OAAOtwC,EAAM,EACf,EACA5nK,KAAM,SAAc0K,GAElB,OADAk9J,EAAM5nK,KAAK0K,GACJm2N,GAASj5D,EAAO,EAAGA,EAAMtnK,OAAS,EAAG2/C,EAC9C,EACAv5B,IAAK,WACH,IACIxP,EADA6nB,EAAO6oI,EAAMlhJ,MASjB,OAPIkhJ,EAAMtnK,QACR4W,EAAO0wJ,EAAM,GACbA,EAAM,GAAK7oI,EAwBnB,SAAgBiD,EAAO2C,EAAKsb,GAC1B,IAIE6gL,EAJE36M,EAAQwe,EACVrW,EAAM0T,EAAM1hC,OACZ4W,EAAO8qB,EAAM2C,GACXo8L,EAAoB,GAAZp8L,GAAO,GAEnB,KAAOo8L,EAAOzyM,IACZwyM,EAAOC,EAAO,GACHzyM,GAAO2xB,EAAIje,EAAM++L,GAAO/+L,EAAM8+L,KAAU,IACjDC,EAAOD,GAET9+L,EAAM2C,GAAO3C,EAAM++L,GAEnBA,EAAoB,IADpBp8L,EAAMo8L,IACS,GAEjB/+L,EAAM2C,GAAOztB,EACN2pN,GAAS7+L,EAAO7b,EAAOwe,EAAKsb,EACrC,CAxCQ+gL,CAAOp5D,EAAO,EAAG3nH,IAEjB/oC,EAAO6nB,EAEF7nB,CACT,EAEJ,CACA,SAAS2pN,GAAS7+L,EAAO7b,EAAOwe,EAAKsb,GAGnC,IAFA,IAAI5uC,EAAQ4vN,EACR/pN,EAAO8qB,EAAM2C,GACVA,EAAMxe,GAGP85B,EAAI/oC,EADR7F,EAAS2wB,EADTi/L,EAAOt8L,EAAM,GAAK,IAEM,GACtB3C,EAAM2C,GAAOtzB,EACbszB,EAAMs8L,EAKV,OAAOj/L,EAAM2C,GAAOztB,CACtB,CAwBA,SAASgqN,KACPzhO,KAAKk4M,OAAOA,MACZl4M,KAAK0hO,SAAS,IACd1hO,KAAKq/N,OAAS,EACdr/N,KAAK2hO,MAAQ,EACb3hO,KAAK4hO,QAAU,KACf,IACE5hO,KAAK6hO,QAAUvJ,IACjB,CAAE,MAAOp0N,KAET,CACAlE,KAAKo/N,SAAWjG,GAAWzlN,IAC3B1T,KAAKy/N,OAAS,CAAC,EACfz/N,KAAK86N,OAAS,KACd96N,KAAKu/N,MAAQ4B,IAAK,SAAUhjN,EAAG8E,GAC7B,OAAO9E,EAAEy9M,MAAQ34M,EAAE24M,KACrB,IACA57N,KAAK0/N,SAAW,EAClB,CACA,SAASoC,GAAUn2N,GACjB,OAAO,WACL,OAAO3L,KAAK+hO,KAAKp2N,GAAQtK,MAAMrB,KAAMY,UACvC,CACF,CAyIA,SAASohO,GAAU13N,EAAMgX,GACvBk6M,GAAS55N,KAAK5B,KAAMsK,EAAM,KAAMgX,EAClC,CA1IAmgN,GAASvhO,UAAY,CASnBw7N,MAAO,WACL,OAAO17N,KAAKq/N,MACd,EAaA/G,OAAQ,SAAgB5xL,GACtB,OAAI9lC,UAAUC,QACZb,KAAK6hO,QAAUn7L,EACR1mC,MAEAA,KAAK6hO,OAEhB,EAUAhgK,OAAQ,SAAgBn7B,GACtB,OAAI9lC,UAAUC,QACZb,KAAK4hO,QAAUl7L,EACR1mC,MAEAA,KAAK4hO,OAEhB,EASA1pB,OAAQ,SAAgB+pB,GACtB,OAAIrhO,UAAUC,QACZb,KAAK+hO,KAAOE,EACLjiO,MAEAA,KAAK+hO,IAEhB,EAMA30K,MAAO00K,GAAU,SAMjB7hF,KAAM6hF,GAAU,QAMhBzsK,KAAMysK,GAAU,QAMhB96I,MAAO86I,GAAU,SAOjBJ,SAAUI,GAAU,SAKpBI,eAAgB,IAEhB1wN,IA3/CF,SAAalH,EAAM9E,EAAQ8b,EAAQm6M,GACjC,IACExuK,EADEriC,EAAQ,EAmBZ,OAjBItgB,aAAgBkxN,GAClBvuK,EAAK3iD,EACIA,GAAQA,EAAKpK,qBAAqBs7N,GAC3CvuK,EAAK,IAAI3iD,EACAoiI,GAAWpiI,GACpB2iD,EAAK,IAAIuuK,GAAS,KAAMlxN,IAExBsgB,EAAQ,EACRqiC,EAAK,IAAIuuK,GAASlxN,EAAM9E,IAE1BxF,KAAK27N,KAAK1uK,GACNriC,IACF6wM,EAAQn6M,EACRA,EAAS9b,GAEP8b,GAAQthB,KAAKg+N,QAAQ/wK,EAAIA,EAAG9L,WAAW7/B,EAAQm6M,IACnDz7N,KAAK89N,MAAM7wK,GACJA,CACT,EAu+CE+wK,QA79CF,SAAiBt1N,EAAQy5N,GAGvB,IAFA,IAAIC,EAAa15N,EAAOizN,KACtB/sM,EAAIuzM,EAAQthO,OACLK,EAAI,EAAGA,EAAI0tB,IAAK1tB,EACvB,GAAIkhO,EAAaD,EAAQjhO,GAAGy6N,KAE1B,YADA37N,KAAKqiO,OAAO35N,EAIlB,EAq9CEizN,KA3mCF,SAAc1uK,GACZA,EAAG0uK,OAAS37N,KAAK2hO,KACnB,EA0mCEU,OAlmCF,SAAgBp1K,GAGd,IAFA,IACIk8F,EAAKznC,EAAMxgH,EADX0mF,EAAQ,CAAC36B,GAEN26B,EAAM/mF,QAEX,GADAb,KAAK27N,KAAKxyE,EAAMvhE,EAAM3gE,OAClBy6F,EAAOynC,EAAI6yE,SACb,IAAK96N,EAAIwgH,EAAK7gH,SAAUK,GAAK,GAC3B0mF,EAAMrnF,KAAK4oJ,EAAMznC,EAAKxgH,IAClBioJ,IAAQl8F,GAAI,GAAM,oCAI9B,EAwlCE4tK,MA/MF,SAAe5tK,EAAIitK,EAAW/0L,GAC5BnlC,KAAK89N,MAAM7wK,EAAI9nB,GAAW+7L,IAC1B,IAAI9iN,EAAI,IAAI6/M,GAAMj+N,KAAMA,KAAKq/N,QAAUr/N,KAAK86N,OAAS,EAAI,IACvD/2N,EAAIkpD,EAAG4tK,OAAS5tK,EAAG4tK,MAAMxpM,QAAU,GAGrC,OAFAjT,EAAE1V,OAASukD,EACXjtD,KAAKy/N,OAAOxyK,EAAGv5C,IAAMwmN,EAAUW,MAAMz8M,EAAGra,GACjC/D,IACT,EAyME89N,MA9PF,SAAe7wK,EAAI9nB,GACjB,IAAI+nH,EAAM/nH,GAAW+7L,GASrB,OARIlhO,KAAK86N,OAEP96N,KAAKs/N,SAASryK,GAGdjtD,KAAKo/N,SAAS5tN,IAAIy7C,GAEhBigG,EAAI/hF,MAAMle,EAAGke,MAAK,GACfnrE,IACT,EAoPEwF,OAvOF,SAAgBynD,EAAI9qD,EAAOgjC,GACzB,IAAI+nH,EAAM/nH,GAAW+7L,GAIrB,OAHIj0K,EAAG/qD,IAAIC,IAAU+qJ,EAAIiuE,QACvBn7N,KAAK89N,MAAM7wK,EAAIigG,GAEVltJ,IACT,EAkOEk6N,UAAWA,GAEXoI,OArzCF,SAAgB55N,EAAQgd,EAAMsuB,GAE5B,OADAtuB,EAAO1lB,KAAKymD,MAAM/gC,EAAMsuB,GACjBh0C,KAAK66N,MAAMnyN,EAAQ1I,KAAKk6N,YAAYO,OAAO/0M,GACpD,EAmzCE+gC,MAt0CF,SAAe/gC,EAAMsuB,GACnB,IAAI6tB,EAAS7hE,KAAK6hE,SAClB,OAAOm2J,GAAKtyM,EAAMsuB,EAAQ6tB,EAAO6wJ,UAAW7wJ,EAAO2wJ,SACrD,EAo0CE+P,QA1vCF,SAAiB58F,EAAKsB,EAAKC,GACzB,OAAOi2F,GAAS97N,MAAMrB,KAAMY,UAC9B,EAyvCEs+D,QAxyCF,SAAiBumE,EAAKC,GACpB,OAAOw3F,GAAS77N,MAAMrB,KAAMY,UAC9B,EAwyCEE,OAn2CF,SAAgBuwB,EAAQ1oB,EAAM4H,EAAQlP,GAoBpC,IAnBA,IAYI8gO,EAZA95M,EAAKroB,KACP8d,EAAIm/M,GAAO1sN,EAAQlP,GACnB64D,EAAO,SAAch2D,GACnBA,EAAEw5N,SAAWr1M,EACb,IACEvK,EAAEg/M,QAAQ54N,EACZ,CAAE,MAAOkpD,GACP/kC,EAAG+kC,MAAMA,EACX,CAAE,QACA/kC,EAAGq0M,KACL,CACF,EAOE9tM,GAJFuzM,EADoB,iBAAX9wM,GAA2C,oBAAb1mB,SAC7BA,SAAS6qL,iBAAiBnkK,GAE1B,GAAMA,IAEFxwB,OACPK,EAAI,EAAGA,EAAI0tB,IAAK1tB,EACvBihO,EAAQjhO,GAAGwJ,iBAAiB/B,EAAMuxD,GAEpC,OAAOp8C,CACT,EA40CE3d,GAxrCF,SAAYkxB,EAAQ3oB,EAAQlD,EAAQ8b,EAAQ6jB,GAG1C,OAFS9T,aAAkBmqM,GAAWuC,GAAaF,IAChD79N,KAAMqxB,EAAQ3oB,EAAQlD,EAAQ8b,EAAQ6jB,GAClCnlC,IACT,EAsrCEw8N,SAzmBF,SAAkBj1F,EAAKH,EAAKo7F,GAC1B,OAAOzD,GAAU19N,MAAMrB,KAAMY,UAC/B,EAwmBE87N,IA9XF,SAAa/B,EAAQqE,EAAQC,GAC3B,OAAOj/N,KAAK86N,OAASqE,GAAUn/N,OAASA,KAAKw8N,SAAS7B,EAAQqE,EAAQC,GAAUj/N,KAClF,EA6XE4/N,SApbF,SAAkB6C,EAAMC,EAAMC,GAC5B,OAAO9C,GAAUx+N,MAAMrB,KAAMY,UAC/B,EAmbEmgO,SAxWF,SAAkB1gO,EAAUuiO,EAASjD,GACnC,GAAI3/N,KAAK86N,QAAU8H,EAEjB5iO,KAAK0/N,SAASn/N,KAAK,CACjBo/N,SAAUA,GAAY,EACtBt/N,SAAUA,SAIZ,IACEA,EAASL,KACX,CAAE,MAAOwnC,GACPxnC,KAAKotD,MAAM5lB,EACb,CAEJ,EA0VE83L,SArUF,SAAiBryK,EAAIkuK,GACnB,IAAI51M,EAAI0nC,EAAGyuK,MAAQ17N,KAAKq/N,OACpB95M,IAAG0nC,EAAGyuK,MAAQ17N,KAAKq/N,SACnB95M,GAAK41M,KACPluK,EAAG2uK,MAAQ3uK,EAAG0uK,KACd37N,KAAKu/N,MAAMh/N,KAAK0sD,GAEpB,EA+TEuyK,UAjTF,SAAkBvyK,EAAI0tK,GACpB,IAAI78M,EAAImvC,EAAG57B,OACTqqM,EAAQ17N,KAAKq/N,OACf,OAAOvhN,GAAK,GAAQA,GAAK,IAAIugN,GAAWr+N,KAAM07N,EAAO59M,EAAEkT,KAAI,SAAU0V,GACnE,OAAOA,EAAEm0L,KACX,IAAIF,GAAU36N,KAAKy/N,OAAOxyK,EAAGv5C,KAE/B,SAAqB0K,EAAGN,GACtB,GAAIA,GAAKA,EAAE49M,QAAUt9M,EAAEs9M,MACrB,OAAO59M,EAETM,EAAIA,EAAEmiN,OACFziN,GAAKA,IAAM2+M,KACbr+M,EAAEiT,OAASvT,EAAEuT,QAEf,OAAOjT,CACT,CAXsCykN,CAAY7iO,KAAK86N,OAAQh9M,GAAKA,EAAE+8M,MACtE,GAyTA,GAASmH,GAAWxG,GAAU,CAS5BkB,IAAK,SAAa7B,GAChB,IAEI8B,EAFA79J,EAAS9+D,KACb,OAAI66N,EAAMa,MAAQ17N,KAAK07N,MAAcb,EAAM4B,iBAEvCz8N,KAAKmrE,OACPnrE,KAAKmrE,MAAK,GAEVwxJ,EAAK38N,KAAKw8N,SAAS3B,IAErB8B,EAAKA,GAAM9B,GACJtzL,KACLo1L,EAAKA,EAAGp1L,MAAK,SAAUb,GACrB,OAAOo4B,EAAO+7J,MAAQn0L,CACxB,IACSi2L,IAAO9B,EAAM4B,kBACtBz8N,KAAK66N,MAAQ8B,GAERA,EACT,EAQAH,SAAU,SAAkB3B,GAC1B,IAAIv5M,EAASthB,KAAKs8N,SAASzB,EAAMa,OAC/Bx4M,EAAMljB,KAAK8T,UAAUwN,EAAQu5M,GAE/B,OADAv5M,EAAO/R,QACA2T,CACT,EASApP,UAAW,WAAsB,IAEnC,IAAIgvN,GAAa,CAAC,EAClB,SAAS/sL,GAAWptC,GAClB,IAAI5E,EAAI,GAAU4E,GAClB,OAAO5E,GAAKA,EAAEg/N,YAAc,IAC9B,CACA,SAAS,GAAUp6N,GAEjB,OADAA,EAAOA,GAAQA,EAAKiW,cACb,GAAekkN,GAAYn6N,GAAQm6N,GAAWn6N,GAAQ,IAC/D,mBCnuEA,SAAS,GAA2Byc,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,GAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,GAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,GAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CACnK,SAAS/+M,GAAIqmB,EAAQwiM,GAClC,IAAI7oN,EACJ,QAAgBsc,IAAZusM,EAAuB,CACzB,IACEzE,EADEC,EAAY,GAA2Bh+L,GAE3C,IACE,IAAKg+L,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIn2C,EAAQo8N,EAAMp8N,MACL,MAATA,IAAkBgY,EAAMhY,QAAiBs0B,IAARtc,GAAqBhY,GAASA,KACjEgY,EAAMhY,EAEV,CACF,CAAE,MAAOqlC,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACF,KAAO,CACL,IAEE4/N,EAFEj7N,GAAS,EACTk7N,EAAa,GAA2B1iM,GAE5C,IACE,IAAK0iM,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,CACrD,IAAI6qL,EAASF,EAAO9gO,MAC+B,OAA9CghO,EAASH,EAAQG,IAAUn7N,EAAOw4B,MAAqBrmB,EAAMgpN,QAAkB1sM,IAARtc,GAAqBgpN,GAAUA,KACzGhpN,EAAMgpN,EAEV,CACF,CAAE,MAAO37L,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACF,CACA,OAAO8W,CACT,CCtCA,SAAS,GAA2BiL,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,GAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,GAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,GAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CACnK,SAASh/M,GAAIsmB,EAAQwiM,GAClC,IAAI9oN,EACJ,QAAgBuc,IAAZusM,EAAuB,CACzB,IACEzE,EADEC,EAAY,GAA2Bh+L,GAE3C,IACE,IAAKg+L,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIn2C,EAAQo8N,EAAMp8N,MACL,MAATA,IAAkB+X,EAAM/X,QAAiBs0B,IAARvc,GAAqB/X,GAASA,KACjE+X,EAAM/X,EAEV,CACF,CAAE,MAAOqlC,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACF,KAAO,CACL,IAEE4/N,EAFEj7N,GAAS,EACTk7N,EAAa,GAA2B1iM,GAE5C,IACE,IAAK0iM,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,CACrD,IAAI6qL,EAASF,EAAO9gO,MAC+B,OAA9CghO,EAASH,EAAQG,IAAUn7N,EAAOw4B,MAAqBtmB,EAAMipN,QAAkB1sM,IAARvc,GAAqBipN,GAAUA,KACzGjpN,EAAMipN,EAEV,CACF,CAAE,MAAO37L,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACF,CACA,OAAO6W,CACT,CCUO,SAASkpN,KACd,IAAI5wN,EAAU5R,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,GAClF,GAAI4R,IAAY,GAAW,OAAO,GAClC,GAAuB,mBAAZA,EAAwB,MAAM,IAAIzN,UAAU,6BACvD,OAAO,SAAUoZ,EAAG8E,GAClB,IAAIhY,EAAIuH,EAAQ2L,EAAG8E,GACnB,OAAIhY,GAAW,IAANA,EAAgBA,GACC,IAAlBuH,EAAQyQ,EAAGA,KAA+B,IAAlBzQ,EAAQ2L,EAAGA,GAC7C,CACF,CACO,SAAS,GAAiBA,EAAG8E,GAClC,OAAa,MAAL9E,KAAeA,GAAKA,KAAY,MAAL8E,KAAeA,GAAKA,MAAQ9E,EAAI8E,GAAK,EAAI9E,EAAI8E,EAAI,EAAI,EAC1F,CCxDe,SAAS,GAAYsf,EAAO77B,GACzC,IAAIsI,EAAOpO,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,EAC3E+R,EAAQ/R,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK2D,IAC5EiO,EAAU5R,UAAUC,OAAS,EAAID,UAAU,QAAK61B,EAIpD,GAHA/vB,EAAIuT,KAAKwX,MAAM/qB,GACfsI,EAAOiL,KAAKwX,MAAMxX,KAAKE,IAAI,EAAGnL,IAC9B2D,EAAQsH,KAAKwX,MAAMxX,KAAKC,IAAIqoB,EAAM1hC,OAAS,EAAG8R,MACxC3D,GAAQtI,GAAKA,GAAKiM,GAAQ,OAAO4vB,EAEvC,IADA/vB,OAAsBikB,IAAZjkB,EAAwB,GAAmB4wN,GAAe5wN,GAC7DG,EAAQ3D,GAAM,CACnB,GAAI2D,EAAQ3D,EAAO,IAAK,CACtB,IAAI4f,EAAIjc,EAAQ3D,EAAO,EACnB+G,EAAIrP,EAAIsI,EAAO,EACfyW,EAAIxL,KAAKy/B,IAAI9qB,GACb9Q,EAAI,GAAM7D,KAAK6gC,IAAI,EAAIr1B,EAAI,GAC3B49M,EAAK,GAAMppN,KAAK2C,KAAK6I,EAAI3H,GAAK8Q,EAAI9Q,GAAK8Q,IAAM7Y,EAAI6Y,EAAI,EAAI,GAAK,EAAI,GAGtE,GAAY2T,EAAO77B,EAFLuT,KAAKE,IAAInL,EAAMiL,KAAKwX,MAAM/qB,EAAIqP,EAAI+H,EAAI8Q,EAAIy0M,IACzCppN,KAAKC,IAAIvH,EAAOsH,KAAKwX,MAAM/qB,GAAKkoB,EAAI7Y,GAAK+H,EAAI8Q,EAAIy0M,IACvB7wN,EAC3C,CACA,IAAIzO,EAAIw+B,EAAM77B,GACVxF,EAAI8N,EACJ9H,EAAIyL,EAGR,IAFA2wN,GAAK/gM,EAAOvzB,EAAMtI,GACd8L,EAAQ+vB,EAAM5vB,GAAQ5O,GAAK,GAAGu/N,GAAK/gM,EAAOvzB,EAAM2D,GAC7CzR,EAAIgG,GAAG,CAEZ,IADAo8N,GAAK/gM,EAAOrhC,EAAGgG,KAAMhG,IAAKgG,EACnBsL,EAAQ+vB,EAAMrhC,GAAI6C,GAAK,KAAK7C,EACnC,KAAOsR,EAAQ+vB,EAAMr7B,GAAInD,GAAK,KAAKmD,CACrC,CACgC,IAA5BsL,EAAQ+vB,EAAMvzB,GAAOjL,GAAUu/N,GAAK/gM,EAAOvzB,EAAM9H,GAAao8N,GAAK/gM,IAARr7B,EAAkByL,GAC7EzL,GAAKR,IAAGsI,EAAO9H,EAAI,GACnBR,GAAKQ,IAAGyL,EAAQzL,EAAI,EAC1B,CACA,OAAOq7B,CACT,CACA,SAAS+gM,GAAK/gM,EAAOrhC,EAAGgG,GACtB,IAAInD,EAAIw+B,EAAMrhC,GACdqhC,EAAMrhC,GAAKqhC,EAAMr7B,GACjBq7B,EAAMr7B,GAAKnD,CACb,CC3CA,IAAIw/N,GAAuB,SAAyBC,IACpD,SAAS,GAA2Bp+M,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,GAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,GAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,GAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CACnK,SAAS,GAAOjuN,GAC7B,OAAa,OAANA,EAAaspC,KAAOtpC,CAC7B,CACO,SAASu4N,GAAQhjM,EAAQwiM,GAC9B,IAAIxE,EAAWD,EAAOp8N,EAAO6F,EAAOk7N,EAAYD,EAAQE,EACxD,OAAO,UAAyB,SAAkB3kK,GAChD,cAAkBA,EAASlpC,KAAOkpC,EAASjpC,MACzC,KAAK,EACH,QAAkBkB,IAAZusM,EAAwB,CAC5BxkK,EAASjpC,KAAO,GAChB,KACF,CACAipM,EAAY,GAA2Bh+L,GACvCg+B,EAASlpC,KAAO,EAChBkpM,EAAU1gN,IACZ,KAAK,EACH,IAAKygN,EAAQC,EAAU5vM,KAAK0pB,KAAM,CAChCkmB,EAASjpC,KAAO,GAChB,KACF,CAEA,KAAe,OADfpzB,EAAQo8N,EAAMp8N,SACUA,GAASA,IAAUA,GAAQ,CACjDq8D,EAASjpC,KAAO,EAChB,KACF,CAEA,OADAipC,EAASjpC,KAAO,EACTpzB,EACT,KAAK,EACHq8D,EAASjpC,KAAO,EAChB,MACF,KAAK,GACHipC,EAASjpC,KAAO,GAChB,MACF,KAAK,GACHipC,EAASlpC,KAAO,GAChBkpC,EAASp6D,GAAKo6D,EAAgB,MAAE,GAChCggK,EAAUt6N,EAAEs6D,EAASp6D,IACvB,KAAK,GAGH,OAFAo6D,EAASlpC,KAAO,GAChBkpM,EAAUn7N,IACHm7D,EAASjH,OAAO,IACzB,KAAK,GACHiH,EAASjpC,KAAO,GAChB,MACF,KAAK,GACHvtB,GAAS,EACTk7N,EAAa,GAA2B1iM,GACxCg+B,EAASlpC,KAAO,GAChB4tM,EAAWplN,IACb,KAAK,GACH,IAAKmlN,EAASC,EAAWt0M,KAAK0pB,KAAM,CAClCkmB,EAASjpC,KAAO,GAChB,KACF,CAEA,GADA4tM,EAASF,EAAO9gO,QACqC,OAA9CghO,EAASH,EAAQG,IAAUn7N,EAAOw4B,MAAqB2iM,GAAUA,IAAWA,GAAS,CAC1F3kK,EAASjpC,KAAO,GAChB,KACF,CAEA,OADAipC,EAASjpC,KAAO,GACT4tM,EACT,KAAK,GACH3kK,EAASjpC,KAAO,GAChB,MACF,KAAK,GACHipC,EAASjpC,KAAO,GAChB,MACF,KAAK,GACHipC,EAASlpC,KAAO,GAChBkpC,EAASl6D,GAAKk6D,EAAgB,MAAE,IAChC0kK,EAAWh/N,EAAEs6D,EAASl6D,IACxB,KAAK,GAGH,OAFAk6D,EAASlpC,KAAO,GAChB4tM,EAAW7/N,IACJm7D,EAASjH,OAAO,IACzB,KAAK,GACL,IAAK,MACH,OAAOiH,EAASx5D,OAEtB,GAAGu+N,GAAS,KAAM,CAAC,CAAC,EAAG,GAAI,GAAI,IAAK,CAAC,GAAI,GAAI,GAAI,KACnD,CC7Ee,SAASE,GAASjjM,EAAQpiB,EAAG4kN,GAE1C,IAAMp0M,GADN4R,EAASiY,aAAanf,KAAKkqM,GAAQhjM,EAAQwiM,KAC1BniO,UAAWqhB,MAAM9D,GAAKA,GAAvC,CACA,GAAIA,GAAK,GAAKwQ,EAAI,EAAG,OAAO1U,GAAIsmB,GAChC,GAAIpiB,GAAK,EAAG,OAAOjE,GAAIqmB,GACvB,IAAI5R,EACF1tB,GAAK0tB,EAAI,GAAKxQ,EACdy9B,EAAK5hC,KAAKwX,MAAMvwB,GAChBwiO,EAASvpN,GAAI,GAAYqmB,EAAQqb,GAAI8nL,SAAS,EAAG9nL,EAAK,IAExD,OAAO6nL,GADIxpN,GAAIsmB,EAAOmjM,SAAS9nL,EAAK,IACV6nL,IAAWxiO,EAAI26C,EARQ,CASnD,CACO,SAAS+nL,GAAepjM,EAAQpiB,GACrC,IAAI4kN,EAAUpiO,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,GAClF,IAAMguB,EAAI4R,EAAO3/B,UAAWqhB,MAAM9D,GAAKA,GAAvC,CACA,GAAIA,GAAK,GAAKwQ,EAAI,EAAG,OAAQo0M,EAAQxiM,EAAO,GAAI,EAAGA,GACnD,GAAIpiB,GAAK,EAAG,OAAQ4kN,EAAQxiM,EAAO5R,EAAI,GAAIA,EAAI,EAAG4R,GAClD,IAAI5R,EACF1tB,GAAK0tB,EAAI,GAAKxQ,EACdy9B,EAAK5hC,KAAKwX,MAAMvwB,GAChBwiO,GAAUV,EAAQxiM,EAAOqb,GAAKA,EAAIrb,GAEpC,OAAOkjM,IADKV,EAAQxiM,EAAOqb,EAAK,GAAIA,EAAK,EAAGrb,GAClBkjM,IAAWxiO,EAAI26C,EARQ,CASnD,CC/BA,SAAS,GAA2Bz2B,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,GAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,GAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,GAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CCDnK,SAAS2K,GAAUrjM,EAAQwiM,GACxC,IAAI/wN,EDCS,SAAkBuuB,EAAQwiM,GACvC,IACI3oL,EADAvpB,EAAQ,EAERgzM,EAAO,EACP13M,EAAM,EACV,QAAgBqK,IAAZusM,EAAuB,CACzB,IACEzE,EADEC,EAAY,GAA2Bh+L,GAE3C,IACE,IAAKg+L,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIn2C,EAAQo8N,EAAMp8N,MACL,MAATA,IAAkBA,GAASA,IAAUA,IAGvCiqB,IAFAiuB,EAAQl4C,EAAQ2hO,IAEA3hO,GADhB2hO,GAAQzpL,IAAUvpB,IAGtB,CACF,CAAE,MAAO0W,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACF,KAAO,CACL,IAEE4/N,EAFEj7N,GAAS,EACTk7N,EAAa,GAA2B1iM,GAE5C,IACE,IAAK0iM,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,CACrD,IAAI6qL,EAASF,EAAO9gO,MAC+B,OAA9CghO,EAASH,EAAQG,IAAUn7N,EAAOw4B,MAAqB2iM,GAAUA,IAAWA,IAG/E/2M,IAFAiuB,EAAQ8oL,EAASW,IAEDX,GADhBW,GAAQzpL,IAAUvpB,IAGtB,CACF,CAAE,MAAO0W,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACF,CACA,GAAIytB,EAAQ,EAAG,OAAO1E,GAAO0E,EAAQ,EACvC,CC3CUizM,CAASvjM,EAAQwiM,GACzB,OAAO/wN,EAAIgI,KAAK2C,KAAK3K,GAAKA,CAC5B,CCHe,SAASipC,GAAO1a,EAAQwiM,GACrC,OAAOS,GAASjjM,EAAQ,GAAKwiM,EAC/B,CCDA,IAAI,GAAuB,SAAyB,IACpD,SAAS,GAA2B59M,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,GAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,GAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,GAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAElL,SAAS,GAAQ14L,EAAQwiM,GACvB,IAAIxE,EAAWD,EAAOp8N,EAAO6F,EAAOk7N,EAAYD,EAAQE,EACxD,OAAO,UAAyB,SAAkB3kK,GAChD,cAAkBA,EAASlpC,KAAOkpC,EAASjpC,MACzC,KAAK,EACH,GAAiB,MAAXytM,EAAkB,CACtBxkK,EAASjpC,KAAO,GAChB,KACF,CACAipM,EAAY,GAA2Bh+L,GACvCg+B,EAASlpC,KAAO,EAChBkpM,EAAU1gN,IACZ,KAAK,EACH,IAAKygN,EAAQC,EAAU5vM,KAAK0pB,KAAM,CAChCkmB,EAASjpC,KAAO,GAChB,KACF,CAEA,KAAe,OADfpzB,EAAQo8N,EAAMp8N,QACmB,KAAVA,IAAiBA,GAASA,IAAUA,GAAQ,CACjEq8D,EAASjpC,KAAO,EAChB,KACF,CAEA,OADAipC,EAASjpC,KAAO,EACTpzB,EACT,KAAK,EACHq8D,EAASjpC,KAAO,EAChB,MACF,KAAK,GACHipC,EAASjpC,KAAO,GAChB,MACF,KAAK,GACHipC,EAASlpC,KAAO,GAChBkpC,EAASp6D,GAAKo6D,EAAgB,MAAE,GAChCggK,EAAUt6N,EAAEs6D,EAASp6D,IACvB,KAAK,GAGH,OAFAo6D,EAASlpC,KAAO,GAChBkpM,EAAUn7N,IACHm7D,EAASjH,OAAO,IACzB,KAAK,GACHiH,EAASjpC,KAAO,GAChB,MACF,KAAK,GACHvtB,GAAS,EACTk7N,EAAa,GAA2B1iM,GACxCg+B,EAASlpC,KAAO,GAChB4tM,EAAWplN,IACb,KAAK,GACH,IAAKmlN,EAASC,EAAWt0M,KAAK0pB,KAAM,CAClCkmB,EAASjpC,KAAO,GAChB,KACF,CAGA,GAFA4tM,EAASF,EAAO9gO,QAEA,OADhBghO,EAASH,EAAQG,IAAUn7N,EAAOw4B,KACC,KAAX2iM,IAAkBA,GAAUA,IAAWA,GAAS,CACtE3kK,EAASjpC,KAAO,GAChB,KACF,CAEA,OADAipC,EAASjpC,KAAO,GACT4tM,EACT,KAAK,GACH3kK,EAASjpC,KAAO,GAChB,MACF,KAAK,GACHipC,EAASjpC,KAAO,GAChB,MACF,KAAK,GACHipC,EAASlpC,KAAO,GAChBkpC,EAASl6D,GAAKk6D,EAAgB,MAAE,IAChC0kK,EAAWh/N,EAAEs6D,EAASl6D,IACxB,KAAK,GAGH,OAFAk6D,EAASlpC,KAAO,GAChB4tM,EAAW7/N,IACJm7D,EAASjH,OAAO,IACzB,KAAK,GACL,IAAK,MACH,OAAOiH,EAASx5D,OAEtB,GAAG,GAAS,KAAM,CAAC,CAAC,EAAG,GAAI,GAAI,IAAK,CAAC,GAAI,GAAI,GAAI,KACnD,CACA,SAASg/N,GAAUzhM,EAAOnkB,EAAG/a,GAC3B,IAAIm9B,EAASiY,aAAanf,KAAK,GAAQiJ,EAAOl/B,IAK9C,OADAm9B,EAAOjuB,KAAK,IACL6L,EAAE4S,KAAI,SAAU0V,GACrB,OAAOk9L,GAAepjM,EAAQkG,EAChC,GACF,CACA,SAASu9L,GAAU1hM,EAAOl/B,GACxB,OAAO2gO,GAAUzhM,EAAO,CAAC,IAAM,GAAM,KAAOl/B,EAC9C,CAIA,SAAS6gO,GAAkB3hM,EAAOl/B,GAChC,IAAIurB,EAAI2T,EAAM1hC,OACZklB,EAAI89M,GAAUthM,EAAOl/B,GACrBkiB,EAAI0+M,GAAU1hM,EAAOl/B,GACrBgiB,GAAKE,EAAE,GAAKA,EAAE,IAAM,KAEtB,OAAO,MADDtL,KAAKC,IAAI6L,EAAGV,IAAMU,GAAK9L,KAAKoG,IAAIkF,EAAE,KAAO,GAC7BtL,KAAK0B,IAAIiT,GAAI,GACjC,CACA,SAAS,GAAI8X,GAEX,IAME+gB,EACArjB,EACA+/L,EACAlyN,EACA/Q,EACA0tB,EAXEw1M,EAAO19L,EAAE4lL,SAAW,GACtB9pL,EAAOkE,EAAElE,MAAQ,GACjB6hM,EAAOpqN,KAAKy/B,IAAIlX,GAChB+tB,EAAM7pB,EAAE9P,QAAU,CAAC,EAAG,GACpB1c,EAAMwsB,EAAE2lL,OAAO,GACjBlyM,EAAMusB,EAAE2lL,OAAO,GAObn8F,EAAOxpF,EAAEwpF,MAAQ/1G,EAAMD,GAAOD,KAAKoG,IAAInG,IAAQ,EACnD,GAAIwsB,EAAE+gB,KAEJA,EAAO/gB,EAAE+gB,UACJ,GAAI/gB,EAAEs9C,MAAO,CAGlB,IADA/xE,EAAIi+G,EAAOk0G,EACNljO,EAAI,EAAG0tB,EAAI8X,EAAEs9C,MAAMnjF,OAAQK,EAAI0tB,GAAK8X,EAAEs9C,MAAM9iF,GAAK+Q,IAAK/Q,GAC3DumD,EAAO/gB,EAAEs9C,MAAM/pE,KAAKE,IAAI,EAAGjZ,EAAI,GACjC,KAAO,CAOL,IALAkjC,EAAQnqB,KAAKisJ,KAAKjsJ,KAAKy/B,IAAI0qL,GAAQC,GACnCF,EAAUz9L,EAAEy9L,SAAW,EACvB18K,EAAOxtC,KAAKE,IAAIgqN,EAASlqN,KAAK0B,IAAI6mB,EAAMvoB,KAAKwoB,MAAMxoB,KAAKy/B,IAAIw2E,GAAQm0G,GAAQjgM,IAGrEnqB,KAAKisJ,KAAKh2C,EAAOzoE,GAAQ28K,GAC9B38K,GAAQjlB,EAIV,IAAKthC,EAAI,EAAG0tB,EAAI2hC,EAAI1vD,OAAQK,EAAI0tB,IAAK1tB,GACnC+Q,EAAIw1C,EAAO8I,EAAIrvD,KACNijO,GAAWj0G,EAAOj+G,GAAKmyN,IAAM38K,EAAOx1C,EAEjD,CAIA,IAAI2wB,GADJ3wB,EAAIgI,KAAKy/B,IAAI+N,KACQ,EAAI,EAAoB,MAAZx1C,EAAIoyN,GACnCC,EAAMrqN,KAAK0B,IAAI6mB,GAAOI,EAAY,GAMpC,OALI8D,EAAE69L,WAAmB9tM,IAAXiQ,EAAE69L,QAEdrqN,EAAMA,GADNjI,EAAIgI,KAAKwX,MAAMvX,EAAMutC,EAAO68K,GAAO78K,GACnBx1C,EAAIw1C,EAAOx1C,EAC3BkI,EAAMF,KAAKisJ,KAAK/rJ,EAAMstC,GAAQA,GAEzB,CACL/gC,MAAOxM,EACPlV,KAAMmV,IAAQD,EAAMA,EAAMutC,EAAOttC,EACjCstC,KAAMA,EAEV,CACA,IAAI,GAASxtC,KAAK+qC,OAClB,SAASw/K,GAAUtlN,GACjB,GAASA,CACX,CACA,SAASulN,GAAYliM,EAAOq+G,EAAS9xH,EAAOzrB,GAC1C,IAAKk/B,EAAM1hC,OAAQ,MAAO,MAAC41B,OAAWA,GACtC,IAGItY,EAAGjd,EAAGgG,EAAGw9N,EAHTlkM,EAASiY,aAAanf,KAAK,GAAQiJ,EAAOl/B,IAC5CurB,EAAI4R,EAAO3/B,OACXkV,EAAI6qI,EAEN,IAAK15I,EAAI,EAAGw9N,EAAKjkM,MAAM1qB,GAAI7O,EAAI6O,IAAK7O,EAAG,CACrC,IAAKiX,EAAI,EAAGjd,EAAI,EAAGA,EAAI0tB,IAAK1tB,EAC1Bid,GAAKqiB,KAAU,KAAW5R,IAE5B81M,EAAGx9N,GAAKiX,EAAIyQ,CACd,CAEA,OADA81M,EAAGnyN,KAAK,IACD,CAACkxN,GAASiB,EAAI51M,EAAQ,GAAI20M,GAASiB,EAAI,EAAI51M,EAAQ,GAC5D,CAKA,SAAS61M,GAAOpiM,EAAOklB,EAAM7rB,EAAQv4B,GACnCA,EAAIA,GAAK,SAAUqjC,GACjB,OAAOA,CACT,EASA,IARA,IAOEz7B,EAPE2jB,EAAI2T,EAAM1hC,OACZoR,EAAI,IAAIwmC,aAAa7pB,GACnB1tB,EAAI,EACNgG,EAAI,EACJiX,EAAI9a,EAAEk/B,EAAM,IACZtf,EAAI9E,EACJuP,EAAIvP,EAAIspC,EAEHvgD,EAAI0nB,IAAK1nB,EAAG,CAEjB,IADA+D,EAAI5H,EAAEk/B,EAAMr7B,MACHwmB,EAAG,CAEV,IADAzK,GAAK9E,EAAI8E,GAAK,EACP/hB,EAAIgG,IAAKhG,EAAG+Q,EAAE/Q,GAAK+hB,EAC1ByK,EAAIziB,EAAIw8C,EACRtpC,EAAIlT,CACN,CACAgY,EAAIhY,CACN,CAEA,IADAgY,GAAK9E,EAAI8E,GAAK,EACP/hB,EAAIgG,IAAKhG,EAAG+Q,EAAE/Q,GAAK+hB,EAC1B,OAAO2Y,EAMT,SAAmB3pB,EAAG2yN,GACpB,IAGEz/M,EACAY,EAJE6I,EAAI3c,EAAEpR,OACNsd,EAAI,EACN8E,EAAI,EAKN,KAAOhR,EAAEkM,KAAOlM,EAAEgR,MAAMA,EACxB,KAAOA,EAAI2L,GAAG,CAGZ,IADAzJ,EAAIlC,EAAI,EACDhR,EAAEgR,KAAOhR,EAAEkT,MAAMA,EAIxB,GAAIlT,EAAEgR,GAAKhR,EAAEgR,EAAI,GAAK2hN,EAAQ,CAE5B,IADA7+M,EAAI9C,GAAK9E,EAAIgH,EAAIlC,EAAIA,GAAK,GACnB8C,EAAI9C,GAAGhR,EAAE8T,KAAO9T,EAAEgR,GACzB,KAAO8C,EAAI9C,GAAGhR,EAAE8T,KAAO9T,EAAEkM,EAC3B,CAGAA,EAAI8E,EACJA,EAAIkC,CACN,CACA,OAAOlT,CACT,CAjCkB4yN,CAAU5yN,EAAGw1C,EAAOA,EAAO,GAAKx1C,CAClD,CAiCA,SAAS,GAAI6yN,GAGX,OAAO,WAEL,OADAA,GAAQ,WAAaA,EAAO,OAAS,YACvB,UAChB,CACF,CACA,SAAS,GAAQ5qN,EAAKC,GAKpB,IAAIgE,EAAG8E,EAAG8C,EAJC,MAAP5L,IACFA,EAAMD,EACNA,EAAM,GAGR,IAAIkY,EAAO,CACTlY,IAAK,SAAawsB,GAChB,OAAI9lC,UAAUC,QAEZklB,EAAI9C,GADJ9E,EAAIuoB,GAAK,GAEFtU,GAEAjU,CAEX,EACAhE,IAAK,SAAausB,GAChB,OAAI9lC,UAAUC,QAEZklB,GADA9C,EAAIyjB,GAAK,GACDvoB,EACDiU,GAEAnP,CAEX,EACA8hN,OAAQ,WACN,OAAO5mN,EAAIlE,KAAKwX,MAAM1L,EAAI,KAC5B,EACA+iC,IAAK,SAAa79C,GAChB,OAAOA,IAAMgP,KAAKwX,MAAMxmB,IAAMA,GAAKkT,GAAKlT,EAAIgY,EAAI,EAAI8C,EAAI,CAC1D,EACAi/M,IAAK,SAAa/5N,GAChB,IAAIgH,EAAIgI,KAAKwX,MAAMxmB,GACnB,OAAOgH,EAAIkM,EAAI,EAAIlM,GAAKgR,EAAI,GAAKhR,EAAIkM,EAAI,GAAK4H,CAChD,EACAk/M,KAAM,SAAc7mN,GAClB,OAAOA,GAAK,GAAKA,GAAK,EAAID,EAAI,EAAIlE,KAAKwX,MAAMrT,EAAI2H,GAAKwuB,GACxD,GAEF,OAAOniB,EAAKlY,IAAIA,GAAKC,IAAIA,EAC3B,CACA,IAAI+qN,GAAUjrN,KAAK2C,KAAK,EAAI3C,KAAK+B,IAC7BmpN,GAAQlrN,KAAKkrN,MACbC,GAAa7wL,IACjB,SAAS8wL,GAAavB,EAAMwB,GAC1BxB,EAAOA,GAAQ,EACfwB,EAAiB,MAATA,EAAgB,EAAIA,EAC5B,IAEEC,EACApgN,EAHEla,EAAI,EACNC,EAAI,EAGN,GAAIk6N,IAAeA,GACjBn6N,EAAIm6N,GACJA,GAAa7wL,QACR,CACL,GAGEgxL,GAFAt6N,EAAe,EAAX,KAAe,GAETA,GADVC,EAAe,EAAX,KAAe,GACDA,QACH,IAARq6N,GAAaA,EAAM,GAE5Bt6N,GADAka,EAAIlL,KAAK2C,MAAM,EAAI3C,KAAKy/B,IAAI6rL,GAAOA,GAEnCH,GAAal6N,EAAIia,CACnB,CACA,OAAO2+M,EAAO74N,EAAIq6N,CACpB,CACA,SAASE,GAAcrjO,EAAO2hO,EAAMwB,GAElC,IAAI7/M,GAAKtjB,GAAS2hO,GAAQ,KAD1BwB,EAAiB,MAATA,EAAgB,EAAIA,GAE5B,OAAOrrN,KAAK6gC,KAAK,GAAMr1B,EAAIA,IAAM6/M,EAAQJ,GAC3C,CAIA,SAASO,GAAiBtjO,EAAO2hO,EAAMwB,GAGrC,IAEII,EAFAjgN,GAAKtjB,GAFT2hO,EAAOA,GAAQ,KACfwB,EAAiB,MAATA,EAAgB,EAAIA,GAE1BlT,EAAIn4M,KAAKoG,IAAIoF,GAEf,GAAI2sM,EAAI,GACNsT,EAAK,MACA,CACL,IAAIC,EAAO1rN,KAAK6gC,KAAKs3K,EAAIA,EAAI,GAEzBA,EAAI,kBAONsT,EAAKC,QANC,kBAAuBvT,EAAI,kBACrBA,EAAI,kBACJA,EAAI,iBACJA,EAAI,kBACJA,EAAI,kBACJA,EAAI,kBAShBsT,SAPM,kBAAuBtT,EAAI,kBACrBA,EAAI,iBACJA,EAAI,kBACJA,EAAI,kBACJA,EAAI,kBACJA,EAAI,kBACJA,EAAI,kBAQhBsT,EAAKC,GADCvT,EAAI,GADJA,EAAI,GADJA,EAAI,GADJA,EAAI,GADJA,EAAI,SAKQ,cAEtB,CACA,OAAO3sM,EAAI,EAAI,EAAIigN,EAAKA,CAC1B,CAGA,SAASE,GAAexnN,EAAG0lN,EAAMwB,GAC/B,OAAIlnN,EAAI,GAAKA,EAAI,EAAUm2B,KACnBuvL,GAAQ,IAAe,MAATwB,EAAgB,EAAIA,GAASH,GAMrD,SAAgBl6N,GAKd,IACEmT,EADEsP,GAAKzT,KAAKy/B,KAAK,EAAIzuC,IAAM,EAAIA,IA0B/BmT,EAxBEsP,EAAI,KAwBF,oBADJtP,EAAI,oBADJA,GADAA,GADAA,EAAI,uBADJA,GADAA,GADAA,EAAI,uBADJA,GADAA,GADAA,EAAI,uBADJA,GADAA,GADAA,EAAI,uBADJA,GADAA,GADAA,EAAI,sBADJA,EAAI,uBADJA,GADAA,EAAI,uBADJA,EAAI,qBADJA,GADAA,GAAK,sBADLsP,GAAK,OAEA,uBAC+BA,GACDA,GACCA,EAA/B,sBAC+BA,GACAA,GACCA,EAAhC,sBACgCA,EAAhC,sBAC+BA,GACCA,EAAhC,uBACgCA,EAAhC,sBAC8BA,GACEA,EAAhC,sBACgCA,EAAhC,uBAC+BA,GACCA,EAAhC,uBACgCA,EAAhC,uBAC8BA,GACEA,EAAhC,qBAC+BA,EAA/B,qBAC4BA,GACDA,EACvBA,EAAI,GAoBT,oBADJtP,EAAI,oBADJA,EAAI,qBADJA,GADAA,EAAI,qBADJA,GADAA,EAAI,sBADJA,GADAA,EAAI,uBADJA,EAAI,sBADJA,GADAA,EAAI,uBADJA,EAAI,uBADJA,GADAA,EAAI,uBADJA,EAAI,uBADJA,GADAA,EAAI,sBADJA,EAAI,wBADJsP,EAAIzT,KAAK2C,KAAK8Q,GAAK,OAGkBA,EAAhC,uBAC+BA,GACAA,GACAA,EAA/B,sBAC+BA,GACAA,GACCA,EAAhC,uBAC+BA,GACAA,GACAA,EAA/B,sBAC+BA,GACAA,EAA/B,sBAC8BA,GACCA,EAA/B,qBAC6BA,GACFA,GACAA,EACvBzL,OAAOqe,SAAS5S,GAkBrB,mBADJtP,EAAI,oBADJA,GADAA,GADAA,EAAI,sBADJA,GADAA,EAAI,sBADJA,GADAA,EAAI,uBADJA,GADAA,EAAI,sBADJA,GADAA,EAAI,qBADJA,GADAA,EAAI,uBADJA,GADAA,GAAK,wBADLsP,EAAIzT,KAAK2C,KAAK8Q,GAAK,GAEd,uBAC+BA,GACCA,EAAhC,sBAC+BA,GACCA,EAAhC,sBAC+BA,GACCA,EAAhC,sBAC+BA,GACCA,EAAhC,oBAC+BA,GACCA,EAAhC,sBAC+BA,GACCA,EAAhC,uBACgCA,EAAhC,uBAC2BA,GACAA,EAE5BnpB,IAEN,OAAO6Z,EAAInT,CACb,CAlF6D46N,CAAO,EAAIznN,EAAI,EAC5E,CAkFA,SAAS0nN,GAAShC,EAAMwB,GACtB,IAAIZ,EAAIhiL,EACJtwB,EAAO,CACT0xM,KAAM,SAAcp9L,GAClB,OAAI9lC,UAAUC,QACZ6jO,EAAKh+L,GAAK,EACHtU,GAEAsyM,CAEX,EACAY,MAAO,SAAe5+L,GACpB,OAAI9lC,UAAUC,QACZ6hD,EAAa,MAALhc,EAAY,EAAIA,EACjBtU,GAEAswB,CAEX,EACAqiL,OAAQ,WACN,OAAOM,GAAaX,EAAIhiL,EAC1B,EACAoG,IAAK,SAAa3mD,GAChB,OAAOqjO,GAAcrjO,EAAOuiO,EAAIhiL,EAClC,EACAsiL,IAAK,SAAa7iO,GAChB,OAAOsjO,GAAiBtjO,EAAOuiO,EAAIhiL,EACrC,EACAuiL,KAAM,SAAc7mN,GAClB,OAAOwnN,GAAexnN,EAAGsmN,EAAIhiL,EAC/B,GAEF,OAAOtwB,EAAK0xM,KAAKA,GAAMwB,MAAMA,EAC/B,CACA,SAASS,GAAIC,EAASC,GACpB,IAAI9+K,EAAS2+K,KACTl3M,EAAI,EACJwD,EAAO,CACT1M,KAAM,SAAcghB,GAClB,OAAI9lC,UAAUC,QACZmlO,EAAUt/L,EACV9X,EAAI8X,EAAIA,EAAE7lC,OAAS,EACZuxB,EAAKkpB,UAAU2qL,IAEfD,CAEX,EACA1qL,UAAW,SAAmB5U,GAC5B,OAAK9lC,UAAUC,UACfolO,EAAav/L,IACMs/L,IAASC,EAAa/B,GAAkB8B,IACpD5zM,GAHuB6zM,CAIhC,EACAlB,OAAQ,WACN,OAAOiB,KAAW,KAAWp3M,IAAMq3M,EAAa9+K,EAAO49K,QACzD,EACAj8K,IAAK,SAAa79C,GAGhB,IAFA,IAAIC,EAAI,EACNhK,EAAI,EACCA,EAAI0tB,IAAK1tB,EACdgK,GAAKi8C,EAAO2B,KAAK79C,EAAI+6N,EAAQ9kO,IAAM+kO,GAErC,OAAO/6N,EAAI+6N,EAAar3M,CAC1B,EACAo2M,IAAK,SAAa/5N,GAGhB,IAFA,IAAIC,EAAI,EACNhK,EAAI,EACCA,EAAI0tB,IAAK1tB,EACdgK,GAAKi8C,EAAO69K,KAAK/5N,EAAI+6N,EAAQ9kO,IAAM+kO,GAErC,OAAO/6N,EAAI0jB,CACb,EACAq2M,KAAM,WACJ,MAAMh9L,MAAM,0BACd,GAEF,OAAO7V,EAAK1M,KAAKsgN,EACnB,CACA,SAASE,GAAgBpC,EAAMwB,GAG7B,OAFAxB,EAAOA,GAAQ,EACfwB,EAAiB,MAATA,EAAgB,EAAIA,EACrBrrN,KAAK6gC,IAAIgpL,EAAOuB,KAAiBC,EAC1C,CACA,SAASa,GAAiBhkO,EAAO2hO,EAAMwB,GACrC,GAAInjO,GAAS,EAAG,OAAO,EACvB2hO,EAAOA,GAAQ,EACfwB,EAAiB,MAATA,EAAgB,EAAIA,EAC5B,IAAI7/M,GAAKxL,KAAKy/B,IAAIv3C,GAAS2hO,GAAQwB,EACnC,OAAOrrN,KAAK6gC,KAAK,GAAMr1B,EAAIA,IAAM6/M,EAAQJ,GAAU/iO,EACrD,CACA,SAASikO,GAAoBjkO,EAAO2hO,EAAMwB,GACxC,OAAOG,GAAiBxrN,KAAKy/B,IAAIv3C,GAAQ2hO,EAAMwB,EACjD,CACA,SAASe,GAAkBjoN,EAAG0lN,EAAMwB,GAClC,OAAOrrN,KAAK6gC,IAAI8qL,GAAexnN,EAAG0lN,EAAMwB,GAC1C,CACA,SAASgB,GAAUxC,EAAMwB,GACvB,IAAIZ,EAAIhiL,EACJtwB,EAAO,CACT0xM,KAAM,SAAcp9L,GAClB,OAAI9lC,UAAUC,QACZ6jO,EAAKh+L,GAAK,EACHtU,GAEAsyM,CAEX,EACAY,MAAO,SAAe5+L,GACpB,OAAI9lC,UAAUC,QACZ6hD,EAAa,MAALhc,EAAY,EAAIA,EACjBtU,GAEAswB,CAEX,EACAqiL,OAAQ,WACN,OAAOmB,GAAgBxB,EAAIhiL,EAC7B,EACAoG,IAAK,SAAa3mD,GAChB,OAAOgkO,GAAiBhkO,EAAOuiO,EAAIhiL,EACrC,EACAsiL,IAAK,SAAa7iO,GAChB,OAAOikO,GAAoBjkO,EAAOuiO,EAAIhiL,EACxC,EACAuiL,KAAM,SAAc7mN,GAClB,OAAOioN,GAAkBjoN,EAAGsmN,EAAIhiL,EAClC,GAEF,OAAOtwB,EAAK0xM,KAAKA,GAAMwB,MAAMA,EAC/B,CACA,SAASiB,GAAQC,EAAOC,GACtB,IACE/4M,EADE3X,EAAI,EAcR,IAAIqc,EAAO,CACTs0M,QAAS,SAAiBhgM,GACxB,OAAI9lC,UAAUC,QACZ6sB,EAfN,SAAmBziB,GACjB,IAEE/J,EAFEwsB,EAAI,GACJtB,EAAM,EAEV,IAAKlrB,EAAI,EAAGA,EAAI6U,IAAK7U,EACnBkrB,GAAOsB,EAAExsB,GAAa,MAAR+J,EAAE/J,GAAa,GAAK+J,EAAE/J,GAEtC,IAAKA,EAAI,EAAGA,EAAI6U,IAAK7U,EACnBwsB,EAAExsB,IAAMkrB,EAEV,OAAOsB,CACT,CAIU43B,CAAUmhL,EAAW//L,GAAK,IACvBtU,GAEFq0M,CACT,EACAE,cAAe,SAAuBjgM,GACpC,OAAI9lC,UAAUC,QACR6lC,GACF3wB,EAAI2wB,EAAE7lC,OACN2lO,EAAQ9/L,IAER3wB,EAAI,EACJywN,EAAQ,IAEHp0M,EAAKs0M,QAAQD,IAEfD,CACT,EACAzB,OAAQ,WAON,IANA,IAAI7lN,EAAI,KACJ6G,EAAIygN,EAAMzwN,EAAI,GAChB9D,EAAIyb,EAAE,GACNxsB,EAAI,EAGCA,EAAI6U,EAAI,EAAG9D,GAAKyb,IAAIxsB,GACzB,GAAIge,EAAIjN,EAAG,CACT8T,EAAIygN,EAAMtlO,GACV,KACF,CAGF,OAAO6kB,EAAEg/M,QACX,EACAj8K,IAAK,SAAa79C,GAGhB,IAFA,IAAImT,EAAI,EACNld,EAAI,EACCA,EAAI6U,IAAK7U,EACdkd,GAAKsP,EAAExsB,GAAKslO,EAAMtlO,GAAG4nD,IAAI79C,GAE3B,OAAOmT,CACT,EACA4mN,IAAK,SAAa/5N,GAGhB,IAFA,IAAImT,EAAI,EACNld,EAAI,EACCA,EAAI6U,IAAK7U,EACdkd,GAAKsP,EAAExsB,GAAKslO,EAAMtlO,GAAG8jO,IAAI/5N,GAE3B,OAAOmT,CACT,EACA6mN,KAAM,WACJ,MAAMh9L,MAAM,8BACd,GAEF,OAAO7V,EAAKu0M,cAAcH,GAAOE,QAAQD,EAC3C,CACA,SAASG,GAAc1sN,EAAKC,GAK1B,OAJW,MAAPA,IACFA,EAAa,MAAPD,EAAc,EAAIA,EACxBA,EAAM,GAEDA,GAAOC,EAAMD,GAAO,IAC7B,CACA,SAAS2sN,GAAe1kO,EAAO+X,EAAKC,GAKlC,OAJW,MAAPA,IACFA,EAAa,MAAPD,EAAc,EAAIA,EACxBA,EAAM,GAED/X,GAAS+X,GAAO/X,GAASgY,EAAM,GAAKA,EAAMD,GAAO,CAC1D,CACA,SAAS4sN,GAAkB3kO,EAAO+X,EAAKC,GAKrC,OAJW,MAAPA,IACFA,EAAa,MAAPD,EAAc,EAAIA,EACxBA,EAAM,GAED/X,EAAQ+X,EAAM,EAAI/X,EAAQgY,EAAM,GAAKhY,EAAQ+X,IAAQC,EAAMD,EACpE,CACA,SAAS6sN,GAAgB3oN,EAAGlE,EAAKC,GAK/B,OAJW,MAAPA,IACFA,EAAa,MAAPD,EAAc,EAAIA,EACxBA,EAAM,GAEDkE,GAAK,GAAKA,GAAK,EAAIlE,EAAMkE,GAAKjE,EAAMD,GAAOq6B,GACpD,CACA,SAASyyL,GAAQ9sN,EAAKC,GACpB,IAAIgE,EAAG8E,EACHmP,EAAO,CACTlY,IAAK,SAAawsB,GAChB,OAAI9lC,UAAUC,QACZsd,EAAIuoB,GAAK,EACFtU,GAEAjU,CAEX,EACAhE,IAAK,SAAausB,GAChB,OAAI9lC,UAAUC,QACZoiB,EAAS,MAALyjB,EAAY,EAAIA,EACbtU,GAEAnP,CAEX,EACA8hN,OAAQ,WACN,OAAO6B,GAAczoN,EAAG8E,EAC1B,EACA6lC,IAAK,SAAa3mD,GAChB,OAAO0kO,GAAe1kO,EAAOgc,EAAG8E,EAClC,EACA+hN,IAAK,SAAa7iO,GAChB,OAAO2kO,GAAkB3kO,EAAOgc,EAAG8E,EACrC,EACAgiN,KAAM,SAAc7mN,GAClB,OAAO2oN,GAAgB3oN,EAAGD,EAAG8E,EAC/B,GAMF,OAJW,MAAP9I,IACFA,EAAa,MAAPD,EAAc,EAAIA,EACxBA,EAAM,GAEDkY,EAAKlY,IAAIA,GAAKC,IAAIA,EAC3B,CACA,SAAS,GAASuL,EAAMza,EAAGC,GACzB,IAGE+7N,EAHEnD,EAAO,EACTl1M,EAAI,EACFs4M,EAAa,GAA2BxhN,GAE5C,IACE,IAAKwhN,EAAWppN,MAAOmpN,EAASC,EAAWt4M,KAAK0pB,MAAO,CACrD,IAAIvyB,EAAIkhN,EAAO9kO,MACXkD,EAAM6F,EAAE6a,GACA,MAAR9a,EAAE8a,IAAqB,MAAP1gB,GAAe6c,MAAM7c,KACzCy+N,IAASz+N,EAAMy+N,KAAUl1M,EAC3B,CACF,CAAE,MAAO4Y,GACP0/L,EAAWhjO,EAAEsjC,EACf,CAAE,QACA0/L,EAAW7jO,GACb,CACA,MAAO,CACLs6C,KAAM,CAACmmL,GACP7qL,QAAS,WACP,OAAO6qL,CACT,EACA/oL,SAAU,EAEd,CAGA,SAASd,GAAIC,EAAIlB,EAAImB,EAAKC,GACxB,IAAIC,EAAQD,EAAMF,EAAKA,EACrBI,EAAQrgC,KAAKoG,IAAIg6B,GAAS,MAAQ,GAAKF,EAAMD,EAAKlB,GAAMqB,EAE1D,MAAO,CADOrB,EAAKsB,EAAQJ,EACRI,EACrB,CACA,SAAS55B,GAAOgF,EAAMza,EAAGC,EAAGqH,GAC1BmT,EAAOA,EAAKnV,QAAO,SAAUwV,GAC3B,IAAIP,EAAIva,EAAE8a,GACR9T,EAAI/G,EAAE6a,GACR,OAAY,MAALP,IAAcA,GAAKA,IAAMA,GAAU,MAALvT,IAAcA,GAAKA,IAAMA,CAChE,IACIM,GACFmT,EAAKnT,MAAK,SAAU4L,EAAG8E,GACrB,OAAOhY,EAAEkT,GAAKlT,EAAEgY,EAClB,IAEF,IAQEs1B,EACAC,EACAzyB,EAEAohN,EAZEv4M,EAAIlJ,EAAK7kB,OACX+oB,EAAI,IAAI6uB,aAAa7pB,GACrB/E,EAAI,IAAI4uB,aAAa7pB,GAGnB1tB,EAAI,EACNw3C,EAAK,EACLC,EAAK,EAIHyuL,EAAa,GAA2B1hN,GAE5C,IACE,IAAK0hN,EAAWtpN,MAAOqpN,EAASC,EAAWx4M,KAAK0pB,MAC9CvyB,EAAIohN,EAAOhlO,MACXynB,EAAE1oB,GAAKq3C,GAAMttC,EAAE8a,GACf8D,EAAE3oB,GAAKs3C,GAAMttC,EAAE6a,GAEf2yB,IAAOH,EAAKG,KADVx3C,EAEFy3C,IAAOH,EAAKG,GAAMz3C,CAItB,CAAE,MAAOsmC,GACP4/L,EAAWljO,EAAEsjC,EACf,CAAE,QACA4/L,EAAW/jO,GACb,CACA,IAAKnC,EAAI,EAAGA,EAAI0tB,IAAK1tB,EACnB0oB,EAAE1oB,IAAMw3C,EACR7uB,EAAE3oB,IAAMy3C,EAEV,MAAO,CAAC/uB,EAAGC,EAAG6uB,EAAIC,EACpB,CACA,SAASC,GAAYlzB,EAAMza,EAAGC,EAAG7K,GAC/B,IACEmlB,EACAvT,EAEAo1N,EAJEnmO,GAAK,EAGLomO,EAAa,GAA2B5hN,GAE5C,IACE,IAAK4hN,EAAWxpN,MAAOupN,EAASC,EAAW14M,KAAK0pB,MAAO,CACrD,IAAIvyB,EAAIshN,EAAOllO,MACfqjB,EAAIva,EAAE8a,GACN9T,EAAI/G,EAAE6a,GACG,MAALP,IAAcA,GAAKA,IAAMA,GAAU,MAALvT,IAAcA,GAAKA,IAAMA,GACzD5R,EAASmlB,EAAGvT,IAAK/Q,EAErB,CACF,CAAE,MAAOsmC,GACP8/L,EAAWpjO,EAAEsjC,EACf,CAAE,QACA8/L,EAAWjkO,GACb,CACF,CAIA,SAAS03C,GAASr1B,EAAMza,EAAGC,EAAG8tC,EAAIC,GAChC,IAAIC,EAAM,EACRC,EAAM,EAOR,OANAP,GAAYlzB,EAAMza,EAAGC,GAAG,SAAU0B,EAAIC,GACpC,IAAIusC,EAAMvsC,EAAKosC,EAAQrsC,GACrBysC,EAAMxsC,EAAKmsC,EACbE,GAAOE,EAAMA,EACbD,GAAOE,EAAMA,CACf,IACO,EAAIH,EAAMC,CACnB,CAIA,SAASj+B,GAAOwK,EAAMza,EAAGC,GACvB,IAAI0e,EAAI,EACNC,EAAI,EACJ4wB,EAAK,EACLO,EAAK,EACLpsB,EAAI,EACNgqB,GAAYlzB,EAAMza,EAAGC,GAAG,SAAU0B,EAAIC,KAClC+hB,EACFhF,IAAMhd,EAAKgd,GAAKgF,EAChB/E,IAAMhd,EAAKgd,GAAK+E,EAChB6rB,IAAO7tC,EAAKC,EAAK4tC,GAAM7rB,EACvBosB,IAAOpuC,EAAKA,EAAKouC,GAAMpsB,CACzB,IACA,IAAI+uB,EAAO1D,GAAIrwB,EAAGC,EAAG4wB,EAAIO,GACvB/B,EAAU,SAAiBhuC,GACzB,OAAO0yC,EAAK,GAAKA,EAAK,GAAK1yC,CAC7B,EACF,MAAO,CACL0yC,KAAMA,EACN1E,QAASA,EACT8B,SAAUA,GAASr1B,EAAMza,EAAGC,EAAG2e,EAAGovB,GAEtC,CAIA,SAAS,GAAIvzB,EAAMza,EAAGC,GACpB,IAAI0e,EAAI,EACNC,EAAI,EACJ4wB,EAAK,EACLO,EAAK,EACLpsB,EAAI,EACNgqB,GAAYlzB,EAAMza,EAAGC,GAAG,SAAU0B,EAAIC,KAClC+hB,EACFhiB,EAAKqN,KAAKy/B,IAAI9sC,GACdgd,IAAMhd,EAAKgd,GAAKgF,EAChB/E,IAAMhd,EAAKgd,GAAK+E,EAChB6rB,IAAO7tC,EAAKC,EAAK4tC,GAAM7rB,EACvBosB,IAAOpuC,EAAKA,EAAKouC,GAAMpsB,CACzB,IACA,IAAI+uB,EAAO1D,GAAIrwB,EAAGC,EAAG4wB,EAAIO,GACvB/B,EAAU,SAAiBhuC,GACzB,OAAO0yC,EAAK,GAAKA,EAAK,GAAK1jC,KAAKy/B,IAAIzuC,EACtC,EACF,MAAO,CACL0yC,KAAMA,EACN1E,QAASA,EACT8B,SAAUA,GAASr1B,EAAMza,EAAGC,EAAG2e,EAAGovB,GAEtC,CACA,SAAS,GAAIvzB,EAAMza,EAAGC,GAEpB,IAWE0B,EACAguC,EACA9yB,EAbEy/M,EAAU7mN,GAAOgF,EAAMza,EAAGC,GAC5BqwC,GAAW,OAAegsL,EAAS,GACnChvL,EAAKgD,EAAS,GAEd7C,GADK6C,EAAS,GACTA,EAAS,IACd5C,EAAK4C,EAAS,GACZf,EAAK,EACPC,EAAK,EACLC,EAAM,EACNC,EAAM,EACN/rB,EAAI,EAINgqB,GAAYlzB,EAAMza,EAAGC,GAAG,SAAUw7B,EAAG75B,GACnCD,EAAK2rC,EAAG3pB,KACRgsB,EAAK3gC,KAAKy/B,IAAI7sC,GAEd2tC,IAAO3tC,EAAK+tC,EAAKJ,GAAM5rB,EACvB6rB,KAFA3yB,EAAKlb,EAAKC,GAEE4tC,GAAM7rB,EAClB8rB,IAAQ5yB,EAAK8yB,EAAKF,GAAO9rB,EACzB+rB,IAAQ/tC,EAAKkb,EAAK6yB,GAAO/rB,CAC3B,IACA,IAAI44M,EAAOvtL,GAAIQ,EAAK9B,EAAI6B,EAAK7B,EAAI+B,EAAM/B,EAAIgC,EAAMhC,GAC/CkC,GAAQ,OAAe2sL,EAAM,GAC7BC,EAAK5sL,EAAM,GACXpyB,EAAKoyB,EAAM,GACX5B,EAAU,SAAiBhuC,GACzB,OAAOgP,KAAK6gC,IAAI2sL,EAAKh/M,GAAMxd,EAAIytC,GACjC,EACF,MAAO,CACLiF,KAAM,CAAC1jC,KAAK6gC,IAAI2sL,EAAKh/M,EAAKiwB,GAAKjwB,GAC/BwwB,QAASA,EACT8B,SAAUA,GAASr1B,EAAMza,EAAGC,EAAGytC,EAAIM,GAEvC,CAIA,SAAS,GAAIvzB,EAAMza,EAAGC,GACpB,IAAI0e,EAAI,EACNC,EAAI,EACJ4wB,EAAK,EACLO,EAAK,EACL+C,EAAK,EACLnvB,EAAI,EACNgqB,GAAYlzB,EAAMza,EAAGC,GAAG,SAAU0B,EAAIC,GACpC,IAAIiwC,EAAK7iC,KAAKy/B,IAAI9sC,GAChBguC,EAAK3gC,KAAKy/B,IAAI7sC,KACd+hB,EACFhF,IAAMkzB,EAAKlzB,GAAKgF,EAChB/E,IAAM+wB,EAAK/wB,GAAK+E,EAChB6rB,IAAOqC,EAAKlC,EAAKH,GAAM7rB,EACvBosB,IAAO8B,EAAKA,EAAK9B,GAAMpsB,EACvBmvB,IAAOlxC,EAAKkxC,GAAMnvB,CACpB,IACA,IAAI+uB,EAAO1D,GAAIrwB,EAAGC,EAAG4wB,EAAIO,GACvB/B,EAAU,SAAiBhuC,GACzB,OAAO0yC,EAAK,GAAK1jC,KAAK0B,IAAI1Q,EAAG0yC,EAAK,GACpC,EAEF,OADAA,EAAK,GAAK1jC,KAAK6gC,IAAI6C,EAAK,IACjB,CACLA,KAAMA,EACN1E,QAASA,EACT8B,SAAUA,GAASr1B,EAAMza,EAAGC,EAAG6yC,EAAI9E,GAEvC,CACA,SAAS8D,GAAKr3B,EAAMza,EAAGC,GACrB,IAYEhK,EACA0L,EACAC,EACAyV,EAfEolN,EAAWhnN,GAAOgF,EAAMza,EAAGC,GAC7By8N,GAAW,OAAeD,EAAU,GACpCnvL,EAAKovL,EAAS,GACdnvL,EAAKmvL,EAAS,GACdjvL,EAAKivL,EAAS,GACdhvL,EAAKgvL,EAAS,GACd/4M,EAAI2pB,EAAG13C,OACLm6C,EAAK,EACPiC,EAAK,EACLC,EAAK,EACLzC,EAAK,EACLE,EAAM,EAKR,IAAKz5C,EAAI,EAAGA,EAAI0tB,GACdhiB,EAAK2rC,EAAGr3C,GACR2L,EAAK2rC,EAAGt3C,KAER85C,KADA14B,EAAK1V,EAAKA,GACEouC,GAAM95C,EAClB+7C,IAAO36B,EAAK1V,EAAKqwC,GAAM/7C,EACvBg8C,IAAO56B,EAAKA,EAAK46B,GAAMh8C,EACvBu5C,IAAO7tC,EAAKC,EAAK4tC,GAAMv5C,EACvBy5C,IAAQr4B,EAAKzV,EAAK8tC,GAAOz5C,EAE3B,IAAIk8C,EAAOF,EAAKlC,EAAKA,EACnBj1B,EAAIi1B,EAAKoC,EAAOH,EAAKA,EACrB9+B,GAAKw8B,EAAMK,EAAKP,EAAKwC,GAAMl3B,EAC3B9C,GAAKw3B,EAAK2C,EAAOzC,EAAMsC,GAAMl3B,EAC7BZ,GAAKhH,EAAI68B,EACT/B,EAAU,SAAiBhuC,GAEzB,OAAOkT,GADPlT,GAAQytC,GACOztC,EAAIgY,EAAIhY,EAAIka,EAAIwzB,CACjC,EAGF,MAAO,CACLgF,KAAM,CAACx4B,EAAIlC,EAAIy1B,EAAKv6B,EAAIu6B,EAAKA,EAAKC,EAAI11B,EAAI,EAAI9E,EAAIu6B,EAAIv6B,GACtD86B,QAASA,EACT8B,SAAUA,GAASr1B,EAAMza,EAAGC,EAAGytC,EAAIM,GAEvC,CAOA,SAAS2uL,GAAKliN,EAAMza,EAAGC,EAAGoyC,GAExB,GAAc,IAAVA,EAAa,OAAO,GAAS53B,EAAMza,EAAGC,GAC1C,GAAc,IAAVoyC,EAAa,OAAOpiC,GAAOwK,EAAMza,EAAGC,GACxC,GAAc,IAAVoyC,EAAa,OAAOP,GAAKr3B,EAAMza,EAAGC,GACtC,IAUIhK,EAAGgG,EAAGoe,EAAGrT,EAAGkT,EAVZ0iN,EAAWnnN,GAAOgF,EAAMza,EAAGC,GAC7B48N,GAAW,OAAeD,EAAU,GACpCtvL,EAAKuvL,EAAS,GACdtvL,EAAKsvL,EAAS,GACdpvL,EAAKovL,EAAS,GACdnvL,EAAKmvL,EAAS,GACdl5M,EAAI2pB,EAAG13C,OACP48C,EAAM,GACNC,EAAM,GACNh3C,EAAI42C,EAAQ,EAEd,IAAKp8C,EAAI,EAAGA,EAAIwF,IAAKxF,EAAG,CACtB,IAAKokB,EAAI,EAAGrT,EAAI,EAAGqT,EAAIsJ,IAAKtJ,EAC1BrT,GAAKgI,KAAK0B,IAAI48B,EAAGjzB,GAAIpkB,GAAKs3C,EAAGlzB,GAI/B,IAFAm4B,EAAIl9C,KAAK0R,GACTkT,EAAI,IAAIszB,aAAa/xC,GAChBQ,EAAI,EAAGA,EAAIR,IAAKQ,EAAG,CACtB,IAAKoe,EAAI,EAAGrT,EAAI,EAAGqT,EAAIsJ,IAAKtJ,EAC1BrT,GAAKgI,KAAK0B,IAAI48B,EAAGjzB,GAAIpkB,EAAIgG,GAE3Bie,EAAEje,GAAK+K,CACT,CACAyrC,EAAIn9C,KAAK4kB,EACX,CACAu4B,EAAIn9C,KAAKk9C,GACT,IAAIE,EAsCN,SAA6BxsC,GAC3B,IAEIjQ,EAAGgG,EAAGR,EAAGwY,EAAGnb,EAFZ6qB,EAAIzd,EAAOtQ,OAAS,EACtB88C,EAAO,GAET,IAAKz8C,EAAI,EAAGA,EAAI0tB,IAAK1tB,EAAG,CAEtB,IADAge,EAAIhe,EACCgG,EAAIhG,EAAI,EAAGgG,EAAI0nB,IAAK1nB,EACnB+S,KAAKoG,IAAIlP,EAAOjQ,GAAGgG,IAAM+S,KAAKoG,IAAIlP,EAAOjQ,GAAGge,MAC9CA,EAAIhY,GAGR,IAAKR,EAAIxF,EAAGwF,EAAIkoB,EAAI,IAAKloB,EACvB3C,EAAIoN,EAAOzK,GAAGxF,GACdiQ,EAAOzK,GAAGxF,GAAKiQ,EAAOzK,GAAGwY,GACzB/N,EAAOzK,GAAGwY,GAAKnb,EAEjB,IAAKmD,EAAIhG,EAAI,EAAGgG,EAAI0nB,IAAK1nB,EACvB,IAAKR,EAAIkoB,EAAGloB,GAAKxF,EAAGwF,IAClByK,EAAOzK,GAAGQ,IAAMiK,EAAOzK,GAAGxF,GAAKiQ,EAAOjQ,GAAGgG,GAAKiK,EAAOjQ,GAAGA,EAG9D,CACA,IAAKgG,EAAI0nB,EAAI,EAAG1nB,GAAK,IAAKA,EAAG,CAE3B,IADAnD,EAAI,EACC2C,EAAIQ,EAAI,EAAGR,EAAIkoB,IAAKloB,EACvB3C,GAAKoN,EAAOzK,GAAGQ,GAAKy2C,EAAKj3C,GAE3Bi3C,EAAKz2C,IAAMiK,EAAOyd,GAAG1nB,GAAKnD,GAAKoN,EAAOjK,GAAGA,EAC3C,CACA,OAAOy2C,CACT,CApEaC,CAAoBF,GAC7BzE,EAAU,SAAiBhuC,GACzBA,GAAKytC,EACL,IAAIxtC,EAAIytC,EAAKgF,EAAK,GAAKA,EAAK,GAAK1yC,EAAI0yC,EAAK,GAAK1yC,EAAIA,EACnD,IAAK/J,EAAI,EAAGA,EAAIwF,IAAKxF,EAAGgK,GAAKyyC,EAAKz8C,GAAK+Y,KAAK0B,IAAI1Q,EAAG/J,GACnD,OAAOgK,CACT,EACF,MAAO,CACLyyC,KAAME,GAASn3C,EAAGi3C,GAAOjF,EAAIC,GAC7BM,QAASA,EACT8B,SAAUA,GAASr1B,EAAMza,EAAGC,EAAGytC,EAAIM,GAEvC,CACA,SAAS4E,GAASn3C,EAAGyX,EAAGlT,EAAGC,GACzB,IACIhK,EAAGgG,EAAG+K,EAAGkT,EADTM,EAAIgb,MAAM/5B,GAId,IAAKxF,EAAI,EAAGA,EAAIwF,IAAKxF,EAAGukB,EAAEvkB,GAAK,EAG/B,IAAKA,EAAIwF,EAAI,EAAGxF,GAAK,IAAKA,EAIxB,IAHA+Q,EAAIkM,EAAEjd,GACNikB,EAAI,EACJM,EAAEvkB,IAAM+Q,EACH/K,EAAI,EAAGA,GAAKhG,IAAKgG,EACpBie,IAAMjkB,EAAI,EAAIgG,GAAKA,EACnBue,EAAEvkB,EAAIgG,IAAM+K,EAAIgI,KAAK0B,IAAI1Q,EAAG/D,GAAKie,EAMrC,OADAM,EAAE,IAAMva,EACDua,CACT,CAmCA,IAAI01B,GAAW,EACbC,GAAU,MAKZ,SAASC,GAAM31B,EAAMza,EAAGC,EAAGowC,GAYzB,IAXA,IAAIysL,EAAWrnN,GAAOgF,EAAMza,EAAGC,GAAG,GAChC88N,GAAW,OAAeD,EAAU,GACpCxvL,EAAKyvL,EAAS,GACdxvL,EAAKwvL,EAAS,GACdtvL,EAAKsvL,EAAS,GACdrvL,EAAKqvL,EAAS,GACdp5M,EAAI2pB,EAAG13C,OACP26C,EAAKvhC,KAAKE,IAAI,KAAMmhC,EAAY1sB,IAChC6sB,EAAO,IAAIhD,aAAa7pB,GACxB8sB,EAAY,IAAIjD,aAAa7pB,GAC7B+sB,EAAgB,IAAIlD,aAAa7pB,GAAGgtB,KAAK,GAClC/B,GAAQ,IAAKA,GAAQsB,IAAW,CAEvC,IADA,IAAI34C,EAAW,CAAC,EAAGg5C,EAAK,GACft6C,EAAI,EAAGA,EAAI0tB,IAAK1tB,EAAG,CAY1B,IAXA,IAAI0L,EAAK2rC,EAAGr3C,GACV26C,EAAKr5C,EAAS,GACds5C,EAAKt5C,EAAS,GACdu5C,EAAOnvC,EAAK2rC,EAAGsD,GAAMtD,EAAGuD,GAAMlvC,EAAKivC,EAAKC,EACtCE,EAAI,EACNpyB,EAAI,EACJC,EAAI,EACJ4wB,EAAK,EACLO,EAAK,EACHiB,EAAQ,EAAIhiC,KAAKoG,IAAIk4B,EAAGwD,GAAQnvC,GAAM,GAEjClG,EAAIm1C,EAAIn1C,GAAKo1C,IAAMp1C,EAAG,CAC7B,IAAIw1C,EAAK3D,EAAG7xC,GACVy1C,EAAK3D,EAAG9xC,GACRgnB,EAAI0uB,GAAQniC,KAAKoG,IAAIzT,EAAKsvC,GAAMD,GAASN,EAAcj1C,GACvD21C,EAAMH,EAAKxuB,EACbsuB,GAAKtuB,EACL9D,GAAKyyB,EACLxyB,GAAKsyB,EAAKzuB,EACV+sB,GAAM0B,EAAKE,EACXrB,GAAMkB,EAAKG,CACb,CAGA,IAAI4rL,EAAQhuL,GAAIrwB,EAAIoyB,EAAGnyB,EAAImyB,EAAGvB,EAAKuB,EAAGhB,EAAKgB,GACzCksL,GAAQ,OAAeD,EAAO,GAC9B9pN,EAAI+pN,EAAM,GACVjlN,EAAIilN,EAAM,GACZzsL,EAAKv6C,GAAKid,EAAI8E,EAAIrW,EAClB8uC,EAAUx6C,GAAK+Y,KAAKoG,IAAIm4B,EAAGt3C,GAAKu6C,EAAKv6C,IACrCo7C,GAAe/D,EAAIr3C,EAAI,EAAGsB,EAC5B,CACA,GAAIq3C,IAASsB,GACX,MAEF,IAAIoB,EAAiBrB,GAAOQ,GAC5B,GAAIzhC,KAAKoG,IAAIk8B,GAAkBnB,GAAS,MACxC,IAAK,IAAYoB,EAAKC,EAAb97C,EAAK,EAAYA,EAAKiuB,IAAKjuB,EAClC67C,EAAMd,EAAU/6C,IAAO,EAAI47C,GAG3BZ,EAAch7C,GAAM67C,GAAO,EAAIpB,IAAWqB,EAAK,EAAID,EAAMA,GAAOC,CAEpE,CACA,OA0BF,SAAgBlE,EAAIkD,EAAM/C,EAAIC,GAO5B,IANA,IAKE1mC,EALE2c,EAAI2pB,EAAG13C,OACTqiB,EAAM,GACJhiB,EAAI,EACNy7C,EAAM,EACNrnB,EAAO,GAEFp0B,EAAI0tB,IAAK1tB,EACd+Q,EAAIsmC,EAAGr3C,GAAKw3C,EACRpjB,EAAK,KAAOrjB,EAEdqjB,EAAK,KAAOmmB,EAAKv6C,GAAKo0B,EAAK,MAAQqnB,GAGnCA,EAAM,EACNrnB,EAAK,IAAMqjB,EACXrjB,EAAO,CAACrjB,EAAGwpC,EAAKv6C,IAChBgiB,EAAI3iB,KAAK+0B,IAIb,OADAA,EAAK,IAAMqjB,EACJz1B,CACT,CAhDSw5B,CAAOnE,EAAIkD,EAAM/C,EAAIC,EAC9B,CAGA,SAASyD,GAAQnxC,GACf,OAAQA,EAAI,EAAIA,EAAIA,EAAIA,GAAKA,EAAIA,CACnC,CAGA,SAASqxC,GAAe/D,EAAIr3C,EAAGsB,GAC7B,IAAI6C,EAAMkzC,EAAGr3C,GACT8N,EAAOxM,EAAS,GAClBmQ,EAAQnQ,EAAS,GAAK,EACxB,KAAImQ,GAAS4lC,EAAG13C,QAIhB,KAAOK,EAAI8N,GAAQupC,EAAG5lC,GAAStN,GAAOA,EAAMkzC,EAAGvpC,IAC7CxM,EAAS,KAAOwM,EAChBxM,EAAS,GAAKmQ,IACZA,CAEN,CA6BA,IAAIw1N,GAAc,GAAMluN,KAAK+B,GAAK,IAGlC,SAASosN,GAAY/kO,EAAGgpN,EAAQgc,EAAUC,GACxCD,EAAWA,GAAY,GACvBC,EAAWruN,KAAKE,IAAIkuN,EAAUC,GAAY,KAC1C,IAAIt9N,EAAQ,SAAeC,GACvB,MAAO,CAACA,EAAG5H,EAAE4H,GACf,EACAiF,EAAOm8M,EAAO,GACdl8M,EAAOk8M,EAAO,GACdn8F,EAAO//G,EAAOD,EACdlL,EAAOkrH,EAAOo4G,EACdhzM,EAAO,CAACtqB,EAAMkF,IACdqlB,EAAO,GACT,GAAI8yM,IAAaC,EAAU,CAEzB,IAAK,IAAIpnO,EAAI,EAAGA,EAAIonO,IAAYpnO,EAC9Bo0B,EAAK/0B,KAAKyK,EAAMkF,EAAOhP,EAAImnO,EAAWn4G,IAGxC,OADA56F,EAAK/0B,KAAKyK,EAAMmF,IACTmlB,CACT,CAGEC,EAAKh1B,KAAKyK,EAAMmF,IAChB,IAAK,IAAIsxM,EAAM4mB,IAAY5mB,EAAM,GAC/BlsL,EAAKh1B,KAAKyK,EAAMkF,EAAOuxM,EAAM4mB,EAAWn4G,IAO5C,IAJA,IAAIx6F,EAAKJ,EAAK,GACV7J,EAAK8J,EAAKA,EAAK10B,OAAS,GACxB0nO,EAAK,EAAIr4G,EACTs4G,EAqBN,SAAgBl+N,EAAMoW,GAIpB,IAHA,IAAI+nN,EAAOn+N,EACPo+N,EAAOp+N,EACPskB,EAAIlO,EAAO7f,OACNK,EAAI,EAAGA,EAAI0tB,IAAK1tB,EAAG,CAC1B,IAAIgK,EAAIwV,EAAOxf,GAAG,GACdgK,EAAIu9N,IAAMA,EAAOv9N,GACjBA,EAAIw9N,IAAMA,EAAOx9N,EACvB,CACA,OAAO,GAAKw9N,EAAOD,EACrB,CA/BW71I,CAAOl9D,EAAG,GAAIH,GAChB9J,GAAI,CAET,IAAIk9M,EAAK39N,GAAO0qB,EAAG,GAAKjK,EAAG,IAAM,GACxBk9M,EAAG,GAAKjzM,EAAG,IAAM1wB,GAChB4jO,GAAWlzM,EAAIizM,EAAIl9M,EAAI88M,EAAIC,GAAML,GAIzC5yM,EAAKh1B,KAAKooO,IAIVjzM,EAAKjK,EACL6J,EAAK/0B,KAAKkrB,GACV8J,EAAKtO,OAEPwE,EAAK8J,EAAKA,EAAK10B,OAAS,EAC1B,CACA,OAAOy0B,CACT,CAYA,SAASszM,GAAWxqN,EAAGmH,EAAGrG,EAAGqpN,EAAIC,GAC/B,IAAIxuL,EAAK//B,KAAKqG,MAAMkoN,GAAMtpN,EAAE,GAAKd,EAAE,IAAKmqN,GAAMrpN,EAAE,GAAKd,EAAE,KACrD2M,EAAK9Q,KAAKqG,MAAMkoN,GAAMjjN,EAAE,GAAKnH,EAAE,IAAKmqN,GAAMhjN,EAAE,GAAKnH,EAAE,KACrD,OAAOnE,KAAKoG,IAAI25B,EAAKjvB,EACvB,CC/wCA,SAAS,GAA2B3F,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,GAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,GAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,GAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CCFnK,SAAS,GAAMxyM,EAAO1hB,EAAMyiD,GACzC/gC,GAASA,EAAO1hB,GAAQA,EAAMyiD,GAAQ74B,EAAIhuB,UAAUC,QAAU,GAAKmE,EAAO0hB,EAAOA,EAAQ,EAAG,GAAKkI,EAAI,EAAI,GAAK64B,EAI9G,IAHA,IAAIvmD,GAAK,EACP0tB,EAAoD,EAAhD3U,KAAKE,IAAI,EAAGF,KAAKisJ,MAAMlhK,EAAO0hB,GAAS+gC,IAC3CE,EAAQ,IAAIlnB,MAAM7R,KACX1tB,EAAI0tB,GACX+4B,EAAMzmD,GAAKwlB,EAAQxlB,EAAIumD,EAEzB,OAAOE,CACT,CCNA,SAAS,GAA2BviC,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,GAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,GAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,GAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAiBlL,SAAS2P,GAASjpG,GAChB,OAAQA,GAAWA,EAAO/+H,OAEJ,IAAlB++H,EAAO/+H,OAAe++H,EAAO,IAdjBv8H,EAc+Bu8H,EAbxC,SAAU30H,GAIf,IAHA,IAAI2jB,EAAIvrB,EAAExC,OACNK,EAAI,EACNwF,EAAIif,OAAOtiB,EAAE,GAAG4H,IACX/J,EAAI0tB,IAAK1tB,EACdwF,GAAK,IAAMrD,EAAEnC,GAAG+J,GAElB,OAAOvE,CACT,GAGmC,WACjC,MAAO,EACT,EAdF,IAAkBrD,CAelB,CACA,SAASylO,GAAY77K,EAAI4yE,EAAOkpG,GAC9B,OAAOA,GAAM97K,GAAO4yE,EAAa,IAAMA,EAAX,GAC9B,CACA,IAAI,GAAO,WAAiB,EACxBmpG,GAAU,CACZ1+N,KAAM,GACNkH,IAAK,GACL2oN,IAAK,GACLj1L,IAAK,GAEH+jM,GAAe,CACjBzoM,OAAQ,CACNl2B,KAAM,SAAcyL,GAClB,OAAOA,EAAEw4H,KAAKrG,OAAQ,CACxB,EACA/lI,MAAO,SAAe4T,GACpB,OAAOA,EAAEw4H,KAAK7oH,KAAK8a,QACrB,EACA0E,KAAM,GAERpU,MAAO,CACL3uB,MAAO,SAAe4T,GACpB,OAAOA,EAAEw4H,KAAK/8C,GAChB,GAEF03I,UAAW,CACT/mO,MAAO,SAAe4T,GACpB,OAAOA,EAAEozN,QAAUpzN,EAAEm1F,KACvB,GAEFi+H,QAAS,CACPhnO,MAAO,SAAe4T,GACpB,OAAOA,EAAEozN,OACX,GAEFj+H,MAAO,CACL/oG,MAAO,SAAe4T,GACpB,OAAOA,EAAEm1F,KACX,GAEF9+E,IAAK,CACH9hB,KAAM,SAAcyL,GAClB,OAAOA,EAAEqW,IAAM,CACjB,EACAjqB,MAAO,SAAe4T,GACpB,OAAOA,EAAEqW,GACX,EACA5a,IAAK,SAAauE,EAAG9D,GACnB,OAAO8D,EAAEqW,MAAQna,CACnB,EACAkoN,IAAK,SAAapkN,EAAG9D,GACnB,OAAO8D,EAAEqW,KAAOna,CAClB,GAEF0tC,QAAS,CACPr1C,KAAM,SAAcyL,GAClB,OAAOA,EAAE4pC,QAAU,CACrB,EACAx9C,MAAO,SAAe4T,GACpB,OAAOA,EAAEm1F,MAAQn1F,EAAE4pC,aAAUlpB,CAC/B,EACAjlB,IAAK,SAAauE,EAAG9D,GACnB,OAAO8D,EAAE4pC,SAAW1tC,CACtB,EACAkoN,IAAK,SAAapkN,EAAG9D,GACnB,OAAO8D,EAAE4pC,SAAW1tC,CACtB,GAEF6xN,KAAM,CACJx5N,KAAM,SAAcyL,GAClB,OAAOA,EAAE+tN,KAAO,CAClB,EACA3hO,MAAO,SAAe4T,GACpB,OAAOA,EAAEm1F,MAAQn1F,EAAE+tN,UAAOrtM,CAC5B,EACAjlB,IAAK,SAAauE,EAAG9D,GACnB,OAAO8D,EAAEqzN,OAASn3N,EAAI8D,EAAE+tN,KAAM/tN,EAAE+tN,MAAQ/tN,EAAEqzN,OAASrzN,EAAEm1F,KACvD,EACAivH,IAAK,SAAapkN,EAAG9D,GACnB,OAAO8D,EAAEqzN,OAASn3N,EAAI8D,EAAE+tN,KAAM/tN,EAAE+tN,MAAQ/tN,EAAEm1F,MAAQn1F,EAAEqzN,OAASrzN,EAAEm1F,MAAQn1F,EAAE+tN,IAC3E,GAEFuF,QAAS,CACPlnO,MAAO,SAAe4T,GACpB,OAAOA,EAAEm1F,MAAQn1F,EAAE+tN,UAAOrtM,CAC5B,EACA6yM,IAAK,CAAC,QACNpkM,IAAK,GAEP6+L,SAAU,CACRz5N,KAAM,SAAcyL,GAClB,OAAOA,EAAEwzN,IAAM,CACjB,EACApnO,MAAO,SAAe4T,GACpB,OAAOA,EAAEm1F,MAAQ,EAAIn1F,EAAEwzN,KAAOxzN,EAAEm1F,MAAQ,QAAKz0E,CAC/C,EACAjlB,IAAK,SAAauE,EAAG9D,GACnB,OAAO8D,EAAEwzN,KAAOxzN,EAAEqzN,QAAUn3N,EAAI8D,EAAE+tN,KACpC,EACA3J,IAAK,SAAapkN,EAAG9D,GACnB,OAAO8D,EAAEwzN,KAAOxzN,EAAEqzN,QAAUn3N,EAAI8D,EAAE+tN,KACpC,EACAwF,IAAK,CAAC,QACNpkM,IAAK,GAEPskM,UAAW,CACTrnO,MAAO,SAAe4T,GACpB,OAAOA,EAAEm1F,MAAQ,EAAIn1F,EAAEwzN,IAAMxzN,EAAEm1F,WAAQz0E,CACzC,EACA6yM,IAAK,CAAC,YACNpkM,IAAK,GAEPogM,MAAO,CACLnjO,MAAO,SAAe4T,GACpB,OAAOA,EAAEm1F,MAAQ,EAAIjxF,KAAK2C,KAAK7G,EAAEwzN,KAAOxzN,EAAEm1F,MAAQ,SAAMz0E,CAC1D,EACA6yM,IAAK,CAAC,YACNpkM,IAAK,GAEPukM,OAAQ,CACNtnO,MAAO,SAAe4T,GACpB,OAAOA,EAAEm1F,MAAQ,EAAIjxF,KAAK2C,KAAK7G,EAAEwzN,IAAMxzN,EAAEm1F,YAASz0E,CACpD,EACA6yM,IAAK,CAAC,YACNpkM,IAAK,GAEPwkM,OAAQ,CACNvnO,MAAO,SAAe4T,GACpB,OAAOA,EAAEm1F,MAAQ,EAAIjxF,KAAK2C,KAAK7G,EAAEwzN,KAAOxzN,EAAEm1F,OAASn1F,EAAEm1F,MAAQ,UAAOz0E,CACtE,EACA6yM,IAAK,CAAC,YACNpkM,IAAK,GAEPykM,SAAU,CACRxnO,MAAO,SAAe4T,GACpB,OAAOA,EAAEw4H,KAAK7oH,KAAKikN,SAAS5zN,EAAE/T,IAChC,EACAsnO,IAAK,CAAC,UACNpkM,IAAK,GAEP0kM,IAAK,CACHznO,MAAO,SAAe4T,GACpB,OAAOA,EAAEw4H,KAAK7oH,KAAKkkN,IAAI7zN,EAAE/T,IAC3B,EACAsnO,IAAK,CAAC,UACNpkM,IAAK,GAEP2kM,IAAK,CACH1nO,MAAO,SAAe4T,GACpB,OAAOA,EAAEw4H,KAAK7oH,KAAKmkN,IAAI9zN,EAAE/T,IAC3B,EACAsnO,IAAK,CAAC,UACNpkM,IAAK,GAEPgW,OAAQ,CACN/4C,MAAO,SAAe4T,GACpB,OAAOA,EAAEw4H,KAAK7oH,KAAKokN,GAAG/zN,EAAE/T,IAC1B,EACAsnO,IAAK,CAAC,UACNpkM,IAAK,GAEP6kM,GAAI,CACF5nO,MAAO,SAAe4T,GACpB,OAAOA,EAAEw4H,KAAK7oH,KAAKqkN,GAAGh0N,EAAE/T,IAC1B,EACAsnO,IAAK,CAAC,UACNpkM,IAAK,GAEP8kM,GAAI,CACF7nO,MAAO,SAAe4T,GACpB,OAAOA,EAAEw4H,KAAK7oH,KAAKskN,GAAGj0N,EAAE/T,IAC1B,EACAsnO,IAAK,CAAC,UACNpkM,IAAK,GAEPhrB,IAAK,CACH5P,KAAM,SAAcyL,GAClB,OAAOA,EAAEmE,SAAMuc,CACjB,EACAt0B,MAAO,SAAe4T,GACpB,OAAOA,EAAEmE,IAAM+H,OAAOC,MAAMnM,EAAEmE,KAAOnE,EAAEw4H,KAAK7oH,KAAKxL,IAAInE,EAAE/T,KAAO+T,EAAEmE,GAClE,EACA1I,IAAK,SAAauE,EAAG9D,IACfA,EAAI8D,EAAEmE,UAAiBuc,IAAV1gB,EAAEmE,OAAmBnE,EAAEmE,IAAMjI,EAChD,EACAkoN,IAAK,SAAapkN,EAAG9D,GACfA,GAAK8D,EAAEmE,MAAKnE,EAAEmE,IAAMq6B,IAC1B,EACA+0L,IAAK,CAAC,UACNpkM,IAAK,GAEP/qB,IAAK,CACH7P,KAAM,SAAcyL,GAClB,OAAOA,EAAEoE,SAAMsc,CACjB,EACAt0B,MAAO,SAAe4T,GACpB,OAAOA,EAAEoE,IAAM8H,OAAOC,MAAMnM,EAAEoE,KAAOpE,EAAEw4H,KAAK7oH,KAAKvL,IAAIpE,EAAE/T,KAAO+T,EAAEoE,GAClE,EACA3I,IAAK,SAAauE,EAAG9D,IACfA,EAAI8D,EAAEoE,UAAiBsc,IAAV1gB,EAAEoE,OAAmBpE,EAAEoE,IAAMlI,EAChD,EACAkoN,IAAK,SAAapkN,EAAG9D,GACfA,GAAK8D,EAAEoE,MAAKpE,EAAEoE,IAAMo6B,IAC1B,EACA+0L,IAAK,CAAC,UACNpkM,IAAK,GAEP+kM,OAAQ,CACN3/N,KAAM,SAAcyL,GAClB,OAAOA,EAAEk0N,YAASxzM,CACpB,EACAt0B,MAAO,SAAe4T,GACpB,OAAOA,EAAEk0N,QAAUl0N,EAAEw4H,KAAK7oH,KAAKukN,OAAOl0N,EAAE/T,IAC1C,EACAwP,IAAK,SAAauE,EAAG9D,EAAGlO,GAClBkO,EAAI8D,EAAEmE,MAAKnE,EAAEk0N,OAASlmO,EAC5B,EACAo2N,IAAK,SAAapkN,EAAG9D,GACfA,GAAK8D,EAAEmE,MAAKnE,EAAEk0N,YAASxzM,EAC7B,EACA6yM,IAAK,CAAC,MAAO,UACbpkM,IAAK,GAEPglM,OAAQ,CACN5/N,KAAM,SAAcyL,GAClB,OAAOA,EAAEm0N,YAASzzM,CACpB,EACAt0B,MAAO,SAAe4T,GACpB,OAAOA,EAAEm0N,QAAUn0N,EAAEw4H,KAAK7oH,KAAKwkN,OAAOn0N,EAAE/T,IAC1C,EACAwP,IAAK,SAAauE,EAAG9D,EAAGlO,GAClBkO,EAAI8D,EAAEoE,MAAKpE,EAAEm0N,OAASnmO,EAC5B,EACAo2N,IAAK,SAAapkN,EAAG9D,GACfA,GAAK8D,EAAEoE,MAAKpE,EAAEm0N,YAASzzM,EAC7B,EACA6yM,IAAK,CAAC,MAAO,UACbpkM,IAAK,IAGLilM,GAAoB3yN,OAAOopB,KAAKqoM,IAAc14N,QAAO,SAAUwV,GACjE,MAAa,cAANA,CACT,IAYA,SAASqkN,GAAcn9K,EAAIhrD,GACzB,OAAOgnO,GAAah8K,GAAIhrD,EAC1B,CACA,SAASooO,GAAalsN,EAAG8E,GACvB,OAAO9E,EAAE+mB,IAAMjiB,EAAEiiB,GACnB,CAeA,SAAS56B,KACP,IAAI7J,EAAQT,KACZA,KAAKkrG,MAAQ,EACblrG,KAAKmpO,QAAU,EACfnpO,KAAKsqO,KAAKliO,SAAQ,SAAU6kD,GAC1B,OAAOA,EAAG3iD,KAAK7J,EACjB,GACF,CACA,SAAS,GAAIwR,EAAGlO,GACd,IAAI+6D,EAAS9+D,KACJ,MAALiS,GAAmB,KAANA,EAIbA,GAAMA,MACRjS,KAAKkrG,MACPlrG,KAAKsqO,KAAKliO,SAAQ,SAAU6kD,GAC1B,OAAOA,EAAGz7C,IAAIstD,EAAQ7sD,EAAGlO,EAC3B,OAPI/D,KAAKmpO,OAQX,CACA,SAAShP,GAAIloN,EAAGlO,GACd,IAAI+7N,EAAS9/N,KACJ,MAALiS,GAAmB,KAANA,EAIbA,GAAMA,MACRjS,KAAKkrG,MACPlrG,KAAKsqO,KAAKliO,SAAQ,SAAU6kD,GAC1B,OAAOA,EAAGktK,IAAI2F,EAAQ7tN,EAAGlO,EAC3B,OAPI/D,KAAKmpO,OAQX,CACA,SAAS,GAAIplO,GACX,IAAIwmO,EAASvqO,KAIb,OAHAA,KAAKwqO,KAAKpiO,SAAQ,SAAU6kD,GAC1B,OAAOlpD,EAAEkpD,EAAG/pC,KAAO+pC,EAAG9qD,MAAMooO,EAC9B,IACOxmO,CACT,CACA,SAAS0mO,GAAgBC,EAAK7qG,GAC5B,IAAI79H,EAAM69H,GAASn7F,GACjBqoB,EAvDJ,SAAiB29K,GACf,IAAI15M,EAAM,CAAC,EAWX,OAVA05M,EAAItiO,SAAQ,SAAU+V,GACpB,OAAO6S,EAAI7S,EAAElc,MAAQkc,CACvB,IAOAusN,EAAItiO,SANU,SAASuiO,EAAQxsN,GACxBA,EAAEmrN,KACPnrN,EAAEmrN,IAAIlhO,SAAQ,SAAUy4B,GACjB7P,EAAI6P,IAAM8pM,EAAQ35M,EAAI6P,GAAOooM,GAAapoM,KACjD,GACF,IAEOrpB,OAAOgpB,OAAOxP,GAAKze,KAAK83N,GACjC,CA0CUhjM,CAAQqjM,GACdxnN,EAAMwnN,EAAI1jN,QAAQzU,KAAK83N,IACzB,SAASO,EAAIr8F,GACXvuI,KAAKsqO,KAAOv9K,EACZ/sD,KAAKwqO,KAAOtnN,EACZljB,KAAKuuI,KAAOA,EACZvuI,KAAKsK,MACP,CASA,OARAsgO,EAAI1qO,UAAUoK,KAAOA,GACrBsgO,EAAI1qO,UAAUsR,IAAM,GACpBo5N,EAAI1qO,UAAUi6N,IAAMA,GACpByQ,EAAI1qO,UAAUgC,IAAM,GACpB0oO,EAAI1qO,UAAU8B,IAAMA,EACpB4oO,EAAIhrG,OAAS8qG,EAAI15M,KAAI,SAAUi8B,GAC7B,OAAOA,EAAG/pC,GACZ,IACO0nN,CACT,CACA,SAASC,GAAWhqM,GAClB7gC,KAAKwpD,KAAO3oB,EAAMg/F,GAAMh/F,GAAO84L,GAC/B35N,KAAKk2D,OACP,CArFA,GAAG3iD,QAAO,QAAmB42N,IAAoB,CAAC,cAAc/hO,SAAQ,SAAUy4B,GAChFooM,GAAapoM,GATf,SAAiBA,EAAK1+B,GACpB,OAAO,SAAU+gB,GACf,OAAO4yB,GAAO,CACZ7zC,KAAM4+B,EACN3d,IAAKA,GAAO2d,GACXmoM,GAAS7mO,EACd,CACF,CAEsB85L,CAAQp7J,EAAKooM,GAAapoM,GAChD,IAoFA,IAAIiqM,GAAcD,GAAW3qO,UA4H7B,SAAS6qO,GAAUzpN,GACjB0gN,GAAUpgO,KAAK5B,KAAM,KAAMshB,GAC3BthB,KAAKgrO,MAAQ,GACbhrO,KAAKirO,MAAQ,GACbjrO,KAAKkrO,MAAQ,EACblrO,KAAKmrO,MAAQ,EACbnrO,KAAKorO,OAAQ,EACbprO,KAAKqrO,QAAS,EAEdrrO,KAAKsrO,MAAQ,GACbtrO,KAAKurO,QAAU,GAEfvrO,KAAKwrO,UAAY,GACjBxrO,KAAKyrO,YAAa,EAClBzrO,KAAK0rO,QAAU,KACf1rO,KAAK2rO,MAAQ,KAEb3rO,KAAK4rO,QAAU,KACf5rO,KAAK6rO,SAAW,IAClB,CA9IAf,GAAY50K,MAAQ,WAClBl2D,KAAK8rO,KAAO,GACZ9rO,KAAK+rO,KAAO,GACZ/rO,KAAKgsO,KAAO,KACZhsO,KAAK80M,KAAO,KACZ90M,KAAKisO,GAAK,IACZ,EACAnB,GAAYt5N,IAAM,SAAUS,GAC1BjS,KAAK8rO,KAAKvrO,KAAK0R,EACjB,EACA64N,GAAY3Q,IAAM,SAAUloN,GAC1BjS,KAAK+rO,KAAKxrO,KAAK0R,EACjB,EACA64N,GAAYtqM,OAAS,WAEnB,GADAxgC,KAAK80M,KAAO,KACa,IAArB90M,KAAK+rO,KAAKlrO,OAAc,OAAOb,KAAK8rO,KACxC,IAOI5qO,EAAGgG,EAAG+K,EAPNkM,EAAIne,KAAK8rO,KACX5sN,EAAIlf,KAAK+rO,KACTrlO,EAAI1G,KAAKwpD,KACT56B,EAAIzQ,EAAEtd,OACNkV,EAAImJ,EAAEre,OACNoK,EAAIw1B,MAAM7R,EAAI7Y,GACdib,EAAM,CAAC,EAIT,IAAK9vB,EAAI,EAAGA,EAAI6U,IAAK7U,EACnB8vB,EAAItqB,EAAEwY,EAAEhe,KAAO,EAEjB,IAAKA,EAAI,EAAGgG,EAAI,EAAGhG,EAAI0tB,IAAK1tB,EACtB8vB,EAAItqB,EAAEuL,EAAIkM,EAAEjd,KACd8vB,EAAItqB,EAAEuL,IAAM,EAEZhH,EAAE/D,KAAO+K,EAIb,OADAjS,KAAK+rO,KAAO,GACL/rO,KAAK8rO,KAAO7gO,CACrB,EAIA6/N,GAAYnB,SAAW,SAAU3nO,GAM/B,IALA,IAIE8b,EAJE7L,EAAIjS,KAAKwgC,SACXxP,EAAM,CAAC,EACLpC,EAAI3c,EAAEpR,OACRiwB,EAAQ,IAEDlC,GAAK,GAEP,GAAeoC,EADpBlT,EAAI9b,EAAIiQ,EAAE2c,IAAM,MAEdoC,EAAIlT,GAAK,IACPgT,GAGN,OAAOA,CACT,EACAg6M,GAAYze,OAAS,SAAUrqN,GAC7B,GAAIhC,KAAK80M,OAAS9yM,IAAQhC,KAAKgsO,KAAM,CACnC,IAAI/5N,EAAIjS,KAAKwgC,SACXt/B,EAAI25M,GAAY5oM,EAAGjQ,GACrBhC,KAAKgsO,KAAO,CAAC/5N,EAAE/Q,EAAE,IAAK+Q,EAAE/Q,EAAE,KAC1BlB,KAAK80M,KAAO9yM,CACd,CACA,OAAOhC,KAAKgsO,IACd,EACAlB,GAAYb,OAAS,SAAUjoO,GAC7B,OAAOhC,KAAKqsN,OAAOrqN,GAAK,IAAM,CAAC,CACjC,EACA8oO,GAAYZ,OAAS,SAAUloO,GAC7B,OAAOhC,KAAKqsN,OAAOrqN,GAAK,IAAM,CAAC,CACjC,EACA8oO,GAAY5wN,IAAM,SAAUlY,GAC1B,IAAI+T,EAAI/V,KAAKqsN,OAAOrqN,GAAK,GACzB,OAAY,MAAL+T,EAAY/T,EAAI+T,QAAK0gB,CAC9B,EACAq0M,GAAY3wN,IAAM,SAAUnY,GAC1B,IAAI+T,EAAI/V,KAAKqsN,OAAOrqN,GAAK,GACzB,OAAY,MAAL+T,EAAY/T,EAAI+T,QAAK0gB,CAC9B,EACAq0M,GAAYoB,SAAW,SAAUlqO,GAK/B,OAJIhC,KAAK80M,OAAS9yM,GAAQhC,KAAKisO,KAC7BjsO,KAAKisO,GAAKhI,GAAUjkO,KAAKwgC,SAAUx+B,GACnChC,KAAK80M,KAAO9yM,GAEPhC,KAAKisO,EACd,EACAnB,GAAYf,GAAK,SAAU/nO,GACzB,OAAOhC,KAAKksO,SAASlqO,GAAK,EAC5B,EACA8oO,GAAYhB,GAAK,SAAU9nO,GACzB,OAAOhC,KAAKksO,SAASlqO,GAAK,EAC5B,EACA8oO,GAAYd,GAAK,SAAUhoO,GACzB,OAAOhC,KAAKksO,SAASlqO,GAAK,EAC5B,EACA8oO,GAAYl7M,GAAK,SAAU5tB,GAKzB,OAJIhC,KAAK80M,OAAS9yM,GAAQhC,KAAKmsO,MAC7BnsO,KAAKmsO,IAAM1H,GAAYzkO,KAAKwgC,SAAU,IAAM,IAAMx+B,GAClDhC,KAAK80M,KAAO9yM,GAEPhC,KAAKmsO,GACd,EACArB,GAAYlB,IAAM,SAAU5nO,GAC1B,OAAOhC,KAAK4vB,GAAG5tB,GAAK,EACtB,EACA8oO,GAAYjB,IAAM,SAAU7nO,GAC1B,OAAOhC,KAAK4vB,GAAG5tB,GAAK,EACtB,EAoCA+oO,GAAUhI,WAAa,CACrB,KAAQ,YACR,SAAY,CACV,WAAa,EACb,SAAW,GAEb,OAAU,CAAC,CACT,KAAQ,UACR,KAAQ,QACR,OAAS,GACR,CACD,KAAQ,MACR,KAAQ,OACR,OAAS,EACT,OAAUoH,IACT,CACD,KAAQ,SACR,KAAQ,QACR,MAAQ,EACR,OAAS,GACR,CACD,KAAQ,KACR,KAAQ,SACR,MAAQ,EACR,OAAS,GACR,CACD,KAAQ,OACR,KAAQ,UACR,SAAW,GACV,CACD,KAAQ,QACR,KAAQ,UACR,SAAW,GACV,CACD,KAAQ,MACR,KAAQ,WAGZ,GAASY,GAAW/I,GAAW,CAC7BluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAAIuR,EAASpsO,KACTqsO,EAAOrsO,KACTkjB,EAAM23M,EAAM0F,KAAK1F,EAAMwF,UAAYxF,EAAMyF,WACzClG,EAAM1zL,EAAE00L,WAmCV,OAlCAiR,EAAK3Q,MAAQx4M,EAAIw4M,MACb2Q,EAAKlqO,QAAUi4N,GAAOS,EAAMO,SAASiR,EAAKT,SAAS,KACrDS,EAAKV,MAAQU,EAAKlqO,MAClBkqO,EAAKlqO,MAAQi4N,EAAMiS,EAAK/hO,KAAKo8B,GAAKlvB,OAAO0wB,OAAO,MAChD2yL,EAAMsD,MAAMtD,EAAMuF,QAAQ,SAAUr8N,GAClC,OAAOsoO,EAAK76N,IAAIzN,EAClB,MAEAsoO,EAAKlqO,MAAQkqO,EAAKlqO,OAASkqO,EAAK/hO,KAAKo8B,GACrCm0L,EAAMsD,MAAMtD,EAAMgE,KAAK,SAAU96N,GAC/B,OAAOsoO,EAAKlS,IAAIp2N,EAClB,IACA82N,EAAMsD,MAAMtD,EAAM+D,KAAK,SAAU76N,GAC/B,OAAOsoO,EAAK76N,IAAIzN,EAClB,KAIFmf,EAAI83M,SAASqR,EAAKR,UAGlBQ,EAAKjB,OAAmB,IAAX1kM,EAAE4lM,KAIX5lM,EAAE9R,OAASy3M,EAAKf,MAAMzqO,OAAS,IACjCwrO,EAAKjB,OAAQ,EACbiB,EAAKz3M,SAEHimM,EAAMxf,SAAWgxB,EAAKjB,OACxBloN,EAAIm4L,OAAM,GAAM0lB,UAAS,WACvB,OAAOqL,EAAO/wB,OAChB,IAEKgxB,EAAK/5M,QAAQpP,EACtB,EACA0R,MAAO,WACL,IAAIy3M,EAAOrsO,KACTohC,EAAOirM,EAAKlqO,MACZoqO,EAAOF,EAAKd,QACZiB,EAAOD,EAAKv7M,KAAI,WACd,MAAO,CAAC,CACV,IACApC,EAAI29M,EAAK1rO,OAGX,SAAS4rO,EAAQ74I,GACf,IAAI/yD,EAAK3/B,EAAG6C,EAAGkO,EACf,IAAK4uB,KAAO+yD,EAEV,IADA7vF,EAAI6vF,EAAM/yD,GAAK65L,MACVx5N,EAAI,EAAGA,EAAI0tB,IAAK1tB,EACnBsrO,EAAKtrO,GAAG+Q,EAAIlO,EAAEwoO,EAAKrrO,KAAO+Q,CAGhC,CACAw6N,EAAQJ,EAAKV,OACbc,EAAQrrM,GAGR,SAASq1K,EAASj0K,EAAMk4L,EAAO1yN,GAC7B,IAAI/F,EAAOsqO,EAAKvkO,GACdiK,EAAIu6N,EAAKxkO,KACX,IAAK,IAAItB,KAAKuL,EAAG,CACf,IAAIu3C,EAAOhnB,EAAOA,EAAO,IAAM97B,EAAIA,EACnCg0N,EAAMz4N,GAAQgQ,EAAEvL,GACZsB,EAAQ4mB,EAAG6nL,EAASjtJ,EAAMkxK,EAAO1yN,GAAiBo5B,EAAKooB,IAAO6iL,EAAK99F,KAAK/kF,EAAMkxK,EACpF,CACF,CACAjkB,CAAS,GAAI,CAAC,EAAG,EACnB,EACAnsM,KAAM,SAAco8B,GAElB,IAAIgmM,EAAS1sO,KAAK4rO,QAAU,GAC1Be,EAAU3sO,KAAK6rO,SAAW,GAC1Be,EAAW,CAAC,EACd,SAASC,EAAW7qO,GAKlB,IAJA,IAGEqB,EAHEu8H,EAAS,GAAM43E,GAAex1M,IAChC4sB,EAAIgxG,EAAO/+H,OACTK,EAAI,EAEDA,EAAI0tB,IAAK1tB,EACT0rO,EAASvpO,EAAIu8H,EAAO1+H,MACvB0rO,EAASvpO,GAAK,EACdqpO,EAAOnsO,KAAK8C,GAGlB,CAGArD,KAAKsrO,MAAQ,GAAM5kM,EAAEomM,SACrB9sO,KAAKurO,QAAUvrO,KAAKsrO,MAAMt6M,KAAI,SAAUjL,GACtC,IAAIgnN,EAAQx1B,GAAaxxL,GAGzB,OAFA8mN,EAAW9mN,GACX4mN,EAAQpsO,KAAKwsO,GACNA,CACT,IACA/sO,KAAKgtO,QAAUtmM,EAAE7F,IAAM6F,EAAE7F,IAAMgoM,GAAS7oO,KAAKsrO,OAG7CtrO,KAAKyrO,YAAa,EAClBzrO,KAAK0rO,QAAU,GACf1rO,KAAKwrO,UAAY,GACjB,IAKI3rG,EAAO5yE,EAAIl3C,EAAGk3N,EAAOC,EAAShsO,EAL9B0+H,EAASl5F,EAAEk5F,QAAU,CAAC,MACxB7yE,EAAMrmB,EAAEqmB,KAAO,CAAC,SAChBg8K,EAAKriM,EAAEqiM,IAAM,GACbn6M,EAAIgxG,EAAO/+H,OACXmwB,EAAM,CAAC,EAKT,IAHIpC,IAAMm+B,EAAIlsD,QACZ,GAAM,iDAEHK,EAAI,EAAGA,EAAI0tB,IAAK1tB,EACnB2+H,EAAQD,EAAO1+H,GACf+rD,EAAKF,EAAI7rD,GACI,MAAT2+H,GAAwB,UAAP5yE,GACnB,GAAM,mCAGRigL,EAAUpE,GAAY77K,EADtBggL,EAAQ11B,GAAa13E,GACYkpG,EAAG7nO,IACpCyrO,EAAQpsO,KAAK2sO,GACF,UAAPjgL,IAIJl3C,EAAIib,EAAIi8M,MAENJ,EAAWhtG,IACX9pH,EAAIib,EAAIi8M,GAAS,IACfptG,MAAQA,EACV7/H,KAAKwrO,UAAUjrO,KAAKwV,IAEX,UAAPk3C,IAAgBjtD,KAAKyrO,YAAa,GACtC11N,EAAExV,KAAK6pO,GAAcn9K,EAAIigL,KAXvBltO,KAAK0rO,QAAQnrO,KAAK2sO,GAgBtB,OAHAltO,KAAKwrO,UAAYxrO,KAAKwrO,UAAUx6M,KAAI,SAAUjb,GAC5C,OAAO00N,GAAgB10N,EAAGA,EAAE8pH,MAC9B,IACOroH,OAAO0wB,OAAO,KACvB,EAIA8kM,QAASnE,KACTt6F,KAAM,SAAc1tG,EAAK98B,GACvB,IAAIwqI,EAAOvuI,KAAKmC,MAAM0+B,GAWtB,OAVK0tG,EAGmB,IAAbA,EAAK/8C,KAAaxxF,KAAKorO,OAAS78F,EAAKmtF,MAAQ17N,KAAK07N,OAC3DntF,EAAKmtF,MAAQ17N,KAAK07N,MAClB17N,KAAKgrO,MAAMhrO,KAAKkrO,SAAW38F,GAClBA,EAAKmtF,MAAQ17N,KAAK07N,QAC3BntF,EAAKmtF,MAAQ17N,KAAK07N,MAClB17N,KAAKirO,MAAMjrO,KAAKmrO,SAAW58F,IAP3BA,EAAOvuI,KAAKmC,MAAM0+B,GAAO7gC,KAAKmtO,QAAQtsM,EAAK98B,GAC3C/D,KAAKgrO,MAAMhrO,KAAKkrO,SAAW38F,GAQtBA,CACT,EACA4+F,QAAS,SAAiBtsM,EAAK98B,GAC7B,IAAIwqI,EAAO,CACT1tG,IAAKA,EACL2wD,IAAK,EACLk5I,IAAK,KACLhQ,MAAO16N,KAAKotO,SAASrpO,EAAG/D,KAAK2rO,OAAS3rO,KAAK2rO,MAAM9qM,IACjD66L,MAAO17N,KAAK07N,MACZxzF,OAAO,GAET,IAAKloI,KAAKyrO,WAAY,CACpB,IAAI4B,EAAWrtO,KAAKwrO,UAClB58M,EAAIy+M,EAASxsO,OACf0tI,EAAKm8F,IAAMjqM,MAAM7R,GACjB,IAAK,IAAI1tB,EAAI,EAAGA,EAAI0tB,IAAK1tB,EACvBqtI,EAAKm8F,IAAIxpO,GAAK,IAAImsO,EAASnsO,GAAGqtI,EAElC,CAIA,OAHIA,EAAKrG,QACPqG,EAAK7oH,KAAO,IAAImlN,IAEXt8F,CACT,EACA6+F,SAAU,SAAkBrpO,EAAGqa,GAK7B,IAJA,IAAI60M,EAAQjzN,KAAKurO,QACfgB,EAAOvsO,KAAKsrO,MACZ18M,EAAI29M,EAAK1rO,OACToK,EAAI,CAAC,EACE/J,EAAI,EAAGA,EAAI0tB,IAAK1tB,EACvB+J,EAAEgoN,EAAM/xN,IAAMqrO,EAAKrrO,GAAG6C,GAExB,OAAOqa,EAAIwH,GAAQxH,EAAEs8M,MAAOzvN,GAAK,GAAOA,EAC1C,EACAowM,MAAO,WACL,IAAIznH,EAAQ5zF,KAAKmC,MACjB,IAAK,IAAI+jG,KAAStS,EACS,IAArBA,EAAMsS,GAAO1U,YACRoC,EAAMsS,EAGnB,EAEA10F,IAAK,SAAazN,GAChB,IAAI88B,EAAM7gC,KAAKgtO,QAAQjpO,GACrBwqI,EAAOvuI,KAAKuuI,KAAK1tG,EAAK98B,GAExB,GADAwqI,EAAK/8C,KAAO,GACRxxF,KAAKyrO,WAAT,CACIl9F,EAAKrG,OAAOqG,EAAK7oH,KAAKlU,IAAIzN,GAE9B,IADA,IAAI2mO,EAAMn8F,EAAKm8F,IACNxpO,EAAI,EAAG0tB,EAAI87M,EAAI7pO,OAAQK,EAAI0tB,IAAK1tB,EACvCwpO,EAAIxpO,GAAGsQ,IAAIk5N,EAAIxpO,GAAGc,IAAI+B,GAAIA,EAJD,CAM7B,EACAo2N,IAAK,SAAap2N,GAChB,IAAI88B,EAAM7gC,KAAKgtO,QAAQjpO,GACrBwqI,EAAOvuI,KAAKuuI,KAAK1tG,EAAK98B,GAExB,GADAwqI,EAAK/8C,KAAO,GACRxxF,KAAKyrO,WAAT,CACIl9F,EAAKrG,OAAOqG,EAAK7oH,KAAKy0M,IAAIp2N,GAE9B,IADA,IAAI2mO,EAAMn8F,EAAKm8F,IACNxpO,EAAI,EAAG0tB,EAAI87M,EAAI7pO,OAAQK,EAAI0tB,IAAK1tB,EACvCwpO,EAAIxpO,GAAGi5N,IAAIuQ,EAAIxpO,GAAGc,IAAI+B,GAAIA,EAJD,CAM7B,EACAupO,UAAW,SAAmB/+F,GAC5B,IAAImsF,EAAQnsF,EAAKmsF,MACf6S,EAASvtO,KAAK0rO,QAGZn9F,EAAKrG,OACPqG,EAAK7oH,KAAK8a,SAIZ,IAAK,IAAIt/B,EAAI,EAAG0tB,EAAI2+M,EAAO1sO,OAAQK,EAAI0tB,IAAK1tB,EAC1Cw5N,EAAM6S,EAAOrsO,IAAMqtI,EAAK/8C,IAE1B,IAAKxxF,KAAKyrO,WAER,IADA,IAAIf,EAAMn8F,EAAKm8F,IACN/pO,EAAK,EAAGu3C,EAAKwyL,EAAI7pO,OAAQF,EAAKu3C,IAAMv3C,EAC3C+pO,EAAI/pO,GAAIuB,IAAIw4N,GAGhB,OAAOA,CACT,EACApoM,QAAS,SAAiBpP,GACxB,IAOIqrH,EAAM1tG,EAAK3/B,EAAG0tB,EAPd4+M,EAAOxtO,KAAKgrO,MACdyC,EAAOztO,KAAKirO,MACZ31M,EAAOt1B,KAAK2rO,MACZW,EAAOtsO,KAAKorO,MACZ55N,EAAM0R,EAAI1R,IACV2oN,EAAMj3M,EAAIi3M,IACVC,EAAMl3M,EAAIk3M,IAEZ,GAAI9kM,EAAM,IAAKuL,KAAOvL,EACpBi5G,EAAOj5G,EAAKuL,GACPyrM,IAAQ/9F,EAAK/8C,KAAK2oI,EAAI55N,KAAKguI,EAAKmsF,OAEvC,IAAKx5N,EAAI,EAAG0tB,EAAI5uB,KAAKkrO,MAAOhqO,EAAI0tB,IAAK1tB,EACnCsQ,EAAIjR,KAAKP,KAAKstO,UAAUE,EAAKtsO,KAC7BssO,EAAKtsO,GAAK,KAGZ,IAAKA,EAAI,EAAG0tB,EAAI5uB,KAAKmrO,MAAOjqO,EAAI0tB,IAAK1tB,GAErB,KADdqtI,EAAOk/F,EAAKvsO,IACNswF,KAAa86I,EAAOnS,EAAMC,GAAK75N,KAAKP,KAAKstO,UAAU/+F,IACzDk/F,EAAKvsO,GAAK,KAKZ,OAFAlB,KAAKkrO,MAAQlrO,KAAKmrO,MAAQ,EAC1BnrO,KAAK2rO,MAAQ,KACNzoN,CACT,IAaF,SAASwqN,GAAIpsN,GACX0gN,GAAUpgO,KAAK5B,KAAM,KAAMshB,EAC7B,CAyHA,SAASqsN,GAAWvU,EAAQ/nM,EAAQg4F,GAClC,IAAI95D,EAAI6pK,EACJwU,EAAQv8M,GAAU,GACpBy6M,EAAOziH,GAAS,GAChB8wG,EAAM,CAAC,EACPx9K,EAAM,EACR,MAAO,CACLnrC,IAAK,SAAazN,GAChB,OAAO+nO,EAAKvrO,KAAKwD,EACnB,EACAoP,OAAQ,SAAgBpP,GACtB,OAAOo2N,EAAI5qK,EAAExrD,MAAQ44C,CACvB,EACArY,KAAM,WACJ,OAAOspM,EAAM/sO,MACf,EACA6kB,KAAM,SAAclT,EAASq7N,GAe3B,OAdIlxL,IACFixL,EAAQA,EAAMr9N,QAAO,SAAUxM,GAC7B,OAAQo2N,EAAI5qK,EAAExrD,GAChB,IACAo2N,EAAM,CAAC,EACPx9K,EAAM,GAEJkxL,GAAUr7N,GACZo7N,EAAMr7N,KAAKC,GAETs5N,EAAKjrO,SACP+sO,EAAQp7N,EAAU0pM,GAAM1pM,EAASo7N,EAAO9B,EAAKv5N,KAAKC,IAAYo7N,EAAMr6N,OAAOu4N,GAC3EA,EAAO,IAEF8B,CACT,EAEJ,CASA,SAASE,GAAQxsN,GACf0gN,GAAUpgO,KAAK5B,KAAM,GAAIshB,EAC3B,CAqCA,SAASysN,GAAQzsN,GACfk6M,GAAS55N,KAAK5B,KAAM,KAAMguO,GAAU1sN,EACtC,CAEA,SAAS0sN,GAAStnM,GAChB,OAAO1mC,KAAKmC,QAAUukC,EAAE00L,WAAap7N,KAAKmC,MAAQ,GAAQukC,EAAEk5F,OAAQl5F,EAAE2zK,OACxE,CAWA,SAAS4zB,GAAa3sN,GACpB0gN,GAAUpgO,KAAK5B,KAAM,KAAMshB,EAC7B,CA8HA,SAAS4sN,GAAM5sN,GACb0gN,GAAUpgO,KAAK5B,KAAM,KAAMshB,EAC7B,CA7VAosN,GAAI3K,WAAa,CACf,KAAQ,MACR,SAAY,CACV,UAAY,GAEd,OAAU,CAAC,CACT,KAAQ,QACR,KAAQ,QACR,UAAY,GACX,CACD,KAAQ,WACR,KAAQ,UACR,SAAW,GACV,CACD,KAAQ,SACR,KAAQ,UACP,CACD,KAAQ,UACR,KAAQ,SACR,QAAW,IACV,CACD,KAAQ,OACR,KAAQ,SACR,QAAW,IACV,CACD,KAAQ,SACR,KAAQ,SACR,OAAS,EACT,QAAW,CAAC,EAAG,IACd,CACD,KAAQ,SACR,KAAQ,SACR,OAAS,EACT,OAAU,EACV,UAAY,GACX,CACD,KAAQ,OACR,KAAQ,UACP,CACD,KAAQ,OACR,KAAQ,UACP,CACD,KAAQ,QACR,KAAQ,SACR,OAAS,GACR,CACD,KAAQ,UACR,KAAQ,SACR,QAAW,GACV,CACD,KAAQ,OACR,KAAQ,UACR,SAAW,GACV,CACD,KAAQ,OACR,KAAQ,UACP,CACD,KAAQ,KACR,KAAQ,SACR,OAAS,EACT,OAAU,EACV,QAAW,CAAC,OAAQ,WAGxB,GAAS2K,GAAK1L,GAAW,CACvBluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAOIgB,EAPAsS,GAAsB,IAAfznM,EAAElkC,SACX4rO,EAAOpuO,KAAKquO,MAAM3nM,GAClBhgB,EAAQ0nN,EAAK1nN,MACb+gC,EAAO2mL,EAAK3mL,KACZshL,EAAKriM,EAAEqiM,IAAM,CAAC,OAAQ,QACtBvrN,EAAKurN,EAAG,GACRhsN,EAAKgsN,EAAG,GAoBV,OAhBElN,EAFEn1L,EAAE00L,YACJP,EAAQA,EAAMD,QAAO,IACRwF,OAENvF,EAAMO,SAAS5jB,GAAe9wK,EAAEm5F,QAAUg7F,EAAMoF,QAAUpF,EAAM+D,IAEzE/D,EAAMsD,MAAMtC,EAAMsS,EAAO,SAAUpqO,GACjC,IAAIkO,EAAIm8N,EAAKrqO,GAEbA,EAAEyZ,GAAMvL,EAKRlO,EAAEgZ,GAAW,MAAL9K,EAAY,KAAOyU,EAAQ+gC,GAAQ,GAAKx1C,EAAIyU,GAAS+gC,EAC/D,EAAI,SAAU1jD,GACZ,OAAOA,EAAEyZ,GAAM4wN,EAAKrqO,EACtB,GACO82N,EAAMG,SAASmT,EAAOpF,EAAKvrN,EACpC,EACA6wN,MAAO,SAAe3nM,GACpB,GAAI1mC,KAAKmC,QAAUukC,EAAE00L,WACnB,OAAOp7N,KAAKmC,MAEd,IAKEgc,EACA4H,EANE85G,EAAQn5F,EAAEm5F,MACZuuG,EAAO,GAAI1nM,GACX+gB,EAAO2mL,EAAK3mL,KACV/gC,EAAQ0nN,EAAK1nN,MACf1hB,EAAO0hB,EAAQzM,KAAKisJ,MAAMkoE,EAAKppO,KAAO0hB,GAAS+gC,GAAQA,EAGnC,OAAjBtpC,EAAIuoB,EAAE+gF,UACT1hG,EAAI5H,GAAKuI,EAAQ+gC,EAAOxtC,KAAKwX,OAAOtT,EAAIuI,GAAS+gC,IACjD/gC,GAASX,EACT/gB,GAAQ+gB,GAEV,IAAI1iB,EAAI,SAAWU,GACjB,IAAIkO,EAAIymM,GAAS74E,EAAM97H,IACvB,OAAY,MAALkO,EAAY,KAAOA,EAAIyU,GAASniB,IAAW0N,EAAIjN,EAAQT,KAAY0N,EAAIgI,KAAKE,IAAIuM,EAAOzM,KAAKC,IAAIjI,EAAGjN,EAAOyiD,IAAQ/gC,EAAQ+gC,EAAOxtC,KAAKwX,MA5HnI,OA4HsJxf,EAAIyU,GAAS+gC,GAC/K,EAIA,OAHApkD,EAAEqjB,MAAQA,EACVrjB,EAAE2B,KAAOopO,EAAKppO,KACd3B,EAAEokD,KAAOA,EACFznD,KAAKmC,MAAQk1M,GAASh0M,EAAGm0M,GAAe33E,GAAQn5F,EAAEzkC,MAAQ,OAASs1M,GAAa13E,GACzF,IAgDFiuG,GAAQ/K,WAAa,CACnB,KAAQ,UACR,SAAY,CACV,QAAU,GAEZ,OAAU,CAAC,CACT,KAAQ,OACR,KAAQ,aAGZ,GAAS+K,GAAS9L,GAAW,CAC3BluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAAI33M,EAAM23M,EAAM0F,KAAK1F,EAAMqF,KACzBx+G,EAAOisH,GAAWhU,GAAS35N,KAAKmC,MAAO+gB,EAAIs9M,YAAYt9M,EAAI07M,KAAKptN,KAChEe,EAAOm0B,EAAEn0B,KACT6nN,EAAMS,EAAM8D,WAAapsN,IAASm0B,EAAE00L,SAAS,SAAWP,EAAMO,SAAS7oN,EAAKqtH,SAS9E,OARA18G,EAAIi7M,MAAMj7M,EAAI27M,IAAKn9G,EAAKvuG,QACxBnT,KAAKo7N,SAAShB,GACdp6N,KAAKmC,MAAQ+gB,EAAImO,OAASqwF,EAAKh8F,KAAKs0M,GAAcznN,GAAO6nN,GAGrDS,EAAMxpM,QAAUwpM,EAAMxpM,OAAOk6C,OAC/BvrE,KAAKmC,MAAMopE,KAAOsvJ,EAAMxpM,OAAOk6C,MAE1BroD,CACT,IAcF,GAAS6qN,GAASvS,IAiBlByS,GAAalL,WAAa,CACxB,KAAQ,eACR,SAAY,CACV,WAAa,EACb,SAAW,GAEb,OAAU,CAAC,CACT,KAAQ,QACR,KAAQ,QACR,UAAY,GACX,CACD,KAAQ,OACR,KAAQ,OACR,OAAU,CAAC,QAAS,QAAS,SAC7B,QAAW,SACV,CACD,KAAQ,UACR,KAAQ,SACR,QAAW,WACV,CACD,KAAQ,YACR,KAAQ,SACR,QAAW,IACV,CACD,KAAQ,KACR,KAAQ,SACR,OAAS,EACT,OAAU,EACV,QAAW,CAAC,OAAQ,YAcxB,GAASkL,GAAcjM,GAAW,CAChCluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAAIh8K,EAAU,SAAiBr5C,GAC7B,OAAO,SAAUk1N,GAGf,IAFA,IACE32N,EADEshK,EAfZ,SAAkBxkJ,EAAMytN,EAAOrzM,GAC7B,OAAQqzM,GACN,IAAK,QACHztN,EAAOA,EAAK+F,cACZ,MACF,IAAK,QACH/F,EAAOA,EAAKjC,cAGhB,OAAOiC,EAAKoa,MAAMA,EACpB,CAKqBszM,CAASvsO,EAAI04N,GAAQh0L,EAAE8nM,KAAMvzM,IAAU,GAE3C/5B,EAAI,EAAG0tB,EAAIy2I,EAAOxkK,OAAQK,EAAI0tB,IAAK1tB,EACrC8D,EAAKM,KAAKvB,EAAIshK,EAAOnkK,KAAKsE,EAAOzB,EAE1C,CACF,EACIuG,EAAOtK,KAAKyuO,gBAAgB/nM,EAAGm0L,GACjC0S,EAASvtO,KAAK0rO,QACdzwM,EAAQj7B,KAAK0uO,OACb1pO,EAAOhF,KAAK2uO,MACZ3sO,EAAM0kC,EAAEm5F,MACRkpG,EAAKriM,EAAEqiM,IAAM,CAAC,OAAQ,SACtBv3N,EAAMqtC,GAAQ,SAAU96C,GACtB,OAAOwpO,EAAOxpO,GAAK,GAAKwpO,EAAOxpO,IAAM,EACvC,IACAo2N,EAAMt7K,GAAQ,SAAU96C,GACtB,OAAOwpO,EAAOxpO,IAAM,CACtB,IAOF,OANIuG,EACFuwN,EAAMsD,MAAMtD,EAAMuF,OAAQ5uN,IAE1BqpN,EAAMsD,MAAMtD,EAAM+D,IAAKptN,GACvBqpN,EAAMsD,MAAMtD,EAAMgE,IAAK1E,IAElBn6N,KAAK4uO,QAAQ/T,EAAOkO,EAC7B,EACA0F,gBAAiB,SAAyB/nM,EAAGm0L,GAC3C,IAAIvwN,GAAO,EAaX,OAZIo8B,EAAE00L,SAAS,cAAiBp7N,KAAK2uO,QACnC3uO,KAAK2uO,MAAQ,IAAI7pN,OAAO,KAAO4hB,EAAEmoM,WAAa,IAAM,IAAK,KACzDvkO,GAAO,IAELo8B,EAAE00L,SAAS,YAAep7N,KAAK0uO,SACjC1uO,KAAK0uO,OAAS,IAAI5pN,OAAO4hB,EAAE8hC,SAAW,UAAY,KAClDl+D,GAAO,IAELo8B,EAAE00L,SAAS,UAAYP,EAAMO,SAAS10L,EAAEm5F,MAAMD,WAChDt1H,GAAO,GAELA,IAAMtK,KAAK0rO,QAAU,CAAC,GACnBphO,CACT,EACAskO,QAAS,SAAiB/T,EAAOkO,GAC/B,IAKIr7M,EAAG3pB,EAAGohB,EALNooN,EAASvtO,KAAK0rO,QAChB3Q,EAAS/6N,KAAK8uO,UAAY9uO,KAAK8uO,QAAU,CAAC,GAC1CjuN,EAAOkoN,EAAG,GACVj4M,EAAQi4M,EAAG,GACX7lN,EAAM23M,EAAM0F,KAAK1F,EAAMwF,UAAYxF,EAAMyF,WAE3C,IAAK5yM,KAAK6/M,EACRxpO,EAAIg3N,EAAOrtM,GACXvI,EAAIooN,EAAO7/M,IAAM,GACZ3pB,GAAKohB,GACR41M,EAAOrtM,GAAK3pB,EAAI,GAAO,CAAC,GACxBA,EAAE8c,GAAQ6M,EACV3pB,EAAE+sB,GAAS3L,EACXjC,EAAI1R,IAAIjR,KAAKwD,IACE,IAANohB,GACLphB,GAAGmf,EAAIi3M,IAAI55N,KAAKwD,GACpBwpO,EAAO7/M,GAAK,KACZqtM,EAAOrtM,GAAK,MACH3pB,EAAE+sB,KAAW3L,IACtBphB,EAAE+sB,GAAS3L,EACXjC,EAAIk3M,IAAI75N,KAAKwD,IAGjB,OAAOmf,EAAI83M,SAAS+N,EACtB,IAcFmF,GAAMnL,WAAa,CACjB,KAAQ,QACR,SAAY,CACV,WAAa,GAEf,OAAU,CAAC,CACT,KAAQ,SACR,KAAQ,QACP,CACD,KAAQ,KACR,KAAQ,SACR,OAAS,EACT,OAAU,EACV,QAAW,CAAC,IAAK,QAGrB,GAASmL,GAAOlM,GAAW,CACzBluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAAI33M,EAAM23M,EAAM0F,KAAK1F,EAAMwF,WACzB0I,EAAKriM,EAAEqiM,IAAM,CAAC,IAAK,KACnB5qN,EAAI4qN,EAAG,GACP9lN,EAAI8lN,EAAG,GACP7yK,GAASl2D,KAAKmC,OAAS04N,EAAM8D,QAAQ9D,EAAMmF,UAAYt5L,EAAE00L,SAAS,OAAS10L,EAAE00L,SAAS,UACpF11M,EAAO1lB,KAAKmC,MAShB,OARI+zD,GACExwC,IAAMxC,EAAIi3M,IAAMz0M,GACpBA,EAAOm1M,EAAM2F,YAAY3F,EAAMuF,QAAQ/uM,OACvCnO,EAAI1R,IAAMxR,KAAKmC,MAQrB,SAAeknH,EAAOlrG,EAAG8E,EAAG1S,GAO1B,IANA,IAIErJ,EACA8H,EALE0W,EAAO,GACT3hB,EAAI,CAAC,EACL6qB,EAAIy6F,EAAMxoH,OACVK,EAAI,EAGCA,EAAI0tB,IAAK1tB,EAEd,IADA6C,EAAEoa,GAAKnP,EAAOq6G,EAAMnoH,GACfgG,EAAI,EAAGA,EAAI0nB,IAAK1nB,EACnBnD,EAAEkf,GAAKomG,EAAMniH,GACTqJ,EAAOxM,KACT2hB,EAAKnlB,KAAK,GAAOwD,KACjBA,EAAI,CAAC,GACHoa,GAAKnP,GAIb,OAAO0W,CACT,CA3B6BkP,CAAMlP,EAAMvH,EAAG8E,EAAGyjB,EAAEn2B,QAAUsnM,KAErD30L,EAAIk3M,IAAM10M,EAEZxC,EAAImO,OAASrxB,KAAKmC,MACX+gB,EAAI83M,SAAS+N,EACtB,IAsBF,IAAIgG,GAAgB,CAClBhJ,IAAK,GACLQ,QAAS,GACTyI,OAAQ,GACR1I,UAAW,GACXU,QAAS,IAGTiI,GAAW,WAcb,SAAS,GAAM7oM,EAAK1gB,GAClB,IAAI6a,EAAO6F,EAAI6oM,IACV,GAAeF,GAAexuM,IACjC,GAAM,kCAAoCA,GAE5C,IAAIxa,EAAIgpN,GAAcxuM,KACtB,IAAK,IAAIt+B,KAAQmkC,EAnBT,UAqBFnkC,EACF8jB,EAAEL,MAAM0gB,EAAI9M,MAAQ5T,KAAQsL,IAAIoV,EAAInkC,KAxBtB,kBA4BPA,EACP8jB,EAAE9jB,GAAMmkC,EAAInkC,GAAM+uB,KAAI,SAAU0V,GAC9B,OAAO,GAAMA,EAAGhhB,EAClB,YAIcK,EAAE9jB,KAAUgtO,IAC1BlpN,EAAE9jB,GAAMmkC,EAAInkC,IAGhB,OAAO8jB,CACT,CA0BA,SAASmpN,GAAQ5tN,GACf0gN,GAAUpgO,KAAK5B,KAAM,KAAMshB,EAC7B,CACA,IAAIqlN,GAAgB,CAAC,CACnB,IAAO,CACL,SAAY,UAEd,OAAU,CAAC,CACT,KAAQ,OACR,KAAQ,SACR,QAAW,GACV,CACD,KAAQ,QACR,KAAQ,SACR,QAAW,KAEZ,CACD,IAAO,CACL,SAAY,aAEd,OAAU,CAAC,CACT,KAAQ,OACR,KAAQ,SACR,QAAW,GACV,CACD,KAAQ,QACR,KAAQ,SACR,QAAW,KAEZ,CACD,IAAO,CACL,SAAY,WAEd,OAAU,CAAC,CACT,KAAQ,MACR,KAAQ,SACR,QAAW,GACV,CACD,KAAQ,MACR,KAAQ,SACR,QAAW,KAEZ,CACD,IAAO,CACL,SAAY,OAEd,OAAU,CAAC,CACT,KAAQ,QACR,KAAQ,QACR,UAAY,GACX,CACD,KAAQ,OACR,KAAQ,QACP,CACD,KAAQ,YACR,KAAQ,SACR,QAAW,MAGX,GAAU,CACZ,IAAO,CACL,SAAY,WAEd,OAAU,CAAC,CACT,KAAQ,gBACR,KAAQ,QACR,OAAS,EACT,OAAUA,IACT,CACD,KAAQ,UACR,KAAQ,SACR,OAAS,KA4Eb,SAASrlE,GAAW1hC,EAAQmpG,GAC1B,OAAKnpG,EACEA,EAAO5uG,KAAI,SAAU3tB,EAAGnC,GAC7B,OAAO6nO,EAAG7nO,IAAMq2M,GAAal0M,EAC/B,IAHoB,IAItB,CACA,SAAS8rO,GAAYzpN,EAAMonN,EAASjtG,GAClC,IAII7uG,EAAK9vB,EAAG0tB,EAAG7qB,EAAG2C,EAAG8tC,EAJjBlS,EAAS,GACXtgC,EAAM,SAAaqB,GACjB,OAAOA,EAAEU,EACX,EAIF,GAAe,MAAX+oO,EACFxqM,EAAO/hC,KAAKmlB,EAAKsL,IAAI6uG,SAErB,IAAK7uG,EAAM,CAAC,EAAG9vB,EAAI,EAAG0tB,EAAIlJ,EAAK7kB,OAAQK,EAAI0tB,IAAK1tB,EAC9C6C,EAAI2hB,EAAKxkB,IAETszC,EAAIxjB,EADJtqB,EAAIomO,EAAQ97M,IAAIhvB,OAGdgvB,EAAItqB,GAAK8tC,EAAI,GACbA,EAAE+3L,KAAO7lO,EACT47B,EAAO/hC,KAAKi0C,IAEdA,EAAEj0C,KAAKs/H,EAAM97H,IAGjB,OAAOu+B,CACT,CAvGA4sM,GAAQnM,WAAa,CACnB,KAAQ,UACR,SAAY,CACV,WAAa,GAEf,OAAU,CAAC,CACT,KAAQ,SACR,KAAQ,SACR,OAAS,EACT,OAAU,GACT,CACD,KAAQ,QACR,KAAQ,UACP,CACD,KAAQ,WACR,KAAQ,SACR,QAAW,IACV,CACD,KAAQ,WACR,KAAQ,SACR,QAAW,KACV,CACD,KAAQ,SACR,KAAQ,SACR,QAAW,MACX,OAAU,CAAC,MAAO,QACjB,CACD,KAAQ,eACR,KAAQ,QACR,OAAU4D,GAAcpzN,OAAO,KAC9B,CACD,KAAQ,KACR,KAAQ,SACR,OAAS,EACT,QAAW,CAAC,QAAS,cAGzB,GAAS27N,GAASlN,GAAW,CAC3BluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAAI33M,EAAM23M,EAAM0F,KAAK1F,EAAMwF,UAAYxF,EAAMyF,WAC7C,IAAKtgO,KAAKmC,OAAS04N,EAAM8D,WAAaj4L,EAAE00L,WAAY,CAClD,IAAIhpM,EAAO,GAAMsU,EAAE0oM,aAyBzB,SAAgBvU,GACd,OAAO,WACL,OAAOA,EAAM2F,YAAY3F,EAAMuF,QAAQ/uM,MACzC,CACF,CA7BuCA,CAAOwpM,IACtCwU,EAAW3oM,EAAEs9C,OAASt9C,EAAE2oM,UAAY,GACpCC,EAAW5oM,EAAEs9C,OAASt9C,EAAE4oM,UAAY,IAClC3jO,EAAS+6B,EAAE/6B,QAAU,MACV,QAAXA,GAA+B,QAAXA,GACtB,GAAM,2BAA6BA,GAEhC+6B,EAAE2lL,QAAWj6L,EAAK1M,MACrB,GAAM,qCAER/Z,EAASymB,EAAKzmB,GACd,IAAIo9N,EAAKriM,EAAEqiM,IAAM,CAAC,QAAS,WAEzBvoM,EAAS4nM,GAAYz8N,EADZ+6B,EAAE2lL,QAAU,GAAOj6L,EAAK1M,QACI2pN,EAAUC,GAAUt+M,KAAI,SAAU/e,GACrE,IAAIyoN,EAAQ,CAAC,EAGb,OAFAA,EAAMqO,EAAG,IAAM92N,EAAE,GACjByoN,EAAMqO,EAAG,IAAM92N,EAAE,GACV,GAAOyoN,EAChB,IACE16N,KAAKmC,QAAO+gB,EAAIi3M,IAAMn6N,KAAKmC,OAC/BnC,KAAKmC,MAAQ+gB,EAAI1R,IAAM0R,EAAImO,OAASmP,CACtC,CACA,OAAOtd,CACT,IAuDF,SAASqsN,GAAOjuN,GACd0gN,GAAUpgO,KAAK5B,KAAM,KAAMshB,EAC7B,CACAiuN,GAAOxM,WAAa,CAClB,KAAQ,SACR,SAAY,CACV,UAAY,GAEd,OAAU,CAAC,CACT,KAAQ,QACR,KAAQ,QACR,UAAY,GACX,CACD,KAAQ,UACR,KAAQ,QACR,OAAS,GACR,CACD,KAAQ,OACR,KAAQ,UACP,CACD,KAAQ,SACR,KAAQ,UACR,SAAW,GACV,CACD,KAAQ,KACR,KAAQ,SACR,QAzCS,SAyGb,SAASyM,GAAWluN,GAClBk6M,GAAS55N,KAAK5B,KAAM,KAAMyvO,GAAUnuN,GACpCthB,KAAKo7N,UAAS,EAChB,CAEA,SAASqU,GAAS/oM,GAChB,IAAIgpM,EAAOhpM,EAAEgpM,KACb,OAAO1vO,KAAKmC,QAAUukC,EAAE00L,SAAS,QAAUp7N,KAAKmC,MAAQk1M,IAAS,SAAU8gB,GACzE,OAAOuX,EAAKvX,EAAOzxL,EACrB,GAAG8wK,GAAek4B,GAAOn4B,GAAam4B,GACxC,CAQA,SAASC,GAAOruN,GACd0gN,GAAUpgO,KAAK5B,KAAM,MAACy2B,OAAWA,GAAYnV,EAC/C,CA8CA,SAASsuN,GAAQ/U,EAAOjpN,GACtB4pN,GAAS55N,KAAK5B,KAAM66N,GACpB76N,KAAK4R,OAASA,EACd5R,KAAK8wB,MAAQ,CACf,CA6DA,SAAS++M,GAAMvuN,GACb0gN,GAAUpgO,KAAK5B,KAAM,CAAC,EAAGshB,GACzBthB,KAAK8gC,MAAQo6K,KAIb,IAAI/8L,EAAIne,KAAKg8N,SAAW,GACxB79M,EAAEo4G,OAAS,EACXp4G,EAAE/V,QAAU,SAAU/E,GACpB,IAAK,IAAInC,EAAI,EAAG0tB,EAAIzQ,EAAEo4G,OAAQr1H,EAAI0tB,IAAK1tB,EACrCmC,EAAE8a,EAAEjd,GAAIA,EAAGid,EAEf,CACF,CAuIA,SAAS,GAAMmD,GACbk6M,GAAS55N,KAAK5B,KAAM,KAAM8vO,GAAUxuN,EACtC,CAEA,SAASwuN,GAASppM,GAChB,OAAO1mC,KAAKmC,QAAUukC,EAAE00L,WAAap7N,KAAKmC,MAAQ,GAAQukC,EAAEzkC,MAAQ,GAAMykC,EAAEzkC,MAAM+uB,KAAI,SAAU3tB,GAC9F,OAAOw8H,GAAMx8H,EACf,IAAKw8H,GAAMn5F,EAAEzkC,KAAMykC,EAAEqiM,GACvB,CASA,SAASgH,GAAOzuN,GACd0gN,GAAUpgO,KAAK5B,KAAMk7M,KAAW55L,EAClC,CAoEA,SAAS0uN,GAAQ1uN,GACf0gN,GAAUpgO,KAAK5B,KAAM,GAAIshB,EAC3B,CAsEA,SAAS2uN,GAAK3uN,GACZ0gN,GAAUpgO,KAAK5B,KAAM,GAAIshB,EAC3B,CAmDA,SAAS4uN,GAAQ5uN,GACf0gN,GAAUpgO,KAAK5B,KAAM,KAAMshB,EAC7B,CAgDA,SAAS6uN,GAAS7uN,GAChB0gN,GAAUpgO,KAAK5B,KAAM,GAAIshB,EAC3B,CAzlBA,GAASiuN,GAAQvN,GAAW,CAC1BluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,GAAI76N,KAAKmC,QAAWukC,EAAE00L,aAAcP,EAAM8D,UACxC,OAAO9D,EAmBT,IAhBA,IAeE3zN,EAfEmqB,EAASwpM,EAAM2F,YAAY3F,EAAMuF,QAAQ/uM,OAC3CiR,EAAS6sM,GAAYtU,EAAMxpM,OAAQqV,EAAEomM,QAASpoM,IAC9C9I,EAAS8K,EAAE9K,SAAU,EACrBikG,EAAQn5F,EAAEm5F,MACVp4E,EAAO/gB,EAAE+gB,MAbA,SAAkB/hC,EAAMm6G,GACrC,OAAO3P,GAAK,GAAOxqG,EAAMm6G,IAAU,EACrC,CAWuBuwG,CAAS/+M,EAAQwuG,GAClCttH,EAAOynN,IAAc,SAAU77M,EAAG8E,GAChC,OAAO48G,EAAM1hH,GAAK0hH,EAAM58G,EAC1B,IACA8lN,EAAKriM,EAAEqiM,IA7DA,MA8DPn6M,EAAI0T,EAAOzhC,OAGTqZ,EAAM3V,IACR4V,GAAO5V,IACPrD,EAAI,EAECA,EAAI0tB,IAAK1tB,EAAG,CACjB,IAAIszC,EAAIlS,EAAOphC,GAAGqR,KAAKA,GACvBrL,GAAK,EACL,IACEq3N,EADEC,EAAY,GAA2BmG,GAAOnwL,EAAGiT,EAAM7rB,EAAQikG,IAEnE,IACE,IAAK2+F,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIrmC,EAAIssN,EAAMp8N,MACV8P,EAAIiI,IAAKA,EAAMjI,GACfA,EAAIkI,IAAKA,EAAMlI,GACnBuiC,IAAIttC,GAAG6hO,GAAM92N,CACf,CACF,CAAE,MAAOu1B,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACF,CAMA,OALArD,KAAKmC,MAAQ,CACXukB,MAAOxM,EACPlV,KAAMmV,EACNstC,KAAMA,GAEDozK,EAAMD,QAAO,GAAMI,SAAS+N,EACrC,IAgBF,GAASyG,GAAYhU,IAiBrBmU,GAAO5M,WAAa,CAClB,KAAQ,SACR,SAAY,CAAC,EACb,OAAU,CAAC,CACT,KAAQ,QACR,KAAQ,QACR,UAAY,KAGhB,GAAS4M,GAAQ3N,GAAW,CAC1BluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAAIxO,EAASrsN,KAAKmC,MAChB09H,EAAQn5F,EAAEm5F,MACVu6F,EAAMS,EAAM8D,WAAa9D,EAAMO,SAASv7F,EAAMD,SAAWl5F,EAAE00L,SAAS,SAClElhN,EAAMmyM,EAAO,GACflyM,EAAMkyM,EAAO,GAaf,IAZI+N,GAAc,MAAPlgN,KACTA,EAAO3V,IACP4V,GAAO5V,KAETs2N,EAAMsD,MAAM/D,EAAMS,EAAMuF,OAASvF,EAAM+D,KAAK,SAAU76N,GACpD,IAAIkO,EAAIymM,GAAS74E,EAAM97H,IACd,MAALkO,IAEEA,EAAIiI,IAAKA,EAAMjI,GACfA,EAAIkI,IAAKA,EAAMlI,GAEvB,KACKgQ,OAAOqe,SAASpmB,KAAS+H,OAAOqe,SAASnmB,GAAM,CAClD,IAAIlY,EAAOs1M,GAAa13E,GACpB59H,IAAMA,EAAO,eAAgBsR,OAAOtR,EAAM,MAC9C44N,EAAM6C,SAASz9E,KAAK,kBAAkB1sI,OAAOtR,EAAM,OAAOsR,OAAO2G,EAAK,MAAM3G,OAAO4G,EAAK,MACxFD,EAAMC,OAAMsc,CACd,CACAz2B,KAAKmC,MAAQ,CAAC+X,EAAKC,EACrB,IAeF,GAASy1N,GAASpU,GAAU,CAK1BwC,QAAS,SAAiBt1N,GAGxB,OAFA1I,KAAKqwO,cAAgB3nO,EAAO2nO,cAC5BrwO,KAAK+7N,UAAUvqN,IAAI9I,GACZA,EAAO2oB,OAASrxB,IACzB,EAKAwR,IAAK,SAAazN,GAChB/D,KAAK8wB,OAAS,EACd9wB,KAAKmC,MAAMqP,IAAIjR,KAAKwD,EACtB,EAKAo2N,IAAK,SAAap2N,GAChB/D,KAAK8wB,OAAS,EACd9wB,KAAKmC,MAAMg4N,IAAI55N,KAAKwD,EACtB,EAKAq2N,IAAK,SAAar2N,GAChB/D,KAAKmC,MAAMi4N,IAAI75N,KAAKwD,EACtB,EAMAuG,KAAM,SAAcuwN,GAClB76N,KAAKmC,MAAMmI,KAAKuwN,EAAOA,EAAMwF,UAC/B,EAMA7D,SAAU,WAER,OAAOx8N,KAAKmC,KACd,IAyBF,GAAS0tO,GAAO7N,GAAW,CACzBsO,SAAU,SAAkBC,GAC1BvwO,KAAKg8N,SAASh8N,KAAKg8N,SAASzlG,UAAYg6G,CAC1C,EAEAC,QAAS,SAAiB3vM,EAAK0vM,EAAM1V,EAAOjpN,GAC1C,IAEEyW,EACAjK,EAHEqyN,EAAQzwO,KAAKmC,MACbuuO,EAAK,GAAeD,EAAO5vM,IAAQ4vM,EAAM5vM,GAc7C,OAXK6vM,EAOMA,EAAGvuO,MAAMu5N,MAAQb,EAAMa,QAChCgV,EAAGpmO,KAAKuwN,GACR76N,KAAKswO,SAASI,KARdtyN,EAAIxM,IAAWwM,EAAIpe,KAAK2wO,OAAO9vM,KAASziB,EAAEs8M,MAC1CryM,EAAKwyM,EAAM6C,SACXgT,EAAK,IAAId,GAAQ/U,EAAM0F,KAAK1F,EAAMwF,WAAYrgO,MAC9CqoB,EAAG7W,IAAIk/N,GAAI1S,QAAQuS,EAAKloN,EAAIwY,EAAKziB,IACjCqyN,EAAM5vM,GAAO6vM,EACb1wO,KAAKswO,SAASI,IAKTA,CACT,EACAr1B,MAAO,WACL,IAAIo1B,EAAQzwO,KAAKmC,MACbyuO,EAAW,EACf,IAAK,IAAInpI,KAASgpI,EAChB,GAA2B,IAAvBA,EAAMhpI,GAAO32E,MAAa,CAC5B,IAAIyrM,EAASkU,EAAMhpI,GAAO4oI,cACtB9T,GAAQA,WACLkU,EAAMhpI,KACXmpI,CACJ,CAIF,GAAIA,EAAU,CACZ,IAAIr6G,EAASv2H,KAAKg8N,SAASzrN,QAAO,SAAUmgO,GAC1C,OAAOA,GAAMA,EAAG5/M,MAAQ,CAC1B,IACA9wB,KAAK6wO,YAAYt6G,EACnB,CACF,EACAs6G,YAAa,SAAqB1+G,GAKhC,IAJA,IAAIh0G,EAAIne,KAAKg8N,SACXptM,EAAIzQ,EAAEtd,OACNkV,EAAIo8G,EAAMA,EAAItxH,OAAS,EACrBK,EAAI,EACDA,EAAI6U,IAAK7U,EACdid,EAAEjd,GAAKixH,EAAIjxH,GAEb,KAAOA,EAAI0tB,GAAa,MAARzQ,EAAEjd,KAAcA,EAC9Bid,EAAEjd,GAAK,KAGTid,EAAEo4G,OAASxgH,CACb,EACAjC,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAAIiW,EAAS9wO,KACTqoB,EAAKwyM,EAAM6C,SACb78L,EAAM6F,EAAE7F,IACR0vM,EAAO7pM,EAAE8pM,QACT1xN,EAAQ9e,KAAK8gC,MACbiwM,EAAQrqM,EAAE00L,SAAS,OACnBoV,EAAU,SAAiB3vM,GACzB,OAAOiwM,EAAON,QAAQ3vM,EAAK0vM,EAAM1V,EACnC,EAuDF,OAtDA76N,KAAK2wO,OAASjqM,EAAEh1B,OAAS,CAAC,EAC1B1R,KAAK6wO,cAELhW,EAAMsD,MAAMtD,EAAMgE,KAAK,SAAU96N,GAC/B,IAAI2P,EAAKimN,GAAQ51N,GACf2C,EAAIoY,EAAM9c,IAAI0R,QACN+iB,IAAN/vB,IACFoY,EAAMunB,OAAO3yB,GACb88N,EAAQ9pO,GAAGyzN,IAAIp2N,GAEnB,IACA82N,EAAMsD,MAAMtD,EAAM+D,KAAK,SAAU76N,GAC/B,IAAI2C,EAAIm6B,EAAI98B,GACZ+a,EAAM5c,IAAIy3N,GAAQ51N,GAAI2C,GACtB8pO,EAAQ9pO,GAAG8K,IAAIzN,EACjB,IACIgtO,GAASlW,EAAMO,SAASv6L,EAAI++F,QAC9Bi7F,EAAMsD,MAAMtD,EAAMiE,KAAK,SAAU/6N,GAC/B,IAAI2P,EAAKimN,GAAQ51N,GACfitO,EAAKlyN,EAAM9c,IAAI0R,GACfu9N,EAAKpwM,EAAI98B,GACPitO,IAAOC,EACTT,EAAQS,GAAI7W,IAAIr2N,IAEhB+a,EAAM5c,IAAIwR,EAAIu9N,GACdT,EAAQQ,GAAI7W,IAAIp2N,GAChBysO,EAAQS,GAAIz/N,IAAIzN,GAEpB,IACS82N,EAAM8D,QAAQ9D,EAAMiE,MAC7BjE,EAAMsD,MAAMtD,EAAMiE,KAAK,SAAU/6N,GAC/BysO,EAAQ1xN,EAAM9c,IAAI23N,GAAQ51N,KAAKq2N,IAAIr2N,EACrC,IAEEgtO,GACFlW,EAAMsD,MAAMtD,EAAMsF,QAAQ,SAAUp8N,GAClC,IAAI2P,EAAKimN,GAAQ51N,GACfitO,EAAKlyN,EAAM9c,IAAI0R,GACfu9N,EAAKpwM,EAAI98B,GACPitO,IAAOC,IACTnyN,EAAM5c,IAAIwR,EAAIu9N,GACdT,EAAQQ,GAAI7W,IAAIp2N,GAChBysO,EAAQS,GAAIz/N,IAAIzN,GAEpB,IAEE82N,EAAMxf,QACRhzL,EAAG04M,UAAS,WACV+P,EAAOz1B,QACPv8L,EAAMu8L,OACR,IACSv8L,EAAMyhD,MAAQl4C,EAAG65M,gBAC1B75M,EAAG04M,SAASjiN,EAAMu8L,OAEbwf,CACT,IAeF,GAAS,GAAOW,IAiBhBuU,GAAOhN,WAAa,CAClB,KAAQ,SACR,SAAY,CACV,SAAW,GAEb,OAAU,CAAC,CACT,KAAQ,OACR,KAAQ,OACR,UAAY,KAGhB,GAASgN,GAAQ/N,GAAW,CAC1BluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAAIxyM,EAAKwyM,EAAM6C,SACb5+M,EAAQ9e,KAAKmC,MAEbu6C,EAASm+K,EAAM0F,OACf/uN,EAAMkrC,EAAOlrC,IACb2oN,EAAMz9K,EAAOy9K,IACbC,EAAM19K,EAAO09K,IACb90N,EAAOohC,EAAEgpM,KACPwB,GAAQ,EAQZ,SAASC,EAAQptO,GACf,IAAI2P,EAAKimN,GAAQ51N,GACfkf,EAAI3d,EAAKvB,EAAG2iC,GACZ5oB,EAAIgB,EAAM9c,IAAI0R,GACZuP,GAAKnF,GACPgB,EAAMunB,OAAO3yB,GACblC,EAAIjR,KAAKwD,IACCkf,GAAMnF,EAGPozN,GAASjuN,IAAMnF,GACxBs8M,EAAI75N,KAAKwD,IAHT+a,EAAM5c,IAAIwR,EAAI,GACdymN,EAAI55N,KAAKwD,GAIb,CAOA,OA3BA82N,EAAMsD,MAAMtD,EAAMgE,KAAK,SAAU96N,GAC/B,IAAI2P,EAAKimN,GAAQ51N,GACZ+a,EAAMgjB,IAAIpuB,GAAsBoL,EAAMunB,OAAO3yB,GAA9BymN,EAAI55N,KAAKwD,EAC/B,IACA82N,EAAMsD,MAAMtD,EAAM+D,KAAK,SAAU76N,GAC3BuB,EAAKvB,EAAG2iC,GAAIl1B,EAAIjR,KAAKwD,GAAQ+a,EAAM5c,IAAIy3N,GAAQ51N,GAAI,EACzD,IAeA82N,EAAMsD,MAAMtD,EAAMiE,IAAKqS,GACnBzqM,EAAE00L,aACJ8V,GAAQ,EACRrW,EAAMsD,MAAMtD,EAAMsF,OAAQgR,IAExBryN,EAAMyhD,MAAQl4C,EAAG65M,gBAAgB75M,EAAG04M,SAASjiN,EAAMu8L,OAChD3+J,CACT,IAoBFszL,GAAQjN,WAAa,CACnB,KAAQ,UACR,SAAY,CACV,WAAa,GAEf,OAAU,CAAC,CACT,KAAQ,SACR,KAAQ,QACR,OAAS,EACT,UAAY,GACX,CACD,KAAQ,QACR,KAAQ,UACP,CACD,KAAQ,KACR,KAAQ,SACR,OAAS,KAGb,GAASiN,GAAShO,GAAW,CAC3BluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAAI33M,EAAM23M,EAAM0F,KAAK1F,EAAMwF,WACzBzgG,EAASl5F,EAAEk5F,OACXmpG,EAAKznE,GAAW1hC,EAAQl5F,EAAEqiM,IAAM,IAChC/gO,EAAQ0+B,EAAE1+B,OAAS,KACnB+N,EAAIgzN,EAAGloO,OA8BT,OA3BAqiB,EAAIi3M,IAAMn6N,KAAKmC,MAGf04N,EAAMsD,MAAMtD,EAAMuF,QAAQ,SAAUr8N,GAWlC,IAVA,IAOEmD,EACA6e,EACA9T,EATEm/N,EAASxxG,EAAO5uG,KAAI,SAAU3tB,GAC9B,OAAOA,EAAEU,EACX,IACAstO,EAASD,EAAOz/M,QAAO,SAAUrM,EAAGnH,GAClC,OAAOlE,KAAKE,IAAImL,EAAGnH,EAAEtd,OACvB,GAAG,GACDK,EAAI,EAIDA,EAAImwO,IAAUnwO,EAAG,CAEtB,IADA6kB,EAAI+zM,GAAO/1N,GACNmD,EAAI,EAAGA,EAAI6O,IAAK7O,EACnB6e,EAAEgjN,EAAG7hO,IAA4B,OAArB+K,EAAIm/N,EAAOlqO,GAAGhG,IAAc,KAAO+Q,EAE7CjK,IACF+d,EAAE/d,GAAS9G,GAEbgiB,EAAI1R,IAAIjR,KAAKwlB,EACf,CACF,IACA/lB,KAAKmC,MAAQ+gB,EAAImO,OAASnO,EAAI1R,IAC1BxJ,GAAOkb,EAAI83M,SAAShzN,GACjBkb,EAAI83M,SAAS+N,EACtB,IAgBFkH,GAAKlN,WAAa,CAChB,KAAQ,OACR,SAAY,CACV,WAAa,GAEf,OAAU,CAAC,CACT,KAAQ,SACR,KAAQ,QACR,OAAS,EACT,UAAY,GACX,CACD,KAAQ,KACR,KAAQ,SACR,OAAS,EACT,OAAU,EACV,QAAW,CAAC,MAAO,YAGvB,GAASkN,GAAMjO,GAAW,CACxBluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAAI33M,EAAM23M,EAAM0F,KAAK1F,EAAMwF,WACzBzgG,EAASl5F,EAAEk5F,OACX0xG,EAAS1xG,EAAO5uG,IAAIumL,IACpBwxB,EAAKriM,EAAEqiM,IAAM,CAAC,MAAO,SACrBriO,EAAIqiO,EAAG,GACP92N,EAAI82N,EAAG,GACPn6M,EAAIgxG,EAAO/+H,OAWb,OAVAqiB,EAAIi3M,IAAMn6N,KAAKmC,MACf04N,EAAMsD,MAAMtD,EAAMuF,QAAQ,SAAUr8N,GAClC,IAAK,IAAWgiB,EAAP7kB,EAAI,EAAMA,EAAI0tB,IAAK1tB,GAC1B6kB,EAAI+zM,GAAO/1N,IACT2C,GAAK4qO,EAAOpwO,GACd6kB,EAAE9T,GAAK2tH,EAAO1+H,GAAG6C,GACjBmf,EAAI1R,IAAIjR,KAAKwlB,EAEjB,IACA/lB,KAAKmC,MAAQ+gB,EAAImO,OAASnO,EAAI1R,IACvB0R,EAAI83M,SAAS+N,EACtB,IAeFmH,GAAQnN,WAAa,CACnB,KAAQ,UACR,SAAY,CACV,UAAY,GAEd,OAAU,CAAC,CACT,KAAQ,OACR,KAAQ,OACR,UAAY,GACX,CACD,KAAQ,KACR,KAAQ,SACR,UAAY,GACX,CACD,KAAQ,WACR,KAAQ,aAGZ,GAASmN,GAASlO,GAAW,CAC3BluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAAIt6L,EAAOmG,EAAEgpM,KACX3G,EAAKriM,EAAEqiM,GACP3O,EAAM1zL,EAAE00L,WACRS,EAAOn1L,EAAEu1L,SAAWpB,EAAM+D,IAAMxE,EAAMS,EAAMuF,OAASvF,EAAMO,SAAS76L,EAAKq/F,SAAWi7F,EAAMO,SAAS2N,GAAMlO,EAAMoF,QAAUpF,EAAM+D,IAQjI,OAPIxE,IAEFS,EAAQA,EAAM2F,cAAc5F,QAAO,IAEhCl0L,EAAEu1L,UACLpB,EAAMG,SAAS+N,GAEVlO,EAAMsD,MAAMtC,GAAM,SAAU93N,GACjC,OAAOA,EAAEglO,GAAMxoM,EAAKx8B,EAAG2iC,EACzB,GACF,IAgBF,GAASypM,GAAUnO,GAAW,CAC5BluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAIErpN,EACA2oN,EACAp2N,EANEmf,EAAM23M,EAAM0F,KAAK1F,EAAMqF,KACzBvoK,EAAMjxB,EAAE6lB,UACN7mC,EAAO1lB,KAAKmC,MACdqvF,EAAM9qD,EAAEpC,KAAO5e,EAAK7kB,OAItB,GAAI2wF,EAAM,EAAG,CAEX,IAAKhgF,EAAM,KAAMggF,GAAO,GACtBhgF,EAAIjR,KAAKwD,EAAI,GAAO4zD,EAAIjxB,KACxBhhB,EAAKnlB,KAAKwD,GAEZmf,EAAI1R,IAAM0R,EAAI1R,IAAI3Q,OAASqiB,EAAIs9M,YAAYt9M,EAAI07M,KAAKptN,IAAI+B,OAAO/B,GAAOA,CACxE,MAEE2oN,EAAMz0M,EAAKsB,MAAM,GAAIwqE,GACrBtuE,EAAIi3M,IAAMj3M,EAAIi3M,IAAIt5N,OAASqiB,EAAIs9M,YAAYt9M,EAAI27M,KAAK1E,IAAI5mN,OAAO4mN,GAAOA,EACtEz0M,EAAOA,EAAKsB,OAAOwqE,GAGrB,OADAtuE,EAAImO,OAASrxB,KAAKmC,MAAQujB,EACnBxC,CACT,IAEF,IAAIquN,GAAU,CACZpvO,MAAO,QACP+4C,OAAQA,GACR4oL,KFxnEa,SAActjM,EAAQwiM,GACnC,IAAIlyM,EAAQ,EACR1E,EAAM,EACV,QAAgBqK,IAAZusM,EAAuB,CACzB,IACEzE,EADEC,EAAY,GAA2Bh+L,GAE3C,IACE,IAAKg+L,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIn2C,EAAQo8N,EAAMp8N,MACL,MAATA,IAAkBA,GAASA,IAAUA,MACrC2uB,EAAO1E,GAAOjqB,EAEpB,CACF,CAAE,MAAOqlC,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACF,KAAO,CACL,IAEE4/N,EAFEj7N,GAAS,EACTk7N,EAAa,GAA2B1iM,GAE5C,IACE,IAAK0iM,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,CACrD,IAAI6qL,EAASF,EAAO9gO,MAC+B,OAA9CghO,EAASH,EAAQG,IAAUn7N,EAAOw4B,MAAqB2iM,GAAUA,IAAWA,MAC7EryM,EAAO1E,GAAO+2M,EAEpB,CACF,CAAE,MAAO37L,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACF,CACA,GAAIytB,EAAO,OAAO1E,EAAM0E,CAC1B,EEqlEE5W,IAAKA,GACLC,IAAKA,IAEH,GAAQ,GAqBZ,SAASq3N,GAAOlwN,GACd0gN,GAAUpgO,KAAK5B,KAAM,GAAIshB,EAC3B,CA2IA,SAASmwN,GAAcnwN,GACrBypN,GAAUnpO,KAAK5B,KAAMshB,EACvB,CA8GA,SAASowN,GAAIpwN,GACX0gN,GAAUpgO,KAAK5B,KAAM,KAAMshB,EAC7B,CAyGA,SAASqwN,GAAIrwN,GACXk6M,GAAS55N,KAAK5B,KAAM,KAAM4xO,GAAUtwN,EACtC,CAEA,SAASswN,GAASlrM,GAChB,OAAO1mC,KAAKmC,QAAUukC,EAAE00L,WAAap7N,KAAKmC,MAAQ0+B,GAAI6F,EAAEk5F,OAAQl5F,EAAEkpB,KACpE,CAUA,SAASiiL,GAAKvwN,GACZ0gN,GAAUpgO,KAAK5B,KAAM,GAAIshB,GACzBthB,KAAKygI,SAAW,IAClB,CAmCA,SAAS,GAAOxzE,EAAI4tK,EAAOn1M,GACzBA,EAAKtd,QAAQ,IACb,IAAI8a,EAAM23M,EAAM0F,KAAK1F,EAAMyF,UAAYzF,EAAMwF,WAK7C,OAJAn9M,EAAIi3M,IAAMltK,EAAG9qD,MACb8qD,EAAG9qD,MAAQ+gB,EAAImO,OAASnO,EAAI1R,IAAMkU,EAClCunC,EAAGwzE,SAAW,KACVv9G,EAAIi3M,IAAIt5N,QAAQqiB,EAAIm4L,OAAM,GACvBn4L,CACT,CAWA,SAAS4uN,GAAOxwN,GACd0gN,GAAUpgO,KAAK5B,KAAM,CAAC,EAAGshB,EAC3B,CA+FA,SAASywN,GAAYzwN,GACnBk6M,GAAS55N,KAAK5B,KAAM,KAAMgyO,GAAU1wN,EACtC,CAEA,SAAS0wN,GAAStrM,GAChB,GAAI1mC,KAAKmC,QAAUukC,EAAE00L,WACnB,OAAOp7N,KAAKmC,MAEd,IAIEjB,EACAgD,EALEkoN,EAAM1lL,EAAEurM,QACVrjN,EAAIw9L,EAAIvrN,OACNqZ,EAAO3V,IACT4V,GAAO5V,IAGT,IAAKrD,EAAI,EAAGA,EAAI0tB,IAAK1tB,GACnBgD,EAAIkoN,EAAIlrN,IACF,GAAKgZ,IAAKA,EAAMhW,EAAE,IACpBA,EAAE,GAAKiW,IAAKA,EAAMjW,EAAE,IAE1B,MAAO,CAACgW,EAAKC,EACf,CAQA,SAAS+3N,GAAY5wN,GACnBk6M,GAAS55N,KAAK5B,KAAM,KAAM,GAAQshB,EACpC,CAEA,SAAS,GAAOolB,GACd,OAAO1mC,KAAKmC,QAAUukC,EAAE00L,WAAap7N,KAAKmC,MAAQukC,EAAElG,OAAO7O,QAAO,SAAUjM,EAAMghB,GAChF,OAAOhhB,EAAKnS,OAAOmzB,EACrB,GAAG,GACL,CAQA,SAASyrM,GAAO7wN,GACd0gN,GAAUpgO,KAAK5B,KAAM,KAAMshB,EAC7B,CAyBA,SAAS8wN,GAAM9wN,GACbypN,GAAUnpO,KAAK5B,KAAMshB,EACvB,CAqGA,SAAS+wN,GAAS/wN,GAChBuuN,GAAMjuO,KAAK5B,KAAMshB,EACnB,CAiEA,SAASgxN,GAAQhxN,GACf0gN,GAAUpgO,KAAK5B,KAAM,KAAMshB,EAC7B,CA+DA,SAAS,GAAMA,GACb0gN,GAAUpgO,KAAK5B,KAAM,KAAMshB,EAC7B,CAwBA,SAASixN,GAASjxN,GAChB0gN,GAAUpgO,KAAK5B,KAAM,KAAMshB,EAC7B,CA71BAkwN,GAAOzO,WAAa,CAClB,KAAQ,SACR,SAAY,CACV,SAAW,GAEb,OAAU,CAAC,CACT,KAAQ,QACR,KAAQ,QACR,UAAY,GACX,CACD,KAAQ,MACR,KAAQ,QACR,UAAY,GACX,CACD,KAAQ,UACR,OAAS,GACR,CACD,KAAQ,UACR,KAAQ,QACR,OAAS,GACR,CACD,KAAQ,SACR,KAAQ,OACR,QAAW,QACX,OAAU,CAAC,QAAS,OAAQ,SAAU,MAAO,QAC5C,CACD,KAAQ,QACR,QAAW,KAuBf,GAASyO,GAAQxP,GAAW,CAC1BluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAUEnpN,EACAvP,EACAqwO,EACAC,EACAj+L,EACAtzC,EACAgG,EACAoe,EACAsJ,EACA7qB,EAnBEmf,EAAM23M,EAAM0F,KAAK1F,EAAMqF,KACzBwS,EAvBN,SAAkBhsM,GAChB,IACEz0B,EADE8D,EAAI2wB,EAAE/6B,QAAU4lO,GAAQpvO,MAE5B,GAAkB,MAAdovO,GAAQx7N,GAEL,OAAIA,IAAMw7N,GAAQpvO,OACvB8P,OAAgBwkB,IAAZiQ,EAAEvkC,MAAsBukC,EAAEvkC,MAAQ,EAC/B,WACL,OAAO8P,CACT,GAEOs/N,GAAQx7N,GAPf,GAAM,mCAAqCA,EAS/C,CAUe,CAAS2wB,GAClBm5F,EAVN,SAAkBn5F,GAChB,IAAIrjC,EAAIqjC,EAAEm5F,MACV,OAAO,SAAU97H,GACf,OAAOA,EAAIV,EAAEU,GAAKwwC,GACpB,CACF,CAKco+L,CAASjsM,GACjBksM,EAAQr7B,GAAa7wK,EAAEm5F,OACvBgzG,EAAQt7B,GAAa7wK,EAAE7F,KACvBiyM,GAAUpsM,EAAEomM,SAAW,IAAI97M,IAAIumL,IAC/Bj1K,EAwCN,SAAmB5c,EAAMonN,EAASjsM,EAAKkyM,GACrC,IAOEP,EACAQ,EACAthO,EACAxQ,EACAgG,EACAR,EACAkoB,EACA7qB,EAdE/B,EAAM,SAAaqB,GACnB,OAAOA,EAAEU,EACX,EACAu+B,EAAS,GACTiY,EAASw4L,EAAUA,EAAQ/rN,QAAU,GACrCisN,EAAO,CAAC,EACRC,EAAO,CAAC,EAYV,IAHA34L,EAAOnyC,SAAQ,SAAU1B,EAAGxF,GAC1B,OAAO+xO,EAAKvsO,GAAKxF,EAAI,CACvB,IACKA,EAAI,EAAG0tB,EAAIlJ,EAAK7kB,OAAQK,EAAI0tB,IAAK1tB,EAEpCwF,EAAIm6B,EADJ98B,EAAI2hB,EAAKxkB,IAETgG,EAAI+rO,EAAKvsO,KAAOusO,EAAKvsO,GAAK6zC,EAAOh6C,KAAKmG,KAEhCgL,EAAQwhO,EADdF,GAAQR,EAAQ1F,EAAUA,EAAQ97M,IAAIhvB,GAAO,IAAS,OAEpD0P,EAAQwhO,EAAKF,GAAQ,GACrB1wM,EAAO/hC,KAAKmR,GACZA,EAAM8uB,OAASgyM,GAEjB9gO,EAAMxK,EAAI,GAAKnD,EAGjB,OADAu+B,EAAOiY,OAASA,EACTjY,CACT,CAzEe6wM,CAAUtY,EAAMxpM,OAAQqV,EAAEomM,QAASpmM,EAAE7F,IAAK6F,EAAEqsM,SACrD3xM,EAAO,GACP9L,EAAOt1B,KAAKmC,MACZ4T,EAAIusB,EAAOiY,OAAO15C,OAWpB,IAAK2zC,EAAI,EAAGlvB,EAAIgd,EAAOzhC,OAAQ2zC,EAAIlvB,IAAKkvB,EAMtC,IAJAg+L,GADA9gO,EAAQ4wB,EAAOkS,IACDhU,OACdr+B,EAAQoyC,IAGHrtC,EAAI,EAAGA,EAAI6O,IAAK7O,EACnB,GAAgB,MAAZwK,EAAMxK,GAAV,CAKA,IAJAurO,EAAOnwM,EAAOiY,OAAOrzC,GACrBnD,EAAI,CACFqvO,SAAS,GAENlyO,EAAI,EAAG0tB,EAAI4jN,EAAM3xO,OAAQK,EAAI0tB,IAAK1tB,EAAG6C,EAAE+uO,EAAO5xO,IAAMsxO,EAAMtxO,GAC/D6C,EAAE8uO,GAASJ,EACX1uO,EAAE6uO,GAAS3wN,OAAOC,MAAM/f,GAASA,EAAQuwO,EAAOhhO,EAAOmuH,GAAS19H,EAChEi/B,EAAK7gC,KAAK,GAAOwD,GARa,CAgBlC,OAHIq9B,EAAKvgC,SAAQqiB,EAAI1R,IAAM0R,EAAIs9M,YAAYt9M,EAAI07M,KAAKptN,IAAI+B,OAAO6tB,IAC3D9L,EAAKz0B,SAAQqiB,EAAIi3M,IAAMj3M,EAAIs9M,YAAYt9M,EAAI27M,KAAK1E,IAAI5mN,OAAO+hB,IAC/Dt1B,KAAKmC,MAAQi/B,EACNle,CACT,IA6CFuuN,GAAc1O,WAAa,CACzB,KAAQ,gBACR,SAAY,CACV,UAAY,GAEd,OAAU,CAAC,CACT,KAAQ,UACR,KAAQ,QACR,OAAS,GACR,CACD,KAAQ,SACR,KAAQ,QACR,MAAQ,EACR,OAAS,GACR,CACD,KAAQ,MACR,KAAQ,OACR,OAAS,EACT,OAAUoH,IACT,CACD,KAAQ,KACR,KAAQ,SACR,MAAQ,EACR,OAAS,GACR,CACD,KAAQ,MACR,KAAQ,WAGZ,GAASsH,GAAe1G,GAAW,CACjCj3N,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAEIjnI,EAFAy4I,EAAOrsO,KACTo6N,EAAM1zL,EAAE00L,WA0BV,OAtBIiR,EAAKlqO,QAAUi4N,GAAOS,EAAMO,SAASiR,EAAKT,SAAS,KACrDh4I,EAAQy4I,EAAKlqO,MAAQi4N,EAAMiS,EAAK/hO,KAAKo8B,GAAK,CAAC,EAC3Cm0L,EAAMsD,MAAMtD,EAAMuF,QAAQ,SAAUr8N,GAClC,OAAOsoO,EAAK76N,IAAIzN,EAClB,MAEA6vF,EAAQy4I,EAAKlqO,MAAQkqO,EAAKlqO,OAASnC,KAAKsK,KAAKo8B,GAC7Cm0L,EAAMsD,MAAMtD,EAAMgE,KAAK,SAAU96N,GAC/B,OAAOsoO,EAAKlS,IAAIp2N,EAClB,IACA82N,EAAMsD,MAAMtD,EAAM+D,KAAK,SAAU76N,GAC/B,OAAOsoO,EAAK76N,IAAIzN,EAClB,KAIFsoO,EAAK/5M,UAGLuoM,EAAMsD,MAAMtD,EAAMuF,QAAQ,SAAUr8N,GAClC+xC,GAAO/xC,EAAG6vF,EAAMy4I,EAAKW,QAAQjpO,IAAI22N,MACnC,IACOG,EAAMD,OAAOR,GAAKY,SAASh7N,KAAK6rO,SACzC,EACAv5M,QAAS,WACP,IAEIpxB,EAAG0tB,EAFH4+M,EAAOxtO,KAAKgrO,MACdyC,EAAOztO,KAAKirO,MAEd,IAAK/pO,EAAI,EAAG0tB,EAAI5uB,KAAKkrO,MAAOhqO,EAAI0tB,IAAK1tB,EACnClB,KAAKstO,UAAUE,EAAKtsO,IACpBssO,EAAKtsO,GAAK,KAGZ,IAAKA,EAAI,EAAG0tB,EAAI5uB,KAAKmrO,MAAOjqO,EAAI0tB,IAAK1tB,EACnClB,KAAKstO,UAAUG,EAAKvsO,IACpBusO,EAAKvsO,GAAK,KAGZlB,KAAKkrO,MAAQlrO,KAAKmrO,MAAQ,CAC5B,IAqCFuG,GAAI3O,WAAa,CACf,KAAQ,MACR,SAAY,CACV,WAAa,GAEf,OAAU,CAAC,CACT,KAAQ,UACR,KAAQ,QACR,OAAS,GACR,CACD,KAAQ,QACR,KAAQ,QACR,UAAY,GACX,CACD,KAAQ,aACR,KAAQ,UACR,SAAW,GACV,CACD,KAAQ,SACR,KAAQ,UACR,SAAW,GACV,CACD,KAAQ,YACR,KAAQ,SACR,QAAW,GACV,CACD,KAAQ,SACR,KAAQ,SACR,OAAS,EACT,OAAU,GACT,CACD,KAAQ,UACR,KAAQ,OACR,OAAU,CAAC,SAAU,eACrB,QAAW,eACV,CACD,KAAQ,QACR,KAAQ,UACP,CACD,KAAQ,WACR,KAAQ,SACR,QAAW,IACV,CACD,KAAQ,WACR,KAAQ,SACR,QAAW,KACV,CACD,KAAQ,KACR,KAAQ,SACR,OAAS,EACT,QAAW,CAAC,QAAS,cAGzB,GAAS2O,GAAK1P,GAAW,CACvBluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAAI33M,EAAM23M,EAAM0F,KAAK1F,EAAMwF,UAAYxF,EAAMyF,WAC7C,IAAKtgO,KAAKmC,OAAS04N,EAAM8D,WAAaj4L,EAAE00L,WAAY,CAClD,IAAIiY,EAAUxY,EAAM2F,YAAY3F,EAAMuF,QAAQ/uM,OAC5CiR,EAAS6sM,GAAYkE,EAAS3sM,EAAEomM,QAASpmM,EAAEm5F,OAC3CozF,GAASvsL,EAAEomM,SAAW,IAAI97M,IAAIumL,IAC9Bj8J,EAAY5U,EAAE4U,UACd3vC,EAAS+6B,EAAE4sM,WAAa,MAAQ,MAChCvK,EAAKriM,EAAEqiM,IAAM,CAAC,QAAS,WACvBvoM,EAAS,GACP+Z,EAAS7T,EAAE2lL,OACbgjB,EAAW3oM,EAAEs9C,OAASt9C,EAAE2oM,UAAY,GACpCC,EAAW5oM,EAAEs9C,OAASt9C,EAAE4oM,UAAY,IACvB,QAAX3jO,GAA+B,QAAXA,GACtB,GAAM,2BAA6BA,GAEnB,WAAd+6B,EAAEW,UACCkT,IAAQA,EAAS,GAAO84L,EAAS3sM,EAAEm5F,QACxCwvG,EAAWC,EAAW5oM,EAAEs9C,OAASsrJ,GAEnChtM,EAAOl6B,SAAQ,SAAUosC,GACvB,IAAI++L,EAAU,GAAU/+L,EAAG8G,GAAW3vC,GACpCmN,EAAQ4tB,EAAE6mM,OAAS/4L,EAAE3zC,OAAS,EAEhCunO,GAAYmL,EADFh5L,GAAU,GAAO/F,GACC66L,EAAUC,GAAUlnO,SAAQ,SAAU6J,GAEhE,IADA,IAAIlO,EAAI,CAAC,EACA7C,EAAI,EAAGA,EAAI+xN,EAAMpyN,SAAUK,EAClC6C,EAAEkvN,EAAM/xN,IAAMszC,EAAE+3L,KAAKrrO,GAEvB6C,EAAEglO,EAAG,IAAM92N,EAAE,GACblO,EAAEglO,EAAG,IAAM92N,EAAE,GAAK6G,EAClB0nB,EAAOjgC,KAAK,GAAOwD,GACrB,GACF,IACI/D,KAAKmC,QAAO+gB,EAAIi3M,IAAMn6N,KAAKmC,OAC/BnC,KAAKmC,MAAQ+gB,EAAI1R,IAAM0R,EAAImO,OAASmP,CACtC,CACA,OAAOtd,CACT,IAeF,GAASyuN,GAAKnW,IAiBd,GAASqW,GAAM7P,GAAW,CACxBluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAAI2Y,EAASxzO,KACTqoB,EAAKwyM,EAAM6C,SACf,GAAI19N,KAAKygI,SAEP,OAAO,GAAOzgI,KAAM66N,EAAO76N,KAAKygI,UAElC,GAuBJ,SAAc/5F,GACZ,OAAOA,EAAE00L,SAAS,YAAc10L,EAAE00L,SAAS,WAAa10L,EAAE00L,SAAS,QAAU10L,EAAE00L,SAAS,UAC1F,CAzBQp2N,CAAK0hC,GAAI,OAAOm0L,EAAM4B,gBAC1B,GAAI/1L,EAAElG,OAEJ,OAAO,GAAOxgC,KAAM66N,EAAOxyM,EAAGo+B,MAAM/f,EAAElG,OAAQkG,EAAEsN,SAC3C,GAAItN,EAAEiwB,MAAO,CAElB,IAAIv4C,EAAIiK,EAAG62C,QAAQx4B,EAAEizB,IAAKjzB,EAAEsN,QAAQzM,MAAK,SAAUrhB,GAEjD,OADAstN,EAAO/yG,SAAW,GAAMv6G,EAAIR,MACrB,SAAU2C,GACf,OAAOA,EAAGy1M,MAAM0V,EAClB,CACF,IACA,MAAO,CACL78K,MAAOv4C,EAEX,CAEE,OAAOiK,EAAG62C,QAAQx4B,EAAEizB,IAAKjzB,EAAEsN,QAAQzM,MAAK,SAAUrhB,GAChD,OAAO,GAAOstN,EAAQ3Y,EAAO,GAAM30M,EAAIR,MACzC,GAEJ,IA2BFosN,GAAO/O,WAAa,CAClB,KAAQ,SACR,SAAY,CACV,UAAY,GAEd,OAAU,CAAC,CACT,KAAQ,QACR,KAAQ,QACR,OAAU,CAAC,CACT,KAAQ,OACR,KAAQ,OACR,UAAY,GACX,CACD,KAAQ,MACR,KAAQ,QACR,UAAY,KAEb,CACD,KAAQ,SACR,KAAQ,QACR,OAAS,GACR,CACD,KAAQ,SACR,KAAQ,QACR,OAAS,EACT,UAAY,GACX,CACD,KAAQ,KACR,KAAQ,SACR,OAAS,GACR,CACD,KAAQ,UACR,QAAW,QAGf,GAAS+O,GAAQ9P,GAAW,CAC1BluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IASE34N,EACA6T,EACA03N,EAXE7sM,EAAO8F,EAAEk5F,OACX53H,EAAQ0+B,EAAE1+B,MACVw4B,EAASkG,EAAElG,OACXwE,EAA4B,MAAb0B,EAAEihC,QAAkB,KAAOjhC,EAAEihC,QAC5CzR,EAAQxvB,EAAE00L,WACVxsM,EAAIgS,EAAK//B,OACPg7N,EAAO3lK,EAAQ2kK,EAAMuF,OAASvF,EAAM+D,IACtC17M,EAAM23M,EACNkO,EAAKriM,EAAEqiM,GAuCT,OAnCIvoM,GACFzqB,EAAIyqB,EAAO3/B,OACP+tB,EAAI,IAAMm6M,GACZ,GAAM,wDAEJA,GAAMA,EAAGloO,SAAW+tB,EAAI7Y,GAC1B,GAAM,sDAERgzN,EAAKA,GAAMvoM,EAAOxP,IAAIumL,IACtBr1M,EAAM,SAAa6B,GACjB,IAAK,IAAkBmD,EAAG+K,EAAjB/Q,EAAI,EAAGwF,EAAI,EAASxF,EAAI0tB,IAAK1tB,EAEpC,GAAS,OADT+Q,EAAIjK,EAAMhG,IAAI4+B,EAAK1/B,GAAG6C,KACP,IAAKmD,EAAI,EAAGA,EAAI6O,IAAK7O,IAAKR,EAAG3C,EAAEglO,EAAGriO,IAAMs+B,OAAkB,IAAK99B,EAAI,EAAGA,EAAI6O,IAAK7O,IAAKR,EAAG3C,EAAEglO,EAAGriO,IAAM85B,EAAOt5B,GAAG+K,EAE/H,IAEK82N,GACH,GAAM,+BAER7mO,EAAM,SAAa6B,GACjB,IAAK,IAAWkO,EAAP/Q,EAAI,EAAMA,EAAI0tB,IAAK1tB,EAC1B+Q,EAAIjK,EAAMhG,IAAI4+B,EAAK1/B,GAAG6C,IACtBA,EAAEglO,EAAG7nO,IAAW,MAAL+Q,EAAY+yB,EAAe/yB,CAE1C,GAEEikD,EACFhzC,EAAM23M,EAAMD,QAAO,IAEnB6S,EAAO7sM,EAAK85B,MAAK,SAAUh0D,GACzB,OAAOm0N,EAAMO,SAAS10N,EAAEk5H,OAC1B,IACAi8F,GAAQ4R,EAAO5S,EAAMiE,IAAM,GAE7BjE,EAAMsD,MAAMtC,EAAM35N,GACXghB,EAAI83M,SAAS+N,EACtB,IAYF,GAASgJ,GAAavW,IA4BtB,GAAS0W,GAAa1W,IAgBtB,GAAS2W,GAAQnQ,GAAW,CAC1BluN,UAAW,SAAmB4yB,EAAGm0L,GAG/B,OAFA76N,KAAKo7N,SAAS10L,EAAE00L,YAChBp7N,KAAKmC,MAAQukC,EACNm0L,EAAM0F,KAAK1F,EAAMwF,UAAYxF,EAAMyF,UAC5C,IAsBF8R,GAAMrP,WAAa,CACjB,KAAQ,QACR,SAAY,CACV,WAAa,EACb,SAAW,GAEb,OAAU,CAAC,CACT,KAAQ,UACR,KAAQ,QACR,OAAS,GACR,CACD,KAAQ,QACR,KAAQ,QACR,UAAY,GACX,CACD,KAAQ,QACR,KAAQ,QACR,UAAY,GACX,CACD,KAAQ,KACR,KAAQ,OACR,OAAUoH,GACV,QAAW,OACV,CACD,KAAQ,QACR,KAAQ,SACR,QAAW,GACV,CACD,KAAQ,MACR,KAAQ,WAGZ,GAASiI,GAAOrH,GAAW,CACzB0I,WAAY1I,GAAU7qO,UAAU4T,UAChCA,UAAW,SAAmB4yB,EAAGm0L,GAC/B,OAAO76N,KAAKyzO,WAOhB,SAAyB/sM,EAAGm0L,GAC1B,IAAIh6L,EAAM6F,EAAEm5F,MACV19H,EAAQukC,EAAEvkC,MACV8qD,GAAe,UAATvmB,EAAEumB,GAAiB,YAAcvmB,EAAEumB,KAAO,MAChD2yE,EAAS43E,GAAe32K,GAAKttB,OAAOikM,GAAer1M,IACnDy+B,EA8BJ,SAAmBC,EAAK6yM,EAAO7Y,GAC7B,IAAI7pM,EAAM,CAAC,EACT0wF,EAAO,GAST,OARAm5G,EAAMsD,MAAMtD,EAAMuF,QAAQ,SAAUr8N,GAClC,IAAI2C,EAAIm6B,EAAI98B,GACPitB,EAAItqB,KACPsqB,EAAItqB,GAAK,EACTg7G,EAAKnhH,KAAKmG,GAEd,IACAg7G,EAAKnvG,KAAKkoM,IACHi5B,EAAQhyH,EAAK16F,MAAM,EAAG0sN,GAAShyH,CACxC,CA1CWiyH,CAAU9yM,EAAK6F,EAAEgtM,OAAS,EAAG7Y,GAIlCA,EAAM8D,WAAWj4L,EAAExkC,IAAI,YAAa,KAAM,MAAM,GACpD,MAAO,CACL2+B,IAAK6F,EAAE7F,IACPisM,QAASpmM,EAAEomM,QACX//K,IAAKnsB,EAAK5P,KAAI,WACZ,OAAOi8B,CACT,IACA2yE,OAAQh/F,EAAK5P,KAAI,SAAUtqB,GACzB,OAWN,SAAaA,EAAGm6B,EAAK1+B,EAAOy9H,GAC1B,OAAOy3E,IAAS,SAAUtxL,GACxB,OAAO8a,EAAI9a,KAAOrf,EAAIvE,EAAM4jB,GAAKwuB,GACnC,GAAGqrF,EAAQl5H,EAAI,GACjB,CAfa,CAAIA,EAAGm6B,EAAK1+B,EAAOy9H,EAC5B,IACAmpG,GAAInoM,EAAK5P,KAAI,SAAUtqB,GACrB,OAAOA,EAAI,EACb,IACA00N,SAAU10L,EAAE00L,SAASh4N,KAAKsjC,GAE9B,CA/B2BktM,CAAgBltM,EAAGm0L,GAAQA,EACpD,IAmEF,GAASwX,GAAUxC,GAAO,CACxB/7N,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAAIgZ,EAAS7zO,KACTuwO,EAAO7pM,EAAE8pM,QACX3wG,EAAQn5F,EAAEm5F,MACV2wG,EAAU,SAAiBzsO,GACzB,OAAO8vO,EAAOrD,QAAQ7W,GAAQ51N,GAAIwsO,EAAM1V,EAAO92N,EACjD,EAyCF,OAxCI2iC,EAAE00L,SAAS,UAAYv7F,GAASg7F,EAAMO,SAAS5jB,GAAe33E,MAChE,GAAM,iDAER7/H,KAAK6wO,cAEDhxG,GACFg7F,EAAMsD,MAAMtD,EAAMiE,KAAK,SAAU/6N,GAC/B,IAAI2sO,EAAKF,EAAQzsO,GACjB87H,EAAM97H,GAAGqE,SAAQ,SAAUs+B,GACzB,OAAOgqM,EAAGtW,IAAI1zL,EAChB,GACF,IACAm0L,EAAMsD,MAAMtD,EAAM+D,KAAK,SAAU76N,GAC/B,IAAI2sO,EAAKF,EAAQzsO,GACjB87H,EAAM97H,GAAGqE,SAAQ,SAAUs+B,GACzB,OAAOgqM,EAAGl/N,IAAI,GAAOk1B,GACvB,GACF,IACAm0L,EAAMsD,MAAMtD,EAAMgE,KAAK,SAAU96N,GAC/B,IAAI2sO,EAAKF,EAAQzsO,GACjB87H,EAAM97H,GAAGqE,SAAQ,SAAUs+B,GACzB,OAAOgqM,EAAGvW,IAAIzzL,EAChB,GACF,MAEAm0L,EAAMsD,MAAMtD,EAAMiE,KAAK,SAAU/6N,GAC/B,OAAOysO,EAAQzsO,GAAGq2N,IAAIr2N,EACxB,IACA82N,EAAMsD,MAAMtD,EAAM+D,KAAK,SAAU76N,GAC/B,OAAOysO,EAAQzsO,GAAGyN,IAAIzN,EACxB,IACA82N,EAAMsD,MAAMtD,EAAMgE,KAAK,SAAU96N,GAC/B,OAAOysO,EAAQzsO,GAAGo2N,IAAIp2N,EACxB,KAEE82N,EAAMxf,SACRwf,EAAMkG,UAAS,WACb,OAAO8S,EAAOx4B,OAChB,IAEKwf,CACT,IAkBFyX,GAAQvP,WAAa,CACnB,KAAQ,UACR,SAAY,CACV,WAAa,EACb,SAAW,GAEb,OAAU,CAAC,CACT,KAAQ,SACR,KAAQ,QACR,OAAS,GACR,CACD,KAAQ,KACR,KAAQ,SACR,MAAQ,EACR,OAAS,KAGb,GAASuP,GAAStQ,GAAW,CAC3BluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAMIiZ,EANA5wN,EAAM23M,EAAM0F,KAAK1F,EAAMwF,WACzBzgG,EAASl5F,EAAEk5F,OACXmpG,EAAKznE,GAAW56H,EAAEk5F,OAAQl5F,EAAEqiM,IAAM,IAClCjP,EAASl6F,EAAS,SAAU9hH,EAAG/Z,GAC7B,OAyBR,SAAiB+Z,EAAG/Z,EAAG67H,EAAQmpG,GAC7B,IAAK,IAAI7nO,EAAI,EAAG0tB,EAAIgxG,EAAO/+H,OAAQK,EAAI0tB,IAAK1tB,EAC1C6C,EAAEglO,EAAG7nO,IAAM0+H,EAAO1+H,GAAG4c,GAEvB,OAAO/Z,CACT,CA9BegwO,CAAQj2N,EAAG/Z,EAAG67H,EAAQmpG,EAC/B,EAAIhP,GAqBN,OAnBI/5N,KAAKmC,MACP2xO,EAAM9zO,KAAKmC,OAEX04N,EAAQA,EAAM4F,SACdqT,EAAM9zO,KAAKmC,MAAQ,CAAC,GAEtB04N,EAAMsD,MAAMtD,EAAMgE,KAAK,SAAU96N,GAC/B,IAAI2P,EAAKimN,GAAQ51N,GACjBmf,EAAIi3M,IAAI55N,KAAKuzO,EAAIpgO,IACjBogO,EAAIpgO,GAAM,IACZ,IACAmnN,EAAMsD,MAAMtD,EAAM+D,KAAK,SAAU76N,GAC/B,IAAIiwO,EAAKla,EAAO/1N,EAAG,GAAO,CAAC,IAC3B+vO,EAAIna,GAAQ51N,IAAMiwO,EAClB9wN,EAAI1R,IAAIjR,KAAKyzO,EACf,IACAnZ,EAAMsD,MAAMtD,EAAMiE,KAAK,SAAU/6N,GAC/Bmf,EAAIk3M,IAAI75N,KAAKu5N,EAAO/1N,EAAG+vO,EAAIna,GAAQ51N,KACrC,IACOmf,CACT,IAmBF,GAAS,GAAO8+M,GAAW,CACzBluN,UAAW,SAAmB4yB,EAAGm0L,GAE/B,OADA76N,KAAKmC,MAAQukC,EAAEvkC,MACRukC,EAAE00L,SAAS,SAAWP,EAAM0F,KAAK1F,EAAMwF,UAAYxF,EAAMyF,WAAazF,EAAM4B,eACrF,IAsBF8V,GAASxP,WAAa,CACpB,KAAQ,WACR,SAAY,CACV,WAAa,EACb,SAAW,GAEb,OAAU,CAAC,CACT,KAAQ,UACR,KAAQ,QACR,OAAS,GACR,CACD,KAAQ,QACR,KAAQ,QACR,UAAY,GACX,CACD,KAAQ,QACR,KAAQ,SACR,OAAS,GACR,CACD,KAAQ,OACR,KAAQ,SACR,QAAW,KACV,CACD,KAAQ,KACR,KAAQ,SACR,OAAS,EACT,QAAW,CAAC,OAAQ,YA+CxB,SAASkR,GAAM3yN,GACb0gN,GAAUpgO,KAAK5B,KAAM,KAAMshB,EAC7B,CA4CA,SAAS4yN,GAAO5yN,GACd0gN,GAAUpgO,KAAK5B,KAAM,GAAIshB,GACzBthB,KAAK8wB,MAAQ,CACf,CAoGA,SAASqjN,GAAS7yN,GAChB0gN,GAAUpgO,KAAK5B,KAAM,KAAMshB,EAC7B,CA+CA,SAAS8yN,GAAM9yN,GACb0gN,GAAUpgO,KAAK5B,KAAM,KAAMshB,GAC3BthB,KAAKo7N,UAAS,EAChB,CAeA,SAASiZ,GAAS/yN,GAChB0gN,GAAUpgO,KAAK5B,KAAM,KAAMshB,EAC7B,CArQA,GAASixN,GAAUvQ,GAAW,CAC5BluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAAI33M,EAAM23M,EAAM0F,KAAK1F,EAAMwF,UAAYxF,EAAMyF,WAC3CyI,EAAKriM,EAAEqiM,IAAM,CAAC,OAAQ,SACxB,GAAI/oO,KAAKmC,QAAUukC,EAAE00L,aAAeP,EAAM8D,UAExC,OADAz7M,EAAImO,OAASrxB,KAAKmC,MACX+gB,EAET,IACEof,EAAS6sM,GADEtU,EAAM2F,YAAY3F,EAAMuF,QAAQ/uM,OACdqV,EAAEomM,QAASpmM,EAAEm5F,OAC1CozF,GAASvsL,EAAEomM,SAAW,IAAI97M,IAAIumL,IAC9B/2K,EAAS,GACTinB,EAAO/gB,EAAE+gB,MAAQ,IACjBrpC,EAAIsoB,EAAE4tM,OAAS,GAAM7sL,EAAO,EAAG,EAdvB,MAcoCA,GAC5C74B,EAAIxQ,EAAEvd,OAeR,OAdAyhC,EAAOl6B,SAAQ,SAAUosC,GAEvB,IADA,IAAIjvB,EAAIy+M,GAAUxvL,EAAGp2B,GACZld,EAAI,EAAGA,EAAI0tB,IAAK1tB,EAAG,CAE1B,IADA,IAAI6C,EAAI,CAAC,EACA09M,EAAM,EAAGA,EAAMwR,EAAMpyN,SAAU4gN,EACtC19M,EAAEkvN,EAAMxR,IAAQjtK,EAAE+3L,KAAK9qB,GAEzB19M,EAAEglO,EAAG,IAAM3qN,EAAEld,GACb6C,EAAEglO,EAAG,IAAMxjN,EAAErkB,GACbs/B,EAAOjgC,KAAK,GAAOwD,GACrB,CACF,IACI/D,KAAKmC,QAAO+gB,EAAIi3M,IAAMn6N,KAAKmC,OAC/BnC,KAAKmC,MAAQ+gB,EAAI1R,IAAM0R,EAAImO,OAASmP,EAC7Btd,CACT,IAgBF,GAAS+wN,GAAOjS,GAAW,CACzBluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAAI33M,EAAK4wN,EA8BT,OA7BI9zO,KAAKmC,MACP2xO,EAAM9zO,KAAKmC,OAEX+gB,EAAM23M,EAAQA,EAAM4F,SACpBqT,EAAM9zO,KAAKmC,MAAQ,CAAC,GAElBukC,EAAEozL,SACJ52M,EAAM23M,EAAM0F,KAAK1F,EAAMwF,WACvBxF,EAAMsD,MAAMtD,EAAMgE,KAAK,SAAU96N,GAC/B,IAAI2P,EAAKimN,GAAQ51N,GACjBmf,EAAIi3M,IAAI55N,KAAKuzO,EAAIpgO,IACjBogO,EAAIpgO,GAAM,IACZ,IACAmnN,EAAMsD,MAAMtD,EAAM+D,KAAK,SAAU76N,GAC/B,IAAIiwO,EAAKla,GAAO/1N,GAChB+vO,EAAIna,GAAQ51N,IAAMiwO,EAClB9wN,EAAI1R,IAAIjR,KAAKyzO,EACf,IACAnZ,EAAMsD,MAAMtD,EAAMiE,KAAK,SAAU/6N,GAC/B,IAAIiwO,EAAKF,EAAIna,GAAQ51N,IACrB,IAAK,IAAI2C,KAAK3C,EACZiwO,EAAGttO,GAAK3C,EAAE2C,GAGVwc,EAAI83M,SAASt0N,GAEfwc,EAAIk3M,IAAI75N,KAAKyzO,EACf,KAEK9wN,CACT,IAcFgxN,GAAOnR,WAAa,CAClB,KAAQ,SACR,SAAY,CAAC,EACb,OAAU,CAAC,CACT,KAAQ,OACR,KAAQ,SACR,QAAW,OAGf,GAASmR,GAAQlS,GAAW,CAC1BluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAAI33M,EAAM23M,EAAM0F,KAAK1F,EAAMwF,WACzBjG,EAAM1zL,EAAE00L,SAAS,QACjB5pI,EAAM9qD,EAAEpC,KACRtT,EAAMhxB,KAAKmC,MAAMwvB,QAAO,SAAU5b,EAAGhS,GACnC,OAAOgS,EAAE4jN,GAAQ51N,IAAM,EAAGgS,CAC5B,GAAG,CAAC,GACFmQ,EAAMlmB,KAAKmC,MACbw6C,EAAM38C,KAAK8wB,MACXyjN,EAAM,EAGR,SAAS/uO,EAAOzB,GACd,IAAIqa,EAAG8mB,EACHhf,EAAIrlB,OAAS2wF,EACftrE,EAAI3lB,KAAKwD,IAETmhC,MAAUyX,EAAM,GAAK,OACXz2B,EAAIrlB,QAAUqkC,GAAOqvM,IAC7Bn2N,EAAI8H,EAAIgf,GACJlU,EAAI2oM,GAAQv7M,KAAK8E,EAAIi3M,IAAI55N,KAAK6d,GAClC8H,EAAIgf,GAAOnhC,KAGb44C,CACJ,CA0BA,GAzBIk+K,EAAMV,IAAIt5N,SAEZg6N,EAAMsD,MAAMtD,EAAMgE,KAAK,SAAU96N,GAC/B,IAAI2P,EAAKimN,GAAQ51N,GACbitB,EAAItd,KACNsd,EAAItd,IAAO,EACXwP,EAAIi3M,IAAI55N,KAAKwD,MAEb44C,CACJ,IAGAz2B,EAAMA,EAAI3V,QAAO,SAAUxM,GACzB,OAA4B,IAArBitB,EAAI2oM,GAAQ51N,GACrB,MAEG82N,EAAMV,IAAIt5N,QAAUu5N,IAAQl0M,EAAIrlB,OAAS2wF,GAAOqpI,EAAMxpM,SAEzDkjN,EAAM53L,EAAMz2B,EAAIrlB,OAChBg6N,EAAMsD,MAAMtD,EAAMuF,QAAQ,SAAUr8N,GAE7BitB,EAAI2oM,GAAQ51N,KAAKyB,EAAOzB,EAC/B,IACAwwO,GAAO,GAELna,GAAOl0M,EAAIrlB,OAAS2wF,EAAK,CAE3B,IADA,IAAI5iE,EAAI1I,EAAIrlB,OAAS2wF,EACZtwF,EAAI,EAAGA,EAAI0tB,IAAK1tB,EACvB8vB,EAAI2oM,GAAQzzM,EAAIhlB,MAAQ,EACxBgiB,EAAIi3M,IAAI55N,KAAK2lB,EAAIhlB,IAEnBglB,EAAMA,EAAIc,MAAM4H,EAClB,CAmBA,OAlBIisM,EAAMT,IAAIv5N,QAEZg6N,EAAMsD,MAAMtD,EAAMiE,KAAK,SAAU/6N,GAC3BitB,EAAI2oM,GAAQ51N,KAAKmf,EAAIk3M,IAAI75N,KAAKwD,EACpC,IAEE82N,EAAMrpN,IAAI3Q,QAEZg6N,EAAMsD,MAAMtD,EAAM+D,IAAKp5N,IAErBq1N,EAAMrpN,IAAI3Q,QAAU0zO,EAAM,KAE5BrxN,EAAI1R,IAAM0U,EAAI3V,QAAO,SAAUxM,GAC7B,OAAQitB,EAAI2oM,GAAQ51N,GACtB,KAEF/D,KAAK8wB,MAAQ6rB,EACb38C,KAAKmC,MAAQ+gB,EAAImO,OAASnL,EACnBhD,CACT,IAcFixN,GAASpR,WAAa,CACpB,KAAQ,WACR,SAAY,CACV,WAAa,EACb,SAAW,GAEb,OAAU,CAAC,CACT,KAAQ,QACR,KAAQ,SACR,UAAY,GACX,CACD,KAAQ,OACR,KAAQ,SACR,UAAY,GACX,CACD,KAAQ,OACR,KAAQ,SACR,QAAW,GACV,CACD,KAAQ,KACR,KAAQ,SACR,QAAW,UAGf,GAASoR,GAAUnS,GAAW,CAC5BluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAAI76N,KAAKmC,OAAUukC,EAAE00L,WAArB,CACA,IAAIl4M,EAAM23M,EAAM2F,cAAcD,KAAK1F,EAAMiE,KACvCiK,EAAKriM,EAAEqiM,IAAM,OAQf,OAPA7lN,EAAIi3M,IAAMn6N,KAAKmC,MAAQ04N,EAAMV,IAAI5mN,OAAOvT,KAAKmC,OAAS04N,EAAMV,IAC5Dn6N,KAAKmC,MAAQ,GAAMukC,EAAEhgB,MAAOggB,EAAE1hC,KAAM0hC,EAAE+gB,MAAQ,GAAGz2B,KAAI,SAAU/e,GAC7D,IAAIlO,EAAI,CAAC,EAET,OADAA,EAAEglO,GAAM92N,EACD,GAAOlO,EAChB,IACAmf,EAAI1R,IAAMqpN,EAAMrpN,IAAI+B,OAAOvT,KAAKmC,OACzB+gB,CAVgC,CAWzC,IAcF,GAASkxN,GAAOpS,GAAW,CACzBluN,UAAW,SAAmB4yB,EAAGm0L,GAE/B,OADA76N,KAAKmC,MAAQ04N,EAAMxpM,OACZwpM,EAAM8D,UAAY9D,EAAM0F,KAAK1F,EAAMwF,UAAYxF,EAAMyF,WAAazF,EAAM4B,eACjF,IAYF,IAAI+X,GAAS,CAAC,QAAS,SAmHvB,SAASC,GAAWnzN,GAClB0gN,GAAUpgO,KAAK5B,KAAMk7M,KAAW55L,EAClC,CAqCA,SAASozN,GAAOpzN,GACd0gN,GAAUpgO,KAAK5B,KAAM,KAAMshB,EAC7B,CA3JA+yN,GAAStR,WAAa,CACpB,KAAQ,WACR,SAAY,CACV,UAAY,GAEd,OAAU,CAAC,CACT,KAAQ,QACR,KAAQ,QACR,UAAY,GACX,CACD,KAAQ,WACR,KAAQ,UACR,SAAW,GACV,CACD,KAAQ,QACR,KAAQ,OACR,OAAUna,GACV,OAAS,GACR,CACD,KAAQ,OACR,KAAQ,SACR,QAAW,GACV,CACD,KAAQ,UACR,KAAQ,SACR,QAAW,IACV,CACD,KAAQ,SACR,KAAQ,OACR,OAAS,GACR,CACD,KAAQ,WACR,KAAQ,OACR,QAAW,QACX,OAAU,CAAC,QAAS,QACnB,CACD,KAAQ,KACR,KAAQ,SACR,OAAS,EACT,OAAU,EACV,QAAW4rB,MAGf,GAASH,GAAUrS,GAAW,CAC5BluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAAIh7F,EAAQn5F,EAAEm5F,MACZsuG,GAAsB,IAAfznM,EAAElkC,SACTmyO,EAAqB,QAAfjuM,EAAEkuM,SACRnjN,EAAQzxB,KAAK60O,OAAOnuM,EAAGm0L,GACvB13I,GAAUwxJ,EAAMtpB,GAAc,IAAc55L,EAAMm9G,MAAMzrD,OACxD4lJ,EAAKriM,EAAEqiM,IAAMyL,GACbM,EAAK/L,EAAG,GACRgM,EAAKhM,EAAG,GACRthL,EAAOh2B,EAAMg2B,KACXvtC,EAAMuX,EAAM/K,OAASniB,IACvB4V,EAAMsX,EAAMzsB,OAAST,IACrBs3N,EAAOhB,EAAM+D,IAsBf,OArBIl4L,EAAE00L,YAAcP,EAAM8D,QAAQ9D,EAAMgE,MAAQhE,EAAMO,SAAS5jB,GAAe33E,OAE5Eg8F,GADAhB,EAAQA,EAAMD,QAAO,IACRwF,OACblmN,EAAM3V,IACN4V,GAAO5V,KAETs2N,EAAMsD,MAAMtC,GAAM,SAAU93N,GAC1B,IACIoa,EAAG8E,EADHhR,EAAI4tH,EAAM97H,GAEL,MAALkO,GACFlO,EAAE+wO,GAAM,KACJ3G,IAAMpqO,EAAEgxO,GAAM,QAElBhxO,EAAE+wO,GAAM32N,EAAI8E,EAAIwO,EAAMxf,GAClBk8N,IAAMpqO,EAAEgxO,GAAM9xN,EAAIkgE,EAAOhlE,EAAGspC,IAC5BtpC,EAAIjE,IAAKA,EAAMiE,GACf8E,EAAI9I,IAAKA,EAAM8I,GAEvB,IACAwO,EAAM/K,MAAQxM,EACduX,EAAMzsB,KAAOmV,EACN0gN,EAAMG,SAASmT,EAAOpF,EAAK+L,EACpC,EACAD,OAAQ,SAAgBnuM,EAAGm0L,GACzB,IAAI8Z,EAAqB,QAAfjuM,EAAEkuM,SAGR/iL,EAAOnrB,EAAEqiL,MAAQ,CACjBA,MAAOriL,EAAEqiL,MACTthK,KAAM/gB,EAAE+gB,MAAQ,GACd,GAAQ,CACV4kK,OAAQ3lL,EAAE2lL,QAAU,GAAOwO,EAAM2F,YAAY3F,EAAMuF,QAAQ/uM,OAAQqV,EAAEm5F,OACrEysF,QAAS5lL,EAAE4lL,UAEbvD,EAAQl3J,EAAKk3J,MACbthK,EAAOoK,EAAKpK,KAGVutL,EAASlsB,GAAUC,GACrBzzL,EAAOt1B,KAAKmC,OAAS,CAAC,EACtBsvB,GAASkjN,EAAMzpB,GAAWH,IAAWiqB,EAAQvtL,GAM/C,OALAh2B,EAAMm9G,KAAO6pE,GAAKu8B,GAClBvjN,EAAMs3L,MAAQisB,EACdvjN,EAAMg2B,KAAOA,EACbh2B,EAAM/K,MAAQ4O,EAAK5O,MACnB+K,EAAMzsB,KAAOswB,EAAKtwB,KACXhF,KAAKmC,MAAQsvB,CACtB,IAaF,GAASgjN,GAAYzS,GAAW,CAC9BluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAAIxyM,EAAKwyM,EAAM6C,SACb79F,EAAQn5F,EAAEm5F,MACV73H,EAAQhI,KAAKmC,MACbD,EAAM,SAAa6B,GACjB,OAAOiE,EAAM9F,IAAI29H,EAAM97H,GAAIA,EAC7B,EACEq2N,GAAM,EAcV,OAbI1zL,EAAE00L,SAAS,UAAYP,EAAMO,SAASv7F,EAAMD,SAC9C53H,EAAMuH,QACNsrN,EAAMsD,MAAMtD,EAAMuF,OAAQl+N,IACjB24N,EAAM8D,WACf9D,EAAMsD,MAAMtD,EAAMgE,KAAK,SAAU96N,GAC/B,OAAOiE,EAAMq+B,OAAOw5F,EAAM97H,GAC5B,IACA82N,EAAMsD,MAAMtD,EAAM+D,IAAK18N,IAEvBk4N,GAAM,EAERp6N,KAAKo7N,SAAShB,GACVpyN,EAAMu4D,MAAQl4C,EAAG65M,gBAAgB75M,EAAG04M,SAAS/4N,EAAMqzM,OAChDwf,EAAM0F,MACf,IAgBF,GAASmU,GAAQ1S,GAAW,CAC1BluN,UAAW,SAAmB4yB,EAAGm0L,KACpB76N,KAAKmC,OAASukC,EAAE00L,SAAS,UAAY10L,EAAE00L,SAAS,SAAWP,EAAM8D,WAAaj4L,EAAEn0B,MAAQsoN,EAAMO,SAAS10L,EAAEn0B,KAAKqtH,WAEvH5/H,KAAKmC,OAASukC,EAAEn0B,KAAOsoN,EAAMxpM,OAAOrK,QAAQzU,KAAKynN,GAActzL,EAAEn0B,OAASsoN,EAAMxpM,QAAQL,IAAI0V,EAAEm5F,OAElG,IAWF,IAAIo1G,GAAY,CACdC,WAAY,WACV,MAAO,CACL3/M,KAAM,SAAc7H,GAClB,OAAOA,EAAE1lB,MAAQ,CACnB,EAEJ,EACA2zN,KAAM,WACJ,IAAIA,EACJ,MAAO,CACLrxN,KAAM,WACJ,OAAOqxN,EAAO,CAChB,EACApmM,KAAM,SAAc7H,GAClB,IAAIxsB,EAAIwsB,EAAE1lB,MACR0d,EAAOgI,EAAEhI,KACX,OAAOxkB,GAAKwsB,EAAElb,QAAQkT,EAAKxkB,EAAI,GAAIwkB,EAAKxkB,IAAMy6N,EAAOz6N,EAAI,EAAIy6N,CAC/D,EAEJ,EACAwZ,WAAY,WACV,IAAIC,EACJ,MAAO,CACL9qO,KAAM,WACJ,OAAO8qO,EAAQ,CACjB,EACA7/M,KAAM,SAAc7H,GAClB,IAAIxsB,EAAIwsB,EAAE1lB,MACR+d,EAAI2H,EAAEhI,KACR,OAAOxkB,GAAKwsB,EAAElb,QAAQuT,EAAE7kB,EAAI,GAAI6kB,EAAE7kB,MAAQk0O,EAAQA,CACpD,EAEJ,EACAC,aAAc,WACZ,IAAI1Z,EAAOsZ,GAAUtZ,OACnBh4N,EAAQg4N,EAAKpmM,KACf,MAAO,CACLjrB,KAAMqxN,EAAKrxN,KACXirB,KAAM,SAAc7H,GAClB,OAAQ/pB,EAAM+pB,GAAK,IAAMA,EAAEhI,KAAK7kB,OAAS,EAC3C,EAEJ,EACAy0O,UAAW,WACT,IAAIC,EACJ,MAAO,CACLjrO,KAAM,WACJ,OAAOirO,EAAO,CAChB,EACAhgN,KAAM,SAAc7H,GAClB,IAAI3H,EAAI2H,EAAEhI,KACRP,EAAIuI,EAAElb,QACJtR,EAAIwsB,EAAE1lB,MACV,GAAIutO,EAAOr0O,EAAG,CACZ,KAAOA,EAAI,EAAI6kB,EAAEllB,SAAWskB,EAAEY,EAAE7kB,GAAI6kB,EAAE7kB,EAAI,OAAOA,EACjDq0O,EAAOr0O,CACT,CACA,OAAQ,EAAIq0O,GAAQxvN,EAAEllB,MACxB,EAEJ,EACA20O,MAAO,SAAe31G,EAAOruC,IAC3BA,GAAOA,GACK,GAAI,GAAM,wCACtB,IAAI+jJ,EAAON,GAAUK,YACnBG,EAASF,EAAKhgN,KAChB,MAAO,CACLjrB,KAAMirO,EAAKjrO,KACXirB,KAAM,SAAc7H,GAClB,OAAOzT,KAAKisJ,KAAK10E,EAAMikJ,EAAO/nN,GAChC,EAEJ,EACAgoN,IAAK,SAAa71G,EAAO18C,GAEvB,OADAA,GAAUA,GAAU,EACb,CACL5tD,KAAM,SAAc7H,GAClB,IAAIxsB,EAAIwsB,EAAE1lB,MAAQm7E,EAClB,OAAOjiF,GAAK,EAAI2+H,EAAMnyG,EAAEhI,KAAKxkB,IAAM,IACrC,EAEJ,EACAy0O,KAAM,SAAc91G,EAAO18C,GAEzB,OADAA,GAAUA,GAAU,EACb,CACL5tD,KAAM,SAAc7H,GAClB,IAAIxsB,EAAIwsB,EAAE1lB,MAAQm7E,EAChBp9D,EAAI2H,EAAEhI,KACR,OAAOxkB,EAAI6kB,EAAEllB,OAASg/H,EAAM95G,EAAE7kB,IAAM,IACtC,EAEJ,EACA00O,YAAa,SAAqB/1G,GAChC,MAAO,CACLtqG,KAAM,SAAc7H,GAClB,OAAOmyG,EAAMnyG,EAAEhI,KAAKgI,EAAEmuB,IACxB,EAEJ,EACAg6L,WAAY,SAAoBh2G,GAC9B,MAAO,CACLtqG,KAAM,SAAc7H,GAClB,OAAOmyG,EAAMnyG,EAAEhI,KAAKgI,EAAEouB,GAAK,GAC7B,EAEJ,EACAg6L,UAAW,SAAmBj2G,EAAOk2G,GAGnC,OAFAA,GAAOA,GACK,GAAI,GAAM,4CACf,CACLxgN,KAAM,SAAc7H,GAClB,IAAIxsB,EAAIwsB,EAAEmuB,IAAMk6L,EAAM,GACtB,OAAO70O,EAAIwsB,EAAEouB,GAAK+jF,EAAMnyG,EAAEhI,KAAKxkB,IAAM,IACvC,EAEJ,EACA80O,WAAY,SAAoBn2G,GAC9B,IAAIvqG,EACJ,MAAO,CACLhrB,KAAM,WACJ,OAAOgrB,EAAO,IAChB,EACAC,KAAM,SAAc7H,GAClB,IAAIzb,EAAI4tH,EAAMnyG,EAAEhI,KAAKgI,EAAE1lB,QACvB,OAAY,MAALiK,EAAYqjB,EAAOrjB,EAAIqjB,CAChC,EAEJ,EACA2gN,WAAY,SAAoBp2G,GAC9B,IAAI5tH,EAAG/Q,EACP,MAAO,CACLoJ,KAAM,WACJ,OAAO2H,EAAI,KAAM/Q,GAAK,CACxB,EACAq0B,KAAM,SAAc7H,GAClB,IAAI3H,EAAI2H,EAAEhI,KACV,OAAOgI,EAAE1lB,OAAS9G,EAAI+Q,GAAK/Q,EAKnC,SAAc2+H,EAAOn6G,EAAM1d,GACzB,IAAK,IAAI4mB,EAAIlJ,EAAK7kB,OAAQmH,EAAQ4mB,IAAK5mB,EAAO,CAE5C,GAAS,MADD63H,EAAMn6G,EAAK1d,IACJ,OAAOA,CACxB,CACA,OAAQ,CACV,CAXuCwL,CAAKqsH,EAAO95G,EAAG2H,EAAE1lB,QAAU,GAAK9G,EAAI6kB,EAAEllB,OAAQoR,EAAI,MAAQA,EAAI4tH,EAAM95G,EAAE7kB,GACvG,EAEJ,GASF,IAAIg1O,GAAiB1+N,OAAOopB,KAAKq0M,IACjC,SAASkB,GAAYzvM,GACnB,IAAIqmB,EAAM,GAAMrmB,EAAEqmB,KAChB6yE,EAAS,GAAMl5F,EAAEk5F,QACjBt+G,EAAS,GAAMolB,EAAEplB,QACjBynN,EAAK,GAAMriM,EAAEqiM,IACb4D,EAAU3sO,KAAK2sO,QAAU,GACzByJ,EAAUp2O,KAAKo2O,QAAU,GACzB1J,EAAS,CAAC,EACV17M,EAAM,CAAC,EACPu8M,EAAS,GACTF,EAAW,GACTgJ,GAAY,EAChB,SAASC,EAAYjzO,GACnB,GAAMm0M,GAAen0M,IAAI+E,SAAQ,SAAUs+B,GACzC,OAAOgmM,EAAOhmM,GAAK,CACrB,GACF,CACA4vM,EAAY5vM,EAAEn0B,MACdw6C,EAAI3kD,SAAQ,SAAU6kD,EAAI/rD,GACxB,IAAI2+H,EAAQD,EAAO1+H,GACjB+rO,EAAQ11B,GAAa13E,GACrB59H,EAAO6mO,GAAY77K,EAAIggL,EAAOlE,EAAG7nO,IAKnC,GAJAo1O,EAAYz2G,GACZ8sG,EAAQpsO,KAAK0B,GAGT,GAAegzO,GAAWhoL,GAC5BmpL,EAAQ71O,KA1Ld,SAAkB0sD,EAAI4yE,EAAO8d,EAAOorF,GAClC,IAAI11N,EAAK4hO,GAAUhoL,GAAI4yE,EAAO8d,GAC9B,MAAO,CACLrzI,KAAM+I,EAAG/I,MAAQqtC,GACjBnyC,OAAQ,SAAgBkoB,EAAG3pB,GACzBA,EAAEglO,GAAM11N,EAAGkiB,KAAK7H,EAClB,EAEJ,CAkLmB6oN,CAAStpL,EAAI2yE,EAAO1+H,GAAIogB,EAAOpgB,GAAIe,QAI7C,CAIH,GAHa,MAAT49H,GAAwB,UAAP5yE,GACnB,GAAM,mCAEG,UAAPA,EAEF,YADAsgL,EAAOhtO,KAAK0B,GAGdo0O,GAAY,EACZ,IAAItgO,EAAIib,EAAIi8M,GACPl3N,KACHA,EAAIib,EAAIi8M,GAAS,IACfptG,MAAQA,EACVwtG,EAAS9sO,KAAKwV,IAEhBA,EAAExV,KAAK6pO,GAAcn9K,EAAIhrD,GAC3B,CACF,KACIsrO,EAAO1sO,QAAUwsO,EAASxsO,UAC5Bb,KAAKuuI,KAwBT,SAAc8+F,EAAUE,EAAQ8I,GAC9BhJ,EAAWA,EAASr8M,KAAI,SAAUjb,GAChC,OAAO00N,GAAgB10N,EAAGA,EAAE8pH,MAC9B,IACA,IAAI0O,EAAO,CACT/8C,IAAK,EACLk5I,IAAK,KACLxiG,OAAO,EACPp3G,MAAOy8M,GAET,IAAK8I,EAIH,IAHA,IAAIznN,EAAIy+M,EAASxsO,OACfsd,EAAIowH,EAAKm8F,IAAMjqM,MAAM7R,GACrB1tB,EAAI,EACCA,EAAI0tB,IAAK1tB,EAAGid,EAAEjd,GAAK,IAAImsO,EAASnsO,GAAGqtI,GAE5C,GAAIA,EAAKrG,MACP,IAAIA,EAAQqG,EAAK7oH,KAAO,IAAImlN,GAiC9B,OA/BAt8F,EAAK/8H,IAAM,SAAUzN,GAEnB,GADAwqI,EAAK/8C,KAAO,GACR6kJ,EAAJ,CACInuG,GAAOA,EAAM12H,IAAIzN,GACrB,IAAK,IAAI29M,EAAM,EAAGA,EAAM9yL,IAAK8yL,EAC3BvjM,EAAEujM,GAAKlwM,IAAI2M,EAAEujM,GAAK1/M,IAAI+B,GAAIA,EAHP,CAKvB,EACAwqI,EAAK4rF,IAAM,SAAUp2N,GAEnB,GADAwqI,EAAK/8C,KAAO,GACR6kJ,EAAJ,CACInuG,GAAOA,EAAMiyF,IAAIp2N,GACrB,IAAK,IAAIyyO,EAAM,EAAGA,EAAM5nN,IAAK4nN,EAC3Br4N,EAAEq4N,GAAKrc,IAAIh8M,EAAEq4N,GAAKx0O,IAAI+B,GAAIA,EAHP,CAKvB,EACAwqI,EAAKrsI,IAAM,SAAU6B,GACnB,IAAI7C,EAAG0tB,EAMP,IAHIs5G,GAAOA,EAAM1nG,SAGZt/B,EAAI,EAAG0tB,EAAI2+M,EAAO1sO,OAAQK,EAAI0tB,IAAK1tB,EAAG6C,EAAEwpO,EAAOrsO,IAAMqtI,EAAK/8C,IAC/D,IAAK6kJ,EAAW,IAAKn1O,EAAI,EAAG0tB,EAAIzQ,EAAEtd,OAAQK,EAAI0tB,IAAK1tB,EAAGid,EAAEjd,GAAGgB,IAAI6B,EACjE,EACAwqI,EAAKjkI,KAAO,WACVikI,EAAK/8C,IAAM,EACP02C,GAAOA,EAAMhyE,QACjB,IAAK,IAAIugL,EAAM,EAAGA,EAAM7nN,IAAK6nN,EAAKt4N,EAAEs4N,GAAKnsO,MAC3C,EACOikI,CACT,CA3EgBA,CAAK8+F,EAAUE,EAAQ8I,IAErCr2O,KAAK0sO,OAASl1N,OAAOopB,KAAK8rM,EAC5B,CACA,IAAI,GAAYyJ,GAAYj2O,UAyF5B,SAASw2O,GAAOp1N,GACd0gN,GAAUpgO,KAAK5B,KAAM,CAAC,EAAGshB,GACzBthB,KAAKmrO,MAAQ,EACbnrO,KAAKirO,MAAQ,EACf,CAqGA,SAAS0L,GAAiBj1H,EAAMn+D,EAAO/C,EAAK9Z,GAC1C,IAAIn0B,EAAOm0B,EAAEn0B,KACXo1C,EAAQp1C,IAASm0B,EAAEkwM,YACnBC,EAAQnwM,EAAEmwM,OAAS,CAAC,KAAM,GAC1BnxN,EAAOg8F,EAAKh8F,KAAK86B,GAEjB5xB,EAAIlJ,EAAK7kB,OACToiB,EAAI0kC,EAAQogK,GAASx1M,GAAQ,KAC7Bmb,EAAI,CACFmuB,GAAI,EACJC,GAAI,EACJpmB,GAAI,EACJjK,GAAI,EACJzjB,MAAO,EACP0d,KAAMA,EACNlT,QAASD,GAAQ,IAAU,IAE/BgxC,EAAMj5C,OACN,IAAK,IAAIpJ,EAAI,EAAGA,EAAI0tB,IAAK1tB,EACvB41O,GAAUppN,EAAGmpN,EAAO31O,EAAG0tB,GACnB+4B,GAAOovL,GAAYrpN,EAAGzK,GAC1BsgC,EAAM/9C,OAAOkoB,EAAGhI,EAAKxkB,GAEzB,CACA,SAAS41O,GAAUppN,EAAGrqB,EAAGnC,EAAG0tB,GAC1BlB,EAAEgI,GAAKhI,EAAEmuB,GACTnuB,EAAEjC,GAAKiC,EAAEouB,GACTpuB,EAAEmuB,GAAa,MAARx4C,EAAE,GAAa,EAAI4W,KAAKE,IAAI,EAAGjZ,EAAI+Y,KAAKoG,IAAIhd,EAAE,KACrDqqB,EAAEouB,GAAa,MAARz4C,EAAE,GAAaurB,EAAI3U,KAAKC,IAAI0U,EAAG1tB,EAAI+Y,KAAKoG,IAAIhd,EAAE,IAAM,GAC3DqqB,EAAE1lB,MAAQ9G,CACZ,CAGA,SAAS61O,GAAYrpN,EAAGwzB,GACtB,IAAIrzB,EAAKH,EAAEmuB,GACTluB,EAAKD,EAAEouB,GAAK,EACZ32B,EAAIuI,EAAElb,QACNuT,EAAI2H,EAAEhI,KACNkJ,EAAI7I,EAAEllB,OAAS,EACbgtB,EAAK,IAAM1I,EAAEY,EAAE8H,GAAK9H,EAAE8H,EAAK,MAAKH,EAAEmuB,GAAKqF,EAAOlyC,KAAK+W,EAAGA,EAAE8H,KACxDF,EAAKiB,IAAMzJ,EAAEY,EAAE4H,GAAK5H,EAAE4H,EAAK,MAAKD,EAAEouB,GAAKoF,EAAOvuC,MAAMoT,EAAGA,EAAE4H,IAC/D,CC93HA,SAASqpN,GAAOtoL,EAAMzjD,EAAGC,GACvBwjD,EAAK8P,SAASy4K,eAAe,EAAIvoL,EAAKwoL,IAAMxoL,EAAKyoL,KAAO,GAAI,EAAIzoL,EAAK0oL,IAAM1oL,EAAK2oL,KAAO,GAAI3oL,EAAKwoL,IAAM,EAAIxoL,EAAKyoL,KAAO,GAAIzoL,EAAK0oL,IAAM,EAAI1oL,EAAK2oL,KAAO,GAAI3oL,EAAKwoL,IAAM,EAAIxoL,EAAKyoL,IAAMlsO,GAAK,GAAIyjD,EAAK0oL,IAAM,EAAI1oL,EAAK2oL,IAAMnsO,GAAK,EAC7N,CAEO,SAASosO,GAAMnkN,GACpBnzB,KAAKw+D,SAAWrrC,CAClB,CCNe,SAAS,KAAI,CCE5B,SAASokN,GAAYpkN,GACnBnzB,KAAKw+D,SAAWrrC,CAClB,CCHA,SAASqkN,GAAUrkN,GACjBnzB,KAAKw+D,SAAWrrC,CAClB,CCFA,SAASskN,GAAOtkN,EAASukN,GACvB13O,KAAK23O,OAAS,IAAIL,GAAMnkN,GACxBnzB,KAAK43O,MAAQF,CACf,CLgpHA,GAAUptO,KAAO,WACftK,KAAKo2O,QAAQhuO,SAAQ,SAAUs+B,GAC7B,OAAOA,EAAEp8B,MACX,IACItK,KAAKuuI,MAAMvuI,KAAKuuI,KAAKjkI,MAC3B,EACA,GAAU9E,OAAS,SAAUkoB,EAAG3pB,GAC9B,IAIImD,EAJAqnI,EAAOvuI,KAAKuuI,KACdspG,EAAO73O,KAAKo2O,QACZ1wN,EAAOgI,EAAEhI,KACT3P,EAAI8hO,GAAQA,EAAKh3O,OAEnB,GAAI0tI,EAAM,CACR,IAAKrnI,EAAIwmB,EAAEgI,GAAIxuB,EAAIwmB,EAAEmuB,KAAM30C,EAAGqnI,EAAK4rF,IAAIz0M,EAAKxe,IAC5C,IAAKA,EAAIwmB,EAAEjC,GAAIvkB,EAAIwmB,EAAEouB,KAAM50C,EAAGqnI,EAAK/8H,IAAIkU,EAAKxe,IAC5CqnI,EAAKrsI,IAAI6B,EACX,CACA,IAAKmD,EAAI,EAAGA,EAAI6O,IAAK7O,EAAG2wO,EAAK3wO,GAAG1B,OAAOkoB,EAAG3pB,EAC5C,EA2EA2yO,GAAO3T,WAAa,CAClB,KAAQ,SACR,SAAY,CACV,UAAY,GAEd,OAAU,CAAC,CACT,KAAQ,OACR,KAAQ,WACP,CACD,KAAQ,UACR,KAAQ,QACR,OAAS,GACR,CACD,KAAQ,MACR,KAAQ,OACR,OAAS,EACT,OAAUmT,GAAe3iO,OAAO42N,KAC/B,CACD,KAAQ,SACR,KAAQ,SACR,MAAQ,EACR,OAAS,GACR,CACD,KAAQ,SACR,KAAQ,QACR,MAAQ,EACR,OAAS,GACR,CACD,KAAQ,KACR,KAAQ,SACR,MAAQ,EACR,OAAS,GACR,CACD,KAAQ,QACR,KAAQ,SACR,MAAQ,EACR,OAAS,EACT,OAAU,EACV,QAAW,CAAC,KAAM,IACjB,CACD,KAAQ,cACR,KAAQ,UACR,SAAW,KAGf,GAASuM,GAAQ1U,GAAW,CAC1BluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAAIid,EAAS93O,KACbA,KAAK07N,MAAQb,EAAMa,MACnB,IAAItB,EAAM1zL,EAAE00L,WACV56K,EAAMw5K,GAActzL,EAAEn0B,MACtBsuB,EAAMgoM,GAASniM,EAAEomM,SACjBp7N,EAAQ,SAAe3N,GACrB,OAAO+zO,EAAOpmO,MAAMmvB,EAAI98B,GAC1B,EAGEw/C,EAAQvjD,KAAKujD,MACZA,IAAS62K,IACZ72K,EAAQvjD,KAAKujD,MAAQ,IAAI4yL,GAAYzvM,IAInC0zL,GAAOS,EAAMO,SAAS73K,EAAMmpL,SAC9B1sO,KAAKmC,MAAQ,CAAC,EACd04N,EAAMsD,MAAMtD,EAAMuF,QAAQ,SAAUr8N,GAClC,OAAO2N,EAAM3N,GAAGyN,IAAIzN,EACtB,MAEA82N,EAAMsD,MAAMtD,EAAMgE,KAAK,SAAU96N,GAC/B,OAAO2N,EAAM3N,GAAGoP,OAAOpP,EACzB,IACA82N,EAAMsD,MAAMtD,EAAM+D,KAAK,SAAU76N,GAC/B,OAAO2N,EAAM3N,GAAGyN,IAAIzN,EACtB,KAIF,IAAK,IAAI7C,EAAI,EAAG0tB,EAAI5uB,KAAKmrO,MAAOjqO,EAAI0tB,IAAK1tB,EACvCy1O,GAAiB32O,KAAKirO,MAAM/pO,GAAIqiD,EAAO/C,EAAK9Z,GAM9C,OAJA1mC,KAAKmrO,MAAQ,EACbnrO,KAAKirO,MAAQ,GAGNpQ,EAAMD,OAAOR,GAAKY,SAASz3K,EAAMopL,QAC1C,EACAj7N,MAAO,SAAemvB,GACpB,IAAInvB,EAAQ1R,KAAKmC,MAAM0+B,GASvB,OARKnvB,IACHA,EAAQ1R,KAAKmC,MAAM0+B,GAAO8sM,GAAWhU,IACrCjoN,EAAMgqN,OAAS,GAEbhqN,EAAMgqN,MAAQ17N,KAAK07N,QACrBhqN,EAAMgqN,MAAQ17N,KAAK07N,MACnB17N,KAAKirO,MAAMjrO,KAAKmrO,SAAWz5N,GAEtBA,CACT,IC50HF4lO,GAAMp3O,UAAY,CAChB63O,UAAW,WACT/3O,KAAKg4O,MAAQ,CACf,EACAC,QAAS,WACPj4O,KAAKg4O,MAAQzjM,GACf,EACA2jM,UAAW,WACTl4O,KAAKk3O,IAAMl3O,KAAKm3O,IAAMn3O,KAAKo3O,IAAMp3O,KAAKq3O,IAAM9iM,IAC5Cv0C,KAAKg3O,OAAS,CAChB,EACAmB,QAAS,WACP,OAAQn4O,KAAKg3O,QACX,KAAK,EACHA,GAAOh3O,KAAMA,KAAKm3O,IAAKn3O,KAAKq3O,KAE9B,KAAK,EACHr3O,KAAKw+D,SAAS45K,OAAOp4O,KAAKm3O,IAAKn3O,KAAKq3O,MAGpCr3O,KAAKg4O,OAAwB,IAAfh4O,KAAKg4O,OAA+B,IAAhBh4O,KAAKg3O,SAAch3O,KAAKw+D,SAAS65K,YACvEr4O,KAAKg4O,MAAQ,EAAIh4O,KAAKg4O,KACxB,EACAhtO,MAAO,SAAeC,EAAGC,GAEvB,OADAD,GAAKA,EAAGC,GAAKA,EACLlL,KAAKg3O,QACX,KAAK,EACHh3O,KAAKg3O,OAAS,EACdh3O,KAAKg4O,MAAQh4O,KAAKw+D,SAAS45K,OAAOntO,EAAGC,GAAKlL,KAAKw+D,SAAS3lD,OAAO5N,EAAGC,GAClE,MACF,KAAK,EACHlL,KAAKg3O,OAAS,EACd,MACF,KAAK,EACHh3O,KAAKg3O,OAAS,EACdh3O,KAAKw+D,SAAS45K,QAAQ,EAAIp4O,KAAKk3O,IAAMl3O,KAAKm3O,KAAO,GAAI,EAAIn3O,KAAKo3O,IAAMp3O,KAAKq3O,KAAO,GAElF,QACEL,GAAOh3O,KAAMiL,EAAGC,GAGpBlL,KAAKk3O,IAAMl3O,KAAKm3O,IAAKn3O,KAAKm3O,IAAMlsO,EAChCjL,KAAKo3O,IAAMp3O,KAAKq3O,IAAKr3O,KAAKq3O,IAAMnsO,CAClC,GE7CFqsO,GAAYr3O,UAAY,CACtB63O,UAAW,GACXE,QAAS,GACTC,UAAW,WACTl4O,KAAKk3O,IAAMl3O,KAAKm3O,IAAMn3O,KAAK2+D,IAAM3+D,KAAKylI,IAAMzlI,KAAK0lI,IAAM1lI,KAAKo3O,IAAMp3O,KAAKq3O,IAAMr3O,KAAKs4O,IAAMt4O,KAAKu4O,IAAMv4O,KAAKw4O,IAAMjkM,IAC9Gv0C,KAAKg3O,OAAS,CAChB,EACAmB,QAAS,WACP,OAAQn4O,KAAKg3O,QACX,KAAK,EAEDh3O,KAAKw+D,SAAS3lD,OAAO7Y,KAAK2+D,IAAK3+D,KAAKs4O,KACpCt4O,KAAKw+D,SAAS65K,YACd,MAEJ,KAAK,EAEDr4O,KAAKw+D,SAAS3lD,QAAQ7Y,KAAK2+D,IAAM,EAAI3+D,KAAKylI,KAAO,GAAIzlI,KAAKs4O,IAAM,EAAIt4O,KAAKu4O,KAAO,GAChFv4O,KAAKw+D,SAAS45K,QAAQp4O,KAAKylI,IAAM,EAAIzlI,KAAK2+D,KAAO,GAAI3+D,KAAKu4O,IAAM,EAAIv4O,KAAKs4O,KAAO,GAChFt4O,KAAKw+D,SAAS65K,YACd,MAEJ,KAAK,EAEDr4O,KAAKgL,MAAMhL,KAAK2+D,IAAK3+D,KAAKs4O,KAC1Bt4O,KAAKgL,MAAMhL,KAAKylI,IAAKzlI,KAAKu4O,KAC1Bv4O,KAAKgL,MAAMhL,KAAK0lI,IAAK1lI,KAAKw4O,KAIlC,EACAxtO,MAAO,SAAeC,EAAGC,GAEvB,OADAD,GAAKA,EAAGC,GAAKA,EACLlL,KAAKg3O,QACX,KAAK,EACHh3O,KAAKg3O,OAAS,EACdh3O,KAAK2+D,IAAM1zD,EAAGjL,KAAKs4O,IAAMptO,EACzB,MACF,KAAK,EACHlL,KAAKg3O,OAAS,EACdh3O,KAAKylI,IAAMx6H,EAAGjL,KAAKu4O,IAAMrtO,EACzB,MACF,KAAK,EACHlL,KAAKg3O,OAAS,EACdh3O,KAAK0lI,IAAMz6H,EAAGjL,KAAKw4O,IAAMttO,EACzBlL,KAAKw+D,SAAS3lD,QAAQ7Y,KAAKk3O,IAAM,EAAIl3O,KAAKm3O,IAAMlsO,GAAK,GAAIjL,KAAKo3O,IAAM,EAAIp3O,KAAKq3O,IAAMnsO,GAAK,GACxF,MACF,QACE8rO,GAAOh3O,KAAMiL,EAAGC,GAGpBlL,KAAKk3O,IAAMl3O,KAAKm3O,IAAKn3O,KAAKm3O,IAAMlsO,EAChCjL,KAAKo3O,IAAMp3O,KAAKq3O,IAAKr3O,KAAKq3O,IAAMnsO,CAClC,GCtDFssO,GAAUt3O,UAAY,CACpB63O,UAAW,WACT/3O,KAAKg4O,MAAQ,CACf,EACAC,QAAS,WACPj4O,KAAKg4O,MAAQzjM,GACf,EACA2jM,UAAW,WACTl4O,KAAKk3O,IAAMl3O,KAAKm3O,IAAMn3O,KAAKo3O,IAAMp3O,KAAKq3O,IAAM9iM,IAC5Cv0C,KAAKg3O,OAAS,CAChB,EACAmB,QAAS,YACHn4O,KAAKg4O,OAAwB,IAAfh4O,KAAKg4O,OAA+B,IAAhBh4O,KAAKg3O,SAAch3O,KAAKw+D,SAAS65K,YACvEr4O,KAAKg4O,MAAQ,EAAIh4O,KAAKg4O,KACxB,EACAhtO,MAAO,SAAeC,EAAGC,GAEvB,OADAD,GAAKA,EAAGC,GAAKA,EACLlL,KAAKg3O,QACX,KAAK,EACHh3O,KAAKg3O,OAAS,EACd,MACF,KAAK,EACHh3O,KAAKg3O,OAAS,EACd,MACF,KAAK,EACHh3O,KAAKg3O,OAAS,EACd,IAAItqN,GAAM1sB,KAAKk3O,IAAM,EAAIl3O,KAAKm3O,IAAMlsO,GAAK,EACvC0hB,GAAM3sB,KAAKo3O,IAAM,EAAIp3O,KAAKq3O,IAAMnsO,GAAK,EACvClL,KAAKg4O,MAAQh4O,KAAKw+D,SAAS45K,OAAO1rN,EAAIC,GAAM3sB,KAAKw+D,SAAS3lD,OAAO6T,EAAIC,GACrE,MACF,KAAK,EACH3sB,KAAKg3O,OAAS,EAEhB,QACEA,GAAOh3O,KAAMiL,EAAGC,GAGpBlL,KAAKk3O,IAAMl3O,KAAKm3O,IAAKn3O,KAAKm3O,IAAMlsO,EAChCjL,KAAKo3O,IAAMp3O,KAAKq3O,IAAKr3O,KAAKq3O,IAAMnsO,CAClC,GCtCFusO,GAAOv3O,UAAY,CACjBg4O,UAAW,WACTl4O,KAAK0+D,GAAK,GACV1+D,KAAKy4O,GAAK,GACVz4O,KAAK23O,OAAOO,WACd,EACAC,QAAS,WACP,IAAIltO,EAAIjL,KAAK0+D,GACXxzD,EAAIlL,KAAKy4O,GACTvxO,EAAI+D,EAAEpK,OAAS,EACjB,GAAIqG,EAAI,EAON,IANA,IAKEnD,EALE2oB,EAAKzhB,EAAE,GACT0hB,EAAKzhB,EAAE,GACP0B,EAAK3B,EAAE/D,GAAKwlB,EACZ7f,EAAK3B,EAAEhE,GAAKylB,EACZzrB,GAAK,IAEEA,GAAKgG,GACZnD,EAAI7C,EAAIgG,EACRlH,KAAK23O,OAAO3sO,MAAMhL,KAAK43O,MAAQ3sO,EAAE/J,IAAM,EAAIlB,KAAK43O,QAAUlrN,EAAK3oB,EAAI6I,GAAK5M,KAAK43O,MAAQ1sO,EAAEhK,IAAM,EAAIlB,KAAK43O,QAAUjrN,EAAK5oB,EAAI8I,IAG7H7M,KAAK0+D,GAAK1+D,KAAKy4O,GAAK,KACpBz4O,KAAK23O,OAAOQ,SACd,EACAntO,MAAO,SAAeC,EAAGC,GACvBlL,KAAK0+D,GAAGn+D,MAAM0K,GACdjL,KAAKy4O,GAAGl4O,MAAM2K,EAChB,GAEF,OAAe,SAAUwQ,EAAOg8N,GAC9B,SAASgB,EAAOvlN,GACd,OAAgB,IAATukN,EAAa,IAAIJ,GAAMnkN,GAAW,IAAIskN,GAAOtkN,EAASukN,EAC/D,CAIA,OAHAgB,EAAOhB,KAAO,SAAUA,GACtB,OAAOh8N,GAAQg8N,EACjB,EACOgB,CACR,CARD,CAQG,KC3CH,SAAS,GAAOhqL,EAAMzjD,EAAGC,GACvBwjD,EAAK8P,SAASy4K,cAAcvoL,EAAKyoL,IAAMzoL,EAAK2sK,IAAM3sK,EAAKiQ,IAAMjQ,EAAKwoL,KAAMxoL,EAAK2oL,IAAM3oL,EAAK2sK,IAAM3sK,EAAK4pL,IAAM5pL,EAAK0oL,KAAM1oL,EAAKiQ,IAAMjQ,EAAK2sK,IAAM3sK,EAAKyoL,IAAMlsO,GAAIyjD,EAAK4pL,IAAM5pL,EAAK2sK,IAAM3sK,EAAK2oL,IAAMnsO,GAAIwjD,EAAKiQ,IAAKjQ,EAAK4pL,IAC/M,CAEO,SAASK,GAASxlN,EAASylN,GAChC54O,KAAKw+D,SAAWrrC,EAChBnzB,KAAKq7N,IAAM,EAAIud,GAAW,CAC5B,CACAD,GAASz4O,UAAY,CACnB63O,UAAW,WACT/3O,KAAKg4O,MAAQ,CACf,EACAC,QAAS,WACPj4O,KAAKg4O,MAAQzjM,GACf,EACA2jM,UAAW,WACTl4O,KAAKk3O,IAAMl3O,KAAKm3O,IAAMn3O,KAAK2+D,IAAM3+D,KAAKo3O,IAAMp3O,KAAKq3O,IAAMr3O,KAAKs4O,IAAM/jM,IAClEv0C,KAAKg3O,OAAS,CAChB,EACAmB,QAAS,WACP,OAAQn4O,KAAKg3O,QACX,KAAK,EACHh3O,KAAKw+D,SAAS45K,OAAOp4O,KAAK2+D,IAAK3+D,KAAKs4O,KACpC,MACF,KAAK,EACH,GAAOt4O,KAAMA,KAAKm3O,IAAKn3O,KAAKq3O,MAG5Br3O,KAAKg4O,OAAwB,IAAfh4O,KAAKg4O,OAA+B,IAAhBh4O,KAAKg3O,SAAch3O,KAAKw+D,SAAS65K,YACvEr4O,KAAKg4O,MAAQ,EAAIh4O,KAAKg4O,KACxB,EACAhtO,MAAO,SAAeC,EAAGC,GAEvB,OADAD,GAAKA,EAAGC,GAAKA,EACLlL,KAAKg3O,QACX,KAAK,EACHh3O,KAAKg3O,OAAS,EACdh3O,KAAKg4O,MAAQh4O,KAAKw+D,SAAS45K,OAAOntO,EAAGC,GAAKlL,KAAKw+D,SAAS3lD,OAAO5N,EAAGC,GAClE,MACF,KAAK,EACHlL,KAAKg3O,OAAS,EACdh3O,KAAKm3O,IAAMlsO,EAAGjL,KAAKq3O,IAAMnsO,EACzB,MACF,KAAK,EACHlL,KAAKg3O,OAAS,EAEhB,QACE,GAAOh3O,KAAMiL,EAAGC,GAGpBlL,KAAKk3O,IAAMl3O,KAAKm3O,IAAKn3O,KAAKm3O,IAAMn3O,KAAK2+D,IAAK3+D,KAAK2+D,IAAM1zD,EACrDjL,KAAKo3O,IAAMp3O,KAAKq3O,IAAKr3O,KAAKq3O,IAAMr3O,KAAKs4O,IAAKt4O,KAAKs4O,IAAMptO,CACvD,GAEF,OAAe,SAAUwQ,EAAOk9N,GAC9B,SAASC,EAAS1lN,GAChB,OAAO,IAAIwlN,GAASxlN,EAASylN,EAC/B,CAIA,OAHAC,EAASD,QAAU,SAAUA,GAC3B,OAAOl9N,GAAQk9N,EACjB,EACOC,CACR,CARD,CAQG,GC5DI,SAASC,GAAa3lN,EAASylN,GACpC54O,KAAKw+D,SAAWrrC,EAChBnzB,KAAKq7N,IAAM,EAAIud,GAAW,CAC5B,CACAE,GAAa54O,UAAY,CACvB63O,UAAW,WACT/3O,KAAKg4O,MAAQ,CACf,EACAC,QAAS,WACPj4O,KAAKg4O,MAAQzjM,GACf,EACA2jM,UAAW,WACTl4O,KAAKk3O,IAAMl3O,KAAKm3O,IAAMn3O,KAAK2+D,IAAM3+D,KAAKo3O,IAAMp3O,KAAKq3O,IAAMr3O,KAAKs4O,IAAM/jM,IAClEv0C,KAAKg3O,OAAS,CAChB,EACAmB,QAAS,YACHn4O,KAAKg4O,OAAwB,IAAfh4O,KAAKg4O,OAA+B,IAAhBh4O,KAAKg3O,SAAch3O,KAAKw+D,SAAS65K,YACvEr4O,KAAKg4O,MAAQ,EAAIh4O,KAAKg4O,KACxB,EACAhtO,MAAO,SAAeC,EAAGC,GAEvB,OADAD,GAAKA,EAAGC,GAAKA,EACLlL,KAAKg3O,QACX,KAAK,EACHh3O,KAAKg3O,OAAS,EACd,MACF,KAAK,EACHh3O,KAAKg3O,OAAS,EACd,MACF,KAAK,EACHh3O,KAAKg3O,OAAS,EACdh3O,KAAKg4O,MAAQh4O,KAAKw+D,SAAS45K,OAAOp4O,KAAK2+D,IAAK3+D,KAAKs4O,KAAOt4O,KAAKw+D,SAAS3lD,OAAO7Y,KAAK2+D,IAAK3+D,KAAKs4O,KAC5F,MACF,KAAK,EACHt4O,KAAKg3O,OAAS,EAEhB,QACE,GAAOh3O,KAAMiL,EAAGC,GAGpBlL,KAAKk3O,IAAMl3O,KAAKm3O,IAAKn3O,KAAKm3O,IAAMn3O,KAAK2+D,IAAK3+D,KAAK2+D,IAAM1zD,EACrDjL,KAAKo3O,IAAMp3O,KAAKq3O,IAAKr3O,KAAKq3O,IAAMr3O,KAAKs4O,IAAKt4O,KAAKs4O,IAAMptO,CACvD,GAEF,OAAe,SAAUwQ,EAAOk9N,GAC9B,SAASC,EAAS1lN,GAChB,OAAO,IAAI2lN,GAAa3lN,EAASylN,EACnC,CAIA,OAHAC,EAASD,QAAU,SAAUA,GAC3B,OAAOl9N,GAAQk9N,EACjB,EACOC,CACR,CARD,CAQG,GClDI,SAASE,GAAe5lN,EAASylN,GACtC54O,KAAKw+D,SAAWrrC,EAChBnzB,KAAKq7N,IAAM,EAAIud,GAAW,CAC5B,CACAG,GAAe74O,UAAY,CACzB63O,UAAW,GACXE,QAAS,GACTC,UAAW,WACTl4O,KAAKk3O,IAAMl3O,KAAKm3O,IAAMn3O,KAAK2+D,IAAM3+D,KAAKylI,IAAMzlI,KAAK0lI,IAAM1lI,KAAK2lI,IAAM3lI,KAAKo3O,IAAMp3O,KAAKq3O,IAAMr3O,KAAKs4O,IAAMt4O,KAAKu4O,IAAMv4O,KAAKw4O,IAAMx4O,KAAKg5O,IAAMzkM,IACpIv0C,KAAKg3O,OAAS,CAChB,EACAmB,QAAS,WACP,OAAQn4O,KAAKg3O,QACX,KAAK,EAEDh3O,KAAKw+D,SAAS3lD,OAAO7Y,KAAKylI,IAAKzlI,KAAKu4O,KACpCv4O,KAAKw+D,SAAS65K,YACd,MAEJ,KAAK,EAEDr4O,KAAKw+D,SAAS45K,OAAOp4O,KAAKylI,IAAKzlI,KAAKu4O,KACpCv4O,KAAKw+D,SAAS65K,YACd,MAEJ,KAAK,EAEDr4O,KAAKgL,MAAMhL,KAAKylI,IAAKzlI,KAAKu4O,KAC1Bv4O,KAAKgL,MAAMhL,KAAK0lI,IAAK1lI,KAAKw4O,KAC1Bx4O,KAAKgL,MAAMhL,KAAK2lI,IAAK3lI,KAAKg5O,KAIlC,EACAhuO,MAAO,SAAeC,EAAGC,GAEvB,OADAD,GAAKA,EAAGC,GAAKA,EACLlL,KAAKg3O,QACX,KAAK,EACHh3O,KAAKg3O,OAAS,EACdh3O,KAAKylI,IAAMx6H,EAAGjL,KAAKu4O,IAAMrtO,EACzB,MACF,KAAK,EACHlL,KAAKg3O,OAAS,EACdh3O,KAAKw+D,SAAS3lD,OAAO7Y,KAAK0lI,IAAMz6H,EAAGjL,KAAKw4O,IAAMttO,GAC9C,MACF,KAAK,EACHlL,KAAKg3O,OAAS,EACdh3O,KAAK2lI,IAAM16H,EAAGjL,KAAKg5O,IAAM9tO,EACzB,MACF,QACE,GAAOlL,KAAMiL,EAAGC,GAGpBlL,KAAKk3O,IAAMl3O,KAAKm3O,IAAKn3O,KAAKm3O,IAAMn3O,KAAK2+D,IAAK3+D,KAAK2+D,IAAM1zD,EACrDjL,KAAKo3O,IAAMp3O,KAAKq3O,IAAKr3O,KAAKq3O,IAAMr3O,KAAKs4O,IAAKt4O,KAAKs4O,IAAMptO,CACvD,GAEF,OAAe,SAAUwQ,EAAOk9N,GAC9B,SAASC,EAAS1lN,GAChB,OAAO,IAAI4lN,GAAe5lN,EAASylN,EACrC,CAIA,OAHAC,EAASD,QAAU,SAAUA,GAC3B,OAAOl9N,GAAQk9N,EACjB,EACOC,CACR,CARD,CAQG,GCnEQx4N,GAAMpG,KAAKoG,IACXC,GAAQrG,KAAKqG,MACbnE,GAAMlC,KAAKkC,IACX,GAAMlC,KAAKE,IACX,GAAMF,KAAKC,IACXmC,GAAMpC,KAAKoC,IACXO,GAAO3C,KAAK2C,KACZ,GAAU,MACVb,GAAK9B,KAAK+B,GACVC,GAASF,GAAK,EACdkC,GAAM,EAAIlC,GAId,SAASsC,GAAKpT,GACnB,OAAOA,GAAK,EAAIgR,GAAShR,IAAM,GAAKgR,GAAShC,KAAKoE,KAAKpT,EACzD,CCdA,SAAS,GAAOyjD,EAAMzjD,EAAGC,GACvB,IAAIkX,EAAKssC,EAAKyoL,IACZ90N,EAAKqsC,EAAK2oL,IACV/0N,EAAKosC,EAAKiQ,IACVp8C,EAAKmsC,EAAK4pL,IACZ,GAAI5pL,EAAKuqL,OAAS,GAAS,CACzB,IAAI96N,EAAI,EAAIuwC,EAAKwqL,QAAU,EAAIxqL,EAAKuqL,OAASvqL,EAAKyqL,OAASzqL,EAAK0qL,QAC9DxqN,EAAI,EAAI8/B,EAAKuqL,QAAUvqL,EAAKuqL,OAASvqL,EAAKyqL,QAC5C/2N,GAAMA,EAAKjE,EAAIuwC,EAAKwoL,IAAMxoL,EAAK0qL,QAAU1qL,EAAKiQ,IAAMjQ,EAAKwqL,SAAWtqN,EACpEvM,GAAMA,EAAKlE,EAAIuwC,EAAK0oL,IAAM1oL,EAAK0qL,QAAU1qL,EAAK4pL,IAAM5pL,EAAKwqL,SAAWtqN,CACtE,CACA,GAAI8/B,EAAK2qL,OAAS,GAAS,CACzB,IAAIp2N,EAAI,EAAIyrC,EAAK4qL,QAAU,EAAI5qL,EAAK2qL,OAAS3qL,EAAKyqL,OAASzqL,EAAK0qL,QAC9DrjO,EAAI,EAAI24C,EAAK2qL,QAAU3qL,EAAK2qL,OAAS3qL,EAAKyqL,QAC5C72N,GAAMA,EAAKW,EAAIyrC,EAAKyoL,IAAMzoL,EAAK4qL,QAAUruO,EAAIyjD,EAAK0qL,SAAWrjO,EAC7DwM,GAAMA,EAAKU,EAAIyrC,EAAK2oL,IAAM3oL,EAAK4qL,QAAUpuO,EAAIwjD,EAAK0qL,SAAWrjO,CAC/D,CACA24C,EAAK8P,SAASy4K,cAAc70N,EAAIC,EAAIC,EAAIC,EAAImsC,EAAKiQ,IAAKjQ,EAAK4pL,IAC7D,CAEA,SAASiB,GAAWpmN,EAASrE,GAC3B9uB,KAAKw+D,SAAWrrC,EAChBnzB,KAAKw5O,OAAS1qN,CAChB,CACAyqN,GAAWr5O,UAAY,CACrB63O,UAAW,WACT/3O,KAAKg4O,MAAQ,CACf,EACAC,QAAS,WACPj4O,KAAKg4O,MAAQzjM,GACf,EACA2jM,UAAW,WACTl4O,KAAKk3O,IAAMl3O,KAAKm3O,IAAMn3O,KAAK2+D,IAAM3+D,KAAKo3O,IAAMp3O,KAAKq3O,IAAMr3O,KAAKs4O,IAAM/jM,IAClEv0C,KAAKi5O,OAASj5O,KAAKm5O,OAASn5O,KAAKq5O,OAASr5O,KAAKk5O,QAAUl5O,KAAKo5O,QAAUp5O,KAAKs5O,QAAUt5O,KAAKg3O,OAAS,CACvG,EACAmB,QAAS,WACP,OAAQn4O,KAAKg3O,QACX,KAAK,EACHh3O,KAAKw+D,SAAS45K,OAAOp4O,KAAK2+D,IAAK3+D,KAAKs4O,KACpC,MACF,KAAK,EACHt4O,KAAKgL,MAAMhL,KAAK2+D,IAAK3+D,KAAKs4O,MAG1Bt4O,KAAKg4O,OAAwB,IAAfh4O,KAAKg4O,OAA+B,IAAhBh4O,KAAKg3O,SAAch3O,KAAKw+D,SAAS65K,YACvEr4O,KAAKg4O,MAAQ,EAAIh4O,KAAKg4O,KACxB,EACAhtO,MAAO,SAAeC,EAAGC,GAEvB,GADAD,GAAKA,EAAGC,GAAKA,EACTlL,KAAKg3O,OAAQ,CACf,IAAIyC,EAAMz5O,KAAK2+D,IAAM1zD,EACnByuO,EAAM15O,KAAKs4O,IAAMptO,EACnBlL,KAAKq5O,OAASp/N,KAAK2C,KAAK5c,KAAKs5O,QAAUr/N,KAAK0B,IAAI89N,EAAMA,EAAMC,EAAMA,EAAK15O,KAAKw5O,QAC9E,CACA,OAAQx5O,KAAKg3O,QACX,KAAK,EACHh3O,KAAKg3O,OAAS,EACdh3O,KAAKg4O,MAAQh4O,KAAKw+D,SAAS45K,OAAOntO,EAAGC,GAAKlL,KAAKw+D,SAAS3lD,OAAO5N,EAAGC,GAClE,MACF,KAAK,EACHlL,KAAKg3O,OAAS,EACd,MACF,KAAK,EACHh3O,KAAKg3O,OAAS,EAEhB,QACE,GAAOh3O,KAAMiL,EAAGC,GAGpBlL,KAAKi5O,OAASj5O,KAAKm5O,OAAQn5O,KAAKm5O,OAASn5O,KAAKq5O,OAC9Cr5O,KAAKk5O,QAAUl5O,KAAKo5O,QAASp5O,KAAKo5O,QAAUp5O,KAAKs5O,QACjDt5O,KAAKk3O,IAAMl3O,KAAKm3O,IAAKn3O,KAAKm3O,IAAMn3O,KAAK2+D,IAAK3+D,KAAK2+D,IAAM1zD,EACrDjL,KAAKo3O,IAAMp3O,KAAKq3O,IAAKr3O,KAAKq3O,IAAMr3O,KAAKs4O,IAAKt4O,KAAKs4O,IAAMptO,CACvD,GAEF,OAAe,SAAUwQ,EAAOoT,GAC9B,SAAS6qN,EAAWxmN,GAClB,OAAOrE,EAAQ,IAAIyqN,GAAWpmN,EAASrE,GAAS,IAAI6pN,GAASxlN,EAAS,EACxE,CAIA,OAHAwmN,EAAW7qN,MAAQ,SAAUA,GAC3B,OAAOpT,GAAQoT,EACjB,EACO6qN,CACR,CARD,CAQG,IClFH,SAASC,GAAiBzmN,EAASrE,GACjC9uB,KAAKw+D,SAAWrrC,EAChBnzB,KAAKw5O,OAAS1qN,CAChB,CACA8qN,GAAiB15O,UAAY,CAC3B63O,UAAW,GACXE,QAAS,GACTC,UAAW,WACTl4O,KAAKk3O,IAAMl3O,KAAKm3O,IAAMn3O,KAAK2+D,IAAM3+D,KAAKylI,IAAMzlI,KAAK0lI,IAAM1lI,KAAK2lI,IAAM3lI,KAAKo3O,IAAMp3O,KAAKq3O,IAAMr3O,KAAKs4O,IAAMt4O,KAAKu4O,IAAMv4O,KAAKw4O,IAAMx4O,KAAKg5O,IAAMzkM,IACpIv0C,KAAKi5O,OAASj5O,KAAKm5O,OAASn5O,KAAKq5O,OAASr5O,KAAKk5O,QAAUl5O,KAAKo5O,QAAUp5O,KAAKs5O,QAAUt5O,KAAKg3O,OAAS,CACvG,EACAmB,QAAS,WACP,OAAQn4O,KAAKg3O,QACX,KAAK,EAEDh3O,KAAKw+D,SAAS3lD,OAAO7Y,KAAKylI,IAAKzlI,KAAKu4O,KACpCv4O,KAAKw+D,SAAS65K,YACd,MAEJ,KAAK,EAEDr4O,KAAKw+D,SAAS45K,OAAOp4O,KAAKylI,IAAKzlI,KAAKu4O,KACpCv4O,KAAKw+D,SAAS65K,YACd,MAEJ,KAAK,EAEDr4O,KAAKgL,MAAMhL,KAAKylI,IAAKzlI,KAAKu4O,KAC1Bv4O,KAAKgL,MAAMhL,KAAK0lI,IAAK1lI,KAAKw4O,KAC1Bx4O,KAAKgL,MAAMhL,KAAK2lI,IAAK3lI,KAAKg5O,KAIlC,EACAhuO,MAAO,SAAeC,EAAGC,GAEvB,GADAD,GAAKA,EAAGC,GAAKA,EACTlL,KAAKg3O,OAAQ,CACf,IAAIyC,EAAMz5O,KAAK2+D,IAAM1zD,EACnByuO,EAAM15O,KAAKs4O,IAAMptO,EACnBlL,KAAKq5O,OAASp/N,KAAK2C,KAAK5c,KAAKs5O,QAAUr/N,KAAK0B,IAAI89N,EAAMA,EAAMC,EAAMA,EAAK15O,KAAKw5O,QAC9E,CACA,OAAQx5O,KAAKg3O,QACX,KAAK,EACHh3O,KAAKg3O,OAAS,EACdh3O,KAAKylI,IAAMx6H,EAAGjL,KAAKu4O,IAAMrtO,EACzB,MACF,KAAK,EACHlL,KAAKg3O,OAAS,EACdh3O,KAAKw+D,SAAS3lD,OAAO7Y,KAAK0lI,IAAMz6H,EAAGjL,KAAKw4O,IAAMttO,GAC9C,MACF,KAAK,EACHlL,KAAKg3O,OAAS,EACdh3O,KAAK2lI,IAAM16H,EAAGjL,KAAKg5O,IAAM9tO,EACzB,MACF,QACE,GAAOlL,KAAMiL,EAAGC,GAGpBlL,KAAKi5O,OAASj5O,KAAKm5O,OAAQn5O,KAAKm5O,OAASn5O,KAAKq5O,OAC9Cr5O,KAAKk5O,QAAUl5O,KAAKo5O,QAASp5O,KAAKo5O,QAAUp5O,KAAKs5O,QACjDt5O,KAAKk3O,IAAMl3O,KAAKm3O,IAAKn3O,KAAKm3O,IAAMn3O,KAAK2+D,IAAK3+D,KAAK2+D,IAAM1zD,EACrDjL,KAAKo3O,IAAMp3O,KAAKq3O,IAAKr3O,KAAKq3O,IAAMr3O,KAAKs4O,IAAKt4O,KAAKs4O,IAAMptO,CACvD,GAEF,OAAe,SAAUwQ,EAAOoT,GAC9B,SAAS6qN,EAAWxmN,GAClB,OAAOrE,EAAQ,IAAI8qN,GAAiBzmN,EAASrE,GAAS,IAAIiqN,GAAe5lN,EAAS,EACpF,CAIA,OAHAwmN,EAAW7qN,MAAQ,SAAUA,GAC3B,OAAOpT,GAAQoT,EACjB,EACO6qN,CACR,CARD,CAQG,ICzEH,SAASE,GAAe1mN,EAASrE,GAC/B9uB,KAAKw+D,SAAWrrC,EAChBnzB,KAAKw5O,OAAS1qN,CAChB,CACA+qN,GAAe35O,UAAY,CACzB63O,UAAW,WACT/3O,KAAKg4O,MAAQ,CACf,EACAC,QAAS,WACPj4O,KAAKg4O,MAAQzjM,GACf,EACA2jM,UAAW,WACTl4O,KAAKk3O,IAAMl3O,KAAKm3O,IAAMn3O,KAAK2+D,IAAM3+D,KAAKo3O,IAAMp3O,KAAKq3O,IAAMr3O,KAAKs4O,IAAM/jM,IAClEv0C,KAAKi5O,OAASj5O,KAAKm5O,OAASn5O,KAAKq5O,OAASr5O,KAAKk5O,QAAUl5O,KAAKo5O,QAAUp5O,KAAKs5O,QAAUt5O,KAAKg3O,OAAS,CACvG,EACAmB,QAAS,YACHn4O,KAAKg4O,OAAwB,IAAfh4O,KAAKg4O,OAA+B,IAAhBh4O,KAAKg3O,SAAch3O,KAAKw+D,SAAS65K,YACvEr4O,KAAKg4O,MAAQ,EAAIh4O,KAAKg4O,KACxB,EACAhtO,MAAO,SAAeC,EAAGC,GAEvB,GADAD,GAAKA,EAAGC,GAAKA,EACTlL,KAAKg3O,OAAQ,CACf,IAAIyC,EAAMz5O,KAAK2+D,IAAM1zD,EACnByuO,EAAM15O,KAAKs4O,IAAMptO,EACnBlL,KAAKq5O,OAASp/N,KAAK2C,KAAK5c,KAAKs5O,QAAUr/N,KAAK0B,IAAI89N,EAAMA,EAAMC,EAAMA,EAAK15O,KAAKw5O,QAC9E,CACA,OAAQx5O,KAAKg3O,QACX,KAAK,EACHh3O,KAAKg3O,OAAS,EACd,MACF,KAAK,EACHh3O,KAAKg3O,OAAS,EACd,MACF,KAAK,EACHh3O,KAAKg3O,OAAS,EACdh3O,KAAKg4O,MAAQh4O,KAAKw+D,SAAS45K,OAAOp4O,KAAK2+D,IAAK3+D,KAAKs4O,KAAOt4O,KAAKw+D,SAAS3lD,OAAO7Y,KAAK2+D,IAAK3+D,KAAKs4O,KAC5F,MACF,KAAK,EACHt4O,KAAKg3O,OAAS,EAEhB,QACE,GAAOh3O,KAAMiL,EAAGC,GAGpBlL,KAAKi5O,OAASj5O,KAAKm5O,OAAQn5O,KAAKm5O,OAASn5O,KAAKq5O,OAC9Cr5O,KAAKk5O,QAAUl5O,KAAKo5O,QAASp5O,KAAKo5O,QAAUp5O,KAAKs5O,QACjDt5O,KAAKk3O,IAAMl3O,KAAKm3O,IAAKn3O,KAAKm3O,IAAMn3O,KAAK2+D,IAAK3+D,KAAK2+D,IAAM1zD,EACrDjL,KAAKo3O,IAAMp3O,KAAKq3O,IAAKr3O,KAAKq3O,IAAMr3O,KAAKs4O,IAAKt4O,KAAKs4O,IAAMptO,CACvD,GAEF,ICjDI4uO,GAAiBC,GAAkBC,GAAkBC,GAAkBC,GAAkBC,GAAkBC,GAAkBC,GAAkBC,GAAkBC,GAAmBC,GAAmBC,GAAmBC,GAAmBC,GDiDjP,GAAe,SAAUj/N,EAAOoT,GAC9B,SAAS6qN,EAAWxmN,GAClB,OAAOrE,EAAQ,IAAI+qN,GAAe1mN,EAASrE,GAAS,IAAIgqN,GAAa3lN,EAAS,EAChF,CAIA,OAHAwmN,EAAW7qN,MAAQ,SAAUA,GAC3B,OAAOpT,GAAQoT,EACjB,EACO6qN,CACR,CARD,CAQG,IE5DH,SAASiB,GAAOznN,GACdnzB,KAAKw+D,SAAWrrC,CAClB,CA+Be,SAAS,GAACA,GACvB,OAAO,IAAIynN,GAAOznN,EACpB,CClCA,SAAS0nN,GAAa1nN,GACpBnzB,KAAKw+D,SAAWrrC,CAClB,CCHA,SAASwlL,GAAK1tM,GACZ,OAAOA,EAAI,GAAK,EAAI,CACtB,CAMA,SAAS6vO,GAAOpsL,EAAMpsC,EAAIC,GACxB,IAAIw4N,EAAKrsL,EAAKyoL,IAAMzoL,EAAKwoL,IACvB8D,EAAK14N,EAAKosC,EAAKyoL,IACf8D,GAAMvsL,EAAK2oL,IAAM3oL,EAAK0oL,MAAQ2D,GAAMC,EAAK,IAAM,GAC/CtyN,GAAMnG,EAAKmsC,EAAK2oL,MAAQ2D,GAAMD,EAAK,IAAM,GACzC38N,GAAK68N,EAAKD,EAAKtyN,EAAKqyN,IAAOA,EAAKC,GAClC,OAAQriC,GAAKsiC,GAAMtiC,GAAKjwL,IAAOzO,KAAKC,IAAID,KAAKoG,IAAI46N,GAAKhhO,KAAKoG,IAAIqI,GAAK,GAAMzO,KAAKoG,IAAIjC,KAAO,CAC5F,CAGA,SAAS88N,GAAOxsL,EAAM3qD,GACpB,IAAIshB,EAAIqpC,EAAKyoL,IAAMzoL,EAAKwoL,IACxB,OAAO7xN,GAAK,GAAKqpC,EAAK2oL,IAAM3oL,EAAK0oL,KAAO/xN,EAAIthB,GAAK,EAAIA,CACvD,CAKA,SAAS,GAAO2qD,EAAMtqD,EAAIE,GACxB,IAAIooB,EAAKgiC,EAAKwoL,IACZvqN,EAAK+hC,EAAK0oL,IACVh1N,EAAKssC,EAAKyoL,IACV90N,EAAKqsC,EAAK2oL,IACVzqO,GAAMwV,EAAKsK,GAAM,EACnBgiC,EAAK8P,SAASy4K,cAAcvqN,EAAK9f,EAAI+f,EAAK/f,EAAKxI,EAAIge,EAAKxV,EAAIyV,EAAKzV,EAAKtI,EAAI8d,EAAIC,EAChF,CACA,SAAS84N,GAAUhoN,GACjBnzB,KAAKw+D,SAAWrrC,CAClB,CAiDA,SAASioN,GAAUjoN,GACjBnzB,KAAKw+D,SAAW,IAAI68K,GAAeloN,EACrC,CAIA,SAASkoN,GAAeloN,GACtBnzB,KAAKw+D,SAAWrrC,CAClB,CC7FA,SAASmoN,GAAQnoN,GACfnzB,KAAKw+D,SAAWrrC,CAClB,CAuCA,SAASooN,GAActwO,GACrB,IAAI/J,EAEF6U,EADA6Y,EAAI3jB,EAAEpK,OAAS,EAEfsd,EAAI,IAAIsiB,MAAM7R,GACd3L,EAAI,IAAIwd,MAAM7R,GACd1P,EAAI,IAAIuhB,MAAM7R,GAEhB,IADAzQ,EAAE,GAAK,EAAG8E,EAAE,GAAK,EAAG/D,EAAE,GAAKjU,EAAE,GAAK,EAAIA,EAAE,GACnC/J,EAAI,EAAGA,EAAI0tB,EAAI,IAAK1tB,EAAGid,EAAEjd,GAAK,EAAG+hB,EAAE/hB,GAAK,EAAGge,EAAEhe,GAAK,EAAI+J,EAAE/J,GAAK,EAAI+J,EAAE/J,EAAI,GAE5E,IADAid,EAAEyQ,EAAI,GAAK,EAAG3L,EAAE2L,EAAI,GAAK,EAAG1P,EAAE0P,EAAI,GAAK,EAAI3jB,EAAE2jB,EAAI,GAAK3jB,EAAE2jB,GACnD1tB,EAAI,EAAGA,EAAI0tB,IAAK1tB,EAAG6U,EAAIoI,EAAEjd,GAAK+hB,EAAE/hB,EAAI,GAAI+hB,EAAE/hB,IAAM6U,EAAGmJ,EAAEhe,IAAM6U,EAAImJ,EAAEhe,EAAI,GAE1E,IADAid,EAAEyQ,EAAI,GAAK1P,EAAE0P,EAAI,GAAK3L,EAAE2L,EAAI,GACvB1tB,EAAI0tB,EAAI,EAAG1tB,GAAK,IAAKA,EAAGid,EAAEjd,IAAMge,EAAEhe,GAAKid,EAAEjd,EAAI,IAAM+hB,EAAE/hB,GAE1D,IADA+hB,EAAE2L,EAAI,IAAM3jB,EAAE2jB,GAAKzQ,EAAEyQ,EAAI,IAAM,EAC1B1tB,EAAI,EAAGA,EAAI0tB,EAAI,IAAK1tB,EAAG+hB,EAAE/hB,GAAK,EAAI+J,EAAE/J,EAAI,GAAKid,EAAEjd,EAAI,GACxD,MAAO,CAACid,EAAG8E,EACb,CCzDA,SAASu4N,GAAKroN,EAASpvB,GACrB/D,KAAKw+D,SAAWrrC,EAChBnzB,KAAKo1B,GAAKrxB,CACZ,CCHe,SAAS,GAACkH,GACvB,OAAO,WACL,OAAOA,CACT,CACF,CCJe,SAASwwO,GAAuBC,EAASC,GAItD,OAHKA,IACHA,EAAMD,EAAQ10N,MAAM,IAEfxP,OAAOokO,OAAOpkO,OAAO+jD,iBAAiBmgL,EAAS,CACpDC,IAAK,CACHx5O,MAAOqV,OAAOokO,OAAOD,MAG3B,CNNAf,GAAO16O,UAAY,CACjB63O,UAAW,WACT/3O,KAAKg4O,MAAQ,CACf,EACAC,QAAS,WACPj4O,KAAKg4O,MAAQzjM,GACf,EACA2jM,UAAW,WACTl4O,KAAKg3O,OAAS,CAChB,EACAmB,QAAS,YACHn4O,KAAKg4O,OAAwB,IAAfh4O,KAAKg4O,OAA+B,IAAhBh4O,KAAKg3O,SAAch3O,KAAKw+D,SAAS65K,YACvEr4O,KAAKg4O,MAAQ,EAAIh4O,KAAKg4O,KACxB,EACAhtO,MAAO,SAAeC,EAAGC,GAEvB,OADAD,GAAKA,EAAGC,GAAKA,EACLlL,KAAKg3O,QACX,KAAK,EACHh3O,KAAKg3O,OAAS,EACdh3O,KAAKg4O,MAAQh4O,KAAKw+D,SAAS45K,OAAOntO,EAAGC,GAAKlL,KAAKw+D,SAAS3lD,OAAO5N,EAAGC,GAClE,MACF,KAAK,EACHlL,KAAKg3O,OAAS,EAEhB,QACEh3O,KAAKw+D,SAAS45K,OAAOntO,EAAGC,GAG9B,GC3BF2vO,GAAa36O,UAAY,CACvB63O,UAAW,GACXE,QAAS,GACTC,UAAW,WACTl4O,KAAKg3O,OAAS,CAChB,EACAmB,QAAS,WACHn4O,KAAKg3O,QAAQh3O,KAAKw+D,SAAS65K,WACjC,EACArtO,MAAO,SAAeC,EAAGC,GACvBD,GAAKA,EAAGC,GAAKA,EACTlL,KAAKg3O,OAAQh3O,KAAKw+D,SAAS45K,OAAOntO,EAAGC,IAAQlL,KAAKg3O,OAAS,EAAGh3O,KAAKw+D,SAAS3lD,OAAO5N,EAAGC,GAC5F,GCqBFiwO,GAAUj7O,UAAY,CACpB63O,UAAW,WACT/3O,KAAKg4O,MAAQ,CACf,EACAC,QAAS,WACPj4O,KAAKg4O,MAAQzjM,GACf,EACA2jM,UAAW,WACTl4O,KAAKk3O,IAAMl3O,KAAKm3O,IAAMn3O,KAAKo3O,IAAMp3O,KAAKq3O,IAAMr3O,KAAK67O,IAAMtnM,IACvDv0C,KAAKg3O,OAAS,CAChB,EACAmB,QAAS,WACP,OAAQn4O,KAAKg3O,QACX,KAAK,EACHh3O,KAAKw+D,SAAS45K,OAAOp4O,KAAKm3O,IAAKn3O,KAAKq3O,KACpC,MACF,KAAK,EACH,GAAOr3O,KAAMA,KAAK67O,IAAKX,GAAOl7O,KAAMA,KAAK67O,OAGzC77O,KAAKg4O,OAAwB,IAAfh4O,KAAKg4O,OAA+B,IAAhBh4O,KAAKg3O,SAAch3O,KAAKw+D,SAAS65K,YACvEr4O,KAAKg4O,MAAQ,EAAIh4O,KAAKg4O,KACxB,EACAhtO,MAAO,SAAeC,EAAGC,GACvB,IAAI5G,EAAKiwC,IAET,GADQrpC,GAAKA,GAAbD,GAAKA,KACKjL,KAAKm3O,KAAOjsO,IAAMlL,KAAKq3O,IAAjC,CACA,OAAQr3O,KAAKg3O,QACX,KAAK,EACHh3O,KAAKg3O,OAAS,EACdh3O,KAAKg4O,MAAQh4O,KAAKw+D,SAAS45K,OAAOntO,EAAGC,GAAKlL,KAAKw+D,SAAS3lD,OAAO5N,EAAGC,GAClE,MACF,KAAK,EACHlL,KAAKg3O,OAAS,EACd,MACF,KAAK,EACHh3O,KAAKg3O,OAAS,EACd,GAAOh3O,KAAMk7O,GAAOl7O,KAAMsE,EAAKw2O,GAAO96O,KAAMiL,EAAGC,IAAK5G,GACpD,MACF,QACE,GAAOtE,KAAMA,KAAK67O,IAAKv3O,EAAKw2O,GAAO96O,KAAMiL,EAAGC,IAGhDlL,KAAKk3O,IAAMl3O,KAAKm3O,IAAKn3O,KAAKm3O,IAAMlsO,EAChCjL,KAAKo3O,IAAMp3O,KAAKq3O,IAAKr3O,KAAKq3O,IAAMnsO,EAChClL,KAAK67O,IAAMv3O,CAnBiC,CAoB9C,IAKD82O,GAAUl7O,UAAYsX,OAAO0wB,OAAOizM,GAAUj7O,YAAY8K,MAAQ,SAAUC,EAAGC,GAC9EiwO,GAAUj7O,UAAU8K,MAAMpJ,KAAK5B,KAAMkL,EAAGD,EAC1C,EAIAowO,GAAen7O,UAAY,CACzB2Y,OAAQ,SAAgB5N,EAAGC,GACzBlL,KAAKw+D,SAAS3lD,OAAO3N,EAAGD,EAC1B,EACAotO,UAAW,WACTr4O,KAAKw+D,SAAS65K,WAChB,EACAD,OAAQ,SAAgBntO,EAAGC,GACzBlL,KAAKw+D,SAAS45K,OAAOltO,EAAGD,EAC1B,EACAgsO,cAAe,SAAuB70N,EAAIC,EAAIC,EAAIC,EAAItX,EAAGC,GACvDlL,KAAKw+D,SAASy4K,cAAc50N,EAAID,EAAIG,EAAID,EAAIpX,EAAGD,EACjD,GCvGFqwO,GAAQp7O,UAAY,CAClB63O,UAAW,WACT/3O,KAAKg4O,MAAQ,CACf,EACAC,QAAS,WACPj4O,KAAKg4O,MAAQzjM,GACf,EACA2jM,UAAW,WACTl4O,KAAK0+D,GAAK,GACV1+D,KAAKy4O,GAAK,EACZ,EACAN,QAAS,WACP,IAAIltO,EAAIjL,KAAK0+D,GACXxzD,EAAIlL,KAAKy4O,GACT7pN,EAAI3jB,EAAEpK,OACR,GAAI+tB,EAEF,GADA5uB,KAAKg4O,MAAQh4O,KAAKw+D,SAAS45K,OAAOntO,EAAE,GAAIC,EAAE,IAAMlL,KAAKw+D,SAAS3lD,OAAO5N,EAAE,GAAIC,EAAE,IACnE,IAAN0jB,EACF5uB,KAAKw+D,SAAS45K,OAAOntO,EAAE,GAAIC,EAAE,SAI7B,IAFA,IAAIkiB,EAAKmuN,GAActwO,GACrBoiB,EAAKkuN,GAAcrwO,GACZ2wC,EAAK,EAAGC,EAAK,EAAGA,EAAKltB,IAAKitB,IAAMC,EACvC97C,KAAKw+D,SAASy4K,cAAc7pN,EAAG,GAAGyuB,GAAKxuB,EAAG,GAAGwuB,GAAKzuB,EAAG,GAAGyuB,GAAKxuB,EAAG,GAAGwuB,GAAK5wC,EAAE6wC,GAAK5wC,EAAE4wC,KAInF97C,KAAKg4O,OAAwB,IAAfh4O,KAAKg4O,OAAqB,IAANppN,IAAS5uB,KAAKw+D,SAAS65K,YAC7Dr4O,KAAKg4O,MAAQ,EAAIh4O,KAAKg4O,MACtBh4O,KAAK0+D,GAAK1+D,KAAKy4O,GAAK,IACtB,EACAztO,MAAO,SAAeC,EAAGC,GACvBlL,KAAK0+D,GAAGn+D,MAAM0K,GACdjL,KAAKy4O,GAAGl4O,MAAM2K,EAChB,GCjCFswO,GAAKt7O,UAAY,CACf63O,UAAW,WACT/3O,KAAKg4O,MAAQ,CACf,EACAC,QAAS,WACPj4O,KAAKg4O,MAAQzjM,GACf,EACA2jM,UAAW,WACTl4O,KAAK0+D,GAAK1+D,KAAKy4O,GAAKlkM,IACpBv0C,KAAKg3O,OAAS,CAChB,EACAmB,QAAS,WACH,EAAIn4O,KAAKo1B,IAAMp1B,KAAKo1B,GAAK,GAAqB,IAAhBp1B,KAAKg3O,QAAch3O,KAAKw+D,SAAS45K,OAAOp4O,KAAK0+D,GAAI1+D,KAAKy4O,KACpFz4O,KAAKg4O,OAAwB,IAAfh4O,KAAKg4O,OAA+B,IAAhBh4O,KAAKg3O,SAAch3O,KAAKw+D,SAAS65K,YACnEr4O,KAAKg4O,OAAS,IAAGh4O,KAAKo1B,GAAK,EAAIp1B,KAAKo1B,GAAIp1B,KAAKg4O,MAAQ,EAAIh4O,KAAKg4O,MACpE,EACAhtO,MAAO,SAAeC,EAAGC,GAEvB,OADAD,GAAKA,EAAGC,GAAKA,EACLlL,KAAKg3O,QACX,KAAK,EACHh3O,KAAKg3O,OAAS,EACdh3O,KAAKg4O,MAAQh4O,KAAKw+D,SAAS45K,OAAOntO,EAAGC,GAAKlL,KAAKw+D,SAAS3lD,OAAO5N,EAAGC,GAClE,MACF,KAAK,EACHlL,KAAKg3O,OAAS,EAEhB,QAEI,GAAIh3O,KAAKo1B,IAAM,EACbp1B,KAAKw+D,SAAS45K,OAAOp4O,KAAK0+D,GAAIxzD,GAC9BlL,KAAKw+D,SAAS45K,OAAOntO,EAAGC,OACnB,CACL,IAAIkX,EAAKpiB,KAAK0+D,IAAM,EAAI1+D,KAAKo1B,IAAMnqB,EAAIjL,KAAKo1B,GAC5Cp1B,KAAKw+D,SAAS45K,OAAOh2N,EAAIpiB,KAAKy4O,IAC9Bz4O,KAAKw+D,SAAS45K,OAAOh2N,EAAIlX,EAC3B,EAINlL,KAAK0+D,GAAKzzD,EAAGjL,KAAKy4O,GAAKvtO,CACzB,GLxCF,IAAI,GAAK+O,KAAK+B,GACZ,GAAM,EAAI,GACV,GAAU,KACV8/N,GAAa,GAAM,GACrB,SAAS3iL,GAAOuiL,GACd17O,KAAK0mC,GAAKg1M,EAAQ,GAClB,IAAK,IAAIx6O,EAAI,EAAG0tB,EAAI8sN,EAAQ76O,OAAQK,EAAI0tB,IAAK1tB,EAC3ClB,KAAK0mC,GAAK9lC,UAAUM,GAAKw6O,EAAQx6O,EAErC,CAaO,IAAI66O,GAAoB,WAC7B,SAASA,EAAKC,IACZ,QAAgBh8O,KAAM+7O,GACtB/7O,KAAKk3O,IAAMl3O,KAAKo3O,IAEhBp3O,KAAKm3O,IAAMn3O,KAAKq3O,IAAM,KACtBr3O,KAAK0mC,EAAI,GACT1mC,KAAKi8O,QAAoB,MAAVD,EAAiB7iL,GAnBpC,SAAqB6iL,GACnB,IAAIj2N,EAAI9L,KAAKwX,MAAMuqN,GACnB,KAAMj2N,GAAK,GAAI,MAAM,IAAIkiB,MAAM,mBAAmB10B,OAAOyoO,IACzD,GAAIj2N,EAAI,GAAI,OAAOozC,GACnB,IAAIzyD,EAAIuT,KAAK0B,IAAI,GAAIoK,GACrB,OAAO,SAAU21N,GACf17O,KAAK0mC,GAAKg1M,EAAQ,GAClB,IAAK,IAAIx6O,EAAI,EAAG0tB,EAAI8sN,EAAQ76O,OAAQK,EAAI0tB,IAAK1tB,EAC3ClB,KAAK0mC,GAAKzsB,KAAKwoB,MAAM7hC,UAAUM,GAAKwF,GAAKA,EAAIg1O,EAAQx6O,EAEzD,CACF,CAQ6Cg7O,CAAYF,EACvD,CAiIA,OAhIA,QAAaD,EAAM,CAAC,CAClBl7M,IAAK,SACL1+B,MAAO,SAAgB8I,EAAGC,GACxBlL,KAAKi8O,QAAQnC,KAAoBA,GAAkB2B,GAAuB,CAAC,IAAK,IAAK,MAAOz7O,KAAKk3O,IAAMl3O,KAAKm3O,KAAOlsO,EAAGjL,KAAKo3O,IAAMp3O,KAAKq3O,KAAOnsO,EAC/I,GACC,CACD21B,IAAK,YACL1+B,MAAO,WACY,OAAbnC,KAAKm3O,MACPn3O,KAAKm3O,IAAMn3O,KAAKk3O,IAAKl3O,KAAKq3O,IAAMr3O,KAAKo3O,IACrCp3O,KAAKi8O,QAAQlC,KAAqBA,GAAmB0B,GAAuB,CAAC,QAEjF,GACC,CACD56M,IAAK,SACL1+B,MAAO,SAAgB8I,EAAGC,GACxBlL,KAAKi8O,QAAQjC,KAAqBA,GAAmByB,GAAuB,CAAC,IAAK,IAAK,MAAOz7O,KAAKm3O,KAAOlsO,EAAGjL,KAAKq3O,KAAOnsO,EAC3H,GACC,CACD21B,IAAK,mBACL1+B,MAAO,SAA0BigB,EAAIC,EAAIpX,EAAGC,GAC1ClL,KAAKi8O,QAAQhC,KAAqBA,GAAmBwB,GAAuB,CAAC,IAAK,IAAK,IAAK,IAAK,OAAQr5N,GAAKC,EAAIriB,KAAKm3O,KAAOlsO,EAAGjL,KAAKq3O,KAAOnsO,EAC/I,GACC,CACD21B,IAAK,gBACL1+B,MAAO,SAAuBigB,EAAIC,EAAIC,EAAIC,EAAItX,EAAGC,GAC/ClL,KAAKi8O,QAAQ/B,KAAqBA,GAAmBuB,GAAuB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,OAAQr5N,GAAKC,GAAKC,GAAKC,EAAIviB,KAAKm3O,KAAOlsO,EAAGjL,KAAKq3O,KAAOnsO,EACnK,GACC,CACD21B,IAAK,QACL1+B,MAAO,SAAeigB,EAAIC,EAAIC,EAAIC,EAAIrD,GAIpC,GAHAkD,GAAMA,EAAIC,GAAMA,EAAIC,GAAMA,EAAIC,GAAMA,GAAIrD,GAAKA,GAGrC,EAAG,MAAM,IAAI+oB,MAAM,oBAAoB10B,OAAO2L,IACtD,IAAIwN,EAAK1sB,KAAKm3O,IACZxqN,EAAK3sB,KAAKq3O,IACV8E,EAAM75N,EAAKF,EACXg6N,EAAM75N,EAAKF,EACXg6N,EAAM3vN,EAAKtK,EACXk6N,EAAM3vN,EAAKtK,EACXk6N,EAAQF,EAAMA,EAAMC,EAAMA,EAG5B,GAAiB,OAAbt8O,KAAKm3O,IACPn3O,KAAKi8O,QAAQ9B,KAAqBA,GAAmBsB,GAAuB,CAAC,IAAK,IAAK,MAAOz7O,KAAKm3O,IAAM/0N,EAAIpiB,KAAKq3O,IAAMh1N,QAIrH,GAAMk6N,EAAQ,GAKd,GAAMtiO,KAAKoG,IAAIi8N,EAAMH,EAAMC,EAAMC,GAAO,IAAan9N,EAKrD,CACH,IAAIs9N,EAAMl6N,EAAKoK,EACb+vN,EAAMl6N,EAAKoK,EACX+vN,EAAQP,EAAMA,EAAMC,EAAMA,EAC1BO,EAAQH,EAAMA,EAAMC,EAAMA,EAC1BG,EAAM3iO,KAAK2C,KAAK8/N,GAChBG,EAAM5iO,KAAK2C,KAAK2/N,GAChBj3N,EAAIpG,EAAIjF,KAAK4O,KAAK,GAAK5O,KAAKgG,MAAMy8N,EAAQH,EAAQI,IAAU,EAAIC,EAAMC,KAAS,GAC/EC,EAAMx3N,EAAIu3N,EACVE,EAAMz3N,EAAIs3N,EAGR3iO,KAAKoG,IAAIy8N,EAAM,GAAK,IACtB98O,KAAKi8O,QAAQ5B,KAAqBA,GAAmBoB,GAAuB,CAAC,IAAK,IAAK,MAAOr5N,EAAK06N,EAAMT,EAAKh6N,EAAKy6N,EAAMR,GAE3Ht8O,KAAKi8O,QAAQ3B,KAAqBA,GAAmBmB,GAAuB,CAAC,IAAK,IAAK,QAAS,IAAK,IAAK,MAAOv8N,EAAGA,IAAKo9N,EAAME,EAAMH,EAAMI,GAAMz8O,KAAKm3O,IAAM/0N,EAAK26N,EAAMZ,EAAKn8O,KAAKq3O,IAAMh1N,EAAK06N,EAAMX,EACpM,MApBEp8O,KAAKi8O,QAAQ7B,KAAqBA,GAAmBqB,GAAuB,CAAC,IAAK,IAAK,MAAOz7O,KAAKm3O,IAAM/0N,EAAIpiB,KAAKq3O,IAAMh1N,QAqB5H,GACC,CACDwe,IAAK,MACL1+B,MAAO,SAAa8I,EAAGC,EAAGgU,EAAG86B,EAAIjvB,EAAIiyN,GAInC,GAHA/xO,GAAKA,EAAGC,GAAKA,EAAW8xO,IAAQA,GAAhB99N,GAAKA,GAGb,EAAG,MAAM,IAAI+oB,MAAM,oBAAoB10B,OAAO2L,IACtD,IAAItS,EAAKsS,EAAIjF,KAAKkC,IAAI69B,GACpBntC,EAAKqS,EAAIjF,KAAKoC,IAAI29B,GAClBttB,EAAKzhB,EAAI2B,EACT+f,EAAKzhB,EAAI2B,EACTowO,EAAK,EAAID,EACTvjC,EAAKujC,EAAMhjM,EAAKjvB,EAAKA,EAAKivB,EAGX,OAAbh6C,KAAKm3O,IACPn3O,KAAKi8O,QAAQ1B,KAAsBA,GAAoBkB,GAAuB,CAAC,IAAK,IAAK,MAAO/uN,EAAIC,IAI7F1S,KAAKoG,IAAIrgB,KAAKm3O,IAAMzqN,GAAM,IAAWzS,KAAKoG,IAAIrgB,KAAKq3O,IAAM1qN,GAAM,KACtE3sB,KAAKi8O,QAAQzB,KAAsBA,GAAoBiB,GAAuB,CAAC,IAAK,IAAK,MAAO/uN,EAAIC,GAIjGzN,IAGDu6L,EAAK,IAAGA,EAAKA,EAAK,GAAM,IAGxBA,EAAKqiC,GACP97O,KAAKi8O,QAAQxB,KAAsBA,GAAoBgB,GAAuB,CAAC,IAAK,IAAK,QAAS,IAAK,IAAK,IAAK,IAAK,QAAS,IAAK,IAAK,MAAOv8N,EAAGA,EAAG+9N,EAAIhyO,EAAI2B,EAAI1B,EAAI2B,EAAIqS,EAAGA,EAAG+9N,EAAIj9O,KAAKm3O,IAAMzqN,EAAI1sB,KAAKq3O,IAAM1qN,GAIvM8sL,EAAK,IACZz5M,KAAKi8O,QAAQvB,KAAsBA,GAAoBe,GAAuB,CAAC,IAAK,IAAK,MAAO,IAAK,IAAK,IAAK,MAAOv8N,EAAGA,IAAKu6L,GAAM,IAAKwjC,EAAIj9O,KAAKm3O,IAAMlsO,EAAIiU,EAAIjF,KAAKkC,IAAI4O,GAAK/qB,KAAKq3O,IAAMnsO,EAAIgU,EAAIjF,KAAKoC,IAAI0O,IAE9M,GACC,CACD8V,IAAK,OACL1+B,MAAO,SAAc8I,EAAGC,EAAGwiB,EAAGrI,GAC5BrlB,KAAKi8O,QAAQtB,KAAsBA,GAAoBc,GAAuB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,OAAQz7O,KAAKk3O,IAAMl3O,KAAKm3O,KAAOlsO,EAAGjL,KAAKo3O,IAAMp3O,KAAKq3O,KAAOnsO,EAAGwiB,GAAKA,GAAIrI,GAAIqI,EACnL,GACC,CACDmT,IAAK,WACL1+B,MAAO,WACL,OAAOnC,KAAK0mC,CACd,KAEKq1M,CACT,CA1I+B,GA2IxB,SAAS,KACd,OAAO,IAAIA,EACb,CQtKO,SAASmB,GAASz3O,GACvB,IAAIu2O,EAAS,EAYb,OAXAv2O,EAAMu2O,OAAS,SAAUt1M,GACvB,IAAK9lC,UAAUC,OAAQ,OAAOm7O,EAC9B,GAAS,MAALt1M,EACFs1M,EAAS,SACJ,CACL,IAAIj2N,EAAI9L,KAAKwX,MAAMiV,GACnB,KAAM3gB,GAAK,GAAI,MAAM,IAAIo3N,WAAW,mBAAmB5pO,OAAOmzB,IAC9Ds1M,EAASj2N,CACX,CACA,OAAOtgB,CACT,EACO,WACL,OAAO,IAAIs2O,GAAKC,EAClB,CACF,CCdA,SAASoB,GAAer3N,GACtB,OAAOA,EAAE+jF,WACX,CACA,SAASuzI,GAAet3N,GACtB,OAAOA,EAAEgkF,WACX,CACA,SAASuzI,GAAcv3N,GACrB,OAAOA,EAAEhE,UACX,CACA,SAASw7N,GAAYx3N,GACnB,OAAOA,EAAE/D,QACX,CACA,SAASw7N,GAAYz3N,GACnB,OAAOA,GAAKA,EAAE03N,QAChB,CAeA,SAASC,GAAehxN,EAAIC,EAAIvK,EAAIC,EAAIsL,EAAIgwN,EAAIV,GAC9C,IAAIZ,EAAM3vN,EAAKtK,EACbk6N,EAAM3vN,EAAKtK,EACX63L,GAAM+iC,EAAKU,GAAMA,GAAM/gO,GAAKy/N,EAAMA,EAAMC,EAAMA,GAC9CsB,EAAK1jC,EAAKoiC,EACVuB,GAAM3jC,EAAKmiC,EACXyB,EAAMpxN,EAAKkxN,EACXG,EAAMpxN,EAAKkxN,EACXG,EAAM57N,EAAKw7N,EACXK,EAAM57N,EAAKw7N,EACXK,GAAOJ,EAAME,GAAO,EACpBG,GAAOJ,EAAME,GAAO,EACpBrxO,EAAKoxO,EAAMF,EACXjxO,EAAKoxO,EAAMF,EACXvoN,EAAK5oB,EAAKA,EAAKC,EAAKA,EACpBqS,EAAIyO,EAAKgwN,EACTS,EAAIN,EAAMG,EAAMD,EAAMD,EACtBh4N,GAAKlZ,EAAK,GAAK,EAAI,GAAK+P,GAAK,GAAI,EAAGsC,EAAIA,EAAIsW,EAAK4oN,EAAIA,IACrDC,GAAOD,EAAIvxO,EAAKD,EAAKmZ,GAAKyP,EAC1B8oN,IAAQF,EAAIxxO,EAAKC,EAAKkZ,GAAKyP,EAC3B+oN,GAAOH,EAAIvxO,EAAKD,EAAKmZ,GAAKyP,EAC1BgpN,IAAQJ,EAAIxxO,EAAKC,EAAKkZ,GAAKyP,EAC3BipN,EAAMJ,EAAMH,EACZQ,EAAMJ,EAAMH,EACZx/M,EAAM4/M,EAAML,EACZt/M,EAAM4/M,EAAML,EAKd,OADIM,EAAMA,EAAMC,EAAMA,EAAM//M,EAAMA,EAAMC,EAAMA,IAAKy/M,EAAME,EAAKD,EAAME,GAC7D,CACL98N,GAAI28N,EACJ18N,GAAI28N,EACJjC,KAAMuB,EACNtB,KAAMuB,EACNC,IAAKO,GAAO1wN,EAAKzO,EAAI,GACrB6+N,IAAKO,GAAO3wN,EAAKzO,EAAI,GAEzB,CToGA,GAAKhf,UAAY67O,GAAK77O,UU1KHugC,MAAMvgC,UAAU8mB,MACpB,SAAS,GAAC/b,GACvB,MAAoB,iBAANA,GAAkB,WAAYA,EAAIA,EAC9Cw1B,MAAMnH,KAAKruB,EACf,CCJO,SAAS,GAAEmT,GAChB,OAAOA,EAAE,EACX,CACO,SAAS,GAAEA,GAChB,OAAOA,EAAE,EACX,CCAe,SAAS,GAACnT,EAAGC,GAC1B,IAAIyzO,EAAU,IAAS,GACrBxrN,EAAU,KACVyrN,EAAQ,GACRliM,EAAS,KACT71C,EAAOq2O,GAAShnN,GAGlB,SAASA,EAAKxQ,GACZ,IAAIxkB,EAEF6kB,EAEA84N,EAHAjwN,GAAKlJ,EAAO,GAAMA,IAAO7kB,OAEzBi+O,GAAW,EAGb,IADe,MAAX3rN,IAAiBupB,EAASkiM,EAAMC,EAASh4O,MACxC3F,EAAI,EAAGA,GAAK0tB,IAAK1tB,IACdA,EAAI0tB,GAAK+vN,EAAQ54N,EAAIL,EAAKxkB,GAAIA,EAAGwkB,MAAWo5N,KAC5CA,GAAYA,GAAUpiM,EAAOw7L,YAAiBx7L,EAAOy7L,WAEvD2G,GAAUpiM,EAAO1xC,OAAOC,EAAE8a,EAAG7kB,EAAGwkB,IAAQxa,EAAE6a,EAAG7kB,EAAGwkB,IAEtD,GAAIm5N,EAAQ,OAAOniM,EAAS,KAAMmiM,EAAS,IAAM,IACnD,CAgBA,OAhCA5zO,EAAiB,mBAANA,EAAmBA,OAAUwrB,IAANxrB,EAAkB,GAAS,GAASA,GACtEC,EAAiB,mBAANA,EAAmBA,OAAUurB,IAANvrB,EAAkB,GAAS,GAASA,GAgBtEgrB,EAAKjrB,EAAI,SAAUy7B,GACjB,OAAO9lC,UAAUC,QAAUoK,EAAiB,mBAANy7B,EAAmBA,EAAI,IAAUA,GAAIxQ,GAAQjrB,CACrF,EACAirB,EAAKhrB,EAAI,SAAUw7B,GACjB,OAAO9lC,UAAUC,QAAUqK,EAAiB,mBAANw7B,EAAmBA,EAAI,IAAUA,GAAIxQ,GAAQhrB,CACrF,EACAgrB,EAAKyoN,QAAU,SAAUj4M,GACvB,OAAO9lC,UAAUC,QAAU89O,EAAuB,mBAANj4M,EAAmBA,EAAI,KAAWA,GAAIxQ,GAAQyoN,CAC5F,EACAzoN,EAAK0oN,MAAQ,SAAUl4M,GACrB,OAAO9lC,UAAUC,QAAU+9O,EAAQl4M,EAAc,MAAXvT,IAAoBupB,EAASkiM,EAAMzrN,IAAW+C,GAAQ0oN,CAC9F,EACA1oN,EAAK/C,QAAU,SAAUuT,GACvB,OAAO9lC,UAAUC,QAAe,MAAL6lC,EAAYvT,EAAUupB,EAAS,KAAOA,EAASkiM,EAAMzrN,EAAUuT,GAAIxQ,GAAQ/C,CACxG,EACO+C,CACT,CCtCe,SAAS,GAACxJ,EAAIC,EAAItK,GAC/B,IAAID,EAAK,KACPu8N,EAAU,IAAS,GACnBxrN,EAAU,KACVyrN,EAAQ,GACRliM,EAAS,KACT71C,EAAOq2O,GAASt0L,GAIlB,SAASA,EAAKljC,GACZ,IAAIxkB,EACFgG,EACAR,EAEAqf,EAEA84N,EAHAjwN,GAAKlJ,EAAO,GAAMA,IAAO7kB,OAEzBi+O,GAAW,EAEXC,EAAM,IAAIt+M,MAAM7R,GAChBowN,EAAM,IAAIv+M,MAAM7R,GAElB,IADe,MAAXuE,IAAiBupB,EAASkiM,EAAMC,EAASh4O,MACxC3F,EAAI,EAAGA,GAAK0tB,IAAK1tB,EAAG,CACvB,KAAMA,EAAI0tB,GAAK+vN,EAAQ54N,EAAIL,EAAKxkB,GAAIA,EAAGwkB,MAAWo5N,EAChD,GAAIA,GAAYA,EACd53O,EAAIhG,EACJw7C,EAAOq7L,YACPr7L,EAAOw7L,gBACF,CAGL,IAFAx7L,EAAOy7L,UACPz7L,EAAOw7L,YACFxxO,EAAIxF,EAAI,EAAGwF,GAAKQ,IAAKR,EACxBg2C,EAAO1xC,MAAM+zO,EAAIr4O,GAAIs4O,EAAIt4O,IAE3Bg2C,EAAOy7L,UACPz7L,EAAOu7L,SACT,CAEE6G,IACFC,EAAI79O,IAAMwrB,EAAG3G,EAAG7kB,EAAGwkB,GAAOs5N,EAAI99O,IAAMyrB,EAAG5G,EAAG7kB,EAAGwkB,GAC7Cg3B,EAAO1xC,MAAMoX,GAAMA,EAAG2D,EAAG7kB,EAAGwkB,GAAQq5N,EAAI79O,GAAImhB,GAAMA,EAAG0D,EAAG7kB,EAAGwkB,GAAQs5N,EAAI99O,IAE3E,CACA,GAAI29O,EAAQ,OAAOniM,EAAS,KAAMmiM,EAAS,IAAM,IACnD,CACA,SAASI,IACP,OAAO/oN,KAAOyoN,QAAQA,GAASC,MAAMA,GAAOzrN,QAAQA,EACtD,CAqCA,OA5EAzG,EAAmB,mBAAPA,EAAoBA,OAAY+J,IAAP/J,EAAmB,GAAS,IAAUA,GAC3EC,EAAmB,mBAAPA,EAAoBA,EAAwB,QAAZ8J,IAAP9J,EAA4B,GAAeA,GAChFtK,EAAmB,mBAAPA,EAAoBA,OAAYoU,IAAPpU,EAAmB,GAAS,IAAUA,GAsC3EumC,EAAK39C,EAAI,SAAUy7B,GACjB,OAAO9lC,UAAUC,QAAU6rB,EAAkB,mBAANga,EAAmBA,EAAI,IAAUA,GAAItkB,EAAK,KAAMwmC,GAAQl8B,CACjG,EACAk8B,EAAKl8B,GAAK,SAAUga,GAClB,OAAO9lC,UAAUC,QAAU6rB,EAAkB,mBAANga,EAAmBA,EAAI,IAAUA,GAAIkiB,GAAQl8B,CACtF,EACAk8B,EAAKxmC,GAAK,SAAUskB,GAClB,OAAO9lC,UAAUC,QAAUuhB,EAAU,MAALskB,EAAY,KAAoB,mBAANA,EAAmBA,EAAI,IAAUA,GAAIkiB,GAAQxmC,CACzG,EACAwmC,EAAK19C,EAAI,SAAUw7B,GACjB,OAAO9lC,UAAUC,QAAU8rB,EAAkB,mBAAN+Z,EAAmBA,EAAI,IAAUA,GAAIrkB,EAAK,KAAMumC,GAAQj8B,CACjG,EACAi8B,EAAKj8B,GAAK,SAAU+Z,GAClB,OAAO9lC,UAAUC,QAAU8rB,EAAkB,mBAAN+Z,EAAmBA,EAAI,IAAUA,GAAIkiB,GAAQj8B,CACtF,EACAi8B,EAAKvmC,GAAK,SAAUqkB,GAClB,OAAO9lC,UAAUC,QAAUwhB,EAAU,MAALqkB,EAAY,KAAoB,mBAANA,EAAmBA,EAAI,IAAUA,GAAIkiB,GAAQvmC,CACzG,EACAumC,EAAKs2L,OAASt2L,EAAKu2L,OAAS,WAC1B,OAAOF,IAAWh0O,EAAEyhB,GAAIxhB,EAAEyhB,EAC5B,EACAi8B,EAAKw2L,OAAS,WACZ,OAAOH,IAAWh0O,EAAEyhB,GAAIxhB,EAAEmX,EAC5B,EACAumC,EAAKy2L,OAAS,WACZ,OAAOJ,IAAWh0O,EAAEmX,GAAIlX,EAAEyhB,EAC5B,EACAi8B,EAAK+1L,QAAU,SAAUj4M,GACvB,OAAO9lC,UAAUC,QAAU89O,EAAuB,mBAANj4M,EAAmBA,EAAI,KAAWA,GAAIkiB,GAAQ+1L,CAC5F,EACA/1L,EAAKg2L,MAAQ,SAAUl4M,GACrB,OAAO9lC,UAAUC,QAAU+9O,EAAQl4M,EAAc,MAAXvT,IAAoBupB,EAASkiM,EAAMzrN,IAAWy1B,GAAQg2L,CAC9F,EACAh2L,EAAKz1B,QAAU,SAAUuT,GACvB,OAAO9lC,UAAUC,QAAe,MAAL6lC,EAAYvT,EAAUupB,EAAS,KAAOA,EAASkiM,EAAMzrN,EAAUuT,GAAIkiB,GAAQz1B,CACxG,EACOy1B,CACT,CCzFYhsC,GAAK,GAAjB,ICAA,IACE9U,KAAM,SAAcqrB,EAASmR,GAC3B,IAAIplB,EAAItC,GAAK0nB,EAAOvoB,IACpBoX,EAAQta,OAAOqG,EAAG,GAClBiU,EAAQusL,IAAI,EAAG,EAAGxgM,EAAG,EAAGjB,GAC1B,GCJEqhO,ICDQ1iO,GAAK,EAAI,GDCZP,GAAIN,GAAK,IAAMM,GAAI,EAAIN,GAAK,KAC5BM,GAAI4B,GAAM,IACT9B,GAAI8B,GAAM,IEHRrB,GAAK,GCALA,GAAK,GCCTA,GAAK,GACDA,GAAK,ICHjB,SAAS2iO,GAAU7xN,EAAGrI,GACpB,GAAwB,oBAAb1a,UAA4BA,SAAS+Z,cAAe,CAC7D,IAAIS,EAAIxa,SAAS+Z,cAAc,UAC/B,GAAIS,GAAKA,EAAER,WAGT,OAFAQ,EAAEpX,MAAQ2f,EACVvI,EAAEnX,OAASqX,EACJF,CAEX,CACA,OAAO,IACT,CACA,IAAIq6N,GAAW,WACb,MAAwB,oBAAV92K,MAAwBA,MAAQ,IAChD,ECHI,GAAc,6BAGd,GAAa,kGACb,GAAgB,8DAGhB,GAAe,UAoCnB,SAAS,GAAKhK,EAAIC,GAChB,OAAO,GAAMt9D,MAAMrB,KAAMY,UAC3B,CAWA,SAAS,KAkBP,OAjBA,GAAQ,GAAgC,UAAyB,SAASorE,EAASupJ,EAAKpwL,GACtF,IAAI+nH,EAAKvzF,EACT,OAAO,UAAyB,SAAmBsS,GACjD,cAAkBA,EAAU32C,KAAO22C,EAAU12C,MAC3C,KAAK,EAEH,OADA02C,EAAU12C,KAAO,EACVv1B,KAAKw1N,SAASD,EAAKpwL,GAC5B,KAAK,EAGH,OAFA+nH,EAAMjhF,EAAUpf,KAChB8M,EAAMuzF,EAAI5tE,KACHrT,EAAU9W,OAAO,SAAU+3F,EAAIuoE,UAAYz1N,KAAKo5D,KAAKO,GAAO35D,KAAK01N,KAAK/7J,EAAKx0B,IACpF,KAAK,EACL,IAAK,MACH,OAAO8mC,EAAUjnE,OAEvB,GAAGgnE,EAAUhsE,KACf,MACaqB,MAAMrB,KAAMY,UAC3B,CACA,SAAS,GAAS6kI,EAAKC,GACrB,OAAO,GAAUrkI,MAAMrB,KAAMY,UAC/B,CASA,SAAS,KAuEP,OAtEA,GAAY,GAAgC,UAAyB,SAAS8mI,EAAS6tF,EAAKpwL,GAC1F,IAAIywL,EAAYhjN,EAAQwoD,EAAQy6J,EAAUrzL,EAAMszL,EAAWC,EAC3D,OAAO,UAAyB,SAAmBpuF,GACjD,cAAkBA,EAAUryG,KAAOqyG,EAAUpyG,MAC3C,KAAK,EA2DH,OA1DA4P,EAAU2Q,GAAO,CAAC,EAAG91C,KAAKmlC,QAASA,GACnCywL,EAAa51N,KAAK41N,WAAYhjN,EAAS,CACrC0sE,KAAM,MAERw2I,EAAY,GAAWxwN,KAAKiwN,EAAI3vM,QAAQ,GAAe,KAC5C,MAAP2vM,GAA8B,iBAARA,GAAqBO,GAC7C,GAAM,kCAAoC,GAAYP,IAExDQ,EAAc,GAAYzwN,KAAKiwN,IAC1B/yL,EAAO2C,EAAQ6wL,WAAaD,IAE1BR,EAAIh0I,WAAW,MAAS/+C,EAAKw4B,SAAS,OACzCu6J,EAAM,IAAMA,GAEdA,EAAM/yL,EAAO+yL,GAIfM,GAAYz6J,EAASm6J,EAAIh0I,WAAW,MAAmC,SAAjBp8C,EAAQg2H,MAAoC,SAAjBh2H,EAAQg2H,OAAoB46D,GAAeH,EACxHx6J,EAEFm6J,EAAMA,EAAIvuM,MAAM,GAAanmB,QACpB00N,EAAIh0I,WAAW,QACQ,SAA5Bp8C,EAAQ8wL,iBAEVV,EAAMA,EAAIvuM,MAAM,GAChB6uM,GAAW,GAGXN,GAAOpwL,EAAQ8wL,iBAAmB,QAAU,IAAMV,GAKtD/9M,OAAOoxB,eAAeh2B,EAAQ,YAAa,CACzCzQ,QAAS0zN,IAIXjjN,EAAO0sE,KAAOi2I,EAGVpwL,EAAQz8B,SACVkK,EAAOlK,OAASy8B,EAAQz8B,OAAS,IAI/By8B,EAAQ21E,MACVloG,EAAOkoG,IAAM31E,EAAQ21E,IAAM,IAKL,UAApB31E,EAAQhS,SAAuBgS,EAAQm8C,cACzC1uE,EAAO0uE,YAAcn8C,EAAQm8C,YAAc,IAItCqmD,EAAUxyE,OAAO,SAAUviD,GACpC,KAAK,GACL,IAAK,MACH,OAAO+0H,EAAU3iI,OAEvB,GAAG0iI,EAAU1nI,KACf,KACO,GAAUqB,MAAMrB,KAAMY,UAC/B,CACA,SAAS,GAAWu1N,GAClB,OAAOA,EAAK,SAAU78J,GACpB,OAAO,IAAI1yB,SAAQ,SAAU81B,EAAQp1B,GACnC6uL,EAAGC,SAAS98J,GAAU,SAAUlM,EAAO1nC,GACjC0nC,EAAO9lB,EAAO8lB,GAAYsP,EAAOh3C,EACvC,GACF,GACF,EAAI,EACN,CAKA,SAAS,KACP,OAAO,GAAYrkB,MAAMrB,KAAMY,UACjC,CASA,SAAS,KAYP,OAXA,GAAc,GAAgC,UAAyB,SAASinI,IAC9E,OAAO,UAAyB,SAAmBC,GACjD,cAAkBA,EAAUxyG,KAAOwyG,EAAUvyG,MAC3C,KAAK,EACH,GAAM,0BACR,KAAK,EACL,IAAK,MACH,OAAOuyG,EAAU9iI,OAEvB,GAAG6iI,EACL,MACmBxmI,MAAMrB,KAAMY,UACjC,CACA,SAAS,GAAW41N,GAClB,OAAOA,EAAqB,WAC1B,IAAI3kK,EAAO,GAAgC,UAAyB,SAASoM,EAAQtE,EAAKx0B,GACxF,IAAI+nH,EAAKvkJ,EAAM6vD,EACf,OAAO,UAAyB,SAAkBgG,GAChD,cAAkBA,EAASlpC,KAAOkpC,EAASjpC,MACzC,KAAK,EAIH,OAHA23H,EAAMp3G,GAAO,CAAC,EAAG91C,KAAKmlC,QAAQuwL,KAAMvwL,GACpCx8B,EAAOw8B,GAAWA,EAAQqzB,SAC1BgG,EAASjpC,KAAO,EACTihM,EAAM78J,EAAKuzF,GACpB,KAAK,EAEH,OADA10F,EAAWgG,EAAS3R,KACb2R,EAASrJ,OAAO,SAAWqD,EAASwJ,GAAyD0qE,GAAWl0E,EAAS7vD,IAAS6vD,EAAS7vD,KAAU6vD,EAAS33C,OAA7G,GAAM23C,EAASiB,OAAS,GAAKjB,EAASgjD,aACxF,KAAK,EACL,IAAK,MACH,OAAOh9C,EAASx5D,OAEtB,GAAGi5D,EAASj+D,KACd,KACA,OAAO,SAAU2lI,EAAKsB,GACpB,OAAOp1E,EAAKxwD,MAAMrB,KAAMY,UAC1B,CACF,CAtB4B,GAsBtB,EACR,CAKA,SAAS,KACP,OAAO,GAAYS,MAAMrB,KAAMY,UACjC,CACA,SAAS,KAYP,OAXA,GAAc,GAAgC,UAAyB,SAAS+1N,IAC9E,OAAO,UAAyB,SAAmBC,GACjD,cAAkBA,EAAUthM,KAAOshM,EAAUrhM,MAC3C,KAAK,EACH,GAAM,mCACR,KAAK,EACL,IAAK,MACH,OAAOqhM,EAAU5xN,OAEvB,GAAG2xN,EACL,MACmBt1N,MAAMrB,KAAMY,UACjC,CAqDA,SAAS,GAAgBu9M,GACvB,IAAI13J,EAAQ,SAAe/gC,EAAMsuB,GAC/B,IAAIojL,EAAQ,CACVjZ,UAAWA,GAEb,OAAO,GAAIz4L,EAAMsuB,EAAS8B,GAAO9B,EAAQojL,GAASA,EACpD,EAEA,OADA3wK,EAAM4wK,aAAe,OACd5wK,CACT,CACA,SAAS,GAAI/gC,EAAMsuB,GAIjB,OAHIA,EAAO+6I,SACTrpK,EAAOsuB,EAAO+6I,OAAO/9J,IAAI,IAAa3H,KAAK2qB,EAAOmqK,WAAa,KAAOz4L,GAEjE4xM,GAAUtjL,EAAOmqK,WAAW13J,MAAM/gC,EAAO,GAClD,CAKA,SAAS,GAAKA,EAAMsuB,GAClB,IAJgBtN,EAIZxhC,EAAO8uC,GAAUA,EAAOgnK,SAAWn7E,GAAM7rF,EAAOgnK,UAAYt2K,GAChE,OAAOypB,GAASzoC,KALAghB,EAKmBhhB,EAJV,mBAAXyhB,QAAyBulG,GAAWvlG,OAAOW,WAAYX,OAAOW,SAASpB,IAIVxhC,EAAK87C,KAAKyF,MAAM/gC,IAG7F,SAAmBA,EAAMsuB,IAClB,GAAQtuB,IAASk2L,GAAWl2L,KAC/BA,GAAO,QAAmBA,IAE5B,OAAOsuB,GAAUA,EAAOhM,KAAOgZ,KAAKyF,MAAMzF,KAAKF,UAAUp7B,IAASA,CACpE,CAR6C,CAAUxgB,EAAKwgB,GAAOsuB,EACnE,CAPA,GAAIqjL,aAAe,OAQnB,GAAKA,aAAe,OAOpB,IAAI,GAAU,CACZI,SAAU,SAAkBt5M,EAAG8E,GAC7B,OAAO9E,IAAM8E,CACf,EACAy0M,SAAU,SAAkBv5M,EAAG8E,GAC7B,OAAO9E,IAAM8E,CACf,GAEF,SAAS,GAASyC,EAAMsuB,GACtB,IAAIroC,EAAQg5B,EAAQq2K,EAAUzqM,EAa9B,OAZAmV,EAAO,GAAKA,EAAMsuB,GACdA,GAAUA,EAAO4jL,SACnBjsN,EAASisN,GACT5c,EAAWhnK,EAAO4jL,SACT5jL,GAAUA,EAAO6jL,MAC1BlsN,EAASksN,GACT7c,EAAWhnK,EAAO6jL,KAClBtnN,EAAS,GAAQyjC,EAAOzjC,SAExB,GAAM,gDAERo0B,GAAUA,EAASjf,EAAKw5L,QAAQlE,IAAarvM,EAAO+Z,EAAMif,EAAQp0B,GAAU,GAAM,4BAA8ByqM,KAC/Fr2K,EAAOw6K,UAAY,CAACx6K,EACvC,CACA,GAAS0yL,aAAe,OAGjB,GAAgB,KAChB,GAAgB,MAiEvB,IAAI,GAhZJ,SAAuBb,EAAOL,GAC5B,OAAO,SAAUhxL,GACf,MAAO,CACLA,QAASA,GAAW,CAAC,EACrBqwL,SAAU,GACVH,KAAM,GACNO,aAAcO,EACd/8J,KAAM,GAAW+8J,GACjBT,KAAM,GAAWc,GAErB,CACF,CAqYa,CAA+B,oBAAVA,OAAyBA,MAE3D,MC7aIipB,GAAkB13B,GAAS,IACpB23B,GAAcD,GAAgB9sO,MAC9BgtO,GAAaF,GAAgBzwO,KAExC,IAD0B+4M,GAAS,IAAQlqL,OAC3C,4BCPe,SAAS,GAAC1f,EAAG8E,GAC1B,OAAO9E,GAAKA,EAAG8E,GAAKA,EAAG,SAAUlf,GAC/B,OAAOkW,KAAKwoB,MAAMtkB,GAAK,EAAIpa,GAAKkf,EAAIlf,EACtC,CACF,CCJe,SAAS,GAAOkH,GAC7B,OAAQA,CACV,CCEA,IAAI2jI,GAAO,CAAC,EAAG,GACR,SAAS,GAAS3jI,GACvB,OAAOA,CACT,CACA,SAAS,GAAUkT,EAAG8E,GACpB,OAAQA,GAAK9E,GAAKA,GAAK,SAAUlT,GAC/B,OAAQA,EAAIkT,GAAK8E,CACnB,ECXa,SAAmBhY,GAChC,OAAO,WACL,OAAOA,CACT,CACF,CDOM,CAASiX,MAAMe,GAAKsxB,IAAM,GAChC,CAWA,SAASqrM,GAAMrlM,EAAQoN,EAAOk4L,GAC5B,IAAI3jN,EAAKqe,EAAO,GACdllB,EAAKklB,EAAO,GACZ1sB,EAAK85B,EAAM,GACXh6B,EAAKg6B,EAAM,GAEb,OADItyB,EAAK6G,GAAIA,EAAK,GAAU7G,EAAI6G,GAAKrO,EAAKgyN,EAAYlyN,EAAIE,KAASqO,EAAK,GAAUA,EAAI7G,GAAKxH,EAAKgyN,EAAYhyN,EAAIF,IACzG,SAAU1iB,GACf,OAAO4iB,EAAGqO,EAAGjxB,GACf,CACF,CACA,SAAS60O,GAAQvlM,EAAQoN,EAAOk4L,GAC9B,IAAI34O,EAAI+S,KAAKC,IAAIqgC,EAAO15C,OAAQ8mD,EAAM9mD,QAAU,EAC9CklB,EAAI,IAAI0a,MAAMv5B,GACdgY,EAAI,IAAIuhB,MAAMv5B,GACdhG,GAAK,EAOP,IAJIq5C,EAAOrzC,GAAKqzC,EAAO,KACrBA,EAASA,EAAOvzB,QAAQ4J,UACxB+2B,EAAQA,EAAM3gC,QAAQ4J,aAEf1vB,EAAIgG,GACX6e,EAAE7kB,GAAK,GAAUq5C,EAAOr5C,GAAIq5C,EAAOr5C,EAAI,IACvCge,EAAEhe,GAAK2+O,EAAYl4L,EAAMzmD,GAAIymD,EAAMzmD,EAAI,IAEzC,OAAO,SAAU+J,GACf,IAAI/J,EAAIggD,GAAO3G,EAAQtvC,EAAG,EAAG/D,GAAK,EAClC,OAAOgY,EAAEhe,GAAG6kB,EAAE7kB,GAAG+J,GACnB,CACF,CACO,SAAS+8B,GAAK3W,EAAQ3oB,GAC3B,OAAOA,EAAO6xC,OAAOlpB,EAAOkpB,UAAUoN,MAAMt2B,EAAOs2B,SAASk4L,YAAYxuN,EAAOwuN,eAAejqM,MAAMvkB,EAAOukB,SAASkhL,QAAQzlM,EAAOylM,UACrI,CACO,SAASipB,KACd,IAGEjsO,EACAksO,EACAlpB,EAEAmpB,EACAvjM,EACA2sE,EATE9uE,EAASq0F,GACXjnF,EAAQinF,GACRixG,EAAc,KAIdjqM,EAAQ,GAIV,SAASsqM,IACP,IAAItxN,EAAI3U,KAAKC,IAAIqgC,EAAO15C,OAAQ8mD,EAAM9mD,QAItC,OAHI+0C,IAAU,KAAUA,EAxD5B,SAAiBz3B,EAAG8E,GAClB,IAAIlf,EAEJ,OADIoa,EAAI8E,IAAGlf,EAAIoa,EAAGA,EAAI8E,EAAGA,EAAIlf,GACtB,SAAUkH,GACf,OAAOgP,KAAKE,IAAIgE,EAAGlE,KAAKC,IAAI+I,EAAGhY,GACjC,CACF,CAkDoCk1O,CAAQ5lM,EAAO,GAAIA,EAAO3rB,EAAI,KAC9DqxN,EAAYrxN,EAAI,EAAIkxN,GAAUF,GAC9BljM,EAAS2sE,EAAQ,KACVvwG,CACT,CACA,SAASA,EAAM7N,GACb,OAAY,MAALA,GAAaiX,MAAMjX,GAAKA,GAAK6rN,GAAWp6K,IAAWA,EAASujM,EAAU1lM,EAAOvpB,IAAIld,GAAY6zC,EAAOk4L,KAAe/rO,EAAU8hC,EAAM3qC,IAC5I,CAsBA,OArBA6N,EAAMwL,OAAS,SAAUpZ,GACvB,OAAO0qC,EAAMoqM,GAAa32H,IAAUA,EAAQ42H,EAAUt4L,EAAOpN,EAAOvpB,IAAIld,GAAY,QAAqB5I,IAC3G,EACA4N,EAAMyhC,OAAS,SAAU7T,GACvB,OAAO9lC,UAAUC,QAAU05C,EAAS9Z,MAAMnH,KAAKoN,EAAG,IAASw5M,KAAa3lM,EAAOvzB,OACjF,EACAlO,EAAM6uC,MAAQ,SAAUjhB,GACtB,OAAO9lC,UAAUC,QAAU8mD,EAAQlnB,MAAMnH,KAAKoN,GAAIw5M,KAAav4L,EAAM3gC,OACvE,EACAlO,EAAMsnO,WAAa,SAAU15M,GAC3B,OAAOihB,EAAQlnB,MAAMnH,KAAKoN,GAAIm5M,EAAc,GAAkBK,GAChE,EACApnO,EAAM88B,MAAQ,SAAUlP,GACtB,OAAO9lC,UAAUC,QAAU+0C,IAAQlP,GAAW,GAAUw5M,KAAatqM,IAAU,EACjF,EACA98B,EAAM+mO,YAAc,SAAUn5M,GAC5B,OAAO9lC,UAAUC,QAAUg/O,EAAcn5M,EAAGw5M,KAAaL,CAC3D,EACA/mO,EAAMg+M,QAAU,SAAUpwL,GACxB,OAAO9lC,UAAUC,QAAUi2N,EAAUpwL,EAAG5tB,GAASg+M,CACnD,EACO,SAAU/yN,EAAGyhB,GAElB,OADA1R,EAAY/P,EAAGi8O,EAAcx6N,EACtB06N,GACT,CACF,CACe,SAASG,KACtB,OAAON,KAAc,GAAU,GACjC,CEzGO,SAASO,GAAU/lM,EAAQoN,GAChC,OAAQ/mD,UAAUC,QAChB,KAAK,EACH,MACF,KAAK,EACHb,KAAK2nD,MAAMpN,GACX,MACF,QACEv6C,KAAK2nD,MAAMA,GAAOpN,OAAOA,GAG7B,OAAOv6C,IACT,CACO,SAASugP,GAAiBhmM,EAAQimM,GACvC,OAAQ5/O,UAAUC,QAChB,KAAK,EACH,MACF,KAAK,EAEqB,mBAAX05C,EAAuBv6C,KAAKwgP,aAAajmM,GAAav6C,KAAK2nD,MAAMpN,GAC5E,MAEJ,QAEIv6C,KAAKu6C,OAAOA,GACgB,mBAAjBimM,EAA6BxgP,KAAKwgP,aAAaA,GAAmBxgP,KAAK2nD,MAAM64L,GAI9F,OAAOxgP,IACT,CC7BA,ICAW,GDAP,GAAK,2EACM,SAAS,GAAgB+hN,GACtC,KAAM9mL,EAAQ,GAAGgZ,KAAK8tK,IAAa,MAAM,IAAI95K,MAAM,mBAAqB85K,GACxE,IAAI9mL,EACJ,OAAO,IAAI,GAAgB,CACzB2gB,KAAM3gB,EAAM,GACZo5D,MAAOp5D,EAAM,GACb09K,KAAM19K,EAAM,GACZwN,OAAQxN,EAAM,GACd0c,KAAM1c,EAAM,GACZltB,MAAOktB,EAAM,GACbgnL,MAAOhnL,EAAM,GACb2H,UAAW3H,EAAM,IAAMA,EAAM,GAAGjU,MAAM,GACtC6M,KAAMoH,EAAM,GACZtyB,KAAMsyB,EAAM,KAEhB,CAGO,SAAS,GAAgB8mL,GAC9B/hN,KAAK47C,UAA0BnlB,IAAnBsrL,EAAUnmK,KAAqB,IAAMmmK,EAAUnmK,KAAO,GAClE57C,KAAKq0F,WAA4B59D,IAApBsrL,EAAU1tH,MAAsB,IAAM0tH,EAAU1tH,MAAQ,GACrEr0F,KAAK24M,UAA0BliL,IAAnBsrL,EAAUpJ,KAAqB,IAAMoJ,EAAUpJ,KAAO,GAClE34M,KAAKyoC,YAA8BhS,IAArBsrL,EAAUt5K,OAAuB,GAAKs5K,EAAUt5K,OAAS,GACvEzoC,KAAK23C,OAASoqK,EAAUpqK,KACxB33C,KAAK+N,WAA4B0oB,IAApBsrL,EAAUh0M,WAAsB0oB,GAAasrL,EAAUh0M,MACpE/N,KAAKiiN,QAAUF,EAAUE,MACzBjiN,KAAK4iC,eAAoCnM,IAAxBsrL,EAAUn/K,eAA0BnM,GAAasrL,EAAUn/K,UAC5E5iC,KAAK6zB,OAASkuL,EAAUluL,KACxB7zB,KAAK2I,UAA0B8tB,IAAnBsrL,EAAUp5M,KAAqB,GAAKo5M,EAAUp5M,KAAO,EACnE,CExBO,SAAS,GAAmBsC,EAAGmT,GACpC,IAAKld,GAAK+J,EAAImT,EAAInT,EAAEk3M,cAAc/jM,EAAI,GAAKnT,EAAEk3M,iBAAiBjvM,QAAQ,MAAQ,EAAG,OAAO,KACxF,IAAIhS,EACFkhN,EAAcn3M,EAAE+b,MAAM,EAAG9lB,GAI3B,MAAO,CAACkhN,EAAYvhN,OAAS,EAAIuhN,EAAY,GAAKA,EAAYp7L,MAAM,GAAKo7L,GAAcn3M,EAAE+b,MAAM9lB,EAAI,GACrG,CCde,SAAS,GAAC+J,GACvB,OAAOA,EAAI,GAAmBgP,KAAKoG,IAAIpV,KAASA,EAAE,GAAKspC,GACzD,CCFe,SAAS,GAACtpC,EAAGmT,GAC1B,IAAI2H,EAAI,GAAmB9a,EAAGmT,GAC9B,IAAK2H,EAAG,OAAO9a,EAAI,GACnB,IAAIm3M,EAAcr8L,EAAE,GAClBnK,EAAWmK,EAAE,GACf,OAAOnK,EAAW,EAAI,KAAO,IAAI6kB,OAAO7kB,GAAUyN,KAAK,KAAO+4L,EAAcA,EAAYvhN,OAAS+a,EAAW,EAAIwmM,EAAYp7L,MAAM,EAAGpL,EAAW,GAAK,IAAMwmM,EAAYp7L,MAAMpL,EAAW,GAAKwmM,EAAc,IAAI3hL,MAAM7kB,EAAWwmM,EAAYvhN,OAAS,GAAGwoB,KAAK,IAC/P,CJWA,GAAgBnpB,UAAY,GAAgBA,UAc5C,GAAgBA,UAAU0iB,SAAW,WACnC,OAAO5iB,KAAK47C,KAAO57C,KAAKq0F,MAAQr0F,KAAK24M,KAAO34M,KAAKyoC,QAAUzoC,KAAK23C,KAAO,IAAM,UAAsBlhB,IAAfz2B,KAAK+N,MAAsB,GAAKkM,KAAKE,IAAI,EAAgB,EAAbna,KAAK+N,SAAe/N,KAAKiiN,MAAQ,IAAM,UAA0BxrL,IAAnBz2B,KAAK4iC,UAA0B,GAAK,IAAM3oB,KAAKE,IAAI,EAAoB,EAAjBna,KAAK4iC,aAAmB5iC,KAAK6zB,KAAO,IAAM,IAAM7zB,KAAK2I,IAC3R,EK/BA,QACE,IAAK,SAAWsC,EAAGmT,GACjB,OAAY,IAAJnT,GAASmd,QAAQhK,EAC3B,EACA,EAAK,SAAWnT,GACd,OAAOgP,KAAKwoB,MAAMx3B,GAAG2X,SAAS,EAChC,EACA,EAAK,SAAW3X,GACd,OAAOA,EAAI,EACb,EACA,EHba,SAAUA,GACvB,OAAOgP,KAAKoG,IAAIpV,EAAIgP,KAAKwoB,MAAMx3B,KAAO,KAAOA,EAAEo3M,eAAe,MAAMz8L,QAAQ,KAAM,IAAM3a,EAAE2X,SAAS,GACrG,EGYE,EAAK,SAAW3X,EAAGmT,GACjB,OAAOnT,EAAEk3M,cAAc/jM,EACzB,EACA,EAAK,SAAWnT,EAAGmT,GACjB,OAAOnT,EAAEmd,QAAQhK,EACnB,EACA,EAAK,SAAWnT,EAAGmT,GACjB,OAAOnT,EAAEq3M,YAAYlkM,EACvB,EACA,EAAK,SAAWnT,GACd,OAAOgP,KAAKwoB,MAAMx3B,GAAG2X,SAAS,EAChC,EACA,EAAK,SAAW3X,EAAGs3M,GACjB,OAAO,GAAkB,IAAJt3M,EAASs3M,EAChC,EACA,EAAK,GACL,EJ5Ba,SAAUt3M,EAAGmT,GAC1B,IAAI2H,EAAI,GAAmB9a,EAAGmT,GAC9B,IAAK2H,EAAG,OAAO9a,EAAI,GACnB,IAAIm3M,EAAcr8L,EAAE,GAClBnK,EAAWmK,EAAE,GACb7kB,EAAI0a,GAAY,GAAuE,EAAtD3B,KAAKE,KAAK,EAAGF,KAAKC,IAAI,EAAGD,KAAKwX,MAAM7V,EAAW,MAAY,EAC5FgT,EAAIwzL,EAAYvhN,OAClB,OAAOK,IAAM0tB,EAAIwzL,EAAclhN,EAAI0tB,EAAIwzL,EAAc,IAAI3hL,MAAMv/B,EAAI0tB,EAAI,GAAGvF,KAAK,KAAOnoB,EAAI,EAAIkhN,EAAYp7L,MAAM,EAAG9lB,GAAK,IAAMkhN,EAAYp7L,MAAM9lB,GAAK,KAAO,IAAIu/B,MAAM,EAAIv/B,GAAGmoB,KAAK,KAAO,GAAmBpe,EAAGgP,KAAKE,IAAI,EAAGiE,EAAIld,EAAI,IAAI,EACzO,EIqBE,EAAK,SAAW+J,GACd,OAAOgP,KAAKwoB,MAAMx3B,GAAG2X,SAAS,IAAIgE,aACpC,EACA,EAAK,SAAW83C,GACd,OAAOzkD,KAAKwoB,MAAMi8B,GAAI97C,SAAS,GACjC,GCpCa,SAAS,GAAC3X,GACvB,OAAOA,CACT,CCMA,ICPI,GACO,GACA,GDKP,GAAMw1B,MAAMvgC,UAAU8wB,IACxB,GAAW,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAC9E,SAAS,GAAC6wC,GACvB,IEXuB8gJ,EAAUC,EFW7BlxM,OAA4B+kB,IAApBorC,EAAO8gJ,eAA+ClsL,IAArBorC,EAAO+gJ,UAA0B,IEXvDD,EFW8E,GAAI/gN,KAAKigE,EAAO8gJ,SAAU1gM,QEX9F2gM,EFWuG/gJ,EAAO+gJ,UAAY,GEVpJ,SAAUzgN,EAAO4L,GAMtB,IALA,IAAI7M,EAAIiB,EAAMtB,OACZkD,EAAI,GACJmD,EAAI,EACJstC,EAAImuK,EAAS,GACb9hN,EAAS,EACJK,EAAI,GAAKszC,EAAI,IACd3zC,EAAS2zC,EAAI,EAAIzmC,IAAOymC,EAAIv6B,KAAKE,IAAI,EAAGpM,EAAQlN,IACpDkD,EAAExD,KAAK4B,EAAM8gC,UAAU/hC,GAAKszC,EAAGtzC,EAAIszC,OAC9B3zC,GAAU2zC,EAAI,GAAKzmC,KACxBymC,EAAImuK,EAASz7M,GAAKA,EAAI,GAAKy7M,EAAS9hN,QAEtC,OAAOkD,EAAE6sB,UAAUvH,KAAKu5L,EAC1B,GFFEC,OAAqCpsL,IAApBorC,EAAOihJ,SAAyB,GAAKjhJ,EAAOihJ,SAAS,GAAK,GAC3EC,OAAqCtsL,IAApBorC,EAAOihJ,SAAyB,GAAKjhJ,EAAOihJ,SAAS,GAAK,GAC3EE,OAA6BvsL,IAAnBorC,EAAOmhJ,QAAwB,IAAMnhJ,EAAOmhJ,QAAU,GAChEC,OAA+BxsL,IAApBorC,EAAOohJ,SAAyB,GGfhC,SAAUA,GACvB,OAAO,SAAU9gN,GACf,OAAOA,EAAMyjB,QAAQ,UAAU,SAAU1kB,GACvC,OAAO+hN,GAAU/hN,EACnB,GACF,CACF,CHS0D,CAAe,GAAIU,KAAKigE,EAAOohJ,SAAUt9L,SAC/FozC,OAA6BtiC,IAAnBorC,EAAO9I,QAAwB,IAAM8I,EAAO9I,QAAU,GAChEoqJ,OAAyB1sL,IAAjBorC,EAAOshJ,MAAsB,IAAMthJ,EAAOshJ,MAAQ,GAC1DC,OAAqB3sL,IAAforC,EAAOuhJ,IAAoB,MAAQvhJ,EAAOuhJ,IAAM,GACxD,SAASC,EAAUtB,GAEjB,IAAInmK,GADJmmK,EAAY,GAAgBA,IACPnmK,KACnBy4C,EAAQ0tH,EAAU1tH,MAClBskH,EAAOoJ,EAAUpJ,KACjBlwK,EAASs5K,EAAUt5K,OACnBkP,EAAOoqK,EAAUpqK,KACjB5pC,EAAQg0M,EAAUh0M,MAClBk0M,EAAQF,EAAUE,MAClBr/K,EAAYm/K,EAAUn/K,UACtB/O,EAAOkuL,EAAUluL,KACjBlrB,EAAOo5M,EAAUp5M,KAGN,MAATA,GAAcs5M,GAAQ,EAAMt5M,EAAO,KAG7B,GAAYA,UAAqB8tB,IAAdmM,IAA4BA,EAAY,IAAK/O,GAAO,EAAMlrB,EAAO,MAG1FgvC,GAAiB,MAATiE,GAA0B,MAAVy4C,KAAe18C,GAAO,EAAMiE,EAAO,IAAKy4C,EAAQ,KAI5E,IAAI3uD,EAAoB,MAAX+C,EAAiBo6K,EAA4B,MAAXp6K,GAAkB,SAASnjC,KAAKqD,GAAQ,IAAMA,EAAKiW,cAAgB,GAChH22I,EAAoB,MAAX9sH,EAAiBs6K,EAAiB,OAAOz9M,KAAKqD,GAAQowD,EAAU,GAKvEwqJ,EAAa,GAAY56M,GAC3B66M,EAAc,aAAal+M,KAAKqD,GAOlC,SAASqrC,EAAO7xC,GACd,IAEEjB,EACA0tB,EACAzJ,EAJEs+L,EAAc/9K,EAChBg+K,EAAcnuD,EAIhB,GAAa,MAAT5sJ,EACF+6M,EAAcH,EAAWphN,GAASuhN,EAClCvhN,EAAQ,OACH,CAIL,IAAIwhN,GAHJxhN,GAASA,GAGmB,GAAK,EAAIA,EAAQ,EAiB7C,GAdAA,EAAQ+f,MAAM/f,GAASihN,EAAMG,EAAWtpM,KAAKoG,IAAIle,GAAQygC,GAGrD/O,IAAM1xB,EI3EH,SAAU2b,GACvBoF,EAAK,IAAK,IAAkC44B,EAA9BltB,EAAI9Q,EAAEjd,OAAQK,EAAI,EAAG26C,GAAM,EAAO36C,EAAI0tB,IAAK1tB,EACvD,OAAQ4c,EAAE5c,IACR,IAAK,IACH26C,EAAKC,EAAK56C,EACV,MACF,IAAK,IACQ,IAAP26C,IAAUA,EAAK36C,GACnB46C,EAAK56C,EACL,MACF,QACE,KAAM4c,EAAE5c,GAAI,MAAMgiB,EACd24B,EAAK,IAAGA,EAAK,GAIvB,OAAOA,EAAK,EAAI/9B,EAAEkJ,MAAM,EAAG60B,GAAM/9B,EAAEkJ,MAAM80B,EAAK,GAAKh+B,CACrD,CJ0D0B,CAAW3b,IAGzBwhN,GAA4B,IAAVxhN,GAAwB,MAATw2M,IAAcgL,GAAgB,GAGnEF,GAAeE,EAAyB,MAAThL,EAAeA,EAAOwK,EAAiB,MAATxK,GAAyB,MAATA,EAAe,GAAKA,GAAQ8K,EACzGC,GAAwB,MAAT/6M,EAAe,GAAS,EAAI,GAAiB,GAAK,IAAM+6M,GAAeC,GAA0B,MAAThL,EAAe,IAAM,IAIxH6K,EAEF,IADAtiN,GAAK,EAAG0tB,EAAIzsB,EAAMtB,SACTK,EAAI0tB,GACX,GAA6B,IAAzBzJ,EAAIhjB,EAAMsxM,WAAWvyM,KAAcikB,EAAI,GAAI,CAC7Cu+L,GAAqB,KAANv+L,EAAW69L,EAAU7gN,EAAM6kB,MAAM9lB,EAAI,GAAKiB,EAAM6kB,MAAM9lB,IAAMwiN,EAC3EvhN,EAAQA,EAAM6kB,MAAM,EAAG9lB,GACvB,KACF,CAGN,CAGI+gN,IAAUtqK,IAAMx1C,EAAQuP,EAAMvP,EAAOoC,MAGzC,IAAI1D,EAAS4iN,EAAY5iN,OAASsB,EAAMtB,OAAS6iN,EAAY7iN,OAC3Du5E,EAAUv5E,EAASkN,EAAQ,IAAI0yB,MAAM1yB,EAAQlN,EAAS,GAAGwoB,KAAKuyB,GAAQ,GAMxE,OAHIqmK,GAAStqK,IAAMx1C,EAAQuP,EAAM0oE,EAAUj4E,EAAOi4E,EAAQv5E,OAASkN,EAAQ21M,EAAY7iN,OAAS0D,KAAW61E,EAAU,IAG7Gia,GACN,IAAK,IACHlyF,EAAQshN,EAActhN,EAAQuhN,EAActpI,EAC5C,MACF,IAAK,IACHj4E,EAAQshN,EAAcrpI,EAAUj4E,EAAQuhN,EACxC,MACF,IAAK,IACHvhN,EAAQi4E,EAAQpzD,MAAM,EAAGnmB,EAASu5E,EAAQv5E,QAAU,GAAK4iN,EAActhN,EAAQuhN,EAActpI,EAAQpzD,MAAMnmB,GAC3G,MACF,QACEsB,EAAQi4E,EAAUqpI,EAActhN,EAAQuhN,EAG5C,OAAOT,EAAS9gN,EAClB,CAIA,OAzEAygC,OAA0BnM,IAAdmM,EAA0B,EAAI,SAASt9B,KAAKqD,GAAQsR,KAAKE,IAAI,EAAGF,KAAKC,IAAI,GAAI0oB,IAAc3oB,KAAKE,IAAI,EAAGF,KAAKC,IAAI,GAAI0oB,IAsEhIoR,EAAOpxB,SAAW,WAChB,OAAOm/L,EAAY,EACrB,EACO/tK,CACT,CAUA,MAAO,CACLA,OAAQqvK,EACRZ,aAXF,SAAsBV,EAAW5/M,GAC/B,IAAIkB,EAAIggN,IAAWtB,EAAY,GAAgBA,IAAsBp5M,KAAO,IAAKo5M,IAC/E79M,EAAiE,EAA7D+V,KAAKE,KAAK,EAAGF,KAAKC,IAAI,EAAGD,KAAKwX,MAAM,GAAStvB,GAAS,KAC1DuE,EAAIuT,KAAK0B,IAAI,IAAKzX,GAClBwhC,EAAS,GAAS,EAAIxhC,EAAI,GAC5B,OAAO,SAAU/B,GACf,OAAOkB,EAAEqD,EAAIvE,GAASujC,CACxB,CACF,EAKF,CK9Ie,SAAS+6M,GAAW/5N,EAAO1hB,EAAM8rB,EAAOixL,GACrD,IACEn/K,EADE6kB,EAAOm6J,GAASl7L,EAAO1hB,EAAM8rB,GAGjC,QADAixL,EAAY,GAA6B,MAAbA,EAAoB,KAAOA,IACrCp5M,MAChB,IAAK,IAED,IAAIxG,EAAQ8X,KAAKE,IAAIF,KAAKoG,IAAIqG,GAAQzM,KAAKoG,IAAIrb,IAE/C,OAD2B,MAAvB+8M,EAAUn/K,WAAsB1gB,MAAM0gB,ECTnC,SAAU6kB,EAAMtlD,GAC7B,OAAO8X,KAAKE,IAAI,EAAgE,EAA7DF,KAAKE,KAAK,EAAGF,KAAKC,IAAI,EAAGD,KAAKwX,MAAM,GAAStvB,GAAS,KAAW,GAAS8X,KAAKoG,IAAIonC,IACxG,CDO8D,CAAgBA,EAAMtlD,MAAS4/M,EAAUn/K,UAAYA,GACpG,GAAam/K,EAAW5/M,GAEnC,IAAK,GACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IAE0B,MAAvB4/M,EAAUn/K,WAAsB1gB,MAAM0gB,EElBnC,SAAU6kB,EAAMttC,GAE7B,OADAstC,EAAOxtC,KAAKoG,IAAIonC,GAAOttC,EAAMF,KAAKoG,IAAIlG,GAAOstC,EACtCxtC,KAAKE,IAAI,EAAG,GAASA,GAAO,GAASstC,IAAS,CACvD,CFe8D,CAAeA,EAAMxtC,KAAKE,IAAIF,KAAKoG,IAAIqG,GAAQzM,KAAKoG,IAAIrb,QAAU+8M,EAAUn/K,UAAYA,GAAgC,MAAnBm/K,EAAUp5M,OACrK,MAEJ,IAAK,IACL,IAAK,IAE0B,MAAvBo5M,EAAUn/K,WAAsB1gB,MAAM0gB,EGxBnC,SAAU6kB,GACvB,OAAOxtC,KAAKE,IAAI,GAAI,GAASF,KAAKoG,IAAIonC,IACxC,CHsB8D,CAAeA,MAAQs6J,EAAUn/K,UAAYA,EAAuC,GAAP,MAAnBm/K,EAAUp5M,OAIhI,OAAO,GAAOo5M,EAChB,CI1BO,SAAS2+B,GAAU5nO,GACxB,IAAIyhC,EAASzhC,EAAMyhC,OA0CnB,OAzCAzhC,EAAM0oM,MAAQ,SAAU1wL,GACtB,IAAI/K,EAAIw0B,IACR,OAAOinK,GAAMz7L,EAAE,GAAIA,EAAEA,EAAEllB,OAAS,GAAa,MAATiwB,EAAgB,GAAKA,EAC3D,EACAhY,EAAM2nO,WAAa,SAAU3vN,EAAOixL,GAClC,IAAIh8L,EAAIw0B,IACR,OAAOkmM,GAAW16N,EAAE,GAAIA,EAAEA,EAAEllB,OAAS,GAAa,MAATiwB,EAAgB,GAAKA,EAAOixL,EACvE,EACAjpM,EAAMyrN,KAAO,SAAUzzM,GACR,MAATA,IAAeA,EAAQ,IAC3B,IAKI6vN,EACAl5L,EANA1hC,EAAIw0B,IACJsB,EAAK,EACLC,EAAK/1B,EAAEllB,OAAS,EAChB6lB,EAAQX,EAAE81B,GACV72C,EAAO+gB,EAAE+1B,GAGTlC,EAAU,GAKd,IAJI50C,EAAO0hB,IACT+gC,EAAO/gC,EAAOA,EAAQ1hB,EAAMA,EAAOyiD,EACnCA,EAAO5L,EAAIA,EAAKC,EAAIA,EAAK2L,GAEpB7N,KAAY,GAAG,CAEpB,IADA6N,EAAOk6J,GAAcj7L,EAAO1hB,EAAM8rB,MACrB6vN,EAGX,OAFA56N,EAAE81B,GAAMn1B,EACRX,EAAE+1B,GAAM92C,EACDu1C,EAAOx0B,GACT,GAAI0hC,EAAO,EAChB/gC,EAAQzM,KAAKwX,MAAM/K,EAAQ+gC,GAAQA,EACnCziD,EAAOiV,KAAKisJ,KAAKlhK,EAAOyiD,GAAQA,MAC3B,MAAIA,EAAO,GAIhB,MAHA/gC,EAAQzM,KAAKisJ,KAAKx/I,EAAQ+gC,GAAQA,EAClCziD,EAAOiV,KAAKwX,MAAMzsB,EAAOyiD,GAAQA,CAGnC,CACAk5L,EAAUl5L,CACZ,CACA,OAAO3uC,CACT,EACOA,CACT,CChDe,SAASyrN,GAAKhqL,EAAQ/3C,GAEnC,IAIEuB,EAJE83C,EAAK,EACPC,GAFFvB,EAASA,EAAOvzB,SAEFnmB,OAAS,EACrB6rB,EAAK6tB,EAAOsB,GACZz5B,EAAKm4B,EAAOuB,GAQd,OANI15B,EAAKsK,IACP3oB,EAAI83C,EAAIA,EAAKC,EAAIA,EAAK/3C,EACtBA,EAAI2oB,EAAIA,EAAKtK,EAAIA,EAAKre,GAExBw2C,EAAOsB,GAAMr5C,EAASivB,MAAM/E,GAC5B6tB,EAAOuB,GAAMt5C,EAAS0jK,KAAK9jJ,GACpBm4B,CACT,CCTA,SAASqmM,GAAa31O,GACpB,OAAOgP,KAAKy/B,IAAIzuC,EAClB,CACA,SAAS41O,GAAa51O,GACpB,OAAOgP,KAAK6gC,IAAI7vC,EAClB,CACA,SAAS61O,GAAc71O,GACrB,OAAQgP,KAAKy/B,KAAKzuC,EACpB,CACA,SAAS81O,GAAc91O,GACrB,OAAQgP,KAAK6gC,KAAK7vC,EACpB,CACA,SAAS+1O,GAAM/1O,GACb,OAAOq1B,SAASr1B,KAAO,KAAOA,GAAKA,EAAI,EAAI,EAAIA,CACjD,CAWA,SAASg2O,GAAQ59O,GACf,OAAO,SAAU4H,EAAGvE,GAClB,OAAQrD,GAAG4H,EAAGvE,EAChB,CACF,CACO,SAASw6O,GAAQptO,GACtB,IAGIqtO,EACAC,EAJAtoO,EAAQhF,EAAU8sO,GAAcC,IAChCtmM,EAASzhC,EAAMyhC,OACf/X,EAAO,GAGX,SAAS09M,IAQP,OAPAiB,EAjBJ,SAAc3+M,GACZ,OAAOA,IAASvoB,KAAKwlB,EAAIxlB,KAAKy/B,IAAe,KAATlX,GAAevoB,KAAKqnM,OAAkB,IAAT9+K,GAAcvoB,KAAKonO,OAAS7+M,EAAOvoB,KAAKy/B,IAAIlX,GAAO,SAAUv3B,GAC5H,OAAOgP,KAAKy/B,IAAIzuC,GAAKu3B,CACvB,EACF,CAaW8+M,CAAK9+M,GAAO4+M,EAtBvB,SAAc5+M,GACZ,OAAgB,KAATA,EAAcw+M,GAAQx+M,IAASvoB,KAAKwlB,EAAIxlB,KAAK6gC,IAAM,SAAU7vC,GAClE,OAAOgP,KAAK0B,IAAI6mB,EAAMv3B,EACxB,CACF,CAkB8Bs2O,CAAK/+M,GAC3B+X,IAAS,GAAK,GAChB4mM,EAAOF,GAAQE,GAAOC,EAAOH,GAAQG,GACrCttO,EAAUgtO,GAAeC,KAEzBjtO,EAAU8sO,GAAcC,IAEnB/nO,CACT,CAuEA,OAtEAA,EAAM0pB,KAAO,SAAUkE,GACrB,OAAO9lC,UAAUC,QAAU2hC,GAAQkE,EAAGw5M,KAAa19M,CACrD,EACA1pB,EAAMyhC,OAAS,SAAU7T,GACvB,OAAO9lC,UAAUC,QAAU05C,EAAO7T,GAAIw5M,KAAa3lM,GACrD,EACAzhC,EAAM0oM,MAAQ,SAAU1wL,GACtB,IAAI/K,EAAIw0B,IACJ/0B,EAAIO,EAAE,GACN9T,EAAI8T,EAAEA,EAAEllB,OAAS,GACjBqe,EAAIjN,EAAIuT,EACZ,GAAItG,EAAG,CACL,IAAI2yC,EAAO,CAAC5/C,EAAGuT,GACfA,EAAIqsC,EAAK,GACT5/C,EAAI4/C,EAAK,EACX,CACA,IAEInrD,EACA3C,EAHA7C,EAAIigP,EAAK37N,GACTte,EAAIi6O,EAAKlvO,GAGT2c,EAAa,MAATkC,EAAgB,IAAMA,EAC1BrL,EAAI,GACR,KAAM+c,EAAO,IAAMt7B,EAAIhG,EAAI0tB,EAAG,CAE5B,GADA1tB,EAAI+Y,KAAKwX,MAAMvwB,GAAIgG,EAAI+S,KAAKisJ,KAAKh/J,GAC7Bse,EAAI,GAAG,KAAOtkB,GAAKgG,IAAKhG,EAC1B,IAAKwF,EAAI,EAAGA,EAAI87B,IAAQ97B,EAEtB,MADA3C,EAAI7C,EAAI,EAAIwF,EAAI06O,GAAMlgP,GAAKwF,EAAI06O,EAAKlgP,IAC5BskB,GAAR,CACA,GAAIzhB,EAAIkO,EAAG,MACXwT,EAAEllB,KAAKwD,EAFY,OAIhB,KAAO7C,GAAKgG,IAAKhG,EACtB,IAAKwF,EAAI87B,EAAO,EAAG97B,GAAK,IAAKA,EAE3B,MADA3C,EAAI7C,EAAI,EAAIwF,EAAI06O,GAAMlgP,GAAKwF,EAAI06O,EAAKlgP,IAC5BskB,GAAR,CACA,GAAIzhB,EAAIkO,EAAG,MACXwT,EAAEllB,KAAKwD,EAFY,CAKR,EAAX0hB,EAAE5kB,OAAa+tB,IAAGnJ,EAAI+7L,GAAMh8L,EAAGvT,EAAG2c,GACxC,MACEnJ,EAAI+7L,GAAMtgN,EAAGgG,EAAG+S,KAAKC,IAAIhT,EAAIhG,EAAG0tB,IAAIoC,IAAIowN,GAE1C,OAAOliO,EAAIuG,EAAEmL,UAAYnL,CAC3B,EACA3M,EAAM2nO,WAAa,SAAU3vN,EAAOixL,GAOlC,GANa,MAATjxL,IAAeA,EAAQ,IACV,MAAbixL,IAAmBA,EAAqB,KAATv/K,EAAc,IAAM,KAC9B,mBAAdu/K,IACHv/K,EAAO,GAA4D,OAArDu/K,EAAY,GAAgBA,IAAYn/K,YAAmBm/K,EAAUluL,MAAO,GAChGkuL,EAAY,GAAOA,IAEjBjxL,IAAUvsB,IAAU,OAAOw9M,EAC/B,IAAIr7M,EAAIuT,KAAKE,IAAI,EAAGqoB,EAAO1R,EAAQhY,EAAM0oM,QAAQ3gN,QACjD,OAAO,SAAUklB,GACf,IAAI7kB,EAAI6kB,EAAIq7N,EAAKnnO,KAAKwoB,MAAM0+M,EAAKp7N,KAEjC,OADI7kB,EAAIshC,EAAOA,EAAO,KAAKthC,GAAKshC,GACzBthC,GAAKwF,EAAIq7M,EAAUh8L,GAAK,EACjC,CACF,EACAjN,EAAMyrN,KAAO,WACX,OAAOhqL,EAAOgqL,GAAKhqL,IAAU,CAC3B9oB,MAAO,SAAexmB,GACpB,OAAOm2O,EAAKnnO,KAAKwX,MAAM0vN,EAAKl2O,IAC9B,EACAi7J,KAAM,SAAcj7J,GAClB,OAAOm2O,EAAKnnO,KAAKisJ,KAAKi7E,EAAKl2O,IAC7B,IAEJ,EACO6N,CACT,CCvHA,SAAS0oO,GAAa5lO,GACpB,OAAO,SAAU3Q,GACf,OAAOA,EAAI,GAAKgP,KAAK0B,KAAK1Q,EAAG2Q,GAAY3B,KAAK0B,IAAI1Q,EAAG2Q,EACvD,CACF,CACA,SAAS6lO,GAAcx2O,GACrB,OAAOA,EAAI,GAAKgP,KAAK2C,MAAM3R,GAAKgP,KAAK2C,KAAK3R,EAC5C,CACA,SAASy2O,GAAgBz2O,GACvB,OAAOA,EAAI,GAAKA,EAAIA,EAAIA,EAAIA,CAC9B,CACO,SAAS02O,GAAO7tO,GACrB,IAAIgF,EAAQhF,EAAU,GAAU,IAC9B8H,EAAW,EAOb,OAHA9C,EAAM8C,SAAW,SAAU8qB,GACzB,OAAO9lC,UAAUC,OAHG,KAGO+a,GAAY8qB,GAHf5yB,EAAU,GAAU,IAAyB,KAAb8H,EAAmB9H,EAAU2tO,GAAeC,IAAmB5tO,EAAU0tO,GAAa5lO,GAAW4lO,GAAa,EAAI5lO,IAGnHA,CACzD,EACO8kO,GAAU5nO,EACnB,CACe,SAAS,KACtB,IAAIA,EAAQ6oO,GAAO5B,MAKnB,OAJAjnO,EAAMkvB,KAAO,WACX,OAAOA,GAAKlvB,EAAO,MAAO8C,SAAS9C,EAAM8C,WAC3C,EACA0kO,GAAUj/O,MAAMyX,EAAOlY,WAChBkY,CACT,CC7BA,SAAS8oO,GAAgBz8N,GACvB,OAAO,SAAUla,GACf,OAAOgP,KAAK0+L,KAAK1tM,GAAKgP,KAAK4+L,MAAM5+L,KAAKoG,IAAIpV,EAAIka,GAChD,CACF,CACA,SAAS08N,GAAgB18N,GACvB,OAAO,SAAUla,GACf,OAAOgP,KAAK0+L,KAAK1tM,GAAKgP,KAAK8+L,MAAM9+L,KAAKoG,IAAIpV,IAAMka,CAClD,CACF,CACO,SAAS28N,GAAUhuO,GACxB,IAAIqR,EAAI,EACNrM,EAAQhF,EAAU8tO,GAAgBz8N,GAAI08N,GAAgB18N,IAIxD,OAHArM,EAAM0gM,SAAW,SAAU9yK,GACzB,OAAO9lC,UAAUC,OAASiT,EAAU8tO,GAAgBz8N,GAAKuhB,GAAIm7M,GAAgB18N,IAAMA,CACrF,EACOu7N,GAAU5nO,EACnB,CCTA,SAASipO,GAAO7/K,EAAMD,EAAOsnJ,EAAMoB,EAAK4J,EAAMD,GAC5C,IAAI0tB,EAAgB,CAAC,CAAC36B,GAAQ,EAAGrD,IAAiB,CAACqD,GAAQ,EAAG,KAAqB,CAACA,GAAQ,GAAI,MAAsB,CAACA,GAAQ,GAAI,KAAsB,CAACiN,EAAQ,EAAGrQ,IAAiB,CAACqQ,EAAQ,EAAG,KAAqB,CAACA,EAAQ,GAAI,KAAsB,CAACA,EAAQ,GAAI,MAAsB,CAACC,EAAM,EAAGrQ,IAAe,CAACqQ,EAAM,EAAG,OAAmB,CAACA,EAAM,EAAG,OAAmB,CAACA,EAAM,GAAI,OAAoB,CAAC5J,EAAK,EAAGxG,IAAc,CAACwG,EAAK,EAAG,QAAkB,CAACpB,EAAM,EAAGnF,IAAe,CAACniJ,EAAO,EAAGoiJ,IAAgB,CAACpiJ,EAAO,EAAG,QAAoB,CAACC,EAAM,EAAGoiJ,KAY9hB,SAAS29B,EAAav7N,EAAO1hB,EAAM8rB,GACjC,IAAIpoB,EAASuR,KAAKoG,IAAIrb,EAAO0hB,GAASoK,EAClC5vB,EAAI6mN,IAAS,SAAU/pJ,GAGzB,OAFY,OAAeA,EAAO,GACnB,EAEjB,IAAGrrD,MAAMqvO,EAAet5O,GACxB,GAAIxH,IAAM8gP,EAAcnhP,OAAQ,OAAOqhE,EAAKsmE,MAAMo5E,GAASl7L,EAAQ49L,GAAct/M,EAAOs/M,GAAcxzL,IACtG,GAAU,IAAN5vB,EAAS,OAAOomN,GAAY9+E,MAAMvuH,KAAKE,IAAIynM,GAASl7L,EAAO1hB,EAAM8rB,GAAQ,IAC7E,IAAIoxN,GAAiB,OAAeF,EAAct5O,EAASs5O,EAAc9gP,EAAI,GAAG,GAAK8gP,EAAc9gP,GAAG,GAAKwH,EAASxH,EAAI,EAAIA,GAAI,GAC9H6C,EAAIm+O,EAAe,GACnBz6L,EAAOy6L,EAAe,GACxB,OAAOn+O,EAAEykI,MAAM/gF,EACjB,CACA,MAAO,CAzBP,SAAe/gC,EAAO1hB,EAAM8rB,GAC1B,IAAIF,EAAU5rB,EAAO0hB,EACrB,GAAIkK,EAAS,CACX,IAAIihC,EAAO,CAAC7sD,EAAM0hB,GAClBA,EAAQmrC,EAAK,GACb7sD,EAAO6sD,EAAK,EACd,CACA,IAAIrvD,EAAWsuB,GAAgC,mBAAhBA,EAAM62B,MAAuB72B,EAAQmxN,EAAav7N,EAAO1hB,EAAM8rB,GAC1F0wL,EAAQh/M,EAAWA,EAASmlD,MAAMjhC,GAAQ1hB,EAAO,GAAK,GAC1D,OAAO4rB,EAAU4wL,EAAM5wL,UAAY4wL,CACrC,EAeeygC,EACjB,Eb9Be,SAAuBlsM,GACpC,GAAS,GAAaA,GACtB,GAAS,GAAO/B,OAChB,GAAe,GAAOyuK,YAExB,CAVA,CAAc,CACZG,UAAW,IACXD,SAAU,CAAC,GACXG,SAAU,CAAC,IAAK,MaiClB,IAAIq/B,GAAUJ,GAAOz7B,GAASI,GAAUf,GAAWZ,GAASiC,GAASG,IACnEi7B,IAAW,OAAeD,GAAS,GACnCE,GAAWD,GAAS,GACpBE,GAAkBF,GAAS,GACzBG,GAAWR,GAAO77B,GAAUO,GAAWvB,GAAYX,GAASoC,GAAUO,IACxEs7B,IAAW,OAAeD,GAAU,GACpCE,GAAYD,GAAS,GACrBE,GAAmBF,GAAS,GC9C9B,SAAS,GAAUz8N,GACjB,GAAI,GAAKA,EAAE7a,GAAK6a,EAAE7a,EAAI,IAAK,CACzB,IAAI68D,EAAO,IAAI/kE,MAAM,EAAG+iB,EAAEhQ,EAAGgQ,EAAEA,EAAGA,EAAE4jM,EAAG5jM,EAAE6jM,EAAG7jM,EAAE8jM,EAAG9jM,EAAE+jM,GAEnD,OADA/hJ,EAAKq+I,YAAYrgM,EAAE7a,GACZ68D,CACT,CACA,OAAO,IAAI/kE,KAAK+iB,EAAE7a,EAAG6a,EAAEhQ,EAAGgQ,EAAEA,EAAGA,EAAE4jM,EAAG5jM,EAAE6jM,EAAG7jM,EAAE8jM,EAAG9jM,EAAE+jM,EAClD,CACA,SAAS,GAAQ/jM,GACf,GAAI,GAAKA,EAAE7a,GAAK6a,EAAE7a,EAAI,IAAK,CACzB,IAAI68D,EAAO,IAAI/kE,KAAKA,KAAKmnN,KAAK,EAAGpkM,EAAEhQ,EAAGgQ,EAAEA,EAAGA,EAAE4jM,EAAG5jM,EAAE6jM,EAAG7jM,EAAE8jM,EAAG9jM,EAAE+jM,IAE5D,OADA/hJ,EAAKy+I,eAAezgM,EAAE7a,GACf68D,CACT,CACA,OAAO,IAAI/kE,KAAKA,KAAKmnN,IAAIpkM,EAAE7a,EAAG6a,EAAEhQ,EAAGgQ,EAAEA,EAAGA,EAAE4jM,EAAG5jM,EAAE6jM,EAAG7jM,EAAE8jM,EAAG9jM,EAAE+jM,GAC3D,CACA,SAAS,GAAQ5+M,EAAG6K,EAAGgQ,GACrB,MAAO,CACL7a,EAAGA,EACH6K,EAAGA,EACHgQ,EAAGA,EACH4jM,EAAG,EACHC,EAAG,EACHC,EAAG,EACHC,EAAG,EAEP,CAuUA,ICjWI,GACO,GAEA,GD8VP,GAAO,CACP,IAAK,GACL,EAAK,IACL,EAAK,KAEP,GAAW,UAEX,GAAY,KACZ,GAAY,sBACd,SAAS,GAAI3nN,EAAOy5C,EAAM7tC,GACxB,IAAI4qM,EAAOx2M,EAAQ,EAAI,IAAM,GAC3BokD,GAAUoyJ,GAAQx2M,EAAQA,GAAS,GACnCtB,EAAS0lD,EAAO1lD,OAClB,OAAO83M,GAAQ93M,EAASkN,EAAQ,IAAI0yB,MAAM1yB,EAAQlN,EAAS,GAAGwoB,KAAKuyB,GAAQ2K,EAASA,EACtF,CACA,SAAS,GAAQzoC,GACf,OAAOA,EAAE8H,QAAQ,GAAW,OAC9B,CACA,SAAS,GAASqtM,GAChB,OAAO,IAAInuM,OAAO,OAASmuM,EAAMjiM,IAAI,IAAS3H,KAAK,KAAO,IAAK,IACjE,CACA,SAAS,GAAa4pM,GACpB,OAAO,IAAIl0M,IAAIk0M,EAAMjiM,KAAI,SAAU/uB,EAAMf,GACvC,MAAO,CAACe,EAAK2c,cAAe1d,EAC9B,IACF,CACA,SAAS,GAAyB6kB,EAAGwgC,EAAQrlD,GAC3C,IAAI0tB,EAAI,GAASqlB,KAAKsS,EAAOv/B,MAAM9lB,EAAGA,EAAI,IAC1C,OAAO0tB,GAAK7I,EAAE2H,GAAKkB,EAAE,GAAI1tB,EAAI0tB,EAAE,GAAG/tB,SAAW,CAC/C,CACA,SAAS,GAAyBklB,EAAGwgC,EAAQrlD,GAC3C,IAAI0tB,EAAI,GAASqlB,KAAKsS,EAAOv/B,MAAM9lB,EAAGA,EAAI,IAC1C,OAAO0tB,GAAK7I,EAAEP,GAAKoJ,EAAE,GAAI1tB,EAAI0tB,EAAE,GAAG/tB,SAAW,CAC/C,CACA,SAAS,GAAsBklB,EAAGwgC,EAAQrlD,GACxC,IAAI0tB,EAAI,GAASqlB,KAAKsS,EAAOv/B,MAAM9lB,EAAGA,EAAI,IAC1C,OAAO0tB,GAAK7I,EAAEusM,GAAK1jM,EAAE,GAAI1tB,EAAI0tB,EAAE,GAAG/tB,SAAW,CAC/C,CACA,SAAS,GAAmBklB,EAAGwgC,EAAQrlD,GACrC,IAAI0tB,EAAI,GAASqlB,KAAKsS,EAAOv/B,MAAM9lB,EAAGA,EAAI,IAC1C,OAAO0tB,GAAK7I,EAAEssM,GAAKzjM,EAAE,GAAI1tB,EAAI0tB,EAAE,GAAG/tB,SAAW,CAC/C,CACA,SAAS,GAAsBklB,EAAGwgC,EAAQrlD,GACxC,IAAI0tB,EAAI,GAASqlB,KAAKsS,EAAOv/B,MAAM9lB,EAAGA,EAAI,IAC1C,OAAO0tB,GAAK7I,EAAEi2B,GAAKptB,EAAE,GAAI1tB,EAAI0tB,EAAE,GAAG/tB,SAAW,CAC/C,CACA,SAAS,GAAcklB,EAAGwgC,EAAQrlD,GAChC,IAAI0tB,EAAI,GAASqlB,KAAKsS,EAAOv/B,MAAM9lB,EAAGA,EAAI,IAC1C,OAAO0tB,GAAK7I,EAAE7a,GAAK0jB,EAAE,GAAI1tB,EAAI0tB,EAAE,GAAG/tB,SAAW,CAC/C,CACA,SAAS,GAAUklB,EAAGwgC,EAAQrlD,GAC5B,IAAI0tB,EAAI,GAASqlB,KAAKsS,EAAOv/B,MAAM9lB,EAAGA,EAAI,IAC1C,OAAO0tB,GAAK7I,EAAE7a,GAAK0jB,EAAE,KAAOA,EAAE,GAAK,GAAK,KAAO,KAAO1tB,EAAI0tB,EAAE,GAAG/tB,SAAW,CAC5E,CACA,SAAS,GAAUklB,EAAGwgC,EAAQrlD,GAC5B,IAAI0tB,EAAI,+BAA+BqlB,KAAKsS,EAAOv/B,MAAM9lB,EAAGA,EAAI,IAChE,OAAO0tB,GAAK7I,EAAEqsM,EAAIxjM,EAAE,GAAK,IAAMA,EAAE,IAAMA,EAAE,IAAM,OAAQ1tB,EAAI0tB,EAAE,GAAG/tB,SAAW,CAC7E,CACA,SAAS,GAAaklB,EAAGwgC,EAAQrlD,GAC/B,IAAI0tB,EAAI,GAASqlB,KAAKsS,EAAOv/B,MAAM9lB,EAAGA,EAAI,IAC1C,OAAO0tB,GAAK7I,EAAER,EAAW,EAAPqJ,EAAE,GAAS,EAAG1tB,EAAI0tB,EAAE,GAAG/tB,SAAW,CACtD,CACA,SAAS,GAAiBklB,EAAGwgC,EAAQrlD,GACnC,IAAI0tB,EAAI,GAASqlB,KAAKsS,EAAOv/B,MAAM9lB,EAAGA,EAAI,IAC1C,OAAO0tB,GAAK7I,EAAEhQ,EAAI6Y,EAAE,GAAK,EAAG1tB,EAAI0tB,EAAE,GAAG/tB,SAAW,CAClD,CACA,SAAS,GAAgBklB,EAAGwgC,EAAQrlD,GAClC,IAAI0tB,EAAI,GAASqlB,KAAKsS,EAAOv/B,MAAM9lB,EAAGA,EAAI,IAC1C,OAAO0tB,GAAK7I,EAAEA,GAAK6I,EAAE,GAAI1tB,EAAI0tB,EAAE,GAAG/tB,SAAW,CAC/C,CACA,SAAS,GAAeklB,EAAGwgC,EAAQrlD,GACjC,IAAI0tB,EAAI,GAASqlB,KAAKsS,EAAOv/B,MAAM9lB,EAAGA,EAAI,IAC1C,OAAO0tB,GAAK7I,EAAEhQ,EAAI,EAAGgQ,EAAEA,GAAK6I,EAAE,GAAI1tB,EAAI0tB,EAAE,GAAG/tB,SAAW,CACxD,CACA,SAAS,GAAYklB,EAAGwgC,EAAQrlD,GAC9B,IAAI0tB,EAAI,GAASqlB,KAAKsS,EAAOv/B,MAAM9lB,EAAGA,EAAI,IAC1C,OAAO0tB,GAAK7I,EAAE4jM,GAAK/6L,EAAE,GAAI1tB,EAAI0tB,EAAE,GAAG/tB,SAAW,CAC/C,CACA,SAAS,GAAaklB,EAAGwgC,EAAQrlD,GAC/B,IAAI0tB,EAAI,GAASqlB,KAAKsS,EAAOv/B,MAAM9lB,EAAGA,EAAI,IAC1C,OAAO0tB,GAAK7I,EAAE6jM,GAAKh7L,EAAE,GAAI1tB,EAAI0tB,EAAE,GAAG/tB,SAAW,CAC/C,CACA,SAAS,GAAaklB,EAAGwgC,EAAQrlD,GAC/B,IAAI0tB,EAAI,GAASqlB,KAAKsS,EAAOv/B,MAAM9lB,EAAGA,EAAI,IAC1C,OAAO0tB,GAAK7I,EAAE8jM,GAAKj7L,EAAE,GAAI1tB,EAAI0tB,EAAE,GAAG/tB,SAAW,CAC/C,CACA,SAAS,GAAkBklB,EAAGwgC,EAAQrlD,GACpC,IAAI0tB,EAAI,GAASqlB,KAAKsS,EAAOv/B,MAAM9lB,EAAGA,EAAI,IAC1C,OAAO0tB,GAAK7I,EAAE+jM,GAAKl7L,EAAE,GAAI1tB,EAAI0tB,EAAE,GAAG/tB,SAAW,CAC/C,CACA,SAAS,GAAkBklB,EAAGwgC,EAAQrlD,GACpC,IAAI0tB,EAAI,GAASqlB,KAAKsS,EAAOv/B,MAAM9lB,EAAGA,EAAI,IAC1C,OAAO0tB,GAAK7I,EAAE+jM,EAAI7vM,KAAKwX,MAAM7C,EAAE,GAAK,KAAO1tB,EAAI0tB,EAAE,GAAG/tB,SAAW,CACjE,CACA,SAAS,GAAoBklB,EAAGwgC,EAAQrlD,GACtC,IAAI0tB,EAAI,GAAUqlB,KAAKsS,EAAOv/B,MAAM9lB,EAAGA,EAAI,IAC3C,OAAO0tB,EAAI1tB,EAAI0tB,EAAE,GAAG/tB,QAAU,CAChC,CACA,SAAS,GAAmBklB,EAAGwgC,EAAQrlD,GACrC,IAAI0tB,EAAI,GAASqlB,KAAKsS,EAAOv/B,MAAM9lB,IACnC,OAAO0tB,GAAK7I,EAAE0E,GAAKmE,EAAE,GAAI1tB,EAAI0tB,EAAE,GAAG/tB,SAAW,CAC/C,CACA,SAAS,GAA0BklB,EAAGwgC,EAAQrlD,GAC5C,IAAI0tB,EAAI,GAASqlB,KAAKsS,EAAOv/B,MAAM9lB,IACnC,OAAO0tB,GAAK7I,EAAEjI,GAAK8Q,EAAE,GAAI1tB,EAAI0tB,EAAE,GAAG/tB,SAAW,CAC/C,CACA,SAAS,GAAiBklB,EAAG3H,GAC3B,OAAO,GAAI2H,EAAE2+L,UAAWtmM,EAAG,EAC7B,CACA,SAAS,GAAa2H,EAAG3H,GACvB,OAAO,GAAI2H,EAAEghM,WAAY3oM,EAAG,EAC9B,CACA,SAAS,GAAa2H,EAAG3H,GACvB,OAAO,GAAI2H,EAAEghM,WAAa,IAAM,GAAI3oM,EAAG,EACzC,CACA,SAAS,GAAgB2H,EAAG3H,GAC1B,OAAO,GAAI,EAAImmM,GAAQzzL,MAAMo1L,GAASngM,GAAIA,GAAI3H,EAAG,EACnD,CACA,SAAS,GAAmB2H,EAAG3H,GAC7B,OAAO,GAAI2H,EAAE6gM,kBAAmBxoM,EAAG,EACrC,CACA,SAAS,GAAmB2H,EAAG3H,GAC7B,OAAO,GAAmB2H,EAAG3H,GAAK,KACpC,CACA,SAAS,GAAkB2H,EAAG3H,GAC5B,OAAO,GAAI2H,EAAE+7G,WAAa,EAAG1jH,EAAG,EAClC,CACA,SAAS,GAAc2H,EAAG3H,GACxB,OAAO,GAAI2H,EAAE+gM,aAAc1oM,EAAG,EAChC,CACA,SAAS,GAAc2H,EAAG3H,GACxB,OAAO,GAAI2H,EAAE8gM,aAAczoM,EAAG,EAChC,CACA,SAAS,GAA0B2H,GACjC,IAAI4kM,EAAM5kM,EAAEk/L,SACZ,OAAe,IAAR0F,EAAY,EAAIA,CACzB,CACA,SAAS,GAAuB5kM,EAAG3H,GACjC,OAAO,GAAI8mM,GAAWp0L,MAAMo1L,GAASngM,GAAK,EAAGA,GAAI3H,EAAG,EACtD,CACA,SAAS,GAAK2H,GACZ,IAAI4kM,EAAM5kM,EAAEk/L,SACZ,OAAO0F,GAAO,GAAa,IAARA,EAAYrF,GAAav/L,GAAKu/L,GAAap/C,KAAKngJ,EACrE,CACA,SAAS,GAAoBA,EAAG3H,GAE9B,OADA2H,EAAI,GAAKA,GACF,GAAIu/L,GAAax0L,MAAMo1L,GAASngM,GAAIA,IAA+B,IAAzBmgM,GAASngM,GAAGk/L,UAAiB7mM,EAAG,EACnF,CACA,SAAS,GAA0B2H,GACjC,OAAOA,EAAEk/L,QACX,CACA,SAAS,GAAuBl/L,EAAG3H,GACjC,OAAO,GAAI+mM,GAAWr0L,MAAMo1L,GAASngM,GAAK,EAAGA,GAAI3H,EAAG,EACtD,CACA,SAAS,GAAW2H,EAAG3H,GACrB,OAAO,GAAI2H,EAAEsgM,cAAgB,IAAKjoM,EAAG,EACvC,CACA,SAAS,GAAc2H,EAAG3H,GAExB,OAAO,IADP2H,EAAI,GAAKA,IACIsgM,cAAgB,IAAKjoM,EAAG,EACvC,CACA,SAAS,GAAe2H,EAAG3H,GACzB,OAAO,GAAI2H,EAAEsgM,cAAgB,IAAOjoM,EAAG,EACzC,CACA,SAAS,GAAkB2H,EAAG3H,GAC5B,IAAIusM,EAAM5kM,EAAEk/L,SAEZ,OAAO,IADPl/L,EAAI4kM,GAAO,GAAa,IAARA,EAAYrF,GAAav/L,GAAKu/L,GAAap/C,KAAKngJ,IACnDsgM,cAAgB,IAAOjoM,EAAG,EACzC,CACA,SAAS,GAAW2H,GAClB,IAAIN,EAAIM,EAAE4+L,oBACV,OAAQl/L,EAAI,EAAI,KAAOA,IAAM,EAAG,MAAQ,GAAIA,EAAI,GAAK,EAAG,IAAK,GAAK,GAAIA,EAAI,GAAI,IAAK,EACrF,CACA,SAAS,GAAoBM,EAAG3H,GAC9B,OAAO,GAAI2H,EAAEm4L,aAAc9/L,EAAG,EAChC,CACA,SAAS,GAAgB2H,EAAG3H,GAC1B,OAAO,GAAI2H,EAAE23L,cAAet/L,EAAG,EACjC,CACA,SAAS,GAAgB2H,EAAG3H,GAC1B,OAAO,GAAI2H,EAAE23L,cAAgB,IAAM,GAAIt/L,EAAG,EAC5C,CACA,SAAS,GAAmB2H,EAAG3H,GAC7B,OAAO,GAAI,EAAIwmM,GAAO9zL,MAAMw1L,GAAQvgM,GAAIA,GAAI3H,EAAG,EACjD,CACA,SAAS,GAAsB2H,EAAG3H,GAChC,OAAO,GAAI2H,EAAEi4L,qBAAsB5/L,EAAG,EACxC,CACA,SAAS,GAAsB2H,EAAG3H,GAChC,OAAO,GAAsB2H,EAAG3H,GAAK,KACvC,CACA,SAAS,GAAqB2H,EAAG3H,GAC/B,OAAO,GAAI2H,EAAEi0L,cAAgB,EAAG57L,EAAG,EACrC,CACA,SAAS,GAAiB2H,EAAG3H,GAC3B,OAAO,GAAI2H,EAAE63L,gBAAiBx/L,EAAG,EACnC,CACA,SAAS,GAAiB2H,EAAG3H,GAC3B,OAAO,GAAI2H,EAAE+3L,gBAAiB1/L,EAAG,EACnC,CACA,SAAS,GAA6B2H,GACpC,IAAIotM,EAAMptM,EAAE2/L,YACZ,OAAe,IAARyN,EAAY,EAAIA,CACzB,CACA,SAAS,GAA0BptM,EAAG3H,GACpC,OAAO,GAAIunM,GAAU70L,MAAMw1L,GAAQvgM,GAAK,EAAGA,GAAI3H,EAAG,EACpD,CACA,SAAS,GAAQ2H,GACf,IAAI4kM,EAAM5kM,EAAE2/L,YACZ,OAAOiF,GAAO,GAAa,IAARA,EAAY5E,GAAYhgM,GAAKggM,GAAY7/C,KAAKngJ,EACnE,CACA,SAAS,GAAuBA,EAAG3H,GAEjC,OADA2H,EAAI,GAAQA,GACL,GAAIggM,GAAYj1L,MAAMw1L,GAAQvgM,GAAIA,IAAiC,IAA3BugM,GAAQvgM,GAAG2/L,aAAoBtnM,EAAG,EACnF,CACA,SAAS,GAA6B2H,GACpC,OAAOA,EAAE2/L,WACX,CACA,SAAS,GAA0B3/L,EAAG3H,GACpC,OAAO,GAAIwnM,GAAU90L,MAAMw1L,GAAQvgM,GAAK,EAAGA,GAAI3H,EAAG,EACpD,CACA,SAAS,GAAc2H,EAAG3H,GACxB,OAAO,GAAI2H,EAAEk4L,iBAAmB,IAAK7/L,EAAG,EAC1C,CACA,SAAS,GAAiB2H,EAAG3H,GAE3B,OAAO,IADP2H,EAAI,GAAQA,IACCk4L,iBAAmB,IAAK7/L,EAAG,EAC1C,CACA,SAAS,GAAkB2H,EAAG3H,GAC5B,OAAO,GAAI2H,EAAEk4L,iBAAmB,IAAO7/L,EAAG,EAC5C,CACA,SAAS,GAAqB2H,EAAG3H,GAC/B,IAAIusM,EAAM5kM,EAAE2/L,YAEZ,OAAO,IADP3/L,EAAI4kM,GAAO,GAAa,IAARA,EAAY5E,GAAYhgM,GAAKggM,GAAY7/C,KAAKngJ,IACjDk4L,iBAAmB,IAAO7/L,EAAG,EAC5C,CACA,SAAS,KACP,MAAO,OACT,CACA,SAAS,KACP,MAAO,GACT,CACA,SAAS,GAAoB2H,GAC3B,OAAQA,CACV,CACA,SAAS,GAA2BA,GAClC,OAAO9L,KAAKwX,OAAO1L,EAAI,IACzB,CEplBA,SAAS,GAAKhiB,GACZ,OAAO,IAAIf,KAAKe,EAClB,CACA,SAAS,GAAOA,GACd,OAAOA,aAAaf,MAAQe,GAAK,IAAIf,MAAMe,EAC7C,CACO,SAASqkH,GAASo5F,EAAOygC,EAAc//K,EAAMD,EAAOsnJ,EAAMoB,EAAK4J,EAAMD,EAAQjN,EAAQrzK,GAC1F,IAAIl7B,EAAQunO,KACV/7N,EAASxL,EAAMwL,OACfi2B,EAASzhC,EAAMyhC,OACbooM,EAAoB3uM,EAAO,OAC7B4uM,EAAe5uM,EAAO,OACtB6uM,EAAe7uM,EAAO,SACtB8uM,EAAa9uM,EAAO,SACpB+uM,EAAY/uM,EAAO,SACnBgvM,EAAahvM,EAAO,SACpBivM,EAAcjvM,EAAO,MACrBkvM,EAAalvM,EAAO,MACtB,SAASysM,EAAW14K,GAClB,OAAQs/I,EAAOt/I,GAAQA,EAAO46K,EAAoBruB,EAAOvsJ,GAAQA,EAAO66K,EAAeruB,EAAKxsJ,GAAQA,EAAO86K,EAAel4B,EAAI5iJ,GAAQA,EAAO+6K,EAAa7gL,EAAM8F,GAAQA,EAAOwhJ,EAAKxhJ,GAAQA,EAAOg7K,EAAYC,EAAa9gL,EAAK6F,GAAQA,EAAOk7K,EAAcC,GAAYn7K,EAC5Q,CAsBA,OArBAjvD,EAAMwL,OAAS,SAAUpZ,GACvB,OAAO,IAAIlI,KAAKshB,EAAOpZ,GACzB,EACA4N,EAAMyhC,OAAS,SAAU7T,GACvB,OAAO9lC,UAAUC,OAAS05C,EAAO9Z,MAAMnH,KAAKoN,EAAG,KAAW6T,IAASvpB,IAAI,GACzE,EACAlY,EAAM0oM,MAAQ,SAAUh/M,GACtB,IAAIujB,EAAIw0B,IACR,OAAOinK,EAAMz7L,EAAE,GAAIA,EAAEA,EAAEllB,OAAS,GAAgB,MAAZ2B,EAAmB,GAAKA,EAC9D,EACAsW,EAAM2nO,WAAa,SAAU3vN,EAAOixL,GAClC,OAAoB,MAAbA,EAAoB0+B,EAAazsM,EAAO+tK,EACjD,EACAjpM,EAAMyrN,KAAO,SAAU/hO,GACrB,IAAIujB,EAAIw0B,IAER,OADK/3C,GAAsC,mBAAnBA,EAASmlD,QAAsBnlD,EAAWy/O,EAAal8N,EAAE,GAAIA,EAAEA,EAAEllB,OAAS,GAAgB,MAAZ2B,EAAmB,GAAKA,IACvHA,EAAW+3C,EAAOgqL,GAAKx+M,EAAGvjB,IAAasW,CAChD,EACAA,EAAMkvB,KAAO,WACX,OAAOA,GAAKlvB,EAAOsvG,GAASo5F,EAAOygC,EAAc//K,EAAMD,EAAOsnJ,EAAMoB,EAAK4J,EAAMD,EAAQjN,EAAQrzK,GACjG,EACOl7B,CACT,CCxCA,SAAS,KACP,IAEE1U,EACAE,EACA6+O,EACArvO,EAGAgjN,EAREpqM,EAAK,EACPtK,EAAK,EAKLo+N,EAAe,GACf5qM,GAAQ,EAEV,SAAS98B,EAAM7N,GACb,OAAY,MAALA,GAAaiX,MAAMjX,GAAKA,GAAK6rN,EAAU0pB,EAAqB,IAAR2C,EAAY,IAAOl4O,GAAK6I,EAAU7I,GAAK7G,GAAM++O,EAAKvtM,EAAQ37B,KAAKE,IAAI,EAAGF,KAAKC,IAAI,EAAGjP,IAAMA,GACrJ,CAWA,SAAS08C,EAAMk4L,GACb,OAAO,SAAUn5M,GACf,IAAIs3B,EACAnwC,EAAIF,EACR,OAAO/sB,UAAUC,QAAyCgtB,GAA9BmwC,GAAQ,OAAet3B,EAAG,IAAe,GAAI/Y,EAAKqwC,EAAM,GAAKwiL,EAAeX,EAAYhyN,EAAIF,GAAK7U,GAAS,CAAC0nO,EAAa,GAAIA,EAAa,GACvK,CACF,CAMA,OAtBA1nO,EAAMyhC,OAAS,SAAU7T,GACvB,IAAImrB,EACJ,OAAOjxD,UAAUC,QAAWgxD,GAAO,OAAenrB,EAAG,GAAIha,EAAKmlC,EAAK,GAAIzvC,EAAKyvC,EAAK,GAAKztD,EAAK0P,EAAU4Y,GAAMA,GAAKpoB,EAAKwP,EAAUsO,GAAMA,GAAK+gO,EAAM/+O,IAAOE,EAAK,EAAI,GAAKA,EAAKF,GAAK0U,GAAS,CAAC4T,EAAItK,EAC/L,EACAtJ,EAAM88B,MAAQ,SAAUlP,GACtB,OAAO9lC,UAAUC,QAAU+0C,IAAUlP,EAAG5tB,GAAS88B,CACnD,EACA98B,EAAM0nO,aAAe,SAAU95M,GAC7B,OAAO9lC,UAAUC,QAAU2/O,EAAe95M,EAAG5tB,GAAS0nO,CACxD,EAQA1nO,EAAM6uC,MAAQA,EAAM,MACpB7uC,EAAMsnO,WAAaz4L,EAAM,IACzB7uC,EAAMg+M,QAAU,SAAUpwL,GACxB,OAAO9lC,UAAUC,QAAUi2N,EAAUpwL,EAAG5tB,GAASg+M,CACnD,EACO,SAAU/yN,GAEf,OADA+P,EAAY/P,EAAGK,EAAKL,EAAE2oB,GAAKpoB,EAAKP,EAAEqe,GAAK+gO,EAAM/+O,IAAOE,EAAK,EAAI,GAAKA,EAAKF,GAChE0U,CACT,CACF,CACO,SAAS,GAAKuY,EAAQ3oB,GAC3B,OAAOA,EAAO6xC,OAAOlpB,EAAOkpB,UAAUimM,aAAanvN,EAAOmvN,gBAAgB5qM,MAAMvkB,EAAOukB,SAASkhL,QAAQzlM,EAAOylM,UACjH,CACe,SAASssB,KACtB,IAAItqO,EAAQ4nO,GAAU,KAAc,KAIpC,OAHA5nO,EAAMkvB,KAAO,WACX,OAAO,GAAKlvB,EAAOsqO,KACrB,EACO7C,GAAiBl/O,MAAMyX,EAAOlY,UACvC,CAeO,SAASyiP,KACd,IAAIvqO,EAAQ6oO,GAAO,MAInB,OAHA7oO,EAAMkvB,KAAO,WACX,OAAO,GAAKlvB,EAAOuqO,MAAiBznO,SAAS9C,EAAM8C,WACrD,EACO2kO,GAAiBl/O,MAAMyX,EAAOlY,UACvC,CC7Ee,SAASq/O,GAAUJ,EAAar/M,QAC9B/J,IAAX+J,IAAsBA,EAASq/M,EAAaA,EAAc19O,GAAA,GAK9D,IAJA,IAAIjB,EAAI,EACN0tB,EAAI4R,EAAO3/B,OAAS,EACpBoR,EAAIuuB,EAAO,GACX+9K,EAAI,IAAI99K,MAAM7R,EAAI,EAAI,EAAIA,GACrB1tB,EAAI0tB,GAAG2vL,EAAEr9M,GAAK2+O,EAAY5tO,EAAGA,EAAIuuB,IAASt/B,IACjD,OAAO,SAAU6C,GACf,IAAI7C,EAAI+Y,KAAKE,IAAI,EAAGF,KAAKC,IAAI0U,EAAI,EAAG3U,KAAKwX,MAAM1tB,GAAK6qB,KACpD,OAAO2vL,EAAEr9M,GAAG6C,EAAI7C,EAClB,CACF,CCHA,SAAS,KACP,IAIEkD,EACAE,EACAD,EACA8+O,EACAG,EAEAxvO,EAEAgjN,EAZEpqM,EAAK,EACPtK,EAAK,GACLE,EAAK,EACLxE,EAAI,EAMJ0iO,EAAe,GAEf5qM,GAAQ,EAEV,SAAS98B,EAAM7N,GACb,OAAOiX,MAAMjX,GAAKA,GAAK6rN,GAAW7rN,EAAI,KAAQA,GAAK6I,EAAU7I,IAAM3G,IAAOwZ,EAAI7S,EAAI6S,EAAIxZ,EAAK6+O,EAAMG,GAAM9C,EAAa5qM,EAAQ37B,KAAKE,IAAI,EAAGF,KAAKC,IAAI,EAAGjP,IAAMA,GAC5J,CAWA,SAAS08C,EAAMk4L,GACb,OAAO,SAAUn5M,GACf,IAAIs3B,EACAnwC,EAAIF,EAAIC,EACZ,OAAOhtB,UAAUC,QAAyCgtB,GAA9BmwC,GAAQ,OAAet3B,EAAG,IAAe,GAAI/Y,EAAKqwC,EAAM,GAAIpwC,EAAKowC,EAAM,GAAKwiL,EAAeP,GAAUJ,EAAa,CAAChyN,EAAIF,EAAIC,IAAM9U,GAAS,CAAC0nO,EAAa,GAAIA,EAAa,IAAMA,EAAa,GAC1N,CACF,CAMA,OAtBA1nO,EAAMyhC,OAAS,SAAU7T,GACvB,IAAImrB,EACJ,OAAOjxD,UAAUC,QAAWgxD,GAAO,OAAenrB,EAAG,GAAIha,EAAKmlC,EAAK,GAAIzvC,EAAKyvC,EAAK,GAAIvvC,EAAKuvC,EAAK,GAAKztD,EAAK0P,EAAU4Y,GAAMA,GAAKpoB,EAAKwP,EAAUsO,GAAMA,GAAK/d,EAAKyP,EAAUwO,GAAMA,GAAK6gO,EAAM/+O,IAAOE,EAAK,EAAI,IAAOA,EAAKF,GAAKk/O,EAAMh/O,IAAOD,EAAK,EAAI,IAAOA,EAAKC,GAAKwZ,EAAIxZ,EAAKF,GAAM,EAAI,EAAG0U,GAAS,CAAC4T,EAAItK,EAAIE,EAC1S,EACAxJ,EAAM88B,MAAQ,SAAUlP,GACtB,OAAO9lC,UAAUC,QAAU+0C,IAAUlP,EAAG5tB,GAAS88B,CACnD,EACA98B,EAAM0nO,aAAe,SAAU95M,GAC7B,OAAO9lC,UAAUC,QAAU2/O,EAAe95M,EAAG5tB,GAAS0nO,CACxD,EAQA1nO,EAAM6uC,MAAQA,EAAM,MACpB7uC,EAAMsnO,WAAaz4L,EAAM,IACzB7uC,EAAMg+M,QAAU,SAAUpwL,GACxB,OAAO9lC,UAAUC,QAAUi2N,EAAUpwL,EAAG5tB,GAASg+M,CACnD,EACO,SAAU/yN,GAEf,OADA+P,EAAY/P,EAAGK,EAAKL,EAAE2oB,GAAKpoB,EAAKP,EAAEqe,GAAK/d,EAAKN,EAAEue,GAAK6gO,EAAM/+O,IAAOE,EAAK,EAAI,IAAOA,EAAKF,GAAKk/O,EAAMh/O,IAAOD,EAAK,EAAI,IAAOA,EAAKC,GAAKwZ,EAAIxZ,EAAKF,GAAM,EAAI,EAC7I0U,CACT,CACF,CAsBO,SAASyqO,KACd,IAAIzqO,EAAQ6oO,GAAO,MAInB,OAHA7oO,EAAMkvB,KAAO,WACX,OAAO,GAAKlvB,EAAOyqO,MAAgB3nO,SAAS9C,EAAM8C,WACpD,EACO2kO,GAAiBl/O,MAAMyX,EAAOlY,UACvC,CChFA,SAAS,GAA2BwkB,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,GAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,GAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,GAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CCDnK,SAASpkB,KActB,OAZEA,GADqB,oBAAZ71E,SAA2BA,QAAQj9H,IACrCi9H,QAAQj9H,IAAIoB,OAEZ,SAAcsF,EAAQsyM,EAAUwoC,GACrC,IAAIhhN,ECLK,SAAwBmC,EAAQq2K,GAC7C,MAAQxjM,OAAOtX,UAAUqX,eAAe3V,KAAK+iC,EAAQq2K,IAEpC,QADfr2K,GAAS,EAAA5D,GAAA,GAAe4D,MAG1B,OAAOA,CACT,CDDiB,CAAcj8B,EAAQsyM,GACjC,GAAKx4K,EAAL,CACA,IAAIiwB,EAAOj7C,OAAO8wB,yBAAyB9F,EAAMw4K,GACjD,OAAIvoJ,EAAKzwD,IACAywD,EAAKzwD,IAAIJ,KAAKhB,UAAUC,OAAS,EAAI6H,EAAS86O,GAEhD/wL,EAAKtwD,KALK,CAMnB,EAEK2yM,GAAKzzM,MAAMrB,KAAMY,UAC1B,ENAe,SAAuBm1C,GACpC,GDWa,SAAsB8rB,GACnC,IAAI2qJ,EAAkB3qJ,EAAO4qJ,SAC3BC,EAAc7qJ,EAAOkG,KACrB4kJ,EAAc9qJ,EAAO/9D,KACrB8oN,EAAiB/qJ,EAAOgrJ,QACxBC,EAAkBjrJ,EAAOkrJ,KACzBC,EAAuBnrJ,EAAOorJ,UAC9BC,EAAgBrrJ,EAAOsrJ,OACvBC,EAAqBvrJ,EAAOwrJ,YAC1BC,EAAW,GAASV,GACtBY,EAAe,GAAaZ,GAC5Bc,EAAY,GAASZ,GACrBa,EAAgB,GAAab,GAC7Bc,EAAiB,GAASZ,GAC1Ba,EAAqB,GAAab,GAClCc,EAAU,GAASZ,GACnBa,EAAc,GAAab,GAC3Bc,EAAe,GAASZ,GACxBa,EAAmB,GAAab,GAC9Bc,EAAU,CACZ,EA+OF,SAA4BnoM,GAC1B,OAAOinM,EAAqBjnM,EAAEk/L,SAChC,EAhPE,EAiPF,SAAuBl/L,GACrB,OAAO+mM,EAAgB/mM,EAAEk/L,SAC3B,EAlPE,EAmPF,SAA0Bl/L,GACxB,OAAOqnM,EAAmBrnM,EAAE+7G,WAC9B,EApPE,EAqPF,SAAqB/7G,GACnB,OAAOmnM,EAAcnnM,EAAE+7G,WACzB,EAtPE,EAAK,KACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EA2OF,SAAsB/7G,GACpB,OAAO6mM,IAAiB7mM,EAAEghM,YAAc,IAC1C,EA5OE,EA6OF,SAAuBhhM,GACrB,OAAO,KAAOA,EAAE+7G,WAAa,EAC/B,EA9OE,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,KACL,EAAK,KACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,IAAK,IAEH0tF,EAAa,CACf,EA+NF,SAA+BzpM,GAC7B,OAAOinM,EAAqBjnM,EAAE2/L,YAChC,EAhOE,EAiOF,SAA0B3/L,GACxB,OAAO+mM,EAAgB/mM,EAAE2/L,YAC3B,EAlOE,EAmOF,SAA6B3/L,GAC3B,OAAOqnM,EAAmBrnM,EAAEi0L,cAC9B,EApOE,EAqOF,SAAwBj0L,GACtB,OAAOmnM,EAAcnnM,EAAEi0L,cACzB,EAtOE,EAAK,KACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EA2NF,SAAyBj0L,GACvB,OAAO6mM,IAAiB7mM,EAAE23L,eAAiB,IAC7C,EA5NE,EA6NF,SAA0B33L,GACxB,OAAO,KAAOA,EAAEi0L,cAAgB,EAClC,EA9NE,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,KACL,EAAK,KACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,IAAK,IAEH4W,EAAS,CACX,EAkJF,SAA2B7qM,EAAGwgC,EAAQrlD,GACpC,IAAI0tB,EAAIg/L,EAAe35K,KAAKsS,EAAOv/B,MAAM9lB,IACzC,OAAO0tB,GAAK7I,EAAE2H,EAAImgM,EAAmB7rN,IAAI4sB,EAAE,GAAGhQ,eAAgB1d,EAAI0tB,EAAE,GAAG/tB,SAAW,CACpF,EApJE,EAqJF,SAAsBklB,EAAGwgC,EAAQrlD,GAC/B,IAAI0tB,EAAI8+L,EAAUz5K,KAAKsS,EAAOv/B,MAAM9lB,IACpC,OAAO0tB,GAAK7I,EAAE2H,EAAIigM,EAAc3rN,IAAI4sB,EAAE,GAAGhQ,eAAgB1d,EAAI0tB,EAAE,GAAG/tB,SAAW,CAC/E,EAvJE,EAwJF,SAAyBklB,EAAGwgC,EAAQrlD,GAClC,IAAI0tB,EAAIo/L,EAAa/5K,KAAKsS,EAAOv/B,MAAM9lB,IACvC,OAAO0tB,GAAK7I,EAAEhQ,EAAIk4M,EAAiBjsN,IAAI4sB,EAAE,GAAGhQ,eAAgB1d,EAAI0tB,EAAE,GAAG/tB,SAAW,CAClF,EA1JE,EA2JF,SAAoBklB,EAAGwgC,EAAQrlD,GAC7B,IAAI0tB,EAAIk/L,EAAQ75K,KAAKsS,EAAOv/B,MAAM9lB,IAClC,OAAO0tB,GAAK7I,EAAEhQ,EAAIg4M,EAAY/rN,IAAI4sB,EAAE,GAAGhQ,eAAgB1d,EAAI0tB,EAAE,GAAG/tB,SAAW,CAC7E,EA7JE,EA8JF,SAA6BklB,EAAGwgC,EAAQrlD,GACtC,OAAO2vN,EAAe9qM,EAAGymM,EAAiBjmK,EAAQrlD,EACpD,EA/JE,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EA8HF,SAAqB6kB,EAAGwgC,EAAQrlD,GAC9B,IAAI0tB,EAAI0+L,EAASr5K,KAAKsS,EAAOv/B,MAAM9lB,IACnC,OAAO0tB,GAAK7I,EAAE3H,EAAIovM,EAAaxrN,IAAI4sB,EAAE,GAAGhQ,eAAgB1d,EAAI0tB,EAAE,GAAG/tB,SAAW,CAC9E,EAhIE,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EA2IF,SAAyBklB,EAAGwgC,EAAQrlD,GAClC,OAAO2vN,EAAe9qM,EAAG2mM,EAAanmK,EAAQrlD,EAChD,EA5IE,EA6IF,SAAyB6kB,EAAGwgC,EAAQrlD,GAClC,OAAO2vN,EAAe9qM,EAAG4mM,EAAapmK,EAAQrlD,EAChD,EA9IE,EAAK,GACL,EAAK,GACL,EAAK,GACL,IAAK,IAUP,SAASmiN,EAAUtB,EAAWmM,GAC5B,OAAO,SAAUnmJ,GACf,IAIE5iD,EACAm3L,EACAtoK,EANEuS,EAAS,GACXrlD,GAAK,EACLgG,EAAI,EACJ0nB,EAAImzL,EAAUlhN,OAKhB,IADMknE,aAAgB/kE,OAAO+kE,EAAO,IAAI/kE,MAAM+kE,MACrC7mE,EAAI0tB,GACqB,KAA5BmzL,EAAUtO,WAAWvyM,KACvBqlD,EAAOhmD,KAAKwhN,EAAU/6L,MAAM9f,EAAGhG,IACgB,OAA1Co7M,EAAM,GAAKn3L,EAAI48L,EAAU5mL,SAASj6B,KAAcikB,EAAI48L,EAAU5mL,SAASj6B,GAAQo7M,EAAY,MAANn3L,EAAY,IAAM,KACxG6uB,EAASk6K,EAAQ/oM,MAAIA,EAAI6uB,EAAO+zB,EAAMu0I,IAC1C/1J,EAAOhmD,KAAK4kB,GACZje,EAAIhG,EAAI,GAIZ,OADAqlD,EAAOhmD,KAAKwhN,EAAU/6L,MAAM9f,EAAGhG,IACxBqlD,EAAOl9B,KAAK,GACrB,CACF,CACA,SAAS8oM,EAASpQ,EAAWqQ,GAC3B,OAAO,SAAU7rK,GACf,IAEEgjK,EACAoB,EAHE5kM,EAAI,GAAQ,UAAM0Q,EAAW,GAIjC,GAHMo6L,EAAe9qM,EAAGg8L,EAAWx7J,GAAU,GAAI,IAGxCA,EAAO1lD,OAAQ,OAAO,KAG/B,GAAI,MAAOklB,EAAG,OAAO,IAAI/iB,KAAK+iB,EAAE0E,GAChC,GAAI,MAAO1E,EAAG,OAAO,IAAI/iB,KAAW,IAAN+iB,EAAEjI,GAAY,MAAOiI,EAAIA,EAAE+jM,EAAI,IAY7D,GATIsI,KAAO,MAAOrsM,KAAIA,EAAEqsM,EAAI,GAGxB,MAAOrsM,IAAGA,EAAE4jM,EAAI5jM,EAAE4jM,EAAI,GAAW,GAAN5jM,EAAE3H,QAGrBqY,IAAR1Q,EAAEhQ,IAAiBgQ,EAAEhQ,EAAI,MAAOgQ,EAAIA,EAAER,EAAI,GAG1C,MAAOQ,EAAG,CACZ,GAAIA,EAAEssM,EAAI,GAAKtsM,EAAEssM,EAAI,GAAI,OAAO,KAC1B,MAAOtsM,IAAIA,EAAE2H,EAAI,GACnB,MAAO3H,GAC2B4kM,GAApCpB,EAAO,GAAQ,GAAQxjM,EAAE7a,EAAG,EAAG,KAAgBw6M,YAC/C6D,EAAOoB,EAAM,GAAa,IAARA,EAAY/E,GAAU1/C,KAAKqjD,GAAQ3D,GAAU2D,GAC/DA,EAAO3E,GAAOzhI,OAAOomI,EAAkB,GAAXxjM,EAAEssM,EAAI,IAClCtsM,EAAE7a,EAAIq+M,EAAKtL,iBACXl4L,EAAEhQ,EAAIwzM,EAAKvP,cACXj0L,EAAEA,EAAIwjM,EAAKrL,cAAgBn4L,EAAE2H,EAAI,GAAK,IAEAi9L,GAAtCpB,EAAO,GAAU,GAAQxjM,EAAE7a,EAAG,EAAG,KAAgB+5M,SACjDsE,EAAOoB,EAAM,GAAa,IAARA,EAAYxF,GAAWj/C,KAAKqjD,GAAQpE,GAAWoE,GACjEA,EAAOhF,GAAQphI,OAAOomI,EAAkB,GAAXxjM,EAAEssM,EAAI,IACnCtsM,EAAE7a,EAAIq+M,EAAKlD,cACXtgM,EAAEhQ,EAAIwzM,EAAKznF,WACX/7G,EAAEA,EAAIwjM,EAAK7E,WAAa3+L,EAAE2H,EAAI,GAAK,EAEvC,MAAW,MAAO3H,GAAK,MAAOA,KACtB,MAAOA,IAAIA,EAAE2H,EAAI,MAAO3H,EAAIA,EAAEP,EAAI,EAAI,MAAOO,EAAI,EAAI,GAC3D4kM,EAAM,MAAO5kM,EAAI,GAAQ,GAAQA,EAAE7a,EAAG,EAAG,IAAIw6M,YAAc,GAAU,GAAQ3/L,EAAE7a,EAAG,EAAG,IAAI+5M,SACzFl/L,EAAEhQ,EAAI,EACNgQ,EAAEA,EAAI,MAAOA,GAAKA,EAAE2H,EAAI,GAAK,EAAU,EAAN3H,EAAEi2B,GAAS2uK,EAAM,GAAK,EAAI5kM,EAAE2H,EAAU,EAAN3H,EAAEusM,GAAS3H,EAAM,GAAK,GAKzF,MAAI,MAAO5kM,GACTA,EAAE4jM,GAAK5jM,EAAEqsM,EAAI,IAAM,EACnBrsM,EAAE6jM,GAAK7jM,EAAEqsM,EAAI,IACN,GAAQrsM,IAIV,GAAUA,EACnB,CACF,CACA,SAAS8qM,EAAe9qM,EAAGg8L,EAAWx7J,EAAQr/C,GAM5C,IALA,IAGEie,EACAshC,EAJEvlD,EAAI,EACN0tB,EAAImzL,EAAUlhN,OACdkV,EAAIwwC,EAAO1lD,OAGNK,EAAI0tB,GAAG,CACZ,GAAI1nB,GAAK6O,EAAG,OAAQ,EAEpB,GAAU,MADVoP,EAAI48L,EAAUtO,WAAWvyM,OAIvB,GAFAikB,EAAI48L,EAAU5mL,OAAOj6B,OACrBulD,EAAQmqK,EAAOzrM,KAAK,GAAO48L,EAAU5mL,OAAOj6B,KAAOikB,MACpCje,EAAIu/C,EAAM1gC,EAAGwgC,EAAQr/C,IAAM,EAAG,OAAQ,OAChD,GAAIie,GAAKohC,EAAOktJ,WAAWvsM,KAChC,OAAQ,CAEZ,CACA,OAAOA,CACT,CAkEA,OA5KAgnN,EAAQjjN,EAAIo4M,EAAUqJ,EAAawB,GACnCA,EAAQtkM,EAAIy5L,EAAUsJ,EAAauB,GACnCA,EAAQ/oM,EAAIk+L,EAAUmJ,EAAiB0B,GACvCsB,EAAWvkN,EAAIo4M,EAAUqJ,EAAa8C,GACtCA,EAAW5lM,EAAIy5L,EAAUsJ,EAAa6C,GACtCA,EAAWrqM,EAAIk+L,EAAUmJ,EAAiBgD,GAuKnC,CACLx7K,OAAQ,SAAgB+tK,GACtB,IAAI1+M,EAAIggN,EAAUtB,GAAa,GAAImM,GAInC,OAHA7qN,EAAEuf,SAAW,WACX,OAAOm/L,CACT,EACO1+M,CACT,EACAojD,MAAO,SAAes7J,GACpB,IAAI3jM,EAAI+zM,EAASpQ,GAAa,IAAI,GAIlC,OAHA3jM,EAAEwE,SAAW,WACX,OAAOm/L,CACT,EACO3jM,CACT,EACAm0M,UAAW,SAAmBxQ,GAC5B,IAAI1+M,EAAIggN,EAAUtB,GAAa,GAAIyN,GAInC,OAHAnsN,EAAEuf,SAAW,WACX,OAAOm/L,CACT,EACO1+M,CACT,EACAmvN,SAAU,SAAkBzQ,GAC1B,IAAI3jM,EAAI+zM,EAASpQ,GAAa,IAAI,GAIlC,OAHA3jM,EAAEwE,SAAW,WACX,OAAOm/L,CACT,EACO3jM,CACT,EAEJ,CChVW,CAAa23B,GACtB,GAAa,GAAO/B,OACR,GAAOyS,MACnB,GAAY,GAAO8rK,UACR,GAAOC,QAEpB,CAjBA,CAAc,CACZ/F,SAAU,SACV1kJ,KAAM,aACNjkE,KAAM,eACN+oN,QAAS,CAAC,KAAM,MAChBE,KAAM,CAAC,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,YACzEE,UAAW,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACtDE,OAAQ,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,YACvHE,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,yBQZ9E,SAAS,GAAWtuF,EAAQr+H,EAAMs+H,GAa/C,OATE,GCNW,WACb,GAAuB,oBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EACjE,GAAID,QAAQC,UAAUC,KAAM,OAAO,EACnC,GAAqB,mBAAVC,MAAsB,OAAO,EACxC,IAEE,OADAxqD,QAAQ10E,UAAU03C,QAAQh2C,KAAKq9H,QAAQC,UAAUtqD,QAAS,IAAI,WAAa,MACpE,CACT,CAAE,MAAO1wE,KACP,OAAO,CACT,CACF,CDPM,GACW+6H,QAAQC,UAAU97H,OAElB,SAAoB27H,EAAQr+H,EAAMs+H,GAC7C,IAAI7gH,EAAI,CAAC,MACTA,EAAE5d,KAAKc,MAAM8c,EAAGzd,GAChB,IACIsyH,EAAW,IADG/pC,SAAS7lF,KAAK/B,MAAM09H,EAAQ5gH,IAG9C,OADI6gH,IAAO,EAAApzE,GAAA,GAAeonE,EAAUgM,EAAM9+H,WACnC8yH,CACT,EAEK,GAAW3xH,MAAM,KAAMT,UAChC,CEZe,SAAS,GAAiBo+H,GACvC,IAAIO,EAAwB,mBAARxgH,IAAqB,IAAIA,SAAQ0X,EAuBrD,OAtBA,GAAmB,SAA0BuoG,GAC3C,GAAc,OAAVA,ICPkC3rH,EDOE2rH,GCNsB,IAAzD/1C,SAASrmE,SAAShhB,KAAKyR,GAAIH,QAAQ,kBDMQ,OAAO8rH,ECP5C,IAA2B3rH,EDQtC,GAAqB,mBAAV2rH,EACT,MAAM,IAAIj6H,UAAU,sDAEtB,QAAsB,IAAXw6H,EAAwB,CACjC,GAAIA,EAAOz9F,IAAIk9F,GAAQ,OAAOO,EAAOv9H,IAAIg9H,GACzCO,EAAOr9H,IAAI88H,EAAOQ,EACpB,CACA,SAASA,IACP,OAAO,GAAUR,EAAOp+H,WAAW,EAAAmgC,GAAA,GAAe/gC,MAAM8E,YAC1D,CASA,OARA06H,EAAQt/H,UAAYsX,OAAO0wB,OAAO82F,EAAM9+H,UAAW,CACjD4E,YAAa,CACX3C,MAAOq9H,EACP72F,YAAY,EACZuqB,UAAU,EACVD,cAAc,MAGX,EAAArH,GAAA,GAAe4zE,EAASR,EACjC,EACO,GAAiBA,EAC1B,CEpBA,SAAS,GAA2B55G,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,GAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,GAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,GAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAClL,SAASuqB,GAAaC,GAAW,IAAIC,EACrC,WAAuC,GAAuB,oBAAZ1kH,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFxqD,QAAQ10E,UAAU03C,QAAQh2C,KAAKq9H,QAAQC,UAAUtqD,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO1wE,KAAK,OAAO,CAAO,CAAE,CADvQ,GAA6B,OAAO,WAAkC,IAAsC0O,EAAlCgxO,GAAQ,QAAgBF,GAAkB,GAAIC,EAA2B,CAAE,IAAIE,GAAY,QAAgB7jP,MAAM8E,YAAa8N,EAASqsH,QAAQC,UAAU0kH,EAAOhjP,UAAWijP,EAAY,MAASjxO,EAASgxO,EAAMviP,MAAMrB,KAAMY,WAAc,OAAO,QAA2BZ,KAAM4S,EAAS,CAAG,CAEja,IAAIkxO,GAAyB,SAAUC,IAC5C,QAAUD,EAAWC,GACrB,IAAIriP,EAAS+hP,GAAaK,GAC1B,SAASA,EAAUhoL,GACjB,IAAIr7D,EACAogC,EAAMjgC,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAKojP,GAW9E,IAVA,QAAgBhkP,KAAM8jP,GACtBrjP,EAAQiB,EAAOE,KAAK5B,MACpBwX,OAAO+jD,kBAAiB,QAAuB96D,GAAQ,CACrDwjP,QAAS,CACP9hP,MAAO,IAAI4c,KAEbyqC,KAAM,CACJrnD,MAAO0+B,KAGI,MAAXi7B,EAAiB,CACnB,IACEyiK,EADEC,EAAY,GAA2B1iK,GAE3C,IACE,IAAK0iK,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAI4rM,GAAc,OAAe3lB,EAAMp8N,MAAO,GAC5C+jG,EAAQg+I,EAAY,GACpB/hP,EAAQ+hP,EAAY,GACtBzjP,EAAMyB,IAAIgkG,EAAO/jG,EACnB,CACF,CAAE,MAAOqlC,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACF,CACA,OAAO5C,CACT,CAsBA,OArBA,QAAaqjP,EAAW,CAAC,CACvBjjN,IAAK,MACL1+B,MAAO,SAAa0+B,GAClB,OAAOi0K,IAAK,QAAgBgvC,EAAU5jP,WAAY,MAAOF,MAAM4B,KAAK5B,KAAMmkP,GAAWnkP,KAAM6gC,GAC7F,GACC,CACDA,IAAK,MACL1+B,MAAO,SAAa0+B,GAClB,OAAOi0K,IAAK,QAAgBgvC,EAAU5jP,WAAY,MAAOF,MAAM4B,KAAK5B,KAAMmkP,GAAWnkP,KAAM6gC,GAC7F,GACC,CACDA,IAAK,MACL1+B,MAAO,SAAa0+B,EAAK1+B,GACvB,OAAO2yM,IAAK,QAAgBgvC,EAAU5jP,WAAY,MAAOF,MAAM4B,KAAK5B,KAAMokP,GAAWpkP,KAAM6gC,GAAM1+B,EACnG,GACC,CACD0+B,IAAK,SACL1+B,MAAO,SAAiB0+B,GACtB,OAAOi0K,IAAK,QAAgBgvC,EAAU5jP,WAAY,SAAUF,MAAM4B,KAAK5B,KAAMqkP,GAAcrkP,KAAM6gC,GACnG,KAEKijN,CACT,CAxDoC,CAwDpB,GAAiB/kO,MACtBulO,GAAyB,SAAUC,IAC5C,QAAUD,EAAWC,GACrB,IAAIC,EAAUf,GAAaa,GAC3B,SAASA,EAAU9jN,GACjB,IAAIs+B,EACAj+B,EAAMjgC,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAKojP,GAW9E,IAVA,QAAgBhkP,KAAMskP,GACtBxlL,EAAS0lL,EAAQ5iP,KAAK5B,MACtBwX,OAAO+jD,kBAAiB,QAAuBuD,GAAS,CACtDmlL,QAAS,CACP9hP,MAAO,IAAI4c,KAEbyqC,KAAM,CACJrnD,MAAO0+B,KAGG,MAAVL,EAAgB,CAClB,IACEyiM,EADEC,EAAa,GAA2B1iM,GAE5C,IACE,IAAK0iM,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,CACrD,IAAIn2C,EAAQ8gO,EAAO9gO,MACnB28D,EAAOttD,IAAIrP,EACb,CACF,CAAE,MAAOqlC,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACF,CACA,OAAOy7D,CACT,CAiBA,OAhBA,QAAawlL,EAAW,CAAC,CACvBzjN,IAAK,MACL1+B,MAAO,SAAaA,GAClB,OAAO2yM,IAAK,QAAgBwvC,EAAUpkP,WAAY,MAAOF,MAAM4B,KAAK5B,KAAMmkP,GAAWnkP,KAAMmC,GAC7F,GACC,CACD0+B,IAAK,MACL1+B,MAAO,SAAaA,GAClB,OAAO2yM,IAAK,QAAgBwvC,EAAUpkP,WAAY,MAAOF,MAAM4B,KAAK5B,KAAMokP,GAAWpkP,KAAMmC,GAC7F,GACC,CACD0+B,IAAK,SACL1+B,MAAO,SAAiBA,GACtB,OAAO2yM,IAAK,QAAgBwvC,EAAUpkP,WAAY,SAAUF,MAAM4B,KAAK5B,KAAMqkP,GAAcrkP,KAAMmC,GACnG,KAEKmiP,CACT,CAjDoC,CAiDpB,GAAiB39M,MACjC,SAASw9M,GAAWtyL,EAAM1vD,GACxB,IAAI8hP,EAAUpyL,EAAKoyL,QAEfpjN,GAAM2oB,EADDqI,EAAKrI,MACCrnD,GACf,OAAO8hP,EAAQniN,IAAIjB,GAAOojN,EAAQjiP,IAAI6+B,GAAO1+B,CAC/C,CACA,SAASiiP,GAAWpmL,EAAO77D,GACzB,IAAI8hP,EAAUjmL,EAAMimL,QAEhBpjN,GAAM2oB,EADDwU,EAAMxU,MACArnD,GACf,OAAI8hP,EAAQniN,IAAIjB,GAAaojN,EAAQjiP,IAAI6+B,IACzCojN,EAAQ/hP,IAAI2+B,EAAK1+B,GACVA,EACT,CACA,SAASkiP,GAAcxlL,EAAO18D,GAC5B,IAAI8hP,EAAUplL,EAAMolL,QAEhBpjN,GAAM2oB,EADDqV,EAAMrV,MACArnD,GAKf,OAJI8hP,EAAQniN,IAAIjB,KACd1+B,EAAQ8hP,EAAQjiP,IAAI6+B,GACpBojN,EAAQ59M,OAAOxF,IAEV1+B,CACT,CACA,SAAS6hP,GAAM7hP,GACb,OAAiB,OAAVA,GAAmC,iBAAVA,EAAqBA,EAAMy1C,UAAYz1C,CACzE,CCnJA,SAAS,GAA2BijB,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,GAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,GAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,GAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAG3K,IAAIurB,GAAWrsM,OAAO,YACd,SAASssM,KACtB,IAAI18O,EAAQ,IAAI87O,GACdvpM,EAAS,GACToN,EAAQ,GACRmvK,EAAU2tB,GACZ,SAAS3rO,EAAMiN,GACb,IAAI7kB,EAAI8G,EAAMhG,IAAI+jB,GAClB,QAAU0Q,IAANv1B,EAAiB,CACnB,GAAI41N,IAAY2tB,GAAU,OAAO3tB,EACjC9uN,EAAM9F,IAAI6jB,EAAG7kB,EAAIq5C,EAAOh6C,KAAKwlB,GAAK,EACpC,CACA,OAAO4hC,EAAMzmD,EAAIymD,EAAM9mD,OACzB,CA6BA,OA5BAiY,EAAMyhC,OAAS,SAAU7T,GACvB,IAAK9lC,UAAUC,OAAQ,OAAO05C,EAAOvzB,QACrCuzB,EAAS,GAAIvyC,EAAQ,IAAI87O,GACzB,IACEvlB,EADEC,EAAY,GAA2B93L,GAE3C,IACE,IAAK83L,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIn2C,EAAQo8N,EAAMp8N,MACd6F,EAAM85B,IAAI3/B,IACd6F,EAAM9F,IAAIC,EAAOo4C,EAAOh6C,KAAK4B,GAAS,EACxC,CACF,CAAE,MAAOqlC,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACA,OAAOyV,CACT,EACAA,EAAM6uC,MAAQ,SAAUjhB,GACtB,OAAO9lC,UAAUC,QAAU8mD,EAAQlnB,MAAMnH,KAAKoN,GAAI5tB,GAAS6uC,EAAM3gC,OACnE,EACAlO,EAAMg+M,QAAU,SAAUpwL,GACxB,OAAO9lC,UAAUC,QAAUi2N,EAAUpwL,EAAG5tB,GAASg+M,CACnD,EACAh+M,EAAMkvB,KAAO,WACX,OAAO08M,GAAQnqM,EAAQoN,GAAOmvK,QAAQA,EACxC,EACAwpB,GAAUj/O,MAAMyX,EAAOlY,WAChBkY,CACT,qDChDe,SAAS,GAAC6uC,GACvB,IAAI/4B,EAAI+4B,EAAM9mD,OACd,OAAO,SAAUkD,GACf,OAAO4jD,EAAM1tC,KAAKE,IAAI,EAAGF,KAAKC,IAAI0U,EAAI,EAAG3U,KAAKwX,MAAM1tB,EAAI6qB,KAC1D,CACF,gBCJe,SAAS,GAACzQ,EAAG8E,GAC1B,IAAI/hB,GAAI,UAAKid,GAAI8E,GACjB,OAAO,SAAUlf,GACf,IAAIkH,EAAI/J,EAAE6C,GACV,OAAOkH,EAAI,IAAMgP,KAAKwX,MAAMxmB,EAAI,IAClC,CACF,KCNI05O,sCCDA,GAAU,IAAM1qO,KAAK+B,GACd,GAAW,CACpBzD,WAAY,EACZC,WAAY,EACZS,OAAQ,EACR2rO,MAAO,EACPjyJ,OAAQ,EACRC,OAAQ,GAEK,SAAS,GAACz0E,EAAG8E,EAAGkC,EAAGY,EAAG7hB,EAAGb,GACtC,IAAIsvF,EAAQC,EAAQgyJ,EAKpB,OAJIjyJ,EAAS14E,KAAK2C,KAAKuB,EAAIA,EAAI8E,EAAIA,MAAI9E,GAAKw0E,EAAQ1vE,GAAK0vE,IACrDiyJ,EAAQzmO,EAAIgH,EAAIlC,EAAI8C,KAAGZ,GAAKhH,EAAIymO,EAAO7+N,GAAK9C,EAAI2hO,IAChDhyJ,EAAS34E,KAAK2C,KAAKuI,EAAIA,EAAIY,EAAIA,MAAIZ,GAAKytE,EAAQ7sE,GAAK6sE,EAAQgyJ,GAAShyJ,GACtEz0E,EAAI4H,EAAI9C,EAAIkC,IAAGhH,GAAKA,EAAG8E,GAAKA,EAAG2hO,GAASA,EAAOjyJ,GAAUA,GACtD,CACLp6E,WAAYrU,EACZsU,WAAYnV,EACZ4V,OAAQgB,KAAKqG,MAAM2C,EAAG9E,GAAK,GAC3BymO,MAAO3qO,KAAKye,KAAKksN,GAAS,GAC1BjyJ,OAAQA,EACRC,OAAQA,EAEZ,CCrBA,SAASiyJ,GAAqBp+L,EAAOq+L,EAASC,EAASC,GACrD,SAAS/9N,EAAInJ,GACX,OAAOA,EAAEjd,OAASid,EAAEmJ,MAAQ,IAAM,EACpC,CAkDA,OAAO,SAAU9I,EAAG8E,GAClB,IAAInF,EAAI,GAENyH,EAAI,GAON,OANApH,EAAIsoC,EAAMtoC,GAAI8E,EAAIwjC,EAAMxjC,GArD1B,SAAmBgiO,EAAIC,EAAIC,EAAIC,EAAItnO,EAAGyH,GACpC,GAAI0/N,IAAOE,GAAMD,IAAOE,EAAI,CAC1B,IAAIlkP,EAAI4c,EAAEvd,KAAK,aAAc,KAAMukP,EAAS,KAAMC,GAClDx/N,EAAEhlB,KAAK,CACLW,EAAGA,EAAI,EACP+J,GAAG,QAAOg6O,EAAIE,IACb,CACDjkP,EAAGA,EAAI,EACP+J,GAAG,QAAOi6O,EAAIE,IAElB,MAAWD,GAAMC,IACftnO,EAAEvd,KAAK,aAAe4kP,EAAKL,EAAUM,EAAKL,EAE9C,CAyCEzsO,CAAU6F,EAAE5F,WAAY4F,EAAE3F,WAAYyK,EAAE1K,WAAY0K,EAAEzK,WAAYsF,EAAGyH,GAxCvE,SAAgBpH,EAAG8E,EAAGnF,EAAGyH,GACnBpH,IAAM8E,GACJ9E,EAAI8E,EAAI,IAAKA,GAAK,IAAaA,EAAI9E,EAAI,MAAKA,GAAK,KACrDoH,EAAEhlB,KAAK,CACLW,EAAG4c,EAAEvd,KAAK0mB,EAAInJ,GAAK,UAAW,KAAMknO,GAAY,EAChD/5O,GAAG,QAAOkT,EAAG8E,MAENA,GACTnF,EAAEvd,KAAK0mB,EAAInJ,GAAK,UAAYmF,EAAI+hO,EAEpC,CA+BE/rO,CAAOkF,EAAElF,OAAQgK,EAAEhK,OAAQ6E,EAAGyH,GA9BhC,SAAepH,EAAG8E,EAAGnF,EAAGyH,GAClBpH,IAAM8E,EACRsC,EAAEhlB,KAAK,CACLW,EAAG4c,EAAEvd,KAAK0mB,EAAInJ,GAAK,SAAU,KAAMknO,GAAY,EAC/C/5O,GAAG,QAAOkT,EAAG8E,KAENA,GACTnF,EAAEvd,KAAK0mB,EAAInJ,GAAK,SAAWmF,EAAI+hO,EAEnC,CAsBEJ,CAAMzmO,EAAEymO,MAAO3hO,EAAE2hO,MAAO9mO,EAAGyH,GArB7B,SAAe0/N,EAAIC,EAAIC,EAAIC,EAAItnO,EAAGyH,GAChC,GAAI0/N,IAAOE,GAAMD,IAAOE,EAAI,CAC1B,IAAIlkP,EAAI4c,EAAEvd,KAAK0mB,EAAInJ,GAAK,SAAU,KAAM,IAAK,KAAM,KACnDyH,EAAEhlB,KAAK,CACLW,EAAGA,EAAI,EACP+J,GAAG,QAAOg6O,EAAIE,IACb,CACDjkP,EAAGA,EAAI,EACP+J,GAAG,QAAOi6O,EAAIE,IAElB,MAAkB,IAAPD,GAAmB,IAAPC,GACrBtnO,EAAEvd,KAAK0mB,EAAInJ,GAAK,SAAWqnO,EAAK,IAAMC,EAAK,IAE/C,CASEtsO,CAAMqF,EAAEw0E,OAAQx0E,EAAEy0E,OAAQ3vE,EAAE0vE,OAAQ1vE,EAAE2vE,OAAQ90E,EAAGyH,GACjDpH,EAAI8E,EAAI,KACD,SAAUlf,GAIf,IAHA,IAEEqhB,EAFElkB,GAAK,EACP0tB,EAAIrJ,EAAE1kB,SAECK,EAAI0tB,GAAG9Q,GAAGsH,EAAIG,EAAErkB,IAAIA,GAAKkkB,EAAEna,EAAElH,GACtC,OAAO+Z,EAAEuL,KAAK,GAChB,CACF,CACF,CACO,IAAIg8N,GAA0BR,IFtE9B,SAAkB1iP,GACvB,IAAI4T,EAAI,IAA0B,mBAAduvO,UAA2BA,UAAYC,iBAAiBpjP,EAAQ,IACpF,OAAO4T,EAAEyvO,WAAa,GAAWC,GAAU1vO,EAAEoI,EAAGpI,EAAEkN,EAAGlN,EAAEoP,EAAGpP,EAAEgQ,EAAGhQ,EAAE7R,EAAG6R,EAAE1S,EACxE,GEmEoE,OAAQ,MAAO,QACxEqiP,GAA0Bb,IFnE9B,SAAkB1iP,GACvB,OAAa,MAATA,EAAsB,IACrBwiP,KAASA,GAAUh6O,SAASg7O,gBAAgB,6BAA8B,MAC/EhB,GAAQr6L,aAAa,YAAanoD,IAC5BA,EAAQwiP,GAAQ7wO,UAAU8xO,QAAQC,eAEjCJ,IADPtjP,EAAQA,EAAMgP,QACSgN,EAAGhc,EAAM8gB,EAAG9gB,EAAMgjB,EAAGhjB,EAAM4jB,EAAG5jB,EAAM+B,EAAG/B,EAAMkB,GAFL,GAGjE,GE4DoE,KAAM,IAAK,KC1E/E,SAASyiP,GAAK76O,GACZ,QAASA,EAAIgP,KAAK6gC,IAAI7vC,IAAM,EAAIA,GAAK,CACvC,CAOA,OAAe,SAAU86O,EAAQxjM,EAAKyjM,EAAMC,GAG1C,SAAS/hM,EAAKxuB,EAAIjK,GAChB,IASEvqB,EACA2oN,EAVEq8B,EAAMxwN,EAAG,GACXywN,EAAMzwN,EAAG,GACT0wN,EAAK1wN,EAAG,GACR2wN,EAAM56N,EAAG,GACT66N,EAAM76N,EAAG,GACTs2B,EAAKt2B,EAAG,GACR7e,EAAKy5O,EAAMH,EACXr5O,EAAKy5O,EAAMH,EACX3wN,EAAK5oB,EAAKA,EAAKC,EAAKA,EAKtB,GAAI2oB,EA3BO,MA4BTq0L,EAAI5vM,KAAKy/B,IAAIqI,EAAKqkM,GAAM7jM,EACxBrhD,EAAI,SAAW6C,GACb,MAAO,CAACmiP,EAAMniP,EAAI6I,EAAIu5O,EAAMpiP,EAAI8I,EAAIu5O,EAAKnsO,KAAK6gC,IAAIyH,EAAMx+C,EAAI8lN,GAC9D,MAIG,CACH,IAAIx0L,EAAKpb,KAAK2C,KAAK4Y,GACjBhY,GAAMukC,EAAKA,EAAKqkM,EAAKA,EAAKH,EAAOzwN,IAAO,EAAI4wN,EAAKJ,EAAO3wN,GACxDtY,GAAMglC,EAAKA,EAAKqkM,EAAKA,EAAKH,EAAOzwN,IAAO,EAAIusB,EAAKikM,EAAO3wN,GACxDxH,EAAK5T,KAAKy/B,IAAIz/B,KAAK2C,KAAKY,EAAKA,EAAK,GAAKA,GACvCmQ,EAAK1T,KAAKy/B,IAAIz/B,KAAK2C,KAAKG,EAAKA,EAAK,GAAKA,GACzC8sM,GAAKl8L,EAAKE,GAAM00B,EAChBrhD,EAAI,SAAW6C,GACb,IAAI+Z,EAAI/Z,EAAI8lN,EACV08B,EAAST,GAAKj4N,GACdrI,EAAI4gO,GAAMJ,EAAO3wN,IAAOkxN,EAtClC,SAAct7O,GACZ,QAASA,EAAIgP,KAAK6gC,IAAI,EAAI7vC,IAAM,IAAMA,EAAI,EAC5C,CAoC2Cu7O,CAAKjkM,EAAMzkC,EAAI+P,GAzC1D,SAAc5iB,GACZ,QAASA,EAAIgP,KAAK6gC,IAAI7vC,IAAM,EAAIA,GAAK,CACvC,CAuCgEw7O,CAAK54N,IAC7D,MAAO,CAACq4N,EAAM1gO,EAAI5Y,EAAIu5O,EAAM3gO,EAAI3Y,EAAIu5O,EAAKG,EAAST,GAAKvjM,EAAMzkC,EAAI+P,GACnE,CACF,CAEA,OADA3sB,EAAE6E,SAAe,IAAJ8jN,EAAWtnK,EAAMtoC,KAAKkrN,MAC5BjkO,CACT,CAOA,OANAgjD,EAAK3B,IAAM,SAAU7b,GACnB,IAAIggN,EAAKzsO,KAAKE,IAAI,MAAOusB,GACvBigN,EAAKD,EAAKA,EAEZ,OAAOX,EAAQW,EAAIC,EADZA,EAAKA,EAEd,EACOziM,CACR,CAjDD,CAiDGjqC,KAAKkrN,MAAO,EAAG,2BCzDlB,SAASlwL,GAAIoB,GACX,OAAO,SAAU3vB,EAAOmI,GACtB,IAAIxJ,EAAIgxB,GAAK3vB,GAAQ,SAASA,IAAQrB,GAAIwJ,GAAM,SAASA,IAAMxJ,GAC7DvH,GAAI,EAAAi2B,GAAA,IAAMrtB,EAAM5I,EAAG+Q,EAAI/Q,GACvBwH,GAAI,EAAAyuB,GAAA,IAAMrtB,EAAMpB,EAAGuJ,EAAIvJ,GACvB3Q,GAAU,EAAAo/B,GAAA,IAAMrtB,EAAM/R,QAASka,EAAIla,SACrC,OAAO,SAAU5Q,GAKf,OAJA2iB,EAAMrB,EAAIA,EAAEthB,GACZ2iB,EAAM5I,EAAIA,EAAE/Z,GACZ2iB,EAAMpB,EAAIA,EAAEvhB,GACZ2iB,EAAM/R,QAAUA,EAAQ5Q,GACjB2iB,EAAQ,EACjB,CACF,CACF,CACA,OAAeuuB,GAAI,OACR2xM,GAAU3xM,GAAIlB,GAAA,eClBd,GAAU95B,KAAK+B,GAAK,IACpB,GAAU,IAAM/B,KAAK+B,GCK9B6qO,GAAK,OACLC,GAAK,EACLC,GAAK,OACL,GAAK,EAAI,GACT,GAAK,EAAI,GACT1iP,GAAK,EAAI,GAAK,GACdsqB,GAAK,oBACP,SAASq4N,GAAW5hO,GAClB,GAAIA,aAAa6hO,GAAK,OAAO,IAAIA,GAAI7hO,EAAEE,EAAGF,EAAEjH,EAAGiH,EAAEnC,EAAGmC,EAAEzQ,SACtD,GAAIyQ,aAAa8hO,GAAK,OAAOC,GAAQ/hO,GAC/BA,aAAa,QAAMA,GAAI,SAAWA,IACxC,IAIEna,EACAwa,EALEvG,EAAIkoO,GAAShiO,EAAElG,GACjBs1B,EAAI4yM,GAAShiO,EAAEovB,GACfvxB,EAAImkO,GAAShiO,EAAEnC,GACf/X,EAAIm8O,IAAS,SAAYnoO,EAAI,SAAYs1B,EAAI,SAAYvxB,GAAK6jO,IAOhE,OAJI5nO,IAAMs1B,GAAKA,IAAMvxB,EAAGhY,EAAIwa,EAAIva,GAC9BD,EAAIo8O,IAAS,SAAYnoO,EAAI,SAAYs1B,EAAI,SAAYvxB,GAAK4jO,IAC9DphO,EAAI4hO,IAAS,SAAYnoO,EAAI,SAAYs1B,EAAI,SAAYvxB,GAAK8jO,KAEzD,IAAIE,GAAI,IAAM/7O,EAAI,GAAI,KAAOD,EAAIC,GAAI,KAAOA,EAAIua,GAAIL,EAAEzQ,QAC/D,CAIe,SAAS2yO,GAAIhiO,EAAGnH,EAAG8E,EAAGtO,GACnC,OAA4B,IAArB/T,UAAUC,OAAemmP,GAAW1hO,GAAK,IAAI2hO,GAAI3hO,EAAGnH,EAAG8E,EAAc,MAAXtO,EAAkB,EAAIA,EACzF,CACO,SAASsyO,GAAI3hO,EAAGnH,EAAG8E,EAAGtO,GAC3B3U,KAAKslB,GAAKA,EACVtlB,KAAKme,GAAKA,EACVne,KAAKijB,GAAKA,EACVjjB,KAAK2U,SAAWA,CAClB,CAkBA,SAAS0yO,GAAQtjP,GACf,OAAOA,EAAI4qB,GAAK1U,KAAK0B,IAAI5X,EAAG,EAAI,GAAKA,EAAIM,GAAK,EAChD,CACA,SAASkjP,GAAQxjP,GACf,OAAOA,EAAI,GAAKA,EAAIA,EAAIA,EAAIM,IAAMN,EAAI,GACxC,CACA,SAASyjP,GAASv8O,GAChB,OAAO,KAAOA,GAAK,SAAY,MAAQA,EAAI,MAAQgP,KAAK0B,IAAI1Q,EAAG,EAAI,KAAO,KAC5E,CACA,SAASm8O,GAASn8O,GAChB,OAAQA,GAAK,MAAQ,OAAUA,EAAI,MAAQgP,KAAK0B,KAAK1Q,EAAI,MAAS,MAAO,IAC3E,CACA,SAASw8O,GAAWriO,GAClB,GAAIA,aAAa8hO,GAAK,OAAO,IAAIA,GAAI9hO,EAAEC,EAAGD,EAAED,EAAGC,EAAEE,EAAGF,EAAEzQ,SAEtD,GADMyQ,aAAa6hO,KAAM7hO,EAAI4hO,GAAW5hO,IAC5B,IAARA,EAAEjH,GAAmB,IAARiH,EAAEnC,EAAS,OAAO,IAAIikO,GAAI3yM,IAAK,EAAInvB,EAAEE,GAAKF,EAAEE,EAAI,IAAM,EAAIivB,IAAKnvB,EAAEE,EAAGF,EAAEzQ,SACvF,IAAI0Q,EAAIpL,KAAKqG,MAAM8E,EAAEnC,EAAGmC,EAAEjH,GAAK,GAC/B,OAAO,IAAI+oO,GAAI7hO,EAAI,EAAIA,EAAI,IAAMA,EAAGpL,KAAK2C,KAAKwI,EAAEjH,EAAIiH,EAAEjH,EAAIiH,EAAEnC,EAAImC,EAAEnC,GAAImC,EAAEE,EAAGF,EAAEzQ,QAC/E,CAIO,SAAS+yO,GAAIriO,EAAGF,EAAGG,EAAG3Q,GAC3B,OAA4B,IAArB/T,UAAUC,OAAe4mP,GAAWpiO,GAAK,IAAI6hO,GAAI7hO,EAAGF,EAAGG,EAAc,MAAX3Q,EAAkB,EAAIA,EACzF,CACO,SAASuyO,GAAI7hO,EAAGF,EAAGG,EAAG3Q,GAC3B3U,KAAKqlB,GAAKA,EACVrlB,KAAKmlB,GAAKA,EACVnlB,KAAKslB,GAAKA,EACVtlB,KAAK2U,SAAWA,CAClB,CACA,SAASwyO,GAAQ/hO,GACf,GAAIlD,MAAMkD,EAAEC,GAAI,OAAO,IAAI4hO,GAAI7hO,EAAEE,EAAG,EAAG,EAAGF,EAAEzQ,SAC5C,IAAI0Q,EAAID,EAAEC,EAAI,GACd,OAAO,IAAI4hO,GAAI7hO,EAAEE,EAAGrL,KAAKkC,IAAIkJ,GAAKD,EAAED,EAAGlL,KAAKoC,IAAIgJ,GAAKD,EAAED,EAAGC,EAAEzQ,QAC9D,CC3Fe,SAAS,GAAI+R,EAAOmI,GACjC,IAAIvJ,GAAI,EAAAyuB,GAAA,KAAOrtB,EAAQ,GAASA,IAAQpB,GAAIuJ,EAAM,GAASA,IAAMvJ,GAC/DnH,GAAI,EAAA41B,GAAA,IAAMrtB,EAAMvI,EAAG0Q,EAAI1Q,GACvB8E,GAAI,EAAA8wB,GAAA,IAAMrtB,EAAMzD,EAAG4L,EAAI5L,GACvBtO,GAAU,EAAAo/B,GAAA,IAAMrtB,EAAM/R,QAASka,EAAIla,SACrC,OAAO,SAAU5Q,GAKf,OAJA2iB,EAAMpB,EAAIA,EAAEvhB,GACZ2iB,EAAMvI,EAAIA,EAAEpa,GACZ2iB,EAAMzD,EAAIA,EAAElf,GACZ2iB,EAAM/R,QAAUA,EAAQ5Q,GACjB2iB,EAAQ,EACjB,CACF,CCZA,SAAS,GAAI2vB,GACX,OAAO,SAAU3vB,EAAOmI,GACtB,IAAIxJ,EAAIgxB,GAAK3vB,EAAQ,GAASA,IAAQrB,GAAIwJ,EAAM,GAASA,IAAMxJ,GAC7DF,GAAI,EAAA4uB,GAAA,IAAMrtB,EAAMvB,EAAG0J,EAAI1J,GACvBG,GAAI,EAAAyuB,GAAA,IAAMrtB,EAAMpB,EAAGuJ,EAAIvJ,GACvB3Q,GAAU,EAAAo/B,GAAA,IAAMrtB,EAAM/R,QAASka,EAAIla,SACrC,OAAO,SAAU5Q,GAKf,OAJA2iB,EAAMrB,EAAIA,EAAEthB,GACZ2iB,EAAMvB,EAAIA,EAAEphB,GACZ2iB,EAAMpB,EAAIA,EAAEvhB,GACZ2iB,EAAM/R,QAAUA,EAAQ5Q,GACjB2iB,EAAQ,EACjB,CACF,CACF,EFyBA,QAAOugO,GAAKK,IAAK,QAAO,MAAO,CAC7B5xM,SAAU,SAAkBhvC,GAC1B,OAAO,IAAIugP,GAAIjnP,KAAKslB,EAtChB,IAsC8B,MAAL5e,EAAY,EAAIA,GAAI1G,KAAKme,EAAGne,KAAKijB,EAAGjjB,KAAK2U,QACxE,EACAghC,OAAQ,SAAgBjvC,GACtB,OAAO,IAAIugP,GAAIjnP,KAAKslB,EAzChB,IAyC8B,MAAL5e,EAAY,EAAIA,GAAI1G,KAAKme,EAAGne,KAAKijB,EAAGjjB,KAAK2U,QACxE,EACAg/B,IAAK,WACH,IAAIzoC,GAAKlL,KAAKslB,EAAI,IAAM,IACtBra,EAAIiX,MAAMliB,KAAKme,GAAKjT,EAAIA,EAAIlL,KAAKme,EAAI,IACrCsH,EAAIvD,MAAMliB,KAAKijB,GAAK/X,EAAIA,EAAIlL,KAAKijB,EAAI,IAIvC,OAHAhY,EAAI47O,GAAKU,GAAQt8O,GACjBC,EAAI47O,GAAKS,GAAQr8O,GACjBua,EAAIshO,GAAKQ,GAAQ9hO,GACV,IAAI,MAAI+hO,GAAS,UAAYv8O,EAAI,UAAYC,EAAI,SAAYua,GAAI+hO,IAAU,SAAYv8O,EAAI,UAAYC,EAAI,QAAYua,GAAI+hO,GAAS,SAAYv8O,EAAI,SAAYC,EAAI,UAAYua,GAAIzlB,KAAK2U,QAClM,MAsCF,QAAOuyO,GAAKQ,IAAK,QAAO,MAAO,CAC7BhyM,SAAU,SAAkBhvC,GAC1B,OAAO,IAAIwgP,GAAIlnP,KAAKqlB,EAAGrlB,KAAKmlB,EAAGnlB,KAAKslB,EA3FhC,IA2F8C,MAAL5e,EAAY,EAAIA,GAAI1G,KAAK2U,QACxE,EACAghC,OAAQ,SAAgBjvC,GACtB,OAAO,IAAIwgP,GAAIlnP,KAAKqlB,EAAGrlB,KAAKmlB,EAAGnlB,KAAKslB,EA9FhC,IA8F8C,MAAL5e,EAAY,EAAIA,GAAI1G,KAAK2U,QACxE,EACAg/B,IAAK,WACH,OAAOwzM,GAAQnnP,MAAM2zC,KACvB,KEtFF,OAAe,GAAI,OACRg0M,GAAU,GAAI5zM,GAAA,ICfrBgc,IAAK,OACP63L,GAAI,QACJC,IAAK,OACLzJ,IAAK,OACL3+M,GAAI,QACJqoN,GAAKroN,GAAI2+M,GACT2J,GAAKtoN,GAAImoN,GACTI,GAAQJ,GAAIC,GAAIzJ,GAAIruL,GAeP,SAAS,GAAU1qC,EAAGvH,EAAGwH,EAAG3Q,GACzC,OAA4B,IAArB/T,UAAUC,OAfnB,SAA0BukB,GACxB,GAAIA,aAAa6iO,GAAW,OAAO,IAAIA,GAAU7iO,EAAEC,EAAGD,EAAEtH,EAAGsH,EAAEE,EAAGF,EAAEzQ,SAC5DyQ,aAAa,QAAMA,GAAI,SAAWA,IACxC,IAAIlG,EAAIkG,EAAElG,EAAI,IACZs1B,EAAIpvB,EAAEovB,EAAI,IACVvxB,EAAImC,EAAEnC,EAAI,IACVqC,GAAK0iO,GAAQ/kO,EAAI6kO,GAAK5oO,EAAI6oO,GAAKvzM,IAAMwzM,GAAQF,GAAKC,IAClDG,EAAKjlO,EAAIqC,EACT5e,GAAK+4B,IAAK+U,EAAIlvB,GAAKuiO,GAAIK,GAAM9J,GAC7BtgO,EAAI7D,KAAK2C,KAAKlW,EAAIA,EAAIwhP,EAAKA,IAAOzoN,GAAIna,GAAK,EAAIA,IAE/CD,EAAIvH,EAAI7D,KAAKqG,MAAM5Z,EAAGwhP,GAAM,GAAU,IAAM3zM,IAC9C,OAAO,IAAI0zM,GAAU5iO,EAAI,EAAIA,EAAI,IAAMA,EAAGvH,EAAGwH,EAAGF,EAAEzQ,QACpD,CAEkCwzO,CAAiB9iO,GAAK,IAAI4iO,GAAU5iO,EAAGvH,EAAGwH,EAAc,MAAX3Q,EAAkB,EAAIA,EACrG,CACO,SAASszO,GAAU5iO,EAAGvH,EAAGwH,EAAG3Q,GACjC3U,KAAKqlB,GAAKA,EACVrlB,KAAK8d,GAAKA,EACV9d,KAAKslB,GAAKA,EACVtlB,KAAK2U,SAAWA,CAClB,CC/BA,SAASyzO,GAAU/xM,GACjB,OAAO,SAASgyM,EAAen9O,GAE7B,SAASk9O,EAAU1hO,EAAOmI,GACxB,IAAIxJ,EAAIgxB,GAAK3vB,EAAQ,GAAeA,IAAQrB,GAAIwJ,EAAM,GAAeA,IAAMxJ,GACzEvH,GAAI,EAAAi2B,GAAA,IAAMrtB,EAAM5I,EAAG+Q,EAAI/Q,GACvBwH,GAAI,EAAAyuB,GAAA,IAAMrtB,EAAMpB,EAAGuJ,EAAIvJ,GACvB3Q,GAAU,EAAAo/B,GAAA,IAAMrtB,EAAM/R,QAASka,EAAIla,SACrC,OAAO,SAAU5Q,GAKf,OAJA2iB,EAAMrB,EAAIA,EAAEthB,GACZ2iB,EAAM5I,EAAIA,EAAE/Z,GACZ2iB,EAAMpB,EAAIA,EAAErL,KAAK0B,IAAI5X,EAAGmH,IACxBwb,EAAM/R,QAAUA,EAAQ5Q,GACjB2iB,EAAQ,EACjB,CACF,CAEA,OAfAxb,GAAKA,EAcLk9O,EAAU9xM,MAAQ+xM,EACXD,CACT,CAjBO,CAiBL,EACJ,EDaA,QAAOH,GAAW,IAAW,QAAO,MAAO,CACzCvyM,SAAU,SAAkBhvC,GAE1B,OADAA,EAAS,MAALA,EAAY,MAAYuT,KAAK0B,IAAI,MAAWjV,GACzC,IAAIuhP,GAAUjoP,KAAKqlB,EAAGrlB,KAAK8d,EAAG9d,KAAKslB,EAAI5e,EAAG1G,KAAK2U,QACxD,EACAghC,OAAQ,SAAgBjvC,GAEtB,OADAA,EAAS,MAALA,EAAY,MAAUuT,KAAK0B,IAAI,MAASjV,GACrC,IAAIuhP,GAAUjoP,KAAKqlB,EAAGrlB,KAAK8d,EAAG9d,KAAKslB,EAAI5e,EAAG1G,KAAK2U,QACxD,EACAg/B,IAAK,WACH,IAAItuB,EAAInD,MAAMliB,KAAKqlB,GAAK,GAAKrlB,KAAKqlB,EAAI,KAAO,GAC3CC,GAAKtlB,KAAKslB,EACVnH,EAAI+D,MAAMliB,KAAK8d,GAAK,EAAI9d,KAAK8d,EAAIwH,GAAK,EAAIA,GAC1CwgO,EAAO7rO,KAAKkC,IAAIkJ,GAChBohO,EAAOxsO,KAAKoC,IAAIgJ,GAClB,OAAO,IAAI,MAAI,KAAOC,EAAInH,GAAK4xC,GAAI+1L,EAAO8B,GAAInB,IAAQ,KAAOnhO,EAAInH,GAAK0pO,GAAI/B,EAAO1H,GAAIqI,IAAQ,KAAOnhO,EAAInH,GAAKshB,GAAIqmN,IAAQ9lP,KAAK2U,QAChI,KC5BF,ICrBI2zO,GAAUC,GDqBd,GAAeH,GAAU,OACdI,GAAgBJ,GAAUr0M,GAAA,IEvBtB,SAAS,GAACysM,EAAc5xN,GAErC,IADA,IAAIgyH,EAAU,IAAIngH,MAAM7R,GACf1tB,EAAI,EAAGA,EAAI0tB,IAAK1tB,EAAG0/I,EAAQ1/I,GAAKs/O,EAAat/O,GAAK0tB,EAAI,IAC/D,OAAOgyH,CACT,CDKA,SAAS6nG,GAAU33N,EAAO43N,EAAcC,GACtC,IAAIrkK,EAAQxzD,EAAQ43N,EAA8B,EAAfC,EACnC,OAAO73N,EAAQwzD,EAAQ,EAAIA,EAAQ,EAAI,CACzC,CACA,IACI,GAAS,SACTskK,GAAM,MACNC,GAAM,MACNC,GAAO,OACPC,GAAS,SACTC,GAAO,OACP7+B,GAAM,MACN8+B,GAAa,aACbC,GAAY,YACZ,GAAW,WACXC,GAAW,WACXC,GAAY,YACZC,GAAU,UACVC,GAAQ,QACRC,GAAO,OACPC,GAAa,cAGbC,GAAa,aACbC,GAAW,WACXC,GAAe,eACfC,GAAgB,gBAChBC,GAAW,WAyCf,SAAS1b,KACP,IAIE1mL,EACAnM,EALExiC,EAAQ,KAAeg+M,aAAQrgM,GACjC8jB,EAASzhC,EAAMyhC,OACfuvM,EAAehxO,EAAM6uC,MACnBoiM,EAAU,CAAC,EAAG,GAGhBtnN,GAAQ,EACRimN,EAAe,EACfC,EAAe,EACft0J,EAAQ,GAEV,SAAS6rJ,IACP,IAAItxN,EAAI2rB,IAAS15C,OACf+vB,EAAUm5N,EAAQ,GAAKA,EAAQ,GAC/B/kP,EAAO+kP,EAAQ,EAAIn5N,GACnB0zD,EAAQmkK,GAAU75N,EAAG85N,EAAcC,GACjCjiO,EAAQqjO,EAAQn5N,EAAU,GAC9B62B,GAAQziD,EAAO0hB,IAAU49D,GAAS,GAC9B7hD,IACFglB,EAAOxtC,KAAKwX,MAAMg2B,IAEpB/gC,IAAU1hB,EAAO0hB,EAAQ+gC,GAAQ74B,EAAI85N,IAAiBr0J,EACtD/4C,EAAYmM,GAAQ,EAAIihM,GACpBjmN,IACF/b,EAAQzM,KAAKwoB,MAAM/b,GACnB40B,EAAYrhC,KAAKwoB,MAAM6Y,IAEzB,IAAI9a,EAAS,GAAM5R,GAAGoC,KAAI,SAAU9vB,GAClC,OAAOwlB,EAAQ+gC,EAAOvmD,CACxB,IACA,OAAO4oP,EAAal5N,EAAU4P,EAAO5P,UAAY4P,EACnD,CAiHA,cAtIO1nB,EAAMg+M,QAsBbh+M,EAAMyhC,OAAS,SAAU7T,GACvB,OAAI9lC,UAAUC,QACZ05C,EAAO7T,GACAw5M,KAEA3lM,GAEX,EACAzhC,EAAM6uC,MAAQ,SAAUjhB,GACtB,OAAI9lC,UAAUC,QACZkpP,EAAU,EAAErjN,EAAE,IAAKA,EAAE,IACdw5M,KAEA6J,EAAQ/iO,OAEnB,EACAlO,EAAMsnO,WAAa,SAAU15M,GAG3B,OAFAqjN,EAAU,EAAErjN,EAAE,IAAKA,EAAE,IACrBjE,GAAQ,EACDy9M,GACT,EACApnO,EAAMwiC,UAAY,WAChB,OAAOA,CACT,EACAxiC,EAAM2uC,KAAO,WACX,OAAOA,CACT,EACA3uC,EAAM2pB,MAAQ,SAAUiE,GACtB,OAAI9lC,UAAUC,QACZ4hC,IAAUiE,EACHw5M,KAEAz9M,CAEX,EACA3pB,EAAMshE,QAAU,SAAU1zC,GACxB,OAAI9lC,UAAUC,QACZ8nP,EAAe1uO,KAAKE,IAAI,EAAGF,KAAKC,IAAI,EAAGwsB,IACvCgiN,EAAeC,EACRzI,KAEAwI,CAEX,EACA5vO,EAAM4vO,aAAe,SAAUhiN,GAC7B,OAAI9lC,UAAUC,QACZ6nP,EAAezuO,KAAKE,IAAI,EAAGF,KAAKC,IAAI,EAAGwsB,IAChCw5M,KAEAwI,CAEX,EACA5vO,EAAM6vO,aAAe,SAAUjiN,GAC7B,OAAI9lC,UAAUC,QACZ8nP,EAAe1uO,KAAKE,IAAI,EAAGF,KAAKC,IAAI,EAAGwsB,IAChCw5M,KAEAyI,CAEX,EACA7vO,EAAMu7E,MAAQ,SAAU3tD,GACtB,OAAI9lC,UAAUC,QACZwzF,EAAQp6E,KAAKE,IAAI,EAAGF,KAAKC,IAAI,EAAGwsB,IACzBw5M,KAEA7rJ,CAEX,EACAv7E,EAAMkxO,YAAc,SAAUtjN,GAE5B,GAAY,MAARA,EAAE,IAAsB,MAARA,EAAE,GAAtB,CACA,IAKEvoB,EACA8E,EACAlf,EAPE6sB,EAAUm5N,EAAQ,GAAKA,EAAQ,GACjCvpN,EAAS5P,EAAUk5N,IAAel5N,UAAYk5N,IAC9Cl7N,EAAI4R,EAAO3/B,OAAS,EAClBq5M,GAAMxzK,EAAE,GACVyzK,GAAMzzK,EAAE,GAMV,GAAIwzK,GAAOA,GAAMC,GAAOA,IAGpBA,EAAKD,IACPn2M,EAAIm2M,EACJA,EAAKC,EACLA,EAAKp2M,KAEHo2M,EAAK35K,EAAO,IAAM05K,EAAK6vC,EAAQ,EAAIn5N,KAcvC,OAXAzS,EAAIlE,KAAKE,IAAI,EAAGulO,GAAYl/M,EAAQ05K,GAAM,GAC1Cj3L,EAAIi3L,IAAOC,EAAKh8L,EAAIuhO,GAAYl/M,EAAQ25K,GAAM,EAG1CD,EAAK15K,EAAOriB,GAAKm9B,EAAY,SAASn9B,EACtCyS,IAEF7sB,EAAIoa,EACJA,EAAIyQ,EAAI3L,EACRA,EAAI2L,EAAI7qB,GAEHoa,EAAI8E,OAAIwT,EAAY8jB,IAASvzB,MAAM7I,EAAG8E,EAAI,EAjCT,CAkC1C,EACAnK,EAAMwL,OAAS,SAAUoiB,GACvB,IAAIvkC,EAAQ2W,EAAMkxO,YAAY,CAACtjN,EAAGA,IAClC,OAAOvkC,EAAQA,EAAM,GAAKA,CAC5B,EACA2W,EAAMkvB,KAAO,WACX,OAAOmmM,KAAO5zL,OAAOA,KAAUoN,MAAMoiM,GAAStnN,MAAMA,GAAOimN,aAAaA,GAAcC,aAAaA,GAAct0J,MAAMA,EACzH,EACO6rJ,GACT,CACA,SAAS+J,GAASnxO,GAChB,IAAIkvB,EAAOlvB,EAAMkvB,KAMjB,OALAlvB,EAAMshE,QAAUthE,EAAM6vO,oBACf7vO,EAAM4vO,aACb5vO,EAAMkvB,KAAO,WACX,OAAOiiN,GAASjiN,IAClB,EACOlvB,CACT,CAIA,IAAI,GAAM2nB,MAAMvgC,UAAU8wB,IAI1B,IAAI,GAAQyP,MAAMvgC,UAAU8mB,MAiC5B,IAAIkjO,GAAS,IAAInrO,IACborO,GAAa/xM,OAAO,cACxB,SAASgyM,GAActxO,GAErB,OADAA,EAAMqxO,KAAc,EACbrxO,CACT,CAyCA,SAAS,GAAMnQ,EAAMmQ,EAAOuxO,GAC1B,OAAIzpP,UAAUC,OAAS,GACrBqpP,GAAOhoP,IAAIyG,EA/Bf,SAAgBA,EAAM7D,EAAaulP,GACjC,IAAIzf,EAAM,WACR,IAAI9sN,EAAIhZ,IAKR,OAJKgZ,EAAEksO,cACLlsO,EAAEksO,YAAclsO,EAAEwG,OAjQxB,SAAqBxL,GACnB,OAAO,SAAU4tB,GACf,IAEE3iC,EAFEm2M,EAAKxzK,EAAE,GACTyzK,EAAKzzK,EAAE,GAOT,OALIyzK,EAAKD,IACPn2M,EAAIm2M,EACJA,EAAKC,EACLA,EAAKp2M,GAEA,CAAC+U,EAAMwL,OAAO41L,GAAKphM,EAAMwL,OAAO61L,GACzC,CACF,CAqPiC6vC,CAAYlsO,GAAKA,EAAEwsO,aApPpD,SAA2BxxO,GACzB,OAAO,SAAU4tB,GACf,IAIEvsB,EACApW,EACA7C,EACA0tB,EAPE+4B,EAAQ7uC,EAAM6uC,QACduyJ,EAAKxzK,EAAE,GACTyzK,EAAKzzK,EAAE,GACPxsB,GAAO,EAUT,IALIigM,EAAKD,IACPn2M,EAAIm2M,EACJA,EAAKC,EACLA,EAAKp2M,GAEF7C,EAAI,EAAG0tB,EAAI+4B,EAAM9mD,OAAQK,EAAI0tB,IAAK1tB,EACjCymD,EAAMzmD,IAAMg5M,GAAMvyJ,EAAMzmD,IAAMi5M,IAC5BjgM,EAAM,IAAGA,EAAMhZ,GACnBiZ,EAAMjZ,GAGV,KAAIgZ,EAAM,GAGV,OAFAggM,EAAKphM,EAAMwxO,aAAa3iM,EAAMztC,IAC9BigM,EAAKrhM,EAAMwxO,aAAa3iM,EAAMxtC,IACvB,MAAWsc,IAAVyjL,EAAG,GAAmBA,EAAG,GAAKA,EAAG,QAAczjL,IAAV0jL,EAAG,GAAmBA,EAAG,GAAKA,EAAG,GAChF,CACF,CA0NmEowC,CAAkBzsO,QAAK2Y,GAEtF3Y,EAAEnV,KAAOA,EACFyhP,GAActsO,EACvB,EAEA,OADA8sN,EAAIyf,SAAW1tC,GAAM,GAAM0tC,IACpBzf,CACT,CAoBqB1iM,CAAOv/B,EAAMmQ,EAAOuxO,IAC9BrqP,MAEAwqP,GAAiB7hP,GAAQuhP,GAAOloP,IAAI2G,QAAQ8tB,CAEvD,CAuCA,SAAS+zN,GAAiB7hP,GACxB,OAAOuhP,GAAOpoN,IAAIn5B,EACpB,CACA,SAAS8hP,GAAQ5pN,EAAKl4B,GACpB,IAAImV,EAAIosO,GAAOloP,IAAI6+B,GACnB,OAAO/iB,GAAKA,EAAEusO,SAAS1hP,EACzB,CACA,SAAS+hP,GAAa7pN,GACpB,OAAO4pN,GAAQ5pN,EAAK4oN,GACtB,CACA,SAASkB,GAAW9pN,GAClB,OAAO4pN,GAAQ5pN,EAAK6oN,GACtB,CACA,SAASkB,GAAe/pN,GACtB,OAAO4pN,GAAQ5pN,EAAK8oN,GACtB,CACA,SAASkB,GAAchqN,GACrB,OAAO4pN,GAAQ5pN,EAAK+nN,GACtB,CAIA,SAASkC,GAAgBjqN,GACvB,OAAO4pN,GAAQ5pN,EAAK+oN,GACtB,CACA,SAASmB,GAAWlqN,GAClB,OAAO4pN,GAAQ5pN,EAAK,GACtB,CA/DA,GA5Te,YEXA,SAAS,EAAS0Z,GAC/B,IAAIu8K,EACJ,SAASh+M,EAAM7N,GACb,OAAY,MAALA,GAAaiX,MAAMjX,GAAKA,GAAK6rN,EAAU7rN,CAChD,CAYA,OAXA6N,EAAMwL,OAASxL,EACfA,EAAMyhC,OAASzhC,EAAM6uC,MAAQ,SAAUjhB,GACrC,OAAO9lC,UAAUC,QAAU05C,EAAS9Z,MAAMnH,KAAKoN,EAAG,IAAS5tB,GAASyhC,EAAOvzB,OAC7E,EACAlO,EAAMg+M,QAAU,SAAUpwL,GACxB,OAAO9lC,UAAUC,QAAUi2N,EAAUpwL,EAAG5tB,GAASg+M,CACnD,EACAh+M,EAAMkvB,KAAO,WACX,OAAO,EAASuS,GAAQu8K,QAAQA,EAClC,EACAv8K,EAAS35C,UAAUC,OAAS4/B,MAAMnH,KAAKihB,EAAQ,IAAU,CAAC,EAAG,GACtDmmM,GAAU5nO,EACnB,IFyTA,GAAM,IlC3RS,SAAS,IACtB,IAAIA,EAAQunO,KAKZ,OAJAvnO,EAAMkvB,KAAO,WACX,OAAOA,GAAKlvB,EAAO,IACrB,EACAwnO,GAAUj/O,MAAMyX,EAAOlY,WAChB8/O,GAAU5nO,EACnB,GkCoR6B2wO,IAC7B,GAAMb,IhClNS,SAAS,IACtB,IAAI9vO,EAAQooO,GAAQnB,MAAexlM,OAAO,CAAC,EAAG,KAK9C,OAJAzhC,EAAMkvB,KAAO,WACX,OAAOA,GAAKlvB,EAAO,KAAO0pB,KAAK1pB,EAAM0pB,OACvC,EACA89M,GAAUj/O,MAAMyX,EAAOlY,WAChBkY,CACT,GgC2MuB,CAAC2wO,GAAYb,KACpC,GAAMC,GAAK,GAAYY,IACvB,GAAMX,I/B9SC,WACL,OAAO,GAAIznP,MAAM,KAAMT,WAAWgb,SAAS,GAC7C,G+B4SyB6tO,IACzB,GAAMV,I9B3TS,SAAS,IACtB,IAAIjwO,EAAQgpO,GAAU/B,MAItB,OAHAjnO,EAAMkvB,KAAO,WACX,OAAOA,GAAKlvB,EAAO,KAAU0gM,SAAS1gM,EAAM0gM,WAC9C,EACO8mC,GAAUj/O,MAAMyX,EAAOlY,UAChC,G8BqT6B6oP,IAC7B,GAAMT,I1BhSS,WACb,OAAO1I,GAAUj/O,MAAM+mH,GAASq6H,GAAWC,GAAkBx8B,GAAUO,GAAW,GAAUlC,GAASoC,GAAUO,GAAY,GAAY,IAAY3sK,OAAO,CAAC,IAAIv3C,KAAK,IAAM,EAAG,GAAI,IAAIA,KAAK,IAAM,EAAG,KAAMpC,UAC3M,G0B8RyB,CAAC6oP,GAAYI,KACtC,GAAM1/B,IG9US,WACb,OAAOm2B,GAAUj/O,MAAM+mH,GAASi6H,GAAUC,GAAiBh8B,GAASI,GAAU,GAAS9B,GAAQoC,GAASG,GAAW,GAAW,IAAW5sK,OAAO,CAACv3C,KAAKmnN,IAAI,IAAM,EAAG,GAAInnN,KAAKmnN,IAAI,IAAM,EAAG,KAAMvpN,UACjM,GH4UuB,CAAC6oP,GAAYI,KAGpC,GAAMZ,GAAY,GAAmB,CAACQ,GAAYG,KAClD,GAAM,GAAGr2O,OAAO01O,GAAY,KAAK11O,OAAO,IAAS,GAAmB,CAACk2O,GAAYG,KACjF,GAAM,GAAGr2O,OAAO01O,GAAY,KAAK11O,OAAOq1O,KzB7RjC,SAASoC,IACd,IAAIlyO,EAAQooO,GAAQ,MAAe3mM,OAAO,CAAC,EAAG,KAI9C,OAHAzhC,EAAMkvB,KAAO,WACX,OAAO,GAAKlvB,EAAOkyO,KAAiBxoN,KAAK1pB,EAAM0pB,OACjD,EACO+9M,GAAiBl/O,MAAMyX,EAAOlY,UACvC,GyBuRoE,CAAC6oP,GAAYG,GAAehB,KAChG,GAAM,GAAGr1O,OAAO01O,GAAY,KAAK11O,OAAOs1O,IAAM,GAAsB,CAACY,GAAYG,KACjF,GAAM,GAAGr2O,OAAO01O,GAAY,KAAK11O,OAAOu1O,KzB1QjC,WACL,OAAOzF,GAAchiP,MAAM,KAAMT,WAAWgb,SAAS,GACvD,GyBwQsE,CAAC6tO,GAAYG,KACnF,GAAM,GAAGr2O,OAAO01O,GAAY,KAAK11O,OAAOw1O,KzBzRjC,SAASkC,IACd,IAAInyO,EAAQgpO,GAAU,MAItB,OAHAhpO,EAAMkvB,KAAO,WACX,OAAO,GAAKlvB,EAAOmyO,KAAoBzxC,SAAS1gM,EAAM0gM,WACxD,EACO+mC,GAAiBl/O,MAAMyX,EAAOlY,UACvC,GyBmR0E,CAAC6oP,GAAYG,KAGvF,GAAM,GAAGr2O,OAAO21O,GAAW,KAAK31O,OAAO,KvBxSxB,SAAS23O,IACtB,IAAIpyO,EAAQ4nO,GAAU,KAAc,KAIpC,OAHA5nO,EAAMkvB,KAAO,WACX,OAAO,GAAKlvB,EAAOoyO,IACrB,EACO3K,GAAiBl/O,MAAMyX,EAAOlY,UACvC,GuBkSkE,CAAC6oP,GAAYG,KAC/E,GAAM,GAAGr2O,OAAO21O,GAAW,KAAK31O,OAAOq1O,KvBlShC,SAASuC,IACd,IAAIryO,EAAQooO,GAAQ,MAAe3mM,OAAO,CAAC,GAAK,EAAG,KAInD,OAHAzhC,EAAMkvB,KAAO,WACX,OAAO,GAAKlvB,EAAOqyO,KAAgB3oN,KAAK1pB,EAAM0pB,OAChD,EACO+9M,GAAiBl/O,MAAMyX,EAAOlY,UACvC,GuB4RkE,CAAC6oP,GAAYG,GAAehB,KAC9F,GAAM,GAAGr1O,OAAO21O,GAAW,KAAK31O,OAAOs1O,IAAM,GAAqB,CAACY,GAAYG,KAC/E,GAAM,GAAGr2O,OAAO21O,GAAW,KAAK31O,OAAOu1O,KvB/QhC,WACL,OAAOvF,GAAaliP,MAAM,KAAMT,WAAWgb,SAAS,GACtD,GuB6QoE,CAAC6tO,GAAYG,KACjF,GAAM,GAAGr2O,OAAO21O,GAAW,KAAK31O,OAAOw1O,KvB9RhC,SAASqC,IACd,IAAItyO,EAAQgpO,GAAU,MAItB,OAHAhpO,EAAMkvB,KAAO,WACX,OAAO,GAAKlvB,EAAOsyO,KAAmB5xC,SAAS1gM,EAAM0gM,WACvD,EACO+mC,GAAiBl/O,MAAMyX,EAAOlY,UACvC,GuBwRwE,CAAC6oP,GAAYG,KAGrF,GAAM,ItB/VS,SAAS,IACtB,IAGE9yB,EAHEv8K,EAAS,GACXoN,EAAQ,GACR0jM,EAAa,GAEf,SAASnL,IACP,IAAIh/O,EAAI,EACN0tB,EAAI3U,KAAKE,IAAI,EAAGwtC,EAAM9mD,QAExB,IADAwqP,EAAa,IAAI5qN,MAAM7R,EAAI,KAClB1tB,EAAI0tB,GAAGy8N,EAAWnqP,EAAI,GAAK,GAAUq5C,EAAQr5C,EAAI0tB,GAC1D,OAAO9V,CACT,CACA,SAASA,EAAM7N,GACb,OAAY,MAALA,GAAaiX,MAAMjX,GAAKA,GAAK6rN,EAAUnvK,EAAMzG,GAAOmqM,EAAYpgP,GACzE,CAmCA,OAlCA6N,EAAMwxO,aAAe,SAAUp/O,GAC7B,IAAIhK,EAAIymD,EAAMz0C,QAAQhI,GACtB,OAAOhK,EAAI,EAAI,CAACqzC,IAAKA,KAAO,CAACrzC,EAAI,EAAImqP,EAAWnqP,EAAI,GAAKq5C,EAAO,GAAIr5C,EAAImqP,EAAWxqP,OAASwqP,EAAWnqP,GAAKq5C,EAAOA,EAAO15C,OAAS,GACrI,EACAiY,EAAMyhC,OAAS,SAAU7T,GACvB,IAAK9lC,UAAUC,OAAQ,OAAO05C,EAAOvzB,QACrCuzB,EAAS,GACT,IACEgkL,EADEC,EAAY,GAA2B93L,GAE3C,IACE,IAAK83L,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIvyB,EAAIw4M,EAAMp8N,MACL,MAAL4jB,GAAc7D,MAAM6D,GAAKA,IAAIw0B,EAAOh6C,KAAKwlB,EAC/C,CACF,CAAE,MAAOyhB,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CAEA,OADAk3C,EAAOhoC,KAAK,IACL2tO,GACT,EACApnO,EAAM6uC,MAAQ,SAAUjhB,GACtB,OAAO9lC,UAAUC,QAAU8mD,EAAQlnB,MAAMnH,KAAKoN,GAAIw5M,KAAav4L,EAAM3gC,OACvE,EACAlO,EAAMg+M,QAAU,SAAUpwL,GACxB,OAAO9lC,UAAUC,QAAUi2N,EAAUpwL,EAAG5tB,GAASg+M,CACnD,EACAh+M,EAAMkrN,UAAY,WAChB,OAAOqnB,EAAWrkO,OACpB,EACAlO,EAAMkvB,KAAO,WACX,OAAO,IAAWuS,OAAOA,GAAQoN,MAAMA,GAAOmvK,QAAQA,EACxD,EACOwpB,GAAUj/O,MAAMyX,EAAOlY,UAChC,GsB6SiC,CAAC+oP,GAAc,KAChD,GAAMR,IIjWS,SAASmC,IACtB,IAKEx0B,EALEpqM,EAAK,EACPtK,EAAK,EACLwM,EAAI,EACJ2rB,EAAS,CAAC,IACVoN,EAAQ,CAAC,EAAG,GAEd,SAAS7uC,EAAM7N,GACb,OAAY,MAALA,GAAaA,GAAKA,EAAI08C,EAAMzG,GAAO3G,EAAQtvC,EAAG,EAAG2jB,IAAMkoM,CAChE,CACA,SAASopB,IACP,IAAIh/O,GAAK,EAET,IADAq5C,EAAS,IAAI9Z,MAAM7R,KACV1tB,EAAI0tB,GAAG2rB,EAAOr5C,KAAOA,EAAI,GAAKkhB,GAAMlhB,EAAI0tB,GAAKlC,IAAOkC,EAAI,GACjE,OAAO9V,CACT,CAqBA,OApBAA,EAAMyhC,OAAS,SAAU7T,GACvB,IAAImrB,EACJ,OAAOjxD,UAAUC,QAAWgxD,GAAO,OAAenrB,EAAG,GAAIha,EAAKmlC,EAAK,GAAIzvC,EAAKyvC,EAAK,GAAKnlC,GAAMA,EAAItK,GAAMA,EAAI89N,KAAa,CAACxzN,EAAItK,EAC9H,EACAtJ,EAAM6uC,MAAQ,SAAUjhB,GACtB,OAAO9lC,UAAUC,QAAU+tB,GAAK+4B,EAAQlnB,MAAMnH,KAAKoN,IAAI7lC,OAAS,EAAGq/O,KAAav4L,EAAM3gC,OACxF,EACAlO,EAAMwxO,aAAe,SAAUp/O,GAC7B,IAAIhK,EAAIymD,EAAMz0C,QAAQhI,GACtB,OAAOhK,EAAI,EAAI,CAACqzC,IAAKA,KAAOrzC,EAAI,EAAI,CAACwrB,EAAI6tB,EAAO,IAAMr5C,GAAK0tB,EAAI,CAAC2rB,EAAO3rB,EAAI,GAAIxM,GAAM,CAACm4B,EAAOr5C,EAAI,GAAIq5C,EAAOr5C,GAC9G,EACA4X,EAAMg+M,QAAU,SAAUpwL,GACxB,OAAO9lC,UAAUC,QAAUi2N,EAAUpwL,EAAG5tB,GAASA,CACnD,EACAA,EAAMuyO,WAAa,WACjB,OAAO9wM,EAAOvzB,OAChB,EACAlO,EAAMkvB,KAAO,WACX,OAAOsjN,IAAW/wM,OAAO,CAAC7tB,EAAItK,IAAKulC,MAAMA,GAAOmvK,QAAQA,EAC1D,EACOwpB,GAAUj/O,MAAMq/O,GAAU5nO,GAAQlY,UAC3C,GJ4TiC+oP,IACjC,GAAMP,IKpWS,SAAS7tC,IACtB,IAEEub,EAFEv8K,EAAS,CAAC,IACZoN,EAAQ,CAAC,EAAG,GAEZ/4B,EAAI,EACN,SAAS9V,EAAM7N,GACb,OAAY,MAALA,GAAaA,GAAKA,EAAI08C,EAAMzG,GAAO3G,EAAQtvC,EAAG,EAAG2jB,IAAMkoM,CAChE,CAiBA,OAhBAh+M,EAAMyhC,OAAS,SAAU7T,GACvB,OAAO9lC,UAAUC,QAAU05C,EAAS9Z,MAAMnH,KAAKoN,GAAI9X,EAAI3U,KAAKC,IAAIqgC,EAAO15C,OAAQ8mD,EAAM9mD,OAAS,GAAIiY,GAASyhC,EAAOvzB,OACpH,EACAlO,EAAM6uC,MAAQ,SAAUjhB,GACtB,OAAO9lC,UAAUC,QAAU8mD,EAAQlnB,MAAMnH,KAAKoN,GAAI9X,EAAI3U,KAAKC,IAAIqgC,EAAO15C,OAAQ8mD,EAAM9mD,OAAS,GAAIiY,GAAS6uC,EAAM3gC,OAClH,EACAlO,EAAMwxO,aAAe,SAAUp/O,GAC7B,IAAIhK,EAAIymD,EAAMz0C,QAAQhI,GACtB,MAAO,CAACqvC,EAAOr5C,EAAI,GAAIq5C,EAAOr5C,GAChC,EACA4X,EAAMg+M,QAAU,SAAUpwL,GACxB,OAAO9lC,UAAUC,QAAUi2N,EAAUpwL,EAAG5tB,GAASg+M,CACnD,EACAh+M,EAAMkvB,KAAO,WACX,OAAOuzK,IAAYhhK,OAAOA,GAAQoN,MAAMA,GAAOmvK,QAAQA,EACzD,EACOwpB,GAAUj/O,MAAMyX,EAAOlY,UAChC,GL2UmC+oP,IAGnC,GAAMH,IAxHN,SAAS+B,IACP,IAAIhxM,EAAS,GACXoN,EAAQ,GACV,SAAS7uC,EAAM7N,GACb,OAAY,MAALA,GAAaA,GAAMA,OAAIwrB,EAAYkxB,GAAOzG,GAAO3G,EAAQtvC,GAAK,GAAK08C,EAAM9mD,OAClF,CAuBA,OAtBAiY,EAAMyhC,OAAS,SAAU7T,GACvB,OAAI9lC,UAAUC,QACZ05C,EAZN,SAAiB7T,GACf,OAAO,GAAI9kC,KAAK8kC,EAAGgyK,GACrB,CAUe,CAAQhyK,GACV5tB,GAEAyhC,EAAOvzB,OAElB,EACAlO,EAAM6uC,MAAQ,SAAUjhB,GACtB,OAAI9lC,UAAUC,QACZ8mD,EAAQ,GAAM/lD,KAAK8kC,GACZ5tB,GAEA6uC,EAAM3gC,OAEjB,EACAlO,EAAM2nO,WAAa,SAAU3vN,EAAOixL,GAClC,OAAO0+B,GAAalmM,EAAO,GAAIk+J,GAAKl+J,GAAkB,MAATzpB,EAAgB,GAAKA,EAAOixL,EAC3E,EACAjpM,EAAMkvB,KAAO,WACX,OAAOujN,IAAkBhxM,OAAOzhC,EAAMyhC,UAAUoN,MAAM7uC,EAAM6uC,QAC9D,EACO7uC,CACT,GA2FmC,CAAC4wO,GAAUC,KAC9C,GAAMN,GAAS,GAAgBK,IAC/B,GAAMH,GAAMpb,GAAMub,IAClB,GAAMJ,IAnIN,WACE,OAAOW,GAAS9b,KAAOua,aAAa,GACtC,GAiIoBgB,IA6BpB,IAAI8B,GAAa,CAAC,QAAS,OAAQ,WAAY,YAC/C,SAASC,GAAiBjL,EAAc74L,GACtC,IAAIjhC,EAAQihC,EAAM,GAChBuoE,EAAOuoF,GAAK9wJ,GAASjhC,EACvB,OAAO,SAAUxlB,GACf,OAAOs/O,EAAa95N,EAAQxlB,EAAIgvH,EAClC,CACF,CACA,SAASw7H,GAAkB10M,EAAQruC,EAAM2tC,GACvC,OAAO,GAAcupM,GAAYl3O,GAAQ,MAAO2tC,GAAQU,EAC1D,CACA,SAAS20M,GAAqBnL,EAAc1vN,GAG1C,IAFA,IAAI8vH,EAAU,IAAIngH,MAAM3P,GACtBlC,EAAIkC,EAAQ,EACL5vB,EAAI,EAAGA,EAAI4vB,GAAQ8vH,EAAQ1/I,GAAKs/O,IAAet/O,EAAI0tB,GAC5D,OAAOgyH,CACT,CAOA,SAASgrG,GAAcC,EAAS3xO,EAAKC,GACnC,IACIjZ,EAAG6C,EAAG+Z,EADNu8B,EAAQlgC,EAAMD,EAElB,OAAKmgC,GAAUp4B,OAAOqe,SAAS+Z,IAG7Bn5C,GAAK6C,EAAI8nP,EAAQljP,MAAMuK,QAAQ,KAC/BnP,EAAI7C,EAAI,EAAI6C,EAAIA,EAAEijB,MAAM9lB,EAAI,GAC5B4c,EAAI,GAAM/Z,EAAN,GAAWw2C,OAAO,CAACrgC,EAAKC,IAAMwtC,MAAM,CAAC,EAAG,IAC5C6jM,GAAWpjP,SAAQ,SAAU2N,GAC3B,OAAO81O,EAAQ91O,GAAK+H,EAAE/H,GAAG81O,EAAQ91O,MAAQ,CAC3C,IACO+H,GARA,GAAS,GAUpB,CACA,SAAS+hO,GAAYl3O,EAAM2tC,GACzB,IAAIw1M,EAAS,EAGf,SAAgBnjP,GACd,MAAO,cAAgBA,EAAKiW,cAAc0K,MAAM,KAAK0H,KAAI,SAAUlT,GACjE,OAAOA,EAAE,GAAG8I,cAAgB9I,EAAEkJ,MAAM,EACtC,IAAGqC,KAAK,GACV,CAPmB,CAAO1gB,IACxB,OAAgB,MAAT2tC,GAAiBw1M,GAAUA,EAAOx1M,MAAQw1M,EAAOx1M,MAAMA,GAASw1M,CACzE,CA6EA,SAAS90M,GAAO+0M,GAGd,IAFA,IAAIn9N,EAAIm9N,EAAQlrP,OAAS,EAAI,EAC3BskB,EAAI,IAAIsb,MAAM7R,GACP1tB,EAAI,EAAGA,EAAI0tB,GAClBzJ,EAAEjkB,GAAK,IAAM6qP,EAAQ/kO,MAAU,EAAJ9lB,EAAa,IAAJA,GAEtC,OAAOikB,CACT,CACA,SAAS9jB,GAAMqlC,EAAGrjC,GAChB,IAAK,IAAIqD,KAAKggC,EAAGslN,GAAOtlP,EAAGrD,EAAEqjC,EAAEhgC,IACjC,CACA,IAAIulP,GAAU,CAAC,EAKf,SAASD,GAAO/pP,EAAM+pP,GAEpB,OADA/pP,EAAOA,GAAQA,EAAK2c,cAChBhe,UAAUC,OAAS,GACrBorP,GAAQhqP,GAAQ+pP,EACThsP,MAEAisP,GAAQhqP,EAEnB,CAZAZ,GA5Be,CACb6qP,WAAY,+DACZC,WAAY,2HACZC,YAAa,2HACbC,YAAa,2HACbC,UAAW,+DACXC,UAAW,2HACXC,OAAQ,mDACRC,MAAO,mDACPC,OAAQ,2EACRC,QAAS,yDACTC,QAAS,mDACTC,KAAM,yDACNC,KAAM,mDACNC,KAAM,4EAcQ/1M,IAChB31C,GApFiB,CACf2rP,MAAO,qEACPC,OAAQ,qEACRC,MAAO,qEACPC,QAAS,qEACTC,QAAS,qEACTC,KAAM,qEACNC,UAAW,qEACXC,WAAY,qEACZC,UAAW,qEACXC,UAAW,qEACXC,WAAY,qEACZC,gBAAiB,qEACjBC,UAAW,qEACXC,UAAW,qEACXC,YAAa,qEACbC,kBAAmB,qEACnBC,gBAAiB,qEACjBC,WAAY,qEACZC,eAAgB,qEAChBC,YAAa,qEACbC,aAAc,qEACdC,QAAS,qEACTC,QAAS,qEACTC,gBAAiB,qEACjBC,cAAe,qEACfC,eAAgB,qEAChBC,gBAAiB,qEACjBC,SAAU,qEACVC,QAAS,6LACTC,MAAO,6LACPC,QAAS,6LACTC,OAAQ,6LACRC,QAAS,mYACTC,QAAS,6LACTC,QAAS,6LACTC,MAAO,mYACPC,OAAQ,qEACRC,UAAW,yDACXC,MAAO,qEACPC,UAAW,qEACXC,UAAW,qEACXC,WAAY,qEACZC,QAAS,qEACTC,aAAc,+DACdC,cAAe,+DACfC,WAAY,yDACZC,YAAa,+DACbC,cAAe,+DACfC,SAAU,+DACVC,SAAU,+DACVC,UAAW,+DACXC,UAAW,6CACXC,QAAS,2DA+BO,SAAU1pN,GAC1B,OAAOglN,GAAkB10M,GAAOtQ,GAClC,IAUA,IAAI2pN,GAAe,SACfC,GAAiB,WAEjBC,GAAmB,SAA0BpuP,GAC/C,OAAO,GAAQA,GAASA,EAAM6uB,KAAI,SAAU/e,GAC1C,OAAO0T,OAAO1T,EAChB,IAAK0T,OAAOxjB,EACd,EACI,GAAY,SAAmBgc,EAAG8E,GACpC,OAAO9E,EAAE,GAAK8E,EAAE,EAClB,EACI,GAAa,SAAoB9E,EAAG8E,GACtC,OAAOA,EAAE,GAAK9E,EAAE,EAClB,EASA,SAASqyO,GAAU13O,EAAOgY,EAAO2/N,GAC/B,IAAIhpM,EAiBJ,OAhBId,GAAS71B,KACPhY,EAAMs1N,OACRt9M,EAAQ7W,KAAKE,IAAI2W,EAAOhY,EAAMs1N,KAAKvtO,SAEtB,MAAX4vP,IACF3/N,EAAQ7W,KAAKC,IAAI4W,EAAO7W,KAAKwX,MAAMy+F,GAAKp3G,EAAMyhC,UAAYk2M,GAAW,MAGrEtiM,GAASr9B,KACX22B,EAAO32B,EAAM22B,KACb32B,EAAQA,EAAMtuB,UAEZ,GAASsuB,KACXA,EAAQhY,EAAMnQ,OAASqgP,GAAO,GAAal4N,GAAShY,EAAMnQ,MAAQwhN,GAAMkB,GAAYv6L,GAAS,GAAM,qDAC/F22B,IAAM32B,EAAQA,EAAM03G,MAAM/gF,KAEzB32B,CACT,CAUA,SAAS4/N,GAAW53O,EAAO0oM,EAAO1wL,GAChC,IAAI62B,EAAQ7uC,EAAM6uC,QAChBuyJ,EAAKvyJ,EAAM,GACXwyJ,EAAK1B,GAAK9wJ,GACVnH,EAAM,GAmBR,GAlBI05J,EAAKC,IACPxyJ,EAAQwyJ,EACRA,EAAKD,EACLA,EAAKvyJ,EACLnH,EAAM,IAER05J,EAAKjgM,KAAKwX,MAAMyoL,GAChBC,EAAKlgM,KAAKisJ,KAAKi0C,GAIfqH,EAAQA,EAAMxwL,KAAI,SAAU/e,GAC1B,MAAO,CAACA,EAAG6G,EAAM7G,GACnB,IAAG1B,QAAO,SAAUm2B,GAClB,OAAOwzK,GAAMxzK,EAAE,IAAMA,EAAE,IAAMyzK,CAC/B,IAAG5nM,KAAKiuC,GAAKxvB,KAAI,SAAU0V,GACzB,OAAOA,EAAE,EACX,IACI5V,EAAQ,GAAK0wL,EAAM3gN,OAAS,EAAG,CAEjC,IADA,IAAI8vP,EAAY,CAACnvC,EAAM,GAAI/I,GAAK+I,IACzBA,EAAM3gN,OAASiwB,GAAS0wL,EAAM3gN,QAAU,GAC7C2gN,EAAQA,EAAMjxM,QAAO,SAAUm2B,EAAGxlC,GAChC,QAASA,EAAI,EACf,IAEEsgN,EAAM3gN,OAAS,IACjB2gN,EAAQmvC,EAEZ,CACA,OAAOnvC,CACT,CAWA,SAASovC,GAAW93O,EAAOgY,GACzB,OAAOhY,EAAMs1N,KAAOsiB,GAAW53O,EAAOA,EAAMs1N,MAAQt1N,EAAM0oM,MAAQ1oM,EAAM0oM,MAAM1wL,GAAShY,EAAMyhC,QAC/F,CAiBA,SAAS,GAAWsnB,EAAQ/oD,EAAOgY,EAAOixL,EAAWwB,EAAYstC,GAC/D,IAAIloP,EAAOmQ,EAAMnQ,KACbqrC,EAASu8M,GACb,GAAI5nP,IAASqgP,IAAQzlC,IAAeylC,GAClCh1M,EAAS6tB,EAAO4wJ,WAAW1Q,QACtB,GAAIp5M,IAASwhN,IAAO5G,IAAe4G,GACxCn2K,EAAS6tB,EAAO0wJ,UAAUxQ,QACrB,GAAI8oC,GAAcliP,GAAO,CAC9B,IAAImoP,EAASjvL,EAAO0xJ,YAAYxR,GAChC,GAAI8uC,GAAU/3O,EAAMs1N,KAClBp6L,EAAS88M,MACJ,CACL,IAAIxrP,EAAOyrP,GAAQj4O,EAAOgY,GAAO,GACjCkjB,EAAS,SAAgBtN,GACvB,OAAOphC,EAAKohC,GAAKoqN,EAAOpqN,GAAK,EAC/B,CACF,CACF,MAAO,GAAI5tB,EAAM2nO,WAAY,CAE3B,IAAI16N,EAAIjN,EAAMyhC,SACdvG,EAAS6tB,EAAOiyJ,WAAW/tM,EAAE,GAAIA,EAAEA,EAAEllB,OAAS,GAAIiwB,EAAOixL,EAC3D,MAAWA,IACT/tK,EAAS6tB,EAAO7tB,OAAO+tK,IAEzB,OAAO/tK,CACT,CACA,SAAS+8M,GAAQj4O,EAAOgY,EAAO0P,GAC7B,IAAIghL,EAAQovC,GAAW93O,EAAOgY,GAC5B0R,EAAO1pB,EAAM0pB,OACb6hM,EAAOpqN,KAAKy/B,IAAIlX,GAChB97B,EAAIuT,KAAKE,IAAI,EAAGqoB,EAAO1R,EAAQ0wL,EAAM3gN,QAGnCyE,EAAO,SAAcygB,GACvB,IAAI7kB,EAAI6kB,EAAI9L,KAAK0B,IAAI6mB,EAAMvoB,KAAKwoB,MAAMxoB,KAAKy/B,IAAI3zB,GAAKs+M,IAEpD,OADInjO,EAAIshC,EAAOA,EAAO,KAAKthC,GAAKshC,GACzBthC,GAAKwF,CACd,EACA,OAAO85B,EAASghL,EAAMjxM,OAAOjL,GAAQA,CACvC,CACA,IAAIkjC,IAAW8/M,GAAW,CAAC,GAAG,OAAgBA,GAAU,GAAU,cAAc,OAAgBA,GAAUa,GAAU,eAAe,OAAgBb,GAAUc,GAAW,UAAWd,IAC/K,IAAWC,GAAW,CAAC,GAAG,OAAgBA,GAAU,GAAU,cAAc,OAAgBA,GAAUY,GAAU,UAAWZ,IAC/H,SAASyI,GAAYl4O,EAAOgY,GAC1B,OAAOhY,EAAMs1N,KAmBf,SAAmBA,GACjB,IAAI5tM,EAAS4tM,EAAKpnN,MAAM,GAAI,GAE5B,OADAwZ,EAAOrmB,IAAMs+L,GAAK21B,GACX5tM,CACT,CAvBsBywN,CAAUn4O,EAAMs1N,MAAQt1N,EAAMnQ,OAASigP,GAAMmI,GAAQj4O,EAAOgY,GAAO,GAAQ0X,GAAQ1vB,EAAMnQ,MAc/G,SAAyB0iP,GACvB,IAAI7qN,EAAS,EAAEj8B,KAAUgP,OAAO83O,GAEhC,OADA7qN,EAAOrmB,IAAO5V,IACPi8B,CACT,CAlBuH0wN,CAAgBp4O,EAAM0vB,GAAQ1vB,EAAMnQ,UAAYioP,GAAW93O,EAAOgY,EACzL,CAuBA,IAAIqgO,GAAkB,SAAyBr4O,GAC7C,OAAO0vB,GAAQ1vB,EAAMnQ,OAASmQ,EAAMs1N,IACtC,EACA,SAASgjB,GAAYvvL,EAAQ/oD,EAAOgY,EAAOnoB,EAAMo5M,EAAWwB,EAAYstC,GACtE,IAAI78M,EAAS,GAAQl7B,EAAMnQ,OAAS46M,IAAeylC,IAAQzlC,IAAe4G,GA1B5E,SAAyBtoJ,EAAQ/oD,EAAOipM,GACtC,IAGE7gN,EAHEwlC,EAAI5tB,EAAM,GAAQA,EAAMnQ,SAC1BimB,EAAI8X,EAAE7lC,OACJklB,EAAI6I,EAAI,EAAI8X,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAEhC,IAAKxlC,EAAI,EAAGA,EAAI0tB,IAAK1tB,EACnB6kB,EAAI9L,KAAKC,IAAI6L,EAAG2gB,EAAExlC,GAAKwlC,EAAExlC,EAAI,IAI/B,OAAO2gE,EAAOiyJ,WAAW,EAAG/tM,EAAG,GAAQg8L,EACzC,CAekFsvC,CAAgBxvL,EAAQ/oD,EAAOipM,GAAa,GAAWlgJ,EAAQ/oD,EAAOgY,EAAOixL,EAAWwB,EAAYstC,GACpL,OAAOloP,IAAS0nP,IAAgBc,GAAgBr4O,GAASw4O,GAAYt9M,GAAUrrC,IAAS2nP,GAAiBiB,GAAev9M,GAAUw9M,GAAYx9M,EAChJ,CACA,IAAIs9M,GAAc,SAAqBt9M,GACrC,OAAO,SAAU7xC,EAAO6F,EAAOu6B,GAC7B,IAAImxM,EAAQ,GAAInxM,EAAMv6B,EAAQ,GAAI,GAAIu6B,EAAMpoB,IAAM5V,MAChD21M,EAAKyE,GAAYx8M,EAAO6xC,GACxBmmK,EAAKwE,GAAY+0B,EAAO1/L,GAC1B,OAAOkmK,GAAMC,EAAKD,EAAK,MAAaC,EAAKA,EAAK,KAAOA,EAAK,KAAYD,CACxE,CACF,EACI,GAAM,SAAa/3M,EAAOsvP,GAC5B,OAAgB,MAATtvP,EAAgBA,EAAQsvP,CACjC,EACIF,GAAiB,SAAwBv9M,GAC3C,OAAO,SAAU7xC,EAAO6F,GACtB,OAAOA,EAAQgsC,EAAO7xC,GAAS,IACjC,CACF,EACIqvP,GAAc,SAAqBx9M,GACrC,OAAO,SAAU7xC,GACf,OAAO6xC,EAAO7xC,EAChB,CACF,EACIw8M,GAAc,SAAqBx8M,EAAO6xC,GAC5C,OAAO/xB,OAAOqe,SAASn+B,GAAS6xC,EAAO7xC,GAAS,IAClD,EAiBA,SAAS,GAAO0/D,EAAQ/oD,EAAOipM,EAAWwB,GACxC,IAAI56M,EAAO46M,GAAczqM,EAAMnQ,KAM/B,OAHI,GAASo5M,IAlYf,SAAoBlhL,GAClB,OAAO4pN,GAAQ5pN,EAAKgpN,GACtB,CAgY6B6H,CAAW/oP,KACpCo5M,EAAYA,EAAUn8L,QAAQ,MAAO,MAAMA,QAAQ,MAAO,OAEpDm8L,GAAap5M,IAASqgP,GAAgDjnC,GAAap5M,IAASwhN,GAAiDinC,GAAYvvL,EAAQ/oD,EAAO,EAAG,KAAMipM,EAAWwB,GAAY,GAAtG1hJ,EAAO0wJ,UAAU,wBAAtF1wJ,EAAO4wJ,WAAW,mBACzD,CACA,SAASk/B,GAAc9vL,EAAQ/oD,EAAOo0I,GACpCA,EAAMA,GAAO,CAAC,EACd,IAAI/yI,EAAMF,KAAKE,IAAI,EAAG+yI,EAAImkF,QAAU,GAClCloB,EAAM,GAAOtnJ,EAAQ/oD,EAAOo0I,EAAIl5G,OAAQk5G,EAAIq2D,YAG9C,GAAIqnC,GAAe9xO,EAAMnQ,MAAO,CAC9B,IAAIsJ,EAAI++O,GAAYl4O,GAAOkO,MAAM,GAAGgK,IAAIm4L,GACtCv6L,EAAI3c,EAAEpR,OACR,MAAO,GAAG0S,OAAOqb,EAAG,YAAYrb,OAAa,IAANqb,EAAU,IAAM,MAAO,MAAMrb,OAAOtB,EAAEoX,KAAK,MACpF,CAGK,GAAIshO,GAAW7xO,EAAMnQ,MAAO,CAC/B,IAAIod,EAAIjN,EAAMyhC,SACZrC,EAAKnyB,EAAEllB,OACP+wP,EAAK15M,EAAK/9B,EAAM4L,EAAEiB,MAAM,EAAG7M,EAAM,GAAG6W,IAAIm4L,GAAK9/L,KAAK,MAAQ,iBAAmBtD,EAAEiB,OAAO,GAAGgK,IAAIm4L,GAAOpjM,EAAEiL,IAAIm4L,GAAK9/L,KAAK,MACtH,MAAO,GAAG9V,OAAO2kC,EAAI,UAAU3kC,OAAc,IAAP2kC,EAAW,GAAK,IAAK,MAAM3kC,OAAOq+O,EAC1E,CAIE,IAAItzN,EAAKxlB,EAAMyhC,SACf,MAAO,eAAehnC,OAAO41M,EAAI7qL,EAAG,IAAK,QAAQ/qB,OAAO41M,EAAI1Q,GAAKn6K,IAErE,CM9xBA,SAAS,GAA2BlZ,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,GAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,GAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,GAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAQlL,IAAI24B,GAAc,EAIlB,IAAIC,GAAgB,KACpB,SAAS38I,GAAWhzG,GAClB,OAAOA,GAASA,EAAMwiF,QACxB,CACA,SAASotK,GAAYv9M,EAAGw9M,EAAMxvN,GAC5B,IAAI75B,EAAO6rC,EAAEmwC,SACTjxE,EAAK8gC,EAAE9gC,GACTgyB,EAAkB,WAAT/8B,EAAoBmpP,GAAgB,GAyB/C,OAtBKp+O,IACHA,EAAK8gC,EAAE9gC,GAAK,YAAcm+O,KACb,WAATlpP,GACF6rC,EAAEpyB,GAAK,GAAIoyB,EAAEpyB,GAAI,IACjBoyB,EAAEnyB,GAAK,GAAImyB,EAAEnyB,GAAI,IACjBmyB,EAAE7mB,GAAK,GAAI6mB,EAAE7mB,GAAI,GACjB6mB,EAAElyB,GAAK,GAAIkyB,EAAElyB,GAAI,IACjBkyB,EAAEjyB,GAAK,GAAIiyB,EAAEjyB,GAAI,IACjBiyB,EAAE5mB,GAAK,GAAI4mB,EAAE5mB,GAAI,IACjB8X,EAASosN,KAETt9M,EAAEpyB,GAAK,GAAIoyB,EAAEpyB,GAAI,GACjBoyB,EAAEnyB,GAAK,GAAImyB,EAAEnyB,GAAI,GACjBmyB,EAAElyB,GAAK,GAAIkyB,EAAElyB,GAAI,GACjBkyB,EAAEjyB,GAAK,GAAIiyB,EAAEjyB,GAAI,KAKrByvO,EAAKt+O,GAAM8gC,EAGJ,QAAUhS,GAAQ,IAAM,IAAMkD,EAAShyB,EAAK,GACrD,CACA,SAAS,GAAIrO,EAAK+gC,GAChB,OAAc,MAAP/gC,EAAcA,EAAM+gC,CAC7B,CACA,SAAS6rN,GAASv8N,EAAIjK,GACpB,IACEk5D,EADEutK,EAAQ,GAEZ,OAAOvtK,EAAW,CAChBA,SAAU,SACVviE,GAAIsT,EAAKA,EAAG,GAAK,EACjBrT,GAAIqT,EAAKA,EAAG,GAAK,EACjBpT,GAAImJ,EAAKA,EAAG,GAAK,EACjBlJ,GAAIkJ,EAAKA,EAAG,GAAK,EACjBymO,MAAOA,EACPltP,KAAM,SAAcm+E,EAAQpvC,GAK1B,OAJAm+M,EAAM3xP,KAAK,CACT4iF,OAAQA,EACRpvC,MAAOA,IAEF4wC,CACT,EAEJ,CACA,IAAIwtK,GAAS,CACX,MAAS,CACPvT,MjGtBW,SAAUzrN,GACvB,OAAO,IAAImkN,GAAMnkN,EACnB,GiGsBE,eAAgB,CACdyrN,M/FjBW,SAAUzrN,GACvB,OAAO,IAAIokN,GAAYpkN,EACzB,G+FiBE,aAAc,CACZyrN,M9FnCW,SAAUzrN,GACvB,OAAO,IAAIqkN,GAAUrkN,EACvB,G8FmCE,OAAU,CACRyrN,MAAO,GACPhG,QAAS,OACTz2O,MAAO,KAET,SAAY,CACVy8O,MAAO,GACPhG,QAAS,UACTz2O,MAAO,GAET,gBAAiB,CACfy8O,MAAO,GACPhG,QAAS,UACTz2O,MAAO,GAET,kBAAmB,CACjBy8O,MAAO,GACPhG,QAAS,UACTz2O,MAAO,GAET,cAAe,CACby8O,MAAO,GACPhG,QAAS,QACTz2O,MAAO,IAET,qBAAsB,CACpBy8O,MAAO,GACPhG,QAAS,QACTz2O,MAAO,IAET,mBAAoB,CAClBy8O,MAAO,GACPhG,QAAS,QACTz2O,MAAO,IAET,OAAU,CACRy8O,MAAO,IAET,gBAAiB,CACfA,MnFvGW,SAAUzrN,GACvB,OAAO,IAAI0nN,GAAa1nN,EAC1B,GmFuGE,SAAY,CACVqkK,WlFbG,SAAmBrkK,GACxB,OAAO,IAAIioN,GAAUjoN,EACvB,EkFYIskK,SlFjBG,SAAmBtkK,GACxB,OAAO,IAAIgoN,GAAUhoN,EACvB,GkFiBE,QAAW,CACTyrN,MjFtEW,SAAUzrN,GACvB,OAAO,IAAImoN,GAAQnoN,EACrB,GiFsEE,KAAQ,CACNyrN,MhFrFW,SAAUzrN,GACvB,OAAO,IAAIqoN,GAAKroN,EAAS,GAC3B,GgFqFE,aAAc,CACZyrN,MhFlFG,SAAmBzrN,GACxB,OAAO,IAAIqoN,GAAKroN,EAAS,EAC3B,GgFkFE,cAAe,CACbyrN,MhFxFG,SAAoBzrN,GACzB,OAAO,IAAIqoN,GAAKroN,EAAS,EAC3B,IgFyFA,SAASi/N,GAAOzpP,EAAM0pP,EAAazZ,GACjC,IAAIljL,EAAQ,GAAey8L,GAAQxpP,IAASwpP,GAAOxpP,GACjDi2O,EAAQ,KAOV,OANIlpL,IACFkpL,EAAQlpL,EAAMkpL,OAASlpL,EAAM28L,GAAe,YACxC38L,EAAMkjL,SAAsB,MAAXA,IACnBgG,EAAQA,EAAMlpL,EAAMkjL,SAASA,KAG1BgG,CACT,CACA,IAAI15N,GAAc,CAChBnP,EAAG,EACHuP,EAAG,EACHD,EAAG,EACHpT,EAAG,EACHwT,EAAG,EACHN,EAAG,EACHrH,EAAG,EACHyH,EAAG,EACHxhB,EAAG,EACHoa,EAAG,GAEDm0O,GAAiB,mCACjBC,GAAgB,iEAChBC,GAAe,uBACfC,GAAc,QAClB,SAAS,GAAM5rP,GACb,IAAI6rP,EAAW,GAkCf,OAjCc7rP,EAAKo0B,MAAMq3N,KAAmB,IACpClqP,SAAQ,SAAUs5B,GACxB,IAAIzQ,EAAMyQ,EAAI,GACV/4B,EAAOsoB,EAAIrS,cAGX+zO,EAAaztO,GAAYvc,GACzB2Y,EA4BR,SAAqB3Y,EAAMgqP,EAAYnzO,GAErC,IADA,IAAI8B,EAAS,GACJtZ,EAAQ,EAAG2qP,GAAc3qP,EAAQwX,EAAQ3e,QAChD,IAAK,IAAIK,EAAI,EAAGA,EAAIyxP,IAAczxP,EAAG,CACnC,IAAIsnE,EAAmB,MAAT7/D,GAAuB,IAANzH,GAAiB,IAANA,EAAyBqxP,GAAdE,GACjDx3N,EAAQzb,EAAQwH,MAAMhf,GAAOizB,MAAMutC,GACvC,GAAc,OAAVvtC,EACF,MAAMgN,MAAM,8CAEdjgC,GAASizB,EAAM,GAAGp6B,OAClBygB,EAAO/gB,MAAM06B,EAAM,IACnB,IAAI23N,EAAKpzO,EAAQwH,MAAMhf,GAAOizB,MAAMu3N,IACzB,OAAPI,IACF5qP,GAAS4qP,EAAG,GAAG/xP,OAEnB,CAEF,OAAOygB,CACT,CA9CiBuxO,CAAYlqP,EAAMgqP,EAAYjxN,EAAI1a,MAAM,GAAG6M,QACpD/C,EAAQxP,EAAOzgB,OAGnB,GAAIiwB,EAAQ6hO,GAAc7hO,GAASA,EAAQ6hO,GAAe,EACxD,MAAM1qN,MAAM,+CAOd,GAHAyqN,EAASnyP,KAAK,CAAC0wB,GAAK1d,QAAO,QAAmB+N,EAAO0F,MAAM,EAAG2rO,MAG1D7hO,IAAU6hO,EAAd,CAKa,MAAThqP,IACFsoB,EAAc,MAARA,EAAc,IAAM,KAI5B,IAAK,IAAI/vB,EAAIyxP,EAAYzxP,EAAI4vB,EAAO5vB,GAAKyxP,EACvCD,EAASnyP,KAAK,CAAC0wB,GAAK1d,QAAO,QAAmB+N,EAAO0F,MAAM9lB,EAAGA,EAAIyxP,KATpE,CAWF,IACOD,CACT,CAoBA,IAAII,GAAW74O,KAAK+B,GAAK,IAErB+2O,GAAS94O,KAAK+B,GAAK,EACnBg3O,GAAgB,EAAV/4O,KAAK+B,GACXi3O,GAAYh5O,KAAK2C,KAAK,GAAK,EAC3Bs2O,GAAe,CAAC,EAChBC,GAAc,CAAC,EACf9pO,GAAO,GAAGA,KAqDd,SAAS+pO,GAAO9xO,GACd,IAAIuf,EAAMxX,GAAKznB,KAAK0f,GACpB,GAAI6xO,GAAYtyN,GACd,OAAOsyN,GAAYtyN,GAErB,IAAInf,EAAKJ,EAAO,GACdK,EAAKL,EAAO,GACZ+xO,EAAM/xO,EAAO,GACbgyO,EAAMhyO,EAAO,GACbM,EAAKN,EAAO,GACZO,EAAKP,EAAO,GACZiyO,EAASjyO,EAAO,GAChBkyO,EAASlyO,EAAO,GACd6B,EAAMqwO,EAAS5xO,EACfwB,GAAOmwO,EAAS1xO,EAChByB,EAAMiwO,EAAS3xO,EACf2B,EAAMiwO,EAAS3xO,EACf4xO,EAAUx5O,KAAKkC,IAAIk3O,GACnBK,EAAUz5O,KAAKoC,IAAIg3O,GACnBM,EAAU15O,KAAKkC,IAAIm3O,GACnBM,EAAU35O,KAAKoC,IAAIi3O,GACnBO,EAAU,IAAOP,EAAMD,GACvBS,EAAY75O,KAAKoC,IAAc,GAAVw3O,GACrB9vP,EAAI,EAAI,EAAI+vP,EAAYA,EAAY75O,KAAKoC,IAAIw3O,GAC7CzxO,EAAKV,EAAK+xO,EAAU1vP,EAAI2vP,EACxBrxO,EAAKV,EAAK+xO,EAAU3vP,EAAI0vP,EACxB5nO,EAAKnK,EAAKiyO,EACV7nO,EAAKnK,EAAKiyO,EACVtxO,EAAKuJ,EAAK9nB,EAAI6vP,EACdrxO,EAAKuJ,EAAK/nB,EAAI4vP,EAClB,OAAOR,GAAYtyN,GAAO,CAAC1d,EAAMf,EAAKgB,EAAMf,EAAIiB,EAAMlB,EAAKmB,EAAMlB,EAAIc,EAAMb,EAAKc,EAAMb,EAAIe,EAAMhB,EAAKiB,EAAMhB,EAAIY,EAAM0I,EAAKzI,EAAM0I,EAAIxI,EAAMuI,EAAKtI,EAAMuI,EACvJ,CACA,IAAIqF,GAAO,CAAC,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACnC,SAAS06N,GAAQpkP,EAASssP,EAAIC,GAC5B,IAAI7uO,EAAIgM,GAAK,GAAK1pB,EAAQ,GAC1B,GAAU,MAAN0d,GAAmB,MAANA,EACfgM,GAAK,GAAK4iO,EAAKtsP,EAAQ,GACvB0pB,GAAK,GAAK6iO,EAAKvsP,EAAQ,GACvB0pB,GAAK,GAAK1pB,EAAQ,GAClB0pB,GAAK,GAAK1pB,EAAQ,GAClB0pB,GAAK,GAAK1pB,EAAQ,GAClB0pB,GAAK,GAAK4iO,EAAKtsP,EAAQ,GACvB0pB,GAAK,GAAK6iO,EAAKvsP,EAAQ,QAClB,GAAU,MAAN0d,GAAmB,MAANA,EACtBgM,GAAK,GAAK4iO,EAAKtsP,EAAQ,QAClB,GAAU,MAAN0d,GAAmB,MAANA,EACtBgM,GAAK,GAAK6iO,EAAKvsP,EAAQ,QAEvB,IAAK,IAAIvG,EAAI,EAAG0tB,EAAInnB,EAAQ5G,OAAQK,EAAI0tB,IAAK1tB,EAC3CiwB,GAAKjwB,IAAMA,EAAI,GAAK,EAAI6yP,EAAKC,GAAMvsP,EAAQvG,GAG/C,OAAOiwB,EACT,CACA,SAAS8iO,GAAW9gO,EAAStsB,EAAMye,EAAGvhB,EAAGgwP,EAAIC,GAC3C,IAAIvsP,EAWFysP,EACAC,EACAC,EACAC,EAZA5yN,EAAW,KACXx2B,EAAI,EAEJC,EAAI,EAEJopP,EAAW,EAEXC,EAAW,EAMXC,EAAU,EACVC,EAAU,EACH,MAALnvO,IAAWA,EAAI,GACV,MAALvhB,IAAWA,EAAI,GACT,MAANgwP,IAAYA,EAAK,GACX,MAANC,IAAYA,EAAKD,GACjB5gO,EAAQuhO,WAAWvhO,EAAQuhO,YAC/B,IAAK,IAAIxzP,EAAI,EAAGs5B,EAAM3zB,EAAKhG,OAAQK,EAAIs5B,IAAOt5B,EAAG,CAK/C,OAJAuG,EAAUZ,EAAK3F,GACJ,IAAP6yP,GAAmB,IAAPC,IACdvsP,EAAUokP,GAAQpkP,EAASssP,EAAIC,IAEzBvsP,EAAQ,IAGd,IAAK,IAEHwD,GAAKxD,EAAQ,GACbyD,GAAKzD,EAAQ,GACb0rB,EAAQilN,OAAOntO,EAAIqa,EAAGpa,EAAInH,GAC1B,MACF,IAAK,IAEHkH,EAAIxD,EAAQ,GACZyD,EAAIzD,EAAQ,GACZ0rB,EAAQilN,OAAOntO,EAAIqa,EAAGpa,EAAInH,GAC1B,MACF,IAAK,IAEHkH,GAAKxD,EAAQ,GACb0rB,EAAQilN,OAAOntO,EAAIqa,EAAGpa,EAAInH,GAC1B,MACF,IAAK,IAEHkH,EAAIxD,EAAQ,GACZ0rB,EAAQilN,OAAOntO,EAAIqa,EAAGpa,EAAInH,GAC1B,MACF,IAAK,IAEHmH,GAAKzD,EAAQ,GACb0rB,EAAQilN,OAAOntO,EAAIqa,EAAGpa,EAAInH,GAC1B,MACF,IAAK,IAEHmH,EAAIzD,EAAQ,GACZ0rB,EAAQilN,OAAOntO,EAAIqa,EAAGpa,EAAInH,GAC1B,MACF,IAAK,IAIHywP,EAFAvpP,GAAKxD,EAAQ,GAGbgtP,EAFAvpP,GAAKzD,EAAQ,GAGb0rB,EAAQta,OAAO5N,EAAIqa,EAAGpa,EAAInH,GAC1B,MACF,IAAK,IAIHywP,EAFAvpP,EAAIxD,EAAQ,GAGZgtP,EAFAvpP,EAAIzD,EAAQ,GAGZ0rB,EAAQta,OAAO5N,EAAIqa,EAAGpa,EAAInH,GAC1B,MACF,IAAK,IAEHmwP,EAAQjpP,EAAIxD,EAAQ,GACpB0sP,EAAQjpP,EAAIzD,EAAQ,GACpB6sP,EAAWrpP,EAAIxD,EAAQ,GACvB8sP,EAAWrpP,EAAIzD,EAAQ,GACvB0rB,EAAQ8jN,cAAchsO,EAAIxD,EAAQ,GAAK6d,EAEvCpa,EAAIzD,EAAQ,GAAK1D,EAEjBuwP,EAAWhvO,EAEXivO,EAAWxwP,EAEXmwP,EAAQ5uO,EAAG6uO,EAAQpwP,GACnBkH,EAAIipP,EACJhpP,EAAIipP,EACJ,MACF,IAAK,IAEHlpP,EAAIxD,EAAQ,GACZyD,EAAIzD,EAAQ,GACZ6sP,EAAW7sP,EAAQ,GACnB8sP,EAAW9sP,EAAQ,GACnB0rB,EAAQ8jN,cAAcxvO,EAAQ,GAAK6d,EAAG7d,EAAQ,GAAK1D,EAAGuwP,EAAWhvO,EAAGivO,EAAWxwP,EAAGkH,EAAIqa,EAAGpa,EAAInH,GAC7F,MACF,IAAK,IAGHmwP,EAAQjpP,EAAIxD,EAAQ,GACpB0sP,EAAQjpP,EAAIzD,EAAQ,GAEpB6sP,EAAW,EAAIrpP,EAAIqpP,EACnBC,EAAW,EAAIrpP,EAAIqpP,EACnBphO,EAAQ8jN,cAAcqd,EAAWhvO,EAAGivO,EAAWxwP,EAAGkH,EAAIxD,EAAQ,GAAK6d,EAAGpa,EAAIzD,EAAQ,GAAK1D,EAAGmwP,EAAQ5uO,EAAG6uO,EAAQpwP,GAM7GuwP,EAAWrpP,EAAIxD,EAAQ,GACvB8sP,EAAWrpP,EAAIzD,EAAQ,GACvBwD,EAAIipP,EACJhpP,EAAIipP,EACJ,MACF,IAAK,IAEHD,EAAQzsP,EAAQ,GAChB0sP,EAAQ1sP,EAAQ,GAEhB6sP,EAAW,EAAIrpP,EAAIqpP,EACnBC,EAAW,EAAIrpP,EAAIqpP,EACnBphO,EAAQ8jN,cAAcqd,EAAWhvO,EAAGivO,EAAWxwP,EAAG0D,EAAQ,GAAK6d,EAAG7d,EAAQ,GAAK1D,EAAGmwP,EAAQ5uO,EAAG6uO,EAAQpwP,GACrGkH,EAAIipP,EACJhpP,EAAIipP,EAKJG,EAAW7sP,EAAQ,GACnB8sP,EAAW9sP,EAAQ,GACnB,MACF,IAAK,IAGHysP,EAAQjpP,EAAIxD,EAAQ,GACpB0sP,EAAQjpP,EAAIzD,EAAQ,GACpB6sP,EAAWrpP,EAAIxD,EAAQ,GACvB8sP,EAAWrpP,EAAIzD,EAAQ,GACvB0rB,EAAQwhO,iBAAiBL,EAAWhvO,EAAGivO,EAAWxwP,EAAGmwP,EAAQ5uO,EAAG6uO,EAAQpwP,GACxEkH,EAAIipP,EACJhpP,EAAIipP,EACJ,MACF,IAAK,IAEHD,EAAQzsP,EAAQ,GAChB0sP,EAAQ1sP,EAAQ,GAChB0rB,EAAQwhO,iBAAiBltP,EAAQ,GAAK6d,EAAG7d,EAAQ,GAAK1D,EAAGmwP,EAAQ5uO,EAAG6uO,EAAQpwP,GAC5EkH,EAAIipP,EACJhpP,EAAIipP,EACJG,EAAW7sP,EAAQ,GACnB8sP,EAAW9sP,EAAQ,GACnB,MACF,IAAK,IAIHysP,EAAQjpP,EAAIxD,EAAQ,GACpB0sP,EAAQjpP,EAAIzD,EAAQ,GACgB,OAAhCg6B,EAAS,GAAGxG,MAAM,WAGpBq5N,EAAWrpP,EACXspP,EAAWrpP,GACc,MAAhBu2B,EAAS,IAElB6yN,EAAW,EAAIrpP,EAAImpP,EACnBG,EAAW,EAAIrpP,EAAImpP,GACM,MAAhB5yN,EAAS,KAElB6yN,EAAW,EAAIrpP,EAAIqpP,EACnBC,EAAW,EAAIrpP,EAAIqpP,GAErBH,EAAeE,EACfD,EAAeE,EACfphO,EAAQwhO,iBAAiBL,EAAWhvO,EAAGivO,EAAWxwP,EAAGmwP,EAAQ5uO,EAAG6uO,EAAQpwP,GAExEmH,EAAIipP,EACJG,GAFArpP,EAAIipP,GAEWzsP,EAAQ,GACvB8sP,EAAWrpP,EAAIzD,EAAQ,GACvB,MACF,IAAK,IACHysP,EAAQzsP,EAAQ,GAChB0sP,EAAQ1sP,EAAQ,GAGhB6sP,EAAW,EAAIrpP,EAAIqpP,EACnBC,EAAW,EAAIrpP,EAAIqpP,EACnBphO,EAAQwhO,iBAAiBL,EAAWhvO,EAAGivO,EAAWxwP,EAAGmwP,EAAQ5uO,EAAG6uO,EAAQpwP,GACxEkH,EAAIipP,EACJhpP,EAAIipP,EACJ,MACF,IAAK,IACHS,GAAQzhO,EAASloB,EAAIqa,EAAGpa,EAAInH,EAAG,CAAC0D,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,GAAKwD,EAAIqa,EAAG7d,EAAQ,GAAKyD,EAAInH,IACjIkH,GAAKxD,EAAQ,GACbyD,GAAKzD,EAAQ,GACb,MACF,IAAK,IACHmtP,GAAQzhO,EAASloB,EAAIqa,EAAGpa,EAAInH,EAAG,CAAC0D,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,GAAK6d,EAAG7d,EAAQ,GAAK1D,IACzHkH,EAAIxD,EAAQ,GACZyD,EAAIzD,EAAQ,GACZ,MACF,IAAK,IACL,IAAK,IACHwD,EAAIupP,EACJtpP,EAAIupP,EACJthO,EAAQklN,YAGZ52M,EAAWh6B,CACb,CACF,CACA,SAASmtP,GAAQzhO,EAASloB,EAAGC,EAAG2pP,GAgB9B,IAfA,IAAI5pO,EAtUN,SAAkBhgB,EAAGC,EAAG0W,EAAIC,EAAI68D,EAAOo2K,EAAOC,EAASnX,EAAIC,GACzD,IAAIh9M,EAAMxX,GAAKznB,KAAKhB,WACpB,GAAIsyP,GAAaryN,GACf,OAAOqyN,GAAaryN,GAEtB,IAAIm0N,EAAKD,EAAUjC,GACfS,EAASt5O,KAAKoC,IAAI24O,GAClBxB,EAASv5O,KAAKkC,IAAI64O,GAGlB5nO,EAAKomO,GAAU5V,EAAK3yO,GAAK,GAAMsoP,GAAU1V,EAAK3yO,GAAK,GACnDmiB,EAAKmmO,GAAU3V,EAAK3yO,GAAK,GAAMqoP,GAAU3V,EAAK3yO,GAAK,GACnDgqP,EAAK7nO,EAAKA,IAJdxL,EAAK3H,KAAKoG,IAAIuB,IAIWA,GAAMyL,EAAKA,IAHpCxL,EAAK5H,KAAKoG,IAAIwB,IAGiCA,GAC3CozO,EAAK,IAEPrzO,GADAqzO,EAAKh7O,KAAK2C,KAAKq4O,GAEfpzO,GAAMozO,GAER,IAAI9xO,EAAMqwO,EAAS5xO,EACfwB,EAAMmwO,EAAS3xO,EACf0B,GAAOiwO,EAAS1xO,EAChB0B,EAAMiwO,EAAS3xO,EACf6K,EAAKvJ,EAAMy6N,EAAKx6N,EAAMy6N,EACtBlxN,EAAKrJ,EAAMs6N,EAAKr6N,EAAMs6N,EACtBz7N,EAAKe,EAAMlY,EAAImY,EAAMlY,EACrBmX,EAAKiB,EAAMrY,EAAIsY,EAAMrY,EAErBgqP,EAAa,IADR9yO,EAAKsK,IAAOtK,EAAKsK,IAAOrK,EAAKsK,IAAOtK,EAAKsK,IACzB,IACrBuoO,EAAa,IAAGA,EAAa,GACjC,IAAIC,EAAUl7O,KAAK2C,KAAKs4O,GACpBJ,GAASp2K,IAAOy2K,GAAWA,GAC/B,IAAIC,EAAK,IAAO1oO,EAAKtK,GAAM+yO,GAAW9yO,EAAKsK,GACvC0oO,EAAK,IAAO1oO,EAAKtK,GAAM8yO,GAAW/yO,EAAKsK,GACvC2mO,EAAMp5O,KAAKqG,MAAMqM,EAAK0oO,EAAI3oO,EAAK0oO,GAE/BE,EADMr7O,KAAKqG,MAAM+B,EAAKgzO,EAAIjzO,EAAKgzO,GAChB/B,EACfiC,EAAS,GAAe,IAAVR,EAChBQ,GAAUtC,GACDsC,EAAS,GAAe,IAAVR,IACvBQ,GAAUtC,IAIZ,IAFA,IAAIuC,EAAOt7O,KAAKisJ,KAAKjsJ,KAAKoG,IAAIi1O,GAAUvC,GAAS,QAC7CngP,EAAS,GACJ1R,EAAI,EAAGA,EAAIq0P,IAAQr0P,EAAG,CAC7B,IAAIs0P,EAAMnC,EAAMnyP,EAAIo0P,EAASC,EACzBE,EAAMpC,GAAOnyP,EAAI,GAAKo0P,EAASC,EACnC3iP,EAAO1R,GAAK,CAACk0P,EAAIC,EAAIG,EAAKC,EAAK7zO,EAAIC,EAAI0xO,EAAQC,EACjD,CACA,OAAON,GAAaryN,GAAOjuB,CAC7B,CAqRYwO,CAASyzO,EAAO,GAE1BA,EAAO,GAEPA,EAAO,GAEPA,EAAO,GAEPA,EAAO,GAEPA,EAAO,GAEPA,EAAO,GAEP5pP,EAAGC,GACMhK,EAAI,EAAGA,EAAI+pB,EAAIpqB,SAAUK,EAAG,CACnC,IAAIw0P,EAAMtC,GAAOnoO,EAAI/pB,IACrBiyB,EAAQ8jN,cAAcye,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GACpE,CACF,CACA,IAAIC,GAAQ,kBACRC,GAAW,CACb,OAAU,CACR9tP,KAAM,SAAcqrB,EAASmR,GAC3B,IAAIplB,EAAIjF,KAAK2C,KAAK0nB,GAAQ,EAC1BnR,EAAQta,OAAOqG,EAAG,GAClBiU,EAAQusL,IAAI,EAAG,EAAGxgM,EAAG,EAAG8zO,GAC1B,GAEF,MAAS,CACPlrP,KAAM,SAAcqrB,EAASmR,GAC3B,IAAIplB,EAAIjF,KAAK2C,KAAK0nB,GAAQ,EACxBxmB,EAAIoB,EAAI,IACViU,EAAQta,QAAQqG,GAAIpB,GACpBqV,EAAQilN,QAAQl5N,EAAGpB,GACnBqV,EAAQilN,QAAQt6N,EAAGA,GACnBqV,EAAQilN,QAAQt6N,EAAGoB,GACnBiU,EAAQilN,OAAOt6N,EAAGoB,GAClBiU,EAAQilN,OAAOt6N,EAAGA,GAClBqV,EAAQilN,OAAOl5N,EAAGpB,GAClBqV,EAAQilN,OAAOl5N,GAAIpB,GACnBqV,EAAQilN,OAAOt6N,GAAIA,GACnBqV,EAAQilN,OAAOt6N,GAAIoB,GACnBiU,EAAQilN,QAAQt6N,GAAIoB,GACpBiU,EAAQilN,QAAQt6N,GAAIA,GACpBqV,EAAQklN,WACV,GAEF,QAAW,CACTvwO,KAAM,SAAcqrB,EAASmR,GAC3B,IAAIplB,EAAIjF,KAAK2C,KAAK0nB,GAAQ,EAC1BnR,EAAQta,QAAQqG,EAAG,GACnBiU,EAAQilN,OAAO,GAAIl5N,GACnBiU,EAAQilN,OAAOl5N,EAAG,GAClBiU,EAAQilN,OAAO,EAAGl5N,GAClBiU,EAAQklN,WACV,GAEF,OAAU,CACRvwO,KAAM,SAAcqrB,EAASmR,GAC3B,IAAI5W,EAAIzT,KAAK2C,KAAK0nB,GAChBr5B,GAAKyiB,EAAI,EACXyF,EAAQ3S,KAAKvV,EAAGA,EAAGyiB,EAAGA,EACxB,GAEF,MAAS,CACP5lB,KAAM,SAAcqrB,EAASmR,GAC3B,IAAIplB,EAAIjF,KAAK2C,KAAK0nB,GAAQ,EACxBxmB,EAAIoB,EAAI,EACRnb,EAAImb,EAAI,IACRjN,EAAIiN,EAAI,EACViU,EAAQta,QAAQiF,EAAGoB,GACnBiU,EAAQilN,OAAOt6N,EAAGoB,GAClBiU,EAAQilN,OAAOt6N,GAAI7L,GACnBkhB,EAAQilN,OAAOr0O,GAAIkO,GACnBkhB,EAAQilN,OAAO,GAAIl5N,GACnBiU,EAAQilN,QAAQr0O,GAAIkO,GACpBkhB,EAAQilN,QAAQt6N,GAAI7L,GACpBkhB,EAAQklN,WACV,GAEF,MAAS,CACPvwO,KAAM,SAAcqrB,EAASmR,GAC3B,IAAIplB,EAAIjF,KAAK2C,KAAK0nB,GAAQ,EACxBjf,EAAI4tO,GAAY/zO,EAChBkG,EAAIC,EAAInG,EAAIy2O,GACZ1yO,EAAI/D,EAAI,EACViU,EAAQta,OAAO,GAAIwM,EAAID,GACvB+N,EAAQilN,QAAQn1N,EAAGoC,EAAID,GACvB+N,EAAQilN,OAAOn1N,EAAGoC,EAAID,GACtB+N,EAAQklN,WACV,GAEF,SAAY,CACVvwO,KAAM,SAAcqrB,EAASmR,GAC3B,IAAIplB,EAAIjF,KAAK2C,KAAK0nB,GAAQ,EACxBjf,EAAI4tO,GAAY/zO,EAChBkG,EAAIC,EAAInG,EAAIy2O,GACdxiO,EAAQta,OAAO,GAAIwM,EAAID,GACvB+N,EAAQilN,QAAQl5N,EAAGmG,EAAID,GACvB+N,EAAQilN,OAAOl5N,EAAGmG,EAAID,GACtB+N,EAAQklN,WACV,GAEF,cAAe,CACbvwO,KAAM,SAAcqrB,EAASmR,GAC3B,IAAIplB,EAAIjF,KAAK2C,KAAK0nB,GAAQ,EACxBjf,EAAI4tO,GAAY/zO,EAClBiU,EAAQta,OAAO,GAAIwM,GACnB8N,EAAQilN,QAAQl5N,EAAGmG,GACnB8N,EAAQilN,OAAOl5N,EAAGmG,GAClB8N,EAAQklN,WACV,GAEF,gBAAiB,CACfvwO,KAAM,SAAcqrB,EAASmR,GAC3B,IAAIplB,EAAIjF,KAAK2C,KAAK0nB,GAAQ,EACxBjf,EAAI4tO,GAAY/zO,EAClBiU,EAAQta,OAAO,EAAGwM,GAClB8N,EAAQilN,QAAQl5N,GAAImG,GACpB8N,EAAQilN,OAAOl5N,GAAImG,GACnB8N,EAAQklN,WACV,GAEF,iBAAkB,CAChBvwO,KAAM,SAAcqrB,EAASmR,GAC3B,IAAIplB,EAAIjF,KAAK2C,KAAK0nB,GAAQ,EACxBjf,EAAI4tO,GAAY/zO,EAClBiU,EAAQta,OAAOwM,EAAG,GAClB8N,EAAQilN,QAAQ/yN,GAAInG,GACpBiU,EAAQilN,QAAQ/yN,EAAGnG,GACnBiU,EAAQklN,WACV,GAEF,gBAAiB,CACfvwO,KAAM,SAAcqrB,EAASmR,GAC3B,IAAIplB,EAAIjF,KAAK2C,KAAK0nB,GAAQ,EACxBjf,EAAI4tO,GAAY/zO,EAClBiU,EAAQta,QAAQwM,EAAG,GACnB8N,EAAQilN,OAAO/yN,GAAInG,GACnBiU,EAAQilN,OAAO/yN,EAAGnG,GAClBiU,EAAQklN,WACV,GAEF,OAAU,CACRvwO,KAAM,SAAcqrB,EAASmR,GAC3B,IAAIplB,EAAIjF,KAAK2C,KAAK0nB,GAAQ,EAC1BnR,EAAQta,QAAQqG,EAAG,GACnBiU,EAAQilN,OAAOl5N,EAAG,EACpB,IAGJ,SAAS,GAAQwnB,GACf,OAAO,GAAekvN,GAAUlvN,GAAKkvN,GAASlvN,GAGhD,SAAsB7/B,GACpB,IAAK,GAAe6U,GAAQ7U,GAAO,CACjC,IAAIgvP,EAAS,GAAMhvP,GACnB6U,GAAO7U,GAAQ,CACbiB,KAAM,SAAcqrB,EAASmR,GAC3B2vN,GAAW9gO,EAAS0iO,EAAQ,EAAG,EAAG57O,KAAK2C,KAAK0nB,GAAQ,EACtD,EAEJ,CACA,OAAO5oB,GAAO7U,EAChB,CAbqDivP,CAAapvN,EAClE,CACA,IAAIhrB,GAAS,CAAC,EAcd,IAAI,GAAI,cAER,SAASq6O,GAAWhwO,GAClB,OAAOA,EAAE9a,CACX,CACA,SAAS+qP,GAAWjwO,GAClB,OAAOA,EAAE7a,CACX,CACA,SAAS+qP,GAAelwO,GACtB,OAAOA,EAAEhY,KACX,CACA,SAASmoP,GAAgBnwO,GACvB,OAAOA,EAAE/X,MACX,CACA,SAAS,GAAO04B,GACd,MAAoB,mBAANA,EAAmBA,EAAI,WACnC,OAAQA,CACV,CACF,CACA,SAASkP,GAAMzzC,EAAO+X,EAAKC,GACzB,OAAOF,KAAKE,IAAID,EAAKD,KAAKC,IAAI/X,EAAOgY,GACvC,CACA,SAASg8O,KACP,IAAIlrP,EAAI8qP,GACN7qP,EAAI8qP,GACJjoP,EAAQkoP,GACRjoP,EAASkoP,GACTE,EAAO,GAAO,GACdC,EAAOD,EACPE,EAAOF,EACPG,EAAOH,EACPjjO,EAAU,KACZ,SAASqjO,EAAU9vN,EAAGha,EAAIC,GACxB,IAAIkyN,EACFz8N,EAAW,MAANsK,EAAaA,GAAMzhB,EAAErJ,KAAK5B,KAAM0mC,GACrCrkB,EAAW,MAANsK,EAAaA,GAAMzhB,EAAEtJ,KAAK5B,KAAM0mC,GACrChZ,GAAK3f,EAAMnM,KAAK5B,KAAM0mC,GACtBrhB,GAAKrX,EAAOpM,KAAK5B,KAAM0mC,GACvB5oB,EAAI7D,KAAKC,IAAIwT,EAAGrI,GAAK,EACrBoxO,EAAK7gN,IAAOwgN,EAAKx0P,KAAK5B,KAAM0mC,GAAI,EAAG5oB,GACnC44O,EAAK9gN,IAAOygN,EAAKz0P,KAAK5B,KAAM0mC,GAAI,EAAG5oB,GACnCoqO,EAAKtyM,IAAO0gN,EAAK10P,KAAK5B,KAAM0mC,GAAI,EAAG5oB,GACnC64O,EAAK/gN,IAAO2gN,EAAK30P,KAAK5B,KAAM0mC,GAAI,EAAG5oB,GAErC,GADKqV,IAASA,EAAU0rN,EAAS,MAC7B4X,GAAM,GAAKC,GAAM,GAAKxO,GAAM,GAAKyO,GAAM,EACzCxjO,EAAQ3S,KAAK4B,EAAIC,EAAIqL,EAAGrI,OACnB,CACL,IAAI/C,EAAKF,EAAKsL,EACZnL,EAAKF,EAAKgD,EACZ8N,EAAQta,OAAOuJ,EAAKq0O,EAAIp0O,GACxB8Q,EAAQilN,OAAO91N,EAAKo0O,EAAIr0O,GACxB8Q,EAAQ8jN,cAAc30N,EAAK,GAAIo0O,EAAIr0O,EAAIC,EAAID,EAAK,GAAIq0O,EAAIp0O,EAAID,EAAKq0O,GACjEvjO,EAAQilN,OAAO91N,EAAIC,EAAKo0O,GACxBxjO,EAAQ8jN,cAAc30N,EAAIC,EAAK,GAAIo0O,EAAIr0O,EAAK,GAAIq0O,EAAIp0O,EAAID,EAAKq0O,EAAIp0O,GACjE4Q,EAAQilN,OAAOh2N,EAAK8lO,EAAI3lO,GACxB4Q,EAAQ8jN,cAAc70N,EAAK,GAAI8lO,EAAI3lO,EAAIH,EAAIG,EAAK,GAAI2lO,EAAI9lO,EAAIG,EAAK2lO,GACjE/0N,EAAQilN,OAAOh2N,EAAIC,EAAKo0O,GACxBtjO,EAAQ8jN,cAAc70N,EAAIC,EAAK,GAAIo0O,EAAIr0O,EAAK,GAAIq0O,EAAIp0O,EAAID,EAAKq0O,EAAIp0O,GACjE8Q,EAAQklN,WACV,CACA,GAAIwG,EAEF,OADA1rN,EAAU,KACH0rN,EAAS,IAAM,IAE1B,CAoDA,OAnDA2X,EAAUvrP,EAAI,SAAUy7B,GACtB,OAAI9lC,UAAUC,QACZoK,EAAI,GAAOy7B,GACJ8vN,GAEAvrP,CAEX,EACAurP,EAAUtrP,EAAI,SAAUw7B,GACtB,OAAI9lC,UAAUC,QACZqK,EAAI,GAAOw7B,GACJ8vN,GAEAtrP,CAEX,EACAsrP,EAAUzoP,MAAQ,SAAU24B,GAC1B,OAAI9lC,UAAUC,QACZkN,EAAQ,GAAO24B,GACR8vN,GAEAzoP,CAEX,EACAyoP,EAAUxoP,OAAS,SAAU04B,GAC3B,OAAI9lC,UAAUC,QACZmN,EAAS,GAAO04B,GACT8vN,GAEAxoP,CAEX,EACAwoP,EAAUI,aAAe,SAAUH,EAAIC,EAAIC,EAAIzO,GAC7C,OAAItnP,UAAUC,QACZu1P,EAAO,GAAOK,GACdJ,EAAa,MAANK,EAAa,GAAOA,GAAMN,EACjCG,EAAa,MAANI,EAAa,GAAOA,GAAMP,EACjCE,EAAa,MAANpO,EAAa,GAAOA,GAAMmO,EAC1BG,GAEAJ,CAEX,EACAI,EAAUrjO,QAAU,SAAUuT,GAC5B,OAAI9lC,UAAUC,QACZsyB,EAAe,MAALuT,EAAY,KAAOA,EACtB8vN,GAEArjO,CAEX,EACOqjO,CACT,CACA,SAASK,KACP,IAAI5rP,EACFC,EACAo5B,EACAq6M,EAEA5oJ,EACA3zE,EACAC,EACAsL,EAJAwF,EAAU,KAKZ,SAASnoB,EAAMsX,EAAIC,EAAIy/B,GACrB,IAAIp0B,EAAKo0B,EAAK,EACd,GAAI+zC,EAAO,CACT,IAAIr9C,EAAKr2B,EAAKE,EACZo2B,EAAKr2B,EAAKF,EACZ,GAAIs2B,GAAMC,EAAI,CAEZ,IAAIm+M,EAAK78O,KAAK2C,KAAK87B,EAAKA,EAAKC,EAAKA,GAChC/2B,GAAM82B,GAAMo+M,GAAMnpO,EAClB9L,GAAM82B,GAAMm+M,GAAMnpO,EAClB5pB,EAAIkW,KAAKqG,MAAMq4B,EAAID,GAGrBvlB,EAAQta,OAAOuJ,EAAKR,EAAIS,EAAKR,GAC7BsR,EAAQilN,OAAO91N,EAAKo2B,EAAK9qB,EAAIrL,EAAKo2B,EAAK/qB,GACvCuF,EAAQusL,IAAIp9L,EAAIC,EAAIqL,EAAI7pB,EAAIkW,KAAK+B,GAAIjY,GACrCovB,EAAQilN,OAAOh2N,EAAKR,EAAIS,EAAKR,GAC7BsR,EAAQusL,IAAIt9L,EAAIC,EAAIsL,EAAI5pB,EAAGA,EAAIkW,KAAK+B,GACtC,MACEmX,EAAQusL,IAAIp9L,EAAIC,EAAIqL,EAAI,EAAGolO,IAE7B7/N,EAAQklN,WACV,MACEtiJ,EAAQ,EAEV3zE,EAAKE,EACLD,EAAKE,EACLoL,EAAKC,CACP,CACA,SAASmpO,EAAMrxO,GACb,IAAIxkB,EAEF6kB,EAEA84N,EAHAjwN,EAAIlJ,EAAK7kB,OAETi+O,GAAW,EAGb,IADe,MAAX3rN,IAAiBA,EAAU0rN,EAAS,MACnC39O,EAAI,EAAGA,GAAK0tB,IAAK1tB,IACdA,EAAI0tB,GAAK+vN,EAAQ54N,EAAIL,EAAKxkB,GAAIA,EAAGwkB,MAAWo5N,IAC5CA,GAAYA,KAAU/oJ,EAAQ,GAEhC+oJ,GAAU9zO,GAAOC,EAAE8a,EAAG7kB,EAAGwkB,IAAQxa,EAAE6a,EAAG7kB,EAAGwkB,IAAQ4e,EAAKve,EAAG7kB,EAAGwkB,IAElE,GAAIm5N,EAEF,OADA1rN,EAAU,KACH0rN,EAAS,IAAM,IAE1B,CA6CA,OA5CAkY,EAAM9rP,EAAI,SAAUy7B,GAClB,OAAI9lC,UAAUC,QACZoK,EAAIy7B,EACGqwN,GAEA9rP,CAEX,EACA8rP,EAAM7rP,EAAI,SAAUw7B,GAClB,OAAI9lC,UAAUC,QACZqK,EAAIw7B,EACGqwN,GAEA7rP,CAEX,EACA6rP,EAAMzyN,KAAO,SAAUoC,GACrB,OAAI9lC,UAAUC,QACZyjC,EAAOoC,EACAqwN,GAEAzyN,CAEX,EACAyyN,EAAMpY,QAAU,SAAUj4M,GACxB,OAAI9lC,UAAUC,QACZ89O,EAAUj4M,EACHqwN,GAEApY,CAEX,EACAoY,EAAM5jO,QAAU,SAAUuT,GACxB,OAAI9lC,UAAUC,QAEVsyB,EADO,MAALuT,EACQ,KAEAA,EAELqwN,GAEA5jO,CAEX,EACO4jO,CACT,CACA,SAASC,GAAQ74O,EAAG8E,GAClB,OAAY,MAAL9E,EAAYA,EAAI8E,CACzB,CACA,IAAIhY,GAAI,SAAWwM,GACf,OAAOA,EAAKxM,GAAK,CACnB,EACAC,GAAI,SAAWuM,GACb,OAAOA,EAAKvM,GAAK,CACnB,EAiDAk7B,GAAM,SAAa3uB,GACjB,SAA0B,IAAjBA,EAAKknO,QAChB,EAIEsY,G5E76BW,WACb,IAAIntJ,EAAcszI,GAChBrzI,EAAcszI,GACduZ,EAAe,GAAS,GACxBM,EAAY,KACZn1O,EAAau7N,GACbt7N,EAAWu7N,GACXE,EAAWD,GACXrqN,EAAU,KACVtsB,EAAOq2O,GAASx9B,GAClB,SAASA,IACP,IAAIm/B,EACF3/N,EACA2O,GAAMi8E,EAAYzoG,MAAMrB,KAAMY,WAC9B+sB,GAAMo8E,EAAY1oG,MAAMrB,KAAMY,WAC9Bo5C,EAAKj4B,EAAW1gB,MAAMrB,KAAMY,WAAaqb,GACzC8O,EAAK/I,EAAS3gB,MAAMrB,KAAMY,WAAaqb,GACvCw9L,EAAKp5L,GAAI0K,EAAKivB,GACdijM,EAAKlyN,EAAKivB,EAOZ,GANK7mB,IAASA,EAAU0rN,EAASh4O,KAG7B8mB,EAAKE,IAAI3O,EAAIyO,EAAIA,EAAKE,EAAIA,EAAK3O,GAG7ByO,EAAK,GAGN,GAAI8rL,EAAKx7L,GAAM,GAClBkV,EAAQta,OAAO8U,EAAKxR,GAAI69B,GAAKrsB,EAAKtR,GAAI29B,IACtC7mB,EAAQusL,IAAI,EAAG,EAAG/xL,EAAIqsB,EAAIjvB,GAAKkyN,GAC3BpvN,EAAK,KACPsF,EAAQta,OAAOgV,EAAK1R,GAAI4O,GAAK8C,EAAKxR,GAAI0O,IACtCoI,EAAQusL,IAAI,EAAG,EAAG7xL,EAAI9C,EAAIivB,EAAIijM,QAK7B,CACH,IAWE74O,EACAE,EAZE8e,EAAM42B,EACRz2B,EAAMwH,EACN5H,EAAM62B,EACN12B,EAAMyH,EACNosO,EAAM19C,EACN29C,EAAM39C,EACN49C,EAAK5Z,EAASp8O,MAAMrB,KAAMY,WAAa,EACvC02P,EAAKD,EAAK,KAAYH,GAAaA,EAAU71P,MAAMrB,KAAMY,WAAagc,GAAKiR,EAAKA,EAAKF,EAAKA,IAC1FgwN,EAAK,GAAIt9N,GAAIsN,EAAKE,GAAM,GAAI+oO,EAAav1P,MAAMrB,KAAMY,YACrD22P,EAAM5Z,EACN6Z,EAAM7Z,EAKR,GAAI2Z,EAAK,GAAS,CAChB,IAAI5hO,EAAKrX,GAAKi5O,EAAKzpO,EAAKxR,GAAIg7O,IAC1B5rO,EAAKpN,GAAKi5O,EAAK3pO,EAAKtR,GAAIg7O,KACrBF,GAAY,EAALzhO,GAAU,IAA4BvS,GAAnBuS,GAAMunN,EAAK,GAAK,EAAc35N,GAAOoS,IAAQyhO,EAAM,EAAGh0O,EAAMG,GAAO02B,EAAKjvB,GAAM,IACxGqsO,GAAY,EAAL3rO,GAAU,IAA4BrI,GAAnBqI,GAAMwxN,EAAK,GAAK,EAAc15N,GAAOkI,IAAQ2rO,EAAM,EAAGh0O,EAAMG,GAAOy2B,EAAKjvB,GAAM,EAC/G,CACA,IAAIsxN,EAAM1uN,EAAKxR,GAAIiH,GACjBk5N,EAAM3uN,EAAKtR,GAAI+G,GACf46N,EAAMnwN,EAAK1R,GAAImH,GACf26N,EAAMpwN,EAAKxR,GAAIiH,GAGjB,GAAIq6N,EAAK,GAAS,CAChB,IAIEj6G,EAJEo6G,EAAMnwN,EAAKxR,GAAIoH,GACjBw6N,EAAMpwN,EAAKtR,GAAIkH,GACf26N,EAAMrwN,EAAK1R,GAAIgH,GACfg7N,EAAMtwN,EAAKxR,GAAI8G,GAMjB,GAAIs2L,EAAK19L,GACP,GAAI2nH,EAjId,SAAmBh3G,EAAIC,EAAIvK,EAAIC,EAAIC,EAAIC,EAAIsJ,EAAIC,GAC7C,IAAIkyN,EAAM57N,EAAKsK,EACbuxN,EAAM57N,EAAKsK,EACX8qO,EAAM5rO,EAAKvJ,EACXo1O,EAAM5rO,EAAKvJ,EACXxe,EAAI2zP,EAAM1Z,EAAMyZ,EAAMxZ,EACxB,KAAIl6O,EAAIA,EAAI,IAEZ,MAAO,CAAC2oB,GADR3oB,GAAK0zP,GAAO9qO,EAAKpK,GAAMm1O,GAAOhrO,EAAKpK,IAAOve,GACzBi6O,EAAKrxN,EAAK5oB,EAAIk6O,EACjC,CAwHmB/wN,CAAUmvN,EAAKC,EAAK4B,EAAKC,EAAKL,EAAKC,EAAKC,EAAKC,GAAM,CAC1D,IAAI52N,EAAKg1N,EAAM34G,EAAG,GAChBp8G,EAAKg1N,EAAM54G,EAAG,GACdh6G,EAAKo0N,EAAMp6G,EAAG,GACd/5G,EAAKo0N,EAAMr6G,EAAG,GACdi0H,EAAK,EAAIt7O,Gb9IhB,SAAcpR,GACnB,OAAOA,EAAI,EAAI,EAAIA,GAAK,EAAI8Q,GAAK9B,KAAKgG,KAAKhV,EAC7C,Ca4I2BgV,EAAMoH,EAAKqC,EAAKpC,EAAKqC,IAAO/M,GAAKyK,EAAKA,EAAKC,EAAKA,GAAM1K,GAAK8M,EAAKA,EAAKC,EAAKA,KAAQ,GAC/FiuO,EAAKh7O,GAAK8mH,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,IACvC6zH,EAAM,GAAI5Z,GAAK9vN,EAAK+pO,IAAOD,EAAK,IAChCH,EAAM,GAAI7Z,GAAKhwN,EAAKiqO,IAAOD,EAAK,GAClC,MACEJ,EAAMC,EAAM,CAGlB,CAGMJ,EAAM,GAGHI,EAAM,IACbpzP,EAAKs5O,GAAeQ,EAAKC,EAAK9B,EAAKC,EAAK3uN,EAAI6pO,EAAKva,GACjD34O,EAAKo5O,GAAeI,EAAKC,EAAKC,EAAKC,EAAKtwN,EAAI6pO,EAAKva,GACjD9pN,EAAQta,OAAOzU,EAAGsd,GAAKtd,EAAGi4O,IAAKj4O,EAAGud,GAAKvd,EAAGk4O,KAGtCkb,EAAM7Z,EAAIxqN,EAAQusL,IAAIt7M,EAAGsd,GAAItd,EAAGud,GAAI61O,EAAKl3O,GAAMlc,EAAGk4O,IAAKl4O,EAAGi4O,KAAM/7N,GAAMhc,EAAGg4O,IAAKh4O,EAAG+3O,MAAOY,IAI1F9pN,EAAQusL,IAAIt7M,EAAGsd,GAAItd,EAAGud,GAAI61O,EAAKl3O,GAAMlc,EAAGk4O,IAAKl4O,EAAGi4O,KAAM/7N,GAAMlc,EAAG25O,IAAK35O,EAAG05O,MAAOb,GAC9E9pN,EAAQusL,IAAI,EAAG,EAAG/xL,EAAIrN,GAAMlc,EAAGud,GAAKvd,EAAG25O,IAAK35O,EAAGsd,GAAKtd,EAAG05O,KAAMx9N,GAAMhc,EAAGqd,GAAKrd,EAAGy5O,IAAKz5O,EAAGod,GAAKpd,EAAGw5O,MAAOb,GACrG9pN,EAAQusL,IAAIp7M,EAAGod,GAAIpd,EAAGqd,GAAI61O,EAAKl3O,GAAMhc,EAAGy5O,IAAKz5O,EAAGw5O,KAAMx9N,GAAMhc,EAAGg4O,IAAKh4O,EAAG+3O,MAAOY,MAK7E9pN,EAAQta,OAAOwjO,EAAKC,GAAMnpN,EAAQusL,IAAI,EAAG,EAAG/xL,EAAIvK,EAAKG,GAAM05N,IApB1C9pN,EAAQta,OAAOwjO,EAAKC,GAwBpCzuN,EAAK,IAAcspO,EAAM,GAGtBI,EAAM,IACbnzP,EAAKs5O,GAAeM,EAAKC,EAAKH,EAAKC,EAAKlwN,GAAK0pO,EAAKta,GAClD34O,EAAKo5O,GAAerB,EAAKC,EAAK4B,EAAKC,EAAKtwN,GAAK0pO,EAAKta,GAClD9pN,EAAQilN,OAAOh0O,EAAGsd,GAAKtd,EAAGi4O,IAAKj4O,EAAGud,GAAKvd,EAAGk4O,KAGtCib,EAAM5Z,EAAIxqN,EAAQusL,IAAIt7M,EAAGsd,GAAItd,EAAGud,GAAI41O,EAAKj3O,GAAMlc,EAAGk4O,IAAKl4O,EAAGi4O,KAAM/7N,GAAMhc,EAAGg4O,IAAKh4O,EAAG+3O,MAAOY,IAI1F9pN,EAAQusL,IAAIt7M,EAAGsd,GAAItd,EAAGud,GAAI41O,EAAKj3O,GAAMlc,EAAGk4O,IAAKl4O,EAAGi4O,KAAM/7N,GAAMlc,EAAG25O,IAAK35O,EAAG05O,MAAOb,GAC9E9pN,EAAQusL,IAAI,EAAG,EAAG7xL,EAAIvN,GAAMlc,EAAGud,GAAKvd,EAAG25O,IAAK35O,EAAGsd,GAAKtd,EAAG05O,KAAMx9N,GAAMhc,EAAGqd,GAAKrd,EAAGy5O,IAAKz5O,EAAGod,GAAKpd,EAAGw5O,KAAMb,GACpG9pN,EAAQusL,IAAIp7M,EAAGod,GAAIpd,EAAGqd,GAAI41O,EAAKj3O,GAAMhc,EAAGy5O,IAAKz5O,EAAGw5O,KAAMx9N,GAAMhc,EAAGg4O,IAAKh4O,EAAG+3O,MAAOY,KAK7E9pN,EAAQusL,IAAI,EAAG,EAAG7xL,EAAIvK,EAAKH,EAAK85N,GApBI9pN,EAAQilN,OAAO4F,EAAKC,EAqB/D,MAjHqB9qN,EAAQta,OAAO,EAAG,GAmHvC,GADAsa,EAAQklN,YACJwG,EAAQ,OAAO1rN,EAAU,KAAM0rN,EAAS,IAAM,IACpD,CA8BA,OA7BAn/B,EAAI18J,SAAW,WACb,IAAI9jC,IAAM4qF,EAAYzoG,MAAMrB,KAAMY,aAAcmpG,EAAY1oG,MAAMrB,KAAMY,YAAc,EACpFud,IAAM4D,EAAW1gB,MAAMrB,KAAMY,aAAcohB,EAAS3gB,MAAMrB,KAAMY,YAAc,EAAImb,GAAK,EACzF,MAAO,CAACI,GAAIgC,GAAKe,EAAG7C,GAAI8B,GAAKe,EAC/B,EACAwgM,EAAI51G,YAAc,SAAUpjE,GAC1B,OAAO9lC,UAAUC,QAAUipG,EAA2B,mBAANpjE,EAAmBA,EAAI,IAAUA,GAAIg5K,GAAO51G,CAC9F,EACA41G,EAAI31G,YAAc,SAAUrjE,GAC1B,OAAO9lC,UAAUC,QAAUkpG,EAA2B,mBAANrjE,EAAmBA,EAAI,IAAUA,GAAIg5K,GAAO31G,CAC9F,EACA21G,EAAIk3C,aAAe,SAAUlwN,GAC3B,OAAO9lC,UAAUC,QAAU+1P,EAA4B,mBAANlwN,EAAmBA,EAAI,IAAUA,GAAIg5K,GAAOk3C,CAC/F,EACAl3C,EAAIw3C,UAAY,SAAUxwN,GACxB,OAAO9lC,UAAUC,QAAUq2P,EAAiB,MAALxwN,EAAY,KAAoB,mBAANA,EAAmBA,EAAI,IAAUA,GAAIg5K,GAAOw3C,CAC/G,EACAx3C,EAAI39L,WAAa,SAAU2kB,GACzB,OAAO9lC,UAAUC,QAAUkhB,EAA0B,mBAAN2kB,EAAmBA,EAAI,IAAUA,GAAIg5K,GAAO39L,CAC7F,EACA29L,EAAI19L,SAAW,SAAU0kB,GACvB,OAAO9lC,UAAUC,QAAUmhB,EAAwB,mBAAN0kB,EAAmBA,EAAI,IAAUA,GAAIg5K,GAAO19L,CAC3F,EACA09L,EAAI+9B,SAAW,SAAU/2M,GACvB,OAAO9lC,UAAUC,QAAU48O,EAAwB,mBAAN/2M,EAAmBA,EAAI,IAAUA,GAAIg5K,GAAO+9B,CAC3F,EACA/9B,EAAIvsL,QAAU,SAAUuT,GACtB,OAAO9lC,UAAUC,QAAUsyB,EAAe,MAALuT,EAAY,KAAOA,EAAGg5K,GAAOvsL,CACpE,EACOusL,CACT,C4EiwBeA,GAAQ39L,YA1ChB,SAAYtK,GACf,OAAOA,EAAKsK,YAAc,CAC5B,IAwCoCC,UAvC/B,SAAYvK,GACf,OAAOA,EAAKuK,UAAY,CAC1B,IAqCiDy7N,UApC5C,SAAYhmO,GACf,OAAOA,EAAKgmO,UAAY,CAC1B,IAkC8D3zI,aAjCzD,SAAYryF,GACf,OAAOA,EAAKqyF,aAAe,CAC7B,IA+B8EC,aA9BzE,SAAYtyF,GACf,OAAOA,EAAKsyF,aAAe,CAC7B,IA4B8F6sJ,cA3BzF,SAAYn/O,GACf,OAAOA,EAAKm/O,cAAgB,CAC9B,IA0BAiB,GAAa,KAAS5sP,EAAEA,IAAGoX,GAAGnX,IAAGyhB,IA9C5B,SAAYlV,GACf,OAAQA,EAAKvM,GAAK,IAAMuM,EAAKzJ,QAAU,EACzC,IA4CwC2wO,QAAQv4M,IAChD0xN,GAAa,KAAS5sP,EAAEA,IAAGkX,GAAGnX,IAAGyhB,IAlD5B,SAAYjV,GACf,OAAQA,EAAKxM,GAAK,IAAMwM,EAAK1J,OAAS,EACxC,IAgDwC4wO,QAAQv4M,IAChD2xN,GAAY7hO,KAASjrB,EAAEA,IAAGC,EAAEA,IAAGyzO,QAAQv4M,IACvC4xN,GAAY7B,KAAUlrP,EAAEA,IAAGC,EAAEA,IAAG6C,OA1D5B,SAAW0J,GACb,OAAOA,EAAK1J,OAAS,CACvB,IAwDyCC,QAvDrC,SAAWyJ,GACb,OAAOA,EAAKzJ,QAAU,CACxB,IAqDmD4oP,cA5B9C,SAAYn/O,GACf,OAAOu/O,GAAQv/O,EAAKwgP,oBAAqBxgP,EAAKm/O,eAAiB,CACjE,IACK,SAAYn/O,GACf,OAAOu/O,GAAQv/O,EAAKygP,qBAAsBzgP,EAAKm/O,eAAiB,CAClE,IACK,SAAYn/O,GACf,OAAOu/O,GAAQv/O,EAAK0gP,wBAAyB1gP,EAAKm/O,eAAiB,CACrE,IACK,SAAYn/O,GACf,OAAOu/O,GAAQv/O,EAAK2gP,uBAAwB3gP,EAAKm/O,eAAiB,CACpE,IAkBAyB,GCp+Ba,SAAgB1vP,EAAM27B,GACnC,IAAInR,EAAU,KACZtsB,EAAOq2O,GAASz0M,GAGlB,SAASA,IACP,IAAIo2M,EAGJ,GAFK1rN,IAASA,EAAU0rN,EAASh4O,KACjC8B,EAAKtH,MAAMrB,KAAMY,WAAWkH,KAAKqrB,GAAUmR,EAAKjjC,MAAMrB,KAAMY,YACxDi+O,EAAQ,OAAO1rN,EAAU,KAAM0rN,EAAS,IAAM,IACpD,CAUA,OAjBAl2O,EAAuB,mBAATA,EAAsBA,EAAO,GAASA,GAAQ8X,IAC5D6jB,EAAuB,mBAATA,EAAsBA,EAAO,QAAkB7N,IAAT6N,EAAqB,IAAMA,GAO/EmE,EAAO9/B,KAAO,SAAU+9B,GACtB,OAAO9lC,UAAUC,QAAU8H,EAAoB,mBAAN+9B,EAAmBA,EAAI,GAASA,GAAI+B,GAAU9/B,CACzF,EACA8/B,EAAOnE,KAAO,SAAUoC,GACtB,OAAO9lC,UAAUC,QAAUyjC,EAAoB,mBAANoC,EAAmBA,EAAI,IAAUA,GAAI+B,GAAUnE,CAC1F,EACAmE,EAAOtV,QAAU,SAAUuT,GACzB,OAAO9lC,UAAUC,QAAUsyB,EAAe,MAALuT,EAAY,KAAOA,EAAG+B,GAAUtV,CACvE,EACOsV,CACT,CD+8BgB,GAAW9/B,MARlB,SAAc8O,GACnB,OAAO,GAAQA,EAAKhS,OAAS,SAC/B,IAMoC6+B,MAjB/B,SAAY7sB,GACf,OAAOu/O,GAAQv/O,EAAK6sB,KAAM,GAC5B,IAgBAg0N,GAAazB,KAAW5rP,EAAEA,IAAGC,EAAEA,IAAGyzO,QAAQv4M,IAAK9B,MAf1C,SAAY7sB,GACf,OAAOA,EAAK6sB,MAAQ,CACtB,IAcF,SAASi0N,GAAgB9gP,GACvB,OAAOA,EAAKm/O,cAAgBn/O,EAAKwgP,qBAAuBxgP,EAAKygP,sBAAwBzgP,EAAK0gP,yBAA2B1gP,EAAK2gP,sBAC5H,CAcA,SAAS5B,GAAUrjO,EAAS1b,EAAMxM,EAAGC,GACnC,OAAO8sP,GAAU7kO,QAAQA,EAAlB6kO,CAA2BvgP,EAAMxM,EAAGC,EAC7C,CAUA,IAAIstP,GAAU,EACd,SAASC,KACPD,GAAU,CACZ,CACA,SAASE,GAAOC,EAAUlhP,EAAM6sB,GAC9B,IAAIrvB,EAAOwC,EAAKxC,KACd+8O,EAAO2G,EAASC,MAChBllP,EAAK+D,EAAK+gP,UAAY/gP,EAAK+gP,QAAU,OAASA,MAC9CrzO,EAAI6sO,EAAK6G,SAASnlP,KAAQs+O,EAAK6G,SAASnlP,GAAM,CAC5CA,GAAIA,IAUR,OARIg5H,GAAWz3H,GACbkQ,EAAEte,KAAOoO,EAAK,MACLsjP,GAAgBj0N,GACzBnf,EAAEte,KAAO2vP,GAAU,KAAMlyN,EAAM,EAAG,IAElCnf,EAAEpX,MAAQu2B,EAAKv2B,OAAS,EACxBoX,EAAEnX,OAASs2B,EAAKt2B,QAAU,GAErB,QAAU0F,EAAK,GACxB,CACA,SAASolP,GAAO71O,GACdjjB,KAAKuP,QACD0T,GAAGjjB,KAAK+4P,MAAM91O,EACpB,CAsHA,SAAS,GAAKwzC,GACZz2D,KAAKy2D,KAAOA,EACZz2D,KAAK6sB,OAAS7sB,KAAK6sB,QAAU,IAAIisO,EACnC,CACA,SAASE,GAAUviM,GACjB,GAAK70D,KAAK5B,KAAMy2D,GAChBz2D,KAAKmmD,MAAQnmD,KAAKmmD,OAAS,EAC7B,CAEA,SAAS8yM,GAAeC,GACtBl5P,KAAKygI,SAAW,EAChBzgI,KAAK6hO,QAAUq3B,GAAgB,IACjC,CACA,SAASC,GAAU7gC,GACjBA,EAAO73F,UAAY,CACrB,CACA,SAAS24H,GAAU9gC,GACjBA,EAAO73F,UAAY,CACrB,CAmEA,SAAS44H,GAAYxsO,EAAQpV,EAAM6hP,GACjC,GAAI7hP,EAAK0J,QAA2B,IAAjB1J,EAAK9C,SAAwC,IAAvB8C,EAAK8hP,cAAqB,CACjE,IAAIC,EAAyB,MAApB/hP,EAAK06C,aAAuB16C,EAAK06C,YAAc,EACxDtlC,EAAOu4C,OAAOo0L,GAAMF,EAIxB,SAAyB7hP,EAAM06C,GAE7B,OAAO16C,EAAKgiP,YAAkC,UAApBhiP,EAAKgiP,WAAyB,EAAItnM,CAC9D,CAPgCunM,CAAgBjiP,EAAM+hP,GAAM,GAC1D,CACA,OAAO3sO,CACT,CAhNAisO,GAAO54P,UAAY,CACjBqW,MAAO,WACL,OAAO,IAAIuiP,GAAO94P,KACpB,EACAuP,MAAO,WAKL,OAJAvP,KAAKoiB,IAAMH,OAAO03O,UAClB35P,KAAKqiB,IAAMJ,OAAO03O,UAClB35P,KAAKsiB,IAAML,OAAO03O,UAClB35P,KAAKuiB,IAAMN,OAAO03O,UACX35P,IACT,EACAugE,MAAO,WACL,OAAOvgE,KAAKoiB,MAAQH,OAAO03O,WAAa35P,KAAKqiB,MAAQJ,OAAO03O,WAAa35P,KAAKsiB,MAAQL,OAAO03O,WAAa35P,KAAKuiB,MAAQN,OAAO03O,SAChI,EACAC,OAAQ,SAAgB32O,GACtB,OAAOjjB,KAAKoiB,KAAOa,EAAEb,IAAMpiB,KAAKqiB,KAAOY,EAAEZ,IAAMriB,KAAKsiB,KAAOW,EAAEX,IAAMtiB,KAAKuiB,KAAOU,EAAEV,EACnF,EACArgB,IAAK,SAAakgB,EAAIC,EAAIC,EAAIC,GAe5B,OAdID,EAAKF,GACPpiB,KAAKsiB,GAAKF,EACVpiB,KAAKoiB,GAAKE,IAEVtiB,KAAKoiB,GAAKA,EACVpiB,KAAKsiB,GAAKA,GAERC,EAAKF,GACPriB,KAAKuiB,GAAKF,EACVriB,KAAKqiB,GAAKE,IAEVviB,KAAKqiB,GAAKA,EACVriB,KAAKuiB,GAAKA,GAELviB,IACT,EACAwR,IAAK,SAAavG,EAAGC,GAKnB,OAJID,EAAIjL,KAAKoiB,KAAIpiB,KAAKoiB,GAAKnX,GACvBC,EAAIlL,KAAKqiB,KAAIriB,KAAKqiB,GAAKnX,GACvBD,EAAIjL,KAAKsiB,KAAItiB,KAAKsiB,GAAKrX,GACvBC,EAAIlL,KAAKuiB,KAAIviB,KAAKuiB,GAAKrX,GACpBlL,IACT,EACAolE,OAAQ,SAAgBr/C,GAKtB,OAJA/lB,KAAKoiB,IAAM2D,EACX/lB,KAAKqiB,IAAM0D,EACX/lB,KAAKsiB,IAAMyD,EACX/lB,KAAKuiB,IAAMwD,EACJ/lB,IACT,EACAyiC,MAAO,WAKL,OAJAziC,KAAKoiB,GAAKnI,KAAKwX,MAAMzxB,KAAKoiB,IAC1BpiB,KAAKqiB,GAAKpI,KAAKwX,MAAMzxB,KAAKqiB,IAC1BriB,KAAKsiB,GAAKrI,KAAKisJ,KAAKlmK,KAAKsiB,IACzBtiB,KAAKuiB,GAAKtI,KAAKisJ,KAAKlmK,KAAKuiB,IAClBviB,IACT,EACA8Y,MAAO,SAAegF,GAKpB,OAJA9d,KAAKoiB,IAAMtE,EACX9d,KAAKqiB,IAAMvE,EACX9d,KAAKsiB,IAAMxE,EACX9d,KAAKuiB,IAAMzE,EACJ9d,IACT,EACAsY,UAAW,SAAmB1L,EAAIC,GAKhC,OAJA7M,KAAKoiB,IAAMxV,EACX5M,KAAKsiB,IAAM1V,EACX5M,KAAKqiB,IAAMxV,EACX7M,KAAKuiB,IAAM1V,EACJ7M,IACT,EACAiZ,OAAQ,SAAgByO,EAAOzc,EAAGC,GAChC,IAAIkT,EAAIpe,KAAK65P,cAAcnyO,EAAOzc,EAAGC,GACrC,OAAOlL,KAAKuP,QAAQiC,IAAI4M,EAAE,GAAIA,EAAE,IAAI5M,IAAI4M,EAAE,GAAIA,EAAE,IAAI5M,IAAI4M,EAAE,GAAIA,EAAE,IAAI5M,IAAI4M,EAAE,GAAIA,EAAE,GAClF,EACAy7O,cAAe,SAAuBnyO,EAAOzc,EAAGC,GAC9C,IAAIkX,EAAKpiB,KAAKoiB,GACZC,EAAKriB,KAAKqiB,GACVC,EAAKtiB,KAAKsiB,GACVC,EAAKviB,KAAKuiB,GACVpG,EAAMlC,KAAKkC,IAAIuL,GACfrL,EAAMpC,KAAKoC,IAAIqL,GACfhG,EAAKzW,EAAIA,EAAIkR,EAAMjR,EAAImR,EACvBsF,EAAKzW,EAAID,EAAIoR,EAAMnR,EAAIiR,EACzB,MAAO,CAACA,EAAMiG,EAAK/F,EAAMgG,EAAKX,EAAIrF,EAAM+F,EAAKjG,EAAMkG,EAAKV,EAAIxF,EAAMiG,EAAK/F,EAAMkG,EAAKb,EAAIrF,EAAM+F,EAAKjG,EAAMoG,EAAKZ,EAAIxF,EAAMmG,EAAKjG,EAAMgG,EAAKX,EAAIrF,EAAMiG,EAAKnG,EAAMkG,EAAKV,EAAIxF,EAAMmG,EAAKjG,EAAMkG,EAAKb,EAAIrF,EAAMiG,EAAKnG,EAAMoG,EAAKZ,EACtN,EACAo3O,MAAO,SAAe91O,GAKpB,OAJIA,EAAEb,GAAKpiB,KAAKoiB,KAAIpiB,KAAKoiB,GAAKa,EAAEb,IAC5Ba,EAAEZ,GAAKriB,KAAKqiB,KAAIriB,KAAKqiB,GAAKY,EAAEZ,IAC5BY,EAAEX,GAAKtiB,KAAKsiB,KAAItiB,KAAKsiB,GAAKW,EAAEX,IAC5BW,EAAEV,GAAKviB,KAAKuiB,KAAIviB,KAAKuiB,GAAKU,EAAEV,IACzBviB,IACT,EACAktB,UAAW,SAAmBjK,GAK5B,OAJIA,EAAEb,GAAKpiB,KAAKoiB,KAAIpiB,KAAKoiB,GAAKa,EAAEb,IAC5Ba,EAAEZ,GAAKriB,KAAKqiB,KAAIriB,KAAKqiB,GAAKY,EAAEZ,IAC5BY,EAAEX,GAAKtiB,KAAKsiB,KAAItiB,KAAKsiB,GAAKW,EAAEX,IAC5BW,EAAEV,GAAKviB,KAAKuiB,KAAIviB,KAAKuiB,GAAKU,EAAEV,IACzBviB,IACT,EACA85P,SAAU,SAAkB72O,GAC1B,OAAOA,GAAKjjB,KAAKoiB,IAAMa,EAAEb,IAAMpiB,KAAKsiB,IAAMW,EAAEX,IAAMtiB,KAAKqiB,IAAMY,EAAEZ,IAAMriB,KAAKuiB,IAAMU,EAAEV,EACpF,EACAw3O,WAAY,SAAoB92O,GAC9B,OAAOA,IAAMjjB,KAAKoiB,IAAMa,EAAEb,IAAMpiB,KAAKsiB,IAAMW,EAAEX,IAAMtiB,KAAKqiB,IAAMY,EAAEZ,IAAMriB,KAAKuiB,IAAMU,EAAEV,GACrF,EACAy3O,WAAY,SAAoB/2O,GAC9B,OAAOA,KAAOjjB,KAAKsiB,GAAKW,EAAEb,IAAMpiB,KAAKoiB,GAAKa,EAAEX,IAAMtiB,KAAKuiB,GAAKU,EAAEZ,IAAMriB,KAAKqiB,GAAKY,EAAEV,GAClF,EACAgtD,SAAU,SAAkBtkE,EAAGC,GAC7B,QAASD,EAAIjL,KAAKoiB,IAAMnX,EAAIjL,KAAKsiB,IAAMpX,EAAIlL,KAAKqiB,IAAMnX,EAAIlL,KAAKuiB,GACjE,EACAxU,MAAO,WACL,OAAO/N,KAAKsiB,GAAKtiB,KAAKoiB,EACxB,EACApU,OAAQ,WACN,OAAOhO,KAAKuiB,GAAKviB,KAAKqiB,EACxB,GAUF,GAAS22O,GAAW,IAWpBC,GAAe/4P,UAAY,CACzB8gI,QAAS,WACP,OAAOhhI,KAAKygI,QACd,EACAw5H,YAAa,SAAqB1kC,GAChC,IAAI+C,EAASt4N,KAEb,OADAm5P,GAAU7gC,GACHA,EAAOuJ,QAAQrM,SAASD,EAAK,CAClCpiM,QAAS,SACRoU,MAAK,SAAU2lH,GAEhB,OADAksG,GAAU9gC,GACHprE,CACT,IAAGpmB,OAAM,WAEP,OADAsyH,GAAU9gC,GACH,IACT,GACF,EACA4hC,UAAW,SAAmB3kC,GAC5B,IAAI+C,EAASt4N,KACX0oE,EAAQ,KAEV,OADAywL,GAAU7gC,GACHA,EAAOuJ,QAAQrM,SAASD,EAAK,CAClCpiM,QAAS,UACRoU,MAAK,SAAU2lH,GAChB,IAAIvzF,EAAMuzF,EAAI5tE,KACd,IAAK3lB,IAAQ+O,EAAO,KAAM,CACxB/O,IAAKA,GAEP,IAAImnB,EAAM,IAAIpY,EAIVyxL,EAAO,GAAejtG,EAAK,eAAiBA,EAAI5rE,YAAc,YAWlE,OAVY,MAAR64K,IAAcr5K,EAAIQ,YAAc64K,GAGpCr5K,EAAI11B,OAAS,WACX,OAAOguM,GAAU9gC,EACnB,EACAx3I,EAAIvnB,QAAU,WACZ,OAAO6/L,GAAU9gC,EACnB,EACAx3I,EAAI38C,IAAMw1B,EACHmnB,CACT,IAAGgmD,OAAM,SAAU5iI,GAEjB,OADAk1P,GAAU9gC,GACH,CACLhhK,UAAU,EACVvpD,MAAO,EACPC,OAAQ,EACRm2B,IAAKjgC,GAAKA,EAAEy1D,KAAO,GAEvB,GACF,EACAo8B,MAAO,WACL,IAAIuiI,EAASt4N,KACb,OAAO,IAAI4mC,SAAQ,SAAU81B,IAC3B,SAAS09L,EAAKj4P,GACPm2N,EAAOt3F,UAA8B19H,YAAW,WACnD82P,GAAK,EACP,GAAG,IAFoB19L,EAAOv6D,EAGhC,CACAi4P,EAAK,EACP,GACF,GAaF,IACIvtO,GAAQiwB,GAAIlC,GAAIy/M,GAAKC,GAAIC,GAAIC,GAAIz2G,GADjC02G,GAAkBzH,GAAM,KAExB,GAAM,SAAa/nP,EAAGC,GACxB,OAAO2hB,GAAOrb,IAAIvG,EAAGC,EACvB,EACIwvP,GAAO,SAAczvP,EAAGC,GAC1B,OAAO,GAAI4xC,GAAK7xC,EAAG2vC,GAAK1vC,EAC1B,EACIyvP,GAAO,SAAc1vP,GACvB,OAAO,GAAIA,EAAG4hB,GAAOxK,GACvB,EACIu4O,GAAO,SAAc1vP,GACvB,OAAO,GAAI2hB,GAAOzK,GAAIlX,EACxB,EACIkiB,GAAK,SAAYniB,EAAGC,GACtB,OAAOovP,GAAKrvP,EAAIuvP,GAAKtvP,CACvB,EACImiB,GAAK,SAAYpiB,EAAGC,GACtB,OAAOqvP,GAAKtvP,EAAI84I,GAAK74I,CACvB,EACI2vP,GAAO,SAAc5vP,EAAGC,GAC1B,OAAO,GAAIkiB,GAAGniB,EAAGC,GAAImiB,GAAGpiB,EAAGC,GAC7B,EACI4vP,GAAQ,SAAe7vP,EAAGC,GAC5B,OAAOwvP,GAAKttO,GAAGniB,EAAGC,GAAImiB,GAAGpiB,EAAGC,GAC9B,EACA,SAAS6vP,GAAar0N,EAAGs0N,GAWvB,OAVAnuO,GAAS6Z,EACLs0N,GACFX,GAAMW,EAAMlI,GACZwH,GAAKv2G,GAAK9pI,KAAKkC,IAAIk+O,IACnBE,GAAKtgP,KAAKoC,IAAIg+O,IACdG,IAAMD,KAEND,GAAKv2G,GAAK,EACVs2G,GAAME,GAAKC,GAAK,GAEXS,EACT,CACA,IAAIA,GAAY,CACdvG,UAAW,WAAsB,EACjCrc,UAAW,WAAsB,EACjCx/N,OAAQiiP,GACR1iB,OAAQ0iB,GACRt6O,KAAM,SAAcvV,EAAGC,EAAGwiB,EAAGrI,GACvBg1O,IACFQ,GAAK5vP,EAAIyiB,EAAGxiB,GACZ2vP,GAAK5vP,EAAIyiB,EAAGxiB,EAAIma,GAChBw1O,GAAK5vP,EAAGC,EAAIma,GACZy1O,GAAM7vP,EAAGC,KAET,GAAID,EAAIyiB,EAAGxiB,EAAIma,GACfq1O,GAAKzvP,EAAGC,GAEZ,EACAypP,iBAAkB,SAA0BvyO,EAAIC,EAAIC,EAAIC,GACtD,IAAI24O,EAAM9tO,GAAGhL,EAAIC,GACf84O,EAAM9tO,GAAGjL,EAAIC,GACbiL,EAAMF,GAAG9K,EAAIC,GACbgL,EAAMF,GAAG/K,EAAIC,GACf64O,GAAYt+M,GAAIo+M,EAAK5tO,EAAKqtO,IAC1BS,GAAYxgN,GAAIugN,EAAK5tO,EAAKqtO,IAC1BF,GAAKptO,EAAKC,EACZ,EACA0pN,cAAe,SAAuB70N,EAAIC,EAAIC,EAAIC,EAAIsJ,EAAIC,GACxD,IAAIovO,EAAM9tO,GAAGhL,EAAIC,GACf84O,EAAM9tO,GAAGjL,EAAIC,GACbiL,EAAMF,GAAG9K,EAAIC,GACbgL,EAAMF,GAAG/K,EAAIC,GACb84O,EAAMjuO,GAAGvB,EAAIC,GACbwvO,EAAMjuO,GAAGxB,EAAIC,GACfyvO,GAAaz+M,GAAIo+M,EAAK5tO,EAAK+tO,EAAKV,IAChCY,GAAa3gN,GAAIugN,EAAK5tO,EAAK+tO,EAAKV,IAChCF,GAAKW,EAAKC,EACZ,EACA57C,IAAK,SAAah+L,EAAIC,EAAIzC,EAAGs8O,EAAIC,EAAIze,GAOnC,GANAwe,GAAMnB,GACNoB,GAAMpB,GAGNv9M,GAAK59B,EAAIjF,KAAKkC,IAAIs/O,GAAM/5O,EACxBk5B,GAAK17B,EAAIjF,KAAKoC,IAAIo/O,GAAM95O,EACpB1H,KAAKoG,IAAIo7O,EAAKD,GAAMf,GAEtB,GAAI/4O,EAAKxC,EAAGyC,EAAKzC,GACjB,GAAIwC,EAAKxC,EAAGyC,EAAKzC,OACZ,CACL,IAGIpB,EAAG5c,EAHHsE,EAAS,SAAgB2Y,GAC3B,OAAO,GAAIe,EAAIjF,KAAKkC,IAAIgC,GAAKuD,EAAIxC,EAAIjF,KAAKoC,IAAI8B,GAAKwD,EACrD,EAQA,GAJAnc,EAAOg2P,GACPh2P,EAAOi2P,GAGHA,IAAOD,EAYT,IAXAA,GAAUxI,IACD,IAAGwI,GAAMxI,KAClByI,GAAUzI,IACD,IAAGyI,GAAMzI,IACdyI,EAAKD,IACPxe,GAAOA,EACPl/N,EAAI09O,EACJA,EAAKC,EACLA,EAAK39O,GAGHk/N,EAGF,IAFAye,GAAMzI,GACNl1O,EAAI09O,EAAKA,EAAKzI,GACT7xP,EAAI,EAAGA,EAAI,GAAK4c,EAAI29O,IAAMv6P,EAAG4c,GAAKi1O,GAAQvtP,EAAOsY,QAGtD,IADAA,EAAI09O,EAAKA,EAAKzI,GAASA,GAClB7xP,EAAI,EAAGA,EAAI,GAAK4c,EAAI29O,IAAMv6P,EAAG4c,GAAQi1O,GAAQvtP,EAAOsY,EAG/D,CACF,GAEF,SAASs9O,GAAY1uO,EAAItK,EAAIE,EAAIu2B,GAC/B,IAAI90C,GAAK2oB,EAAKtK,IAAOsK,EAAKpK,EAAK,EAAIF,GAC/B,EAAIre,GAAKA,EAAI,GAAG80C,EAAGnsB,GAAMtK,EAAKsK,GAAM3oB,EAC1C,CACA,SAASw3P,GAAa7uO,EAAItK,EAAIE,EAAIuJ,EAAIgtB,GACpC,IAKE35B,EALEf,EAAI0N,EAAKa,EAAK,EAAItK,EAAK,EAAIE,EAC7BW,EAAIyJ,EAAKpK,EAAK,EAAIF,EAClB+C,EAAIuH,EAAKtK,EACPhe,EAAK,EACPE,EAAK,EAIH2V,KAAKoG,IAAIlC,GA3qCD,OA6qCVe,EAAI+D,EAAIA,EAAIkC,EAAIhH,IACP,IAEP/Z,IAAO6e,GADP/D,EAAIjF,KAAK2C,KAAKsC,KACEf,EAChB7Z,IAAO2e,EAAI/D,GAAKf,GAIlB/Z,EAAK,GAAM+gB,EAAIlC,EAIb,EAAI7e,GAAMA,EAAK,GAAGy0C,EAAG6iN,GAAMt3P,EAAIsoB,EAAItK,EAAIE,EAAIuJ,IAC3C,EAAIvnB,GAAMA,EAAK,GAAGu0C,EAAG6iN,GAAMp3P,EAAIooB,EAAItK,EAAIE,EAAIuJ,GACjD,CACA,SAAS6vO,GAAM33P,EAAG2oB,EAAItK,EAAIE,EAAIuJ,GAC5B,IAAI/N,EAAI,EAAI/Z,EACV6kB,EAAK9K,EAAIA,EACTzZ,EAAKN,EAAIA,EACX,OAAO6kB,EAAK9K,EAAI4O,EAAK,EAAI9D,EAAK7kB,EAAIqe,EAAK,EAAItE,EAAIzZ,EAAKie,EAAKje,EAAKN,EAAI8nB,CACpE,CACA,IAAI,IAAW,GAAU,GAAO,EAAG,IAAM,GAAQlH,WAAW,MAAQ,KAChE1B,GAAI,IAAI61O,GACZ,SAAS6C,GAAc7zP,GACrB,OAAO,SAAU2P,EAAMmkP,GAErB,IAAK,GAAS,OAAO,EAGrB9zP,EAAK,GAAS2P,GAGdwL,GAAE1T,QAAQwpP,MAAMthP,EAAKoV,QAAQK,UAAU0uO,GAAOn5N,QAQ9C,IAPA,IAAIrgB,EAAKa,GAAEb,GACTC,EAAKY,GAAEZ,GACPC,EAAKW,GAAEX,GACPC,EAAKU,GAAEV,GAIAk2N,EAAKp2N,EAAIo2N,GAAMl2N,IAAMk2N,EAC5B,IAAK,IAAI/5K,EAAKt8C,EAAIs8C,GAAMp8C,IAAMo8C,EAC5B,GAAI,GAAQm9L,cAAcn9L,EAAI+5K,GAC5B,OAAO,EAMb,OAAO,CACT,CACF,CACA,SAASqjB,GAAerkP,EAAM8J,GAC5B,OAAOA,EAAIguD,SAAS93D,EAAKxM,GAAK,EAAGwM,EAAKvM,GAAK,EAC7C,CACA,SAAS6wP,GAActkP,EAAM8J,GAC3B,IAAItW,EAAIwM,EAAKxM,GAAK,EAChBC,EAAIuM,EAAKvM,GAAK,EACdwiB,EAAIjW,EAAK1J,OAAS,EAClBsX,EAAI5N,EAAKzJ,QAAU,EACrB,OAAOuT,EAAIy4O,WAAW/2O,GAAE/gB,IAAI+I,EAAGC,EAAGD,EAAIyiB,EAAGxiB,EAAIma,GAC/C,CACA,SAAS22O,GAAcvkP,EAAM8J,GAC3B,IAAItW,EAAIwM,EAAKxM,GAAK,EAChBC,EAAIuM,EAAKvM,GAAK,EAGhB,OAAO+wP,GAAiB16O,EAAKtW,EAAGC,EAFd,MAAXuM,EAAK6K,GAAa7K,EAAK6K,GAAKrX,EACjB,MAAXwM,EAAK8K,GAAa9K,EAAK8K,GAAKrX,EAErC,CACA,SAAS+wP,GAAiB16O,EAAKtW,EAAGC,EAAGsa,EAAGvT,GACtC,IAQEmM,EACAmH,EACArG,EACAhb,EAXEke,EAAKb,EAAIa,GACXC,EAAKd,EAAIc,GACTC,EAAKf,EAAIe,GACTC,EAAKhB,EAAIgB,GACT3V,EAAK4Y,EAAIva,EACT4B,EAAKoF,EAAI/G,EACP9G,EAAK,EACPE,EAAK,EAKP,IAAKJ,EAAI,EAAGA,EAAI,IAAKA,EAAG,CAiBtB,GAhBU,IAANA,IACFka,GAAKxR,EACL2Y,IAAMnD,EAAKnX,IAEH,IAAN/G,IACFka,EAAIxR,EACJ2Y,EAAIjD,EAAKrX,GAED,IAAN/G,IACFka,GAAKvR,EACL0Y,IAAMlD,EAAKnX,IAEH,IAANhH,IACFka,EAAIvR,EACJ0Y,EAAIhD,EAAKrX,GAEP+O,KAAKoG,IAAIjC,GAAK,OAASmH,EAAI,EAAG,OAAO,EAEzC,GADArG,EAAIqG,EAAInH,EACJA,EAAI,EAAG,CACT,GAAIc,EAAI5a,EAAI,OAAO,EAAe4a,EAAI9a,IAAIA,EAAK8a,EACjD,MAAO,GAAId,EAAI,EAAG,CAChB,GAAIc,EAAI9a,EAAI,OAAO,EAAe8a,EAAI5a,IAAIA,EAAK4a,EACjD,CACF,CACA,OAAO,CACT,CACA,SAASg9O,GAAM/oO,EAAS1b,GACtB0b,EAAQgpO,yBAA2B1kP,EAAKykP,OAAS,aACnD,CACA,SAAS,GAAM/5P,EAAOsvP,GACpB,OAAgB,MAATtvP,EAAgBsvP,EAAOtvP,CAChC,CACA,SAASi6P,GAASz3K,EAAUutK,GAE1B,IADA,IAAItjO,EAAIsjO,EAAMrxP,OACLK,EAAI,EAAGA,EAAI0tB,IAAK1tB,EACvByjF,EAAS03K,aAAanK,EAAMhxP,GAAGiiF,OAAQ+uK,EAAMhxP,GAAG6yC,OAElD,OAAO4wC,CACT,CA6BA,SAAS,GAAMxxD,EAAS1b,EAAMtV,GAC5B,OAAOgzG,GAAWhzG,GA7BpB,SAAkBgxB,EAASkgM,EAAMxmM,GAC/B,IAEI83D,EAFAj3D,EAAIb,EAAO9e,QACbsX,EAAIwH,EAAO7e,SAEb,GAAsB,WAAlBqlN,EAAK1uI,SACPA,EAAWxxD,EAAQmpO,qBAAqBzvO,EAAOzK,GAAK,GAAMixM,EAAKjxM,GAAI,IAAOsL,EAAGb,EAAOxK,GAAK,GAAMgxM,EAAKhxM,GAAI,IAAOgD,EAAGpL,KAAKE,IAAIuT,EAAGrI,GAAK,GAAMguM,EAAK1lM,GAAI,GAAId,EAAOzK,GAAK,GAAMixM,EAAK/wM,GAAI,IAAOoL,EAAGb,EAAOxK,GAAK,GAAMgxM,EAAK9wM,GAAI,IAAO8C,EAAGpL,KAAKE,IAAIuT,EAAGrI,GAAK,GAAMguM,EAAKzlM,GAAI,SAC3P,CAEL,IAAIxL,EAAK,GAAMixM,EAAKjxM,GAAI,GACtBC,EAAK,GAAMgxM,EAAKhxM,GAAI,GACpBC,EAAK,GAAM+wM,EAAK/wM,GAAI,GACpBC,EAAK,GAAM8wM,EAAK9wM,GAAI,GACtB,GAAIH,IAAOE,GAAMD,IAAOE,GAAMmL,IAAMrI,EAG7B,CAGL,IAAIk3O,EAAS,GAAOtiP,KAAKisJ,KAAKx4I,GAAIzT,KAAKisJ,KAAK7gJ,IAC1Cm3O,EAAOD,EAAO53O,WAAW,MAI3B,OAHA63O,EAAK1jP,MAAM4U,EAAGrI,GACdm3O,EAAKC,UAAYL,GAASI,EAAKE,qBAAqBt6O,EAAIC,EAAIC,EAAIC,GAAK8wM,EAAK6+B,OAC1EsK,EAAKG,SAAS,EAAG,EAAGjvO,EAAGrI,GAChB8N,EAAQypO,cAAcL,EAAQ,YACvC,CAVE53K,EAAWxxD,EAAQupO,qBAAqB7vO,EAAOzK,GAAKA,EAAKsL,EAAGb,EAAOxK,GAAKA,EAAKgD,EAAGwH,EAAOzK,GAAKE,EAAKoL,EAAGb,EAAOxK,GAAKE,EAAK8C,EAWzH,CACA,OAAO+2O,GAASz3K,EAAU0uI,EAAK6+B,MACjC,CAE6BvtK,CAASxxD,EAAShxB,EAAOsV,EAAKoV,QAAU1qB,CACrE,CACA,SAASy5C,GAAKzoB,EAAS1b,EAAM9C,GAE3B,OADAA,GAA+B,MAApB8C,EAAKosE,YAAsB,EAAIpsE,EAAKosE,aACjC,IACZ1wD,EAAQ0pO,YAAcloP,EACtBwe,EAAQspO,UAAY,GAAMtpO,EAAS1b,EAAMA,EAAKmkC,OACvC,EAIX,CACA,IAAI,GAAQ,GACZ,SAASz6B,GAAOgS,EAAS1b,EAAM9C,GAC7B,IAAImoP,EAAgC,OAA1BA,EAAKrlP,EAAK06C,aAAuB2qM,EAAK,EAChD,QAAIA,GAAM,MACVnoP,GAAiC,MAAtB8C,EAAK8hP,cAAwB,EAAI9hP,EAAK8hP,eACnC,IACZpmO,EAAQ0pO,YAAcloP,EACtBwe,EAAQ4pO,YAAc,GAAM5pO,EAAS1b,EAAMA,EAAK0J,QAChDgS,EAAQ1T,UAAYq9O,EACpB3pO,EAAQ6pO,QAAUvlP,EAAKwlP,WAAa,OACpC9pO,EAAQ+pO,SAAWzlP,EAAKgiP,YAAc,QACtCtmO,EAAQgqO,WAAa1lP,EAAK2lP,kBAAoB,GAC1CjqO,EAAQkqO,cACVlqO,EAAQkqO,YAAY5lP,EAAK6lP,YAAc,IACvCnqO,EAAQoqO,eAAiB9lP,EAAK+lP,kBAAoB,IAE7C,GAIX,CACA,SAAS,GAAQr/O,EAAG8E,GAClB,OAAO9E,EAAEs/O,OAASx6O,EAAEw6O,QAAUt/O,EAAEnW,MAAQib,EAAEjb,KAC5C,CACA,SAAS01P,GAAOC,GACd,IAAKA,EAAMC,OAAQ,OAAOD,EAAME,OAChC,IAEEpmP,EACAvW,EACA0tB,EAJEu3B,EAAQw3M,EAAMx3M,MAChBzJ,EAAS,GAIX,IAAKx7C,EAAI,EAAG0tB,EAAIu3B,EAAMtlD,OAAQK,EAAI0tB,IAAK1tB,GACrCuW,EAAO0uC,EAAMjlD,IACR8G,MAAQ9G,EACTuW,EAAKgmP,QAAQ/gN,EAAOn8C,KAAKkX,GAG/B,OADAkmP,EAAMC,QAAS,EACRD,EAAME,OAASnhN,EAAOnqC,KAAK,GACpC,CACA,SAAS4rN,GAAMw/B,EAAO7gD,GACpB,IACE57M,EACA0tB,EAFEu3B,EAAQw3M,EAAMx3M,MAGlB,GAAKA,GAAUA,EAAMtlD,OAArB,CACA,IAAIg9P,EAASH,GAAOC,GACpB,GAAIE,GAAUA,EAAOh9P,OAAQ,CAC3B,IAAKK,EAAI,EAAG0tB,EAAIu3B,EAAMtlD,OAAQK,EAAI0tB,IAAK1tB,EAChCilD,EAAMjlD,GAAGu8P,QAAQ3gD,EAAQ32J,EAAMjlD,IAEtCilD,EAAQ03M,CACV,CACA,IAAK38P,EAAI,EAAG0tB,EAAIu3B,EAAMtlD,OAAQK,EAAI0tB,IAAK1tB,EACrC47M,EAAQ32J,EAAMjlD,GATmB,CAWrC,CACA,SAAS48P,GAAUH,EAAO7gD,GACxB,IACEihD,EACA78P,EAFEilD,EAAQw3M,EAAMx3M,MAGlB,IAAKA,IAAUA,EAAMtlD,OAAQ,OAAO,KACpC,IAAIg9P,EAASH,GAAOC,GAEpB,IADIE,GAAUA,EAAOh9P,SAAQslD,EAAQ03M,GAChC38P,EAAIilD,EAAMtlD,SAAUK,GAAK,GAC5B,GAAI68P,EAAMjhD,EAAQ32J,EAAMjlD,IAAK,OAAO68P,EAEtC,GAAI53M,IAAU03M,EACZ,IAA0B38P,GAArBilD,EAAQw3M,EAAMx3M,OAAiBtlD,SAAUK,GAAK,GACjD,IAAKilD,EAAMjlD,GAAGu8P,SACRM,EAAMjhD,EAAQ32J,EAAMjlD,KAAK,OAAO68P,EAI1C,OAAO,IACT,CACA,SAASC,GAAQn3P,GACf,OAAO,SAAUssB,EAASwqO,EAAO9wO,GAC/BsxM,GAAMw/B,GAAO,SAAUlmP,GAChBoV,IAAUA,EAAOmtO,WAAWviP,EAAKoV,SACpCoxO,GAASp3P,EAAMssB,EAAS1b,EAAMA,EAElC,GACF,CACF,CACA,SAASymP,GAAQr3P,GACf,OAAO,SAAUssB,EAASwqO,EAAO9wO,IAC3B8wO,EAAMx3M,MAAMtlD,QAAYgsB,IAAUA,EAAOmtO,WAAW2D,EAAM9wO,SAC5DoxO,GAASp3P,EAAMssB,EAASwqO,EAAMx3M,MAAM,GAAIw3M,EAAMx3M,MAElD,CACF,CACA,SAAS83M,GAASp3P,EAAMssB,EAAS1b,EAAM0uC,GACrC,IAAIxxC,EAA0B,MAAhB8C,EAAK9C,QAAkB,EAAI8C,EAAK9C,QAC9B,IAAZA,IACA9N,EAAKssB,EAASgzB,KAClB+1M,GAAM/oO,EAAS1b,GACXA,EAAKmkC,MAAQA,GAAKzoB,EAAS1b,EAAM9C,IACnCwe,EAAQyoB,OAENnkC,EAAK0J,QAAUA,GAAOgS,EAAS1b,EAAM9C,IACvCwe,EAAQhS,UAEZ,CACA,SAASg9O,GAAO74P,GAEd,OADAA,EAAOA,GAAQuyM,GACR,SAAU1kL,EAASwqO,EAAO1yP,EAAGC,EAAGkzP,EAAIC,GAGzC,OAFApzP,GAAKkoB,EAAQmrO,WACbpzP,GAAKioB,EAAQmrO,WACNR,GAAUH,GAAO,SAAUlmP,GAChC,IAAIwL,EAAIxL,EAAKoV,OAEb,KAAI5J,GAAMA,EAAEssD,SAAS6uL,EAAIC,KAAQp7O,EAEjC,OAAI3d,EAAK6tB,EAAS1b,EAAMxM,EAAGC,EAAGkzP,EAAIC,GAAY5mP,OAA9C,CACF,GACF,CACF,CACA,SAAS8mP,GAAQ13P,EAAM6qB,GACrB,OAAO,SAAUyB,EAAS/N,EAAGna,EAAGC,GAC9B,IAGE4xP,EACAlF,EAJEngP,EAAOgpB,MAAMC,QAAQtb,GAAKA,EAAE,GAAKA,EACnCw2B,EAAiB,MAAVlqB,EAAiBja,EAAKmkC,KAAOlqB,EACpCvQ,EAAS1J,EAAK0J,QAAUgS,EAAQqrO,gBASlC,OANIr9O,IACF27O,EAAKrlP,EAAK06C,YACVylM,EAAKngP,EAAKwlP,UACV9pO,EAAQ1T,UAAkB,MAANq9O,EAAaA,EAAK,EACtC3pO,EAAQ6pO,QAAgB,MAANpF,EAAaA,EAAK,SAE/B/wP,EAAKssB,EAAS/N,KAAaw2B,GAAQzoB,EAAQ0oO,cAAc5wP,EAAGC,IAAMiW,GAAUgS,EAAQqrO,gBAAgBvzP,EAAGC,GAChH,CACF,CACA,SAASuzP,GAAS53P,GAChB,OAAOs3P,GAAOI,GAAQ13P,GACxB,CACA,SAASyR,GAAUrN,EAAGC,GACpB,MAAO,aAAeD,EAAI,IAAMC,EAAI,GACtC,CACA,SAAS+N,GAAOkF,GACd,MAAO,UAAYA,EAAI,GACzB,CAIA,SAASugP,GAAcjnP,GACrB,OAAOa,GAAUb,EAAKxM,GAAK,EAAGwM,EAAKvM,GAAK,EAC1C,CAOA,SAASyzP,GAAah2P,EAAMlD,EAAOm5P,GASjC,SAAS92P,EAAKqrB,EAAS1b,GACrB,IAAIxM,EAAIwM,EAAKxM,GAAK,EAChBC,EAAIuM,EAAKvM,GAAK,EACdiT,EAAI1G,EAAKiQ,OAAS,EACpByL,EAAQ7a,UAAUrN,EAAGC,GACjBiT,GAAGgV,EAAQla,OAAOkF,GAAK20O,IAC3B3/N,EAAQuhO,YACRjvP,EAAM0tB,EAAS1b,GACX0G,GAAGgV,EAAQla,QAAQkF,GACvBgV,EAAQ7a,WAAWrN,GAAIC,EACzB,CACA,MAAO,CACLvC,KAAMA,EACNuyB,IAAK,OACL2jO,QAAQ,EACRz4P,KAvBF,SAAc5F,EAAMiX,GAClBjX,EAAK,YART,SAAoBiX,GAClB,OAAOa,GAAUb,EAAKxM,GAAK,EAAGwM,EAAKvM,GAAK,IAAMuM,EAAKiQ,MAAQ,IAAMzO,GAAOxB,EAAKiQ,OAAS,GACxF,CAMsBo3O,CAAWrnP,IAC7BjX,EAAK,IAAKiF,EAAM,KAAMgS,GACxB,EAqBEsnP,MApBF,SAAelyO,EAAQpV,GAErB,OADAhS,EAAMs1P,GAAaluO,EAAQpV,EAAKiQ,OAAQjQ,GACjC4hP,GAAYxsO,EAAQpV,GAAMa,UAAUb,EAAKxM,GAAK,EAAGwM,EAAKvM,GAAK,EACpE,EAkBEpD,KAAMk2P,GAAQl2P,GACdk3P,KAAMP,GAAS32P,GACf82P,MAAOA,GAASjD,GAAc7zP,GAElC,CACA,IAAI,GAAM62P,GAAa,OA1uBvB,SAAexrO,EAAS1b,GACtB,OAAOw/O,GAAS9jO,QAAQA,EAAjB8jO,CAA0Bx/O,EACnC,IAwxBA,SAASwnP,GAAkBt2P,EAAMlD,EAAOwlL,GActC,SAASnjL,EAAKqrB,EAASgzB,GACrBhzB,EAAQuhO,YACRjvP,EAAM0tB,EAASgzB,EACjB,CACA,IAAI43M,EAAMQ,GAAQz2P,GAWlB,MAAO,CACLa,KAAMA,EACNuyB,IAAK,OACL2jO,QAAQ,EACRz4P,KAhCF,SAAc5F,EAAMiX,GAClB,IAAI0uC,EAAQ1uC,EAAKg/C,KAAKtQ,MAClBA,EAAMtlD,QAAQL,EAAK,IAAKiF,EAAM,KAAM0gD,GAC1C,EA8BE44M,MA7BF,SAAelyO,EAAQ4pC,GACrB,IAAItQ,EAAQsQ,EAAKtQ,MACjB,OAAqB,IAAjBA,EAAMtlD,OACDgsB,GAEPpnB,EAAMs1P,GAAaluO,GAASs5B,GACrBkzM,GAAYxsO,EAAQs5B,EAAM,IAErC,EAsBEr+C,KAAMo2P,GAAQp2P,GACdk3P,KAjBF,SAAc7rO,EAASwqO,EAAO1yP,EAAGC,EAAGkzP,EAAIC,GACtC,IAAIl4M,EAAQw3M,EAAMx3M,MAChBljC,EAAI06O,EAAM9wO,OACZ,OAAKs5B,IAAUA,EAAMtlD,QAAUoiB,IAAMA,EAAEssD,SAAS6uL,EAAIC,GAC3C,MAETpzP,GAAKkoB,EAAQmrO,WACbpzP,GAAKioB,EAAQmrO,WACNP,EAAI5qO,EAASgzB,EAAOl7C,EAAGC,GAAKi7C,EAAM,GAAK,KAChD,EASEy4M,MAAO9C,GACP7wE,IAAKA,EAET,CACA,IAAI,GAAOg0E,GAAkB,QAh0B7B,SAAgB9rO,EAASgzB,GACvB,IAAI1uC,EAAO0uC,EAAM,GACf2lM,EAASr0O,EAAKooO,aAAe,SAC/B,OAAwB,eAAhBpoO,EAAKynP,OAA0BpH,GAAaD,IAAYjZ,MAAMwT,GAAOtG,EAAQr0O,EAAKynP,OAAQznP,EAAKmhO,UAAUzlN,QAAQA,EAAlH,CAA2HgzB,EACpI,IAouBA,SAAkBhoC,EAAGC,GAOnB,IANA,IAIE2/O,EACAh4O,EALE9T,EAAoB,eAAhBkM,EAAE,GAAG+gP,OAA0B9gP,EAAE,GAAKA,EAAE,GAC9CqH,EAAoB,eAAhBtH,EAAE,GAAG+gP,OAA0B,IAAM,IACzCh+P,EAAIid,EAAEtd,OACNqZ,EAAO3V,MAGArD,GAAK,IACS,IAAjBid,EAAEjd,GAAGy9O,UACT54N,EAAI9L,KAAKoG,IAAIlC,EAAEjd,GAAGukB,GAAKxT,IACfiI,IACNA,EAAM6L,EACNg4O,EAAM5/O,EAAEjd,IAGZ,OAAO68P,CACT,IAoFA,SAASoB,GAAUhsO,EAASzhB,GAC1ByhB,EAAQuhO,YACR6D,GAAgB7mP,GAAS8kP,GAAUrjO,EAASzhB,EAAO,EAAG,GAAKyhB,EAAQ3S,KAAK,EAAG,EAAG9O,EAAM3D,OAAS,EAAG2D,EAAM1D,QAAU,GAChHmlB,EAAQle,MACV,CACA,SAASmqP,GAAS3nP,GAChB,IAAI+hP,EAAK,GAAM/hP,EAAK06C,YAAa,GACjC,OAA4B,MAArB16C,EAAK4nP,aAAuB5nP,EAAK4nP,aAAe5nP,EAAK0J,QAAUq4O,EAAK,IAAOA,EAAK,IAAM,GAAMv/O,KAAKoG,IAAIm5O,EAAK,GAAK,CACxH,CAIA,SAAS8F,GAAc9+P,EAAMiX,GAC3B,IAAInW,EAAM89P,GAAS3nP,GACnBjX,EAAK,IAAKg2P,GAAU,KAAM/+O,EAAMnW,EAAKA,GACvC,CAiCA,SAASi+P,GAAcpsO,EAASzhB,EAAOzG,EAAGC,GACxC,IAAI5J,EAAM89P,GAAS1tP,GACnByhB,EAAQuhO,YACR8B,GAAUrjO,EAASzhB,GAAQzG,GAAK,GAAK3J,GAAM4J,GAAK,GAAK5J,EACvD,CACA,IAAIk+P,GAAgBjB,GAAQgB,IACxBE,GAAgBlB,GAAQgB,IAAe,GACvCG,GAAYnB,GAAQgB,IAAe,GA0GvC,IAAI,GAAQ,CACV52P,KAAM,QACNuyB,IAAK,IACL2jO,QAAQ,EACRz4P,KA5JF,SAAgB5F,EAAMiX,GACpBjX,EAAK,YAAak+P,GAAcjnP,GAClC,EA2JEsnP,MApIF,SAAiBlyO,EAAQnb,GACvB,IAAKA,EAAMuD,MAAQvD,EAAMy0C,MAGvB,IAFA,IAAIA,EAAQz0C,EAAMy0C,MAChBpwC,EAAIowC,EAAMtlD,OACHqG,EAAI,EAAGA,EAAI6O,IAAK7O,EACvB2lB,EAAOksO,MAAM5yM,EAAMj/C,GAAG2lB,QAO1B,OAJKnb,EAAMuD,MAAQvD,EAAM3D,OAAS2D,EAAM1D,UAAY0D,EAAMiuP,SACxD9yO,EAAOrb,IAAI,EAAG,GAAGA,IAAIE,EAAM3D,OAAS,EAAG2D,EAAM1D,QAAU,GAEzDqrP,GAAYxsO,EAAQnb,GACbmb,EAAOvU,UAAU5G,EAAMzG,GAAK,EAAGyG,EAAMxG,GAAK,EACnD,EAwHEpD,KA/GF,SAAgBqrB,EAASwqO,EAAO9wO,GAC9B,IAAIpsB,EAAQT,KACZm+N,GAAMw/B,GAAO,SAAUjsP,GACrB,IAAI0sP,EAAK1sP,EAAMzG,GAAK,EAClBozP,EAAK3sP,EAAMxG,GAAK,EAChB00P,EAAOluP,EAAMmuP,iBACblrP,EAA2B,MAAjBjD,EAAMiD,QAAkB,EAAIjD,EAAMiD,SAGzCjD,EAAMyP,QAAUzP,EAAMkqC,OAASjnC,IAClC4qP,GAAcpsO,EAASzhB,EAAO0sP,EAAIC,GAClCnC,GAAM/oO,EAASzhB,GACXA,EAAMkqC,MAAQA,GAAKzoB,EAASzhB,EAAOiD,IACrCwe,EAAQyoB,OAENlqC,EAAMyP,SAAWy+O,GAAQz+O,GAAOgS,EAASzhB,EAAOiD,IAClDwe,EAAQhS,UAKZgS,EAAQtQ,OACRsQ,EAAQ7a,UAAU8lP,EAAIC,GAClB3sP,EAAMuD,MAAMkqP,GAAUhsO,EAASzhB,GAC/Bmb,GAAQA,EAAOvU,WAAW8lP,GAAKC,GAGnClgC,GAAMzsN,GAAO,SAAU+F,GACrBhX,EAAMqH,KAAKqrB,EAAS1b,EAAMoV,EAC5B,IAGIA,GAAQA,EAAOvU,UAAU8lP,EAAIC,GACjClrO,EAAQrQ,UAGJ88O,GAAQluP,EAAMyP,QAAUxM,IAC1B4qP,GAAcpsO,EAASzhB,EAAO0sP,EAAIC,GAClCnC,GAAM/oO,EAASzhB,GACXyP,GAAOgS,EAASzhB,EAAOiD,IACzBwe,EAAQhS,SAGd,GACF,EAoEE69O,KAnEF,SAAc7rO,EAASwqO,EAAO1yP,EAAGC,EAAGkzP,EAAIC,GACtC,IAAIv/L,EAAS9+D,KACb,GAAI29P,EAAM9wO,SAAW8wO,EAAM9wO,OAAO0iD,SAAS6uL,EAAIC,KAAQV,EAAMx3M,MAC3D,OAAO,KAET,IAAIzkC,EAAKzW,EAAIkoB,EAAQmrO,WACnB38O,EAAKzW,EAAIioB,EAAQmrO,WACnB,OAAOR,GAAUH,GAAO,SAAUjsP,GAChC,IAAIqsP,EAAKnxP,EAAIC,EAGToW,EAAIvR,EAAMmb,OACd,IAAI5J,GAAMA,EAAEssD,SAAS6uL,EAAIC,GAAzB,CAGAzxP,EAAK8E,EAAMzG,GAAK,EAChB4B,EAAK6E,EAAMxG,GAAK,EAChB,IAAI40P,EAAKlzP,GAAM8E,EAAM3D,OAAS,GAC5BgyP,EAAKlzP,GAAM6E,EAAM1D,QAAU,GAC3BmX,EAAIzT,EAAMuD,KACZ,IAAIkQ,KAAMi5O,EAAKxxP,GAAMwxP,EAAK0B,GAAMzB,EAAKxxP,GAAMwxP,EAAK0B,GAAhD,CASA,GANA5sO,EAAQtQ,OACRsQ,EAAQ7a,UAAU1L,EAAIC,GACtBD,EAAKwxP,EAAKxxP,EACVC,EAAKwxP,EAAKxxP,EAGNsY,GAAKozO,GAAgB7mP,KAAWguP,GAAUvsO,EAASzhB,EAAOgQ,EAAIC,GAEhE,OADAwR,EAAQrQ,UACD,KAET,IAAI88O,EAAOluP,EAAMmuP,iBACfG,GAA2B,IAAtBrC,EAAMsC,YAGb,OAAID,GAAMJ,GAAQluP,EAAMyP,QAAUs+O,GAActsO,EAASzhB,EAAOgQ,EAAIC,IAClEwR,EAAQrQ,UACDpR,MAITqsP,EAAMD,GAAUpsP,GAAO,SAAU+kD,GAC/B,OAaN,SAAkBA,EAAMxrD,EAAGC,GACzB,QAA6B,IAArBurD,EAAKwpM,aAA2C,UAAlBxpM,EAAKypM,WAAyBzpM,EAAK5pC,QAAU4pC,EAAK5pC,OAAO0iD,SAAStkE,EAAGC,EAC7G,CAfai1P,CAAS1pM,EAAM7pD,EAAIC,GAAMiyD,EAAOkgM,KAAKvoM,EAAMxrD,EAAGC,EAAG0B,EAAIC,GAAM,IACpE,MAGYmzP,IAAOtuP,EAAMkqC,OAASgkN,GAAQluP,EAAMyP,SAAWq+O,GAAcrsO,EAASzhB,EAAOgQ,EAAIC,KAC3Fo8O,EAAMrsP,GAIRyhB,EAAQrQ,UACDi7O,GAAO,KAlC6C,CARvB,CA2CtC,GACF,EAYEa,MAAO7C,GACPjlL,QA5IF,SAAiBt2E,EAAMiX,EAAMkhP,GAE3Bn4P,EAAK,YADKiX,EAAKxC,KAAOyjP,GAAOC,EAAUlhP,EAAMA,GAAQ,KAEvD,EA0IE8yD,WA3JF,SAAoB/pE,EAAMiX,GACxBjX,EAAK,QAAS,cACdA,EAAK,eAAe,GACpB8+P,GAAc9+P,EAAMiX,EACtB,EAwJE2oP,WAvJF,SAAoB5/P,EAAMiX,GACxBjX,EAAK,QAAS,cACdA,EAAK,eAAe,GAChBiX,EAAKooP,iBACPP,GAAc9+P,EAAMiX,GAEpBjX,EAAK,IAAK,GAEd,GAiJI6pP,GAAW,CACb,MAAS,6BACT,cAAe,+BACf,QAAW,OAEb,SAASgW,GAAS5oP,EAAMkhP,GACtB,IAAI9vI,EAAQpxG,EAAKoxG,MAYjB,QAXKA,GAASpxG,EAAKkiD,KAAOliD,EAAKkiD,MAAQkvD,EAAMlvD,OAC3CkvD,EAAQ,CACNvxD,UAAU,EACVvpD,MAAO,EACPC,OAAQ,GAEV2qP,EAASuB,UAAUziP,EAAKkiD,KAAKpyB,MAAK,SAAUshF,GAC1CpxG,EAAKoxG,MAAQA,EACbpxG,EAAKoxG,MAAMlvD,IAAMliD,EAAKkiD,GACxB,KAEKkvD,CACT,CACA,SAASy3I,GAAW7oP,EAAMoxG,GACxB,OAAqB,MAAdpxG,EAAK1J,MAAgB0J,EAAK1J,MAAS86G,GAAUA,EAAM96G,OAA4B,IAAhB0J,EAAK8oP,QAAoB9oP,EAAKzJ,OAASyJ,EAAKzJ,OAAS66G,EAAM96G,MAAQ86G,EAAM76G,OAAS66G,EAAM96G,MAA5F,CACpE,CACA,SAASyyP,GAAY/oP,EAAMoxG,GACzB,OAAsB,MAAfpxG,EAAKzJ,OAAiByJ,EAAKzJ,OAAU66G,GAAUA,EAAM76G,QAA6B,IAAhByJ,EAAK8oP,QAAoB9oP,EAAK1J,MAAQ0J,EAAK1J,MAAQ86G,EAAM76G,OAAS66G,EAAM96G,MAAQ86G,EAAM76G,OAA1F,CACvE,CACA,SAASyyP,GAAapsK,EAAO3mE,GAC3B,MAAiB,WAAV2mE,EAAqB3mE,EAAI,EAAc,UAAV2mE,EAAoB3mE,EAAI,CAC9D,CACA,SAASgzO,GAAaC,EAAUt7O,GAC9B,MAAoB,WAAbs7O,EAAwBt7O,EAAI,EAAiB,WAAbs7O,EAAwBt7O,EAAI,CACrE,CA6DA,IAAI,GAAQ,CACV1c,KAAM,QACNuyB,IAAK,QACL2jO,QAAQ,EACRz4P,KAhEF,SAAgB5F,EAAMiX,EAAMkhP,GAC1B,IAAI73K,EAAMu/K,GAAS5oP,EAAMkhP,GACvBjrO,EAAI4yO,GAAW7oP,EAAMqpE,GACrBz7D,EAAIm7O,GAAY/oP,EAAMqpE,GACtB71E,GAAKwM,EAAKxM,GAAK,GAAKw1P,GAAahpP,EAAK48E,MAAO3mE,GAC7CxiB,GAAKuM,EAAKvM,GAAK,GAAKw1P,GAAajpP,EAAKkpP,SAAUt7O,GAElD7kB,EAAK,QADEsgF,EAAI38C,KAAO28C,EAAIK,UAAYL,EAAIK,YAAcL,EAAI38C,KAAO,GAC/CkmN,GAAS,eAAgB,cACzC7pP,EAAK,YAAa8X,GAAUrN,EAAGC,IAC/B1K,EAAK,QAASktB,GACdltB,EAAK,SAAU6kB,GACf7kB,EAAK,uBAAuC,IAAhBiX,EAAK8oP,OAAmB,OAAS,WAC/D,EAqDExB,MApDF,SAAiBlyO,EAAQpV,GACvB,IAAIqpE,EAAMrpE,EAAKoxG,MACbn7F,EAAI4yO,GAAW7oP,EAAMqpE,GACrBz7D,EAAIm7O,GAAY/oP,EAAMqpE,GACtB71E,GAAKwM,EAAKxM,GAAK,GAAKw1P,GAAahpP,EAAK48E,MAAO3mE,GAC7CxiB,GAAKuM,EAAKvM,GAAK,GAAKw1P,GAAajpP,EAAKkpP,SAAUt7O,GAClD,OAAOwH,EAAO3qB,IAAI+I,EAAGC,EAAGD,EAAIyiB,EAAGxiB,EAAIma,EACrC,EA8CEvd,KA7CF,SAAgBqrB,EAASwqO,EAAO9wO,GAC9B,IAAIizM,EAAS9/N,KACbm+N,GAAMw/B,GAAO,SAAUlmP,GACrB,IAAIoV,GAAWA,EAAOmtO,WAAWviP,EAAKoV,QAAtC,CAEA,IAAIi0D,EAAMu/K,GAAS5oP,EAAMqoN,GACrBpyM,EAAI4yO,GAAW7oP,EAAMqpE,GACrBz7D,EAAIm7O,GAAY/oP,EAAMqpE,GAC1B,GAAU,IAANpzD,GAAiB,IAANrI,EAAf,CAEA,IAEE1Q,EACAisP,EACAC,EACA98P,EALEkH,GAAKwM,EAAKxM,GAAK,GAAKw1P,GAAahpP,EAAK48E,MAAO3mE,GAC/CxiB,GAAKuM,EAAKvM,GAAK,GAAKw1P,GAAajpP,EAAKkpP,SAAUt7O,IAK9B,IAAhB5N,EAAK8oP,SACPK,EAAM9/K,EAAI/yE,MAAQ+yE,EAAI9yE,OACtB6yP,EAAMppP,EAAK1J,MAAQ0J,EAAKzJ,OACpB4yP,GAAQA,GAAOC,GAAQA,GAAOD,IAAQC,IACpCA,EAAMD,GAER11P,IAAMma,GADNthB,EAAI2pB,EAAIkzO,IACO,EACfv7O,EAAIthB,IAGJkH,IAAMyiB,GADN3pB,EAAIshB,EAAIu7O,IACO,EACflzO,EAAI3pB,MAIN+8E,EAAIxpB,UAAYwpB,EAAIK,aACtB+6K,GAAM/oO,EAAS1b,GACf0b,EAAQ0pO,YAA0C,OAA3BloP,EAAU8C,EAAK9C,SAAmBA,EAAU,EACnEwe,EAAQ2tO,uBAAwC,IAAhBrpP,EAAKmkB,OACrCzI,EAAQ8tD,UAAUH,EAAK71E,EAAGC,EAAGwiB,EAAGrI,GA3BJ,CALuB,CAkCvD,GACF,EAQE25O,KAAMb,KACNS,MAAO/mD,GAEP71M,IAAKq+P,GACLU,QAASN,GACTO,QAASN,IAEP,GAAOzB,GAAkB,QA/lC7B,SAAgB9rO,EAASgzB,GACvB,IAAI1uC,EAAO0uC,EAAM,GACf2lM,EAASr0O,EAAKooO,aAAe,SAC/B,OAAOkY,GAAUnZ,MAAMwT,GAAOtG,EAAQr0O,EAAKynP,OAAQznP,EAAKmhO,UAAUzlN,QAAQA,EAAnE4kO,CAA4E5xM,EACrF,IAgvBA,SAAkBhoC,EAAGC,GAMnB,IALA,IAEExR,EACAC,EAHE9I,EAAIkW,KAAK0B,IAAIwC,EAAE,GAAGg0C,aAAe,EAAG,GACtCjxD,EAAIid,EAAEtd,SAICK,GAAK,GACZ,IAAqB,IAAjBid,EAAEjd,GAAGy9O,UACT/xO,EAAKuR,EAAEjd,GAAG+J,EAAImT,EAAE,IAENxR,GADVC,EAAKsR,EAAEjd,GAAGgK,EAAIkT,EAAE,IACIvR,EACX9I,EAAG,OAAOoa,EAAEjd,GAEvB,OAAO,IACT,IAuWA,SAAS+/P,GAAO9tO,EAAS1b,GACvB,IAAI5Q,EAAO4Q,EAAK5Q,KAChB,GAAY,MAARA,EAAc,OAAO,EACzB,IAAIoE,EAAIwM,EAAKxM,GAAK,EAChBC,EAAIuM,EAAKvM,GAAK,EACdq9N,EAAK9wN,EAAKk7E,QAAU,EACpB61I,EAAK/wN,EAAKm7E,QAAU,EACpBz0E,GAAK1G,EAAKiQ,OAAS,GAAKorO,GACxBh0O,EAAQrH,EAAKypP,UACVpiP,GAASA,EAAMjY,OAASA,KAC1B4Q,EAAKypP,UAAYpiP,EAAQ,GAAMjY,IAAOA,KAAOA,GAE5CsX,GAAKgV,EAAQla,QAAUka,EAAQ7a,WACjC6a,EAAQ7a,UAAUrN,EAAGC,GACrBioB,EAAQla,OAAOkF,GACf81O,GAAW9gO,EAASrU,EAAO,EAAG,EAAGypN,EAAIC,GACrCr1M,EAAQla,QAAQkF,GAChBgV,EAAQ7a,WAAWrN,GAAIC,IAEvB+oP,GAAW9gO,EAASrU,EAAO7T,EAAGC,EAAGq9N,EAAIC,EAEzC,CAIA,IAAI24B,GAAS,CACXx4P,KAAM,OACNuyB,IAAK,OACL2jO,QAAQ,EACRz4P,KAtCF,SAAgB5F,EAAMiX,GACpB,IAAI8wN,EAAK9wN,EAAKk7E,QAAU,EACtB61I,EAAK/wN,EAAKm7E,QAAU,EACX,IAAP21I,GAAmB,IAAPC,GACdhoO,EAAK,gBAAiB,sBAExBA,EAAK,YAtaP,SAAuBiX,GACrB,OAAOa,GAAUb,EAAKxM,GAAK,EAAGwM,EAAKvM,GAAK,IAAMuM,EAAKiQ,MAAQ,IAAMzO,GAAOxB,EAAKiQ,OAAS,KAAOjQ,EAAKk7E,QAAUl7E,EAAKm7E,OAAS,IAV5H,SAAeD,EAAQC,GACrB,MAAO,SAAWD,EAAS,IAAMC,EAAS,GAC5C,CAQkI,CAAMn7E,EAAKk7E,QAAU,EAAGl7E,EAAKm7E,QAAU,GAAK,GAC9K,CAoaoBwuK,CAAc3pP,IAChCjX,EAAK,IAAKiX,EAAK5Q,KACjB,EA+BEk4P,MARF,SAAiBlyO,EAAQpV,GACvB,OAAOwpP,GAAOlG,GAAaluO,EAAQpV,EAAKiQ,OAAQjQ,GAAQoV,EAAO3qB,IAAI,EAAG,EAAG,EAAG,GAAKm3P,GAAYxsO,EAAQpV,GAAM,EAC7G,EAOE3P,KAAMk2P,GAAQiD,IACdjC,KAAMP,GAASwC,IACfrC,MAAOjD,GAAcsF,KASvB,SAASI,GAAOluO,EAAS1b,GACvB0b,EAAQuhO,YACR8B,GAAUrjO,EAAS1b,EACrB,CACA,IAAI+I,GAAO,CACT7X,KAAM,OACNuyB,IAAK,OACL2jO,QAAQ,EACRz4P,KAfF,SAAgB5F,EAAMiX,GACpBjX,EAAK,IAAKg2P,GAAU,KAAM/+O,GAC5B,EAcEsnP,MAbF,SAAiBlyO,EAAQpV,GACvB,IAAIxM,EAAGC,EACP,OAAOmuP,GAAYxsO,EAAO3qB,IAAI+I,EAAIwM,EAAKxM,GAAK,EAAGC,EAAIuM,EAAKvM,GAAK,EAAGD,EAAIwM,EAAK1J,OAAS,EAAG7C,EAAIuM,EAAKzJ,QAAU,GAAIyJ,EAC9G,EAWE3P,KAAMk2P,GAAQqD,IACdrC,KAAMP,GAAS4C,IACfzC,MAAO7C,IAWT,SAAS,GAAK5oO,EAAS1b,EAAM9C,GAC3B,IAAIyN,EAAIC,EAAIC,EAAIC,EAChB,SAAI9K,EAAK0J,SAAUA,GAAOgS,EAAS1b,EAAM9C,MACvCyN,EAAK3K,EAAKxM,GAAK,EACfoX,EAAK5K,EAAKvM,GAAK,EACfoX,EAAgB,MAAX7K,EAAK6K,GAAa7K,EAAK6K,GAAKF,EACjCG,EAAgB,MAAX9K,EAAK8K,GAAa9K,EAAK8K,GAAKF,EACjC8Q,EAAQuhO,YACRvhO,EAAQta,OAAOuJ,EAAIC,GACnB8Q,EAAQilN,OAAO91N,EAAIC,IACZ,EAGX,CAeA,IAAI4+G,GAAO,CACTx4H,KAAM,OACNuyB,IAAK,OACL2jO,QAAQ,EACRz4P,KAzCF,SAAgB5F,EAAMiX,GACpBjX,EAAK,YAAak+P,GAAcjnP,IAChCjX,EAAK,KAAiB,MAAXiX,EAAK6K,GAAa7K,EAAK6K,IAAM7K,EAAKxM,GAAK,GAAK,GACvDzK,EAAK,KAAiB,MAAXiX,EAAK8K,GAAa9K,EAAK8K,IAAM9K,EAAKvM,GAAK,GAAK,EACzD,EAsCE6zP,MArCF,SAAiBlyO,EAAQpV,GACvB,IAAI2K,EAAIC,EACR,OAAOg3O,GAAYxsO,EAAO3qB,IAAIkgB,EAAK3K,EAAKxM,GAAK,EAAGoX,EAAK5K,EAAKvM,GAAK,EAAc,MAAXuM,EAAK6K,GAAa7K,EAAK6K,GAAKF,EAAe,MAAX3K,EAAK8K,GAAa9K,EAAK8K,GAAKF,GAAK5K,EACrI,EAmCE3P,KApBF,SAAgBqrB,EAASwqO,EAAO9wO,GAC9BsxM,GAAMw/B,GAAO,SAAUlmP,GACrB,IAAIoV,GAAWA,EAAOmtO,WAAWviP,EAAKoV,QAAtC,CACA,IAAIlY,EAA0B,MAAhB8C,EAAK9C,QAAkB,EAAI8C,EAAK9C,QAC1CA,GAAW,GAAKwe,EAAS1b,EAAM9C,KACjCunP,GAAM/oO,EAAS1b,GACf0b,EAAQhS,SAJ2C,CAMvD,GACF,EAYE69O,KAAMb,IAXR,SAAehrO,EAAS1b,EAAMxM,EAAGC,GAC/B,QAAKioB,EAAQqrO,kBACN,GAAKrrO,EAAS1b,EAAM,IAAM0b,EAAQqrO,gBAAgBvzP,EAAGC,GAC9D,IASE0zP,MAAO5C,IAELv2P,GAAQk5P,GAAa,SAxsCzB,SAAiBxrO,EAAS1b,GACxB,OAAQA,EAAKg/C,KAAKhxD,OAASgS,EAAKhS,OAAO0tB,QAAQA,EAAxC,CAAiD1b,EAC1D,IAusCIgxB,GAASk2N,GAAa,UAtsC1B,SAAkBxrO,EAAS1b,GACzB,OAAO4gP,GAAYllO,QAAQA,EAApBklO,CAA6B5gP,EACtC,GAosC8CqkP,IAG1CwF,GAAatlD,KACbulD,GAAc,CAChBvzP,OAAQ8S,GACRwS,aAAcA,GACdkuO,cAAeA,GACfzzP,MAAOyzP,GACPj6P,OAAQk6P,IAGV,SAASA,GAAUC,GACjBH,GAAYxzP,MAAQ2zP,GAAO,GAAUpuO,GAAekuO,EACtD,CAGA,SAASA,GAAc/pP,EAAMoJ,GAC3B,OAAO8gP,GAAeC,GAAUnqP,EAAMoJ,GAAOC,GAASrJ,GACxD,CACA,SAASkqP,GAAe9gP,EAAMghP,GAC5B,SAAU,GAAMhhP,EAAKhgB,OAASghQ,EAChC,CAGA,SAASvuO,GAAa7b,EAAMoJ,GAC1B,OAAOC,GAASrJ,IAAS,KAAOoJ,EAAO+gP,GAAUnqP,EAAMoJ,IAAS,EAAIihP,GAAcjhP,EAAMG,GAAKvJ,GAC/F,CACA,SAASqqP,GAAcjhP,EAAMkhP,GAC3B,IAAIlhO,EAAM,IAAIttB,OAAOwuP,EAAa,MAAMxuP,OAAOsN,GAC3C9S,EAAQuzP,GAAWt/P,IAAI6+B,GAM3B,YALcpK,IAAV1oB,IACF,GAAQiT,KAAO+gP,EACfh0P,EAAQ,GAAQwlB,YAAY1S,GAAM9S,MAClCuzP,GAAWp/P,IAAI2+B,EAAK9yB,IAEfA,CACT,CACA,SAAS+S,GAASrJ,GAChB,OAAwB,MAAjBA,EAAKqJ,UAAoBrJ,EAAKqJ,UAAY,EAAI,EACvD,CACA,SAASC,GAAWtJ,GAClB,OAA0B,MAAnBA,EAAKsJ,WAAqBtJ,EAAKsJ,WAAaD,GAASrJ,GAAQ,CACtE,CAIA,SAASuqP,GAAUvqP,GACjB,OAJiBivB,EAIAjvB,EAAKwqP,WAAaxqP,EAAKoJ,OAAS,GAAQpJ,EAAKoJ,MAAQpJ,EAAKoJ,KAAKyI,MAAM7R,EAAKwqP,WAAaxqP,EAAKoJ,KAHtG,GAAQ6lB,GAAKA,EAAE7lC,OAAS,EAAI6lC,EAAIA,EAAE,GAAKA,EADhD,IAAmBA,CAKnB,CACA,SAASw7N,GAAgBzqP,GACvB,IAAIg/O,EAAKuL,GAAUvqP,GACnB,OAAQ,GAAQg/O,GAAMA,EAAG51P,OAAS,EAAI,GAAKkgB,GAAWtJ,EACxD,CACA,SAASmqP,GAAUnqP,EAAMye,GACvB,IAAIrV,EAAe,MAARqV,EAAe,IAAMA,EAAO,IAAIrC,OAC3C,OAAOpc,EAAKi8N,MAAQ,GAAK7yN,EAAKhgB,OAiBhC,SAAkB4W,EAAMoJ,GACtB,IAAI6yN,GAASj8N,EAAKi8N,MAChB3lO,EAjBJ,SAAqB0J,GACnB,GAAI8pP,GAAYxzP,QAAUulB,GAAc,CAEtC,IAAIyuO,EAAc/gP,GAAKvJ,GACvB,OAAO,SAAUoJ,GACf,OAAOihP,GAAcjhP,EAAMkhP,EAC7B,CACF,CAEE,IAAIF,EAAoB/gP,GAASrJ,GACjC,OAAO,SAAUoJ,GACf,OAAO8gP,GAAe9gP,EAAMghP,EAC9B,CAEJ,CAGYM,CAAY1qP,GACtB,GAAI1J,EAAM8S,GAAQ6yN,EAAO,OAAO7yN,EAChC,IAIE0gC,EAJE+mI,EAAW7wK,EAAK6wK,UAAY,IAC9Br3D,EAAmB,QAAbx5G,EAAKqsL,IACXoW,EAAK,EACLC,EAAKt5L,EAAKhgB,OAGZ,GADA6yO,GAAS3lO,EAAMu6K,GACXr3D,EAAK,CACP,KAAOipF,EAAKC,GACV54J,EAAM24J,EAAKC,IAAO,EACdpsM,EAAM8S,EAAKmG,MAAMu6B,IAAQmyL,EAAOx5B,EAAK34J,EAAM,EAAO44J,EAAK54J,EAE7D,OAAO+mI,EAAWznK,EAAKmG,MAAMkzL,EAC/B,CACE,KAAOA,EAAKC,GACV54J,EAAM,GAAK24J,EAAKC,IAAO,GACnBpsM,EAAM8S,EAAKmG,MAAM,EAAGu6B,IAAQmyL,EAAOx5B,EAAK34J,EAAS44J,EAAK54J,EAAM,EAElE,OAAO1gC,EAAKmG,MAAM,EAAGkzL,GAAM5xB,CAE/B,CAxCyC,CAAS7wK,EAAMoJ,GAAQA,CAChE,CAwCA,SAAS4S,GAAWhc,EAAM2qP,GACxB,IAAIphP,EAAOvJ,EAAKuJ,KAChB,OAAQohP,GAASphP,EAAO2E,OAAO3E,GAAM4E,QAAQ,KAAM,KAAQ5E,IAAS,YACtE,CACA,SAASA,GAAKvJ,EAAM2qP,GAClB,OAAa3qP,EAAKkc,UAAYlc,EAAKkc,UAAY,IAAM,KAAOlc,EAAKmc,YAAcnc,EAAKmc,YAAc,IAAM,KAAOnc,EAAKic,WAAajc,EAAKic,WAAa,IAAM,IAAM5S,GAASrJ,GAAQ,MAAQgc,GAAWhc,EAAM2qP,EAC3M,CACA,SAAS,GAAO3qP,GAId,IAAIkpP,EAAWlpP,EAAKkpP,SAClBt7O,EAAIvE,GAASrJ,GACf,OAAOwC,KAAKwoB,MAAmB,QAAbk+N,EAAqB,IAAOt7O,EAAiB,WAAbs7O,EAAwB,GAAOt7O,EAAiB,WAAbs7O,GAAyB,IAAOt7O,EAAiB,aAAbs7O,EAA0B,IAAOt7O,EAAI,GAAMtE,GAAWtJ,GAAqB,gBAAbkpP,EAA6B,IAAOt7O,EAAI,GAAMtE,GAAWtJ,GAAQ,EAC1P,CApGAgqP,IAAU,GAqGV,IAAIxgP,GAAY,CACd,KAAQ,QACR,OAAU,SACV,MAAS,OAEPohP,GAAa,IAAIvJ,GACrB,SAASwJ,GAAY7qP,GACnB,IAGE1T,EAHEkH,EAAIwM,EAAKxM,GAAK,EAChBC,EAAIuM,EAAKvM,GAAK,EACdgU,EAAIzH,EAAKu2D,QAAU,EASrB,OAPI9uD,IACFnb,GAAK0T,EAAKkmB,OAAS,GAAKo1N,GACxB9nP,GAAKiU,EAAIjF,KAAKkC,IAAIpY,GAClBmH,GAAKgU,EAAIjF,KAAKoC,IAAItY,IAEpBs+P,GAAWjgP,GAAKnX,EAChBo3P,GAAWhgP,GAAKnX,EACTm3P,EACT,CAkBA,SAAStD,GAAMlyO,EAAQpV,EAAM0jJ,GAC3B,IASEztI,EATErI,EAAIk8O,GAAYvzP,OAAOyJ,GACzB0G,EAAI1G,EAAK48E,MACTj2E,EAAIkkP,GAAY7qP,GAChBxM,EAAImT,EAAEgE,GACNlX,EAAIkT,EAAEiE,GACNzV,EAAK6K,EAAK7K,IAAM,EAChBC,GAAM4K,EAAK5K,IAAM,GAAK,GAAO4K,GAAQwC,KAAKwoB,MAAM,GAAMpd,GAEtDoxO,EAAKuL,GAAUvqP,GAsBjB,GAlBI,GAAQg/O,IAEVpxO,GAAKtE,GAAWtJ,IAASg/O,EAAG51P,OAAS,GACrC6sB,EAAI+oO,EAAG9kO,QAAO,SAAUjE,EAAG3pB,GACzB,OAAOkW,KAAKE,IAAIuT,EAAG6zO,GAAYxzP,MAAM0J,EAAM1T,GAC7C,GAAG,IAGH2pB,EAAI6zO,GAAYxzP,MAAM0J,EAAMg/O,GAIpB,WAANt4O,EACFvR,GAAM8gB,EAAI,EACK,UAANvP,IACTvR,GAAM8gB,GAERb,EAAO3qB,IAAI0K,GAAM3B,EAAG4B,GAAM3B,EAAG0B,EAAK8gB,EAAG7gB,EAAKwY,GACtC5N,EAAKiQ,QAAUyzI,EACjBtuI,EAAO5T,OAAOxB,EAAKiQ,MAAQorO,GAAU7nP,EAAGC,QACnC,GAAa,IAATiwJ,EACT,OAAOtuI,EAAOgtO,cAAcpiP,EAAKiQ,MAAQorO,GAAU7nP,EAAGC,GAExD,OAAO2hB,CACT,CAyEA,IAAI,GAAO,CACTlkB,KAAM,OACNuyB,IAAK,OACL2jO,QAAQ,EACRz4P,KAnIF,SAAc5F,EAAMiX,GAClB,IAME1T,EANE6I,EAAK6K,EAAK7K,IAAM,EAClBC,GAAM4K,EAAK5K,IAAM,GAAK,GAAO4K,GAC7B2G,EAAIkkP,GAAY7qP,GAChBxM,EAAImT,EAAEgE,GACNlX,EAAIkT,EAAEiE,GACNlE,EAAI1G,EAAKiQ,OAAS,EAEpBlnB,EAAK,cAAeygB,GAAUxJ,EAAK48E,QAAU,SACzCl2E,GACFpa,EAAIuU,GAAUrN,EAAGC,GAAK,IAAM+N,GAAOkF,IAC/BvR,GAAMC,KAAI9I,GAAK,IAAMuU,GAAU1L,EAAIC,KAEvC9I,EAAIuU,GAAUrN,EAAI2B,EAAI1B,EAAI2B,GAE5BrM,EAAK,YAAauD,EACpB,EAoHEg7P,MAAOA,GACPj3P,KA9EF,SAAcqrB,EAASwqO,EAAO9wO,GAC5BsxM,GAAMw/B,GAAO,SAAUlmP,GACrB,IACE2G,EACAnT,EACAC,EACAhK,EACAqhQ,EACA9L,EACA/0N,EAPE/sB,EAA0B,MAAhB8C,EAAK9C,QAAkB,EAAI8C,EAAK9C,QAQ9C,KAAIkY,IAAWA,EAAOmtO,WAAWviP,EAAKoV,SAE1B,IAAZlY,GAAiB8C,EAAKqJ,UAAY,GAAkB,MAAbrJ,EAAKoJ,MAAqC,IAArBpJ,EAAKoJ,KAAKhgB,QAFtE,CAkBA,GAfAsyB,EAAQnS,KAAOA,GAAKvJ,GACpB0b,EAAQlS,UAAYxJ,EAAK48E,OAAS,OAElCppF,GADAmT,EAAIkkP,GAAY7qP,IACV2K,GAAIlX,EAAIkT,EAAEiE,GACZ5K,EAAKiQ,QACPyL,EAAQtQ,OACRsQ,EAAQ7a,UAAUrN,EAAGC,GACrBioB,EAAQla,OAAOxB,EAAKiQ,MAAQorO,IAC5B7nP,EAAIC,EAAI,GAGVD,GAAKwM,EAAK7K,IAAM,EAChB1B,IAAMuM,EAAK5K,IAAM,GAAK,GAAO4K,GAC7Bg/O,EAAKuL,GAAUvqP,GACfykP,GAAM/oO,EAAS1b,GACX,GAAQg/O,GAEV,IADA8L,EAAKxhP,GAAWtJ,GACXvW,EAAI,EAAGA,EAAIu1P,EAAG51P,SAAUK,EAC3BwgC,EAAMkgO,GAAUnqP,EAAMg/O,EAAGv1P,IACrBuW,EAAKmkC,MAAQA,GAAKzoB,EAAS1b,EAAM9C,IACnCwe,EAAQqvO,SAAS9gO,EAAKz2B,EAAGC,GAEvBuM,EAAK0J,QAAUA,GAAOgS,EAAS1b,EAAM9C,IACvCwe,EAAQsvO,WAAW/gO,EAAKz2B,EAAGC,GAE7BA,GAAKq3P,OAGP7gO,EAAMkgO,GAAUnqP,EAAMg/O,GAClBh/O,EAAKmkC,MAAQA,GAAKzoB,EAAS1b,EAAM9C,IACnCwe,EAAQqvO,SAAS9gO,EAAKz2B,EAAGC,GAEvBuM,EAAK0J,QAAUA,GAAOgS,EAAS1b,EAAM9C,IACvCwe,EAAQsvO,WAAW/gO,EAAKz2B,EAAGC,GAG3BuM,EAAKiQ,OAAOyL,EAAQrQ,SArCkE,CAsC5F,GACF,EA4BEk8O,KAAMb,IA3BR,SAAahrO,EAAS1b,EAAMxM,EAAGC,EAAGkzP,EAAIC,GACpC,GAAI5mP,EAAKqJ,UAAY,EAAG,OAAO,EAC/B,IAAKrJ,EAAKiQ,MAAO,OAAO,EAGxB,IAAItJ,EAAIkkP,GAAY7qP,GAClB4P,EAAKjJ,EAAEgE,GACPkF,EAAKlJ,EAAEiE,GACPY,EAAI87O,GAAMsD,GAAY5qP,EAAM,GAC5B0G,GAAK1G,EAAKiQ,MAAQorO,GAClB32O,EAAMlC,KAAKkC,IAAIgC,GACf9B,EAAMpC,KAAKoC,IAAI8B,GACfiP,EAAKjR,EAAMiiP,EAAK/hP,EAAMgiP,GAAMh3O,EAAKlL,EAAMkL,EAAKhL,EAAMiL,GAClD+F,EAAKhR,EAAM+hP,EAAKjiP,EAAMkiP,GAAM/2O,EAAKjL,EAAMgL,EAAKlL,EAAMmL,GACpD,OAAOrE,EAAEssD,SAASniD,EAAIC,EACxB,IAaEuxO,MAZF,SAAuBnnP,EAAM8J,GAC3B,IAAInD,EAAI2gP,GAAMsD,GAAY5qP,EAAM,GAChC,OAAOwkP,GAAiB16O,EAAKnD,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,KAAO69O,GAAiB16O,EAAKnD,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,KAAO69O,GAAiB16O,EAAKnD,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,KAAO69O,GAAiB16O,EAAKnD,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GACtM,GAWI24O,GAAQkI,GAAkB,SAh9C9B,SAAiB9rO,EAASgzB,GACxB,OAAOmyM,GAAWnlO,QAAQA,EAAnBmlO,CAA4BnyM,EACrC,IAmvBA,SAAmBhoC,EAAGC,GAKpB,IAJA,IACExR,EACAC,EAFE3L,EAAIid,EAAEtd,SAIDK,GAAK,GACZ,IAAqB,IAAjBid,EAAEjd,GAAGy9O,UACT/xO,EAAKuR,EAAEjd,GAAG+J,EAAImT,EAAE,IAENxR,GADVC,EAAKsR,EAAEjd,GAAGgK,EAAIkT,EAAE,IACIvR,GACpBD,EAAKuR,EAAEjd,GAAGojC,MAAQ,GACJ13B,EAAI,OAAOuR,EAAEjd,GAE7B,OAAO,IACT,IA8sBIwhQ,GAAQ,CACVhjD,IAAK,GACL92J,KAAM,GACNl3C,MAAO,GACPm3G,MAAO,GACP3yF,KAAM,GACNrvB,KAAMs6P,GACN3gP,KAAMA,GACN2gH,KAAMA,GACN17H,MAAOA,GACPgjC,OAAQA,GACR5nB,KAAM,GACNk2O,MAAOA,IAET,SAAS4L,GAAUlrP,EAAM8oB,EAAM2sH,GAC7B,IAAIvkJ,EAAO+5P,GAAMjrP,EAAKg/C,KAAKypM,UACzBnB,EAAQx+N,GAAQ53B,EAAKo2P,MAEvB,OADIp2P,EAAKk2P,SAAQpnP,EAAOA,EAAKg/C,MACtBsoM,EAAMtnP,EAAKoV,SAAWpV,EAAKoV,OAAS,IAAIisO,IAAWrhP,EAAMy1I,EAClE,CACA,IAAI01G,GAAQ,CACVnsM,KAAM,MAER,SAASosM,GAAUpsM,EAAM5pC,EAAQqgI,GAC/B,IAIEhsJ,EACA0tB,EACAnX,EACAwL,EAPEta,EAAO+5P,GAAMjsM,EAAKypM,UACpBnB,EAAQp2P,EAAKo2P,MACb54M,EAAQsQ,EAAKtQ,MACb28M,EAAW38M,GAASA,EAAMtlD,OAK5B,GAAI8H,EAAKk2P,OAUP,OATIiE,EACFrrP,EAAO0uC,EAAM,IAGby8M,GAAMnsM,KAAOA,EACbh/C,EAAOmrP,IAET3/O,EAAI0/O,GAAUlrP,EAAMsnP,EAAO7xG,GAC3BrgI,EAASA,GAAUA,EAAOksO,MAAM91O,IAAMA,EAIxC,GADA4J,EAASA,GAAU4pC,EAAK5pC,QAAU4pC,EAAK5pC,OAAOtd,SAAW,IAAIupP,GACzDgK,EACF,IAAK5hQ,EAAI,EAAG0tB,EAAIu3B,EAAMtlD,OAAQK,EAAI0tB,IAAK1tB,EACrC2rB,EAAOksO,MAAM4J,GAAUx8M,EAAMjlD,GAAI69P,EAAO7xG,IAG5C,OAAOz2F,EAAK5pC,OAASA,CACvB,CACA,IAAI+T,GAAO,CAAC,WAAY,OAAQ,OAAQ,cAAe,OAAQ,QAAS,SAAU,IAAK,IAAK,QAAS,SAAU,QAAS,WAExH,OAAQ,cAAe,UAAW,QAElC,SAAU,gBAAiB,cAAe,YAE1C,aAAc,mBAEd,mBAAoB,eAEpB,aAAc,WAAY,cAAe,cAEzC,eAAgB,WAEhB,sBAAuB,uBAEvB,yBAA0B,0BAA2B,cAAe,UAAW,SAAU,UAEzF,MAAO,SAAU,SAEjB,OAAQ,SAAU,SAElB,KAAM,KAEN,OAAQ,QAER,OAAQ,QAAS,QAAS,SAAU,MAAO,KAAM,KAEjD,WAAY,QAAS,YAAa,aAAc,OAAQ,WAAY,aAAc,YAAa,cAE/F,cAAe,OAAQ,WAAY,uBAGnC,SAASmiO,GAAYpF,EAAO93M,GAC1B,OAAO7E,KAAKF,UAAU68M,EAAO/8N,GAAMilB,EACrC,CACA,SAASm9M,GAAcn0H,GAErB,OAAOo0H,GADqB,iBAATp0H,EAAoB7tF,KAAKyF,MAAMooF,GAAQA,EAE5D,CACA,SAASo0H,GAAWtF,GAClB,IAEE/rP,EACA1Q,EACA0tB,EAJEjmB,EAAOg1P,EAAMuC,SACf/5M,EAAQw3M,EAAMx3M,MAIhB,GAAIA,EACF,IAAKjlD,EAAI,EAAG0tB,EAAIu3B,EAAMtlD,OAAQK,EAAI0tB,IAAK1tB,EACrC0Q,EAASjJ,EAAO,OAAS,QACzBw9C,EAAMjlD,GAAG0Q,GAAU+rP,EACfx3M,EAAMjlD,GAAGu8P,SAAQt3M,EAAMjlD,GAAG0Q,GAAQgsP,QAAS,GAC3C,WAAaj1P,GAAQiJ,IAASqxP,GAAW98M,EAAMjlD,IAIvD,OADIyH,GAAMk6P,GAAUlF,GACbA,CACT,CACA,SAASuF,GAAWvF,GACd/8P,UAAUC,OACZb,KAAKurE,KAAOy3L,GAAcrF,IAE1B39P,KAAKurE,KAAO43L,GAAW,CACrBjD,SAAU,QACVj+P,KAAM,OACNo+D,KAAM,UAERrgE,KAAKurE,KAAKplB,MAAQ,CAAC,IAAI6yM,GAAUh5P,KAAKurE,OAE1C,CAaA,SAAS43L,GAAW/8N,EAAK10B,GACvB,IAAI+kD,EAAO,CACT5pC,OAAQ,IAAIisO,GACZ7jP,OAAQmxB,EAAInxB,KACZvD,MAAOA,EACPuuP,aAAiC,IAApB75N,EAAI65N,YACjB95M,MAAO,GACP+5M,SAAU95N,EAAI85N,SACdj+P,KAAMmkC,EAAInkC,WAAQw0B,EAClB4pC,KAAMj6B,EAAIi6B,WAAQ5pC,EAClBgnO,OAAQr3N,EAAIq3N,QAAU,GAUxB,OANgB,MAAZr3N,EAAIgyB,OACN3B,EAAK2B,KAAOhyB,EAAIgyB,MAEdhyB,EAAI4gC,cACNvQ,EAAKuQ,YAAc5gC,EAAI4gC,aAElBvQ,CACT,CAGA,SAAS2sM,GAAU3kK,EAAKvjE,EAAKmoO,GAI3B,OAHK5kK,GAA2B,oBAAb9zF,UAA4BA,SAAS+Z,gBACtD+5E,EAAM9zF,UAED8zF,EAAM4kK,EAAK5kK,EAAIknJ,gBAAgB0d,EAAInoO,GAAOujE,EAAI/5E,cAAcwW,GAAO,IAC5E,CAGA,SAASooO,GAAQ94P,EAAI0wB,GACnBA,EAAMA,EAAItc,cAIV,IAHA,IAAIupJ,EAAQ39J,EAAGo1L,WACb1+L,EAAI,EACJ0tB,EAAIu5I,EAAMtnK,OACLK,EAAI0tB,IAAK1tB,EAAG,GAAIinK,EAAMjnK,GAAGqiQ,QAAQ3kP,gBAAkBsc,EACxD,OAAOitI,EAAMjnK,EAEjB,CAIA,SAASsiQ,GAASh5P,EAAIxC,EAAOkzB,EAAKmoO,GAChC,IACEpgP,EADE9E,EAAI3T,EAAGo1L,WAAW53L,GAOtB,OALKmW,GAAKA,EAAEolP,QAAQ3kP,gBAAkBsc,EAAItc,gBACxCqE,EAAI9E,GAAK,KACTA,EAAIilP,GAAU54P,EAAG8gF,cAAepwD,EAAKmoO,GACrC74P,EAAGylE,aAAa9xD,EAAG8E,IAEd9E,CACT,CAGA,SAASslP,GAASj5P,EAAIxC,GAGpB,IAFA,IAAImgK,EAAQ39J,EAAGo1L,WACbx+J,EAAO+mI,EAAMtnK,OACRugC,EAAOp5B,GAAOwC,EAAG6E,YAAY84J,IAAQ/mI,IAC5C,OAAO52B,CACT,CAGA,SAASk5P,GAASjtM,GAChB,MAAO,QAAUA,EAAKypM,UAAYzpM,EAAK4J,KAAO,SAAW5J,EAAK4J,KAAO,KAAO5J,EAAKx0D,KAAO,IAAMw0D,EAAKx0D,KAAO,GAC5G,CACA,SAAS,GAAM8I,EAAOP,GACpB,IAAIgW,EAAOhW,EAAGuE,wBACd,MAAO,CAAChE,EAAMI,QAAUqV,EAAKxR,MAAQxE,EAAGm5P,YAAc,GAAI54P,EAAMK,QAAUoV,EAAKvR,KAAOzE,EAAGo5P,WAAa,GACxG,CA2BA,SAASC,GAAQ3K,EAAc4K,GAC7B9jQ,KAAK8xJ,QAAU,KACf9xJ,KAAK+jQ,UAAY,CAAC,EAClB/jQ,KAAK6hO,QAAUq3B,GAAgB,KAC/Bl5P,KAAKgkQ,SAAWF,GAAiBG,EACnC,CAIA,SAASA,GAAexgO,EAAS14B,EAAO0M,EAAMtV,GAC5CshC,EAAQ9zB,UAAU26C,aAAa,QAASnoD,GAAS,GACnD,CAmLA,SAAS+hQ,GAAS5rC,GAChBt4N,KAAKmkQ,IAAM,KACXnkQ,KAAKokQ,SAAW,KAChBpkQ,KAAK6hO,QAAU,IAAIo3B,GAAe3gC,EACpC,CA/SA4qC,GAAWhjQ,UAAY,CACrB6gD,OAAQ,SAAgB8E,GACtB,OAAOk9M,GAAY/iQ,KAAKurE,KAAM1lB,GAAU,EAC1C,EACA4Q,KAAM,SAAc4tM,EAAS3yP,EAAO1J,GAElC,IAAIyuD,EAAO0sM,GAAWkB,EADtB3yP,EAAQA,GAAS1R,KAAKurE,KAAKplB,MAAM,IAIjC,OAFAz0C,EAAMy0C,MAAMn+C,GAASyuD,EACjBA,EAAKgnM,SAAQhnM,EAAK/kD,MAAMksP,QAAS,GAC9BnnM,CACT,GA+GFotM,GAAQ3jQ,UAAY,CAUlB+iQ,WAAY,SAAoBz4P,EAAIqzD,EAAQ9pC,GAG1C,OAFA/zB,KAAKmkQ,IAAM35P,EACXxK,KAAKskQ,KAAOvwO,GAAO,KACZ/zB,KAAK69D,OAAOA,EACrB,EAKAluD,QAAS,WACP,OAAO3P,KAAKmkQ,GACd,EAMA58P,OAAQ,WACN,OAAOvH,KAAKmkQ,KAAOnkQ,KAAKmkQ,IAAIj0L,UAC9B,EAIArS,OAAQ,SAAgB0mM,GACtB,OAAI3jQ,UAAUC,QACZb,KAAKukQ,QAAUA,GAAW,CAAC,EAAG,GACvBvkQ,MAEAA,KAAKukQ,QAAQv9O,OAExB,EAIA22O,MAAO,SAAe6G,GACpB,OAAK5jQ,UAAUC,QACfb,KAAKwkQ,OAASA,EACPxkQ,MAFuBA,KAAKwkQ,MAGrC,EAIArkQ,GAAI,WAAe,EAInBmB,IAAK,WAAgB,EAQrBmjQ,cAAe,SAAuBp/O,EAAG1c,EAAM86B,GAC7C,IAAK,IAAIviC,EAAImkB,EAAIA,EAAExkB,OAAS,IAAKK,GAAK,GACpC,GAAImkB,EAAEnkB,GAAGyH,OAASA,KAAU86B,GAAWpe,EAAEnkB,GAAGuiC,UAAYA,GACtD,OAAOviC,EAGX,OAAQ,CACV,EASAwjQ,SAAU,SAAkB/7P,GAC1B,IAAI0c,EAAIrlB,KAAK+jQ,UACX5lP,EAAI,GACN,GAAIxV,EACFwV,EAAE5d,KAAKc,MAAM8c,GAAG,QAAmBkH,EAAErlB,KAAKyK,UAAU9B,WAEpD,IAAK,IAAIjC,KAAK2e,EACZlH,EAAE5d,KAAKc,MAAM8c,GAAG,QAAmBkH,EAAE3e,KAGzC,OAAOyX,CACT,EAOA1T,UAAW,SAAmBxI,GAC5B,IAAIf,EAAIe,EAAKiR,QAAQ,KACrB,OAAOhS,EAAI,EAAIe,EAAOA,EAAK+kB,MAAM,EAAG9lB,EACtC,EAOAyjQ,WAAY,SAAoB55P,EAAO0M,EAAM6nE,GAC3Ct/E,KAAK6hO,QAAQrM,SAASl2I,EAAM,CAC1BnsD,QAAS,SACRoU,MAAK,SAAU2lH,GAChB,IAAIhpJ,EAAI,IAAI0gQ,WAAW75P,EAAMpC,KAAMoC,GACjCoT,EAAIilP,GAAU,KAAM,KACtB,IAAK,IAAInhQ,KAAQirJ,EAAK/uI,EAAEmsC,aAAaroD,EAAMirJ,EAAIjrJ,IAC/Ckc,EAAE0mP,cAAc3gQ,EAClB,IAAG4iI,OAAM,WAA6B,GACxC,EAQAg+H,cAAe,SAAuB/5P,EAAO0M,EAAMnC,GACjD,GAAImC,GAAwB,MAAhBA,EAAKstP,QAAiB,CAChCttP,EArKN,SAAqBA,EAAM1M,EAAOP,EAAIqzD,GACpC,IACEmnM,EACA5mP,EAFEq4C,EAAOh/C,GAAQA,EAAKg/C,KAGxB,GAAIA,IAASuuM,EAAOtC,GAAMjsM,EAAKypM,WAAWj1E,IAAK,CAI7C,KAHA7sK,EAAI,GAAMrT,EAAOP,IACf,IAAMqzD,EAAO,GACfz/C,EAAE,IAAMy/C,EAAO,GACRpmD,EAAOA,EAAKg/C,KAAK/kD,OACtB0M,EAAE,IAAM3G,EAAKxM,GAAK,EAClBmT,EAAE,IAAM3G,EAAKvM,GAAK,EAEpBuM,EAAOutP,EAAK/5E,IAAIx0H,EAAKtQ,MAAO/nC,EAC9B,CACA,OAAO3G,CACT,CAsJawtP,CAAYxtP,EAAM1M,EAAO/K,KAAKuH,SAAUvH,KAAKukQ,SACpD,IAAIphC,EAAS7tN,GAAQmC,GAAQA,EAAKstP,SAAW,KAC7C/kQ,KAAKgkQ,SAASpiQ,KAAK5B,KAAKskQ,KAAMtkQ,KAAM+K,EAAO0M,EAAM0rN,EACnD,CACF,EASA+hC,0BAA2B,SAAmCztP,GAC5D,IAAIjN,EAAKxK,KAAKuH,SACd,GAAKiD,EAAL,CAUA,IATA,IAAIgW,EAAOhW,EAAGuE,wBACZ8uD,EAAS79D,KAAKukQ,QACd13O,EAASpV,EAAKoV,OACd9e,EAAQ8e,EAAO9e,QACfC,EAAS6e,EAAO7e,SACd/C,EAAI4hB,EAAOzK,GAAKy7C,EAAO,GAAKr9C,EAAKxR,KACnC9D,EAAI2hB,EAAOxK,GAAKw7C,EAAO,GAAKr9C,EAAKvR,IAG5BwI,EAAKg/C,OAASh/C,EAAOA,EAAKg/C,KAAK/kD,QACpCzG,GAAKwM,EAAKxM,GAAK,EACfC,GAAKuM,EAAKvM,GAAK,EAIjB,MAAO,CACLD,EAAGA,EACHC,EAAGA,EACH6C,MAAOA,EACPC,OAAQA,EACRgB,KAAM/D,EACNgE,IAAK/D,EACLyH,MAAO1H,EAAI8C,EACX01E,OAAQv4E,EAAI8C,EAxBC,CA0BjB,GAeFk2P,GAAShkQ,UAAY,CAYnB+iQ,WAAY,SAAoBz4P,EAAIuD,EAAOC,EAAQ6vD,EAAQsnM,GAEzD,OADAnlQ,KAAKmkQ,IAAM35P,EACJxK,KAAK8jL,OAAO/1K,EAAOC,EAAQ6vD,EAAQsnM,EAC5C,EAKAx1P,QAAS,WACP,OAAO3P,KAAKmkQ,GACd,EAMA58P,OAAQ,WACN,OAAOvH,KAAKmkQ,KAAOnkQ,KAAKmkQ,IAAIj0L,UAC9B,EAIA3F,WAAY,SAAoB66L,GAC9B,OAAyB,IAArBxkQ,UAAUC,OAAqBb,KAAKokQ,UACxCpkQ,KAAKokQ,SAAWgB,EACTplQ,KACT,EAWA8jL,OAAQ,SAAgB/1K,EAAOC,EAAQ6vD,EAAQsnM,GAK7C,OAJAnlQ,KAAKiqE,OAASl8D,EACd/N,KAAKkqE,QAAUl8D,EACfhO,KAAKukQ,QAAU1mM,GAAU,CAAC,EAAG,GAC7B79D,KAAKqlQ,OAASF,GAAe,EACtBnlQ,IACT,EAOAupI,MAAO,WAAkB,EAWzBv+D,OAAQ,SAAgB2yL,GACtB,IAAIz+O,EAAIlf,KAcR,OAVAkf,EAAEzb,MAAQ,WACRyb,EAAEomP,QAAQ3H,EACZ,EAGAz+O,EAAEzb,QAIFyb,EAAEzb,MAAQ,KACHyb,CACT,EAMAomP,QAAS,WAET,EASAC,YAAa,SAAqB5H,GAChC,IAAIz+O,EAAIlf,KAAKgrE,OAAO2yL,GACpB,OAAO39P,KAAKwlQ,OAASxlQ,KAAKwlQ,OAAOj+N,MAAK,WACpC,OAAOroB,CACT,IAAK0nB,QAAQS,QAAQnoB,EACvB,EASAo2M,MAAO,SAAe3pN,EAAQ4pN,GAC5B,IAAIr2M,EAAIlf,KACNoe,EAAIc,EAAE2iN,QAAQl2N,GAAQ4pN,GACxB,IAAKr2M,EAAEsmP,OAAQ,CAEb,IAAI5jQ,EAAOsd,EAAEzb,MACbyb,EAAEsmP,OAAStmP,EAAE2iN,QAAQ9rI,QAAQxuD,MAAK,SAAUk+N,GACtCA,GAAQ7jQ,IACZsd,EAAEsmP,OAAS,IACb,GACF,CACA,OAAOpnP,CACT,EAQA67O,YAAa,SAAqB1kC,GAChC,OAAOv1N,KAAKs1N,MAAM,cAAeC,EACnC,EAQA2kC,UAAW,SAAmB3kC,GAC5B,OAAOv1N,KAAKs1N,MAAM,YAAaC,EACjC,GAEF,IAGImwC,GAAiB,YACjBC,GAAiB,YACjBC,GAAgB,WAChBC,GAAiB,YAEjBC,GAAiB,YACjBC,GAAgB,WAChBC,GAAiB,YACjBC,GAAa,QAGbC,GAAkB,aAClBC,GAAkB,aAClBC,GAAiB,YACjBC,GAAgB,WAEhBC,GAAmBR,GACnBS,GAAmBR,GACnBS,GAAYP,GAChB,SAASQ,GAAcnuC,EAAQysC,GAC7BlB,GAAQjiQ,KAAK5B,KAAMs4N,EAAQysC,GAC3B/kQ,KAAK0mQ,MAAQ,KACb1mQ,KAAK2mQ,OAAS,KACd3mQ,KAAK4mQ,QAAS,EACd5mQ,KAAKC,QAAU,CAAC,CAClB,CAMA,SAAS4mQ,GAAmBpjO,EAAS96B,IALnB,SAAqBA,GACrC,OAAOA,IAASw9P,IAAmBx9P,IAASy9P,IAAkBz9P,IAAS09P,GAAgB,CAACF,GAAiBC,GAAgBC,IAAiB,CAAC19P,EAC7I,EAIEm+P,CAAYn+P,GAAMP,SAAQ,SAAUs+B,GAClC,OAGJ,SAA0BjD,EAAS96B,GACjC,IAAIpB,EAASk8B,EAAQl8B,SACjBA,IAAWk8B,EAAQxjC,QAAQ0I,KAC7B86B,EAAQxjC,QAAQ0I,GAAQ,EACxBpB,EAAOmD,iBAAiB/B,EAAM86B,EAAQ96B,GAAQ,SAAUvI,GACtD,OAAOqjC,EAAQ96B,GAAMvI,EACvB,EAAI,SAAUA,GACZ,OAAOqjC,EAAQsjO,KAAKp+P,EAAMvI,EAC5B,GAEJ,CAbWsK,CAAiB+4B,EAASiD,EACnC,GACF,CAYA,SAAShuB,GAAKsuP,EAAWC,EAAWC,GAClC,OAAO,SAAU9mQ,GACf,IAAI+d,EAAIne,KAAK8xJ,QACX1zI,EAAIpe,KAAKmnQ,UAAU/mQ,GACjBge,IAAMD,IAKHA,GAAMA,EAAEipP,MAGXpnQ,KAAK+mQ,KAAKG,EAAU9mQ,GAEtBJ,KAAK8xJ,QAAU1zI,EACfpe,KAAK+mQ,KAAKE,EAAW7mQ,IATrBJ,KAAK+mQ,KAAKC,EAAW5mQ,EAYzB,CACF,CAEA,SAASinQ,GAAS1+P,GAChB,OAAO,SAAUvI,GACfJ,KAAK+mQ,KAAKp+P,EAAMvI,GAChBJ,KAAK8xJ,QAAU,IACjB,CACF,CACA,GAAS20G,GAAe5C,GAAS,CAC/BZ,WAAY,SAAoBz4P,EAAIqzD,EAAQ9pC,GAC1C,IAAIw2M,EAASvqO,KAOb,OANAA,KAAKsnQ,QAAU98P,GAAM84P,GAAQ94P,EAAI,UAGjC,CAACy7P,GAAYJ,GAAgBC,GAAgBC,GAAeJ,IAAgBv9P,SAAQ,SAAUO,GAC5F,OAAOk+P,GAAmBt8B,EAAQ5hO,EACpC,IACOk7P,GAAQ3jQ,UAAU+iQ,WAAWrhQ,KAAK5B,KAAMwK,EAAIqzD,EAAQ9pC,EAC7D,EAEAxsB,OAAQ,WACN,OAAOvH,KAAKsnQ,OACd,EAEAn0O,QAAS,WACP,OAAOnzB,KAAKsnQ,QAAQ3iP,WAAW,KACjC,EAEA7jB,OA/EW,CAlBM,UACC,WACH,QAgBsC4kQ,GAAgBC,GAAgBC,GAAeC,GAXnF,UAWiHC,GAAgBC,GAAeC,GAAgBC,GAN5J,WACN,QAK4MC,GAAiBC,GAAiBC,GAAgBC,IAiF7QkB,eAAgB,SAAwBnnQ,GACtCJ,KAAK+mQ,KAAKb,GAAiB9lQ,EAC7B,EACAonQ,UAAW9uP,GAAKotP,GAAgBE,GAAgBD,IAChD0B,SAAU/uP,GAAKktP,GAAeF,GAAgBC,IAC9C+B,SAAUL,GAAStB,IACnB4B,UAAWN,GAAS1B,IACpBiC,UAAW,SAAmBxnQ,GAC5BJ,KAAK0mQ,MAAQ1mQ,KAAK8xJ,QAClB9xJ,KAAK+mQ,KAAKlB,GAAgBzlQ,EAC5B,EACA88D,MAAO,SAAe98D,GAChBJ,KAAK0mQ,QAAU1mQ,KAAK8xJ,UACtB9xJ,KAAK+mQ,KAAKd,GAAY7lQ,GACtBJ,KAAK0mQ,MAAQ,KAEjB,EACAmB,WAAY,SAAoBznQ,GAC9BJ,KAAK2mQ,OAAS3mQ,KAAKmnQ,UAAU/mQ,EAAIyO,eAAe,IAC5C7O,KAAK4mQ,SACP5mQ,KAAK8xJ,QAAU9xJ,KAAK2mQ,OACpB3mQ,KAAK4mQ,QAAS,GAEhB5mQ,KAAK+mQ,KAAKZ,GAAiB/lQ,GAAK,EAClC,EACA0nQ,UAAW,SAAmB1nQ,GAC5BJ,KAAK+mQ,KAAKX,GAAgBhmQ,GAAK,EACjC,EACA2nQ,SAAU,SAAkB3nQ,GAC1BJ,KAAK+mQ,KAAKV,GAAejmQ,GAAK,GAC9BJ,KAAK2mQ,OAAS,IAChB,EAEAI,KAAM,SAAcp+P,EAAMvI,EAAK09N,GAC7B,IAAI3/M,EAAI2/M,EAAQ99N,KAAK2mQ,OAAS3mQ,KAAK8xJ,QACjCzsI,EAAIrlB,KAAK+jQ,UAAUp7P,GAarB,GAVAvI,EAAI4nQ,SAAWr/P,EAGXA,IAAS69P,IAAaroP,GAAKA,EAAEmhE,KAC/Bt/E,KAAK2kQ,WAAWvkQ,EAAK+d,EAAGA,EAAEmhE,MACjB32E,IAAS29P,IAAoB39P,IAAS49P,IAC/CvmQ,KAAK8kQ,cAAc1kQ,EAAK+d,EAAGxV,IAAS49P,IAIlClhP,EACF,IAAK,IAAInkB,EAAI,EAAGs5B,EAAMnV,EAAExkB,OAAQK,EAAIs5B,IAAOt5B,EACzCmkB,EAAEnkB,GAAGuiC,QAAQ7hC,KAAK5B,KAAKskQ,KAAMlkQ,EAAK+d,EAGxC,EAEAhe,GAAI,SAAYwI,EAAM86B,GACpB,IAAIxhC,EAAOjC,KAAKyK,UAAU9B,GACxB0c,EAAIrlB,KAAK+jQ,UASX,OARM/jQ,KAAKykQ,cAAcp/O,EAAEpjB,GAAO0G,EAAM86B,GAChC,IACNojO,GAAmB7mQ,KAAM2I,IACxB0c,EAAEpjB,KAAUojB,EAAEpjB,GAAQ,KAAK1B,KAAK,CAC/BoI,KAAMA,EACN86B,QAASA,KAGNzjC,IACT,EAEAsB,IAAK,SAAaqH,EAAM86B,GACtB,IAAIxhC,EAAOjC,KAAKyK,UAAU9B,GACxB0c,EAAIrlB,KAAK+jQ,UAAU9hQ,GACnBf,EAAIlB,KAAKykQ,cAAcp/O,EAAG1c,EAAM86B,GAIlC,OAHIviC,GAAK,GACPmkB,EAAEjkB,OAAOF,EAAG,GAEPlB,IACT,EACAmnQ,UAAW,SAAmB/mQ,GAC5B,IAAIge,EAAI,GAAMhe,EAAKJ,KAAKsnQ,SACtBliP,EAAIplB,KAAKukQ,QACX,OAAOvkQ,KAAKg/P,KAAKh/P,KAAKwkQ,OAAQpmP,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAKgH,EAAE,GAAIhH,EAAE,GAAKgH,EAAE,GAClE,EAIA45O,KAAM,SAAcrB,EAAO1yP,EAAGC,EAAGkzP,EAAIC,GACnC,IAAI7pN,EAAIx0C,KAAKmzB,UAEb,OADSuvO,GAAM/E,EAAMuC,UACTlB,KAAKp9P,KAAK5B,KAAMw0C,EAAGmpN,EAAO1yP,EAAGC,EAAGkzP,EAAIC,EAClD,IAKF,IAAIC,GAFuB,oBAAXp7P,QAAyBA,OAAO+kQ,kBAAwB,EAoBxE,SAASC,GAAe5vC,GACtB4rC,GAAStiQ,KAAK5B,KAAMs4N,GACpBt4N,KAAKwzI,SAAW,CAAC,EACjBxzI,KAAKmoQ,SAAU,EACfnoQ,KAAKooQ,OAAS,IAAItP,GAClB94P,KAAKqoQ,OAAS,IAAIvP,EACpB,CACA,IAAIwP,GAASpE,GAAShkQ,UA0GtB,SAASqoQ,GAAWjwC,EAAQysC,GAC1BlB,GAAQjiQ,KAAK5B,KAAMs4N,EAAQysC,GAC3B,IAAI1/O,EAAIrlB,KACRqlB,EAAEmjP,aAAez9M,GAAS1lC,GAAG,SAAUjlB,EAAKqX,GACtCA,GAAQA,EAAK6nE,MAAMj6D,EAAEs/O,WAAWvkQ,EAAKqX,EAAMA,EAAK6nE,KACtD,IACAj6D,EAAEojP,gBAAkB19M,GAAS1lC,GAAG,SAAUjlB,EAAKqX,GAC7C4N,EAAEy/O,cAAc1kQ,EAAKqX,EAAMrX,EAAIuI,OAAS49P,GAC1C,GACF,CA7FA,GAAS2B,GAAgBhE,GAAU,CACjCjB,WAAY,SAAoBz4P,EAAIuD,EAAOC,EAAQ6vD,EAAQsnM,EAAahgO,GAUtE,OATAnlC,KAAKwzI,SAAWruG,GAAW,CAAC,EAC5BnlC,KAAKsnQ,QAAUtnQ,KAAKwzI,SAASk1H,gBAAkB,KAAO,GAAO,EAAG,EAAG1oQ,KAAKwzI,SAAS7qI,MAE7E6B,GAAMxK,KAAKsnQ,UACb7D,GAASj5P,EAAI,GAAGmD,YAAY3N,KAAKsnQ,SACjCtnQ,KAAKsnQ,QAAQh9M,aAAa,QAAS,UAI9Bg+M,GAAOrF,WAAWrhQ,KAAK5B,KAAMwK,EAAIuD,EAAOC,EAAQ6vD,EAAQsnM,EACjE,EACArhF,OAAQ,SAAgB/1K,EAAOC,EAAQ6vD,EAAQsnM,GAE7C,GADAmD,GAAOxkF,OAAOliL,KAAK5B,KAAM+N,EAAOC,EAAQ6vD,EAAQsnM,GAC5CnlQ,KAAKsnQ,SA7Db,SAAiB//P,EAAQwG,EAAOC,EAAQ6vD,EAAQsnM,EAAaj4G,GAC3D,IAAIy7G,EAA+B,oBAAhBC,aAA+BrhQ,aAAkBqhQ,aAAoC,MAArBrhQ,EAAO6H,WACxF+jB,EAAU5rB,EAAOod,WAAW,MAC5B/e,EAAQ+iQ,EAAQrK,GAAa6G,EAG/B,IAAK,IAAItkO,KAFTt5B,EAAOwG,MAAQA,EAAQnI,EACvB2B,EAAOyG,OAASA,EAASpI,EACTsnJ,EACd/5H,EAAQ0N,GAAOqsH,EAAIrsH,GAEjB8nO,GAAmB,IAAV/iQ,IACX2B,EAAOuE,MAAMiC,MAAQA,EAAQ,KAC7BxG,EAAOuE,MAAMkC,OAASA,EAAS,MAEjCmlB,EAAQmrO,WAAa14P,EACrButB,EAAQ01O,aAAajjQ,EAAO,EAAG,EAAGA,EAAOA,EAAQi4D,EAAO,GAAIj4D,EAAQi4D,EAAO,GAE7E,CA+CMirM,CAAQ9oQ,KAAKsnQ,QAAStnQ,KAAKiqE,OAAQjqE,KAAKkqE,QAASlqE,KAAKukQ,QAASvkQ,KAAKqlQ,OAAQrlQ,KAAKwzI,SAASrgH,aACrF,CAEL,IAAIwS,EAAM3lC,KAAKwzI,SAASk1H,gBACnB/iO,GAAK,GAAM,uDAChBA,EAAI7sB,MAAM9Y,KAAKqlQ,OAAQrlQ,KAAKqlQ,QAC5B1/N,EAAIrtB,UAAUtY,KAAKukQ,QAAQ,GAAIvkQ,KAAKukQ,QAAQ,GAC9C,CAEA,OADAvkQ,KAAKmoQ,SAAU,EACRnoQ,IACT,EACAuH,OAAQ,WACN,OAAOvH,KAAKsnQ,OACd,EACAn0O,QAAS,WACP,OAAOnzB,KAAKwzI,SAASk1H,kBAAoB1oQ,KAAKsnQ,QAAUtnQ,KAAKsnQ,QAAQ3iP,WAAW,MAAQ,KAC1F,EACA4kH,MAAO,SAAe9xH,GAGpB,IAFA,IAAIwL,EAAIjjB,KAAKqoQ,OAAO94P,QAAQwpP,MAAMthP,EAAKoV,QACnC2nB,EAAI/8B,EAAKg/C,KAAK/kD,MACX8iC,GACLvxB,EAAE3K,UAAUk8B,EAAEvpC,GAAK,EAAGupC,EAAEtpC,GAAK,GAC7BspC,EAAIA,EAAEiiB,KAAK/kD,MAEb1R,KAAKooQ,OAAOrP,MAAM91O,EACpB,EACAqiP,QAAS,SAAiB3H,GACxB,IAAInpN,EAAIx0C,KAAKmzB,UACX/N,EAAIplB,KAAKukQ,QACT72O,EAAI1tB,KAAKiqE,OACT5kD,EAAIrlB,KAAKkqE,QACT6+L,EAAK/oQ,KAAKooQ,OACVt6O,EAtEW,SAAoB+vC,EAAQ9vD,EAAOC,GAClD,OAAO,IAAI8qP,IAAS52P,IAAI,EAAG,EAAG6L,EAAOC,GAAQsK,WAAWulD,EAAO,IAAKA,EAAO,GAC7E,CAoEWmrM,CAAW5jP,EAAGsI,EAAGrI,GAGxBmvB,EAAE3xB,OACF,IAAII,EAAIjjB,KAAKmoQ,SAAWY,EAAGxoM,SAAWvgE,KAAKmoQ,SAAU,EAAOr6O,EAAGs3C,OAAO,IAvE1E,SAAsB5wB,EAAGvxB,EAAG46C,GAgB1B,OAdA56C,EAAEmiD,OAAO,GAAG3iC,QAGR+R,EAAE8pN,WAAa,GACjBr7O,EAAEnK,MAAM07B,EAAE8pN,YAAY77N,QAAQ3pB,MAAM,EAAI07B,EAAE8pN,YAI5Cr7O,EAAE3K,WAAYulD,EAAO,GAAK,GAAMA,EAAO,GAAK,GAG5CrpB,EAAEkgN,YACFlgN,EAAEh0B,KAAKyC,EAAEb,GAAIa,EAAEZ,GAAIY,EAAElV,QAASkV,EAAEjV,UAChCwmC,EAAEv/B,OACKgO,CACT,CAsDgFgmP,CAAaz0N,EAAG1mB,EAAGZ,UAAU67O,GAAK3jP,GAS9G,OARAplB,KAAKuP,OAAO6V,EAAE,IAAKA,EAAE,GAAIsI,EAAGrI,GAG5BrlB,KAAK8H,KAAK0sC,EAAGmpN,EAAO16O,GAGpBuxB,EAAE1xB,UACFimP,EAAGx5P,QACIvP,IACT,EACA8H,KAAM,SAAc69B,EAAKg4N,EAAO9wO,GAC9B,IAAI4pC,EAAOisM,GAAM/E,EAAMuC,UACnBvC,EAAM1oP,MAzhDd,SAAcke,EAASwqO,GACrB,IAAI1oP,EAAO0oP,EAAM1oP,KACjBke,EAAQtQ,OACJ6pH,GAAWz3H,IACbke,EAAQuhO,YACRz/O,EAAKke,GACLA,EAAQle,QAERkqP,GAAUhsO,EAASwqO,EAAMjsP,MAE7B,CA+gDoBuD,CAAK0wB,EAAKg4N,GAC1BlnM,EAAK3uD,KAAKlG,KAAK5B,KAAM2lC,EAAKg4N,EAAO9wO,GAC7B8wO,EAAM1oP,MAAM0wB,EAAI7iB,SACtB,EACAvT,MAAO,SAAetE,EAAGC,EAAGwiB,EAAGrI,GAC7B,IAAI6nI,EAAMltJ,KAAKwzI,SACbh/F,EAAIx0C,KAAKmzB,UACM,QAAb+5H,EAAIvkJ,MAAmBukJ,EAAIw7G,iBAG7Bl0N,EAAE00N,UAAUj+P,EAAGC,EAAGwiB,EAAGrI,GAEF,MAAjBrlB,KAAKokQ,WACP5vN,EAAEioN,UAAYz8P,KAAKokQ,SACnB5vN,EAAEmoN,SAAS1xP,EAAGC,EAAGwiB,EAAGrI,GAExB,IAcF,IAAI0lC,GAAW,SAAkB53B,EAASsQ,GACxC,OAAO,SAAUrjC,GACf,IAAIqX,EAAOrX,EAAIsI,OAAOygQ,SACtB1xP,EAAOgpB,MAAMC,QAAQjpB,GAAQA,EAAK,GAAKA,EACvCrX,EAAI4nQ,SAAW5nQ,EAAIuI,KACnB86B,EAAQ7hC,KAAKuxB,EAAQmxO,KAAMlkQ,EAAKqX,EAClC,CACF,EACA,GAAS8wP,GAAY1E,GAAS,CAC5BZ,WAAY,SAAoBz4P,EAAIqzD,EAAQ9pC,GAC1C,IAAIssF,EAAMrgH,KAAKopQ,KAYf,OAXI/oJ,IACFA,EAAIx1G,oBAAoB27P,GAAWxmQ,KAAKwoQ,cACxCnoJ,EAAIx1G,oBAAoBy7P,GAAkBtmQ,KAAKyoQ,iBAC/CpoJ,EAAIx1G,oBAAoB07P,GAAkBvmQ,KAAKyoQ,kBAEjDzoQ,KAAKopQ,KAAO/oJ,EAAM71G,GAAM84P,GAAQ94P,EAAI,OAChC61G,IACFA,EAAI31G,iBAAiB87P,GAAWxmQ,KAAKwoQ,cACrCnoJ,EAAI31G,iBAAiB47P,GAAkBtmQ,KAAKyoQ,iBAC5CpoJ,EAAI31G,iBAAiB67P,GAAkBvmQ,KAAKyoQ,kBAEvC5E,GAAQ3jQ,UAAU+iQ,WAAWrhQ,KAAK5B,KAAMwK,EAAIqzD,EAAQ9pC,EAC7D,EACAxsB,OAAQ,WACN,OAAOvH,KAAKopQ,IACd,EAEAjpQ,GAAI,SAAYwI,EAAM86B,GACpB,IAAIxhC,EAAOjC,KAAKyK,UAAU9B,GACxB0c,EAAIrlB,KAAK+jQ,UAEX,GADM/jQ,KAAKykQ,cAAcp/O,EAAEpjB,GAAO0G,EAAM86B,GAChC,EAAG,CACT,IAAIk7B,EAAM,CACRh2D,KAAMA,EACN86B,QAASA,EACTsnB,SAAUA,GAAS/qD,KAAMyjC,KAE1Bpe,EAAEpjB,KAAUojB,EAAEpjB,GAAQ,KAAK1B,KAAKo+D,GAC7B3+D,KAAKopQ,MACPppQ,KAAKopQ,KAAK1+P,iBAAiBzI,EAAM08D,EAAI5T,SAEzC,CACA,OAAO/qD,IACT,EAEAsB,IAAK,SAAaqH,EAAM86B,GACtB,IAAIxhC,EAAOjC,KAAKyK,UAAU9B,GACxB0c,EAAIrlB,KAAK+jQ,UAAU9hQ,GACnBf,EAAIlB,KAAKykQ,cAAcp/O,EAAG1c,EAAM86B,GAOlC,OANIviC,GAAK,IACHlB,KAAKopQ,MACPppQ,KAAKopQ,KAAKv+P,oBAAoB5I,EAAMojB,EAAEnkB,GAAG6pD,UAE3C1lC,EAAEjkB,OAAOF,EAAG,IAEPlB,IACT,IAEF,IAAIqpQ,GAAc,cACdC,GAAa,aACbC,GAAY,OACZC,GAAuB,uBACvBC,GAAkB,kBAClBC,GAAkB,kBAClB,GAAS,SAAgBrpM,EAAMspM,EAAU/8M,GAC3C,IAAIiF,EACJ,OAAOA,EAAO,CAAC,GAAG,OAAgBA,EAAM03M,GAAWlpM,IAAO,OAAgBxO,EAAM23M,GAAsBG,IAAW,OAAgB93M,EAAMy3M,GAAY18M,QAASn2B,GAAYo7B,CAC1K,EAII+3M,GAAajtD,GAAM,CAAC,cAAe,YAAa,aAAc,YAAa,aAAc,cAAe,eAAgB,kBAAmB,eAAgB,eAAgB,gBAAiB,UAG5LktD,GAAa,CACf,KAAQ,CACNp3M,KAAM,OACNq3M,QAgEJ,SAAqBryP,GACnB,IAAI0gN,EAAQ1gN,EAAK0gN,MACf+mC,EAASznP,EAAKynP,OACdntM,EAAQomK,EAAMpmK,MAAQg4M,GAAatyP,GAAQ,KAC3CkuB,EAAMluB,EAAK0b,QACXra,EAAQ6sB,EAAIukN,OAAO/xB,EAAMr/M,OAAO3W,MAChC0/D,EAASl8B,EAAI+3L,SAAS77J,SACtBl5D,EAAOmQ,EAAMnQ,KACbmf,EAAgB,SAAXo3O,GAAgC,UAAXA,EAAqB,IAAM,IACvD,MAAO,GAAG3rP,OAAOuU,EAAI,UAAYiqC,EAAQ,YAAYx+C,OAAOw+C,EAAO,KAAO,IAAM,UAAUx+C,OAAOo3O,GAAWhiP,GAAQ,WAAaA,EAAM,UAAY,SAAS4K,OAAOo+O,GAAc9vL,EAAQ/oD,EAAOrB,GAClM,GAxEE,OAAU,CACRg7C,KAAM,SACNq3M,QAuEJ,SAAuBryP,GACrB,IAAI0gN,EAAQ1gN,EAAK0gN,MACfpmK,EAAQomK,EAAMpmK,MAAQg4M,GAAatyP,GAAQ,KAC3C9O,EAAO,GAAG4K,OAAO4kN,EAAMxvN,MAAQ,GAAI,WAAWkrB,OAC9Cq2N,EAAS/xB,EAAM+xB,OACf7yO,EAAQG,OAAOopB,KAAKspN,GACpBvkN,EAAMluB,EAAK0b,QACXra,EAAQ6sB,EAAIukN,OAAOA,EAAO7yO,EAAM,KAAKlV,MACrC0/D,EAASl8B,EAAI+3L,SAAS77J,SACxB,OAeF,SAAoB/jD,GAClB,OAAOA,EAAEjd,OAASid,EAAE,GAAG8I,cAAgB9I,EAAEkJ,MAAM,GAAKlJ,CACtD,CAjBSksP,CAAWrhQ,IAASopD,EAAQ,YAAYx+C,OAAOw+C,EAAO,KAAO,IAAM,QAAQx+C,OASpF,SAAwB8D,GAItB,OAHAA,EAAQA,EAAM2Z,KAAI,SAAU5S,GAC1B,OAAOA,GAAW,SAANA,GAAsB,WAANA,EAAiB,SAAW,GAC1D,IACO/G,EAAMxW,OAAS,EAAIwW,EAAM,GAAKA,EAAM2P,MAAM,GAAI,GAAGqC,KAAK,MAAQ,QAAUovL,GAAKphM,EACtF,CAd2F4yP,CAAe5yP,IAAU,SAAS9D,OAAOo+O,GAAc9vL,EAAQ/oD,EAAOrB,GACjK,GA/EE,aAAc,CACZg7C,KAAM,QACNq3M,QAAS,SAAiBryP,GACxB,MAAO,eAAelE,OAAO22P,GAAazyP,GAAO,IACnD,GAEF,iBAAkB,CAChBg7C,KAAM,WACNq3M,QAAS,SAAiBryP,GACxB,MAAO,kBAAkBlE,OAAO22P,GAAazyP,GAAO,IACtD,IAKA0yP,GAAa,CACfC,SAAUb,GACVc,oBAAqBb,GACrBxiM,YAAasiM,IAEf,SAASgB,GAAmB9pQ,EAAMiX,GAChC,IAAIlC,GAAqB,IAAdkC,EAAK2gD,KAEhB,GADA53D,EAAK6oQ,GAAa9zP,QAAQkhB,GACtBlhB,GAA4B,MAApBkC,EAAKuvD,YACf,IAAK,IAAI9hE,KAAQilQ,GACf3pQ,EAAK2pQ,GAAWjlQ,QAAOuxB,OAEpB,CACL,IAAI8zO,EAAQ9yP,EAAKg/C,KAAKypM,SACtB1/P,EAAK8oQ,GAAY7xP,EAAKuvD,aACtBxmE,EAAK+oQ,GAAW9xP,EAAK2yP,WAAuB,UAAVG,EAAoBd,GAAkBC,KACxElpQ,EAAKgpQ,GAAsB/xP,EAAK4yP,qBAAuB,GAAG92P,OAAOg3P,EAAO,SAC1E,CACF,CACA,SAASC,GAAmB/zM,GAC1B,OAAqB,IAAdA,EAAK2B,MAAiB,OAAgB,CAAC,EAAGixM,IAAa,GAAQO,GAAWnzM,EAAK4J,MAAQ,KAAOwpM,GAAWpzM,EAAK4J,MASvH,SAAmB5J,EAAMy2F,GACvB,IACE,IAAIz1I,EAAOg/C,EAAKtQ,MAAM,GACpB2jN,EAAU58G,EAAI48G,SAAW,WACvB,MAAO,EACT,EACF,OAAO,GAAO58G,EAAI7sF,MAAQqpM,GAAiBx8G,EAAIz6F,KAAMh7C,EAAKuvD,aAAe8iM,EAAQryP,GACnF,CAAE,MAAO+vB,GACP,OAAO,IACT,CACF,CAnB+HijO,CAAUh0M,EAAMozM,GAAWpzM,EAAK4J,OAE/J,SAAkB5J,GAChB,IAAI9tD,EAAO8tD,EAAKypM,SACZxvO,EAAmB,UAAT/nB,GAA6B,SAATA,GAAmB8tD,EAAKtQ,MAAMuU,MAAK,SAAUh0B,GAC7E,OAAwB,MAAjBA,EAAEsgC,cAAkC,IAAXtgC,EAAE0xB,IACpC,IACA,OAAO,GAAO1nC,EAAU+4O,GAAkBC,GAAiB,GAAGn2P,OAAO5K,EAAM,mBAAoB8tD,EAAKuQ,YACtG,CARwK0jM,CAASj0M,EACjL,CAmBA,SAASyzM,GAAazyP,GACpB,OAAO,GAAMA,EAAKoJ,MAAMwI,KAAK,IAC/B,CAuBA,SAAS0gP,GAAatyP,GACpB,IACE,OAAO,GAAMghM,GAAKhhM,EAAK0uC,OAAOA,MAAM,GAAGtlC,MAAMwI,KAAK,IACpD,CAAE,MAAOme,GACP,OAAO,IACT,CACF,CAUA,IAAImjO,GAAY,SAAmBtlQ,GACjC,OAAQA,EAAM,IAAIugB,QAAQ,KAAM,SAASA,QAAQ,KAAM,QAAQA,QAAQ,KAAM,OAC/E,EACIglP,GAAW,SAAkBvlQ,GAC/B,OAAOslQ,GAAUtlQ,GAAKugB,QAAQ,KAAM,UAAUA,QAAQ,MAAO,SAASA,QAAQ,MAAO,SAASA,QAAQ,MAAO,QAC/G,EACA,SAASilP,KACP,IAAIC,EAAM,GACRxlL,EAAQ,GACRzgC,EAAQ,GACNkmN,EAAQ,GACVx7P,EAAQ,WACN,OAAO+1E,EAAQzgC,EAAQ,EACzB,EAQAz+C,EAAO,SAAcnE,EAAME,GAEzB,OADa,MAATA,IAAemjF,GAAS,IAAI/xE,OAAOtR,EAAM,MAAOsR,OAAOq3P,GAASzoQ,GAAQ,MACrE4T,CACT,EACAA,EAAI,CACF+jD,KAAM,SAAc5+B,IAZf,SAAcA,GACfoqD,IACFwlL,GAAO,GAAGv3P,OAAO+xE,EAAO,KAAK/xE,OAAOsxC,GACpCt1C,KAEFw7P,EAAMxqQ,KAAK26B,EACb,CAOI36B,CAAK26B,GACLoqD,EAAQ,IAAMpqD,EACd,IAAK,IAAIquB,EAAO3oD,UAAUC,OAAQyF,EAAQ,IAAIm6B,MAAM8oB,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IACnGljD,EAAMkjD,EAAO,GAAK5oD,UAAU4oD,GAE9B,IAAK,IAAI7oD,EAAK,EAAGqqQ,EAAS1kQ,EAAO3F,EAAKqqQ,EAAOnqQ,OAAQF,IAAM,CACzD,IAAIuB,EAAM8oQ,EAAOrqQ,GACjB,IAAK,IAAIkgC,KAAO3+B,EAAKkE,EAAKy6B,EAAK3+B,EAAI2+B,GACrC,CACA,OAAO9qB,CACT,EACA63G,MAAO,WACL,IAAI1yF,EAAM6vO,EAAM9jP,MAOhB,OALE6jP,GADExlL,EACKA,GAASzgC,EAAQ,IAAItxC,OAAOsxC,EAAO,MAAMtxC,OAAO2nB,EAAK,KAAO,MAE5D,KAAK3nB,OAAO2nB,EAAK,KAE1B3rB,IACOwG,CACT,EACA3P,KAAMA,EACNya,KAAM,SAAc9c,GAClB,OAAO8gD,GAAS8lN,GAAU5mQ,GAAIgS,CAChC,EACA6M,SAAU,WACR,OAAOkoP,CACT,GAEJ,OAAO/0P,CACT,CACA,IAAIk1P,GAAe,SAAsBvqN,GACvC,OAAOwqN,GAAWL,KAAUnqN,GAAQ,EACtC,EACA,SAASwqN,GAAWn1P,EAAG2qC,GAErB,GADA3qC,EAAE+jD,KAAKpZ,EAAK6iN,SACR7iN,EAAKyqN,gBAGP,IAFA,IAAI7kQ,EAAQo6C,EAAKoqC,WACfl8D,EAAItoB,EAAMzF,OACHK,EAAI,EAAGA,EAAI0tB,IAAK1tB,EACvB6U,EAAE3P,KAAKE,EAAMpF,GAAGe,KAAMqE,EAAMpF,GAAGiB,OAGnC,GAAIu+C,EAAK0qN,gBAAiB,CACxB,IAEE7sC,EADEC,EAAY,GADD99K,EAAKk/I,YAGpB,IACE,IAAK4+B,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIxoC,EAAQyuN,EAAMp8N,MACC,IAAnB2N,EAAMshE,SACJr7D,EAAE8K,KAAK/Q,EAAMu7P,WAAaH,GAAWn1P,EAAGjG,EAC5C,CACF,CAAE,MAAO03B,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACF,CACA,OAAO0S,EAAE63G,OACX,CACA,IAAI09I,GAAa,CACf1vN,KAAM,OACNioC,YAAa,eACb1iE,OAAQ,SACRo4O,cAAe,iBACfpnM,YAAa,eACb8qM,UAAW,iBACXxD,WAAY,kBACZ6D,WAAY,mBACZE,iBAAkB,oBAClBJ,iBAAkB,oBAClBzoP,QAAS,WAEP42P,GAAY,CACdrP,MAAO,kBAILsP,GAAiB,CACnB,KAAQ,OACR,oBAAqB,IAGrBv5M,GAAQ,gCACRw5M,GAAQphB,GAASp4L,MACnB,SAASy5M,GAAYpzC,GACnB4rC,GAAStiQ,KAAK5B,KAAMs4N,GACpBt4N,KAAK2rQ,SAAW,EAChB3rQ,KAAKooQ,OAAS,GACdpoQ,KAAKopQ,KAAO,KACZppQ,KAAK4rQ,MAAQ,KACb5rQ,KAAK44P,MAAQ,IACf,CACA,IAAIp2N,GAAO0hO,GAAShkQ,UAmUpB,SAAS2rQ,GAAap0P,EAAM/D,GAC1B,KAAO+D,GAAQA,EAAK8xH,QAAU71H,EAAI+D,EAAOA,EAAKg/C,KAAK/kD,MAAO,CAExD,GADA+F,EAAK8xH,MAAQ71H,GACT+D,EAAKg/C,MAAQh/C,EAAKg/C,KAAK8yE,QAAU71H,EAE9B,OADL+D,EAAKg/C,KAAK8yE,MAAQ71H,CAEtB,CACF,CAGA,SAASo4P,GAAethQ,EAAIuhQ,EAAM/jQ,GAChC,IAAI9G,EAAG0tB,EAAG5pB,EACV,GAAsB,WAAlB+mQ,EAAKpnL,SAAuB,CAK9B,IAAIqnL,EAAKxI,GAASh5P,EAAIxC,IAAS,UAAWyjQ,IAC1CQ,GAAcD,EAAI,CAChBt4P,GAAIo+O,GAAgBia,EAAKr4P,GACzBw+C,QAAS,UACTnkD,MAAO,OACPC,OAAQ,OACRk+P,oBAAqB,mBAGvBD,GADAD,EAAKxI,GAASwI,EAAI,EAAG,OAAQP,IACX,CAChB19P,MAAO,EACPC,OAAQ,EACR4tC,KAAM,OAAOroC,OAAO+rE,KAAQ,KAAK/rE,OAAOw4P,EAAKr4P,GAAI,OAGnDu4P,GADAzhQ,EAAKg5P,GAASh5P,EAAIxC,IAAS,iBAAkByjQ,IAC3B,CAChB/3P,GAAIq4P,EAAKr4P,GACTmvC,GAAIkpN,EAAK3pP,GACT8nF,GAAI6hK,EAAK1pP,GACT8pP,GAAIJ,EAAKp+O,GACTjM,GAAIqqP,EAAKzpP,GACTX,GAAIoqP,EAAKxpP,GACTrD,EAAG6sP,EAAKn+O,IAEZ,MAEEq+O,GADAzhQ,EAAKg5P,GAASh5P,EAAIxC,IAAS,iBAAkByjQ,IAC3B,CAChB/3P,GAAIq4P,EAAKr4P,GACT0O,GAAI2pP,EAAK3pP,GACTE,GAAIypP,EAAKzpP,GACTD,GAAI0pP,EAAK1pP,GACTE,GAAIwpP,EAAKxpP,KAGb,IAAKrhB,EAAI,EAAG0tB,EAAIm9O,EAAK7Z,MAAMrxP,OAAQK,EAAI0tB,IAAK1tB,GAC1C8D,EAAOw+P,GAASh5P,EAAItJ,EAAG,OAAQuqQ,KAC1BnhN,aAAa,SAAUyhN,EAAK7Z,MAAMhxP,GAAGiiF,QAC1Cn+E,EAAKslD,aAAa,aAAcyhN,EAAK7Z,MAAMhxP,GAAG6yC,OAGhD,OADA0vN,GAASj5P,EAAItJ,GACN8G,CACT,CAGA,SAASokQ,GAAe5hQ,EAAIyK,EAAMjN,GAiBhC,OAfAwC,EAAKg5P,GAASh5P,EAAIxC,EAAO,WAAYyjQ,KAClCnhN,aAAa,KAAMr1C,EAAKvB,IACvBuB,EAAKpO,KACA28P,GAASh5P,EAAI,EAAG,OAAQihQ,IAC1BnhN,aAAa,IAAKr1C,EAAKpO,MAG5BolQ,GADOzI,GAASh5P,EAAI,EAAG,OAAQihQ,IACX,CAClBxgQ,EAAG,EACHC,EAAG,EACH6C,MAAOkH,EAAKlH,MACZC,OAAQiH,EAAKjH,SAGjBy1P,GAASj5P,EAAI,GACNxC,EAAQ,CACjB,CAoBA,SAAS5E,GAAKqU,EAAMjN,EAAIqtL,EAAS38J,EAAKmlF,GACpC,IACE5hB,EADE/9C,EAAOjpC,EAAK2xP,KAIhB,IAAK1oN,IAEHA,EAAO0iN,GADP3kK,EAAMj0F,EAAG8gF,cACapwD,EAAKuwO,IAC3Bh0P,EAAK2xP,KAAO1oN,EACRjpC,EAAKg/C,OACP/V,EAAKyoN,SAAW1xP,EAChBipC,EAAK2rN,WAAa,CAChBzwN,KAAM,WAII,MAAR1gB,IAAa,CACf,IAAIoxO,EAAKlJ,GAAU3kK,EAAK,OAAQgtK,IAChC/qN,EAAK/yC,YAAY2+P,GACjBA,EAAGnD,SAAW1xP,EACd,IAAI80P,EAAKnJ,GAAU3kK,EAAK,IAAKgtK,IAC7B/qN,EAAK/yC,YAAY4+P,GACjBA,EAAGpD,SAAW1xP,EACd,IAAI4oM,EAAK+iD,GAAU3kK,EAAK,OAAQgtK,IAChC/qN,EAAK/yC,YAAY0yM,GACjBA,EAAG8oD,SAAW1xP,EACd4oM,EAAGgsD,WAAa,CACdzwN,KAAM,UAEV,CAQJ,OAHI8E,EAAK8rN,kBAAoBnsJ,GAO/B,SAAsB3/D,EAAMm3I,GAC1B,OAAOn3I,EAAKtxC,YAAcsxC,EAAKtxC,WAAWwwL,WAAW/+L,OAAS,GAAK6/C,EAAK+rN,iBAAmB50E,CAC7F,CATsC60E,CAAahsN,EAAMm3I,KACrDrtL,EAAGylE,aAAavvB,EAAMm3I,EAAUA,EAAQ80E,YAAcniQ,EAAG0lE,YAEpDxvB,CACT,CA3cA,GAASgrN,GAAaxH,GAAU,CAY9BjB,WAAY,SAAoBz4P,EAAIuD,EAAOC,EAAQ6vD,EAAQsnM,GAsBzD,OApBAnlQ,KAAK44P,MAAQ,CAAC,EACd54P,KAAK4sQ,aACDpiQ,IACFxK,KAAKopQ,KAAO5F,GAASh5P,EAAI,EAAG,MAAOihQ,IACnCzrQ,KAAKopQ,KAAKyD,eAAe56M,GAAO,QAASw5M,IACzCzrQ,KAAKopQ,KAAKyD,eAAe56M,GAAO,cAAeo4L,GAAS,gBACxDrqP,KAAKopQ,KAAK9+M,aAAa,UAAW+/L,GAAkB,SACpDrqP,KAAKopQ,KAAK9+M,aAAa,QAAS,SAChCm5M,GAASj5P,EAAI,GAGbxK,KAAK4rQ,MAAQpI,GAASxjQ,KAAKopQ,KArCjB,EAqCkC,IAAKqC,IACjDQ,GAAcjsQ,KAAK4rQ,MAAOJ,IAG1B/H,GAASzjQ,KAAKopQ,KAAM0D,IAItB9sQ,KAAKuqE,WAAWvqE,KAAKokQ,UACd5hO,GAAKygO,WAAWrhQ,KAAK5B,KAAMwK,EAAIuD,EAAOC,EAAQ6vD,EAAQsnM,EAC/D,EAIA56L,WAAY,SAAoB66L,GAI9B,OAHIxkQ,UAAUC,QAAUb,KAAKopQ,MAC3BppQ,KAAKopQ,KAAKt9P,MAAMihQ,YAAY,mBAAoB3H,GAE3C5iO,GAAK+nC,WAAWlpE,MAAMrB,KAAMY,UACrC,EAWAkjL,OAAQ,SAAgB/1K,EAAOC,EAAQ6vD,EAAQsnM,GAW7C,OAVA3iO,GAAKshJ,OAAOliL,KAAK5B,KAAM+N,EAAOC,EAAQ6vD,EAAQsnM,GAC1CnlQ,KAAKopQ,OACP6C,GAAcjsQ,KAAKopQ,KAAM,CACvBr7P,MAAO/N,KAAKiqE,OAASjqE,KAAKqlQ,OAC1Br3P,OAAQhO,KAAKkqE,QAAUlqE,KAAKqlQ,OAC5BnzM,QAAS,OAAO3+C,OAAOvT,KAAKiqE,OAAQ,KAAK12D,OAAOvT,KAAKkqE,WAEvDlqE,KAAK4rQ,MAAMthN,aAAa,YAAa,aAAa/2C,OAAOvT,KAAKukQ,QAAS,OAEzEvkQ,KAAKooQ,OAAS,GACPpoQ,IACT,EAKAuH,OAAQ,WACN,OAAOvH,KAAKopQ,IACd,EAKA/oJ,IAAK,WACH,IAGI3/D,EAHA2/D,EAAMrgH,KAAKopQ,KACbkD,EAAKtsQ,KAAKokQ,SACZ,IAAK/jJ,EAAK,OAAO,KAEbisJ,IACFjsJ,EAAI71D,gBAAgB,SAEpByhN,GADAvrN,EAAO8iN,GAASnjJ,EAlGN,EAkGsB,OAAQorJ,IACpB,CAClB19P,MAAO/N,KAAKiqE,OACZj8D,OAAQhO,KAAKkqE,QACbtuB,KAAM0wN,KAGV,IAAIzrP,EAAOoqP,GAAa5qJ,GAKxB,OAJIisJ,IACFjsJ,EAAIhxG,YAAYqxC,GAChB1gD,KAAKopQ,KAAKt9P,MAAMihQ,YAAY,mBAAoBT,IAE3CzrP,CACT,EAKAykP,QAAS,SAAiB3H,GAUxB,OARI39P,KAAKgtQ,gBACHhtQ,KAAKitQ,WAAWjtQ,KAAK4sQ,aACzB5sQ,KAAKy2D,KAAKz2D,KAAK4rQ,MAAOjO,GACtB8F,GAASzjQ,KAAK4rQ,MAAO,IAEvB5rQ,KAAKgyP,OACLhyP,KAAKooQ,OAAS,KACZpoQ,KAAK2rQ,SACA3rQ,IACT,EAMAupI,MAAO,SAAe9xH,GAChBA,EAAK8xH,QAAUvpI,KAAK2rQ,WACtBl0P,EAAK8xH,MAAQvpI,KAAK2rQ,SAClB3rQ,KAAKooQ,OAAO7nQ,KAAKkX,GAErB,EAKAy1P,QAAS,SAAiBz1P,GACxB,OAAOzX,KAAKitQ,YAAcx1P,EAAK2xP,OAAS3xP,EAAK2xP,KAAKoD,iBAAmB/0P,EAAK8xH,QAAUvpI,KAAK2rQ,QAC3F,EAKAqB,YAAa,WACXhtQ,KAAKitQ,WAAY,EACjB,IAAI9mN,EAAQnmD,KAAKooQ,OACjB,IAAKjiN,EAAMtlD,SAAWb,KAAK2rQ,SAAU,OAAO,EAC5C,IACIl0P,EAAMg/C,EAAM9tD,EAAMq8P,EAAM9jQ,EAAG0tB,EAAGxJ,EAD9B1R,IAAO1T,KAAK2rQ,SAEhB,IAAKzqQ,EAAI,EAAG0tB,EAAIu3B,EAAMtlD,OAAQK,EAAI0tB,IAAK1tB,GAErCu1D,GADAh/C,EAAO0uC,EAAMjlD,IACDu1D,MACHypM,WAAav3P,IAEpBA,EAAO8tD,EAAKypM,SACZ8E,EAAOtC,GAAM/5P,IAEX8tD,EAAKmnM,QAAUnnM,EAAK8yE,QAAU71H,IAChC1T,KAAKitQ,WAAY,EACjBpB,GAAap0P,EAAM/D,GACnB+iD,EAAKtQ,MAAM/9C,SAAQ,SAAUlH,GAC3BA,EAAEqoI,MAAQ71H,CACZ,KAEE+iD,EAAKmnM,SAELnmP,EAAK2vP,MAEHpC,EAAKnG,QAAUpoM,EAAKtQ,MAAMtlD,QAE5BukB,EAAIqxC,EAAKtQ,MAAM,IACTijN,MAAMppQ,KAAKqH,QAAQ29P,EAAM5/O,EAAEgkP,KAAMhkP,GAC9B3N,EAAK2xP,OAEdhkP,EAAI3N,EAAK2xP,KAAKh6P,aACPgW,EAAE/V,YAAYoI,EAAK2xP,MAE5B3xP,EAAK2xP,KAAO,OAGd3xP,EAAOutP,EAAKnG,OAASpoM,EAAKtQ,MAAM,GAAK1uC,GAC5BpQ,UAAYqM,IAEhB+D,EAAK2xP,MAAS3xP,EAAK2xP,KAAKoD,gBAM3BxsQ,KAAKqH,QAAQ29P,EAAMvtP,EAAK2xP,KAAM3xP,IAJ9BzX,KAAKitQ,WAAY,EACjBpB,GAAap0P,EAAM/D,IAKrB+D,EAAKpQ,QAAUqM,IAEjB,OAAQ1T,KAAKitQ,SACf,EAQAx2M,KAAM,SAAcjsD,EAAImzP,EAAOroO,GAC7B,IAAI82M,EAASpsO,KACb,IAAKA,KAAKktQ,QAAQvP,GAChB,OAAOA,EAAMyL,KAEf,IAAI/oJ,EAAMrgH,KAAKopQ,KACbpE,EAAOtC,GAAM/E,EAAMuC,UACnBp/P,GAA+B,IAAtB68P,EAAMsC,YAAwB,OAAS,KAChDrwP,EAAuB,MAAbo1P,EAAK9pO,IACbtpB,EAASxO,GAAKu6P,EAAOnzP,EAAI8qB,EAAM,IAAK+qF,GACxCzuG,EAAO04C,aAAa,QAASo5M,GAAS/F,IAGtC,IAAIvlM,EAAOoyM,GAAmB7M,GAC9B,IAAK,IAAI98N,KAAOu3B,EAAM9N,GAAa14C,EAAQivB,EAAKu3B,EAAKv3B,IAChDjxB,GACH06C,GAAa14C,EAAQ,iBAAkB9Q,GAEzCwpD,GAAa14C,EAAQ,YAAa+rP,EAAM1oP,KAAOyjP,GAAO14P,KAAM29P,EAAOA,EAAMjsP,OAAS,MAClF,IAAImmL,EAAU,KACZ32L,EAAI,EACF29C,EAAU,SAAiBpnC,GAC7B,IAAI8xH,EAAQ6iG,EAAO8gC,QAAQz1P,GACzBipC,EAAOt9C,GAAKqU,EAAM7F,EAAQimL,EAASmtE,EAAK9pO,IAAKmlF,GAC3CkpB,IACF6iG,EAAO/kO,QAAQ29P,EAAMtkN,EAAMjpC,GACvB7H,GAqLZ,SAAiB+oP,EAAUnuP,EAAIkH,GAG7BlH,EAAKA,EAAG0pE,UAAUu4L,gBAClB,IAAIn3O,EACF4P,EAAM,EACRi5L,GAAMzsN,GAAO,SAAU+F,GACrB6d,EAAOqjO,EAASliM,KAAKjsD,EAAIiN,EAAM6d,KAC7B4P,CACJ,IAGAu+N,GAASj5P,EAAI,EAAI06B,EACnB,CAlMqBxU,CAAQ07M,EAAQ1rL,EAAMjpC,IAErCogL,EAAUn3I,IACRx/C,CACJ,EAOA,OANI8jQ,EAAKnG,OACHlB,EAAMx3M,MAAMtlD,QAAQg+C,EAAQ8+M,EAAMx3M,MAAM,IAE5Cg4K,GAAMw/B,EAAO9+M,GAEf4kN,GAAS7xP,EAAQ1Q,GACV0Q,CACT,EAOAvK,QAAS,SAAiB29P,EAAMx6P,EAAIiN,GAGlC,GAAUjN,EACVg2B,GAASh2B,EAAG6hQ,WAGZ/B,GAAmB9pQ,GAAMiX,GAGzButP,EAAK5+P,KAAK5F,GAAMiX,EAAMzX,MAGtB,IAAIg0G,EAAQm5J,GAAYnI,EAAKr8P,MACzBqrG,GAAOA,EAAMpyG,KAAK5B,KAAMglQ,EAAMx6P,EAAIiN,GAIlC,IAASzX,KAAK8L,MAAM,GAAS2L,EACnC,EAMA3L,MAAO,SAAetB,EAAIiN,GACxB,GAAY,MAARA,EAAJ,CACA,IAAK,IAAIvS,KAAQomQ,GAAY,CAC3B,IAAI8B,EAAmB,SAATloQ,EAAkBuuB,GAAWhc,GAAQA,EAAKvS,GACxD,GAAIkoQ,IAAY5sO,GAAOt7B,GAAvB,CACA,IAAIjD,EAAOqpQ,GAAWpmQ,GACP,MAAXkoQ,EACF5iQ,EAAGggD,gBAAgBvoD,IAEfkzG,GAAWi4J,KACbA,EAAUrb,GAAYqb,EAASptQ,KAAK44P,MAAMj0K,SAAUrF,OAEtD90E,EAAG8/C,aAAaroD,EAAMmrQ,EAAU,KAElC5sO,GAAOt7B,GAAQkoQ,CAVuB,CAWxC,CACA,IAAK,IAAIC,KAAS9B,GAChB+B,GAAS9iQ,EAAI+gQ,GAAU8B,GAAQ51P,EAAK41P,GAhBd,CAkB1B,EAMArb,KAAM,WACJ,IAAI3xI,EAAMrgH,KAAKopQ,KACbpX,EAAOhyP,KAAK44P,MACVpuP,EAAKwnP,EAAKxnP,GACZxC,EAAQ,EACV,IAAK,IAAI0L,KAAMs+O,EAAKrtK,SACbn6E,IAAIwnP,EAAKxnP,GAAKA,EAAKg5P,GAASnjJ,EAAKysJ,EAAe,OAAQrB,KAC7DzjQ,EAAQ8jQ,GAAethQ,EAAIwnP,EAAKrtK,SAASjxE,GAAK1L,GAEhD,IAAK,IAAI8hD,KAAOkoM,EAAK6G,SACdruP,IAAIwnP,EAAKxnP,GAAKA,EAAKg5P,GAASnjJ,EAAKysJ,EAAe,OAAQrB,KAC7DzjQ,EAAQokQ,GAAe5hQ,EAAIwnP,EAAK6G,SAAS/uM,GAAM9hD,GAI7CwC,IACQ,IAAVxC,GAAeq4G,EAAIhxG,YAAY7E,GAAKwnP,EAAKxnP,GAAK,MAAQi5P,GAASj5P,EAAIxC,GAEvE,EAIA4kQ,WAAY,WACV,IAAIxmO,EAAMpmC,KAAK44P,MACfxyN,EAAIu+C,SAAW,CAAC,EAChBv+C,EAAIyyN,SAAW,CAAC,CAClB,IAsJF,IAAI,GAAU,KAEZr4N,GAAS,KAGP2sO,GAAc,CAChBz7P,MAAO,SAAeszP,EAAMx6P,EAAIiN,GAC9B,IAAI4oM,EAAK,GAAU71M,EAAGo1L,WAAW,GACjCp/J,GAAS6/K,EAAGgsD,WACZrH,EAAK5E,WAAW5/P,GAAMiX,EAAMzX,MAC5BwgC,GAASh2B,EAAG6hQ,WACZ,GAAU7hQ,EAAGo1L,WAAW,GACxBolE,EAAKluL,QAAQt2E,GAAMiX,EAAMzX,MACzB,IAAIssQ,EAAK,GAAU9hQ,EAAGo1L,WAAW,GACjColE,EAAKz6L,WAAW/pE,GAAMiX,EAAMzX,MAC5B,IAAImC,GAAkC,IAA1BsV,EAAKg/C,KAAKwpM,YAAwB,OAAS,KAMvD,GALI99P,IAAUq+B,GAAO1/B,SACnBwpD,GAAa+1J,EAAI,iBAAkBl+M,GACnCmoD,GAAagiN,EAAI,iBAAkBnqQ,GACnCq+B,GAAO1/B,OAASqB,GAEdsV,EAAKooP,kBAAoBpoP,EAAK0J,OAAQ,CACxC,IAAIosP,EAAQ91P,EAAKmkC,KACjB0O,GAAa+1J,EAAI,UAAW,MAG5BrgN,KAAK8L,MAAMwgQ,EAAI70P,GACf6yC,GAAagiN,EAAI,SAAU,MAGvBiB,IAAO91P,EAAKmkC,KAAO,MACvBpb,GAAS6/K,EAAGgsD,WACZrsQ,KAAK8L,MAAMu0M,EAAI5oM,GACX81P,IAAO91P,EAAKmkC,KAAO2xN,GAGvB,GAAU,IACZ,MAEEjjN,GAAa+1J,EAAI,UAAW,OAEhC,EACAx3F,MAAO,SAAem8I,EAAMx6P,EAAIiN,IACV,IAAhBA,EAAKmkB,QACP0xO,GAAS9iQ,EAAI,kBAAmB,iBAChC8iQ,GAAS9iQ,EAAI,kBAAmB,cAEhC8iQ,GAAS9iQ,EAAI,kBAAmB,KAEpC,EACAqW,KAAM,SAAcmkP,EAAMx6P,EAAIiN,GAC5B,IACIopB,EAAK1+B,EAAOs8F,EAAK8jK,EADjB9L,EAAKuL,GAAUvqP,GAEf,GAAQg/O,IAKV51N,GAHA1+B,EAAQs0P,EAAGzlO,KAAI,SAAU0V,GACvB,OAAOk7N,GAAUnqP,EAAMivB,EACzB,KACYrd,KAAK,SAELmX,GAAO3f,OACjB4iP,GAASj5P,EAAI,GACbi0F,EAAMj0F,EAAG8gF,cACTi3K,EAAKxhP,GAAWtJ,GAChBtV,EAAMiG,SAAQ,SAAUrE,EAAG7C,GACzB,IAAIssQ,EAAKpK,GAAU3kK,EAAK,QAASgtK,IACjC+B,EAAGrE,SAAW1xP,EACd+1P,EAAGnvL,YAAct6E,EACb7C,IACFssQ,EAAGljN,aAAa,IAAK,GACrBkjN,EAAGljN,aAAa,KAAMi4M,IAExB/3P,EAAGmD,YAAY6/P,EACjB,IACAhtO,GAAO3f,KAAOggB,IAIhB1+B,EAAQy/P,GAAUnqP,EAAMg/O,MACVj2N,GAAO3f,OACnBrW,EAAG6zE,YAAcl8E,EACjBq+B,GAAO3f,KAAO1e,GAGlBmoD,GAAa9/C,EAAI,cAAeipB,GAAWhc,IAC3C6yC,GAAa9/C,EAAI,YAAasW,GAASrJ,GAAQ,MAC/C6yC,GAAa9/C,EAAI,aAAciN,EAAKkc,WACpC22B,GAAa9/C,EAAI,eAAgBiN,EAAKmc,aACtC02B,GAAa9/C,EAAI,cAAeiN,EAAKic,WACvC,GAEF,SAASlzB,GAAKyB,EAAME,EAAOkhQ,GAErBlhQ,IAAUq+B,GAAOv+B,KAGjBohQ,EAiCN,SAAwB74P,EAAIvI,EAAME,EAAOkhQ,GAC1B,MAATlhQ,EAEFqI,EAAGqiQ,eAAexJ,EAAIphQ,EAAME,GAG5BqI,EAAGijQ,kBAAkBpK,EAAIphQ,EAE7B,CAxCI4qQ,CAAe,GAAS5qQ,EAAME,EAAOkhQ,GAErC/4M,GAAa,GAASroD,EAAME,GAI9Bq+B,GAAOv+B,GAAQE,EACjB,CACA,SAASmrQ,GAAS9iQ,EAAIvI,EAAME,GACtBA,IAAUq+B,GAAOv+B,KACN,MAATE,EACFqI,EAAGsB,MAAM4hQ,eAAezrQ,GAExBuI,EAAGsB,MAAMihQ,YAAY9qQ,EAAME,EAAQ,IAErCq+B,GAAOv+B,GAAQE,EAEnB,CACA,SAAS8pQ,GAAczhQ,EAAIlE,GACzB,IAAK,IAAIu6B,KAAOv6B,EACdgkD,GAAa9/C,EAAIq2B,EAAKv6B,EAAMu6B,GAEhC,CACA,SAASypB,GAAa9/C,EAAIvI,EAAME,GACjB,MAATA,EAEFqI,EAAG8/C,aAAaroD,EAAME,GAGtBqI,EAAGggD,gBAAgBvoD,EAEvB,CAUA,SAASq9E,KACP,IAAIroB,EACJ,MAAyB,oBAAX/zD,OAAyB,IAAM+zD,EAAM/zD,OAAOyqQ,UAAUjvC,KAAOznK,EAAIqoB,KAAKt4D,MAAM,GAAIiwC,EAAIynK,KAAK79N,QAAUo2D,EAAIqoB,IACvH,CACA,SAASsuL,GAAkBt1C,GACzB4rC,GAAStiQ,KAAK5B,KAAMs4N,GACpBt4N,KAAK6tQ,MAAQ,KACb7tQ,KAAK44P,MAAQ,CACXj0K,SAAU,CAAC,EACXk0K,SAAU,CAAC,EAEf,CACA,GAAS+U,GAAmB1J,GAAU,CAKpC7jJ,IAAK,WACH,OAAOrgH,KAAK6tQ,KACd,EAKAvI,QAAS,SAAiB3H,GACxB,IAAI5nP,EAAI80P,KAGR90P,EAAE+jD,KAAK,MAAOhkB,GAAO,CAAC,EAAGu0M,GAAU,CACjCyjB,MAAO,QACP//P,MAAO/N,KAAKiqE,OAASjqE,KAAKqlQ,OAC1Br3P,OAAQhO,KAAKkqE,QAAUlqE,KAAKqlQ,OAC5BnzM,QAAS,OAAO3+C,OAAOvT,KAAKiqE,OAAQ,KAAK12D,OAAOvT,KAAKkqE,YAIvD,IAAIoiM,EAAKtsQ,KAAKokQ,SAqBd,OApBIkI,GAAa,gBAAPA,GAA+B,SAAPA,GAChCv2P,EAAE+jD,KAAK,OAAQ,CACb/rD,MAAO/N,KAAKiqE,OACZj8D,OAAQhO,KAAKkqE,QACbtuB,KAAM0wN,IACL1+I,QAIL73G,EAAE+jD,KAAK,IAAK0xM,GAAgB,CAC1B13P,UAAW,aAAe9T,KAAKukQ,QAAU,MAE3CvkQ,KAAKy2D,KAAK1gD,EAAG4nP,GACb5nP,EAAE63G,QAGF5tH,KAAKgyP,KAAKj8O,GAGV/V,KAAK6tQ,MAAQ93P,EAAE63G,QAAU,GAClB5tH,IACT,EAMAy2D,KAAM,SAAc1gD,EAAG4nP,GACrB,IAAI7sB,EAAS9wO,KACTglQ,EAAOtC,GAAM/E,EAAMuC,UACrBhlO,EAAM8pO,EAAK9pO,IACX6yO,EAAW,CAACzD,GAAoBtF,EAAK5+P,MAGvC2P,EAAE+jD,KAAK,IAAK,CACV,MAAS4pM,GAAS/F,GAClB,YAAaA,EAAM1oP,KAAOyjP,GAAO14P,KAAM29P,EAAOA,EAAMjsP,OAAS,MAC5D84P,GAAmB7M,GAAQ,CAC5B,iBAA0B,MAARziO,IAAqC,IAAtByiO,EAAMsC,YAAwB,OAAS,OAI1E,IAAIphN,EAAU,SAAiBpnC,GAC7B,IAAI6nE,EAAOwxJ,EAAOxxJ,KAAK7nE,GAGvB,GAFI6nE,GAAMvpE,EAAE+jD,KAAK,IAAKwlB,GACtBvpE,EAAE+jD,KAAK5+B,EAAK41M,EAAO1qO,KAAKu3P,EAAOlmP,EAAMs2P,EAAkB,MAAR7yO,EAAcA,EAAM,OACvD,SAARA,EAAgB,CAClB,IAAI8yO,EAAMhM,GAAUvqP,GACpB,GAAI,GAAQu2P,GAMV,IAJA,IAAI1nQ,EAAQ,CACV2E,EAAG,EACH4B,GAAIkU,GAAWtJ,IAERvW,EAAI,EAAGA,EAAI8sQ,EAAIntQ,SAAUK,EAChC6U,EAAE+jD,KAAK,QAAS54D,EAAIoF,EAAQ,MAAMua,KAAK+gP,GAAUnqP,EAAMu2P,EAAI9sQ,KAAK0sH,aAIlE73G,EAAE8K,KAAK+gP,GAAUnqP,EAAMu2P,GAE3B,MAAO,GAAY,MAAR9yO,EAAa,CACtB,IAAI0kO,EAAOnoP,EAAKooP,iBACdoO,EAASx2P,EAAKmkC,KACdsyN,EAAUz2P,EAAK0J,OACby+O,GAAQsO,IACVz2P,EAAK0J,OAAS,MAEhBpL,EAAE+jD,KAAK,OAAQg3K,EAAO1qO,KAAKu3P,EAAOlmP,EAAMutP,EAAKz6L,WAAY,WAAWqjD,QAGpE73G,EAAE+jD,KAAK,IAAKg3K,EAAO1qO,KAAKu3P,EAAOlmP,EAAMutP,EAAKluL,UAC1CqnJ,GAAM1mN,GAAM,SAAUkmP,GACpB,OAAO7sB,EAAOr6K,KAAK1gD,EAAG4nP,EACxB,IACA5nP,EAAE63G,QACEgyI,GAAQsO,GACND,IAAQx2P,EAAKmkC,KAAO,MACxBnkC,EAAK0J,OAAS+sP,EACdn4P,EAAE+jD,KAAK,OAAQg3K,EAAO1qO,KAAKu3P,EAAOlmP,EAAMutP,EAAK5E,WAAY,WAAWxyI,QAChEqgJ,IAAQx2P,EAAKmkC,KAAOqyN,IAExBl4P,EAAE+jD,KAAK,OAAQg3K,EAAO1qO,KAAKu3P,EAAOlmP,EAAMutP,EAAK5E,WAAY,WAAWxyI,OAExE,CACA73G,EAAE63G,QACEtuC,GAAMvpE,EAAE63G,OACd,EASA,OAPIo3I,EAAKnG,OACHlB,EAAMx3M,OAASw3M,EAAMx3M,MAAMtlD,QAAQg+C,EAAQ8+M,EAAMx3M,MAAM,IAE3Dg4K,GAAMw/B,EAAO9+M,GAIR9oC,EAAE63G,OACX,EAKAtuC,KAAM,SAAc7nE,GAClB,IAEIrR,EAFAotO,EAASxzO,KACTs/E,EAAO7nE,EAAK6nE,KAEhB,GAAIA,EAAM,CACR,GAAIl5E,EAAOpG,KAAKmuQ,QAAUnuQ,KAAKmuQ,OAAO7uL,GACpC,OAAOl5E,EAEPpG,KAAKi6P,YAAY36K,GAAM/3C,MAAK,SAAUnhC,GAEpCA,EAAK,cAAgBA,EAAKk5E,KAC1Bl5E,EAAKk5E,KAAO,MACXk0J,EAAO26B,SAAW36B,EAAO26B,OAAS,CAAC,IAAI7uL,GAAQl5E,CAClD,GAEJ,CACA,OAAO,IACT,EAQAA,KAAM,SAAcu3P,EAAOlmP,EAAMnR,EAAO40B,GACtC,IAAI24M,EAAS7zO,KACT2kC,EAAS,CAAC,EACZnkC,EAAO,SAAcyB,EAAME,EAAOkhQ,EAAI+K,GACpCzpO,EAAOypO,GAAYnsQ,GAAQE,CAC7B,EAeF,OAZIs+B,MAAMC,QAAQp6B,GAChBA,EAAM8B,SAAQ,SAAUiL,GACtB,OAAOA,EAAG7S,EAAMiX,EAAMo8N,EACxB,IAEAvtO,EAAM9F,EAAMiX,EAAMzX,MAIhBk7B,GA2FR,SAAepd,EAAGrG,EAAMkmP,EAAOziO,EAAK82N,GAClC,IAAIqc,EACJ,GAAY,MAAR52P,EAAc,OAAOqG,EACb,WAARod,IAA0C,IAAtByiO,EAAMsC,cAC5BniP,EAAE,kBAAoB,QAExB,GAAY,WAARod,KACwB,IAAtByiO,EAAMsC,cACRniP,EAAE,kBAAoB,QAExBA,EAAEutC,QAAU,OACM,OAAd5zC,EAAKmkC,MAAe,OAAO99B,EAErB,UAARod,IAAmC,IAAhBzjB,EAAKmkB,SAC1ByyO,EAAY,CAAC,kCAAmC,gCAEtC,SAARnzO,IACFpd,EAAE,eAAiB2V,GAAWhc,GAC9BqG,EAAE,aAAegD,GAASrJ,GAAQ,KAClCqG,EAAE,cAAgBrG,EAAKkc,UACvB7V,EAAE,gBAAkBrG,EAAKmc,YACzB9V,EAAE,eAAiBrG,EAAKic,YAE1B,IAAK,IAAIxuB,KAAQomQ,GAAY,CAC3B,IAAIgD,EAAU72P,EAAKvS,GACfjD,EAAOqpQ,GAAWpmQ,IACN,gBAAZopQ,GAAuC,SAATrsQ,GAA4B,WAATA,IAAyC,MAAXqsQ,IAC7En5J,GAAWm5J,KACbA,EAAUvc,GAAYuc,EAAStc,EAAKrtK,SAAU,KAEhD7mE,EAAE7b,GAAQqsQ,EAEd,CACA,IAAK,IAAIC,KAAUhD,GAAW,CAC5B,IAAIiD,EAAU/2P,EAAK82P,GACJ,MAAXC,IACFH,EAAYA,GAAa,IACf9tQ,KAAK,GAAGgT,OAAOg4P,GAAUgD,GAAS,MAAMh7P,OAAOi7P,EAAS,KAEtE,CACIH,IACFvwP,EAAEhS,MAAQuiQ,EAAUhlP,KAAK,KAG7B,CAtIM,CAAMsb,EAAQltB,EAAMkmP,EAAOziO,EAAKl7B,KAAK44P,OAEhCj0N,CACT,EAOAqtN,KAAM,SAAcj8O,GAClB,IAAI4uE,EAAW3kF,KAAK44P,MAAMj0K,SACxBk0K,EAAW74P,KAAK44P,MAAMC,SAExB,GAAc,IADJrhP,OAAOopB,KAAK+jD,GAAU9jF,OAAS2W,OAAOopB,KAAKi4N,GAAUh4P,OAC/D,CAGA,IAAK,IAAI6S,KADTqC,EAAE+jD,KAAK,QACQ6qB,EAAU,CACvB,IAAI8pL,EAAO9pL,EAASjxE,GAClBw+O,EAAQuc,EAAKvc,MACO,WAAlBuc,EAAK9pL,UAMP5uE,EAAE+jD,KAAK,UAAW,CAChBpmD,GAAIo+O,GAAgBp+O,EACpBw+C,QAAS,UACTnkD,MAAO,OACPC,OAAQ,OACRk+P,oBAAqB,mBAEvBn2P,EAAE+jD,KAAK,OAAQ,CACb/rD,MAAO,IACPC,OAAQ,IACR4tC,KAAM,QAAUloC,EAAK,MACpBk6G,QACH73G,EAAE63G,QAEF73G,EAAE+jD,KAAK,iBAAkB,CACvBpmD,GAAIA,EACJmvC,GAAI4rN,EAAKrsP,GACT8nF,GAAIukK,EAAKpsP,GACT8pP,GAAIsC,EAAK9gP,GACTjM,GAAI+sP,EAAKnsP,GACTX,GAAI8sP,EAAKlsP,GACTrD,EAAGuvP,EAAK7gP,MAGV7X,EAAE+jD,KAAK,iBAAkB,CACvBpmD,GAAIA,EACJ0O,GAAIqsP,EAAKrsP,GACTE,GAAImsP,EAAKnsP,GACTD,GAAIosP,EAAKpsP,GACTE,GAAIksP,EAAKlsP,KAGb,IAAK,IAAIrhB,EAAI,EAAGA,EAAIgxP,EAAMrxP,SAAUK,EAClC6U,EAAE+jD,KAAK,OAAQ,CACbqpB,OAAQ+uK,EAAMhxP,GAAGiiF,OACjB,aAAc+uK,EAAMhxP,GAAG6yC,QACtB65E,QAEL73G,EAAE63G,OACJ,CACA,IAAK,IAAI8gJ,KAAQ7V,EAAU,CACzB,IAAI8V,EAAQ9V,EAAS6V,GACrB34P,EAAE+jD,KAAK,WAAY,CACjBpmD,GAAIg7P,IAEFC,EAAM9nQ,KACRkP,EAAE+jD,KAAK,OAAQ,CACb/zC,EAAG4oP,EAAM9nQ,OACR+mH,QAEH73G,EAAE+jD,KAAK,OAAQ,CACb7uD,EAAG,EACHC,EAAG,EACH6C,MAAO4gQ,EAAM5gQ,MACbC,OAAQ2gQ,EAAM3gQ,SACb4/G,QAEL73G,EAAE63G,OACJ,CACA73G,EAAE63G,OAvEqB,CAwEzB,IAiDF,IAAIxgH,GAAS,SAGT,GAAO,OACPwhQ,GAAa,CACfxhQ,OAAQA,GACRyhQ,IALQ,MAMRC,IALQ,MAMR92D,KAAM,IAEJ+2D,GAAU,CAAC,EAYf,SAASC,GAAa/sQ,EAAMykC,GAE1B,OADAzkC,EAAO0jB,OAAO1jB,GAAQ,IAAI2c,cACtBhe,UAAUC,OAAS,GACrBkuQ,GAAQ9sQ,GAAQykC,EACT1mC,MAEA+uQ,GAAQ9sQ,EAEnB,CACA,SAAS,GAAU07P,EAAO9wO,EAAQtc,GAChC,IAAI0+P,EAAO,GAET1tP,GAAM,IAAIu3O,IAASC,MAAMlsO,GAEzBlkB,EAAOg1P,EAAMuC,SACf,OAAOv3P,EAAOumQ,GAAcvR,EAAOp8O,EAAKhR,EAAQ0+P,GAAiB,UAATtmQ,EAAmBwmQ,GAAexR,EAAOp8O,EAAKhR,EAAQ0+P,GAAQ,GAAM,mDAC9H,CACA,SAASC,GAAcz4M,EAAMl1C,EAAKhR,EAAQ0+P,GACxC,GAkBF,SAAmBx4M,EAAMl1C,EAAKhR,GAI5B,OAAOkmD,EAAK5pC,QAAUtL,EAAIy4O,WAAWvjM,EAAK5pC,UAA8B,UAAlB4pC,EAAKypM,WAA6C,IAArBzpM,EAAKwpM,eAA2B1vP,GAAUA,EAAOkmD,IACtI,CAvBM24M,CAAU34M,EAAMl1C,EAAKhR,GAAS,CAChC,IAAI41C,EAAQsQ,EAAKtQ,MACfkpN,EAAS54M,EAAKypM,SACdtxO,EAAIu3B,EAAMtlD,OACRK,EAAI,EACR,GAAe,UAAXmuQ,EACF,KAAOnuQ,EAAI0tB,IAAK1tB,EACdiuQ,GAAehpN,EAAMjlD,GAAIqgB,EAAKhR,EAAQ0+P,QAGxC,IAAK,IAAI3pQ,EAAOo9P,GAAM2M,GAAQzQ,MAAO19P,EAAI0tB,IAAK1tB,EAAG,CAC/C,IAAIuW,EAAO0uC,EAAMjlD,GACbouQ,GAAc73P,EAAM8J,EAAKjc,IAAO2pQ,EAAK1uQ,KAAKkX,EAChD,CAEJ,CACA,OAAOw3P,CACT,CAOA,SAASE,GAAez9P,EAAO6P,EAAKhR,EAAQ0+P,GAGtC1+P,GAAUA,EAAOmB,EAAM+kD,OAAS64M,GAAc59P,EAAO6P,EAAKmhP,GAAMhxP,MAAMktP,QACxEqQ,EAAK1uQ,KAAKmR,GAKZ,IAAI69P,EAAQ79P,EAAMy0C,MAChBv3B,EAAI2gP,GAASA,EAAM1uQ,OACrB,GAAI+tB,EAAG,CACL,IAAI62G,EAAM/zH,EAAMzG,GAAK,EACnBqtO,EAAM5mO,EAAMxG,GAAK,EACnBqW,EAAIjJ,WAAWmtH,GAAM6yG,GACrB,IAAK,IAAIp3O,EAAI,EAAGA,EAAI0tB,IAAK1tB,EACvBguQ,GAAcK,EAAMruQ,GAAIqgB,EAAKhR,EAAQ0+P,GAEvC1tP,EAAIjJ,UAAUmtH,EAAK6yG,EACrB,CACA,OAAO22B,CACT,CACA,SAASK,GAAc73P,EAAM8J,EAAKjc,GAEhC,IAAIunB,EAASpV,EAAKoV,OAClB,OAAOtL,EAAIu4O,SAASjtO,IAAWtL,EAAIy4O,WAAWntO,IAAWvnB,EAAKmS,EAAM8J,EACtE,CA/EAwtP,GAAQ3hQ,IAAU2hQ,GAAW,IAAI,CAC/BpW,SAAUuP,GACVsH,SAAUtH,GACVzkO,QAASgjO,IAEXsI,GAAW,IAAI,CACbpW,SAAU+S,GACV8D,SAAU5B,GACVnqO,QAAS8kO,IAEXwG,GAAQ,IAAQ,CAAC,EAsEjB,IAAIU,GAAa,IAAI3W,GACrB,SAAS4W,GAAUj5M,GACjB,IAAIxhD,EAAOwhD,EAAKxhD,KAChB,GAAIy3H,GAAWz3H,GACbA,EAAK8lP,GAAa0U,GAAWlgQ,cACxB,KAAI0F,EAEJ,OADLw6P,GAAWvtQ,IAAI,EAAG,EAAGu0D,EAAK/kD,MAAM3D,MAAO0oD,EAAK/kD,MAAM1D,OACvC,CACbyoD,EAAK5pC,OAAOK,UAAUuiP,GACxB,CACA,IAAIE,GAAY,KAChB,SAASC,GAAWzxP,EAAG8E,EAAG4d,GACxB,OAAO1iB,IAAM8E,IAAmB,SAAR4d,EAAiBgvO,GAAU1xP,EAAG8E,GAAK9E,aAAanb,MAAQigB,aAAajgB,MAAQmb,IAAO8E,EAAI0jC,GAASxoC,IAAMwoC,GAAS1jC,GAAKhJ,KAAKoG,IAAIlC,EAAI8E,IAAM0sP,GAAaxxP,GAAM8E,IAAMkrC,GAAShwC,IAAOgwC,GAASlrC,IAKpN,SAAqB9E,EAAG8E,GACtB,IAEE4d,EACA3/B,EAHE4uQ,EAAKt4P,OAAOopB,KAAKziB,GACnB4xP,EAAKv4P,OAAOopB,KAAK3d,GAGnB,GAAI6sP,EAAGjvQ,SAAWkvQ,EAAGlvQ,OAAQ,OAAO,EAGpC,IAFAivQ,EAAGv9P,OACHw9P,EAAGx9P,OACErR,EAAI4uQ,EAAGjvQ,OAAS,EAAGK,GAAK,EAAGA,IAC9B,GAAI4uQ,EAAG5uQ,IAAM6uQ,EAAG7uQ,GAAI,OAAO,EAE7B,IAAKA,EAAI4uQ,EAAGjvQ,OAAS,EAAGK,GAAK,EAAGA,IAE9B,IAAK0uQ,GAAWzxP,EADhB0iB,EAAMivO,EAAG5uQ,IACe+hB,EAAE4d,GAAMA,GAAM,OAAO,EAE/C,cAAc1iB,UAAa8E,CAC7B,CArBkO+sP,CAAY7xP,EAAG8E,GAAxB9E,GAAK8E,EAC9N,CACA,SAAS4sP,GAAU1xP,EAAG8E,GACpB,OAAO2sP,GAAW,GAAMzxP,GAAI,GAAM8E,GACpC,CAkBA,SAASgtP,KACPxX,KAlrJA5G,GAAc,CAorJhB,CE9rJA,IAAIqe,GAAM,MACNC,GAAO,OACPC,GAAQ,QACRC,GAAS,SACTC,GAAU,WACVC,GAAW,YACXC,GAAa,cACbC,GAAc,eACdC,GAAQ,QACRC,GAAS,SACTC,GAAM,MACNhnP,GAAI,IACJC,GAAI,IACJ41D,GAAQ,QACRoxL,GAAW,OACXC,GAAY,QACZC,GAAY,QACZC,GAAY,QACZC,GAAa,SACbC,GAAY,aACZC,GAAY,aACZC,GAAW,YACXC,GAAY,gBACZC,GAAY,gBACZC,GAAW,eACXC,GAAU,UACVC,GAAU,SACVC,GAAM,MACNC,GAAO,QACPC,GAAO,QACPC,GAAM,MACN,GAAO,OACPC,GAAM,MACNC,GAAO,OACPC,GAAQ,QACRC,GAAS,SACT,GAAM,MAQV,SAASC,GAAM5wP,GACb0gN,GAAUpgO,KAAK5B,KAAM,KAAMshB,EAC7B,CA2DA,SAAS,GAAU7J,EAAMsnP,EAAO7xG,GAC9B,OAAO6xG,EAAMtnP,EAAKoV,OAAOtd,QAASkI,EAAMy1I,EAC1C,CA5DA,GAASglH,GAAOlwC,GAAW,CACzBluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAMEs3C,EANEC,EAAOv3C,EAAM6C,SACfjnK,EAAO/vB,EAAE+vB,KACT9tD,EAAO8tD,EAAKypM,SACZxqM,EAAQgtM,GAAM/5P,GACdo2P,EAAQrpM,EAAMqpM,MACZsT,EAAa57M,EAAK5pC,OAEtB,GAAI6oC,EAAMmpM,OAEJpoM,EAAKtQ,MAAMtlD,QAAQuxQ,EAAK7oI,MAAM9yE,EAAKtQ,MAAM,IAC7CksN,EAAa,GAAU57M,EAAMsoM,GAC7BtoM,EAAKtQ,MAAM/9C,SAAQ,SAAUqP,GAC3BA,EAAKoV,OAAOtd,QAAQwpP,MAAMsZ,EAC5B,SACK,GAAI1pQ,IAAS82E,IAAS/4C,EAAE00L,WAY7B,OATAP,EAAMsD,MAAMtD,EAAMiE,KAAK,SAAUrnN,GAC/B,OAAO26P,EAAK7oI,MAAM9xH,EACpB,IACA46P,EAAW9iQ,QACXknD,EAAKtQ,MAAM/9C,SAAQ,SAAUqP,GAC3B,OAAO46P,EAAWtZ,MAAM,GAAUthP,EAAMsnP,GAC1C,IAGQtoM,EAAK4J,MACX,KAAKwwM,GACL,KAAKI,GACL,KAAKH,GACHj2C,EAAMD,cAIVu3C,EAAUt3C,EAAM8D,QAAQ9D,EAAMgE,KAC9BhE,EAAMsD,MAAMtD,EAAM+D,KAAK,SAAUnnN,GAC/B46P,EAAWtZ,MAAM,GAAUthP,EAAMsnP,GACnC,IACAlkC,EAAMsD,MAAMtD,EAAMiE,KAAK,SAAUrnN,GAC/B06P,EAAUA,GAAWE,EAAWtY,WAAWtiP,EAAKoV,QAChDulP,EAAK7oI,MAAM9xH,GACX46P,EAAWtZ,MAAM,GAAUthP,EAAMsnP,GACnC,IACIoT,IACFE,EAAW9iQ,QACXknD,EAAKtQ,MAAM/9C,SAAQ,SAAUqP,GAC3B,OAAO46P,EAAWtZ,MAAMthP,EAAKoV,OAC/B,KAMJ,OADA6iP,GAAUj5M,GACHokK,EAAMG,SAAS,SACxB,IAKF,IAAIs3C,GAAe,oBAanB,SAASC,GAAWjxP,GAClB0gN,GAAUpgO,KAAK5B,KAAM,EAAGshB,EAC1B,CAoCA,SAASkxP,GAAKlxP,GACZ0gN,GAAUpgO,KAAK5B,KAAM,KAAMshB,EAC7B,CAgEA,SAASmxP,GAAQnxP,GACf0gN,GAAUpgO,KAAK5B,KAAM,KAAMshB,EAC7B,CAvGAixP,GAAWxvC,WAAa,CACtB,KAAQ,aACR,SAAY,CACV,UAAY,GAEd,OAAU,CAAC,CACT,KAAQ,KACR,KAAQ,SACR,UAAY,KAGhB,GAASwvC,GAAYvwC,GAAW,CAC9BluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAAI63C,EAUR,SAAoBN,GAClB,OAAOA,EAAKO,SAASL,MAAkBF,EAAKO,SAASL,IAAgBF,EAAK5gQ,IAAI,GAChF,CAZkBohQ,CAAW/3C,EAAM6C,UAC7BqL,EAAKriM,EAAEqiM,GACLr1N,EAAKg/P,EAAQvwQ,MAKjB,OAJA04N,EAAMsD,MAAMtD,EAAM+D,KAAK,SAAU76N,GAC/B,OAAOA,EAAEglO,GAAMhlO,EAAEglO,MAASr1N,CAC5B,IACAg/P,EAAQxwQ,IAAIlC,KAAKmC,MAAQuR,GAClBmnN,CACT,IAiBF,GAAS23C,GAAMxwC,GAAW,CACxBluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAAIpkK,EAAOz2D,KAAKmC,MAGXs0D,KACHA,EAAOokK,EAAM6C,SAASm1C,aAAap8M,KAAK/vB,EAAE29N,QA4BhD,SAAkB39N,GAChB,IAAI8N,EAAI9N,EAAEpE,OACRlkB,EAAIsoB,EAAE90B,OACR,OAAO4iC,GAAgB,IAAXA,EAAElQ,KAAakQ,EAAExyC,IAAIwV,OAAOopB,KAAK4T,EAAE7P,QAAQ,IAAM6P,GAAKp2B,EAAIo2B,EAAE29M,OAAO/zO,GAAK,IACtF,CAhCyD00P,CAASpsO,GAAIA,EAAE1+B,QAC7D0J,MAAMyhB,QAAUuT,EAAEvT,QAClBuT,EAAEvT,QAAQzhB,QAAOg1B,EAAEvT,QAAQzhB,MAAQ+kD,EAAK/kD,OAC7C+kD,EAAKplC,OAASrxB,KAAKqxB,OACnBolC,EAAKxhD,KAAOyxB,EAAEzxB,KACdwhD,EAAKwpM,YAAcv5N,EAAEu5N,YACrBjgQ,KAAKmC,MAAQs0D,GAIf,IAAIs8M,EAAOt8M,EAAKypM,WAAazgL,GAAQu5K,GAAY,GAejD,OAdAn+B,EAAMsD,MAAMtD,EAAM+D,KAAK,SAAUnnN,GAC/B,OAAOs7P,EAAKnxQ,KAAK6V,EAAMg/C,EACzB,KAGI/vB,EAAE00L,SAAS,SAAW10L,EAAE00L,SAAS,kBACnC3kK,EAAKxhD,KAAOyxB,EAAEzxB,KACdwhD,EAAKwpM,cAAgBv5N,EAAEu5N,YACvBxpM,EAAKmnM,QAAS,EACd/iC,EAAMD,UAIRnkK,EAAKtQ,MAAQ00K,EAAMxpM,OACZwpM,CACT,IAkCF,IAAI,GAAU,CACZm4C,OAAQ,SAAgB7sN,GACtB,OAAOA,EAAM51C,QAAO,SAAUkH,EAAMvW,GAClC,OAAOA,EAAI,EAAIuW,EAAK9C,QAAU,EAAI,CACpC,GACF,EACAs+P,OAAQ,SAAgB9sN,EAAO+sN,GAC7B,IAAI/0P,EACJ,OAAOgoC,EAAM51C,QAAO,SAAU0S,EAAG/hB,GAC/B,OAAQA,GAAM,GAAUid,EAAE0O,OAAQ5J,EAAE4J,OAAQqmP,GAAoBjwP,EAAEtO,QAAU,GAAxBwJ,EAAI8E,EAAG,EAC7D,GACF,GAKE,GAAY,SAAmB9E,EAAG8E,EAAGiwP,GACvC,OAAOA,EAAMj5P,KAAKE,IAAI8I,EAAEb,GAAKjE,EAAEmE,GAAInE,EAAEiE,GAAKa,EAAEX,GAAIW,EAAEZ,GAAKlE,EAAEoE,GAAIpE,EAAEkE,GAAKY,EAAEV,GACxE,EACI4wP,GAAa,SAAoBhtN,EAAOm2J,GAC1C,IAAK,IAAkDr5L,EAA9C/hB,EAAI,EAAG0tB,EAAIu3B,EAAMtlD,OAAQsd,EAAIgoC,EAAM,GAAGt5B,OAAW3rB,EAAI0tB,EAAGzQ,EAAI8E,IAAK/hB,EACxE,GAAI,GAAUid,EAAG8E,EAAIkjC,EAAMjlD,GAAG2rB,OAAQyvL,GAAM,OAAO,CAEvD,EACI82D,GAAY,SAAmB37P,GACjC,IAAIwL,EAAIxL,EAAKoV,OACb,OAAO5J,EAAElV,QAAU,GAAKkV,EAAEjV,SAAW,CACvC,EAgBI,GAAQ,SAAeqjB,GAIzB,OAHAA,EAAOjpB,SAAQ,SAAUqP,GACvB,OAAOA,EAAK9C,QAAU,CACxB,IACO0c,CACT,EAIIupM,GAAS,SAAgBC,EAAOn0L,GAClC,OAAOm0L,EAAMD,OAAOl0L,EAAE00L,YAAYJ,SAAS,UAC7C,EAyDA,SAASq4C,GAAO/xP,GACd0gN,GAAUpgO,KAAK5B,KAAM,KAAMshB,EAC7B,CA1DA,GAASmxP,GAASzwC,GAAW,CAC3BluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAGE10K,EACA7gD,EAJEqsB,EAAS,GAAQ+U,EAAE/6B,SAAW,GAAQqnQ,OACxCE,EAAMxsO,EAAE4sO,YAAc,EACpBjiP,EAASwpM,EAAM2F,YAAY3F,EAAMuF,QAAQ/uM,OAG7C,GAAKA,GAAWA,EAAOxwB,OAAvB,CACA,IAAK6lC,EAAE/6B,OAML,OAJI+6B,EAAE00L,SAAS,YACb,GAAM/pM,GACNwpM,EAAQD,GAAOC,EAAOn0L,IAEjBm0L,EAOT,IAHAxpM,EAASA,EAAO9gB,OAAO6iQ,KAGXvyQ,OAAZ,CAMA,GALI6lC,EAAEn0B,OACJ8e,EAASA,EAAOrK,QAAQzU,KAAKm0B,EAAEn0B,OAEjC4zC,EAAQ,GAAM90B,GACdwpM,EAAQD,GAAOC,EAAOn0L,GAClByf,EAAMtlD,QAAU,GAAKsyQ,GAAWhtN,EAAO+sN,GAAM,CAC/C,GACE/sN,EAAQx0B,EAAOw0B,EAAO+sN,SACf/sN,EAAMtlD,QAAU,GAAKsyQ,GAAWhtN,EAAO+sN,IAC5C/sN,EAAMtlD,OAAS,IAAM43M,GAAKpnL,GAAQ1c,UAChCwxC,EAAMtlD,OAAS,IAAG43M,GAAKtyJ,GAAOxxC,QAAU,GAC5C8jM,GAAKpnL,GAAQ1c,QAAU,EAE3B,CACI+xB,EAAE6sO,YAAc7sO,EAAE8sO,gBAAkB,IACtCluQ,EAhEU,SAAmBwT,EAAOomP,EAAQngO,GAChD,IAAI4oB,EAAQ7uC,EAAM6uC,QAChB1kC,EAAI,IAAI61O,GAOV,OANIoG,IAAWgR,IAAOhR,IAAWmR,GAC/BptP,EAAE/gB,IAAIylD,EAAM,IAAI,IAAWA,EAAM,GAAI,KAErC1kC,EAAE/gB,KAAI,IAAWylD,EAAM,GAAI,IAAWA,EAAM,IAE9C1kC,EAAEmiD,OAAOrmC,GAAa,GACf,SAAUtnB,GACf,OAAOwL,EAAE62O,SAASriP,EAAKoV,OACzB,CACF,CAoDa4mP,CAAU/sO,EAAE6sO,WAAY7sO,EAAEgtO,aAAchtO,EAAE8sO,gBACjDniP,EAAOjpB,SAAQ,SAAUqP,GAClBnS,EAAKmS,KAAOA,EAAK9C,QAAU,EAClC,KAIF,IAAIkY,EAASs5B,EAAM,GAAGsQ,KAAK5pC,OAAOtd,QAIlC,OAHA8hB,EAAOjpB,SAAQ,SAAUqP,GACnBA,EAAK9C,SAASkY,EAAOksO,MAAMthP,EAAKoV,OACtC,IACOguM,CA3BmB,CAdW,CA0CvC,IAUF,GAASw4C,GAAQrxC,GAAW,CAC1BluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAAIu3C,EAAOv3C,EAAM6C,SAMjB,GALA7C,EAAMsD,MAAMtD,EAAMqF,KAAK,SAAUzoN,GAC/B,OAAO26P,EAAK7oI,MAAM9xH,EACpB,IAGIojN,EAAMj7F,QAAUi7F,EAAMj7F,OAAe,OAAG,CAC1C,IAAInoH,EAAOojN,EAAMxpM,QAAUwpM,EAAMxpM,OAAO,GACpC5Z,IAAMA,EAAKg/C,KAAKmnM,QAAS,EAC/B,CACF,IAEF,IAAI,GAAa,IAAI9E,GACrB,SAAS,GAAIrhP,EAAMujM,EAAU74M,GAC3B,OAAOsV,EAAKujM,KAAc74M,EAAQ,GAAKsV,EAAKujM,GAAY74M,EAAO,EACjE,CACA,SAASwxQ,GAAQl9M,GACf,IAAIyoM,EAASzoM,EAAKtQ,MAAM,GAAG+4M,OAC3B,OAAOA,IAAWiR,IAAQjR,IAAWkR,EACvC,CAWA,SAASwD,GAAWxB,EAAMyB,EAAM9lQ,EAAOC,GACrC,IAgBE9M,EACA4c,EAjBErG,EAAOo8P,EAAK1tN,MAAM,GACpBgyK,EAAQ1gN,EAAK0gN,MACb99K,EAA0B,MAAlB5iC,EAAKa,UAAoBb,EAAKa,UAAY,GAClD4mP,EAASznP,EAAKynP,OACd4U,EAfJ,SAAqB37C,GACnB,IAAInwN,GAASmwN,EAAMtrC,KACnB,MAAO,CAACsrC,EAAM3W,MAAQx5M,KAAW,EAEjCmwN,EAAM47C,OAAS/rQ,KAAW,EAE1BA,IAASmwN,EAAM59K,OAEjB,CAOcy5N,CAAY77C,GACtBxwK,EAAQlwC,EAAKkwC,MACbw7B,EAAS1rE,EAAK0rE,OACdh4B,EAAW1zC,EAAK0zC,SAChB8oN,EAAYx8P,EAAKw8P,UACjBC,EAAYz8P,EAAKy8P,UACjBniN,EAAQomK,EAAMpmK,OAASt6C,EAAK0uC,MAAM2tN,EAAQ,IAAI3tN,MAAM,GACpDguN,EAAe18P,EAAK08P,aACpBtnP,EAASpV,EAAKoV,OACdunP,EAAKriN,GAASmwM,GAAgBnwM,GAC9B9mD,EAAI,EACJC,EAAI,EASN,OANA,GAAWqE,QAAQwpP,MAAMlsO,GACzBA,EAAOtd,SACFrO,EAAI4yQ,EAAQ,KAAO,GAAGjnP,EAAOksO,MAAMthP,EAAK0uC,MAAMjlD,GAAG2rB,SACjD3rB,EAAI4yQ,EAAQ,KAAO,GAAGjnP,EAAOksO,MAAMthP,EAAK0uC,MAAMjlD,GAAG2rB,QAG9CqyO,GACN,KAAKgR,GACHjlQ,EAAIkgD,GAAY,EAChBjgD,GAAKi4E,EACLrlE,EAAI7D,KAAKE,IAAI85P,EAAWh6P,KAAKC,IAAIg6P,GAAYrnP,EAAOxK,KACpDwK,EAAOrb,IAAI,GAAIsM,GAAGtM,IAAIm2C,EAAO,GACzBoK,GAAOsiN,GAAgBjC,EAAMrgN,EAAOj0C,EAAGq2P,EAAcC,EAAI,GAAI,EAAGvnP,GACpE,MACF,KAAKsjP,GACHllQ,GAAKk4E,EACLj4E,EAAIigD,GAAY,EAChBrtC,EAAI7D,KAAKE,IAAI85P,EAAWh6P,KAAKC,IAAIg6P,GAAYrnP,EAAOzK,KACpDyK,EAAOrb,KAAKsM,EAAG,GAAGtM,IAAI,EAAGm2C,GACrBoK,GAAOsiN,GAAgBjC,EAAMrgN,EAAOj0C,EAAGq2P,EAAcC,EAAI,GAAI,EAAGvnP,GACpE,MACF,KAAKujP,GACHnlQ,EAAI8C,EAAQo1E,EACZj4E,EAAIigD,GAAY,EAChBrtC,EAAI7D,KAAKE,IAAI85P,EAAWh6P,KAAKC,IAAIg6P,EAAWrnP,EAAOvK,KACnDuK,EAAOrb,IAAI,EAAG,GAAGA,IAAIsM,EAAG6pC,GACpBoK,GAAOsiN,GAAgBjC,EAAMrgN,EAAOj0C,EAAGq2P,EAAcC,EAAI,EAAG,EAAGvnP,GACnE,MACF,KAAKwjP,GACHplQ,EAAIkgD,GAAY,EAChBjgD,EAAI8C,EAASm1E,EACbrlE,EAAI7D,KAAKE,IAAI85P,EAAWh6P,KAAKC,IAAIg6P,EAAWrnP,EAAOtK,KACnDsK,EAAOrb,IAAI,EAAG,GAAGA,IAAIm2C,EAAO7pC,GACxBi0C,GAAOsiN,GAAgBjC,EAAMrgN,EAAOj0C,EAAGq2P,EAAc,EAAG,EAAG,EAAGtnP,GAClE,MACF,QACE5hB,EAAIwM,EAAKxM,EACTC,EAAIuM,EAAKvM,EAWb,OAPAmuP,GAAYxsO,EAAOvU,UAAUrN,EAAGC,GAAIuM,GAChC,GAAIA,EAAM,IAAKxM,EAAIovC,GAAS,GAAI5iC,EAAM,IAAKvM,EAAImvC,KACjD5iC,EAAKoV,OAAS,GACdulP,EAAK7oI,MAAM9xH,GACXA,EAAKoV,OAASA,EACdulP,EAAK7oI,MAAM9xH,IAENA,EAAKg/C,KAAK5pC,OAAOtd,QAAQwpP,MAAMlsO,EACxC,CACA,SAASwnP,GAAgBjC,EAAMrgN,EAAOoxB,EAAQm5H,EAAK83D,EAAIT,EAASh7D,EAAM9rL,GACpE,IAAI5J,EAAI8uC,EAAMllC,OACd,GAAIklC,EAAMuiN,KAAM,CACd,IAAIriQ,EAAI0mM,GAAQx1H,EAASixL,EAAK93D,GAC1B1vM,EAAK,EACPC,EAAK,EACPulQ,EAAK7oI,MAAMx3E,GACX4hN,EAAU/mQ,GAAMmlD,EAAM9mD,GAAK,IAAM8mD,EAAM9mD,EAAIgH,GAAKpF,GAAMklD,EAAM7mD,GAAK,IAAM6mD,EAAM7mD,EAAI+G,GACjF8/C,EAAM0E,KAAK5pC,OAAOtd,QAAQwpP,MAAM91O,EAAE3K,WAAW1L,GAAKC,IAClDulQ,EAAK7oI,MAAMx3E,EACb,CACAllC,EAAOksO,MAAM91O,EACf,CAGA,IAAI,GAAM,SAAa9E,EAAG8E,GACxB,OAAOhJ,KAAKwX,MAAMxX,KAAKC,IAAIiE,EAAG8E,GAChC,EACI,GAAM,SAAa9E,EAAG8E,GACxB,OAAOhJ,KAAKisJ,KAAKjsJ,KAAKE,IAAIgE,EAAG8E,GAC/B,EAqDA,SAASsxP,GAAU98P,GACjB,OAAO,IAAIqhP,IAAS52P,IAAI,EAAG,EAAGuV,EAAK1J,OAAS,EAAG0J,EAAKzJ,QAAU,EAChE,CACA,SAASwmQ,GAAS/8P,GAChB,IAAIwL,EAAIxL,EAAKoV,OAAOtW,QACpB,OAAO0M,EAAEs9C,QAAUt9C,EAAE/gB,IAAI,EAAG,EAAG,EAAG,GAAK+gB,EAAE3K,YAAYb,EAAKxM,GAAK,KAAMwM,EAAKvM,GAAK,GACjF,CACA,SAAS,GAAIgiJ,EAAKrsH,EAAK9a,GACrB,IAAI9T,EAAIk8C,GAAS++F,GAAOA,EAAIrsH,GAAOqsH,EACnC,OAAY,MAALj7I,EAAYA,OAAUwkB,IAAN1Q,EAAkBA,EAAI,CAC/C,CACA,SAAS0uP,GAAYxiQ,GACnB,OAAOA,EAAI,EAAIgI,KAAKisJ,MAAMj0J,GAAK,CACjC,CACA,SAASyiQ,GAAWtC,EAAM9vO,EAAQ4qH,GAChC,IAmBEn3I,EACA7U,EACAikB,EACAjG,EACA+D,EACAuxB,EACApnB,EACAC,EACApiB,EACAC,EACAi4E,EA7BEomD,GAAS2jB,EAAIynH,QACf7lQ,EAAOo+I,EAAIrgI,SAAWmlP,GAAQuC,GAAYC,GAC1C3nP,EAAS,GAAW3qB,IAAI,EAAG,EAAG,EAAG,GACjC0yQ,EAAW,GAAI1nH,EAAI74D,MAAO49K,IAC1B4C,EAAW,GAAI3nH,EAAI74D,MAAO,IAC1BygL,EAAS,GAAI5nH,EAAI9yE,QAAS63L,IAC1B8C,EAAS,GAAI7nH,EAAI9yE,QAAS,IAC1B46L,EAAQ9nH,EAAImwD,SAAW/6K,EAAOzhC,OAC9Bo0Q,EAAQD,GAAS,EAAI,EAAI/6P,KAAKisJ,KAAK5jI,EAAOzhC,OAASm0Q,GACnDpmP,EAAI0T,EAAOzhC,OACXkgQ,EAAUtgO,MAAM7R,GAChBsmP,EAAUz0O,MAAMu0O,GAChBG,EAAO,EACPnU,EAAUvgO,MAAM7R,GAChBwmP,EAAU30O,MAAMw0O,GAChBI,EAAO,EACPzoQ,EAAK6zB,MAAM7R,GACX/hB,EAAK4zB,MAAM7R,GACX0mP,EAAQ70O,MAAM7R,GAYhB,IAAK1tB,EAAI,EAAGA,EAAI8zQ,IAAS9zQ,EAAGg0Q,EAAQh0Q,GAAK,EACzC,IAAKA,EAAI,EAAGA,EAAI+zQ,IAAS/zQ,EAAGk0Q,EAAQl0Q,GAAK,EAGzC,IAAKA,EAAI,EAAGA,EAAI0tB,IAAK1tB,EACnBszC,EAAIlS,EAAOphC,GACX+hB,EAAIqyP,EAAMp0Q,GAAK4N,EAAK0lC,GACpBA,EAAEvpC,EAAIupC,EAAEvpC,GAAK,EACb2B,EAAG1L,GAAK,EACRszC,EAAEtpC,EAAIspC,EAAEtpC,GAAK,EACb2B,EAAG3L,GAAK,EACRikB,EAAIjkB,EAAI8zQ,EACR91P,KAAOhe,EAAI8zQ,GACXG,EAAOl7P,KAAKE,IAAIg7P,EAAM/nP,EAAKnT,KAAKisJ,KAAKjjJ,EAAEX,KACvC+yP,EAAOp7P,KAAKE,IAAIk7P,EAAMhoP,EAAKpT,KAAKisJ,KAAKjjJ,EAAEV,KACvC2yP,EAAQ/vP,GAAKlL,KAAKE,IAAI+6P,EAAQ/vP,GAAIiI,GAClCgoP,EAAQl2P,GAAKjF,KAAKE,IAAIi7P,EAAQl2P,GAAImO,GAClC0zO,EAAQ7/P,GAAK4zQ,EAASL,GAAYxxP,EAAEb,IACpC4+O,EAAQ9/P,GAAK6zQ,EAASN,GAAYxxP,EAAEZ,IAChCknH,GAAO6oI,EAAK7oI,MAAMjnG,EAAOphC,IAI/B,IAAKA,EAAI,EAAGA,EAAI0tB,IAAK1tB,EACfA,EAAI8zQ,GAAU,IAAGjU,EAAQ7/P,GAAK,GAC9BA,EAAI8zQ,IAAOhU,EAAQ9/P,GAAK,GAI9B,GAAI0zQ,IAAa7C,GACf,IAAK5sP,EAAI,EAAGA,EAAI6vP,IAAS7vP,EAAG,CAC1B,IAAKg+D,EAAS,EAAGjiF,EAAIikB,EAAGjkB,EAAI0tB,EAAG1tB,GAAK8zQ,EAC9B7xL,EAAS49K,EAAQ7/P,KAAIiiF,EAAS49K,EAAQ7/P,IAE5C,IAAKA,EAAIikB,EAAGjkB,EAAI0tB,EAAG1tB,GAAK8zQ,EACtBjU,EAAQ7/P,GAAKiiF,EAAS+xL,EAAQ/vP,EAAI,EAEtC,MACK,GAAIyvP,IAAa9C,GAAK,CAC3B,IAAK3uL,EAAS,EAAGjiF,EAAI,EAAGA,EAAI0tB,IAAK1tB,EAC3BA,EAAI8zQ,GAAS7xL,EAAS49K,EAAQ7/P,KAAIiiF,EAAS49K,EAAQ7/P,IAEzD,IAAKA,EAAI,EAAGA,EAAI0tB,IAAK1tB,EACfA,EAAI8zQ,IAAOjU,EAAQ7/P,GAAKiiF,EAASgyL,EAEzC,MACE,IAAKP,GAAW,EAAOzvP,EAAI,EAAGA,EAAI6vP,IAAS7vP,EACzC,IAAKjkB,EAAIikB,EAAGjkB,EAAI0tB,EAAG1tB,GAAK8zQ,EACtBjU,EAAQ7/P,IAAMg0Q,EAAQ/vP,EAAI,GAMhC,GAAI0vP,IAAa9C,GACf,IAAK7yP,EAAI,EAAGA,EAAI+1P,IAAS/1P,EAAG,CAC1B,IAAKikE,EAAS,EAAkBptE,GAAf7U,EAAIge,EAAI81P,GAAeA,EAAO9zQ,EAAI6U,IAAK7U,EAClDiiF,EAAS69K,EAAQ9/P,KAAIiiF,EAAS69K,EAAQ9/P,IAE5C,IAAKA,EAAIge,EAAI81P,EAAO9zQ,EAAI6U,IAAK7U,EAC3B8/P,EAAQ9/P,GAAKiiF,EAASiyL,EAAQl2P,EAAI,EAEtC,MACK,GAAI21P,IAAa/C,GAAK,CAC3B,IAAK3uL,EAAS,EAAGjiF,EAAI8zQ,EAAO9zQ,EAAI0tB,IAAK1tB,EAC/BiiF,EAAS69K,EAAQ9/P,KAAIiiF,EAAS69K,EAAQ9/P,IAE5C,IAAKA,EAAI8zQ,EAAO9zQ,EAAI0tB,IAAK1tB,EACvB8/P,EAAQ9/P,GAAKiiF,EAASkyL,CAE1B,MACE,IAAKR,GAAW,EAAO31P,EAAI,EAAGA,EAAI+1P,IAAS/1P,EACzC,IAAoBnJ,GAAf7U,EAAIge,EAAI81P,GAAeA,EAAO9zQ,EAAI6U,IAAK7U,EAC1C8/P,EAAQ9/P,IAAMk0Q,EAAQl2P,EAAI,GAMhC,IAAKjU,EAAI,EAAG/J,EAAI,EAAGA,EAAI0tB,IAAK1tB,EAC1B+J,EAAI81P,EAAQ7/P,IAAMA,EAAI8zQ,EAAQ/pQ,EAAI,GAClC2B,EAAG1L,IAAM+J,EAAIq3B,EAAOphC,GAAG+J,EAIzB,IAAKka,EAAI,EAAGA,EAAI6vP,IAAS7vP,EACvB,IAAKja,EAAI,EAAGhK,EAAIikB,EAAGjkB,EAAI0tB,EAAG1tB,GAAK8zQ,EAC7B9pQ,GAAK81P,EAAQ9/P,GACb2L,EAAG3L,IAAMgK,EAAIo3B,EAAOphC,GAAGgK,EAK3B,GAAI0pQ,GAAY,GAAI1nH,EAAIrvH,OAAQo0O,KAAWgD,EAAQ,EACjD,IAAK/zQ,EAAI,EAAGA,EAAI0tB,IAAK1tB,GAEnB+J,GADAgY,EAAI2xP,IAAa9C,GAAMqD,EAAOD,EAAQh0Q,EAAI8zQ,IAClCM,EAAMp0Q,GAAGohB,GAAKggB,EAAOphC,GAAG+J,EAAI2B,EAAG1L,IAC/B,IAAG0L,EAAG1L,IAAM+J,EAAI,GAK5B,GAAI4pQ,GAAY,GAAI3nH,EAAIrvH,OAAQ,KAAkB,IAAVm3O,EACtC,IAAK9zQ,EAAI,EAAGA,EAAI0tB,IAAK1tB,GAEnBgK,GADA+X,EAAI4xP,IAAa/C,GAAMuD,EAAOD,KAAWl0Q,EAAI8zQ,KACrCM,EAAMp0Q,GAAGqhB,GAAK+f,EAAOphC,GAAGgK,EAAI2B,EAAG3L,IAC/B,IAAG2L,EAAG3L,IAAMgK,EAAI,GAK5B,IAAKhK,EAAI,EAAGA,EAAI0tB,IAAK1tB,EACnB2rB,EAAOksO,MAAMuc,EAAMp0Q,GAAGoX,UAAU1L,EAAG1L,GAAI2L,EAAG3L,KAI5C,OAFA+J,EAAI,GAAIiiJ,EAAIzlC,OAAQ79F,IACpB1e,EAAI,GAAIgiJ,EAAIzlC,OAAQ59F,IACZ,GAAIqjI,EAAIzlC,OAAQwqJ,KACtB,KAAKrB,GACH3lQ,GAAK4hB,EAAO9e,QACZ,MACF,KAAK4iQ,GACH1lQ,GAAK4hB,EAAO9e,QAAU,EAE1B,OAAQ,GAAIm/I,EAAIzlC,OAAQ,KACtB,KAAKmpJ,GACH1lQ,GAAK2hB,EAAO7e,SACZ,MACF,KAAK2iQ,GACHzlQ,GAAK2hB,EAAO7e,SAAW,EAO3B,IALA/C,EAAIgP,KAAKwoB,MAAMx3B,GACfC,EAAI+O,KAAKwoB,MAAMv3B,GAGf2hB,EAAOtd,QACFrO,EAAI,EAAGA,EAAI0tB,IAAK1tB,EACnBohC,EAAOphC,GAAGu1D,KAAK5pC,OAAOtd,QAExB,IAAKrO,EAAI,EAAGA,EAAI0tB,IAAK1tB,GACnBszC,EAAIlS,EAAOphC,IACT+J,GAAK2B,EAAG1L,IAAM+J,EAChBupC,EAAEtpC,GAAK2B,EAAG3L,IAAMgK,EAChB2hB,EAAOksO,MAAMvkN,EAAEiiB,KAAK5pC,OAAOksO,MAAMvkN,EAAE3nB,OAAOvU,UAAU1L,EAAG1L,GAAI2L,EAAG3L,MAC1DqoI,GAAO6oI,EAAK7oI,MAAM/0F,GAExB,OAAO3nB,CACT,CACA,SAAS0oP,GAAcnD,EAAM1gQ,EAAOw7I,GAClC,IAOEjiJ,EACAC,EACAoX,EACAC,EACAklG,EACA0mH,EACAhrJ,EAbEqyL,EArPN,SAA0B9jQ,GAkBxB,IAjBA,IAAI+jQ,EAAmBC,EAAmBC,EAAmBC,EAAmBC,EAI9Ep/M,EACAtQ,EAJE7jB,EAAS5wB,EAAMy0C,MACjBv3B,EAAI0T,EAAOzhC,OACXK,EAAI,EAGFs0Q,EAAQ,CACVjG,MAAO,GACPuG,WAAY,GACZC,WAAY,GACZC,WAAY,GACZC,WAAY,GACZC,SAAU,KACVC,SAAU,MAILj1Q,EAAI0tB,IAAK1tB,EAGd,GADAilD,GADAsQ,EAAOn0B,EAAOphC,IACDilD,MACTsQ,EAAKypM,WAAazgL,GACpB,OAAQhpB,EAAK4J,MACX,KAAKwwM,GACL,KAAKI,GACL,KAAKH,GACH,MACF,KAAKI,IACFuE,EAAoBD,EAAMM,YAAYv1Q,KAAKc,MAAMo0Q,GAAmB,QAAmBtvN,IACxF,MACF,KAAKgrN,IACFuE,EAAoBF,EAAMO,YAAYx1Q,KAAKc,MAAMq0Q,GAAmB,QAAmBvvN,IACxF,MACF,KAAKkrN,IACFsE,EAAoBH,EAAMQ,YAAYz1Q,KAAKc,MAAMs0Q,GAAmB,QAAmBxvN,IACxF,MACF,KAAKmrN,IACFsE,EAAoBJ,EAAMS,YAAY11Q,KAAKc,MAAMu0Q,GAAmB,QAAmBzvN,IACxF,MACF,KAAKirN,GACHoE,EAAMU,SAAW/vN,EAAM,GACvB,MACF,KAAKorN,GACHiE,EAAMW,SAAWhwN,EAAM,GACvB,MACF,SACG0vN,EAAeL,EAAMjG,OAAOhvQ,KAAKc,MAAMw0Q,GAAc,QAAmB1vN,IAIjF,OAAOqvN,CACT,CAkMcY,CAAiB1kQ,GAC3B4wB,EAASkzO,EAAMjG,MACfzgQ,EAAOo+I,EAAIrgI,SAAWmlP,GAAQqE,GAAaC,GAC3Ch1Q,EAAM4rJ,EAAI/pE,OACV6xL,EAAQ9nH,EAAImwD,SAAW/6K,EAAOzhC,OAC9Bo0Q,EAAQD,GAAS,EAAI,EAAI/6P,KAAKisJ,KAAK5jI,EAAOzhC,OAASm0Q,GACnDphL,EAAQqhL,EAAQD,EAUdnoP,EAAS6nP,GAAWtC,EAAM9vO,EAAQ4qH,GAClCrgI,EAAO0zC,SAAS1zC,EAAO3qB,IAAI,EAAG,EAAG,EAAG,GAKpCszQ,EAAMM,aACR3nC,EAAO,GAAIjhF,EAAIqpH,WAAY,GAAK,MAChCtrQ,EAAIurQ,GAAcpE,EAAMoD,EAAMM,WAAYxzO,EAAQ0yO,EAAOC,GAAQ,GAAI3zQ,EAAK,aAAc,GAAK,EAAGwN,EAAM,KAAM,EAAGkmQ,EAAO,EAAG7mC,IAIvHqnC,EAAMQ,aACR7nC,EAAO,GAAIjhF,EAAIqpH,WAAYtE,GAAQ,MACnC/mQ,EAAIsrQ,GAAcpE,EAAMoD,EAAMQ,WAAY1zO,EAAQ0yO,EAAOA,GAAQ,GAAI1zQ,EAAK,gBAAiB,GAAK,EAAGwN,EAAM,KAAM,EAAG,EAAGkmQ,EAAO7mC,IAI1HqnC,EAAMO,aACR5nC,EAAO,GAAIjhF,EAAIupH,WAAY,GAAK,MAChCn0P,EAAKk0P,GAAcpE,EAAMoD,EAAMO,WAAYzzO,EAAQ0yO,EAAOC,EAAO,GAAI3zQ,EAAK,aAAc,GAAK,EAAGwN,EAAM,KAAMkmQ,EAAQ,EAAGA,EAAO,EAAG7mC,IAI/HqnC,EAAMS,aACR9nC,EAAO,GAAIjhF,EAAIupH,WAAYxE,GAAQ,MACnC1vP,EAAKi0P,GAAcpE,EAAMoD,EAAMS,WAAY3zO,EAAQ0yO,EAAOA,EAAO,GAAI1zQ,EAAK,gBAAiB,GAAK,EAAGwN,EAAM,KAAM8kF,EAAQohL,EAAO,EAAGA,EAAO7mC,IAItIqnC,EAAMU,WACRzuJ,EAAS,GAAIylC,EAAIwpH,YAAa,IAC9BvzL,EAAS,GAAI7hF,EAAK,YAClB6hF,EAASskC,IAAWmpJ,GAAMtuP,EAAK6gE,EAASl4E,EAAIk4E,EAC5CgrJ,EAAO,GAAIjhF,EAAIypH,UAAW,GAAK,IAC/BC,GAAYxE,EAAMoD,EAAMU,SAAU/yL,EAAQ,EAAGt2D,EAAQshN,IAInDqnC,EAAMW,WACR1uJ,EAAS,GAAIylC,EAAIwpH,YAAazE,IAC9B9uL,EAAS,GAAI7hF,EAAK,eAClB6hF,EAASskC,IAAWmpJ,GAAMruP,EAAK4gE,EAASj4E,EAAIi4E,EAC5CgrJ,EAAO,GAAIjhF,EAAIypH,UAAW1E,GAAQ,IAClC2E,GAAYxE,EAAMoD,EAAMW,SAAUhzL,EAAQ,EAAGt2D,EAAQshN,GAEzD,CACA,SAASkoC,GAAW5+P,EAAMooH,GACxB,MAAiB,OAAVA,EAAiBpoH,EAAKxM,GAAK,EAAc,OAAV40H,EAAiBpoH,EAAKvM,GAAK,EAAc,OAAV20H,GAAkBpoH,EAAKxM,GAAK,IAAMwM,EAAK1J,OAAS,GAAe,OAAV8xH,GAAkBpoH,EAAKvM,GAAK,IAAMuM,EAAKzJ,QAAU,QAAKyoB,CAClL,CACA,SAAS6/O,GAAU7+P,EAAMooH,GACvB,OAAOpoH,EAAKoV,OAAOgzG,EACrB,CACA,SAAS22I,GAAcpE,EAAMp4M,EAAS13B,EAAQ0yO,EAAOthC,EAAOvwJ,EAAQunJ,EAAKmsC,EAAK9X,EAAO+X,EAAIpwP,EAAOqwP,EAAQxvM,EAAM4mK,GAC5G,IAGEjtO,EACAgG,EACAR,EACAqP,EACAkN,EACAoC,EACAmvB,EACAvpC,EACAC,EAXE0jB,EAAI0T,EAAOzhC,OACbyJ,EAAO,EACPyxC,EAAO,EAYT,IAAKntB,EAAG,OAAOtkB,EAGf,IAAKpJ,EAAIwlB,EAAOxlB,EAAI0tB,EAAG1tB,GAAK61Q,EACtBz0O,EAAOphC,KAAIoJ,EAAOogO,EAAIpgO,EAAMy0P,EAAMz8N,EAAOphC,GAAI41Q,KAInD,IAAK98M,EAAQn5D,OAAQ,OAAOyJ,EAY5B,IATI0vD,EAAQn5D,OAAS6yO,IACnB0+B,EAAKnyH,KAAK,8BAAgCyzF,GAC1C15K,EAAUA,EAAQhzC,MAAM,EAAG0sN,IAI7BppO,GAAQ64E,EAGHj8E,EAAI,EAAG6O,EAAIikD,EAAQn5D,OAAQqG,EAAI6O,IAAK7O,EACvCkrQ,EAAK7oI,MAAMvvE,EAAQ9yD,IACnB8yD,EAAQ9yD,GAAGuvD,KAAK5pC,OAAOtd,QAIzB,IAAKrO,EAAIwlB,EAAOxf,EAAI,EAAG6O,EAAIikD,EAAQn5D,OAAQqG,EAAI6O,IAAK7O,EAAGhG,GAAK61Q,EAAQ,CAMlE,IAJA9zP,GADAoC,EAAI20C,EAAQ9yD,IACNuvD,KAAK5pC,OAINnmB,EAAIxF,EAAGwF,GAAK,GAAwB,OAAlB8tC,EAAIlS,EAAO57B,IAAaA,GAAK6gE,GAGhDsvM,GACF5rQ,EAAY,MAARkjO,EAAe35L,EAAEvpC,EAAIgP,KAAKwoB,MAAM+R,EAAE3nB,OAAOzK,GAAK+rN,EAAO35L,EAAE3nB,OAAO9e,SAClE7C,EAAIZ,IAEJW,EAAIX,EACJY,EAAY,MAARijO,EAAe35L,EAAEtpC,EAAI+O,KAAKwoB,MAAM+R,EAAE3nB,OAAOxK,GAAK8rN,EAAO35L,EAAE3nB,OAAO7e,WAEpEiV,EAAE81O,MAAM1zO,EAAEwH,OAAOvU,UAAUrN,GAAKoa,EAAEpa,GAAK,GAAIC,GAAKma,EAAEna,GAAK,KACvDma,EAAEpa,EAAIA,EACNoa,EAAEna,EAAIA,EACNknQ,EAAK7oI,MAAMlkH,GAGX02B,EAAO2uL,EAAI3uL,EAAM94B,EAAE6zP,GACrB,CACA,OAAO/6N,CACT,CACA,SAAS66N,GAAYxE,EAAM59N,EAAG2uC,EAAQ0zL,EAAKhqP,EAAQshN,GACjD,GAAK35L,EAAL,CACA49N,EAAK7oI,MAAM/0F,GAGX,IAAIvpC,EAAIk4E,EACNj4E,EAAIi4E,EACN0zL,EAAM5rQ,EAAIgP,KAAKwoB,MAAM5V,EAAOzK,GAAK+rN,EAAOthN,EAAO9e,SAAW7C,EAAI+O,KAAKwoB,MAAM5V,EAAOxK,GAAK8rN,EAAOthN,EAAO7e,UAGnGwmC,EAAE3nB,OAAOvU,UAAUrN,GAAKupC,EAAEvpC,GAAK,GAAIC,GAAKspC,EAAEtpC,GAAK,IAC/CspC,EAAEiiB,KAAK5pC,OAAOtd,QAAQwpP,MAAMvkN,EAAE3nB,QAC9B2nB,EAAEvpC,EAAIA,EACNupC,EAAEtpC,EAAIA,EAGNknQ,EAAK7oI,MAAM/0F,EAfG,CAgBhB,CAkBA,SAASwiO,GAAaxiO,EAAG0qN,EAAQ1yJ,EAAQ24I,EAAIC,EAAI13N,EAAGrI,GAClD,IAAIqhB,EAhBN,SAAgB8lE,EAAQ0yJ,GACtB,IAAIhyG,EAAM1gD,EAAO0yJ,IAAW,CAAC,EAC7B,OAAO,SAAUr+N,EAAK9a,GACpB,OAAmB,MAAZmnI,EAAIrsH,GAAeqsH,EAAIrsH,GAAsB,MAAf2rE,EAAO3rE,GAAe2rE,EAAO3rE,GAAO9a,CAC3E,CACF,CAWU,CAAOymF,EAAQ0yJ,GACrB/7K,EATJ,SAAiB8zL,EAAS90Q,GACxB,IAAIgY,GAAM,IAIV,OAHA88P,EAAQ7uQ,SAAQ,SAAUqP,GACL,MAAfA,EAAK0rE,SAAgBhpE,EAAMF,KAAKE,IAAIA,EAAK1C,EAAK0rE,QACpD,IACOhpE,GAAM,IAAYA,EAAMhY,CACjC,CAGa+0Q,CAAQ1iO,EAAG9N,EAAE,SAAU,IAChC+gF,EAAS/gF,EAAE,SAAUgqO,IACrByG,EAAO1vJ,IAAWmpJ,GAAM,EAAInpJ,IAAWkpJ,GAAS,GAAM,EACpDvyP,EAAI,CACNi2E,MAAO09K,GACPllP,OAAQ6Z,EAAE,SAAUsrO,IACpB30D,QAA4B,aAAnB32K,EAAE,aAA8B,EAAI8N,EAAE3zC,OAC/Cu5E,QAAS1zC,EAAE,SAAU,GACrB7I,OAAQ6I,EAAE,UACViuO,SAAS,GAEX,OAAQzV,GACN,KAAKiR,GACH/xP,EAAEqpG,OAAS,CACTx8G,EAAGgP,KAAKwX,MAAM0zN,EAAG/iO,IAAM+gE,EACvBq+D,OAAQovH,GACR1lQ,EAAGisQ,GAAQ9xP,GAAK8/N,EAAGn3O,SAAW,EAAIm3O,EAAG9iO,IACrC+f,IAAKqlF,GAEP,MACF,KAAK2oJ,GACHhyP,EAAEqpG,OAAS,CACTx8G,EAAGgP,KAAKisJ,KAAKi/E,EAAG7iO,IAAM6gE,EACtBj4E,EAAGisQ,GAAQ9xP,GAAK8/N,EAAGn3O,SAAW,EAAIm3O,EAAG9iO,IACrC+f,IAAKqlF,GAEP,MACF,KAAKyoJ,GACH9xP,EAAEqpG,OAAS,CACTv8G,EAAG+O,KAAKwX,MAAM2zN,EAAG/iO,IAAM8gE,EACvB/gD,IAAKwuO,GACL3lQ,EAAGksQ,GAAQzpP,GAAK03N,EAAGr3O,QAAU,EAAIq3O,EAAGhjO,IACpCo/H,OAAQ/5B,GAEV,MACF,KAAK4oJ,GACHjyP,EAAEqpG,OAAS,CACTv8G,EAAG+O,KAAKisJ,KAAKk/E,EAAG7iO,IAAM4gE,EACtBl4E,EAAGksQ,GAAQzpP,GAAK03N,EAAGr3O,QAAU,EAAIq3O,EAAGhjO,IACpCo/H,OAAQ/5B,GAEV,MACF,KAAK6oJ,GACHlyP,EAAEqpG,OAAS,CACTx8G,EAAGk4E,EACHj4E,EAAGi4E,GAEL,MACF,KAAKotL,GACHnyP,EAAEqpG,OAAS,CACTx8G,EAAGyiB,EAAIy1D,EACPj4E,EAAGi4E,EACHq+D,OAAQovH,IAEV,MACF,KAAKJ,GACHpyP,EAAEqpG,OAAS,CACTx8G,EAAGk4E,EACHj4E,EAAGma,EAAI89D,EACP/gD,IAAKwuO,IAEP,MACF,KAAKH,GACHryP,EAAEqpG,OAAS,CACTx8G,EAAGyiB,EAAIy1D,EACPj4E,EAAGma,EAAI89D,EACPq+D,OAAQovH,GACRxuO,IAAKwuO,IAIX,OAAOxyP,CACT,CACA,SAASg5P,GAAahF,EAAMiF,GAC1B,IAME3pP,EACArI,EAPE5N,EAAO4/P,EAAOlxN,MAAM,GACtBgyK,EAAQ1gN,EAAK0gN,MACb+mC,EAASznP,EAAKynP,OACdryO,EAASpV,EAAKoV,OACd5hB,EAAIwM,EAAKxM,EACTC,EAAIuM,EAAKvM,EA8BX,OAzBAuM,EAAK6/P,QAAU7/P,EAAK6/P,QAAQ/nQ,QAAQwpP,MAAMlsO,GAAUpV,EAAK6/P,QAAUzqP,EAAOtW,QAC1EsW,EAAOtd,QAqCT,SAA2B6iQ,EAAM36P,EAAMi+C,GACrC,IAAI4mJ,EAAM7kM,EAAK2iE,QACbniD,EAAKqkL,EAAM5mJ,EAAMzqD,EACjBitB,EAAKokL,EAAM5mJ,EAAMxqD,EACnB,GAAKuM,EAAK0gN,MAAMpmK,MAET,CACL,IAAIA,EAAQt6C,EAAK0uC,MAAM,GAAGA,MAAM,GAC9BshE,EAAS11D,EAAM01D,OACf8vJ,EAAO9/P,EAAK08P,cAAgB,EAC5BqD,EAAKl7D,EAAMvqJ,EAAM9mD,EACjBwsQ,EAAKn7D,EAAMvqJ,EAAM7mD,EACnB,OAAQ6mD,EAAMmtM,QACZ,KAAKiR,GACHl4O,GAAMhe,KAAKisJ,KAAKn0G,EAAMllC,OAAO9e,SAAWwpQ,EACxC,MACF,KAAKnH,GACL,KAAKC,GACH,MACF,QACEn4O,GAAM65B,EAAMllC,OAAO7e,SAAWupQ,EAGlC,QADIt/O,GAAMC,IAAI,GAAUk6O,EAAM18M,EAAOz9B,EAAIC,GACjC65B,EAAMmtM,QACZ,KAAKiR,GACHsH,GAAMC,GAAkBjgQ,EAAMi+C,EAAO3D,EAAO01D,EAAQ,EAAG,GACvD,MACF,KAAK2oJ,GACHoH,GAAME,GAAkBjgQ,EAAMi+C,EAAO3D,EAAO6+M,GAAK,EAAG,GAAK2G,EACzDE,GAAMC,GAAkBjgQ,EAAMi+C,EAAO3D,EAAO01D,EAAQ,EAAG,GACvD,MACF,KAAK4oJ,GACHmH,GAAME,GAAkBjgQ,EAAMi+C,EAAO3D,EAAO01D,EAAQ,EAAG,GACvDgwJ,GAAMC,GAAkBjgQ,EAAMi+C,EAAO3D,EAAO6+M,IAAM,EAAG,EAAG,GAAK2G,EAC7D,MACF,QACEC,GAAME,GAAkBjgQ,EAAMi+C,EAAO3D,EAAO01D,EAAQ,EAAG,IAEvD+vJ,GAAMC,IAAI,GAAUrF,EAAMrgN,EAAOylN,EAAIC,IAGpCD,EAAKv9P,KAAKwoB,MAAMsvB,EAAMllC,OAAOzK,GAAKk6L,IAAQ,IAC7C,GAAU81D,EAAM18M,GAAQ8hN,EAAI,GAC5B,GAAUpF,EAAMrgN,GAAQylN,EAAI,GAEhC,MAxCMv/O,GAAMC,IAAI,GAAUk6O,EAAM18M,EAAOz9B,EAAIC,EAyC7C,CAhFEy/O,CAAkBvF,EAAM36P,EAAMA,EAAK0uC,MAAM,GAAGA,MAAM,IAGlDt5B,EAoBF,SAAsBpV,EAAMwL,GAS1B,OAPAxL,EAAK0uC,MAAM/9C,SAAQ,SAAUs+B,GAC3B,OAAOzjB,EAAE81O,MAAMryN,EAAE7Z,OACnB,IAGA5J,EAAEb,GAAK3K,EAAK2iE,QACZn3D,EAAEZ,GAAK5K,EAAK2iE,QACLn3D,CACT,CA9BW20P,CAAangQ,EAAMoV,GAC5Ba,EAAI,EAAIjW,EAAK2iE,QACb/0D,EAAI,EAAI5N,EAAK2iE,QACRvtD,EAAO0zC,UACV7yC,EAAIzT,KAAKisJ,KAAKr5I,EAAO9e,QAAU2f,GAC/BrI,EAAIpL,KAAKisJ,KAAKr5I,EAAO7e,SAAWqX,IAE9B8yM,EAAMxvN,OAAS8oQ,IAwFrB,SAA2B31M,GAEzB,IAAI+7M,EAAS/7M,EAAQnqC,QAAO,SAAUjE,EAAG8mB,GAEvC,OADA9mB,EAAE8mB,EAAEgtG,QAAUvnI,KAAKE,IAAIq6B,EAAE3nB,OAAOvK,GAAKkyB,EAAEvpC,EAAGyiB,EAAE8mB,EAAEgtG,SAAW,GAClD9zH,CACT,GAAG,CAAC,GAGJouC,EAAQ1zD,SAAQ,SAAUosC,GACxBA,EAAEzmC,MAAQ8pQ,EAAOrjO,EAAEgtG,QACnBhtG,EAAExmC,OAASwmC,EAAE3nB,OAAOtK,GAAKiyB,EAAEtpC,CAC7B,GACF,CAnGI4sQ,CAAkBrgQ,EAAK0uC,MAAM,GAAGA,MAAM,GAAGA,MAAM,GAAGA,OAEhD+4M,IAAW,KACbznP,EAAKxM,EAAIA,EAAI,EACbwM,EAAKvM,EAAIA,EAAI,GAEfuM,EAAK1J,MAAQ2f,EACbjW,EAAKzJ,OAASqX,EACdg0O,GAAYxsO,EAAO3qB,IAAI+I,EAAGC,EAAGD,EAAIyiB,EAAGxiB,EAAIma,GAAI5N,GAC5CA,EAAKg/C,KAAK5pC,OAAOtd,QAAQwpP,MAAMlsO,GACxBpV,CACT,CA2DA,SAASigQ,GAAkBjgQ,EAAMi+C,EAAO3D,EAAO01D,EAAQv8G,EAAGm3F,EAAI01K,GAC5D,IAAIhM,EAA2B,WAApBt0P,EAAK0gN,MAAMxvN,KACpBqvQ,EAAQjmN,EAAMomK,MAAM6/C,MAEpBl6P,IADIiuP,IAAS1pK,GAAO21K,GAAWD,EAAyBriN,EAAjBA,EAAMvP,MAAM,IAC7Ct5B,OAAO3hB,EAAI,KAAO,MAAQuM,EAAK2iE,QACrC50D,EAAIwyP,GAAS31K,EAAKvkF,EAAI,EACtB7L,EAAI+lQ,GAAS31K,EAAK,EAAIvkF,EACtBsH,EAAIla,GAAK,EAAI,EAAIg3P,GAAgBnwM,GACnC,OAAO93C,KAAKwoB,MAAMglF,IAAWipJ,GAAQlrP,EAAIiiG,IAAWmpJ,GAAM3+P,EAAImT,EAAI,IAAOtH,EAAIsH,GAC/E,CACA,SAAS,GAAUgtP,EAAM36P,EAAM7K,EAAIC,GACjC4K,EAAKxM,GAAK2B,EACV6K,EAAKvM,GAAK2B,EACV4K,EAAKoV,OAAOvU,UAAU1L,EAAIC,GAC1B4K,EAAKg/C,KAAK5pC,OAAOvU,UAAU1L,EAAIC,GAC/BulQ,EAAK7oI,MAAM9xH,EACb,CAuGA,SAASwgQ,GAAW32P,GAClB0gN,GAAUpgO,KAAK5B,KAAM,KAAMshB,EAC7B,CACA,GAAS22P,GAAYj2C,GAAW,CAC9BluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAAIu3C,EAAOv3C,EAAM6C,SAKjB,OAJAh3L,EAAE+vB,KAAKtQ,MAAM/9C,SAAQ,SAAUsJ,GACzBg1B,EAAEoiF,QAAQysJ,GAAcnD,EAAM1gQ,EAAOg1B,EAAEoiF,QAcjD,SAAqBspJ,EAAM1gQ,EAAOg1B,GAChC,IAOEqrB,EACA0E,EACAyoM,EAEAh+P,EACA0tB,EAZEu3B,EAAQz0C,EAAMy0C,MAChBp4C,EAAQkM,KAAKE,IAAI,EAAGzI,EAAM3D,OAAS,GACnCC,EAASiM,KAAKE,IAAI,EAAGzI,EAAM1D,QAAU,GACrCg7P,GAAa,IAAIlQ,IAAS52P,IAAI,EAAG,EAAG6L,EAAOC,GAC3CkqQ,EAAUlP,EAAWzyP,QACrB4hQ,EAAUnP,EAAWzyP,QACrB0gQ,EAAU,GASZ,IAAK/1Q,EAAI,EAAG0tB,EAAIu3B,EAAMtlD,OAAQK,EAAI0tB,IAAK1tB,EAErC,QADAu1D,EAAOtQ,EAAMjlD,IACAm/D,MACX,KAAKwwM,IACC8C,GAAQl9M,GAAQyhN,EAAUC,GAC5Bpf,MAAM6a,GAAWxB,EAAM37M,EAAM1oD,EAAOC,IACtC,MACF,KAAK8iQ,GACH/+M,EAAQ0E,EACR,MACF,KAAKw6M,GACHgG,EAAQ12Q,KAAK62Q,GAAahF,EAAM37M,IAChC,MACF,KAAKs6M,GACL,KAAKC,GACL,KAAKE,GACL,KAAKC,GACL,KAAKC,GACL,KAAKC,GACL,KAAKC,GACL,KAAKC,GACH2G,EAAQnf,MAAMtiM,EAAK5pC,QACnBsrP,EAAQpf,MAAMtiM,EAAK5pC,QACnB,MACF,QACEm8O,EAAWjQ,MAAMtiM,EAAK5pC,QAK5B,GAAIoqP,EAAQp2Q,OAAQ,CAElB,IAAIykB,EAAI,CAAC,EAOT,IAAK,IAAI8yP,KANTnB,EAAQ7uQ,SAAQ,SAAUqP,IACxBynP,EAASznP,EAAKynP,QAAUkR,MACT,KAAO9qP,EAAE45O,KAAY55O,EAAE45O,GAAU,KAAK3+P,KAAKkX,EAC5D,IAGoB6N,EAAG,CACrB,IAAIkvB,EAAIlvB,EAAE8yP,GACV1D,GAAWtC,EAAM59N,EAAGwiO,GAAaxiO,EAAG4jO,EAAS1xO,EAAEuwO,QAASiB,EAASC,EAASpqQ,EAAOC,GACnF,CAGAipQ,EAAQ7uQ,SAAQ,SAAUqP,GACxB,IAAIwL,EAAIxL,EAAKoV,OAOb,GANK5J,EAAE22O,OAAOniP,EAAK6/P,WACjB7/P,EAAKoV,OAASpV,EAAK6/P,QACnBlF,EAAK7oI,MAAM9xH,GACXA,EAAKoV,OAAS5J,EACdmvP,EAAK7oI,MAAM9xH,KAETivB,EAAE2xO,UAAa3xO,EAAE2xO,SAAS1vQ,OAAS+oQ,IAAOhrO,EAAE2xO,SAAS1vQ,OAASgpQ,IAAQjrO,EAAE2xO,SAAS1vQ,OAASipQ,GAc5F5I,EAAWjQ,MAAM91O,QAVjB,OAAQxL,EAAKynP,QACX,KAAKiR,GACL,KAAKC,GACHpH,EAAWx3P,IAAIyR,EAAEb,GAAI,GAAG5Q,IAAIyR,EAAEX,GAAI,GAClC,MACF,KAAK4tP,GACL,KAAKG,GACHrH,EAAWx3P,IAAI,EAAGyR,EAAEZ,IAAI7Q,IAAI,EAAGyR,EAAEV,IAKzC,GACF,CAGAymP,EAAWjQ,MAAMmf,GAASnf,MAAMof,GAG5BpmN,GACFi3M,EAAWjQ,MA3Mf,SAAqBqZ,EAAM37M,EAAM1oD,EAAOC,EAAQg7P,GAC9C,IAcEruI,EAdEjpH,EAAQ+kD,EAAKtQ,MAAM,GACrB0wL,EAAQnlO,EAAMmlO,MACdqoB,EAASxtP,EAAMwtP,OACfz3I,EAAS/1G,EAAM+1G,OACftkC,EAASzxE,EAAMyxE,OACf/I,EAAU1oE,EAAM0oE,QAChBroB,EAAQrgD,EAAMy0C,MAAM,GAAGA,MAAM,GAC7BmyN,EAAW5mQ,EAAMy0C,MAAM,IAAMz0C,EAAMy0C,MAAM,GAAGA,MAAM,GAClDt3B,EAAMqwO,IAAWiR,IAAQjR,IAAWkR,GAAQpiQ,EAASD,EACrD2Y,EAAQ,EACRzb,EAAI,EACJC,EAAI,EACJq9N,EAAK,EACLC,EAAK,EAQP,GANIqO,IAAUp3J,GACZy/K,IAAWiR,IAAQzpP,EAAQsiP,EAAWzmP,GAAIsM,EAAMm6O,EAAW3mP,IAAM68O,IAAWkR,IAAS1pP,EAAQsiP,EAAW3mP,GAAIwM,EAAMm6O,EAAWzmP,KAAOmE,EAAQsiP,EAAW5mP,GAAIyM,EAAMm6O,EAAW1mP,IACnK48O,IAAWiR,KACpBzpP,EAAQ1Y,EAAQ6gB,EAAM,GAExB8rG,EAAMlT,IAAWipJ,GAAQhqP,EAAQ+gG,IAAWmpJ,GAAM/hP,GAAOnI,EAAQmI,GAAO,EACpEypP,GAAYA,EAASz3P,KAAM,CAE7B,OAAQq+O,GACN,KAAKgR,GACL,KAAKG,GACH7nC,EAAKz2K,EAAMllC,OAAO7e,SAAWosE,EAC7B,MACF,KAAK+1L,GACH5nC,EAAKx2K,EAAMllC,OAAO9e,QAAUqsE,EAC5B,MACF,KAAKg2L,GACH7nC,GAAMx2K,EAAMllC,OAAO9e,QAAUqsE,EAGjC,GAAW7qE,QAAQwpP,MAAMuf,EAASzrP,QAClC,GAAWvU,UAAUiwN,GAAM+vC,EAASrtQ,GAAK,GAAIu9N,GAAM8vC,EAASptQ,GAAK,IAC7D,GAAIotQ,EAAU,IAAK/vC,GAAM,GAAI+vC,EAAU,IAAK9vC,KAC9C4pC,EAAK7oI,MAAM+uI,GACXA,EAASzrP,OAAOtd,QAAQwpP,MAAM,IAC9Buf,EAAS7hN,KAAK5pC,OAAOtd,QAAQwpP,MAAM,IACnCqZ,EAAK7oI,MAAM+uI,IAEb,GAAW/oQ,QAAQwpP,MAAMuf,EAASzrP,OACpC,MACE,GAAWtd,QAKb,OAHA,GAAWwpP,MAAMhnM,EAAMllC,QAGfqyO,GACN,KAAKgR,GACHjlQ,EAAI0vH,EACJzvH,EAAI89P,EAAW3mP,GAAK,GAAWrU,SAAWm1E,EAC1C,MACF,KAAKgtL,GACHllQ,EAAI+9P,EAAW5mP,GAAK,GAAWrU,QAAUo1E,EACzCj4E,EAAIyvH,EACJ,MACF,KAAKy1I,GACHnlQ,EAAI+9P,EAAW1mP,GAAK,GAAWvU,QAAUo1E,EACzCj4E,EAAIyvH,EACJ,MACF,KAAK01I,GACHplQ,EAAI0vH,EACJzvH,EAAI89P,EAAWzmP,GAAK4gE,EACpB,MACF,QACEl4E,EAAIyG,EAAMzG,EACVC,EAAIwG,EAAMxG,EASd,OAPI,GAAIwG,EAAO,IAAKzG,GAAK,GAAIyG,EAAO,IAAKxG,KACvC,GAAWoN,UAAUrN,EAAGC,GACxBknQ,EAAK7oI,MAAM73H,GACXA,EAAMmb,OAAOtd,QAAQwpP,MAAM,IAC3BtiM,EAAK5pC,OAAOtd,QAAQwpP,MAAM,IAC1BqZ,EAAK7oI,MAAM73H,IAENA,EAAMmb,MACf,CA2HqB0rP,CAAYnG,EAAMrgN,EAAOhkD,EAAOC,EAAQg7P,IAIvDt3P,EAAMuD,MACR+zP,EAAW9mQ,IAAI,EAAG,EAAGwP,EAAM3D,OAAS,EAAG2D,EAAM1D,QAAU,IAM3D,SAAwBokQ,EAAM1gQ,EAAOs3P,EAAYtiO,GAC/C,IAAI4tO,EAAO5tO,EAAE2xO,UAAY,CAAC,EACxB1vQ,EAAO2rQ,EAAK3rQ,KACd,GAAIypQ,EAAKoG,UAAY,IAAM7vQ,EAAM,OACjC,IAAI8vQ,EAAYrG,EAAKnoM,OACnByuM,EAAatG,EAAKloM,QAClBn8D,EAAQkM,KAAKE,IAAI,EAAGzI,EAAM3D,OAAS,GACnCiB,EAAOiL,KAAKE,IAAI,EAAGF,KAAKisJ,MAAM8iG,EAAW5mP,KACzCpU,EAASiM,KAAKE,IAAI,EAAGzI,EAAM1D,QAAU,GACrCiB,EAAMgL,KAAKE,IAAI,EAAGF,KAAKisJ,MAAM8iG,EAAW3mP,KACtC1P,EAAQsH,KAAKE,IAAI,EAAGF,KAAKisJ,KAAK8iG,EAAW1mP,GAAKvU,IAChD01E,EAASxpE,KAAKE,IAAI,EAAGF,KAAKisJ,KAAK8iG,EAAWzmP,GAAKvU,IACjD,GAAIsmQ,EAAK/kM,WAAaiiM,GAAS,CAC7B,IAAIp3L,EAAUg4L,EAAKh4L,UACnBq+L,GAAar+L,EAAQprE,KAAOorE,EAAQznE,MACpC+lQ,GAAct+L,EAAQnrE,IAAMmrE,EAAQqJ,MACtC,CACI96E,IAAS,IACXqG,EAAO,EACPC,EAAM,EACNlB,EAAQ0qQ,EACRzqQ,EAAS0qQ,GACA/vQ,IAAS+oQ,IAClB3jQ,EAAQkM,KAAKE,IAAI,EAAGs+P,EAAYzpQ,EAAO2D,GACvC3E,EAASiM,KAAKE,IAAI,EAAGu+P,EAAazpQ,EAAMw0E,IAC/B96E,IAASgpQ,IAClB5jQ,EAAQkM,KAAKE,IAAI,EAAGs+P,EAAYzpQ,EAAO2D,GACvC+lQ,EAAa1qQ,EAASiB,EAAMw0E,GACnB96E,IAASipQ,IAClB6G,EAAY1qQ,EAAQiB,EAAO2D,EAC3B3E,EAASiM,KAAKE,IAAI,EAAGu+P,EAAazpQ,EAAMw0E,IAC/B96E,IAASkpQ,KAClB4G,EAAY1qQ,EAAQiB,EAAO2D,EAC3B+lQ,EAAa1qQ,EAASiB,EAAMw0E,GAE9B2uL,EAAKuG,YAAYF,EAAWC,EAAY3qQ,EAAOC,EAAQ,CAACgB,EAAMC,GAAMqlQ,EAAKxwF,OAC3E,CAtCE80F,CAAexG,EAAM1gQ,EAAOs3P,EAAYtiO,EAC1C,CApHMmyO,CAAYzG,EAAM1gQ,EAAOg1B,EAC3B,IAIJ,SAAsBh1B,GAMpB,OAAOA,GAA6B,iBAApBA,EAAM+kD,KAAK4J,IAC7B,CAVWy4M,CAAapyO,EAAE+vB,KAAK/kD,OAASmpN,EAAMD,SAAWC,CACvD,aCjqCF,SAAS,GAA2Bz1M,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,GAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,GAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,GAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CACnK,SAAS,GAAI14L,EAAQwiM,GAClC,IAAI52M,EAAM,EACV,QAAgBqK,IAAZusM,EAAuB,CACzB,IACEzE,EADEC,EAAY,GAA2Bh+L,GAE3C,IACE,IAAKg+L,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIn2C,EAAQo8N,EAAMp8N,OACdA,GAASA,KACXiqB,GAAOjqB,EAEX,CACF,CAAE,MAAOqlC,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACF,KAAO,CACL,IAEE4/N,EAFEj7N,GAAS,EACTk7N,EAAa,GAA2B1iM,GAE5C,IACE,IAAK0iM,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,CACrD,IAAI6qL,EAASF,EAAO9gO,OAChBghO,GAAUH,EAAQG,IAAUn7N,EAAOw4B,MACrCpU,GAAO+2M,EAEX,CACF,CAAE,MAAO37L,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACF,CACA,OAAO+oB,CACT,CCfA,SAAS2sP,GAAUz3P,GACjB0gN,GAAUpgO,KAAK5B,KAAM,KAAMshB,EAC7B,CA+CA,SAAS03P,GAAS13P,GAChB0gN,GAAUpgO,KAAK5B,KAAM,KAAMshB,EAC7B,CACA,SAAS23P,KACP,OAAO,GAAO,CAAC,EACjB,CAqFA,SAASC,GAAO53P,GACd0gN,GAAUpgO,KAAK5B,KAAM,KAAMshB,EAC7B,CAqFA,SAAS63P,GAAc73P,GACrB0gN,GAAUpgO,KAAK5B,KAAM,GAAIshB,EAC3B,CAjOA,GAASy3P,GAAW/2C,GAAW,CAC7BluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,GAAI76N,KAAKmC,QAAUukC,EAAE00L,WACnB,OAAOP,EAAM4B,gBAEf,IAAI56J,EAASg5J,EAAM6C,SAAS77J,SAC1B3+C,EAAM23M,EAAM0F,KAAK1F,EAAMwF,UAAYxF,EAAMyF,WACzC9e,EAAQxhN,KAAKmC,MACb2W,EAAQ4tB,EAAE5tB,MAEVgY,EAAQ0/N,GAAU13O,EADC,MAAX4tB,EAAE5V,MAAgB4V,EAAElG,OAASkG,EAAElG,OAAO3/B,OAAS,GAAK6lC,EAAE5V,MAC9B4V,EAAEy9L,SAClCnwL,EAAStN,EAAEsN,QAAU,GAAW6tB,EAAQ/oD,EAAOgY,EAAO4V,EAAEo7K,gBAAiBp7K,EAAE68K,aAAc78K,EAAElG,QAC3FA,EAASkG,EAAElG,OAASkwN,GAAW53O,EAAO4tB,EAAElG,OAAQ1P,GAAS8/N,GAAW93O,EAAOgY,GAuB7E,OAtBI0wL,IAAOt+L,EAAIi3M,IAAM3Y,GACrBA,EAAQhhL,EAAOxP,KAAI,SAAU7uB,EAAOjB,GAClC,OAAO,GAAO,CACZ8G,MAAO9G,GAAKs/B,EAAO3/B,OAAS,GAAK,GACjCsB,MAAOA,EACPyqD,MAAO5Y,EAAO7xC,IAElB,IACIukC,EAAEstE,OAASwtG,EAAM3gN,QAGnB2gN,EAAMjhN,KAAK,GAAO,CAChByH,OAAQ,EACRgsG,MAAO,CACL7xG,MAAOq/M,EAAM,GAAGr/M,OAElByqD,MAAO,MAGX1pC,EAAImO,OAASmwL,EACbt+L,EAAI1R,IAAMgwM,EACVxhN,KAAKmC,MAAQq/M,EACNt+L,CACT,IAyBF,GAAS81P,GAAUh3C,GAAW,CAC5BluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAAIxyM,EAAKwyM,EAAM6C,SACbx6M,EAAM23M,EAAM0F,KAAK1F,EAAMwF,UAAYxF,EAAMyF,WACzC7oN,EAAOivB,EAAEjvB,MAAQwhQ,GACjBp4O,EAAM6F,EAAE7F,KAAO84L,GACf3oM,EAAMhxB,KAAKmC,MAqDb,OAjDI,GAAQ+gB,EAAIy3M,UACdz3M,EAAIy3M,OAAS,MAEX3pM,IAAQ0V,EAAE00L,SAAS,QAAUP,EAAMO,SAASv6L,KAC9C,GAAM,8DAEH7P,IACH6pM,EAAQA,EAAM4F,SACdzgO,KAAKmC,MAAQ6uB,EA3BnB,SAAgB6P,GACd,IAAI7P,EAAMkqL,KAAU51M,MAAK,SAAUvB,GACjC,OAAOA,EAAEqjQ,IACX,IAIA,OAHAp2O,EAAImhO,OAAS,SAAUpuP,GACrB,OAAOitB,EAAIhvB,IAAI6+B,EAAI98B,GACrB,EACOitB,CACT,CAmByBooP,CAAOv4O,IAE5Bg6L,EAAMsD,MAAMtD,EAAM+D,KAAK,SAAU76N,GAC/B,IAAI2C,EAAIm6B,EAAI98B,GACRkH,EAAI+lB,EAAIhvB,IAAI0E,GACZuE,EACEA,EAAEm8P,MACJp2O,EAAIuvC,QACJr9C,EAAI1R,IAAIjR,KAAK0K,IAEbiY,EAAIk3M,IAAI75N,KAAK0K,IAGfA,EAAIwM,EAAK1T,GACTitB,EAAI9uB,IAAIwE,EAAGuE,GACXiY,EAAI1R,IAAIjR,KAAK0K,IAEfA,EAAEktN,MAAQp0N,EACVkH,EAAEm8P,MAAO,CACX,IACAvsC,EAAMsD,MAAMtD,EAAMiE,KAAK,SAAU/6N,GAC/B,IAAI2C,EAAIm6B,EAAI98B,GACVkH,EAAI+lB,EAAIhvB,IAAI0E,GACVuE,IACFA,EAAEktN,MAAQp0N,EACVmf,EAAIk3M,IAAI75N,KAAK0K,GAEjB,IACA4vN,EAAMsD,MAAMtD,EAAMgE,KAAK,SAAU96N,GAC/B,IAAI2C,EAAIm6B,EAAI98B,GACVkH,EAAI+lB,EAAIhvB,IAAI0E,GACV3C,IAAMkH,EAAEktN,OAAUltN,EAAEm8P,OACtBlkP,EAAIi3M,IAAI55N,KAAK0K,GACbA,EAAEm8P,MAAO,IACPp2O,EAAIuvC,MAEV,IACIs6J,EAAM8D,QAAQ9D,EAAMoF,UAAU/8M,EAAI83M,SAAS,UAC3CH,EAAMxf,SAAW30K,EAAE20K,OAASrqL,EAAIuvC,MAAQl4C,EAAG65M,iBAC7C75M,EAAG04M,SAAS/vM,EAAIqqL,OAEXn4L,CACT,IAkBF,GAASg2P,GAAQl3C,GAAW,CAC1BluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAAI33M,EAAM23M,EAAM0F,KAAK1F,EAAMmF,SACzBq5C,EAAO3yO,EAAE0zL,MAAO,EAChBk/C,EAAW5yO,EAAE4yO,SACb3+C,EAASE,EAAMF,OAKjB,GAAI,GAAQA,GAAS,CACnB,IAAIz3M,EAAIy7M,YAAahE,EAAOnyF,OAAM,SAAUtkI,GAC1C,OAAOo1Q,EAASp1Q,EAClB,IAIE,OAAO22N,EAAM4B,gBAHb9B,EAASA,EAAO,GAChBz3M,EAAIy3M,OAAS,IAIjB,CAGA,IAAI4+C,EAAqB,UAAX5+C,EACZn1N,EAAS8zQ,EAAS9zQ,QAAUsyM,GAC5B0hE,EAAQF,EAASE,OAAS1hE,GAC1BsvD,EAAOkS,EAASlS,MAAQtvD,GACxB51M,GAAOy4N,IAAW4+C,EAAUD,EAAS3+C,GAAUn1N,IAAWsyM,GAqB5D,GApBI+iB,EAAM8D,QAAQ9D,EAAM+D,OACtB/D,EAAMsD,MAAMtD,EAAM+D,KAAK,SAAU76N,GAC/By1Q,EAAMz1Q,EAAG2iC,GACTlhC,EAAOzB,EAAG2iC,EACZ,IACAxjB,EAAI83M,SAASw+C,EAAM98N,QACnBx5B,EAAI83M,SAASx1N,EAAOk3C,QAChBx6C,IAAQ41M,IAAS51M,IAAQsD,IAC3Bq1N,EAAMsD,MAAMtD,EAAM+D,KAAK,SAAU76N,GAC/B7B,EAAI6B,EAAG2iC,EACT,IACAxjB,EAAI83M,SAAS94N,EAAIw6C,UAGjBm+K,EAAM8D,QAAQ9D,EAAMgE,MAAQuoC,IAAStvD,KACvC+iB,EAAMsD,MAAMtD,EAAMgE,KAAK,SAAU96N,GAC/BqjQ,EAAKrjQ,EAAG2iC,EACV,IACAxjB,EAAI83M,SAASosC,EAAK1qN,SAEhB68N,GAAWr3Q,IAAQ41M,GAAO,CAC5B,IAAI+jB,EAAOhB,EAAMiE,KAAOp4L,EAAE00L,WAAaP,EAAMsF,OAAS,GAClDo5C,GACF1+C,EAAMsD,MAAMtC,GAAM,SAAU93N,GAC1B,IAAIq2N,EAAMo/C,EAAMz1Q,EAAG2iC,IAAM2yO,GACrBn3Q,EAAI6B,EAAG2iC,IAAM0zL,IAAKl3M,EAAIk3M,IAAI75N,KAAKwD,EACrC,IACImf,EAAIk3M,IAAIv5N,QAAQqiB,EAAI83M,SAASw+C,EAAM98N,SAEvCm+K,EAAMsD,MAAMtC,GAAM,SAAU93N,IACtB7B,EAAI6B,EAAG2iC,IAAM2yO,IAAMn2P,EAAIk3M,IAAI75N,KAAKwD,EACtC,IAEEmf,EAAIk3M,IAAIv5N,QAAQqiB,EAAI83M,SAAS94N,EAAIw6C,OACvC,CACA,OAAOx5B,EAAIy7M,UAAYz7M,EAAM23M,EAAM4B,eACrC,IAwBF,GAAS08C,GAAen3C,GAAW,CACjCluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,GAAkB,MAAd76N,KAAKmC,QAAkBukC,EAAE00L,WAC3B,OAAOP,EAAM4B,gBAEf,IAUEliL,EACAk/N,EACAn1O,EACA6+C,EACAmlG,EAdEzmH,EAASg5J,EAAM6C,SAAS77J,SAC1B3+C,EAAM23M,EAAM0F,KAAK1F,EAAMwF,UAAYxF,EAAMyF,WACzCn6K,EAAQnmD,KAAKmC,MACbwG,EAAO+9B,EAAE/9B,MAAQ0nP,GACjBv3O,EAAQ4tB,EAAE5tB,MACV46N,GAAShtM,EAAEgtM,MACX5iN,EAAQ0/N,GAAU13O,EAAkB,MAAX4tB,EAAE5V,MAAgB,EAAI4V,EAAE5V,MAAO4V,EAAEy9L,SAC1Du1C,IAAUhzO,EAAElG,QAAU73B,IAAS0nP,GAC/Br8M,EAAStN,EAAEsN,QAAUo9M,GAAYvvL,EAAQ/oD,EAAOgY,EAAOnoB,EAAM+9B,EAAEo7K,gBAAiBp7K,EAAE68K,WAAYm2D,GAC9Fl5O,EAASkG,EAAElG,QAAUwwN,GAAYl4O,EAAOgY,GA8E1C,OAxEIq1B,IAAOjjC,EAAIi3M,IAAMh0K,GACjBx9C,IAAS0nP,IACP3c,GAASlzM,EAAO3/B,OAAS6yO,GAC3B7Y,EAAM6C,SAASz9E,KAAK,uDACpB95F,EAAQ3lB,EAAOxZ,MAAM,EAAG0sN,EAAQ,GAChCprD,GAAW,GAEXniI,EAAQ3lB,EAENksG,GAAWpoG,EAAOoC,EAAEpC,OAEjBoC,EAAElG,QAA8B,IAApB1nB,EAAMqtC,EAAM,MAC3BA,EAAQA,EAAMn/B,MAAM,IAGtBm8D,EAASh9B,EAAMx0B,QAAO,SAAUxX,EAAKhY,GACnC,OAAO8X,KAAKE,IAAIA,EAAKmqB,EAAKniC,EAAOukC,GACnC,GAAG,IAEHpC,EAAO,GAAS6+C,EAAS7+C,GAAQ,GAEnC6hB,EAAQA,EAAMn1B,KAAI,SAAU7uB,EAAO6F,GACjC,OAAO,GAAO,CACZA,MAAOA,EACP4kD,MAAO5Y,EAAO7xC,EAAO6F,EAAOm+C,GAC5BhkD,MAAOA,EACPghF,OAAQA,EACR7+C,KAAMA,EAAKniC,EAAOukC,IAEtB,IACI4hJ,IACFA,EAAW9nJ,EAAO2lB,EAAMtlD,QACxBslD,EAAM5lD,KAAK,GAAO,CAChByH,MAAOm+C,EAAMtlD,OACb+rD,MAAO,IAASr5C,OAAOitB,EAAO3/B,OAASslD,EAAMtlD,OAAQ,YACrDsB,MAAOmmL,EACPnlG,OAAQA,EACR7+C,KAAMA,EAAKgkJ,EAAU5hJ,QVqOV,aUlON/9B,GACT4xC,EAASzhC,EAAMyhC,SAAUk/N,EAAW7tB,GAAc9yO,EAAOyhC,EAAO,GAAIk+J,GAAKl+J,IAIrE/Z,EAAO3/B,OAAS,IAAM6lC,EAAElG,QAAU+Z,EAAO,KAAOk+J,GAAKl+J,KACvD/Z,EAAS,CAAC+Z,EAAO,GAAIk+J,GAAKl+J,KAE5B4L,EAAQ3lB,EAAOxP,KAAI,SAAU7uB,EAAO6F,GAClC,OAAO,GAAO,CACZA,MAAOA,EACP4kD,MAAO5Y,EAAO7xC,EAAO6F,EAAOw4B,GAC5Br+B,MAAOA,EACPw3Q,KAAMF,EAASt3Q,IAEnB,MAEAmiC,EAAO9D,EAAO3/B,OAAS,EACvB44Q,EVoaN,SAAuB3gQ,GACrB,IAAIyhC,EAASzhC,EAAMyhC,SACjBzpB,EAAQypB,EAAO15C,OAAS,EACtBq5M,GAAM3/J,EAAO,GACf4/J,GAAM1B,GAAKl+J,GACX21E,EAAOiqF,EAAKD,EACd,GAAIphM,EAAMnQ,OAASygP,GAAW,CAC5B,IAAIwwB,EAAS9oP,EAAQo/F,EAAOp/F,EAAQ,GAGpCo/F,GADAiqF,GAAMy/D,IADN1/D,GAAM0/D,EAGR,CACA,OAAO,SAAUz3Q,GACf,OAAQA,EAAQ+3M,GAAMhqF,CACxB,CACF,CUnbiB2pJ,CAAc/gQ,GACzBqtC,EAAQ3lB,EAAOxP,KAAI,SAAU7uB,EAAO6F,GAClC,OAAO,GAAO,CACZA,MAAOA,EACP4kD,MAAO5Y,EAAO7xC,EAAO6F,EAAOw4B,GAC5Br+B,MAAOA,EACPw3Q,KAAM3xQ,EAAQyxQ,EAASt3Q,GAAS,EAChC23Q,MAAO9xQ,IAAUs8B,EAAO,EAAIm1O,EAASj5O,EAAOx4B,EAAQ,KAExD,KAEFkb,EAAImO,OAAS80B,EACbjjC,EAAI1R,IAAM20C,EACVnmD,KAAKmC,MAAQgkD,EACNjjC,CACT,IAEF,IAAI62P,GAAU,SAAiBh2Q,GAC7B,OAAOA,EAAEstB,OAAOpmB,CAClB,EACI+uQ,GAAU,SAAiBj2Q,GAC7B,OAAOA,EAAEstB,OAAOnmB,CAClB,EACIyN,GAAU,SAAiB5U,GAC7B,OAAOA,EAAE2E,OAAOuC,CAClB,EACI2N,GAAU,SAAiB7U,GAC7B,OAAOA,EAAE2E,OAAOwC,CAClB,EAOA,SAAS+uQ,GAAS34P,GAChB0gN,GAAUpgO,KAAK5B,KAAM,CAAC,EAAGshB,EAC3B,CACA24P,GAASl3C,WAAa,CACpB,KAAQ,WACR,SAAY,CACV,UAAY,GAEd,OAAU,CAAC,CACT,KAAQ,UACR,KAAQ,QACR,QAAW,YACV,CACD,KAAQ,UACR,KAAQ,QACR,QAAW,YACV,CACD,KAAQ,UACR,KAAQ,QACR,QAAW,YACV,CACD,KAAQ,UACR,KAAQ,QACR,QAAW,YACV,CACD,KAAQ,SACR,KAAQ,OACR,QAAW,WACX,OAAU,CAAC,aAAc,WAAY,WACpC,CACD,KAAQ,QACR,KAAQ,OACR,QAAW,OACX,OAAU,CAAC,OAAQ,MAAO,QAAS,WAAY,eAC9C,CACD,KAAQ,UACR,KAAQ,UACP,CACD,KAAQ,KACR,KAAQ,SACR,QAAW,UAGf,GAASk3C,GAAUj4C,GAAW,CAC5BluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAAI0N,EAAK7hM,EAAEqzO,SAAWA,GACpBvxC,EAAK9hM,EAAEszO,SAAWA,GAClBxC,EAAK9wO,EAAE/tB,SAAWA,GAClB8+P,EAAK/wO,EAAE9tB,SAAWA,GAClBmwN,EAAKriM,EAAEqiM,IAAM,OACbm2B,EAASx4N,EAAEw4N,QAAU,WACrBz5P,EAAQihC,EAAEjhC,OAAS,OACnBoB,EAAOqzQ,GAAMl4Q,IAAIyD,EAAQ,IAAMy5P,IAAWgb,GAAMl4Q,IAAIyD,GAOtD,OANKoB,GACH,GAAM,8BAAgC6/B,EAAEjhC,OAASihC,EAAEw4N,OAAS,IAAMx4N,EAAEw4N,OAAS,KAE/ErkC,EAAMsD,MAAMtD,EAAMuF,QAAQ,SAAUr8N,GAClCA,EAAEglO,GAAMliO,EAAK0hO,EAAGxkO,GAAIykO,EAAGzkO,GAAIyzQ,EAAGzzQ,GAAI0zQ,EAAG1zQ,GACvC,IACO82N,EAAMD,OAAOl0L,EAAE00L,YAAYJ,SAAS+N,EAC7C,IAEF,IAAI,GAAO,SAAcR,EAAIC,EAAIgvC,EAAIC,GACnC,MAAO,IAAMlvC,EAAK,IAAMC,EAAK,IAAMgvC,EAAK,IAAMC,CAChD,EAII,GAAM,SAAalvC,EAAIC,EAAIgvC,EAAIC,GACjC,IAAI7qQ,EAAK4qQ,EAAKjvC,EACZ17N,EAAK4qQ,EAAKjvC,EACV2xC,EAAKlgQ,KAAKoe,MAAMzrB,EAAIC,GAAM,EAE5B,MAAO,IAAM07N,EAAK,IAAMC,EAAK,IAAM2xC,EAAK,IAAMA,EAAK,IAD5C,IAAMlgQ,KAAKqG,MAAMzT,EAAID,GAAMqN,KAAK+B,GAChC,QAAsEw7P,EAAK,IAAMC,CAC1F,EAII74B,GAAQ,SAAerW,EAAIC,EAAIgvC,EAAIC,GACrC,IAAI7qQ,EAAK4qQ,EAAKjvC,EACZ17N,EAAK4qQ,EAAKjvC,EACVw3B,EAAK,IAAOpzP,EAAKC,GACjButQ,EAAK,IAAOvtQ,EAAKD,GACnB,MAAO,IAAM27N,EAAK,IAAMC,EAAK,KAAOD,EAAKy3B,GAAM,KAAOx3B,EAAK4xC,GAAM,KAAO5C,EAAK4C,GAAM,KAAO3C,EAAKzX,GAAM,IAAMwX,EAAK,IAAMC,CACxH,EAkCIyC,GAAQh/D,GAAQ,CAClB,KAAQ,GACR,cAvDU,SAAesgD,EAAI6e,EAAIC,EAAI5jB,GACrC,OAAO,GAAK2jB,EAAKpgQ,KAAKkC,IAAIq/O,GAAK6e,EAAKpgQ,KAAKoC,IAAIm/O,GAAK9E,EAAKz8O,KAAKkC,IAAIm+P,GAAK5jB,EAAKz8O,KAAKoC,IAAIi+P,GACrF,EAsDE,IAAO,GACP,aA/CS,SAAc9e,EAAI6e,EAAIC,EAAI5jB,GACnC,OAAO,GAAI2jB,EAAKpgQ,KAAKkC,IAAIq/O,GAAK6e,EAAKpgQ,KAAKoC,IAAIm/O,GAAK9E,EAAKz8O,KAAKkC,IAAIm+P,GAAK5jB,EAAKz8O,KAAKoC,IAAIi+P,GACpF,EA8CE,MAAS17B,GACT,eAvCW,SAAgB4c,EAAI6e,EAAIC,EAAI5jB,GACvC,OAAO9X,GAAMy7B,EAAKpgQ,KAAKkC,IAAIq/O,GAAK6e,EAAKpgQ,KAAKoC,IAAIm/O,GAAK9E,EAAKz8O,KAAKkC,IAAIm+P,GAAK5jB,EAAKz8O,KAAKoC,IAAIi+P,GACtF,EAsCE,wBArCW,SAAgB/xC,EAAIC,EAAIgvC,EAAIC,GACvC,MAAO,IAAMlvC,EAAK,IAAMC,EAAK,IAAMivC,EAAK,IAAMD,CAChD,EAoCE,sBAnCW,SAAgBjvC,EAAIC,EAAIgvC,EAAIC,GACvC,MAAO,IAAMlvC,EAAK,IAAMC,EAAK,IAAMgvC,EAAK,IAAMC,CAChD,EAkCE,oBAjCW,SAAgBjc,EAAI6e,EAAIC,EAAI5jB,GACvC,IAAI6jB,EAAKtgQ,KAAKkC,IAAIq/O,GAChBgf,EAAKvgQ,KAAKoC,IAAIm/O,GACdif,EAAKxgQ,KAAKkC,IAAIm+P,GACd9M,EAAKvzP,KAAKoC,IAAIi+P,GAEhB,MAAO,IAAMD,EAAKE,EAAK,IAAMF,EAAKG,EAAK,IAAMH,EAAK,IAAMA,EAAK,UADtDpgQ,KAAKoG,IAAIi6P,EAAK9e,GAAMvhP,KAAK+B,GAAKs+P,GAAM9e,EAAK8e,EAAK9e,GACwB,EAAI,GAAK,IAAM6e,EAAKI,EAAK,IAAMJ,EAAK7M,EAAK,IAAM9W,EAAK+jB,EAAK,IAAM/jB,EAAK8W,CACnJ,EA2BE,sBA1Bc,SAAmBjlC,EAAIC,EAAIgvC,EAAIC,GAC7C,IAAI1hQ,GAAKwyN,EAAKivC,GAAM,EACpB,MAAO,IAAMjvC,EAAK,IAAMC,EAAK,IAAMzyN,EAAI,IAAMyyN,EAAK,IAAMzyN,EAAI,IAAM0hQ,EAAK,IAAMD,EAAK,IAAMC,CAC1F,EAwBE,oBAvBc,SAAmBlvC,EAAIC,EAAIgvC,EAAIC,GAC7C,IAAI1hQ,GAAKyyN,EAAKivC,GAAM,EACpB,MAAO,IAAMlvC,EAAK,IAAMC,EAAK,IAAMD,EAAK,IAAMxyN,EAAI,IAAMyhQ,EAAK,IAAMzhQ,EAAI,IAAMyhQ,EAAK,IAAMC,CAC1F,EAqBE,kBApBc,SAAmBjc,EAAI6e,EAAIC,EAAI5jB,GAC7C,IAAI6jB,EAAKtgQ,KAAKkC,IAAIq/O,GAChBgf,EAAKvgQ,KAAKoC,IAAIm/O,GACdif,EAAKxgQ,KAAKkC,IAAIm+P,GACd9M,EAAKvzP,KAAKoC,IAAIi+P,GACdI,GAAML,EAAK3jB,GAAM,EACnB,MAAO,IAAM2jB,EAAKE,EAAK,IAAMF,EAAKG,EAAK,IAAME,EAAKH,EAAK,IAAMG,EAAKF,EAAK,IAAME,EAAKD,EAAK,IAAMC,EAAKlN,EAAK,IAAM9W,EAAK+jB,EAAK,IAAM/jB,EAAK8W,CACpI,IAyBA,SAASmN,GAAIr5P,GACX0gN,GAAUpgO,KAAK5B,KAAM,KAAMshB,EAC7B,CACAq5P,GAAI53C,WAAa,CACf,KAAQ,MACR,SAAY,CACV,UAAY,GAEd,OAAU,CAAC,CACT,KAAQ,QACR,KAAQ,SACP,CACD,KAAQ,aACR,KAAQ,SACR,QAAW,GACV,CACD,KAAQ,WACR,KAAQ,SACR,QAAW,mBACV,CACD,KAAQ,OACR,KAAQ,UACR,SAAW,GACV,CACD,KAAQ,KACR,KAAQ,SACR,OAAS,EACT,OAAU,EACV,QAAW,CAAC,aAAc,eAG9B,GAAS43C,GAAK34C,GAAW,CACvBluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAYE35N,EACA6C,EACAkO,EAdE82N,EAAKriM,EAAEqiM,IAAM,CAAC,aAAc,YAC9BhnN,EAAagnN,EAAG,GAChB/mN,EAAW+mN,EAAG,GACdlpG,EAAQn5F,EAAEm5F,OAASnoF,GACnBhxB,EAAQggB,EAAE3kB,YAAc,EACxB/c,EAAqB,MAAd0hC,EAAE1kB,SAAmB0kB,EAAE1kB,SAAW,EAAI/H,KAAK+B,GAClD0J,EAAOm1M,EAAMxpM,OACbmP,EAAS9a,EAAKsL,IAAI6uG,GAClBjxG,EAAI4R,EAAO3/B,OACXsd,EAAIuI,EACJhgB,GAAK1B,EAAO0hB,GAAS,GAAI8Z,GACzBx4B,EAAQ,GAAM4mB,GAShB,IALI8X,EAAEn0B,MACJvK,EAAMuK,MAAK,SAAU4L,EAAG8E,GACtB,OAAOud,EAAOriB,GAAKqiB,EAAOvd,EAC5B,IAEG/hB,EAAI,EAAGA,EAAI0tB,IAAK1tB,EACnB+Q,EAAIuuB,EAAOx4B,EAAM9G,KACjB6C,EAAI2hB,EAAK1d,EAAM9G,KACb6gB,GAAc5D,EAChBpa,EAAEie,GAAY7D,GAAKlM,EAAIvL,EAGzB,OADA1G,KAAKmC,MAAQq+B,EACNq6L,EAAMD,OAAOl0L,EAAE00L,YAAYJ,SAAS+N,EAC7C,IAEF,IAAI6xC,GAAgB,EAKpB,SAASC,GAAWlyQ,GAClB,OAAO+hP,GAAa/hP,IAASA,IAASsgP,EACxC,CACA,IAAI,GAAOtsC,GAAM,CAAC,MAAO,WAAY,QAAS,OAAQ,SAAU,eAAgB,cAAe,SAAU,YAAa,YAAa,YAAa,YAAa,iBAAkB,OAAQ,OAAQ,OAAQ,QAAS,YAAa,QAAS,UAAW,cAAe,qBAOhQ,SAASm+D,GAAMx5P,GACb0gN,GAAUpgO,KAAK5B,KAAM,KAAMshB,GAC3BthB,KAAKo7N,UAAS,EAChB,CAwGA,SAAS2/C,GAAYpyQ,EAAM4xC,EAAQlyB,GACjC,GAAIwiO,GAAcliP,GAAO,CAGvB,IAAImV,EAAI7D,KAAKoG,IAAIk6B,EAAO5oB,QAAO,SAAU7T,EAAG7L,GAC1C,OAAO6L,GAAK7L,EAAI,GAAK,EAAIA,EAAI,EAAI,EAAI,EACvC,GAAG,IACC6L,IAAMy8B,EAAO15C,QACfwnB,EAAG43H,KAAK,mCAAqC,GAAY1lG,GAE7D,CACA,OAAOA,CACT,CAwGA,SAASygO,GAAahvB,EAAQ3/B,EAAQz7L,GACpC,OAAO87G,GAAWs/G,KAAY3/B,GAAUz7L,GAAW66N,GAAiBO,EAAQivB,GAAK5uD,GAAU,CAAC,EAAG,GAAIz7L,IAAYo7N,CACjH,CACA,SAASivB,GAAK14O,EAAO3R,GACnB,OAAOA,EAAU2R,EAAMvb,QAAQ4J,UAAY2R,CAC7C,CASA,SAAS24O,GAAU55P,GACjB0gN,GAAUpgO,KAAK5B,KAAM,KAAMshB,EAC7B,CA1OA,GAASw5P,GAAO94C,GAAW,CACzBluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAAIxyM,EAAKwyM,EAAM6C,SACbmuB,EAAU7rP,KAAKmC,MACf0+B,EAcN,SAAkB6F,GAChB,IAEE9X,EAFE7qB,EAAI2iC,EAAE/9B,KACRod,EAAI,GAIN,GAAIhiB,IAAMklP,GAAY,OAAOA,GAAa,IAAM,IAOlD,SAA2BviN,GACzB,IAAI3iC,EAAI2iC,EAAE/9B,KACV,OAAO+hP,GAAa3mP,IAAMA,IAAMilP,IAAQjlP,IAAMomN,KAAQzjL,EAAEslN,QAAUtlN,EAAEihB,OAASjhB,EAAEihB,MAAM9mD,QAAU6lC,EAAEihB,MAAM6gF,MAAM,IAC/G,EATM2yI,CAAkBz0O,KAEpB3gB,EAAU,KADV6I,EAAI8X,EAAE00O,UAAY10O,EAAE00O,UAAUv6Q,OAAS6lC,EAAE6T,OAAS7T,EAAE6T,OAAO15C,UAA0B,MAAf6lC,EAAE20O,WAAqB,GAC/EpyB,GAAa,IAAY,IAANr6N,EAAUs6N,GAAY,IAAM,IAE/D,OAAQnjO,EAAIhiB,GAAK,IAAQ6a,aAC3B,CA1BY08P,CAAS50O,GAIjB,IAAK7F,KAHAgrN,GAAWhrN,IAAQgrN,EAAQljP,OAC9B3I,KAAKmC,MAAQ0pP,EAAU,GAAMhrN,EAAN,IAEb6F,EAAG,IAAK,GAAK7F,GAAM,CAE7B,GAAY,YAARA,GAAqBg6O,GAAWhvB,EAAQljP,MAAO,SAEnD+jI,GAAWm/G,EAAQhrN,IAAQgrN,EAAQhrN,GAAK6F,EAAE7F,IAAQxY,EAAG43H,KAAK,+BAAiCp/G,EAC7F,CAEA,OA0IJ,SAAwB/nB,EAAO4tB,EAAG5V,GAChC,IAAInoB,EAAOmQ,EAAMnQ,KACf85B,EAAQiE,EAAEjE,QAAS,EACnBklB,EAAQjhB,EAAEihB,MAGZ,GAAmB,MAAfjhB,EAAE60O,UACJ5zN,EA8BJ,SAA4Bh/C,EAAM+9B,EAAG5V,GAC/BnoB,IAAS4gP,IAAQ5gP,IAAS2gP,IAC5B,GAAM,iDAIR,IAAIhkK,GAA2B,MAAlB5+C,EAAEiiN,aAAuBjiN,EAAEiiN,aAAejiN,EAAE0zC,UAAY,EACnEv1B,EAAQl8C,IAAS2gP,GAAQ,GAAuB,MAAlB5iN,EAAEgiN,aAAuBhiN,EAAEgiN,aAAehiN,EAAE0zC,UAAY,EACxF,MAAO,CAAC,EAAG1zC,EAAE60O,UAAY9yB,GAAU33N,EAAO+zB,EAAOygC,GACnD,CAvCYk2L,CAAmB7yQ,EAAM+9B,EAAG5V,QAIjC,GAAI4V,EAAEslN,SACTrkM,EAmCJ,SAAyBh/C,EAAM+9B,EAAG5V,GAChC,IAEE2qP,EAFEpvD,EAAS3lL,EAAEg1O,aAGX,GAAQh1O,EAAEslN,QACZyvB,EAAW/vB,GAAkBhlN,EAAEslN,OAAQtlN,EAAEm5M,YAAan5M,EAAEi1O,mBAGxDF,EAAWzvB,GADJtlN,EAAEslN,OAAOptO,iBAED,GAAM,6BAA6BrL,OAAOmzB,EAAEslN,SAO7D,OAHAl7N,EAAQnoB,IAASygP,GAAYt4N,EAAQ,EAAInoB,IAAS6gP,GAAa14N,EAAQ,EAAInoB,IAAS,IAAYA,IAASwgP,IAAYziN,EAAEk1O,aAAehB,GAAgB9pP,EAG/Ig6N,GAAgBniP,GAAQqyQ,GAAaS,EAAUpvD,EAAQ3lL,EAAE9V,SAAW87G,GAAW+uI,GAAY9vB,GAAqBqvB,GAAaS,EAAUpvD,GAASv7L,GAASnoB,IAAS0gP,GAAUoyB,EAAWA,EAASz0P,MAAM,EAAG8J,EAClN,CApDY+qP,CAAgBlzQ,EAAM+9B,EAAG5V,GAC7B47G,GAAW/kF,IAAQ,CACrB,GAAI7uC,EAAM0nO,aACR,OAAO1nO,EAAM0nO,aAAa74L,GAE1B,GAAM,cAAcp0C,OAAO5K,EAAM,kDAErC,CAIF,GAAIg/C,GAASmjM,GAAgBniP,GAC3B,OAAOmQ,EAAM0nO,aAAakL,GAAkBuvB,GAAKtzN,EAAOjhB,EAAE9V,SAAU8V,EAAEm5M,YAAan5M,EAAEi1O,mBAInFh0N,GAASjhB,EAAEm5M,aAAe/mO,EAAM+mO,YAClC/mO,EAAM+mO,YAAYA,GAAYn5M,EAAEm5M,YAAan5M,EAAEi1O,mBACtCjvI,GAAW5zH,EAAM2pB,OAC1B3pB,EAAM2pB,MAAMA,GACHiqG,GAAW5zH,EAAMsnO,aAC1BtnO,EAAM+mO,YAAYp9M,EAAQ,GAAmB,MAE3CklB,GAAO7uC,EAAM6uC,MAAMszN,GAAKtzN,EAAOjhB,EAAE9V,SACvC,CA/KIkrP,CAAejwB,EAASnlN,EAqG5B,SAAuB5tB,EAAO4tB,EAAG5V,GAC/B,IAAIs9M,EAAO1nM,EAAE0nM,KACb,GAAIA,IAAS,GAAQA,GAAO,CAE1B,IAAI7zL,EAASzhC,EAAMyhC,SACjB2/J,EAAK3/J,EAAO,GACZ4/J,EAAK1B,GAAKl+J,GACVkN,EAAO2mL,EAAK3mL,KACV/gC,EAAsB,MAAd0nN,EAAK1nN,MAAgBwzL,EAAKk0B,EAAK1nN,MACzC1hB,EAAoB,MAAbopO,EAAKppO,KAAem1M,EAAKi0B,EAAKppO,KAClCyiD,GAAM,GAAM,+CACb/gC,EAAQwzL,IAAIxzL,EAAQ+gC,EAAOxtC,KAAKisJ,KAAKg0C,EAAKzyJ,IAC1CziD,EAAOm1M,IAAIn1M,EAAOyiD,EAAOxtC,KAAKwX,MAAM0oL,EAAK1yJ,IAC7C2mL,EAAO,GAAM1nN,EAAO1hB,EAAOyiD,EAAO,EAAGA,EACvC,CACI2mL,EAEFt1N,EAAMs1N,KAAOA,EACJt1N,EAAMs1N,aAERt1N,EAAMs1N,KAIXt1N,EAAMnQ,OAAS6gP,KACZpb,EAGO1nM,EAAE6T,QAAW7T,EAAEq1O,YAEzBjjQ,EAAMyhC,OAAO6zL,GACbt9M,EAAQs9M,EAAKvtO,QAJbiY,EAAMs1N,KAAOt1N,EAAMyhC,UASvB,OAAOzpB,CACT,CA1I+BkrP,CAAcnwB,EAASnlN,EAqBtD,SAAyB5tB,EAAO4tB,EAAGre,GAEjC,IAAIszN,EAgDN,SAAmB7iO,EAAO6iO,EAAKtzN,GAC7B,OAAIszN,GACF7iO,EAAMyhC,OAAOwgO,GAAYjiQ,EAAMnQ,KAAMgzO,EAAKtzN,IACnCszN,EAAI96O,SAEH,CAEZ,CAvDYu6Q,CAAUtiQ,EAAO4tB,EAAEq1O,UAAW1zP,GACxC,GAAIszN,GAAO,EAAG,OAAOA,EACrB,IAGE/sN,EACA2yB,EAJEhH,EAAS7T,EAAE6T,OACb5xC,EAAOmQ,EAAMnQ,KACbgvC,EAAOjR,EAAEiR,WAAmBlhB,IAAXiQ,EAAEiR,MA5DvB,SAAqB7+B,GACnB,IAAInQ,EAAOmQ,EAAMnQ,KACjB,OAAQmQ,EAAMs1N,OAASzlO,IAAS,IAAUA,IAASkgP,IAAOlgP,IAASmgP,GACrE,CAyD6CmzB,CAAYnjQ,GAGvD,IAAKyhC,EAAQ,OAAO,EAGhBsgO,GAAWlyQ,IAAS+9B,EAAE0zC,SAAW7/B,EAAO,KAAOk+J,GAAKl+J,KACtDA,EA6CJ,SAAmB5xC,EAAM4xC,EAAQoN,EAAO20J,EAAK1gM,EAAU49L,GACrD,IAAItpF,EAAOj2G,KAAKoG,IAAIo4L,GAAK9wJ,GAASA,EAAM,IACtCm0J,EAAO5rF,GAAQA,EAAO,EAAIosF,GAC1Bv2L,EAAIpd,IAASigP,GAAMjvC,GAAQp/J,EAAQ,KAAMuhK,GAAQnzM,IAASmgP,GAAOlvC,GAAQr/J,EAAQ,KAAMuhK,EAAM,IAAOnzM,IAASkgP,GAAMjvC,GAAQr/J,EAAQ,KAAMuhK,EAAMlgM,GAAY,GAAKjT,IAASogP,GAASlvC,GAAWt/J,EAAQ,KAAMuhK,EAAMtC,GAAY,GAAKE,GAAWn/J,EAAQ,KAAMuhK,GAI7P,OAHAvhK,EAASA,EAAOvzB,QAChBuzB,EAAO,GAAKx0B,EAAE,GACdw0B,EAAOA,EAAO15C,OAAS,GAAKklB,EAAE,GACvBw0B,CACT,CArDa2hO,CAAUvzQ,EAAM4xC,EAAQ7T,EAAEihB,MAAOjhB,EAAE0zC,QAAS1zC,EAAE9qB,SAAU8qB,EAAE8yK,WAIrE,IAAI7hK,GAAuB,MAAfjR,EAAEy1O,WAAoC,MAAfz1O,EAAE01O,WAAoC,MAAf11O,EAAE20O,aAC1DzsP,GAAK2rB,EAASA,EAAOvzB,SAASnmB,OAAS,GAAK,EACxC82C,IACE4C,EAAO,GAAK,IAAGA,EAAO,GAAK,GAC3BA,EAAO3rB,GAAK,IAAG2rB,EAAO3rB,GAAK,IAEd,MAAf8X,EAAEy1O,YAAmB5hO,EAAO,GAAK7T,EAAEy1O,WACpB,MAAfz1O,EAAE01O,YAAmB7hO,EAAO3rB,GAAK8X,EAAE01O,WACpB,MAAf11O,EAAE20O,WAAmB,CAEvB,IAAIn6Q,GADJqgD,EAAM7a,EAAE20O,WACM9gO,EAAO3rB,GAAKA,EAAI,EAAI2yB,EAAMhH,EAAO,GAAK,EAAI3rB,EACpD1tB,IAAM0tB,GAAGvG,EAAG43H,KAAK,6CAA8C1+F,GACnEhH,EAAOn5C,OAAOF,EAAG,EAAGqgD,EACtB,CAIFzoC,EAAMyhC,OAAOwgO,GAAYpyQ,EAAM4xC,EAAQlyB,IAInC1f,IAAS0gP,IACXvwO,EAAMg+M,QAAQpwL,EAAE21O,eAAiB,QAAgB5lP,GAI/CiQ,EAAE69L,MAAQzrN,EAAMyrN,MAClBzrN,EAAMyrN,MAAgB,IAAX79L,EAAE69L,MAAiBisB,GAAU13O,EAAO4tB,EAAE69L,OAAS,MAI5D,OAAOhqL,EAAO15C,MAChB,CAtEyDy7Q,CAAgBzwB,EAASnlN,EAAGre,KAC1EwyM,EAAM0F,KAAK1F,EAAMwF,UAAYxF,EAAMyF,UAC5C,IA2NF,GAAS46C,GAAWl5C,GAAW,CAC7BluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAAIT,EAAM1zL,EAAE00L,SAAS,SAAWP,EAAM8D,QAAQ9D,EAAM+D,MAAQ/D,EAAMO,SAAS10L,EAAEn0B,KAAKqtH,SAAWi7F,EAAMO,SAAS,SAG5G,OAFIhB,GAAKS,EAAMxpM,OAAO9e,KAAKynN,GAActzL,EAAEn0B,OAC3CvS,KAAKo7N,SAAShB,GACPS,CACT,IAEF,IAAI0hD,GAAO,OACTC,GAAS,SACTC,GAAY,YACZC,GAAY,CAAC,KAAM,MAWrB,SAASC,GAAMr7P,GACb0gN,GAAUpgO,KAAK5B,KAAM,KAAMshB,EAC7B,CAoDA,SAASs7P,GAAYlrQ,EAAOyI,EAAK0lH,EAAOlzG,EAAItK,GAK1C,IAJA,IAGEte,EAHEu7B,GAAQnlB,EAAMzI,EAAM0a,KAAO,EAC7BrW,EAAIrE,EAAM7Q,OACVqG,EAAI,EAECA,EAAI6O,IAAK7O,GACdnD,EAAI2N,EAAMxK,IACRylB,GAAM2S,EACRv7B,EAAEse,GAAMid,GAAQrlB,KAAKoG,IAAIw/G,EAAM97H,GAEnC,CACA,SAAS84Q,GAAenrQ,EAAOyI,EAAK0lH,EAAOlzG,EAAItK,GAO7C,IANA,IAKEte,EALE+U,EAAQ,EAAIpH,EAAM0a,IACpBkT,EAAO,EACPvpB,EAAIrE,EAAM7Q,OACVqG,EAAI,EACJ+K,EAAI,EAEC/K,EAAI6O,IAAK7O,GACdnD,EAAI2N,EAAMxK,IACRylB,GAAM2S,EACRv7B,EAAEse,GAAMid,EAAOxmB,GAAS7G,GAAKgI,KAAKoG,IAAIw/G,EAAM97H,IAEhD,CACA,SAAS+4Q,GAAUprQ,EAAOyI,EAAK0lH,EAAOlzG,EAAItK,GAOxC,IANA,IAIEpQ,EACAlO,EALEg5Q,EAAU,EACZC,EAAU,EACVjnQ,EAAIrE,EAAM7Q,OACVqG,EAAI,EAGCA,EAAI6O,IAAK7O,GAEd+K,GAAK4tH,EADL97H,EAAI2N,EAAMxK,KAEF,GACNnD,EAAE4oB,GAAMqwP,EACRj5Q,EAAEse,GAAM26P,GAAW/qQ,IAEnBlO,EAAE4oB,GAAMowP,EACRh5Q,EAAEse,GAAM06P,GAAW9qQ,EAGzB,CA7FA0qQ,GAAM55C,WAAa,CACjB,KAAQ,QACR,SAAY,CACV,UAAY,GAEd,OAAU,CAAC,CACT,KAAQ,QACR,KAAQ,SACP,CACD,KAAQ,UACR,KAAQ,QACR,OAAS,GACR,CACD,KAAQ,OACR,KAAQ,WACP,CACD,KAAQ,SACR,KAAQ,OACR,QAAWw5C,GACX,OAAU,CAACA,GAAMC,GAAQC,KACxB,CACD,KAAQ,KACR,KAAQ,SACR,OAAS,EACT,OAAU,EACV,QAAWC,MAGf,GAASC,GAAO36C,GAAW,CACzBluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAMEv4L,EACAphC,EACA0tB,EACAzU,EATE4uN,EAAKriM,EAAEqiM,IAAM2zC,GACf/vP,EAAKo8M,EAAG,GACR1mN,EAAK0mN,EAAG,GACRx2N,EAAOynN,GAActzL,EAAEn0B,MACvBstH,EAAQn5F,EAAEm5F,OAASnoF,GACnBqzN,EAAQrkO,EAAEy8C,SAAWq5L,GAASI,GAAcl2O,EAAEy8C,SAAWs5L,GAAYI,GAAiBC,GAUxF,IAHAx6O,EAoDJ,SAAmB5c,EAAMonN,EAASv6N,EAAMstH,GACtC,IAIE7uG,EACA9vB,EACA0tB,EACA7Y,EACAhS,EACA2C,EACA8tC,EACA12B,EACA3D,EAZEmoB,EAAS,GACXtgC,EAAM,SAAaqB,GACjB,OAAOA,EAAEU,EACX,EAYF,GAAe,MAAX+oO,EACFxqM,EAAO/hC,KAAKmlB,EAAKsB,cAEjB,IAAKgK,EAAM,CAAC,EAAG9vB,EAAI,EAAG0tB,EAAIlJ,EAAK7kB,OAAQK,EAAI0tB,IAAK1tB,EAC9C6C,EAAI2hB,EAAKxkB,IAETszC,EAAIxjB,EADJtqB,EAAIomO,EAAQ97M,IAAIhvB,OAGdgvB,EAAItqB,GAAK8tC,EAAI,GACblS,EAAO/hC,KAAKi0C,IAEdA,EAAEj0C,KAAKwD,GAKX,IAAK2C,EAAI,EAAGyT,EAAM,EAAGpE,EAAIusB,EAAOzhC,OAAQ6F,EAAIqP,IAAKrP,EAAG,CAElD,IAAKxF,EAAI,EAAG4c,EAAI,EAAG8Q,GADnB4lB,EAAIlS,EAAO57B,IACc7F,OAAQK,EAAI0tB,IAAK1tB,EACxC4c,GAAK7D,KAAKoG,IAAIw/G,EAAMrrF,EAAEtzC,KAExBszC,EAAEpoB,IAAMtO,EACJA,EAAI3D,IAAKA,EAAM2D,GACfvL,GAAMiiC,EAAEjiC,KAAKA,EACnB,CAEA,OADA+vB,EAAOnoB,IAAMA,EACNmoB,CACT,CA/Fa,CAAUu4L,EAAMxpM,OAAQqV,EAAEomM,QAASv6N,EAAMstH,GAG7C3+H,EAAI,EAAG0tB,EAAI0T,EAAOzhC,OAAQsZ,EAAMmoB,EAAOnoB,IAAKjZ,EAAI0tB,IAAK1tB,EACxD6pQ,EAAMzoO,EAAOphC,GAAIiZ,EAAK0lH,EAAOlzG,EAAItK,GAEnC,OAAOw4M,EAAMD,OAAOl0L,EAAE00L,YAAYJ,SAAS+N,EAC7C,ICn4BF,gBAA0B99N,GACxB,OAAOA,CACR,ECFD,SAASgyQ,GAAe59D,EAAU4d,GAC5B5d,GAAY69D,GAAmB3lQ,eAAe8nM,EAAS12M,OACzDu0Q,GAAmB79D,EAAS12M,MAAM02M,EAAU4d,EAEhD,CACA,IAAIkgD,GAAmB,CACrBC,QAAS,SAAiBz4O,EAAQs4L,GAChCggD,GAAet4O,EAAO06K,SAAU4d,EAClC,EACAogD,kBAAmB,SAA2B14O,EAAQs4L,GAIpD,IAHA,IAAI9d,EAAWx6K,EAAOw6K,SACpBj+M,GAAK,EACL0tB,EAAIuwL,EAASt+M,SACNK,EAAI0tB,GAAGquP,GAAe99D,EAASj+M,GAAGm+M,SAAU4d,EACvD,GAEEigD,GAAqB,CACvBI,OAAQ,SAAgB34O,EAAQs4L,GAC9BA,EAAOsgD,QACT,EACAj0B,MAAO,SAAe3kN,EAAQs4L,GAC5Bt4L,EAASA,EAAOk7K,YAChBod,EAAOjyN,MAAM25B,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAC5C,EACA64O,WAAY,SAAoB74O,EAAQs4L,GAItC,IAHA,IAAIpd,EAAcl7K,EAAOk7K,YACvB3+M,GAAK,EACL0tB,EAAIixL,EAAYh/M,SACTK,EAAI0tB,GAAG+V,EAASk7K,EAAY3+M,GAAI+7N,EAAOjyN,MAAM25B,EAAO,GAAIA,EAAO,GAAIA,EAAO,GACrF,EACA84O,WAAY,SAAoB94O,EAAQs4L,GACtCygD,GAAW/4O,EAAOk7K,YAAaod,EAAQ,EACzC,EACA0gD,gBAAiB,SAAyBh5O,EAAQs4L,GAIhD,IAHA,IAAIpd,EAAcl7K,EAAOk7K,YACvB3+M,GAAK,EACL0tB,EAAIixL,EAAYh/M,SACTK,EAAI0tB,GAAG8uP,GAAW79D,EAAY3+M,GAAI+7N,EAAQ,EACrD,EACA2gD,QAAS,SAAiBj5O,EAAQs4L,GAChC4gD,GAAcl5O,EAAOk7K,YAAaod,EACpC,EACA6gD,aAAc,SAAsBn5O,EAAQs4L,GAI1C,IAHA,IAAIpd,EAAcl7K,EAAOk7K,YACvB3+M,GAAK,EACL0tB,EAAIixL,EAAYh/M,SACTK,EAAI0tB,GAAGivP,GAAch+D,EAAY3+M,GAAI+7N,EAChD,EACA8gD,mBAAoB,SAA4Bp5O,EAAQs4L,GAItD,IAHA,IAAI7d,EAAaz6K,EAAOy6K,WACtBl+M,GAAK,EACL0tB,EAAIwwL,EAAWv+M,SACRK,EAAI0tB,GAAGquP,GAAe79D,EAAWl+M,GAAI+7N,EAChD,GAEF,SAASygD,GAAW79D,EAAaod,EAAQ+gD,GACvC,IAEEC,EAFE/8Q,GAAK,EACP0tB,EAAIixL,EAAYh/M,OAASm9Q,EAG3B,IADA/gD,EAAOib,cACEh3O,EAAI0tB,GAAGqvP,EAAap+D,EAAY3+M,GAAI+7N,EAAOjyN,MAAMizQ,EAAW,GAAIA,EAAW,GAAIA,EAAW,IACnGhhD,EAAOkb,SACT,CACA,SAAS0lC,GAAch+D,EAAaod,GAClC,IAAI/7N,GAAK,EACP0tB,EAAIixL,EAAYh/M,OAElB,IADAo8N,EAAOihD,iBACEh9Q,EAAI0tB,GAAG8uP,GAAW79D,EAAY3+M,GAAI+7N,EAAQ,GACnDA,EAAOkhD,YACT,CACe,SAAS,GAACx5O,EAAQs4L,GAC3Bt4L,GAAUw4O,GAAiB5lQ,eAAeotB,EAAOh8B,MACnDw0Q,GAAiBx4O,EAAOh8B,MAAMg8B,EAAQs4L,GAEtCggD,GAAet4O,EAAQs4L,EAE3B,CCtEO,IAAImhD,GAAqB,WAC9B,SAASA,KACP,QAAgBp+Q,KAAMo+Q,GACtBp+Q,KAAKq+Q,UAAY,IAAI5lO,aAAa,IAClCz4C,KAAKk4C,GAAK,CACZ,CA4CA,OA3CA,QAAakmO,EAAO,CAAC,CACnBv9O,IAAK,MACL1+B,MAAO,SAAa8I,GAGlB,IAFA,IAAImT,EAAIpe,KAAKq+Q,UACTn9Q,EAAI,EACCgG,EAAI,EAAGA,EAAIlH,KAAKk4C,IAAMhxC,EAAI,GAAIA,IAAK,CAC1C,IAAIgE,EAAIkT,EAAElX,GACRizM,EAAKlvM,EAAIC,EACTgvM,EAAKjgM,KAAKoG,IAAIpV,GAAKgP,KAAKoG,IAAInV,GAAKD,GAAKkvM,EAAKjvM,GAAKA,GAAKivM,EAAKlvM,GACxDivM,IAAI97L,EAAEld,KAAOg5M,GACjBjvM,EAAIkvM,CACN,CAGA,OAFA/7L,EAAEld,GAAK+J,EACPjL,KAAKk4C,GAAKh3C,EAAI,EACPlB,IACT,GACC,CACD6gC,IAAK,UACL1+B,MAAO,WACL,IAEE8I,EACAC,EACAgvM,EAJE97L,EAAIpe,KAAKq+Q,UACTzvP,EAAI5uB,KAAKk4C,GAIXiiK,EAAK,EACP,GAAIvrL,EAAI,EAAG,CAET,IADAurL,EAAK/7L,IAAIwQ,GACFA,EAAI,IACT3jB,EAAIkvM,IAGJD,GAFAhvM,EAAIkT,IAAIwQ,MACRurL,EAAKlvM,EAAIC,GACMD,OAGb2jB,EAAI,IAAMsrL,EAAK,GAAK97L,EAAEwQ,EAAI,GAAK,GAAKsrL,EAAK,GAAK97L,EAAEwQ,EAAI,GAAK,KAC3D1jB,EAAS,EAALgvM,KACJjvM,EAAIkvM,EAAKjvM,GACIivM,IAAIA,EAAKlvM,EAE1B,CACA,OAAOkvM,CACT,KAEKikE,CACT,CAlDgC,GCLzB,IAAI,GAAU,KACV,GAAW,MACX,GAAKnkQ,KAAK+B,GACV,GAAS,GAAK,EACdsiQ,GAAY,GAAK,EACjB,GAAW,EAAL,GACN,GAAU,IAAM,GAChB,GAAU,GAAK,IACf,GAAMrkQ,KAAKoG,IACXqY,GAAOze,KAAKye,KACZ,GAAQze,KAAKqG,MACb,GAAMrG,KAAKkC,IACX+pJ,GAAOjsJ,KAAKisJ,KACZ,GAAMjsJ,KAAK6gC,IAEXziB,IADQpe,KAAKwX,MACLxX,KAAKoe,OACb,GAAMpe,KAAKy/B,IACX,GAAMz/B,KAAK0B,IACX,GAAM1B,KAAKoC,IACX,GAAOpC,KAAK0+L,MAAQ,SAAU1tM,GACvC,OAAOA,EAAI,EAAI,EAAIA,EAAI,GAAK,EAAI,CAClC,EACW,GAAOgP,KAAK2C,KACZiM,GAAM5O,KAAK4O,IACf,SAAS,GAAK5d,GACnB,OAAOA,EAAI,EAAI,EAAIA,GAAK,EAAI,GAAKgP,KAAKgG,KAAKhV,EAC7C,CACO,SAAS,GAAKA,GACnB,OAAOA,EAAI,EAAI,GAASA,GAAK,GAAK,GAASgP,KAAKoE,KAAKpT,EACvD,CC9Be,SAAS,KAAQ,CCGhC,IAEEizO,GACAC,GACAzxN,GACAC,GALE4xP,GAAU,IAAIH,GAChBI,GAAc,IAAIJ,GAKhBK,GAAa,CACfzzQ,MAAO,GACPktO,UAAW,GACXC,QAAS,GACT+lC,aAAc,WACZO,GAAWvmC,UAAYwmC,GACvBD,GAAWtmC,QAAUwmC,EACvB,EACAR,WAAY,WACVM,GAAWvmC,UAAYumC,GAAWtmC,QAAUsmC,GAAWzzQ,MAAQ,GAC/DuzQ,GAAQ/sQ,IAAI,GAAIgtQ,KAChBA,GAAc,IAAIJ,EACpB,EACAxrQ,OAAQ,WACN,IAAIg2C,EAAO21N,GAAU,EAErB,OADAA,GAAU,IAAIH,GACPx1N,CACT,GAEF,SAAS81N,KACPD,GAAWzzQ,MAAQ4zQ,EACrB,CACA,SAASA,GAAe3zQ,EAAGC,GACzBuzQ,GAAWzzQ,MAAQ6zQ,GACnB3gC,GAAMxxN,GAAKzhB,EAAGkzO,GAAMxxN,GAAKzhB,CAC3B,CACA,SAAS2zQ,GAAU5zQ,EAAGC,GACpBszQ,GAAYhtQ,IAAImb,GAAK1hB,EAAIyhB,GAAKxhB,GAC9BwhB,GAAKzhB,EAAG0hB,GAAKzhB,CACf,CACA,SAASyzQ,KACPE,GAAU3gC,GAAKC,GACjB,CACA,UCzCI,GAAK55O,IACP,GAAK,GACL6d,IAAM,GACNC,GAAKD,GACH08P,GAAe,CACjB9zQ,MAWF,SAAqBC,EAAGC,GAClBD,EAAI,KAAI,GAAKA,GACbA,EAAImX,KAAIA,GAAKnX,GACbC,EAAI,KAAI,GAAKA,GACbA,EAAImX,KAAIA,GAAKnX,EACnB,EAfEgtO,UAAW,GACXC,QAAS,GACT+lC,aAAc,GACdC,WAAY,GACZvrQ,OAAQ,WACN,IAAIia,EAAS,CAAC,CAAC,GAAI,IAAK,CAACzK,GAAIC,KAE7B,OADAD,GAAKC,KAAO,GAAK,GAAK9d,KACfsoB,CACT,GAQF,ICVE,GACA,GACA,GACA,GDOF,MCnBIkyP,GAAK,EACPC,GAAK,EACLC,GAAK,EACLC,GAAK,EACLC,GAAK,EACLC,GAAK,EACLpkO,GAAK,EACLqkO,GAAK,EACLC,GAAK,EAKHC,GAAiB,CACnBv0Q,MAAOw0Q,GACPtnC,UAAWunC,GACXtnC,QAASunC,GACTxB,aAAc,WACZqB,GAAernC,UAAYynC,GAC3BJ,GAAepnC,QAAUynC,EAC3B,EACAzB,WAAY,WACVoB,GAAev0Q,MAAQw0Q,GACvBD,GAAernC,UAAYunC,GAC3BF,GAAepnC,QAAUunC,EAC3B,EACA9sQ,OAAQ,WACN,IAAIowC,EAAWs8N,GAAK,CAACtkO,GAAKskO,GAAID,GAAKC,IAAMF,GAAK,CAACF,GAAKE,GAAID,GAAKC,IAAMH,GAAK,CAACF,GAAKE,GAAID,GAAKC,IAAM,CAAC1qO,IAAKA,KAEnG,OADAwqO,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKpkO,GAAKqkO,GAAKC,GAAK,EACtCt8N,CACT,GAEF,SAASw8N,GAAcv0Q,EAAGC,GACxB6zQ,IAAM9zQ,EACN+zQ,IAAM9zQ,IACJ+zQ,EACJ,CACA,SAASQ,KACPF,GAAev0Q,MAAQ60Q,EACzB,CACA,SAASA,GAAuB50Q,EAAGC,GACjCq0Q,GAAev0Q,MAAQ80Q,GACvBN,GAAc,GAAKv0Q,EAAG,GAAKC,EAC7B,CACA,SAAS40Q,GAAkB70Q,EAAGC,GAC5B,IAAI0B,EAAK3B,EAAI,GACX4B,EAAK3B,EAAI,GACTua,EAAI,GAAK7Y,EAAKA,EAAKC,EAAKA,GAC1BqyQ,IAAMz5P,GAAK,GAAKxa,GAAK,EACrBk0Q,IAAM15P,GAAK,GAAKva,GAAK,EACrBk0Q,IAAM35P,EACN+5P,GAAc,GAAKv0Q,EAAG,GAAKC,EAC7B,CACA,SAASw0Q,KACPH,GAAev0Q,MAAQw0Q,EACzB,CACA,SAASG,KACPJ,GAAev0Q,MAAQ+0Q,EACzB,CACA,SAASH,KACPI,GAAkB,GAAK,GACzB,CACA,SAASD,GAAuB90Q,EAAGC,GACjCq0Q,GAAev0Q,MAAQg1Q,GACvBR,GAAc,GAAM,GAAKv0Q,EAAG,GAAM,GAAKC,EACzC,CACA,SAAS80Q,GAAkB/0Q,EAAGC,GAC5B,IAAI0B,EAAK3B,EAAI,GACX4B,EAAK3B,EAAI,GACTua,EAAI,GAAK7Y,EAAKA,EAAKC,EAAKA,GAC1BqyQ,IAAMz5P,GAAK,GAAKxa,GAAK,EACrBk0Q,IAAM15P,GAAK,GAAKva,GAAK,EACrBk0Q,IAAM35P,EAENu1B,KADAv1B,EAAI,GAAKxa,EAAI,GAAKC,IACP,GAAKD,GAChBo0Q,IAAM55P,GAAK,GAAKva,GAChBo0Q,IAAU,EAAJ75P,EACN+5P,GAAc,GAAKv0Q,EAAG,GAAKC,EAC7B,CACA,UCjFe,SAAS+0Q,GAAY9sP,GAClCnzB,KAAKw+D,SAAWrrC,CAClB,CACA8sP,GAAY//Q,UAAY,CACtBggR,QAAS,IACTC,YAAa,SAAqBz5O,GAChC,OAAO1mC,KAAKkgR,QAAUx5O,EAAG1mC,IAC3B,EACAk+Q,aAAc,WACZl+Q,KAAKg4O,MAAQ,CACf,EACAmmC,WAAY,WACVn+Q,KAAKg4O,MAAQzjM,GACf,EACA2jM,UAAW,WACTl4O,KAAKg3O,OAAS,CAChB,EACAmB,QAAS,WACY,IAAfn4O,KAAKg4O,OAAah4O,KAAKw+D,SAAS65K,YACpCr4O,KAAKg3O,OAASziM,GAChB,EACAvpC,MAAO,SAAeC,EAAGC,GACvB,OAAQlL,KAAKg3O,QACX,KAAK,EAEDh3O,KAAKw+D,SAAS3lD,OAAO5N,EAAGC,GACxBlL,KAAKg3O,OAAS,EACd,MAEJ,KAAK,EAEDh3O,KAAKw+D,SAAS45K,OAAOntO,EAAGC,GACxB,MAEJ,QAEIlL,KAAKw+D,SAAS3lD,OAAO5N,EAAIjL,KAAKkgR,QAASh1Q,GACvClL,KAAKw+D,SAASkhJ,IAAIz0M,EAAGC,EAAGlL,KAAKkgR,QAAS,EAAG,IAIjD,EACAttQ,OAAQ,ICzCV,IACEwtQ,GACA,GACA,GACA,GACA,GALEC,GAAY,IAAIjC,GAMhBkC,GAAe,CACjBt1Q,MAAO,GACPktO,UAAW,WACTooC,GAAat1Q,MAAQu1Q,EACvB,EACApoC,QAAS,WACHioC,IAAYI,GAAY,GAAK,IACjCF,GAAat1Q,MAAQ,EACvB,EACAkzQ,aAAc,WACZkC,IAAa,CACf,EACAjC,WAAY,WACViC,GAAa,IACf,EACAxtQ,OAAQ,WACN,IAAI/R,GAAUw/Q,GAEd,OADAA,GAAY,IAAIjC,GACTv9Q,CACT,GAEF,SAAS0/Q,GAAiBt1Q,EAAGC,GAC3Bo1Q,GAAat1Q,MAAQw1Q,GACrB,GAAM,GAAKv1Q,EAAG,GAAM,GAAKC,CAC3B,CACA,SAASs1Q,GAAYv1Q,EAAGC,GACtB,IAAMD,EAAG,IAAMC,EACfm1Q,GAAU7uQ,IAAI,GAAK,GAAK,GAAK,GAAK,KAClC,GAAKvG,EAAG,GAAKC,CACf,CACA,ICpCI,GAAiB,GAAkB,GAAkB,GAErDu1Q,GAAaC,GAAaC,GAAaC,GDkC3C,MCjCIC,GAA0B,WAC5B,SAASA,EAAW7kC,IAClB,QAAgBh8O,KAAM6gR,GACtB7gR,KAAKi8O,QAAoB,MAAVD,EAAiB,GAkFpC,SAAqBA,GACnB,IAAIj2N,EAAI9L,KAAKwX,MAAMuqN,GACnB,KAAMj2N,GAAK,GAAI,MAAM,IAAIo3N,WAAW,mBAAmB5pO,OAAOyoO,IAC9D,GAAIj2N,EAAI,GAAI,OAAO,GACnB,GAAIA,IAAM06P,GAAa,CACrB,IAAI/5Q,EAAIuT,KAAK0B,IAAI,GAAIoK,GACrB06P,GAAc16P,EACd26P,GAAc,SAAgBhlC,GAC5B,IAAIx6O,EAAI,EACRlB,KAAK0mC,GAAKg1M,EAAQ,GAClB,IAAK,IAAIx0O,EAAIw0O,EAAQ76O,OAAQK,EAAIgG,IAAKhG,EACpClB,KAAK0mC,GAAKzsB,KAAKwoB,MAAM7hC,UAAUM,GAAKwF,GAAKA,EAAIg1O,EAAQx6O,EAEzD,CACF,CACA,OAAOw/Q,EACT,CAlG6C,CAAY1kC,GACrDh8O,KAAKkgR,QAAU,IACflgR,KAAK0mC,EAAI,EACX,CAqEA,OApEA,QAAam6O,EAAY,CAAC,CACxBhgP,IAAK,cACL1+B,MAAO,SAAqBukC,GAE1B,OADA1mC,KAAKkgR,SAAWx5O,EACT1mC,IACT,GACC,CACD6gC,IAAK,eACL1+B,MAAO,WACLnC,KAAKg4O,MAAQ,CACf,GACC,CACDn3M,IAAK,aACL1+B,MAAO,WACLnC,KAAKg4O,MAAQzjM,GACf,GACC,CACD1T,IAAK,YACL1+B,MAAO,WACLnC,KAAKg3O,OAAS,CAChB,GACC,CACDn2M,IAAK,UACL1+B,MAAO,WACc,IAAfnC,KAAKg4O,QAAah4O,KAAK0mC,GAAK,KAChC1mC,KAAKg3O,OAASziM,GAChB,GACC,CACD1T,IAAK,QACL1+B,MAAO,SAAe8I,EAAGC,GACvB,OAAQlL,KAAKg3O,QACX,KAAK,EAEDh3O,KAAKi8O,QAAQ,KAAoB,GAAkBR,GAAuB,CAAC,IAAK,IAAK,MAAOxwO,EAAGC,GAC/FlL,KAAKg3O,OAAS,EACd,MAEJ,KAAK,EAEDh3O,KAAKi8O,QAAQ,KAAqB,GAAmBR,GAAuB,CAAC,IAAK,IAAK,MAAOxwO,EAAGC,GACjG,MAEJ,QAGI,GADAlL,KAAKi8O,QAAQ,KAAqB,GAAmBR,GAAuB,CAAC,IAAK,IAAK,MAAOxwO,EAAGC,GAC7FlL,KAAKkgR,UAAYS,IAAe3gR,KAAKi8O,UAAYykC,GAAa,CAChE,IAAIxhQ,EAAIlf,KAAKkgR,QACTpiQ,EAAI9d,KAAK0mC,EACb1mC,KAAK0mC,EAAI,GACT1mC,KAAKi8O,QAAQ,KAAqB,GAAmBR,GAAuB,CAAC,MAAO,IAAK,IAAK,YAAa,IAAK,IAAK,YAAa,OAAQv8N,EAAGA,EAAGA,GAAI,EAAIA,EAAGA,EAAGA,EAAG,EAAIA,GACrKyhQ,GAAczhQ,EACdwhQ,GAAc1gR,KAAKi8O,QACnB2kC,GAAc5gR,KAAK0mC,EACnB1mC,KAAK0mC,EAAI5oB,CACX,CACA9d,KAAK0mC,GAAKk6O,GAIlB,GACC,CACD//O,IAAK,SACL1+B,MAAO,WACL,IAAIyQ,EAAS5S,KAAK0mC,EAElB,OADA1mC,KAAK0mC,EAAI,GACF9zB,EAAO/R,OAAS+R,EAAS,IAClC,KAEKiuQ,CACT,CA5E8B,GA8E9B,SAAS,GAAOnlC,GACd,IAAIx6O,EAAI,EACRlB,KAAK0mC,GAAKg1M,EAAQ,GAClB,IAAK,IAAIx0O,EAAIw0O,EAAQ76O,OAAQK,EAAIgG,IAAKhG,EACpClB,KAAK0mC,GAAK9lC,UAAUM,GAAKw6O,EAAQx6O,EAErC,CClFe,SAAS,GAAC4/Q,EAAY3tP,GACnC,IAEE4tP,EACAC,EAHEhlC,EAAS,EACXmkC,EAAc,IAGhB,SAASt5Q,EAAK89B,GAKZ,OAJIA,IACyB,mBAAhBw7O,GAA4Ba,EAAcb,aAAaA,EAAY9+Q,MAAMrB,KAAMY,YAC1F,GAAO+jC,EAAQo8O,EAAiBC,KAE3BA,EAAcpuQ,QACvB,CA2CA,OA1CA/L,EAAK+hD,KAAO,SAAUjkB,GAEpB,OADA,GAAOA,EAAQo8O,EAAiB,KACzB,GAASnuQ,QAClB,EACA/L,EAAKo1L,QAAU,SAAUt3J,GAEvB,OADA,GAAOA,EAAQo8O,EAAiB,KACzB,GAAYnuQ,QACrB,EACA/L,EAAKgmB,OAAS,SAAU8X,GAEtB,OADA,GAAOA,EAAQo8O,EAAiB,KACzB,GAAWnuQ,QACpB,EACA/L,EAAKm8C,SAAW,SAAUre,GAExB,OADA,GAAOA,EAAQo8O,EAAiB,KACzB,GAAanuQ,QACtB,EACA/L,EAAKi6Q,WAAa,SAAUp6O,GAC1B,OAAK9lC,UAAUC,QACfkgR,EAAwB,MAALr6O,GAAao6O,EAAa,KAAM,KAAaA,EAAap6O,GAAGu2L,OACzEp2N,GAFuBi6Q,CAGhC,EACAj6Q,EAAKssB,QAAU,SAAUuT,GACvB,OAAK9lC,UAAUC,QACfmgR,EAAqB,MAALt6O,GAAavT,EAAU,KAAM,IAAI0tP,GAAW7kC,IAAW,IAAIikC,GAAY9sP,EAAUuT,GACtE,mBAAhBy5O,GAA4Ba,EAAcb,YAAYA,GAC1Dt5Q,GAHuBssB,CAIhC,EACAtsB,EAAKs5Q,YAAc,SAAUz5O,GAC3B,OAAK9lC,UAAUC,QACfs/Q,EAA2B,mBAANz5O,EAAmBA,GAAKs6O,EAAcb,aAAaz5O,IAAKA,GACtE7/B,GAFuBs5Q,CAGhC,EACAt5Q,EAAKm1O,OAAS,SAAUt1M,GACtB,IAAK9lC,UAAUC,OAAQ,OAAOm7O,EAC9B,GAAS,MAALt1M,EAAWs1M,EAAS,SAAU,CAChC,IAAIj2N,EAAI9L,KAAKwX,MAAMiV,GACnB,KAAM3gB,GAAK,GAAI,MAAM,IAAIo3N,WAAW,mBAAmB5pO,OAAOmzB,IAC9Ds1M,EAASj2N,CACX,CAEA,OADgB,OAAZoN,IAAkB6tP,EAAgB,IAAIH,GAAW7kC,IAC9Cn1O,CACT,EACOA,EAAKi6Q,WAAWA,GAAY9kC,OAAOA,GAAQ7oN,QAAQA,EAC5D,CC9De,SAAS,KACtB,IACE+C,EADEmJ,EAAQ,GAEZ,MAAO,CACLr0B,MAAO,SAAeC,EAAGC,EAAG6K,GAC1BmgB,EAAK31B,KAAK,CAAC0K,EAAGC,EAAG6K,GACnB,EACAmiO,UAAW,WACT74M,EAAM9+B,KAAK21B,EAAO,GACpB,EACAiiN,QAAS,GACT8oC,OAAQ,WACF5hP,EAAMx+B,OAAS,GAAGw+B,EAAM9+B,KAAK8+B,EAAMpY,MAAM1T,OAAO8rB,EAAMzU,SAC5D,EACAhY,OAAQ,WACN,IAAIA,EAASysB,EAGb,OAFAA,EAAQ,GACRnJ,EAAO,KACAtjB,CACT,EAEJ,CCrBe,SAAS,GAACuL,EAAG8E,GAC1B,OAAO,GAAI9E,EAAE,GAAK8E,EAAE,IAAM,IAAW,GAAI9E,EAAE,GAAK8E,EAAE,IAAM,EAC1D,CCDA,SAASi+P,GAAal2Q,EAAO0V,EAAQ6jB,EAAOmxB,GAC1C11D,KAAKiL,EAAID,EACThL,KAAKylB,EAAI/E,EACT1gB,KAAKolB,EAAImf,EACTvkC,KAAKkE,EAAIwxD,EACT11D,KAAKiS,GAAI,EACTjS,KAAK4uB,EAAI5uB,KAAKoe,EAAI,IACpB,CAKe,SAAS,GAACgD,EAAU+/P,EAAqBC,EAAavhC,EAAa5iB,GAChF,IAEE/7N,EACA0tB,EAHEyyP,EAAU,GACZpsQ,EAAO,GAwBT,GArBAmM,EAAShZ,SAAQ,SAAUoX,GACzB,MAAKoP,EAAIpP,EAAQ3e,OAAS,IAAM,GAAhC,CACA,IAAI+tB,EAGF3jB,EAFAyqB,EAAKlW,EAAQ,GACbiM,EAAKjM,EAAQoP,GAEf,GAAI0yP,GAAW5rP,EAAIjK,GAAK,CACtB,IAAKiK,EAAG,KAAOjK,EAAG,GAAI,CAEpB,IADAwxM,EAAOib,YACFh3O,EAAI,EAAGA,EAAI0tB,IAAK1tB,EAAG+7N,EAAOjyN,OAAO0qB,EAAKlW,EAAQte,IAAI,GAAIw0B,EAAG,IAE9D,YADAunM,EAAOkb,SAET,CAEA1sN,EAAG,IAAM,EAAI,EACf,CACA41P,EAAQ9gR,KAAK0K,EAAI,IAAIi2Q,GAAaxrP,EAAIlW,EAAS,MAAM,IACrDvK,EAAK1U,KAAK0K,EAAEma,EAAI,IAAI87P,GAAaxrP,EAAI,KAAMzqB,GAAG,IAC9Co2Q,EAAQ9gR,KAAK0K,EAAI,IAAIi2Q,GAAaz1P,EAAIjM,EAAS,MAAM,IACrDvK,EAAK1U,KAAK0K,EAAEma,EAAI,IAAI87P,GAAaz1P,EAAI,KAAMxgB,GAAG,GAlBL,CAmB3C,IACKo2Q,EAAQxgR,OAAb,CAIA,IAHAoU,EAAK1C,KAAK4uQ,GACV,GAAKE,GACL,GAAKpsQ,GACA/T,EAAI,EAAG0tB,EAAI3Z,EAAKpU,OAAQK,EAAI0tB,IAAK1tB,EACpC+T,EAAK/T,GAAGgD,EAAIk9Q,GAAeA,EAK7B,IAHA,IACE1gQ,EACA1V,EAFE0b,EAAQ26P,EAAQ,KAGV,CAIR,IAFA,IAAI55Q,EAAUif,EACZ66P,GAAY,EACP95Q,EAAQwK,OAAQxK,EAAUA,EAAQmnB,KAAOlI,EAAO,OACvDhG,EAASjZ,EAAQge,EACjBw3M,EAAOib,YACP,EAAG,CAED,GADAzwO,EAAQwK,EAAIxK,EAAQ2d,EAAEnT,GAAI,EACtBxK,EAAQvD,EAAG,CACb,GAAIq9Q,EACF,IAAKrgR,EAAI,EAAG0tB,EAAIlO,EAAO7f,OAAQK,EAAI0tB,IAAK1tB,EAAG+7N,EAAOjyN,OAAOA,EAAQ0V,EAAOxf,IAAI,GAAI8J,EAAM,SAEtF60O,EAAYp4O,EAAQwD,EAAGxD,EAAQmnB,EAAE3jB,EAAG,EAAGgyN,GAEzCx1N,EAAUA,EAAQmnB,CACpB,KAAO,CACL,GAAI2yP,EAEF,IADA7gQ,EAASjZ,EAAQ2W,EAAEqH,EACdvkB,EAAIwf,EAAO7f,OAAS,EAAGK,GAAK,IAAKA,EAAG+7N,EAAOjyN,OAAOA,EAAQ0V,EAAOxf,IAAI,GAAI8J,EAAM,SAEpF60O,EAAYp4O,EAAQwD,EAAGxD,EAAQ2W,EAAEnT,GAAI,EAAGgyN,GAE1Cx1N,EAAUA,EAAQ2W,CACpB,CAEAsC,GADAjZ,EAAUA,EAAQ2d,GACDK,EACjB87P,GAAaA,CACf,QAAU95Q,EAAQwK,GAClBgrN,EAAOkb,SACT,CAxC2B,CAyC7B,CACA,SAAS,GAAK51M,GACZ,GAAM3T,EAAI2T,EAAM1hC,OAAhB,CAKA,IAJA,IAAI+tB,EAGF3L,EAFA/hB,EAAI,EACJid,EAAIokB,EAAM,KAEHrhC,EAAI0tB,GACXzQ,EAAEyQ,EAAI3L,EAAIsf,EAAMrhC,GAChB+hB,EAAE7E,EAAID,EACNA,EAAI8E,EAEN9E,EAAEyQ,EAAI3L,EAAIsf,EAAM,GAChBtf,EAAE7E,EAAID,CAXyB,CAYjC,CC9FO,SAASqjQ,GAAUC,GACxB,MAAO,CAAC,GAAMA,EAAU,GAAIA,EAAU,IAAK,GAAKA,EAAU,IAC5D,CACO,SAASA,GAAUD,GACxB,IAAIhkP,EAASgkP,EAAU,GACrBz9N,EAAMy9N,EAAU,GAChBE,EAAS,GAAI39N,GACf,MAAO,CAAC29N,EAAS,GAAIlkP,GAASkkP,EAAS,GAAIlkP,GAAS,GAAIumB,GAC1D,CACO,SAAS49N,GAAaxjQ,EAAG8E,GAC9B,OAAO9E,EAAE,GAAK8E,EAAE,GAAK9E,EAAE,GAAK8E,EAAE,GAAK9E,EAAE,GAAK8E,EAAE,EAC9C,CACO,SAAS2+P,GAAezjQ,EAAG8E,GAChC,MAAO,CAAC9E,EAAE,GAAK8E,EAAE,GAAK9E,EAAE,GAAK8E,EAAE,GAAI9E,EAAE,GAAK8E,EAAE,GAAK9E,EAAE,GAAK8E,EAAE,GAAI9E,EAAE,GAAK8E,EAAE,GAAK9E,EAAE,GAAK8E,EAAE,GACvF,CAGO,SAAS4+P,GAAoB1jQ,EAAG8E,GACrC9E,EAAE,IAAM8E,EAAE,GAAI9E,EAAE,IAAM8E,EAAE,GAAI9E,EAAE,IAAM8E,EAAE,EACxC,CACO,SAAS6+P,GAAe5oP,EAAQxyB,GACrC,MAAO,CAACwyB,EAAO,GAAKxyB,EAAGwyB,EAAO,GAAKxyB,EAAGwyB,EAAO,GAAKxyB,EACpD,CAGO,SAASq7Q,GAA0Bh8P,GACxC,IAAIT,EAAI,GAAKS,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IAClDA,EAAE,IAAMT,EAAGS,EAAE,IAAMT,EAAGS,EAAE,IAAMT,CAChC,CC1BA,SAAS08P,GAAUh3Q,GACjB,OAAO,GAAIA,EAAM,KAAO,GAAKA,EAAM,GAAK,GAAKA,EAAM,MAAQ,GAAIA,EAAM,IAAM,IAAM,GAAM,GACzF,CCJA,IAAI,GAAuB,SAAyBi3Q,IACpD,SAAS,GAA2B78P,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,GAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,GAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,GAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAClL,SAAS+oD,GAAQ7wC,GACf,IAAI5S,EAAWD,EAAOh8L,EACtB,OAAO,UAAyB,SAAkBi8B,GAChD,cAAkBA,EAASlpC,KAAOkpC,EAASjpC,MACzC,KAAK,EACHipM,EAAY,GAA2B4S,GACvC5yK,EAASlpC,KAAO,EAChBkpM,EAAU1gN,IACZ,KAAK,EACH,IAAKygN,EAAQC,EAAU5vM,KAAK0pB,KAAM,CAChCkmB,EAASjpC,KAAO,EAChB,KACF,CAEA,OADAgN,EAAQg8L,EAAMp8N,MACPq8D,EAAS/G,cAAcl1B,EAAO,KAAM,GAC7C,KAAK,EACHi8B,EAASjpC,KAAO,EAChB,MACF,KAAK,EACHipC,EAASjpC,KAAO,GAChB,MACF,KAAK,GACHipC,EAASlpC,KAAO,GAChBkpC,EAASl6D,GAAKk6D,EAAgB,MAAE,GAChCggK,EAAUt6N,EAAEs6D,EAASl6D,IACvB,KAAK,GAGH,OAFAk6D,EAASlpC,KAAO,GAChBkpM,EAAUn7N,IACHm7D,EAASjH,OAAO,IACzB,KAAK,GACL,IAAK,MACH,OAAOiH,EAASx5D,OAEtB,GAAG,GAAS,KAAM,CAAC,CAAC,EAAG,GAAI,GAAI,KACjC,CACe,SAAS,GAAMosO,GAC5B,OAAO3wM,MAAMnH,KAAK2oP,GAAQ7wC,GAC5B,CCrCe,SAAS,GAAC8wC,EAAcC,EAAUtiC,EAAan5N,GAC5D,OAAO,SAAU07P,GACf,IAIExiE,EACAx+L,EACAu+L,EANEzpL,EAAOisP,EAASC,GAClBC,EAAa,KACbC,EAAWH,EAASE,GACpBE,GAAiB,EAIfttQ,EAAO,CACTjK,MAAOA,EACPktO,UAAWA,EACXC,QAASA,EACT+lC,aAAc,WACZjpQ,EAAKjK,MAAQw3Q,EACbvtQ,EAAKijO,UAAYuqC,EACjBxtQ,EAAKkjO,QAAUuqC,EACfthQ,EAAW,GACXw+L,EAAU,EACZ,EACAu+D,WAAY,WACVlpQ,EAAKjK,MAAQA,EACbiK,EAAKijO,UAAYA,EACjBjjO,EAAKkjO,QAAUA,EACf/2N,EAAW,GAAMA,GACjB,IAAIggQ,EFxBG,SAAUxhE,EAAS50M,GAChC,IAAIwyB,EAASwkP,GAAUh3Q,GACrB+4C,EAAM/4C,EAAM,GACZ23Q,EAAS,GAAI5+N,GACbirL,EAAS,CAAC,GAAIxxM,IAAU,GAAIA,GAAS,GACrC9V,EAAQ,EACRk7P,EAAU,EACRx2P,EAAM,IAAIgyP,GACC,IAAXuE,EAAc5+N,EAAM,GAAS,IAA6B,IAAZ4+N,IAAe5+N,GAAO,GAAS,IACjF,IAAK,IAAI7iD,EAAI,EAAG0tB,EAAIgxL,EAAQ/+M,OAAQK,EAAI0tB,IAAK1tB,EAC3C,GAAM6U,GAAK4pM,EAAOC,EAAQ1+M,IAAIL,OAQ9B,IAPA,IAAI8+M,EACF5pM,EACA8sQ,EAASljE,EAAK5pM,EAAI,GAClB+sQ,EAAUd,GAAUa,GACpBj/N,EAAOi/N,EAAO,GAAK,EAAIvE,GACvByE,EAAU,GAAIn/N,GACdo/N,EAAU,GAAIp/N,GACP18C,EAAI,EAAGA,EAAI6O,IAAK7O,EAAG47Q,EAAUG,EAASF,EAAUG,EAASF,EAAUG,EAASN,EAAS7lP,EAAQ,CACpG,IAAIA,EAAS2iL,EAAKz4M,GAChB+7Q,EAAUjB,GAAUhlP,GACpBomP,EAAOpmP,EAAO,GAAK,EAAIshP,GACvB4E,EAAU,GAAIE,GACdD,EAAU,GAAIC,GACd/oO,EAAQ4oO,EAAUH,EAClBnqE,EAAOt+J,GAAS,EAAI,GAAK,EACzBgpO,EAAW1qE,EAAOt+J,EAClBipO,EAAeD,EAAW,GAC1B38Q,EAAIq8Q,EAAUG,EAMhB,GALA92P,EAAI5a,IAAI,GAAM9K,EAAIiyM,EAAO,GAAI0qE,GAAWL,EAAUG,EAAUz8Q,EAAI,GAAI28Q,KACpE37P,GAAS47P,EAAejpO,EAAQs+J,EAAO,GAAMt+J,EAIzCipO,EAAeR,GAAWtlP,EAASylP,GAAWzlP,EAAQ,CACxD,IAAIkiL,EAAMkiE,GAAeH,GAAUoB,GAASpB,GAAUzkP,IACtD+kP,GAA0BriE,GAC1B,IAAI3vL,EAAe6xP,GAAe5yC,EAAQtvB,GAC1CqiE,GAA0BhyP,GAC1B,IAAIwzP,GAAUD,EAAejpO,GAAS,GAAK,EAAI,GAAK,GAAKtqB,EAAa,KAClEg0B,EAAMw/N,GAAUx/N,IAAQw/N,IAAW7jE,EAAI,IAAMA,EAAI,OACnDkjE,GAAWU,EAAejpO,GAAS,EAAI,GAAK,EAEhD,CACF,CAcF,OAAQ3yB,GAAS,IAAWA,EAAQ,IAAW0E,GAAO,IAAsB,EAAVw2P,CACpE,CEnC0BY,CAAgB5jE,EAASl5L,GACvCtF,EAASvgB,QACN0hR,IAAgBH,EAAKlE,eAAgBqE,GAAiB,GAC3D,GAAWnhQ,EAAU+/P,GAAqBC,EAAavhC,EAAauiC,IAC3DhB,IACJmB,IAAgBH,EAAKlE,eAAgBqE,GAAiB,GAC3DH,EAAKlqC,YACL2H,EAAY,KAAM,KAAM,EAAGuiC,GAC3BA,EAAKjqC,WAEHoqC,IAAgBH,EAAKjE,aAAcoE,GAAiB,GACxDnhQ,EAAWw+L,EAAU,IACvB,EACA29D,OAAQ,WACN6E,EAAKlE,eACLkE,EAAKlqC,YACL2H,EAAY,KAAM,KAAM,EAAGuiC,GAC3BA,EAAKjqC,UACLiqC,EAAKjE,YACP,GAEF,SAASnzQ,EAAMwyB,EAAQumB,GACjBm+N,EAAa1kP,EAAQumB,IAAMq+N,EAAKp3Q,MAAMwyB,EAAQumB,EACpD,CACA,SAAS0/N,EAAUjmP,EAAQumB,GACzB7tB,EAAKlrB,MAAMwyB,EAAQumB,EACrB,CACA,SAASm0L,IACPjjO,EAAKjK,MAAQy4Q,EACbvtP,EAAKgiN,WACP,CACA,SAASC,IACPljO,EAAKjK,MAAQA,EACbkrB,EAAKiiN,SACP,CACA,SAASqqC,EAAUhlP,EAAQumB,GACzB47J,EAAKp/M,KAAK,CAACi9B,EAAQumB,IACnBu+N,EAASt3Q,MAAMwyB,EAAQumB,EACzB,CACA,SAAS0+N,IACPH,EAASpqC,YACTv4B,EAAO,EACT,CACA,SAAS+iE,IACPF,EAAU7iE,EAAK,GAAG,GAAIA,EAAK,GAAG,IAC9B2iE,EAASnqC,UACT,IAEEj3O,EAEA6U,EACAyJ,EACAxU,EANEqwM,EAAQinE,EAASjnE,QACnBqoE,EAAerB,EAAWzvQ,SAE1Bgc,EAAI80P,EAAa7iR,OAOnB,GAHA8+M,EAAK14L,MACL24L,EAAQr/M,KAAKo/M,GACbA,EAAO,KACF/wL,EAGL,GAAY,EAARysL,GAEF,IAAKtlM,GADLyJ,EAAUkkQ,EAAa,IACN7iR,OAAS,GAAK,EAAG,CAGhC,IAFK0hR,IAAgBH,EAAKlE,eAAgBqE,GAAiB,GAC3DH,EAAKlqC,YACAh3O,EAAI,EAAGA,EAAI6U,IAAK7U,EAAGkhR,EAAKp3Q,OAAOA,EAAQwU,EAAQte,IAAI,GAAI8J,EAAM,IAClEo3Q,EAAKjqC,SACP,OAMEvpN,EAAI,GAAa,EAARysL,GAAWqoE,EAAanjR,KAAKmjR,EAAaz8P,MAAM1T,OAAOmwQ,EAAa94P,UACjFxJ,EAAS7gB,KAAKmjR,EAAanzQ,OAAOozQ,IACpC,CACA,OAAO1uQ,CACT,CACF,CACA,SAAS0uQ,GAAankQ,GACpB,OAAOA,EAAQ3e,OAAS,CAC1B,CAIA,SAASsgR,GAAoBhjQ,EAAG8E,GAC9B,QAAS9E,EAAIA,EAAElT,GAAG,GAAK,EAAIkT,EAAE,GAAK,GAAS,GAAU,GAASA,EAAE,MAAQ8E,EAAIA,EAAEhY,GAAG,GAAK,EAAIgY,EAAE,GAAK,GAAS,GAAU,GAASA,EAAE,GACjI,CClHA,OAAe,IAAK,WAClB,OAAO,CACT,IAKA,SAA8Bg6M,GAC5B,IAGE1C,EAHEuoD,EAAUvuO,IACZqP,EAAOrP,IACPqvO,EAAQrvO,IAGV,MAAO,CACL2jM,UAAW,WACTjb,EAAOib,YACP3d,EAAS,CACX,EACAvvN,MAAO,SAAei4Q,EAASG,GAC7B,IAAIS,EAAQZ,EAAU,EAAI,IAAM,GAC9B5oO,EAAQ,GAAI4oO,EAAUH,GACpB,GAAIzoO,EAAQ,IAAM,IAEpB4iL,EAAOjyN,MAAM83Q,EAASl/N,GAAQA,EAAOw/N,GAAQ,EAAI,EAAI,IAAU,IAC/DnmD,EAAOjyN,MAAM44Q,EAAOhgO,GACpBq5K,EAAOkb,UACPlb,EAAOib,YACPjb,EAAOjyN,MAAM64Q,EAAOjgO,GACpBq5K,EAAOjyN,MAAMi4Q,EAASr/N,GACtB22K,EAAS,GACAqpD,IAAUC,GAASxpO,GAAS,KAEjC,GAAIyoO,EAAUc,GAAS,KAASd,GAAWc,EAAQ,IACnD,GAAIX,EAAUY,GAAS,KAASZ,GAAWY,EAAQ,IACvDjgO,EAoBR,SAAmCk/N,EAASl/N,EAAMq/N,EAASG,GACzD,IAAIJ,EACFG,EACAW,EAAoB,GAAIhB,EAAUG,GACpC,OAAO,GAAIa,GAAqB,GAAUprP,IAAM,GAAIkrB,IAASu/N,EAAU,GAAIC,IAAS,GAAIH,GAAW,GAAIG,IAASJ,EAAU,GAAIp/N,IAAS,GAAIk/N,KAAaE,EAAUG,EAAUW,KAAuBlgO,EAAOw/N,GAAQ,CACpN,CAzBeW,CAA0BjB,EAASl/N,EAAMq/N,EAASG,GACzDnmD,EAAOjyN,MAAM44Q,EAAOhgO,GACpBq5K,EAAOkb,UACPlb,EAAOib,YACPjb,EAAOjyN,MAAM64Q,EAAOjgO,GACpB22K,EAAS,GAEX0C,EAAOjyN,MAAM83Q,EAAUG,EAASr/N,EAAOw/N,GACvCQ,EAAQC,CACV,EACA1rC,QAAS,WACPlb,EAAOkb,UACP2qC,EAAUl/N,EAAOrP,GACnB,EACA8mK,MAAO,WACL,OAAO,EAAIkf,CACb,EAEJ,IAQA,SAAqCjhM,EAAMC,EAAIuB,EAAWmiM,GACxD,IAAIl5K,EACJ,GAAY,MAARzqB,EACFyqB,EAAMjpB,EAAY,GAClBmiM,EAAOjyN,OAAO,GAAI+4C,GAClBk5K,EAAOjyN,MAAM,EAAG+4C,GAChBk5K,EAAOjyN,MAAM,GAAI+4C,GACjBk5K,EAAOjyN,MAAM,GAAI,GACjBiyN,EAAOjyN,MAAM,IAAK+4C,GAClBk5K,EAAOjyN,MAAM,GAAI+4C,GACjBk5K,EAAOjyN,OAAO,IAAK+4C,GACnBk5K,EAAOjyN,OAAO,GAAI,GAClBiyN,EAAOjyN,OAAO,GAAI+4C,QACb,GAAI,GAAIzqB,EAAK,GAAKC,EAAG,IAAM,GAAS,CACzC,IAAIiE,EAASlE,EAAK,GAAKC,EAAG,GAAK,IAAM,GACrCwqB,EAAMjpB,EAAY0C,EAAS,EAC3By/L,EAAOjyN,OAAOwyB,EAAQumB,GACtBk5K,EAAOjyN,MAAM,EAAG+4C,GAChBk5K,EAAOjyN,MAAMwyB,EAAQumB,EACvB,MACEk5K,EAAOjyN,MAAMuuB,EAAG,GAAIA,EAAG,GAE3B,GAhFsD,EAAE,IAAK,KCEtD,SAASyqP,GAAa/mD,EAAQjvJ,EAAQ3zB,EAAOvf,EAAW12B,EAAIE,GACjE,GAAK+1C,EAAL,CACA,IAAI4pO,EAAY,GAAIj2M,GAClBk2M,EAAY,GAAIl2M,GAChBvmB,EAAO3sB,EAAYuf,EACX,MAANj2C,GACFA,EAAK4pE,EAASlzC,EAAY,GAC1Bx2B,EAAK0pE,EAASvmB,EAAO,IAErBrjD,EAAK+/Q,GAAaF,EAAW7/Q,GAC7BE,EAAK6/Q,GAAaF,EAAW3/Q,IACzBw2B,EAAY,EAAI12B,EAAKE,EAAKF,EAAKE,KAAIF,GAAM02B,EAAY,KAE3D,IAAK,IAAI9vB,EAAOjH,EAAIK,EAAI02B,EAAY,EAAI/2B,EAAIO,EAAKP,EAAIO,EAAIP,GAAK0jD,EAC5Dz8C,EAAQw2Q,GAAU,CAACyC,GAAYC,EAAY,GAAIngR,IAAKmgR,EAAY,GAAIngR,KACpEk5N,EAAOjyN,MAAMA,EAAM,GAAIA,EAAM,GAdb,CAgBpB,CAGA,SAASm5Q,GAAaF,EAAWj5Q,IAC/BA,EAAQy2Q,GAAUz2Q,IAAc,IAAMi5Q,EACtClC,GAA0B/2Q,GAC1B,IAAIgjE,EAAS,IAAMhjE,EAAM,IACzB,SAAUA,EAAM,GAAK,GAAKgjE,EAASA,GAAU,GAAM,IAAW,EAChE,CC1BA,IAAIo2M,GAAU,IACZC,IAAWD,GAKE,SAASE,GAAc53P,EAAIC,EAAIvK,EAAIC,GAChD,SAAS9N,EAAQtJ,EAAGC,GAClB,OAAOwhB,GAAMzhB,GAAKA,GAAKmX,GAAMuK,GAAMzhB,GAAKA,GAAKmX,CAC/C,CACA,SAASw9N,EAAYvmN,EAAMC,EAAIuB,EAAWmiM,GACxC,IAAI9+M,EAAI,EACN4M,EAAK,EACP,GAAY,MAARuO,IAAiBnb,EAAIomQ,EAAOjrP,EAAMwB,OAAiB/P,EAAKw5P,EAAOhrP,EAAIuB,KAAe0pP,EAAalrP,EAAMC,GAAM,EAAIuB,EAAY,EAC7H,GAAGmiM,EAAOjyN,MAAY,IAANmT,GAAiB,IAANA,EAAUuO,EAAKtK,EAAIjE,EAAI,EAAIkE,EAAKsK,UAAaxO,GAAKA,EAAI2c,EAAY,GAAK,KAAO/P,QAEzGkyM,EAAOjyN,MAAMuuB,EAAG,GAAIA,EAAG,GAE3B,CACA,SAASgrP,EAAOnmQ,EAAG0c,GACjB,OAAO,GAAI1c,EAAE,GAAKsO,GAAM,GAAUoO,EAAY,EAAI,EAAI,EAAI,GAAI1c,EAAE,GAAKgE,GAAM,GAAU0Y,EAAY,EAAI,EAAI,EAAI,GAAI1c,EAAE,GAAKuO,GAAM,GAAUmO,EAAY,EAAI,EAAI,EAAIA,EAAY,EAAI,EAAI,CACtL,CAEA,SAASqmP,EAAoBhjQ,EAAG8E,GAC9B,OAAOuhQ,EAAarmQ,EAAElT,EAAGgY,EAAEhY,EAC7B,CACA,SAASu5Q,EAAarmQ,EAAG8E,GACvB,IAAIwhQ,EAAKF,EAAOpmQ,EAAG,GACjB06B,EAAK0rO,EAAOthQ,EAAG,GACjB,OAAOwhQ,IAAO5rO,EAAK4rO,EAAK5rO,EAAY,IAAP4rO,EAAWxhQ,EAAE,GAAK9E,EAAE,GAAY,IAAPsmQ,EAAWtmQ,EAAE,GAAK8E,EAAE,GAAY,IAAPwhQ,EAAWtmQ,EAAE,GAAK8E,EAAE,GAAKA,EAAE,GAAK9E,EAAE,EACnH,CACA,OAAO,SAAU8+M,GACf,IAEE77M,EACAw+L,EACAD,EACA+kE,EACAC,EACAC,EAEAC,EACAC,EACAC,EAEAxoP,EACA8+K,EAdE2pE,EAAe/nD,EACjBgoD,EAAe,KAcbC,EAAa,CACfl6Q,MAAOA,EACPktO,UA6CF,WACEgtC,EAAWl6Q,MAAQm6Q,EACfvlE,GAASA,EAAQr/M,KAAKo/M,EAAO,IACjCpjL,GAAQ,EACRwoP,GAAK,EACLF,EAAKC,EAAKvwO,GACZ,EAlDE4jM,QAuDF,WACM/2N,IACF+jQ,EAAUT,EAAKC,GACXC,GAAOG,GAAIE,EAAahE,SAC5B7/P,EAAS7gB,KAAK0kR,EAAaryQ,WAE7BsyQ,EAAWl6Q,MAAQA,EACf+5Q,GAAIC,EAAa7sC,SACvB,EA9DE+lC,aAsBF,WACE8G,EAAeC,EAAc7jQ,EAAW,GAAIw+L,EAAU,GAAIvE,GAAQ,CACpE,EAvBE8iE,WAwBF,WACE,IAAIiD,EApBN,WAEE,IADA,IAAIwB,EAAU,EACL1hR,EAAI,EAAG0tB,EAAIgxL,EAAQ/+M,OAAQK,EAAI0tB,IAAK1tB,EAC3C,IAAK,IAAgE84C,EAAIjvB,EAAhE40L,EAAOC,EAAQ1+M,GAAIgG,EAAI,EAAG6O,EAAI4pM,EAAK9+M,OAAQmK,EAAQ20M,EAAK,GAAYniM,EAAKxS,EAAM,GAAI+R,EAAK/R,EAAM,GAAI9D,EAAI6O,IAAK7O,EAClH8yC,EAAKx8B,EAAIuN,EAAKhO,EAAqBS,GAAjBxS,EAAQ20M,EAAKz4M,IAAe,GAAI6V,EAAK/R,EAAM,GACzD+f,GAAM1I,EACJtF,EAAKsF,IAAO7E,EAAKw8B,IAAO33B,EAAK0I,IAAOhO,EAAKgO,IAAO2B,EAAKstB,MAAO4oO,EAE5D7lQ,GAAMsF,IAAO7E,EAAKw8B,IAAO33B,EAAK0I,IAAOhO,EAAKgO,IAAO2B,EAAKstB,MAAO4oO,EAIvE,OAAOA,CACT,CAOoBwC,GAChBC,EAAchqE,GAAS+lE,EACvB7sQ,GAAW6M,EAAW,GAAMA,IAAWvgB,QACrCwkR,GAAe9wQ,KACjB0oN,EAAOihD,eACHmH,IACFpoD,EAAOib,YACP2H,EAAY,KAAM,KAAM,EAAG5iB,GAC3BA,EAAOkb,WAEL5jO,GACF,GAAW6M,EAAU+/P,EAAqBC,EAAavhC,EAAa5iB,GAEtEA,EAAOkhD,cAET6G,EAAe/nD,EAAQ77M,EAAWw+L,EAAUD,EAAO,IACrD,GAvCA,SAAS30M,EAAMC,EAAGC,GACZqJ,EAAQtJ,EAAGC,IAAI85Q,EAAah6Q,MAAMC,EAAGC,EAC3C,CA0DA,SAASi6Q,EAAUl6Q,EAAGC,GACpB,IAAI+G,EAAIsC,EAAQtJ,EAAGC,GAEnB,GADI00M,GAASD,EAAKp/M,KAAK,CAAC0K,EAAGC,IACvBqxB,EACFmoP,EAAMz5Q,EAAG05Q,EAAMz5Q,EAAG05Q,EAAM3yQ,EACxBsqB,GAAQ,EACJtqB,IACF+yQ,EAAa9sC,YACb8sC,EAAah6Q,MAAMC,EAAGC,SAGxB,GAAI+G,GAAK8yQ,EAAIC,EAAah6Q,MAAMC,EAAGC,OAAQ,CACzC,IAAIiT,EAAI,CAAC0mQ,EAAK5qQ,KAAKE,IAAIkqQ,GAASpqQ,KAAKC,IAAIkqQ,GAASS,IAAMC,EAAK7qQ,KAAKE,IAAIkqQ,GAASpqQ,KAAKC,IAAIkqQ,GAASU,KAC/F7hQ,EAAI,CAAChY,EAAIgP,KAAKE,IAAIkqQ,GAASpqQ,KAAKC,IAAIkqQ,GAASn5Q,IAAKC,EAAI+O,KAAKE,IAAIkqQ,GAASpqQ,KAAKC,IAAIkqQ,GAASl5Q,MCpIvF,SAAUiT,EAAG8E,EAAGyJ,EAAIC,EAAIvK,EAAIC,GACzC,IAQEnD,EAREmI,EAAKlJ,EAAE,GACTmJ,EAAKnJ,EAAE,GAGP/Z,EAAK,EACLE,EAAK,EACLsI,EAJKqW,EAAE,GAIGoE,EACVxa,EAJKoW,EAAE,GAIGqE,EAGZ,GADApI,EAAIwN,EAAKrF,EACJza,KAAMsS,EAAI,GAAf,CAEA,GADAA,GAAKtS,EACDA,EAAK,EAAG,CACV,GAAIsS,EAAI9a,EAAI,OACR8a,EAAI5a,IAAIA,EAAK4a,EACnB,MAAO,GAAItS,EAAK,EAAG,CACjB,GAAIsS,EAAI5a,EAAI,OACR4a,EAAI9a,IAAIA,EAAK8a,EACnB,CAEA,GADAA,EAAIkD,EAAKiF,EACJza,KAAMsS,EAAI,GAAf,CAEA,GADAA,GAAKtS,EACDA,EAAK,EAAG,CACV,GAAIsS,EAAI5a,EAAI,OACR4a,EAAI9a,IAAIA,EAAK8a,EACnB,MAAO,GAAItS,EAAK,EAAG,CACjB,GAAIsS,EAAI9a,EAAI,OACR8a,EAAI5a,IAAIA,EAAK4a,EACnB,CAEA,GADAA,EAAIyN,EAAKrF,EACJza,KAAMqS,EAAI,GAAf,CAEA,GADAA,GAAKrS,EACDA,EAAK,EAAG,CACV,GAAIqS,EAAI9a,EAAI,OACR8a,EAAI5a,IAAIA,EAAK4a,EACnB,MAAO,GAAIrS,EAAK,EAAG,CACjB,GAAIqS,EAAI5a,EAAI,OACR4a,EAAI9a,IAAIA,EAAK8a,EACnB,CAEA,GADAA,EAAImD,EAAKiF,EACJza,KAAMqS,EAAI,GAAf,CAEA,GADAA,GAAKrS,EACDA,EAAK,EAAG,CACV,GAAIqS,EAAI5a,EAAI,OACR4a,EAAI9a,IAAIA,EAAK8a,EACnB,MAAO,GAAIrS,EAAK,EAAG,CACjB,GAAIqS,EAAI9a,EAAI,OACR8a,EAAI5a,IAAIA,EAAK4a,EACnB,CAGA,OAFI9a,EAAK,IAAG+Z,EAAE,GAAKkJ,EAAKjjB,EAAKwI,EAAIuR,EAAE,GAAKmJ,EAAKljB,EAAKyI,GAC9CvI,EAAK,IAAG2e,EAAE,GAAKoE,EAAK/iB,EAAKsI,EAAIqW,EAAE,GAAKqE,EAAKhjB,EAAKuI,IAC3C,CAXiB,CAVA,CAVA,CAVA,CA0C1B,CDgFc,CAASsR,EAAG8E,EAAGyJ,EAAIC,EAAIvK,EAAIC,GAQpBpQ,IACT+yQ,EAAa9sC,YACb8sC,EAAah6Q,MAAMC,EAAGC,GACtBmwM,GAAQ,IAVH0pE,IACHC,EAAa9sC,YACb8sC,EAAah6Q,MAAMmT,EAAE,GAAIA,EAAE,KAE7B6mQ,EAAah6Q,MAAMiY,EAAE,GAAIA,EAAE,IACtBhR,GAAG+yQ,EAAa7sC,UACrB98B,GAAQ,EAMZ,CAEFwpE,EAAK55Q,EAAG65Q,EAAK55Q,EAAG65Q,EAAK9yQ,CACvB,CACA,OAAOizQ,CACT,CACF,CExJe,SAAS,GAAC/mQ,EAAG8E,GAC1B,SAASqiQ,EAAQr6Q,EAAGC,GAClB,OAAOD,EAAIkT,EAAElT,EAAGC,GAAI+X,EAAEhY,EAAE,GAAIA,EAAE,GAChC,CAIA,OAHIkT,EAAEmG,QAAUrB,EAAEqB,SAAQghQ,EAAQhhQ,OAAS,SAAUrZ,EAAGC,GACtD,OAAOD,EAAIgY,EAAEqB,OAAOrZ,EAAGC,KAASiT,EAAEmG,OAAOrZ,EAAE,GAAIA,EAAE,GACnD,GACOq6Q,CACT,CCNA,SAASC,GAAiB/nP,EAAQumB,GAEhC,OADI,GAAIvmB,GAAU,KAAIA,GAAUvjB,KAAKwoB,MAAMjF,EAAS,IAAO,IACpD,CAACA,EAAQumB,EAClB,CAEO,SAAS,GAAcyhO,EAAaC,EAAUC,GACnD,OAAQF,GAAe,IAAOC,GAAYC,EAAaJ,GAAQK,GAAeH,GAAcI,GAAiBH,EAAUC,IAAeC,GAAeH,GAAeC,GAAYC,EAAaE,GAAiBH,EAAUC,GAAcH,EACxO,CACA,SAASM,GAAsBL,GAC7B,OAAO,SAAUhoP,EAAQumB,GAGvB,OADI,GADJvmB,GAAUgoP,GACQ,KAAIhoP,GAAUvjB,KAAKwoB,MAAMjF,EAAS,IAAO,IACpD,CAACA,EAAQumB,EAClB,CACF,CACA,SAAS4hO,GAAeH,GACtB,IAAIM,EAAWD,GAAsBL,GAErC,OADAM,EAASxhQ,OAASuhQ,IAAuBL,GAClCM,CACT,CACA,SAASF,GAAiBH,EAAUC,GAClC,IAAIK,EAAc,GAAIN,GACpBO,EAAc,GAAIP,GAClBQ,EAAgB,GAAIP,GACpBQ,EAAgB,GAAIR,GACtB,SAASI,EAAStoP,EAAQumB,GACxB,IAAI29N,EAAS,GAAI39N,GACf94C,EAAI,GAAIuyB,GAAUkkP,EAClBx2Q,EAAI,GAAIsyB,GAAUkkP,EAClBj8P,EAAI,GAAIs+B,GACRr9C,EAAI+e,EAAIsgQ,EAAc96Q,EAAI+6Q,EAC5B,MAAO,CAAC,GAAM96Q,EAAI+6Q,EAAgBv/Q,EAAIw/Q,EAAej7Q,EAAI86Q,EAActgQ,EAAIugQ,GAAc,GAAKt/Q,EAAIu/Q,EAAgB/6Q,EAAIg7Q,GACxH,CASA,OARAJ,EAASxhQ,OAAS,SAAUkZ,EAAQumB,GAClC,IAAI29N,EAAS,GAAI39N,GACf94C,EAAI,GAAIuyB,GAAUkkP,EAClBx2Q,EAAI,GAAIsyB,GAAUkkP,EAClBj8P,EAAI,GAAIs+B,GACRr9C,EAAI+e,EAAIwgQ,EAAgB/6Q,EAAIg7Q,EAC9B,MAAO,CAAC,GAAMh7Q,EAAI+6Q,EAAgBxgQ,EAAIygQ,EAAej7Q,EAAI86Q,EAAcr/Q,EAAIs/Q,GAAc,GAAKt/Q,EAAIq/Q,EAAc96Q,EAAI+6Q,GACtH,EACOF,CACT,CCvCO,SAAS,GAAYK,GAC1B,OAAO,SAAUlpD,GACf,IAAIn/M,EAAI,IAAIsoQ,GACZ,IAAK,IAAIvlP,KAAOslP,EAASroQ,EAAE+iB,GAAOslP,EAAQtlP,GAE1C,OADA/iB,EAAEm/M,OAASA,EACJn/M,CACT,CACF,CACA,SAASsoQ,KAAmB,CCX5B,SAASC,GAAIvF,EAAYwF,EAAW3hP,GAClC,IAAI1vB,EAAO6rQ,EAAWyF,YAAczF,EAAWyF,aAM/C,OALAzF,EAAWhoQ,MAAM,KAAKR,UAAU,CAAC,EAAG,IACxB,MAARrD,GAAc6rQ,EAAWyF,WAAW,MACxC,GAAU5hP,EAAQm8O,EAAW7jD,OAAO,KACpCqpD,EAAU,GAAa1zQ,UACX,MAARqC,GAAc6rQ,EAAWyF,WAAWtxQ,GACjC6rQ,CACT,CACO,SAAS0F,GAAU1F,EAAYz0D,EAAQ1nL,GAC5C,OAAO0hP,GAAIvF,GAAY,SAAU79P,GAC/B,IAAIyK,EAAI2+L,EAAO,GAAG,GAAKA,EAAO,GAAG,GAC/BhnM,EAAIgnM,EAAO,GAAG,GAAKA,EAAO,GAAG,GAC7B3lN,EAAIuT,KAAKC,IAAIwT,GAAKzK,EAAE,GAAG,GAAKA,EAAE,GAAG,IAAKoC,GAAKpC,EAAE,GAAG,GAAKA,EAAE,GAAG,KAC1DhY,GAAKohN,EAAO,GAAG,IAAM3+L,EAAIhnB,GAAKuc,EAAE,GAAG,GAAKA,EAAE,GAAG,KAAO,EACpD/X,GAAKmhN,EAAO,GAAG,IAAMhnM,EAAI3e,GAAKuc,EAAE,GAAG,GAAKA,EAAE,GAAG,KAAO,EACtD69P,EAAWhoQ,MAAM,IAAMpS,GAAG4R,UAAU,CAACrN,EAAGC,GAC1C,GAAGy5B,EACL,CACO,SAAS8hP,GAAQ3F,EAAYx8O,EAAMK,GACxC,OAAO6hP,GAAU1F,EAAY,CAAC,CAAC,EAAG,GAAIx8O,GAAOK,EAC/C,CACO,SAAS+hP,GAAS5F,EAAY/yQ,EAAO42B,GAC1C,OAAO0hP,GAAIvF,GAAY,SAAU79P,GAC/B,IAAIyK,GAAK3f,EACPrH,EAAIgnB,GAAKzK,EAAE,GAAG,GAAKA,EAAE,GAAG,IACxBhY,GAAKyiB,EAAIhnB,GAAKuc,EAAE,GAAG,GAAKA,EAAE,GAAG,KAAO,EACpC/X,GAAKxE,EAAIuc,EAAE,GAAG,GAChB69P,EAAWhoQ,MAAM,IAAMpS,GAAG4R,UAAU,CAACrN,EAAGC,GAC1C,GAAGy5B,EACL,CACO,SAASgiP,GAAU7F,EAAY9yQ,EAAQ22B,GAC5C,OAAO0hP,GAAIvF,GAAY,SAAU79P,GAC/B,IAAIoC,GAAKrX,EACPtH,EAAI2e,GAAKpC,EAAE,GAAG,GAAKA,EAAE,GAAG,IACxBhY,GAAKvE,EAAIuc,EAAE,GAAG,GACd/X,GAAKma,EAAI3e,GAAKuc,EAAE,GAAG,GAAKA,EAAE,GAAG,KAAO,EACtC69P,EAAWhoQ,MAAM,IAAMpS,GAAG4R,UAAU,CAACrN,EAAGC,GAC1C,GAAGy5B,EACL,CFnCA4gP,GAAiBjhQ,OAASihQ,GCQ1Ba,GAAgBlmR,UAAY,CAC1B4E,YAAashR,GACbp7Q,MAAO,SAAeC,EAAGC,GACvBlL,KAAKi9N,OAAOjyN,MAAMC,EAAGC,EACvB,EACAqyQ,OAAQ,WACNv9Q,KAAKi9N,OAAOsgD,QACd,EACArlC,UAAW,WACTl4O,KAAKi9N,OAAOib,WACd,EACAC,QAAS,WACPn4O,KAAKi9N,OAAOkb,SACd,EACA+lC,aAAc,WACZl+Q,KAAKi9N,OAAOihD,cACd,EACAC,WAAY,WACVn+Q,KAAKi9N,OAAOkhD,YACd,GE9BF,IAAIyI,GAAW,GAEbC,GAAiB,GAAI,GAAK,IAEb,SAAS,GAAC9yC,EAAS+yC,GAChC,OAAQA,EAUV,SAAkB/yC,EAAS+yC,GACzB,SAASC,EAAer6P,EAAIC,EAAIm2P,EAAS9oO,EAAIx8B,EAAIiqN,EAAIrlN,EAAIC,EAAI4gQ,EAASl4P,EAAIhO,EAAI0L,EAAIqe,EAAOm2L,GACvF,IAAIrwN,EAAKwV,EAAKsK,EACZ7f,EAAKwV,EAAKsK,EACV6I,EAAK5oB,EAAKA,EAAKC,EAAKA,EACtB,GAAI2oB,EAAK,EAAIsxP,GAAUhgP,IAAS,CAC9B,IAAI3oB,EAAI67B,EAAKjvB,EACX9H,EAAIzF,EAAKT,EACToI,EAAIsiN,EAAKh/M,EACT1S,EAAI,GAAKoI,EAAIA,EAAI8E,EAAIA,EAAIkC,EAAIA,GAC7B6hQ,EAAO,GAAK7hQ,GAAKpP,GACjBkxQ,EAAU,GAAI,GAAI9hQ,GAAK,GAAK,IAAW,GAAI29P,EAAUG,GAAW,IAAWH,EAAUG,GAAW,EAAI,GAAMhgQ,EAAG9E,GAC7GC,EAAI21N,EAAQkzC,EAASD,GACrB1kQ,EAAKlE,EAAE,GACPmE,EAAKnE,EAAE,GACPygB,EAAMvc,EAAKoK,EACXoS,EAAMvc,EAAKoK,EACXu6P,EAAKr6Q,EAAKgyB,EAAMjyB,EAAKkyB,GACnBooP,EAAKA,EAAK1xP,EAAKsxP,GAChB,IAAKl6Q,EAAKiyB,EAAMhyB,EAAKiyB,GAAOtJ,EAAK,IAAO,IACxCwkB,EAAKjvB,EAAKvN,EAAKT,EAAK0qN,EAAKh/M,EAAKo+P,MAE/BE,EAAer6P,EAAIC,EAAIm2P,EAAS9oO,EAAIx8B,EAAIiqN,EAAInlN,EAAIC,EAAI0kQ,EAAS9oQ,GAAKpI,EAAGkN,GAAKlN,EAAGoP,EAAG2hB,EAAOm2L,GACvFA,EAAOjyN,MAAMsX,EAAIC,GACjBwkQ,EAAezkQ,EAAIC,EAAI0kQ,EAAS9oQ,EAAG8E,EAAGkC,EAAG/C,EAAIC,EAAI4gQ,EAASl4P,EAAIhO,EAAI0L,EAAIqe,EAAOm2L,GAEjF,CACF,CACA,OAAO,SAAUA,GACf,IAAIkqD,EAAUjpC,EAAKC,EAAKh7N,EAAKS,EAAKwjQ,EAEhCtE,EAASp2P,EAAIC,EAAIqtB,EAAIx8B,EAAIiqN,EAEvB4/C,EAAiB,CACnBr8Q,MAAOA,EACPktO,UAAWA,EACXC,QAASA,EACT+lC,aAAc,WACZjhD,EAAOihD,eACPmJ,EAAenvC,UAAYuqC,CAC7B,EACAtE,WAAY,WACVlhD,EAAOkhD,aACPkJ,EAAenvC,UAAYA,CAC7B,GAEF,SAASltO,EAAMC,EAAGC,GAChBD,EAAI8oO,EAAQ9oO,EAAGC,GACf+xN,EAAOjyN,MAAMC,EAAE,GAAIA,EAAE,GACvB,CACA,SAASitO,IACPxrN,EAAK6nB,IACL8yO,EAAer8Q,MAAQm6Q,EACvBloD,EAAOib,WACT,CACA,SAASitC,EAAU3nP,EAAQumB,GACzB,IAAI5+B,EAAIs8P,GAAU,CAACjkP,EAAQumB,IACzB3lC,EAAI21N,EAAQv2M,EAAQumB,GACtBgjO,EAAer6P,EAAIC,EAAIm2P,EAAS9oO,EAAIx8B,EAAIiqN,EAAI/6M,EAAKtO,EAAE,GAAIuO,EAAKvO,EAAE,GAAI0kQ,EAAUtlP,EAAQwc,EAAK70B,EAAE,GAAI3H,EAAK2H,EAAE,GAAIsiN,EAAKtiN,EAAE,GAAIyhQ,GAAU3pD,GAC/HA,EAAOjyN,MAAM0hB,EAAIC,EACnB,CACA,SAASwrN,IACPkvC,EAAer8Q,MAAQA,EACvBiyN,EAAOkb,SACT,CACA,SAASsqC,IACPvqC,IACAmvC,EAAer8Q,MAAQs8Q,EACvBD,EAAelvC,QAAUuqC,CAC3B,CACA,SAAS4E,EAAU9pP,EAAQumB,GACzBohO,EAAUgC,EAAW3pP,EAAQumB,GAAMm6L,EAAMxxN,EAAIyxN,EAAMxxN,EAAIxJ,EAAM62B,EAAIp2B,EAAMpG,EAAI4pQ,EAAM3/C,EACjF4/C,EAAer8Q,MAAQm6Q,CACzB,CACA,SAASzC,IACPqE,EAAer6P,EAAIC,EAAIm2P,EAAS9oO,EAAIx8B,EAAIiqN,EAAIyW,EAAKC,EAAKgpC,EAAUhkQ,EAAKS,EAAKwjQ,EAAKR,GAAU3pD,GACzFoqD,EAAelvC,QAAUA,EACzBA,GACF,CACA,OAAOkvC,CACT,CACF,CA3FmB,CAAStzC,EAAS+yC,GAErC,SAAsB/yC,GACpB,OAAO,GAAY,CACjB/oO,MAAO,SAAeC,EAAGC,GACvBD,EAAI8oO,EAAQ9oO,EAAGC,GACflL,KAAKi9N,OAAOjyN,MAAMC,EAAE,GAAIA,EAAE,GAC5B,GAEJ,CAT+Cs8Q,CAAaxzC,EAC5D,CCCA,IAAIyzC,GAAmB,GAAY,CACjCx8Q,MAAO,SAAeC,EAAGC,GACvBlL,KAAKi9N,OAAOjyN,MAAMC,EAAI,GAASC,EAAI,GACrC,IAqBF,SAASu8Q,GAAqB/gR,EAAGkG,EAAIC,EAAI07N,EAAIC,EAAI15M,GAC/C,IAAKA,EAAO,OAZd,SAAwBpoB,EAAGkG,EAAIC,EAAI07N,EAAIC,GACrC,SAAS10N,EAAU7I,EAAGC,GAGpB,MAAO,CAAC0B,EAAKlG,GAFbuE,GAAKs9N,GAEe17N,EAAKnG,GADzBwE,GAAKs9N,GAEP,CAIA,OAHA10N,EAAUwQ,OAAS,SAAUrZ,EAAGC,GAC9B,MAAO,EAAED,EAAI2B,GAAMlG,EAAI6hO,GAAK17N,EAAK3B,GAAKxE,EAAI8hO,EAC5C,EACO10N,CACT,CAEqB4zQ,CAAehhR,EAAGkG,EAAIC,EAAI07N,EAAIC,GACjD,IAAIm/C,EAAW,GAAI74P,GACjB84P,EAAW,GAAI94P,GACf3Q,EAAIwpQ,EAAWjhR,EACfuc,EAAI2kQ,EAAWlhR,EACfmhR,EAAKF,EAAWjhR,EAChB+wC,EAAKmwO,EAAWlhR,EAChBkpB,GAAMg4P,EAAW/6Q,EAAK86Q,EAAW/6Q,GAAMlG,EACvCohR,GAAMF,EAAWh7Q,EAAK+6Q,EAAW96Q,GAAMnG,EACzC,SAASoN,EAAU7I,EAAGC,GAGpB,MAAO,CAACiT,GAFRlT,GAAKs9N,GAEWtlN,GADhB/X,GAAKs9N,GACmB57N,EAAIC,EAAKoW,EAAIhY,EAAIkT,EAAIjT,EAC/C,CAIA,OAHA4I,EAAUwQ,OAAS,SAAUrZ,EAAGC,GAC9B,MAAO,CAACq9N,GAAMs/C,EAAK58Q,EAAIwsC,EAAKvsC,EAAI0kB,GAAK44M,GAAMs/C,EAAKrwO,EAAKxsC,EAAI48Q,EAAK38Q,GAChE,EACO4I,CACT,CACe,SAASgtQ,GAAW/sC,GACjC,OAAOg0C,IAAkB,WACvB,OAAOh0C,CACT,GAFOg0C,EAGT,CACO,SAASA,GAAkBC,GAChC,IAAIj0C,EAYF96N,EAYA0T,EACAvK,EACAC,EAKA4lQ,EACAC,EACAC,EACArpQ,EACAspQ,EAlCA1hR,EAAI,IAEJuE,EAAI,IACJC,EAAI,IAEJsyB,EAAS,EACTumB,EAAM,EAENyhO,EAAc,EACdC,EAAW,EACXC,EAAa,EAGb52P,EAAQ,EAERy5M,EAAK,EAELC,EAAK,EAEL7qM,EAAQ,KACR0qP,EAAU,GAEV37P,EAAK,KAIL47P,EAAW,GAEXxB,EAAS,GAOX,SAAShG,EAAW91Q,GAClB,OAAOm9Q,EAAuBn9Q,EAAM,GAAK,GAASA,EAAM,GAAK,GAC/D,CACA,SAASsZ,EAAOtZ,GAEd,OADAA,EAAQm9Q,EAAuB7jQ,OAAOtZ,EAAM,GAAIA,EAAM,MACtC,CAACA,EAAM,GAAK,GAASA,EAAM,GAAK,GAClD,CAoDA,SAASu9Q,IACP,IAAI1qP,EAAS4pP,GAAqB/gR,EAAG,EAAG,EAAG6hO,EAAIC,EAAI15M,GAAOztB,MAAM,KAAM0yO,EAAQv2M,EAAQumB,IACpFjwC,EAAY2zQ,GAAqB/gR,EAAGuE,EAAI4yB,EAAO,GAAI3yB,EAAI2yB,EAAO,GAAI0qM,EAAIC,EAAI15M,GAK5E,OAJA7V,EAAS,GAAcusQ,EAAaC,EAAUC,GAC9CwC,EAAmB5C,GAAQvxC,EAASjgO,GACpCq0Q,EAAyB7C,GAAQrsQ,EAAQivQ,GACzCD,EAAkBO,GAASN,EAAkBpB,GACtC5wN,GACT,CACA,SAASA,IAEP,OADAp3C,EAAQspQ,EAAc,KACftH,CACT,CACA,OAhEAA,EAAW7jD,OAAS,SAAUA,GAC5B,OAAOn+M,GAASspQ,IAAgBnrD,EAASn+M,EAAQA,EAAQ0oQ,GAzF7D,SAAyBvuQ,GACvB,OAAO,GAAY,CACjBjO,MAAO,SAAeC,EAAGC,GACvB,IAAIgU,EAAIjG,EAAOhO,EAAGC,GAClB,OAAOlL,KAAKi9N,OAAOjyN,MAAMkU,EAAE,GAAIA,EAAE,GACnC,GAEJ,CAkF8EupQ,CAAgBxvQ,EAAhBwvQ,CAAwBJ,EAAQJ,EAAgBK,EAASF,EAAcnrD,MACnJ,EACA6jD,EAAWuH,QAAU,SAAU3hP,GAC7B,OAAO9lC,UAAUC,QAAUwnR,EAAU3hP,EAAG/I,OAAQlH,EAAWy/B,KAAWmyN,CACxE,EACAvH,EAAWwH,SAAW,SAAU5hP,GAC9B,OAAO9lC,UAAUC,QAAUynR,EAAW5hP,EAAGha,EAAKC,EAAKvK,EAAKC,EAAK,KAAM6zC,KAAWoyN,CAChF,EACAxH,EAAW4H,UAAY,SAAUhiP,GAC/B,OAAO9lC,UAAUC,QAAUwnR,GAAW3hP,EC5G3B,SAAUsnC,GACvB,IAAI26M,EAAK,GAAI36M,GACX3zB,EAAQ,EAAI,GACZuuO,EAAcD,EAAK,EACnBE,EAAgB,GAAIF,GAAM,GAK5B,SAASp0Q,EAAQipB,EAAQumB,GACvB,OAAO,GAAIvmB,GAAU,GAAIumB,GAAO4kO,CAClC,CAkFA,SAASz7P,EAAU/O,EAAG8E,EAAG6lQ,GACvB,IAKI15P,EAAK,CAAC,EAAG,EAAG,GAEdC,EAAKuyP,GAPEH,GAAUtjQ,GACZsjQ,GAAUx+P,IAOf8lQ,EAAOpH,GAAatyP,EAAIA,GACxB25P,EAAO35P,EAAG,GAEV45P,EAAcF,EAAOC,EAAOA,EAG9B,IAAKC,EAAa,OAAQH,GAAO3qQ,EACjC,IAAIsK,EAAKkgQ,EAAKI,EAAOE,EACnBtgQ,GAAMggQ,EAAKK,EAAOC,EAClBC,EAAQtH,GAAexyP,EAAIC,GAC3B0gC,EAAI+xN,GAAe1yP,EAAI3G,GAEzBo5P,GAAoB9xN,EADd+xN,GAAezyP,EAAI1G,IAIzB,IAAInD,EAAI0jQ,EACNx7P,EAAIi0P,GAAa5xN,EAAGvqC,GACpB2jQ,EAAKxH,GAAan8P,EAAGA,GACrBnhB,EAAKqpB,EAAIA,EAAIy7P,GAAMxH,GAAa5xN,EAAGA,GAAK,GAC1C,KAAI1rD,EAAK,GAAT,CACA,IAAIN,EAAI,GAAKM,GACXkhB,EAAIu8P,GAAet8P,IAAKkI,EAAI3pB,GAAKolR,GAGnC,GAFAtH,GAAoBt8P,EAAGwqC,GACvBxqC,EAAIi8P,GAAUj8P,IACTujQ,EAAK,OAAOvjQ,EAGjB,IAIEE,EAJEq9P,EAAU3kQ,EAAE,GACd8kQ,EAAUhgQ,EAAE,GACZ2gC,EAAOzlC,EAAE,GACTilQ,EAAOngQ,EAAE,GAEPggQ,EAAUH,IAASr9P,EAAIq9P,EAASA,EAAUG,EAASA,EAAUx9P,GACjE,IAAI40B,EAAQ4oO,EAAUH,EACpBsG,EAAQ,GAAI/uO,EAAQ,IAAM,GAK5B,IAHK+uO,GAAShG,EAAOx/N,IAAMn+B,EAAIm+B,EAAMA,EAAOw/N,EAAMA,EAAO39P,GAD5C2jQ,GAAS/uO,EAAQ,GAIf+uO,EAAQxlO,EAAOw/N,EAAO,EAAI79P,EAAE,IAAM,GAAIA,EAAE,GAAKu9P,GAAW,GAAUl/N,EAAOw/N,GAAQx/N,GAAQr+B,EAAE,IAAMA,EAAE,IAAM69P,EAAO/oO,EAAQ,IAAMyoO,GAAWv9P,EAAE,IAAMA,EAAE,IAAM09P,GAAU,CAChL,IAAIl5C,EAAK+3C,GAAet8P,IAAKkI,EAAI3pB,GAAKolR,GAEtC,OADAtH,GAAoB93C,EAAIh6K,GACjB,CAACxqC,EAAGi8P,GAAUz3C,GACvB,CAxBkB,CAyBpB,CAIA,SAAS5+H,EAAK3tE,EAAQumB,GACpB,IAAI7kC,EAAI0pQ,EAAc56M,EAAS,GAAKA,EAClCm9B,EAAO,EAKT,OAJI3tE,GAAUte,EAAGisF,GAAQ,EAChB3tE,EAASte,IAAGisF,GAAQ,GACzBpnD,GAAO7kC,EAAGisF,GAAQ,EACbpnD,EAAM7kC,IAAGisF,GAAQ,GACnBA,CACT,CACA,OAAO,GAAK52F,GA9IZ,SAAkB0oN,GAChB,IAAI4lD,EAEFp7C,EAEAxyM,EAEAo0P,EAEA9uD,EACF,MAAO,CACL2d,UAAW,WACTmxC,EAAMp0P,GAAK,EACXslM,EAAS,CACX,EACAvvN,MAAO,SAAewyB,EAAQumB,GAC5B,IACE9mB,EADED,EAAS,CAACQ,EAAQumB,GAEpB9xC,EAAIsC,EAAQipB,EAAQumB,GACpB5+B,EAAIyjQ,EAAc32Q,EAAI,EAAIk5F,EAAK3tE,EAAQumB,GAAO9xC,EAAIk5F,EAAK3tE,GAAUA,EAAS,EAAI,IAAM,IAAKumB,GAAO,EAMlG,IALK8+N,IAAWwG,EAAMp0P,EAAKhjB,IAAIgrN,EAAOib,YAClCjmO,IAAMgjB,MACRgI,EAAS/P,EAAU21P,EAAQ7lP,KACZskP,GAAWuB,EAAQ5lP,IAAWqkP,GAAWtkP,EAAQC,MAASD,EAAO,GAAK,GAEnF/qB,IAAMgjB,EACRslM,EAAS,EACLtoN,GAEFgrN,EAAOib,YACPj7M,EAAS/P,EAAU8P,EAAQ6lP,GAC3B5lD,EAAOjyN,MAAMiyB,EAAO,GAAIA,EAAO,MAG/BA,EAAS/P,EAAU21P,EAAQ7lP,GAC3BigM,EAAOjyN,MAAMiyB,EAAO,GAAIA,EAAO,GAAI,GACnCggM,EAAOkb,WAET0qC,EAAS5lP,OACJ,GAAI4rP,GAAiBhG,GAAU+F,EAAc32Q,EAAG,CACrD,IAAIlO,EAGEohB,EAAIsiN,KAAQ1jO,EAAImpB,EAAU8P,EAAQ6lP,GAAQ,MAC9CtoD,EAAS,EACLquD,GACF3rD,EAAOib,YACPjb,EAAOjyN,MAAMjH,EAAE,GAAG,GAAIA,EAAE,GAAG,IAC3Bk5N,EAAOjyN,MAAMjH,EAAE,GAAG,GAAIA,EAAE,GAAG,IAC3Bk5N,EAAOkb,YAEPlb,EAAOjyN,MAAMjH,EAAE,GAAG,GAAIA,EAAE,GAAG,IAC3Bk5N,EAAOkb,UACPlb,EAAOib,YACPjb,EAAOjyN,MAAMjH,EAAE,GAAG,GAAIA,EAAE,GAAG,GAAI,IAGrC,EACIkO,GAAO4wQ,GAAWvB,GAAWuB,EAAQ7lP,IACvCigM,EAAOjyN,MAAMgyB,EAAO,GAAIA,EAAO,IAEjC6lP,EAAS7lP,EAAQ/H,EAAKhjB,EAAGw1N,EAAKtiN,CAChC,EACAgzN,QAAS,WACHljN,GAAIgoM,EAAOkb,UACf0qC,EAAS,IACX,EAGAxnE,MAAO,WACL,OAAOkf,GAAU8uD,GAAOp0P,IAAO,CACjC,EAEJ,IApFA,SAAqBqE,EAAMC,EAAIuB,EAAWmiM,GACxC+mD,GAAa/mD,EAAQjvJ,EAAQ3zB,EAAOvf,EAAWxB,EAAMC,EACvD,GAuJ4CqvP,EAAc,CAAC,GAAI56M,GAAU,EAAE,GAAIA,EAAS,IAC1F,CDpD8C,CAAWrwC,EAAQ+I,EAAI,KAAY/I,EAAQ,KAAM,IAAmBu4B,KAAWv4B,EAAQ,EACnI,EACAmjP,EAAWyF,WAAa,SAAU7/O,GAChC,OAAO9lC,UAAUC,QAAUynR,EAAgB,MAAL5hP,GAAaha,EAAKC,EAAKvK,EAAKC,EAAK,KAAM,IAAYiiQ,GAAc53P,GAAMga,EAAE,GAAG,GAAI/Z,GAAM+Z,EAAE,GAAG,GAAItkB,GAAMskB,EAAE,GAAG,GAAIrkB,GAAMqkB,EAAE,GAAG,IAAKwvB,KAAiB,MAANxpC,EAAa,KAAO,CAAC,CAACA,EAAIC,GAAK,CAACvK,EAAIC,GACrN,EACAy+P,EAAWhoQ,MAAQ,SAAU4tB,GAC3B,OAAO9lC,UAAUC,QAAU6F,GAAKggC,EAAG6hP,KAAc7hR,CACnD,EACAo6Q,EAAWxoQ,UAAY,SAAUouB,GAC/B,OAAO9lC,UAAUC,QAAUoK,GAAKy7B,EAAE,GAAIx7B,GAAKw7B,EAAE,GAAI6hP,KAAc,CAACt9Q,EAAGC,EACrE,EACA41Q,EAAWjjP,OAAS,SAAU6I,GAC5B,OAAO9lC,UAAUC,QAAU28B,EAASkJ,EAAE,GAAK,IAAM,GAASqd,EAAMrd,EAAE,GAAK,IAAM,GAAS6hP,KAAc,CAAC/qP,EAAS,GAASumB,EAAM,GAC/H,EACA+8N,EAAW7nQ,OAAS,SAAUytB,GAC5B,OAAO9lC,UAAUC,QAAU2kR,EAAc9+O,EAAE,GAAK,IAAM,GAAS++O,EAAW/+O,EAAE,GAAK,IAAM,GAASg/O,EAAah/O,EAAE7lC,OAAS,EAAI6lC,EAAE,GAAK,IAAM,GAAU,EAAG6hP,KAAc,CAAC/C,EAAc,GAASC,EAAW,GAASC,EAAa,GAC/N,EACA5E,EAAWp5P,MAAQ,SAAUgf,GAC3B,OAAO9lC,UAAUC,QAAUiuB,EAAQ4X,EAAI,IAAM,GAAS6hP,KAAcz5P,EAAQ,EAC9E,EACAgyP,EAAWwI,SAAW,SAAU5iP,GAC9B,OAAO9lC,UAAUC,QAAU0nO,EAAK7hM,GAAK,EAAI,EAAG6hP,KAAchgD,EAAK,CACjE,EACAu4C,EAAWyI,SAAW,SAAU7iP,GAC9B,OAAO9lC,UAAUC,QAAU2nO,EAAK9hM,GAAK,EAAI,EAAG6hP,KAAc//C,EAAK,CACjE,EACAs4C,EAAWl+O,UAAY,SAAU8D,GAC/B,OAAO9lC,UAAUC,QAAUonR,EAAkBO,GAASN,EAAkBpB,EAASpgP,EAAIA,GAAIwvB,KAAW,GAAK4wN,EAC3G,EACAhG,EAAW0F,UAAY,SAAUn6D,EAAQ1nL,GACvC,OAAO6hP,GAAU1F,EAAYz0D,EAAQ1nL,EACvC,EACAm8O,EAAW2F,QAAU,SAAUniP,EAAMK,GACnC,OAAO8hP,GAAQ3F,EAAYx8O,EAAMK,EACnC,EACAm8O,EAAW4F,SAAW,SAAU34Q,EAAO42B,GACrC,OAAO+hP,GAAS5F,EAAY/yQ,EAAO42B,EACrC,EACAm8O,EAAW6F,UAAY,SAAU34Q,EAAQ22B,GACvC,OAAOgiP,GAAU7F,EAAY9yQ,EAAQ22B,EACvC,EAcO,WAGL,OAFAovM,EAAUi0C,EAAU3mR,MAAMrB,KAAMY,WAChCkgR,EAAWx8P,OAASyvN,EAAQzvN,QAAUA,EAC/BikQ,GACT,CACF,CE1KO,SAASiB,GAAgBxB,GAC9B,IAAIpkO,EAAO,EACTw/N,EAAO,GAAK,EACZrtQ,EAAIgyQ,GAAkBC,GACtB5pQ,EAAIrI,EAAE6tC,EAAMw/N,GAId,OAHAhlQ,EAAEqrQ,UAAY,SAAU/iP,GACtB,OAAO9lC,UAAUC,OAASkV,EAAE6tC,EAAOld,EAAE,GAAK,GAAS08O,EAAO18O,EAAE,GAAK,IAAW,CAACkd,EAAO,GAASw/N,EAAO,GACtG,EACOhlQ,CACT,CCRO,SAASsrQ,GAAkB/8P,EAAItK,GACpC,IAAIsnQ,EAAM,GAAIh9P,GACZiC,GAAK+6P,EAAM,GAAItnQ,IAAO,EAGxB,GAAI,GAAIuM,GAAK,GAAS,OCPjB,SAAiCg1B,GACtC,IAAIo/N,EAAU,GAAIp/N,GAClB,SAASgmO,EAAQpsP,EAAQumB,GACvB,MAAO,CAACvmB,EAASwlP,EAAS,GAAIj/N,GAAOi/N,EACvC,CAIA,OAHA4G,EAAQtlQ,OAAS,SAAUrZ,EAAGC,GAC5B,MAAO,CAACD,EAAI+3Q,EAAS,GAAK93Q,EAAI83Q,GAChC,EACO4G,CACT,CDF+BC,CAAwBl9P,GACrD,IAAIxH,EAAI,EAAIwkQ,GAAO,EAAI/6P,EAAI+6P,GACzB97P,EAAK,GAAK1I,GAAKyJ,EACjB,SAASmlN,EAAQ9oO,EAAGC,GAClB,IAAIgU,EAAI,GAAKiG,EAAI,EAAIyJ,EAAI,GAAI1jB,IAAM0jB,EACnC,MAAO,CAAC1P,EAAI,GAAIjU,GAAK2jB,GAAIf,EAAK3O,EAAI,GAAIjU,GACxC,CAOA,OANA8oO,EAAQzvN,OAAS,SAAUrZ,EAAGC,GAC5B,IAAI4+Q,EAAMj8P,EAAK3iB,EACboa,EAAI,GAAMra,EAAG,GAAI6+Q,IAAQ,GAAKA,GAEhC,OADIA,EAAMl7P,EAAI,IAAGtJ,GAAK,GAAK,GAAKra,GAAK,GAAK6+Q,IACnC,CAACxkQ,EAAIsJ,EAAG,IAAMzJ,GAAKla,EAAIA,EAAI6+Q,EAAMA,GAAOl7P,EAAIA,IAAM,EAAIA,IAC/D,EACOmlN,CACT,CACe,SAAS,KACtB,OAAOy1C,GAAgBE,IAAmB5wQ,MAAM,SAAS+kB,OAAO,CAAC,EAAG,SACtE,CExBe,SAAS,KACtB,OAAOksP,KAAiBN,UAAU,CAAC,KAAM,OAAO3wQ,MAAM,MAAMR,UAAU,CAAC,IAAK,MAAMW,OAAO,CAAC,GAAI,IAAI4kB,OAAO,EAAE,GAAK,MAClH,CCFO,SAASmsP,GAAalxQ,GAC3B,OAAO,SAAU7N,EAAGC,GAClB,IAAIwW,EAAK,GAAIzW,GACX0W,EAAK,GAAIzW,GACTxE,EAAIoS,EAAM4I,EAAKC,GACjB,OAAIjb,IAAMnC,IAAiB,CAAC,EAAG,GACxB,CAACmC,EAAIib,EAAK,GAAI1W,GAAIvE,EAAI,GAAIwE,GACnC,CACF,CACO,SAAS++Q,GAAgBviQ,GAC9B,OAAO,SAAUzc,EAAGC,GAClB,IAAIua,EAAI,GAAKxa,EAAIA,EAAIC,EAAIA,GACvBia,EAAIuC,EAAMjC,GACV80P,EAAK,GAAIp1P,GACT+kQ,EAAK,GAAI/kQ,GACX,MAAO,CAAC,GAAMla,EAAIsvQ,EAAI90P,EAAIykQ,GAAK,GAAKzkQ,GAAKva,EAAIqvQ,EAAK90P,GACpD,CACF,CCfO,IAAI0kQ,GAAwBH,IAAa,SAAUI,GACxD,OAAO,GAAK,GAAK,EAAIA,GACvB,IACAD,GAAsB7lQ,OAAS2lQ,IAAgB,SAAUxkQ,GACvD,OAAO,EAAI,GAAKA,EAAI,EACtB,ICLO,IAAI4kQ,GAA0BL,IAAa,SAAU7kQ,GAC1D,OAAQA,EAAI,GAAKA,KAAOA,EAAI,GAAIA,EAClC,ICFO,SAASmlQ,GAAY9sP,EAAQumB,GAClC,MAAO,CAACvmB,EAAQ,GAAI3U,IAAK,GAASk7B,GAAO,IAC3C,CAOO,SAASwmO,GAAmBx2C,GACjC,IAMEpnN,EACAvK,EACAC,EAREtM,EAAI+qQ,GAAW/sC,GACjBl2M,EAAS9nB,EAAE8nB,OACX/kB,EAAQ/C,EAAE+C,MACVR,EAAYvC,EAAEuC,UACdiuQ,EAAaxwQ,EAAEwwQ,WACf75P,EAAK,KAiBP,SAAS89P,IACP,IAAI9jR,EAAI,GAAKoS,IACX/U,EAAIgS,EbQK,SAAUkD,GAEvB,SAAS2wQ,EAAQ/pE,GAEf,OADAA,EAAc5mM,EAAO4mM,EAAY,GAAK,GAASA,EAAY,GAAK,KAC7C,IAAM,GAASA,EAAY,IAAM,GAASA,CAC/D,CAKA,OATA5mM,EAAS,GAAcA,EAAO,GAAK,GAASA,EAAO,GAAK,GAASA,EAAOpY,OAAS,EAAIoY,EAAO,GAAK,GAAU,GAK3G2wQ,EAAQtlQ,OAAS,SAAUu7L,GAEzB,OADAA,EAAc5mM,EAAOqL,OAAOu7L,EAAY,GAAK,GAASA,EAAY,GAAK,KACpD,IAAM,GAASA,EAAY,IAAM,GAASA,CAC/D,EACO+pE,CACT,CanBY9D,CAAS/vQ,EAAEkD,UAAUqL,OAAO,CAAC,EAAG,KACxC,OAAOiiQ,EAAiB,MAAN75P,EAAa,CAAC,CAAC3oB,EAAE,GAAK2C,EAAG3C,EAAE,GAAK2C,GAAI,CAAC3C,EAAE,GAAK2C,EAAG3C,EAAE,GAAK2C,IAAMqtO,IAAYu2C,GAAc,CAAC,CAACrwQ,KAAKE,IAAIpW,EAAE,GAAK2C,EAAGgmB,GAAKC,GAAK,CAAC1S,KAAKC,IAAInW,EAAE,GAAK2C,EAAG0b,GAAKC,IAAO,CAAC,CAACqK,EAAIzS,KAAKE,IAAIpW,EAAE,GAAK2C,EAAGimB,IAAM,CAACvK,EAAInI,KAAKC,IAAInW,EAAE,GAAK2C,EAAG2b,KAChO,CACA,OAjBAtM,EAAE+C,MAAQ,SAAU4tB,GAClB,OAAO9lC,UAAUC,QAAUiY,EAAM4tB,GAAI8jP,KAAY1xQ,GACnD,EACA/C,EAAEuC,UAAY,SAAUouB,GACtB,OAAO9lC,UAAUC,QAAUyX,EAAUouB,GAAI8jP,KAAYlyQ,GACvD,EACAvC,EAAE8nB,OAAS,SAAU6I,GACnB,OAAO9lC,UAAUC,QAAUg9B,EAAO6I,GAAI8jP,KAAY3sP,GACpD,EACA9nB,EAAEwwQ,WAAa,SAAU7/O,GACvB,OAAO9lC,UAAUC,QAAe,MAAL6lC,EAAYha,EAAKC,EAAKvK,EAAKC,EAAK,MAAQqK,GAAMga,EAAE,GAAG,GAAI/Z,GAAM+Z,EAAE,GAAG,GAAItkB,GAAMskB,EAAE,GAAG,GAAIrkB,GAAMqkB,EAAE,GAAG,IAAK8jP,KAAkB,MAAN99P,EAAa,KAAO,CAAC,CAACA,EAAIC,GAAK,CAACvK,EAAIC,GAClL,EAMOmoQ,GACT,CCtCA,SAASC,GAAKv/Q,GACZ,OAAO2d,IAAK,GAAS3d,GAAK,EAC5B,CACO,SAASw/Q,GAAkB/9P,EAAItK,GACpC,IAAIi8N,EAAM,GAAI3xN,GACZiC,EAAIjC,IAAOtK,EAAK,GAAIsK,GAAM,GAAI2xN,EAAM,GAAIj8N,IAAO,GAAIooQ,GAAKpoQ,GAAMooQ,GAAK99P,IACnEtpB,EAAIi7O,EAAM,GAAImsC,GAAK99P,GAAKiC,GAAKA,EAC/B,IAAKA,EAAG,OAAO07P,GACf,SAASv2C,EAAQ9oO,EAAGC,GACd7H,EAAI,EACF6H,GAAK,GAAS,KAASA,GAAK,GAAS,IAErCA,EAAI,GAAS,KAASA,EAAI,GAAS,IAEzC,IAAIgU,EAAI7b,EAAI,GAAIonR,GAAKv/Q,GAAI0jB,GACzB,MAAO,CAAC1P,EAAI,GAAI0P,EAAI3jB,GAAI5H,EAAI6b,EAAI,GAAI0P,EAAI3jB,GAC1C,CAQA,OAPA8oO,EAAQzvN,OAAS,SAAUrZ,EAAGC,GAC5B,IAAIg/F,EAAK7mG,EAAI6H,EACXgU,EAAI,GAAK0P,GAAK,GAAK3jB,EAAIA,EAAIi/F,EAAKA,GAChC5kF,EAAI,GAAMra,EAAG,GAAIi/F,IAAO,GAAKA,GAE/B,OADIA,EAAKt7E,EAAI,IAAGtJ,GAAK,GAAK,GAAKra,GAAK,GAAKi/F,IAClC,CAAC5kF,EAAIsJ,EAAG,EAAI8J,GAAK,GAAIr1B,EAAI6b,EAAG,EAAI0P,IAAM,GAC/C,EACOmlN,CACT,CC3BO,SAAS42C,GAAmBntP,EAAQumB,GACzC,MAAO,CAACvmB,EAAQumB,EAClB,CCAO,SAAS6mO,GAAoBj+P,EAAItK,GACtC,IAAIi8N,EAAM,GAAI3xN,GACZiC,EAAIjC,IAAOtK,EAAK,GAAIsK,IAAO2xN,EAAM,GAAIj8N,KAAQA,EAAKsK,GAClD6nB,EAAI8pM,EAAM1vN,EAAIjC,EAChB,GAAI,GAAIiC,GAAK,GAAS,OAAO+7P,GAC7B,SAAS52C,EAAQ9oO,EAAGC,GAClB,IAAImzP,EAAK7pN,EAAItpC,EACXof,EAAKsE,EAAI3jB,EACX,MAAO,CAACozP,EAAK,GAAI/zO,GAAKkqB,EAAI6pN,EAAK,GAAI/zO,GACrC,CAOA,OANAypN,EAAQzvN,OAAS,SAAUrZ,EAAGC,GAC5B,IAAImzP,EAAK7pN,EAAItpC,EACXoa,EAAI,GAAMra,EAAG,GAAIozP,IAAO,GAAKA,GAE/B,OADIA,EAAKzvO,EAAI,IAAGtJ,GAAK,GAAK,GAAKra,GAAK,GAAKozP,IAClC,CAAC/4O,EAAIsJ,EAAG4lB,EAAI,GAAK5lB,GAAK,GAAK3jB,EAAIA,EAAIozP,EAAKA,GACjD,EACOtqB,CACT,CJdAs2C,GAAwB/lQ,OAAS2lQ,IAAgB,SAAUxkQ,GACzD,OAAOA,CACT,ICFA6kQ,GAAYhmQ,OAAS,SAAUrZ,EAAGC,GAChC,MAAO,CAACD,EAAG,EAAIytB,GAAK,GAAIxtB,IAAM,GAChC,EEJAy/Q,GAAmBrmQ,OAASqmQ,GEF5B,IAAIE,GAAK,SACPC,IAAM,QACNC,GAAK,OACLC,GAAK,QACLphE,GAAI,GAAK,GAAK,EAET,SAASqhE,GAAcztP,EAAQumB,GACpC,IAAIz+B,EAAI,GAAKskM,GAAI,GAAI7lK,IACnBmnO,EAAK5lQ,EAAIA,EACT6lQ,EAAKD,EAAKA,EAAKA,EACjB,MAAO,CAAC1tP,EAAS,GAAIlY,IAAMskM,IAAKihE,GAAK,EAAIC,GAAKI,EAAKC,GAAM,EAAIJ,GAAK,EAAIC,GAAKE,KAAO5lQ,GAAKulQ,GAAKC,GAAKI,EAAKC,GAAMJ,GAAKC,GAAKE,IACxH,CCVO,SAASE,GAAYngR,EAAGC,GAC7B,IAAIyW,EAAK,GAAIzW,GACXxE,EAAI,GAAIuE,GAAK0W,EACf,MAAO,CAACA,EAAK,GAAI1W,GAAKvE,EAAG,GAAIwE,GAAKxE,EACpC,CCLO,SAAS2kR,GAAiB7tP,EAAQumB,GACvC,IAAIijO,EAAOjjO,EAAMA,EACfunO,EAAOtE,EAAOA,EAChB,MAAO,CAACxpP,GAAU,MAAS,QAAWwpP,EAAOsE,GAAoBA,GAAQ,QAAWtE,EAAO,QAAWsE,GAAhD,UAAyDvnO,GAAO,SAAWijO,GAAQ,QAAWsE,GAAoB,QAAWtE,EAAtB,QAA6B,QAAWsE,KACvM,CCHO,SAASC,GAAgBtgR,EAAGC,GACjC,MAAO,CAAC,GAAIA,GAAK,GAAID,GAAI,GAAIC,GAC/B,CCFO,SAASsgR,GAAiBvgR,EAAGC,GAClC,IAAIyW,EAAK,GAAIzW,GACXxE,EAAI,EAAI,GAAIuE,GAAK0W,EACnB,MAAO,CAACA,EAAK,GAAI1W,GAAKvE,EAAG,GAAIwE,GAAKxE,EACpC,CCLO,SAAS+kR,GAAsBjuP,EAAQumB,GAC5C,MAAO,CAAC,GAAIl7B,IAAK,GAASk7B,GAAO,KAAMvmB,EACzC,CLUAytP,GAAc3mQ,OAAS,SAAUrZ,EAAGC,GAIlC,IAHA,IAGgBmvC,EAHZ/0B,EAAIpa,EACNggR,EAAK5lQ,EAAIA,EACT6lQ,EAAKD,EAAKA,EAAKA,EACRhqR,EAAI,EAAmBA,EAXnB,KAcwBiqR,GAAZD,GAAvB5lQ,GAAK+0B,GAFA/0B,GAAKulQ,GAAKC,GAAKI,EAAKC,GAAMJ,GAAKC,GAAKE,IAAOhgR,IAC1C2/Q,GAAK,EAAIC,GAAKI,EAAKC,GAAM,EAAIJ,GAAK,EAAIC,GAAKE,KACjB5lQ,GAAa4lQ,EAAKA,IAC9C,GAAI7wO,GAAS,OAJ+Bn5C,GAMlD,MAAO,CAAC0oN,GAAI3+M,GAAK4/Q,GAAK,EAAIC,GAAKI,EAAKC,GAAM,EAAIJ,GAAK,EAAIC,GAAKE,IAAO,GAAI5lQ,GAAI,GAAK,GAAIA,GAAKskM,IAC3F,ECjBAwhE,GAAY9mQ,OAAS2lQ,GAAgBvxP,ICDrC2yP,GAAiB/mQ,OAAS,SAAUrZ,EAAGC,GACrC,IAEEmvC,EAFE0J,EAAM74C,EACRhK,EAAI,GAEN,EAAG,CACD,IAAI8lR,EAAOjjO,EAAMA,EACfunO,EAAOtE,EAAOA,EAChBjjO,GAAO1J,GAAS0J,GAAO,SAAWijO,GAAQ,QAAWsE,GAAoB,QAAWtE,EAAtB,QAA6B,QAAWsE,KAAUpgR,IAAM,SAAW87Q,GAAQ,QAAesE,GAAwB,QAAetE,EAA/B,QAAsC,QAAW,GAAKsE,IACxN,OAAS,GAAIjxO,GAAS,MAAan5C,EAAI,GACvC,MAAO,CAAC+J,GAAK,OAAU+7Q,EAAOjjO,EAAMA,IAAoBijO,GAAoBA,EAAOA,EAAOA,GAAQ,QAAW,QAAWA,GAAvD,SAApB,UAAqFjjO,EACpI,ECXAwnO,GAAgBjnQ,OAAS2lQ,GAAgB,ICEzCuB,GAAiBlnQ,OAAS2lQ,IAAgB,SAAUxkQ,GAClD,OAAO,EAAIiT,GAAKjT,EAClB,ICLAgmQ,GAAsBnnQ,OAAS,SAAUrZ,EAAGC,GAC1C,MAAO,EAAEA,EAAG,EAAIwtB,GAAK,GAAIztB,IAAM,GACjC,ECPO,IAAI,GAAMgP,KAAKoG,IAIX,IAHOpG,KAAKye,KACJze,KAAKqG,MACNrG,KAAKisJ,KACNjsJ,KAAKkC,KAWX,IAVMlC,KAAK6gC,IACH7gC,KAAKwX,MACPxX,KAAKy/B,IACLz/B,KAAKE,IACLF,KAAKC,IACLD,KAAK0B,IACH1B,KAAKwoB,MACNxoB,KAAK0+L,KAGN1+L,KAAKoC,KAEX,IADMpC,KAAK4O,IACD,MAEV,GAAK5O,KAAK+B,GACV,GAAS,GAAK,EAGd0vQ,IADUzxQ,KAAK0xQ,QACP,GAAK,IACJ,GAAK,IAOlB,SAAS,GAAK1gR,GACnB,OAAOA,EAAI,EAAI,GAASA,GAAK,GAAK,GAASgP,KAAKoE,KAAKpT,EACvD,CAIO,SAAS,GAAKA,GACnB,OAAOA,EAAI,EAAIgP,KAAK2C,KAAK3R,GAAK,CAChC,CCrCO,SAAS2gR,GAAsBxtP,EAAI2lB,GACxC,IAEE1J,EAFEwxO,EAAWztP,EAAK,GAAI2lB,GACtB7iD,EAAI,GAEN,GAAG6iD,GAAO1J,GAAS0J,EAAM,GAAIA,GAAO8nO,IAAa,EAAI,GAAI9nO,UAAc,GAAI1J,GAAS,MAAan5C,EAAI,GACrG,OAAO6iD,EAAM,CACf,CAUO,IAAI+nO,GATJ,SAA6BpqQ,EAAIC,EAAIyc,GAC1C,SAASwrP,EAAQpsP,EAAQumB,GACvB,MAAO,CAACriC,EAAK8b,EAAS,GAAIumB,EAAM6nO,GAAsBxtP,EAAI2lB,IAAOpiC,EAAK,GAAIoiC,GAC5E,CAIA,OAHA6lO,EAAQtlQ,OAAS,SAAUrZ,EAAGC,GAC5B,OAAOA,EAAI,GAAKA,EAAIyW,GAAK,CAAC1W,GAAKyW,EAAK,GAAIxW,IAAK,IAAM,EAAIA,EAAI,GAAI,EAAIA,IAAMkzB,GAC3E,EACOwrP,CACT,CAC0BmC,CAAoBL,GAAQ,GAAQA,GAAO,ICfrE,IAAIM,GAAc,KACdC,GAAuB,CAE3B,YAAa,aAAc,QAAS,YAAa,SAAU,SAAU,YAAa,YAAa,WAAY,WAE3G,cAAe,WAAY,WAAY,QAAS,WAAY,SAAU,QAAS,UAAW,QAqB1F,SAAS,GAAWtjR,EAAMujR,GACxB,IAAKvjR,GAAwB,iBAATA,EAClB,MAAM,IAAIs/B,MAAM,0CAGlB,OADAt/B,EAAOA,EAAKiW,cACRhe,UAAUC,OAAS,GACrBsrR,GAAYxjR,GAtBhB,SAAgBA,EAAM7D,GACpB,OAAO,SAASg8Q,IACd,IAAI1iQ,EAAItZ,IAWR,OAVAsZ,EAAEzV,KAAOA,EACTyV,EAAEvX,KAAO,KAAUi6Q,WAAW1iQ,GAC9BA,EAAE4pB,KAAO5pB,EAAE4pB,MAAQ,WACjB,IAAI7iB,EAAI27P,IAKR,OAJAmL,GAAqB7jR,SAAQ,SAAUlD,GACjCkZ,EAAElZ,IAAOigB,EAAEjgB,GAAMkZ,EAAElZ,KACzB,IACAigB,EAAEte,KAAKs5Q,YAAY/hQ,EAAEvX,KAAKs5Q,eACnBh7P,CACT,EACOilO,GAAchsO,EACvB,CACF,CAOwB,CAAOzV,EAAMujR,GAC1BlsR,MAEAmsR,GAAYxjR,IAAS,IAEhC,CACA,SAASyjR,GAAkBF,GACzB,OAAOA,GAAQA,EAAKrlR,MAAQmlR,EAC9B,CACA,IAAIG,GAAc,CAEhBE,OAAQ,GACRC,UCLa,WACb,IAAIxtQ,EACFspQ,EAEAmE,EAEAC,EAGAC,EAEAz1C,EARA01C,EAAUL,KAEVM,EAAS5C,KAAiB9wQ,OAAO,CAAC,IAAK,IAAI4kB,OAAO,EAAE,EAAG,OAAO4rP,UAAU,CAAC,GAAI,KAG7EmD,EAAS7C,KAAiB9wQ,OAAO,CAAC,IAAK,IAAI4kB,OAAO,EAAE,EAAG,OAAO4rP,UAAU,CAAC,EAAG,KAI5EoD,EAAc,CACZ7hR,MAAO,SAAeC,EAAGC,GACvB8rO,EAAS,CAAC/rO,EAAGC,EACf,GAEJ,SAAS4hR,EAAUjtE,GACjB,IAAI50M,EAAI40M,EAAY,GAClB30M,EAAI20M,EAAY,GAClB,OAAOm3B,EAAS,KAAOu1C,EAAavhR,MAAMC,EAAGC,GAAI8rO,IAAYw1C,EAAYxhR,MAAMC,EAAGC,GAAI8rO,KAAYy1C,EAAYzhR,MAAMC,EAAGC,GAAI8rO,EAC7H,CA2CA,SAAS9gL,IAEP,OADAp3C,EAAQspQ,EAAc,KACf0E,CACT,CACA,OA9CAA,EAAUxoQ,OAAS,SAAUu7L,GAC3B,IAAIn5M,EAAIgmR,EAAQ5zQ,QACd/U,EAAI2oR,EAAQp0Q,YACZrN,GAAK40M,EAAY,GAAK97M,EAAE,IAAM2C,EAC9BwE,GAAK20M,EAAY,GAAK97M,EAAE,IAAM2C,EAChC,OAAQwE,GAAK,KAASA,EAAI,MAASD,IAAM,MAASA,GAAK,KAAQ0hR,EAASzhR,GAAK,MAASA,EAAI,MAASD,IAAM,MAASA,GAAK,KAAQ2hR,EAASF,GAASpoQ,OAAOu7L,EAC1J,EACAitE,EAAU7vD,OAAS,SAAUA,GAC3B,OAAOn+M,GAASspQ,IAAgBnrD,EAASn+M,GAjE1BiuQ,EAiEoD,CAACL,EAAQzvD,OAAOmrD,EAAcnrD,GAAS0vD,EAAO1vD,OAAOA,GAAS2vD,EAAO3vD,OAAOA,IAhE7IruM,EAAIm+P,EAAQlsR,OAgEmCie,EA/D5C,CACL9T,MAAO,SAAeC,EAAGC,GAEvB,IADA,IAAIhK,GAAK,IACAA,EAAI0tB,GAAGm+P,EAAQ7rR,GAAG8J,MAAMC,EAAGC,EACtC,EACAqyQ,OAAQ,WAEN,IADA,IAAIr8Q,GAAK,IACAA,EAAI0tB,GAAGm+P,EAAQ7rR,GAAGq8Q,QAC7B,EACArlC,UAAW,WAET,IADA,IAAIh3O,GAAK,IACAA,EAAI0tB,GAAGm+P,EAAQ7rR,GAAGg3O,WAC7B,EACAC,QAAS,WAEP,IADA,IAAIj3O,GAAK,IACAA,EAAI0tB,GAAGm+P,EAAQ7rR,GAAGi3O,SAC7B,EACA+lC,aAAc,WAEZ,IADA,IAAIh9Q,GAAK,IACAA,EAAI0tB,GAAGm+P,EAAQ7rR,GAAGg9Q,cAC7B,EACAC,WAAY,WAEV,IADA,IAAIj9Q,GAAK,IACAA,EAAI0tB,GAAGm+P,EAAQ7rR,GAAGi9Q,YAC7B,IA1BJ,IAAmB4O,EACbn+P,CAiEJ,EACAk+P,EAAUlqP,UAAY,SAAU8D,GAC9B,OAAK9lC,UAAUC,QACf6rR,EAAQ9pP,UAAU8D,GAAIimP,EAAO/pP,UAAU8D,GAAIkmP,EAAOhqP,UAAU8D,GACrDwvB,KAFuBw2N,EAAQ9pP,WAGxC,EACAkqP,EAAUh0Q,MAAQ,SAAU4tB,GAC1B,OAAK9lC,UAAUC,QACf6rR,EAAQ5zQ,MAAM4tB,GAAIimP,EAAO7zQ,MAAU,IAAJ4tB,GAAWkmP,EAAO9zQ,MAAM4tB,GAChDomP,EAAUx0Q,UAAUo0Q,EAAQp0Q,cAFLo0Q,EAAQ5zQ,OAGxC,EACAg0Q,EAAUx0Q,UAAY,SAAUouB,GAC9B,IAAK9lC,UAAUC,OAAQ,OAAO6rR,EAAQp0Q,YACtC,IAAI5R,EAAIgmR,EAAQ5zQ,QACd7N,GAAKy7B,EAAE,GACPx7B,GAAKw7B,EAAE,GAIT,OAHA6lP,EAAeG,EAAQp0Q,UAAUouB,GAAG6/O,WAAW,CAAC,CAACt7Q,EAAI,KAAQvE,EAAGwE,EAAI,KAAQxE,GAAI,CAACuE,EAAI,KAAQvE,EAAGwE,EAAI,KAAQxE,KAAKu2N,OAAO4vD,GACxHL,EAAcG,EAAOr0Q,UAAU,CAACrN,EAAI,KAAQvE,EAAGwE,EAAI,KAAQxE,IAAI6/Q,WAAW,CAAC,CAACt7Q,EAAI,KAAQvE,EAAI,GAASwE,EAAI,IAAQxE,EAAI,IAAU,CAACuE,EAAI,KAAQvE,EAAI,GAASwE,EAAI,KAAQxE,EAAI,MAAWu2N,OAAO4vD,GAC3LJ,EAAcG,EAAOt0Q,UAAU,CAACrN,EAAI,KAAQvE,EAAGwE,EAAI,KAAQxE,IAAI6/Q,WAAW,CAAC,CAACt7Q,EAAI,KAAQvE,EAAI,GAASwE,EAAI,KAAQxE,EAAI,IAAU,CAACuE,EAAI,KAAQvE,EAAI,GAASwE,EAAI,KAAQxE,EAAI,MAAWu2N,OAAO4vD,GACpL32N,GACT,EACA42N,EAAUtG,UAAY,SAAUn6D,EAAQ1nL,GACtC,OAAO6hP,GAAUsG,EAAWzgE,EAAQ1nL,EACtC,EACAmoP,EAAUrG,QAAU,SAAUniP,EAAMK,GAClC,OAAO8hP,GAAQqG,EAAWxoP,EAAMK,EAClC,EACAmoP,EAAUpG,SAAW,SAAU34Q,EAAO42B,GACpC,OAAO+hP,GAASoG,EAAW/+Q,EAAO42B,EACpC,EACAmoP,EAAUnG,UAAY,SAAU34Q,EAAQ22B,GACtC,OAAOgiP,GAAUmG,EAAW9+Q,EAAQ22B,EACtC,EAKOmoP,EAAUh0Q,MAAM,KACzB,ED/DEk0Q,mBdvCa,WACb,OAAOlM,GAAWqJ,IAAuBrxQ,MAAM,QAAQ4vQ,UAAU,QACnE,EcsCEuE,qBbxCa,WACb,OAAOnM,GAAWuJ,IAAyBvxQ,MAAM,SAAS4vQ,UAAU,QACtE,EauCEwE,eXrBa,WACb,OAAO1D,GAAgBkB,IAAmB5xQ,MAAM,OAAO2wQ,UAAU,CAAC,GAAI,IACxE,EWoBE0D,eAAgB,GAChBC,iBT/Ba,WACb,OAAO5D,GAAgBoB,IAAqB9xQ,MAAM,SAAS+kB,OAAO,CAAC,EAAG,SACxE,ES8BEwvP,WR3Ba,WACb,OAAOvM,GAAWmK,IAAenyQ,MAAM,QACzC,EQ0BEw0Q,gBVjDa,WACb,OAAOxM,GAAW6J,IAAoB7xQ,MAAM,OAC9C,EUgDEy0Q,SP9Ca,WACb,OAAOzM,GAAWsK,IAAatyQ,MAAM,SAAS4vQ,UAAU,GAC1D,EO6CEhkP,SEnDa,WACb,IAOE+/O,EACAjpB,EAGA7uO,EACAvK,EACAC,EAWAvD,EACAspQ,EAzBE1hR,EAAI,EACN8wQ,EAAK,EACLC,EAAK,EACLlvC,EAAK,EACLC,EAAK,EAEL15M,EAAQ,EAIRpC,EAAK,KAKL6yL,EAAK,EACLC,EAAK,EACL1rM,EAAY,GAAY,CACtB9I,MAAO,SAAeC,EAAGC,GACvB,IAAIkT,EAAI0iQ,EAAW,CAAC71Q,EAAGC,IACvBlL,KAAKi9N,OAAOjyN,MAAMoT,EAAE,GAAIA,EAAE,GAC5B,IAEFkqQ,EAAW,GAGb,SAASpyN,IAIP,OAHAqpJ,EAAK74M,EAAI6hO,EACT/oB,EAAK94M,EAAI8hO,EACT1pN,EAAQspQ,EAAc,KACftH,CACT,CACA,SAASA,EAAW1iQ,GAClB,IAAInT,EAAImT,EAAE,GAAKmhM,EACbr0M,EAAIkT,EAAE,GAAKohM,EACb,GAAI1wL,EAAO,CACT,IAAI/qB,EAAImH,EAAIu5Q,EAAKx5Q,EAAIuwP,EACrBvwP,EAAIA,EAAIw5Q,EAAKv5Q,EAAIswP,EACjBtwP,EAAInH,CACN,CACA,MAAO,CAACkH,EAAIusQ,EAAItsQ,EAAIusQ,EACtB,CA+CA,OA9CAqJ,EAAWx8P,OAAS,SAAUlG,GAC5B,IAAInT,EAAImT,EAAE,GAAKo5P,EACbtsQ,EAAIkT,EAAE,GAAKq5P,EACb,GAAI3oP,EAAO,CACT,IAAI/qB,EAAImH,EAAIu5Q,EAAKx5Q,EAAIuwP,EACrBvwP,EAAIA,EAAIw5Q,EAAKv5Q,EAAIswP,EACjBtwP,EAAInH,CACN,CACA,MAAO,CAACkH,EAAIs0M,EAAIr0M,EAAIs0M,EACtB,EACAshE,EAAW7jD,OAAS,SAAUA,GAC5B,OAAOn+M,GAASspQ,IAAgBnrD,EAASn+M,EAAQA,EAAQhL,EAAUw0Q,EAASF,EAAcnrD,GAC5F,EACA6jD,EAAWwH,SAAW,SAAU5hP,GAC9B,OAAO9lC,UAAUC,QAAUynR,EAAW5hP,EAAGha,EAAKC,EAAKvK,EAAKC,EAAK,KAAM6zC,KAAWoyN,CAChF,EACAxH,EAAWyF,WAAa,SAAU7/O,GAChC,OAAO9lC,UAAUC,QAAUynR,EAAgB,MAAL5hP,GAAaha,EAAKC,EAAKvK,EAAKC,EAAK,KAAM,IAAYiiQ,GAAc53P,GAAMga,EAAE,GAAG,GAAI/Z,GAAM+Z,EAAE,GAAG,GAAItkB,GAAMskB,EAAE,GAAG,GAAIrkB,GAAMqkB,EAAE,GAAG,IAAKwvB,KAAiB,MAANxpC,EAAa,KAAO,CAAC,CAACA,EAAIC,GAAK,CAACvK,EAAIC,GACrN,EACAy+P,EAAWhoQ,MAAQ,SAAU4tB,GAC3B,OAAO9lC,UAAUC,QAAU6F,GAAKggC,EAAGwvB,KAAWxvD,CAChD,EACAo6Q,EAAWxoQ,UAAY,SAAUouB,GAC/B,OAAO9lC,UAAUC,QAAU22Q,GAAM9wO,EAAE,GAAI+wO,GAAM/wO,EAAE,GAAIwvB,KAAW,CAACshN,EAAIC,EACrE,EACAqJ,EAAWp5P,MAAQ,SAAUgf,GAC3B,OAAO9lC,UAAUC,QAAqC26P,EAAK,GAAhC1sO,EAAQ4X,EAAI,IAAM,IAA0B+9O,EAAK,GAAI31P,GAAQonC,KAAWpnC,EAAQ,EAC7G,EACAgyP,EAAWwI,SAAW,SAAU5iP,GAC9B,OAAO9lC,UAAUC,QAAU0nO,EAAK7hM,GAAK,EAAI,EAAGwvB,KAAWqyK,EAAK,CAC9D,EACAu4C,EAAWyI,SAAW,SAAU7iP,GAC9B,OAAO9lC,UAAUC,QAAU2nO,EAAK9hM,GAAK,EAAI,EAAGwvB,KAAWsyK,EAAK,CAC9D,EACAs4C,EAAW0F,UAAY,SAAUn6D,EAAQ1nL,GACvC,OAAO6hP,GAAU1F,EAAYz0D,EAAQ1nL,EACvC,EACAm8O,EAAW2F,QAAU,SAAUniP,EAAMK,GACnC,OAAO8hP,GAAQ3F,EAAYx8O,EAAMK,EACnC,EACAm8O,EAAW4F,SAAW,SAAU34Q,EAAO42B,GACrC,OAAO+hP,GAAS5F,EAAY/yQ,EAAO42B,EACrC,EACAm8O,EAAW6F,UAAY,SAAU34Q,EAAQ22B,GACvC,OAAOgiP,GAAU7F,EAAY9yQ,EAAQ22B,EACvC,EACOm8O,CACT,EFtCE0M,SZhDa,WACb,OAAOjD,GAAmBD,IAAaxxQ,MAAM,IAAM,GACrD,EY+CE20Q,UDvCa,WACb,OAAO3M,GAAWgL,IAAchzQ,MAAM,QACxC,ECsCE40Q,cNzCa,WACb,OAAO5M,GAAWuK,IAAkBvyQ,MAAM,QAC5C,EMwCE60Q,aLrDa,WACb,OAAO7M,GAAWyK,IAAiBzyQ,MAAM,OAAO4vQ,UAAU,GAAK,GACjE,EKoDEkF,cJlDa,WACb,OAAO9M,GAAW0K,IAAkB1yQ,MAAM,KAAK4vQ,UAAU,IAC3D,EIiDEmF,mBHtDa,WACb,IAAI93Q,EAAIw0Q,GAAmBkB,IACzB5tP,EAAS9nB,EAAE8nB,OACX5kB,EAASlD,EAAEkD,OAOb,OANAlD,EAAE8nB,OAAS,SAAU6I,GACnB,OAAO9lC,UAAUC,OAASg9B,EAAO,EAAE6I,EAAE,GAAIA,EAAE,KAAsB,EAAdA,EAAI7I,KAAa,IAAK6I,EAAE,GAC7E,EACA3wB,EAAEkD,OAAS,SAAUytB,GACnB,OAAO9lC,UAAUC,OAASoY,EAAO,CAACytB,EAAE,GAAIA,EAAE,GAAIA,EAAE7lC,OAAS,EAAI6lC,EAAE,GAAK,GAAK,KAAsB,EAAdA,EAAIztB,KAAa,GAAIytB,EAAE,GAAIA,EAAE,GAAK,GACrH,EACOztB,EAAO,CAAC,EAAG,EAAG,KAAKH,MAAM,QAClC,GG6CA,IAAK,IAAI,MAAOqzQ,GACd,GAAW,GAAKA,GAAY,KG/D9B,SAAS2B,GAAWnhQ,EAAItK,EAAIxV,GAC1B,IAAI3B,EAAI,GAAMyhB,EAAItK,EAAK,GAASxV,GAAI0G,OAAO8O,GAC3C,OAAO,SAAUpX,GACf,OAAOC,EAAE8lB,KAAI,SAAU9lB,GACrB,MAAO,CAACD,EAAGC,EACb,GACF,CACF,CACA,SAAS6iR,GAAWrhQ,EAAItK,EAAIxV,GAC1B,IAAI3B,EAAI,GAAMyhB,EAAItK,EAAK,GAASxV,GAAI2G,OAAO6O,GAC3C,OAAO,SAAUlX,GACf,OAAOD,EAAE+lB,KAAI,SAAU/lB,GACrB,MAAO,CAACA,EAAGC,EACb,GACF,CACF,CACe,SAAS8iR,KACtB,IAAI5rQ,EACFsK,EACAwyP,EACAH,EACA18P,EACAsK,EACAwyP,EACAH,EAKA/zQ,EACAC,EACA0e,EACAC,EAPAjd,EAAK,GACLC,EAAKD,EACLqhR,EAAK,GACLC,EAAK,IAKLtrP,EAAY,IACd,SAASorP,IACP,MAAO,CACLrlR,KAAM,kBACNk3M,YAAaxgL,IAEjB,CACA,SAASA,IACP,OAAO,GAAM6mI,GAAK64G,EAAKkP,GAAMA,EAAI/O,EAAI+O,GAAIj9P,IAAIpH,GAAGrW,OAAO,GAAM2yJ,GAAK84G,EAAKkP,GAAMA,EAAI/O,EAAI+O,GAAIl9P,IAAInH,IAAItW,OAAO,GAAM2yJ,GAAKx5I,EAAK9f,GAAMA,EAAIwV,EAAIxV,GAAI2D,QAAO,SAAUtF,GACzJ,OAAO,GAAIA,EAAIgjR,GAAM,EACvB,IAAGj9P,IAAI/lB,IAAIsI,OAAO,GAAM2yJ,GAAKv5I,EAAK9f,GAAMA,EAAIwV,EAAIxV,GAAI0D,QAAO,SAAUrF,GACnE,OAAO,GAAIA,EAAIgjR,GAAM,EACvB,IAAGl9P,IAAI9lB,GACT,CA0DA,OAzDA8iR,EAAU3uP,MAAQ,WAChB,OAAOA,IAAQrO,KAAI,SAAU6uL,GAC3B,MAAO,CACLl3M,KAAM,aACNk3M,YAAaA,EAEjB,GACF,EACAmuE,EAAU93M,QAAU,WAClB,MAAO,CACLvtE,KAAM,UACNk3M,YAAa,CAACj2L,EAAEm1P,GAAIxrQ,OAAOsW,EAAEs1P,GAAIn4P,MAAM,GAAI4C,EAAEs1P,GAAItuP,UAAU5J,MAAM,GAAI6C,EAAEm1P,GAAIpuP,UAAU5J,MAAM,KAE/F,EACAgnQ,EAAU3hE,OAAS,SAAU3lL,GAC3B,OAAK9lC,UAAUC,OACRmtR,EAAUG,YAAYznP,GAAG0nP,YAAY1nP,GADdsnP,EAAUI,aAE1C,EACAJ,EAAUG,YAAc,SAAUznP,GAChC,OAAK9lC,UAAUC,QACfk+Q,GAAMr4O,EAAE,GAAG,GAAIw4O,GAAMx4O,EAAE,GAAG,GAC1Bs4O,GAAMt4O,EAAE,GAAG,GAAIy4O,GAAMz4O,EAAE,GAAG,GACtBq4O,EAAKG,IAAIx4O,EAAIq4O,EAAIA,EAAKG,EAAIA,EAAKx4O,GAC/Bs4O,EAAKG,IAAIz4O,EAAIs4O,EAAIA,EAAKG,EAAIA,EAAKz4O,GAC5BsnP,EAAUprP,UAAUA,IALG,CAAC,CAACm8O,EAAIC,GAAK,CAACE,EAAIC,GAMhD,EACA6O,EAAUI,YAAc,SAAU1nP,GAChC,OAAK9lC,UAAUC,QACf6rB,GAAMga,EAAE,GAAG,GAAItkB,GAAMskB,EAAE,GAAG,GAC1B/Z,GAAM+Z,EAAE,GAAG,GAAIrkB,GAAMqkB,EAAE,GAAG,GACtBha,EAAKtK,IAAIskB,EAAIha,EAAIA,EAAKtK,EAAIA,EAAKskB,GAC/B/Z,EAAKtK,IAAIqkB,EAAI/Z,EAAIA,EAAKtK,EAAIA,EAAKqkB,GAC5BsnP,EAAUprP,UAAUA,IALG,CAAC,CAAClW,EAAIC,GAAK,CAACvK,EAAIC,GAMhD,EACA2rQ,EAAUvmO,KAAO,SAAU/gB,GACzB,OAAK9lC,UAAUC,OACRmtR,EAAUK,UAAU3nP,GAAG4nP,UAAU5nP,GADVsnP,EAAUM,WAE1C,EACAN,EAAUK,UAAY,SAAU3nP,GAC9B,OAAK9lC,UAAUC,QACfotR,GAAMvnP,EAAE,GAAIwnP,GAAMxnP,EAAE,GACbsnP,GAFuB,CAACC,EAAIC,EAGrC,EACAF,EAAUM,UAAY,SAAU5nP,GAC9B,OAAK9lC,UAAUC,QACf+L,GAAM85B,EAAE,GAAI75B,GAAM65B,EAAE,GACbsnP,GAFuB,CAACphR,EAAIC,EAGrC,EACAmhR,EAAUprP,UAAY,SAAU8D,GAC9B,OAAK9lC,UAAUC,QACf+hC,GAAa8D,EACbz7B,EAAI6iR,GAAWnhQ,EAAItK,EAAI,IACvBnX,EAAI6iR,GAAWrhQ,EAAItK,EAAIwgB,GACvBhZ,EAAIkkQ,GAAW9O,EAAIG,EAAI,IACvBt1P,EAAIkkQ,GAAWhP,EAAIG,EAAIt8O,GAChBorP,GANuBprP,CAOhC,EACOorP,EAAUG,YAAY,CAAC,EAAE,KAAM,GAAK,IAAU,CAAC,IAAK,GAAK,MAAWC,YAAY,CAAC,EAAE,KAAM,GAAK,IAAU,CAAC,IAAK,GAAK,KAC5H,CClGA,SAAS,KAAQ,CACjB,IAAIG,GAAQ,CAAC,GAAI,CAAC,CAAC,CAAC,EAAK,KAAM,CAAC,GAAK,KAAQ,CAAC,CAAC,CAAC,IAAK,GAAM,CAAC,EAAK,OAAQ,CAAC,CAAC,CAAC,IAAK,GAAM,CAAC,GAAK,KAAQ,CAAC,CAAC,CAAC,EAAK,IAAM,CAAC,IAAK,KAAQ,CAAC,CAAC,CAAC,EAAK,KAAM,CAAC,GAAK,IAAO,CAAC,CAAC,EAAK,IAAM,CAAC,IAAK,KAAQ,CAAC,CAAC,CAAC,EAAK,IAAM,CAAC,EAAK,OAAQ,CAAC,CAAC,CAAC,EAAK,IAAM,CAAC,GAAK,KAAQ,CAAC,CAAC,CAAC,GAAK,GAAM,CAAC,EAAK,MAAQ,CAAC,CAAC,CAAC,EAAK,KAAM,CAAC,EAAK,MAAQ,CAAC,CAAC,CAAC,GAAK,GAAM,CAAC,EAAK,KAAO,CAAC,CAAC,IAAK,GAAM,CAAC,EAAK,OAAQ,CAAC,CAAC,CAAC,IAAK,GAAM,CAAC,EAAK,MAAQ,CAAC,CAAC,CAAC,GAAK,GAAM,CAAC,IAAK,KAAQ,CAAC,CAAC,CAAC,EAAK,KAAM,CAAC,IAAK,KAAQ,CAAC,CAAC,CAAC,GAAK,GAAM,CAAC,EAAK,OAAQ,IAG7c,SAASC,KACP,IAAI5hR,EAAK,EACPC,EAAK,EACL+uB,EAAS6yP,EACX,SAASD,EAAShuP,EAAQkuP,GACxB,OAAOA,EAAG19P,KAAI,SAAU7uB,GACtB,OAAOwsR,EAAQnuP,EAAQr+B,EACzB,GACF,CAIA,SAASwsR,EAAQnuP,EAAQr+B,GACvB,IAAIysR,EAAW,GACbC,EAAQ,GAaV,OASF,SAAkBruP,EAAQr+B,EAAO9B,GAC/B,IAEE4K,EACAC,EACA9G,EACAE,EACAD,EACAsqB,EAPEoxL,EAAkB,IAAIt/K,MACxBu/K,EAAgB,IAAIv/K,MAStBx1B,EAAIC,GAAK,EACT5G,EAAKk8B,EAAO,IAAMr+B,EAClBosR,GAAMjqR,GAAM,GAAG8D,QAAQ44M,GACvB,OAAS/1M,EAAI2B,EAAK,GAChBxI,EAAKE,EAAIA,EAAKk8B,EAAOv1B,EAAI,IAAM9I,EAC/BosR,GAAMnqR,EAAKE,GAAM,GAAG8D,QAAQ44M,GAE9ButE,GAAMjqR,GAAM,GAAG8D,QAAQ44M,GAGvB,OAAS91M,EAAI2B,EAAK,GAAG,CAKnB,IAJA5B,GAAK,EACL3G,EAAKk8B,EAAOt1B,EAAI0B,EAAKA,IAAOzK,EAC5BkC,EAAKm8B,EAAOt1B,EAAI0B,IAAOzK,EACvBosR,GAAMjqR,GAAM,EAAID,GAAM,GAAG+D,QAAQ44M,KACxB/1M,EAAI2B,EAAK,GAChBxI,EAAKE,EAAIA,EAAKk8B,EAAOt1B,EAAI0B,EAAKA,EAAK3B,EAAI,IAAM9I,EAC7CwsB,EAAKtqB,EAAIA,EAAKm8B,EAAOt1B,EAAI0B,EAAK3B,EAAI,IAAM9I,EACxCosR,GAAMnqR,EAAKE,GAAM,EAAID,GAAM,EAAIsqB,GAAM,GAAGvmB,QAAQ44M,GAElDutE,GAAMjqR,EAAKD,GAAM,GAAG+D,QAAQ44M,EAC9B,CAGA/1M,GAAK,EACL5G,EAAKm8B,EAAOt1B,EAAI0B,IAAOzK,EACvBosR,GAAMlqR,GAAM,GAAG+D,QAAQ44M,GACvB,OAAS/1M,EAAI2B,EAAK,GAChB+hB,EAAKtqB,EAAIA,EAAKm8B,EAAOt1B,EAAI0B,EAAK3B,EAAI,IAAM9I,EACxCosR,GAAMlqR,GAAM,EAAIsqB,GAAM,GAAGvmB,QAAQ44M,GAGnC,SAASA,EAAO9qL,GACd,IAIE7yB,EACAmxC,EALE9tB,EAAQ,CAACwP,EAAK,GAAG,GAAKjrB,EAAGirB,EAAK,GAAG,GAAKhrB,GACxC2jB,EAAM,CAACqH,EAAK,GAAG,GAAKjrB,EAAGirB,EAAK,GAAG,GAAKhrB,GACpCokK,EAAatnK,EAAM0e,GACnB8oJ,EAAWxnK,EAAM6mB,IAGfxrB,EAAI28M,EAAc1wC,KAChB96H,EAAIurK,EAAgBvwC,YACfwwC,EAAc38M,EAAEwrB,YAChBkxL,EAAgBvrK,EAAE9tB,OACrBrjB,IAAMmxC,GACRnxC,EAAEs8M,KAAKp/M,KAAKsuB,GACZxuB,EAASgD,EAAEs8M,OAEXI,EAAgB18M,EAAEqjB,OAASs5L,EAAcxrK,EAAE3lB,KAAO,CAChDnI,MAAOrjB,EAAEqjB,MACTmI,IAAK2lB,EAAE3lB,IACP8wL,KAAMt8M,EAAEs8M,KAAKpsM,OAAOihC,EAAEmrK,gBAInBK,EAAc38M,EAAEwrB,KACvBxrB,EAAEs8M,KAAKp/M,KAAKsuB,GACZmxL,EAAc38M,EAAEwrB,IAAM2gJ,GAAYnsK,IAE3BA,EAAI08M,EAAgBvwC,KACzBh7H,EAAIwrK,EAAc1wC,YACbywC,EAAgB18M,EAAEqjB,cAClBs5L,EAAcxrK,EAAE3lB,KACnBxrB,IAAMmxC,GACRnxC,EAAEs8M,KAAKp/M,KAAKsuB,GACZxuB,EAASgD,EAAEs8M,OAEXI,EAAgBvrK,EAAE9tB,OAASs5L,EAAc38M,EAAEwrB,KAAO,CAChDnI,MAAO8tB,EAAE9tB,MACTmI,IAAKxrB,EAAEwrB,IACP8wL,KAAMnrK,EAAEmrK,KAAKpsM,OAAOlQ,EAAEs8M,gBAInBI,EAAgB18M,EAAEqjB,OACzBrjB,EAAEs8M,KAAKhqM,QAAQ+Q,GACfq5L,EAAgB18M,EAAEqjB,MAAQ4oJ,GAAcjsK,GAG1C08M,EAAgBzwC,GAAc0wC,EAAcxwC,GAAY,CACtD9oJ,MAAO4oJ,EACPzgJ,IAAK2gJ,EACLmwC,KAAM,CAACj5L,EAAOmI,GAGpB,CArDA0/P,GAAMlqR,GAAM,GAAG+D,QAAQ44M,EAsDzB,CArHE8tE,CAAStuP,EAAQr+B,GAAO,SAAUw9M,GAChC/jL,EAAO+jL,EAAMn/K,EAAQr+B,GAuJ3B,SAAcw9M,GACZ,IAAIz+M,EAAI,EACN0tB,EAAI+wL,EAAK9+M,OACT+nD,EAAO+2J,EAAK/wL,EAAI,GAAG,GAAK+wL,EAAK,GAAG,GAAKA,EAAK/wL,EAAI,GAAG,GAAK+wL,EAAK,GAAG,GAChE,OAASz+M,EAAI0tB,GAAGg6B,GAAQ+2J,EAAKz+M,EAAI,GAAG,GAAKy+M,EAAKz+M,GAAG,GAAKy+M,EAAKz+M,EAAI,GAAG,GAAKy+M,EAAKz+M,GAAG,GAC/E,OAAO0nD,CACT,CA5JU,CAAK+2J,GAAQ,EAAGivE,EAASruR,KAAK,CAACo/M,IAAYkvE,EAAMtuR,KAAKo/M,EAC5D,IACAkvE,EAAMzmR,SAAQ,SAAU2mR,GACtB,IAAK,IAAgCnvE,EAA5B1+M,EAAI,EAAG0tB,EAAIggQ,EAAS/tR,OAAiBK,EAAI0tB,IAAK1tB,EACrD,IAAoD,IAAhD,IAAU0+M,EAAUgvE,EAAS1tR,IAAI,GAAI6tR,GAEvC,YADAnvE,EAAQr/M,KAAKwuR,EAInB,IACO,CACLpmR,KAAM,eACNxG,MAAOA,EACP09M,YAAa+uE,EAEjB,CAqGA,SAAS5mR,EAAMgD,GACb,OAAkB,EAAXA,EAAM,GAASA,EAAM,IAAM4B,EAAK,GAAK,CAC9C,CACA,SAAS6hR,EAAa9uE,EAAMn/K,EAAQr+B,GAClCw9M,EAAKv3M,SAAQ,SAAU4C,GACrB,IAIEiqB,EAJEhqB,EAAID,EAAM,GACZE,EAAIF,EAAM,GACV+qB,EAAS,EAAJ9qB,EACL+qB,EAAS,EAAJ9qB,EAELmpB,EAAKmM,EAAOxK,EAAKppB,EAAKmpB,GACpB9qB,EAAI,GAAKA,EAAI2B,GAAMmpB,IAAO9qB,IAC5BgqB,EAAKuL,EAAOxK,EAAKppB,EAAKmpB,EAAK,GAC3B/qB,EAAM,GAAKC,GAAK9I,EAAQ8yB,IAAOZ,EAAKY,GAAM,IAExC/pB,EAAI,GAAKA,EAAI2B,GAAMmpB,IAAO9qB,IAC5B+pB,EAAKuL,GAAQxK,EAAK,GAAKppB,EAAKmpB,GAC5B/qB,EAAM,GAAKE,GAAK/I,EAAQ8yB,IAAOZ,EAAKY,GAAM,GAE9C,GACF,CAYA,OAXAu5P,EAASG,QAAUA,EACnBH,EAASlqP,KAAO,SAAUoC,GACxB,IAAK9lC,UAAUC,OAAQ,MAAO,CAAC+L,EAAIC,GACnC,IAAImiR,EAAK/0Q,KAAKwX,MAAMiV,EAAE,IACpBggN,EAAKzsO,KAAKwX,MAAMiV,EAAE,IAEpB,OADMsoP,GAAM,GAAKtoC,GAAM,GAAI,GAAM,gBAC1B95O,EAAKoiR,EAAIniR,EAAK65O,EAAI8nC,CAC3B,EACAA,EAAS5yP,OAAS,SAAU8K,GAC1B,OAAO9lC,UAAUC,QAAU+6B,EAAS8K,EAAI+nP,EAAe,GAAMD,GAAY5yP,IAAW6yP,CACtF,EACOD,CACT,CAQA,SAAS,GAAS7uE,EAAMovE,GAItB,IAHA,IAEE5pQ,EAFEjkB,GAAK,EACP0tB,EAAImgQ,EAAKluR,SAEFK,EAAI0tB,MAAOzJ,EAAI8pQ,GAAatvE,EAAMovE,EAAK7tR,IAAK,OAAOikB,EAC5D,OAAO,CACT,CACA,SAAS8pQ,GAAatvE,EAAM30M,GAI1B,IAHA,IAAIC,EAAID,EAAM,GACZE,EAAIF,EAAM,GACVukE,GAAY,EACLruE,EAAI,EAAG0tB,EAAI+wL,EAAK9+M,OAAQqG,EAAI0nB,EAAI,EAAG1tB,EAAI0tB,EAAG1nB,EAAIhG,IAAK,CAC1D,IAAI6a,EAAK4jM,EAAKz+M,GACZguR,EAAKnzQ,EAAG,GACRozQ,EAAKpzQ,EAAG,GACRqU,EAAKuvL,EAAKz4M,GACVkoR,EAAKh/P,EAAG,GACRi/P,EAAKj/P,EAAG,GACV,GAAIk/P,GAAgBvzQ,EAAIqU,EAAIplB,GAAQ,OAAO,EACvCmkR,EAAKjkR,GAAMmkR,EAAKnkR,GAAKD,GAAKmkR,EAAKF,IAAOhkR,EAAIikR,IAAOE,EAAKF,GAAMD,IAAI3/M,GAAYA,EAClF,CACA,OAAOA,CACT,CACA,SAAS+/M,GAAgBnxQ,EAAG8E,EAAGkC,GAC7B,IAAIjkB,EAMUkd,EAAGmH,EAAGrG,EALpB,OAEF,SAAmBf,EAAG8E,EAAGkC,GACvB,OAAQlC,EAAE,GAAK9E,EAAE,KAAOgH,EAAE,GAAKhH,EAAE,MAASgH,EAAE,GAAKhH,EAAE,KAAO8E,EAAE,GAAK9E,EAAE,GACrE,CAJSoxQ,CAAUpxQ,EAAG8E,EAAGkC,KAKT/G,EALsBD,EAAEjd,IAAMid,EAAE,KAAO8E,EAAE,KAKtCsC,EAL4CJ,EAAEjkB,GAK3Cge,EAL+C+D,EAAE/hB,GAM9Dkd,GAAKmH,GAAKA,GAAKrG,GAAKA,GAAKqG,GAAKA,GAAKnH,EAL5C,CAOA,SAAS,GAAS1X,EAAG69N,EAAM5sL,GACzB,OAAO,SAAUnX,GACf,IAAIvI,EAAK,GAAOuI,GACd9Z,EAAQixB,EAAO19B,KAAKC,IAAI+d,EAAG,GAAI,GAAKA,EAAG,GACvCjzB,EAAOizB,EAAG,GACVi4F,EAAOlrH,EAAO0hB,EACd+gC,EAAO88K,EAAO3iB,GAASl7L,EAAO1hB,EAAM0B,GAAKwpH,GAAQxpH,EAAI,GACvD,OAAO,GAAMggB,EAAQ+gC,EAAMziD,EAAMyiD,EACnC,CACF,CA8BA,SAAS+nO,GAAWluQ,GAClB0gN,GAAUpgO,KAAK5B,KAAM,KAAMshB,EAC7B,CAkGA,SAASmyN,GAAW5mD,EAAM07C,EAAIC,EAAIgvC,EAAIC,GACpC,IAAIr1P,EAAKyqK,EAAKzqK,IAAM,EAClBC,EAAKwqK,EAAKxqK,IAAM,EAChB44P,EAAO1yC,EAAKC,EAAK,EACnB,SAASinD,EAAiB5vE,GACxBA,EAAYz3M,QAAQsnR,EACtB,CACA,SAASA,EAAc7vE,GACjBo7D,GAAMp7D,EAAYjvL,UACtBivL,EAAYz3M,QAAQk3M,EACtB,CACA,SAASA,EAAeO,GACtBA,EAAY,IAAMA,EAAY,GAAKz9L,GAAMmmN,EAAKivC,EAC9C33D,EAAY,IAAMA,EAAY,GAAKx9L,GAAMmmN,EAAKivC,CAChD,CACA,OAAO,SAAUp4D,GAEf,OADAA,EAASQ,YAAYz3M,QAAQqnR,GACtBpwE,CACT,CACF,CACA,SAASrxI,GAAOxyB,EAAI91B,EAAMriB,GACxB,IAAI4O,EAAIupC,GAAM,EAAIA,EAAK,GAAa91B,EAAMriB,GAC1C,OAAO4W,KAAKwoB,OAAOxoB,KAAK2C,KAAK,EAAI3K,EAAIA,EAAI,GAAK,GAAK,EACrD,CACA,SAAS,GAAOy0B,GACd,OAAOgmG,GAAWhmG,GAAKA,EAAI,IAAUA,EACvC,CAGA,SAASipP,KACP,IAAI1kR,EAAI,SAAW8a,GACf,OAAOA,EAAE,EACX,EACA7a,EAAI,SAAW6a,GACb,OAAOA,EAAE,EACX,EACA0iC,EAAS/Q,GACT4D,EAAY,EAAE,GAAI,GAClB1uC,EAAK,IACLC,EAAK,IACLnG,EAAI,EAEN,SAAS6sO,EAAQ7tN,EAAM6nN,GACrB,IAAI3rN,EAAKosD,GAAO1yB,EAAU,GAAI51B,EAAMza,IAAMvE,EAExCmb,EAAKmsD,GAAO1yB,EAAU,GAAI51B,EAAMxa,IAAMxE,EAEtCk3O,EAAKh8N,EAAKA,EAAK,EAAI,EAEnBi8N,EAAKh8N,EAAKA,EAAK,EAAI,EAEnB+M,EAAI,EAAIgvN,GAAMhxO,GAAMlG,GAEpBqP,EAAI,EAAI8nO,GAAMhxO,GAAMnG,GAEpBkpR,EAAU,IAAI7qO,aAAan2B,EAAI7Y,GAC/B85Q,EAAU,IAAI9qO,aAAan2B,EAAI7Y,GAC7ByqB,EAASovP,EACblqQ,EAAKtd,SAAQ,SAAU2d,GACrB,IAAImpQ,EAAKtxC,IAAO3yO,EAAE8a,IAAMrf,GACtByoR,EAAKtxC,IAAO3yO,EAAE6a,IAAMrf,GAClBwoR,GAAM,GAAKA,EAAKtgQ,GAAKugQ,GAAM,GAAKA,EAAKp5Q,IACvC65Q,EAAQV,EAAKC,EAAKvgQ,KAAO65B,EAAO1iC,GAEpC,IACInE,EAAK,GAAKC,EAAK,GACjBiuQ,GAAMlhQ,EAAG7Y,EAAG65Q,EAASC,EAASjuQ,GAC9BmuQ,GAAMnhQ,EAAG7Y,EAAG85Q,EAASD,EAAS/tQ,GAC9BiuQ,GAAMlhQ,EAAG7Y,EAAG65Q,EAASC,EAASjuQ,GAC9BmuQ,GAAMnhQ,EAAG7Y,EAAG85Q,EAASD,EAAS/tQ,GAC9BiuQ,GAAMlhQ,EAAG7Y,EAAG65Q,EAASC,EAASjuQ,GAC9BmuQ,GAAMnhQ,EAAG7Y,EAAG85Q,EAASD,EAAS/tQ,IACrBD,EAAK,GACdkuQ,GAAMlhQ,EAAG7Y,EAAG65Q,EAASC,EAASjuQ,GAC9BkuQ,GAAMlhQ,EAAG7Y,EAAG85Q,EAASD,EAAShuQ,GAC9BkuQ,GAAMlhQ,EAAG7Y,EAAG65Q,EAASC,EAASjuQ,GAC9B4e,EAASqvP,GACAhuQ,EAAK,IACdkuQ,GAAMnhQ,EAAG7Y,EAAG65Q,EAASC,EAAShuQ,GAC9BkuQ,GAAMnhQ,EAAG7Y,EAAG85Q,EAASD,EAAS/tQ,GAC9BkuQ,GAAMnhQ,EAAG7Y,EAAG65Q,EAASC,EAAShuQ,GAC9B2e,EAASqvP,GAMX,IADA,IAAI/xQ,EAAIyvN,EAAStzN,KAAK0B,IAAI,GAAI,EAAIjV,GAAK,EAAI,GAAI85B,GACtCt/B,EAAI,EAAG8uR,EAAKphQ,EAAI7Y,EAAG7U,EAAI8uR,IAAM9uR,EAAGs/B,EAAOt/B,IAAM4c,EACtD,MAAO,CACL0iB,OAAQA,EACR1nB,MAAO,GAAKpS,EACZqH,MAAO6gB,EACP5gB,OAAQ+H,EACRqM,GAAIw7N,EACJv7N,GAAIw7N,EACJv7N,GAAIs7N,GAAMhxO,GAAMlG,GAChB6b,GAAIs7N,GAAMhxO,GAAMnG,GAEpB,CA8BA,OA7BA6sO,EAAQtoO,EAAI,SAAUy7B,GACpB,OAAO9lC,UAAUC,QAAUoK,EAAI,GAAOy7B,GAAI6sM,GAAWtoO,CACvD,EACAsoO,EAAQroO,EAAI,SAAUw7B,GACpB,OAAO9lC,UAAUC,QAAUqK,EAAI,GAAOw7B,GAAI6sM,GAAWroO,CACvD,EACAqoO,EAAQ9qL,OAAS,SAAU/hB,GACzB,OAAO9lC,UAAUC,QAAU4nD,EAAS,GAAO/hB,GAAI6sM,GAAW9qL,CAC5D,EACA8qL,EAAQjvM,KAAO,SAAUoC,GACvB,IAAK9lC,UAAUC,OAAQ,MAAO,CAAC+L,EAAIC,GACnC,IAAImiR,GAAMtoP,EAAE,GACVggN,GAAMhgN,EAAE,GAEV,OADMsoP,GAAM,GAAKtoC,GAAM,GAAI,GAAM,gBAC1B95O,EAAKoiR,EAAIniR,EAAK65O,EAAInT,CAC3B,EACAA,EAAQ08C,SAAW,SAAUvpP,GAC3B,OAAK9lC,UAAUC,SACR6lC,GAAKA,IAAM,GAAI,GAAM,qBAC5BhgC,EAAIuT,KAAKwX,MAAMxX,KAAKy/B,IAAIhT,GAAKzsB,KAAKi2Q,KAC3B38C,GAHuB,GAAK7sO,CAIrC,EACA6sO,EAAQj4L,UAAY,SAAU5U,GAC5B,OAAK9lC,UAAUC,QAEE,KADjB6lC,EAAI,GAAMA,IACJ7lC,SAAc6lC,EAAI,EAAEA,EAAE,IAAKA,EAAE,KAClB,IAAbA,EAAE7lC,QAAc,GAAM,qBACnBy6C,EAAY5U,EAAG6sM,GAJQj4L,CAKhC,EACOi4L,CACT,CACA,SAASu8C,GAAMlhQ,EAAG7Y,EAAGsb,EAAQ3oB,EAAQwW,GAEnC,IADA,IAAIwO,EAAe,GAAVxO,GAAK,GACLhY,EAAI,EAAGA,EAAI6O,IAAK7O,EACvB,IAAK,IAAIhG,EAAI,EAAGm5Q,EAAK,EAAGn5Q,EAAI0tB,EAAI1P,IAAKhe,EAC/BA,EAAI0tB,IACNyrP,GAAMhpP,EAAOnwB,EAAIgG,EAAI0nB,IAEnB1tB,GAAKge,IACHhe,GAAKwsB,IACP2sP,GAAMhpP,EAAOnwB,EAAIwsB,EAAIxmB,EAAI0nB,IAE3BlmB,EAAOxH,EAAIge,EAAIhY,EAAI0nB,GAAKyrP,EAAKpgQ,KAAKC,IAAIhZ,EAAI,EAAG0tB,EAAI,EAAIlB,EAAIxsB,EAAGwsB,GAIpE,CACA,SAASqiQ,GAAMnhQ,EAAG7Y,EAAGsb,EAAQ3oB,EAAQwW,GAEnC,IADA,IAAIwO,EAAe,GAAVxO,GAAK,GACLhe,EAAI,EAAGA,EAAI0tB,IAAK1tB,EACvB,IAAK,IAAIgG,EAAI,EAAGmzQ,EAAK,EAAGnzQ,EAAI6O,EAAImJ,IAAKhY,EAC/BA,EAAI6O,IACNskQ,GAAMhpP,EAAOnwB,EAAIgG,EAAI0nB,IAEnB1nB,GAAKgY,IACHhY,GAAKwmB,IACP2sP,GAAMhpP,EAAOnwB,GAAKgG,EAAIwmB,GAAKkB,IAE7BlmB,EAAOxH,GAAKgG,EAAIgY,GAAK0P,GAAKyrP,EAAKpgQ,KAAKC,IAAIhT,EAAI,EAAG6O,EAAI,EAAI2X,EAAIxmB,EAAGwmB,GAItE,CA6BA,SAASyiQ,GAAM7uQ,GACb0gN,GAAUpgO,KAAK5B,KAAM,KAAMshB,EAC7B,CAjSAkuQ,GAAWzsD,WAAa,CACtB,KAAQ,aACR,SAAY,CACV,WAAa,GAEf,OAAU,CAAC,CACT,KAAQ,QACR,KAAQ,SACP,CACD,KAAQ,aACR,KAAQ,SACR,OAAS,GACR,CACD,KAAQ,SACR,KAAQ,UACP,CACD,KAAQ,OACR,KAAQ,UACR,SAAW,GACV,CACD,KAAQ,UACR,KAAQ,OACR,OAAU,CAAC,SAAU,eACrB,QAAW,eACV,CACD,KAAQ,OACR,KAAQ,UACR,SAAW,GACV,CACD,KAAQ,SACR,KAAQ,UACR,SAAW,GACV,CACD,KAAQ,QACR,KAAQ,SACR,MAAQ,GACP,CACD,KAAQ,YACR,KAAQ,SACR,OAAS,EACT,MAAQ,GACP,CACD,KAAQ,KACR,KAAQ,SACR,MAAQ,EACR,QAAW,aAGf,GAASysD,GAAYxtD,GAAW,CAC9BluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,GAAI76N,KAAKmC,QAAU04N,EAAM8D,YAAcj4L,EAAE00L,WACvC,OAAOP,EAAM4B,gBAEf,IAAIv5M,EAAM23M,EAAM0F,KAAK1F,EAAMwF,UAAYxF,EAAMyF,WAC3CjvM,EAASwpM,EAAM2F,YAAY3F,EAAMuF,QAAQ/uM,OACzCwuG,EAAQn5F,EAAEm5F,OAASn7F,GACnBiqP,EAAUH,KAAW5yP,QAAoB,IAAb8K,EAAE9K,QAC9B8yP,EAAKhoP,EAAE2kN,YAsBb,SAAgB7qN,EAAQn9B,EAAGqjC,GACzB,IAAInhB,EAAI,GAASmhB,EAAE0pP,QAAU,GAAI1pP,EAAE69L,MAAiB,IAAX79L,EAAEiR,MAC3C,MAAqB,WAAdjR,EAAEW,QAAuB9hB,EAAIA,EAAEib,EAAOxP,KAAI,SAAUjtB,GACzD,OAAOoW,GAAI9W,EAAEU,GAAGy8B,OAClB,IACF,CA3B2B4vP,CAAO/+P,EAAQwuG,EAAOn5F,GAC3CqiM,EAAc,OAATriM,EAAEqiM,GAAc,KAAOriM,EAAEqiM,IAAM,UACpCvoM,EAAS,GAiBX,OAhBAnP,EAAOjpB,SAAQ,SAAUrE,GACvB,IAAI8oL,EAAOhtD,EAAM97H,GAGbgU,EAAQ42Q,EAAQrqP,KAAK,CAACuoJ,EAAK9+K,MAAO8+K,EAAK7+K,QAA/B2gR,CAAwC9hG,EAAKrsJ,OAAQ,GAAQkuP,GAAMA,EAAKA,EAAG7hG,EAAKrsJ,UAqBlG,SAAwBzoB,EAAO80K,EAAMsrC,EAAOzxL,GAC1C,IAAI5oB,EAAI4oB,EAAE5tB,OAAS+zK,EAAK/zK,MACtB/U,EAAI2iC,EAAEpuB,WAAau0K,EAAKv0K,UACtBo0H,GAAW5uH,KAAIA,EAAIA,EAAEq6M,EAAOzxL,IAC5BgmG,GAAW3oI,KAAIA,EAAIA,EAAEo0N,EAAOzxL,IAChC,IAAW,IAAN5oB,GAAgB,MAALA,KAAe/Z,EAAG,OAClC,IAAIwkO,GAAM5hL,GAAS7oC,GAAKA,EAAIA,EAAE,KAAO,EACnC0qN,GAAM7hL,GAAS7oC,GAAKA,EAAIA,EAAE,KAAO,EACjC05P,EAAKzzQ,GAAKA,EAAE,IAAM,EAClB0zQ,EAAK1zQ,GAAKA,EAAE,IAAM,EACpBgU,EAAM3P,QAAQqrO,GAAW5mD,EAAM07C,EAAIC,EAAIgvC,EAAIC,GAC7C,CA7BM4Y,CAAet4Q,EAAO80K,EAAM9oL,EAAG2iC,GAG/B3uB,EAAM3P,SAAQ,SAAUgW,GACtBoiB,EAAOjgC,KAAKw5N,GAASh2N,EAAG,GAAa,MAANglO,GAAa,OAAgB,CAAC,EAAGA,EAAI3qN,GAAKA,IAC3E,GACF,IACIpe,KAAKmC,QAAO+gB,EAAIi3M,IAAMn6N,KAAKmC,OAC/BnC,KAAKmC,MAAQ+gB,EAAImO,OAASnO,EAAI1R,IAAMgvB,EAC7Btd,CACT,IAqNFitQ,GAAMptD,WAAa,CACjB,KAAQ,QACR,SAAY,CACV,WAAa,GAEf,OAAU,CAAC,CACT,KAAQ,OACR,KAAQ,SACR,OAAS,EACT,OAAU,EACV,UAAY,GACX,CACD,KAAQ,IACR,KAAQ,QACR,UAAY,GACX,CACD,KAAQ,IACR,KAAQ,QACR,UAAY,GACX,CACD,KAAQ,SACR,KAAQ,SACP,CACD,KAAQ,UACR,KAAQ,QACR,OAAS,GACR,CACD,KAAQ,WACR,KAAQ,UACP,CACD,KAAQ,YACR,KAAQ,SACR,OAAS,EACT,OAAU,GACT,CACD,KAAQ,SACR,KAAQ,UACR,SAAW,GACV,CACD,KAAQ,KACR,KAAQ,SACR,QAAW,UAGf,IAAIutD,GAAS,CAAC,IAAK,IAAK,SAAU,OAAQ,WAAY,aACtD,SAAShvQ,GAAOyS,EAAK2S,GAInB,OAHA4pP,GAAOloR,SAAQ,SAAUu1I,GACvB,OAAmB,MAAZj3G,EAAEi3G,GAAiB5pH,EAAI4pH,GAAOj3G,EAAEi3G,IAAU,CACnD,IACO5pH,CACT,CAmFA,SAASw8P,GAAQjvQ,GACf0gN,GAAUpgO,KAAK5B,KAAM,KAAMshB,EAC7B,CApFA,GAAS6uQ,GAAOnuD,GAAW,CACzBluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,GAAI76N,KAAKmC,QAAU04N,EAAM8D,YAAcj4L,EAAE00L,WAAY,OAAOP,EAAM4B,gBAClE,IAMEj8L,EANEtd,EAAM23M,EAAM0F,KAAK1F,EAAMwF,UAAYxF,EAAMyF,WAE3Ch+L,EAmBN,SAAmB5c,EAAMonN,GACvB,IAIE97M,EACA9vB,EACA0tB,EACA7qB,EACA2C,EACA8tC,EATElS,EAAS,GACXtgC,EAAM,SAAaqB,GACjB,OAAOA,EAAEU,EACX,EASF,GAAe,MAAX+oO,EACFxqM,EAAO/hC,KAAKmlB,QAEZ,IAAKsL,EAAM,CAAC,EAAG9vB,EAAI,EAAG0tB,EAAIlJ,EAAK7kB,OAAQK,EAAI0tB,IAAK1tB,EAC9C6C,EAAI2hB,EAAKxkB,IAETszC,EAAIxjB,EADJtqB,EAAIomO,EAAQ97M,IAAIhvB,OAGdgvB,EAAItqB,GAAK8tC,EAAI,GACbA,EAAE+3L,KAAO7lO,EACT47B,EAAO/hC,KAAKi0C,IAEdA,EAAEj0C,KAAKwD,GAGX,OAAOu+B,CACT,CAhDe,CADAu4L,EAAM2F,YAAY3F,EAAMuF,QAAQ/uM,OACdqV,EAAEomM,SAC7B7Z,GAASvsL,EAAEomM,SAAW,IAAI97M,IAAIumL,IAC9BwuB,EAAMzkN,GAAOquQ,KAAajpP,GAC1BqiM,EAAKriM,EAAEqiM,IAAM,OAaf,OALAvoM,EAAS8B,EAAOtR,KAAI,SAAUwjB,GAC5B,OAAO,GAPT,SAAazwC,EAAGyoO,GACd,IAAK,IAAItrO,EAAI,EAAGA,EAAI+xN,EAAMpyN,SAAUK,EAAG6C,EAAEkvN,EAAM/xN,IAAMsrO,EAAKtrO,GAC1D,OAAO6C,CACT,CAIgB7B,EAAI,OAAgB,CAAC,EAAG6mO,EAAIhD,EAAIvxL,EAAG9N,EAAE6mM,SAAU/4L,EAAE+3L,MACjE,IACIvsO,KAAKmC,QAAO+gB,EAAIi3M,IAAMn6N,KAAKmC,OAC/BnC,KAAKmC,MAAQ+gB,EAAImO,OAASnO,EAAI1R,IAAMgvB,EAC7Btd,CACT,IA+DFqtQ,GAAQxtD,WAAa,CACnB,KAAQ,UACR,SAAY,CACV,WAAa,GAEf,OAAU,CAAC,CACT,KAAQ,OACR,KAAQ,SACR,OAAS,EACT,OAAU,EACV,UAAY,GACX,CACD,KAAQ,SACR,KAAQ,SACR,OAAS,GACR,CACD,KAAQ,IACR,KAAQ,SACP,CACD,KAAQ,IACR,KAAQ,SACP,CACD,KAAQ,SACR,KAAQ,SACP,CACD,KAAQ,WACR,KAAQ,UACP,CACD,KAAQ,YACR,KAAQ,UACP,CACD,KAAQ,QACR,KAAQ,UACP,CACD,KAAQ,OACR,KAAQ,UACR,SAAW,GACV,CACD,KAAQ,aACR,KAAQ,SACR,OAAS,GACR,CACD,KAAQ,SACR,KAAQ,UACR,SAAW,KAGf,GAASwtD,GAASvuD,GAAW,CAC3BluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,GAAI76N,KAAKmC,QAAU04N,EAAM8D,YAAcj4L,EAAE00L,WACvC,OAAOP,EAAM4B,gBAEf,IAKE5vC,EACA9uH,EANE76C,EAAM23M,EAAM0F,KAAK1F,EAAMwF,UAAYxF,EAAMyF,WAC3CquD,EAAUH,KAAW5yP,QAAoB,IAAb8K,EAAE9K,QAC9B4E,EAASkG,EAAElG,OACXokM,EAASl+L,EAAE2kN,YAAc,GAAS3kN,EAAE5V,OAAS,GAAI4V,EAAE69L,OAAQ/jM,GAC3D8D,EAAOoC,EAAEpC,KAeX,OAZK9D,IACHA,EAASq6L,EAAM2F,YAAY3F,EAAMuF,QAAQ/uM,OAEzC0sC,EAAO01K,GADP5mD,EAAOvrK,GAAOquQ,KAAajpP,EAApBplB,CAAuBkf,GAAQ,GACdqsJ,EAAK/zK,OAAS,EAAG+zK,EAAK/zK,OAAS,EAAG,EAAG,GAC7DwrB,EAAO,CAACuoJ,EAAK9+K,MAAO8+K,EAAK7+K,QACzBwyB,EAASqsJ,EAAKrsJ,QAEhBokM,EAAS,GAAQA,GAAUA,EAASA,EAAOpkM,GAC3CA,EAASmuP,EAAQrqP,KAAKA,EAAbqqP,CAAmBnuP,EAAQokM,GAChC7mK,GAAMv9B,EAAOp4B,QAAQ21D,GACrB/9D,KAAKmC,QAAO+gB,EAAIi3M,IAAMn6N,KAAKmC,OAC/BnC,KAAKmC,MAAQ+gB,EAAImO,OAASnO,EAAI1R,KAAOgvB,GAAU,IAAIxP,IAAI,IAChD9N,CACT,IAEF,IAAIk6P,GAAU,UACVC,GAAoB,oBAexB,SAASmT,GAAQlvQ,GACf0gN,GAAUpgO,KAAK5B,KAAM,KAAMshB,EAC7B,CAqEA,SAASmvQ,GAAQnvQ,GACf0gN,GAAUpgO,KAAK5B,KAAM,KAAMshB,EAC7B,CAgEA,SAASovQ,GAASpvQ,GAChB0gN,GAAUpgO,KAAK5B,KAAM,KAAMshB,EAC7B,CAiEA,SAASqvQ,GAASrvQ,GAChB0gN,GAAUpgO,KAAK5B,KAAM,KAAMshB,EAC7B,CA8DA,SAASsvQ,GAAUtvQ,GACjB0gN,GAAUpgO,KAAK5B,KAAM,GAAIshB,GACzBthB,KAAKusD,UAAY,IACnB,CAsGA,SAASskO,GAAQvvQ,GACf0gN,GAAUpgO,KAAK5B,KAAM,KAAMshB,EAC7B,CAmGA,SAAS2pH,GAAW5nI,GAClB,IAAKqpI,GAAWrpI,GAAI,OAAO,EAC3B,IAAInB,EAAMy6M,GAAMnF,GAAen0M,IAC/B,OAAOnB,EAAI4uR,IAAM5uR,EAAI6uR,IAAM7uR,EAAI8uR,QAAU9uR,EAAI+uR,IAC/C,CAuCA,SAASC,GAAW5vQ,GAClB0gN,GAAUpgO,KAAK5B,KAAM,KAAMshB,GAC3BthB,KAAKo7N,UAAS,EAChB,CA6BA,SAAS,GAAI8wD,EAAMrrP,EAAK1+B,GAClBuqI,GAAWw/I,EAAKrrP,KAAOqrP,EAAKrrP,GAAK1+B,EACvC,CC5yCA,SAAS,GAAI+nH,EAAMj/G,EAAGC,EAAG6a,GACvB,GAAI7D,MAAMjX,IAAMiX,MAAMhX,GAAI,OAAOg/G,EAEjC,IAAIt4G,EASFu/Q,EACAC,EACA9zP,EACAC,EACA5qB,EACA8wE,EACAviF,EACAgG,EAfAw5C,EAAOwpE,EAAK0hJ,MACZylB,EAAO,CACL3rQ,KAAMK,GAER2G,EAAKw9F,EAAKgtH,IACVvqN,EAAKu9F,EAAKktH,IACVh1N,EAAK8nG,EAAKitH,IACV90N,EAAK6nG,EAAKmtH,IAWZ,IAAK32L,EAAM,OAAOwpE,EAAK0hJ,MAAQylB,EAAMnnK,EAGrC,KAAOxpE,EAAK7/C,QAGV,IAFI8R,EAAQ1H,IAAMkmR,GAAMzkQ,EAAKtK,GAAM,IAAIsK,EAAKykQ,EAAQ/uQ,EAAK+uQ,GACrD1tM,EAASv4E,IAAMkmR,GAAMzkQ,EAAKtK,GAAM,IAAIsK,EAAKykQ,EAAQ/uQ,EAAK+uQ,EACtDx/Q,EAAS8uC,IAAQA,EAAOA,EAAKx/C,EAAIuiF,GAAU,EAAI9wE,IAAS,OAAOf,EAAO1Q,GAAKmwR,EAAMnnK,EAMvF,GAFA5sF,GAAM4sF,EAAKxrD,GAAG98D,KAAK,KAAM8+C,EAAKh7B,MAC9B6X,GAAM2sF,EAAKuuH,GAAG72O,KAAK,KAAM8+C,EAAKh7B,MAC1Bza,IAAMqyB,GAAMpyB,IAAMqyB,EAAI,OAAO8zP,EAAK97P,KAAOmrB,EAAM9uC,EAASA,EAAO1Q,GAAKmwR,EAAOnnK,EAAK0hJ,MAAQylB,EAAMnnK,EAGlG,GACEt4G,EAASA,EAASA,EAAO1Q,GAAK,IAAIu/B,MAAM,GAAKypF,EAAK0hJ,MAAQ,IAAInrO,MAAM,IAChE9tB,EAAQ1H,IAAMkmR,GAAMzkQ,EAAKtK,GAAM,IAAIsK,EAAKykQ,EAAQ/uQ,EAAK+uQ,GACrD1tM,EAASv4E,IAAMkmR,GAAMzkQ,EAAKtK,GAAM,IAAIsK,EAAKykQ,EAAQ/uQ,EAAK+uQ,SAClDlwR,EAAIuiF,GAAU,EAAI9wE,KAAYzL,GAAKq2B,GAAM6zP,IAAO,EAAI9zP,GAAM6zP,IACpE,OAAOv/Q,EAAO1K,GAAKw5C,EAAM9uC,EAAO1Q,GAAKmwR,EAAMnnK,CAC7C,CChDe,SAAS,GAACxpE,EAAMh0B,EAAIC,EAAIvK,EAAIC,GACzCriB,KAAK0gD,KAAOA,EACZ1gD,KAAK0sB,GAAKA,EACV1sB,KAAK2sB,GAAKA,EACV3sB,KAAKoiB,GAAKA,EACVpiB,KAAKqiB,GAAKA,CACZ,CCNO,SAASivQ,GAASvrQ,GACvB,OAAOA,EAAE,EACX,CCFO,SAASwrQ,GAASxrQ,GACvB,OAAOA,EAAE,EACX,CCUe,SAASyrQ,GAASrpH,EAAOl9J,EAAGC,GACzC,IAAIg/G,EAAO,IAAIunK,GAAc,MAALxmR,EAAYqmR,GAAWrmR,EAAQ,MAALC,EAAYqmR,GAAWrmR,EAAGqpC,IAAKA,IAAKA,IAAKA,KAC3F,OAAgB,MAAT4zH,EAAgBj+C,EAAOA,EAAKu2G,OAAOt4D,EAC5C,CACA,SAASspH,GAASxmR,EAAGC,EAAGwhB,EAAIC,EAAIvK,EAAIC,GAClCriB,KAAK0+D,GAAKzzD,EACVjL,KAAKy4O,GAAKvtO,EACVlL,KAAKk3O,IAAMxqN,EACX1sB,KAAKo3O,IAAMzqN,EACX3sB,KAAKm3O,IAAM/0N,EACXpiB,KAAKq3O,IAAMh1N,EACXriB,KAAK4rQ,WAAQn1O,CACf,CACA,SAASi7P,GAAUL,GAKjB,IAJA,IAAIrpP,EAAO,CACPtiB,KAAM2rQ,EAAK3rQ,MAEb6P,EAAOyS,EACFqpP,EAAOA,EAAK97P,MAAMA,EAAOA,EAAKA,KAAO,CAC1C7P,KAAM2rQ,EAAK3rQ,MAEb,OAAOsiB,CACT,CL2uBAwoP,GAAQztD,WAAa,CACnB,KAAQ,UACR,SAAY,CAAC,EACb,OAAU,CAAC,CACT,KAAQ,SACR,KAAQ,QACR,OAAS,EACT,OAAU,GACT,CACD,KAAQ,UACR,KAAQ,WAGZ,GAASytD,GAASxuD,GAAW,CAC3BluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAOET,EAPEjb,EAAWn/M,KAAK2xR,UAClBjxQ,EAAS1gB,KAAKunO,QACd3nG,EAASl5F,EAAEk5F,OACXgyJ,EAAMhyJ,GAAUA,EAAO,GACvBiyJ,EAAMjyJ,GAAUA,EAAO,GACvBkyJ,EAAUprP,EAAEorP,UAAYlyJ,GAAUl7F,GAClCm3L,EAAOhB,EAAM+D,IAEfxE,EAAM1zL,EAAE00L,YAAcP,EAAM8D,QAAQ9D,EAAMgE,MAAQhE,EAAMO,SAAS5jB,GAAes6E,KAAaF,GAAO/2D,EAAMO,SAAS5jB,GAAeo6E,KAASC,GAAOh3D,EAAMO,SAAS5jB,GAAeq6E,IAC3K7xR,KAAKmC,QAASi4N,IACjByB,EAAOhB,EAAMuF,OACbpgO,KAAK2xR,UAAYxyE,EAAW,GAC5Bn/M,KAAKunO,QAAU7mN,EAAS,IAEtBoxQ,GACFj3D,EAAMsD,MAAMtC,GAAM,SAAU93N,GAC1B,OAAOo7M,EAAS5+M,KAAKuxR,EAAQ/tR,GAC/B,IAEE6tR,GAAOC,IACTh3D,EAAMsD,MAAMtC,GAAM,SAAU93N,GAC1B,IAAIkH,EAAI2mR,EAAI7tR,GACVmH,EAAI2mR,EAAI9tR,GACD,MAALkH,GAAkB,MAALC,IAAcD,GAAKA,KAAOA,IAAMC,GAAKA,KAAOA,GAC3DwV,EAAOngB,KAAK,CAAC0K,EAAGC,GAEpB,IACAi0M,EAAWA,EAAS5rM,OAAO,CACzB5K,KAAMy0Q,GACN/9D,SAAU,CACR12M,KA9DO,aA+DPk3M,YAAan/L,MAInB1gB,KAAKmC,MAAQ,CACXwG,KAAM00Q,GACNl+D,SAAUA,EAEd,IAiBFsxE,GAAQ1tD,WAAa,CACnB,KAAQ,UACR,SAAY,CACV,UAAY,GAEd,OAAU,CAAC,CACT,KAAQ,aACR,KAAQ,cACP,CACD,KAAQ,QACR,KAAQ,SACP,CACD,KAAQ,cACR,KAAQ,SACR,MAAQ,GACP,CACD,KAAQ,KACR,KAAQ,SACR,QAAW,UAGf,GAAS0tD,GAASzuD,GAAW,CAC3BluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAAI33M,EAAM23M,EAAM0F,KAAK1F,EAAMqF,KACzBr5N,EAAO7G,KAAKmC,MACZ09H,EAAQn5F,EAAEm5F,OAASn7F,GACnBqkM,EAAKriM,EAAEqiM,IAAM,OACblN,EAAO34M,EAAIk9M,QACRv5N,GAAQ6/B,EAAE00L,YAEbp7N,KAAKmC,MAAQ0E,EAAOulR,GAAkB1lP,EAAEo6O,YACxC59P,EAAIs9M,cAAc5F,UAElBiB,EAAOh8F,IAAUn7F,IAAYm2L,EAAMO,SAASv7F,EAAMD,QAAU18G,EAAI+8M,QAAU/8M,EAAI07M,IAEhF,IAAItpM,EAQR,SAAkBzuB,EAAMs5Q,GACtB,IAAI7qP,EAAOzuB,EAAKs5Q,cAChBt5Q,EAAKssB,QAAQ,MACM,MAAfgtP,GACFt5Q,EAAKs5Q,YAAYA,GAEnB,OAAO7qP,CACT,CAfey8P,CAASlrR,EAAM6/B,EAAEy5O,aAK5B,OAJAj9P,EAAIi7M,MAAMtC,GAAM,SAAU93N,GACxB,OAAOA,EAAEglO,GAAMliO,EAAKg5H,EAAM97H,GAC5B,IACA8C,EAAKs5Q,YAAY7qP,GACVpS,EAAI83M,SAAS+N,EACtB,IAyBF2nD,GAAS3tD,WAAa,CACpB,KAAQ,WACR,SAAY,CACV,UAAY,GAEd,OAAU,CAAC,CACT,KAAQ,aACR,KAAQ,aACR,UAAY,GACX,CACD,KAAQ,SACR,KAAQ,QACR,OAAS,EACT,UAAY,EACZ,OAAU,GACT,CACD,KAAQ,KACR,KAAQ,SACR,OAAS,EACT,OAAU,EACV,QAAW,CAAC,IAAK,QAGrB,GAAS2tD,GAAU1uD,GAAW,CAC5BluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAMET,EANE8xD,EAAOxlP,EAAEo6O,WACX8Q,EAAMlrP,EAAEk5F,OAAO,GACfiyJ,EAAMnrP,EAAEk5F,OAAO,GACfmpG,EAAKriM,EAAEqiM,IAAM,CAAC,IAAK,KACnB99N,EAAI89N,EAAG,GACP79N,EAAI69N,EAAG,GAET,SAAS7mO,EAAI6B,GACX,IAAI+jB,EAAKokQ,EAAK,CAAC0F,EAAI7tR,GAAI8tR,EAAI9tR,KACvB+jB,GACF/jB,EAAEkH,GAAK6c,EAAG,GACV/jB,EAAEmH,GAAK4c,EAAG,KAEV/jB,EAAEkH,QAAKwrB,EACP1yB,EAAEmH,QAAKurB,EAEX,CAQA,OAPIiQ,EAAE00L,WAEJP,EAAQA,EAAM2F,cAAc5F,QAAO,GAAMuD,MAAMtD,EAAMuF,OAAQl+N,IAE7Dk4N,EAAMS,EAAMO,SAASw2D,EAAIhyJ,SAAWi7F,EAAMO,SAASy2D,EAAIjyJ,QACvDi7F,EAAMsD,MAAM/D,EAAMS,EAAMoF,QAAUpF,EAAM+D,IAAK18N,IAExC24N,EAAMG,SAAS+N,EACxB,IAiBF4nD,GAAS5tD,WAAa,CACpB,KAAQ,WACR,SAAY,CACV,UAAY,EACZ,OAAS,GAEX,OAAU,CAAC,CACT,KAAQ,aACR,KAAQ,cACP,CACD,KAAQ,QACR,KAAQ,QACR,QAAW,SACV,CACD,KAAQ,cACR,KAAQ,SACR,MAAQ,GACP,CACD,KAAQ,KACR,KAAQ,SACR,QAAW,WAGf,GAAS4tD,GAAU3uD,GAAW,CAC5BluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAAI33M,EAAM23M,EAAM0F,KAAK1F,EAAMqF,KACzBz6N,EAAQzF,KAAKmC,MACb4mO,EAAKriM,EAAEqiM,IAAM,QACblN,EAAO34M,EAAI07M,IAUb,OATKn5N,IAASihC,EAAE00L,aAEdp7N,KAAKmC,MAAQsD,EAUnB,SAAwBoB,EAAMg5H,EAAOsgJ,GACnC,IAAI16Q,EAAuB,MAAf06Q,EAAsB,SAAUz5O,GAC1C,OAAO7/B,EAAKg5H,EAAMn5F,GACpB,EAAI,SAAUA,GACZ,IAAIpR,EAAOzuB,EAAKs5Q,cACdh+Q,EAAQ0E,EAAKs5Q,YAAYA,EAAjBt5Q,CAA8Bg5H,EAAMn5F,IAE9C,OADA7/B,EAAKs5Q,YAAY7qP,GACVnzB,CACT,EAKA,OAJAsD,EAAM0tB,QAAU,SAAUuT,GAExB,OADA7/B,EAAKssB,QAAQuT,GACNjhC,CACT,EACOA,CACT,CAxB2BusR,CAAe5F,GAAkB1lP,EAAEo6O,YAAap6O,EAAEm5F,OAASA,GAAM,SAAUn5F,EAAEy5O,aAClGj9P,EAAIs9M,cAAc5F,SAClBiB,EAAO34M,EAAIk9M,QAEbl9M,EAAIi7M,MAAMtC,GAAM,SAAU93N,GACxB,OAAOA,EAAEglO,GAAMtjO,CACjB,IACOyd,EAAI83M,SAAS+N,EACtB,IA0BF6nD,GAAU7tD,WAAa,CACrB,KAAQ,YACR,SAAY,CACV,SAAW,EACX,WAAa,GAEf,OAAU,CAAC,CACT,KAAQ,SACR,KAAQ,QACR,OAAS,EACT,OAAU,EACV,QAAW,CACT,KAAQ,SACR,OAAS,EACT,OAAU,IAEX,CACD,KAAQ,cACR,KAAQ,QACR,OAAS,EACT,OAAU,EACV,QAAW,CACT,KAAQ,SACR,OAAS,EACT,OAAU,IAEX,CACD,KAAQ,cACR,KAAQ,QACR,OAAS,EACT,OAAU,EACV,QAAW,CACT,KAAQ,SACR,OAAS,EACT,OAAU,IAEX,CACD,KAAQ,OACR,KAAQ,SACR,OAAS,EACT,OAAU,GACT,CACD,KAAQ,YACR,KAAQ,SACR,OAAS,EACT,OAAU,EACV,QAAW,CAAC,GAAI,MACf,CACD,KAAQ,YACR,KAAQ,SACR,OAAS,EACT,OAAU,EACV,QAAW,CAAC,GAAI,KACf,CACD,KAAQ,YACR,KAAQ,SACR,QAAW,OAGf,GAAS6tD,GAAW5uD,GAAW,CAC7BluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAEE92N,EAFEogC,EAAMnkC,KAAKmC,MACbw1D,EAAM33D,KAAKusD,UAEb,IAAKpoB,EAAItjC,QAAU6lC,EAAE00L,WACnB,IAAK,IAAIl2N,KAAQwhC,EACXgmG,GAAW/0E,EAAIzyD,KACjByyD,EAAIzyD,GAAMwhC,EAAExhC,IAWlB,OAPAnB,EAAI4zD,IACAxzB,EAAItjC,OACNg6N,EAAMT,IAAI75N,KAAKqlB,GAAQue,EAAI,GAAIpgC,IAE/B82N,EAAMrpN,IAAIjR,KAAK,GAAOwD,IAExBogC,EAAI,GAAKpgC,EACF82N,CACT,IAyBFg2D,GAAQ9tD,WAAa,CACnB,KAAQ,UACR,SAAY,CACV,UAAY,GAEd,OAAU,CAAC,CACT,KAAQ,QACR,KAAQ,SACP,CACD,KAAQ,QACR,KAAQ,SACR,MAAQ,GACP,CACD,KAAQ,UACR,KAAQ,SACR,MAAQ,GACP,CACD,KAAQ,UACR,KAAQ,OACR,OAAU,CAAC,SAAU,eACrB,QAAW,eACV,CACD,KAAQ,KACR,KAAQ,SACR,QAAW,WAGf,GAAS8tD,GAAS7uD,GAAW,CAC3BluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAAKA,EAAM8D,YAAcj4L,EAAE00L,WACzB,OAAOP,EAAM4B,gBAEf,IAAIprM,EAASwpM,EAAM2F,YAAY3F,EAAMuF,QAAQ/uM,OAC3C4gQ,EAAuB,WAAdvrP,EAAEW,QACXw4F,EAAQn5F,EAAEm5F,OAASn7F,GACnB/vB,EA2CN,SAAkBA,EAAS+xB,GACzB,IAAIrjC,EACAqpI,GAAW/3H,IACbtR,EAAI,SAAW0wB,GACb,OAAOpf,EAAQof,EAAK2S,EACtB,EACArjC,EAAE6uR,IAAMjnJ,GAAWt2H,IACVA,EACTtR,EAAI,GAASsR,IAGbtR,EAAI,SAAW0wB,GACb,OAAOA,EAAIi9P,OAASj9P,EAAIk9P,MAAQ,CAClC,EACA5tR,EAAE6uR,KAAM,GAEV,OAAO7uR,CACT,CA5DgB8uR,CAASzrP,EAAE/xB,QAAS+xB,GAC9BqN,EA2BN,SAAgBA,EAAOrN,GACrB,IAAIrjC,EACAqpI,GAAW34F,IACb1wC,EAAI,SAAW0wB,GACb,OAAO,SAAIggB,EAAMhgB,EAAK2S,GACxB,EACArjC,EAAE6uR,IAAMjnJ,GAAWl3F,IAGnB1wC,EAAI,IAAS,SAAI0wC,GAAS,SAE5B,OAAO1wC,CACT,CAvCc+uR,CAAO1rP,EAAEqN,MAAOrN,GACxBqiM,EAAKriM,EAAEqiM,IAAM,QACbh1M,EAAM,CACJ+8P,GAAI,EACJC,GAAI,EACJC,OAAQ,EACRC,KAAMgB,EAAS93Q,GAAIkX,EAAOL,KAAI,SAAUjtB,GACtC,OAAOoW,GAAI0lH,EAAM97H,GAAGy8B,OACtB,KAAM,GAcV,OAZAnP,EAAOjpB,SAAQ,SAAUrE,GACvB,IAAIkO,EAAI4tH,EAAM97H,GAGVqhB,EAAI0wB,GAAO,CAAC,EAAG/xC,EAAGgwB,GAEjBk+P,IAAQ7sQ,EAAE6rQ,KAAO92Q,GAAIlI,EAAEuuB,QAAU,KAItCz8B,EAAEglO,GAiDR,SAAkBl8C,EAAM94J,EAAKggB,EAAOp/B,GAelC,IAdA,IAAIia,EAAIi+J,EAAK9+K,MACXgI,EAAI82K,EAAK7+K,OACToU,EAAKyqK,EAAKzqK,IAAM,EAChBC,EAAKwqK,EAAKxqK,IAAM,EAChBC,EAAKuqK,EAAKvqK,IAAMsM,EAChBrM,EAAKsqK,EAAKtqK,IAAMxM,EAChB1Q,EAAMwnL,EAAKrsJ,OACXr+B,EAAQkD,EAAM,SAAUnE,GACtB,OAAOmE,EAAInE,EACb,EAAIy2C,GACJ06O,EAAM,GAAO/vQ,EAAKF,EAAIG,EAAKF,GAC3BsjB,EAAM0sP,EAAI1tQ,WAAW,MACrBm8D,EAAMn7C,EAAI2sP,aAAa,EAAG,EAAGhwQ,EAAKF,EAAIG,EAAKF,GAC3CkwQ,EAAMzxM,EAAIp7D,KACHxe,EAAImb,EAAI3b,EAAI,EAAGQ,EAAIqb,IAAMrb,EAAG,CACnC6sB,EAAIg9P,GAAK7pR,EAAImb,EACb,IAAK,IAAInhB,EAAIkhB,EAAIlD,EAAIhY,EAAI0nB,EAAG1tB,EAAIohB,IAAMphB,EAAGwF,GAAK,EAAG,CAC/CqtB,EAAI+8P,GAAK5vR,EAAIkhB,EACb2R,EAAIi9P,OAAS7uR,EAAMjB,EAAIge,GACvB,IAAIjN,EAAI8hC,EAAMhgB,GACdw+P,EAAI7rR,EAAI,GAAKuL,EAAEiN,EACfqzQ,EAAI7rR,EAAI,GAAKuL,EAAEuiC,EACf+9O,EAAI7rR,EAAI,GAAKuL,EAAEgR,EACfsvQ,EAAI7rR,EAAI,MAAQ,IAAMiO,EAAQof,GAChC,CACF,CAEA,OADA4R,EAAI6sP,aAAa1xM,EAAK,EAAG,GAClBuxM,CACT,CA9EcI,CAASxgR,EAAGmT,EAAG2uB,EAAMm+O,IAAMn+O,EAAQ,GAASA,EAAM3uB,IAAKzQ,EAAQu9Q,IAAMv9Q,EAAU,GAASA,EAAQyQ,IAC1G,IACOy1M,EAAMD,QAAO,GAAMI,SAAS+N,EACrC,IAuFF,GAASmoD,GAAYlvD,GAAW,CAC9BluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAAIqxD,EAAOlsR,KAAKmC,MAahB,OAZK+pR,GAAQxlP,EAAE00L,SAAS,SACtBp7N,KAAKmC,MAAQ+pR,EAkBnB,SAAgBvjR,GACd,IAAI7D,EAAc,IAAY6D,GAAQ,YAAYiW,eAC7C9Z,GAAa,GAAM,iCAAmC6D,GAC3D,OAAO7D,GACT,CAtB0B,CAAO4hC,EAAE/9B,MAC7BsjR,GAAqB7jR,SAAQ,SAAUlD,GACtB,MAAXwhC,EAAExhC,IAAe,GAAIgnR,EAAMhnR,EAAMwhC,EAAExhC,GACzC,KAEA+mR,GAAqB7jR,SAAQ,SAAUlD,GACjCwhC,EAAE00L,SAASl2N,IAAO,GAAIgnR,EAAMhnR,EAAMwhC,EAAExhC,GAC1C,IAEmB,MAAjBwhC,EAAEy5O,aAAqB+L,EAAKrlR,KAAKs5Q,YAAYz5O,EAAEy5O,aAC/Cz5O,EAAE2/O,KAIV,SAAa6F,EAAMxlP,GACjB,IAAIhhB,EAWN,SAAwBA,GAEtB,OADAA,EAAO,GAAMA,GACU,IAAhBA,EAAK7kB,OAAe6kB,EAAK,GAAK,CACnC/c,KAAM00Q,GACNl+D,SAAUz5L,EAAKiM,QAAO,SAAUxT,EAAG9a,GACjC,OAAO8a,EAAE5K,OAIf,SAAmBlQ,GACjB,OAAOA,EAAEsF,OAAS00Q,GAAoBh6Q,EAAE87M,SAAW,GAAM97M,GAAGkN,QAAO,SAAUwV,GAC3E,OAAY,MAALA,CACT,IAAGiL,KAAI,SAAUjL,GACf,OAAOA,EAAEpd,OAASy0Q,GAAUr3P,EAAI,CAC9Bpd,KAAMy0Q,GACN/9D,SAAUt5L,EAEd,GACF,CAbsB2sQ,CAAUrvR,GAC5B,GAAG,IAEP,CAnBasvR,CAAejsP,EAAE2/O,KAC5B3/O,EAAE2lL,OAAS6/D,EAAK1F,UAAU9/O,EAAE2lL,OAAQ3mM,GAAQghB,EAAEpC,MAAO4nP,EAAKzF,QAAQ//O,EAAEpC,KAAM5e,EAC5E,CAPe,CAAIwmQ,EAAMxlP,GACdm0L,EAAM0F,KAAK1F,EAAMwF,UAAYxF,EAAMyF,UAC5C,IKjwCF,IAAIsyD,GAAYpB,GAAStxR,UAAYuxR,GAASvxR,UCnC/B,SAAS,GAAC+K,GACvB,OAAO,WACL,OAAOA,CACT,CACF,CCJe,SAAS,GAAC+5C,GACvB,OAA0B,MAAlBA,IAAW,GACrB,CCCA,SAAS,GAAEj/B,GACT,OAAOA,EAAE9a,EAAI8a,EAAE8sQ,EACjB,CACA,SAAS,GAAE9sQ,GACT,OAAOA,EAAE7a,EAAI6a,EAAE+sQ,EACjB,CH4BAF,GAAU5qP,KAAO,WACf,IAEEmgI,EACAr4J,EAHEk4B,EAAO,IAAIypP,GAASzxR,KAAK0+D,GAAI1+D,KAAKy4O,GAAIz4O,KAAKk3O,IAAKl3O,KAAKo3O,IAAKp3O,KAAKm3O,IAAKn3O,KAAKq3O,KAC3E32L,EAAO1gD,KAAK4rQ,MAGd,IAAKlrN,EAAM,OAAO1Y,EAClB,IAAK0Y,EAAK7/C,OAAQ,OAAOmnC,EAAK4jO,MAAQ8lB,GAAUhxO,GAAO1Y,EAKvD,IAJAmgI,EAAQ,CAAC,CACP92I,OAAQqvB,EACRh4C,OAAQs/B,EAAK4jO,MAAQ,IAAInrO,MAAM,KAE1BigB,EAAOynH,EAAMlhJ,OAClB,IAAK,IAAI/lB,EAAI,EAAGA,EAAI,IAAKA,GACnB4O,EAAQ4wC,EAAKrvB,OAAOnwB,MAClB4O,EAAMjP,OAAQsnK,EAAM5nK,KAAK,CAC3B8wB,OAAQvhB,EACRpH,OAAQg4C,EAAKh4C,OAAOxH,GAAK,IAAIu/B,MAAM,KAC7BigB,EAAKh4C,OAAOxH,GAAKwwR,GAAU5hR,IAIzC,OAAOk4B,CACT,EACA4qP,GAAUphR,IJ3DK,SAAUuU,GACvB,IAAI9a,GAAKjL,KAAK0+D,GAAG98D,KAAK,KAAMmkB,GAC1B7a,GAAKlL,KAAKy4O,GAAG72O,KAAK,KAAMmkB,GAC1B,OAAO,GAAI/lB,KAAK+yR,MAAM9nR,EAAGC,GAAID,EAAGC,EAAG6a,EACrC,EIwDA6sQ,GAAUnyD,OJXH,SAAgB/6M,GACrB,IAAIK,EACF7kB,EAEA+J,EACAC,EAFA0jB,EAAIlJ,EAAK7kB,OAGTmyR,EAAK,IAAIvyP,MAAM7R,GACfqkQ,EAAK,IAAIxyP,MAAM7R,GACflC,EAAKnoB,IACLooB,EAAKpoB,IACL6d,GAAM7d,IACN8d,GAAM9d,IAGR,IAAKrD,EAAI,EAAGA,EAAI0tB,IAAK1tB,EACfghB,MAAMjX,GAAKjL,KAAK0+D,GAAG98D,KAAK,KAAMmkB,EAAIL,EAAKxkB,MAAQghB,MAAMhX,GAAKlL,KAAKy4O,GAAG72O,KAAK,KAAMmkB,MACjFitQ,EAAG9xR,GAAK+J,EACRgoR,EAAG/xR,GAAKgK,EACJD,EAAIyhB,IAAIA,EAAKzhB,GACbA,EAAImX,IAAIA,EAAKnX,GACbC,EAAIyhB,IAAIA,EAAKzhB,GACbA,EAAImX,IAAIA,EAAKnX,IAInB,GAAIwhB,EAAKtK,GAAMuK,EAAKtK,EAAI,OAAOriB,KAM/B,IAHAA,KAAK+yR,MAAMrmQ,EAAIC,GAAIomQ,MAAM3wQ,EAAIC,GAGxBnhB,EAAI,EAAGA,EAAI0tB,IAAK1tB,EACnB,GAAIlB,KAAMgzR,EAAG9xR,GAAI+xR,EAAG/xR,GAAIwkB,EAAKxkB,IAE/B,OAAOlB,IACT,EIvBA4yR,GAAUG,MI7DK,SAAU9nR,EAAGC,GAC1B,GAAIgX,MAAMjX,GAAKA,IAAMiX,MAAMhX,GAAKA,GAAI,OAAOlL,KAE3C,IAAI0sB,EAAK1sB,KAAKk3O,IACZvqN,EAAK3sB,KAAKo3O,IACVh1N,EAAKpiB,KAAKm3O,IACV90N,EAAKriB,KAAKq3O,IAKZ,GAAIn1N,MAAMwK,GACRtK,GAAMsK,EAAKzS,KAAKwX,MAAMxmB,IAAM,EAC5BoX,GAAMsK,EAAK1S,KAAKwX,MAAMvmB,IAAM,MAIzB,CAKH,IAJA,IAEE0G,EACA1Q,EAHEukB,EAAIrD,EAAKsK,GAAM,EACjBg0B,EAAO1gD,KAAK4rQ,MAGPl/O,EAAKzhB,GAAKA,GAAKmX,GAAMuK,EAAKzhB,GAAKA,GAAKmX,GAGzC,OAFAnhB,GAAKgK,EAAIyhB,IAAO,EAAI1hB,EAAIyhB,GACxB9a,EAAS,IAAI6uB,MAAM,IAAWv/B,GAAKw/C,EAAMA,EAAO9uC,EAAQ6T,GAAK,EACrDvkB,GACN,KAAK,EACHkhB,EAAKsK,EAAKjH,EAAGpD,EAAKsK,EAAKlH,EACvB,MACF,KAAK,EACHiH,EAAKtK,EAAKqD,EAAGpD,EAAKsK,EAAKlH,EACvB,MACF,KAAK,EACHrD,EAAKsK,EAAKjH,EAAGkH,EAAKtK,EAAKoD,EACvB,MACF,KAAK,EACHiH,EAAKtK,EAAKqD,EAAGkH,EAAKtK,EAAKoD,EAIzBzlB,KAAK4rQ,OAAS5rQ,KAAK4rQ,MAAM/qQ,SAAQb,KAAK4rQ,MAAQlrN,EACpD,CAKA,OAJA1gD,KAAKk3O,IAAMxqN,EACX1sB,KAAKo3O,IAAMzqN,EACX3sB,KAAKm3O,IAAM/0N,EACXpiB,KAAKq3O,IAAMh1N,EACJriB,IACT,EJeA4yR,GAAUltQ,KK9DK,WACb,IAAIA,EAAO,GAIX,OAHA1lB,KAAKm+N,OAAM,SAAUz9K,GACnB,IAAKA,EAAK7/C,OAAQ,GAAG6kB,EAAKnlB,KAAKmgD,EAAKh7B,YAAcg7B,EAAOA,EAAKnrB,KAChE,IACO7P,CACT,ELyDAktQ,GAAUvmE,OM/DK,SAAU3lL,GACvB,OAAO9lC,UAAUC,OAASb,KAAK+yR,OAAOrsP,EAAE,GAAG,IAAKA,EAAE,GAAG,IAAIqsP,OAAOrsP,EAAE,GAAG,IAAKA,EAAE,GAAG,IAAMxkB,MAAMliB,KAAKk3O,UAAOzgN,EAAY,CAAC,CAACz2B,KAAKk3O,IAAKl3O,KAAKo3O,KAAM,CAACp3O,KAAKm3O,IAAKn3O,KAAKq3O,KAC5J,EN8DAu7C,GAAUp/Q,KO/DK,SAAUvI,EAAGC,EAAG8iE,GAC7B,IAAItoD,EAGFtD,EACAC,EACAC,EACAC,EAKAgD,EACArkB,EAXAwrB,EAAK1sB,KAAKk3O,IACVvqN,EAAK3sB,KAAKo3O,IAKVvrN,EAAK7rB,KAAKm3O,IACVrrN,EAAK9rB,KAAKq3O,IACV67C,EAAQ,GACRxyO,EAAO1gD,KAAK4rQ,MASd,IANIlrN,GAAMwyO,EAAM3yR,KAAK,IAAI,GAAKmgD,EAAMh0B,EAAIC,EAAId,EAAIC,IAClC,MAAVkiD,EAAgBA,EAASzpE,KAC3BmoB,EAAKzhB,EAAI+iE,EAAQrhD,EAAKzhB,EAAI8iE,EAC1BniD,EAAK5gB,EAAI+iE,EAAQliD,EAAK5gB,EAAI8iE,EAC1BA,GAAUA,GAELzoD,EAAI2tQ,EAAMjsQ,OAEf,OAAMy5B,EAAOn7B,EAAEm7B,QAAUt+B,EAAKmD,EAAEmH,IAAMb,IAAOxJ,EAAKkD,EAAEoH,IAAMb,IAAOxJ,EAAKiD,EAAEnD,IAAMsK,IAAOnK,EAAKgD,EAAElD,IAAMsK,GAGlG,GAAI+zB,EAAK7/C,OAAQ,CACf,IAAIswR,GAAM/uQ,EAAKE,GAAM,EACnB8uQ,GAAM/uQ,EAAKE,GAAM,EACnB2wQ,EAAM3yR,KAAK,IAAI,GAAKmgD,EAAK,GAAIywO,EAAIC,EAAI9uQ,EAAIC,GAAK,IAAI,GAAKm+B,EAAK,GAAIt+B,EAAIgvQ,EAAID,EAAI5uQ,GAAK,IAAI,GAAKm+B,EAAK,GAAIywO,EAAI9uQ,EAAIC,EAAI8uQ,GAAK,IAAI,GAAK1wO,EAAK,GAAIt+B,EAAIC,EAAI8uQ,EAAIC,KAG9IlwR,GAAKgK,GAAKkmR,IAAO,EAAInmR,GAAKkmR,KAC5B5rQ,EAAI2tQ,EAAMA,EAAMryR,OAAS,GACzBqyR,EAAMA,EAAMryR,OAAS,GAAKqyR,EAAMA,EAAMryR,OAAS,EAAIK,GACnDgyR,EAAMA,EAAMryR,OAAS,EAAIK,GAAKqkB,EAElC,KAGK,CACH,IAAI3Y,EAAK3B,GAAKjL,KAAK0+D,GAAG98D,KAAK,KAAM8+C,EAAKh7B,MACpC7Y,EAAK3B,GAAKlL,KAAKy4O,GAAG72O,KAAK,KAAM8+C,EAAKh7B,MAClC8P,EAAK5oB,EAAKA,EAAKC,EAAKA,EACtB,GAAI2oB,EAAKw4C,EAAQ,CACf,IAAIjoD,EAAI9L,KAAK2C,KAAKoxD,EAASx4C,GAC3B9I,EAAKzhB,EAAI8a,EAAG4G,EAAKzhB,EAAI6a,EACrB8F,EAAK5gB,EAAI8a,EAAG+F,EAAK5gB,EAAI6a,EACrBL,EAAOg7B,EAAKh7B,IACd,CACF,CAEF,OAAOA,CACT,EPYAktQ,GAAUz/Q,OQjEK,SAAU4S,GACvB,GAAI7D,MAAMjX,GAAKjL,KAAK0+D,GAAG98D,KAAK,KAAMmkB,KAAO7D,MAAMhX,GAAKlL,KAAKy4O,GAAG72O,KAAK,KAAMmkB,IAAK,OAAO/lB,KAEnF,IAAI4R,EAEFuhR,EACA1xP,EACAlM,EAKAtqB,EACAC,EACAimR,EACAC,EACAz+Q,EACA8wE,EACAviF,EACAgG,EAfAw5C,EAAO1gD,KAAK4rQ,MAIZl/O,EAAK1sB,KAAKk3O,IACVvqN,EAAK3sB,KAAKo3O,IACVh1N,EAAKpiB,KAAKm3O,IACV90N,EAAKriB,KAAKq3O,IAWZ,IAAK32L,EAAM,OAAO1gD,KAIlB,GAAI0gD,EAAK7/C,OAAQ,OAAa,CAG5B,IAFI8R,EAAQ1H,IAAMkmR,GAAMzkQ,EAAKtK,GAAM,IAAIsK,EAAKykQ,EAAQ/uQ,EAAK+uQ,GACrD1tM,EAASv4E,IAAMkmR,GAAMzkQ,EAAKtK,GAAM,IAAIsK,EAAKykQ,EAAQ/uQ,EAAK+uQ,EACpDx/Q,EAAS8uC,IAAMA,EAAOA,EAAKx/C,EAAIuiF,GAAU,EAAI9wE,IAAS,OAAO3S,KACnE,IAAK0gD,EAAK7/C,OAAQ,OACd+Q,EAAO1Q,EAAI,EAAI,IAAM0Q,EAAO1Q,EAAI,EAAI,IAAM0Q,EAAO1Q,EAAI,EAAI,MAAIiyR,EAAWvhR,EAAQ1K,EAAIhG,EAC1F,CAGA,KAAOw/C,EAAKh7B,OAASK,MAAS0b,EAAWif,IAAMA,EAAOA,EAAKnrB,MAAO,OAAOv1B,KAIzE,OAHIu1B,EAAOmrB,EAAKnrB,cAAamrB,EAAKnrB,KAG9BkM,GAAiBlM,EAAOkM,EAASlM,KAAOA,SAAckM,EAASlM,KAAMv1B,MAGpE4R,GAGL2jB,EAAO3jB,EAAO1Q,GAAKq0B,SAAc3jB,EAAO1Q,IAGnCw/C,EAAO9uC,EAAO,IAAMA,EAAO,IAAMA,EAAO,IAAMA,EAAO,KAAO8uC,KAAU9uC,EAAO,IAAMA,EAAO,IAAMA,EAAO,IAAMA,EAAO,MAAQ8uC,EAAK7/C,SAChIsyR,EAAUA,EAASjsR,GAAKw5C,EAAU1gD,KAAK4rQ,MAAQlrN,GAE9C1gD,OATaA,KAAK4rQ,MAAQr2O,EAAMv1B,KAUzC,ERcA4yR,GAAUnsN,UQbH,SAAmB/gD,GACxB,IAAK,IAAIxkB,EAAI,EAAG0tB,EAAIlJ,EAAK7kB,OAAQK,EAAI0tB,IAAK1tB,EAAGlB,KAAKmT,OAAOuS,EAAKxkB,IAC9D,OAAOlB,IACT,ERWA4yR,GAAUrnN,KSnEK,WACb,OAAOvrE,KAAK4rQ,KACd,ETkEAgnB,GAAUtuP,KUpEK,WACb,IAAIA,EAAO,EAIX,OAHAtkC,KAAKm+N,OAAM,SAAUz9K,GACnB,IAAKA,EAAK7/C,OAAQ,KAAKyjC,QAAaoc,EAAOA,EAAKnrB,KAClD,IACO+O,CACT,EV+DAsuP,GAAUz0D,MWpEK,SAAU99N,GACvB,IACEklB,EAEAzV,EACA4c,EACAC,EACAvK,EACAC,EAPE6wQ,EAAQ,GAEVxyO,EAAO1gD,KAAK4rQ,MAOd,IADIlrN,GAAMwyO,EAAM3yR,KAAK,IAAI,GAAKmgD,EAAM1gD,KAAKk3O,IAAKl3O,KAAKo3O,IAAKp3O,KAAKm3O,IAAKn3O,KAAKq3O,MAChE9xN,EAAI2tQ,EAAMjsQ,OACf,IAAK5mB,EAASqgD,EAAOn7B,EAAEm7B,KAAMh0B,EAAKnH,EAAEmH,GAAIC,EAAKpH,EAAEoH,GAAIvK,EAAKmD,EAAEnD,GAAIC,EAAKkD,EAAElD,KAAOq+B,EAAK7/C,OAAQ,CACvF,IAAIswR,GAAMzkQ,EAAKtK,GAAM,EACnBgvQ,GAAMzkQ,EAAKtK,GAAM,GACfvS,EAAQ4wC,EAAK,KAAIwyO,EAAM3yR,KAAK,IAAI,GAAKuP,EAAOqhR,EAAIC,EAAIhvQ,EAAIC,KACxDvS,EAAQ4wC,EAAK,KAAIwyO,EAAM3yR,KAAK,IAAI,GAAKuP,EAAO4c,EAAI0kQ,EAAID,EAAI9uQ,KACxDvS,EAAQ4wC,EAAK,KAAIwyO,EAAM3yR,KAAK,IAAI,GAAKuP,EAAOqhR,EAAIxkQ,EAAIvK,EAAIgvQ,KACxDthR,EAAQ4wC,EAAK,KAAIwyO,EAAM3yR,KAAK,IAAI,GAAKuP,EAAO4c,EAAIC,EAAIwkQ,EAAIC,GAC9D,CAEF,OAAOpxR,IACT,EXgDA4yR,GAAUQ,WYrEK,SAAU/yR,GACvB,IAEEklB,EAFE2tQ,EAAQ,GACV39P,EAAO,GAGT,IADIv1B,KAAK4rQ,OAAOsnB,EAAM3yR,KAAK,IAAI,GAAKP,KAAK4rQ,MAAO5rQ,KAAKk3O,IAAKl3O,KAAKo3O,IAAKp3O,KAAKm3O,IAAKn3O,KAAKq3O,MAC5E9xN,EAAI2tQ,EAAMjsQ,OAAO,CACtB,IAAIy5B,EAAOn7B,EAAEm7B,KACb,GAAIA,EAAK7/C,OAAQ,CACf,IAAIiP,EACF4c,EAAKnH,EAAEmH,GACPC,EAAKpH,EAAEoH,GACPvK,EAAKmD,EAAEnD,GACPC,EAAKkD,EAAElD,GACP8uQ,GAAMzkQ,EAAKtK,GAAM,EACjBgvQ,GAAMzkQ,EAAKtK,GAAM,GACfvS,EAAQ4wC,EAAK,KAAIwyO,EAAM3yR,KAAK,IAAI,GAAKuP,EAAO4c,EAAIC,EAAIwkQ,EAAIC,KACxDthR,EAAQ4wC,EAAK,KAAIwyO,EAAM3yR,KAAK,IAAI,GAAKuP,EAAOqhR,EAAIxkQ,EAAIvK,EAAIgvQ,KACxDthR,EAAQ4wC,EAAK,KAAIwyO,EAAM3yR,KAAK,IAAI,GAAKuP,EAAO4c,EAAI0kQ,EAAID,EAAI9uQ,KACxDvS,EAAQ4wC,EAAK,KAAIwyO,EAAM3yR,KAAK,IAAI,GAAKuP,EAAOqhR,EAAIC,EAAIhvQ,EAAIC,GAC9D,CACAkT,EAAKh1B,KAAKglB,EACZ,CACA,KAAOA,EAAIgQ,EAAKtO,OACd5mB,EAASklB,EAAEm7B,KAAMn7B,EAAEmH,GAAInH,EAAEoH,GAAIpH,EAAEnD,GAAImD,EAAElD,IAEvC,OAAOriB,IACT,EZ4CA4yR,GAAU3nR,EFpEK,SAAUy7B,GACvB,OAAO9lC,UAAUC,QAAUb,KAAK0+D,GAAKh4B,EAAG1mC,MAAQA,KAAK0+D,EACvD,EEmEAk0N,GAAU1nR,EDrEK,SAAUw7B,GACvB,OAAO9lC,UAAUC,QAAUb,KAAKy4O,GAAK/xM,EAAG1mC,MAAQA,KAAKy4O,EACvD,EcLA,IAAI,GAAO,CACTt2O,MAAO,WAAkB,GAE3B,SAAS47H,KACP,IAAK,IAAyCh6H,EAArC7C,EAAI,EAAG0tB,EAAIhuB,UAAUC,OAAQ6lC,EAAI,CAAC,EAAMxlC,EAAI0tB,IAAK1tB,EAAG,CAC3D,KAAM6C,EAAInD,UAAUM,GAAK,KAAO6C,KAAK2iC,GAAK,QAAQphC,KAAKvB,GAAI,MAAM,IAAIkkC,MAAM,iBAAmBlkC,GAC9F2iC,EAAE3iC,GAAK,EACT,CACA,OAAO,IAAIsvR,GAAS3sP,EACtB,CACA,SAAS2sP,GAAS3sP,GAChB1mC,KAAK0mC,EAAIA,CACX,CAoDA,SAAS,GAAI/9B,EAAM1G,GACjB,IAAK,IAA4BkjB,EAAxBjkB,EAAI,EAAG0tB,EAAIjmB,EAAK9H,OAAWK,EAAI0tB,IAAK1tB,EAC3C,IAAKikB,EAAIxc,EAAKzH,IAAIe,OAASA,EACzB,OAAOkjB,EAAEhjB,KAGf,CACA,SAAS,GAAIwG,EAAM1G,EAAM5B,GACvB,IAAK,IAAIa,EAAI,EAAG0tB,EAAIjmB,EAAK9H,OAAQK,EAAI0tB,IAAK1tB,EACxC,GAAIyH,EAAKzH,GAAGe,OAASA,EAAM,CACzB0G,EAAKzH,GAAK,GAAMyH,EAAOA,EAAKqe,MAAM,EAAG9lB,GAAGqS,OAAO5K,EAAKqe,MAAM9lB,EAAI,IAC9D,KACF,CAMF,OAJgB,MAAZb,GAAkBsI,EAAKpI,KAAK,CAC9B0B,KAAMA,EACNE,MAAO9B,IAEFsI,CACT,CA1DA0qR,GAASnzR,UAAY69H,GAAS79H,UAAY,CACxC4E,YAAauuR,GACblzR,GAAI,SAAYmzR,EAAUjzR,GACxB,IAEE0D,EAFE2iC,EAAI1mC,KAAK0mC,EACXlc,EAhBN,SAAwB+oQ,EAAWtrN,GACjC,OAAOsrN,EAAU1/P,OAAOvK,MAAM,SAAS0H,KAAI,SAAUjtB,GACnD,IAAI9B,EAAO,GACTf,EAAI6C,EAAEmP,QAAQ,KAEhB,GADIhS,GAAK,IAAGe,EAAO8B,EAAEijB,MAAM9lB,EAAI,GAAI6C,EAAIA,EAAEijB,MAAM,EAAG9lB,IAC9C6C,IAAMkkE,EAAM1wD,eAAexT,GAAI,MAAM,IAAIkkC,MAAM,iBAAmBlkC,GACtE,MAAO,CACL4E,KAAM5E,EACN9B,KAAMA,EAEV,GACF,CAKUuxR,CAAeF,EAAW,GAAI5sP,GAElCxlC,GAAK,EACL0tB,EAAIpE,EAAE3pB,OAGR,KAAID,UAAUC,OAAS,GAAvB,CAOA,GAAgB,MAAZR,GAAwC,mBAAbA,EAAyB,MAAM,IAAI4nC,MAAM,qBAAuB5nC,GAC/F,OAASa,EAAI0tB,GACX,GAAI7qB,GAAKuvR,EAAW9oQ,EAAEtpB,IAAIyH,KAAM+9B,EAAE3iC,GAAK,GAAI2iC,EAAE3iC,GAAIuvR,EAASrxR,KAAM5B,QAAe,GAAgB,MAAZA,EAAkB,IAAK0D,KAAK2iC,EAAGA,EAAE3iC,GAAK,GAAI2iC,EAAE3iC,GAAIuvR,EAASrxR,KAAM,MAEpJ,OAAOjC,IARP,CAFE,OAASkB,EAAI0tB,OAAQ7qB,GAAKuvR,EAAW9oQ,EAAEtpB,IAAIyH,QAAU5E,EAAI,GAAI2iC,EAAE3iC,GAAIuvR,EAASrxR,OAAQ,OAAO8B,CAW/F,EACAikC,KAAM,WACJ,IAAIA,EAAO,CAAC,EACVtB,EAAI1mC,KAAK0mC,EACX,IAAK,IAAI3iC,KAAK2iC,EAAGsB,EAAKjkC,GAAK2iC,EAAE3iC,GAAGijB,QAChC,OAAO,IAAIqsQ,GAASrrP,EACtB,EACApmC,KAAM,SAAc+G,EAAM+lD,GACxB,IAAK9/B,EAAIhuB,UAAUC,OAAS,GAAK,EAAG,IAAK,IAAgC+tB,EAAG7qB,EAA/BrD,EAAO,IAAI+/B,MAAM7R,GAAI1tB,EAAI,EAASA,EAAI0tB,IAAK1tB,EAAGR,EAAKQ,GAAKN,UAAUM,EAAI,GACnH,IAAKlB,KAAK0mC,EAAEnvB,eAAe5O,GAAO,MAAM,IAAIs/B,MAAM,iBAAmBt/B,GACrE,IAAuBzH,EAAI,EAAG0tB,GAAzB7qB,EAAI/D,KAAK0mC,EAAE/9B,IAAoB9H,OAAQK,EAAI0tB,IAAK1tB,EAAG6C,EAAE7C,GAAGiB,MAAMd,MAAMqtD,EAAMhuD,EACjF,EACAW,MAAO,SAAesH,EAAM+lD,EAAMhuD,GAChC,IAAKV,KAAK0mC,EAAEnvB,eAAe5O,GAAO,MAAM,IAAIs/B,MAAM,iBAAmBt/B,GACrE,IAAK,IAAI5E,EAAI/D,KAAK0mC,EAAE/9B,GAAOzH,EAAI,EAAG0tB,EAAI7qB,EAAElD,OAAQK,EAAI0tB,IAAK1tB,EAAG6C,EAAE7C,GAAGiB,MAAMd,MAAMqtD,EAAMhuD,EACrF,GAsBF,IC5EE2B,GACAC,GD2EF,MCpFI,GAAQ,EAEVC,GAAU,EAEVC,GAAW,EAEXC,GAAY,IAIZC,GAAY,EACZC,GAAW,EACXC,GAAY,EACZC,GAA+B,iBAAhBC,aAA4BA,YAAYC,IAAMD,YAAcE,KAC3EC,GAA6B,iBAAXC,QAAuBA,OAAOC,sBAAwBD,OAAOC,sBAAsBC,KAAKF,QAAU,SAAUG,GAC5HC,WAAWD,EAAG,GAChB,EACK,SAAS,KACd,OAAOV,KAAaM,GAASM,IAAWZ,GAAWE,GAAME,MAAQH,GACnE,CACA,SAASW,KACPZ,GAAW,CACb,CACO,SAASa,KACdxD,KAAKyD,MAAQzD,KAAK0D,MAAQ1D,KAAK2D,MAAQ,IACzC,CAsBO,SAASC,GAAMvD,EAAUwD,EAAOC,GACrC,IAAIC,EAAI,IAAIP,GAEZ,OADAO,EAAEC,QAAQ3D,EAAUwD,EAAOC,GACpBC,CACT,CAYA,SAASE,KACPtB,IAAYD,GAAYG,GAAME,OAASH,GACvC,GAAQL,GAAU,EAClB,KAdK,WACL,OACE,GAGF,IAFA,IACE2B,EADEH,EAAI1B,GAED0B,IACAG,EAAIvB,GAAWoB,EAAEL,QAAU,GAAGK,EAAEN,MAAM7B,UAAK60B,EAAWvyB,GAC3DH,EAAIA,EAAEJ,QAEN,EACJ,CAKIQ,EACF,CAAE,QACA,GAAQ,EAUZ,WACE,IAAIC,EAEFC,EADAC,EAAKjC,GAELyB,EAAOS,IACT,KAAOD,GACDA,EAAGb,OACDK,EAAOQ,EAAGZ,QAAOI,EAAOQ,EAAGZ,OAC/BU,EAAKE,EAAIA,EAAKA,EAAGX,QAEjBU,EAAKC,EAAGX,MAAOW,EAAGX,MAAQ,KAC1BW,EAAKF,EAAKA,EAAGT,MAAQU,EAAKhC,GAAWgC,GAGzC/B,GAAW8B,EACXI,GAAMV,EACR,CAzBIW,GACA9B,GAAW,CACb,CACF,CACA,SAAS+B,KACP,IAAI3B,EAAMF,GAAME,MACdc,EAAQd,EAAML,GACZmB,EAAQpB,KAAWG,IAAaiB,EAAOnB,GAAYK,EACzD,CAkBA,SAASyB,GAAMV,GACT,KACAvB,KAASA,GAAUoC,aAAapC,KACxBuB,EAAOnB,GACP,IACNmB,EAAOS,MAAUhC,GAAUe,WAAWW,GAAMH,EAAOjB,GAAME,MAAQH,KACjEJ,KAAUA,GAAWoC,cAAcpC,OAElCA,KAAUE,GAAYG,GAAME,MAAOP,GAAWqC,YAAYH,GAAMjC,KACrE,GAAQ,EAAGQ,GAASgB,KAExB,CAjFAT,GAAMtD,UAAY0D,GAAM1D,UAAY,CAClC4E,YAAatB,GACbQ,QAAS,SAAiB3D,EAAUwD,EAAOC,GACzC,GAAwB,mBAAbzD,EAAyB,MAAM,IAAI0E,UAAU,8BACxDjB,GAAgB,MAARA,EAAe,MAASA,IAAkB,MAATD,EAAgB,GAAKA,GACzD7D,KAAK2D,OAASrB,KAAatC,OAC1BsC,GAAUA,GAASqB,MAAQ3D,KAAUqC,GAAWrC,KACpDsC,GAAWtC,MAEbA,KAAKyD,MAAQpD,EACbL,KAAK0D,MAAQI,EACbU,IACF,EACAQ,KAAM,WACAhF,KAAKyD,QACPzD,KAAKyD,MAAQ,KACbzD,KAAK0D,MAAQa,IACbC,KAEJ,GC5CF,IAAI,GAAI,QACJ,GAAI,WACJuR,GAAI,WCAD,SAAS,GAAEgQ,GAChB,OAAOA,EAAE9a,CACX,CACO,SAAS,GAAE8a,GAChB,OAAOA,EAAE7a,CACX,CACA,IAAIuoR,GAAgB,GAClBC,GAAez5Q,KAAK+B,IAAM,EAAI/B,KAAK2C,KAAK,IAC3B,SAAS,GAAC+2Q,GACvB,IAAIC,EACFp6C,EAAS,EACTq6C,EAAY,KACZC,EAAc,EAAI75Q,KAAK0B,IAAIk4Q,EAAW,EAAI,KAC1CE,EAAe,EACfC,EAAiB,GACjBC,EAAS,IAAIl1Q,IACbm1Q,EAAUtwR,GAAM6jD,GAChB18C,EAAQ,GAAS,OAAQ,OACzBi6C,EDhBW,WACb,IAAIlnC,EAAI,EACR,OAAO,WACL,OAAQA,GAAK,GAAIA,EAAI,IAAK/H,IAAKA,EACjC,CACF,CCWa,GAEX,SAAS0xC,IACP0sO,IACAppR,EAAMnJ,KAAK,OAAQgyR,GACfp6C,EAASq6C,IACXK,EAAQlvR,OACR+F,EAAMnJ,KAAK,MAAOgyR,GAEtB,CACA,SAASO,EAAKr7O,GACZ,IAAI53C,EAEFw/C,EADA9xB,EAAI+kQ,EAAO9yR,YAEM41B,IAAfqiB,IAA0BA,EAAa,GAC3C,IAAK,IAAIpyC,EAAI,EAAGA,EAAIoyC,IAAcpyC,EAKhC,IAJA8yO,IAAWu6C,EAAev6C,GAAUs6C,EACpCG,EAAO7rR,SAAQ,SAAU+yN,GACvBA,EAAMqe,EACR,IACKt4O,EAAI,EAAGA,EAAI0tB,IAAK1tB,EAEJ,OADfw/C,EAAOizO,EAAOzyR,IACL2hD,GAAYnC,EAAKz1C,GAAKy1C,EAAKmyO,IAAMmB,GAAoBtzO,EAAKz1C,EAAIy1C,EAAKmC,GAAInC,EAAKmyO,GAAK,GAC3E,MAAXnyO,EAAKwpD,GAAYxpD,EAAKx1C,GAAKw1C,EAAKoyO,IAAMkB,GAAoBtzO,EAAKx1C,EAAIw1C,EAAKwpD,GAAIxpD,EAAKoyO,GAAK,GAG9F,OAAOc,CACT,CACA,SAASQ,IACP,IAAK,IAA8B1zO,EAA1Bx/C,EAAI,EAAG0tB,EAAI+kQ,EAAO9yR,OAAcK,EAAI0tB,IAAK1tB,EAAG,CAInD,IAHAw/C,EAAOizO,EAAOzyR,IAAS8G,MAAQ9G,EAChB,MAAXw/C,EAAKmC,KAAYnC,EAAKz1C,EAAIy1C,EAAKmC,IACpB,MAAXnC,EAAKwpD,KAAYxpD,EAAKx1C,EAAIw1C,EAAKwpD,IAC/BhoF,MAAMw+B,EAAKz1C,IAAMiX,MAAMw+B,EAAKx1C,GAAI,CAClC,IAAI8iE,EAASylN,GAAgBx5Q,KAAK2C,KAAK,GAAM1b,GAC3CwmB,EAAQxmB,EAAIwyR,GACdhzO,EAAKz1C,EAAI+iE,EAAS/zD,KAAKkC,IAAIuL,GAC3Bg5B,EAAKx1C,EAAI8iE,EAAS/zD,KAAKoC,IAAIqL,EAC7B,EACIxF,MAAMw+B,EAAKmyO,KAAO3wQ,MAAMw+B,EAAKoyO,OAC/BpyO,EAAKmyO,GAAKnyO,EAAKoyO,GAAK,EAExB,CACF,CACA,SAASuB,EAAgBl5D,GAEvB,OADIA,EAAM8nC,YAAY9nC,EAAM8nC,WAAW0wB,EAAQ3uO,GACxCm2K,CACT,CAEA,OAhDc,MAAVw4D,IAAgBA,EAAS,IA+C7BS,IACOR,EAAa,CAClBO,KAAMA,EACNnwR,QAAS,WACP,OAAOkwR,EAAQlwR,QAAQyjD,GAAOmsO,CAChC,EACA5uR,KAAM,WACJ,OAAOkvR,EAAQlvR,OAAQ4uR,CACzB,EACAzrH,MAAO,SAAezhI,GACpB,OAAO9lC,UAAUC,QAAU8yR,EAASjtP,EAAG0tP,IAAmBH,EAAO7rR,QAAQisR,GAAkBT,GAAcD,CAC3G,EACA7kQ,MAAO,SAAe4X,GACpB,OAAO9lC,UAAUC,QAAU24O,GAAU9yM,EAAGktP,GAAcp6C,CACxD,EACA86C,SAAU,SAAkB5tP,GAC1B,OAAO9lC,UAAUC,QAAUgzR,GAAantP,EAAGktP,GAAcC,CAC3D,EACAU,WAAY,SAAoB7tP,GAC9B,OAAO9lC,UAAUC,QAAUizR,GAAeptP,EAAGktP,IAAeE,CAC9D,EACAU,YAAa,SAAqB9tP,GAChC,OAAO9lC,UAAUC,QAAUkzR,GAAgBrtP,EAAGktP,GAAcG,CAC9D,EACAU,cAAe,SAAuB/tP,GACpC,OAAO9lC,UAAUC,QAAUmzR,EAAiB,EAAIttP,EAAGktP,GAAc,EAAII,CACvE,EACAU,aAAc,SAAsBhuP,GAClC,OAAO9lC,UAAUC,QAAUmkD,EAASte,EAAGutP,EAAO7rR,QAAQisR,GAAkBT,GAAc5uO,CACxF,EACAm2K,MAAO,SAAel5N,EAAMykC,GAC1B,OAAO9lC,UAAUC,OAAS,GAAU,MAAL6lC,EAAYutP,EAAO5tP,OAAOpkC,GAAQgyR,EAAO/xR,IAAID,EAAMoyR,EAAgB3tP,IAAKktP,GAAcK,EAAOjyR,IAAIC,EAClI,EACAuR,KAAM,SAAcvI,EAAGC,EAAG8iE,GACxB,IAEEphE,EACAC,EACA2oB,EACAkrB,EACAi0O,EANEzzR,EAAI,EACN0tB,EAAI+kQ,EAAO9yR,OAOb,IADc,MAAVmtE,EAAgBA,EAASzpE,IAAcypE,GAAUA,EAChD9sE,EAAI,EAAGA,EAAI0tB,IAAK1tB,GAInBs0B,GAFA5oB,EAAK3B,GADLy1C,EAAOizO,EAAOzyR,IACA+J,GAEJ2B,GADVC,EAAK3B,EAAIw1C,EAAKx1C,GACM2B,GACXmhE,IAAQ2mN,EAAUj0O,EAAMstB,EAASx4C,GAE5C,OAAOm/P,CACT,EACAx0R,GAAI,SAAY8B,EAAMykC,GACpB,OAAO9lC,UAAUC,OAAS,GAAKkK,EAAM5K,GAAG8B,EAAMykC,GAAIktP,GAAc7oR,EAAM5K,GAAG8B,EAC3E,EAEJ,CC1HA,SAAS,GAAM8jB,GACb,OAAOA,EAAE/d,KACX,CACA,SAAS,GAAK4sR,EAAUC,GACtB,IAAIn0O,EAAOk0O,EAAS5yR,IAAI6yR,GACxB,IAAKn0O,EAAM,MAAM,IAAIzY,MAAM,mBAAqB4sP,GAChD,OAAOn0O,CACT,CCNA,IAAIo0O,GAAW,CACbj3P,OCJa,SAAU5yB,EAAGC,GAC1B,IAAIi9J,EACF4sH,EAAW,EAGb,SAAS55D,IACP,IAAIj6N,EAEFw/C,EADA9xB,EAAIu5I,EAAMtnK,OAEV0nO,EAAK,EACLC,EAAK,EACP,IAAKtnO,EAAI,EAAGA,EAAI0tB,IAAK1tB,EACFqnO,IAAjB7nL,EAAOynH,EAAMjnK,IAAe+J,EAAGu9N,GAAM9nL,EAAKx1C,EAE5C,IAAKq9N,GAAMA,EAAK35M,EAAI3jB,GAAK8pR,EAAUvsD,GAAMA,EAAK55M,EAAI1jB,GAAK6pR,EAAU7zR,EAAI,EAAGA,EAAI0tB,IAAK1tB,GAC/Ew/C,EAAOynH,EAAMjnK,IAAS+J,GAAKs9N,EAAI7nL,EAAKx1C,GAAKs9N,CAE7C,CAaA,OA3BS,MAALv9N,IAAWA,EAAI,GACV,MAALC,IAAWA,EAAI,GAcnBiwN,EAAM8nC,WAAa,SAAUv8N,GAC3ByhI,EAAQzhI,CACV,EACAy0L,EAAMlwN,EAAI,SAAUy7B,GAClB,OAAO9lC,UAAUC,QAAUoK,GAAKy7B,EAAGy0L,GAASlwN,CAC9C,EACAkwN,EAAMjwN,EAAI,SAAUw7B,GAClB,OAAO9lC,UAAUC,QAAUqK,GAAKw7B,EAAGy0L,GAASjwN,CAC9C,EACAiwN,EAAM45D,SAAW,SAAUruP,GACzB,OAAO9lC,UAAUC,QAAUk0R,GAAYruP,EAAGy0L,GAAS45D,CACrD,EACO55D,CACT,ED1BE65D,QfIa,SAAUhnN,GACvB,IAAIm6F,EACF8sH,EACAjwO,EACA+vO,EAAW,EACXj8O,EAAa,EAEf,SAASqiL,IASP,IARA,IAAIj6N,EAEFgpH,EACAxpE,EACAwuO,EACAC,EACA+F,EACAC,EANAvmQ,EAAIu5I,EAAMtnK,OAOH6F,EAAI,EAAGA,EAAIoyC,IAAcpyC,EAEhC,IADAwjH,EAAOsnK,GAASrpH,EAAO,GAAG,IAAGirH,WAAWgC,GACnCl0R,EAAI,EAAGA,EAAI0tB,IAAK1tB,EACnBw/C,EAAOynH,EAAMjnK,GACbg0R,EAAKD,EAAMv0O,EAAK14C,OAAQmtR,EAAMD,EAAKA,EACnChG,EAAKxuO,EAAKz1C,EAAIy1C,EAAKmyO,GACnB1D,EAAKzuO,EAAKx1C,EAAIw1C,EAAKoyO,GACnB5oK,EAAKi0G,MAAM98N,GAGf,SAASA,EAAM07C,EAAMrwB,EAAIC,EAAIvK,EAAIC,GAC/B,IAAIqD,EAAOq3B,EAAKr3B,KACd2vQ,EAAKt4O,EAAK79B,EACVA,EAAIg2Q,EAAKG,EACX,IAAI3vQ,EAiBJ,OAAOgH,EAAKwiQ,EAAKhwQ,GAAKkD,EAAK8sQ,EAAKhwQ,GAAKyN,EAAKwiQ,EAAKjwQ,GAAKmD,EAAK8sQ,EAAKjwQ,EAhB5D,GAAIwG,EAAK1d,MAAQ04C,EAAK14C,MAAO,CAC3B,IAAIiD,EAAIikR,EAAKxpQ,EAAKza,EAAIya,EAAKmtQ,GACzB3nR,EAAIikR,EAAKzpQ,EAAKxa,EAAIwa,EAAKotQ,GACvBxtQ,EAAIra,EAAIA,EAAIC,EAAIA,EACdoa,EAAIpG,EAAIA,IACA,IAANjU,IAA6Bqa,IAApBra,EAAIqqR,GAAOtwO,IAAkB/5C,GAChC,IAANC,IAA6Boa,IAApBpa,EAAIoqR,GAAOtwO,IAAkB95C,GAC1Coa,GAAKpG,GAAKoG,EAAIrL,KAAK2C,KAAK0I,KAAOA,EAAIyvQ,EACnCr0O,EAAKmyO,KAAO5nR,GAAKqa,IAAMpG,GAAKm2Q,GAAMA,IAAOF,EAAME,IAC/C30O,EAAKoyO,KAAO5nR,GAAKoa,GAAKpG,EACtBwG,EAAKmtQ,IAAM5nR,GAAKiU,EAAI,EAAIA,GACxBwG,EAAKotQ,IAAM5nR,EAAIgU,EAEnB,CAIJ,CACF,CACA,SAASk2Q,EAAQr4O,GACf,GAAIA,EAAKr3B,KAAM,OAAOq3B,EAAK79B,EAAI+1Q,EAAMl4O,EAAKr3B,KAAK1d,OAC/C,IAAK,IAAI9G,EAAI67C,EAAK79B,EAAI,EAAGhe,EAAI,IAAKA,EAC5B67C,EAAK77C,IAAM67C,EAAK77C,GAAGge,EAAI69B,EAAK79B,IAC9B69B,EAAK79B,EAAI69B,EAAK77C,GAAGge,EAGvB,CACA,SAAS+jP,IACP,GAAK96F,EAAL,CACA,IAAIjnK,EAEFw/C,EADA9xB,EAAIu5I,EAAMtnK,OAGZ,IADAo0R,EAAQ,IAAIx0P,MAAM7R,GACb1tB,EAAI,EAAGA,EAAI0tB,IAAK1tB,EAAGw/C,EAAOynH,EAAMjnK,GAAI+zR,EAAMv0O,EAAK14C,QAAUgmE,EAAOttB,EAAMx/C,EAAGinK,EAL5D,CAMpB,CAeA,MA1EsB,mBAAXn6F,IAAuBA,EAAS,GAAmB,MAAVA,EAAiB,GAAKA,IA4D1EmtJ,EAAM8nC,WAAa,SAAU0wB,EAAQ4B,GACnCptH,EAAQwrH,EACR3uO,EAASuwO,EACTtyB,GACF,EACA9nC,EAAMriL,WAAa,SAAUpS,GAC3B,OAAO9lC,UAAUC,QAAUi4C,GAAcpS,EAAGy0L,GAASriL,CACvD,EACAqiL,EAAM45D,SAAW,SAAUruP,GACzB,OAAO9lC,UAAUC,QAAUk0R,GAAYruP,EAAGy0L,GAAS45D,CACrD,EACA55D,EAAMntJ,OAAS,SAAUtnC,GACvB,OAAO9lC,UAAUC,QAAUmtE,EAAsB,mBAANtnC,EAAmBA,EAAI,IAAUA,GAAIu8N,IAAc9nC,GAASntJ,CACzG,EACOmtJ,CACT,EepFEq6D,MEFa,WACb,IAAIrtH,EACFznH,EACAsE,EACAl2B,EAEA2mQ,EADAV,EAAW,IAAU,IAErBW,EAAe,EACfC,EAAepxR,IACfqxR,EAAS,IACX,SAASz6D,EAAMz0L,GACb,IAAIxlC,EACF0tB,EAAIu5I,EAAMtnK,OACVqpH,EAAOsnK,GAASrpH,EAAO,GAAG,IAAGirH,WAAWyC,GAC1C,IAAK/mQ,EAAQ4X,EAAGxlC,EAAI,EAAGA,EAAI0tB,IAAK1tB,EAAGw/C,EAAOynH,EAAMjnK,GAAIgpH,EAAKi0G,MAAM98N,EACjE,CACA,SAAS4hQ,IACP,GAAK96F,EAAL,CACA,IAAIjnK,EAEFw/C,EADA9xB,EAAIu5I,EAAMtnK,OAGZ,IADA40R,EAAY,IAAIh1P,MAAM7R,GACjB1tB,EAAI,EAAGA,EAAI0tB,IAAK1tB,EAAGw/C,EAAOynH,EAAMjnK,GAAIu0R,EAAU/0O,EAAK14C,QAAU+sR,EAASr0O,EAAMx/C,EAAGinK,EALlE,CAMpB,CACA,SAAS0tH,EAAW94O,GAClB,IACEx3B,EACAJ,EAEAla,EACAC,EACAhK,EANE6zR,EAAW,EAGbtsO,EAAS,EAMX,GAAI1L,EAAKl8C,OAAQ,CACf,IAAKoK,EAAIC,EAAIhK,EAAI,EAAGA,EAAI,IAAKA,GACtBqkB,EAAIw3B,EAAK77C,MAAQikB,EAAIlL,KAAKoG,IAAIkF,EAAEpjB,UACnC4yR,GAAYxvQ,EAAEpjB,MAAOsmD,GAAUtjC,EAAGla,GAAKka,EAAII,EAAEta,EAAGC,GAAKia,EAAII,EAAEra,GAG/D6xC,EAAK9xC,EAAIA,EAAIw9C,EACb1L,EAAK7xC,EAAIA,EAAIu9C,CACf,KAGK,EACHljC,EAAIw3B,GACF9xC,EAAIsa,EAAEG,KAAKza,EACbsa,EAAEra,EAAIqa,EAAEG,KAAKxa,EACb,GAAG6pR,GAAYU,EAAUlwQ,EAAEG,KAAK1d,aAAeud,EAAIA,EAAEgQ,KACvD,CACAwnB,EAAK56C,MAAQ4yR,CACf,CACA,SAAS1zR,EAAM07C,EAAM36B,EAAIskB,EAAGpkB,GAC1B,IAAKy6B,EAAK56C,MAAO,OAAO,EACxB,IAAI8I,EAAI8xC,EAAK9xC,EAAIy1C,EAAKz1C,EACpBC,EAAI6xC,EAAK7xC,EAAIw1C,EAAKx1C,EAClBwiB,EAAIpL,EAAKF,EACTkD,EAAIra,EAAIA,EAAIC,EAAIA,EAIlB,GAAIwiB,EAAIA,EAAIkoQ,EAAStwQ,EAQnB,OAPIA,EAAIqwQ,IACI,IAAN1qR,IAA6Bqa,IAApBra,EAAIqqR,GAAOtwO,IAAkB/5C,GAChC,IAANC,IAA6Boa,IAApBpa,EAAIoqR,GAAOtwO,IAAkB95C,GACtCoa,EAAIowQ,IAAcpwQ,EAAIrL,KAAK2C,KAAK84Q,EAAepwQ,IACnDo7B,EAAKmyO,IAAM5nR,EAAI8xC,EAAK56C,MAAQ2sB,EAAQxJ,EACpCo7B,EAAKoyO,IAAM5nR,EAAI6xC,EAAK56C,MAAQ2sB,EAAQxJ,IAE/B,EAIJ,KAAIy3B,EAAKl8C,QAAUykB,GAAKqwQ,GAAxB,EAGD54O,EAAKr3B,OAASg7B,GAAQ3D,EAAKxnB,QACnB,IAANtqB,IAA6Bqa,IAApBra,EAAIqqR,GAAOtwO,IAAkB/5C,GAChC,IAANC,IAA6Boa,IAApBpa,EAAIoqR,GAAOtwO,IAAkB95C,GACtCoa,EAAIowQ,IAAcpwQ,EAAIrL,KAAK2C,KAAK84Q,EAAepwQ,KAErD,GAAOy3B,EAAKr3B,OAASg7B,IACnBhzB,EAAI+nQ,EAAU14O,EAAKr3B,KAAK1d,OAAS8mB,EAAQxJ,EACzCo7B,EAAKmyO,IAAM5nR,EAAIyiB,EACfgzB,EAAKoyO,IAAM5nR,EAAIwiB,SACRqvB,EAAOA,EAAKxnB,KAZ4B,CAanD,CAkBA,OAjBA4lM,EAAM8nC,WAAa,SAAU0wB,EAAQ4B,GACnCptH,EAAQwrH,EACR3uO,EAASuwO,EACTtyB,GACF,EACA9nC,EAAM45D,SAAW,SAAUruP,GACzB,OAAO9lC,UAAUC,QAAUk0R,EAAwB,mBAANruP,EAAmBA,EAAI,IAAUA,GAAIu8N,IAAc9nC,GAAS45D,CAC3G,EACA55D,EAAM26D,YAAc,SAAUpvP,GAC5B,OAAO9lC,UAAUC,QAAU60R,EAAehvP,EAAIA,EAAGy0L,GAASlhN,KAAK2C,KAAK84Q,EACtE,EACAv6D,EAAM46D,YAAc,SAAUrvP,GAC5B,OAAO9lC,UAAUC,QAAU80R,EAAejvP,EAAIA,EAAGy0L,GAASlhN,KAAK2C,KAAK+4Q,EACtE,EACAx6D,EAAMx9L,MAAQ,SAAU+I,GACtB,OAAO9lC,UAAUC,QAAU+0R,EAASlvP,EAAIA,EAAGy0L,GAASlhN,KAAK2C,KAAKg5Q,EAChE,EACOz6D,CACT,EFvGEjjC,KDGa,SAAU89F,GACvB,IAEEP,EAEAQ,EACA9tH,EACAr3I,EACAolQ,EACAlxO,EAREtxC,EAAK,GACPqhR,EAUF,SAAyB78F,GACvB,OAAO,EAAIj+K,KAAKC,IAAI4W,EAAMonK,EAAK7mK,OAAOrpB,OAAQ8oB,EAAMonK,EAAKxvL,OAAOV,OAClE,EAVEmsB,EAAW,GAAS,IAMpB2kB,EAAa,EAKf,SAASqiL,EAAMrsM,GACb,IAAK,IAAIpoB,EAAI,EAAGkoB,EAAIonQ,EAAMn1R,OAAQ6F,EAAIoyC,IAAcpyC,EAClD,IAAK,IAAWwxL,EAAM7mK,EAAQ3oB,EAAQuC,EAAGC,EAAGoa,EAAGrC,EAAtC/hB,EAAI,EAAqCA,EAAI0tB,IAAK1tB,EACxCmwB,GAAjB6mK,EAAO89F,EAAM90R,IAAkBmwB,OAC/BpmB,GADuCvC,EAASwvL,EAAKxvL,QAC1CuC,EAAIvC,EAAOmqR,GAAKxhQ,EAAOpmB,EAAIomB,EAAOwhQ,IAAMyC,GAAOtwO,GAC1D95C,EAAIxC,EAAOwC,EAAIxC,EAAOoqR,GAAKzhQ,EAAOnmB,EAAImmB,EAAOyhQ,IAAMwC,GAAOtwO,GAG1D/5C,GADAqa,IADAA,EAAIrL,KAAK2C,KAAK3R,EAAIA,EAAIC,EAAIA,IACjB+qR,EAAU/0R,IAAMokB,EAAIwJ,EAAQ2mQ,EAAUv0R,GACvCgK,GAAKoa,EACb5c,EAAOmqR,IAAM5nR,GAAKgY,EAAIizQ,EAAKh1R,IAC3BwH,EAAOoqR,IAAM5nR,EAAI+X,EACjBoO,EAAOwhQ,IAAM5nR,GAAKgY,EAAI,EAAIA,GAC1BoO,EAAOyhQ,IAAM5nR,EAAI+X,CAGvB,CACA,SAASggP,IACP,GAAK96F,EAAL,CACA,IAAIjnK,EAMFg3L,EALAtpK,EAAIu5I,EAAMtnK,OACVkV,EAAIigR,EAAMn1R,OACV+zR,EAAW,IAAI71Q,IAAIopJ,EAAMn3I,KAAI,SAAUjL,EAAG7kB,GACxC,MAAO,CAACwS,EAAGqS,EAAG7kB,EAAGinK,GAAQpiJ,EAC3B,KAEF,IAAK7kB,EAAI,EAAG4vB,EAAQ,IAAI2P,MAAM7R,GAAI1tB,EAAI6U,IAAK7U,GACzCg3L,EAAO89F,EAAM90R,IAAS8G,MAAQ9G,EACH,iBAAhBg3L,EAAK7mK,SAAqB6mK,EAAK7mK,OAAS,GAAKujQ,EAAU18F,EAAK7mK,SAC5C,iBAAhB6mK,EAAKxvL,SAAqBwvL,EAAKxvL,OAAS,GAAKksR,EAAU18F,EAAKxvL,SACvEooB,EAAMonK,EAAK7mK,OAAOrpB,QAAU8oB,EAAMonK,EAAK7mK,OAAOrpB,QAAU,GAAK,EAC7D8oB,EAAMonK,EAAKxvL,OAAOV,QAAU8oB,EAAMonK,EAAKxvL,OAAOV,QAAU,GAAK,EAE/D,IAAK9G,EAAI,EAAGg1R,EAAO,IAAIz1P,MAAM1qB,GAAI7U,EAAI6U,IAAK7U,EACxCg3L,EAAO89F,EAAM90R,GAAIg1R,EAAKh1R,GAAK4vB,EAAMonK,EAAK7mK,OAAOrpB,QAAU8oB,EAAMonK,EAAK7mK,OAAOrpB,OAAS8oB,EAAMonK,EAAKxvL,OAAOV,QAEtGytR,EAAY,IAAIh1P,MAAM1qB,GAAIogR,IAC1BF,EAAY,IAAIx1P,MAAM1qB,GAAIqgR,GAnBR,CAoBpB,CACA,SAASD,IACP,GAAKhuH,EACL,IAAK,IAAIjnK,EAAI,EAAG0tB,EAAIonQ,EAAMn1R,OAAQK,EAAI0tB,IAAK1tB,EACzCu0R,EAAUv0R,IAAM6zR,EAASiB,EAAM90R,GAAIA,EAAG80R,EAE1C,CACA,SAASI,IACP,GAAKjuH,EACL,IAAK,IAAIjnK,EAAI,EAAG0tB,EAAIonQ,EAAMn1R,OAAQK,EAAI0tB,IAAK1tB,EACzC+0R,EAAU/0R,IAAMizB,EAAS6hQ,EAAM90R,GAAIA,EAAG80R,EAE1C,CAqBA,OA1Ea,MAATA,IAAeA,EAAQ,IAsD3B76D,EAAM8nC,WAAa,SAAU0wB,EAAQ4B,GACnCptH,EAAQwrH,EACR3uO,EAASuwO,EACTtyB,GACF,EACA9nC,EAAM66D,MAAQ,SAAUtvP,GACtB,OAAO9lC,UAAUC,QAAUm1R,EAAQtvP,EAAGu8N,IAAc9nC,GAAS66D,CAC/D,EACA76D,EAAMznN,GAAK,SAAUgzB,GACnB,OAAO9lC,UAAUC,QAAU6S,EAAKgzB,EAAGy0L,GAASznN,CAC9C,EACAynN,EAAMriL,WAAa,SAAUpS,GAC3B,OAAO9lC,UAAUC,QAAUi4C,GAAcpS,EAAGy0L,GAASriL,CACvD,EACAqiL,EAAM45D,SAAW,SAAUruP,GACzB,OAAO9lC,UAAUC,QAAUk0R,EAAwB,mBAANruP,EAAmBA,EAAI,IAAUA,GAAIyvP,IAAsBh7D,GAAS45D,CACnH,EACA55D,EAAMhnM,SAAW,SAAUuS,GACzB,OAAO9lC,UAAUC,QAAUszB,EAAwB,mBAANuS,EAAmBA,EAAI,IAAUA,GAAI0vP,IAAsBj7D,GAAShnM,CACnH,EACOgnM,CACT,ECxFElwN,EGPa,SAAUA,GACvB,IACEk9J,EACAstH,EACAzC,EAHE+B,EAAW,GAAS,IAKxB,SAAS55D,EAAMrsM,GACb,IAAK,IAA6B4xB,EAAzBx/C,EAAI,EAAG0tB,EAAIu5I,EAAMtnK,OAAcK,EAAI0tB,IAAK1tB,GAC/Cw/C,EAAOynH,EAAMjnK,IAAS2xR,KAAOG,EAAG9xR,GAAKw/C,EAAKz1C,GAAKwqR,EAAUv0R,GAAK4tB,CAElE,CACA,SAASm0O,IACP,GAAK96F,EAAL,CACA,IAAIjnK,EACF0tB,EAAIu5I,EAAMtnK,OAGZ,IAFA40R,EAAY,IAAIh1P,MAAM7R,GACtBokQ,EAAK,IAAIvyP,MAAM7R,GACV1tB,EAAI,EAAGA,EAAI0tB,IAAK1tB,EACnBu0R,EAAUv0R,GAAKghB,MAAM8wQ,EAAG9xR,IAAM+J,EAAEk9J,EAAMjnK,GAAIA,EAAGinK,IAAU,GAAK4sH,EAAS5sH,EAAMjnK,GAAIA,EAAGinK,EANlE,CAQpB,CAWA,MA1BiB,mBAANl9J,IAAkBA,EAAI,GAAc,MAALA,EAAY,GAAKA,IAgB3DkwN,EAAM8nC,WAAa,SAAUv8N,GAC3ByhI,EAAQzhI,EACRu8N,GACF,EACA9nC,EAAM45D,SAAW,SAAUruP,GACzB,OAAO9lC,UAAUC,QAAUk0R,EAAwB,mBAANruP,EAAmBA,EAAI,IAAUA,GAAIu8N,IAAc9nC,GAAS45D,CAC3G,EACA55D,EAAMlwN,EAAI,SAAUy7B,GAClB,OAAO9lC,UAAUC,QAAUoK,EAAiB,mBAANy7B,EAAmBA,EAAI,IAAUA,GAAIu8N,IAAc9nC,GAASlwN,CACpG,EACOkwN,CACT,EHxBEjwN,EIRa,SAAUA,GACvB,IACEi9J,EACAstH,EACAxC,EAHE8B,EAAW,GAAS,IAKxB,SAAS55D,EAAMrsM,GACb,IAAK,IAA6B4xB,EAAzBx/C,EAAI,EAAG0tB,EAAIu5I,EAAMtnK,OAAcK,EAAI0tB,IAAK1tB,GAC/Cw/C,EAAOynH,EAAMjnK,IAAS4xR,KAAOG,EAAG/xR,GAAKw/C,EAAKx1C,GAAKuqR,EAAUv0R,GAAK4tB,CAElE,CACA,SAASm0O,IACP,GAAK96F,EAAL,CACA,IAAIjnK,EACF0tB,EAAIu5I,EAAMtnK,OAGZ,IAFA40R,EAAY,IAAIh1P,MAAM7R,GACtBqkQ,EAAK,IAAIxyP,MAAM7R,GACV1tB,EAAI,EAAGA,EAAI0tB,IAAK1tB,EACnBu0R,EAAUv0R,GAAKghB,MAAM+wQ,EAAG/xR,IAAMgK,EAAEi9J,EAAMjnK,GAAIA,EAAGinK,IAAU,GAAK4sH,EAAS5sH,EAAMjnK,GAAIA,EAAGinK,EANlE,CAQpB,CAWA,MA1BiB,mBAANj9J,IAAkBA,EAAI,GAAc,MAALA,EAAY,GAAKA,IAgB3DiwN,EAAM8nC,WAAa,SAAUv8N,GAC3ByhI,EAAQzhI,EACRu8N,GACF,EACA9nC,EAAM45D,SAAW,SAAUruP,GACzB,OAAO9lC,UAAUC,QAAUk0R,EAAwB,mBAANruP,EAAmBA,EAAI,IAAUA,GAAIu8N,IAAc9nC,GAAS45D,CAC3G,EACA55D,EAAMjwN,EAAI,SAAUw7B,GAClB,OAAO9lC,UAAUC,QAAUqK,EAAiB,mBAANw7B,EAAmBA,EAAI,IAAUA,GAAIu8N,IAAc9nC,GAASjwN,CACpG,EACOiwN,CACT,GJtBIk7D,GAAS,SACXC,GAAc,CAAC,QAAS,WAAY,cAAe,gBAAiB,UACpEC,GAAc,CAAC,SAAU,cACzBC,GAAc,CAAC,IAAK,IAAK,KAAM,MAQjC,SAASC,GAAMn1Q,GACb0gN,GAAUpgO,KAAK5B,KAAM,KAAMshB,EAC7B,CAsOA,SAASo1Q,GAAMC,EAAKjwP,EAAGp8B,EAAMuwN,GAC3B,IACE35N,EACA0tB,EACAxQ,EACAnc,EAJEoB,EAAI,GAAMqjC,EAAEutP,QAKhB,IAAK/yR,EAAI,EAAG0tB,EAAI0nQ,GAAYz1R,OAAQK,EAAI0tB,IAAK1tB,GAC3Ckd,EAAIk4Q,GAAYp1R,MACNm1R,IAAU3vP,EAAE00L,SAASh9M,IAAIu4Q,EAAIv4Q,GAAGsoB,EAAEtoB,IAE9C,IAAKld,EAAI,EAAG0tB,EAAIvrB,EAAExC,OAAQK,EAAI0tB,IAAK1tB,EACjCe,EAAOo0R,GAASn1R,GAChBkd,EAAI9T,GAAQo8B,EAAE00L,SAASi7D,GAAQn1R,GAAK01R,GAASvzR,EAAEnC,IAAM25N,GAASO,GAAS/3N,EAAEnC,GAAI25N,GAAS87D,EAAIx7D,MAAMl5N,GAAQ,OACjG00R,EAAIx7D,MAAMl5N,EAAMmc,GAEzB,IAAKwQ,EAAI+nQ,EAAIE,WAAa,EAAG31R,EAAI0tB,IAAK1tB,EACpCy1R,EAAIx7D,MAAMk7D,GAASn1R,EAAG,MAIxB,OADAy1R,EAAIE,UAAYxzR,EAAExC,OACX81R,CACT,CACA,SAASv7D,GAAS/3N,EAAGw3N,GACnB,IAAIn0N,EAAGuL,EACP,IAAKvL,KAAKrD,EACR,GAAIqpI,GAAWz6H,EAAI5O,EAAEqD,KAAOm0N,EAAMO,SAAS5jB,GAAevlM,IAAK,OAAO,EAExE,OAAO,CACT,CACA,SAAS2kR,GAASlwP,GAChB,IAAIrjC,EAAG+a,EAKP,IAAKA,KAJA,GAAe02Q,GAAUpuP,EAAEy0L,QAC9B,GAAM,uBAAyBz0L,EAAEy0L,OAEnC93N,EAAIyxR,GAASpuP,EAAEy0L,SACLz0L,EACJgmG,GAAWrpI,EAAE+a,KAAK04Q,GAAczzR,EAAE+a,GAAIsoB,EAAEtoB,GAAIsoB,GAElD,OAAOrjC,CACT,CACA,SAASyzR,GAAczzR,EAAG4O,EAAGy0B,GAC3BrjC,EAAEqpI,GAAWz6H,GAAK,SAAU8T,GAC1B,OAAO9T,EAAE8T,EAAG2gB,EACd,EAAIz0B,EACN,CK1SA,SAAS6e,GAAM4vB,GACb,IAAIt0B,EAAM,EACRvc,EAAW6wC,EAAK7wC,SAChB3O,EAAI2O,GAAYA,EAAShP,OAC3B,GAAKK,EAAgB,OAASA,GAAK,GAAGkrB,GAAOvc,EAAS3O,GAAGiB,WAAjDiqB,EAAM,EACds0B,EAAKv+C,MAAQiqB,CACf,CCNA,SAAS,GAA2BhH,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,GAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,GAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,GAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CCFlL,SAAS,GAA2B9zM,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,GAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,GAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,GAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CPuBlLu9D,GAAM1zD,WAAa,CACjB,KAAQ,QACR,SAAY,CACV,UAAY,GAEd,OAAU,CAAC,CACT,KAAQ,SACR,KAAQ,UACR,SAAW,GACV,CACD,KAAQ,UACR,KAAQ,UACR,SAAW,GACV,CACD,KAAQ,aACR,KAAQ,SACR,QAAW,KACV,CACD,KAAQ,QACR,KAAQ,SACR,QAAW,GACV,CACD,KAAQ,WACR,KAAQ,SACR,QAAW,MACV,CACD,KAAQ,cACR,KAAQ,SACR,QAAW,GACV,CACD,KAAQ,gBACR,KAAQ,SACR,QAAW,IACV,CACD,KAAQ,SACR,KAAQ,QACR,OAAS,EACT,OAAU,CAAC,CACT,IAAO,CACL,MAAS,UAEX,OAAU,CAAC,CACT,KAAQ,IACR,KAAQ,SACR,QAAW,GACV,CACD,KAAQ,IACR,KAAQ,SACR,QAAW,KAEZ,CACD,IAAO,CACL,MAAS,WAEX,OAAU,CAAC,CACT,KAAQ,SACR,KAAQ,SACR,MAAQ,GACP,CACD,KAAQ,WACR,KAAQ,SACR,QAAW,IACV,CACD,KAAQ,aACR,KAAQ,SACR,QAAW,KAEZ,CACD,IAAO,CACL,MAAS,SAEX,OAAU,CAAC,CACT,KAAQ,WACR,KAAQ,SACR,SAAY,GACZ,MAAQ,GACP,CACD,KAAQ,QACR,KAAQ,SACR,QAAW,IACV,CACD,KAAQ,cACR,KAAQ,SACR,QAAW,GACV,CACD,KAAQ,cACR,KAAQ,YAET,CACD,IAAO,CACL,MAAS,QAEX,OAAU,CAAC,CACT,KAAQ,QACR,KAAQ,QACP,CACD,KAAQ,KACR,KAAQ,SACP,CACD,KAAQ,WACR,KAAQ,SACR,QAAW,GACX,MAAQ,GACP,CACD,KAAQ,WACR,KAAQ,SACR,MAAQ,GACP,CACD,KAAQ,aACR,KAAQ,SACR,QAAW,KAEZ,CACD,IAAO,CACL,MAAS,KAEX,OAAU,CAAC,CACT,KAAQ,WACR,KAAQ,SACR,QAAW,IACV,CACD,KAAQ,IACR,KAAQ,WAET,CACD,IAAO,CACL,MAAS,KAEX,OAAU,CAAC,CACT,KAAQ,WACR,KAAQ,SACR,QAAW,IACV,CACD,KAAQ,IACR,KAAQ,aAGX,CACD,KAAQ,KACR,KAAQ,SACR,OAAS,EACT,QAAU,EACV,QAAWyzD,MAGf,GAASC,GAAOz0D,GAAW,CACzBluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IA2DWxyM,EAAI4kC,EA3DX0pO,EAAM32R,KAAKmC,MACb40R,EAASl8D,EAAM8D,QAAQ9D,EAAMmF,SAC7B1+M,EAASolB,EAAE00L,SAASk7D,IACpBU,EAAQtwP,EAAEoS,YAAc,IAuB1B,GApBK69O,GAUCI,IACFl8D,EAAMG,SAAS,SACf27D,EAAIxuH,MAAM0yD,EAAMxpM,UAEd/P,GAAUu5M,EAAM8D,QAAQ9D,EAAMiE,OAChC43D,GAAMC,EAAKjwP,EAAG,EAAGm0L,KAdnB76N,KAAKmC,MAAQw0R,EAyDnB,SAAoBxuH,EAAOzhI,GACzB,IAAIiwP,EAAM,GAAgBxuH,GACxBnjK,EAAO2xR,EAAI3xR,KACXhB,EAAU2yR,EAAI3yR,QACZizR,GAAU,EAUd,OATAN,EAAIM,QAAU,WACZ,OAAOA,CACT,EACAN,EAAI3yR,QAAU,WACZ,OAAOizR,GAAU,EAAOjzR,GAC1B,EACA2yR,EAAI3xR,KAAO,WACT,OAAOiyR,GAAU,EAAMjyR,GACzB,EACO0xR,GAAMC,EAAKjwP,GAAG,GAAMvmC,GAAG,OAAO,WACnC,OAAO82R,GAAU,CACnB,GACF,CA1EyB,CAAWp8D,EAAMxpM,OAAQqV,GAC5CiwP,EAAIx2R,GAAG,QAmDEkoB,EAnDYwyM,EAAM6C,SAmDdzwK,EAnDwBjtD,KAoDlC,WACL,OAAOqoB,EAAGy1M,MAAM7wK,GAAIyvK,KACtB,IArDSh2L,EAAEwwP,SACLH,GAAS,EACTJ,EAAIxC,QAGNt5D,EAAMG,SAAS,UAYb15M,GAAUy1Q,GAAUrwP,EAAE00L,SAASm7D,KAAgB17D,EAAM8D,WAAaj4L,EAAE1iC,QAEtE,GADA2yR,EAAI7nQ,MAAM7U,KAAKE,IAAIw8Q,EAAI7nQ,QAAS4X,EAAE5X,OAAS,IAAIylQ,WAAW,EAAIt6Q,KAAK0B,IAAIg7Q,EAAIrC,WAAY,EAAI0C,IACvFtwP,EAAEwwP,OACJ,IAAKP,EAAI3xR,SAAUgyR,GAAS,GAAIL,EAAIxC,YAGpC,GADIwC,EAAIM,WAAWN,EAAI3yR,WAClB+yR,EAAQ,OAAOl8D,EAAM4B,gBAI9B,OAAOz8N,KAAKu3D,OAAO7wB,EAAGm0L,EACxB,EACAtjK,OAAQ,SAAgB7wB,EAAGm0L,GAIzB,IAHA,IAGsDr+K,EAHlDkhL,EAAW7C,EAAM6C,SAGZh9N,EAAOV,KAAKq8N,QAASn1N,EAAI,EAAG6O,EAAIrV,EAAKG,OAAaqG,EAAI6O,IAAK7O,EAElE,IADAs1C,EAAM97C,EAAKwG,IACHjF,OAASo0R,IAAmC,SAAzB75O,EAAIyQ,GAAGkvK,QAAQhB,MAG1C,IAAK,IAAiDluK,EAA7CF,EAAMvQ,EAAIyQ,GAAGovK,QAASn7N,EAAI,EAAG0tB,EAAIm+B,EAAIlsD,OAAYK,EAAI0tB,IAAK1tB,EACjE,GAAoB,UAAhB6rD,EAAI7rD,GAAGe,OAAqBgrD,EAAKF,EAAI7rD,GAAG+rD,GAAG57B,QAAS,CACtDqsM,EAAS7C,MAAM5tK,EAAIywK,EAASxD,YAAYU,UACxC,KACF,CAKJ,OAAOC,EAAMD,OAAOl0L,EAAE00L,YAAYJ,SAASw7D,GAC7C,IQpOF,IAAI,GAAuB,SAAyBv4N,IACrC,SAASA,KACtB,IAAIvd,EAAMj5C,EAAS8tB,EAAM1lB,EAAU3O,EAAG0tB,EACtC,OAAO,UAAyB,SAAkB4vC,GAChD,cAAkBA,EAASlpC,KAAOkpC,EAASjpC,MACzC,KAAK,EACUA,EAAO,CAApBmrB,EAAO1gD,MACT,KAAK,EACHyH,EAAU8tB,EAAK3E,UAAW2E,EAAO,GACnC,KAAK,EACH,KAAMmrB,EAAOj5C,EAAQwf,OAAQ,CAC3Bu3C,EAASjpC,KAAO,EAChB,KACF,CAEA,OADAipC,EAASjpC,KAAO,EACTmrB,EACT,KAAK,EACH,GAAI7wC,EAAW6wC,EAAK7wC,SAClB,IAAK3O,EAAI,EAAG0tB,EAAI/e,EAAShP,OAAQK,EAAI0tB,IAAK1tB,EACxCq0B,EAAKh1B,KAAKsP,EAAS3O,IAGvBs9D,EAASjpC,KAAO,EAChB,MACF,KAAK,EACH,GAAIA,EAAK10B,OAAQ,CACf29D,EAASjpC,KAAO,EAChB,KACF,CACF,KAAK,EACL,IAAK,MACH,OAAOipC,EAASx5D,OAEtB,GAAG,GAAShF,KACd,CCrBe,SAASm3R,GAAUzxQ,EAAM7V,GAClC6V,aAAgB3G,KAClB2G,EAAO,MAAC+Q,EAAW/Q,QACF+Q,IAAb5mB,IAAwBA,EAAWunR,UACjB3gQ,IAAb5mB,IACTA,EAAWwnR,IASb,IAPA,IACE32O,EAEA5wC,EACAwnR,EACAp2R,EACA0tB,EANE28C,EAAO,IAAI,GAAK7lD,GAElByiJ,EAAQ,CAAC58F,GAKJ7qB,EAAOynH,EAAMlhJ,OAClB,IAAKqwQ,EAASznR,EAAS6wC,EAAKh7B,SAAWkJ,GAAK0oQ,EAAS72P,MAAMnH,KAAKg+P,IAASz2R,QAEvE,IADA6/C,EAAK7wC,SAAWynR,EACXp2R,EAAI0tB,EAAI,EAAG1tB,GAAK,IAAKA,EACxBinK,EAAM5nK,KAAKuP,EAAQwnR,EAAOp2R,GAAK,IAAI,GAAKo2R,EAAOp2R,KAC/C4O,EAAM8B,OAAS8uC,EACf5wC,EAAMg3B,MAAQ4Z,EAAK5Z,MAAQ,EAIjC,OAAOykC,EAAKgsN,WAAWC,GACzB,CAIA,SAASH,GAAetxQ,GACtB,OAAOA,EAAElW,QACX,CACA,SAASunR,GAAYrxQ,GACnB,OAAO0a,MAAMC,QAAQ3a,GAAKA,EAAE,GAAK,IACnC,CACA,SAAS0xQ,GAAS/2O,QACQjqB,IAApBiqB,EAAKh7B,KAAKvjB,QAAqBu+C,EAAKv+C,MAAQu+C,EAAKh7B,KAAKvjB,OAC1Du+C,EAAKh7B,KAAOg7B,EAAKh7B,KAAKA,IACxB,CACO,SAAS8xQ,GAAc92O,GAC5B,IAAI1yC,EAAS,EACb,GAAG0yC,EAAK1yC,OAASA,SAAgB0yC,EAAOA,EAAK9uC,SAAW8uC,EAAK1yC,SAAWA,EAC1E,CACO,SAAS,GAAK0X,GACnB1lB,KAAK0lB,KAAOA,EACZ1lB,KAAK8mC,MAAQ9mC,KAAKgO,OAAS,EAC3BhO,KAAK4R,OAAS,IAChB,CC7DO,SAAS61D,GAASpkE,GACvB,OAAY,MAALA,EAAY,KAAO,GAASA,EACrC,CACO,SAAS,GAASA,GACvB,GAAiB,mBAANA,EAAkB,MAAM,IAAI4kC,MACvC,OAAO5kC,CACT,CCNO,SAASq0R,KACd,OAAO,CACT,CACe,SAAS,GAACzsR,GACvB,OAAO,WACL,OAAOA,CACT,CACF,CFuDA,GAAK/K,UAAYi3R,GAAUj3R,WAAY,OAAgB,CACrD4E,YAAa,GACbgsB,MJzDa,WACb,OAAO9wB,KAAK23R,UAAU7mQ,GACxB,EIwDE8mQ,KH9Da,SAAUv3R,EAAUquD,GACjC,IAEE6vK,EAFEv2N,GAAS,EACTw2N,EAAY,GAA2Bx+N,MAE3C,IACE,IAAKw+N,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIoI,EAAO69K,EAAMp8N,MACjB9B,EAASuB,KAAK8sD,EAAMhO,IAAQ14C,EAAOhI,KACrC,CACF,CAAE,MAAOwnC,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACA,OAAOrD,IACT,EGgDE23R,UGlEa,SAAUt3R,EAAUquD,GAQjC,IAPA,IAGE7+C,EACA3O,EACA0tB,EALE8xB,EAAO1gD,KACTmoK,EAAQ,CAACznH,GACTnrB,EAAO,GAIPvtB,GAAS,EACJ04C,EAAOynH,EAAMlhJ,OAElB,GADAsO,EAAKh1B,KAAKmgD,GACN7wC,EAAW6wC,EAAK7wC,SAClB,IAAK3O,EAAI,EAAG0tB,EAAI/e,EAAShP,OAAQK,EAAI0tB,IAAK1tB,EACxCinK,EAAM5nK,KAAKsP,EAAS3O,IAI1B,KAAOw/C,EAAOnrB,EAAKtO,OACjB5mB,EAASuB,KAAK8sD,EAAMhO,IAAQ14C,EAAOhI,MAErC,OAAOA,IACT,EH+CEu3R,WInEa,SAAUl3R,EAAUquD,GAMjC,IALA,IAEE7+C,EACA3O,EAHEw/C,EAAO1gD,KACTmoK,EAAQ,CAACznH,GAGT14C,GAAS,EACJ04C,EAAOynH,EAAMlhJ,OAElB,GADA5mB,EAASuB,KAAK8sD,EAAMhO,IAAQ14C,EAAOhI,MAC/B6P,EAAW6wC,EAAK7wC,SAClB,IAAK3O,EAAI2O,EAAShP,OAAS,EAAGK,GAAK,IAAKA,EACtCinK,EAAM5nK,KAAKsP,EAAS3O,IAI1B,OAAOlB,IACT,EJqDEwT,KFjEa,SAAUnT,EAAUquD,GACjC,IAEE6vK,EAFEv2N,GAAS,EACTw2N,EAAY,GAA2Bx+N,MAE3C,IACE,IAAKw+N,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIoI,EAAO69K,EAAMp8N,MACjB,GAAI9B,EAASuB,KAAK8sD,EAAMhO,IAAQ14C,EAAOhI,MACrC,OAAO0gD,CAEX,CACF,CAAE,MAAOlZ,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACF,EEkDE+oB,IKrEa,SAAUjqB,GACvB,OAAOnC,KAAK23R,WAAU,SAAUj3O,GAI9B,IAHA,IAAIt0B,GAAOjqB,EAAMu+C,EAAKh7B,OAAS,EAC7B7V,EAAW6wC,EAAK7wC,SAChB3O,EAAI2O,GAAYA,EAAShP,SAClBK,GAAK,GAAGkrB,GAAOvc,EAAS3O,GAAGiB,MACpCu+C,EAAKv+C,MAAQiqB,CACf,GACF,EL8DE7Z,KMtEa,SAAUC,GACvB,OAAOxS,KAAKu3R,YAAW,SAAU72O,GAC3BA,EAAK7wC,UACP6wC,EAAK7wC,SAAS0C,KAAKC,EAEvB,GACF,ENiEE3L,KOvEa,SAAUgoB,GAIvB,IAHA,IAAInI,EAAQ1mB,KACV63R,EAaJ,SAA6B15Q,EAAG8E,GAC9B,GAAI9E,IAAM8E,EAAG,OAAO9E,EACpB,IAAI25Q,EAAS35Q,EAAE45Q,YACbC,EAAS/0Q,EAAE80Q,YACX5yQ,EAAI,KACNhH,EAAI25Q,EAAO7wQ,MACXhE,EAAI+0Q,EAAO/wQ,MACX,KAAO9I,IAAM8E,GACXkC,EAAIhH,EACJA,EAAI25Q,EAAO7wQ,MACXhE,EAAI+0Q,EAAO/wQ,MAEb,OAAO9B,CACT,CA1Be8yQ,CAAoBvxQ,EAAOmI,GACtCs5I,EAAQ,CAACzhJ,GACJA,IAAUmxQ,GACfnxQ,EAAQA,EAAM9U,OACdu2J,EAAM5nK,KAAKmmB,GAGb,IADA,IAAIhgB,EAAIyhK,EAAMtnK,OACPguB,IAAQgpQ,GACb1vH,EAAM/mK,OAAOsF,EAAG,EAAGmoB,GACnBA,EAAMA,EAAIjd,OAEZ,OAAOu2J,CACT,EP0DE4vH,UQxEa,WAGb,IAFA,IAAIr3O,EAAO1gD,KACTmoK,EAAQ,CAACznH,GACJA,EAAOA,EAAK9uC,QACjBu2J,EAAM5nK,KAAKmgD,GAEb,OAAOynH,CACT,ERkEE+vH,YSzEa,WACb,OAAOz3P,MAAMnH,KAAKt5B,KACpB,ETwEEm4R,OU1Ea,WACb,IAAIA,EAAS,GAMb,OALAn4R,KAAKu3R,YAAW,SAAU72O,GACnBA,EAAK7wC,UACRsoR,EAAO53R,KAAKmgD,EAEhB,IACOy3O,CACT,EVmEEnC,MW3Ea,WACb,IAAIzqN,EAAOvrE,KACTg2R,EAAQ,GAUV,OATAzqN,EAAKqsN,MAAK,SAAUl3O,GACdA,IAAS6qB,GAEXyqN,EAAMz1R,KAAK,CACT8wB,OAAQqvB,EAAK9uC,OACblJ,OAAQg4C,GAGd,IACOs1O,CACT,EX+DEhuP,KApCF,WACE,OAAOmvP,GAAUn3R,MAAMu3R,WAAWE,GACpC,GAmCGr/O,OAAOC,SAAU,IY5EpB,IAAI,GAAI,QACJ,GAAI,WACJ,GAAI,WCED,SAAS+/O,GAAkBC,EAASrzO,GAMzC,IALA,IAGE5mC,EACAla,EAJEhD,EAAI,EACN0tB,GAAKypQ,ECFF,SAAiB91P,EAAOyiB,GAI7B,IAHA,IACEjhD,EACA7C,EAFE6U,EAAIwsB,EAAM1hC,OAGPkV,GACL7U,EAAI8jD,IAAWjvC,IAAM,EACrBhS,EAAIw+B,EAAMxsB,GACVwsB,EAAMxsB,GAAKwsB,EAAMrhC,GACjBqhC,EAAMrhC,GAAK6C,EAEb,OAAOw+B,CACT,CDTmB+1P,CAAQ73P,MAAMnH,KAAK++P,GAAUrzO,IAASnkD,OACrD+mP,EAAI,GAGC1mP,EAAI0tB,GACTxQ,EAAIi6Q,EAAQn3R,GACRgD,GAAKq0R,GAAar0R,EAAGka,KAAMld,GAAOgD,EAAIs0R,GAAa5wC,EAAI6wC,GAAY7wC,EAAGxpO,IAAKld,EAAI,GAErF,OAAOgD,CACT,CACA,SAASu0R,GAAY7wC,EAAGxpO,GACtB,IAAIld,EAAGgG,EACP,GAAIwxR,GAAgBt6Q,EAAGwpO,GAAI,MAAO,CAACxpO,GAGnC,IAAKld,EAAI,EAAGA,EAAI0mP,EAAE/mP,SAAUK,EAC1B,GAAIy3R,GAAYv6Q,EAAGwpO,EAAE1mP,KAAOw3R,GAAgBE,GAAchxC,EAAE1mP,GAAIkd,GAAIwpO,GAClE,MAAO,CAACA,EAAE1mP,GAAIkd,GAKlB,IAAKld,EAAI,EAAGA,EAAI0mP,EAAE/mP,OAAS,IAAKK,EAC9B,IAAKgG,EAAIhG,EAAI,EAAGgG,EAAI0gP,EAAE/mP,SAAUqG,EAC9B,GAAIyxR,GAAYC,GAAchxC,EAAE1mP,GAAI0mP,EAAE1gP,IAAKkX,IAAMu6Q,GAAYC,GAAchxC,EAAE1mP,GAAIkd,GAAIwpO,EAAE1gP,KAAOyxR,GAAYC,GAAchxC,EAAE1gP,GAAIkX,GAAIwpO,EAAE1mP,KAAOw3R,GAAgBG,GAAcjxC,EAAE1mP,GAAI0mP,EAAE1gP,GAAIkX,GAAIwpO,GACvL,MAAO,CAACA,EAAE1mP,GAAI0mP,EAAE1gP,GAAIkX,GAM1B,MAAM,IAAI6pB,KACZ,CACA,SAAS0wP,GAAYx6Q,EAAG8E,GACtB,IAAI61Q,EAAK36Q,EAAEe,EAAI+D,EAAE/D,EACftS,EAAKqW,EAAEhY,EAAIkT,EAAElT,EACb4B,EAAKoW,EAAE/X,EAAIiT,EAAEjT,EACf,OAAO4tR,EAAK,GAAKA,EAAKA,EAAKlsR,EAAKA,EAAKC,EAAKA,CAC5C,CACA,SAAS0rR,GAAap6Q,EAAG8E,GACvB,IAAI61Q,EAAK36Q,EAAEe,EAAI+D,EAAE/D,EAA4B,KAAxBjF,KAAKE,IAAIgE,EAAEe,EAAG+D,EAAE/D,EAAG,GACtCtS,EAAKqW,EAAEhY,EAAIkT,EAAElT,EACb4B,EAAKoW,EAAE/X,EAAIiT,EAAEjT,EACf,OAAO4tR,EAAK,GAAKA,EAAKA,EAAKlsR,EAAKA,EAAKC,EAAKA,CAC5C,CACA,SAAS6rR,GAAgBv6Q,EAAGypO,GAC1B,IAAK,IAAI1mP,EAAI,EAAGA,EAAI0mP,EAAE/mP,SAAUK,EAC9B,IAAKq3R,GAAap6Q,EAAGypO,EAAE1mP,IACrB,OAAO,EAGX,OAAO,CACT,CACA,SAASs3R,GAAa5wC,GACpB,OAAQA,EAAE/mP,QACR,KAAK,EACH,OAON,SAAuBsd,GACrB,MAAO,CACLlT,EAAGkT,EAAElT,EACLC,EAAGiT,EAAEjT,EACLgU,EAAGf,EAAEe,EAET,CAba65Q,CAAcnxC,EAAE,IACzB,KAAK,EACH,OAAOgxC,GAAchxC,EAAE,GAAIA,EAAE,IAC/B,KAAK,EACH,OAAOixC,GAAcjxC,EAAE,GAAIA,EAAE,GAAIA,EAAE,IAEzC,CAQA,SAASgxC,GAAcz6Q,EAAG8E,GACxB,IAAIb,EAAKjE,EAAElT,EACToX,EAAKlE,EAAEjT,EACPyiB,EAAKxP,EAAEe,EACPoD,EAAKW,EAAEhY,EACPsX,EAAKU,EAAE/X,EACP0iB,EAAK3K,EAAE/D,EACPi9N,EAAM75N,EAAKF,EACXg6N,EAAM75N,EAAKF,EACX22Q,EAAMprQ,EAAKD,EACXrI,EAAIrL,KAAK2C,KAAKu/N,EAAMA,EAAMC,EAAMA,GAClC,MAAO,CACLnxO,GAAImX,EAAKE,EAAK65N,EAAM72N,EAAI0zQ,GAAO,EAC/B9tR,GAAImX,EAAKE,EAAK65N,EAAM92N,EAAI0zQ,GAAO,EAC/B95Q,GAAIoG,EAAIqI,EAAKC,GAAM,EAEvB,CACA,SAASirQ,GAAc16Q,EAAG8E,EAAGkC,GAC3B,IAAI/C,EAAKjE,EAAElT,EACToX,EAAKlE,EAAEjT,EACPyiB,EAAKxP,EAAEe,EACPoD,EAAKW,EAAEhY,EACPsX,EAAKU,EAAE/X,EACP0iB,EAAK3K,EAAE/D,EACP2M,EAAK1G,EAAEla,EACP6gB,EAAK3G,EAAEja,EACP+tR,EAAK9zQ,EAAEjG,EACP8L,EAAK5I,EAAKE,EACV42Q,EAAK92Q,EAAKyJ,EACV7O,EAAKqF,EAAKE,EACVtF,EAAKoF,EAAKyJ,EACVnD,EAAKiF,EAAKD,EACVuJ,EAAK+hQ,EAAKtrQ,EACV0H,EAAKjT,EAAKA,EAAKC,EAAKA,EAAKsL,EAAKA,EAC9B6H,EAAKH,EAAK/S,EAAKA,EAAKC,EAAKA,EAAKqL,EAAKA,EACnCurQ,EAAK9jQ,EAAKxJ,EAAKA,EAAKC,EAAKA,EAAKmtQ,EAAKA,EACnCG,EAAKF,EAAKl8Q,EAAKgO,EAAK/N,EACpBgoO,GAAMjoO,EAAKm8Q,EAAKl8Q,EAAKuY,IAAY,EAAL4jQ,GAAUh3Q,EACtC+iO,GAAMloO,EAAK0L,EAAK3L,EAAKka,GAAMkiQ,EAC3Bl0C,GAAMg0C,EAAK1jQ,EAAKxK,EAAKmuQ,IAAY,EAALC,GAAU/2Q,EACtC+iO,GAAMp6N,EAAKkM,EAAKgiQ,EAAKvwQ,GAAMywQ,EAC3BrpO,EAAIo1L,EAAKA,EAAKC,EAAKA,EAAK,EACxBwC,EAAI,GAAKj6N,EAAKs3N,EAAKE,EAAKD,EAAKE,GAC7ByC,EAAI5C,EAAKA,EAAKC,EAAKA,EAAKv3N,EAAKA,EAC7BzO,IAAMjF,KAAKoG,IAAI0vC,GAAK,MAAQ63L,EAAI3tO,KAAK2C,KAAKgrO,EAAIA,EAAI,EAAI73L,EAAI83L,KAAO,EAAI93L,GAAK83L,EAAID,GAChF,MAAO,CACL38O,EAAGmX,EAAK6iO,EAAKE,EAAKjmO,EAClBhU,EAAGmX,EAAK6iO,EAAKE,EAAKlmO,EAClBA,EAAGA,EAEP,CE5HA,SAASm6Q,GAAMp2Q,EAAG9E,EAAGgH,GACnB,IACEla,EACA+f,EAEA9f,EACA8R,EALEpQ,EAAKqW,EAAEhY,EAAIkT,EAAElT,EAGf4B,EAAKoW,EAAE/X,EAAIiT,EAAEjT,EAGbsqB,EAAK5oB,EAAKA,EAAKC,EAAKA,EAClB2oB,GACFxK,EAAK7M,EAAEe,EAAIiG,EAAEjG,EAAG8L,GAAMA,EACtBhO,EAAKiG,EAAE/D,EAAIiG,EAAEjG,EACT8L,GADYhO,GAAMA,IAEpB/R,GAAKuqB,EAAKxY,EAAKgO,IAAO,EAAIwK,GAC1BtqB,EAAI+O,KAAK2C,KAAK3C,KAAKE,IAAI,EAAG6C,EAAKwY,EAAKvqB,EAAIA,IACxCka,EAAEla,EAAIgY,EAAEhY,EAAIA,EAAI2B,EAAK1B,EAAI2B,EACzBsY,EAAEja,EAAI+X,EAAE/X,EAAID,EAAI4B,EAAK3B,EAAI0B,IAEzB3B,GAAKuqB,EAAKxK,EAAKhO,IAAO,EAAIwY,GAC1BtqB,EAAI+O,KAAK2C,KAAK3C,KAAKE,IAAI,EAAG6Q,EAAKwK,EAAKvqB,EAAIA,IACxCka,EAAEla,EAAIkT,EAAElT,EAAIA,EAAI2B,EAAK1B,EAAI2B,EACzBsY,EAAEja,EAAIiT,EAAEjT,EAAID,EAAI4B,EAAK3B,EAAI0B,KAG3BuY,EAAEla,EAAIkT,EAAElT,EAAIka,EAAEjG,EACdiG,EAAEja,EAAIiT,EAAEjT,EAEZ,CACA,SAAS8uP,GAAW77O,EAAG8E,GACrB,IAAI61Q,EAAK36Q,EAAEe,EAAI+D,EAAE/D,EAAI,KACnBtS,EAAKqW,EAAEhY,EAAIkT,EAAElT,EACb4B,EAAKoW,EAAE/X,EAAIiT,EAAEjT,EACf,OAAO4tR,EAAK,GAAKA,EAAKA,EAAKlsR,EAAKA,EAAKC,EAAKA,CAC5C,CACA,SAASysR,GAAM54O,GACb,IAAIviC,EAAIuiC,EAAKha,EACXzjB,EAAIy9B,EAAKnrB,KAAKmR,EACd0yP,EAAKj7Q,EAAEe,EAAI+D,EAAE/D,EACbtS,GAAMuR,EAAElT,EAAIgY,EAAE/D,EAAI+D,EAAEhY,EAAIkT,EAAEe,GAAKk6Q,EAC/BvsR,GAAMsR,EAAEjT,EAAI+X,EAAE/D,EAAI+D,EAAE/X,EAAIiT,EAAEe,GAAKk6Q,EACjC,OAAOxsR,EAAKA,EAAKC,EAAKA,CACxB,CACA,SAAS,GAAK4T,GACZzgB,KAAK0mC,EAAIjmB,EACTzgB,KAAKu1B,KAAO,KACZv1B,KAAKyhC,SAAW,IAClB,CACO,SAAS83P,GAAmBlB,EAASrzO,GAC1C,KAAMp2B,GAAKypQ,EDlDE,SAAUptR,GACvB,MAAoB,iBAANA,GAAkB,WAAYA,EAAIA,EAC9Cw1B,MAAMnH,KAAKruB,EACf,CC+CuB,CAAMotR,IAAUx3R,QAAS,OAAO,EACrD,IAAIsd,EAAG8E,EAAGkC,EAAGyJ,EAAG4qQ,EAAI/U,EAAIvjR,EAAGgG,EAAGR,EAAG+yR,EAAIC,EAIrC,IADAv7Q,EAAIk6Q,EAAQ,IAAMptR,EAAI,EAAGkT,EAAEjT,EAAI,IACzB0jB,EAAI,GAAI,OAAOzQ,EAAEe,EAIvB,GADA+D,EAAIo1Q,EAAQ,GAAIl6Q,EAAElT,GAAKgY,EAAE/D,EAAG+D,EAAEhY,EAAIkT,EAAEe,EAAG+D,EAAE/X,EAAI,IACvC0jB,EAAI,GAAI,OAAOzQ,EAAEe,EAAI+D,EAAE/D,EAG7Bm6Q,GAAMp2Q,EAAG9E,EAAGgH,EAAIkzQ,EAAQ,IAGxBl6Q,EAAI,IAAI,GAAKA,GAAI8E,EAAI,IAAI,GAAKA,GAAIkC,EAAI,IAAI,GAAKA,GAC/ChH,EAAEoX,KAAOpQ,EAAEsc,SAAWxe,EACtBA,EAAEsS,KAAOpX,EAAEsjB,SAAWtc,EACtBA,EAAEoQ,KAAOtS,EAAEwe,SAAWtjB,EAGtBqgC,EAAM,IAAKt9C,EAAI,EAAGA,EAAI0tB,IAAK1tB,EAAG,CAC5Bm4R,GAAMl7Q,EAAEuoB,EAAGzjB,EAAEyjB,EAAGvhB,EAAIkzQ,EAAQn3R,IAAKikB,EAAI,IAAI,GAAKA,GAK9Cje,EAAI+b,EAAEsS,KAAM7uB,EAAIyX,EAAEsjB,SAAUg4P,EAAKx2Q,EAAEyjB,EAAExnB,EAAGw6Q,EAAKv7Q,EAAEuoB,EAAExnB,EACjD,GACE,GAAIu6Q,GAAMC,EAAI,CACZ,GAAI1/B,GAAW9yP,EAAEw/B,EAAGvhB,EAAEuhB,GAAI,CACxBzjB,EAAI/b,EAAGiX,EAAEoX,KAAOtS,EAAGA,EAAEwe,SAAWtjB,IAAKjd,EACrC,SAASs9C,CACX,CACAi7O,GAAMvyR,EAAEw/B,EAAExnB,EAAGhY,EAAIA,EAAEquB,IACrB,KAAO,CACL,GAAIykO,GAAWtzP,EAAEggC,EAAGvhB,EAAEuhB,GAAI,EACxBvoB,EAAIzX,GAAK6uB,KAAOtS,EAAGA,EAAEwe,SAAWtjB,IAAKjd,EACrC,SAASs9C,CACX,CACAk7O,GAAMhzR,EAAEggC,EAAExnB,EAAGxY,EAAIA,EAAE+6B,QACrB,QACOv6B,IAAMR,EAAE6uB,MAOjB,IAJApQ,EAAEsc,SAAWtjB,EAAGgH,EAAEoQ,KAAOtS,EAAG9E,EAAEoX,KAAOtS,EAAEwe,SAAWxe,EAAIkC,EAGtDq0Q,EAAKF,GAAMn7Q,IACHgH,EAAIA,EAAEoQ,QAAUtS,IACjBwhQ,EAAK6U,GAAMn0Q,IAAMq0Q,IACpBr7Q,EAAIgH,EAAGq0Q,EAAK/U,GAGhBxhQ,EAAI9E,EAAEoX,IACR,CAIA,IADApX,EAAI,CAAC8E,EAAEyjB,GAAIvhB,EAAIlC,GACPkC,EAAIA,EAAEoQ,QAAUtS,GAAG9E,EAAE5d,KAAK4kB,EAAEuhB,GAIpC,IAHAvhB,EAAIizQ,GAAkBj6Q,EAAG6mC,GAGpB9jD,EAAI,EAAGA,EAAI0tB,IAAK1tB,GAAGid,EAAIk6Q,EAAQn3R,IAAM+J,GAAKka,EAAEla,EAAGkT,EAAEjT,GAAKia,EAAEja,EAC7D,OAAOia,EAAEjG,CACX,CC/GA,SAASy6Q,GAAc5zQ,GACrB,OAAO9L,KAAK2C,KAAKmJ,EAAE5jB,MACrB,CA2BA,SAASy3R,GAAW5rN,GAClB,OAAO,SAAUttB,GACVA,EAAK7wC,WACR6wC,EAAKxhC,EAAIjF,KAAKE,IAAI,GAAI6zD,EAAOttB,IAAS,GAE1C,CACF,CACA,SAASm5O,GAAmBz/M,EAAS1zE,EAAGs+C,GACtC,OAAO,SAAUtE,GACf,GAAI7wC,EAAW6wC,EAAK7wC,SAAU,CAC5B,IAAIA,EACF3O,EAGAgD,EAFA0qB,EAAI/e,EAAShP,OACbqe,EAAIk7D,EAAQ15B,GAAQh6C,GAAK,EAE3B,GAAIwY,EAAG,IAAKhe,EAAI,EAAGA,EAAI0tB,IAAK1tB,EAAG2O,EAAS3O,GAAGge,GAAKA,EAEhD,GADAhb,EAAIq1R,GAAmB1pR,EAAUm1C,GAC7B9lC,EAAG,IAAKhe,EAAI,EAAGA,EAAI0tB,IAAK1tB,EAAG2O,EAAS3O,GAAGge,GAAKA,EAChDwhC,EAAKxhC,EAAIhb,EAAIgb,CACf,CACF,CACF,CACA,SAAS46Q,GAAepzR,GACtB,OAAO,SAAUg6C,GACf,IAAI9uC,EAAS8uC,EAAK9uC,OAClB8uC,EAAKxhC,GAAKxY,EACNkL,IACF8uC,EAAKz1C,EAAI2G,EAAO3G,EAAIvE,EAAIg6C,EAAKz1C,EAC7By1C,EAAKx1C,EAAI0G,EAAO1G,EAAIxE,EAAIg6C,EAAKx1C,EAEjC,CACF,CChEe,SAAS,GAACw1C,GACvBA,EAAKh0B,GAAKzS,KAAKwoB,MAAMie,EAAKh0B,IAC1Bg0B,EAAK/zB,GAAK1S,KAAKwoB,MAAMie,EAAK/zB,IAC1B+zB,EAAKt+B,GAAKnI,KAAKwoB,MAAMie,EAAKt+B,IAC1Bs+B,EAAKr+B,GAAKpI,KAAKwoB,MAAMie,EAAKr+B,GAC5B,CCLe,SAAS,GAACzQ,EAAQ8a,EAAIC,EAAIvK,EAAIC,GAM3C,IALA,IACEq+B,EADEynH,EAAQv2J,EAAO/B,SAEjB3O,GAAK,EACL0tB,EAAIu5I,EAAMtnK,OACV6F,EAAIkL,EAAOzP,QAAUigB,EAAKsK,GAAM9a,EAAOzP,QAChCjB,EAAI0tB,IACX8xB,EAAOynH,EAAMjnK,IAASyrB,GAAKA,EAAI+zB,EAAKr+B,GAAKA,EACzCq+B,EAAKh0B,GAAKA,EAAIg0B,EAAKt+B,GAAKsK,GAAMg0B,EAAKv+C,MAAQuE,CAE/C,CCVA,SAAS,GAA2B0e,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,GAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,GAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,GAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAGlL,IAAI6gE,GAAU,CACVjzP,OAAQ,GAEVkzP,GAAY,CAAC,EACbC,GAAU,CAAC,EACb,SAASC,GAAUn0Q,GACjB,OAAOA,EAAErS,EACX,CACA,SAASymR,GAAgBp0Q,GACvB,OAAOA,EAAEq0Q,QACX,CACe,SAAS,KACtB,IAEEvzR,EAFE6M,EAAKwmR,GACPE,EAAWD,GAEb,SAASE,EAAS30Q,GAChB,IAGEkJ,EACA7I,EACA7kB,EACAqqE,EACA35D,EACA8uC,EACAm0O,EACAyF,EAVEnyH,EAAQ1nI,MAAMnH,KAAK5T,GACrB2qE,EAAY38E,EACZ6mR,EAAkBH,EASlBI,EAAY,IAAIz7Q,IAClB,GAAY,MAARlY,EAAc,CAChB,IAME03N,EANEhgB,EAAIp2C,EAAMn3I,KAAI,SAAUjL,EAAG7kB,GAC7B,OAyFR,SAAmB2F,GACjBA,EAAO,GAAG0M,OAAO1M,GACjB,IAAI3F,EAAI2F,EAAKhG,OACT45R,GAAM5zR,EAAM3F,EAAI,KAAOu5R,GAAM5zR,EAAM3F,EAAI,KAAI2F,EAAOA,EAAKmgB,MAAM,GAAI,IACrE,MAAmB,MAAZngB,EAAK,GAAaA,EAAO,IAAI0M,OAAO1M,EAC7C,CA9Fe,CAAUA,EAAKkf,EAAG7kB,EAAGwkB,GAC9B,IACI4mC,EAAIiyJ,EAAEvtL,IAAI0pQ,IACV7wE,EAAI,IAAIljL,IAAI43K,GAAG/sM,IAAI,IACnBgtN,EAAY,GAA2BlyK,GAE3C,IACE,IAAKkyK,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAI33C,EAAK49N,EAAMp8N,MACV0nN,EAAE/nL,IAAInhC,KACTkpN,EAAEr4M,IAAI7Q,GACN49M,EAAEh+M,KAAKI,GACP2rD,EAAE/rD,KAAKm6R,GAAS/5R,IAChBwnK,EAAM5nK,KAAK05R,IAEf,CACF,CAAE,MAAOzyP,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACAgtF,EAAY,SAAmB3pD,EAAGxlC,GAChC,OAAOq9M,EAAEr9M,EACX,EACAq5R,EAAkB,SAAyB7zP,EAAGxlC,GAC5C,OAAOorD,EAAEprD,EACX,CACF,CACA,IAAKA,EAAI,EAAG0tB,EAAIu5I,EAAMtnK,OAAQK,EAAI0tB,IAAK1tB,EACrC6kB,EAAIoiJ,EAAMjnK,GAAIw/C,EAAOynH,EAAMjnK,GAAK,IAAI,GAAK6kB,GACD,OAAnC8uQ,EAASxkM,EAAUtqE,EAAG7kB,EAAGwkB,MAAmBmvQ,GAAU,MACzDyF,EAAU55O,EAAKhtC,GAAKmhR,EACpB2F,EAAUt4R,IAAIo4R,EAASE,EAAU14P,IAAIw4P,GAAWN,GAAYt5O,IAEhB,OAAzCm0O,EAAS0F,EAAgBx0Q,EAAG7kB,EAAGwkB,MAAmBmvQ,GAAU,MAC/Dn0O,EAAK9uC,OAASijR,GAGlB,IAAK3zR,EAAI,EAAGA,EAAI0tB,IAAK1tB,EAEnB,GAAI2zR,GADJn0O,EAAOynH,EAAMjnK,IACK0Q,OAAQ,CAExB,KADAA,EAAS4oR,EAAUx4R,IAAI6yR,IACV,MAAM,IAAI5sP,MAAM,YAAc4sP,GAC3C,GAAIjjR,IAAWooR,GAAW,MAAM,IAAI/xP,MAAM,cAAgB4sP,GACtDjjR,EAAO/B,SAAU+B,EAAO/B,SAAStP,KAAKmgD,GAAW9uC,EAAO/B,SAAW,CAAC6wC,GACxEA,EAAK9uC,OAASA,CAChB,KAAO,CACL,GAAI25D,EAAM,MAAM,IAAItjC,MAAM,kBAC1BsjC,EAAO7qB,CACT,CAEF,IAAK6qB,EAAM,MAAM,IAAItjC,MAAM,WAI3B,GAAY,MAARphC,EAAc,CAChB,KAAO0kE,EAAK7lD,OAASu0Q,IAAoC,IAAzB1uN,EAAK17D,SAAShP,QAC5C0qE,EAAOA,EAAK17D,SAAS,KAAM+e,EAE7B,IAAK,IAAI6yL,EAAMt5C,EAAMtnK,OAAS,EAAG4gN,GAAO,IACtC/gK,EAAOynH,EAAMs5C,IACJ/7L,OAASu0Q,KAFyBx4E,EAG3C/gK,EAAKh7B,KAAO,IAEhB,CAOA,GANA6lD,EAAK35D,OAASmoR,GACdxuN,EAAKgsN,YAAW,SAAU72O,GACxBA,EAAK5Z,MAAQ4Z,EAAK9uC,OAAOk1B,MAAQ,IAC/BlY,CACJ,IAAG2oQ,WAAWC,IACdjsN,EAAK35D,OAAS,KACVgd,EAAI,EAAG,MAAM,IAAIqZ,MAAM,SAC3B,OAAOsjC,CACT,CAUA,OATA8uN,EAAS3mR,GAAK,SAAUzI,GACtB,OAAOrK,UAAUC,QAAU6S,EAAK+zD,GAASx8D,GAAIovR,GAAY3mR,CAC3D,EACA2mR,EAASD,SAAW,SAAUnvR,GAC5B,OAAOrK,UAAUC,QAAUu5R,EAAW3yN,GAASx8D,GAAIovR,GAAYD,CACjE,EACAC,EAASxzR,KAAO,SAAUoE,GACxB,OAAOrK,UAAUC,QAAUgG,EAAO4gE,GAASx8D,GAAIovR,GAAYxzR,CAC7D,EACOwzR,CACT,CAeA,SAASK,GAAS7zR,GAChB,IAAI3F,EAAI2F,EAAKhG,OACb,GAAIK,EAAI,EAAG,MAAO,GAClB,OAASA,EAAI,IAAOu5R,GAAM5zR,EAAM3F,KAChC,OAAO2F,EAAKmgB,MAAM,EAAG9lB,EACvB,CAKA,SAASu5R,GAAM5zR,EAAM3F,GACnB,GAAgB,MAAZ2F,EAAK3F,GAAY,CAEnB,IADA,IAAIwF,EAAI,EACDxF,EAAI,GAAmB,OAAd2F,IAAO3F,MAAewF,EACtC,GAAgB,IAAP,EAAJA,GAAc,OAAO,CAC5B,CACA,OAAO,CACT,CCtJA,SAASi0R,GAAkBx8Q,EAAG8E,GAC5B,OAAO9E,EAAEvM,SAAWqR,EAAErR,OAAS,EAAI,CACrC,CAUA,SAASgpR,GAAS3oR,GAChB,IAAIpC,EAAWoC,EAAEpC,SACjB,OAAOA,EAAWA,EAAS,GAAKoC,EAAElO,CACpC,CAGA,SAAS82R,GAAU5oR,GACjB,IAAIpC,EAAWoC,EAAEpC,SACjB,OAAOA,EAAWA,EAASA,EAAShP,OAAS,GAAKoR,EAAElO,CACtD,CAIA,SAAS+2R,GAAYC,EAAIC,EAAIpwQ,GAC3B,IAAImsQ,EAASnsQ,GAASowQ,EAAG95R,EAAI65R,EAAG75R,GAChC85R,EAAG71Q,GAAK4xQ,EACRiE,EAAGl9Q,GAAK8M,EACRmwQ,EAAG51Q,GAAK4xQ,EACRiE,EAAGv1Q,GAAKmF,EACRowQ,EAAGjlR,GAAK6U,CACV,CAqBA,SAASqwQ,GAAaC,EAAKjpR,EAAG4lR,GAC5B,OAAOqD,EAAI/8Q,EAAEvM,SAAWK,EAAEL,OAASspR,EAAI/8Q,EAAI05Q,CAC7C,CACA,SAASsD,GAASz6O,EAAMx/C,GACtBlB,KAAK0mC,EAAIga,EACT1gD,KAAK4R,OAAS,KACd5R,KAAK6P,SAAW,KAChB7P,KAAK+vD,EAAI,KACT/vD,KAAKme,EAAIne,KACTA,KAAKylB,EAAI,EACTzlB,KAAK+V,EAAI,EACT/V,KAAKmlB,EAAI,EACTnlB,KAAK8d,EAAI,EACT9d,KAAK+D,EAAI,KACT/D,KAAKkB,EAAIA,CACX,CCrEA,SAAS,GAAkBid,EAAG8E,GAC5B,OAAO9E,EAAEvM,SAAWqR,EAAErR,OAAS,EAAI,CACrC,CAIA,SAASwpR,GAAYnwR,EAAGka,GACtB,OAAOla,EAAIka,EAAEla,CACf,CAIA,SAASowR,GAAWnwR,EAAGia,GACrB,OAAOlL,KAAKE,IAAIjP,EAAGia,EAAEja,EACvB,CCde,SAAS,GAAC0G,EAAQ8a,EAAIC,EAAIvK,EAAIC,GAM3C,IALA,IACEq+B,EADEynH,EAAQv2J,EAAO/B,SAEjB3O,GAAK,EACL0tB,EAAIu5I,EAAMtnK,OACV6F,EAAIkL,EAAOzP,QAAUkgB,EAAKsK,GAAM/a,EAAOzP,QAChCjB,EAAI0tB,IACX8xB,EAAOynH,EAAMjnK,IAASwrB,GAAKA,EAAIg0B,EAAKt+B,GAAKA,EACzCs+B,EAAK/zB,GAAKA,EAAI+zB,EAAKr+B,GAAKsK,GAAM+zB,EAAKv+C,MAAQuE,CAE/C,CF6DAy0R,GAASj7R,UAAYsX,OAAO0wB,OAAO,GAAKhoC,WGrEjC,IAAI6jD,IAAO,EAAI9pC,KAAK2C,KAAK,IAAM,EAC/B,SAAS0+Q,GAAc11R,EAAOgM,EAAQ8a,EAAIC,EAAIvK,EAAIC,GAkBvD,IAjBA,IAEE+f,EACAipO,EAIAz+P,EACAC,EAEA0uR,EACAC,EACAC,EACAC,EACAC,EACA7sQ,EACA4oN,EAhBEhhH,EAAO,GACTyxC,EAAQv2J,EAAO/B,SAGfgsC,EAAK,EACLC,EAAK,EACLltB,EAAIu5I,EAAMtnK,OAGVsB,EAAQyP,EAAOzP,MAQV05C,EAAKjtB,GAAG,CACbhiB,EAAKwV,EAAKsK,EAAI7f,EAAKwV,EAAKsK,EAGxB,GAAG4uQ,EAAWpzH,EAAMrsH,KAAM35C,aAAeo5R,GAAYz/O,EAAKltB,GAO1D,IANA4sQ,EAAWC,EAAWF,EAEtB7jD,EAAO6jD,EAAWA,GADlBzsQ,EAAQ7U,KAAKE,IAAItN,EAAKD,EAAIA,EAAKC,IAAO1K,EAAQyD,IAE9C+1R,EAAW1hR,KAAKE,IAAIshR,EAAW/jD,EAAMA,EAAO8jD,GAGrC1/O,EAAKltB,IAAKktB,EAAI,CAMnB,GALAy/O,GAAYlwB,EAAYljG,EAAMrsH,GAAI35C,MAC9BkpQ,EAAYmwB,IAAUA,EAAWnwB,GACjCA,EAAYowB,IAAUA,EAAWpwB,GACrC3zB,EAAO6jD,EAAWA,EAAWzsQ,GAC7B4sQ,EAAWzhR,KAAKE,IAAIshR,EAAW/jD,EAAMA,EAAO8jD,IAC7BG,EAAU,CACvBJ,GAAYlwB,EACZ,KACF,CACAswB,EAAWD,CACb,CAGAhlK,EAAKn2H,KAAK6hC,EAAM,CACdjgC,MAAOo5R,EACPK,KAAMhvR,EAAKC,EACXgD,SAAUs4J,EAAMnhJ,MAAM60B,EAAIC,KAExB1Z,EAAIw5P,KAAM,GAAYx5P,EAAK1V,EAAIC,EAAIvK,EAAIjgB,EAAQwqB,GAAM9f,EAAK0uR,EAAWp5R,EAAQkgB,GAAS,GAAa+f,EAAK1V,EAAIC,EAAIxqB,EAAQuqB,GAAM9f,EAAK2uR,EAAWp5R,EAAQigB,EAAIC,GAC9JlgB,GAASo5R,EAAU1/O,EAAKC,CAC1B,CACA,OAAO46E,CACT,CACA,OAAe,SAAUh7G,EAAO9V,GAC9B,SAASi2R,EAASjqR,EAAQ8a,EAAIC,EAAIvK,EAAIC,GACpCi5Q,GAAc11R,EAAOgM,EAAQ8a,EAAIC,EAAIvK,EAAIC,EAC3C,CAIA,OAHAw5Q,EAASj2R,MAAQ,SAAUqF,GACzB,OAAOyQ,GAAQzQ,GAAKA,GAAK,EAAIA,EAAI,EACnC,EACO4wR,CACR,CARD,CAQG93O,IC7DH,GAAe,SAAUroC,EAAO9V,GAC9B,SAASk2R,EAAWlqR,EAAQ8a,EAAIC,EAAIvK,EAAIC,GACtC,IAAKq0G,EAAO9kH,EAAOmqR,YAAcrlK,EAAK9wH,QAAUA,EAS9C,IARA,IAAI8wH,EACFt0F,EACA+lI,EACAjnK,EAEA0tB,EADA1nB,GAAK,EAEL6O,EAAI2gH,EAAK71H,OACTsB,EAAQyP,EAAOzP,QACR+E,EAAI6O,GAAG,CAEd,IADeoyJ,GAAf/lI,EAAMs0F,EAAKxvH,IAAgB2I,SACtB3O,EAAIkhC,EAAIjgC,MAAQ,EAAGysB,EAAIu5I,EAAMtnK,OAAQK,EAAI0tB,IAAK1tB,EAAGkhC,EAAIjgC,OAASgmK,EAAMjnK,GAAGiB,MACxEigC,EAAIw5P,KAAM,GAAYx5P,EAAK1V,EAAIC,EAAIvK,EAAIjgB,EAAQwqB,IAAOtK,EAAKsK,GAAMyV,EAAIjgC,MAAQA,EAAQkgB,GAAS,GAAa+f,EAAK1V,EAAIC,EAAIxqB,EAAQuqB,IAAOtK,EAAKsK,GAAM0V,EAAIjgC,MAAQA,EAAQigB,EAAIC,GAC9KlgB,GAASigC,EAAIjgC,KACf,MAEAyP,EAAOmqR,UAAYrlK,EAAO4kK,GAAc11R,EAAOgM,EAAQ8a,EAAIC,EAAIvK,EAAIC,GACnEq0G,EAAK9wH,MAAQA,CAEjB,CAIA,OAHAk2R,EAAWl2R,MAAQ,SAAUqF,GAC3B,OAAOyQ,GAAQzQ,GAAKA,GAAK,EAAIA,EAAI,EACnC,EACO6wR,CACR,CA1BD,CA0BG/3O,ICxBH,SAAS,GAAOmmE,EAAMrpF,EAAKtwB,GACzB,IAAIygB,EAAM,CAAC,EAMX,OALAk5F,EAAK0tK,MAAK,SAAUl3O,GAClB,IAAI38C,EAAI28C,EAAKh7B,KACTnV,EAAOxM,KAAIitB,EAAI6P,EAAI98B,IAAM28C,EAC/B,IACAwpE,EAAKioI,OAASnhO,EACPk5F,CACT,CAYA,SAAS8xK,GAAK16Q,GACZ0gN,GAAUpgO,KAAK5B,KAAM,KAAMshB,EAC7B,CACA06Q,GAAKj5D,WAAa,CAChB,KAAQ,OACR,SAAY,CACV,YAAc,EACd,SAAW,GAEb,OAAU,CAAC,CACT,KAAQ,OACR,KAAQ,QACR,OAAS,GACR,CACD,KAAQ,WACR,KAAQ,aAGZ,IAAIlzN,GAAW,SAAkB+e,GAC/B,OAAOA,EAAE4R,MACX,EA8CA,SAASy7P,KACP,IAAIr7P,EAAO,GACTq7P,EAAO,CACLngO,QAAS,SAAiBv5B,GACxB,OAAO25P,EAAS76R,EAAMkhC,EAAO,GAAI,EACnC,EACA1B,IAAK,SAAa9a,GAChB,OAAO6a,EAAKrgC,KAAKwlB,GAAIk2Q,CACvB,GAEJ,SAAS56R,EAAMkhC,EAAOuE,GACpB,GAAIA,GAASlG,EAAK//B,OAChB,OAAO0hC,EAUT,IARA,IAKE45P,EACAh6R,EACAq+B,EAPE5R,EAAI2T,EAAM1hC,OACZggC,EAAMD,EAAKkG,KACXs1P,EAAc,CAAC,EACfxpR,EAAS,CAAC,EACR1R,GAAK,IAIAA,EAAI0tB,IAEP4R,EAAS47P,EADbD,EAAWt7P,EAAI1+B,EAAQogC,EAAMrhC,IAAM,KAEjCs/B,EAAOjgC,KAAK4B,GAEZi6R,EAAYD,GAAY,CAACh6R,GAG7B,IAAKg6R,KAAYC,EACfxpR,EAAOupR,GAAY96R,EAAM+6R,EAAYD,GAAWr1P,GAElD,OAAOl0B,CACT,CACA,SAASspR,EAASlrQ,EAAK8V,GACrB,KAAMA,EAAQlG,EAAK//B,OAAQ,OAAOmwB,EAClC,IAAIuR,EAAQ,GACZ,IAAK,IAAI1B,KAAO7P,EACduR,EAAMhiC,KAAK,CACTsgC,IAAKA,EACLL,OAAQ07P,EAASlrQ,EAAI6P,GAAMiG,KAG/B,OAAOvE,CACT,CACA,OAAO05P,CACT,CAOA,SAASI,GAAgB/6Q,GACvB0gN,GAAUpgO,KAAK5B,KAAM,KAAMshB,EAC7B,CArGA,GAAS06Q,GAAMh6D,GAAW,CACxBluN,UAAW,SAAmB4yB,EAAGm0L,GAC1BA,EAAMxpM,QACT,GAAM,oDAER,IAAIsmC,EAAMjxB,EAAE+vK,SACV2jB,EAAM1zL,EAAE00L,WACRl4M,EAAM23M,EAAMtkN,QACZ2zG,EAAOlqH,KAAKmC,MAkCd,QAjCK+nH,GAAQkwG,GAAOS,EAAM8D,aAEpBz0G,GACFA,EAAK0tK,MAAK,SAAUl3O,GACdA,EAAK7wC,UAAY6pN,GAAQh5K,EAAKh7B,OAChCxC,EAAIi3M,IAAI55N,KAAKmgD,EAAKh7B,KAEtB,IAIF1lB,KAAKmC,MAAQ+nH,EAAOitK,GAAU,CAC5B32P,OAAQ,GAAMkG,EAAE9F,MAAMjP,QAAO,SAAU/C,EAAGloB,GAExC,OADAkoB,EAAEiS,IAAIn6B,GACCkoB,CACT,GAAGqtQ,MAAQngO,QAAQ54C,EAAImO,SACtBxhB,IAGC8nD,GACFuyD,EAAK0tK,MAAK,SAAUl3O,GACdA,EAAK7wC,WACP6wC,EAAO,GAAOA,EAAKh7B,MACnBxC,EAAI1R,IAAIjR,KAAKmgD,GACbx9B,EAAImO,OAAO9wB,KAAKmgD,GAEpB,IAIF,GAAOwpE,EAAMyvG,GAASA,KAExBz2M,EAAImO,OAAOk6C,KAAO2+C,EACXhnG,CACT,IA2DF,IAAI,GAAoB,SAA2B/E,EAAG8E,GACpD,OAAO9E,EAAEvM,SAAWqR,EAAErR,OAAS,EAAI,CACrC,EACA,GAASyqR,GAAiBr6D,GAAW,CACnCluN,UAAW,SAAmB4yB,EAAGm0L,GAC1BA,EAAMxpM,QAAWwpM,EAAMxpM,OAAOk6C,MACjC,GAAMvrE,KAAK8E,YAAY7C,KAAO,mDAEhC,IAAI6mH,EAAS9oH,KAAK8oH,OAAOpiF,EAAE/6B,QACzBi0H,EAAS5/H,KAAK4/H,OACdr0D,EAAOsvJ,EAAMxpM,OAAOk6C,KACpBw9J,EAAKriM,EAAEqiM,IAAMnpG,EACXl5F,EAAEm5F,MAAOt0D,EAAKn/C,IAAIsa,EAAEm5F,OAAYt0D,EAAKz6C,QACrC4V,EAAEn0B,MAAMg5D,EAAKh5D,KAAKynN,GAActzL,EAAEn0B,MAAM,SAAUwT,GACpD,OAAOA,EAAEL,IACX,KAgBJ,SAAmBojG,EAAQxnG,EAAQolB,GACjC,IAAK,IAAItoB,EAAGld,EAAI,EAAG0tB,EAAItN,EAAOzgB,OAAQK,EAAI0tB,IAAK1tB,GAC7Ckd,EAAIkD,EAAOpgB,MACFwlC,GAAGoiF,EAAO1qG,GAAGsoB,EAAEtoB,GAE5B,CApBIk+Q,CAAUxzK,EAAQ9oH,KAAKshB,OAAQolB,GAC3BoiF,EAAOwqJ,YACTxqJ,EAAOwqJ,YAA4B,IAAjB5sO,EAAE4sO,WAAuB,GAAoB57N,IAEjE,IACE13C,KAAKmC,MAAQ2mH,EAAOv9C,EACtB,CAAE,MAAO/jC,GACP,GAAMA,EACR,CAIA,OAHA+jC,EAAKqsN,MAAK,SAAUl3O,GAClB,OAWN,SAAmBA,EAAMk/E,EAAQmpG,GAG/B,IAFA,IAAIhlO,EAAI28C,EAAKh7B,KACXkJ,EAAIgxG,EAAO/+H,OAAS,EACbK,EAAI,EAAGA,EAAI0tB,IAAK1tB,EACvB6C,EAAEglO,EAAG7nO,IAAMw/C,EAAKk/E,EAAO1+H,IAEzB6C,EAAEglO,EAAGn6M,IAAM8xB,EAAK7wC,SAAW6wC,EAAK7wC,SAAShP,OAAS,CACpD,CAlBa48H,CAAU/8E,EAAMk/E,EAAQmpG,EACjC,IACOlO,EAAMD,OAAOl0L,EAAE00L,YAAYJ,SAAS+N,GAAI/N,SAAS,OAC1D,IAgBF,IAAIuhE,GAAW,CAAC,IAAK,IAAK,IAAK,QAAS,YAQxC,SAASC,GAAKl7Q,GACZ+6Q,GAAgBz6R,KAAK5B,KAAMshB,EAC7B,CACAk7Q,GAAKz5D,WAAa,CAChB,KAAQ,OACR,SAAY,CACV,MAAQ,EACR,UAAY,GAEd,OAAU,CAAC,CACT,KAAQ,QACR,KAAQ,SACP,CACD,KAAQ,OACR,KAAQ,WACP,CACD,KAAQ,UACR,KAAQ,SACR,QAAW,GACV,CACD,KAAQ,SACR,KAAQ,QACR,QAAW,MACV,CACD,KAAQ,OACR,KAAQ,SACR,OAAS,EACT,OAAU,GACT,CACD,KAAQ,KACR,KAAQ,SACR,OAAS,EACT,OAAUw5D,GAAS17R,OACnB,QAAW07R,MAGf,GAASC,GAAMH,GAAiB,CAC9BvzK,OTvOa,WACb,IAAI96C,EAAS,KACXphE,EAAK,EACLC,EAAK,EACLutE,EAAUs9M,GACZ,SAASl5O,EAAK+sB,GACZ,IAAIvmB,EJRO,WACb,IAAIlnC,EAAI,EACR,OAAO,WACL,OAAQA,GAAK,GAAIA,EAAI,IAAK,IAAK,EACjC,CACF,CIGiB,GAOb,OANAytD,EAAKtgE,EAAI2B,EAAK,EAAG2+D,EAAKrgE,EAAI2B,EAAK,EAC3BmhE,EACFzC,EAAKgsN,WAAWqC,GAAW5rN,IAAS2pN,UAAUkC,GAAmBz/M,EAAS,GAAKp1B,IAASuyO,WAAWuC,GAAe,IAElHvuN,EAAKgsN,WAAWqC,GAAWD,KAAgBhC,UAAUkC,GAAmBnC,GAAc,EAAG1yO,IAAS2yO,UAAUkC,GAAmBz/M,EAAS7O,EAAKrsD,EAAIjF,KAAKC,IAAItN,EAAIC,GAAKm4C,IAASuyO,WAAWuC,GAAe7/Q,KAAKC,IAAItN,EAAIC,IAAO,EAAI0+D,EAAKrsD,KAE9NqsD,CACT,CAUA,OATA/sB,EAAKwvB,OAAS,SAAU/iE,GACtB,OAAOrK,UAAUC,QAAUmtE,EAASvG,GAASx8D,GAAIuzC,GAAQwvB,CAC3D,EACAxvB,EAAKla,KAAO,SAAUr5B,GACpB,OAAOrK,UAAUC,QAAU+L,GAAM3B,EAAE,GAAI4B,GAAM5B,EAAE,GAAIuzC,GAAQ,CAAC5xC,EAAIC,EAClE,EACA2xC,EAAK47B,QAAU,SAAUnvE,GACvB,OAAOrK,UAAUC,QAAUu5E,EAAuB,mBAANnvE,EAAmBA,EAAI,IAAUA,GAAIuzC,GAAQ47B,CAC3F,EACO57B,CACT,ES+MEl9B,OAAQ,CAAC,SAAU,OAAQ,WAC3Bs+G,OAAQ28J,KAEV,IAAIE,GAAW,CAAC,KAAM,KAAM,KAAM,KAAM,QAAS,YAQjD,SAASC,GAAUp7Q,GACjB+6Q,GAAgBz6R,KAAK5B,KAAMshB,EAC7B,CAgDA,SAASq7Q,GAASr7Q,GAChB0gN,GAAUpgO,KAAK5B,KAAM,KAAMshB,EAC7B,CAjDAo7Q,GAAU35D,WAAa,CACrB,KAAQ,YACR,SAAY,CACV,MAAQ,EACR,UAAY,GAEd,OAAU,CAAC,CACT,KAAQ,QACR,KAAQ,SACP,CACD,KAAQ,OACR,KAAQ,WACP,CACD,KAAQ,UACR,KAAQ,SACR,QAAW,GACV,CACD,KAAQ,QACR,KAAQ,UACR,SAAW,GACV,CACD,KAAQ,OACR,KAAQ,SACR,OAAS,EACT,OAAU,GACT,CACD,KAAQ,KACR,KAAQ,SACR,OAAS,EACT,OAAU05D,GAAS57R,OACnB,QAAW47R,MAGf,GAASC,GAAWL,GAAiB,CACnCvzK,OC7Ra,WACb,IAAIl8G,EAAK,EACPC,EAAK,EACLutE,EAAU,EACV33C,GAAQ,EACV,SAAS0wM,EAAU5nK,GACjB,IAAI38C,EAAI28C,EAAKv9D,OAAS,EAMtB,OALAu9D,EAAK7+C,GAAK6+C,EAAK5+C,GAAKytD,EACpB7O,EAAKnpD,GAAKxV,EACV2+D,EAAKlpD,GAAKxV,EAAK+hB,EACf28C,EAAKgsN,WAIP,SAAsB1qR,EAAI+hB,GACxB,OAAO,SAAU8xB,GACXA,EAAK7wC,UACP,GAAY6wC,EAAMA,EAAKh0B,GAAI7f,GAAM6zC,EAAK5Z,MAAQ,GAAKlY,EAAG8xB,EAAKt+B,GAAIvV,GAAM6zC,EAAK5Z,MAAQ,GAAKlY,GAEzF,IAAIlC,EAAKg0B,EAAKh0B,GACZC,EAAK+zB,EAAK/zB,GACVvK,EAAKs+B,EAAKt+B,GAAKg4D,EACf/3D,EAAKq+B,EAAKr+B,GAAK+3D,EACbh4D,EAAKsK,IAAIA,EAAKtK,GAAMsK,EAAKtK,GAAM,GAC/BC,EAAKsK,IAAIA,EAAKtK,GAAMsK,EAAKtK,GAAM,GACnCq+B,EAAKh0B,GAAKA,EACVg0B,EAAK/zB,GAAKA,EACV+zB,EAAKt+B,GAAKA,EACVs+B,EAAKr+B,GAAKA,CACZ,CACF,CApBkBu6Q,CAAa/vR,EAAI+hB,IAC7B6T,GAAO8oC,EAAKgsN,WAAW,IACpBhsN,CACT,CA2BA,OATA4nK,EAAU1wM,MAAQ,SAAUx3B,GAC1B,OAAOrK,UAAUC,QAAU4hC,IAAUx3B,EAAGkoO,GAAa1wM,CACvD,EACA0wM,EAAU7uM,KAAO,SAAUr5B,GACzB,OAAOrK,UAAUC,QAAU+L,GAAM3B,EAAE,GAAI4B,GAAM5B,EAAE,GAAIkoO,GAAa,CAACvmO,EAAIC,EACvE,EACAsmO,EAAU/4J,QAAU,SAAUnvE,GAC5B,OAAOrK,UAAUC,QAAUu5E,GAAWnvE,EAAGkoO,GAAa/4J,CACxD,EACO+4J,CACT,EDqPE7xN,OAAQ,CAAC,OAAQ,QAAS,WAC1Bs+G,OAAQ68J,KAcVE,GAAS55D,WAAa,CACpB,KAAQ,WACR,SAAY,CACV,YAAc,GAEhB,OAAU,CAAC,CACT,KAAQ,MACR,KAAQ,QACR,UAAY,GACX,CACD,KAAQ,YACR,KAAQ,QACR,UAAY,KAGhB,GAAS45D,GAAU36D,GAAW,CAC5BluN,UAAW,SAAmB4yB,EAAGm0L,GAC1BA,EAAMxpM,QACT,GAAM,wDAER,IAAI64F,EAAOlqH,KAAKmC,MACZi4N,EAAM1zL,EAAE00L,WACVl4M,EAAM23M,EAAM0F,KAAK1F,EAAMqF,KAAKM,YAAY3F,EAAMuF,QAC9C1D,GAAOxyG,GAAQkwG,GAAOS,EAAM8D,QAAQ9D,EAAMmF,UAAYnF,EAAMO,SAAS10L,EAAE7F,IAAI++F,SAAWi7F,EAAMO,SAAS10L,EAAE+xJ,UAAU74D,QAQnH,OALA18G,EAAImO,OAASnO,EAAImO,OAAOrK,QACpB01M,IACFxyG,EAAOhnG,EAAImO,OAAOxwB,OAAS,GAAOw5R,KAAW3mR,GAAGgzB,EAAE7F,KAAKu5P,SAAS1zP,EAAE+xJ,UAAhC4hG,CAA2Cn3Q,EAAImO,QAASqV,EAAE7F,IAAKg3K,IAAU,GAAOwiF,KAAW,CAAC,CAAC,IAAK3zP,EAAE7F,IAAK6F,EAAE7F,MAE/I3d,EAAImO,OAAOk6C,KAAOvrE,KAAKmC,MAAQ+nH,EACxBhnG,CACT,IAEF,IAAI25Q,GAAU,CACZC,KLpPa,WACb,IAAIxpB,EAAaqnB,GACf/tR,EAAK,EACLC,EAAK,EACLkwR,EAAW,KACb,SAAS7yK,EAAK3+C,GACZ,IAAIxnE,EA5BR,SAAkBwnE,GAQhB,IAPA,IACE7qB,EAEA5wC,EACAD,EACA3O,EACA0tB,EANEs7F,EAAO,IAAIixK,GAAS5vN,EAAM,GAE5B48F,EAAQ,CAACj+C,GAKJxpE,EAAOynH,EAAMlhJ,OAClB,GAAIpX,EAAW6wC,EAAKha,EAAE72B,SAEpB,IADA6wC,EAAK7wC,SAAW,IAAI4wB,MAAM7R,EAAI/e,EAAShP,QAClCK,EAAI0tB,EAAI,EAAG1tB,GAAK,IAAKA,EACxBinK,EAAM5nK,KAAKuP,EAAQ4wC,EAAK7wC,SAAS3O,GAAK,IAAIi6R,GAAStrR,EAAS3O,GAAIA,IAChE4O,EAAM8B,OAAS8uC,EAKrB,OADCwpE,EAAKt4G,OAAS,IAAIupR,GAAS,KAAM,IAAItrR,SAAW,CAACq6G,GAC3CA,CACT,CASY8yK,CAASzxN,GAOjB,GAJAxnE,EAAE4zR,UAAUsF,GAAYl5R,EAAE6N,OAAOmE,GAAKhS,EAAE0hB,EACxC1hB,EAAEwzR,WAAW2F,GAGTH,EAAUxxN,EAAKgsN,WAAW4F,OAIzB,CACH,IAAInuR,EAAOu8D,EACT54D,EAAQ44D,EACRkY,EAASlY,EACXA,EAAKgsN,YAAW,SAAU72O,GACpBA,EAAKz1C,EAAI+D,EAAK/D,IAAG+D,EAAO0xC,GACxBA,EAAKz1C,EAAI0H,EAAM1H,IAAG0H,EAAQ+tC,GAC1BA,EAAK5Z,MAAQ28C,EAAO38C,QAAO28C,EAAS/iC,EAC1C,IACA,IAAI5iC,EAAI9O,IAAS2D,EAAQ,EAAI2gQ,EAAWtkQ,EAAM2D,GAAS,EACrD6kQ,EAAK15P,EAAI9O,EAAK/D,EACds0M,EAAK3yM,GAAM+F,EAAM1H,EAAI6S,EAAI05P,GACzBh4D,EAAK3yM,GAAM42E,EAAO38C,OAAS,GAC7BykC,EAAKgsN,YAAW,SAAU72O,GACxBA,EAAKz1C,GAAKy1C,EAAKz1C,EAAIusQ,GAAMj4D,EACzB7+J,EAAKx1C,EAAIw1C,EAAK5Z,MAAQ04K,CACxB,GACF,CACA,OAAOj0I,CACT,CAMA,SAAS0xN,EAAUhrR,GACjB,IAAIpC,EAAWoC,EAAEpC,SACfutR,EAAWnrR,EAAEL,OAAO/B,SACpB6d,EAAIzb,EAAE/Q,EAAIk8R,EAASnrR,EAAE/Q,EAAI,GAAK,KAChC,GAAI2O,EAAU,EAtGlB,SAAuBoC,GAMrB,IALA,IAIEyb,EAJE9C,EAAQ,EACVmsQ,EAAS,EACTlnR,EAAWoC,EAAEpC,SACb3O,EAAI2O,EAAShP,SAENK,GAAK,IACZwsB,EAAI7d,EAAS3O,IACXukB,GAAKmF,EACP8C,EAAE3X,GAAK6U,EACPA,GAAS8C,EAAE5P,GAAKi5Q,GAAUrpQ,EAAEvI,EAEhC,CA2FMk4Q,CAAcprR,GACd,IAAIqnC,GAAYzpC,EAAS,GAAG4V,EAAI5V,EAASA,EAAShP,OAAS,GAAG4kB,GAAK,EAC/DiI,GACFzb,EAAEwT,EAAIiI,EAAEjI,EAAI6tP,EAAWrhQ,EAAEy0B,EAAGhZ,EAAEgZ,GAC9Bz0B,EAAE8D,EAAI9D,EAAEwT,EAAI6zB,GAEZrnC,EAAEwT,EAAI6zB,CAEV,MAAW5rB,IACTzb,EAAEwT,EAAIiI,EAAEjI,EAAI6tP,EAAWrhQ,EAAEy0B,EAAGhZ,EAAEgZ,IAEhCz0B,EAAEL,OAAOm+C,EAoBX,SAAmB99C,EAAGyb,EAAGmqQ,GACvB,GAAInqQ,EAAG,CAUL,IATA,IAQE9C,EARE0yQ,EAAMrrR,EACRsrR,EAAMtrR,EACNipR,EAAMxtQ,EACN8vQ,EAAMF,EAAI1rR,OAAO/B,SAAS,GAC1B4tR,EAAMH,EAAIvnR,EACV2nR,EAAMH,EAAIxnR,EACV4gR,EAAMuE,EAAInlR,EACV4nR,EAAMH,EAAIznR,EAELmlR,EAAML,GAAUK,GAAMoC,EAAM1C,GAAS0C,GAAMpC,GAAOoC,GACvDE,EAAM5C,GAAS4C,IACfD,EAAM1C,GAAU0C,IACZp/Q,EAAIlM,GACR2Y,EAAQswQ,EAAIz1Q,EAAIkxQ,EAAM2G,EAAI73Q,EAAIg4Q,EAAMnqB,EAAW4nB,EAAIx0P,EAAG42P,EAAI52P,IAC9C,IACVo0P,GAAYG,GAAaC,EAAKjpR,EAAG4lR,GAAW5lR,EAAG2Y,GAC/C6yQ,GAAO7yQ,EACP8yQ,GAAO9yQ,GAET+rQ,GAAOuE,EAAInlR,EACX0nR,GAAOH,EAAIvnR,EACX4nR,GAAOH,EAAIznR,EACX2nR,GAAOH,EAAIxnR,EAETmlR,IAAQL,GAAU0C,KACpBA,EAAIx5R,EAAIm3R,EACRqC,EAAIxnR,GAAK4gR,EAAM+G,GAEbJ,IAAQ1C,GAAS4C,KACnBA,EAAIz5R,EAAIu5R,EACRE,EAAIznR,GAAK0nR,EAAME,EACf9F,EAAW5lR,EAEf,CACA,OAAO4lR,CACT,CAzDe+F,CAAU3rR,EAAGyb,EAAGzb,EAAEL,OAAOm+C,GAAKqtO,EAAS,GACtD,CAGA,SAASF,EAAWjrR,GAClBA,EAAEy0B,EAAEz7B,EAAIgH,EAAEwT,EAAIxT,EAAEL,OAAOmE,EACvB9D,EAAE8D,GAAK9D,EAAEL,OAAOmE,CAClB,CAmDA,SAASonR,EAASz8O,GAChBA,EAAKz1C,GAAK2B,EACV8zC,EAAKx1C,EAAIw1C,EAAK5Z,MAAQj6B,CACxB,CAUA,OATAq9G,EAAKopJ,WAAa,SAAUroQ,GAC1B,OAAOrK,UAAUC,QAAUyyQ,EAAaroQ,EAAGi/G,GAAQopJ,CACrD,EACAppJ,EAAK5lF,KAAO,SAAUr5B,GACpB,OAAOrK,UAAUC,QAAUk8R,GAAW,EAAOnwR,GAAM3B,EAAE,GAAI4B,GAAM5B,EAAE,GAAIi/G,GAAQ6yK,EAAW,KAAO,CAACnwR,EAAIC,EACtG,EACAq9G,EAAK6yK,SAAW,SAAU9xR,GACxB,OAAOrK,UAAUC,QAAUk8R,GAAW,EAAMnwR,GAAM3B,EAAE,GAAI4B,GAAM5B,EAAE,GAAIi/G,GAAQ6yK,EAAW,CAACnwR,EAAIC,GAAM,IACpG,EACOq9G,CACT,EKmHE2zK,QJ1Ta,WACb,IAAIvqB,EAAa,GACf1mQ,EAAK,EACLC,EAAK,EACLkwR,GAAW,EACb,SAASc,EAAQtyN,GACf,IAAIuyN,EACF7yR,EAAI,EAGNsgE,EAAKosN,WAAU,SAAUj3O,GACvB,IAAI7wC,EAAW6wC,EAAK7wC,SAChBA,GACF6wC,EAAKz1C,EAnCb,SAAe4E,GACb,OAAOA,EAAS8hB,OAAOypQ,GAAa,GAAKvrR,EAAShP,MACpD,CAiCiBk9R,CAAMluR,GACf6wC,EAAKx1C,EA9Bb,SAAc2E,GACZ,OAAO,EAAIA,EAAS8hB,OAAO0pQ,GAAY,EACzC,CA4BiBhrR,CAAKR,KAEd6wC,EAAKz1C,EAAI6yR,EAAe7yR,GAAKqoQ,EAAW5yN,EAAMo9O,GAAgB,EAC9Dp9O,EAAKx1C,EAAI,EACT4yR,EAAep9O,EAEnB,IACA,IAAI1xC,EA/BR,SAAkB0xC,GAEhB,IADA,IAAI7wC,EACGA,EAAW6wC,EAAK7wC,UAAU6wC,EAAO7wC,EAAS,GACjD,OAAO6wC,CACT,CA2Bes9O,CAASzyN,GAClB54D,EA3BN,SAAmB+tC,GAEjB,IADA,IAAI7wC,EACGA,EAAW6wC,EAAK7wC,UAAU6wC,EAAO7wC,EAASA,EAAShP,OAAS,GACnE,OAAO6/C,CACT,CAuBcu9O,CAAU1yN,GAClB7+C,EAAK1d,EAAK/D,EAAIqoQ,EAAWtkQ,EAAM2D,GAAS,EACxCyP,EAAKzP,EAAM1H,EAAIqoQ,EAAW3gQ,EAAO3D,GAAQ,EAG3C,OAAOu8D,EAAKosN,UAAUoF,EAAW,SAAUr8O,GACzCA,EAAKz1C,GAAKy1C,EAAKz1C,EAAIsgE,EAAKtgE,GAAK2B,EAC7B8zC,EAAKx1C,GAAKqgE,EAAKrgE,EAAIw1C,EAAKx1C,GAAK2B,CAC/B,EAAI,SAAU6zC,GACZA,EAAKz1C,GAAKy1C,EAAKz1C,EAAIyhB,IAAOtK,EAAKsK,GAAM9f,EACrC8zC,EAAKx1C,GAAK,GAAKqgE,EAAKrgE,EAAIw1C,EAAKx1C,EAAIqgE,EAAKrgE,EAAI,IAAM2B,CAClD,EACF,CAUA,OATAgxR,EAAQvqB,WAAa,SAAUroQ,GAC7B,OAAOrK,UAAUC,QAAUyyQ,EAAaroQ,EAAG4yR,GAAWvqB,CACxD,EACAuqB,EAAQv5P,KAAO,SAAUr5B,GACvB,OAAOrK,UAAUC,QAAUk8R,GAAW,EAAOnwR,GAAM3B,EAAE,GAAI4B,GAAM5B,EAAE,GAAI4yR,GAAWd,EAAW,KAAO,CAACnwR,EAAIC,EACzG,EACAgxR,EAAQd,SAAW,SAAU9xR,GAC3B,OAAOrK,UAAUC,QAAUk8R,GAAW,EAAMnwR,GAAM3B,EAAE,GAAI4B,GAAM5B,EAAE,GAAI4yR,GAAWd,EAAW,CAACnwR,EAAIC,GAAM,IACvG,EACOgxR,CACT,GI+QIK,GAAW,CAAC,IAAK,IAAK,QAAS,YAQnC,SAASC,GAAK78Q,GACZ+6Q,GAAgBz6R,KAAK5B,KAAMshB,EAC7B,CA2DA,SAAS88Q,GAAU98Q,GACjB0gN,GAAUpgO,KAAK5B,KAAM,GAAIshB,EAC3B,CA5DA68Q,GAAKp7D,WAAa,CAChB,KAAQ,OACR,SAAY,CACV,MAAQ,EACR,UAAY,GAEd,OAAU,CAAC,CACT,KAAQ,QACR,KAAQ,SACP,CACD,KAAQ,OACR,KAAQ,WACP,CACD,KAAQ,SACR,KAAQ,OACR,QAAW,OACX,OAAU,CAAC,OAAQ,YAClB,CACD,KAAQ,OACR,KAAQ,SACR,OAAS,EACT,OAAU,GACT,CACD,KAAQ,WACR,KAAQ,SACR,OAAS,EACT,OAAU,GACT,CACD,KAAQ,aACR,KAAQ,UACR,SAAW,GACV,CACD,KAAQ,KACR,KAAQ,SACR,OAAS,EACT,OAAUm7D,GAASr9R,OACnB,QAAWq9R,MAGf,GAASC,GAAM9B,GAAiB,CAI9BvzK,OAAQ,SAAgBn9G,GACtB,IAAIoK,EAAIpK,GAAU,OAClB,GAAI,GAAekxR,GAAS9mR,GAAI,OAAO8mR,GAAQ9mR,KAAU,GAAM,oCAAsCA,EACvG,EACAuL,OAAQ,CAAC,OAAQ,YACjBs+G,OAAQs+J,KAaVE,GAAUr7D,WAAa,CACrB,KAAQ,YACR,SAAY,CACV,MAAQ,EACR,WAAa,EACb,SAAW,GAEb,OAAU,IAEZ,GAASq7D,GAAWp8D,GAAW,CAC7BluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAAIm7D,EAAQh2R,KAAKmC,MACf+nH,EAAO2wG,EAAMxpM,QAAUwpM,EAAMxpM,OAAOk6C,KACpCroD,EAAM23M,EAAM0F,KAAK1F,EAAMwF,WACvByT,EAAM,CAAC,EAoCT,OAnCK5pH,GAAM,GAAM,oDACb2wG,EAAM8D,QAAQ9D,EAAMmF,UAEtB98M,EAAIi3M,IAAM67D,EAGVn7D,EAAMsD,MAAMtD,EAAMuF,QAAQ,SAAUr8N,GAClC,OAAO+vO,EAAIna,GAAQ51N,IAAM,CAC3B,IAGAmmH,EAAK0tK,MAAK,SAAUl3O,GAClB,IAAI38C,EAAI28C,EAAKh7B,KACXtH,EAAIsiC,EAAK9uC,QAAU8uC,EAAK9uC,OAAO8T,KAC7BtH,GAAK01N,EAAIna,GAAQ51N,KAAO+vO,EAAIna,GAAQv7M,KACtC8E,EAAI1R,IAAIjR,KAAK,GAAO,CAClB8wB,OAAQjT,EACR1V,OAAQ3E,IAGd,IACA/D,KAAKmC,MAAQ+gB,EAAI1R,KACRqpN,EAAM8D,QAAQ9D,EAAMiE,OAE7BjE,EAAMsD,MAAMtD,EAAMiE,KAAK,SAAU/6N,GAC/B,OAAO+vO,EAAIna,GAAQ51N,IAAM,CAC3B,IAGAiyR,EAAM5tR,SAAQ,SAAU8vL,IAClB47C,EAAIna,GAAQzhC,EAAK7mK,UAAYyiN,EAAIna,GAAQzhC,EAAKxvL,WAChDwa,EAAIk3M,IAAI75N,KAAK23L,EAEjB,KAEKh1K,CACT,IAEF,IAAIm7Q,GAAQ,CACVC,OEnda,SAAU1sR,EAAQ8a,EAAIC,EAAIvK,EAAIC,GAC3C,IACEnhB,EAEAkrB,EAHE+7I,EAAQv2J,EAAO/B,SAEjB+e,EAAIu5I,EAAMtnK,OAEV09R,EAAO,IAAI99P,MAAM7R,EAAI,GACvB,IAAK2vQ,EAAK,GAAKnyQ,EAAMlrB,EAAI,EAAGA,EAAI0tB,IAAK1tB,EACnCq9R,EAAKr9R,EAAI,GAAKkrB,GAAO+7I,EAAMjnK,GAAGiB,OAGhC,SAASgxO,EAAUjyO,EAAGgG,EAAG/E,EAAOuqB,EAAIC,EAAIvK,EAAIC,GAC1C,GAAInhB,GAAKgG,EAAI,EAAG,CACd,IAAIw5C,EAAOynH,EAAMjnK,GAGjB,OAFAw/C,EAAKh0B,GAAKA,EAAIg0B,EAAK/zB,GAAKA,EACxB+zB,EAAKt+B,GAAKA,OAAIs+B,EAAKr+B,GAAKA,EAE1B,CACA,IAAIm8Q,EAAcD,EAAKr9R,GACrBu9R,EAAct8R,EAAQ,EAAIq8R,EAC1B93R,EAAIxF,EAAI,EACRi5M,EAAKjzM,EAAI,EACX,KAAOR,EAAIyzM,GAAI,CACb,IAAI54J,EAAM76C,EAAIyzM,IAAO,EACjBokF,EAAKh9O,GAAOk9O,EAAa/3R,EAAI66C,EAAM,EAAO44J,EAAK54J,CACrD,CACIk9O,EAAcF,EAAK73R,EAAI,GAAK63R,EAAK73R,GAAK+3R,GAAev9R,EAAI,EAAIwF,KAAKA,EACtE,IAAIg4R,EAAYH,EAAK73R,GAAK83R,EACxBG,EAAax8R,EAAQu8R,EACvB,GAAIt8Q,EAAKsK,EAAKrK,EAAKsK,EAAI,CACrB,IAAIuvB,EAAK/5C,GAASuqB,EAAKiyQ,EAAav8Q,EAAKs8Q,GAAav8R,EAAQigB,EAC9D+wN,EAAUjyO,EAAGwF,EAAGg4R,EAAWhyQ,EAAIC,EAAIuvB,EAAI75B,GACvC8wN,EAAUzsO,EAAGQ,EAAGy3R,EAAYziP,EAAIvvB,EAAIvK,EAAIC,EAC1C,KAAO,CACL,IAAI85B,EAAKh6C,GAASwqB,EAAKgyQ,EAAat8Q,EAAKq8Q,GAAav8R,EAAQkgB,EAC9D8wN,EAAUjyO,EAAGwF,EAAGg4R,EAAWhyQ,EAAIC,EAAIvK,EAAI+5B,GACvCg3L,EAAUzsO,EAAGQ,EAAGy3R,EAAYjyQ,EAAIyvB,EAAI/5B,EAAIC,EAC1C,CACF,CA5BA8wN,CAAU,EAAGvkN,EAAGhd,EAAOzP,MAAOuqB,EAAIC,EAAIvK,EAAIC,EA6B5C,EF8aEu5Q,KAAM,GACN50Q,MAAO,GACP43Q,UGpda,SAAUhtR,EAAQ8a,EAAIC,EAAIvK,EAAIC,IAC3B,EAAfzQ,EAAOk1B,MAAY,GAAQ80P,IAAMhqR,EAAQ8a,EAAIC,EAAIvK,EAAIC,EACxD,EHmdEw5Q,SAAU,GACVC,WAAY,IAEV,GAAS,CAAC,KAAM,KAAM,KAAM,KAAM,QAAS,YAQ/C,SAAS+C,GAAQv9Q,GACf+6Q,GAAgBz6R,KAAK5B,KAAMshB,EAC7B,CIjeA,SAAS,GAAQqjB,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,GAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,GAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,GAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CJiezfm2R,GAAQ97D,WAAa,CACnB,KAAQ,UACR,SAAY,CACV,MAAQ,EACR,UAAY,GAEd,OAAU,CAAC,CACT,KAAQ,QACR,KAAQ,SACP,CACD,KAAQ,OACR,KAAQ,WACP,CACD,KAAQ,SACR,KAAQ,OACR,QAAW,WACX,OAAU,CAAC,WAAY,aAAc,SAAU,OAAQ,QAAS,cAC/D,CACD,KAAQ,UACR,KAAQ,SACR,QAAW,GACV,CACD,KAAQ,eACR,KAAQ,SACR,QAAW,GACV,CACD,KAAQ,eACR,KAAQ,SACR,QAAW,GACV,CACD,KAAQ,aACR,KAAQ,SACR,QAAW,GACV,CACD,KAAQ,eACR,KAAQ,SACR,QAAW,GACV,CACD,KAAQ,gBACR,KAAQ,SACR,QAAW,GACV,CACD,KAAQ,cACR,KAAQ,SACR,QAAW,GACV,CACD,KAAQ,QACR,KAAQ,SACR,QAAW,mBACV,CACD,KAAQ,QACR,KAAQ,UACR,SAAW,GACV,CACD,KAAQ,OACR,KAAQ,SACR,OAAS,EACT,OAAU,GACT,CACD,KAAQ,KACR,KAAQ,SACR,OAAS,EACT,OAAU,GAAOliO,OACjB,QAAW,MAGf,GAASg+R,GAASxC,GAAiB,CAKjCvzK,OAAQ,WACN,IAAI79G,EKziBO,WACb,IAAIg0R,EAAOpD,GACTp5P,GAAQ,EACR71B,EAAK,EACLC,EAAK,EACLqyR,EAAe,CAAC,GAChBx2C,EAAegvC,GACfxzG,EAAawzG,GACblrG,EAAekrG,GACf/+I,EAAgB++I,GAChBnrG,EAAcmrG,GAChB,SAASyH,EAAQ5zN,GAOf,OANAA,EAAK7+C,GAAK6+C,EAAK5+C,GAAK,EACpB4+C,EAAKnpD,GAAKxV,EACV2+D,EAAKlpD,GAAKxV,EACV0+D,EAAKgsN,WAAWqF,GAChBsC,EAAe,CAAC,GACZz8P,GAAO8oC,EAAKgsN,WAAW,IACpBhsN,CACT,CACA,SAASqxN,EAAal8O,GACpB,IAAItiC,EAAI8gR,EAAax+O,EAAK5Z,OACxBpa,EAAKg0B,EAAKh0B,GAAKtO,EACfuO,EAAK+zB,EAAK/zB,GAAKvO,EACfgE,EAAKs+B,EAAKt+B,GAAKhE,EACfiE,EAAKq+B,EAAKr+B,GAAKjE,EACbgE,EAAKsK,IAAIA,EAAKtK,GAAMsK,EAAKtK,GAAM,GAC/BC,EAAKsK,IAAIA,EAAKtK,GAAMsK,EAAKtK,GAAM,GACnCq+B,EAAKh0B,GAAKA,EACVg0B,EAAK/zB,GAAKA,EACV+zB,EAAKt+B,GAAKA,EACVs+B,EAAKr+B,GAAKA,EACNq+B,EAAK7wC,WACPuO,EAAI8gR,EAAax+O,EAAK5Z,MAAQ,GAAK4hN,EAAahoM,GAAQ,EACxDh0B,GAAM6/J,EAAY7rI,GAAQtiC,EAC1BuO,GAAMu3J,EAAWxjI,GAAQtiC,GACzBgE,GAAMoqK,EAAa9rI,GAAQtiC,GAElBsO,IAAIA,EAAKtK,GAAMsK,EAAKtK,GAAM,IADnCC,GAAMs2H,EAAcj4F,GAAQtiC,GAEnBuO,IAAIA,EAAKtK,GAAMsK,EAAKtK,GAAM,GACnC48Q,EAAKv+O,EAAMh0B,EAAIC,EAAIvK,EAAIC,GAE3B,CA+BA,OA9BA88Q,EAAQ18P,MAAQ,SAAUx3B,GACxB,OAAOrK,UAAUC,QAAU4hC,IAAUx3B,EAAGk0R,GAAW18P,CACrD,EACA08P,EAAQ76P,KAAO,SAAUr5B,GACvB,OAAOrK,UAAUC,QAAU+L,GAAM3B,EAAE,GAAI4B,GAAM5B,EAAE,GAAIk0R,GAAW,CAACvyR,EAAIC,EACrE,EACAsyR,EAAQF,KAAO,SAAUh0R,GACvB,OAAOrK,UAAUC,QAAUo+R,EAAO,GAASh0R,GAAIk0R,GAAWF,CAC5D,EACAE,EAAQ/kN,QAAU,SAAUnvE,GAC1B,OAAOrK,UAAUC,OAASs+R,EAAQz2C,aAAaz9O,GAAG09O,aAAa19O,GAAKk0R,EAAQz2C,cAC9E,EACAy2C,EAAQz2C,aAAe,SAAUz9O,GAC/B,OAAOrK,UAAUC,QAAU6nP,EAA4B,mBAANz9O,EAAmBA,EAAI,IAAUA,GAAIk0R,GAAWz2C,CACnG,EACAy2C,EAAQx2C,aAAe,SAAU19O,GAC/B,OAAOrK,UAAUC,OAASs+R,EAAQj7G,WAAWj5K,GAAGuhL,aAAavhL,GAAG0tI,cAAc1tI,GAAGshL,YAAYthL,GAAKk0R,EAAQj7G,YAC5G,EACAi7G,EAAQj7G,WAAa,SAAUj5K,GAC7B,OAAOrK,UAAUC,QAAUqjL,EAA0B,mBAANj5K,EAAmBA,EAAI,IAAUA,GAAIk0R,GAAWj7G,CACjG,EACAi7G,EAAQ3yG,aAAe,SAAUvhL,GAC/B,OAAOrK,UAAUC,QAAU2rL,EAA4B,mBAANvhL,EAAmBA,EAAI,IAAUA,GAAIk0R,GAAW3yG,CACnG,EACA2yG,EAAQxmJ,cAAgB,SAAU1tI,GAChC,OAAOrK,UAAUC,QAAU83I,EAA6B,mBAAN1tI,EAAmBA,EAAI,IAAUA,GAAIk0R,GAAWxmJ,CACpG,EACAwmJ,EAAQ5yG,YAAc,SAAUthL,GAC9B,OAAOrK,UAAUC,QAAU0rL,EAA2B,mBAANthL,EAAmBA,EAAI,IAAUA,GAAIk0R,GAAW5yG,CAClG,EACO4yG,CACT,CL+dYA,GAQR,OAPAl0R,EAAErF,MAAQ,SAAU8gC,GAClB,IAAI3iC,EAAIkH,EAAEg0R,OACNl7R,EAAE6B,OAAOqF,EAAEg0R,KAAKl7R,EAAE6B,MAAM8gC,GAC9B,EACAz7B,EAAEU,OAAS,SAAU+6B,GACf,GAAe23P,GAAO33P,GAAIz7B,EAAEg0R,KAAKZ,GAAM33P,IAAS,GAAM,uCAAyCA,EACrG,EACOz7B,CACT,EACAqW,OAAQ,CAAC,SAAU,QAAS,OAAQ,QAAS,UAAW,eAAgB,eAAgB,aAAc,eAAgB,gBAAiB,eACvIs+G,OAAQ,KI7iBV,IAAIw/J,GAAa,WAqDjB,SAASC,GAAUlsQ,EAASplB,EAAOC,GACjC,OAAO,IAAIsxR,YAAYnsQ,EAAQm/P,aAAa,EAAG,EAAGvkR,EAAOC,GAAQ0X,KAAKm5N,OACxE,CACA,SAAS,GAAK1rN,EAASgzB,EAAOsxK,GAC5B,GAAKtxK,EAAMtlD,OAAX,CACA,IAAI8H,EAAOw9C,EAAM,GAAGsQ,KAAKypM,SACZ,UAATv3P,EACFw9C,EAAM/9C,SAAQ,SAAUsJ,GACtBA,EAAMy0C,MAAM/9C,SAAQ,SAAUquD,GAC5B,OAAO,GAAKtjC,EAASsjC,EAAKtQ,MAAOsxK,EACnC,GACF,IAEAirC,GAAM/5P,GAAMb,KAAKqrB,EAAS,CACxBgzB,MAAOsxK,EAAWtxK,EAAMn1B,IAAIokQ,IAAWjvO,GAVlB,CAa3B,CAOA,SAASivO,GAAQ/jQ,GACf,IAAI5Z,EAAOsiN,GAAS1oM,EAAQ,CAAC,GAC7B,OAAI5Z,EAAK0J,QAAiC,IAAvB1J,EAAK8hP,eAAuB9hP,EAAKmkC,MAA6B,IAArBnkC,EAAKosE,YACxD,GAAc,GAAc,CAAC,EAAGpsE,GAAO,CAAC,EAAG,CAChD8hP,cAAe,EACfp4O,OAAQ,OACR0iE,YAAa,IAGVpsE,CACT,CACA,IAAI8nR,GAAM,EAER,GAAM,GAENC,GAAO,GAEPC,GAAS,IAAIH,YAAYE,GAAO,GAEhCE,GAAS,IAAIJ,YAAYE,GAAO,GAElCE,GAAO,GAAK,EACZD,GAAO,IAAMC,GAAO,GACpB,IAAK,IAAIx+R,GAAI,EAAGA,IAAKs+R,KAAQt+R,GAC3Bw+R,GAAOx+R,IAAKw+R,GAAOx+R,GAAI,IAAM,EAAI,EACjCu+R,GAAOv+R,KAAMw+R,GAAOx+R,IAsFtB,SAASy+R,GAAO5xR,EAAOC,EAAQosE,GAC7B,IAAIx0E,EAAQqU,KAAKE,IAAI,EAAGF,KAAK2C,KAAK7O,EAAQC,EAAS,MACjD0f,MAAQ3f,EAAQ,EAAIqsE,EAAUx0E,GAASA,GACvCyf,MAAQrX,EAAS,EAAIosE,EAAUx0E,GAASA,GACxCkT,EAAQ,SAAe4tB,GACrB,UAAWA,EAAI0zC,GAAWx0E,EAC5B,EAWF,OAVAkT,EAAMwL,OAAS,SAAUoiB,GACvB,OAAOA,EAAI9gC,EAAQw0E,CACrB,EACAthE,EAAM8mR,OAAS,WACb,OA/FJ,SAAgBlyQ,EAAGrI,GACjB,IAAIkd,EAAQ,IAAI+8P,gBAAgB5xQ,EAAIrI,EAAIm6Q,IAAQA,KAChD,SAASK,EAAK73R,EAAOotF,GACnB7yD,EAAMv6B,IAAUotF,CAClB,CACA,SAAS0qM,EAAO93R,EAAOotF,GACrB7yD,EAAMv6B,IAAUotF,CAClB,CACA,MAAO,CACL7yD,MAAOA,EACPvgC,IAAK,SAAaiJ,EAAGC,GACnB,IAAIlD,EAAQkD,EAAIwiB,EAAIziB,EACpB,OAAOs3B,EAAMv6B,IAAUu3R,IAAO,IAAMv3R,EAAQ,GAC9C,EACA9F,IAAK,SAAa+I,EAAGC,GACnB,IAAIlD,EAAQkD,EAAIwiB,EAAIziB,EACpB40R,EAAK73R,IAAUu3R,GAAK,IAAMv3R,EAAQ,IACpC,EACAuH,MAAO,SAAetE,EAAGC,GACvB,IAAIlD,EAAQkD,EAAIwiB,EAAIziB,EACpB60R,EAAO93R,IAAUu3R,KAAO,IAAMv3R,EAAQ,KACxC,EACA+3R,SAAU,SAAkB90R,EAAGC,EAAGoX,EAAIC,GAMpC,IALA,IACEmE,EACAmI,EACAmxQ,EACAC,EAJE/gR,EAAIqD,EAKDrD,GAAKhU,IAAKgU,EAKf,IAFA8gR,GAFAt5Q,EAAQxH,EAAIwO,EAAIziB,KAEOs0R,MACvBU,GAFApxQ,EAAM3P,EAAIwO,EAAIpL,KAEKi9Q,KAEjB,GAAIh9P,EAAMy9P,GAAcP,GAAO/4Q,EAAQ,IAAOg5Q,GAAqB,GAAb7wQ,EAAM,KAC1D,OAAO,MAEJ,CACL,GAAI0T,EAAMy9P,GAAcP,GAAO/4Q,EAAQ,IAAM,OAAO,EACpD,GAAI6b,EAAM09P,GAAYP,GAAqB,GAAb7wQ,EAAM,KAAW,OAAO,EACtD,IAAK,IAAIluB,EAAKq/R,EAAa,EAAGr/R,EAAKs/R,IAAYt/R,EAC7C,GAAI4hC,EAAM5hC,GAAK,OAAO,CAE1B,CAEF,OAAO,CACT,EACAu/R,SAAU,SAAkBj1R,EAAGC,EAAGoX,EAAIC,GAEpC,IADA,IAAImE,EAAOmI,EAAKmxQ,EAAYC,EAAU/+R,EAC/BgK,GAAKqX,IAAMrX,EAKhB,IAFA80R,GAFAt5Q,EAAQxb,EAAIwiB,EAAIziB,KAEOs0R,MACvBU,GAFApxQ,EAAM3jB,EAAIwiB,EAAIpL,KAEKi9Q,IAEjBM,EAAKG,EAAYP,GAAO/4Q,EAAQ,IAAOg5Q,GAAqB,GAAb7wQ,EAAM,WAIrD,IAFAgxQ,EAAKG,EAAYP,GAAO/4Q,EAAQ,KAChCm5Q,EAAKI,EAAUP,GAAqB,GAAb7wQ,EAAM,MACxB3tB,EAAI8+R,EAAa,EAAG9+R,EAAI++R,IAAY/+R,EAAG2+R,EAAK3+R,EAAG,WAG1D,EACAi/R,WAAY,SAAoBl1R,EAAGC,EAAGoX,EAAIC,GAExC,IADA,IAAImE,EAAOmI,EAAKmxQ,EAAYC,EAAU/+R,EAC/BgK,GAAKqX,IAAMrX,EAKhB,IAFA80R,GAFAt5Q,EAAQxb,EAAIwiB,EAAIziB,KAEOs0R,MACvBU,GAFApxQ,EAAM3jB,EAAIwiB,EAAIpL,KAEKi9Q,IAEjBO,EAAOE,EAAYN,GAAOh5Q,EAAQ,IAAO+4Q,GAAqB,GAAb5wQ,EAAM,WAIvD,IAFAixQ,EAAOE,EAAYN,GAAOh5Q,EAAQ,KAClCo5Q,EAAOG,EAAUR,GAAqB,GAAb5wQ,EAAM,MAC1B3tB,EAAI8+R,EAAa,EAAG9+R,EAAI++R,IAAY/+R,EAAG4+R,EAAO5+R,EAAG,EAG5D,EACAk/R,YAAa,SAAqBn1R,EAAGC,EAAGoX,EAAIC,GAC1C,OAAOtX,EAAI,GAAKC,EAAI,GAAKqX,GAAM8C,GAAK/C,GAAMoL,CAC5C,EAEJ,CAYW2yQ,CAAO3yQ,EAAGrI,EACnB,EACAvM,EAAMlT,MAAQA,EACdkT,EAAMshE,QAAUA,EAChBthE,EAAM/K,MAAQA,EACd+K,EAAM9K,OAASA,EACR8K,CACT,CA4DA,SAASsnR,GAAYn1R,EAAGC,EAAGo1R,EAAWC,EAAYxyR,EAAOC,GACvD,IAAIkR,EAAIohR,EAAY,EACpB,OAAOr1R,EAAIiU,EAAI,GAAKjU,EAAIiU,EAAInR,GAAS7C,GAAKgU,EAAIqhR,EAAa,GAAK,GAAKr1R,EAAIgU,EAAIlR,CAC/E,CACA,SAASwyR,GAAUjxO,EAAGtkD,EAAGC,EAAGq1R,EAAYD,EAAWj7Q,EAAGo7Q,EAAKC,GACzD,IAAIhzQ,EAAI4yQ,EAAYj7Q,GAAkB,EAAbk7Q,GACvBn+Q,EAAKmtC,EAAEtkD,EAAIyiB,GACXpL,EAAKitC,EAAEtkD,EAAIyiB,GACXrL,EAAKktC,EAAErkD,GAAKma,GAAQ,IACpB9C,EAAKgtC,EAAErkD,EAAIma,GACb,OAAOo7Q,EAAIL,YAAYh+Q,EAAIC,EAAIC,EAAIC,IAAOk+Q,EAAIV,SAAS39Q,EAAIC,EAAIC,EAAIC,IAAOm+Q,GAAOA,EAAIX,SAAS39Q,EAAIC,EAAIC,EAAIC,EAC5G,CAsJA,IAAIo+Q,GAAQ,EAAE,GAAI,EAAG,EAAG,GACpBC,GAAQ,EAAE,EAAG,GAAI,EAAG,GA6HxB,IAAIC,GAAS,CAAC,QAAS,SAAU,QAC/BC,GAAY,CAAC,SAAU,SAAU,OA6EnC,SAASx7R,GAAK6xO,EAAKx4K,EAAK04K,EAAKiB,EAAKmoD,EAAKC,EAAKt+Q,EAAIE,EAAID,EAAIE,EAAIw+Q,EAAUC,GACpE,QAASP,EAAIL,YAAYjpD,EAAKE,EAAK14K,EAAK25K,KAAS0oD,GAAYN,GAAOD,GAAKV,SAAS5oD,EAAKE,EAAK14K,EAAK25K,GACnG,CAGA,IAQI2oD,GAAa,CACf,WAAYC,EACZ,IAAOA,EACP,YAAaA,EACb,KAAQC,EACR,OAAUA,EACV,MAASA,EACT,cAAeC,EACf,OAAUA,EACV,eAAgBA,IAEdC,GAAiB,CACnB,MAjcF,SAA6B9xO,EAAG+xO,EAASC,EAAeC,GACtD,IAAIzzR,EAAQwhD,EAAExhD,MACZC,EAASuhD,EAAEvhD,OAGb,OAAO,SAAU+X,GAmBf,IAlBA,IASE3D,EACAE,EACAD,EACAE,EACAtX,EACAC,EACAu2R,EAfEt7O,EAAQpgC,EAAEoyM,MAAMA,MAAMhyK,MAAMq7O,GAAWr7O,MAEzCv3B,EAAIu3B,EAAMtlD,OAEV0/R,EAAax6Q,EAAEoyM,MAAMr3M,SAErBw/Q,EAAY/+B,GAAYxzP,MAAMgY,EAAEoyM,MAAOpyM,EAAEoyM,MAAMt3M,MAE7C6gR,EAAe,EAUVjgF,EAAM,EAAGA,EAAM7yL,IAAK6yL,EAC3Br/L,EAAK+jC,EAAMs7J,GAAKx2M,EAChBoX,EAAK8jC,EAAMs7J,GAAKv2M,EAGhBD,GAAKmX,GAFLE,OAAuBmU,IAAlB0vB,EAAMs7J,GAAKn/L,GAAmBF,EAAK+jC,EAAMs7J,GAAKn/L,KAEnC,EAChBpX,GAAKmX,GAFLE,OAAuBkU,IAAlB0vB,EAAMs7J,GAAKl/L,GAAmBF,EAAK8jC,EAAMs7J,GAAKl/L,KAEnC,GAChBk/Q,EAAYxnR,KAAKoG,IAAIiC,EAAKF,EAAKG,EAAKF,KACnBq/Q,IACfA,EAAeD,EACf17Q,EAAE9a,EAAIA,EACN8a,EAAE7a,EAAIA,GAqBV,OAlBAD,EAAIq1R,EAAY,EAChBp1R,EAAIq1R,EAAa,EACjBn+Q,EAAK2D,EAAE9a,EAAIA,EACXqX,EAAKyD,EAAE9a,EAAIA,EACXoX,EAAK0D,EAAE7a,EAAIA,EACXqX,EAAKwD,EAAE7a,EAAIA,EACX6a,EAAEsuE,MAAQ,SACNjyE,EAAK,GAAKE,GAAMvU,EAClBgY,EAAEsuE,MAAQ,OACD,GAAKjyE,GAAMrU,EAAQuU,IAC5ByD,EAAEsuE,MAAQ,SAEZtuE,EAAE46O,SAAW,SACTt+O,EAAK,GAAKE,GAAMvU,EAClB+X,EAAE46O,SAAW,MACJ,GAAKt+O,GAAMrU,EAASuU,IAC7BwD,EAAE46O,SAAW,WAER,CACT,CACF,EAwYE,iBA3XF,SAAqCpxM,EAAG+xO,EAASC,EAAeC,GAC9D,IAAIzzR,EAAQwhD,EAAExhD,MACZC,EAASuhD,EAAEvhD,OACXyyR,EAAMa,EAAQ,GAEdZ,EAAMY,EAAQ,GAEhB,SAASK,EAASjjO,EAAI+5K,EAAImpD,EAAStB,EAAWC,GAC5C,IAIEh/O,EAJEt2C,EAAIskD,EAAEjrC,OAAOo6C,GACfxzD,EAAIqkD,EAAEjrC,OAAOm0N,GACXv+B,EAAK0nF,EACPznF,EAAKnsM,EAEP,IAAKoyR,GAAYn1R,EAAGC,EAAGo1R,EAAWC,EAAYxyR,EAAOC,KAAYwyR,GAAUjxO,EAAGtkD,EAAGC,EAAGq1R,EAAYD,EAAWpmF,EAAIumF,EAAKC,KAASF,GAAUjxO,EAAGtkD,EAAGC,EAAGq1R,EAAYD,EAAWC,EAAYE,EAAK,MAAO,CAG7L,KAAOtmF,EAAKD,GAAM,GAEZsmF,GAAUjxO,EAAGtkD,EAAGC,EAAGq1R,EAAYD,EADnC/+O,GAAO24J,EAAKC,GAAM,EACiCsmF,EAAKC,GACtDvmF,EAAK54J,EAEL24J,EAAK34J,EAIT,GAAI24J,EAAK0nF,EACP,MAAO,CAAC32R,EAAGC,EAAGgvM,GAAI,EAEtB,CACF,CAGA,OAAO,SAAUn0L,GAgCf,IA/BA,IAYE3D,EACAE,EACAD,EACAE,EACAtX,EACAC,EACAwzD,EACA+5K,EACAtB,EACA0qD,EACAljO,EACA04K,EACAyqD,EACAxpD,EACAmpD,EACA7uR,EACAmvR,EA5BE57O,EAAQpgC,EAAEoyM,MAAMA,MAAMhyK,MAAMq7O,GAAWr7O,MAEzCv3B,EAAIu3B,EAAMtlD,OAEV0/R,EAAax6Q,EAAEoyM,MAAMr3M,SAErBw/Q,EAAY/+B,GAAYxzP,MAAMgY,EAAEoyM,MAAOpyM,EAAEoyM,MAAMt3M,MAE7C+gR,EAAUL,EAAgBhB,EAAa,EACzCyB,GAAc,EACdC,GAAe,EACfP,EAAe,EAoBRhgF,EAAM,EAAGA,EAAM9yL,IAAK8yL,EAAK,CAuBhC,IAtBAt/L,EAAK+jC,EAAMu7J,GAAKz2M,EAChBoX,EAAK8jC,EAAMu7J,GAAKx2M,EAGZkX,GAFJE,OAAuBmU,IAAlB0vB,EAAMu7J,GAAKp/L,GAAmBF,EAAK+jC,EAAMu7J,GAAKp/L,MAGjDy/Q,EAAU3/Q,EACVA,EAAKE,EACLA,EAAKy/Q,GAEH1/Q,GANJE,OAAuBkU,IAAlB0vB,EAAMu7J,GAAKn/L,GAAmBF,EAAK8jC,EAAMu7J,GAAKn/L,MAOjDw/Q,EAAU1/Q,EACVA,EAAKE,EACLA,EAAKw/Q,GAIPF,OAFA1qD,EAAM5nL,EAAEntC,KACRu8C,EAAMpP,EAAEjtC,KACiB,GAGzBw/Q,OAFAzqD,EAAM9nL,EAAEltC,KACRi2N,EAAM/oL,EAAEhtC,KACiB,GAGpBm8C,EAAKmjO,EAAOnjO,GAAMy4K,IAAOz4K,EAC5B,IAAK+5K,EAAKqpD,EAAOrpD,GAAMpB,IAAOoB,EAE5B,GADA7lO,EAAS+uR,EAASjjO,EAAI+5K,EAAImpD,EAAStB,EAAWC,GAClC,CACV,IAAI2B,EAAUtvR,EACVuvR,GAAW,OAAeD,EAAS,GACvCn8Q,EAAE9a,EAAIk3R,EAAS,GACfp8Q,EAAE7a,EAAIi3R,EAAS,GACfP,EAAUO,EAAS,GACnBH,EAAcG,EAAS,EACzB,CAKJ,IAAKzjO,EAAKmjO,EAAOnjO,GAAMC,IAAOD,EAC5B,IAAK+5K,EAAKqpD,EAAOrpD,GAAMH,IAAOG,EAE5B,GADA7lO,EAAS+uR,EAASjjO,EAAI+5K,EAAImpD,EAAStB,EAAWC,GAClC,CACV,IAAI6B,EAAWxvR,EACXyvR,GAAW,OAAeD,EAAU,GACxCr8Q,EAAE9a,EAAIo3R,EAAS,GACft8Q,EAAE7a,EAAIm3R,EAAS,GACfT,EAAUS,EAAS,GACnBL,EAAcK,EAAS,EACzB,CAMCL,GAAgBT,IAGnBt2R,GAAKmX,EAAKE,GAAM,EAChBpX,GAAKmX,EAAKE,GAAM,GAFhBk/Q,EAAYxnR,KAAKoG,IAAIiC,EAAKF,EAAKG,EAAKF,KAKnBq/Q,IAAiBtB,GAAYn1R,EAAGC,EAAGo1R,EAAWC,EAAYxyR,EAAOC,KAAYwyR,GAAUjxO,EAAGtkD,EAAGC,EAAGq1R,EAAYD,EAAWC,EAAYE,EAAK,QACvJiB,EAAeD,EACf17Q,EAAE9a,EAAIA,EACN8a,EAAE7a,EAAIA,EACN+2R,GAAe,GAGrB,CAGA,SAAID,IAAeC,KACjBh3R,EAAIq1R,EAAY,EAChBp1R,EAAIq1R,EAAa,EACjBE,EAAIP,SAAS3wO,EAAExpC,EAAE9a,EAAIA,GAAIskD,EAAExpC,EAAE7a,EAAIA,GAAIqkD,EAAExpC,EAAE9a,EAAIA,GAAIskD,EAAExpC,EAAE7a,EAAIA,IACzD6a,EAAEsuE,MAAQ,SACVtuE,EAAE46O,SAAW,UACN,EAIX,CACF,EA0OE,UArOF,SAAiCpxM,EAAG+xO,EAASC,EAAeC,GAC1D,IAAIzzR,EAAQwhD,EAAExhD,MACZC,EAASuhD,EAAEvhD,OACXyyR,EAAMa,EAAQ,GAEdZ,EAAMY,EAAQ,GAEdgB,EAAM/yO,EAAEqwO,SAGV,OAAO,SAAU75Q,GA6Bf,IA5BA,IAcE3D,EACAE,EACAD,EACAE,EACAtX,EACAC,EACAwzD,EACA+5K,EACAv+B,EACAC,EACA54J,EACAkgP,EAzBEt7O,EAAQpgC,EAAEoyM,MAAMA,MAAMhyK,MAAMq7O,GAAWr7O,MAEzCv3B,EAAIu3B,EAAMtlD,OAEV0/R,EAAax6Q,EAAEoyM,MAAMr3M,SAErBw/Q,EAAY/+B,GAAYxzP,MAAMgY,EAAEoyM,MAAOpyM,EAAEoyM,MAAMt3M,MAE/CkqP,EAAQ,GAEN62B,EAAUL,EAAgBhB,EAAa,EACzCyB,GAAc,EACdC,GAAe,EACfP,EAAe,EAeRlrD,EAAM,EAAGA,EAAM5nN,IAAK4nN,EAAK,CAUhC,IATAp0N,EAAK+jC,EAAMqwL,GAAKvrO,EAChBoX,EAAK8jC,EAAMqwL,GAAKtrO,EAChBoX,OAAuBmU,IAAlB0vB,EAAMqwL,GAAKl0N,GAAmBF,EAAK+jC,EAAMqwL,GAAKl0N,GACnDC,OAAuBkU,IAAlB0vB,EAAMqwL,GAAKj0N,GAAmBF,EAAK8jC,EAAMqwL,GAAKj0N,GAGnDwoP,EAAMxqQ,KAAK,CAACgvD,GAAGntC,EAAKE,GAAM,GAAIitC,GAAGltC,EAAKE,GAAM,KAGrCwoP,EAAMlqQ,QAAQ,CAEnB,IAAI0hS,EAAax3B,EAAM9jP,MACnBu7Q,GAAc,OAAeD,EAAY,GAG7C,GAFA7jO,EAAK8jO,EAAY,GACjB/pD,EAAK+pD,EAAY,KACb/B,EAAIz+R,IAAI08D,EAAI+5K,IAAOioD,EAAI1+R,IAAI08D,EAAI+5K,IAAO6pD,EAAItgS,IAAI08D,EAAI+5K,IAAtD,CAIA6pD,EAAIpgS,IAAIw8D,EAAI+5K,GACZ,IAAK,IAAIvxO,EAAI,EAAGA,EAAI,IAAKA,EACvB+D,EAAIyzD,EAAKiiO,GAAMz5R,GACfgE,EAAIutO,EAAKmoD,GAAM15R,GACVo7R,EAAIlC,YAAYn1R,EAAGC,EAAGD,EAAGC,IAAI6/P,EAAMxqQ,KAAK,CAAC0K,EAAGC,IASnD,GALAD,EAAIskD,EAAEjrC,OAAOo6C,GACbxzD,EAAIqkD,EAAEjrC,OAAOm0N,GACbv+B,EAAK0nF,EACLznF,EAAKnsM,GAEAoyR,GAAYn1R,EAAGC,EAAGo1R,EAAWC,EAAYxyR,EAAOC,KAAYwyR,GAAUjxO,EAAGtkD,EAAGC,EAAGq1R,EAAYD,EAAWpmF,EAAIumF,EAAKC,KAASF,GAAUjxO,EAAGtkD,EAAGC,EAAGq1R,EAAYD,EAAWC,EAAYE,EAAK,MAAO,CAG7L,KAAOtmF,EAAKD,GAAM,GAEZsmF,GAAUjxO,EAAGtkD,EAAGC,EAAGq1R,EAAYD,EADnC/+O,GAAO24J,EAAKC,GAAM,EACiCsmF,EAAKC,GACtDvmF,EAAK54J,EAEL24J,EAAK34J,EAIL24J,EAAK0nF,IACP77Q,EAAE9a,EAAIA,EACN8a,EAAE7a,EAAIA,EACN02R,EAAU1nF,EACV8nF,GAAc,EAElB,CAnCmE,CAoCrE,CAIKA,GAAgBT,IAGnBt2R,GAAKmX,EAAKE,GAAM,EAChBpX,GAAKmX,EAAKE,GAAM,GAFhBk/Q,EAAYxnR,KAAKoG,IAAIiC,EAAKF,EAAKG,EAAKF,KAKnBq/Q,IAAiBtB,GAAYn1R,EAAGC,EAAGo1R,EAAWC,EAAYxyR,EAAOC,KAAYwyR,GAAUjxO,EAAGtkD,EAAGC,EAAGq1R,EAAYD,EAAWC,EAAYE,EAAK,QACvJiB,EAAeD,EACf17Q,EAAE9a,EAAIA,EACN8a,EAAE7a,EAAIA,EACN+2R,GAAe,GAGrB,CAGA,SAAID,IAAeC,KACjBh3R,EAAIq1R,EAAY,EAChBp1R,EAAIq1R,EAAa,EACjBE,EAAIP,SAAS3wO,EAAExpC,EAAE9a,EAAIA,GAAIskD,EAAExpC,EAAE7a,EAAIA,GAAIqkD,EAAExpC,EAAE9a,EAAIA,GAAIskD,EAAExpC,EAAE7a,EAAIA,IACzD6a,EAAEsuE,MAAQ,SACVtuE,EAAE46O,SAAW,UACN,EAIX,CACF,GA4GA,SAAS8hC,GAAYC,EAAOp+P,EAAM9xB,EAAS2wE,EAAQskC,EAAQk7K,EAAYpB,EAAeqB,EAAYpB,EAAWpnN,EAASzuE,GAEpH,IAAK+2R,EAAM7hS,OAAQ,OAAO6hS,EAC1B,IAgFgBjrR,EAhFZk0E,EAAY1xE,KAAKE,IAAIgpE,EAAOtiF,OAAQ4mH,EAAO5mH,QAC7Cq2Q,EAiEJ,SAAoBxwO,EAAG5V,GAGrB,IAFA,IAAIomP,EAAU,IAAIz+N,aAAa3nB,GAC7BlC,EAAI8X,EAAE7lC,OACCgiS,EAAM,EAAGA,EAAMj0Q,IAAKi0Q,EAAK3rB,EAAQ2rB,GAAOn8P,EAAEm8P,IAAQ,EAC3D,IAAK,IAAIC,EAAMl0Q,EAAGk0Q,EAAMhyQ,IAASgyQ,EAAK5rB,EAAQ4rB,GAAO5rB,EAAQtoP,EAAI,GACjE,OAAOsoP,CACT,CAvEc6rB,CAAW5/M,EAAQwI,GAC7Bq3M,EAuEJ,SAAoBt8P,EAAG5V,GAGrB,IAFA,IAAIkyQ,EAAU,IAAIC,UAAUnyQ,GAC1BlC,EAAI8X,EAAE7lC,OACCqiS,EAAM,EAAGA,EAAMt0Q,IAAKs0Q,EAAKF,EAAQE,IAAQjC,GAAWv6P,EAAEw8P,IAC/D,IAAK,IAAIC,EAAOv0Q,EAAGu0Q,EAAOryQ,IAASqyQ,EAAMH,EAAQG,GAAQH,EAAQp0Q,EAAI,GACrE,OAAOo0Q,CACT,CA7EcI,CAAW37K,EAAQ97B,GAC7Bu0K,GA6EczoP,EA7EMirR,EAAM,GAAGvqE,QA8EhB1gN,EAAKg/C,MAAQh/C,EAAKg/C,KAAKypM,SA7EpCmjC,EAAyB,UAAbnjC,GAAwBwiC,EAAM,GAAGvqE,MAAMhyK,MAAMq7O,GAAWthC,SACpEojC,EAA4B,SAAdD,EACdtC,EAqFJ,SAAsB7gC,EAAUmjC,EAAWT,EAAYpB,GACrD,IAAI15Q,EAAK,SAAY/B,GACnB,MAAO,CAACA,EAAE9a,EAAG8a,EAAE9a,EAAG8a,EAAE9a,EAAG8a,EAAE7a,EAAG6a,EAAE7a,EAAG6a,EAAE7a,EACrC,EACA,OAAKg1P,EAEmB,SAAbA,GAAoC,SAAbA,EACzB,SAAUn6O,GACf,OAAO+B,EAAG/B,EAAEoyM,MACd,EACuB,SAAdkrE,EACF,SAAUt9Q,GACf,IAAIogC,EAAQpgC,EAAEoyM,MAAMhyK,MAAMq7O,GAAWr7O,MACrC,OAAOr+B,EAAGq+B,EAAMtlD,OAASslD,EAAqB,UAAfy8O,EAAyB,EAAIz8O,EAAMtlD,OAAS,GAAK,CAC9EoK,EAAGspC,IACHrpC,EAAGqpC,KAEP,EAEO,SAAUxuB,GACf,IAAI9C,EAAI8C,EAAEoyM,MAAMtrM,OAChB,MAAO,CAAC5J,EAAEb,IAAKa,EAAEb,GAAKa,EAAEX,IAAM,EAAGW,EAAEX,GAAIW,EAAEZ,IAAKY,EAAEZ,GAAKY,EAAEV,IAAM,EAAGU,EAAEV,GACpE,EAjBOuF,CAmBX,CA7Gey7Q,CAAarjC,EAAUmjC,EAAWT,EAAYpB,GACzDgC,EAAyB,OAAZppN,GAAoBA,IAAY71E,IAC7Ck/R,EAAmBH,GAA0B,UAAX33R,EAChC+3R,GAAgB,EAClBC,GAAiB,EAGfj+Q,EAAOg9Q,EAAM1xQ,KAAI,SAAUjL,GAC7B,IAAIu6Q,EAAYkD,EAAajiC,GAAYxzP,MAAMgY,EAAGA,EAAElF,WAAQ4V,EAG5D,OAFAitQ,EAAezpR,KAAKE,IAAIupR,EAAcpD,GACtCqD,EAAgB1pR,KAAKE,IAAIwpR,EAAe59Q,EAAEjF,UACnC,CACLq3M,MAAOpyM,EACPpR,QAAS,EACT1J,OAAGwrB,EACHvrB,OAAGurB,EACH49D,WAAO59D,EACPkqO,cAAUlqO,EACVsqQ,SAAUA,EAASh7Q,GACnBu6Q,UAAWA,EAEf,IACAlmN,EAAsB,OAAZA,GAAoBA,IAAY71E,IAAW0V,KAAKE,IAAIupR,EAAcC,GAAiB1pR,KAAKE,IAAI9Y,MAAM4Y,MAAM,QAAmBkpE,IAAW/I,EAChJ,IACIknN,EADA/xO,EAAIowO,GAAOr7P,EAAK,GAAIA,EAAK,GAAI81C,GAEjC,IAAKqpN,EAAkB,CAEjBjxR,GACFkT,EAAKnT,MAAK,SAAU4L,EAAG8E,GACrB,OAAOzQ,EAAQ2L,EAAEg6M,MAAOl1M,EAAEk1M,MAC5B,IAKF,IADA,IAAIyrE,GAAc,EACTC,EAAM,EAAGA,EAAMb,EAAQniS,SAAW+iS,IAAeC,EAGxDD,EAA+B,IAAjBZ,EAAQa,IAAgB3sB,EAAQ2sB,GAAO,EAKvD,IAAIC,GAAY5jC,GAAYqhC,GAAiB+B,IAAgBZ,EAAM1xQ,KAAI,SAAUjL,GAC/E,OAAOA,EAAEoyM,KACX,IAGAmpE,EAAUqB,EAAW9hS,QAAUijS,EApsBnC,SAAqBv0O,EAAGu0O,EAAUnB,EAAYiB,EAAaN,GAEzD,IAAIv1R,EAAQwhD,EAAExhD,MACZC,EAASuhD,EAAEvhD,OACXqoE,EAASutN,GAAeN,EACxBnwQ,EAAU,GAAOplB,EAAOC,GAAQ2W,WAAW,MAC3Co/Q,EAAkB,GAAOh2R,EAAOC,GAAQ2W,WAAW,MACnDq/Q,EAAgB3tN,GAAU,GAAOtoE,EAAOC,GAAQ2W,WAAW,MAG7Dg+Q,EAAWv6R,SAAQ,SAAU+9C,GAC3B,OAAO,GAAKhzB,EAASgzB,GAAO,EAC9B,IACA,GAAK49O,EAAiBD,GAAU,GAC5BztN,GACF,GAAK2tN,EAAeF,GAAU,GAIhC,IAOI74R,EAAGC,EAAGsa,EAAGvT,EAAGjK,EAAO8mB,EAAOm1Q,EAAaC,EAPvCrlD,EAASwgD,GAAUlsQ,EAASplB,EAAOC,GACrCm2R,EAAiB9E,GAAU0E,EAAiBh2R,EAAOC,GACnDo2R,EAAe/tN,GAAUgpN,GAAU2E,EAAej2R,EAAOC,GACzDq2R,EAAS90O,EAAEqwO,SACX0E,EAASjuN,GAAU9mB,EAAEqwO,SAIvB,IAAK10R,EAAI,EAAGA,EAAI8C,IAAU9C,EACxB,IAAKD,EAAI,EAAGA,EAAI8C,IAAS9C,EAEvB6jB,EAAQ+vN,EADR72O,EAAQkD,EAAI6C,EAAQ9C,GACIm0R,GACxB8E,EAAgBC,EAAen8R,GAASo3R,GACxC6E,EAAc5tN,GAAU+tN,EAAap8R,GAASo3R,IAC1CtwQ,GAASm1Q,GAAeC,KAC1B1+Q,EAAI+pC,EAAEtkD,GACNgH,EAAIs9C,EAAErkD,GACDo4R,IAAgBx0Q,IAASo1Q,GAAgBG,EAAOniS,IAAIsjB,EAAGvT,GACxDokE,IAAWvnD,GAASm1Q,IAAcK,EAAOpiS,IAAIsjB,EAAGvT,IAK1D,MAAO,CAACoyR,EAAQC,EAClB,CAypB8CC,CAAYh1O,EAAGu0O,GAAY,GAAInB,EAAYiB,EAAaN,GA5sBtG,SAAqB/zO,EAAG7pC,GACtB,IAAIk6Q,EAASrwO,EAAEqwO,SAKf,OAHCl6Q,GAAQ,IAAItd,SAAQ,SAAU2d,GAC7B,OAAO65Q,EAAO19R,IAAIqtD,EAAExpC,EAAEg7Q,SAAS,IAAKxxO,EAAExpC,EAAEg7Q,SAAS,IACnD,IACO,CAACnB,OAAQnpQ,EAClB,CAqsBqH+tQ,CAAYj1O,EAAGgyO,GAAiB77Q,EACnJ,CAGA,IAAI2zQ,EAAQiK,EAAcjC,GAAe11R,GAAQ4jD,EAAG+xO,EAASC,EAAeC,GAtK9E,SAAwBjyO,EAAG+xO,EAAS0B,EAAS9rB,GAC3C,IAAInpQ,EAAQwhD,EAAExhD,MACZC,EAASuhD,EAAEvhD,OACXyyR,EAAMa,EAAQ,GACdZ,EAAMY,EAAQ,GACd1yQ,EAAIsoP,EAAQr2Q,OACd,OAAO,SAAUklB,GACf,IAAI0+Q,EACA1D,EAAWh7Q,EAAEg7Q,SACfR,EAAax6Q,EAAEoyM,MAAMr3M,SAGvB,GAAIigR,EAAS,GAAK,GAAKA,EAAS,GAAK,GAAKA,EAAS,GAAKhzR,GAASgzR,EAAS,GAAK/yR,EAC7E,OAAO,EAoBT,IAlBA,IACEpB,EACAC,EACAm0R,EACA0D,EACAC,EACAviR,EACAE,EACAD,EACAE,EACA6yO,EACAC,EACAle,EACAx4K,EACA04K,EACAiB,EAfEgoD,EAA6C,QAAhCmE,EAAe1+Q,EAAEu6Q,iBAAwC,IAAjBmE,EAA0BA,EAAe,EAkBzFhuD,EAAM,EAAGA,EAAM7nN,IAAK6nN,EAAK,CAahC,GAZA7pO,GAAqB,EAAfo2R,EAAQvsD,IAAc,EAC5B5pO,GAAMm2R,EAAQvsD,KAAS,EAAM,GAAO,EACpCuqD,EAAkB,IAAPp0R,GAAmB,IAAPC,GAAYqqQ,EAAQzgC,GAAO,EAClDiuD,EAAa93R,GAAMC,EAAKoN,KAAK0xQ,QAAU,EACvCgZ,EAAeztB,EAAQzgC,GAAO,GAAK,EAAI,EACvCr0N,EAAK2+Q,EAAS,EAAIn0R,GAAMsqQ,EAAQzgC,GAAO7pO,EAAK83R,EAE5CriR,GADAgzO,EAAK0rC,EAAS,EAAIl0R,GAAM83R,EAAepE,EAAa1zR,EAAK,EAAIqqQ,EAAQzgC,GAAO5pO,EAAK63R,GACvEnE,EAAa,EACvBh+Q,EAAK8yO,EAAKkrC,EAAa,EACvBppD,EAAM5nL,EAAEntC,GACRi1N,EAAM9nL,EAAEltC,GACRi2N,EAAM/oL,EAAEhtC,IACH+9Q,EAAW,CAEd,IAAKh7R,GAAK6xO,EAAKA,EAAKE,EAAKiB,EAAKmoD,EAAKC,EAAKt+Q,EAAIA,EAAIC,EAAIE,EAAIw+Q,EAAUC,GAEhE,SAGAV,EAAY/+B,GAAYxzP,MAAMgY,EAAEoyM,MAAOpyM,EAAEoyM,MAAMt3M,KAEnD,CAMA,GAHAyB,GAFA8yO,EAAKhzO,EAAKuiR,EAAerE,EAAY1zR,EAAK,GAEhC0zR,EAAY,EAGlBh7R,GAFJ6xO,EAAM5nL,EAFNntC,EAAKgzO,EAAKkrC,EAAY,GAGtB3hO,EAAMpP,EAAEjtC,GACW+0N,EAAKiB,EAAKmoD,EAAKC,EAAKt+Q,EAAIE,EAAID,EAAIE,EAAIw+Q,EAAUC,GAO/D,OALAj7Q,EAAE9a,EAAK2B,EAAUA,EAAK+3R,EAAe,EAAIriR,EAAKF,EAAlCgzO,EACZrvO,EAAE7a,EAAK2B,EAAUA,EAAK83R,EAAe,EAAIpiR,EAAKF,EAAlCgzO,EACZtvO,EAAEsuE,MAAQwsM,GAAOj0R,EAAK+3R,EAAe,GACrC5+Q,EAAE46O,SAAWmgC,GAAUj0R,EAAK83R,EAAe,GAC3ClE,EAAIP,SAAS/oD,EAAKE,EAAK14K,EAAK25K,IACrB,CAEX,CACA,OAAO,CACT,CACF,CA6F2FssD,CAAer1O,EAAG+xO,EAAS0B,EAAS9rB,GAM7H,OAHAxxP,EAAKtd,SAAQ,SAAU2d,GACrB,OAAOA,EAAEpR,SAAW0kR,EAAMtzQ,EAC5B,IACOL,CACT,CAmDA,IAAI,GAAS,CAAC,IAAK,IAAK,UAAW,QAAS,YACxCm/Q,GAAU,CAAC,WAAY,OAAQ,cAAe,MAAO,SAAU,YAAa,QAAS,gBA6BzF,SAASC,GAAMxjR,GACb0gN,GAAUpgO,KAAK5B,KAAM,KAAMshB,EAC7B,CEnzBA,SAAS,GAAUoE,EAAMonN,GACvB,IAIE97M,EACA9vB,EACA0tB,EACA7qB,EACA2C,EACA8tC,EATElS,EAAS,GACXtgC,EAAM,SAAaqB,GACjB,OAAOA,EAAEU,EACX,EASF,GAAe,MAAX+oO,EACFxqM,EAAO/hC,KAAKmlB,QAEZ,IAAKsL,EAAM,CAAC,EAAG9vB,EAAI,EAAG0tB,EAAIlJ,EAAK7kB,OAAQK,EAAI0tB,IAAK1tB,EAC9C6C,EAAI2hB,EAAKxkB,IAETszC,EAAIxjB,EADJtqB,EAAIomO,EAAQ97M,IAAIhvB,OAGdgvB,EAAItqB,GAAK8tC,EAAI,GACbA,EAAE+3L,KAAO7lO,EACT47B,EAAO/hC,KAAKi0C,IAEdA,EAAEj0C,KAAKwD,GAGX,OAAOu+B,CACT,CAWA,SAASyiQ,GAAMzjR,GACb0gN,GAAUpgO,KAAK5B,KAAM,KAAMshB,EAC7B,CF0wBAwjR,GAAM/hE,WAAa,CACjBp6N,KAAM,QACN0hP,SAAU,CACRrvB,UAAU,GAEZ15M,OAAQ,CAAC,CACPrf,KAAM,OACN0G,KAAM,SACN45B,OAAO,EACP1hC,OAAQ,EACR+mE,UAAU,GACT,CACD3lE,KAAM,OACN0G,KAAM,WACL,CACD1G,KAAM,SACN0G,KAAM,SACN45B,OAAO,EACPolC,QAASk9N,IACR,CACD5iS,KAAM,SACN0G,KAAM,SACN45B,OAAO,EACPolC,QAAS,CAAC,IACT,CACD1lE,KAAM,UACN0G,KAAM,SACNg/D,QAAS,EACTq9N,MAAM,GACL,CACD/iS,KAAM,aACN0G,KAAM,SACN63B,OAAQ,CAAC,QAAS,OAClBmnC,QAAS,OACR,CACD1lE,KAAM,YACN0G,KAAM,SACNg/D,QAAS,GACR,CACD1lE,KAAM,gBACN0G,KAAM,UACNg/D,SAAS,GACR,CACD1lE,KAAM,aACN0G,KAAM,OACN45B,OAAO,GACN,CACDtgC,KAAM,SACN0G,KAAM,SACNg/D,QAAS,SACR,CACD1lE,KAAM,KACN0G,KAAM,SACN45B,OAAO,EACP1hC,OAAQ,GAAOA,OACf8mE,QAAS,MAGb,GAASm9N,GAAO9iE,GAAW,CACzBluN,UAAW,SAAmB4yB,EAAGm0L,GAK/B,IAAIT,EAAM1zL,EAAE00L,WACZ,GAAMhB,GAAOS,EAAM8D,QAAQ9D,EAAMmF,UALjC,SAAcriF,GACZ,IAAIv/H,EAAIsoB,EAAEi3G,GACV,OAAOjR,GAAWtuH,IAAMy8M,EAAMO,SAASh9M,EAAEwhH,OAC3C,CAE6C06F,CAAK,QAAlD,CACK5zL,EAAEpC,MAA0B,IAAlBoC,EAAEpC,KAAKzjC,QACpB,GAAM,kEAER,IAAIkoO,EAAKriM,EAAEqiM,IAAM,GAYjB,OATA05D,GAAY5nE,EAAM2F,YAAY3F,EAAMuF,QAAQ/uM,QAAU,GAAIqV,EAAEpC,KAAMoC,EAAEn0B,KAAM,GAAkB,MAAZm0B,EAAEy8C,OAAiB,EAAIz8C,EAAEy8C,QAAS,GAAMz8C,EAAE+gF,QAAUo9K,IAAUn+P,EAAEi8P,YAAc,IAAwB,IAApBj8P,EAAE66P,cAAyB76P,EAAEk8P,YAAc,MAAOl8P,EAAE86P,WAAa,OAAiB/qQ,IAAdiQ,EAAE0zC,QAAwB,EAAI1zC,EAAE0zC,QAAS1zC,EAAE/6B,QAAU,SAASvD,SAAQ,SAAUkd,GAEpT,IAAIvhB,EAAIuhB,EAAE6yM,MACVp0N,EAAEglO,EAAG,IAAMzjN,EAAEra,EACblH,EAAEglO,EAAG,IAAMzjN,EAAEpa,EACbnH,EAAEglO,EAAG,IAAMzjN,EAAE3Q,QACb5Q,EAAEglO,EAAG,IAAMzjN,EAAE+uE,MACbtwF,EAAEglO,EAAG,IAAMzjN,EAAEq7O,QACf,IACO9lC,EAAMD,OAAOR,GAAKY,SAAS+N,EAhBgC,CAiBpE,IE31BFg8D,GAAMhiE,WAAa,CACjB,KAAQ,QACR,SAAY,CACV,WAAa,GAEf,OAAU,CAAC,CACT,KAAQ,IACR,KAAQ,QACR,UAAY,GACX,CACD,KAAQ,IACR,KAAQ,QACR,UAAY,GACX,CACD,KAAQ,UACR,KAAQ,QACR,OAAS,GACR,CACD,KAAQ,YACR,KAAQ,SACR,QAAW,IACV,CACD,KAAQ,KACR,KAAQ,SACR,OAAS,KAGb,GAASgiE,GAAO/iE,GAAW,CACzBluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAAI33M,EAAM23M,EAAM0F,KAAK1F,EAAMwF,UAAYxF,EAAMyF,WAC7C,IAAKtgO,KAAKmC,OAAS04N,EAAM8D,WAAaj4L,EAAE00L,WAAY,CAClD,IACE94L,EAAS,GADEu4L,EAAM2F,YAAY3F,EAAMuF,QAAQ/uM,OAChBqV,EAAEomM,SAC7B7Z,GAASvsL,EAAEomM,SAAW,IAAI97M,IAAIumL,IAC9BxhM,EAAIk9M,EAAMpyN,OACVkoO,EAAKriM,EAAEqiM,IAAM,CAACxxB,GAAa7wK,EAAEz7B,GAAIssM,GAAa7wK,EAAEx7B,IAChDs1B,EAAS,GACX8B,EAAOl6B,SAAQ,SAAUosC,GACvB,GAAgBA,EAAG9N,EAAEz7B,EAAGy7B,EAAEx7B,EAAGw7B,EAAE4U,WAAa,IAAKlzC,SAAQ,SAAUgW,GAEjE,IADA,IAAIra,EAAI,CAAC,EACA7C,EAAI,EAAGA,EAAI6U,IAAK7U,EACvB6C,EAAEkvN,EAAM/xN,IAAMszC,EAAE+3L,KAAKrrO,GAEvB6C,EAAEglO,EAAG,IAAM3qN,EAAE,GACbra,EAAEglO,EAAG,IAAM3qN,EAAE,GACboiB,EAAOjgC,KAAK,GAAOwD,GACrB,GACF,IACI/D,KAAKmC,QAAO+gB,EAAIi3M,IAAMn6N,KAAKmC,OAC/BnC,KAAKmC,MAAQ+gB,EAAI1R,IAAM0R,EAAImO,OAASmP,CACtC,CACA,OAAOtd,CACT,IAEF,IAAI,GAAU,CACZs2L,SAAU,GACVt+L,OAAQ,GACRw+B,IAAK,GACLoB,IAAK,GACLn/B,IAAK,GACLohC,KAAM,GACN6qL,KAAM,IAiBR,SAASq9D,GAAW3jR,GAClB0gN,GAAUpgO,KAAK5B,KAAM,KAAMshB,EAC7B,CACA2jR,GAAWliE,WAAa,CACtB,KAAQ,aACR,SAAY,CACV,WAAa,GAEf,OAAU,CAAC,CACT,KAAQ,IACR,KAAQ,QACR,UAAY,GACX,CACD,KAAQ,IACR,KAAQ,QACR,UAAY,GACX,CACD,KAAQ,UACR,KAAQ,QACR,OAAS,GACR,CACD,KAAQ,SACR,KAAQ,SACR,QAAW,SACX,OAAUvrN,OAAOopB,KAAK,KACrB,CACD,KAAQ,QACR,KAAQ,SACR,QAAW,GACV,CACD,KAAQ,SACR,KAAQ,SACR,OAAS,EACT,OAAU,GACT,CACD,KAAQ,SACR,KAAQ,UACR,SAAW,GACV,CACD,KAAQ,KACR,KAAQ,SACR,OAAS,KAGb,GAASqkQ,GAAYjjE,GAAW,CAC9BluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAAI33M,EAAM23M,EAAM0F,KAAK1F,EAAMwF,UAAYxF,EAAMyF,WAC7C,IAAKtgO,KAAKmC,OAAS04N,EAAM8D,WAAaj4L,EAAE00L,WAAY,CAClD,IACE94L,EAAS,GADEu4L,EAAM2F,YAAY3F,EAAMuF,QAAQ/uM,OAChBqV,EAAEomM,SAC7B7Z,GAASvsL,EAAEomM,SAAW,IAAI97M,IAAIumL,IAC9B5rM,EAAS+6B,EAAE/6B,QAAU,SACrB2xC,EAAmB,MAAX5W,EAAE4W,MAAgB,EAAI5W,EAAE4W,MAChC4nP,EApEe,SAA0Bv5R,EAAQ2xC,GACvD,MAAkB,SAAX3xC,EAAoB2xC,EAAmB,SAAX3xC,EAAoB,EAAI,CAC7D,CAkEcw5R,CAAiBx5R,EAAQ2xC,GAC/ByrL,EAAKriM,EAAEqiM,IAAM,CAACxxB,GAAa7wK,EAAEz7B,GAAIssM,GAAa7wK,EAAEx7B,IAChDm7Q,EAAM,GAAQ16Q,GACd60B,EAAS,GACP+Z,EAAS7T,EAAE2lL,OACV,GAAe,GAAS1gN,IAC3B,GAAM,8BAAgCA,GAE1B,MAAV4uC,GACa,QAAX5uC,GAAoB4uC,EAAO,IAAM,IACnCsgL,EAAM6C,SAASz9E,KAAK,wDACpB1lG,EAAS,MAGbjY,EAAOl6B,SAAQ,SAAUosC,GAEvB,GADQA,EAAE3zC,QACDqkS,EACPrqE,EAAM6C,SAASz9E,KAAK,kEADtB,CAIA,IAAImlJ,EAAQ/e,EAAI7xO,EAAG9N,EAAEz7B,EAAGy7B,EAAEx7B,EAAGoyC,GAC7B,GAAI5W,EAAEplB,OAEJkf,EAAOjgC,KAAK,GAAO,CACjBqgC,KAAM4T,EAAE+3L,KACR5uL,KAAMynP,EAAMznP,KACZ5C,SAAUqqP,EAAMrqP,gBALpB,CASA,IAAIsgE,EAAM9gE,GAAU,GAAO/F,EAAG9N,EAAEz7B,GAC9BuG,EAAM,SAAa4M,GAEjB,IADA,IAAIra,EAAI,CAAC,EACA7C,EAAI,EAAGA,EAAI+xN,EAAMpyN,SAAUK,EAClC6C,EAAEkvN,EAAM/xN,IAAMszC,EAAE+3L,KAAKrrO,GAEvB6C,EAAEglO,EAAG,IAAM3qN,EAAE,GACbra,EAAEglO,EAAG,IAAM3qN,EAAE,GACboiB,EAAOjgC,KAAK,GAAOwD,GACrB,EACa,WAAX4H,GAAkC,aAAXA,EAEzB0vG,EAAIjzG,SAAQ,SAAU6C,GACpB,OAAOuG,EAAI,CAACvG,EAAGm6R,EAAMnsP,QAAQhuC,IAC/B,IAGAm9N,GAAYg9D,EAAMnsP,QAASoiE,EAAK,GAAI,KAAKjzG,QAAQoJ,EAlBnD,CAVA,CA8BF,IACIxR,KAAKmC,QAAO+gB,EAAIi3M,IAAMn6N,KAAKmC,OAC/BnC,KAAKmC,MAAQ+gB,EAAI1R,IAAM0R,EAAImO,OAASmP,CACtC,CACA,OAAOtd,CACT,ICvOK,IACI,GAAW,UACX,GAAiB,sBAGrB,SAAS,GAAImiR,EAAMnhS,EAAGohS,EAAMjiS,EAAGgiB,GACpC,IAAIoF,EAAG86Q,EAAMC,EAAIC,EACbC,EAAOxhS,EAAE,GACTyhS,EAAOtiS,EAAE,GACTuiS,EAAS,EACTC,EAAS,EACTF,EAAOD,GAASC,GAAQD,GAC1Bj7Q,EAAIi7Q,EACJA,EAAOxhS,IAAI0hS,KAEXn7Q,EAAIk7Q,EACJA,EAAOtiS,IAAIwiS,IAEb,IAAIC,EAAS,EACb,GAAIF,EAASP,GAAQQ,EAASP,EAc5B,IAbIK,EAAOD,GAASC,GAAQD,GAE1BF,EAAK/6Q,IADL86Q,EAAOG,EAAOj7Q,GACGi7Q,GACjBA,EAAOxhS,IAAI0hS,KAGXJ,EAAK/6Q,IADL86Q,EAAOI,EAAOl7Q,GACGk7Q,GACjBA,EAAOtiS,IAAIwiS,IAEbp7Q,EAAI86Q,EACO,IAAPC,IACFngR,EAAEygR,KAAYN,GAETI,EAASP,GAAQQ,EAASP,GAC3BK,EAAOD,GAASC,GAAQD,GAG1BF,EAAK/6Q,IAFL86Q,EAAO96Q,EAAIi7Q,IACXD,EAAQF,EAAO96Q,KACYi7Q,EAAOD,GAClCC,EAAOxhS,IAAI0hS,KAIXJ,EAAK/6Q,IAFL86Q,EAAO96Q,EAAIk7Q,IACXF,EAAQF,EAAO96Q,KACYk7Q,EAAOF,GAClCE,EAAOtiS,IAAIwiS,IAEbp7Q,EAAI86Q,EACO,IAAPC,IACFngR,EAAEygR,KAAYN,GAIpB,KAAOI,EAASP,GAGdG,EAAK/6Q,IAFL86Q,EAAO96Q,EAAIi7Q,IACXD,EAAQF,EAAO96Q,KACYi7Q,EAAOD,GAClCC,EAAOxhS,IAAI0hS,GACXn7Q,EAAI86Q,EACO,IAAPC,IACFngR,EAAEygR,KAAYN,GAGlB,KAAOK,EAASP,GAGdE,EAAK/6Q,IAFL86Q,EAAO96Q,EAAIk7Q,IACXF,EAAQF,EAAO96Q,KACYk7Q,EAAOF,GAClCE,EAAOtiS,IAAIwiS,GACXp7Q,EAAI86Q,EACO,IAAPC,IACFngR,EAAEygR,KAAYN,GAMlB,OAHU,IAAN/6Q,GAAsB,IAAXq7Q,IACbzgR,EAAEygR,KAAYr7Q,GAETq7Q,CACT,CAuDO,SAAS9qR,GAAI4T,GAClB,OAAO,IAAI6pB,aAAa7pB,EAC1B,CCnIA,IACIm3Q,GAAe,sBACfC,GAAe,sBACf,GAAIhrR,GAAI,GACRirR,GAAKjrR,GAAI,GACTkrR,GAAKlrR,GAAI,IACT,GAAIA,GAAI,IACRwK,GAAIxK,GAAI,GAoJL,SAASmrR,GAAS9+Q,EAAIC,EAAIoC,EAAIC,EAAIjI,EAAIC,GAC3C,IAAIykR,GAAW9+Q,EAAK3F,IAAO+H,EAAKhI,GAC5B2kR,GAAYh/Q,EAAK3F,IAAOiI,EAAKhI,GAC7B4C,EAAM6hR,EAAUC,EAChBC,EAASrsR,KAAKoG,IAAI+lR,EAAUC,GAChC,OAAIpsR,KAAKoG,IAAIkE,IAhKI,sBAgKmB+hR,EAAe/hR,GAxJrD,SAAuB8C,EAAIC,EAAIoC,EAAIC,EAAIjI,EAAIC,EAAI2kR,GAC7C,IAAIC,EAASC,EAASC,EAASC,EAC3BjB,EAAOtgR,EAAGwhR,EAAKC,EAAKC,EAAKC,EAAKnmS,EAAIomS,EAAI/X,EAAItmQ,EAAIuyN,EAAI32O,EAAIF,EAAI4iS,EAC1DC,EAAM5/Q,EAAK3F,EACXwlR,EAAMx9Q,EAAKhI,EACXylR,EAAM7/Q,EAAK3F,EACXylR,EAAMz9Q,EAAKhI,EAkBf8jR,GAVAxqD,GAJA2rD,EAAMK,GADNN,GADAxhR,EAAI,GAAW8hR,IACJ9hR,EAAI8hR,MAIfH,EAAMM,GADNP,GADA1hR,EAAI,GAAWiiR,IACJjiR,EAAIiiR,OALf1+Q,EAAKu+Q,EAAMG,GAOYT,EAAME,EAAMD,EAAMC,EAAMF,EAAMG,KASrDnmS,EAAKs6O,GADL72O,GAJAwiS,EAAMO,GADNR,GADAxhR,EAAI,GAAWgiR,IACJhiR,EAAIgiR,MAIfL,EAAMI,GADNL,GADA1hR,EAAI,GAAW+hR,IACJ/hR,EAAI+hR,OALf5iS,EAAK6iS,EAAMD,GAOYP,EAAME,EAAMD,EAAMC,EAAMF,EAAMG,KAGrD,GAAE,GAAK7rD,GAAMt6O,EAAK8kS,IAAUA,EAAQrhS,GAKpCqhS,GAFAzW,EAAKtmQ,IAFLq+Q,EAAKr+Q,EAAK/nB,IACV8kS,EAAQsB,EAAKr+Q,KACa/nB,EAAK8kS,KAC/B9kS,EAAKquR,EAAK1qR,GAEV,GAAE,GAAK0qR,GAAMruR,EAAK8kS,IAAUA,EAAQnhS,GAEpCmhS,GADAuB,EAAKD,EAAKpmS,GACGomS,EACb,GAAE,GAAKA,GAAMC,EAAKvB,IAAU9kS,EAAK8kS,GACjC,GAAE,GAAKuB,EACP,IAAIziR,EDgFC,SAAkB8gR,EAAMnhS,GAE7B,IADA,IAAIumB,EAAIvmB,EAAE,GACDhD,EAAI,EAAGA,EAAImkS,EAAMnkS,IAAKupB,GAAKvmB,EAAEhD,GACtC,OAAOupB,CACT,CCpFY,CAAS,EAAG,IAClB48Q,EAAWtB,GAAeO,EAC9B,GAAI/hR,GAAO8iR,IAAa9iR,GAAO8iR,EAC7B,OAAO9iR,EAUT,GAPAgiR,EAAUl/Q,GAAM4/Q,GADhBxB,EAAQp+Q,EAAK4/Q,KACmBxB,EAAQ/jR,GAExC+kR,EAAU/8Q,GAAMw9Q,GADhBzB,EAAQ/7Q,EAAKw9Q,KACmBzB,EAAQ/jR,GAExC8kR,EAAUl/Q,GAAM6/Q,GADhB1B,EAAQn+Q,EAAK6/Q,KACmB1B,EAAQ9jR,GAExC+kR,EAAU/8Q,GAAMy9Q,GADhB3B,EAAQ97Q,EAAKy9Q,KACmB3B,EAAQ9jR,GACxB,IAAZ4kR,GAA6B,IAAZC,GAA6B,IAAZC,GAA6B,IAAZC,EACrD,OAAOniR,EAIT,GAFA8iR,EAAWrB,GAAeM,EAAS,GAAiBrsR,KAAKoG,IAAIkE,IAC7DA,GAAO0iR,EAAMP,EAAUU,EAAMb,GAAWY,EAAMV,EAAUS,EAAMV,KACnDa,IAAa9iR,GAAO8iR,EAAU,OAAO9iR,EAkBhDkhR,GAVAxqD,GAJA2rD,EAAML,GADNI,GADAxhR,EAAI,GAAWohR,IACJphR,EAAIohR,MAIfO,EAAMM,GADNP,GADA1hR,EAAI,GAAWiiR,IACJjiR,EAAIiiR,OALf1+Q,EAAK69Q,EAAUa,GAOQT,EAAME,EAAMD,EAAMC,EAAMF,EAAMG,KASrDnmS,EAAKs6O,GADL72O,GAJAwiS,EAAMJ,GADNG,GADAxhR,EAAI,GAAWqhR,IACJrhR,EAAIqhR,MAIfM,EAAMI,GADNL,GADA1hR,EAAI,GAAW+hR,IACJ/hR,EAAI+hR,OALf5iS,EAAKkiS,EAAUU,GAOQP,EAAME,EAAMD,EAAMC,EAAMF,EAAMG,KAGrDthR,GAAE,GAAKy1N,GAAMt6O,EAAK8kS,IAAUA,EAAQrhS,GAKpCqhS,GAFAzW,EAAKtmQ,IAFLq+Q,EAAKr+Q,EAAK/nB,IACV8kS,EAAQsB,EAAKr+Q,KACa/nB,EAAK8kS,KAC/B9kS,EAAKquR,EAAK1qR,GAEVkhB,GAAE,GAAKwpQ,GAAMruR,EAAK8kS,IAAUA,EAAQnhS,GAEpCmhS,GADAuB,EAAKD,EAAKpmS,GACGomS,EACbvhR,GAAE,GAAKuhR,GAAMC,EAAKvB,IAAU9kS,EAAK8kS,GACjCjgR,GAAE,GAAKwhR,EACP,IAAIM,EAAQ,GAAI,EAAG,GAAG,EAAG9hR,GAAGygR,IAkB5BR,GAVAxqD,GAJA2rD,EAAMK,GADNN,GADAxhR,EAAI,GAAW8hR,IACJ9hR,EAAI8hR,MAIfH,EAAMJ,GADNG,GADA1hR,EAAI,GAAWuhR,IACJvhR,EAAIuhR,OALfh+Q,EAAKu+Q,EAAMP,GAOYC,EAAME,EAAMD,EAAMC,EAAMF,EAAMG,KASrDnmS,EAAKs6O,GADL72O,GAJAwiS,EAAMO,GADNR,GADAxhR,EAAI,GAAWgiR,IACJhiR,EAAIgiR,MAIfL,EAAML,GADNI,GADA1hR,EAAI,GAAWshR,IACJthR,EAAIshR,OALfniS,EAAK6iS,EAAMV,GAOYE,EAAME,EAAMD,EAAMC,EAAMF,EAAMG,KAGrDthR,GAAE,GAAKy1N,GAAMt6O,EAAK8kS,IAAUA,EAAQrhS,GAKpCqhS,GAFAzW,EAAKtmQ,IAFLq+Q,EAAKr+Q,EAAK/nB,IACV8kS,EAAQsB,EAAKr+Q,KACa/nB,EAAK8kS,KAC/B9kS,EAAKquR,EAAK1qR,GAEVkhB,GAAE,GAAKwpQ,GAAMruR,EAAK8kS,IAAUA,EAAQnhS,GAEpCmhS,GADAuB,EAAKD,EAAKpmS,GACGomS,EACbvhR,GAAE,GAAKuhR,GAAMC,EAAKvB,IAAU9kS,EAAK8kS,GACjCjgR,GAAE,GAAKwhR,EACP,IAAIO,EAAQ,GAAID,EAAOrB,GAAI,EAAGzgR,GAAG0gR,IAkBjCT,GAVAxqD,GAJA2rD,EAAML,GADNI,GADAxhR,EAAI,GAAWohR,IACJphR,EAAIohR,MAIfO,EAAMJ,GADNG,GADA1hR,EAAI,GAAWuhR,IACJvhR,EAAIuhR,OALfh+Q,EAAK69Q,EAAUG,GAOQC,EAAME,EAAMD,EAAMC,EAAMF,EAAMG,KASrDnmS,EAAKs6O,GADL72O,GAJAwiS,EAAMJ,GADNG,GADAxhR,EAAI,GAAWqhR,IACJrhR,EAAIqhR,MAIfM,EAAML,GADNI,GADA1hR,EAAI,GAAWshR,IACJthR,EAAIshR,OALfniS,EAAKkiS,EAAUC,GAOQE,EAAME,EAAMD,EAAMC,EAAMF,EAAMG,KAGrDthR,GAAE,GAAKy1N,GAAMt6O,EAAK8kS,IAAUA,EAAQrhS,GAKpCqhS,GAFAzW,EAAKtmQ,IAFLq+Q,EAAKr+Q,EAAK/nB,IACV8kS,EAAQsB,EAAKr+Q,KACa/nB,EAAK8kS,KAC/B9kS,EAAKquR,EAAK1qR,GAEVkhB,GAAE,GAAKwpQ,GAAMruR,EAAK8kS,IAAUA,EAAQnhS,GAEpCmhS,GADAuB,EAAKD,EAAKpmS,GACGomS,EACbvhR,GAAE,GAAKuhR,GAAMC,EAAKvB,IAAU9kS,EAAK8kS,GACjCjgR,GAAE,GAAKwhR,EACP,IAAIQ,EAAO,GAAID,EAAOrB,GAAI,EAAG1gR,GAAG,IAChC,OAAO,GAAEgiR,EAAO,EAClB,CAOUC,CAAcpgR,EAAIC,EAAIoC,EAAIC,EAAIjI,EAAIC,EAAI2kR,EAChD,CC/JStrR,GAAI,GACJA,GAAI,GACJA,GAAI,GACFA,GAAI,GACJA,GAAI,GACJA,GAAI,GACJA,GAAI,GACJA,GAAI,GACJA,GAAI,GACLA,GAAI,GACJA,GAAI,GACJA,GAAI,GACNA,GAAI,GACHA,GAAI,GACHA,GAAI,GACJA,GAAI,GACJA,GAAI,IACJA,GAAI,KACHA,GAAI,KClBNA,GAAI,GACJA,GAAI,GACJA,GAAI,GACJA,GAAI,GACJA,GAAI,GACJA,GAAI,GACLA,GAAI,GACJA,GAAI,GACAA,GAAI,GACJA,GAAI,GACJA,GAAI,GACJA,GAAI,GACJA,GAAI,GACJA,GAAI,GACNA,GAAI,GACJA,GAAI,GACJA,GAAI,GACHA,GAAI,GACJA,GAAI,GACJA,GAAI,GACNA,GAAI,GACHA,GAAI,IACHA,GAAI,IACJA,GAAI,IACLA,GAAI,IACHA,GAAI,IACLA,GAAI,IACJA,GAAI,IACJA,GAAI,MACHA,GAAI,MC7BNA,GAAI,GACJA,GAAI,GACJA,GAAI,GACJA,GAAI,GACJA,GAAI,GACJA,GAAI,GACJA,GAAI,GACJA,GAAI,GACJA,GAAI,GACJA,GAAI,GACHA,GAAI,IACJA,GAAI,IACJA,GAAI,IACJA,GAAI,IACJA,GAAI,IACJA,GAAI,IACJA,GAAI,IACJA,GAAI,IACJA,GAAI,IACJA,GAAI,IACHA,GAAI,MACJA,GAAI,MACJA,GAAI,MACJA,GAAI,MACJA,GAAI,MACHA,GAAI,MACJA,GAAI,MACHA,GAAI,MACLA,GAAI,MACPA,GAAI,GACHA,GAAI,GACJA,GAAI,GACJA,GAAI,IACJA,GAAI,IACJA,GAAI,IACHA,GAAI,IACLA,GAAI,IACHA,GAAI,KACHA,GAAI,KACJA,GAAI,KACJA,GAAI,KACLA,GAAI,KAyTJA,GAAI,IACJA,GAAI,IACJA,GAAI,IACLA,GAAI,MCvWd,IAAI,GAAUf,KAAK0B,IAAI,GAAI,IACvB+rR,GAAa,IAAIpI,YAAY,KAE7BqI,GAA0B,WAC5B,SAASA,EAAW9yC,IAClB,QAAgB70P,KAAM2nS,GACtB,IAAI/4Q,EAAIimO,EAAOh0P,QAAU,EACzB,GAAI+tB,EAAI,GAA0B,iBAAdimO,EAAO,GAAiB,MAAM,IAAI5sN,MAAM,uCAC5DjoC,KAAK60P,OAASA,EAGd,IAAI+yC,EAAe3tR,KAAKE,IAAI,EAAIyU,EAAI,EAAG,GACvC5uB,KAAK6nS,WAAa,IAAIvI,YAA2B,EAAfsI,GAClC5nS,KAAK8nS,WAAa,IAAIC,WAA0B,EAAfH,GAGjC5nS,KAAKgoS,UAAY/tR,KAAKisJ,KAAKjsJ,KAAK2C,KAAKgS,IACrC5uB,KAAKioS,UAAY,IAAI3I,YAAY1wQ,GACjC5uB,KAAKkoS,UAAY,IAAI5I,YAAY1wQ,GACjC5uB,KAAKmoS,SAAW,IAAI7I,YAAY1wQ,GAChC5uB,KAAKooS,UAAY,IAAIL,WAAW/nS,KAAKgoS,WAAWpsP,MAAM,GAGtD57C,KAAKqoS,KAAO,IAAI/I,YAAY1wQ,GAC5B5uB,KAAKsoS,OAAS,IAAI7vP,aAAa7pB,GAC/B5uB,KAAKwF,QACP,CAkUA,OAjUA,QAAamiS,EAAY,CAAC,CACxB9mQ,IAAK,SACL1+B,MAAO,WAaL,IAZA,IAAI0yP,EAAS70P,KAAK60P,OAChB0zC,EAAWvoS,KAAKioS,UAChBO,EAAWxoS,KAAKkoS,UAChBO,EAAUzoS,KAAKmoS,SACfO,EAAW1oS,KAAKooS,UACdx5Q,EAAIimO,EAAOh0P,QAAU,EAGrBqP,EAAO3L,IACP6L,EAAO7L,IACP4L,GAAQ5L,IACR8L,GAAQ9L,IACHrD,EAAI,EAAGA,EAAI0tB,EAAG1tB,IAAK,CAC1B,IAAI+J,EAAI4pP,EAAO,EAAI3zP,GACfgK,EAAI2pP,EAAO,EAAI3zP,EAAI,GACnB+J,EAAIiF,IAAMA,EAAOjF,GACjBC,EAAIkF,IAAMA,EAAOlF,GACjBD,EAAIkF,IAAMA,EAAOlF,GACjBC,EAAImF,IAAMA,EAAOnF,GACrBlL,KAAKqoS,KAAKnnS,GAAKA,CACjB,CAOA,IANA,IAGI26C,EAAIC,EAAIkrF,EAHRtlH,GAAMxR,EAAOC,GAAQ,EACrBwR,GAAMvR,EAAOC,GAAQ,EACrBs4R,EAAUpkS,IAIL5D,EAAK,EAAGA,EAAKiuB,EAAGjuB,IAAM,CAC7B,IAAIolB,EAAIqM,GAAK1Q,EAAIC,EAAIkzO,EAAO,EAAIl0P,GAAKk0P,EAAO,EAAIl0P,EAAK,IACjDolB,EAAI4iR,IACN9sP,EAAKl7C,EACLgoS,EAAU5iR,EAEd,CACA,IAAI6iR,EAAM/zC,EAAO,EAAIh5M,GACjBgtP,EAAMh0C,EAAO,EAAIh5M,EAAK,GAC1B8sP,EAAUpkS,IAGV,IAAK,IAAIk9M,EAAM,EAAGA,EAAM7yL,EAAG6yL,IACzB,GAAIA,IAAQ5lK,EAAZ,CACA,IAAIvd,EAAKlM,GAAKw2Q,EAAKC,EAAKh0C,EAAO,EAAIpzC,GAAMozC,EAAO,EAAIpzC,EAAM,IACtDnjL,EAAKqqQ,GAAWrqQ,EAAK,IACvBwd,EAAK2lK,EACLknF,EAAUrqQ,EAJY,CAY1B,IALA,IAAIwqQ,EAAMj0C,EAAO,EAAI/4M,GACjBitP,EAAMl0C,EAAO,EAAI/4M,EAAK,GACtBktP,EAAYzkS,IAGPm9M,EAAM,EAAGA,EAAM9yL,EAAG8yL,IACzB,GAAIA,IAAQ7lK,GAAM6lK,IAAQ5lK,EAA1B,CACA,IAAI58B,EAAI+pR,GAAaL,EAAKC,EAAKC,EAAKC,EAAKl0C,EAAO,EAAInzC,GAAMmzC,EAAO,EAAInzC,EAAM,IACvExiM,EAAI8pR,IACNhiK,EAAK06E,EACLsnF,EAAY9pR,EAJwB,CAOxC,IAAIgqR,EAAMr0C,EAAO,EAAI7tH,GACjBmiK,EAAMt0C,EAAO,EAAI7tH,EAAK,GAC1B,GAAIgiK,IAAczkS,IAAU,CAG1B,IAAK,IAAIiyO,EAAM,EAAGA,EAAM5nN,EAAG4nN,IACzBx2O,KAAKsoS,OAAO9xD,GAAOqe,EAAO,EAAIre,GAAOqe,EAAO,IAAMA,EAAO,EAAIre,EAAM,GAAKqe,EAAO,GAEjFu0C,GAAUppS,KAAKqoS,KAAMroS,KAAKsoS,OAAQ,EAAG15Q,EAAI,GAGzC,IAFA,IAAIy6Q,EAAO,IAAI/J,YAAY1wQ,GACvB1nB,EAAI,EACCuvO,EAAM,EAAGv6M,GAAM33B,IAAUkyO,EAAM7nN,EAAG6nN,IAAO,CAChD,IAAI/iO,EAAK1T,KAAKqoS,KAAK5xD,GACfz2O,KAAKsoS,OAAO50R,GAAMwoB,IACpBmtQ,EAAKniS,KAAOwM,EACZwoB,EAAKl8B,KAAKsoS,OAAO50R,GAErB,CAIA,OAHA1T,KAAKqpS,KAAOA,EAAK1lE,SAAS,EAAGz8N,GAC7BlH,KAAKspS,UAAY,IAAIhK,YAAY,QACjCt/R,KAAKupS,UAAY,IAAIjK,YAAY,GAEnC,CAGA,GAAI6G,GAASyC,EAAKC,EAAKC,EAAKC,EAAKG,EAAKC,GAAO,EAAG,CAC9C,IAAItF,EAAM/nP,EACN4iB,EAAKoqO,EACLrwD,EAAKswD,EACTjtP,EAAKkrF,EACL8hK,EAAMI,EACNH,EAAMI,EACNniK,EAAK68J,EACLqF,EAAMxqO,EACNyqO,EAAM1wD,CACR,CACA,IAAI56M,EAmQV,SAAsBxW,EAAIC,EAAIoC,EAAIC,EAAIjI,EAAIC,GACxC,IAAI/U,EAAK8c,EAAKrC,EACVxa,EAAK8c,EAAKrC,EACV2Q,EAAKvW,EAAK2F,EACV6Q,EAAKvW,EAAK2F,EACV4gO,EAAKt7O,EAAKA,EAAKC,EAAKA,EACpB28R,EAAKvxQ,EAAKA,EAAKC,EAAKA,EACpBnS,EAAI,IAAOnZ,EAAKsrB,EAAKrrB,EAAKorB,GAC1BhtB,EAAIoc,GAAM6Q,EAAKgwN,EAAKr7O,EAAK28R,GAAMzjR,EAC/B7a,EAAIoc,GAAM1a,EAAK48R,EAAKvxQ,EAAKiwN,GAAMniO,EACnC,MAAO,CACL9a,EAAGA,EACHC,EAAGA,EAEP,CAjRmBu+R,CAAab,EAAKC,EAAKC,EAAKC,EAAKG,EAAKC,GACnDnpS,KAAK0pS,IAAM7rQ,EAAO5yB,EAClBjL,KAAK2pS,IAAM9rQ,EAAO3yB,EAClB,IAAK,IAAI23R,EAAM,EAAGA,EAAMj0Q,EAAGi0Q,IACzB7iS,KAAKsoS,OAAOzF,GAAOzwQ,GAAKyiO,EAAO,EAAIguC,GAAMhuC,EAAO,EAAIguC,EAAM,GAAIhlQ,EAAO5yB,EAAG4yB,EAAO3yB,GAIjFk+R,GAAUppS,KAAKqoS,KAAMroS,KAAKsoS,OAAQ,EAAG15Q,EAAI,GAGzC5uB,KAAK4pS,WAAa/tP,EAClB,IAAIguP,EAAW,EACfrB,EAAS3sP,GAAM0sP,EAASvhK,GAAMlrF,EAC9B0sP,EAAS1sP,GAAMysP,EAAS1sP,GAAMmrF,EAC9BwhK,EAASxhK,GAAMuhK,EAASzsP,GAAMD,EAC9B4sP,EAAQ5sP,GAAM,EACd4sP,EAAQ3sP,GAAM,EACd2sP,EAAQzhK,GAAM,EACd0hK,EAAS9sP,MAAM,GACf8sP,EAAS1oS,KAAK8pS,SAASlB,EAAKC,IAAQhtP,EACpC6sP,EAAS1oS,KAAK8pS,SAAShB,EAAKC,IAAQjtP,EACpC4sP,EAAS1oS,KAAK8pS,SAASZ,EAAKC,IAAQniK,EACpChnI,KAAK+pS,aAAe,EACpB/pS,KAAKgqS,aAAanuP,EAAIC,EAAIkrF,GAAK,GAAI,GAAI,GACvC,IAAK,IAAW1pG,EAAIC,EAAX72B,EAAI,EAAWA,EAAI1G,KAAKqoS,KAAKxnS,OAAQ6F,IAAK,CACjD,IAAIo8R,EAAM9iS,KAAKqoS,KAAK3hS,GAChBi4D,EAAMk2L,EAAO,EAAIiuC,GACjBxqD,EAAMuc,EAAO,EAAIiuC,EAAM,GAG3B,KAAIp8R,EAAI,GAAKuT,KAAKoG,IAAIs+C,EAAMrhC,IAAO,IAAWrjB,KAAKoG,IAAIi4N,EAAM/6M,IAAO,MACpED,EAAKqhC,EACLphC,EAAK+6M,EAGDwqD,IAAQjnP,GAAMinP,IAAQhnP,GAAMgnP,IAAQ97J,GAAxC,CAIA,IADA,IAAItgH,EAAQ,EACHqgR,EAAK,EAAGlmQ,EAAM7gC,KAAK8pS,SAASnrO,EAAK25K,GAAMyuD,EAAK/mS,KAAKgoS,aAEzC,KADfthR,EAAQgiR,GAAU7nQ,EAAMkmQ,GAAM/mS,KAAKgoS,aACfthR,IAAU8hR,EAAS9hR,IAF4BqgR,KAOrE,IAFA,IAAI7iS,EADJwiB,EAAQ6hR,EAAS7hR,GAEfnB,QAAI,EACCA,GAAIijR,EAAStkS,GAAIiiS,GAASxnO,EAAK25K,EAAKuc,EAAO,EAAI3wP,GAAI2wP,EAAO,EAAI3wP,EAAI,GAAI2wP,EAAO,EAAItvO,IAAIsvO,EAAO,EAAItvO,GAAI,KAAO,GAEhH,IADArhB,EAAIqhB,MACMmB,EAAO,CACfxiB,GAAK,EACL,KACF,CAEF,IAAW,IAAPA,EAAJ,CAGA,IAAIH,GAAI/D,KAAKgqS,aAAa9lS,EAAG4+R,EAAK0F,EAAStkS,IAAK,GAAI,EAAGukS,EAAQvkS,IAG/DukS,EAAQ3F,GAAO9iS,KAAKiqS,UAAUlmS,GAAI,GAClC0kS,EAAQvkS,GAAKH,GACb8lS,IAIA,IADA,IAAI3xP,GAAKswP,EAAStkS,GACXqhB,GAAIijR,EAAStwP,IAAKiuP,GAASxnO,EAAK25K,EAAKuc,EAAO,EAAI38M,IAAK28M,EAAO,EAAI38M,GAAK,GAAI28M,EAAO,EAAItvO,IAAIsvO,EAAO,EAAItvO,GAAI,IAAM,GAClHxhB,GAAI/D,KAAKgqS,aAAa9xP,GAAI4qP,EAAKv9Q,GAAGkjR,EAAQ3F,IAAO,EAAG2F,EAAQvwP,KAC5DuwP,EAAQ3F,GAAO9iS,KAAKiqS,UAAUlmS,GAAI,GAClCykS,EAAStwP,IAAMA,GACf2xP,IACA3xP,GAAK3yB,GAIP,GAAIrhB,IAAMwiB,EACR,KAAwBy/Q,GAASxnO,EAAK25K,EAAKuc,EAAO,GAA3CtvO,GAAIgjR,EAASrkS,KAAsC2wP,EAAO,EAAItvO,GAAI,GAAIsvO,EAAO,EAAI3wP,GAAI2wP,EAAO,EAAI3wP,EAAI,IAAM,GAC/GH,GAAI/D,KAAKgqS,aAAazkR,GAAGu9Q,EAAK5+R,GAAI,EAAGukS,EAAQvkS,GAAIukS,EAAQljR,KACzDvlB,KAAKiqS,UAAUlmS,GAAI,GACnB0kS,EAAQljR,IAAKxhB,GACbykS,EAAStkS,GAAKA,EACd2lS,IACA3lS,EAAIqhB,GAKRvlB,KAAK4pS,WAAarB,EAASzF,GAAO5+R,EAClCskS,EAAStkS,GAAKqkS,EAASrwP,IAAM4qP,EAC7B0F,EAAS1F,GAAO5qP,GAGhBwwP,EAAS1oS,KAAK8pS,SAASnrO,EAAK25K,IAAQwqD,EACpC4F,EAAS1oS,KAAK8pS,SAASj1C,EAAO,EAAI3wP,GAAI2wP,EAAO,EAAI3wP,EAAI,KAAOA,CAvCtC,CAlB8B,CA0DtD,CACAlE,KAAKqpS,KAAO,IAAI/J,YAAYuK,GAC5B,IAAK,IAAI3G,GAAM,EAAG3kQ,GAAKv+B,KAAK4pS,WAAY1G,GAAM2G,EAAU3G,KACtDljS,KAAKqpS,KAAKnG,IAAO3kQ,GACjBA,GAAKiqQ,EAASjqQ,IAIhBv+B,KAAKspS,UAAYtpS,KAAK6nS,WAAWlkE,SAAS,EAAG3jO,KAAK+pS,cAClD/pS,KAAKupS,UAAYvpS,KAAK8nS,WAAWnkE,SAAS,EAAG3jO,KAAK+pS,aACpD,GACC,CACDlpQ,IAAK,WACL1+B,MAAO,SAAkB8I,EAAGC,GAC1B,OAAO+O,KAAKwX,OAqHG7kB,EArHe3B,EAAIjL,KAAK0pS,IAqHpB78R,EArHyB3B,EAAIlL,KAAK2pS,IAsHrDvrR,EAAIxR,GAAMqN,KAAKoG,IAAIzT,GAAMqN,KAAKoG,IAAIxT,KAC9BA,EAAK,EAAI,EAAIuR,EAAI,EAAIA,GAAK,EAvH8Bpe,KAAKgoS,YAAahoS,KAAKgoS,UAqHzF,IAAqBp7R,EAAIC,EACnBuR,CArHF,GACC,CACDyiB,IAAK,YACL1+B,MAAO,SAAmBgc,GAQxB,IAPA,IAAImrR,EAAYtpS,KAAK6nS,WACnB0B,EAAYvpS,KAAK8nS,WACjBjzC,EAAS70P,KAAK60P,OACZ3zP,EAAI,EACJu9C,EAAK,IAGI,CACX,IAAIx7B,EAAIsmR,EAAUprR,GAiBd67B,EAAK77B,EAAIA,EAAI,EAEjB,GADAsgC,EAAKzE,GAAM77B,EAAI,GAAK,GACT,IAAP8E,EAAJ,CAMA,IAAIzF,EAAKyF,EAAIA,EAAI,EACbinR,EAAKlwP,GAAM77B,EAAI,GAAK,EACpB+pO,EAAK1qO,GAAMyF,EAAI,GAAK,EACpByS,EAAK4zQ,EAAU7qP,GACfygL,EAAKoqE,EAAUnrR,GACf82O,EAAKq0C,EAAUY,GACfz+Q,EAAK69Q,EAAUphD,GAEnB,GADciiD,GAASt1C,EAAO,EAAIn/N,GAAKm/N,EAAO,EAAIn/N,EAAK,GAAIm/N,EAAO,EAAI31B,GAAK21B,EAAO,EAAI31B,EAAK,GAAI21B,EAAO,EAAII,GAAKJ,EAAO,EAAII,EAAK,GAAIJ,EAAO,EAAIppO,GAAKopO,EAAO,EAAIppO,EAAK,IACtJ,CACX69Q,EAAUnrR,GAAKsN,EACf69Q,EAAUrmR,GAAKyS,EACf,IAAI00Q,EAAMb,EAAUrhD,GAGpB,IAAa,IAATkiD,EAAY,CACd,IAAIlmS,EAAIlE,KAAK4pS,WACb,EAAG,CACD,GAAI5pS,KAAKmoS,SAASjkS,KAAOgkP,EAAI,CAC3BloP,KAAKmoS,SAASjkS,GAAKia,EACnB,KACF,CACAja,EAAIlE,KAAKioS,UAAU/jS,EACrB,OAASA,IAAMlE,KAAK4pS,WACtB,CACA5pS,KAAKqqS,MAAMlsR,EAAGisR,GACdpqS,KAAKqqS,MAAMpnR,EAAGsmR,EAAU9qP,IACxBz+C,KAAKqqS,MAAM5rP,EAAIypM,GACf,IAAIyO,EAAKn5O,GAAMyF,EAAI,GAAK,EAGpB/hB,EAAIwmS,GAAW7mS,SACjB6mS,GAAWxmS,KAAOy1P,EAEtB,KAAO,CACL,GAAU,IAANz1P,EAAS,MACbid,EAAIupR,KAAaxmS,EACnB,CArCA,KALA,CAEE,GAAU,IAANA,EAAS,MACbid,EAAIupR,KAAaxmS,EAEnB,CAsCF,CACA,OAAOu9C,CACT,GACC,CACD5d,IAAK,QACL1+B,MAAO,SAAegc,EAAG8E,GACvBjjB,KAAK8nS,WAAW3pR,GAAK8E,GACV,IAAPA,IAAUjjB,KAAK8nS,WAAW7kR,GAAK9E,EACrC,GAGC,CACD0iB,IAAK,eACL1+B,MAAO,SAAsB05C,EAAIC,EAAIkrF,EAAI7oH,EAAG8E,EAAGkC,GAC7C,IAAIphB,EAAI/D,KAAK+pS,aAQb,OAPA/pS,KAAK6nS,WAAW9jS,GAAK83C,EACrB77C,KAAK6nS,WAAW9jS,EAAI,GAAK+3C,EACzB97C,KAAK6nS,WAAW9jS,EAAI,GAAKijI,EACzBhnI,KAAKqqS,MAAMtmS,EAAGoa,GACdne,KAAKqqS,MAAMtmS,EAAI,EAAGkf,GAClBjjB,KAAKqqS,MAAMtmS,EAAI,EAAGohB,GAClBnlB,KAAK+pS,cAAgB,EACdhmS,CACT,IACE,CAAC,CACH88B,IAAK,OACL1+B,MAAO,SAAcue,GAKnB,IAJA,IAAI4pR,EAAO1pS,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK2pS,GAC3EC,EAAO5pS,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK6pS,GAC3E77Q,EAAIlO,EAAO7f,OACXg0P,EAAS,IAAIp8M,aAAiB,EAAJ7pB,GACrB1tB,EAAI,EAAGA,EAAI0tB,EAAG1tB,IAAK,CAC1B,IAAIkd,EAAIsC,EAAOxf,GACf2zP,EAAO,EAAI3zP,GAAKopS,EAAKlsR,GACrBy2O,EAAO,EAAI3zP,EAAI,GAAKspS,EAAKpsR,EAC3B,CACA,OAAO,IAAIupR,EAAW9yC,EACxB,KAEK8yC,CACT,CA1V8B,GAiW9B,SAASv1Q,GAAK/K,EAAIC,EAAIoC,EAAIC,GACxB,IAAI/c,EAAKya,EAAKqC,EACV7c,EAAKya,EAAKqC,EACd,OAAO/c,EAAKA,EAAKC,EAAKA,CACxB,CACA,SAASs9R,GAAS9iR,EAAIC,EAAIoC,EAAIC,EAAIjI,EAAIC,EAAIyL,EAAIC,GAC5C,IAAIzgB,EAAKya,EAAK+F,EACVvgB,EAAKya,EAAK+F,EACV4K,EAAKvO,EAAK0D,EACV8K,EAAKvO,EAAK0D,EACVw1B,EAAKnhC,EAAK0L,EACV88E,EAAKvoF,EAAK0L,EAEVq9Q,EAAKzyQ,EAAKA,EAAKC,EAAKA,EACpBkG,EAAKykB,EAAKA,EAAKqnD,EAAKA,EACxB,OAAOt9F,GAAMsrB,EAAKkG,EAAKssQ,EAAKxgM,GAAMr9F,GAAMorB,EAAKmG,EAAKssQ,EAAK7nP,IAH9Cj2C,EAAKA,EAAKC,EAAKA,IAG2CorB,EAAKiyE,EAAKhyE,EAAK2qB,GAAM,CAC1F,CACA,SAASomP,GAAa5hR,EAAIC,EAAIoC,EAAIC,EAAIjI,EAAIC,GACxC,IAAI/U,EAAK8c,EAAKrC,EACVxa,EAAK8c,EAAKrC,EACV2Q,EAAKvW,EAAK2F,EACV6Q,EAAKvW,EAAK2F,EACV4gO,EAAKt7O,EAAKA,EAAKC,EAAKA,EACpB28R,EAAKvxQ,EAAKA,EAAKC,EAAKA,EACpBnS,EAAI,IAAOnZ,EAAKsrB,EAAKrrB,EAAKorB,GAC1BhtB,GAAKitB,EAAKgwN,EAAKr7O,EAAK28R,GAAMzjR,EAC1B7a,GAAK0B,EAAK48R,EAAKvxQ,EAAKiwN,GAAMniO,EAC9B,OAAO9a,EAAIA,EAAIC,EAAIA,CACrB,CAgBA,SAASk+R,GAAU/vE,EAAKmN,EAAOx3N,EAAM2D,GACnC,GAAIA,EAAQ3D,GAAQ,GAClB,IAAK,IAAI9N,EAAI8N,EAAO,EAAG9N,GAAKyR,EAAOzR,IAAK,CAItC,IAHA,IAAIiwB,EAAOkoM,EAAIn4N,GACXypS,EAAWnkE,EAAMr1M,GACjBjqB,EAAIhG,EAAI,EACLgG,GAAK8H,GAAQw3N,EAAMnN,EAAInyN,IAAMyjS,GAAUtxE,EAAInyN,EAAI,GAAKmyN,EAAInyN,KAC/DmyN,EAAInyN,EAAI,GAAKiqB,CACf,KACK,CACL,IACIgyQ,EAAOn0R,EAAO,EACd47R,EAAMj4R,EACV,GAAK0mN,EAHQrqN,EAAO2D,GAAS,EAGXwwR,GACd38D,EAAMnN,EAAIrqN,IAASw3N,EAAMnN,EAAI1mN,KAAS,GAAK0mN,EAAKrqN,EAAM2D,GACtD6zN,EAAMnN,EAAI8pE,IAAS38D,EAAMnN,EAAI1mN,KAAS,GAAK0mN,EAAK8pE,EAAMxwR,GACtD6zN,EAAMnN,EAAIrqN,IAASw3N,EAAMnN,EAAI8pE,KAAQ,GAAK9pE,EAAKrqN,EAAMm0R,GAGzD,IAFA,IAAI0H,EAAQxxE,EAAI8pE,GACZ2H,EAAYtkE,EAAMqkE,KACT,CACX,GAAG1H,UAAe38D,EAAMnN,EAAI8pE,IAAS2H,GACrC,GAAGF,UAAcpkE,EAAMnN,EAAIuxE,IAAQE,GACnC,GAAIF,EAAMzH,EAAM,MAChB,GAAK9pE,EAAK8pE,EAAMyH,EAClB,CACAvxE,EAAIrqN,EAAO,GAAKqqN,EAAIuxE,GACpBvxE,EAAIuxE,GAAOC,EACPl4R,EAAQwwR,EAAO,GAAKyH,EAAM57R,GAC5Bo6R,GAAU/vE,EAAKmN,EAAO28D,EAAMxwR,GAC5By2R,GAAU/vE,EAAKmN,EAAOx3N,EAAM47R,EAAM,KAElCxB,GAAU/vE,EAAKmN,EAAOx3N,EAAM47R,EAAM,GAClCxB,GAAU/vE,EAAKmN,EAAO28D,EAAMxwR,GAEhC,CACF,CACA,SAAS,GAAK8D,EAAKvV,EAAGgG,GACpB,IAAIo6B,EAAM7qB,EAAIvV,GACduV,EAAIvV,GAAKuV,EAAIvP,GACbuP,EAAIvP,GAAKo6B,CACX,CACA,SAASipQ,GAAYnsR,GACnB,OAAOA,EAAE,EACX,CACA,SAASqsR,GAAYrsR,GACnB,OAAOA,EAAE,EACX,CC9bA,IAAI,GAAU,KACV,GAAoB,WACtB,SAAS29N,KACP,QAAgB/7O,KAAM+7O,GACtB/7O,KAAKk3O,IAAMl3O,KAAKo3O,IAEhBp3O,KAAKm3O,IAAMn3O,KAAKq3O,IAAM,KACtBr3O,KAAK0mC,EAAI,EACX,CAyCA,OAxCA,QAAaq1M,EAAM,CAAC,CAClBl7M,IAAK,SACL1+B,MAAO,SAAgB8I,EAAGC,GACxBlL,KAAK0mC,GAAK,IAAInzB,OAAOvT,KAAKk3O,IAAMl3O,KAAKm3O,KAAOlsO,EAAG,KAAKsI,OAAOvT,KAAKo3O,IAAMp3O,KAAKq3O,KAAOnsO,EACpF,GACC,CACD21B,IAAK,YACL1+B,MAAO,WACY,OAAbnC,KAAKm3O,MACPn3O,KAAKm3O,IAAMn3O,KAAKk3O,IAAKl3O,KAAKq3O,IAAMr3O,KAAKo3O,IACrCp3O,KAAK0mC,GAAK,IAEd,GACC,CACD7F,IAAK,SACL1+B,MAAO,SAAgB8I,EAAGC,GACxBlL,KAAK0mC,GAAK,IAAInzB,OAAOvT,KAAKm3O,KAAOlsO,EAAG,KAAKsI,OAAOvT,KAAKq3O,KAAOnsO,EAC9D,GACC,CACD21B,IAAK,MACL1+B,MAAO,SAAa8I,EAAGC,EAAGgU,GAExB,IAAIwN,GADJzhB,GAAKA,IAAWiU,GAAKA,GAEjByN,EAFIzhB,GAAKA,EAGb,GAAIgU,EAAI,EAAG,MAAM,IAAI+oB,MAAM,mBACV,OAAbjoC,KAAKm3O,IAAcn3O,KAAK0mC,GAAK,IAAInzB,OAAOmZ,EAAI,KAAKnZ,OAAOoZ,IAAa1S,KAAKoG,IAAIrgB,KAAKm3O,IAAMzqN,GAAM,IAAWzS,KAAKoG,IAAIrgB,KAAKq3O,IAAM1qN,GAAM,MAAS3sB,KAAK0mC,GAAK,IAAMha,EAAK,IAAMC,GACvKzN,IACLlf,KAAK0mC,GAAK,IAAInzB,OAAO2L,EAAG,KAAK3L,OAAO2L,EAAG,WAAW3L,OAAOtI,EAAIiU,EAAG,KAAK3L,OAAOrI,EAAG,KAAKqI,OAAO2L,EAAG,KAAK3L,OAAO2L,EAAG,WAAW3L,OAAOvT,KAAKm3O,IAAMzqN,EAAI,KAAKnZ,OAAOvT,KAAKq3O,IAAM1qN,GACvK,GACC,CACDkU,IAAK,OACL1+B,MAAO,SAAc8I,EAAGC,EAAGwiB,EAAGrI,GAC5BrlB,KAAK0mC,GAAK,IAAInzB,OAAOvT,KAAKk3O,IAAMl3O,KAAKm3O,KAAOlsO,EAAG,KAAKsI,OAAOvT,KAAKo3O,IAAMp3O,KAAKq3O,KAAOnsO,EAAG,KAAKqI,QAAQma,EAAG,KAAKna,QAAQ8R,EAAG,KAAK9R,QAAQma,EAAG,IACvI,GACC,CACDmT,IAAK,QACL1+B,MAAO,WACL,OAAOnC,KAAK0mC,GAAK,IACnB,KAEKq1M,CACT,CAjDwB,GCDpB6hC,GAAuB,WACzB,SAASA,KACP,QAAgB59Q,KAAM49Q,GACtB59Q,KAAK0mC,EAAI,EACX,CAsBA,OArBA,QAAak3O,EAAS,CAAC,CACrB/8O,IAAK,SACL1+B,MAAO,SAAgB8I,EAAGC,GACxBlL,KAAK0mC,EAAEnmC,KAAK,CAAC0K,EAAGC,GAClB,GACC,CACD21B,IAAK,YACL1+B,MAAO,WACLnC,KAAK0mC,EAAEnmC,KAAKP,KAAK0mC,EAAE,GAAG1f,QACxB,GACC,CACD6Z,IAAK,SACL1+B,MAAO,SAAgB8I,EAAGC,GACxBlL,KAAK0mC,EAAEnmC,KAAK,CAAC0K,EAAGC,GAClB,GACC,CACD21B,IAAK,QACL1+B,MAAO,WACL,OAAOnC,KAAK0mC,EAAE7lC,OAASb,KAAK0mC,EAAI,IAClC,KAEKk3O,CACT,CA3B2B,GCE3B,SAAS,GAA2Bx4P,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,GAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,GAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,GAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAGlL,IAAI6xE,GAAuB,WACzB,SAASA,EAAQC,GACf,IAAIn5O,EAAOjxD,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAAG,EAAG,IAAK,KACzFo9D,GAAQ,OAAenM,EAAM,GAC7BrY,EAAOwkB,EAAM,GACbyqK,EAAOzqK,EAAM,GACbvkB,EAAOukB,EAAM,GACb0qK,EAAO1qK,EAAM,GAEf,IADA,QAAgBh+D,KAAM+qS,MACftxP,GAAQA,KAAUD,GAAQA,KAAakvL,GAAQA,KAAUD,GAAQA,IAAQ,MAAM,IAAIxgM,MAAM,kBAChGjoC,KAAKgrS,SAAWA,EAChBhrS,KAAKirS,eAAiB,IAAIxyP,aAAsC,EAAzBuyP,EAAStqR,OAAO7f,QACvDb,KAAKkrS,QAAU,IAAIzyP,aAAsC,EAAzBuyP,EAAStqR,OAAO7f,QAChDb,KAAKy5C,KAAOA,EAAMz5C,KAAKw5C,KAAOA,EAC9Bx5C,KAAK0oO,KAAOA,EAAM1oO,KAAKyoO,KAAOA,EAC9BzoO,KAAKuvI,OACP,CA8fA,OA7fA,QAAaw7J,EAAS,CAAC,CACrBlqQ,IAAK,SACL1+B,MAAO,WAGL,OAFAnC,KAAKgrS,SAASxlS,SACdxF,KAAKuvI,QACEvvI,IACT,GACC,CACD6gC,IAAK,QACL1+B,MAAO,WAUL,IATA,IAKIunB,EAAIC,EAIqC1e,EAAGC,EAT5CigS,EAAiBnrS,KAAKgrS,SACxBtqR,EAASyqR,EAAezqR,OACxB2oR,EAAO8B,EAAe9B,KACtBC,EAAY6B,EAAe7B,UAC3B4B,EAAUlrS,KAAKkrS,QAIbE,EAAgBprS,KAAKorS,cAAgBprS,KAAKirS,eAAetnE,SAAS,EAAG2lE,EAAUzoS,OAAS,EAAI,GACvFK,EAAI,EAAGgG,EAAI,EAAG0nB,EAAI06Q,EAAUzoS,OAAcK,EAAI0tB,EAAG1tB,GAAK,EAAGgG,GAAK,EAAG,CACxE,IAAI5C,EAAoB,EAAfglS,EAAUpoS,GACfmD,EAAwB,EAAnBilS,EAAUpoS,EAAI,GACnBytB,EAAwB,EAAnB26Q,EAAUpoS,EAAI,GACnBw9D,EAAKh+C,EAAOpc,GACZm0O,EAAK/3N,EAAOpc,EAAK,GACjBge,EAAK5B,EAAOrc,GACZke,EAAK7B,EAAOrc,EAAK,GACjBwnB,EAAKnL,EAAOiO,GACZ7C,EAAKpL,EAAOiO,EAAK,GACjB/hB,EAAK0V,EAAKo8C,EACV7xD,EAAK0V,EAAKk2N,EACVxgN,EAAKpM,EAAK6yC,EACVxmC,EAAKpM,EAAK2sN,EACV2gD,EAA2B,GAArBxsR,EAAKsrB,EAAKrrB,EAAKorB,GACzB,GAAIhe,KAAKoG,IAAI+4Q,GAAM,KAAM,CAIvB,QAAW3iQ,IAAP/M,EAAkB,CACpBA,EAAKC,EAAK,EACV,IACE40M,EADEC,EAAY,GAA2B6qE,GAE3C,IACE,IAAK7qE,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAI33C,EAAK49N,EAAMp8N,MACfunB,GAAMhJ,EAAY,EAAL/f,GAASgpB,GAAMjJ,EAAY,EAAL/f,EAAS,EAC9C,CACF,CAAE,MAAO6mC,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACAqmB,GAAM2/Q,EAAKxoS,OAAQ8oB,GAAM0/Q,EAAKxoS,MAChC,CACA,IAAIsd,EAAI,IAAMlE,KAAK0+L,MAAMjvL,EAAKg1C,GAAMxmC,GAAMvO,EAAK8uN,GAAMxgN,GACrDhtB,GAAKyzD,EAAK7yC,GAAM,EAAI1N,EAAI+Z,EACxBhtB,GAAKutO,EAAK3sN,GAAM,EAAI3N,EAAI8Z,CAC1B,KAAO,CACL,IAAIlS,EAAI,EAAIqzQ,EACRlxC,EAAKt7O,EAAKA,EAAKC,EAAKA,EACpB28R,EAAKvxQ,EAAKA,EAAKC,EAAKA,EACxBjtB,EAAIyzD,GAAMxmC,EAAKgwN,EAAKr7O,EAAK28R,GAAMzjR,EAC/B7a,EAAIutO,GAAM7rO,EAAK48R,EAAKvxQ,EAAKiwN,GAAMniO,CACjC,CACAqlR,EAAclkS,GAAK+D,EACnBmgS,EAAclkS,EAAI,GAAKgE,CACzB,CAGA,IACIwqB,EAEAhJ,EAEAC,EALAtH,EAAIgkR,EAAKA,EAAKxoS,OAAS,GAEzB4qB,EAAS,EAAJpG,EAELjD,EAAK1B,EAAO,EAAI2E,GAEhBhD,EAAK3B,EAAO,EAAI2E,EAAI,GACtB6lR,EAAQtvP,KAAK,GACb,IAAK,IAAI6lK,EAAM,EAAGA,EAAM4nF,EAAKxoS,SAAU4gN,EAErC/rL,EAAKjK,EAAIiB,EAAKtK,EAAIuK,EAAKtK,EACvBoJ,EAAS,GAFTpG,EAAIgkR,EAAK5nF,IAEGr/L,EAAK1B,EAAO,EAAI2E,GAAIhD,EAAK3B,EAAO,EAAI2E,EAAI,GACpD6lR,EAAQx1Q,EAAK,GAAKw1Q,EAAQz/Q,GAAMkB,EAAKtK,EACrC6oR,EAAQx1Q,EAAK,GAAKw1Q,EAAQz/Q,EAAK,GAAKrJ,EAAKsK,CAE7C,GACC,CACDmU,IAAK,SACL1+B,MAAO,SAAgBgxB,GACrB,IAAI0rN,EAAoB,MAAX1rN,EAAkBA,EAAU,IAAI,QAASsD,EAClD40Q,EAAkBrrS,KAAKgrS,SACzBzB,EAAY8B,EAAgB9B,UAC5B+B,EAAUD,EAAgBC,QAC1BjC,EAAOgC,EAAgBhC,KACvB+B,EAAgBprS,KAAKorS,cACrBF,EAAUlrS,KAAKkrS,QACjB,GAAI7B,EAAKxoS,QAAU,EAAG,OAAO,KAC7B,IAAK,IAAIK,EAAI,EAAG0tB,EAAI26Q,EAAU1oS,OAAQK,EAAI0tB,IAAK1tB,EAAG,CAChD,IAAIgG,EAAIqiS,EAAUroS,GAClB,KAAIgG,EAAIhG,GAAR,CACA,IAAIqqS,EAAyB,EAApBtxR,KAAKwX,MAAMvwB,EAAI,GACpBsqS,EAAyB,EAApBvxR,KAAKwX,MAAMvqB,EAAI,GACpBgoR,EAAKkc,EAAcG,GACnBpc,EAAKic,EAAcG,EAAK,GACxBnc,EAAKgc,EAAcI,GACnBnc,EAAK+b,EAAcI,EAAK,GAC5BxrS,KAAKyrS,eAAevc,EAAIC,EAAIC,EAAIC,EAAIl8P,EAPjB,CAQrB,CAGA,IAFA,IAAI4nN,EACFC,EAAKquD,EAAKA,EAAKxoS,OAAS,GACjB6gN,EAAM,EAAGA,EAAM2nF,EAAKxoS,SAAU6gN,EAAK,CAC1Cq5B,EAAKC,EAAIA,EAAKquD,EAAK3nF,GACnB,IAAI39M,EAAkC,EAA9BkW,KAAKwX,MAAM65Q,EAAQtwD,GAAM,GAC7B/vO,EAAImgS,EAAcrnS,GAClBmH,EAAIkgS,EAAcrnS,EAAI,GACtBkO,EAAS,EAAL8oO,EACJ38N,EAAIpe,KAAK0rS,SAASzgS,EAAGC,EAAGggS,EAAQj5R,EAAI,GAAIi5R,EAAQj5R,EAAI,IACpDmM,GAAGpe,KAAKyrS,eAAexgS,EAAGC,EAAGkT,EAAE,GAAIA,EAAE,GAAI+U,EAC/C,CACA,OAAO0rN,GAAUA,EAAO18O,OAC1B,GACC,CACD0+B,IAAK,eACL1+B,MAAO,SAAsBgxB,GAC3B,IAAI0rN,EAAoB,MAAX1rN,EAAkBA,EAAU,IAAI,QAASsD,EAEtD,OADAtD,EAAQ3S,KAAKxgB,KAAKw5C,KAAMx5C,KAAKyoO,KAAMzoO,KAAKy5C,KAAOz5C,KAAKw5C,KAAMx5C,KAAK0oO,KAAO1oO,KAAKyoO,MACpEoW,GAAUA,EAAO18O,OAC1B,GACC,CACD0+B,IAAK,aACL1+B,MAAO,SAAoBjB,EAAGiyB,GAC5B,IAAI0rN,EAAoB,MAAX1rN,EAAkBA,EAAU,IAAI,QAASsD,EAClD/V,EAAS1gB,KAAK2rS,MAAMzqS,GACxB,GAAe,OAAXwf,GAAoBA,EAAO7f,OAA/B,CACAsyB,EAAQta,OAAO6H,EAAO,GAAIA,EAAO,IAEjC,IADA,IAAIkO,EAAIlO,EAAO7f,OACR6f,EAAO,KAAOA,EAAOkO,EAAI,IAAMlO,EAAO,KAAOA,EAAOkO,EAAI,IAAMA,EAAI,GAAGA,GAAK,EACjF,IAAK,IAAI4nN,EAAM,EAAGA,EAAM5nN,EAAG4nN,GAAO,EAC5B91N,EAAO81N,KAAS91N,EAAO81N,EAAM,IAAM91N,EAAO81N,EAAM,KAAO91N,EAAO81N,EAAM,IAAIrjN,EAAQilN,OAAO13N,EAAO81N,GAAM91N,EAAO81N,EAAM,IAGvH,OADArjN,EAAQklN,YACDwG,GAAUA,EAAO18O,OARqB,CAS/C,GACC,CACD0+B,IAAK,eACL1+B,MAAoB,UAAyB,SAASypS,IACpD,IAAIlrR,EAAQxf,EAAG0tB,EAAG2/G,EAClB,OAAO,UAAyB,SAAuB/vE,GACrD,cAAkBA,EAASlpC,KAAOkpC,EAASjpC,MACzC,KAAK,EACH7U,EAAS1gB,KAAKgrS,SAAStqR,OACvBxf,EAAI,EAAG0tB,EAAIlO,EAAO7f,OAAS,EAC7B,KAAK,EACH,KAAMK,EAAI0tB,GAAI,CACZ4vC,EAASjpC,KAAO,GAChB,KACF,CAEA,KADAg5G,EAAOvuI,KAAK6rS,YAAY3qS,IACb,CACTs9D,EAASjpC,KAAO,EAChB,KACF,CAGA,OAFAg5G,EAAKvmI,MAAQ9G,EACbs9D,EAASjpC,KAAO,EACTg5G,EACT,KAAK,IACDrtI,EACFs9D,EAASjpC,KAAO,EAChB,MACF,KAAK,GACL,IAAK,MACH,OAAOipC,EAASx5D,OAEtB,GAAG4mS,EAAc5rS,KACnB,KACC,CACD6gC,IAAK,cACL1+B,MAAO,SAAqBjB,GAC1B,IAAI0+M,EAAU,IAAIg+D,GAElB,OADA59Q,KAAK8rS,WAAW5qS,EAAG0+M,GACZA,EAAQz9M,OACjB,GACC,CACD0+B,IAAK,iBACL1+B,MAAO,SAAwBuqB,EAAIC,EAAIvK,EAAIC,EAAI8Q,GAC7C,IAAI02L,EACA4d,EAAKznO,KAAK+rS,YAAYr/Q,EAAIC,GAC1BlE,EAAKzoB,KAAK+rS,YAAY3pR,EAAIC,GACnB,IAAPolN,GAAmB,IAAPh/M,GACd0K,EAAQta,OAAO6T,EAAIC,GACnBwG,EAAQilN,OAAOh2N,EAAIC,KACVwnM,EAAI7pN,KAAKgsS,aAAat/Q,EAAIC,EAAIvK,EAAIC,EAAIolN,EAAIh/M,MACnD0K,EAAQta,OAAOgxM,EAAE,GAAIA,EAAE,IACvB12L,EAAQilN,OAAOvuB,EAAE,GAAIA,EAAE,IAE3B,GACC,CACDhpL,IAAK,WACL1+B,MAAO,SAAkBjB,EAAG+J,EAAGC,GAC7B,OAAKD,GAAKA,IAASA,IAAOC,GAAKA,IAASA,GACjClL,KAAKgrS,SAASzsE,MAAMr9N,EAAG+J,EAAGC,KAAOhK,CAC1C,GACC,CACD2/B,IAAK,YACL1+B,MAAoB,UAAyB,SAAS8pS,EAAU/qS,GAC9D,IAAI0uB,EAAIszM,EAAYD,EAAQ/7N,EAAG2oB,EAAIg4P,EAAIqkB,EAAIC,EAAIC,EAC/C,OAAO,UAAyB,SAAoBngO,GAClD,cAAkBA,EAAU32C,KAAO22C,EAAU12C,MAC3C,KAAK,EAEH,KADA3F,EAAK5vB,KAAK2rS,MAAMzqS,IACP,CACP+qE,EAAU12C,KAAO,GACjB,KACF,CACA2tM,EAAa,GAA2BljO,KAAKgrS,SAASiB,UAAU/qS,IAChE+qE,EAAU32C,KAAO,EACjB4tM,EAAWplN,IACb,KAAK,EACH,IAAKmlN,EAASC,EAAWt0M,KAAK0pB,KAAM,CAClC2zB,EAAU12C,KAAO,GACjB,KACF,CAGA,GAFAruB,EAAI+7N,EAAO9gO,QACX0tB,EAAK7vB,KAAK2rS,MAAMzkS,IACP,CACP+kE,EAAU12C,KAAO,GACjB,KACF,CACAsyP,EAAK,EAAGqkB,EAAKt8Q,EAAG/uB,OAClB,KAAK,GACH,KAAMgnR,EAAKqkB,GAAK,CACdjgO,EAAU12C,KAAO,GACjB,KACF,CACA42Q,EAAK,EAAGC,EAAKv8Q,EAAGhvB,OAClB,KAAK,GACH,KAAMsrS,EAAKC,GAAK,CACdngO,EAAU12C,KAAO,GACjB,KACF,CACA,GAAM3F,EAAGi4P,KAAQh4P,EAAGs8Q,IAAOv8Q,EAAGi4P,EAAK,KAAOh4P,EAAGs8Q,EAAK,IAAMv8Q,GAAIi4P,EAAK,GAAKqkB,KAAQr8Q,GAAIs8Q,EAAKC,EAAK,GAAKA,IAAOx8Q,GAAIi4P,EAAK,GAAKqkB,KAAQr8Q,GAAIs8Q,EAAKC,EAAK,GAAKA,GAAM,CACrJngO,EAAU12C,KAAO,GACjB,KACF,CAEA,OADA02C,EAAU12C,KAAO,GACVruB,EACT,KAAK,GACH,OAAO+kE,EAAU9W,OAAO,QAAS,IACnC,KAAK,GACHg3O,GAAM,EACNlgO,EAAU12C,KAAO,GACjB,MACF,KAAK,GACHsyP,GAAM,EACN57M,EAAU12C,KAAO,GACjB,MACF,KAAK,GACH02C,EAAU12C,KAAO,EACjB,MACF,KAAK,GACH02C,EAAU12C,KAAO,GACjB,MACF,KAAK,GACH02C,EAAU32C,KAAO,GACjB22C,EAAU7nE,GAAK6nE,EAAiB,MAAE,GAClCi3J,EAAWh/N,EAAE+nE,EAAU7nE,IACzB,KAAK,GAGH,OAFA6nE,EAAU32C,KAAO,GACjB4tM,EAAW7/N,IACJ4oE,EAAU1U,OAAO,IAC1B,KAAK,GACL,IAAK,MACH,OAAO0U,EAAUjnE,OAEvB,GAAGinS,EAAWjsS,KAAM,CAAC,CAAC,EAAG,GAAI,GAAI,KACnC,KACC,CACD6gC,IAAK,QACL1+B,MAAO,SAAejB,GACpB,IAAIkqS,EAAgBprS,KAAKorS,cACvBiB,EAAkBrsS,KAAKgrS,SACvBM,EAAUe,EAAgBf,QAC1B/B,EAAY8C,EAAgB9C,UAC5BD,EAAY+C,EAAgB/C,UAC1BgD,EAAKhB,EAAQpqS,GACjB,IAAY,IAARorS,EAAW,OAAO,KACtB,IAAI5rR,EAAS,GACTxc,EAAIooS,EACR,EAAG,CACD,IAAIvoS,EAAIkW,KAAKwX,MAAMvtB,EAAI,GAGvB,GAFAwc,EAAOngB,KAAK6qS,EAAkB,EAAJrnS,GAAQqnS,EAAkB,EAAJrnS,EAAQ,IAEpDulS,EADJplS,EAAIA,EAAI,GAAM,EAAIA,EAAI,EAAIA,EAAI,KACThD,EAAG,MACxBgD,EAAIqlS,EAAUrlS,EAChB,OAASA,IAAMooS,IAAa,IAAPpoS,GACrB,OAAOwc,CACT,GACC,CACDmgB,IAAK,QACL1+B,MAAO,SAAejB,GAEpB,GAAU,IAANA,GAAyC,IAA9BlB,KAAKgrS,SAAS3B,KAAKxoS,OAChC,MAAO,CAACb,KAAKy5C,KAAMz5C,KAAKyoO,KAAMzoO,KAAKy5C,KAAMz5C,KAAK0oO,KAAM1oO,KAAKw5C,KAAMx5C,KAAK0oO,KAAM1oO,KAAKw5C,KAAMx5C,KAAKyoO,MAE5F,IAAI/nN,EAAS1gB,KAAKusS,MAAMrrS,GACxB,GAAe,OAAXwf,EAAiB,OAAO,KAC5B,IAAI2xM,EAAIryN,KAAKkrS,QACTj5R,EAAQ,EAAJ/Q,EACR,OAAOlB,KAAKwsS,UAAUn6E,EAAEpgN,IAAMogN,EAAEpgN,EAAI,GAAKjS,KAAKysS,cAAcvrS,EAAGwf,EAAQ2xM,EAAEpgN,GAAIogN,EAAEpgN,EAAI,GAAIogN,EAAEpgN,EAAI,GAAIogN,EAAEpgN,EAAI,IAAMjS,KAAK0sS,YAAYxrS,EAAGwf,GACnI,GACC,CACDmgB,IAAK,cACL1+B,MAAO,SAAqBjB,EAAGwf,GAW7B,IAVA,IAEIgM,EACFC,EAGE86M,EAEA6kE,EARA19Q,EAAIlO,EAAO7f,OACXyrD,EAAI,KAGNlqC,EAAK1B,EAAOkO,EAAI,GAChBvM,EAAK3B,EAAOkO,EAAI,GAEhBnG,EAAKzoB,KAAK+rS,YAAY3pR,EAAIC,GAE1BsqR,EAAK,EACEzlS,EAAI,EAAGA,EAAI0nB,EAAG1nB,GAAK,EAG1B,GAFAwlB,EAAKtK,EAAIuK,EAAKtK,EAAID,EAAK1B,EAAOxZ,GAAImb,EAAK3B,EAAOxZ,EAAI,GAClDugO,EAAKh/M,EAAIA,EAAKzoB,KAAK+rS,YAAY3pR,EAAIC,GACxB,IAAPolN,GAAmB,IAAPh/M,EACd6jR,EAAKK,EAAIA,EAAK,EACVrgP,EAAGA,EAAE/rD,KAAK6hB,EAAIC,GAASiqC,EAAI,CAAClqC,EAAIC,OAC/B,CACL,IAAIwnM,OAAI,EACN+iF,OAAM,EACNjjB,OAAM,EACNkjB,OAAM,EACNC,OAAM,EACR,GAAW,IAAPrlE,EAAU,CACZ,GAAwD,QAAnD5d,EAAI7pN,KAAKgsS,aAAat/Q,EAAIC,EAAIvK,EAAIC,EAAIolN,EAAIh/M,IAAe,SAC9D,IAAIskR,EAAKljF,EACLmjF,GAAM,OAAeD,EAAI,GAC7BH,EAAMI,EAAI,GACVrjB,EAAMqjB,EAAI,GACVH,EAAMG,EAAI,GACVF,EAAME,EAAI,EACZ,KAAO,CACL,GAAwD,QAAnDnjF,EAAI7pN,KAAKgsS,aAAa5pR,EAAIC,EAAIqK,EAAIC,EAAIlE,EAAIg/M,IAAe,SAC9D,IAAIwlE,EAAMpjF,EACNqjF,GAAM,OAAeD,EAAK,GAC9BJ,EAAMK,EAAI,GACVJ,EAAMI,EAAI,GACVN,EAAMM,EAAI,GACVvjB,EAAMujB,EAAI,GACVZ,EAAKK,EAAIA,EAAK3sS,KAAKmtS,UAAUP,EAAKjjB,GAC9B2iB,GAAMK,GAAI3sS,KAAKotS,MAAMlsS,EAAGorS,EAAIK,EAAIrgP,EAAGA,EAAEzrD,QACrCyrD,EAAGA,EAAE/rD,KAAKqsS,EAAKjjB,GAAUr9N,EAAI,CAACsgP,EAAKjjB,EACzC,CACA2iB,EAAKK,EAAIA,EAAK3sS,KAAKmtS,UAAUN,EAAKC,GAC9BR,GAAMK,GAAI3sS,KAAKotS,MAAMlsS,EAAGorS,EAAIK,EAAIrgP,EAAGA,EAAEzrD,QACrCyrD,EAAGA,EAAE/rD,KAAKssS,EAAKC,GAAUxgP,EAAI,CAACugP,EAAKC,EACzC,CAEF,GAAIxgP,EACFggP,EAAKK,EAAIA,EAAK3sS,KAAKmtS,UAAU7gP,EAAE,GAAIA,EAAE,IACjCggP,GAAMK,GAAI3sS,KAAKotS,MAAMlsS,EAAGorS,EAAIK,EAAIrgP,EAAGA,EAAEzrD,aACpC,GAAIb,KAAKuvE,SAASruE,GAAIlB,KAAKw5C,KAAOx5C,KAAKy5C,MAAQ,GAAIz5C,KAAKyoO,KAAOzoO,KAAK0oO,MAAQ,GACjF,MAAO,CAAC1oO,KAAKy5C,KAAMz5C,KAAKyoO,KAAMzoO,KAAKy5C,KAAMz5C,KAAK0oO,KAAM1oO,KAAKw5C,KAAMx5C,KAAK0oO,KAAM1oO,KAAKw5C,KAAMx5C,KAAKyoO,MAE5F,OAAOn8K,CACT,GACC,CACDzrB,IAAK,eACL1+B,MAAO,SAAsBuqB,EAAIC,EAAIvK,EAAIC,EAAIolN,EAAIh/M,GAE/C,IAAIwyP,EAAOxzC,EAAKh/M,EAChB,GAAIwyP,EAAM,CACR,IAAIp8M,EAAQ,CAACz8C,EAAIC,EAAIqK,EAAIC,EAAIlE,EAAIg/M,GACjC/6M,EAAKmyC,EAAM,GACXlyC,EAAKkyC,EAAM,GACXz8C,EAAKy8C,EAAM,GACXx8C,EAAKw8C,EAAM,GACX4oK,EAAK5oK,EAAM,GACXp2C,EAAKo2C,EAAM,EACb,CACA,OAAa,CACX,GAAW,IAAP4oK,GAAmB,IAAPh/M,EAAU,OAAOwyP,EAAO,CAAC74P,EAAIC,EAAIqK,EAAIC,GAAM,CAACD,EAAIC,EAAIvK,EAAIC,GACxE,GAAIolN,EAAKh/M,EAAI,OAAO,KACpB,IAAIxd,OAAI,EACNC,OAAI,EACJia,EAAIsiN,GAAMh/M,EACJ,EAAJtD,GAAOla,EAAIyhB,GAAMtK,EAAKsK,IAAO1sB,KAAK0oO,KAAO/7M,IAAOtK,EAAKsK,GAAKzhB,EAAIlL,KAAK0oO,MAAkB,EAAJvjN,GAAOla,EAAIyhB,GAAMtK,EAAKsK,IAAO1sB,KAAKyoO,KAAO97M,IAAOtK,EAAKsK,GAAKzhB,EAAIlL,KAAKyoO,MAAkB,EAAJtjN,GAAOja,EAAIyhB,GAAMtK,EAAKsK,IAAO3sB,KAAKy5C,KAAO/sB,IAAOtK,EAAKsK,GAAKzhB,EAAIjL,KAAKy5C,OAAUvuC,EAAIyhB,GAAMtK,EAAKsK,IAAO3sB,KAAKw5C,KAAO9sB,IAAOtK,EAAKsK,GAAKzhB,EAAIjL,KAAKw5C,MAC3SiuL,GAAI/6M,EAAKzhB,EAAG0hB,EAAKzhB,EAAGu8N,EAAKznO,KAAK+rS,YAAYr/Q,EAAIC,KAASvK,EAAKnX,EAAGoX,EAAKnX,EAAGud,EAAKzoB,KAAK+rS,YAAY3pR,EAAIC,GACvG,CACF,GACC,CACDwe,IAAK,gBACL1+B,MAAO,SAAuBjB,EAAGwf,EAAQ2sR,EAAKC,EAAKC,EAAKC,GACtD,IACEpvR,EADEkuC,EAAI7rB,MAAMnH,KAAK5Y,GAInB,IAFItC,EAAIpe,KAAK0rS,SAASp/O,EAAE,GAAIA,EAAE,GAAI+gP,EAAKC,KAAMhhP,EAAE32C,QAAQyI,EAAE,GAAIA,EAAE,KAC3DA,EAAIpe,KAAK0rS,SAASp/O,EAAEA,EAAEzrD,OAAS,GAAIyrD,EAAEA,EAAEzrD,OAAS,GAAI0sS,EAAKC,KAAMlhP,EAAE/rD,KAAK6d,EAAE,GAAIA,EAAE,IAC9EkuC,EAAItsD,KAAK0sS,YAAYxrS,EAAGorD,GAC1B,IAAK,IAAyBm7K,EAArBvgO,EAAI,EAAG0nB,EAAI09B,EAAEzrD,OAAY4nB,EAAKzoB,KAAKmtS,UAAU7gP,EAAE19B,EAAI,GAAI09B,EAAE19B,EAAI,IAAK1nB,EAAI0nB,EAAG1nB,GAAK,EACrFugO,EAAKh/M,EAAIA,EAAKzoB,KAAKmtS,UAAU7gP,EAAEplD,GAAIolD,EAAEplD,EAAI,IACrCugO,GAAMh/M,IAAIvhB,EAAIlH,KAAKotS,MAAMlsS,EAAGumO,EAAIh/M,EAAI6jC,EAAGplD,GAAI0nB,EAAI09B,EAAEzrD,aAE9Cb,KAAKuvE,SAASruE,GAAIlB,KAAKw5C,KAAOx5C,KAAKy5C,MAAQ,GAAIz5C,KAAKyoO,KAAOzoO,KAAK0oO,MAAQ,KACjFp8K,EAAI,CAACtsD,KAAKw5C,KAAMx5C,KAAKyoO,KAAMzoO,KAAKy5C,KAAMz5C,KAAKyoO,KAAMzoO,KAAKy5C,KAAMz5C,KAAK0oO,KAAM1oO,KAAKw5C,KAAMx5C,KAAK0oO,OAEzF,OAAOp8K,CACT,GACC,CACDzrB,IAAK,QACL1+B,MAAO,SAAejB,EAAGorS,EAAIK,EAAIrgP,EAAGplD,GAClC,KAAOolS,IAAOK,GAAI,CAChB,IAAI1hS,OAAI,EACNC,OAAI,EACN,OAAQohS,GACN,KAAK,EACHA,EAAK,EACL,SAEF,KAAK,EACHA,EAAK,EAAGrhS,EAAIjL,KAAKy5C,KAAMvuC,EAAIlL,KAAKyoO,KAChC,MAEF,KAAK,EACH6jE,EAAK,EACL,SAEF,KAAK,EACHA,EAAK,GAAIrhS,EAAIjL,KAAKy5C,KAAMvuC,EAAIlL,KAAK0oO,KACjC,MAEF,KAAK,GACH4jE,EAAK,EACL,SAEF,KAAK,EACHA,EAAK,EAAGrhS,EAAIjL,KAAKw5C,KAAMtuC,EAAIlL,KAAK0oO,KAChC,MAEF,KAAK,EACH4jE,EAAK,EACL,SAEF,KAAK,EACHA,EAAK,EAAGrhS,EAAIjL,KAAKw5C,KAAMtuC,EAAIlL,KAAKyoO,KAM/Bn8K,EAAEplD,KAAO+D,GAAKqhD,EAAEplD,EAAI,KAAOgE,IAAMlL,KAAKuvE,SAASruE,EAAG+J,EAAGC,KACxDohD,EAAElrD,OAAO8F,EAAG,EAAG+D,EAAGC,GAAIhE,GAAK,EAE/B,CACA,OAAOA,CACT,GACC,CACD25B,IAAK,WACL1+B,MAAO,SAAkBuqB,EAAIC,EAAIkmQ,EAAIC,GACnC,IACE3tQ,EACAla,EACAC,EAHEnH,EAAIQ,IAIR,GAAIuuR,EAAK,EAAG,CAEV,GAAInmQ,GAAM3sB,KAAKyoO,KAAM,OAAO,MACvBtjN,GAAKnlB,KAAKyoO,KAAO97M,GAAMmmQ,GAAM/uR,IAAGmH,EAAIlL,KAAKyoO,KAAMx9N,EAAIyhB,GAAM3oB,EAAIohB,GAAK0tQ,EACzE,MAAO,GAAIC,EAAK,EAAG,CAEjB,GAAInmQ,GAAM3sB,KAAK0oO,KAAM,OAAO,MACvBvjN,GAAKnlB,KAAK0oO,KAAO/7M,GAAMmmQ,GAAM/uR,IAAGmH,EAAIlL,KAAK0oO,KAAMz9N,EAAIyhB,GAAM3oB,EAAIohB,GAAK0tQ,EACzE,CACA,GAAIA,EAAK,EAAG,CAEV,GAAInmQ,GAAM1sB,KAAKy5C,KAAM,OAAO,MACvBt0B,GAAKnlB,KAAKy5C,KAAO/sB,GAAMmmQ,GAAM9uR,IAAGkH,EAAIjL,KAAKy5C,KAAMvuC,EAAIyhB,GAAM5oB,EAAIohB,GAAK2tQ,EACzE,MAAO,GAAID,EAAK,EAAG,CAEjB,GAAInmQ,GAAM1sB,KAAKw5C,KAAM,OAAO,MACvBr0B,GAAKnlB,KAAKw5C,KAAO9sB,GAAMmmQ,GAAM9uR,IAAGkH,EAAIjL,KAAKw5C,KAAMtuC,EAAIyhB,GAAM5oB,EAAIohB,GAAK2tQ,EACzE,CACA,MAAO,CAAC7nR,EAAGC,EACb,GACC,CACD21B,IAAK,YACL1+B,MAAO,SAAmB8I,EAAGC,GAC3B,OAAQD,IAAMjL,KAAKw5C,KAAO,EAAIvuC,IAAMjL,KAAKy5C,KAAO,EAAI,IAAMvuC,IAAMlL,KAAKyoO,KAAO,EAAIv9N,IAAMlL,KAAK0oO,KAAO,EAAI,EACxG,GACC,CACD7nM,IAAK,cACL1+B,MAAO,SAAqB8I,EAAGC,GAC7B,OAAQD,EAAIjL,KAAKw5C,KAAO,EAAIvuC,EAAIjL,KAAKy5C,KAAO,EAAI,IAAMvuC,EAAIlL,KAAKyoO,KAAO,EAAIv9N,EAAIlL,KAAK0oO,KAAO,EAAI,EAChG,GACC,CACD7nM,IAAK,YACL1+B,MAAO,SAAmBmqD,GACxB,GAAIA,GAAKA,EAAEzrD,OAAS,EAAG,CACrB,IAAK,IAAIK,EAAI,EAAGA,EAAIorD,EAAEzrD,OAAQK,GAAK,EAAG,CACpC,IAAIgG,GAAKhG,EAAI,GAAKorD,EAAEzrD,OAClB6F,GAAKxF,EAAI,GAAKorD,EAAEzrD,QACdyrD,EAAEprD,KAAOorD,EAAEplD,IAAMolD,EAAEplD,KAAOolD,EAAE5lD,IAAM4lD,EAAEprD,EAAI,KAAOorD,EAAEplD,EAAI,IAAMolD,EAAEplD,EAAI,KAAOolD,EAAE5lD,EAAI,MAChF4lD,EAAElrD,OAAO8F,EAAG,GAAIhG,GAAK,EAEzB,CACKorD,EAAEzrD,SAAQyrD,EAAI,KACrB,CACA,OAAOA,CACT,KAEKy+O,CACT,CA/gB2B,GCPvB,GAAuB,SAAyB0C,IACpD,SAAS,GAA2BroR,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,GAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,GAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAW80N,GAAO,MAAMA,CAAK,EAAG31N,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAWwpS,GAAO30E,GAAS,EAAMvxL,EAAMkmQ,CAAK,EAAGrqS,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEv+B,SAAS,GAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAOlL,IAAI,GAAM,EAAIj/M,KAAK+B,GACjB,GAAM/B,KAAK0B,IACb,SAASgyR,GAAOvvR,GACd,OAAOA,EAAE,EACX,CACA,SAASwvR,GAAOxvR,GACd,OAAOA,EAAE,EACX,CAeA,SAASyvR,GAAO5iS,EAAGC,EAAGgU,GACpB,MAAO,CAACjU,EAAIgP,KAAKoC,IAAIpR,EAAIC,GAAKgU,EAAGhU,EAAI+O,KAAKkC,IAAIlR,EAAIC,GAAKgU,EACzD,CACA,IAAI4uR,GAAwB,WAC1B,SAASA,EAASptR,IAChB,QAAgB1gB,KAAM8tS,GACtB9tS,KAAK+tS,YAAc,IAAIpG,GAAWjnR,GAClC1gB,KAAKsrS,QAAU,IAAIvD,WAAWrnR,EAAO7f,OAAS,GAC9Cb,KAAKguS,WAAa,IAAIjG,WAAWrnR,EAAO7f,OAAS,GACjDb,KAAK0gB,OAAS1gB,KAAK+tS,YAAYl5C,OAC/B70P,KAAKuvI,OACP,CA4SA,OA3SA,QAAau+J,EAAU,CAAC,CACtBjtQ,IAAK,SACL1+B,MAAO,WAGL,OAFAnC,KAAK+tS,YAAYvoS,SACjBxF,KAAKuvI,QACEvvI,IACT,GACC,CACD6gC,IAAK,QACL1+B,MAAO,WACL,IAAI4jB,EAAI/lB,KAAK+tS,YACXrtR,EAAS1gB,KAAK0gB,OAGhB,GAAIqF,EAAEsjR,MAAQtjR,EAAEsjR,KAAKxoS,OAAS,GAtCpC,SAAmBklB,GAGjB,IAFA,IAAIujR,EAAYvjR,EAAEujR,UAChBz0C,EAAS9uO,EAAE8uO,OACJ3zP,EAAI,EAAGA,EAAIooS,EAAUzoS,OAAQK,GAAK,EAAG,CAC5C,IAAIid,EAAI,EAAImrR,EAAUpoS,GACpB+hB,EAAI,EAAIqmR,EAAUpoS,EAAI,GACtBikB,EAAI,EAAImkR,EAAUpoS,EAAI,GAExB,IADW2zP,EAAO1vO,GAAK0vO,EAAO12O,KAAO02O,EAAO5xO,EAAI,GAAK4xO,EAAO12O,EAAI,KAAO02O,EAAO5xO,GAAK4xO,EAAO12O,KAAO02O,EAAO1vO,EAAI,GAAK0vO,EAAO12O,EAAI,IAChH,MAAO,OAAO,CAC5B,CACA,OAAO,CACT,CA2ByC,CAAU4H,GAAI,CAC/C/lB,KAAKuvR,UAAYwY,WAAWzuQ,KAAK,CAC/Bz4B,OAAQ6f,EAAO7f,OAAS,IACvB,SAAU6lC,EAAGxlC,GACd,OAAOA,CACT,IAAGqR,MAAK,SAAUrR,EAAGgG,GACnB,OAAOwZ,EAAO,EAAIxf,GAAKwf,EAAO,EAAIxZ,IAAMwZ,EAAO,EAAIxf,EAAI,GAAKwf,EAAO,EAAIxZ,EAAI,EAC7E,IAKA,IAJA,IAAIhD,EAAIlE,KAAKuvR,UAAU,GACrBlsR,EAAIrD,KAAKuvR,UAAUvvR,KAAKuvR,UAAU1uR,OAAS,GAC3CgsB,EAAS,CAACnM,EAAO,EAAIxc,GAAIwc,EAAO,EAAIxc,EAAI,GAAIwc,EAAO,EAAIrd,GAAIqd,EAAO,EAAIrd,EAAI,IAC1E6b,EAAI,KAAOjF,KAAKoe,MAAMxL,EAAO,GAAKA,EAAO,GAAIA,EAAO,GAAKA,EAAO,IACzD3rB,EAAI,EAAG0tB,EAAIlO,EAAO7f,OAAS,EAAGK,EAAI0tB,IAAK1tB,EAAG,CACjD,IAAIkd,EAAIyvR,GAAOntR,EAAO,EAAIxf,GAAIwf,EAAO,EAAIxf,EAAI,GAAIge,GACjDwB,EAAO,EAAIxf,GAAKkd,EAAE,GAClBsC,EAAO,EAAIxf,EAAI,GAAKkd,EAAE,EACxB,CACApe,KAAK+tS,YAAc,IAAIpG,GAAWjnR,EACpC,aACS1gB,KAAKuvR,UAWd,IATA,IAAIga,EAAYvpS,KAAKupS,UAAYvpS,KAAK+tS,YAAYxE,UAC9CF,EAAOrpS,KAAKqpS,KAAOrpS,KAAK+tS,YAAY1E,KACpCC,EAAYtpS,KAAKspS,UAAYtpS,KAAK+tS,YAAYzE,UAC9CgC,EAAUtrS,KAAKsrS,QAAQ1vP,MAAM,GAC7BqyP,EAAYjuS,KAAKguS,WAAWpyP,MAAM,GAK7Brd,EAAK,EAAG2Z,EAAKqxP,EAAU1oS,OAAQ09B,EAAK2Z,IAAM3Z,EAAI,CACrD,IAAIgkL,EAAK+mF,EAAU/qQ,EAAK,GAAM,EAAIA,EAAK,EAAIA,EAAK,IACzB,IAAnBgrQ,EAAUhrQ,KAA+B,IAAjB+sQ,EAAQ/oF,KAAY+oF,EAAQ/oF,GAAMhkL,EAChE,CACA,IAAK,IAAI59B,EAAK,EAAGutS,EAAM7E,EAAKxoS,OAAQF,EAAKutS,IAAOvtS,EAC9CstS,EAAU5E,EAAK1oS,IAAOA,EAIpB0oS,EAAKxoS,QAAU,GAAKwoS,EAAKxoS,OAAS,IACpCb,KAAKspS,UAAY,IAAIvB,WAAW,GAAGnsP,MAAM,GACzC57C,KAAKupS,UAAY,IAAIxB,WAAW,GAAGnsP,MAAM,GACzC57C,KAAKspS,UAAU,GAAKD,EAAK,GACzBiC,EAAQjC,EAAK,IAAM,EACC,IAAhBA,EAAKxoS,SACPyqS,EAAQjC,EAAK,IAAM,EACnBrpS,KAAKspS,UAAU,GAAKD,EAAK,GACzBrpS,KAAKspS,UAAU,GAAKD,EAAK,IAG/B,GACC,CACDxoQ,IAAK,UACL1+B,MAAO,SAAiB0qB,GACtB,OAAO,IAAIk+Q,GAAQ/qS,KAAM6sB,EAC3B,GACC,CACDgU,IAAK,YACL1+B,MAAoB,UAAyB,SAAS8pS,EAAU/qS,GAC9D,IAAIoqS,EAASjC,EAAM2E,EAAYzE,EAAWD,EAAW/Z,EAAWjqQ,EAAGgnR,EAAIpoS,EAAGwxB,EAAItX,EAC9E,OAAO,UAAyB,SAAoBogD,GAClD,cAAkBA,EAASlpC,KAAOkpC,EAASjpC,MACzC,KAAK,EAEH,GADA+1Q,EAAUtrS,KAAKsrS,QAASjC,EAAOrpS,KAAKqpS,KAAM2E,EAAahuS,KAAKguS,WAAYzE,EAAYvpS,KAAKupS,UAAWD,EAAYtpS,KAAKspS,YAAW/Z,EAAYvvR,KAAKuvR,WACjI,CACd/wN,EAASjpC,KAAO,GAChB,KACF,CAEA,MADAjQ,EAAIiqQ,EAAUr8Q,QAAQhS,IACZ,GAAI,CACZs9D,EAASjpC,KAAO,EAChB,KACF,CAEA,OADAipC,EAASjpC,KAAO,EACTg6P,EAAUjqQ,EAAI,GACvB,KAAK,EACH,KAAMA,EAAIiqQ,EAAU1uR,OAAS,GAAI,CAC/B29D,EAASjpC,KAAO,EAChB,KACF,CAEA,OADAipC,EAASjpC,KAAO,EACTg6P,EAAUjqQ,EAAI,GACvB,KAAK,EACH,OAAOk5C,EAASrJ,OAAO,UACzB,KAAK,GAEH,IAAc,KADdm3O,EAAKhB,EAAQpqS,IACK,CAChBs9D,EAASjpC,KAAO,GAChB,KACF,CACA,OAAOipC,EAASrJ,OAAO,UACzB,KAAK,GAEHjxD,EAAIooS,EAAI52Q,GAAM,EAChB,KAAK,GAEH,OADA8oC,EAASjpC,KAAO,GACTG,EAAK4zQ,EAAUplS,GACxB,KAAK,GAEH,GAAMolS,EADNplS,EAAIA,EAAI,GAAM,EAAIA,EAAI,EAAIA,EAAI,KACPhD,EAAI,CACzBs9D,EAASjpC,KAAO,GAChB,KACF,CACA,OAAOipC,EAASrJ,OAAO,UACzB,KAAK,GAGH,IAAa,KADbjxD,EAAIqlS,EAAUrlS,IACG,CACfs6D,EAASjpC,KAAO,GAChB,KACF,CAEA,IADAnX,EAAIirR,GAAM2E,EAAW9sS,GAAK,GAAKmoS,EAAKxoS,WACxB60B,EAAK,CACf8oC,EAASjpC,KAAO,GAChB,KACF,CAEA,OADAipC,EAASjpC,KAAO,GACTnX,EACT,KAAK,GACH,OAAOogD,EAASrJ,OAAO,UACzB,KAAK,GACH,GAAIjxD,IAAMooS,EAAI,CACZ9tO,EAASjpC,KAAO,GAChB,KACF,CACF,KAAK,GACL,IAAK,MACH,OAAOipC,EAASx5D,OAEtB,GAAGinS,EAAWjsS,KAChB,KACC,CACD6gC,IAAK,OACL1+B,MAAO,SAAc8I,EAAGC,GACtB,IAAIhK,EAAIN,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,EAC5E,IAAKqK,GAAKA,IAASA,IAAOC,GAAKA,IAASA,EAAI,OAAQ,EAGpD,IAFA,IACIia,EADA02B,EAAK36C,GAEDikB,EAAInlB,KAAKu+N,MAAMr9N,EAAG+J,EAAGC,KAAO,GAAKia,IAAMjkB,GAAKikB,IAAM02B,GAAI36C,EAAIikB,EAClE,OAAOA,CACT,GACC,CACD0b,IAAK,QACL1+B,MAAO,SAAejB,EAAG+J,EAAGC,GAC1B,IAAIogS,EAAUtrS,KAAKsrS,QACjBjC,EAAOrpS,KAAKqpS,KACZ2E,EAAahuS,KAAKguS,WAClBzE,EAAYvpS,KAAKupS,UACjBD,EAAYtpS,KAAKspS,UACjB5oR,EAAS1gB,KAAK0gB,OAChB,IAAoB,IAAhB4qR,EAAQpqS,KAAcwf,EAAO7f,OAAQ,OAAQK,EAAI,IAAMwf,EAAO7f,QAAU,GAC5E,IAAIskB,EAAIjkB,EACJitS,EAAK,GAAIljS,EAAIyV,EAAW,EAAJxf,GAAQ,GAAK,GAAIgK,EAAIwV,EAAW,EAAJxf,EAAQ,GAAI,GAC5DorS,EAAKhB,EAAQpqS,GACbgD,EAAIooS,EACR,EAAG,CACD,IAAIvoS,EAAIulS,EAAUplS,GACd8vO,EAAK,GAAI/oO,EAAIyV,EAAW,EAAJ3c,GAAQ,GAAK,GAAImH,EAAIwV,EAAW,EAAJ3c,EAAQ,GAAI,GAGhE,GAFIiwO,EAAKm6D,IAAIA,EAAKn6D,EAAI7uN,EAAIphB,GAEtBulS,EADJplS,EAAIA,EAAI,GAAM,EAAIA,EAAI,EAAIA,EAAI,KACThD,EAAG,MAExB,IAAW,KADXgD,EAAIqlS,EAAUrlS,IACA,CAEZ,IADAA,EAAImlS,GAAM2E,EAAW9sS,GAAK,GAAKmoS,EAAKxoS,WAC1BkD,GACJ,GAAIkH,EAAIyV,EAAW,EAAJxc,GAAQ,GAAK,GAAIgH,EAAIwV,EAAW,EAAJxc,EAAQ,GAAI,GAAKiqS,EAAI,OAAOjqS,EAE7E,KACF,CACF,OAASA,IAAMooS,GACf,OAAOnnR,CACT,GACC,CACD0b,IAAK,SACL1+B,MAAO,SAAgBgxB,GAKrB,IAJA,IAAI0rN,EAAoB,MAAX1rN,EAAkBA,EAAU,IAAI,QAASsD,EAClD/V,EAAS1gB,KAAK0gB,OAChB6oR,EAAYvpS,KAAKupS,UACjBD,EAAYtpS,KAAKspS,UACVpoS,EAAI,EAAG0tB,EAAI26Q,EAAU1oS,OAAQK,EAAI0tB,IAAK1tB,EAAG,CAChD,IAAIgG,EAAIqiS,EAAUroS,GAClB,KAAIgG,EAAIhG,GAAR,CACA,IAAIqqS,EAAoB,EAAfjC,EAAUpoS,GACfsqS,EAAoB,EAAflC,EAAUpiS,GACnBisB,EAAQta,OAAO6H,EAAO6qR,GAAK7qR,EAAO6qR,EAAK,IACvCp4Q,EAAQilN,OAAO13N,EAAO8qR,GAAK9qR,EAAO8qR,EAAK,GAJpB,CAKrB,CAEA,OADAxrS,KAAKouS,WAAWj7Q,GACT0rN,GAAUA,EAAO18O,OAC1B,GACC,CACD0+B,IAAK,eACL1+B,MAAO,SAAsBgxB,EAASjU,QAC1BuX,IAANvX,GAAqBiU,GAAqC,mBAAnBA,EAAQta,SAAwBqG,EAAIiU,EAASA,EAAU,MAClGjU,EAASuX,MAALvX,EAAiB,GAAKA,EAG1B,IAFA,IAAI2/N,EAAoB,MAAX1rN,EAAkBA,EAAU,IAAI,QAASsD,EAClD/V,EAAS1gB,KAAK0gB,OACTxf,EAAI,EAAG0tB,EAAIlO,EAAO7f,OAAQK,EAAI0tB,EAAG1tB,GAAK,EAAG,CAChD,IAAI+J,EAAIyV,EAAOxf,GACbgK,EAAIwV,EAAOxf,EAAI,GACjBiyB,EAAQta,OAAO5N,EAAIiU,EAAGhU,GACtBioB,EAAQusL,IAAIz0M,EAAGC,EAAGgU,EAAG,EAAG,GAC1B,CACA,OAAO2/N,GAAUA,EAAO18O,OAC1B,GACC,CACD0+B,IAAK,aACL1+B,MAAO,SAAoBgxB,GACzB,IAAI0rN,EAAoB,MAAX1rN,EAAkBA,EAAU,IAAI,QAASsD,EAClD4yQ,EAAOrpS,KAAKqpS,KACd3oR,EAAS1gB,KAAK0gB,OACZ2E,EAAc,EAAVgkR,EAAK,GACXz6Q,EAAIy6Q,EAAKxoS,OACXsyB,EAAQta,OAAO6H,EAAO2E,GAAI3E,EAAO2E,EAAI,IACrC,IAAK,IAAInkB,EAAI,EAAGA,EAAI0tB,IAAK1tB,EAAG,CAC1B,IAAIw9B,EAAK,EAAI2qQ,EAAKnoS,GAClBiyB,EAAQilN,OAAO13N,EAAOge,GAAKhe,EAAOge,EAAK,GACzC,CAEA,OADAvL,EAAQklN,YACDwG,GAAUA,EAAO18O,OAC1B,GACC,CACD0+B,IAAK,cACL1+B,MAAO,WACL,IAAIy9M,EAAU,IAAIg+D,GAElB,OADA59Q,KAAKouS,WAAWxuF,GACTA,EAAQz9M,OACjB,GACC,CACD0+B,IAAK,iBACL1+B,MAAO,SAAwBjB,EAAGiyB,GAChC,IAAI0rN,EAAoB,MAAX1rN,EAAkBA,EAAU,IAAI,QAASsD,EAClD/V,EAAS1gB,KAAK0gB,OAChB4oR,EAAYtpS,KAAKspS,UACfllS,EAAyB,EAApBklS,EAAUpoS,GAAK,GACpBoD,EAAwB,EAAnBglS,EAAUpoS,EAAI,GACnBmD,EAAwB,EAAnBilS,EAAUpoS,EAAI,GAKvB,OAJAiyB,EAAQta,OAAO6H,EAAOtc,GAAKsc,EAAOtc,EAAK,IACvC+uB,EAAQilN,OAAO13N,EAAOpc,GAAKoc,EAAOpc,EAAK,IACvC6uB,EAAQilN,OAAO13N,EAAOrc,GAAKqc,EAAOrc,EAAK,IACvC8uB,EAAQklN,YACDwG,GAAUA,EAAO18O,OAC1B,GACC,CACD0+B,IAAK,mBACL1+B,MAAoB,UAAyB,SAASksS,IACpD,IAAI/E,EAAWpoS,EAAG0tB,EAClB,OAAO,UAAyB,SAA2Bq9C,GACzD,cAAkBA,EAAU32C,KAAO22C,EAAU12C,MAC3C,KAAK,EACH+zQ,EAAYtpS,KAAKspS,UACjBpoS,EAAI,EAAG0tB,EAAI06Q,EAAUzoS,OAAS,EAChC,KAAK,EACH,KAAMK,EAAI0tB,GAAI,CACZq9C,EAAU12C,KAAO,EACjB,KACF,CAEA,OADA02C,EAAU12C,KAAO,EACVv1B,KAAKsuS,gBAAgBptS,GAC9B,KAAK,IACDA,EACF+qE,EAAU12C,KAAO,EACjB,MACF,KAAK,EACL,IAAK,MACH,OAAO02C,EAAUjnE,OAEvB,GAAGqpS,EAAkBruS,KACvB,KACC,CACD6gC,IAAK,kBACL1+B,MAAO,SAAyBjB,GAC9B,IAAI0+M,EAAU,IAAIg+D,GAElB,OADA59Q,KAAKuuS,eAAertS,EAAG0+M,GAChBA,EAAQz9M,OACjB,IACE,CAAC,CACH0+B,IAAK,OACL1+B,MAAO,SAAcue,GACnB,IAAImiC,EAAKjiD,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK+sS,GACzEzjM,EAAKtpG,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAKgtS,GACzEl/O,EAAO9tD,UAAUC,OAAS,EAAID,UAAU,QAAK61B,EACjD,OAAO,IAAIq3Q,EAAS,WAAYptR,EAMtC,SAAmBA,EAAQmiC,EAAIqnD,EAAIx7C,GAGjC,IAFA,IAAI9/B,EAAIlO,EAAO7f,OACX0hC,EAAQ,IAAIkW,aAAiB,EAAJ7pB,GACpB1tB,EAAI,EAAGA,EAAI0tB,IAAK1tB,EAAG,CAC1B,IAAIkd,EAAIsC,EAAOxf,GACfqhC,EAAU,EAAJrhC,GAAS2hD,EAAGjhD,KAAK8sD,EAAMtwC,EAAGld,EAAGwf,GACnC6hB,EAAU,EAAJrhC,EAAQ,GAAKgpG,EAAGtoG,KAAK8sD,EAAMtwC,EAAGld,EAAGwf,EACzC,CACA,OAAO6hB,CACT,CAf+CisQ,CAAU9tR,EAAQmiC,EAAIqnD,EAAIx7C,GAAQjW,aAAanf,KAAKm0Q,GAAa/sR,EAAQmiC,EAAIqnD,EAAIx7C,IAC5H,KAEKo/O,CACT,CArT4B,GAiU5B,SAASL,GAAa/sR,EAAQmiC,EAAIqnD,EAAIx7C,GACpC,IAAIxtD,EAAGs9N,EAAWyE,EAAQ7kN,EAC1B,OAAO,UAAyB,SAAuBupH,GACrD,cAAkBA,EAAUryG,KAAOqyG,EAAUpyG,MAC3C,KAAK,EACHr0B,EAAI,EACJs9N,EAAY,GAA2B99M,GACvCinH,EAAUryG,KAAO,EACjBkpM,EAAU1gN,IACZ,KAAK,EACH,IAAKmlN,EAASzE,EAAU5vM,KAAK0pB,KAAM,CACjCqvF,EAAUpyG,KAAO,GACjB,KACF,CAGA,OAFAnX,EAAI6kN,EAAO9gO,MACXwlI,EAAUpyG,KAAO,EACVstB,EAAGjhD,KAAK8sD,EAAMtwC,EAAGld,EAAGwf,GAC7B,KAAK,EAEH,OADAinH,EAAUpyG,KAAO,GACV20E,EAAGtoG,KAAK8sD,EAAMtwC,EAAGld,EAAGwf,GAC7B,KAAK,KACDxf,EACJ,KAAK,GACHymI,EAAUpyG,KAAO,EACjB,MACF,KAAK,GACHoyG,EAAUpyG,KAAO,GACjB,MACF,KAAK,GACHoyG,EAAUryG,KAAO,GACjBqyG,EAAUvjI,GAAKujI,EAAiB,MAAE,GAClC62F,EAAUt6N,EAAEyjI,EAAUvjI,IACxB,KAAK,GAGH,OAFAujI,EAAUryG,KAAO,GACjBkpM,EAAUn7N,IACHskI,EAAUpwE,OAAO,IAC1B,KAAK,GACL,IAAK,MACH,OAAOowE,EAAU3iI,OAEvB,GAAG,GAAS,KAAM,CAAC,CAAC,EAAG,GAAI,GAAI,KACjC,CC5YA,SAAS,GAAQsc,GACf0gN,GAAUpgO,KAAK5B,KAAM,KAAMshB,EAC7B,CACA,GAAQyhN,WAAa,CACnB,KAAQ,UACR,SAAY,CACV,UAAY,GAEd,OAAU,CAAC,CACT,KAAQ,IACR,KAAQ,QACR,UAAY,GACX,CACD,KAAQ,IACR,KAAQ,QACR,UAAY,GACX,CACD,KAAQ,OACR,KAAQ,SACR,OAAS,EACT,OAAU,GACT,CACD,KAAQ,SACR,KAAQ,QACR,OAAS,EACT,OAAU,EACV,QAAW,CAAC,EAAE,KAAM,KAAM,CAAC,IAAK,MAChC,QAAW,CACT,KAAQ,SACR,OAAS,EACT,OAAU,IAEX,CACD,KAAQ,KACR,KAAQ,SACR,QAAW,UAGf,IAAI0rE,GAAgB,EAAE,KAAM,IAAK,IAAK,KAwBtC,SAASC,GAAatwR,GAIpB,IAHA,IAAInT,EAAImT,EAAE,GAAG,GACXlT,EAAIkT,EAAE,GAAG,GACPwQ,EAAIxQ,EAAEvd,OAAS,EACZud,EAAEwQ,GAAG,KAAO3jB,GAAKmT,EAAEwQ,GAAG,KAAO1jB,IAAK0jB,GACzC,MAAO,IAAMxQ,EAAE4I,MAAM,EAAG4H,EAAI,GAAGvF,KAAK,KAAO,GAC7C,CA7BA,GAAS,GAAS24M,GAAW,CAC3BluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAAIkO,EAAKriM,EAAEqiM,IAAM,OACfrjN,EAAOm1M,EAAMxpM,OAGf,IAAK3L,IAASA,EAAK7kB,OAAQ,OAAOg6N,EAGlC,IAAI/8M,EAAI4oB,EAAEpC,KACVxmB,EAAIA,EAAI,CAAC,EAAG,EAAGA,EAAE,GAAIA,EAAE,KAAOA,EAAI4oB,EAAE2lL,QAAU,CAACvuM,EAAE,GAAG,GAAIA,EAAE,GAAG,GAAIA,EAAE,GAAG,GAAIA,EAAE,GAAG,IAAM2wR,GAIrF,IAHA,IAAIE,EAAU3uS,KAAKmC,MAAQ2rS,GAASx0Q,KAAK5T,EAAMghB,EAAEz7B,EAAGy7B,EAAEx7B,GAAGyjS,QAAQ7wR,GAGxD5c,EAAI,EAAG0tB,EAAIlJ,EAAK7kB,OAAQK,EAAI0tB,IAAK1tB,EAAG,CAC3C,IAAI0+M,EAAU+uF,EAAQ9C,YAAY3qS,GAClCwkB,EAAKxkB,GAAG6nO,GAAMnpB,EAAU8uF,GAAa9uF,GAAW,IAClD,CACA,OAAOib,EAAMD,OAAOl0L,EAAE00L,YAAYJ,SAAS+N,EAC7C,ICvBF,IAAI6lE,GAAe30R,KAAK+B,GAAK,IAC3BihO,GAAK,GACL/uL,GAAK,KACP,SAAS2gP,KACP,IACEhuR,EACAG,EACAF,EACA6S,EACAD,EACAza,EACAmhE,EAPE91C,EAAO,CAAC,IAAK,KAQfwqQ,EAASC,GACTnzH,EAAQ,GACR52H,EAAS/qC,KAAK+qC,OACd6pP,EAAQ,CAAC,EAgEX,SAASxV,EAAM2V,EAAO9zQ,EAAKrO,GAUzB,IATA,IAMEoiR,EACAriS,EACAC,EAREqiS,EAASh0Q,EAAIjwB,EACfkkS,EAASj0Q,EAAIhwB,EACbkkS,EAAWn1R,KAAK2C,KAAK0nB,EAAK,GAAKA,EAAK,GAAKA,EAAK,GAAKA,EAAK,IACxDxmB,EAAIgxR,EAAOxqQ,GACX0vM,EAAKhvL,IAAW,GAAK,GAAK,EAC1BjhD,GAAKiwO,GAIAi7D,EAAOnxR,EAAE/Z,GAAKiwO,MACnBpnO,IAAOqiS,EAAK,GACZpiS,IAAOoiS,EAAK,KACRh1R,KAAKC,IAAID,KAAKoG,IAAIzT,GAAKqN,KAAKoG,IAAIxT,KAAQuiS,KAG5C,GAFAl0Q,EAAIjwB,EAAIikS,EAAStiS,EACjBsuB,EAAIhwB,EAAIikS,EAAStiS,IACbquB,EAAIjwB,EAAIiwB,EAAIxO,GAAK,GAAKwO,EAAIhwB,EAAIgwB,EAAIvO,GAAK,GAAKuO,EAAIjwB,EAAIiwB,EAAI9Y,GAAKkiB,EAAK,IAAMpJ,EAAIhwB,EAAIgwB,EAAI7Y,GAAKiiB,EAAK,OAE7FzX,IAAWwiR,GAAan0Q,EAAK8zQ,EAAO1qQ,EAAK,QACvCzX,GAAUyiR,GAAap0Q,EAAKrO,IAAS,CAUxC,IATA,IAQEyS,EAREiwQ,EAASr0Q,EAAIq0Q,OACf7hR,EAAIwN,EAAIntB,OAAS,EACjByrP,EAAKl1N,EAAK,IAAM,EAChBwY,EAAK5hB,EAAIjwB,GAAKyiB,GAAK,GACnB66M,EAAU,IAALzrL,EACL0yP,EAAM,GAAKjnE,EACXljN,EAAI6V,EAAI7Y,GAAK6Y,EAAIvO,GACjB1hB,GAAKiwB,EAAIhwB,EAAIgwB,EAAIvO,IAAM6sO,GAAM18M,GAAM,GAE5B51C,EAAI,EAAGA,EAAIme,EAAGne,IAAK,CAC1Bo4B,EAAO,EACP,IAAK,IAAIp+B,EAAI,EAAGA,GAAKwsB,EAAGxsB,IACtB8tS,EAAM/jS,EAAI/J,IAAMo+B,GAAQkwQ,GAAOtuS,EAAIwsB,GAAK4R,EAAOiwQ,EAAOroS,EAAIwmB,EAAIxsB,MAAQqnO,EAAK,GAE7Et9N,GAAKuuP,CACP,CAEA,OADAt+N,EAAIq0Q,OAAS,MACN,CACT,CAGJ,OAAO,CACT,CAyFA,OAlMAV,EAAM/lL,OAAS,WA6Bb,IA5BA,IAAI2mL,EAiDN,SAAoBloS,GAClBA,EAAOwG,MAAQxG,EAAOyG,OAAS,EAC/B,IAAIpI,EAAQqU,KAAK2C,KAAKrV,EAAOod,WAAW,MAAM2tQ,aAAa,EAAG,EAAG,EAAG,GAAG5sQ,KAAK7kB,QAAU,GACtF0G,EAAOwG,OAASkvO,IAAM,GAAKr3O,EAC3B2B,EAAOyG,OAASkgD,GAAKtoD,EACrB,IAAIutB,EAAU5rB,EAAOod,WAAW,MAGhC,OAFAwO,EAAQspO,UAAYtpO,EAAQ4pO,YAAc,MAC1C5pO,EAAQlS,UAAY,SACb,CACLkS,QAASA,EACTvtB,MAAOA,EAEX,CA7DwB+e,CAAW,MAC/BqqR,EAkWN,SAAmBpgR,GACjB,IAAIzQ,EAAI,GACNjd,GAAK,EACP,OAASA,EAAI0tB,GAAGzQ,EAAEjd,GAAK,EACvB,OAAOid,CACT,CAvWcuxR,EAAWprQ,EAAK,IAAM,GAAKA,EAAK,IACxCzX,EAAS,KACT+B,EAAIgtJ,EAAM/6K,OACVK,GAAK,EACLyuS,EAAO,GACPjqR,EAAOk2J,EAAM5qJ,KAAI,SAAUjL,GACzB,MAAO,CACLlF,KAAMA,EAAKkF,GACX/E,KAAMA,EAAK+E,GACXja,MAAO6nB,EAAU5N,GACjB0iC,OAAQ/0B,EAAW3N,GACnB9M,OAAQA,EAAO8M,GACfue,QAASxjB,EAASiF,GAAK,OACvBq0D,QAASA,EAAQr0D,GACjB6pR,KAAM,EACNC,KAAM,EACNztR,GAAI,EACJC,GAAI,EACJqK,GAAI,EACJC,GAAI,EACJmjR,SAAS,EACTP,OAAQ,KACRp3E,MAAOpyM,EAEX,IAAGxT,MAAK,SAAU4L,EAAG8E,GACnB,OAAOA,EAAEqhB,KAAOnmB,EAAEmmB,IACpB,MACOpjC,EAAI0tB,GAAG,CACd,IAAI7I,EAAIL,EAAKxkB,GACb6kB,EAAE9a,EAAIq5B,EAAK,IAAM0gB,IAAW,KAAO,EACnCj/B,EAAE7a,EAAIo5B,EAAK,IAAM0gB,IAAW,KAAO,EACnC+qP,GAAYN,EAAiB1pR,EAAGL,EAAMxkB,GAClC6kB,EAAE+pR,SAAWzW,EAAM2V,EAAOjpR,EAAG8G,KAC/B8iR,EAAKpvS,KAAKwlB,GACN8G,EAAQmjR,GAAYnjR,EAAQ9G,GAAQ8G,EAAS,CAAC,CAChD5hB,EAAG8a,EAAE9a,EAAI8a,EAAE2G,GACXxhB,EAAG6a,EAAE7a,EAAI6a,EAAE4G,IACV,CACD1hB,EAAG8a,EAAE9a,EAAI8a,EAAE3D,GACXlX,EAAG6a,EAAE7a,EAAI6a,EAAE1D,KAGb0D,EAAE9a,GAAKq5B,EAAK,IAAM,EAClBve,EAAE7a,GAAKo5B,EAAK,IAAM,EAEtB,CACA,OAAOqrQ,CACT,EAyDAd,EAAMjzH,MAAQ,SAAUl1I,GACtB,OAAI9lC,UAAUC,QACZ+6K,EAAQl1I,EACDmoQ,GAEAjzH,CAEX,EACAizH,EAAMvqQ,KAAO,SAAUoC,GACrB,OAAI9lC,UAAUC,QACZyjC,EAAO,EAAEoC,EAAE,IAAKA,EAAE,IACXmoQ,GAEAvqQ,CAEX,EACAuqQ,EAAM7tR,KAAO,SAAU0lB,GACrB,OAAI9lC,UAAUC,QACZmgB,EAAOivR,GAAQvpQ,GACRmoQ,GAEA7tR,CAEX,EACA6tR,EAAMl7Q,UAAY,SAAU+S,GAC1B,OAAI9lC,UAAUC,QACZ8yB,EAAYs8Q,GAAQvpQ,GACbmoQ,GAEAl7Q,CAEX,EACAk7Q,EAAMn7Q,WAAa,SAAUgT,GAC3B,OAAI9lC,UAAUC,QACZ6yB,EAAau8Q,GAAQvpQ,GACdmoQ,GAEAn7Q,CAEX,EACAm7Q,EAAM51R,OAAS,SAAUytB,GACvB,OAAI9lC,UAAUC,QACZoY,EAASg3R,GAAQvpQ,GACVmoQ,GAEA51R,CAEX,EACA41R,EAAMhuR,KAAO,SAAU6lB,GACrB,OAAI9lC,UAAUC,QACZggB,EAAOovR,GAAQvpQ,GACRmoQ,GAEAhuR,CAEX,EACAguR,EAAMC,OAAS,SAAUpoQ,GACvB,OAAI9lC,UAAUC,QACZiuS,EAASoB,GAAQxpQ,IAAMA,EAChBmoQ,GAEAC,CAEX,EACAD,EAAM/tR,SAAW,SAAU4lB,GACzB,OAAI9lC,UAAUC,QACZigB,EAAWmvR,GAAQvpQ,GACZmoQ,GAEA/tR,CAEX,EACA+tR,EAAMz0N,QAAU,SAAU1zC,GACxB,OAAI9lC,UAAUC,QACZu5E,EAAU61N,GAAQvpQ,GACXmoQ,GAEAz0N,CAEX,EACAy0N,EAAM7pP,OAAS,SAAUte,GACvB,OAAI9lC,UAAUC,QACZmkD,EAASte,EACFmoQ,GAEA7pP,CAEX,EACO6pP,CACT,CAIA,SAASkB,GAAYN,EAAiB1pR,EAAGL,EAAM8J,GAC7C,IAAIzJ,EAAEwpR,OAAN,CACA,IAAIpqR,EAAIsqR,EAAgBt8Q,QACtBvtB,EAAQ6pS,EAAgB7pS,MAC1Buf,EAAE+jP,UAAU,EAAG,GAAIjsB,IAAM,GAAKr3O,EAAOsoD,GAAKtoD,GAC1C,IAIE8nB,EACAyiR,EACA9qR,EACAnkB,EACAgG,EARE+D,EAAI,EACNC,EAAI,EACJklS,EAAO,EACPxhR,EAAIlJ,EAAK7kB,OAOX,MADE2uB,IACOA,EAAKZ,GAAG,CAMf,GALA7I,EAAIL,EAAK8J,GACTrK,EAAEtC,OACFsC,EAAEnE,KAAO+E,EAAEja,MAAQ,IAAMia,EAAE0iC,OAAS,QAAU1iC,EAAEue,KAAO,GAAK1+B,GAAS,MAAQmgB,EAAE/E,KAC/E0M,EAAIvI,EAAEoO,YAAYxN,EAAElF,KAAO,KAAK9S,MAAQnI,EACxCyf,EAAIU,EAAEue,MAAQ,EACVve,EAAE9M,OAAQ,CACZ,IAAIohQ,EAAKpgQ,KAAKoC,IAAI0J,EAAE9M,OAAS21R,IAC3BjmB,EAAK1uQ,KAAKkC,IAAI4J,EAAE9M,OAAS21R,IACzByB,EAAM3iR,EAAIi7P,EACV2nB,EAAM5iR,EAAI2sP,EACVk2B,EAAMlrR,EAAIsjQ,EACV6nB,EAAMnrR,EAAIg1P,EACZ3sP,EAAIzT,KAAKE,IAAIF,KAAKoG,IAAIgwR,EAAMG,GAAMv2R,KAAKoG,IAAIgwR,EAAMG,IAAQ,IAAQ,GAAK,EACtEnrR,IAAMpL,KAAKE,IAAIF,KAAKoG,IAAIiwR,EAAMC,GAAMt2R,KAAKoG,IAAIiwR,EAAMC,GACrD,MACE7iR,EAAIA,EAAI,IAAQ,GAAK,EAQvB,GANIrI,EAAI+qR,IAAMA,EAAO/qR,GACjBpa,EAAIyiB,GAAKuvN,IAAM,IACjBhyO,EAAI,EACJC,GAAKklS,EACLA,EAAO,GAELllS,EAAIma,GAAK6oC,GAAI,MACjB/oC,EAAE7M,WAAWrN,GAAKyiB,GAAK,IAAM9nB,GAAQsF,GAAKma,GAAK,IAAMzf,GACjDmgB,EAAE9M,QAAQkM,EAAElM,OAAO8M,EAAE9M,OAAS21R,IAClCzpR,EAAEq9O,SAASz8O,EAAElF,KAAM,EAAG,GAClBkF,EAAEq0D,UACJj1D,EAAE1F,UAAY,EAAIsG,EAAEq0D,QACpBj1D,EAAEs9O,WAAW18O,EAAElF,KAAM,EAAG,IAE1BsE,EAAErC,UACFiD,EAAEhY,MAAQ2f,EACV3H,EAAE/X,OAASqX,EACXU,EAAE6pR,KAAO3kS,EACT8a,EAAE8pR,KAAO3kS,EACT6a,EAAE3D,GAAKsL,GAAK,EACZ3H,EAAE1D,GAAKgD,GAAK,EACZU,EAAE2G,IAAM3G,EAAE3D,GACV2D,EAAE4G,IAAM5G,EAAE1D,GACV0D,EAAE+pR,SAAU,EACZ7kS,GAAKyiB,CACP,CAGA,IAFA,IAAI+iR,EAAStrR,EAAEmtQ,aAAa,EAAG,GAAIr1C,IAAM,GAAKr3O,EAAOsoD,GAAKtoD,GAAO8f,KAC/D6pR,EAAS,KACF//Q,GAAM,GAEb,IADAzJ,EAAIL,EAAK8J,IACFsgR,QAAP,CAKA,IAHAK,GADAziR,EAAI3H,EAAEhY,QACK,EACXsX,EAAIU,EAAE1D,GAAK0D,EAAE4G,GAERzrB,EAAI,EAAGA,EAAImkB,EAAI8qR,EAAKjvS,IAAKquS,EAAOruS,GAAK,EAE1C,GAAS,OADT+J,EAAI8a,EAAE6pR,MACS,OACf1kS,EAAI6a,EAAE8pR,KACN,IAAIhvP,EAAO,EACT6vP,GAAW,EACb,IAAKxpS,EAAI,EAAGA,EAAIme,EAAGne,IAAK,CACtB,IAAKhG,EAAI,EAAGA,EAAIwsB,EAAGxsB,IAAK,CACtB,IAAIwF,EAAIypS,EAAMjpS,GAAKhG,GAAK,GACtB6U,EAAI06R,GAAQvlS,EAAIhE,IAAM+1O,IAAM,IAAMhyO,EAAI/J,IAAM,GAAK,GAAK,GAAKA,EAAI,GAAK,EACtEquS,EAAO7oS,IAAMqP,EACb8qC,GAAQ9qC,CACV,CACI8qC,EAAM6vP,EAAUxpS,GAClB6e,EAAE4G,KACFtH,IACAne,IACAgE,IAEJ,CACA6a,EAAE1D,GAAK0D,EAAE4G,GAAK+jR,EACd3qR,EAAEwpR,OAASA,EAAOvoR,MAAM,GAAIjB,EAAE1D,GAAK0D,EAAE4G,IAAMwjR,EA1BnB,CA9DN,CA0FtB,CAGA,SAASd,GAAan0Q,EAAK8zQ,EAAOx1C,GAChCA,IAAO,EASP,IARA,IAOEl6N,EAPEiwQ,EAASr0Q,EAAIq0Q,OACf7hR,EAAIwN,EAAIntB,OAAS,EACjB+uC,EAAK5hB,EAAIjwB,GAAKyiB,GAAK,GACnB66M,EAAU,IAALzrL,EACL0yP,EAAM,GAAKjnE,EACXljN,EAAI6V,EAAI7Y,GAAK6Y,EAAIvO,GACjB1hB,GAAKiwB,EAAIhwB,EAAIgwB,EAAIvO,IAAM6sO,GAAM18M,GAAM,GAE5B51C,EAAI,EAAGA,EAAIme,EAAGne,IAAK,CAC1Bo4B,EAAO,EACP,IAAK,IAAIp+B,EAAI,EAAGA,GAAKwsB,EAAGxsB,IACtB,IAAKo+B,GAAQkwQ,GAAOtuS,EAAIwsB,GAAK4R,EAAOiwQ,EAAOroS,EAAIwmB,EAAIxsB,MAAQqnO,EAAK,IAAMymE,EAAM/jS,EAAI/J,GAAI,OAAO,EAE7F+J,GAAKuuP,CACP,CACA,OAAO,CACT,CACA,SAASw2C,GAAYnjR,EAAQ9G,GAC3B,IAAIvI,EAAKqP,EAAO,GACd9P,EAAK8P,EAAO,GACV9G,EAAE9a,EAAI8a,EAAE2G,GAAKlP,EAAGvS,IAAGuS,EAAGvS,EAAI8a,EAAE9a,EAAI8a,EAAE2G,IAClC3G,EAAE7a,EAAI6a,EAAE4G,GAAKnP,EAAGtS,IAAGsS,EAAGtS,EAAI6a,EAAE7a,EAAI6a,EAAE4G,IAClC5G,EAAE9a,EAAI8a,EAAE3D,GAAKrF,EAAG9R,IAAG8R,EAAG9R,EAAI8a,EAAE9a,EAAI8a,EAAE3D,IAClC2D,EAAE7a,EAAI6a,EAAE1D,GAAKtF,EAAG7R,IAAG6R,EAAG7R,EAAI6a,EAAE7a,EAAI6a,EAAE1D,GACxC,CACA,SAASitR,GAAanxR,EAAG8E,GACvB,OAAO9E,EAAElT,EAAIkT,EAAEiE,GAAKa,EAAE,GAAGhY,GAAKkT,EAAElT,EAAIkT,EAAEuO,GAAKzJ,EAAE,GAAGhY,GAAKkT,EAAEjT,EAAIiT,EAAEkE,GAAKY,EAAE,GAAG/X,GAAKiT,EAAEjT,EAAIiT,EAAEwO,GAAK1J,EAAE,GAAG/X,CAChG,CACA,SAAS6jS,GAAkBzqQ,GACzB,IAAIpgC,EAAIogC,EAAK,GAAKA,EAAK,GACvB,OAAO,SAAUvgC,GACf,MAAO,CAACG,GAAKH,GAAK,IAAMkW,KAAKkC,IAAIpY,GAAIA,EAAIkW,KAAKoC,IAAItY,GACpD,CACF,CAkCA,SAASksS,GAAQlqR,GACf,MAAoB,mBAANA,EAAmBA,EAAI,WACnC,OAAOA,CACT,CACF,CACA,IAAImqR,GAAU,CACZS,YAAa5B,GACb6B,YAxCF,SAA2BtsQ,GACzB,IACE13B,EADO,EACG03B,EAAK,GAAKA,EAAK,GACzBr5B,EAAI,EACJC,EAAI,EACN,OAAO,SAAUnH,GACf,IAAI40M,EAAO50M,EAAI,GAAK,EAAI,EAExB,OAAQkW,KAAK2C,KAAK,EAAI,EAAI+7L,EAAO50M,GAAK40M,EAAO,GAC3C,KAAK,EACH1tM,GAAK2B,EACL,MACF,KAAK,EACH1B,GAZG,EAaH,MACF,KAAK,EACHD,GAAK2B,EACL,MACF,QACE1B,GAlBG,EAqBP,MAAO,CAACD,EAAGC,EACb,CACF,GAkBI,GAAS,CAAC,IAAK,IAAK,OAAQ,WAAY,YAAa,aAAc,SACnE,GAAS,CAAC,OAAQ,OAAQ,SAAU,WAAY,YAAa,cACjE,SAAS2lS,GAAUvvR,GACjB0gN,GAAUpgO,KAAK5B,KAAM6uS,KAASvtR,EAChC,CACAuvR,GAAU9tE,WAAa,CACrB,KAAQ,YACR,SAAY,CACV,UAAY,GAEd,OAAU,CAAC,CACT,KAAQ,OACR,KAAQ,SACR,OAAS,EACT,OAAU,GACT,CACD,KAAQ,OACR,KAAQ,SACR,MAAQ,EACR,QAAW,cACV,CACD,KAAQ,YACR,KAAQ,SACR,MAAQ,EACR,QAAW,UACV,CACD,KAAQ,aACR,KAAQ,SACR,MAAQ,EACR,QAAW,UACV,CACD,KAAQ,WACR,KAAQ,SACR,MAAQ,EACR,QAAW,IACV,CACD,KAAQ,gBACR,KAAQ,SACR,MAAS,WACT,QAAW,CAAC,GAAI,KACf,CACD,KAAQ,SACR,KAAQ,SACR,MAAQ,EACR,QAAW,GACV,CACD,KAAQ,OACR,KAAQ,SACP,CACD,KAAQ,SACR,KAAQ,SACR,OAAU,CAAC,cAAe,gBACzB,CACD,KAAQ,UACR,KAAQ,SACR,MAAQ,GACP,CACD,KAAQ,KACR,KAAQ,SACR,OAAS,EACT,OAAU,EACV,QAAW,MAGf,GAAS8tE,GAAW7uE,GAAW,CAC7BluN,UAAW,SAAmB4yB,EAAGm0L,IAC3Bn0L,EAAEpC,MAAUoC,EAAEpC,KAAK,IAAMoC,EAAEpC,KAAK,IAClC,GAAM,+CAMR,IAAI81L,EAAM1zL,EAAE00L,WACZ,GAAMhB,GAAOS,EAAM8D,QAAQ9D,EAAMmF,UAAY,GAAOtlK,MALpD,SAAcijF,GACZ,IAAIv/H,EAAIsoB,EAAEi3G,GACV,OAAOjR,GAAWtuH,IAAMy8M,EAAMO,SAASh9M,EAAEwhH,OAC3C,IAEA,CACA,IAIEj4E,EAJEjiC,EAAOm1M,EAAM2F,YAAY3F,EAAMuF,QAAQ/uM,OACzCy3F,EAAS9oH,KAAKmC,MACd4mO,EAAKriM,EAAEqiM,IAAM,GACXjoN,EAAW4lB,EAAE5lB,UAAY,GAK7B,GAHA4rH,GAAW5rH,GAAY6mC,EAAQjhB,EAAEoqQ,cAAgBhwR,EAAW,GAASA,GAGjE6mC,EAAO,CACT,IAAIopP,EAAQjwR,EACVkwR,EAAY,GAAM,OAAN,GAAgBz2P,OAAO,GAAO70B,EAAMqrR,IAAQppP,MAAMA,GAChE7mC,EAAW,SAAkB7V,GAC3B,OAAO+lS,EAAUD,EAAM9lS,GACzB,CACF,CACAya,EAAKtd,SAAQ,SAAUrE,GACrBA,EAAEglO,EAAG,IAAMx0L,IACXxwC,EAAEglO,EAAG,IAAMx0L,IACXxwC,EAAEglO,EAAG,IAAM,CACb,IAQA,IALA,IAKgBr7M,EAAG3pB,EALf63K,EAAQ9yD,EAAO8yD,MAAMl2J,GAAM7E,KAAK6lB,EAAE7lB,MAAMyjB,KAAKoC,EAAEpC,MAAQ,CAAC,IAAK,MAAM81C,QAAQ1zC,EAAE0zC,SAAW,GAAG00N,OAAOpoQ,EAAEooQ,QAAU,eAAe71R,OAAOytB,EAAEztB,QAAU,GAAG+H,KAAK0lB,EAAE1lB,MAAQ,cAAc2S,UAAU+S,EAAE/S,WAAa,UAAUD,WAAWgT,EAAEhT,YAAc,UAAU5S,SAASA,GAAUkkC,OAAO,IAAQ8jE,SAC1RxkF,EAAOwkF,EAAOxkF,OAChB13B,EAAK03B,EAAK,IAAM,EAChBz3B,EAAKy3B,EAAK,IAAM,EAChB1V,EAAIgtJ,EAAM/6K,OACHK,EAAI,EAASA,EAAI0tB,IAAK1tB,GAE7B6C,GADA2pB,EAAIkuJ,EAAM16K,IACJi3N,OACJ4Q,EAAG,IAAMr7M,EAAEziB,EAAI2B,EACjB7I,EAAEglO,EAAG,IAAMr7M,EAAExiB,EAAI2B,EACjB9I,EAAEglO,EAAG,IAAMr7M,EAAE1M,KACbjd,EAAEglO,EAAG,IAAMr7M,EAAE4W,KACbvgC,EAAEglO,EAAG,IAAMr7M,EAAE5hB,MACb/H,EAAEglO,EAAG,IAAMr7M,EAAE+6B,OACb1kD,EAAEglO,EAAG,IAAMr7M,EAAEzU,OAEf,OAAO4hN,EAAMD,OAAOR,GAAKY,SAAS+N,EAvCqC,CAwCzE,ICxhBF,IAAIkoE,GAAS,SAAgBriR,GAC3B,OAAO,IAAIsiR,WAAWtiR,EACxB,EACIuiR,GAAU,SAAiBviR,GAC7B,OAAO,IAAIwiR,YAAYxiR,EACzB,EACIyiR,GAAU,SAAiBziR,GAC7B,OAAO,IAAI0wQ,YAAY1wQ,EACzB,EA6FA,SAAS,GAAMA,EAAG7Y,EAAGwsB,GACnB,IAAIyF,GAAQjyB,EAAI,IAAQk7R,GAASl7R,EAAI,MAAUo7R,GAAUE,IAASziR,GAElE,OADI2T,GAAOyF,EAAK9lC,IAAIqgC,GACbyF,CACT,CACA,SAASspQ,GAAUtpS,EAAO9G,EAAGqwS,GAC3B,IAAIz1E,EAAM,GAAK56N,EACf,MAAO,CACLw2C,IAAKokL,EACLnkL,MAAOmkL,EACPn0K,MAAO4pP,EAAMvqR,QACbk6B,OAAQl5C,EAAMk5C,OACdl5C,MAAOA,EAAMA,MACbs8B,KAAMt8B,EAAMs8B,KACZktQ,MAAO,SAAeC,EAAOrwQ,GAC3B,IAMIlgC,EANAwwS,EAAM1xS,KACR2nD,EAAQ+pP,EAAIxwP,OAAOwwP,EAAI/pP,MAAO8pP,EAAMtvS,OACpC+iC,EAAMusQ,EAAMzpS,MACZkyM,EAAKvyJ,EAAM,GACXwyJ,EAAKxyJ,EAAM,GACXv4B,EAAK8V,EAAIrkC,OAEX,IAAKK,EAAI,EAAGA,EAAIg5M,IAAMh5M,EAAGkgC,EAAK8D,EAAIhkC,KAAO46N,EACzC,IAAK56N,EAAIi5M,EAAIj5M,EAAIkuB,IAAMluB,EAAGkgC,EAAK8D,EAAIhkC,KAAO46N,EAC1C,OAAO41E,CACT,EAEJ,CAKA,SAASC,KACP,IAAIC,EAASP,GAAQ,GACnBlvS,EAAQ,GACR8xG,EAAQ,EAmEV,MAAO,CACLwmH,OAnEF,SAAgB55L,EAAKnb,EAAM8c,GACzB,IAAK9c,EAAK7kB,OAAQ,MAAO,GACzB,IAIEgxS,EACAC,EACA5wS,EANEi8C,EAAK82D,EACP7kF,EAAK1J,EAAK7kB,OACVkxS,EAAOV,GAAQjiR,GACb4iR,EAAOvxQ,MAAMrR,GAIjB,IAAKluB,EAAI,EAAGA,EAAIkuB,IAAMluB,EACpB8wS,EAAK9wS,GAAK2/B,EAAInb,EAAKxkB,IACnB6wS,EAAK7wS,GAAKA,EAGZ,GADA8wS,EAkEJ,SAAcxxQ,EAAQx4B,GAMpB,OALAw4B,EAAOjuB,KAAK3Q,KAAKoG,GAAO,SAAUmW,EAAG8E,GACnC,IAAIhY,EAAIu1B,EAAOriB,GACbjT,EAAIs1B,EAAOvd,GACb,OAAOhY,EAAIC,GAAK,EAAID,EAAIC,EAAI,EAAI,CAClC,IChOa,SAAiBmmB,EAAQuP,GACtC,OAAOH,MAAMnH,KAAKsH,GAAM,SAAUC,GAChC,OAAOxP,EAAOwP,EAChB,GACF,CD6NS,CAAQL,EAAQx4B,EACzB,CAzEW,CAAKgqS,EAAMD,GACd50P,EACF00P,EAAO1vS,EACP2vS,EAAOF,EACPzvS,EAAQs+B,MAAM0c,EAAK/tB,GACnBwiR,EAASP,GAAQl0P,EAAK/tB,GAqE5B,SAAeoT,EAAMkhM,EAAQuuE,EAAQ90P,EAAIkT,EAAQ6hP,EAAQ9iR,EAAIjtB,EAAO6F,GAClE,IAEE9G,EAFE26C,EAAK,EACPC,EAAK,EAEP,IAAK56C,EAAI,EAAG26C,EAAKsB,GAAMrB,EAAK1sB,IAAMluB,EAC5BwiO,EAAO7nL,GAAMwU,EAAOvU,IACtB35C,EAAMjB,GAAKwiO,EAAO7nL,GAClB7zC,EAAM9G,GAAK+wS,EAAOp2P,OAElB15C,EAAMjB,GAAKmvD,EAAOvU,GAClB9zC,EAAM9G,GAAKgxS,EAAOp2P,KAAQtZ,GAG9B,KAAOqZ,EAAKsB,IAAMtB,IAAM36C,EACtBiB,EAAMjB,GAAKwiO,EAAO7nL,GAClB7zC,EAAM9G,GAAK+wS,EAAOp2P,GAEpB,KAAOC,EAAK1sB,IAAM0sB,IAAM56C,EACtBiB,EAAMjB,GAAKmvD,EAAOvU,GAClB9zC,EAAM9G,GAAKgxS,EAAOp2P,GAAMtZ,CAE5B,CAzFM,CAAMA,EAAMqvQ,EAAMC,EAAM30P,EAAI60P,EAAMD,EAAM3iR,EAAIjtB,EAAOyvS,OAC9C,CACL,GAAIpvQ,EAAO,EAAG,IAAKthC,EAAI,EAAGA,EAAIkuB,IAAMluB,EAClC6wS,EAAK7wS,IAAMshC,EAEbrgC,EAAQ6vS,EACRJ,EAASG,CACX,CAEA,OADA99L,EAAQ92D,EAAK/tB,EACN,CACLpnB,MAAO+pS,EACP5vS,MAAO6vS,EAEX,EAoCE7+R,OAnCF,SAAgBq+E,EAAKxgE,GAEnB,IACIkU,EAAKhkC,EAAGgG,EADR0nB,EAAIqlF,EAIR,IAAK/yG,EAAI,GAAI8vB,EAAI4gR,EAAO1wS,KAAOA,EAAI0tB,IAAK1tB,GAGxC,IAAKgG,EAAIhG,EAAGA,EAAI0tB,IAAK1tB,EACd8vB,EAAIkU,EAAM0sQ,EAAO1wS,MACpB0wS,EAAO1qS,GAAKg+B,EACZ/iC,EAAM+E,GAAK/E,EAAMjB,KACfgG,GAGN+sG,EAAQrlF,EAAI4iE,CACd,EAmBEtwC,OAbF,SAAgByG,EAAOplB,GACrB,IAAI3T,EAOJ,OANI2T,EACF3T,EAAI2T,EAAM1hC,QAEV0hC,EAAQpgC,EACRysB,EAAIqlF,GAEC,CAAC0rI,GAAWp9M,EAAOolB,EAAM,GAAI,EAAG/4B,GAAI8wN,GAAYn9M,EAAOolB,EAAM,GAAI,EAAG/4B,GAC7E,EAKEujR,QAnBF,SAAiBnhR,GACf,IAAK,IAAI9vB,EAAI,EAAG0tB,EAAIqlF,EAAO/yG,EAAI0tB,IAAK1tB,EAClC0wS,EAAO1wS,GAAK8vB,EAAI4gR,EAAO1wS,GAE3B,EAgBE8G,MAAO,WACL,OAAO4pS,CACT,EACAttQ,KAAM,WACJ,OAAO2vE,CACT,EAEJ,CAuCA,SAASm+L,GAAY9wR,GACnB0gN,GAAUpgO,KAAK5B,KAlPjB,WACE,IAAI+N,EAAQ,EACV6/N,EAAQ,GACRykE,EAAQhB,GAAQ,GAChBiB,EAAQ,GAAM,EAAGvkS,GACjB49N,EAAQ,GAAM,EAAG59N,GACnB,MAAO,CACL2X,KAAM,WACJ,OAAOkoN,CACT,EACA/sL,KAAM,WACJ,OAAOwxP,EAuEb,SAAkB9vQ,EAAO1hC,EAAQmnC,GAC/B,OAAIzF,EAAM1hC,QAAUA,EAAe0hC,IACnCyF,EAAOA,GAAQ,IAAIzF,EAAMz9B,YAAYjE,IAChCqB,IAAIqgC,GACFyF,EACT,CA5EqBuqQ,CAASF,EAAOzkE,EAAM/sO,OACvC,EACA2Q,IAAK,SAAa+wB,GAChB,IAAK,IAA+Cx+B,EAA3C7C,EAAI,EAAGgG,EAAI0mO,EAAM/sO,OAAQ+tB,EAAI2T,EAAM1hC,OAAWK,EAAI0tB,IAAK1tB,GAC9D6C,EAAIw+B,EAAMrhC,IACR0wS,OAAS1qS,IACX0mO,EAAMrtO,KAAKwD,EAEf,EACAoP,OAAQ,SAAgBq+E,EAAKxgE,GAE3B,IAGIjtB,EAAG7C,EAAGgG,EAHN0nB,EAAIg/M,EAAM/sO,OACZmnC,EAAOvH,MAAM7R,EAAI4iE,GACjB2gN,EAAUvkE,EAIZ,IAAK1sO,EAAI,GAAI8vB,EAAI9vB,IAAMA,EAAI0tB,IAAK1tB,EAC9B8mC,EAAK9mC,GAAK0sO,EAAM1sO,GAChBixS,EAAQjxS,GAAKA,EAIf,IAAKgG,EAAIhG,EAAGA,EAAI0tB,IAAK1tB,EACnB6C,EAAI6pO,EAAM1sO,GACL8vB,EAAI9vB,GAOPixS,EAAQjxS,IAAM,GANdixS,EAAQjxS,GAAKgG,EACborS,EAAMprS,GAAKorS,EAAMpxS,GACjByqO,EAAMzkO,GAAKykO,EAAMzqO,GACjB8mC,EAAK9gC,GAAKnD,EACVA,EAAE6tS,OAAS1qS,KAIborS,EAAMpxS,GAAK,EAIb,OADA0sO,EAAQ5lM,EACDmqQ,CACT,EACA7tQ,KAAM,WACJ,OAAOspM,EAAM/sO,MACf,EACAugC,KAAM,WACJ,OAAOkxQ,CACT,EACAh9Q,KAAM,WACJ,OAAOq2M,CACT,EACAz1K,MAAO,SAAexvD,GACpB,OAAOilO,EAAMjlO,GAAK4rS,EAAM5rS,EAC1B,EACAi3D,IAAK,WACH,OAAO5vD,EAAQ,IAAQ,IAAOA,EAAQ,MAAU,MAAS,UAC3D,EACA7L,IAAK,SAAawE,EAAGgxC,GACnB46P,EAAM5rS,IAAMgxC,CACd,EACAnoC,MAAO,SAAe7I,EAAGgxC,GACvB46P,EAAM5rS,KAAOgxC,CACf,EACAosI,OAAQ,SAAgBl1J,EAAG7Y,IAErB6Y,EADI0jR,EAAMzxS,QACDkV,EAAIhI,KACfA,EAAQkM,KAAKE,IAAIpE,EAAGhI,GACpBukS,EAAQ,GAAM1jR,EAAG7gB,EAAOukS,GACxB3mE,EAAQ,GAAM/8M,EAAG7gB,GAErB,EAEJ,CAiKuBykS,GAAWlxR,GAChCthB,KAAKyyS,SAAW,KAChBzyS,KAAKsrO,MAAQ,IACf,CAqXA,SAASonE,GAAcpxR,GACrB0gN,GAAUpgO,KAAK5B,KAAM,KAAMshB,EAC7B,CAtXA8wR,GAAYrvE,WAAa,CACvB,KAAQ,cACR,SAAY,CAAC,EACb,OAAU,CAAC,CACT,KAAQ,SACR,KAAQ,QACR,OAAS,EACT,UAAY,GACX,CACD,KAAQ,QACR,KAAQ,QACR,OAAS,EACT,UAAY,EACZ,QAAW,CACT,KAAQ,SACR,OAAS,EACT,OAAU,MAIhB,GAASqvE,GAAapwE,GAAW,CAC/BluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,OAAK76N,KAAKsrO,MAGG5kM,EAAE00L,SAAS,WAAa10L,EAAEk5F,OAAOllE,MAAK,SAAUr3D,GACzD,OAAOw3N,EAAMO,SAAS/3N,EAAEu8H,OAC1B,IACc5/H,KAAK2yS,OAAOjsQ,EAAGm0L,GAAS76N,KAAK4yS,KAAKlsQ,EAAGm0L,GAL5C76N,KAAKsK,KAAKo8B,EAAGm0L,EAOxB,EACAvwN,KAAM,SAAco8B,EAAGm0L,GAWrB,IAVA,IAMEh6L,EACA74B,EAPE43H,EAASl5F,EAAEk5F,OACb2xK,EAAQ7qQ,EAAE6qQ,MACVz9B,EAAU9zQ,KAAKyyS,SAAW,CAAC,EAC3BlmE,EAAOvsO,KAAKsrO,MAAQ,GACpBv1N,EAAIw7R,EAAM1wS,OACRK,EAAI,EAKDA,EAAI6U,IAAK7U,EAEd8G,EAAQ8rQ,EADRjzO,EAAM++F,EAAO1+H,GAAGo2M,SACSw8D,EAAQjzO,GAAO8wQ,MACxCplE,EAAKhsO,KAAK+wS,GAAUtpS,EAAO9G,EAAGqwS,EAAMrwS,KAEtC,OAAOlB,KAAK4yS,KAAKlsQ,EAAGm0L,EACtB,EACA83E,OAAQ,SAAgBjsQ,EAAGm0L,GACzB,IAaIrpN,EAAKxJ,EAAO64B,EAAK4sM,EAAMolE,EAAQC,EAAQ5xS,EAAG0tB,EAAGvrB,EAb7Cq5C,EAASm+K,EAAM2F,cAAcD,OAC/B3gG,EAASl5F,EAAEk5F,OACX2xK,EAAQ7qQ,EAAE6qQ,MACVz9B,EAAU9zQ,KAAKyyS,SACflmE,EAAOvsO,KAAKsrO,MACZynE,EAAO/yS,KAAKmC,MACZi/B,EAAO2xQ,EAAK3xQ,OACZ9L,EAAOy9Q,EAAKz9Q,OACZqoC,EAAMo1O,EAAKp1O,MACXz6C,EAAMw5B,EAAOy9K,IAAMz9K,EAAOlrC,IAC1B4oN,EAAM19K,EAAO09K,IACbrkN,EAAIw7R,EAAM1wS,OACV2sO,EAAO,CAAC,EAiBV,GAbAl4M,EAAKpzB,IAAIk/B,GAGLy5L,EAAMV,IAAIt5N,SACZgyS,EAAS7yS,KAAKmT,OAAOuzB,EAAGm0L,EAAOn+K,IAI7Bm+K,EAAMrpN,IAAI3Q,QACZkyS,EAAKvhS,IAAIqpN,EAAMrpN,KAIbqpN,EAAMT,IAAIv5N,OAEZ,IADAiyS,EAAS,CAAC,EACa5xS,EAAI,EAAG0tB,GAAzB6+M,EAAO5S,EAAMT,KAAqBv5N,OAAQK,EAAI0tB,IAAK1tB,EACtD4xS,EAAOrlE,EAAKvsO,GAAG0wS,QAAU,EAK7B,IAAK1wS,EAAI,EAAGA,EAAI6U,IAAK7U,EACnBmC,EAAIu8H,EAAO1+H,KACNqrO,EAAKrrO,IAAMwlC,EAAE00L,SAAS,SAAUl6N,IAAM25N,EAAMO,SAAS/3N,EAAEu8H,YAEpDpuH,EAAMg8N,EADZ3sM,EAAMx9B,EAAEi0M,UAENw8D,EAAQjzO,GAAO74B,EAAQ2pS,KACvBnkE,EAAK3sM,GAAOrvB,EAAMxJ,EAAMyyN,OAAOp3N,EAAGw3N,EAAMxpM,OAAQ,IAElDk7M,EAAKrrO,GAAKowS,GAAUtpS,EAAO9G,EAAGqwS,EAAMrwS,IAAIswS,MAAMhgS,EAAK4vB,IAOvD,IAAKlgC,EAAI,EAAG0tB,EAAImkR,EAAKrtR,OAAO7kB,OAAQK,EAAI0tB,IAAK1tB,EACvC2xS,EAAO3xS,KAGAo0B,EAAKp0B,KAAOkgC,EAAKlgC,GAE1BgiB,EAAI3iB,KAAKW,GACA4xS,EAAO5xS,IAAMkgC,EAAKlgC,KAAOy8D,GAElCy8J,EAAI75N,KAAKW,IAIb,OADA6xS,EAAK39M,MAAQ,GAAKr/E,GAAK,EAChB2mC,CACT,EACAk2P,KAAM,SAAelsQ,EAAGm0L,GACtB,IAAIn+K,EAASm+K,EAAM2F,cAAcD,OAC/BxqN,EAAI/V,KAAKsrO,MAAMzqO,OACbu0F,EAAO,EAiBX,OAhBIylI,EAAMV,IAAIt5N,SACZb,KAAKmT,OAAOuzB,EAAGm0L,EAAOn+K,GACtB04C,IAAS,GAAKr/E,GAAK,GAEjB2wB,EAAE00L,SAAS,WAAa10L,EAAE00L,SAAS,YACrChmI,GAAQp1F,KAAKwF,OAAOkhC,EAAGm0L,EAAOn+K,IAE5Bm+K,EAAMrpN,IAAI3Q,SACZb,KAAKy6N,OAAO/zL,EAAGm0L,EAAOn+K,GACtB04C,IAAS,GAAKr/E,GAAK,GAEjB8kN,EAAMT,IAAIv5N,SACZb,KAAK+xB,OAAO8oM,EAAOn+K,GACnB04C,IAAS,GAAKr/E,GAAK,GAErB/V,KAAKmC,MAAMizF,KAAOA,EACX14C,CACT,EACA+9K,OAAQ,SAAgB/zL,EAAGm0L,EAAOn+K,GAChC,IAUEx1C,EACA25B,EACArvB,EAZEupN,EAASF,EAAMrpN,IACjBuhS,EAAO/yS,KAAKmC,MACZoqO,EAAOvsO,KAAKsrO,MACZwoC,EAAU9zQ,KAAKyyS,SACf7yK,EAASl5F,EAAEk5F,OACX4tG,EAAO,CAAC,EACRtqN,EAAMw5B,EAAOlrC,IACbod,EAAImkR,EAAKzuQ,OAASy2L,EAAOl6N,OACzBkV,EAAIw2N,EAAK1rO,OACP6F,EAAIqsS,EAAKzuQ,OAMbyuQ,EAAKjvH,OAAOl1J,EAAG7Y,GACfg9R,EAAKvhS,IAAIupN,GACT,IAAI35L,EAAO2xQ,EAAK3xQ,OACd9L,EAAOy9Q,EAAKz9Q,OACZqoC,EAAMo1O,EAAKp1O,MAGb,IAAKz2D,EAAI,EAAGA,EAAI6O,IAAK7O,EAEnBsK,EAAMg8N,EADN3sM,EAAM++F,EAAO14H,GAAGowM,SACIk2B,EAAK3sM,GAAOizO,EAAQjzO,GAAK45L,OAAO76F,EAAO14H,GAAI6zN,EAAQr0N,IACvE6lO,EAAKrlO,GAAGsqS,MAAMhgS,EAAK4vB,GAIrB,KAAO16B,EAAIkoB,IAAKloB,EACd4uB,EAAK5uB,GAAKi3D,EACNv8B,EAAK16B,KAAOi3D,GAAKz6C,EAAI3iB,KAAKmG,EAElC,EACAqrB,OAAQ,SAAgB8oM,EAAOn+K,GAC7B,IAKIx7C,EAAG0tB,EAAGloB,EALNwc,EAAMw5B,EAAO09K,IACf24E,EAAO/yS,KAAKmC,MACZi/B,EAAO2xQ,EAAK3xQ,OACZu8B,EAAMo1O,EAAKp1O,MACXo9J,EAASF,EAAMT,IAEjB,IAAKl5N,EAAI,EAAG0tB,EAAImsM,EAAOl6N,OAAQK,EAAI0tB,IAAK1tB,EAElCkgC,EADJ16B,EAAIq0N,EAAO75N,GAAG0wS,UACEj0O,GAAKz6C,EAAI3iB,KAAKmG,EAElC,EACAyM,OAAQ,SAAgBuzB,EAAGm0L,EAAOn+K,GAChC,IAQIx7C,EAAG0tB,EAAGloB,EAAGrD,EARTywQ,EAAU9zQ,KAAKyyS,SACjBM,EAAO/yS,KAAKmC,MACZi/B,EAAO2xQ,EAAK3xQ,OACZ9L,EAAOy9Q,EAAKz9Q,OACZqoC,EAAMo1O,EAAKp1O,MACX3sC,EAAM,CAAC,EACP9N,EAAMw5B,EAAOy9K,IACbY,EAASF,EAAMV,IAIjB,IAAKj5N,EAAI,EAAG0tB,EAAImsM,EAAOl6N,OAAQK,EAAI0tB,IAAK1tB,EAEtC8vB,EADAtqB,EAAIq0N,EAAO75N,GAAG0wS,QACL,EACTt8Q,EAAK5uB,GAAKrD,EAAI+9B,EAAK16B,GACnB06B,EAAK16B,GAAKi3D,EACNt6D,IAAMs6D,GAAKz6C,EAAI3iB,KAAKmG,GAI1B,IAAKA,KAAKotQ,EACRA,EAAQptQ,GAAGyM,OAAOyb,EAAGoC,GAGvB,OADAhxB,KAAKmyS,QAAQt3E,EAAOjsM,EAAGoC,GAChBA,CACT,EAEAmhR,QAAS,SAAiBt3E,EAAOrpI,EAAKxgE,GACpC,IAAI8iP,EAAU9zQ,KAAKyyS,SACjBM,EAAO/yS,KAAKmC,MACd04N,EAAMkG,UAAS,WACb,IAAIiyE,EAAWD,EAAK5/R,OAAOq+E,EAAKxgE,GAChC,IAAK,IAAI6P,KAAOizO,EAASA,EAAQjzO,GAAKsxQ,QAAQa,EAChD,GACF,EACAxtS,OAAQ,SAAgBkhC,EAAGm0L,EAAOn+K,GAChC,IAKEx7C,EACAqkB,EANEgnN,EAAOvsO,KAAKsrO,MACdimE,EAAQ7qQ,EAAE6qQ,MACV71E,EAAQb,EAAMa,MACd3lN,EAAIw2N,EAAK1rO,OACPu0F,EAAO,EAMX,IADA14C,EAAO86K,QAAU,EACZjyM,EAAI,EAAGA,EAAIxP,IAAKwP,EACfmhB,EAAE00L,SAAS,QAAS71M,KACtBrkB,EAAIqkB,IACF6vE,GAGN,GAAa,IAATA,EAEFA,EAAOm3I,EAAKrrO,GAAGw2C,IACf13C,KAAKizS,aAAa1mE,EAAKrrO,GAAIqwS,EAAMrwS,GAAIw7C,EAAOlrC,IAAKkrC,EAAOy9K,UAGxD,IAAK50M,EAAI,EAAG6vE,EAAO,EAAG7vE,EAAIxP,IAAKwP,EACxBmhB,EAAE00L,SAAS,QAAS71M,KACzB6vE,GAAQm3I,EAAKhnN,GAAGmyB,IAChB13C,KAAKkzS,aAAa3mE,EAAKhnN,GAAIgsR,EAAMhsR,GAAIm2M,EAAOh/K,EAAOlrC,KACnDkrC,EAAOy9K,IAAMz9K,EAAOlrC,KAIxB,OAAO4jF,CACT,EACA89M,aAAc,SAAsBxB,EAAKH,EAAO71E,EAAOx4M,GACrD,IAYIhiB,EAAGgG,EAAGR,EAZNqsS,EAAO/yS,KAAKmC,MACd0+C,EAAOkyP,EAAKlyP,OACZzf,EAAO2xQ,EAAK3xQ,OACZ9L,EAAOy9Q,EAAKz9Q,OACZttB,EAAQ0pS,EAAI1pS,QACZmrS,EAAMzB,EAAIxwP,OAAOwwP,EAAI/pP,OACrBA,EAAQ+pP,EAAIxwP,OAAOqwP,GACnB6B,EAAMzrP,EAAM,GACZ0rP,EAAM1rP,EAAM,GACZ2rP,EAAMH,EAAI,GACVI,EAAMJ,EAAI,GACVz7P,EAAMg6P,EAAIh6P,IAIZ,GAAI07P,EAAME,EACR,IAAKpyS,EAAIkyS,EAAKlsS,EAAI+S,KAAKC,IAAIo5R,EAAKD,GAAMnyS,EAAIgG,IAAKhG,EAEzC2/C,EADJn6C,EAAIsB,EAAM9G,MACMw6N,IACdpmM,EAAK5uB,GAAK06B,EAAK16B,GACfm6C,EAAKn6C,GAAKg1N,EACVx4M,EAAI3iB,KAAKmG,IAEX06B,EAAK16B,IAAMgxC,OAER,GAAI07P,EAAME,EACf,IAAKpyS,EAAIoyS,EAAKpsS,EAAI+S,KAAKC,IAAIk5R,EAAKG,GAAMryS,EAAIgG,IAAKhG,EAEzC2/C,EADJn6C,EAAIsB,EAAM9G,MACMw6N,IACdpmM,EAAK5uB,GAAK06B,EAAK16B,GACfm6C,EAAKn6C,GAAKg1N,EACVx4M,EAAI3iB,KAAKmG,IAEX06B,EAAK16B,IAAMgxC,EAKf,GAAI27P,EAAME,EACR,IAAKryS,EAAI+Y,KAAKE,IAAIi5R,EAAKG,GAAMrsS,EAAImsS,EAAKnyS,EAAIgG,IAAKhG,EAEzC2/C,EADJn6C,EAAIsB,EAAM9G,MACMw6N,IACdpmM,EAAK5uB,GAAK06B,EAAK16B,GACfm6C,EAAKn6C,GAAKg1N,EACVx4M,EAAI3iB,KAAKmG,IAEX06B,EAAK16B,IAAMgxC,OAER,GAAI27P,EAAME,EACf,IAAKryS,EAAI+Y,KAAKE,IAAIm5R,EAAKD,GAAMnsS,EAAIqsS,EAAKryS,EAAIgG,IAAKhG,EAEzC2/C,EADJn6C,EAAIsB,EAAM9G,MACMw6N,IACdpmM,EAAK5uB,GAAK06B,EAAK16B,GACfm6C,EAAKn6C,GAAKg1N,EACVx4M,EAAI3iB,KAAKmG,IAEX06B,EAAK16B,IAAMgxC,EAGfg6P,EAAI/pP,MAAQ4pP,EAAMvqR,OACpB,EACAisR,aAAc,SAAsBvB,EAAKH,EAAO//R,EAAK2oN,GACnD,IAUIj5N,EAAGgG,EAAGR,EATR06B,EADSphC,KAAKmC,MACFi/B,OACZp5B,EAAQ0pS,EAAI1pS,QACZmrS,EAAMzB,EAAIxwP,OAAOwwP,EAAI/pP,OACrBA,EAAQ+pP,EAAIxwP,OAAOqwP,GACnB6B,EAAMzrP,EAAM,GACZ0rP,EAAM1rP,EAAM,GACZ2rP,EAAMH,EAAI,GACVI,EAAMJ,EAAI,GACVz7P,EAAMg6P,EAAIh6P,IAIZ,GAAI07P,EAAME,EACR,IAAKpyS,EAAIkyS,EAAKlsS,EAAI+S,KAAKC,IAAIo5R,EAAKD,GAAMnyS,EAAIgG,IAAKhG,EAE7CkgC,EADA16B,EAAIsB,EAAM9G,KACCw2C,EACXlmC,EAAIjR,KAAKmG,QAEN,GAAI0sS,EAAME,EACf,IAAKpyS,EAAIoyS,EAAKpsS,EAAI+S,KAAKC,IAAIk5R,EAAKG,GAAMryS,EAAIgG,IAAKhG,EAE7CkgC,EADA16B,EAAIsB,EAAM9G,KACCw2C,EACXyiL,EAAI55N,KAAKmG,GAKb,GAAI2sS,EAAME,EACR,IAAKryS,EAAI+Y,KAAKE,IAAIi5R,EAAKG,GAAMrsS,EAAImsS,EAAKnyS,EAAIgG,IAAKhG,EAE7CkgC,EADA16B,EAAIsB,EAAM9G,KACCw2C,EACXlmC,EAAIjR,KAAKmG,QAEN,GAAI2sS,EAAME,EACf,IAAKryS,EAAI+Y,KAAKE,IAAIm5R,EAAKD,GAAMnsS,EAAIqsS,EAAKryS,EAAIgG,IAAKhG,EAE7CkgC,EADA16B,EAAIsB,EAAM9G,KACCw2C,EACXyiL,EAAI55N,KAAKmG,GAGbgrS,EAAI/pP,MAAQ4pP,EAAMvqR,OACpB,IAeF0rR,GAAc3vE,WAAa,CACzB,KAAQ,gBACR,SAAY,CAAC,EACb,OAAU,CAAC,CACT,KAAQ,SACR,KAAQ,SACR,UAAY,EACZ,YAAe,kDACd,CACD,KAAQ,SACR,KAAQ,SACR,UAAY,EACZ,YAAe,4DAGnB,GAAS2vE,GAAe1wE,GAAW,CACjCluN,UAAW,SAAmB4yB,EAAGm0L,GAC/B,IAAI24E,IAAW9sQ,EAAE8sQ,QAAU,GAEzB5T,EAASl5P,EAAEn2B,OACX6kF,EAAOwqM,EAAOxqM,KAGhB,GAAwB,IAAnBA,EAAOo+M,GAAe,OAAO34E,EAAM4B,gBACxC,IAAI//K,EAASm+K,EAAM0F,KAAK1F,EAAMqF,KAC5Bx6M,EAAOk6Q,EAAOl6Q,OACd0b,EAAOw+P,EAAOx+P,OACd9L,EAAOsqQ,EAAOtqQ,OACdm+Q,EAAO,SAAc/sS,GACnB,OAAS06B,EAAK16B,GAAK8sS,EAAoB,KAAV9tR,EAAKhf,EACpC,EA8BF,OA3BAg2C,EAAOnsC,OAAOmsC,EAAOoiL,IAAK20E,GAMpBr+M,EAAOA,EAAO,GAQlB14C,EAAOnsC,OAAOmsC,EAAOkiL,KAAK,SAAUl4N,GAClC,IAAIye,EAAIic,EAAK16B,GAAK8sS,EAElB,OADOruR,GAAKA,EAAImQ,EAAK5uB,GAAK8sS,EACf9tR,EAAKhf,GAAK,IACvB,IACAg2C,EAAOnsC,OAAOmsC,EAAOmiL,KAAK,SAAUn4N,GAClC,IAAIye,EAAIic,EAAK16B,GAAK8sS,EAElB,OADMruR,KAAOA,EAAKA,EAAImQ,EAAK5uB,GAAK8sS,GACrB9tR,EAAKhf,GAAK,IACvB,MAfAg2C,EAAOnsC,OAAOmsC,EAAOkiL,IAAK60E,GAC1B/2P,EAAOnsC,OAAOmsC,EAAOmiL,KAAK,SAAUn4N,GAClC,OAAQ06B,EAAK16B,GAAK8sS,KAAYp+M,EAAO1vE,EAAKhf,GAAK,IACjD,KAgBKg2C,EAAOnsC,OAAOmsC,EAAO0jL,QAAQ,SAAUr8N,GAC5C,OAAO0vS,EAAK1vS,EAAE6tS,OAChB,GACF,IElrBF,IAAI,GAAc,6BAGd,GAAa,kGACb,GAAgB,8DAGhB,GAAe,UAoCnB,SAAS,GAAKlzO,EAAIC,GAChB,OAAO,GAAMt9D,MAAMrB,KAAMY,UAC3B,CAWA,SAAS,KAkBP,OAjBA,GAAQ,GAAgC,UAAyB,SAASorE,EAASupJ,EAAKpwL,GACtF,IAAI+nH,EAAKvzF,EACT,OAAO,UAAyB,SAAmBsS,GACjD,cAAkBA,EAAU32C,KAAO22C,EAAU12C,MAC3C,KAAK,EAEH,OADA02C,EAAU12C,KAAO,EACVv1B,KAAKw1N,SAASD,EAAKpwL,GAC5B,KAAK,EAGH,OAFA+nH,EAAMjhF,EAAUpf,KAChB8M,EAAMuzF,EAAI5tE,KACHrT,EAAU9W,OAAO,SAAU+3F,EAAIuoE,UAAYz1N,KAAKo5D,KAAKO,GAAO35D,KAAK01N,KAAK/7J,EAAKx0B,IACpF,KAAK,EACL,IAAK,MACH,OAAO8mC,EAAUjnE,OAEvB,GAAGgnE,EAAUhsE,KACf,MACaqB,MAAMrB,KAAMY,UAC3B,CACA,SAAS,GAAS6kI,EAAKC,GACrB,OAAO,GAAUrkI,MAAMrB,KAAMY,UAC/B,CASA,SAAS,KAuEP,OAtEA,GAAY,GAAgC,UAAyB,SAAS8mI,EAAS6tF,EAAKpwL,GAC1F,IAAIywL,EAAYhjN,EAAQwoD,EAAQy6J,EAAUrzL,EAAMszL,EAAWC,EAC3D,OAAO,UAAyB,SAAmBpuF,GACjD,cAAkBA,EAAUryG,KAAOqyG,EAAUpyG,MAC3C,KAAK,EA2DH,OA1DA4P,EAAU2Q,GAAO,CAAC,EAAG91C,KAAKmlC,QAASA,GACnCywL,EAAa51N,KAAK41N,WAAYhjN,EAAS,CACrC0sE,KAAM,MAERw2I,EAAY,GAAWxwN,KAAKiwN,EAAI3vM,QAAQ,GAAe,KAC5C,MAAP2vM,GAA8B,iBAARA,GAAqBO,GAC7C,GAAM,kCAAoC,GAAYP,IAExDQ,EAAc,GAAYzwN,KAAKiwN,IAC1B/yL,EAAO2C,EAAQ6wL,WAAaD,IAE1BR,EAAIh0I,WAAW,MAAS/+C,EAAKw4B,SAAS,OACzCu6J,EAAM,IAAMA,GAEdA,EAAM/yL,EAAO+yL,GAIfM,GAAYz6J,EAASm6J,EAAIh0I,WAAW,MAAmC,SAAjBp8C,EAAQg2H,MAAoC,SAAjBh2H,EAAQg2H,OAAoB46D,GAAeH,EACxHx6J,EAEFm6J,EAAMA,EAAIvuM,MAAM,GAAanmB,QACpB00N,EAAIh0I,WAAW,QACQ,SAA5Bp8C,EAAQ8wL,iBAEVV,EAAMA,EAAIvuM,MAAM,GAChB6uM,GAAW,GAGXN,GAAOpwL,EAAQ8wL,iBAAmB,QAAU,IAAMV,GAKtD/9M,OAAOoxB,eAAeh2B,EAAQ,YAAa,CACzCzQ,QAAS0zN,IAIXjjN,EAAO0sE,KAAOi2I,EAGVpwL,EAAQz8B,SACVkK,EAAOlK,OAASy8B,EAAQz8B,OAAS,IAI/By8B,EAAQ21E,MACVloG,EAAOkoG,IAAM31E,EAAQ21E,IAAM,IAKL,UAApB31E,EAAQhS,SAAuBgS,EAAQm8C,cACzC1uE,EAAO0uE,YAAcn8C,EAAQm8C,YAAc,IAItCqmD,EAAUxyE,OAAO,SAAUviD,GACpC,KAAK,GACL,IAAK,MACH,OAAO+0H,EAAU3iI,OAEvB,GAAG0iI,EAAU1nI,KACf,KACO,GAAUqB,MAAMrB,KAAMY,UAC/B,CACA,SAAS,GAAWu1N,GAClB,OAAOA,EAAK,SAAU78J,GACpB,OAAO,IAAI1yB,SAAQ,SAAU81B,EAAQp1B,GACnC6uL,EAAGC,SAAS98J,GAAU,SAAUlM,EAAO1nC,GACjC0nC,EAAO9lB,EAAO8lB,GAAYsP,EAAOh3C,EACvC,GACF,GACF,EAAI,EACN,CAKA,SAAS,KACP,OAAO,GAAYrkB,MAAMrB,KAAMY,UACjC,CASA,SAAS,KAYP,OAXA,GAAc,GAAgC,UAAyB,SAASinI,IAC9E,OAAO,UAAyB,SAAmBC,GACjD,cAAkBA,EAAUxyG,KAAOwyG,EAAUvyG,MAC3C,KAAK,EACH,GAAM,0BACR,KAAK,EACL,IAAK,MACH,OAAOuyG,EAAU9iI,OAEvB,GAAG6iI,EACL,MACmBxmI,MAAMrB,KAAMY,UACjC,CACA,SAAS,GAAW41N,GAClB,OAAOA,EAAqB,WAC1B,IAAI3kK,EAAO,GAAgC,UAAyB,SAASoM,EAAQtE,EAAKx0B,GACxF,IAAI+nH,EAAKvkJ,EAAM6vD,EACf,OAAO,UAAyB,SAAkBgG,GAChD,cAAkBA,EAASlpC,KAAOkpC,EAASjpC,MACzC,KAAK,EAIH,OAHA23H,EAAMp3G,GAAO,CAAC,EAAG91C,KAAKmlC,QAAQuwL,KAAMvwL,GACpCx8B,EAAOw8B,GAAWA,EAAQqzB,SAC1BgG,EAASjpC,KAAO,EACTihM,EAAM78J,EAAKuzF,GACpB,KAAK,EAEH,OADA10F,EAAWgG,EAAS3R,KACb2R,EAASrJ,OAAO,SAAWqD,EAASwJ,GAAyD0qE,GAAWl0E,EAAS7vD,IAAS6vD,EAAS7vD,KAAU6vD,EAAS33C,OAA7G,GAAM23C,EAASiB,OAAS,GAAKjB,EAASgjD,aACxF,KAAK,EACL,IAAK,MACH,OAAOh9C,EAASx5D,OAEtB,GAAGi5D,EAASj+D,KACd,KACA,OAAO,SAAU2lI,EAAKsB,GACpB,OAAOp1E,EAAKxwD,MAAMrB,KAAMY,UAC1B,CACF,CAtB4B,GAsBtB,EACR,CAKA,SAAS,KACP,OAAO,GAAYS,MAAMrB,KAAMY,UACjC,CACA,SAAS,KAYP,OAXA,GAAc,GAAgC,UAAyB,SAAS+1N,IAC9E,OAAO,UAAyB,SAAmBC,GACjD,cAAkBA,EAAUthM,KAAOshM,EAAUrhM,MAC3C,KAAK,EACH,GAAM,mCACR,KAAK,EACL,IAAK,MACH,OAAOqhM,EAAU5xN,OAEvB,GAAG2xN,EACL,MACmBt1N,MAAMrB,KAAMY,UACjC,CACA,IAAI,GAAU,SAAiB8lC,GAC7B,OAAY,MAALA,GAAaA,GAAMA,CAC5B,EAOI,GAAW,SAAkBA,GAC/B,QAAQzkB,OAAOC,OAAOwkB,IAAQA,aAAa1jC,KAC7C,EAII,GAAc,CAChBmlE,QAASq0I,GACTp0I,QAASswI,GACTxwI,OAAQwwI,GACR3wI,KAAM,GACNxhB,OAAQ,GACRuwK,QAASpyL,IAEP,GAAY,CApBA,SAAmBgC,GACjC,MAAa,SAANA,GAAsB,UAANA,IAAuB,IAANA,IAAoB,IAANA,CACxD,EAOgB,SAAmBA,GACjC,OAAO,GAASA,IAAMzkB,OAAO0gB,WAAW+D,EAC1C,EASuC,GAjB1B,SAAgBA,GAC3B,OAAQzkB,OAAOC,MAAMlf,KAAKyjD,MAAM/f,GAClC,GAgBI,GAAW,CAAC,UAAW,UAAW,SAAU,QAChD,SAAS,GAAUlG,EAAQq/F,GACzB,IAAKr/F,IAAWA,EAAO3/B,OAAQ,MAAO,UAMtC,IALA,IAKuBqG,EAAG/E,EALtBysB,EAAI4R,EAAO3/B,OACbkV,EAAI,GAAUlV,OACdsd,EAAI,GAAU6S,KAAI,SAAU0V,EAAGxlC,GAC7B,OAAOA,EAAI,CACb,IACOA,EAAI,EAAG6C,EAAI,EAAa7C,EAAI0tB,IAAK1tB,EAExC,IADAiB,EAAQ09H,EAAQr/F,EAAOt/B,GAAG2+H,GAASr/F,EAAOt/B,GACrCgG,EAAI,EAAGA,EAAI6O,IAAK7O,EACnB,GAAIiX,EAAEjX,IAAM,GAAQ/E,KAAW,GAAU+E,GAAG/E,KAC1Cgc,EAAEjX,GAAK,IACLnD,IACQ,GAAUlD,QAAQ,MAAO,SAIzC,OAAO,GAASsd,EAAEwT,QAAO,SAAUnM,EAAGvT,GACpC,OAAa,IAANuT,EAAUvT,EAAIuT,CACvB,GAAG,GAAK,EACV,CACA,SAAS,GAAWE,EAAMk6G,GACxB,OAAOA,EAAOjuG,QAAO,SAAUs2C,EAAO43D,GAEpC,OADA53D,EAAM43D,GAAS,GAAUn6G,EAAMm6G,GACxB53D,CACT,GAAG,CAAC,EACN,CACA,SAAS,GAAgBk2I,GACvB,IAAI13J,EAAQ,SAAe/gC,EAAMsuB,GAC/B,IAAIojL,EAAQ,CACVjZ,UAAWA,GAEb,OAAO,GAAIz4L,EAAMsuB,EAAS8B,GAAO9B,EAAQojL,GAASA,EACpD,EAEA,OADA3wK,EAAM4wK,aAAe,OACd5wK,CACT,CACA,SAAS,GAAI/gC,EAAMsuB,GAIjB,OAHIA,EAAO+6I,SACTrpK,EAAOsuB,EAAO+6I,OAAO/9J,IAAI,IAAa3H,KAAK2qB,EAAOmqK,WAAa,KAAOz4L,GAEjE4xM,GAAUtjL,EAAOmqK,WAAW13J,MAAM/gC,EAAO,GAClD,CAKA,SAAS,GAAKA,EAAMsuB,GAClB,IAJgBtN,EAIZxhC,EAAO8uC,GAAUA,EAAOgnK,SAAWn7E,GAAM7rF,EAAOgnK,UAAYt2K,GAChE,OAAOypB,GAASzoC,KALAghB,EAKmBhhB,EAJV,mBAAXyhB,QAAyBulG,GAAWvlG,OAAOW,WAAYX,OAAOW,SAASpB,IAIVxhC,EAAK87C,KAAKyF,MAAM/gC,IAG7F,SAAmBA,EAAMsuB,IAClB,GAAQtuB,IAASk2L,GAAWl2L,KAC/BA,GAAO,QAAmBA,IAE5B,OAAOsuB,GAAUA,EAAOhM,KAAOgZ,KAAKyF,MAAMzF,KAAKF,UAAUp7B,IAASA,CACpE,CAR6C,CAAUxgB,EAAKwgB,GAAOsuB,EACnE,CAPA,GAAIqjL,aAAe,OAQnB,GAAKA,aAAe,OAOpB,IAAI,GAAU,CACZI,SAAU,SAAkBt5M,EAAG8E,GAC7B,OAAO9E,IAAM8E,CACf,EACAy0M,SAAU,SAAkBv5M,EAAG8E,GAC7B,OAAO9E,IAAM8E,CACf,GAEF,SAAS,GAASyC,EAAMsuB,GACtB,IAAIroC,EAAQg5B,EAAQq2K,EAAUzqM,EAa9B,OAZAmV,EAAO,GAAKA,EAAMsuB,GACdA,GAAUA,EAAO4jL,SACnBjsN,EAASisN,GACT5c,EAAWhnK,EAAO4jL,SACT5jL,GAAUA,EAAO6jL,MAC1BlsN,EAASksN,GACT7c,EAAWhnK,EAAO6jL,KAClBtnN,EAAS,GAAQyjC,EAAOzjC,SAExB,GAAM,gDAERo0B,GAAUA,EAASjf,EAAKw5L,QAAQlE,IAAarvM,EAAO+Z,EAAMif,EAAQp0B,GAAU,GAAM,4BAA8ByqM,KAC/Fr2K,EAAOw6K,UAAY,CAACx6K,EACvC,CACA,GAAS0yL,aAAe,OACxB,IAAI,GAAS,CACXC,IAAK,GACLQ,IAAK,GAAgB,KACrBC,IAAK,GAAgB,MACrBlpF,KAAM,GACN8oF,SAAU,IAEZ,SAAS,GAAQ11N,EAAMu/E,GACrB,OAAI5gF,UAAUC,OAAS,GACrB,GAAOoB,GAAQu/E,EACRxhF,MAEA,GAAe,GAAQiC,GAAQ,GAAOA,GAAQ,IAEzD,CACA,SAAS,GAAa0G,GACpB,IAAItF,EAAI,GAAQsF,GAChB,OAAOtF,GAAKA,EAAEg0N,cAAgB,MAChC,CACA,SAAS,GAAK3xM,EAAM2+G,EAAQ4zF,EAAYC,GAEtC,IAAI12I,EAAS,IADb6iD,EAASA,GAAU,CAAC,GACQ17H,MAAQ,QAKpC,OAJK64E,GAAQ,GAAM,6BAA+B6iD,EAAO17H,MACzD+c,EAAO87D,EAAO97D,EAAM2+G,GAChBA,EAAO59E,OAIb,SAAe/gC,EAAMuiD,EAAOgwJ,EAAYC,GACtC,IAAKxyM,EAAK7kB,OAAQ,OAElB,IAAIghE,EAAS,KACbo2J,EAAaA,GAAcp2J,EAAO6wJ,UAClCwF,EAAYA,GAAar2J,EAAO2wJ,SAChC,IACE2F,EACAt4F,EACA3+H,EACAgG,EACA0nB,EACA7Y,EANE6pH,EAASl6G,EAAK23L,SAAW7lM,OAAOopB,KAAKlb,EAAK,IAOhC,SAAVuiD,IAAkBA,EAAQ,GAAWviD,EAAMk6G,IAC/CA,EAASpoH,OAAOopB,KAAKqnC,GACrB,IAAImwJ,EAAUx4F,EAAO5uG,KAAI,SAAU6uG,GACjC,IACIw4F,EAAO7vJ,EADP7/D,EAAOs/D,EAAM43D,GAEjB,GAAIl3H,IAASA,EAAK44E,WAAW,UAAY54E,EAAK44E,WAAW,SAOvD,OAJmB,OADnB/Y,GADA6vJ,EAAQ1vN,EAAK2gB,MAAM,SAAU,IACb,IACJ,IAA+C,MAAhCk/C,EAAQA,EAAQ3nE,OAAS,IAA8B,MAAf2nE,EAAQ,IAA8C,MAAhCA,EAAQA,EAAQ3nE,OAAS,MAChH2nE,EAAUA,EAAQxhD,MAAM,GAAI,KAEJ,QAAbqxM,EAAM,GAAeH,EAAYD,GAChCzvJ,GAEhB,IAAK,GAAY7/D,GACf,MAAMs/B,MAAM,2BAA6B43F,EAAQ,IAAMl3H,GAEzD,OAAO,GAAYA,EACrB,IACA,IAAKzH,EAAI,EAAG0tB,EAAIlJ,EAAK7kB,OAAQkV,EAAI6pH,EAAO/+H,OAAQK,EAAI0tB,IAAK1tB,EAEvD,IADAi3N,EAAQzyM,EAAKxkB,GACRgG,EAAI,EAAGA,EAAI6O,IAAK7O,EAEnBixN,EADAt4F,EAAQD,EAAO14H,IACAkxN,EAAQlxN,GAAGixN,EAAMt4F,GAGtC,CA3CoB,CAAMn6G,EAAM2+G,EAAO59E,MAAOwxK,EAAYC,GACpD,GAAexyM,EAAM,mBAAmBA,EAAK23L,QAC1C33L,CACT,CAyCA,ICzVIguR,GAAW,GAAQ,GAAO,GAAQC,GDyVlC,GAhZJ,SAAuBn9E,EAAOL,GAC5B,OAAO,SAAUhxL,GACf,MAAO,CACLA,QAASA,GAAW,CAAC,EACrBqwL,SAAU,GACVH,KAAM,GACNO,aAAcO,EACd/8J,KAAM,GAAW+8J,GACjBT,KAAM,GAAWc,GAErB,CACF,CAqYa,CAA+B,oBAAVA,OAAyBA,MAE3D,MC9aIo9E,GAAU,UACVC,GAAW,WAEXC,GAAkB,kBAClBC,GAAmB,mBACnBC,GAAiB,iBACjBC,GAAwB,wBACxBC,GAAoB,oBACpBC,GAAmB,mBACnBC,GAAmB,mBACnBC,GAAkB,kBACtB,SAASC,GAAQ3rS,GACf3I,KAAK2I,KAAOA,CACd,CACA2rS,GAAQp0S,UAAUi+N,MAAQ,SAAUrhB,GAClC,IAAI33L,EAAGjkB,EAAG0tB,EACV,GAAIkuL,EAAQ98M,MAAO,OAAO,EAC1B,IAAyBkB,EAAI,EAAG0tB,GAA3BzJ,EAIP,SAAkBu7B,GAChB,OAAQA,EAAK/3C,MACX,KAAKmrS,GACH,OAAOpzP,EAAK/f,SACd,KAAKozQ,GACL,KAAKG,GACH,MAAO,CAACxzP,EAAK1xC,KAAM0xC,EAAK/tC,OAC1B,KAAKqhS,GACH,MAAO,CAACtzP,EAAK6zP,QAAQhhS,OAAOmtC,EAAK9/C,WACnC,KAAKqzS,GACH,MAAO,CAACvzP,EAAKp7C,KAAMo7C,EAAK8zP,WAAY9zP,EAAK+zP,WAC3C,KAAKN,GACH,MAAO,CAACzzP,EAAK/b,OAAQ+b,EAAKs6J,UAC5B,KAAKo5F,GACH,OAAO1zP,EAAK6gG,WACd,KAAKsyJ,GACH,MAAO,CAACnzP,EAAK7f,IAAK6f,EAAKv+C,OACzB,KAAKkyS,GACH,MAAO,CAAC3zP,EAAK4O,UAIf,QACE,MAAO,GAEb,CA7BW,CAAStvD,OAAoBa,OAAQK,EAAI0tB,IAAK1tB,EACrD,GAAIikB,EAAEjkB,GAAGi9N,MAAMrhB,GAAU,OAAO,CAEpC,EAgEA,IAAI43F,GAAsB,EACxBC,GAAW,EACXC,GAAkB,EAClBC,GAAe,EACfC,GAAmB,EACnBC,GAAsB,EACtBC,GAAkB,EAClBC,GAAqB,GAEvBvB,GAAY,CAAC,GACHgB,IAAuB,UACjChB,GAAUiB,IAAY,QACtBjB,GAAUkB,IAAmB,aAC7BlB,GAAUmB,IAAgB,UAC1BnB,GAAUoB,IAAoB,OAC9BpB,GAAUqB,IAAuB,UACjCrB,GAAUsB,IAAmB,aAC7BtB,GAAUuB,IAAsB,SAChCvB,GAV2B,GAUS,oBACpC,IAAIwB,GAAwB,kBAC1BC,GAAyB,mBACzBC,GAAuB,iBACvBC,GAA8B,wBAC9BC,GAAmB,aACnBC,GAAgB,UAChBC,GAA0B,oBAC1BC,GAAyB,mBACzBC,GAAyB,mBACzBC,GAAiB,WACjBC,GAAwB,kBAGtBC,GAAyB,sBAC3BC,GAA0B,oBAC1BC,GAA0B,oBAC1BC,GAA8B,wBAC9BC,GAA4B,2BAC5BC,GAAuB,0BACvBC,GAAuB,6BACvBC,GAA4B,wCAC5BC,GAA4B,iDAC5BC,GAAiC,uEAC/BC,GAAU,UACZC,GAAW,YAGTC,GAA+B,IAAI3xR,OAAO,wzJAE5C4xR,GAA8B,IAAI5xR,OAAO,quLAO3C,SAAS6xR,GAAO10Q,EAAWs5E,GAEzB,IAAKt5E,EACH,MAAM,IAAIgG,MAAM,WAAaszE,EAEjC,CACA,SAASq7L,GAAe1oP,GACtB,OAAOA,GAAM,IAAQA,GAAM,EAC7B,CAEA,SAAS2oP,GAAW3oP,GAClB,MAAO,yBAAyBh7C,QAAQg7C,IAAO,CACjD,CACA,SAAS4oP,GAAa5oP,GACpB,MAAO,WAAWh7C,QAAQg7C,IAAO,CACnC,CAIA,SAAS6oP,GAAa7oP,GACpB,OAAc,KAAPA,GAAsB,IAAPA,GAAsB,KAAPA,GAAsB,KAAPA,GAAsB,MAAPA,GAAeA,GAAM,MAAU,CAAC,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,MAAQ,OAAQh7C,QAAQg7C,IAAO,CAC5P,CAIA,SAAS8oP,GAAiB9oP,GACxB,OAAc,KAAPA,GAAsB,KAAPA,GAAsB,OAAPA,GAAwB,OAAPA,CACxD,CAIA,SAAS+oP,GAAkB/oP,GACzB,OAAc,KAAPA,GAAsB,KAAPA,GAEtBA,GAAM,IAAQA,GAAM,IAEpBA,GAAM,IAAQA,GAAM,KAEb,KAAPA,GAEAA,GAAM,KAAQuoP,GAA6BnxS,KAAKqgB,OAAOuxR,aAAahpP,GACtE,CACA,SAASipP,GAAiBjpP,GACxB,OAAc,KAAPA,GAAsB,KAAPA,GAEtBA,GAAM,IAAQA,GAAM,IAEpBA,GAAM,IAAQA,GAAM,KAEpBA,GAAM,IAAQA,GAAM,IAEb,KAAPA,GAEAA,GAAM,KAAQwoP,GAA4BpxS,KAAKqgB,OAAOuxR,aAAahpP,GACrE,CAIA,IAAIkpP,GAAW,CACb,GAAM,EACN,GAAM,EACN,GAAM,EACN,IAAO,EACP,IAAO,EACP,IAAO,EACP,IAAO,EACP,IAAO,EACP,KAAQ,EACR,KAAQ,EACR,KAAQ,EACR,KAAQ,EACR,KAAQ,EACR,KAAQ,EACR,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAS,EACT,OAAU,EACV,OAAU,EACV,OAAU,EACV,OAAU,EACV,OAAU,EACV,OAAU,EACV,OAAU,EACV,OAAU,EACV,QAAW,EACX,QAAW,EACX,QAAW,EACX,QAAW,EACX,QAAW,EACX,SAAY,EACZ,SAAY,EACZ,SAAY,EACZ,UAAa,EACb,UAAa,EACb,WAAc,EACd,WAAc,GAEhB,SAASC,KACP,KAAO,GAAQ,IAAQ,CACrB,IAAInpP,EAAK,GAAOulJ,WAAW,IAC3B,IAAIsjG,GAAa7oP,KAAO8oP,GAAiB9oP,GAGvC,QAFE,EAIN,CACF,CACA,SAASopP,GAAc5xQ,GACrB,IAAIxkC,EACFs5B,EACA0zB,EACAi9C,EAAO,EAET,IADA3wE,EAAiB,MAAXkL,EAAiB,EAAI,EACtBxkC,EAAI,EAAGA,EAAIs5B,IAAOt5B,EACjB,GAAQ,IAAU21S,GAAW,GAAO,MACtC3oP,EAAK,GAAO,MACZi9C,EAAc,GAAPA,EAAY,mBAAmBj4F,QAAQg7C,EAAGtvC,gBAEjD24R,GAAW,CAAC,EAAG1B,GAAwBU,IAG3C,OAAO5wR,OAAOuxR,aAAa/rM,EAC7B,CACA,SAASqsM,KACP,IAAItpP,EAAIi9C,EAAMssM,EAAKC,EAQnB,IANAvsM,EAAO,EAGI,OAJXj9C,EAAK,GAAO,MAKVqpP,GAAW,CAAC,EAAG1B,GAAwBU,IAElC,GAAQ,IAERM,GADL3oP,EAAK,GAAO,QAIZi9C,EAAc,GAAPA,EAAY,mBAAmBj4F,QAAQg7C,EAAGtvC,eAOnD,OALIusF,EAAO,SAAmB,MAAPj9C,IACrBqpP,GAAW,CAAC,EAAG1B,GAAwBU,IAIrCprM,GAAQ,MACHxlF,OAAOuxR,aAAa/rM,IAE7BssM,EAA+B,OAAxBtsM,EAAO,OAAW,IACzBusM,EAAgC,OAAzBvsM,EAAO,MAAU,MACjBxlF,OAAOuxR,aAAaO,EAAKC,GAClC,CACA,SAASC,KACP,IAAIzpP,EAAIx6C,EAgBR,IAfAw6C,EAAK,GAAOulJ,WAAW,MACvB//L,EAAKiS,OAAOuxR,aAAahpP,GAGd,KAAPA,IAC+B,MAA7B,GAAOulJ,WAAW,KACpB8jG,GAAW,CAAC,EAAG1B,GAAwBU,MAEvC,IACFroP,EAAKopP,GAAc,OACD,OAAPppP,GAAgB+oP,GAAkB/oP,EAAGulJ,WAAW,KACzD8jG,GAAW,CAAC,EAAG1B,GAAwBU,IAEzC7iS,EAAKw6C,GAEA,GAAQ,IAERipP,GADLjpP,EAAK,GAAOulJ,WAAW,QAIrB,GACF//L,GAAMiS,OAAOuxR,aAAahpP,GAGf,KAAPA,IACFx6C,EAAKA,EAAG0nB,OAAO,EAAG1nB,EAAG7S,OAAS,GACG,MAA7B,GAAO4yM,WAAW,KACpB8jG,GAAW,CAAC,EAAG1B,GAAwBU,MAEvC,IACFroP,EAAKopP,GAAc,OACD,OAAPppP,GAAgBipP,GAAiBjpP,EAAGulJ,WAAW,KACxD8jG,GAAW,CAAC,EAAG1B,GAAwBU,IAEzC7iS,GAAMw6C,GAGV,OAAOx6C,CACT,CAmBA,SAASkkS,KACP,IAAIlxR,EAAOhT,EAoBX,OAnBAgT,EAAQ,GAGRhT,EAAkC,KAA7B,GAAO+/L,WAAW,IAAkBkkG,KAvB3C,WACE,IAAIjxR,EAAOwnC,EAEX,IADAxnC,EAAQ,KACD,GAAQ,IAAQ,CAErB,GAAW,MADXwnC,EAAK,GAAOulJ,WAAW,KAIrB,OADA,GAAQ/sL,EACDixR,KAET,IAAIR,GAAiBjpP,GAGnB,QAFE,EAIN,CACA,OAAO,GAAOlnC,MAAMN,EAAO,GAC7B,CAMoEmxR,GAgB3D,CACLlvS,KAbgB,IAAd+K,EAAG7S,OACE+zS,GACEwC,GAAS7/R,eAAe7D,GAE1BmhS,GACS,SAAPnhS,EACFohS,GACS,SAAPphS,GAAwB,UAAPA,EACnBghS,GAEAE,GAIPzyS,MAAOuR,EACPgT,MAAOA,EACPmI,IAAK,GAET,CAIA,SAASipR,KACP,IAEEC,EAEAC,EACAC,EACAC,EANExxR,EAAQ,GACVykF,EAAO,GAAOsoG,WAAW,IAEzB0kG,EAAM,GAAO,IAIf,OAAQhtM,GAEN,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,IACL,KAAK,IACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,IAGH,QADE,GACK,CACLxiG,KAAMqsS,GACN7yS,MAAOwjB,OAAOuxR,aAAa/rM,GAC3BzkF,MAAOA,EACPmI,IAAK,IAET,QAIE,GAAc,MAHdkpR,EAAQ,GAAOtkG,WAAW,GAAQ,IAIhC,OAAQtoG,GACN,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,IACL,KAAK,GACL,KAAK,GACL,KAAK,GAGH,OADA,IAAS,EACF,CACLxiG,KAAMqsS,GACN7yS,MAAOwjB,OAAOuxR,aAAa/rM,GAAQxlF,OAAOuxR,aAAaa,GACvDrxR,MAAOA,EACPmI,IAAK,IAET,KAAK,GACL,KAAK,GAQH,OANA,IAAS,EAGwB,KAA7B,GAAO4kL,WAAW,OAClB,GAEG,CACL9qM,KAAMqsS,GACN7yS,MAAO,GAAO6kB,MAAMN,EAAO,IAC3BA,MAAOA,EACPmI,IAAK,KASjB,MAAY,UADZqpR,EAAM,GAAO98Q,OAAO,GAAO,IAGlB,CACLzyB,KAAMqsS,GACN7yS,MAAO+1S,EACPxxR,MAAOA,EACPmI,IALF,IAAS,GAYC,SADZopR,EAAMC,EAAI98Q,OAAO,EAAG,KACS,QAAR68Q,GAAyB,QAARA,EAE7B,CACLtvS,KAAMqsS,GACN7yS,MAAO81S,EACPvxR,MAAOA,EACPmI,IALF,IAAS,GAWPspR,KADJH,EAAMC,EAAI78Q,OAAO,EAAG,IACJ,IAAM,SAASloB,QAAQilS,IAAQ,GAAa,OAARH,EAE3C,CACLrvS,KAAMqsS,GACN7yS,MAAO61S,EACPtxR,MAAOA,EACPmI,IALF,IAAS,IAQC,OAARmpR,GACFT,GAAW,CAAC,EAAG1B,GAAwBU,IAKrC,eAAerjS,QAAQilS,IAAQ,KAC/B,GACK,CACLxvS,KAAMqsS,GACN7yS,MAAOg2S,EACPzxR,MAAOA,EACPmI,IAAK,UAGT0oR,GAAW,CAAC,EAAG1B,GAAwBU,IACzC,CA4CA,SAAS6B,KACP,IAAIlwO,EAAQxhD,EAAOwnC,EAKnB,GAHAyoP,GAAOC,IADP1oP,EAAK,GAAO,KACaulJ,WAAW,KAAc,MAAPvlJ,EAAY,sEACvDxnC,EAAQ,GACRwhD,EAAS,GACE,MAAPha,EAAY,CAMd,GALAga,EAAS,GAAO,MAChBha,EAAK,GAAO,IAIG,MAAXga,EAAgB,CAClB,GAAW,MAAPha,GAAqB,MAAPA,EAEhB,QADE,GAtDV,SAAwBxnC,GAEtB,IADA,IAAIwhD,EAAS,GACN,GAAQ,IACR2uO,GAAW,GAAO,MAGvB3uO,GAAU,GAAO,MAQnB,OANsB,IAAlBA,EAAOrnE,QACT02S,GAAW,CAAC,EAAG1B,GAAwBU,IAErCU,GAAkB,GAAOxjG,WAAW,MACtC8jG,GAAW,CAAC,EAAG1B,GAAwBU,IAElC,CACL5tS,KAAMosS,GACN5yS,MAAO+xC,SAAS,KAAOg0B,EAAQ,IAC/BxhD,MAAOA,EACPmI,IAAK,GAET,CAmCewpR,CAAe3xR,GAExB,GAAIowR,GAAa5oP,GACf,OArCR,SAA0BxnC,GAExB,IADA,IAAIwhD,EAAS,IAAM,GAAO,MACnB,GAAQ,IACR4uO,GAAa,GAAO,MAGzB5uO,GAAU,GAAO,MAKnB,OAHI+uO,GAAkB,GAAOxjG,WAAW,MAAWmjG,GAAe,GAAOnjG,WAAW,OAClF8jG,GAAW,CAAC,EAAG1B,GAAwBU,IAElC,CACL5tS,KAAMosS,GACN5yS,MAAO+xC,SAASg0B,EAAQ,GACxBowO,OAAO,EACP5xR,MAAOA,EACPmI,IAAK,GAET,CAmBe0pR,CAAiB7xR,GAItBwnC,GAAM0oP,GAAe1oP,EAAGulJ,WAAW,KACrC8jG,GAAW,CAAC,EAAG1B,GAAwBU,GAE3C,CACA,KAAOK,GAAe,GAAOnjG,WAAW,MACtCvrI,GAAU,GAAO,MAEnBha,EAAK,GAAO,GACd,CACA,GAAW,MAAPA,EAAY,CAEd,IADAga,GAAU,GAAO,MACV0uO,GAAe,GAAOnjG,WAAW,MACtCvrI,GAAU,GAAO,MAEnBha,EAAK,GAAO,GACd,CACA,GAAW,MAAPA,GAAqB,MAAPA,EAMhB,GALAga,GAAU,GAAO,MAEN,OADXha,EAAK,GAAO,MACa,MAAPA,IAChBga,GAAU,GAAO,OAEf0uO,GAAe,GAAOnjG,WAAW,KACnC,KAAOmjG,GAAe,GAAOnjG,WAAW,MACtCvrI,GAAU,GAAO,WAGnBqvO,GAAW,CAAC,EAAG1B,GAAwBU,IAM3C,OAHIU,GAAkB,GAAOxjG,WAAW,MACtC8jG,GAAW,CAAC,EAAG1B,GAAwBU,IAElC,CACL5tS,KAAMosS,GACN5yS,MAAOkpB,WAAW68C,GAClBxhD,MAAOA,EACPmI,IAAK,GAET,CAwMA,SAAS2pR,KACP,IAAI9xR,EAAOimC,EAAMzjB,EAAO/mC,EAOxB,OANAwxS,GAAY,KACZ0D,KACA3wR,EAAQ,GACRimC,EAzEF,WACE,IAAIuB,EAAIxsB,EAAK+2Q,EAAaC,EAM1B,IAJA/B,GAAc,OADdzoP,EAAK,GAAO,KACO,sDACnBxsB,EAAM,GAAO,MACb+2Q,GAAc,EACdC,GAAa,EACN,GAAQ,IAGb,GADAh3Q,GADAwsB,EAAK,GAAO,MAED,OAAPA,EAGE8oP,IAFJ9oP,EAAK,GAAO,OAEYulJ,WAAW,KACjC8jG,GAAW,CAAC,EAAGnB,IAEjB10Q,GAAOwsB,OACF,GAAI8oP,GAAiB9oP,EAAGulJ,WAAW,IACxC8jG,GAAW,CAAC,EAAGnB,SACV,GAAIqC,EACE,MAAPvqP,IACFuqP,GAAc,OAEX,CACL,GAAW,MAAPvqP,EAAY,CACdwqP,GAAa,EACb,KACF,CAAkB,MAAPxqP,IACTuqP,GAAc,EAElB,CAQF,OANKC,GACHnB,GAAW,CAAC,EAAGnB,IAKV,CACLj0S,MAFKu/B,EAAItG,OAAO,EAAGsG,EAAI7gC,OAAS,GAGhC83S,QAASj3Q,EAEb,CA+BSk3Q,GACP1vQ,EA/BF,WACE,IAAIglB,EAAIxsB,EAAKwH,EAGb,IAFAxH,EAAM,GACNwH,EAAQ,GACD,GAAQ,IAERiuQ,IADLjpP,EAAK,GAAO,KACaulJ,WAAW,OAGlC,GACS,OAAPvlJ,GAAe,GAAQ,GACzBqpP,GAAW,CAAC,EAAG1B,GAAwBU,KAEvCrtQ,GAASglB,EACTxsB,GAAOwsB,GAMX,OAHIhlB,EAAMg/H,OAAO,cAAgB,GAC/BqvI,GAAW,CAAC,EAAGpB,GAAsBjtQ,GAEhC,CACL/mC,MAAO+mC,EACPyvQ,QAASj3Q,EAEb,CAOUm3Q,GACR12S,EA9GF,SAAoBqmE,EAASt/B,GAC3B,IAAI5H,EAAMknC,EACNt/B,EAAMh2B,QAAQ,MAAQ,IASxBouB,EAAMA,EAAI1b,QAAQ,0BAA0B,SAAUkzR,EAAIC,GACxD,GAAI7kQ,SAAS6kQ,EAAI,KAAO,QACtB,MAAO,IAETxB,GAAW,CAAC,EAAGpB,GACjB,IAAGvwR,QAAQ,kCAAmC,MAIhD,IACE,IAAId,OAAOwc,EACb,CAAE,MAAOp9B,KACPqzS,GAAW,CAAC,EAAGpB,GACjB,CAKA,IACE,OAAO,IAAIrxR,OAAO0jD,EAASt/B,EAC7B,CAAE,MAAO6tB,GACP,OAAO,IACT,CACF,CA4EUiiP,CAAWrsP,EAAKxqD,MAAO+mC,EAAM/mC,OAC9B,CACLw2S,QAAShsP,EAAKgsP,QAAUzvQ,EAAMyvQ,QAC9Bx2S,MAAOA,EACP49C,MAAO,CACLyoB,QAAS7b,EAAKxqD,MACd+mC,MAAOA,EAAM/mC,OAEfukB,MAAOA,EACPmI,IAAK,GAET,CAIA,SAASoqR,KAEP,GADA5B,KACI,IAAS,GACX,MAAO,CACL1uS,KAAMgsS,GACNjuR,MAAO,GACPmI,IAAK,IAGT,IAAIq/B,EAAK,GAAOulJ,WAAW,IAC3B,OAAIwjG,GAAkB/oP,GACb0pP,KAIE,KAAP1pP,GAAsB,KAAPA,GAAsB,KAAPA,EACzB4pP,KAIE,KAAP5pP,GAAsB,KAAPA,EA9OrB,WACE,IACEk0M,EACA17O,EACAwnC,EACAi9C,EAJEzpE,EAAM,GAKR42Q,GAAQ,EAKV,IAHA3B,GAAiB,OADjBv0C,EAAQ,GAAO,MACoB,MAAVA,EAAe,2CACxC17O,EAAQ,KACN,GACK,GAAQ,IAAQ,CAErB,IADAwnC,EAAK,GAAO,SACDk0M,EAAO,CAChBA,EAAQ,GACR,KACF,CAAO,GAAW,OAAPl0M,EAET,IADAA,EAAK,GAAO,QACA8oP,GAAiB9oP,EAAGulJ,WAAW,IAsD9B,OAAPvlJ,GAAiC,OAAlB,GAAO,OACtB,QAtDJ,OAAQA,GACN,IAAK,IACL,IAAK,IACmB,MAAlB,GAAO,OACP,GACFxsB,GAAO81Q,MAEP91Q,GAAO41Q,GAAcppP,GAEvB,MACF,IAAK,IACHxsB,GAAO,KACP,MACF,IAAK,IACHA,GAAO,KACP,MACF,IAAK,IACHA,GAAO,KACP,MACF,IAAK,IACHA,GAAO,KACP,MACF,IAAK,IACHA,GAAO,KACP,MACF,IAAK,IACHA,GAAO,KACP,MACF,QACMo1Q,GAAa5oP,IAIF,KAHbi9C,EAAO,WAAWj4F,QAAQg7C,MAIxBoqP,GAAQ,GAEN,GAAQ,IAAUxB,GAAa,GAAO,OACxCwB,GAAQ,EACRntM,EAAc,EAAPA,EAAW,WAAWj4F,QAAQ,GAAO,OAIxC,OAAOA,QAAQg7C,IAAO,GAAK,GAAQ,IAAU4oP,GAAa,GAAO,OACnE3rM,EAAc,EAAPA,EAAW,WAAWj4F,QAAQ,GAAO,SAGhDwuB,GAAO/b,OAAOuxR,aAAa/rM,IAE3BzpE,GAAOwsB,MASV,IAAI8oP,GAAiB9oP,EAAGulJ,WAAW,IACxC,MAEA/xK,GAAOwsB,CACT,CACF,CAIA,MAHc,KAAVk0M,GACFm1C,GAAW,CAAC,EAAG1B,GAAwBU,IAElC,CACL5tS,KAAMssS,GACN9yS,MAAOu/B,EACP42Q,MAAOA,EACP5xR,MAAOA,EACPmI,IAAK,GAET,CAmJWqqR,GAKE,KAAPhrP,EACE0oP,GAAe,GAAOnjG,WAAW,GAAQ,IACpC2kG,KAEFN,KAELlB,GAAe1oP,GACVkqP,KAEFN,IACT,CACA,SAASqB,KACP,IAAI/uO,EAAQupO,GAIZ,OAHA,GAAQvpO,EAAMv7C,IACd8kR,GAAYsF,KACZ,GAAQ7uO,EAAMv7C,IACPu7C,CACT,CACA,SAAS,KACP,IAAIuwD,EAAM,GACVg5K,GAAYsF,KACZ,GAAQt+K,CACV,CAMA,SAASy+K,GAAuBC,EAAUrqS,EAAM2D,GAC9C,IAAI+tC,EAAO,IAAI4zP,GAAqB,OAAb+E,GAAkC,OAAbA,EAAoB7D,GAA0BL,IAI1F,OAHAz0P,EAAK24P,SAAWA,EAChB34P,EAAK1xC,KAAOA,EACZ0xC,EAAK/tC,MAAQA,EACN+tC,CACT,CACA,SAAS44P,GAAqB/E,EAAQ7zS,GACpC,IAAIggD,EAAO,IAAI4zP,GAAQc,IAGvB,OAFA10P,EAAK6zP,OAASA,EACd7zP,EAAK9/C,UAAYF,EACVggD,CACT,CAQA,SAAS64P,GAAiBt3S,GACxB,IAAIy+C,EAAO,IAAI4zP,GAAQgB,IAEvB,OADA50P,EAAKz+C,KAAOA,EACLy+C,CACT,CACA,SAAS84P,GAAcpvO,GACrB,IAAI1pB,EAAO,IAAI4zP,GAAQiB,IASvB,OARA70P,EAAKv+C,MAAQioE,EAAMjoE,MACnBu+C,EAAKi7L,IAAM,GAAO30N,MAAMojD,EAAM1jD,MAAO0jD,EAAMv7C,KACvCu7C,EAAMrqB,QACS,OAAbW,EAAKi7L,MACPj7L,EAAKi7L,IAAM,UAEbj7L,EAAKX,MAAQqqB,EAAMrqB,OAEdW,CACT,CACA,SAAS+4P,GAAuBpiG,EAAU1yK,EAAQq2K,GAChD,IAAIt6J,EAAO,IAAI4zP,GAAQmB,IAKvB,OAJA/0P,EAAKg5P,SAAwB,MAAbriG,EAChB32J,EAAK/b,OAASA,EACd+b,EAAKs6J,SAAWA,EACXt6J,EAAKg5P,WAAU1+F,EAAS2+F,QAAS,GAC/Bj5P,CACT,CAMA,SAASk5P,GAAeC,EAAMh5Q,EAAK1+B,GACjC,IAAIu+C,EAAO,IAAI4zP,GAAQqB,IAIvB,OAHAj1P,EAAK7f,IAAMA,EACX6f,EAAKv+C,MAAQA,EACbu+C,EAAKm5P,KAAOA,EACLn5P,CACT,CAWA,SAAS62P,GAAWntO,EAAO0vO,GACzB,IAAI1sP,EACF1sD,EAAO+/B,MAAMvgC,UAAU8mB,MAAMplB,KAAKhB,UAAW,GAC7C84D,EAAMogP,EAAcl0R,QAAQ,UAAU,SAAUm0R,EAAO/xS,GAErD,OADA2uS,GAAO3uS,EAAQtH,EAAKG,OAAQ,sCACrBH,EAAKsH,EACd,IAIF,MAHAolD,EAAQ,IAAInlB,MAAMyxB,IACZ1xD,MAAQ,GACdolD,EAAM4Z,YAActN,EACdtM,CACR,CAIA,SAAS4sP,GAAgB5vO,GACnBA,EAAMzhE,OAASgsS,IACjB4C,GAAWntO,EAAO8rO,IAEhB9rO,EAAMzhE,OAASosS,IACjBwC,GAAWntO,EAAO0rO,IAEhB1rO,EAAMzhE,OAASssS,IACjBsC,GAAWntO,EAAO2rO,IAEhB3rO,EAAMzhE,OAASisS,IACjB2C,GAAWntO,EAAO4rO,IAEhB5rO,EAAMzhE,OAASksS,IACjB0C,GAAWntO,EAAO6rO,IAIpBsB,GAAWntO,EAAOyrO,GAAwBzrO,EAAMjoE,MAClD,CAKA,SAAS83S,GAAO93S,GACd,IAAIioE,EAAQ+uO,KACR/uO,EAAMzhE,OAASqsS,IAAmB5qO,EAAMjoE,QAAUA,GACpD63S,GAAgB5vO,EAEpB,CAIA,SAAS,GAAMjoE,GACb,OAAOwxS,GAAUhrS,OAASqsS,IAAmBrB,GAAUxxS,QAAUA,CACnE,CAIA,SAAS+3S,GAAaC,GACpB,OAAOxG,GAAUhrS,OAASksS,IAAgBlB,GAAUxxS,QAAUg4S,CAChE,CAIA,SAASC,KACP,IAAIz5Q,EAAW,GAGf,IAFA,GAAQgzQ,GAAUjtR,MAClBuzR,GAAO,MACC,GAAM,MACR,GAAM,MACRd,KACAx4Q,EAASpgC,KAAK,QAEdogC,EAASpgC,KAAK85S,MACT,GAAM,MACTJ,GAAO,MAKb,OADAd,KAnJF,SAA+Bx4Q,GAC7B,IAAI+f,EAAO,IAAI4zP,GAAQY,IAEvB,OADAx0P,EAAK/f,SAAWA,EACT+f,CACT,CAgJS45P,CAAsB35Q,EAC/B,CAIA,SAAS45Q,KACP,GAAQ5G,GAAUjtR,MAClB,IAAI0jD,EAAQ+uO,KAKZ,OAAI/uO,EAAMzhE,OAASssS,IAAsB7qO,EAAMzhE,OAASosS,IAClD3qO,EAAMkuO,OACRf,GAAWntO,EAAOisO,IAEbmD,GAAcpvO,IAEhBmvO,GAAiBnvO,EAAMjoE,MAChC,CACA,SAASq4S,KACP,IAAIpwO,EAAOvpC,EAAKntB,EAGhB,OAFA,GAAQigS,GAAUjtR,OAClB0jD,EAAQupO,IACEhrS,OAASisS,IACjBlhS,EAAK6mS,KACLN,GAAO,KAEAL,GAAe,OAAQlmS,EADtB2mS,OAGNjwO,EAAMzhE,OAASgsS,IAAYvqO,EAAMzhE,OAASqsS,IAG5Cn0Q,EAAM05Q,KACNN,GAAO,KAEAL,GAAe,OAAQ/4Q,EADtBw5Q,YAJRL,GAAgB5vO,EAOpB,CACA,SAASqwO,KACP,IACEz/F,EAEAn6K,EAHE0gH,EAAa,GAIfvwH,EAAM,CAAC,EACPpO,EAAW+C,OAGb,IAFA,GAAQguR,GAAUjtR,MAClBuzR,GAAO,MACC,GAAM,MAOZp5Q,EAAM,MANNm6K,EAAWw/F,MACE35Q,IAAIl4B,OAAS2sS,GACjBt6F,EAASn6K,IAAI5+B,KAEb2gB,EAASo4L,EAASn6K,IAAI1+B,QAG3BqV,OAAOtX,UAAUqX,eAAe3V,KAAKovB,EAAK6P,GAC5C02Q,GAAW,CAAC,EAAGjB,IAEftlR,EAAI6P,IAAO,EAEb0gH,EAAWhhJ,KAAKy6M,GACX,GAAM,MACTi/F,GAAO,KAIX,OADAA,GAAO,KApKT,SAAgC14J,GAC9B,IAAI7gG,EAAO,IAAI4zP,GAAQoB,IAEvB,OADAh1P,EAAK6gG,WAAaA,EACX7gG,CACT,CAiKSg6P,CAAuBn5J,EAChC,CAaA,IAAIo5J,GAAgB,CAClB,GAAM,GAER,SAASC,KACP,IAAIjyS,EAAMyhE,EAAOslK,EACjB,GAAI,GAAM,KACR,OAfJ,WACEuqE,GAAO,KACP,IAAIvqE,EAAOmrE,KAEX,OADAZ,GAAO,KACAvqE,CACT,CAUWorE,GAET,GAAI,GAAM,KACR,OAAOV,KAET,GAAI,GAAM,KACR,OAAOK,KAIT,GAFA9xS,EAAOgrS,GAAUhrS,KACjB,GAAQgrS,GAAUjtR,MACd/d,IAASisS,IAAmB+F,GAAchH,GAAUxxS,OACtDutO,EAAO6pE,GAAiBJ,KAAMh3S,YACzB,GAAIwG,IAASssS,IAAsBtsS,IAASosS,GAC7CpB,GAAU2E,OACZf,GAAW5D,GAAW0C,IAExB3mE,EAAO8pE,GAAcL,UAChB,IAAIxwS,IAASksS,GAClB,MAAM,IAAI5sQ,MAAMuuQ,IACP7tS,IAAS+rS,KAClBtqO,EAAQ+uO,MACFh3S,MAAwB,SAAhBioE,EAAMjoE,MACpButO,EAAO8pE,GAAcpvO,IACZzhE,IAASmsS,KAClB1qO,EAAQ+uO,MACFh3S,MAAQ,KACdutO,EAAO8pE,GAAcpvO,IACZ,GAAM,MAAQ,GAAM,OAC7BslK,EAAO8pE,GAAchB,MACrB,MAEAwB,GAAgBb,KAClB,CACA,OAAOzpE,CACT,CAIA,SAASqrE,KACP,IAAIr6S,EAAO,GAEX,GADAu5S,GAAO,MACF,GAAM,KACT,KAAO,GAAQ,KACbv5S,EAAKH,KAAK85S,OACN,GAAM,OAGVJ,GAAO,KAIX,OADAA,GAAO,KACAv5S,CACT,CACA,SAASs6S,KACP,GAAQrH,GAAUjtR,MAClB,IAAI0jD,EAAQ+uO,KAIZ,OA1VF,SAA0B/uO,GACxB,OAAOA,EAAMzhE,OAASisS,IAAmBxqO,EAAMzhE,OAASksS,IAAgBzqO,EAAMzhE,OAAS+rS,IAAuBtqO,EAAMzhE,OAASmsS,EAC/H,CAqVOmG,CAAiB7wO,IACpB4vO,GAAgB5vO,GAEXmvO,GAAiBnvO,EAAMjoE,MAChC,CAKA,SAAS+4S,KACPjB,GAAO,KACP,IAAIvqE,EAAOmrE,KAEX,OADAZ,GAAO,KACAvqE,CACT,CAuBA,SAASyrE,KACP,IAAIzrE,EAvBN,WACE,IAAIA,EAEJ,IADAA,EAAOkrE,OAEL,GAAI,GAAM,KAbZX,GAAO,KAeHvqE,EAAO+pE,GAAuB,IAAK/pE,EAdhCsrE,WAeE,GAAI,GAAM,KAEftrE,EAAO4pE,GAAqB5pE,EADrBqrE,UAEF,KAAI,GAAM,KAIf,MAFArrE,EAAO+pE,GAAuB,IAAK/pE,EADxBwrE,KAIb,CAEF,OAAOxrE,CACT,CAKa0rE,GACX,GAAIzH,GAAUhrS,OAASqsS,KACjB,GAAM,OAAS,GAAM,OACvB,MAAM,IAAI/sQ,MAAMuuQ,IAGpB,OAAO9mE,CACT,CAIA,SAAS2rE,KACP,IAAIjxO,EAAOslK,EACX,GAAIikE,GAAUhrS,OAASqsS,IAAmBrB,GAAUhrS,OAASksS,GAC3DnlE,EAAOyrE,SACF,IAAI,GAAM,OAAS,GAAM,MAC9B,MAAM,IAAIlzQ,MAAMuuQ,IACX,GAAI,GAAM,MAAQ,GAAM,MAAQ,GAAM,MAAQ,GAAM,KACzDpsO,EAAQ+uO,KACRzpE,EAAO2rE,KACP3rE,EA/RJ,SAA+B2pE,EAAU/pP,GACvC,IAAI5O,EAAO,IAAI4zP,GAAQsB,IAIvB,OAHAl1P,EAAK24P,SAAWA,EAChB34P,EAAK4O,SAAWA,EAChB5O,EAAKhb,QAAS,EACPgb,CACT,CAyRW46P,CAAsBlxO,EAAMjoE,MAAOutO,OACrC,IAAIwqE,GAAa,WAAaA,GAAa,SAAWA,GAAa,UACxE,MAAM,IAAIjyQ,MAAMuuQ,IAEhB9mE,EAAOyrE,IACT,EACA,OAAOzrE,CACT,CACA,SAAS6rE,GAAiBnxO,GACxB,IAAIoxO,EAAO,EACX,GAAIpxO,EAAMzhE,OAASqsS,IAAmB5qO,EAAMzhE,OAASksS,GACnD,OAAO,EAET,OAAQzqO,EAAMjoE,OACZ,IAAK,KACHq5S,EAAO,EACP,MACF,IAAK,KACHA,EAAO,EACP,MACF,IAAK,IACHA,EAAO,EACP,MACF,IAAK,IACHA,EAAO,EACP,MACF,IAAK,IACHA,EAAO,EACP,MACF,IAAK,KACL,IAAK,KACL,IAAK,MACL,IAAK,MACHA,EAAO,EACP,MACF,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,KACL,IAAK,aACL,IAAK,KACHA,EAAO,EACP,MACF,IAAK,KACL,IAAK,KACL,IAAK,MACHA,EAAO,EACP,MACF,IAAK,IACL,IAAK,IACHA,EAAO,EACP,MACF,IAAK,IACL,IAAK,IACL,IAAK,IACHA,EAAO,GAGX,OAAOA,CACT,CA0DA,SAASnB,KACP,IAAI3qE,EAAM8kE,EASV,OARA9kE,EAlDF,WACE,IAAI+rE,EAAQC,EAAShsE,EAAMtlK,EAAOoxO,EAAMzwC,EAAOp4P,EAAO0mS,EAAUrqS,EAAM9N,EAKtE,GAJAu6S,EAAS9H,GACT3kS,EAAOqsS,KAGM,KADbG,EAAOD,GADPnxO,EAAQupO,KAGN,OAAO3kS,EAOT,IALAo7D,EAAMoxO,KAAOA,EACbrC,KACAuC,EAAU,CAACD,EAAQ9H,IAEnB5oC,EAAQ,CAAC/7P,EAAMo7D,EADfz3D,EAAQ0oS,OAEAG,EAAOD,GAAiB5H,KAAc,GAAG,CAE/C,KAAO5oC,EAAMlqQ,OAAS,GAAK26S,GAAQzwC,EAAMA,EAAMlqQ,OAAS,GAAG26S,MACzD7oS,EAAQo4P,EAAM9jP,MACdoyR,EAAWtuC,EAAM9jP,MAAM9kB,MACvB6M,EAAO+7P,EAAM9jP,MACby0R,EAAQz0R,MACRyoN,EAAO0pE,GAAuBC,EAAUrqS,EAAM2D,GAC9Co4P,EAAMxqQ,KAAKmvO,IAIbtlK,EAAQ+uO,MACFqC,KAAOA,EACbzwC,EAAMxqQ,KAAK6pE,GACXsxO,EAAQn7S,KAAKozS,IACbjkE,EAAO2rE,KACPtwC,EAAMxqQ,KAAKmvO,EACb,CAMA,IAFAA,EAAOq7B,EADP7pQ,EAAI6pQ,EAAMlqQ,OAAS,GAEnB66S,EAAQz0R,MACD/lB,EAAI,GACTw6S,EAAQz0R,MACRyoN,EAAO0pE,GAAuBruC,EAAM7pQ,EAAI,GAAGiB,MAAO4oQ,EAAM7pQ,EAAI,GAAIwuO,GAChExuO,GAAK,EAEP,OAAOwuO,CACT,CAMSisE,GACH,GAAM,OACRxC,KACA3E,EAAa6F,KACbJ,GAAO,KAEPvqE,EAxcJ,SAAqCpqO,EAAMkvS,EAAYC,GACrD,IAAI/zP,EAAO,IAAI4zP,GAAQe,IAIvB,OAHA30P,EAAKp7C,KAAOA,EACZo7C,EAAK8zP,WAAaA,EAClB9zP,EAAK+zP,UAAYA,EACV/zP,CACT,CAkcWk7P,CAA4BlsE,EAAM8kE,EAD7B6F,OAGP3qE,CACT,CAIA,SAASmrE,KACP,IAAInrE,EAAO2qE,KACX,GAAI,GAAM,KACR,MAAM,IAAIpyQ,MAAMuuQ,IAGlB,OAAO9mE,CACT,CACA,SAAShzB,GAAOvxG,GAEd,GAAQ,EACR,IAFA,GAASA,GAEOtqG,OAChB8yS,GAAY,KACZ,KACA,IAAIjkE,EAAOmrE,KACX,GAAIlH,GAAUhrS,OAASgsS,GACrB,MAAM,IAAI1sQ,MAAM,oCAElB,OAAOynM,CACT,CACA,IAAImsE,GAAY,CACdtnQ,IAAK,MACL9U,EAAG,SACHywP,IAAK,WACL4rB,KAAM,YACNC,MAAO,aACPpiQ,OAAQ,cACR39B,GAAI,UACJ2vQ,QAAS,eACTxmD,MAAO,aACP62E,UAAW,mBACXriD,UAAW,oBAEb,SAASsiD,GAAUC,GASjB,SAAS7oS,EAAGpR,EAAMk6S,EAAMxzS,GACtB,OAAO,SAAUjI,GACf,OAVJ,SAAgBuB,EAAMvB,EAAMy7S,EAAMxzS,GAChC,IAAIorB,EAAMmoR,EAAQx7S,EAAK,IAKvB,OAJIy7S,IACFpoR,EAAMooR,EAAO,IAAMpoR,EAAM,IACW,IAAhCooR,EAAKxoF,YAAY,OAAQ,KAAU5/L,EAAM,IAAMA,EAAM,MAEpDA,EAAM,IAAM9xB,GAAQ0G,EAAO,EAAI,GAAc,IAATA,EAAa,KAAO,IAAMjI,EAAKsmB,MAAM,GAAGgK,IAAIkrR,GAAS7yR,KAAK,KAAO,IAC9G,CAGW+yR,CAAOn6S,EAAMvB,EAAMy7S,EAAMxzS,EAClC,CACF,CACA,IAAI0/M,EAAO,WACTg0F,EAAS,SACTC,EAAS,SACX,MAAO,CAELp6R,MAAO,eACPoe,SAAU,kBACVjgB,IAAK,WACLJ,KAAM,YACN5B,KAAM,YACNqa,KAAM,YACNpY,MAAO,aACP4lJ,KAAM,YACN/pJ,IAAK,WACL2+B,IAAK,WACLrpB,MAAO,aACP4G,MAAO,aACPqhB,IAAK,WACLv/B,IAAK,WACLD,IAAK,WACLyB,IAAK,WACLqpC,OAAQ,cACRviB,MAAO,aACPpmB,IAAK,WACLO,KAAM,YACNiM,IAAK,WACL+sB,MAAO,SAAel1C,GAChBA,EAAKG,OAAS,GAAG,GAAM,wCACvBH,EAAKG,OAAS,GAAG,GAAM,yCAC3B,IAAIsd,EAAIzd,EAAKswB,IAAIkrR,GACjB,MAAO,YAAc/9R,EAAE,GAAK,cAAgBA,EAAE,GAAK,IAAMA,EAAE,GAAK,IAClE,EAEApb,IAAK,WACL4xO,IAAK,WACL4nE,SAAUl0F,EACVtgJ,KAAM10D,EAAG,UAAWg1M,EAAM,GAC1BsC,IAAKt3M,EAAG,SAAUg1M,EAAM,GACxBnmJ,KAAM7uD,EAAG,cAAeg1M,EAAM,GAC9BpmJ,MAAO5uD,EAAG,WAAYg1M,EAAM,GAC5B5K,MAAOpqM,EAAG,WAAYg1M,EAAM,GAC5B1K,QAAStqM,EAAG,aAAcg1M,EAAM,GAChCxK,QAASxqM,EAAG,aAAcg1M,EAAM,GAChCtK,aAAc1qM,EAAG,kBAAmBg1M,EAAM,GAC1CvkN,KAAMuP,EAAG,UAAWg1M,EAAM,GAC1Bm0F,eAAgBnpS,EAAG,oBAAqBg1M,EAAM,GAC9Co0F,QAASppS,EAAG,aAAcg1M,EAAM,GAChCq0F,OAAQrpS,EAAG,YAAag1M,EAAM,GAC9Bs0F,QAAStpS,EAAG,iBAAkBg1M,EAAM,GACpCu0F,SAAUvpS,EAAG,cAAeg1M,EAAM,GAClCw0F,SAAUxpS,EAAG,cAAeg1M,EAAM,GAClCy0F,WAAYzpS,EAAG,gBAAiBg1M,EAAM,GACtC00F,WAAY1pS,EAAG,gBAAiBg1M,EAAM,GACtC20F,gBAAiB3pS,EAAG,qBAAsBg1M,EAAM,GAEhDxnN,OAAQwS,EAAG,SAAU,MAAO,GAE5BgY,WAAY,aACZ6oB,SAAU,WACV+oQ,MAAO5pS,EAAG,cAAegpS,EAAQ,GACjCa,MAAO7pS,EAAG,cAAegpS,EAAQ,GACjCp5Q,UAAW5vB,EAAG,YAAagpS,GAC3B/yR,MAAOjW,EAAG,QAASgpS,GACnBxoR,KAAMxgB,EAAG,OAAQgpS,EAAQ,GAEzB/zO,OAAQg0O,EACRh3S,KAAM+N,EAAG,OAAQipS,GAEjBa,GAAI,SAAaz8S,GACXA,EAAKG,OAAS,GAAG,GAAM,qCACvBH,EAAKG,OAAS,GAAG,GAAM,sCAC3B,IAAIsd,EAAIzd,EAAKswB,IAAIkrR,GACjB,MAAO,IAAM/9R,EAAE,GAAK,IAAMA,EAAE,GAAK,IAAMA,EAAE,GAAK,GAChD,EAEJ,CAKA,SAAS+9R,GAAQhvJ,GAEf,IAAIkwJ,GADJlwJ,EAAMA,GAAO,CAAC,GACIkwJ,QAAUzgG,GAAMzvD,EAAIkwJ,SAAW,CAAC,EAChDC,EAAYnwJ,EAAImwJ,UAAY1gG,GAAMzvD,EAAImwJ,WAAa,CAAC,EACpDC,EAAYpwJ,EAAIowJ,WAAazB,GAC7B0B,GAAarwJ,EAAIqwJ,WAAatB,IAAW99E,GACzCq/E,EAAYtwJ,EAAIswJ,UAChBC,EAAWvwJ,EAAIuwJ,SACfC,EAAehxK,GAAW8wK,GAAaA,EAAY,SAAU9pS,GAC3D,MAAO,GAAGH,OAAOiqS,EAAW,MAAOjqS,OAAOG,EAAI,KAChD,EACEiqS,EAAU,CAAC,EACb/9K,EAAS,CAAC,EACVg+K,EAAc,EAChB,SAASz/E,EAAM0/E,GACb,GAAI,GAASA,GAAM,OAAOA,EAC1B,IAAItxP,EAAYuxP,EAAWD,EAAIl1S,MAE/B,OADiB,MAAb4jD,GAAmB,GAAM,qBAAuBsxP,EAAIl1S,MACjD4jD,EAAUsxP,EACnB,CACA,IAAIC,EAAa,CACflK,QAAS,SAAiBhlR,GACxB,OAAOA,EAAE+sN,GACX,EACA42B,WAAY,SAAoB3jP,GAC9B,IAAIlb,EAAKkb,EAAE3sB,KACX,OAAI27S,EAAc,EACTlqS,EACE,GAAe2pS,EAAW3pS,GAC5B,GAAM,uBAAyBA,GAC7B,GAAe4pS,EAAW5pS,GAC5B4pS,EAAU5pS,GACR,GAAe0pS,EAAS1pS,GAC1BA,GAEPiqS,EAAQjqS,GAAM,EACPgqS,EAAahqS,GAExB,EACAygS,iBAAkB,SAA0BvlR,GAC1C,IAAI7I,GAAK6I,EAAE8qR,SACTt0R,EAAI+4M,EAAMvvM,EAAE+V,QACV5e,IAAG63R,GAAe,GACtB,IAAIx/R,EAAI+/M,EAAMvvM,EAAEosL,UAMhB,OALI51L,IAAMq4R,IAER79K,EAlDR,SAAqB9hH,GACnB,IAAI8Q,EAAI9Q,GAAKA,EAAEjd,OAAS,EACxB,OAAO+tB,IAAe,MAAT9Q,EAAE,IAAuB,MAATA,EAAE8Q,IAAuB,MAAT9Q,EAAE,IAAwB,MAATA,EAAE8Q,IAAe9Q,EAAEkJ,MAAM,GAAI,GAAKlJ,CAClG,CA+CeigS,CAAY3/R,IAAM,GAEvB2H,IAAG63R,GAAe,GACfx4R,GAAKW,EAAI,IAAM3H,EAAI,IAAMA,EAAI,IACtC,EACA41R,eAAgB,SAAwBplR,GAChB,eAAlBA,EAAE2lR,OAAO5rS,MACX,GAAM,wBAA0BimB,EAAE2lR,OAAO5rS,MAE3C,IAAI4rS,EAAS3lR,EAAE2lR,OAAOtyS,KACpBvB,EAAOkuB,EAAEhuB,UACTyS,EAAK,GAAekqS,EAAWhJ,IAAWgJ,EAAUhJ,GAEtD,OADKlhS,GAAI,GAAM,0BAA4BkhS,GACpC7nK,GAAWr5H,GAAMA,EAAG3S,GAAQ2S,EAAK,IAAM3S,EAAKswB,IAAImtM,GAAO90M,KAAK,KAAO,GAC5E,EACAyqR,gBAAiB,SAAyBllR,GACxC,MAAO,IAAMA,EAAE+R,SAAS3P,IAAImtM,GAAO90M,KAAK,KAAO,GACjD,EACA0qR,iBAAkB,SAA0BnlR,GAC1C,MAAO,IAAMuvM,EAAMvvM,EAAE5f,MAAQ,IAAM4f,EAAEyqR,SAAW,IAAMl7E,EAAMvvM,EAAEjc,OAAS,GACzE,EACA0hS,gBAAiB,SAAyBzlR,GACxC,MAAO,IAAMA,EAAEyqR,SAAWl7E,EAAMvvM,EAAE0gC,UAAY,GAChD,EACA2kP,sBAAuB,SAA+BrlR,GACpD,MAAO,IAAMuvM,EAAMvvM,EAAEtpB,MAAQ,IAAM64N,EAAMvvM,EAAE4lR,YAAc,IAAMr2E,EAAMvvM,EAAE6lR,WAAa,GACtF,EACAP,kBAAmB,SAA2BtlR,GAC5C,MAAO,IAAMuvM,EAAMvvM,EAAE5f,MAAQ4f,EAAEyqR,SAAWl7E,EAAMvvM,EAAEjc,OAAS,GAC7D,EACAyhS,iBAAkB,SAA0BxlR,GAC1C,MAAO,IAAMA,EAAE2yH,WAAWvwH,IAAImtM,GAAO90M,KAAK,KAAO,GACnD,EACAwqR,SAAU,SAAkBjlR,GAC1BgvR,GAAe,EACf,IAAIl3S,EAAIy3N,EAAMvvM,EAAEiS,KAEhB,OADA+8Q,GAAe,EACRl3S,EAAI,IAAMy3N,EAAMvvM,EAAEzsB,MAC3B,GAEF,SAAS+5S,EAAQ2B,GACf,IAAIjrS,EAAS,CACXu4F,KAAMgzH,EAAM0/E,GACZF,QAASnmS,OAAOopB,KAAK+8Q,GACrB/9K,OAAQpoH,OAAOopB,KAAKg/F,IAItB,OAFA+9K,EAAU,CAAC,EACX/9K,EAAS,CAAC,EACHhtH,CACT,CAGA,OAFAspS,EAAQqB,UAAYA,EACpBrB,EAAQoB,UAAYA,EACbpB,CACT,CCxjDO,IAKL/0B,GACA62B,GACAl7B,GACAE,GACAD,GCRE,GAASn/N,GAAMq/N,GAASG,GAE1B6D,GAEA,GAAU,GAEVvxP,GAEAuoR,GAAUC,GAAQ,GDTT,GAAc,IAAI9/B,GAIzB,GAAU,IAAIA,GAMP,GAAa,CACtBpzQ,MAAO,GACPktO,UAAW,GACXC,QAAS,GACT+lC,aAAc,WACZ,GAAc,IAAIE,GAClB,GAAWlmC,UAAY,GACvB,GAAWC,QAAU,EACvB,EACAgmC,WAAY,WACV,IAAIggC,GAAY,GAChB,GAAQ3sS,IAAI2sS,EAAW,EAAI,GAAMA,EAAWA,GAC5Cn+S,KAAKk4O,UAAYl4O,KAAKm4O,QAAUn4O,KAAKgL,MAAQ,EAC/C,EACAuyQ,OAAQ,WACN,GAAQ/rQ,IAAI,GACd,GAEF,SAAS,KACP,GAAWxG,MAAQ,EACrB,CACA,SAAS,KACP,GAAUm8Q,GAAU62B,GACtB,CACA,SAAS,GAAexgR,EAAQumB,GAC9B,GAAW/4C,MAAQ,GACnBm8Q,GAAW3pP,EAAQwgR,GAAQj6P,EAE3B++N,GADAtlP,GAAU,GACQwlP,GAAU,GAAIj/N,GADbA,GAAO,IACkB,EAAIu6N,IAAYyE,GAAU,GAAIh/N,EAC5E,CACA,SAAS,GAAUvmB,EAAQumB,GAOzB,IAAIq6P,GANJ5gR,GAAU,IAMaslP,GACrBu7B,EAAWD,GAAW,EAAI,GAAK,EAC/BE,EAAWD,EAAWD,EACtB18B,EAAS,GARX39N,GADmBA,GAAO,IACd,EAAIu6N,IASdqE,EAAS,GAAI5+N,GACbr9C,EAAIq8Q,GAAUJ,EACdn9P,EAAIw9P,GAAUtB,EAASh7Q,EAAI,GAAI43S,GAC/BrsS,EAAIvL,EAAI23S,EAAW,GAAIC,GACzB,GAAY9sS,IAAI,GAAMS,EAAGuT,IAGzBs9P,GAAUtlP,EAAQwlP,GAAUtB,EAAQqB,GAAUJ,CAChD,CCjDA,ICVI47B,GAAIC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAU,GAExD,GAAI,GAAIC,GDQN,GAAe,CACjBzzS,MAAO,GACPktO,UAAWwmE,GACXvmE,QAASwmE,GACTzgC,aAAc,WACZ,GAAalzQ,MAAQ4zS,GACrB,GAAa1mE,UAAY2mE,GACzB,GAAa1mE,QAAU2mE,GACvBb,GAAW,IAAI7/B,GACf,GAAWF,cACb,EACAC,WAAY,WACV,GAAWA,aACX,GAAanzQ,MAAQ,GACrB,GAAaktO,UAAYwmE,GACzB,GAAavmE,QAAUwmE,GACnB,GAAc,GAAG,KAAY17B,GAAU,KAAMr/N,KAASw/N,GAAO,KAAa66B,GAAW,GAAS76B,GAAO,GAAY66B,IAAY,KAASr6P,IAAQ,IAClJ,GAAM,GAAK,GAAS,GAAM,GAAKq/N,EACjC,EACA1F,OAAQ,WACN,KAAY0F,GAAU,KAAMr/N,KAASw/N,GAAO,GAC9C,GAEF,SAAS,GAAY5lP,EAAQumB,GAC3Bm6P,GAAO39S,KAAK,GAAQ,CAAC,GAAUi9B,EAAQylP,GAAUzlP,IAC7CumB,EAAMH,KAAMA,GAAOG,GACnBA,EAAMq/N,KAAMA,GAAOr/N,EACzB,CACA,SAASohO,GAAU3nP,EAAQumB,GACzB,IAAI3lC,EAAIqjQ,GAAU,CAACjkP,EAAS,GAASumB,EAAM,KAC3C,GAAIruB,GAAI,CACN,IAAIs5M,EAAS4yC,GAAelsP,GAAItX,GAE9B2gS,EAAan9B,GADA,CAAC5yC,EAAO,IAAKA,EAAO,GAAI,GACGA,GAC1C+yC,GAA0Bg9B,GAC1BA,EAAav9B,GAAUu9B,GACvB,IAGEC,EAHE3kQ,EAAQ7c,EAASypP,GACnBtuE,EAAOt+J,EAAQ,EAAI,GAAK,EACxB4kQ,EAAUF,EAAW,GAAK,GAAUpmG,EAEpC2qE,EAAe,GAAIjpO,GAAS,IAC1BipO,GAAgB3qE,EAAOsuE,GAAUg4B,GAAWA,EAAUtmG,EAAOn7K,IAC/DwhR,EAAOD,EAAW,GAAK,IACZ37B,KAAMA,GAAO47B,GACwB17B,GAAgB3qE,EAAOsuE,IAA9Dg4B,GAAWA,EAAU,KAAO,IAAM,MAAiDA,EAAUtmG,EAAOn7K,IAC7GwhR,GAAQD,EAAW,GAAK,IACbn7P,KAAMA,GAAOo7P,IAEpBj7P,EAAMH,KAAMA,GAAOG,GACnBA,EAAMq/N,KAAMA,GAAOr/N,IAErBu/N,EACE9lP,EAASypP,GACPv/P,GAAM,GAAS8V,GAAU9V,GAAM,GAASu7P,MAAUA,GAAUzlP,GAE5D9V,GAAM8V,EAAQylP,IAAWv7P,GAAM,GAASu7P,MAAU,GAAUzlP,GAG9DylP,IAAW,IACTzlP,EAAS,KAAS,GAAUA,GAC5BA,EAASylP,KAASA,GAAUzlP,IAE5BA,EAASypP,GACPv/P,GAAM,GAAS8V,GAAU9V,GAAM,GAASu7P,MAAUA,GAAUzlP,GAE5D9V,GAAM8V,EAAQylP,IAAWv7P,GAAM,GAASu7P,MAAU,GAAUzlP,EAIxE,MACE0gR,GAAO39S,KAAK,GAAQ,CAAC,GAAUi9B,EAAQylP,GAAUzlP,IAE/CumB,EAAMH,KAAMA,GAAOG,GACnBA,EAAMq/N,KAAMA,GAAOr/N,GACvBruB,GAAKtX,EAAG6oQ,GAAUzpP,CACpB,CACA,SAASkhR,KACP,GAAa1zS,MAAQm6Q,EACvB,CACA,SAASw5B,KACP,GAAM,GAAK,GAAS,GAAM,GAAK17B,GAC/B,GAAaj4Q,MAAQ,GACrB0qB,GAAK,IACP,CACA,SAASkpR,GAAgBphR,EAAQumB,GAC/B,GAAIruB,GAAI,CACN,IAAI2kB,EAAQ7c,EAASypP,GACrBg3B,GAASzsS,IAAI,GAAI6oC,GAAS,IAAMA,GAASA,EAAQ,EAAI,KAAO,KAAOA,EACrE,MACE,GAAW7c,EAAQ,GAAQumB,EAE7B,GAAW/4C,MAAMwyB,EAAQumB,GACzBohO,GAAU3nP,EAAQumB,EACpB,CACA,SAAS86P,KACP,GAAW3mE,WACb,CACA,SAAS4mE,KACPF,GAAgB,GAAU,IAC1B,GAAWzmE,UACP,GAAI8lE,IAAY,KAAS,KAAYh7B,GAAU,MACnD,GAAM,GAAK,GAAS,GAAM,GAAKA,GAC/BvtP,GAAK,IACP,CAKA,SAAShO,GAAMo7P,EAASG,GACtB,OAAQA,GAAWH,GAAW,EAAIG,EAAU,IAAMA,CACpD,CACA,SAASi8B,GAAa/gS,EAAG8E,GACvB,OAAO9E,EAAE,GAAK8E,EAAE,EAClB,CACA,SAASk8R,GAAcx3P,EAAO18C,GAC5B,OAAO08C,EAAM,IAAMA,EAAM,GAAKA,EAAM,IAAM18C,GAAKA,GAAK08C,EAAM,GAAK18C,EAAI08C,EAAM,IAAMA,EAAM,GAAK18C,CAC5F,CC1HA,ICNIq/N,GDMA,GAAiB,CACnBizC,OAAQ,GACRvyQ,MAAO,GACPktO,UAAW,GACXC,QAAS,GACT+lC,aAAc,WACZ,GAAehmC,UAAY,GAC3B,GAAeC,QAAU,EAC3B,EACAgmC,WAAY,WACV,GAAejmC,UAAY,GAC3B,GAAeC,QAAU,EAC3B,GAIF,SAAS,GAAc36M,EAAQumB,GAC7BvmB,GAAU,GACV,IAAIkkP,EAAS,GADM39N,GAAO,IAE1Bq7P,GAAuB19B,EAAS,GAAIlkP,GAASkkP,EAAS,GAAIlkP,GAAS,GAAIumB,GACzE,CACA,SAASq7P,GAAuBn0S,EAAGC,EAAGua,KAClC84R,GACF,KAAOtzS,EAAI,IAAMszS,GACjB,KAAOrzS,EAAI,IAAMqzS,GACjB,KAAO94R,EAAI,IAAM84R,EACnB,CACA,SAAS,KACP,GAAevzS,MAAQq0S,EACzB,CACA,SAASA,GAAuB7hR,EAAQumB,GACtCvmB,GAAU,GACV,IAAIkkP,EAAS,GADM39N,GAAO,IAE1B,GAAK29N,EAAS,GAAIlkP,GAClB,GAAKkkP,EAAS,GAAIlkP,GAClBihR,GAAK,GAAI16P,GACT,GAAe/4C,MAAQs0S,GACvBF,GAAuB,GAAI,GAAIX,GACjC,CACA,SAASa,GAAkB9hR,EAAQumB,GACjCvmB,GAAU,GACV,IAAIkkP,EAAS,GADM39N,GAAO,IAExB94C,EAAIy2Q,EAAS,GAAIlkP,GACjBtyB,EAAIw2Q,EAAS,GAAIlkP,GACjB/X,EAAI,GAAIs+B,GACRr2B,EAAI,GAAM,IAAMA,EAAI,GAAKjI,EAAIg5R,GAAKvzS,GAAKwiB,GAAKA,EAAI+wR,GAAKxzS,EAAI,GAAKwa,GAAKiI,GAAKA,EAAI,GAAKxiB,EAAI,GAAKD,GAAKyiB,GAAI,GAAKziB,EAAI,GAAKC,EAAIuzS,GAAKh5R,GAC5H+4R,IAAM9wR,EACN,IAAMA,GAAK,IAAM,GAAKziB,IACtB,IAAMyiB,GAAK,IAAM,GAAKxiB,IACtB,IAAMwiB,GAAK+wR,IAAMA,GAAKh5R,IACtB25R,GAAuB,GAAI,GAAIX,GACjC,CACA,SAAS,KACP,GAAezzS,MAAQ,EACzB,CAIA,SAAS,KACP,GAAeA,MAAQu0S,EACzB,CACA,SAAS,KACPC,GAAkB,GAAU,IAC5B,GAAex0S,MAAQ,EACzB,CACA,SAASu0S,GAAuB/hR,EAAQumB,GACtC,GAAWvmB,EAAQ,GAAQumB,EAC3BvmB,GAAU,GAASumB,GAAO,GAC1B,GAAe/4C,MAAQw0S,GACvB,IAAI99B,EAAS,GAAI39N,GACjB,GAAK29N,EAAS,GAAIlkP,GAClB,GAAKkkP,EAAS,GAAIlkP,GAClBihR,GAAK,GAAI16P,GACTq7P,GAAuB,GAAI,GAAIX,GACjC,CACA,SAASe,GAAkBhiR,EAAQumB,GACjCvmB,GAAU,GACV,IAAIkkP,EAAS,GADM39N,GAAO,IAExB94C,EAAIy2Q,EAAS,GAAIlkP,GACjBtyB,EAAIw2Q,EAAS,GAAIlkP,GACjB/X,EAAI,GAAIs+B,GACRriC,EAAK,GAAK+D,EAAIg5R,GAAKvzS,EACnByW,EAAK88R,GAAKxzS,EAAI,GAAKwa,EACnBg6R,EAAK,GAAKv0S,EAAI,GAAKD,EACnB8K,EAAIsiB,GAAM3W,EAAIC,EAAI89R,GAClB/xR,EAAI,GAAK3X,GAET9D,EAAI8D,IAAM2X,EAAI3X,EAChB,GAAGvE,IAAIS,EAAIyP,GACX,GAAGlQ,IAAIS,EAAI0P,GACX,GAAGnQ,IAAIS,EAAIwtS,GACXjB,IAAM9wR,EACN,IAAMA,GAAK,IAAM,GAAKziB,IACtB,IAAMyiB,GAAK,IAAM,GAAKxiB,IACtB,IAAMwiB,GAAK+wR,IAAMA,GAAKh5R,IACtB25R,GAAuB,GAAI,GAAIX,GACjC,CExGe,SAAS,GAAUtgS,EAAG8E,GACnC,OAAY,MAAL9E,GAAkB,MAAL8E,EAAYsxB,IAAMp2B,EAAI8E,GAAK,EAAI9E,EAAI8E,EAAI,EAAI9E,GAAK8E,EAAI,EAAIsxB,GAC9E,CCFe,SAAS,GAAWp2B,EAAG8E,GACpC,OAAY,MAAL9E,GAAkB,MAAL8E,EAAYsxB,IAAMtxB,EAAI9E,GAAK,EAAI8E,EAAI9E,EAAI,EAAI8E,GAAK9E,EAAI,EAAIo2B,GAC9E,CCyDA,SAAS,KACP,OAAO,CACT,CC7DA,SAAS,GAA2BnvB,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,GAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,GAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,GAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CCFlL,SAAS,GAA2B9zM,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,GAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,GAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,GAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAoClL,SAAS,GAAI14L,GACX,OAAOA,aAAkB8jN,GAAY9jN,EAAS,IAAI8jN,GAAU9jN,EAC9D,CLlCA,IAAIk/Q,GAAY,YACZC,GAAQ,QAKRC,GAAc,UACdC,GAAehgL,GAAM+/K,IACrBE,GAAY,IACdC,GAAiB,IACjBC,GAAiB,MACjBC,GAAgB,OAChBC,GAAgB,OAChBC,GAAa,aAGf,SAASC,GAAUjoF,EAAOziK,GAOxB,IANA,IAIE2qP,EACAh9S,EALEu8H,EAASlqE,EAAMkqE,OACjBp/F,EAASk1B,EAAMl1B,OACf5R,EAAIgxG,EAAO/+H,OACXK,EAAI,EAGCA,EAAI0tB,IAAK1tB,EAOd,IANAmC,EAAIu8H,EAAO1+H,IACTu2M,OAAS53E,GAAM43E,QAAU53E,GAAMx8H,EAAEw8H,OAE/B87E,GADJ0kG,EAAOh9S,EAAEo0M,OAAO0gB,MACEkoF,EAAO3nG,GAAS2nG,IAC9B1kG,GAAOn7K,EAAOt/B,MAAKs/B,EAAOt/B,GAAKw3M,GAASl4K,EAAOt/B,KAC/Cy6M,GAAOn7K,EAAOt/B,GAAG,MAAKs/B,EAAOt/B,GAAKs/B,EAAOt/B,GAAG8vB,IAAI0nL,KAChDr1M,EAAEsF,OAASm3S,IAGb,GAAI,GAAQt/Q,EAAOt/B,IAAMs/B,EAAOt/B,GAAGgS,QAAQmtS,GAAQ,EAAIA,IAAS7/Q,EAAOt/B,GACrE,OAAO,OAGT,GAAImC,EAAEsF,OAASo3S,IACb,IAAKtkG,GAAQ4kG,EAAM7/Q,EAAOt/B,IAAK,OAAO,OACjC,GAAImC,EAAEsF,OAASu3S,IAEpB,IAAKzkG,GAAQ4kG,EAAM7/Q,EAAOt/B,IAAI,GAAM,GAAQ,OAAO,OAC9C,GAAImC,EAAEsF,OAASq3S,IAEpB,IAAKvkG,GAAQ4kG,EAAM7/Q,EAAOt/B,IAAI,GAAO,GAAQ,OAAO,OAC/C,GAAImC,EAAEsF,OAASs3S,KACfxkG,GAAQ4kG,EAAM7/Q,EAAOt/B,IAAI,GAAO,GAAO,OAAO,EAIzD,OAAO,CACT,CA0DA,IAAI,GGjHW,SAAkBmC,GAC/B,IAAIq3M,EAAUsN,EAAU3tK,EAoBxB,SAASrrC,EAAKmP,EAAGlT,GACf,IAAIivM,EAAKt5M,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,EACzEu5M,EAAKv5M,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAKud,EAAEtd,OAC/E,GAAIq5M,EAAKC,EAAI,CACX,GAAuB,IAAnBO,EAASzvM,EAAGA,GAAU,OAAOkvM,EACjC,EAAG,CACD,IAAI54J,EAAM24J,EAAKC,IAAO,EAClB6N,EAAS7pM,EAAEojC,GAAMt2C,GAAK,EAAGivM,EAAK34J,EAAM,EAAO44J,EAAK54J,CACtD,OAAS24J,EAAKC,EAChB,CACA,OAAOD,CACT,CAmBA,OA3CiB,IAAb72M,EAAExC,QACJ65M,EAAW,GACXsN,EAAW,SAAkBjiM,EAAG9a,GAC9B,OAAO,GAAU5H,EAAE0iB,GAAI9a,EACzB,EACAovC,EAAQ,SAAet0B,EAAG9a,GACxB,OAAO5H,EAAE0iB,GAAK9a,CAChB,IAEAyvM,EAAWr3M,IAAM,IAAaA,IAAM,GAAaA,EAAI,GACrD2kN,EAAW3kN,EACXg3C,EAAQh3C,GAgCH,CACL2L,KAAMA,EACN6uB,OARF,SAAgB1f,EAAGlT,GACjB,IAAIivM,EAAKt5M,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,EAEzEM,EAAI8N,EAAKmP,EAAGlT,EAAGivM,GADVt5M,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAKud,EAAEtd,QACnD,GAC5B,OAAOK,EAAIg5M,GAAM7/J,EAAMl8B,EAAEjd,EAAI,GAAI+J,IAAMovC,EAAMl8B,EAAEjd,GAAI+J,GAAK/J,EAAI,EAAIA,CAClE,EAIEyR,MArBF,SAAewL,EAAGlT,GAChB,IAAIivM,EAAKt5M,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,EACzEu5M,EAAKv5M,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAKud,EAAEtd,OAC/E,GAAIq5M,EAAKC,EAAI,CACX,GAAuB,IAAnBO,EAASzvM,EAAGA,GAAU,OAAOkvM,EACjC,EAAG,CACD,IAAI54J,EAAM24J,EAAKC,IAAO,EAClB6N,EAAS7pM,EAAEojC,GAAMt2C,IAAM,EAAGivM,EAAK34J,EAAM,EAAO44J,EAAK54J,CACvD,OAAS24J,EAAKC,EAChB,CACA,OAAOD,CACT,EAYF,CHyDa,CAAS2lG,IACpB,GAAa,GAAO7wS,KACpB,GAAc,GAAO2D,MAuIvB,IAAIo6C,IAAOu9K,GAAO,CAAC,GAAG,OAAgBA,GAAM,GAAG/2N,OAAOqsS,GAAa,WIxPpD,WAEb,IADA,IAAI19S,EAAM,IAAIoiP,GACL/6L,EAAO3oD,UAAUC,OAAQ0yE,EAAS,IAAI9yC,MAAM8oB,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IACjF+pB,EAAO/pB,GAAQ5oD,UAAU4oD,GAE3B,IAAK,IAAI7oD,EAAK,EAAG2/S,EAAU/sO,EAAQ5yE,EAAK2/S,EAAQz/S,OAAQF,IAAM,CAC5D,IAEE49N,EADEC,EAAY,GADJ8hF,EAAQ3/S,IAGpB,IACE,IAAK69N,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIlzB,EAAIm5M,EAAMp8N,MACdD,EAAIsP,IAAI4T,EACV,CACF,CAAE,MAAOoiB,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACF,CACA,OAAOnB,CACT,KJmOsF,OAAgBooO,GAAM,GAAG/2N,OAAOqsS,GAAa,eKxPpH,SAAsBp/Q,GACnC,IAAK,IAAI+oB,EAAO3oD,UAAUC,OAAQ0yE,EAAS,IAAI9yC,MAAM8oB,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IACpG+pB,EAAO/pB,EAAO,GAAK5oD,UAAU4oD,GAE/BhpB,EAAS,IAAI8jN,GAAU9jN,GACvB+yC,EAASA,EAAOviD,IAAI,IACpB,IACEutM,EADEC,EAAY,GAA2Bh+L,GAE3C,IACEtd,EAAK,IAAKs7M,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CACvD,IAEE2qL,EAFE9gO,EAAQo8N,EAAMp8N,MACd+gO,EAAa,GAA2B3vJ,GAE5C,IACE,IAAK2vJ,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,CAErD,IADY2qL,EAAO9gO,MACR2/B,IAAI3/B,GAAQ,CACrBq+B,EAAO6F,OAAOlkC,GACd,SAAS+gB,CACX,CACF,CACF,CAAE,MAAOskB,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACF,CACF,CAAE,MAAOmkC,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACA,OAAOm9B,CACT,KLuNiK,OAAgB8pM,GAAM,WAAW,SAAiB9nM,EAAMrgC,GACvN,IAAKqgC,EAAK3hC,OAAQ,OAAOsB,EAGzB,IAFA,IAAIjB,EAAI,EACN0tB,EAAIzsB,EAAMtB,OACLK,EAAI0tB,IAAK1tB,EAAOshC,EAAKtvB,QAAQ/Q,EAAMjB,IAAM,GAAGshC,EAAKjiC,KAAK4B,EAAMjB,IACnE,OAAOshC,CACT,KAAI,OAAgB8nM,GAAM,eAAe,SAAqB9nM,EAAMrgC,GAClE,OAAQqgC,EAAK3hC,OAAiB2hC,EAAKjyB,QAAO,SAAU0B,GAClD,OAAO9P,EAAM+Q,QAAQjB,IAAM,CAC7B,IAFsB9P,CAGxB,KAAI,OAAgBmoO,GAAM,WAAW,SAAiB9nM,EAAMrgC,GAC1D,IAAI+3M,EAAKxB,GAASv2M,EAAM,IACtBg4M,EAAKzB,GAASv2M,EAAM,IAKtB,OAJI+3M,EAAKC,IACPD,EAAK/3M,EAAM,GACXg4M,EAAKh4M,EAAM,IAERqgC,EAAK3hC,QACN2hC,EAAK,GAAK03K,IAAI13K,EAAK,GAAK03K,GACxB13K,EAAK,GAAK23K,IAAI33K,EAAK,GAAK23K,GACrB33K,GAHkB,CAAC03K,EAAIC,EAIhC,KAAI,OAAgBmwB,GAAM,eAAe,SAAqB9nM,EAAMrgC,GAClE,IAAI+3M,EAAKxB,GAASv2M,EAAM,IACtBg4M,EAAKzB,GAASv2M,EAAM,IAKtB,OAJI+3M,EAAKC,IACPD,EAAK/3M,EAAM,GACXg4M,EAAKh4M,EAAM,IAERqgC,EAAK3hC,OACNs5M,EAAK33K,EAAK,IAAMA,EAAK,GAAK03K,EACrB,IAEH13K,EAAK,GAAK03K,IAAI13K,EAAK,GAAK03K,GACxB13K,EAAK,GAAK23K,IAAI33K,EAAK,GAAK23K,GAEvB33K,GAPkB,CAAC03K,EAAIC,EAQhC,IAAImwB,IAGJ,SAASi2E,GAAiBt+S,EAAMvB,EAAM8/S,EAAOl/R,GACvC5gB,EAAK,GAAGiI,OAASirS,IAAS,GAAM,mEACpC,IAAIluR,EAAOhlB,EAAK,GAAGyB,MAEjB09H,EAAQ,OACR4gL,EANY,IAMc5gL,EAC1B6gL,EARa,IAQWh7R,GAHnBhlB,EAAKG,QAAU,GAAK43M,GAAK/3M,GAAMyB,SAM3Bu9S,IAAc,GAAep+R,EAAQm/R,KAC9Cn/R,EAAOm/R,GAAaD,EAAMvgJ,QAAQv6I,GAAMi7R,UAAUH,EAAO3gL,IAItD,GAAev+G,EAAQo/R,KAC1Bp/R,EAAOo/R,GAAYF,EAAMvgJ,QAAQv6I,GAAMk7R,YAE3C,CMlTA,SAAS,GAA2Bx7R,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,GAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,GAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,GAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAalL,SAAS,GAAKj3N,GACZ,IAAIyjB,EAAO1lB,KAAKmzB,QAAQzN,KAAKzjB,GAC7B,OAAOyjB,EAAOA,EAAK8a,OAAOr+B,MAAQ,EACpC,CAqBA,IAAIgxD,GAAO,SAAcxnD,GACvB,OAAO,SAAUxJ,EAAOkxN,GAEtB,OADarzN,KAAKmzB,QAAQuqM,SAAS77J,SACrBl2D,GAAQ0nN,EAAfxxJ,CAAqB1/D,EAC9B,CACF,EACI,GAASgxD,GAAK,UACd,GAAaA,GAAK,cAClB,GAAYA,GAAK,aACjB,GAAYA,GAAK,aACjB,GAAWA,GAAK,YAChB0tP,GAAU,IAAI79S,KAAK,IAAM,EAAG,GAChC,SAAS,GAAKi/D,EAAO0oJ,EAAK5I,GACxB,OAAK9/L,OAAO0gB,UAAUs/B,IAAWhgD,OAAO0gB,UAAUgoL,IAClDk2F,GAAQC,QAAQ,KAChBD,GAAQ16F,SAASlkJ,GACjB4+O,GAAQp8F,QAAQkG,GACT,GAAW/oN,KAAK5B,KAAM6gT,GAAS9+F,IAJyB,EAKjE,CAaA,IAEIg/F,GAAc,IACdC,GAAe,IACnB,SAASC,GAAYh/S,EAAMvB,EAAM8/S,EAAOl/R,GAClC5gB,EAAK,GAAGiI,OAASirS,IACnB,GAAM,8DAER,IAAIluR,EAAOhlB,EAAK,GAAGyB,MACjBu+S,EATa,IASWh7R,EAC1B,IAAK,GAAeg7R,EAAUp/R,GAC5B,IACEA,EAAOo/R,GAAYF,EAAMvgJ,QAAQv6I,GAAMk7R,WACzC,CAAE,MAAOp5Q,GAET,CAEJ,CAWA,SAAS05Q,GAAaj/S,EAAMvB,EAAM8/S,EAAOl/R,GACvC,GAAI5gB,EAAK,GAAGiI,OAASirS,GAEnBuN,GAAmBX,EAAOl/R,EAAQ5gB,EAAK,GAAGyB,YAG1C,IAAKF,KAAQu+S,EAAMt2D,OACjBi3D,GAAmBX,EAAOl/R,EAAQrf,EAGxC,CACA,SAASk/S,GAAmBX,EAAOl/R,EAAQrf,GACzC,IAAIm/S,EAAYL,GAAc9+S,EAC9B,IAAK,GAAeqf,EAAQ8/R,GAC1B,IACE9/R,EAAO8/R,GAAaZ,EAAMa,SAASp/S,EACrC,CAAE,MAAOulC,GAET,CAEJ,CACA,SAAS85Q,GAASC,EAAgB57Q,GAChC,GAAI+mG,GAAW60K,GACb,OAAOA,EAET,GAAI,GAASA,GAAiB,CAC5B,IAAIC,EAAa77Q,EAAIukN,OAAOq3D,GAC5B,OAAOC,GzJ4JX,SAA2B1oS,GACzB,OAAOA,IAA+B,IAAtBA,EAAMqxO,GACxB,CyJ9JyBs3D,CAAkBD,EAAWr/S,OAASq/S,EAAWr/S,WAAQs0B,CAChF,CAEF,CACA,SAASirR,GAAuBxF,EAASyF,EAAOC,GAE9CD,EAAME,YAAc,SAAU/jS,GAC5B,OAAOA,GAAKA,EAAEw9B,UAAYx9B,EAAEw9B,YAAc,CAC5C,EAGAsmQ,EAAS37E,WAAai7E,GACtBU,EAASE,OAASZ,GAClBU,EAASv8C,OAAS67C,GAGlB,IAAI9uP,EAAM,SAAa5V,GACrB,MAAO,MAAQA,EAAI7zC,OAASirS,GAAU,GAAYmN,GAAcvkQ,EAAIr6C,OAAS,GAAY4+S,IAAe,IAAM7E,EAAQ1/P,IAAQ,GAChI,EAIA,MAAO,CACLypL,WAAY,SAAoBvlO,GAC9B,MAAO,oBAAoB6S,OAAO6+C,EAAI1xD,EAAK,IAAK,IAClD,EACAohT,OAAQ,SAAgBphT,GACtB,MAAO,GAAG6S,OAAO6+C,EAAI1xD,EAAK,IAAK,WACjC,EACA2kQ,OAAQ,SAAgB3kQ,GACtB,MAAO,GAAG6S,OAAO6+C,EAAI1xD,EAAK,IAAK,KAAK6S,OAAO2oS,EAAQx7S,EAAK,IAAK,IAC/D,EAEJ,CACA,SAASqhT,GAAU3sP,EAAY4sP,GAC7B,OAAO,SAAUlhC,EAAYgR,EAASpgR,GACpC,GAAIovQ,EAAY,CAEd,IAAI1iQ,EAAIkjS,GAASxgC,GAAapvQ,GAAS1R,MAAMmzB,SAC7C,OAAO/U,GAAKA,EAAEvX,KAAKuuD,GAAY08N,EACjC,CAEE,OAAOkwB,EAAalwB,EAExB,CACF,CACA,IAAImwB,GAAUF,GAAU,QT7GT,SAAUp9Q,GAGvB,OAFA,GAAU,IAAIy5O,GACd,GAAOz5O,EAAQ,IACE,EAAV,EACT,IS0GIu9Q,GAAYH,GAAU,UR3CX,SAAUnqF,GACvB,IAAI12N,EAAG0tB,EAAGzQ,EAAG8E,EAAGqhG,EAAQ69L,EAAU9nQ,EAMlC,GALA+oO,GAAOH,KAAY,GAAUr/N,GAAOr/C,KACpC25S,GAAS,GACT,GAAOtmF,EAAS,IAGZhpM,EAAIsvR,GAAOr9S,OAAQ,CAIrB,IAHAq9S,GAAO3rS,KAAK2sS,IAGPh+S,EAAI,EAAkBojH,EAAS,CAAxBnmG,EAAI+/R,GAAO,IAAkBh9S,EAAI0tB,IAAK1tB,EAE5Ci+S,GAAchhS,GADlB8E,EAAIi7R,GAAOh9S,IACY,KAAOi+S,GAAchhS,EAAG8E,EAAE,KAC3CyE,GAAMvJ,EAAE,GAAI8E,EAAE,IAAMyE,GAAMvJ,EAAE,GAAIA,EAAE,MAAKA,EAAE,GAAK8E,EAAE,IAChDyE,GAAMzE,EAAE,GAAI9E,EAAE,IAAMuJ,GAAMvJ,EAAE,GAAIA,EAAE,MAAKA,EAAE,GAAK8E,EAAE,KAEpDqhG,EAAO/jH,KAAK4d,EAAI8E,GAMpB,IAAKk/R,GAAY59S,IAAiCrD,EAAI,EAAGid,EAAImmG,EAAlC11F,EAAI01F,EAAOzjH,OAAS,GAAyBK,GAAK0tB,EAAGzQ,EAAI8E,IAAK/hB,EACvF+hB,EAAIqhG,EAAOpjH,IACNm5C,EAAQ3yB,GAAMvJ,EAAE,GAAI8E,EAAE,KAAOk/R,IAAUA,EAAW9nQ,EAAO,GAAUp3B,EAAE,GAAIggQ,GAAU9kQ,EAAE,GAE9F,CAEA,OADA+/R,GAAS,GAAQ,KACV,KAAY35S,KAAYq/C,KAASr/C,IAAW,CAAC,CAACgwC,IAAKA,KAAM,CAACA,IAAKA,MAAQ,CAAC,CAAC,GAASqP,IAAO,CAACq/N,GAASG,IAC5G,IQcIg/B,GAAcL,GAAU,YPtEb,SAAUp9Q,GACvB45Q,GAAKC,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,EACxC,GAAK,IAAIpgC,GACT,GAAK,IAAIA,GACT,GAAK,IAAIA,GACT,GAAOz5O,EAAQ,IACf,IAAI15B,GAAK,GACPC,GAAK,GACLua,GAAK,GACL1P,EAAIsiB,GAAMptB,EAAGC,EAAGua,GAGlB,OAAI1P,EAAI,KACN9K,EAAI,GAAIC,EAAI,GAAIua,EAAI,GAEhB+4R,GAAK,KAASvzS,EAAI,GAAIC,EAAI,GAAIua,EAAI,KACtC1P,EAAIsiB,GAAMptB,EAAGC,EAAGua,IAER,IAAiB,CAAC8uB,IAAKA,KAE1B,CAAC,GAAMrpC,EAAGD,GAAK,GAAS,GAAKwa,EAAI1P,GAAK,GAC/C,IO8DA,SAAS,GAAIsS,EAAI1c,EAAQjL,GACvB,IACE2nB,EAAG1c,GAAQtK,MAAMgnB,EAAI,CAAC,cAAc9U,OAAO,GAAGyT,MAAMplB,KAAKlB,IAC3D,CAAE,MAAO8mC,GACPnf,EAAG43H,KAAKz4G,EACV,CACA,OAAO9mC,EAAKA,EAAKG,OAAS,EAC5B,CAYA,SAASwhT,GAAwBC,GAC/B,IAAIj9S,EAAMi9S,EAAe,IACzB,OAAIj9S,GAAO,OACFA,EAAM,MAER4U,KAAK0B,KAAKtW,EAAM,MAAS,MAAO,IACzC,CACA,SAASk9S,GAAUxuQ,GACjB,IAAI5uB,GAAI,SAAI4uB,GAIZ,MAAO,MAHDsuQ,GAAwBl9R,EAAEjG,GAGZ,MAFdmjS,GAAwBl9R,EAAEqvB,GAEC,MAD3B6tQ,GAAwBl9R,EAAElC,EAElC,CAeA,SAASq9B,GAAMniC,EAAG8E,GAChB,OAAO9E,IAAM8E,GAAK9E,GAAMA,GAAK8E,GAAMA,IAAW,GAAQ9E,MAAK,GAAQ8E,IAAM9E,EAAEtd,SAAWoiB,EAAEpiB,SAE1F,SAAoBsd,EAAG8E,GACrB,IAAK,IAAI/hB,EAAI,EAAG0tB,EAAIzQ,EAAEtd,OAAQK,EAAI0tB,IAAK1tB,EACrC,IAAKo/C,GAAMniC,EAAEjd,GAAI+hB,EAAE/hB,IAAK,OAAO,EAEjC,OAAO,CACT,CAPmGshT,CAAWrkS,EAAG8E,MAAakrC,GAAShwC,KAAMgwC,GAASlrC,KAAKw/R,GAAYtkS,EAAG8E,GAC1K,CAOA,SAASw/R,GAAYtkS,EAAG8E,GACtB,IAAK,IAAI4d,KAAO1iB,EACd,IAAKmiC,GAAMniC,EAAE0iB,GAAM5d,EAAE4d,IAAO,OAAO,EAErC,OAAO,CACT,CACA,SAAS6hR,GAAgBrrS,GACvB,OAAO,SAAUqvB,GACf,OAAO+7Q,GAAYprS,EAAOqvB,EAC5B,CACF,CAuDA,IAAIi8Q,GAAY,CAAC,EAKjB,SAAS,GAAMC,GACb,OAAO,GAAQA,IAAQjsQ,YAAYC,OAAOgsQ,GAAOA,EAAM,IACzD,CACA,SAAS,GAASA,GAChB,OAAO,GAAMA,KAAS,GAASA,GAAOA,EAAM,KAC9C,CAkGA,IAAIzqF,GAAQ,SAAepyM,GACzB,OAAOA,EAAEL,IACX,EACA,SAASm9R,GAAU5gT,EAAMkxB,GACvB,IAAI+2F,EAAO,GAAKtoH,KAAKuxB,EAASlxB,GAC9B,OAAOioH,EAAK3+C,MAAQ2+C,EAAK3+C,KAAK4mL,QAAU,CAAC,CAC3C,CAWA,IAAI2wD,GAAU,WACZ,MAAyB,oBAAX5/S,QAA0BA,QAAU,IACpD,EAcA,SAAS,GAAU+f,EAAGiqI,EAAKx7I,GACzB,IAAKuR,EAAG,MAAO,GACf,IAAI/L,GAAK,OAAe+L,EAAG,GACzBuC,EAAItO,EAAG,GACPjF,EAAIiF,EAAG,GACPqK,GAAM,IAAIu3O,IAAS52P,IAAIsjB,EAAE,GAAIA,EAAE,GAAIvT,EAAE,GAAIA,EAAE,IAE7C,OAAO,GADGP,GAAS1R,KAAKmzB,QAAQuqM,SAASm1C,aAAatnM,KAC5BhqD,EAE5B,SAAgB2rI,GACd,IAAI9uI,EAAI,KACR,GAAI8uI,EAAK,CACP,IAAIjlF,EAAQ,GAAQilF,EAAIgzG,UACtBjtC,EAAQ,GAAQ/lE,EAAI61J,UACtB3kS,EAAI,SAAWsoB,GACb,QAASuhC,EAAMpnE,QAAUonE,EAAMvN,MAAK,SAAU32D,GAC5C,OAAO2iC,EAAEw5N,WAAan8P,CACxB,QAASkvN,EAAMpyN,QAAUoyN,EAAMv4J,MAAK,SAAU58C,GAC5C,OAAO4oB,EAAEzkC,OAAS6b,CACpB,IACF,CACF,CACA,OAAOM,CACT,CAhBiC,CAAO8uI,GACxC,CA6HA,IAAI81J,GAAkB,CACpBh+P,OAAQ,WACN,OAAO,IACT,EAEAygL,iBAAkBA,GAClBW,oBAAqBA,GACrBU,kBAAmBA,GACnBtB,cAAeA,GACfW,iBAAkBA,GAClBU,eAAgBA,GAChBjB,eAAgBA,GAChBS,kBAAmBA,GACnBU,gBAAiBA,GACjB1B,aAAcA,GACda,gBAAiBA,GACjBU,cAAeA,GACflmM,QAAS,GACTg7K,UAAWA,GACXC,OAAQA,GACRsnG,UAAW,SAAmBv8Q,GAC5B,YAAajQ,IAANiQ,CACT,EACAigB,SAAUA,GACVwH,SAAUA,GACVK,SAAUA,GACV00P,SAAU,GACVxpF,QAASA,GACT1rE,QAAS,SAAiBtnH,GACxB,OAAY,MAALA,GAAaA,GAAMA,CAC5B,EACA81K,UAAWA,GACX2mG,OAAQ,SAAgBz8Q,GACtB,OAAO,GAAQA,EACjB,EAEAgyK,SAAUA,GACV91L,SAAU,GACVwgS,QAtSF,SAAiBR,GAEf,IADA,IAAIS,EACKp9M,EAAQrlG,UAAUC,OAAQH,EAAO,IAAI+/B,MAAMwlE,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACxGxlG,EAAKwlG,EAAQ,GAAKtlG,UAAUslG,GAE9B,OAAQm9M,EAAY,GAAST,IAAM1vS,QAAQ7R,MAAMgiT,EAAW3iT,EAC9D,EAiSE2oB,KA9SF,SAAcu5R,GAEZ,IADA,IAAIU,EACK/5P,EAAO3oD,UAAUC,OAAQH,EAAO,IAAI+/B,MAAM8oB,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IAClG9oD,EAAK8oD,EAAO,GAAK5oD,UAAU4oD,GAE7B,OAAQ85P,EAAS,GAAMV,IAAMv5R,KAAKhoB,MAAMiiT,EAAQ5iT,EAClD,EAySE6iT,YAjSF,SAAqBX,GAEnB,IADA,IAAIY,EACKh8M,EAAQ5mG,UAAUC,OAAQH,EAAO,IAAI+/B,MAAM+mE,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACxG/mG,EAAK+mG,EAAQ,GAAK7mG,UAAU6mG,GAE9B,OAAQ+7M,EAAa,GAASZ,IAAMjvF,YAAYtyN,MAAMmiT,EAAY9iT,EACpE,EA4REklB,QApRF,SAAiB8b,EAAK8mC,EAASi7O,GAE7B,OADI/2K,GAAW+2K,IAAO,GAAM,wCACrB99R,OAAO+b,GAAK9b,QAAQ4iD,EAASi7O,EACtC,EAkRE7yR,QAjRF,SAAiBgyR,GACf,OAAO,GAAMA,GAAK57R,QAAQ4J,SAC5B,EAgRE5J,MA7RF,SAAe47R,GAEb,IADA,IAAIc,EACK77M,EAAQjnG,UAAUC,OAAQH,EAAO,IAAI+/B,MAAMonE,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACxGpnG,EAAKonG,EAAQ,GAAKlnG,UAAUknG,GAE9B,OAAQ47M,EAAa,GAASd,IAAM57R,MAAM3lB,MAAMqiT,EAAYhjT,EAC9D,EAwRE46M,MAAOA,GACPO,KAAMA,GACNK,MA/YF,WACE,IAAIx7M,EAAO,GAAGsmB,MAAMplB,KAAKhB,WAEzB,OADAF,EAAKiV,QAAQ,CAAC,GACPmgC,GAAOz0C,WAAM,GAAQ,QAAmBX,GACjD,EA4YE47M,IAAKA,GACL7D,KAAMA,GACNkrG,MAlUF,SAAej+R,EAAMzjB,GACnB,IAAIo1M,EAAWsrG,GAAU1gT,KAAU0gT,GAAU1gT,GAAQ49H,GAAM59H,IAC3D,OAAO,GAAQyjB,GAAQA,EAAKsL,IAAIqmL,GAAYA,EAAS3xL,EACvD,EAgUEwqG,KAAMA,GACNurF,QAASA,GACTmB,SAAUA,GACVjpK,IAAK,MACL2zM,IAAKA,GACLI,IAAKA,GACLzyM,IAAK,MACLstQ,UAAWA,GACXqB,SAlaF,SAAkBC,EAAQC,GACxB,IAAIC,EAAOxB,GAAUsB,GACnBG,EAAOzB,GAAUuB,GAGnB,OAFS7pS,KAAKE,IAAI4pS,EAAMC,GAET,MADN/pS,KAAKC,IAAI6pS,EAAMC,GACO,IACjC,EA6ZEpoP,SAAU,GACV5nB,OAAQ,GACRu+K,UAAW,GACXC,SAAU,GACVhH,UAAWA,GACXE,YAAaA,GACb+G,WAAY,GACZC,UAAW,GACXnH,WAAYA,GACZE,aAAcA,GACdxC,kBAAmBA,GACnBg7F,YAjlBF,SAAqBhiP,GACnB,OAAO,GAAKrgE,KAAK5B,KAAMiiE,EAAO,EAAG,KACnC,EAglBEiiP,kBA/kBF,SAA2BjiP,GACzB,OAAO,GAAKrgE,KAAK5B,KAAMiiE,EAAO,EAAG,KACnC,EA8kBEU,UA7kBF,SAAmBgoJ,GACjB,OAAO,GAAK/oN,KAAK5B,KAAM,EAAG,EAAI2qN,EAAK,KACrC,EA4kBEw5F,gBA3kBF,SAAyBx5F,GACvB,OAAO,GAAK/oN,KAAK5B,KAAM,EAAG,EAAI2qN,EAAK,KACrC,EA0kBE7Q,QAASA,GACTC,WAAYA,GACZwP,KAAMA,GACNU,QAASA,GACTZ,UAAWA,GACXU,aAAcA,GACd9pE,KAndF,WACE,OAAO,GAAIjgJ,KAAKmzB,QAAQuqM,SAAU,OAAQ98N,UAC5C,EAkdEy0D,KAjdF,WACE,OAAO,GAAIr1D,KAAKmzB,QAAQuqM,SAAU,OAAQ98N,UAC5C,EAgdEomF,MA/cF,WACE,OAAO,GAAIhnF,KAAKmzB,QAAQuqM,SAAU,QAAS98N,UAC7C,EA8cEyrN,OAAQ,SAAgB3lL,GACtB,OAAO,GAAQA,EACjB,EAEA09Q,QA9eF,SAAiB3sS,GACf,IAAI/F,EAAQ1R,KAAKmzB,QAAQzhB,MACrBvP,GAAQ,EACZ,GAAIuP,EAAO,KAAO+F,GAAM,CACtB,GAAIA,IAAS/F,EAAO,CAClBvP,GAAQ,EACR,KACF,CACAsV,EAAOA,EAAKg/C,KAAK/kD,KACnB,CACA,OAAOvP,CACT,EAoeE+qB,UAAW,GACX+sL,WAAYA,GACZoqG,cAxXF,SAAuBt5S,GACrB,IAAIhH,EAAIgH,EAAM6D,QACZhC,EAAK7I,EAAE,GAAGoH,QAAUpH,EAAE,GAAGoH,QACzB0B,EAAK9I,EAAE,GAAGqH,QAAUrH,EAAE,GAAGqH,QAC3B,OAAO6O,KAAKoe,MAAMzrB,EAAIC,EACxB,EAoXEy3S,WAnXF,SAAoBv5S,GAClB,IAAIhH,EAAIgH,EAAM6D,QACd,OAAOqL,KAAKqG,MAAMvc,EAAE,GAAGqH,QAAUrH,EAAE,GAAGqH,QAASrH,EAAE,GAAGoH,QAAUpH,EAAE,GAAGoH,QACrE,EAiXE05I,OA9OF,WACE,IAAIn3H,EAAIo1R,KACR,OAAOp1R,EAAIA,EAAEm3H,OAAS,CAAC,CACzB,EA4OE0nD,cAvOF,WACE,IAAI6lE,EAAOpyQ,KAAKmzB,QAAQuqM,SACtBlzN,EAAK4nQ,EAAKppQ,WAAaopQ,EAAKppQ,YAC9B,OAAOwB,EAAK,CAACA,EAAGm7E,YAAan7E,EAAGg8E,cAAgB,MAAC/vD,OAAWA,EAC9D,EAoOE8tR,WA5OF,WACE,IAAI72R,EAAIo1R,KACR,OAAOp1R,EAAI,CAACA,EAAE+4D,WAAY/4D,EAAE44D,aAAe,MAAC7vD,OAAWA,EACzD,EA0OE+tR,UAnUF,SAAmB1zR,EAAO43N,EAAcC,GACtC,OAAOF,GAAU33N,GAAS,EAAG43N,GAAgB,EAAGC,GAAgB,EAClE,EAkUE87D,QA7oBF,SAAiBxiT,EAAM84N,GACrB,IAAI1yM,EAAKroB,KAAKmzB,QAAQuqM,SAEpBr0G,EADOrpH,KAAKmzB,QAAQzN,KAAKzjB,GACZonH,MAEf,OADAhhG,EAAGwyM,MAAMxxG,EAAOhhG,EAAG6xM,YAAY/mN,OAAO0kM,IAAQ4iB,OAAOM,IAC9C,CACT,EAwoBE2pF,UA7QF,SAAmB79S,GACjB,IAAIuX,EAAI,KACR,OAAO,SAAU+U,GACf,OAAOA,EAAU8gO,GAAW9gO,EAAS/U,EAAIA,GAAK,GAAUvX,IAASA,CACnE,CACF,EAyQEuyM,UAAWA,GACXC,OAAQA,GACRC,OAAQA,GACRC,UAAWA,GACXG,WAAYA,GACZC,QAASA,GACTC,QAASA,GACTC,WAAYA,GACZ8gB,OAhpBF,SAAgBljN,EAAMxV,EAAM0iT,GAC1B,GAAIltS,EAAM,CACR,IAAI4Q,EAAKroB,KAAKmzB,QAAQuqM,SACpBh1N,EAAS+O,EAAKg/C,KAAKplC,OACrBhJ,EAAGwyM,MAAMnyN,EAAQ2f,EAAG6xM,YAAYS,OAAOljN,EAAMxV,GAC/C,CACA,YAAkBw0B,IAAXkuR,EAAuBA,EAASltS,CACzC,EA0oBEsa,OAnbF,SAAgB9vB,EAAMw4N,EAAQtnN,EAAQyxS,EAAQ7yR,EAAQyO,GACpD,IAKES,EACAJ,EANExY,EAAKroB,KAAKmzB,QAAQuqM,SACpBh4M,EAAO1lB,KAAKmzB,QAAQzN,KAAKzjB,GACzBonH,EAAQ3jG,EAAK2jG,MACbqyG,EAAQrzM,EAAGqzM,QACTppM,EAAU5M,EAAK4M,QAGnB,IAAoB,IAAhBjK,EAAGw8R,YAAwBx7L,EAAMlnH,MAAMtB,QAAU45N,GAAUmqF,GAE7D,OAAO,EAyBT,KAvBKtyR,GAAWA,EAAQopM,MAAQA,KAC9Bh2M,EAAK4M,QAAUA,EAAUjK,EAAG6xM,YAC5B5nM,EAAQopM,MAAQA,EAChBrzM,EAAG04M,UAAS,WACVr7M,EAAK01M,UAAW,EAChB/yM,EAAGwyM,MAAMxxG,EAAO/2F,GAASoqM,KAC3B,IAAG,EAAM,IAEPvpN,IACF8tB,GAAuB,IAAX9tB,EAAkB0kM,GAAS,GAAQ1kM,IAAWumN,GAAQvmN,GAAUA,EAASuvS,GAAgBvvS,GACrGmf,EAAQnf,OAAO8tB,IAEbw5L,GACFnoM,EAAQmoM,OAAOA,GAEbmqF,IACF3jR,EAAYyhR,GAAgBkC,GACxBv7L,EAAMlnH,MAAMu4D,KAAKz5B,GACnB3O,EAAQnf,OAAO8tB,GAEf3O,EAAQmoM,OAAOmqF,IAGf7yR,EACF,IAAK8O,KAAOL,EACVlO,EAAQP,OAAOA,EAAQ8O,EAAKL,EAAOK,IAGvC,OAAO,CACT,EA2YEikR,YA/MF,SAAqBC,EAAO95S,EAAGC,GAC7B,IAAIy9R,EAAU/nS,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,EAE9E0+B,GADJylR,EAAQ,GAAQA,IACCA,EAAMlkT,OAAS,GAGhC,YAAgB41B,IAAT6I,GAAsBrlB,KAAKoe,MAAMiH,EAAK,GAAKr0B,EAAGq0B,EAAK,GAAKp0B,GAAKy9R,EAAU,GAAGp1R,QAAO,QAAmBwxS,GAAQ,CAAC,CAAC95S,EAAGC,KAAO65S,CACjI,EAyMEC,UAjMF,SAAmBD,GACjB,OAAO,GAAQA,GAAOpzR,QAAO,SAAU0uF,EAAKxuD,EAAM3wD,GAChD,IAAI88D,GAAQ,OAAenM,EAAM,GAC/B5mD,EAAI+yD,EAAM,GACV9yD,EAAI8yD,EAAM,GACZ,OAAOqiD,GAAY,GAALn/G,EAAS,KAAKqS,OAAOtI,EAAG,KAAKsI,OAAOrI,EAAG,KAAOhK,IAAM6jT,EAAMlkT,OAAS,EAAI,KAAO,KAAK0S,OAAOtI,EAAG,KAAKsI,OAAOrI,EAAG,KAC5H,GAAG,GACL,EA2LE+5S,eAhLF,SAAwBlC,EAAUmC,EAAYt2K,GAC5C,IAOE2vF,EAPEtzN,EAAI2jI,EAAK3jI,EACXC,EAAI0jI,EAAK1jI,EACTurD,EAAOm4E,EAAKn4E,KACV0uP,GAAK,IAAIrsD,IAAS52P,IAAI+f,OAAOm1I,iBAAkBn1I,OAAOm1I,iBAAkBn1I,OAAOmjS,iBAAkBnjS,OAAOmjS,kBAGxG5mF,EAAY,GAA2B0mF,GAE3C,IACE,IAAK1mF,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAI4rM,GAAc,OAAe3lB,EAAMp8N,MAAO,GAC5CirB,EAAK82N,EAAY,GACjB72N,EAAK62N,EAAY,GACf92N,EAAK+3R,EAAG/iS,KAAI+iS,EAAG/iS,GAAKgL,GACpBA,EAAK+3R,EAAG7iS,KAAI6iS,EAAG7iS,GAAK8K,GACpBC,EAAK83R,EAAG9iS,KAAI8iS,EAAG9iS,GAAKgL,GACpBA,EAAK83R,EAAG5iS,KAAI4iS,EAAG5iS,GAAK8K,EAC1B,CAGF,CAAE,MAAOma,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CAKA,OAJA8hT,EAAG7sS,UAAUrN,EAAGC,GACG,GAAU,CAAC,CAACi6S,EAAG/iS,GAAI+iS,EAAG9iS,IAAK,CAAC8iS,EAAG7iS,GAAI6iS,EAAG5iS,KAAMwgS,EAAUtsP,GAGrDlmD,QAAO,SAAUmqN,GACnC,OAcJ,SAAwB2qF,EAAOC,EAAO1lG,GAEpC,IADA,IAAI2lG,EAAgB,EACXrkT,EAAI,EAAGgG,EAAI04M,EAAQ/+M,OAAS,EAAGK,EAAI0+M,EAAQ/+M,OAAQqG,EAAIhG,IAAK,CACnE,IAAIskT,GAAa,OAAe5lG,EAAQ14M,GAAI,GAC1Cu+S,EAAQD,EAAW,GACnBE,EAAQF,EAAW,GACjBG,GAAa,OAAe/lG,EAAQ1+M,GAAI,GAC1C+J,EAAI06S,EAAW,GACfz6S,EAAIy6S,EAAW,GAGbz6S,EAAIo6S,GAASI,EAAQJ,GAASD,GAASI,EAAQx6S,IAAMq6S,EAAQp6S,IAAMw6S,EAAQx6S,GAAKD,GAClFs6S,GAEJ,CAGA,OAAuB,EAAhBA,CACT,CAhCWK,CAAelrF,EAAMzvN,EAAGyvN,EAAMxvN,EAAGg6S,EAC1C,GACF,GAiJIW,GAAiB,CAAC,OAAQ,OAAQ,QAAS,KAAM,IAAK,KAIxDC,GAAa,QAEbC,GAAc,CAAC,EAGbC,GAAgB,CAClB3I,UAAW,CAAC,KACZD,QAAS,CAAC,QAAS,QAAS,QAC5BK,SAAU,QACVD,UAAW,SAAmB9pS,GAC5B,MAAO,KAAKH,OAAO,GAAYytS,GAAettS,GAAK,IACrD,EACA6pS,UASF,SAAwBrB,GACtB,IAAI7oS,EAAK,GAAU6oS,GAInB,IAAK,IAAIj6S,KAHT4jT,GAAez9S,SAAQ,SAAUnG,GAC/B,OAAOoR,EAAGpR,GA1BE,cA0BoBA,CAClC,IACiB+gT,GACf3vS,EAAGpR,GAAQ6jT,GAAa7jT,EAG1B,OADA6zC,GAAOziC,EAAIquS,GAAuBxF,EAAS8G,GAAiB+C,KACrD1yS,CACT,EAlBEiqS,UAAW,GACXsE,SAAUmE,IAIRE,GAAgB/J,GAAkB8J,IAgBtC,SAASE,GAAmBjkT,EAAMoR,EAAIypM,GACpC,OAAyB,IAArBl8M,UAAUC,OACLmiT,GAAgB/gT,IAIzB+gT,GAAgB/gT,GAAQoR,EAGpBypM,IAASipG,GAAY9jT,GAAQ66M,GAI7BmpG,KAAeA,GAAc1I,UAAUt7S,GAAQ6jT,GAAa7jT,GACzDjC,KACT,CAwBA,SAAS,GAAO0vO,EAAM8wE,GACpB,IAGI3C,EAHAv8R,EAAS,CAAC,EAId,IAEEu8R,EAAM,GADNnuE,EAAO,GAASA,GAAQA,EAAO,GAAYA,GAAQ,GAErD,CAAE,MAAOloM,GACP,GAAM,2BAA6BkoM,EACrC,CAGAmuE,EAAI1/E,OAAM,SAAUz9K,GAClB,GAAIA,EAAK/3C,OAASqrS,GAAlB,CACA,IAAI/xS,EAAOy+C,EAAK6zP,OAAOtyS,KACrBk8N,EAAQ6nF,GAAcpE,SAAS3/S,GAC7Bk8N,GAAOA,EAAMl8N,EAAMy+C,EAAK9/C,UAAW4/S,EAAOl/R,EAHN,CAI1C,IAGA,IAAIq2C,EAAMsuP,GAAcpI,GAWxB,OARAlmP,EAAIgmP,QAAQv1S,SAAQ,SAAUnG,GAC5B,IAAIkkT,EAAanF,GAAe/+S,GAC3B,GAAeqf,EAAQ6kS,IAAe3F,EAAM4F,UAAUnkT,KACzDqf,EAAO6kS,GAAc3F,EAAM6F,UAAUpkT,GAEzC,IAGO,CACLqkT,MAAOxwQ,GAAO,CACZq1D,KAAMxzC,EAAIwzC,MACTq1M,EAAMr7Q,QAAQ04Q,IAAM,CACrBA,IAAKA,GACH,MACJ0I,QAAS5uP,EAAIioE,OACb4mL,QAASllS,EAEb,CA9DA4kS,GAAmB,aAzYnB,SAAmBjkT,EAAMyP,GACvB,IAAIoM,EAAIwjS,GAASr/S,GAAOyP,GAAS1R,MAAMmzB,SACvC,OAAOrV,GAAKA,EAAEw9B,UAAYx9B,EAAEw9B,YAAc,CAC5C,GAsY2C4lQ,IAC3CgF,GAAmB,QAtYnB,SAAcjkT,EAAMyP,GAClB,IAAIoM,EAAIwjS,GAASr/S,GAAOyP,GAAS1R,MAAMmzB,SACvC,OAAOrV,EAAIA,EAAEkqB,YAASvR,CACxB,GAmYiCyqR,IACjCgF,GAAmB,UAnYnB,SAAgBjkT,EAAMyP,GACpB,IAAIoM,EAAIwjS,GAASr/S,GAAOyP,GAAS1R,MAAMmzB,SACvC,OAAOrV,EAAIA,EAAEy8B,SAAW,EAC1B,GAgYqC2mQ,IACrCgF,GAAmB,SA5XnB,SAAejkT,EAAMyP,GACnB,IAAIoM,EAAIwjS,GAASr/S,GAAOyP,GAAS1R,MAAMmzB,SACvC,OAAOrV,GAAKA,EAAE6pC,MAAQ7pC,EAAE6pC,QAAU,EACpC,GAyXmCu5P,IACnCgF,GAAmB,UAjYnB,SAAgBjkT,EAAM0lD,EAAOj2C,GAC3B,IAAIoM,EAAIwjS,GAASr/S,GAAOyP,GAAS1R,MAAMmzB,SACvC,OAAQrV,EAAgB,GAAQ6pC,IAAU7pC,EAAEksO,aAAelsO,EAAEwG,QAAQqjC,IAAU7pC,EAAEwG,QAAUxG,EAAEwsO,cAAc3iM,QAA/FlxB,CACd,GA8XqCyqR,IACrCgF,GAAmB,SA1XnB,SAAejkT,EAAME,EAAOuP,GAC1B,IAAIoM,EAAIwjS,GAASr/S,GAAOyP,GAAS1R,MAAMmzB,SACvC,OAAOrV,EAAIA,EAAE3b,QAASs0B,CACxB,GAuXmCyqR,IACnCgF,GAAmB,YAvXnB,SAAuBptS,EAAO4c,EAAIjK,EAAIqF,EAAOpf,GAC3CoH,EAAQwoS,GAASxoS,GAAQpH,GAAS1R,MAAMmzB,SACxC,IAAIwxD,EAAWstK,GAASv8N,EAAIjK,GACxBymO,EAAQp5O,EAAMyhC,SAChBrgC,EAAMg4O,EAAM,GACZ/3O,EAAMs+L,GAAKy5C,GACXunB,EAAW/0O,GAeb,OAdMvqB,EAAMD,EAIVu/P,EAAW7tB,GAAc9yO,EAAOoB,EAAKC,GAFrCrB,GAASA,EAAM0nO,aAAe,GAAQ,aAAR,GAAwBA,aAAa1nO,EAAM0nO,gBAAkB,GAAQ,SAAR,GAAoBX,YAAY/mO,EAAM+mO,eAAel4L,MAAM7uC,EAAM6uC,UAAUpN,OAAO,CAACrgC,EAAM,EAAGC,EAAM,IAI3LrB,EAAM0oM,QAEJtnM,KADJg4O,EAAQp5O,EAAM0oM,OAAO1wL,GAAS,KACZ,IAAIohO,EAAMv8O,QAAQuE,GAChCC,IAAQs+L,GAAKy5C,IAAQA,EAAM3xP,KAAK4Z,IAEtC+3O,EAAM9pP,SAAQ,SAAUs+B,GACtB,OAAOi+C,EAAS3/E,KAAKy0Q,EAAS/yO,GAAI5tB,EAAM4tB,GAC1C,IACOi+C,CACT,GAiW8Cu8N,IAC9CgF,GAAmB,UAAWjE,GAASf,IACvCgF,GAAmB,YAAahE,GAAWhB,IAC3CgF,GAAmB,cAAe9D,GAAalB,IAC/CgF,GAAmB,YApWnB,SAAkBplC,EAAYgR,EAASpgR,GACrC,IAAI0M,EAAIkjS,GAASxgC,GAAapvQ,GAAS1R,MAAMmzB,SAC7C,OAAO,SAAUA,GACf,OAAO/U,EAAIA,EAAEvX,KAAKssB,QAAQA,EAAf/U,CAAwB0zQ,GAAW,EAChD,CACF,GA+VyCovB,IACzCgF,GAAmB,UAruBnB,SAAgBjkT,EAAM49H,EAAO19H,GAC3B,IAAI6F,EAAQhI,KAAKmzB,QAAQzN,KAAKzjB,GAAM,SAAW49H,GAC7CnqE,EAAQ1tD,EAAQA,EAAM7F,MAAMH,IAAIG,QAASs0B,EAC3C,OAAOi/B,EAAQA,EAAM5kC,MAAQ4kC,CAC/B,IAiEA,SAAuBzzD,EAAMvB,EAAM8/S,EAAOl/R,GACpC5gB,EAAK,GAAGiI,OAASirS,IAAS,GAAM,sDAChClzS,EAAK,GAAGiI,OAASirS,IAAS,GAAM,uDACpC,IAAIluR,EAAOhlB,EAAK,GAAGyB,MACjB09H,EAAQn/H,EAAK,GAAGyB,MAChBs+S,EAtBc,IAsBY5gL,EACvB,GAAe4gL,EAAWn/R,KAC7BA,EAAOm/R,GAAaD,EAAMvgJ,QAAQv6I,GAAMi7R,UAAUH,EAAO3gL,GAE7D,IAwpBAqmL,GAAmB,OAAQ,GAAMjF,IACjCiF,GAAmB,YApVnB,SAAkBjkT,EAAMovB,EAAQ3oB,GAC9B,IAAIy/J,EAAQ06I,GAAU5gT,EAAMjC,MAC1B8d,EAAIqqJ,EAAM92I,GACVttB,EAAIokK,EAAMz/J,GACZ,OAAOoV,GAAK/Z,EAAI+Z,EAAEjX,KAAK9C,GAAGitB,IAAImnM,SAAS1hM,CACzC,GA+UyCwqR,IACzCiF,GAAmB,iBA/UnB,SAAuBjkT,EAAMy+C,GAC3B,IAAI9xB,EAAIi0R,GAAU5gT,EAAMjC,MAAM0gD,GAC9B,OAAO9xB,EAAIA,EAAEmpQ,YAAY/mQ,IAAImnM,SAAS1hM,CACxC,GA4UmDwqR,IAGnDiF,GAAmB,mBNvrBnB,SAAuBjkT,EAAMk2N,EAAOlrK,GAYlC,IAXA,IAMEyI,EACA+wP,EACA31R,EACA89G,EACA3rH,EAVEyC,EAAO1lB,KAAKmzB,QAAQzN,KAAKzjB,GAC3B65D,EAAUp2C,EAAOA,EAAK8a,OAAOr+B,MAAQ,GACrCukT,EAAUhhS,EAAOA,EAAKy6R,KAAez6R,EAAKy6R,IAAYh+S,WAAQs0B,EAC9DvJ,EAAY+/B,IAAOyyP,GACnB9wR,EAAIktC,EAAQj7D,OACZK,EAAI,EAMCA,EAAI0tB,IAAK1tB,EAEd,GADAw0D,EAAQoG,EAAQ56D,GACZwlT,GAAWx5R,EAAW,CAMxB,IAAe,KAHf4D,GADA21R,EAAOA,GAAQ,CAAC,GACH73K,EAAOl5E,EAAMk5E,OAAS,GAGjB,SAMlB,GALA3rH,EAAIm9R,GAAUjoF,EAAOziK,GACrB+wP,EAAK73K,GAAQ3rH,GAAK,IAAM6N,EAIpB7N,GAAsB,IAAjByjS,EAAQpiR,KAAY,OAAO,EACpC,IAAKrhB,GAAK6N,IAAU41R,EAAQ1kT,IAAI4sI,GAAM99G,MAAO,OAAO,CACtD,MAKE,GAAI5D,GAJJjK,EAAIm9R,GAAUjoF,EAAOziK,IAIF,OAAOzyC,EAO9B,OAAO2L,GAAK1B,CACd,GM8oBqDqzR,IACrD2F,GAAmB,qBN3oBnB,SAAyBjkT,EAAMk2N,EAAOlrK,GACpC,IAAIvnC,EAAO1lB,KAAKmzB,QAAQzN,KAAKzjB,GAC3B65D,EAAUp2C,EAAOA,EAAK8a,OAAOr+B,MAAQ,GACrCukT,EAAUhhS,EAAOA,EAAKy6R,KAAez6R,EAAKy6R,IAAYh+S,WAAQs0B,EAC9DvJ,EAAY+/B,IAAOyyP,GACnBv9S,EAAQ09S,GAAa1nF,GACrBnwN,EAAQ,GAAW8zD,EAAS35D,GAC9B,GAAI6F,IAAU8zD,EAAQj7D,OAAQ,OAAO,EACrC,GAAIg/S,GAAa/jP,EAAQ9zD,MAAY7F,EAAO,OAAO,EACnD,GAAIukT,GAAWx5R,EAAW,CACxB,GAAqB,IAAjBw5R,EAAQpiR,KAAY,OAAO,EAC/B,GAAI,GAAYw3B,EAAS35D,GAAS6F,EAAQ0+S,EAAQpiR,KAAM,OAAO,CACjE,CACA,OAAO,CACT,GM6nByDi8Q,IACzD2F,GAAmB,sBN9lBnB,SAA0BjkT,EAAMgrD,EAAI05P,EAASC,GAsB3C,IArBA,IAKElxP,EACAkqE,EACAp/F,EACAouG,EACA/O,EACA19H,EACA+jB,EACA2gS,EACAl+S,EACAowP,EAGA7xP,EACA6O,EAlBE2P,EAAO1lB,KAAKmzB,QAAQzN,KAAKzjB,GAC3B65D,EAAUp2C,EAAOA,EAAK8a,OAAOr+B,MAAQ,GACrC2kT,EAAW,CAAC,EACZC,EAAW,CAAC,EACZ9+O,EAAQ,CAAC,EAWTr5C,EAAIktC,EAAQj7D,OACZK,EAAI,EAKCA,EAAI0tB,IAAK1tB,EAKd,GAHA0tI,GADAl5E,EAAQoG,EAAQ56D,IACH0tI,KACbhP,EAASlqE,EAAMkqE,OACfp/F,EAASk1B,EAAMl1B,OACXo/F,GAAUp/F,EAAQ,CAEpB,IAAKt5B,EAAI,EAAG6O,EAAI6pH,EAAO/+H,OAAQqG,EAAI6O,IAAK7O,EACtC24H,EAAQD,EAAO14H,GAEf2/S,GADA3gS,EAAM4gS,EAASjnL,EAAMA,SAAWinL,EAASjnL,EAAMA,OAAS,CAAC,IAC3C+O,KAAU1oH,EAAI0oH,GAAQ,IACpC3mE,EAAM43D,EAAMA,OAASl3H,EAAOk3H,EAAMl3H,KAAKwyB,OAAO,GAC9C49N,EAAQhsM,GAAI,GAAGx5C,OAAO5K,EAAM,WAC5Bud,EAAI0oH,GAAQmqH,EAAM8tD,EAAS,GAAMrmR,EAAOt5B,KAStCy/S,IACFE,EAAUE,EAASn4K,KAAUm4K,EAASn4K,GAAQ,KACtCruI,KAAK,GAAMigC,GAAQ7O,QAAO,SAAUoC,EAAKqN,EAAMl6B,GACrD,OAAO6sB,EAAI6rG,EAAO14H,GAAG24H,OAASz+F,EAAMrN,CACtC,GAAG,CAAC,GAER,MAEE8rG,EAAQ+/K,GACRz9S,EAAQ09S,GAAanqP,IAErBmxP,GADA3gS,EAAM4gS,EAASjnL,KAAWinL,EAASjnL,GAAS,CAAC,IAC/B+O,KAAU1oH,EAAI0oH,GAAQ,KAC5BruI,KAAK4B,GACTwkT,IACFE,EAAUE,EAASn4K,KAAUm4K,EAASn4K,GAAQ,KACtCruI,MAAK,OAAgB,CAAC,EAAGq/S,GAAaz9S,IA2BpD,OArBA8qD,EAAKA,GAAM0yP,GACPmH,EAASlH,IACXkH,EAASlH,IAAe7yP,GAAI,GAAGx5C,OAAOqsS,GAAa,KAAKrsS,OAAO05C,IAAK5rD,MAAM0rD,IAAK,QAAmBv1C,OAAOgpB,OAAOsmR,EAASlH,OAEzHpoS,OAAOopB,KAAKkmR,GAAU1+S,SAAQ,SAAUy3H,GACtCinL,EAASjnL,GAASroH,OAAOopB,KAAKkmR,EAASjnL,IAAQ7uG,KAAI,SAAU49G,GAC3D,OAAOk4K,EAASjnL,GAAO+O,EACzB,IAAGj9G,QAAO,SAAUq1R,EAAK5lR,GACvB,YAAe3K,IAARuwR,EAAoB5lR,EAAO2rB,GAAI,GAAGx5C,OAAO00D,EAAM43D,GAAQ,KAAKtsH,OAAO05C,IAAK+5P,EAAK5lR,EACtF,GACF,IAEF06B,EAAUtkD,OAAOopB,KAAKmmR,GAClBJ,GAAW7qP,EAAQj7D,SAErBimT,EADUF,EA1OA,UADA,WA4OM35P,IAAO0yP,IAAQ,OAAgB,CAAC,EA1O3C,KA0OkD7jP,EAAQnqC,QAAO,SAAUq1R,EAAKtgT,GACnF,OAAOsgT,EAAIzmT,KAAKc,MAAM2lT,GAAK,QAAmBD,EAASrgT,KAAMsgT,CAC/D,GAAG,MAAO,OAAgB,CAAC,EA3OrB,MA2O6BlrP,EAAQ9qC,KAAI,SAAUtqB,GACvD,OAAO,OAAgB,CAAC,EA7OrB,KA6O4BqgT,EAASrgT,GAC1C,MAEKogT,CACT,GMugB2DvG,IAC3D2F,GAAmB,qBNtnBnB,SAAyB3jR,EAAOC,GAC9B,OAAOD,EAAMvR,KAAI,SAAU/lB,GACzB,OAAO6qC,GAAOtT,EAAKo9F,OAAS,CAC1Bp/F,OAAQgC,EAAKo9F,OAAO5uG,KAAI,SAAU3tB,GAChC,OAAQA,EAAEo0M,SAAWp0M,EAAEo0M,OAAS53E,GAAMx8H,EAAEw8H,SAAS50H,EAAEktN,MACrD,MACE,OAAgB,CAAC,EAAGynF,GAAaC,GAAa50S,EAAEktN,QAAS31L,EAC/D,GACF,IOtGA,IAAIykR,GAAOtqG,GAAM,CAAC,SAChBuqG,GAAOvqG,GAAM,CAAC,QAAS,QAAS,SAgClC,SAASwqG,GAAcx+S,GACrB,OAAQA,EAAO,IAAIiW,aACrB,CAOA,SAASwoS,GAAWzhR,EAAKjlC,EAAMyqG,GAExBA,EAAKnwC,SAAS,OACjBmwC,EAAO,UAAYA,EAAO,MAE5B,IAAI93F,EAAK41E,SAAS5nF,WAAM,GAAQ,QAAmBX,EAAK6S,OAAO43F,KAC/D,OAAOxlE,GAAOA,EAAI43Q,UAAYlqS,EAAGjQ,KAAKuiC,EAAI43Q,WAAalqS,CACzD,CAMA,IAAIg0S,GAAoB,CAItBhO,SAAU,SAAkB1zQ,EAAK+pM,GAC/B,OAAO03E,GAAWzhR,EAAK,CAAC,KAAM+pM,EAAKvkI,KACrC,EAIAm8M,UAAW,SAAmB3hR,EAAK+pM,GACjC,OAAO03E,GAAWzhR,EAAK,CAAC,QAAS,KAAM+pM,EAAKvkI,KAC9C,EAIApgG,MAAO,SAAe46B,EAAK+pM,GACzB,OAAO03E,GAAWzhR,EAAK,CAAC,SAAU+pM,EAAKvkI,KACzC,EAIA1nE,QAAS,SAAiBkC,EAAK+pM,GAE7B,OAAO03E,GAAWzhR,EAAK,CAAC,IAAK,SADlB,iDAAiDpyB,OAAOm8N,EAAKvkI,KAAM,KAEhF,EAIAwvH,OAAQ,SAAgBh1L,EAAK4hR,GAC3B,IAAIrnD,EAAWqnD,EAAQrnD,SACrB7qN,EAAWkyQ,EAAQlyQ,SACjB81D,EAAO,kCACX,IAAK,IAAIlpG,KAAQozC,EAAU,CACzB,IAAIjwB,EAAI,KAAO,GAAYnjB,GAAQ,IACnCkpG,GAAQ,KAAK53F,OAAO8hC,EAASpzC,GAAMkpG,KAAM,QAAQ53F,OAAO6R,EAAG,SAAS7R,OAAO6R,EAAG,UAChF,CAGA,OAFA+lF,GA1FJ,SAAuBwvH,EAAQulC,GAC7B,IAAI/0J,EAAO,GACX,OAAI87M,GAAK/mD,KACLvlC,EAAOr4M,KACLq4M,EAAO1vN,GACLi8S,GAAKhnD,KACP/0J,GAAQ,sCAEVA,GAAQ,qBAERA,GAAQ,0BAGRwvH,EAAOy6B,KACTjqJ,GAAQ,4BAENwvH,EAAOp4M,KACLo4M,EAAOzvN,GACLg8S,GAAKhnD,KACP/0J,GAAQ,sCAEVA,GAAQ,sBAERA,GAAQ,2BAGRwvH,EAAO06B,KACTlqJ,GAAQ,8BAzBiBA,CA4B7B,CA4DYq8M,CAAcnyQ,EAAU6qN,GAEzBknD,GAAWzhR,EAAK,CAAC,OAAQ,KADhCwlE,GAAQ,YAEV,EAIA+wM,QAAS,CACPl6S,IAAK,SAAa6E,GAChB,IAAIurD,EAAM,IAAI7+C,OAAO1M,EAAKmqB,IAAI,IAAa3H,KAAK,MAAO,KACnDrnB,EAAMinF,SAAS,IAAK,WAAW11E,OAAO6+C,EAAK,MAE/C,OADApwD,EAAI6E,KAAOurD,EACJpwD,CACT,EACAw4M,WAAY,SAAoB56E,EAAQy6E,GACtC,IAAIt2M,EAcAsP,EAAK41E,SAAS,IAAK,IAAK,oBAAsB22C,EAAO5uG,KAb/C,SAAa3tB,EAAGnC,GACxB,IACIskB,EAAGvT,EADHmT,EAAIi1L,EAAOn5M,GAUf,OARImC,EAAEwD,MACJ2e,EAAI,IAAIjS,OAAOlQ,EAAEwD,MACjBoL,EAAI,IAAIsB,OAAOlQ,EAAEwD,SAEhB9C,EAAIA,GAAK,CAAC,GAAG,IAAM7C,GAAKmC,EACzBmiB,EAAI,SAASjS,OAAOrS,EAAG,OACvB+Q,EAAI,SAASsB,OAAOrS,EAAG,QAjEjC,SAAkBskB,EAAGvT,EAAGw1S,EAAIC,GAC1B,MAAO,SAASn0S,OAAOiS,EAAG,aAAajS,OAAOtB,EAAG,mCAAmCsB,OAAOk0S,EAAI,8CAA8Cl0S,OAAOm0S,EAAI,kGAAkGn0S,OAAOk0S,EAAI,+BAA+Bl0S,OAAOm0S,EAAI,MACjT,CAiEeC,CAASniS,EAAGvT,GAAImT,EAAGA,EAC5B,IACkEiE,KAAK,IAAM,MAC7E,OAAOtlB,EAAIsP,EAAGjQ,KAAKW,GAAKsP,CAC1B,IA8CJ,SAASu0S,GAAev0F,EAAM1tL,EAAKrkB,GACjC,IAAK+xM,IAASllK,GAASklK,GAAO,OAAOA,EACrC,IAAK,IAA+Bj1M,EAA3Bld,EAAI,EAAG0tB,EAAIi5R,GAAQhnT,OAAWK,EAAI0tB,IAAK1tB,EAE9C,GAAI,GAAemyN,GADnBj1M,EAAIypS,GAAQ3mT,IACe2/B,KACzB,OAAOziB,EAAEqoC,MAAM4sK,EAAM1tL,EAAKrkB,GAG9B,OAAO+xM,CACT,CAGA,IAAIw0F,GAAU,CAAC,CACbhnR,IAAK,OACL4lB,MA8BF,SAAqB/f,EAAGf,GACtB,OAAOA,EAAI3jC,IAAI0kC,EAAEohR,OAAS,GAAM,yBAA2BphR,EAAEohR,KAC/D,GA/BG,CACDjnR,IAAK,OACL4lB,MA8CF,SAAgB/f,EAAGf,GACjB,IAAIj/B,EAAI,KAAOggC,EAAEqhR,KAAO,MAAQrhR,EAAEshR,MAClC,OAAOriR,EAAItyB,GAAG3M,KAAOi/B,EAAItyB,GAAG3M,GAAKm6B,GAAI6F,EAAEqhR,KAAMrhR,EAAEshR,MAAOriR,EAAI+pM,KAAKwsE,SACjE,GAhDG,CACDr7Q,IAAK,QACL4lB,MA+BF,SAAuB/f,EAAGf,EAAKrkB,GACzBolB,EAAE8/Q,SAEJ7gR,EAAIsiR,gBAAgBvhR,EAAE8/Q,QAASllS,GAEjC,IAAI5a,EAAI,KAAOggC,EAAE4/Q,MAAMn7M,KACvB,OAAOxlE,EAAItyB,GAAG3M,KAAOi/B,EAAItyB,GAAG3M,GAAK2wM,GAAS1xK,EAAIuiR,oBAAoBxhR,EAAE4/Q,OAAQ5/Q,EAAE6/Q,SAChF,GArCG,CACD1lR,IAAK,SACL4lB,MAgDF,SAAkB/f,EAAGf,GACnB,IAAKe,EAAEyhR,OAAQ,OAAO,KACtB,IAAIzhT,EAAI,KAAOggC,EAAEyhR,OAAS,IAAMzhR,EAAE0hR,MAClC,OAAOziR,EAAItyB,GAAG3M,KAAOi/B,EAAItyB,GAAG3M,GAAKm5H,GAAMn5F,EAAEyhR,OAAQzhR,EAAE0hR,MAAOziR,EAAI+pM,KAAKwsE,SACrE,GAnDG,CACDr7Q,IAAK,UACL4lB,MAmEF,SAAmB/f,EAAGf,GACpB,IAAI0tL,EAAO3sL,EAAE2hR,QACX1tF,EAAS,CAAC,EACZ,IAAK,IAAI14N,KAAQoxN,EAAM,CACrB,IAAIi1F,EAAMj1F,EAAKpxN,GACf04N,EAAO14N,GAAQo1M,GAAS1xK,EAAI4iR,iBAAiBD,EAAIhC,OAAQgC,EAAI/B,SAC7D5rF,EAAO14N,GAAMy6C,OAAS4rQ,EAAIE,OAC5B,CACA,OAAO7tF,CACT,GA3EG,CACD95L,IAAK,WACL4lB,MAmDF,SAAoB/f,EAAGf,GAGrB,IAAIj/B,EAAI,KAAOggC,EAAE+hR,SAAW,IAAM/hR,EAAEgiR,OAClCvjS,EAAI,GAAMuhB,EAAE+hR,UAAUz3R,KAAI,SAAU0V,GAClC,OAAOA,GAAKA,EAAEiiR,SAAWhvF,GAAUjzL,CACrC,IACF,OAAOf,EAAItyB,GAAG3M,KAAOi/B,EAAItyB,GAAG3M,GAAK,GAAQye,EAAGuhB,EAAEgiR,OAAQ/iR,EAAI+pM,KAAKwsE,SACjE,GA1DG,CACDr7Q,IAAK,WACL4lB,MA2EF,SAAoB/f,EAAGf,GACrB,OAAOA,CACT,GA5EG,CACD9E,IAAK,WACL4lB,MA+EF,SAAoB/f,EAAGf,GACrB,IAAI0tL,EAAO3sL,EAAEkiR,SACb,OAAO,SAAUlrF,EAAU78L,EAAKjvB,GAC9B,IAAIi3S,EAASljR,EAAI46L,OAAO95K,MAAM4sK,GAC5BpmK,EAAK47P,EAAO7mT,IAAIqxN,EAAKy1F,UAAU,GAAGp1S,IAClC0K,EAAIyqS,EAAOvwG,QAAQ1mM,OAKrB,OAJIwM,GAAGA,EAAElc,IAAI0P,GACbq7C,EAAGojL,cAAgB,WACjB,OAAO1qM,EAAI42L,OAAOssF,EACpB,EACO57P,CACT,CACF,GA1FG,CACDpsB,IAAK,WACL4lB,MA6FF,WACE,OAAOkzK,EACT,IA4DA,IAAI,GAAO,CACTxuJ,MAAM,GAoDR,SAAS,GAAQ9iD,EAAIy6M,EAAYy6E,EAAW7tE,GAC1C,OAAO,IAAI,GAAQrnN,EAAIy6M,EAAYy6E,EAAW7tE,EAChD,CACA,SAAS,GAAQrnN,EAAIy6M,EAAYy6E,EAAW7tE,GAC1C1vO,KAAK09N,SAAWr1M,EAChBroB,KAAK8iO,WAAaA,EAClB9iO,KAAKc,OAASunB,EAAGvnB,OAAOsC,KAAKilB,GAC7BroB,KAAK0vO,KAAOA,GAAQ23E,GAAmBrnT,KAAKs4M,QAAU,CAAC,EACvDt4M,KAAKkqP,OAAS,CAAC,EACflqP,KAAKmoK,MAAQ,CAAC,EACdnoK,KAAK0lB,KAAO,CAAC,EACb1lB,KAAKqT,GAAK,CAAC,EACPkqS,IACFv9S,KAAKu9S,UAAY/lS,OAAO0wB,OAAOq1Q,GAC/Bv9S,KAAKu9S,UAAUpqR,QAAUnzB,KAE7B,CACA,SAAS+oT,GAAWpjR,GAClB3lC,KAAK09N,SAAW/3L,EAAI+3L,SACpB19N,KAAK8iO,WAAan9L,EAAIm9L,WACtB9iO,KAAKc,OAAS6kC,EAAI7kC,OAClBd,KAAK0vO,KAAO/pM,EAAI+pM,KAChB1vO,KAAKs4M,QAAU9gM,OAAO0wB,OAAOvC,EAAI2yK,SACjCt4M,KAAKkqP,OAAS1yO,OAAO0wB,OAAOvC,EAAIukN,QAChClqP,KAAKmoK,MAAQ3wJ,OAAO0wB,OAAOvC,EAAIwiI,OAC/BnoK,KAAK0lB,KAAOlO,OAAO0wB,OAAOvC,EAAIjgB,MAC9B1lB,KAAKqT,GAAKmE,OAAO0wB,OAAOvC,EAAItyB,IACxBsyB,EAAI43Q,YACNv9S,KAAKu9S,UAAY/lS,OAAO0wB,OAAOvC,EAAI43Q,WACnCv9S,KAAKu9S,UAAUpqR,QAAUnzB,KAE7B,CCvdA,SAASgpT,GAAUx+S,EAAIioD,GACjBjoD,IAAY,MAARioD,EAAejoD,EAAGggD,gBAAgB,cAAgBhgD,EAAG8/C,aAAa,aAAcmI,GAC1F,CDsdA,GAAQvyD,UAAY6oT,GAAW7oT,UAAY,CACzCqgO,KAAM,WACJ,IAAI56L,EAAM,IAAIojR,GAAW/oT,MAEzB,OADCA,KAAKipT,aAAejpT,KAAKipT,WAAa,KAAK1oT,KAAKolC,GAC1CA,CACT,EACA42L,OAAQ,SAAgB52L,GACtB3lC,KAAKipT,WAAajpT,KAAKipT,WAAW14S,QAAO,SAAU4U,GACjD,OAAOA,IAAMwgB,CACf,IAKA,IADA,IAAI/E,EAAOppB,OAAOopB,KAAK+E,EAAIwiI,OAClBxnK,EAAK,EAAGmgC,EAAQF,EAAMjgC,EAAKmgC,EAAMjgC,OAAQF,IAAM,CACtD,IAAIulG,EAAQplE,EAAMngC,GAClBglC,EAAIwiI,MAAMjiE,GAAO81H,SAAW,IAC9B,CACA,IAAK,IAAIva,EAAM,EAAGynG,EAAStoR,EAAM6gL,EAAMynG,EAAOroT,OAAQ4gN,IAAO,CAC3D,IAAIh6G,EAAQyhN,EAAOznG,GACnB97K,EAAIwiI,MAAM1gE,GAAO80H,QACnB,CACA52L,EAAIwiI,MAAQ,IACd,EACAnmK,IAAK,SAAa0R,GAChB,OAAO1T,KAAKmoK,MAAMz0J,EACpB,EACAxR,IAAK,SAAawR,EAAIgtC,GACpB,OAAO1gD,KAAKmoK,MAAMz0J,GAAMgtC,CAC1B,EACAlvC,IAAK,SAAa6hN,EAAMpmK,GACtB,IAAItnB,EAAM3lC,KACRqoB,EAAKsd,EAAI+3L,SACTh4M,EAAO2tM,EAAKlxN,MAcd,GAbAwjC,EAAIzjC,IAAImxN,EAAK3/M,GAAIu5C,GA1brB,SAAmBtkD,GACjB,MAA+B,YAAxBw+S,GAAcx+S,EACvB,CAybQwgT,CAAU91F,EAAK1qN,OAAS+c,IACtBA,EAAK0jS,QACP/gS,EAAGi6M,OAAOr1K,EAAIvnC,EAAK0jS,QAAS1jS,EAAK2jS,SACxB3jS,EAAK4jS,SACdjhS,EAAGk6M,QAAQt1K,EAAIvnC,EAAK4jS,SAAU5jS,EAAK2jS,SAEnChhS,EAAGwyM,MAAM5tK,EAAI5kC,EAAG6xM,YAAYO,OAAO/0M,KAGnC2tM,EAAK9nJ,OACP5lC,EAAI4lC,KAAOte,GAETomK,EAAKzhN,OAAQ,CACf,IAAIwM,EAAIunB,EAAI3jC,IAAIqxN,EAAKzhN,OAAOk2S,MACxB1pS,GACFiK,EAAG21M,QAAQ5/M,EAAG,CAAC6uC,IACfA,EAAG8uK,UAAUvqN,IAAI4M,KAEhBunB,EAAI4jR,WAAa5jR,EAAI4jR,YAAc,IAAIhpT,MAAK,WAC3C6d,EAAIunB,EAAI3jC,IAAIqxN,EAAKzhN,OAAOk2S,MACxBz/R,EAAG21M,QAAQ5/M,EAAG,CAAC6uC,IACfA,EAAG8uK,UAAUvqN,IAAI4M,EACnB,GAEJ,CAOA,GANIi1M,EAAKm2F,SACP7jR,EAAI2yK,QAAQ+a,EAAKm2F,QAAUv8P,GAEzBomK,EAAKv6M,QACP6sB,EAAIukN,OAAO72B,EAAKv6M,OAASm0C,GAEvBomK,EAAK3tM,KAAM,CACb,IAAI+9H,EAAQ,WACV,IAAI/9H,EAAOigB,EAAIjgB,KAAKzjB,KAAU0jC,EAAIjgB,KAAKzjB,GAAQ,CAAC,GAChDoxN,EAAK3tM,KAAKzjB,GAAMmG,SAAQ,SAAUi4D,GAChC,OAAO36C,EAAK26C,GAAQpT,CACtB,GACF,EACA,IAAK,IAAIhrD,KAAQoxN,EAAK3tM,KACpB+9H,GAEJ,CACF,EACAp8G,QAAS,WAKP,OAJCrnC,KAAKupT,YAAc,IAAInhT,SAAQ,SAAUiL,GACxC,OAAOA,GACT,WACOrT,KAAKupT,WACLvpT,IACT,EACAq5S,SAAU,SAAkBhmF,EAAM7tN,GAChCxF,KAAKwR,IAAI6hN,EAAMrzN,KAAK09N,SAASlsN,IAAI6hN,EAAKlxN,MAAOqD,GAC/C,EACAsO,UAAW,SAAmBu/M,EAAM1qN,GAClC3I,KAAKwR,IAAI6hN,EAAMrzN,KAAK09N,SAASlsN,IAAIxR,KAAK8iO,WAAWqkF,GAAcx+S,KACjE,EACAs0N,OAAQ,SAAgB5J,EAAMo2F,GAC5BzpT,KAAKkC,IAAImxN,EAAK3/M,GAAI+1S,EACpB,EACAjkT,OAAQ,SAAgB6tN,EAAM4J,EAAQv0N,EAAQrB,EAASia,GACrDthB,KAAK09N,SAASv9N,GAAG88N,EAAQv0N,EAAQrB,EAASia,EAAQ+xM,EAAKluL,QACzD,EAEAukR,mBAAoB,SAA4Bh6E,GAC9C,OAAO1vO,KAAK0vO,KAAK2pE,SAASr5S,KAAM0vO,EAClC,EACAw4E,oBAAqB,SAA6Bx4E,GAChD,OAAO1vO,KAAK0vO,KAAK43E,UAAUtnT,KAAM0vO,EACnC,EACAi6E,gBAAiB,SAAyBj6E,GACxC,OAAO1vO,KAAK0vO,KAAK3kO,MAAM/K,KAAM0vO,EAC/B,EACAk6E,kBAAmB,SAA2Bl6E,GAC5C,OAAO1vO,KAAK0vO,KAAKjsM,QAAQzjC,KAAM0vO,EACjC,EACA64E,iBAAkB,SAA0B5tF,GAC1C,OAAO36N,KAAK0vO,KAAK/U,OAAO36N,KAAM26N,EAChC,EAEAl0K,MAzlBF,SAAe4sK,GACb,IAAI1tL,EAAM3lC,KACR8oT,EAAYz1F,EAAKy1F,WAAa,GAoChC,OAjCIz1F,EAAK9oJ,aACP5kC,EAAI4kC,WAAa8oJ,EAAK9oJ,YAIpB8oJ,EAAKw2F,cACPlkR,EAAIkkR,YAAcx2F,EAAKw2F,aAIrBx2F,EAAKxxJ,SACPl8B,EAAIk8B,OAASwxJ,EAAKxxJ,QAIpBinP,EAAU1gT,SAAQ,SAAUstD,GAC1B,OAAO/vB,EAAImkR,cAAcp0P,EAC3B,IAGAozP,EAAU1gT,SAAQ,SAAUstD,GAC1B,OAAO/vB,EAAIokR,wBAAwBr0P,EACrC,KAGC29J,EAAK05D,SAAW,IAAI3kR,SAAQ,SAAUstD,GACrC,OAAO/vB,EAAIqkR,YAAYt0P,EACzB,KAGC29J,EAAK42F,SAAW,IAAI7hT,SAAQ,SAAUstD,GACrC,OAAO/vB,EAAIukR,YAAYx0P,EACzB,IACO/vB,EAAI0B,SACb,EAmjBEyiR,cAhbF,SAAuBz2F,GACrB,IAAI1tL,EAAM3lC,MA/FZ,SAAoB2I,GAClB,MAA+B,aAAxBw+S,GAAcx+S,EACvB,CA8FMwhT,CAAW92F,EAAK1qN,OAAU0qN,EAAK1qN,KAGjCg9B,EAAI7xB,UAAUu/M,EAAMA,EAAK1qN,MAFzBg9B,EAAI0zQ,SAAShmF,EAAMA,EAAK7tN,OAASmgC,EAAI+jR,mBAAmBr2F,EAAK7tN,QAAU,KAI3E,EA0aEukT,wBAraF,SAAiC12F,GAC/B,IAAI1tL,EAAM3lC,KACV,GAAIqzN,EAAK/xM,OAAQ,CACf,IAAI2rC,EAAKtnB,EAAI3jC,IAAIqxN,EAAK3/M,IACjBu5C,GAAI,GAAM,wBAA0BomK,EAAK3/M,IAC9CiyB,EAAI+3L,SAASM,QAAQ/wK,EAAIA,EAAG9L,WAAWxb,EAAIsiR,gBAAgB50F,EAAK/xM,QAAS+xM,EAAKoI,MAAOpI,EAAK4I,UAC5F,CACF,EA+ZEgsF,gBA1ZF,SAAyB50F,EAAM/xM,GAC7BA,EAASA,GAAU,CAAC,EACpB,IAAIqkB,EAAM3lC,KACV,IAAK,IAAIwpD,KAAQ6pK,EAAM,CACrB,IAAIlxN,EAAQkxN,EAAK7pK,GACjBloC,EAAOkoC,GAAQ,GAAQrnD,GAASA,EAAM6uB,KAAI,SAAU/e,GAClD,OAAO21S,GAAe31S,EAAG0zB,EAAKrkB,EAChC,IAAKsmS,GAAezlT,EAAOwjC,EAAKrkB,EAClC,CACA,OAAOA,CACT,EAiZE0oS,YAlQF,SAAqB32F,GACnB,IAGE3yN,EAHEilC,EAAM3lC,KACRuQ,EAAwB,MAAf8iN,EAAK9iN,OAAiBo1B,EAAIgkR,gBAAgBt2F,EAAK9iN,aAAUkmB,EAClEwmM,EAAwB,MAAf5J,EAAK4J,OAAiBt3L,EAAI3jC,IAAIqxN,EAAK4J,aAAUxmM,EAEpD48L,EAAKhiM,OACP4rM,EAASt3L,EAAI7kC,OAAOuyN,EAAKhiM,OAAQgiM,EAAK1qN,KAAM4H,GACnC8iN,EAAKnX,QAId+gB,GAHAv8N,EAAO2yN,EAAKnX,MAAMlrL,KAAI,SAAU0V,GAC9B,OAAOf,EAAI3jC,IAAI0kC,EACjB,KACc,GAAGw1K,MAAM76M,MAAMX,EAAK,GAAIA,EAAKsmB,MAAM,KAE/CqsM,EAAKsK,UACPj9N,EAAO2yN,EAAKsK,QAAQ3sM,KAAI,SAAU0V,GAChC,OAAOf,EAAI3jC,IAAI0kC,EACjB,IACAu2L,EAASA,EAAOU,QAAQj9N,EAAK,GAAIA,EAAK,KAEpC2yN,EAAK9iN,SACP0sN,EAASA,EAAO1sN,OAAOA,IAEJ,MAAjB8iN,EAAKnpI,WACP+yI,EAASA,EAAO/yI,UAAUmpI,EAAKnpI,WAEZ,MAAjBmpI,EAAK3qC,WACPu0C,EAASA,EAAOv0C,UAAU2qC,EAAK3qC,WAEnB,MAAVu0C,GACF,GAAM,8BAAgCj8K,KAAKF,UAAUuyK,IAEnDA,EAAKiK,SAASL,EAAOK,SAAQ,GACjC33L,EAAIs3L,OAAO5J,EAAM4J,EACnB,EAkOEitF,YA7NF,SAAqB72F,GACnB,IAGE3qN,EAHEi9B,EAAM3lC,KACRoqT,EAAQj8P,GAASi8P,EAAQ/2F,EAAKhiM,QAAU+4R,EAAMtC,KAAOsC,EACrD/4R,EAASsU,EAAI3jC,IAAIooT,GAEjB5kT,EAAS6tN,EAAK7tN,OACd8b,OAASmV,EACNpF,GAAQ,GAAM,uBAAyBgiM,EAAKhiM,QACjD3oB,EAAS2qN,EAAK3qN,QAAU2qN,EAAK3qN,OAAO49S,MAAQ3gR,EAAIgkR,gBAAgBt2F,EAAK3qN,OAAO49S,OAAS3gR,EAAI3jC,IAAIqxN,EAAK3qN,QAC9FlD,GAAUA,EAAO8gT,QACf9gT,EAAOghT,UACTllS,EAASqkB,EAAIsiR,gBAAgBziT,EAAOghT,UAEtChhT,EAASmgC,EAAIikR,kBAAkBpkT,EAAO8gT,QAExC3gR,EAAIngC,OAAO6tN,EAAMhiM,EAAQ3oB,EAAQlD,EAAQ8b,EAC3C,EA+ME+oS,SA3MF,SAAkBllR,GAChB,IAAIQ,EAAM3lC,KACRujD,EAAQ,CAAC,EACX,GAAIpe,EAAQmzK,QAAS,CACnB,IAAIA,EAAU/0J,EAAM+0J,QAAU,CAAC,EAC/B9gM,OAAOopB,KAAK+E,EAAI2yK,SAASlwM,SAAQ,SAAUy4B,GACzC,IAAIosB,EAAKtnB,EAAI2yK,QAAQz3K,GACjBsE,EAAQmzK,QAAQz3K,EAAKosB,KACvBqrJ,EAAQz3K,GAAOosB,EAAG9qD,MAEtB,GACF,CACA,GAAIgjC,EAAQzf,KAAM,CAChB,IAAIA,EAAO69B,EAAM79B,KAAO,CAAC,EACzBlO,OAAOopB,KAAK+E,EAAIjgB,MAAMtd,SAAQ,SAAUy4B,GACtC,IAAIypR,EAAU3kR,EAAIjgB,KAAKmb,GACnBsE,EAAQzf,KAAKmb,EAAKypR,KACpB5kS,EAAKmb,GAAOypR,EAAQjhM,MAAMlnH,MAE9B,GACF,CAMA,OALIwjC,EAAIsjR,aAAkC,IAApB9jR,EAAQzU,UAC5B6yB,EAAM0lQ,WAAatjR,EAAIsjR,WAAWj4R,KAAI,SAAU2U,GAC9C,OAAOA,EAAI0kR,SAASllR,EACtB,KAEKoe,CACT,EAiLE6b,SAhLF,SAAkB7b,GAChB,IAAI5d,EAAM3lC,KACRqoB,EAAKsd,EAAI+3L,SACTh4M,EAAO69B,EAAM79B,KACb4yL,EAAU/0J,EAAM+0J,QAClB9gM,OAAOopB,KAAK03K,GAAW,CAAC,GAAGlwM,SAAQ,SAAUy4B,GAC3CxY,EAAG7iB,OAAOmgC,EAAI2yK,QAAQz3K,GAAMy3K,EAAQz3K,GAAM,GAC5C,IACArpB,OAAOopB,KAAKlb,GAAQ,CAAC,GAAGtd,SAAQ,SAAUy4B,GACxCxY,EAAGwyM,MAAMl1L,EAAIjgB,KAAKmb,GAAKwoF,MAAOhhG,EAAG6xM,YAAY/mN,OAAO0kM,IAAQ4iB,OAAO/0M,EAAKmb,IAC1E,KACC0iB,EAAM0lQ,YAAc,IAAI7gT,SAAQ,SAAUmiT,EAAUrpT,GACnD,IAAI2nT,EAASljR,EAAIsjR,WAAW/nT,GACxB2nT,GAAQA,EAAOzpP,SAASmrP,EAC9B,GACF,GCpaA,IAAIC,GAAU,UAiCd,SAASn8S,GAAU+jQ,EAAMrmQ,GACvB,IAAIvB,EAAK4nQ,EAAKq4C,eAAqC,oBAAb9/S,UAA4BA,SAASgiD,KAAOylN,EAAKppQ,YACvF,GAAIwB,EACF,OAAiB,MAAVuB,EAAiBvB,EAAGsB,MAAM4hQ,eAAe,UAAYljQ,EAAGsB,MAAMC,OAASA,CAElF,CACA,SAAS2+S,GAAQt4C,EAAMnwQ,GACrB,IAAIyjB,EAAO0sP,EAAKu4C,SAASjlS,KAIzB,OAHK,GAAeA,EAAMzjB,IACxB,GAAM,0BAA4BA,GAE7ByjB,EAAKzjB,EACd,CAIA,SAAS80R,GAAO90R,EAAMqwB,GACf2nM,GAAY3nM,IACf,GAAM,mDAER,IAAIg4R,EAAUI,GAAQ1qT,KAAMiC,GAE5B,OADAqoT,EAAQlvF,UAAW,EACZp7N,KAAK66N,MAAMyvF,EAAQjhM,MAAO/2F,EACnC,CAOA,SAASvkB,GAAMqkQ,GACb,IAAIh4L,EAAUg4L,EAAKh4L,UACnB,OAAOngE,KAAKE,IAAI,EAAGi4P,EAAKw4C,WAAaxwO,EAAQprE,KAAOorE,EAAQznE,MAC9D,CACA,SAAS3E,GAAOokQ,GACd,IAAIh4L,EAAUg4L,EAAKh4L,UACnB,OAAOngE,KAAKE,IAAI,EAAGi4P,EAAKy4C,YAAczwO,EAAQnrE,IAAMmrE,EAAQqJ,OAC9D,CACA,SAAS,GAAO2uL,GACd,IAAIh4L,EAAUg4L,EAAKh4L,UACjBvc,EAASu0M,EAAK7N,QAChB,MAAO,CAACnqL,EAAQprE,KAAO6uD,EAAO,GAAIuc,EAAQnrE,IAAM4uD,EAAO,GACzD,CACA,SAASitP,GAAe14C,GACtB,IAAIv0M,EAAS,GAAOu0M,GAClB1kP,EAAI3f,GAAMqkQ,GACV/sP,EAAIrX,GAAOokQ,GACbA,EAAK24C,UAAUxgP,WAAW6nM,EAAK7nM,cAC/B6nM,EAAK24C,UAAUjnI,OAAOp2J,EAAGrI,EAAGw4C,GAC5Bu0M,EAAK44C,SAASntP,OAAOA,GACrBu0M,EAAK64C,iBAAiB7iT,SAAQ,SAAUq7B,GACtC,IACEA,EAAQ/V,EAAGrI,EACb,CAAE,MAAO+nC,GACPglN,EAAKhlN,MAAMA,EACb,CACF,GACF,CA4BA,SAAS89P,GAAY94C,EAAMrnQ,EAAO0M,GAChC,IAEE2G,EAEA9F,EAJE4G,EAAIkzP,EAAK24C,UACXvgT,EAAK0U,GAAKA,EAAE3X,SAcd,OAVIiD,IACF8N,EAAY,GAAO85P,IAEnBh0P,EAAI,GADArT,EAAM8D,eAAiB9D,EAAM8D,eAAe,GAAK9D,EACxCP,IACX,IAAM8N,EAAU,GAClB8F,EAAE,IAAM9F,EAAU,IAEpBvN,EAAM2yN,SAAW00C,EACjBrnQ,EAAM0M,KAAOA,EACb1M,EAAMogT,KAGR,SAAmB/4C,EAAM36P,EAAMzM,GAC7B,IAAIogT,EAAY3zS,EAA8B,UAAvBA,EAAKg/C,KAAKypM,SAAuBzoP,EAAOA,EAAKg/C,KAAK/kD,MAAQ,KACjF,SAASA,EAAMzP,GACb,IACEf,EADEszC,EAAI42Q,EAER,GAAInpT,EAAM,IAAKf,EAAIuW,EAAMvW,EAAGA,EAAIA,EAAEu1D,KAAK/kD,MACrC,GAAIxQ,EAAEu1D,KAAKx0D,OAASA,EAAM,CACxBuyC,EAAItzC,EACJ,KACF,CAEF,OAAOszC,GAAKA,EAAEiiB,MAAQjiB,EAAEiiB,KAAKwpM,YAAczrN,EAAI,CAAC,CAClD,CACA,SAAS1sB,EAAGrQ,GACV,IAAKA,EAAM,OAAOzM,EACd,GAASyM,KAAOA,EAAO/F,EAAM+F,IAEjC,IADA,IAAI2G,EAAIpT,EAAMgc,QACPvP,GACL2G,EAAE,IAAM3G,EAAKxM,GAAK,EAClBmT,EAAE,IAAM3G,EAAKvM,GAAK,EAClBuM,EAAOA,EAAKg/C,MAAQh/C,EAAKg/C,KAAK/kD,MAEhC,OAAO0M,CACT,CACA,MAAO,CACLg0P,KAAM,GAASA,GACf36P,KAAM,GAASA,GAAQ,CAAC,GACxB/F,MAAOA,EACPoW,GAAIA,EACJ7c,EAAG,SAAWwM,GACZ,OAAOqQ,EAAGrQ,GAAM,EAClB,EACAvM,EAAG,SAAWuM,GACZ,OAAOqQ,EAAGrQ,GAAM,EAClB,EAEJ,CAvCe+oE,CAAU4xL,EAAM36P,EAAM2G,GAC5BrT,CACT,CAsCA,IAAIsgT,GAAO,OAGTC,GAAU,CACRC,MAAM,GAqBV,SAASC,GAAmBp5C,EAAMjwC,EAASx5N,EAAM86B,GAC/C2uO,EAAKq5C,gBAAgBlrT,KAAK,CACxBoI,KAAMA,EACNw5N,QAAS,GAAMA,GACf1+L,QAASA,GAEb,CAOA,SAASioR,GAAOt5C,EAAMvxO,EAAKl4B,GACzB,IAAIw4H,EAAOixI,EAAKu5C,cAAgBv5C,EAAKu5C,aAAa9qR,GAClD,SAAa,IAATsgG,GAAkBhzE,GAASgzE,KAAUA,EAAKx4H,MAC5CypQ,EAAKnyH,KAAK,WAAW1sI,OAAOstB,EAAK,KAAKttB,OAAO5K,EAAM,sBAC5C,EAGX,CAmDA,SAASijT,GAAW7gT,GAClB,OAAOA,EAAM0M,IACf,CACA,SAASo0S,GAAW9gT,GAElB,OAAOA,EAAM0M,KAAKg/C,KAAKplC,MACzB,CACA,SAASkjC,GAAOtyD,GACd,OAAO,SAAUykC,EAAG37B,GAClB,OAAOA,EAAMogT,KAAK/4C,OAAOl4C,YAAYS,OAAO5vN,EAAM0M,KAAMxV,EAC1D,CACF,CA2CA,SAAS,GAAQi5B,EAAK90B,EAAMya,GAC1B,IAAIrW,EAAKG,SAAS+Z,cAAcwW,GAChC,IAAK,IAAI2F,KAAOz6B,EAAMoE,EAAG8/C,aAAazpB,EAAKz6B,EAAKy6B,IAEhD,OADY,MAARhgB,IAAcrW,EAAG6zE,YAAcx9D,GAC5BrW,CACT,CACA,IAAIshT,GAAY,YACdC,GAAY,iBACZC,GAAa,kBAmDf,SAAStjT,GAAOtF,EAAMs9C,EAAMi9F,EAAOy0H,GACjC,IAAIzpQ,EAAOg1I,EAAM5yI,OAAS,QACtB04B,EAAU,WACZ,OAAOrgC,EAAKoC,OAAOk7C,EAAKv+C,MAC1B,EAGAiwQ,EAAKo3C,OAAO7rK,EAAM6rK,OAAQ9oQ,EAAKv+C,OAG/Bu+C,EAAKh2C,iBAAiB/B,EAAM86B,GAG5B+nR,GAAmBp5C,EAAM1xN,EAAM/3C,EAAM86B,GAGrCrgC,EAAKlB,IAAM,SAAUC,GACnBu+C,EAAKv+C,MAAQA,EACbu+C,EAAKmkN,cAGT,SAAel8P,GACb,MAAwB,oBAAVsjT,MAAwB,IAAIA,MAAMtjT,GAAQ,CACtDA,KAAMA,EAEV,CAPuB,CAAMA,GAC3B,CACF,CAUA,SAAS,GAASvF,EAAMoH,EAAImzI,EAAOy0H,GACjC,IAAIjwQ,EAAQiwQ,EAAKo3C,OAAO7rK,EAAM6rK,QAC1Bj5P,EAAM,GAAQ,MAAO,CACvB,MAASu7P,KAEPviI,EAA0B,UAAhB5rC,EAAMt0B,MAAoB94D,EAAMA,EAAI5iD,YAAY,GAAQ,UACtE47K,EAAQ57K,YAAY,GAAQ,OAAQ,CAClC,MAASo+S,IACRpuK,EAAM17I,MAAQ07I,EAAM6rK,SACvBh/S,EAAGmD,YAAY4iD,GACf,IAAI84D,EAAQ,GACZ,OAAQs0B,EAAMt0B,OACZ,IAAK,WACHA,EAAQ,GACR,MACF,IAAK,SACHA,EAAQ,GACR,MACF,IAAK,QACHA,EAAQ,GACR,MACF,IAAK,QACHA,EAAQ,GAGZA,EAAMjmH,EAAMmmL,EAAS5rC,EAAOx7I,EAC9B,CAMA,SAAS,GAAKiB,EAAMoH,EAAImzI,EAAOx7I,GAC7B,IAAIu+C,EAAO,GAAQ,SACnB,IAAK,IAAI7f,KAAO88G,EACF,WAAR98G,GAA4B,YAARA,GACtB6f,EAAK4J,aAAqB,UAARzpB,EAAkB,OAASA,EAAK88G,EAAM98G,IAG5D6f,EAAK4J,aAAa,OAAQqzF,EAAM6rK,QAChC9oQ,EAAKv+C,MAAQA,EACbqI,EAAGmD,YAAY+yC,GACfA,EAAKh2C,iBAAiB,SAAS,WAC7B,OAAOtH,EAAKoC,OAAOk7C,EAAKv+C,MAC1B,IACAiB,EAAKu9B,SAAW,CAAC+f,GACjBt9C,EAAKlB,IAAM,SAAUC,GACnB,OAAOu+C,EAAKv+C,MAAQA,CACtB,CACF,CAKA,SAAS,GAASiB,EAAMoH,EAAImzI,EAAOx7I,GACjC,IAAIiE,EAAO,CACTuC,KAAM,WACN1G,KAAM07I,EAAM6rK,QAEVrnT,IAAOiE,EAAK4pE,SAAU,GAC1B,IAAItvB,EAAO,GAAQ,QAASt6C,GAC5BoE,EAAGmD,YAAY+yC,GACfA,EAAKh2C,iBAAiB,UAAU,WAC9B,OAAOtH,EAAKoC,OAAOk7C,EAAKsvB,QAC1B,IACA5sE,EAAKu9B,SAAW,CAAC+f,GACjBt9C,EAAKlB,IAAM,SAAUC,GACnB,OAAOu+C,EAAKsvB,UAAY7tE,GAAS,IACnC,CACF,CAKA,SAAS,GAAOiB,EAAMoH,EAAImzI,EAAOx7I,GAC/B,IAAIu+C,EAAO,GAAQ,SAAU,CACzBz+C,KAAM07I,EAAM6rK,SAEdz1C,EAASp2H,EAAMo2H,QAAU,GAC3Bp2H,EAAMx4G,QAAQ/8B,SAAQ,SAAUswD,EAAQx3D,GACtC,IAAIkF,EAAO,CACTjE,MAAOu2D,GAELwzP,GAAYxzP,EAAQv2D,KAAQiE,EAAK0tK,UAAW,GAChDpzH,EAAK/yC,YAAY,GAAQ,SAAUvH,GAAO2tQ,EAAO7yQ,IAAMw3D,GAAU,IACnE,IACAluD,EAAGmD,YAAY+yC,GACfA,EAAKh2C,iBAAiB,UAAU,WAC9BtH,EAAKoC,OAAOm4I,EAAMx4G,QAAQub,EAAK2kJ,eACjC,IACAjiM,EAAKu9B,SAAW,CAAC+f,GACjBt9C,EAAKlB,IAAM,SAAUC,GACnB,IAAK,IAAIjB,EAAI,EAAG0tB,EAAI+uH,EAAMx4G,QAAQtkC,OAAQK,EAAI0tB,IAAK1tB,EACjD,GAAIgrT,GAAYvuK,EAAMx4G,QAAQjkC,GAAIiB,GAEhC,YADAu+C,EAAK2kJ,cAAgBnkM,EAI3B,CACF,CAKA,SAAS,GAAMkC,EAAMoH,EAAImzI,EAAOx7I,GAC9B,IAAIuP,EAAQ,GAAQ,OAAQ,CACxB,MAASs6S,KAEXj4C,EAASp2H,EAAMo2H,QAAU,GAC3BvpQ,EAAGmD,YAAY+D,GACftO,EAAKu9B,SAAWg9G,EAAMx4G,QAAQnU,KAAI,SAAU0nC,EAAQx3D,GAClD,IAAIkF,EAAO,CACTuC,KAAM,QACN1G,KAAM07I,EAAM6rK,OACZrnT,MAAOu2D,GAELwzP,GAAYxzP,EAAQv2D,KAAQiE,EAAK4pE,SAAU,GAC/C,IAAIq5C,EAAQ,GAAQ,QAASjjH,GAC7BijH,EAAM3+G,iBAAiB,UAAU,WAC/B,OAAOtH,EAAKoC,OAAOkzD,EACrB,IACA,IAAI9L,EAAQ,GAAQ,QAAS,CAAC,GAAImnN,EAAO7yQ,IAAMw3D,GAAU,IAGzD,OAFA9L,EAAMu/P,QAAQ9iM,GACd33G,EAAM/D,YAAYi/C,GACXy8D,CACT,IACAjmH,EAAKlB,IAAM,SAAUC,GAGnB,IAFA,IAAIgmK,EAAQ/kK,EAAKu9B,SACf/R,EAAIu5I,EAAMtnK,OACHK,EAAI,EAAGA,EAAI0tB,IAAK1tB,EACnBgrT,GAAY/jJ,EAAMjnK,GAAGiB,MAAOA,KAAQgmK,EAAMjnK,GAAG8uE,SAAU,EAE/D,CACF,CAKA,SAAS,GAAM5sE,EAAMoH,EAAImzI,EAAOx7I,GAC9BA,OAAkBs0B,IAAVt0B,EAAsBA,IAAUw7I,EAAMxjI,MAAOwjI,EAAMzjI,KAAO,EAClE,IAAIC,EAAmB,MAAbwjI,EAAMxjI,IAAcwjI,EAAMxjI,IAAMF,KAAKE,IAAI,KAAMhY,IAAU,IACjE+X,EAAMyjI,EAAMzjI,KAAOD,KAAKC,IAAI,EAAGC,GAAMhY,IAAU,EAC/CslD,EAAOk2F,EAAMl2F,MAAQm6J,GAAS1nM,EAAKC,EAAK,KACtCumC,EAAO,GAAQ,QAAS,CAC1B/3C,KAAM,QACN1G,KAAM07I,EAAM6rK,OACZtvS,IAAKA,EACLC,IAAKA,EACLstC,KAAMA,IAER/G,EAAKv+C,MAAQA,EACb,IAAI+tH,EAAO,GAAQ,OAAQ,CAAC,GAAI/tH,GAChCqI,EAAGmD,YAAY+yC,GACfl2C,EAAGmD,YAAYuiH,GACf,IAAI1qH,EAAS,WACX0qH,EAAK7xC,YAAc39B,EAAKv+C,MACxBiB,EAAKoC,QAAQk7C,EAAKv+C,MACpB,EAGAu+C,EAAKh2C,iBAAiB,QAASlF,GAC/Bk7C,EAAKh2C,iBAAiB,SAAUlF,GAChCpC,EAAKu9B,SAAW,CAAC+f,GACjBt9C,EAAKlB,IAAM,SAAUC,GACnBu+C,EAAKv+C,MAAQA,EACb+tH,EAAK7xC,YAAcl8E,CACrB,CACF,CACA,SAAS+pT,GAAY/tS,EAAG8E,GACtB,OAAO9E,IAAM8E,GAAK9E,EAAI,IAAO8E,EAAI,EACnC,CACA,SAASmpS,GAAmBh6C,EAAMlzP,EAAG1U,EAAI1F,EAAaqgQ,EAAaj4G,GAEjE,OADAhuI,EAAIA,GAAK,IAAIpa,EAAYstQ,EAAK95C,WACrB2qC,WAAWz4P,EAAIuD,GAAMqkQ,GAAOpkQ,GAAOokQ,GAAO,GAAOA,GAAOjN,EAAaj4G,GAAK3iF,WAAW6nM,EAAK7nM,aACrG,CACA,SAASghP,GAAKn5C,EAAM/+P,GAClB,OAAQA,EAAY,WAClB,IACEA,EAAGhS,MAAMrB,KAAMY,UACjB,CAAE,MAAOwsD,GACPglN,EAAKhlN,MAAMA,EACb,CACF,EANa,IAOf,CAmDA,SAAS,GAAOglN,EAAM5nQ,EAAI+E,GACxB,GAAkB,iBAAP/E,EAAiB,CAC1B,GAAwB,oBAAbG,SAQT,OADAynQ,EAAKhlN,MAAM,oCACJ,KANP,KADA5iD,EAAKG,SAASqyD,cAAcxyD,IAG1B,OADA4nQ,EAAKhlN,MAAM,kCAAoC5iD,GACxC,IAMb,CACA,GAAIA,GAAM+E,EACR,IACE/E,EAAG6zE,YAAc,EACnB,CAAE,MAAOn6E,KACPsG,EAAK,KACL4nQ,EAAKhlN,MAAMlpD,IACb,CAEF,OAAOsG,CACT,CACA,IAAI,GAAS,SAAgBk8B,GAC3B,OAAQA,GAAK,CACf,EASA,SAAS2lR,GAAS3lR,GAChB,OAAOynB,GAASznB,GAAK,CACnBz3B,IAAK,GAAOy3B,EAAEz3B,KACdw0E,OAAQ,GAAO/8C,EAAE+8C,QACjBz0E,KAAM,GAAO03B,EAAE13B,MACf2D,MAAO,GAAO+zB,EAAE/zB,QAbA,SAAuB+zB,GACzC,MAAO,CACLz3B,IAAKy3B,EACL+8C,OAAQ/8C,EACR13B,KAAM03B,EACN/zB,MAAO+zB,EAEX,CAOM4lR,CAAc,GAAO5lR,GAC3B,CAOA,SAAS6lR,GAAe7tP,EAAIC,EAAK8mE,EAAKC,GACpC,OAAO8mL,GAAgBnrT,MAAMrB,KAAMY,UACrC,CAUA,SAAS4rT,KAkBP,OAjBAA,GAAkB,GAAgC,UAAyB,SAASxgP,EAASomM,EAAMzpQ,EAAMw8P,EAAaj4G,GACpH,IAAI3jH,EAAQqhM,EACZ,OAAO,UAAyB,SAAmB3+J,GACjD,cAAkBA,EAAU32C,KAAO22C,EAAU12C,MAC3C,KAAK,EAIH,OAHAgU,EAASylO,GAAarmQ,IAAOiiO,EAAMrhM,GAAUA,EAAOimO,WAC1C,GAAM,+BAAiC7mQ,GACjDsjE,EAAU12C,KAAO,EACV68O,EAAKxyC,WACd,KAAK,EACH,OAAO3zJ,EAAU9W,OAAO,SAAUi3P,GAAmBh6C,EAAM,KAAM,KAAMxnC,EAAKu6B,EAAaj4G,GAAKq4G,YAAY6M,EAAKq6C,YAAYlhP,OAC7H,KAAK,EACL,IAAK,MACH,OAAOU,EAAUjnE,OAEvB,GAAGgnE,EACL,KACOwgP,GAAgBnrT,MAAMrB,KAAMY,UACrC,CAIA,SAAS8rT,KAoBP,OAnBAA,GAAoB,GAAgC,UAAyB,SAAShlL,EAAS/+H,EAAMw8P,GACnG,IAAIjmP,EACJ,OAAO,UAAyB,SAAmByoH,GACjD,cAAkBA,EAAUryG,KAAOqyG,EAAUpyG,MAC3C,KAAK,EAKH,OAJI5sB,IAASimQ,GAAWxhQ,QAAUzE,IAASimQ,GAAWE,KAAOnmQ,IAASimQ,GAAWC,KAC/E,GAAM,4BAA8BlmQ,GAEtCg/H,EAAUpyG,KAAO,EACVg3R,GAAevsT,KAAM2I,EAAMw8P,GACpC,KAAK,EAEH,OADAjmP,EAAIyoH,EAAU96E,KACP86E,EAAUxyE,OAAO,SAAUxsD,IAASimQ,GAAWE,IAAM69C,GAAUztS,EAAEmhG,MAAO,iBAAmBnhG,EAAE3X,SAAS45E,UAAU,cACzH,KAAK,EACL,IAAK,MACH,OAAOwmD,EAAU3iI,OAEvB,GAAG0iI,EAAU1nI,KACf,KACO0sT,GAAkBrrT,MAAMrB,KAAMY,UACvC,CACA,SAAS+rT,GAAUjnS,EAAMknS,GACvB,IAAIC,EAAO,IAAIxzP,KAAK,CAAC3zC,GAAO,CAC1B/c,KAAMikT,IAER,OAAO1pT,OAAOk+E,IAAIQ,gBAAgBirO,EACpC,CAeA,SAASC,KAiBP,OAhBAA,GAAkB,GAAgC,UAAyB,SAASjlL,EAASs9H,EAAaj4G,GACxG,IAAIhuI,EACJ,OAAO,UAAyB,SAAmB4oH,GACjD,cAAkBA,EAAUxyG,KAAOwyG,EAAUvyG,MAC3C,KAAK,EAEH,OADAuyG,EAAUvyG,KAAO,EACVg3R,GAAevsT,KAAM4uQ,GAAWxhQ,OAAQ+3P,EAAaj4G,GAC9D,KAAK,EAEH,OADAhuI,EAAI4oH,EAAUj7E,KACPi7E,EAAU3yE,OAAO,SAAUj2C,EAAE3X,UACtC,KAAK,EACL,IAAK,MACH,OAAOugI,EAAU9iI,OAEvB,GAAG6iI,EAAU7nI,KACf,MACuBqB,MAAMrB,KAAMY,UACrC,CAIA,SAASmsT,KAiBP,OAhBAA,GAAe,GAAgC,UAAyB,SAASp2F,EAASwuC,GACxF,IAAIjmP,EACJ,OAAO,UAAyB,SAAmB03M,GACjD,cAAkBA,EAAUthM,KAAOshM,EAAUrhM,MAC3C,KAAK,EAEH,OADAqhM,EAAUrhM,KAAO,EACVg3R,GAAevsT,KAAM4uQ,GAAWE,IAAK3J,GAC9C,KAAK,EAEH,OADAjmP,EAAI03M,EAAU/pK,KACP+pK,EAAUzhK,OAAO,SAAUj2C,EAAEmhG,OACtC,KAAK,EACL,IAAK,MACH,OAAOu2G,EAAU5xN,OAEvB,GAAG2xN,EAAU32N,KACf,MACoBqB,MAAMrB,KAAMY,UAClC,CAWA,IAAIosT,GAAQ,QACVC,GAAS,SACT,GAAU,UACV,GAAO,CACL9hP,MAAM,GAEV,SAASstM,GAAUrG,EAAMrkQ,GACvB,IAAIoQ,EAAIi0P,EAAKiG,WACXj6P,EAAIg0P,EAAKh4L,UACX,OAAOrsE,GAASoQ,GAAKA,EAAEoxD,WAAa,GAAUnxD,EAAEpP,KAAOoP,EAAEzL,MAAQ,EACnE,CACA,SAAS+lQ,GAAWtG,EAAMpkQ,GACxB,IAAImQ,EAAIi0P,EAAKiG,WACXj6P,EAAIg0P,EAAKh4L,UACX,OAAOpsE,GAAUmQ,GAAKA,EAAEoxD,WAAa,GAAUnxD,EAAEnP,IAAMmP,EAAEqlE,OAAS,EACpE,CA4GA,SAASypO,GAASjrT,EAAMyjB,GACtB,OAAOA,EAAK01M,UAAY,GAAQ11M,EAAK2jG,MAAMlnH,QAAUF,EAAKiR,QAAQ,WACpE,CACA,SAASi6S,GAAWlrT,EAAMgrD,GACxB,QAAkB,WAAThrD,GAAqBgrD,aAAc61K,GAAW94I,MACzD,CA0BA,SAAS,GAAevmD,EAAS14B,EAAO0M,EAAMtV,GAC5C,IAAIqI,EAAKi5B,EAAQ9zB,UACbnF,GAAIA,EAAG8/C,aAAa,QAE1B,SAAuBnoD,GACrB,OAAgB,MAATA,EAAgB,GAAK,GAAQA,GAASirT,GAAYjrT,GAASgsD,GAAShsD,KAAWw5M,GAAOx5M,IAEzE4xB,EAF+F5xB,EAG5GqV,OAAOopB,KAAK7M,GAAK/C,KAAI,SAAU6P,GACpC,IAAI5uB,EAAI8hB,EAAI8M,GACZ,OAAOA,EAAM,MAAQ,GAAQ5uB,GAAKm7S,GAAYn7S,GAAK,GAAYA,GACjE,IAAGoX,KAAK,OANoHlnB,EAAQ,GAEtI,IAAsB4xB,CADtB,CAJmCs5R,CAAclrT,GACjD,CAUA,SAASirT,GAAYjrT,GACnB,MAAO,IAAMA,EAAM6uB,IAAI,IAAa3H,KAAK,MAAQ,GACnD,CACA,SAAS,GAAYlnB,GACnB,OAAO,GAAQA,GAAS,MAAagsD,GAAShsD,KAAWw5M,GAAOx5M,GAAS,MAAaA,CACxF,CAYA,SAASmrT,GAAKj6F,EAAMluL,GAClB,IAAIitO,EAAOpyQ,KAMX,GALAmlC,EAAUA,GAAW,CAAC,EACtBs8L,GAAS7/N,KAAKwwQ,GACVjtO,EAAQmzL,QAAQ85C,EAAK95C,OAAOnzL,EAAQmzL,QACpCnzL,EAAQ+yK,QAAQk6D,EAAKl6D,OAAO/yK,EAAQ+yK,QAChB,MAApB/yK,EAAQu8L,UAAkB0wC,EAAK1wC,SAASv8L,EAAQu8L,UAChDv8L,EAAQ08B,QAAUwxJ,EAAKxxJ,OAAQ,CACjC,IAAI5K,EAAMnhB,GAAO,CAAC,EAAGu9K,EAAKxxJ,OAAQ18B,EAAQ08B,QAC1CuwM,EAAKvwM,OAAO,GAAO5K,EAAIiR,OAAQjR,EAAInzD,MACrC,CACAsuQ,EAAKjO,IAAM,KACXiO,EAAKm7C,QAAU,KACfn7C,EAAKo7C,YAAcroR,EAAQwzN,UAAYiW,GAAWxhQ,OAClDglQ,EAAKq6C,YAAc,IAAIvpD,GACvB,IAAI33L,EAAO6mM,EAAKq6C,YAAYlhP,KAG5B6mM,EAAK24C,UAAY,KACjB34C,EAAKpO,SAAW7+N,EAAQ4/N,SAAW,GAAgBqN,EAAKjK,SAAU,EAClEiK,EAAK44C,UAAW,IAAIvkD,IAAgB9I,MAAMpyL,GAC1C6mM,EAAKq7C,eAAgB,EACrBr7C,EAAKs7C,iBAAkB,EACvBt7C,EAAKu7C,QAAU,GACfv7C,EAAKq5C,gBAAkB,GACvBr5C,EAAK64C,iBAAmB,GAGxB74C,EAAKu5C,aAj1BP,SAA+Bn/M,GAC7B,IAAI1rG,EAASg1C,GAAO,CAClB83Q,SAAU,CAAC,GACVphN,GACCqhN,EAAS,SAAgB95R,EAAK6M,GAChCA,EAAKx4B,SAAQ,SAAU1B,GACjB,GAAQqtB,EAAIrtB,MAAKqtB,EAAIrtB,GAAKi2M,GAAM5oL,EAAIrtB,IAC1C,GACF,EAGA,OAFAmnT,EAAO/sT,EAAO8sT,SAAU,CAAC,UAAW,UACpCC,EAAO/sT,EAAQ,CAAC,OAAQ,SAAU,aAC3BA,CACT,CAq0BsBgtT,CAAsBz6F,EAAKw2F,aAC/Cz3C,EAAKq4C,aAAar4C,EAAKu5C,aAAalB,cAGpC,IAAI9kR,EAlON,SAAiBysO,EAAM/+C,EAAMqc,GAC3B,OAAO,GAAQ0iC,EAAMtvC,GAAYkgF,GAAiBtzE,GAAMjpL,MAAM4sK,EAChE,CAgOY06F,CAAQ37C,EAAM/+C,EAAMluL,EAAQuqM,MACtC0iC,EAAKu4C,SAAWhlR,EAChBysO,EAAKO,SAAWhtO,EAAI2yK,QACpB85D,EAAK47C,OAAS36F,EAAK46F,UAAY,IAAIj9R,KAAI,SAAU0V,GAC/C,MAAO,CACL6c,MAAO,KACPo6F,MAAO7nG,GAAO,CAAC,EAAGpP,GAEtB,IAGIf,EAAI4lC,MAAM5lC,EAAI4lC,KAAKrpE,IAAIqpE,GAC3BA,EAAKl6C,OAASsU,EAAIjgB,KAAK6lD,KAAK89C,MAC5B+oJ,EAAKv3C,MAAMl1L,EAAIjgB,KAAK6lD,KAAK89C,MAAO+oJ,EAAKl4C,YAAYO,OAAOlvJ,EAAKplB,QAG7DisN,EAAKnoM,OAASmoM,EAAKrkQ,QACnBqkQ,EAAKloM,QAAUkoM,EAAKpkQ,SACpBokQ,EAAKw4C,WAAanyC,GAAUrG,EAAMA,EAAKnoM,QACvCmoM,EAAKy4C,YAAcnyC,GAAWtG,EAAMA,EAAKloM,SACzCkoM,EAAK7N,QAAU,CAAC,EAAG,GACnB6N,EAAKtJ,QAAU,EACfsJ,EAAKoG,UAAY,EA9NnB,SAA0BpG,GACxB,IAAIt0P,EAAIs0P,EAAKO,SACXjlP,EAAI5P,EAAEkvS,IACN3nS,EAAIvH,EAAEmvS,IACN7uS,EAAIN,EAAE,IACR,SAASowS,IACP97C,EAAKoG,UAAYpG,EAAKtJ,QAAU,CAClC,CAGAsJ,EAAK+7C,aAAe/7C,EAAK5gQ,IAAI,MAAM,SAAUk1B,GAC3C0rO,EAAKnoM,OAASvjC,EAAEpC,KAChB8tO,EAAKw4C,WAAanyC,GAAUrG,EAAM1rO,EAAEpC,MACpC4pR,GACF,GAAG,CACD5pR,KAAM5W,IAIR0kP,EAAKg8C,cAAgBh8C,EAAK5gQ,IAAI,MAAM,SAAUk1B,GAC5C0rO,EAAKloM,QAAUxjC,EAAEpC,KACjB8tO,EAAKy4C,YAAcnyC,GAAWtG,EAAM1rO,EAAEpC,MACtC4pR,GACF,GAAG,CACD5pR,KAAMjf,IAIR,IAAIgpS,EAAgBj8C,EAAK5gQ,IAAI,KAAM08S,EAAW,CAC5C5xG,IAAKl+L,IAIPg0P,EAAK+7C,aAAaxyF,KAAOjuM,EAAEiuM,KAAO,EAClCy2C,EAAKg8C,cAAczyF,KAAOt2M,EAAEs2M,KAAO,EACnC0yF,EAAc1yF,KAAOv9M,EAAEu9M,KAAO,CAChC,CA2LE2yF,CAAiBl8C,GA/iCnB,SAAoBA,GAElBA,EAAK5gQ,IAAI,MAAM,SAAUk1B,GAGvB,OAFA0rO,EAAKm8C,YAAc7nR,EAAE4lO,GACrB8F,EAAKtJ,QAAU,EACRpiO,EAAE4lO,EACX,GAAG,CACDA,GAAI8F,EAAKO,SAASpoM,YAEtB,CAyiCE,CAAW6nM,GAviCb,SAAgBA,GAEd,IAAIrmQ,EAASqmQ,EAAKO,SAAS5mQ,SAAWqmQ,EAAKO,SAAS5mQ,OAASqmQ,EAAK5gQ,IAAI,CACpEg9S,KAAMhE,GACN/yS,KAAM,QAIR26P,EAAKjyQ,GAAGiyQ,EAAKtxQ,OAAO,OAAQ,aAAciL,GAAQ,SAAU26B,EAAG37B,GAC7D,IAAI5I,EAAQ4J,EAAO5J,MACjBqsT,EAAOrsT,EAAQ,GAASA,GAASA,EAAQA,EAAMqsT,KAAOhE,GACtD/yS,EAAO1M,EAAM0M,MAAQ1M,EAAM0M,KAAK1L,QAAU,KAC5C,OAAO5J,GAASqsT,IAASrsT,EAAMqsT,MAAQ/2S,GAAQtV,EAAMsV,KAAOtV,EAAQ,CAClEqsT,KAAMA,EACN/2S,KAAMA,EAEV,IAGA26P,EAAK5gQ,IAAI,MAAM,SAAUk1B,GACvB,IAAI8nR,EAAO9nR,EAAE36B,OACX0L,EAAOzX,KAAKmC,MAMd,OALK,GAASqsT,KACZ/2S,EAAO+2S,EAAK/2S,KACZ+2S,EAAOA,EAAKA,MAEdngT,GAAU+jQ,EAAMo8C,GAAQA,IAAShE,GAAUgE,EAAO/2S,GAAQ+2S,GACnD/2S,CACT,GAAG,CACD1L,OAAQA,GAEZ,CA2gCEA,CAAOqmQ,GAGPA,EAAKprM,YAAYqsJ,EAAKrsJ,aAGlB7hC,EAAQspR,OAAOr8C,EAAKq8C,QAGpBtpR,EAAQn8B,WAAWopQ,EAAKnP,WAAW99N,EAAQn8B,UAAWm8B,EAAQ/hC,KACpE,CACA,SAASsrT,GAAat8C,EAAMnwQ,GAC1B,OAAO,GAAemwQ,EAAKO,SAAU1wQ,GAAQmwQ,EAAKO,SAAS1wQ,GAAQ,GAAM,6BAA+B,GAAYA,GACtH,CACA,SAAS0sT,GAAoB1hQ,EAAIxpB,GAC/B,IAAIpe,GAAK4nC,EAAG+uK,UAAY,IAAIzrN,QAAO,SAAU08C,GAC3C,OAAOA,EAAG5lD,SAAW4lD,EAAG5lD,QAAQo8B,UAAYA,CAC9C,IACA,OAAOpe,EAAExkB,OAASwkB,EAAE,GAAK,IAC3B,CACA,SAASupS,GAAoBx8C,EAAMnwQ,EAAMgrD,EAAIxpB,GAC3C,IAAIpe,EAAIspS,GAAoB1hQ,EAAIxpB,GAQhC,OAPKpe,KACHA,EAAIkmS,GAAKn5C,GAAM,WACb,OAAO3uO,EAAQxhC,EAAMgrD,EAAG9qD,MAC1B,KACEshC,QAAUA,EACZ2uO,EAAKjyQ,GAAG8sD,EAAI,KAAM5nC,IAEb+sP,CACT,CACA,SAASy8C,GAAuBz8C,EAAMnlN,EAAIxpB,GACxC,IAAIpe,EAAIspS,GAAoB1hQ,EAAIxpB,GAEhC,OADIpe,GAAG4nC,EAAG+uK,SAAS7oN,OAAOkS,GACnB+sP,CACT,CACA,GAASk7C,GAAM7rF,GAAU,CAEvBjF,SAAU,SAAkB7B,EAAQqE,EAAQC,GAC1C,IAAIx+N,EAAQT,KACZ,OAAO,GAAgC,UAAyB,SAASi+D,IACvE,OAAO,UAAyB,SAAkBO,GAChD,cAAkBA,EAASlpC,KAAOkpC,EAASjpC,MACzC,KAAK,EAEH,OADAipC,EAASjpC,KAAO,EACTksM,GAASvhO,UAAUs8N,SAAS56N,KAAKnB,EAAOk6N,EAAQqE,GACzD,KAAK,EACH,IAAMv+N,EAAM0nQ,UAAW1nQ,EAAMqoQ,QAAU,CACrCtqM,EAASjpC,KAAO,GAChB,KACF,CAEA,GADAipC,EAASlpC,KAAO,GACX70B,EAAMsqT,UAAW,CACpBvsP,EAASjpC,KAAO,EAChB,KACF,CAMA,OALI90B,EAAMqoQ,UACRroQ,EAAMqoQ,QAAU,EAChBgiD,GAAerqT,IAEjB+9D,EAASjpC,KAAO,EACT90B,EAAMsqT,UAAUxlD,YAAY9kQ,EAAMgsT,YAAYlhP,MACvD,KAAK,EACH9qE,EAAM0nQ,SAAU,EAChB3pM,EAASjpC,KAAO,GAChB,MACF,KAAK,GACHipC,EAASlpC,KAAO,GAChBkpC,EAASp6D,GAAKo6D,EAAgB,MAAE,GAChC/9D,EAAM2sD,MAAMoR,EAASp6D,IACvB,KAAK,GAGH,OADI66N,GAAS3F,GAAc74N,EAAOw+N,GAC3BzgK,EAASrJ,OAAO,SAAU10D,GACnC,KAAK,GACL,IAAK,MACH,OAAO+9D,EAASx5D,OAEtB,GAAGi5D,EAAS,KAAM,CAAC,CAAC,EAAG,KACzB,IAvCO,EAwCT,EACAsrE,MAAO,SAAe9xH,GACpBzX,KAAKmoQ,SAAU,EACfnoQ,KAAK+qT,WAAa/qT,KAAK+qT,UAAUxhL,MAAM9xH,EACzC,EAEAuvD,YAAa,SAAqBnmD,GAChC,GAAIjgB,UAAUC,OAAQ,CACpB,IAAI4xD,EAAe,MAAR5xC,EAAeA,EAAO,GAAK,KAEtC,OADI4xC,IAASzyD,KAAK8uT,OAAO9F,GAAUhpT,KAAKmkQ,IAAKnkQ,KAAK8uT,MAAQr8P,GACnDzyD,IACT,CACA,OAAOA,KAAK8uT,KACd,EACA9lT,UAAW,WACT,OAAOhJ,KAAKmkQ,GACd,EACA0O,WAAY,WACV,OAAO7yQ,KAAKysT,WACd,EACA5uP,OAAQ,WACN,OAAO79D,KAAKukQ,QAAQv9O,OACtB,EACAwiS,OAAQ,SAAgBvnT,EAAME,EAAOgjC,GACnC,IAAI8nB,EAAKyhQ,GAAa1uT,KAAMiC,GAC5B,OAA4B,IAArBrB,UAAUC,OAAeosD,EAAG9qD,MAAQnC,KAAKwF,OAAOynD,EAAI9qD,EAAOgjC,EACpE,EACAp3B,MAAO,SAAe24B,GACpB,OAAO9lC,UAAUC,OAASb,KAAKwpT,OAAO,QAAS9iR,GAAK1mC,KAAKwpT,OAAO,QAClE,EACAx7S,OAAQ,SAAgB04B,GACtB,OAAO9lC,UAAUC,OAASb,KAAKwpT,OAAO,SAAU9iR,GAAK1mC,KAAKwpT,OAAO,SACnE,EACApvO,QAAS,SAAiB1zC,GACxB,OAAO9lC,UAAUC,OAASb,KAAKwpT,OAAO,UAAW6C,GAAS3lR,IAAM2lR,GAASrsT,KAAKwpT,OAAO,WACvF,EACAnxC,SAAU,SAAkB3xO,GAC1B,OAAO9lC,UAAUC,OAASb,KAAKwpT,OAAO,WAAY9iR,GAAK1mC,KAAKwpT,OAAO,WACrE,EACAj/O,WAAY,SAAoB7jC,GAC9B,OAAO9lC,UAAUC,OAASb,KAAKwpT,OAAO,aAAc9iR,GAAK1mC,KAAKwpT,OAAO,aACvE,EACA7wD,SAAU,SAAkBhwP,GAC1B,OAAK/H,UAAUC,QACVmuQ,GAAarmQ,IAAO,GAAM,+BAAiCA,GAC5DA,IAAS3I,KAAKwtT,cAChBxtT,KAAKwtT,YAAc7kT,EACnB3I,KAAK+uT,kBAEA/uT,MANuBA,KAAKwtT,WAOrC,EACAzoD,QAAS,SAAiBthO,GACxB,OAAK7iC,UAAUC,QACX4iC,IAAYzjC,KAAKgkQ,WACnBhkQ,KAAKgkQ,SAAWvgO,EAChBzjC,KAAK+uT,kBAEA/uT,MALuBA,KAAKgkQ,QAMrC,EACA1rC,OAAQ,SAAgBuJ,GACtB,OAAKjhO,UAAUC,QACXghO,IAAY7hO,KAAK6hO,UACnBJ,GAASvhO,UAAUo4N,OAAO12N,KAAK5B,KAAM6hO,GACrC7hO,KAAK+uT,kBAEA/uT,MALuBA,KAAK6hO,OAMrC,EACA/9C,OAAQ,WAIN,OAFA9jL,KAAKw4Q,UAAY,EAEVx4Q,KAAK89N,MAAM4wF,GAAa1uT,KAAM,YACvC,EACA+uT,eAAgB,WACV/uT,KAAK+qT,YACP/qT,KAAK+qT,UAAY,KACjB/qT,KAAKijQ,WAAWjjQ,KAAKmkQ,IAAKnkQ,KAAKutT,SAEnC,EAEA50C,YAhWF,SAAoBF,EAAWC,EAAY3qQ,EAAOC,EAAQ6vD,EAAQy2M,GAChEt0Q,KAAK+gO,UAAS,SAAUqxC,GACtB,IAAI48C,EAAQ,EAGZ58C,EAAKoG,UAAY,EAGbpG,EAAKrkQ,UAAYA,IACnBihT,EAAQ,EACR58C,EAAKo3C,OAAOwD,GAAOj/S,EAAO,IAC1BqkQ,EAAK+7C,aAAahjP,MAAK,IAIrBinM,EAAKpkQ,WAAaA,IACpBghT,EAAQ,EACR58C,EAAKo3C,OAAOyD,GAAQj/S,EAAQ,IAC5BokQ,EAAKg8C,cAAcjjP,MAAK,IAItBinM,EAAKw4C,aAAenyC,IACtBrG,EAAKtJ,QAAU,EACfsJ,EAAKw4C,WAAanyC,GAIhBrG,EAAKy4C,cAAgBnyC,IACvBtG,EAAKtJ,QAAU,EACfsJ,EAAKy4C,YAAcnyC,GAIjBtG,EAAK7N,QAAQ,KAAO1mM,EAAO,IAAMu0M,EAAK7N,QAAQ,KAAO1mM,EAAO,KAC9Du0M,EAAKtJ,QAAU,EACfsJ,EAAK7N,QAAU1mM,GAIbmxP,GAAO58C,EAAK11C,IAAI,SAChB43C,GAAMlC,EAAKrxC,UAAS,SAAU9uN,GAChC,OAAOA,EAAE6xK,QACX,GACF,IAAG,EAAO,EACZ,EAqTEp5K,iBAAkB,SAA0B/B,EAAM86B,EAAS0B,GACzD,IAAI9kC,EAAWojC,EAOf,OANM0B,IAA4B,IAAjBA,EAAQomR,QAEvBlrT,EAAWkrT,GAAKvrT,KAAMyjC,IACbk4M,IAAMl4M,GAEjBzjC,KAAKgrT,SAAS7qT,GAAGwI,EAAMtI,GAChBL,IACT,EACA6K,oBAAqB,SAA6BlC,EAAM86B,GAOtD,IANA,IAEEpe,EACAthB,EAHE2gQ,EAAW1kQ,KAAKgrT,SAAStmD,SAAS/7P,GACpCzH,EAAIwjQ,EAAS7jQ,SAKNK,GAAK,GAGZ,GAFA6C,EAAI2gQ,EAASxjQ,GAAGyH,KAChB0c,EAAIq/O,EAASxjQ,GAAGuiC,QACZ96B,IAAS5E,IAAM0/B,IAAYpe,GAAKoe,IAAYpe,EAAEs2N,KAAM,CACtD37O,KAAKgrT,SAAS1pT,IAAIyC,EAAGshB,GACrB,KACF,CAEF,OAAOrlB,IACT,EACAivT,kBAAmB,SAA2BxrR,GAC5C,IAAIne,EAAItlB,KAAKirT,iBAOb,OANI3lS,EAAEpS,QAAQuwB,GAAW,GAIvBne,EAAE/kB,KAAKkjC,GAEFzjC,IACT,EACAkvT,qBAAsB,SAA8BzrR,GAClD,IAAIne,EAAItlB,KAAKirT,iBACX/pT,EAAIokB,EAAEpS,QAAQuwB,GAIhB,OAHIviC,GAAK,GACPokB,EAAElkB,OAAOF,EAAG,GAEPlB,IACT,EACAmvT,kBAAmB,SAA2BltT,EAAMwhC,GAClD,OAAOmrR,GAAoB5uT,KAAMiC,EAAMysT,GAAa1uT,KAAMiC,GAAOwhC,EACnE,EACA2rR,qBAAsB,SAA8BntT,EAAMwhC,GACxD,OAAOorR,GAAuB7uT,KAAM0uT,GAAa1uT,KAAMiC,GAAOwhC,EAChE,EACA4rR,gBAAiB,SAAyBptT,EAAMwhC,GAC9C,OAAOmrR,GAAoB5uT,KAAMiC,EAAMyoT,GAAQ1qT,KAAMiC,GAAMu+B,OAAQiD,EACrE,EACA6rR,mBAAoB,SAA4BrtT,EAAMwhC,GACpD,OAAOorR,GAAuB7uT,KAAM0qT,GAAQ1qT,KAAMiC,GAAMu+B,OAAQiD,EAClE,EACAgnR,aAAc,SAAsB/jR,GAClC,GAAI9lC,UAAUC,OAAQ,CACpB,GAAIb,KAAKytT,kBAAoB/mR,EAAG,CAC9B,IAAIpR,EAAOjnB,GAAUrO,KAAM,MAC3BA,KAAKytT,gBAAkB/mR,EACnBpR,GAAMjnB,GAAUrO,KAAMs1B,EAC5B,CAEA,OAAOt1B,IACT,CACE,OAAOA,KAAKytT,aAEhB,EACAhhT,eAAgB,SAAwBi6B,GACtC,OAAI9lC,UAAUC,QACZb,KAAK0tT,gBAAkBhnR,EAChB1mC,MAEAA,KAAK0tT,eAEhB,EACA9pT,MApVF,SAAevD,EAAUwD,GAOvB7D,KAAK2tT,QAAQptT,KCh/BA,SAAUF,EAAUwD,EAAOC,GACxC,IAAIC,EAAI,IAAIP,GACVs1D,EAAQj1D,EACV,OAAa,MAATA,GAAsBE,EAAEC,QAAQ3D,EAAUwD,EAAOC,GAAOC,IAC5DA,EAAEwrT,SAAWxrT,EAAEC,QACfD,EAAEC,QAAU,SAAU3D,EAAUwD,EAAOC,GACrCD,GAASA,EAAOC,EAAe,MAARA,EAAe,MAASA,EAC/CC,EAAEwrT,UAAS,SAASp7B,EAAKxuR,GACvBA,GAAWmzD,EACX/0D,EAAEwrT,SAASp7B,EAAMr7N,GAASj1D,EAAOC,GACjCzD,EAASsF,EACX,GAAG9B,EAAOC,EACZ,EACAC,EAAEC,QAAQ3D,EAAUwD,EAAOC,GACpBC,EACT,CDi+BoB,EANlB,SAAc4B,GACZtF,EAAS,CACP0hH,UAAW/+G,KAAKD,MAChB4C,QAASA,GAEb,GACiC9B,GACnC,EA6UE/C,OAzjCF,SAAgBuwB,EAAQ1oB,EAAM4H,GAC5B,IAUE4xN,EAVEiwC,EAAOpyQ,KACT8d,EAAI,IAAI++M,GAAYtsN,GACpB2pD,EAAO,SAAch2D,EAAGuT,GACtB26P,EAAKxyC,SAAS,MAAM,WACdvuM,IAAWg6R,IA3BvB,SAAiBj5C,EAAMzpQ,GACrB,IAAIy9B,EAAMgsO,EAAKu5C,aAAaiC,SAC1B4B,EAAUppR,EAAIopR,QACdC,EAAQrpR,EAAIqpR,MACd,OAAmB,IAAZD,IAA+B,IAAVC,KAAqC,IAAZD,IAA8B,IAAVC,IAAyBD,EAAUA,EAAQ7mT,GAAQ8mT,GAASA,EAAM9mT,GAAQypQ,EAAK3lQ,kBAC1J,CAsB+B+iT,CAAQp9C,EAAMzpQ,IACnCzE,EAAEuI,iBAEJqR,EAAEg/M,QAAQouF,GAAY94C,EAAMluQ,EAAGuT,GACjC,GACF,EAEF,GAjEQ,UAiEJ4Z,EACEq6R,GAAOt5C,EAAM,QAASzpQ,IACxBypQ,EAAKxuQ,MAAMs2D,EAAMvxD,QAEd,GAAI0oB,IAAWg6R,GAChBK,GAAOt5C,EAAM,OAAQzpQ,IAEvBypQ,EAAK1nQ,iBAAiB/B,EAAMuxD,EAAMoxP,SAYpC,GAnFO,WA0EHj6R,EACEq6R,GAAOt5C,EAAM,SAAUzpQ,IAA2B,oBAAXzF,SACzCi/N,EAAU,CAACj/N,SAEgB,oBAAbyH,UACZ+gT,GAAOt5C,EAAM,WAAYzpQ,KAC3Bw5N,EAAU1hM,MAAMnH,KAAK3uB,SAAS6qL,iBAAiBnkK,KAG9C8wM,EAEE,CACL,IAAK,IAAIjhO,EAAI,EAAG0tB,EAAIuzM,EAAQthO,OAAQK,EAAI0tB,IAAK1tB,EAC3CihO,EAAQjhO,GAAGwJ,iBAAiB/B,EAAMuxD,GAEpCsxP,GAAmBp5C,EAAMjwC,EAASx5N,EAAMuxD,EAC1C,MANEk4M,EAAKnyH,KAAK,iCAAmC5uH,GAQjD,OAAOvT,CACT,EAihCE4xS,SAl/BF,WACE,IAGE9gS,EACA7Y,EACA7R,EALE6gQ,EAAU/kQ,KAAKgkQ,SACjB2rD,EAAS3vT,KAAK2tT,QACd9iQ,EAAY7qD,KAAKyrT,gBAKnB,IADA78R,EAAI+gS,EAAO9uT,SACF+tB,GAAK,GACZ+gS,EAAO/gS,GAAG5pB,OAGZ,IADA4pB,EAAIi8B,EAAUhqD,SACL+tB,GAAK,GAGZ,IADA7Y,GADA7R,EAAI2mD,EAAUj8B,IACRuzM,QAAQthO,SACLkV,GAAK,GACZ7R,EAAEi+N,QAAQpsN,GAAGlL,oBAAoB3G,EAAEyE,KAAMzE,EAAEu/B,SAM/C,OAHIshO,GACFA,EAAQnjQ,KAAK5B,KAAMA,KAAKgrT,SAAU,KAAM,KAAM,MAEzChrT,IACT,EA49BEyuT,MArgCF,SAAemB,EAAUC,GASvB,OAPAA,EAAW,CAACA,GAAY,UADxBD,EAAW,CAACA,GAAY,UACmB,IAG3C5vT,KAAKG,GAAGH,KAAKc,OAAO,OAAQ,YAAa8qT,IAAaC,GAAYt3P,GAAOq7P,IAGzE5vT,KAAKG,GAAGH,KAAKc,OAAO,OAAQ,WAAY8qT,IAAaC,GAAYt3P,GAAOs7P,IACjE7vT,IACT,EA6/BE0lB,KAlvCF,SAAczjB,EAAMu+B,GAClB,OAAO5/B,UAAUC,OAAS,EAAI6pT,GAAQ1qT,KAAMiC,GAAMu+B,OAAOr+B,MAAQ40R,GAAOn1R,KAAK5B,KAAMiC,EAAMi4N,KAAY/mN,OAAO0kM,IAAQ4iB,OAAOj6L,GAC7H,EAivCEu2P,OAAQA,GACRt8D,OAzuCF,SAAgBx4N,EAAMykC,GACpB,OAAOqwP,GAAOn1R,KAAK5B,KAAMiC,EAAMi4N,KAAYO,OAAO/zL,GACpD,EAwuCEvzB,OAvuCF,SAAgBlR,EAAMykC,GACpB,OAAOqwP,GAAOn1R,KAAK5B,KAAMiC,EAAMi4N,KAAY/mN,OAAOuzB,GACpD,EAuuCE5tB,MAtfF,SAAe7W,GACb,IAAIioP,EAASlqP,KAAK2qT,SAASzgE,OAI3B,OAHK,GAAeA,EAAQjoP,IAC1B,GAAM,qCAAuCA,GAExCioP,EAAOjoP,GAAME,KACtB,EAkfE8gQ,WAvsBF,SAAoBz4P,EAAIslT,GACtB,IAAI19C,EAAOpyQ,KACT2I,EAAOypQ,EAAKo7C,YACZhhN,EAAS4lK,EAAKu5C,aAAavoT,KAC3BmmC,EAASylO,GAAarmQ,GAGxB6B,EAAK4nQ,EAAKjO,IAAM35P,EAAK,GAAO4nQ,EAAM5nQ,GAAI,GAAQ,KA9nBhD,SAAwB4nQ,GACtB,IAAI5nQ,EAAK4nQ,EAAKppQ,YACVwB,IACFA,EAAG8/C,aAAa,OAAQ,qBACxB9/C,EAAG8/C,aAAa,uBAAwB,iBACxC0+P,GAAUx+S,EAAI4nQ,EAAKprM,eAEvB,CA0nBE+oP,CAAe39C,GAGV7oO,GAAQ6oO,EAAKhlN,MAAM,+BAAiCzkD,GACzD,IAAIk7P,EAAUt6N,EAAO9F,SAAWgjO,GAC9BvC,EAAW15P,EAAK++B,EAAOovN,SAAWpvN,EAAOimO,SAqB3C,OAlBA4C,EAAK24C,UAAa7mD,EAAkBkoD,GAAmBh6C,EAAMA,EAAK24C,UAAWvgT,EAAI05P,GAApD,KAC7BkO,EAAK44C,SA/BP,SAA2B54C,EAAM49C,EAAaxlT,EAAI1F,GAEhD,IAAI2+B,EAAU,IAAI3+B,EAAYstQ,EAAK95C,SAAUizF,GAAKn5C,EAAMA,EAAKrN,YAAYpH,MAAMyU,EAAKS,aAAatnM,MAAM03L,WAAWz4P,EAAI,GAAO4nQ,GAAOA,GAQpI,OALI49C,GACFA,EAAYtrD,WAAWt8P,SAAQ,SAAUid,GACvCoe,EAAQtjC,GAAGklB,EAAE1c,KAAM0c,EAAEoe,QACvB,IAEKA,CACT,CAoBkBwsR,CAAkB79C,EAAMA,EAAK44C,SAAUxgT,EAAIq5P,GAC3DuO,EAAKjK,SAAU,EAGX39P,GAAiB,SAAXgiG,IACRsjN,EAASA,EAAS19C,EAAKm7C,QAAU,GAAOn7C,EAAM09C,GAAQ,GAAQtlT,EAAGmD,YAAY,GAAQ,OAAQ,CAC3F,MAAS,mBAEXykQ,EAAK47C,MAAM5lT,SAAQ,SAAUs+B,GACvBA,EAAEi3G,MAAMhuI,SAAsB,cAAX68F,IACrB9lE,EAAE/2B,QAAU,GAAOyiQ,EAAM1rO,EAAEi3G,MAAMhuI,UAAW+2B,EAAEi3G,MAAMt0B,OAExD,IACA+oJ,EAAK47C,MAAM5lT,SAAQ,SAAUs+B,IAtSjC,SAAc0rO,EAAM5nQ,EAAI0lT,GACtB,GAAK1lT,EAAL,CACA,IAAImzI,EAAQuyK,EAAQvyK,MAChBv6I,EAAO8sT,EAAQ3sQ,MACdngD,IACHA,EAAO8sT,EAAQ3sQ,MAAQ,CACrB5iB,SAAU,KACV41F,QAAQ,EACRr0H,IAAK,KACLsD,OAAQ,SAAgBrD,GAClBA,GAASiwQ,EAAKo3C,OAAO7rK,EAAM6rK,SAC7Bp3C,EAAKxyC,SAAS,MAAM,WAClBx8N,EAAKiuB,QAAS,EACd+gP,EAAKo3C,OAAO7rK,EAAM6rK,OAAQrnT,EAC5B,GAEJ,GAEEw7I,EAAM+qC,WACRtlL,EAAKoC,OAAS,GAASm4I,EAAM+qC,SAAUtlL,EAAKoC,WAGpB,MAAfm4I,EAAMt0B,OAAiBs0B,EAAMhuI,QAAUjH,GAAS,IACtDtF,EAAMoH,EAAImzI,EAAOy0H,GACnBhvQ,EAAKmzH,SACR67I,EAAKjyQ,GAAGiyQ,EAAKO,SAASh1H,EAAM6rK,QAAS,MAAM,WACzCpmT,EAAKiuB,OAASjuB,EAAKiuB,QAAS,EAAQjuB,EAAKlB,IAAIkwQ,EAAKo3C,OAAO7rK,EAAM6rK,QACjE,IACApmT,EAAKmzH,QAAS,EA3BD,CA8BjB,CAwQM,CAAK67I,EAAM1rO,EAAE/2B,SAAWmgT,EAAQppR,EAClC,KAEK0rO,CACT,EAoqBE+9C,WAnlBF,SAA0BxqL,EAAKsB,GAC7B,OAAOylL,GAAkBrrT,MAAMrB,KAAMY,UACvC,EAklBE6xR,SA/iBF,SAAwBvrJ,EAAKK,GAC3B,OAAOulL,GAAgBzrT,MAAMrB,KAAMY,UACrC,EA8iBEwvT,MArhBF,SAAqBhpL,GACnB,OAAO2lL,GAAa1rT,MAAMrB,KAAMY,UAClC,EAqhBEypT,SAnYF,SAAkBllR,GAChB,OAAOnlC,KAAK2qT,SAASN,SAASllR,GAAW,CACvCzf,KAAMwnS,GACN50G,QAAS60G,GACTz8R,SAAS,GAEb,EA8XE0uC,SAhXF,SAAkB7b,GAOhB,OANAvjD,KAAK4/N,SAAS,MAAM,SAAU3tN,GAC5BA,EAAE4yS,UAAW,EACb5yS,EAAE04S,SAASvrP,SAAS7b,EACtB,IAAG,SAAUtxC,GACXA,EAAE4yS,UAAW,CACf,IACO7kT,IACT,IEz+BA,IAyBIqwT,GAAgBC,GAzBhB,GAAO,OACTC,GAAS,IACTC,GAAS,IACTC,GAAS,IACTC,GAAS,IACTC,GAAQ,IACRC,GAAQ,IACRC,GAAO,IACPC,GAAK,IACL,GAAU,UACVC,GAAgB,CACd,IAAK,EACLrxG,IAAK,EACL92J,KAAM,EACNl3C,MAAO,EACPm3G,MAAO,EACP3yF,KAAM,EACNrvB,KAAM,EACN2Z,KAAM,EACN2gH,KAAM,EACN17H,MAAO,EACPgjC,OAAQ,EACR5nB,KAAM,EACNk2O,MAAO,GAQX,SAASi6D,GAAcC,EAAU5/R,EAAQk+O,GAGvC,OAFA8gD,GAAiBh/R,GAAU,GAC3Bi/R,GAAQ/gD,GAASwhD,GACVG,GAAWD,EAASp9R,QAAQ7C,IAAImgS,GACzC,CAIA,SAAS,GAAKrzS,EAAG5c,EAAGkwT,EAASC,EAAUC,GAIrC,IAHA,IAEEnsS,EAFEyJ,EAAI9Q,EAAEjd,OACNiwB,EAAQ,EAEL5vB,EAAI0tB,IAAK1tB,EAAG,CAEjB,GADAikB,EAAIrH,EAAE5c,IACD4vB,GAAS3L,IAAMisS,EAAS,OAAOlwT,EAAWowT,GAAWA,EAAQp+S,QAAQiS,IAAM,IAAK2L,EAAeugS,GAAYA,EAASn+S,QAAQiS,IAAM,KAAK2L,CAC9I,CACA,OAAO5vB,CACT,CACA,SAASgwT,GAAWpzS,GAKlB,IAJA,IAAI4+B,EAAS,GACX9tB,EAAI9Q,EAAEjd,OACJ6lB,EAAQ,EACVxlB,EAAI,EACCA,EAAI0tB,GACT1tB,EAAI,GAAK4c,EAAG5c,EAAG0vT,GAAOL,GAASE,GAAQD,GAASE,IAChDh0Q,EAAOn8C,KAAKud,EAAEmlB,UAAUvc,EAAOxlB,GAAG2yB,QAClCnN,IAAUxlB,EAEZ,GAAsB,IAAlBw7C,EAAO77C,OACT,KAAM,yBAA2Bid,EAEnC,OAAO4+B,CACT,CACA,SAASy0Q,GAAcrzS,GACrB,MAAgB,MAATA,EAAE,GAEX,SAAsBA,GACpB,IAEEmF,EAFE2L,EAAI9Q,EAAEjd,OACNK,EAAI,EAGR,GADAA,EAAI,GAAK4c,EAAG5c,EAAGsvT,GAAQD,GAAQC,IAC3BtvT,IAAM0tB,EACR,KAAM,2BAA6B9Q,EAGrC,GADAmF,EAAIiuS,GAAWpzS,EAAEmlB,UAAU,EAAG/hC,IACb,IAAb+hB,EAAEpiB,OACJ,KAAM,4CAA8Cid,EAGtD,GADAA,EAAIA,EAAEkJ,MAAM9lB,EAAI,GAAG2yB,OACf/V,EAAE,KAAOgzS,GACX,KAAM,wCAA4ChzS,EAEpDmF,EAAIA,EAAE+N,IAAImgS,IACV,IAAIl0F,EAASk0F,GAAcrzS,EAAEkJ,MAAM,GAAG6M,QACtC,GAAIopM,EAAOU,QACT,MAAO,CACLA,QAAS16M,EACTg6M,OAAQA,GAGVA,EAAOU,QAAU16M,EAEnB,OAAOg6M,CACT,CA7BwBs0F,CAAazzS,GA8BrC,SAAqBA,GACnB,IASE5W,EACAqJ,EAVE0sN,EAAS,CACT5rM,OAAQg/R,IAEVh/R,EAAS,GACP64D,EAAW,CAAC,EAAG,GACjB64N,EAAW,EACXr8R,EAAQ,EACRkI,EAAI9Q,EAAEjd,OACNK,EAAI,EAKN,GAAI4c,EAAE8Q,EAAI,KAAO8hS,GAAQ,CAEvB,MADAxvT,EAAI4c,EAAE61M,YAAY88F,MACT,GAQF,KAAM,0BAA4B3yS,EAPvC,IACEosE,EAkER,SAAuBpsE,GACrB,IAAIK,EAAIL,EAAEwL,MAAMsnS,IAChB,IAAK9yS,EAAEjd,QAAUsd,EAAEtd,OAAS,EAAG,MAAMid,EACrC,OAAOK,EAAE6S,KAAI,SAAU0V,GACrB,IAAIz7B,GAAKy7B,EACT,GAAIz7B,GAAMA,EAAG,MAAM6S,EACnB,OAAO7S,CACT,GACF,CA1EmBumT,CAAc1zS,EAAEmlB,UAAU/hC,EAAI,EAAG0tB,EAAI,GAClD,CAAE,MAAO1qB,KACP,KAAM,mCAAqC4Z,CAC7C,CAEA8Q,GADA9Q,EAAIA,EAAEkJ,MAAM,EAAG9lB,GAAG2yB,QACZhzB,OAERK,EAAI,CACN,CACA,IAAK0tB,EAAG,MAAM9Q,EAGVA,EAAE,KAAO+yS,KAAM9N,IAAa7hT,GAGhCgG,EAAI,GAAK4W,EAAG5c,EAAGyvT,IACXzpT,EAAI0nB,IACNyC,EAAO9wB,KAAKud,EAAEmlB,UAAUvc,EAAOxf,GAAG2sB,QAClCnN,EAAQxlB,IAAMgG,GAKhB,GADAhG,EAAI,GAAK4c,EAAG5c,EAAGqvT,IACXrvT,IAAM0tB,EACRyC,EAAO9wB,KAAKud,EAAEmlB,UAAUvc,EAAOkI,GAAGiF,aAKlC,GAHAxC,EAAO9wB,KAAKud,EAAEmlB,UAAUvc,EAAOxlB,GAAG2yB,QAClCtjB,EAAS,IACTmW,IAAUxlB,KACI0tB,EAAG,KAAM,2BAA6B9Q,EAItD,KAAO5c,EAAI0tB,GAAG,CAEZ,IADA1tB,EAAI,GAAK4c,EAAG5c,EAAGsvT,OACL5hS,EAAG,KAAM,2BAA6B9Q,EAEhD,GADAvN,EAAOhQ,KAAKud,EAAEmlB,UAAUvc,EAAOxlB,GAAG2yB,QAC9B3yB,EAAI0tB,EAAI,GAAK9Q,IAAI5c,KAAOqvT,GAAQ,KAAM,0BAA4BzyS,EACtE4I,IAAUxlB,CACZ,CAGA,KAAM0tB,EAAIyC,EAAOxwB,SAAW,GAAQyE,KAAK+rB,EAAOzC,EAAI,IAClD,KAAM,2BAA6B9Q,EAEjC8Q,EAAI,GACNquM,EAAOt0N,KAAO0oB,EAAO,GACjB0xR,EACF9lF,EAAO8lF,SAAW1xR,EAAO,GAAGrK,MAAM,IA7HxC,SAAoBre,GAClB,OAAO2nT,GAAM3nT,EACf,CA4He8oT,CAAWpgS,EAAO,IAG3B4rM,EAAO5rM,OAASA,EAAO,GAFvB4rM,EAAOijC,SAAW7uO,EAAO,IAK3B4rM,EAAOt0N,KAAO0oB,EAAO,GAEO,MAA1B4rM,EAAOt0N,KAAKqe,OAAO,KACrBi2M,EAAOK,SAAU,EACjBL,EAAOt0N,KAAOs0N,EAAOt0N,KAAKqe,MAAM,GAAI,IAExB,MAAVzW,IAAgB0sN,EAAO1sN,OAASA,GAChC25E,EAAS,KAAI+yI,EAAO/yI,SAAWA,EAAS,IACxCA,EAAS,KAAI+yI,EAAOv0C,SAAWx+F,EAAS,IAC5C,OAAO+yI,CACT,CAjH0C,CAAYn/M,EACtD,CClEA,SAAS,GAA2BsH,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,GAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,GAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,GAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAMlL,SAASw4F,GAAcr+F,GACrB,OAAOllK,GAASklK,GAAQA,EAAO,CAC7B1qN,KAAM0qN,GAAQ,MAElB,CACA,IAAI,GAAS,SAAgB3sL,GAC3B,OAAQA,GAAK,CACf,EACI,GAAgB,SAAuBA,GACzC,MAAO,CACLz3B,IAAKy3B,EACL+8C,OAAQ/8C,EACR13B,KAAM03B,EACN/zB,MAAO+zB,EAEX,EACA,SAASirR,GAAat+F,GACpB,OAAQllK,GAASklK,GAAsCA,EAAKm2F,OAASn2F,EAAO,CAC1EpkN,IAAK,GAAOokN,EAAKpkN,KACjBw0E,OAAQ,GAAO4vI,EAAK5vI,QACpBz0E,KAAM,GAAOqkN,EAAKrkN,MAClB2D,MAAO,GAAO0gN,EAAK1gN,QAJI,GAAc,GAAO0gN,GAMhD,CACA,IAAIu+F,GAAU,SAAiBlrR,GAC7B,OAAOynB,GAASznB,KAAO,GAAQA,GAAKoP,GAAO,CAAC,EAAGpP,GAAK,CAClDvkC,MAAOukC,EAEX,EACA,SAASmrR,GAAUltR,EAAQ1iC,EAAME,EAAOD,GACtC,OAAa,MAATC,GACcgsD,GAAShsD,KAAW,GAAQA,IAAU,GAAQA,IAAUA,EAAMtB,QAAUstD,GAAShsD,EAAM,IAIrGwiC,EAAOn/B,OAAOvD,GAAQE,EAEtBwiC,EAAOziC,GAAO,SAASD,GAAQ,CAC7BE,MAAOA,GAGJ,GAEA,CAEX,CACA,SAAS2vT,GAAYntR,EAAQ60O,EAAOh0Q,GAClC,IAAK,IAAIvD,KAAQu3Q,EACfq4C,GAAUltR,EAAQ1iC,EAAMu3Q,EAAMv3Q,IAEhC,IAAK,IAAI8vT,KAASvsT,EAChBqsT,GAAUltR,EAAQotR,EAAOvsT,EAAOusT,GAAQ,SAE5C,CACA,SAASC,GAAar3F,EAAQ3mH,EAAO7oC,GACnC,IAAK,IAAIlpE,KAAQ+xG,EACX7oC,GAAQ,GAAeA,EAAMlpE,KACjC04N,EAAO14N,GAAQ6zC,GAAO6kL,EAAO14N,IAAS,CAAC,EAAG+xG,EAAM/xG,KAElD,OAAO04N,CACT,CACA,SAAS74L,GAAIjB,EAAK85L,GAChB,OAAOA,IAAWA,EAAO6+C,OAAS7+C,EAAO6+C,MAAM34O,IAAQ85L,EAAOn1N,QAAUm1N,EAAOn1N,OAAOq7B,GACxF,CACA,IAAIoxR,GAAW,OACX,GAAY,QACZ,GAAY,QACZ,GAAW,OACXC,GAAiB,cACjBC,GAAe,YACfC,GAAgB,aAChBC,GAAe,YACfC,GAAgB,aAChB,GAAa,SACbC,GAAiB,cACjBC,GAAkB,eAClBC,GAAqB,kBACrBC,GAAkB,eAClBC,GAAmB,gBACnBC,GAAkB,eAClB,GAAY,QACZC,GAAgB,aAChBC,GAAoB,iBA+CxB,SAASC,GAAanF,EAAU/sR,EAAK1+B,GACnCyrT,EAAS/sR,GAAO1+B,GAASA,EAAMqnT,OAAS,CACtCA,OAAQrnT,EAAMqnT,QACZ,CACFrnT,MAAOA,EAEX,CACA,IAAIk/S,GAAW,SAAkBvoS,GAC/B,OAAO,GAASA,GAAS,GAAYA,GAASA,EAAM0wS,OAAS,IAAIj2S,OAAOuF,EAAM0wS,OAAQ,KAAO,GAAM1wS,EACrG,EACA,SAASk6S,GAAQ1K,GACf,GAAoB,MAAhBA,EAAI3jO,SACN,OA6BJ,SAAkB2jO,GAEhB,IAAI5nT,EAAO,CAAC4nT,EAAI5hS,MAAO4hS,EAAItjT,KAAMsjT,EAAIx3R,OAAOE,KAAI,SAAU0V,GACxD,OAAY,MAALA,EAAY,KAAO,GAAYA,EACxC,IAGA,KAAOhmC,EAAKG,QAAwB,MAAd43M,GAAK/3M,IAAeA,EAAKumB,MAE/C,OADAvmB,EAAKiV,QAAQ0rS,GAASiH,EAAI3jO,WACnB,YAAYpxE,OAAO7S,EAAK2oB,KAAK,KAAM,IAC5C,CAvCW,CAASi/R,GAElB,IAAInmT,EAAQmmT,EAAIkB,OAAS,IAAIj2S,OAAO+0S,EAAIkB,OAAQ,KAAOlB,EAAIv0Q,MAwB7D,SAAeu0Q,GACb,OAAOA,EAAInjS,EAAI8tS,GAAO,MAAO3K,EAAIjjS,EAAGijS,EAAInjS,EAAGmjS,EAAIhjS,GAAKgjS,EAAIjjS,GAAKijS,EAAIxqS,EAAIm1S,GAAO,MAAO3K,EAAIjjS,EAAGijS,EAAIxqS,EAAGwqS,EAAIhjS,GAAKgjS,EAAIhjS,GAAKgjS,EAAInqS,EAAI80S,GAAO,MAAO3K,EAAIhjS,EAAGgjS,EAAInqS,EAAGmqS,EAAIrlS,GAAKqlS,EAAIppS,GAAKopS,EAAI9zQ,GAAK8zQ,EAAIrlS,EAAIgwS,GAAO,MAAO3K,EAAIppS,EAAGopS,EAAI9zQ,EAAG8zQ,EAAIrlS,GAAK,IACjO,CA1BqE,CAAMqlS,EAAIv0Q,OAAsB,MAAbu0Q,EAAIzoL,MAAgB,GAAMyoL,EAAIzoL,YAAuBppG,IAAd6xR,EAAInmT,MAAsB,GAAYmmT,EAAInmT,YAASs0B,EAmBhL,OAlBiB,MAAb6xR,EAAIxvS,QACN3W,EAwEJ,SAAemmT,EAAKnmT,GAClB,IAAI2W,EAAQuoS,GAASiH,EAAIxvS,OACR,MAAbwvS,EAAI3gQ,MAENxlD,EAAQ,eAAeoR,OAAOuF,EAAO,OAAOvF,QAAQ+0S,EAAI3gQ,MAAO,WAGjDlxB,IAAVt0B,IAAqBA,EAAQ,UAAUoR,OAAOuF,EAAO,MAAMvF,OAAOpR,EAAO,MACzEmmT,EAAIn6E,OACNhsO,GAASA,EAAQA,EAAQ,IAAM,IAAM,cAAcoR,OAAOuF,EAAO,MAAsB,IAAbwvS,EAAIn6E,KAAa,GAAK,IAAMnzB,GAASstG,EAAIn6E,OAC/Gm6E,EAAIt0M,QAEN7xG,EAAQ,yBAAyBoR,OAAOuF,EAAO,2BAA2BvF,OAAOpR,EAAO,OAG/E,MAATA,IAAeA,EAAQ,MAE7B,OAAOA,CACT,CA1FY,CAAMmmT,EAAKnmT,SAEPs0B,IAAVt0B,IACFA,EAAQ,MAEU,MAAhBmmT,EAAI1sS,WACNzZ,EAAQ,OAAOoR,OAAOpR,EAAO,KAAKoR,OAAOynM,GAASstG,EAAI1sS,UAAW,MAEnD,MAAZ0sS,EAAInxC,OACNh1Q,GAAS,IAAIoR,OAAOynM,GAASstG,EAAInxC,QAEjB,MAAdmxC,EAAInlO,SACNhhF,GAAS,IAAIoR,OAAOynM,GAASstG,EAAInlO,UAE/BmlO,EAAI7lR,QACNtgC,EAAQ,SAASoR,OAAOpR,EAAO,MAE1BA,CACT,CACA,IAAI8wT,GAAS,SAAgBtqT,EAAMsC,EAAGC,EAAGua,GACvC,MAAO,IAAIlS,OAAO5K,EAAM,KAAK4K,OAAO,CAACtI,EAAGC,EAAGua,GAAGuL,IAAIgiS,IAAS3pS,KAAK,KAAM,QACxE,EAeA,SAAS2xL,GAASA,GAChB,OAAO7sJ,GAAS6sJ,GAAY,IAAMg4G,GAAQh4G,GAAY,IAAMA,CAC9D,CACA,SAAS,GAAM5oJ,GACb,OAAO8gQ,GAAa/kQ,GAASiE,GAAOA,EAAM,CACxC+lK,MAAO/lK,GAEX,CACA,SAAS8gQ,GAAa9gQ,GACpB,IAAIztB,EAAQP,EAAOy7F,EACnB,GAAIztE,EAAIo3P,OACN7kR,EAAS,QACTk7F,EAAQztE,EAAIo3P,YACP,GAAIp3P,EAAI1gD,OAAS0gD,EAAIxgD,OAAQ,CAGlC,IAFAwyB,EAAQnqB,KAAKE,IAAI,EAAGi4C,EAAIhuB,OAAS,GACjCO,EAAS,OACFP,KAAU,GACfO,GAAU,cAERytB,EAAIxgD,QACNiuH,EAAQztE,EAAIxgD,OACZ+yB,GAAU,UAEVk7F,EAAQztE,EAAI1gD,KAEhB,MAAW0gD,EAAI+lK,OACbxzL,EAAS,QACTk7F,EAAQztE,EAAI+lK,OAEZ,GAAM,4BAA8B,GAAY/lK,IAKlD,OAHKA,EAAIo3P,SACP3pL,EAAQ,GAASA,GAAS+3E,GAAgB/3E,GAAO7uG,IAAI,IAAa3H,KAAK,MAAQ6pS,GAAarzL,IAEvFl7F,EAAS,IAAMk7F,EAAQ,GAChC,CAiCA,SAASszL,GAAYx4F,EAAQhyN,EAAM03D,EAAMv0D,EAAO00S,EAAOl/R,GACrD,IAAIgnS,EAAM,CAAC,EAMX,IAAK,IAAIznR,KALTvf,EAASA,GAAU,CAAC,GACbg4P,SAAW,CAChB+uC,QAASC,GAEX3tF,EA5KF,SAAuBA,EAAQhyN,EAAM03D,EAAMv0D,EAAO0gG,GAChD,IAEIhnG,EAAQq7B,EAAWxpB,EAFnBu2S,EAAW,CAAC,EACdp0C,EAAQ,CAAC,EAgBX,IAAK34O,KAZLA,EAAM,YACO,SAATl4B,GAAkC,MAAf6jG,EAAO3rE,IAAiBiB,GAAIjB,EAAK85L,IACtDo4F,GAAanF,EAAU/sR,EAAK2rE,EAAO3rE,KAIzB,UAARw/B,GAAoB16C,OAAO06C,GAAMkhB,WAAW,WAC9ClhB,EAAO,MAIThpD,EAAQgpD,IAAS,GAAYmsC,EAAO96F,MAAQ2uD,IAAS4xP,GAAWn8Q,GAAO,CAAC,EAAG02D,EAAO/1C,KAAM+1C,EAAO7jG,IAAS,KAG/Fm5B,GAAIjB,EAAK85L,KAAoB,SAAR95L,GAA0B,WAARA,KAAsBiB,GAAI,OAAQ64L,IAAW74L,GAAI,SAAU64L,KAC9Fo4F,GAAanF,EAAU/sR,EAAKxpB,EAAMwpB,IAa/C,IAAKA,KATL,GAAM/0B,GAAO1D,SAAQ,SAAUnG,GAC7B,IAAIoV,EAAQm1F,EAAO1gG,OAAS0gG,EAAO1gG,MAAM7J,GACzC,IAAK,IAAIunD,KAAQnyC,EACVyqB,GAAI0nB,EAAMmxK,IACbo4F,GAAanF,EAAUpkQ,EAAMnyC,EAAMmyC,GAGzC,IACAmxK,EAAS7kL,GAAO,CAAC,EAAG6kL,GACRizF,GACVv2S,EAAQu2S,EAAS/sR,IACP2oR,QACPhkT,EAASA,GAAU,CAAC,GAAGq7B,GAAOxpB,EAE/BmiQ,EAAM34O,GAAOxpB,EAKjB,OAFAsjN,EAAO6+C,MAAQ1jO,GAAO0jO,EAAO7+C,EAAO6+C,OAChCh0Q,IAAQm1N,EAAOn1N,OAASswC,GAAOtwC,EAAQm1N,EAAOn1N,SAC3Cm1N,CACT,CA+HWy4F,CAAcz4F,EAAQhyN,EAAM03D,EAAMv0D,EAAO00S,EAAMh0M,QACxCmuH,EACd2tF,EAAIznR,GAAOwyR,GAAW14F,EAAO95L,GAAMl4B,EAAM2Y,EAAQk/R,GAEnD,OAAOl/R,CACT,CACA,SAAS+xS,GAAWj3O,EAAO8jL,EAAU5+O,EAAQk/R,GAC3C,IAiBY8H,EAjBRjzQ,EAAW,CAAC,EACduqF,EAAS,CAAC,EACZ,IAAK,IAAI39H,KAAQm6E,EACI,MAAfA,EAAMn6E,KAERozC,EAASpzC,GAAQqxT,IAYThL,EAZsBlsO,EAAMn6E,GAajC,GAAQqmT,GA5CjB,SAAcA,GACZ,IAAIn9M,EAAO,GAUX,OATAm9M,EAAIlgT,SAAQ,SAAU+4H,GACpB,IAAIh/H,EAAQ6wT,GAAQ7xL,GACpBh2B,GAAQg2B,EAAK77H,KAAO,IAAIiO,OAAO4tH,EAAK77H,KAAM,MAAMiO,OAAOpR,EAAO,KAAOA,CACvE,IAGmB,MAAfs2M,GAAKttG,KACPA,GAAQ,QAEHA,CACT,CAgCwB,CAAKm9M,GAAO0K,GAAQ1K,IAbM9H,EAAOl/R,EAAQs+G,IAG/D,MAAO,CACL0mL,MAAO,CACLpmD,SAAUA,EACV7qN,SAAUA,GAEZkxQ,QAAS/uS,OAAOopB,KAAKg/F,GACrB4oL,QAAShxS,OAAOopB,KAAKw7C,GAEzB,CAIA,SAASk3O,GAAQnoN,EAAMq1M,EAAOl/R,EAAQs+G,GACpC,IAAI8vG,EAAO,GAAgBvkI,EAAMq1M,GAKjC,OAJA9wE,EAAK62E,QAAQn+S,SAAQ,SAAUnG,GAC7B,OAAO29H,EAAO39H,GAAQ,CACxB,IACA6zC,GAAOx0B,EAAQouN,EAAK82E,SACb92E,EAAK42E,KACd,CACA,IAAIiN,GAAQ,QACVC,GAAgB,CAAC,QAAS,SAAU,OAAQ,QAAS,QACvD,SAASC,GAAW/tR,EAAQzjC,GAC1B,GAAMyjC,EAAS,sBAAwB,GAAYzjC,GACrD,CACA,SAASyxT,GAAYlK,EAAQhJ,GAC3B,IAAIv+S,EAAOunT,EAAOvnT,KAClB,GAAIunT,EAAOjpT,OAASgzT,GAEb/S,EAAMloG,QAAQr2M,IAAOwxT,GAAW,6BAA8BxxT,GAEnEuxT,GAAcprT,SAAQ,SAAUlD,QACTuxB,IAAjB+yR,EAAOtkT,IAAqBuuT,GAAW,oBAAqBvuT,EAClE,QACK,CAEL,IAAI+nD,EAAKuzP,EAAMmT,UAAU1xT,EAAMunT,EAAOrnT,QACjB,IAAjBqnT,EAAO/tF,QAAiBxuK,EAAGwuK,OAAQ,GACnC+tF,EAAOpmT,MAAMo9S,EAAMoT,WAAW3xT,EAAMunT,EAAOpmT,KACjD,CACF,CACA,SAASywT,GAAMlrT,EAAMxG,EAAOmf,EAAQ1P,GAClC5R,KAAK0T,IAAM,EACX1T,KAAK2I,KAAOA,EACZ3I,KAAKmC,MAAQA,EACbnC,KAAKshB,OAASA,EACV1P,IAAQ5R,KAAK4R,OAASA,EAC5B,CACA,SAAS8jD,GAAM/sD,EAAMxG,EAAOmf,EAAQ1P,GAClC,OAAO,IAAIiiT,GAAMlrT,EAAMxG,EAAOmf,EAAQ1P,EACxC,CACA,SAASynS,GAASl3S,EAAOmf,GACvB,OAAOo0C,GAAM,WAAYvzD,EAAOmf,EAClC,CAIA,SAAS8wC,GAAInF,GACX,IAAImF,EAAM,CACR01P,KAAM76P,EAAGv5C,IAIX,OADIu5C,EAAGv5C,GAAK,IAAIu5C,EAAG6mQ,KAAO7mQ,EAAG6mQ,MAAQ,IAAIvzT,KAAK6xD,GACvCA,CACT,CACA,SAAS2hQ,GAAWl0L,EAAO59H,GACzB,OAAOA,EAAO,CACZkmT,OAAQtoL,EACRuoL,MAAOnmT,GACL,CACFkmT,OAAQtoL,EAEZ,CACA,IAAIm0L,GAAcD,GAAW,OAC7B,SAASE,GAAYr0L,EAAQy6E,GAC3B,MAAO,CACLouG,SAAU7oL,EACV8oL,OAAQruG,EAEZ,CAWA,IACI65G,GAAa,aAIjB,SAASC,GAAUlnQ,EAAI4yE,GACrB,OAAQ5yE,GAAMA,EAAGu8P,OAAS,IAAMv8P,EAAGu8P,OAASv8P,GAAM,KAAOA,GAAM4yE,EAAQ,IAAM,KAAOA,GAASA,EAAM2pL,OAAS,IAAM3pL,EAAM2pL,OAAS3pL,GAAS,GAC5I,CAIA,IAAIu0L,GAAU,QACV,GAAO,OACX,SAASC,GAAS3tR,GAChB,OAAOA,GAAKA,EAAE8iR,MAChB,CAIA,SAAS8K,GAAU5tR,GACjB,GAAI2tR,GAAS3tR,GAAI,OAAO,EACxB,GAAIynB,GAASznB,GAAI,IAAK,IAAI7F,KAAO6F,EAC/B,GAAI4tR,GAAU5tR,EAAE7F,IAAO,OAAO,EAEhC,OAAO,CACT,CACA,SAAS,GAAM0zR,EAAWvvR,GACxB,OAAoB,MAAbuvR,EAAoBA,EAAYvvR,CACzC,CACA,SAASwvR,GAAMviT,GACb,OAAOA,GAAKA,EAAEu3S,QAAUv3S,CAC1B,CACA,IAAI,GAAQ,QACZ,SAAS,GAAYgrN,EAAQujF,GAE3B,OADavjF,EAAO/gB,MAAQu4G,GAAcx3F,EAAOA,OAASy3F,GAAez3F,EAAOt0N,KAAOgsT,GAAc,GAAM,iCAAmC,GAAY13F,KAC5IA,EAAQujF,EACxB,CAIA,SAASiU,GAAYx3F,EAAQujF,GAC3B,IAAI9+L,EAAOu7G,EAAO/gB,MAAMlrL,KAAI,SAAUlT,GAClC,OAAO,GAAYA,EAAG0iS,EACxB,IACA9qP,EAAQk/P,GAAiB,CACvB14G,MAAOx6F,GACNu7G,EAAQujF,GACb,OAAOA,EAAMqU,UAAUn/P,GAAOhiD,EAChC,CACA,SAASghT,GAAaz3F,EAAQujF,GAC5B,IACE9qP,EAAQk/P,GAAiB,CACvB33F,OAFK,GAAYA,EAAOA,OAAQujF,IAG/BvjF,EAAQujF,GACb,OAAOA,EAAMqU,UAAUn/P,GAAOhiD,EAChC,CACA,SAASihT,GAAY13F,EAAQujF,GAC3B,IAAI9sS,EACAupN,EAAOt0N,OAAS,IAClB+K,EAAK8sS,EAAMz1S,MAAM,GAAOkyN,EAAO/yI,UAC/B+yI,EAAS,CACPU,QAASV,EAAOU,QAChBptN,OAAQ0sN,EAAO1sN,SAGjBmD,EAAK8sS,EAAMz1S,MA5Bf,SAAqBsmB,GACnB,OAAOA,IAAW+iS,GAAU,GAAO/iS,GAAU,EAC/C,CA0BqByjS,CAAY73F,EAAO5rM,QAAS4rM,EAAOt0N,MAEtD,IAAI+sD,EAAQk/P,GAAiB,CAC3B33F,OAAQvpN,GACPupN,EAAQujF,GACX,OAAqC,IAA9BhpS,OAAOopB,KAAK80B,GAAO70D,OAAe6S,EAAK8sS,EAAMqU,UAAUn/P,GAAOhiD,EACvE,CACA,SAASkhT,GAAiBl/P,EAAOunK,EAAQujF,GACvC,IAAI7iK,EAAQs/E,EAAOU,QA4BnB,OA3BIhgF,IACmB,IAAjBA,EAAM98I,QACR,GAAM,mDAAqD,GAAYo8N,IAEzEvnK,EAAMioK,QAAU,CAAC,GAAYhgF,EAAM,GAAI6iK,GAAQ,GAAY7iK,EAAM,GAAI6iK,KAEvE7iK,EAAQs/E,EAAO1sN,OAAS,GAAGgD,OAAO0pN,EAAO1sN,QAAU,IAC/C0sN,EAAOijC,UAAYjjC,EAAO8lF,UAAY9lF,EAAO83F,WAE/Cp3K,EAAMp9I,KAoBV,SAAoBoI,EAAM1G,EAAMo+D,GAC9B,IAAI5oD,EAAO,aACX,OAAOA,GAAQ9O,GAAiB,MAATA,EAAe,KAAO8O,EAAO,qBAAwB9O,EAAO,IAAO,KAAO03D,EAAO,KAAO5oD,EAAO,iBAAoB4oD,EAAO,IAAO,KAAOp+D,EAAO,KAAOwV,EAAO,iBAAoBxV,EAAO,IAAO,GACxN,CAvBe+yT,CAAW/3F,EAAOijC,SAAUjjC,EAAO8lF,SAAU9lF,EAAO83F,WAE7D93F,EAAO5rM,SAAW+iS,IAEpBz2K,EAAMp9I,KAAK,uBAETo9I,EAAM98I,SACR60D,EAAMnlD,OAAS,GAAgB,IAAMotI,EAAMt0H,KAAK,QAAU,IAAKm3R,GAAO8F,OAEvC,OAA5B3oK,EAAQs/E,EAAO/yI,YAClBx0B,EAAMw0B,UAAYyzD,GAEa,OAA5BA,EAAQs/E,EAAOv0C,YAClBhzH,EAAMgzH,UAAY/qC,GAEhBs/E,EAAOK,UACT5nK,EAAM4nK,SAAU,GAEX5nK,CACT,CAOA,IAAIu/P,GAAgB,CAClB9pN,KAAM,WACN0yM,IAAK,CACHl1S,KAAM,aACNxG,MAAO,UAGX,SAAS,GAAYkxN,EAAMmtF,EAAO93S,GAChC,IAAIiyN,EAAStH,EAAKsH,OAChBjlK,EAAQ,CACNhtD,OAAQA,GAER5H,EAASuyN,EAAKvyN,OAChB0E,EAAS6tN,EAAK7tN,OACd28N,EAAU,GACPrhO,GACH,GAAM,+CAIJ,GAASA,KACXA,EAAS,GAAcA,EAAQ0/S,EAAM0U,aAAed,GAAU,KAIhEtzT,EAAS,GAAMA,GAAQyP,QAAO,SAAUuN,GACtC,OAAOA,EAAE0rS,QAAU1rS,EAAEhF,OAASqpN,EAAQ5hO,KAAKud,GAAI,GAAK,CACtD,IAGIqkN,EAAQthO,OAAS,IACnBshO,EAAU,CAACgzF,GAAahzF,KAItBrhO,EAAOD,QACTshO,EAAQ5hO,KAAKO,EAAOD,OAAS,EAAI,CAC/Bq7M,MAAOp7M,GACLA,EAAO,IAEC,MAAV65N,IACEn1N,GAAQ,GAAM,oDAClBA,EAAS,iBAAmB,GAAYm1N,GAAU,KAIpDjlK,EAAMlwD,OAAS,GAASA,GAAU,GAAgBA,EAAQg7S,GAAwB,MAAfh7S,EAAOkqO,KAAe,GAAgBlqO,EAAOkqO,KAAM8wE,GAAyB,MAAhBh7S,EAAOrD,MAAgBqD,EAAOrD,MAAyB,MAAjBqD,EAAOgkT,OAAiB,CAC3LlD,MAAO2O,GACPzO,QAAS,CACPx1B,OAAQwvB,EAAM6F,UAAU7gT,EAAOgkT,UAE/B,GAAM,wCACNn2F,EAAK8H,QACPzlK,EAAMvwB,QAAU,CACdg2L,OAAO,IAGXgH,EAAQ/5N,SAAQ,SAAUipB,GACxB,OAAOmvR,EAAM4U,UAAUt/Q,GAG3B,SAAsBmnL,EAAQujF,GAC5B,MAAO,CACLnvR,OAAQ4rM,EAAOusF,OAAShJ,EAAM6F,UAAUppF,EAAOusF,QAAUvsF,EAAOnkN,MAAQ0nS,EAAMa,SAASpkF,EAAOnkN,OAAS,GAAYmkN,EAAQujF,GAE/H,CAPkC6U,CAAahkS,EAAQmvR,GAAQ9qP,GAC7D,GACF,CAMA,SAASy/P,GAAahzF,GACpB,MAAO,CACLqnF,OAAQ,IAAMrnF,EAAQnxM,KAAI,SAAUlT,GAClC,OAAOA,EAAEhF,MAAQ,UAAYgF,EAAEhF,MAAQ,KAAOgF,EAAE0rS,MAClD,IAAK,IAET,CAuBA,IAAI,GAAY,SAAmBvnT,GACjC,OAAO,SAAUqf,EAAQnf,EAAOyP,GAC9B,OAAO8jD,GAAMzzD,EAAME,EAAOmf,QAAUmV,EAAW7kB,EACjD,CACF,EACI,GAAY,GAAU,aACtB,GAAY,GAAU,aACtB,GAAQ,GAAU,SAClB,GAAU,GAAU,WACpB,GAAU,GAAU,WACpB,GAAW,GAAU,YACrB,GAAS,GAAU,UACnB,GAAa,GAAU,cACvB,GAAQ,GAAU,SAClB,GAAQ,GAAU,SAClB,GAAM,GAAU,OAChB,GAAgB,GAAU,iBAC1B,GAAO,GAAU,QACjB,GAAO,GAAU,QACjB,GAAc,GAAU,eACxB,GAAc,GAAU,eACxB,GAAU,GAAU,WACpB,GAAS,GAAU,UACnB,GAAW,GAAU,YACrB,GAAa,GAAU,cACvB,GAAQ,GAAU,SAClB,GAAQ,GAAU,SAClB,GAAS,GAAU,UACnB,GAAQ,GAAU,SAClB,GAAQ,GAAU,SAClB,GAAY,GAAU,aACtB,GAAa,GAAU,cACvB,GAAS,GAAU,UACnB0jT,GAAe,EACfC,GAAuB,CACzBr7S,IAAK,MACLC,IAAK,MACL2W,MAAO,OAYT,SAAS0kS,GAAWniG,EAAMmtF,GACxB,IACI3/Q,EADAvf,EAASk/R,EAAMc,SAASjuF,EAAKpxN,MAAMqf,OAevC,IAAKuf,KAbLvf,EAAOi5B,OAASk7Q,GAAiBpiG,EAAK94K,OAAQ84K,EAAMmtF,GAClC,MAAdntF,EAAK1rK,QACPrmC,EAAOqmC,MAAQ+tQ,GAAgBriG,EAAMmtF,EAAOl/R,IAEtB,MAApB+xM,EAAKwsB,aA+KX,SAA+BA,EAAav+N,GAC1CA,EAAOu+N,YAAc81E,GAAa91E,EAAYl3O,MAAQk3O,GAC7B,MAArBA,EAAYvpM,QACdh1B,EAAOq6P,iBAAmBg6C,GAAa91E,EAAYvpM,OAEvD,CAnLIs/Q,CAAsBviG,EAAKwsB,YAAav+N,GAEzB,MAAb+xM,EAAKkR,OACPjjN,EAAOijN,KAkKX,SAAwBA,GACtB,OAAOp2K,GAASo2K,GAAQ,CACtB/hO,SAAUmzT,GAAapxF,EAAK/hO,UAC5BilD,KAAMkuQ,GAAapxF,EAAK98K,OACtBkuQ,GAAapxF,EACnB,CAvKkBsxF,CAAexiG,EAAKkR,OAEnB,MAAblR,EAAK+a,OACP9sN,EAAO8sN,KAyJX,SAAwBn8N,EAAGuuS,GACzB,OAAOvuS,EAAEu3S,QAAU,GAAQv3S,GAAK6jT,GAAW7jT,EAAGuuS,GAASA,EAAMuV,eAAe9jT,EAC9E,CA3JkB+jT,CAAe3iG,EAAK+a,KAAMoyE,IAE9BntF,EACN,GAAe/xM,EAAQuf,IAAgB,SAARA,IACnCvf,EAAOuf,GAAO80R,GAAatiG,EAAKxyL,GAAM2/Q,GAE1C,CACA,SAASmV,GAAa1jT,EAAGuuS,GACvB,OAAQryP,GAASl8C,GAASA,EAAEu3S,OAAShJ,EAAM6F,UAAUp0S,EAAEu3S,QAAU,GAAM,uBAAyB,GAAYv3S,IAAtFA,CACxB,CACA,SAAS6jT,GAAW7jT,EAAGuuS,GACrB,OAAOvuS,EAAEu3S,OAAShJ,EAAM6F,UAAUp0S,EAAEu3S,QAAUv3S,EAAE+e,KAAI,SAAU/e,GAC5D,OAAO0jT,GAAa1jT,EAAGuuS,EACzB,GACF,CACA,SAASyV,GAAgBh0T,GACvB,GAAM,0BAA4B,GAAYA,GAChD,CAIA,SAASwzT,GAAiBl7Q,EAAQ84K,EAAMmtF,GACtC,GAAKjmQ,EAOL,OAAOA,EAAOivQ,OAAShJ,EAAM6F,UAAU9rQ,EAAOivQ,SAAW,GAAQjvQ,GAAU27Q,GAAiB37Q,EAAOqlF,OAASu2L,GAAiBC,IAAgB77Q,EAAQ84K,EAAMmtF,GANnI,MAAlBntF,EAAK8oD,WAAuC,MAAlB9oD,EAAK+oD,WACjC,GAAM,+DAMZ,CACA,SAAS85C,GAAe37Q,EAAQ84K,EAAMmtF,GACpC,OAAOjmQ,EAAOvpB,KAAI,SAAU/e,GAC1B,OAAO0jT,GAAa1jT,EAAGuuS,EACzB,GACF,CACA,SAAS4V,GAAe77Q,EAAQ84K,EAAMmtF,GACpC,IAAI96R,EAAO86R,EAAMvgJ,QAAQ1lH,EAAO70B,MAEhC,OADKA,GAAMuwS,GAAgB17Q,EAAO70B,MAC3BilO,GAAWt3B,EAAK1qN,MAAQ+c,EAAK2wS,UAAU7V,EAAOjmQ,EAAOslF,MAAOy2L,GAAU/7Q,EAAOhoC,MAAM,IAAUw4O,GAAW13B,EAAK1qN,MAAQ+c,EAAK6wS,UAAU/V,EAAOjmQ,EAAOslF,OAASn6G,EAAK8wS,UAAUhW,EAAOjmQ,EAAOslF,MACjM,CACA,SAASs2L,GAAe57Q,EAAQ84K,EAAMmtF,GACpC,IAAI96R,EAAO60B,EAAO70B,KAChBk6G,EAASrlF,EAAOqlF,OAAOjuG,QAAO,SAAU0pF,EAAKt1F,GAM3C,OALAA,EAAI,GAASA,GAAK,CAChBL,KAAMA,EACNm6G,MAAO95G,GACL,GAAQA,IAAMA,EAAEyjS,OAM1B,SAAkB9jS,EAAM86R,GACtB,IAAIv+S,EAAO,WAAaqzT,KACtBmB,EAAO,GAAQ,CAAC,GAClB,GAAI,GAAQ/wS,GACV+wS,EAAKt0T,MAAQ,CACXinT,QAAS1jS,QAEN,GAAIA,EAAK8jS,OAAQ,CACtB,IAAIr+M,EAAO,WAAa,GAAYlpG,GAAQ,IAAMyjB,EAAK8jS,OAAS,IAChEiN,EAAKn1S,OAAO+nG,MAAQm3L,EAAM6F,UAAUl7M,EACtC,CAEA,OADAq1M,EAAMkW,gBAAgBz0T,EAAM,CAACw0T,EAAM,GAAM,CAAC,KACnC,CACL/wS,KAAMzjB,EACN49H,MAAO,OAEX,CAtBmC82L,CAAS5wS,EAAGy6R,GAASz6R,EAClDs1F,EAAI96G,KAAKwlB,GACFs1F,CACT,GAAG,IACL,OAAQsvI,GAAWt3B,EAAK1qN,MAAQiuT,GAAwB7rE,GAAW13B,EAAK1qN,MAAQkuT,GAAyBC,IAAuBv8Q,EAAQimQ,EAAO5gL,EACjJ,CAkBA,SAASg3L,GAAsBr8Q,EAAQimQ,EAAO5gL,GAC5C,IACIzhH,EAAGlM,EADHM,EAAO+jT,GAAU/7Q,EAAOhoC,MAAM,GAI9Bg7N,EAAS3tG,EAAO5uG,KAAI,SAAU3tB,GAChC,IAAIqiB,EAAO86R,EAAMvgJ,QAAQ58J,EAAEqiB,MAE3B,OADKA,GAAMuwS,GAAgB5yT,EAAEqiB,MACtBA,EAAKqxS,UAAUvW,EAAOn9S,EAAEw8H,MAAOttH,EACxC,IAGI6L,EAAI,CACN0uN,QAASknF,GACTn5F,MAAO0S,GAELh7N,IACF4L,EAAI5L,EAAK06C,IAAM,QACfh7C,EAAIM,EAAKstH,MAAQs0L,GAAUh2S,EAAG5L,EAAKstH,OAAS,QAC5CzhH,EAAE2uC,IAAM,CAACwoQ,GAAqBp3S,IAC9BC,EAAEwhH,OAAS,CAAC4gL,EAAMmW,SAAS1kT,IAC3BmM,EAAE2qN,GAAK,CAAC92N,IAEVkM,EAAIqiS,EAAMhvS,IAAI,GAAU4M,IAGxB,IAAI+G,EAAIq7R,EAAMhvS,IAAI,GAAQ,CACxBqpN,MAAOzoK,GAAIj0C,MASb,OALAlM,EAAIuuS,EAAMhvS,IAAI,GAAO,CACnBquH,MAAOm0L,GACPzhT,KAAMiuS,EAAMwW,QAAQzkT,GACpBsoN,MAAOzoK,GAAIjtC,MAENitC,GAAIngD,EACb,CACA,SAASqkT,GAAU/jT,EAAM0kT,GAcvB,OAbI1kT,IACGA,EAAKstH,OAAUttH,EAAK06C,GAIb16C,EAAKstH,OAAqB,UAAZttH,EAAK06C,GAEpBgqQ,GAAe1kT,EAAKstH,OACzBttH,EAAK06C,KAAOsoQ,GAAqBhjT,EAAK06C,KACxC,GAAM,kDAAoD16C,EAAK06C,IAHjE,GAAM,4CAA8C16C,EAAK06C,IAJrDkB,GAAS57C,GAAOA,EAAKstH,MAAQ,MAAWttH,EAAO,CACjDstH,MAAO,QAUNttH,CACT,CACA,SAASskT,GAAuBt8Q,EAAQimQ,EAAO5gL,GAE7C,IAAIp/F,EAASo/F,EAAO5uG,KAAI,SAAU3tB,GAChC,IAAIqiB,EAAO86R,EAAMvgJ,QAAQ58J,EAAEqiB,MAE3B,OADKA,GAAMuwS,GAAgB5yT,EAAEqiB,MACtBA,EAAK6wS,UAAU/V,EAAOn9S,EAAEw8H,MACjC,IAGA,OAAOztE,GAAIouP,EAAMhvS,IAAI,GAAY,CAC/BgvB,OAAQA,KAEZ,CACA,SAASs2R,GAAsBv8Q,EAAQimQ,EAAO5gL,GAE5C,IAAIqyG,EAAUryG,EAAO5uG,KAAI,SAAU3tB,GACjC,IAAIqiB,EAAO86R,EAAMvgJ,QAAQ58J,EAAEqiB,MAE3B,OADKA,GAAMuwS,GAAgB5yT,EAAEqiB,MACtBA,EAAK8wS,UAAUhW,EAAOn9S,EAAEw8H,MACjC,IAGA,OAAOztE,GAAIouP,EAAMhvS,IAAI,GAAY,CAC/BygO,QAASA,KAEb,CA4BA,SAASyjF,GAAgBriG,EAAMmtF,EAAOl/R,GACpC,IAAIkrF,EAASg0M,EAAMh0M,OAAO7kD,MACtBA,EAAQ0rK,EAAK1rK,MACjB,GAAIA,EAAM6hQ,OACR,OAAOhJ,EAAM6F,UAAU1+P,EAAM6hQ,QACxB,GAAI,GAAS7hQ,GAAQ,CAC1B,GAAI6kD,GAAU,GAAeA,EAAQ7kD,GAInC,OAAO+tQ,GAHPriG,EAAOv9K,GAAO,CAAC,EAAGu9K,EAAM,CACtB1rK,MAAO6kD,EAAO7kD,KAEa64P,EAAOl/R,GACjB,UAAVqmC,EACTA,EAAQ,CAAC,EAAG,CACV6hQ,OAAQ,UAES,WAAV7hQ,EACTA,EAAQgjM,GAAWt3B,EAAK1qN,MAAQ,CAAC,EAAG,CAClC6gT,OAAQ,WACL,CAAC,CACJA,OAAQ,UACP,GAEH,GAAM,mCAAqC,GAAY7hQ,GAE3D,KAAO,IAAIA,EAAMqkM,OAIf,OAHA1qO,EAAO0qO,OAAS,GAAQrkM,EAAMqkM,QAAU8pE,GAAWnuQ,EAAMqkM,OAAQw0D,GAASmV,GAAahuQ,EAAMqkM,OAAQw0D,GACjG74P,EAAM0kK,SAAQ/qM,EAAOo6P,aAAeo6C,GAAWnuQ,EAAM0kK,OAAQm0F,SAC7D74P,EAAM72B,QAAOxP,EAAOs6P,YAAc+5C,GAAahuQ,EAAM72B,MAAO0vR,KAE3D,GAAI74P,EAAMF,KAEf,YADAnmC,EAAOi6P,UAAYo6C,GAAahuQ,EAAMF,KAAM+4P,IAEvC,GAAI71D,GAAWt3B,EAAK1qN,QAAU,GAAQg/C,GAC3C,OAAO8tQ,GAAiB9tQ,EAAO0rK,EAAMmtF,GAC3B,GAAQ74P,IAClB,GAAM,2BAA6B,GAAYA,GACjD,CACA,OAAOA,EAAM32B,KAAI,SAAU/e,GACzB,OAAQ,GAAQA,GAAK6jT,GAAaH,IAAc1jT,EAAGuuS,EACrD,GACF,CAiBA,SAAS0W,GAAiBxwR,EAAGzkC,EAAMu+S,GACjC,OAAO,GAAQ95Q,GAAKA,EAAE1V,KAAI,SAAU0V,GAClC,OAAOwwR,GAAiBxwR,EAAGzkC,EAAMu+S,EACnC,IAAMryP,GAASznB,GAASA,EAAE8iR,OAAShJ,EAAM6F,UAAU3/Q,EAAE8iR,QAAmB,QAATvnT,EAAiBykC,EAAI,GAAM,iCAAmC,GAAYA,IAArHA,CACtB,CACA,IAAI,GAAM,MACN,GAAO,OACP,GAAQ,QACR,GAAS,SACT,GAAS,SACTywR,GAAW,WACX,GAAQ,QAER,GAAM,MACNC,GAAQ,QACR,GAAQ,QACRC,GAAS,SACTC,GAAO,OACPC,GAAQ,QACRC,GAAQ,QACRC,GAAkB,cAClBC,GAAkB,cAClBC,GAAkB,cAClBC,GAAqB,iBACrB,GAAU,SACV,GAAW,WACX,GAAW,WACXC,GAAO,OAUPC,GAAe,CAACD,GATR,QACD,OACE,SACK,cACD,aACH,WAKV,GAAO,CACT51T,KAAM,EACN6J,MAAO,EACPm0P,YAAa,GAEX,GAAO,CACT99P,MAAO,GAEL,GAAM,CACRA,MAAO,GAEL41T,GAAY,QACZC,GAAW,OACXC,GAAW,OACXC,GAAa,SACbC,GAAW,OACf,SAASC,GAAW3hQ,GAGlB,OAFAA,EAAK9tD,KAAOovT,GACZthQ,EAAKwpM,YAAcxpM,EAAKwpM,cAAe,EAChCxpM,CACT,CACA,SAAS,GAAO48J,EAAM7mH,GACpB,IAAI9lE,EAAI,SAAWzkC,EAAMwvP,GACvB,OAAO,GAAMp+B,EAAKpxN,GAAO,GAAMuqG,EAAOvqG,GAAOwvP,GAC/C,EAaA,OAZA/qN,EAAE2xR,WAAa,SAAUv6S,GACvB,OAAOq5S,KAAa,GAAM9jG,EAAKv4L,UAAW0xE,EAAO1xE,YAAchd,EAAI0uF,EAAO8rN,gBAAkB9rN,EAAO+rN,mBACrG,EACA7xR,EAAE8xR,eAAiB,WACjB,OAAO,GAAMnlG,EAAKmlG,eAAgBhsN,EAAOgsN,gBAAkBhsN,EAAOisN,cACpE,EACA/xR,EAAEgyR,kBAAoB,WACpB,OAAO,GAAMrlG,EAAKqlG,kBAAmBlsN,EAAOksN,mBAAqBlsN,EAAOmsN,eAC1E,EACAjyR,EAAEkyR,aAAe,WACf,OAAO,GAAMvlG,EAAKhW,QAAS,GAAM7wG,EAAO6wG,SAAU32K,EAAE2xR,YAAW,IACjE,EACO3xR,CACT,CACA,SAASmyR,GAAY52T,EAAM04N,GACzB,IAAI1oN,EAAI0oN,IAAWA,EAAOn1N,QAAUm1N,EAAOn1N,OAAOvD,IAAS04N,EAAO6+C,OAAS7+C,EAAO6+C,MAAMv3Q,IACxF,OAAOgQ,GAAKA,EAAEu3S,OAASv3S,EAAIA,EAAIA,EAAE9P,MAAQ,IAC3C,CAKA,SAAS22T,GAAWh7S,EAAG5Z,EAAG6R,GACxB,MAAO,oBAAoBxC,OAAO,GAAO,QAAQA,OAAOuK,EAAG,wBAAwBvK,OAAO,GAAK,QAAQA,OAAOrP,EAAG,OAAOqP,OAAOwC,EACjI,CACA,IAAIgjT,GAAcD,GAAW,GAAY,IAAO,GAAY,IAAQ,GAAY,KAsChF,SAASE,GAAa72T,EAAOghF,GAC3B,OAAQA,EAAkBhhF,EAAkBgsD,GAAShsD,GAGjDqV,OAAO89B,OAAO,CAAC,EAAGnzC,EAAO,CAC3BghF,OAAQ61O,GAAa72T,EAAMghF,OAAQA,KAJyB,CAC5DhhF,MAAOA,EACPghF,OAAQA,GAFwBA,EAAjBhhF,CAMnB,CACA,SAAS82T,GAAUxiQ,EAAMyiQ,GASvB,OARIA,GACFziQ,EAAKx0D,KAAOi3T,EAAOj3T,KACnBw0D,EAAK3qD,MAAQotT,EAAOptT,OAAS2qD,EAAK3qD,MAClC2qD,EAAKwpM,cAAgBi5D,EAAOj5D,YAC5BxpM,EAAKkkK,OAASq3F,GAAav7P,EAAKkkK,OAAQu+F,EAAQ,KAEhDziQ,EAAKwpM,aAAc,EAEdxpM,CACT,CACA,SAAS0iQ,GAAe9lG,EAAMv6M,EAAO0zF,EAAQ4sN,GAC3C,IAII5/C,EAAO9yP,EAAO1hB,EAAM+I,EAAOC,EAJ3B04B,EAAI,GAAO2sL,EAAM7mH,GACnBirF,EAAW/wJ,EAAE2xR,aACbgB,EAAY3yR,EAAEgyR,oBACd73T,EAAS6lC,EAAE8xR,iBAET/gI,GACF/wK,EAAQ,CAAC,EAAG,GACZ1hB,EAAO,CAAC,EAAG,GACX+I,EAAQsrT,EACRrrT,EAASnN,IAET6lB,EAAQ,CAAC,EAAG,GACZ1hB,EAAO,CAAC,EAAG,GACX+I,EAAQlN,EACRmN,EAASqrT,GAEX,IAAI1+F,EAAS,CACX6+C,MAAOA,EAAQ,CACb7kQ,QAAS,GACT1J,EAAG,GACHC,EAAG,GACH6C,MAAO6jT,GAAQ7jT,GACfC,OAAQ4jT,GAAQ5jT,IAElBxI,OAAQswC,GAAO,CAAC,EAAG0jO,EAAO,CACxB7kQ,QAAS,GACTinC,KAAM,CACJ+oC,SAAU7rE,EACV4N,MAAOA,EACP1hB,KAAMA,KAGVoiQ,KAAM,CACJzyP,QAAS,KAUb,OAPAm9S,GAAYn3F,EAAQ,CAClBx5M,OAAQulB,EAAE,uBACVyrB,YAAazrB,EAAE,wBACd,CAED/xB,QAAS+xB,EAAE,qBAENuyR,GAAU,CACftwT,KAAMqvT,GACN33P,KAAMoyP,GACN93F,OAAQA,GACPy+F,EACL,CACA,SAASE,GAAuBjmG,EAAMv6M,EAAO0zF,EAAQ4sN,EAAYG,GAC/D,IAII/zS,EACFvT,EACAk3Q,EACAqwC,EAPE9yR,EAAI,GAAO2sL,EAAM7mH,GACnBirF,EAAW/wJ,EAAE2xR,aACbgB,EAAY3yR,EAAEgyR,oBACd73T,EAAS6lC,EAAE8xR,iBAKX5+C,EAAS,GACXniF,GAAYjyK,EAAI,IAAK2jQ,EAAK,KAAMl3Q,EAAI,IAAKunT,EAAK,QAAS5/C,EAAS,OAASp0P,EAAI,IAAK2jQ,EAAK,KAAMl3Q,EAAI,IAAKunT,EAAK,UAC3G,IAAIhgD,EAAQ,CACV7kQ,QAAS,GACTinC,KAAM,CACJ9iC,MAAOA,EACP+mH,MAAO23L,KAGXh+C,EAAMh0P,GAAK,CACTgkS,OAAQ5vC,EAAS,SAAW09C,GAC5BngD,KAAMt2Q,GAER24Q,EAAMvnQ,GAAK,GACXunQ,EAAM2P,GAAM,CACVqgC,OAAQ5vC,EAAS,SAAW29C,GAC5BpgD,KAAMt2Q,GAER24Q,EAAMggD,GAAM5H,GAAQyH,GACpB,IAAI1+F,EAAS,CACX6+C,MAAOA,EACPh0Q,OAAQswC,GAAO,CAAC,EAAG0jO,EAAO,CACxB7kQ,QAAS,KAEXyyP,KAAM,CACJzyP,QAAS,KAUb,OAPAm9S,GAAYn3F,EAAQ,CAClBx5M,OAAQulB,EAAE,uBACVyrB,YAAazrB,EAAE,wBACd,CAED/xB,QAAS+xB,EAAE,qBAENuyR,GAAU,CACftwT,KAAMqvT,GACN33P,KAAMkyP,GACN1xR,IAAK22R,GACLl+R,KAAMigS,EACN5+F,OAAQA,GACPy+F,EACL,CACA,IAAIK,GAAY,SAASlmT,OAAO+jT,GAAM,SAAU/jT,OAAO,GAAM,YAAaA,OAAO+jT,GAAM,SAAU/jT,OAAO,GAAO,OAASA,OAAO,GAAQ,KACrImmT,GAAe,SAASnmT,OAAO+jT,GAAM,SAAU/jT,OAAO,GAAQ,YAAaA,OAAO+jT,GAAM,SAAU/jT,OAAO,GAAK,OAASA,OA5O5G,SA4O2H,KACxI,SAASomT,GAAqBtmG,EAAM7mH,EAAQ4sN,EAAYG,GACtD,IAKE//C,EACAh0Q,EACAggB,EACAvT,EAREy0B,EAAI,GAAO2sL,EAAM7mH,GACnBirF,EAAW/wJ,EAAE2xR,aACbgB,EAAYzH,GAAQlrR,EAAEgyR,qBACtB73T,EAAS6lC,EAAE8xR,iBACToB,EAAUlzR,EAAE,gBAKdkzO,EAAS,GACPj/C,EAAS,CACX6+C,MAAOA,EAAQ,CACb7kQ,QAAS,IAEXnP,OAAQA,EAAS,CACfmP,QAAS,GACTkM,KAAM,CACJg/G,MAAO,KAGXunI,KAAM,CACJzyP,QAAS,KA6Cb,OA1CAm9S,GAAYn3F,EAAQ,CAClB/+K,KAAMlV,EAAE,cACRm9C,YAAan9C,EAAE,gBACf1lB,KAAM0lB,EAAE,aACR5lB,SAAU4lB,EAAE,iBACZ/S,UAAW+S,EAAE,kBACbhT,WAAYgT,EAAE,mBACdgtM,MAAO,GAAMrgB,EAAKwmG,WAAYrtN,EAAOstN,sBAEnCriI,GACF+hF,EAAMnlL,MAAQ,CACZlyF,MAAO,QAETq3Q,EAAM7Y,SAAWn7P,EAAOm7P,SAAW,CACjC6oD,OAAQkQ,IAEVl0S,EAAI,IACJvT,EAAI,IACJ2nQ,EAAS,OAETJ,EAAMnlL,MAAQ7uF,EAAO6uF,MAAQ,CAC3Bm1N,OAAQiQ,IAEVjgD,EAAM7Y,SAAW,CACfx+P,MAAO,OAETqjB,EAAI,IACJvT,EAAI,KAENunQ,EAAMh0P,GAAKhgB,EAAOggB,GAAK,CACrBgkS,OAAQ5vC,EAAS,SAAW09C,GAC5BngD,KAAMt2Q,GAER24Q,EAAMvnQ,GAAKzM,EAAOyM,GAAKonT,EACvBA,EAAUl2O,OAAS,GAAMkwI,EAAK0mG,YAAavtN,EAAOwtN,sBAAwB,EAC1EJ,EAAUA,EAAU,CAClBtmD,WAAY5sO,EAAE,mBACd/6B,OAAQiuT,EACRt8Q,MAAO,SAAW85Q,SAChB3gS,EAGGwiS,GAAU,CACftwT,KAAMwvT,GACN93P,KAAMqyP,GACN5mT,MAAO2rT,GACP52R,IAAK22R,GACLl+R,KAAMigS,EACN5+F,OAAQA,EACRi/F,QAASA,GACRR,EACL,CAGA,SAASa,GAAmB5mG,EAAM7mH,EAAQ4sN,EAAYG,EAASl8G,GAC7D,IAeIsd,EAAQ6+C,EAAOh0Q,EAAQyvQ,EAAO1iQ,EAf9Bm0B,EAAI,GAAO2sL,EAAM7mH,GACnB1wC,EAAUs9P,EAAWt9P,QACrBmkM,KAAiBnkM,IAAWA,EAAQmkM,aACpCh+P,EAAO65D,EAAUA,EAAQ75D,UAAOw0B,EAChCzoB,EAAS04B,EAAE,cACXwzR,EAAexzR,EAAE,gBACjByzR,EAAW,CACTz0S,KAAM,SAER00S,EAAU,IAAI7mT,OAAO8pM,EAAS,cAAc9pM,OAAO8jT,GAAQ,aAAa9jT,OAAOskT,IAC/EwC,EAAUrsT,EAAS4jT,GAAQ5jT,GAAU,CACnC6xH,MAAOg4L,IAET7vT,EAAQ,SAASuL,OAAO6jT,IACxBpiD,EAAQ,UAAUzhQ,OAAO8pM,EAAS,KAEpCg9G,EAAQljD,KAAO,GAGfx8C,EAAS,CACP6+C,MAAOA,EAAQ,CACb7kQ,QAAS,GACT1J,EAAG,CACDu+S,OAAQ4Q,EACRjjD,KAAM,GACNh0L,OAAQ+2O,GAEVhvT,EAAGmvT,GAEL70T,OAAQA,EAAS,CACfmP,QAAS,GACT1J,EAAGuuQ,EAAMvuQ,EACTC,EAAGsuQ,EAAMtuQ,GAEXk8P,KAAM,CACJzyP,QAAS,KAGb,IAAI2lT,EAAW,KACbC,EAAa,KACVlnG,EAAKz3K,OACR0+Q,EAAW9tN,EAAOguN,oBAClBD,EAAa/tN,EAAOiuN,uBAEtB3I,GAAYn3F,EAAQ,CAClB/+K,KAAMlV,EAAE,kBAAmB4zR,GAC3B70T,MAAOihC,EAAE,cACTpC,KAAMoC,EAAE,cACRvlB,OAAQulB,EAAE,oBAAqB6zR,GAC/Bj9D,WAAY52N,EAAE,cACd82N,iBAAkB92N,EAAE,oBACpByrB,YAAazrB,EAAE,sBACd,CAED/xB,QAAS+xB,EAAE,mBAEboxR,GAAa1vT,SAAQ,SAAU0Q,GACzBu6M,EAAKv6M,KACPtT,EAAOsT,GAAS0gQ,EAAM1gQ,GAAS,CAC7BA,MAAOu6M,EAAKv6M,GACZ+mH,MAAO23L,IAGb,IACA,IAAIhvR,EAAUywR,GAAU,CACtBtwT,KAAMuvT,GACN73P,KAAMsyP,GACN9xR,IAAK22R,GACLl+R,KAAM6gS,EACNllT,OAAMjH,QAAgByoB,EACtBkkM,OAAQA,GACPy+F,EAAW5wR,SAGVuxR,EAAcnI,GAAQsI,GAC1BH,EAAY52O,OAASz8C,EAAE,eAsBvBorR,GArBAn3F,EAAS,CACP6+C,MAAOA,EAAQ,CACb7kQ,QAAS,GACT1J,EAAG,CACDu+S,OAAQ4Q,EACRj3O,OAAQ42O,GAEV7uT,EAAGmvT,GAEL70T,OAAQA,EAAS,CACfmP,QAAS,GACTkM,KAAM,CACJg/G,MAAO,IAET50H,EAAGuuQ,EAAMvuQ,EACTC,EAAGsuQ,EAAMtuQ,GAEXk8P,KAAM,CACJzyP,QAAS,KAGO,CAClB0/E,MAAO3tD,EAAE,cACTi6N,SAAUj6N,EAAE,iBACZkV,KAAMlV,EAAE,cACRm9C,YAAan9C,EAAE,gBACf1lB,KAAM0lB,EAAE,aACR5lB,SAAU4lB,EAAE,iBACZ/S,UAAW+S,EAAE,kBACbhT,WAAYgT,EAAE,mBACdgtM,MAAOhtM,EAAE,gBAEX,IAAIqtO,EAASklD,GAAU,CACrBtwT,KAAMwvT,GACN93P,KAAMqyP,GACN5mT,MAAO2rT,GACP52R,IAAK22R,GACLl+R,KAAM6gS,EACNx/F,OAAQA,GACPy+F,EAAWrlD,QAqDd,OAlDAp5C,EAAS,CACP6+C,MAAO,CACL7Z,QAAS,CACPx9P,OAAQ6L,GAGVD,MAAO,GACPC,OAAQA,EAAS4jT,GAAQ5jT,GAAU,GACnC2G,QAAS,IAEXyyP,KAAM,CACJzyP,QAAS,IAEXnP,OAAQA,EAAS,CACfmP,QAAS,GACTytB,IAAK,CACHonR,OAAQ,MAEVhoK,OAAQ,CACNgoK,OAAQ,QAMV9iR,EAAE2xR,YAAW,IACfpjD,EAAQ,iCAAiC1hQ,OAAOyhQ,EAAO,KACvDxvQ,EAAO48B,IAAIonR,OAAS,GAAGj2S,OAAOvL,EAAO,KAAKuL,OAAO0hQ,GACjDzvQ,EAAOg8I,OAAOgoK,OAAS,SAASj2S,OAAOvL,EAAO,OAAOuL,OAAO0hQ,EAAO,KACnE1iQ,EAAO,CACLstH,MAAO,CAAC,MAAO73H,MAGjBxC,EAAO48B,IAAIonR,OAAS,SAASj2S,OAAOvL,EAAO,OAAOuL,OAAOyhQ,EAAO,KAChExvQ,EAAOg8I,OAAOgoK,OAAS,GAAGj2S,OAAOvL,EAAO,OAAOuL,OAAOyhQ,GACtDziQ,EAAO,CACLstH,MAAO73H,IAIXxC,EAAOg8I,OAAOgoK,OAAS,IAAIj2S,OAAO8pM,EAAS,MAAM9pM,OAAO/N,EAAOg8I,OAAOgoK,OAAQ,KAAKj2S,OAAOvL,GAUnFowT,GAAW,CAChB/3P,KAAM,GACN/mC,KATFigS,EAAU,CACRmB,MAAO,CACLh1S,KAAM6zS,EACNt3T,KAAM,QACN6qO,QAASsqF,KAMXz8F,OAAQq3F,GAAar3F,EAAQ7+J,EAAS,IACtCyzM,MAAO,CAAC/mO,EAASurO,GACjB9xQ,KAAMA,EACNg+P,YAAaA,EACb1tP,KAAMA,GAEV,CAoBA,IAAIooT,GAAM,yBACRC,GAAM,0BACNC,GAAO,IAAItnT,OAAOonT,GAAK,QAAQpnT,OAAOqnT,GAAK,KAC3CE,GAAO,kBAAkBvnT,OAAOsnT,IAChCl6D,GAAWm4D,GAAW,QAAS,WAAY,YAC3CiC,GAAYjC,GAAW,UAAW,SAAU,YAC5CkC,GAAY,kBAAkBznT,OAAOqnT,GAAK,QAAQrnT,OAAOwnT,GAAW,SAASxnT,OAAOsnT,GAAM,yBAAyBtnT,OAAOonT,GAAK,kBAAoBpnT,OAAOwlT,IAC1JkC,GAAa,oBAAoB1nT,OAAOsnT,GAAM,0BAC9CK,GAAY,GAAG3nT,OAAOunT,GAAM,QAAQvnT,OAAOonT,GAAK,oBAChDQ,GAAe,GAAG5nT,OAAOsnT,GAAM,uBAAuBtnT,OAAOqnT,GAAK,2BAA+BrnT,OAAOotP,GAAU,aA6DpH,SAAS,GAAK1rP,EAAMurS,GAClB,IAAI9wE,EAUJ,OATIvhL,GAASl5C,KACPA,EAAKu0S,OACP95E,EAAOz6N,EAAKu0S,OACHv0S,EAAKpO,KACd6oO,EAAO,aAAe/xF,GAAM1oI,EAAKpO,MAAQ,IAChCoO,EAAKsoQ,SACd7tC,EAAO,YAAc/xF,GAAM1oI,EAAKsoQ,QAAU,wBAGvC7tC,EAAO8wE,EAAM6F,UAAU32E,KAAUz6N,CAC1C,CACA,SAAS0oI,GAAMx7I,GACb,OAAOgsD,GAAShsD,IAAUA,EAAMqnT,OAASrnT,EAAMqnT,OAAS,GAAYrnT,EACtE,CACA,SAASi5T,GAAQ/nG,GACf,IAAIhzJ,EAAOgzJ,EAAKhzJ,MAAQ,GACxB,OAAQA,EAAKntD,QAAQ,SAAYmtD,EAAKntD,QAAQ,WAAcmtD,EAAKntD,QAAQ,SAAkBmgN,EAAK1qN,OAASovT,GAAY,GAAY13P,GAAQ4xP,GAArD5xP,CACtF,CACA,SAAS,GAAWgzJ,GAClB,MAAO,CACL6sC,SAAU7sC,EAAK1qN,KACf1G,KAAMoxN,EAAKpxN,WAAQw0B,EACnB4pC,KAAMgzJ,EAAKhzJ,MAAQ+6P,GAAQ/nG,GAC3BoqC,QAASpqC,EAAKoqC,aAAUhnO,EACxB2hC,KAAMi7J,EAAKj7J,KACX4O,YAAaqsJ,EAAKrsJ,YAEtB,CACA,SAASi5L,GAAY5sC,EAAMmtF,GACzB,OAAOntF,GAAQA,EAAKm2F,OAAShJ,EAAM6F,UAAUhzF,EAAKm2F,SAAmB,IAATn2F,CAC9D,CAKA,SAASgoG,GAAehoG,EAAMmtF,GAC5B,IAAIp6Q,EAAM2P,GAAas9K,EAAK1qN,MACvBy9B,GAAK,GAAM,gCAAkC,GAAYitL,EAAK1qN,OACnE,IAAI5E,EAAI2xD,GAAMtvB,EAAIz9B,KAAKiW,cAAe,KAAM,GAAgBwnB,EAAKitL,EAAMmtF,IAGvE,OAFIntF,EAAKm2F,QAAQhJ,EAAMmT,UAAUtgG,EAAKm2F,OAAQhJ,EAAMx2N,MAAMjmF,IAC1DA,EAAEsmP,SAAWjkN,EAAIikN,UAAY,CAAC,EACvBtmP,CACT,CAKA,SAAS,GAAgBqiC,EAAKitL,EAAMmtF,GAGlC,IAFA,IAAIl/R,EAAS,CAAC,EACZsN,EAAIwX,EAAI9kB,OAAOzgB,OACRK,EAAI,EAAGA,EAAI0tB,IAAK1tB,EAAG,CAC1B,IAAIo6T,EAAOl1R,EAAI9kB,OAAOpgB,GACtBogB,EAAOg6S,EAAKr5T,MAAQ,GAAeq5T,EAAMjoG,EAAMmtF,EACjD,CACA,OAAOl/R,CACT,CAKA,SAAS,GAAe8kB,EAAKitL,EAAMmtF,GACjC,IAAI73S,EAAOy9B,EAAIz9B,KACbxG,EAAQkxN,EAAKjtL,EAAInkC,MACnB,MAAa,UAAT0G,EAiCN,SAA6By9B,EAAKitL,EAAMmtF,GACjC,GAASntF,EAAK/5L,OACjB,GAAM,qDAER,OAAOknR,EAAMvgJ,QAAQozD,EAAK/5L,MAAMiiS,UAAU/a,EAAOntF,EAAKxyL,IACxD,CArCW26R,CAAoBp1R,EAAKitL,EAAMmtF,QACnB/pR,IAAVt0B,EAKS,UAATwG,EAoCb,SAA4By9B,EAAKitL,EAAMmtF,GACrC,IAAIr+S,EAAQkxN,EAAKjtL,EAAInkC,MACrB,OAAImkC,EAAI7D,OACD,GAAQpgC,IAEX,GAAM,iDAAmD,GAAYA,IAEhEA,EAAM6uB,KAAI,SAAU/e,GACzB,OAAOwpT,GAAkBr1R,EAAKn0B,EAAGuuS,EACnC,KAEOib,GAAkBr1R,EAAKjkC,EAAOq+S,EAEzC,CAhDWkb,CAAmBt1R,EAAKitL,EAAMmtF,GACnB,eAAT73S,EACF63S,EAAMmb,cAActoG,EAAKjtL,EAAInkC,OAE/BmkC,EAAI7D,QAAU8xR,GAASlyT,GAASA,EAAM6uB,KAAI,SAAU/e,GACzD,OAAO2pT,GAAex1R,EAAKn0B,EAAGuuS,EAChC,IAAKob,GAAex1R,EAAKjkC,EAAOq+S,QAX1Bp6Q,EAAIwhC,UACN,GAAM,oBAAsB,GAAYyrJ,EAAK1qN,MAAQ,eAAiB,GAAYy9B,EAAInkC,OAW5F,CAKA,SAAS25T,GAAex1R,EAAKjkC,EAAOq+S,GAClC,IAAI73S,EAAOy9B,EAAIz9B,KACf,GAAI0rT,GAASlyT,GACX,OAAO05T,GAAOlzT,GAAQ,GAAM,6CAA+CmzT,GAAQnzT,GAAQ63S,EAAMmW,SAASx0T,GAAS45T,GAAUpzT,GAAQ63S,EAAMwb,WAAW75T,GAASq+S,EAAM6F,UAAUlkT,EAAMqnT,QAErL,IAAIyS,EAAQ71R,EAAIspM,MAAQosF,GAAQnzT,GAChC,OAAOszT,GAASC,GAAU/5T,GAASq+S,EAAM2b,QAAQh6T,EAAMutO,KAAMvtO,EAAM4mO,IAAMkzF,GAASG,GAAWj6T,GAAS4xT,GAAW5xT,EAAM09H,MAAO19H,EAAM4mO,IAAM8yF,GAAOlzT,GAAQ,GAAgBxG,EAAOq+S,GAAS6b,GAAO1zT,GAAQypD,GAAIouP,EAAMvgJ,QAAQ99J,GAAOq+B,QAAUs7R,GAAQnzT,GAAQorT,GAAW5xT,GAAS45T,GAAUpzT,GAAQ63S,EAAMwb,WAAW75T,GAASA,CAE/T,CAiCA,SAASs5T,GAAkBr1R,EAAKjkC,EAAOq+S,GAKrC,IAJA,IACI8a,EADA1sS,EAAIwX,EAAI9kB,OAAOzgB,OAIVK,EAAI,EAAGA,EAAI0tB,IAAK1tB,EAAG,CAE1B,IAAK,IAAIwF,KADT40T,EAAOl1R,EAAI9kB,OAAOpgB,IACC2/B,IACjB,GAAIy6R,EAAKz6R,IAAIn6B,KAAOvE,EAAMuE,GAAI,CAC5B40T,EAAO,KACP,KACF,CAEF,GAAIA,EAAM,KACZ,CAEKA,GAAM,GAAM,0BAA4B,GAAYn5T,IAGzD,IAAImf,EAASw0B,GAAO,GAAgBwlR,EAAMn5T,EAAOq+S,GAAQ8a,EAAKz6R,KAC9D,OAAOuxB,GAAIouP,EAAMhvS,IAAI,GAAO8P,IAC9B,CAIA,IAAI46S,GAAY,SAAmBx1R,GACjC,OAAOA,GAAKA,EAAEgpM,IAChB,EACI0sF,GAAa,SAAoB11R,GACnC,OAAOA,GAAKA,EAAEm5F,KAChB,EACIw8L,GAAS,SAAgB31R,GAC3B,MAAa,SAANA,CACT,EACIm1R,GAAS,SAAgBn1R,GAC3B,MAAa,SAANA,CACT,EACIo1R,GAAU,SAAiBp1R,GAC7B,MAAa,UAANA,CACT,EACIq1R,GAAY,SAAmBr1R,GACjC,MAAa,YAANA,CACT,EA2CA,SAAS41R,GAAWhjS,EAAMknR,GACxB,OAAOlnR,EAAKwuR,KAAOxuR,EAAOA,EAAK5T,MAAQ4T,EAAK5T,KAAKoiS,KAAOxuR,EAAK5T,KAAO0sC,GAAIouP,EAAMvgJ,QAAQ3mI,EAAK5T,MAAMg3B,OACnG,CACA,SAAS6/Q,GAAU/b,EAAOn3L,EAAO3sE,EAAQlc,EAAQ6rM,GAC/CrsO,KAAKwgT,MAAQA,EACbxgT,KAAKqpH,MAAQA,EACbrpH,KAAK08C,OAASA,EACd18C,KAAKwgC,OAASA,EAGdxgC,KAAKw8T,UAAYnwF,EAGjBrsO,KAAKgI,MAAQ,CAAC,CAChB,CAqBA,SAASy0T,GAAS58L,GAChB,OAAO,GAASA,GAASA,EAAQ,IACnC,CACA,SAAS68L,GAAalc,EAAOpiS,EAAG7L,GAC9B,IACIuL,EADAirN,EAAKorF,GAAU5hT,EAAK06C,GAAI16C,EAAKstH,OAEjC,GAAIzhH,EAAE2uC,KACJ,IAAK,IAAI7rD,EAAI,EAAG0tB,EAAIxQ,EAAE2qN,GAAGloO,OAAQK,EAAI0tB,IAAK1tB,EACxC,GAAIkd,EAAE2qN,GAAG7nO,KAAO6nO,EAAI,YAGtB3qN,EAAE2uC,IAAM,CAAC,SACT3uC,EAAEwhH,OAAS,CAAC,MACZxhH,EAAE2qN,GAAK,CAAC,SAENx2N,EAAK06C,KACP7uC,EAAE2uC,IAAIxsD,MAAMud,EAAIvL,EAAK06C,GAAGu8P,QAAUhJ,EAAM6F,UAAUvoS,GAAKvL,EAAK06C,IAC5D7uC,EAAEwhH,OAAOr/H,KAAKigT,EAAMmW,SAASpkT,EAAKstH,QAClCzhH,EAAE2qN,GAAGxoO,KAAKwoO,GAEd,CACA,SAASjqN,GAAM0hS,EAAOmc,EAAI16T,EAAM26T,EAAQ/8L,EAAO0tG,EAAQvlO,GACrD,IAGEiK,EACAg7C,EAJEnuC,EAAQ69S,EAAG16T,KAAU06T,EAAG16T,GAAQ,CAAC,GACnCsQ,EAp1CJ,SAAiBA,GACf,OAAQ47C,GAAS57C,IAAcA,EAAK+qC,QAAU42Q,GAAa,IAAM,KAAOC,GAAU5hT,EAAK06C,GAAI16C,EAAKstH,OAAvE,EAC3B,CAk1CWg9L,CAAQtvF,GACb7mO,EAAI+1T,GAAS58L,GAQjB,GALS,MAALn5H,IACF85S,EAAQmc,EAAGnc,MAEXvuS,EAAI6M,EADJpY,GAAS6L,EAAO,IAAMA,EAAO,MAG1BN,EAAG,CACN,IAAIqP,EAASisN,EAAS,CACpB1tG,MAAOm0L,GACPn5F,MAAO8hG,EAAG5F,UAAUvW,EAAO3gL,EAAO0tG,IAChC,CACF1tG,MAAO2gL,EAAMmW,SAAS92L,GACtBg7F,MAAOzoK,GAAIuqQ,EAAGjgR,SAEZnqC,IAAM+O,EAAO/O,KAAOiuS,EAAMwW,QAAQzpF,IACtCtgL,EAAKuzP,EAAMhvS,IAAIkkD,GAAMknQ,OAAQnmS,EAAWnV,IACpCtZ,IAAO20T,EAAG30T,MAAM63H,GAAS5yE,GAC7Bh7C,EAAImgD,GAAInF,GACC,MAALvmD,IAAWoY,EAAMpY,GAAKuL,EAC5B,CACA,OAAOA,CACT,CAuGA,SAAS6qT,GAAazpG,EAAMmtF,EAAOv+S,GACjC,IAAIkR,EAASkgN,EAAKlgN,OAChBsnN,EAASpH,EAAKoH,OACdmqF,EAASvxF,EAAKuxF,OACd7yR,EAASshM,EAAKthM,OACdyO,EAAS6yL,EAAK7yL,OACdysB,EAAKuzP,EAAMhvS,IAAI6nS,MAIb3pE,EAAO,GAHE,MAAQrc,EAAK1qH,QAAU,YAAc1mG,EAAO,KAAO,CAACw4N,EAAQtnN,EAAQyxS,EAAQ7yR,EAAQyO,GAAQxP,KAAI,SAAU0V,GACrH,OAAY,MAALA,EAAY,OAASA,CAC9B,IAAGrd,KAAK,KAAO,OACoBm3R,GACnCvzP,EAAGznD,OAASkqO,EAAK42E,MACjBr5P,EAAG3rC,OAASouN,EAAK82E,OACnB,CACA,SAASuW,GAAU1pG,EAAMmtF,GACvB,IAKEzzP,EACAE,EACAi7E,EACAogL,EACArmT,EACA+6T,EACAC,EAXE58P,EAAO+6P,GAAQ/nG,GACjB3hN,EAAQ2hN,EAAK1qN,OAASovT,GACtB2C,EAAQrnG,EAAK/5L,MAAQ+5L,EAAK/5L,KAAKohS,MAC/Bd,EAAUvmG,EAAKumG,QACb9wM,EAASuqG,EAAKvqG,QAAUzoD,IAAS,IAAaA,IAAS,GAQvDw+L,EAASx+L,IAAS4xP,IAAYnpM,GAAU4xM,EAGxCrxM,EAjQN,SAAqB/vF,EAAM5nB,EAAO8uS,GAChC,IAAIka,EAAO75R,EAAKosB,EAAIssQ,EAAS3nT,EAmC7B,OAhCK0nB,GAKIohS,EAAQphS,EAAKohS,SACfhpT,GAAO,GAAM,oCAGC,MAAfgpT,EAAM76L,MACR05L,EAAU3nT,EAAS0qT,GAAW5B,EAAOla,IAGhClnR,EAAK5T,KASR9T,EAASwgD,GAAIouP,EAAMvgJ,QAAQ3mI,EAAK5T,MAAM82S,aARtCvvQ,EAAKouQ,GAAevlR,GAAO,CACzBntC,KAAM,YACNmkO,QAAS,GAAM4tF,EAAM5tF,UACpB4tF,EAAM8B,WAAYhc,IAClBl/R,OAAOuf,IAAM2/Q,EAAM0c,OAAOxC,EAAM5tF,SACnC7/K,EAAG3rC,OAAOu5M,MAAQyhG,GAAW5B,EAAOla,GACpC+Y,EAAU3nT,EAASwgD,GAAIouP,EAAMhvS,IAAIy7C,KAInCpsB,EAAM2/Q,EAAM0c,OAAOxC,EAAM5tF,SAAS,KAvBpCysF,EAAUnnQ,GAAIouP,EAAMhvS,IAAI,GAAQ,KAAM,CAAC,CAAC,MA4BrC+nT,IACHA,EAAU+C,GAAWhjS,EAAMknR,IAEtB,CACL3/Q,IAAKA,EACLg6L,MAAO0+F,EACP3nT,OAAQA,EAEZ,CAwNcurT,CAAY9pG,EAAK/5L,KAAM5nB,EAAO8uS,GAQtC4c,EAAUhrQ,GALdnF,EAAKuzP,EAAMhvS,IAAI,GAAS,CACtBqvB,IAAKwoF,EAAMxoF,MAAQwyL,EAAKxyL,IAAMkzR,GAAW1gG,EAAKxyL,UAAOpK,GACrDokM,MAAOxxG,EAAMwxG,MACbxf,OAAQ3pM,MAKVu7C,EAAKi7E,EAAQs4K,EAAMhvS,IAAI,GAAQ,CAC7BqpN,MAAOuiG,KAITnwQ,EAAKuzP,EAAMhvS,IAAI,GAAK,CAClB6yP,QAAS,GAAWhxC,GACpB4sC,YAAaA,GAAY5sC,EAAK4sC,YAAaugD,GAC3CvrS,KAAM,GAAKo+M,EAAKp+M,KAAMurS,GACtBrtR,QAAS,CACPkqS,UAAU,GAEZ/6R,OAAQk+Q,EAAMruD,SACdvgP,OAAQ4uS,EAAMloG,QAAQ1mM,OAAS4uS,EAAM6F,UAAU,UAAY,KAC3Dr+S,MAAOw4S,EAAM8c,WACbziG,MAAOzoK,GAAInF,MAEb,IAAIswQ,EAAUnrQ,GAAInF,IAGlBA,EAAKq7P,EAAM9H,EAAMhvS,IAAI,GAAO2hT,GAAY9/F,EAAKsH,OAAQtH,EAAK1qN,KAAM03D,EAAMgzJ,EAAKvnN,MAAO00S,EAAO,CACvFpmF,KAAK,EACLS,MAAO0iG,OAINj8S,OAAO1P,OAAS4uS,EAAM7lF,SAGrBtH,EAAKv/M,WACPu/M,EAAKv/M,UAAU1L,SAAQ,SAAUs+B,GAC/B,IAAI8wO,EAAK6jD,GAAe30R,EAAG85Q,GACzBz8J,EAAKyzH,EAAGntB,UACNtmG,EAAGy5K,WAAaz5K,EAAGzxH,UACrB,GAAM,iDAEHyxH,EAAGi9E,QAAOsnF,EAAIhnS,OAAO84M,KAAM,GAChCo9C,EAAGl2P,OAAOu5M,MAAQzoK,GAAInF,GACtBuzP,EAAMhvS,IAAIy7C,EAAKuqN,EACjB,IAIEnkD,EAAK9gN,OACP06C,EAAKuzP,EAAMhvS,IAAI,GAAU,CACvBe,KAAMiuS,EAAMwb,WAAW3oG,EAAK9gN,MAC5BsoN,MAAOzoK,GAAInF,OAGf,IAAIwwQ,EAAYrrQ,GAAInF,IAGhBytQ,GAAS5xM,KAOXk0M,EAAY5qQ,GANZ02D,EAAS03L,EAAMhvS,IAAI,GAAW,CAC5Bs3G,OAAQ03L,EAAMuV,eAAe1iG,EAAKvqG,QAClCmuJ,QAASupC,EAAMvpC,QACfxgN,KAAM8mQ,EACN1iG,MAAO4iG,OAMX,IAAI1+D,EAAQyhD,EAAMhvS,IAAI,GAAM,CAC1BilD,KAAM8mQ,EACN1iG,MAAOmiG,GAAaS,KAEtBR,EAAW7qQ,GAAI2sM,GAGXrtP,IAEEmtP,KACF9xM,EAAMyzP,EAAMsI,WACR7hS,MACA6hG,GAAQ/7D,EAAI9lC,OAElBu5R,EAAMkd,UAAUD,EAAWT,GAAaC,EAAUG,GAClD1C,EA5KJ,SAAoBrnG,EAAMmtF,EAAO9uS,GAC/B,IAGIu7C,EAHAytQ,EAAQrnG,EAAK/5L,KAAKohS,MACpBz4T,EAAOy4T,EAAMz4T,KACbyjB,EAAO42S,GAAW5B,EAAOla,GAEtBka,EAAMz4T,MACT,GAAM,2BAA6B,GAAYy4T,IAE5CA,EAAMh1S,MACT,GAAM,oCAAsC,GAAYg1S,IAEtDA,EAAM76L,MACR5yE,EAAKuzP,EAAMhvS,IAAI,GAAS,CACtBquH,MAAO2gL,EAAMmW,SAAS+D,EAAM76L,OAC5Bg7F,MAAOn1M,KAEAg1S,EAAM5tF,QACf7/K,EAAKuzP,EAAMhvS,IAAI,GAAM,CACnBqvB,IAAK2/Q,EAAM0c,OAAOxC,EAAM5tF,SACxBp7N,MAAO0gD,GAAIouP,EAAMx2N,MAAMt4E,EAAME,SAC7BipN,MAAOn1M,KAGT,GAAM,wCAA0C,GAAYg1S,IAI9D,IAAIiD,EAAWnd,EAAMjgF,OACnBlvM,EAASssS,EAASnsT,IAAI,MACtBgvB,EAASm9R,EAASnsT,IAAI,GAAM,CAC1BqpN,MAAOzoK,GAAI/gC,MAEfssS,EAASC,QAAQ37T,EAAM,IAAIs6T,GAAUoB,EAAUtsS,EAAQA,EAAQmP,IAC/Dm9R,EAAShK,UAAU,SAAU,MAG7B1mQ,EAAG3rC,OAAOkvN,QAAU,CAClBo4E,SAAU+U,EAASl3Q,MAAM4sK,GAAMwqG,YAEnC,CAqIYC,CAAWzqG,EAAMmtF,EAAOn3L,GAC9Bw1I,EArIN,SAAsBxrC,EAAMmtF,EAAOn3L,GACjC,IAAIp8D,EAAKuzP,EAAMhvS,IAAI,GAAS,CACxBqpN,MAAOxxG,EAAMwxG,SAEf8iG,EAAWnd,EAAMjgF,OACnBo9F,EAASnsT,IAAI,MACbmsT,EAAShK,UAAU,SAAU,MAG7B1mQ,EAAG3rC,OAAOkvN,QAAU,CAClBo4E,SAAU+U,EAASl3Q,MAAM4sK,GAAMwqG,YAEnC,CAyHeE,CAAa1qG,EAAMmtF,EAAOn3L,GACnCm3L,EAAM/5P,MAAM4sK,GACdmtF,EAAMwd,WACFn/D,IACE/1I,GAAQ/7D,EAAIxsD,KAAKuoH,GACrB/7D,EAAIxsD,KAAKw+P,KAKT66D,IACFqD,EAwBJ,SAAsBrD,EAASvoS,EAAQmvR,GACrC,IAAI70S,EAASiuT,EAAQjuT,OACnBozP,EAAQ66D,EAAQ76D,MAChBmU,EAAM0mD,EAAQtmD,WACZhyP,EAAS,CACXgyP,WAAY+gD,GAASnhD,GAAOstC,EAAM6F,UAAUnzC,EAAIs2C,QAAUt2C,EAC1DvnQ,OAAQ0oT,GAAS1oT,GAAU60S,EAAM6F,UAAU16S,EAAO69S,QAAU79S,EAC5DkvN,MAAOxpM,GAELuoS,EAAQt8Q,QACVh8B,EAAO/O,KAAOiuS,EAAMwb,WAAW,CAC7Bn8L,MAAO+5L,EAAQt8Q,SAGnB,GAAIyhN,EAAO,CACT,IAAIk/D,EAAMl/D,EAAMhgO,UAChBzd,EAAOkyP,eAAiB6gD,GAAS4J,GAAOzd,EAAM6F,UAAU4X,EAAIzU,SAAWyU,EACvE38S,EAAOiyP,WAAaitC,EAAMa,SAAStiD,EAAMjmP,OACzCwI,EAAOoyP,YAAc3U,EAAMG,MAC7B,CACA,OAAO9sM,GAAIouP,EAAMhvS,IAAI,GAAQ8P,IAC/B,CA7Ce48S,CAAatE,EAASqD,EAAUzc,IAI7C,IAAIx1O,EAASw1O,EAAMhvS,IAAI,GAAO,CAC1BqpN,MAAOoiG,KAETkB,EAAQ3d,EAAMhvS,IAAI,GAAM,CACtBqpN,MAAOzoK,GAAI4Y,SACVv0C,EAAW+pR,EAAM5uS,WAIL,MAAbyhN,EAAKpxN,OACPA,EAAOoxN,EAAKpxN,KACZu+S,EAAMod,QAAQ37T,EAAM,IAAIs6T,GAAU/b,EAAOt4K,EAAOl9D,EAAQmzP,IACpD9qG,EAAKlzN,IAAIkzN,EAAKlzN,GAAGiI,SAAQ,SAAUjI,IACjCA,EAAGs6N,QAAUt6N,EAAGgT,QAAUhT,EAAGykT,SAC/B,GAAM,uCAERkY,GAAa38T,EAAIqgT,EAAOv+S,EAC1B,IAEJ,CAuBA,SAASm8T,GAAY/qG,EAAMmtF,GACzB,IASE6d,EACA/8S,EACAzR,EAXE28F,EAASg0M,EAAMh0M,OAAO6qK,OACxB18C,EAAStH,EAAKsH,QAAU,CAAC,EACzBj0L,EAAI,GAAO2sL,EAAM7mH,GACjB8xN,EAAe3jG,EAAO08C,QAAU,CAAC,EACjCp1Q,EAAOq8T,EAAar8T,WAAQw0B,EAC5BwpO,EAAcq+D,EAAar+D,YAC3Bn0P,EAAQwyT,EAAaxyT,MACrBo+O,EAAS,CAAC,EACRpxO,EAAQ,EAMZg/S,GAAa1vT,SAAQ,SAAU0V,GAC7B,OAAOu1M,EAAKv1M,IAAMosO,EAAOpsO,GAAKu1M,EAAKv1M,GAAIhF,EAAQA,GAASu6M,EAAKv1M,IAAM,CACrE,IACKhF,GAAO,GAAM,mCAGlB,IAAInQ,EAqFN,SAAoB0qN,EAAMkrG,GACxB,IAAI51T,EAAO0qN,EAAK1qN,MAAQ,GACnB0qN,EAAK1qN,MAA6B,IAKzC,SAAoB0qN,GAClB,OAAOykG,GAAanmS,QAAO,SAAUb,EAAOnoB,GAC1C,OAAOmoB,GAASuiM,EAAK1qN,GAAQ,EAAI,EACnC,GAAG,EACL,CAToB61T,CAAWnrG,KAAgBA,EAAKz3K,OAAQy3K,EAAKlyM,SAC7DxY,EAAO+hP,GAAa6zE,GAAa,GAAW3zE,GAAe2zE,GAAa,GAAW,IAErF,OAAO51T,IAAS,GAAWA,EAAOiiP,GAAe2zE,GAAa,GAAW,EAC3E,CA3FaE,CAAWprG,EAAMmtF,EAAM+d,UAAUzlT,IAGxCq/M,EAAQ,CACVpmK,MAAqB,MAAdshK,EAAKthK,MACZm4L,OAAQA,EACRvhP,KAAMA,EACNqvQ,MAAgB,WAATrvQ,GAAqB+9B,EAAE2xR,cAE5BkB,EAAUnnQ,GAAIouP,EAAMhvS,IAAI,GAAQ,KAAM,CAAC2mN,MAevCumG,EAAWtsQ,GAAIouP,EAAMhvS,IAAI,GAAc8P,EAAS,CAClD3Y,KAAMA,EACNmQ,MAAO0nS,EAAMa,SAASvoS,GACtBgY,MAAO0vR,EAAMuV,eAAervR,EAAE,cAC9BgtM,MAAO8sE,EAAMxlG,SAASt0K,EAAE,gBACxBlG,OAAQggR,EAAMuV,eAAe1iG,EAAK7yL,QAClC2jM,QAASq8E,EAAMxlG,SAASqY,EAAKsrG,aAC7Bp7G,WAAYi9F,EAAMxlG,SAASqY,EAAK9P,YAChCzB,gBAAiB0+F,EAAMxlG,SAASqY,EAAKr/K,YAwCvC,OApCIrrC,IAAS,IACXkH,EAAW,CAACspT,GAAe9lG,EAAMv6M,EAAO0zF,EAAQmuH,EAAOh2I,UAAWg1O,GAAqBtmG,EAAM7mH,EAAQmuH,EAAOo5C,OAAQ2qD,IAEpHp9S,EAAOwP,MAAQxP,EAAOwP,OAAS0vR,EAAM6F,UAAU,kBAAkB9yS,OAAOihT,GAAM9tR,EAAE8xR,kBAAmB,aAI5F7vT,IAAS,GAChBkH,EAAW,CAACypT,GAAuBjmG,EAAMv6M,EAAO0zF,EAAQmuH,EAAOh2I,SAAU+5O,GAAW/E,GAAqBtmG,EAAM7mH,EAAQmuH,EAAOo5C,OAAQ2qD,KAMtIL,EA7tBJ,SAA4BhrG,EAAM7mH,GAChC,IAAI9lE,EAAI,GAAO2sL,EAAM7mH,GAGrB,MAAO,CACLnY,MAAO3tD,EAAE,aACT22K,QAAS32K,EAAEkyR,eACX/6R,OAAQ,CACNuE,KAAK,EACLo/G,QAAQ,GAEVpnE,QAAS,CACPh4C,IAAKsE,EAAE,cACP86G,OAAQ96G,EAAE,kBAGhB,CA6sBkBk4R,CAAmBvrG,EAAM7mH,GACvC38F,EAAW,CAACoqT,GAAmB5mG,EAAM7mH,EAAQmuH,EAAQ+jG,EAAUlK,GAAM6J,EAAYhhH,WAEjF/7L,EAAOgjB,KAmEX,SAAwB+uL,EAAMmtF,EAAOjxC,GACnC,IAAIjrO,EAAOkwR,GAAMqK,GAAW,OAAQxrG,EAAMk8C,IACxCp9M,EAAcqiQ,GAAMqK,GAAW,cAAexrG,EAAMk8C,IACpDzuP,EAAW0zS,GAMf,SAAqB75F,EAAQ6lF,EAAO10S,GAClC,OAAO+sT,GAAY,WAAYl+F,IAvtCjC,SAAkB14N,EAAMu+S,EAAO10S,GAC7B,IAAIgS,EAAI0iS,EAAMh0M,OAAO1gG,MAAMA,GAC3B,OAAOgS,GAAKA,EAAE7b,EAChB,CAotC4C,CAAS,WAAYu+S,EAAO10S,EACxE,CARqBgzT,CAAYvvD,EAAM,GAAG50C,OAAQ6lF,EAAOiX,KACvD,OAAO,GAAgB,iBAAiBlkT,OAAO+wB,EAAM,MAAM/wB,OAAO4+C,EAAa,MAAM5+C,OAAOuN,EAAU,KAAM0/R,EAC9G,CAxEkBue,CAAe1rG,EAAMmtF,EAAO3wS,EAAS,GAAG0/P,QAIxD1/P,EAAW,CAACuoT,GAAW,CACrB/3P,KAAMmyP,GACNl5R,KAAMigS,EACN5+F,OAhDgB,CAChB6+C,MAAO,CACLvuQ,EAAG,CACD9I,MAAO,GAET+I,EAAG,CACD/I,MAAO,KA2CXotQ,MAAO1/P,EACPi5G,OAAQu1M,EACRp+D,YAAaA,KAIX9nC,EAAMpmK,OACRliD,EAAStP,KAltBb,SAAqB8yN,EAAM7mH,EAAQ4sN,EAAYG,GAC7C,IAAI7yR,EAAI,GAAO2sL,EAAM7mH,GACjBmuH,EAAS,CACX6+C,MAAO,CACL7kQ,QAAS,IAEXnP,OAAQ,CACNmP,QAAS,GACT1J,EAAG,CACD40H,MAAO,CACLnuH,MAAO,YAGXxG,EAAG,CACD20H,MAAO,CACLnuH,MAAO,aAIb01P,KAAM,CACJzyP,QAAS,KAgCb,OA7BAm9S,GAAYn3F,EAAQ,CAClBukC,OAAQx4N,EAAE,eACVs4R,QAASt4R,EAAE,eACX+gF,OAAQ,CACN+hM,OAAQyR,IAEVvzS,MAAO,CACL8hS,OAAQ0R,IAEV7mO,MAAO,CACLm1N,OAAQwR,IAEVr6D,SAAU,CACR6oD,OAAQ2R,IAEVt6S,KAAMwyM,EAAKthK,MACXnW,KAAMlV,EAAE,cACRm9C,YAAan9C,EAAE,gBACf1lB,KAAM0lB,EAAE,aACR5lB,SAAU4lB,EAAE,iBACZ/S,UAAW+S,EAAE,kBACbhT,WAAYgT,EAAE,mBACdgtM,MAAOhtM,EAAE,cACT3lB,WAAY2lB,EAAE,oBACb,CAED2tD,MAAO3tD,EAAE,cACTi6N,SAAUj6N,EAAE,mBAEPuyR,GAAU,CACftwT,KAAMwvT,GACN93P,KAAMuyP,GACN9mT,MAAO4rT,GACPp+R,KAAMigS,EACN5+F,OAAQA,GACPy+F,EACL,CAupBkB6F,CAAY5rG,EAAM7mH,EAAQmuH,EAAO5oK,MAAOwnQ,IAIjDwD,GAAU3E,GAAW,CAC1B/3P,KAAM,GACN/mC,KAAMigS,EACN5+F,OAAQq3F,GAAakN,GAAkBx4R,EAAG2sL,EAAM7mH,GAAS8xN,EAAc,IACvE/uD,MAAO1/P,EACPuoD,KAAM1xB,EAAE,QACRsgC,YAAatgC,EAAE,eACf+2N,OAAQ/2N,EAAE,UACVzkC,KAAMA,EACNg+P,YAAaA,EACbn0P,MAAOA,IACL00S,EACN,CAaA,SAAS0e,GAAkBx4R,EAAG2sL,EAAM7mH,GAClC,IAAImuH,EAAS,CACX6+C,MAAO,CAAC,EACRh0Q,OAAQ,CAAC,GAkBX,OAhBAssT,GAAYn3F,EAAQ,CAClBukC,OAAQx4N,EAAE,UACVy8C,OAAQz8C,EAAE,UACV0zC,QAAS1zC,EAAE,WACXytO,aAAcztO,EAAE,gBAChBkwN,aAAclwN,EAAE,gBAChBkV,KAAMlV,EAAE,aACRvlB,OAAQulB,EAAE,eACVyrB,YAAaq6C,EAAOr6C,YACpBmrM,WAAY9wJ,EAAO8wJ,WACnBryP,EAAGy7B,EAAE,WACLx7B,EAAGw7B,EAAE,WAELsN,OAAQq/K,EAAKr/K,OACbuvK,WAAY8P,EAAK9P,aAEZoX,CACT,CAOA,SAASkkG,GAAW58T,EAAMoxN,EAAMk8C,GAC9B,OAAOl8C,EAAKpxN,GAAQ,UAAWsR,OAAO8/M,EAAKpxN,GAAO,YAAe42T,GAAY52T,EAAMstQ,EAAM,GAAG50C,OAC9F,CAhfA4hG,GAAU4C,YAAc,SAAU3e,EAAO1kP,GACvC,IAAIltC,EAAIktC,EAAQj7D,OACd2/B,EAASs7B,EAAQltC,EAAI,GACrB8tB,EAASof,EAAQltC,EAAI,GACnBy6F,EAAQvtD,EAAQ,GAClBuwK,EAAO,KACPnrO,EAAI,EAON,IANImoH,GAAwB,SAAfA,EAAM1gH,OACjB0gH,EAAQvtD,EAAQ,IAIlB0kP,EAAMhvS,IAAIsqD,EAAQ,IACX56D,EAAI0tB,IAAK1tB,EACd46D,EAAQ56D,GAAGogB,OAAOu5M,MAAQzoK,GAAI0J,EAAQ56D,EAAI,IAC1Cs/S,EAAMhvS,IAAIsqD,EAAQ56D,IACM,cAApB46D,EAAQ56D,GAAGyH,OAAsB0jO,EAAOvwK,EAAQ56D,IAEtD,OAAO,IAAIq7T,GAAU/b,EAAOn3L,EAAO3sE,EAAQlc,EAAQ6rM,EACrD,EAiDAkwF,GAAUr8T,UAAY,CACpB62T,UAAW,SAAmBvW,EAAO3gL,EAAOttH,GAC1C,IAGIN,EAAGkM,EAAGC,EAHNu+S,EAAK38T,KACP8e,EAAQ69S,EAAGpvF,SAAWovF,EAAGpvF,OAAS,CAAC,GACnC7mO,EAAI+1T,GAAS58L,GAwBf,OAtBS,MAALn5H,IACF85S,EAAQmc,EAAGnc,MACXvuS,EAAI6M,EAAMpY,IAEPuL,EAeMM,GAAQA,EAAKstH,OACtB68L,GAAalc,EAAOvuS,EAAEy4N,IAAIppN,OAAQ/O,IAflC6L,EAAI,CACF0uN,QAAS0zE,EAAMmW,SAAS92L,EAAO,OAC/Bg7F,MAAOzoK,GAAIuqQ,EAAGjgR,SAEZnqC,GAAQA,EAAKstH,OAAO68L,GAAalc,EAAOpiS,EAAG7L,GAC/C4L,EAAIqiS,EAAMhvS,IAAI,GAAU4M,IACxBnM,EAAIuuS,EAAMhvS,IAAI,GAAQ,CACpBqpN,MAAOzoK,GAAIj0C,MAEblM,EAAI,CACFy4N,IAAKvsN,EACLi0C,IAAKA,GAAIngD,IAEF,MAALvL,IAAWoY,EAAMpY,GAAKuL,IAIrBA,EAAEmgD,GACX,EACAwuP,UAAW,WACT,OAAOxuP,GAAIpyD,KAAKwgC,OAClB,EACAg2R,UAAW,SAAmBhW,EAAO3gL,GACnC,OAAO/gH,GAAM0hS,EAAOxgT,KAAM,SAAU,SAAU6/H,GAAO,EACvD,EACA02L,UAAW,SAAmB/V,EAAO3gL,GACnC,OAAO/gH,GAAM0hS,EAAOxgT,KAAM,SAAU,SAAU6/H,GAAO,EACvD,EACAw2L,UAAW,SAAmB7V,EAAO3gL,EAAOttH,GAC1C,OAAOuM,GAAM0hS,EAAOxgT,KAAM,OAAQ,SAAU6/H,EAAOttH,IAAQ,EAC7D,EACAgpT,UAAW,SAAmB/a,EAAO3gL,GACnC,OAAO/gH,GAAM0hS,EAAOxgT,KAAM,SAAU,aAAc6/H,GAAO,EAC3D,EACA8gL,UAAW,SAAmBH,EAAO3gL,GACnC,OAAO/gH,GAAM0hS,EAAOxgT,KAAM,SAAU,aAAc6/H,GAAO,GAAM,EACjE,GAiYF,IAAIu/L,GAAY,kBAAmB7rT,OAAO,GAAM,yBAA2BA,OAAO,GAAO,UACzF,SAAS8rT,GAAWhsG,EAAMmtF,GAIxB,IAAI95Q,EAAI,GAHR2sL,EAAO,GAASA,GAAQ,CACtBxyM,KAAMwyM,GACJA,EACiBmtF,EAAMh0M,OAAOz6C,OAChC4oK,EAAStH,EAAKsH,QAAU,CAAC,EACzBy+F,EAAaz+F,EAAOjpN,OAAS,CAAC,EAC9BzP,EAAOm3T,EAAWn3T,WAAQw0B,EAC1BwpO,EAAcm5D,EAAWn5D,YACzBn0P,EAAQstT,EAAWttT,MACnB+D,EAAW,GAIX0pT,EAAUnnQ,GAAIouP,EAAMhvS,IAAI,GAAQ,KAAM,CAD5B,CAAC,MAYb,OARA3B,EAAStP,KAqDX,SAAoB8yN,EAAM3sL,EAAG0yR,EAAYG,GACvC,IAAI5hR,EAAO,CACPx1C,MAAO,GAET0e,EAAOwyM,EAAKxyM,KACZ85M,EAAS,CACP6+C,MAAO,CACL7kQ,QAASgjC,GAEXnyC,OAAQ,CACNmP,QAAS,CACPxS,MAAO,IAGXilQ,KAAM,CACJzyP,QAASgjC,IA6Bf,OA1BAm6Q,GAAYn3F,EAAQ,CAClB95M,KAAMA,EACNwzE,MAAO,CACLm1N,OAAQ,yBAEV9hS,MAAO,CACL8hS,OAAQ,yBAEV91E,MAAO,CACL81E,OAAQ,yBAEV7oD,SAAU,MACV/zP,GAAI85B,EAAE,MACN75B,GAAI65B,EAAE,MACNkV,KAAMlV,EAAE,SACR1lB,KAAM0lB,EAAE,QACR5lB,SAAU4lB,EAAE,YACZ/S,UAAW+S,EAAE,aACbhT,WAAYgT,EAAE,cACd3lB,WAAY2lB,EAAE,eACb,CAED2tD,MAAO3tD,EAAE,SACThf,MAAOgf,EAAE,SACTi6N,SAAUj6N,EAAE,cAEPuyR,GAAU,CACftwT,KAAMwvT,GACN93P,KAAMwyP,GACN/mT,MAAO6rT,GACPr+R,KAAMigS,EACN5+F,OAAQA,GACPy+F,EACL,CAxGgBkG,CAAWjsG,EAAM3sL,EAwBjC,SAAqB2sL,GACnB,IAAIsH,EAAStH,EAAKsH,OAClB,OAAOA,GAAUA,EAAO5oK,OAASjc,GAAO,CACtC7zC,KAAMoxN,EAAKpxN,KACXg+P,YAAa5sC,EAAK4sC,YAClBn0P,MAAOunN,EAAKvnN,OACX6uN,EACL,CA/BoC4kG,CAAYlsG,GAAOkmG,IAGjDlmG,EAAKilD,UACPzoQ,EAAStP,KAqGb,SAAuB8yN,EAAM3sL,EAAG0yR,EAAYG,GAC1C,IAAI5hR,EAAO,CACPx1C,MAAO,GAET0e,EAAOwyM,EAAKilD,SACZ39C,EAAS,CACP6+C,MAAO,CACL7kQ,QAASgjC,GAEXnyC,OAAQ,CACNmP,QAAS,CACPxS,MAAO,IAGXilQ,KAAM,CACJzyP,QAASgjC,IA6Bf,OA1BAm6Q,GAAYn3F,EAAQ,CAClB95M,KAAMA,EACNwzE,MAAO,CACLm1N,OAAQ,yBAEV9hS,MAAO,CACL8hS,OAAQ,yBAEV91E,MAAO,CACL81E,OAAQ,yBAEV7oD,SAAU,MACV/zP,GAAI85B,EAAE,MACN75B,GAAI65B,EAAE,MACNkV,KAAMlV,EAAE,iBACR1lB,KAAM0lB,EAAE,gBACR5lB,SAAU4lB,EAAE,oBACZ/S,UAAW+S,EAAE,qBACbhT,WAAYgT,EAAE,sBACd3lB,WAAY2lB,EAAE,uBACb,CAED2tD,MAAO3tD,EAAE,SACThf,MAAOgf,EAAE,SACTi6N,SAAUj6N,EAAE,cAEPuyR,GAAU,CACftwT,KAAMwvT,GACN93P,KAAMyyP,GACNhnT,MAAO8rT,GACPt+R,KAAMigS,EACN5+F,OAAQA,GACPy+F,EACL,CAxJkBoG,CAAcnsG,EAAM3sL,EAAGi0L,EAAO29C,SAAUihD,IAIjDwD,GAAU3E,GAAW,CAC1B/3P,KAAM,GACN/mC,KAAMigS,EACN5+F,OAAQ8kG,GAAY/4R,EAAG0yR,GACvB7pD,MAAO1/P,EACPuoD,KAAM1xB,EAAE,QACRsgC,YAAatgC,EAAE,eACf+2N,OAAQ/2N,EAAE,UACVzkC,KAAMA,EACNg+P,YAAaA,EACbn0P,MAAOA,IACL00S,EACN,CAYA,SAASif,GAAY/4R,EAAG0yR,GACtB,IAAIz+F,EAAS,CACX6+C,MAAO,CAAC,EACRh0Q,OAAQ,CAAC,GAgBX,OAdAssT,GAAYn3F,EAAQ,CAClBukC,OAAQx4N,EAAE,UACV+gF,OAAQ/gF,EAAE,UACV2tD,MAAO,CACLm1N,OAAQuP,IAEVrxS,MAAO,CACL8hS,OAAQ4V,IAEV1rF,MAAOhtM,EAAE,SACTmwM,MAAOnwM,EAAE,SACTy8C,OAAQz8C,EAAE,WAAa,EACvB0zC,QAAS1zC,EAAE,qBAENsrR,GAAar3F,EAAQy+F,EAAY,GAC1C,CAyGA,SAASsG,GAAUh6S,EAAM86R,GACvB,IAAI19E,EAAa,GACbp9M,EAAK5R,WACP4R,EAAK5R,UAAU1L,SAAQ,SAAUovQ,GAC/B10C,EAAWviO,KAAK86T,GAAe7jD,EAAIgpC,GACrC,IAEE96R,EAAKvlB,IACPulB,EAAKvlB,GAAGiI,SAAQ,SAAUjI,GACxB28T,GAAa38T,EAAIqgT,EAAO96R,EAAKzjB,KAC/B,IAEFu+S,EAAMkW,gBAAgBhxS,EAAKzjB,KAM7B,SAAiByjB,EAAM86R,EAAOzzP,GAC5B,IAIE4yQ,EACAz+T,EACA0tB,EACA7qB,EACAgS,EARE2mC,EAAS,GACTrrB,EAAS,KACXU,GAAS,EACT0kL,GAAW,EAMT/wL,EAAK8a,OAEH6zR,GAAS3uS,EAAK8a,SAAW8zR,GAAU5uS,EAAKsuB,SAE1C0I,EAAOn8C,KAAK,GAAKigT,EAAO96R,IACxBg3B,EAAOn8C,KAAK8wB,EAASo7M,OAGrB/vL,EAAOn8C,KAAK8wB,EAASo7M,GAAQ,CAC3B28E,QAAS1jS,EAAK8a,OACd6oR,QAAS3jS,EAAKsuB,UAGTtuB,EAAKi0C,IAEV26P,GAAU5uS,EAAKi0C,MAAQ26P,GAAU5uS,EAAKsuB,SAExC0I,EAAOn8C,KAAK,GAAKigT,EAAO96R,IACxBg3B,EAAOn8C,KAAK8wB,EAASo7M,OAGrB/vL,EAAOn8C,KAAK8wB,EAASo7M,GAAQ,CAC3B68E,SAAU5jS,EAAKi0C,IACf0vP,QAAS3jS,EAAKsuB,UAGTtuB,EAAK2L,SAEdA,EAASsuS,EAAW,GAAMj6S,EAAK2L,QAAQL,KAAI,SAAUjL,GACnD,OAAOqsC,GAAIouP,EAAMvgJ,QAAQl6I,GAAG22B,OAC9B,IACAA,EAAOn8C,KAAK,OAId,IAAKW,EAAI,EAAG0tB,EAAIm+B,EAAIlsD,OAAQK,EAAI0tB,IAAK1tB,EAEnC6U,GADAhS,EAAIgpD,EAAI7rD,IACFmpP,SACDh5N,GAAWtb,EAAEsb,QAChBqrB,EAAOn8C,KAAK8wB,EAASo7M,MAEvB/vL,EAAOn8C,KAAKwD,GACRgS,EAAEynT,YAAW/mH,GAAW,GACxB1gM,EAAEilN,WAAavkB,IAAU1kL,GAAS,GAClChc,EAAEsb,OAAQA,EAASttB,EAAWgS,EAAEuc,UAASjB,EAAS,MAEpDsuS,IACF/wS,EAAI+wS,EAAS9+T,OAAS,EACtB67C,EAAO,GAAK,GAAM,CAChBo9K,OAAQ/nM,EACR8oM,MAAOjsM,EAAI+wS,EAAWA,EAAS,MAE7B5tS,GAAUnD,IAEZ8tB,EAAOt7C,OAAO,EAAG,EAAGqrO,OAGnBp7M,GAAQqrB,EAAOn8C,KAAKksO,MAEzB,OADA/vL,EAAOn8C,KAAK,GAAM,CAAC,IACZm8C,CACT,CA5EmCkjR,CAAQl6S,EAAM86R,EAAO19E,GACxD,CA4EA,SAAS2J,GAAQjsM,GACf,IAAI1iB,EAAI,GAAQ,CAAC,EAAG0iB,GAIpB,OAHA1iB,EAAEusO,SAAW,CACXh5N,QAAQ,GAEHvT,CACT,CACA,SAAS,GAAK0iS,EAAO96R,GACnB,OAAO,GAAK,CACVi0C,IAAKj0C,EAAKi0C,IAAM6mP,EAAMxlG,SAASt1L,EAAKi0C,UAAOljC,EAC3CkgC,MAAOjxC,EAAKixC,MAAQ6pP,EAAMxlG,SAASt1L,EAAKixC,YAASlgC,EACjD+J,OAAQ9a,EAAK8a,OAASggR,EAAMxlG,SAASt1L,EAAK8a,aAAU/J,EACpDud,OAAQwsQ,EAAMuV,eAAerwS,EAAKsuB,SAEtC,CACA,IAAI6iO,GAAM,SAAa3X,GACrB,OAAOA,IAAW,IAAUA,IAAW,EACzC,EAGI2gE,GAAU,SAAiB3gE,EAAQ/gP,EAAG8E,GACxC,OAAOoxS,GAASn1D,GAAU4gE,GAAc5gE,EAAOsqD,OAAQrrS,EAAG8E,GAAKi8O,IAAW,IAAQA,IAAW,GAAM/gP,EAAI8E,CACzG,EAGI88S,GAAM,SAAa7gE,EAAQ/gP,EAAG8E,GAChC,OAAOoxS,GAASn1D,GAAU8gE,GAAO9gE,EAAOsqD,OAAQrrS,EAAG8E,GAAK4zP,GAAI3X,GAAU/gP,EAAI8E,CAC5E,EAGIg9S,GAAM,SAAa/gE,EAAQ/gP,EAAG8E,GAChC,OAAOoxS,GAASn1D,GAAUghE,GAAOhhE,EAAOsqD,OAAQrrS,EAAG8E,GAAK4zP,GAAI3X,GAAUj8O,EAAI9E,CAC5E,EACIgiT,GAAQ,SAAejhE,EAAQ/gP,EAAG8E,GACpC,OAAOoxS,GAASn1D,GAAUkhE,GAAUlhE,EAAOsqD,OAAQrrS,EAAG8E,GAAKi8O,IAAW,GAAM,CAC1E/8P,MAAOgc,GACL,CACFhc,MAAO8gB,EAEX,EACIo9S,GAAU,SAAiBnhE,EAAQ/gP,EAAG8E,GACxC,OAAOoxS,GAASn1D,GAAUohE,GAAYphE,EAAOsqD,OAAQrrS,EAAG8E,GAAKi8O,IAAW,GAAQ,CAC9E/8P,MAAOgc,GACL,CACFhc,MAAO8gB,EAEX,EACI+8S,GAAS,SAAgBO,EAASpiT,EAAG8E,GACvC,OAAOu9S,GAAM,GAAGjtT,OAAOgtT,EAAS,UAAUhtT,OAAO,GAAK,SAASA,OAAOgtT,EAAS,UAAUhtT,OAAO,GAAQ,KAAM4K,EAAG8E,EACnH,EACIi9S,GAAS,SAAgBK,EAASpiT,EAAG8E,GACvC,OAAOu9S,GAAM,GAAGjtT,OAAOgtT,EAAS,UAAUhtT,OAAO,GAAK,SAASA,OAAOgtT,EAAS,UAAUhtT,OAAO,GAAQ,KAAM4K,EAAG8E,EACnH,EACI68S,GAAgB,SAAuBS,EAASpiT,EAAG8E,GACrD,OAAOw9S,GAAO,GAAGltT,OAAOgtT,EAAS,UAAUhtT,OAAO,GAAM,SAASA,OAAOgtT,EAAS,UAAUhtT,OAAO,GAAK,KAAM4K,EAAG8E,EAClH,EACIm9S,GAAY,SAAmBG,EAASpiT,EAAG8E,GAC7C,OAAOw9S,GAAO,GAAGltT,OAAOgtT,EAAS,UAAUhtT,OAAO,GAAK,KAAM4K,EAAG8E,EAClE,EACIq9S,GAAc,SAAqBC,EAASpiT,EAAG8E,GACjD,OAAOw9S,GAAO,GAAGltT,OAAOgtT,EAAS,UAAUhtT,OAAO,GAAO,KAAM4K,EAAG8E,EACpE,EACIu9S,GAAQ,SAAel7T,EAAM6Y,EAAG8E,GAIlC,OAFA9E,EAAS,MAALA,EAAYyzS,GAAQzzS,GAAKA,EAC7B8E,EAAS,MAALA,EAAY2uS,GAAQ3uS,GAAKA,EACzBy9S,GAASviT,IAAMuiT,GAASz9S,IAE1B9E,EAAIA,EAAIA,EAAEqrS,QAAU,GAAYrrS,EAAEhc,OAAS,KAC3C8gB,EAAIA,EAAIA,EAAEumS,QAAU,GAAYvmS,EAAE9gB,OAAS,KACpC,CACLqnT,OAAQ,GAAGj2S,OAAOjO,EAAM,QAAQiO,OAAO4K,EAAG,SAAS5K,OAAO0P,EAAG,OAIxD,CAAC6yB,GAAO,CACbxwC,KAAMA,GACL6Y,IAAI5K,OAAO0P,GAAK,GAEvB,EACIy9S,GAAW,SAAkBpY,GAC/B,OAAc,MAAPA,GAA2C,IAA5B9wS,OAAOopB,KAAK0nR,GAAKznT,MACzC,EACI4/T,GAAS,SAAgBn7T,EAAM6Y,EAAG8E,GACpC,MAAO,CACLumS,OAAQ,GAAGj2S,OAAOjO,EAAM,QAAQiO,OAAOotT,GAAOxiT,GAAI,SAAS5K,OAAOotT,GAAO19S,GAAI,KAEjF,EACI29S,GAAW,SAAkBL,EAASx8T,EAAGkf,EAAGqC,EAAGpG,GACjD,MAAO,CACLsqS,QAAc,MAALlkS,EAAY,GAAG/R,OAAOgtT,EAAS,UAAUhtT,OAAO,GAAM,SAASA,OAAOotT,GAAOr7S,GAAI,QAAU,KAAY,MAALrC,EAAY,GAAG1P,OAAOgtT,EAAS,UAAUhtT,OAAO,GAAQ,SAASA,OAAOotT,GAAO19S,GAAI,QAAU,KAAY,MAAL/D,EAAY,GAAG3L,OAAOgtT,EAAS,UAAUhtT,OAAO,GAAO,SAASA,OAAOotT,GAAOzhT,GAAI,QAAU,KAAY,MAALnb,EAAY,GAAGwP,OAAOgtT,EAAS,UAAUhtT,OAAO,GAAK,SAASA,OAAOotT,GAAO58T,GAAI,QAAU,IAAM,SAEtZ,EACI48T,GAAS,SAAgB1uT,GAC3B,OAAOoiT,GAASpiT,GAAKA,EAAEu3S,OAAc,MAALv3S,EAAY,KAAO,GAAYA,EACjE,EACIklQ,GAAO,SAAcx+D,EAAMx2M,GAC7B,OAAiB,IAAVA,EAAc,EAAIkyT,GAAS17G,GAAQ,CACxC6wG,OAAQ,IAAIj2S,OAAOolM,EAAK6wG,OAAQ,QAAQj2S,OAAOpR,IAC7C,CACFA,MAAOw2M,EAAOx2M,EAElB,EACIszM,GAAQ,SAAetzM,EAAOqgC,GAChC,IAAI1kB,EAAI3b,EAAMqnT,OACd,OAAO1rS,GAAKA,EAAEk9C,SAAS,UAAY,CACjCwuP,OAAQ1rS,EAAEkJ,MAAM,GAAI,GAAKwb,EAAKgnR,QAC5BrnT,CACN,EACA,SAAS0+T,GAAS37T,EAAMsnG,EAAQs0N,EAAYh1T,GAC1C,IAAIi1T,EACJ,GAAIv0N,GAAU,GAAeA,EAAQtnG,GACnC,OAAOsnG,EAAOtnG,GACT,GAAI,GAAe47T,EAAY57T,GACpC,OAAO47T,EAAW57T,GACb,GAAIA,EAAKq8E,WAAW,SAAU,CACnC,OAAQr8E,GACN,IAAK,aACH67T,EAAY,OACZ,MACF,IAAK,YACL,IAAK,gBACL,IAAK,kBACHA,EAAY77T,EAAK,GAAG0Z,cAAgB1Z,EAAK8hB,MAAM,GAEnD,OAAOlb,EAAM4rT,IAAiBqJ,EAChC,CAAO,GAAI77T,EAAKq8E,WAAW,SAAU,CACnC,OAAQr8E,GACN,IAAK,aACH67T,EAAY,OACZ,MACF,IAAK,YACL,IAAK,gBACHA,EAAY77T,EAAK,GAAG0Z,cAAgB1Z,EAAK8hB,MAAM,GAEnD,OAAOlb,EAAM2rT,IAAiBsJ,EAChC,CACA,OAAO,IACT,CACA,SAAS,GAAK7hH,GACZ,IAEEqf,EAFEvtM,EAAM,CAAC,EACPwtM,EAAY,GAA2Btf,GAE3C,IACE,IAAKsf,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIvkB,EAAMwqM,EAAMp8N,MAChB,GAAK4xB,EACL,IAAK,IAAI8M,KAAO9M,EAAK/C,EAAI6P,GAAO,CAClC,CACF,CAAE,MAAO2G,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACA,OAAOmU,OAAOopB,KAAK5P,EACrB,CAkFA,SAASm6B,GAASkoK,EAAM14F,GACtB,MAAO,CACL7hH,MAAOu6M,EAAKv6M,MACZ6uC,MAAOgzE,EAEX,CACA,SAASqmM,GAAS3tG,EAAM7mH,EAAQ4sN,EAAYG,EAASprF,GACnD,IAKIqrC,EAAOpS,EAAM5hQ,EALbkhC,EAAI,GAAO2sL,EAAM7mH,GACnB0yJ,EAAS7rC,EAAK6rC,OACd+hE,EAAS5tG,EAAK6tG,UACdvoH,EAAOknH,GAAQ3gE,EAAQ,GAAI,GAC3B/7K,EAkEJ,SAAqBA,EAAQw1H,GAC3B,GAAa,IAATA,QAAkB,GAAKxqJ,GAASg1B,GAI7B,CAEL,IADA,IAAIg+O,EAASh+O,EAASrtC,GAAO,CAAC,EAAGqtC,GACX,MAAfg+O,EAAOhqD,MAAc,CAC1B,IAAKhpN,GAASgzQ,EAAOhqD,MAKnB,OAJAgqD,EAAOhqD,KAAOk9C,GAAS17G,GACrB,CACA6wG,OAAQ,IAAIj2S,OAAO4tT,EAAOhqD,KAAM,SAAS5jQ,OAAOolM,EAAK6wG,OAAQ,MAC3D2X,EAAOhqD,KAAOx+D,EACXx1H,EAEPg+O,EAASA,EAAOhqD,KAAOrhO,GAAO,CAAC,EAAGqrR,EAAOhqD,KAE7C,CACAgqD,EAAOhqD,KAAOx+D,CAChB,MAjBEx1H,EAASkxO,GAAS17G,GAAQ,CACxB6wG,OAAQ,IAAIj2S,OAAOolM,EAAK6wG,OAAQ,SAASj2S,OAAO4vE,GAAU,EAAG,MAC3Dw1H,GAAQx1H,GAAU,GAgBxB,OAAOA,CACT,CAvFa,CAAYkwI,EAAKlwI,OAAQw1H,GAEhCgiB,EAAS,CACX6+C,MAAOA,EAAQ,CACb7kQ,QAAS,IAEXnP,OAAQA,EAAS,CACfmP,QAAS,IAEXyyP,KAAMA,EAAO,CACXzyP,QAAS,KAGbm9S,GAAYn3F,EAAQ,CAClBx5M,OAAQulB,EAAE,aACVu2N,UAAWv2N,EAAE,WACb42N,WAAY52N,EAAE,YACd82N,iBAAkB92N,EAAE,kBACpB6yN,cAAe7yN,EAAE,eACjByrB,YAAazrB,EAAE,eAEjB,IAAI06R,EAAU,CACZtoT,MAAOu6M,EAAKv6M,MACZ+mH,MAAO23L,GACPrpF,KAAMA,EAAKA,KACXn6H,MAAOm6H,EAAKn6H,MACZ7wB,OAAQgrJ,EAAKhrJ,OACb1gD,MAAOiE,EAAE,cAEPspP,EAAK+vC,GAAI7gE,EAAQ,CACnBsqD,OAAQ,UACP,CACDA,OAAQ,UAEN6X,EAAYJ,EAAS,CACvBnoT,MAAOmoT,EACPt5Q,MAAO,EACPwvN,KAAMx+D,EACNx1H,OAAQA,GACN,CACFhhF,MAAO,EACPghF,OAAQA,GAENm+O,EAAUL,EAAS,CACrBnoT,MAAOmoT,EACPt5Q,MAAO,EACPwvN,KAAMx+D,EACNx1H,OAAQA,GACNrtC,GAAOk6O,EAAI,CACb7Y,KAAMx+D,EACNx1H,OAAQA,IAQV,OANAq2L,EAAMvuQ,EAAIzF,EAAOyF,EAAI80T,GAAI7gE,EAAQkiE,EAASC,GAC1C7nD,EAAMtuQ,EAAI1F,EAAO0F,EAAI+0T,GAAI/gE,EAAQkiE,EAASC,GAC1C7nD,EAAMl3P,GAAK9c,EAAO8c,GAAK29S,GAAI/gE,EAAQoiE,GACnC9nD,EAAMj3P,GAAK/c,EAAO+c,GAAKw9S,GAAI7gE,EAAQoiE,GACnCl6D,EAAKn8P,EAAI80T,GAAI7gE,EAAQkiE,GACrBh6D,EAAKl8P,EAAI+0T,GAAI/gE,EAAQkiE,GACdnI,GAAU,CACftwT,KAAMsvT,GACN53P,KAAM8xP,GACNtxR,IAAK22R,GACLl+R,KAAMigS,EACN5+F,OAAQA,GACPy+F,EACL,CAuEA,SAASmI,GAAUzoT,EAAOyiM,EAAWp9L,EAAG8E,EAAGkC,GACzC,MAAO,CACLqkS,OAAQ,gBAAkB1wS,EAAlB,cAA+CA,EAAQ,oBAAsByiM,EAAY,IAAMp9L,EAAI,IAAM8E,EAAI,IAAMkC,EAAI,IAEnI,CAqGA,SAASq8S,GAAUnuG,EAAM7mH,EAAQ4sN,EAAYG,GAC3C,IAGI//C,EAAOh0Q,EAHPkhC,EAAI,GAAO2sL,EAAM7mH,GACnB0yJ,EAAS7rC,EAAK6rC,OACdvmD,EAAOknH,GAAQ3gE,GAAS,EAAG,GAEzBvkC,EAAS,CACX6+C,MAAOA,EAAQ,CACb7kQ,QAAS,GACT8yG,OAAQmqM,GAAQlrR,EAAE,cAAe,OACjC2tD,MAAO,CACLm1N,OAAQuP,KAGZvzT,OAAQA,EAASswC,GAAO,CAAC,EAAG0jO,EAAO,CACjC7kQ,QAAS,GACTkM,KAAM+wS,GAAQv+F,EAAKthK,SAErBq1M,KAAM,CACJzyP,QAAS,KAGT8sT,EAAW,CACbjY,OAAQ,eAAgBj2S,OAAO8/M,EAAKv6M,MAAO,QAASvF,OAAOulT,GAAW,EAAG,EAAG,IAAM,MA6BpF,OA3BAtzT,EAAOyF,EAAI80T,GAAI7gE,EAAQuiE,GACvBj8T,EAAO0F,EAAI+0T,GAAI/gE,EAAQuiE,GACvBjoD,EAAM9xP,MAAQq4S,GAAI7gE,EAAQ,GAAMiY,GAAKx+D,EAAM,KAC3C6gE,EAAM7Y,SAAWo/D,GAAI7gE,EAAQihE,GAAMjhE,EAAQ,GAAQ,IAAM,CACvD/8P,MAAO,KAETqD,EAAOkiB,MAAQ8xP,EAAM9xP,MACrBliB,EAAOm7P,SAAW6Y,EAAM7Y,SACxBmxD,GAAYn3F,EAAQ,CAClB/+K,KAAMlV,EAAE,cACRm9C,YAAan9C,EAAE,gBACf1lB,KAAM0lB,EAAE,aACR5lB,SAAU4lB,EAAE,iBACZ/S,UAAW+S,EAAE,kBACbhT,WAAYgT,EAAE,mBACdgtM,MAAOhtM,EAAE,cACT3lB,WAAY2lB,EAAE,oBACb,CAED2tD,MAAO3tD,EAAE,cACThf,MAAOgf,EAAE,cACTi6N,SAAUj6N,EAAE,mBAchB,SAAoBA,EAAGw4N,EAAQvkC,EAAQy+F,GACrC,IAAI9kD,EAAO,SAAcnyQ,EAAOuvS,GAC9B,OAAgB,MAATvvS,GAAiBw4N,EAAOn1N,OAAOksS,GAAOj8F,GAAMm8G,GAAQzvT,GAAQw4N,EAAOn1N,OAAOksS,KAAO,IAAU5vQ,GAAI4vQ,EAAK0nB,EAC7G,EACIsI,EAAQptD,EAAK5tO,EAAE,UAAW,KAC5Bi7R,EAAQrtD,EAAK5tO,EAAE,UAAW,KAC5Bi0L,EAAO6+C,MAAMlF,KAAOqtD,IAAUD,EAAQ9P,GAAQ+P,GAAS5B,GAAI7gE,EAAQ0yD,GAAQ+P,GAAQ/P,GAAQ8P,GAC7F,CAnBEE,CAAWl7R,EAAGw4N,EAAQvkC,EAAQy+F,GAC9Bz+F,EAAOn1N,OAAO6uF,MAAQohH,GAAMklB,EAAOn1N,OAAO6uF,MAAOmlL,EAAMnlL,OACvDsmI,EAAOn1N,OAAOkiB,MAAQ+tL,GAAMklB,EAAOn1N,OAAOkiB,MAAO8xP,EAAM9xP,OACvDizM,EAAOn1N,OAAOm7P,SAAWlrD,GAAMklB,EAAOn1N,OAAOm7P,SAAU6Y,EAAM7Y,UACtDs4D,GAAU,CACftwT,KAAMwvT,GACN93P,KAAMiyP,GACNxmT,MAAO4rT,GACPp+R,KAAMigS,EACN5+F,OAAQA,GACPy+F,EACL,CASA,SAASyI,GAAUxuG,EAAMmtF,GACvB,IAiCIl8Q,EAjCAkoE,EAjZN,SAAoB6mH,EAAMmtF,GACxB,IAKE14R,EACAg6S,EACAjhS,EAPE2rE,EAASg0M,EAAMh0M,OACjB1gG,EAAQ0gG,EAAO1gG,MACf+nQ,EAAOrnK,EAAOqnK,KACd1lC,EAAuC,SAAhCqyE,EAAM+d,UAAUlrG,EAAKv6M,QAAqB0zF,EAAOu1N,SACxD7iE,EAAS7rC,EAAK6rC,OAIhB,GAAIm1D,GAASn1D,GAAS,CACpB,IAAI8iE,EAAS,GAAK,CAACx1N,EAAOy1N,MAAOz1N,EAAO01N,QACtCC,EAAa,GAAK,CAAC31N,EAAO41N,QAAS51N,EAAO61N,WAAY71N,EAAO81N,SAAU91N,EAAO+1N,YAChFz6S,EAAK,CAAC,EACN,IACEm7M,EADEC,EAAa,GAA2B8+F,GAE5C,IACE,IAAK9+F,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAE9CxwB,EADA+Y,EAAMoiM,EAAO9gO,OACH49T,GAAI7gE,EAAQ2hE,GAAShgS,EAAK2rE,EAAOy1N,MAAOpuD,EAAM/nQ,GAAQ+0T,GAAShgS,EAAK2rE,EAAO01N,MAAOruD,EAAM/nQ,GAEtG,CAAE,MAAO07B,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACAy+T,EAAK,CAAC,EACN,IACE76F,EADEC,EAAa,GAA2Bi7F,GAE5C,IACE,IAAKj7F,EAAWppN,MAAOmpN,EAASC,EAAWt4M,KAAK0pB,MAE9CwpR,EADAjhS,EAAMomM,EAAO9kO,OACHy+T,GAAS1hE,EAAOsqD,OAAQqX,GAAShgS,EAAK2rE,EAAO41N,QAASvuD,EAAM/nQ,GAAQ+0T,GAAShgS,EAAK2rE,EAAO61N,WAAYxuD,EAAM/nQ,GAAQ+0T,GAAShgS,EAAK2rE,EAAO81N,SAAUzuD,EAAM/nQ,GAAQ+0T,GAAShgS,EAAK2rE,EAAO+1N,UAAW1uD,EAAM/nQ,GAEpN,CAAE,MAAO07B,GACP0/L,EAAWhjO,EAAEsjC,EACf,CAAE,QACA0/L,EAAW7jO,GACb,CACF,MACEykB,EAAKo3O,IAAW,IAAOA,IAAW,GAAS1yJ,EAAOy1N,MAAQz1N,EAAO01N,MACjEJ,EAAKt1N,EAAO,OAAS0yJ,EAAO,GAAGt4O,cAAgBs4O,EAAOl4O,MAAM,IAG9D,OADac,GAAMg6S,GAAM3zF,EAAOr4L,GAAO,CAAC,EAAG+9N,EAAM/rP,EAAIg6S,EAAI3zF,GAAQ0lC,CAEnE,CAqWeitD,CAAWztG,EAAMmtF,GAC5B7lF,EAAStH,EAAKsH,QAAU,CAAC,EACzB6nG,EAAa7nG,EAAOk5C,MAAQ,CAAC,EAC7B5xQ,EAAOugU,EAAWvgU,WAAQw0B,EAC1BwpO,EAAcuiE,EAAWviE,YACzBn0P,EAAQ02T,EAAW12T,MACnB46B,EAAI,GAAO2sL,EAAM7mH,GACjB2hI,EA7gEJ,SAAkBznM,GAChB,IAEEynM,EACAn6H,EAHE/hG,EAAIy0B,EAAE,YACNy8C,EAASz8C,EAAE,cA6Bf,OA1BKz0B,EAIMA,EAAEu3S,QAEXr7E,EAAO,CACLq7E,OAAQ,IAAIj2S,OAAOtB,EAAEu3S,OAAQ,6BAE/Bx1M,EAAQ,CACNw1M,OAAQ,IAAIj2S,OAAOtB,EAAEu3S,OAAQ,mBAE1Br7P,GAASg1B,KACZA,EAAS,CACPqmO,OAAQ,IAAIj2S,OAAOtB,EAAEu3S,OAAQ,yBAAyBj2S,OAAO4vE,MAGlD,WAANlxE,GAETk8N,EAAO,EACPn6H,GAAQ,EACR7wB,EAAS,IAETgrJ,EAAO,GACPn6H,GAAQ,IAtBRm6H,EAAOznM,EAAE,gBACTstE,EAAQttE,EAAE,cAuBL,CACLstE,MAAOA,EACPm6H,KAAMA,EACNhrJ,OAAQA,EAEZ,CAy+DWs/O,CAAS/7R,GAGdyxL,EAAQ,CACVr/M,MAAOu6M,EAAKv6M,MACZ0oM,QAAS96K,EAAE,SACXqtO,SAAUrtO,EAAE,UACZmmJ,OAAQnmJ,EAAE,QACV6T,SAAU7T,EAAE,UACZqrB,MAAqB,MAAdshK,EAAKthK,OAEVwnQ,EAAUnnQ,GAAIouP,EAAMhvS,IAAI,GAAQ,CAAC,EAAG,CAAC2mN,MAGrCuqG,EAAWtwQ,GAAIouP,EAAMhvS,IAAI,GAAU,CACrCsH,MAAO0nS,EAAMa,SAAShuF,EAAKv6M,OAC3Bk7F,MAAOwsM,EAAMxlG,SAASmzB,EAAKn6H,OAC3BljF,MAAO0vR,EAAMuV,eAAe1iG,EAAKm9B,WACjChwN,OAAQggR,EAAMuV,eAAe1iG,EAAK7yL,QAClC2jM,QAASq8E,EAAMxlG,SAASqY,EAAKsrG,aAC7Bp7G,WAAYi9F,EAAMxlG,SAASqY,EAAK9P,YAChCzB,gBAAiB0+F,EAAMxlG,SAASqY,EAAKr/K,YAInCnkC,EAAW,GA+Bf,OA3BIsoN,EAAMtrC,MACRh9K,EAAStP,KAAKygU,GAAS3tG,EAAM7mH,EAAQmuH,EAAO9tC,KAAM61I,EAAUv0F,IAI1DhW,EAAM3W,QACRl9K,EAAOoC,EAAE,YACT72B,EAAStP,KAxQb,SAAmB8yN,EAAM7mH,EAAQ4sN,EAAYG,EAASj1R,EAAM6pM,GAC1D,IAGIqrC,EAAOpS,EAAM5hQ,EAHbkhC,EAAI,GAAO2sL,EAAM7mH,GACnB0yJ,EAAS7rC,EAAK6rC,OACdvmD,EAAOknH,GAAQ3gE,GAAS,EAAG,GAEzBvkC,EAAS,CACX6+C,MAAOA,EAAQ,CACb7kQ,QAAS,IAEXnP,OAAQA,EAAS,CACfmP,QAAS,IAEXyyP,KAAMA,EAAO,CACXzyP,QAAS,KAGbm9S,GAAYn3F,EAAQ,CAClBx5M,OAAQulB,EAAE,aACVu2N,UAAWv2N,EAAE,WACb42N,WAAY52N,EAAE,YACd82N,iBAAkB92N,EAAE,kBACpB6yN,cAAe7yN,EAAE,eACjByrB,YAAazrB,EAAE,eAEjB,IAAIi8R,EAAW/Q,GAAQttR,GACvBq+R,EAASxrD,KAAOx+D,EAChB,IAAIyoH,EAAU,CACZtoT,MAAOu6M,EAAKv6M,MACZ+mH,MAAO23L,GACPrpF,KAAMA,EAAKA,KACXn6H,MAAOm6H,EAAKn6H,MACZ7wB,OAAQgrJ,EAAKhrJ,OACb1gD,MAAOiE,EAAE,cAQX,OANAlhC,EAAO0F,EAAIsuQ,EAAMtuQ,EAAI60T,GAAI7gE,EAAQ,GAAMkiE,GACvC57T,EAAO+c,GAAKi3P,EAAMj3P,GAAKw9S,GAAI7gE,EAAQyjE,GACnCv7D,EAAKn8P,EAAI80T,GAAI7gE,EAAQkiE,GACrB57T,EAAOyF,EAAIuuQ,EAAMvuQ,EAAIg1T,GAAI/gE,EAAQ,GAAMkiE,GACvC57T,EAAO8c,GAAKk3P,EAAMl3P,GAAK29S,GAAI/gE,EAAQyjE,GACnCv7D,EAAKl8P,EAAI+0T,GAAI/gE,EAAQkiE,GACdnI,GAAU,CACftwT,KAAMsvT,GACN53P,KAAMgyP,GACNxxR,IAAK22R,GACLl+R,KAAMigS,EACN5+F,OAAQA,GACPy+F,EACL,CAyNkBwJ,CAAUvvG,EAAM7mH,EAAQmuH,EAAOnZ,MAAOkhH,EAAUp+R,EAAM6pM,KAIlEhW,EAAM47C,SACRzvO,EAAO6zL,EAAM3W,MAAQl9K,EAAO,EAC5Bz0B,EAAStP,KAzNb,SAAoB8yN,EAAM7mH,EAAQ4sN,EAAYG,EAASj1R,EAAM6pM,GAC3D,IASE3oO,EATEkhC,EAAI,GAAO2sL,EAAM7mH,GACnB0yJ,EAAS7rC,EAAK6rC,OACdpmP,EAAQu6M,EAAKv6M,MACb6/L,EAAOknH,GAAQ3gE,GAAS,EAAG,GAC3B5jD,EAAQk5G,GAAM9tR,EAAE,eAChBm8R,EAAcrO,GAAM9tR,EAAE,qBACtBo8R,EAAap8R,EAAE,cACfq8R,EAAgBr8R,EAAE,iBAChBs8R,EAAoB,IAAV1nH,KAAiBA,EAE3BqnH,EAAW/Q,GAAQttR,GACvBq+R,EAASxrD,KAAOx+D,EAChBgqH,EAASx/O,OAASyuO,GAAQlrR,EAAE,iBAAmB,GAC/Ci8R,EAASx/O,OAAOg0L,KAAOx+D,EACvB,IAAIyoH,EAAU,CACZtoT,MAAOA,EACP+mH,MAAO23L,GACPrpF,KAAM,GACNhrJ,OAAQ61O,GAAa7qF,EAAKhrJ,OAAQz8C,EAAE,iBAElC2tD,EAAQ0rO,GAAI7gE,EAAQ8jE,EAAUzB,GAAUzoT,EAAOwiM,EAAO,SAAU,UAAW,YAAc,CAC3Fn5M,MAAO,UACNk+T,GAAQnhE,EAAQ,OAAQ,UACvByB,EAAWo/D,GAAI7gE,EAAQihE,GAAMjhE,EAAQ,SAAU,OAAQ8jE,EAAUzB,GAAUzoT,EAAOwiM,EAAO,QAAS,WAAY,YAAc,CAC9Hn5M,MAAO,WAEL8gU,EAAa1B,GAAUzoT,EAAOwiM,EAAO,KAAK/nM,OAAOsvT,EAAa,KAAMA,EAAa,GACrFG,EAAUA,GAAWH,EACrB,IAAIrpD,EAAQ,CACV7kQ,QAAS,GACT1J,EAAG80T,GAAI7gE,EAAQkiE,EAASuB,GACxBz3T,EAAG+0T,GAAI/gE,EAAQkiE,EAASuB,IAEtBhoG,EAAS,CACX6+C,MAAOA,EACPh0Q,OAAQA,EAAS,CACfmP,QAAS,GACTkM,KAAM,CACJg/G,MAAO,IAET50H,EAAGuuQ,EAAMvuQ,EACTC,EAAGsuQ,EAAMtuQ,EACTmpF,MAAOA,EACPssK,SAAUA,GAEZyG,KAAM,CACJzyP,QAAS,GACT1J,EAAGuuQ,EAAMvuQ,EACTC,EAAGsuQ,EAAMtuQ,IAGb4mT,GAAYn3F,EAAQ,CAClB/tN,IAAKk2T,GAAcE,EAAUjD,GAAI7gE,EAAQ+jE,GAAc,KACvDp2T,IAAKk2T,GAAiBC,EAAU/C,GAAI/gE,EAAQ+jE,GAAc,OAE5DnR,GAAYn3F,EAAQ,CAClBjzM,MAAOgf,EAAE,cACTkV,KAAMlV,EAAE,cACRm9C,YAAan9C,EAAE,gBACf1lB,KAAM0lB,EAAE,aACR5lB,SAAU4lB,EAAE,iBACZhT,WAAYgT,EAAE,mBACd/S,UAAW+S,EAAE,kBACbgtM,MAAOhtM,EAAE,cACT3lB,WAAY2lB,EAAE,oBACb,CACD2tD,MAAOyuO,EACPniE,SAAUoiE,IAEZ,IAAIhkE,EAAQr4N,EAAE,cACVkzR,EAAUlzR,EAAE,gBAmBhB,OAhBAkzR,EAAUA,GAAW76D,EAAQ,CAC3BuU,WAAY5sO,EAAE,mBACd/6B,OAAQiuT,EACRt8Q,MAAO,cACPyhN,MAAOA,EAAQ,CACbjmP,MAAOA,EACPomP,OAAQA,EACRngO,UAAWggO,GACT,WACFtoO,EACAjxB,EAAO6uF,QAAUA,IACnB7uF,EAAO6uF,MAAQohH,GAAMjwM,EAAO6uF,MAAOA,IAEjC7uF,EAAOm7P,WAAaA,IACtBn7P,EAAOm7P,SAAWlrD,GAAMjwM,EAAOm7P,SAAUA,IAEpCs4D,GAAU,CACftwT,KAAMwvT,GACN93P,KAAM+xP,GACNtmT,MAAO2rT,GACP52R,IAAK22R,GACLl+R,KAAMigS,EACN5+F,OAAQA,EACRi/F,QAASA,GACRR,EACL,CAsHkB8J,CAAW7vG,EAAM7mH,EAAQmuH,EAAOo5C,OAAQ2uD,EAAUp+R,EAAM6pM,KAIpEhW,EAAM59K,QACR1qC,EAAStP,KA1Zb,SAAoB8yN,EAAM7mH,EAAQ4sN,EAAYG,GAC5C,IAEI//C,EAAOh0Q,EAFPkhC,EAAI,GAAO2sL,EAAM7mH,GACnB0yJ,EAAS7rC,EAAK6rC,OAEZvkC,EAAS,CACX6+C,MAAOA,EAAQ,CACb7kQ,QAAS,IAEXnP,OAAQA,EAAS,CACfmP,QAAS,IAEXyyP,KAAM,CACJzyP,QAAS,KAGbm9S,GAAYn3F,EAAQ,CAClBx5M,OAAQulB,EAAE,eACVu2N,UAAWv2N,EAAE,aACb42N,WAAY52N,EAAE,cACd82N,iBAAkB92N,EAAE,oBACpByrB,YAAazrB,EAAE,eACf6yN,cAAe7yN,EAAE,mBAEnB,IAAIy8R,EAAOh4Q,GAASkoK,EAAM,GACtB+vG,EAAOj4Q,GAASkoK,EAAM,GAK1B,OAJAmmD,EAAMvuQ,EAAIzF,EAAOyF,EAAI80T,GAAI7gE,EAAQikE,EAAM,IACvC3pD,EAAMl3P,GAAK9c,EAAO8c,GAAKy9S,GAAI7gE,EAAQkkE,GACnC5pD,EAAMtuQ,EAAI1F,EAAO0F,EAAI+0T,GAAI/gE,EAAQikE,EAAM,IACvC3pD,EAAMj3P,GAAK/c,EAAO+c,GAAK09S,GAAI/gE,EAAQkkE,GAC5BnK,GAAU,CACftwT,KAAMsvT,GACN53P,KAAM6xP,GACN54R,KAAMigS,EACN5+F,OAAQA,GACPy+F,EACL,CAuXkBiK,CAAWhwG,EAAM7mH,EAAQmuH,EAAOpgL,OAAQg/Q,IAIpDphG,EAAMpmK,OACRliD,EAAStP,KAAKihU,GAAUnuG,EAAM7mH,EAAQmuH,EAAO5oK,MAAOwnQ,IAI/CwD,GAAU3E,GAAW,CAC1B/3P,KAAM,GACN/mC,KAAMigS,EACN5+F,OAAQq3F,GAAasR,GAAgB58R,EAAG2sL,GAAOmvG,EAAY,IAC3DjzD,MAAO1/P,EACPuoD,KAAM1xB,EAAE,QACRsgC,YAAatgC,EAAE,eACf+2N,OAAQ/2N,EAAE,UACVzkC,KAAMA,EACNg+P,YAAaA,EACbn0P,MAAOA,IACL00S,EACN,CACA,SAAS8iB,GAAgB58R,EAAG2sL,GAC1B,IAAIsH,EAAS,CACX6+C,MAAO,CAAC,EACRh0Q,OAAQ,CAAC,GAiBX,OAfAssT,GAAYn3F,EAAQ,CAClBukC,OAAQx4N,EAAE,UACVy8C,OAAQz8C,EAAE,WAAa,EACvBykB,SAAU,GAAMkoK,EAAKloK,SAAU,GAC/BgpN,aAAcztO,EAAE,gBAChButO,UAAWvtO,EAAE,aACbwtO,UAAWxtO,EAAE,aACbihB,MAAO,CACL6hQ,OAAQ,mBAAoBj2S,OAAO8/M,EAAKv6M,MAAO,SAEjDR,UAAWouB,EAAE,aAEbsN,OAAQq/K,EAAKr/K,OACbuvK,WAAY8P,EAAK9P,aAEZoX,CACT,CACA,SAAS4oG,GAAWlwG,EAAMmtF,EAAOgjB,GAC/B,IAAIlrH,EAAU,GAAM+a,EAAK/a,SACvB4xC,EAAS,GAAM72B,EAAK62B,QAoDtB,OAjDKs5E,GAAclrH,EAAQlwM,SAAQ,SAAUs+B,GAC3C,OAAOgtR,GAAYhtR,EAAG85Q,EACxB,IAGA,GAAMntF,EAAK84D,aAAa/jR,SAAQ,SAAUs+B,GACxC,OA5tEJ,SAAyBwlP,EAAMs0B,GAC7B,IAAIh0M,EAASg0M,EAAMh0M,OAAOs0K,YAAc,CAAC,EACvCx/P,EAAS,CAAC,EACZ,IAAK,IAAIrf,KAAQiqR,EACF,SAATjqR,IACJqf,EAAOrf,GAAQi1T,GAAiBhrC,EAAKjqR,GAAOA,EAAMu+S,IAIpD,IAAK,IAAIijB,KAAUj3N,EACK,MAAlBlrF,EAAOmiT,KACTniT,EAAOmiT,GAAUvM,GAAiB1qN,EAAOi3N,GAASA,EAAQjjB,IAG9DA,EAAMkjB,cAAcx3C,EAAKjqR,KAAMqf,EACjC,CA6sEWqiT,CAAgBj9R,EAAG85Q,EAC5B,IAGAt2D,EAAO9hP,SAAQ,SAAUs+B,GACvB,OAn9EJ,SAAmB2sL,EAAMmtF,GACvB,IAAI73S,EAAO0qN,EAAK1qN,MAAQ,SACnB6hP,GAAiB7hP,IACpB,GAAM,4BAA8B,GAAYA,IAElD63S,EAAMojB,SAASvwG,EAAKpxN,KAAM,CACxB0G,KAAMA,EACN4xC,YAAQ9jB,GAEZ,CA08EWotS,CAAUn9R,EAAG85Q,EACtB,IAGA,GAAMntF,EAAK3tM,MAAMtd,SAAQ,SAAUs+B,GACjC,OAAOg5R,GAAUh5R,EAAG85Q,EACtB,IAGAt2D,EAAO9hP,SAAQ,SAAUs+B,GACvB,OAAO8uR,GAAW9uR,EAAG85Q,EACvB,KAGCgjB,GAAgBlrH,GAASlwM,SAAQ,SAAUs+B,GAC1C,OA/hFJ,SAA4B8iR,EAAQhJ,GAClC,IAAIvzP,EAAKuzP,EAAM4F,UAAUoD,EAAOvnT,MAC5BytO,EAAO85E,EAAOhkT,OACdgkT,EAAOl/S,OACLolO,EACF,GAAM,8DAENA,EAAO85E,EAAOl/S,KACd2iD,EAAGgvK,UAAW,IAGdyT,IACFA,EAAO,GAAgBA,EAAM8wE,GAC7BvzP,EAAGznD,OAASkqO,EAAK42E,MACjBr5P,EAAG3rC,OAASouN,EAAK82E,SAEfgD,EAAOrpT,IACTqpT,EAAOrpT,GAAGiI,SAAQ,SAAUs+B,GAC1B,OAAO,GAAYA,EAAG85Q,EAAOvzP,EAAGv5C,GAClC,GAEJ,CA0gFWowT,CAAmBp9R,EAAG85Q,EAC/B,IAGA,GAAMntF,EAAK0wG,MAAM37T,SAAQ,SAAUs+B,GACjC,OAAOm7R,GAAUn7R,EAAG85Q,EACtB,IAGA,GAAMntF,EAAKk8C,OAAOnnQ,SAAQ,SAAUs+B,GAClC,OAAOq2R,GAAUr2R,EAAG85Q,EACtB,IAGA,GAAMntF,EAAK4jD,SAAS7uQ,SAAQ,SAAUs+B,GACpC,OAAO03R,GAAY13R,EAAG85Q,EACxB,IAGIntF,EAAKthK,OAAOstQ,GAAWhsG,EAAKthK,MAAOyuP,GAGvCA,EAAMwjB,eACCxjB,CACT,CACA,IAAIyjB,GAAa,SAAoB5wG,GACnC,OAAO2+F,GAAa,CAClBx4C,MAAO,CACLvuQ,EAAG,CACD9I,MAAO,GAET+I,EAAG,CACD/I,MAAO,IAGXqD,OAAQ,CACNuI,MAAO,CACLy7S,OAAQ,SAEVx7S,OAAQ,CACNw7S,OAAQ,YAGXn2F,EACL,EACA,SAAS6wG,GAAU7wG,EAAMmtF,GACvB,IAAIh0M,EAASg0M,EAAMh0M,OAGfjhC,EAAOnZ,GAAIouP,EAAMj1O,KAAOi1O,EAAMhvS,IAAI6nS,OAGlC/gG,EA0EN,SAAwB+a,EAAM7mH,GAC5B,IAAI9lE,EAAI,SAAWzkC,GACf,OAAO,GAAMoxN,EAAKpxN,GAAOuqG,EAAOvqG,GAClC,EACAq2M,EAAU,CAAC6rH,GAAa,aAAcz9R,EAAE,eAAgBy9R,GAAa,WAAYzS,GAAchrR,EAAE,cAAey9R,GAAa,UAAWxS,GAAajrR,EAAE,aAAcy9R,GAAa,QAASz9R,EAAE,UAAY,GAAIy9R,GAAa,SAAUz9R,EAAE,WAAa,IACnPwiH,EAAMovD,EAAQ3mL,QAAO,SAAUvT,EAAGN,GAChC,OAAOM,EAAEN,EAAE7b,MAAQ6b,EAAGM,CACxB,GAAG,CAAC,GACJ4S,EAAM,CAAC,EAqBT,OAlBA,GAAMqiM,EAAK/a,SAASlwM,SAAQ,SAAU0V,GAChC,GAAeorI,EAAKprI,EAAE7b,MAExB6b,EAAIg4B,GAAOozG,EAAIprI,EAAE7b,MAAO6b,GAGxBw6L,EAAQ/3M,KAAKud,GAEfkT,EAAIlT,EAAE7b,MAAQ6b,CAChB,IAGA,GAAM0uF,EAAO8rG,SAASlwM,SAAQ,SAAU0V,GACjC,GAAekT,EAAKlT,EAAE7b,OAAU,GAAeinJ,EAAKprI,EAAE7b,OAEzDq2M,EAAQ/3M,KAAKud,EAEjB,IACOw6L,CACT,CAxGgB8rH,CAAe/wG,EAAM7mH,GACnC8rG,EAAQlwM,SAAQ,SAAUs+B,GACxB,OAAOgtR,GAAYhtR,EAAG85Q,EACxB,IAGAA,EAAMx5O,YAAcqsJ,EAAKrsJ,aAAewlC,EAAOxlC,YAC/Cw5O,EAAMqJ,YAAcr9M,EAAO1rG,OAC3B0/S,EAAMvpC,QAAUupC,EAAMuV,eAAevpN,EAAO6qK,QAAU7qK,EAAO6qK,OAAOvuJ,QACpE03L,EAAM3+O,OAAS2qC,EAAO3qC,OAGtB,IAAIwnD,EAAQm3L,EAAMhvS,IAAI,MAGlBmpN,EAAS6lF,EAAMhvS,IAAI,GAAO2hT,GAAY8Q,GAAW5wG,EAAKsH,QAASo9F,GAAW,GAAW1kG,EAAKvnN,MAAO00S,EAAO,CAC1G3lF,MAAOzoK,GAAIi3D,OAITz3G,EAAS4uS,EAAMhvS,IAAI,GAAW,CAChCs3G,OAAQ03L,EAAMuV,eAAe1iG,EAAKvqG,QAClCmuJ,QAASupC,EAAMvpC,QACfoB,SAAUmoC,EAAM6F,UAAU,YAC1B5vP,KAAM8U,EACNsvJ,MAAOzoK,GAAIuoK,MAEb6lF,EAAMsI,UAAU7hS,MAGhBu5R,EAAMkd,UAAUtrQ,GAAIuoK,GAASvoK,GAAIxgD,GAAS,MAC1C2xT,GAAWlwG,EAAMmtF,EAAOloG,GACxBkoG,EAAMsI,UAAUvoT,KAAKqR,GAGrB,IAAIq7C,EAAKuzP,EAAMhvS,IAAI,GAAM,CACvBilD,KAAM8U,EACNsvJ,MAAOzoK,GAAIxgD,MAWb,OATAq7C,EAAKuzP,EAAMhvS,IAAI,GAAO,CACpBqpN,MAAOzoK,GAAInF,MAEbA,EAAKuzP,EAAMhvS,IAAI,GAAM,CACnBqpN,MAAOzoK,GAAInF,MAIbuzP,EAAMod,QAAQ,OAAQ,IAAIrB,GAAU/b,EAAOn3L,EAAOA,EAAOp8D,IAClDuzP,CACT,CACA,SAAS2jB,GAAaliU,EAAME,GAC1B,OAAOA,GAASA,EAAMqnT,OAAS,CAC7BvnT,KAAMA,EACNuD,OAAQrD,EAAMqnT,QACZ,CACFvnT,KAAMA,EACNE,MAAOA,EAEX,CA+CA,SAASkiU,GAAM73N,EAAQrnE,GACrBnlC,KAAKwsG,OAASA,GAAU,CAAC,EACzBxsG,KAAKmlC,QAAUA,GAAW,CAAC,EAC3BnlC,KAAKiuT,SAAW,GAChBjuT,KAAK6/H,MAAQ,CAAC,EACd7/H,KAAKs4M,QAAU,CAAC,EAChBt4M,KAAKskU,QAAU,CAAC,EAChBtkU,KAAKkqP,OAAS,CAAC,EACflqP,KAAKc,OAAS,CAAC,EACfd,KAAK0lB,KAAO,CAAC,EACb1lB,KAAK+sR,QAAU,GACf/sR,KAAKiqT,QAAU,GACfjqT,KAAK8oT,UAAY,GACjB9oT,KAAK6pT,YAAc,KACnB7pT,KAAK6hE,OAAS,KACd7hE,KAAK8pD,IAAM,EACX9pD,KAAKukU,OAAS,EACdvkU,KAAKwkU,SAAW,CAAC,GACjBxkU,KAAKykU,QAAU,GACfzkU,KAAKunT,QAAU,GACfvnT,KAAK0kU,QAAU,GACf1kU,KAAK2kU,UAAY,EACnB,CACA,SAASC,GAASpkB,GAChBxgT,KAAKwsG,OAASg0M,EAAMh0M,OACpBxsG,KAAKmlC,QAAUq7Q,EAAMr7Q,QACrBnlC,KAAKi3Q,QAAUupC,EAAMvpC,QACrBj3Q,KAAK6/H,MAAQroH,OAAO0wB,OAAOs4Q,EAAM3gL,OACjC7/H,KAAKs4M,QAAU9gM,OAAO0wB,OAAOs4Q,EAAMloG,SACnCt4M,KAAKskU,QAAU9sT,OAAO0wB,OAAOs4Q,EAAM8jB,SACnCtkU,KAAKkqP,OAAS1yO,OAAO0wB,OAAOs4Q,EAAMt2D,QAClClqP,KAAKc,OAAS0W,OAAO0wB,OAAOs4Q,EAAM1/S,QAClCd,KAAK0lB,KAAOlO,OAAO0wB,OAAOs4Q,EAAM96R,MAChC1lB,KAAK+sR,QAAU,GACf/sR,KAAKiqT,QAAU,GACfjqT,KAAK8oT,UAAY,GACjB9oT,KAAK8pD,IAAM,EACX9pD,KAAKukU,SAAW/jB,EAAMgkB,SAAS,GAC/BxkU,KAAKwkU,SAAWhkB,EAAMgkB,SACtBxkU,KAAKykU,QAAUjkB,EAAMikB,QAAQz9S,QAC7BhnB,KAAKunT,QAAU/G,EAAM+G,QAAQvgS,QAC7BhnB,KAAK0kU,QAAUlkB,EAAMkkB,QAAQ19S,QAC7BhnB,KAAK2kU,UAAYnkB,EAAMmkB,SACzB,CAoSA,SAASE,GAAexxG,GACtB,OAAQ,GAAQA,GAAQyxG,GAAcC,IAAc1xG,EACtD,CACA,SAASyxG,GAAYviS,GAGnB,IAFA,IAAI3T,EAAI2T,EAAM1hC,OACVsqG,EAAO,IACFjqG,EAAI,EAAGA,EAAI0tB,IAAK1tB,EAAG,CAC1B,IAAIiiO,EAAS5gM,EAAMrhC,GACnBiqG,IAASjqG,EAAI,EAAI,IAAM,KAAOitD,GAASg1K,GAAUA,EAAOqmF,QAAUqb,GAAe1hG,GAAU,GAAYA,GACzG,CACA,OAAOh4H,EAAO,GAChB,CACA,SAAS45N,GAAahxS,GACpB,IAEE8M,EACA1+B,EAHEgpG,EAAO,IACTjqG,EAAI,EAGN,IAAK2/B,KAAO9M,EACV5xB,EAAQ4xB,EAAI8M,GACZsqE,MAAWjqG,EAAI,EAAI,IAAM,IAAM,GAAY2/B,GAAO,KAAOstB,GAAShsD,GAASA,EAAMqnT,QAAUqb,GAAe1iU,GAAS,GAAYA,IAEjI,OAAOgpG,EAAO,GAChB,CAqOA,SAAS,GAAMkoH,EAAM7mH,EAAQrnE,GAK3B,OAJKgpB,GAASklK,IACZ,GAAM,+CAER7mH,EAAS,GAlOX,WACE,IAAIw4N,EAAc,aAGhBC,EAAe,UACfn6R,EAAQ,OACR8C,EAAO,OACPs3R,EAAY,OACd,MAAO,CAELl+P,YAAa,qBAEboT,QAAS,EAGTi+L,SAAU,MAGV9tM,WAAY,KAGZzpE,OAAQ,CACN8sT,SAAU,CACR6B,MAAO,CAAC,WAMZ/9S,MAAO,KAGP+kD,KAAM,KACNipJ,IAAK,CACH9jK,KAAMqpR,GAERr8Q,KAAM,CACJhN,KAAMqpR,GAERp8M,MAAO,KACP3yF,KAAM,CACJ/U,OAAQ8jT,EACR9yQ,YAvCmB,GAyCrBtrD,KAAM,CACJsa,OAAQ8jT,GAEVzkT,KAAM,CACJo7B,KAAMqpR,GAER9jM,KAAM,CACJhgH,OAAQ2pB,GAEVrlC,MAAO,CACL0b,OAAQ8jT,GAEVx8R,OAAQ,CACNmT,KAAMqpR,EACN3gS,KAAM,IAERzjB,KAAM,CACJ+6B,KAAM9Q,EACN9pB,KAAMgkT,EACNlkT,SAAU,IAEZi2O,MAAO,CACLn7M,KAAMqpR,EACN3gS,KAhEmB,GAmErBx4B,MAAO,CAEL,cAAe,CACb8vC,KAAM9Q,EACN9pB,KAAMgkT,EACNlkT,SAAU,IAGZ,cAAe,CACb86B,KAAM9Q,EACN9pB,KAAMgkT,EACNlkT,SAAU,GACV4S,WAAY,QAGd,cAAe,CACbkoB,KAAM9Q,EACN9pB,KAAMgkT,EACNlkT,SAAU,GACV4S,WAAY,QAGd,iBAAkB,CAChBkoB,KAAM9Q,EACN9pB,KAAMgkT,EACNlkT,SAAU,IAGZ9V,MAAO,CACLs5B,KAjGgB,GAkGhB6tB,YAjGiB,EAkGjB1sD,MAAO,UAETgb,OAAQ,CACN6jB,KAtGgB,GAuGhB6tB,YAtGiB,GAwGnBgzQ,OAAQ,CACN7gS,KA1GgB,GA2GhB6tB,YA1GiB,EA2GjB1sD,MAAO,UAGT8oI,KAAM,CACJ3yF,KAAM,cACNz6B,OAAQ+jT,GAEV9yD,KAAM,CACJx2N,KAAM,gBAIVmW,MAAO,CACLmtM,OAAQ,MACRz3I,OAAQ,SACRtkC,OAAQ,EACRiiP,gBAAiB,GAGnBvxD,KAAM,CACJI,UAAW,EACXC,UAAW,IACXmxD,aAAc,GACd9qR,QAAQ,EACR+qR,YAAa,EACbC,YAAa33R,EACbi/I,MAAM,EACN24I,UAAW,EACXC,UAAWP,EACXnxD,QAAQ,EACR2xD,WAAY,EACZ7L,WAAY,IACZE,YAAa,EACb4L,aAAc,EACdnkH,OAAO,EACPokH,UAAWh4R,EACXi4R,WAAY,EACZC,WAAW,EACXnD,SAAU,EACVoD,UAAW,EACX5xD,aAAc,GAGhB4tD,SAAU,CACR8D,YAAa,IAGf/kD,WAAY,CACVn4Q,KAAM,YAGR0uQ,OAAQ,CACNnY,OAAQ,QACR9kL,QAAS,EACT4rP,UAAW,OACXC,cAAe,GACfC,WAAY,EACZ5N,gBAAiB,WACjBC,kBAAmB,WACnBC,eAAgB,IAChBE,kBAAmB,GACnByN,oBAAqBjB,EACrBkB,oBAAqB,EACrBpM,oBAAqB,EACrB8I,WAAY,OACZC,cAAe,SACflJ,WAAY,IACZE,YAAa,EACbsM,cAAc,EACdC,YAAa,GACbC,WAAY,SACZC,WAAY,IACZtM,aAAc,EACduM,kBAAmB,IACnBjM,oBAAqB,cACrBC,sBAAuB7sR,EACvB84R,WAAY,IACZC,YAAa,MACbxyD,aAAc,EACdrrJ,OAAQ,CACN3lC,OAAQ,GACRroD,UAAW,aACX9rB,KAAM,CACJ8rB,UAAW,YAEbnoB,MAAO,CACLmoB,UAAW,cAKjB6sB,MAAO,CACLi/Q,SAAU,CACR56E,OAAQ,aAEVtH,QAAS,CACPsH,OAAQ,SAEV66E,QAAS,CACP76E,OAAQ,mBAEV86E,KAAM,CACJ96E,OAAQ,SAEVd,UAAW,CACTc,OAAQ,aACR3/B,OAAQ,CAAC,EAAG,IAEd5jL,OAAQ,CAAC,SAAU,SAAU,cAAe,QAAS,UAAW,iBAAkB,gBAAiB,kBAGzG,CAKuBmlR,GAAYphN,EAAQ6mH,EAAK7mH,QACvC03N,GAAU7wG,EAAM,IAAIgxG,GAAM73N,EAAQrnE,IAAU04R,WACrD,CApiBAwG,GAAMnkU,UAAY0kU,GAAS1kU,UAAY,CACrCumD,MAAO,SAAe4sK,GACpB,OAAOkwG,GAAWlwG,EAAMrzN,KAC1B,EACAugO,KAAM,WACJ,OAAO,IAAIqkG,GAAS5kU,KACtB,EACAk1T,WAAY,WACV,OAAOl1T,KAAKukU,OAAS,CACvB,EACA1G,UAAW,WAET,OADA79T,KAAKu3D,SACE,CACLyP,YAAahnE,KAAKgnE,YAClB8hP,UAAW9oT,KAAK8oT,UAChB/7B,QAAS/sR,KAAK+sR,QACdk9B,QAASjqT,KAAKiqT,QACdgE,SAAUjuT,KAAKiuT,SACfpE,YAAa7pT,KAAK6pT,YAClBhoP,OAAQ7hE,KAAK6hE,OAEjB,EACAnuD,GAAI,WACF,OAAQ1T,KAAKukU,OAASvkU,KAAKukU,OAAS,IAAM,GAAKvkU,KAAK8pD,KACtD,EACAt4C,IAAK,SAAay7C,GAUhB,OATAjtD,KAAK8oT,UAAUvoT,KAAK0sD,GACpBA,EAAGv5C,GAAK1T,KAAK0T,KAETu5C,EAAG6mQ,OACL7mQ,EAAG6mQ,KAAK1rT,SAAQ,SAAUgqD,GACxBA,EAAI01P,KAAO76P,EAAGv5C,EAChB,IACAu5C,EAAG6mQ,KAAO,MAEL7mQ,CACT,EACA+8B,MAAO,SAAe/8B,GACpB,IAAI85Q,EAAO95Q,aAAc4mQ,GAAQzhQ,GAAInF,GAAMA,EAC3C,OAAOjtD,KAAKwR,IAAI,GAAM,CACpBrP,MAAO4kU,IAEX,EACAlS,UAAW,SAAmB53F,GAG5B,OAFAj9N,KAAK+sR,QAAQxsR,KAAK08N,GAClBA,EAAOvpN,GAAK1T,KAAK0T,KACVupN,CACT,EACAm4F,UAAW,SAAmB5vT,GAE5B,OADAxF,KAAKiqT,QAAQ1pT,KAAKiF,GACXA,CACT,EAEA+xD,OAAQ,WACN,IAAIt1D,EAAM06T,EAMV,IAAK16T,KAHDjC,KAAKurE,OAAMvrE,KAAKurE,KAAKA,MAAO,GAGnBvrE,KAAKs4M,QAChBt4M,KAAKs4M,QAAQr2M,GAAMunT,OAASvnT,EAI9B,IAAKA,KAAQjC,KAAKkqP,OAChBlqP,KAAKkqP,OAAOjoP,GAAM6W,MAAQ7W,EAI5B,SAAS+kU,EAAS/5Q,EAAIhrD,EAAM0G,GAC1B,IAAI+c,EACAunC,KACFvnC,EAAOunC,EAAGvnC,OAASunC,EAAGvnC,KAAO,CAAC,IAClBzjB,KAAUyjB,EAAKzjB,GAAQ,KAC9B1B,KAAKoI,EAEd,CACA,IAAK1G,KAAQjC,KAAK0lB,KAKhB,IAAK,IAAIuhT,KAHTD,GADArK,EAAK38T,KAAK0lB,KAAKzjB,IACHonH,MAAOpnH,EAAM,SACzB+kU,EAASrK,EAAGjgR,OAAQz6C,EAAM,UAC1B+kU,EAASrK,EAAGn8R,OAAQv+B,EAAM,UACP06T,EAAG30T,MACpBg/T,EAASrK,EAAG30T,MAAMi/T,GAAShlU,EAAM,SAAWglU,GAGhD,OAAOjnU,IACT,EAEA09T,UAAW,SAAmB/iG,EAAQ/oN,EAAQugP,GAC5CnyP,KAAKunT,QAAQhnT,KAAK6xD,GAAIpyD,KAAKwR,IAAI,GAAM,CACnCqpN,MAAOF,OAET36N,KAAKykU,QAAQlkU,KAAKqR,GAClB5R,KAAK0kU,QAAQnkU,KAAK4xP,EAAS//L,GAAIpyD,KAAKgqF,MAAMmoK,IAAW,MACrDnyP,KAAK2kU,UAAUpkU,MAAM,EACvB,EACAy9T,SAAU,WACRh+T,KAAKunT,QAAQtgS,MACbjnB,KAAKykU,QAAQx9S,MACbjnB,KAAK0kU,QAAQz9S,MACbjnB,KAAK2kU,UAAU19S,KACjB,EACArV,OAAQ,WACN,OAAO6mM,GAAKz4M,KAAKykU,QACnB,EACA9pG,OAAQ,WACN,OAAOliB,GAAKz4M,KAAKunT,QACnB,EACAp1D,OAAQ,WACN,OAAO15C,GAAKz4M,KAAK0kU,QACnB,EACApH,SAAU,WACR,IAAIl/S,EAAIpe,KAAK2kU,UACb,QAASvmT,EAAEA,EAAEvd,OAAS,EACxB,EAEA81T,SAAU,SAAkB92L,EAAO59H,GACjC,GAAI,GAAS49H,GAAQ,OAAOk0L,GAAWl0L,EAAO59H,GACzC49H,EAAM2pL,QACT,GAAM,gCAAkC,GAAY3pL,IAEtD,IAAI/hH,EAAI+hH,EAAM2pL,OACVnmT,EAAIrD,KAAK6/H,MAAM/hH,GACnB,IAAKza,EAAG,CACN,IAAIie,EAAS,CACXrf,KAAMjC,KAAKqmT,UAAUvoS,IAEnB7b,IAAMqf,EAAOynN,GAAK9mO,GACtBjC,KAAK6/H,MAAM/hH,GAAKza,EAAI+uD,GAAIpyD,KAAKwR,IAAI,GAAM8P,IACzC,CACA,OAAOje,CACT,EACA24T,WAAY,SAAoBx7Q,GAC9B,IAAI//C,EAAQT,KACRwpT,GAAS,EACT0d,EAAQ,SAAexgS,GACzB,OAAO2tR,GAAS3tR,IAAM8iR,GAAS,EAAM/oT,EAAM4lT,UAAU3/Q,EAAE8iR,SAxhG7D,SAAkB9iR,GAChB,OAAOA,GAAKA,EAAEgpM,IAChB,CAshGwEy3F,CAASzgS,IAAM8iR,GAAS,EAAM/oT,EAAM07T,QAAQz1R,EAAEgpM,OAAShpM,CAC3H,EACIk5F,EAAS,GAAMp/E,EAAIq/E,OAAO7uG,IAAIk2S,GAChC7sH,EAAS,GAAM75J,EAAIlD,OAAOtsB,IAAIk2S,GAChC,OAAO1d,EAASp3P,GAAIpyD,KAAKwR,IAAI,GAAQ,CACnCouH,OAAQA,EACRy6E,OAAQA,MACH45G,GAAYr0L,EAAQy6E,EAC7B,EACA6iH,OAAQ,SAAgBt9L,EAAQhwE,GAC9B,IAAI45P,GAAS,EAIT4d,EAAMpnU,KAAKs4M,QAEf,OADA14E,EAAS,GAAMA,GAAQ5uG,KAJX,SAAe0V,GACzB,OAAO2tR,GAAS3tR,IAAM8iR,GAAS,EAAMp3P,GAAIg1Q,EAAI1gS,EAAE8iR,UAAY9iR,CAC7D,IAGO8iR,EAASp3P,GAAIpyD,KAAKwR,IAAI,GAAI,CAC/BouH,OAAQA,EACRhwE,KAAMA,MApkGZ,SAAiBgwE,EAAQhwE,GACvB,IAAIwC,EAAM,CACR21P,KAAMnoL,GAGR,OADIhwE,IAAMwC,EAAI41P,OAAQ,GACf51P,CACT,CA+jGWi1Q,CAAQznM,EAAQhwE,EACzB,EACAonQ,QAAS,SAAiBzkT,GACxB,IAAKA,EAAM,OAAOA,EAGlB,IAAI4L,EAAIg2S,GAAU5hT,EAAK06C,GAAI16C,EAAKstH,OAC9Bz6G,EAAI7S,EAAK+qC,OAlkGC,YAmkGZ,OAAOl4B,EAAEokS,OAASp3P,GAAIpyD,KAAKwR,IAAI,GAAQ,CACrCouH,OAAQzhH,EACRk8L,OAAQr6M,KAAKqmT,UAAUjhS,EAAEokS,YACpByK,GAAY91S,EAAGiH,EACxB,EAEAra,MAAO,SAAesmB,EAAQ1oB,GAC5B,IAAIk4B,EAAMxP,EAAS,IAAM1oB,EACzB,IAAK3I,KAAKc,OAAO+/B,GAAM,CACrB,IAAIntB,EAAK1T,KAAK0T,KACd1T,KAAK+sR,QAAQxsR,KAAK,CAChBmT,GAAIA,EACJ2d,OAAQA,EACR1oB,KAAMA,IAER3I,KAAKc,OAAO+/B,GAAOntB,CACrB,CACA,OAAO1T,KAAKc,OAAO+/B,EACrB,EAEAymS,aAAc,SAAsBrlU,GAClC,OAAO,GAAejC,KAAKs4M,QAASr2M,EACtC,EACA0xT,UAAW,SAAmB1xT,EAAME,GAC9BnC,KAAKsnU,aAAarlU,IACpB,GAAM,0BAA4B,GAAYA,IAEhD,IAAIgrD,EAAK9qD,aAAiB0xT,GAAQ1xT,EAAQnC,KAAKwR,IAAI6nS,GAASl3S,IAC5D,OAAOnC,KAAKs4M,QAAQr2M,GAAQgrD,CAC9B,EACAm5P,UAAW,SAAmBnkT,GAI5B,OAHKjC,KAAKs4M,QAAQr2M,IAChB,GAAM,6BAA+B,GAAYA,IAE5CjC,KAAKs4M,QAAQr2M,EACtB,EACAokT,UAAW,SAAmBvoS,GAC5B,OAAI9d,KAAKs4M,QAAQx6L,GACRs0C,GAAIpyD,KAAKs4M,QAAQx6L,KACd,GAAe9d,KAAKskU,QAASxmT,KACvC9d,KAAKskU,QAAQxmT,GAAK9d,KAAKwR,IAAI6nS,GAAS,QAE/BjnP,GAAIpyD,KAAKskU,QAAQxmT,IAC1B,EACAkmT,aAAc,WAEZ,IADA,IAAI74N,EAAO3zF,OAAOopB,KAAK5gC,KAAKskU,SACnBpjU,EAAI,EAAG0tB,EAAIu8E,EAAKtqG,OAAQK,EAAI0tB,IAAK1tB,EAAG,CAC3C,IAAI4c,EAAIqtF,EAAKjqG,GACXgD,EAAI,GAAgB4Z,EAAG9d,MACvBitD,EAAKjtD,KAAKskU,QAAQxmT,GACpBmvC,EAAG3rC,OAASpd,EAAEsiT,QACdv5P,EAAGznD,OAAStB,EAAEoiT,KAChB,CACF,EACAtrG,SAAU,SAAkBqY,GAC1B,OAAOA,GAAQA,EAAKm2F,OAASxpT,KAAKqmT,UAAUhzF,EAAKm2F,QAAUn2F,CAC7D,EACA0iG,eAAgB,SAAwB1iG,GACtC,OAAQA,GAASllK,GAASklK,GAAerzN,KAAKqmT,UAAUhzF,EAAKm2F,QAAUqb,GAAexxG,IAApDA,CACpC,EACA8oG,QAAS,SAAiBhxN,EAAMlpG,GAC9B,IAAIqf,EAAS,CACXouN,KAAM,GAAgBvkI,EAAMnrG,OAG9B,OADIiC,IAAMqf,EAAOouN,KAAK04E,MAAQnmT,GACvBmwD,GAAIpyD,KAAKwR,IAAI,GAAW8P,IACjC,EACAsyS,WAAY,SAAoB3xT,EAAMmB,GAC/BpD,KAAKiuT,UACR,GAAM,0CAA4C,GAAYhsT,IAEhEjC,KAAKiuT,SAAS1tT,KAAKu1C,GAAO,CACxB0zQ,OAAQvnT,GACPmB,GACL,EAEAmkU,aAAc,SAAsBtlU,EAAM6R,GACpC,GAAe9T,KAAKkqP,OAAQjoP,IAC9B,GAAM,uCAAyC,GAAYA,IAE7DjC,KAAKkqP,OAAOjoP,GAAQjC,KAAKwR,IAAIsC,EAC/B,EACA8vT,SAAU,SAAkB3hU,EAAMqf,GAChCthB,KAAKunU,aAAatlU,EAAM,GAAMqf,GAChC,EACAoiT,cAAe,SAAuBzhU,EAAMqf,GAC1CthB,KAAKunU,aAAatlU,EAAM,GAAWqf,GACrC,EACAggS,SAAU,SAAkBr/S,GAI1B,OAHKjC,KAAKkqP,OAAOjoP,IACf,GAAM,4BAA8B,GAAYA,IAE3CjC,KAAKkqP,OAAOjoP,EACrB,EACAo/S,SAAU,SAAkBp/S,GAC1B,OAAOmwD,GAAIpyD,KAAKshT,SAASr/S,GAC3B,EACAs8T,UAAW,SAAmBt8T,GAC5B,OAAOjC,KAAKshT,SAASr/S,GAAMqf,OAAO3Y,IACpC,EACAgzT,cAAe,SAAuB15T,GACpC,OAAOjC,KAAKqhT,SAASp/S,EACvB,EACAulU,eAAgB,SAAwBvlU,GACtC,OAAOjC,KAAKu+T,UAAUt8T,EACxB,EAEA27T,QAAS,SAAiB37T,EAAMwlU,GAI9B,OAHI,GAAeznU,KAAK0lB,KAAMzjB,IAC5B,GAAM,4BAA8B,GAAYA,IAE3CjC,KAAK0lB,KAAKzjB,GAAQwlU,CAC3B,EACAxnK,QAAS,SAAiBh+J,GAIxB,OAHKjC,KAAK0lB,KAAKzjB,IACb,GAAM,4BAA8B,GAAYA,IAE3CjC,KAAK0lB,KAAKzjB,EACnB,EACAy0T,gBAAiB,SAAyBz0T,EAAM65D,GAI9C,OAHI,GAAe97D,KAAK0lB,KAAMzjB,IAC5B,GAAM,4BAA8B,GAAYA,IAE3CjC,KAAK49T,QAAQ37T,EAAMs6T,GAAU4C,YAAYn/T,KAAM87D,GACxD,GCnhHF,IAAI,GAAU,SAGdhmB,GAAOgtL,GAAY,EAAI,EAAK,EAAQ,EAAK,EAAO,EAAO,EAAM,EAAK,EAAS,EAAW,GCEtF,IAAI,GAAY,CACdvuL,IAAKA,IACL9U,EAAGxlB,KAAKwlB,EACRywP,IAAKj2Q,KAAKi2Q,IACV4rB,KAAM7hS,KAAK6hS,KACXC,MAAO9hS,KAAK8hS,MACZpiQ,OAAQ1/B,KAAK0/B,OACb39B,GAAI/B,KAAK+B,GACT2vQ,QAAS1xQ,KAAK0xQ,QACdxmD,MAAOlrN,KAAKkrN,MACZ62E,UAAW/5R,OAAO+5R,UAClBriD,UAAW13O,OAAO03O,WAEhB+tE,GAAM,CACR,IAAK,SAAWvpT,EAAG8E,GACjB,OAAO9E,EAAI8E,CACb,EACA,IAAK,SAAW9E,EAAG8E,GACjB,OAAO9E,EAAI8E,CACb,EACA,IAAK,SAAW9E,EAAG8E,GACjB,OAAO9E,EAAI8E,CACb,EACA,IAAK,SAAW9E,EAAG8E,GACjB,OAAO9E,EAAI8E,CACb,EACA,IAAK,SAAW9E,EAAG8E,GACjB,OAAO9E,EAAI8E,CACb,EACA,IAAK,SAAW9E,EAAG8E,GACjB,OAAO9E,EAAI8E,CACb,EACA,IAAK,SAAW9E,EAAG8E,GACjB,OAAO9E,EAAI8E,CACb,EACA,KAAM,SAAW9E,EAAG8E,GAClB,OAAO9E,GAAK8E,CACd,EACA,KAAM,SAAW9E,EAAG8E,GAClB,OAAO9E,GAAK8E,CACd,EACA,KAAM,SAAW9E,EAAG8E,GAClB,OAAO9E,GAAK8E,CACd,EACA,KAAM,SAAW9E,EAAG8E,GAClB,OAAO9E,GAAK8E,CACd,EACA,MAAO,SAAW9E,EAAG8E,GACnB,OAAO9E,IAAM8E,CACf,EACA,MAAO,SAAW9E,EAAG8E,GACnB,OAAO9E,IAAM8E,CACf,EACA,IAAK,SAAW9E,EAAG8E,GACjB,OAAO9E,EAAI8E,CACb,EACA,IAAK,SAAW9E,EAAG8E,GACjB,OAAO9E,EAAI8E,CACb,EACA,IAAK,SAAW9E,EAAG8E,GACjB,OAAO9E,EAAI8E,CACb,EACA,KAAM,SAAW9E,EAAG8E,GAClB,OAAO9E,GAAK8E,CACd,EACA,KAAM,SAAW9E,EAAG8E,GAClB,OAAO9E,GAAK8E,CACd,EACA,MAAO,SAAW9E,EAAG8E,GACnB,OAAO9E,IAAM8E,CACf,GAEE0kT,GAAQ,CACV,IAAK,SAAWxpT,GACd,OAAQA,CACV,EACA,IAAK,SAAWA,GACd,OAAQA,CACV,EACA,IAAK,SAAWA,GACd,OAAQA,CACV,EACA,IAAK,SAAWA,GACd,OAAQA,CACV,GAEE,GAAQsiB,MAAMvgC,UAAU8mB,MACxB,GAAQ,SAAejR,EAAGrV,EAAMy7S,GAClC,IAAIpoR,EAAMooR,EAAOA,EAAKz7S,EAAK,IAAMA,EAAK,GACtC,OAAOqzB,EAAIhe,GAAG1U,MAAM0yB,EAAK,GAAMnyB,KAAKlB,EAAM,GAC5C,EAII,GAAY,CAEdwhB,MAAOD,OAAOC,MACdoe,SAAUre,OAAOqe,SACjBjgB,IAAKpG,KAAKoG,IACVJ,KAAMhG,KAAKgG,KACX5B,KAAMpE,KAAKoE,KACXqa,KAAMze,KAAKye,KACXpY,MAAOrG,KAAKqG,MACZ4lJ,KAAMjsJ,KAAKisJ,KACX/pJ,IAAKlC,KAAKkC,IACV2+B,IAAK7gC,KAAK6gC,IACVrpB,MAAOxX,KAAKwX,MACZioB,IAAKz/B,KAAKy/B,IACVv/B,IAAKF,KAAKE,IACVD,IAAKD,KAAKC,IACVyB,IAAK1B,KAAK0B,IACVqpC,OAAQ/qC,KAAK+qC,OACbviB,MAAOxoB,KAAKwoB,MACZpmB,IAAKpC,KAAKoC,IACVO,KAAM3C,KAAK2C,KACXiM,IAAK5O,KAAK4O,IACV+sB,MAAO,SAAez3B,EAAG8E,EAAGkC,GAC1B,OAAOlL,KAAKE,IAAI8I,EAAGhJ,KAAKC,IAAIiL,EAAGhH,GACjC,EAEApb,IAAKC,KAAKD,IACV4xO,IAAK3xO,KAAKmnN,IACVoyF,SA/Ba,SAAkBrxS,EAAG6K,EAAGgQ,EAAG4jM,EAAGC,EAAGC,EAAG+9G,GACjD,OAAO,IAAI5kU,KAAKkI,EAAG6K,GAAK,EAAQ,MAALgQ,EAAYA,EAAI,EAAG4jM,GAAK,EAAGC,GAAK,EAAGC,GAAK,EAAG+9G,GAAM,EAC9E,EA8BE7/P,KAAM,SAAchiD,GAClB,OAAO,IAAI/iB,KAAK+iB,GAAG2+L,SACrB,EACAiG,IAAK,SAAa5kM,GAChB,OAAO,IAAI/iB,KAAK+iB,GAAGk/L,QACrB,EACA/iJ,KAAM,SAAcn8C,GAClB,OAAO,IAAI/iB,KAAK+iB,GAAGsgM,aACrB,EACApkJ,MAAO,SAAel8C,GACpB,OAAO,IAAI/iB,KAAK+iB,GAAG+7G,UACrB,EACA27E,MAAO,SAAe13L,GACpB,OAAO,IAAI/iB,KAAK+iB,GAAGghM,UACrB,EACApJ,QAAS,SAAiB53L,GACxB,OAAO,IAAI/iB,KAAK+iB,GAAG+gM,YACrB,EACAjJ,QAAS,SAAiB93L,GACxB,OAAO,IAAI/iB,KAAK+iB,GAAG8gM,YACrB,EACA9I,aAAc,SAAsBh4L,GAClC,OAAO,IAAI/iB,KAAK+iB,GAAG6gM,iBACrB,EACA9iN,KAAM,SAAciiB,GAClB,OAAO,IAAI/iB,KAAK+iB,GAAGxd,SACrB,EACAi0S,eAAgB,SAAwBz2R,GACtC,OAAO,IAAI/iB,KAAK+iB,GAAG4+L,mBACrB,EACA83F,QAAS,SAAiB12R,GACxB,OAAO,IAAI/iB,KAAK+iB,GAAGm4L,YACrB,EACAw+F,OAAQ,SAAgB32R,GACtB,OAAO,IAAI/iB,KAAK+iB,GAAG2/L,WACrB,EACAi3F,QAAS,SAAiB52R,GACxB,OAAO,IAAI/iB,KAAK+iB,GAAGk4L,gBACrB,EACA2+F,SAAU,SAAkB72R,GAC1B,OAAO,IAAI/iB,KAAK+iB,GAAGi0L,aACrB,EACA6iG,SAAU,SAAkB92R,GAC1B,OAAO,IAAI/iB,KAAK+iB,GAAG23L,aACrB,EACAo/F,WAAY,SAAoB/2R,GAC9B,OAAO,IAAI/iB,KAAK+iB,GAAG63L,eACrB,EACAm/F,WAAY,SAAoBh3R,GAC9B,OAAO,IAAI/iB,KAAK+iB,GAAG+3L,eACrB,EACAk/F,gBAAiB,SAAyBj3R,GACxC,OAAO,IAAI/iB,KAAK+iB,GAAGi4L,oBACrB,EAEAn9M,OAAQ,SAAgBoK,GACtB,OAAOA,EAAEpK,MACX,EACAwoB,KAAM,WACJ,OAAO,GAAM,OAAQzoB,UACvB,EACAwiT,QAAS,WACP,OAAO,GAAM,UAAWxiT,UAC1B,EACA2iT,YAAa,WACX,OAAO,GAAM,cAAe3iT,UAC9B,EACAomB,MAAO,WACL,OAAO,GAAM,QAASpmB,UACxB,EACAgwB,QAAS,SAAiB3lB,GACxB,OAAOA,EAAE+b,QAAQ4J,SACnB,EAEAvF,WAAYA,WACZ6oB,SAAUA,SACV+oQ,MAAO,SAAehyS,GACpB,OAAO0a,OAAO1a,GAAG2b,aACnB,EACAs2R,MAAO,SAAejyS,GACpB,OAAO0a,OAAO1a,GAAG2T,aACnB,EACAqkB,UAAW,WACT,OAAO,GAAM,YAAariC,UAAW+kB,OACvC,EACA2D,MAAO,WACL,OAAO,GAAM,QAAS1oB,UAAW+kB,OACnC,EACAC,QAAS,WACP,OAAO,GAAM,UAAWhlB,UAAW+kB,OACrC,EACAkO,KAAM,SAAc5oB,GAClB,OAAO0a,OAAO1a,GAAG4oB,MACnB,EAEAy0C,OAAQxjD,OACRxf,KAAM,SAAc4Z,EAAGnb,GACrB,OAAO+gB,OAAO5F,GAAG5Z,KAAKvB,EACxB,GAEE8jU,GAAiB,CAAC,OAAQ,OAAQ,QAAS,KAAM,IAAK,KACtDC,GAAoB,IAAInhS,IAAI,CAACsiD,SAAU2pN,KAAMtvS,WAAYuB,cACjC,mBAAjBkjU,cAA6BD,GAAkBt2T,IAAIu2T,cAC9D,IAAIC,GAAW,CACbp0B,QAAS,SAAiBrkP,EAAG3gC,GAC3B,OAAOA,EAAEzsB,KACX,EACAowQ,WAAY,SAAoBhjN,EAAG3gC,GACjC,IAAIlb,EAAKkb,EAAE3sB,KACX,OAAOstD,EAAEquP,YAAc,EAAIlqS,EAAY,UAAPA,EAAiB67C,EAAE4oK,MAAe,UAAPzkN,EAAiB67C,EAAExkD,MAAe,SAAP2I,EAAgB67C,EAAE93C,KAAO,GAAU/D,IAAO67C,EAAEjuC,OAAO,IAAM5N,EACjJ,EACAygS,iBAAkB,SAA0B5kP,EAAG3gC,GAC7C,IAAI7I,GAAK6I,EAAE8qR,SACTt0R,EAAImqC,EAAE3gC,EAAE+V,QACN5e,IAAGwpC,EAAEquP,aAAe,GACxB,IAAIx/R,EAAImxC,EAAE3gC,EAAEosL,UAEZ,GADIj1L,IAAGwpC,EAAEquP,aAAe,IACpBkqB,GAAkBhmS,IAAI1c,EAAEhH,IAK5B,OAAOgH,EAAEhH,GAHP4mH,QAAQ53E,MAAM,uCAAwC75C,OAAO6K,EAAG,iDAIpE,EACA41R,eAAgB,SAAwBzkP,EAAG3gC,GACzC,IAAIluB,EAAOkuB,EAAEhuB,UACTqB,EAAO2sB,EAAE2lR,OAAOtyS,KASpB,OALIA,EAAKs/E,WAAW,OAClBt/E,EAAOA,EAAK+kB,MAAM,IAIJ,OAAT/kB,EAAgBstD,EAAE7uD,EAAK,IAAM6uD,EAAE7uD,EAAK,IAAM6uD,EAAE7uD,EAAK,KAAO6uD,EAAEl8C,GAAGpR,IAAS,GAAUA,IAAOZ,MAAMkuD,EAAEl8C,GAAI3S,EAAKswB,IAAIu+B,GACrH,EACAukP,gBAAiB,SAAyBvkP,EAAG3gC,GAC3C,OAAOA,EAAE+R,SAAS3P,IAAIu+B,EACxB,EACAwkP,iBAAkB,SAA0BxkP,EAAG3gC,GAC7C,OAAO84S,GAAI94S,EAAEyqR,UAAU9pP,EAAE3gC,EAAE5f,MAAOugD,EAAE3gC,EAAEjc,OACxC,EACA0hS,gBAAiB,SAAyB9kP,EAAG3gC,GAC3C,OAAO+4S,GAAM/4S,EAAEyqR,UAAU9pP,EAAE3gC,EAAE0gC,UAC/B,EACA2kP,sBAAuB,SAA+B1kP,EAAG3gC,GACvD,OAAO2gC,EAAE3gC,EAAEtpB,MAAQiqD,EAAE3gC,EAAE4lR,YAAcjlP,EAAE3gC,EAAE6lR,UAC3C,EACAP,kBAAmB,SAA2B3kP,EAAG3gC,GAC/C,MAAsB,OAAfA,EAAEyqR,SAAoB9pP,EAAE3gC,EAAE5f,OAASugD,EAAE3gC,EAAEjc,OAAS48C,EAAE3gC,EAAE5f,OAASugD,EAAE3gC,EAAEjc,MAC1E,EACAyhS,iBAAkB,SAA0B7kP,EAAG3gC,GAC7C,OAAOA,EAAE2yH,WAAW5vH,QAAO,SAAUvM,EAAGhH,GACtCmxC,EAAEquP,aAAe,EACjB,IAAIl3S,EAAI6oD,EAAEnxC,EAAEyiB,KAQZ,OAPA0uB,EAAEquP,aAAe,EACbkqB,GAAkBhmS,IAAIytB,EAAEnxC,EAAEjc,QAE5B6iI,QAAQ53E,MAAM,yCAA0C75C,OAAO7M,EAAG,kDAElE0e,EAAE1e,GAAK6oD,EAAEnxC,EAAEjc,OAENijB,CACT,GAAG,CAAC,EACN,GAEF,SAAS6iT,GAAUpqB,EAAKxqS,EAAIiO,EAAQ62M,EAAOptN,EAAO0M,GAChD,IAAI83C,EAAI,SAASA,EAAE3gC,GACjB,OAAOo5S,GAASp5S,EAAEjmB,MAAM4mD,EAAG3gC,EAC7B,EAeA,OAdA2gC,EAAEquP,YAAc,EAChBruP,EAAEl8C,GAAKmE,OAAO0wB,OAAO70B,GACrBk8C,EAAEjuC,OAASA,EACXiuC,EAAE4oK,MAAQA,EACV5oK,EAAExkD,MAAQA,EACVwkD,EAAE93C,KAAOA,EAGTowT,GAAez/T,SAAQ,SAAU/E,GAC/B,OAAOksD,EAAEl8C,GAAGhQ,GAAK,WACf,IAAI6kU,EACJ,OAAQA,EAAcn9T,EAAMogT,MAAM9nT,GAAGhC,MAAM6mU,EAAatnU,UAC1D,CACF,IACO2uD,EAAEsuP,EACX,CACA,IAAI,GAAa,CAIfxE,SAAU,SAAkB1zQ,EAAK+pM,GAC/B,IAAImuE,EAAMnuE,EAAKmuE,IACbxqS,EAAKsyB,EAAI43Q,UACX,OAAO,SAAU72Q,GACf,OAAOuhS,GAAUpqB,EAAKxqS,EAAIqzB,EAC5B,CACF,EAIA4gR,UAAW,SAAmB3hR,EAAK+pM,GACjC,IAAImuE,EAAMnuE,EAAKmuE,IACbxqS,EAAKsyB,EAAI43Q,UACX,OAAO,SAAUplF,EAAOzxL,GACtB,OAAOuhS,GAAUpqB,EAAKxqS,EAAIqzB,EAAGyxL,EAC/B,CACF,EAIAptN,MAAO,SAAe46B,EAAK+pM,GACzB,IAAImuE,EAAMnuE,EAAKmuE,IACbxqS,EAAKsyB,EAAI43Q,UACX,OAAO,SAAUxyS,GACf,OAAOk9T,GAAUpqB,EAAKxqS,OAAIojB,OAAWA,EAAW1rB,EAClD,CACF,EAIA04B,QAAS,SAAiBkC,EAAK+pM,GAC7B,IAAImuE,EAAMnuE,EAAKmuE,IACbxqS,EAAKsyB,EAAI43Q,UACX,OAAO,SAAU72Q,EAAG37B,GAClB,IAAIotN,EAAQptN,EAAM0M,MAAQ1M,EAAM0M,KAAK0gN,MACrC,OAAO8vG,GAAUpqB,EAAKxqS,EAAIqzB,EAAGyxL,EAAOptN,EACtC,CACF,EAIA4vN,OAAQ,SAAgBh1L,EAAK4hR,GAC3B,IAAIrnD,EAAWqnD,EAAQrnD,SACrB7qN,EAAWkyQ,EAAQlyQ,SACnBhiC,EAAKsyB,EAAI43Q,UACTj6E,EAAoB,UAAb48B,GAAqC,UAAbA,GAAqC,SAAbA,EACzD,OAAO,SAAUzoP,EAAMivB,GACrB,IAEEz0B,EAFEkmN,EAAQ1gN,EAAK0gN,MACbpiN,EAAI,EAER,IAAK,IAAI9T,KAAQozC,EACfpjC,EAAIg2T,GAAU5yR,EAASpzC,GAAM47S,IAAKxqS,EAAIqzB,EAAGyxL,OAAO1hM,EAAWhf,GACvDA,EAAKxV,KAAUgQ,IACjBwF,EAAKxV,GAAQgQ,EACb8D,EAAI,GAMR,MAHiB,SAAbmqP,GApZV,SAAuBzoP,EAAMkjN,EAAQ2I,GACnC,IAAIv/N,EACA42N,EAAOr4M,KACLq4M,EAAO1vN,GACLq4N,GAAQ7rN,EAAKxM,EAAIwM,EAAK6K,KACxBve,EAAI0T,EAAKxM,EACTwM,EAAKxM,EAAIwM,EAAK6K,GACd7K,EAAK6K,GAAKve,GAEZ0T,EAAK1J,MAAQ0J,EAAK6K,GAAK7K,EAAKxM,GAE5BwM,EAAKxM,EAAIwM,EAAK6K,IAAM7K,EAAK1J,OAAS,IAGlC4sN,EAAOy6B,KACT39O,EAAKxM,EAAIwM,EAAK29O,IAAM39O,EAAK1J,OAAS,GAAK,GAErC4sN,EAAOp4M,KACLo4M,EAAOzvN,GACLo4N,GAAQ7rN,EAAKvM,EAAIuM,EAAK8K,KACxBxe,EAAI0T,EAAKvM,EACTuM,EAAKvM,EAAIuM,EAAK8K,GACd9K,EAAK8K,GAAKxe,GAEZ0T,EAAKzJ,OAASyJ,EAAK8K,GAAK9K,EAAKvM,GAE7BuM,EAAKvM,EAAIuM,EAAK8K,IAAM9K,EAAKzJ,QAAU,IAGnC2sN,EAAO06B,KACT59O,EAAKvM,EAAIuM,EAAK49O,IAAM59O,EAAKzJ,QAAU,GAAK,EAE5C,CAqXQ,CAAcyJ,EAAM49B,EAAUiuL,GAEzBvtN,CACT,CACF,uECzZF,SAAS,GAA2BqP,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,GAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,GAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,GAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAC3K,SAASivG,GAAYl7Q,GAC1B,QAASA,EAAG60Q,EACd,CACO,SAASsG,GAAan7Q,GAC3B,QAASA,EAAGo7Q,GACd,CACO,SAASC,GAAar7Q,GAC3B,QAASA,EAAGs7Q,GACd,CACO,SAASC,GAAYv7Q,EAAI55C,GAC9B,GAAIi1T,GAAar7Q,GACfu7Q,GAAYv7Q,EAAGs7Q,IAAKl1T,QACf,GAAI+0T,GAAan7Q,GAAK,CAC3B,IACEsxK,EADEC,EAAY,GAA2BvxK,EAAGo7Q,KAE9C,IACE,IAAK7pG,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAElDkwR,GADYjqG,EAAMp8N,MACCkR,EACrB,CACF,CAAE,MAAOm0B,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACF,MAAO,GAAI8kU,GAAYl7Q,GAAK,CAC1B,IACEg2K,EADEC,EAAa,GAA2Bj2K,EAAG60Q,IAE/C,IACE,IAAK5+F,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,CAErDkwR,GADavlG,EAAO9gO,MACAkR,EACtB,CACF,CAAE,MAAOm0B,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACF,MACEgQ,EAAG45C,EAEP,CACO,SAASw7Q,GAA4Bx7Q,EAAIy7Q,GAC9C,OAAIJ,GAAar7Q,GACR,CACLs7Q,IAAKE,GAA4Bx7Q,EAAGs7Q,IAAKG,IAElCN,GAAan7Q,GACf,CACLo7Q,IAAKp7Q,EAAGo7Q,IAAIr3S,KAAI,SAAU5L,GACxB,OAAOqjT,GAA4BrjT,EAAGsjT,EACxC,KAEOP,GAAYl7Q,GACd,CACL60Q,GAAI70Q,EAAG60Q,GAAG9wS,KAAI,SAAU5L,GACtB,OAAOqjT,GAA4BrjT,EAAGsjT,EACxC,KAGKA,EAAWz7Q,EAEtB,CC9DA,SAAS,GAAQtoB,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CAEpV,SAAS,GAA2Bxb,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,GAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,GAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,GAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAM3K,IAAIyvG,GAAY,KACZC,GAAY,KAChB,SAASC,GAAMttN,GACpB,MAAM,IAAItzE,MAAMszE,EAClB,CASO,SAAS,GAAKxnF,EAAK1c,GACxB,IAEEknN,EAFEv2L,EAAO,CAAC,EACRw2L,EAAY,GAA2BnnN,GAE3C,IACE,IAAKmnN,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIpzC,EAAOq5N,EAAMp8N,MACb,GAAe4xB,EAAK7uB,KACtB8iC,EAAK9iC,GAAQ6uB,EAAI7uB,GAErB,CACF,CAAE,MAAOsiC,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACA,OAAO2kC,CACT,CAMO,SAAS,GAAKjU,EAAK1c,GACxB,IAEE4rN,EAFEj7L,EA9CN,SAAuBt/B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,GAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,GAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CA8C5e,CAAc,CAAC,EAAGqrB,GACzBmvM,EAAa,GAA2B7rN,GAE5C,IACE,IAAK6rN,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,QAE9CtQ,EADIi7L,EAAO9gO,MAEpB,CACF,CAAE,MAAOqlC,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACA,OAAO2kC,CACT,CAIArB,IAAIzmC,UAAkB,OAAI,WACxB,MAAO,OAAOqT,QAAO,QAAmBvT,MAAMgxB,KAAI,SAAU/lB,GAC1D,OAAO,KAAgBA,EACzB,IAAGoe,KAAK,KAAM,IAChB,EAIO,IAAI,GAAY,KAIhB,SAAS,GAAKlL,GACnB,GAAIwoC,GAASxoC,GACX,OAAOA,EAET,IAAIujB,EAAM,GAASvjB,GAAKA,EAAI,KAAgBA,GAE5C,GAAIujB,EAAI7gC,OAAS,IACf,OAAO6gC,EAIT,IADA,IAAIrc,EAAI,EACCnkB,EAAI,EAAGA,EAAIwgC,EAAI7gC,OAAQK,IAAK,CAEnCmkB,GAAKA,GAAK,GAAKA,EADJqc,EAAI+xK,WAAWvyM,GAE1BmkB,GAAQA,CACV,CAEA,OAAOA,CACT,CACO,SAASyjT,GAAc79T,GAC5B,OAAa,IAANA,GAAqB,OAANA,CACxB,CACO,SAAS,GAASs3B,EAAO9qB,GAC9B,OAAO8qB,EAAMp9B,SAASsS,EACxB,CAIO,SAASijD,GAAKjkD,EAAKpT,GACxB,IAEE4jO,EAFE/lO,EAAI,EACJgmO,EAAa,GAA2BzwN,EAAIqlD,WAEhD,IACE,IAAKorK,EAAWppN,MAAOmpN,EAASC,EAAWt4M,KAAK0pB,MAAO,CACrD,IAAIywR,GAAe,OAAe9hG,EAAO9kO,MAAO,GAC9CuE,EAAIqiU,EAAa,GAEnB,GAAI1lU,EADE0lU,EAAa,GACVriU,EAAGxF,KACV,OAAO,CAEX,CACF,CAAE,MAAOsmC,GACP0/L,EAAWhjO,EAAEsjC,EACf,CAAE,QACA0/L,EAAW7jO,GACb,CACA,OAAO,CACT,CAIO,SAASmlI,GAAM/xH,EAAKpT,GACzB,IAEE8jO,EAFEjmO,EAAI,EACJkmO,EAAa,GAA2B3wN,EAAIqlD,WAEhD,IACE,IAAKsrK,EAAWtpN,MAAOqpN,EAASC,EAAWx4M,KAAK0pB,MAAO,CACrD,IAAI0wR,GAAe,OAAe7hG,EAAOhlO,MAAO,GAC9CuE,EAAIsiU,EAAa,GAEnB,IAAK3lU,EADC2lU,EAAa,GACTtiU,EAAGxF,KACX,OAAO,CAEX,CACF,CAAE,MAAOsmC,GACP4/L,EAAWljO,EAAEsjC,EACf,CAAE,QACA4/L,EAAW/jO,GACb,CACA,OAAO,CACT,CAIO,SAAS4lU,GAAUC,GACxB,IAAK,IAAI3/Q,EAAO3oD,UAAUC,OAAQsjC,EAAM,IAAI1D,MAAM8oB,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IACjGrlB,EAAIqlB,EAAO,GAAK5oD,UAAU4oD,GAE5B,IAAK,IAAI7oD,EAAK,EAAGwoU,EAAOhlS,EAAKxjC,EAAKwoU,EAAKtoU,OAAQF,IAAM,CACnD,IAAImd,EAAIqrT,EAAKxoU,GACbyoU,GAAWF,EAAMprT,QAA6BA,EAAI,CAAC,EACrD,CACA,OAAOorT,CACT,CACA,SAASE,GAAWF,EAAM/kS,GACxB,IACEkjM,EADEC,EAAa,GAA2B,GAAKnjM,IAEjD,IACE,IAAKmjM,EAAWxpN,MAAOupN,EAASC,EAAW14M,KAAK0pB,MAAO,CACrD,IAAI0iK,EAAWqsB,EAAOllO,MACtBq2M,GAAY0wH,EAAMluH,EAAU72K,EAAI62K,IAAW,EAC7C,CACF,CAAE,MAAOxzK,GACP8/L,EAAWpjO,EAAEsjC,EACf,CAAE,QACA8/L,EAAWjkO,GACb,CACF,CACO,SAASg/B,GAAO7B,EAAQn9B,GAC7B,IAEI4O,EAEFo3T,EAJEtoM,EAAU,GACVv7G,EAAI,CAAC,EAEL8jT,EAAa,GAA2B9oS,GAE5C,IACE,IAAK8oS,EAAWxrT,MAAOurT,EAASC,EAAW16S,KAAK0pB,MAAO,CACrD,IAAIjzC,EAAMgkU,EAAOlnU,OACjB8P,EAAI5O,EAAEgC,MACGmgB,IAGTA,EAAEvT,GAAK,EACP8uH,EAAQxgI,KAAK8E,GACf,CACF,CAAE,MAAOmiC,GACP8hS,EAAWplU,EAAEsjC,EACf,CAAE,QACA8hS,EAAWjmU,GACb,CACA,OAAO09H,CACT,CAIO,SAAS,GAAQwoM,EAAMhlS,GAC5B,IAAIilS,EAAW,GAAKD,GAChB9kS,EAAY,GAAKF,GACrB,GAAIilS,EAAS3oU,SAAW4jC,EAAU5jC,OAChC,OAAO,EAET,IACE4oU,EADEC,EAAa,GAA2BF,GAE5C,IACE,IAAKE,EAAW5rT,MAAO2rT,EAASC,EAAW96S,KAAK0pB,MAAO,CACrD,IAAIzX,EAAM4oS,EAAOtnU,MACjB,GAAIonU,EAAK1oS,KAAS0D,EAAM1D,GACtB,OAAO,CAEX,CACF,CAAE,MAAO2G,GACPkiS,EAAWxlU,EAAEsjC,EACf,CAAE,QACAkiS,EAAWrmU,GACb,CACA,OAAO,CACT,CACO,SAASsmU,GAASxrT,EAAG8E,GAC1B,GAAI9E,EAAEmmB,OAASrhB,EAAEqhB,KACf,OAAO,EAET,IACEslS,EADEC,EAAa,GAA2B1rT,GAE5C,IACE,IAAK0rT,EAAW/rT,MAAO8rT,EAASC,EAAWj7S,KAAK0pB,MAAO,CACrD,IAAIp0C,EAAI0lU,EAAOznU,MACf,IAAK8gB,EAAE6e,IAAI59B,GACT,OAAO,CAEX,CACF,CAAE,MAAOsjC,GACPqiS,EAAW3lU,EAAEsjC,EACf,CAAE,QACAqiS,EAAWxmU,GACb,CACA,OAAO,CACT,CACO,SAASymU,GAAgB3rT,EAAG8E,GACjC,IACE8mT,EADEC,EAAa,GAA2B7rT,GAE5C,IACE,IAAK6rT,EAAWlsT,MAAOisT,EAASC,EAAWp7S,KAAK0pB,MAAO,CACrD,IAAIzX,EAAMkpS,EAAO5nU,MACjB,GAAI8gB,EAAE6e,IAAIjB,GACR,OAAO,CAEX,CACF,CAAE,MAAO2G,GACPwiS,EAAW9lU,EAAEsjC,EACf,CAAE,QACAwiS,EAAW3mU,GACb,CACA,OAAO,CACT,CACO,SAAS4mU,GAAgB9rT,GAC9B,IAEE+rT,EAFExnH,EAAW,IAAI/7K,IACfwjS,EAAc,GAA2BhsT,GAE7C,IACE,IAAIslI,EAAQ,WACV,IAUE2mL,EAPEC,EAFazyH,GADTsyH,EAAQ/nU,OAGsB6uB,KAAI,SAAU9lB,EAAGhK,GACrD,OAAa,IAANA,EAAUgK,EAAI,IAAIqI,OAAOrI,EAAG,IACrC,IACIo/T,EAAmBD,EAAqBr5S,KAAI,SAAU0V,EAAGxlC,GAC3D,OAAOmpU,EAAqBrjT,MAAM,EAAG9lB,EAAI,GAAGmoB,KAAK,GACnD,IACIkhT,EAAc,GAA2BD,GAE7C,IACE,IAAKC,EAAYzsT,MAAOssT,EAAUG,EAAY37S,KAAK0pB,MAAO,CACxD,IAAIptC,EAAIk/T,EAAQjoU,MAChBugN,EAASlxM,IAAItG,EACf,CACF,CAAE,MAAOs8B,GACP+iS,EAAYrmU,EAAEsjC,EAChB,CAAE,QACA+iS,EAAYlnU,GACd,CACF,EACA,IAAK8mU,EAAYrsT,MAAOosT,EAAUC,EAAYv7S,KAAK0pB,MACjDmrG,GAEJ,CAAE,MAAOj8G,GACP2iS,EAAYjmU,EAAEsjC,EAChB,CAAE,QACA2iS,EAAY9mU,GACd,CACA,OAAOq/M,CACT,CAKO,SAAS8nH,GAAkBrsT,EAAG8E,GACnC,YAAUwT,IAANtY,QAAyBsY,IAANxT,GAGhB6mT,GAAgBG,GAAgB9rT,GAAI8rT,GAAgBhnT,GAC7D,CAEO,SAASwnT,GAAQ12S,GACtB,OAA4B,IAArB,GAAKA,GAAKlzB,MACnB,CAEO,IAAI,GAAO2W,OAAOopB,KACd4rM,GAAOh1N,OAAOgpB,OACds7B,GAAUtkD,OAAOskD,QACrB,SAAS,GAAU74C,GACxB,OAAa,IAANA,IAAoB,IAANA,CACvB,CAIO,SAASynT,GAAQ5sT,GAEtB,IAAI6sT,EAAgB7sT,EAAE8H,QAAQ,MAAO,KAErC,OAAQ9H,EAAEmd,MAAM,QAAU,IAAM,IAAM0vS,CACxC,CACO,SAASC,GAAY39Q,EAAIpU,GAC9B,OAAIyvR,GAAar7Q,GACR,KAAK15C,OAAOq3T,GAAY39Q,EAAGs7Q,IAAK1vR,GAAK,KACnCuvR,GAAan7Q,GACf,IAAI15C,OAAO05C,EAAGo7Q,IAAIr3S,KAAI,SAAUq3S,GACrC,OAAOuC,GAAYvC,EAAKxvR,EAC1B,IAAGxvB,KAAK,UAAW,KACV8+S,GAAYl7Q,GACd,IAAI15C,OAAO05C,EAAG60Q,GAAG9wS,KAAI,SAAU8wS,GACpC,OAAO8I,GAAY9I,EAAIjpR,EACzB,IAAGxvB,KAAK,UAAW,KAEZwvB,EAAGoU,EAEd,CAIO,SAAS49Q,GAAqB92S,EAAK+2S,GACxC,GAA4B,IAAxBA,EAAajqU,OACf,OAAO,EAET,IAAIqE,EAAO4lU,EAAalgT,QAIxB,OAHI1lB,KAAQ6uB,GAAO82S,GAAqB92S,EAAI7uB,GAAO4lU,WAC1C/2S,EAAI7uB,GAENulU,GAAQ12S,EACjB,CACO,SAASg3S,GAAUjtT,GACxB,OAAOA,EAAEqd,OAAO,GAAGvU,cAAgB9I,EAAEsd,OAAO,EAC9C,CAMO,SAAS4vS,GAAoBnkU,GAIlC,IAHA,IAAIsxN,EAAQv3N,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,QAC5EqqU,EAASrzH,GAAgB/wM,GACzB67M,EAAW,GACNxhN,EAAI,EAAGA,GAAK+pU,EAAOpqU,OAAQK,IAAK,CACvC,IAAIwkC,EAAS,IAAInyB,OAAO03T,EAAOjkT,MAAM,EAAG9lB,GAAG8vB,IAAI,IAAa3H,KAAK,MAAO,KACxEq5L,EAASniN,KAAK,GAAGgT,OAAO4kN,GAAO5kN,OAAOmyB,GACxC,CACA,OAAOg9K,EAASr5L,KAAK,OACvB,CAOO,SAAS6hT,GAAoBrkU,GAElC,MAAO,GAAG0M,OADE3S,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,QACxD,KAAK2S,OAAO,GAAYqkM,GAAgB/wM,GAAMwiB,KAAK,MAAO,IACpF,CACA,SAAS8hT,GAAiB5kR,GACxB,OAAOA,EAAO3gC,QAAQ,kBAAmB,OAC3C,CAKO,SAASwlT,GAAmBvkU,GACjC,MAAO,GAAG0M,OAAOqkM,GAAgB/wM,GAAMmqB,IAAIm6S,IAAkB9hT,KAAK,OACpE,CAQO,SAAS+nC,GAAW7K,EAAQ/yC,EAAMw6C,GACvC,OAAOzH,EAAO3gC,QAAQ,IAAId,OAAOtR,EAAKoS,QAAQ,wBAAyB,QAAS,KAAMooC,EACxF,CAKO,SAASq9Q,GAAoBxkU,GAClC,MAAO,GAAG0M,OAAOqkM,GAAgB/wM,GAAMwiB,KAAK,KAC9C,CAIO,SAASiiT,GAAgBzkU,GAC9B,OAAKA,EAGE+wM,GAAgB/wM,GAAMhG,OAFpB,CAGX,CAIO,SAAS0qU,KACd,IAAK,IAAItlO,EAAQrlG,UAAUC,OAAQH,EAAO,IAAI+/B,MAAMwlE,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFxlG,EAAKwlG,GAAStlG,UAAUslG,GAE1B,IAAK,IAAIu7G,EAAM,EAAG+pH,EAAQ9qU,EAAM+gN,EAAM+pH,EAAM3qU,OAAQ4gN,IAAO,CACzD,IAAIjlK,EAAMgvR,EAAM/pH,GAChB,QAAYhrL,IAAR+lB,EACF,OAAOA,CAEX,CAEF,CAEA,IAAIivR,GAAY,GAMT,SAASC,GAAShmS,GACvB,IAAIhyB,IAAO+3T,GACX,OAAO/lS,EAAS/f,OAAO+f,GAAUhyB,EAAKA,CACxC,CAIO,SAASi4T,KACdF,GAAY,EACd,CACO,SAASG,GAAc3pU,GAC5B,OAAO4pU,GAAgB5pU,GAAQA,EAAO,KAAKsR,OAAOtR,EACpD,CACO,SAAS4pU,GAAgB5pU,GAC9B,OAAOA,EAAKs/E,WAAW,KACzB,CAIO,SAASuqP,GAAepkT,GAC7B,QAAc+O,IAAV/O,EAGJ,OAAQA,EAAQ,IAAM,KAAO,GAC/B,CAIO,SAASqkT,GAAU5pU,GACxB,QAAIwkD,GAASxkD,KAGL+f,MAAM/f,KAAW+f,MAAMmJ,WAAWlpB,GAC5C,CC5dA,SAAS,GAAQwiC,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,GAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,GAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,GAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAOlf,IAAIsjU,GAAM,MACNC,GAAS,SACTC,GAAQ,QAER,GAAI,IACJ,GAAI,IACJ,GAAK,KACL,GAAK,KAELC,GAAU,UACVC,GAAU,UAEVC,GAAS,SACTC,GAAU,UACVC,GAAQ,QACRC,IAAS,SAETC,IAAW,WACXC,IAAY,YACZC,IAAY,YACZC,IAAa,aAEbC,IAAQ,QACRC,IAAO,OACPC,IAAS,SACTC,IAAQ,QACR,IAAO,OACPC,IAAQ,QACRC,IAAU,UACVC,IAAc,cACdC,IAAgB,gBAChBC,IAAc,cACdC,IAAa,aAEbC,IAAO,OACPC,IAAQ,QACRC,IAAS,SACTC,IAAM,MACNC,IAAU,UACVC,IAAO,OACP,IAAM,MACNC,IAAc,cAOrBC,IAA+B,CACjCnwS,MAAO,EACPi4P,OAAQ,EACR5nN,OAAQ,EACR+/P,QAAS,GAEJ,SAASC,IAAuB7oT,GACrC,OAAOA,KAAK2oT,GACd,CACA,IAAIG,IAA6B,CAC/BjsD,UAAW,EACXksD,WAAY,EACZC,SAAU,EACVC,UAAW,GAEN,SAASC,IAA8B56K,GAC5C,OAAQA,GACN,KAAKg5K,IACH,MAAO,IACT,KAAKE,IACH,MAAO,KACT,KAAKD,IACH,MAAO,IACT,KAAKE,IACH,MAAO,KAEb,CACO,SAAS0B,IAAqBnpT,GACnC,OAAOA,KAAK8oT,GACd,CACO,IAAIM,IAAuB,GAAKN,KACnCO,IAAqB,GAAc,GAAc,GAAc,GAAc,CAAC,EArCrD,CAC3BvjU,EAAG,EACHC,EAAG,EACHoX,GAAI,EACJC,GAAI,IAiCwGurT,KAA+BG,KAA6B,CAAC,EAAG,CAC5KltE,QAAS,EACTC,QAAS,EAETjtN,MAAO,EACP6H,KAAM,EACNz6B,OAAQ,EAERxM,QAAS,EACTkvE,YAAa,EACb01K,cAAe,EACfpnM,YAAa,EACbmrM,WAAY,EACZh5N,KAAM,EACN5c,MAAO,EACPjiB,MAAO,EAEP63C,MAAO,EACPz8B,KAAM,EACNyvJ,OAAQ,EACRzvI,IAAK,EACLkkO,QAAS,EACTzlL,KAAM,EACN3lB,IAAK,EACLqN,YAAa,IAER,SAASynQ,IAAeh7K,GAC7B,OAAOA,IAAYo5K,KAASp5K,IAAYq5K,KAAQr5K,IAAYs5K,GAC9D,CACA,IAAI2B,IAAsB,CACxBtsS,IAAK,EACLo/G,OAAQ,EACRk5K,MAAO,GAEEiU,IAAiB,GAAKD,KAC7BE,IAAgB,GAAc,GAAc,CAAC,EAAGJ,KAAqBE,KAC9DG,IAAW,GAAKD,KAIzBE,KAHOF,IAActxR,MAChBsxR,IAAct+J,OACZs+J,IAAc7pE,SACM,OAAyB6pE,IAAe,CAAC,QAAS,SAAU,aAIvFG,KAHOD,IAAyB1sS,IAC3B0sS,IAAyBttL,OACzBstL,IAAyBpU,OACE,OAAyBoU,IAA0B,CAAC,MAAO,SAAU,WAStE,GAAKA,KACA,GAAKC,KACpC,SAASC,IAAuBttS,GACrC,QAASqtS,IAA8BrtS,EACzC,CACO,SAASutS,IAAUvtS,GACxB,QAASktS,IAAcltS,EACzB,CACO,IAAIwtS,IAA0B,CAAC,GAAI,GAAIvC,IAAWC,IAAYJ,IAAQF,IACtE,SAAS6C,IAAwBhqT,GAEtC,OADWiqT,IAAoBjqT,KACfA,CAClB,CAIO,SAASiqT,IAAoB37K,GAClC,OAAQA,GACN,KAAK,GACH,OAAO,GACT,KAAK,GACH,OAAO,GACT,KAAKk5K,IACH,OAAOF,IACT,KAAKG,IACH,OAAOF,IACT,KAAKF,IACH,OAAOD,GACT,KAAKD,GACH,OAAOD,GAEX,OAAO54K,CACT,CACO,SAAS47K,IAAqB57K,GACnC,GAAIu6K,IAAuBv6K,GACzB,OAAQA,GACN,KAAK84K,GACH,MAAO,aACT,KAAKC,IACH,MAAO,WACT,KAAKH,GACH,MAAO,cACT,KAAKC,GACH,MAAO,cAGb,OAAO74K,CACT,CAIO,SAAS67K,IAAyB77K,GACvC,OAAQA,GACN,KAAK,GACH,OAAO,GACT,KAAK,GACH,OAAO,GACT,KAAKg5K,IACH,OAAOE,IACT,KAAKD,IACH,OAAOE,IACT,KAAKL,GACH,OAAOC,IACT,KAAKH,GACH,OAAOC,GAGb,CACO,SAASiD,IAAe97K,GAC7B,OAAQA,GACN,KAAK,GACL,KAAK,GACH,MAAO,QACT,KAAK,GACL,KAAK,GACH,MAAO,SAGb,CAIO,SAAS+7K,IAAiB/7K,GAC/B,OAAQA,GACN,KAAK,GACH,MAAO,UACT,KAAK,GACH,MAAO,UACT,KAAK,GACH,MAAO,WACT,KAAK,GACH,MAAO,WACT,KAAK84K,GACH,MAAO,cACT,KAAKF,GACH,MAAO,eACT,KAAKG,IACH,MAAO,eACT,KAAKF,GACH,MAAO,gBAGb,CAIO,SAASmD,IAAsBh8K,GACpC,OAAQA,GACN,KAAK,GACH,MAAO,UACT,KAAK,GACH,MAAO,UAGb,CACO,SAASi8K,IAAgCj8K,GAC9C,OAAQA,GACN,IAAK,UACH,MAAO,IACT,IAAK,UACH,MAAO,IAEb,CAEO,IAAIk8K,IAAgB,GAAKnB,KAgB9BoB,KAdOpB,IAAmBvjU,EACrBujU,IAAmBtjU,EAClBsjU,IAAmBlsT,GACnBksT,IAAmBjsT,GACnBisT,IAAmBztE,QACnBytE,IAAmBxtE,QACbwtE,IAAmBL,SAClBK,IAAmBxsD,UACnBwsD,IAAmBJ,UAClBI,IAAmBN,WACxBM,IAAmB7wS,MAClB6wS,IAAmB54C,OACnB44C,IAAmBxgQ,OAClBwgQ,IAAmBT,SACF,OAAyBS,IAAoB,CAAC,IAAK,IAAK,KAAM,KAAM,UAAW,UAAW,WAAY,YAAa,YAAa,aAAc,QAAS,SAAU,SAAU,aAC9LqB,IAAuB,GAAKD,KACnCE,IAA+B,CACjC7kU,EAAG,EACHC,EAAG,GAEM6kU,IAA0B,GAAKD,KACnC,SAASE,IAAOv8K,GACrB,OAAOA,KAAWq8K,GACpB,CACO,IAAIG,IAAqC,CAC9CtyS,MAAO,EACPqwC,OAAQ,GAECkiQ,IAAgC,GAAKD,KACzC,SAASE,IAAwBC,GACtC,MAAoB,UAAbA,EAAuB,GAAI,EACpC,CACA,IAAIC,IAA6B,CAC/BtvE,QAAS,EACTC,QAAS,GAEwB,GAAKqvE,KACjC,SAASC,IAAa78K,GAC3B,OAAOA,KAAW48K,GACpB,CAEST,IAA0B/uT,KAC3B+uT,IAA0B7qE,QAC1B6qE,IAA0BtwP,KAC3BswP,IAA0Bj2Q,IACzBi2Q,IAA0B5oQ,YAC1B4oQ,IAA0Bt/J,OAC3Bs/J,IAA0B/uS,IACzB+uS,IAA0BtyR,MAPlC,IAQEizR,KAAkC,OAAyBX,IAA2B,CAAC,OAAQ,UAAW,OAAQ,MAAO,cAAe,SAAU,MAAO,UAChJY,IAA6B,GAAKD,KAyB7C,IAAIE,IAAsB,GAAc,GAAc,GAAc,GAAc,CAAC,EAAGX,KAA+BG,KAAqCI,KAA6BE,KAE5KG,IAAiB,GAAKD,KAC1B,SAASE,IAAel9K,GAC7B,QAASg9K,IAAoBh9K,EAC/B,CAOO,SAASm9K,IAAYn9K,EAASh9F,GACnC,OA0BF,SAA0Bg9F,GACxB,OAAQA,GACN,KAAKo5K,IACL,KAAKC,IACL,KAAKC,IAEL,KAAKc,IACL,KAAKJ,IACL,KAAKC,IACL,KAAKC,IACL,KAAKC,IACL,KAAKJ,IACL,KAAKN,IACL,KAAKC,IACL,KAAKC,IACL,KAAKC,IAEL,KAAKnB,GACL,KAAKF,GACL,KAAKC,GACH,OAAO4E,IACT,KAAK,GACL,KAAK,GACL,KAAK1E,GACL,KAAKC,GACL,KAAKK,IACL,KAAKC,IAEH,OAAOoE,IACT,KAAK,GACL,KAAK,GACL,KAAKnE,IACL,KAAKC,IACH,MAAO,CACLhkR,KAAM,SACNmoR,IAAK,SACLloN,MAAO,SACProG,KAAM,SACN2gH,KAAM,SACN1gH,OAAQ,SACRzV,MAAO,SACPm6T,OAAQ,SACRhxC,KAAM,SACNj+P,KAAM,SACN6gO,MAAO,UAEX,KAAK,IACH,MAAO,CACL/rP,MAAO,SACPmpR,KAAM,SACNhzJ,KAAM,SACN1gH,OAAQ,SACR0kT,OAAQ,SACR4L,IAAK,SACLlwT,KAAM,SACNqV,KAAM,SACN6gO,MAAO,UAEX,KAAKu2E,IACH,MAAO,CACLp3S,KAAM,SACNlrB,MAAO,SACPmpR,KAAM,SACNhzJ,KAAM,SACN1gH,OAAQ,SACR0kT,OAAQ,SACR4L,IAAK,SACLC,SAAU,UAEd,KAAKhE,IACH,MAAO,CACLhiU,MAAO,SACPgmU,SAAU,UAEd,KAAKzD,IACH,MAAO,CACL1sT,KAAM,UAEV,KAAKosT,IACH,MAAO,CACLjiU,MAAO,SACPm6T,OAAQ,SACRtkT,KAAM,UAEV,KAAK,IACH,MAAO,CACLgoG,MAAO,UAEX,KAAK0jN,GAKL,KAAKF,GACH,MAAO,CACLxrT,KAAM,SACN6+L,IAAK,UAET,KAAK8sH,IACL,KAAKF,GACH,MAAO,CACL5sH,IAAK,UAGb,CAlISuxH,CAAiBx9K,GAASh9F,EACnC,CACA,IAAIo6Q,IAAY,CAEdnxH,IAAK,SACL92J,KAAM,SACNmoR,IAAK,SACLtwT,OAAQ,SACRuwT,SAAU,SACVnoN,MAAO,SACP3yF,KAAM,SACNirG,KAAM,SACNn2H,MAAO,SACPwV,KAAM,SACN2kT,OAAQ,SACRpuE,MAAO,SACPl2O,KAAM,SACNszQ,KAAM,UAGN28C,KADOD,IAAUG,UACW,OAAyBH,IAAW,CAAC,cA+G5D,SAASK,IAAUz9K,GACxB,OAAQA,GACN,KAAK,GACL,KAAK,GACL,KAAK84K,GACL,KAAKF,GACL,KAAKF,GACL,KAAKC,GACL,KAAK,IACL,KAAKa,IACL,KAAKI,IACL,KAAKH,IACL,KAAKC,IACL,KAAKC,IAEL,KAAK,GACL,KAAK,GACL,KAAKZ,IACL,KAAKF,GACH,OACF,KAAKJ,GACL,KAAKF,GACL,KAAKC,GACL,KAAKe,IACL,KAAKM,IAEL,KAAKC,IACL,KAAKI,IACL,KAAKC,IACL,KAAK,IACL,KAAKC,IACH,MAAO,WAET,KAAKhB,IACL,KAAKC,IACL,KAAKC,IACH,MAAO,WAET,KAAKN,IACL,KAAKC,IACL,KAAKC,IACL,KAAKC,IACL,KAAKa,IACL,KAAKC,IACL,KAAKF,IACH,OAEN,CCphBA,IAAI2D,IAAqB,CACvBjnG,OAAQ,EACRD,OAAQ,EACRZ,QAAS,EACTv4M,MAAO,EACP64M,SAAU,EACVhqL,QAAS,EACTxlC,IAAK,EACL2pN,KAAM,EACN5oL,OAAQ,EACRhhC,IAAK,EACLivN,QAAS,EACTY,GAAI,EACJC,GAAI,EACJJ,IAAK,EACLC,IAAK,EACLH,OAAQ,EACRpE,MAAO,EACPmE,OAAQ,EACRr9M,IAAK,EACL8+E,MAAO,EACP1qE,OAAQ,EACRujM,SAAU,EACVyF,UAAW,GAEF4nG,IAA4B,CACrCtgT,MAAO,EACP5W,IAAK,EACLC,IAAK,GAEA,SAASk3T,IAAYlzT,GAC1B,QAASA,KAAOA,EAAU,MAC5B,CACO,SAASmzT,IAAYnzT,GAC1B,QAASA,KAAOA,EAAU,MAC5B,CACO,SAASozT,IAAcpzT,GAC5B,OAAO,GAASA,MAAQgzT,IAAmBhzT,EAC7C,CACO,IAAIqzT,IAAe,IAAI7qS,IAAI,CAAC,QAAS,QAAS,UAAW,aACzD,SAAS8qS,IAAsBjV,GACpC,OAAO,GAASA,IAAcgV,IAAa1vS,IAAI06R,EACjD,CAKO,IAAIkV,IAAU,IAAI/qS,IAAI,CAAC,QAAS,MAAO,WAAY,QAAS,YAIxDgrS,IAAoB,IAAIhrS,IAAI,CAAC,OAAQ,UAAW,SAAU,KAAM,KAAM,MAAO,QC9CjF,SAASirS,IAAYzlH,GAI1B,OAHIzQ,GAAUyQ,KACZA,EAAM0lH,IAAa1lH,OAAK11L,IAEnB,MAAQ,GAAK01L,GAAKn7L,KAAI,SAAU5S,GACrC,OAAO0zT,IAAkB3lH,EAAI/tM,IAAMssT,GAAQ,IAAIn3T,OAAO6K,EAAG,KAAK7K,OAAOuoD,GAAQqwJ,EAAI/tM,MAAQssT,GAAQ,IAAIn3T,OAAO6K,EAAG,KAAK7K,OAAO44M,EAAI/tM,IACjI,IAAGiL,KAAK,GACV,CAIO,SAAS0oT,IAAU5lH,GACxB,OAAe,IAARA,GAAgB6lH,IAAY7lH,KAASA,EAAI8lH,MAClD,CAIO,SAASC,IAAS/lH,GACvB,MAAe,WAARA,GAAoB6lH,IAAY7lH,KAAuB,IAAfA,EAAI8lH,MACrD,CACO,SAASD,IAAY7lH,GAC1B,OAAOh+J,GAASg+J,EAClB,CACO,SAAS2lH,IAAkBzlH,GAChC,OAAOA,aAAuC,EAASA,EAAc,KACvE,CACO,SAAS8lH,IAAY1+K,GAC1B,OAAQA,GACN,KAAKu4K,GACL,KAAKC,GACL,KAAK,IACL,KAAKY,IACL,KAAKC,IACL,KAAKC,IACL,KAAKM,IACL,KAAKH,IACL,KAAKC,IACL,KAAKC,IAGL,KAAKJ,IACH,OAAO,EAET,KAAKM,IACH,OAAO,EAET,QACE,OAAO,GAEb,CCxDA,SAAS,IAA2BloT,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAG3K,SAASk5G,IAAUhtT,GACxB,QAAUA,UAA8BA,EAAEsqN,KAC5C,CACO,SAAS2iG,IAAerqU,GAC7B,IAGEu2N,EAFE+zG,EAAW,CAAC,EACZ9zG,EAAY,IAFJ,GAAKx2N,GAAS,CAAC,IAI3B,IACE,IAAKw2N,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIpzC,EAAOq5N,EAAMp8N,MACjBmwU,EAASptU,GAAQqtU,IAAiBvqU,EAAM9C,GAC1C,CACF,CAAE,MAAOsiC,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACA,OAAOivU,CACT,CCtBA,IAAI,IAAY,CAAC,SAAU,QAAS,SAAU,SAAU,QAAS,QAAS,QAAS,gBAAiB,eAAgB,mBAAoB,oBAAqB,qBAAsB,qBAAsB,mBACzM,SAAS,IAAQ3tS,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAGlf,SAAS8pU,IAAmBC,GACjC,IAAIhrN,EAASgrN,EAAYhrN,OACvBovH,EAAQ47F,EAAY57F,MACpB1zJ,EAASsvP,EAAYtvP,OACrB+7K,EAASuzE,EAAYvzE,OACrBx3O,EAAQ+qT,EAAY/qT,MACpBgsN,EAAQ++F,EAAY/+F,MACpB3/L,EAAQ0+R,EAAY1+R,MACpB2+R,EAAgBD,EAAYC,cAC5BC,EAAeF,EAAYE,aAC3BC,EAAmBH,EAAYG,iBAC/BC,EAAoBJ,EAAYI,kBAChCC,EAAqBL,EAAYK,mBACjCC,EAAqBN,EAAYM,mBACjC3N,EAAkBqN,EAAYrN,gBAE5B4N,EAAkB,IAAc,IAAc,CAAC,GAD1C,OAAyBP,EAAa,MACc1+R,EAAQ,CACnE6H,KAAM7H,GACJ,CAAC,GAEDk/R,EAAyB,IAAc,IAAc,IAAc,IAAc,IAAc,IAAc,CAAC,EAAGxrN,EAAS,CAC5HA,OAAQA,GACN,CAAC,GAAIovH,EAAQ,CACfA,MAAOA,GACL,CAAC,GAAI1zJ,EAAS,CAChBA,OAAQA,GACN,CAAC,GAAI+7K,EAAS,CAChBA,OAAQA,GACN,CAAC,QAAczoO,IAAV/O,EAAsB,CAC7BA,MAAOA,GACL,CAAC,QAAc+O,IAAVi9M,EAAsB,CAC7BA,MAAOA,GACL,CAAC,GAED4kC,EAAW,IAAc,IAAc,IAAc,IAAc,IAAc,IAAc,IAAc,CAAC,EAAGo6D,EAAgB,CACnIA,cAAeA,GACb,CAAC,GAAIC,EAAe,CACtBA,aAAcA,GACZ,CAAC,GAAIC,EAAmB,CAC1BA,iBAAkBA,GAChB,CAAC,GAAIC,EAAoB,CAC3BA,kBAAmBA,GACjB,CAAC,GAAIC,EAAqB,CAC5BA,mBAAoBA,GAClB,CAAC,GAAIC,EAAqB,CAC5BA,mBAAoBA,GAClB,CAAC,GAAI3N,EAAkB,CACzBA,gBAAiBA,GACf,CAAC,GAEL,MAAO,CACL4N,gBAAiBA,EACjBE,mBAHuB,GAAKT,EAAa,CAAC,QAAS,WAAY,KAAM,KAAM,UAI3EQ,uBAAwBA,EACxB36D,SAAUA,EAEd,CACO,SAAS66D,IAAOlhU,GACrB,OAAO,GAASA,IAAM,GAAQA,IAAM,GAASA,EAAE,GACjD,CChEO,SAASmhU,IAAYhuT,GAC1B,QAAUA,UAA8BA,EAAEokS,OAC5C,CACO,SAAS6pB,IAAc1rR,GAC5B,QAASA,EAAY,IACvB,CAaO,SAAS2rR,IAAgB/4R,GAC9B,OAAK,GAAQA,KACJ,UAAWA,GAAU,SAAUA,EAG1C,CACA,IAqEWg5R,IAAkB,GArEF,CACzBn7Q,KAAM,EACN4O,YAAa,EACbojM,SAAU,EACVC,oBAAqB,EACrBnO,MAAO,EACPvnP,QAAS,EACTinC,KAAM,EACNioC,YAAa,EACb1iE,OAAQ,EACR87O,UAAW,EACX9qM,YAAa,EACbonM,cAAe,EACf+D,WAAY,EACZE,iBAAkB,EAClB/D,WAAY,EACZ4F,aAAc,EACdjC,iBAAkB,EAClBr7O,WAAY,EACZC,SAAU,EACVy7N,SAAU,EACV3zI,YAAa,EACbC,YAAa,EACbzlE,KAAM,EACN7+B,MAAO,EACPo6O,YAAa,EACbjH,QAAS,EACTsmB,OAAQ,EACR7qK,MAAO,EACPssK,SAAU,EACV9/O,KAAM,EACNijL,IAAK,EACLl3L,GAAI,EACJC,GAAI,EACJy7K,SAAU,EACVorD,MAAO,EACP1lK,OAAQ,EACRrwC,MAAO,EACPjW,MAAO,EACP1G,KAAM,EACNF,SAAU,EACV4S,WAAY,EACZC,UAAW,EACXsuO,UAAW,EACXlhP,WAAY,EACZhV,OAAQ,EACRuzE,KAAM,EACNylL,QAAS,EACTnO,aAAc,EACdqB,oBAAqB,EACrBC,qBAAsB,EACtBE,uBAAwB,EACxBD,wBAAyB,EACzBoI,OAAQ,EACRxyP,MAAO,EACPC,OAAQ,EACR2rD,IAAK,EACL/9B,OAAQ,IAaC43S,IAAgB,CACzB9zH,IAAK,EACL92J,KAAM,EACNl3C,MAAO,EACPm3G,MAAO,EACP3yF,KAAM,EACNrvB,KAAM,EACN2Z,KAAM,EACN2gH,KAAM,EACN17H,MAAO,EACPgjC,OAAQ,EACR5nB,KAAM,EACNk2O,MAAO,GAGE08E,IAA2B,CAAC,eAAgB,sBAAuB,uBAAwB,yBAA0B,2BC5G5H,IAAY,CAAC,QACf,IAAa,CAAC,QACd,IAAa,CAAC,QAChB,SAAS,IAA2BruT,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAClL,SAAS,IAAQv0L,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAQlf,SAASgrU,IAA8BruU,GAC5C,IAAI48B,EAAY,GAAQ58B,EAAI48B,WAAa58B,EAAI48B,UAAUjR,IAAI2iT,KAA+BA,IAA4BtuU,EAAI48B,WAC1H,OAAO,IAAc,IAAc,CAAC,EAAGswS,IAAiBltU,IAAO,CAAC,EAAG,CACjE48B,UAAWA,GAEf,CACO,SAASswS,IAAiBpwU,GAC/B,OAAIiwU,IAAUjwU,GAGL,IAAc,CACnBqnT,OAHSrnT,EAAMutO,OACR,OAAyBvtO,EAAO,MAKpCA,CACT,CACO,SAASwxU,IAA4BxxU,GAC1C,OAAIiwU,IAAUjwU,GAGL,IAAc,CACnBqnT,OAHSrnT,EAAMutO,OACR,OAAyBvtO,EAAO,MAKpCA,CACT,CACO,SAASyxU,IAAiBzxU,GAC/B,OAAIiwU,IAAUjwU,GAGL,IAAc,CACnBqnT,OAHSrnT,EAAMutO,OACR,OAAyBvtO,EAAO,MAKvCixU,IAAYjxU,GACPA,OAEQs0B,IAAVt0B,EAAsB,CAC3BA,MAAOA,QACLs0B,CACN,CACO,SAASo9S,IAAyBzhR,GACvC,OAAIghR,IAAYhhR,GACPA,EAAIo3P,OAEN,GAAYp3P,EACrB,CACO,SAAS0hR,IAA4B1hR,GAC1C,OAAIghR,IAAYhhR,GACPA,EAAIo3P,OAEN,GAAYp3P,EAAIjwD,MACzB,CACO,SAAS4xU,IAAoB9hU,GAClC,OAAImhU,IAAYnhU,GACPA,EAAEu3S,OAEC,MAALv3S,EAAY,KAAO,GAAYA,EACxC,CAmBO,SAAS+hU,IAAUv9Q,GACxB,IAAIw9Q,EACJ,MAAO,GAAG1gU,OAAOkjD,EAAK9tD,KAAqC,QAA9BsrU,EAAcx9Q,EAAK3qD,aAAmC,IAAhBmoU,EAAyBA,EAAc,GAC5G,CACO,SAASC,IAAoBzgL,EAASh9F,EAAM+1C,GACjD,IAAI0gD,EAAMtsJ,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC3EuzU,EAAYjnL,EAAIinL,UAClBC,EAAiBlnL,EAAIknL,eACvB,OAAID,QAAiC19S,IAApBggC,EAAK09Q,GACb19Q,EAAK09Q,QACe19S,IAAlBggC,EAAKg9F,GACPh9F,EAAKg9F,IACH2gL,GAAoBD,GAAaA,IAAc1gL,EAGnD4gL,IAAc5gL,EAASh9F,EAAM+1C,EAAQ0gD,QAHrC,CAIT,CAKO,SAASmnL,IAAc5gL,EAASh9F,EAAM+1C,GAC3C,IACE2nO,GADSvzU,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,CAAC,GAC7DuzU,UACnB,OAAO5I,GAEP4I,EAAYG,IAAmB7gL,EAASh9F,EAAM+1C,EAAO1gG,YAAS2qB,EAAW69S,IAAmB7gL,EAASh9F,EAAM+1C,EAAO1gG,OAElHqoU,EAAY3nO,EAAO/1C,EAAK9tD,MAAMwrU,QAAa19S,EAAW+1E,EAAO/1C,EAAK9tD,MAAM8qJ,GAIxE0gL,EAAY3nO,EAAO/1C,KAAK09Q,GAAa3nO,EAAO/1C,KAAKg9F,GAEnD,CAEO,SAAS6gL,IAAmBpvU,EAAMuxD,EAAM89Q,GAC7C,OAAOC,IAAetvU,EAAM8uU,IAAUv9Q,GAAO89Q,EAC/C,CACO,SAASC,IAAep2T,EAAG09D,EAAQy4P,GAExC,IAAIpyU,EAEF8gO,EADEC,EAAa,IAFjBpnJ,EAAS,GAAMA,IAIf,IACE,IAAKonJ,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,CACrD,IACIm8R,EAAcF,EADNtxG,EAAO9gO,OAEfsyU,QAAkCh+S,IAAnBg+S,EAAYr2T,KAC7Bjc,EAAQsyU,EAAYr2T,GAExB,CACF,CAAE,MAAOopB,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACA,OAAOlB,CACT,CAIO,SAASuyU,IAAWC,EAAUC,GACnC,OAAO,GAAMD,GAAUhjT,QAAO,SAAU7T,EAAG+2T,GACzC,IAAIC,EAGJ,OAFAh3T,EAAE+hH,MAAMt/H,KAAK,IAAQs0U,EAAiBD,IACtC92T,EAAEw/B,MAAM/8C,KAAwD,QAAlDu0U,EAAwBD,EAAgBtiU,YAA4C,IAA1BuiU,EAAmCA,EAAwB,aAC5Hh3T,CACT,GAAG,CACD+hH,MAAO,GACPviF,MAAO,IAEX,CACO,SAASy3R,IAAoBhtT,EAAIC,GACtC,IAAIs8F,GAAS,QAAmBv8F,GAmBhC,OAlBAC,EAAG5f,SAAQ,SAAU4sU,GACnB,IACE/tG,EADEC,EAAa,IAA2B5iH,GAE5C,IACE,IAAK4iH,EAAWppN,MAAOmpN,EAASC,EAAWt4M,KAAK0pB,MAAO,CACrD,IAAI28R,EAAYhuG,EAAO9kO,MAEvB,GAAIwmU,GAAUsM,EAAWD,GACvB,MAEJ,CACF,CAAE,MAAOxtS,GACP0/L,EAAWhjO,EAAEsjC,EACf,CAAE,QACA0/L,EAAW7jO,GACb,CACAihH,EAAO/jH,KAAKy0U,EACd,IACO1wN,CACT,CACO,SAAS4wN,IAAWC,EAAQC,GACjC,OAAIzM,GAAUwM,EAAQC,KAAYA,EAEzBD,EACGA,EAIH,GAAG5hU,QAAO,QAAmB,GAAM4hU,KAAU,QAAmB,GAAMC,KAAU/rT,KAAK,MAFrF+rT,CAIX,CACO,SAASC,IAAoBhhT,EAAIC,GACtC,IAAIghT,EAAQjhT,EAAGlyB,MACXozU,EAAQjhT,EAAGnyB,MACf,GAAa,MAATmzU,GAA2B,OAAVC,EACnB,MAAO,CACLC,SAAUnhT,EAAGmhT,SACbrzU,MAAO,MAEJ,IAAKgxU,IAAOmC,IAAUlC,IAAYkC,MAAYnC,IAAOoC,IAAUnC,IAAYmC,IAChF,MAAO,CACLC,SAAUnhT,EAAGmhT,SACbrzU,MAAO+yU,IAAWI,EAAOC,IAEtB,GAAIpC,IAAOmC,IAAUlC,IAAYkC,GACtC,MAAO,CACLE,SAAUnhT,EAAGmhT,SACbrzU,MAAOmzU,GAEJ,GAAInC,IAAOoC,IAAUnC,IAAYmC,GACtC,MAAO,CACLC,SAAUnhT,EAAGmhT,SACbrzU,MAAOozU,GAEJ,KAAKpC,IAAOmC,IAAWlC,IAAYkC,IAAWnC,IAAOoC,IAAWnC,IAAYmC,IACjF,MAAO,CACLC,SAAUnhT,EAAGmhT,SACbrzU,MAAO4yU,IAAoBO,EAAOC,IAItC,MAAM,IAAIttS,MAAM,6BAClB,CCtOO,SAASwtS,IAAYpiH,GAC1B,MAAO,yBAAyB9/M,OAAO,GAAU8/M,GAAO,0JAC1D,CAEO,IAAIqiH,IAAiB,gEACrB,SAASC,IAAuB1zU,GAErC,MAAO,GAAGsR,OADU,SAARtR,EAAkB,QAAU,SAChB,8DAC1B,CACO,SAAS2zU,IAAuC3zU,GACrD,IACI4zU,EAAuB,SAAR5zU,EAAkB,IAAM,IAC3C,MAAO,GAAGsR,OAFU,SAARtR,EAAkB,QAAU,SAEhB,6DAAkEsR,OAAOsiU,EAAc,KACjH,CACO,SAASC,IAAYriL,GAC1B,OAAOA,EAAU,iBAAkBlgJ,OAAOkgJ,EAAS,gCAAiClgJ,OAAOg8T,IAAe97K,GAAU,KAAO,gDAC7H,CAEO,SAASsiL,IAAatiL,GAC3B,MAAO,qBAAqBlgJ,OAAOkgJ,EAAS,gCAC9C,CAEO,SAASuiL,IAAmCviL,GACjD,MAAO,mDAAoDlgJ,OAAOkgJ,EAAS,yBAC7E,CACO,SAASwiL,IAAuBxiL,EAAS+oK,GAC9C,MAAO,mDAAoDjpT,OAAOkgJ,EAAS,yCAA2ClgJ,OAAOipT,EAAW,MAC1I,CAIO,SAAS0Z,IAAsBz/Q,GACpC,MAAO,+BAA+BljD,OAAOkjD,EAAM,QACrD,CAYO,IAAI0/Q,IAAuB,+EAM3B,SAASC,IAA0BztU,GACxC,MAAO,+CAAkD4K,OAAO5K,EAAM,2BACxE,CAOO,SAAS0tU,IAAex2M,EAAOy2M,EAAOz+C,GAC3C,MAAO,6BAA8BtkR,OAAOssH,EAAO,SAAUtsH,OAAOskR,EAAU,6CAA6CtkR,OAAO+iU,EAAO,IAC3I,CAGO,SAASC,IAAwBziU,GACtC,MAAO,kCAAkCP,OAAO,GAAUO,GAAY,IACxE,CAGO,SAAS0iU,IAA2B/iL,GACzC,MAAO,wFAAwFlgJ,OAAOkgJ,EAAS,gBACjH,CAgBO,SAASgjL,IAAiB9tU,GAC/B,MAAO,uBAAwB4K,OAAO5K,EAAM,KAC9C,CAUO,SAAS+tU,IAAc/tU,EAAMukJ,GAClC,IAAItxG,EAAOsxG,EAAItxG,KACbz6B,EAAS+rI,EAAI/rI,OACf,MAAO,kBAAkB5N,OAAO5K,EAAM,0BAA0B4K,OAAOqoC,GAAQz6B,EAAS,kBAAoBy6B,EAAO,OAAS,SAAU,IACxI,CAIO,SAAS+6R,IAAcC,EAAUnjL,GACtC,MAAO,YAAYlgJ,OAAO,GAAUqjU,GAAW,mBAAoBrjU,OAAOkgJ,EAAS,uEACrF,CAEO,SAASojL,IAAoBpjL,EAASqjL,EAAaC,GACxD,MAAO,GAAGxjU,OAAOkgJ,EAAS,yCAA0ClgJ,OAAOujU,EAAa,KAAMvjU,OAAOwjU,EAAO,SAASxjU,OAAOwjU,GAAQ,GAAI,IAC1I,CACO,SAASC,IAA2BvjL,GACzC,MAAO,GAAGlgJ,OAAOkgJ,EAAS,yDAC5B,CAIO,SAASwjL,IAAwBxjL,GACtC,MAAO,GAAGlgJ,OAAOkgJ,EAAS,6DAC5B,CACO,SAASyjL,IAAsCzjL,GACpD,MAAO,GAAGlgJ,OAAOkgJ,EAAS,0GAC5B,CAIO,SAAS0jL,IAA4B1jL,EAAS9qJ,GACnD,MAAO,2BAA4B4K,OAAOkgJ,EAAS,iBAAmBlgJ,OAAO5K,EAAM,oDAAqD4K,OAAgB,YAAT5K,EAAqB,QAAU,YAAa,IAC7L,CAoBO,SAASyuU,IAAwCR,GACtD,MAAO,2DAA2DrjU,OAAO,GAAUqjU,GAAW,KAChG,CACO,SAASS,IAAuC7a,GACrD,MAAO,2CAA4CjpT,OAAOipT,EAAW,2EACvE,CACO,SAAS8a,IAA+BV,GAC7C,MAAO,+DAA+DrjU,OAAO,GAAUqjU,GAAW,KACpG,CAUO,SAASW,IAAkChZ,EAAWrzM,EAAUuoC,GACrE,MAAO,GAAGlgJ,OAAOkgJ,EAAS,eAAelgJ,OAAO23G,EAAU,0CAA2C33G,OAAOgrT,EAAW,UACzH,CAIO,SAASiZ,IAAY/jL,GAC1B,MAAO,iBAAkBlgJ,OAAOkgJ,EAAS,6BAA8BlgJ,OAAmB,UAAZkgJ,EAAsB,IAAM,IAAK,kBACjH,CAaO,IAAIgkL,IAAqB,4FAiBzB,SAASC,IAAgBC,EAAUx1U,GACxC,MAAO,WAAWoR,OAAOokU,EAAU,MAAMpkU,OAAO,GAAUpR,GAAQ,IACpE,CAaO,SAASy1U,IAAsB58H,GACpC,MAAO,kCAAkCznM,OAAOynM,EAAU,IAC5D,CAEO,SAAS68H,IAAyBpkL,GACvC,MAAO,WAAWlgJ,OAAOkgJ,EAAS,iCACpC,CClOA,IAkBIqkL,IAAO5/H,GAAO,IACdzwM,IAAUqwU,IAqEP,SAAS,MAEd,OADArwU,IAAUqwU,GAEZ,CAKO,SAAS,MACd,IAAIC,GACHA,EAAYtwU,KAASw4I,KAAK5+I,MAAM02U,EAAWn3U,UAC9C,CCtGA,SAAS,IAA2BwkB,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAM3K,SAAS8+G,IAAW5yT,GACzB,GAAIA,GAAK+oC,GAAS/oC,GAAI,CACpB,IACEm5M,EADEC,EAAY,IAA2By5G,KAE3C,IACE,IAAKz5G,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAElD,GADWimL,EAAMp8N,SACLijB,EACV,OAAO,CAEX,CACF,CAAE,MAAOoiB,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACF,CACA,OAAO,CACT,CD+CqB,IAAI6qF,QC9ClB,IAAIgqP,IAAS,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,YACxHC,IAAeD,IAAOlnT,KAAI,SAAUjb,GAC7C,OAAOA,EAAEqlB,OAAO,EAAG,EACrB,IACWg9S,IAAO,CAAC,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,YAC1EC,IAAaD,IAAKpnT,KAAI,SAAUjL,GACzC,OAAOA,EAAEqV,OAAO,EAAG,EACrB,IAoEA,SAASk9S,IAAcvyT,EAAGu/B,GACxB,IAAI+yK,EAAQ,GAeZ,GAdI/yK,QAAuB7uB,IAAV1Q,EAAE4kM,KACb,GAAK5kM,GAAGllB,OAAS,IACnB,IFyGC,SAAoBklB,GACzB,MAAO,8BAA8BxS,OAAO,GAAUwS,GAAI,+CAC5D,CE3Ge,CAAuBA,WAChCA,EAAI6iT,GAAU7iT,IACL4kM,UAGEl0L,IAAX1Q,EAAEm8C,KACJm2J,EAAM93N,KAAKwlB,EAAEm8C,MAIbm2J,EAAM93N,KAAK,WAEGk2B,IAAZ1Q,EAAEk8C,MAAqB,CACzB,IAAIA,EAAQ3c,EArEhB,SAAwBvvC,GAItB,GAHIg2T,GAAUh2T,KACZA,GAAKA,GAEH4wC,GAAS5wC,GAEX,OAAOA,EAAI,EAEX,IAAIwiU,EAASxiU,EAAE6I,cACX45T,EAAaN,IAAOhlU,QAAQqlU,GAChC,IAAoB,IAAhBC,EACF,OAAOA,EAGT,IAAIC,EAASF,EAAOn9S,OAAO,EAAG,GAC1Bs9S,EAAkBP,IAAajlU,QAAQulU,GAC3C,IAAyB,IAArBC,EACF,OAAOA,EAGT,MAAM,IAAIzwS,MAAM,IAA4B,QAASlyB,GAEzD,CA+C4B4iU,CAAe5yT,EAAEk8C,OAASl8C,EAAEk8C,MACpDo2J,EAAM93N,KAAK0hE,EACb,MAAO,QAAkBxrC,IAAd1Q,EAAE+zL,QAAuB,CAClC,IAAIA,EAAUx0J,EAvFlB,SAA0B//B,GAIxB,GAHIwmT,GAAUxmT,KACZA,GAAKA,GAEHohC,GAASphC,GAKX,OAJIA,EAAI,GACN,IAAS,IAA4B,UAAWA,IAG3CA,EAAI,EAGX,MAAM,IAAI0iB,MAAM,IAA4B,UAAW1iB,GAE3D,CAyE8BqzT,CAAiB7yT,EAAE+zL,SAAW/zL,EAAE+zL,QAC1Due,EAAM93N,KAAKomD,GAASmzJ,GAAqB,EAAVA,EAAc,GAAGvmM,OAAOumM,EAAS,MAClE,MACEue,EAAM93N,KAAK,GAGb,QAAek2B,IAAX1Q,EAAEgiD,KACJswJ,EAAM93N,KAAKwlB,EAAEgiD,WACR,QAActxC,IAAV1Q,EAAE4kM,IAAmB,CAG9B,IAAIA,EAAMrlK,EA5Dd,SAAsBv/B,GAIpB,GAHIgmT,GAAUhmT,KACZA,GAAKA,GAEH4gC,GAAS5gC,GAGX,OAAOA,EAAI,EAEX,IAAI8yT,EAAS9yT,EAAEnH,cACXk6T,EAAWV,IAAKllU,QAAQ2lU,GAC5B,IAAkB,IAAdC,EACF,OAAOA,EAGT,IAAIC,EAASF,EAAOz9S,OAAO,EAAG,GAC1B49S,EAAgBX,IAAWnlU,QAAQ6lU,GACvC,IAAuB,IAAnBC,EACF,OAAOA,EAGT,MAAM,IAAI/wS,MAAM,IAA4B,MAAOliB,GAEvD,CAqC0BkzT,CAAalzT,EAAE4kM,KAAO5kM,EAAE4kM,IAC9C0N,EAAM93N,KAAKomD,GAASgkK,GAAOA,EAAM,EAAI,GAAGp3M,OAAOo3M,EAAK,MACtD,MACE0N,EAAM93N,KAAK,GAIb,IAAK,IAAII,EAAK,EAAGs3C,EAAO,CAAC,QAAS,UAAW,UAAW,gBAAiBt3C,EAAKs3C,EAAKp3C,OAAQF,IAAM,CAC/F,IACIiuI,EAAO7oH,EADIkyB,EAAKt3C,IAEpB03N,EAAM93N,UAAqB,IAATquI,EAAuB,EAAIA,EAC/C,CACA,OAAOypF,CACT,CAOO,SAAS6gH,IAAenzT,GAC7B,IACIwgC,EADQ+xR,IAAcvyT,GAAG,GACVsD,KAAK,MACxB,OAAItD,EAAE4uN,IACG,OAAOphO,OAAOgzC,EAAQ,KAEtB,YAAYhzC,OAAOgzC,EAAQ,IAEtC,CCjKA,IAAI,IAAY,CAAC,OACjB,SAAS,IAA2BnhC,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAClL,SAAS,IAAQv0L,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAKlf,IAAIywU,IAA8B,CACvCj3Q,KAAM,EACN43I,QAAS,EACT73I,MAAO,EACPsnJ,KAAM,EACNoB,IAAK,EACLtB,UAAW,EACXthJ,KAAM,EACN01I,MAAO,EACPE,QAAS,EACTE,QAAS,EACTE,aAAc,GAELk6H,IAAiB,GAAKkB,KAgFE,IAAc,IAAc,CAAC,EAhC9B,CAChCC,WAAY,EACZC,kBAAmB,EACnBC,uBAAwB,EACxBC,gBAAiB,EACjBC,oBAAqB,EACrBC,yBAA0B,EAC1BC,gCAAiC,EACjCC,uCAAwC,EACxCC,eAAgB,EAChBC,kBAAmB,EACnBC,uBAAwB,EACxBC,8BAA+B,EAC/BC,qCAAsC,EACtCC,oBAAqB,IAES,CAC9BC,cAAe,EACfC,qBAAsB,EACtBC,0BAA2B,EAC3BC,mBAAoB,EACpBC,uBAAwB,EACxBC,4BAA6B,EAC7BC,mCAAoC,EACpCC,0CAA2C,EAC3CC,kBAAmB,EACnBC,qBAAsB,EACtBC,0BAA2B,EAC3BC,iCAAkC,EAClCC,wCAAyC,EACzCC,uBAAwB,IAGnB,SAASC,IAAiBC,GAC/B,OAAI9sR,GAAS8sR,GACJA,EAAShJ,OAEXiJ,IAAuBD,EAChC,CACO,SAASC,IAAuBD,GACrC,OAAOA,GAAYA,EAAS15P,WAAW,SACzC,CAgCO,SAAS45P,IAAcp3U,GAC5B,OAAOA,EAAEw9E,WAAW,MACtB,CAKO,IAAI65P,IAAsB,CAC/B,aAAc,SACd,kBAAmB,cAEd,SAASC,IAAiBJ,GAC/B,OAAOhD,IAAe1nU,QAAO,SAAU+qU,GACrC,OAAOC,IAAiBN,EAAUK,EACpC,GACF,CACO,SAASE,IAAwBP,GACtC,IAAI5iH,EAAQgjH,IAAiBJ,GAC7B,OAAO5iH,EAAMA,EAAMx3N,OAAS,EAC9B,CAEO,SAAS06U,IAAiBE,EAAcR,GAC7C,IAAIjzU,EAAQyzU,EAAavoU,QAAQ+nU,GACjC,QAAIjzU,EAAQ,OAIRA,EAAQ,GAAkB,YAAbizU,GAA6D,MAAnCQ,EAAatgT,OAAOnzB,EAAQ,QAInEyzU,EAAa56U,OAASmH,EAAQ,GAAkB,QAAbizU,GAAyD,MAAnCQ,EAAatgT,OAAOnzB,EAAQ,OAGrFA,EAAQ,GAAkB,SAAbizU,GAA0D,MAAnCQ,EAAatgT,OAAOnzB,EAAQ,KAItE,CAIO,SAAS,IAAUyzU,EAAc57M,GACtC,IAcI67M,EAXF7sT,GAHSjuB,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,CAC3EiuB,KAAK,IAEIA,IACT8nS,EAAWqU,GAAoBnrM,GAC/B80G,EAAMwmG,IAAcM,GAAgB,MAAQ,GAUhD,IAEEl9G,EAXY08G,EASVU,EAAW,CAAC,EACZn9G,EAAY,IAA2By5G,KAE3C,IACE,IAAKz5G,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIgjS,EAAO/8G,EAAMp8N,MACbo5U,IAAiBE,EAAcH,KACjCK,EAASL,GAfI,aADLL,EAgBcK,GAbjB,IAAI/nU,OAAOohO,EAAK,YAAYphO,OAAOojT,EAAU,QAE7C,GAAGpjT,OAAOohO,GAAKphO,OAAO0nU,EAAU,KAAK1nU,OAAOojT,EAAU,KAY3D+kB,EAAeJ,EAEnB,CACF,CAAE,MAAO9zS,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CAIA,OAHIwrB,IACF8sT,EAASD,IAAiB,MDnDvB,SAA4B31T,GACjC,IACIwgC,EADQ+xR,IAAcvyT,GAAG,GACVsD,KAAK,MACxB,OAAItD,EAAE4uN,IACG,OAAOphO,OAAOgzC,EAAQ,KAEtB,YAAYhzC,OAAOgzC,EAAQ,IAEtC,CC6CSq1R,CAAmBD,EAC5B,CACO,SAASE,IAA4BZ,GAC1C,GAAKA,EAAL,CAGA,IAAIa,EAAgBT,IAAiBJ,GACrC,MAAO,qBAAqB1nU,OAAO,GAAUuoU,GAAgB,MAAMvoU,OAAO,GAAU6nU,KAAsB,IAF1G,CAGF,CAeO,SAASW,IAAkBd,GAIhC,IAAI35T,EAHJ,GAAK25T,EAwBL,OApBI,GAASA,GAET35T,EADE45T,IAAuBD,GAChB,CACPrsM,KAAMqsM,EAASh4S,UAAU,GACzBgvS,QAAQ,GAGD,CACPrjM,KAAMqsM,GAGD9sR,GAAS8sR,KAClB35T,EAAS,IAAc,IAAc,CAAC,EAAG25T,GAAWA,EAASrsM,KAAO,CAClEA,KAAMqsM,EAASrsM,MACb,CAAC,IAEHusM,IAAc75T,EAAOstH,QACvBttH,EAAOqzN,KAAM,EACbrzN,EAAOstH,KAxHJ,SAAyC7qI,GAC9C,OAAOA,EAAEk/B,UAAU,EACrB,CAsHkB+4S,CAAgC16T,EAAOstH,OAEhDttH,CACT,CAgBO,SAAS26T,IAAahB,GAC3B,IAAI9nR,EAAOvyD,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,SAAUqK,GACvF,OAAOA,CACT,EACIixU,EAAqBH,IAAkBd,GACvCkB,EAAmBX,IAAwBU,EAAmBttM,MAClE,GAAIutM,GAAyC,QAArBA,EAA4B,CAClD,IAAIC,EAAY,CACdl6Q,KAAM,KACND,MAAO,EACP8F,KAAM,EACN01I,MAAO,EACPE,QAAS,EACTE,QAAS,EACTE,aAAc,GAEZs+H,EAAwBC,IAAuBH,EAAkBD,EAAmBz0R,MACtFA,EAAO40R,EAAsB50R,KAC7B6zR,EAAOe,EAAsBf,KAC3BiB,EAAU,IAAc,IAAc,CAAC,EAAGH,GAAY,CAAC,GAAG,OAAgB,CAAC,EAAGd,GAAOc,EAAUd,GAAQ7zR,IAE3G,MAAO,GAAGl0C,OAAO4/C,EAAK+lR,IAAeqD,IAAW,OAAOhpU,OAAO4/C,EAAK+lR,IAAekD,IACpF,CAEF,CACA,IAAII,IAAa,CACft6Q,KAAM,EACND,MAAO,EACP8F,KAAM,EACN01I,MAAO,EACPE,QAAS,EACTE,QAAS,EACTE,aAAc,GAKT,SAASu+H,IAAuBrB,GACrC,IAAIxzR,EAAO7mD,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,EAC/E,GALK,SAAoBq6U,GACzB,QAASuB,IAAWvB,EACtB,CAGMwB,CAAWxB,GACb,MAAO,CACLK,KAAML,EACNxzR,KAAMA,GAGV,OAAQwzR,GACN,IAAK,MACL,IAAK,YACH,MAAO,CACLK,KAAM,OACN7zR,KAAMA,GAEV,IAAK,UACH,MAAO,CACL6zR,KAAM,QACN7zR,KAAa,EAAPA,GAEV,IAAK,OACH,MAAO,CACL6zR,KAAM,OACN7zR,KAAa,EAAPA,GAGd,CC9VA,SAAS,IAAQ9iB,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CASlf,SAASg0U,IAAsBz7S,GACpC,QAAUA,UAA8CA,EAAU4+F,aAA8BppG,IAApBwK,EAAUqf,KACxF,CACO,SAASq8R,IAAmB17S,GACjC,QAAUA,UAA8CA,EAAU4+F,aAA2BppG,IAAjBwK,EAAUwmR,EACxF,CACO,SAASm1B,IAAoB37S,GAClC,QAAUA,UAA8CA,EAAU4+F,aAA4BppG,IAAlBwK,EAAU47S,GACxF,CACO,SAASC,IAAmB77S,GACjC,QAAUA,UAA8CA,EAAU4+F,aAA2BppG,IAAjBwK,EAAUymR,EACxF,CACO,SAASq1B,IAAoB97S,GAClC,QAAUA,UAA8CA,EAAU4+F,aAA4BppG,IAAlBwK,EAAU+7S,GACxF,CACO,SAASC,IAAsBh8S,GACpC,GAAIA,SAA8CA,EAAU4+F,MAAO,CACjE,GAAI,GAAQ5+F,EAAU0mB,QAAqC,IAA3B1mB,EAAU0mB,MAAM9mD,OAC9C,OAAO,EACF,GAAIuyU,IAAYnyS,EAAU0mB,OAC/B,OAAO,CAEX,CACA,OAAO,CACT,CACO,SAASu1R,IAAsBj8S,GACpC,QAAUA,UAA8CA,EAAU4+F,SAAW,GAAQ5+F,EAAUk8S,QAAU,GAAQl8S,EAAUm8S,IAE7H,CAKO,SAASC,IAAiBp8S,GAC/B,OAAOi8S,IAAsBj8S,IAAcy7S,IAAsBz7S,IAAcg8S,IAAsBh8S,IAAc07S,IAAmB17S,IAAc67S,IAAmB77S,IAAc27S,IAAoB37S,IAAc87S,IAAoB97S,EAC7O,CACA,SAASq8S,IAAmBrrU,EAAGgpU,GAC7B,OAAOsC,IAAUtrU,EAAG,CAClBgpU,SAAUA,EACVuC,UAAU,GAEd,CAOO,SAASC,IAAsBx8S,GACpC,IAAIy8S,IAAa98U,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,KAAmBA,UAAU,GAC5Ei/H,EAAQ5+F,EAAU4+F,MAElBhuE,EADqBkqR,IAAkB96S,EAAUg6S,WACpB,CAAC,EAChCrsM,EAAO/8E,EAAK+8E,KACZqjM,EAASpgR,EAAKogR,OACZ0L,EAAe,IAAQ18S,EAAW,CACpCyuM,KAAM,UAEJkuG,EAAYhvM,EAGhB,QAAQr7H,OAAQ0+T,EAA0C0L,EAAjC,IAAkB/uM,EAAM/O,GAAuB,KAAO89M,EAC/E,GAAIjB,IAAsBz7S,GACxB,MAAO,GAAG1tB,OAAOqqU,EAAW,OAAOrqU,OAAO+pU,IAAmBr8S,EAAUqf,MAAOsuF,IACzE,GAAI+tM,IAAmB17S,GAAY,CACxC,IAAIg8Q,EAAQh8Q,EAAUwmR,GACtB,MAAO,GAAGl0S,OAAOqqU,EAAW,KAAKrqU,OAAO+pU,IAAmBrgC,EAAOruK,GACpE,CAAO,GAAIkuM,IAAmB77S,GAAY,CACxC,IAAIi8Q,EAAQj8Q,EAAUymR,GACtB,MAAO,GAAGn0S,OAAOqqU,EAAW,KAAKrqU,OAAO+pU,IAAmBpgC,EAAOtuK,GACpE,CAAO,GAAIguM,IAAoB37S,GAAY,CACzC,IAAI48S,EAAS58S,EAAU47S,IACvB,MAAO,GAAGtpU,OAAOqqU,EAAW,MAAMrqU,OAAO+pU,IAAmBO,EAAQjvM,GACtE,CAAO,GAAImuM,IAAoB97S,GAAY,CACzC,IAAI68S,EAAS78S,EAAU+7S,IACvB,MAAO,GAAGzpU,OAAOqqU,EAAW,MAAMrqU,OAAO+pU,IAAmBQ,EAAQlvM,GACtE,CAAO,GAAIsuM,IAAsBj8S,GAC/B,MAAO,YAAY1tB,OAnCvB,SAA6Bi5N,EAAMyuG,GACjC,OAAOzuG,EAAKx7M,KAAI,SAAU/e,GACxB,OAAOqrU,IAAmBrrU,EAAGgpU,EAC/B,GACF,CA+B8B8C,CAAoB98S,EAAUk8S,MAAOvuM,GAAMvlH,KAAK,KAAM,OAAO9V,OAAOqqU,EAAW,YACpG,GAhDF,SAA+B38S,GACpC,QAAUA,UAA8CA,EAAU4+F,aAA8BppG,IAApBwK,EAAUiqE,KACxF,CA8Ca8yO,CAAsB/8S,GAC/B,OAAOg9S,IAAoBL,EAAW38S,EAAUiqE,OAC3C,GAAI+xO,IAAsBh8S,GAAY,CAC3C,IAAI0mB,EAAQ1mB,EAAU0mB,MAClBu2R,EAAU9K,IAAYzrR,GAAS,CACjC6hQ,OAAQ,GAAGj2S,OAAOo0C,EAAM6hQ,OAAQ,QAC9B7hQ,EAAM,GACNw2R,EAAU/K,IAAYzrR,GAAS,CACjC6hQ,OAAQ,GAAGj2S,OAAOo0C,EAAM6hQ,OAAQ,QAC9B7hQ,EAAM,GACV,GAAgB,OAAZu2R,GAAgC,OAAZC,GAAoBT,EAC1C,MAAO,WAAaE,EAAY,MAAQN,IAAmBY,EAAStvM,GAAQ,KAAO0uM,IAAmBa,EAASvvM,GAAQ,KAEzH,IAAIwvM,EAAQ,GAOZ,OANgB,OAAZF,GACFE,EAAM79U,KAAK,GAAGgT,OAAOqqU,EAAW,QAAQrqU,OAAO+pU,IAAmBY,EAAStvM,KAE7D,OAAZuvM,GACFC,EAAM79U,KAAK,GAAGgT,OAAOqqU,EAAW,QAAQrqU,OAAO+pU,IAAmBa,EAASvvM,KAEtEwvM,EAAMv9U,OAAS,EAAIu9U,EAAM/0T,KAAK,QAAU,MACjD,CAEA,MAAM,IAAI4e,MAAM,4BAA4B10B,OAAO,GAAU0tB,IAC/D,CACO,SAASg9S,IAAoBL,GAElC,QADYh9U,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,KAAmBA,UAAU,GAElE,WAAW2S,OAAOqqU,EAAW,mBAAmBrqU,OAAOqqU,EAAW,KAElE,YAAYrqU,OAAOqqU,EAAW,oBAAoBrqU,OAAOqqU,EAAW,IAE/E,CACO,SAASS,IAAmBh7U,GACjC,OAAIg6U,IAAiBh6U,IAAMA,EAAE43U,SACpB,IAAc,IAAc,CAAC,EAAG53U,GAAI,CAAC,EAAG,CAC7C43U,SAAUc,IAAkB14U,EAAE43U,YAG3B53U,CACT,CC7HO,IAAIi7U,IAAO,CAChBC,aAAc,eACd75F,QAAS,UACT85F,SAAU,WACVC,QAAS,UACT3sD,QAAS,WAQJ,SAAS,IAAWnpR,GACzB,MAAgB,YAATA,GAA+B,YAATA,CAC/B,CACO,IAAI+1U,IAAeJ,IAAKC,aACpBI,IAAUL,IAAK55F,QACfk6F,IAAWN,IAAKE,SAChBK,IAAUP,IAAKG,QACfK,IAAUR,IAAKxsD,QACP,GAAKwsD,KChBjB,IAAIS,IAAY,CAErBC,OAAQ,SACRC,IAAK,MACLC,IAAK,MACLC,KAAM,OACNC,OAAQ,SACRC,SAAU,WACVC,WAAY,aAEZC,KAAM,OACNp1H,IAAK,MAELq1H,SAAU,WACVC,SAAU,WACVC,UAAW,YACXC,YAAa,cAEbhB,QAAS,UACTiB,MAAO,QACPC,KAAM,QAMGC,IAAuB,CAChC5kU,OAAQ,UACRw+B,IAAK,UACL/9B,IAAK,UACLiB,KAAM,UACNg8L,OAAQ,UACRl0K,SAAU,UACV0+M,WAAY,UACZt/O,KAAM,OACN6wO,IAAK,OACL+P,QAAS,UACT,cAAe,cACf15O,MAAO,mBACPmjO,KAAM,mBACN1K,SAAU,eACV6nB,SAAU,eACV/vC,UAAW,gBAEY,GAAKukI,KAIvB,SAASC,IAAgBC,EAAYC,GAC1C,IAAIC,EAAiBJ,IAAqBE,GACtCG,EAAiBL,IAAqBG,GAC1C,OAAOC,IAAmBC,GAAqC,qBAAnBD,GAA4D,SAAnBC,GAAgD,qBAAnBA,GAA4D,SAAnBD,CAC7J,CAIA,IAAIE,IAAyB,CAE3BllU,OAAQ,EACRw+B,IAAK,EACL/9B,IAAK,EACLiB,KAAM,EACNg8L,OAAQ,EACRl0K,SAAU,EACV0+M,WAAY,EAEZt/O,KAAM,EACN6wO,IAAK,EAEL3pO,MAAO,GACPmjO,KAAM,GAENuW,QAAS,EACT,cAAe,EACfjhB,SAAU,EACV6nB,SAAU,EACV/vC,UAAW,GAKN,SAAS8kI,IAAoB9hB,GAClC,OAAO6hB,IAAuB7hB,EAChC,CACO,IAAI+hB,IAAsB,IAAI35S,IAAI,CAAC,SAAU,MAAO,MAAO,OAAQ,WAC/D45S,IAAkC,IAAI55S,IAAI,GAAGpzB,QAAO,QAAmB+sU,KAAsB,CAAC,OAAQ,SAC1G,SAASE,IAAe73U,GAC7B,OAAO23U,IAAoBx+S,IAAIn5B,EACjC,CACO,IAAI83U,IAAgC,IAAI95S,IAAI,CAAC,WAAY,WAAY,cACjE+5S,IAA2B,IAAI/5S,IAAI,GAAGpzB,QAAO,QAAmBgtU,MAAkC,QAAmBE,KAAgC,CAAC,aAAc,cACpKE,IAAyB,IAAIh6S,IAAI,CAAC,UAAW,cAAe,QAAS,SAClD,IAAIA,IAAI,CAAC,OAAQ,QACxC,SAASi6S,IAAkBj4U,GAChC,OAAOg4U,IAAuB7+S,IAAIn5B,EACpC,CACO,SAASk4U,IAAoBl4U,GAClC,OAAO+3U,IAAyB5+S,IAAIn5B,EACtC,CACO,SAASm4U,IAAyBn4U,GACvC,OAAO43U,IAAgCz+S,IAAIn5B,EAC7C,CACO,SAASo4U,IAAuBp4U,GACrC,OAAO83U,IAA8B3+S,IAAIn5B,EAC3C,CAuBO,SAASq4U,IAAkBzmS,GAChC,OAAOA,aAAuC,EAASA,EAAc,KACvE,CAOA,IAAI0mS,IAAuB,CACzBt4U,KAAM,EACN4xC,OAAQ,EACR6hO,UAAW,EACXD,UAAW,EACXd,UAAW,EACXU,UAAW,EACX1nL,MAAO,EACP1sC,MAAO,EACPu5R,SAAU,EACVC,SAAU,EACVn1F,OAAQ,EACR5d,KAAM,EAENx9M,QAAS,EACT6R,MAAO,EAEPmT,MAAO,EACP2uL,KAAM,EAEN/hM,KAAM,EACN5mB,SAAU,EACV49L,SAAU,EACVqmC,YAAa,EACbloM,KAAM,EAENyiC,QAAS,EACTsuK,aAAc,EACdC,aAAc,GASdy4F,KAP4B,GAAKH,MAOiB,OAAyBA,IAAsB,CAAC,OAAQ,SAAU,QAAS,WAAY,WAAY,YAC5II,IAA8C,GAAKD,KACvD,SAASE,IAAyB/iB,EAAWrzM,GAClD,OAAQA,GACN,IAAK,OACL,IAAK,SACL,IAAK,UACL,IAAK,QACH,OAAO,EACT,IAAK,SACL,IAAK,cACH,OAAQ,CAAC,QAAS,OAAQ,YAAY/lH,SAASo5T,GACjD,IAAK,OACH,OAAQ,CAAC,QAAS,OAAQ,WAAY,WAAWp5T,SAASo5T,GAC5D,IAAK,QACH,OAAOuiB,IAAyBviB,IAA4B,SAAdA,GAAsC,UAAdA,EACxE,IAAK,UACL,IAAK,WACL,IAAK,WACH,OAAOuiB,IAAyBviB,IAAc,CAAC,QAAS,QAAQp5T,SAASo5T,GAC3E,IAAK,eACL,IAAK,QACH,MAAO,CAAC,QAAS,QAAQp5T,SAASo5T,GACpC,IAAK,eACH,MAAqB,SAAdA,EACT,IAAK,YACL,IAAK,YACL,IAAK,YACL,IAAK,YACL,IAAK,QACH,OAAOuiB,IAAyBviB,GAClC,IAAK,OACH,OAAOuiB,IAAyBviB,IAA4B,aAAdA,GAA0C,cAAdA,EAC5E,IAAK,WACH,MAAqB,QAAdA,EACT,IAAK,OACH,MAAqB,QAAdA,EACT,IAAK,WACH,MAAqB,WAAdA,EACT,IAAK,OACH,OAAOsiB,IAAoBtiB,KAAe,GAAS,CAAC,MAAO,OAAQ,MAAO,YAAa,YACpFA,GAET,CAIO,SAASgjB,IAAoC9tL,EAASvoC,GAC3D,OAAQA,GACN,IAAK,cACL,IAAK,SACL,IAAK,YACH,OAAKujN,IAAeh7K,QAGpB,ENxFG,kCAAmClgJ,OMsFkB23G,ENtFL,6BMyFrD,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,YACL,IAAK,YACL,IAAK,YACL,IAAK,QACL,IAAK,OACL,IAAK,WACL,IAAK,WACL,IAAK,OACL,IAAK,UACL,IAAK,eACL,IAAK,eACL,IAAK,WACL,IAAK,WACL,IAAK,UACL,IAAK,QACL,IAAK,QACL,IAAK,OACH,OAGN,CClQO,IAAI,IAAO,CAChBw0F,IAAK,MACL92J,KAAM,OACNmoR,IAAK,MACLloN,MAAO,QACP3yF,KAAM,OACNlrB,MAAO,QACPwV,KAAM,OACN2gH,KAAM,OACNtgH,KAAM,OACNszQ,KAAM,OACNp9B,MAAO,QACPt2O,OAAQ,SACR0kT,OAAQ,SACR6L,SAAU,YAEDwQ,IAAM,IAAK9hI,IACX+hI,IAAO,IAAK74R,KACZ84R,IAAM,IAAK3Q,IACX4Q,IAAQ,IAAK94N,MACb+4N,IAAO,IAAK1rT,KACZ0pT,IAAQ,IAAK50U,MACb62U,IAAO,IAAKrhU,KACZshU,IAAO,IAAK3gN,KACZ,IAAO,IAAKtgH,KACZkhU,IAAO,IAAK5tD,KACZ6tD,IAAQ,IAAKjrF,MACbkrF,IAAS,IAAKxhU,OACdyhU,IAAS,IAAK/c,OACdgd,IAAW,IAAKnR,SAIpB,SAASoR,IAAWrsU,GACzB,MAAO,CAAC,OAAQ,OAAQ,SAAS5Q,SAAS4Q,EAC5C,CACO,SAASssU,IAAgBtsU,GAC9B,MAAO,CAAC,OAAQ,MAAO,QAAS,OAAsD5Q,SAAS4Q,EACjG,CACO,IAAIusU,IAAkB,IAAI37S,IAAI,GAAK,MACnC,SAAS47S,IAAU9rR,GACxB,OAAOA,EAAW,IACpB,CAKO,IAEI+rR,IAAqB,GAAGjvU,OAFR,CAAC,SAAU,cAAe,aAAc,mBAAoB,gBAAiB,aAAc,oBAC7F,CAAC,OAAQ,gBAYvBkvU,IAAiC,GAVZ,CAC9B1uS,MAAO,EACPriB,OAAQ,EACRs2C,QAAS,EACT1qB,MAAO,EACPywR,QAAS,EACTn4C,OAAQ,EACR8sD,iBAAkB,EAClBC,qBAAsB,IAgCbC,IAAe,GAjBF,CACtBnsR,KAAM,EACNipJ,IAAK,EACL92J,KAAM,EACNmoR,IAAK,EACLtwT,OAAQ,EACRooG,MAAO,EACP3yF,KAAM,EACNlrB,MAAO,EACPwV,KAAM,EACN2gH,KAAM,EACNgkM,OAAQ,EACRtkT,KAAM,EACNszQ,KAAM,EACNp9B,MAAO,EACPi6E,SAAU,IAGL,SAAS6R,IAAmBz9T,GACjC,OAAOA,GAAkBqR,MAAbrR,EAAQ,IACtB,CACO,IAAI09T,IAA0B,CACnCtrJ,WAAY,CAAC,uBAAwB,2BACrCC,SAAU,CAAC,sBAAuB,yBAGzBsrJ,IAAmB,CAC5BC,WAAY,EACZC,mBAH2B,EAI3BC,YAAa,IACbP,qBAAsB,IAEbQ,IAAoB,CAC7BH,WAAY,EACZC,mBAT2B,EAU3BC,YAAa,IACbP,qBAAsB,IChHxB,SAAS,IAAQh+S,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAgBlf,SAAS06U,IAAmC9hU,GACjD,IAAImyI,EAAUnyI,EAAOmyI,QACnB4vL,EAAa/hU,EAAO+hU,WACpBC,EAAUhiU,EAAOgiU,QACjBxqU,EAAQwI,EAAOxI,MACf0zF,EAASlrF,EAAOkrF,OACdp6C,EAAMmxR,IAASjiU,GAEnB,OAEAkiU,IAAWH,KAAgB5R,IAAsB4R,EAAW7mB,YAE5D1jT,GAASgoU,IAAyBhoU,EAAM9W,IAAI,SAWvC,SAAiC6vD,GACtC,IAAI+kR,EAAW/kR,EAAK+kR,SAClBnjL,EAAU5hG,EAAK4hG,QACf6vL,EAAUzxR,EAAKyxR,QACflxR,EAAMP,EAAKO,IACXo6C,EAAS36C,EAAK26C,OAChB,GAAI41O,IAAWkB,EAAQ36U,MAErB,OAAOypD,EAET,IAAI4V,EAAUksQ,IAAoB,UAAWoP,EAAS92O,GACtD,GAAgB,OAAZxkC,EAEF,MAAO,CAACy7Q,IAAyB7M,EAAUnjL,GAAUrhG,GAEvD,OAAOA,CACT,CA1BWsxR,CAAwB,CAC7B9M,SAAUyM,EACV5vL,QAASA,EACT6vL,QAASA,EACTlxR,IAAKA,EACLo6C,OAAQA,IAGLp6C,CACT,CAkBO,SAASqxR,IAAyB7M,EAAUnjL,GAYjD,OAAO,IAAc,CACnBnuJ,KAZSq+U,IAAsB/M,GAAU,IAER,MADjBxH,IAAoB37K,GACG,CACvC5zB,MAAO,CACLnuH,MAAO,WAIX,CACEvP,MAAO,GAKX,CACO,SAASwhV,IAAsB9jN,GACpC,IAAI73D,IAAUpnE,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,KAAmBA,UAAU,GAC7E,OAAOq9U,IAAoB,GAASp+M,GAASA,EAAQ,IAAQA,EAAO,CAClE6vG,KAAM,WACH1nK,EACP,CAQO,SAAS47Q,IAA2BhN,EAAUx1B,EAAWl0J,EAAKytE,GACnE,IAAIvoK,EAAM,CAAC,EAIX,GAHIgvP,IACFhvP,EAAIt5C,MAAQsoS,GAEVyiC,IAAWjN,GAAW,CACxB,IAAIz+G,EAAQy+G,EAASz+G,MACjB6/G,IAAW7/G,GACb/lK,EAAIo3P,OAAS0vB,IAAe/gH,GACnBi7G,IAAYj7G,GACrB/lK,EAAIo3P,OAASrxF,EAAMqxF,OACV4oB,IAAUj6G,GACnB/lK,EAAIo3P,OAASrxF,EAAMuX,KAEnBt9K,EAAIjwD,MAAQg2N,CAEhB,MACE/lK,EAAIytE,MAAQ,IAAQ+2M,EAAU1pL,GAEhC,GAAIytE,EAAQ,CACV,IAAIx3I,EAASw3I,EAAOx3I,OAClBgrJ,EAAOxT,EAAOwT,KACZhrJ,IACF/wB,EAAI+wB,OAASA,GAEXgrJ,IACF/7K,EAAI+7K,KAAOA,EAEf,CACA,OAAO/7K,CACT,CAIO,SAAS0xR,IAAsB9lR,GACpC,IAAIojP,EAAYpjP,EAAMojP,UACpB2iC,EAAkB/lR,EAAM+lR,gBACxBC,EAAmBhmR,EAAMgmR,iBACzB7gQ,EAASnlB,EAAMmlB,OACf8gQ,EAAcjmR,EAAMimR,YACpBC,EAAqBlmR,EAAMqnQ,aAC3BA,OAAsC,IAAvB6e,EAAgC,GAAMA,EACnDx0G,EAAO,EAAI21F,GAAgBA,EAAe,EAAI,aAAU5uS,EACxD/P,EAAQ,IAAQq9T,EAAiB,CACnCr0G,KAAMA,EACNn6E,OAAQ0uL,IAENp1T,OAA2B4H,IAArButT,EAAiC,IAAQA,EAAkB,CACnEt0G,KAAMA,IACH,IAAQq0G,EAAiB,CAC5BxuL,OAAQ,MACRm6E,KAAMA,IAEJt9K,EAAM,CAAC,EACX,GAAqB,IAAjBizQ,GAAuC,IAAjBA,EAAoB,CAC5CjzQ,EAAIt5C,MAAQsoS,EACZ,IAAIvhL,EAAyB,IAAjBwlM,EAAqB3+S,EAAQmI,EACzCujC,EAAIytE,MAAQA,CACd,KAAO,CACL,IAAIs4F,EAAQi7G,IAAY/N,GAAgB,GAAG9xT,OAAO8xT,EAAa7b,OAAQ,OAAOj2S,OAAOmT,EAAO,UAAUnT,OAAO8xT,EAAa7b,OAAQ,QAAQj2S,OAAOsb,GAAO,GAAGtb,OAAO8xT,EAAc,OAAO9xT,OAAOmT,EAAO,OAAOnT,OAAO,EAAI8xT,EAAc,OAAO9xT,OAAOsb,GACnPujC,EAAIo3P,OAAS,UAAWj2S,OAAO6tS,EAAW,OAAQ7tS,OAAO4kN,EAAO,IAClE,CAIA,OAHIh1I,IACF/wB,EAAI+wB,OAASA,GAER/wB,CACT,CAgBO,SAASmxR,IAASljP,GACvB,IAAIozD,EAAUpzD,EAAMozD,QAClB4vL,EAAahjP,EAAMgjP,WACnBc,EAAc9jP,EAAM8jP,YACpBb,EAAUjjP,EAAMijP,QAChB92O,EAASnM,EAAMmM,OACf40M,EAAY/gN,EAAM+gN,UAClBtoS,EAAQunF,EAAMvnF,MACdiyP,EAAQ1qK,EAAM0qK,MACd5nL,EAASkd,EAAMld,OACfihQ,EAAa/jP,EAAM+jP,WACnB/e,EAAehlO,EAAMglO,aAEvB,GAAIge,EAAY,CAEd,GAAIgB,IAAkBhB,GAAa,CACjC,IAAI7uO,EAAO8vO,EACP/lB,EAAYzlT,aAAqC,EAASA,EAAM9W,IAAI,QACxE,GAAIuiV,IAAgBlB,GAAa,CAC/B,IAAImB,EAC+B,QAAlCA,EAAgBnf,SAA4C,IAAlBmf,IAA2Cnf,EAAeof,IAAgB,CACnH7N,SAAUyM,EACVqB,UAAWP,EACXb,QAASA,EACT92O,OAAQA,KAEV,IAAI2/G,EAAMk3H,EAAWl3H,IACnB8uH,EAAWoI,EAAWpI,SACtBtyU,EAAO06U,EAAW16U,KACpB,GAAIopU,IAAU5lH,IAAQk5G,GAAgB4V,GAAYtyU,IAASi2U,IAGzD,OAAI7zE,SAAsCA,EAAMr4B,OAEvCkxG,IAA2BP,EAAYjiC,EAAW,CACvDujC,UAAW,OACV,CACDxhQ,OAAQA,IAGRkiP,IAAiBub,IAAkBriB,GAG9BulB,IAAsB,CAC3B1iC,UAAWA,EACX2iC,gBAAiBV,EACjBhe,aAAcA,EACdliP,OAAQA,IAGLygQ,IAA2BP,EAAYjiC,EAAWwjC,IAAiBvB,EAAY5vL,GAAW,CAC/FkxL,UAAW,SACT,CAAC,EAAG,CACNxhQ,OAAQA,IAEL,GAAI+uP,IAAS/lH,GAAM,CACxB,GAAIq3H,IAAWW,GACb,OAAOL,IAAsB,CAC3B1iC,UAAWA,EACX2iC,gBAAiBV,EACjBW,iBAAkBG,EAClB9e,aAAcA,EACdliP,OAAQA,IAIV,IAAS,IADMswE,IAAY,GAAI,GAAK,IAGxC,CACF,CACA,OAAOmwL,IAA2BP,EAAYjiC,EAAWw/B,IAAkBriB,GAAa,CACtFomB,UAAW,SACT,CAAC,EAEL,CACExhQ,OAAQA,EAERgrJ,KAAoB,SAAdowF,EAAsJ,QAA9H/pN,EAA4C,QAAnC8vO,EAAiBjf,SAA6C,IAAnBif,EAA4BA,EAAiBjB,EAAWhe,oBAAoC,IAAV7wN,EAAmBA,EAAQ,QAAM/9E,GAEzM,CAAO,GAAIouT,IAAWxB,GAAa,CACjC,IACIyB,EAAe3hQ,EAAS,CAC1BA,OAAQA,GACN,CAAC,EACL,OAAO,IAAc,IAAc,CAAC,EAAG4hQ,IAA4BtxL,EAJvD4vL,EAAWlhV,QAI8D2iV,EACvF,CAGF,CAKA,OAHIp4M,GAAW03M,KACbA,EAAaA,KAEXA,EAEK,IAAc,IAAc,CAAC,EAAGA,GAAajhQ,EAAS,CAC3DA,OAAQA,GACN,CAAC,GAEAihQ,CACT,CAIO,SAASW,IAA4BtxL,EAAStxJ,GACnD,OAAI,GAAS,CAAC,IAAK,MAAOsxJ,IAAsB,UAAVtxJ,EAC7B,CACL09H,MAAO,CACLnuH,MAAO,UAGF,GAAS,CAAC,IAAK,MAAO+hJ,IAAsB,WAAVtxJ,EACpC,CACL09H,MAAO,CACLnuH,MAAO,WAINkiU,IAAiBzxU,EAC1B,CCtRO,SAAS6iV,IAAmBzhI,GACjC,OAAOA,GAA6B,WAAfA,GAA0C,SAAfA,CAClD,CACA,SAAS0hI,IAAiB1hI,EAAY1jF,EAAO7rF,GAC3C,MAAO,GAAGzgC,OAAOgwM,EAAY,KAAKhwM,OAAOssH,GAAOtsH,OAAOygC,EAAS,KAAKzgC,OAAO,GAAUygC,IAAW,GAAI,IACvG,CACO,IAAI,IAAsB,MAC1B,SAASkxS,IAAgBrzR,GAC9B,IAAIkyR,EAAkBlyR,EAAKkyR,gBACzB/vS,EAAS6d,EAAK7d,OACduvK,EAAa1xJ,EAAK0xJ,WAClBmsB,EAAO79K,EAAK69K,KACZy1G,EAAiBtzR,EAAKszR,eACtB34O,EAAS36C,EAAK26C,OAChB,GAAIw4O,IAAmBzhI,GACrB,OAAO6hI,IAAiB,CACtBrB,gBAAiBA,EACjB/vS,OAAQA,EACRuvK,WAAYA,EACZmsB,KAAMA,EACNljI,OAAQA,IAGZ,IAAIqzB,EAAQwlN,IAActB,EAAiBr0G,EAAMy1G,GAC7Cx8U,EAAO28U,IAAevB,GAC1B,QAAettT,IAAXud,QAAuCvd,IAAf8sL,GAA4B/2G,EAAO+4O,kBAAmB,CAChF,GAAa,iBAAT58U,EAAyB,CAC3B,GAAIw8U,GAAkB34O,EAAOg5O,2BAA4B,OAAOJ,IAAiB,CAC/ErB,gBAAiBA,EACjB/vS,OAAQw4D,EAAOi5O,uBACfliI,WAAY/2G,EAAOg5O,2BACnB91G,KAAMA,EACNljI,OAAQA,IAEV,GAAIA,EAAOk5O,iBACT,OAAON,IAAiB,CACtBrB,gBAAiBA,EACjB/vS,OAAQw4D,EAAOgnH,aACfjQ,WAAY/2G,EAAOk5O,iBACnBh2G,KAAMA,EACNljI,OAAQA,GAGd,CACA,GAAa,aAAT7jG,GAAuB6jG,EAAOm5O,gBAAkBnC,IAAWO,SAAiDttT,IAA7BstT,EAAgB9I,SACjG,OAAOmK,IAAiB,CACtBrB,gBAAiBA,EACjB/vS,OAAQw4D,EAAOimH,WACflP,WAAY/2G,EAAOm5O,eACnBj2G,KAAMA,EACNljI,OAAQA,GAGd,CACA,GAAIo5O,IAA+B7B,GAAkB,CACnD,IAAI8B,EAAoBC,EACpBt8B,EA8LD,SAA8B3wO,GACnC,IAAIgnD,EAAQhnD,EAAMgnD,MAChBo7M,EAAWpiQ,EAAMoiQ,SACjBjnS,EAAS6kC,EAAM7kC,OACfuvK,EAAa1qI,EAAM0qI,WACnBwiI,EAAgBltQ,EAAMktQ,cACtBC,EAAantQ,EAAMmtQ,WACrB,OAAK/K,GAAYjnS,GAEVinS,GAAY13H,EACR,GAAGhwM,OAAOgwM,EAAY,KAAKhwM,OAAOssH,EAAO,OAAOtsH,OAAOygC,EAAQ,OAExEA,EAAS,GAASA,GAAUA,EAAS+xS,EAC9B,GAAGxyU,OAAOyyU,EAAa,MAAQ,OAAQ,WAAWzyU,OAAOssH,EAAO,OAAOtsH,OAAOygC,EAAQ,ONlC1F,SAA0BinS,EAAUp7M,EAAOmmN,GAChD,GAAK/K,EAAL,CAGA,IAAIvrG,EAAOmsG,IAA4BZ,GAInCtmG,EAAMqxG,GAAc7K,IAAcF,GACtC,MAAO,GAAG1nU,OAAOohO,EAAM,MAAQ,OAAQ,WAAWphO,OAAOssH,EAAO,MAAMtsH,OAAOm8N,EAAM,IANnF,CAOF,CM0BWu2G,CAAiBhL,EAAUp7M,EAAOmmN,EAE7C,CA/MiBE,CAAqB,CAChCrmN,MAAOA,EACPo7M,SAAUuI,IAAWO,GAA0F,QAAtE8B,EAAqB9J,IAAkBgI,EAAgB9I,iBAA8C,IAAvB4K,OAAgC,EAASA,EAAmBj3M,UAAOn4G,EAC1Lud,OAAQA,EACRuvK,WAAY/2G,EAAOm5O,eACnBI,cAAev5O,EAAOimH,WACtBuzH,WAAYG,IAAgBpC,KAAyE,QAAnD+B,EAAwB/B,EAAgBjrU,aAA6C,IAA1BgtU,OAAmC,EAASA,EAAsBn9U,QAAUo2U,IAAU50H,MAErM,OAAOq/F,EAAS,CACdA,OAAQA,QACN/yR,CACN,CAOA,OANAud,EAASw/K,IAAa,CACpB7qN,KAAMA,EACNy9U,gBAAiBpyS,EACjBw4D,OAAQA,EACR24O,eAAgBA,IAEd3B,IAAWO,IAAoBhS,IAAUgS,EAAgB53H,KAKpD,CACLq9F,OAAQ68B,IAAoBxmN,EALf,IAAQkkN,EAAiB,CACtCr0G,KAAMA,EACNi1G,UAAW,QAGkC3wS,EAAQuvK,EAAY/2G,IAE1Dx4D,GAA8C,iBAApCsxS,IAAevB,GAC3B,CACLv6B,OAAQ,GAAGj2S,OAAO+yU,IAAWzmN,EAAO7rF,KAG/B,CACLw1Q,OAAQ,WAAWj2S,OAAOssH,EAAO,QAAQtsH,OAAOssH,EAAO,UAAYtsH,OAAOssH,GAGhF,CACA,SAASwlN,IAActB,EAAiBr0G,EAAMy1G,GAC5C,OAAI3B,IAAWO,GACToB,EACK,GAAG5xU,OAAO,IAAQwwU,EAAiB,CACxCr0G,KAAMA,EACNn6E,OAAQ,QACN,KAAKhiJ,OAAO,IAAQwwU,EAAiB,CACvCr0G,KAAMA,EACNn6E,OAAQ,WAGH,IAAQwuL,EAAiB,CAC9Br0G,KAAMA,IDlCP,SAAwB62G,GAC7B,IAAIpuH,EAAQouH,EAASpuH,MACrB,OAAI6/G,IAAW7/G,GACN+gH,IAAe/gH,GAEjB,GAAG5kN,OAAO,GAAU4kN,GAC7B,CCgCWquH,CAAezC,EAE1B,CACO,SAASqB,IAAiBpnR,GAC/B,IAAIipQ,EACA8c,EAAkB/lR,EAAM+lR,gBAC1B/vS,EAASgqB,EAAMhqB,OACfuvK,EAAavlJ,EAAMulJ,WACnBmsB,EAAO1xK,EAAM0xK,KACby1G,EAAiBnnR,EAAMmnR,eACvB34O,EAASxuC,EAAMwuC,OACfqzB,EAAQ7hE,EAAM6hE,MAEhB,OADqB,QAApBonM,EAASpnM,SAA8B,IAAXonM,IAA6BpnM,EAAQwlN,IAActB,EAAiBr0G,EAAMy1G,IACzF,gBAAVtlN,GAEJ2jN,IAAWO,IAAoBhS,IAAUgS,EAAgB53H,KAKhD,CACLq9F,OAAQ68B,IAAoBxmN,EALf,IAAQkkN,EAAiB,CACtCr0G,KAAMA,EACNi1G,UAAW,QAGkC3wS,EAAQuvK,EAAY/2G,IAG9D,CACLg9M,OAAQy7B,IAAiB1hI,EAAY1jF,EAAO7rF,GAEhD,CACO,SAASyyS,IAAY1C,EAAiBp7U,EAAMqrC,EAAQuvK,EAAY/2G,EAAQk6O,GAE7E,IAAI,GAASnjI,KAAeyhI,IAAmBzhI,GAA/C,CAEO,QAAe9sL,IAAXud,QAAuCvd,IAAf8sL,GAA4B/2G,EAAO+4O,mBAC5B,iBAApCD,IAAevB,GAAqC,CACtD,GAAIv3O,EAAOg5O,4BAA8BmB,IAA0B5C,IAA8C,cAA1BA,EAAgBh5E,MACrG,OAGF,GAAIv+J,EAAOk5O,iBACT,MAEJ,CAGF,GAAIiB,IAA0B5C,IAA8C,cAA1BA,EAAgBh5E,OAAyBv+J,EAAOi5O,uBAChG,OAAOjyH,IAAa,CAClB7qN,KAAM,eACN6jG,OAAQA,EACR24O,gBAAgB,IAGpB,GAAIS,IAA+B7B,GAAkB,CACnD,IAAI6C,EACA3L,EAAWuI,IAAWO,GAA2F,QAAvE6C,EAAsB7K,IAAkBgI,EAAgB9I,iBAA+C,IAAxB2L,OAAiC,EAASA,EAAoBh4M,UAAOn4G,EAClM,QAAiBA,IAAbwkT,GAA0BzuO,EAAO+4O,mBAAqB/4O,EAAOm5O,eAC/D,OAGF,OA4CG,SAAoBtlP,GACzB,IAAI+lP,EAAkB/lP,EAAM+lP,gBAC1BnL,EAAW56O,EAAM46O,SACjBzuO,EAASnM,EAAMmM,OACfk6O,EAAuBrmP,EAAMqmP,qBAC/B,GAAIN,EACF,OAAOA,EAET,GAAInL,EACF,MAAO,CACLzxB,OAAQqyB,IAA4BZ,IAGxC,OAAOyL,OAAuBjwT,EAAY+1E,EAAOimH,UACnD,CA1DW,CAAW,CAChB2zH,gBAAiBpyS,EACjBinS,SAAUA,EACVzuO,OAAQA,EACRk6O,qBAAsBA,GAE1B,CACA,OAAOlzH,IAAa,CAClB7qN,KAAMA,EACNy9U,gBAAiBpyS,EACjBw4D,OAAQA,GA1BV,CA4BF,CACO,SAASq6O,IAAgBtjI,EAAYwgI,EAAiBxlB,GAC3D,OAAIh7G,IAAe6vH,IAAY7vH,IAA8B,WAAfA,GAA0C,SAAfA,GAChEA,EAELqiI,IAA+B7B,IAAkC,SAAdxlB,GAAsC,QAAdA,EAEtEilB,IAAWO,IAA8J,QAAzI+C,EAAsB/K,IAAkBgI,aAAyD,EAASA,EAAgB9I,iBAA+C,IAAxB6L,GAAkCA,EAAoBnyG,IAAM,MAAQ,YAF9P,EACE,IAAImyG,CAIR,CAIO,SAAStzH,IAAa30J,GAC3B,IAAIl2D,EAAOk2D,EAAMl2D,KACfy9U,EAAkBvnR,EAAMunR,gBACxB55O,EAAS3tC,EAAM2tC,OACf24O,EAAiBtmR,EAAMsmR,eAEzB,OAAI,GAASiB,GACJA,EAELz9U,IAAS+1U,IAEJyG,EAAiB34O,EAAOi5O,uBAAyBj5O,EAAOgnH,kBAFjE,CAKF,CAmBA,SAAS8yH,IAAWzmN,EAAO7rF,GACzB,MAAO,UAAUzgC,OAAOssH,EAAO,OAAQtsH,OAAOygC,GAAU,GAAI,KAC9D,CACA,SAAS+yS,IAAoBlnN,EAAO7rF,EAAQuvK,EAAY/2G,GACtD,IAAIgI,EACJ,OAAIwwO,IAAmBzhI,GACd0hI,IAAiB1hI,EAAY1jF,EAAO7rF,GAEtCsyS,IAAWzmN,EAA2D,QAAnDrrB,EAAQ,GAASxgE,GAAUA,OAASvd,SAAiC,IAAV+9E,EAAmBA,EAAQhI,EAAOgnH,aACzH,CACO,SAAS6yH,IAAoBW,EAAYC,EAAUjzS,EAAQuvK,EAAY/2G,GAC5E,QAAe/1E,IAAXud,QAAuCvd,IAAf8sL,GAA4B/2G,EAAO+4O,mBAAqB/4O,EAAOk5O,iBACzF,OAAOW,IAAoBW,EAAYC,EAAUz6O,EAAOgnH,aAAchnH,EAAOk5O,iBAAkBl5O,GAEjG,IAAI9lF,EAAQqgU,IAAoBC,EAAYhzS,EAAQuvK,EAAY/2G,GAC5D39E,EAAMk4T,IAAoBE,EAAUjzS,EAAQuvK,EAAY/2G,GAC5D,MAAO,GAAGj5F,OAAO0qU,IAAoB+I,GAAY,GAAQ,gBAAkBzzU,OAAOmT,EAAO,QAASnT,OAAO,IAAqB,QAASA,OAAOsb,EAChJ,CC3PO,IAAIq4T,IAAkB,MACzBC,IAAwB,CAC1Bl8U,EAAG,EACHC,EAAG,EACH6oC,MAAO,EACP6H,KAAM,EACNz6B,OAAQ,EACRgxC,YAAa,EACb7tB,KAAM,EACN7+B,MAAO,EACPo+E,YAAa,EACb01K,cAAe,EACf5kP,QAAS,EACTkM,KAAM,GAED,SAASumU,IAAgBjiU,GAC9B,OAAOA,KAAKgiU,GACd,CACO,SAASE,IAAiB90U,GAC/B,QAAUA,UAAoCA,EAAe,SAC/D,CACO,SAAS+0U,IAAY/0U,GAC1B,OAAOA,IAAwB,UAAfA,EAAS,MAAmBA,EAAY,MAC1D,CACO,SAASg1U,IAAYh1U,GAC1B,OAAOA,GAAQ,GAAQA,EACzB,CC3BO,SAASi1U,IAAenkV,GAC7B,MAAO,QAASA,GAAK,WAAYA,CACnC,CACO,SAASokV,IAAgBpE,GAC9B,QAASA,GAAc,WAAYA,CACrC,CACO,SAASqE,IAAYr0H,GAC1B,MAAO,UAAWA,CACpB,CCNA,IAAI,IAAY,CAAC,SAAU,cACzB,IAAa,CAAC,SAAU,cACxB,IAAa,CAAC,UAChB,SAAS,IAAQ1uL,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAwBlf,SAASi/U,IAAe/Q,GAC7B,IAAI/2M,EAAQ+2M,EAAS/2M,MACnBo7M,EAAWrE,EAASqE,SACpB9uH,EAAMyqH,EAASzqH,IACfqwG,EAAYoa,EAASpa,UACvB,OAAO,IAAc,IAAc,IAAc,IAAc,CAAC,EAAGye,EAAW,CAC5EA,SAAUA,GACR,CAAC,GAAI9uH,EAAM,CACbA,IAAKA,GACH,CAAC,GAAIqwG,EAAY,CACnBA,UAAWA,GACT,CAAC,GAAI,CAAC,EAAG,CACX38L,MAAOA,GAEX,CACO,SAAS+nN,IAAmBhR,GACjC,MAAO,SAAUA,CACnB,CACO,SAAS6N,IAAgB5yR,GAC9B,IAAI+kR,EAAW/kR,EAAK+kR,SAClB8N,EAAY7yR,EAAK6yR,UACjBjuR,EAAO5E,EAAKyxR,QACZ92O,EAAS36C,EAAK26C,OAChB,GAAI63O,IAAkBzN,SAAuCngT,IAA1BmgT,EAASvR,aAC1C,OAAOuR,EAASvR,aAElB,GAAIme,IAAW5M,GAAW,CACxB,IAAIqE,EAAWrE,EAASqE,SACtB9uH,EAAMyqH,EAASzqH,IACjB,GAAI8uH,IAAayJ,EACf,OAAOrC,IAAgB5rR,EAAK9tD,MAAQ,EAAI0rU,IAAc,uBAAwB59Q,EAAM+1C,GAC/E,GAAIulO,IAAU5lH,GACnB,MAAO,EAEX,CAEF,CACO,SAAS07H,IAAY7pR,GAC1B,IA4BM8pR,EAGIC,EAKAC,EApCNv0L,EAAUz1F,EAAMy1F,QAClBmjL,EAAW54Q,EAAM44Q,SACjB8N,EAAY1mR,EAAM0mR,UAClBjuR,EAAOuH,EAAMslR,QACb92O,EAASxuC,EAAMwuC,OACf+xN,EAAYvgQ,EAAMugQ,UAClB0pB,EAAmBjqR,EAAMiqR,iBACvBC,EAAc3Y,IAAe97K,GAC7BnvH,EAAO4vS,IAAoB+T,EAAmB,OAASC,EAAazxR,EAAM+1C,EAAQ,CACpF2nO,UAAW+T,IAEb,QAAazxT,IAAT6N,EACF,OAAOA,EAET,GAAIk/S,IAAW5M,GAAW,CACxB,IAAIqE,EAAWrE,EAASqE,SACtB9uH,EAAMyqH,EAASzqH,IACjB,GAAI8uH,IAAayJ,EACf,MAAO,CACLv2G,KAAMkmG,IAAc,mBAAoB59Q,EAAM+1C,IAE3C,GAAIulO,IAAU5lH,KAASy0H,IAAkBriB,GAC9C,MAAO,CACLpwF,KAAM,EAGZ,CACA,OAAIk0G,IAAgB5rR,EAAK9tD,MAEnB41T,EACEqiB,IAAkBriB,IAEgC,QAA3CwpB,EAAoBv7O,EAAO/1C,EAAK9tD,aAAyC,IAAtBo/U,OAA+B,EAASA,EAAkBI,mBAAqB,CACzIh6G,KAAM,GAI4C,QAA5C65G,EAAqBx7O,EAAO/1C,EAAK9tD,aAA0C,IAAvBq/U,OAAgC,EAASA,EAAmB/E,mBAGxE,QAA5C6E,EAAqBt7O,EAAO/1C,EAAK9tD,aAA0C,IAAvBm/U,OAAgC,EAASA,EAAmBK,sBAb1H,CAgBF,CACO,SAASC,IAAWxR,EAAU8N,EAAWpB,EAAS92O,GACvD,SAAIulO,IAAU6E,EAASzqH,MAAQyqH,EAASqE,UAAYsJ,IAAgB3N,IAA+B,aAAlBA,EAASjuU,YAQjF8tB,IALAguT,IAAgB,CACrB7N,SAAUA,EACV8N,UAAWA,EACXpB,QAASA,EACT92O,OAAQA,GAId,CACO,SAAS67O,IAAe1T,GAC7B,OAAOA,KAAcA,EAASpiU,OAASoiU,EAAgB,KACzD,CACO,SAAS2T,IAAiBjF,GAC/B,OAAOA,GAAc,cAAeA,CACtC,CAIO,SAASkF,IAAuBlF,GACrC,IAAIphT,EAAYohT,aAA+C,EAASA,EAAsB,UAC9F,QAASphT,IAAc,GAAQA,IAAcuhT,IAAWvhT,EAC1D,CACO,SAASumT,IAA8BnF,GAC5C,IAAIphT,EAAYohT,aAA+C,EAASA,EAAsB,UAC9F,QAASphT,IAAc,GAAQA,IAAcoiT,IAAkBpiT,EACjE,CAKO,SAASuhT,IAAWH,GAEzB,OAAOA,MAAiBA,EAAkB,OAAiC,UAA5BA,EAAsB,UACvE,CACO,SAASiC,IAAejC,GAC7B,OAAOA,aAA+C,EAASA,EAAiB,IAClF,CACO,SAASQ,IAAWR,GACzB,OAAOA,GAAc,UAAWA,CAClC,CACO,SAASoF,IAA4B/iH,GAE1C,OAAO6+G,IAAgB7+G,KAAQ,IAAWA,IAAOgjH,IAAiBhjH,EACpE,CACO,SAASijH,IAAsCjjH,GAEpD,OAAO6+G,IAAgB7+G,IAAmB,iBAAZA,EAAG/8N,OAA4B+8N,EAAGvZ,KAAOu8H,IAAiBhjH,EAC1F,CACO,SAASgjH,IAAiBhjH,GAC/B,OAAOm+G,IAAWn+G,IAAO/+K,GAAS++K,EAAGvN,MACvC,CACO,SAASksH,IAAkBhB,GAChC,OAAOG,IAAWH,IAAeQ,IAAWR,EAC9C,CACO,SAASkB,IAAgBlB,GAC9B,OAAOA,IAAe,UAAWA,GAA0C,UAA5BA,EAAsB,YAAkB,SAAUA,CACnG,CACO,SAASwB,IAAWxB,GACzB,OAAOA,GAAc,UAAWA,GAAc,UAAWA,CAC3D,CACO,SAAS8C,IAAgB9C,GAC9B,OAAOA,IAAe,UAAWA,GAAc,SAAUA,EAC3D,CACO,SAASsD,IAA0BtD,GACxC,OAAOA,IAAe,SAAUA,GAAc,UAAWA,GAAc,WAAYA,EACrF,CACO,SAASuF,IAA0BvF,GACxC,OAAOA,GAAc,WAAYA,CACnC,CACO,SAASwF,IAAwBxF,GACtC,OAAOA,IAAe,WAAYA,GAAc,eAAgBA,EAClE,CACO,SAASyF,IAAiBlS,GAE/B,OAAO,GAAKA,EAAU,CAAC,SAAU,OAAQ,SAAU,SACrD,CAOO,SAAS,IAAQA,GACtB,IT2EIiP,EACFlxG,EACAh4J,ES7EEuwE,EAAMtsJ,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC3Ei/H,EAAQ+2M,EAAS/2M,MACjBn6F,EAASwnH,EAAIxnH,OACb6vH,EAASrI,EAAIqI,OACbwzL,EAAc,GAClB,GAqEK,SAAiBnS,GACtB,MAA8B,UAAvBA,EAASpa,SAClB,CAvEMwsB,CAAQpS,GACV/2M,EAAQ+rM,GAAc,aACjB,CACL,IAAIv4T,EACJ,IAAK65I,EAAI+7L,KACP,GAjBN,SAAsBrS,GACpB,MAAO,OAAQA,CACjB,CAeUsS,CAAatS,GACfvjU,EAAKujU,EAAS3pR,OACT,CACL,IAIMk8R,EAAgBC,EAJlBj9H,EAAMyqH,EAASzqH,IACjBqwG,EAAYoa,EAASpa,UACrBye,EAAWrE,EAASqE,SACtB,GAAIlJ,IAAU5lH,GAEZ94M,EAAKu+T,IAAYzlH,GACjB52D,GAA+C,QAApC4zL,EAAiBj8L,EAAIy3L,iBAA0C,IAAnBwE,EAA4BA,EAAiB,KAAsC,QAA9BC,EAAcl8L,EAAIqI,cAAoC,IAAhB6zL,EAAyBA,EAAc,SACpL,GAAI5sB,EACL8U,IAAY9U,IACdusB,EAAc,KAAMx1U,OAAOssH,EAAO,MAClCA,EAAQ,UAAUtsH,OAAOipT,EAAUtyF,SAC1BmnG,IAAY7U,IACrBusB,EAAc,KAAMx1U,OAAOssH,EAAO,MAClCA,EAAQ,UAAUtsH,OAAOipT,EAAUvyF,SAEnC52N,EAAKsS,OAAO62S,QAET,GAAIye,IAAaD,IAAiBC,GAAW,CAClD,IAAIoO,ET4CRxD,EAAqB9J,IS3CKd,GT4C5BtmG,EAAMkxG,EAAmBlxG,IS5CnBthO,GT6CNspE,GAAO,OAAyBkpQ,EAAoB,MAC7Cj3M,MACC+lG,EAAM,MAAQ,IAAM,GAAKh4J,GAAM3rD,KAAI,SAAU5S,GACnD,OAAOssT,GAAQ,GAAGn3T,OAAa,SAAN6K,EAAe,GAAK,IAAI7K,OAAO6K,EAAG,MAAM7K,OAAOopE,EAAKv+D,IAC/E,IAAGiL,KAAK,KAGAsrN,EAAM,MAAQ,IAAM,WAAa,GAAKh4J,GAAM3rD,KAAI,SAAU5S,GAChE,OAAOssT,GAAQ,IAAIn3T,OAAO6K,EAAG,KAAK7K,OAAOopE,EAAKv+D,IAChD,IAAGiL,KAAK,ISrDFksI,IAAW,CAAC,QAAS,OAAOpwJ,SAAS+nJ,EAAIy3L,YAAcz3L,EAAIy3L,WAAa,KAAuC,QAA/B0E,EAAen8L,EAAIqI,cAAqC,IAAjB8zL,EAA0BA,EAAe,GAClK,CACF,CAEEh2U,IACFwsH,EAAQA,EAAQ,GAAGtsH,OAAOF,EAAI,KAAKE,OAAOssH,GAASxsH,EAEvD,CAOA,OANIkiJ,IACF11B,EAAQ,GAAGtsH,OAAOssH,EAAO,KAAKtsH,OAAOgiJ,IAEnC7vH,IACFm6F,EAAQ,GAAGtsH,OAAOmyB,EAAQ,KAAKnyB,OAAOssH,IAEpCqtB,EAAIo8L,MACCje,GAAoBxrM,GAClBqtB,EAAIwiF,KAENw7F,GAAoBrrM,EAAOqtB,EAAIwiF,MAAQq5G,EAGvC3d,GAAmBvrM,GAASkpN,CAEvC,CACO,SAAS,IAAW3iT,GACzB,OAAQA,EAAIz9B,MACV,IAAK,UACL,IAAK,UACL,IAAK,UACH,OAAO,EACT,IAAK,eACH,OAAO66U,IAAWp9S,MAAUA,EAAI+lL,IAClC,IAAK,WACH,OAAO,EAEX,MAAM,IAAIlkL,MAAM,IAA6B7B,EAAIz9B,MACnD,CAoDO,IAAI4gV,IAAwB,SAA+B3S,EAAUpqO,GAC1E,OAAQA,EAAOg9O,YACb,IAAK,QACH,OAAO5S,EAAS/2M,MAClB,IAAK,aACH,OAvBC,SAAkC+2M,GACvC,IAAIpa,EAAYoa,EAASpa,UACvBrwG,EAAMyqH,EAASzqH,IACf8uH,EAAWrE,EAASqE,SACpBp7M,EAAQ+2M,EAAS/2M,MACnB,GAAIyxM,IAAY9U,GACd,MAAO,GAAGjpT,OAAOssH,EAAO,gBAAgBtsH,OAAOipT,EAAUtyF,OAAQ,KAC5D,GAAImnG,IAAY7U,GACrB,MAAO,GAAGjpT,OAAOssH,EAAO,gBAAgBtsH,OAAOipT,EAAUvyF,OAAQ,KAEnE,IAAIw/G,EAAiBxO,IAAaD,IAAiBC,GAAYc,IAAkBd,QAAYxkT,EACzFpjB,EAAKmpT,IAAcitB,aAAuD,EAASA,EAAe76M,QAAU66M,aAAuD,EAASA,EAAen9H,UAAY,YAAcylH,IAAU5lH,IAAQ,MAC3O,OAAI94M,EACK,GAAGE,OAAOF,EAAGuT,cAAe,KAAKrT,OAAOssH,EAAO,KAE/CA,CAEX,CAMa6pN,CAAyB9S,GAClC,QACE,OAnDC,SAA8BA,EAAUpqO,GAC7C,IAAIqzB,EAAQ+2M,EAAS/2M,MACnBssF,EAAMyqH,EAASzqH,IACf8uH,EAAWrE,EAASqE,SACpBze,EAAYoa,EAASpa,UACvB,GAAkB,UAAdA,EACF,OAAOhwN,EAAOm9O,WACT,GAAI5X,IAAU5lH,GACnB,MAAO,GAAG54M,OAAOssH,EAAO,aACnB,GAAIo7M,IAAaD,IAAiBC,GAAW,CAClD,IAAI4K,EACAj3M,EAA8D,QAAtDi3M,EAAqB9J,IAAkBd,UAA8C,IAAvB4K,OAAgC,EAASA,EAAmBj3M,KACtI,GAAIA,EACF,MAAO,GAAGr7H,OAAOssH,EAAO,MAAMtsH,OAAO8nU,IAAiBzsM,GAAMvlH,KAAK,KAAM,IAE3E,MAAO,GAAImzS,EACT,OAAI8U,IAAY9U,GACP,GAAGjpT,OAAOssH,EAAO,aAAatsH,OAAOipT,EAAUtyF,QAC7CmnG,IAAY7U,GACd,GAAGjpT,OAAOssH,EAAO,aAAatsH,OAAOipT,EAAUvyF,QAE/C,GAAG12N,OAAOw3T,GAAUvO,GAAY,QAAQjpT,OAAOssH,GAG1D,OAAOA,CACT,CA0Ba+pN,CAAqBhT,EAAUpqO,GAE5C,EACIq9O,IAAiBN,IACd,SAASO,IAAkBC,GAChCF,IAAiBE,CACnB,CAIO,SAAS,IAAMhG,EAAiBv3O,EAAQ3tC,GAC7C,IAAImrR,EACAC,EAAiBprR,EAAMorR,eACzBC,EAAuBrrR,EAAMsrR,eAC7BA,OAA0C,IAAzBD,GAAyCA,EACxDE,EAAyD,QAA3CJ,EAAYK,IAAStG,UAA4C,IAAdiG,OAAuB,EAASA,EAAUj4R,MAC/G,IAAKyxR,IAAWO,GACd,OAAOqG,QAA+CA,EAAarG,EAAgBhyR,MAErF,IAKMsuC,EALFu2O,EAAWmN,EACX39S,EAAM+jT,EAAiBG,IAAa1T,EAAUpqO,QAAU/1E,EAC5D,OAAIwzT,EACK1e,GAAgB6e,EAAYxT,EAAS7kR,MAAO3rB,GAG6C,QAAxFi6D,EAAQ+pP,QAA+CA,EAAaxT,EAAS7kR,aAA6B,IAAVsuC,EAAmBA,EAAQj6D,CAEvI,CACO,SAASikT,IAASzT,GACvB,OAAI+P,IAA0B/P,IAAaA,EAAS/iE,KAC3C+iE,EAAS/iE,KACP+0E,IAA0BhS,IAAaA,EAASv/D,OAClDu/D,EAASv/D,OACPowE,IAAgB7Q,IAAaA,EAAS7nJ,OACxC6nJ,EAAS7nJ,YADX,CAIT,CACO,SAASu7J,IAAa1T,EAAUpqO,GACrC,OAAOq9O,IAAejT,EAAUpqO,EAClC,CACO,SAAS+9O,IAAgB3T,GAC9B,GAAIiS,IAAwBjS,GAG1B,MAAO,CACL5iS,OAHW4iS,EAAS5iS,OAIpBuvK,WAHaqzH,EAASrzH,YAMxB,IAAIinI,EACAC,EAA8C,QAArCD,EAAaH,IAASzT,UAAsC,IAAf4T,EAAwBA,EAAa,CAAC,EAGhG,MAAO,CACLx2S,OAHYy2S,EAAMz2S,OAIlBuvK,WAHcknI,EAAMlnI,WAM1B,CA2CO,SAASmnI,IAAYrH,GAC1B,OAAIG,IAAWH,GACNA,EACEkF,IAAuBlF,GACzBA,EAAWphT,eADb,CAIT,CACO,SAAS0oT,IAAmBtH,GACjC,OAAIgB,IAAkBhB,GACbA,EACEmF,IAA8BnF,GAChCA,EAAWphT,eADb,CAIT,CAIO,SAAS2oT,IAAevH,EAAY5vL,EAASjnD,GAClD,IAAI0gD,EAAMtsJ,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/E,OAAI,GAASyiV,IAAe18R,GAAS08R,IAAe3nI,GAAU2nI,IAE5D,IZ7WG,SAA6B5vL,EAAS9qJ,EAAMxG,GACjD,MAAO,WAAWoR,OAAOkgJ,EAAS,UAAUlgJ,OAAO5K,EAAM,2BAA2B4K,OAAO,GAAUpR,GAAQ,KAC/G,CY2Wa,CAAgCsxJ,EADrB,GAAS4vL,GAAc,SAAW18R,GAAS08R,GAAc,SAAW,UACvBA,IAC1D,CACLlhV,MAAOkhV,IAIPgB,IAAkBhB,GACbwH,IAAoBxH,EAAY5vL,EAASjnD,EAAQ0gD,GAC/Cs7L,IAA8BnF,GAChC,IAAc,IAAc,CAAC,EAAGA,GAAa,CAAC,EAAG,CAEtDphT,UAAW4oT,IAAoBxH,EAAWphT,UAAWwxH,EAASjnD,EAAQ0gD,KAGnEm2L,CACT,CACO,SAASwH,IAAoBC,EAAIr3L,EAASjnD,EAAQ0gD,GACvD,GAAI27L,IAAwBiC,GAAK,CAClBA,EAAG92S,OAAhB,IACEuvK,EAAaunI,EAAGvnI,WAChB5mI,GAAO,OAAyBmuQ,EAAI,KACtC,GAAI9F,IAAmBzhI,KAAgB/2G,EAAO+4O,kBAE5C,OADA,IAAS,IAAuC9xL,IACzCo3L,IAAoBluQ,EAAM82E,EAASjnD,EAAQ0gD,EAEtD,KAAO,CACL,IAAI69L,EAAYpE,IAA0BmE,GAAM,OAASlC,IAA0BkC,GAAM,SAAWrD,IAAgBqD,GAAM,SAAW,KACrI,GAAIC,GAAaD,EAAGC,GAAY,CAC9B,IAAIC,EAAgBF,EAAGC,GAErBE,GADWD,EAAch3S,OACVg3S,EAAcznI,YAC7B2nI,GAAW,OAAyBF,EAAe,KACrD,GAAIhG,IAAmBiG,KAAkBz+O,EAAO+4O,kBAE9C,OADA,IAAS,IAAuC9xL,IACzCo3L,IAAoB,IAAc,IAAc,CAAC,EAAGC,GAAK,CAAC,GAAG,OAAgB,CAAC,EAAGC,EAAWG,IAAYz3L,EAASjnD,EAAQ0gD,EAEpI,CACF,CACA,OAAIs2L,IAAWsH,GACNK,IAAaL,EAAIr3L,EAASvG,GAIrC,SAAsBq5L,GACpB,IAAI59U,EAAO49U,EAAe,KAC1B,GAAI59U,EACF,OAAO49U,EAET,IAAIpuH,EAAQouH,EAASpuH,MAErB,OADAxvN,EAAOg+C,GAASwxK,GAAS,eAAiB,GAASA,GAAS,UAAY6/G,IAAW7/G,GAAS,gBAAa1hM,EAClG,IAAc,IAAc,CAAC,EAAG8vT,GAAW,CAAC,EAAG,CACpD59U,KAAMA,GAEV,CAZSyiV,CAAaN,EACtB,CAYO,SAASK,IAAaL,EAAIr3L,GAC/B,IACE43L,GADUzqV,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,CAAC,GACnD0qV,cAC5BA,OAAwC,IAAxBD,GAAyCA,EACvD7uB,EAAYsuB,EAAGtuB,UACjBye,EAAW6P,EAAG7P,SACd9uH,EAAM2+H,EAAG3+H,IACTtsF,EAAQirN,EAAGjrN,MACT+2M,EAAW,IAAc,CAAC,EAAGkU,GAqBjC,GAnBKQ,IAAiB9uB,GAAc+U,IAAc/U,IAAe8U,IAAY9U,IAAe6U,IAAY7U,KACtG,IZraG,SAA0BA,GAC/B,MAAO,iCAAkCjpT,OAAOipT,EAAW,KAC7D,CYmaa,CAA6BA,WAC/Boa,EAASpa,WAGdye,IACFrE,EAASqE,SAAWc,IAAkBd,IAEpCp7M,IACF+2M,EAAS/2M,MAAQ,GAAGtsH,OAAOssH,IAGzBkyM,IAAU5lH,KACZyqH,EAASzqH,IAAM0lH,IAAa1lH,EAAK14D,IAE/By+K,IAAS/lH,KAAS6jH,IAAOv8K,IAC3B,IZ5SG,SAAyCA,GAC9C,MAAO,WAAWlgJ,OAAOkgJ,EAAS,yCACpC,CY0Sa,CAA4CA,IAGnD8wL,IAAgB3N,GAAW,CAC7B,IAAIjuU,EAAOiuU,EAASjuU,KAChB4iV,EP1fD,SAAqB5iV,GAC1B,GAAIA,EAEF,OADAA,EAAOA,EAAKiW,eAEV,IAAK,IACL,KAAK8/T,IACH,MAAO,eACT,IAAK,IACL,KAAKE,IACH,MAAO,WACT,IAAK,IACL,KAAKD,IACH,MAAO,UACT,IAAK,IACL,KAAKE,IACH,MAAO,UACT,KAAKC,IACH,MAAO,UAKf,COoemB0M,CAAY7iV,GACvBA,IAAS4iV,IAEX3U,EAASjuU,KAAO4iV,GAEL,iBAAT5iV,GACE8oU,IAAsBjV,KACxB,IZncD,SAA2C7zT,EAAM6zT,GACtD,MAAO,uBAAwBjpT,OAAO5K,EAAM,sBAAwB4K,OAAOipT,EAAW,mCACxF,CYiciB,CAA8C7zT,EAAM6zT,IAC7Doa,EAASjuU,KAAO,eAGtB,MAAO,IAAKwmU,IAAwB17K,GAAU,CAE5C,IAAIg4L,EAnKD,SAAqB7U,EAAUnjL,GACpC,IAAIi4L,EACJ,OAAQj4L,GACN,IAAK,WACL,IAAK,YACH,MAAO,eACT,IAAK,MACL,IAAK,SACL,IAAK,QACL,IAAK,QACL,IAAK,aACH,MAAO,UACT,IAAK,QACH,MAAO,UAEX,GAAIm0L,IAAmBhR,IAAa,GAAQA,EAASrkU,MACnD,MAAO,UAET,IAAIiqT,EAAYoa,EAASpa,UACvBrwG,EAAMyqH,EAASzqH,IAEjB,GADayqH,EAASqE,SAEpB,MAAO,WAET,GAAI9uH,GAAOqwG,IAAc8U,IAAY9U,KAAe6U,IAAY7U,GAC9D,MAAO,eAET,GAAI2pB,IAAgBvP,IAAoD,QAAtC8U,EAAkB9U,EAAS99T,aAAuC,IAApB4yU,GAA8BA,EAAgB/iV,KAC5H,OAAQm3U,IAAqBlJ,EAAS99T,MAAMnQ,OAC1C,IAAK,UACL,IAAK,eACH,MAAO,eACT,IAAK,OACH,MAAO,WAGb,MAAO,SACT,CA8HkBgjV,CAAY/U,EAAUnjL,GACpCmjL,EAAe,KAAI6U,CACrB,CACA,GAAIlH,IAAgB3N,GAAW,CAC7B,IAAI/9P,EA+DD,SAA8B+9P,EAAUnjL,GAC7C,IAAI9qJ,EAAOiuU,EAASjuU,KACpB,GAAa,YAATA,GAAkC,UAAZ8qJ,EACxB,MAAO,CACLm4L,YAAY,EACZr7N,QAAS,WAAWh9G,OAAOkgJ,EAAS,6CAGxC,OAAQA,GACN,KAAKu4K,GACL,KAAKC,GACL,KAAKC,GACH,OAAK,IAAW0K,GAMTiV,IALE,CACLD,YAAY,EACZr7N,QAAS,IAAoCkjC,IAInD,KAAK,GACL,KAAK,GACL,KAAK04K,GACL,KAAKC,GACL,KAAKS,IACL,KAAKC,IACL,KAAKC,IACL,KAAKQ,IACL,KAAKE,IACL,KAAKC,IACL,KAAKC,IACL,KAAKC,IACL,KAAK,IACL,KAAKX,IACL,KAAKV,GACL,KAAKF,GACL,KAAKwB,IACH,OAAOge,IACT,KAAKnf,IACL,KAAKE,IACL,KAAKH,IACL,KAAKE,IACH,OAAIhkU,IAAS+1U,IACJ,CACLkN,YAAY,EACZr7N,QAAS,WAAWh9G,OAAOkgJ,EAAS,wDAAwDlgJ,OAAOqjU,EAASjuU,KAAM,YAG/GkjV,IACT,KAAK3e,IACL,KAAKC,IACL,KAAKC,IACL,KAAKC,IACL,KAAK,IACL,KAAKb,IACL,KAAKF,GACL,KAAK,GACL,KAAK,GACH,MAAa,YAAT3jU,GAAuBiuU,EAAe,KAMnCiV,IALE,CACLD,YAAY,EACZr7N,QAAS,WAAWh9G,OAAOkgJ,EAAS,yDAI1C,KAAKu5K,IACL,KAAKM,IACH,OAAK,IAAWsJ,IA9Zf,SAAwBxwS,GAC7B,IAAI0lT,EACJ,OAAO3F,IAAgB//S,IAAQ26S,IAAoD,QAA5B+K,EAAa1lT,EAAIttB,aAAkC,IAAfgzU,OAAwB,EAASA,EAAWnjV,KACzI,CA2ZoC,CAAeiuU,GAMtCiV,IALE,CACLD,YAAY,EACZr7N,QAAS,IAAkDkjC,IAIjE,KAAK+5K,IACH,MAAsB,YAAlBoJ,EAASjuU,MAAwB,SAAUiuU,EAMxCiV,IALE,CACLD,YAAY,EACZr7N,QAAS,kFAKnB,CAjJgBw7N,CAAqBnV,EAAUnjL,IAAY,CAAC,EACtDm4L,EAAa/yQ,EAAM+yQ,WACnBr7N,EAAU13C,EAAM03C,SACC,IAAfq7N,GACF,IAASr7N,EAEb,CACA,GAAIq3N,IAAmBhR,IAAa,GAASA,EAASrkU,MAAO,CAC3D,IAAIA,EAAOqkU,EAASrkU,KACpB,GAAI60U,IAAgB70U,GAClB,OAAO,IAAc,IAAc,CAAC,EAAGqkU,GAAW,CAAC,EAAG,CACpDrkU,KAAM,CACJy5U,SAAUz5U,KAIhB,IAAI8oB,EAAM9oB,EAAK6oB,OAAO,GACtB,GAAuB,MAAnB7oB,EAAK4oB,OAAO,IAAcisT,IAAgB/rT,GAC5C,OAAO,IAAc,IAAc,CAAC,EAAGu7S,GAAW,CAAC,EAAG,CACpDrkU,KAAM,CACJy5U,SAAU3wT,EACViiB,MAAO,eAIf,CACA,GAAImqS,IAAgB7Q,GAAW,CAC7B,IAAI7nJ,EAAS6nJ,EAAS7nJ,OACtB,GAAIA,EAAQ,CACV,IAAImwE,EAASnwE,EAAOmwE,OAClBviL,GAAO,OAAyBoyG,EAAQ,KAC1C,GAAImwE,EACF,OAAO,IAAc,IAAc,CAAC,EAAG03E,GAAW,CAAC,EAAG,CACpD7nJ,OAAQ,IAAc,IAAc,CAAC,EAAGpyG,GAAO,CAAC,EAAG,CACjDsvQ,YAAal9J,EAAOk9J,aAAe/sF,EACnCynE,YAAa53I,EAAO43I,aAAeznE,KAI3C,CACF,CACA,OAAO03E,CACT,CACO,SAAS/E,IAAa1lH,EAAK14D,GAChC,OAAIioD,GAAUyQ,GACL,CACLG,QAAS6lH,IAAY1+K,IAEN,WAAR04D,EACF,CACL8lH,QAAQ,GAEA9lH,EAAIG,SAAYH,EAAI1kK,KAKvB0kK,EAJA,IAAc,IAAc,CAAC,EAAGA,GAAM,CAAC,EAAG,CAC/CG,QAAS6lH,IAAY1+K,IAK3B,CACA,IAAIo4L,IAAa,CACfD,YAAY,GAyFP,SAAShG,IAA+B7B,GAC7C,IACExgI,EADqBgnI,IAAgBxG,GACPxgI,WAChC,MAAsB,SAAfA,IAA0BA,GAK5B,SAAwBn9K,GAC7B,OAAOA,IAAwB,aAAhBA,EAAU,MAAoBo9S,IAAWp9S,MAAUA,EAAI60S,SACxE,CAPiDiR,CAAenI,EAChE,CAWO,SAASxG,IAAUtrU,EAAG6hI,GAC3B,IAAI8yM,EAOAl3G,EANAurG,EAAWnnM,EAAMmnM,SACnBtyU,EAAOmrI,EAAMnrI,KACb60U,EAAW1pM,EAAM0pM,SACjB2O,EAA6Br4M,EAAMq4M,2BACjCv9M,EAAOqsM,IAAqE,QAAvD2L,EAAsB7K,IAAkBd,UAA+C,IAAxB2L,OAAiC,EAASA,EAAoBh4M,MAClJw9M,EAASx9M,GAAiB,aAATjmI,EAoBrB,OAlBIypU,IAAUngU,GACZy9N,EAAOz9N,EAAEy9N,KACA0jG,IAAYnhU,GACrBy9N,EAAOz9N,EAAEu3S,OACAwuB,IAAW/lU,IACpBm6U,GAAS,EACT18G,EAAOwpG,IAAejnU,KACb,GAASA,IAAM00C,GAAS10C,KAC7Bm6U,IACF18G,EAAO,YAAYn8N,OAAO,GAAUtB,GAAI,KTvsBvC,SAA+BgpU,GACpC,QAAS9B,IAA4B8B,EACvC,CSssBUoR,CAAsBz9M,KAEpBjoF,GAAS10C,IAAMA,EAAI,KAAS,GAASA,IAAMiQ,MAAMlf,KAAKyjD,MAAMx0C,OAC9Dy9N,EAAOwpG,KAAe,OAAgB,CAAC,EAAGtqM,EAAM38H,MAKpDy9N,EACK8tG,GAAY4O,EAAS,QAAQ74U,OAAOm8N,EAAM,KAAOA,EAGnDy8G,OAA6B11T,EAAY,GAAUxkB,EAC5D,CAIO,SAASq6U,IAAWvI,EAAiBvjT,GAC1C,IAAI73B,EAAOo7U,EAAgBp7U,KAC3B,OAAO63B,EAAOxP,KAAI,SAAU/e,GAC1B,IACIy9N,EAAO6tG,IAAUtrU,EAAG,CACtBgpU,SAFauI,IAAWO,KAAqB/I,IAAiB+I,EAAgB9I,UAAY8I,EAAgB9I,cAAWxkT,EAGrH9tB,KAAMA,EACNwjV,4BAA4B,IAG9B,YAAa11T,IAATi5M,EACK,CACL85E,OAAQ95E,GAILz9N,CACT,GACF,CAIO,SAAS2yU,IAAiBhO,EAAUnjL,GACzC,OAAKs+K,IAAU6E,EAASzqH,KAMjBwkH,IAAel9K,IAAY,CAAC,UAAW,WAAWtuJ,SAASyxU,EAASjuU,OALzEq8H,QAAQib,KAAK,iDACN,EAKX,CChxBA,SAAS,IAAQt7G,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAElf,IAAI6jV,IAA8B,CACvCzpB,WAAY,CACVwY,KAAM,SACNkR,OAAQ,SAEVzpB,cAAe,CACbuY,KAAM,SACNkR,OAAQ,YAEVC,WAAY,CACVnR,KAAM,SACNkR,OAAQ,QAEVE,UAAW,CACTpR,KAAM,SACNkR,OAAQ,QAEVG,cAAe,CACbrR,KAAM,SACNkR,OAAQ,YAEVI,eAAgB,CACdtR,KAAM,SACNkR,OAAQ,aAEVK,gBAAiB,CACfvR,KAAM,SACNkR,OAAQ,cAEVM,aAAc,CACZxR,KAAM,SACNkR,OAAQ,WAEVzyB,YAAa,KACb4L,aAAc,KACdF,UAAW,CACT6V,KAAM,OACNkR,OAAQ,UAEVO,SAAU,CACRzR,KAAM,OACNkR,OAAQ,cAEVQ,eAAgB,CACd1R,KAAM,OACNkR,OAAQ,oBAEVS,YAAa,CACX3R,KAAM,OACNkR,OAAQ,WAEVhnB,UAAW,CACT8V,KAAM,OACNkR,OAAQ,eAEV5mB,UAAW,CACT0V,KAAM,QACNkR,OAAQ,UAEVU,SAAU,CACR5R,KAAM,QACNkR,OAAQ,cAEVW,eAAgB,CACd7R,KAAM,QACNkR,OAAQ,oBAEVY,YAAa,CACX9R,KAAM,QACNkR,OAAQ,WAEV7pB,SAAU,KACVoD,UAAW,CACTuV,KAAM,QACNkR,OAAQ,gBAGL,SAASa,IAAuBp7U,GACrC,OAAOA,aAA6B,EAASA,EAAEgwB,SACjD,CACO,IAAIqrT,IAAa,CAAC,SAAU,OAAQ,SAAU,QAAS,SAInDC,IAAqB,CAC9B1gK,KAAM,OACN2gK,QAAS,OACT/nB,UAAW,OACXsnB,SAAU,OACVC,eAAgB,OAChBC,YAAa,OACb/rB,UAAW,OACXsE,UAAW,OACXtmE,OAAQ,OACRmmE,aAAc,OACdjtQ,KAAM,OACN4O,YAAa,OACbzsB,OAAQ,OACRkzS,UAAW,OACXloB,YAAa,OACbmoB,WAAY,OACZC,iBAAkB,OAClBC,cAAe,OACftoB,YAAa,OACbtxR,OAAQ,OACRuvK,WAAY,OACZu/G,WAAY,OACZ4C,WAAY,OACZ3C,cAAe,OACf8qB,WAAY,OACZpB,WAAY,OACZqB,WAAY,OACZC,iBAAkB,OAClBrB,UAAW,OACXC,cAAe,OACfC,eAAgB,OAChBC,gBAAiB,OACjBhzB,WAAY,OACZm0B,gBAAiB,OACjBj0B,YAAa,OACb+yB,aAAc,OACdzmB,aAAc,OACdV,aAAc,OACd5xD,OAAQ,OACRk6E,gBAAiB,OACjB/5E,UAAW,OACXD,UAAW,OACX9wL,OAAQ,OACRh4B,SAAU,OACV+iS,QAAS,OACTtoB,UAAW,OACXsnB,SAAU,OACVC,eAAgB,OAChBxuB,YAAa,OACbkH,WAAY,OACZunB,YAAa,OACbtnB,UAAW,OACXtkH,MAAO,OACPmhH,SAAU,OACVoD,UAAW,OACXh0Q,MAAO,OACPo8R,WAAY,OACZz3E,YAAa,OACb03E,WAAY,OACZC,cAAe,OACfv1M,WAAY,OACZw1M,UAAW,OACXt1M,cAAe,OACfu1M,eAAgB,OAChBC,gBAAiB,OACjB9nB,WAAY,OACZztL,gBAAiB,OACjBw1M,aAAc,OACdt6E,aAAc,OACdu6E,OAAQ,OACRC,OAAQ,OACRh0H,OAAQ,OACR7hN,MAAO,OACP2pT,SAAU,OACVjyE,UAAW,OACXo+F,UAAW,OACXt2U,UAAW,OACXkoB,OAAQ,OACRi9N,OAAQ,QAGCoxF,IAA+B,CACxC3vF,OAAQ,EACR9mM,KAAM,EACNitQ,aAAc,EACdr+P,YAAa,EACbzsB,OAAQ,EACRkzS,UAAW,EACXloB,YAAa,EACbmoB,WAAY,EACZC,iBAAkB,EAClBC,cAAe,EACftoB,YAAa,EACbtxR,OAAQ,EACRuvK,WAAY,EACZ12B,KAAM,EACN2gK,QAAS,EACT/nB,UAAW,EACXsnB,SAAU,EACVC,eAAgB,EAChBC,YAAa,EACbznB,UAAW,EACX1C,WAAY,EACZ4C,WAAY,EACZ3C,cAAe,EACf8qB,WAAY,EACZpB,WAAY,EACZqB,WAAY,EACZC,iBAAkB,EAClBrB,UAAW,EACXC,cAAe,EACfC,eAAgB,EAChBC,gBAAiB,EACjBhzB,WAAY,EACZm0B,gBAAiB,EACjBj0B,YAAa,EACb+yB,aAAc,EACdzmB,aAAc,EACdV,aAAc,EACd5xD,OAAQ,EACRk6E,gBAAiB,EACjB/5E,UAAW,EACXD,UAAW,EACX9wL,OAAQ,EACRh4B,SAAU,EACVs3Q,SAAU,EACVyrB,QAAS,EACTtoB,UAAW,EACXp1E,UAAW,EACX08F,SAAU,EACVC,eAAgB,EAChByB,UAAW,EACXjwB,YAAa,EACbkH,WAAY,EACZunB,YAAa,EACbtnB,UAAW,EACXtkH,MAAO,EACPmhH,SAAU,EACVoD,UAAW,EACXh0Q,MAAO,EACPo8R,WAAY,EACZz3E,YAAa,EACb03E,WAAY,EACZC,cAAe,EACfv1M,WAAY,EACZw1M,UAAW,EACXt1M,cAAe,EACfu1M,eAAgB,EAChBC,gBAAiB,EACjB9nB,WAAY,EACZztL,gBAAiB,EACjBw1M,aAAc,EACdt6E,aAAc,EACdu6E,OAAQ,EACRC,OAAQ,EACRr2U,UAAW,EACXkoB,OAAQ,EACRi9N,OAAQ,GAENqxF,IAAwB,IAAc,IAAc,CAAC,EAAGD,KAA+B,CAAC,EAAG,CAC7F/iV,MAAO,EACPijV,UAAW,EACX/C,SAAU,IAEL,SAASgD,IAAe9pV,GAC7B,QAAS4pV,IAAsB5pV,EACjC,CAE6B,GAAK4pV,KAA3B,IAyBIG,IAAe,GAxBD,CACvBp7E,KAAM,EACNkuD,SAAU,EACVM,WAAY,EACZ6sB,aAAc,EACd5sB,SAAU,EACV6sB,UAAW,EACXC,iBAAkB,EAClB7sB,UAAW,EACX8sB,aAAc,EACdjtB,QAAS,EACTH,MAAO,EACPqtB,UAAW,EACXC,cAAe,EACfC,WAAY,EACZC,kBAAmB,EACnBC,cAAe,EACfxtB,MAAO,EACPytB,UAAW,EACXC,cAAe,EACfC,WAAY,EACZC,kBAAmB,EACnBC,cAAe,ICxRV,SAASC,IAAW38H,GACzB,MAAO,SAAUA,CACnB,CCEO,IAAI48H,IAAuC,WAChD,SAASA,EAAwBhuV,EAAMy6N,IACrC,QAAgB18N,KAAMiwV,GACtBjwV,KAAKiC,KAAOA,EACZjC,KAAK08N,IAAMA,CACb,CAUA,OATA,QAAauzH,EAAyB,CAAC,CACrCpvT,IAAK,kBACL1+B,MAAO,SAAyBkxN,GAC9B,QAAI28H,IAAW38H,IRyGd,SAAqBt9M,GAC1B,OAAOwsU,IAAUxsU,GAAKA,EAAEpN,KAAOoN,CACjC,CQ1Gem6U,CAAY78H,EAAK58J,QAAUz2D,KAAKiC,IAG3C,KAEKguV,CACT,CAhBkD,GCF9C,IAAY,CAAC,QAAS,YAAa,MAAO,YAC9C,SAAS,IAA2B7qU,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAClL,SAAS,IAAQv0L,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAWlf,SAAS,IAAgBsjV,EAAUv4L,GACxC,IAAI4vL,EAAa2I,GAAYA,EAASv4L,GACtC,QAAI4vL,IACE,GAAQA,GACH3oR,GAAK2oR,GAAY,SAAUzM,GAChC,QAASA,EAAS/2M,KACpB,IAEO2jN,IAAWH,IAAekF,IAAuBlF,GAI9D,CACO,SAAS8M,IAAuBnE,EAAUv4L,GAC/C,IAAI4vL,EAAa2I,GAAYA,EAASv4L,GACtC,QAAI4vL,IACE,GAAQA,GACH3oR,GAAK2oR,GAAY,SAAUzM,GAChC,QAASA,EAAS/2M,KACpB,IAEO2jN,IAAWH,IAAeQ,IAAWR,IAAemF,IAA8BnF,GAI/F,CACO,SAAS+M,IAA4BpE,EAAUv4L,GACpD,GAAIu8K,IAAOv8K,GAAU,CACnB,IAAImjL,EAAWoV,EAASv4L,GACxB,IAAK+vL,IAAW5M,IAAaiN,IAAWjN,MAAe,IAAWA,EAASjuU,OAAS66U,IAAW5M,IAAaA,EAASqE,UAEnH,OAAOkV,IAAuBnE,EADVvc,IAAsBh8K,GAG9C,CACA,OAAO,CACT,CACO,SAAS48L,IAAYrE,GAC1B,OAAOtxR,GAAKm0Q,KAAU,SAAUp7K,GAC9B,GAAI,IAAgBu4L,EAAUv4L,GAAU,CACtC,IAAI4vL,EAAa2I,EAASv4L,GAC1B,GAAI,GAAQ4vL,GACV,OAAO3oR,GAAK2oR,GAAY,SAAUzM,GAChC,QAASA,EAASpa,SACpB,IAEA,IAAIoa,EAAW8T,IAAYrH,GAC3B,OAAOzM,KAAcA,EAASpa,SAElC,CACA,OAAO,CACT,GACF,CACO,SAAS8zB,IAA8BC,EAAa/jP,GACzD,IAAIsgI,EAAU,GACVsB,EAAO,GACPtlB,EAAY,GACZ0zG,EAAY,GACZwvB,EAAW,CAAC,EAsHhB,OArHA5jV,IAAQmoV,GAAa,SAAUlN,EAAY5vL,GAEzC,GAAI+vL,IAAWH,GAAa,CAC1B,IAAIxjN,EAAQwjN,EAAWxjN,MACrB2wN,EAAQnN,EAAW7mB,UACnBrwG,EAAMk3H,EAAWl3H,IACjB8uH,EAAWoI,EAAWpI,SACtB11S,GAAY,OAAyB89S,EAAY,KACnD,GAAImN,GAASvV,GAAY9uH,EAAK,CAC5B,IAcMl/J,EAdFw9R,EAAQJ,IAAShH,GACjBoN,EAAiBhG,aAAqC,EAASA,EAAM14R,MACrE2+R,EAAW,IAAQrN,EAAY,CACjCiG,OAAO,IAELqH,EAAc,IAAc,IAAc,IAAc,CAAC,EAAGF,EAAiB,GAAK,CACpF1+R,MAAO,IAAMsxR,EAAY72O,EAAQ,CAC/By9O,gBAAgB,MAEhB1kT,GAAY,CAAC,EAAG,CAElBs6F,MAAO6wN,IAET,GAAIF,GAuBF,GArBIlf,IAAYkf,IACdvjS,EAAK,SACLyjS,EAAW,IAAQ,CACjBzjS,GAAI,SACJ4yE,MAAO2wN,EAAMtmH,QACZ,CACDo/G,OAAO,IAETqH,EAAY9wN,MAAQ,GAAGtsH,OAAOm9U,EAAU,KAAKn9U,OAAOssH,IAC3CwxM,IAAYmf,IACrBvjS,EAAK,SACLyjS,EAAW,IAAQ,CACjBzjS,GAAI,SACJ4yE,MAAO2wN,EAAMvmH,QACZ,CACDq/G,OAAO,IAETqH,EAAY9wN,MAAQ,GAAGtsH,OAAOm9U,EAAU,KAAKn9U,OAAOssH,IACjC,YAAV2wN,GAAiC,aAAVA,GAAkC,cAAVA,IACxDvjS,EAAKujS,GAEHvjS,EAAI,CACN,IAAI2jS,EAAiB,CACnB3jS,GAAIA,EACJ87K,GAAI2nH,GAEF7wN,IACF+wN,EAAe/wN,MAAQA,GAEzB28L,EAAUj8T,KAAKqwV,EACjB,OAGA,GADA9jH,EAAQvsO,KAAKmwV,GACTnM,IAAgBlB,IAAetR,IAAU5lH,GAAM,CAgBjD,GAfAiiB,EAAK7tO,KAAK,CACR4rN,IAAKA,EACLtsF,MAAOA,EACPkpG,GAAI2nH,IAGN5jH,EAAQvsO,KAAK,IAAQ8iV,EAAY,CAC/BsB,UAAW,SAETC,IAAiBvB,EAAY5vL,IAC/Bq5E,EAAQvsO,KAAK,IAAQ8iV,EAAY,CAC/BsB,UAAW,WAIX3U,IAAOv8K,GAAU,CACnB,IAAIo9L,EAAmB,CACrBhxN,MAAO,GAAGtsH,OAAOm9U,EAAU,SAE7B1E,EAAS,GAAGz4U,OAAOkgJ,EAAS,MAAQo9L,CACtC,CACAF,EAAYxkI,IAAM,SACbgjH,IAAwB17K,KAC3Bk9L,EAAkB,KAAIjS,IAE1B,MAAO,GAAIzD,IAAaD,IAAiBC,GAAW,CAClDnyH,EAAUvoN,KAAK,CACb06U,SAAUA,EACVp7M,MAAOA,EACPkpG,GAAI2nH,IAGN,IAAIntI,EAAaghI,IAAgBlB,IAAeA,EAAW16U,OAASi2U,KAAY,OAC5Er7H,IACE9vD,IAAY85K,KAAQ95K,IAAYk6K,IAClCgjB,EAAwB,WAAIptI,GvBsJrC,SAAmC9vD,GACxC,QAASm8K,IAA0Bn8K,EACrC,CuBvJyBq9L,CAA0Br9L,GAI1Bu8K,IAAOv8K,KAChBk9L,EAAkB,KAAI,IAAc,CAClCptI,WAAYA,GACXotI,EAAkB,OANrBA,EAAoB,OAAI,IAAc,CACpCptI,WAAYA,GACXotI,EAAoB,QAO7B,CAGF3E,EAASv4L,GAAWk9L,CACtB,MACE7jH,EAAQvsO,KAAKs/H,GACbmsN,EAASv4L,GAAW88L,EAAY98L,EAEpC,MAEEu4L,EAASv4L,GAAW88L,EAAY98L,EAEpC,IACO,CACL26E,KAAMA,EACNtlB,UAAWA,EACX0zG,UAAWA,EACX1vF,QAASA,EACTk/G,SAAUA,EAEd,CAiBO,SAAS+E,IAAa/E,EAAUv1R,EAAM/kC,EAAQ86E,GACnD,IAEE+xH,EhBpGmC9qE,EgBkGjCu9L,EAAqB,CAAC,EACtBxyH,EAAY,IAA2B,GAAKwtH,IAEhD,IACE,IAAKxtH,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIzX,EAAM09L,EAAMp8N,MACX8sU,IAAUpuS,IAEb,IhBzGC,GAAGttB,OAD2BkgJ,EgB0Ga5yH,EhBzGxB,4BAA4BttB,OAAOkgJ,EAAS,qCgB2GpE,CACF,CAAE,MAAOjsH,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACA,IACE4/N,EADEC,EAAa,IAA2BysG,KAE5C,IACE,IAAIlsL,EAAQ,WACV,IAAIgQ,EAAUwvE,EAAO9gO,MACrB,IAAK6pV,EAASv4L,GACZ,MAAO,WAET,IAAI4vL,EAAa2I,EAASv4L,GAC1B,GAAI68K,IAAa78K,GAAU,CACzB,IAAIw9L,EAAcvhB,IAAgCj8K,GAC9Cy9L,EAAcF,EAAmBC,GACrC,GAAIzN,IAAW0N,IACb,GXzOH,SAAsBvoV,GAC3B,MAAgB,iBAATA,GAAoC,aAATA,CACpC,CWuOc,CAAauoV,EAAYvoV,OACvB66U,IAAWH,KAAgB6N,EAAYjW,SAIzC,OADA,IhB1KP,SAA0DgW,GAC/D,MAAO,GAAG19U,OAAO09U,EAAa,2BAA2B19U,OAAO09U,EAAa,iBAC/E,CgBwKuB,CAA6DA,IAC/D,gBAKXx9L,EAAUw9L,EACV,IhB9KH,SAAsCA,GAC3C,MAAO,eAAe19U,OAAO09U,EAAa,yBAAyB19U,OAAO09U,EAAa,uBAAuB19U,OAAO09U,EAAa,IACpI,CgB4KmB,CAAyCA,GAEtD,CAKA,GAJgB,UAAZx9L,GAAgC,QAATh9F,GAAmBu1R,EAASruT,QACrD,IhBtL8B,+EgBuL9B81H,EAAU84K,KA9DX,SAA+Byf,EAAUv4L,EAASh9F,GACvD,IAAI06R,EAAgBvgB,IAAYn9K,EAASh9F,GACzC,IAAK06R,EACH,OAAO,EACF,GAAsB,WAAlBA,EAA4B,CACrC,IAAIC,EAAkBpF,EAASv4L,IAAY,GAAK,GAAI,IAGpD,SAAI+vL,IAAW4N,IAAoB5N,IAAWwI,EAASv4L,KAAay+K,IAASkf,EAAgBjlI,KAK/F,CACA,OAAO,CACT,CAiDWklI,CAAsBrF,EAAUv4L,EAASh9F,GAG5C,OADA,IAAS,IAAgCg9F,EAASh9F,IAC3C,WAGT,GAAIg9F,IAAY,KAAiB,SAATh9F,EAAiB,CACvC,IAAImgR,EAAW8T,IAAYsB,EAASv4L,IACpC,GAAImjL,SAA4CA,EAASpa,UAEvD,OADA,IhBjK0B,oGgBkKnB,UAEX,CAEA,GAAI/oK,IAAYo5K,MAAUn7S,EAAS,SAAUs6T,EAAW,WAAYA,GAKlE,OAJA,IAAS,IAA0B,WAAY,CAC7CpwS,KAAM,SAAUowS,EAChB7qU,OAAQ,WAAY6qU,KAEf,WAET,GAAIv4L,IAAYg6K,KAAUh6K,IAAY+5K,MAAU,GAAQ6V,KAAgBwB,IAAWxB,IAAe5vL,IAAYk6K,KAAW,GAAQ0V,IAC/H,GAAIA,EAAY,CACd,GAAI5vL,IAAY+5K,IAAO,CACrB,IAAIpnS,EAAM4lT,EAASv4L,GACnB,GAAI40L,IAAejiT,GAEjB,OADA4qT,EAAmBv9L,GAAWrtH,EACvB,UAEX,CAEA4qT,EAAmBv9L,GAAW,GAAM4vL,GAAY1xT,QAAO,SAAUqgO,EAAM4kF,GAMrE,OALK4M,IAAW5M,GAGd5kF,EAAKzxP,KAAK4qV,IAAavU,EAAUnjL,IAFjC,IAAS,IAA0BmjL,EAAUnjL,IAIxCu+F,CACT,GAAG,GACL,MACK,CACL,GAAIv+F,IAAYk6K,KAA0B,OAAf0V,EAEzB2N,EAAmBv9L,GAAW,UACzB,KAAK+vL,IAAWH,IAAgBQ,IAAWR,IAAgBwB,IAAWxB,IAAgBiF,IAAiBjF,IAAgBjQ,IAAYiQ,IAExI,OADA,IAAS,IAA0BA,EAAY5vL,IACxC,WAETu9L,EAAmBv9L,GAAWm3L,IAAevH,EAAY5vL,EAASjnD,EACpE,CACF,EACA,IAAK02H,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MACnCmrG,GAGf,CAAE,MAAOj8G,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACA,OAAO2tV,CACT,CAIO,SAASM,IAAkBtF,EAAUx/O,GAC1C,IAEEy6H,EAFE+pH,EAAqB,CAAC,EACtB9pH,EAAa,IAA2B,GAAK8kH,IAEjD,IACE,IAAK9kH,EAAWppN,MAAOmpN,EAASC,EAAWt4M,KAAK0pB,MAAO,CACrD,IAAIm7G,EAAUwzE,EAAO9kO,MACjBovV,EAAgB3G,IAAeoB,EAASv4L,GAAUA,EAASjnD,EAAQ,CACrE8+O,eAAe,IAEjB0F,EAAmBv9L,GAAW89L,CAChC,CACF,CAAE,MAAO/pT,GACP0/L,EAAWhjO,EAAEsjC,EACf,CAAE,QACA0/L,EAAW7jO,GACb,CACA,OAAO2tV,CACT,CAoCO,SAAS5oV,IAAQopV,EAASnuV,EAAG+oD,GAClC,GAAKolS,EAAL,CAGA,IACEnoB,EADEC,EAAa,IAA2B,GAAKkoB,IAEjD,IACE,IAAKloB,EAAWxrT,MAAOurT,EAASC,EAAW16S,KAAK0pB,MAAO,CACrD,IAAIm7G,EAAU41K,EAAOlnU,MACjBqI,EAAKgnV,EAAQ/9L,GACjB,GAAI,GAAQjpJ,GAAK,CACf,IACEi/T,EADEC,EAAa,IAA2Bl/T,GAE5C,IACE,IAAKk/T,EAAW5rT,MAAO2rT,EAASC,EAAW96S,KAAK0pB,MAAO,CACrD,IAAI+qS,EAAa5Z,EAAOtnU,MACxBkB,EAAEzB,KAAKwqD,EAASi3R,EAAY5vL,EAC9B,CACF,CAAE,MAAOjsH,GACPkiS,EAAWxlU,EAAEsjC,EACf,CAAE,QACAkiS,EAAWrmU,GACb,CACF,MACEA,EAAEzB,KAAKwqD,EAAS5hD,EAAIipJ,EAExB,CACF,CAAE,MAAOjsH,GACP8hS,EAAWplU,EAAEsjC,EACf,CAAE,QACA8hS,EAAWjmU,GACb,CA5BA,CA6BF,CAmBO,SAASouV,IAAmBh7R,EAAMu1R,GACvC,OAAO,GAAKA,GAAUr6T,QAAO,SAAU+/T,EAASj+L,GAC9C,OAAQA,GAEN,KAAK,GACL,KAAK,GACL,KAAKm6K,IACL,KAAKC,IACL,KAAK,IACL,KAAK,GACL,KAAK,GACL,KAAK1B,GACL,KAAKC,GACL,KAAKG,GACL,KAAKC,IACL,KAAKH,GACL,KAAKC,GAEL,KAAKG,IACL,KAAKC,IACL,KAAKC,IACL,KAAKC,IAGL,KAAKW,IACL,KAAKP,IACL,KAAKC,IAGL,KAAKU,IACH,OAAO+jB,EACT,KAAKlkB,IAEH,GAAa,SAAT/2Q,GAA4B,UAATA,EACrB,OAAOi7R,EAGX,KAAKjkB,IACL,KAAKC,IAED,IAAI2V,EAAa2I,EAASv4L,GAC1B,GAAI,GAAQ4vL,IAAeG,IAAWH,GAAa,CACjD,IACEzZ,EADEC,EAAa,IAA2B,GAAMwZ,IAElD,IACE,IAAKxZ,EAAW/rT,MAAO8rT,EAASC,EAAWj7S,KAAK0pB,MAAO,CACrD,IAAIs+R,EAAWhN,EAAOznU,MACjBy0U,EAASpa,WACZk1B,EAAQnxV,KAAK,IAAQq2U,EAAU,CAAC,GAEpC,CACF,CAAE,MAAOpvS,GACPqiS,EAAW3lU,EAAEsjC,EACf,CAAE,QACAqiS,EAAWxmU,GACb,CACF,CACA,OAAOquV,EAEX,KAAK,IACH,GAAa,UAATj7R,EAEF,OAAOi7R,EAIX,KAAK7kB,IACL,KAAKC,IACL,KAAKC,IACL,KAAKG,IACL,KAAKC,IACL,KAAKC,IACL,KAAKE,IACL,KAAKD,IAID,IAAIskB,EAAYjH,IAAYsB,EAASv4L,IAIrC,OAHIk+L,IAAcA,EAAUn1B,WAC1Bk1B,EAAQnxV,KAAK,IAAQoxV,EAAW,CAAC,IAE5BD,EAGf,GAAG,GACL,CCrgBA,IAAI,IAAY,CAAC,WACf,IAAa,CAAC,aAChB,SAAS,IAAQ/sT,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CACzf,SAAS,IAA2B0c,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CA4D3K,SAAS04H,IAAwBC,EAAgBC,EAA0BC,GAChF,IAAIC,IAAgBpxV,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,KAAmBA,UAAU,GACnF,GAAI,YAAamxV,EACf,MAAO,CACLhtF,QAASgtF,EAA8BhtF,SAG3C,IAAIktF,EAAqBJ,EAAe7gU,KAAI,SAAU6gC,GACpD,IAAIqgS,EAAcrgS,EAAKqgS,YACrBC,EAActgS,EAAKsgS,YACjBC,EAAYJ,EAAgB,OAAOz+U,OAAO,IAASu+U,IAA6B,GACpF,MAAO,CACLjyN,MAAOqyN,EAAcJ,EAAyBjyN,MAC9Cl3H,KAAMmpV,EAAyBnpV,KAC/BopD,MAAOqhR,IAAY+e,GAAe,CAChC3oC,OAAQ,GAAGj2S,OAAO4+U,EAAa,KAAM5+U,OAAO8+U,OAAOD,GAAY,MAC7DD,EAAcC,EAEtB,IACIE,EDqQC,SAAmBtG,GACxB,IAEE7kH,EAFE1wN,EAAM,GACN2wN,EAAa,IAA2B,GAAK4kH,IAEjD,IACE,IAAK5kH,EAAWtpN,MAAOqpN,EAASC,EAAWx4M,KAAK0pB,MAAO,CACrD,IAAIm7G,EAAU0zE,EAAOhlO,MACrB,GAAI,IAAgB6pV,EAAUv4L,GAAU,CACtC,IAGE4zE,EADEC,EAAa,IADK,GADL0kH,EAASv4L,KAI1B,IACE,IAAK6zE,EAAWxpN,MAAOupN,EAASC,EAAW14M,KAAK0pB,MAAO,CACrD,IAAIlS,EAAMihM,EAAOllO,MACbqhV,IAAWp9S,GACb3vB,EAAIlW,KAAK6lC,GACAmiT,IAAuBniT,IAChC3vB,EAAIlW,KAAK6lC,EAAInE,UAEjB,CACF,CAAE,MAAOuF,GACP8/L,EAAWpjO,EAAEsjC,EACf,CAAE,QACA8/L,EAAWjkO,GACb,CACF,CACF,CACF,CAAE,MAAOmkC,GACP4/L,EAAWljO,EAAEsjC,EACf,CAAE,QACA4/L,EAAW/jO,GACb,CACA,OAAOoT,CACT,CCvSyB87U,CAAUR,GAA+B/gU,IAAI83T,KACpE,MAAO,CACL/jF,QAAS,GAAGxxP,QAAO,QAAmB0+U,IAAqB,QAAmB5vT,GAAOiwT,EAAkB,MAE3G,CACO,SAAS,IAASR,GAGvB,OAAOvmB,GAFKumB,EAAyB//R,MAC3B+/R,EAAyBjyN,MAErC,CACO,SAAS2yN,IAAkCC,EAAkBC,EAAgBZ,EAA0Ba,EAAgBC,GAC5H,IAAI95U,EAAQg5U,EAAyBh5U,MACnC+6P,EAAOi+E,EAAyBj+E,KAClC,OAAO,SAAU71M,GACf,IAAI60R,EAAW70R,EAAM60R,SACnBp8R,EAAOuH,EAAMvH,KACbq8R,EAAiB90R,EAAM80R,eACvBC,EAAwB/0R,EAAMg1R,kBAC9BA,OAA8C,IAA1BD,OAAmCt8T,EAAYs8T,EACnEE,EAAsBj1R,EAAMk1R,cAC5BA,OAAwC,IAAxBD,EAAiC,CAAC,EAAIA,EACpDlhS,EAAQ,IAAS+/R,GACrB,OAAOqB,IAAgBV,EAAkBI,EAAUD,EAAqB,CACtEn8R,KAAMA,EACNu1R,SAAU,IAAc,IAAc,KAAc,OAAgB,CAAC,EAAG0G,EAAgB,IAAc,IAAc,IAAc,CAChI7yN,MAAO,GAAGtsH,OAAOu/U,EAAgB,KAAKv/U,OAAOu+U,EAAyBjyN,OACtEl3H,KAAMmpV,EAAyBnpV,WACpB8tB,IAAVs7B,EAAsB,CACvBA,MAAOA,GACL,CAAC,QAAct7B,IAAV3d,EAAsB,CAC7BA,MAAOA,GACL,CAAC,QAAa2d,IAATo9O,EAAqB,CAC5BA,KAAMA,GACJ,CAAC,IAAK,GAASm/E,IAAqB,OAAgB,CAAC,EAAG,GAAGz/U,OAAOm/U,EAAgB,KAAM,CAC1F7yN,MAAO,GAAGtsH,OAAOy/U,EAAmB,KAAKz/U,OAAOu+U,EAAyBjyN,SACtE,CAAC,GAAI8yN,GAAiBO,IAE/B,CACF,CACO,SAASC,IAAgB7P,EAAShI,EAAMsX,EAAqBQ,GAClE,IAAIn+U,EAAOquU,EAAQruU,KACjB8+B,EAAQuvS,EAAQvvS,MAChBp/B,EAAU2uU,EAAQ3uU,QAChB8hD,EAAO6sR,EAAQ36U,KACnB,OAAI26U,EAAQhI,SAA2B7kT,IAAlB6sT,EAAQhI,IAAuBsX,EAAoBtX,GAC/D,CAAC,IAAc,IAAc,CAAC,EAAG8X,GAAe,CAAC,EAAG,CACzD38R,KAAM,IAAc,IAAc,IAAc,IAAc,IAAc,IAAc,CAAC,EAAGm8R,EAAoBtX,IAAQrmU,EAAO,CAC/HA,KAAMA,GACJ,CAAC,GAAI8+B,EAAQ,CACfA,MAAOA,GACL,CAAC,GAAIp/B,EAAU,CACjBA,QAASA,GACP,CAAC,GAAI4tU,IAAU6Q,EAAa38R,MAAQ28R,EAAa38R,KAAO,CAC1D9tD,KAAMyqV,EAAa38R,OACjB,CAAC,EAAG,CACN3qD,MAAO,GAAGyH,OAAOkjD,EAAM,KAAKljD,OAAOoS,OAAO21T,KACzC5/H,GAAU4nI,EAAQhI,IAAS,CAAC,EAAIgI,EAAQhI,OAGxC,EACT,CACO,SAAS+X,IAA4BhgI,EAAM6rC,EAAQosF,GACxD,IAAIU,EAAW34H,EAAK24H,SAChB0G,EAA4B,aAAXxzF,EAAwB,IAAM,IAC/C4yF,EAA2B9F,EAAS0G,GACpCY,EAA4BtH,EAAS,GAAGz4U,OAAOm/U,EAAgB,MAC/Da,EAAgCvH,EAAS,GAAGz4U,OAAOm/U,EAAgB,UACnEc,EAAiCxH,EAAS,GAAGz4U,OAAOm/U,EAAgB,WACxE,MAAO,CACLZ,yBAA0B2B,IAA8B3B,EAA0BxG,GAClFgI,0BAA2BG,IAA8BH,EAA2BhI,GACpFiI,8BAA+BE,IAA8BF,EAA+BjI,GAC5FkI,+BAAgCC,IAA8BD,EAAgClI,GAC9FoH,eAAgBA,EAEpB,CACA,SAASe,IAA8B3B,EAA0BxG,GAC/D,GAAIwG,SAA4EA,EAAyBt1B,UAAW,CAClH,IAAIA,EAAYs1B,EAAyBt1B,UACvCk3B,GAAiC,OAAyB5B,EAA0B,KAItF,OAHIt1B,IAAc8uB,GAChB,IjBqDC,SAAsD9uB,EAAW8uB,GACtE,MAAO,mEAAmE/3U,OAAOipT,EAAW,MAAMjpT,OAAO+3U,EAAe,+BAC1H,CiBvDe,CAAyD9uB,EAAW8uB,IAExEoI,CACT,CACE,OAAO5B,CAEX,CACO,SAAS6B,IAAoBtgI,EAAMi4H,GACxC,IAAI70R,EAAO48J,EAAK58J,KACdu1R,EAAW34H,EAAK24H,SACd/gV,EAAI+gV,EAAS/gV,EACfC,EAAI8gV,EAAS9gV,EACf,GAAIq3U,IAAU9rR,IAASA,EAAKyoM,OAC1B,OAAOzoM,EAAKyoM,OAEd,GAAIupF,IAA4Bx9U,GAAI,CAElC,GAAIw9U,IAA4Bv9U,GAAI,CAElC,IAAI0oV,EAAapQ,IAAWv4U,IAAMA,EAAEuxT,UAChCq3B,EAAarQ,IAAWt4U,IAAMA,EAAEsxT,UACpC,GAAKo3B,GAAcC,IAAevI,EAE3B,IAAKuI,GAAcD,IAAetI,EAElC,IAAIsI,IAAetI,GAAiBuI,IAAevI,EACxD,MAAM,IAAIrjT,MAAM,sCAEhB,OAAI29S,IAA+B16U,KAAO06U,IAA+B36U,GAEhE,aAGF,UACT,CAVE,MAAO,YAUT,CAZE,MAAO,UAaX,CACA,MAAO,YACT,CAAO,GAAIw9U,IAA4Bv9U,GAErC,MAAO,WAGP,MAAM,IAAI+8B,MAAM,oCAAoC10B,OAAO+3U,EAAe,KAE9E,CClNA,IAAI,IAAY,CAAC,OAAQ,WAAY,SAAU,cAC7C,IAAa,CAAC,QAAS,QACvB,IAAa,CAAC,WAChB,SAASwI,IAAet3S,GAAO,IAAI3b,EACnC,SAAsBwoF,EAAO0qO,GAAQ,GAAqB,iBAAV1qO,GAAgC,OAAVA,EAAgB,OAAOA,EAAO,IAAI2qO,EAAO3qO,EAAMjxE,OAAO67S,aAAc,QAAax9T,IAATu9T,EAAoB,CAAE,IAAI9tU,EAAM8tU,EAAKpyV,KAAKynH,EAAO0qO,GAAQ,WAAY,GAAmB,iBAAR7tU,EAAkB,OAAOA,EAAK,MAAM,IAAInhB,UAAU,+CAAiD,CAAE,OAAiB,WAATgvV,EAAoBpuU,OAAS1D,QAAQonG,EAAQ,CAD/U6qO,CAAa13S,EAAK,UAAW,MAAsB,iBAAR3b,EAAmBA,EAAMlb,OAAOkb,EAAM,CAE1H,SAAS,IAAQ8D,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CASlf,IAAIyrV,IAAU,UAEVC,IAAoB,IAAInE,IAAwBkE,IAASE,KAC7D,SAASC,IAAejoI,GAC7B,OAAI1lK,GAAS0lK,GACJ,QAGFA,CACT,CACO,SAASgoI,IAAiBhhI,EAAMxhK,GACrC,IAAI0iS,EACA/nP,EAAS36C,EAAK26C,OAKdgoP,EAHJnhI,EAAO,IAAc,IAAc,CAAC,EAAGA,GAAO,CAAC,EAAG,CAChD24H,SAAUsF,IAAkBj+H,EAAK24H,SAAUx/O,KAG3C/1C,EAAO+9R,EAAM/9R,KAEbn1C,GADYkzU,EAAMxI,SACTwI,EAAMlzU,QAEfmzU,GADKD,EAAM1zE,YACC,OAAyB0zE,EAAO,MAC1ClR,EAAUf,IAAU9rR,GAAQA,EAAO,CACrC9tD,KAAM8tD,GAGJn1C,GACF,IAAS,IAAkC,YAE7C,IAgIMozU,EAhIFroI,EAAgD,QAAtCkoI,EAAkBjR,EAAQj3H,cAAwC,IAApBkoI,EAA6BA,EAAkB/nP,EAAOmoP,QAAQtoI,OACtHuoI,EAAY1gB,IAAoB,OAAQoP,EAE5C92O,GACIxkC,EAAUs7Q,EAAQt7Q,QAClB6sR,EAAcP,IAAejoI,GAC7ByoI,EA+NN,SAAmBzhI,EAAMhH,EAAQ7/G,GAC/B,IAAI0yJ,EAASy0F,IAAoBtgI,EAAM8gI,KACnCY,EAAwB1B,IAA4BhgI,EAAM6rC,EAAQi1F,KACpErC,EAA2BiD,EAAsBjD,yBACjDY,EAAiBqC,EAAsBrC,eACrCsC,EAAsBlD,EAAyBjyN,MAC/Cg1N,EAAcP,IAAejoI,GAC7B4oI,EAA2B,GAAG1hV,QAAO,QAAmB2hV,IAAmBF,IAAuB,CAAC,CACrG/nS,GAAI,SACJ4yE,MAAOm1N,EACPjsH,GAAI,WAAWx1N,OAAOyhV,IACrB,CACD/nS,GAAI,MACJ4yE,MAAOm1N,EACPjsH,IAAqB,YAAhB8rH,EAA4B,iBAAmB,QAAUG,GAC7D,CACD/nS,GAAI,MACJ4yE,MAAOm1N,EACPjsH,IAAqB,YAAhB8rH,EAA4B,iBAAmB,QAAUG,KAE5DG,EAA0C,YAAhBN,GAA6C,UAAhBA,EAA0B,GAAK,CAE1F,CACEO,UAAW,oBAAqB7hV,OAAOyhV,EAAqB,0BAA4BzhV,OAAOyhV,EAAqB,MACpHjsH,GAAI,OAAOx1N,OAAOyhV,IACjB,CACDI,UAAW,wBAAyB7hV,OAAOyhV,EAAqB,oBAAsBzhV,OAAOyhV,EAAqB,SAAUzhV,OAAO84M,EAAQ,iBAAkB94M,OAAOyhV,EAAqB,OACzLjsH,GAAI,iBAAiBx1N,OAAOyhV,IAC3B,CACDI,UAAW,wBAAyB7hV,OAAOyhV,EAAqB,oBAAsBzhV,OAAOyhV,EAAqB,SAAUzhV,OAAO84M,EAAQ,iBAAkB94M,OAAOyhV,EAAqB,OACzLjsH,GAAI,iBAAiBx1N,OAAOyhV,KAE1BK,EAAiBhiI,EAAK24H,SAExBsJ,GAD8BD,EAAe3C,IACV,OAAyB2C,EAAgB,CAAC3C,GAAgB1hU,IAAI8iU,OAC/FyB,EDtSC,SAA0ChF,GAC/C,IAOIiF,EACAC,EARA1wF,EAAUwrF,EAAYxrF,QACxB2wF,GAAmB,OAAyBnF,EAAa,KAC3D,IAAKxrF,EACH,MAAO,CACL2wF,iBAAkBA,GAKtB,GAAI,GAAQ3wF,GAAU,CACpB,IACExmC,EADEC,EAAY,IAA2BumC,GAE3C,IACE,IAAKvmC,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIv0C,EAAIw6N,EAAMp8N,MACV4B,EAAEy4T,WACCg5B,IACHA,EAAmC,IAErCA,EAAiCj1V,KAAKwD,KAEjC0xV,IACHA,EAAsC,IAExCA,EAAoCl1V,KAAKwD,GAE7C,CACF,CAAE,MAAOyjC,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACImyV,IACFE,EAAiB3wF,QAAUywF,EAE/B,MACMzwF,EAAmB,UACrB2wF,EAAiB3wF,QAAUA,EAE3B0wF,EAAsC1wF,EAM1C,OAHI,GAAQ0wF,IAAuF,IAA/CA,EAAoC50V,SACtF40V,EAAsCA,EAAoC,IAErE,CACLA,oCAAqCA,EACrCC,iBAAkBA,EAEtB,CCoP8BC,CAAiCL,GAC3DG,EAAsCF,EAAsBE,oCAE1DG,EAAwBtF,IADPiF,EAAsBG,iBACiClpP,GAC1E4hI,EAAOwnH,EAAsBxnH,KAC7BtlB,EAAY8sI,EAAsB9sI,UAClC0zG,EAAYo5B,EAAsBp5B,UAClC1vF,EAAU8oH,EAAsB9oH,QAChCilH,EAAgC6D,EAAsB5J,SACpD6J,EAAyB,aAAX32F,EAAwB,aAAe,WACrD42F,EAAY52F,EACZprP,EAAY,GAAGP,QAAO,QAAmB66N,IAAO,QAAmBtlB,GAAY,CAAC,CAClF0zG,UAAW,GAAGjpT,QAAO,QAAmBipT,IAAY,QAAmBy4B,IACvEnoH,QAASA,IACPqoH,GACJ,MAAO,CACL/mH,KAAMA,EACNtlB,UAAWA,EACXh1M,UAAWA,EACXg5N,QAASA,EACT0vF,UAAWA,EACXs1B,yBAA0BA,EAC1BY,eAAgBA,EAChBX,8BAA+BA,EAC/B8D,YAAaA,EACbC,UAAWA,EACXL,oCAAqCA,EAEzC,CA9RmBM,CAAU1iI,EAAMhH,EAAQ7/G,GACvC4hI,EAAO0mH,EAAW1mH,KAClBtlB,EAAYgsI,EAAWhsI,UACvBh1M,EAAYghV,EAAWhhV,UACvBg+U,EAA2BgD,EAAWhD,yBACtCY,EAAiBoC,EAAWpC,eAC5B5lH,EAAUgoH,EAAWhoH,QACrB0vF,EAAYs4B,EAAWt4B,UACvBu1B,EAAgC+C,EAAW/C,8BAC3C8D,EAAcf,EAAWe,YACzBC,EAAYhB,EAAWgB,UACvBL,EAAsCX,EAAWW,oCAC/C1hT,EAAQg+S,EAA8Bh+S,MACxCzP,EAAOytT,EAA8BztT,KACrC0xT,GAA4C,OAAyBjE,EAA+B,KAClGkE,EAAkB,SAAyBtD,GAC7C,OAAOH,IAAkClP,EAASoP,EAAgBZ,EAA0Ba,EAAgBnmP,EAAOmoP,QACrH,EACIuB,EAAoBD,EAAgBD,GACpCG,EAAiBF,EAAgBlE,GACjCqE,EAAqBH,EAAgB,IAAc,IAAc,CAAC,EAAGD,GAA4C1xT,EAAO,CAC1HA,KAAMA,GACJ,CAAC,IACD+xT,EAA6BzE,IAAwB,CAAC,CACxDM,YAA6B,YAAhB2C,EAA4B,iBAAmB,OAC5D1C,YAAa,OACZ,CACDD,YAAa,aACbC,YAAa,MACZ,CACDD,YAAa,WACbC,YAAa,UACZ,CACDD,YAAa,aACbC,YAAa,MACZ,CACDD,YAA6B,YAAhB2C,EAA4B,iBAAmB,OAC5D1C,YAAa,QACXL,EAA0BC,GAE1BuE,EAAU,CACZ3tV,KAAM,OACNorC,MAAO,QACPp/B,QAAS,EACTuqP,OAAQ22F,EACR7tR,QAASA,EACT5P,MAAM,GAEJm+R,EAAyC,YAAhB1B,EAA4BwB,EAGzDzE,IAAwB,CAAC,CACvBM,YAAa,iBACbC,YAAa,iBACZ,CACDD,YAAa,iBACbC,YAAa,kBACXL,EAA0BC,GAC1ByE,EAAgB,GAAGjjV,QAAO,QAAmB2iV,EAAkB,CACjErD,SAAU,OACVp8R,KAAM,CACJ9tD,KAAM,OACNq/D,QAASA,EACT5P,MAAM,GAER06R,eAAgB,gBAChBE,kBAAmB,YACnBE,cAAeqD,MACZ,QAAmBL,EAAkB,CACxCrD,SAAU,OACVp8R,KAAM,CACJ9tD,KAAM,OACNq/D,QAASA,EACT5P,MAAM,GAER06R,eAAgB,YAChBE,kBAAmB,gBACnBE,cAAeqD,MACZ,QAAmBL,EAAkB,CACxCrD,SAAU,QACVp8R,KAAM6/R,EACNxD,eAAgB,gBAChBI,cAAeqD,MACZ,QAAmBL,EAAkB,CACxCrD,SAAU,QACVp8R,KAAM6/R,EACNxD,eAAgB,gBAChBI,cAAeqD,MAIbE,EAAY,GAAGljV,QAAO,QAAmC,UAAhBshV,EAA0B2B,EAAgB,KAAK,QAAmBL,EAAe,CAC5HtD,SAAU,MACVp8R,KAAM,IAAc,IAAc,CAChC9tD,KAAM,OACLisV,EAAY,CACbtwT,KAAMswT,GACJ,CAAC,GAAI,CAAC,EAAG,CACX11F,OAAQ42F,EACR9tR,QAASA,EACTqiM,oBAAqB,QAEvByoF,eAAgB,YAChBE,kBAAmB,YACnBE,cAAemD,MACZ,QAAmBD,EAAmB,CACzCvD,SAAU,SACVp8R,KAAM,IAAc,IAAc,IAAc,CAC9C9tD,KAAM,OACNq/D,QAASA,GACR7Z,GAASq+C,EAAOmoP,QAAQz5S,SAAWsxD,EAAOmoP,QAAQz5S,OAAOnH,MAAQ,CAClEA,MAAOy4D,EAAOmoP,QAAQz5S,OAAOnH,OAC3B,CAAC,GAAI6gT,EAAY,CACnBtwT,KAAMswT,GACJ,CAAC,GAAI,CAAC,EAAG,CACX11F,OAAQ22F,EACRz9R,MAAM,IAER06R,eAAgB,UAChBI,cAAemD,MAEjB,GAAoB,YAAhBxB,EAEF,OAAO,IAAc,IAAc,CAAC,EAAGJ,GAAY,CAAC,EAAG,CACrD3gV,WAA6D,QAAhD4gV,EAAuBD,EAAU3gV,iBAAgD,IAAzB4gV,EAAkCA,EAAuB,IAAInhV,OAAOO,GACzI4iV,MAAOD,IAIX,IA+DIE,EAQEC,EAvEFC,EAAe,oBAAqBtjV,OAAOu+U,EAAyBjyN,MAAO,MAC3Ei3N,EAAe,oBAAqBvjV,OAAOu+U,EAAyBjyN,MAAO,MAC3Ek3N,EAAU,IAAIxjV,OAAOujV,EAAc,OAAOvjV,OAAOsjV,EAAc,KAC/DG,EAAmB,GAAGzjV,OAAOsjV,EAAc,OAAOtjV,OAAO84M,EAAQ,OAAO94M,OAAOwjV,GAC/EE,EAAmB,GAAG1jV,OAAOujV,EAAc,OAAOvjV,OAAO84M,EAAQ,OAAO94M,OAAOwjV,GAC/EnZ,EAAY,UAAWrqU,OAAOu+U,EAAyBjyN,MAAO,MAC9Dq3N,EAAyB,CAC3BC,cAAejC,IAAmBpD,EAAyBjyN,OAC3DitG,QAASA,GAEPsqH,EAAsB,CACxBtjV,UAAW,CAAC,CACVvD,OAAQ,IAAIgD,OAAOyjV,EAAkB,QAAQzjV,OAAOqqU,EAAW,UAAUrqU,OAAOqqU,EAAW,QAAQrqU,OAAO0jV,EAAkB,MAC3H,CACDz6B,UAAW,CAAC,CACVvvQ,GAAI,MACJ4yE,MAAOiyN,EAAyBjyN,MAChCkpG,GAAI,iBAAiBx1N,OAAOu+U,EAAyBjyN,QACpD,CACD5yE,GAAI,MACJ4yE,MAAOiyN,EAAyBjyN,MAChCkpG,GAAI,iBAAiBx1N,OAAOu+U,EAAyBjyN,QAGvD,CACE5yE,GAAI,MACJ4yE,MAAO,aAAatsH,OAAOu+U,EAAyBjyN,OACpDkpG,GAAI,aAAax1N,OAAOu+U,EAAyBjyN,QAChD,CACD5yE,GAAI,MACJ4yE,MAAO,aAAatsH,OAAOu+U,EAAyBjyN,OACpDkpG,GAAI,aAAax1N,OAAOu+U,EAAyBjyN,SAChDtsH,QAAO,QAAmBipT,IAC7B1vF,QAASA,IAEX4pH,MAAOF,GAGPa,GADYrB,EAA0CjxF,SACH,OAAyBixF,EAA2C,MACrHl9U,EAAQg5U,EAAyBh5U,MACnC+6P,EAAOi+E,EAAyBj+E,KAC9B9hN,EAAQ,IAAS+/R,GACjBwF,GAAmB,GAAKzjF,EAAM,CAAC,UAC/B0jF,GAAsBpE,IAAgB7P,EAAS,WAAY92O,EAAOmoP,QAAS,CAC7E7gV,UAAW,CAAC,CACVvD,OAAQ,IAAIgD,OAAOqqU,EAAW,OAAOrqU,OAAOyjV,EAAkB,UAAUzjV,OAAOqqU,EAAW,OAAOrqU,OAAO0jV,EAAkB,OAE5HxgS,KAAM,QACNu1R,SAAU,IAAc,IAAc,KAAc,OAAgB,CAAC,EAAG0G,EAAgB,IAAc,IAAc,IAAc,CAChI7yN,MAAOiyN,EAAyBjyN,MAChCl3H,KAAMmpV,EAAyBnpV,WACpB8tB,IAAVs7B,EAAsB,CACvBA,MAAOA,GACL,CAAC,QAAct7B,IAAV3d,EAAsB,CAC7BA,MAAOA,GACL,CAAC,GAAI2xT,GAAQ6sB,IAAoB,CAAC,EAAI,CACxCzjF,KAAMyjF,MACHD,GAAmDtjT,EAAQ,CAC9DA,MAAOA,GACL,CAAC,GAAI0hT,EAAsC,CAC7C1wF,QAAS0wF,GACP,CAAC,KACJ,GAEC+B,GAAiC,GAAGjkV,QAAO,QAAmB66N,IAAO,QAAmBtlB,GAAY,CAACouI,IACrGK,GACFZ,EAAuB,CACrB7iV,UAAW0jV,GACXd,MAAO,CAACa,GAAqBH,KAK9BR,GADDD,EAAuBS,GACuBtjV,WAAW6B,QAAQtU,MAAMu1V,GAAuB,QAAmBY,KAEnH,OAAO,IAAc,IAAc,CAAC,EAAG/C,GAAY,CAAC,EAAG,CACrDiC,MAAO,CAACC,EAAsB,CAE5B7iV,UAAWA,EACX4iV,MAAOD,KAGb,CACA,SAASvB,IAAmBuC,GAC1B,MAAO,CAAC,CACNxqS,GAAI,KACJ4yE,MAAO43N,EACP1uH,GAAI,aAAax1N,OAAOkkV,IACvB,CACDxqS,GAAI,KACJ4yE,MAAO43N,EACP1uH,GAAI,aAAax1N,OAAOkkV,IAE5B,CCjRA,IAAI,IAAY,CAAC,OAAQ,WAAY,SAAU,cAC/C,SAAS,IAA2BryU,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAClL,SAAS,IAAe18K,GAAO,IAAI3b,EACnC,SAAsBwoF,EAAO0qO,GAAQ,GAAqB,iBAAV1qO,GAAgC,OAAVA,EAAgB,OAAOA,EAAO,IAAI2qO,EAAO3qO,EAAMjxE,OAAO67S,aAAc,QAAax9T,IAATu9T,EAAoB,CAAE,IAAI9tU,EAAM8tU,EAAKpyV,KAAKynH,EAAO0qO,GAAQ,WAAY,GAAmB,iBAAR7tU,EAAkB,OAAOA,EAAK,MAAM,IAAInhB,UAAU,+CAAiD,CAAE,OAAiB,WAATgvV,EAAoBpuU,OAAS1D,QAAQonG,EAAQ,CAD/U,CAAa7sE,EAAK,UAAW,MAAsB,iBAAR3b,EAAmBA,EAAMlb,OAAOkb,EAAM,CAE1H,SAAS,IAAQ8D,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAQlf,IAAIgvV,IAAW,WAEXC,IAAqB,IAAI1H,IAAwByH,IAAUE,KAC/D,SAASA,IAAkBvkI,EAAMxhK,GACtC,IAAI26C,EAAS36C,EAAK26C,OAKdqrP,EAAkBC,IAHtBzkI,EAAO,IAAc,IAAc,CAAC,EAAGA,GAAO,CAAC,EAAG,CAChD24H,SAAUsF,IAAkBj+H,EAAK24H,SAAUx/O,KAEFkrP,IAAUlrP,GACnD14F,EAAY+jV,EAAgB/jV,UAC5Bg+U,EAA2B+F,EAAgB/F,yBAC3CY,EAAiBmF,EAAgBnF,eACjCX,EAAgC8F,EAAgB9F,8BAChD8D,EAAcgC,EAAgBhC,YAC9BvS,EAAUuU,EAAgBvU,QAC1BmR,EAAYoD,EAAgBpD,UAC5BsD,EAAkBF,EAAgBE,uBAC7BhG,EAAoC,KAC3C,IAAIiG,EAAmBxF,IAAkClP,EAASoP,EAAgBZ,EAA0BC,EAA+BvlP,EAAOyrP,UAC9I5+B,EAAYiqB,EAAQjqB,UACpB/0R,EAAOg/S,EAAQh/S,KACf6vP,EAAO,IAAc,IAAc,CACrCxrR,KAAM,OACNu2P,OAAQ22F,EACRz9R,MAAM,QACS3hC,IAAd4iS,EAA0B,CAC3BA,UAAWA,GACT,CAAC,QAAa5iS,IAAT6N,EAAqB,CAC5BA,KAAMA,GACJ,CAAC,GACDoyT,EAAQ,GAAGnjV,QAAO,QAAmBykV,EAAiB,CACxDnF,SAAU,QACVp8R,KAAM09N,EACN2+D,eAAgB,QAChBI,cAAe6E,MACZ,QAAmBC,EAAiB,CACvCnF,SAAU,QACVp8R,KAAM09N,EACN2+D,eAAgB,QAChBI,cAAe6E,MACZ,QAAmBC,EAAiB,CACvCnF,SAAU,OACVp8R,KAAM,IAAc,CAClB9tD,KAAM,OACN0hQ,oBAAqB,iBACN5zO,IAAd4iS,EAA0B,CAC3B/0R,KAAM+0R,GACJ,CAAC,GACLy5B,eAAgB,QAChBE,kBAAmB,QACnBE,cAAe6E,MAEjB,OAAO,IAAc,IAAc,CAAC,EAAGtD,GAAY,CAAC,EAAG,CACrD3gV,UAAWA,GACV4iV,EAAM71V,OAAS,EAAI,CACpB61V,MAAOA,GACL,IAAc,CAAC,EAAGA,EAAM,IAC9B,CACA,SAASwB,IAA2B7kI,EAAMi4H,GACxC,IAAIU,EAAW34H,EAAK24H,SACpB,GAwFF,SAAgCA,GAC9B,OAAQ3H,IAAkB2H,EAAS/gV,IAAMo5U,IAAkB2H,EAAS9gV,MAAQm5U,IAAkB2H,EAAS1pU,MAAQ+hU,IAAkB2H,EAASzpU,MAAQ8hU,IAAkB2H,EAASmM,UAAY9T,IAAkB2H,EAASoM,WAAa/T,IAAkB2H,EAASqM,UAAYhU,IAAkB2H,EAASsM,QACrS,CA1FMC,CAAuBvM,GACzB,MAAO,CACL9sF,OAAQy0F,IAAoBtgI,EAAMi4H,GAClCkN,UAAW,OAGf,IAAIC,EAqFN,SAAiDzM,GAC/C,OAAO3H,IAAkB2H,EAAS1pU,KAAO+hU,IAAkB2H,EAASzpU,GACtE,CAvFmCm2U,CAAwC1M,GACrE2M,EAuFN,SAA4C3M,GAC1C,OAAO3H,IAAkB2H,EAASmM,SAAW9T,IAAkB2H,EAASoM,UAAY/T,IAAkB2H,EAASqM,SAAWhU,IAAkB2H,EAASsM,QACvJ,CAzF8BM,CAAmC5M,GAC3D/gV,EAAI+gV,EAAS/gV,EACbC,EAAI8gV,EAAS9gV,EACjB,GAAIutV,EAA4B,CAE9B,GAAIE,EACF,MAAM,IAAI1wT,MAAM,GAAG10B,OAAO+3U,EAAe,qEAE3C,IAAIhpU,EAAK0pU,EAAS1pU,GACdC,EAAKypU,EAASzpU,GAClB,GAAI8hU,IAAkB/hU,IAAO+hU,IAAkB9hU,GAE7C,MAAM,IAAI0lB,MAAM,GAAG10B,OAAO+3U,EAAe,gCACpC,GAAIjH,IAAkB/hU,GAAK,CAChC,GAAImmU,IAA4Bx9U,GAE9B,MAAO,CACLi0P,OAAQ,aACRs5F,UAAW,0BAIb,MAAM,IAAIvwT,MAAM,4CAA4C10B,OAAO+3U,GAEvE,CAAO,GAAIjH,IAAkB9hU,GAAK,CAEhC,GAAIkmU,IAA4Bv9U,GAE9B,MAAO,CACLg0P,OAAQ,WACRs5F,UAAW,0BAIb,MAAM,IAAIvwT,MAAM,4CAA4C10B,OAAO+3U,GAEvE,CACA,MAAM,IAAIrjT,MAAM,iBAClB,CAEE,IAAIkwT,EAASnM,EAASmM,OAClBC,EAAUpM,EAASoM,QACnBC,EAASrM,EAASqM,OAClBC,EAAUtM,EAASsM,QACvB,GAAIjU,IAAkB+T,KAAa/T,IAAkB8T,GAEnD,MAAM,IAAIlwT,MAAM,GAAG10B,OAAO+3U,EAAe,wCAE3C,GAAIjH,IAAkBiU,KAAajU,IAAkBgU,GAEnD,MAAM,IAAIpwT,MAAM,GAAG10B,OAAO+3U,EAAe,wCAE3C,GAAIjH,IAAkB8T,IAAW9T,IAAkBgU,GAEjD,MAAM,IAAIpwT,MAAM,GAAG10B,OAAO+3U,EAAe,kEACpC,GAAIjH,IAAkB8T,GAAS,CACpC,GAAI1P,IAA4Bx9U,GAE9B,MAAO,CACLi0P,OAAQ,aACRs5F,UAAW,oBAIb,MAAM,IAAIvwT,MAAM,gEAEpB,CAAO,GAAIo8S,IAAkBgU,GAAS,CACpC,GAAI5P,IAA4Bv9U,GAE9B,MAAO,CACLg0P,OAAQ,WACRs5F,UAAW,oBAIb,MAAM,IAAIvwT,MAAM,gEAEpB,CACA,MAAM,IAAIA,MAAM,iBAEpB,CAUO,SAAS6vT,IAAezkI,EAAMi4H,EAAe9+O,GAClD,IAAIkoP,EAEAj+R,EAAO48J,EAAK58J,KACdu1R,EAAW34H,EAAK24H,SAChB1qU,EAAS+xM,EAAK/xM,OAEdmzU,GADKphI,EAAKytD,YACE,OAAyBztD,EAAM,MACzCiwH,EAAUf,IAAU9rR,GAAQA,EAAO,CACrC9tD,KAAM8tD,GAGJn1C,GACF,IAAS,IAAkCgqU,IAE7C,IAAIuN,EAAwBX,IAA2B7kI,EAAMi4H,GAC3DpsF,EAAS25F,EAAsB35F,OAC/Bs5F,EAAYK,EAAsBL,UAChCzD,EAAwB1B,IAA4BhgI,EAAM6rC,EAAQosF,GACpEwG,EAA2BiD,EAAsBjD,yBACjDwB,EAA4ByB,EAAsBzB,0BAClDC,EAAgCwB,EAAsBxB,8BACtDC,EAAiCuB,EAAsBvB,+BACvDd,EAAiBqC,EAAsBrC,eACrCoG,EAqCN,SAA2CxV,EAASwO,EAA0BwB,EAA2BC,EAA+BC,EAAgCgF,EAAWlN,EAAe9+O,GAChM,IAGIqlP,EAHAkH,EAA4B,GAC5B5D,EAA0B,GAC1BH,EAAsBlD,EAAyBjyN,MAE/Cm5N,GAA4B,EAChC,GAAkB,QAAdR,EAAqB,CACvB,IAkCMS,EACAC,EACAC,EApCFt7T,EAASylT,EAAQzlT,OAASylT,EAAQzlT,OAASylT,EAAQj3H,OAA4B,QAAnBi3H,EAAQj3H,OAAmB,SAAW,OAAS7/G,EAAOyrP,SAASp6T,OAC3HwuL,EAASi3H,EAAQj3H,OAASi3H,EAAQj3H,OAAoB,SAAXxuL,EAAoB,SAAW,MAI9E,GAHe,WAAXA,IAAoC,QAAXwuL,IAC3B,InB5BC,SAA6CxuL,EAAQwuL,EAAQ51J,GAClE,MAAO,GAAGljD,OAAOsqB,EAAQ,8BAA8BtqB,OAAO84M,EAAQ,SAAS94M,OAAOkjD,EAAM,IAC9F,CmB0Be,CAAgD54B,EAAQwuL,EAAQi/H,IAE5D,WAAXj/H,GAAkC,UAAXA,EACzB0sI,EAA4B,CAAC,CAC3B9rS,GAAIo/J,EACJxsF,MAAOm1N,EACPjsH,GAAI,UAAUx1N,OAAOyhV,IACpB,CACD/nS,GAAIpvB,EACJgiG,MAAOm1N,EACPjsH,GAAI,UAAUx1N,OAAOyhV,KAEvBG,EAA0B,CAAC,CACzBC,UAAW,iBAAkB7hV,OAAOyhV,EAAqB,uBAAyBzhV,OAAOyhV,EAAqB,MAC9GjsH,GAAI,SAASx1N,OAAOyhV,IACnB,CACDI,UAAW,iBAAkB7hV,OAAOyhV,EAAqB,uBAAyBzhV,OAAOyhV,EAAqB,MAC9GjsH,GAAI,SAASx1N,OAAOyhV,KAEtBnD,EAAiB,CAAC,CAChBK,YAAa,UACbC,YAAapnB,GAAUltS,IACtB,CACDq0T,YAAa,SACbC,YAAaiH,IAAev7T,EAAQwuL,EAAQ,MAC3C,CACD6lI,YAAa,SACbC,YAAaiH,IAAev7T,EAAQwuL,EAAQ,OAE9C2sI,GAA4B,MAKb,OAAX3sI,GACF4sI,EAAW,OACXC,EAAgB,MAChBC,EAAgB,QAEhBF,EAAW,SACXC,EAAgB,KAChBC,EAAgB,MAElBJ,EAA4B,CAAC,CAC3B9rS,GAAIisS,EACJr5N,MAAOm1N,EACPjsH,GAAI,SAASx1N,OAAOyhV,IACnB,CACD/nS,GAAIksS,EACJt5N,MAAOm1N,EACPjsH,GAAI,SAASx1N,OAAOyhV,IACnB,CACD/nS,GAAIgsS,EACJp5N,MAAOm1N,EACPjsH,GAAI,UAAUx1N,OAAOyhV,KAEvBnD,EAAiB,CAAC,CAChBK,YAAa,SACbC,YAAa,IAAM,CACjBtyN,MAAOm1N,EACPx4B,UAAW28B,EACXxwV,KAAM,gBACL6jG,EAAQ,CACTy9O,gBAAgB,KAEjB,CACDiI,YAAa,SACbC,YAAa,IAAM,CACjBtyN,MAAOm1N,EACPx4B,UAAW08B,EACXvwV,KAAM,gBACL6jG,EAAQ,CACTy9O,gBAAgB,KAEjB,CACDiI,YAAa,UACbC,YAAa,IAAM,CACjBtyN,MAAOm1N,EACPx4B,UAAWy8B,EACXtwV,KAAM,gBACL6jG,EAAQ,CACTy9O,gBAAgB,KAIxB,KAAO,EACD3G,EAAQzlT,QAAUylT,EAAQj3H,SAC5B,InBtHC,SAA6CxuL,EAAQwuL,GAC1D,MAAO,GAAG94M,OAAO84M,EAAS,UAAY,IAAI94M,OAAO84M,GAAUxuL,EAAS,OAAS,IAAItqB,OAAOsqB,EAAS,UAAY,IAAItqB,OAAO84M,GAAUxuL,EAAS,OAAS,MAAO,uCAC7J,CmBoHe,CAAgDylT,EAAQzlT,OAAQylT,EAAQj3H,SAEjE,2BAAdmsI,GACF3G,EAAiB,GACjBsD,EAA0B,CAAC,CACzBC,UAAW,UAAW7hV,OAAO+/U,EAA0BzzN,MAAO,MAC9DkpG,GAAI,SAASx1N,OAAOyhV,IACnB,CACDI,UAAW,UAAW7hV,OAAOyhV,EAAqB,MAClDjsH,GAAI,SAASx1N,OAAOyhV,MAEC,qBAAdwD,IACT3G,EAAiB,CAAC,CAChBK,YAAa,GACbC,YAAa6C,IAEfG,EAA0B,CAAC,CACzBC,UAAW,UAAW7hV,OAAOyhV,EAAqB,gBAAkBzhV,OAAOggV,EAA8B1zN,MAAO,MAChHkpG,GAAI,SAASx1N,OAAOyhV,KAElBxB,EACF2B,EAAwB50V,KAAK,CAC3B60V,UAAW,UAAW7hV,OAAOyhV,EAAqB,gBAAkBzhV,OAAOigV,EAA+B3zN,MAAO,MACjHkpG,GAAI,SAASx1N,OAAOyhV,KAGtBG,EAAwB50V,KAAK,CAC3B60V,UAAW,UAAW7hV,OAAOyhV,EAAqB,gBAAkBzhV,OAAOggV,EAA8B1zN,MAAO,MAChHkpG,GAAI,SAASx1N,OAAOyhV,MAI1B,IACEz2H,EADEC,EAAY,IAA2B22H,GAE3C,IACE,IAAK32H,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAI+gT,EAAyB96H,EAAMp8N,MACnC0vV,EAAetxV,KAAK,CAClB2xV,YAAamH,EAAuBtwH,GAAG9lM,UAAU,EAAG,GACpDkvT,YAAa/gS,GAAWA,GAAWioS,EAAuBjE,UAAW,UAAW,IAAK,KAAM,KAE/F,CACF,CAAE,MAAO5tT,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACF,CACA,MAAO,CACL8xV,wBAAyBA,EACzB4D,0BAA2BA,EAC3BlH,eAAgBA,EAChBmH,0BAA2BA,EAE/B,CA5L8BM,CAAkChW,EAASwO,EAA0BwB,EAA2BC,EAA+BC,EAAgCgF,EAAWlN,EAAe9+O,GACnNusP,EAA4BD,EAAsBC,0BAClD5D,EAA0B2D,EAAsB3D,wBAChDtD,EAAiBiH,EAAsBjH,eACvCmH,EAA4BF,EAAsBE,0BAChDh7R,EAA2B,MAAnB00R,EAAyB,KAAO,KAC1C7zR,EAA2B,MAAnB6zR,EAAyB,SAAW,SAC5CryP,EAA2B,MAAnBqyP,EAAyB,UAAY,UAM3CkD,GAL4B5J,EAAS0G,GACR1G,EAAShuR,GACLguR,EAASntR,GACRmtR,EAAS3rP,GAEnBiwP,KADS,OAAyBtE,EAAU,CAAC0G,EAAgB10R,EAAOa,EAAOwhC,GAAOrvE,IAAI,MACtBw7E,IAC1F4hI,EAAOwnH,EAAsBxnH,KAC7BtlB,EAAY8sI,EAAsB9sI,UAClCywI,EAAe3D,EAAsBp5B,UACrCg9B,EAAa5D,EAAsB9oH,QACnCilH,EAAgC6D,EAAsB5J,SACpDxvB,EAAY,GAAGjpT,QAAO,QAAmBgmV,IAAe,QAAmBR,IAC3EjsH,EAAwB,QAAd0rH,EAAsB,GAAKgB,EACrCzB,EAAkBnG,IAAwBC,EAAgBC,EAA0BC,EAA+BiH,GACvH,MAAO,CACLllV,UAAW,GAAGP,QAAO,QAAoE,QAAhDmhV,EAAuBD,EAAU3gV,iBAAgD,IAAzB4gV,EAAkCA,EAAuB,KAAK,QAAmBtmH,IAAO,QAAmBtlB,IAAY,QAAwC,IAArB0zG,EAAU37T,OAAe,GAAK,CAAC,CACxQ27T,UAAWA,EACX1vF,QAASA,MACN,QAAmBqoH,IACxBroH,QAASA,EACTglH,yBAA0BA,EAC1BY,eAAgBA,EAChBX,8BAA+BA,EAC/B8D,YAAwB,aAAX32F,EAAwB,aAAe,WACpDokF,QAASA,EACTmR,UAAWA,EACXsD,gBAAiBA,EAErB,CAyJA,SAASqB,IAAev7T,EAAQwuL,EAAQlY,GACtC,MAAO,GAAG5gM,OAAOw3T,GAAUltS,GAAS,KAAKtqB,OAAO4gM,EAAW,KAAK5gM,OAAO84M,EACzE,CCrYA,SAAS,IAAQ1nL,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAMlf,IAAI+wV,IAAY,YAEZC,IAAsB,IAAIzJ,IAAwBwJ,IAAWE,KACjE,SAASA,IAAmBtmI,EAAMxhK,GACvC,IAAI26C,EAAS36C,EAAK26C,OAKdqrP,EAAkBC,IAHtBzkI,EAAO,IAAc,IAAc,CAAC,EAAGA,GAAO,CAAC,EAAG,CAChD24H,SAAUsF,IAAkBj+H,EAAK24H,SAAUx/O,KAEFitP,IAAWjtP,GACpD14F,EAAY+jV,EAAgB/jV,UAC5Bg+U,EAA2B+F,EAAgB/F,yBAC3CY,EAAiBmF,EAAgBnF,eACjCX,EAAgC8F,EAAgB9F,8BAChDzO,EAAUuU,EAAgBvU,QAC1BmR,EAAYoD,EAAgBpD,UAC5BsD,EAAkBF,EAAgBE,gBAChC6B,EAAetW,EACfuW,EAAoBrH,IAAkCoH,EAAclH,EAAgBZ,EAA0BC,EAA+BvlP,EAAOstP,WACpJC,OAA2BtjU,IAApB48L,EAAK24H,SAAS/gV,QAAuCwrB,IAApB48L,EAAK24H,SAAS9gV,EACtD8uV,EAAW,CACbrxV,KAAMoxV,EAAO,OAAS,QAEpBE,EAAc,CAChBtxV,KAAMoxV,EAAO,OAAS,QAEpBl6G,EAAc,IAAc,IAAc,CAAC,EAAG+5G,EAAa/5G,YAAc,CAC3EA,YAAa+5G,EAAa/5G,aACxB,CAAC,GAAI+5G,EAAahhH,SAAWghH,EAAa/5G,YAAc,CAC1DjH,QAASghH,EAAahhH,SACpB,CAAC,GAaL,OAZImhH,GACFC,EAAW,IAAc,IAAc,IAAc,CAAC,EAAGA,GAAWn6G,GAAc,CAAC,EAAG,CACpFwqB,oBAAqB,cAEvB4vF,EAAc,IAAc,IAAc,IAAc,CAAC,EAAGA,GAAcp6G,GAAc,CAAC,EAAG,CAC1FznL,MAAM,KAECwhS,EAAa/5G,YACtB,IAAS,IAAkC,gBAClC+5G,EAAahhH,SACtB,IAAS,IAAkC,YAEtC,IAAc,IAAc,CAAC,EAAG67G,GAAY,CAAC,EAAG,CACrD3gV,UAAWA,EACX4iV,MAAO,GAAGnjV,QAAO,QAAmBsmV,EAAkB,CACpDhH,SAAU,OACVp8R,KAAMujS,EACNlH,eAAgB,QAChBE,kBAAmB,QACnBE,cAAe6E,MACZ,QAAmB8B,EAAkB,CACxChH,SAAU,UACVp8R,KAAMwjS,EACNnH,eAAgB,QAChBI,cAAe6E,MACZ,QAAmB8B,EAAkB,CACxChH,SAAU,UACVp8R,KAAMwjS,EACNnH,eAAgB,QAChBI,cAAe6E,OAGrB,CChEA,IAAImC,IAAwB,CAAC,EACtB,SAAS,IAAIzjS,EAAMimK,EAAKrE,GAC7B,IAAIqwG,EAAa,IAAIunB,IAAwBx5R,EAAMimK,GACnDw9H,IAAsBzjS,GAAQ,CAC5BiyQ,WAAYA,EACZrwG,MAAOA,EAEX,CAOA,IAAI87H,IAASE,IHHc,CAAC,MAAO,SAAU,WAAY,OAAQ,UGIjE,IAAIqD,IAAUE,IFJc,CAAC,QAAS,SEKtC,IAAI6B,IAAWE,IDdc,CAAC,OAAQ,YEV/B,IAAIQ,IAAwB,CAAC,8BAA+B,8BAA+B,4BAA6B,4BAA6B,qBCCjJC,IAA8B,CACvCjM,WAAY,QACZz3E,YAAa,SACb03E,WAAY,QACZC,cAAe,WACfv1M,WAAY,QACZw1M,UAAW,OACXt1M,cAAe,WACfu1M,eAAgB,YAChBC,gBAAiB,aACjB9nB,WAAY,QACZztL,gBAAiB,aACjB0tL,YAAa,SACbxyD,aAAc,UAELkmF,IAA8B,CACvCv3B,WAAY,QACZw3B,YAAa,SACb50B,WAAY,QACZ3C,cAAe,WACf0pB,WAAY,QACZC,UAAW,OACXC,cAAe,WACfC,eAAgB,YAChBC,gBAAiB,aACjBhzB,WAAY,QACZm0B,gBAAiB,aACjB/B,YAAa,SACbtmB,aAAc,UAEL40B,IAA0B,GAAKH,KAC/BI,IAA0B,GAAKH,KAO/BI,IAAiB,GAND,CACzB1rK,OAAQ,EACR2rK,UAAW,EACXC,aAAc,EACdC,YAAa,ICpCJC,IAAwB,CAAC,OAAQ,QAAS,OAAQ,SAAU,aAAc,cAAe,WAQzFC,IAA+B,CACxC1iS,KAAM,EACN2iS,WAAY,EACZ90B,cAAe,EACf5oH,QAAS,EACTu5C,aAAc,EACd5vL,YAAa,EACblsC,UAAW,EACXuqF,UAAW,EACXrxE,OAAQ,EACRuvK,WAAY,EACZi1G,eAAgB,EAChBwiC,gBAAiB,EACjB70B,oBAAqB,EACrBC,oBAAqB,EACrB1N,kBAAmB,EACnBsN,UAAW,EACXlD,WAAY,EACZC,cAAe,EACf0pB,WAAY,EACZC,UAAW,EACXC,cAAe,EACfC,eAAgB,EAChBC,gBAAiB,EACjBhzB,WAAY,EACZE,YAAa,EACb+yB,aAAc,EACdzmB,aAAc,EACdV,aAAc,EACdsoB,gBAAiB,EACjBgN,QAAS,EACTC,QAAS,EACT/3Q,OAAQ,EACR+7K,OAAQ,EACR9kL,QAAS,EACT8rP,WAAY,EACZrkP,YAAa,EACbs5Q,WAAY,EACZC,iBAAkB,EAClBC,gBAAiB,EACjB/0B,YAAa,EACbpM,aAAc,EACdohC,cAAe,EACf90B,WAAY,EACZ+0B,kBAAmB,EACnB90B,kBAAmB,EACnBF,WAAY,EACZ/1E,UAAW,EACXmuE,YAAa,EACb5sQ,MAAO,EACPo8R,WAAY,EACZz3E,YAAa,EACb23E,cAAe,EACfv1M,WAAY,EACZw1M,UAAW,EACXt1M,cAAe,EACfu1M,eAAgB,EAChBC,gBAAiB,EACjB9nB,WAAY,EACZztL,gBAAiB,EACjBw1M,aAAc,EACd9nB,YAAa,EACbxyD,aAAc,EACdxrQ,KAAM,EACN63B,OAAQ,EACRi9N,OAAQ,GCzEC+9F,KD2EoB,GAAKV,KC3EV,WACfW,IAAgB,CACzBzwV,MAAO,CACL7K,GAAI,QACJy/H,OAAQ,CAAC47N,KACT52C,OAAQ,iBACRv9Q,QAAS,SACT93B,MAAO,YAET/M,SAAU,CACRrC,GAAI,kDACJu7V,UAAW,CAAC,IAAK,KACjBpjV,UAAW,kDACX4rC,KAAM,SACNuS,KAAM,CACJ7a,KAAM,OACNioC,YAAa,KACb1iE,OAAQ,SAEVkmB,QAAS,SACT93B,MAAO,aAGJ,SAASosV,IAAgBv4V,GAC9B,MAAgB,WAATA,KAAwBA,UAAoCA,EAAKi0Q,OAC1E,CACO,SAASukF,IAAsBx4V,GACpC,OAAOu4V,IAAgBv4V,IAAS+qD,GAAS/qD,EAC3C,CACO,SAASy4V,IAAqBl+M,GACnC,QAAUA,UAAsCA,EAAc,OAChE,CC9BA,IAAI,IAAY,CAAC,OAAQ,QACzB,SAAS,IAAQh5G,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CACzf,SAAS,IAA2B0c,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAE3K,SAAS4iI,IAAyBx6U,GACvC,IAEEi9M,EAFEjmB,EAAU,GACVkmB,EAAY,IAA2Bl9M,GAAU,IAErD,IACE,IAAKk9M,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIqlG,EAAQ4gF,EAAMp8N,MAGlB,IAAI05V,IAAqBl+M,GAAzB,CACA,IAAI+xF,EAAO/xF,EAAM+xF,KACftsO,EAAOu6I,EAAMv6I,KACbu5E,GAAO,OAAyBghE,EAAO,KACzC,GAAIv6I,GAAQssO,EAAM,CAEhB,IAAI85E,EAAS,IAAc,IAAc,CAAC,EAAG7sO,GAAO,CAAC,EAAG,CACtDv5E,KAAMA,EACNkH,KAAMolO,IAERp3B,EAAQ/3M,KAAKipT,EACf,KAAO,CACL,IAAIuyC,EAAU,IAAc,IAAc,IAAc,CAAC,EAAGp/Q,GAAO+yJ,EAAO,CACxElqO,OAAQkqO,GACN,CAAC,GAAItsO,EAAO,CACdA,KAAMA,GACJ,CAAC,GACLk1M,EAAQ/3M,KAAKw7V,EACf,CAlByC,CAmB3C,CACF,CAAE,MAAOv0T,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACA,OAAOi1M,CACT,CCzCO,SAAS0jJ,IAAa3oI,GAC3B,MAAO,WAAYA,CACrB,CACO,SAAS4oI,IAAc5oI,GAC5B,MAAO,YAAaA,CACtB,CACO,SAAS6oI,IAAc7oI,GAC5B,MAAO,YAAaA,CACtB,CCXA,SAAS,IAA2BjuM,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAK3K,SAASijI,IAAWtqS,GACzB,IAGMuqS,EAHF30S,EAAOoK,EAAKpK,KAEhB,OADqBoK,EAAKwqS,iBAGU,QAA1BD,EAAY30S,EAAK60S,WAA+B,IAAdF,EAAuBA,EAAY,SAEtE,UAEX,CACO,SAASG,IAAOj4T,GACrB,OAAO6pB,GAAS7pB,SAA0B7N,IAAjB6N,EAAW,IACtC,CACO,SAASk4T,IAAcp3U,GAC5B,OAAOA,EAAQ,MAAKA,EAAS,OAAKA,EAAU,MAC9C,CACO,IAQHq3U,IAAgC,GAPL,CAC7BpoQ,MAAO,EACPxnE,OAAQ,EACRgR,OAAQ,EACRw/K,QAAS,EACTq/I,QAAS,IC1BX,IAAI,IAAY,CAAC,QAAS,OAAQ,WAAY,aAC9C,SAAS,IAA2Bt3U,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAClL,SAAS,IAAQv0L,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAkBlf,SAASi0V,IAA4BC,EAAYnpM,GACtD,IAAIopM,EACJ,OAAuD,QAA/CA,EAAsBD,EAAWnpM,UAA8C,IAAxBopM,EAAiCA,EAAsBD,EAAuB,UAAZnpM,EAAsB,kBAAoB,mBAC7K,CAEO,SAASqpM,IAA0BF,EAAYnpM,GACpD,IAAInvH,EAAOy4T,IAA0BH,EAAYnpM,GACjD,OAAO8oM,IAAOj4T,GAAQA,EAAKmjB,KAAOu1S,GACpC,CACO,SAASD,IAA0BH,EAAYnpM,GACpD,IAAIwpM,EAEJ,OAAO1xB,GADqD,QAAhD0xB,EAAuBL,EAAWnpM,UAA+C,IAAzBwpM,EAAkCA,EAAuBL,EAAuB,UAAZnpM,EAAsB,gBAAkB,kBACnJ,CAC3BhsG,KAAMm1S,EAAWn1S,MAErB,CACO,IAAIu1S,IAAe,GASnB,IAAI,IAAgB,CACzBzyR,WAAY,QACZ6P,QAAS,EACTq4I,WAAY,YACZk3H,WAAY,mBACZv3E,KAb6B,CAC7B8qF,gBAAiB,IACjBC,iBAAkB,IAClB11S,KAAMu1S,KAWNvmS,KtBe6B,CAC7B1iB,MAAO,UACPi0B,QAAS,SACT06Q,iBAAkB,GsBjBlBhjI,IAAK,CAAC,EACN92J,KAAM,CAAC,EACPmoR,IAAK,IACLtwT,OAAQ,CAAC,EACTuwT,SAAU,CAAC,EACXnoN,MAAO,CAAC,EACR3yF,KAAM,CAAC,EACPlrB,MAAO,CAAC,EACRwV,KAAM,IACN2gH,KAAM,CACJptF,MAAO,SAEToxR,OAAQ,CAAC,EACTtkT,KAAM,CACJkzB,MAAO,SAETogP,KtByC6B,CAC7BklC,UAAW,GsBzCXtiE,MAAO,CAAC,EACR49F,QAAS,CACPrwT,KAAM,GACN+nL,OAAQ,IACR9qM,IAAK,CAAC,EACN25B,OAAQ,CACNnH,MAAO,SAETqpT,SAAU,CAAC,EACXj8N,KAAM,CAAC,EACPqgF,MAAO,MAETy2I,SAAU,CACRp6T,OAAQ,OACRsjG,MAAM,EACNqgF,OAAO,GAETs4I,UAAW,CACT3rH,KAAM,CACJx5N,QAAS,IAEX0oV,SAAS,GAEXvkV,MvBgB8B,CAC9BwkV,aAAc,GACdC,oBAAqB,GACrBC,qBAAsB,EACtBC,iCAAkC,GAClCC,iCAAkC,GAClCxa,YAAa,EACbya,YAAa,EACbC,YAAa,GACbC,WAAY,GACZC,WAAY,GAEZC,QAAS,EACTC,eAAgB,EAChBC,eAAgB,EAChBC,cAAe,EACfC,cAAe,EACfxmT,MAAM,GuBhCNmpO,WAAY,CAAC,EACbzJ,OLlG+B,CAC/B+mF,4BAA6B,IAC7BC,4BAA6B,IAC7BC,0BAA2B,IAC3BC,0BAA2B,GAC3BC,kBAAmB,KK8FnBzvK,OAAQ,CACNolF,aAAc,GACdwxD,aAAc,IAEhBg1B,aAAc,CAAC,EACfD,UAAW,CAAC,EACZE,YAAa,CAAC,EACd6D,UAAW,IACX3yV,MAAO,CAAC,EACRimD,MAAO,CAAC,EACR2oQ,MAAO,CACLgiC,QDzFyB,IC2F3BnpV,OAAQ,CACNmpV,QD5FyB,IC8F3BjX,uBAAwB,OAGtBiZ,IAAQ,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACrGC,IAAoB,CAC7B99U,KAAM,GACN+9U,WAAY,GACZxU,WAAY,GACZ11K,WAAY,GACZmqL,cAAe,IAENC,IAAgB,CACzB9zT,KAAM0zT,IAAM,GACZ1tT,OAAQ0tT,IAAM,GACd3sT,IAAK2sT,IAAM,GACX1rT,KAAM0rT,IAAM,GACZ7wT,MAAO6wT,IAAM,GACblrT,OAAQkrT,IAAM,GACd7sT,OAAQ6sT,IAAM,GACdhtT,KAAMgtT,IAAM,GACZxzT,MAAOwzT,IAAM,GACbK,MAAO,OACPC,MAAO,OACPC,MAAO,OACPC,MAAO,OACPC,MAAO,OACPC,MAAO,OACPC,MAAO,OACPC,MAAO,OACPC,MAAO,OACPC,MAAO,OACPC,OAAQ,OACRC,OAAQ,OACRC,OAAQ,OACRC,OAAQ,OACRC,OAAQ,OACRC,OAAQ,QA+IV,SAASC,IAAsBj/B,GAC7B,IAGEviG,EAFEyhI,EAAqB,CAAC,EACtBxhI,EAAY,IAFJ,GAAKsiG,GAAc,CAAC,IAIhC,IACE,IAAKtiG,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIpzC,EAAOq5N,EAAMp8N,MACbkD,EAAMy7T,EAAW57T,GACrB86V,EAAmB96V,GAAQmoV,IAAuBhoV,GAAOquU,IAA8BruU,GAAOktU,IAAiBltU,EACjH,CACF,CAAE,MAAOmiC,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACA,OAAO28V,CACT,CAmBA,IAAIC,IAAsB,GAAG1sV,QAAO,QAAmBqvU,MAAe,QAAmBqM,MAAe,QAAmBwL,KAAiB,CAAC,aAAc,UAAW,SAAU,YAAa,QAAS,QAAS,QAAS,SAKjN,SAASyF,MACd,IAAIC,EAAkBv/V,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACvFmzC,EAAQosT,EAAgBpsT,MAC1B/yB,EAAOm/U,EAAgBn/U,KACvBF,EAAWq/U,EAAgBr/U,SAC3B29U,EAAY0B,EAAgB1B,UAC5B3sO,GAAa,OAAyBquO,EAAiB,KACrDjoS,EAAe,GAAY,CAAC,EAAG0wQ,GAAU,KAAgB5nT,EArExD,SAAoBA,GACzB,MAAO,CACLH,KAAM,CACJG,KAAMA,GAERlV,MAAO,CACL,cAAe,CACbkV,KAAMA,GAER,cAAe,CACbA,KAAMA,GAER,cAAe,CACbA,KAAMA,GAER,iBAAkB,CAChBA,KAAMA,IAId,CAiDsEo/U,CAAWp/U,GAAQ,CAAC,EAAG+yB,EA7LtF,WACL,IAAIA,EAAQnzC,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACjF,MAAO,CACL03M,QAAS,CAAC,CACRr2M,KAAM,QACNE,MAAOgsD,GAASpa,GAAS,IAAc,IAAc,CAAC,EAAG+qT,KAAgB/qT,GAAS+qT,MAEpFroS,KAAM,CACJ1iB,MAAO,CACLy1Q,OAAQ,eAGZroL,KAAM,CACJptF,MAAO,CACLy1Q,OAAQ,gBAGZ3oS,KAAM,CACJkzB,MAAO,CACLy1Q,OAAQ,gBAGZ19S,MAAO,CACL,cAAe,CACb8vC,KAAM,CACJ4tQ,OAAQ,gBAGZ,cAAe,CACb5tQ,KAAM,CACJ4tQ,OAAQ,gBAGZ,cAAe,CACb5tQ,KAAM,CACJ4tQ,OAAQ,gBAGZ,iBAAkB,CAChB5tQ,KAAM,CACJ4tQ,OAAQ,gBAGZj7K,KAAM,CACJptH,OAAQ,CACNqoS,OAAQ,iBAId31C,KAAM,CACJ0xD,YAAa,CACX/b,OAAQ,gBAEVic,UAAW,CACTjc,OAAQ,eAEVoc,UAAW,CACTpc,OAAQ,iBAGZ7hQ,MAAO,CACLi/Q,SAAU,CAAC,CACTpd,OAAQ,cACP,CACDA,OAAQ,gBACP,CACDA,OAAQ,aACP,CACDA,OAAQ,cACP,CACDA,OAAQ,eACP,CACDA,OAAQ,gBACP,CACDA,OAAQ,gBACP,CACDA,OAAQ,cACP,CACDA,OAAQ,eACP,CACDA,OAAQ,iBAIhB,CAyGqG62C,CAAkBtsT,GAAS,CAAC,EAAGjzB,EAxG7H,SAA8BA,GACnC,MAAO,CACLw3L,QAAS,CAAC,CACRr2M,KAAM,WACNE,MAAOgsD,GAASrtC,GAAY,IAAc,IAAc,CAAC,EAAG69U,KAAoB79U,GAAY69U,MAE9F99U,KAAM,CACJC,SAAU,CACR0oS,OAAQ,kBAGZ19S,MAAO,CACL,cAAe,CACbgV,SAAU,CACR0oS,OAAQ,wBAGZ,cAAe,CACb1oS,SAAU,CACR0oS,OAAQ,wBAGZ,cAAe,CACb1oS,SAAU,CACR0oS,OAAQ,wBAGZ,iBAAkB,CAChB1oS,SAAU,CACR0oS,OAAQ,4BAKlB,CAsE+I82C,CAAqBx/U,GAAY,CAAC,EAAGgxG,GAAc,CAAC,GAE7L2sO,GACFjmJ,GAAYtgJ,EAAc,YAAaumS,GAAW,GAGpD,IADA,IAAI8B,EAAe,GAAKroS,EAAc+nS,KAC7Bt/V,EAAK,EAAGs3C,EAAO,CAAC,aAAc,YAAa,WAAYt3C,EAAKs3C,EAAKp3C,OAAQF,IAAM,CACtF,IAAIuE,EAAO+yC,EAAKt3C,GACZu3D,EAAahzD,KACfq7V,EAAar7V,GAAQqtU,IAAiBr6Q,EAAahzD,IAEvD,CACA,IACE+hO,EADEC,EAAa,IAA2B,KAE5C,IACE,IAAKA,EAAWppN,MAAOmpN,EAASC,EAAWt4M,KAAK0pB,MAAO,CACrD,IAAIkoT,EAAiBv5H,EAAO9kO,MACxB+1D,EAAasoS,KAEfD,EAAaC,GAAkBnuB,IAAen6Q,EAAasoS,IAE/D,CACF,CAAE,MAAOh5T,GACP0/L,EAAWhjO,EAAEsjC,EACf,CAAE,QACA0/L,EAAW7jO,GACb,CACA,IACE8jO,EADEC,EAAa,IAA2B6nH,KAE5C,IACE,IAAK7nH,EAAWtpN,MAAOqpN,EAASC,EAAWx4M,KAAK0pB,MAAO,CACrD,IAAImoT,EAAiBt5H,EAAOhlO,MACxB+1D,EAAauoS,KACfF,EAAaE,GAAkBV,IAAsB7nS,EAAauoS,IAEtE,CACF,CAAE,MAAOj5T,GACP4/L,EAAWljO,EAAEsjC,EACf,CAAE,QACA4/L,EAAW/jO,GACb,CACA,IACEgkO,EADEC,EAAa,IAA2BmzH,KAE5C,IACE,IAAKnzH,EAAWxpN,MAAOupN,EAASC,EAAW14M,KAAK0pB,MAAO,CACrD,IAAIooT,EAAmBr5H,EAAOllO,MAC1B+1D,EAAawoS,KACfH,EAAaG,GAAoBruB,IAAen6Q,EAAawoS,IAEjE,CACF,CAAE,MAAOl5T,GACP8/L,EAAWpjO,EAAEsjC,EACf,CAAE,QACA8/L,EAAWjkO,GACb,CAgBA,OAfI60D,EAAam/M,SACfkpF,EAAalpF,OAASg7D,IAAen6Q,EAAam/M,SAEhDn/M,EAAap/C,QACfynV,EAAaznV,MAAQu5T,IAAen6Q,EAAap/C,QAE/Co/C,EAAapsD,QACfy0V,EAAaz0V,MA5FjB,SAAgC2oU,GAC9B,IAGExxG,EAFE09H,EAAsB,CAAC,EACvBz9H,EAAa,IAFL,GAAKuxG,IAIjB,IACE,IAAKvxG,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,CACrD,IAAIpzC,EAAO+9N,EAAO9gO,MAElBw+V,EAAoBz7V,GAAQ66V,IAAsBtrB,EAAYvvU,GAChE,CACF,CAAE,MAAOsiC,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACA,OAAOs9V,CACT,CA2EyBC,CAAuB1oS,EAAapsD,QAEvDosD,EAAanG,QACfwuS,EAAaxuS,MAAQsgR,IAAen6Q,EAAanG,QAE/CmG,EAAak6M,OACfmuF,EAAanuF,KAAOigE,IAAen6Q,EAAak6M,OAE3CmuF,CACT,CACA,IAAIM,IAAc,IAAIl6T,IAAI,CAAC,QAAQpzB,QAAO,QAAmB+uU,OACzDwe,IAA4B,CAAC,QAAS,WAAY,aAAc,UAAW,QAAS,SAAU,eAAgB,mBAAoB,yBAA0B,6BAA8B,aAAc,aAAc,SAAU,mBAAoB,eAAgB,eAAgB,YAAa,YAAa,aAAc,gBAAiB,oBAAqB,gBAAiB,YAAa,aAAc,gBAAiB,oBAAqB,gBAAiB,QAAS,YAAa,WAG3dC,IAAkD,IAAc,CAClE3uF,KAAM,CAAC,kBAAmB,mBAAoB,gBAAiB,iBAAkB,StBpW1B,CACvDxpN,KAAM,CAAC,OAAQ,SACfmoR,IAAK,CAAC,aAAc,qBAAsB,mBAAoB,eAC9DvwT,KAAM,CAAC,aAAc,qBAAsB,mBAAoB,eAC/D0V,KAAM,CAAC,SACPi+P,KAAM,CAAC,WAAY,esBiWd,SAAS6sE,IAAuBx0P,GACrCA,EAASo8N,GAAUp8N,GACnB,IACE68N,EADEC,EAAa,IAA2Bw3B,KAE5C,IACE,IAAKx3B,EAAWxrT,MAAOurT,EAASC,EAAW16S,KAAK0pB,MAAO,QAE9Ck0D,EADM68N,EAAOlnU,MAEtB,CACF,CAAE,MAAOqlC,GACP8hS,EAAWplU,EAAEsjC,EACf,CAAE,QACA8hS,EAAWjmU,GACb,CACA,GAAImpG,EAAOqnK,KAET,IAAK,IAAI3uQ,KAAQsnG,EAAOqnK,KAClBw5E,IAAuB7gP,EAAOqnK,KAAK3uQ,YAC9BsnG,EAAOqnK,KAAK3uQ,GAIzB,GAAIsnG,EAAO6qK,OAAQ,CACjB,IACEoyD,EADEC,EAAa,IAA2BywB,KAE5C,IACE,IAAKzwB,EAAW5rT,MAAO2rT,EAASC,EAAW96S,KAAK0pB,MAAO,CACrD,IAAI+0N,EAAQo8D,EAAOtnU,aACZqqG,EAAO6qK,OAAOhK,EACvB,CACF,CAAE,MAAO7lO,GACPkiS,EAAWxlU,EAAEsjC,EACf,CAAE,QACAkiS,EAAWrmU,GACb,CACF,CAEA,GAAImpG,EAAO/1C,KAAM,CACf,IACEmzQ,EADEC,EAAa,IAA2B4Y,KAE5C,IACE,IAAK5Y,EAAW/rT,MAAO8rT,EAASC,EAAWj7S,KAAK0pB,MAAO,CACrD,IAAIi2N,EAASq7D,EAAOznU,aACbqqG,EAAO/1C,KAAK83M,EACrB,CACF,CAAE,MAAO/mO,GACPqiS,EAAW3lU,EAAEsjC,EACf,CAAE,QACAqiS,EAAWxmU,GACb,CACImpG,EAAO/1C,KAAKsuM,SAAW52M,GAASq+C,EAAO/1C,KAAKsuM,iBACvCv4J,EAAO/1C,KAAKsuM,OAEvB,CACIv4J,EAAOlrF,SACTkrF,EAAO8rG,SAAW9rG,EAAO8rG,SAAW,IAAI/kM,OAAOuoV,IAAyBtvP,EAAOlrF,gBACxEkrF,EAAOlrF,QAEhB,IACEyoT,EADEC,EAAa,IAA2B62B,KAE5C,IACE,IAAK72B,EAAWlsT,MAAOisT,EAASC,EAAWp7S,KAAK0pB,MAAO,CACrD,IAGE8xR,EAHE62B,EAAWl3B,EAAO5nU,MAElBooU,EAAc,IAA2BkY,KAE7C,IACE,IAAKlY,EAAYzsT,MAAOssT,EAAUG,EAAY37S,KAAK0pB,MAAO,CACxD,IAAI4oT,EAAS92B,EAAQjoU,aACdqqG,EAAOy0P,GAAUC,EAC1B,CAEF,CAAE,MAAO15T,GACP+iS,EAAYrmU,EAAEsjC,EAChB,CAAE,QACA+iS,EAAYlnU,GACd,CACA,IAAI89V,EAA4BJ,IAAgDE,GAChF,GAAIE,EAA2B,CAC7B,IACEC,EADEC,EAAc,IAA2BF,GAE7C,IACE,IAAKE,EAAYvjV,MAAOsjV,EAAUC,EAAYzyU,KAAK0pB,MAAO,CACxD,IAAIgpT,EAASF,EAAQj/V,aACdqqG,EAAOy0P,GAAUK,EAC1B,CACF,CAAE,MAAO95T,GACP65T,EAAYn9V,EAAEsjC,EAChB,CAAE,QACA65T,EAAYh+V,GACd,CACF,CAIAk+V,IAA4B/0P,EAAQy0P,EACtC,CACF,CAAE,MAAOz5T,GACPwiS,EAAW9lU,EAAEsjC,EACf,CAAE,QACAwiS,EAAW3mU,GACb,CACA,IACE6mU,EADEC,EAAc,IRzfX,GAAK+vB,MQ2fZ,IACE,IAAK/vB,EAAYrsT,MAAOosT,EAAUC,EAAYv7S,KAAK0pB,MAAO,QAGjDk0D,EAFC09N,EAAQ/nU,MAGlB,CACF,CAAE,MAAOqlC,GACP2iS,EAAYjmU,EAAEsjC,EAChB,CAAE,QACA2iS,EAAY9mU,GACd,CAGA,IAAK,IAAIm+V,KAcX,SAA6Bh1P,GAC3B,IAAIi1P,EAAsBjvB,IAAmBhmO,EAAOz6C,OAClDihR,EAAkByuB,EAAoBzuB,gBACtCE,EAAqBuuB,EAAoBvuB,mBACzC56D,EAAWmpF,EAAoBnpF,SAE5BmyD,GAAQuI,KACXxmO,EAAO1gG,MAAM,eAAiB,IAAc,IAAc,CAAC,EAAG0gG,EAAO1gG,MAAM,gBAAiBknU,IAEzFvI,GAAQyI,KACX1mO,EAAO1gG,MAAM,kBAAoB,IAAc,IAAc,CAAC,EAAG0gG,EAAO1gG,MAAM,mBAAoBonU,IAG/FzI,GAAQnyD,UAGJ9rK,EAAOz6C,MAFdy6C,EAAOz6C,MAAQumN,CAInB,CAlCEopF,CAAoBl1P,GAEDA,EACbr+C,GAASq+C,EAAOg1P,KAAY/2B,GAAQj+N,EAAOg1P,YACtCh1P,EAAOg1P,GAGlB,OAAO/2B,GAAQj+N,QAAU/1E,EAAY+1E,CACvC,CA2BA,SAAS+0P,IAA4B/0P,EAAQtnG,EAE7Cy8V,EAAQC,GACN,IAAIC,EAES,SAAT38V,IACFy8V,EAAS,QAGX,IAGMG,EAHFh2V,EAAQ,IAAc,IAAc,CAAC,EALxB81V,EAAoBp1P,EAAOtnG,GAAM08V,GAAqBp1P,EAAOtnG,IAKrBsnG,EAAO1gG,MAA6B,QAAtB+1V,EAAUF,SAAgC,IAAZE,EAAqBA,EAAU38V,IAE/HulU,GAAQ3+T,KAEX0gG,EAAO1gG,MAA8B,QAAvBg2V,EAAWH,SAAiC,IAAbG,EAAsBA,EAAW58V,GAAQ4G,GAEnF81V,UAEIp1P,EAAOtnG,EAElB,CChlBO,SAAS68V,IAAY1uI,GAC1B,MAAO,UAAWA,CACpB,CCEA,IAAI,IAAY,CAAC,UACjB,SAAS,IAAQ1uL,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAOlf,IAAIs5V,IAA0B,WACnC,SAASA,KACP,QAAgBhiW,KAAMgiW,EACxB,CAuFA,OAtFA,QAAaA,EAAY,CAAC,CACxBnhU,IAAK,MACL1+B,MAAO,SAAakxN,EAAM/xM,GACxB,OAAIomU,IAAYr0H,GACPrzN,KAAKiiW,SAAS5uI,EAAM/xM,GCpB5B,SAAsB+xM,GAC3B,MAAO,WAAYA,CACrB,CDmBiB6uI,CAAa7uI,GACfrzN,KAAKmiW,UAAU9uI,EAAM/xM,GACnB46U,IAAc7oI,GAChBrzN,KAAKoiW,WAAW/uI,EAAM/xM,GACpB26U,IAAc5oI,GAChBrzN,KAAKqiW,WAAWhvI,EAAM/xM,GACpB06U,IAAa3oI,GACfrzN,KAAKsiW,UAAUjvI,EAAM/xM,GAErBthB,KAAKuiW,eAAelvI,EAAM/xM,EAErC,GACC,CACDuf,IAAK,iBACL1+B,MAAO,SAAwBkxN,EAAM/xM,GACnC,GAAIygV,IAAY1uI,GACd,OAAOrzN,KAAKwiW,SAASnvI,EAAM/xM,GACtB,GAAI0uU,IAAW38H,GACpB,OAAOrzN,KAAKyiW,QAAQpvI,EAAM/xM,GAE5B,MAAM,IAAI2mB,MAAM,IAAwBorL,GAC1C,GACC,CACDxyL,IAAK,WACL1+B,MAAO,SAAkBkxN,EAAM/xM,GAC7B,IAAI7gB,EAAQT,KACZ,OAAO,IAAc,IAAc,CAAC,EAAGqzN,GAAO,CAAC,EAAG,CAChDqjI,MAAOrjI,EAAKqjI,MAAM1lU,KAAI,SAAU0xU,GAC9B,OAAOjiW,EAAM8hW,eAAeG,EAASphV,EACvC,KAEJ,GACC,CACDuf,IAAK,aACL1+B,MAAO,SAAoBkxN,EAAM/xM,GAC/B,IAAIw9C,EAAS9+D,KACb,OAAO,IAAc,IAAc,CAAC,EAAGqzN,GAAO,CAAC,EAAG,CAChDsvI,QAAStvI,EAAKsvI,QAAQ3xU,KAAI,SAAU0xU,GAClC,OAAO5jS,EAAO9tC,IAAI0xU,EAASphV,EAC7B,KAEJ,GACC,CACDuf,IAAK,aACL1+B,MAAO,SAAoBkxN,EAAM/xM,GAC/B,IAAIw+M,EAAS9/N,KACb,OAAO,IAAc,IAAc,CAAC,EAAGqzN,GAAO,CAAC,EAAG,CAChDuvI,QAASvvI,EAAKuvI,QAAQ5xU,KAAI,SAAU0xU,GAClC,OAAO5iI,EAAO9uM,IAAI0xU,EAASphV,EAC7B,KAEJ,GACC,CACDuf,IAAK,YACL1+B,MAAO,SAAmBkxN,EAAM/xM,GAC9B,IAAIipN,EAASvqO,KACTuT,EAAS8/M,EAAK9/M,OAElB,OAAO,IAAc,IAAc,CAAC,GAD3B,OAAyB8/M,EAAM,MACM,CAAC,EAAG,CAChD9/M,OAAQA,EAAOyd,KAAI,SAAU0xU,GAC3B,OAAOn4H,EAAOv5M,IAAI0xU,EAASphV,EAC7B,KAEJ,GACC,CACDuf,IAAK,WACL1+B,MAAO,SAAkBkxN,EAAM/xM,GAC7B,OAAO,IAAc,IAAc,CAAC,EAAG+xM,GAAO,CAAC,EAAG,CAEhDA,KAAMrzN,KAAKgxB,IAAIqiM,EAAKA,KAAM/xM,IAE9B,GACC,CACDuf,IAAK,YACL1+B,MAAO,SAAmBkxN,EAAM/xM,GAC9B,OAAO,IAAc,IAAc,CAAC,EAAG+xM,GAAO,CAAC,EAAG,CAEhDA,KAAMrzN,KAAKgxB,IAAIqiM,EAAKA,KAAM/xM,IAE9B,KAEK0gV,CACT,CA3FqC,GEbrC,SAAS,IAA2B58U,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CASlL,IAAI2pI,IAAqB,CACvBlrT,KAAM,EACN9Z,OAAQ,EACRynB,UAAW,GAKN,IAAIw9S,IAAkB,IAAIn8T,IAAI,CAAC66S,IAAKE,IAAKD,IAAMK,IAAMlC,IAAOqC,IAAQC,IAAQN,IAAM,IAAMG,MACpFghB,IAAyB,IAAIp8T,IAAI,CAAC+6S,IAAKD,IAAMD,MACxD,SAASwhB,IAAuB3f,GAC9B,OAAOG,IAAWH,IAA8C,iBAA/BiC,IAAejC,KAAmCA,EAAWl3H,GAChG,CACA,SAAS82I,IAAwBjX,EAAU/gV,EAAG4mD,GAC5C,IAAIqtM,EAASrtM,EAAKqtM,OAChBzoM,EAAO5E,EAAKlpD,KACVuC,EAAU,MAAND,EAAY,IAAM,SACtBi4V,EAAoB,MAANj4V,EACdk4V,EAAOnX,EAAS/gV,GAChBm4V,EAAOpX,EAAS9gV,GACpB,GAAIs4U,IAAW2f,IAAS3f,IAAW4f,GACjC,GAAIJ,IAAuBG,IAASH,IAAuBI,GAAO,CAChE,GAAID,EAAKp4F,MACP,OAAO9/P,EACF,GAAIm4V,EAAKr4F,MACd,OAAO7/P,EAET,IAAI0oV,EAAapQ,IAAW2f,MAAWA,EAAK3mC,UAG5C,GAAIo3B,KAFapQ,IAAW4f,MAAWA,EAAK5mC,WAG1C,OAAOo3B,EAAa3oV,EAAIC,EAE1B,GAAIg4V,GAAe,CAAC,MAAO,QAAQ/9V,SAASsxD,GAAO,CACjD,GAAe,aAAXyoM,EACF,OAAOh0P,EACF,GAAe,eAAXg0P,EACT,OAAOj0P,CAEX,CACF,KAAO,IAAI+3V,IAAuBG,GAChC,OAAOl4V,EACF,GAAI+3V,IAAuBI,GAChC,OAAOl4V,CACT,KACK,IAAI83V,IAAuBG,GAChC,OAAOl4V,EACF,GAAI+3V,IAAuBI,GAChC,OAAOl4V,CACT,CAEF,CAaO,SAAS6/P,IAAMh1P,EAAGi2U,GACvB,IAAIqX,EAAuBC,EACvBhgB,EAAUf,IAAUxsU,GAAKA,EAAI,CAC/BpN,KAAMoN,GAEJ0gD,EAAO6sR,EAAQ36U,KAEnB,IAAKm6V,IAAgBhhU,IAAI20B,GACvB,OAAO,KAMT,IAAI8sS,EAAeN,IAAwBjX,EAAU,IAAK1I,IAAY2f,IAAwBjX,EAAU,QAAS1I,GACjH,IAAKigB,EACH,OAAO,KAET,IAAIC,EAAkBxX,EAASuX,GAC3BE,EAAejgB,IAAWggB,GAAmB,IAAQA,EAAiB,CAAC,QAAK/sU,EAC5EitU,EAhCN,SAA6BjwM,GAC3B,OAAQA,GACN,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,QACH,MAAO,SACT,IAAK,SACH,MAAO,QAEb,CAqByBkwM,CAAoBJ,GACvCK,EAAkB,GAClBC,EAAgB,IAAIl9T,IACxB,GAAIqlT,EAAS0X,GAAmB,CAC9B,IAAII,EAAe9X,EAAS0X,GACxBK,EAAiBvgB,IAAWsgB,GAAgB,IAAQA,EAAc,CAAC,QAAKrtU,EACxEstU,GAAkBA,IAAmBN,IAEvCG,EAAgBrjW,KAAKmjW,GACrBG,EAAcryV,IAAIuyV,IAEpB,IAAIC,EAA8C,MAArBN,EAA2B,UAAY,UAChEO,EAAqBjY,EAASgY,GAC9BE,EAAuB1gB,IAAWygB,GAAsB,IAAQA,EAAoB,CAAC,QAAKxtU,EAC1FytU,GAAwBA,IAAyBT,IAEnDG,EAAgBrjW,KAAKyjW,GACrBH,EAAcryV,IAAI0yV,GAEtB,CAGA,IAmCI/gR,EjCgDgCswE,EAMK+oK,EiCzFrC2nC,EAAUt0B,IAAqBl+S,QAAO,SAAU4oP,EAAI9mH,GAEtD,GAAgB,YAAZA,GAAyB,IAAgBu4L,EAAUv4L,GAAU,CAC/D,IAEE8qE,EADEC,EAAY,IAA2B,GAD1BwtH,EAASv4L,KAG1B,IACE,IAAK+qE,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IACIs+R,EAAW8T,IADJnsH,EAAMp8N,OAEjB,IAAIy0U,EAASpa,UAAb,CAIA,IAAIn5T,EAAI,IAAQuzU,EAAU,CAAC,GAG1BvzU,GAEAwgW,EAAc/hU,IAAIz+B,IACjBk3Q,EAAGh6Q,KAAK,CACNkzJ,QAASA,EACTmjL,SAAUA,GAVd,CAaF,CACF,CAAE,MAAOpvS,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACF,CACA,OAAOk3Q,CACT,GAAG,IAYH,YAT8B9jP,IAA1B+sU,EAAgBz4F,MAEhB5nL,EADEu4H,GAAU8nJ,EAAgBz4F,OACnBy4F,EAAgBz4F,MAAQ,OAAS,KAEjCy4F,EAAgBz4F,MAElBg4F,IAAuBjhU,IAAI20B,KACpC0sB,EAAS,QAENA,GAlJA,SAAuBrlE,GAC5B,OAAOA,KAAK+kV,GACd,CAgJkBuB,CAAcjhR,GAG1BktQ,IAAYrE,IAAgC,IAAnBmY,EAAQtjW,OAC5B,KAGL2iW,SAA8G,QAAnDH,EAAwBG,EAAgB1qV,aAA6C,IAA1BuqV,GAAoCA,EAAsB16V,OAAS66V,SAA+G,QAApDF,EAAyBE,EAAgB1qV,aAA8C,IAA3BwqV,OAAoC,EAASA,EAAuB36V,QAAUo2U,IAAUC,QACtYwkB,SAA0DA,EAAgBz4F,OAC5E,IjCgCC,SAAmCwzD,GACxC,MAAO,kCAAkChrT,OAAOgrT,EAAW,KAC7D,CiClCe,CAAsCilC,EAAgB1qV,MAAMnQ,OAEhE,MAGL07U,IAAkB2H,EAAS1c,IAAyBi0B,WACxB9sU,IAA1B+sU,EAAgBz4F,OAClB,IjCuBG,iBAAkBx3P,OADWkgJ,EiCtBW8vM,EjCuBN,2BAA6BhwV,OAAOkgJ,EAAS,QiCrB7E,OAGL+vL,IAAWggB,IAAoBA,EAAgBhnC,YAAckV,IAAQ5vS,IAAI0hU,EAAgBhnC,YAC3F,KjCsBuCA,EiCtBSgnC,EAAgBhnC,UjCuB3D,6EAA8EjpT,OAAOipT,EAAW,SiCrBhG,CACLonC,gBAAiBA,EACjBC,cAAeA,EACfN,aAAcA,EACd7wH,OAAmC,OAA3B8wH,EAAgB9wH,QAA0B0vG,IAAW3rR,GAC7D0tS,QAASA,EACThhR,OAAQA,IA7BD,IA+BX,CClMA,SAAS,IAA2B/9D,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAU3K,SAASmrI,IAAYC,EAAiBtY,EAAUx/O,GAErD,IlCiI+B0zB,EAAUqkO,EkCjIrCjhB,EAAUjR,IAAeiyB,GAEzBE,EAAkBtwB,IAAoB,SAAUoP,EAAS92O,GAK7D,GAJA82O,EAAQpkF,OA6DV,SAAgBzoM,EAAMu1R,EAAUwY,GAC9B,OAAQ/tS,GACN,KAAKmpR,IACL,KAAKqC,IACL,KAAKC,IACL,KAAK,IACL,KAAKL,IACL,KAAKF,IAEH,OAEJ,IAAI12U,EAAI+gV,EAAS/gV,EACfC,EAAI8gV,EAAS9gV,EACboX,EAAK0pU,EAAS1pU,GACdC,EAAKypU,EAASzpU,GAChB,OAAQk0C,GACN,KAAKirR,IACH,GAAI8B,IAAWv4U,KAAOinU,IAASjnU,EAAEkhN,MAAQq3H,IAAWt4U,IAAMA,EAAEsxT,YAAcvxT,EAAEuxT,WAC1E,MAAO,WAET,GAAIgnB,IAAWt4U,KAAOgnU,IAAShnU,EAAEihN,MAAQq3H,IAAWv4U,IAAMA,EAAEuxT,YAActxT,EAAEsxT,WAC1E,MAAO,aAET,GAAIj6S,GAAMD,EAAI,CAEZ,GAAIkiV,EACF,OAAOA,EAGT,IAAKliV,EACH,OAAIkhU,IAAWv4U,IAAMA,EAAEtC,OAAS+1U,MAAiB3M,IAAU9mU,EAAEkhN,MAAQu8H,IAAiBz9U,KAChFu4U,IAAWt4U,IAAMgnU,IAAShnU,EAAEihN,KACvB,aAGJ,WAGT,IAAK5pM,EACH,OAAIihU,IAAWt4U,IAAMA,EAAEvC,OAAS+1U,MAAiB3M,IAAU7mU,EAAEihN,MAAQu8H,IAAiBx9U,KAChFs4U,IAAWv4U,IAAMinU,IAASjnU,EAAEkhN,KACvB,WAGJ,YAEX,CAEF,KAAK21H,IAGH,GAAIx/T,KAAQkhU,IAAWv4U,KAAMinU,IAASjnU,EAAEkhN,OAAS5pM,KAAQihU,IAAWt4U,KAAMgnU,IAAShnU,EAAEihN,MACnF,OAGJ,KAAKs1H,IAEH,GAAIl/T,EACF,OAAIihU,IAAWt4U,IAAMgnU,IAAShnU,EAAEihN,KACvB,aAEA,WAEJ,GAAI7pM,EACT,OAAIkhU,IAAWv4U,IAAMinU,IAASjnU,EAAEkhN,KACvB,WAEA,aAEJ,GAAI11J,IAASqrR,IAAM,CACxB,GAAI72U,IAAMC,EACR,MAAO,WACF,GAAIA,IAAMD,EACf,MAAO,YAEX,CAEF,KAAK22U,IACL,KAAKG,IAED,IAAI0iB,EAAa9b,IAAsC19U,GACnDy5V,EAAa/b,IAAsCz9U,GACvD,GAAIs5V,EACF,OAAOA,EACF,GAAIC,IAAeC,EAExB,MAAgB,SAATjuS,EAAkB,aAAe,WACnC,IAAKguS,GAAcC,EAExB,MAAgB,SAATjuS,EAAkB,WAAa,aACjC,GAAIguS,GAAcC,EACvB,MAAO,WAEP,IAAIC,EAAcpgB,IAAgBt5U,IAAMA,EAAEtC,OAASi2U,IAC/CgmB,EAAcrgB,IAAgBr5U,IAAMA,EAAEvC,OAASi2U,IAEnD,OAAI+lB,IAAgBC,EACX,YACGD,GAAeC,EAClB,kBAGX,EAGN,MAAO,UACT,CAvKmB1lG,CAAOokF,EAAQ36U,KAAMqjV,EAAUwY,QACxB/tU,IAApB+tU,GAAiCA,IAAoBlhB,EAAQpkF,QAC/D,KlC4H6Bh/H,EkC5HSojN,EAAQpkF,OlC4HPqlG,EkC5HeC,ElC6HjD,qBAAsBjxV,OAAO2sH,EAAU,uBAAyB3sH,OAAOgxV,EAAQ,QkC3HjE,QAAjBjhB,EAAQ36U,MAAkB26U,EAAQpkF,OAAQ,CAC5C,IAAI2lG,EAAkB3wB,IAAoB,kBAAmBoP,EAAS92O,GACtE,QAAwB/1E,IAApBouU,EAA+B,CACjC,IAEEtmI,EADEC,EAAY,IADkB,eAAnB8kH,EAAQpkF,QAA2B8sF,EAAS1pU,IAAyB,aAAnBghU,EAAQpkF,QAAyB8sF,EAASzpU,GAAK,CAAC,gBAAkB,IAA4B+gU,EAAQpkF,SAGvK,IACE,IAAK1gC,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAElDgrS,EADc/kH,EAAMp8N,OACD0iW,CACrB,CACF,CAAE,MAAOr9T,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,MACgCozB,IAA5B6sT,EAAQuhB,wBACHvhB,EAAQuhB,eAEnB,CACF,CAWA,YARyBpuU,IADFy9S,IAAoB,UAAWoP,EAAS92O,KAE7D82O,EAAQ3uU,QAeZ,SAAiB8hD,EAAMu1R,GACrB,GAAI,GAAS,CAACpM,IAAOmC,IAAME,IAAQC,KAASzrR,KAErC45R,IAAYrE,GACf,MAAO,GAGX,MACF,CAvBsBr3U,CAAQ2uU,EAAQ36U,KAAMqjV,SAIlBv1T,IADFy9S,IAAoB,SAAUoP,EAAS92O,KAE3D82O,EAAQv3U,OAIZ,SAAgBu3U,EAAS0I,EAAUx/O,GACjC,GAAIw/O,EAAS1sQ,MAAQgkQ,EAAQhkQ,MAAQ40P,IAAoB,OAAQoP,EAAS92O,GACxE,MAAO,UAET,OAAO82O,EAAQv3U,MACjB,CATqB,CAAOu3U,EAAS0I,EAAUx/O,IAEtC82O,CACT,CCjDA,IAAI,IAAY,CAAC,QAAS,QACxB,IAAa,CAAC,SAAU,aAAc,OAAQ,OAAQ,YACxD,SAAS,IAAQ3+S,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAQzf,SAASo8V,IAAiBxhB,GACXA,EAAQt4U,MACXs4U,EAAQptT,KADlB,IAEEugC,GAAO,OAAyB6sR,EAAS,KAC3C,OAAO,GAAK7sR,GAAM51D,OAAS,EAAI41D,EAAOA,EAAK9tD,IAC7C,CACA,SAASo8V,IAA2Bv4P,GAClC,IAAK,IAAI7rG,EAAK,EAAGs3C,EAAO,CAAC,OAAQ,OAAQ,OAAQ,SAAUt3C,EAAKs3C,EAAKp3C,OAAQF,IAAM,CACjF,IAAI81D,EAAOxe,EAAKt3C,GACZ6rG,EAAO/1C,KACT+1C,EAAS,IAAc,IAAc,CAAC,EAAGA,GAAS,CAAC,GAAG,OAAgB,CAAC,EAAG/1C,EAAM,GAAK+1C,EAAO/1C,GAAO,CAAC,QAAS,WAEjH,CACA,OAAO+1C,CACT,CACA,SAASw4P,IAAgB1hB,GACvB,IAAI2hB,EAAarkW,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAClForV,EAAWprV,UAAUC,OAAS,EAAID,UAAU,QAAK61B,EACrD,MAAsB,gBAAlB6sT,EAAQt4U,MACH,CACL2J,QAAS,GAEF2uU,EAAQt4U,MAEVmjD,GAASm1R,EAAQt4U,OAASs4U,EAAQt4U,MAAQ,CAAC,OACvByrB,IAAlB6sT,EAAQt4U,MAEV,KAGHi6V,EAAWj6V,OAASghV,EAASvmV,MAExB0oD,GAAS82S,EAAWj6V,OAASi6V,EAAWj6V,MAAQ,CAAC,OAG1D,CAEJ,CACA,SAASk6V,IAAe5hB,GACtB,IAAI2hB,EAAarkW,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACtF,OAAI0iV,EAAQptT,MAEc,IAAjBotT,EAAQptT,KAAgB,CAAC,EAAIotT,EAAQptT,UAClBO,IAAjB6sT,EAAQptT,KAEV,KAGH+uU,EAAW/uU,MAEc,IAApB+uU,EAAW/uU,KAAgB,CAAC,EAAI+uU,EAAW/uU,UAGpD,CAEJ,CACO,IAAIivU,IAAqC,WAC9C,SAASA,KACP,QAAgBnlW,KAAMmlW,GACtBnlW,KAAKiC,KAAO,cACd,CAiGA,OAhGA,QAAakjW,EAAuB,CAAC,CACnCtkU,IAAK,kBACL1+B,MAAO,SAAyBkxN,EAAM7mH,GACpC,GAAIwjP,IAAW38H,GAAO,CACpB,IAAI58J,EAAO48J,EAAK58J,KACdu1R,EAAW34H,EAAK24H,SACd1I,EAAUf,IAAU9rR,GAAQA,EAAO,CACrC9tD,KAAM8tD,GAER,OAAQ6sR,EAAQ36U,MACd,IAAK,OACL,IAAK,OACL,IAAK,QACH,QAASq8V,IAAgB1hB,EAAS92O,EAAO82O,EAAQ36U,MAAOqjV,GAC1D,IAAK,OACH,QAEIgZ,IAAgB1hB,EAAS92O,EAAO82O,EAAQ36U,MAAOqjV,MAAekZ,IAAe5hB,EAAS92O,EAAO82O,EAAQ36U,OAG/G,CACA,OAAO,CACT,GACC,CACDk4B,IAAK,MACL1+B,MAAO,SAAakxN,EAAM+xI,EAAY9/S,GACpC,IAAIknD,EAAS44P,EAAW54P,OACpBlrF,EAAS+xM,EAAK/xM,OAChBw/P,EAAaztD,EAAKytD,WAClBrqN,EAAO48J,EAAK58J,KACZx0D,EAAOoxN,EAAKpxN,KACZiC,EAAImvN,EAAK24H,SACTyI,GAAY,OAAyBphI,EAAM,KAEzC24H,EAAWsF,IAAkBptV,EAAGsoG,GAChC82O,EAAUf,IAAU9rR,GAAQA,EAAO,CACrC9tD,KAAM8tD,GAEJ4uS,EAAeL,IAAgB1hB,EAAS92O,EAAO82O,EAAQ36U,MAAOqjV,GAC9DsZ,EAA+B,SAAjBhiB,EAAQ36U,MAAmBu8V,IAAe5hB,EAAS92O,EAAO82O,EAAQ36U,OAChF+tV,EAAQ,CAAC,IAAc,IAAc,CACvCz0V,KAAMA,GACLqf,EAAS,CACVA,OAAQA,GACN,CAAC,GAAI,CAAC,EAAG,CACXm1C,KAAMquS,IAAiB,IAAc,IAAc,CAAC,EAAoB,SAAjBxhB,EAAQ36U,WAAuC8tB,IAApB6sT,EAAQ3uU,cAAiD8hB,IAAxB6sT,EAAQz/P,YAA4B,CACrJlvE,QAAS,IACP,CAAC,GAAI2uU,IAET0I,SAAU,GAAKA,EAAU,CAAC,aAKxBuZ,EAAax6F,IAAMs5F,IAAY/gB,EAAS0I,EAAUx/O,GAASw/O,GAC3DwZ,EAAkBxZ,EACtB,GAAIuZ,EAAY,CACd,IAAIE,EAAoBF,EAAWhC,aACjCpgR,EAASoiR,EAAWpiR,OACtBqiR,EAAkB,IAAc,IAAc,CAAC,EAAGxZ,GAAW,CAAC,GAAG,OAAgB,CAAC,EAAGyZ,EAAmB,IAAc,IAAc,CAAC,EAAGzZ,EAASyZ,IAAqBtiR,EAAS,CAC7K4nL,MAAO5nL,GACL,CAAC,IACP,CA2BA,OAvBAqiR,EAAkB,GAAKA,EAAiB,CAAC,KAAM,OAC3CF,GACF5O,EAAMn2V,KAAK,IAAc,IAAc,CAAC,EAAGugR,EAAa,CACtDA,WAAYA,GACV,CAAC,GAAI,CAAC,EAAG,CACXrqN,KAAM,IAAc,IAAc,CAChC9tD,KAAM,QACL,GAAK26U,EAAS,CAAC,OAAQ,cAAe,UAAW,aAAcgiB,GAClEtZ,SAAUwZ,KAGVH,GACF3O,EAAMn2V,KAAK,IAAc,IAAc,CAAC,EAAGugR,EAAa,CACtDA,WAAYA,GACV,CAAC,GAAI,CAAC,EAAG,CACXrqN,KAAM,IAAc,IAAc,CAChC9tD,KAAM,QACNgM,QAAS,EACT+c,QAAQ,GACP,GAAK4xT,EAAS,CAAC,OAAQ,aAAc+hB,GACxCrZ,SAAUwZ,KAGPlgT,EAAU,IAAc,IAAc,CAAC,EAAGmvS,GAAY,CAAC,EAAG,CAC/DiC,MAAOA,IACL,IAAc,IAAc,CAAC,EAAG0O,GAAa,CAAC,EAAG,CACnD54P,OAAQu4P,IAA2Bv4P,KAEvC,KAEK24P,CACT,CAtGgD,GCrE5C,IAAY,CAAC,aACjB,SAAS,IAAQxgU,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAMlf,SAASg9V,IAAuBhrC,EAAOirC,GAC5C,OAAKA,EAGDne,IAAe9sB,GACVkrC,IAAyBlrC,EAAOirC,GAElCE,IAA0BnrC,EAAOirC,GAL/BjrC,CAMX,CACO,SAASorC,IAA0B9Z,EAAU2Z,GAClD,OAAKA,EAGEC,IAAyB5Z,EAAU2Z,GAFjC3Z,CAGX,CAIA,SAAS+Z,IAAoB7gW,EAAMkgB,EAAGugV,GACpC,IAAItgW,EAAM+f,EAAElgB,GACZ,OxBHK,SAAqB26H,GAC1B,OAAOA,IAAU,GAASA,IAAU,WAAYA,CAClD,CwBCMmmO,CAAY3gW,GACVA,EAAIa,UAAUy/V,EACT,IAAc,IAAc,CAAC,EAAGvgV,GAAI,CAAC,GAAG,OAAgB,CAAC,EAAGlgB,EAAMygW,EAAStgW,EAAIa,eAEtF,IpCgBC,SAA6B25H,GAClC,MAAO,2BAA4BtsH,OAAOssH,EAAO,KACnD,CoClBe,CAAgCx6H,EAAIa,SAI1Ckf,CACT,CAIA,SAASygV,IAA0BjvB,EAAU+uB,GAE3C,QAAiBlvU,KADjBmgT,EAAWmvB,IAAoB,QAASnvB,EAAU+uB,IAClD,CAGO,GAAiB,OAAb/uB,EACT,OAAO,KAET,GAAIgR,IAAmBhR,IAAa0Q,IAAY1Q,EAASrkU,MAAO,CAC9D,IAAIA,EAAOwzV,IAAoB,QAASnvB,EAASrkU,KAAMozV,GACvD/uB,EAAW,IAAc,IAAc,CAAC,EAAGA,GAAWrkU,EAAO,CAC3DA,KAAMA,GACJ,CAAC,EACP,CACA,OAAOqkU,CAPP,CAQF,CACA,SAASqvB,IAAiC7/T,EAAKu/T,GAC7C,GAAIniB,IAAWp9S,GACb,OAAOy/T,IAA0Bz/T,EAAKu/T,GAEtC,IAAIpf,EAAWwf,IAAoB,QAAS3/T,EAAKu/T,GAIjD,OAHIpf,IAAangT,GAAQmgT,EAAS59U,OAChC49U,EAAS59U,KAAO,WAEX49U,CAEX,CACA,SAAS2f,IAA4B7iB,EAAYsiB,GAC/C,IAAIthB,IAAkBhB,GASf,CACL,GAAImF,IAA8BnF,GAAa,CAC7C,IAAI8iB,EAAMF,IAAiC5iB,EAAWphT,UAAW0jU,GACjE,GAAIQ,EACF,OAAO,IAAc,IAAc,CAAC,EAAG9iB,GAAa,CAAC,EAAG,CACtDphT,UAAWkkU,IAGG9iB,EAAWphT,UAE3B,OAD+B,OAAyBohT,EAAY,IAGxE,CACA,OAAOA,CACT,CAtBE,IAAIyH,EAAKmb,IAAiC5iB,EAAYsiB,GACtD,OAAI7a,IAEOxC,IAAiBjF,GACnB,CACLphT,UAAWohT,EAAWphT,gBAFnB,EAqBX,CACA,SAAS2jU,IAAyBpU,EAASmU,GACzC,IAAIziV,EAAM,CAAC,EACX,IAAK,IAAIuwI,KAAW+9L,EAClB,GAAI,GAAeA,EAAS/9L,GAAU,CACpC,IAAI4vL,EAAamO,EAAQ/9L,GACzB,GAAI,GAAQ4vL,GAEVngU,EAAIuwI,GAAW4vL,EACdryT,KAAI,SAAU00M,GACb,OAAOwgI,IAA4BxgI,EAAIigI,EACzC,IAAGp1V,QAAO,SAAUm1N,GAClB,OAAOA,CACT,QACK,CACL,IAAIA,EAAKwgI,IAA4B7iB,EAAYsiB,QACtClvU,IAAPivM,IACFxiN,EAAIuwI,GAAWiyE,EAEnB,CACF,CAEF,OAAOxiN,CACT,CCpHA,SAAS,IAAQyhB,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CACzf,SAAS,IAA2B0c,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAQ3K,IAAIktI,IAA2C,WACpD,SAASA,KACP,QAAgBpmW,KAAMomW,GACtBpmW,KAAKiC,KAAO,mBACd,CA2CA,OA1CA,QAAamkW,EAA6B,CAAC,CACzCvlU,IAAK,kBACL1+B,MAAO,SAAyBkxN,GAC9B,GAAI28H,IAAW38H,GAAO,CACpB,IAAI24H,EAAW34H,EAAK24H,SAClBv1R,EAAO48J,EAAK58J,KACd,GAAa,SAATA,GAAmB8rR,IAAU9rR,IAAuB,SAAdA,EAAK9tD,KAAiB,CAC9D,IACE41N,EADEC,EAAY,IAA2B0wG,KAE3C,IACE,IAAK1wG,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIm7G,EAAU8qE,EAAMp8N,MAEhBkkW,EAAiBra,EADH5c,IAAoB37K,IAEtC,GAAIu4L,EAASv4L,KACP+vL,IAAW6iB,KAAoBn0B,IAASm0B,EAAel6I,MAAQ03H,IAAWwiB,IAC5E,OAAO,CAGb,CACF,CAAE,MAAO7+T,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACF,CACF,CACA,OAAO,CACT,GACC,CACDw9B,IAAK,MACL1+B,MAAO,SAAakxN,EAAM/xM,EAAQgkC,GAChC,IrCuFwBghT,EAAOC,EqCvF3Bva,EAAW34H,EAAK24H,SAClBv1R,EAAO48J,EAAK58J,KAEd,OADA,KrCqFwB6vS,IqCrFata,EAAS1pU,GrCqFfikV,IqCrFqBva,EAASzpU,GrCuF1D,kEAAkEhP,OAD1D+yV,GAASC,EAAQ,YAAcD,EAAQ,KAAO,KAC6B,0DqCtF/EhhT,EAAU,IAAc,IAAc,CAAC,EAAG+tK,GAAO,CAAC,EAAG,CAC1D58J,KAAMtI,GAASsI,GAAQ,IAAc,IAAc,CAAC,EAAGA,GAAO,CAAC,EAAG,CAChE9tD,KAAM,SACH,SACH2Y,EACN,KAEK8kV,CACT,CAhDsD,GCNlD,IAAY,CAAC,SAAU,QACzB,IAAa,CAAC,SAAU,OAAQ,QAChC,IAAa,CAAC,MAAO,SAAU,SAC/BI,IAAa,CAAC,OAAQ,QAAS,aAAc,SAAU,OAAQ,SAAU,YACzEC,IAAa,CAAC,QAAS,SAAU,UAAW,WAC5CC,IAAa,CAAC,QAAS,SAAU,UAAW,WAC5CC,IAAa,CAAC,iBAAkB,oBAChCC,IAAa,CAAC,WAAY,cAC5B,SAAS,IAA2BxhV,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAClL,SAAS,IAAQv0L,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CACzf,SAAS,IAAag7O,GAAW,IAAIC,EACrC,WAAuC,GAAuB,oBAAZ1kH,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFxqD,QAAQ10E,UAAU03C,QAAQh2C,KAAKq9H,QAAQC,UAAUtqD,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO1wE,KAAK,OAAO,CAAO,CAAE,CADvQ,GAA6B,OAAO,WAAkC,IAAsC0O,EAAlCgxO,GAAQ,QAAgBF,GAAkB,GAAIC,EAA2B,CAAE,IAAIE,GAAY,QAAgB7jP,MAAM8E,YAAa8N,EAASqsH,QAAQC,UAAU0kH,EAAOhjP,UAAWijP,EAAY,MAASjxO,EAASgxO,EAAMviP,MAAMrB,KAAMY,WAAc,OAAO,QAA2BZ,KAAM4S,EAAS,CAAG,CAmBja,IAAIi0V,IAA8B,SAAUC,IACjD,QAAUD,EAAgBC,GAC1B,IAAIplW,EAAS,IAAamlW,GAC1B,SAASA,IACP,IAAIpmW,EAIJ,OAHA,QAAgBT,KAAM6mW,IACtBpmW,EAAQiB,EAAOL,MAAMrB,KAAMY,YACrBmmW,wBAA0B,CAAC3S,IAAmBuD,IAAoB+B,IAAqB,IAAIyL,IAAyB,IAAIiB,KACvH3lW,CACT,CA4VA,OA3VA,QAAaomW,EAAgB,CAAC,CAC5BhmU,IAAK,MACL1+B,MAAO,SAAakxN,EAAM/xM,GAExB,GAAI0uU,IAAW38H,GAAO,CACpB,IAAI2zI,EAAS,IAAgB3zI,EAAK24H,SAAUhgB,IACxCi7B,EAAY,IAAgB5zI,EAAK24H,SAAU/f,IAC3Ci7B,EAAW,IAAgB7zI,EAAK24H,SAAU9f,IAC9C,GAAI86B,GAAUC,GAAaC,EACzB,OAAOlnW,KAAKmnW,eAAe9zI,EAAM/xM,EAErC,CACA,OAAOwzL,IAAK,QAAgB+xJ,EAAe3mW,WAAY,MAAOF,MAAM4B,KAAK5B,KAAMqzN,EAAM/xM,EACvF,GAEC,CACDuf,IAAK,UACL1+B,MAAO,SAAiBkxN,EAAM/xM,GAC5B,IAAI8lV,EAAiB9lV,EAAO8lV,eAC1BC,EAAmB/lV,EAAO+lV,iBACxBrb,EAAW8Z,IAA0BzyI,EAAK24H,SAAU1qU,EAAOqkV,UAC3D2B,EAA2B,IAAc,IAAc,IAAc,CAAC,EAAGj0I,GAAOA,EAAKpxN,KAAO,CAC9FA,KAAM,CAACqf,EAAOimV,eAAgBl0I,EAAKpxN,MAAMsO,QAAO,SAAUqe,GACxD,OAAOA,CACT,IAAGvF,KAAK,MACN,CAAC,GAAI2iU,EAAW,CAClBA,SAAUA,GACR,CAAC,GACL,GAAIob,GAAkBC,EACpB,OAAOrnW,KAAKwnW,sCAAsCF,EAA0BhmV,GAE9E,IAEEi9M,EAFEkpI,EAAuBznW,KAAKuiW,eAAen/V,KAAKpD,MAChDw+N,EAAY,IAA2Bx+N,KAAK+mW,yBAEhD,IACE,IAAKvoI,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIovT,EAAiBnpI,EAAMp8N,MAC3B,GAAIulW,EAAeC,gBAAgBL,EAA0BhmV,EAAOkrF,QAClE,OAAOk7P,EAAehrI,IAAI4qI,EAA0BhmV,EAAQmmV,EAEhE,CACF,CAAE,MAAOjgU,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACA,OAAOikW,CACT,GACC,CACDzmU,IAAK,YACL1+B,MAAO,SAAmBkxN,EAAM/xM,GAC9B,ONlGC,SAA2B+xM,GAChC,OAAQ,GAAQA,EAAKntN,SAAWmtN,EAAKntN,OAAc,KACrD,CMgGU0hW,CAAkBv0I,GACbrzN,KAAK6nW,eAAex0I,EAAM/xM,GAE1BthB,KAAK8nW,kBAAkBz0I,EAAM/xM,EAExC,GACC,CACDuf,IAAK,iBACL1+B,MAAO,SAAwBkxN,EAAM/xM,GACnC,IAAIw9C,EAAS9+D,KACTkG,EAASmtN,EAAKntN,OAChB6hW,EAAY10I,EAAKA,KACjB12I,GAAO,OAAyB02I,EAAM,KACpCjxL,EAAMl8B,EAAOk8B,IACfo/G,EAASt7I,EAAOs7I,OAChBk1M,EAAQxwV,EAAOwwV,MACbsR,EAAmB1mV,EAAOqkV,SAC5BA,OAAgC,IAArBqC,EAA8B,CAAC,EAAIA,EAC9CC,EAAwB3mV,EAAOimV,eAC/BA,OAA2C,IAA1BU,EAAmC,GAAKA,EAC3D,OAAI7lU,GAAOo/G,EACFxhJ,KAAKmiW,UAAU,IAAc,IAAc,CAAC,EAAG9uI,GAAO,CAAC,EAAG,CAC/DntN,OAAQ,IAAc,IAAc,CAAC,EAAGk8B,EAAM,CAC5CA,IAAKA,GACH,CAAC,GAAIo/G,EAAS,CAChBA,OAAQA,GACN,CAAC,GACL6xE,KAAM,CACJntN,OAAQ,CACNwwV,MAAOA,GAETrjI,KAAM00I,KAENzmV,GAEG,IAAc,IAAc,CAAC,EAAGq7D,GAAO,CAAC,EAAG,CAChD+5Q,MAAOA,EAAM1lU,KAAI,SAAUk3U,GACzB,IAAIC,EAAgB,IAAc,IAAc,CAAC,EAAGxC,GAAW,CAAC,EAAG,CACjEjP,MAAOwR,IAELE,EAAY,GAAG70V,QAAQw0V,EAAU9lW,KAAO,GAAGsR,OAAOw0V,EAAU9lW,KAAM,KAAO,IAAMslW,EAAgB,iBAAiBh0V,OAAOm3T,GAAQw9B,IAC/Hp4V,EAAQgvD,EAAOyjS,eAAewF,EAAW,IAAc,IAAc,CAAC,EAAGzmV,GAAS,CAAC,EAAG,CACxFqkV,SAAUwC,EACVZ,eAAgBa,KAGlB,OADAt4V,EAAM7N,KAAOmmW,EACNt4V,CACT,KAGN,GACC,CACD+wB,IAAK,oBACL1+B,MAAO,SAA2BkxN,EAAM/xM,GACtC,IAAI+mV,EACA7T,EAAQnhI,EACVntN,EAASsuV,EAAMtuV,OACf6hW,EAAYvT,EAAMnhI,KAClB3tM,EAAO8uU,EAAM9uU,KACb4iV,GAAsB,OAAyB9T,EAAO,MACnD,GAAQtuV,IAAWmtN,EAAKhW,UAE3BgW,EAAO,GAAKA,EAAM,CAAC,YACnB,IAAS,IAAsC,YAEjD,IAUE4P,EAVE1vN,EAAS,GACTg1V,EAAoBjnV,EAAOqkV,SAC7BA,OAAiC,IAAtB4C,EAA+B,CAAC,EAAIA,EAC/CC,EAAyBlnV,EAAOimV,eAChCA,OAA4C,IAA3BiB,EAAoC,GAAKA,EACxDpmU,GAAO,GAAQl8B,IAAWA,EAAOk8B,KAAO,CAACujU,EAAWA,EAASvjU,IAAM,MACnEo/G,GAAU,GAAQt7I,IAAWA,EAAOs7I,QAAU,CAACmkN,EAAWA,EAASnkN,OAAS,MAG5E0hF,EAAa,IAFE,GAAQh9N,IAAWA,GAAU,CAACy/V,EAAWA,EAASz/V,OAAS,OAI9E,IACE,IAAKg9N,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,CACrD,IAEE2uL,EAFEwhI,EAAcxlI,EAAO9gO,MACrB+kO,EAAa,IAA2B9kM,GAE5C,IACE,IAAK8kM,EAAWppN,MAAOmpN,EAASC,EAAWt4M,KAAK0pB,MAAO,CACrD,IAEE6uL,EAFEuhI,EAAWzhI,EAAO9kO,MAClBilO,EAAa,IAA2B5lF,GAE5C,IACE,IAAK4lF,EAAWtpN,MAAOqpN,EAASC,EAAWx4M,KAAK0pB,MAAO,CACrD,IAAIqwT,EAAcxhI,EAAOhlO,MACrBgmW,EAAgB,CAClBjiW,OAAQuiW,EACRrmU,IAAKsmU,EACLlnN,OAAQmnN,EACRjS,MAAOiP,EAASjP,OAEd0R,GAAaL,EAAU9lW,KAAO,GAAGsR,OAAOw0V,EAAU9lW,KAAM,KAAO,IAAMslW,EAAiB,WAAa,GAAQrhW,GAAU,GAAGqN,OAAOm3T,GAAQ+9B,KAAiBviW,EAAOk8B,IAAM,OAAO7uB,OAAOm3T,GAAQg+B,IAAa,KAAOxiW,EAAOs7I,OAAS,UAAUjuI,OAAOm3T,GAAQi+B,IAAgB,KACxQ74V,EAAQ9P,KAAKgxB,IAAI+2U,EAAW,IAAc,IAAc,CAAC,EAAGzmV,GAAS,CAAC,EAAG,CAC3EqkV,SAAUwC,EACVZ,eAAgBa,KAElBt4V,EAAM7N,KAAOmmW,EAEb70V,EAAOhT,KAAK,GAAKuP,EAAO,CAAC,SAC3B,CACF,CAAE,MAAO03B,GACP4/L,EAAWljO,EAAEsjC,EACf,CAAE,QACA4/L,EAAW/jO,GACb,CACF,CACF,CAAE,MAAOmkC,GACP0/L,EAAWhjO,EAAEsjC,EACf,CAAE,QACA0/L,EAAW7jO,GACb,CACF,CACF,CAAE,MAAOmkC,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACA,IAAIg6M,EAAU,GAAQn3M,GAAUmtN,EAAKhW,QAAUn3M,EAAOs7I,OAASt7I,EAAOs7I,OAAO3gJ,OAAS,EACtF,OAAO,IAAc,IAAc,CACjC6kB,KAA6C,QAAtC2iV,EAAkBN,EAAUriV,YAAsC,IAApB2iV,EAA6BA,EAAkB3iV,EACpG2uE,MAAO,OACNi0Q,GAAsB,CAAC,EAAG,CAC3BjrJ,QAASA,EACT9pM,OAAQA,GAEZ,GACC,CACDstB,IAAK,WACL1+B,MAAO,SAAkBkxN,EAAM/xM,GAQ7B,OALIkmU,IAFSn0H,EACIqnG,QACYrnG,EAAKhW,UAEhCgW,EAAO,GAAKA,EAAM,CAAC,YACnB,IAAS,IAAsC,WAE1Cve,IAAK,QAAgB+xJ,EAAe3mW,WAAY,WAAYF,MAAM4B,KAAK5B,KAAMqzN,EAAM/xM,EAC5F,GACC,CACDuf,IAAK,wCACL1+B,MAAO,SAA+CkxN,EAAM/xM,GAC1D,IAAI0qU,EAAW34H,EAAK24H,SAClBlrE,EAAaztD,EAAKytD,WAChBsmF,EAAiB9lV,EAAO8lV,eAC1BC,EAAmB/lV,EAAO+lV,iBAC1B76P,EAASlrF,EAAOkrF,OACdo8P,EAAmBC,IAAgB,CACrCxB,iBAAkBA,EAClBvmF,WAAYA,IAEVgoF,EAAiBC,IAAc,CACjC3B,eAAgBA,EAChBpb,SAAU8Z,IAA0B9Z,EAAU1qU,EAAOqkV,YAEvD,OAAO3lW,KAAKyiW,QAAQ,IAAc,IAAc,IAAc,CAAC,EAAGpvI,GAAOu1I,EAAmB,CAC1F9nF,WAAY8nF,GACV,CAAC,GAAIE,EAAiB,CACxB9c,SAAU8c,GACR,CAAC,GAAI,CACPt8P,OAAQA,GAEZ,GACC,CACD3rE,IAAK,iBACL1+B,MAAO,SAAwBkxN,EAAM+xI,GAGnC,IAAI/P,EAAiBhiI,EAAK24H,SACxB5pT,EAAMizT,EAAejzT,IACrBo/G,EAAS6zM,EAAe7zM,OACxBk5K,EAAQ26B,EAAe36B,MACvBsxB,GAAW,OAAyBqJ,EAAgB,KAElD5+R,EAAO48J,EAAK58J,KACd1oD,EAAQslN,EAAKtlN,MACb+yQ,EAAaztD,EAAKytD,WAClB9yQ,EAASqlN,EAAKrlN,OACdokQ,EAAO/+C,EAAK++C,KACZ9wP,EAAS+xM,EAAK/xM,OAEdmzU,GADIphI,EAAK24H,UACG,OAAyB34H,EAAMmzI,MACzCwC,EAAwBhpW,KAAKipW,yBAAyB,CACtD7mU,IAAKA,EACLo/G,OAAQA,EACRk5K,MAAOA,GACN0qC,GACH8D,EAAeF,EAAsBE,aACrCpgP,EAASkgP,EAAsBlgP,OAC7BqgP,EAAcrD,IAA0B9Z,EAAUoZ,EAAWO,UACjE,OAAO3lW,KAAKiiW,SAAS,IAAc,IAAc,IAAc,CAAC,EAAGxN,GAAY3rO,GAAS,CAAC,EAAG,CAE1F4xM,MAAOwuC,EACP71I,KAAM,IAAc,IAAc,IAAc,IAAc,IAAc,CAAC,EAAGtlN,EAAQ,CACtFA,MAAOA,GACL,CAAC,GAAIC,EAAS,CAChBA,OAAQA,GACN,CAAC,GAAIokQ,EAAO,CACdA,KAAMA,GACJ,CAAC,GAAI0O,EAAa,CACpBA,WAAYA,GACV,CAAC,GAAI,CAAC,EAAG,CACXrqN,KAAMA,EACNu1R,SAAUmd,GACT7nV,EAAS,CACVA,OAAQA,GACN,CAAC,KACH8jV,EACN,GACC,CACDvkU,IAAK,2BACL1+B,MAAO,SAAkCinW,EAAQ9nV,GAC/C,IAAI8gB,EAAMgnU,EAAOhnU,IACfo/G,EAAS4nN,EAAO5nN,OAChBk5K,EAAQ0uC,EAAO1uC,MACjB,GAAIt4R,GAAOo/G,EAAQ,CACbk5K,GACF,KtCjM0BrlR,EsCiMe,GAAG9hC,QAAO,QAAmB6uB,EAAM,CAAC4pS,IAAO,KAAK,QAAmBxqL,EAAS,CAACyqL,IAAU,KtChMjI,6BAA6B14T,OAAO8hC,EAAShsB,KAAK,SAAU,KAAK9V,OAAO8hC,EAASx0C,OAAS,EAAI,MAAQ,KAAM,sBsCoM7G,IAFA,IAAIqoW,EAAe,CAAC,EAChBpgP,EAAS,CAAC,EACLnoH,EAAK,EAAGs3C,EAAO,CAAC+zR,GAAKC,IAAStrU,EAAKs3C,EAAKp3C,OAAQF,IAAM,CAC7D,IAAI8yJ,EAAUx7G,EAAKt3C,GACfylC,EAAMgjU,EAAO31M,GACjB,GAAIrtH,EAAK,CACKA,EAAIiuD,MACLjuD,EAAIvI,OACHuI,EAAIs2T,QACJt2T,EAAIi3K,QAHhB,IAIEgsJ,GAAmB,OAAyBjjU,EAAKqgU,KACnDyC,EAAaz1M,GAAW41M,EACxB,IAAK,IAAI5nJ,EAAM,EAAG6nJ,EAAQ,CAAC,QAAS,SAAU,WAAY7nJ,EAAM6nJ,EAAMzoW,OAAQ4gN,IAAO,CACnF,IAEM8nJ,EAFFrkW,EAAOokW,EAAM7nJ,GACjB,QAAkBhrL,IAAd2P,EAAIlhC,GAE4B,QAAjCqkW,EAAezgP,EAAO5jH,UAAoC,IAAjBqkW,IAAyCzgP,EAAO5jH,GAAQ,CAAC,GACnG4jH,EAAO5jH,GAAMuuJ,GAAWrtH,EAAIlhC,EAEhC,CACF,CACF,CACA,MAAO,CACLgkW,aAAcA,EACdpgP,OAAQA,EAEZ,CACE,ItC9N4BzzE,EsC8NxBm0T,EAAS9uC,EAAMrmO,MACjBo1Q,EAAU/uC,EAAM78R,OAChB6rU,EAAWhvC,EAAMgiC,QACjBiN,EAAWjvC,EAAMr9G,QAEnB,MAAO,CACL6rJ,aAAcxD,KAFE,OAAyBhrC,EAAOgsC,KAEIplV,EAAOqkV,UAC3D78O,OAAQ,IAAc,IAAc,IAAc,IAAc,CAAC,EAAG0gP,EAAS,CAC3En1Q,MAAOm1Q,GACL,CAAC,GAAIC,EAAU,CACjB5rU,OAAQ4rU,GACN,CAAC,GAAIC,EAAW,CAClBhN,QAASgN,GACP,CAAC,GAAIC,EAAW,CAClBtsJ,QAASssJ,GACP,CAAC,GAGX,GACC,CACD9oU,IAAK,WACL1+B,MAAO,SAAkBkxN,EAAMxhK,GAC7B,IAAIu1S,EAAiBv1S,EAAKu1S,eACxBC,EAAmBx1S,EAAKw1S,iBACxBuC,GAAc,OAAyB/3S,EAAM80S,KAE3C3a,EAAW34H,EAAK24H,SAClBlrE,EAAaztD,EAAKytD,WAClBnkM,GAAO,OAAyB02I,EAAMuzI,KACpCtlV,EAAS,IAAc,IAAc,CAAC,EAAGsoV,GAAc,CAAC,EAAG,CAC7DxC,eAAgB2B,IAAc,CAC5B3B,eAAgBA,EAChBpb,SAAUA,EACV0K,OAAO,IAET2Q,iBAAkBwB,IAAgB,CAChCxB,iBAAkBA,EAClBvmF,WAAYA,MAGhB,OAAOhsE,IAAK,QAAgB+xJ,EAAe3mW,WAAY,WAAYF,MAAM4B,KAAK5B,KAAM,IAAc,IAAc,CAAC,EAAG28E,GAAO02I,EAAKpxN,KAAO,CACrIA,KAAM,CAACqf,EAAOimV,eAAgBl0I,EAAKpxN,MAAMsO,QAAO,SAAUqe,GACxD,OAAOA,CACT,IAAGvF,KAAK,MACN,CAAC,GAAI/H,EACX,KAEKulV,CACT,CAtWyC,CAsWvC7E,KACF,SAAS+G,IAAc/qS,GACrB,IAAIopS,EAAiBppS,EAAMopS,eACzByC,EAAiB7rS,EAAMguR,SACvBA,OAA8B,IAAnB6d,EAA4B,CAAC,EAAIA,EAC5CnT,EAAQ14R,EAAM04R,MACZpyO,EAAS,CAAC,EACd,GAAI8iP,EAAgB,CAClB,IAEE//H,EADEC,EAAa,IADF,IAAI3gM,IAAI,GAAGpzB,QAAO,QAAmB,GAAK6zV,KAAkB,QAAmB,GAAKpb,OAGnG,IACE,IAAK1kH,EAAWxpN,MAAOupN,EAASC,EAAW14M,KAAK0pB,MAAO,CACrD,IAAIm7G,EAAU4zE,EAAOllO,MACjBkhV,EAAa2I,EAASv4L,GACtBq2M,EAAmB1C,EAAe3zM,GACtC,GAAI4wL,IAAkBhB,GAAa,CAGjC,IAAI0mB,EAAmB,IAAc,IAAc,CAAC,EAAGD,GAAmBzmB,GAC1E/+N,EAAOmvC,GAAWs2M,CACpB,MAAWvhB,IAA8BnF,GACvC/+N,EAAOmvC,GAAW,IAAc,IAAc,CAAC,EAAG4vL,GAAa,CAAC,EAAG,CACjEphT,UAAW,IAAc,IAAc,CAAC,EAAG6nU,GAAmBzmB,EAAWphT,aAElEohT,GAA6B,OAAfA,EACvB/+N,EAAOmvC,GAAW4vL,GACTqT,GAAS7R,IAAWilB,IAAqB12B,IAAY02B,IAAqBzlB,IAAkBylB,IAAqB,GAAQA,MAClIxlP,EAAOmvC,GAAWq2M,EAEtB,CACF,CAAE,MAAOtiU,GACP8/L,EAAWpjO,EAAEsjC,EACf,CAAE,QACA8/L,EAAWjkO,GACb,CACF,MACEihH,EAAS0nO,EAEX,OAAQ1nO,GAAUmmN,GAAQnmN,QAAU7tF,EAAY6tF,CAClD,CACA,SAASukP,IAAgB37M,GACvB,IAAIm6M,EAAmBn6M,EAAIm6M,iBACzBvmF,EAAa5zH,EAAI4zH,WAOnB,OANIumF,GAAoBvmF,GACtB,ItCjXG,SAA8B5zH,GACnC,IAAIm6M,EAAmBn6M,EAAIm6M,iBACzBvmF,EAAa5zH,EAAI4zH,WACnB,MAAO,6BAA6BvtQ,OAAO,GAAU8zV,GAAmB,yCAAyC9zV,OAAO,GAAUutQ,GAAa,IACjJ,CsC6Wa,CAAiC,CACxCumF,iBAAkBA,EAClBvmF,WAAYA,KAGTA,QAA+CA,EAAaumF,CACrE,CChcO,SAAS2C,IAASjmW,GACvB,MAAO,WAAYA,CACrB,CACO,SAASkmW,IAAiBlmW,GAC/B,YAA6D0yB,KAArD1yB,aAA6B,EAASA,EAAQ,KACxD,CACO,SAASmmW,IAASnmW,GACvB,MAAO,WAAYA,CACrB,CAOO,SAASomW,IAAQpmW,GACtB,MAAO,UAAWA,CACpB,CACO,SAASqmW,IAAUrmW,GACxB,MAAO,YAAaA,CACtB,CACO,SAAS,IAAWA,GACzB,MAAO,aAAcA,CACvB,CACO,SAASsmW,IAAatmW,GAC3B,MAAO,eAAgBA,CACzB,CACO,SAASumW,IAAQvmW,GACtB,MAAO,UAAWA,CACpB,CACO,SAASwmW,IAASxmW,GACvB,MAAO,WAAYA,CACrB,CACO,SAASymW,IAASzmW,GACvB,MAAO,WAAYA,CACrB,CACO,SAAS0mW,IAAgB1mW,GAC9B,MAAO,kBAAmBA,CAC5B,CACO,SAAS2mW,IAAU3mW,GACxB,MAAO,YAAaA,CACtB,CACO,SAAS4mW,IAAY5mW,GAC1B,MAAO,cAAeA,CACxB,CACO,SAAS6mW,IAAM7mW,GACpB,MAAO,QAASA,CAClB,CACO,SAAS8mW,IAAS9mW,GACvB,MAAO,WAAYA,CACrB,CACO,SAAS+mW,IAAW/mW,GACzB,MAAO,aAAcA,CACvB,CACO,SAAS,IAAYA,GAC1B,MAAO,cAAeA,CACxB,CACO,SAASgnW,IAAQhnW,GACtB,MAAO,UAAWA,CACpB,CACO,SAASinW,IAAOjnW,GACrB,MAAO,SAAUA,CACnB,CACO,SAASknW,IAASlnW,GACvB,MAAO,WAAYA,KAAO,YAAaA,EACzC,CC1DA,IAAI,IAAY,CAAC,aACf,IAAa,CAAC,OAAQ,OAAQ,SAC9B,IAAa,CAAC,aACd,IAAa,CAAC,aACd,IAAa,CAAC,aACd,IAAa,CAAC,YAAa,QAAS,QACpC,IAAa,CAAC,YAAa,QAAS,QACpC,IAAa,CAAC,aAChB,SAAS,IAAQ4gC,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CACzf,SAAS,IAA2B0c,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAClL,SAAS,IAAawqB,GAAW,IAAIC,EACrC,WAAuC,GAAuB,oBAAZ1kH,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFxqD,QAAQ10E,UAAU03C,QAAQh2C,KAAKq9H,QAAQC,UAAUtqD,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO1wE,KAAK,OAAO,CAAO,CAAE,CADvQ,GAA6B,OAAO,WAAkC,IAAsC0O,EAAlCgxO,GAAQ,QAAgBF,GAAkB,GAAIC,EAA2B,CAAE,IAAIE,GAAY,QAAgB7jP,MAAM8E,YAAa8N,EAASqsH,QAAQC,UAAU0kH,EAAOhjP,UAAWijP,EAAY,MAASjxO,EAASgxO,EAAMviP,MAAMrB,KAAMY,WAAc,OAAO,QAA2BZ,KAAM4S,EAAS,CAAG,CASja,IAAIs4V,IAAgD,SAAUpE,IACnE,QAAUoE,EAAkCpE,GAC5C,IAAIplW,EAAS,IAAawpW,GAC1B,SAASA,IAEP,OADA,QAAgBlrW,KAAMkrW,GACfxpW,EAAOL,MAAMrB,KAAMY,UAC5B,CAoFA,OAnFA,QAAasqW,EAAkC,CAAC,CAC9CrqU,IAAK,MACL1+B,MAAO,SAAakxN,EAAM+xI,GACxB,IAAI+F,EAAuBC,EAI3B,OAHyD,QAAxDD,EAAwB/F,EAAWiG,uBAAuD,IAA1BF,IAA2D/F,EAAWiG,gBAAkB,CAAC,GAC7F,QAA5DD,EAAwBhG,EAAWkG,2BAA2D,IAA1BF,IAA2DhG,EAAWkG,oBAAsB,CAAC,GAClKj4I,EAAOk4I,IAAoBl4I,EAAM+xI,GAC1BtwJ,IAAK,QAAgBo2J,EAAiChrW,WAAY,MAAOF,MAAM4B,KAAK5B,KAAMqzN,EAAM+xI,EACzG,GACC,CACDvkU,IAAK,iBACL1+B,MAAO,SAAwBkxN,EAAM+xI,GAEnC,IADA/xI,EAAOk4I,IAAoBl4I,EAAM+xI,IACxBpZ,SAAU,CACjB,IAEEztH,EAFEytH,EAAW,CAAC,EACZxtH,EAAY,IAA2B1iK,GAAQu3J,EAAK24H,WAExD,IACE,IAAKxtH,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAI4rM,GAAc,OAAe3lB,EAAMp8N,MAAO,GAC5CsxJ,EAAUywF,EAAY,GACtBokE,EAAMpkE,EAAY,GACpB8nG,EAASv4L,GAAW+3M,IAAoBljD,EAAK88C,EAC/C,CACF,CAAE,MAAO59T,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACAgwN,EAAO,IAAc,IAAc,CAAC,EAAGA,GAAO,CAAC,EAAG,CAChD24H,SAAUA,GAEd,CACA,OAAOl3I,IAAK,QAAgBo2J,EAAiChrW,WAAY,iBAAkBF,MAAM4B,KAAK5B,KAAMqzN,EAAM+xI,EACpH,GACC,CACDvkU,IAAK,UACL1+B,MAAO,SAAiBkxN,EAAM+xI,GAC5B,IAAI3G,EAAYprI,EAAKorI,UACnB9hR,GAAO,OAAyB02I,EAAM,KACxC,OAAIorI,EACK,IAAc,IAAc,CAAC,EAAG9hR,GAAO,CAAC,EAAG,CAChDr7D,OAAQw6C,GAAQ2iS,GAAWztU,KAAI,SAAU6gC,GACvC,IAAI45S,EACAztS,GAAQ,OAAenM,EAAM,GAC/B5vD,EAAO+7D,EAAM,GACb0tS,EAAS1tS,EAAM,GACb77D,EAAQupW,EAAOphW,KACjBlH,EAAOsoW,EAAOtoW,KACdm9D,EAAQmrS,EAAOnrS,MACf0gH,GAAS,OAAyByqL,EAAQ,KACxB,WAAhBzqL,EAAOt4K,MACTs4K,EAAOt4K,KAAO,QACds4K,EAAO2jI,QAAS,GACS,UAAhB3jI,EAAOt4K,OAChBs4K,EAAOt4K,KAAO,SAGhBy8V,EAAWiG,gBAAgBppW,GAAkB,SAAVs+D,EACnC,IACE0iK,EADEC,EAAa,IAA2BsJ,GAAyE,QAAnEi/H,EAAyBrG,EAAWkG,oBAAoBrpW,UAA8C,IAA3BwpW,EAAoCA,EAAyB,CAAC,IAE3L,IACE,IAAKvoI,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,CAC1C2qL,EAAO9gO,MACbo+D,MAAkB,SAAVA,CACf,CACF,CAAE,MAAO/4B,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACA,MAAO,CACLpB,KAAMA,EACNE,MAAOA,EACP8+K,OAAQA,EACR79K,KAAMA,EAEV,MAGGiwN,CACT,KAEK63I,CACT,CA3F2D,CA2FzDlJ,KACF,SAASuJ,IAAoBl4I,EAAM+xI,GACjC,IAAI5tF,EAAKnkD,EAAKv/M,UACZ6oE,GAAO,OAAyB02I,EAAM,KACxC,GAAImkD,EAAI,CACN,IAAI1jQ,EAAY0jQ,EAAGxmP,KAAI,SAAUjtB,GAC/B,GAAIimW,IAASjmW,GACX,MAAO,CACLwM,OAAQ,IAAmBxM,EAAGqhW,IAE3B,GAAIwF,IAAM7mW,IAAMiuU,IAAYjuU,EAAEooN,KACnC,OAAO,IAAc,IAAc,CAAC,EAAGpoN,GAAI,CAAC,EAAG,CAC7CooN,IAAKw/I,IAAmB5nW,EAAEooN,OAEvB,GAAI+9I,IAASnmW,GAAI,CACtB,IAAI6nW,EAAU7nW,EAAEu1B,KACdqkH,EAAQiuN,EAAQnN,UAChBnlU,GAAO,OAAyBsyU,EAAS,KAC3C,OAAOjuN,EAAQ,IAAc,IAAc,CAAC,EAAG55I,GAAI,CAAC,EAAG,CACrDu1B,KAAM,IAAc,CAClBqkH,MAAOA,GACNrkH,KACAv1B,CACP,CACA,OAAOA,CACT,IACA,OAAO,IAAc,IAAc,CAAC,EAAG44E,GAAO,CAAC,EAAG,CAChD7oE,UAAWA,GAEf,CACA,OAAOu/M,CACT,CACA,SAASm4I,IAAoBz3U,EAAKqxU,GAChC,IAAIyG,EACAvjD,EAAMsgB,GAAU70S,GAIpB,GAHIyvT,IAAWl7B,IAAQ0pB,IAAY1pB,EAAIn8F,OACrCm8F,EAAIn8F,IAAMw/I,IAAmBrjD,EAAIn8F,MAE/Bg6H,IAAgB79B,IAAqC,QAA5BujD,EAAavjD,EAAIxvS,aAAkC,IAAf+yV,GAA8D,QAApCA,EAAaA,EAAWtxT,cAAmC,IAAfsxT,GAAyBA,EAAWpN,UAAW,CACpL,IAAIqN,EAAoBxjD,EAAIxvS,MAAMyhC,OAChCojG,EAAQmuN,EAAkBrN,UAC1BlkT,GAAS,OAAyBuxT,EAAmB,KACvDxjD,EAAIxvS,MAAMyhC,OAAS,IAAc,IAAc,CAAC,EAAGA,GAASojG,EAAQ,CAClEA,MAAOA,GACL,CAAC,EACP,CACA,GAAI2qM,IAAiBhgC,GACnB,GAAI,GAAQA,EAAIrmR,WACdqmR,EAAIrmR,UAAYqmR,EAAIrmR,UAAUjR,KAAI,SAAU7L,GAC1BA,EAAEs5U,UAAlB,IACE9gN,EAAQx4H,EAAEw4H,MAEVouN,GADO5mV,EAAE7f,MACF,OAAyB6f,EAAG,MACrC,OAAOw4H,EAAQx4H,EAAI,IAAc,IAAc,CAAC,EAAG4mV,GAAO,CAAC,EAAG,CAC5DzmW,KAAM,IAAmB6f,EAAGigV,IAEhC,QACK,CACL,IAAI4G,EAAuBR,IAAoBljD,EAAIrmR,UAAWmjU,GAE5D6G,GADYD,EAAqBvN,UACxBuN,EAAqBruN,OAE9BouN,GADOC,EAAqB1mW,MACrB,OAAyB0mW,EAAsB,MACxD1jD,EAAIrmR,UAAYgqU,EAAS3jD,EAAIrmR,UAAY,IAAc,IAAc,CAAC,EAAG8pU,GAAO,CAAC,EAAG,CAClFzmW,KAAM,IAAmBgjT,EAAIrmR,UAAWmjU,IAE5C,CAEF,OAAO98C,CACT,CACA,SAASqjD,IAAmBx/I,GAC1B,IAAIC,EAAMD,EAAIE,OACd,GAAID,SAAkCA,EAAIqyI,UAAW,CACnD,IAAI9gN,EAAQyuE,EAAIqyI,UACd9hR,GAAO,OAAyByvI,EAAK,KACvC,OAAO,IAAc,IAAc,CAAC,EAAGD,GAAM,CAAC,EAAG,CAC/CE,OAAQ,IAAc,IAAc,CAAC,EAAG1vI,GAAO,CAAC,EAAG,CACjDghE,MAAOA,KAGb,CACA,OAAOwuE,CACT,CACA,SAAS,IAAmBl/J,EAAIm4S,GAE9B,IAAI8G,EAAgC,SAAuC9mV,GACzE,OAAOqjT,GAA4BrjT,GAAG,SAAUu4H,GAC9C,IAAIwuN,EAAwBC,EACxBjrW,EAEAkrW,EAAO,CACT1uN,MAAOA,EACPp9E,MAH2E,QAAhE4rS,EAAyB/G,EAAWiG,gBAAgB1tN,UAA+C,IAA3BwuN,GAAoCA,GAOzH,OAF8D,QAA7DC,GAAYjrW,EAAKikW,EAAWkG,qBAAqB3tN,UAAiC,IAAbyuN,IAAiCjrW,EAAGw8I,GAAS,IACnHynN,EAAWkG,oBAAoB3tN,GAAOp9I,KAAK8rW,GACpCA,CACT,GACF,EACA,OAAOp/S,EAAGwxS,UAAYyN,EAA8Bj/S,EAAGwxS,WAAah2B,GAA4Bx7Q,EAAG3nD,MAAQ2nD,EAAG18C,QAAQ,SAAU6U,GAC9H,OAAOA,EAAEq5U,UAAYyN,EAA8B9mV,EAAEq5U,WAAar5U,CACpE,GACF,CCzNA,SAAS,IAAQuf,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CACzf,SAAS,IAA2B0c,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAClL,SAAS,IAAawqB,GAAW,IAAIC,EACrC,WAAuC,GAAuB,oBAAZ1kH,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFxqD,QAAQ10E,UAAU03C,QAAQh2C,KAAKq9H,QAAQC,UAAUtqD,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO1wE,KAAK,OAAO,CAAO,CAAE,CADvQ,GAA6B,OAAO,WAAkC,IAAsC0O,EAAlCgxO,GAAQ,QAAgBF,GAAkB,GAAIC,EAA2B,CAAE,IAAIE,GAAY,QAAgB7jP,MAAM8E,YAAa8N,EAASqsH,QAAQC,UAAU0kH,EAAOhjP,UAAWijP,EAAY,MAASjxO,EAASgxO,EAAMviP,MAAMrB,KAAMY,WAAc,OAAO,QAA2BZ,KAAM4S,EAAS,CAAG,CAoGxa,IA9FO,IAAI05V,IAA4C,SAAUxF,IAC/D,QAAUwF,EAA8BxF,GACxC,IAAIplW,EAAS,IAAa4qW,GAC1B,SAASA,IAEP,OADA,QAAgBtsW,KAAMssW,GACf5qW,EAAOL,MAAMrB,KAAMY,UAC5B,CA+EA,OA9EA,QAAa0rW,EAA8B,CAAC,CAC1CzrU,IAAK,MACL1+B,MAAO,SAAakxN,EAAM+xI,GACxB,IAAIgG,EACAmB,EAAiE,QAAnDnB,EAAwBhG,EAAWmH,kBAAkD,IAA1BnB,EAAmCA,EAAwB,GACxI,GAAI/3I,EAAK/xM,SAAW0uU,IAAW38H,GAAO,CACpC,IAEEkL,EAFEj9M,EAAS,GACTk9M,EAAY,IAA2BnL,EAAK/xM,QAEhD,IACE,IAAKk9M,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIqlG,EAAQ4gF,EAAMp8N,MACd05V,IAAqBl+M,GACvB4uN,EAAWhsW,KAAKo9I,GAEhBr8H,EAAO/gB,KAAKo9I,EAEhB,CACF,CAAE,MAAOn2G,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACAgwN,EAAK/xM,OAASA,CAChB,CAEA,OADA8jV,EAAWmH,WAAaA,EACjBz3J,IAAK,QAAgBw3J,EAA6BpsW,WAAY,MAAOF,MAAM4B,KAAK5B,KAAMqzN,EAAM+xI,EACrG,GACC,CACDvkU,IAAK,UACL1+B,MAAO,SAAiBkxN,EAAM+xI,GAC5B,IAAIoH,EACAD,EAAanH,EAAWmH,WAC5B,IAAKA,IAAeA,EAAW1rW,OAAQ,OAAOwyN,EAC9C,IAGE4P,EAHEp8N,GAAiD,QAAxC2lW,EAAmBpH,EAAWv+V,YAAuC,IAArB2lW,EAA8BA,EAAmB,IAAIj5V,OAAO8/M,EAAKpxN,MAC1Hqf,EAAS,GACT4hN,EAAa,IAA2BqpI,GAE5C,IACE,IAAKrpI,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,CACrD,IAAImmT,EAAYx7H,EAAO9gO,MAEvB,GAAKs8V,EAAUjpF,OAAUipF,EAAUjpF,MAAM30Q,OAElC,CACL,IACEomO,EADEC,EAAa,IAA2Bu3H,EAAUjpF,OAEtD,IACE,IAAKtuC,EAAWppN,MAAOmpN,EAASC,EAAWt4M,KAAK0pB,MAAO,CACrD,IAAI85N,EAAOnrC,EAAO9kO,OAEd,GAASiwQ,KAAUA,IAAS/+C,EAAKpxN,MAAQ4E,EAAK1B,SAASitQ,KAAU,GAAQA,IAG7EA,EAAKphP,KAAI,SAAU/e,GACjB,OAAOpL,EAAKqM,QAAQjB,EACtB,IAAGu2H,OAAM,SAAUv2H,EAAG/Q,EAAGuV,GACvB,OAAc,IAAPxE,IAAmB,IAAN/Q,GAAW+Q,EAAIwE,EAAIvV,EAAI,GAC7C,MACEogB,EAAO/gB,KAAKk+V,EAEhB,CACF,CAAE,MAAOj3T,GACP0/L,EAAWhjO,EAAEsjC,EACf,CAAE,QACA0/L,EAAW7jO,GACb,CACF,MAxBEie,EAAO/gB,KAAKk+V,EAyBhB,CACF,CAAE,MAAOj3T,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CAEA,OADIie,EAAOzgB,SAAQwyN,EAAK/xM,OAASA,GAC1B+xM,CACT,KAEKi5I,CACT,CAtFuD,CAsFrDtK,KACEv+M,IAAQ,WACV,IAAI93I,EAASssC,IAAKt3C,KACdqgC,EAAQsrU,IAA6BpsW,UAAUyL,GACnD2gW,IAA6BpsW,UAAUyL,GAAU,SAAU0nN,EAAM/xM,GAC/D,OAAO0f,EAAMp/B,KAAK5B,KAAMqzN,EAM5B,SAA6BA,EAAM/xM,GACjC,IAAImrV,EACJ,OAAOp5I,EAAKpxN,KAAO,IAAc,IAAc,CAAC,EAAGqf,GAAS,CAAC,EAAG,CAC9Dza,MAAwC,QAAhC4lW,EAAenrV,EAAOza,YAAmC,IAAjB4lW,EAA0BA,EAAe,IAAIl5V,OAAO8/M,EAAKpxN,QACtGqf,CACP,CAXkCorV,CAAoBr5I,EAAM/xM,GAC1D,CACF,EACS3gB,IAAK,EAAGs3C,IAAO,CAAC,WAAY,YAAa,aAAc,aAAc,YAAat3C,IAAKs3C,IAAKp3C,OAAQF,MAC3G8iJ,MChHF,SAAS,IAAQ9+G,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CASlf,SAAS,IAAU2qN,EAAM7mH,QACf/1E,IAAX+1E,IACFA,EAAS0zP,IAAW7sI,EAAK7mH,SAE3B,IAAImgQ,EAmBN,SAA8Bt5I,GAC5B,IAAI7mH,EAAS5rG,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC9EwkW,EAAa,CACf54P,OAAQA,GAEV,OAAOogQ,IAA4B57U,IAAI67U,IAAe77U,IAAI87U,IAA0B97U,IAAIqiM,EAAM+xI,GAAaA,GAAaA,EAC1H,CAzBuB2H,CAAqB15I,EAAM7mH,GAG5C6rK,EA+BC,SAA2BhlD,EAAMvjI,EAAU0c,GAChD,IAAIz+F,EAAQ+hF,EAAS/hF,MACnBC,EAAS8hF,EAAS9hF,OAChBg/V,EAAkBhd,IAAW38H,IAAS0uI,IAAY1uI,GAClD45I,EAAkB,CAAC,EAClBD,EAYU,aAATj/V,GAAkC,aAAVC,GAC1Bi/V,EAAgBtkW,KAAO,MACvBskW,EAAgB19R,SAAW,WACT,aAATxhE,GACTk/V,EAAgBtkW,KAAO,QACvBskW,EAAgB19R,SAAW,WACR,aAAVvhE,IACTi/V,EAAgBtkW,KAAO,QACvBskW,EAAgB19R,SAAW,YAlBhB,aAATxhE,IACF,IAAS,IAAmC,UAC5CA,OAAQ0oB,GAEI,aAAVzoB,IACF,IAAS,IAAmC,WAC5CA,OAASyoB,IAeb,IAAI4hP,EAAW,IAAc,IAAc,IAAc,CACvD1vQ,KAAM,OACLskW,GAAkBzgQ,EAAS0gQ,IAAmB1gQ,EAAO6rK,UAAY,CAAC,GAAI60F,IAAmB75I,EAAKglD,WAC3E,QAAlBA,EAAS1vQ,MAAmBqkW,IAC9B,IAAS,KACT30F,EAAS1vQ,KAAO,OAEL,aAAToF,GAA2C,OAAjBsqQ,EAAS1vQ,MAAkC,SAAjB0vQ,EAAS1vQ,MAC/D,IAAS,IAAmD,UAEhD,aAAVqF,GAA4C,OAAjBqqQ,EAAS1vQ,MAAkC,SAAjB0vQ,EAAS1vQ,MAChE,IAAS,IAAmD,WAG9D,GAAIggU,GAAUtwD,EAAU,CACtB1vQ,KAAM,QAEN,OAEF,OAAO0vQ,CACT,CA/EiB80F,CAAkBR,EAAgB,CAC/C5+V,MAHUslN,EAAKtlN,MAIfC,OAHSqlN,EAAKrlN,OAIdqqQ,SAAUhlD,EAAKglD,UACd7rK,GACH,OAAO,IAAc,IAAc,CAAC,EAAGmgQ,GAAiBt0F,EAAW,CACjEA,SAAUA,GACR,CAAC,EACP,CACA,IAAIw0F,IAAiB,IAAIhG,IACrBiG,IAA4B,IAAI5B,IAChC0B,IAA8B,IAAIN,IAYtC,SAASY,IAAmB70F,GAC1B,OAAO,GAASA,GAAY,CAC1B1vQ,KAAM0vQ,GACJA,QAA2CA,EAAW,CAAC,CAC7D,CC7CA,SAAS,IAA2BjzP,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CASlL,IAAIk0I,IAAuB,CAAC,aAAc,WAInC,SAASC,IAA0BtpW,EAAGupW,GAC3C,IAEE/uI,EAFEn5M,EAAI,CAAC,EACLo5M,EAAY,IAA2B4uI,KAE3C,IACE,IAAK5uI,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIl6B,EAAImgN,EAAMp8N,MACV4B,QAAc0yB,IAAT1yB,EAAEqa,KACTgH,EAAEhH,GAAKm0T,IAAiBxuU,EAAEqa,IAE9B,CACF,CAAE,MAAOopB,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CAIA,OAHIiqW,IACFloV,EAAE9D,OAASvd,EAAEud,QAER8D,CACT,CChCA,SAAS,IAA2BA,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAClL,SAAS,IAAQv0L,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAUlf,IAAI6kW,IAAqB,WAC9B,SAASA,IACP,IAAI/3B,EAAW50U,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAChF6jP,EAAW7jP,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,CAAC,GACpF,QAAgBZ,KAAMutW,GACtBvtW,KAAKw1U,SAAWA,EAChBx1U,KAAKykP,SAAWA,CAClB,CA+FA,OA9FA,QAAa8oH,EAAO,CAAC,CACnB1sU,IAAK,QACL1+B,MAAO,WACL,OAAO,IAAIorW,EAAM3kC,GAAU5oU,KAAKw1U,UAAW5M,GAAU5oU,KAAKykP,UAC5D,GACC,CACD5jN,IAAK,UACL1+B,MAAO,WACL,OAAO,IAAc,IAAc,CAAC,EAAGnC,KAAKw1U,UAAWx1U,KAAKykP,SAC9D,GACC,CACD5jN,IAAK,MACL1+B,MAAO,SAAa0+B,GAElB,OAAO0qS,GAAgBvrU,KAAKw1U,SAAS30S,GAAM7gC,KAAKykP,SAAS5jN,GAC3D,GACC,CACDA,IAAK,kBACL1+B,MAAO,SAAyB0+B,GAE9B,YAA2BpK,IAAvBz2B,KAAKw1U,SAAS30S,GACT,CACL20S,UAAU,EACVrzU,MAAOnC,KAAKw1U,SAAS30S,SAESpK,IAAvBz2B,KAAKykP,SAAS5jN,GAChB,CACL20S,UAAU,EACVrzU,MAAOnC,KAAKykP,SAAS5jN,IAGlB,CACL20S,UAAU,EACVrzU,WAAOs0B,EAEX,GACC,CACDoK,IAAK,kBACL1+B,MAAO,SAAyB0+B,EAAKgxB,GACnC,IAAI1vD,EAAQ0vD,EAAK1vD,MACfqzU,EAAW3jR,EAAK2jR,cACJ/+S,IAAVt0B,GACFnC,KAAKkC,IAAI2+B,EAAK1+B,EAAOqzU,EAEzB,GACC,CACD30S,IAAK,MACL1+B,MAAO,SAAa0+B,EAAK1+B,EAAOqzU,GAG9B,cAFOx1U,KAAKw1U,EAAW,WAAa,YAAY30S,GAChD7gC,KAAKw1U,EAAW,WAAa,YAAY30S,GAAO1+B,EACzCnC,IACT,GACC,CACD6gC,IAAK,mBACL1+B,MAAO,SAA0B0+B,EAAKm9B,GACpC,IAAIw3Q,EAAWx3Q,EAAMw3Q,SACnB/wF,EAAWzmL,EAAMymL,cAEGhuN,IAAlB++S,EAAS30S,GACX7gC,KAAKkC,IAAI2+B,EAAK20S,EAAS30S,IAAM,QACFpK,IAAlBguN,EAAS5jN,IAClB7gC,KAAKkC,IAAI2+B,EAAK4jN,EAAS5jN,IAAM,EAEjC,GACC,CACDA,IAAK,oBACL1+B,MAAO,SAA2B0+B,EAAK/iB,QAEtB2Y,IAAX3Y,EAAE+iB,IACJ7gC,KAAKkC,IAAI2+B,EAAK/iB,EAAE+iB,IAAM,EAE1B,GAKC,CACDA,IAAK,UACL1+B,MAAO,SAAiBoiC,GACtB,IACEg6L,EADEC,EAAY,IAA2B,GAAKj6L,EAAMipU,YAEtD,IACE,IAAKhvI,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIzX,EAAM09L,EAAMp8N,MACZkD,EAAMk/B,EAAMkpU,gBAAgB5sU,GAChC7gC,KAAK0tW,gBAAgB7sU,EAAKx7B,EAC5B,CACF,CAAE,MAAOmiC,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACF,KAEKkqW,CACT,CAvGgC,GAwGzB,SAASI,IAAaxrW,GAC3B,MAAO,CACLqzU,UAAU,EACVrzU,MAAOA,EAEX,CACO,SAASyrW,IAAazrW,GAC3B,MAAO,CACLqzU,UAAU,EACVrzU,MAAOA,EAEX,CACO,SAAS0rW,IAAoBr7V,GAClC,OAAO,SAAU6hB,EAAIC,EAAI0mL,EAAU8yJ,GACjC,IAAIt7U,EAAOhgB,EAAQ6hB,EAAGlyB,MAAOmyB,EAAGnyB,OAChC,OAAIqwB,EAAO,EACF6B,EACE7B,EAAO,EACT8B,EAEFy5U,IAAkB15U,EAAIC,EAAI0mL,EAAU8yJ,EAC7C,CACF,CACO,SAASC,IAAkB15U,EAAIC,EAAI0mL,EAAU8yJ,GAKlD,OAJIz5U,EAAGmhT,UAAYlhT,EAAGkhT,UACpB,I5CmCG,SAAkCx6H,EAAU8yJ,EAAYz5U,EAAIC,GACjE,MAAO,eAAe/gB,OAAOu6V,EAAWlrV,WAAY,eAAgBrP,OAAOynM,EAASp4L,WAAY,OAAQrP,OAAO,GAAU8gB,GAAK,SAAS9gB,OAAO,GAAU+gB,GAAK,aAAa/gB,OAAO,GAAU8gB,GAAK,IAClM,C4CrCa,CAAqC2mL,EAAU8yJ,EAAYz5U,EAAGlyB,MAAOmyB,EAAGnyB,QAG5EkyB,CACT,CACO,SAAS25U,IAAwB35U,EAAIC,EAAI0mL,EAAU8yJ,GACxD,IAAIG,EAAartW,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAKmtW,IACrF,YAAWt3U,IAAPpC,QAAiCoC,IAAbpC,EAAGlyB,MAElBmyB,EAELD,EAAGmhT,WAAalhT,EAAGkhT,SACdnhT,EACEC,EAAGkhT,WAAanhT,EAAGmhT,SACrBlhT,EACEq0S,GAAUt0S,EAAGlyB,MAAOmyB,EAAGnyB,OACzBkyB,EAEA45U,EAAW55U,EAAIC,EAAI0mL,EAAU8yJ,EAExC,CChKA,SAAS,IAAapqH,GAAW,IAAIC,EACrC,WAAuC,GAAuB,oBAAZ1kH,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFxqD,QAAQ10E,UAAU03C,QAAQh2C,KAAKq9H,QAAQC,UAAUtqD,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO1wE,KAAK,OAAO,CAAO,CAAE,CADvQ,GAA6B,OAAO,WAAkC,IAAsC0O,EAAlCgxO,GAAQ,QAAgBF,GAAkB,GAAIC,EAA2B,CAAE,IAAIE,GAAY,QAAgB7jP,MAAM8E,YAAa8N,EAASqsH,QAAQC,UAAU0kH,EAAOhjP,UAAWijP,EAAY,MAASjxO,EAASgxO,EAAMviP,MAAMrB,KAAMY,WAAc,OAAO,QAA2BZ,KAAM4S,EAAS,CAAG,CAQja,ICOIs7V,IDPAC,IAA6B,SAAUC,IAChD,QAAUD,EAAeC,GACzB,IAAI1sW,EAAS,IAAaysW,GAC1B,SAASA,IACP,IAAI1tW,EACA+0U,EAAW50U,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAChF6jP,EAAW7jP,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAChFytW,EAAeztW,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,IAAmBA,UAAU,GAMlF,OALA,QAAgBZ,KAAMmuW,IACtB1tW,EAAQiB,EAAOE,KAAK5B,KAAMw1U,EAAU/wF,IAC9B+wF,SAAWA,EACjB/0U,EAAMgkP,SAAWA,EACjBhkP,EAAM4tW,aAAeA,EACd5tW,CACT,CASA,OARA,QAAa0tW,EAAe,CAAC,CAC3BttU,IAAK,QACL1+B,MAAO,WACL,IAAIoU,EAAQu+L,IAAK,QAAgBq5J,EAAcjuW,WAAY,QAASF,MAAM4B,KAAK5B,MAE/E,OADAuW,EAAM83V,aAAeruW,KAAKquW,aACnB93V,CACT,KAEK43V,CACT,CAxBwC,CAwBtCZ,KCtCK,SAASe,IAAU5oV,GACxB,MAAO,QAASA,CAClB,CACO,SAAS6oV,IAAa7oV,GAC3B,MAAO,WAAYA,CACrB,CACO,SAAS8oV,IAAY9oV,GAC1B,MAAO,SAAUA,IAAS4oV,IAAU5oV,KAAU6oV,IAAa7oV,KAAU+oV,IAAY/oV,EACnF,CACO,SAAS+oV,IAAY/oV,GAC1B,OAAOA,IAASgpV,IAAoBhpV,IAASipV,IAAkBjpV,IAASkpV,IAAqBlpV,GAC/F,CACO,SAASgpV,IAAoBhpV,GAClC,MAAO,aAAcA,CACvB,CACO,SAASipV,IAAkBjpV,GAChC,MAAO,WAAYA,CACrB,CACO,SAASkpV,IAAqBlpV,GACnC,MAAO,cAAeA,CACxB,EAEA,SAAWwoV,GACTA,EAAeA,EAAoB,IAAI,GAAK,MAC5CA,EAAeA,EAAqB,KAAI,GAAK,OAC7CA,EAAeA,EAAoB,IAAI,GAAK,MAC5CA,EAAeA,EAAuB,OAAI,GAAK,SAC/CA,EAAeA,EAAuB,OAAI,GAAK,QAChD,CAND,CAMGA,MAAmBA,IAAiB,CAAC,ICzBxC,IAAI,IAAY,CAAC,UAAW,YAAa,SACzC,SAAS,IAA2B9oV,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAU3K,SAAS21I,IAAmB3iF,GACnBA,EAAK5zE,QACL4zE,EAAK4iF,UACT5iF,EAAKlkR,MAFf,IAGE20E,GAAO,OAAyBuvM,EAAM,KAExC,OADAvvM,EAAKkjD,MAAQurM,GAAmBzuP,EAAKkjD,OAC9BljD,CACT,CACO,SAASoyR,IAAazkW,GAC3B,I7C8JkCyb,EAC9BsyM,E6C/JAwjG,IAASj7T,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,KAAmBA,UAAU,GACxEuyD,EAAOvyD,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK8jC,GAC/E,GAAI,GAAQp6B,GAAO,CACjB,IAAI0kW,EAAY1kW,EAAK0mB,KAAI,SAAU/e,GACjC,OAAO88V,IAAa98V,EAAG4pT,EAAQ1oQ,EACjC,IACA,OAAO0oQ,EAAS,IAAItoT,OAAOy7V,EAAU3lV,KAAK,MAAO,KAAO2lV,CAC1D,CAAO,OAAIh3B,IAAW1tU,GAEX6oD,EADL0oQ,EACUqd,IAAe5uU,I7CsJ3B+tN,EAAQigH,IADsBvyT,E6CnJEzb,G7CoJP,GACzByb,EAAE4uN,KACI,IAAI3xO,KAAKA,KAAKmnN,IAAI9oN,MAAM2B,MAAM,QAAmBq1N,MAEjD,GAAWr1N,MAAM,QAAmBq1N,M6CrJvCwjG,EAAS1oQ,EAAK,GAAU7oD,IAASA,CAC1C,CA0KO,SAAS2kW,IAA2B7pE,EAAO71B,GAChD,IAAI2/F,EAEF7lC,EADEC,EAAa,IAA2B98F,GAA8D,QAAxD0iI,EAAyB9pE,EAAM5lO,UAAUi/R,iBAAkD,IAA3ByQ,EAAoCA,EAAyB,CAAC,IAEhL,IACE,IAAK5lC,EAAWxrT,MAAOurT,EAASC,EAAW16S,KAAK0pB,MAAO,CACrD,IAEEmxR,EAFE0lC,EAAU9lC,EAAOlnU,MACjBunU,EAAa,IAA2B0lC,KAE5C,IACE,IAAK1lC,EAAW5rT,MAAO2rT,EAASC,EAAW96S,KAAK0pB,MAAO,CACrD,IAAInzB,EAAIskT,EAAOtnU,MACXgjB,EAAEw5N,QAAQwwH,IAAYhqV,EAAEoqP,QAC1BA,EAAQpqP,EAAEoqP,MAAM61B,EAAO+pE,EAAS5/F,GAEpC,CACF,CAAE,MAAO/nO,GACPkiS,EAAWxlU,EAAEsjC,EACf,CAAE,QACAkiS,EAAWrmU,GACb,CACF,CACF,CAAE,MAAOmkC,GACP8hS,EAAWplU,EAAEsjC,EACf,CAAE,QACA8hS,EAAWjmU,GACb,CACA,OAAOksQ,CACT,CAwBA,SAAS8/F,IAAoB/2J,GAC3B,OAAOA,EAAQtnL,KAAI,SAAUlT,GAE3B,OADIA,EAAE3d,KAAO2d,EAAE3d,GAAGU,eAAeid,EAAE3d,GAC5B2d,CACT,GACF,CCtQA,SAAS,IAAa4lO,GAAW,IAAIC,EACrC,WAAuC,GAAuB,oBAAZ1kH,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFxqD,QAAQ10E,UAAU03C,QAAQh2C,KAAKq9H,QAAQC,UAAUtqD,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO1wE,KAAK,OAAO,CAAO,CAAE,CADvQ,GAA6B,OAAO,WAAkC,IAAsC0O,EAAlCgxO,GAAQ,QAAgBF,GAAkB,GAAIC,EAA2B,CAAE,IAAIE,GAAY,QAAgB7jP,MAAM8E,YAAa8N,EAASqsH,QAAQC,UAAU0kH,EAAOhjP,UAAWijP,EAAY,MAASjxO,EAASgxO,EAAMviP,MAAMrB,KAAMY,WAAc,OAAO,QAA2BZ,KAAM4S,EAAS,CAAG,CAExa,SAAS,IAA2BwS,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAM3K,IAAIo2I,IAA4B,WACrC,SAASA,EAAa19V,EAAQ29V,IAC5B,QAAgBvvW,KAAMsvW,GACtBtvW,KAAKuvW,UAAYA,EACjBvvW,KAAKwvW,UAAY,GACjBxvW,KAAKykU,QAAU,KACX7yT,IACF5R,KAAK4R,OAASA,EAElB,CAmHA,OA/GA,QAAa09V,EAAc,CAAC,CAC1BzuU,IAAK,QACL1+B,MAAO,WACL,MAAM,IAAI8lC,MAAM,oBAClB,GACC,CACDpH,IAAK,SACL7+B,IAAK,WACH,OAAOhC,KAAKykU,OACd,EAIAviU,IAAK,SAAa0P,GAChB5R,KAAKykU,QAAU7yT,EACXA,GACFA,EAAO69V,SAASzvW,KAEpB,GACC,CACD6gC,IAAK,WACL7+B,IAAK,WACH,OAAOhC,KAAKwvW,SACd,GACC,CACD3uU,IAAK,cACL1+B,MAAO,WACL,OAAOnC,KAAKwvW,UAAU3uW,MACxB,GACC,CACDggC,IAAK,WACL1+B,MAAO,SAAkB2N,EAAOmnD,GAE1Bj3D,KAAKwvW,UAAUrqW,SAAS2K,GAC1B,IhDG0B,6CgDAhB2mB,IAARwgC,EACFj3D,KAAKwvW,UAAUpuW,OAAO61D,EAAK,EAAGnnD,GAE9B9P,KAAKwvW,UAAUjvW,KAAKuP,EAExB,GACC,CACD+wB,IAAK,cACL1+B,MAAO,SAAqButW,GAC1B,IAAIz4S,EAAMj3D,KAAKwvW,UAAUt8V,QAAQw8V,GAEjC,OADA1vW,KAAKwvW,UAAUpuW,OAAO61D,EAAK,GACpBA,CACT,GAIC,CACDp2B,IAAK,SACL1+B,MAAO,WACL,IAEEo8N,EAFEtnK,EAAMj3D,KAAKykU,QAAQp1T,YAAYrP,MAC/Bw+N,EAAY,IAA2Bx+N,KAAKwvW,WAEhD,IACE,IAAKhxI,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIxoC,EAAQyuN,EAAMp8N,MAElB2N,EAAM20T,QAAUzkU,KAAKykU,QACrBzkU,KAAKykU,QAAQgrC,SAAS3/V,EAAOmnD,IAC/B,CACF,CAAE,MAAOzvB,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACF,GAIC,CACDw9B,IAAK,mBACL1+B,MAAO,SAA0BoiC,GAC/B,IAAI3yB,EAAS2yB,EAAM3yB,OACnBA,EAAOvC,YAAYrP,MACnBA,KAAK4R,OAASA,EACd2yB,EAAM3yB,OAAS5R,IACjB,GACC,CACD6gC,IAAK,iBACL1+B,MAAO,WACL,IAIE8gO,EAJErxN,EAAS5R,KAAKykU,QACdkrC,EAAY/9V,EAAOA,OAEnBsxN,EAAa,IAA2BljO,KAAKwvW,WAEjD,IACE,IAAKtsI,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,CACzC2qL,EAAO9gO,MACbyP,OAASA,CACjB,CAEF,CAAE,MAAO41B,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACArD,KAAKwvW,UAAY,GACjB59V,EAAOvC,YAAYrP,MACnB,IAAIi3D,EAAMrlD,EAAOA,OAAOvC,YAAYuC,GAEpC5R,KAAKykU,QAAUkrC,EACfA,EAAUF,SAASzvW,KAAMi3D,GACzBrlD,EAAOA,OAAS5R,IAClB,KAEKsvW,CACT,CA7HuC,GA8H5BM,IAA0B,SAAUC,IAC7C,QAAUD,EAAYC,GACtB,IAAInuW,EAAS,IAAakuW,GAM1B,SAASA,EAAWh+V,EAAQyf,EAAQ1oB,EAAMmnW,GACxC,IAAIrvW,EASJ,OARA,QAAgBT,KAAM4vW,IACtBnvW,EAAQiB,EAAOE,KAAK5B,KAAM4R,EAAQyf,IAC5B1oB,KAAOA,EACblI,EAAMqvW,UAAYA,EAClBrvW,EAAM4yO,QAAU5yO,EAAMsxT,MAAQ1gS,EAC1B5wB,EAAMqvW,aAAervW,EAAMsxT,SAAStxT,EAAMqvW,aAC5CrvW,EAAMqvW,UAAUrvW,EAAMsxT,OAAS,GAE1BtxT,CACT,CAyDA,OAxDA,QAAamvW,EAAY,CAAC,CACxB/uU,IAAK,QACL1+B,MAAO,WACL,IAAI4tW,EAAW,IAAI/vW,KAAK8E,YAOxB,OANAirW,EAASR,UAAY,SAASh8V,OAAOvT,KAAKuvW,WAC1CQ,EAAS18H,QAAUrzO,KAAKqzO,QACxB08H,EAASh+C,MAAQ,SAASx+S,OAAOvT,KAAK+xT,OACtCg+C,EAASpnW,KAAO3I,KAAK2I,KACrBonW,EAASD,UAAY9vW,KAAK8vW,UAC1BC,EAASD,UAAUC,EAASh+C,OAAS,EAC9Bg+C,CACT,GACC,CACDlvU,IAAK,kBACL1+B,MAAO,WACL,OAAO,IAAIwkC,GACb,GACC,CACD9F,IAAK,iBACL1+B,MAAO,WACL,OAAO,IAAIwkC,GACb,GACC,CACD9F,IAAK,OACL1+B,MAAO,WAIL,YAHmBs0B,IAAfz2B,KAAKgwW,QACPhwW,KAAKgwW,MAAQ,UAAUz8V,OAAOm4T,OAEzB1rU,KAAKgwW,KACd,GAUC,CACDnvU,IAAK,YACL1+B,MAAO,WAEL,OADAnC,KAAK8vW,UAAU9vW,KAAK+xT,SACb/xT,KAAKqzO,OACd,GACC,CACDxyM,IAAK,aACL1+B,MAAO,WACL,QAASnC,KAAK8vW,UAAU9vW,KAAK+xT,MAC/B,GACC,CACDlxR,IAAK,YACL1+B,MAAO,SAAmBkvB,GACxBrxB,KAAKqzO,QAAUhiN,CACjB,KAEKu+U,CACT,CA7EqC,CA6EnCN,KClNE,IAAY,CAAC,OAAQ,OACvB,IAAa,CAAC,YAChB,SAAS,IAA2BlqV,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAClL,SAAS,IAAQv0L,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CACzf,SAAS,IAAag7O,GAAW,IAAIC,EACrC,WAAuC,GAAuB,oBAAZ1kH,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFxqD,QAAQ10E,UAAU03C,QAAQh2C,KAAKq9H,QAAQC,UAAUtqD,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO1wE,KAAK,OAAO,CAAO,CAAE,CADvQ,GAA6B,OAAO,WAAkC,IAAsC0O,EAAlCgxO,GAAQ,QAAgBF,GAAkB,GAAIC,EAA2B,CAAE,IAAIE,GAAY,QAAgB7jP,MAAM8E,YAAa8N,EAASqsH,QAAQC,UAAU0kH,EAAOhjP,UAAWijP,EAAY,MAASjxO,EAASgxO,EAAMviP,MAAMrB,KAAMY,WAAc,OAAO,QAA2BZ,KAAM4S,EAAS,CAAG,CAQxa,SAASq9V,IAA6BC,GACpC,YAAgCz5U,IAAzBy5U,EAAkBnnI,EAC3B,CACA,SAASonI,IAAStwO,GAChB,MAAO,GAAGtsH,OAAOssH,EAAO,OAC1B,CACO,IAAIuwO,IAA4B,SAAUP,IAC/C,QAAUO,EAAcP,GACxB,IAAInuW,EAAS,IAAa0uW,GAC1B,SAASA,EAAax+V,EAAQy+V,GAC5B,IAAI5vW,EAIJ,OAHA,QAAgBT,KAAMowW,IACtB3vW,EAAQiB,EAAOE,KAAK5B,KAAM4R,IACpBy+V,QAAUA,EACT5vW,CACT,CAsLA,OArLA,QAAa2vW,EAAc,CAAC,CAC1BvvU,IAAK,QACL1+B,MAAO,WACL,OAAO,IAAIiuW,EAAa,KAAMxnC,GAAU5oU,KAAKqwW,SAC/C,GACC,CACDxvU,IAAK,QACL1+B,MAKA,SAAeoiC,GAGb,IAAK,IAAI1D,KAFT7gC,KAAKqwW,QAAU,IAAc,CAAC,EAAGrwW,KAAKqwW,SAEtB9rU,EAAM8rU,QACfrwW,KAAKqwW,QAAQxvU,KAEhB7gC,KAAKqwW,QAAQxvU,GAAO0D,EAAM8rU,QAAQxvU,IAGtC,IACE09L,EADEC,EAAY,IAA2Bj6L,EAAM10B,UAEjD,IACE,IAAK2uN,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIxoC,EAAQyuN,EAAMp8N,MAClBoiC,EAAMl1B,YAAYS,GAClBA,EAAM8B,OAAS5R,IACjB,CACF,CAAE,MAAOwnC,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACAkhC,EAAMpxB,QACR,GAIC,CACD0tB,IAAK,iBACL1+B,MAAO,SAAwBy9H,GAC7B,IAEEqjG,EAFEqtI,EAAa,CAAC,EACdptI,EAAa,IAA2BpnK,GAAQ97D,KAAKqwW,UAEzD,IACE,IAAKntI,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,CACrD,IAAIi4T,GAAe,OAAettI,EAAO9gO,MAAO,GAC9C0+B,EAAM0vU,EAAa,GACnBL,EAAoBK,EAAa,GAC/BC,EAAUP,IAA6BC,GAAqBA,EAAkBnnI,GAAK,GAAGx1N,OAAO28V,EAAkBrwO,MAAO,QACrHD,EAAO99F,IAAI0uU,KACdF,EAAWzvU,GAAOqvU,EAEtB,CACF,CAAE,MAAO1oU,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACArD,KAAKqwW,QAAUC,CACjB,GACC,CACDzvU,IAAK,iBACL1+B,MAAO,WACL,OAAO,IAAIwkC,IAAI6lM,GAAKxsO,KAAKqwW,SAASr/U,KAAI,SAAU3tB,GAC9C,OAAO4sW,IAA6B5sW,GAAKA,EAAE0lO,GAAKonI,IAAS9sW,EAAEw8H,MAC7D,IACF,GACC,CACDh/F,IAAK,kBACL1+B,MAAO,WACL,OAAO,IAAIwkC,IAAI6lM,GAAKxsO,KAAKqwW,SAASr/U,KAAI,SAAU3tB,GAC9C,OAAOA,EAAEw8H,KACX,IACF,GACC,CACDh/F,IAAK,OACL1+B,MAAO,WACL,MAAO,YAAYoR,OAAO,GAAMvT,KAAKqwW,SACvC,GACC,CACDxvU,IAAK,WACL1+B,MAAO,WACL,IAEE8kO,EAFEnE,EAAa,GACboE,EAAa,IAA2BsF,GAAKxsO,KAAKqwW,UAEtD,IACE,IAAKnpI,EAAWppN,MAAOmpN,EAASC,EAAWt4M,KAAK0pB,MAAO,CACrD,IAAIj1C,EAAI4jO,EAAO9kO,MACf,GAAI8tW,IAA6B5sW,GAAI,CACnC,IAAIw8H,EAAQx8H,EAAEw8H,MACZkpG,EAAK1lO,EAAE0lO,GAEL88G,EAAqB9J,IADZ14U,EAAE43U,UAEbrsM,EAAOi3M,EAAmBj3M,KAC1B+lG,EAAMkxG,EAAmBlxG,IACzBrzN,GAAS,OAAyBukU,EAAoB,KACxD/iH,EAAWviO,KAAK,IAAc,IAAc,IAAc,IAAc,CACtEs/H,MAAOurM,GAAmBvrM,GAC1Bl3H,KAAM,YACLimI,EAAO,CACRm6E,MAAOsyH,IAAiBzsM,IACtB,CAAC,GAAI+lG,EAAM,CACbC,SAAU,OACR,CAAC,GAAItzN,GAAS,CAAC,EAAG,CACpBynN,GAAI,CAACA,EAAI,GAAGx1N,OAAOw1N,EAAI,WAE3B,MAAO,GAAI1lO,EAAG,CACZ,IAAI4jU,EAAS5jU,EAAEw8H,MACb4wO,EAAYptW,EAAE43U,SAEZoB,EAAwBC,IADTd,IAAwBi1B,aAA6C,EAASA,EAAU7hO,MAC1C6hO,EAAUhpT,MACzE6zR,EAAOe,EAAsBf,KAC7B7zR,EAAO40R,EAAsB50R,KAC/Bq7K,EAAWviO,KAAK,CACdoI,KAAM,UACN+mO,KAAM,eAAen8N,OAAO+nU,EAAM,cAAc/nU,OAAO0zT,EAAQ,QAAQ1zT,OAAOk0C,EAAM,KACpFshL,GAAIonI,IAASlpC,IAEjB,CACF,CACF,CAAE,MAAOz/R,GACP0/L,EAAWhjO,EAAEsjC,EACf,CAAE,QACA0/L,EAAW7jO,GACb,CACA,OAAOy/N,CACT,IACE,CAAC,CACHjiM,IAAK,mBACL1+B,MAAO,SAA0ByP,EAAQwzR,GACvC,IAAIirE,EAAUjrE,EAAMsrE,gBAAe,SAAUR,EAAmBt5B,GAC9D,IAAI/2M,EAAQ+2M,EAAS/2M,MACnBo7M,EAAWrE,EAASqE,SACtB,GAAIA,EAAU,CACZ,IAAIz7Q,EACJ,GAAIw7Q,IAAiBC,IAEnB,GAAI01B,IAAYvrE,IAEVi9C,IADOj9C,EAAM3uO,OACcmgR,EAASvR,gBACtC7lQ,EAAY,CACVy7Q,SAAUc,IAAkBd,GAC5Bp7M,MAAOA,SAKbrgE,EAAY,CACVupK,GAAI,IAAQ6tG,EAAU,CACpB0S,OAAO,IAETzpN,MAAOA,EACPo7M,SAAUA,GAGVz7Q,IACF0wS,EAAkB,GAAM1wS,IAAcA,EAE1C,CACA,OAAO0wS,CACT,GAAG,CAAC,GACJ,OAAIzlC,GAAQ4lC,GACH,KAEF,IAAID,EAAax+V,EAAQy+V,EAClC,GACC,CACDxvU,IAAK,oBACL1+B,MAAO,SAA2ByP,EAAQ7N,GACxC,IAAIqxB,EAAK,IAAc,CAAC,EAAGrxB,GACzBk3U,EAAW7lT,EAAG6lT,SACd12S,GAAQ,OAAyBnP,EAAI,KACnC8mT,EAAqBH,IAAkBd,GACvCz7Q,EAAY,IAAc,IAAc,CAAC,EAAGj7B,GAAQ,CAAC,EAAG,CAC1D02S,SAAUiB,IAEZ,OAAO,IAAIk0B,EAAax+V,GAAQ,OAAgB,CAAC,EAAG,GAAM4tD,GAAYA,GACxE,KAEK4wS,CACT,CAhMuC,CAgMrCd,KC1NF,SAAS,IAAQ3qU,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CACzf,SAAS,IAA2B0c,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAU3K,IAAI03I,IAAe,gBACfC,KAA4C,SAAa,SAASA,KAC3E,QAAgB7wW,KAAM6wW,GACtB,IAAK,IAAItnT,EAAO3oD,UAAUC,OAAQslD,EAAQ,IAAI1lB,MAAM8oB,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAChFrD,EAAMqD,GAAQ5oD,UAAU4oD,GAE1BxpD,KAAKmmD,MAAQA,EACbnmD,KAAK8wW,WAAa,CAAC,EACnB9wW,KAAK+wW,SAAW,CAAC,EACjB/wW,KAAKgxW,gBAAiB,CACxB,IACI,IAAU,CACZryH,QAAS,WACP,OAAO,CACT,EAEAl4L,MAAO,SAAe2+O,EAAO+pE,EAASzD,GACpC,IAAIuF,EAAkBC,EAAYC,EAC9BlvW,EAAOktW,EAAQltW,KACfiqR,EAAgD,QAAxC+kF,EAAmB9B,EAAQp7H,eAA0C,IAArBk9H,EAA8BA,EAAmB9B,EAAQp7H,QAAU,IAAI88H,IAC/Hh7G,EAAS,CAAC,EACV/sC,EAAY,CAAC,EACbxQ,EAAU,IAAI3xK,IACdw/Q,EAAa,SAAoB/nS,EAAGupC,GAGtC,IAFA,IAAI4tG,EAAmB,WAAV5tG,EAAqBvpC,EAAEq1I,QAAUr1I,EAAEyhH,MAC5CuxO,EAAK1mC,GAAQ,GAAGn3T,OAAOtR,EAAM,KAAKsR,OAAOgiJ,IACpCm9G,EAAU,EAAGp6D,EAAQx2K,IAAIsvU,GAAK1+F,IACrC0+F,EAAK1mC,GAAQ,GAAGn3T,OAAOtR,EAAM,KAAKsR,OAAOgiJ,EAAQ,KAAKhiJ,OAAOm/P,IAG/D,OADAp6D,EAAQ9mM,IAAI4/V,IACL,OAAgB,CAAC,EAAGzpT,EAAOypT,EACpC,EACIzoW,EAAOwmW,EAAQxmW,KACfhH,EAAMyjS,EAAM54L,OAAOiyP,UAAU91V,GAC7B2B,OAAwBmsB,IAAjBi1U,EAAOvpW,MAAsB,GAAMupW,EAAOvpW,OAAS,KAG1D67D,EAAQ7P,GAASu9S,EAAOzqL,QAAUyqL,EAAOzqL,OAAS,CAAC,EACrDrhD,EAAS5hE,EAAM4hE,OACf87N,EAAY19R,EAAM09R,UACpB,IAAK97N,IAAW87N,GAAapxV,EAAM,CACjC,IACEi0N,EADEC,EAAY,IAA2Bl0N,GAE3C,IACE,IAAKk0N,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAI+4T,EAAU9yI,EAAMp8N,MAEpB,GAAKgsD,GAASkjT,GAAd,CAGA,IACEpuI,EADEC,EAAa,IAA2B,GAAKmuI,IAEjD,IACE,IAAKnuI,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,CACrD,IAQQg5T,EARJzwU,EAAMoiM,EAAO9gO,MACjB,GAAI6sU,IAAuBnuS,IACxB66T,IAAcA,EAAY,KAAKn7V,KAAKsgC,QAErC,GAAa,aAATl4B,EACF,IlD5ByB,8FkD6BzB+yV,EAAY/5V,EAAI+5V,eAGQ,QAAtB4V,EAAU1xO,SAAgC,IAAZ0xO,EAAqBA,EAAU1xO,EAAS,IAAIr/H,KAAKsgC,EAGvF,CACF,CAAE,MAAO2G,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CAtBA,CAuBF,CACF,CAAE,MAAOmkC,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACF,CAIKu8H,GAAW87N,IACdA,EAAY/5V,EAAI+5V,UACZ,WAAY/5V,IACdi+H,EAASj+H,EAAIi+H,SAGjB,IACEqnG,EADEC,EAAa,IAAwD,QAA5BgqI,EAAaxV,SAAsC,IAAfwV,EAAwBA,EAAa,IAEtH,IACE,IAAKhqI,EAAWppN,MAAOmpN,EAASC,EAAWt4M,KAAK0pB,MAAO,CACrD,IAAIm7G,EAAUwzE,EAAO9kO,MACjBy0U,EAAWxxC,EAAMwxC,SAASnjL,GAC9B,GAAImjL,EAAU,CACZ,IAAI/2M,EAAQ+2M,EAAS/2M,MACrB,GAAI+2M,EAASpa,UAAW,CACtB,IAAS,IAAmC/oK,EAASmjL,EAASpa,YAC9D,QACF,CAAO,IAAK38L,EAAO,CACjB,IAAS,IAA+C4zB,IACxD,QACF,CACA,GAAImjL,EAASqE,WAAaD,IAAiBpE,EAASqE,UAAW,CAC7Dp7M,EAAQulK,EAAMmsE,QAAQ99M,GAKtB,IAAIj0F,EAAY,CACdy7Q,SAAUrE,EAASqE,SACnBlyG,GAAIlpG,EACJA,MAAO+2M,EAAS/2M,OAElBipF,EAAU,GAAKtpJ,IAAcA,CAC/B,CAGA,IAAKq2L,EAAOh2H,GAAQ,CAIlB,IACIzhH,EAAI,CACNyhH,MAAOA,EACP4zB,QAASA,EACT9qJ,KAJqB,aAATA,GAAuBgoU,IAAel9K,IAAYotL,IAAoBz7C,EAAMosE,kBAAkB/9M,GAASzxJ,IAAI,SAAW,IAAM40U,EAASzqH,IAAM,OAAS,IAKhKnkN,MAAOkkR,EAAK/lO,MAAMtlD,QAEpBud,EAAEk6L,QAAU,IAAc,IAAc,CAAC,EAAG6tG,EAAW/nS,EAAG,SAAU+nS,EAAW/nS,EAAG,WAClF8tQ,EAAK/lO,MAAM5lD,KAAKs1P,EAAOh2H,GAASzhH,GAChC8tQ,EAAK6kF,SAASlxO,GAASg2H,EAAOh2H,GAC9BqsJ,EAAK8kF,eAAiB9kF,EAAK8kF,gBAAkBnxO,IAAU27N,IACnDltB,IAAqB76K,IACvBr1I,EAAEqzV,WAAah+M,EACfr1I,EAAEq1I,QAAU46K,IAA8B56K,GAC1Cy4H,EAAK4kF,WAAW1yV,EAAEq1I,SAAWoiG,EAAOh2H,IAEpCqsJ,EAAK4kF,WAAWr9M,GAAWoiG,EAAOh2H,EAEtC,CACF,MACE,IAAS,IAA+C4zB,GAE5D,CACF,CAAE,MAAOjsH,GACP0/L,EAAWhjO,EAAEsjC,EACf,CAAE,QACA0/L,EAAW7jO,GACb,CACA,IACE8jO,EADEC,EAAa,IAAmD,QAAvB+pI,EAAWvxO,SAAiC,IAAbuxO,EAAsBA,EAAW,IAE7G,IACE,IAAK/pI,EAAWtpN,MAAOqpN,EAASC,EAAWx4M,KAAK0pB,MAAO,CACrD,IAAI2uR,EAAS9/F,EAAOhlO,MACpB,IAAI+pR,EAAK6kF,SAAS9pC,GAAlB,CACA,IAAI1kH,EAAK,CACP55M,KAAM,IACNk3H,MAAOonM,EACPj/T,MAAOkkR,EAAK/lO,MAAMtlD,QAEpB0hN,EAAGjK,QAAU,IAAc,CAAC,EAAG6tG,EAAW5jG,EAAI,SAC9C2pE,EAAK/lO,MAAM5lD,KAAKgiN,GAChB2pE,EAAK6kF,SAAS9pC,GAAU1kH,EACxB2pE,EAAK8kF,eAAiB9kF,EAAK8kF,gBAAkB/pC,IAAWu0B,GATrB,CAUrC,CACF,CAAE,MAAOh0T,GACP4/L,EAAWljO,EAAEsjC,EACf,CAAE,QACA4/L,EAAW/jO,GACb,CACIiH,IACF6kW,EAAQ7kW,KAAOA,EAAK0mB,KAAI,SAAU/e,GAGhC,OAAOi6Q,EAAK/lO,MAAMn1B,KAAI,SAAU5S,GAC9B,OAAO+vC,GAASl8C,QAAsCwkB,IAAjCxkB,EAAEmM,EAAEqzV,YAAcrzV,EAAEq1I,SAAyBxhJ,EAAEmM,EAAEqzV,YAAcrzV,EAAEq1I,SAAWxhJ,EAAEmM,EAAEyhH,OAAS5tH,CAChH,GACF,KAEGw4T,GAAQ3hH,KACXojE,EAAK+uD,SAAW,IAAIm1B,IAAa,KAAMtnJ,GAE3C,EACAxQ,QAAS,SAAiB8sF,EAAO+pE,EAASuC,GACxC,IAAIzvW,EAAOktW,EAAQltW,KAAO2uW,IACtBt8C,EAAYo9C,EAAWnhW,QAAO,SAAUuN,GAC1C,OAAOA,EAAE7b,OAASA,CACpB,IACA,OAAOqyT,EAAUzzT,OAAS,GAAKsuW,EAAQp7H,QAAQi9H,eAAiBU,EAAaA,EAAWn+V,OAAO,CAC7FtR,KAAMA,EACNE,MAAOgtW,EAAQp7H,QAAQ5tL,MAAMn1B,IAAI69U,MAErC,GAEF,QCpNA,SAAS,IAA2BzpV,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAQlL,IAAIy4I,IAAgB,CAClBhzH,QAAS,SAAiBwwH,GACxB,MAAwB,aAAjBA,EAAQxmW,MAA2C,WAApBwmW,EAAQ9nU,SAAwB8nU,EAAQ/rW,MAAyB,WAAjB+rW,EAAQ/rW,IAChG,EACAqjD,MAAO,SAAe2+O,EAAO+pE,GAC3B,IAEE5wI,EAFEwgC,EAAQowG,EAAQjlH,OAAS,GACzB1rB,EAAY,IAA2B2wI,EAAQp7H,QAAQ5tL,OAE3D,IACE,IAAKq4K,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAI4zO,EAAO3tD,EAAMp8N,MACbsxJ,EAAUy4H,EAAKz4H,QACnB,GAAKk9K,IAAel9K,GAApB,CAGA,IAAI36I,EAAQssR,EAAMosE,kBAAkB/9M,GAChC8qK,EAAYzlT,EAAQA,EAAM9W,IAAI,aAAUy0B,EACvC3d,GAAU+nU,IAAoBtiB,IAInCzlT,EAAM5W,IAAI,kBAAmB,CAC3By7I,MAAOwxN,EAAQltW,KACf49H,MAAOqsJ,EAAKrsJ,QACX,GACHk/H,EAAMx+P,KAAK2rR,IAPT,InDW6B,4FmDf/B,CAYF,CACF,CAAE,MAAO1kP,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACF,EACAuuW,gBAAiB,SAAyBxsE,EAAO+pE,EAAS72J,GACxD,IAAIymD,EAAQowG,EAAQjlH,OAAO35O,QAAO,SAAU27Q,GAC1C,OAEc,IAFP5zE,EAAQ/nM,QAAO,SAAUuN,GAC9B,OAAOA,EAAE7b,OAASiqR,EAAK5zE,QAAQ5yL,IACjC,IAAG7kB,MACL,IAGA,IAAKukS,EAAMxzR,QAAUigW,IAAgBzsE,IAA2B,IAAjBrmC,EAAMl+P,OACnD,OAAOy3M,EAQT,IAAIw5J,EAAUx5J,EAAQ/nM,QAAO,SAAUuN,GACrC,OAAOA,EAAE7b,OAASktW,EAAQltW,IAC5B,IAAG,GACCuD,EAASssW,EAAQtsW,OACrB,GAAIA,EAAO0N,QAAQ6+V,MAAyB,EAC1CD,EAAQtsW,OAAS,IAAI+N,OAAOwrP,EAAM/tO,KAAI,SAAUk7P,GAC9C,MAAO,GAAG34Q,OAAO,GAAY63T,GAAmBl/C,EAAKrsJ,QAAS,MAAMtsH,OAAO24Q,EAAK5zE,QAAQ5yL,KAC1F,IAAG2D,KAAK,MAAO,SACV,CACL,IACE45M,EADEC,EAAa,IAA2B67B,GAE5C,IACE,IAAK77B,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,CACrD,IAAI4zO,EAAOjpD,EAAO9gO,MACdqvV,EAAU,GAAGj+U,OAAO,GAAY63T,GAAmBl/C,EAAKrsJ,QAAS,MAAMtsH,OAAO24Q,EAAK5zE,QAAQ5yL,MAC1FlgB,EAAOL,SAASqsV,KACnBhsV,EAAS,GAAG+N,OAAO/N,EAAOy9B,UAAU,EAAGz9B,EAAO3E,OAAS,GAAI,MAAM0S,OAAOi+U,EAAS,KAErF,CACF,CAAE,MAAOhqT,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACAyuW,EAAQtsW,OAASA,CACnB,CACA,OAAO8yM,EAAQ/kM,OAAOwrP,EAAM/tO,KAAI,SAAUk7P,GACxC,MAAO,CACLjqR,KAAMiqR,EAAK5zE,QAAQ5yL,KAEvB,IACF,EACA4yL,QAAS,SAAiB8sF,EAAO+pE,EAASx8F,GAExC,GAAIyyB,EAAMxzR,SAAWigW,IAAgBzsE,GAAQ,CAC3C,IACEn+D,EADEC,EAAa,IAA2BioI,EAAQjlH,QAEpD,IACE,IAAIzmG,EAAQ,WACV,IAAIyoI,EAAOjlD,EAAO9kO,MACdqnT,EAAS72C,EAASpiQ,QAAO,SAAUuN,GACrC,OAAOA,EAAE7b,OAASiqR,EAAK5zE,QAAQ5yL,IACjC,IAAG,GACH8jS,EAAOjpT,KAAO,eACPipT,EAAOrnT,aACPqnT,EAAOhkT,MAChB,EACA,IAAK0hO,EAAWppN,MAAOmpN,EAASC,EAAWt4M,KAAK0pB,MAC9CmrG,GAEJ,CAAE,MAAOj8G,GACP0/L,EAAWhjO,EAAEsjC,EACf,CAAE,QACA0/L,EAAW7jO,GACb,CACF,CACA,OAAOsvQ,CACT,GAEF,QACO,SAAS,IAAOyyB,EAAO3xI,GAC5B,IAAI36I,EAAQ,GAAYssR,EAAMgc,UAAU3tJ,IACxC,MAAO,UAAUlgJ,OAAOuF,EAAO,IACjC,CACA,SAAS+4V,IAAgBzsE,GACvB,IAAI4sE,EACJ,OAAO5sE,EAAMxzR,QAAUqgW,IAAa7sE,EAAMxzR,UAA8D,QAAjDogW,GAAwB5sE,EAAMxzR,OAAOA,cAA6C,IAAzBogW,EAAkCA,EAAuBH,IAAgBzsE,EAAMxzR,OAAOA,QACxM,CC5HA,IAAI,IAAY,CAAC,OAAQ,cAAe,UACxC,SAAS,IAA2BwT,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAClL,SAAS,IAAQv0L,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAalf,IAAIwpW,IAAQ,SACRC,IAAgB,iBAChBC,IAAgB,yBACvBC,IAAO,QAEP,IAAW,CACb1zH,QAAS,SAAiBwwH,GACxB,MAAwB,aAAjBA,EAAQxmW,IACjB,EACA89C,MAAO,SAAe2+O,EAAO+pE,EAASzD,GACpC,IAAIvqW,EACJ,GAAIikS,EAAMktE,cAAe,CACvB,IAAIlsU,EAAM,IAAc,CAAC,EAAG+nB,GAASu9S,EAAOzqL,QAAUyqL,EAAOzqL,OAAS,CAAC,GACvE76I,EAAIw5F,OAAS,CAAC47N,KACTp1T,EAAIs1T,YAEPt1T,EAAIs1T,UAAYgQ,EAAOvpW,MAAQ,GAAKupW,EAAOvpW,OAAS,CAACuqU,IAAWD,MAElEi/B,EAAOzqL,OAAS,IAAc,CAC5Bt4K,KAAM,YACLy9B,EACL,CACA,GAAI+oU,EAAQ72V,YAAc,IAAOqmO,QAAQwwH,GAAU,CACjD,IAEE5wI,EAFEg0I,EAAa,2CAA2Ch/V,OAAO,GAAY47V,EAAQltW,KAAOiwW,MAC1F1zI,EAAY,IAA2B2wI,EAAQruW,QAEnD,IACE,IAAK09N,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIk6T,EACApyW,EAAMm+N,EAAMp8N,MAChB,GAAK/B,EAAIu9N,QAAT,CAIA,IAAInG,EAAU,GAAqD,QAA9Cg7I,GAAarxW,EAAKf,EAAIu9N,QAAQ,IAAIptN,cAAkC,IAAdiiW,EAAuBA,EAAYrxW,EAAGoP,OAAS,IACtHinN,EAAQtkN,QAAQq/V,GAAc,GAChC/6I,EAAQj3N,KAAKgyW,EAHf,MAFE,IAAK,GAAGh/V,OAAOnT,EAAK,4DAOxB,CACF,CAAE,MAAOonC,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACF,CACF,EACAi1M,QAAS,SAAiB8sF,EAAO+pE,EAASx8F,GACxC,IAAI1wQ,EAAOktW,EAAQltW,KACfwwW,EAAUxwW,EAAOywW,IACjBr9T,EAAWm3L,GAAK2iI,EAAQp7H,QAAQ+8H,YAAYvgW,QAAO,SAAU6N,GAC/D,OAAOA,EAAEq1I,UAAY,IAAKr1I,EAAEq1I,UAAY,EAC1C,IACInpJ,EAAO6kW,EAAQ7kW,KAAO6kW,EAAQ7kW,KAAK,GAAK,KAI5C,GAHAqoQ,EAASpyQ,KAAKc,MAAMsxQ,GAAU,QAAmBt9N,EAAS1jB,QAAO,SAAUlb,EAAKy1Q,GAC9E,OAAOz1Q,EAAIlD,OAkPjB,SAAwB6xR,EAAO+pE,EAASjjF,EAAM5hR,GAC5C,IAAIqoW,GAAkBvtE,EAAMktE,cACxB7+M,EAAUy4H,EAAKz4H,QACfm/M,EAAQ1mF,EAAK5zE,QAAQu6J,OACrBzxD,EAAY,GAAYuxD,EAAiBvtE,EAAMgc,UAAU3tJ,GAAW2xI,EAAM0tE,kBAC1EC,EAAS,SAAgBrxU,GAC3B,MAAO,SAASnuB,OAAO6tS,EAAW,MAAM7tS,OAAOmuB,EAAK,IACtD,EACI4C,EAAO8gQ,EAAM4tE,iBAAiBv/M,IAAY,GAAI,QAAU,UAAU+1J,OAClEypD,EAAQ,GAAG1/V,OAAOkgJ,EAAS,UAC3By/M,EAAM/D,EAAQruW,OAAO6wB,QAAO,SAAUyU,EAAKhmC,GAC7C,MAAO,GAAGmT,QAAO,QAAmB6yB,GAAM,CAAC,CACzCtlC,OAAQV,EAAIu9N,QAAQ,GACpBn4N,OAAQ,IAAI+N,OAAO0/V,EAAO,MAAM1/V,OAAO0/V,EAAO,MAC7C,CACDnyW,OAAQV,EACRoF,OAAQ,IAAI+N,OAAOq/V,EAAO,eAAer/V,OAAO0/V,EAAO,SAAS1/V,OAAO+wB,EAAM,QAGjF,GAAG,IACH,GAAIquU,EAAgB,CAClB,IAAI5lI,EAAQm/C,EAAK5zE,QAAQ5yL,KACrBytV,EAAY,IAAOx0H,QAAQwwH,GAC3Br2V,EAAQssR,EAAMosE,kBAAkB/9M,GAChC8qK,EAAYzlT,EAAQA,EAAM9W,IAAI,aAAUy0B,EACxC28U,EAAQ9oW,EAAO,CACjBA,KAAMykW,IAAazkW,GAAM,EAAMyoW,IAC7B,CACF5wW,MAAO,IAWT,OANA+wW,EAAI3yW,KAAK,CACPO,OAAQ,CACN0oT,OAAQ2lD,EAAQltW,KAAOkwW,KAEzB3sW,OAAQq7U,IAAoBtiB,GAAa,IAAIhrT,OAAOw/V,EAAO,GAAGx/V,OAAOw5N,EAAO,QAAS,MAAMx5N,OAAOw/V,EAAO,GAAGx/V,OAAOw5N,EAAO,QAAS,KAAO,WAErIomI,EAAY,CAAC,CAClBlxW,KAAM8qO,EACN5sO,GAAI,KACD,CAAC,IAAc,IAAc,CAChC8B,KAAM2wW,GACLQ,GAAQ,CAAC,EAAG,CACbjzW,GAAI+yW,IACF,IAAc,IAAc,CAC9BjxW,KAAM8qO,GACLziO,EAAO,CACRA,KAAMykW,IAAazkW,IACjB,CAAC,GAAI,CAAC,EAAG,CACXnK,GAAI,CAAC,CACHW,OAAQ,CACN0oT,OAAQopD,GAEVptW,OAAQ,GAAG+N,OAAOq/V,EAAO,YAAYr/V,OAAOq/V,EAAO,wBAAwBr/V,OAAO6tS,EAAW,MAAM7tS,OAAOq/V,EAAO,SAGvH,CACE,IAAIS,EAAU5/M,IAAY,GAAI,EAAI,EAC9B6/M,EAASnE,EAAQltW,KAAOowW,IACxBkB,EAASjpW,EAAO,CAClBA,KAAM,IAAIiJ,OAAO+/V,EAAQ,QAAQ//V,OAAO8/V,EAAS,OAAO9/V,OAAO+/V,EAAQ,QAAQ//V,OAAO8/V,EAAS,OAC7F,CACFlxW,MAAO,IAET,MAAO,CAAC,IAAc,IAAc,CAClCF,KAAM2wW,GACLW,GAAS,CAAC,EAAG,CACdpzW,GAAI+yW,IAGV,CA1TwBM,CAAepuE,EAAO+pE,EAASjjF,EAAM5hR,GAAQA,EAAK4hR,EAAKlkR,QAC3E,GAAG,MACEo9R,EAAMktE,cAiDJ,CACL,IAAIxxF,EAAa,GAAYskB,EAAM0tE,kBAC/BW,EAAWruE,EAAM0tE,iBAvGd,UAwGHY,EAAwBvE,EAAQp7H,QAAQ+8H,WAC1C7lW,EAAIyoW,EAAsBzoW,EAC1BC,EAAIwoW,EAAsBxoW,EACxByoW,EAAS1oW,GAAKA,EAAEqtM,QAAQu6J,OACxBe,EAAS1oW,GAAKA,EAAEotM,QAAQu6J,OACxBgB,EAAQ5oW,EAAIX,GAAQA,EAAKW,EAAEjD,OAAS,GAAGuL,OAAOkgW,EAAU,OACxDK,EAAQ5oW,EAAIZ,GAAQA,EAAKY,EAAElD,OAAS,GAAGuL,OAAOkgW,EAAU,OACxDM,EAAS,SAAgBjrP,GAC3B,OAAOs8K,EAAM4tE,iBAAiBlqP,GAAQ0gM,MACxC,EACI16S,EAAO,IAAM,IAAIyE,OAAOogW,EAASA,EAAS,MAAQ,IAAK,MAAMpgW,OAAOqgW,EAASA,EAAS,MAAQ,IAAK,MAAQ,IAAIrgW,OAAOogW,EAASA,EAAS,MAAQI,EAAO,SAAU,MAAQ,GAAGxgW,OAAOqgW,EAASA,EAAS,MAAQG,EAAO,UAAW,KAAO,IAC1O,GAAIzpW,IACFqoQ,EAASh9P,QAAQ,CACf1T,KAAMA,EAAOowW,IACb/nW,KAAM,UAAUiJ,OAAOutQ,EAAY,OAAOvtQ,OAAOtI,EAAI4oW,EAAM,GAAKA,EAAO,MAAMtgW,OAAOrI,EAAI4oW,EAAM,GAAKA,EAAO,QAAU,SAASvgW,OAAOutQ,EAAY,OAAOvtQ,OAAOtI,EAAI4oW,EAAM,GAAKA,EAAO,MAAMtgW,OAAOrI,EAAI4oW,EAAM,GAAKA,EAAO,UAEpN7oW,IAAMC,GAAG,CAEZ,IAAI8oW,EAAcrhG,EAASn/P,MAAK,SAAUsK,GACxC,OAAOA,EAAE7b,OAASwxW,CACpB,IACKO,GACHrhG,EAASh9P,QAAQ,CACf1T,KAAMwxW,EACNjuW,OAAQ,UAAU+N,OAAOutQ,EAAY,OAAOvtQ,OAAOwgW,EAAO,SAAU,QAAQxgW,OAAOwgW,EAAO,UAAW,SAG3G,CAEF,IAAI7mV,EAAY,aAAa3Z,OAAOzE,EAAM,iBAAiByE,OAAO,GAAY6xR,EAAM6uE,QAAQ,UAAW,iBACnGzxU,EAAO,UAAUjvB,OAAOokU,IAASvyC,GAAQ,KACzC/9R,EAAU,qBAAqBkM,OAAO2Z,EAAW,MAAM3Z,OAAOivB,EAAM,KACpE0xU,EAAgB7+T,EAASrkB,KAAI,SAAUk7P,GACzC,OAAOA,EAAK5zE,QAAQu6J,MACtB,IACA,OAAOlgG,EAASp/P,OAAO,CACrBtR,KAAMwwW,EACNtyW,GAAI,CAAC,CACHW,OAAQ,GAAGyS,QAAO,QAAmB2gW,EAAcrzW,OAAS,CAAC,CAC3D2oT,OAAQ0qD,EAAc7qV,KAAK,UACxB,KAAK,QAAmB/e,EAAO,CAAC,CACnCk/S,OAAQ4oD,MACL,KACL5sW,OAAQ6B,KAGd,CA/FE,IAAK,IAAOs3O,QAAQwwH,GAAU,CAC5B,IAAIgF,EAAYlyW,EAAOkwW,IACnBiC,EAAgB/+T,EAASrkB,KAAI,SAAUk7P,GACzC,IAAIz4H,EAAUy4H,EAAKz4H,QACf4gN,EAAgBnoF,EAAK5zE,QACvBy0B,EAAQsnI,EAAc3uV,KACtBktV,EAAQyB,EAAcxB,OACpBzxD,EAAY,GAAYhc,EAAMgc,UAAU3tJ,IAExCliE,EAAQsvP,IADIz7C,EAAMosE,kBAAkB/9M,GAASzxJ,IAAI,SACR,IAAM,GACnD,MAAO,aAAauR,OAAOw5N,EAAO,SAAW,IAAIx5N,OAAOg+E,EAAO,WAAWh+E,OAAO6tS,EAAW,MAAM7tS,OAAOq/V,EAAO,aAAar/V,OAAOg+E,GAAOh+E,OAAOw5N,EAAO,WAAa,GAAGx5N,OAAOg+E,EAAO,WAAWh+E,OAAO6tS,EAAW,MAAM7tS,OAAOq/V,EAAO,aAAar/V,OAAOg+E,GAAOh+E,OAAOw5N,EAAO,QACnR,IACIqnI,EAAcvzW,QAChB8xQ,EAASpyQ,KAAK,CACZ0B,KAAMkyW,EACNhyW,MAAO,CAAC,EACRhC,GAAI,CAAC,CACHW,OAAQu0C,EAASrkB,KAAI,SAAUk7P,GAC7B,MAAO,CACLpzQ,MAAOssR,EAAMgc,UAAUl1B,EAAKz4H,SAEhC,IACAjuJ,OAAQ4uW,EAAc/qV,KAAK,QAAU,MAAM9V,OAAO4gW,EAAW,YAIrE,CAIA,IAAIG,EAAcj/T,EAASrkB,KAAI,SAAUk7P,GACvC,OAAOA,EAAK5zE,QAAQ5yL,IACtB,IACIlgB,EAAS,SAAS+N,OAAOokU,IAASvyC,GAAQ,cAAc7xR,OAAOtR,EAAO2uW,IAAc,YACxF,OAAOj+F,EAASp/P,OAAO,IAAc,IAAc,CACjDtR,KAAMwwW,GACLnoW,EAAO,CACRA,KAAM,IAAIiJ,OAAO/N,EAAQ,MAAM+N,OAAOw7V,IAAazkW,GAAO,MACxD,CAAC,GAAIgqW,EAAYzzW,OAAS,CAC5BV,GAAI,CAAC,CACHW,OAAQ,CAAC,CACP0oT,OAAQ8qD,EAAYjrV,KAAK,UAE3B7jB,OAAQ,GAAG+N,OAAO+gW,EAAYjrV,KAAK,QAAS,QAAQ9V,OAAO/N,EAAQ,OAAO+N,OAAO+gW,EAAa,gBAE9F,CAAC,GAmDT,EACA1C,gBAAiB,SAAyBxsE,EAAO+pE,EAAS72J,GACxD,GAAIq4J,IAAYvrE,IAAUA,EAAMktE,eAAiBnD,EAAQ7kW,KAAM,CAK7D,IAAIiqW,EAAUj8J,EAAQ/nM,QAAO,SAAUuN,GACrC,OAAOA,EAAE7b,OAASmwW,GACpB,IACKmC,EAAQ1zW,QACXy3M,EAAQ3iM,QAAQ,CACd1T,KAAMmwW,IACNjwW,MAAO,KACPhC,GAAI,CAAC,CACHW,OAAQ,WACR0E,OAAQ,GAAG+N,OAAO6+V,IAAe,qBAAqB7+V,OAAO6+V,QAIrE,CACA,OAAO95J,CACT,EACAi3D,MAAO,SAAe61B,EAAO+pE,EAASqF,GACpC,IAAIvyW,EAAOktW,EAAQltW,KACfwyW,EAAyBtF,EAAQp7H,QAAQ+8H,WAC3C7lW,EAAIwpW,EAAuBxpW,EAC3BC,EAAIupW,EAAuBvpW,EACzByoW,EAAS1oW,aAA6B,EAASA,EAAEqtM,QAAQu6J,OACzDe,EAAS1oW,aAA6B,EAASA,EAAEotM,QAAQu6J,OACzD3qO,EAAQ,QAAQ30H,OAAO,GAAY47V,EAAQltW,KAAOyyW,KAAQ,KAG9D,GAAI,IAAO/1H,QAAQwwH,KAAalkW,IAAMC,EACpC,OAAOspW,EAET,IAAIhvW,EAAS,CACXyF,OAASwrB,IAANxrB,EAAkB,CACnBu+S,OAAQ,GAAGj2S,OAAOogW,EAAQ,QACxB,CACFxxW,MAAO,GAET+I,OAASurB,IAANvrB,EAAkB,CACnBs+S,OAAQ,GAAGj2S,OAAOqgW,EAAQ,QACxB,CACFzxW,MAAO,GAETmgB,QAAUmU,IAANxrB,EAAkB,CACpBu+S,OAAQ,GAAGj2S,OAAOogW,EAAQ,QACxB,CACF9zO,MAAO,CACLnuH,MAAO,UAGX6Q,QAAUkU,IAANvrB,EAAkB,CACpBs+S,OAAQ,GAAGj2S,OAAOqgW,EAAQ,QACxB,CACF/zO,MAAO,CACLnuH,MAAO,YAQb,GAAwB,WAApBy9V,EAAQ9nU,QAAsB,CAChC,IACE47L,EADEC,EAAa,IAA2B,GAAK19N,IAEjD,IACE,IAAK09N,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,CACrD,IAAIzX,EAAMoiM,EAAO9gO,MACjBqD,EAAOq7B,GAAO,CAAC,IAAc,CAC3Bv7B,KAAM,GAAGiO,OAAO20H,EAAO,eAAe30H,OAAO20H,EAAO,iBAAiB30H,OAAOokU,IAASvyC,KACpF5/R,EAAOq7B,IAAO,CACf1+B,MAAO,GAEX,CACF,CAAE,MAAOqlC,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACF,CAIA,IAAIsxW,EAAgBxF,EAAQ14S,KAC1B7a,EAAO+4T,EAAc/4T,KACrBioC,EAAc8wR,EAAc9wR,YAC5B93E,EAAS4oW,EAAc5oW,OACvBoV,GAAS,OAAyBwzV,EAAe,KAC/CC,EAAW,GAAKzzV,GAAQwQ,QAAO,SAAUyU,EAAK1/B,GAShD,OARA0/B,EAAI1/B,GAAK,CAAC,CACRpB,KAAM,MAAOmxB,IAANxrB,GAAmB,GAAGsI,OAAOogW,EAAQ,YAAYpgW,OAAOogW,EAAQ,YAAcl9U,IAANvrB,GAAmB,GAAGqI,OAAOqgW,EAAQ,YAAYrgW,OAAOqgW,EAAQ,QAAQrjW,QAAO,SAAUxM,GACtK,OAAOA,CACT,IAAGslB,KAAK,QACRlnB,MAAOgf,EAAOza,IACb,CACDvE,MAAO,OAEFikC,CACT,GAAG,CAAC,GACJ,MAAO,CAAC,CACNnkC,KAAM,GAAGsR,OAAOtR,EAAOiwW,IAAO,OAC9BvpW,KAAM,OACNsM,MAAM,EACN0lN,OAAQ,CACN6+C,MAAO,CACL59N,KAAM,CACJz5C,MAAOy5C,GAETioC,YAAa,CACX1hF,MAAO0hF,IAGXr+E,OAAQA,KAET+N,QAAO,QAAmBihW,GAAS,CAAC,CACrCvyW,KAAMA,EAAOiwW,IACbvpW,KAAM,OACNsM,MAAM,EACN0lN,OAAQ,CACN6+C,MAAO,IAAc,IAAc,CAAC,EAAGztQ,EAAS,CAC9CA,OAAQ,CACN5J,MAAO4J,IAEP,CAAC,GAAI,CAAC,EAAG,CACX6vC,KAAM,CACJz5C,MAAO,iBAGXqD,OAAQ,IAAc,IAAc,CAAC,EAAGA,GAASovW,MAGvD,GAEF,QCnTA,IAAI,IAAQ,CACVj2H,QAAS,SAAiBwwH,GACxB,MAAwB,UAAjBA,EAAQxmW,IACjB,EACA2vM,QAAS,SAAiB8sF,EAAO+pE,EAASx8F,GACxC,IAAIkiG,EACA5yW,EAAOktW,EAAQltW,KACf6yW,EAAW7yW,EAAO2uW,IAClB78H,EAAUo7H,EAAQp7H,QAClB5b,EAAQ,2CAQR48I,EAAUvoI,GAA6D,QAAvDqoI,EAAwBzvE,EAAM5lO,UAAUi/R,iBAAiD,IAA1BoW,EAAmCA,EAAwB,CAAC,GAAGljV,QAAO,SAAUq1R,EAAKguD,GACtK,MAAqB,aAAdA,EAAKrsW,KAAsBq+S,EAAIzzS,OAAOyhW,EAAK/yW,KAAOiwW,KAASlrD,CACpE,GAAG,IAAIh2R,KAAI,SAAU/N,GACnB,MAAO,8BAA8B1P,OAAO0P,EAAG,SACjD,IAAGoG,KAAK,QACJ/jB,EAAO,uFAAuFiO,OAAOwhW,EAAU,OAAOxhW,OAAOwhW,GAAW,IACxIvvW,EAAS,SAAS+N,OAAOokU,IAASvyC,GAAQ,MAC9C,GAAI+pE,EAAQp7H,QAAQi9H,eAClBxrW,GAAU,GAAG+N,OAAOioV,IAAc,MAAMjoV,OAAO4kN,EAAO,KAAK5kN,OAAO,GAAYioV,KAAe,SACxF,CACL,IAAIh7T,EAASuzM,EAAQ5tL,MAAMn1B,KAAI,SAAU5S,GACvC,IAAIw4T,EAAWxxC,EAAMwxC,SAASx4T,EAAEq1I,SAEhC,OAAOmjL,SAA4CA,EAASzqH,IAAM,IAAI54M,OAAO4kN,EAAO,KAAK5kN,OAAO,GAAY6xR,EAAMmsE,QAAQnzV,EAAEq1I,QAAS,CAAC,IAAK,OAAS,GAAGlgJ,OAAO4kN,EAAO,KAAK5kN,OAAO,GAAY6xR,EAAMmsE,QAAQnzV,EAAEq1I,QAAS,CACpNkxL,UAAW,SACR,MAAQ,GAAGpxU,OAAO4kN,EAAO,KAAK5kN,OAAO,GAAY6K,EAAEyhH,OAAQ,IAClE,IAAGx2G,KAAK,MACR7jB,GAAU,WAAW+N,OAAOuhW,EAAU,eAAevhW,OAAOitB,EAAQ,IACtE,CACA,IAAI1/B,EAASquW,EAAQruW,OACrB,OAAO6xQ,EAASp/P,OAAO,CAAC,CACtBtR,KAAMA,EAAOywW,IACbvyW,GAAIW,EAAS,CAAC,CACZA,OAAQA,EACR0E,OAAQ,GAAG+N,OAAOjO,EAAM,QAAQiO,OAAO/N,EAAQ,YAC/C21N,OAAO,IACJ,KAET,GAEF,QCnDA,SAAS,IAAQx2L,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CASlf,SAASusW,IAAc7vE,EAAOi+C,EAAYlP,EAAW+gC,GAC1D,IAAIjzU,EAAYqmT,IAAiBjF,IAAeA,EAAWphT,UACvDk4R,EAAW+6C,EAAM7xB,GACrB,GAAIphT,EAAW,CACb,IACIkzU,EADa,GAAMlzU,GACOjR,KAAI,SAAU7L,GAC1C,IAAIiwV,EAAoBF,EAAM/vV,GAC9B,G1CKC,SAAgCA,GACrC,OAAOA,EAAS,KAClB,C0CPUkwV,CAAuBlwV,GAAI,CAC7B,IAAIw4H,EAAQx4H,EAAEw4H,MACZp9E,EAAQp7C,EAAEo7C,MAKZ,OAAO,IAAc,CACnBj7D,KALSgwW,IAAwBlwE,EAAO,CACxCznJ,MAAOA,EACPp9E,MAAOA,KAIN60S,EACL,CAEE,OAAO,IAAc,CACnB9vW,KAFU,IAAW8/R,EAAOjgR,EAAE7f,OAG7B8vW,EAEP,IACA,OAAO,OAAgB,CAAC,EAAGjhC,EAAW,GAAG5gU,QAAO,QAAmB4hW,IAAe,aAAgC1+U,IAAb0jS,EAAyB,CAACA,GAAY,KAC7I,CACE,YAAoB1jS,IAAb0jS,GAAyB,OAAgB,CAAC,EAAGga,EAAWha,GAAY,CAAC,CAEhF,CCpCO,SAAS,IAAK/0B,GACnB,IAAI3xI,EAAU7yJ,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,OAC9EyiV,EAAaj+C,EAAM4mD,SAASv4L,GAChC,OAAOwhN,IAAc7vE,EAAOi+C,EAAY5vL,GAAS,SAAU8hN,GACzD,OAAOC,IAAQD,EAAMnwE,EAAM54L,OAC7B,GACF,CACO,SAASgpQ,IAAQnyB,EAAY72O,GAClC,IAAIkjI,EAAO9uO,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,QAE/E,GAAIyiV,EAAY,CACd,GAAIwB,IAAWxB,GACb,OAAOzP,IAAiByP,EAAWlhV,OAErC,GAAIkiV,IAAkBhB,GAAa,CACjC,IAAIoyB,EAAmBlrB,IAAgBlH,GAGvC,OAAO6B,IAAgB,CACrBnB,gBAAiBV,EACjBrvS,OAJSyhU,EAAiBzhU,OAK1BuvK,WAJakyJ,EAAiBlyJ,WAK9BmsB,KAAMA,EACNljI,OAAQA,GAEZ,CACF,CAEF,UC7BA,SAAS,IAAQ7nE,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAYlf,SAAS,IAAQ08R,GACtB,IAAIl4I,EAAMtsJ,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC3EorV,EAAW5mD,EAAM4mD,SACnB1I,EAAUl+C,EAAMk+C,QAChB92O,EAAS44L,EAAM54L,OACfu+J,EAAQq6B,EAAMr6B,MACZs4E,EAAa2I,EAASjnF,QAC1B,GAAI,GAAQs+E,GACV,MAAO,CACLt+E,QAAS2wG,IAAsB,CAC7B3wG,QAASs+E,GACRt4E,EAAOv+J,EAAQ0gD,IAGpB,IAAIirE,EAAQjrE,EAAIyoN,aAAe,cAAgB,QAC/C,OAAOV,IAAc7vE,EAAOi+C,EAAY,WAAW,SAAUkyB,GAE3D,IAAIK,EAA2BJ,IAAQD,EAAM/oQ,EAAQ2rH,GACrD,GAAIy9I,EACF,OAAOA,EAET,GAAa,OAATL,EAAJ,CAIA,IAAIM,EAAc3hC,IAAoB,UAAWoP,EAAS92O,GAM1D,OALoB,IAAhBqpQ,IACFA,EAAc,CACZ/+R,QAAS,aAGT,GAAS++R,GACJ,CACL1zW,MAAO0zW,GAEA1nT,GAAS0nT,GAEdziC,IAAYyiC,GACPA,EAC0B,aAAxBA,EAAY/+R,QACd4+R,IAAsB1pB,EAAUjhF,EAAOv+J,EAAQ0gD,GAE/C,CACLs8J,OAAQrxF,QARP,CAXP,CAwBF,GAEJ,CACO,SAAS29I,IAAY9pB,EAAUjhF,EAAOv+J,GAC3C,IACEmpQ,GADS/0W,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,CAAC,GAC1D+0W,aAClBI,EAAe,IAAc,IAAc,CAAC,EAAGvpQ,GAASA,EAAOwpQ,eAC/DC,EAAS,CAAC,EACVvmI,EAAOimI,EAAe,cAAgB,QACtC56I,EAAS,GACb,SAASvpN,EAAI0kW,EAAMziN,GACjB,IAAI0vE,EAQAhhO,EAPA8uV,EAAc7hB,IAAoB37K,GAClCmjL,EAAW2N,IAAgB2xB,GAAQA,EAAO,IAAc,IAAc,CAAC,EAAGA,GAAO,CAAC,EAAG,CACvFvtW,KAAMqjV,EAASiF,GAAatoV,OAI1Bk4B,EAAM,GADE+1S,EAAS7kR,OAASu4R,IAAa1T,EAAUm/B,IAC9B1sV,KAAK,MAAM+nC,WAAW,KAAM,OAEnD,GAAI4+Q,IAAOv8K,GAAU,CACnB,IAAI0iN,EAAuB,MAAZ1iN,EAAkB,KAAO,KACpCixL,EAAYgG,IAAYsB,EAASmqB,IACrC,GAAIjkC,IAAS0E,EAASzqH,MAAQu4H,EAAW,CACvC,IAAIsC,EAAa,IAAQpQ,EAAU,CACjClnG,KAAMA,IAEJu3G,EAAW,IAAQvC,EAAW,CAChCh1G,KAAMA,IAEJ+lI,EAAmBlrB,IAAgB3T,GAGvCz0U,EAAQkkV,IAAoBW,EAAYC,EAF7BwuB,EAAiBzhU,OACbyhU,EAAiBlyJ,WACsCwyJ,GACtEE,EAAOE,IAAY,CACrB,CACF,CACA,IAAKnmC,IAAOv8K,IAAYA,IAAY84K,IAAS94K,IAAY44K,KAAWthE,GAASA,EAAMw4F,eAAiB9vM,GAA4B,cAAjBs3G,EAAM5nL,OAAwB,CAC3I,IAAIizR,EAAoB7rB,IAAgB3T,GAGxCz0U,EAAQ+iV,IAAgB,CACtBnB,gBAAiBnN,EACjB5iS,OAJUoiU,EAAkBpiU,OAK5BuvK,WAJc6yJ,EAAkB7yJ,WAKhCmsB,KAAMA,EACNljI,OAAQupQ,EACR5wB,gBAAgB,IACf37B,MACL,CACqB,QAApBrmF,EAAShhO,SAA8B,IAAXghO,IAA6BhhO,EAAQqzW,IAAQ5+B,EAAUm/B,EAAcrmI,GAAM85E,QACxGzuF,EAAOx6N,KAAK,CACVkzJ,QAASA,EACT5yH,IAAKA,EACL1+B,MAAOA,GAEX,CACAiG,IAAQ4jV,GAAU,SAAU3I,EAAY5vL,GAClC+vL,IAAWH,GACb7xU,EAAI6xU,EAAY5vL,GACP80L,IAAuBlF,IAChC7xU,EAAI6xU,EAAWphT,UAAWwxH,EAE9B,IAEA,IADA,IAAIvwI,EAAM,CAAC,EACFviB,EAAK,EAAGmuO,EAAU/T,EAAQp6N,EAAKmuO,EAAQjuO,OAAQF,IAAM,CAC5D,IAAI01W,EAAavnI,EAAQnuO,GACvB8yJ,EAAU4iN,EAAW5iN,QACrB5yH,EAAMw1U,EAAWx1U,IACjB1+B,EAAQk0W,EAAWl0W,MAChB8zW,EAAOxiN,IAAavwI,EAAI2d,KAC3B3d,EAAI2d,GAAO1+B,EAEf,CACA,OAAO+gB,CACT,CACO,SAASwyV,IAAsB1pB,EAAUjhF,EAAOv+J,GACrD,IAEI9mF,EAAOowV,IAAY9pB,EAAUjhF,EAAOv+J,EAAQ,CAC9CmpQ,cAHU/0W,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,CAAC,GAC1D+0W,eAInBW,EAAYx6S,GAAQp2C,GAAMsL,KAAI,SAAU6tC,GAC1C,IAAIwhC,GAAQ,OAAexhC,EAAO,GAChCh+B,EAAMw/D,EAAM,GACZl+F,EAAQk+F,EAAM,GAChB,MAAO,IAAK9sF,OAAOstB,EAAK,OAAQttB,OAAOpR,EACzC,IACA,OAAOm0W,EAAUz1W,OAAS,EAAI,CAC5B2oT,OAAQ,IAAIj2S,OAAO+iW,EAAUjtV,KAAK,MAAO,WACvCoN,CACN,CCzJA,SAAS,IAAQkO,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAOlf,SAAS0vD,IAAKgtO,GACnB,IAEImxE,EAAariC,IAAoB,OAFvB9uC,EAAMk+C,QACTl+C,EAAM54L,QAGjB,OAAmB,IAAf+pQ,EAEK,CAAC,EAEH,IAAc,IAAc,IAAc,CAAC,EAAGA,EAAa,CAChEn+S,KAAMm+S,GACJ,CAAC,GAEP,SAA6BnxE,GAC3B,IAAI3uO,EAAO2uO,EAAM3uO,KACf6sR,EAAUl+C,EAAMk+C,QAChB92O,EAAS44L,EAAM54L,OACjB,IAAoB,IAAhBA,EAAOp0C,KACT,MAAO,CAAC,EAEV,IAAIo+S,EAAetiC,IAAoB,sBAAuBoP,EAAS92O,GACvE,GAAoB,MAAhBgqQ,EACF,MAAO,CACLnsG,oBAAqB,CACnBloQ,MAAOq0W,IAIb,OAAO//S,KAAQ+8Q,IAAgB,CAAC,EAAI,CAClCnpE,oBAAqB,CACnBloQ,MAAOs0D,GAGb,CAtBW4zM,CAAoB+6B,IAuBxB,SAAqBA,GAC1B,IAAI4mD,EAAW5mD,EAAM4mD,SACnB1I,EAAUl+C,EAAMk+C,QAChB92O,EAAS44L,EAAM54L,OACfu+J,EAAQq6B,EAAMr6B,MACZs4E,EAAa2I,EAAShlR,YAC1B,GAAIq8Q,EACF,OAAO4xB,IAAc7vE,EAAOi+C,EAAY,eAAe,SAAUkyB,GAC/D,OAAOC,IAAQD,EAAMnwE,EAAM54L,OAC7B,IAIF,IAAIiqQ,EAAmBviC,IAAoB,cAAeoP,EAAS92O,GACnE,GAAwB,MAApBiqQ,EACF,MAAO,CACLzvS,YAAa4sQ,IAAiB6iC,IAGlC,IAAoB,IAAhBjqQ,EAAOp0C,KACT,MAAO,CAAC,EAEV,IAAI1yC,EAAOowV,IAAY9pB,EAAUjhF,EAAOv+J,GACxC,GAAIi+N,GAAQ/kT,GACV,OAEF,MAAO,CACLshD,YAAa,CACXwiP,OAAQ1tP,GAAQp2C,GAAMsL,KAAI,SAAU6gC,EAAM7pD,GACxC,IAAIg2D,GAAQ,OAAenM,EAAM,GAC/BhxB,EAAMm9B,EAAM,GACZ77D,EAAQ67D,EAAM,GAChB,MAAO,IAAKzqD,OAAOvL,EAAQ,EAAI,KAAO,IAAIuL,OAAOstB,EAAK,WAAYttB,OAAOpR,EAAO,IAClF,IAAGknB,KAAK,QAGd,CA3DwC29C,CAAYo+N,GACpD,CChBO,SAASsxE,IAAYjjN,EAAS2xI,GACnC,IAQMuxE,EARFzpN,EAAMtsJ,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC3E0iV,EAAUl+C,EAAMk+C,QAClB0I,EAAW5mD,EAAM4mD,SACjBx/O,EAAS44L,EAAM54L,OACb2nO,EAAYjnL,EAAIinL,UAChBiQ,EAAal3L,EAAIk3L,WACnBp/S,EAAekoH,EAAIloH,kBACFvO,IAAf2tT,IAGiC,QAAlCuyB,EAAgB3xU,SAA4C,IAAlB2xU,IAA2C3xU,EAAekvS,IAAoBzgL,EAAS6vL,EAAS92O,EAAQ,CACjJ2nO,UAAWA,EACXC,gBAAgB,UAEG39S,IAAjBuO,IACFo/S,EAAaxQ,IAAiB5uS,KAGlC,IAAIq+S,EAAa2I,EAASv4L,GAC1B,OAAOwhN,IAAc7vE,EAAOi+C,EAAYlP,QAA6CA,EAAY1gL,GAAS,SAAU8hN,GAClH,OAAO,IAAa,CAClB9hN,QAASA,EACT4vL,WAAYkyB,EACZjyB,QAASA,EACT92O,OAAQA,EACR40M,UAAWhc,EAAMgc,UAAU3tJ,GAC3B36I,MAAOssR,EAAMosE,kBAAkB/9M,GAC/Bs3G,MAAO,KACPq5E,WAAYA,GAEhB,GACF,CCrCA,SAAS,IAAQz/S,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAKlf,SAAS,IAAM08R,GACpB,IAAIwxE,EAAa/kT,EAAMglT,EAAsBC,EACzC5pN,EAAMtsJ,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,CAC5E8wB,YAAQ+E,GAEN6sT,EAAUl+C,EAAMk+C,QAClB0I,EAAW5mD,EAAM4mD,SACjBx/O,EAAS44L,EAAM54L,OACby0P,EAAW3d,EAAQ36U,KAEnB+oB,EAAwC,QAA9BklV,EAAc1pN,EAAIx7H,cAAoC,IAAhBklV,EAAyBA,EAAc1iC,IAAoB,SAAUoP,EAAS92O,GAC9HuqQ,EAAsB,GAAS,CAAC,MAAO,QAAS,SAAU,SAAU,YAAa9V,GAAY,mBAAgBxqU,EAC7GugV,EAIyC,QAJ1BnlT,EAEX,QAFmBglT,EAAuB3iC,KAA+B,IAAXxiT,EAAkB,aAAU+E,EAAW6sT,EAAS92O,EAAQ,CAC5H2nO,UAAW,gBAC4B,IAAzB0iC,EAAkCA,EAElDrqQ,EAAO/1C,MAAgB,IAAX/kC,GAAmB,gBAA+B,IAATmgC,EAAkBA,EAGvEklT,EACIE,EAEI,QAFaH,EAAwB5iC,KAA+B,IAAXxiT,EAAmB,aAAU+E,EAAW6sT,EAAS92O,EAAQ,CACxH2nO,UAAW,kBAC6B,IAA1B2iC,EAAmCA,EAEnDtqQ,EAAO/1C,MAAgB,IAAX/kC,GAAoB,SAC5BwlV,EAAiBxlV,EAAS,OAAS,SACnCylV,EAA6B,IAAc,IAAc,CAAC,EAAGH,EAAc,CAC7Ep7T,KAAMg4R,IAAiBojC,IACrB,CAAC,GAAIC,EAAgB,CACvB91V,OAAQyyT,IAAiBqjC,IACvB,CAAC,GAOL,OANI3zB,EAAQvvS,QAAUriB,EAAS4xT,EAAQ1nS,KAAO0nS,EAAQniU,SACpD,IAAS,IAA0B,WAAY,CAC7Cy6B,KAAM,SAAU0nS,EAChBniU,OAAQ,WAAYmiU,KAGjB,IAAc,IAAc,IAAc,IAAc,CAAC,EAAG6zB,GAA6BT,IAAY,QAAStxE,EAAO,CAC1H+uC,UAAW+iC,EACXlyU,aAActT,EAASslV,EAAcC,KAClCP,IAAY,OAAQtxE,EAAO,CAE9BpgQ,aAAcgnT,EAASpwS,KAAOo7T,OAAcvgV,KACzCigV,IAAY,SAAUtxE,EAAO,CAEhCpgQ,aAAcgnT,EAAS7qU,OAAS81V,OAAgBxgV,IAEpD,CCpDO,SAAS2gV,IAAevlT,GAC7B,IAAIwlT,EAAcxlT,EAAK4hG,QACrB6vL,EAAUzxR,EAAKyxR,QACfg0B,EAAgBzlT,EAAKm6R,SACrBA,OAA6B,IAAlBsrB,EAA2B,CAAC,EAAIA,EAC3ClyE,EAAQvzO,EAAKuzO,MACbigC,EAAexzQ,EAAKwzQ,aAClB5xK,EAAU,GAAGlgJ,OAAO8jW,EAAa,UACjCryU,EAAes+S,EAAQ7vL,GACvB4vL,EAAa2I,EAASv4L,GAC1B,IAAiB,YAAZA,GAAqC,YAAZA,IAA0B4vL,EAYtD,MAAO,CACLk0B,WAAY,WACZp0R,OAbQogQ,IAAS,CACjB9vL,QAASA,EACT4vL,WAAYA,EACZC,QAASA,EACT92O,OAAQ44L,aAAqC,EAASA,EAAM54L,OAC5D40M,UAAWhc,EAAMgc,UAAU3tJ,GAC3B36I,MAAOssR,EAAMosE,kBAAkB/9M,GAC/Bs3G,MAAO,KACPq5E,WAAYxQ,IAAiB5uS,GAC7BqgS,aAAcA,KAOlB,IAAImyC,EAAqBl0B,EAAQ7vL,GACjC,OAAI+jN,EACK,CACLD,WAAY,SACZp0R,OAAQq0R,GAGL,CAAC,CACV,CCpCA,SAAS,IAAQ7yU,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAWlf,SAAS+uW,IAAchkN,EAAS2xI,EAAOvzO,GAC5C,IAAI6lT,EAAa7lT,EAAK6lT,WACpBvjC,EAAYtiR,EAAKsiR,UACf6X,EAAW5mD,EAAM4mD,SACnB1I,EAAUl+C,EAAMk+C,QAChB92O,EAAS44L,EAAM54L,OACfu+J,EAAQq6B,EAAMr6B,MACZs4E,EAAa2I,EAASv4L,GACtB0wL,EAAc6H,EAAS1c,IAAyB77K,IAChD2tJ,EAAYhc,EAAMgc,UAAU3tJ,GAC5B36I,EAAQssR,EAAMosE,kBAAkB/9M,GAChCkkN,EAAkBP,IAAe,CACjC3jN,QAASA,EACT6vL,QAASA,EACT0I,SAAUA,EACV5mD,MAAOA,EACPigC,aAAc,KAEhBliP,EAASw0R,EAAgBx0R,OACzBo0R,EAAaI,EAAgBJ,WAE3BnzB,EAAawzB,IAAwB,CACvCxyE,MAAOA,EACPsyE,WAAYA,EACZjkN,QAASA,EACT2tJ,UAAWA,EACXtoS,MAAOA,IAELqhT,GAAYkpB,GAAcrT,IAAOv8K,KAAau4L,EAAS7d,UAAY6d,EAAShqE,WAEhF,CACEniJ,MAAOulK,EAAM6uE,QAAQxgN,IAqBlB,SAAqBnyI,GAC1B,IAAImyI,EAAUnyI,EAAOmyI,QACnB4vL,EAAa/hU,EAAO+hU,WACpBjiC,EAAY9/R,EAAO8/R,UACnBr2C,EAAQzpP,EAAOypP,MACf5nL,EAAS7hE,EAAO6hE,OAChBmgQ,EAAUhiU,EAAOgiU,QAEnB,GAAIe,IAAkBhB,IAAet4E,GAASt3G,IAAYs3G,EAAMw4F,aAAc,CAC5E,GAAI/f,IAAWH,GAAa,CAC1B,IAAIhe,EAAege,EAAWhe,aAM9B,QALqB5uS,IAAjB4uS,GAA+C,SAAjBie,EAAQ36U,MAAgC,WAAZ8qJ,GAAoC,UAAZA,IAGpF4xK,EAAe,SAEI5uS,IAAjB4uS,EACF,OAAO,IAA0B,CAC/BjkB,UAAWA,EACX2iC,gBAAiBV,EACjBY,YAAa,QACb5e,aAAcA,EACdliP,OAAQA,GAGd,CAEA,OAAO,IAA+BkgQ,EAAYjiC,EAAW,CAC3D7rJ,OAAQ,OACP,CACDpyE,OAAQA,GAEZ,CACA,OAAO,IAAuC7hE,EAChD,CAtDMu2V,CAAY,CACdpkN,QAASA,EACT4vL,WAAYA,EACZc,YAAaA,EACbb,QAASA,EACT92O,OAAQA,EACR40M,UAAWA,EACXtoS,MAAOA,EACPiyP,MAAOA,EACP5nL,OAAQA,EACRihQ,WAAYA,EACZ/e,aAA6B,aAAfkyC,EAA4B,OAAI9gV,IAEhD,OAAO0jS,GAAW,OAAgB,CAAC,EAAGga,GAAa1gL,EAAS0mK,QAAY1jS,CAC1E,CAyCO,SAASmhV,IAAwB/4S,GACtC,IAAIumO,EAAQvmO,EAAMumO,MAChBsyE,EAAa74S,EAAM64S,WACnBjkN,EAAU50F,EAAM40F,QAChB2tJ,EAAYviP,EAAMuiP,UAClBtoS,EAAQ+lD,EAAM/lD,MACZwqU,EAAUl+C,EAAMk+C,QAClB92O,EAAS44L,EAAM54L,OACjB,OAAO,WACL,IAAIykP,EAAc7hB,IAAoB37K,GAClC0gL,EAAY9E,IAAqB57K,GACjCqkN,EAAuB5jC,IAAoBzgL,EAAS6vL,EAAS92O,EAAQ,CACvE2nO,UAAWA,IAEb,QAA6B19S,IAAzBqhV,EACF,OAAO,IAAgCrkN,EAASqkN,GAElD,OAAQJ,GACN,IAAK,YACL,IAAK,YACH,GAAIt2D,EAAW,CACb,IAAImd,EAAYzlT,EAAM9W,IAAI,QAC1B,GAAI,GAAS,CAAC+8U,IAAUE,IAAKF,IAAUQ,KAAMR,IAAU50H,KAAMo0G,SAM3D,GAAIzlT,EAAMi/V,+BACR,MAAO,CACLj/V,MAAOsoS,EACPj/S,MAAO,EAIf,CACA,GAAmB,cAAfu1W,EACF,MAAuB,MAAhBzmB,EAAsB,CAC3BpxN,MAAO,CACLnuH,MAAO,WAEP,CACFvP,MAAO,GAIT,OAAQ8uV,GACN,IAAK,SAEH,MAAO,CACLznC,OAAQ,OAAOj2S,OAAO6xR,EAAMr3R,MAAMy7S,OAAQ,KAAKj2S,OAAO6xR,EAAMp3R,OAAOw7S,OAAQ,QAE/E,IAAK,QACH,MAAO,CACLA,OAAQ,QAEZ,IAAK,IACH,MAAO,CACL3pL,MAAO,CACLnuH,MAAO,UAGb,IAAK,IACH,MAAO,CACLvP,MAAO,GAIf,MACF,IAAK,MAGD,OAAO,IAAc,IAAc,CAAC,EADtBijS,EAAMmqC,IAAe97K,KACc,CAAC,EAAG,CACnD0jH,KAAM,KAMhB,CACF,CChLA,IAAI6gG,IAAoB,CACtBhpW,KAAM,IACN6uB,OAAQ,KACRlrB,MAAO,MAELslW,IAAsB,CACxBhpW,IAAK,IACL2vE,OAAQ,KACR6E,OAAQ,MAEH,SAASy0R,IAAyBzkN,EAAS6vL,EAAS92O,GACzD,IAAI2rQ,EAAev3W,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,SACvF,GAAgB,WAAZ6yJ,GAAoC,UAAZA,EAC1B,OAAO47K,IAAqB57K,GAE9B,IAEI2kN,EAFAC,EAA2B,MAAZ5kN,EAAkB,QAAU,WAC3Cp/D,EAAQ6/O,IAAoBmkC,EAAc/0B,EAAS92O,GAQvD,OANI4mO,IAAY/+O,IACd,I9DiHG,SAA8CA,GACnD,MAAO,OAAO9gF,OAAO8gF,EAAO,2CAC9B,C8DnHa,CAAiDgkR,IAC1DD,OAAuB3hV,GAEvB2hV,EAAuB/jR,EAET,MAAZo/D,EACKukN,IAAkBI,IAA0C,QAAjBD,EAAyB,OAAS,WAE7EF,IAAoBG,GAAwBD,EAEvD,CChCA,SAAS,IAAQxzU,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAclf,SAAS4vW,IAAqB7kN,EAAS2xI,EAAOvzO,GACnD,IAAI6lT,EAAa7lT,EAAK6lT,WACpBa,EAAc1mT,EAAK0mT,YAErB,OADU1mT,EAAKlK,MAEN6wT,IAAc/kN,EAAS2xI,EAAO,CACnCsyE,WAAYA,EACZa,YAAaA,IAGVd,IAAchkN,EAAS2xI,EAAO,CACnCsyE,WAAYA,GAEhB,CACO,SAASc,IAAc/kN,EAAS2xI,EAAOpnO,GAC5C,IAAI05S,EAAa15S,EAAM05S,WACrBa,EAAcv6S,EAAMu6S,YAClBj1B,EAAUl+C,EAAMk+C,QAClB92O,EAAS44L,EAAM54L,OACb2pQ,EAAW7mC,IAAyB77K,GACpCy0L,EAAc3Y,IAAe97K,GAC7BglN,EAeN,SAA8BrzE,EAAOsyE,EAAYjkN,GAC/C,IAAIilN,EACA1sB,EAAW5mD,EAAM4mD,SACnBv1R,EAAO2uO,EAAM3uO,KACb6sR,EAAUl+C,EAAMk+C,QAChBv4E,EAAQq6B,EAAMr6B,MACdv+J,EAAS44L,EAAM54L,OACb6qQ,EAAcjoC,IAAoB37K,GAClCy0L,EAAc3Y,IAAe97K,GAC7B0gL,EAAY9E,IAAqB57K,GACjC4vL,EAAa2I,EAASqrB,GACtBj2D,EAAYhc,EAAMgc,UAAUi2D,GAC5Bv+V,EAAQssR,EAAMosE,kBAAkB6F,GAChCx4S,EAAoDu4S,IAA5C3jN,KAAWu4L,GAAYv4L,KAAW6vL,EAAyB,CACnE7vL,QAASA,EACT6vL,QAASA,EACT0I,SAAUA,EACV5mD,MAAOA,GACW,CAClB3xI,QAAS4jN,EACT/zB,QAASA,EACT0I,SAAUA,EACV5mD,MAAOA,IAETjiN,EAAStkB,EAAMskB,OACjB,IAAKkgQ,IAA2B,OAAZ5vL,GAAgC,OAAZA,KAAsBu4L,EAAS7d,UAAY6d,EAAShqE,WAAY,CACtG,IAAI22F,EAAgBppC,IAAe97K,GAC/BnvH,EAAO8gQ,EAAMk+C,QAAQq1B,GACzB,OAAY,MAARr0U,GACK,OAAgB,CAAC,EAAGq0U,EAAe,CACxCx2W,MAAOmiC,KAGF,OAAgB,CAAC,EAAG6vS,EAAW,CACpCt0M,MAAOulK,EAAM6uE,QAAQxgN,IAG3B,CACA,IAAI0mK,EA0BC,SAAsBz/K,GAC3B,IAAI+Y,EAAU/Y,EAAM+Y,QAClB4vL,EAAa3oM,EAAM2oM,WACnBc,EAAczpM,EAAMypM,YACpBb,EAAU5oM,EAAM4oM,QAChB92O,EAASkuC,EAAMluC,OACf40M,EAAY1mK,EAAM0mK,UAClBtoS,EAAQ4hI,EAAM5hI,MACdiyP,EAAQrwH,EAAMqwH,MACd5nL,EAASu3D,EAAMv3D,OACfihQ,EAAa1pM,EAAM0pM,WACrB,GAAIC,IAAkBhB,IAAet4E,GAErCt3G,EAAQt4H,OAAO,KAAO4vO,EAAMw4F,aAAapoU,OAAO,GAC9C,OAAO,IAA+BkoT,EAAYjiC,EAAW,CAC3D7rJ,OAAQ,SACP,CACDpyE,OAAQA,IAGZ,OAAO,IAAuC,CAC5CswE,QAASA,EACT4vL,WAAYc,EACZ/iC,UAAWA,EACXtoS,MAAOA,EACPiyP,MAAOA,EACPu4E,QAASA,EACT92O,OAAQA,EACRrpB,OAAQA,EACRihQ,WAAYA,GAEhB,CAzDiBw0B,CAAa,CAC1BnlN,QAASA,EACT4vL,WAAYA,EACZc,YAAa6H,EAASv4L,GACtB6vL,QAASA,EACT92O,OAAQA,EACR40M,UAAWA,EACXtoS,MAAOA,EACPiyP,MAAOA,EACP5nL,OAAQA,EACRihQ,gBAAY3tT,IAEd,QAAiBA,IAAb0jS,EACF,OAAO,OAAgB,CAAC,EAAGga,EAAWha,GAKxC,OAAO0+C,IAAgBplN,EAAS6vL,IAAYu1B,IAAgBplN,GAAUilN,EAAmB,CAAC,GAAG,OAAgBA,EAAkBjlN,EAAS6gL,IAAmB7gL,EAAS6vL,EAAS92O,EAAO1gG,SAAS,OAAgB4sW,EAAkBxwB,EAAa5T,IAAmB4T,EAAa5E,EAAS92O,EAAO1gG,QAAS4sW,KAAsBG,IAAgBplN,EAASjnD,EAAO/1C,KAAUoiT,IAAgBplN,EAASjnD,EAAO/1C,QAAS,OAAgB,CAAC,EAAG09Q,EAAWyjC,IAAwB,CACncxyE,MAAOA,EACPsyE,WAAYA,EACZjkN,QAASA,EACT2tJ,UAAWA,EACXtoS,MAAOA,GALoa8+V,GAO/a,CA9EmBkB,CAAqB1zE,EAAOmzE,EAAapC,GAM1D,OAAO,IAAc,IAAc,CAAC,EAAGsB,IAAchkN,EAAS2xI,EAAO,CACnEsyE,WAAYA,EACZvjC,UAPcskC,EAAWvwB,GAE3BgwB,IAAyBzkN,EAAS6vL,EAAS92O,GAE3C6iO,IAAqB57K,MAIhBglN,EACP,CAqGA,SAASI,IAAgBplN,EAAS6vL,GAChC,IAAI4E,EAAc3Y,IAAe97K,GAC7B0gL,EAAY9E,IAAqB57K,GACrC,QAA2Bh9H,IAAvB6sT,EAAQnP,GACV,OAAO,OAAgB,CAAC,EAAGA,EAAW,IAAgC1gL,EAAS6vL,EAAQnP,KAClF,QAAyB19S,IAArB6sT,EAAQ7vL,GACjB,OAAO,OAAgB,CAAC,EAAG0gL,EAAW,IAAgC1gL,EAAS6vL,EAAQ7vL,KAClF,GAAI6vL,EAAQ4E,GAAc,CAC/B,IAAI6wB,EAAgBz1B,EAAQ4E,GAC5B,IAAIrF,IAAmBk2B,GAGrB,OAAO,OAAgB,CAAC,EAAG7wB,EAAa,IAAgCz0L,EAASslN,IAFjF,I/DnDC,SAAsC7wB,GAC3C,MAAO,0DAA0D30U,OAAO20U,EAAa,IACvF,C+DiDe,CAAyCA,GAItD,CAEF,CCnKA,SAAS,IAAQvjT,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAmBlf,SAASswW,IAAa5zE,EAAO3xI,GAClC,IAAI5hG,EAAMonT,EACNzsQ,EAAS44L,EAAM54L,OACjBw/O,EAAW5mD,EAAM4mD,SACjB1I,EAAUl+C,EAAMk+C,QACd7sR,EAAO6sR,EAAQ36U,KACfwtW,EAAW7mC,IAAyB77K,GACpCy0L,EAAc3Y,IAAe97K,GAC7B4vL,EAAa2I,EAASv4L,GACtBylN,EAAcltB,EAASmqB,GACvBr9V,EAAQssR,EAAMosE,kBAAkB/9M,GAChC8qK,EAAYzlT,EAAQA,EAAM9W,IAAI,aAAUy0B,EACxCyoO,EAASokF,EAAQpkF,OACjBi6G,EAA+J,QAAjJtnT,EAA2D,QAAnDonT,EAAwBjtB,EAAS9D,UAAoD,IAA1B+wB,EAAmCA,EAAwBjtB,EAAS1nT,YAA2B,IAATutB,EAAkBA,EAAOqiR,IAAoB,OAAQoP,EAAS92O,EAAQ,CAC/O2nO,UAAW+T,IAETkxB,EAAqB5pC,IAAiB/7K,GACtC4lN,EAAqB,QAAT5iT,IAA+B,MAAZg9F,EAA6B,aAAXyrG,EAAmC,eAAXA,GAE7E,OAAIskF,IAAWH,MAAgBtR,IAAUsR,EAAWl3H,MAAQ+lH,IAASmR,EAAWl3H,MAAQk3H,EAAWpI,WAAai+B,IAAkBC,IAAet2B,IAAmBs2B,IAAiBntB,EAASotB,IAAwBx4B,IAAkBriB,IAO5N8lB,IAAkBhB,IAAezC,IAAkBriB,IAAc86C,KAAeH,EA4E9F,SAAyBtiC,EAAUnjL,EAAS2xI,GAC1C,IAeIk0E,EAfAh2B,EAAUl+C,EAAMk+C,QAClB0I,EAAW5mD,EAAM4mD,SACjBx/O,EAAS44L,EAAM54L,OACfu+J,EAAQq6B,EAAMr6B,MACZ7L,EAASokF,EAAQpkF,OACjBkiD,EAAYhc,EAAMgc,UAAU3tJ,GAC5B36I,EAAQssR,EAAMosE,kBAAkB/9M,GAChCklN,EAAgBppC,IAAe97K,GAC/B0iN,EAAW7mC,IAAyB77K,GACpC2lN,EAAqB5pC,IAAiB/7K,GACtC8lN,EAAkBn0E,EAAMgc,UAAUg4D,GAClCI,EAAcp0E,EAAMosE,kBAAkB/hC,IAAsBh8K,IAE5Dw0L,EAA8B,eAAX/oF,GAAuC,MAAZzrG,GAA8B,aAAXyrG,GAAqC,MAAZzrG,GAG1Fu4L,EAAS1nT,MAAQg/S,EAAQh/S,QACvB2jT,EACFqxB,EAAa5C,IAAY,OAAQtxE,EAAO,CACtC+uC,UAAWwkC,EACXv0B,WAAYxQ,IAAiB0P,EAAQh/S,QAGvC,IhEgBC,SAA0CmyB,GAC/C,MAAO,2CAA4CljD,OAAOkjD,EAAM,KAClE,CgElBe,CAA6C6sR,EAAQ36U,QAGlE,IAAI8wW,IAA8BH,EAE9BI,EAAW7xB,IAAY,CACzBp0L,QAASA,EACTmjL,SAAUA,EACV0M,QAASA,EACT92O,OAAQA,EACR+xN,UAAWzlT,aAAqC,EAASA,EAAM9W,IAAI,QACnEimV,iBAAkBA,IAEpBqxB,EAAaA,IAAc,OAAgB,CAAC,EAAGX,EAxGjD,SAAwBzwB,EAAa9mC,EAAWtoS,EAAO0zF,EAAQktQ,EAAUC,EAAaljT,GACpF,GAAIosR,IAAmB62B,GAAW,CAChC,IAAI5gW,EAkBF,MAAO,CACLq+P,KAAMuiG,EAASvrI,KACftuG,MAAO,CACLnuH,MAAOw2U,IApBX,IAAI3pB,EAAYzlT,EAAM9W,IAAI,QAC1B,GAAkB,SAAdu8T,EAAsB,CACxB,IAAIq7C,EAAY,cAAcrmW,OAAO6tS,EAAW,MAC1B,IAAlBs4D,EAASvrI,OACXyrI,EAAY,GAAGrmW,OAAOmmW,EAASvrI,KAAM,OAAO56N,OAAOqmW,IAErD,IAAI12B,EAAc7O,IAAc,cAAe,CAC7C1rU,KAAM8tD,GACL+1C,GACH,MAAO,CACLg9M,OAAQ05B,EAAc,OAAO3vU,OAAOwgU,IAAoBmP,GAAc,MAAM3vU,OAAOqmW,EAAW,KAAOA,EAEzG,CAA6B,IAAlBF,EAASvrI,OAClB,IhE+ED,SAAmDowF,GACxD,MAAO,0CAA0ChrT,OAAOgrT,EAAW,UACrE,CgEjFiB,CAAsDA,IAC/Dm7C,OAAWjjV,EAUjB,KAAO,IAAI28S,IAAYsmC,GACrB,OAAOA,EACF,GAAIA,EACT,MAAO,CACLv3W,MAAOu3W,EAEX,CAEA,GAAI5gW,EAAO,CACT,IAAI+gW,EAAa/gW,EAAM9W,IAAI,SAC3B,GAAIqxU,IAAcwmC,IAAelzT,GAASkzT,EAAWpyT,MACnD,MAAO,CACLtlD,MAAO03W,EAAWpyT,KAAO,EAG/B,CACA,IAAKkyT,EAAa,CAChB,IAAIG,EAAgBttQ,EAAO1zF,MACzBihW,EAAmBD,EAAcC,iBACjCxc,EAAsBuc,EAAcvc,oBACpCC,EAAuBsc,EAActc,qBACnCpjR,EAAUmxP,GAAgBwuC,EAA2B,QAATtjT,EAAiB8mS,EAAsBC,GACvF,GAAIpqB,IAAYh5P,GACd,MAAO,CACLovO,OAAQ,SAASj2S,OAAO6mE,EAAQovO,OAAQ,SAASj2S,OAAO20U,IAErD,GAAIvhS,GAASyzB,GAClB,MAAO,CACLovO,OAAQ,GAAGj2S,OAAO,EAAI6mE,EAAS,OAAO7mE,OAAO20U,GAGnD,CACA,IAAI8xB,EAAcld,IAA0BtwP,EAAO4lK,KAAM81E,GACzD,MAAO,CACL/lV,MAAO63W,EAAc,EAEzB,CAyCgEC,CAAetB,EAAeY,GAAmBn4D,EAAWo4D,GAAe1gW,EAAO0zF,EAAQktQ,IAAY9iC,EAAU0M,EAAQ36U,OAQtL,IAAIuxW,EAAyF,UAArEphW,aAAqC,EAASA,EAAM9W,IAAI,UAAuB6gV,IAAmB62B,KAAcD,EAA4B,MAAQ,SACxKtlC,EAAY+jC,IAAyBzkN,EAAS6vL,EAAS92O,EAAQ0tQ,GAC/Dr8U,EAAuB,OAAds2S,GAAoC,OAAdA,EAC/BwjC,EAAkBP,IAAe,CACjC3jN,QAASA,EACT6vL,QAASA,EACT0I,SAAUA,EACV5mD,MAAOA,EACPigC,aAAcxnS,EAAS,GAAM,IAE/BslD,EAASw0R,EAAgBx0R,OACzBo0R,EAAaI,EAAgBJ,WAC3B4C,EAAS,IAAuC,CAClD1mN,QAASA,EACT4vL,WAAYzM,EACZ0M,QAASA,EACT92O,OAAQA,EACR40M,UAAWA,EACXtoS,MAAOA,EACPiyP,MAAOA,EACP5nL,OAAQA,EACRihQ,WAAYwzB,IAAwB,CAClCxyE,MAAOA,EACPsyE,WAAY,MACZjkN,QAASA,EACT2tJ,UAAWA,EACXtoS,MAAOA,IAETusT,aAAcxnS,EAAwB,aAAf05U,EAA4B,EAAI,GAAMnkC,IAAYsmC,GAAY,CACnFlwD,OAAQ,MAAMj2S,OAAOmmW,EAAU,QAC7B72B,IAAmB62B,IAAa,EAAIA,EAASvrI,MAAQ,EAAI,IAE/D,GAAIwqI,EACF,OAAO,KAAc,OAAgB,CAAC,EAAGxkC,EAAWgmC,GAASb,GAE7D,IAAIz6S,EAGAu7S,EAAa/qC,IAAqB8mC,GAClCnnR,EAAUsqR,EAAWX,GACrB0B,EAAal3R,EAAS,IAAc,IAAc,CAAC,EAAG6L,GAAU,CAAC,EAAG,CACtE7L,OAAQA,IACL6L,EACL,OAAOnwB,EAAQ,CAAC,GAAG,OAAgBA,EAAOs1Q,EAAWgmC,IAAS,OAAgBt7S,EAAOu7S,EAAY,GAAQD,GAAU,CAACA,EAAO,GAAI,IAAc,IAAc,CAAC,EAAGA,EAAO,IAAK,CAAC,EAAG,CAC7Kh3R,OAAQk3R,KACJ,IAAc,IAAc,CAAC,EAAGF,GAAS,CAAC,EAAG,CACjDh3R,OAAQk3R,KACLx7S,CAET,CAzKWy7S,CAAgBj3B,EAAY5vL,EAAS2xI,GAErCozE,IAAc/kN,EAAS2xI,EAAO,CACnCsyE,WAAY,YACZa,YAAa,cA8LnB,SAAyBl4Q,GACvB,IAAIk6Q,EAAuBC,EAAW3D,EAoDhCriQ,EAnDFoiO,EAAWv2O,EAAMu2O,SACnB8N,EAAYrkP,EAAMqkP,UAClBjxL,EAAUpzD,EAAMozD,QAChB2xI,EAAQ/kM,EAAM+kM,MACZ54L,EAAS44L,EAAM54L,OACjB82O,EAAUl+C,EAAMk+C,QAChB0I,EAAW5mD,EAAM4mD,SACflzU,EAAQssR,EAAMosE,kBAAkB/9M,GAChC2tJ,EAAYhc,EAAMgc,UAAU3tJ,GAC5B8qK,EAAYzlT,EAAQA,EAAM9W,IAAI,aAAUy0B,EACxC7F,EAAU9X,EAAM9W,IAAI,WACpB03W,EAAW7xB,IAAY,CACzBp0L,QAASA,EACTmjL,SAAUA,EACV0M,QAASA,EACT92O,OAAQA,EACR+xN,UAAWA,IAET1qD,EAAmE,QAA3D0mG,EAAwBn1E,EAAM5lO,UAAUukQ,KAAKtwK,UAAgD,IAA1B8mN,OAAmC,EAASA,EAAsB,GAC7IE,EAAoG,QAAnFD,EAAY3mG,aAAmC,EAASA,EAAK7xQ,IAAI,oBAAwC,IAAdw4W,EAAuBA,EAAY,GAC/I9d,EAAU1sB,IAAOv8K,IAA2F,QAA/EojN,EAAuB3iC,IAAoB,aAAcoP,EAAS92O,UAA8C,IAAzBqqQ,EAAkCA,EAA2B,EACjLV,EAAW7mC,IAAyB77K,GACpC0gL,EAAY9E,IAAqB57K,GACjC2mN,EAAa/qC,IAAqB8mC,GAClCjzB,EAAc7O,IAAc,cAAeiP,EAAS92O,GACpDkuQ,EAAmBtD,IAAe,CAClC3jN,QAASA,EACT6vL,QAASA,EACT0I,SAAUA,EACV5mD,MAAOA,EACPigC,aAAc,IAEhBliP,EAASu3R,EAAiBv3R,OACxBw3R,EAAmBvD,IAAe,CAClC3jN,QAAS0iN,EACT7yB,QAASA,EACT0I,SAAUA,EACV5mD,MAAOA,EACPigC,aAAc,IAEhBu1C,EAAUD,EAAiBx3R,OACzB03R,ExDnIC,SAAqBh8S,GAC1B,IAAIuiP,EAAYviP,EAAMuiP,UACpBw1B,EAAW/3Q,EAAM+3Q,SACflwT,EAAQ,IAAQkwT,EAAU,CAC5BlnG,KAAM,UAEJ7gN,EAAM,IAAQ+nT,EAAU,CAC1BlnG,KAAM,QACNn6E,OAAQ,QAEV,MAAO,cAAehiJ,OAAO6tS,EAAW,OAAQ7tS,OAAOsb,EAAK,eAAgBtb,OAAO6tS,EAAW,OAAQ7tS,OAAOmT,EAAO,KACtH,CwDwHqB,CAAgB,CACjCkwT,SAAUA,EACVx1B,UAAWA,IAET05D,EAAmBC,IAActnN,EAASipM,EAAS9rU,EAAS6pV,EAAet3R,EAAQ+/P,EAAa23B,GAChGG,EAAoBD,IAAc5E,EAAUzZ,EAAS9rU,EAAS6pV,EAAeG,QAAyCA,EAAUz3R,EAAQ+/P,EAAa23B,GACrJx1C,EAAe+N,IAAYsmC,GAAY,CACzClwD,OAAQ,MAAMj2S,OAAOmmW,EAASlwD,OAAQ,QACpCq5B,IAAmB62B,IAAa,EAAIA,EAASvrI,MAAQ,EAAI,GAC7D,GAAI4jG,IAAU6E,EAASzqH,MAAQyqH,EAASqE,SAEtC,OAAOzmO,EAAQ,CAAC,GAAG,OAAgBA,EAAO4lQ,EAAYa,IAAW,CAC/DrkC,SAAUA,EACVx1B,UAAWA,EACXikB,aAAcA,EACdliP,OAAQ63R,MACL,OAAgBxmQ,EAAO2/N,EAAW8mC,IAAW,CAChDrkC,SAAUA,EACVx1B,UAAWA,EACXikB,aAAc+N,IAAY/N,GAAgB,CACxC7b,OAAQ,KAAKj2S,OAAO8xT,EAAa7b,SAC/B,EAAI6b,EACRliP,OAAQ23R,KACLtmQ,EACA,GAAI09N,IAAS0E,EAASzqH,KAAM,CACjC,IAIMtzI,EAKAi7D,EATFonO,EAAW,IAA+BtkC,EAAUx1B,EAAW,CAAC,EAAG,CACrEj+N,OAAQ63R,IAEV,GAAIx3B,IAAWkB,GAEb,OAAO7rQ,EAAQ,CAAC,GAAG,OAAgBA,EAAOuhS,EAAYc,IAAW,OAAgBriS,EAAOs7P,EAAW,IAA+BuQ,EAAWtjC,EAAW,CAAC,EAAG,CAC1Jj+N,OAAQ23R,KACLjiS,EACA,GAAIm5P,IAAY4E,EAASzqH,MAAQyqH,EAASzqH,IAAI1kK,KAEnD,OAAOqsF,EAAQ,CAAC,GAAG,OAAgBA,EAAOsmO,EAAYc,IAAW,OAAgBpnO,EAAOqgM,EAAW,CACjG3qB,OAAQ,UAAWj2S,OAAO6tS,EAAW,OAAQ7tS,OAAO,IAAQqjU,EAAU,CACpElnG,KAAM,UACJ,OAAOn8N,OAAOqjU,EAASzqH,IAAI1kK,KAAM,KACrC07B,OAAQ23R,IACNhnO,CAER,CAEA,YADA,IAAS,IAAqCqiO,GAEhD,CAjSWgF,CAAgB,CACrBvkC,SAAUyM,EACVqB,UAAWw0B,EACXzlN,QAASA,EACT2xI,MAAOA,GAUb,CAmKA,SAAS21E,IAActnN,EAASipM,EAAS9rU,EAAStY,EAAW6qE,EAAQ+/P,EAAa23B,GAChF,GAAI7sC,IAAuBv6K,GACzB,OAAO,EAET,IAAI2nN,EAAoB,MAAZ3nN,GAA+B,OAAZA,EAC3B4nN,EAAgBD,GAAS1e,EAAU,EAAIA,EAAU,EACrD,GAAItpB,IAAYxiT,IAAYwiT,IAAYjwP,IAAWiwP,IAAY96T,IAAc4qU,EAAa,CACxF,IAAIo4B,EAAcvnC,IAAoBnjT,GAClCqyS,EAAa8Q,IAAoB5wP,GACjCo4R,EAAgBxnC,IAAoBz7T,GACpCkjW,EAAkBznC,IAAoBmP,GACtCvqI,EAAOyiK,EAAQ,GAAK,IACpBK,EAAuBv4B,EAAc,IAAI3vU,OAAOsnW,EAAc,OAAOtnW,OAAOioW,EAAiB,OAAOjoW,OAAOolM,EAAM,WAAWplM,OAAOioW,EAAiB,QAAQjoW,OAAOsnW,EAAc,SAAStnW,OAAO8nW,EAAe,KAAOA,EAI3N,MAAO,CACL7xD,QAJM+xD,EAAgB,GAAGhoW,OAAOgoW,EAAe,OAAS,KAClDD,EAAc,IAAI/nW,OAAO+nW,EAAa,iBAAmB,KACzDr4C,EAAa,IAAI1vT,OAAO0vT,EAAY,OAAO1vT,OAAOkoW,EAAsB,KAAOA,GAIzF,CAEE,OADAt4R,EAASA,GAAU,EACZ7qE,GAAasY,GAAWuyD,EAASk4R,GAAiBl4R,EAASk4R,EAEtE,CA6FO,SAASJ,IAAWvgO,GACzB,IAAIk8L,EAAWl8L,EAAMk8L,SAIrB,OAAO,IAA0B,CAC/Bx1B,UAJY1mK,EAAM0mK,UAKlB2iC,gBAAiBnN,EACjBvR,aALe3qL,EAAM2qL,aAMrBliP,OALSu3D,EAAMv3D,QAOnB,CCvVA,SAAS,IAAQx+C,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAuBzf,IAAIgzW,IAAgB,IAAI/0U,IAAI,CAAC,OAAQ,QAAS,WACvC,SAASg1U,IAAgBv2E,EAAOoO,GACrC,IAAI3hP,EAAwB,YAAjB2hP,EAAOz/P,MAAsB,IAAMqxP,GAAS,CAAC,EACtDw2E,EAAY/pT,EAAKjW,KACjBA,OAAqB,IAAdggU,OAAuBnlV,EAAYmlV,EAC1CC,EAAchqT,EAAK1wC,OACnBA,OAAyB,IAAhB06V,OAAyBplV,EAAYolV,EAChD,OAAO,IAAc,IAAc,IAAc,IAAc,IAAc,IAAc,IAAc,IAAc,IAAc,IAAc,IAAc,IAAc,CAAC,EA2BlL,SAA2BplT,EAAM+8O,GAC/B,OAAO+/B,IAAgB5hT,QAAO,SAAU5b,EAAG7Q,GAIzC,OAHKw2W,IAAc55U,IAAI58B,SAAwBuxB,IAAfggC,EAAKvxD,IAAwC,WAAjBsuS,EAAOtuS,KACjE6Q,EAAE7Q,GAAQ0uU,IAAiBn9Q,EAAKvxD,KAE3B6Q,CACT,GAAG,CAAC,EACN,CAlCqL+lW,CAAkB12E,EAAMk+C,QAAS9vC,IAAUuoE,IAAqB32E,EAAO,OAAQxpP,IAAQmgU,IAAqB32E,EAAO,SAAUjkR,IAAUu1V,IAAY,UAAWtxE,IAASsxE,IAAY,cAAetxE,IAASsxE,IAAY,gBAAiBtxE,IAASsxE,IAAY,cAAetxE,IAASsxE,IAAY,aAActxE,IC7B7d,SAAgBA,GACrB,IAAI4mD,EAAW5mD,EAAM4mD,SACnBv1R,EAAO2uO,EAAM3uO,KACXnZ,EAAQ0uS,EAAS1uS,MACrB,OAAK8kS,IAAW3rR,IAASouR,IAAWvnS,GAC3B23T,IAAc7vE,EAAO9nP,EAAO,UAAU,SAAUooL,GACrD,OAAOkuG,IAAiBluG,EAAGvjO,MAC7B,IAEK,CAAC,CACV,CDmB6es7P,CAAO2nC,IAAS,IAAQA,IAAS,IAAKA,EAAO,SAAUhtO,IAAKgtO,GACziB,CAEA,SAAS22E,IAAqB32E,EAAO3xI,EAAS0mK,GAC5C,IAAI3tN,EAAS44L,EAAM54L,OACjB/1C,EAAO2uO,EAAM3uO,KAGf,GAAgB,SADFy9Q,IAAoB,UADtB9uC,EAAMk+C,QACoC92O,IAC5B2tN,IAAaioB,IAAW3rR,GAAO,CAGvD,IAAInxD,EAwBR,SAAmC8/R,EAAO/kM,GACxC,IAAI27Q,EAAgB37Q,EAAMr4B,QACxBA,OAA4B,IAAlBg0S,GAAmCA,EAE3CC,EADS57Q,EAAMhrD,SACQ1jB,QAAO,SAAUuqV,EAAYzoN,GACtD,IAAI0oN,EAAiB/2E,EAAMosE,kBAAkB/9M,GAC7C,GAAI0oN,EAAgB,CAClB,IAAI59C,EAAY49C,EAAen6W,IAAI,QAC/B69H,EAAQulK,EAAMmsE,QAAQ99M,EAAS,CACjCi8E,KAAM,UAGJ7vG,GAASghN,IAAoBtiB,KAC/B29C,EAAWr8O,IAAS,EAExB,CACA,OAAOq8O,CACT,GAAG,CAAC,GACAt8O,EAAS,GAAKq8O,GAClB,GAAIr8O,EAAO/+H,OAAS,EAAG,CACrB,IAAIosD,EAAK+a,EAAU,KAAO,KAC1B,OAAO43D,EAAO5uG,KAAI,SAAU6uG,GAC1B,OAAO8jN,IAAsB9jN,EAAO73D,EACtC,IAAG3+C,KAAK,IAAI9V,OAAO05C,EAAI,KACzB,CACA,MACF,CAlDemvT,CAA0Bh3E,EAAO,CAC1Cp9N,SAAS,EACT3yB,SAAUq7R,MAEZ,GAAIprU,EACF,OAAO,OAAgB,CAAC,EAAGmuJ,EAAS,CAGpC,CACEnuJ,KAAMA,EACNnD,MAAO,OACNoR,QAAO,QAAmB,GAAM4mT,KAEvC,CACA,OAAOA,GAAW,OAAgB,CAAC,EAAG1mK,EAAS0mK,GAAY,CAAC,CAC9D,CErDO,SAASx7E,IAAQymD,GACtB,IAAI54L,EAAS44L,EAAM54L,OAGnB,GADc0nO,IAAoB,UADtB9uC,EAAMk+C,QACoC92O,GACzC,CACX,IAAIg9M,EAaR,SAAmCpkB,EAAOvzO,GACxC,IAAIwqT,EAAexqT,EAAKmW,QACtBA,OAA2B,IAAjBq0S,GAAkCA,EAE1CJ,EADSpqT,EAAKxc,SACS1jB,QAAO,SAAUuqV,EAAYzoN,GACtD,IAAI0oN,EAAiB/2E,EAAMosE,kBAAkB/9M,GAC7C,GAAI0oN,EAAgB,CAClB,IAAIG,EACA/9C,EAAY49C,EAAen6W,IAAI,QAC/B69H,EAAQulK,EAAMmsE,QAAQ99M,EAAS,CACjCi8E,KAAM,QACNi1G,UAA4C,QAAhC23B,EAAel3E,EAAMr6B,aAAoC,IAAjBuxG,GAA2BA,EAAa5pI,OAAS,WAAQj8M,IAG3GopG,GAASghN,IAAoBtiB,KAC/B29C,EAAWr8O,IAAS,EAExB,CACA,OAAOq8O,CACT,GAAG,CAAC,GACAt8O,EAAS,GAAKq8O,GAClB,GAAIr8O,EAAO/+H,OAAS,EAAG,CACrB,IAAIosD,EAAK+a,EAAU,KAAO,KAC1B,OAAO43D,EAAO5uG,KAAI,SAAU6uG,GAC1B,OAAO8jN,IAAsB9jN,EAAO73D,EACtC,IAAG3+C,KAAK,IAAI9V,OAAO05C,EAAI,KACzB,CACA,MACF,CAzCiB,CAA0Bm4O,EAAO,CAC5C/vP,SAAU06R,MAEZ,GAAIvmB,EACF,MAAO,CACL7qE,QAAS,CACP6qE,OAAQA,GAIhB,CACA,MAAO,CAAC,CACV,CA8BO,SAAS+yD,IAAer3W,EAAM/C,GACnC,QAAcs0B,IAAVt0B,EACF,OAAO,OAAgB,CAAC,EAAG+C,EAAM0uU,IAAiBzxU,GAGtD,CCzDA,SAAS,IAAQwiC,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CACzf,SAAS,IAA2B0c,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAIlL,IAAIsjJ,IAAU,UACVC,IAAU,CACZ99H,QAAS,SAAiBwwH,GACxB,MAAwB,UAAjBA,EAAQxmW,MAAoBwmW,EAAQsN,OAC7C,EACAh2T,MAAO,SAAe2+O,EAAO+pE,GAG3B,GAAIA,EAAQruW,OAAQ,CAClB,IACEy9N,EADEC,EAAY,IAA2B2wI,EAAQruW,QAEnD,IACE,IAAK09N,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAC1CimL,EAAMp8N,MACZ4gT,SAAW3d,EAAM6uE,QAAQuI,IAC7B,CACF,CAAE,MAAOh1U,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACF,CACF,EACAksQ,MAAO,SAAe61B,EAAO+pE,EAASqF,GACpC,IAAId,EAAwBvE,EAAQp7H,QAAQ+8H,WAC1C7lW,EAAIyoW,EAAsBzoW,EAC1BC,EAAIwoW,EAAsBxoW,EACxB+1V,EAAW77D,EAAM3uO,KACrB,GAAI2rR,IAAW6e,GAEb,OADA,IpEPG,gDAAkD1tV,OoEOD0tV,EpEPc,YoEQ3DuT,EAET,IAAIkI,EAAU,CACZz6W,KAAMmjS,EAAM6uE,QAAQuI,KACpB7zW,KAAM,OACNs3P,aAAa,EACb3mO,KAAM,CACJ5T,KAAM0/Q,EAAM6uE,QAAQ,UAEtBt5I,OAAQ,CACNn1N,OAAQ,IAAc,CACpBo2C,KAAM,CACJz5C,MAAO,eAETgwD,YAAa,CACXhwD,MAAO,KAETgf,OAAQ,CACNhf,MAAO,eAETw6W,UAAW,CACTx6W,OAAO,IAER,IAAQijS,EAAO,CAChBuwE,cAAc,MAGlB7hW,UAAW,CAAC,CACVnL,KAAM,UACNsC,EAAG,CACDykO,KAAMzkO,IAAMC,EAAI,qBAAuB,KAEzCA,EAAG,CACDwkO,KAAMxkO,IAAMD,EAAI,qBAAuB,KAEzCq5B,KAAM,CAAC8gQ,EAAM4tE,iBAAiB,SAAU5tE,EAAM4tE,iBAAiB,cAG/DhrW,EAAQ,EACR40W,GAAS,EAab,OAZApI,EAAOpsW,SAAQ,SAAUquD,EAAMv1D,GAC7B,IAAI27W,EACA56W,EAAoC,QAA5B46W,EAAapmT,EAAKx0D,YAAiC,IAAf46W,EAAwBA,EAAa,GACjF56W,IAASmjS,EAAM5lO,UAAU/I,KAAK,GAAGx0D,KACnC+F,EAAQ9G,EACCe,EAAKiR,QAAQspW,MAAY,IAClCI,GAAS,EAEb,IACKA,GACHpI,EAAOpzW,OAAO4G,EAAQ,EAAG,EAAG00W,GAEvBlI,CACT,GAEF,QC7FA,SAAS,IAAQ7vU,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAQzf,IAAIo0W,IAAgB,CAClBn+H,QAAS,SAAiBwwH,GACxB,MAAwB,UAAjBA,EAAQxmW,MAAwC,WAApBwmW,EAAQ9nU,SAAwB8nU,EAAQ/rW,MAAyB,WAAjB+rW,EAAQ/rW,OAAsBu4V,IAAgBwT,EAAQ/rW,KAC3I,EACAqjD,MAAO,SAAe2+O,EAAO+pE,EAASzD,GACpC,OAAOqR,IAA0B5N,EAASzD,EAC5C,EACAkG,gBAAiB,SAAyBxsE,EAAO+pE,EAAS72J,GACxD,IAAIr2M,EAAOktW,EAAQltW,KACfiqR,EAAOijF,EAAQp7H,QACf3wO,EAAO+rW,EAAQ/rW,KACfkH,EAAO6kW,EAAQ7kW,MAAQ6kW,EAAQ7kW,KAAK,GACpC6tN,EAAQ,IAAQwmB,QAAQwwH,GAAW,2CAA6C,QAuBpF,OAtBAjjF,EAAK/lO,MAAM/9C,SAAQ,SAAUgW,EAAGld,GAC9B,IAKM2wD,EAAMmrT,EALRC,EAASvyC,GAAQ,GAAGn3T,OAAOtR,EAAM,KAAKsR,OAAO6K,EAAEyhH,QAC/Cy0L,EAAYh8G,EAAQ/nM,QAAO,SAAUuN,GACvC,OAAOA,EAAE7b,OAASg7W,CACpB,IACK3oD,EAAUzzT,QAEby3M,EAAQ3iM,QAAQ,IAAc,IAAc,CAC1C1T,KAAMg7W,GACL3yW,EAAO,CACRA,KAAMykW,IAAazkW,EAAKpJ,KACtB,CACFiB,MAAO,OACL,CAAC,EAAG,CACNhC,GAAIgvW,EAAQruW,OAAS,CAAC,CACpBA,OAAQquW,EAAQruW,OAChB0E,OAAQ,+CAA+C+N,OAAO4kN,EAAO,KAAK5kN,OAAO,GAAY6K,EAAEyhH,OAAQ,cACpG,GACLz8H,KAA0H,QAAnHyuD,EAA2C,QAAnCmrT,EAAgB55W,EAAKgb,EAAEyhH,cAAsC,IAAlBm9O,EAA2BA,EAAgB55W,EAAKgb,EAAEq1I,gBAA+B,IAAT5hG,EAAkBA,EAAOzuD,IAGjK,IACOk1M,CACT,EACAA,QAAS,SAAiB8sF,EAAO+pE,EAASx8F,GACxC,IAAI1wQ,EAAOktW,EAAQltW,KACfiqR,EAAOijF,EAAQp7H,QACfy1E,EAAS72C,EAASpiQ,QAAO,SAAUuN,GACrC,OAAOA,EAAE7b,OAASA,EAAOywW,GAC3B,IAAG,GACC9yO,EAAS39H,EAAO2uW,IAChBpwU,EAAS0rP,EAAK/lO,MAAMn1B,KAAI,SAAU5S,GACpC,OAAOssT,GAAQ,GAAGn3T,OAAOtR,EAAM,KAAKsR,OAAO6K,EAAEyhH,OAC/C,IACI30B,EAAQ1qE,EAAOxP,KAAI,SAAU/e,GAC/B,MAAO,GAAGsB,OAAOtB,EAAG,YACtB,IAAGoX,KAAK,QAMR,OALImX,EAAO3/B,SACT2oT,EAAOhkT,OAAS,GAAG+N,OAAO23F,EAAO,gBAAgB33F,OAAOqsH,EAAQ,eAAersH,OAAOitB,EAAOnX,KAAK,MAAO,qBAEpGmgS,EAAOrnT,aACPqnT,EAAOrpT,GACPwyQ,CACT,GAEF,QCnEWuqG,IAAS,UAqBpB,IApBa,CACXv+H,QAAS,SAAiBwwH,GACxB,MAAwB,UAAjBA,EAAQxmW,QAAsBwmW,EAAQvqD,MAC/C,EACAtsG,QAAS,SAAiB8sF,EAAO+pE,EAASx8F,GACxC,OAAOA,EAASp/P,OAAO,CACrBtR,KAAMktW,EAAQltW,KAAOi7W,IACrB/6W,OAAO,EACPhC,GAAI,CAAC,CACHW,OAAQquW,EAAQruW,OAChB0E,OAAQ2pW,EAAQvqD,UAGtB,EACAu4D,WAAY,SAAoB/3E,EAAO+pE,GACrC,IAAIiO,EAAMjO,EAAQltW,KAAOywW,IACrBlpD,EAAS2lD,EAAQltW,KAAOi7W,IAC5B,MAAO,GAAG3pW,OAAOi2S,EAAQ,cAAcj2S,OAAO6pW,EAAK,OAA6B,WAApBjO,EAAQ9nU,QAAuB,GAAG9zB,OAAOi2S,EAAQ,oBAAsB,GAAGj2S,OAAOi2S,EAAQ,qBAAqBj2S,OAAOokU,IAASvyC,GAAQ,QAAU,GAAG7xR,OAAOi2S,EAAQ,OAAOj2S,OAAO6pW,EAAK,UACnP,GCpBF,SAAS,IAA2Bh4V,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAOlL,IAAI3pN,IAAQ,CACVovO,QAAS,SAAiBwwH,GACxB,YAAyB14U,IAAlB04U,EAAQ5/V,QAAyC,IAAlB4/V,EAAQ5/V,KAChD,EACAk3C,MAAO,SAAe2+O,EAAO+pE,GACvBA,EAAQ5/V,QACV4/V,EAAQ5/V,MAAQ,GAAS4/V,EAAQ5/V,OAAS,GAAc4/V,EAAQ5/V,MAAO,QAAU4/V,EAAQ5/V,MAE7F,EACAqiW,gBAAiB,SAAyBxsE,EAAO+pE,EAAS72J,GACxD,GAAI,IAAcqmC,QAAQwwH,GAAU,CAClC,IACE5wI,EADEC,EAAY,IAA2B2wI,EAAQp7H,QAAQ5tL,OAE3D,IACE,IAAIs9F,EAAQ,WACV,IAAIyoI,EAAO3tD,EAAMp8N,MACb+iC,EAAMozK,EAAQp4H,WAAU,SAAUtxD,GACpC,OAAOA,EAAE3sB,OAASyoU,GAAQ,GAAGn3T,OAAO47V,EAAQltW,KAAM,KAAKsR,OAAO24Q,EAAKrsJ,OACrE,KACa,IAAT36F,GACFozK,EAAQpzK,GAAK/kC,GAAGI,KAAK,CACnBO,OAAQquW,EAAQ5/V,MAChB/J,OAAQ,QAGd,EACA,IAAKg5N,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAC3CmrG,GAEJ,CAAE,MAAOj8G,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACF,CACA,OAAOi1M,CACT,EACAA,QAAS,SAAiB8sF,EAAO+pE,EAASx8F,GACxC,SAAS0qG,EAASn4U,EAAK1/B,IACR,IAAT0/B,GAAcytO,EAASztO,GAAK/kC,IAC9BwyQ,EAASztO,GAAK/kC,GAAGI,KAAK,CACpBO,OAAQquW,EAAQ5/V,MAChB/J,OAAQA,GAGd,CAEA,GAAqB,aAAjB2pW,EAAQxmW,KAAqB,CAC/B,IACEs6N,EADEC,EAAa,IAA2BisI,EAAQp7H,QAAQ5tL,OAE5D,IACE,IAAIm3T,EAAS,WACX,IAAIpxF,EAAOjpD,EAAO9gO,MACdo7W,EAAO5qG,EAASzyL,WAAU,SAAUtxD,GACtC,OAAOA,EAAE3sB,OAASiqR,EAAK5zE,QAAQu6J,MACjC,KACAwK,EAASE,EAAM,WACD,IAAVA,IAIFF,EAHW1qG,EAASzyL,WAAU,SAAUtxD,GACtC,OAAOA,EAAE3sB,OAASiqR,EAAK5zE,QAAQ5yL,IACjC,IACe,OAEnB,EACA,IAAKw9M,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAC9CglU,GAEJ,CAAE,MAAO91U,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACF,KAAO,CACL,IAAIm6W,EAAO7qG,EAASzyL,WAAU,SAAUtxD,GACtC,OAAOA,EAAE3sB,OAASktW,EAAQltW,KAAOywW,GACnC,IACA2K,EAASG,EAAM,QACX,IAAO7+H,QAAQwwH,IAIjBkO,EAHAG,EAAO7qG,EAASzyL,WAAU,SAAUtxD,GAClC,OAAOA,EAAE3sB,OAASktW,EAAQltW,KAAOi7W,GACnC,IACe,QAEnB,CACA,OAAOvqG,CACT,GC7FF,SAAS,IAA2BvtP,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAClL,SAAS,IAAQv0L,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAUzf,IAAI+0W,IAAiB,CACnB9+H,QAAS,SAAiBwwH,GACxB,IAAI97I,EAA2B,WAApB87I,EAAQ9nU,SAAwB8nU,EAAQ/rW,MAAQu4V,IAAgBwT,EAAQ/rW,MAC/Es6W,EAA2C,IAAjCvO,EAAQp7H,QAAQ5tL,MAAMtlD,QAAgBsuW,EAAQp7H,QAAQ5tL,MAAM,GAAG05E,QAAU27N,IAIvF,OAHInoI,IAASqqJ,GACX,IxEoB4C,mGwElBvCrqJ,GAAQqqJ,CACjB,EACAj3T,MAAO,SAAe2+O,EAAO+pE,EAASzD,GAEpC,IAAIiS,EAAU/0C,GAAU8iC,GAQxB,GAPAiS,EAAQ18L,OAAS,GAAS08L,EAAQ18L,QAAU,CAC1Ct4K,KAAMg1W,EAAQ18L,OACd2jI,OAAQuqD,EAAQvqD,QACd,IAAc,IAAc,CAAC,EAAG+4D,EAAQ18L,QAAS,CAAC,EAAG,CACvD2jI,OAAQuqD,EAAQvqD,SAElBm4D,IAA0B5N,EAASwO,GAC/BxvT,GAASu9S,EAAOzqL,UAAYyqL,EAAOzqL,OAAO9gL,IAAMurW,EAAOzqL,OAAO1xK,OAAQ,CACxE,IAEEgvN,EAFEq/I,EAAe,4DACfp/I,EAAY,IAA2B2wI,EAAQruW,QAEnD,IACE,IAAK09N,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIulU,EACAC,EAAOv/I,EAAMp8N,MACjB27W,EAAKvtW,OAAS,GAAsC,QAA/BstW,EAAcC,EAAKvtW,cAAoC,IAAhBstW,EAAyBA,EAAc,IAC9FC,EAAKvtW,OAAOpL,SAASy4W,IACxBE,EAAKvtW,OAAOhQ,KAAKq9W,EAErB,CACF,CAAE,MAAOp2U,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACF,CACA,IAAIjD,EAAMw7V,IAAsBuT,EAAQ/rW,MAAQ+rW,EAAQ/rW,KAAKi0Q,OAAS,QAClEp6C,EAAS,GAAS78N,GAAO,GAAcA,EAAK,QAAU,GAAMA,GAChE+uW,EAAQ/rW,KAAO,CACbi0Q,OAAQ,CACNn7D,MAAO+gB,GAGb,EACA20I,gBAAiB,SAAyBxsE,EAAO+pE,EAAS72J,GACxD,IAUE2qB,EAVE86I,EAAU5O,EAAQltW,KAClBg7N,EAAS2+H,IAAsBuT,EAAQ/rW,OAAS+rW,EAAQ/rW,KAAKi0Q,OAC7D2mG,EAAW,SAAkB/7W,GAC/B,OAAO,SAAU6b,GACf,IAAI6+S,EAAKiM,GAAU9qT,GAEnB,OADA6+S,EAAG5Z,SAAW9gT,EACP06T,CACT,CACF,EACIz5F,EAAa,IAA2BisI,EAAQp7H,QAAQ5tL,OAE5D,IACE,IAAIs9F,EAAQ,WACV,IAAIyoI,EAAOjpD,EAAO9gO,MAClB,IAAK+pR,EAAK4iF,UAAW,MAAO,WAC5B,IAAIppU,EAAS,GAAGnyB,OAAOm3T,GAAQx+C,EAAKrsJ,OAAQ,WACxCo+O,EAAS,GAAG1qW,OAAOwqW,EAAS,KAAKxqW,OAAOmyB,GACxC4uR,EAAYh8G,EAAQ/nM,QAAO,SAAUuN,GACvC,OAAOA,EAAE7b,OAASg8W,CACpB,IACA,GAAyB,IAArB3pD,EAAUzzT,OAAc,CAC1B,IAAIC,EAASm8N,EAAO/gB,MAAMlrL,IAAIgtV,EAAS,GAAGzqW,OAAOmyB,EAAQ,cAAcnyB,OAAO0pN,EAAO/gB,MAAMlrL,IAAIgtV,EAAS,GAAGzqW,OAAOmyB,EAAQ,cAAcnyB,OAAO0pN,EAAO/gB,MAAMlrL,IAAIgtV,EAAS,GAAGzqW,OAAOmyB,EAAQ,eAC3L4yK,EAAQ3iM,QAAQ,IAAc,IAAc,CAC1C1T,KAAMg8W,GACJ9O,EAAQ7kW,KAER,CAAC,EAFc,CACjBnI,MAAO,OACA,CAAC,EAAG,CACXhC,GAAI,CAEJ,CACEW,OAAQA,EACR0E,OAAQ,8EACR21N,OAAO,GACN,CACDr6N,OAAQm8N,EAAO/gB,MACf12M,OAAQ,kCAAkC+N,OAAO0qW,GACjD9iJ,OAAO,MAGb,CACF,EACA,IAAK+H,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MACnCmrG,GAGf,CAAE,MAAOj8G,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACA,OAAOi1M,CACT,EACAA,QAAS,SAAiB8sF,EAAO+pE,EAASx8F,GACxC,IAAI1wQ,EAAOktW,EAAQltW,KACfiqR,EAAOijF,EAAQp7H,QACfrZ,EAAQi4C,EAASn/P,MAAK,SAAUsK,GAClC,OAAOA,EAAE7b,OAASA,EAAOywW,GAC3B,IACI9yO,EAAS39H,EAAO2uW,IAChBpwU,EAAS0rP,EAAK/lO,MAAM51C,QAAO,SAAU6N,GACvC,OAAOA,EAAE0wV,SACX,IAAG99U,KAAI,SAAU5S,GACf,OAAOssT,GAAQ,GAAGn3T,OAAOtR,EAAM,KAAKsR,OAAOm3T,GAAQtsT,EAAEyhH,OAAQ,WAC/D,IACI30B,EAAQ1qE,EAAOxP,KAAI,SAAU/e,GAC/B,MAAO,GAAGsB,OAAOtB,EAAG,YACtB,IAAGoX,KAAK,QACJ7jB,EAAS,GAAG+N,OAAO23F,EAAO,gBAAgB33F,OAAOqsH,EAAQ,eAAersH,OAAOitB,EAAOnX,KAAK,MAAO,aAClG8lV,EAAQruW,QAAU0/B,EAAO3/B,OAAS,EACpC65N,EAAMv6N,GAAGI,KAAK,CACZO,OAAQ0/B,EAAOxP,KAAI,SAAUw4R,GAC3B,MAAO,CACLA,OAAQA,EAEZ,IACAhkT,OAAQA,IAEDg7B,EAAO3/B,OAAS,IACzB65N,EAAMl1N,OAASA,SACRk1N,EAAMv4N,aACNu4N,EAAMv6N,IAEf,IAAIykT,EAASjyC,EAASn/P,MAAK,SAAUsK,GACnC,OAAOA,EAAE7b,OAASA,EAAOi7W,GAC3B,IACIp8W,EAAS86V,IAAsBuT,EAAQ/rW,OAAS+rW,EAAQ/rW,KAAKi0Q,OAMjE,OALIutC,IACGuqD,EAAQruW,OAA0C8jT,EAAOzkT,GAAGI,KAAK,IAAc,IAAc,CAAC,EAAGqkT,EAAOzkT,GAAG,IAAK,CAAC,EAAG,CACvHW,OAAQA,KADW8jT,EAAOzkT,GAAG,GAAGW,OAASA,GAItC6xQ,CACT,GCtJF,IAAIurG,IAAS,oBACTC,IAAQ,mBACR,IAAY,CACdx/H,QAAS,SAAiBwwH,GACxB,MAAwB,aAAjBA,EAAQxmW,MAAuBwmW,EAAQ72V,SAChD,EACAggM,QAAS,SAAiB8sF,EAAO+pE,EAASx8F,GACxC,IAAI1wQ,EAAOktW,EAAQltW,KACfm8W,EAAc,IAAez/H,QAAQwwH,GACrC1nP,EAASxlH,EAAOi8W,IAChBxK,EAAwBvE,EAAQp7H,QAAQ+8H,WAC1C7lW,EAAIyoW,EAAsBzoW,EAC1BC,EAAIwoW,EAAsBxoW,EACxBpK,EAAS,GAAcquW,EAAQ72V,UAAW,SA6B9C,OA5BK8lW,IACHt9W,EAASA,EAAOkwB,KAAI,SAAU9sB,GAC5B,OAAOA,EAAEy5N,QAAQ,GAAGolF,SAAW9gT,EAAO,IAAgBiC,CACxD,KAEFyuQ,EAASpyQ,KAAK,CACZ0B,KAAMwlH,EACNtlH,MAAO,CAAC,EACRhC,GAAI,CAAC,CACHW,OAAQA,EAAOkwB,KAAI,SAAU9sB,GAC3B,OAAOA,EAAEy5N,QAAQ,EACnB,IACAn4N,OAAQ,gCAAmCixB,IAANxrB,EAAkB,eAAesI,OAAO6qW,EAAc,IAAOh5E,EAAO,IAAK,SAAS7xR,OAAOtI,EAAEqtM,QAAQu6J,OAAQ,MAAQ,UAAap8U,IAANvrB,EAAkB,eAAeqI,OAAO6qW,EAAc,IAAOh5E,EAAO,IAAK,SAAS7xR,OAAOrI,EAAEotM,QAAQu6J,OAAQ,MAAQ,IAAM,OAEzR,CACD5wW,KAAMA,EAAOk8W,IACbh8W,MAAO,CAAC,EACRhC,GAAI,CAAC,CACHW,OAAQA,EACR0E,OAAQ,OAAO+N,OAAOk0G,EAAQ,qBAAqBl0G,OAAOk0G,EAAQ,0BAG5DhxF,IAANxrB,GACFozW,IAAQj5E,EAAO+pE,EAASlkW,EAAG,QAAS0nQ,QAE5Bl8O,IAANvrB,GACFmzW,IAAQj5E,EAAO+pE,EAASjkW,EAAG,SAAUynQ,GAEhCA,CACT,GAGF,SAAS0rG,IAAQj5E,EAAO+pE,EAASjjF,EAAM5nP,EAAMg0K,GAC3C,IAAIgmK,EAAgBC,EAChBt8W,EAAOktW,EAAQltW,KACfwlH,EAASxlH,EAAOi8W,IAChB7jU,EAAQp4C,EAAOk8W,IACf1qN,EAAUy4H,EAAKz4H,QACf2qN,EAAc,IAAez/H,QAAQwwH,GACrC3lD,EAASlxG,EAAQ/nM,QAAO,SAAUuN,GACpC,OAAOA,EAAE7b,OAASiqR,EAAK5zE,QAAQ8lK,EAAc,OAAS,SACxD,IAAG,GACCrK,EAAS3uE,EAAM4tE,iBAAiB1uU,GAAMklR,OACtCg1D,EAAYp5E,EAAMosE,kBAAkB/9M,GACpC8qK,EAAYigD,GAAaA,EAAUx8W,IAAI,QACvCy8W,EAAWD,GAAaA,EAAUx8W,IAAI,WACtC22M,EAAQylK,EAAmB3qN,IAAY,GAAIgrN,EAAW,GAAK,IAAMA,EAAW,IAAM,GAA5D,GACtBpyJ,EAAS,GAAG94M,OAAOk0G,EAAQ,YAAYl0G,OAAOkgJ,GAC9CtwE,EAAS,GAAG5vE,OAAOolM,GAAMplM,OAAO8mC,EAAO,KAAK9mC,OAAOkgJ,EAAS,OAAOlgJ,OAAO6qW,EAAc,GAAG7qW,OAAOwgW,GAAU,QAAQxgW,OAAO84M,EAAQ,MACnIqyJ,EAASN,GAAgBI,EAAwC,QAAdjgD,EAAsB,SAAyB,WAAdA,EAAyB,YAA4B,QAAdA,EAAsB,SAAW,YAAvH,YACrC/hR,EAAO4hU,EAAiC,QAAd7/C,EAAsB,KAAKhrT,OAAwD,QAAhD+qW,EAAiBE,EAAUx8W,IAAI,mBAA4C,IAAnBs8W,EAA4BA,EAAiB,GAAmB,WAAd//C,EAAyB,KAAKhrT,OAAyD,QAAjDgrW,EAAkBC,EAAUx8W,IAAI,mBAA6C,IAApBu8W,EAA6BA,EAAkB,GAAK,GAArS,GACrB/4W,EAAS,GAAG+N,OAAOmrW,EAAO,KAAKnrW,OAAO84M,EAAQ,MAAM94M,OAAO4vE,GAAQ5vE,OAAOipC,EAAK,KACnFgtQ,EAAOrpT,GAAGI,KAAK,CACbO,OAAQ,CACN0oT,OAAQnvQ,GAEV70C,OAAQ44W,EAAc54W,EAAS,cAAc+N,OAAO/N,EAAQ,SAAS+N,OAAOwgW,EAAQ,MAExF,CCvEA,IAAI,IAAS,eACT,IAAQ,cACR,IAAO,CACTp1H,QAAS,SAAiBwwH,GACxB,MAAwB,aAAjBA,EAAQxmW,MAAuBwmW,EAAQjrT,IAChD,EACAo0J,QAAS,SAAiB8sF,EAAO+pE,EAASx8F,GACxC,IAAI1wQ,EAAOktW,EAAQltW,KACfm8W,EAAc,IAAez/H,QAAQwwH,GACrC90T,EAAQp4C,EAAO,IACfyxW,EAAwBvE,EAAQp7H,QAAQ+8H,WAC1C7lW,EAAIyoW,EAAsBzoW,EAC1BC,EAAIwoW,EAAsBxoW,EACxBq9N,EAAK,GAAY68D,EAAMgc,UAAU,KACjC54E,EAAK,GAAY48D,EAAMgc,UAAU,KACjCtgT,EAAS,GAAcquW,EAAQjrT,KAAM,SA4BzC,OA3BKk6T,IACHt9W,EAASA,EAAOkwB,KAAI,SAAU9sB,GAC5B,OAAOA,EAAE6+S,SAAW9gT,EAAO,IAAgBiC,CAC7C,KAEFyuQ,EAASpyQ,KAAK,CACZ0B,KAAMA,EAAO,IACb9B,GAAI,CAAC,CACHW,OAAQA,EACR0E,OAAS44W,EAA2C,IAAM,CAAC71I,EAAK,aAAah1N,OAAOg1N,EAAI,cAAgB,GAAIC,EAAK,aAAaj1N,OAAOi1N,EAAI,cAAgB,IAAIj4N,QAAO,SAAUm/N,GAC5K,OAAOA,CACT,IAAGrmN,KAAK,MAAQ,IAFO,8BAIxB,CACDpnB,KAAMo4C,EACNl6C,GAAI,CAAC,CACHW,OAAQA,EACRq6N,OAAO,EACP31N,OAAQ,+DAGFixB,IAANxrB,GACF,IAAQm6R,EAAO+pE,EAASlkW,EAAG,QAAS0nQ,QAE5Bl8O,IAANvrB,GACF,IAAQk6R,EAAO+pE,EAASjkW,EAAG,SAAUynQ,GAEhCA,CACT,GAGF,SAAS,IAAQyyB,EAAO+pE,EAASjjF,EAAM5nP,EAAMg0K,GAC3C,IAAIgmK,EAAgBC,EAChBt8W,EAAOktW,EAAQltW,KACfwxJ,EAAUy4H,EAAKz4H,QACf2qN,EAAc,IAAez/H,QAAQwwH,GACrC3lD,EAASlxG,EAAQ/nM,QAAO,SAAUuN,GACpC,OAAOA,EAAE7b,OAASiqR,EAAK5zE,QAAQ8lK,EAAc,OAAS,SACxD,IAAG,GACCrK,EAAS3uE,EAAM4tE,iBAAiB1uU,GAAMklR,OACtCg1D,EAAYp5E,EAAMosE,kBAAkB/9M,GACpC8qK,EAAYigD,GAAaA,EAAUx8W,IAAI,QACvCwgC,EAAO47U,EAAc,IAAOh5E,EAAO3xI,GAAW+1J,EAAOvnT,KACrDo4C,EAAQp4C,EAAO,IACfwlH,EAAS,GAAGl0G,OAAOtR,GAAMsR,OAAO,IAAQ,KAAKA,OAAOkgJ,GACpDkrN,EAAUP,GAAgBI,EAAyC,QAAdjgD,EAAsB,UAA0B,WAAdA,EAAyB,aAA6B,QAAdA,EAAsB,UAAY,aAA3H,aACtC/hR,EAAO4hU,EAAiC,QAAd7/C,EAAsB,KAAKhrT,OAAwD,QAAhD+qW,EAAiBE,EAAUx8W,IAAI,mBAA4C,IAAnBs8W,EAA4BA,EAAiB,GAAmB,WAAd//C,EAAyB,KAAKhrT,OAAyD,QAAjDgrW,EAAkBC,EAAUx8W,IAAI,mBAA6C,IAApBu8W,EAA6BA,EAAkB,GAAK,GAArS,GACrB/4W,EAAS,GAAG+N,OAAOorW,EAAQ,KAAKprW,OAAOivB,EAAM,MAAMjvB,OAAOk0G,EAAQ,MAAMl0G,OAAO8mC,GAAO9mC,OAAOipC,EAAK,KACtGgtQ,EAAOrpT,GAAGI,KAAK,CACbO,OAAQ,CACN0oT,OAAQnvQ,GAEV70C,OAAQ44W,EAAc54W,EAAS,cAAc+N,OAAO/N,EAAQ,SAAS+N,OAAOwgW,EAAQ,MAExF,CC3EA,SAAS,IAA2B3uV,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAiB3K,IAAIw7I,IAAQ,SACRhC,IAAQ,SACRkM,IAAS,UAET7M,IAAuB,qBAEvB3C,IAAqB,CAAC,IAAO,IAAU,IAAS,IAE3D1iI,IAAQ,IHiIR,ID5DA,IE/CA,ICEA,ICxBiD,KAS1C,SAASirG,IAASvyC,GACvB,IAIInjS,GAJOrB,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,CAC3EyxV,QAAQ,IAEIA,OACI,GAAYjtD,EAAMnjS,MAAQmjS,EAAMnjS,KAChD48W,EAdN,SAAuBz5E,GAErB,IADA,IAAIxzR,EAASwzR,EAAMxzR,OACZA,IACDktW,IAAaltW,IACjBA,EAASA,EAAOA,OAElB,OAAOA,CACT,CAOmBmtW,CAAc35E,GAC/B,GAAIy5E,EAAY,CACd,IAEEtgJ,EAFEm8F,EAAQmkD,EAAWnkD,MACnBl8F,EAAY,IAA2BmwG,KAE3C,IACE,IAAKnwG,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIm7G,EAAU8qE,EAAMp8N,MAChBu4T,EAAMjnK,KACRxxJ,GAAQ,eAAesR,OAAOkgJ,EAAS,gBAAgBlgJ,OAAO,GAAYsrW,EAAWtN,QAAQ99M,IAAW,MAE5G,CACF,CAAE,MAAOjsH,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACF,CACA,OAAOpB,CACT,CACO,SAAS+8W,IAAoB55E,GAClC,IAAIyvE,EACJ,OAAOroI,GAA6D,QAAvDqoI,EAAwBzvE,EAAM5lO,UAAUi/R,iBAAiD,IAA1BoW,EAAmCA,EAAwB,CAAC,GAAGljV,QAAO,SAAUstV,EAAY9P,GACtK,OAAO8P,GAAc9P,EAAQp7H,QAAQi9H,cACvC,IAAG,EACL,CAGO,SAAS+L,IAA0B5N,EAASzD,IAC7C,GAASA,EAAOzqL,SAAYyqL,EAAOzqL,OAAO9gL,WAAWgvW,EAAQruW,QAC7D,GAAS4qW,EAAOzqL,SAAYyqL,EAAOzqL,OAAO1xK,cAAc4/V,EAAQ5/V,OAChE,GAASm8V,EAAOzqL,SAAYyqL,EAAOzqL,OAAO2jI,eAAeuqD,EAAQvqD,MACvE,CCxEA,SAASqvD,IAAQvzT,GACf,IAAIz+C,EAAO,GACX,MAAkB,eAAdy+C,EAAK/3C,KACA,CAAC+3C,EAAKz+C,MAEG,YAAdy+C,EAAK/3C,KACA,CAAC+3C,EAAKv+C,QAEG,qBAAdu+C,EAAK/3C,OACP1G,EAAK1B,KAAKc,MAAMY,GAAM,QAAmBgyW,IAAQvzT,EAAK/b,UACtD1iC,EAAK1B,KAAKc,MAAMY,GAAM,QAAmBgyW,IAAQvzT,EAAKs6J,aAEjD/4M,EACT,CACA,SAASi9W,IAAgBx+T,GACvB,MAAyB,qBAArBA,EAAK/b,OAAOh8B,KACPu2W,IAAgBx+T,EAAK/b,QAEF,UAArB+b,EAAK/b,OAAO1iC,IACrB,CACO,SAASk9W,IAAmB/3D,GACjC,IAAIvJ,EAAM,GAAgBuJ,GACtBg4D,EAAa,IAAIz4U,IAOrB,OALAk3Q,EAAI1/E,OAAM,SAAUz9K,GACA,qBAAdA,EAAK/3C,MAA+Bu2W,IAAgBx+T,IACtD0+T,EAAW5tW,IAAIyiW,IAAQvzT,GAAM15B,MAAM,GAAGqC,KAAK,KAE/C,IACO+1V,CACT,CC1BA,SAAS,IAAa17H,GAAW,IAAIC,EACrC,WAAuC,GAAuB,oBAAZ1kH,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFxqD,QAAQ10E,UAAU03C,QAAQh2C,KAAKq9H,QAAQC,UAAUtqD,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO1wE,KAAK,OAAO,CAAO,CAAE,CADvQ,GAA6B,OAAO,WAAkC,IAAsC0O,EAAlCgxO,GAAQ,QAAgBF,GAAkB,GAAIC,EAA2B,CAAE,IAAIE,GAAY,QAAgB7jP,MAAM8E,YAAa8N,EAASqsH,QAAQC,UAAU0kH,EAAOhjP,UAAWijP,EAAY,MAASjxO,EAASgxO,EAAMviP,MAAMrB,KAAMY,WAAc,OAAO,QAA2BZ,KAAM4S,EAAS,CAAG,CAMja,IAAIysW,IAA0B,SAAUxP,IAC7C,QAAUwP,EAAYxP,GACtB,IAAInuW,EAAS,IAAa29W,GAC1B,SAASA,EAAWztW,EAAQwzR,EAAO70R,GACjC,IAAI9P,EASJ,OARA,QAAgBT,KAAMq/W,IACtB5+W,EAAQiB,EAAOE,KAAK5B,KAAM4R,IACpBwzR,MAAQA,EACd3kS,EAAM8P,OAASA,EAGf9P,EAAMivO,KAAO,IAAWjvO,EAAM2kS,MAAO3kS,EAAM8P,QAAQ,QAAuB9P,IAC1EA,EAAM6+W,iBAAmBH,IAAmB1+W,EAAMivO,MAC3CjvO,CACT,CA8BA,OA7BA,QAAa4+W,EAAY,CAAC,CACxBx+U,IAAK,QACL1+B,MAAO,WACL,OAAO,IAAIk9W,EAAW,KAAMr/W,KAAKolS,MAAOwjC,GAAU5oU,KAAKuQ,QACzD,GACC,CACDswB,IAAK,kBACL1+B,MAAO,WACL,OAAOnC,KAAKs/W,gBACd,GACC,CACDz+U,IAAK,iBACL1+B,MAAO,WACL,OAAO,IAAIwkC,GACb,GACC,CACD9F,IAAK,WACL1+B,MAAO,WACL,MAAO,CACLwG,KAAM,SACN+mO,KAAM1vO,KAAK0vO,KAEf,GACC,CACD7uM,IAAK,OACL1+B,MAAO,WACL,MAAO,UAAUoR,OAAOvT,KAAK0vO,KAC/B,KAEK2vI,CACT,CA7CqC,CA6CnC/P,KCvDF,SAAS,IAAQ3qU,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CACzf,SAAS,IAA2B0c,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAwE3K,SAASo8I,IAAwBlwE,EAAOinE,EAAMkT,GACnD,IAIIpQ,EAJAh3I,EAAQv3N,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,QAC5EqB,EAAO,GAASoqW,GAAQA,EAAOA,EAAK1uN,MACpCi1N,EAAQloC,GAAQzoU,GAChBimI,EAAQ,GAAY0qO,EAAQ8B,KAEhC,IACEvF,EAAU/pE,EAAMo6E,sBAAsB5M,EAAO3wW,EAC/C,CAAE,MAAOiC,KAEP,MAAO,KAAKqP,OAAOq/V,EACrB,CACA,GAAIzD,EAAQp7H,QAAQknG,SAAU,CAC5B,IAAInrU,EAAQyvW,QAAuCA,EAASn6E,EAAM5lO,UAAU95C,KAAKi2N,IAC7E8jI,EAAStQ,EAAQp7H,QAAQknG,SAAS1kU,QAClCzG,EAAM8B,OACR6tW,EAAOC,iBAAiB5vW,GAExBA,EAAM8B,OAAS6tW,CAEnB,CACA,IAAIpsW,EAAK87V,EAAQp7H,QAAQi9H,eAAiB,qBAAuB,mBAC7D3pU,EAA8B,WAApB8nU,EAAQ9nU,QAAuB,IAAM,KAAK9zB,OAAO,GAAY47V,EAAQ9nU,SAAU,KACzF/hC,EAAO,GAAGiO,OAAOF,GAAIE,OAAO20H,EAAO,MAAM30H,OAAO4kN,GAAO5kN,OAAO8zB,GAC9DxmC,EAAS,eAAe0S,OAAO20H,EAAO,MAC1C,OAAsB,IAAfmkO,EAAK9rS,MAAkB,GAAGhtD,OAAO1S,EAAQ,QAAQ0S,OAAOjO,GAAQ,IAAIiO,OAAO1S,EAAQ,QAAQ0S,OAAOjO,EAC3G,CACO,SAASq6W,IAAqBv6E,EAAOnjS,EAAMoqN,GAChD,IAGI8iJ,EAHAyD,EAAQloC,GAAQzoU,GAChB+pV,EAAW3/H,EAAiB,SAC5BxsF,EAAQwsF,EAAc,MAE1B,IACE8iJ,EAAU/pE,EAAMo6E,sBAAsB5M,EAAO3wW,EAC/C,CAAE,MAAOiC,KAEP,OAAO0uW,CACT,CACA,GAAK5mB,GAAansN,GAKX,GAAImsN,IAAansN,EAAO,CAC7B,IAAI67N,EAAYyT,EAAQp7H,QAAQ5tL,MAAM51C,QAAO,SAAU6N,GACrD,OAAOA,EAAEq1I,UAAYu4L,CACvB,KACK0P,EAAU76V,QAAU66V,EAAU76V,OAAS,GAC1Cg/H,EAAQsvO,EAAQp7H,QAAQ5tL,MAAM,GAAG05E,MACjC,KAAO67N,EAAU76V,OAAiB,YAAR,OAAuB,YAAY0S,OAAO,GAAYy4U,GAAW,kCAAkCz4U,OAAO,GAAY84M,EAAO1uE,OAAQ,MAAQ,kBAAoBpqI,OAAO,GAAYssH,GAAQ,OAEtNA,EAAQ67N,EAAU,GAAG77N,KAEzB,OAdEA,EAAQsvO,EAAQp7H,QAAQ5tL,MAAM,GAAG05E,MAC7BsvO,EAAQp7H,QAAQ5tL,MAAMtlD,OAAS,GACjC,IAAK,uFAAyF,kBAAoB0S,OAAO,GAAYssH,GAAQ,MAajJ,MAAO,GAAGtsH,OAAO47V,EAAQltW,KAAM,KAAKsR,OAAO,GAAY63T,GAAmBvrM,IAAS,IACrF,CC7HO,SAAS,IAAWulK,EAAOw6E,EAAUl/T,GAC1C,OAAOkqR,GAAYg1C,GAAU,SAAU3+U,GACrC,OAAI,GAASA,GACJA,E3EHN,SAA8BA,GACnC,OAAOA,aAA6C,EAASA,EAAiB,KAChF,C2EEe4+U,CAAqB5+U,GACvBq0U,IAAwBlwE,EAAOnkQ,EAAWyf,GAG1C+8R,IAAsBx8S,EAEjC,GACF,CChBA,IAAI,IAAY,CAAC,UAAW,SAAU,QAAS,YAAa,QAAS,UACnE,IAAa,CAAC,aACd,IAAa,CAAC,QACd,IAAa,CAAC,QAChB,SAAS,IAA2B7b,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAClL,SAAS,IAAQv0L,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAqBzf,SAASo3W,IAAcjsG,EAAMynE,EAAMkR,EAAQuzB,GACzC,IAAIC,EAAcC,EAASC,EACvB/+W,EAAI+V,EACyB,QAAhC8oW,EAAensG,EAAKl5C,cAAqC,IAAjBqlJ,IAAyCnsG,EAAKl5C,OAAS,CAAC,GACxD,QAAxCslJ,GAAW9+W,EAAK0yQ,EAAKl5C,QAAQ2gH,UAA+B,IAAZ2kC,IAA+B9+W,EAAGm6U,GAAQ,CAAC,GAC1C,QAAjD4kC,GAAahpW,EAAK28P,EAAKl5C,OAAO2gH,IAAO91U,cAAkC,IAAd06W,IAAmChpW,EAAG1R,OAAS,CAAC,GAE1GquQ,EAAKl5C,OAAO2gH,GAAM91U,OAAOgnV,GAAUuzB,CACrC,CACO,SAASI,IAAaC,EAAUvmE,EAAMrtM,GAC3C,IAAI0gD,EAAMtsJ,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,CAC5EmuL,QAAQ,GAENsxL,EAAoBD,EAAS5S,UAC/B8S,EAAUD,EAAkBC,QAC5BphH,EAASmhH,EAAkBnhH,OAC3BpmP,EAAQunW,EAAkBvnW,MAC1Bi2U,EAAYsxB,EAAkBtxB,UAC9Bh9R,EAAQsuT,EAAkBtuT,MAC1B0rM,EAAS4iH,EAAkB5iH,OAC3BoW,GAAO,OAAyBwsG,EAAmB,KACrD,IAAIC,EAAJ,CAGA,IAAK,IAAIp7W,KAAQ2uQ,EAAM,CACrB,IAAI0sG,EAAWhzB,IAAmBroV,GAC9BimH,EAAY0oJ,EAAK3uQ,GACrB,GAAIq7W,GAAYA,IAAa1mE,GAAqB,SAAb0mE,SAE5B1sG,EAAK3uQ,QACP,GAAImoV,IAAuBliO,GAAY,CAE5C,IAAIlpF,EAAYkpF,EAAUlpF,UACxBu+U,GAAmB,OAAyBr1P,EAAW,KACrDs1P,EAAa,GAAMx+U,GACnBy+U,EAAYn0B,IAA4BrnV,GAC5C,GAAIw7W,EAAW,CACb,IAAIl0B,EAASk0B,EAAUl0B,OACrBlR,EAAOolC,EAAUplC,KAGfykC,EAAQ,GAAGxsW,QAAO,QAAmBktW,EAAWzvV,KAAI,SAAU7L,GAChE,IAAI7f,EAAO6f,EAAE7f,KACXq7W,GAAoB,OAAyBx7V,EAAG,KAClD,OAAO,IAAc,CACnB7f,KAAM,IAAW,KAAMA,IACtBq7W,EACL,KAAK,CAACH,IACNV,IAAcjsG,EAAMynE,EAAMkR,EAAQuzB,UAC3BlsG,EAAK3uQ,EACd,MAAO,GAAkB,OAAdw7W,EAAoB,CAE7B,IAAIr6D,EAAY,CACdmD,OAAQi3D,EAAWzvV,KAAI,SAAU7L,GAC/B,IAAI7f,EAAO6f,EAAE7f,KACXq7W,GAAoB,OAAyBx7V,EAAG,KAClD,MAAO,GAAG5R,OAAO,IAAW,KAAMjO,GAAO,OAAOiO,OAAOugU,IAA4B6sC,GAAoB,MACzG,IAAGt3V,KAAK,IAAMyqT,IAA4B0sC,IAE5C3sG,EAAK3uQ,GAAQmhT,CACf,CACF,MAAO,GAAI+sB,IAAYjoN,GAAY,CACjC,IAAIy1P,EAAar0B,IAA4BrnV,GAC7C,GAAI07W,EAAY,CACd,IAAIC,EAAUD,EAAWp0B,OAEzBszB,IAAcjsG,EADJ+sG,EAAWtlC,KACMulC,EAAS11P,UAC7B0oJ,EAAK3uQ,EACd,CACF,CAGI,GAAS,CAAC,aAAc,iBAAkBA,IAAwB,OAAf2uQ,EAAK3uQ,WACnD2uQ,EAAK3uQ,EAEhB,CACA,GAAa,SAAT20S,EAAiB,CACnB,IAAKhmC,EAAKhnF,KACR,OAGF,GAAIgnF,EAAKl5C,OAAQ,CAEf,IAAI9tC,EAAOgnF,EAAKl5C,OAAO9tC,KACvBgnF,EAAKl5C,OAAS,IAAc,CAAC,EAAG9tC,EAAO,CACrCA,KAAMA,GACJ,CAAC,GACD49I,GAAQ52D,EAAKl5C,gBACRk5C,EAAKl5C,MAEhB,CACA,OAAO,IAAc,IAAc,CACjC7hN,MAAOA,EACPomP,OAAQA,GACP2U,GAAO,CAAC,EAAG,CACZt5N,QAAQ,EACRw5N,QAAQ,EACR37M,MAAM,EAGN87M,UAAW,EACXD,UAAW,EACXzyD,OAAO,EACPi8C,OAAQ8tE,GAAgB9tE,EAAQ,IAEpC,CAEE,GAAKvwG,EAAI6hC,SAAUqxL,EAASU,cAA5B,CAIA,QAAkBrqV,IAAds4T,EAAyB,CAC3B,IAAIgyB,EACArxI,EAAOq/G,EAC2B,QAAjCgyB,EAAgBltG,EAAKl5C,cAAsC,IAAlBomJ,GAAuE,QAA1CA,EAAgBA,EAAchtG,cAAsC,IAAlBgtG,GAA4BA,EAAcv7W,QAAU4tU,IAAYv/D,EAAKl5C,OAAOo5C,OAAOvuQ,OAAOqb,QACrN6uN,EAAOt+K,GAAW29R,EAAW,cAAel7E,EAAKl5C,OAAOo5C,OAAOvuQ,OAAOqb,KAAK2oS,SAE7Es2D,IAAcjsG,EAAM,SAAU,OAAQ,CACpC21C,OAAQ95E,GAEZ,CAKA,GAJwB,OAApBmkC,EAAKivD,mBACAjvD,EAAKivD,WAGVjvD,EAAKl5C,OAAQ,CACf,IACE4D,EADEC,EAAY,IAA2B8uH,KAE3C,IACE,IAAK9uH,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAI0oU,EAASziJ,EAAMp8N,MACdi+W,EAASa,YAAYD,WACjBntG,EAAKl5C,OAAOqmJ,EAEvB,CACF,CAAE,MAAOx5U,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACIonU,GAAQ52D,EAAKl5C,gBACRk5C,EAAKl5C,MAEhB,CACA,IAAIumJ,EA3JR,SAAuBnvT,EAAOy6C,GAC5B,GAAKz6C,EAGL,OAAI,GAAQA,KAAWohR,IAAOphR,GACrBA,EAAM/gC,KAAI,SAAU4lT,GACzB,OAAO0T,IAAa1T,EAAUpqO,EAChC,IAAGnjF,KAAK,MAEH0oC,CACT,CAiJsBovT,CAAcpvT,EAAOy6C,GACvC,OAAO,IAAc,IAAc,IAAc,IAAc,CAC7D1zF,MAAOA,EACPomP,OAAQA,EACRryE,MAAM,GACLq0L,EAAc,CACfnvT,MAAOmvT,GACL,CAAC,GAAIrtG,IAAuB,IAAhBrnK,EAAOp0C,KAAiB,CACtCA,MAAM,GACJ,CAAC,GAAI,CAAC,EAAG,CACXqlM,OAAQ8tE,GAAgB9tE,EAAQ,IA5ClC,CAvFF,CAsIF,CAKO,SAAS2jH,IAAoBh8E,GAClC,IAGEniE,EAHE8gG,EAAO3+B,EAAM5lO,UAAUukQ,KACvBzrH,EAAU,GACV4qB,EAAa,IAA2B6sG,KAE5C,IACE,IAAK7sG,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,CACrD,IAAIm7G,EAAUwvE,EAAO9gO,MACrB,GAAI4hU,EAAKtwK,GAAU,CACjB,IACEwzE,EADEC,EAAa,IAA2B68F,EAAKtwK,IAEjD,IACE,IAAKyzE,EAAWppN,MAAOmpN,EAASC,EAAWt4M,KAAK0pB,MAAO,CACrD,IAAIu7N,EAAO5sC,EAAO9kO,MAClB,IAAK0xQ,EAAK7xQ,IAAI,aAAe6xQ,EAAK7xQ,IAAI,aAAc,CAElD,IAAIouU,EAAuB,MAAZ38K,EAAkB,SAAW,QACxCjuJ,EAAS4/R,EAAM4tE,iBAAiB5iC,GAAU5mB,OAC1C4mB,IAAa5qU,GACf8yM,EAAQ/3M,KAAK,CACX0B,KAAMmuU,EACN5qU,OAAQA,GAGd,CACF,CACF,CAAE,MAAOgiC,GACP0/L,EAAWhjO,EAAEsjC,EACf,CAAE,QACA0/L,EAAW7jO,GACb,CACF,CACF,CACF,CAAE,MAAOmkC,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACA,OAAOi1M,CACT,CCxOA,SAAS,IAA2BlzL,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAMlL,SAASmoJ,IAA6BC,EAAa90Q,EAAQinD,EAASyrG,GAElE,OAAO1nP,OAAO89B,OAAOj0C,MAAM,KAAM,CAAC,CAAC,GAAGkS,QAAO,QAAmB+tW,EAAYtwV,KAAI,SAAUuwV,GACxF,GAAmB,eAAfA,EAA6B,CAC/B,IAMEhjJ,EANEijJ,EAAsB,MAAZ/tN,EAAkB,SAAW,OACvCguN,EAAgBj1Q,EAAmB,MAAZinD,EAAkB,aAAe,aAAe,CAAC,EACxEiuN,EAAgBl1Q,EAAmB,MAAZinD,EAAkB,UAAY,cAAgB,CAAC,EAEtEkuN,EAA8B,CAAC,EAC/BnjJ,EAAY,IAFJ,IAAI73L,IAAI,GAAGpzB,QAAO,QAAmB,GAAKkuW,KAAiB,QAAmB,GAAKC,MAE9ClhV,UAEjD,IACE,IAAKg+L,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIpzC,EAAOq5N,EAAMp8N,MACjBw/W,EAA4Bz8W,GAAQ,CAElCskT,OAAQ,GAAGj2S,OAAO2rP,EAAe,OAAG,UAAW3rP,OAAOiuW,EAAS,QAASjuW,OAAOwgU,IAAoB0tC,EAAcv8W,IAAQ,OAAOqO,OAAOwgU,IAAoB2tC,EAAcx8W,KAE7K,CACF,CAAE,MAAOsiC,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACA,OAAOs+W,CACT,CACA,OAAOn1Q,EAAO+0Q,EAChB,MACF,CAeO,SAASK,IAAmBC,EAAiBr1Q,GAClD,IAEEy2H,EAFE6+I,EAAU,CAAC,CAAC,GACZ5+I,EAAa,IAA2B2+I,GAE5C,IACE,IAAK3+I,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,CACrD,IAAIypU,EAGAj2W,EAAsD,QAA7Ci2W,EAAqBv1Q,EAFjBy2H,EAAO9gO,cAEiE,IAAvB4/W,OAAgC,EAASA,EAAmBj2W,MAC9H,GAAIA,EAAO,CAET,IACEm7N,EADEC,EAAa,IADjBp7N,EAAQ,GAAMA,IAGd,IACE,IAAKo7N,EAAWppN,MAAOmpN,EAASC,EAAWt4M,KAAK0pB,MAAO,CACrD,IAAIx6B,EAAImpN,EAAO9kO,MACf2/W,EAAQvhX,KAAKisG,EAAO1gG,MAAMgS,GAC5B,CACF,CAAE,MAAO0pB,GACP0/L,EAAWhjO,EAAEsjC,EACf,CAAE,QACA0/L,EAAW7jO,GACb,CACF,CACF,CACF,CAAE,MAAOmkC,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACA,OAAOmU,OAAO89B,OAAOj0C,MAAM,KAAMygX,EACnC,CACO,SAASE,IAAchnK,EAAUu5H,EAAkBzoU,GACxD,IAAIm2W,EAAcrhX,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnF6zU,EAAcD,IAAex5H,EAAUlvM,EAAOyoU,GAClD,QAAoB99S,IAAhBg+S,EACF,MAAO,CACLytC,WAAY,QACZC,YAAa1tC,GAGjB,IAAK,IAAI9zU,EAAK,EAAGs3C,EAAO,CAAC,mBAAoB,eAAgB,mBAAoBt3C,EAAKs3C,EAAKp3C,OAAQF,IAAM,CACvG,IAAIyhX,EACAF,EAAajqU,EAAKt3C,GACtB,QAAoJ81B,KAAzF,QAArD2rV,EAAwBH,EAAYC,UAAmD,IAA1BE,OAAmC,EAASA,EAAsBpnK,IACnI,MAAO,CACLknK,WAAYA,EACZC,YAAaF,EAAYC,GAAYlnK,GAG3C,CACA,MAAO,CAAC,CACV,CC9FO,IAAIqnK,IAAY,CACrBvpW,MAAO,SAAe+4C,GACpB,IAAIuzO,EAAQvzO,EAAKuzO,MACf3xI,EAAU5hG,EAAK4hG,QACjB,OAAO2xI,EAAMgc,UAAU3tJ,EACzB,EACAz/G,OAAQ,SAAgBgqB,GAEtB,OADcA,EAAMhqB,MAEtB,EACAuvK,WAAY,SAAoB1kJ,GAE9B,OADkBA,EAAM0kJ,UAE1B,EACA12B,KAAM,SAAcxsF,GAClB,IAAIiiR,EACAv+B,EAAkB1jP,EAAM0jP,gBAC1BlwE,EAAOxzK,EAAMwzK,KACb0qD,EAAYl+N,EAAMk+N,UACpB,OAAoC,QAA5B+jD,EAAazuG,EAAKhnF,YAAiC,IAAfy1L,EAAwBA,EAgGjE,SAAqB/jD,EAAWqY,GACrC,OAAQgK,IAAkBriB,IAAcilB,IAAW5M,KAAc7E,IAAU6E,aAA2C,EAASA,EAASzqH,OAAS+lH,IAAS0E,aAA2C,EAASA,EAASzqH,IACzN,CAlGqFo2J,CAAYhkD,EAAWwlB,EAC1G,EACA7iB,UAAW,SAAmB1sN,GAG5B,OA8FJ,SAAoB4wL,EAAO3xI,GACzB,IAAI+uN,EAA0B,MAAZ/uN,EAAkB,IAAM,IAC1C,GAAI2xI,EAAMosE,kBAAkBgR,GAC1B,OAAOp9E,EAAMgc,UAAUohE,GAEzB,MACF,CApGWC,CAFKjuQ,EAAM4wL,MACN5wL,EAAMi/C,QAEpB,EACAqvK,WAAY,SAAoBjqP,GAC9B,IAAIg7L,EAAOh7L,EAAMg7L,KACf6xD,EAAa7sP,EAAM6sP,WACnBxmE,EAASrmL,EAAMqmL,OACfzrG,EAAU56E,EAAM46E,QAClB,OAAOogH,EAAKivD,YAAc4/C,IAAkBh9C,EAAYxmE,EAAQzrG,EAClE,EACAiyK,WAAY,SAAoB5xL,GAE9B,OADkBA,EAAM4xL,UAE1B,EACA3C,cAAe,SAAuBroL,GACpC,IAAIm5H,EAAOn5H,EAAMm5H,KACf6xD,EAAahrL,EAAMgrL,WACnBxmE,EAASxkH,EAAMwkH,OACfzrG,EAAU/Y,EAAM+Y,QAClB,OAAOogH,EAAKkvD,eAAiB4/C,IAAqBj9C,EAAYxmE,EAAQzrG,EACxE,EACAq6L,WAAY,SAAoB80B,GAC9B,IAAIC,EACAhvG,EAAO+uG,EAAM/uG,KACfkwE,EAAkB6+B,EAAM7+B,gBACxBtwL,EAAUmvN,EAAMnvN,QAClB,OAAgD,QAAxCovN,EAAmBhvG,EAAKi6E,kBAA6C,IAArB+0B,EAA8BA,EA8KnF,SAA2Bl6W,EAAM8qJ,GACtC,GAAgB,MAAZA,GAAmB,GAAS,CAAC,eAAgB,YAAa9qJ,GAC5D,OAAO,EAET,MACF,CAnL6Gm6W,CAAkB/+B,EAAgBp7U,KAAM8qJ,EACnJ,EACA4yK,aAAc,SAAsB08C,GAClC,IAAIC,EACAnvG,EAAOkvG,EAAOlvG,KAChBkwE,EAAkBg/B,EAAOh/B,gBACzBxlB,EAAYwkD,EAAOxkD,UACrB,OAAoD,QAA5CykD,EAAqBnvG,EAAKwyD,oBAAiD,IAAvB28C,EAAgCA,EA6KzF,SAA6Br6W,EAAM41T,EAAW0kD,EAAa1wW,GAEhE,GAAI0wW,IAAgB90T,GAAS57C,IAAkB,YAAT5J,GAA+B,YAATA,EAC1D,MAAkB,QAAd41T,GAAqC,WAAdA,GAClB,SAIX,MACF,CAtLqH2kD,CAAoBn/B,EAAgBp7U,KAAM41T,EAAWilB,IAAWO,MAAsBA,EAAgB9I,SAAUuI,IAAWO,GAAmBA,EAAgBxxU,UAAOkkB,EACxR,EAEAyoO,OAAQ,SAAgBikH,GAEtB,OADcA,EAAOjkH,MAEvB,EACA1O,UAAW,SAAmB4yH,GAC5B,IAAIC,EACA5vN,EAAU2vN,EAAO3vN,QACnB2xI,EAAQg+E,EAAOh+E,MACfvxB,EAAOuvG,EAAOvvG,KACdkwE,EAAkBq/B,EAAOr/B,gBACzBxlB,EAAY6kD,EAAO7kD,UACjB6R,EAAuB,MAAZ38K,EAAkB,QAAsB,MAAZA,EAAkB,cAAWh9H,EACpE6N,EAAO8rS,EAAWhrC,EAAM4tE,iBAAiB5iC,QAAY35S,EACzD,OAA8C,QAAtC4sV,EAAkBxvG,EAAKrjB,iBAA2C,IAApB6yH,EAA6BA,EA0KhF,SAA0BC,GAC/B,IAAIv/B,EAAkBu/B,EAAOv/B,gBAC3BxlB,EAAY+kD,EAAO/kD,UACnBj6R,EAAOg/U,EAAOh/U,KACdkoM,EAAO82I,EAAO9iV,OAChB,IAAKgsM,IAASo0G,IAAkBriB,IAA4B,QAAdA,EAAqB,CACjE,GAAIilB,IAAWO,GAAkB,CAC/B,IAAI8B,EACJ,GAAI9T,IAAUgS,EAAgB53H,KAE5B,MAAO,CACLq9F,OAAQ,QAAQj2S,OAAO+wB,EAAKklR,OAAQ,SAGxC,GAAIu6B,EAAgB9I,UAAY,GAAS,CAAC,QAAS,QAAS,MAAO,WAAmF,QAAtE4K,EAAqB9J,IAAkBgI,EAAgB9I,iBAA8C,IAAvB4K,OAAgC,EAASA,EAAmBj3M,MACxN,MAEJ,CACA,MAAO,CACL46K,OAAQ,QAAQj2S,OAAO+wB,EAAKklR,OAAQ,QAExC,CACA,MACF,CAjMyG+5D,CAAiB,CACpHx/B,gBAAiBA,EACjBxlB,UAAWA,EACXj6R,KAAMA,EACN9D,OAAQqzO,EAAKrzO,QAEjB,EACAm+R,YA2LK,SAA4B6kD,GACjC,IAAIxvU,EAASwvU,EAAOxvU,OAClB+vS,EAAkBy/B,EAAOz/B,gBAC3B,GAAe,MAAX/vS,EACF,OAAO,EAET,GAAIwvS,IAAWO,GAAkB,CAC/B,IAAI9I,EAAW8I,EAAgB9I,SAC/B,GAAIA,EAAU,CACZ,IAAIzxB,EAASyyB,IAAahB,GAC1B,GAAIzxB,EACF,MAAO,CACLA,OAAQA,EAGd,CACF,CACA,MACF,EA5MEz3P,MAAO,SAAe0xT,GACpB,IAAI5vG,EAAO4vG,EAAO5vG,KAChBuxB,EAAQq+E,EAAOr+E,MACf3xI,EAAUgwN,EAAOhwN,QACnB,QAAmBh9H,IAAfo9O,EAAK9hN,MACP,OAAO8hN,EAAK9hN,MAEd,IAAI2xT,EAAgBC,IAAiBv+E,EAAO3xI,GAC5C,QAAsBh9H,IAAlBitV,EACF,OAAOA,EAET,IAAI9sC,EAAWxxC,EAAMw+E,cAAcnwN,GAC/B0iN,EAAuB,MAAZ1iN,EAAkB,KAAO,KACpCixL,EAAYt/C,EAAMwxC,SAASu/B,GAE/B,OAAOphC,IAAoB6B,EAAW,CAAC+Q,IAAe/Q,IAAa,GAAI4M,IAAWkB,GAAa,CAACiD,IAAejD,IAAc,GAC/H,EACAlkT,OAAQ,SAAgBqjV,GAGtB,OA8MJ,SAAiBhwG,EAAMkwE,GACrB,IAAIv3G,EAAOqnC,EAAKrzO,OAChB,GAAI,GAAQgsM,GACV,OAAO8/G,IAAWvI,EAAiBv3G,GAC9B,GAAI4mG,IAAY5mG,GACrB,OAAOA,EAET,MACF,CAtNWs3I,CAFID,EAAOhwG,KACEgwG,EAAO9/B,gBAE7B,EACAtmF,OAAQ,SAAgBsmH,GACtB,IAAIC,EACAnwG,EAAOkwG,EAAOlwG,KAChBkwE,EAAkBggC,EAAOhgC,gBACzBttR,EAAOstT,EAAOttT,KAChB,OAAwC,QAAhCutT,EAAenwG,EAAKpW,cAAqC,IAAjBumH,EAA0BA,EAiNvE,SAAuBvtT,EAAMmgR,GAClC,GAAa,SAATngR,GAAmB,IAAWmgR,GAChC,OAAO,EAET,OAAO,CACT,CAtN6FqtC,CAAcxtT,EAAMstR,EAC/G,GAuCK,SAASmgC,IAAmBx8V,GACjC,MAAO,MAAMnU,OAAOmU,EAAM8hS,OAAQ,wBACpC,CACO,SAASm5D,IAAqBj7V,EAAOw3O,EAAQzrG,EAAS0wN,GAC3D,QAAc1tV,IAAV/O,EAAqB,CACvB,GAAgB,MAAZ+rI,EAAiB,CACnB,GAAI2/K,IAAY1rT,GAAQ,CACtB,IAAIvJ,EAAI+lW,IAAmBx8V,GACvB08V,EAAchxC,IAAYl0E,GAAU,IAAI3rP,OAAO2rP,EAAOsqD,OAAQ,eAA8B,QAAXtqD,EACrF,MAAO,CACLsqD,OAAQ,SAASj2S,OAAO4K,EAAG,QAAQ5K,OAAO4K,EAAG,sBAAsB5K,OAAO4K,EAAG,QAAQ5K,OAAO4K,EAAG,wBAA4B,IAAI5K,OAAO4K,EAAG,qBAAqB5K,OAAO4K,EAAG,UAAU5K,OAAO6wW,EAAa,uBAE1M,CACA,GAAI,GAAK18V,GAASA,EAAQ,KAAO,IAAMA,GAASA,EAAQ,IACtD,MAAO,SAET,GAAI0rT,IAAYl0E,GAAS,CACvB,IAAIjyM,EAAKvlC,GAAS,IAAM,KAAOA,EAAQ,MAAQ,MAC/C,MAAO,CACL8hS,OAAQ,GAAGj2S,OAAO2rP,EAAOsqD,OAAQ,KAAKj2S,OAAO05C,EAAI,6BAErD,CACA,OAAQvlC,GAAS,IAAM,KAAOA,KAAuB,QAAXw3O,GAAoB,SAAW,KAC3E,CACE,GAAIk0E,IAAY1rT,GAAQ,CACtB,IAAIvmB,EAAK+iX,IAAmBx8V,GACxB28V,EAAejxC,IAAYl0E,GAAU,IAAI3rP,OAAO2rP,EAAOsqD,OAAQ,gBAA+B,SAAXtqD,EACnFtgL,EAASulS,EAAsB,WAAa,OAChD,MAAO,CACL36D,OAAQ,GAAGj2S,OAAOpS,EAAI,qBAAqBoS,OAAOpS,EAAI,gBAAgBoS,OAAOpS,EAAI,QAAQoS,OAAOpS,EAAI,eAAeoS,OAAOqrE,EAAQ,cAAcrrE,OAAOpS,EAAI,QAAQoS,OAAOpS,EAAI,iBAAiBoS,OAAO8wW,EAAc,uBAExN,CACA,GAAI38V,GAAS,IAAM,KAAOA,GAAS,KAAOA,GAASA,GAAS,IAC1D,OAAOy8V,EAAsB,SAAW,KAE1C,GAAI/wC,IAAYl0E,GAAS,CACvB,IAAIolH,EAAM,IAAM58V,GAASA,GAAS,IAAM,MAAQ,MAChD,MAAO,CACL8hS,OAAQ,GAAGj2S,OAAO2rP,EAAOsqD,OAAQ,KAAKj2S,OAAO+wW,EAAK,8BAEtD,CACA,OAAQ,IAAM58V,GAASA,GAAS,OAAqB,SAAXw3O,GAAqB,MAAQ,QAE3E,CAEF,CACO,SAASwjH,IAAkBh7V,EAAOw3O,EAAQzrG,GAC/C,QAAch9H,IAAV/O,EAAJ,CAGA,IAAImvP,EAAkB,MAAZpjH,EACN1xI,EAAa80P,EAAM,EAAI,GACvB0tG,EAAa1tG,EAAM,SAAW,OAClC,GAAIu8D,IAAY1rT,GAAQ,CACtB,IAAIvJ,EAAI+lW,IAAmBx8V,GACvB88V,EAAepxC,IAAYl0E,GAAU,IAAI3rP,OAAO2rP,EAAOsqD,OAAQ,UAAWj2S,OAAOgxW,EAAY,MAASrlH,IAAWqlH,EACrH,MAAO,CACL/6D,OAAQ,IAAIj2S,OAAOwO,EAAa,IAAIxO,OAAO4K,EAAG,UAAYA,EAAG,oBAAoB5K,OAAOsjQ,EAAM,KAAO,WAAY,MAAQ,IAAItjQ,OAAOwO,EAAY,OAAOxO,OAAO4K,EAAG,QAAQ5K,OAAO4K,EAAG,OAAO5K,OAAO,IAAMwO,EAAY,UAAUxO,OAAOixW,EAAc,uBAEtP,CACA,IAAK98V,EAAQ3F,GAAc,KAAQ,EAEjC,OAAO80P,EAAM,KAAO,SAEtB,GAAIu8D,IAAYl0E,GAAS,CACvB,IAAIjyM,EAAKlrC,EAAa2F,GAASA,EAAQ,IAAM3F,EAAa,MAAQ,MAC9D0iW,EAAgB,GAAGlxW,OAAO2rP,EAAOsqD,OAAQ,KAAKj2S,OAAO05C,EAAI,MAAO15C,OAAOgxW,EAAY,KACvF,MAAO,CACL/6D,OAAQ,GAAGj2S,OAAOkxW,EAAe,uBAErC,CACA,OAAK1iW,EAAa2F,GAASA,EAAQ,IAAM3F,KAAiBm9O,IAAWqlH,GAC5D,OAEF,OAzBP,CA0BF,CA+DO,SAASZ,IAAiBv+E,EAAO3xI,GACtC,IAAI0iN,EAAuB,MAAZ1iN,EAAkB,KAAO,KACpCmjL,EAAWxxC,EAAMwxC,SAASnjL,GAC1BixL,EAAYt/C,EAAMwxC,SAASu/B,GAC3BhhC,EAASyB,EAAWA,EAAS7kR,WAAQt7B,EACrC2+S,EAASsP,EAAYA,EAAU3yR,WAAQt7B,EAC3C,OAAI0+S,GAAUC,EACLF,IAAWC,EAAQC,GACjBD,IAEAC,SAEW3+S,IAAX0+S,EAEFA,OACa1+S,IAAX2+S,EAEFA,OAFF,GAKT,CCtTA,SAAS,IAAQzwS,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CAEpV,SAAS,IAAa8iN,GAAW,IAAIC,EACrC,WAAuC,GAAuB,oBAAZ1kH,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFxqD,QAAQ10E,UAAU03C,QAAQh2C,KAAKq9H,QAAQC,UAAUtqD,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO1wE,KAAK,OAAO,CAAO,CAAE,CADvQ,GAA6B,OAAO,WAAkC,IAAsC0O,EAAlCgxO,GAAQ,QAAgBF,GAAkB,GAAIC,EAA2B,CAAE,IAAIE,GAAY,QAAgB7jP,MAAM8E,YAAa8N,EAASqsH,QAAQC,UAAU0kH,EAAOhjP,UAAWijP,EAAY,MAASjxO,EAASgxO,EAAMviP,MAAMrB,KAAMY,WAAc,OAAO,QAA2BZ,KAAM4S,EAAS,CAAG,CAQja,IAAI8xW,IAA6B,SAAU7U,IAChD,QAAU6U,EAAe7U,GACzB,IAAInuW,EAAS,IAAagjX,GAC1B,SAASA,EAAc9yW,EAAQkC,GAC7B,IAAIrT,EAKJ,OAJA,QAAgBT,KAAM0kX,IACtBjkX,EAAQiB,EAAOE,KAAK5B,KAAM4R,IACpBkC,UAAYA,EAClBrT,EAAM6+W,iBAAmBH,IAAmB1+W,EAAMqT,UAAUshV,WACrD30V,CACT,CA6DA,OA5DA,QAAaikX,EAAe,CAAC,CAC3B7jV,IAAK,QACL1+B,MAAO,WACL,OAAO,IAAIuiX,EAAc,KAAM97C,GAAU5oU,KAAK8T,WAChD,GACC,CACD+sB,IAAK,iBACL1+B,MAAO,WACL,OAAO,IAAIwkC,IAAI,CAAC3mC,KAAK8T,UAAUi1N,IACjC,GACC,CACDloM,IAAK,kBACL1+B,MAAO,WACL,OAAOnC,KAAKs/W,gBACd,GACC,CACDz+U,IAAK,WACL1+B,MAAO,WACL,MAAO,CACLwG,KAAM,UACN+mO,KAAM1vO,KAAK8T,UAAUshV,UACrBrsH,GAAI/oO,KAAK8T,UAAUi1N,GAEvB,GACC,CACDloM,IAAK,OACL1+B,MAAO,WACL,MAAO,aAAaoR,OAAO,GAAMvT,KAAK8T,WACxC,IACE,CAAC,CACH+sB,IAAK,uBACL1+B,MAAO,SAA8ByP,EAAQwzR,GA0B3C,OAxBAA,EAAMu/E,iBAAgB,SAAU/tC,EAAUnjL,GACxC,GAAK0yL,IAAgBvP,IAGjB2Q,IAAY3Q,EAASrkU,MAAO,CAC9B,IAAIstH,EAAQ+2M,EAAS/2M,MACnBo7M,EAAWrE,EAASqE,SAClB1oU,EAAOqkU,EAASrkU,KAEhB6iV,EAAY7iV,EAAKye,KAAI,SAAU4zV,EAAW1jX,GAC5C,MAAO,GAAGqS,OAAOkqU,IAAsB,CACrC59M,MAAOA,EACPo7M,SAAUA,EACV36R,MAAOskU,IACL,OAAOrxW,OAAOrS,EAAG,MACvB,IAAGmoB,KAAK,IAAM9W,EAAK1R,OACnB+Q,EAAS,IAAI8yW,EAAc9yW,EAAQ,CACjCwjV,UAAWA,EACXrsH,GAAI87I,IAAoBjuC,EAAUnjL,EAAS,CACzC61L,OAAO,KAGb,CACF,IACO13U,CACT,KAEK8yW,CACT,CAxEwC,CAwEtCpV,KACK,SAASuV,IAAoBjuC,EAAUnjL,EAASvG,GACrD,OAAO,IAAQ0pL,EAnFjB,SAAuBluU,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAmF9d,CAAc,CACrCg9B,OAAQ+tH,EACR8B,OAAQ,cACPrI,QAAiCA,EAAM,CAAC,GAC7C,CC9FA,SAAS,IAA2B9nI,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAK3K,SAAS4rJ,IAAiBrxN,EAASyrG,GACxC,OAAI,GAAS,CAAC,MAAO,UAAWA,GACvB,SACE,GAAS,CAAC,OAAQ,SAAUA,IAGpB,QAAZzrG,EAFE,MAE0B,QACrC,CACO,SAASsxN,IAAkB7/W,EAAM6pL,EAAQviF,EAAQinD,GACtD,IAAIuxN,EAAmC,QAAZvxN,EAAoBjnD,EAAOkuP,UAAwB,WAAZjnM,EAAuBjnD,EAAOmuP,aAAenuP,EAAOouP,YACtH,OAAOrvB,IAAiBx8I,GAAU,CAAC,GAAG7pL,GAAO8/W,EAAqB9/W,GAAOsnG,EAAOuiF,OAAO7pL,GACzF,CACO,SAAS+/W,IAAoB1jO,EAAYwtC,EAAQviF,EAAQinD,GAC9D,IAEE8qE,EAFElnN,EAAQ,CAAC,EACTmnN,EAAY,IAA2Bj9E,GAE3C,IACE,IAAKi9E,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIpzC,EAAOq5N,EAAMp8N,MACbA,EAAQ4iX,IAAkB7/W,EAAM6pL,GAAU,CAAC,EAAGviF,EAAQinD,QAC5Ch9H,IAAVt0B,IACFkV,EAAMnS,GAAQ/C,EAElB,CACF,CAAE,MAAOqlC,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACA,OAAOgU,CACT,CCrCO,IAAI6tW,IAAkB,CAAC,MAAO,UAC1BC,IAAe,CAAC,SAAU,UCArC,SAAS,IAA2B//V,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAClL,SAAS,IAAQv0L,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAkBlf,SAAS08W,IAAmBhgF,EAAO3xI,GACxC,IAAI1hG,EAAQqzO,EAAM5lO,UAAUg3M,cAAc/iH,GAAS1hG,MAC/Cy6C,EAAS44L,EAAM54L,OAAS44L,EAAM54L,YAAS/1E,EACvC4uV,EAAgBjgF,EAAM5lO,UAAUg3M,cAAc/iH,GAAS4xN,cAAgBjgF,EAAM5lO,UAAUg3M,cAAc/iH,GAAS4xN,mBAAgB5uV,EAC9H6uV,EAAuBL,IAAoB,CAAC,cAAe,aAAc,eAAgBI,EAAct2L,OAAQviF,EAAQinD,GACzHijH,EAAc4uG,EAAqB5uG,YACnC4D,EAAKgrG,EAAqBl3B,WAExBm3B,EAAgBT,IAAiBrxN,EADrB6xN,EAAqB3+C,aAEjCynB,EAAatiB,GAAexxD,GAChC,MAAO,CACLr4Q,KAAM,GAAGsR,OAAOkgJ,EAAS,UACzB9qJ,KAAM,QACN03D,KAAM,GAAG9sD,OAAOgyW,EAAe,UAC/BxzT,MAAO,IAAc,IAAc,IAAc,IAAc,CAC7DlxC,KAAMkxC,GACO,QAAZ0hG,EAAoB,CACrByrG,OAAQ,QACN,CAAC,GAAI,CAAC,EAAG,CACXpzP,MAAO,eACN05W,IAA2Bp3B,EAAYm3B,IAAiBE,IAAwBF,EAAen3B,EAAY13E,IAAegvG,IAAyBl5Q,EAAQ64Q,EAAe5xN,EAAS8mM,IAAyBH,MAEnN,CACO,SAASqrB,IAAwBF,EAAe79V,GAErD,OADa9mB,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,UAE/E,IAAK,QACH,MAAO,CACLyzF,MAAO,QAEX,IAAK,MACH,MAAO,CACLA,MAAO,SAGb,IAAIA,EAAQquR,IAAkBh7V,EAAyB,QAAlB69V,EAA0B,OAAS,MAAyB,QAAlBA,EAA0B,IAAM,KAC/G,OAAOlxR,EAAQ,CACbA,MAAOA,GACL,CAAC,CACP,CACO,SAASmxR,IAA2B99V,EAAO+rI,GAChD,IAAIktG,EAAWgiH,IAAqBj7V,EAAmB,QAAZ+rI,EAAoB,OAAS,MAAmB,QAAZA,EAAoB,IAAM,KAAK,GAC9G,OAAOktG,EAAW,CAChBA,SAAUA,GACR,CAAC,CACP,CACO,SAASglH,IAAqBvgF,EAAO3xI,GAC1C,IAGE8qE,EAHEqnJ,EAAexgF,EAAM5lO,UAAUg3M,cAAc/iH,GAC7CnxH,EAAS,GACTk8L,EAAY,IAA2B2mJ,KAE3C,IACE,IAAK3mJ,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIutU,EAAatnJ,EAAMp8N,MACvB,GAAIyjX,EAAaC,GAAa,CAC5B,IACE5iJ,EADEC,EAAa,IAA2B0iJ,EAAaC,IAEzD,IACE,IAAK3iJ,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,CACrD,IACI5mC,EAAQo0W,IAAoB1gF,EAAO3xI,EAASoyN,EAAYD,EADtC3iJ,EAAO9gO,OAEhB,MAATuP,GACF4wB,EAAO/hC,KAAKmR,EAEhB,CACF,CAAE,MAAO81B,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACF,CACF,CACF,CAAE,MAAOmkC,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACA,OAAOi/B,CACT,CACA,SAASyjV,IAAQV,EAAe5xN,GAC9B,IAEMuyN,EAFFzzW,EAAO8yW,EAAc9yW,KACzB,OAAI+0U,IAAY/0U,GAEP,CACLstH,MAAO,IAAQttH,EAAM,CACnBm9N,KAAM,UAERpyL,MAAsC,QAA9B0oU,EAAczzW,EAAK+qC,aAAmC,IAAhB0oU,EAAyBA,EAAc,aAE9E,GAAQzzW,GACV,CACLstH,MAAOglP,IAAoBQ,EAAe5xN,EAAS,CACjDi8E,KAAM,UAERpyL,MAAO,aAGF,CACLuiF,MAAO,IAAQwlP,EAAe,CAC5B31I,KAAM,UAERpyL,MAAO/qC,QAAmCA,EAAO,YAGvD,CACO,SAAS,IAAmB8yW,EAAe5xN,EAASjnD,GACzD,IAAIy5Q,EAAwBhB,IAAoB,CAAC,SAAU,aAAc,aAAc,cAAe,cAAe,aAAcI,EAAct2L,OAAQviF,EAAQinD,GAC/Jz/G,EAASiyU,EAAsBjyU,OAC/BuvK,EAAa0iK,EAAsB1iK,WACnCmiH,EAAaugD,EAAsBvgD,WACnC40B,EAAc2rB,EAAsB3rB,YACpCrO,EAAcg6B,EAAsBh6B,YACpC8C,EAAYk3B,EAAsBl3B,UAChCm3B,EAAgBhhC,IAAgB,CAClCnB,gBAAiBshC,EACjBrxU,OAAQA,EACRuvK,WAAYA,EACZmsB,KAAM,SACNljI,OAAQA,IACPg9M,OACC+7D,EAAgBT,IAAiBrxN,EAASw4L,GAC9C,OAAO,IAAc,IAAc,IAAc,IAAc,CAC7DprU,KAAM,CACJ2oS,OAAQulC,EAAY39R,GAAWA,GAAW29R,EAAW,cAAem3B,GAAgB,cAAe,IAAQb,EAAe,CACxH31I,KAAM,YACFw2I,IAEK,QAAZzyN,EAAoB,CACrByrG,OAAQ,QACN,CAAC,GAAI,CAAC,EAAG,CACXpzP,MAAO,cACP+qO,MAAO,SACN2uI,IAA2B9/C,EAAY6/C,IAAiBE,IAAwBF,EAAe7/C,EAAY40B,IAAeorB,IAAyBl5Q,EAAQ64Q,EAAe5xN,EAAS+mM,IAAyBH,KACjN,CACO,SAASyrB,IAAoB1gF,EAAO3xI,EAASoyN,EAAYD,EAAcO,GAC5E,GAAIA,EAAiB,CACnB,IAAIp0T,EAAQ,KACRszT,EAAgBO,EAAaP,cAC7B74Q,EAAS44L,EAAM54L,OAAS44L,EAAM54L,YAAS/1E,EAC3C,GAAI4uV,GAAiBc,EAAgBpyG,OAAQ,CAC3C,IACEk4E,EAD0Bg5B,IAAoB,CAAC,eAAgBI,EAAct2L,OAAQviF,EAAQinD,GACzDw4L,aAEtB,QAAZx4L,IAAsB,GAAS,CAAC,MAAO,UAAWw4L,IAA4B,WAAZx4L,IAAyB,GAAS,CAAC,OAAQ,SAAUw4L,MACzHl6R,EAAQ,IAAmBszT,EAAe5xN,EAASjnD,GAEvD,CACA,IAAI45Q,EAAuBtH,IAAa15E,KAAWoiD,IAAepiD,EAAMs1B,OACpEqJ,EAAOoiD,EAAgBpiD,KACvBsiD,GAAWtiD,aAAmC,EAASA,EAAKljU,QAAU,EAC1E,GAAIkxD,GAASs0T,EAAS,CACpB,IAAIn+B,EAA0B,QAAZz0L,EAAoB,SAAW,QACjD,OAAO,IAAc,IAAc,IAAc,IAAc,IAAc,CAC3ExxJ,KAAMmjS,EAAM6uE,QAAQ,GAAG1gW,OAAOkgJ,EAAS,KAAKlgJ,OAAOsyW,IACnDl9W,KAAM,QACN03D,KAAM,GAAG9sD,OAAOkgJ,EAAS,KAAKlgJ,OAAOsyW,IACpCD,EAAaP,cAAgB,CAC9B/rV,KAAM,CACJ5T,KAAM0/Q,EAAM6uE,QAAQ,GAAG1gW,OAAOkgJ,EAAS,aAEzClhJ,KAAMwzW,IAAQV,EAAe5xN,IAC3B,CAAC,GAAI4yN,GAAWD,EAAuB,CACzC9sV,KAAM,CACJ5T,KAAM0/Q,EAAM6uE,QAAQ,gBAAgB1gW,OAAOkgJ,MAE3C,CAAC,GAAI1hG,EAAQ,CACfA,MAAOA,GACL,CAAC,GAAIo0T,EAAgBG,WAAa,CACpC3rJ,OAAQ,CACNn1N,QAAQ,OAAgB,CAAC,EAAG0iV,EAAai+B,EAAgBG,cAEzD,CAAC,GAAID,EAAU,CACjBtiD,KAAMA,GACJ,CAAC,EACP,CACF,CACA,OAAO,IACT,CACA,IAAIwiD,IAAoB,CACtB/kO,OAAQ,CACN96H,MAAO,EACPmI,IAAK,GAEPuT,IAAK,CACH1b,MAAO,EACPmI,IAAK,IAGF,SAAS23V,IAAmB9vG,EAAa6uG,GAC9C,OAAOgB,IAAkBhB,GAAe7uG,EAC1C,CA2BO,SAASgvG,IAAyBl5Q,EAAQ64Q,EAAe5xN,EAASlS,EAAYklO,GACnF,IAEEt/I,EAFE9vN,EAAQ,CAAC,EACT+vN,EAAa,IAA2B7lF,GAE5C,IACE,IAAK6lF,EAAWtpN,MAAOqpN,EAASC,EAAWx4M,KAAK0pB,MAAO,CACrD,IAAIpzC,EAAOiiO,EAAOhlO,MAClB,GAAKskX,EAAcvhX,GAAnB,CAGA,IAAI/C,EAAQ4iX,IAAkB7/W,EAAMmgX,aAAqD,EAASA,EAAct2L,OAAQviF,EAAQinD,QAClHh9H,IAAVt0B,IACFkV,EAAMovW,EAAcvhX,IAAS/C,EAH/B,CAKF,CACF,CAAE,MAAOqlC,GACP4/L,EAAWljO,EAAEsjC,EACf,CAAE,QACA4/L,EAAW/jO,GACb,CACA,OAAOgU,CACT,CC9PO,SAAS,IAAsB+tR,GACpC,MAAO,GAAG7xR,QAAO,QAAmBmzW,IAAYthF,EAAO,WAAW,QAAmBshF,IAAYthF,EAAO,YAAY,QAAmBshF,IAAYthF,EAAO,gBAAgB,QAAmBshF,IAAYthF,EAAO,gBAClN,CACO,SAASshF,IAAYthF,EAAOgrC,GACjC,IAAI38K,EAAuB,UAAb28K,EAAuB,IAAM,IACvC9rS,EAAO8gQ,EAAM5lO,UAAUmnT,WAAW3kX,IAAIouU,GAC1C,IAAK9rS,GAAiB,WAATA,EACX,MAAO,GAGT,IAAIriC,EAAOmjS,EAAM4tE,iBAAiB5iC,GAAU5mB,OAC5C,GAAa,SAATllR,EAAiB,CACnB,IAAI63U,EAAiB/2E,EAAMosE,kBAAkB/9M,GAC7C,GAAI0oN,EAAgB,CAClB,IAAIxzW,EAAOwzW,EAAen6W,IAAI,QAC1B2lD,EAAQw0T,EAAen6W,IAAI,SAC/B,GAAI4+U,IAAkBj4U,IAAS0qU,IAAc1rR,GAAQ,CACnD,IAAIy5P,EAAYhc,EAAMgc,UAAU3tJ,GAChC,GAAIqrN,IAAa15E,EAAMxzR,QAKrB,GAAqC,gBADjBwzR,EAAMxzR,OAAO4tD,UAAUn4B,QACzBvuB,MAAM26I,GACtB,MAAO,CAACmzN,IAAWxlE,EAAWz5P,IAGlC,MAAO,CAACi/T,IAAWxlE,EAAWz5P,GAAQ,CACpC1lD,KAAMA,EACNuD,OAAQqhX,IAASzlE,EAAW+6D,EAAgB,WAAW5oW,OAAO6tS,EAAW,eAE7E,CACF,CAEA,MAAM,IAAIn5Q,MAAM,yDAClB,CAAO,GAAY,aAAR3D,EAAqB,CAC9B,IAAIwiV,EAAU7kX,EAAK+4D,SAAS,SACxB00K,EAAOo3I,EAAU,qBAAuB,qBACxC9hV,EAAe23T,IAA4Bv3D,EAAM54L,OAAO4lK,KAAM00G,EAAU,QAAU,UAClFC,EAAW,YAAYxzW,OAAOm8N,EAAM,QAAQn8N,OAAOm8N,EAAM,OAAOn8N,OAAOyxB,GAC3E,MAAO,CAAC,CACN/iC,KAAMA,EACNqI,KAAMy8W,EACN5mX,GAAI,CAAC,CACHqF,OAAQuhX,EACRjmX,OAAQ,mBAGd,CACE,MAAO,CAAC,CACNmB,KAAMA,EACNE,MAAOmiC,GAGb,CACA,SAASsiV,IAAWxlE,EAAWz5P,GAC7B,IAAI1lD,EAAO,GAAGsR,OAAO6tS,EAAW,SAChC,OAAIgyB,IAAYzrR,EAAMF,MACb,CACLxlD,KAAMA,EACNuD,OAAQmiD,EAAMF,KAAK+hQ,QAGd,CACLvnT,KAAMA,EACNE,MAAOwlD,EAAMF,KAGnB,CACO,SAASo/T,IAASzlE,EAAW+6D,EAAgB6K,GAClD,IAAIr+W,EAAOwzW,EAAen6W,IAAI,QAC1Bo4E,EAAU+hS,EAAen6W,IAAI,WAC7B2mP,EAAe4iF,GAAgB4wC,EAAen6W,IAAI,gBAAiBo4E,GACnEsuK,EAAeyzH,EAAen6W,IAAI,gBAOtC,OANA0mP,EAAwB,SAAT//O,OAEE8tB,IAAjBiyN,EAA6BA,EAAetuK,EAG5C,EACO,aAAa7mE,OAAOyzW,EAAa,MAAMzzW,OAAOwgU,IAAoBrrF,GAAe,MAAMn1O,OAAOwgU,IAAoBprF,GAAe,QAAQp1O,OAAO6tS,EAAW,QACpK,CCxFO,SAAS6lE,IAA8BC,GAC5C,MAA0B,eAAnBA,EAAkC,QAA6B,gBAAnBA,EAAmC,SAAWA,CACnG,CCDA,SAAS,IAAQviV,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAIlf,SAASy+W,IAAiBn7B,EAAU5mD,GACzC,OAAO,GAAK4mD,GAAUr6T,QAAO,SAAUgpM,EAAQlnE,GAC7C,IAAI2zN,EAAWp7B,EAASv4L,GACxB,OAAO,IAAc,IAAc,CAAC,EAAGknE,GAASs6I,IAAc7vE,EAAOgiF,EAAU3zN,GAAS,SAAUrtH,GAChG,OAAOwtS,IAAiBxtS,EAAIjkC,MAC9B,IACF,GAAG,CAAC,EACN,CCVO,SAASklX,IAAoB5zN,EAAS2xI,GAC3C,GAAI05E,IAAa15E,GACf,MAAmB,UAAZ3xI,EAAsB,cAAgB,SACxC,GAAIw+M,IAAa7sE,GACtB,MAAO,SACF,GAAIkiF,IAAcliF,GACvB,OAAO4qC,IAAOv8K,IAAwB,UAAZA,GAAmC,WAAZA,EAAuB,cAAgB,SAG1F,MAAM,IAAIxrH,MAAM,iCAClB,CACO,SAASs/U,IAAkBlgV,EAASosH,GACzC,IAAI+zN,EAAsBngV,EAAQvuB,MAAM26I,GACpCg3L,EAAQza,IAAOv8K,GAAW,OAAS,SACvC,MAA4B,gBAAxB+zN,GAC8B,WAA5BngV,EAAQojT,GAAOh3L,IACjB,I1FwKC,SAA+CA,GACpD,MAAO,4CAA6ClgJ,OAAOkgJ,EAAS,4EACtE,C0F1Ke,CAAkDA,IAEtD,eAEFpsH,EAAQojT,GAAOh3L,IAAY,QACpC,CClBA,SAAS,IAAaiwF,GAAW,IAAIC,EACrC,WAAuC,GAAuB,oBAAZ1kH,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFxqD,QAAQ10E,UAAU03C,QAAQh2C,KAAKq9H,QAAQC,UAAUtqD,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO1wE,KAAK,OAAO,CAAO,CAAE,CADvQ,GAA6B,OAAO,WAAkC,IAAsC0O,EAAlCgxO,GAAQ,QAAgBF,GAAkB,GAAIC,EAA2B,CAAE,IAAIE,GAAY,QAAgB7jP,MAAM8E,YAAa8N,EAASqsH,QAAQC,UAAU0kH,EAAOhjP,UAAWijP,EAAY,MAASjxO,EAASgxO,EAAMviP,MAAMrB,KAAMY,WAAc,OAAO,QAA2BZ,KAAM4S,EAAS,CAAG,CAExa,SAAS,IAAQ+xB,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAIzf,IAAI++W,IAAkC,IAAc,IAAc,CAAC,EAAG3sB,KAA+B,CAAC,EAAG,CACvGwlB,QAAS,EACTvxB,UAAW,EACXwd,WAAY,EAEZ53V,QAAS,EACTlP,MAAO,EACP0b,OAAQ,EACRy6B,KAAM,EACNtX,KAAM,EACN6tB,YAAa,EACbmrM,WAAY,EAEZ3iC,OAAQ,IAEC+sJ,IAA8B,GAAKD,KACnCE,IAA+B,SAAUvZ,IAClD,QAAUuZ,EAAiBvZ,GAC3B,IAAI1sW,EAAS,IAAaimX,GAC1B,SAASA,IAEP,OADA,QAAgB3nX,KAAM2nX,GACfjmX,EAAOL,MAAMrB,KAAMY,UAC5B,CACA,OAAO,QAAa+mX,EACtB,CAR0C,CAQxCpa,KCpCF,SAAS,IAAQ5oU,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAUlf,IAAIk/W,IAAoB,CAC7Bp/U,QAKK,SAAiBq/U,EAAah2T,GACnC,IAAIi2T,EAAiBC,EAAkBC,EAAkBC,EACrDlkC,EAAkBlyR,EAAKkyR,gBACzB3+C,EAAQvzO,EAAKuzO,MACb3xI,EAAU5hG,EAAK4hG,QACfy0N,EAAar2T,EAAKq2T,WAClBzpD,EAAa5sQ,EAAK4sQ,WACpB,GAAmB,WAAfA,EACF,OAEF,IAAI6kB,EAAUl+C,EAAMk+C,QAClB0I,EAAW5mD,EAAM4mD,SACjBx/O,EAAS44L,EAAM54L,OACf/1C,EAAO2uO,EAAM3uO,KACX/kC,EAAS4xT,EAAQ5xT,QAAmB,UAAT+kC,EAC3BvzC,EAAM,IAAc,IAAc,CAAC,E7F4ClC,SAAyBhf,EAAGkhS,EAAO+iF,GACxC,IACE5pJ,EADEC,EAAY,IAA2B2pJ,GAE3C,IACE,IAAK3pJ,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAI0iK,EAAWujB,EAAMp8N,MACjBA,EAAQkyU,IAAcr5H,EAAUoqF,EAAMk+C,QAASl+C,EAAM54L,aAC3C/1E,IAAVt0B,IACF+B,EAAE82M,GAAY44H,IAAiBzxU,GAEnC,CACF,CAAE,MAAOqlC,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACA,OAAOa,CACT,C6F7D4CkkX,CAAgB,CAAC,EAAGhjF,EAAOo9C,MAAsB,IAAap9C,EAAO,CAC7G1zQ,OAAQA,KAEN4pU,EAAwE,QAAvDwsB,EAAkBI,EAAWlmX,IAAI,wBAAkD,IAApB8lX,EAA6BA,EAAkBt7Q,EAAO6qK,OAAOikF,cAC7ID,EAA6E,QAA1D0sB,EAAmBG,EAAWlmX,IAAI,0BAAqD,IAArB+lX,EAA8BA,EAAmBv7Q,EAAO6qK,OAAOgkF,gBACpJE,EAAiF,QAA5DysB,EAAmBE,EAAWlmX,IAAI,4BAAuD,IAArBgmX,EAA8BA,EAAmBx7Q,EAAO6qK,OAAOkkF,kBACxJ5mV,OAA4B8hB,IAAlB6kU,EAAiF,QAAlD2sB,EAAeI,IAAYr8B,EAASr3U,gBAAuC,IAAjBszW,EAA0BA,EAAe3kC,EAAQ3uU,aAAU8hB,EAClK,GAAIvT,EAAI04B,KAAM,CAUN,IAAI0sU,EARV,GAAgB,SAAZ70N,GAAsB/hI,GAAU+hI,IAAYo5K,WACvC3pT,EAAI04B,UAEX,GAAI14B,EAAI04B,KAAY,MAElB,GAAIy/S,SACKn4U,EAAI04B,UAGX14B,EAAI04B,KAAOg4R,IAAiF,QAA/D00C,EAAwB97Q,EAAO6qK,OAAOmjD,2BAA2D,IAA1B8tD,EAAmCA,EAAwB,SAC/JplW,EAAI2gE,YAAc+vP,IAAiBj/T,QAAyCA,EAAU,QAEnF,GAAI,GAAQuO,EAAI04B,MAAO,CAC5B,IAAIoiB,EAAOuqT,EAAuBC,EAC9B5sU,EAAoQ,QAA5PoiB,EAAuK,QAA9JuqT,EAAwBE,IAA4D,QAApCD,EAAiBx8B,EAASpwS,YAAqC,IAAnB4sU,EAA4BA,EAAiBx8B,EAASj4S,cAA8C,IAA1Bw0U,EAAmCA,EAAwBjlC,EAAQ1nS,YAA4B,IAAVoiB,EAAmBA,EAAQtsC,GAAU4xT,EAAQvvS,MACzT6H,IACF14B,EAAI04B,KAAOg4R,IAAiBh4R,GAEhC,CAEJ,CACA,GAAI14B,EAAI/B,OACN,GAAgB,WAAZsyI,IAAyB/hI,GAAU+hI,IAAYo5K,WAC1C3pT,EAAI/B,YAEX,GAAI+B,EAAI/B,OAAc,OAAKo6U,SAElBr4U,EAAI/B,YACN,GAAI,GAAQ+B,EAAI/B,QAAS,CAC9B,IAAIA,EAASoqT,GAAgBk9C,IAAuBz8B,EAAS7qU,QAAU6qU,EAASj4S,OAAQuvS,EAAQniU,OAAQuQ,EAAS4xT,EAAQvvS,WAAQtd,GAC7HtV,IACF+B,EAAI/B,OAAS,CACXhf,MAAOgf,GAGb,CAGJ,GAAIsyI,IAAYy5K,IAAS,CACvB,IAAIjrS,EAAYuhT,IAAWO,IAAoB2kC,IAAkBtjF,EAAO8iF,EAAYnkC,GAChF9hT,EACF/e,EAAIvO,QAAU,CAAC,IAAc,CAC3BrP,KAAM28B,GACL2xS,IAAiBj/T,QAAyCA,EAAU,IAAKi/T,IAAiBpnO,EAAO6qK,OAAOmnF,oBAClG7pV,IACTuO,EAAIvO,QAAUi/T,IAAiBj/T,GAEnC,CAEA,OAAO81T,GADPvnT,EAAM,IAAc,IAAc,CAAC,EAAGA,GAAM2kW,SACtBpxV,EAAYvT,CACpC,EA9EEyhE,SA+EK,SAAkBgkS,EAAc9pT,GACrC,IAAI+pT,EACAxjF,EAAQvmO,EAAMumO,MAChBq5B,EAAa5/P,EAAM4/P,WACnBypD,EAAarpT,EAAMqpT,WACrB,GAAmB,aAAfzpD,EACF,OAEF,IAAIjyN,EAAS44L,EAAM54L,OACjB82O,EAAUl+C,EAAMk+C,QAChB0I,EAAW5mD,EAAM4mD,SACf9oU,EAAM,CAAC,EAEPvO,OAA8B8hB,KAD+C,QAA1DmyV,EAAmBV,EAAWlmX,IAAI,0BAAqD,IAArB4mX,EAA8BA,EAAmBp8Q,EAAO6qK,OAAO2jF,iBAC1GqtB,IAAYr8B,EAASr3U,UAAY2uU,EAAQ3uU,aAAU8hB,EAC7F9hB,IAEFuO,EAAIvO,QAAUi/T,IAAiBj/T,IAGjC,OAAO81T,GADPvnT,EAAM,IAAc,IAAc,CAAC,EAAGA,GAAMylW,SACtBlyV,EAAYvT,CACpC,EAlGE6wP,OAmGK,SAAgB80G,EAAqBxoR,GAC1C,IAAI0jP,EAAkB1jP,EAAM0jP,gBAC1B3+C,EAAQ/kM,EAAM+kM,MACd3xI,EAAUpzD,EAAMozD,QAChBy0N,EAAa7nR,EAAM6nR,WACjB7wG,EAAS+tB,EAAM/tB,OAAO5jH,IAAY,CAAC,EACnCjnD,EAAS44L,EAAM54L,OACfvqE,EAAYuhT,IAAWO,GAAmB2kC,IAAkBtjF,EAAO8iF,EAAYnkC,QAAmBttT,EAClG9hB,EAAUstB,EAAY,CAAC,CACzB38B,KAAM28B,EACN9/B,MAAO,GACN,CACDA,MAAOqqG,EAAO6qK,OAAOmnF,yBAClB/nU,EACDud,EAASqjO,EAAOrjO,OAClBuvK,EAAa8zD,EAAO9zD,WAClB1iM,OAAO4V,EACPuuT,IAAmBzhI,GACrB1iM,EAAOukU,IAAiB,CACtBrB,gBAAiBA,EACjBlkN,MAAO,cACP7rF,OAAQA,EACRuvK,WAAYA,EACZ/2G,OAAQA,SAEU/1E,IAAXud,QAAuCvd,IAAf8sL,GAA4B/2G,EAAO+4O,oBACvC,iBAAzBxB,EAAgBp7U,MAA2B6jG,EAAOk5O,iBACpD7kU,EAAOukU,IAAiB,CACtBrB,gBAAiBA,EACjBlkN,MAAO,cACP7rF,OAAQw4D,EAAOgnH,aACfjQ,WAAY/2G,EAAOk5O,iBACnBl5O,OAAQA,IAEwB,aAAzBu3O,EAAgBp7U,MAAuB6jG,EAAOm5O,gBAAkBnC,IAAWO,SAAiDttT,IAA7BstT,EAAgB9I,WACxHp6T,EAAOukU,IAAiB,CACtBrB,gBAAiBA,EACjBlkN,MAAO,cACP7rF,OAAQw4D,EAAOimH,WACflP,WAAY/2G,EAAOm5O,eACnBn5O,OAAQA,MAId,IAAIs8Q,EAAa,IAAc,IAAc,IAAc,CAAC,EAAGn0W,EAAU,CACvEA,QAASA,GACP,CAAC,GAAIkM,EAAO,CACdA,KAAMA,GACJ,CAAC,GAAIgoW,GACT,OAAOp+C,GAAQq+C,QAAcryV,EAAYqyV,CAC3C,EApJEhtT,QAqJK,SAAiBitT,EAAav0Q,GACnC,IACI+3P,EADa/3P,EAAM0zQ,WACKlmX,IAAI,cAChC,OAAOuqW,SAAgDA,EAAW1rW,OAAS,IAAc,IAAc,CAAC,EAAGkoX,GAAc,CAAC,EAAG,CAC3HntU,KAAM,CACJz5C,MAAO,iBAEN4mX,CACP,GACA,SAASV,IAAYhlC,GACnB,OAAO2lC,IAAkB3lC,GAAY,SAAUpxU,EAAGg3W,GAChD,OAAOhvW,KAAKE,IAAIlI,EAAGg3W,EAAe9mX,MACpC,GACF,CACO,SAASsmX,IAAuBplC,GACrC,OAAO2lC,IAAkB3lC,GAAY,SAAUpxU,EAAGg3W,GAChD,OAAO19C,GAAgBt5T,EAAGg3W,EAAe9mX,MAC3C,GACF,CACA,SAAS6mX,IAAkB3lC,EAAY6lC,GACrC,OhF3CK,SAAgC7lC,GACrC,IAAIphT,EAAYohT,aAA+C,EAASA,EAAsB,UAC9F,QAASphT,IAAc,GAAQA,IAAc4iT,IAAW5iT,GAC1D,CgFwCMknV,CAAuB9lC,GAClB,GAAMA,EAAWphT,WAAWtQ,OAAOu3V,EAAS7lC,EAAWlhV,OACrD0iV,IAAWxB,GACbA,EAAWlhV,WADb,CAIT,CACA,SAASumX,IAAkBtjF,EAAO8iF,EAAYtxC,GAC5C,IAAI21B,EAAa2b,EAAWlmX,IAAI,cAChC,GAAMuqW,SAAgDA,EAAW1rW,OAAjE,CACA,IAAIg/H,EAAQ,GAAY+2M,EAAS/2M,OACjC,OAAO0sO,EAAWv7U,KAAI,SAAU/uB,GAC9B,IAAIimI,EAAQ,GAAYwiM,GAAQzoU,GAAQyyW,KACxC,MAAO,iBAAiBnhW,OAAO20H,EAAO,WAAW30H,OAAOtR,EAAM,KAAKsR,OAAOssH,EAAO,iBAAiBtsH,OAAOtR,EAAM,KAAKsR,OAAOssH,EAAO,yBACpI,IAAGx2G,KAAK,OALkF,CAM5F,CChMO,IAAI+/V,IAAc,CACvBtuV,UAAW,SAAmB+2B,GAE5B,OADiBA,EAAK/2B,SAExB,EACAkZ,OAAQ,SAAgBgqB,GACtB,IAAI+lR,EAAkB/lR,EAAM+lR,gBAC1B1sE,EAASr5M,EAAMq5M,OACf7qK,EAASxuC,EAAMwuC,OACbx4D,EAASqjO,EAAOrjO,OAClBuvK,EAAa8zD,EAAO9zD,WACtB,OAAOkjI,IAAY1C,EAAiBA,EAAgBp7U,KAAMqrC,EAAQuvK,EAAY/2G,GAAQ,EACxF,EACA+2G,WAAY,SAAoB1kJ,GAC9B,IAAIw4M,EAASx4M,EAAMw4M,OACjB0sE,EAAkBllR,EAAMklR,gBACxBxlB,EAAY1/P,EAAM0/P,UAChBh7G,EAAa8zD,EAAO9zD,WACxB,OAAOsjI,IAAgBtjI,EAAYwgI,EAAiBxlB,EACtD,EACA/F,eAAgB,SAAwBl3S,GACtC,IAAI++E,EAAOgpR,EACPhyG,EAAS/1P,EAAO+1P,OAClBiyG,EAAehoW,EAAOgoW,aACxB,OAAwK,QAAhKjpR,EAA4D,QAAnDgpR,EAAwBhyG,EAAOmhD,sBAAsD,IAA1B6wD,EAAmCA,EAAwBC,EAAa9wD,sBAAsC,IAAVn4N,EAAmBA,EAqIhM,SAA+BwjR,GACpC,IAAIyF,EAAezF,EAAOyF,aACxBlkF,EAAQy+E,EAAOz+E,MACftqQ,EAAY+oV,EAAO/oV,UACnBokO,EAAS2kH,EAAO3kH,OAChBq/D,EAAYslD,EAAOtlD,UACjB6/B,EAA8BkrB,EAAalrB,4BAC7CC,EAA8BirB,EAAajrB,4BAC3CC,EAA4BgrB,EAAahrB,0BACzCC,EAA4B+qB,EAAa/qB,0BAC3C,GAAIzd,IAAyBviB,GAC3B,MAAkB,eAAdzjS,EACa,QAAXokO,GAA+B,WAAXA,EACfqqH,IAAqBnkF,EAAO,QAASi5D,EAA6BD,GAElEC,EAIFkrB,IAAqBnkF,EAAO,SAAUm5D,EAA2BD,GAG5E,MACF,CA5J+MkrB,CAAsBloW,EACnO,EACA+kT,aAAc,SAAsB7xN,GAClC,IAAI37B,EAAO4wS,EACPpyG,EAAS7iK,EAAM6iK,OACjBiyG,EAAe90Q,EAAM80Q,aACrB/qD,EAAY/pN,EAAM+pN,UACpB,OAAiK,QAAzJ1lP,EAAyD,QAAhD4wS,EAAuBpyG,EAAOgvD,oBAAmD,IAAzBojD,EAAkCA,EAAuBH,EAAajjD,oBAAoC,IAAVxtP,EAAmBA,EA4JzL,SAA6B0lP,GAClC,GAAI,GAAS,CAAC,WAAY,YAAa,MAAO,UAAWA,GACvD,MAAO,SAET,MACF,CAjKwM,CAAoBA,EAC1N,EACAgI,WAAY,SAAoBzyL,GAC9B,IAAI41O,EACAryG,EAASvjI,EAAMujI,OACjBisE,EAAUxvM,EAAMwvM,QAChB7vL,EAAU3f,EAAM2f,QAChBu4L,EAAWl4M,EAAMk4M,SACnB,OAAoD,QAA5C09B,EAAqBryG,EAAOkvD,kBAA+C,IAAvBmjD,EAAgCA,EAsCzF,SAA2BjzT,EAAMg9F,EAASk2N,EAAiBC,GAChE,GAAgB,UAAZn2N,EAAqB,CACvB,IAAI80N,EAEA9iX,EAA8E,QAArE8iX,EAAwBE,IAAuBkB,UAAwD,IAA1BpB,EAAmCA,EAAwBqB,EACrJ,GAAInkX,EACF,OAAOA,CAEX,CACA,OAAQgxD,GACN,IAAK,MACL,IAAK,OACL,IAAK,QACL,IAAK,SACH,MAAO,SACT,IAAK,OACL,IAAK,QACL,IAAK,OACH,MAAO,SACT,IAAK,MACL,IAAK,QACL,IAAK,SACL,IAAK,OACL,IAAK,WACL,IAAK,OACL,IAAK,OACH,MAAO,SAEb,CAlEqHozT,CAAkBvmC,EAAQ36U,KAAM8qJ,EAASu4L,EAASvmV,MAAO69U,EAAQ79U,MACpL,EACAssD,MAAO,SAAe2oF,GAGpB,OAAO,IAFeA,EAAMqpM,gBACjBrpM,EAAMluC,OAC6B,CAC5Cy9O,gBAAgB,GAEpB,EACAthV,KAAM,SAAci6W,GAClB,IAAInkD,EAAamkD,EAAMnkD,WACrBF,EAAYqkD,EAAMrkD,UAEpB,GAAIkQ,IADQm0C,EAAMnvN,UACaqtL,IAAyBviB,IACtD,GAAmB,aAAfE,EACF,YAEG,GAAmB,WAAfA,EACT,OAEF,OAAOA,CACT,EACAj+R,OAAQ,SAAgBuiV,GACtB,IAAIh/B,EAAkBg/B,EAAOh/B,gBAE7B,OAGJ,SAAiB1sE,EAAQ0sE,GACvB,IAAIv3G,EAAO6qC,EAAO72O,OAClB,GAAI,GAAQgsM,GACV,OAAO8/G,IAAWvI,EAAiBv3G,GAC9B,GAAI4mG,IAAY5mG,GACrB,OAAOA,EAET,MACF,CAXW,CADIu2I,EAAO1rG,OACK0sE,EACzB,GA+CK,SAAS+lC,IAAcxoW,GAE5B,OAAOiqT,GADMjqT,EAAO+1P,OACU1uQ,KAEzB,SAAqBw6W,GAC1B,IAAI1vN,EAAU0vN,EAAO1vN,QACnBwnL,EAAWkoC,EAAOloC,SAClB1c,EAAY4kD,EAAO5kD,UAErB,GAAIkQ,IAAeh7K,GAAU,CAC3B,GAAI,GAAS,CAAC,UAAW,QAAS,OAAQwnL,GACxC,MAAO,SAET,GAAI6F,IAAyBviB,GAC3B,MAAO,UAEX,CACA,MAAO,QACT,CAhBsC,CAAYj9S,GAClD,CAgBO,SAASyoW,IAAa3G,GAC3B,IAAIK,EAAQuG,EACRV,EAAelG,EAAOkG,aACxB7qD,EAAa2kD,EAAO3kD,WACpBv/D,EAASkkH,EAAOlkH,OAElB,OAA+L,QAAvLukH,EAAoD,QAA1CuG,EADP5G,EAAO/rG,OAC2Bv8O,iBAA6C,IAAtBkvV,EAA+BA,EAAoBV,EAAa7qD,EAAa,oBAAsB,0BAA2C,IAAXglD,EAAoBA,EAEtN,SAA0BvkH,EAAQu/D,GACvC,OAAQv/D,GACN,IAAK,MACL,IAAK,SACH,MAAO,aACT,IAAK,OACL,IAAK,QACL,IAAK,OACL,UAAKzoO,EAEH,OAEF,QAGE,MAAsB,aAAfgoS,EAA4B,kBAAehoS,EAExD,CAnBsOwzV,CAAiB/qH,EAAQu/D,EAC/P,CA2CA,SAAS8qD,IAAqBnkF,EAAOgrC,EAAUl2T,EAAKC,GAClD,IAAImsW,EAAalhF,EAAM4tE,iBAAiB5iC,GAAU5mB,OAClD,MAAO,CACLA,OAAQ,SAASj2S,OAAO+yW,EAAY,MAAM/yW,OAAO2G,EAAK,MAAM3G,OAAO4G,EAAK,KAE5E,CChMA,SAAS,IAAQwqB,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CACzf,SAAS,IAA2B0c,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAgB3K,SAAS,IAAYksE,GAC1B,IAAI8kF,EAAkBvZ,IAAYvrE,GAIpC,SAAyBA,GAGvB,IAFA,IAAI4mD,EAAW5mD,EAAM4mD,SACjBk+B,EAAkB,CAAC,EACdvpX,EAAK,EAAGs3C,EAAO,CAAC40R,KAAOt5T,QAAO,QAAmBsnV,MAAyBl6V,EAAKs3C,EAAKp3C,OAAQF,IAAM,CACzG,IAAI8yJ,EAAUx7G,EAAKt3C,GACfylC,EAAMukT,IAAmBqB,EAASv4L,IACjCrtH,GAAQg/P,EAAMosE,kBAAkB/9M,KAGjCA,IAAYu5K,KAASwW,IAAWp9S,IAAQA,EAAIz9B,OAASm2U,MAGzDorC,EAAgBz2N,GAAW02N,IAAsB/kF,EAAO3xI,IAC1D,CACA,OAAOy2N,CACT,CAnB6CE,CAAgBhlF,GA+J7D,SAA4BA,GAC1B,IAIEniE,EAJEonJ,EAAmBjlF,EAAM5lO,UAC3By3M,EAAUozG,EAAiBpzG,QAC3B5vO,EAAUgjV,EAAiBhjV,QACzB67L,EAAa,IAA2BkiE,EAAMv1R,UAElD,IACE,IAAKqzN,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,CACrD,IAAIxoC,EAAQmzN,EAAO9gO,MACnB,IAAY2N,GACZ,IACEq3N,EADEC,EAAa,IAA2B,GAAKt3N,EAAM0vD,UAAUy3M,UAEjE,IACE,IAAK7vC,EAAWtpN,MAAOqpN,EAASC,EAAWx4M,KAAK0pB,MAAO,CACrD,IAAIm7G,EAAU0zE,EAAOhlO,MACrBklC,EAAQgwO,OAAO5jH,GAAW8zN,IAAkBniF,EAAM5lO,UAAUn4B,QAASosH,GACrC,WAA5BpsH,EAAQgwO,OAAO5jH,KAGjBwjH,EAAQxjH,GAAW62N,IAAqBrzG,EAAQxjH,GAAU3jJ,EAAM0vD,UAAUy3M,QAAQxjH,IAC7EwjH,EAAQxjH,KAGXpsH,EAAQgwO,OAAO5jH,GAAW,qBACnBwjH,EAAQxjH,IAGrB,CACF,CAAE,MAAOjsH,GACP4/L,EAAWljO,EAAEsjC,EACf,CAAE,QACA4/L,EAAW/jO,GACb,CACF,CACF,CAAE,MAAOmkC,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACA,IACE4jO,EADEC,EAAa,IAA2B,GAAK+vC,IAEjD,IACE,IAAK/vC,EAAWppN,MAAOmpN,EAASC,EAAWt4M,KAAK0pB,MAAO,CACrD,IAEE+uL,EAFEkjJ,EAAWtjJ,EAAO9kO,MAClBmlO,EAAa,IAA2B89D,EAAMv1R,UAElD,IACE,IAAKy3N,EAAWxpN,MAAOupN,EAASC,EAAW14M,KAAK0pB,MAAO,CACrD,IAAIkyU,EAASnjJ,EAAOllO,MACfqoX,EAAOhrT,UAAUy3M,QAAQszG,KAIG,WAA7BljV,EAAQgwO,OAAOkzG,WAEVC,EAAOhrT,UAAUy3M,QAAQszG,GAEpC,CACF,CAAE,MAAO/iV,GACP8/L,EAAWpjO,EAAEsjC,EACf,CAAE,QACA8/L,EAAWjkO,GACb,CACF,CACF,CAAE,MAAOmkC,GACP0/L,EAAWhjO,EAAEsjC,EACf,CAAE,QACA0/L,EAAW7jO,GACb,CACA,OAAO4zQ,CACT,CArOsEwzG,CAAmBrlF,GAEvF,OADAA,EAAM5lO,UAAUy3M,QAAUizG,EACnBA,CACT,CAyCA,SAASQ,IAAWvoX,EAAO64M,EAAUq8D,EAAQu/D,GAC3C,OAAQ57H,GACN,IAAK,UACH,YAAkBvkL,IAAX4gP,EAET,IAAK,SAEH,QAAUA,UAAwCA,EAAO72O,QAC3D,IAAK,QAEH,GAAiB,UAAbw6K,GAAwB74M,KAAWy0U,aAA2C,EAASA,EAAS7kR,OAClG,OAAO,EAIb,OAAO5vD,KAAWk1Q,GAAU,CAAC,GAAGr8D,EAClC,CACO,SAASmvK,IAAsB/kF,EAAO3xI,GAC3C,IAAIoyL,EAAoB8kC,EAAkBC,EACtCvzG,EAAS+tB,EAAM/tB,OAAO5jH,GACtB6vL,EAAUl+C,EAAMk+C,QAClB0I,EAAW5mD,EAAM4mD,SACjBx/O,EAAS44L,EAAM54L,OACb88Q,EAAe98Q,EAAO6qK,OACtB6wG,EAAa,IAAIP,IAAgB,CAAC,EAhDxC,SAA+BviF,EAAO3xI,GACpC,IAAI36I,EAAQssR,EAAMgc,UAAU3tJ,GAC5B,GAAmB,UAAf2xI,EAAM3uO,KAAkB,CAC1B,GAAgB,UAAZg9F,EAEF,MAAO,CACLtyI,OAAQrI,GAEL,GAAgB,SAAZ26I,EACT,MAAO,CACLthG,YAAar5C,EAGnB,CACA,MAAgB,UAAZ26I,EACK2xI,EAAMk+C,QAAQ5xT,OAAS,CAC5BkqB,KAAM9iC,GACJ,CACFqI,OAAQrI,IAGL,OAAgB,CAAC,EAAG26I,EAAS36I,EACtC,CA0B2C+xW,CAAsBzlF,EAAO3xI,KtBkEjE,SAAgC2xI,EAAO3xI,EAASy0N,GACrD,IAAI4C,EAAiBjW,EAGnB5tI,EAFEpnG,EAAwD,QAA/CirP,EAAkB1lF,EAAMwxC,SAASnjL,UAA0C,IAApBq3N,OAA6B,EAASA,EAAgBjrP,MACtHqnG,EAAa,IAA2BsF,GAA6D,QAAvDqoI,EAAwBzvE,EAAM5lO,UAAUi/R,iBAAiD,IAA1BoW,EAAmCA,EAAwB,CAAC,IAE7K,IACE,IAAK3tI,EAAWppN,MAAOmpN,EAASC,EAAWt4M,KAAK0pB,MAAO,CACrD,IAAIyyU,EACA5b,EAAUloI,EAAO9kO,MACjB+pR,EAAqE,QAA7D6+F,EAAwB5b,EAAQp7H,QAAQg9H,SAASlxO,UAA8C,IAA1BkrP,EAAmCA,EAAwB5b,EAAQp7H,QAAQ+8H,WAAWr9M,GACvK,GAAIy4H,GAAQuxF,IAAe9+H,QAAQwwH,GAAU,CAC3C,IAAI2Y,EACAkD,EAAwE,QAApDlD,EAAkBI,EAAWlmX,IAAI,qBAA+C,IAApB8lX,EAA6BA,EAAkB,GACnIkD,EAAiBzqX,KAAK4uW,EAAQltW,MAC9BimX,EAAWhmX,IAAI,aAAc8oX,GAAkB,GAC/C9+F,EAAK4iF,WAAY,CACnB,CACF,CACF,CAAE,MAAOtnU,GACP0/L,EAAWhjO,EAAEsjC,EACf,CAAE,QACA0/L,EAAW7jO,GACb,CACF,CsBxFE4nX,CAAuB7lF,EAAO3xI,EAASy0N,GACvC,IAAI5H,OAAqB7pV,IAAX4gP,GAAwBA,EAASiyG,EAAahJ,QAE5D,GADA4H,EAAWhmX,IAAI,UAAWo+W,OAAoB7pV,IAAX4gP,GAC/BipG,EACF,OAAO4H,EAET7wG,EAASA,GAAU,CAAC,EACpB,IA+BE94C,EA/BEggG,EAAYn5B,EAAMosE,kBAAkB/9M,GAASzxJ,IAAI,QACjD+hV,EAAkB4G,IAAmBqB,EAASv4L,IAC9CwnL,EAAWuI,IAAWO,GAA0F,QAAtE8B,EAAqB9J,IAAkBgI,EAAgB9I,iBAA8C,IAAvB4K,OAAgC,EAASA,EAAmBj3M,UAAOn4G,EAC3LyoO,EAASmY,EAAOnY,QAAU1yJ,EAAO6qK,OAAOnY,QAAU,QAClDu/D,EAAaqrD,IAAc,CAC7BzyG,OAAQA,EACR5jH,QAASA,EACTwnL,SAAUA,EACV1c,UAAWA,IAQT2sD,EAAa,CACf7zG,OAAQA,EACR5jH,QAASA,EACT2xI,MAAOA,EACPk+C,QAASA,EACT0I,SAAUA,EACVjI,gBAAiBA,EACjBulC,aAAcA,EACd98Q,OAAQA,EACR+xN,UAAWA,EACXr/D,OAAQA,EACRu/D,WAAYA,EACZ3jS,UAlBcivV,IAAa,CAC3B1yG,OAAQA,EACRonD,WAAYA,EACZv/D,OAAQA,EACRoqH,aAAcA,KAgBZ9qJ,EAAY,IAA2BkpJ,KAE3C,IACE,IAAKlpJ,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAI0iK,EAAWujB,EAAMp8N,MACrB,KAAmB,aAAfs8T,GAA6BzjH,EAASz5H,WAAW,WAA4B,WAAfk9O,GAA2BzjH,EAASz5H,WAAW,aAAjH,CAGA,IAAI4hJ,EAASnoB,KAAYouK,IAAcA,IAAYpuK,GAAUkwK,GAAc7zG,EAAOr8D,GAClF,QAAevkL,IAAX0sM,EAAsB,CACxB,IAAIqyG,EAAWk1C,IAAWvnJ,EAAQnoB,EAAUq8D,EAAQ+tB,EAAMwxC,SAASnjL,KAC/D+hL,QAAwC/+S,IAA5B+1E,EAAO6qK,OAAOr8D,KAC5BktK,EAAWhmX,IAAI84M,EAAUmoB,EAAQqyG,EAErC,CAPA,CAQF,CACF,CAAE,MAAOhuS,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CAWA,IAVA,IA2BM8nX,EA3BFC,EAAwH,QAAtGT,EAA0C,QAAtBC,EAAUvzG,SAAgC,IAAZuzG,OAAqB,EAASA,EAAQ5+B,gBAA2C,IAArB2+B,EAA8BA,EAAmB,CAAC,EAClLpe,EAAa2b,EAAWlmX,IAAI,cAC5Bs8T,EAAe,CAAC,EAChB+sD,EAAqB,CACvBtnC,gBAAiBA,EACjB3+C,MAAOA,EACP3xI,QAASA,EACTy0N,WAAYA,EACZzpD,WAAYA,GAELh9G,EAAM,EAAG6nJ,EAAQ,CAAC,SAAU,SAAU,QAAS,UAAW,WAAY,WAAY7nJ,EAAM6nJ,EAAMzoW,OAAQ4gN,IAAO,CACpH,IAAI6pK,EACAhwC,EAAOguB,EAAM7nJ,GACb8pK,EAAqBpE,IAAmE,QAAjDmE,EAAuBF,EAAe9vC,UAA4C,IAAzBgwC,EAAkCA,EAAuB,CAAC,EAAGlmF,GAC7JjjS,EAAQm5U,KAAQssC,IAAoBA,IAAkBtsC,GAAMiwC,EAAoBF,GAClFE,OACY90V,IAAVt0B,GAAwBsoU,GAAQtoU,KAClCm8T,EAAagd,GAAQ,IAAc,IAAc,IAAc,CAAC,EAAGixB,SAAgDA,EAAW1rW,QAAU2iV,IAAWO,GAAmB,CACpK9hV,KAAM,GAAGsR,OAAOm3T,GAAQqZ,EAAgBlkN,OAAQ,YAAYtsH,OAAO+nU,IACjE,CAAC,GAAIixB,SAAgDA,EAAW1rW,OAAS,CAC3Eo/P,cAAessG,GACb,CAAC,GAAI,CAAC,EAAG,CACX/mW,OAAQrD,IAGd,CACKsoU,GAAQnM,IAEX4pD,EAAWhmX,IAAI,SAAUo8T,IAAyC,QAAvB6sD,EAAW9zG,SAAiC,IAAb8zG,IAAuBA,EAASn/B,WAE5G,OAAOk8B,CACT,CAwEO,SAASoC,IAAqBkB,EAAcC,GACjD,IAAKD,EACH,OAAOC,EAAYl1W,QAErB,IAAIm1W,EAAeF,EAAa/d,gBAAgB,UAC5Cke,EAAcF,EAAYhe,gBAAgB,UAC9C,IAAIie,EAAal2C,WAAYm2C,EAAYn2C,UAAYk2C,EAAavpX,QAAUwpX,EAAYxpX,MAAxF,CAKA,IAGEknU,EA8BIuiD,EAAuBC,EAjCzBC,GAAa,EAEbxiD,EAAa,IAA2Bo+C,KAE5C,IACE,IAAIjkO,EAAQ,WACV,IAAIv+I,EAAOmkU,EAAOlnU,MACd4pX,EAA0B/d,IAAwBwd,EAAa/d,gBAAgBvoW,GAAOumX,EAAYhe,gBAAgBvoW,GAAOA,EAAM,UAEnI,SAAUmvB,EAAIC,GACZ,OAAQpvB,GACN,IAAK,aACH,OA+BZ,SAAyB8mX,EAAKC,GAC5B,GAAkB,WAAdA,EAAI9pX,MAEN,OAAO8pX,EAET,OAAOD,CACT,CArCmBE,CAAgB73V,EAAIC,GAC7B,IAAK,QACH,OAAO+gT,IAAoBhhT,EAAIC,GACjC,IAAK,OAGH,OADAw3V,GAAa,EACNle,IAAa,UAExB,OAAOG,IAAkB15U,EAAIC,EAAIpvB,EAAM,SACzC,IACAsmX,EAAa9d,gBAAgBxoW,EAAM6mX,EACrC,EACA,IAAKziD,EAAWxrT,MAAOurT,EAASC,EAAW16S,KAAK0pB,MAC9CmrG,GAEJ,CAAE,MAAOj8G,GACP8hS,EAAWplU,EAAEsjC,EACf,CAAE,QACA8hS,EAAWjmU,GACb,CACA,GAAIyoX,EAEsD,QAAnDF,EAAwBJ,EAAa/mI,gBAAgD,IAA1BmnI,GAA+F,QAA1DA,EAAwBA,EAAsBjxJ,cAA8C,IAA1BixJ,GAAoCA,EAAsBjnS,UAC/NkmP,GAAqB2gD,EAAa/mI,SAAU,CAAC,SAAU,aAED,QAAnDonI,EAAwBL,EAAah2C,gBAAgD,IAA1Bq2C,GAA+F,QAA1DA,EAAwBA,EAAsBlxJ,cAA8C,IAA1BkxJ,GAAoCA,EAAsBlnS,UAC/NkmP,GAAqB2gD,EAAah2C,SAAU,CAAC,SAAU,aAG3D,OAAOg2C,CA1CP,CA2CF,CCjTA,IAAI,IAAY,CAAC,UAAW,YAAa,cAGzC,SAAS,IAA2BpmW,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAc3K,SAAS,IAAgBksE,GAC9B,IAGE7mE,EAHE4tJ,EAAuB/mF,EAAM5lO,UAAUy3M,QACvCm1G,EAAiB,CAAC,EAClB5tJ,EAAY,IAA2B,GAAK2tJ,IAEhD,IACE,IAAK3tJ,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIm7G,EAAU8qE,EAAMp8N,MAChBg6W,EAAiB/2E,EAAMosE,kBAAkB/9M,GACzC44N,EAAa,GAAUlQ,EAAen6W,IAAI,YAC9C,GAAIoqX,EAAeC,GAAa,CAC9B,IACEppJ,EADEC,EAAa,IAA2BkpJ,EAAeC,IAE3D,IACE,IAAKnpJ,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,CAExCgyU,IADernJ,EAAO9gO,MACsBgqX,EAAqB14N,KAG5E24N,EAAeC,GAAY9rX,KAAK4rX,EAAqB14N,GAEzD,CACF,CAAE,MAAOjsH,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACF,MACE+oX,EAAeC,GAAc,CAACF,EAAqB14N,GAASl9I,QAEhE,CACF,CAAE,MAAOixB,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACA,IAAI4zQ,EAAUzqC,GAAK4/I,GAAgBx8T,OAAO5+B,KAAI,SAAU1L,GACtD,OAMG,SAAwB4iW,EAAY17Q,GACzC,IAAI8/Q,EACAC,EAAsBrE,EAAW1a,UACnC8S,EAAUiM,EAAoBjM,QAC9BvxB,EAAYw9B,EAAoBx9B,UAEhC13E,GADak1G,EAAoBhgB,YACxB,OAAyBggB,EAAqB,MACzD,GAAIjM,EACF,QAEkB,IAAhB9zQ,EAAOp0C,MAAiC3hC,MAAf4gP,EAAOj/M,OAClCi/M,EAAOj/M,MAAO,GAEhB,GAA0C,QAArCk0T,EAAkBj1G,EAAO18C,cAAwC,IAApB2xJ,GAA8BA,EAAgB9jV,QAAS,CACvG,IAAItlB,EAAMm0P,EAAO18C,OAAOnyL,QAAQhjC,QAC5B0d,EAAI04B,MAA8B,gBAAtB14B,EAAI04B,KAAY,OAAwB14B,EAAI/B,QAAWk2P,EAAOl2P,SAE5E+B,EAAI/B,OAAS,CACXhf,MAAO,gBAIX,IACE8kO,EADEC,EAAa,IAA2B2zH,KAE5C,IACE,IAAK3zH,EAAWppN,MAAOmpN,EAASC,EAAWt4M,KAAK0pB,MAAO,CACrD,IAAI0iK,EAAWisB,EAAO9kO,MAClBk1Q,EAAOr8D,WACF93L,EAAI83L,EAEf,CACF,CAAE,MAAOxzK,GACP0/L,EAAWhjO,EAAEsjC,EACf,CAAE,QACA0/L,EAAW7jO,GACb,CACF,CACKg0Q,EAAOtlN,cAEHslN,EAAOtlN,MAEhB,QAAkBt7B,IAAds4T,EAAyB,CAC3B,IAAIy9B,EACA98I,EAAOq/G,EAC+B,QAArCy9B,EAAkBn1G,EAAO18C,cAAwC,IAApB6xJ,GAA6E,QAA9CA,EAAkBA,EAAgBz4G,cAAwC,IAApBy4G,GAA8BA,EAAgBhnX,QAAU4tU,IAAY/7D,EAAO18C,OAAOo5C,OAAOvuQ,OAAOqb,QACrO6uN,EAAOt+K,GAAW29R,EAAW,cAAe13E,EAAO18C,OAAOo5C,OAAOvuQ,OAAOqb,KAAK2oS,SAjGnF,SAAyBnyC,EAAQikE,EAAMkR,EAAQuzB,GAC7C,IAAI0M,EAAgBxM,EAASC,EACzB/+W,EAAI+V,EAC6B,QAApCu1W,EAAiBp1G,EAAO18C,cAAuC,IAAnB8xJ,IAA6Cp1G,EAAO18C,OAAS,CAAC,GAChE,QAA1CslJ,GAAW9+W,EAAKk2Q,EAAO18C,QAAQ2gH,UAA+B,IAAZ2kC,IAA+B9+W,EAAGm6U,GAAQ,CAAC,GAC1C,QAAnD4kC,GAAahpW,EAAKmgQ,EAAO18C,OAAO2gH,IAAO91U,cAAkC,IAAd06W,IAAmChpW,EAAG1R,OAAS,CAAC,GAE5G6xQ,EAAO18C,OAAO2gH,GAAM91U,OAAOgnV,GAAUuzB,CACvC,CA2FI2M,CAAgBr1G,EAAQ,SAAU,OAAQ,CACxCmyC,OAAQ95E,GAEZ,CACA,OAAO2nC,CACT,CA1DWs1G,CAAernW,EAAG8/Q,EAAM54L,OACjC,IAAGj8F,QAAO,SAAU+U,GAClB,YAAamR,IAANnR,CACT,IACA,OAAO2xP,CACT,CC7DA,SAAS,IAAQtyO,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAIlf,SAAS,IAAoB08R,GAClC,OAAI6sE,IAAa7sE,IAAUkiF,IAAcliF,GAMpC,SAAgDA,GACrD,OAAOA,EAAMv1R,SAAS8hB,QAAO,SAAUw6P,EAAar8Q,GAClD,OAAOq8Q,EAAY54Q,OAAOzD,EAAM88W,sBAClC,GAAGC,IAA2BznF,GAChC,CATW0nF,CAAuC1nF,GAEvCynF,IAA2BznF,EAEtC,CAMO,SAASynF,IAA2BznF,GACzC,IAAI5lO,EAAY4lO,EAAM5lO,UAAUshN,WAChC,IAAKthN,GAAaA,EAAU8kD,OAC1B,MAAO,GAET,IAAIw8J,EAAathN,EAAUguS,UACvBvrW,EAAO6+Q,EAAW7+Q,KACtB,GAAKu9D,EAAU95C,KASR,CAEL,IAAI4e,EAAO,CACTklR,OAAQ,IAAIj2S,OAAOisD,EAAUl7B,KAAKtT,KAAI,SAAUohC,GAC9C,OAAOA,EAAIo3P,MACb,IAAGngS,KAAK,MAAO,MAEb0jW,EAAOvtT,EAAU95C,KAAKiM,QAAO,SAAUwwM,EAASz8M,GAClD,IAAI2L,EAAS+hT,IAAY1tT,GAAQA,EAAK8jS,OAAS,SAASj2S,OAAO6xR,EAAM4nF,iBAAiBtnW,GAAO,MAK7F,OAJK,GAASy8M,EAAS9wM,IAErB8wM,EAAQ5hO,KAAK8wB,GAER8wM,CACT,GAAG,IACH,GAAI4qJ,EAAKlsX,QAAU,EACjB,MAAM,IAAIonC,MAAM,iDAElB,MAAO,CAAC,IAAc,CACpBhmC,KAAMA,EACNqiC,KAAMA,EACN+hP,IAAK,CACHmjC,OAAQujE,EAAKlsX,OAAS,EAAI,IAAI0S,OAAOw5W,EAAK1jW,KAAK,MAAO,KAAO0jW,EAAK,KAEnEjsG,GACL,CAhCE,MAAO,CAAC,IAAc,IAAc,CAClC7+Q,KAAMA,GACL,CACDqW,UAAW,CACTkxS,OAAQ,6BAER1oC,GA2BR,CC5DO,IAAImsG,IAAwB,CAAC,OAAQ,YAAa,aAAc,SAAU,SAAU,YAAa,WAAY,WAAY,cAAe,WAAY,WAAY,QAAS,WAAY,SAAU,QAAS,UAAW,QCM1N,SAAS,IAAQtoV,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CAEpV,SAAS,IAAa8iN,GAAW,IAAIC,EACrC,WAAuC,GAAuB,oBAAZ1kH,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFxqD,QAAQ10E,UAAU03C,QAAQh2C,KAAKq9H,QAAQC,UAAUtqD,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO1wE,KAAK,OAAO,CAAO,CAAE,CADvQ,GAA6B,OAAO,WAAkC,IAAsC0O,EAAlCgxO,GAAQ,QAAgBF,GAAkB,GAAIC,EAA2B,CAAE,IAAIE,GAAY,QAAgB7jP,MAAM8E,YAAa8N,EAASqsH,QAAQC,UAAU0kH,EAAOhjP,UAAWijP,EAAY,MAASjxO,EAASgxO,EAAMviP,MAAMrB,KAAMY,WAAc,OAAO,QAA2BZ,KAAM4S,EAAS,CAAG,CAGja,IAAIs6W,IAAmC,SAAU9e,IACtD,QAAU8e,EAAqB9e,GAC/B,IAAI1sW,EAAS,IAAawrX,GAC1B,SAASA,EAAoBjrX,EAAMkrX,EAAqB7oV,EAAM5e,GAC5D,IAAIjlB,EAaJ,OAZA,QAAgBT,KAAMktX,GACtBzsX,EAAQiB,EAAOE,KAAK5B,KAVxB,SAAuB0I,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAU3d,CAAc,CAAC,EAAGykX,GAE5C,CACElrX,KAAMA,IAIRxB,EAAM0sX,oBAAsBA,EAC5B1sX,EAAM6jC,KAAOA,EACb7jC,EAAMilB,KAAOA,EACbjlB,EAAM6jH,QAAS,EACR7jH,CACT,CAUA,OANA,QAAaysX,EAAqB,CAAC,CACjCrsV,IAAK,QACL7+B,IAAK,WACH,QAAShC,KAAK0lB,IAChB,KAEKwnW,CACT,CA7B8C,CA6B5C3f,KCtCF,SAAS,IAA2BnoV,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAClL,SAAS,IAAQv0L,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAWlf,SAAS,IAAgB08R,GAC9BA,EAAM5lO,UAAUshN,WAAa6vF,IAAYvrE,GAE3C,SAA6BA,GAC3B,GAAIA,EAAMktE,cAAe,CACvB,IAAI8a,EACAlhG,EAAOmmD,IAAejtC,EAAM+nF,qBAC5B9mG,IAAQ6F,IAAuB,MAAdA,EAAKpzQ,OAAmC,MAAlBozQ,EAAK5zQ,YAC5CgsB,EAAO+hP,EAAM,CAAC+e,EAAM4tE,iBAAiB,SAAU5tE,EAAM4tE,iBAAiB,gBAAav8U,EACnF/Q,EAAO2gQ,EASf,SAAuB+e,GAGrB,IAFA,IAAI1/Q,EAAO,GACPsmU,EAAW5mD,EAAM4mD,SACZrrV,EAAK,EAAGs3C,EAAO,CAAC,CAACy0R,IAAWD,KAAW,CAACG,IAAYD,MAAahsU,EAAKs3C,EAAKp3C,OAAQF,IAAM,CAChG,IAAI0sX,EAAgBp1U,EAAKt3C,IACrBgqV,IAAmBqB,EAASqhC,EAAc,MAAQ1iC,IAAmBqB,EAASqhC,EAAc,OAC9F3nW,EAAKnlB,KAAK,CACRipT,OAAQpkB,EAAM6uE,QAAQ,WAAW1gW,OAAOmS,EAAK7kB,UAGnD,CACIukS,EAAMkoF,gBAAgBtgD,MAAU5nC,EAAMw+E,cAAc52C,KAAOrkU,OAASm2U,KACtEp5T,EAAKnlB,KAAK,CACRipT,OAAQpkB,EAAM6uE,QAAQ,WAAW1gW,OAAOmS,EAAK7kB,WAG7B,IAAhB6kB,EAAK7kB,QAEP6kB,EAAKnlB,KAAK6kS,EAAMmoF,gBAAgBrf,IAAesf,OAEjD,OAAO9nW,CACT,CA9BqB+nW,CAAcroF,QAAS3uQ,EACpCi3V,EAAW,IAAIR,IAAoB9nF,EAAM0tE,gBAAe,GAAO,IAAc,IAAc,CAAC,EAAmE,QAA/Dsa,EAAkB/6C,IAAejtC,EAAM54L,OAAOs0K,mBAA6C,IAApBssG,EAA6BA,EAAkB,CAAC,GAAIlhG,QAAmCA,EAAO,CAAC,GAAI5nP,EAAM5e,GAIpR,OAHKgoW,EAAS1rX,IAAI,SAChB0rX,EAASxrX,IAAI,OAAQ,cAAc,GAE9BwrX,CACT,CACA,MACF,CAhBoDC,CAAoBvoF,GAkExE,SAAiCA,GAC/B,GAA8B,IAA1BA,EAAMv1R,SAAShP,OACjB,OAEF,IAAI+sX,EAGFrvJ,EADEC,EAAY,IAA2B4mE,EAAMv1R,UAEjD,IACE,IAAK2uN,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAElD,IADaimL,EAAMp8N,MAErB,CAEF,CAAE,MAAOqlC,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACA,IAAIwqX,EAAWrlP,GAAM48J,EAAMv1R,UAAU,SAAUC,GAC7C,IAAIgxQ,EAAahxQ,EAAM0vD,UAAUshN,WACjC,GAAKA,EAGE,IAAK8sG,EAIL,CACL,IAAI1xK,EAxDV,SAA2B3/K,EAAO8qL,GAChC,IAAIymK,EAAsBtlP,GAAMykP,KAAuB,SAAU/nX,GAE/D,OAAK,GAAeq3B,EAAMi5S,SAAUtwU,KAAU,GAAemiN,EAAOmuH,SAAUtwU,OAI1E,GAAeq3B,EAAMi5S,SAAUtwU,IAAS,GAAemiN,EAAOmuH,SAAUtwU,IAE5EyjU,GAAUpsS,EAAMv6B,IAAIkD,GAAOmiN,EAAOrlN,IAAIkD,IAIxC,IACIo/B,EAAOqkS,GAAUpsS,EAAM+H,KAAM+iL,EAAO/iL,MACxC,GAAIA,EAAM,CACR,GAAIwpV,EACF,OAAOvxV,EACF,GAAIosS,GAAUpsS,EAAMi5S,SAAU,CAAC,GACpC,OAAOnuH,EACF,GAAIshH,GAAUthH,EAAOmuH,SAAU,CAAC,GACrC,OAAOj5S,CAEX,CAEA,OAAO,IACT,CA8BkBwxV,CAAkBH,EAAmB9sG,GAIjD,OAHI5kE,IACF0xK,EAAoB1xK,KAEbA,CACX,CAPE,OADA0xK,EAAoB9sG,GACb,CAOT,CAXE,OAAO,CAYX,IAEA,GAAI8sG,GAAqBC,EAAU,CAEjC,IAIE5qJ,EAJEhhO,EAAOmjS,EAAM0tE,gBAAe,GAC5Bkb,EAAkB,IAAId,IAAoBjrX,EAAM2rX,EAAkBT,oBAAqBS,EAAkBtpV,KAAMskS,GAAUglD,EAAkBloW,OAE3Iw9M,EAAa,IAA2BkiE,EAAMv1R,UAElD,IACE,IAAKqzN,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,CACrD,IAAIxoC,EAAQmzN,EAAO9gO,MACf2+Q,EAAahxQ,EAAM0vD,UAAUshN,WACjC,GAAIA,EAAY,CAEZ,IAAImtG,EADN,GAAIntG,EAAWotG,OAEZD,EAAwBD,EAAgBtoW,MAAMnlB,KAAKc,MAAM4sX,GAAuB,QAAmBn+W,EAAM0vD,UAAUshN,WAAWp7P,OAEjI5V,EAAMq+W,iBAAiBrtG,EAAW9+Q,IAAI,QAASC,GAC/C6+Q,EAAWx8J,QAAS,CACtB,CACF,CACF,CAAE,MAAO98E,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACA,OAAO2qX,CACT,CACA,MACF,CAnIiFI,CAAwBhpF,EACzG,+ECVI,IAAY,CAAC,UAKjB,SAAS,IAA2BhgR,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAClL,SAAS,IAAawqB,GAAW,IAAIC,EACrC,WAAuC,GAAuB,oBAAZ1kH,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFxqD,QAAQ10E,UAAU03C,QAAQh2C,KAAKq9H,QAAQC,UAAUtqD,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO1wE,KAAK,OAAO,CAAO,CAAE,CADvQ,GAA6B,OAAO,WAAkC,IAAsC0O,EAAlCgxO,GAAQ,QAAgBF,GAAkB,GAAIC,EAA2B,CAAE,IAAIE,GAAY,QAAgB7jP,MAAM8E,YAAa8N,EAASqsH,QAAQC,UAAU0kH,EAAOhjP,UAAWijP,EAAY,MAASjxO,EAASgxO,EAAMviP,MAAMrB,KAAMY,WAAc,OAAO,QAA2BZ,KAAM4S,EAAS,CAAG,CAExa,SAAS,IAAQ+xB,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CA+Bzf,SAAS2lX,IAAOliK,EAAKtsF,GACnB,MAAO,GAAGtsH,OAAOq+T,IAAYzlH,GAAM,KAAK54M,OAAOssH,EACjD,CAOO,SAASyuP,IAAiBlpF,EAAOvlK,EAAOssF,GAC7C,IAAIoiK,EAEA1tV,EAAMwtV,IAD6D,QAAlDE,EAAgB18C,IAAa1lH,OAAK11L,UAA0C,IAAlB83V,EAA2BA,EAAgB,CAAC,EAC3F1uP,GAChC,OAAOulK,EAAM6uE,QAAQ,GAAG1gW,OAAOstB,EAAK,SACtC,CAIA,SAAS2tV,IAAmBzqX,EAAGooN,EAAKi5E,GAClC,IAAIr8D,EACA74G,EAIF64G,EATJ,SAAwBhlO,GACtB,MAAO,OAAQA,CACjB,CAIM0qX,CAAe1qX,GACZ,GAASA,EAAEglO,IAAM,CAAChlO,EAAEglO,GAAI,GAAGx1N,OAAOxP,EAAEglO,GAAI,SAAW,CAAChlO,EAAEglO,GAAG,GAAIhlO,EAAEglO,GAAG,IAElE,CAAC,IAAQhlO,EAAG,CACfulV,OAAO,IACL,IAAQvlV,EAAG,CACb4gV,UAAW,MACX2E,OAAO,KAGX,IAAIolC,EAAgB,IAAc,CAAC,EAAG78C,IAAa1lH,OAAK11L,IACpDoK,EAAMwtV,IAAOK,EAAe3qX,EAAE87H,OAC9B8uP,EA9BN,SAA6BvpF,EAAOvkQ,GAClC,MAAO,CACL2oR,OAAQpkB,EAAM6uE,QAAQ,GAAG1gW,OAAOstB,EAAK,UACrC+tV,aAAcxpF,EAAM6uE,QAAQ,GAAG1gW,OAAOstB,EAAK,YAE/C,CAyB6BguV,CAAoBzpF,EAAOvkQ,GACpD2oR,EAASmlE,EAAqBnlE,OAC9BolE,EAAeD,EAAqBC,aACtC,GAAI98C,IAAkB48C,EAAcriK,QAAS,CAC3C,IAAID,EAAMsiK,EAAcriK,OACxBn8F,EAAOyvP,IAAqBv6E,EAAOh5E,EAAIzuE,MAAOyuE,UACvCsiK,EAAcriK,MACvB,CAaA,MAAO,CACLxrL,IAAKA,EACLiuV,aAbiB,IAAc,IAAc,IAAc,CAC3D3iK,IAAKuiK,EACL7uP,MAAO97H,EAAE87H,MACTkpG,GAAI,CAACA,IACJygF,EAAS,CACVA,OAAQA,GACN,CAAC,GAAIolE,EAAe,CACtBA,aAAcA,GACZ,CAAC,GAAI1+P,EAAO,CACdA,KAAMA,GACJ,CAAC,GAKP,CACO,IAAI6+P,IAAuB,SAAUlf,IAC1C,QAAUkf,EAASlf,GACnB,IAAInuW,EAAS,IAAaqtX,GAC1B,SAASA,EAAQn9W,EAAQw8N,GACvB,IAAI3tO,EAIJ,OAHA,QAAgBT,KAAM+uX,IACtBtuX,EAAQiB,EAAOE,KAAK5B,KAAM4R,IACpBw8N,KAAOA,EACN3tO,CACT,CAoKA,OAnKA,QAAasuX,EAAS,CAAC,CACrBluV,IAAK,QACL1+B,MAAO,WACL,OAAO,IAAI4sX,EAAQ,KAAMnmD,GAAU5oU,KAAKouO,MAC1C,GACC,CACDvtM,IAAK,QACL1+B,MAKA,SAAeoiC,EAAOyqV,GACpB,IACEzwJ,EADEC,EAAY,IAA2B,GAAKj6L,EAAM6pM,OAEtD,IACE,IAAK5P,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIzX,EAAM09L,EAAMp8N,MACZ0+B,KAAO7gC,KAAKouO,MACd4gJ,EAAazqV,EAAM6pM,KAAKvtM,GAAK2oR,OAAQxpT,KAAKouO,KAAKvtM,GAAK2oR,QAEpDxpT,KAAKouO,KAAKvtM,GAAKkoM,GAAK1mM,GAAO,GAAG9uB,QAAO,QAAmBvT,KAAKouO,KAAKvtM,GAAKkoM,KAAK,QAAmBxkM,EAAM6pM,KAAKvtM,GAAKkoM,KAAM,KAErH/oO,KAAKouO,KAAKvtM,GAAO0D,EAAM6pM,KAAKvtM,EAEhC,CACF,CAAE,MAAO2G,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACA,IACE4/N,EADEC,EAAa,IAA2B3+L,EAAM10B,UAElD,IACE,IAAKqzN,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,CACrD,IAAIxoC,EAAQmzN,EAAO9gO,MACnBoiC,EAAMl1B,YAAYS,GAClBA,EAAM8B,OAAS5R,IACjB,CACF,CAAE,MAAOwnC,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACAkhC,EAAMpxB,QACR,GACC,CACD0tB,IAAK,iBACL1+B,MAAO,WACL,OAAO,IAAIwkC,IAAI6lM,GAAKxsO,KAAKouO,MAAMp9M,KAAI,SAAU7L,GAC3C,OAAOA,EAAE4jN,EACX,IAAGn5K,KAAK,GACV,GACC,CACD/uB,IAAK,kBACL1+B,MAAO,WACL,OAAO,IAAIwkC,IAAI6lM,GAAKxsO,KAAKouO,MAAMp9M,KAAI,SAAU7L,GAC3C,OAAOA,EAAE06G,KACX,IACF,GACC,CACDh/F,IAAK,OACL1+B,MAAO,WACL,MAAO,OAAOoR,OAAO,GAAMvT,KAAKouO,MAClC,GACC,CACDvtM,IAAK,WACL1+B,MAAO,WACL,OAAOqqO,GAAKxsO,KAAKouO,MAAM6gJ,SAAQ,SAAU9iK,GACvC,ICxLyB11M,EDwLrB3C,EAAY,GACZo7W,GCzLqBz4W,EDyLF01M,EAAI4c,ICxL1B,EAAAomJ,IAAA,GAAe14W,KAAQ,EAAA24W,IAAA,GAAgB34W,KAAQ,EAAA44W,IAAA,GAA2B54W,KAAQ,EAAA64W,IAAA,MDyLjFC,EAAQL,EAAQ,GAChBM,EAAcN,EAAQloW,MAAM,GAC1ByoW,EAAWtjK,EAAIA,IACjBE,EAASojK,EAASpjK,OAClB/qM,GAAS,OAAyBmuW,EAAU,KAC1CC,EAAW,IAAc,IAAc,IAAc,CACvD/mX,KAAM,MACNk3H,MAAOurM,GAAmBj/G,EAAItsF,OAC9BkpG,GAAIwmJ,EACJ/lE,OAAQr9F,EAAIq9F,QACVsoB,IAAkBzlH,GAElB,CACFA,OAAQ,MAHsB,CAC9BA,OAAQA,IAGNF,EAAIj8F,KAAO,CACbA,KAAM,CACJs5L,OAAQ,QAAQj2S,OAAO44M,EAAIj8F,KAAM,OAEjC,CAAC,GAAI5uG,IACJ+qM,GAAUF,EAAIyiK,eACjB96W,EAAUvT,KAAK,CACboI,KAAM,SACNk3H,MAAOurM,GAAmBj/G,EAAItsF,OAC9B2pL,OAAQr9F,EAAIyiK,eAEdc,EAASrjK,OAAS,CAChBm9F,OAAQr9F,EAAIyiK,eAGhB96W,EAAUvT,KAAKmvX,GACf,IACEzoJ,EADEC,EAAa,IAA2BsoJ,GAE5C,IACE,IAAKtoJ,EAAWppN,MAAOmpN,EAASC,EAAWt4M,KAAK0pB,MAE9C,IADA,IAAIywL,EAAK9B,EAAO9kO,MACPjB,EAAI,EAAGA,EAAI,EAAGA,IACrB4S,EAAUvT,KAAK,CACboI,KAAM,UACN+mO,KAAM,IAAQ,CACZ7vG,MAAO0vP,EAAMruX,IACZ,CACDwuO,KAAM,UAER3G,GAAIA,EAAG7nO,IAIf,CAAE,MAAOsmC,GACP0/L,EAAWhjO,EAAEsjC,EACf,CAAE,QACA0/L,EAAW7jO,GACb,CAQA,OAPI8oN,EAAIkkJ,SACNv8V,EAAUvT,KAAK,CACboI,KAAM,UACN+mO,KAAMvjB,EAAIkkJ,QACVtnI,GAAI5c,EAAIwjK,YAGL77W,CACT,GACF,IACE,CAAC,CACH+sB,IAAK,mBACL1+B,MAAO,SAA0ByP,EAAQwzR,GACvC,IAAIh3D,EAAOg3D,EAAMsrE,gBAAe,SAAUkf,EAAmBh5C,EAAUnjL,GACrE,GAAI8wL,IAAgB3N,IAAa7E,IAAU6E,EAASzqH,KAAM,CACxD,IAAI0jK,EAAsBrB,IAAmB53C,EAAUA,EAASzqH,IAAKi5E,GACnEvkQ,EAAMgvV,EAAoBhvV,IAC1BiuV,EAAee,EAAoBf,aACrCc,EAAkB/uV,GAAO,IAAc,IAAc,IAAc,CAAC,EAAGiuV,GAAec,EAAkB/uV,IAvOlH,SAAsBukQ,EAAOwxC,EAAUnjL,EAASjnD,GAC9C,GAAIo4O,IAAiBhO,EAAUnjL,GAAU,CACvC,IAAI5hG,EAAMi+T,EAENrlC,EAAQkmB,IAAYvrE,IAAmI,QAAzHvzO,EAA+C,QAAvCi+T,EAAc1qF,EAAMvxB,KAAKpgH,UAAsC,IAAhBq8N,EAAyBA,EAAc1qF,EAAM/tB,OAAO5jH,UAA+B,IAAT5hG,EAAkBA,EAAY,CAAC,EAC9Lm1R,EAAa,IAAQpQ,EAAU,CACjClnG,KAAM,UAEJu3G,EAAW,IAAQrQ,EAAU,CAC/BlnG,KAAM,QACNi1G,UAAW,QAEb,MAAO,CACLgrC,UAAW,IAAQ/4C,EAAU,CAC3B+N,UAAW,QACX2E,OAAO,IAET+mB,QAAShqB,IAAoBW,EAAYC,EAAUwD,EAAMz2S,OAAQy2S,EAAMlnI,WAAY/2G,GAEvF,CACA,MAAO,CAAC,CACV,CAkNyHujR,CAAa3qF,EAAOwxC,EAAUnjL,EAAS2xI,EAAM54L,QAC9J,CACA,OAAOojR,CACT,GAAG,CAAC,GACJ,OAAInlD,GAAQr8F,GACH,KAEF,IAAI2gJ,EAAQn9W,EAAQw8N,EAC7B,GAKC,CACDvtM,IAAK,oBACL1+B,MAAO,SAA2ByP,EAAQ7N,EAAGqhS,GAC3C,IAAI4qF,EAAuBxB,IAAmBzqX,EAAGA,EAAEooN,IAAKi5E,GACtDvkQ,EAAMmvV,EAAqBnvV,IAC3BiuV,EAAekB,EAAqBlB,aACtC,OAAO,IAAIC,EAAQn9W,GAAQ,OAAgB,CAAC,EAAGivB,EAAKiuV,GACtD,KAEKC,CACT,CA9KkC,CA8KhCzf,KEpRF,SAAS,IAAa5rH,GAAW,IAAIC,EACrC,WAAuC,GAAuB,oBAAZ1kH,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFxqD,QAAQ10E,UAAU03C,QAAQh2C,KAAKq9H,QAAQC,UAAUtqD,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO1wE,KAAK,OAAO,CAAO,CAAE,CADvQ,GAA6B,OAAO,WAAkC,IAAsC0O,EAAlCgxO,GAAQ,QAAgBF,GAAkB,GAAIC,EAA2B,CAAE,IAAIE,GAAY,QAAgB7jP,MAAM8E,YAAa8N,EAASqsH,QAAQC,UAAU0kH,EAAOhjP,UAAWijP,EAAY,MAASjxO,EAASgxO,EAAMviP,MAAMrB,KAAMY,WAAc,OAAO,QAA2BZ,KAAM4S,EAAS,CAAG,CAExa,SAAS,IAA2BwS,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CASlL,SAAS+2J,IAAa1jJ,EAAM94E,EAASmjL,EAAUxxC,GAC7C,IAAIsmD,EACAwtB,EAAcvI,IAAYvrE,GAASA,EAAM4mD,SAAS1c,IAAyB77K,SAAYh9H,EAC3F,GAAI8tT,IAAgB3N,IAAa+5B,IAAYvrE,IAAUgjD,IAAWxR,EAAUsiC,EAAa9zE,EAAMk+C,QAASl+C,EAAM54L,QAC5G+/H,EAAK/6N,IAAI,IAAQolU,EAAU,CAAC,IAC5BrqG,EAAK/6N,IAAI,IAAQolU,EAAU,CACzBrhL,OAAQ,SAENqhL,EAASzqH,KAAOy4H,IAAiBhO,EAAUnjL,IAC7C84E,EAAK/6N,IAAI,IAAQolU,EAAU,CACzB+N,UAAW,gBAGV,GAAIrW,IAAqB76K,GAAU,CACxC,IAAIy8N,EAAa7hD,IAA8B56K,GAC/C84E,EAAK/6N,IAAI4zR,EAAM6uE,QAAQic,GACzB,MACE3jJ,EAAK/6N,IAAI,IAAQolU,IAKnB,OAHIuP,IAAgBvP,IhGuGf,SAAsBjvR,GAC3B,OAAOwG,GAASxG,IAAU,UAAWA,CACvC,CgGzGmCwoU,CAAoD,QAAtCzkC,EAAkB9U,EAAS99T,aAAuC,IAApB4yU,OAA6B,EAASA,EAAgB/jS,QACjJ4kL,EAAK/6N,IAAIolU,EAAS99T,MAAM6uC,MAAMk4E,OAEzB0sG,CACT,CAkCO,IAAI6jJ,IAA6B,SAAUvgB,IAChD,QAAUugB,EAAevgB,GACzB,IAAInuW,EAAS,IAAa0uX,GAK1B,SAASA,EAAcx+W,EAAQy+W,EAAYhjJ,GACzC,IAAI5sO,EAKJ,OAJA,QAAgBT,KAAMowX,IACtB3vX,EAAQiB,EAAOE,KAAK5B,KAAM4R,IACpBy+W,WAAaA,EACnB5vX,EAAM4sO,SAAWA,EACV5sO,CACT,CAwPA,OAvPA,QAAa2vX,EAAe,CAAC,CAC3BvvV,IAAK,QACL1+B,MAAO,WACL,OAAO,IAAIiuX,EAAc,KAAM,IAAIzpV,IAAI3mC,KAAKqwX,YAAaznD,GAAU5oU,KAAKqtO,UAC1E,GACC,CACDxsM,IAAK,UACL7+B,IAAK,WACH,OAAOhC,KAAKqwX,UACd,GACC,CACDxvV,IAAK,QACL1+B,MAAO,SAAeoiC,GACpB,OAAIolS,GAAS3pU,KAAKqwX,WAAY9rV,EAAM8rV,aA7D1C,SAAuBC,EAAgBC,GACrC,IACEhyJ,EADEC,EAAY,IAA2B,GAAK+xJ,IAEhD,IACE,IAAK/xJ,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAIE2qL,EAJEpjG,EAAQ0+F,EAAMp8N,MAEd4qD,EAAMwjU,EAAc1wP,GACpBqjG,EAAa,IAA2B,GAAKn2K,IAEjD,IACE,IAAKm2K,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,CACrD,IAEMk4U,EAFFvjU,EAAKg2K,EAAO9gO,MACZ09H,KAASywP,EAGXA,EAAezwP,GAAO5yE,GAAM,IAAItmB,IAAI,GAAGpzB,QAAO,QAA2E,QAAvDi9W,EAAwBF,EAAezwP,GAAO5yE,UAA2C,IAA1BujU,EAAmCA,EAAwB,KAAK,QAAmBzjU,EAAIE,MAExNqjU,EAAezwP,IAAS,OAAgB,CAAC,EAAG5yE,EAAIF,EAAIE,GAExD,CACF,CAAE,MAAOzlB,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACF,CACF,CAAE,MAAOmkC,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACF,CA8BQotX,CAAczwX,KAAKqtO,SAAU9oM,EAAM8oM,WAC5B,IrGER,WACL,IAAIqjJ,GACHA,EAAYjpX,KAASu/E,MAAM3lF,MAAMqvX,EAAW9vX,UAC/C,CqGHM,CAAU,uCACH,EACT,GACC,CACDigC,IAAK,gBACL1+B,MAAO,SAAuBy9H,GAC5BA,EAAOx3H,QAAQpI,KAAKqwX,WAAW7+W,IAAKxR,KAAKqwX,WAC3C,GACC,CACDxvV,IAAK,kBACL1+B,MAAO,WACL,OAAO,IAAIwkC,IAAI,GAAGpzB,QAAO,QAAmBvT,KAAKqwX,aAAa,QAAmB,GAAKrwX,KAAKqtO,YAC7F,GACC,CACDxsM,IAAK,iBACL1+B,MAAO,WACL,IAEE8kO,EAFE/jN,EAAM,IAAIyjB,IACVugM,EAAa,IAA2B,GAAKlnO,KAAKqtO,WAEtD,IACE,IAAKnG,EAAWppN,MAAOmpN,EAASC,EAAWt4M,KAAK0pB,MAAO,CACrD,IAEE6uL,EAFEtnG,EAAQonG,EAAO9kO,MACfilO,EAAa,IAA2B,GAAKpnO,KAAKqtO,SAASxtG,KAE/D,IACE,IAAKunG,EAAWtpN,MAAOqpN,EAASC,EAAWx4M,KAAK0pB,MAAO,CACrD,IAAI2U,EAAKk6K,EAAOhlO,MACZ4T,EAAI/V,KAAKqtO,SAASxtG,GAAO5yE,GACd,IAAXl3C,EAAEuuB,KACJphB,EAAI1R,IAAI,GAAG+B,OAAO05C,EAAI,KAAK15C,OAAOssH,IAElC9pH,EAAE3N,QAAQ8a,EAAI1R,IAAK0R,EAEvB,CACF,CAAE,MAAOskB,GACP4/L,EAAWljO,EAAEsjC,EACf,CAAE,QACA4/L,EAAW/jO,GACb,CACF,CACF,CAAE,MAAOmkC,GACP0/L,EAAWhjO,EAAEsjC,EACf,CAAE,QACA0/L,EAAW7jO,GACb,CACA,OAAO6f,CACT,GACC,CACD2d,IAAK,OACL1+B,MAAO,WACL,MAAO,aAAaoR,OAAO,GAAM,CAC/B88W,WAAYrwX,KAAKqwX,WACjBhjJ,SAAUrtO,KAAKqtO,WAEnB,GACC,CACDxsM,IAAK,WACL1+B,MAAO,WACL,IAIEklO,EAJEt6K,EAAM,GACN6yE,EAAS,GACTmpG,EAAK,GACLzB,EAAa,IAA2B,GAAKtnO,KAAKqtO,WAEtD,IACE,IAAK/F,EAAWxpN,MAAOupN,EAASC,EAAW14M,KAAK0pB,MAAO,CACrD,IAEE+wR,EAFExpM,EAAQwnG,EAAOllO,MACfmnU,EAAa,IAA2B,GAAKtpU,KAAKqtO,SAASxtG,KAE/D,IACE,IAAKypM,EAAWxrT,MAAOurT,EAASC,EAAW16S,KAAK0pB,MAAO,CACrD,IAEEmxR,EAFEx8Q,EAAKo8Q,EAAOlnU,MACZunU,EAAa,IAA2B1pU,KAAKqtO,SAASxtG,GAAO5yE,IAEjE,IACE,IAAKy8Q,EAAW5rT,MAAO2rT,EAASC,EAAW96S,KAAK0pB,MAAO,CACrD,IAAIq4U,EAAQlnD,EAAOtnU,MACnB4mO,EAAGxoO,KAAKowX,GACR5jU,EAAIxsD,KAAK0sD,GACT2yE,EAAOr/H,KAAe,MAAVs/H,EAAgB,KAAOurM,GAAmBvrM,GACxD,CACF,CAAE,MAAOr4F,GACPkiS,EAAWxlU,EAAEsjC,EACf,CAAE,QACAkiS,EAAWrmU,GACb,CACF,CACF,CAAE,MAAOmkC,GACP8hS,EAAWplU,EAAEsjC,EACf,CAAE,QACA8hS,EAAWjmU,GACb,CACF,CACF,CAAE,MAAOmkC,GACP8/L,EAAWpjO,EAAEsjC,EACf,CAAE,QACA8/L,EAAWjkO,GACb,CAQA,MAPa,CACXsF,KAAM,YACNmkO,SAAS,QAAmB9sO,KAAKqwX,YAAYr/V,IAAIo6S,IACjDr+Q,IAAKA,EACL6yE,OAAQA,EACRmpG,GAAIA,EAGR,IACE,CAAC,CACHloM,IAAK,mBACL1+B,MAAO,SAA0ByP,EAAQwzR,GACvC,IAAIirD,GAAc,EAClBjrD,EAAMu/E,iBAAgB,SAAU75B,GAC1BA,EAAGtuB,YACL6zB,GAAc,EAElB,IACA,IAAIugC,EAAO,CAAC,EACRrkJ,EAAO,IAAI5lM,IACf,OAAK0pT,GAILjrD,EAAMu/E,iBAAgB,SAAU/tC,EAAUnjL,GACxC,IAAI+oK,EAAYoa,EAASpa,UACvB38L,EAAQ+2M,EAAS/2M,MACnB,GAAI28L,EACF,GAAkB,UAAdA,EAAuB,CACzB,IAAIq0D,EACqB,QAAxBA,EAASD,EAAK,YAA6B,IAAXC,IAA6BD,EAAK,KAAO,CAAC,GAC3EA,EAAK,KAAY,MAAI,IAAIjqV,IAAI,CAAC,IAAQiwS,EAAU,CAC9C0S,OAAO,KAEX,KAAO,CACL,GAAIjY,IAAY7U,IAAc8U,IAAY9U,GAAY,CACpD,IAAIs0D,EACA7jU,EAAKokR,IAAY7U,GAAa,SAAW,SACzCu0D,EAAWv0D,EAAUvvQ,GACa,QAArC6jU,EAAiBF,EAAKG,UAA0C,IAAnBD,IAA6CF,EAAKG,GAAY,CAAC,GAC7GH,EAAKG,GAAU9jU,GAAM,IAAItmB,IAAI,CAAC,IAAQ,CACpCsmB,GAAIA,EACJ4yE,MAAOkxP,GACN,CACDznC,OAAO,KAEX,KAAO,CACL,IAAI0nC,EAC4B,QAA/BA,EAAcJ,EAAK/wP,UAAoC,IAAhBmxP,IAAuCJ,EAAK/wP,GAAS,CAAC,GAC9F+wP,EAAK/wP,GAAO28L,GAAa,IAAI71R,IAAI,CAAC,IAAQiwS,EAAU,CAClD0S,OAAO,KAEX,CAGE,IAAI2nC,EADN,GAAItgD,IAAel9K,IAA2C,iBAA/B2xI,EAAM8rF,YAAYz9N,GAEd,QAAhCw9N,EAAeL,EAAK/wP,UAAqC,IAAjBoxP,IAAyCL,EAAK/wP,GAAS,CAAC,GACjG+wP,EAAK/wP,GAAY,IAAI,IAAIl5F,IAAI,CAAC,IAAQ,CACpCk5F,MAAOA,EACP28L,UAAW,OACV,CACD8sB,OAAO,MAETsnC,EAAK/wP,GAAY,IAAI,IAAIl5F,IAAI,CAAC,IAAQ,CACpCk5F,MAAOA,EACP28L,UAAW,OACV,CACD8sB,OAAO,KAGb,MAEA2mC,IAAa1jJ,EAAM94E,EAASmjL,EAAUxxC,EAE1C,IACI74D,EAAKjoM,KAAO,GAAKssV,GAAM/vX,SAAW,EAC7B,KAEF,IAAIuvX,EAAcx+W,EAAQ26N,EAAMqkJ,IAxD9B,IAyDX,GACC,CACD/vV,IAAK,oBACL1+B,MAAO,SAA2ByP,EAAQ7N,GACxC,IAAIotX,EAIFvnD,EAHEr9F,EAAO,IAAI5lM,IACXiqV,EAAO,CAAC,EACR/mD,EAAa,IAA2B9lU,EAAEy4T,WAE9C,IACE,IAAKqN,EAAW/rT,MAAO8rT,EAASC,EAAWj7S,KAAK0pB,MAAO,CACrD,IAMQ84U,EAMAC,EAZJvzW,EAAI8rT,EAAOznU,MACX8qD,EAAKnvC,EAAEmvC,GACT4yE,EAAQ/hH,EAAE+hH,MACVkpG,EAAKjrN,EAAEirN,GACT,GAAI97K,EACF,GAAW,UAAPA,EAEwB,QAAzBmkU,EAAUR,EAAK,YAA8B,IAAZQ,IAA+BR,EAAK,KAAO,CAAC,GAC9EA,EAAK,KAAY,MAAI,IAAIjqV,IAAI,CAACoiM,GAAU,IAAQjrN,EAAG,CACjDwrU,OAAO,WAIwB,QAAhC+nC,EAAeT,EAAK/wP,UAAqC,IAAjBwxP,IAAyCT,EAAK/wP,GAAS,CAAC,GACjG+wP,EAAK/wP,GAAO5yE,GAAM,IAAItmB,IAAI,CAACoiM,GAAU,IAAQjrN,EAAG,CAC9CwrU,OAAO,KAIf,CACF,CAAE,MAAO9hT,GACPqiS,EAAW3lU,EAAEsjC,EACf,CAAE,QACAqiS,EAAWxmU,GACb,CACA,IACE0mU,EADEC,EAAa,IAAwD,QAA5BmnD,EAAaptX,EAAE+oO,eAAoC,IAAfqkJ,EAAwBA,EAAa,IAEtH,IACE,IAAKnnD,EAAWlsT,MAAOisT,EAASC,EAAWp7S,KAAK0pB,MAAO,CACrD,IAAIH,EAAK4xR,EAAO5nU,MAChBoqO,EAAK/6N,IAAI2mC,EACX,CACF,CAAE,MAAO3Q,GACPwiS,EAAW9lU,EAAEsjC,EACf,CAAE,QACAwiS,EAAW3mU,GACb,CACA,OAAIkpO,EAAKjoM,KAAO,GAAKssV,GAAM/vX,SAAW,EAC7B,KAEF,IAAIuvX,EAAcx+W,EAAQ26N,EAAMqkJ,EACzC,KAEKR,CACT,CAvQwC,CAuQtC9gB,KC7UF,SAAS,IAAQ3qU,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CACzf,SAAS,IAA2B0c,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAClL,SAAS,IAAawqB,GAAW,IAAIC,EACrC,WAAuC,GAAuB,oBAAZ1kH,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFxqD,QAAQ10E,UAAU03C,QAAQh2C,KAAKq9H,QAAQC,UAAUtqD,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO1wE,KAAK,OAAO,CAAO,CAAE,CADvQ,GAA6B,OAAO,WAAkC,IAAsC0O,EAAlCgxO,GAAQ,QAAgBF,GAAkB,GAAIC,EAA2B,CAAE,IAAIE,GAAY,QAAgB7jP,MAAM8E,YAAa8N,EAASqsH,QAAQC,UAAU0kH,EAAOhjP,UAAWijP,EAAY,MAASjxO,EAASgxO,EAAMviP,MAAMrB,KAAMY,WAAc,OAAO,QAA2BZ,KAAM4S,EAAS,CAAG,CAkBja,IAAI0+W,IAAyB,SAAUzhB,IAC5C,QAAUyhB,EAAWzhB,GACrB,IAAInuW,EAAS,IAAa4vX,GAM1B,SAASA,EAAU1/W,EAAQwzR,EAAOnjS,EAAMyjB,GACtC,IAAIjlB,GACJ,QAAgBT,KAAMsxX,IACtB7wX,EAAQiB,EAAOE,KAAK5B,KAAM4R,IACpBwzR,MAAQA,EACd3kS,EAAMwB,KAAOA,EACbxB,EAAMilB,KAAOA,EACb,IACE64M,EADEC,EAAY,IAA2BmwG,KAE3C,IACE,IAAKnwG,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIm7G,EAAU8qE,EAAMp8N,MAChBy0U,EAAWxxC,EAAMs1B,MAAMjnK,GAC3B,GAAImjL,EAAU,CACZ,IAAIzqH,EAAMyqH,EAASzqH,IACjB55M,EAAOqkU,EAASrkU,KAClB9R,EAAMgzJ,GAAW,IAAc,CAC7BxxJ,KAAMmjS,EAAM6uE,QAAQ,GAAG1gW,OAAOkgJ,EAAS,YACvC7zB,OAAQ,CAAC,IAAQg3M,IAAWrjU,QAAO,QAAmBw+T,IAAU5lH,GAAO,CAAC,IAAQyqH,EAAU,CACxF+N,UAAW,SACP,MACL2C,IAAY/0U,GAAQ,CACrBg/W,UAAWh/W,GACT,GAAQA,GAAQ,CAClBi/W,eAAgB3M,IAAoBjuC,EAAUnjL,IAC5C,CAAC,EACP,CACF,CACF,CAAE,MAAOjsH,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CAEA,OADA5C,EAAMgxX,WAAarsF,EAAMt1R,MAClBrP,CACT,CA0RA,OAzRA,QAAa6wX,EAAW,CAAC,CACvBzwV,IAAK,OACL1+B,MAAO,WACL,IAEE8gO,EAFE//M,EAAM,QACNggN,EAAa,IAA2ByrG,KAE5C,IACE,IAAKzrG,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,CACrD,IAAIm7G,EAAUwvE,EAAO9gO,MACjBnC,KAAKyzJ,KACPvwI,GAAO,IAAI3P,OAAOkgJ,EAAQt4H,OAAO,GAAI,KAAK5nB,OAAO,GAAMvT,KAAKyzJ,KAEhE,CACF,CAAE,MAAOjsH,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACA,OAAO6f,CACT,GACC,CACD2d,IAAK,SACL7+B,IAAK,WACH,IAEEilO,EAFE5jO,EAAI,GACJ6jO,EAAa,IAA2BynG,KAE5C,IACE,IAAKznG,EAAWppN,MAAOmpN,EAASC,EAAWt4M,KAAK0pB,MAAO,CACrD,IAAIo5U,EACAj+N,EAAUwzE,EAAO9kO,MACmB,QAAnCuvX,EAAgB1xX,KAAKyzJ,UAAwC,IAAlBi+N,GAA4BA,EAAc9xP,QACxFv8H,EAAE9C,KAAKc,MAAMgC,GAAG,QAAmBrD,KAAKyzJ,GAAS7zB,QAErD,CACF,CAAE,MAAOp4F,GACP0/L,EAAWhjO,EAAEsjC,EACf,CAAE,QACA0/L,EAAW7jO,GACb,CACA,OAAOA,CACT,GACC,CACDw9B,IAAK,kBACL1+B,MAAO,WACL,IAEEglO,EAFEwqJ,EAAY,IAAIhrV,IAAI3mC,KAAK4/H,QACzBwnG,EAAa,IAA2BunG,KAE5C,IACE,IAAKvnG,EAAWtpN,MAAOqpN,EAASC,EAAWx4M,KAAK0pB,MAAO,CACrD,IAAIm7G,EAAU0zE,EAAOhlO,MACjBnC,KAAKyzJ,KACHzzJ,KAAKyzJ,GAAS89N,WAChBI,EAAUngX,IAAIxR,KAAKyzJ,GAAS89N,UAAU1xP,OAEpC7/H,KAAKyzJ,GAAS+9N,gBAChBG,EAAUngX,IAAIxR,KAAKyzJ,GAAS+9N,gBAGlC,CACF,CAAE,MAAOhqV,GACP4/L,EAAWljO,EAAEsjC,EACf,CAAE,QACA4/L,EAAW/jO,GACb,CACA,OAAOsuX,CACT,GACC,CACD9wV,IAAK,iBACL1+B,MAAO,WACL,OAAO,IAAIwkC,GACb,GAIC,CACD9F,IAAK,YACL1+B,MAAO,WACL,OAAOnC,KAAKiC,IACd,GACC,CACD4+B,IAAK,oCACL1+B,MAAO,WACL,IAEEklO,EAFEuqJ,EAAiC,CAAC,EAClCtqJ,EAAa,IAA2ByoG,KAE5C,IACE,IAAKzoG,EAAWxpN,MAAOupN,EAASC,EAAW14M,KAAK0pB,MAAO,CACrD,IAAIm7G,EAAU4zE,EAAOllO,MACjB0vX,EAAsB7xX,KAAKyxX,WAAWjyT,UAAU0qL,OAAOz2F,GAC3D,GAAIo+N,IAAwBA,EAAoBvtQ,OAAQ,CAEtD,IAAI37G,EAAOkpX,EAAoB7vX,IAAI,QAC/B2lD,EAAQkqU,EAAoB7vX,IAAI,SACpC,GAAI4+U,IAAkBj4U,IAAS0qU,IAAc1rR,GAAQ,CACnD,IACIk4E,EAAQiyP,IADCC,IAAe/xX,KAAKyxX,WAAYh+N,IAEzC5zB,EACF+xP,EAA+Bn+N,GAAW5zB,EAE1C,IAAS,IAAyB4zB,GAEtC,CACF,CACF,CACF,CAAE,MAAOjsH,GACP8/L,EAAWpjO,EAAEsjC,EACf,CAAE,QACA8/L,EAAWjkO,GACb,CACA,OAAOuuX,CACT,GACC,CACD/wV,IAAK,8BACL1+B,MAAO,SAAqCsxJ,EAASu+N,EAAiBJ,GACpE,IAAIK,EAAe,CACjB7vV,IAAK,IACLo/G,OAAQ,IACRk5K,WAAOjkS,GACPg9H,GACE7zB,EAAS,GACT7yE,EAAM,GACNg8K,EAAK,GACLkpJ,GAAgBL,GAAkCA,EAA+BK,KAC/ED,GAEFpyP,EAAOr/H,KAAK,YAAYgT,OAAOq+W,EAA+BK,KAC9DllU,EAAIxsD,KAAK,SAGTq/H,EAAOr/H,KAAKqxX,EAA+BK,IAC3CllU,EAAIxsD,KAAK,aAGXwoO,EAAGxoO,KAAK,YAAYgT,OAAOq+W,EAA+BK,MAE5D,IAAIC,EAAiBlyX,KAAKyzJ,GACxB89N,EAAYW,EAAeX,UAC3BC,EAAiBU,EAAeV,eAClC,GAAID,EAAW,CACb,IAAIY,EAAgBZ,EAAUtkU,GAC5BA,OAAuB,IAAlBklU,EAA2BjrC,IAAkBirC,EAClDtyP,EAAQ0xP,EAAU1xP,MACpBD,EAAOr/H,KAAKs/H,GACZ9yE,EAAIxsD,KAAK0sD,GACT87K,EAAGxoO,KAAK,IAAQgxX,EAAW,CACzBjoC,OAAO,IAEX,MAAWkoC,IACT5xP,EAAOr/H,KAAKixX,GACZzkU,EAAIxsD,KAAK,OACTwoO,EAAGxoO,KAAKixX,IAEV,MAAO,CACLvvX,KAAMjC,KAAKyzJ,GAASxxJ,KAEpBovB,OAAQ2gW,QAAyDA,EAAkBhyX,KAAK0lB,KACxF5R,UAAW,CAAC,IAAc,CACxBnL,KAAM,YACNmkO,QAAS9sO,KAAKyzJ,GAAS7zB,QACtBA,EAAO/+H,OAAS,CACjB++H,OAAQA,EACR7yE,IAAKA,EACLg8K,GAAIA,GACF,CAAC,IAET,GACC,CACDloM,IAAK,0BACL1+B,MAAO,SAAiCyvX,GACtC,IAKEvoD,EALEhsH,EAAUr9M,KAAKolS,MAAMt8K,OAAOu0F,QAC5Bm5D,EAAgBx2Q,KAAKolS,MAAM5lO,UAAUg3M,cACrC9wP,EAAO,GACP0sW,EAAgB,CAAC,EACjB9oD,EAAa,IAA2B47C,KAE5C,IACE,IAAK57C,EAAWxrT,MAAOurT,EAASC,EAAW16S,KAAK0pB,MAAO,CACrD,IAEEmxR,EAFE87C,EAAgBl8C,EAAOlnU,MACvBunU,EAAa,IAA2By7C,KAE5C,IACE,IAAKz7C,EAAW5rT,MAAO2rT,EAASC,EAAW96S,KAAK0pB,MAAO,CACrD,IAAIuZ,EAIF+3Q,EAHEi8C,EAAap8C,EAAOtnU,MAEpB0nU,EAAa,IADmF,QAArFh4Q,EAAO2kN,EAAc+uG,IAAkB/uG,EAAc+uG,GAAeM,UAAkC,IAATh0T,EAAkBA,EAAO,IAGrI,IACE,IAAKg4Q,EAAW/rT,MAAO8rT,EAASC,EAAWj7S,KAAK0pB,MAAO,CACrD,IAAI+5U,EAEJ,IAAsC,QAAhCA,EADOzoD,EAAOznU,MACQ4hU,YAAmC,IAAjBsuD,OAA0B,EAASA,EAAaxxX,QAAU,EAAG,CACzGuxX,EAAc7M,IAAiB,EAC/B,KACF,CACF,CACF,CAAE,MAAO/9U,GACPqiS,EAAW3lU,EAAEsjC,EACf,CAAE,QACAqiS,EAAWxmU,GACb,CACF,CACF,CAAE,MAAOmkC,GACPkiS,EAAWxlU,EAAEsjC,EACf,CAAE,QACAkiS,EAAWrmU,GACb,CACA,GAAI+uX,EAAc7M,GAAgB,CAChC,IAAIyB,EAAc,gBAAiBzzW,OAAOvT,KAAK06T,MAAMz4T,KAAM,OACvD+C,EAAyB,QAAlBugX,EAA0BloK,EAAU,CAC7CmsG,OAAQ,QAAQj2S,OAAOyzW,EAAa,OAAOzzW,OAAO8pM,EAAS,MACzD,EAAIA,EAAU,CAChBmsG,OAAQ,OAAOj2S,OAAOyzW,EAAa,MAAMzzW,OAAO8pM,EAAS,MACvD,CACFmsG,OAAQw9D,GAEVthW,EAAKnlB,KAAK,CACR0B,KAAM,GAAGsR,OAAOvT,KAAK06T,MAAMz4T,KAAM,KAAKsR,OAAOgyW,GAC7CzxW,UAAW,CAAC,CACVnL,KAAM,WACN+d,MAAO,EACP1hB,KAAMA,KAGZ,CACF,CACF,CAAE,MAAOwiC,GACP8hS,EAAWplU,EAAEsjC,EACf,CAAE,QACA8hS,EAAWjmU,GACb,CACA,IAAI++B,EAAMgwV,EAAchwV,IACtBo/G,EAAS4wO,EAAc5wO,OAIzB,OAHIp/G,GAAOo/G,IACT97H,EAAK/P,QAAQ3V,KAAKsyX,4BAA4B,QAAS,KAAMV,IAExDlsW,CACT,GACC,CACDmb,IAAK,WACL1+B,MAAO,WACL,IAAIujB,EAAO,GACPssW,EAAkB,KAClBJ,EAAiC5xX,KAAKuyX,oCACtC/wO,EAASxhJ,KAAKwhJ,OAChBp/G,EAAMpiC,KAAKoiC,IACXs4R,EAAQ16T,KAAK06T,MACf,GAAIl5K,GAAUp/G,IAAQwvV,EAA+B3mX,GAAK2mX,EAA+B1mX,GAAI,CAC3F,IAAIsnX,EAAuBC,EAE3BT,EAAkB,SAASz+W,OAAOvT,KAAKwhJ,OAAOv/I,KAAM,KAAKsR,OAAOvT,KAAKoiC,IAAIngC,MACzE,IAAI29H,EAAS,GAAGrsH,OAAsE,QAA9Di/W,EAAwBZ,EAA+B3mX,SAAyC,IAA1BunX,EAAmCA,EAAwB,GAAoE,QAA/DC,EAAyBb,EAA+B1mX,SAA0C,IAA3BunX,EAAoCA,EAAyB,IAC9R1lU,EAAM6yE,EAAO5uG,KAAI,WACnB,MAAO,UACT,IACAtL,EAAKnlB,KAAK,CACR0B,KAAM+vX,EACN3gW,OAAQrxB,KAAK0lB,KACb5R,UAAW,CAAC,CACVnL,KAAM,YACNmkO,QAAS9sO,KAAK4/H,OACdA,OAAQA,EACR7yE,IAAKA,KAGX,CACA,IAAK,IAAIpsD,EAAK,EAAGs3C,EAAO,CAACg0R,GAAQD,IAAMrrU,EAAKs3C,EAAKp3C,OAAQF,IAAM,CAC7D,IAAI8yJ,EAAUx7G,EAAKt3C,GACfX,KAAKyzJ,IACP/tI,EAAKnlB,KAAKP,KAAKsyX,4BAA4B7+N,EAASu+N,EAAiBJ,GAEzE,CACA,GAAIl3D,EAAO,CACT,IAAIg4D,EAAY1yX,KAAK2yX,wBAAwBf,GACzCc,GACFhtW,EAAKnlB,KAAKc,MAAMqkB,GAAM,QAAmBgtW,GAE7C,CACA,OAAOhtW,CACT,KAEK4rW,CACT,CAtUoC,CAsUlChiB,KC9VF,SAAS,IAAa5rH,GAAW,IAAIC,EACrC,WAAuC,GAAuB,oBAAZ1kH,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFxqD,QAAQ10E,UAAU03C,QAAQh2C,KAAKq9H,QAAQC,UAAUtqD,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO1wE,KAAK,OAAO,CAAO,CAAE,CADvQ,GAA6B,OAAO,WAAkC,IAAsC0O,EAAlCgxO,GAAQ,QAAgBF,GAAkB,GAAIC,EAA2B,CAAE,IAAIE,GAAY,QAAgB7jP,MAAM8E,YAAa8N,EAASqsH,QAAQC,UAAU0kH,EAAOhjP,UAAWijP,EAAY,MAASjxO,EAASgxO,EAAMviP,MAAMrB,KAAMY,WAAc,OAAO,QAA2BZ,KAAM4S,EAAS,CAAG,CAExa,SAAS,IAA2BwS,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAClL,SAAS,IAAQv0L,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAoBzf,SAASkqX,IAAQpqT,GACf,OAAIA,EAAQ+Y,WAAW,MAAQ/Y,EAAQxN,SAAS,MAAQwN,EAAQ+Y,WAAW,MAAQ/Y,EAAQxN,SAAS,KAC3FwN,EAAQxhD,MAAM,GAAI,GAEpBwhD,CACT,CA4BO,SAASqqT,IAA+B/+W,GAC7C,IAAI2wO,EAAW,CAAC,EAsChB,OArCA+jF,GAAY10T,EAAUvD,QAAQ,SAAUA,GACtC,GAAI8sU,IAAiB9sU,GAAS,CAE5B,IAAIlL,EAAM,KAIV,GAAIq3U,IAAsBnsU,GACxBlL,EAAMktU,IAAiBhiU,EAAO+vC,YACzB,GAAIs8R,IAAoBrsU,GAC7BlL,EAAMktU,IAAiBhiU,EAAOssU,UACzB,GAAIF,IAAmBpsU,GAC5BlL,EAAMktU,IAAiBhiU,EAAOk3S,SACzB,GAAIq1B,IAAmBvsU,GAC5BlL,EAAMktU,IAAiBhiU,EAAOm3S,SACzB,GAAIq1B,IAAoBxsU,GAC7BlL,EAAMktU,IAAiBhiU,EAAOysU,UACzB,GAAIC,IAAsB1sU,GAC/BlL,EAAMkL,EAAOo3C,MAAM,QACd,GAAIu1R,IAAsB3sU,GAAS,CACxC,IAAIuiX,EACJztX,GAA0C,QAAlCytX,EAAgBviX,EAAO4sU,aAAqC,IAAlB21C,EAA2BA,EAAgBviX,EAAW,IAAG,EAC7G,CACIlL,IACE2yU,IAAW3yU,GACbo/O,EAASl0O,EAAOsvH,OAAS,OAChBl5E,GAASthD,GAClBo/O,EAASl0O,EAAOsvH,OAAS,SAChB,GAASx6H,KAClBo/O,EAASl0O,EAAOsvH,OAAS,WAGzBtvH,EAAO0qU,WACTx2F,EAASl0O,EAAOsvH,OAAS,OAE7B,CACF,IACO4kH,CACT,CAIO,SAASsuI,IAAwB3tF,GACtC,IAAI3gD,EAAW,CAAC,EAChB,SAASjzO,EAAIolU,G9GlER,IAAoBpa,E8GmEnBopB,IAA+BhP,GACjCnyF,EAASmyF,EAAS/2M,OAAS,OACA,iBAAlB+2M,EAASjuU,O9GpEf,GADkB6zT,E8GqEmCoa,EAASpa,Y9GpEvC,GAAS,CAAC,MAAO,OAAQA,I8GsEnD/3E,EAASmyF,EAAS/2M,OAAS,SAClByrM,GAAgBsL,EAAS/2M,OAAS,EAGrC+2M,EAAS/2M,SAAS4kH,IACtBA,EAASmyF,EAAS/2M,OAAS,WAEpBsmN,IAAgBvP,IAAa0Q,IAAY1Q,EAASrkU,OAAS+4T,GAAgBsL,EAASrkU,KAAKstH,OAAS,IAErG+2M,EAASrkU,KAAKstH,SAAS4kH,IAC3BA,EAASmyF,EAASrkU,KAAKstH,OAAS,WAGtC,CAgBA,IAfI8wO,IAAYvrE,IAAU05E,IAAa15E,KAErCA,EAAMu/E,iBAAgB,SAAU/tC,EAAUnjL,GACxC,GAAI8wL,IAAgB3N,GAClBplU,EAAIolU,OACC,CACL,IAAIqa,EAAc7hB,IAAoB37K,GAClCu/N,EAAe5tF,EAAMwxC,SAASqa,GAClCz/U,EAAI,IAAc,IAAc,CAAC,EAAGolU,GAAW,CAAC,EAAG,CACjDjuU,KAAMqqX,EAAarqX,OAEvB,CACF,IAGEgoW,IAAYvrE,GAAQ,CACtB,IAAI3uO,EAAO2uO,EAAM3uO,KACf6sR,EAAUl+C,EAAMk+C,QAChB0I,EAAW5mD,EAAM4mD,SACnB,GAAI5J,IAAW3rR,KAEd2uO,EAAM4mD,SAAS1uS,MAAO,CACrB,IACI21U,EAAsBjnC,EADgB,eAAnB1I,EAAQpkF,OAA0B,IAAM,KAE3DskF,IAAWyvC,IAAqD,iBAA7BA,EAAoBtqX,QAA6BsqX,EAAoBpzP,SAAS4kH,KACnHA,EAASwuI,EAAoBpzP,OAAS,SAE1C,CACF,CACA,OAAO4kH,CACT,CAoCO,IAAIyuI,IAAyB,SAAUrjB,IAC5C,QAAUqjB,EAAWrjB,GACrB,IAAInuW,EAAS,IAAawxX,GAC1B,SAASA,EAAUthX,EAAQ60C,GACzB,IAAIhmD,EAIJ,OAHA,QAAgBT,KAAMkzX,IACtBzyX,EAAQiB,EAAOE,KAAK5B,KAAM4R,IACpBuhX,OAAS1sU,EACRhmD,CACT,CAwKA,OAvKA,QAAayyX,EAAW,CAAC,CACvBryV,IAAK,QACL1+B,MAAO,WACL,OAAO,IAAI+wX,EAAU,KAAMtqD,GAAU5oU,KAAKmzX,QAC5C,GACC,CACDtyV,IAAK,OACL1+B,MAAO,WACL,MAAO,SAASoR,OAAO,GAAMvT,KAAKmzX,QACpC,GAIC,CACDtyV,IAAK,QACL7+B,IAAK,WACH,OAAOhC,KAAKmzX,MACd,GACC,CACDtyV,IAAK,QACL1+B,MAAO,SAAeoiC,GACpBvkC,KAAKmzX,OAAS,IAAc,IAAc,CAAC,EAAGnzX,KAAKmzX,QAAS5uV,EAAMkiB,OAClEliB,EAAMpxB,QACR,GAIC,CACD0tB,IAAK,sBACL1+B,MAAO,WACL,IAEE8kO,EAFEmsJ,EAAc,CAAC,EACflsJ,EAAa,IAA2B,GAAKlnO,KAAKmzX,SAEtD,IACE,IAAKjsJ,EAAWppN,MAAOmpN,EAASC,EAAWt4M,KAAK0pB,MAAO,CACrD,IAAIunF,EAAQonG,EAAO9kO,MACfic,EAAIpe,KAAKmzX,OAAOtzP,GACW,IAA3ByrM,GAAgBzrM,KAClBuzP,EAAYvzP,GAASzhH,EAEzB,CACF,CAAE,MAAOopB,GACP0/L,EAAWhjO,EAAEsjC,EACf,CAAE,QACA0/L,EAAW7jO,GACb,CACA,OAAO+vX,CACT,GAEC,CACDvyV,IAAK,iBACL1+B,MAAO,WACL,OAAO,IAAIwkC,IAAI,GAAK3mC,KAAKmzX,QAC3B,GACC,CACDtyV,IAAK,kBACL1+B,MAAO,WACL,OAAO,IAAIwkC,IAAI,GAAK3mC,KAAKmzX,QAC3B,GACC,CACDtyV,IAAK,qBACL1+B,MAAO,WACL,IAAI28D,EAAS9+D,KACTqzX,EAAazyX,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,IAAmBA,UAAU,GAChF,OAAO,GAAKZ,KAAKmzX,QAAQ5iX,QAAO,SAAUsvH,GACxC,OAAOwzP,GAAa/nD,GAAgBzrM,GAAS,CAC/C,IAAG7uG,KAAI,SAAU6uG,GACf,IAAI6vG,EAvOZ,SAAyB7vG,EAAOp5E,GAC9B,IAAIpjD,EAAI2nU,GAAoBnrM,GAC5B,GAAc,WAAVp5E,EACF,MAAO,YAAYlzC,OAAOlQ,EAAG,KACxB,GAAc,YAAVojD,EACT,MAAO,aAAalzC,OAAOlQ,EAAG,KACzB,GAAc,WAAVojD,EACT,MAAO,YAAYlzC,OAAOlQ,EAAG,KACxB,GAAc,SAAVojD,EACT,MAAO,UAAUlzC,OAAOlQ,EAAG,KACtB,GAAc,YAAVojD,EACT,OAAOpjD,EACF,GAAIojD,EAAM86B,WAAW,SAAU,CACpC,IAAIwgI,EAAY6wK,IAAQnsU,EAAMz/B,MAAM,EAAGy/B,EAAM5lD,SAC7C,MAAO,aAAa0S,OAAOlQ,EAAG,MAAMkQ,OAAOwuM,EAAW,KACxD,CAAO,GAAIt7J,EAAM86B,WAAW,QAAS,CACnC,IAAI+xS,EAAaV,IAAQnsU,EAAMz/B,MAAM,EAAGy/B,EAAM5lD,SAC9C,MAAO,YAAY0S,OAAOlQ,EAAG,MAAMkQ,OAAO+/W,EAAY,KACxD,CAEE,OADA,IxGDK,uBAAwB//W,OwGCUkzC,ExGDA,OwGEhC,IAEX,CAiNmB,CAAgBo5E,EAAO/gE,EAAOq0T,OAAOtzP,IAChD,OAAK6vG,EAGS,CACZ/mO,KAAM,UACN+mO,KAAMA,EACN3G,GAAIsiG,GAAoBxrM,IALjB,IASX,IAAGtvH,QAAO,SAAUxM,GAClB,OAAa,OAANA,CACT,GACF,IACE,CAAC,CACH88B,IAAK,eACL1+B,MAAO,SAAsByP,EAAQwzR,EAAOmuF,GAC1C,IAAIC,EAEAh+C,EAAW,CAAC,EACZ9vT,EAAO0/Q,EAAM1/Q,KAIjB,OAHK+oV,IAAY/oV,IAAb,MAAsBA,GAAqE,QAAhC8tW,EAAe9tW,EAAKsuB,cAAqC,IAAjBw/U,GAA2BA,EAAa/sU,QAC7I+uR,EAAW9vT,EAAKsuB,OAAOyS,OAElBzmD,KAAKyzX,kBAAkB7hX,EAAQ4jU,EAAU,CAAC,EAAG+9C,EACtD,GAIC,CACD1yV,IAAK,oBACL1+B,MAAO,SAA2ByP,EAAQ4jU,EAAU/wF,EAAU8uI,GAE5D,IACEpsJ,EADEC,EAAa,IAA2B,GAAKqd,IAEjD,IACE,IAAKrd,EAAWtpN,MAAOqpN,EAASC,EAAWx4M,KAAK0pB,MAAO,CACrD,IAAIunF,EAAQsnG,EAAOhlO,MACfuxX,EAAWH,EAAc9lB,gBAAgB5tO,QACtBppG,IAAnBi9V,EAASvxX,QAEPuxX,EAASl+C,UAAYk+C,EAASvxX,QAAUsiP,EAAS5kH,IAA6B,YAAnB6zP,EAASvxX,OAA2C,YAApBsiP,EAAS5kH,UAC/F4kH,EAAS5kH,GAEhB,IAAS,IAA2BA,EAAO4kH,EAAS5kH,GAAQ6zP,EAASvxX,QAG3E,CACF,CAAE,MAAOqlC,GACP4/L,EAAWljO,EAAEsjC,EACf,CAAE,QACA4/L,EAAW/jO,GACb,CACA,IACEgkO,EADEC,EAAa,IAA2B,GAAKkuG,IAEjD,IACE,IAAKluG,EAAWxpN,MAAOupN,EAASC,EAAW14M,KAAK0pB,MAAO,CACrD,IAAI2uR,EAAS5/F,EAAOllO,MAChBwxX,EAAYJ,EAAcvxX,IAAIilU,QAChBxwS,IAAdk9V,IAEEA,IAAcn+C,EAASvO,UAClBuO,EAASvO,GAEhB,IAAS,IAA2BA,EAAQuO,EAASvO,GAAS0sD,IAGpE,CACF,CAAE,MAAOnsV,GACP8/L,EAAWpjO,EAAEsjC,EACf,CAAE,QACA8/L,EAAWjkO,GACb,CACA,IAAIojD,EAAQ,IAAI8mT,IAAM/3B,EAAU/wF,GAEhC8uI,EAAcK,QAAQntU,GAEtB,IAEE4iR,EAFEjrT,EAAI,CAAC,EACLkrT,EAAa,IAA2B,GAAK7iR,EAAM+mT,YAEvD,IACE,IAAKlkC,EAAWxrT,MAAOurT,EAASC,EAAW16S,KAAK0pB,MAAO,CACrD,IAAIzX,EAAMwoS,EAAOlnU,MACbkD,EAAMohD,EAAMzkD,IAAI6+B,GACR,OAARx7B,IACF+Y,EAAEyiB,GAAOx7B,EAEb,CACF,CAAE,MAAOmiC,GACP8hS,EAAWplU,EAAEsjC,EACf,CAAE,QACA8hS,EAAWjmU,GACb,CACA,OAAuB,IAAnB,GAAK+a,GAAGvd,QAAgB0yX,EAAcllB,aACjC,KAEF,IAAI6kB,EAAUthX,EAAQwM,EAC/B,KAEK80W,CACT,CAlLoC,CAkLlC5jB,KCjXF,SAAS,IAAa5rH,GAAW,IAAIC,EACrC,WAAuC,GAAuB,oBAAZ1kH,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFxqD,QAAQ10E,UAAU03C,QAAQh2C,KAAKq9H,QAAQC,UAAUtqD,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO1wE,KAAK,OAAO,CAAO,CAAE,CADvQ,GAA6B,OAAO,WAAkC,IAAsC0O,EAAlCgxO,GAAQ,QAAgBF,GAAkB,GAAIC,EAA2B,CAAE,IAAIE,GAAY,QAAgB7jP,MAAM8E,YAAa8N,EAASqsH,QAAQC,UAAU0kH,EAAOhjP,UAAWijP,EAAY,MAASjxO,EAASgxO,EAAMviP,MAAMrB,KAAMY,WAAc,OAAO,QAA2BZ,KAAM4S,EAAS,CAAG,CAIja,IAAIihX,IAA8B,SAAUhkB,IACjD,QAAUgkB,EAAgBhkB,GAC1B,IAAInuW,EAAS,IAAamyX,GAC1B,SAASA,EAAejiX,GAEtB,OADA,QAAgB5R,KAAM6zX,GACfnyX,EAAOE,KAAK5B,KAAM4R,EAC3B,CA8BA,OA7BA,QAAaiiX,EAAgB,CAAC,CAC5BhzV,IAAK,QACL1+B,MAAO,WACL,OAAO,IAAI0xX,EAAe,KAC5B,GACC,CACDhzV,IAAK,kBACL1+B,MAAO,WACL,OAAO,IAAIwkC,GACb,GACC,CACD9F,IAAK,iBACL1+B,MAAO,WACL,OAAO,IAAIwkC,IAAI,CAAC60T,KAClB,GACC,CACD36T,IAAK,OACL1+B,MAAO,WACL,MAAO,YACT,GACC,CACD0+B,IAAK,WACL1+B,MAAO,WACL,MAAO,CACLwG,KAAM,aACNogO,GAAIyyH,IAER,KAEKq4B,CACT,CArCyC,CAqCvCvkB,KCxCF,SAAS,IAAQ3qU,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CAEpV,SAAS,IAAa8iN,GAAW,IAAIC,EACrC,WAAuC,GAAuB,oBAAZ1kH,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFxqD,QAAQ10E,UAAU03C,QAAQh2C,KAAKq9H,QAAQC,UAAUtqD,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO1wE,KAAK,OAAO,CAAO,CAAE,CADvQ,GAA6B,OAAO,WAAkC,IAAsC0O,EAAlCgxO,GAAQ,QAAgBF,GAAkB,GAAIC,EAA2B,CAAE,IAAIE,GAAY,QAAgB7jP,MAAM8E,YAAa8N,EAASqsH,QAAQC,UAAU0kH,EAAOhjP,UAAWijP,EAAY,MAASjxO,EAASgxO,EAAMviP,MAAMrB,KAAMY,WAAc,OAAO,QAA2BZ,KAAM4S,EAAS,CAAG,CAIja,IAAIkhX,IAA6B,SAAUjkB,IAChD,QAAUikB,EAAejkB,GACzB,IAAInuW,EAAS,IAAaoyX,GAC1B,SAASA,EAAcliX,EAAQ0P,GAC7B,IAAI7gB,EAIJ,OAHA,QAAgBT,KAAM8zX,IACtBrzX,EAAQiB,EAAOE,KAAK5B,KAAM4R,IACpB0P,OAASA,EACR7gB,CACT,CA6BA,OA5BA,QAAaqzX,EAAe,CAAC,CAC3BjzV,IAAK,QACL1+B,MAAO,WACL,OAAO,IAAI2xX,EAAc,KAAM9zX,KAAKshB,OACtC,GACC,CACDuf,IAAK,kBACL1+B,MAAO,WACL,OAAO,IAAIwkC,GACb,GACC,CACD9F,IAAK,iBACL1+B,MAAO,WAEP,GACC,CACD0+B,IAAK,OACL1+B,MAAO,WACL,MAAO,aAAaoR,OAAO,GAAMvT,KAAKshB,QACxC,GACC,CACDuf,IAAK,WACL1+B,MAAO,WACL,OAtCN,SAAuBuG,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAsC5e,CAAc,CACnBC,KAAM,cACW,IAAhB3I,KAAKshB,OAAkB,CAAC,EAAIthB,KAAKshB,OACtC,KAEKwyW,CACT,CAvCwC,CAuCtCxkB,KC7CF,SAAS,IAAQ3qU,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CAEpV,SAAS,IAAa8iN,GAAW,IAAIC,EACrC,WAAuC,GAAuB,oBAAZ1kH,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFxqD,QAAQ10E,UAAU03C,QAAQh2C,KAAKq9H,QAAQC,UAAUtqD,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO1wE,KAAK,OAAO,CAAO,CAAE,CADvQ,GAA6B,OAAO,WAAkC,IAAsC0O,EAAlCgxO,GAAQ,QAAgBF,GAAkB,GAAIC,EAA2B,CAAE,IAAIE,GAAY,QAAgB7jP,MAAM8E,YAAa8N,EAASqsH,QAAQC,UAAU0kH,EAAOhjP,UAAWijP,EAAY,MAASjxO,EAASgxO,EAAMviP,MAAMrB,KAAMY,WAAc,OAAO,QAA2BZ,KAAM4S,EAAS,CAAG,CAIja,IAAImhX,IAA4B,SAAUlkB,IAC/C,QAAUkkB,EAAclkB,GACxB,IAAInuW,EAAS,IAAaqyX,GAC1B,SAASA,EAAaniX,EAAQ0P,GAC5B,IAAI7gB,EAIJ,OAHA,QAAgBT,KAAM+zX,IACtBtzX,EAAQiB,EAAOE,KAAK5B,KAAM4R,IACpB0P,OAASA,EACR7gB,CACT,CA8BA,OA7BA,QAAaszX,EAAc,CAAC,CAC1BlzV,IAAK,QACL1+B,MAAO,WACL,OAAO,IAAI4xX,EAAa,KAAM/zX,KAAKshB,OACrC,GACC,CACDuf,IAAK,kBACL1+B,MAAO,WACL,OAAO,IAAIwkC,GACb,GACC,CACD9F,IAAK,iBACL1+B,MAAO,WACL,IAAI6xX,EACJ,OAAO,IAAIrtV,IAAI,CAAwC,QAAtCqtV,EAAkBh0X,KAAKshB,OAAOynN,UAAoC,IAApBirJ,EAA6BA,EAAkB,QAChH,GACC,CACDnzV,IAAK,OACL1+B,MAAO,WACL,MAAO,QAAQoR,OAAO,GAAMvT,KAAKshB,QACnC,GACC,CACDuf,IAAK,WACL1+B,MAAO,WACL,OAvCN,SAAuBuG,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAuC5e,CAAc,CACnBC,KAAM,YACL3I,KAAKshB,OACV,KAEKyyW,CACT,CAxCuC,CAwCrCzkB,KC9CF,SAAS,IAAQ3qU,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CACzf,SAAS,IAAag7O,GAAW,IAAIC,EACrC,WAAuC,GAAuB,oBAAZ1kH,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFxqD,QAAQ10E,UAAU03C,QAAQh2C,KAAKq9H,QAAQC,UAAUtqD,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO1wE,KAAK,OAAO,CAAO,CAAE,CADvQ,GAA6B,OAAO,WAAkC,IAAsC0O,EAAlCgxO,GAAQ,QAAgBF,GAAkB,GAAIC,EAA2B,CAAE,IAAIE,GAAY,QAAgB7jP,MAAM8E,YAAa8N,EAASqsH,QAAQC,UAAU0kH,EAAOhjP,UAAWijP,EAAY,MAASjxO,EAASgxO,EAAMviP,MAAMrB,KAAMY,WAAc,OAAO,QAA2BZ,KAAM4S,EAAS,CAAG,CAKja,IAAIqhX,IAA0B,SAAUpkB,IAC7C,QAAUokB,EAAYpkB,GACtB,IAAInuW,EAAS,IAAauyX,GAC1B,SAASA,EAAWvuW,GAClB,IAAIkoN,EACAntO,EAMAuzC,EAIJ,IATA,QAAgBh0C,KAAMi0X,GACtBxzX,EAAQiB,EAAOE,KAAK5B,KAAM,MACP,QAAlB4tO,EAAQloN,SAA4B,IAAVkoN,IAA2BloN,EAAO,CAC3DzjB,KAAM,WAGHwsW,IAAY/oV,KACfsuB,EAAStuB,EAAKsuB,OAAS,IAAc,CAAC,EAAG,GAAKtuB,EAAKsuB,OAAQ,CAAC,WAAa,CAAC,GAExEu6T,IAAa7oV,GACfjlB,EAAMmtO,MAAQ,CACZptM,OAAQ9a,EAAK8a,aAEV,GAAI8tU,IAAU5oV,IAInB,GAHAjlB,EAAMmtO,MAAQ,CACZj0K,IAAKj0C,EAAKi0C,MAEP3lB,EAAOrrC,KAAM,CAGhB,IAAIurX,EAAmB,kBAAkBjgV,KAAKvuB,EAAKi0C,KAAK,GACnD,GAAS,CAAC,OAAQ,MAAO,MAAO,MAAO,YAAau6T,KACvDA,EAAmB,QAGrBlgV,EAAOrrC,KAAOurX,CAChB,OACSvlB,IAAkBjpV,GAE3BjlB,EAAMmtO,MAAQ,CACZptM,OAAQ,CAAC,CACP73B,KAAM,aAGD6lW,IAAY9oV,IAAS+oV,IAAY/oV,MAC1CjlB,EAAMmtO,MAAQ,CAAC,GAWjB,OARAntO,EAAM0zX,WAAa1lB,IAAY/oV,GAE3BA,EAAKzjB,OACPxB,EAAMsxT,MAAQrsS,EAAKzjB,MAEjB+xC,IAAWy2R,GAAQz2R,KACrBvzC,EAAMmtO,MAAM55L,OAASA,GAEhBvzC,CACT,CA2DA,OA1DA,QAAawzX,EAAY,CAAC,CACxBpzV,IAAK,kBACL1+B,MAAO,WACL,OAAO,IAAIwkC,GACb,GACC,CACD9F,IAAK,iBACL1+B,MAAO,WAEP,GACC,CACD0+B,IAAK,OACL7+B,IAAK,WACH,OAAOhC,KAAK4tO,KACd,GACC,CACD/sM,IAAK,UACL1+B,MAAO,WACL,QAASnC,KAAK+xT,KAChB,GACC,CACDlxR,IAAK,cACL7+B,IAAK,WACH,OAAOhC,KAAKm0X,UACd,GACC,CACDtzV,IAAK,WACL7+B,IAAK,WACH,OAAOhC,KAAK+xT,KACd,EACA7vT,IAAK,SAAaD,GAChBjC,KAAK+xT,MAAQ9vT,CACf,GACC,CACD4+B,IAAK,SACL3+B,IAAK,SAAa0P,GAChB,MAAM,IAAIq2B,MAAM,iCAClB,GACC,CACDpH,IAAK,SACL1+B,MAAO,WACL,MAAM,IAAI8lC,MAAM,gDAClB,GACC,CACDpH,IAAK,OACL1+B,MAAO,WACL,MAAM,IAAI8lC,MAAM,sBAClB,GACC,CACDpH,IAAK,WACL1+B,MAAO,WACL,OAAO,IAAc,IAAc,CACjCF,KAAMjC,KAAK+xT,OACV/xT,KAAK4tO,OAAQ,CAAC,EAAG,CAClB95N,UAAW,IAEf,KAEKmgX,CACT,CAjHqC,CAiHnC3kB,KCxHF,SAAS,IAA2BlqV,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAClL,SAAS,IAAawqB,GAAW,IAAIC,EACrC,WAAuC,GAAuB,oBAAZ1kH,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFxqD,QAAQ10E,UAAU03C,QAAQh2C,KAAKq9H,QAAQC,UAAUtqD,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO1wE,KAAK,OAAO,CAAO,CAAE,CADvQ,GAA6B,OAAO,WAAkC,IAAsC0O,EAAlCgxO,GAAQ,QAAgBF,GAAkB,GAAIC,EAA2B,CAAE,IAAIE,GAAY,QAAgB7jP,MAAM8E,YAAa8N,EAASqsH,QAAQC,UAAU0kH,EAAOhjP,UAAWijP,EAAY,MAASjxO,EAASgxO,EAAMviP,MAAMrB,KAAMY,WAAc,OAAO,QAA2BZ,KAAM4S,EAAS,CAAG,CAExa,IAWIwhX,IAXA,IAAgE,SAAU5wI,EAAUjgM,EAAOphD,EAAO03S,EAAMx2S,GAC1G,GAAa,MAATw2S,EAAc,MAAM,IAAI90S,UAAU,kCACtC,GAAa,MAAT80S,IAAiBx2S,EAAG,MAAM,IAAI0B,UAAU,iDAC5C,GAAqB,mBAAVw+C,EAAuBigM,IAAajgM,IAAUlgD,GAAKkgD,EAAMzhB,IAAI0hN,GAAW,MAAM,IAAIz+O,UAAU,2EACvG,MAAgB,MAAT80S,EAAex2S,EAAEzB,KAAK4hP,EAAUrhP,GAASkB,EAAIA,EAAElB,MAAQA,EAAQohD,EAAMrhD,IAAIshP,EAAUrhP,GAAQA,CACpG,EACI,IAAgE,SAAUqhP,EAAUjgM,EAAOs2P,EAAMx2S,GACnG,GAAa,MAATw2S,IAAiBx2S,EAAG,MAAM,IAAI0B,UAAU,iDAC5C,GAAqB,mBAAVw+C,EAAuBigM,IAAajgM,IAAUlgD,GAAKkgD,EAAMzhB,IAAI0hN,GAAW,MAAM,IAAIz+O,UAAU,4EACvG,MAAgB,MAAT80S,EAAex2S,EAAa,MAATw2S,EAAex2S,EAAEzB,KAAK4hP,GAAYngP,EAAIA,EAAElB,MAAQohD,EAAMvhD,IAAIwhP,EACtF,EAQO,SAAS6wI,IAAiB3zU,GAC/B,OAAOA,aAAgBuzU,KAAcvzU,aAAgBozU,KAAiBpzU,aAAgBqzU,GACxF,CAKO,IAAIO,IAAyB,WAClC,SAASA,KACP,QAAgBt0X,KAAMs0X,GACtBF,IAAoBlyX,IAAIlC,UAAM,GAC9B,IAAuBA,KAAMo0X,KAAqB,EAAO,IAC3D,CAaA,OAXA,QAAaE,EAAW,CAAC,CACvBzzV,IAAK,cACL1+B,MAAO,WACL,IAAuBnC,KAAMo0X,KAAqB,EAAM,IAC1D,GACC,CACDvzV,IAAK,eACL7+B,IAAK,WACH,OAAO,IAAuBhC,KAAMo0X,IAAqB,IAC3D,KAEKE,CACT,CAnBoC,GAoBpCF,IAAsB,IAAIlmS,QAKnB,IAAIqmS,IAAiC,SAAUC,IACpD,QAAUD,EAAmBC,GAC7B,IAAI9yX,EAAS,IAAa6yX,GAC1B,SAASA,IAEP,OADA,QAAgBv0X,KAAMu0X,GACf7yX,EAAOL,MAAMrB,KAAMY,UAC5B,CAgDA,OA/CA,QAAa2zX,EAAmB,CAAC,CAC/B1zV,IAAK,gBACL1+B,MAIA,SAAuBu+C,EAAM5Z,EAAO2tV,GAClCA,EAAOvyX,IAAIw+C,EAAM5Z,GACjB,IACEy3L,EADEC,EAAY,IAA2B99K,EAAK7wC,UAEhD,IACE,IAAK2uN,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIxoC,EAAQyuN,EAAMp8N,MAClBnC,KAAK00X,cAAc5kX,EAAOg3B,EAAQ,EAAG2tV,EACvC,CACF,CAAE,MAAOjtV,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACA,OAAOoxX,CACT,GAIC,CACD5zV,IAAK,WACL1+B,MAAO,SAAkBu+C,GACvB,IAKEuiL,EALEwxJ,EAASz0X,KAAK00X,cAAch0U,EAAM,EAAG,IAAI3hC,KACzC41W,GAAkB,QAAmBF,EAAO34T,WAAWvpD,MAAK,SAAU4L,EAAG8E,GAC3E,OAAOA,EAAE,GAAK9E,EAAE,EAClB,IACI+kN,EAAa,IAA2ByxJ,GAE5C,IACE,IAAKzxJ,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,CACrD,IAAIoiL,EAAQuI,EAAO9gO,MACnBnC,KAAK08N,IAAIhC,EAAM,GACjB,CACF,CAAE,MAAOlzL,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACA,OAAOrD,KAAK40X,YACd,KAEKL,CACT,CAvD4C,CAuD1CD,KAISO,IAAgC,SAAUC,IACnD,QAAUD,EAAkBC,GAC5B,IAAItwI,EAAU,IAAaqwI,GAC3B,SAASA,IAEP,OADA,QAAgB70X,KAAM60X,GACfrwI,EAAQnjP,MAAMrB,KAAMY,UAC7B,CAwBA,OAvBA,QAAai0X,EAAkB,CAAC,CAC9Bh0V,IAAK,WACL1+B,MAIA,SAAkBu+C,GAChB1gD,KAAK08N,IAAIh8K,GACT,IACEumL,EADEC,EAAa,IAA2BxmL,EAAK7wC,UAEjD,IACE,IAAKq3N,EAAWppN,MAAOmpN,EAASC,EAAWt4M,KAAK0pB,MAAO,CACrD,IAAIxoC,EAAQm3N,EAAO9kO,MACnBnC,KAAK+0X,SAASjlX,EAChB,CACF,CAAE,MAAO03B,GACP0/L,EAAWhjO,EAAEsjC,EACf,CAAE,QACA0/L,EAAW7jO,GACb,CACA,OAAOrD,KAAK40X,YACd,KAEKC,CACT,CA/B2C,CA+BzCP,KChJF,SAAS,IAA2BlvW,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAClL,SAAS,IAAawqB,GAAW,IAAIC,EACrC,WAAuC,GAAuB,oBAAZ1kH,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFxqD,QAAQ10E,UAAU03C,QAAQh2C,KAAKq9H,QAAQC,UAAUtqD,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO1wE,KAAK,OAAO,CAAO,CAAE,CADvQ,GAA6B,OAAO,WAAkC,IAAsC0O,EAAlCgxO,GAAQ,QAAgBF,GAAkB,GAAIC,EAA2B,CAAE,IAAIE,GAAY,QAAgB7jP,MAAM8E,YAAa8N,EAASqsH,QAAQC,UAAU0kH,EAAOhjP,UAAWijP,EAAY,MAASjxO,EAASgxO,EAAMviP,MAAMrB,KAAMY,WAAc,OAAO,QAA2BZ,KAAM4S,EAAS,CAAG,CAmBja,IAAIoiX,IAAmC,SAAUC,IACtD,QAAUD,EAAqBC,GAC/B,IAAIvzX,EAAS,IAAaszX,GAC1B,SAASA,IAEP,OADA,QAAgBh1X,KAAMg1X,GACftzX,EAAOL,MAAMrB,KAAMY,UAC5B,CAmDA,OAlDA,QAAao0X,EAAqB,CAAC,CACjCn0V,IAAK,aACL1+B,MAAO,SAAoByP,EAAQu2J,GACjC,IAEEo2D,EAFE22J,EAAa/sN,EAAMv9I,QACnB4zM,EAAY,IAA2Br2D,GAE3C,IACE,IAAKq2D,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIoI,EAAO69K,EAAMp8N,MACjByP,EAAOvC,YAAYqxC,GACnBA,EAAK9uC,OAASsjX,EACdx0U,EAAKvtC,QACP,CACF,CAAE,MAAOq0B,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACF,GACC,CACDw9B,IAAK,MACL1+B,MAAO,SAAau+C,GAKlB,IAJA,IAAIy0U,EAASz0U,EAAK7wC,SAASmhB,KAAI,SAAU/lB,GACvC,OAAOA,EAAEyzN,MACX,IACI92K,EAAU,CAAC,EACN1mD,EAAI,EAAGA,EAAIi0X,EAAOt0X,OAAQK,SACNu1B,IAAvBmxB,EAAQutU,EAAOj0X,IACjB0mD,EAAQutU,EAAOj0X,IAAM,CAACw/C,EAAK7wC,SAAS3O,IAEpC0mD,EAAQutU,EAAOj0X,IAAIX,KAAKmgD,EAAK7wC,SAAS3O,IAG1C,IACE+hO,EADEC,EAAa,IAA2B,GAAKt7K,IAEjD,IACE,IAAKs7K,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,CACrD,IAAI5xC,EAAIu8N,EAAO9gO,MACXylD,EAAQlhD,GAAG7F,OAAS,IACtBb,KAAKo1X,cACLp1X,KAAKq1X,WAAW30U,EAAMkH,EAAQlhD,IAElC,CACF,CAAE,MAAO8gC,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACF,KAEK2xX,CACT,CA1D8C,CA0D5CH,KAISS,IAAgD,SAAUC,IACnE,QAAUD,EAAkCC,GAC5C,IAAI/wI,EAAU,IAAa8wI,GAC3B,SAASA,EAAiClwF,GACxC,IAAI3kS,EAIJ,OAHA,QAAgBT,KAAMs1X,IACtB70X,EAAQ+jP,EAAQ5iP,KAAK5B,OACfg/W,oBAAsB55E,GAAS45E,IAAoB55E,GAClD3kS,CACT,CAcA,OAbA,QAAa60X,EAAkC,CAAC,CAC9Cz0V,IAAK,MACL1+B,MAAO,SAAau+C,GACdA,aAAgBmzU,MAGZ7zX,KAAKg/W,sBAAwBqV,IAAiB3zU,EAAK9uC,SAAW8uC,EAAK9uC,kBAAkBw+W,KAAiB1vU,EAAK9uC,kBAAkBshX,OACjIlzX,KAAKo1X,cACL10U,EAAKvtC,UAGX,KAEKmiX,CACT,CAxB2D,CAwBzDT,KAOSW,IAAwC,SAAUhB,IAC3D,QAAUgB,EAA0BhB,GACpC,IAAIiB,EAAU,IAAaD,GAC3B,SAASA,IAEP,OADA,QAAgBx1X,KAAMw1X,GACfC,EAAQp0X,MAAMrB,KAAMY,UAC7B,CAmCA,OAlCA,QAAa40X,EAA0B,CAAC,CACtC30V,IAAK,WACL1+B,MAAO,SAAkBu+C,GAEvB,OADA1gD,KAAK08N,IAAIh8K,EAAM,IAAI/Z,KACZ3mC,KAAK40X,YACd,GACC,CACD/zV,IAAK,MACL1+B,MAAO,SAAau+C,EAAMg1U,GACxB,IAAIC,EAAiB,IAAIhvV,IACrB+Z,aAAgB0vT,KAEdtmC,GADJ6rD,EAAiBj1U,EAAKi1U,iBACcD,KAClC11X,KAAKo1X,cACL10U,EAAKk1U,eAAeF,GACe,IAA/Bh1U,EAAKi1U,eAAe90X,QACtB6/C,EAAKvtC,UAIX,IACE8zN,EADEC,EAAa,IAA2BxmL,EAAK7wC,UAEjD,IACE,IAAKq3N,EAAWppN,MAAOmpN,EAASC,EAAWt4M,KAAK0pB,MAAO,CACrD,IAAIxoC,EAAQm3N,EAAO9kO,MACnBnC,KAAK08N,IAAI5sN,EAAO,IAAI62B,IAAI,GAAGpzB,QAAO,QAAmBmiX,IAAiB,QAAmBC,KAC3F,CACF,CAAE,MAAOnuV,GACP0/L,EAAWhjO,EAAEsjC,EACf,CAAE,QACA0/L,EAAW7jO,GACb,CACF,KAEKmyX,CACT,CA1CmD,CA0CjDlB,KAISuB,IAA4C,SAAUC,IAC/D,QAAUD,EAA8BC,GACxC,IAAIC,EAAU,IAAaF,GAC3B,SAASA,IAEP,OADA,QAAgB71X,KAAM61X,GACfE,EAAQn0X,KAAK5B,KACtB,CAUA,OATA,QAAa61X,EAA8B,CAAC,CAC1Ch1V,IAAK,MACL1+B,MAAO,SAAau+C,GACdA,aAAgBkvT,MAAelvT,EAAKs1U,eACtCh2X,KAAKo1X,cACL10U,EAAKvtC,SAET,KAEK0iX,CACT,CAjBuD,CAiBrDhB,KAISoB,IAA2B,SAAUC,IAC9C,QAAUD,EAAaC,GACvB,IAAIC,EAAU,IAAaF,GAC3B,SAASA,IAEP,OADA,QAAgBj2X,KAAMi2X,GACfE,EAAQ90X,MAAMrB,KAAMY,UAC7B,CAsCA,OArCA,QAAaq1X,EAAa,CAAC,CACzBp1V,IAAK,MACL1+B,MAAO,SAAau+C,GAClB,KAAI2zU,IAAiB3zU,IAGjBA,EAAK01U,cAAgB,GAAzB,CAIA,IACEjvJ,EADEC,EAAa,IAA2B1mL,EAAK7wC,UAEjD,IACE,IAAKu3N,EAAWtpN,MAAOqpN,EAASC,EAAWx4M,KAAK0pB,MAAO,CACrD,IAAIxoC,EAAQq3N,EAAOhlO,MACnB,GAAI2N,aAAiBojX,IACnB,GAAIxyU,aAAgBwyU,IAClBlzX,KAAKo1X,cACL10U,EAAKw7J,MAAMpsM,OACN,CAEL,GAAI06T,GAAkB9pR,EAAKi1U,iBAAkB7lX,EAAMumX,mBACjD,SAEFr2X,KAAKo1X,cACLtlX,EAAMwmX,gBACR,CAEJ,CACF,CAAE,MAAO9uV,GACP4/L,EAAWljO,EAAEsjC,EACf,CAAE,QACA4/L,EAAW/jO,GACb,CAxBA,CA0BF,KAEK4yX,CACT,CA7CsC,CA6CpC1B,KAMSgC,IAA0B,SAAUC,IAC7C,QAAUD,EAAYC,GACtB,IAAIC,EAAU,IAAaF,GAC3B,SAASA,IAEP,OADA,QAAgBv2X,KAAMu2X,GACfE,EAAQp1X,MAAMrB,KAAMY,UAC7B,CAyFA,OAxFA,QAAa21X,EAAY,CAAC,CACxB11V,IAAK,MACL1+B,MAAO,SAAau+C,GAClB,IAAIg2U,GAAmB,QAAmBh2U,EAAK7wC,UAC3CwsL,EAAgB37I,EAAK7wC,SAASU,QAAO,SAAUT,GACjD,OAAOA,aAAiBojX,GAC1B,IACA,GAAIxyU,EAAK01U,cAAgB,GAAK/5L,EAAcx7L,QAAU,EAAG,CACvD,IAGEwmO,EAHEsvJ,EAAc,CAAC,EACfC,EAAmB,IAAIjwV,IACvB2gM,EAAa,IAA2BjrC,GAE5C,IACE,IAAKirC,EAAWxpN,MAAOupN,EAASC,EAAW14M,KAAK0pB,MAAO,CACrD,IAGEyxR,EAFEtjR,EADY4gL,EAAOllO,MACDskD,MAClBujR,EAAa,IAA2B,GAAKvjR,IAEjD,IACE,IAAKujR,EAAWlsT,MAAOisT,EAASC,EAAWp7S,KAAK0pB,MAAO,CACrD,IAAI5xC,EAAIqjU,EAAO5nU,MACTuE,KAAKiwX,EAEAA,EAAYjwX,KAAO+/C,EAAM//C,IAClCkwX,EAAiBplX,IAAI9K,GAFrBiwX,EAAYjwX,GAAK+/C,EAAM//C,EAI3B,CACF,CAAE,MAAO8gC,GACPwiS,EAAW9lU,EAAEsjC,EACf,CAAE,QACAwiS,EAAW3mU,GACb,CACF,CACF,CAAE,MAAOmkC,GACP8/L,EAAWpjO,EAAEsjC,EACf,CAAE,QACA8/L,EAAWjkO,GACb,CACA,IACEgmU,EADEC,EAAa,IAA2BstD,GAE5C,IACE,IAAKttD,EAAWxrT,MAAOurT,EAASC,EAAW16S,KAAK0pB,MAAO,QAE9Cq+U,EADKttD,EAAOlnU,MAErB,CACF,CAAE,MAAOqlC,GACP8hS,EAAWplU,EAAEsjC,EACf,CAAE,QACA8hS,EAAWjmU,GACb,CACA,IAAKonU,GAAQksD,GAAc,CACzB32X,KAAKo1X,cACL,IAEE3rD,EAFEotD,EAAkB,IAAI3D,IAAUxyU,EAAMi2U,GACtCjtD,EAAa,IAA2BgtD,GAE5C,IACE,IAAKhtD,EAAW5rT,MAAO2rT,EAASC,EAAW96S,KAAK0pB,MAAO,CACrD,IAAIi+C,EAAYkzO,EAAOtnU,MACvB,GAAIo0F,aAAqB28R,IAAW,CAClC,IACEtpD,EADEC,EAAa,IAA2B,GAAK8sD,IAEjD,IACE,IAAK9sD,EAAW/rT,MAAO8rT,EAASC,EAAWj7S,KAAK0pB,MAAO,CACrD,IAAIzX,EAAM+oS,EAAOznU,aACVo0F,EAAU9vC,MAAM5lB,EACzB,CACF,CAAE,MAAO2G,GACPqiS,EAAW3lU,EAAEsjC,EACf,CAAE,QACAqiS,EAAWxmU,GACb,CACF,CACAq9C,EAAKrxC,YAAYknF,GACjBA,EAAU3kF,OAASilX,EAEftgS,aAAqB28R,KAA8C,IAAjC,GAAK38R,EAAU9vC,OAAO5lD,QAC1D01F,EAAUpjF,QAEd,CACF,CAAE,MAAOq0B,GACPkiS,EAAWxlU,EAAEsjC,EACf,CAAE,QACAkiS,EAAWrmU,GACb,CACF,CACF,CACF,KAEKkzX,CACT,CAhGqC,CAgGnChC,KAMSuC,IAAoC,SAAUC,IACvD,QAAUD,EAAsBC,GAChC,IAAIC,EAAU,IAAaF,GAC3B,SAASA,IAEP,OADA,QAAgB92X,KAAM82X,GACfE,EAAQ31X,MAAMrB,KAAMY,UAC7B,CAcA,OAbA,QAAak2X,EAAsB,CAAC,CAClCj2V,IAAK,MACL1+B,MAAO,SAAau+C,GACdA,aAAgBkvT,KAAclvT,EAAK01U,cAAgB,GAAK11U,aAAgB4wU,KAEjE5wU,aAAgBuzU,MAGzBj0X,KAAKo1X,cACL10U,EAAKvtC,SAET,KAEK2jX,CACT,CArB+C,CAqB7CvC,KAIS0C,IAA8B,SAAUC,IACjD,QAAUD,EAAgBC,GAC1B,IAAIC,EAAU,IAAaF,GAC3B,SAASA,IAEP,OADA,QAAgBj3X,KAAMi3X,GACfE,EAAQ91X,MAAMrB,KAAMY,UAC7B,CAuBA,OAtBA,QAAaq2X,EAAgB,CAAC,CAC5Bp2V,IAAK,MACL1+B,MAAO,SAAau+C,GAClB,IAKEwpR,EALEktD,EAAmB12U,EAAK7wC,SAASU,QAAO,SAAUtF,GACpD,OAAOA,aAAamlW,GACtB,IACIinB,EAAcD,EAAiBnwW,MAC/BkjT,EAAc,IAA2BitD,GAE7C,IACE,IAAKjtD,EAAYrsT,MAAOosT,EAAUC,EAAYv7S,KAAK0pB,MAAO,CACxD,IAAI2iS,EAAW/Q,EAAQ/nU,MACvBnC,KAAKo1X,cACLiC,EAAYn7K,MAAM++H,EACpB,CACF,CAAE,MAAOzzS,GACP2iS,EAAYjmU,EAAEsjC,EAChB,CAAE,QACA2iS,EAAY9mU,GACd,CACF,KAEK4zX,CACT,CA9ByC,CA8BvC1C,KACS+C,IAA+B,SAAUC,IAClD,QAAUD,EAAiBC,GAC3B,IAAIC,EAAU,IAAaF,GAC3B,SAASA,IAEP,OADA,QAAgBt3X,KAAMs3X,GACfE,EAAQn2X,MAAMrB,KAAMY,UAC7B,CA+DA,OA9DA,QAAa02X,EAAiB,CAAC,CAC7Bz2V,IAAK,MACL1+B,MAAO,SAAau+C,GAClB,IASE0pR,EAHEqtD,EAAoB,CAAC,EAErBltD,EAAc,IARA7pR,EAAK7wC,SAASU,QAAO,SAAUT,GAC/C,OAAOA,aAAiBsgX,GAC1B,KAQA,IACE,IAAK7lD,EAAYzsT,MAAOssT,EAAUG,EAAY37S,KAAK0pB,MAAO,CACxD,IAAIoyL,EAAM0/F,EAAQjoU,MACdu1X,EAAW,GAAKhtJ,EAAIitJ,SAClBD,KAAYD,IAChBA,EAAkBC,GAAY,IAEhCD,EAAkBC,GAAUn3X,KAAKmqO,EACnC,CAEF,CAAE,MAAOljM,GACP+iS,EAAYrmU,EAAEsjC,EAChB,CAAE,QACA+iS,EAAYlnU,GACd,CACA,IACE+9V,EADEC,EAAc,IAA2B,GAAKo2B,IAElD,IACE,IAAKp2B,EAAYvjV,MAAOsjV,EAAUC,EAAYzyU,KAAK0pB,MAAO,CACxD,IACIs/U,EAAgBH,EADRr2B,EAAQj/V,OAEpB,GAAIy1X,EAAc/2X,OAAS,EAAG,CAC5B,IAEEg3X,EAFEC,EAAaF,EAAc3wW,MAC3B8wW,EAAc,IAA2BH,GAE7C,IACE,IAAKG,EAAYj6W,MAAO+5W,EAAUE,EAAYnpW,KAAK0pB,MAAO,CACxD,IAAI0/U,EAAOH,EAAQ11X,MACf21X,EAAW57K,MAAM87K,KACnBt3U,EAAKrxC,YAAY2oX,GACjBA,EAAKpmX,OAASkmX,EACdE,EAAK7kX,SACLnT,KAAKo1X,cAET,CACF,CAAE,MAAO5tV,GACPuwV,EAAY7zX,EAAEsjC,EAChB,CAAE,QACAuwV,EAAY10X,GACd,CACF,CACF,CACF,CAAE,MAAOmkC,GACP65T,EAAYn9V,EAAEsjC,EAChB,CAAE,QACA65T,EAAYh+V,GACd,CACF,KAEKi0X,CACT,CAtE0C,CAsExC/C,KAIS0D,IAAyB,SAAUC,IAC5C,QAAUD,EAAWC,GACrB,IAAIC,EAAW,IAAaF,GAC5B,SAASA,EAAU7yF,GACjB,IAAItmO,EAIJ,OAHA,QAAgB9+D,KAAMi4X,IACtBn5T,EAASq5T,EAASv2X,KAAK5B,OAChBolS,MAAQA,EACRtmO,CACT,CAgEA,OA/DA,QAAam5T,EAAW,CAAC,CACvBp3V,IAAK,MACL1+B,MAAO,SAAau+C,GAClB,IAIE03U,EAJEC,IAAehE,IAAiB3zU,IAASA,aAAgB2+T,KAAc3+T,aAAgBwyU,KAAaxyU,aAAgBmzU,KACpHyE,EAAiB,GACjBC,EAAgB,GAChBC,EAAc,IAA2B93U,EAAK7wC,UAElD,IACE,IAAK2oX,EAAY16W,MAAOs6W,EAAUI,EAAY5pW,KAAK0pB,MAAO,CACxD,IAAIxoC,EAAQsoX,EAAQj2X,MAChB2N,aAAiBi/W,MACfsJ,IAAe7tD,GAAkB9pR,EAAKi1U,iBAAkB7lX,EAAMumX,mBAChEiC,EAAe/3X,KAAKuP,GAEpByoX,EAAch4X,KAAKuP,GAGzB,CACF,CAAE,MAAO03B,GACPgxV,EAAYt0X,EAAEsjC,EAChB,CAAE,QACAgxV,EAAYn1X,GACd,CACA,GAAIi1X,EAAez3X,OAAS,EAAG,CAC7B,IAEE43X,EAFEC,EAAcJ,EAAerxW,MAC7B0xW,EAAc,IAA2BL,GAE7C,IACE,IAAKK,EAAY76W,MAAO26W,EAAUE,EAAY/pW,KAAK0pB,MAAO,CACxD,IAAI6zK,EAAMssK,EAAQt2X,MAClBu2X,EAAYx8K,MAAMiQ,EAAKnsN,KAAKolS,MAAM4pF,aAAa5rX,KAAKpD,KAAKolS,OAC3D,CACF,CAAE,MAAO59P,GACPmxV,EAAYz0X,EAAEsjC,EAChB,CAAE,QACAmxV,EAAYt1X,GACd,CACArD,KAAKo1X,cACD10U,aAAgBquU,IAClBruU,EAAKw7J,MAAMw8K,EAAa14X,KAAKolS,MAAM4pF,aAAa5rX,KAAKpD,KAAKolS,QAE1DszF,EAAYpC,gBAEhB,CACA,GAAIiC,EAAc13X,OAAS,EAAG,CAC5B,IAEE+3X,EAFEC,EAAeN,EAActxW,MAC7B6xW,EAAc,IAA2BP,GAE7C,IACE,IAAKO,EAAYh7W,MAAO86W,EAAUE,EAAYlqW,KAAK0pB,MAAO,CACxD,IAAIygV,EAAOH,EAAQz2X,MACnB02X,EAAa38K,MAAM68K,EAAM/4X,KAAKolS,MAAM4pF,aAAa5rX,KAAKpD,KAAKolS,OAC7D,CACF,CAAE,MAAO59P,GACPsxV,EAAY50X,EAAEsjC,EAChB,CAAE,QACAsxV,EAAYz1X,GACd,CACArD,KAAKo1X,aACP,CACF,KAEK6C,CACT,CA1EoC,CA0ElC1D,KAQSyE,IAA4B,SAAUC,IAC/C,QAAUD,EAAcC,GACxB,IAAIC,EAAW,IAAaF,GAC5B,SAASA,IAEP,OADA,QAAgBh5X,KAAMg5X,GACfE,EAAS73X,MAAMrB,KAAMY,UAC9B,CAwEA,OAvEA,QAAao4X,EAAc,CAAC,CAC1Bn4V,IAAK,MACL1+B,MAAO,SAAau+C,GAClB,IAAI7wC,GAAW,QAAmB6wC,EAAK7wC,UACnCspX,EAAiBz+T,GAAK7qD,GAAU,SAAUC,GAC5C,OAAOA,aAAiB8/V,GAC1B,IACA,GAAKupB,KAAkBz4U,EAAK01U,eAAiB,GAA7C,CAGA,IAGIgD,EAEFC,EALEC,EAAgB,GAIhBC,EAAc,IAA2B1pX,GAE7C,IACE,IAAK0pX,EAAYz7W,MAAOu7W,EAAUE,EAAY3qW,KAAK0pB,MAAO,CACxD,IAAIkyU,EAAS6O,EAAQl3X,MACrB,GAAIqoX,aAAkB5a,IAAY,CAEhC,IADA,IAAI4pB,EAAahP,EACmB,IAA7BgP,EAAWpD,eAAqB,CACrC,IACEqD,GADyB,OAAeD,EAAW3pX,SAAU,GAC7B,GAClC,KAAI4pX,aAAoB7pB,KAGtB,MAFA4pB,EAAaC,CAIjB,CACAH,EAAc/4X,KAAKc,MAAMi4X,GAAe,QAAmBE,EAAW3pX,WAClEupX,GAKF14U,EAAKrxC,YAAYm7W,GACjBA,EAAO54W,OAASwnX,EAAWxnX,OAC3BwnX,EAAWxnX,OAAOvC,YAAY+pX,GAC9BA,EAAWxnX,OAAS4nX,EACpBx5X,KAAKo1X,eAELgE,EAAaI,CAEjB,MACEF,EAAc/4X,KAAKiqX,EAEvB,CACF,CAAE,MAAOhjV,GACP+xV,EAAYr1X,EAAEsjC,EAChB,CAAE,QACA+xV,EAAYl2X,GACd,CACA,GAAIi2X,EAAcz4X,OAAQ,CACxBb,KAAKo1X,cACL,IACEsE,EADEC,EAAc,IAA2BL,GAE7C,IACE,IAAKK,EAAY77W,MAAO47W,EAAUC,EAAY/qW,KAAK0pB,MAAO,CACxD,IAAIxoC,EAAQ4pX,EAAQv3X,MACpB2N,EAAM8B,OAAOvC,YAAYS,GACzBA,EAAM8B,OAASwnX,CACjB,CACF,CAAE,MAAO5xV,GACPmyV,EAAYz1X,EAAEsjC,EAChB,CAAE,QACAmyV,EAAYt2X,GACd,CACF,CA3DA,CA4DF,KAEK21X,CACT,CA/EuC,CA+ErCzE,KCnnBF,SAAS,IAAQ5vV,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CAEpV,SAAS,IAA2Bxb,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAClL,SAAS,IAAawqB,GAAW,IAAIC,EACrC,WAAuC,GAAuB,oBAAZ1kH,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFxqD,QAAQ10E,UAAU03C,QAAQh2C,KAAKq9H,QAAQC,UAAUtqD,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO1wE,KAAK,OAAO,CAAO,CAAE,CADvQ,GAA6B,OAAO,WAAkC,IAAsC0O,EAAlCgxO,GAAQ,QAAgBF,GAAkB,GAAIC,EAA2B,CAAE,IAAIE,GAAY,QAAgB7jP,MAAM8E,YAAa8N,EAASqsH,QAAQC,UAAU0kH,EAAOhjP,UAAWijP,EAAY,MAASjxO,EAASgxO,EAAMviP,MAAMrB,KAAMY,WAAc,OAAO,QAA2BZ,KAAM4S,EAAS,CAAG,CASja,IAAIgnX,IAA0C,SAAU/pB,IAC7D,QAAU+pB,EAA4B/pB,GACtC,IAAInuW,EAAS,IAAak4X,GAC1B,SAASA,EAA2BhoX,EAAQkC,GAC1C,IAAIrT,EAIJ,OAHA,QAAgBT,KAAM45X,IACtBn5X,EAAQiB,EAAOE,KAAK5B,KAAM4R,IACpBkC,UAAYA,EACXrT,CACT,CA0EA,OAzEA,QAAam5X,EAA4B,CAAC,CACxC/4V,IAAK,QACL1+B,MAAO,WACL,OAAO,IAAIy3X,EAA2B,KAAMhxD,GAAU5oU,KAAK8T,WAC7D,GACC,CACD+sB,IAAK,gBACL1+B,MAAO,SAAuBy9H,GAC5B5/H,KAAK8T,UAAUg5N,QAAUzqM,GAAOriC,KAAK8T,UAAUg5N,QAAQv5N,OAAOqsH,IAAS,SAAU75G,GAC/E,OAAOA,CACT,GACF,GACC,CACD8a,IAAK,kBACL1+B,MAAO,WACL,IAAI+gB,EAAM,IAAIyjB,IASd,OARI3mC,KAAK8T,UAAUg5N,SACjB9sO,KAAK8T,UAAUg5N,QAAQ1kO,QAAQ8a,EAAI1R,IAAK0R,GAE1CljB,KAAK8T,UAAUqjV,cAAcnmU,KAAI,SAAUtD,GACzC,OAAOA,EAAEmyG,KACX,IAAGtvH,QAAO,SAAUlN,GAClB,YAAaozB,IAANpzB,CACT,IAAG+E,QAAQ8a,EAAI1R,IAAK0R,GACbA,CACT,GACC,CACD2d,IAAK,iBACL1+B,MAAO,WACL,OAAO,IAAIwkC,IAAI3mC,KAAK8T,UAAUqjV,cAAcnmU,IAAIhxB,KAAK65X,gBACvD,GACC,CACDh5V,IAAK,iBACL1+B,MAAO,SAAwB23X,GAC7B,IAAIC,EACJ,OAA8D,QAAtDA,EAAwBD,EAAsB/wJ,UAA0C,IAA1BgxJ,EAAmCA,EAAwB,IAAQD,EAC3I,GACC,CACDj5V,IAAK,OACL1+B,MAAO,WACL,MAAO,0BAA0BoR,OAAO,GAAMvT,KAAK8T,WACrD,GACC,CACD+sB,IAAK,WACL1+B,MAAO,WACL,IAIEo8N,EAJE3+F,EAAS,GACT7yE,EAAM,GACNg8K,EAAK,GACLvK,EAAY,IAA2Bx+N,KAAK8T,UAAUqjV,eAE1D,IACE,IAAK34H,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAI6+S,EAAgB54H,EAAMp8N,MAC1B4qD,EAAIxsD,KAAK42V,EAAclqS,IACvB87K,EAAGxoO,KAAKP,KAAK65X,eAAe1iC,IAC5Bv3N,EAAOr/H,UAA6Bk2B,IAAxB0gU,EAAct3N,MAAsB,KAAOs3N,EAAct3N,MACvE,CACF,CAAE,MAAOr4F,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACA,IAAIypO,EAAU9sO,KAAK8T,UAAUg5N,QAC7B,OAtFN,SAAuBpkO,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAsF5e,CAAc,CACnBC,KAAM,gBACNogO,GAAIA,EACJh8K,IAAKA,EACL6yE,OAAQA,QACKnpG,IAAZq2M,EAAwB,CACzBA,QAASA,GACP,CAAC,EACP,KAEK8sJ,CACT,CApFqD,CAoFnDtqB,KClGF,SAAS,IAA2BlqV,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAGlL,SAAS,IAAawqB,GAAW,IAAIC,EACrC,WAAuC,GAAuB,oBAAZ1kH,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFxqD,QAAQ10E,UAAU03C,QAAQh2C,KAAKq9H,QAAQC,UAAUtqD,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO1wE,KAAK,OAAO,CAAO,CAAE,CADvQ,GAA6B,OAAO,WAAkC,IAAsC0O,EAAlCgxO,GAAQ,QAAgBF,GAAkB,GAAIC,EAA2B,CAAE,IAAIE,GAAY,QAAgB7jP,MAAM8E,YAAa8N,EAASqsH,QAAQC,UAAU0kH,EAAOhjP,UAAWijP,EAAY,MAASjxO,EAASgxO,EAAMviP,MAAMrB,KAAMY,WAAc,OAAO,QAA2BZ,KAAM4S,EAAS,CAAG,CAsBja,IAAIonX,IAAyB,SAAUnqB,IAC5C,QAAUmqB,EAAWnqB,GACrB,IAAInuW,EAAS,IAAas4X,GAC1B,SAASA,EAAUpoX,EAAQm5P,GACzB,IAAItqQ,EAIJ,OAHA,QAAgBT,KAAMg6X,IACtBv5X,EAAQiB,EAAOE,KAAK5B,KAAM4R,IACpBqoX,OAASlvH,EACRtqQ,CACT,CA4OA,OA3OA,QAAau5X,EAAW,CAAC,CACvBn5V,IAAK,QACL1+B,MAAO,WACL,OAAO,IAAI63X,EAAU,KAAMpxD,GAAU5oU,KAAKi6X,QAC5C,GACC,CACDp5V,IAAK,QACL7+B,IAAK,WACH,OAAOhC,KAAKi6X,MACd,GACC,CACDp5V,IAAK,gBACL1+B,MAAO,SAAuBy9H,GAC5B,IAAIs6P,GACHA,EAAuBl6X,KAAKi6X,OAAOE,SAAS55X,KAAKc,MAAM64X,GAAsB,QAAmBt6P,GACnG,GACC,CACD/+F,IAAK,kBACL1+B,MAAO,WACL,IAAI+gB,EAAM,IAAIyjB,IAKd,OAJAzjB,EAAI1R,IAAIxR,KAAKi6X,OAAOG,YACpBp6X,KAAKq6X,mBAAmBjyX,QAAQ8a,EAAI1R,IAAK0R,GACzCljB,KAAKi6X,OAAOE,QAAQ/xX,QAAQ8a,EAAI1R,IAAK0R,GACrCljB,KAAKi6X,OAAO1nX,KAAKstH,MAAMz3H,QAAQ8a,EAAI1R,IAAK0R,GACjCA,CACT,GACC,CACD2d,IAAK,iBACL1+B,MAAO,WACL,OAAO,IAAIwkC,IAAI3mC,KAAKi6X,OAAOlxJ,GAC7B,GACC,CACDloM,IAAK,OACL1+B,MAAO,WACL,MAAO,SAASoR,OAAO,GAAMvT,KAAKi6X,QACpC,GACC,CACDp5V,IAAK,mBACL1+B,MAAO,WACL,IAAIm4X,EAAet6X,KAAKi6X,OACtBM,EAAqBD,EAAaC,mBAClC7nJ,EAAS4nJ,EAAa5nJ,OACtB5F,EAAUwtJ,EAAaxtJ,QACzB,OAAIytJ,EAAmB15X,OAAS,EACvB05X,EAAmBvpW,KAAI,SAAUwpW,GACtC,OAAIA,EAAkBruK,IAChBumB,EAGK,CAAC,IAAQ8nJ,EAAmB,CACjC71C,UAAW,SAGR,CAEP,IAAQ61C,EAAmB,CAAC,GAAI,IAAQA,EAAmB,CACzD71C,UAAW,SAGR,CAAC,IAAQ61C,GAClB,IAAG5qU,OAEEk9K,QAAyCA,EAAU,EAC5D,GACC,CACDjsM,IAAK,WACL1+B,MAAO,WACL,IAAI2R,EAAY,GACZ2mX,EAAgBz6X,KAAKi6X,OACvBE,EAAUM,EAAcN,QACxBI,EAAqBE,EAAcF,mBACnC16P,EAAQ46P,EAAcL,WACtBM,EAAUD,EAAcC,QACxBnoX,EAAOkoX,EAAcloX,KACrB4wE,EAASs3S,EAAct3S,OACvBuvJ,EAAS+nJ,EAAc/nJ,OACvB3J,EAAK0xJ,EAAc1xJ,GAErB,GAAI2J,EAAQ,CACV,IACEnU,EADEC,EAAY,IAA2B+7J,GAE3C,IACE,IAAK/7J,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIkiV,EAAoBj8J,EAAMp8N,MAC1Bw4X,EAAwBH,EAAkBn1D,aAC5CA,OAAyC,IAA1Bs1D,EAAmC,GAAMA,EAE1D,GADQH,EAAkBruK,IACjB,CAGP,IAAIyuK,EAAW,IAAQJ,EAAmB,CACxC9qJ,KAAM,UAEJmrJ,EAAS,IAAQL,EAAmB,CACtC9qJ,KAAM,QACNi1G,UAAW,QAEb7wU,EAAUvT,KAAK,CACboI,KAAM,UACN+mO,KAAM,GAAGn8N,OAAO8xT,EAAc,KAAK9xT,OAAOqnX,EAAU,KAAKrnX,OAAO,EAAI8xT,EAAc,KAAK9xT,OAAOsnX,GAC9F9xJ,GAAI,IAAQyxJ,EAAmB,CAC7B71C,UAAW,MACX2E,OAAO,KAGb,CACAx1U,EAAUvT,KAAK,CACboI,KAAM,SACNk3H,MAAOA,EACPitG,QAAS,GAAGv5N,QAAO,QAAmBmnX,IAAU,QAAmBP,IACnEt5V,IAAK,IAAQ25V,EAAmB,CAC9B71C,UAAW,QAEbh5U,OAAQ,QACRxJ,MAAO,GAEX,CACF,CAAE,MAAOqlC,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACF,CAUA,OARAyQ,EAAUvT,KAAK,CACboI,KAAM,QACNmkO,QAAS,GAAGv5N,QAAO,QAAmBvT,KAAKq6X,qBAAqB,QAAmBF,IACnFt6P,MAAOA,EACPttH,KAAMA,EACNw2N,GAAIA,EACJ5lJ,OAAQA,IAEHrvE,CACT,IACE,CAAC,CACH+sB,IAAK,oBACL1+B,MAAO,SAA2ByP,EAAQkpX,GACxC,IAAI/vH,EAAQ+vH,EAAe/vH,MACzBj+B,EAAUguJ,EAAehuJ,QACzB/D,EAAK+xJ,EAAe/xJ,GACpBgyJ,EAAwBD,EAAe33S,OACvCA,OAAmC,IAA1B43S,EAAmC,OAASA,EACnDC,EAAa,GACbj4U,EAAY,GAChB,QAA4BtsB,IAAxBqkW,EAAevoX,KAAoB,CACrC,IACE0wN,EADEC,EAAa,IAA2B43J,EAAevoX,MAE3D,IACE,IAAK2wN,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,CACrD,IAAIi5U,EAAYtuJ,EAAO9gO,MACvB64X,EAAWz6X,KAAKgxX,EAAU1xP,OAC1B98E,EAAUxiD,KAAKgrU,GAAgBgmD,EAAUj0U,MAAO,aAClD,CACF,CAAE,MAAO9V,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACF,CACA,IAII43X,EAJA1oX,EAAO,CACTstH,MAAOm7P,EACP19U,MAAOyF,GAUT,OAJEk4U,EAtLR,SAAwBlyJ,GACtB,OAAO,GAAQA,IAAOA,EAAGvgG,OAAM,SAAU1qH,GACvC,OAAO,GAASA,EAClB,KAAMirN,EAAGloO,OAAS,CACpB,CA+KUq6X,CAAenyJ,GACFA,EACN,GAASA,GACH,CAACA,EAAI,GAAGx1N,OAAOw1N,EAAI,SAEnB,CAAC,GAAGx1N,OAAOunX,EAAe/vH,MAAO,UAAW,GAAGx3P,OAAOunX,EAAe/vH,MAAO,SAEtF,IAAIivH,EAAUpoX,EAAQ,CAC3B2oX,mBAAoB,GACpBH,WAAYrvH,EACZj+B,QAASA,EACT3pJ,OAAQA,EACR5wE,KAAMA,EACN4nX,QAAS,GACTpxJ,GAAIkyJ,GAER,GACC,CACDp6V,IAAK,mBACL1+B,MAAO,SAA0ByP,EAAQwzR,GACvC,IAAI+1F,EAAkB/1F,EAAMr6B,MACxBihF,EAAW5mD,EAAM4mD,SACrB,IAAKmvC,EACH,OAAO,KAET,IAYI5oX,EAZAqxV,EAAkBu3B,EAAgBv3B,gBACpCL,EAAe43B,EAAgB53B,aAC/BpgR,EAASg4S,EAAgBh4S,OACzBuvJ,EAASyoJ,EAAgBzoJ,OACvB6nJ,EAAqB32B,EAAgB5yU,KAAI,SAAUoqW,GAErD,OAAO1wC,IADIsB,EAASovC,GAEtB,IAAG7qX,QAAO,SAAU61B,GAClB,QAASA,CACX,IACIs0V,EAhOV,SAA0Bt1F,GACxB,OAAOA,EAAMr6B,MAAMo5F,QAAQxyU,QAAO,SAAUiuG,EAAQj2G,GAClD,IACIs9S,EAAS,IADEt9S,EAAGitT,UAKlB,OAHI3P,GACFrnM,EAAOr/H,KAAK0mU,GAEPrnM,CACT,GAAG,GACL,CAuNoBy7P,CAAiBj2F,GAC3BuvC,EAAWvvC,EAAM4mD,SAAS1uS,MAE9B,GAAI,GAAQq3R,IAAa6O,IAAW7O,GAClCpiU,EAAOmiU,IAAWC,OACb,CACL,IAAI5xR,EAAYslS,IAAe1T,GAAYA,EAASpiU,KAAwB,MAAjBgxV,EAAuB,aAAe,YAGjGhxV,EAAOmoX,EAAQ/oW,QAAO,SAAU7T,EAAG+hH,GAGjC,OAFA/hH,EAAE+hH,MAAMt/H,KAAKs/H,GACb/hH,EAAEw/B,MAAM/8C,KAAKwiD,GACNjlC,CACT,GAAG,CACD+hH,MAAO,GACPviF,MAAO,IAEX,CACA,OAAO,IAAI08U,EAAUpoX,EAAQ,CAC3B2oX,mBAAoBA,EACpBH,WAAYh1F,EAAMmsE,QAAQhO,GAC1B42B,QAAS,GACTO,QAASA,EACTnoX,KAAMA,EACN4wE,OAAQA,EACRuvJ,OAAQA,EACR3J,GAAI,CAACq8D,EAAMmsE,QAAQhO,EAAc,CAC/BhuM,OAAQ,QACR+zL,OAAO,IACLlkD,EAAMmsE,QAAQhO,EAAc,CAC9BhuM,OAAQ,MACR+zL,OAAO,MAGb,KAEK0wC,CACT,CAtPoC,CAsPlC1qB,KCjRF,SAAS,IAAQ3qU,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CACzf,SAAS,IAA2B0c,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAClL,SAAS,IAAawqB,GAAW,IAAIC,EACrC,WAAuC,GAAuB,oBAAZ1kH,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFxqD,QAAQ10E,UAAU03C,QAAQh2C,KAAKq9H,QAAQC,UAAUtqD,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO1wE,KAAK,OAAO,CAAO,CAAE,CADvQ,GAA6B,OAAO,WAAkC,IAAsC0O,EAAlCgxO,GAAQ,QAAgBF,GAAkB,GAAIC,EAA2B,CAAE,IAAIE,GAAY,QAAgB7jP,MAAM8E,YAAa8N,EAASqsH,QAAQC,UAAU0kH,EAAOhjP,UAAWijP,EAAY,MAASjxO,EAASgxO,EAAMviP,MAAMrB,KAAMY,WAAc,OAAO,QAA2BZ,KAAM4S,EAAS,CAAG,CAUja,IAAI0oX,IAAmC,SAAUzrB,IACtD,QAAUyrB,EAAqBzrB,GAC/B,IAAInuW,EAAS,IAAa45X,GAC1B,SAASA,EAAoB1pX,EAAQkC,GACnC,IAAIrT,EAIJ,OAHA,QAAgBT,KAAMs7X,IACtB76X,EAAQiB,EAAOE,KAAK5B,KAAM4R,IACpBkC,UAAYA,EACXrT,CACT,CAyHA,OAxHA,QAAa66X,EAAqB,CAAC,CACjCz6V,IAAK,QACL1+B,MAAO,WACL,OAAO,IAAIm5X,EAAoB,KAAM1yD,GAAU5oU,KAAK8T,WACtD,GACC,CACD+sB,IAAK,gBACL1+B,MAAO,SAAuBy9H,GAC5B5/H,KAAK8T,UAAUg5N,QAAUzqM,GAAOriC,KAAK8T,UAAUg5N,QAAQv5N,OAAOqsH,IAAS,SAAU75G,GAC/E,OAAOA,CACT,GACF,GACC,CACD8a,IAAK,kBACL1+B,MAAO,WACL,IAAIo5X,EAAuBC,EACvBt4W,EAAM,IAAIyjB,IAUd,OATsD,QAApD40V,EAAwBv7X,KAAK8T,UAAUg5N,eAA+C,IAA1ByuJ,EAAmCA,EAAwB,IAAInzX,QAAQ8a,EAAI1R,IAAK0R,IAC5F,QAAhDs4W,EAAuBx7X,KAAK8T,UAAUvB,YAA2C,IAAzBipX,EAAkCA,EAAuB,IAAIpzX,SAAQ,SAAU2N,GACvI,OAAOmN,EAAI1R,IAAIuE,EAAE8pH,MACnB,IACA7/H,KAAK8T,UAAU5Q,OAAO8tB,KAAI,SAAUtD,GAClC,OAAOA,EAAEmyG,KACX,IAAGtvH,QAAO,SAAUlN,GAClB,YAAaozB,IAANpzB,CACT,IAAG+E,QAAQ8a,EAAI1R,IAAK0R,GACbA,CACT,GACC,CACD2d,IAAK,iBACL1+B,MAAO,WACL,OAAO,IAAIwkC,IAAI3mC,KAAK8T,UAAU5Q,OAAO8tB,IAAIhxB,KAAK65X,gBAChD,GACC,CACDh5V,IAAK,iBACL1+B,MAAO,SAAwBs5X,GAC7B,IAAIC,EACJ,OAAoD,QAA5CA,EAAqBD,EAAe1yJ,UAAuC,IAAvB2yJ,EAAgCA,EAAqB,IAAQD,EAC3H,GACC,CACD56V,IAAK,OACL1+B,MAAO,WACL,MAAO,mBAAmBoR,OAAO,GAAMvT,KAAK8T,WAC9C,GACC,CACD+sB,IAAK,WACL1+B,MAAO,WACL,IAKEo8N,EALE3+F,EAAS,GACT7yE,EAAM,GACNg8K,EAAK,GACLznN,EAAS,GACTk9M,EAAY,IAA2Bx+N,KAAK8T,UAAU5Q,QAE1D,IACE,IAAKs7N,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIp1C,EAASq7N,EAAMp8N,MACnB4qD,EAAIxsD,KAAK2C,EAAO+pD,IAChB87K,EAAGxoO,KAAKP,KAAK65X,eAAe32X,IAC5Boe,EAAO/gB,UAAsBk2B,IAAjBvzB,EAAOy6I,MAAsB,KAAOz6I,EAAOy6I,OACvD/d,EAAOr/H,UAAsBk2B,IAAjBvzB,EAAO28H,MAAsB,KAAO38H,EAAO28H,MACzD,CACF,CAAE,MAAOr4F,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACA,IAAIwzO,EAAQ72O,KAAK8T,UAAU+iO,MACvB/J,EAAU9sO,KAAK8T,UAAUg5N,QAC7B,GAAI+J,GAAsB,OAAbA,EAAM,IAA4B,OAAbA,EAAM,IAAe9pL,EAAIy7E,OAAM,SAAUpjH,GACzE,OAAOmsT,IAAcnsT,EACvB,IAEE,OAAO,IAAc,CACnBzc,KAAM,gBACNogO,GAAIA,EACJh8K,IAAKA,EACL6yE,OAAQA,QACKnpG,IAAZq2M,EAAwB,CACzBA,QAASA,GACP,CAAC,GAEP,IAAIkuJ,EAAa,GACbj4U,EAAY,GAChB,QAA4BtsB,IAAxBz2B,KAAK8T,UAAUvB,KAAoB,CACrC,IACE0wN,EADEC,EAAa,IAA2BljO,KAAK8T,UAAUvB,MAE3D,IACE,IAAK2wN,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,CACrD,IAAIqjV,EACApK,EAAYtuJ,EAAO9gO,MACvB64X,EAAWz6X,KAAKgxX,EAAU1xP,OAC1B98E,EAAUxiD,KAA8C,QAAxCo7X,EAAmBpK,EAAUj0U,aAAwC,IAArBq+U,EAA8BA,EAAmB,YACnH,CACF,CAAE,MAAOn0V,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACF,CACA,IAAIkP,EAAO,CACTstH,MAAOm7P,EACP19U,MAAOyF,GAEL6zL,EAAc52O,KAAK8T,UAAU8iO,YACjC,OAAO,IAAc,IAAc,IAAc,CAC/CjuO,KAAM,SACN2Y,OAAQA,EACRynN,GAAIA,EACJh8K,IAAKA,EACL6yE,OAAQA,EACRrtH,KAAMA,QACWkkB,IAAhBmgN,EAA4B,CAC7BA,YAAaA,GACX,CAAC,QAAgBngN,IAAZq2M,EAAwB,CAC/BA,QAASA,GACP,CAAC,QAAcr2M,IAAVogN,EAAsB,CAC7BA,MAAOA,GACL,CAAC,EACP,KAEKykJ,CACT,CAnI8C,CAmI5ChsB,KCpJF,SAAS,IAA2BlqV,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CA6C3K,SAAS0iK,IAAcl7U,GAC5B,GAAIA,aAAgB4wU,IAClB,GAA2B,IAAvB5wU,EAAK01U,eAAyB11U,EAAK7wC,SAAS,aAAc+/V,IAQvD,CAEL,IAAIisB,EAAYn7U,EAAK0kP,MAAM5lO,UAAU95C,KAAKoyT,KAC1CgkD,IAAoBD,GAEpB,IAGE54J,EAHE84J,GAhDYrhE,EAgDUh6Q,EA/C9B,SAASnqC,EAAMmqC,GACb,KAAMA,aAAgB4wU,KAAY,CAChC,IAAItpV,EAAO0Y,EAAKnqC,QAChB,GAAIyxB,aAAgB4nU,IAAY,CAC9B,IAAIosB,EAAUC,IAAqBj0V,EAAKk0V,YACxCl0V,EAAKm0V,UAAUH,GACfthE,EAAMt1B,MAAM5lO,UAAU95C,KAAK02W,YAAYJ,GAAWh0V,CACpD,MAAWA,aAAgBooV,KAAiBpoV,aAAgBgyV,KAAahyV,aAAgBszV,KAAuBtzV,aAAgB4xV,MAC9H5xV,EAAKq0V,cAAc3hE,EAAM96L,QAE3B,IACE2+F,EADEC,EAAY,IAA2B99K,EAAK7wC,SAASo/W,QAAQ14W,IAEjE,IACE,IAAKioN,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MACnCimL,EAAMp8N,MACZyP,OAASo2B,CAEf,CAAE,MAAOR,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACA,MAAO,CAAC2kC,EACV,CACA,OAAO0Y,EAAK7wC,SAASo/W,QAAQ14W,EAC/B,GAwBQ2sN,EAAa,IADNxiL,EAAK7wC,SAASmhB,IAAI+qW,GAAQnsU,QAGrC,IACE,IAAKszK,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,CAC7C2qL,EAAO9gO,MACbyP,OAASiqX,CACb,CACF,CAAE,MAAOr0V,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACF,KA3B2E,CAEzE,IAAIyM,EAAQ4wC,EAAK7wC,SAAS,IACtBC,aAAiBsgX,KAAiBtgX,aAAiBkqX,KAAalqX,aAAiBwrX,KAAuBxrX,aAAiB8pX,MAC3H9pX,EAAMusX,cAAc37U,EAAKk/E,QAE3B9vH,EAAMwmX,iBACNsF,IAAcl7U,EAChB,MAqBAA,EAAK7wC,SAASmhB,IAAI4qW,KAhEtB,IAAsBlhE,CAkEtB,CACA,SAASohE,IAAoBp7U,GAC3B,GAAIA,aAAgBkvT,KAAclvT,EAAK/3C,OAASulW,IAAesf,MAClC,IAAvB9sU,EAAK01U,cAAqB,CAC5B,IAAItmX,EAAQ4wC,EAAK7wC,SAAS,GACpBC,aAAiBwhX,MACrBxhX,EAAMwmX,iBACNwF,IAAoBp7U,GAExB,CAEJ,CC/FA,SAAS,IAA2Bt7B,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAI3K,IAAI+iK,IAAqB,SACrBK,IAAwB,EAI5B,SAASC,IAAWp0N,GACzB,IACEo2D,EADEC,EAAY,IAA2Br2D,GAE3C,IACE,IAAKq2D,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAEE2qL,EAFEviL,EAAO69K,EAAMp8N,MACb+gO,EAAa,IAA2BxiL,EAAK7wC,UAEjD,IACE,IAAKqzN,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,CAErD,GADY2qL,EAAO9gO,MACTyP,SAAW8uC,EAEnB,OAAO,CAEX,CACF,CAAE,MAAOlZ,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACA,IAAKk5X,IAAW77U,EAAK7wC,UACnB,OAAO,CAEX,CACF,CAAE,MAAO23B,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACA,OAAO,CACT,CAOA,SAASm5X,IAAaC,EAAWt0N,GAC/B,IAEE8+D,EAFE7L,GAAW,EACX8L,EAAa,IAA2B/+D,GAE5C,IACE,IAAK++D,EAAWppN,MAAOmpN,EAASC,EAAWt4M,KAAK0pB,MAAO,CACrD,IAAIoI,EAAOumL,EAAO9kO,MAClBi5N,EAAWqhK,EAAU1H,SAASr0U,IAAS06K,CACzC,CACF,CAAE,MAAO5zL,GACP0/L,EAAWhjO,EAAEsjC,EACf,CAAE,QACA0/L,EAAW7jO,GACb,CACA,OAAO+3N,CACT,CACA,SAASshK,IAA2BC,EAAev3F,EAAOw3F,GACxD,IAAIC,EAAQF,EAAcx6J,QACtB/G,GAAW,EAwBf,OAvBAA,EAAWohK,IAAa,IAAI,IAA2CK,IAAUzhK,EACjFA,EAAWohK,IAAa,IAAI,IAA4Cp3F,GAAQy3F,IAAUzhK,EAE1FyhK,EAAQA,EAAMtsX,QAAO,SAAU2O,GAC7B,OAAOA,EAAEk3W,cAAgB,CAC3B,IACAh7J,EAAWohK,IAAa,IAAI,IAAmCK,IAAUzhK,EACzEyhK,EAAQA,EAAMtsX,QAAO,SAAU2O,GAC7B,OAAOA,EAAEk3W,cAAgB,CAC3B,IACKwG,IAGHxhK,EAAWohK,IAAa,IAAI,IAA0BK,IAAUzhK,EAChEA,EAAWohK,IAAa,IAAI,IAAqBp3F,GAAQy3F,IAAUzhK,EACnEA,EAAWohK,IAAa,IAAI,IAAuCK,IAAUzhK,EAC7EA,EAAWohK,IAAa,IAAI,IAAyBK,IAAUzhK,EAC/DA,EAAWohK,IAAa,IAAI,IAA8BK,IAAUzhK,EACpEA,EAAWohK,IAAa,IAAI,IAA6BK,IAAUzhK,EACnEA,EAAWohK,IAAa,IAAI,IAAkCK,IAAUzhK,EACxEA,EAAWohK,IAAa,IAAI,IAA2BK,IAAUzhK,GAEnEuhK,EAAcx6J,QAAU06J,EACjBzhK,CACT,CCtFO,IAAI0hK,IAAgC,WACzC,SAASA,EAAiBC,IACxB,QAAgB/8X,KAAM88X,GACtBtlX,OAAOoxB,eAAe5oC,KAAM,SAAU,CACpC2oC,YAAY,EACZ3mC,IAAK+6X,GAET,CASA,OARA,QAAaD,EAAkB,KAAM,CAAC,CACpCj8V,IAAK,WACL1+B,MAAO,SAAkB66X,EAAQ72E,GAC/B,OAAO,IAAI22E,GAAiB,WAC1B,OAAOE,EAAO72E,EAChB,GACF,KAEK22E,CACT,CAjB2C,GCHvC,IAAY,CAAC,QACjB,SAAS,IAAQn4V,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CACzf,SAAS,IAA2B0c,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAmB3K,SAAS,IAAiBksE,GAC3BurE,IAAYvrE,GAMlB,SAA8BA,GAC5B,IAEE7mE,EAFE0+J,EAAuB73F,EAAM5lO,UAAU0qL,OACvC1rB,EAAY,IAA2B,GAAUy+J,IAErD,IACE,IAAKz+J,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIm7G,EAAU8qE,EAAMp8N,MAChB+6X,EAAUC,IAAsB/3F,EAAO3xI,GAI3C,GAHqBwpO,EAAqBxpO,GAC3Bi6M,gBAAgB,UAAWwvB,GAC1CE,IAAqBh4F,EAAO3xI,GACxB2xI,EAAM5lO,UAAU95C,KAAK23W,UAAW,CAGlC,IADA,IAAIC,EAAcl4F,GACV05E,IAAawe,IAAgBA,EAAY1rX,QAC/C0rX,EAAcA,EAAY1rX,OAG5B,GAAgB,WADF0rX,EAAY99T,UAAUn4B,QAAQvuB,MAAM26I,GACxB,CACxB,IACEwvE,EADEC,EAAa,IAA2Bg6J,EAAQ/6X,OAEpD,IACE,IAAK+gO,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,CACrD,IAAIiC,EAAS0oL,EAAO9gO,MAEhBmxU,IAAgB/4R,KAElBA,EAAO70B,KAAOu2W,IAAqB1hV,EAAO70B,KAAKE,QAAQq2W,IAAoB,IAE/E,CACF,CAAE,MAAOz0V,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACF,CACF,CACF,CACF,CAAE,MAAOmkC,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACF,CAhDIk6X,CAAqBn4F,GAiDzB,SAAiCA,GAC/B,IACEn+D,EADEC,EAAa,IAA2Bk+D,EAAMv1R,UAElD,IACE,IAAKq3N,EAAWppN,MAAOmpN,EAASC,EAAWt4M,KAAK0pB,MAAO,CAErD,IADY2uL,EAAO9kO,MAErB,CACF,CAAE,MAAOqlC,GACP0/L,EAAWhjO,EAAEsjC,EACf,CAAE,QACA0/L,EAAW7jO,GACb,CACA,IAEE8jO,EAFE81J,EAAuB73F,EAAM5lO,UAAU0qL,OACvC9iB,EAAa,IAA2B,GAAU61J,IAEtD,IACE,IAAK71J,EAAWtpN,MAAOqpN,EAASC,EAAWx4M,KAAK0pB,MAAO,CACrD,IAIE+uL,EAJE5zE,EAAU0zE,EAAOhlO,MACjB+6X,OAAU,EACVM,EAAkB,KAClBl2J,EAAa,IAA2B89D,EAAMv1R,UAElD,IACE,IAAKy3N,EAAWxpN,MAAOupN,EAASC,EAAW14M,KAAK0pB,MAAO,CACrD,IACImlV,EADSp2J,EAAOllO,MACQq9D,UAAU0qL,OAAOz2F,GAC7C,GAAIgqO,EAAgB,CAEhBP,OADczmW,IAAZymW,EACQO,EAAehwB,gBAAgB,WAE/BO,IAAwBkvB,EAASO,EAAehwB,gBAAgB,WAAY,UAAW,QAASiwB,KAE5G,IAAIC,EAAKF,EAAez7X,IAAI,mBACxBw7X,GAAmBG,GAAMH,EAAgB7/O,QAAUggP,EAAGhgP,OACxD,IAAS,KAEX6/O,EAAkBG,CACpB,CACF,CACF,CAAE,MAAOn2V,GACP8/L,EAAWpjO,EAAEsjC,EACf,CAAE,QACA8/L,EAAWjkO,GACb,CACA45X,EAAqBxpO,GAASi6M,gBAAgB,UAAWwvB,GACrDM,GACFP,EAAqBxpO,GAASvxJ,IAAI,kBAAmBs7X,GAAiB,EAE1E,CACF,CAAE,MAAOh2V,GACP4/L,EAAWljO,EAAEsjC,EACf,CAAE,QACA4/L,EAAW/jO,GACb,CACF,CAtGIu6X,CAAwBx4F,EAE5B,CA4HO,SAAS+3F,IAAsB/3F,EAAO3xI,GAC3C,IAAI8qK,EAAYn5B,EAAMosE,kBAAkB/9M,GAASzxJ,IAAI,QACjDgqV,EAAW5mD,EAAM4mD,SACjBzxS,EAtBN,SAAqCA,EAAQq8R,EAAUrY,EAAWs/D,GAChE,GAAe,iBAAXtjV,EAA2B,CAC7B,IAAIujV,EAAwBC,IAAyBnnD,EAAUrY,GAC7DrzN,EAAQ4yR,EAAsB5yR,MAC9B8yR,EAASF,EAAsBE,OACjC,IAAK9yR,EAEH,YADA,IAAS8yR,EAGb,MAAO,QAAevnW,IAAX8jB,GAAwBsjV,EAAYI,uBAEhBF,IAAyBnnD,EAAUrY,GAC9BrzN,MAEhC,MAAO,eAGX,OAAO3wD,CACT,CAIe2jV,CAA4B94F,EAAM8rF,YAAYz9N,GAAU2xI,EAAMw+E,cAAcnwN,GAAU8qK,EAAWn5B,EAAM54L,OAAO1zF,OAO3H,OANIyhC,IAAW6qP,EAAM8rF,YAAYz9N,KAC/B2xI,EAAM+4F,gBAAgB1qO,GAAW,IAAc,IAAc,CAAC,EAAG2xI,EAAM+4F,gBAAgB1qO,IAAW,CAAC,EAAG,CACpGl5G,OAAQA,KAII,MAAZk5G,GAAmBk3L,IAAmBqB,EAAS1pU,IAC7CqoU,IAAmBqB,EAAS/gV,GACvB+iW,IAAwBowB,IAAyB7/D,EAAWhkR,EAAQ6qP,EAAO,KAAMg5F,IAAyB7/D,EAAWhkR,EAAQ6qP,EAAO,MAAO,SAAU,QAASs4F,KAE9JU,IAAyB7/D,EAAWhkR,EAAQ6qP,EAAO,MAEvC,MAAZ3xI,GAAmBk3L,IAAmBqB,EAASzpU,IACpDooU,IAAmBqB,EAAS9gV,GACvB8iW,IAAwBowB,IAAyB7/D,EAAWhkR,EAAQ6qP,EAAO,KAAMg5F,IAAyB7/D,EAAWhkR,EAAQ6qP,EAAO,MAAO,SAAU,QAASs4F,KAE9JU,IAAyB7/D,EAAWhkR,EAAQ6qP,EAAO,MAGvDg5F,IAAyB7/D,EAAWhkR,EAAQ6qP,EAAO3xI,EAC5D,CAYA,SAAS4qO,IAA4B9jV,EAAQ5xC,EAAMsyU,GACjD,IAAI4K,EAEA3J,EAA4E,QAAtD2J,EAAqB9J,IAAkBd,UAA8C,IAAvB4K,OAAgC,EAASA,EAAmBj3M,KACpJ,MAAa,aAATjmI,GAAuBuzU,EAf7B,SAA+B3hS,EAAQ5xC,EAAMsyU,GAC3C,OAAO1gS,EAAOvpB,KAAI,SAAU/e,GAC1B,IAAIyT,EAAO63T,IAAUtrU,EAAG,CACtBgpU,SAAUA,EACVtyU,KAAMA,IAER,MAAO,CACL6gT,OAAQ,UAAUj2S,OAAOmS,EAAM,KAEnC,GACF,CAMW44W,CAAsB/jV,EAAQ5xC,EAAMuzU,GAEtC,CAAC3hS,EACV,CAEA,SAAS6jV,IAAyB7/D,EAAWhkR,EAAQ6qP,EAAO3xI,GAC1D,IACIswL,EAAkB4G,IADPvlD,EAAM4mD,SAC6Bv4L,IAC9C9qJ,EAAOo7U,EAAgBp7U,KACvBsyU,EAAW8I,EAA0B,SACzC,G/GrEK,SAA2BxpS,GAChC,OAAOA,aAAuC,EAASA,EAAkB,SAC3E,C+GmEMgkV,CAAkBhkV,GAAS,CAC7B,IAAIikV,EAAgBJ,IAAyB7/D,OAAW9nS,EAAW2uQ,EAAO3xI,GACtEgrO,EAAYJ,IAA4B9jV,EAAOkkV,UAAW91X,EAAMsyU,GACpE,OAAO0yB,IAAa,GAAGp6V,QAAO,QAAmBkrX,IAAY,QAAmBD,EAAcr8X,QAChG,CAAO,GAAIixU,IAAY74R,GACrB,OAAOozT,IAAa,CAACpzT,IAChB,GAAIA,GAAqB,iBAAXA,IAA8BymS,IAAkBzmS,GACnE,OAAOozT,IAAa0wB,IAA4B9jV,EAAQ5xC,EAAMsyU,IAEhE,IAAIlwE,EAAQq6B,EAAMr6B,MAClB,GAAIA,GAASt3G,IAAYs3G,EAAMw4F,aAAc,CAC3C,GAAqB,cAAjBx4F,EAAM5nL,OACR,OAAOyqR,IAAa,CAAC,CAAC,EAAG,KAE3B,IAAIloV,EAAO0/Q,EAAMmoF,gBAAgBrf,IAAesf,MAChD,OAAO5f,IAAa,CAAC,CACnBloV,KAAMA,EACNm6G,MAAOulK,EAAMmsE,QAAQ99M,EAAS,CAC5B8B,OAAQ,WAET,CACD7vI,KAAMA,EACNm6G,MAAOulK,EAAMmsE,QAAQ99M,EAAS,CAC5B8B,OAAQ,UAGd,CACA,IAAIhjJ,EAAOo+T,IAAel9K,IAAY+vL,IAAWO,GAiH5C,SAAoB3+C,EAAO3xI,EAAS8qK,GACzC,IAAKqiB,IAAkBriB,GACrB,OAGF,IAAIqY,EAAWxxC,EAAMwxC,SAASnjL,GAC1BlhJ,EAAOqkU,EAASrkU,KAEpB,GAAIg1U,IAAYh1U,GACd,MAAO,CACL06C,GAAI,MACJ4yE,MAAOglP,IAAoBjuC,EAAUnjL,GACrCn2G,MAAO,aAGX,IAAIytN,EAAQq6B,EAAMr6B,MACd2zH,EAAkB3zH,EAAQ,IAAIpkO,IAAI,GAAGpzB,QAAO,QAAmBw3P,EAAM84F,gBAAgB,QAAmB94F,EAAMo5F,QAAQnzU,KAAI,SAAUlT,GACtI,OAAOA,EAAE84T,SAAS/2M,KACpB,YAAQppG,EAER,GAAI6wT,IAAY/0U,GAEd,OAAOosX,IAAmBpsX,EADHw4P,IAAU2zH,EAAgB58V,IAAIvvB,EAAKstH,QAErD,GAAIwnN,IAAiB90U,GAAO,CACjC,IAAIy5U,EAAWz5U,EAAKy5U,SAClB1uS,EAAQ/qC,EAAK+qC,MACXshV,EAAmBx5F,EAAMwxC,SAASoV,GAClCxvB,EAAYoiE,EAAiBpiE,UAC/B38L,EAAQ++P,EAAiB/+P,MACvBg/P,EAAoB9zH,IAAU2zH,EAAgB58V,IAAI+9F,GACtD,GAAIwxM,IAAY7U,IAAc8U,IAAY9U,GACxC,OAAOmiE,IAAmB,CACxB9+P,MAAO,IAAQ++P,GACfthV,MAAOA,GACNuhV,GACE,GAAIttD,IAAc/U,KAAeA,EACtC,OAAOmiE,IAAmB,CACxB1xU,GAAIuvQ,EACJ38L,MAAOA,EACPviF,MAAOA,GACNuhV,EAEP,KAAO,IAAa,eAATtsX,EACT,MAAO,CACL06C,GAAI,MACJ4yE,MAAOulK,EAAMmsE,QAAQ99M,GACrBn2G,MAAO,cAEJ,GAAI,GAAc,CAAC,iBAAa7mB,GAAoClkB,GACzE,OAAO,CACT,CAEA,MACF,CAtKsEusX,CAAW15F,EAAO3xI,EAAS8qK,QAAa9nS,EAC5G,GAAIotT,IAAWE,GAEb,OAAO6pB,IADCywB,IAA4B,CAACt6C,EAAgB5rH,OAAQxvN,EAAMsyU,IAGrE,IAAIrE,EAAWmN,EACf,GAAe,iBAAXxpS,EAA2B,CAC7B,IAAIqzL,EAAQw3D,EAAMmoF,gBAAgBrf,IAAesf,MAC7C3tP,EAAQkkN,EAAgBlkN,MAC5B,OAAO+tO,IAAa,CAAC,CACnBloV,KAAMkoN,EACN/tG,MAAO,IAAQ,CACbA,MAAOA,EACP28L,UAAW,SAEZ,CACD92S,KAAMkoN,EACN/tG,MAAO,IAAQ,CACbA,MAAOA,EACP28L,UAAW,UAGjB,CAAO,GAAIuV,IAAU6E,EAASzqH,KAAM,CAClC,GAAIy0H,IAAkBriB,GACpB,OAESqvC,IAFS,gBAAdrvC,EAEkB,GAIF,CAAC,CAGnB74S,KAAM,GAAenT,GAAQ6yR,EAAMmoF,gBAAgBrf,IAAesf,MAAQpoF,EAAMmoF,gBAAgBrf,IAAe6wB,KAE/Gl/P,MAAOulK,EAAMmsE,QAAQ99M,EAASmxL,IAAiBhO,EAAUnjL,GAAW,CAClEkxL,UAAW,SACT,CAAC,GAELpyU,MAAe,IAATA,GAAkB47C,GAAS57C,GAG7BA,EAHqC,CACvCstH,MAAOulK,EAAMmsE,QAAQ99M,EAAS,CAAC,GAC/BxmG,GAAI,UAKR,IAAIk/J,EAAMyqH,EAASzqH,IACnB,GAAI4lH,IAAU5lH,GAAM,CAClB,IAAI6yK,EAAY1Q,IAAiBlpF,EAAOwxC,EAAS/2M,MAAOssF,GACxD,OAAOyhJ,IAAa,CAAC,IAAIkvB,KAAiB,WACxC,IAAItzE,EAASpkB,EAAM65F,cAAcD,GACjC,MAAO,IAAIzrX,OAAOi2S,EAAQ,YAAYj2S,OAAOi2S,EAAQ,SACvD,KACF,CACE,OAAOokD,IAAa,CAAC,CACnBloV,KAAM0/Q,EAAMmoF,gBAAgBrf,IAAesf,MAC3C3tP,MAAOulK,EAAMmsE,QAAQ99M,EAAS,CAAC,KAIvC,CAAO,GAAImjL,EAASqE,UAAY,GAAc,CAAC,OAAQ,OAAQ1c,IAAc6pB,IAAWxR,EAAU+5B,IAAYvrE,GAASA,EAAM4mD,SAAS1c,IAAyB77K,SAAYh9H,EAAW2uQ,EAAMk+C,QAASl+C,EAAM54L,QAAS,CAClN,IAAI0yR,EAAS95F,EAAMmoF,gBAAgBrf,IAAesf,MAClD,OAAO5f,IAAa,CAAC,CACnBloV,KAAMw5W,EACNr/P,MAAOulK,EAAMmsE,QAAQ99M,IACpB,CACD/tI,KAAMw5W,EACNr/P,MAAOulK,EAAMmsE,QAAQ99M,EAAS,CAC5B8B,OAAQ,UAGd,CAAO,OACEq4M,IADEr7V,EACW,CAAC,CAGnBmT,KAAM,GAAenT,GAAQ6yR,EAAMmoF,gBAAgBrf,IAAesf,MAAQpoF,EAAMmoF,gBAAgBrf,IAAe6wB,KAC/Gl/P,MAAOulK,EAAMmsE,QAAQ99M,GACrBlhJ,KAAMA,IAGY,CAAC,CACnBmT,KAAM0/Q,EAAMmoF,gBAAgBrf,IAAesf,MAC3C3tP,MAAOulK,EAAMmsE,QAAQ99M,KAG3B,CACA,SAASkrO,IAAmBpsX,EAAM4sX,GAChC,IAAIlyU,EAAK16C,EAAK06C,GACZ4yE,EAAQttH,EAAKstH,MACbviF,EAAQ/qC,EAAK+qC,MACf,OAAO,IAAc,IAAc,CAEjC2P,GAAIA,QAA+BA,EAAKkyU,EAAmB,MAAQj4C,KAClErnN,EAAQ,CACTA,MAAO,GAAwBA,IAC7B,CAAC,GAAIviF,EAAQ,CACfA,MAAOA,GACL,CAAC,EACP,CACA,SAAS8/U,IAAqBh4F,EAAO3xI,GACnC,IAAIq3N,EACAhyW,EAAQssR,EAAM5lO,UAAU0qL,OAAOz2F,GAC/B4/D,EAAO+xE,EAAM+4F,gBAAgB1qO,GAASl5G,OACtC4xK,EAAsD,QAA/C2+J,EAAkB1lF,EAAMwxC,SAASnjL,UAA0C,IAApBq3N,OAA6B,EAASA,EAAgB3+J,IACpH5xK,EAASymS,IAAkB3tH,IAASA,EACpChH,EAAS2lH,IAAY7lH,IAAQ2lH,IAAkB3lH,EAAIE,SAAWF,EAAIE,QAClE9xK,GAAU8xK,IAIZvzM,EAAM5W,IAAI,kBAAmBq4C,QAAuCA,EAAS8xK,GAAQ,EAEzF,CA8DO,SAAS0xK,IAAyBnnD,EAAUrY,GACjD,IAAI/B,EAAYoa,EAASpa,UACvB7zT,EAAOiuU,EAASjuU,KAClB,OAAK6zT,EAMD,GAASA,KAAemV,IAAkB7vS,IAAI06R,GACzC,CACLtxN,OAAO,EACP8yR,OAAQ,IAAmDxhE,IAGlD,iBAAT7zT,GACgB,QAAd41T,EACK,CACLrzN,OAAO,EACP8yR,OAAQ,IAA2CpnD,IAIlD,CACL1rO,OAAO,GApBA,CACLA,OAAO,EACP8yR,OAAQ,IAAoDpnD,GAoBlE,CAIA,SAAS8mD,IAAkBrpW,EAAIC,EAAI0mL,EAAU8yJ,GAK3C,OAJIz5U,EAAGmhT,UAAYlhT,EAAGkhT,UACpB,IrHjQG,SAAwCx6H,EAAU8yJ,EAAYz5U,EAAIC,GACvE,MAAO,eAAe/gB,OAAOu6V,EAAWlrV,WAAY,eAAgBrP,OAAOynM,EAASp4L,WAAY,OAAQrP,OAAO,GAAU8gB,GAAK,SAAS9gB,OAAO,GAAU+gB,GAAK,yCAC/J,CqH+Pa,CAA2C0mL,EAAU8yJ,EAAYz5U,EAAGlyB,MAAOmyB,EAAGnyB,QAGlF,CACLqzU,SAAUnhT,EAAGmhT,SACbrzU,MAAO,GAAGoR,QAAO,QAAmB8gB,EAAGlyB,QAAQ,QAAmBmyB,EAAGnyB,QAEzE,CAIO,SAASi9X,IAAalC,GAC3B,IAAImC,EAAgB,GAAYnC,EAAQlsW,KAAI,SAAUupB,GAEpD,GAAI+4R,IAAgB/4R,GAAS,CAClBA,EAAOhoC,KAEhB,OADsB,OAAyBgoC,EAAQ,IAEzD,CACA,OAAOA,CACT,IAAI,IACA+kV,EAAQ,GAAYpC,EAAQlsW,KAAI,SAAUjL,GAC5C,GAAIutT,IAAgBvtT,GAAI,CACtB,IAAIjI,EAAIiI,EAAExT,KAWV,YAVUkkB,IAAN3Y,GAAoB,GAAeA,KACjC,OAAQA,GAAc,UAATA,EAAEmvC,WAEVnvC,EAAE+hH,MAEK,cAAZ/hH,EAAEw/B,cAEGx/B,EAAEw/B,OAGNx/B,CACT,CAEF,IAAGvN,QAAO,SAAUuN,GAClB,YAAa2Y,IAAN3Y,CACT,IAAI,IACJ,GAA6B,IAAzBuhX,EAAcx+X,OAAlB,CAEO,GAA6B,IAAzBw+X,EAAcx+X,OAAc,CACrC,IAAI05C,EAAS2iV,EAAQ,GACrB,GAAI5pD,IAAgB/4R,IAAW+kV,EAAMz+X,OAAS,EAAG,CAC/C,IAAI0+X,EAAQD,EAAM,GAClB,GAAIA,EAAMz+X,OAAS,EAAG,CACpB,IAAS,KAET,IAAI2+X,EAAgBF,EAAM/uX,QAAO,SAAUuN,GACzC,OAAOqwC,GAASrwC,IAAM,OAAQA,GAAc,QAATA,EAAEmvC,EACvC,IAIEsyU,GAHED,EAAM92P,OAAM,SAAU1qH,GACxB,OAAOqwC,GAASrwC,IAAM,OAAQA,CAChC,KAA+B,IAAzB0hX,EAAc3+X,QACV2+X,EAAc,EAI1B,MAEE,GAAIrxU,GAASoxU,IAAU,UAAWA,EAAO,CACvC,IAAIhO,EAAYgO,EAAM1/P,MAClBtlF,EAAOslF,QAAU0xP,IACnBgO,GAAQA,EAAMjiV,OAAQ,CACpBA,MAAOiiV,EAAMjiV,OAGnB,CAEF,OAAO,IAAc,IAAc,CAAC,EAAG/C,GAAS,CAAC,EAAG,CAClDhoC,KAAMgtX,GAEV,CACA,OAAOhlV,CACT,CAEA,IAOIhoC,EAPAktX,EAAmB,GAAYH,EAAMtuW,KAAI,SAAUlT,GACrD,OAAI,GAAeA,MAAQ,OAAQA,IAAM,GAASA,EAAEmvC,KAAOnvC,EAAEmvC,MAAM,IAC1DnvC,GAET,IrH5UG,SAA2BvL,GAChC,MAAO,0BAA0BgB,OAAO,GAAUhB,GAAO,4EAC3D,CqH0Ua,CAA8BuL,KAChC,EACT,IAAI,IAE4B,IAA5B2hX,EAAiB5+X,OACnB0R,EAAOktX,EAAiB,GACfA,EAAiB5+X,OAAS,IACnC,IAAS,KACT0R,GAAO,GAET,IAAImtX,EAAU,GAAYxC,EAAQlsW,KAAI,SAAUjL,GAC9C,OAAIutT,IAAgBvtT,GACXA,EAAEL,KAEJ,IACT,KAAI,SAAUza,GACZ,OAAOA,CACT,IACA,OAAuB,IAAnBy0X,EAAQ7+X,QAA+B,OAAf6+X,EAAQ,GAEpB,IAAc,CAC1Bh6W,KAAMg6W,EAAQ,GACd9/P,OAAQy/P,EAAcruW,KAAI,SAAUjL,GAClC,OAAOA,EAAE85G,KACX,KACCttH,EAAO,CACRA,KAAMA,GACJ,CAAC,GAGA,IAAc,CACnBqtH,OAAQy/P,GACP9sX,EAAO,CACRA,KAAMA,GACJ,CAAC,EAxCL,CAyCF,CAKO,SAASu/W,IAAmBv3U,GACjC,GAAI+4R,IAAgB/4R,IAAW,GAASA,EAAOslF,OAC7C,OAAOtlF,EAAOslF,MACT,GvH7iBF,SAAgCtlF,GACrC,OAAK,GAAQA,IACJ,WAAYA,KAAY,SAAUA,EAG7C,CuHwiBaolV,CAAuBplV,GAAS,CACzC,IAAIslF,EAEFwpM,EADEC,EAAa,IAA2B/uR,EAAOqlF,QAEnD,IACE,IAAK0pM,EAAWxrT,MAAOurT,EAASC,EAAW16S,KAAK0pB,MAAO,CACrD,IAAIsnV,EAAiBv2D,EAAOlnU,MAC5B,GAAImxU,IAAgBssD,IAAmB,GAASA,EAAe//P,OAC7D,GAAKA,GAEE,GAAIA,IAAU+/P,EAAe//P,MAElC,OADA,IrH9XuC,6KqH+XhCA,OAHPA,EAAQ+/P,EAAe//P,KAM7B,CACF,CAAE,MAAOr4F,GACP8hS,EAAWplU,EAAEsjC,EACf,CAAE,QACA8hS,EAAWjmU,GACb,CAEA,OADA,IrHvY2D,sQqHwYpDw8H,CACT,CAAO,GvH9jBF,SAA+BtlF,GACpC,OAAK,GAAQA,IACJ,WAAYA,GAAU,SAAUA,CAG3C,CuHyjBaslV,CAAsBtlV,GAAS,CACxC,IrHzYyC,2KqH0YzC,IAAI0sR,EAAS1sR,EAAOqlF,OAAO,GAC3B,OAAO,GAASqnM,GAAUA,OAASxwS,CACrC,CAEF,CACO,SAASs7V,IAAe3sF,EAAO3xI,GACpC,IACIypO,EADiB93F,EAAM5lO,UAAU0qL,OAAOz2F,GACfzxJ,IAAI,WAAWgvB,KAAI,SAAUupB,GAOxD,OAHI+4R,IAAgB/4R,KAClBA,EAAO70B,KAAO0/Q,EAAM4nF,iBAAiBzyU,EAAO70B,OAEvC60B,CACT,IAEA,OAAO6kV,IAAalC,EACtB,CC9lBA,IAAI,IAAY,CAAC,OAAQ,OAAQ,kBAAmB,UAAW,QAAS,WACxE,SAAS,IAAQv4V,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAQlf,SAASo3X,IAAe16F,GAC7B,OAAI6sE,IAAa7sE,IAAUkiF,IAAcliF,GAEhCA,EAAMv1R,SAAS8hB,QAAO,SAAUu4N,EAAQp6O,GAC7C,OAAOo6O,EAAO32O,OAAOusX,IAAehwX,GACtC,GAAGiwX,IAAuB36F,IAInB26F,IAAuB36F,EAElC,CACO,SAAS26F,IAAuB36F,GACrC,OAAO,GAAKA,EAAM5lO,UAAU0qL,QAAQv4N,QAAO,SAAUu4N,EAAQz2F,GAC3D,IAAI0oN,EAAiB/2E,EAAM5lO,UAAU0qL,OAAOz2F,GAC5C,GAAI0oN,EAAe73P,OAEjB,OAAO4lI,EAET,IAAIpxO,EAAQqjW,EAAe3O,UACvBvrW,EAAO6W,EAAM7W,KACf0G,EAAOmQ,EAAMnQ,KACb60X,EAAkB1kX,EAAM0kX,gBAGxB5sW,GAFK9X,EAAMokX,QACNpkX,EAAM6uC,MACD7uC,EAAM8X,SAChBovW,GAAkB,OAAyBlnX,EAAO,KAChD6uC,EAkBD,SAA4BkyT,EAAYz4D,EAAW3tJ,EAAS2xI,GAEjE,GAAI4qC,IAAOv8K,IACT,GAAI4/K,IAAcwmC,GAEhB,MAAO,CACLpyT,KAAM,CACJ+hQ,OAAQ,GAAGj2S,OAAO6tS,EAAW,gBAI9B,GAAIjzP,GAAS0rT,IAAevmC,IAAgBumC,GACjD,OAAO,IAAc,IAAc,CAAC,EAAGA,GAAa,CAAC,EAAG,CACtDn0V,KAAM0/Q,EAAM4nF,iBAAiBnT,EAAWn0V,QAG5C,OAAOm0V,CACT,CAnCgBomB,CAAmBnnX,EAAM6uC,MAAO1lD,EAAMwxJ,EAAS2xI,GACvD7qP,EAASw3U,IAAe3sF,EAAO3xI,GAC/BsoH,EAAYyhH,EvEuNb,SAAsCp4F,EAAO/4E,EAAQmyJ,EAAWjkU,GACrE,IAAI2lV,EAAevgB,IAAqBv6E,EAAO/4E,EAAO1uE,MAAO0uE,GAC7D,MAAO,CACLm9F,OAAQq3B,IAAoB29B,EAAUx8W,IAAI,UAAY,GAAQu4C,IAAWA,EAAO,GAAKA,EAAO,GAAK,WAAWhnC,OAAO2sX,EAAc,iBAAiB3sX,OAAO2sX,EAAc,KAAOA,EAElL,CuE5NsCC,CAA6B/6F,EAAOo4F,EAAiBrhB,EAAgB5hU,GAAU,KAajH,OAZA2vM,EAAO3pP,KAAK,IAAc,IAAc,IAAc,IAAc,CAClE0B,KAAMA,EACN0G,KAAMA,GACL4xC,EAAS,CACVA,OAAQA,GACN,CAAC,GAAIwhO,EAAY,CACnBA,UAAWA,GACT,CAAC,GAAI,CAAC,EAAG,CACXp0N,MAAOA,QACMlxB,IAAZ7F,EAAwB,CACzBA,QAASA,GACP,CAAC,GAAIovW,IACF91I,CACT,GAAG,GACL,CCnDA,SAAS,IAAaxG,GAAW,IAAIC,EACrC,WAAuC,GAAuB,oBAAZ1kH,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFxqD,QAAQ10E,UAAU03C,QAAQh2C,KAAKq9H,QAAQC,UAAUtqD,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO1wE,KAAK,OAAO,CAAO,CAAE,CADvQ,GAA6B,OAAO,WAAkC,IAAsC0O,EAAlCgxO,GAAQ,QAAgBF,GAAkB,GAAIC,EAA2B,CAAE,IAAIE,GAAY,QAAgB7jP,MAAM8E,YAAa8N,EAASqsH,QAAQC,UAAU0kH,EAAOhjP,UAAWijP,EAAY,MAASjxO,EAASgxO,EAAMviP,MAAMrB,KAAMY,WAAc,OAAO,QAA2BZ,KAAM4S,EAAS,CAAG,CAKja,IAAIwtX,IAA8B,SAAUhyB,IACjD,QAAUgyB,EAAgBhyB,GAC1B,IAAI1sW,EAAS,IAAa0+X,GAC1B,SAASA,EAAen+X,EAAMo+X,GAC5B,IAAI5/X,EAWJ,OAVA,QAAgBT,KAAMogY,IACtB3/X,EAAQiB,EAAOE,KAAK5B,KAAM,CAAC,EAE3B,CACEiC,KAAMA,KAIFqiH,QAAS,EACf7jH,EAAMitW,gBAAgB,OAAQ2yB,GACvB5/X,CACT,CAeA,OAXA,QAAa2/X,EAAgB,CAAC,CAC5Bv/V,IAAK,+BACL1+B,MAAO,WACL,OAAyB,IAArBnC,KAAKgC,IAAI,SAGN04D,GAAK16D,KAAKgC,IAAI,YAAY,SAAU+jB,GACzC,OAAO,GAAQA,IAAmB,IAAbA,EAAEllB,QAAgBklB,EAAE,IAAM,GAAKA,EAAE,IAAM,CAC9D,GACF,KAEKq6W,CACT,CAhCyC,CAgCvC7yB,KCzCF,SAAS,IAAQ5oU,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CAEpV,SAAS,IAA2Bxb,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAmB3K,IAAIonK,IAAmB,CAAC,QAAS,UAsBxC,SAASC,IAAiBn7F,EAAO3xI,GAC/B,IAAImjL,EAAWxxC,EAAMwxC,SAASnjL,GAC9B,GAAImjL,SAA4CA,EAASzqH,IAAK,CAC5D,IAAIA,EAAMyqH,EAASzqH,IACjBtsF,EAAQ+2M,EAAS/2M,MACfuwM,EAAWb,IAAe97K,GAC1B6yN,EAAalhF,EAAM6uE,QAAQ7jC,GAC/B,GAAIjiR,GAASg+J,IAAQA,EAAI8lH,aAAuBx7S,IAAb01L,EAAI1kK,KACrC,OAAO,IAAIq1U,KAAiB,WAC1B,IAAI17E,EAAYhc,EAAMgc,UAAU3tJ,GAC5B+sO,EAAW,YAAajtX,OAAO6tS,EAAW,oBAAsB7tS,OAAO6tS,EAAW,aAAc7tS,OAAO44M,EAAI1kK,MAC/G,MAAO,GAAGl0C,OAAO6xR,EAAM65F,cAAc3Y,GAAa,QAAQ/yW,OAAOitX,EAAU,IAC7E,IACK,GAAIzuD,IAAU5lH,GAAM,CACzB,IAAI6yK,EAAY1Q,IAAiBlpF,EAAOvlK,EAAOssF,GAE/C,OAAO,IAAI2wK,KAAiB,WAC1B,IAAI2D,EAAcr7F,EAAM65F,cAAcD,GAClCwB,EAAW,IAAIjtX,OAAOktX,EAAa,YAAYltX,OAAOktX,EAAa,cAAcltX,OAAOktX,EAAa,SACzG,MAAO,GAAGltX,OAAO6xR,EAAM65F,cAAc3Y,GAAa,QAAQ/yW,OAAOitX,EAAU,IAC7E,GACF,CACF,CAEF,CAIO,SAASE,IAAqBjtO,EAAS2xI,GAC5C,IAOEniE,EAPE09J,EAAiBv7F,EAAM+4F,gBAAgB1qO,GACvCnvH,EAAO8gQ,EAAM9gQ,KAEbi6R,EADkBn5B,EAAMosE,kBAAkB/9M,GACdzxJ,IAAI,QAGhCkhO,EAAa,IAA2Bo9J,KAE5C,IACE,IAAKp9J,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,CACrD,IAAI0iK,EAAWioB,EAAO9gO,MACtB,QAAiCs0B,IAA7BkqW,EAAe3lL,GAAyB,CAC1C,IAAI4lL,EAAuBt/C,IAAyB/iB,EAAWvjH,GAC3D6lL,EAAyBt/C,IAAoC9tL,EAASunD,GAC1E,GAAK4lL,EAEE,GAAIC,EAET,IAASA,QAET,OAAQ7lL,GACN,IAAK,QAED,IAAIrzJ,EAAQg5U,EAAeh5U,MAC3B,GAAI,GAAQA,IACV,GAAIqoR,IAAOv8K,GACT,OAAOk6M,IAAahmT,EAAM32B,KAAI,SAAU/e,GACtC,GAAU,UAANA,GAAuB,WAANA,EAAgB,CAGnC,IAAIq0W,EAAalhF,EAAM6uE,QAAQhiW,GAC3BgtX,EAAgB75F,EAAM65F,cAAc77X,KAAKgiS,GAC7C,OAAO03F,IAAiBgE,SAAS7B,EAAe3Y,EAClD,CACA,OAAOr0W,CACT,UAEG,GAAIk8C,GAASxG,GAClB,OAAOgmT,IAAa,CAClBjoV,KAAM0/Q,EAAMmoF,gBAAgBrf,IAAesf,MAC3C3tP,MAAOl4E,EAAMk4E,MACbttH,KAAM,CACJ06C,GAAI,MACJ4yE,MAAOulK,EAAMmsE,QAAQ99M,MAI3B,OAAOk6M,IAAahmT,GAExB,IAAK,SACH,OAAOgmT,IAAaozB,IAAYJ,EAAe3lL,UAnCnD,IAAS,IAA8CujH,EAAWvjH,EAAUvnD,GAsChF,CACF,CACF,CAAE,MAAOjsH,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACA,IAAI6kV,EAAcz0L,IAAY,IAAiB,YAAZA,EAAwB,QAAU,SACjEmhM,EAAYtwT,EAAK4jT,GACrB,GAAIqU,IAAO3H,GACT,GAAI5kB,IAAOv8K,GACT,GAAImtL,IAAkBriB,GAAY,CAChC,IAAI92Q,EAAOu5U,IAAgBpsC,EAAWxvD,EAAO3xI,GAE7C,GAAIhsG,EACF,OAAOkmT,IAAa,CAClBlmT,KAAMA,GAGZ,MACE,IAAS,IAAwBygS,SAE9B,GAAI5X,IAAa78K,GAAU,CAChC,IAAIwtO,EAAkBxtO,IAAY04K,GAAU,IAAM,IAGlD,GAA0B,SAFF/mC,EAAMosE,kBAAkByvB,GACNj/X,IAAI,QACZ,CAChC,IAAIilO,EAASi6J,IAActsC,EAAWr2B,GACtC,GAAIt3F,EACF,OAAO0mI,IAAa1mI,EAExB,CACF,CAEF,IAAIk6G,EAAWw/C,EAAex/C,SAC5BD,EAAWy/C,EAAez/C,SACxBn7T,EAkBN,SAAsB0tI,EAAS2xI,GAC7B,IAAI9gQ,EAAO8gQ,EAAM9gQ,KACfkoE,EAAS44L,EAAM54L,OACf/1C,EAAO2uO,EAAM3uO,KACbu1R,EAAW5mD,EAAM4mD,SACfizC,EAAgB75F,EAAM65F,cAAc77X,KAAKgiS,GACzC+7F,EAAsBx2C,IAAmBqB,EAASv4L,IACpD9qJ,EAAOw4X,EAAoBx4X,KACzBy4X,EAAkBh8F,EAAMosE,kBAAkB/9M,GAC1C8qK,EAAY6iE,EAAgBp/X,IAAI,QAChCq/X,EAAwBj8F,EAAM+4F,gBAAgB1qO,GAChDl5G,EAAS8mV,EAAsB9mV,OAC/B8gO,EAAYgmH,EAAsBhmH,UACpC,OAAQ5nH,GACN,KAAK,GACL,KAAK,GAGD,GAAI,GAAc,CAAC,QAAS,QAAS8qK,GAAY,CAC/C,IAAI+iE,EAAeC,IAAwB9tO,EAASnvH,EAAMkoE,EAAO4lK,MACjE,GAAImqF,IAAO+kC,GAET,MAAO,CACL75U,KAFSu5U,IAAgBM,EAAcl8F,EAAO3xI,GAKpD,CAGA,IAAI28K,EAAWb,IAAe97K,GAC1B6yN,EAAalhF,EAAM6uE,QAAQ7jC,GAC/B,OAAI38K,IAAY,IAAKotL,IAAoBtiB,GAEhC,CAACu+D,IAAiBgE,SAAS7B,EAAe3Y,GAAa,GAEvD,CAAC,EAAGwW,IAAiBgE,SAAS7B,EAAe3Y,IAG1D,KAAKn6C,GACL,KAAKC,GACH,OAiGN,SAAwB34K,EAAS2xI,EAAOo8F,GACtC,IAAIP,EAAkBxtO,IAAY04K,GAAU,IAAM,IAC9Cs1D,EAAoBr8F,EAAMosE,kBAAkByvB,GAC5CS,EAAoBD,EAAkBz/X,IAAI,QAC1C2/X,EAAoBv8F,EAAMgc,UAAU6/E,GACxC,GAA0B,SAAtBS,EAA8B,CAChC,IAAIp9V,EAAOi9V,IAAwBN,EAAiB77F,EAAM9gQ,KAAM8gQ,EAAM54L,OAAO4lK,MAC7E,GAAImqF,IAAOj4T,GAAO,CAEhB,IAAImjB,EAAOy5U,IAAc58V,EAAMk9V,GAC/B,GAAI/5U,EACF,OAAOA,CAEX,CAEA,MAAO,CAAC,EAAG,CACT+hQ,OAAQ,cAAcj2S,OAAOouX,EAAmB,OAEpD,CAEE,IAAIzwC,EAAc9rD,EAAM4mD,SAASi1C,GACjC,GAAIz9C,IAAW0N,IAAgBA,EAAYjW,SAAU,CACnD,IAAIl1U,EAAWk2U,IAAaiV,EAAYjW,UAAU,SAAUvrG,GAC1D,MAAO,UAAUn8N,OAAOouX,EAAmB,OAAOpuX,OAAOm8N,EAAM,IACjE,IACIt1J,EAAUgrN,EAAM54L,OAAO1zF,MAAM2kV,iCACjC,GAAIrjR,EAAS,CACX,IAAI1gD,EAAa05S,IAAYh5P,GAAW,GAAG7mE,OAAO6mE,EAAQovO,OAAQ,MAAQ,GAAGj2S,OAAO6mE,EAAU,GAC1FwnT,EAAWxuD,IAAYh5P,GAAW,QAAQ7mE,OAAO6mE,EAAQovO,OAAQ,OAAS,GAAGj2S,OAAO,EAAI6mE,EAAU,GACtG,MAAO,CAAC,CACNovO,OAAQ,GAAGj2S,OAAOmmB,EAAY,QAAQnmB,OAAOxN,EAAU,MACtD,CACDyjT,OAAQ,GAAGj2S,OAAOquX,EAAU,QAAQruX,OAAOxN,EAAU,MAEzD,CACA,MAAO,CAAC,EAAG,CACTyjT,OAAQzjT,GAEZ,CACA,OAAO,GAAW,cAAcwN,OAAOkgJ,EAAS,cAAclgJ,OAAO0tX,EAAiB,2BAE1F,CA1IaY,CAAepuO,EAAS2xI,EAAOm5B,GACxC,KAAK,IAGD,IACI4iB,EAAW2gD,IAAarrU,EADjB2uO,EAAM5lO,UAAU0qL,OAAOz2F,GAASzxJ,IAAI,QACPwqG,GACpC00O,EAkNZ,SAAsBzqR,EAAMnyB,EAAM8gQ,EAAO54L,GACvC,IAAIu1R,EAAgB,CAClB92X,EAAGs1X,IAAiBn7F,EAAO,KAC3Bl6R,EAAGq1X,IAAiBn7F,EAAO,MAE7B,OAAQ3uO,GACN,IAAK,MACL,IAAK,OAED,QAAiChgC,IAA7B+1E,EAAO1zF,MAAMkpX,YACf,OAAOx1R,EAAO1zF,MAAMkpX,YAEtB,IAAI9nX,EAAM+nX,IAAU39V,EAAMy9V,EAAev1R,EAAO4lK,MAChD,OAAIzrN,GAASzsC,GACJA,EAAM,EAEN,IAAI4iX,KAAiB,WAC1B,MAAO,GAAGvpX,OAAO2G,EAAIsvS,OAAQ,OAC/B,IAGN,IAAK,OACL,IAAK,QACL,IAAK,OACH,OAAOh9M,EAAO1zF,MAAMmlV,eACtB,IAAK,OACH,OAAOzxP,EAAO1zF,MAAM8kV,YACtB,IAAK,QACL,IAAK,SACL,IAAK,SAED,GAAIpxP,EAAO1zF,MAAM8oR,QACf,OAAOp1L,EAAO1zF,MAAM8oR,QAEtB,IAAIsgG,EAAYD,IAAU39V,EAAMy9V,EAAev1R,EAAO4lK,MACtD,OAAIzrN,GAASu7U,GACJjoX,KAAK0B,IAAIwmX,IAA4BD,EAAW,GAEhD,IAAIpF,KAAiB,WAC1B,MAAO,OAAOvpX,OAAO4uX,IAA2B,OAAO5uX,OAAO2uX,EAAU14E,OAAQ,OAClF,IAMR,MAAM,IAAIvhR,MAAM,IAAgC,OAAQwuB,GAC1D,CAjQuB2rU,CAAa3rU,EAAMnyB,EAAM8gQ,EAAO54L,GAC/C,OAAIu0O,IAAuBxiB,GAmK5B,SAA0B4iB,EAAUD,EAAU8lC,GAEnD,IAAI3jX,EAAI,WACN,IAAIg/X,EAAOtuD,IAAoBmN,GAC3BohD,EAAOvuD,IAAoBoN,GAC3B15R,EAAO,IAAIl0C,OAAO8uX,EAAM,OAAO9uX,OAAO+uX,EAAM,SAAS/uX,OAAOyzW,EAAa,SAC7E,MAAO,YAAYzzW,OAAO+uX,EAAM,MAAM/uX,OAAO8uX,EAAM,OAAO9uX,OAAOk0C,EAAM,MAAMl0C,OAAOk0C,EAAM,IAC5F,EACA,OAAI2rR,IAAY8N,GACP,IAAI47C,IAAiBz5X,GAErB,CACLmmT,OAAQnmT,IAGd,CAjLiB,CAAiB89U,EAAUD,EA2IrC,SAA0C3iB,EAAW/xN,EAAQjyD,EAAQk5G,GAC1E,OAAQ8qK,GACN,IAAK,WACH,OAAO/xN,EAAO1zF,MAAMolV,cACtB,IAAK,WACH,OAAO1xP,EAAO1zF,MAAMqlV,cACtB,IAAK,YACH,YAAe1nU,IAAX8jB,GAAwB,GAAQA,GAC3BA,EAAO15C,OAAS,GAEvB,IxHhJD,SAAyC4yJ,GAC9C,MAAO,cAAclgJ,OAAOkgJ,EAAS,oCACvC,CwH8IiB,CAA4CA,IAE9C,GAGf,CA1JsD8uO,CAAiChkE,EAAW/xN,EAAQjyD,EAAQk5G,IAEjG,CAAC0tL,EAAUD,GAGxB,KAAK3U,GACH,MAAO,CAAC,EAAa,EAAVtyT,KAAK+B,IAClB,KAAKixT,IAGH,MAAO,CAAC,EAAG,KACb,KAAKZ,GAGD,MAAO,CAAC,EAAG,IAAIywD,KAAiB,WAC9B,IAAIpvW,EAAI03Q,EAAM65F,cAAc,SACxB55W,EAAI+/Q,EAAM65F,cAAc,UAC5B,MAAO,OAAO1rX,OAAOma,EAAG,KAAKna,OAAO8R,EAAG,MACzC,KAEJ,KAAKgoT,IAEH,MAAO,CAAC7gO,EAAO1zF,MAAMklV,eAAgBxxP,EAAO1zF,MAAMmlV,gBACpD,KAAK3wB,IACH,MAAO,CAEP,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAC5C,KAAKN,IACH,MAAO,SACT,KAAKH,IACL,KAAKC,IACL,KAAKC,IACH,MAAkB,YAAdxO,EAEc,YAAT51T,EAAqB,WAAa,eAEvB8tB,IAAd4kP,EACK,YAES,SAAT5kN,GAA4B,aAATA,EAAsB,UAAY,OAGlE,KAAKy2Q,IACL,KAAKC,IACL,KAAKC,IAEH,MAAO,CAAC5gO,EAAO1zF,MAAM+kV,WAAYrxP,EAAO1zF,MAAMglV,YAEpD,CAlHU0kC,CAAa/uO,EAAS2xI,GAC9B,YAAkB3uQ,IAAb0qT,QAAuC1qT,IAAbyqT,IAE/BI,IAAyB/iB,EAAW,aAAe,GAAQx4S,IAAmB,IAAbA,EAAEllB,OAC1D8sW,IAAa,CAACxsB,QAA2CA,EAAWp7T,EAAE,GAAIm7T,QAA2CA,EAAWn7T,EAAE,KAEpI6nV,IAAa7nV,EACtB,CACA,SAASg7W,IAAY/0I,GACnB,OlHxCK,SAA0BA,GAC/B,OAAQ,GAASA,MAAaA,EAAa,IAC7C,CkHsCMy2I,CAAiBz2I,GA3KvB,SAAuBtjP,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CA4K9e,CAAc,CACnBsjP,OAAQA,EAAO/pP,MACd,GAAU+pP,EAAQ,CAAC,UAEjB,CACLA,OAAQA,EAEZ,CAkGA,SAASg1I,IAAgBv5U,EAAM29O,EAAO3xI,GACpC,IAAIu4L,EAAW5mD,EAAM4mD,SACjBo1C,EAAkBh8F,EAAMosE,kBAAkB/9M,GAC1CivO,EAAgBjzD,IAAsBh8K,GACtCkvO,EAAY32C,EAAS02C,GAKzB,GAAgB,WAJFvmC,IAAW,CACvB10S,KAAMA,EACN40S,iBAAkBhY,IAAkBs+C,IAAc,IAAWA,EAAUh6X,SAE7CwnV,IAAuBnE,EAAU02C,GAAgB,CAC3E,IAAIE,EACAC,EAAkBz9F,EAAMosE,kBAAkBkxB,GAC1CnpB,EAAkBn0E,EAAMgc,UAAUshF,GAClCn+S,EAAY,WAAWhxE,OAAOgmW,EAAiB,aACnD,GAAoC,SAAhCspB,EAAgB7gY,IAAI,QAAoB,CAC1C,IAAI6vD,EAAMixU,EAAsB9kU,EAAO+kU,EACnCC,EAAmM,QAA7KnxU,EAAwE,QAAhEixU,EAAuBD,EAAgB7gY,IAAI,uBAAsD,IAAzB8gY,EAAkCA,EAAuBD,EAAgB7gY,IAAI,kBAAiC,IAAT6vD,EAAkBA,EAAO,EACpOoxU,EAAuM,QAAjLjlU,EAA0E,QAAjE+kU,EAAwBF,EAAgB7gY,IAAI,uBAAuD,IAA1B+gY,EAAmCA,EAAwBF,EAAgB7gY,IAAI,kBAAkC,IAAVg8D,EAAmBA,EAAQ,EAC9OumB,EAAY,aAAahxE,OAAOgxE,EAAW,MAAMhxE,OAAOyvX,EAAoB,MAAMzvX,OAAO0vX,EAAoB,IAC/G,CACA,IAAIv6I,EAAgF,QAAhEk6I,EAAuBxB,EAAgBp/X,IAAI,uBAAsD,IAAzB4gY,EAAkCA,EAAuBxB,EAAgBp/X,IAAI,WACzK,MAAO,CACLwnT,OAAQ,GAAGj2S,OAAOk0C,EAAKA,KAAM,OAAOl0C,OAAOgxE,EAAW,UAAUhxE,OAAOsgU,IAAyBnrF,GAAe,KAEnH,CACE,OAAOjhM,EAAKA,IAEhB,CACA,SAASy5U,IAAcz5U,EAAM+5U,GAK3B,GAAgB,WAJFrlC,IAAW,CACvB10S,KAAMA,EACN40S,iBAAkBzb,IAAkB4gD,KAGpC,MAAO,CACL/5U,KAAMA,EAAKA,KAIjB,CA2CA,SAAS85U,IAAwB9tO,EAASnvH,EAAMs4T,GAC9C,IAAI1U,EAAcz0L,IAAY,GAAI,QAAU,SACxCmhM,EAAYtwT,EAAK4jT,GACrB,OAAI0M,GAGGmI,IAA0BH,EAAY1U,EAC/C,CAwCA,SAAS45C,IAAarrU,EAAM9e,EAAM60D,GAChC,GAAI70D,EACF,OAAIy7R,IAAYz7R,GACP,CACL6xQ,OAAQ,GAAGj2S,OAAOokC,EAAK6xQ,OAAQ,WAAWj2S,OAAOuuX,IAAarrU,GAAM,EAAO+1C,KAGtE,EAGX,OAAQ/1C,GACN,IAAK,MACL,IAAK,OACH,OAAO+1C,EAAO1zF,MAAMoqU,YACtB,IAAK,OACL,IAAK,QACL,IAAK,OACH,OAAO12O,EAAO1zF,MAAMklV,eACtB,IAAK,OACH,OAAOxxP,EAAO1zF,MAAM6kV,YACtB,IAAK,QACL,IAAK,SACL,IAAK,SACH,OAAOnxP,EAAO1zF,MAAMilV,QAIxB,MAAM,IAAI91T,MAAM,IAAgC,OAAQwuB,GAC1D,CACO,IAAI0rU,IAA4B,IAoDvC,SAASF,IAAU39V,EAAMy9V,EAAenlC,GACtC,IAAIsmC,EAAY3mC,IAAOj4T,EAAKv2B,OAASu2B,EAAKv2B,MAAM05C,KAAOq1S,IAA0BF,EAAY,SACzFumC,EAAa5mC,IAAOj4T,EAAKt2B,QAAUs2B,EAAKt2B,OAAOy5C,KAAOq1S,IAA0BF,EAAY,UAChG,OAAImlC,EAAc92X,GAAK82X,EAAc72X,EAC5B,IAAI4xX,KAAiB,WAC1B,IAAI1+C,EAAQ,CAAC2jD,EAAc92X,EAAI82X,EAAc92X,EAAEu+S,OAAS05E,EAAWnB,EAAc72X,EAAI62X,EAAc72X,EAAEs+S,OAAS25E,GAC9G,MAAO,OAAO5vX,OAAO6qU,EAAM/0T,KAAK,MAAO,IACzC,IAEKpP,KAAKC,IAAIgpX,EAAWC,EAC7B,CClfA,SAAS,IAA2B/9W,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAiB3K,SAASkqK,IAAmBh+F,EAAOpqF,GACpC21J,IAAYvrE,GAMlB,SAAgCA,EAAOpqF,GACrC,IAMEujB,EANE0+J,EAAuB73F,EAAM5lO,UAAU0qL,OACvC19I,EAAS44L,EAAM54L,OACjBw/O,EAAW5mD,EAAM4mD,SACjB1I,EAAUl+C,EAAMk+C,QAChB66C,EAAkB/4F,EAAM+4F,gBACtB3/J,EAAY,IAA2B,GAAKy+J,IAEhD,IACE,IAAKz+J,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIm7G,EAAU8qE,EAAMp8N,MAChBw+X,EAAiBxC,EAAgB1qO,GACjC4vO,EAAiBpG,EAAqBxpO,GACtC2tO,EAAkBh8F,EAAMosE,kBAAkB/9M,GAC1CswL,EAAkB4G,IAAmBqB,EAASv4L,IAC9C6vO,EAAiB3C,EAAe3lL,GAChCujH,EAAY6iE,EAAgBp/X,IAAI,QAChCuhY,EAAenC,EAAgBp/X,IAAI,WACnCwhY,EAAoBpC,EAAgBp/X,IAAI,gBACxC4+X,EAAuBt/C,IAAyB/iB,EAAWvjH,GAC3D6lL,EAAyBt/C,IAAoC9tL,EAASunD,GAU1E,QATuBvkL,IAAnB6sW,IAEG1C,EAEMC,GAET,IAASA,GAHT,IAAS,IAA8CtiE,EAAWvjH,EAAUvnD,KAM5EmtO,QAAmDnqW,IAA3BoqW,EAC1B,QAAuBpqW,IAAnB6sW,EAA8B,CAChC,IAAIroD,EAAW8I,EAA0B,SACrCp7U,EAAOo7U,EAAgBp7U,KAC3B,OAAQqyM,GAEN,IAAK,YACL,IAAK,YACCg9H,IAAW2oD,EAAe3lL,KAAuB,aAATryM,GAAuBsyU,EACjEooD,EAAenhY,IAAI84M,EAAU,CAC3BwuG,OAAQ+zB,IAAUojD,EAAe3lL,GAAW,CAC1CryM,KAAMA,EACNsyU,SAAUA,MAEX,GAEHooD,EAAenhY,IAAI84M,EAAU2lL,EAAe3lL,IAAW,GAEzD,MACF,QACEqoL,EAAeI,kBAAkBzoL,EAAU2lL,GAEjD,KAAO,CACL,IAAIx+X,EAAQ64M,KAAY0oL,IAAaA,IAAW1oL,GAAU,CACxDoqF,MAAOA,EACP3xI,QAASA,EACTswL,gBAAiBA,EACjBxlB,UAAWA,EACXglE,aAAcA,EACdC,kBAAmBA,EACnBjpV,OAAQomV,EAAepmV,OACvB4hO,UAAWwkH,EAAexkH,UAC1BC,UAAWukH,EAAevkH,UAC1BknE,QAASA,EACT92O,OAAQA,EACRm3R,qBAAsBvzC,IAA4BpE,EAAUv4L,GAC5DmwO,2BAA4B53C,EAAS1c,IAAyB77K,MAC3DjnD,EAAO1zF,MAAMkiM,QACJvkL,IAAVt0B,GACFkhY,EAAenhY,IAAI84M,EAAU74M,GAAO,EAExC,CAEJ,CACF,CAAE,MAAOqlC,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACF,CApFIwgY,CAAuBz+F,EAAOpqF,GAE9B8oL,IAA0B1+F,EAAOpqF,EAErC,CAiFO,IAAI0oL,IAAa,CACtBt1J,KAAM,SAAcv8K,GAClB,IAAIuzO,EAAQvzO,EAAKuzO,MACf2+C,EAAkBlyR,EAAKkyR,gBACzB,OAAOP,IAAWO,GAiItB,SAAe3+C,EAAOwxC,GACpB,IAAIzqH,EAAMyqH,EAASzqH,IACnB,GAAI4lH,IAAU5lH,GAAM,CAClB,IAAI6yK,EAAY1Q,IAAiBlpF,EAAOwxC,EAAS/2M,MAAOssF,GACxD,OAAO,IAAI2wK,KAAiB,WAC1B,OAAO13F,EAAM65F,cAAcD,EAC7B,GACF,CAAO,GAAI9sD,IAAS/lH,IAAQ6lH,IAAY7lH,SAAqB11L,IAAb01L,EAAI1kK,KAElD,MAAO,CACLA,KAAM0kK,EAAI1kK,MAGd,MACF,CA/IyC4mL,CAAM+2D,EAAO2+C,QAAmBttT,CACvE,EACAopN,YAAa,SAAqB7hL,GAGhC,OA4IJ,SAAsBy1F,EAAS9qJ,GAC7B,GAAI,GAAS,CAACkkU,IAAOC,IAAMC,KAASt5K,IAAqB,YAAT9qJ,EAC9C,MAAO,MAET,MACF,CAjJWo7X,CAFO/lU,EAAMy1F,QACAz1F,EAAM+lR,gBACmBp7U,KAC/C,EACA47N,KAAM,SAAc1lK,GAOlB,OA0IJ,SAAe0/P,EAAW9qK,EAASuwO,EAAiB7nH,EAAWC,EAAW2nE,GACxE,IAAIkgD,EACJ,GAAsD,QAAjDA,EAAev5C,IAAY3G,UAA+C,IAAjBkgD,GAA2BA,EAAa93K,KAAO,GAAQ63K,IAAiC,MAAb5nH,GAAkC,MAAbD,GAAqB,GAAc,CAAC4iE,IAAUQ,KAAMR,IAAU50H,KAAMo0G,GAChO,OAEF,QAAOyR,IAAOv8K,SAAkBh9H,CAClC,CAhJWytW,CANSrlU,EAAM0/P,UACV1/P,EAAM40F,QACP50F,EAAMtkB,OACHskB,EAAMs9M,UACNt9M,EAAMu9M,UACAv9M,EAAMklR,gBAE5B,EACA3pQ,QAAS,SAAiBimB,GACxB,IAAIozD,EAAUpzD,EAAMozD,QAClB8qK,EAAYl+N,EAAMk+N,UAClBwlB,EAAkB1jP,EAAM0jP,gBACxBT,EAAUjjP,EAAMijP,QAChB92O,EAASnM,EAAMmM,OACjB,OA0IJ,SAAkBinD,EAAS8qK,EAAWs/D,EAAa95C,EAAiBT,EAAS6gD,GAC3E,GAAIn0D,IAAOv8K,GAAU,CACnB,GAAIqtL,IAAyBviB,GAAY,CACvC,QAAsC9nS,IAAlConW,EAAYuG,kBACd,OAAOvG,EAAYuG,kBAErB,IAAIz7X,EAAO26U,EAAQ36U,KACjBu2P,EAASokF,EAAQpkF,OACnB,GAAa,QAATv2P,KAAoB66U,IAAWO,KAAqBA,EAAgB53H,MAAO43H,EAAgB9I,YAC9E,aAAX/7E,GAAqC,MAAZzrG,GAA8B,eAAXyrG,GAAuC,MAAZzrG,GACzE,OAAO0wO,EAAUlhD,kBAGvB,CACA,GAAI1kB,IAAcwgB,IAAUa,MAC1B,OAAOi+C,EAAYvgC,YAEvB,CACA,MACF,CA7JW,CAAS7pM,EAAS8qK,EAAW/xN,EAAO1zF,MAAOirU,EAAiBT,EAAS92O,EAAOukO,IACrF,EACAroF,aAAc,SAAsBl0I,GAClC,IAAI+uR,EAAe/uR,EAAM+uR,aACvB9vO,EAAUj/C,EAAMi/C,QAChB6vL,EAAU9uO,EAAM8uO,QAChB/kB,EAAY/pN,EAAM+pN,UAClB/xN,EAASgI,EAAMhI,OACfm3R,EAAuBnvR,EAAMmvR,qBAC/B,OAsJJ,SAAuBU,EAAc5wO,EAASh9F,EAAM8nQ,EAAWs/D,GAC7D,IAAI8F,EAAuB/iY,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,IAAmBA,UAAU,GAC1F,QAAqB61B,IAAjB4tW,EAEF,OAEF,GAAIr0D,IAAOv8K,GAAU,CAInB,IAAIsmN,EAAmB8jB,EAAY9jB,iBACjCxc,EAAsBsgC,EAAYtgC,oBAClCC,EAAuBqgC,EAAYrgC,qBACnCC,EAAmCogC,EAAYpgC,iCACjD,OAAIkmC,EACKlmC,EAEFlyB,GAAgBwuC,EAA2B,QAATtjT,EAAiB8mS,EAAsBC,EAClF,CAAO,GAAIltB,IAAa78K,IAClB8qK,IAAcwgB,IAAUc,KAC1B,OAAOg+C,EAAYyG,uBAGvB,MACF,CA9KWC,CAAchB,EAAc9vO,EAAS6vL,EAAQ36U,KAAM41T,EAAW/xN,EAAO1zF,MAAO6qX,EACrF,EACAh7I,aAAc,SAAsB9vK,GAClC,IAAI0qT,EAAe1qT,EAAM0qT,aACvB9vO,EAAU56E,EAAM46E,QAChB8qK,EAAY1lP,EAAM0lP,UAClBilE,EAAoB3qT,EAAM2qT,kBAC1Bh3R,EAAS3zB,EAAM2zB,OACfm3R,EAAuB9qT,EAAM8qT,qBAC/B,OAuKJ,SAAuBU,EAAc5wO,EAAS8qK,EAAWimE,EAAmB3G,GAC1E,IAAI8F,EAAuB/iY,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,IAAmBA,UAAU,GAC1F,QAAqB61B,IAAjB4tW,EAEF,OAEF,GAAIr0D,IAAOv8K,GAAU,CACnB,IAAIgxO,EAAmB5G,EAAY4G,iBACjC/mC,EAAmCmgC,EAAYngC,iCACjD,GAAIimC,EACF,OAAOjmC,EAIT,GAAIn/B,IAAcwgB,IAAUc,KAC1B,OAAOtU,GAAgBk5D,EAKvBrxD,IAAYoxD,GAAqB,CAC/Bh7E,OAAQ,GAAGj2S,OAAOixX,EAAkBh7E,OAAQ,OAC1Cg7E,EAAoB,EAE5B,MAAO,GAAIl0D,IAAa78K,GAAU,CAChC,GAAI8qK,IAAcwgB,IAAUa,MAC1B,MAAO,GACF,GAAIrhB,IAAcwgB,IAAUc,KACjC,OAAOg+C,EAAY6G,sBAEvB,CACA,MACF,CAvMWC,CAAcpB,EAAc9vO,EAAS8qK,EAAWilE,EAAmBh3R,EAAO1zF,MAAO6qX,EAC1F,EACA/yW,QAAS,SAAiBkjH,GACxB,IAAIiwM,EAAkBjwM,EAAMiwM,gBAC1BxlB,EAAYzqL,EAAMyqL,UAClB9qK,EAAU3f,EAAM2f,QAChBjnD,EAASsnC,EAAMtnC,OAEjB,OAiMJ,SAAkB+xN,EAAWhsT,EAAMkhJ,EAASoqO,GAC1C,GAAgB,MAAZpqO,QAA4Ch9H,IAAzBonW,EAAY+G,SACjC,OAAI/jD,IAAoBtiB,IAAuB,eAAThsT,EAChC6gU,IAAYyqD,EAAY+G,UACnB,CACLp7E,OAAQ,IAAIj2S,OAAOsqX,EAAY+G,SAASp7E,UAGlCq0E,EAAY+G,SAGjB/G,EAAY+G,SAErB,GAAI/jD,IAAoBtiB,IAAuB,eAAThsT,EAGpC,OAAO,EAET,MACF,CApNWsyX,CAAStmE,EADLilB,IAAWO,GAAmBA,EAAgBxxU,UAAOkkB,EAC/Bg9H,EAASjnD,EAAO1zF,MACnD,EACA6+B,KAAM,SAAc+iG,GAClB,IAAI+Y,EAAU/Y,EAAM+Y,QAClBswL,EAAkBrpM,EAAMqpM,gBACxBxpS,EAASmgG,EAAMngG,OACf+oS,EAAU5oM,EAAM4oM,QAChB/kB,EAAY7jL,EAAM6jL,UAClB/xN,EAASkuC,EAAMluC,OACfo3R,EAA2BlpP,EAAMkpP,yBACnC,OA4MJ,SAAenwO,EAASmjL,EAAUotD,EAAiB1gD,EAAS/kB,EAAWs/D,EAAa+F,GAGlF,GADwBI,GAAuC,iBAApBA,GAErCnjD,IAAoBtiB,GAAY,CAClC,GAAI,GAAQylE,GAAkB,CAC5B,IAAIznW,EAAQynW,EAAgB,GACxB1kW,EAAO0kW,EAAgBA,EAAgBnjY,OAAS,GACpD,GAAI07B,GAAS,GAAK+C,GAAQ,EAExB,OAAO,CAEX,CACA,OAAO,CACT,CAOF,GAAgB,SAAZm0H,GAAwC,iBAAlBmjL,EAASjuU,OAA4Bo4U,IAAuBxiB,GACpF,OAAO,EAKT,KAAMilB,IAAW5M,KAAaA,EAASzqH,MAAQ,GAAc,GAAG54M,QAAO,QAAmBw8T,MAA0B,QAAmBG,MAAiCz8K,GAAU,CAChL,IAAIyrG,EAASokF,EAAQpkF,OACnBv2P,EAAO26U,EAAQ36U,KACjB,QAAI,GAAS,CAAC,MAAO,OAAQ,OAAQ,SAAUA,MAC9B,eAAXu2P,GAAuC,MAAZzrG,GAA8B,aAAXyrG,GAAqC,MAAZzrG,SAIzE,GAAS,CAAC,MAAO,QAAS9qJ,IAAUi7X,KAGjC/F,aAAiD,EAASA,EAAYlmV,MAC/E,CACA,OAAO,CACT,CArPWmtV,CAAMrxO,EAASswL,EAAiBxpS,EAAQ+oS,EAAS/kB,EAAW/xN,EAAO1zF,MAAO8qX,EACnF,GAGK,SAAS,IAAgBx+F,GAC1BurE,IAAYvrE,GDrJX,SAA6BA,GAClC,IAGE7mE,EAHE0+J,EAAuB73F,EAAM5lO,UAAU0qL,OAEvC1rB,EAAY,IAA2BkyG,KAE3C,IACE,IAAKlyG,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIm7G,EAAU8qE,EAAMp8N,MAChBkhY,EAAiBpG,EAAqBxpO,GAC1C,GAAK4vO,EAAL,CAGA,IAAI0B,EAAoBrE,IAAqBjtO,EAAS2xI,GACtDi+F,EAAe31B,gBAAgB,QAASq3B,EAFxC,CAGF,CACF,CAAE,MAAOv9V,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACF,CCkII2hY,CAAoB5/F,GAEpB0+F,IAA0B1+F,EAAO,QAErC,CACO,SAAS0+F,IAA0B1+F,EAAOpqF,GAC/C,IAEEioB,EAFEg6J,EAAuB73F,EAAM5lO,UAAU0qL,OACvChnB,EAAa,IAA2BkiE,EAAMv1R,UAElD,IACE,IAAKqzN,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,CACrD,IAAIxoC,EAAQmzN,EAAO9gO,MACF,UAAb64M,EACF,IAAgBlrM,GAEhBszX,IAAmBtzX,EAAOkrM,EAE9B,CACF,CAAE,MAAOxzK,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACA,IACE4jO,EADEC,EAAa,IAA2B,GAAK+1J,IAEjD,IACE,IAAK/1J,EAAWppN,MAAOmpN,EAASC,EAAWt4M,KAAK0pB,MAAO,CACrD,IAGE6uL,EAHE1zE,EAAUwzE,EAAO9kO,MACjB8iY,OAAoB,EACpB79J,EAAa,IAA2Bg+D,EAAMv1R,UAElD,IACE,IAAKu3N,EAAWtpN,MAAOqpN,EAASC,EAAWx4M,KAAK0pB,MAAO,CACrD,IACImlV,EADSt2J,EAAOhlO,MACQq9D,UAAU0qL,OAAOz2F,GAC7C,GAAIgqO,EAEFwH,EAAoBj3B,IAAwBi3B,EADfxH,EAAehwB,gBAAgBzyJ,GAC2BA,EAAU,QAAS6yJ,KAAoB,SAAUx5U,EAAIC,GAC1I,MACO,UADC0mL,GAGA3mL,EAAGozB,MAAQnzB,EAAGmzB,KACTpzB,EAAGozB,KAAOnzB,EAAGmzB,KAMnB,CACT,IAEJ,CACF,CAAE,MAAOjgB,GACP4/L,EAAWljO,EAAEsjC,EACf,CAAE,QACA4/L,EAAW/jO,GACb,CACA45X,EAAqBxpO,GAASi6M,gBAAgB1yJ,EAAUiqL,EAC1D,CACF,CAAE,MAAOz9V,GACP0/L,EAAWhjO,EAAEsjC,EACf,CAAE,QACA0/L,EAAW7jO,GACb,CACF,CCjOO,SAASk7T,IAAUoiE,EAAgBltO,EAASmjL,EAAUngR,GAC3D,IpHyPuCyuU,EAAeC,EoHxPlDC,EAyBN,SAAqB3xO,EAASmjL,EAAUngR,EAAMktU,GAC5C,OAAQ/sD,EAASjuU,MACf,IAAK,UACL,IAAK,UAED,IAAI08X,EACJ,GAAI52D,IAAeh7K,IAAmC,aAAvBy9K,IAAUz9K,GAIvC,MAHgB,UAAZA,GAAyC,YAAlBmjL,EAASjuU,MAClC,IAAS,IAAwC8qJ,EAAS,YAErD,UAET,GAAIu8K,IAAOv8K,IAAY68K,IAAa78K,GAAU,CAC5C,GAAI,GAAc,CAAC,OAAQ,MAAO,QAAS,QAASh9F,EAAK9tD,MAGvD,MAAO,OAET,GAAIg7X,EAEF,MAAO,MAEX,MAAO,GAAkB,QAAdltU,EAAK9tD,MAAkB8qJ,KAAWw8K,IAC3C,MAAO,OAGT,OAAI4S,IADgBpsR,EAAK84Q,IAAe97K,MAIpCkzL,IAA0B/P,IAAkD,QAApCyuD,EAAiBzuD,EAAS/iE,YAAqC,IAAnBwxH,GAA6BA,EAAe5iE,SAF3H,OAMF,QAEX,IAAK,WACH,OAAIgM,IAAeh7K,GACV,OACyB,aAAvBy9K,IAAUz9K,IACnB,IAAS,IAAwCA,EAAS,aAEnD,WACE+vL,IAAW5M,IAAaA,EAASqE,UAAYc,IAAkBnF,EAASqE,UAAUtmG,IACpF,MAEF,OACT,IAAK,eACH,OAAI85F,IAAeh7K,GACb+vL,IAAW5M,IAAa7E,IAAU6E,EAASzqH,KACtC,cAEF,SACyB,aAAvB+kH,IAAUz9K,IACnB,IAAS,IAAwCA,EAAS,iBAEnD,WAEF,SACT,IAAK,UACH,OAGJ,MAAM,IAAIxrH,MAAM,IAA6B2uS,EAASjuU,MACxD,CAxFyB,CAAY8qJ,EAASmjL,EAAUngR,EAD3B71D,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,IAAmBA,UAAU,IAEtF+H,EAAOg4X,EAAeh4X,KAC1B,OAAKgoU,IAAel9K,QAIPh9H,IAAT9tB,EpH4PC,SAAiC8qJ,EAAS8qK,GAC/C,IAAIolE,EAAuB/iY,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,IAAmBA,UAAU,GAC1F,IAAK,IAAuB6yJ,GAC1B,OAAO,EAET,OAAQA,GACN,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACH,QAAIqtL,IAAyBviB,IAEJ,SAAdA,GAEc,UAAdA,IAKDolE,EAGZ,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IAGH,OAAO7iD,IAAyBviB,IAAcwiB,IAAuBxiB,IAAc,GAAS,CAAC,OAAQ,QAAS,WAAYA,GAC5H,KAAK,IACL,KAAK,IACL,KAAK,IACH,MAAqB,SAAdA,EAET,KAAK,IACL,KAAK,IACH,MAAqB,YAAdA,GAA2BwiB,IAAuBxiB,GAE/D,CoHpSS+mE,CAAwB7xO,EAAS9qJ,GAKlC66U,IAAW5M,KpH2OsBsuD,EoH3OiBv8X,EpH2OFw8X,EoH3OQvuD,EAASjuU,OpH4OnE,GAAS,CAACg2U,IAASE,KAAUsmD,QACN1uW,IAAlByuW,GAA+BtkD,IAAkBskD,GAC/CC,IAAiBvmD,IACnB,GAAS,CAACG,IAAUQ,KAAMR,IAAU50H,SAAK1zL,GAAYyuW,GACnDC,IAAiBzmD,KACnB8B,IAAe0kD,IAAkBnkD,IAAuBmkD,SAAoCzuW,IAAlByuW,KoHhP/E,I1H2IC,SAAsC3mE,EAAW6mE,GACtD,MAAO,gCAAiC7xX,OAAOgrT,EAAW,2BAA6BhrT,OAAO6xX,EAAkB,mBAClH,C0H7Ie,CAAyCz8X,EAAMy8X,IACjDA,GAEFz8X,GARL,I1H6IC,SAAqC8qJ,EAAS8qK,EAAW6mE,GAC9D,MAAO,YAAa7xX,OAAOkgJ,EAAS,0BAA4BlgJ,OAAOgrT,EAAW,2BAA6BhrT,OAAO6xX,EAAkB,mBAC1I,C0H/Ie,CAAwC3xO,EAAS9qJ,EAAMy8X,IACzDA,GASJA,EAfE,IAgBX,CCpCA,SAAS,IAA2BhgX,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAsC3K,SAASqsK,IAAengG,GACzBurE,IAAYvrE,GACdA,EAAM5lO,UAAU0qL,OAQpB,SAA4Bk7C,GAC1B,IAKEniE,EALE+oH,EAAW5mD,EAAM4mD,SACnBv1R,EAAO2uO,EAAM3uO,KACb6sR,EAAUl+C,EAAMk+C,QACdkiD,EAAkB,CAAC,EACnBtiK,EAAa,IAA2BwtG,KAE5C,IACE,IAAKxtG,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,CACrD,IAAIm7G,EAAUwvE,EAAO9gO,MACjB4hV,EAAkB4G,IAAmBqB,EAASv4L,IAElD,IAAIswL,GAAmBttR,IAAS0rR,KAAY1uL,IAAYu5K,KAAS+W,EAAgBp7U,OAASm2U,IAA1F,CAGA,IAAI6hD,EAAiB58C,GAAmBA,EAAuB,MAC/D,GAAIzT,IAAa78K,GAEf,IAAK28L,IAA4BpE,EADftc,IAAgCj8K,IACO,CAEnDktO,GACF,IAAS,IAAuCltO,IAElD,QACF,CAEF,GAAIswL,GAAsC,OAAnB48C,IAA8C,IAAnBA,EAA0B,CAC1E,IAAI8E,EACmC,QAAtCA,EAAkB9E,SAAgD,IAApB8E,IAA+C9E,EAAiB,CAAC,GAChH,IACI+E,EAAQnnE,IAAUoiE,EAAgBltO,EAASswL,EAAiBT,EADrC8M,IAA4BpE,EAAUv4L,IAEjE+xO,EAAgB/xO,GAAW,IAAI2sO,IAAeh7F,EAAMgc,UAAU,GAAG7tS,OAAOkgJ,IAAU,GAAO,CACvFtxJ,MAAOujY,EACPlwD,SAAUmrD,EAAeh4X,OAAS+8X,GAEtC,CArBA,CAsBF,CACF,CAAE,MAAOl+V,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACA,OAAOmiY,CACT,CAnD6BG,CAAmBvgG,GAE5CA,EAAM5lO,UAAU0qL,OAqDpB,SAA+Bk7C,GAC7B,IAAIjkS,EAMF8lO,EALEu+J,EAAkBpgG,EAAM5lO,UAAU0qL,OAAS,CAAC,EAC5C07I,EAA6B,CAAC,EAC9Bv+V,EAAU+9P,EAAM5lO,UAAUn4B,QAE1B6/L,EAAa,IAA2Bk+D,EAAMv1R,UAElD,IACE,IAAKq3N,EAAWppN,MAAOmpN,EAASC,EAAWt4M,KAAK0pB,MAAO,CACrD,IAAIxoC,EAAQm3N,EAAO9kO,MACnBojY,IAAez1X,GAEf,IACEu3N,EADEC,EAAa,IAA2B,GAAKx3N,EAAM0vD,UAAU0qL,SAEjE,IACE,IAAK5iB,EAAWxpN,MAAOupN,EAASC,EAAW14M,KAAK0pB,MAAO,CACrD,IAAIutV,EACApyO,EAAU4zE,EAAOllO,MAGrB,GADiD,QAAhD0jY,GAAc1kY,EAAKkmC,EAAQvuB,OAAO26I,UAAqC,IAAfoyO,IAAqC1kY,EAAGsyJ,GAAW4zN,IAAoB5zN,EAAS2xI,IAC1G,WAA3B/9P,EAAQvuB,MAAM26I,GAAuB,CACvC,IAAIqyO,EAAoBF,EAA2BnyO,GAC/CsyO,EAAiBj2X,EAAM0vD,UAAU0qL,OAAOz2F,GAASg6M,gBAAgB,QACjEq4B,EACE/lD,IAAgB+lD,EAAkB3jY,MAAO4jY,EAAe5jY,OAE1DyjY,EAA2BnyO,GAAWu6M,IAAwB83B,EAAmBC,EAAgB,OAAQ,QAASC,MAGlH3+V,EAAQvuB,MAAM26I,GAAW,qBAElBmyO,EAA2BnyO,IAGpCmyO,EAA2BnyO,GAAWsyO,CAE1C,CACF,CACF,CAAE,MAAOv+V,GACP8/L,EAAWpjO,EAAEsjC,EACf,CAAE,QACA8/L,EAAWjkO,GACb,CACF,CAEF,CAAE,MAAOmkC,GACP0/L,EAAWhjO,EAAEsjC,EACf,CAAE,QACA0/L,EAAW7jO,GACb,CACA,IACE8jO,EADEC,EAAa,IAA2B,GAAKw+J,IAEjD,IACE,IAAKx+J,EAAWtpN,MAAOqpN,EAASC,EAAWx4M,KAAK0pB,MAAO,CACrD,IAAIiyU,EAAWpjJ,EAAOhlO,MAElBF,EAAOmjS,EAAMgc,UAAUmpE,GAAU,GACjC8V,EAAmBuF,EAA2Brb,GAClDib,EAAgBjb,GAAY,IAAI6V,IAAen+X,EAAMo+X,GAErD,IACEh3D,EADEC,EAAa,IAA2BlkC,EAAMv1R,UAElD,IACE,IAAKy5T,EAAWxrT,MAAOurT,EAASC,EAAW16S,KAAK0pB,MAAO,CACrD,IAAIkyU,EAASnhD,EAAOlnU,MAChB8jY,EAAazb,EAAOhrT,UAAU0qL,OAAOqgI,GACrC0b,IACFzb,EAAO0b,YAAYD,EAAWjkY,IAAI,QAASC,GAC3CgkY,EAAW3hR,QAAS,EAExB,CACF,CAAE,MAAO98E,GACP8hS,EAAWplU,EAAEsjC,EACf,CAAE,QACA8hS,EAAWjmU,GACb,CACF,CACF,CAAE,MAAOmkC,GACP4/L,EAAWljO,EAAEsjC,EACf,CAAE,QACA4/L,EAAW/jO,GACb,CACA,OAAOmiY,CACT,CAzI6BW,CAAsB/gG,EAEnD,CAgDA,IAAI4gG,IAAsBn4B,KAAoB,SAAUme,EAAKC,GAC3D,OAAO5rC,IAAoB2rC,GAAO3rC,IAAoB4rC,EACxD,ICzFA,IAAI,IAAY,CAAC,SACf,IAAa,CAAC,WACd,IAAa,CAAC,YAChB,SAAS,IAAavoI,GAAW,IAAIC,EACrC,WAAuC,GAAuB,oBAAZ1kH,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFxqD,QAAQ10E,UAAU03C,QAAQh2C,KAAKq9H,QAAQC,UAAUtqD,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO1wE,KAAK,OAAO,CAAO,CAAE,CADvQ,GAA6B,OAAO,WAAkC,IAAsC0O,EAAlCgxO,GAAQ,QAAgBF,GAAkB,GAAIC,EAA2B,CAAE,IAAIE,GAAY,QAAgB7jP,MAAM8E,YAAa8N,EAASqsH,QAAQC,UAAU0kH,EAAOhjP,UAAWijP,EAAY,MAASjxO,EAASgxO,EAAMviP,MAAMrB,KAAMY,WAAc,OAAO,QAA2BZ,KAAM4S,EAAS,CAAG,CAExa,SAAS,IAA2BwS,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAClL,SAAS,IAAQv0L,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CA4Blf,IAAI,IAAuB,WAChC,SAAS8lI,KACP,QAAgBxuI,KAAMwuI,GACtBxuI,KAAKomY,QAAU,CAAC,CAClB,CAsBA,OArBA,QAAa53P,EAAS,CAAC,CACrB3tG,IAAK,SACL1+B,MAAO,SAAgBkkY,EAASrK,GAC9Bh8X,KAAKomY,QAAQC,GAAWrK,CAC1B,GACC,CACDn7V,IAAK,MACL1+B,MAAO,SAAaF,GAClB,YAA8Bw0B,IAAvBz2B,KAAKomY,QAAQnkY,EACtB,GACC,CACD4+B,IAAK,MACL1+B,MAAO,SAAaF,GAGlB,KAAOjC,KAAKomY,QAAQnkY,IAASA,IAASjC,KAAKomY,QAAQnkY,IACjDA,EAAOjC,KAAKomY,QAAQnkY,GAEtB,OAAOA,CACT,KAEKusI,CACT,CA3BkC,GAqC3B,SAASmiO,IAAYvrE,GAC1B,MAAsE,UAA9DA,aAAqC,EAASA,EAAMz8R,KAC9D,CACO,SAASm2W,IAAa15E,GAC3B,MAAsE,WAA9DA,aAAqC,EAASA,EAAMz8R,KAC9D,CACO,SAAS2+W,IAAcliF,GAC5B,MAAsE,YAA9DA,aAAqC,EAASA,EAAMz8R,KAC9D,CACO,SAASspW,IAAa7sE,GAC3B,MAAsE,WAA9DA,aAAqC,EAASA,EAAMz8R,KAC9D,CACO,IAAI29X,IAAqB,WAC9B,SAASA,EAAMjzK,EAAM1qN,EAAMiJ,EAAQ20X,EAAiB/5R,EAAQnlE,EAAS+qO,GACnE,IACEo0H,EACAC,EAFEhmY,EAAQT,MAGZ,QAAgBA,KAAMsmY,GACtBtmY,KAAK2I,KAAOA,EACZ3I,KAAK4R,OAASA,EACd5R,KAAKwsG,OAASA,EAIdxsG,KAAK0mY,iBAAmB,SAAUjwU,GAChC,IAAIkwU,EAAYC,EAUhB,OAPiC,QAA5BD,EAAalwU,EAAKn9B,YAAiC,IAAfqtW,GAAyBA,EAAWjhX,OAC3E+wC,EAAKn9B,KAAK5T,KAAOjlB,EAAMusX,iBAAiBv2T,EAAKn9B,KAAK5T,OAGlB,QAA7BkhX,EAAcnwU,EAAKn9B,YAAkC,IAAhBstW,GAAgE,QAArCA,EAAcA,EAAYlsE,aAAmC,IAAhBksE,GAA0BA,EAAYlhX,OACtJ+wC,EAAKn9B,KAAKohS,MAAMh1S,KAAOjlB,EAAMusX,iBAAiBv2T,EAAKn9B,KAAKohS,MAAMh1S,OAEzD+wC,CACT,EACAz2D,KAAK4R,OAASA,EACd5R,KAAKwsG,OAASA,EACdxsG,KAAKoyQ,KAAOigE,IAAejgE,GAE3BpyQ,KAAKiC,KAAoC,QAA5BukY,EAAanzK,EAAKpxN,YAAiC,IAAfukY,EAAwBA,EAAaD,EACtFvmY,KAAK+xD,MAAQohR,IAAO9/G,EAAKthK,OAAS,CAChClxC,KAAMwyM,EAAKthK,OACTshK,EAAKthK,MAAQsgR,IAAeh/G,EAAKthK,YAASt7B,EAE9Cz2B,KAAK6mY,aAAej1X,EAASA,EAAOi1X,aAAe,IAAI,IACvD7mY,KAAK8mY,kBAAoBl1X,EAASA,EAAOk1X,kBAAoB,IAAI,IACjE9mY,KAAK+mY,cAAgBn1X,EAASA,EAAOm1X,cAAgB,IAAI,IACzD/mY,KAAK0lB,KAAO2tM,EAAK3tM,KACjB1lB,KAAKgnE,YAAcqsJ,EAAKrsJ,YACxBhnE,KAAK8iO,WrFhEF,SAA4BhvN,GACjC,OAAOA,EAAUkd,KAAI,SAAUjtB,GAC7B,OAAIimW,IAASjmW,GACJ,CACLwM,OAAQk4T,GAA4B1kU,EAAEwM,OAAQ8tU,MAG3Ct6U,CACT,GACF,CqFuDsBijY,CAA0D,QAAtCP,EAAkBpzK,EAAKv/M,iBAA2C,IAApB2yX,EAA6BA,EAAkB,IACnIzmY,KAAK8oH,OAAkB,UAATngH,GAA6B,SAATA,EAAkB,CAAC,EhGrGlD,SAAkC0qN,EAAM4zK,EAAUz6R,GACvD,IAAI06R,EAAoB16R,EAAOy6R,GAC3Bn+Q,EAAS,CAAC,EAEVq+Q,EAAgBD,EAAkBxqC,QACpCr/I,EAAU6pL,EAAkB7pL,aACR5mL,IAAlB0wW,IACFr+Q,EAAO4zO,QAAUyqC,QAEH1wW,IAAZ4mL,IACEqqI,IAAYr0H,KAAUm0H,IAAen0H,EAAKqnG,QAAUshC,IAAa3oI,MACnEvqG,EAAOu0F,QAAUA,GAGjB4+I,IAAc5oI,KAChBvqG,EAAOu0F,QAAU,GAGnB,IACEkhB,EADEC,EAAY,IAA2Bi+H,KAE3C,IACE,IAAKj+H,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIpzC,EAAOq5N,EAAMp8N,MACjB,QAAmBs0B,IAAf48L,EAAKnuN,GACP,GAAa,YAATA,EAAoB,CACtB,IAAIkiY,EAAcC,EACd3qC,EAAUrpI,EAAKnuN,GACnB4jH,EAAO5jH,GAAQyhD,GAAS+1S,GAAWA,EAAU,CAC3Ct6T,IAAsC,QAAhCglW,EAAe1qC,EAAQt6T,WAAkC,IAAjBglW,EAA0BA,EAAeD,EACvF3lP,OAA+C,QAAtC6lP,EAAkB3qC,EAAQl7M,cAAwC,IAApB6lP,EAA6BA,EAAkBF,EAE1G,MACEr+Q,EAAO5jH,GAAQmuN,EAAKnuN,EAG1B,CACF,CAAE,MAAOsiC,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACA,OAAOylH,CACT,CgG2D6Dw+Q,CAAyBj0K,EAAM1qN,EAAM6jG,GAC9FxsG,KAAKw/D,UAAY,CACf95C,KAAM,CACJy8M,QAASvwN,EAASA,EAAO4tD,UAAU95C,KAAKy8M,QAAU,GAClDi6J,YAAaxqX,EAASA,EAAO4tD,UAAU95C,KAAK02W,YAAc,CAAC,EAC3DmL,oBAAqB31X,EAASA,EAAO4tD,UAAU95C,KAAK6hX,oBAAsB,CAAC,EAE3ElK,UAAW31C,IAAYr0H,KAAUzhN,aAAuC,EAASA,EAAO4tD,UAAU95C,KAAK23W,iBAA4B5mW,IAAd48L,EAAK3tM,MAE5HihW,WAAY,IAAIpZ,IAChB/2F,cAAe,CACbp0O,IAAK,CAAC,EACNo/G,OAAQ,CAAC,EACTk5K,MAAO,CAAC,GAEVjkQ,KAAM,KACNpvB,QAAS,IAAc,CACrBvuB,MAAO,CAAC,EACR+6P,KAAM,CAAC,EACPwD,OAAQ,CAAC,GACRhwO,EAAUuhS,GAAUvhS,GAAW,CAAC,GACnCo3T,UAAW,KACXv0G,OAAQ,KACR42B,WAAY,KACZijD,KAAM,CAAC,EACP9sD,QAAS,CAAC,EAEd,CAgaA,OA/ZA,QAAaqvH,EAAO,CAAC,CACnBzlW,IAAK,QACL7+B,IAAK,WACH,OAAOhC,KAAKgzW,iBAAiB,QAC/B,GACC,CACDnyU,IAAK,SACL7+B,IAAK,WACH,OAAOhC,KAAKgzW,iBAAiB,SAC/B,GACC,CACDnyU,IAAK,QACL1+B,MAAO,WACLnC,KAAKw1T,aACLx1T,KAAKwnY,kBACLxnY,KAAKynY,iCACLznY,KAAK0nY,kBACL1nY,KAAK2jU,kBACL3jU,KAAK0/T,YACL1/T,KAAK2nY,sBACL3nY,KAAK4nY,eACL5nY,KAAK6nY,gBACP,GACC,CACDhnW,IAAK,aACL1+B,MAAO,YDxKJ,SAAqBijS,GAC1B,IACE0iG,GADSlnY,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,CAAC,GAC3DknY,YACrBvC,IAAengG,GACf,IAAiBA,GACjB,IACE7mE,EADEC,EAAY,IAA2B6iH,KAE3C,IACE,IAAK7iH,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAE3C8qV,IAAmBh+F,EADR7mE,EAAMp8N,MAGrB,CAAE,MAAOqlC,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACKykY,GAEH,IAAgB1iG,EAEpB,CCoJM2iG,CAAY/nY,KACd,GACC,CACD6gC,IAAK,kBACL1+B,MAAO,WACL,IAAiBnC,KACnB,GAMC,CACD6gC,IAAK,iCACL1+B,MAAO,WACyB,UAA1BnC,KAAKi0W,QAAQ,UACfj0W,KAAKgvX,aAAahvX,KAAKi0W,QAAQ,SAAU,SAEZ,WAA3Bj0W,KAAKi0W,QAAQ,WACfj0W,KAAKgvX,aAAahvX,KAAKi0W,QAAQ,UAAW,SAE9C,GACC,CACDpzU,IAAK,eACL1+B,MAAO,WACL,IAAYnC,KACd,GACC,CACD6gC,IAAK,yBACL1+B,MAAO,SAAgCiwQ,GAE7BA,EAAKtmQ,MAAb,IAIEyyN,EAHAypK,GAAW,OAAyB51H,EAAM,KACxCluQ,EAAI,CAAC,EACLs6N,EAAY,IAA2B,GAAKwpK,IAEhD,IACE,IAAKxpK,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAI0iK,EAAWujB,EAAMp8N,MACjBA,EAAQ6lY,EAAShtL,QACPvkL,IAAVt0B,IACF+B,EAAE82M,GAAY44H,IAAiBzxU,GAEnC,CACF,CAAE,MAAOqlC,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACA,OAAOa,CACT,GACC,CACD28B,IAAK,2BACL1+B,MAAO,SAAkC8lY,GACvC,IAYQC,EAZJC,EAAc,CAAC,EAInB,IAHInoY,KAAKoyQ,OACP+1H,EAAcnoY,KAAKooY,uBAAuBpoY,KAAKoyQ,QAE5C61H,KAECjoY,KAAKgnE,cACPmhU,EAAyB,YAAIv0D,IAAiB5zU,KAAKgnE,cAInC,SAAdhnE,KAAK2I,MAAiC,UAAd3I,KAAK2I,MAE/B,OAAO,IAAc,CACnBoF,MAAO/N,KAAKgzW,iBAAiB,SAC7BhlW,OAAQhO,KAAKgzW,iBAAiB,WACI,QAAhCk1B,EAAeC,SAA0C,IAAjBD,EAA0BA,EAAe,CAAC,GAG1F,OAAOz9D,GAAQ09D,QAAe1xW,EAAY0xW,CAC5C,GACC,CACDtnW,IAAK,iBACL1+B,MAAO,WACL,GAAKnC,KAAK8oH,OAAV,CAGA,IAAIu/Q,EAAeroY,KAAK8oH,OACtB4zO,EAAU2rC,EAAa3rC,QACvB5zO,GAAS,OAAyBu/Q,EAAc,KAC9C7oU,EAAYx/D,KAAKw/D,UACnBgtC,EAASxsG,KAAKwsG,OACZmqK,EtC3DH,SAAiC2xH,EAAsB97R,GAC5D,IAEEy6H,EAFE0vC,EAAY,CAAC,EACbzvC,EAAa,IAA2BynG,KAE5C,IACE,IAAKznG,EAAWppN,MAAOmpN,EAASC,EAAWt4M,KAAK0pB,MAAO,CACrD,IAAIm7G,EAAUwzE,EAAO9kO,MACjBgkX,EAAkBmiB,EAAqB70O,GAC3C,GAAI0yN,SAA0DA,EAAgBd,cAAe,CAC3F,IAAIkjB,EAAwBtjB,IAAoB,CAAC,cAAe,eAAgBkB,EAAgBd,cAAct2L,OAAQviF,EAAQinD,GAC5HijH,EAAc6xH,EAAsB7xH,YAElC6uG,EAAgBT,IAAiBrxN,EADrB80O,EAAsB5hE,aAElCx4F,EAAOq4I,IAAmB9vG,EAAa6uG,QAC9B9uV,IAAT03M,IACFwoC,EAAU4uG,GAAiBp3I,EAE/B,CACF,CACF,CAAE,MAAO3mM,GACP0/L,EAAWhjO,EAAEsjC,EACf,CAAE,QACA0/L,EAAW7jO,GACb,CACA,OAAOonU,GAAQ9zD,QAAalgP,EAAYkgP,CAC1C,CsCkCsB6xH,CAAwBhpU,EAAUg3M,cAAehqK,GACjE,OAAO,IAAc,IAAc,IAAc,CAC/CpyB,QAASsiR,GACR18V,KAAKyoY,yBAA0B3/Q,GAAS6tJ,EAAY,CACrDA,UAAWA,GACT,CAAC,EAXL,CAYF,GACC,CACD91O,IAAK,wBACL1+B,MAAO,WACL,MAAO,CAAC,CACV,GACC,CACD0+B,IAAK,sBACL1+B,MAAO,WACL,IAGE8gO,EAHEuzC,EAAgBx2Q,KAAKw/D,UAAUg3M,cAC/BkyH,EAAc,GACdxlK,EAAa,IAA2ByrG,KAE5C,IACE,IAAKzrG,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,CACrD,IAAIm7G,EAAUwvE,EAAO9gO,MACjBq0Q,EAAc/iH,GAAS1hG,OACzB22U,EAAYnoY,KAAK6kX,IAAmBplX,KAAMyzJ,GAE9C,CACF,CAAE,MAAOjsH,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACA,IACE4jO,EADEC,EAAa,IAA2Bg+I,KAE5C,IACE,IAAKh+I,EAAWppN,MAAOmpN,EAASC,EAAWt4M,KAAK0pB,MAAO,CACrD,IAAIiyU,EAAWtjJ,EAAO9kO,MACtBumY,EAAcA,EAAYn1X,OAAOoyW,IAAqB3lX,KAAMuqX,GAC9D,CACF,CAAE,MAAO/iV,GACP0/L,EAAWhjO,EAAEsjC,EACf,CAAE,QACA0/L,EAAW7jO,GACb,CACA,OAAOqlY,CACT,GACC,CACD7nW,IAAK,eACL1+B,MAAO,WACL,O5CvFC,SAAsBwmY,EAAgBn8R,GAC3C,IAAIo8R,EAAoBD,EAAe19X,EACrCA,OAA0B,IAAtB29X,EAA+B,GAAKA,EACxCC,EAAoBF,EAAez9X,EACnCA,OAA0B,IAAtB29X,EAA+B,GAAKA,EAC1C,MAAO,GAAGt1X,QAAO,QAAmBtI,EAAE+lB,KAAI,SAAU7S,GAClD,OAAOgiW,IAAahiW,EAAG,OAAQquF,EACjC,MAAK,QAAmBthG,EAAE8lB,KAAI,SAAU7S,GACtC,OAAOgiW,IAAahiW,EAAG,OAAQquF,EACjC,MAAK,QAAmBvhG,EAAE+lB,KAAI,SAAU7S,GACtC,OAAOgiW,IAAahiW,EAAG,OAAQquF,EACjC,MAAK,QAAmBthG,EAAE8lB,KAAI,SAAU7S,GACtC,OAAOgiW,IAAahiW,EAAG,OAAQquF,EACjC,MAAKj8F,QAAO,SAAU4N,GACpB,OAAOA,CACT,GACF,C4CuEa,CAAcne,KAAKw/D,UAAUukQ,KAAM/jU,KAAKwsG,OACjD,GACC,CACD3rE,IAAK,kBACL1+B,MAAO,WACL,OAAO,IAAiBnC,KAC1B,GACC,CACD6gC,IAAK,sBACL1+B,MAAO,WACL,OAAO,IAAqBnC,KAC9B,GACC,CACD6gC,IAAK,gBACL1+B,MAAO,WACL,IAAI2mY,EACAj3U,EAAsC,QAA9Bi3U,EAAc9oY,KAAK+xD,aAAmC,IAAhB+2U,EAAyBA,EAAc,CAAC,EACxF98C,EAAWn6R,EAAKm6R,SAChB+8C,GAAkB,OAAyBl3U,EAAM,KAC/CE,EAAQ,IAAc,IAAc,IAAc,CAAC,EAAGygR,IAAmBxyU,KAAKwsG,OAAOz6C,OAAOkhR,wBAAyB81D,GAAkB/8C,EAAW,CACpJrxH,OAAQ,CACNn1N,OAAQwmV,IAER,CAAC,GACL,GAAIj6R,EAAMlxC,KAAM,CAIV,IAAImoX,EAIFC,EAPN,GAAI,GAAS,CAAC,OAAQ,SAAUjpY,KAAK2I,OAEnC,GAAI,GAAS,CAAC,cAAU8tB,GAAYs7B,EAAM01D,QAEP,QAAhCuhR,EAAej3U,EAAM8kL,aAAoC,IAAjBmyJ,IAAyCj3U,EAAM8kL,MAAQ,cAO/D,QAAlCoyJ,EAAgBl3U,EAAM01D,cAAsC,IAAlBwhR,IAA2Cl3U,EAAM01D,OAAS,SAEvG,OAAOgjN,GAAQ14Q,QAASt7B,EAAYs7B,CACtC,CAEF,GAIC,CACDlxB,IAAK,gBACL1+B,MAAO,WACL,IAAIm2M,EAAU13M,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,GAC9E8Q,EAAQ,CAAC,GACb4mM,EAAUA,EAAQ/kM,OAAOvT,KAAKkpY,oBAClBroY,OAAS,IACnB6Q,EAAM4mM,QAAUA,GAElB,IAAIxvF,EAAS9oH,KAAKmpY,iBACdrgR,IACFp3G,EAAMo3G,OAASA,GAEjBp3G,EAAM69P,MAAQ,GAAGh8P,OAAOvT,KAAKopY,sBAAuBppY,KAAKqpY,iBAGzD,IAAIn/I,GAAUlqP,KAAK4R,QAAUktW,IAAa9+W,KAAK4R,QAAUkuX,IAAe9/X,MAAQ,GAC5EkqP,EAAOrpP,OAAS,IAClB6Q,EAAMw4O,OAASA,GAEjB,IAAI65E,EAAO/jU,KAAKspY,eACZvlE,EAAKljU,OAAS,IAChB6Q,EAAMqyT,KAAOA,GAEf,IAAI9sD,EAAUj3Q,KAAKupY,kBAInB,OAHItyH,EAAQp2Q,OAAS,IACnB6Q,EAAMulQ,QAAUA,GAEXvlQ,CACT,GACC,CACDmvB,IAAK,UACL1+B,MAAO,SAAiB0e,GACtB,OAAO6pT,IAAS1qU,KAAKiC,KAAO,GAAGsR,OAAOvT,KAAKiC,KAAM,KAAO,IAAM4e,EAChE,GACC,CACDggB,IAAK,cACL1+B,MAAO,SAAqBwG,GAC1B,OAAO3I,KAAKi0W,QAAQ/F,IAAevlW,GAAMiW,cAC3C,GAMC,CACDiiB,IAAK,kBACL1+B,MAAO,SAAyBF,GAC9B,IAAIunY,EAAWxpY,KAAKypY,YAAYxnY,GAG5B6tW,EAAY9vW,KAAKw/D,UAAU95C,KAAK6hX,oBAEpC,OADAz3B,EAAU05B,IAAa15B,EAAU05B,IAAa,GAAK,EAC5CA,CACT,GACC,CACD3oW,IAAK,mBACL1+B,MAAO,SAA0B+kX,GAC/B,GAAIpI,IAAa9+W,KAAK4R,QAAS,CAC7B,IACI6hJ,EAAU08K,IADC82C,IAA8BC,IAEzC/K,EAAiBn8W,KAAKw/D,UAAU0qL,OAAOz2F,GAC3C,GAAI0oN,IAAmBA,EAAe73P,OAAQ,CAE5C,IAAI37G,EAAOwzW,EAAen6W,IAAI,QAC1B2lD,EAAQw0T,EAAen6W,IAAI,SAC/B,GAAI4+U,IAAkBj4U,IAAS0qU,IAAc1rR,GAAQ,CACnD,IAAIy5P,EAAY+6D,EAAen6W,IAAI,QAE/B69H,EAAQiyP,IADCC,IAAe/xX,KAAMyzJ,IAElC,OAAI5zB,EAOK,CACL2pL,OAAQq9D,IAASzlE,EAAW+6D,EAPf,IAAS,CACtB3/C,UAAW,WACX38L,MAAOA,GACN,CACD6vG,KAAM,aAMR,IAAS,IAAyBj8E,IAC3B,KAEX,CACF,CACF,CACA,MAAO,CACL+1J,OAAQxpT,KAAK+mY,cAAc/kY,IAAIhC,KAAKi0W,QAAQiT,IAEhD,GAIC,CACDrmV,IAAK,mBACL1+B,MAAO,SAA0BF,GAC/B,IAAIy+C,EAAO1gD,KAAKw/D,UAAU95C,KAAK02W,YAAYn6X,GAC3C,OAAKy+C,EAKEA,EAAKw7U,YAFHj6X,CAGX,GACC,CACD4+B,IAAK,gBACL1+B,MAAO,SAAuBunY,GAC5B,OAAO1pY,KAAK+mY,cAAc/kY,IAAI0nY,EAChC,GACC,CACD7oW,IAAK,eACL1+B,MAAO,SAAsBkkY,EAASrK,GACpCh8X,KAAK+mY,cAAc/J,OAAOqJ,EAASrK,EACrC,GACC,CACDn7V,IAAK,cACL1+B,MAAO,SAAqBkkY,EAASrK,GACnCh8X,KAAK6mY,aAAa7J,OAAOqJ,EAASrK,EACpC,GACC,CACDn7V,IAAK,mBACL1+B,MAAO,SAA0BkkY,EAASrK,GACxCh8X,KAAK8mY,kBAAkB9J,OAAOqJ,EAASrK,EACzC,GAIC,CACDn7V,IAAK,YACL1+B,MAAO,SAAmBwnY,EAAmBljV,GAC3C,OAAIA,EAIKzmD,KAAKi0W,QAAQ01B,GAMtB16D,IAAU06D,IAAsBh5D,IAAeg5D,IAAsB3pY,KAAKw/D,UAAU0qL,OAAOy/I,IAE3F3pY,KAAK6mY,aAAa/kW,IAAI9hC,KAAKi0W,QAAQ01B,IAC1B3pY,KAAK6mY,aAAa7kY,IAAIhC,KAAKi0W,QAAQ01B,SAL5C,CAQF,GAIC,CACD9oW,IAAK,iBACL1+B,MAAO,SAAwBskD,GAC7B,OAAIA,EAIKzmD,KAAKi0W,QAAQ,cAElBj0W,KAAKw/D,UAAUshN,aAAe9gR,KAAKw/D,UAAUshN,WAAWx8J,QAAUtkH,KAAK8mY,kBAAkBhlW,IAAI9hC,KAAKi0W,QAAQ,eACrGj0W,KAAK8mY,kBAAkB9kY,IAAIhC,KAAKi0W,QAAQ,oBADjD,CAIF,GAIC,CACDpzU,IAAK,oBACL1+B,MAAO,SAA2BsxJ,GAEhC,IAAKzzJ,KAAKw/D,UAAU0qL,OAClB,MAAM,IAAIjiN,MAAM,kIAElB,IAAI2hW,EAAsB5pY,KAAKw/D,UAAU0qL,OAAOz2F,GAChD,OAAIm2O,IAAwBA,EAAoBtlR,OACvCslR,EAEF5pY,KAAK4R,OAAS5R,KAAK4R,OAAO4/V,kBAAkB/9M,QAAWh9H,CAChE,GAIC,CACDoK,IAAK,wBACL1+B,MAAO,SAA+B0nY,EAAcC,GAClD,IAAIC,EAAM/pY,KAAKw/D,UAAUi/R,UAAUorC,GAInC,IAHKE,GAAO/pY,KAAK4R,SACfm4X,EAAM/pY,KAAK4R,OAAO4tW,sBAAsBqqB,EAAcC,KAEnDC,EACH,MAAM,IAAI9hW,M5HzgBT,kCAAmC10B,O4HygBUu2X,E5HzgBG,O4H2gBnD,OAAOC,CACT,GAIC,CACDlpW,IAAK,yBACL1+B,MAAO,WACL,IAAI6nY,EAAuBC,EAC3B,OAA4D,QAAnDD,EAAwBhqY,KAAKw/D,UAAUukQ,KAAK94T,SAAyC,IAA1B++X,OAAmC,EAASA,EAAsBtvU,MAAK,SAAUv8C,GACnJ,OAAOA,EAAE+rX,oBACX,OAA6D,QAApDD,EAAyBjqY,KAAKw/D,UAAUukQ,KAAK74T,SAA0C,IAA3B++X,OAAoC,EAASA,EAAuBvvU,MAAK,SAAUv8C,GACtJ,OAAOA,EAAE+rX,oBACX,IACF,KAEK5D,CACT,CApegC,GAserB6D,IAA8B,SAAUC,IACjD,QAAUD,EAAgBC,GAC1B,IAAI1oY,EAAS,IAAayoY,GAC1B,SAASA,IAEP,OADA,QAAgBnqY,KAAMmqY,GACfzoY,EAAOL,MAAMrB,KAAMY,UAC5B,CAkCA,OAjCA,QAAaupY,EAAgB,CAAC,CAC5BtpW,IAAK,UACL1+B,MACA,SAAiBsxJ,GACf,IAAIvG,EAAMtsJ,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC3Eg2U,EAAW52U,KAAK42U,SAASnjL,GAC7B,GAAKmjL,EAGL,OAAO,IAASA,EAAU1pL,EAC5B,GACC,CACDrsH,IAAK,iBACL1+B,MAAO,SAAwBkB,EAAGiH,GAChC,O5GvLC,SAAgBknV,EAASnuV,EAAGiH,EAAM8hD,GACvC,OAAKolS,EAGE,GAAKA,GAAS7/T,QAAO,SAAUzS,EAAGu0I,GACvC,IAAIziI,EAAMwgU,EAAQ/9L,GAClB,OAAI,GAAQziI,GACHA,EAAIW,QAAO,SAAUhE,EAAI01T,GAC9B,OAAOhgV,EAAEzB,KAAKwqD,EAASz+B,EAAI01T,EAAY5vL,EACzC,GAAGv0I,GAEI7b,EAAEzB,KAAKwqD,EAASltC,EAAG8R,EAAKyiI,EAEnC,GAAGnpJ,GAXMA,CAYX,C4GyKaqnB,CAAO3xB,KAAKqqY,cAAc,SAAUrjF,EAAKthF,EAAIvgN,GAClD,IAAIyxT,EAAW8T,IAAYhlH,GAC3B,OAAIkxG,EACKvzU,EAAE2jT,EAAK4vB,EAAUzxT,GAEnB6hS,CACT,GAAG18S,EACL,GACC,CACDu2B,IAAK,kBACL1+B,MAAO,SAAyBkB,EAAGU,GACjCqE,IAAQpI,KAAKqqY,cAAc,SAAU3kK,EAAIvgN,GACvC,IAAIyxT,EAAW8T,IAAYhlH,GACvBkxG,GACFvzU,EAAEuzU,EAAUzxT,EAEhB,GAAGphB,EACL,KAEKomY,CACT,CAzCyC,CAyCvC7D,KCpmBE,IAAY,CAAC,WACjB,SAAS,IAAQ3hW,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CAEpV,SAAS,IAAa8iN,GAAW,IAAIC,EACrC,WAAuC,GAAuB,oBAAZ1kH,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFxqD,QAAQ10E,UAAU03C,QAAQh2C,KAAKq9H,QAAQC,UAAUtqD,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO1wE,KAAK,OAAO,CAAO,CAAE,CADvQ,GAA6B,OAAO,WAAkC,IAAsC0O,EAAlCgxO,GAAQ,QAAgBF,GAAkB,GAAIC,EAA2B,CAAE,IAAIE,GAAY,QAAgB7jP,MAAM8E,YAAa8N,EAASqsH,QAAQC,UAAU0kH,EAAOhjP,UAAWijP,EAAY,MAASjxO,EAASgxO,EAAMviP,MAAMrB,KAAMY,WAAc,OAAO,QAA2BZ,KAAM4S,EAAS,CAAG,CAOja,IAAI03X,IAAoC,SAAUz6B,IACvD,QAAUy6B,EAAsBz6B,GAChC,IAAInuW,EAAS,IAAa4oY,GAC1B,SAASA,EAAqB14X,EAAQkC,GACpC,IAAIy2X,EAAoBC,EAAeC,EACnChqY,GACJ,QAAgBT,KAAMsqY,IACtB7pY,EAAQiB,EAAOE,KAAK5B,KAAM4R,IACpBkC,UAAYA,EAClBrT,EAAMqT,UAAY80T,GAAU90T,GAC5B,IAAI42X,EAA4D,QAA7CH,EAAqB9pY,EAAMqT,UAAUi1N,UAAuC,IAAvBwhK,EAAgCA,EAAqB,MAAC9zW,OAAWA,GAMzI,OALAh2B,EAAMqT,UAAUi1N,GAAK,CAAsC,QAApCyhK,EAAgBE,EAAY,UAAkC,IAAlBF,EAA2BA,EAAgB,QAA+C,QAArCC,EAAiBC,EAAY,UAAmC,IAAnBD,EAA4BA,EAAiB,WAE9M32X,EAAUg5N,SAAiC,MAAtBh5N,EAAUu7N,UAA0C,MAAtBv7N,EAAUw7N,UAAuC,MAAnBx7N,EAAUkwE,QAC7FvjF,EAAMqT,UAAUkwE,MAAQ,KAEnBvjF,CACT,CAmCA,OAlCA,QAAa6pY,EAAsB,CAAC,CAClCzpW,IAAK,QACL1+B,MAAO,WACL,OAAO,IAAImoY,EAAqB,KAAM1hE,GAAU5oU,KAAK8T,WACvD,GACC,CACD+sB,IAAK,kBACL1+B,MAAO,WACL,IAAIo5X,EACJ,OAAO,IAAI50V,IAAI,CAAC3mC,KAAK8T,UAAUy/N,SAAShgO,QAAO,QAAwE,QAApDgoX,EAAwBv7X,KAAK8T,UAAUg5N,eAA+C,IAA1ByuJ,EAAmCA,EAAwB,KAC5L,GACC,CACD16V,IAAK,iBACL1+B,MAAO,WACL,OAAO,IAAIwkC,IAAI3mC,KAAK8T,UAAUi1N,GAChC,GACC,CACDloM,IAAK,OACL1+B,MAAO,WACL,MAAO,oBAAoBoR,OAAO,GAAMvT,KAAK8T,WAC/C,GACC,CACD+sB,IAAK,WACL1+B,MAAO,WACL,IAAIwoY,EAAkB3qY,KAAK8T,UAGvBlB,EArDV,SAAuBlK,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAqDte,CAAc,CACzBC,KAAM,MACNk3H,MAJU8qQ,EAAgBp3J,UACnB,OAAyBo3J,EAAiB,MAKnD,OAAO/3X,CACT,KAEK03X,CACT,CArD+C,CAqD7Ch7B,KClEF,SAAS,IAAa5rH,GAAW,IAAIC,EACrC,WAAuC,GAAuB,oBAAZ1kH,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFxqD,QAAQ10E,UAAU03C,QAAQh2C,KAAKq9H,QAAQC,UAAUtqD,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO1wE,KAAK,OAAO,CAAO,CAAE,CADvQ,GAA6B,OAAO,WAAkC,IAAsC0O,EAAlCgxO,GAAQ,QAAgBF,GAAkB,GAAIC,EAA2B,CAAE,IAAIE,GAAY,QAAgB7jP,MAAM8E,YAAa8N,EAASqsH,QAAQC,UAAU0kH,EAAOhjP,UAAWijP,EAAY,MAASjxO,EAASgxO,EAAMviP,MAAMrB,KAAMY,WAAc,OAAO,QAA2BZ,KAAM4S,EAAS,CAAG,CAOja,IAAIg4X,IAAmC,SAAU/6B,IACtD,QAAU+6B,EAAqB/6B,GAC/B,IAAInuW,EAAS,IAAakpY,GAC1B,SAASA,EAAoBh5X,EAAQkC,GACnC,IAAIrT,EAKJ,OAJA,QAAgBT,KAAM4qY,IACtBnqY,EAAQiB,EAAOE,KAAK5B,KAAM4R,IACpBkC,UAAYA,EAClBrT,EAAMqT,UAAY80T,GAAU90T,GACrBrT,CACT,CAmCA,OAlCA,QAAamqY,EAAqB,CAAC,CACjC/pW,IAAK,QACL1+B,MAAO,WACL,OAAO,IAAIyoY,EAAoB,KAAMhiE,GAAU5oU,KAAK8T,WACtD,GACC,CACD+sB,IAAK,kBACL1+B,MAAO,WACL,OAAO,IAAIwkC,IAAI,CAAC3mC,KAAK8T,UAAUu4M,QACjC,GACC,CACDxrL,IAAK,iBACL1+B,MAAO,WACL,OAAO,IAAIwkC,IAAI,GACjB,GACC,CACD9F,IAAK,OACL1+B,MAAO,WACL,MAAO,mBAAmBoR,OAAO,GAAMvT,KAAK8T,WAC9C,GACC,CACD+sB,IAAK,WACL1+B,MAAO,WACL,IAAIwoY,EAAkB3qY,KAAK8T,UAQ3B,MALa,CACXnL,KAAM,SACNk3H,MAJS8qQ,EAAgBt+K,OAKzBm9F,OAJQmhF,EAAgBhtP,MAO5B,KAEKitP,CACT,CA9C8C,CA8C5Ct7B,KCpDF,SAAS,IAAQ3qU,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CAEpV,SAAS,IAAa8iN,GAAW,IAAIC,EACrC,WAAuC,GAAuB,oBAAZ1kH,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFxqD,QAAQ10E,UAAU03C,QAAQh2C,KAAKq9H,QAAQC,UAAUtqD,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO1wE,KAAK,OAAO,CAAO,CAAE,CADvQ,GAA6B,OAAO,WAAkC,IAAsC0O,EAAlCgxO,GAAQ,QAAgBF,GAAkB,GAAIC,EAA2B,CAAE,IAAIE,GAAY,QAAgB7jP,MAAM8E,YAAa8N,EAASqsH,QAAQC,UAAU0kH,EAAOhjP,UAAWijP,EAAY,MAASjxO,EAASgxO,EAAMviP,MAAMrB,KAAMY,WAAc,OAAO,QAA2BZ,KAAM4S,EAAS,CAAG,CASja,IAAIi4X,IAAiC,SAAUh7B,IACpD,QAAUg7B,EAAmBh7B,GAC7B,IAAInuW,EAAS,IAAampY,GAC1B,SAASA,EAAkBj5X,EAAQrB,GACjC,IAAI9P,EAIJ,OAHA,QAAgBT,KAAM6qY,IACtBpqY,EAAQiB,EAAOE,KAAK5B,KAAM4R,IACpBrB,OAASA,EACR9P,CACT,CAgFA,OA/EA,QAAaoqY,EAAmB,CAAC,CAC/BhqW,IAAK,QACL1+B,MAAO,WACL,OAAO,IAAI0oY,EAAkB,KAvBnC,SAAuBniY,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAuBhd,CAAc,CAAC,EAAG1I,KAAKuQ,QAC5D,GACC,CACDswB,IAAK,kBACL1+B,MAAO,WACL,OAAO,IAAIwkC,IAAI,GAAK3mC,KAAKuQ,QAC3B,GACC,CACDswB,IAAK,iBACL1+B,MAAO,WACL,OAAO,IAAIwkC,GACb,GACC,CACD9F,IAAK,OACL1+B,MAAO,WACL,MAAO,iBAAiBoR,OAAO,GAAMvT,KAAKuQ,QAC5C,GAIC,CACDswB,IAAK,WACL1+B,MAAO,WACL,IAAI28D,EAAS9+D,KACTw3N,EAAU,GAAKx3N,KAAKuQ,QAAQohB,QAAO,SAAUm5W,EAAajrQ,GAC5D,IAAI+2M,EAAW93Q,EAAOvuD,OAAOsvH,GACzBztE,EAAM,IAASwkR,EAAU,CAC3BlnG,KAAM,UAYR,OAViB,OAAbknG,IACoB,aAAlBA,EAASjuU,KACXmiY,EAAYvqY,KAAK,WAAWgT,OAAO6+C,EAAK,kBAAkB7+C,OAAO6+C,EAAK,mBAAmB7+C,OAAO6+C,EAAK,QAC1E,iBAAlBwkR,EAASjuU,OAClBmiY,EAAYvqY,KAAK,WAAWgT,OAAO6+C,EAAK,MACxC04U,EAAYvqY,KAAK,aAAagT,OAAO6+C,EAAK,QAKvC04U,CACT,GAAG,IACH,OAAOtzK,EAAQ32N,OAAS,EAAI,CAC1B8H,KAAM,SACN+mO,KAAMlY,EAAQnuM,KAAK,SACjB,IACN,IACE,CAAC,CACHwX,IAAK,OACL1+B,MAAO,SAAcyP,EAAQwzR,GAC3B,IAAI54L,EAAS44L,EAAM54L,OACjB/1C,EAAO2uO,EAAM3uO,KAGf,GAAgB,WADFy9Q,IAAoB,UADtB9uC,EAAMk+C,QACoC92O,GAEpD,OAAO,KAET,IAAIj8F,EAAS60R,EAAMsrE,gBAAe,SAAUwL,EAAYtlC,EAAUnjL,GAChE,IAAI0oN,EAAiBxrC,IAAel9K,IAAY2xI,EAAMosE,kBAAkB/9M,GACpE0oN,IAKEt7B,IAJYs7B,EAAen6W,IAAI,UAI0B,UAAvB40U,EAASpa,YAA0B4lB,IAAW3rR,KAClFylT,EAAWtlC,EAAS/2M,OAAS+2M,IAIjC,OAAOslC,CACT,GAAG,CAAC,GACJ,OAAK,GAAK3rW,GAAQ1P,OAGX,IAAIgqY,EAAkBj5X,EAAQrB,GAF5B,IAGX,KAEKs6X,CACT,CA1F4C,CA0F1Cv7B,KCtGF,SAAS,IAAa5rH,GAAW,IAAIC,EACrC,WAAuC,GAAuB,oBAAZ1kH,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFxqD,QAAQ10E,UAAU03C,QAAQh2C,KAAKq9H,QAAQC,UAAUtqD,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO1wE,KAAK,OAAO,CAAO,CAAE,CADvQ,GAA6B,OAAO,WAAkC,IAAsC0O,EAAlCgxO,GAAQ,QAAgBF,GAAkB,GAAIC,EAA2B,CAAE,IAAIE,GAAY,QAAgB7jP,MAAM8E,YAAa8N,EAASqsH,QAAQC,UAAU0kH,EAAOhjP,UAAWijP,EAAY,MAASjxO,EAASgxO,EAAMviP,MAAMrB,KAAMY,WAAc,OAAO,QAA2BZ,KAAM4S,EAAS,CAAG,CAOja,IAAIm4X,IAAoC,SAAUl7B,IACvD,QAAUk7B,EAAsBl7B,GAChC,IAAInuW,EAAS,IAAaqpY,GAC1B,SAASA,EAAqBn5X,EAAQkC,GACpC,IAAIrT,GACJ,QAAgBT,KAAM+qY,IACtBtqY,EAAQiB,EAAOE,KAAK5B,KAAM4R,IACpBkC,UAAYA,EAClBrT,EAAMqT,UAAY80T,GAAU90T,GAC5B,IAAI62X,EAAkBlqY,EAAMqT,UAC1BmuQ,EAAU0oH,EAAgB1oH,QAC1BsoH,EAAqBI,EAAgB5hK,GACrCA,OAA4B,IAAvBwhK,EAAgC,GAAKA,EAK5C,OAJA9pY,EAAMqT,UAAUi1N,GAAKk5C,EAAQjxP,KAAI,SAAU3tB,EAAGnC,GAC5C,IAAI8pY,EACJ,OAA2B,QAAnBA,EAAQjiK,EAAG7nO,UAA0B,IAAV8pY,EAAmBA,EAAQ3nY,CAChE,IACO5C,CACT,CAmCA,OAlCA,QAAasqY,EAAsB,CAAC,CAClClqW,IAAK,QACL1+B,MAAO,WACL,OAAO,IAAI4oY,EAAqB/qY,KAAK4R,OAAQg3T,GAAU5oU,KAAK8T,WAC9D,GACC,CACD+sB,IAAK,kBACL1+B,MAAO,WACL,OAAO,IAAIwkC,IAAI3mC,KAAK8T,UAAUmuQ,QAChC,GACC,CACDphP,IAAK,iBACL1+B,MAAO,WACL,OAAO,IAAIwkC,IAAI3mC,KAAK8T,UAAUi1N,GAChC,GACC,CACDloM,IAAK,OACL1+B,MAAO,WACL,MAAO,oBAAoBoR,OAAO,GAAMvT,KAAK8T,WAC/C,GACC,CACD+sB,IAAK,WACL1+B,MAAO,WACL,IAAI8oY,EAAmBjrY,KAAK8T,UAQ5B,MALa,CACXnL,KAAM,UACNi3H,OAJSqrQ,EAAiBhpH,QAK1Bl5C,GAJKkiK,EAAiBliK,GAO1B,KAEKgiK,CACT,CAtD+C,CAsD7Cz7B,KC7DF,SAAS,IAAa5rH,GAAW,IAAIC,EACrC,WAAuC,GAAuB,oBAAZ1kH,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFxqD,QAAQ10E,UAAU03C,QAAQh2C,KAAKq9H,QAAQC,UAAUtqD,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO1wE,KAAK,OAAO,CAAO,CAAE,CADvQ,GAA6B,OAAO,WAAkC,IAAsC0O,EAAlCgxO,GAAQ,QAAgBF,GAAkB,GAAIC,EAA2B,CAAE,IAAIE,GAAY,QAAgB7jP,MAAM8E,YAAa8N,EAASqsH,QAAQC,UAAU0kH,EAAOhjP,UAAWijP,EAAY,MAASjxO,EAASgxO,EAAMviP,MAAMrB,KAAMY,WAAc,OAAO,QAA2BZ,KAAM4S,EAAS,CAAG,CAOja,IAAIs4X,IAAiC,SAAUr7B,IACpD,QAAUq7B,EAAmBr7B,GAC7B,IAAInuW,EAAS,IAAawpY,GAC1B,SAASA,EAAkBt5X,EAAQkC,GACjC,IAAIy2X,EAAoBC,EAAeC,EACnChqY,GACJ,QAAgBT,KAAMkrY,IACtBzqY,EAAQiB,EAAOE,KAAK5B,KAAM4R,IACpBkC,UAAYA,EAClBrT,EAAMqT,UAAY80T,GAAU90T,GAC5B,IAAI42X,EAA4D,QAA7CH,EAAqB9pY,EAAMqT,UAAUi1N,UAAuC,IAAvBwhK,EAAgCA,EAAqB,MAAC9zW,OAAWA,GAEzI,OADAh2B,EAAMqT,UAAUi1N,GAAK,CAAsC,QAApCyhK,EAAgBE,EAAY,UAAkC,IAAlBF,EAA2BA,EAAgB,MAA6C,QAArCC,EAAiBC,EAAY,UAAmC,IAAnBD,EAA4BA,EAAiB,SACzMhqY,CACT,CAmCA,OAlCA,QAAayqY,EAAmB,CAAC,CAC/BrqW,IAAK,QACL1+B,MAAO,WACL,OAAO,IAAI+oY,EAAkB,KAAMtiE,GAAU5oU,KAAK8T,WACpD,GACC,CACD+sB,IAAK,kBACL1+B,MAAO,WACL,OAAO,IAAIwkC,IAAI3mC,KAAK8T,UAAUq3X,KAChC,GACC,CACDtqW,IAAK,iBACL1+B,MAAO,WACL,OAAO,IAAIwkC,IAAI3mC,KAAK8T,UAAUi1N,GAChC,GACC,CACDloM,IAAK,OACL1+B,MAAO,WACL,MAAO,iBAAiBoR,OAAO,GAAMvT,KAAK8T,WAC5C,GACC,CACD+sB,IAAK,WACL1+B,MAAO,WACL,IAAIwoY,EAAkB3qY,KAAK8T,UAQ3B,MALa,CACXnL,KAAM,OACNi3H,OAJO+qQ,EAAgBQ,KAKvBpiK,GAJK4hK,EAAgB5hK,GAOzB,KAEKmiK,CACT,CAjD4C,CAiD1C57B,KCtDF,SAAS,IAAQ3qU,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CACzf,SAAS,IAAag7O,GAAW,IAAIC,EACrC,WAAuC,GAAuB,oBAAZ1kH,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFxqD,QAAQ10E,UAAU03C,QAAQh2C,KAAKq9H,QAAQC,UAAUtqD,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO1wE,KAAK,OAAO,CAAO,CAAE,CADvQ,GAA6B,OAAO,WAAkC,IAAsC0O,EAAlCgxO,GAAQ,QAAgBF,GAAkB,GAAIC,EAA2B,CAAE,IAAIE,GAAY,QAAgB7jP,MAAM8E,YAAa8N,EAASqsH,QAAQC,UAAU0kH,EAAOhjP,UAAWijP,EAAY,MAASjxO,EAASgxO,EAAMviP,MAAMrB,KAAMY,WAAc,OAAO,QAA2BZ,KAAM4S,EAAS,CAAG,CAQja,IAAIw4X,IAA2B,SAAUv7B,IAC9C,QAAUu7B,EAAav7B,GACvB,IAAInuW,EAAS,IAAa0pY,GAC1B,SAASA,EAAYx5X,EAAQguH,EAAQkyJ,EAAS03B,GAC5C,IAAI/oT,EAMJ,OALA,QAAgBT,KAAMorY,IACtB3qY,EAAQiB,EAAOE,KAAK5B,KAAM4R,IACpBguH,OAASA,EACfn/H,EAAMqxR,QAAUA,EAChBrxR,EAAM+oT,OAASA,EACR/oT,CACT,CAqEA,OApEA,QAAa2qY,EAAa,CAAC,CACzBvqW,IAAK,QACL1+B,MAAO,WACL,OAAO,IAAIipY,EAAY,KAAMxiE,GAAU5oU,KAAK4/H,QAAS5/H,KAAK8xR,QAAS9xR,KAAKwpT,OAC1E,GACC,CACD3oR,IAAK,kBACL1+B,MAAO,WACL,IAAIkpY,EACAzrQ,GAA2C,QAAhCyrQ,EAAerrY,KAAK4/H,cAAqC,IAAjByrQ,EAA0BA,EAAe,IAAI96X,OAAO,IAC3G,OAAO,IAAIo2B,IAAI,GAAGpzB,QAAO,QAAmBvT,KAAK8xR,QAAU,CAAC9xR,KAAK8xR,SAAW,KAAK,QAAmBlyJ,IACtG,GACC,CACD/+F,IAAK,iBACL1+B,MAAO,WACL,OAAO,IAAIwkC,GACb,GACC,CACD9F,IAAK,OACL1+B,MAAO,WACL,MAAO,WAAWoR,OAAOvT,KAAK8xR,QAAS,KAAKv+Q,OAAOvT,KAAKwpT,OAAQ,KAAKj2S,OAAO,GAAMvT,KAAK4/H,QACzF,GACC,CACD/+F,IAAK,WACL1+B,MAAO,WACL,MAAO,GAAGoR,QAAO,QAAmBvT,KAAK8xR,QAAU,CAAC,CAClDnpR,KAAM,SACN+mO,KAAM,kBAAmBn8N,OAAOvT,KAAK8xR,QAAS,SAC3C,IAAK,CAAC,IAAc,IAAc,IAAc,CACnDnpR,KAAM,WACL3I,KAAK4/H,OAAS,CACfA,OAAQ5/H,KAAK4/H,QACX,CAAC,GAAI5/H,KAAK8xR,QAAU,CACtBA,QAAS9xR,KAAK8xR,SACZ,CAAC,GAAI,CAAC,EAAG,CACX03B,OAAQxpT,KAAKwpT,UAEjB,IACE,CAAC,CACH3oR,IAAK,WACL1+B,MAAO,SAAkByP,EAAQwzR,GAC/B,GAAIA,EAAM5lO,UAAUshN,aAAeskB,EAAM5lO,UAAUshN,WAAWotG,MAC5D,OAAOt8W,EAGT,IADA,IAAI05X,EAAiB,EACZ3qY,EAAK,EAAGs3C,EAAO,CAAC,CAACy0R,IAAWD,KAAW,CAACG,IAAYD,MAAahsU,EAAKs3C,EAAKp3C,OAAQF,IAAM,CAChG,IACI4qY,EADctzV,EAAKt3C,GACAqwB,KAAI,SAAUyiI,GACnC,IAAIrtH,EAAMukT,IAAmBvlD,EAAM4mD,SAASv4L,IAC5C,OAAO+vL,IAAWp9S,GAAOA,EAAIy5F,MAAQgkN,IAAWz9S,GAAO,CACrDspM,KAAM,GAAGn8N,OAAO6yB,EAAI+xL,QAClB0sH,IAAWz+S,GAAO,CACpBspM,KAAM,GAAGn8N,OAAO6yB,EAAW,aACzB3P,CACN,KACI80W,EAAK,IAAMA,EAAK,MAClB35X,EAAS,IAAIw5X,EAAYx5X,EAAQ25X,EAAM,KAAMnmG,EAAM6uE,QAAQ,WAAW1gW,OAAO+3X,OAEjF,CACA,GAAIlmG,EAAMkoF,gBAAgBtgD,KAAQ,CAChC,IAAI4J,EAAWxxC,EAAMw+E,cAAc52C,KAC/B4J,EAASjuU,OAASm2U,MACpBltU,EAAS,IAAIw5X,EAAYx5X,EAAQ,KAAMglU,EAAS/2M,MAAOulK,EAAM6uE,QAAQ,WAAW1gW,OAAO+3X,OAE3F,CACA,OAAO15X,CACT,KAEKw5X,CACT,CAjFsC,CAiFpC97B,KC7FF,SAAS,IAAa5rH,GAAW,IAAIC,EACrC,WAAuC,GAAuB,oBAAZ1kH,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFxqD,QAAQ10E,UAAU03C,QAAQh2C,KAAKq9H,QAAQC,UAAUtqD,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO1wE,KAAK,OAAO,CAAO,CAAE,CADvQ,GAA6B,OAAO,WAAkC,IAAsC0O,EAAlCgxO,GAAQ,QAAgBF,GAAkB,GAAIC,EAA2B,CAAE,IAAIE,GAAY,QAAgB7jP,MAAM8E,YAAa8N,EAASqsH,QAAQC,UAAU0kH,EAAOhjP,UAAWijP,EAAY,MAASjxO,EAASgxO,EAAMviP,MAAMrB,KAAMY,WAAc,OAAO,QAA2BZ,KAAM4S,EAAS,CAAG,CAOja,IAAI44X,IAA4B,SAAU37B,IAC/C,QAAU27B,EAAc37B,GACxB,IAAInuW,EAAS,IAAa8pY,GAC1B,SAASA,EAAa55X,EAAQkvQ,EAAYlhJ,EAAQmpG,GAChD,IAAItoO,EAMJ,OALA,QAAgBT,KAAMwrY,IACtB/qY,EAAQiB,EAAOE,KAAK5B,KAAM4R,IACpBkvQ,WAAaA,EACnBrgR,EAAMm/H,OAASA,EACfn/H,EAAMsoO,GAAKA,EACJtoO,CACT,CAuDA,OAtDA,QAAa+qY,EAAc,CAAC,CAC1B3qW,IAAK,QACL1+B,MAAO,WACL,OAAO,IAAIqpY,EAAa,KAAMxrY,KAAK8gR,WAAY8nD,GAAU5oU,KAAK4/H,QAASgpM,GAAU5oU,KAAK+oO,IACxF,GACC,CACDloM,IAAK,kBACL1+B,MAAO,WACL,OAAO,IAAIwkC,IAAI3mC,KAAK4/H,OAAOrvH,OAAO,IACpC,GACC,CACDswB,IAAK,iBACL1+B,MAAO,WACL,OAAO,IAAIwkC,IAAI3mC,KAAK+oO,GACtB,GACC,CACDloM,IAAK,OACL1+B,MAAO,WACL,MAAO,YAAYoR,OAAOvT,KAAK8gR,WAAY,KAAKvtQ,OAAO,GAAMvT,KAAK4/H,QAAS,KAAKrsH,OAAO,GAAMvT,KAAK+oO,IACpG,GACC,CACDloM,IAAK,WACL1+B,MAAO,WACL,MAAO,CACLwG,KAAM,WACNm4Q,WAAY9gR,KAAK8gR,WACjBlhJ,OAAQ5/H,KAAK4/H,OACbmpG,GAAI/oO,KAAK+oO,GAEb,IACE,CAAC,CACHloM,IAAK,WACL1+B,MAAO,SAAkByP,EAAQwzR,GAC/B,IAAKA,EAAM0tE,iBACT,OAAOlhW,EAET,IAAK,IAAIjR,EAAK,EAAGs3C,EAAO,CAAC,CAACy0R,IAAWD,KAAW,CAACG,IAAYD,MAAahsU,EAAKs3C,EAAKp3C,OAAQF,IAAM,CAChG,IAAIk/M,EAAc5nK,EAAKt3C,GACnB4qY,EAAO1rL,EAAY7uL,KAAI,SAAUyiI,GACnC,IAAIrtH,EAAMukT,IAAmBvlD,EAAM4mD,SAASv4L,IAC5C,OAAO+vL,IAAWp9S,GAAOA,EAAIy5F,MAAQgkN,IAAWz9S,GAAO,CACrDspM,KAAM,GAAGn8N,OAAO6yB,EAAI+xL,QAClB0sH,IAAWz+S,GAAO,CACpBspM,KAAM,GAAGn8N,OAAO6yB,EAAW,aACzB3P,CACN,IACI8+H,EAASsqD,EAAY,KAAO+sH,IAAa,IAAM,IAC/C2+D,EAAK,IAAMA,EAAK,MAClB35X,EAAS,IAAI45X,EAAa55X,EAAQwzR,EAAM0tE,iBAAkBy4B,EAAM,CAACnmG,EAAM6uE,QAAQ,IAAI1gW,OAAOgiJ,IAAU6vI,EAAM6uE,QAAQ,IAAI1gW,OAAOgiJ,MAEjI,CACA,OAAO3jJ,CACT,KAEK45X,CACT,CAnEuC,CAmErCl8B,KCxEF,SAAS,IAAQ3qU,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CACzf,SAAS,IAAag7O,GAAW,IAAIC,EACrC,WAAuC,GAAuB,oBAAZ1kH,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFxqD,QAAQ10E,UAAU03C,QAAQh2C,KAAKq9H,QAAQC,UAAUtqD,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO1wE,KAAK,OAAO,CAAO,CAAE,CADvQ,GAA6B,OAAO,WAAkC,IAAsC0O,EAAlCgxO,GAAQ,QAAgBF,GAAkB,GAAIC,EAA2B,CAAE,IAAIE,GAAY,QAAgB7jP,MAAM8E,YAAa8N,EAASqsH,QAAQC,UAAU0kH,EAAOhjP,UAAWijP,EAAY,MAASjxO,EAASgxO,EAAMviP,MAAMrB,KAAMY,WAAc,OAAO,QAA2BZ,KAAM4S,EAAS,CAAG,CAOja,IAAI64X,IAA0B,SAAU57B,IAC7C,QAAU47B,EAAY57B,GACtB,IAAInuW,EAAS,IAAa+pY,GAC1B,SAASA,EAAW75X,EAAQkC,GAC1B,IAAIrT,EAIJ,OAHA,QAAgBT,KAAMyrY,IACtBhrY,EAAQiB,EAAOE,KAAK5B,KAAM4R,IACpBkC,UAAYA,EACXrT,CACT,CAyHA,OAxHA,QAAagrY,EAAY,CAAC,CACxB5qW,IAAK,QACL1+B,MAAO,WACL,OAAO,IAAIspY,EAAW,KAAM7iE,GAAU5oU,KAAK8T,WAC7C,GACC,CACD+sB,IAAK,kBACL1+B,MAAO,WACL,IAAIo5X,EACJ,OAAO,IAAI50V,IAAI,CAAC3mC,KAAK8T,UAAU4+N,OAAQ1yO,KAAK8T,UAAU+sB,KAAKttB,QAAO,QAAwE,QAApDgoX,EAAwBv7X,KAAK8T,UAAUg5N,eAA+C,IAA1ByuJ,EAAmCA,EAAwB,KAC/M,GACC,CACD16V,IAAK,iBACL1+B,MAAO,WACL,OAAO,IAAIwkC,IAAI,CAAC3mC,KAAK8T,UAAU4+N,QACjC,GACC,CACD7xM,IAAK,kBACL1+B,MAAO,SAAyB4wO,GAC9B,IAAI24J,EAAiB34J,EAAQrsN,MAC3BA,OAA2B,IAAnBglX,EAA4B,EAAIA,EACxC1mY,EAAO+tO,EAAQ/tO,KACfyiD,EAAOsrL,EAAQtrL,KACb70C,EAAS,CAAC8T,EAAO1hB,GAAMuO,QAAO,QAAmBk0C,EAAO,CAACA,GAAQ,KAAKp+B,KAAK,KAC/E,MAAO,CACLmgS,OAAQ,YAAYj2S,OAAOX,EAAQ,KAEvC,GACC,CACDiuB,IAAK,OACL1+B,MAAO,WACL,MAAO,UAAUoR,OAAO,GAAMvT,KAAK8T,WACrC,GACC,CACD+sB,IAAK,WACL1+B,MAAO,WACL,IAAIwoY,EAAkB3qY,KAAK8T,UACzB4+N,EAASi4J,EAAgBj4J,OACzB7xM,EAAM8pW,EAAgB9pW,IACtBkyM,EAAU43J,EAAgB53J,QAC1BpnO,EAASg/X,EAAgBh/X,OACzBmhO,EAAU69J,EAAgB79J,QAC1B3qO,EAAQwoY,EAAgBxoY,MACxBwpY,EAAwBhB,EAAgB9zJ,MACxCA,OAAkC,IAA1B80J,EAAmC,CAAC,KAAM,MAAQA,EACxDC,EAAkB,IAAc,IAAc,IAAc,CAC9DjjY,KAAM,SACNk3H,MAAO6yG,EACP7xM,IAAKA,GACJkyM,EAAU,CACXA,QAASk3H,IAAiBl3H,GAAW/yO,KAAK6rY,gBAAgB94J,GAAWA,GACnE,CAAC,GAAI,CAAC,EAAG,CACXpnO,OAAQ,SACPmhO,EAAU,CACXA,QAASA,GACP,CAAC,GAAI,CAAC,EAAG,CACX3qO,MAAQwJ,GAAqB,UAAXA,EAA6B,KAARxJ,IAEzC,OAAIwJ,GAAqB,UAAXA,EAgBL,CAACigY,EAfa,IAAc,CACjCjjY,KAAM,SACNogO,GAAI,CAAC,WAAWx1N,OAAOm/N,EAAQ,WAC/B3lL,IAAK,CAACphD,GACNi0H,OAAQ,CAAC8yG,GACTmE,MAAOA,EACPD,aAAa,GACZ9J,EAAU,CACXA,QAASA,GACP,CAAC,GACiB,CACpBnkO,KAAM,UACN+mO,KAAM,SAASn8N,OAAOm/N,EAAQ,8BAA8Bn/N,OAAOm/N,EAAQ,mBAAmBn/N,OAAOm/N,GACrG3J,GAAI2J,IAIC,CAACk5J,EAEZ,IACE,CAAC,CACH/qW,IAAK,oBACL1+B,MAAO,SAA2ByP,EAAQg6X,GACxC,OAAO,IAAIH,EAAW75X,EAAQg6X,EAChC,GACC,CACD/qW,IAAK,mBACL1+B,MAAO,SAA0ByP,EAAQwzR,GACvC,IAAI4mD,EAAW5mD,EAAM4mD,SACjBmX,EAAOnX,EAAS/gV,EAChBm4V,EAAOpX,EAAS9gV,EACpB,GAAIs4U,IAAW2f,IAAS3f,IAAW4f,GAAO,CACxC,IAAI0oC,EAAiB3oC,EAAKzwH,OAASywH,EAAOC,EAAK1wH,OAAS0wH,OAAO3sU,EAC/D,QAAuBA,IAAnBq1W,EACF,OAEF,IAAIC,EAAa5oC,EAAKzwH,OAAS0wH,EAAOA,EAAK1wH,OAASywH,OAAO1sU,EACvDu1W,EAAwBF,EAAep5J,OACzC/mO,EAASqgY,EAAsBrgY,OAC/BxJ,EAAQ6pY,EAAsB7pY,MAC9B00O,EAAQm1J,EAAsBn1J,MAC9B9D,EAAUi5J,EAAsBj5J,QAC9B8wH,EAAgBpS,IAAmBrsD,EAAM3uO,KAAMu1R,GACnD,OAAO,IAAIy/C,EAAW75X,EAAQ,IAAc,IAAc,IAAc,IAAc,IAAc,CAClG8gO,OAAQo5J,EAAejsQ,MACvBh/F,IAAKkrW,EAAWlsQ,OACfl0H,EAAS,CACVA,OAAQA,GACN,CAAC,QAAc8qB,IAAVt0B,EAAsB,CAC7BA,MAAOA,GACL,CAAC,GAAI00O,EAAQ,CACfA,MAAOA,GACL,CAAC,QAAgBpgN,IAAZs8M,EAAwB,CAC/BA,QAASA,GACP,CAAC,GAAI8wH,EAAchjW,OAAS,CAC9BisO,QAAS+2H,GACP,CAAC,GACP,CACA,OAAO,IACT,KAEK4nC,CACT,CAnIqC,CAmInCn8B,KC3IE,IAAY,CAAC,QAAS,MAC1B,SAAS,IAAQ3qU,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CAEpV,SAAS,IAAa8iN,GAAW,IAAIC,EACrC,WAAuC,GAAuB,oBAAZ1kH,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFxqD,QAAQ10E,UAAU03C,QAAQh2C,KAAKq9H,QAAQC,UAAUtqD,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO1wE,KAAK,OAAO,CAAO,CAAE,CADvQ,GAA6B,OAAO,WAAkC,IAAsC0O,EAAlCgxO,GAAQ,QAAgBF,GAAkB,GAAIC,EAA2B,CAAE,IAAIE,GAAY,QAAgB7jP,MAAM8E,YAAa8N,EAASqsH,QAAQC,UAAU0kH,EAAOhjP,UAAWijP,EAAY,MAASjxO,EAASgxO,EAAMviP,MAAMrB,KAAMY,WAAc,OAAO,QAA2BZ,KAAM4S,EAAS,CAAG,CAOja,IAAIq5X,IAAkC,SAAUp8B,IACrD,QAAUo8B,EAAoBp8B,GAC9B,IAAInuW,EAAS,IAAauqY,GAC1B,SAASA,EAAmBr6X,EAAQkC,GAClC,IAAIy2X,EAAoBC,EAAeC,EACnChqY,GACJ,QAAgBT,KAAMisY,IACtBxrY,EAAQiB,EAAOE,KAAK5B,KAAM4R,IACpBkC,UAAYA,EAClBrT,EAAMqT,UAAY80T,GAAU90T,GAC5B,IAAI42X,EAA4D,QAA7CH,EAAqB9pY,EAAMqT,UAAUi1N,UAAuC,IAAvBwhK,EAAgCA,EAAqB,MAAC9zW,OAAWA,GAEzI,OADAh2B,EAAMqT,UAAUi1N,GAAK,CAAsC,QAApCyhK,EAAgBE,EAAY,UAAkC,IAAlBF,EAA2BA,EAAgB12X,EAAU3T,GAA0C,QAArCsqY,EAAiBC,EAAY,UAAmC,IAAnBD,EAA4BA,EAAiB32X,EAAUunC,OAC1N56C,CACT,CAqCA,OApCA,QAAawrY,EAAoB,CAAC,CAChCprW,IAAK,QACL1+B,MAAO,WACL,OAAO,IAAI8pY,EAAmB,KAAMrjE,GAAU5oU,KAAK8T,WACrD,GACC,CACD+sB,IAAK,kBACL1+B,MAAO,WACL,IAAIo5X,EACJ,OAAO,IAAI50V,IAAI,CAAC3mC,KAAK8T,UAAUunC,MAAOr7C,KAAK8T,UAAU3T,IAAIoT,QAAO,QAAwE,QAApDgoX,EAAwBv7X,KAAK8T,UAAUg5N,eAA+C,IAA1ByuJ,EAAmCA,EAAwB,KAC7M,GACC,CACD16V,IAAK,iBACL1+B,MAAO,WACL,OAAO,IAAIwkC,IAAI3mC,KAAK8T,UAAUi1N,GAChC,GACC,CACDloM,IAAK,OACL1+B,MAAO,WACL,MAAO,kBAAkBoR,OAAO,GAAMvT,KAAK8T,WAC7C,GACC,CACD+sB,IAAK,WACL1+B,MAAO,WACL,IAAIwoY,EAAkB3qY,KAAK8T,UACzBunC,EAAQsvV,EAAgBtvV,MAGtBzoC,EAlDV,SAAuBlK,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAkDte,CAAc,CACzBC,KAAM,QACNsC,EAJK0/X,EAAgBxqY,GAKrB+K,EAAGmwC,IAJI,OAAyBsvV,EAAiB,MAMnD,OAAO/3X,CACT,KAEKq5X,CACT,CAnD6C,CAmD3C38B,KC/DF,SAAS,IAAQ3qU,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CACzf,SAAS,IAAag7O,GAAW,IAAIC,EACrC,WAAuC,GAAuB,oBAAZ1kH,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFxqD,QAAQ10E,UAAU03C,QAAQh2C,KAAKq9H,QAAQC,UAAUtqD,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO1wE,KAAK,OAAO,CAAO,CAAE,CADvQ,GAA6B,OAAO,WAAkC,IAAsC0O,EAAlCgxO,GAAQ,QAAgBF,GAAkB,GAAIC,EAA2B,CAAE,IAAIE,GAAY,QAAgB7jP,MAAM8E,YAAa8N,EAASqsH,QAAQC,UAAU0kH,EAAOhjP,UAAWijP,EAAY,MAASjxO,EAASgxO,EAAMviP,MAAMrB,KAAMY,WAAc,OAAO,QAA2BZ,KAAM4S,EAAS,CAAG,CAUja,IAAIs5X,IAA0B,SAAUr8B,IAC7C,QAAUq8B,EAAYr8B,GACtB,IAAInuW,EAAS,IAAawqY,GAC1B,SAASA,EAAWt6X,EAAQkC,EAAWq4X,GACrC,IAAI1rY,EAKJ,OAJA,QAAgBT,KAAMksY,IACtBzrY,EAAQiB,EAAOE,KAAK5B,KAAM4R,IACpBkC,UAAYA,EAClBrT,EAAM0rY,UAAYA,EACX1rY,CACT,CA0FA,OAzFA,QAAayrY,EAAY,CAAC,CACxBrrW,IAAK,QACL1+B,MAAO,WACL,OAAO,IAAI+pY,EAAW,KAAMtjE,GAAU5oU,KAAK8T,WAAY9T,KAAKmsY,UAC9D,GACC,CACDtrW,IAAK,kBACL1+B,MAAO,WACL,OAAO,IAAIwkC,IAAI,CAAC3mC,KAAK8T,UAAUq+O,QACjC,GACC,CACDtxN,IAAK,iBACL1+B,MAAO,WACL,OAAO,IAAIwkC,IAAI3mC,KAAK8T,UAAUi1N,GAAK,GAAM/oO,KAAK8T,UAAUi1N,IAAM/oO,KAAK8T,UAAUwlB,KAAKsmG,OACpF,GACC,CACD/+F,IAAK,OACL1+B,MAAO,WACL,MAAO,UAAUoR,OAAO,GAAM,CAC5BO,UAAW9T,KAAK8T,UAChBq4X,UAAWnsY,KAAKmsY,YAEpB,GACC,CACDtrW,IAAK,WACL1+B,MAAO,WACL,IAAIiqY,EACJ,GAAIpsY,KAAK8T,UAAUwlB,KAAKsmG,OAEtBwsQ,EAAU,IAAc,CACtB5rW,OAAQxgC,KAAK8T,UAAUwlB,KAAKsmG,QAC3B5/H,KAAK8T,UAAUi1N,GAAK,CACrBA,GAAI,GAAM/oO,KAAK8T,UAAUi1N,KACvB,CAAC,OACA,CAEL,IAAIsjK,EAASrsY,KAAK8T,UAAUi1N,GACvB,GAASsjK,KACZ,ItIGsB,wIsIFtBA,EAAS,WAEXD,EAAU,CACRrjK,GAAI,CAACsjK,GAET,CACA,OAAO,IAAc,IAAc,CACjC1jY,KAAM,SACN2wB,KAAMt5B,KAAKmsY,UACXtrW,IAAK7gC,KAAK8T,UAAUwlB,KAAKuH,IACzB++F,OAAQ,CAAC5/H,KAAK8T,UAAUq+O,SACvBi6I,GAAUpsY,KAAK8T,UAAU6zD,QAAU,CACpCA,QAAS3nE,KAAK8T,UAAU6zD,SACtB,CAAC,EACP,IACE,CAAC,CACH9mC,IAAK,OACL1+B,MAAO,SAAcyP,EAAQwzR,EAAOtxR,EAAW4+P,GAC7C,IAAIvwC,EAAUijE,EAAM5lO,UAAU95C,KAAKy8M,QAEjC7oM,EADexlB,EACGwlB,KAChBgzW,EAAiB,KACrB,G/F/EC,SAAsBhzW,GAC3B,MAAO,SAAUA,CACnB,C+F6EUizW,CAAajzW,GAAO,CACtB,IAAIkzW,EAAaC,IAAWnzW,EAAK5T,KAAMy8M,GAClCqqK,IACHA,EAAa,IAAIvY,IAAW36V,EAAK5T,MACjCy8M,EAAQ5hO,KAAKisY,IAEf,IAAIE,EAAiBtnG,EAAM6uE,QAAQ,UAAU1gW,OAAOm/P,IACpD45H,EAAiB,IAAI18B,IAAW48B,EAAYE,EAAgBx+B,IAAep8H,OAAQszD,EAAM5lO,UAAU95C,KAAK6hX,qBACxGniG,EAAM5lO,UAAU95C,KAAK02W,YAAYsQ,GAAkBJ,CACrD,MAAO,G/FrFN,SAA2BhzW,GAChC,MAAO,UAAWA,CACpB,C+FmFiBqzW,CAAkBrzW,GAAO,CAClC,IAII61U,EAJA4O,EAAUzkV,EAAKqkH,MACnB7pI,EAAY,IAAc,CACxBi1N,GAAIg1I,GACHjqW,GAEH,IACEq7V,EAAU/pE,EAAMo6E,sBAAsB90C,GAAQqzC,GAAUA,EAC1D,CAAE,MAAO75W,KACP,MAAM,IAAI+jC,MtIlEX,2DAA4D10B,OsIkEDwqW,EtIlEc,8BsImE1E,CAEA,KADAuuB,EAAiBn9B,EAAQy9B,cAEvB,MAAM,IAAI3kW,MtIpEb,SAA0BhmC,GAC/B,MAAO,iCAAkCsR,OAAOtR,EAAM,kCAAqC,oDAC7F,CsIkE0B,CAA6B87W,GAEjD,CACA,OAAO,IAAImuB,EAAWt6X,EAAQkC,EAAWw4X,EAAepQ,YAC1D,KAEKgQ,CACT,CArGqC,CAqGnC58B,KC/GE,IAAY,CAAC,YACjB,SAAS,IAAQ3qU,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CAEpV,SAAS,IAAa8iN,GAAW,IAAIC,EACrC,WAAuC,GAAuB,oBAAZ1kH,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFxqD,QAAQ10E,UAAU03C,QAAQh2C,KAAKq9H,QAAQC,UAAUtqD,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO1wE,KAAK,OAAO,CAAO,CAAE,CADvQ,GAA6B,OAAO,WAAkC,IAAsC0O,EAAlCgxO,GAAQ,QAAgBF,GAAkB,GAAIC,EAA2B,CAAE,IAAIE,GAAY,QAAgB7jP,MAAM8E,YAAa8N,EAASqsH,QAAQC,UAAU0kH,EAAOhjP,UAAWijP,EAAY,MAASjxO,EAASgxO,EAAMviP,MAAMrB,KAAMY,WAAc,OAAO,QAA2BZ,KAAM4S,EAAS,CAAG,CAOja,IAAIi6X,IAAqC,SAAUh9B,IACxD,QAAUg9B,EAAuBh9B,GACjC,IAAInuW,EAAS,IAAamrY,GAC1B,SAASA,EAAsBj7X,EAAQkC,GACrC,IAAIy2X,EAAoBC,EAAeC,EACnChqY,GACJ,QAAgBT,KAAM6sY,IACtBpsY,EAAQiB,EAAOE,KAAK5B,KAAM4R,IACpBkC,UAAYA,EAClBrT,EAAMqT,UAAY80T,GAAU90T,GAC5B,IAAI42X,EAA4D,QAA7CH,EAAqB9pY,EAAMqT,UAAUi1N,UAAuC,IAAvBwhK,EAAgCA,EAAqB,MAAC9zW,OAAWA,GAEzI,OADAh2B,EAAMqT,UAAUi1N,GAAK,CAAsC,QAApCyhK,EAAgBE,EAAY,UAAkC,IAAlBF,EAA2BA,EAAgB,OAA8C,QAArCC,EAAiBC,EAAY,UAAmC,IAAnBD,EAA4BA,EAAiB,SAC1MhqY,CACT,CAmCA,OAlCA,QAAaosY,EAAuB,CAAC,CACnChsW,IAAK,QACL1+B,MAAO,WACL,OAAO,IAAI0qY,EAAsB,KAAMjkE,GAAU5oU,KAAK8T,WACxD,GACC,CACD+sB,IAAK,kBACL1+B,MAAO,WACL,IAAIo5X,EACJ,OAAO,IAAI50V,IAAI,CAAC3mC,KAAK8T,UAAU2vN,UAAUlwN,QAAO,QAAwE,QAApDgoX,EAAwBv7X,KAAK8T,UAAUg5N,eAA+C,IAA1ByuJ,EAAmCA,EAAwB,KAC7L,GACC,CACD16V,IAAK,iBACL1+B,MAAO,WACL,OAAO,IAAIwkC,IAAI3mC,KAAK8T,UAAUi1N,GAChC,GACC,CACDloM,IAAK,OACL1+B,MAAO,WACL,MAAO,qBAAqBoR,OAAO,GAAMvT,KAAK8T,WAChD,GACC,CACD+sB,IAAK,WACL1+B,MAAO,WACL,IAAIwoY,EAAkB3qY,KAAK8T,UAGvBlB,EAjDV,SAAuBlK,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAiDte,CAAc,CACzBC,KAAM,WACNk3H,MAJW8qQ,EAAgBlnK,WACpB,OAAyBknK,EAAiB,MAKnD,OAAO/3X,CACT,KAEKi6X,CACT,CAjDgD,CAiD9Cv9B,KC3DE,IAAY,CAAC,aAAc,MAC/B,SAAS,IAAQ3qU,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CAEpV,SAAS,IAAa8iN,GAAW,IAAIC,EACrC,WAAuC,GAAuB,oBAAZ1kH,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFxqD,QAAQ10E,UAAU03C,QAAQh2C,KAAKq9H,QAAQC,UAAUtqD,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO1wE,KAAK,OAAO,CAAO,CAAE,CADvQ,GAA6B,OAAO,WAAkC,IAAsC0O,EAAlCgxO,GAAQ,QAAgBF,GAAkB,GAAIC,EAA2B,CAAE,IAAIE,GAAY,QAAgB7jP,MAAM8E,YAAa8N,EAASqsH,QAAQC,UAAU0kH,EAAOhjP,UAAWijP,EAAY,MAASjxO,EAASgxO,EAAMviP,MAAMrB,KAAMY,WAAc,OAAO,QAA2BZ,KAAM4S,EAAS,CAAG,CAOja,IAAIk6X,IAAuC,SAAUj9B,IAC1D,QAAUi9B,EAAyBj9B,GACnC,IAAInuW,EAAS,IAAaorY,GAC1B,SAASA,EAAwBl7X,EAAQkC,GACvC,IAAIy2X,EAAoBC,EAAeC,EACnChqY,GACJ,QAAgBT,KAAM8sY,IACtBrsY,EAAQiB,EAAOE,KAAK5B,KAAM4R,IACpBkC,UAAYA,EAClBrT,EAAMqT,UAAY80T,GAAU90T,GAC5B,IAAI42X,EAA4D,QAA7CH,EAAqB9pY,EAAMqT,UAAUi1N,UAAuC,IAAvBwhK,EAAgCA,EAAqB,MAAC9zW,OAAWA,GAEzI,OADAh2B,EAAMqT,UAAUi1N,GAAK,CAAsC,QAApCyhK,EAAgBE,EAAY,UAAkC,IAAlBF,EAA2BA,EAAgB12X,EAAU3T,GAA0C,QAArCsqY,EAAiBC,EAAY,UAAmC,IAAnBD,EAA4BA,EAAiB32X,EAAUi5X,YAC1NtsY,CACT,CAqCA,OApCA,QAAaqsY,EAAyB,CAAC,CACrCjsW,IAAK,QACL1+B,MAAO,WACL,OAAO,IAAI2qY,EAAwB,KAAMlkE,GAAU5oU,KAAK8T,WAC1D,GACC,CACD+sB,IAAK,kBACL1+B,MAAO,WACL,IAAIo5X,EACJ,OAAO,IAAI50V,IAAI,CAAC3mC,KAAK8T,UAAUi5X,WAAY/sY,KAAK8T,UAAU3T,IAAIoT,QAAO,QAAwE,QAApDgoX,EAAwBv7X,KAAK8T,UAAUg5N,eAA+C,IAA1ByuJ,EAAmCA,EAAwB,KAClN,GACC,CACD16V,IAAK,iBACL1+B,MAAO,WACL,OAAO,IAAIwkC,IAAI3mC,KAAK8T,UAAUi1N,GAChC,GACC,CACDloM,IAAK,OACL1+B,MAAO,WACL,MAAO,uBAAuBoR,OAAO,GAAMvT,KAAK8T,WAClD,GACC,CACD+sB,IAAK,WACL1+B,MAAO,WACL,IAAIwoY,EAAkB3qY,KAAK8T,UACzBi5X,EAAapC,EAAgBoC,WAG3Bn6X,EAlDV,SAAuBlK,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAkDte,CAAc,CACzBC,KAAM,aACNsC,EAJK0/X,EAAgBxqY,GAKrB+K,EAAG6hY,IAJI,OAAyBpC,EAAiB,MAMnD,OAAO/3X,CACT,KAEKk6X,CACT,CAnDkD,CAmDhDx9B,KC9DF,SAAS,IAAQ3qU,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CACzf,SAAS,IAAag7O,GAAW,IAAIC,EACrC,WAAuC,GAAuB,oBAAZ1kH,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFxqD,QAAQ10E,UAAU03C,QAAQh2C,KAAKq9H,QAAQC,UAAUtqD,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO1wE,KAAK,OAAO,CAAO,CAAE,CADvQ,GAA6B,OAAO,WAAkC,IAAsC0O,EAAlCgxO,GAAQ,QAAgBF,GAAkB,GAAIC,EAA2B,CAAE,IAAIE,GAAY,QAAgB7jP,MAAM8E,YAAa8N,EAASqsH,QAAQC,UAAU0kH,EAAOhjP,UAAWijP,EAAY,MAASjxO,EAASgxO,EAAMviP,MAAMrB,KAAMY,WAAc,OAAO,QAA2BZ,KAAM4S,EAAS,CAAG,CAOja,IAAIo6X,IAAkC,SAAUn9B,IACrD,QAAUm9B,EAAoBn9B,GAC9B,IAAInuW,EAAS,IAAasrY,GAC1B,SAASA,EAAmBp7X,EAAQkC,GAClC,IAAIrT,EAIJ,OAHA,QAAgBT,KAAMgtY,IACtBvsY,EAAQiB,EAAOE,KAAK5B,KAAM4R,IACpBkC,UAAYA,EACXrT,CACT,CAoDA,OAnDA,QAAausY,EAAoB,CAAC,CAChCnsW,IAAK,QACL1+B,MAAO,WACL,OAAO,IAAI6qY,EAAmB,KAAMpkE,GAAU5oU,KAAK8T,WACrD,GACC,CACD+sB,IAAK,gBACL1+B,MAAO,SAAuBy9H,GAC5B,IAAI27P,EACJv7X,KAAK8T,UAAUg5N,QAAUzqM,IAA6D,QAApDk5V,EAAwBv7X,KAAK8T,UAAUg5N,eAA+C,IAA1ByuJ,EAAmCA,EAAwB,IAAIhoX,OAAOqsH,IAAS,SAAU75G,GACrL,OAAOA,CACT,GACF,GACC,CACD8a,IAAK,iBACL1+B,MAAO,WAEP,GACC,CACD0+B,IAAK,kBACL1+B,MAAO,WACL,IAAI8qY,EACJ,OAAO,IAAItmW,IAAI,CAAC3mC,KAAK8T,UAAUo5X,MAAOltY,KAAK8T,UAAU3R,OAAOoR,QAAO,QAAyE,QAArD05X,EAAyBjtY,KAAK8T,UAAUg5N,eAAgD,IAA3BmgK,EAAoCA,EAAyB,KACnN,GACC,CACDpsW,IAAK,OACL1+B,MAAO,WACL,MAAO,kBAAkBoR,OAAO,GAAMvT,KAAK8T,WAC7C,GACC,CACD+sB,IAAK,WACL1+B,MAAO,WACL,IAAIwoY,EAAkB3qY,KAAK8T,UACzBo5X,EAAQvC,EAAgBuC,MACxB/qY,EAAQwoY,EAAgBxoY,MACxB2qO,EAAU69J,EAAgB79J,QAC1B4G,EAAQi3J,EAAgBj3J,MACxBzmL,EAAK09U,EAAgB19U,GACvB,OAAO,IAAc,IAAc,IAAc,CAC/CtkD,KAAM,QACNk3H,MAAOqtQ,EACP/qY,MAAOA,QACIs0B,IAAVi9M,EAAsB,CACvBA,MAAOA,GACL,CAAC,QAAWj9M,IAAPw2B,EAAmB,CAC1BA,GAAIA,GACF,CAAC,QAAgBx2B,IAAZq2M,EAAwB,CAC/BA,QAASA,GACP,CAAC,EACP,KAEKkgK,CACT,CA9D6C,CA8D3C19B,KCzEF,SAAS,IAAa5rH,GAAW,IAAIC,EACrC,WAAuC,GAAuB,oBAAZ1kH,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFxqD,QAAQ10E,UAAU03C,QAAQh2C,KAAKq9H,QAAQC,UAAUtqD,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO1wE,KAAK,OAAO,CAAO,CAAE,CADvQ,GAA6B,OAAO,WAAkC,IAAsC0O,EAAlCgxO,GAAQ,QAAgBF,GAAkB,GAAIC,EAA2B,CAAE,IAAIE,GAAY,QAAgB7jP,MAAM8E,YAAa8N,EAASqsH,QAAQC,UAAU0kH,EAAOhjP,UAAWijP,EAAY,MAASjxO,EAASgxO,EAAMviP,MAAMrB,KAAMY,WAAc,OAAO,QAA2BZ,KAAM4S,EAAS,CAAG,CAOja,IAAIu6X,IAAmC,SAAUt9B,IACtD,QAAUs9B,EAAqBt9B,GAC/B,IAAInuW,EAAS,IAAayrY,GAC1B,SAASA,EAAoBv7X,EAAQkC,GACnC,IAAIrT,EAIJ,OAHA,QAAgBT,KAAMmtY,IACtB1sY,EAAQiB,EAAOE,KAAK5B,KAAM4R,IACpBkC,UAAYA,EACXrT,CACT,CA8BA,OA7BA,QAAa0sY,EAAqB,CAAC,CACjCtsW,IAAK,QACL1+B,MAAO,WACL,OAAO,IAAIgrY,EAAoB,KAAMvkE,GAAU5oU,KAAK8T,WACtD,GACC,CACD+sB,IAAK,kBACL1+B,MAAO,WACL,OAAO,IAAIwkC,GACb,GACC,CACD9F,IAAK,iBACL1+B,MAAO,WACL,OAAO,IAAIwkC,GACb,GACC,CACD9F,IAAK,OACL1+B,MAAO,WACL,MAAO,mBAAmBoR,OAAO,GAAMvT,KAAK8T,WAC9C,GACC,CACD+sB,IAAK,WACL1+B,MAAO,WACL,MAAO,CACLwG,KAAM,SACN27B,KAAMtkC,KAAK8T,UAAUixN,OAEzB,KAEKooK,CACT,CAxC8C,CAwC5C79B,KCjDF,SAAS,IAA2BlqV,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAClL,SAAS,IAAQv0L,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CA+Bzf,SAAS0kY,IAAa1nX,GAEpB,IAAI2nX,EAAe,EA2HnB,OAvHA,SAASC,EAAS5sV,EAAMouI,GAMlB,IAUIy+M,EAAoBC,EAQpBC,EAuBFC,EAlBN,GA5BIhtV,aAAgBuzU,MAGbvzU,EAAK+tT,aAAgBH,IAAU5tT,EAAKh7B,QACvCA,EAAKnlB,KAAKuuL,GAMVA,EALc,CACZ7sL,KAAM,KACNovB,OAAQy9J,EAAW7sL,KACnB6R,UAAW,MAKb4sC,aAAgBwyU,MACdxyU,EAAK9uC,kBAAkBqiX,MAAenlM,EAAWz9J,QAGnDy9J,EAAW96I,OAAS,IAAc,IAAc,CAAC,EAAgD,QAA5Cu5V,EAAqBz+M,EAAW96I,cAA2C,IAAvBu5V,EAAgCA,EAAqB,CAAC,GAAI,CAAC,EAAG,CACrK9mV,MAAO/F,EAAKitV,yBAGbH,EAAwB1+M,EAAWh7K,WAAWvT,KAAKc,MAAMmsY,GAAuB,QAAmB9sV,EAAKktV,oBAAmB,OAI3HH,EAAyB3+M,EAAWh7K,WAAWvT,KAAKc,MAAMosY,GAAwB,QAAmB/sV,EAAKktV,wBAG3GltV,aAAgB4wU,IAYlB,OAXKxiM,EAAW7sL,OACd6sL,EAAW7sL,KAAO,QAAQsR,OAAO85X,OAE9Bv+M,EAAWz9J,QAAUy9J,EAAWh7K,UAAUjT,OAAS,GACtD6kB,EAAKnlB,KAAKuuL,GACVpuI,EAAKh7B,KAAOopK,EAAW7sL,MAEvBy+C,EAAKh7B,KAAOopK,EAAWz9J,YAEzB3L,EAAKnlB,KAAKc,MAAMqkB,GAAM,QAAmBg7B,EAAKmtV,aAWhD,IAPIntV,aAAgBozU,KAAiBpzU,aAAgBqzU,KAAgBrzU,aAAgBmqV,KAAqBnqV,aAAgB2+T,KAAc3+T,aAAgBgkU,KAAiBhkU,aAAgB8qV,KAAgB9qV,aAAgB0vU,KAAiB1vU,aAAgBwrV,KAAcxrV,aAAgB46U,KAAuB56U,aAAgBk5U,KAA8Bl5U,aAAgBwqV,KAAqBxqV,aAAgBqqV,KAAwBrqV,aAAgB4pV,KAAwB5pV,aAAgBurV,KAAsBvrV,aAAgBmsV,KAAyBnsV,aAAgBosV,KAA2BpsV,aAAgBmzU,KAAkBnzU,aAAgBysV,KAAuBzsV,aAAgBssV,KAAsBtsV,aAAgBkqV,MACzsB97M,EAAWh7K,UAAUvT,KAAKmgD,EAAKmtV,aAE7BntV,aAAgBquU,KAAWruU,aAAgB0vT,KAAgB1vT,aAAgB+qV,KAAc/qV,aAAgBs5U,KAAat5U,aAAgB0qV,OAEvIsC,EAAyB5+M,EAAWh7K,WAAWvT,KAAKc,MAAMqsY,GAAwB,QAAmBhtV,EAAKmtV,aAEzGntV,aAAgBkvT,IAClB,GAAI9gL,EAAWz9J,QAA0C,IAAhCy9J,EAAWh7K,UAAUjT,OAC5C6/C,EAAKy7U,UAAUrtM,EAAWz9J,aACrB,GAAIqvB,EAAK9uC,kBAAkBg+V,IAGhClvT,EAAKy7U,UAAUrtM,EAAW7sL,UACrB,CAQL,GAPK6sL,EAAW7sL,OACd6sL,EAAW7sL,KAAO,QAAQsR,OAAO85X,MAInC3sV,EAAKy7U,UAAUrtM,EAAW7sL,MAEC,IAAvBy+C,EAAK01U,cACP1wW,EAAKnlB,KAAKuuL,GAMVA,EALe,CACb7sL,KAAM,KACNovB,OAAQy9J,EAAW7sL,KACnB6R,UAAW,GAIjB,CAEF,OAAQ4sC,EAAK01U,eACX,KAAK,EAEC11U,aAAgBkvT,OAAgB9gL,EAAWz9J,QAAUy9J,EAAWh7K,UAAUjT,OAAS,IAErF6kB,EAAKnlB,KAAKuuL,GAEZ,MACF,KAAK,EACHw+M,EAAS5sV,EAAK7wC,SAAS,GAAIi/K,GAC3B,MACF,QAESA,EAAW7sL,OACd6sL,EAAW7sL,KAAO,QAAQsR,OAAO85X,MAEnC,IAAIh8W,EAASy9J,EAAW7sL,MACnB6sL,EAAWz9J,QAAUy9J,EAAWh7K,UAAUjT,OAAS,EACtD6kB,EAAKnlB,KAAKuuL,GAEVz9J,EAASy9J,EAAWz9J,OAEtB,IACEktM,EADEC,EAAY,IAA2B99K,EAAK7wC,UAEhD,IACE,IAAK2uN,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAOlDg1V,EANY/uK,EAAMp8N,MACF,CACdF,KAAM,KACNovB,OAAQA,EACRvd,UAAW,IAGf,CACF,CAAE,MAAO0zB,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,EAIR,CAEF,CCnKA,SAAS,IAA2B+hB,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAS3K,SAAS40K,IAAc5uI,GAC5B,MAAe,QAAXA,GAA+B,SAAXA,GAAqBk0E,IAAYl0E,GAEhD,SAEF,QACT,CAiBA,SAAS6uI,IAAiB3oG,EAAO3xI,GAC/B,IAAIinK,EAAQt1B,EAAMs1B,MAChBluN,EAAS44L,EAAM54L,OACf18F,EAAQs1R,EAAMt1R,MACd0vD,EAAY4lO,EAAM5lO,UACpB,GAAI4lO,EAAMkoF,gBAAgB75N,GAAU,CAClC,IAAIu6O,EACAp3D,EAAWlc,EAAMjnK,GACjBg/K,EAAcsyC,IAAkB,QAAS,KAAMv4Q,EAAQinD,GACvD1hG,EAAQ,IAAc6kR,EAAUpqO,EAAQ,CAC1Cy9O,gBAAgB,EAChBE,oBAAgC1zT,IAAhBg8S,KAA+BA,IAE7C3iU,EAAM0vD,UAAUg3M,cAAc/iH,GAAS1hG,QAEzCA,EAAQ,GAAQA,GAASA,EAAM1oC,KAAK,MAAQ0oC,EAE5CA,GAAS,MAAMx+C,OAAOzD,EAAM0vD,UAAUg3M,cAAc/iH,GAAS1hG,OAC7DjiD,EAAM0vD,UAAUg3M,cAAc/iH,GAAS1hG,MAAQ,MAEjD,IAAIk6R,EAAc84B,IAAkB,cAAenuC,EAAS7nJ,OAAQviF,EAAQinD,GACxEsgH,EAA6B,OAApB6iE,EAAS7nJ,QAAkBw8I,GAAyD,QAAxCyiE,EAAmBp3D,EAAS7nJ,cAAyC,IAArBi/M,OAA8B,EAASA,EAAiBj6H,OAAQvnK,EAAOuiF,OAAOglF,QAAQ,GAC3L8xG,EAAa,GAAS,CAAC,SAAU,SAAU55B,GAAe,SAAW,SACzEzsR,EAAUg3M,cAAc/iH,IAAW,OAAgB,CACjD1hG,MAA2B,OAApB6kR,EAAS7nJ,OAAkBh9H,EAAQ,KAC1CszT,cAAezuC,GACdivC,EAAwB,UAAZpyN,EAAsB,GAAK,CAACw6O,IAAoB7oG,EAAO3xI,EAASsgH,IACjF,CACF,CACA,SAASk6H,IAAoB7oG,EAAO3xI,EAASsgH,GAC3C,IAAIq8D,EAAuB,QAAZ38K,EAAoB,SAAW,QAC9C,MAAO,CACLsgH,OAAQA,EACRuyG,WAAYlhF,EAAMt1R,MAAM0vD,UAAUmnT,WAAW3kX,IAAIouU,GAAYhrC,EAAMt1R,MAAMkjW,iBAAiB5iC,QAAY35S,EACtGstS,KAAM,GAEV,CACA,SAASmqE,IAAe9oG,EAAO3xI,GAC7B,IAAI3jJ,EAAQs1R,EAAMt1R,MAClB,GAAIA,EAAM0vD,UAAUukQ,KAAKtwK,GAAU,CACjC,IAAI42N,EAAmBjlF,EAAM5lO,UAC3Bg3M,EAAgB6zG,EAAiB7zG,cACjCnvO,EAAUgjV,EAAiBhjV,QAE7B,GADAA,EAAQwsO,KAAKpgH,GAAW8zN,IAAkBlgV,EAASosH,GACrB,WAA1BpsH,EAAQwsO,KAAKpgH,GAAuB,CAEtC,IAGEwvE,EAHEsiJ,EAA4B,MAAZ9xN,EAAkB,SAAW,MAC7CmyN,EAAepvG,EAAc+uG,GAC7BriJ,EAAa,IAA2BpzN,EAAM0vD,UAAUukQ,KAAKtwK,IAEjE,IACE,IAAKyvE,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,CACrD,IAAI61V,EACAC,EAAgBnrK,EAAO9gO,MACvB0jX,EAAaioB,IAAcM,EAAcpsY,IAAI,WACM,QAAtDmsY,EAAwBvoB,EAAaC,UAAmD,IAA1BsoB,IAA2DvoB,EAAaC,GAAc,CAACooB,IAAoB7oG,EAAOmgF,GAAe,KAEhM,IAAI8oB,EAAWluB,IAAaiuB,EAAe,OAAQhpG,EAAM54L,OAAQ,CAC/DuiF,QAAQ,IAENs/M,GAEFzoB,EAAaC,GAAY,GAAG9hD,KAAKxjU,KAAK8tY,GAExCD,EAActtB,eAAgB,CAChC,CACF,CAAE,MAAOt5U,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACF,CAGF,CACF,CC9GA,SAAS,IAA2B+hB,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAuB3K,SAASo1K,IAAwBlpG,GACtC,IACE7mE,EADEC,EAAY,IAA2B4mE,EAAMv1R,UAEjD,IACE,IAAK2uN,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CACtCimL,EAAMp8N,MACZqlY,iBACR,CACF,CAAE,MAAOhgW,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACF,CAIA,SAASkrY,IAAiCnpG,EAAO8hF,GAQ/C,IAIIllM,EAGFihD,EAPEmtG,EAAW62C,IAA8BC,GACzCzzN,EAAU08K,IAAwBC,GAClC/oS,EAAU+9P,EAAM5lO,UAAUn4B,QAC1BmnW,EAAiBppG,EAAM5lO,UAAUmnT,WAGjCzjJ,EAAa,IAA2BkiE,EAAMv1R,UAElD,IACE,IAAKqzN,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,CACrD,IAAIm2V,EAEAC,EADSzrK,EAAO9gO,MACGq9D,UAAUmnT,WAAWlZ,gBAAgBr9B,GACxDu+D,EAAoE,QAApDF,EAAwBpnW,EAAQvuB,MAAM26I,UAAgD,IAA1Bg7O,EAAmCA,EAAwBpnB,IAAoB5zN,EAAS2xI,GACxK,GAAqB,gBAAjBupG,GAAsD,SAApBD,EAAUvsY,MAAkB,CAGhE6/K,OAAavrJ,EACb,KACF,CACA,GAAIurJ,EAAY,CACd,GAAqB,gBAAjB2sN,GAAkC3sN,EAAW7/K,QAAUusY,EAAUvsY,MAAO,CAG1E6/K,OAAavrJ,EACb,KACF,CACAurJ,EAAagsL,IAAwBhsL,EAAY0sN,EAAWt+D,EAAU,GACxE,MACEpuJ,EAAa0sN,CAEjB,CACF,CAAE,MAAOlnW,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACA,GAAI2+K,EAAY,CAEd,IACEilD,EADEC,EAAa,IAA2Bk+D,EAAMv1R,UAElD,IACE,IAAKq3N,EAAWppN,MAAOmpN,EAASC,EAAWt4M,KAAK0pB,MAAO,CACrD,IAAIxoC,EAAQm3N,EAAO9kO,MACnBijS,EAAM4pF,aAAal/W,EAAMmkW,QAAQ7jC,GAAWhrC,EAAM6uE,QAAQiT,IAC1Dp3W,EAAM0vD,UAAUmnT,WAAWzkX,IAAIkuU,EAAU,UAAU,EACrD,CACF,CAAE,MAAO5oS,GACP0/L,EAAWhjO,EAAEsjC,EACf,CAAE,QACA0/L,EAAW7jO,GACb,CACAmrY,EAAe9gC,gBAAgBwZ,EAAgBllM,EACjD,MACEwsN,EAAe9gC,gBAAgBwZ,EAAgB,CAC7C1xC,UAAU,EACVrzU,WAAOs0B,GAGb,CAwBA,SAASm4W,IAAgBxpG,EAAOgrC,GAC9B,IAAI38K,EAAuB,UAAb28K,EAAuB,IAAM,IACvC5jO,EAAS44L,EAAM54L,OACf2vQ,EAAiB/2E,EAAMosE,kBAAkB/9M,GAC7C,GAAI0oN,EAAgB,CAClB,IAAI59C,EAAY49C,EAAen6W,IAAI,QAC/B2lD,EAAQw0T,EAAen6W,IAAI,SAC/B,GAAI4+U,IAAkBriB,GAAY,CAChC,IAAIj6R,EAAOy4T,IAA0BvwP,EAAO4lK,KAAMg+D,GAClD,OAAIiD,IAAc1rR,IAAU40S,IAAOj4T,GAE1B,OAEAA,CAEX,CACE,OAAOq4T,IAA4BnwP,EAAO4lK,KAAMg+D,EAEpD,CAAO,GAAIhrC,EAAMktE,eAAgC,QAAfltE,EAAM3uO,KAEtC,OAAOkmS,IAA4BnwP,EAAO4lK,KAAMg+D,GAEhD,IAAIn8N,EAAQ8oP,IAA0BvwP,EAAO4lK,KAAMg+D,GACnD,OAAOmsB,IAAOtoP,GAASA,EAAMxsD,KAAOwsD,CAExC,CCpJA,SAAS,IAA2B7uF,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAClL,SAAS,IAAawqB,GAAW,IAAIC,EACrC,WAAuC,GAAuB,oBAAZ1kH,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFxqD,QAAQ10E,UAAU03C,QAAQh2C,KAAKq9H,QAAQC,UAAUtqD,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO1wE,KAAK,OAAO,CAAO,CAAE,CADvQ,GAA6B,OAAO,WAAkC,IAAsC0O,EAAlCgxO,GAAQ,QAAgBF,GAAkB,GAAIC,EAA2B,CAAE,IAAIE,GAAY,QAAgB7jP,MAAM8E,YAAa8N,EAASqsH,QAAQC,UAAU0kH,EAAOhjP,UAAWijP,EAAY,MAASjxO,EAASgxO,EAAMviP,MAAMrB,KAAMY,WAAc,OAAO,QAA2BZ,KAAM4S,EAAS,CAAG,CAExa,SAAS,IAAQ+xB,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAwBlf,SAASmmY,IAAmBj4D,EAAUrkU,EAAM26I,GACjD,OAAO,IAAQ36I,EAAM,IAAc,CACjCgjJ,OAAQ,MAAMhiJ,OAAO,IAAQqjU,KAC5B1pL,QAAiCA,EAAM,CAAC,GAC7C,CACO,IAAI4hP,IAA0B,SAAUC,IAC7C,QAAUD,EAAYC,GACtB,IAAIrtY,EAAS,IAAaotY,GAC1B,SAASA,EAAWz7K,EAAMzhN,EAAQ20X,EAAiB/5R,GACjD,IAAI/rG,EAMJ,OALA,QAAgBT,KAAM8uY,IACtBruY,EAAQiB,EAAOE,KAAK5B,KAAMqzN,EAAM,QAASzhN,EAAQ20X,EAAiB/5R,EAAQ6mH,EAAKhsL,UACzEv3B,MAAQk/X,IAAW37K,EAAKA,MAAM,QAAuB5yN,GAAQA,EAAMwzW,QAAQ,cAAUx9U,EAAW+1E,GACtG/rG,EAAMoP,SAAW,CAACpP,EAAMqP,OACxBrP,EAAMi6T,MAAQj6T,EAAMwuY,UAAU57K,EAAKqnG,OAC5Bj6T,CACT,CAydA,OAxdA,QAAaquY,EAAY,CAAC,CACxBjuW,IAAK,YACL1+B,MAAO,SAAmBu4T,GAExB,IAAK8sB,IAAe9sB,GAClB,MAAO,CACLA,MAAO16T,KAAKkvY,kBAAkBx0E,EAAO,UAGzC,IAGEn8F,EAFE4wK,EAAkB,CAAC,EACnB3wK,EAAY,IAFD,GAAKk8F,IAIpB,IACE,IAAKl8F,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIm7G,EAAU8qE,EAAMp8N,MACpB,IAAK,CAAC6pU,GAAKC,IAAQ9mU,SAASsuJ,GAAU,CAEpC,IAAS,IAAgCA,EAAS,UAClD,KACF,CACA,IAAImjL,EAAWlc,EAAMjnK,GACrB,QAAuBh9H,IAAnBmgT,EAAS/2M,MAAqB,CAChC,IAAS,IAA0B+2M,EAAUnjL,IAC7C,KACF,CACA07O,EAAgB17O,GAAWzzJ,KAAKkvY,kBAAkBt4D,EAAUnjL,EAC9D,CACF,CAAE,MAAOjsH,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACA,OAAO8rY,CACT,GACC,CACDtuW,IAAK,oBACL1+B,MAAO,SAA2By0U,EAAUnjL,GAG1C,IAAI4xN,EAAgBl6B,IAAavU,EAAUnjL,GAM3C,OALI4xN,EAAct2L,OAChBs2L,EAAct2L,OAASsjJ,IAAegzC,EAAct2L,QAClB,OAAzBs2L,EAAct2L,SACvBs2L,EAAct2L,OAAS,MAElBs2L,CACT,GACC,CACDxkV,IAAK,kBACL1+B,MAAO,SAAyBsxJ,GAC9B,QAASzzJ,KAAK06T,MAAMjnK,EACtB,GACC,CACD5yH,IAAK,WACL1+B,MAAO,SAAkBsxJ,GACvB,OAAOzzJ,KAAK06T,MAAMjnK,EACpB,GACC,CACD5yH,IAAK,YACL1+B,MAAO,WACLnC,KAAKw/D,UAAU95C,KAAO,IAAW1lB,MACjCA,KAAK8P,MAAM4vT,WACb,GACC,CACD7+R,IAAK,kBACL1+B,MAAO,WACLmsY,IAAwBtuY,KAC1B,GACC,CACD6gC,IAAK,kBACL1+B,MAAO,WAILnC,KAAK8P,MAAM43X,kBACX1nY,KAAKw/D,UAAUi/R,UAAYz+V,KAAK8P,MAAM0vD,UAAUi/R,SAClD,GACC,CACD59T,IAAK,iBACL1+B,MAAO,WACLnC,KAAK8P,MAAM+3X,gBACb,GACC,CACDhnW,IAAK,sBACL1+B,MAAO,WACLnC,KAAK8P,MAAM63X,sBF5HV,SAA2BviG,GAChC,IACE7mE,EADEC,EAAY,IAA2BmwG,KAE3C,IACE,IAAKnwG,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAE3Cy1V,IAAiB3oG,EADH7mE,EAAMp8N,MAGxB,CAAE,MAAOqlC,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACA6qY,IAAe9oG,EAAO,KACtB8oG,IAAe9oG,EAAO,IACxB,CE8GMgqG,CAAkBpvY,KACpB,GACC,CACD6gC,IAAK,mCACL1+B,MAAO,SAA0Cm2M,GAC/C,OAAOt4M,KAAK8P,MAAMu/X,iCAAiC/2L,EACrD,GACC,CACDz3K,IAAK,kBACL1+B,MAAO,WAEL,OADAnC,KAAK8P,MAAMo5X,kBACJ,EACT,GACC,CACDroW,IAAK,wBACL1+B,MAAO,SAA+BujB,GACpC,OAAO1lB,KAAK8P,MAAMw/X,sBAAsB5pX,EAC1C,GACC,CACDmb,IAAK,wBACL1+B,MAAO,WACL,IAEE8gO,EAFEssK,EAAe,CAAC,EAChBrsK,EAAa,IAA2ByrG,KAE5C,IACE,IAAKzrG,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,CACrD,IAEE2uL,EAFExzE,EAAUwvE,EAAO9gO,MACjB+kO,EAAa,IAA2Bi+I,KAE5C,IACE,IAAKj+I,EAAWppN,MAAOmpN,EAASC,EAAWt4M,KAAK0pB,MAAO,CACrD,IAAIutU,EAAa5+I,EAAO9kO,MACpBqtY,EAAwBxvY,KAAKw/D,UAAUg3M,cAAc/iH,GACrD0yN,EAAkBqpB,EAAsB3pB,GACxCR,EAAgBmqB,EAAsBnqB,cAC1C,GAAIA,EAAe,CACjB,IAAI1+C,EAAco+C,IAAkB,cAAeM,EAAct2L,OAAQ/uL,KAAKwsG,OAAQinD,GACtF,GAAI,CAAC,QAAS,UAAUtuJ,SAASwhU,GAAc,CAC7C,IAAI8oE,EACAlqB,EAAgBT,IAAiBrxN,EAASkzK,GACS,QAAtD8oE,EAAwBF,EAAa74H,mBAAmD,IAA1B+4H,IAA2DF,EAAa74H,YAAc,CAAC,GACtJ64H,EAAa74H,YAAY6uG,GAAiB,KAC5C,CACF,CACA,GAAIY,SAA0DA,EAAgB,GAAI,CAEhF,IAGMupB,EAMAC,EATFv/D,EAAuB,QAAZ38K,EAAoB,SAAW,QAC1Cm8O,EAA0B,WAAf/pB,EAA0B,aAAe,aACxD,GAAgB,UAAZpyN,IAAwBzzJ,KAAK8P,MAAM0vD,UAAUmnT,WAAW3kX,IAAIouU,GAGT,QAApDs/D,EAAwBH,EAAaK,UAAiD,IAA1BF,IAA2DH,EAAaK,GAAY,CAAC,GAClJL,EAAaK,GAAUn8O,GAAW,GAEpC,GAAI+7O,EAAsBz9U,MAEyB,QAAhD49U,EAAuBJ,EAAapsT,cAA6C,IAAzBwsT,IAAyDJ,EAAapsT,OAAS,CAAC,GACzIosT,EAAapsT,OAAmB,QAAZswE,EAAoB,WAAa,eAAiB,EAE1E,CACF,CACF,CAAE,MAAOjsH,GACP0/L,EAAWhjO,EAAEsjC,EACf,CAAE,QACA0/L,EAAW7jO,GACb,CACF,CACF,CAAE,MAAOmkC,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACA,OAAOksY,CACT,GACC,CACD1uW,IAAK,wBACL1+B,MAAO,WACL,IAAI0tY,EAAc7vY,KAAK06T,MACrBl5K,EAASquP,EAAYruP,OACrBp/G,EAAMytW,EAAYztW,IAChBi7K,EAAU77D,EAASxhJ,KAAK8vY,uBAAyB1tW,EAAM,OAAI3L,EAC3D49D,EAAQ,MAQZ,OALKjyD,GAA0C,gBAAnCpiC,KAAKw/D,UAAUn4B,QAAQvuB,MAAM7N,KAE7Bu2I,GAA6C,gBAAnCxhJ,KAAKw/D,UAAUn4B,QAAQvuB,MAAM5N,KADjDmpF,EAAQ,QAIH,IAAc,IAAc,IAAc,CAAC,EAAGr0F,KAAK+vY,yBAA0B1yL,EAAU,CAC5FA,QAASA,GACP,CAAC,GAAI,CAAC,EAAG,CACXxwL,OAAQ,OACRwnE,MAAOA,GAEX,GACC,CACDxzD,IAAK,wBACL1+B,MAAO,WAEL,OAAOnC,KAAK8P,MAAMkgY,uBACpB,GACC,CACDnvW,IAAK,uBACL1+B,MAAO,WACL,KAAInC,KAAK4R,QAAU5R,KAAK4R,kBAAkBk9X,GAA1C,CAOE,IAAImB,EAAsBjwY,KAAKi0W,QAAQ,iBACvC,MAAO,CACLzqD,OAAQ,gBAAgBj2S,OAAO08X,EAAqB,OAExD,CACF,GACC,CACDpvW,IAAK,qBACL1+B,MAAO,WAEP,GACC,CACD0+B,IAAK,gBACL1+B,MAAO,SAAuBm2M,GAC5B,OAAIt4M,KAAK4R,QAAU5R,KAAK4R,kBAAkBk9X,EAIjC,IAAc,IAAc,CAAC,EAAG9uY,KAAKstX,gBAAgB,UAAY,CACtE3yJ,OAAQ,CACNn1N,OAAQ,CAGN63M,QAAS,CACPx9E,MAAO,IAAQ7/H,KAAK06T,MAAMl5K,OAAQ,CAChC97G,OAAQ,iBAKd,CAAC,GAAIovK,IAAK,QAAgBg6L,EAAW5uY,WAAY,gBAAiBF,MAAM4B,KAAK5B,KAAMs4M,IAElFxD,IAAK,QAAgBg6L,EAAW5uY,WAAY,gBAAiBF,MAAM4B,KAAK5B,KAAMs4M,EACvF,GAIC,CACDz3K,IAAK,kCACL1+B,MAAO,WACL,IAAIy9H,EAAS,GACT7yE,EAAM,GACNg8K,EAAK,GACT,GAAI/oO,KAAK8P,iBAAiBg/X,GACxB,GAAI9uY,KAAK8P,MAAMw9W,gBAAgB,UAAW,CACxC,IAAIztP,EAAQ,IAAQ7/H,KAAK8P,MAAM4qT,MAAMl5K,QACrC5hB,EAAOr/H,KAAKs/H,GACZ9yE,EAAIxsD,KAAK,YACTwoO,EAAGxoO,KAAK,YAAYgT,OAAOssH,GAC7B,MACK,CACL,IACEsnG,EADEC,EAAa,IAA2B2oG,KAE5C,IACE,IAAK3oG,EAAWtpN,MAAOqpN,EAASC,EAAWx4M,KAAK0pB,MAAO,CACrD,IAAIm7G,EAAU0zE,EAAOhlO,MACjB0vX,EAAsB7xX,KAAK8P,MAAM0vD,UAAU0qL,OAAOz2F,GACtD,GAAIo+N,IAAwBA,EAAoBvtQ,OAAQ,CACtD,IAAI37G,EAAOkpX,EAAoB7vX,IAAI,QAC/B2lD,EAAQkqU,EAAoB7vX,IAAI,SACpC,GAAI4+U,IAAkBj4U,IAAS0qU,IAAc1rR,GAAQ,CACnD,IACIs/Q,EAAS6qD,IADAC,IAAe/xX,KAAK8P,MAAO2jJ,IAEpCwzK,GACFrnM,EAAOr/H,KAAK0mU,GACZl6Q,EAAIxsD,KAAK,YACTwoO,EAAGxoO,KAAK,YAAYgT,OAAO0zT,KAE3B,IAAS,IAAyBxzK,GAEtC,CACF,CACF,CACF,CAAE,MAAOjsH,GACP4/L,EAAWljO,EAAEsjC,EACf,CAAE,QACA4/L,EAAW/jO,GACb,CACF,CACA,MAAO,CACLu8H,OAAQA,EACR7yE,IAAKA,EACLg8K,GAAIA,EAER,GACC,CACDloM,IAAK,gBACL1+B,MAAO,WACL,IAYEklO,EAZE6oK,EAAwBlwY,KAAKw/D,UAAU95C,KAAKyqX,UAC9CluY,EAAOiuY,EAAsBjuY,KAC7ByjB,EAAOwqX,EAAsBxqX,KAC3B0qX,EAAepwY,KAAK06T,MACtBt4R,EAAMguW,EAAahuW,IACnBo/G,EAAS4uP,EAAa5uP,OACpB6uP,EAAwBrwY,KAAKswY,kCAC/B1wQ,EAASywQ,EAAsBzwQ,OAC/B7yE,EAAMsjV,EAAsBtjV,IAC5Bg8K,EAAKsnK,EAAsBtnK,GACzB+D,EAAU,GACVxF,EAAa,IAA2BqnG,KAE5C,IACE,IAAKrnG,EAAWxpN,MAAOupN,EAASC,EAAW14M,KAAK0pB,MAAO,CACrD,IAAIm7G,EAAU4zE,EAAOllO,MACjBy0U,EAAW52U,KAAK06T,MAAMjnK,GAC1B,GAAImjL,EAAU,CACZ9pG,EAAQvsO,KAAK,IAAQq2U,IACrB,IAAIzqH,EAAMyqH,EAASzqH,IACjB55M,EAAOqkU,EAASrkU,KAMlB,GALIw/T,IAAU5lH,IACZ2gB,EAAQvsO,KAAK,IAAQq2U,EAAU,CAC7B+N,UAAW,SAGX2C,IAAY/0U,GAAO,CACrB,IAAIstH,EAAQttH,EAAKstH,MACf0wQ,EAAWh+X,EAAK06C,GAChBA,OAAkB,IAAbsjV,EAAsBrpD,IAAkBqpD,EAC3CC,EAAa3B,IAAmBj4D,EAAUrkU,GAC1C6vB,GAAOo/G,GAIT5hB,EAAOr/H,KAAKiwY,GACZzjV,EAAIxsD,KAAK,OACTwoO,EAAGxoO,KAAKiwY,KAER5wQ,EAAOr/H,KAAKs/H,GACZ9yE,EAAIxsD,KAAK0sD,GACT87K,EAAGxoO,KAAKiwY,GAEZ,MAAO,GAAI,GAAQj+X,GAAO,CACxB,IAAIk+X,EAAc5rB,IAAoBjuC,EAAUnjL,GAChD7zB,EAAOr/H,KAAKkwY,GACZ1jV,EAAIxsD,KAAK,OACTwoO,EAAGxoO,KAAKkwY,EACV,CACF,CACF,CACF,CAAE,MAAOjpW,GACP8/L,EAAWpjO,EAAEsjC,EACf,CAAE,QACA8/L,EAAWjkO,GACb,CACA,IAAIuxB,IAAUwN,KAASo/G,EACvB,OAAO,IAAc,CACnBv/I,KAAMA,EACNyjB,KAAMA,EACNonN,QAASA,GACRl4M,GAASgrG,EAAO/+H,OAAS,EAAI,CAC9B27T,UAAW,IAAc,IAAc,CAAC,EAAG5nS,EAAQ,CACjDA,MAAOA,GACL,CAAC,GAAIgrG,EAAO/+H,OAAS,CACvB++H,OAAQA,EACR7yE,IAAKA,EACLg8K,GAAIA,GACF,CAAC,IACH,CAAC,EACP,GACC,CACDloM,IAAK,kBACL1+B,MAAO,SAAyBsxJ,GAC9B,IACImjL,EADQ52U,KAAK06T,MACIjnK,GACrB,OAAImjL,EACE0Q,IAAY1Q,EAASrkU,MAChB,CAACs8X,IAAmBj4D,EAAUA,EAASrkU,KAAM,CAClDm9N,KAAM,WAEC,GAAQknG,EAASrkU,MACnB,CAACsyW,IAAoBjuC,EAAUnjL,EAAS,CAC7Ci8E,KAAM,WAGH,CAAC,IAAQknG,EAAU,CACxBlnG,KAAM,WAGH,EACT,GACC,CACD7uM,IAAK,iBACL1+B,MAAO,SAAwBsxJ,GAC7B,IACImjL,EADQ52U,KAAK06T,MACIjnK,GACrB,GAAImjL,EAAU,CACZ,IAAIrkU,EAAOqkU,EAASrkU,KAEpB,MAAO,EADM+0U,IAAY/0U,GAAQA,EAAK+qC,OAAS,GAAQ/qC,IAASA,IAAS,YAE3E,CACA,MAAO,EACT,GACC,CACDsuB,IAAK,qBACL1+B,MAAO,WACL,IAAIu4T,EAAQ16T,KAAK06T,MACfluN,EAASxsG,KAAKwsG,OAChB,GAAIkuN,EAAMA,MAER,OAAO,IAAoBA,EAAMA,MAAO,QAASluN,GAEnD,IAKE68N,EALEqnE,EAAoB,CACtBtuW,IAAK,CAAC,MAAO,UACbo/G,OAAQ,CAAC,OAAQ,UAEf8nL,EAAa,IAA2B47C,KAE5C,IACE,IAAK57C,EAAWxrT,MAAOurT,EAASC,EAAW16S,KAAK0pB,MAAO,CACrD,IAAIm7G,EAAU41K,EAAOlnU,MACrB,GAAIu4T,EAAMjnK,GAAU,CAClB,IAAIk9O,EACA1kD,EAAc84B,IAAkB,cAAqD,QAArC4rB,EAAiBj2E,EAAMjnK,UAAyC,IAAnBk9O,OAA4B,EAASA,EAAe5hN,OAAQviF,EAAQinD,GACrK,GAAIi9O,EAAkBj9O,GAAStuJ,SAAS8mV,GAEtC,OAAO,IAAoBvxB,EAAMjnK,GAAUA,EAASjnD,EAExD,CACF,CACF,CAAE,MAAOhlE,GACP8hS,EAAWplU,EAAEsjC,EACf,CAAE,QACA8hS,EAAWjmU,GACb,CAEF,GACC,CACDw9B,IAAK,gBACL1+B,MAAO,WACL,IAAI28D,EAAS9+D,KACT8P,EAAQ9P,KAAK8P,MAIb4V,EHlUH,SAA2B6lD,GAChC,IAGE03J,EAHEv9M,EAAO,GACP4nX,EAAWF,IAAa1nX,GACxBw9M,EAAa,IAA2B33J,EAAK17D,UAEjD,IACE,IAAKqzN,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAE9Cg1V,EADYrqK,EAAO9gO,MACH,CACdkvB,OAAQk6C,EAAKtpE,KACbA,KAAM,KACN6R,UAAW,IAGjB,CAAE,MAAO0zB,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACA,OAAOqiB,CACT,CG8SiBkrX,CADK5wY,KAAKw/D,UAAU95C,KAAKyqX,WAEhChI,EAAcr4X,EAAM+gY,0BAAyB,GAC7C9+U,EAAQ/xD,KAAK8wY,sBAAwBhhY,EAAMqxW,gBAC3Cr1W,EAAQgE,EAAMihY,qBACdC,EAAY,IAAc,IAAc,IAAc,IAAc,IAAc,CACpF/uY,KAAMjC,KAAKi0W,QAAQ,QACnBtrW,KAAM,SACLopD,EAAQ,CACTA,MAAOA,GACL,CAAC,GAAIjmD,EAAQ,CACfA,MAAOA,GACL,CAAC,GAAI,CAAC,EAAG,CACXwtB,KAAM,CACJohS,MAAO16T,KAAKixY,iBAGd1+X,KAAM,CACJstH,MAAO8uM,IAAe39S,KAAI,SAAU7L,GAClC,OAAO25C,EAAOoyU,gBAAgB/rX,EAChC,IAAGyqC,OACHtS,MAAOqxR,IAAe39S,KAAI,SAAU7L,GAClC,OAAO25C,EAAOqyU,eAAehsX,EAC/B,IAAGyqC,SAEJlqC,EAAK7kB,OAAS,EAAI,CACnB6kB,KAAMA,GACJ,CAAC,GAAIyiX,EAAc,CACrBxtK,OAAQ,CACNn1N,OAAQ2iY,IAER,CAAC,GAAIr4X,EAAMshY,c/Fvbd,SAA8BhsG,EAAO9sF,GAC1C,GAAI8sF,EAAM5lO,UAAUi/R,WAAa,GAAKr5D,EAAM5lO,UAAUi/R,WAAW59V,OAAQ,CACvE,IAAIoB,EAAO,GAAYmjS,EAAM6uE,QAAQ,SACrC37J,EAAQ3iM,QAAQ,CACd1T,KAAM,QACNE,MAAO,CAAC,EACRhC,GAAI,CAAC,CACHW,OAAQ,GAAc,YAAa,SACnC0E,OAAQ,kCAAkC+N,OAAOtR,EAAM,cAG7D,CACA,OAAOotW,IAAoB/2J,EAC7B,C+F0amC+4L,CAAqBrxY,KAAM,MACxD,MAAO,CAACgxY,EACV,GACC,CACDnwW,IAAK,aACL1+B,MAAO,WACL,OAAOnC,KAAK06T,KACd,KAEKo0E,CACT,CAreqC,CAqenC3E,KCjhBF,SAAS,IAAQxlW,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CACzf,SAAS,IAA2B0c,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAuC3K,SAASuzK,IAAW/mX,EAAMy8M,GAC/B,IACE5D,EADEC,EAAY,IAA2B2D,GAE3C,IACE,IAAK3D,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIk7U,EAAc8d,EAAmBC,EAAeC,EAChDjtW,EAAQg6L,EAAMp8N,MACdsvY,EAAYltW,EAAM7e,KAEtB,IAAIA,EAAKzjB,OAAQsiC,EAAMmtW,WAAahsX,EAAKzjB,OAASsiC,EAAMm8Q,SAAxD,CAGA,IAAIixF,EAAiD,QAAnCne,EAAe9tW,EAAa,cAAgC,IAAjB8tW,OAA0B,EAASA,EAAa37J,KACzG+5K,EAA0D,QAA1CN,EAAoBG,EAAUz9V,cAA0C,IAAtBs9V,OAA+B,EAASA,EAAkB15K,QAEhI,IAAI+5K,IAAcC,EAAlB,CAIA,IAAIC,EAAqD,QAApCN,EAAgB7rX,EAAa,cAAiC,IAAlB6rX,OAA2B,EAASA,EAAc35K,QACnH,IAAKi6K,IAAiBD,GAAiBC,IAAkBD,EAAzD,CAGA,IAAIE,EAAwD,QAA3CN,EAAqBC,EAAUz9V,cAA2C,IAAvBw9V,OAAgC,EAASA,EAAmB35K,KAChI,IAAK85K,IAAcG,GAAcH,IAAeG,EAGhD,GAAIvjC,IAAa7oV,IAAS6oV,IAAakjC,IACrC,GAAI9oE,GAAUjjT,EAAK8a,OAAQixW,EAAUjxW,QACnC,OAAO+D,OAEJ,GAAI+pU,IAAU5oV,IAAS4oV,IAAUmjC,IACtC,GAAI/rX,EAAKi0C,MAAQ83U,EAAU93U,IACzB,OAAOp1B,OAEJ,GAAIiqU,IAAY9oV,IACjBA,EAAKzjB,OAASsiC,EAAMm8Q,SACtB,OAAOn8Q,CAfX,CALA,CANA,CA6BF,CACF,CAAE,MAAOiD,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACA,OAAO,IACT,CAgMO,SAAS,IAAU+hS,GACxB,IAAI2sG,EAAeC,EAAuBC,EACtCjwW,EAjMN,SAAmBojQ,EAAOjjE,GACxB,GAAIijE,EAAM1/Q,OAAS0/Q,EAAMxzR,OAAQ,CAE/B,GAAmB,OAAfwzR,EAAM1/Q,KAAe,CAEvB,IAAI2L,EAAS,IAAI4iW,IAAW,CAC1BzzV,OAAQ,KAGV,OADA2hM,EAAQ5hO,KAAK8wB,GACNA,CACT,CACA,IAAI6gX,EAAiBzF,IAAWrnG,EAAM1/Q,KAAMy8M,GAC5C,GAAI+vK,EAQF,OAPKzjC,IAAYrpE,EAAM1/Q,QACrBwsX,EAAexsX,KAAKsuB,OAASi1R,GAAU,CAAC,EAAG7jC,EAAM1/Q,KAAKsuB,OAAQk+V,EAAexsX,KAAKsuB,UAG/Ek+V,EAAeR,WAAatsG,EAAM1/Q,KAAKzjB,OAC1CiwY,EAAexxF,SAAWtb,EAAM1/Q,KAAKzjB,MAEhCiwY,EAEP,IAAI7+J,EAAU,IAAI4gJ,IAAW7uF,EAAM1/Q,MAEnC,OADAy8M,EAAQ5hO,KAAK8yO,GACNA,CAEX,CAEE,OAAO+xD,EAAMxzR,OAAO4tD,UAAU95C,KAAKyqX,UAAY/qG,EAAMxzR,OAAO4tD,UAAU95C,KAAKyqX,UAAY/qG,EAAMxzR,OAAO4tD,UAAU95C,KAAKoyT,IAEvH,CAmKaq6D,CAAU/sG,EAAOA,EAAM5lO,UAAU95C,KAAKy8M,SAC7CiwK,EAAwBhtG,EAAM5lO,UAAU95C,KAC1C02W,EAAcgW,EAAsBhW,YACpCmL,EAAsB6K,EAAsB7K,oBAC1C7hX,EAAO0/Q,EAAM1/Q,KAEb6tW,IADU7tW,IAAS+oV,IAAY/oV,IAAS4oV,IAAU5oV,IAAS6oV,IAAa7oV,MAC5C0/Q,EAAMxzR,OAASwzR,EAAMxzR,OAAO4tD,UAAU95C,KAAK6tW,cAAch9W,QAAU,IAAI43V,IACnGM,IAAY/oV,IAEVgpV,IAAoBhpV,GACtBsc,EAAO,IAAI+xV,IAAa/xV,EAAMtc,EAAKk2C,UAC1BgzS,IAAqBlpV,KAC9Bsc,EAAO,IAAI8xV,IAAc9xV,EAAMtc,EAAKsoQ,YAGtCulG,EAAcllB,cAAe,GACwH,QAA3I3oV,SAAsE,QAAjCqsX,EAAgBrsX,EAAKsuB,cAAsC,IAAlB+9V,OAA2B,EAASA,EAActrV,SAE1I8sU,EAAcllB,cAAe,GAE/BrsU,EAAwF,QAAhFgwW,EAAwB9e,IAAUvlB,aAAa3rU,EAAMojQ,EAAOmuF,UAAsD,IAA1Bye,EAAmCA,EAAwBhwW,EAQ3JA,EAAO,IAAI6xV,IAAe7xV,GAG1B,IAGQqwW,EAHJC,EAAgBltG,EAAMxzR,QAAUqgW,IAAa7sE,EAAMxzR,SACnD++V,IAAYvrE,IAAU05E,IAAa15E,MACjCktG,IAEFtwW,EAA2E,QAAnEqwW,EAAwBtjB,IAAQwjB,iBAAiBvwW,EAAMojQ,UAA8C,IAA1BitG,EAAmCA,EAAwBrwW,IAG9IojQ,EAAMtiE,WAAWjiO,OAAS,IAC5BmhC,EAtMG,SAA6BA,EAAMojQ,EAAOmuF,GAC/C,IAEEtwJ,EAFEuvK,EAAgB,EAChBtvK,EAAa,IAA2BkiE,EAAMtiE,YAElD,IACE,IAAKI,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,CACrD,IAAIv0C,EAAIk/N,EAAO9gO,MACXswY,OAAch8W,EACdi8W,OAAgB,EACpB,GAAI/nC,IAAY5mW,GACd2uY,EAAgB1wW,EAAO,IAAI0iV,IAAc1iV,EAAMj+B,GAC/C0uY,EAAc,eACT,GAAIzoC,IAASjmW,GAAI,CACtB,IAAI4uY,EACAluJ,EAAWouI,IAA+B9uX,GAC9C2uY,EAAgB1wW,EAAoG,QAA5F2wW,EAAwBzf,IAAUO,kBAAkBzxV,EAAM,CAAC,EAAGyiN,EAAU8uI,UAAsD,IAA1Bof,EAAmCA,EAAwB3wW,EACvLA,EAAO,IAAIq9U,IAAWr9U,EAAMojQ,EAAOrhS,EAAEwM,OACvC,MAAO,GAAIq6V,IAAM7mW,GACf2uY,EAAgB1wW,EAAO+sV,IAAQ6jB,kBAAkB5wW,EAAMj+B,EAAGqhS,GAC1DqtG,EAAc,cACT,GAAI3nC,IAAW/mW,GACpB0uY,EAAc,YAGSh8W,IAFR88V,EAAc9lB,gBAAgB1pW,EAAE87H,OAElC19H,QACX6/B,EAAO,IAAIkxV,IAAUlxV,GAAM,OAAgB,CAAC,EAAGj+B,EAAE87H,MAAO4yQ,IACxDlf,EAAcrxX,IAAI6B,EAAE87H,MAAO4yQ,GAAa,IAE1CC,EAAgB1wW,EAAOouU,IAAawiC,kBAAkB5wW,EAAMj+B,QACvD,GAAI,IAAYA,GACrB2uY,EAAgB1wW,EAAOouV,IAAcwiB,kBAAkB5wW,EAAMj+B,GAC7D0uY,EAAc,SACVzzB,IAAoB55E,KACtBpjQ,EAAO,IAAI6xV,IAAe7xV,SAEvB,GAAIkoU,IAASnmW,GAClB2uY,EAAgB1wW,EAAOkqW,IAAW2G,KAAK7wW,EAAMojQ,EAAOrhS,EAAGyuY,KACvDC,EAAc,eACT,GAAIjoC,IAASzmW,GAClB2uY,EAAgB1wW,EAAO,IAAIs5V,IAAoBt5V,EAAMj+B,GACrD0uY,EAAc,cACT,GAAIhoC,IAAgB1mW,GACzB2uY,EAAgB1wW,EAAO,IAAI43V,IAA2B53V,EAAMj+B,GAC5D0uY,EAAc,cACT,GAAI1nC,IAAQhnW,GACjB2uY,EAAgB1wW,EAAOg4V,IAAU4Y,kBAAkB5wW,EAAMj+B,GACzD0uY,EAAc,eACT,GAAIznC,IAAOjnW,GAChB2uY,EAAgB1wW,EAAO,IAAIkpW,IAAkBlpW,EAAMj+B,GACnD0uY,EAAc,eACT,GAAIxnC,IAASlnW,GAClB2uY,EAAgB1wW,EAAO,IAAI4oW,IAAoB5oW,EAAMj+B,GACrD0uY,EAAc,eACT,GAAI/nC,IAAU3mW,GACnB2uY,EAAgB1wW,EAAO,IAAI+oW,IAAqB/oW,EAAMj+B,GACtD0uY,EAAc,eACT,GAAItoC,IAAQpmW,GACjB2uY,EAAgB1wW,EAAO,IAAIgrW,IAAmBhrW,EAAMj+B,GACpD0uY,EAAc,eACT,GAAIloC,IAASxmW,GAClBi+B,EAAO,IAAImrW,IAAoBnrW,EAAMj+B,QAChC,GAAI8mW,IAAS9mW,GAClB2uY,EAAgB1wW,EAAOypW,IAAWmH,kBAAkB5wW,EAAMj+B,GAC1D0uY,EAAc,eACT,GAAIroC,IAAUrmW,GACnB2uY,EAAgB1wW,EAAO,IAAIsoW,IAAqBtoW,EAAMj+B,GACtD0uY,EAAc,eACT,GAAI,IAAW1uY,GACpB2uY,EAAgB1wW,EAAO,IAAI6qW,IAAsB7qW,EAAMj+B,GACvD0uY,EAAc,eACT,GAAIpoC,IAAatmW,GACtB2uY,EAAgB1wW,EAAO,IAAI8qW,IAAwB9qW,EAAMj+B,GACzD0uY,EAAc,cACT,KAAInoC,IAAQvmW,GAGZ,CACL,IAAS,IAAoCA,IAC7C,QACF,CALE2uY,EAAgB1wW,EAAO,IAAIiqW,IAAmBjqW,EAAMj+B,GACpD0uY,EAAc,SAIhB,CACA,GAAIC,QAAiCj8W,IAAhBg8W,EAA2B,CAC9C,IAAIK,EAEF7rK,EADEC,EAAa,IAAwF,QAA5D4rK,EAAwBJ,EAAc/c,wBAAwD,IAA1Bmd,EAAmCA,EAAwB,IAE5K,IACE,IAAK5rK,EAAWppN,MAAOmpN,EAASC,EAAWt4M,KAAK0pB,MAAO,CACrD,IAAIunF,EAAQonG,EAAO9kO,MACnBoxX,EAAcrxX,IAAI29H,EAAO4yQ,GAAa,EACxC,CACF,CAAE,MAAOjrW,GACP0/L,EAAWhjO,EAAEsjC,EACf,CAAE,QACA0/L,EAAW7jO,GACb,CACF,CACF,CACF,CAAE,MAAOmkC,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACA,OAAO2+B,CACT,CAgGW+wW,CAAoB/wW,EAAMojQ,EAAOmuF,IAG1C,IAAIyf,EvCnKC,SAAkC5tG,GACvC,IAAI3gD,EAAW,CAAC,EAChB,GAAIksH,IAAYvrE,IAAUA,EAAM5lO,UAAUi/R,UAAW,CACnD,IACElgI,EADEC,EAAY,IAA2B,GAAK4mE,EAAM5lO,UAAUi/R,YAEhE,IACE,IAAKjgI,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAGE2qL,EAHEhhO,EAAOs8N,EAAMp8N,MAEb+gO,EAAa,IADHkiE,EAAM5lO,UAAUi/R,UAAUx8V,GACY8xO,QAAQ5tL,OAE5D,IACE,IAAK+8K,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,CACrD,IAAI4zO,EAAOjpD,EAAO9gO,OACb+pR,EAAKz4H,SAAW63K,GAAgBp/C,EAAKrsJ,OAAS,IACjD4kH,EAASynC,EAAKrsJ,OAAS,UAE3B,CACF,CAAE,MAAOr4F,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACF,CACF,CAAE,MAAOmkC,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACF,CACA,OAAOohP,CACT,CuCoI0BwuJ,CAAyB7tG,GAC7C8tG,EAAmBngB,IAAwB3tF,GAM/C,GALApjQ,EAAkK,QAA1JiwW,EAAyB/e,IAAUO,kBAAkBzxV,EAAM,CAAC,EAAG,IAAc,IAAc,CAAC,EAAGgxW,GAAoBE,GAAmB3f,UAAuD,IAA3B0e,EAAoCA,EAAyBjwW,EACnO2uU,IAAYvrE,KACdpjQ,EAAOopW,IAAY+H,SAASnxW,EAAMojQ,GAClCpjQ,EAAOwpW,IAAa2H,SAASnxW,EAAMojQ,IAEjCurE,IAAYvrE,IAAU05E,IAAa15E,GAAQ,CAC7C,IAAIguG,EAEEC,EADN,IAAKf,EAEHtwW,EAA4E,QAApEqxW,EAAyBtkB,IAAQwjB,iBAAiBvwW,EAAMojQ,UAA+C,IAA3BiuG,EAAoCA,EAAyBrxW,EAEnJA,EAAgF,QAAxEoxW,EAAwBhjC,IAAamiC,iBAAiBvwW,EAAMojQ,UAA8C,IAA1BguG,EAAmCA,EAAwBpxW,EACnJA,EAAO0iV,IAAc4uB,qBAAqBtxW,EAAMojQ,EAClD,CAEA,IAiBMmuG,EAjBFC,EAAUpuG,EAAMqkG,YAAYv7B,IAAe6wB,KAC3CpjJ,EAAM,IAAIi0H,IAAW5tU,EAAMwxW,EAAStlC,IAAe6wB,IAAKwI,GAG5D,GAFAnL,EAAYoX,GAAW73J,EACvB35M,EAAO25M,EACHg1H,IAAYvrE,GAAQ,CACtB,IAAIquG,EAAuBC,EACvBhpK,EAAM0lJ,IAAcmiB,iBAAiBvwW,EAAMojQ,GAC3C16D,IACF1oM,EAAO0oM,EACHs0I,IAAoB55E,KACtBpjQ,EAAO,IAAI6xV,IAAe7xV,KAG9BA,EAA8E,QAAtEyxW,EAAwBhI,IAAW8G,iBAAiBvwW,EAAMojQ,UAA8C,IAA1BquG,EAAmCA,EAAwBzxW,EACjJA,EAA6E,QAArE0xW,EAAwB1Z,IAAUuY,iBAAiBvwW,EAAMojQ,UAA8C,IAA1BsuG,EAAmCA,EAAwB1xW,CAClJ,CACI2uU,IAAYvrE,KAEdpjQ,EAAyE,QAAjEuxW,EAAwB1I,IAAkBgI,KAAK7wW,EAAMojQ,UAA8C,IAA1BmuG,EAAmCA,EAAwBvxW,GAG9I,IAAI2xW,EAAWvuG,EAAMqkG,YAAYv7B,IAAesf,MAC5C11C,EAAO,IAAI83B,IAAW5tU,EAAM2xW,EAAUzlC,IAAesf,KAAM+Z,GAC/DnL,EAAYuX,GAAY77D,EACxB91S,EAAO81S,EACH64B,IAAYvrE,IjE3OX,SAA+BA,EAAO0yC,GAC3C,IAAI+8B,EAEF5tI,EADEC,EAAa,IAA2BprK,GAAgE,QAAvD+4S,EAAwBzvE,EAAM5lO,UAAUi/R,iBAAiD,IAA1BoW,EAAmCA,EAAwB,CAAC,IAEhL,IACE,IAAK3tI,EAAWppN,MAAOmpN,EAASC,EAAWt4M,KAAK0pB,MAAO,CACrD,IAAIywR,GAAe,OAAe9hG,EAAO9kO,MAAO,GAC9Cs8V,EAAY11B,EAAa,GACzBomC,EAAUpmC,EAAa,GACrB6qE,EAAaxuG,EAAM6uE,QAAQ,UAAU1gW,OAAOkrV,IAChDr5D,EAAM5lO,UAAU95C,KAAK02W,YAAYwX,GAAczkC,EAAQy9B,aAAe,IAAIh9B,IAAW,IAAIyP,IAAWvnC,EAAM1yC,EAAO,CAC/GznJ,MAAO8gN,IACLm1C,EAAY1lC,IAAep8H,OAAQszD,EAAM5lO,UAAU95C,KAAK6hX,oBAC9D,CACF,CAAE,MAAO//V,GACP0/L,EAAWhjO,EAAEsjC,EACf,CAAE,QACA0/L,EAAW7jO,GACb,CACF,CiEyNIwwY,CAAsBzuG,EAAO0yC,GAG/B,IAAIq4D,EAAY,KAChB,GAAIrxB,IAAa15E,GAAQ,CACvB,IAAI0uG,EACAC,EAAY3uG,EAAM6uE,QAAQ,SAG9BjyU,EAAmF,QAA3E8xW,ECvXL,SAAoCliY,EAAQ8oT,GACjD,IAAIt4R,EAAMs4R,EAAMt4R,IACdo/G,EAASk5K,EAAMl5K,OACjB,GAAIp/G,GAAOo/G,EAAQ,CAGjB,IAFA,IAAImuN,EAAY,KAEPhvW,EAAK,EAAGs3C,EAAO,CAAC7V,EAAKo/G,GAAS7gJ,EAAKs3C,EAAKp3C,OAAQF,IAAM,CAC7D,IAAIi2U,EAAW3+R,EAAKt3C,GACpB,GAAI2mV,IAAY1Q,EAASrkU,MAAO,CAC9B,IAAIyhY,EAAiBp9D,EAASrkU,KAC5BstH,EAAQm0Q,EAAen0Q,MACvBo0Q,EAAoBD,EAAe/mV,GAErCr7C,EAAS+9V,EAAY,IAAIiqB,IAA2BhoX,EAAQ,CAC1DulV,cAAe,CAAC,CACdlqS,QAHyB,IAAtBgnV,EAA+B/sD,IAAkB+sD,EAIpDp0Q,MAAOA,EACPkpG,GAAI8lK,IAAmBj4D,EAAUA,EAASrkU,KAAM,CAC9C+2U,OAAO,MAGXx8G,QAAS,CAAC,IAAQ8pG,KAEtB,CACF,CACA,OAAO+4B,CACT,CACA,OAAO,IACT,CD2VoCukC,CAA2BlyW,EAAMojQ,EAAMs1B,cAA8C,IAA1Bo5E,EAAmCA,EAAwB9xW,EACtJmuW,EAAY,IAAI7e,IAAUtvV,EAAMojQ,EAAO2uG,EAAWj8D,EAAKokD,aACvDE,EAAY2X,GAAa5D,CAC3B,CACA,OAAO,IAAc,IAAc,CAAC,EAAG/qG,EAAM5lO,UAAU95C,MAAO,CAAC,EAAG,CAChE02W,YAAaA,EACbmL,oBAAqBA,EACrB5rJ,IAAKA,EACLm8F,KAAMA,EACNq4D,UAAWA,EACX5c,cAAeA,GAEnB,CE/XA,SAAS,IAAQ5uV,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CACzf,SAAS,IAA2B0c,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAClL,SAAS,IAAawqB,GAAW,IAAIC,EACrC,WAAuC,GAAuB,oBAAZ1kH,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFxqD,QAAQ10E,UAAU03C,QAAQh2C,KAAKq9H,QAAQC,UAAUtqD,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO1wE,KAAK,OAAO,CAAO,CAAE,CADvQ,GAA6B,OAAO,WAAkC,IAAsC0O,EAAlCgxO,GAAQ,QAAgBF,GAAkB,GAAIC,EAA2B,CAAE,IAAIE,GAAY,QAAgB7jP,MAAM8E,YAAa8N,EAASqsH,QAAQC,UAAU0kH,EAAOhjP,UAAWijP,EAAY,MAASjxO,EAASgxO,EAAMviP,MAAMrB,KAAMY,WAAc,OAAO,QAA2BZ,KAAM4S,EAAS,CAAG,CAUja,IAAIuhY,IAA2B,SAAU/J,IAC9C,QAAU+J,EAAa/J,GACvB,IAAI1oY,EAAS,IAAayyY,GAC1B,SAASA,EAAY9gL,EAAMzhN,EAAQ20X,EAAiB/5R,GAClD,IAAI4nS,EAAeC,EACf5zY,EASJ,OARA,QAAgBT,KAAMm0Y,GACtB1zY,EAAQiB,EAAOE,KAAK5B,KAAMqzN,EAAM,SAAUzhN,EAAQ20X,EAAiB/5R,EAAQ6mH,EAAKhsL,SACsG,YAA9I,QAAlC+sW,EAAgB/gL,EAAKhsL,eAAuC,IAAlB+sW,GAAqE,QAAxCA,EAAgBA,EAAcvgI,YAAoC,IAAlBugI,OAA2B,EAASA,EAAcnpY,IAA2M,YAAnJ,QAAnCopY,EAAiBhhL,EAAKhsL,eAAwC,IAAnBgtW,GAAwE,QAA1CA,EAAiBA,EAAexgI,YAAqC,IAAnBwgI,OAA4B,EAASA,EAAenpY,IACjX,IjJyBgC,gHiJvBlCzK,EAAMoP,SAAWpP,EAAM6P,YAAY+iN,GAAMriM,KAAI,SAAUlhB,EAAO5O,GAC5D,OAAO8tY,IAAWl/X,GAAO,QAAuBrP,GAAQA,EAAMwzW,QAAQ,UAAU1gW,OAAOrS,SAAKu1B,EAAW+1E,EACzG,IACO/rG,CACT,CAuLA,OAtLA,QAAa0zY,EAAa,CAAC,CACzBtzW,IAAK,YACL1+B,MAAO,WACLnC,KAAKw/D,UAAU95C,KAAO,IAAW1lB,MACjC,IACEu+N,EADEC,EAAY,IAA2Bx+N,KAAK6P,UAEhD,IACE,IAAK2uN,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CACtCimL,EAAMp8N,MACZu9T,WACR,CACF,CAAE,MAAOl4R,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACF,GACC,CACDw9B,IAAK,kBACL1+B,MAAO,WAILnC,KAAKw/D,UAAUi/R,UAAY,CAAC,EAC5B,IACEx7H,EADEC,EAAa,IAA2BljO,KAAK6P,UAEjD,IACE,IAAKqzN,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,CACrD,IAAIxoC,EAAQmzN,EAAO9gO,MACnB2N,EAAM43X,kBACN,IACEzgK,EADEC,EAAa,IAA2B,GAAKp3N,EAAM0vD,UAAUi/R,YAEjE,IACE,IAAKv3H,EAAWppN,MAAOmpN,EAASC,EAAWt4M,KAAK0pB,MAAO,CACrD,IAAIzX,EAAMomM,EAAO9kO,MACjBnC,KAAKw/D,UAAUi/R,UAAU59T,GAAO/wB,EAAM0vD,UAAUi/R,UAAU59T,EAC5D,CACF,CAAE,MAAO2G,GACP0/L,EAAWhjO,EAAEsjC,EACf,CAAE,QACA0/L,EAAW7jO,GACb,CACF,CACF,CAAE,MAAOmkC,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACF,GACC,CACDw9B,IAAK,iBACL1+B,MAAO,WACL,IACEglO,EADEC,EAAa,IAA2BpnO,KAAK6P,UAEjD,IACE,IAAKu3N,EAAWtpN,MAAOqpN,EAASC,EAAWx4M,KAAK0pB,MAAO,CACzC6uL,EAAOhlO,MACb0lY,gBACR,CACF,CAAE,MAAOrgW,GACP4/L,EAAWljO,EAAEsjC,EACf,CAAE,QACA4/L,EAAW/jO,GACb,CACF,GACC,CACDw9B,IAAK,sBACL1+B,MAAO,WACL,IACEklO,EADEC,EAAa,IAA2BtnO,KAAK6P,UAEjD,IACE,IAAKy3N,EAAWxpN,MAAOupN,EAASC,EAAW14M,KAAK0pB,MAAO,CACzC+uL,EAAOllO,MACbwlY,qBACR,CAEF,CAAE,MAAOngW,GACP8/L,EAAWpjO,EAAEsjC,EACf,CAAE,QACA8/L,EAAWjkO,GACb,CACF,GACC,CACDw9B,IAAK,cACL1+B,MAAO,SAAqBkxN,GAC1B,OAAI4oI,IAAc5oI,GACTA,EAAKuvI,QACH1G,IAAc7oI,GAChBA,EAAKsvI,QAEPtvI,EAAK9/M,MACd,GACC,CACDstB,IAAK,kBACL1+B,MAAO,YJrHJ,SAA+BijS,GACpCkpG,IAAwBlpG,GAExB,IAAIkvG,EAAqC,IAAzBlvG,EAAMt8K,OAAOu0F,QAAgB,QAAU,aAEnDk3L,OAAsC99W,IAAzB2uQ,EAAMt8K,OAAOu0F,QAAwB,SAAW,cACjEkxL,IAAiCnpG,EAAOkvG,GACxC/F,IAAiCnpG,EAAOmvG,EAC1C,CI8GMC,CAAsBx0Y,KACxB,GACC,CACD6gC,IAAK,iBACL1+B,MAAO,WACL,OAAO,IACT,GACC,CACD0+B,IAAK,mCACL1+B,MAAO,SAA0Cm2M,GAC/C,OAAOt4M,KAAK6P,SAAS8hB,QAAO,SAAUy/U,EAAIthW,GACxC,OAAOA,EAAMu/X,iCAAiCj+B,EAChD,GAAG94J,EACL,GACC,CACDz3K,IAAK,kBACL1+B,MAAO,WAIL,OAHAnC,KAAK6P,SAASzH,SAAQ,SAAU0H,GAC9B,OAAOA,EAAMo5X,iBACf,IACO,EACT,GACC,CACDroW,IAAK,wBACL1+B,MAAO,WACL,IAEEknU,EAFEorE,EAAgB,IAAuBz0Y,MACvCspU,EAAa,IAA2BtpU,KAAK6P,UAEjD,IACE,IAAKy5T,EAAWxrT,MAAOurT,EAASC,EAAW16S,KAAK0pB,MAAO,CACrD,IAAIxoC,EAAQu5T,EAAOlnU,MACnBsyY,EAAcl0Y,KAAKc,MAAMozY,GAAe,QAAmB3kY,EAAMkgY,yBACnE,CACF,CAAE,MAAOxoW,GACP8hS,EAAWplU,EAAEsjC,EACf,CAAE,QACA8hS,EAAWjmU,GACb,CACA,OAAOoxY,CACT,GACC,CACD5zW,IAAK,wBACL1+B,MAAO,SAA+BujB,GACpC,OAAO1lB,KAAK6P,SAAS8hB,QAAO,SAAUo3O,EAAIj5P,GACxC,OAAOA,EAAMw/X,sBAAsBvmI,EACrC,GAAGrjP,EACL,GACC,CACDmb,IAAK,gBACL1+B,MAAO,WAEL,OAAOnC,KAAK6P,SAASmhB,KAAI,SAAUlhB,GACjC,IAAIiiD,EAAQjiD,EAAMqxW,gBACdr1W,EAAQgE,EAAMihY,qBACd5I,EAAcr4X,EAAM+gY,0BAAyB,GACjD,OAAO,IAAc,IAAc,IAAc,IAAc,CAC7DloY,KAAM,QACN1G,KAAM6N,EAAMmkW,QAAQ,UACnBliT,EAAQ,CACTA,MAAOA,GACL,CAAC,GAAIjmD,EAAQ,CACfA,MAAOA,GACL,CAAC,GAAIq8X,EAAc,CACrBxtK,OAAQ,CACNn1N,OAAQ2iY,IAER,CAAC,GAAIr4X,EAAMshY,gBACjB,GACF,GACC,CACDvwW,IAAK,qBACL1+B,MAAO,WAEP,GACC,CACD0+B,IAAK,wBACL1+B,MAAO,WACL,IAAIk7M,EAAUr9M,KAAK8oH,OAAOu0F,QAC1B,OAAO,IAAc,IAAc,CAAC,EAAc,MAAXA,EAAkB,CACvDA,QAASA,GACP,CAAC,GAAI,CAAC,EAAG,CACXxwL,OAAQ,OAERwnE,MAAO,QAEX,KAEK8/S,CACT,CAvMsC,CAuMpC7N,KCxNF,SAAS,IAAa5iJ,GAAW,IAAIC,EACrC,WAAuC,GAAuB,oBAAZ1kH,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFxqD,QAAQ10E,UAAU03C,QAAQh2C,KAAKq9H,QAAQC,UAAUtqD,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO1wE,KAAK,OAAO,CAAO,CAAE,CADvQ,GAA6B,OAAO,WAAkC,IAAsC0O,EAAlCgxO,GAAQ,QAAgBF,GAAkB,GAAIC,EAA2B,CAAE,IAAIE,GAAY,QAAgB7jP,MAAM8E,YAAa8N,EAASqsH,QAAQC,UAAU0kH,EAAOhjP,UAAWijP,EAAY,MAASjxO,EAASgxO,EAAMviP,MAAMrB,KAAMY,WAAc,OAAO,QAA2BZ,KAAM4S,EAAS,CAAG,CAExa,SAAS,IAAQ+xB,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAQzf,IAAIgsY,IAAkC,IAAc,IAAc,CAChEp0B,QAAS,EACTp/C,UAAW,EACXpoT,MAAO,GACN+1U,KAA+B,CAAC,EAAG,CACpCE,UAAW,EACXp0H,OAAQ,IAECg6K,IAA4B,GAAKD,KACjCE,IAA6B,SAAUxmC,IAChD,QAAUwmC,EAAexmC,GACzB,IAAI1sW,EAAS,IAAakzY,GAC1B,SAASA,IACP,IAAIn0Y,EACA+0U,EAAW50U,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAChF6jP,EAAW7jP,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAChFkgX,EAAgBlgX,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,IAAmBA,UAAU,GAMnF,OALA,QAAgBZ,KAAM40Y,IACtBn0Y,EAAQiB,EAAOE,KAAK5B,OACdw1U,SAAWA,EACjB/0U,EAAMgkP,SAAWA,EACjBhkP,EAAMqgX,cAAgBA,EACfrgX,CACT,CA0BA,OAzBA,QAAam0Y,EAAe,CAAC,CAC3B/zW,IAAK,QACL1+B,MAAO,WACL,OAAO,IAAIyyY,EAAchsE,GAAU5oU,KAAKw1U,UAAW5M,GAAU5oU,KAAKykP,UAAWzkP,KAAK8gX,cACpF,GACC,CACDjgV,IAAK,cACL1+B,MAAO,SAAqBm5U,GAE1B,MAAa,SAATA,IAIS,SAATA,GAA4B,UAATA,IACZt7U,KAAKgC,IAAIs5U,IAzC1B,SAAuBrpU,GACrB,OAAa,IAANA,GAAqB,OAANA,CACxB,CA0Cc4iY,CAAc70Y,KAAKgC,IAAIs5U,IACjC,GACC,CACDz6S,IAAK,qBACL1+B,MAAO,WACL,OAAOixU,IAAYpzU,KAAKw1U,SAASt2E,OACnC,KAEK01I,CACT,CAzCwC,CAyCtCrnC,KClEF,SAAS,IAAQ5oU,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CCDzf,SAAS,IAA2B0c,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAuBlL,IAAI47K,IAAkB,CACpBrxT,OAAQ,MACRx0E,IAAK,SACLD,KAAM,QACN2D,MAAO,QAgIT,SAASoiY,IAAoBC,EAAiBC,GAC5C,IAAID,EA0BF,OAAOC,EAAejkX,KAAI,SAAUo9W,GAClC,OAAOA,EAAc73X,OACvB,IA1BA,GAAIy+X,EAAgBn0Y,SAAWo0Y,EAAep0Y,OAA9C,CAKA,IADA,IAAIA,EAASm0Y,EAAgBn0Y,OACpBK,EAAI,EAAGA,EAAIL,EAAQK,IAAK,CAC/B,IAAIojH,EAAS0wR,EAAgB9zY,GACzB4O,EAAQmlY,EAAe/zY,GAC3B,KAAMojH,KAAax0G,EACjB,OACK,GAAIw0G,GAAUx0G,EAAO,CAC1B,IAAI47W,EAAepnQ,EAAOmpP,gBAAgB,UACtCke,EAAc77W,EAAM29V,gBAAgB,UACxC,GAAIie,EAAal2C,UAAYm2C,EAAYn2C,UAAYk2C,EAAavpX,QAAUwpX,EAAYxpX,MAGtF,OAEA6yY,EAAgB9zY,GAAKg0Y,IAAmB5wR,EAAQx0G,EAEpD,CACF,CAOF,OAAOklY,CA1BL,CA2BJ,CACA,SAASE,IAAmB5wR,EAAQx0G,GAClC,IACE25T,EADEC,EAAa,IAA2BirE,KAE5C,IACE,IAAIlxP,EAAQ,WACV,IAAIv+I,EAAOukU,EAAOtnU,MACd4pX,EAA0B/d,IAAwB1pP,EAAOmpP,gBAAgBvoW,GAAO4K,EAAM29V,gBAAgBvoW,GAAOA,EAAM,QAEvH,SAAUmvB,EAAIC,GACZ,OAAQpvB,GACN,IAAK,QACH,OAAOmwU,IAAoBhhT,EAAIC,GACjC,IAAK,YACH,MAAO,CACLkhT,SAAUnhT,EAAGmhT,SACbrzU,MAAOopU,GAAgBl3S,EAAGlyB,MAAOmyB,EAAGnyB,QAG1C,OAAO4rW,IAAkB15U,EAAIC,EAAIpvB,EAAM,OACzC,IACAo/G,EAAOopP,gBAAgBxoW,EAAM6mX,EAC/B,EACA,IAAKriD,EAAW5rT,MAAO2rT,EAASC,EAAW96S,KAAK0pB,MAC9CmrG,GAEJ,CAAE,MAAOj8G,GACPkiS,EAAWxlU,EAAEsjC,EACf,CAAE,QACAkiS,EAAWrmU,GACb,CACA,OAAOihH,CACT,CACA,SAAS,IAAWniH,EAAO64M,EAAU64D,EAAMuxB,EAAO3xI,GAChD,GAAiB,YAAbunD,EACF,YAAgBvkL,IAATo9O,EAIT,OADAA,EAAOA,GAAQ,CAAC,EACR74D,GACN,IAAK,aACL,IAAK,aACH,OAAO74M,KAAWixU,IAAYv/D,EAAK6xD,YAAc7xD,EAAK6xD,WAAaoG,GAAej4D,EAAK6xD,aACzF,IAAK,SACH,QAAS7xD,EAAKrzO,OAEhB,IAAK,SAEH,QAASqzO,EAAKm4E,YAAcn4E,EAAK6xD,WACnC,IAAK,QAEH,GAAIvjU,IAAUwhX,IAAiBv+E,EAAO3xI,GACpC,OAAO,EAIb,OAAOtxJ,IAAU0xQ,EAAK74D,EACxB,CAIA,IAAIm6L,IAA6B,IAAIxuW,IAAI,CAAC,OAAQ,YAElD,SAAU,aAAc,SAAU,YAAa,YAAa,WAAY,gBACxE,SAAS,IAAU8sH,EAAS2xI,GAC1B,IAAIgwG,EAAOC,EAASC,EAAcC,EAAQC,EACtC3hI,EAAOuxB,EAAMvxB,KAAKpgH,GAClB26O,EAAgB,IAAIwG,IACpB7wD,EAAkB4G,IAAmBvlD,EAAM4mD,SAASv4L,IACpDh9F,EAAO2uO,EAAM3uO,KACf+1C,EAAS44L,EAAM54L,OACb0yJ,GAA6B,QAAlBk2I,EAAQvhI,SAA4B,IAAVuhI,OAAmB,EAASA,EAAMl2I,UAAwE,QAA3Dm2I,EAAU7oS,EAAmB,MAAZinD,EAAkB,QAAU,gBAAkC,IAAZ4hP,OAAqB,EAASA,EAAQn2I,UAA6C,QAAhCo2I,EAAe9oS,EAAOqnK,YAAmC,IAAjByhI,OAA0B,EAASA,EAAap2I,SlEXjS,SAAuBzrG,GAC5B,MAAmB,MAAZA,EAAkB,SAAW,MACtC,CkESmTgiP,CAAchiP,GAC3T8qK,EAAYn5B,EAAMosE,kBAAkB/9M,GAASzxJ,IAAI,QACjDigX,EnEjOC,SAAwBxuN,EAAS8qK,EAAWr/D,EAAQ1yJ,GACzD,IAAIkpS,EAAqC,SAAdn3E,EAAuB,CAAC,eAAgB,YAA4B,UAAdA,EAAwB,CAAC,eAAgB,aAAeiiB,IAAejiB,GAAa,CAAC,oBAAoC,SAAdA,GAAsC,QAAdA,EAAsB,CAAC,gBAAkB,GACzPo3E,EAA0B,MAAZliP,EAAkB,QAAU,QAC1CmiP,EAAaxiE,IAAYl0E,GAAU,aAAe,OAAO3rP,OAAOw3T,GAAU7rE,IAC1E22I,EAAoB,GAAGtiY,OAAOmiY,GAAsB,QAAmBA,EAAqB1kX,KAAI,SAAU7L,GAC5G,OAAOwwX,EAAcxwX,EAAEiW,OAAO,EAChC,MACI06W,EAAgB,CAAC,OAAQF,EAAYD,GACzC,MAAO,CACLI,iBAAkB10B,IAA6Bw0B,EAAmBrpS,EAAQinD,EAASyrG,GACnF82I,aAAc30B,IAA6By0B,EAAetpS,EAAQinD,EAASyrG,GAC3E+2I,gBAAiBr0B,IAAmB,GAAGruW,OAAOuiY,GAAe,QAAmBD,IAAqBrpS,GAEzG,CmEoNoB0pS,CAAeziP,EAAS8qK,EAAWr/D,EAAQkmC,EAAM54L,QAC/D8zQ,OAAmB7pV,IAATo9O,GAAsBA,EAAOmuG,IAAc,UAAWx1Q,EAAO1gG,MAA2B,QAAnBypY,EAAS1hI,SAA6B,IAAX0hI,OAAoB,EAASA,EAAOzpY,MAAOm2W,GAAaE,YAEtK,GADAisB,EAAclsY,IAAI,UAAWo+W,OAAkB7pV,IAATo9O,GAClCysG,EACF,OAAO8tB,EAGT,IAkBExkE,EAlBElE,ElErIC,SAAuBqe,EAAiBlwE,EAAMpgH,EAASghL,EAAawtC,GACzE,IAAIv8C,EAAa7xD,aAAmC,EAASA,EAAK6xD,WAElE,QAAmBjvS,IAAfivS,EACF,OAAO0N,IAAY1N,GAAcA,EAAaoG,GAAepG,GAG7D,IACEh+S,EADmBs6V,IAAc,aAAcvtC,EAAa5gE,aAAmC,EAASA,EAAK/nQ,MAAOm2W,GAC7FE,YACzB,YAAc1rV,IAAV/O,EACKokT,GAAepkT,GAGlB+rI,IAAY,KAAK,GAAS,CAACorL,IAASF,KAAUoF,EAAgBp7U,OAAW66U,IAAWO,IAAoBA,EAAgB9I,cAI5H,EAHS,GAMf,CkEiHmBk7D,CAAcpyD,EAD/BlwE,EAAOA,GAAQ,CAAC,EACsCpgH,EAASjnD,EAAO1gG,MAAOm2W,GACzE1+J,EAAasjI,IAAgBhzE,EAAKtwD,WAAYwgI,EAAiBxlB,GAC/DvqR,EAASyyS,IAAY1C,EAAiBA,EAAgBp7U,KAAMkrQ,EAAK7/N,OAAQ6/N,EAAKtwD,WAAY/2G,GAAQ,GAClG0+Q,EAAa,CACfnnC,gBAAiBA,EACjBlwE,KAAMA,EACNpgH,QAASA,EACT2xI,MAAOA,EACPm5B,UAAWA,EACXr/D,OAAQA,EACRwmE,WAAYA,EACZ1xR,OAAQA,EACRuvK,WAAYA,EACZ9sJ,KAAMA,EACN+1C,OAAQA,GAGNq9N,EAAa,IAA2B8qE,KAE5C,IACE,IAAK9qE,EAAW/rT,MAAO8rT,EAASC,EAAWj7S,KAAK0pB,MAAO,CACrD,IAAI0iK,EAAW4uH,EAAOznU,MAClBA,EAAQ64M,KAAYqnK,IAAYA,IAAUrnK,GAAUkwK,GAAcl8B,IAAeh0I,GAAY64D,EAAK74D,QAAYvkL,EAC9GiiJ,OAAqBjiJ,IAAVt0B,EACXqzU,EAAW,IAAWrzU,EAAO64M,EAAU64D,EAAMuxB,EAAO3xI,GACxD,GAAIilB,GAAY88J,EACd44D,EAAclsY,IAAI84M,EAAU74M,EAAOqzU,OAC9B,CACL,IAAI3jR,EAAOm9R,IAAeh0I,IAA0B,WAAbA,EAAwBgnK,IAAchnK,EAAUxuG,EAAO1gG,MAAO+nQ,EAAK/nQ,MAAOm2W,GAAe,CAAC,EAC/Hm0B,EAAmBvkV,EAAKswT,YACxBA,OAAmC,IAArBi0B,OAA8B3/W,EAAY2/W,EACxDC,EAAkBxkV,EAAKqwT,WACvBA,OAAiC,IAApBm0B,OAA6B5/W,EAAY4/W,EACpDC,OAAiC7/W,IAAhB0rV,EACjBzpM,IAAa49N,EAEflI,EAAclsY,IAAI84M,EAAU74M,EAAOqzU,IAIpB,iBAAf0sC,GAEFizB,IAA2BrzW,IAAIk5K,IAAas7L,GAE5CjpD,IAAuB80B,IAAgB/uC,IAAY+uC,KAEjDisB,EAAclsY,IAAI84M,EAAUmnK,GAAa,EAE7C,CACF,CAEF,CAAE,MAAO36U,GACPqiS,EAAW3lU,EAAEsjC,EACf,CAAE,QACAqiS,EAAWxmU,GACb,CACA,IAAIkzY,EAAoD,QAApCf,EAAiB3hI,EAAKm4E,gBAAyC,IAAnBwpD,EAA4BA,EAAiB,CAAC,EAC1GhzE,EAAa8qB,IAAW37T,QAAO,SAAUztB,EAAGo3U,GAC9C,IAAIk7D,EACJ,IAAKpI,EAAcntB,YAAY3lC,GAE7B,OAAOp3U,EAET,IAAIuyY,EAAmBtvB,IAA+D,QAA7CqvB,EAAqBD,EAAaj7D,UAA0C,IAAvBk7D,EAAgCA,EAAqB,CAAC,EAAGpxG,GACnJjjS,EAAiB,WAATm5U,EDxUT,SAAgBl2C,EAAO3xI,EAASijP,GACrC,IAAIvV,EACAn1C,EAAW5mD,EAAM4mD,SACnBx/O,EAAS44L,EAAM54L,OACbu3O,EAAoF,QAAjEo9C,EAAsBx2C,IAAmBqB,EAASv4L,WAA+C,IAAxB0tO,EAAiCA,EAAsBx2C,IAAmBqB,EAAS1c,IAAyB77K,KACxMogH,EAAOuxB,EAAMvxB,KAAKpgH,IAAY,CAAC,EAC/Bz/G,EAAS6/N,EAAK7/N,OAChBuvK,EAAaswD,EAAKtwD,WACpB,GAAIyhI,IAAmBzhI,GACrB,OAAO,IAAc,CACnB1iM,KAAMukU,IAAiB,CACrBrB,gBAAiBA,EACjBlkN,MAAO,cACP7rF,OAAQA,EACRuvK,WAAYA,EACZ/2G,OAAQA,KAETkqS,GACE,QAAejgX,IAAXud,QAAuCvd,IAAf8sL,GAA4B/2G,EAAO+4O,kBAAmB,CACvF,GAAwC,iBAApCD,IAAevB,GAAqC,CACtD,GAAI4C,IAA0B5C,IAA8C,cAA1BA,EAAgBh5E,OAAyBv+J,EAAOg5O,2BAChG,OAAO,IAAc,CACnB3kU,KAAMukU,IAAiB,CACrBrB,gBAAiBA,EACjBlkN,MAAO,cACP7rF,OAAQw4D,EAAOi5O,uBACfliI,WAAY/2G,EAAOg5O,2BACnBh5O,OAAQA,KAETkqS,GACE,GAAIlqS,EAAOk5O,iBAChB,OAAO,IAAc,CACnB7kU,KAAMukU,IAAiB,CACrBrB,gBAAiBA,EACjBlkN,MAAO,cACP7rF,OAAQw4D,EAAOgnH,aACfjQ,WAAY/2G,EAAOk5O,iBACnBl5O,OAAQA,KAETkqS,EAEP,CACA,GAAwC,aAApCpxD,IAAevB,IAAmCv3O,EAAOm5O,gBAAkBnC,IAAWO,KAAqBA,EAAgB9I,SAC7H,OAAO,IAAc,CACnBp6T,KAAMukU,IAAiB,CACrBrB,gBAAiBA,EACjBlkN,MAAO,cACP7rF,OAAQw4D,EAAOimH,WACflP,WAAY/2G,EAAOm5O,eACnBn5O,OAAQA,KAETkqS,EAEP,CACA,OAAOA,CACT,CCiRoC,CAActxG,EAAO3xI,EAASgjP,GAAoBA,EAMlF,YALchgX,IAAVt0B,GAAwBsoU,GAAQtoU,KAClC+B,EAAEo3U,GAAQ,CACR91U,OAAQrD,IAGL+B,CACT,GAAG,CAAC,GAKJ,OAHKumU,GAAQjI,IACX4rE,EAAclsY,IAAI,SAAUsgU,IAAc3uD,EAAKm4E,eAAgCv1T,IAApBo9O,EAAK6xD,YAE3D0oE,CACT,CC3VA,SAAS,IAA2BhpX,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CCDlL,SAAS,IAAQv0L,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CCDzf,SAAS,IAAQi8B,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CCDzf,SAAS,IAAQi8B,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CCDzf,SAAS,IAAQi8B,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CCDzf,SAAS,IAAQi8B,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CCDzf,SAAS,IAAQi8B,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CCDzf,SAAS,IAAQi8B,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAEzf,SAASw/X,IAAa9iG,EAAOuxG,GACdvxG,EAAM54L,OACnB,OAAO,IAAc,IAAc,IAAc,IAAc,IAAc,IAAc,CAAC,EAAG,IAAuB44L,EAAO,CAC3H/wM,MAAO,SACPssK,SAAU,SACV5sN,MAAO,UACPzP,KAAM,UACN46N,OAAQ,SACRvhO,MAAO,YACJ,IAAqB,IAAKynQ,EAAO,CACpCsyE,WAAY,SACT,IAAqB,IAAKtyE,EAAO,CACpCsyE,WAAY,SACT,IAAmB,OAAQtyE,IAAS,IAAmB,QAASA,IAEhE,SAAqBA,EAAO54L,EAAQmqS,GACzC,GAAIA,EACF,MAAO,CACLlxY,MAAO,CACLtD,MAAOw0Y,IAIb,OAAO,IAAmB,QAASvxG,EACrC,CAXgFwxG,CAAYxxG,EAAO54L,EAAQmqS,GAC3G,CCjBA,SAAS,IAAQhyW,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CCDzf,SAAS,IAAQi8B,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAElf,IAAI,IAAO,CAChBmuY,OAAQ,OACR1O,YAAa,SAAqB/iG,GAChC,IACIlmC,EADUkmC,EAAMk+C,QACCpkF,OACrB,OAAKkmC,EAAM4mD,SAAS/gV,GAAMm6R,EAAM4mD,SAAS9gV,GAAMk6R,EAAM4mD,SAAS7d,UAAa/oC,EAAM4mD,SAAShqE,UAInF,IAAc,IAAc,IAAc,IAAc,CAAC,EAAG,IAAuBojB,EAAO,CAC/F/wM,MAAO,SACPssK,SAAU,SACV5sN,MAAO,UACPmrN,OAAQ,SACR56N,KAAM,SACN3G,MAAO,YACJ,IAA4B,IAAKynQ,EAAO,CAC3CsyE,WAAuB,eAAXx4G,EAA0B,YAAc,MACpDq5G,YAAa,YACb5wT,MAAkB,aAAXu3M,KACJ,IAA4B,IAAKkmC,EAAO,CAC3CsyE,WAAuB,aAAXx4G,EAAwB,YAAc,MAClDq5G,YAAa,YACb5wT,MAAkB,eAAXu3M,KACJ,IAAmB,OAAQkmC,EAAO,CACrC+uC,UAAW,iBAlBJ,CAAC,CAoBZ,GC9BF,SAAS,IAAQxvS,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAGlf,IAAI,IAAO,CAChBmuY,OAAQ,OACR1O,YAAa,SAAqB/iG,GAChC,IAAI54L,EAAS44L,EAAM54L,OACN44L,EAAM4mD,SACnB,OAAO,IAAc,IAAc,IAAc,IAAc,IAAc,IAAc,IAAc,IAAc,IAAc,IAAc,CAAC,EAAG,IAAuB5mD,EAAO,CACnL/wM,MAAO,UACPssK,SAAU,UACV5sN,MAAO,UACPzP,KAAM,SACN46N,OAAQ,SACRvhO,MAAO,aACJ,IAAqB,IAAKynQ,EAAO,CACpCsyE,WAAY,SACT,IAAqB,IAAKtyE,EAAO,CACpCsyE,WAAY,SACT,IAAYtyE,IAAS,IAAmB,OAAQA,EAAO,CAC1D+uC,UAAW,cACR,IAAmB,QAAS/uC,IAAS,IAAsB,QAOpE,SAAek+C,EAAS0I,EAAUx/O,GAChC,IAAIruF,EAAI+1T,IAAoB,QAASoP,EAAS92O,GAC9C,QAAU/1E,IAANtY,EACF,MAAO,SAGT,MACF,CAd6Ek2E,CAAM+wM,EAAMk+C,QAAS0I,EAAUx/O,KAAW,IAAsB,WAe7I,SAAkB82O,EAAS0I,EAAUx/O,GACnC,IAAIvpF,EAAIixT,IAAoB,WAAYoP,EAAS92O,GACjD,QAAU/1E,IAANxT,EACF,MAAO,SAGT,MACF,CAtByJ,CAASmiR,EAAMk+C,QAAS0I,EAAUx/O,KAAW,IAAqB,SAAU44L,EAAO,CACtOsyE,WAAY,QACT,IAAqB,QAAStyE,EAAO,CACxCsyE,WAAY,OAEhB,GC3BF,SAAS,IAAQ/yU,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAMlf,IAAIyrR,IAAO,CAChB0iH,OAAQ,OACR1O,YAAa,SAAqB/iG,GAChC,IAAI54L,EAAS44L,EAAM54L,OACjB82O,EAAUl+C,EAAMk+C,QACdpkF,EAASokF,EAAQpkF,OACjBy5G,EAA2B,eAAXz5G,EAA0B,QAAU,SACpD43I,EAAgC,eAAX53I,EAA0B,SAAW,QAC9D,OAAO,IAAc,IAAc,IAAc,IAAc,IAAc,CAAC,EAAG,IAAuBkmC,EAAO,CAC7G/wM,MAAO,SACPssK,SAAU,SACV5sN,MAAO,UACPmrN,OAAQ,SACR56N,KAAM,SACN3G,MAAO,YACJ,IAAqB,IAAKynQ,EAAO,CACpCsyE,WAAY,MACZvjC,UAAW,QACR,IAAqB,IAAK/uC,EAAO,CACpCsyE,WAAY,MACZvjC,UAAW,QACR,IAAmB,OAAQ/uC,EAAO,CACrCpgQ,aAAc+xW,IAAY3xG,GAC1B+uC,UAAWwkC,KACR,CAAC,GAAG,OAAgB,CAAC,EAAGm+B,EAAoBljE,IAAiBM,IAAoB,YAAaoP,EAAS92O,KAC9G,GAEF,SAASuqS,IAAY3xG,GACnB,IAAIyxE,EACArqQ,EAAS44L,EAAM54L,OACjB82O,EAAUl+C,EAAMk+C,QACdpkF,EAASokF,EAAQpkF,OACjBy5G,EAA2B,eAAXz5G,EAA0B,QAAU,SACpDpmP,EAAQssR,EAAMosE,kBAA6B,eAAXtyG,EAA0B,IAAM,KAChE83I,EAEI,QAFgBngC,EAAuB3iC,IAAoB,OAAQoP,EAAS92O,EAAQ,CAC1F2nO,UAAWwkC,WAC4B,IAAzB9B,EAAkCA,EAAuBrqQ,EAAO2nL,KAAKulF,SACrF,QAAyBjjV,IAArBugX,EACF,OAAOA,EAEP,IAAIn9B,EAAa/gW,EAAQA,EAAM9W,IAAI,cAAWy0B,EAC9C,OAAIojV,GAAcxmC,IAAcwmC,IAAelzT,GAASkzT,EAAWpyT,MACxC,EAAlBoyT,EAAWpyT,KAAW,EAGN,EADHq1S,IAA0BtwP,EAAO4lK,KAAMumG,GAChC,CAEjC,CCpDA,SAAS,IAA2BvzV,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAClL,SAAS,IAAQv0L,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAqBzf,IAAIuuY,IAAe,CACjBv3L,IXzBe,CACfm3L,OAAQ,MACR1O,YAAa,SAAqB/iG,GAChC,OAAO,IAAc,IAAc,IAAc,IAAc,IAAc,CAAC,EAAG,IAAuBA,EAAO,CAC7G/wM,MAAO,SACPssK,SAAU,SACV5sN,MAAO,UACPzP,KAAM,SACN46N,OAAQ,SACRvhO,MAAO,YACJ,IAAqB,IAAKynQ,EAAO,CACpCsyE,WAAY,SACT,IAAqB,IAAKtyE,EAAO,CACpCsyE,WAAY,SACT,IAAoBtyE,EAAO,WAAY,IAAoBA,EAAO,SACzE,GWWAx8O,KV1BgB,CAChBiuV,OAAQ,OACR1O,YAAa,SAAqB/iG,GAChC,OAAO,IAAc,IAAc,IAAc,IAAc,CAAC,EAAG,IAAuBA,EAAO,CAC/F/wM,MAAO,SACPssK,SAAU,SACV5sN,MAAO,UACPmrN,OAAQ,UACR56N,KAAM,SACN3G,MAAO,YACJ,IAA4B,IAAKynQ,EAAO,CAC3CsyE,WAAY,YACZa,YAAa,YACb5wT,MAAgC,eAAzBy9O,EAAMk+C,QAAQpkF,UAClB,IAA4B,IAAKkmC,EAAO,CAC3CsyE,WAAY,YACZa,YAAa,YACb5wT,MAAgC,aAAzBy9O,EAAMk+C,QAAQpkF,UAClB,IAAekmC,GACtB,GUQA2rC,IT3Be,CACf8lE,OAAQ,OACR1O,YAAa,SAAqB/iG,GAChC,OAAO,IAAc,IAAc,IAAc,CAAC,EAAG,IAAuBA,EAAO,CACjF/wM,MAAO,SACPssK,SAAU,SACV5sN,MAAO,UACPmrN,OAAQ,SACR56N,KAAM,SACN3G,MAAO,YACJ,IAAoBynQ,EAAO,MAAO,IAAoBA,EAAO,KACpE,GSiBA3kR,OLGkB,CAClBo2X,OAAQ,SACR1O,YAAa,SAAqB/iG,GAChC,OAAO8iG,IAAa9iG,EAAO,SAC7B,GKNA4rC,SR3BoB,CACpB6lE,OAAQ,QACR1O,YAAa,SAAqB/iG,GAChC,OAAO,IAAc,CAAC,EAAG,IAAuBA,EAAO,CACrD/wM,MAAO,SACPssK,SAAU,SACV5sN,MAAO,UACPzP,KAAM,SACN46N,OAAQ,SACRvhO,MAAO,WAEX,EACAu5W,sBAAuB,SAA+B9xG,GACpD,IACI+xG,EADW/xG,EAAM4mD,SACGvmV,MASxB,MAAO,CARS,IAAc,CAC5BkD,KAAM,WACNm4Q,WAAYskB,EAAM0tE,kBACjBqkC,GAAY3zD,IAAW2zD,IAAaA,EAASxuY,OAASm2U,IAAU,CACjEj/M,MAAO,IAAQs3Q,EAAU,CACvBznK,KAAM,WAEN,CAAC,GAEP,GQIA7mH,MP9BiB,CACjBguR,OAAQ,QACR1O,YAAa,SAAqB/iG,GAChC,OAAO,IAAc,IAAc,IAAc,IAAc,CAAC,EAAG,IAAuBA,EAAO,CAC/F/wM,MAAO,SACPssK,SAAU,SACV5sN,MAAO,SACPmrN,OAAQ,SACR56N,KAAM,SACN3G,MAAO,YACJ,IAAoBynQ,EAAO,MAAO,IAAoBA,EAAO,MAAO,IAAYA,EAAO,OAC9F,GOoBAlvQ,KN/BgB,CAChB2gX,OAAQ,OACR1O,YAAa,SAAqB/iG,GAChC,OAAO,IAAc,IAAc,IAAc,IAAc,IAAc,CAAC,EAAG,IAAuBA,EAAO,CAC7G/wM,MAAO,SACPssK,SAAU,SACV5sN,MAAO,UACPzP,KAAM,SACN46N,OAAQ,SACRvhO,MAAO,YACJ,IAAqB,IAAKynQ,EAAO,CACpCsyE,WAAY,SACT,IAAqB,IAAKtyE,EAAO,CACpCsyE,WAAY,SACT,IAAmB,OAAQtyE,EAAO,CACrC+uC,UAAW,iBACR,IAAe/uC,GACtB,GMeAp6R,MLPiB,CACjB6rY,OAAQ,SACR1O,YAAa,SAAqB/iG,GAChC,OAAO8iG,IAAa9iG,EACtB,GKIA5kR,KJjCgB,CAChBq2X,OAAQ,OACR1O,YAAa,SAAqB/iG,GAChC,OAAO,IAAc,IAAc,IAAc,CAAC,EAAG,IAAuBA,EAAO,CACjF/wM,MAAO,SACPssK,SAAU,SACV5sN,MAAO,UACPmrN,OAAQ,SACR56N,KAAM,SACN3G,MAAO,YACJ,IAAoBynQ,EAAO,MAAO,IAAoBA,EAAO,KACpE,GIuBAjkK,KAAM,IACNgkM,OLEkB,CAClB0xE,OAAQ,SACR1O,YAAa,SAAqB/iG,GAChC,OAAO8iG,IAAa9iG,EAAO,SAC7B,GKLAvkR,KAAM,IACNszQ,KAAMA,IACNp9B,MNnBiB,CACjB8/I,OAAQ,QACR1O,YAAa,SAAqB/iG,GAChC,OAAO,IAAc,IAAc,IAAc,IAAc,IAAc,CAAC,EAAG,IAAuBA,EAAO,CAC7G/wM,MAAO,SACPssK,SAAU,SACV5sN,MAAO,UACPzP,KAAM,UACN46N,OAAQ,SACRvhO,MAAO,YACJ,IAAqB,IAAKynQ,EAAO,CACpCsyE,WAAY,SACT,IAAqB,IAAKtyE,EAAO,CACpCsyE,WAAY,SACT,IAAmB,OAAQtyE,IAAS,IAAeA,GAC1D,IMMK,SAASgyG,IAAgBhyG,GAC9B,GAAI,GAAS,CAACw8C,IAAMH,IAAMO,KAAQ58C,EAAM3uO,MAAO,CAC7C,IAAIi7R,EAAUD,IAAmBrsD,EAAM3uO,KAAM2uO,EAAM4mD,UACnD,GAAI0F,EAAQ7wV,OAAS,EACnB,OAcN,SAAuBukS,EAAOssD,GAE5B,MAAO,CAAC,CACNzvV,KAAMmjS,EAAM6uE,QAAQ,aACpBtrW,KAAM,QACN2wB,KAAM,CACJohS,MAAO,CACLz4T,KAAMo1Y,IAAsBjyG,EAAMmoF,gBAAgBrf,IAAesf,MACjE9nW,KAAM0/Q,EAAMmoF,gBAAgBrf,IAAesf,MAC3C1gJ,QAAS4kH,IAGb/2H,OAAQ,CACNn1N,OAAQ,CACNuI,MAAO,CACL8xH,MAAO,CACLnuH,MAAO,UAGX1D,OAAQ,CACN6xH,MAAO,CACLnuH,MAAO,aAMf69P,MAAO+nI,IAAalyG,EAAO,CACzBmyG,WAAYF,OAGlB,CA7CaG,CAAcpyG,EAAOssD,EAGhC,MAAO,GAAItsD,EAAM3uO,OAASirR,IAAK,CAC7B,IAAInpF,EAAkBk7E,IAAyB/4Q,MAAK,SAAUx1D,GAC5D,OAAOgvU,IAAoBhvU,EAAMkgS,EAAMk+C,QAASl+C,EAAM54L,OACxD,IACA,GAAI44L,EAAMr6B,QAAUq6B,EAAMwxC,SAAS,SAAWr+E,EAC5C,OA4CN,SAAgD6sC,GAC9C,IAAIqyG,EAoCAC,EACAC,EAnCAC,EAAgBN,IAAalyG,EAAO,CACpCmyG,WAAYM,MAGdphV,GADiB,OAAemhV,EAAe,GACzB,GAEpBE,EAAa1yG,EAAMgc,UAAUhc,EAAMr6B,MAAMw4F,cACzC62B,EAAa,WACf,IAAIltO,EAAMtsJ,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/E,OAAOwkS,EAAMmsE,QAAQnsE,EAAMr6B,MAAMw4F,aAAcr2M,EACjD,EAEI6qP,EAAkB,SAAyBx3W,EAAMmvM,GACnD,IAAIsoK,EAAgB,CAAC5d,EAAW,CAC9B10V,OAAQ,MACR6vH,OAAQ,QACRm6E,KAAMA,IACJ0qJ,EAAW,CACb10V,OAAQ,MACR6vH,OAAQ,QACRm6E,KAAMA,IACJ0qJ,EAAW,CACb10V,OAAQ,MACR6vH,OAAQ,MACRm6E,KAAMA,IACJ0qJ,EAAW,CACb10V,OAAQ,MACR6vH,OAAQ,MACRm6E,KAAMA,KAER,MAAO,GAAGn8N,OAAOgtB,EAAM,KAAKhtB,OAAOykY,EAAchnX,KAAI,SAAU6uG,GAC7D,MAAO,UAAUtsH,OAAOukY,EAAY,MAAMvkY,OAAOssH,EAAO,IAC1D,IAAGx2G,KAAK,KAAM,IAChB,EAIiC,MAA7B+7Q,EAAMr6B,MAAMw4F,cAGdm0C,EAAc,IAAc,IAAc,CAAC,EAAG,GAAKjhV,EAAKkkK,OAAOn1N,OAAQ,CAAC,IAAK,KAAM,KAAM,UAAU+N,QAAO,QAAmBkgU,QAA8B,CAAC,EAAG,CAC7JxoU,EAAG,CACDu+S,OAAQuuF,EAAgB,MAAO,UAEjCz1X,GAAI,CACFknS,OAAQuuF,EAAgB,MAAO,UAEjC9iY,KAAM,CACJ9S,OAAO,KAIXw1Y,EAAmB,CACjB1sY,EAAG,CACD40H,MAAO,CACLnuH,MAAO,KAETylQ,MAAO,GAETnpQ,OAAQ,CACN6xH,MAAO,CACLnuH,MAAO,YAMb+kD,EAAKkkK,OAAOn1N,OAAS,IAAc,IAAc,CAAC,EAAG,GAAKixD,EAAKkkK,OAAOn1N,OAAQ,CAAC,IAAK,KAAM,QAAS,CAAC,EAAG,CACrGwI,OAAQ,CACN6xH,MAAO,CACLnuH,MAAO,eAKbgmY,EAAc,IAAc,IAAc,CAAC,EAAG,GAAKjhV,EAAKkkK,OAAOn1N,OAAQ,CAAC,IAAK,KAAM,KAAM,WAAY,CAAC,EAAG,CACvG0F,EAAG,CACDs+S,OAAQuuF,EAAgB,MAAO,UAEjCx1X,GAAI,CACFinS,OAAQuuF,EAAgB,MAAO,UAEjC9iY,KAAM,CACJ9S,OAAO,KAGXw1Y,EAAmB,CACjBzsY,EAAG,CACD20H,MAAO,CACLnuH,MAAO,KAETylQ,MAAO,GAETppQ,MAAO,CACL8xH,MAAO,CACLnuH,MAAO,WAIb+kD,EAAKkkK,OAAOn1N,OAAS,IAAc,IAAc,CAAC,EAAG,GAAKixD,EAAKkkK,OAAOn1N,OAAQ,CAAC,IAAK,KAAM,QAAS,CAAC,EAAG,CACrGuI,MAAO,CACL8xH,MAAO,CACLnuH,MAAO,aAMf,IACE6sN,EADEC,EAAY,IAA2Bi1G,KAE3C,IACE,IAAKj1G,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIzX,EAAM09L,EAAMp8N,MACZggX,EAAc9tC,IAAcxzS,EAAKukQ,EAAMk+C,QAASl+C,EAAM54L,QAEtD/1C,EAAKkkK,OAAOn1N,OAAOq7B,IACrB62W,EAAY72W,GAAO41B,EAAKkkK,OAAOn1N,OAAOq7B,UAC/B41B,EAAKkkK,OAAOn1N,OAAOq7B,IACjBshV,IACTu1B,EAAY72W,GAAO+yS,IAAiBuuC,IAGlCA,IACF1rT,EAAKkkK,OAAOn1N,OAAOq7B,GAAO,CACxB1+B,MAAO,GAGb,CACF,CAAE,MAAOqlC,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACA,IAAIypO,EAAU,GACd,IAA+D,QAAzD2qK,EAAwBryG,EAAMr6B,MAAM64F,uBAAuD,IAA1B6zC,OAAmC,EAASA,EAAsB52Y,QAAU,EAAG,CACpJ,IACEoiO,EADEC,EAAa,IAA2BkiE,EAAMr6B,MAAM64F,iBAExD,IACE,IAAK1gI,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,CACrD,IAAI8iV,EAAiBn4J,EAAO9gO,MAExB81Y,EAAe7yG,EAAMwxC,SAASwkD,GAC9Bv7P,EAAQ,IAAQo4Q,GAChBp4Q,GACFitG,EAAQvsO,KAAKs/H,IAEXo4Q,SAAoDA,EAAa9rL,KAAO8rL,SAAoDA,EAAah9D,WAC3InuG,EAAQvsO,KAAK,IAAQ03Y,EAAc,CACjCtzD,UAAW,QAGjB,CACF,CAAE,MAAOn9S,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACF,CAGAq0Y,EAFuB,CAAC,SAAU,cAAe,aAAc,YAAa,aAAc,mBAAoB,mBAAoB,iBAEnG/lX,QAAO,SAAUgpM,EAAQz1N,GACtD,GAAIuxD,EAAKkkK,OAAOn1N,OAAON,GACrB,OAAO,IAAc,IAAc,CAAC,EAAGy1N,GAAS,CAAC,GAAG,OAAgB,CAAC,EAAGz1N,EAAMuxD,EAAKkkK,OAAOn1N,OAAON,KAEjG,IAAIi9W,EAAc9tC,IAAcnvU,EAAMkgS,EAAMk+C,QAASl+C,EAAM54L,QAC3D,YAAoB/1E,IAAhB0rV,EACK,IAAc,IAAc,CAAC,EAAGxnJ,GAAS,CAAC,GAAG,OAAgB,CAAC,EAAGz1N,EAAM0uU,IAAiBuuC,KAExFxnJ,CAGb,GAAG+8K,GAECA,EAAYv2X,SACdu2X,EAAY73I,iBAAmB,CAC7B19P,OAAO,GAETu1Y,EAAYr4I,aAAe,CACzBl9P,MAAO,IAGX,MAAO,CAAC,CACNwG,KAAM,QACN2wB,KAAM,CACJohS,MAAO,CACLh1S,KAAM0/Q,EAAMmoF,gBAAgBrf,IAAesf,MAC3CvrX,KAAM41Y,IAAqBzyG,EAAMmoF,gBAAgBrf,IAAesf,MAChE1gJ,QAASA,EACT0vF,UAAW,CACT58L,OAAQ,CAACw6P,EAAW,CAClB7kO,OAAQ,UACN6kO,EAAW,CACb7kO,OAAQ,UACN6kO,EAAW,CACb7kO,OAAQ,QACN6kO,EAAW,CACb7kO,OAAQ,SAEVxoG,IAAK,CAAC,MAAO,MAAO,MAAO,UAIjC4tK,OAAQ,CACNn1N,OAAQkyY,GAEVnoI,MAAO,CAAC,CACN5mQ,KAAM,QACNgyN,OAAQ,CACNn1N,OAAQmyY,GAEVpoI,MAAO,CAAC94M,MAGd,CApQayhV,CAAuC9yG,EAElD,CACA,OAAOkyG,IAAalyG,EACtB,CACA,IAAIiyG,IAAsB,gBAiC1B,IAAIQ,IAAqB,eA+RzB,SAASP,IAAalyG,GACpB,IAAIl4I,EAAMtsJ,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,CAC5E22Y,WAAY,IAEV9gV,EAAO2uO,EAAM3uO,KACf6sR,EAAUl+C,EAAMk+C,QAChB0I,EAAW5mD,EAAM4mD,SACjBx/O,EAAS44L,EAAM54L,OACbv3F,EAAOs2T,GAAgB+X,EAAQruU,KAoCrC,SAAmBmwR,GACjB,IAAI+yG,EAAS/yG,EAAMosE,kBAAkB,KACjC4mC,EAAShzG,EAAMosE,kBAAkB,KACrC,SAAO2mC,SAAwCA,EAAOn2Y,IAAI,oBAAsBo2Y,SAAwCA,EAAOp2Y,IAAI,0BAA4By0B,CACjK,CAxC2C4hX,CAAUjzG,GA6CrD,SAAwBA,GACtB,IAAItkB,EAAaskB,EAAM5lO,UAAUshN,WACjC,SAAOA,GAAeA,EAAWotG,aAAez3V,CAClD,CAhD6D6hX,CAAelzG,IACtEt5R,EAAQkoU,IAAUsP,GAClBziT,EAAMmrT,EAASnrT,IACftuB,EA3EC,SAAiB6yR,GACtB,IAAI4mD,EAAW5mD,EAAM4mD,SACnBjhF,EAAQq6B,EAAMr6B,MACdt0M,EAAO2uO,EAAM3uO,KACb6sR,EAAUl+C,EAAMk+C,QAChB92O,EAAS44L,EAAM54L,OACblvD,EAAQ0uS,EAAS1uS,MACrB,MAAK,GAAQA,IAAUunS,IAAWvnS,IAAUwrR,GAAcxrR,EAAMn7C,SAAWm7C,GAASwrR,GAAcoL,IAAoB,QAASoP,EAAS92O,KAAxI,CAEO,IAAK,GAAQlvD,IAAUkmS,IAAWlmS,MAAYytN,EAEnD,OAAO2pE,IAAWp3R,EAAO,CACvBoyL,KAAM,UAEH,GAAI0yG,IAAW3rR,GAAf,CAEL,IAAIitS,EAAsC,eAAnBpgB,EAAQpkF,OAA0B,IAAM,IAC3D+zH,EAAsBjnC,EAAS0X,GACnC,GAAIlgB,IAAWyvC,GAAsB,CACnC,IA+BM3W,EA/BFx+V,EAAIm1W,EAAoB1gX,KAC5B,GAAI,GAAQuL,GACV,MAAO,CACL+hH,MAAO,IAAQozP,EAAqB,CAClCvtV,OAAQg+T,EACRnuM,OAAQ,aACRm6E,KAAM,WAGL,GAAI43G,IAAYxpU,GACrB,MAAO,CACL+hH,MAAO,IAAQ,CAGb28L,UAAW6zB,IAAYjrD,EAAM4mD,UAAYluU,EAAEmvC,QAAKx2B,EAChDopG,MAAO/hH,EAAE+hH,OACR,CACD6vG,KAAM,WAGL,GAAI23G,IAAiBvpU,GAE1B,MAAO,CACL+hH,MAAO,IAFYulK,EAAMwxC,SAAS94T,EAAEkuU,UAEL,CAC7Bt8G,KAAM,UAERpyL,MAAOx/B,EAAEw/B,OAEN,GAAU,OAANx/B,EACT,OAGA,MAAO,CACL+hH,MAAO,IAAQozP,EAAqB,CAElCtuC,UAA4C,QAAhC23B,EAAel3E,EAAMr6B,aAAoC,IAAjBuxG,GAA2BA,EAAa5pI,OAAS,WAAQj8M,EAC7Gi5M,KAAM,UAId,CAEF,EAEF,CAYa,CAAQ01D,GACfnlC,EAgDN,SAAyBmlC,GACvB,IAAKA,EAAM5lO,UAAUi/R,UAAW,OAAO,KACvC,IAAI85C,EAAY,GAAKnzG,EAAM5lO,UAAUi/R,WAAW59V,OAC5C23Y,EAAcD,EACd3mY,EAASwzR,EAAMxzR,OACnB,KAAOA,GAA0B,IAAhB4mY,GACfA,EAAc,GAAK5mY,EAAO4tD,UAAUi/R,WAAW59V,OAC/C+Q,EAASA,EAAOA,OAElB,OAAO4mY,EAAc,CACnBv4I,YAAas4I,EAAY,GAAoB,aAAfnzG,EAAM3uO,QAAyB2uO,EAAM4mD,SAASjnF,SAC1E,IACN,CA5DoB0zI,CAAgBrzG,GAC9BhtO,EAAO87Q,IAAoB,OAAQoP,EAAS92O,GAC5C0qS,EAAwBD,IAAaxgV,GAAMygV,sBAAwBD,IAAaxgV,GAAMygV,sBAAsB9xG,GAAS,KACzH,MAAO,CAAC,IAAc,IAAc,IAAc,IAAc,IAAc,IAAc,IAAc,CACxGnjS,KAAMmjS,EAAM6uE,QAAQ,SACpBtrW,KAAMsuY,IAAaxgV,GAAMogV,QACxB5hY,EAAO,CACRA,MAAM,GACJ,CAAC,GAAInJ,EAAQ,CACfA,MAAOA,GACL,CAAC,GAAI+0B,EAAM,CACbA,IAAKA,EAAIg/F,OACP,CAAC,GAAIttH,EAAO,CACdA,KAAMA,GACJ,CAAC,GAAI0tP,GAA4B,CAAC,IAAa,IAAT7nM,EAAiB,CACzDA,KAAMA,GACJ,CAAC,GAAI,CAAC,EAAG,CACX9+B,KAAM,CACJ5T,KAAMwnI,EAAIqqP,WAAanyG,EAAMmoF,gBAAgBrf,IAAesf,OAE9D7yJ,OAAQ,CACNn1N,OAAQyxY,IAAaxgV,GAAM0xU,YAAY/iG,KAExC8xG,EAAwB,CACzBpjY,UAAWojY,GACT,CAAC,GACP,CC5ZA,SAAS,IAA2B9xX,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAClL,SAAS,IAAQv0L,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CACzf,SAAS,IAAag7O,GAAW,IAAIC,EACrC,WAAuC,GAAuB,oBAAZ1kH,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFxqD,QAAQ10E,UAAU03C,QAAQh2C,KAAKq9H,QAAQC,UAAUtqD,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO1wE,KAAK,OAAO,CAAO,CAAE,CADvQ,GAA6B,OAAO,WAAkC,IAAsC0O,EAAlCgxO,GAAQ,QAAgBF,GAAkB,GAAIC,EAA2B,CAAE,IAAIE,GAAY,QAAgB7jP,MAAM8E,YAAa8N,EAASqsH,QAAQC,UAAU0kH,EAAOhjP,UAAWijP,EAAY,MAASjxO,EAASgxO,EAAMviP,MAAMrB,KAAMY,WAAc,OAAO,QAA2BZ,KAAM4S,EAAS,CAAG,CA8Bja,IAAI8lY,IAAyB,SAAU3J,IAC5C,QAAU2J,EAAW3J,GACrB,IAAIrtY,EAAS,IAAag3Y,GAC1B,SAASA,EAAUrlL,EAAMzhN,EAAQ20X,GAC/B,IAAIoS,EACAl4Y,EACAm4Y,EAAkBh4Y,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACvF4rG,EAAS5rG,UAAUC,OAAS,EAAID,UAAU,QAAK61B,GACnD,QAAgBz2B,KAAM04Y,IACtBj4Y,EAAQiB,EAAOE,KAAK5B,KAAMqzN,EAAM,OAAQzhN,EAAQ20X,EAAiB/5R,OAAQ/1E,EAAW+lU,IAAcnpI,GAAQA,EAAK++C,UAAO37O,IAChH0nW,gBAAkB,CAAC,EACzB19X,EAAMo4Y,cAAgB,CAAC,EACvBp4Y,EAAMq4Y,iBAAmB,CAAC,EAC1Br4Y,EAAM0sX,oBAAsB,CAAC,EAC7B1sX,EAAMg+V,UAAY,GAClBh+V,EAAMoP,SAAW,GACjB,IAAIyzU,EAAUf,IAAUlvH,EAAK58J,MAAQ,IAAc,CAAC,EAAG48J,EAAK58J,MAAQ,CAClE9tD,KAAM0qN,EAAK58J,MAETA,EAAO6sR,EAAQ36U,UAEI8tB,IAAnB6sT,EAAQ5xT,SACV4xT,EAAQ5xT,OhIKP,SAAuB4xT,EAAS92O,EAAQ36C,GAE7C,GADgBA,EAAKm8N,UAEnB,OAAO,EAET,IAAI+qH,EAAe1kE,IAAc,SAAUiP,EAAS92O,GAChD/1C,EAAO6sR,EAAQ36U,KACnB,OAAO4iU,GAAgBwtE,EAActiV,IAASmpR,KAASnpR,IAASmrR,KAAQnrR,IAASqrR,IACnF,CgIbuBk3D,CAAc11D,EAAS92O,EAAQ,CAC9CwhL,UAAW36D,EAAK3tM,MAAQkpV,IAAqBv7I,EAAK3tM,SAGtD,IAAIsmU,EAAWvrV,EAAMurV,SAAW+E,IAAa19H,EAAK24H,UAAY,CAAC,EAAGv1R,EAAM6sR,EAAQ5xT,OAAQ86E,GAoBxF,OAnBA/rG,EAAM6iV,QAAU+gB,IAAY/gB,EAAS0I,EAAUx/O,GAC/C/rG,EAAM6jC,Kb/DH,SAAwButB,GAC7B,IAGE0sK,EAHEytH,EAAWn6R,EAAKm6R,SAClB1nT,EAAOutB,EAAKvtB,KACVk6L,EAAY,IAA2BuxG,KAE3C,IACE,IAAKvxG,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIm7G,EAAU8qE,EAAMp8N,MAChBiuU,EAAWb,IAAe97K,GAC1B8oM,IAAOj4T,EAAK8rS,KACVqY,IAA4BuD,EAASv4L,aAChCnvH,EAAK8rS,GACZ,IAAS,IAAwBA,IAGvC,CACF,CAAE,MAAO5oS,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACA,OAAOihC,CACT,CayCiB20W,CAAe,CAC1BjtD,SAAUA,EACV1nT,KAAMk4T,IAAcnpI,GAAQ,IAAc,IAAc,IAAc,CAAC,EAAGulL,GAAkBvlL,EAAKtlN,MAAQ,CACvGA,MAAOslN,EAAKtlN,OACV,CAAC,GAAIslN,EAAKrlN,OAAS,CACrBA,OAAQqlN,EAAKrlN,QACX,CAAC,GAAK4qY,IAGZn4Y,EAAMsqQ,MAAQA,IAAMtqQ,EAAM6iV,QAAS0I,GACnCvrV,EAAM09X,gBAAkB19X,EAAMy4Y,WAAWziV,EAAMu1R,GAC/CvrV,EAAMo4Y,cAAgBp4Y,EAAM04Y,SAASntD,GACrCvrV,EAAMq4Y,iBAAmBr4Y,EAAM24Y,YAAYptD,GAC3CvrV,EAAM0sX,oBAAsB95J,EAAKytD,WAEjCrgR,EAAMg+V,WAA8C,QAAhCk6C,EAAetlL,EAAK/xM,cAAqC,IAAjBq3X,EAA0BA,EAAe,IAAIpoY,QAAO,SAAU6N,GACxH,OAAOy9U,IAAqBz9U,EAC9B,IACO3d,CACT,CAwNA,OAvNA,QAAai4Y,EAAW,CAAC,CACvB73W,IAAK,gBACL7+B,IAAK,WACH,IAAIgqV,EAAWhsV,KAAKgsV,SAChBqtD,EAAiBr5Y,KAAKy2D,OAAS0rR,IAC/Bm3D,EAAiBttD,GAAYzd,IAAqB7zQ,MAAK,SAAU+4F,GACnE,OAAO4wL,IAAkB2H,EAASv4L,GACpC,IACA,OAAO4lP,GAAkBC,CAC3B,GAKC,CACDz4W,IAAK,cACL1+B,MAAO,SAAqBsxJ,GAC1B,IAAI36I,EAAQ9Y,KAAKm+X,gBAAgB1qO,GACjC,OAAO36I,EAAQA,EAAMyhC,YAAS9jB,CAChC,GACC,CACDoK,IAAK,OACL1+B,MAAO,SAAcsxJ,GACnB,OAAOzzJ,KAAK64Y,cAAcplP,EAC5B,GACC,CACD5yH,IAAK,SACL1+B,MAAO,SAAgBsxJ,GACrB,OAAOzzJ,KAAK84Y,iBAAiBrlP,EAC/B,GACC,CACD5yH,IAAK,aACL1+B,MAAO,SAAoBs0D,EAAMu1R,GAC/B,IAAIltR,EAAS9+D,KACb,OAAO0wU,IAAe/+S,QAAO,SAAUu4N,EAAQz2F,GAC7C,IAEMqyL,EAFF/B,EAAkB4G,IAAmBqB,EAASv4L,IAC9CswL,IAEF75F,EAAOz2F,GAAW30F,EAAO+kQ,UAA8D,QAAnDiiB,EAAwB/B,EAAgBjrU,aAA6C,IAA1BgtU,EAAmCA,EAAwB,CAAC,IAE7J,OAAO57F,CACT,GAAG,CAAC,EACN,GACC,CACDrpN,IAAK,YACL1+B,MAAO,SAAmB2W,GACxB,IAAIyhC,EAASzhC,EAAMyhC,OACjBoN,EAAQ7uC,EAAM6uC,MAEZ4xV,EAAgBlnE,IAAev5T,GAOnC,OANI,GAAQyhC,KACVg/V,EAAch/V,OAASA,EAAOvpB,IAAIuhT,MAEhC,GAAQ5qR,KACV4xV,EAAc5xV,MAAQA,EAAM32B,IAAIuhT,MAE3BgnE,CACT,GACC,CACD14W,IAAK,WACL1+B,MAAO,SAAkB6pV,GACvB,IAAIlsH,EAAS9/N,KACb,OAAO+vU,IAAwBp+S,QAAO,SAAUyjX,EAAO3hP,GAGrD,IAAI4vL,EAAa2I,EAASv4L,GAC1B,GAAI4wL,IAAkBhB,IAAe5vL,IAAY,IAAK4wL,IAAkB2H,EAAS1pU,KAAOmxI,IAAY,IAAK4wL,IAAkB2H,EAASzpU,IAAK,CACvI,IAAIi3X,EAAWn1D,IAAkBhB,GAAcA,EAAWxvE,UAAOp9O,EACjE2+W,EAAM3hP,GAAW+lP,EAAW15K,EAAO25K,SAAS,IAAc,CAAC,EAAGD,IAC5DA,CACJ,CACA,OAAOpE,CACT,GAAG,CAAC,EACN,GACC,CACDv0W,IAAK,WACL1+B,MAAO,SAAkB0xQ,GACvB,IAGEt1C,EAFEm7K,EAAe,CAAC,EAChBl7K,EAAY,IAFJ,GAAKq1C,IAIjB,IACE,IAAKr1C,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIpzC,EAAOq5N,EAAMp8N,MACbkD,EAAMwuQ,EAAK3uQ,GACfw0Y,EAAax0Y,GAAQmoV,IAAuBhoV,GAAOquU,IAA8BruU,GAAOktU,IAAiBltU,EAC3G,CACF,CAAE,MAAOmiC,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACA,OAAOq2Y,CACT,GACC,CACD74W,IAAK,cACL1+B,MAAO,SAAqB6pV,GAC1B,OAAOxb,IAA2B7+S,QAAO,SAAUi5V,EAASn3N,GAC1D,IAAIswL,EAAkB4G,IAAmBqB,EAASv4L,IAClD,GAAIswL,GzKwIL,SAAuBtwL,GAC5B,OAAQA,GACN,KAAKo5K,IACL,KAAKC,IACL,KAAKC,IACL,KAAK,IACL,KAAKC,IACL,KAAKE,IACL,KAAKG,IACL,KAAKC,IACH,OAAO,EACT,KAAKH,IACL,KAAKC,IACL,KAAKH,IACH,OAAO,EAEb,CyKxJ+B0sE,CAAclmP,GAAU,CAC7C,IAAI4jH,EAAS0sE,EAAgB1sE,OAC7BuzG,EAAQn3N,GAAW4jH,EAASg7D,IAAeh7D,GACzCA,CACJ,CACA,OAAOuzG,CACT,GAAG,CAAC,EACN,GACC,CACD/pV,IAAK,YACL1+B,MAAO,WACLnC,KAAKw/D,UAAU95C,KAAO,IAAW1lB,KACnC,GACC,CACD6gC,IAAK,kBACL1+B,MAAO,YrB9FJ,SAA6BijS,GAClC,IAGEj+D,EAHE7iM,EAAO8gQ,EAAM9gQ,KACfk7B,EAAY4lO,EAAM5lO,UAChB4nK,EAAa,IAA2B2oG,KAE5C,IACE,IAAK3oG,EAAWtpN,MAAOqpN,EAASC,EAAWx4M,KAAK0pB,MAAO,CACrD,IACI83R,EAAWb,IADDpoG,EAAOhlO,OAErB,GAAImiC,EAAK8rS,GAAW,CAClB,IAAIwpE,EAAgBt1W,EAAK8rS,GACzB5wQ,EAAUmnT,WAAWzkX,IAAIkuU,EAAUmsB,IAAOq9C,GAAiB,OAASA,GAAe,EACrF,KAAO,CACL,IAAI7C,EAAcnI,IAAgBxpG,EAAOgrC,GACzC5wQ,EAAUmnT,WAAWzkX,IAAIkuU,EAAU2mE,GAAa,EAClD,CACF,CACF,CAAE,MAAOvvW,GACP4/L,EAAWljO,EAAEsjC,EACf,CAAE,QACA4/L,EAAW/jO,GACb,CACF,CqByEMw2Y,CAAoB75Y,KACtB,GACC,CACD6gC,IAAK,kBACL1+B,MAAO,WACLnC,KAAKw/D,UAAUi/R,UpFnMd,SAA4Br5D,EAAO00G,GACxC,IAAIC,EAAW,CAAC,EACZC,EAAkB50G,EAAM54L,OAAOiyP,UACnC,IAAKq7C,IAAYA,EAAQj5Y,OAAQ,OAAOk5Y,EACxC,IACEx7K,EADEC,EAAY,IAA2Bs7K,GAE3C,IACE,IAAKt7K,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIlS,EAAMm4L,EAAMp8N,MACZF,EAAOyoU,GAAQtkS,EAAInkC,MACnBypW,EAAStlU,EAAI66I,OACbt4K,EAAO,GAAS+iW,GAAUA,EAASA,EAAO/iW,KAC1CilT,EAAWz/P,GAASu9S,GAAU9iC,GAAU8iC,GAAU,CACpD/iW,KAAMA,GAMJhH,EAAMq4Y,EAAgBrxY,GAC1B,IAAK,IAAIk4B,KAAOl/B,EAAK,CASjB,IAAIs4Y,EAPM,WAARp5W,GAA4B,cAARA,IAGZ,SAARA,IACF+sR,EAAS/sR,GAAO,IAAc,IAAc,CAAC,EAAGl/B,EAAIk/B,IAAO+sR,EAAS/sR,WAEhDpK,IAAlBm3R,EAAS/sR,KAAwC,IAAlB+sR,EAAS/sR,MAE1C+sR,EAAS/sR,GAAO+nS,GAAoC,QAAzBqxE,EAAWt4Y,EAAIk/B,UAA+B,IAAbo5W,EAAsBA,EAAWrsF,EAAS/sR,KAE1G,CACA,IASEoiM,EATEksI,EAAU4qC,EAAS93Y,GAAQ,IAAc,IAAc,CAAC,EAAG2rT,GAAW,CAAC,EAAG,CAC5E3rT,KAAMA,EACN0G,KAAMA,EACN2B,KAAM87B,EAAIjkC,MACViB,KAAMgjC,EAAIhjC,KACVtC,OAAQ,GAAS8sT,EAASztT,IAAM,GAAcytT,EAASztT,GAAI,SAAW,GAAMyoU,GAAUhb,EAASztT,OAE7F+5Y,EAAOtxE,GAAUxiS,GACjB88L,EAAa,IAA2BksI,KAE5C,IACE,IAAKlsI,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,CACrD,IAAInzB,EAAI89M,EAAO9gO,MACXgjB,EAAEw5N,QAAQwwH,IAAYhqV,EAAEshC,OAC1BthC,EAAEshC,MAAM2+O,EAAO+pE,EAAS+qC,EAE5B,CACF,CAAE,MAAO1yW,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACF,CACF,CAAE,MAAOmkC,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACA,OAAO02Y,CACT,CoFqIiCI,CAAmBn6Y,KAAMA,KAAKy+V,UAC3D,GACC,CACD59T,IAAK,iBACL1+B,MAAO,WACLnC,KAAKw/D,UAAU/I,KAAO2gV,IAAgBp3Y,KACxC,GACC,CACD6gC,IAAK,sBACL1+B,MAAO,WdzMJ,IAAuBijS,Ec0MxBplS,KAAKw/D,UAAUukQ,Md1MS3+B,Ec0MYplS,KdzMjC+vU,IAAwBp+S,QAAO,SAAUkiP,EAAMpgH,GAIpD,OAHI2xI,EAAM5lO,UAAU0qL,OAAOz2F,KACzBogH,EAAKpgH,GAAW,CAAC,IAAUA,EAAS2xI,KAE/BvxB,CACT,GAAG,CAAC,GcqMF,GACC,CACDhzO,IAAK,mCACL1+B,MAAO,SAA0Cm2M,GAC/C,OnHlIC,SAAiC8sF,EAAO9sF,GAC7C,IAAI8hM,EAGFnzK,EAFEozK,GAAgB,EAChBnzK,EAAa,IAA2BsF,GAA8D,QAAxD4tK,EAAyBh1G,EAAM5lO,UAAUi/R,iBAAkD,IAA3B27C,EAAoCA,EAAyB,CAAC,IAEhL,IACE,IAAI32P,EAAQ,WACV,IAAI0rN,EAAUloI,EAAO9kO,MACjBF,EAAOktW,EAAQltW,KACfimI,EAAQ,GAAYjmI,EAAOyyW,KAC3B4lC,EAAQhiM,EAAQ/nM,QAAO,SAAUuN,GACnC,OAAOA,EAAE7b,OAASA,CACpB,IACA,GAAqB,IAAjBq4Y,EAAMz5Y,OAAc,CACtB,IAAIwmC,EAA8B,WAApB8nU,EAAQ9nU,QAAuB,QAAU8nU,EAAQ9nU,QAC3DkzW,EAA2B,UAAjBprC,EAAQxmW,KAAmB,gBAAkB,IAC3D2vM,EAAQ/3M,KAAK,CACX0B,KAAMktW,EAAQltW,KACduD,OAAQ,GAAG+N,OAAOw+V,IAAsB,KAAKx+V,OAAO20H,EAAO,MAAM30H,OAAO,GAAY8zB,IAAU9zB,OAAOgnY,IAEzG,CACAF,GAAgB,EAChB,IACElzK,EADEC,EAAa,IAA2BgoI,KAE5C,IACE,IAAKhoI,EAAWtpN,MAAOqpN,EAASC,EAAWx4M,KAAK0pB,MAAO,CACrD,IAAInzB,EAAIgiN,EAAOhlO,MACXgjB,EAAEw5N,QAAQwwH,IAAYhqV,EAAEysV,kBAC1Bt5J,EAAUnzL,EAAEysV,gBAAgBxsE,EAAO+pE,EAAS72J,GAEhD,CACF,CAAE,MAAO9wK,GACP4/L,EAAWljO,EAAEsjC,EACf,CAAE,QACA4/L,EAAW/jO,GACb,CACF,EACA,IAAK6jO,EAAWppN,MAAOmpN,EAASC,EAAWt4M,KAAK0pB,MAC9CmrG,GAEJ,CAAE,MAAOj8G,GACP0/L,EAAWhjO,EAAEsjC,EACf,CAAE,QACA0/L,EAAW7jO,GACb,CACA,GAAIg3Y,EAAe,CACjB,IAAIG,EAAUliM,EAAQ/nM,QAAO,SAAUuN,GACrC,MAAkB,SAAXA,EAAE7b,IACX,IACuB,IAAnBu4Y,EAAQ35Y,QACVy3M,EAAQ3iM,QAAQ,CACd1T,KAAM,OACNE,MAAO,CAAC,EACRhC,GAAI,CAAC,CACHW,OAAQ,YACR0E,OAAQ,uCAIhB,CACA,OAAO6pW,IAAoB/2J,EAC7B,CmHqEamiM,CAAwBz6Y,KAAMs4M,EACvC,GACC,CACDz3K,IAAK,kBACL1+B,MAAO,WACL,MAAO,GAAGoR,QAAO,QAAmB6tW,IAAoBphX,QAAQ,QnH7L/D,SAAsColS,EAAO9sF,GAClD,IAAIu8J,EAEFt2I,EADEC,EAAY,IAA2BgO,GAA6D,QAAvDqoI,EAAwBzvE,EAAM5lO,UAAUi/R,iBAAiD,IAA1BoW,EAAmCA,EAAwB,CAAC,IAE5K,IACE,IAAKr2I,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAIE2qL,EAJEksI,EAAU5wI,EAAMp8N,MAChBF,EAAOktW,EAAQltW,KACfk7W,EAAa,GAAG5pW,OAAOtR,GAAMsR,OAAOm/V,IAAO,MAAMn/V,OAA2B,WAApB47V,EAAQ9nU,QAAuB,OAAS,UAAU9zB,OAAOokU,IAASvyC,GAAQ,MAClIliE,EAAa,IAA2BksI,KAE5C,IACE,IAAKlsI,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,CACrD,IAAInzB,EAAI89M,EAAO9gO,MACVgjB,EAAEw5N,QAAQwwH,KACXhqV,EAAEmzL,UAASA,EAAUnzL,EAAEmzL,QAAQ8sF,EAAO+pE,EAAS72J,IAC/CnzL,EAAEg4V,aAAYA,EAAah4V,EAAEg4V,WAAW/3E,EAAO+pE,EAASgO,IAC9D,CACF,CAAE,MAAO31U,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACAi1M,EAAQ/3M,KAAK,CACX0B,KAAMA,EAAO28W,IACbz+W,GAAI,CAAC,CACHW,OAAQ,CACN0oT,OAAQ2lD,EAAQltW,KAAOywW,KAEzBltW,OAAQ,UAAU+N,OAAO,GAAY47V,EAAQltW,KAAOyyW,KAAQ,MAAMnhW,OAAO4pW,EAAY,QAG3F,CACF,CAAE,MAAO31U,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACA,OAAOgsW,IAAoB/2J,EAC7B,CmHsJyFoiM,CAA6B16Y,KAAM,KACxH,GACC,CACD6gC,IAAK,wBACL1+B,MAAO,SAA+BujB,GACpC,OnH9EC,SAAmC0/Q,EAAO1/Q,GAC/C,IAAIi1X,EAMFtzK,EALEuzK,GAAW,QAAmBl1X,GAC9BkpH,EAAO+oM,IAASvyC,EAAO,CACzBitD,QAAQ,IAEN/qH,EAAa,IAA2BkF,GAA8D,QAAxDmuK,EAAyBv1G,EAAM5lO,UAAUi/R,iBAAkD,IAA3Bk8C,EAAoCA,EAAyB,CAAC,IAEhL,IACE,IAAIr9B,EAAS,WACX,IAAInO,EAAU9nI,EAAOllO,MACjB+lI,EAAQ,CACVjmI,KAAMktW,EAAQltW,KAAOyyW,KAUvB,GARIvF,EAAQp7H,QAAQi9H,iBAClB9oO,EAAMp0H,UAAY,CAAC,CACjBnL,KAAM,UACN4J,KAAM,CACJstH,MAAO27N,QAIT2T,EAAQ7kW,KAAM,CAChB,IAAIs1H,EAASuvO,EAAQp7H,QAAQ5tL,MAAMn1B,IAAI69U,KACvC3mO,EAAM1nG,OAAS2uU,EAAQp7H,QAAQi9H,eAAiB7B,EAAQ7kW,KAAK0mB,KAAI,SAAU9vB,GACzE,OAAO,OAAgB,CACrB0tI,KAAMA,GACL4sN,IAAcuT,IAAa7tW,GAAG,GAAO,GAC1C,IAAKiuW,EAAQ7kW,KAAK0mB,KAAI,SAAU9vB,GAC9B,MAAO,CACL0tI,KAAMA,EACNhP,OAAQA,EACRp/F,OAAQuuU,IAAa7tW,GAAG,GAE5B,GACF,CACe05Y,EAASrqY,QAAO,SAAUwV,GACvC,OAAOA,EAAE9jB,OAASktW,EAAQltW,KAAOyyW,GACnC,IACc7zW,QACZ+5Y,EAASr6Y,KAAK2nI,EAElB,EACA,IAAKo/F,EAAWxpN,MAAOupN,EAASC,EAAW14M,KAAK0pB,MAC9CglU,GAEJ,CAAE,MAAO91U,GACP8/L,EAAWpjO,EAAEsjC,EACf,CAAE,QACA8/L,EAAWjkO,GACb,CACA,OAAOu3Y,CACT,CmH0BaC,CAA0B76Y,KAAM0lB,EACzC,GACC,CACDmb,IAAK,iBACL1+B,MAAO,WACL,OAAO,IACT,GACC,CACD0+B,IAAK,wBACL1+B,MAAO,WACL,OAAO,IAAuBnC,KAChC,GACC,CACD6gC,IAAK,gBACL1+B,MAAO,WACL,IAAI24Y,EACAvrI,EAAyD,QAAhDurI,EAAuB96Y,KAAKw/D,UAAU/I,YAA2C,IAAzBqkV,EAAkCA,EAAuB,GAO9H,OAHK96Y,KAAK4R,QAAWqgW,IAAajyW,KAAK4R,UACrC29P,EAAQ0/F,IAA2BjvW,KAAMuvQ,IAEpCA,EAAMv+O,IAAIhxB,KAAK0mY,iBACxB,GACC,CACD7lW,IAAK,qBACL1+B,MAAO,WACL,IACE2J,GADS9L,KAAKoyQ,MAAQ,CAAC,GACVtmQ,MACf,YAAc2qB,IAAV3qB,EACKA,EAEL9L,KAAKgsV,SAAS/gV,GAAKjL,KAAKgsV,SAAS9gV,EAC5B,OAEA,MAEX,GACC,CACD21B,IAAK,aACL1+B,MAAO,WACL,OAAOnC,KAAKgsV,QACd,GACC,CACDnrT,IAAK,OACL7+B,IAAK,WACH,OAAOhC,KAAKsjV,QAAQ36U,IACtB,GACC,CACDk4B,IAAK,kBACL1+B,MAAO,SAAyBsxJ,GAC9B,OAAO,IAA2BzzJ,KAAKgsV,SAAUv4L,EACnD,GACC,CACD5yH,IAAK,WACL1+B,MAAO,SAAkBsxJ,GAEvB,OAAOi3L,IADU1qV,KAAKgsV,SAASv4L,GAEjC,GACC,CACD5yH,IAAK,gBACL1+B,MAAO,SAAuBsxJ,GAC5B,IAAImjL,EAAW52U,KAAK42U,SAASnjL,GAC7B,OAAI8wL,IAAgB3N,GACXA,EAEF,IACT,KAEK8hE,CACT,CAxQoC,CAwQlCvO,KCxSF,SAAS,IAA2B/kX,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAClL,SAAS,IAAQv0L,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CACzf,SAAS,IAAag7O,GAAW,IAAIC,EACrC,WAAuC,GAAuB,oBAAZ1kH,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFxqD,QAAQ10E,UAAU03C,QAAQh2C,KAAKq9H,QAAQC,UAAUtqD,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO1wE,KAAK,OAAO,CAAO,CAAE,CADvQ,GAA6B,OAAO,WAAkC,IAAsC0O,EAAlCgxO,GAAQ,QAAgBF,GAAkB,GAAIC,EAA2B,CAAE,IAAIE,GAAY,QAAgB7jP,MAAM8E,YAAa8N,EAASqsH,QAAQC,UAAU0kH,EAAOhjP,UAAWijP,EAAY,MAASjxO,EAASgxO,EAAMviP,MAAMrB,KAAMY,WAAc,OAAO,QAA2BZ,KAAM4S,EAAS,CAAG,CAeja,IAAImoY,IAA0B,SAAU3Q,IAC7C,QAAU2Q,EAAY3Q,GACtB,IAAI1oY,EAAS,IAAaq5Y,GAC1B,SAASA,EAAW1nL,EAAMzhN,EAAQ20X,EAAiBqS,EAAiBpsS,GAClE,IAAI/rG,GACJ,QAAgBT,KAAM+6Y,GACtBt6Y,EAAQiB,EAAOE,KAAK5B,KAAMqzN,EAAM,QAASzhN,EAAQ20X,EAAiB/5R,EAAQ6mH,EAAKhsL,QAASgsL,EAAK++C,MAC7F,IAAIu0G,EAAa,IAAc,IAAc,IAAc,CAAC,EAAGiyB,GAAkBvlL,EAAKtlN,MAAQ,CAC5FA,MAAOslN,EAAKtlN,OACV,CAAC,GAAIslN,EAAKrlN,OAAS,CACrBA,OAAQqlN,EAAKrlN,QACX,CAAC,GASL,OARAvN,EAAMoP,SAAWwjN,EAAKqjI,MAAM1lU,KAAI,SAAU0lU,EAAOx1V,GAC/C,GAAI6gW,IAAYrL,GACd,OAAO,IAAIqkD,EAAWrkD,GAAO,QAAuBj2V,GAAQA,EAAMwzW,QAAQ,SAAS1gW,OAAOrS,IAAKylX,EAAYn6Q,GACtG,GAAIwjP,IAAW0G,GACpB,OAAO,IAAIgiD,IAAUhiD,GAAO,QAAuBj2V,GAAQA,EAAMwzW,QAAQ,SAAS1gW,OAAOrS,IAAKylX,EAAYn6Q,GAE5G,MAAM,IAAIvkE,MAAM,IAAwByuT,GAC1C,IACOj2V,CACT,CAoLA,OAnLA,QAAas6Y,EAAY,CAAC,CACxBl6W,IAAK,YACL1+B,MAAO,WACLnC,KAAKw/D,UAAU95C,KAAO,IAAW1lB,MACjC,IACEu+N,EADEC,EAAY,IAA2Bx+N,KAAK6P,UAEhD,IACE,IAAK2uN,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CACtCimL,EAAMp8N,MACZu9T,WACR,CACF,CAAE,MAAOl4R,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACF,GACC,CACDw9B,IAAK,kBACL1+B,MAAO,WtB5DJ,IAA8BijS,EACnCkpG,IADmClpG,EsB6DVplS,MtB3DzBuuY,IAAiCnpG,EAAO,SACxCmpG,IAAiCnpG,EAAO,SsB2DtC,GACC,CACDvkQ,IAAK,kBACL1+B,MAAO,WAILnC,KAAKw/D,UAAUi/R,UAAY,CAAC,EAC5B,IACEx7H,EADEC,EAAa,IAA2BljO,KAAK6P,UAEjD,IACE,IAAKqzN,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,CACrD,IAAIxoC,EAAQmzN,EAAO9gO,MACnB2N,EAAM43X,kBACN,IACEzgK,EADEC,EAAa,IAA2B,GAAKp3N,EAAM0vD,UAAUi/R,YAEjE,IACE,IAAKv3H,EAAWppN,MAAOmpN,EAASC,EAAWt4M,KAAK0pB,MAAO,CACrD,IAAIzX,EAAMomM,EAAO9kO,MACjBnC,KAAKw/D,UAAUi/R,UAAU59T,GAAO/wB,EAAM0vD,UAAUi/R,UAAU59T,EAC5D,CACF,CAAE,MAAO2G,GACP0/L,EAAWhjO,EAAEsjC,EACf,CAAE,QACA0/L,EAAW7jO,GACb,CACF,CACF,CAAE,MAAOmkC,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACF,GACC,CACDw9B,IAAK,iBACL1+B,MAAO,WACL,IACEglO,EADEC,EAAa,IAA2BpnO,KAAK6P,UAEjD,IACE,IAAKu3N,EAAWtpN,MAAOqpN,EAASC,EAAWx4M,KAAK0pB,MAAO,CACzC6uL,EAAOhlO,MACb0lY,gBACR,CACF,CAAE,MAAOrgW,GACP4/L,EAAWljO,EAAEsjC,EACf,CAAE,QACA4/L,EAAW/jO,GACb,CACF,GACC,CACDw9B,IAAK,sBACL1+B,MAAO,Yf5FJ,SAAwBijS,GAC7B,IAUE7mE,EAVE8rJ,EAAmBjlF,EAAM5lO,UAC3BukQ,EAAOsmD,EAAiBtmD,KACxB18R,EAAUgjV,EAAiBhjV,QACzB2zW,EAAY,CACd/rY,IAAK,EACLw0E,OAAQ,EACR9wE,MAAO,EACP3D,KAAM,GAEJwvN,EAAY,IAA2B4mE,EAAMv1R,UAEjD,IACE,IAAK2uN,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIxoC,EAAQyuN,EAAMp8N,MAClB2N,EAAM63X,sBACN,IACE1gK,EADEC,EAAa,IAA2B,GAAKp3N,EAAM0vD,UAAUukQ,OAEjE,IACE,IAAK78F,EAAWppN,MAAOmpN,EAASC,EAAWt4M,KAAK0pB,MAAO,CACrD,IAAIm7G,EAAUwzE,EAAO9kO,MACrBklC,EAAQwsO,KAAKpgH,GAAW8zN,IAAkBniF,EAAM5lO,UAAUn4B,QAASosH,GACrC,WAA1BpsH,EAAQwsO,KAAKpgH,KAGfswK,EAAKtwK,GAAWshP,IAAoBhxE,EAAKtwK,GAAU3jJ,EAAM0vD,UAAUukQ,KAAKtwK,IACnEswK,EAAKtwK,KAGRpsH,EAAQwsO,KAAKpgH,GAAW,qBACjBswK,EAAKtwK,IAGlB,CACF,CAAE,MAAOjsH,GACP0/L,EAAWhjO,EAAEsjC,EACf,CAAE,QACA0/L,EAAW7jO,GACb,CACF,CAEF,CAAE,MAAOmkC,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACA,IACE4/N,EADEC,EAAa,IAA2B6sG,KAE5C,IACE,IAAK7sG,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,CACrD,IAEE6uL,EAFEojJ,EAAWtnJ,EAAO9gO,MAClBilO,EAAa,IAA2Bg+D,EAAMv1R,UAElD,IACE,IAAKu3N,EAAWtpN,MAAOqpN,EAASC,EAAWx4M,KAAK0pB,MAAO,CACrD,IAAIkyU,EAASrjJ,EAAOhlO,MACpB,GAAKqoX,EAAOhrT,UAAUukQ,KAAKwmD,GAA3B,CAIA,GAA+B,gBAA3BljV,EAAQwsO,KAAK02G,GAA6B,CAC5C,IAAI0wB,EAEJl3E,EAAKwmD,IAAmD,QAArC0wB,EAAiBl3E,EAAKwmD,UAA0C,IAAnB0wB,EAA4BA,EAAiB,IAAI1nY,OAAOi3W,EAAOhrT,UAAUukQ,KAAKwmD,IAE9I,IACElhD,EADEC,EAAa,IAA2BkhD,EAAOhrT,UAAUukQ,KAAKwmD,IAElE,IACE,IAAKjhD,EAAWxrT,MAAOurT,EAASC,EAAW16S,KAAK0pB,MAAO,CACrD,IAAI81V,EAAgB/kE,EAAOlnU,MACvB+4Y,EAAwB9M,EAAc3gC,gBAAgB,UACxDvuG,EAASg8I,EAAsB/4Y,MAC/BqzU,EAAW0lE,EAAsB1lE,SACnC,IAAIpC,IAAYl0E,GAAhB,CAGA,GAAI87I,EAAU97I,GAAU,IAAMs2E,EAAU,CAEtC,IAAI2lE,EAAiBrG,IAAgB51I,GACjC87I,EAAU97I,GAAU87I,EAAUG,IAChC/M,EAAclsY,IAAI,SAAUi5Y,GAAgB,EAEhD,CACAH,EAAU97I,IARV,CAUF,CACF,CAAE,MAAO13N,GACP8hS,EAAWplU,EAAEsjC,EACf,CAAE,QACA8hS,EAAWjmU,GACb,CACF,QAEOmnX,EAAOhrT,UAAUukQ,KAAKwmD,EAlC7B,CAmCF,CAEF,CAAE,MAAO/iV,GACP4/L,EAAWljO,EAAEsjC,EACf,CAAE,QACA4/L,EAAW/jO,GACb,CACA,GAA+B,gBAA3BgkC,EAAQwsO,KAAK02G,IAA+BxmD,EAAKwmD,IAAaxmD,EAAKwmD,GAAU1pX,OAAS,EAAG,CAC3F,IACEwmO,EADEC,EAAa,KAA4By8F,EAAKwmD,IAAa,IAAIzuT,WAEnE,IACE,IAAKwrK,EAAWxpN,MAAOupN,EAASC,EAAW14M,KAAK0pB,MAAO,CACrD,IAAI8iW,GAAe,OAAe/zK,EAAOllO,MAAO,GAC9C6F,EAAQozY,EAAa,GACrBh7B,EAAWg7B,EAAa,GACtBpzY,EAAQ,GAAOo4W,EAASp+W,IAAI,UAAYo+W,EAAS5qC,SAAS3oJ,OAC5DuzL,EAAS37H,SAAS53D,MAAO,EAE7B,CACF,CAAE,MAAOrlJ,GACP8/L,EAAWpjO,EAAEsjC,EACf,CAAE,QACA8/L,EAAWjkO,GACb,CACF,CACF,CACF,CAAE,MAAOmkC,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACF,CehCMg4Y,CAAer7Y,KACjB,GACC,CACD6gC,IAAK,mCACL1+B,MAAO,SAA0Cm2M,GAC/C,OAAOt4M,KAAK6P,SAAS8hB,QAAO,SAAUy/U,EAAIthW,GACxC,OAAOA,EAAMu/X,iCAAiCj+B,EAChD,GAAG94J,EACL,GAEC,CACDz3K,IAAK,kBACL1+B,MAAO,WACL,OAAOnC,KAAK6P,SAAS8hB,QAAO,SAAU2mL,EAASxoM,GAC7C,OAAOwoM,EAAQ/kM,OAAOzD,EAAMo5X,kBAC9B,GAAG9nB,IAAoBphX,MACzB,GACC,CACD6gC,IAAK,wBACL1+B,MAAO,WACL,OAAOnC,KAAK6P,SAAS8hB,QAAO,SAAU2mL,EAASxoM,GAC7C,OAAOwoM,EAAQ/kM,OAAOzD,EAAMkgY,wBAC9B,GAAG,IAAuBhwY,MAC5B,GACC,CACD6gC,IAAK,wBACL1+B,MAAO,SAA+BujB,GACpC,OAAO1lB,KAAK6P,SAAS8hB,QAAO,SAAUo3O,EAAIj5P,GACxC,OAAOA,EAAMw/X,sBAAsBvmI,EACrC,GAAGrjP,EACL,GACC,CACDmb,IAAK,qBACL1+B,MAAO,WACL,IAEEklO,EAFEi0K,EAAe,IAAI30W,IACnB2gM,EAAa,IAA2BtnO,KAAK6P,UAEjD,IACE,IAAKy3N,EAAWxpN,MAAOupN,EAASC,EAAW14M,KAAK0pB,MAAO,CACrD,IAEE+wR,EADEC,EAAa,IAA2B,GADhCjiG,EAAOllO,MACqC4uY,uBAExD,IACE,IAAKznE,EAAWxrT,MAAOurT,EAASC,EAAW16S,KAAK0pB,MAAO,CACrD,IAAIxsC,EAAQu9T,EAAOlnU,MACnBm5Y,EAAa9pY,IAAI1F,EACnB,CACF,CAAE,MAAO07B,GACP8hS,EAAWplU,EAAEsjC,EACf,CAAE,QACA8hS,EAAWjmU,GACb,CACF,CACF,CAAE,MAAOmkC,GACP8/L,EAAWpjO,EAAEsjC,EACf,CAAE,QACA8/L,EAAWjkO,GACb,CACA,IAAIy4E,EAASr7C,MAAMnH,KAAKgiX,GACxB,OAAOx/T,EAAOj7E,OAAS,EAAIi7E,EAA2B,IAAlBA,EAAOj7E,OAAei7E,EAAO,QAAKrlD,CACxE,GACC,CACDoK,IAAK,gBACL1+B,MAAO,WACL,IAAI4vD,EAAQ+iJ,IAAK,QAAgBimM,EAAW76Y,WAAY,gBAAiBF,MAAM4B,KAAK5B,MACpF,GAAI+xD,EACF,OAAOA,EAGT,IACE03Q,EADEC,EAAa,IAA2B1pU,KAAK6P,UAEjD,IACE,IAAK65T,EAAW5rT,MAAO2rT,EAASC,EAAW96S,KAAK0pB,MAAO,CAGrD,GADAyZ,EADY03Q,EAAOtnU,MACLg/W,gBAEZ,OAAOpvT,CAEX,CACF,CAAE,MAAOvqB,GACPkiS,EAAWxlU,EAAEsjC,EACf,CAAE,QACAkiS,EAAWrmU,GACb,CAEF,GACC,CACDw9B,IAAK,iBACL1+B,MAAO,WACL,OAAO,IACT,GACC,CACD0+B,IAAK,gBACL1+B,MAAO,WACL,OpHoBC,SAAqCijS,EAAO71B,GACjD,IACEq6D,EADEC,EAAa,IAA2BzkC,EAAMv1R,UAElD,IACE,IAAKg6T,EAAW/rT,MAAO8rT,EAASC,EAAWj7S,KAAK0pB,MAAO,CACrD,IAAIxoC,EAAQ85T,EAAOznU,MACfwuW,IAAY7gW,KACdy/P,EAAQ0/F,IAA2Bn/V,EAAOy/P,GAE9C,CACF,CAAE,MAAO/nO,GACPqiS,EAAW3lU,EAAEsjC,EACf,CAAE,QACAqiS,EAAWxmU,GACb,CACA,OAAOksQ,CACT,CoHpCagsI,CAA4Bv7Y,KAAMA,KAAK6P,SAASo/W,SAAQ,SAAUn/W,GACvE,OAAOA,EAAMu5X,eACf,IACF,GACC,CACDxoW,IAAK,kBACL1+B,MAAO,WACL,OAAOnC,KAAK6P,SAAS8hB,QAAO,SAAUslP,EAASnnQ,GAC7C,OAAOmnQ,EAAQ1jQ,OAAOzD,EAAMy5X,kBAC9B,GAAG,IAAiBvpY,MACtB,KAEK+6Y,CACT,CA1MqC,CA0MnCzU,KClOK,SAAS0I,IAAW37K,EAAMzhN,EAAQ20X,EAAiBiV,EAAUhvS,GAClE,GAAIk7O,IAAYr0H,GACd,OAAO,IAAIy7K,IAAWz7K,EAAMzhN,EAAQ20X,EAAiB/5R,GAChD,GAAIu1P,IAAY1uI,GACrB,OAAO,IAAI0nL,IAAW1nL,EAAMzhN,EAAQ20X,EAAiBiV,EAAUhvS,GAC1D,GAAIwjP,IAAW38H,GACpB,OAAO,IAAIqlL,IAAUrlL,EAAMzhN,EAAQ20X,EAAiBiV,EAAUhvS,GACzD,GzIbF,SAAyB6mH,GAC9B,OAAO4oI,IAAc5oI,IAAS6oI,IAAc7oI,IAAS2oI,IAAa3oI,EACpE,CyIWaooL,CAAgBpoL,GACzB,OAAO,IAAI8gL,IAAY9gL,EAAMzhN,EAAQ20X,EAAiB/5R,GAExD,MAAM,IAAIvkE,MAAM,IAAwBorL,GAC1C,CCdA,IAAI,IAAY,CAAC,UACjB,SAAS,IAAQ1uL,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CA4Clf,SAASgzY,IAAQC,GACtB,IpKoCkBC,EoKpCd1uP,EAAMtsJ,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAE3EssJ,EAAIgrD,SpKkCU0jM,EoKhCR1uP,EAAIgrD,OpKiCdzwM,IAAUm0Y,GoK/BN1uP,EAAIs8L,YAEN,IAA6Bt8L,EAAIs8L,YAEnC,IAEE,IAAIh9O,EAAS0zP,IAAW,GAAYhzM,EAAI1gD,OAAQmvS,EAAUnvS,SAItD6mH,EAAO,IAAUsoL,EAAWnvS,GAI5B44L,EAAQ4pG,IAAW37K,EAAM,KAAM,QAAI58L,EAAW+1E,GAWlD44L,EAAM3+O,QlDeH,SAA0B/gC,EAAM0/Q,GAErCm3F,IAAW72W,EAAKy8M,SAGhB,IAFA,IAAI05K,EAAmB,EACnBC,EAAoB,EACf56Y,EAAI,EAAGA,EAAIo7X,KACbI,IAA2Bh3W,EAAM0/Q,GAAO,GADJlkS,IAIzC26Y,IAGFn2X,EAAKy8M,QAAQnxM,IAAI4qW,KACjB,IAAK,IAAIj7X,EAAK,EAAGA,EAAK27X,KACfI,IAA2Bh3W,EAAM0/Q,GAAO,GADFzkS,IAI3Cm7Y,IAGFvf,IAAW72W,EAAKy8M,SACZloN,KAAKE,IAAI0hY,EAAkBC,KAAuBxf,KACpD,IAAS,6BAA6B/oX,OAAO+oX,IAAuB,cAExE,CkDpCIyf,CAAiB32G,EAAM5lO,UAAU95C,KAAM0/Q,GAGvC,IAAI42G,EA0DR,SAA+B52G,EAAO62G,GACpC,IAAIC,EAAWt7Y,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAChFu7Y,EAAWv7Y,UAAUC,OAAS,EAAID,UAAU,QAAK61B,EAEjD2lX,EAAWh3G,EAAM54L,OAASw0P,IAAuB57D,EAAM54L,aAAU/1E,EACjE/Q,EAAO,GAAGnS,OAAO6xR,EAAMkqG,sBAAsB,I1B8C5C,SAA0B3S,EAAeuf,GAC9C,IAMEj1K,EANEvhN,EAAO,GAGP4nX,EAAWF,IAAa1nX,GACxB22X,EAAc,EACdn1K,EAAa,IAA2By1J,EAAcx6J,SAE1D,IACE,IAAK+E,EAAWppN,MAAOmpN,EAASC,EAAWt4M,KAAK0pB,MAAO,CACrD,IAAIizB,EAAO07J,EAAO9kO,MAEbopE,EAAKmmU,YACRnmU,EAAKm1O,SAAW,UAAUntS,OAAO8oY,MAEnC,IAAIC,EAAU/wU,EAAKsiU,WACnBP,EAAS/hU,EAAM+wU,EACjB,CAEF,CAAE,MAAO90W,GACP0/L,EAAWhjO,EAAEsjC,EACf,CAAE,QACA0/L,EAAW7jO,GACb,CACA,IAAK,IAAI1C,EAAK,EAAGitO,EAAQloN,EAAM/kB,EAAKitO,EAAM/sO,OAAQF,IAAM,CACtD,IAAIolB,EAAI6nN,EAAMjtO,GACa,IAAvBolB,EAAEjS,UAAUjT,eACPklB,EAAEjS,SAEb,CAEA,IAEEqzN,EAFEo1K,EAAU,EACVn1K,EAAa,IAA2B1hN,EAAKo2C,WAEjD,IACE,IAAKsrK,EAAWtpN,MAAOqpN,EAASC,EAAWx4M,KAAK0pB,MAAO,CACrD,IAAIkkW,EACAxzE,GAAe,OAAe7hG,EAAOhlO,MAAO,GAC9CjB,EAAI8nU,EAAa,GACjByzE,EAAMzzE,EAAa,GACsF,KAAlE,QAAnCwzE,EAAgBC,EAAI3oY,iBAAyC,IAAlB0oY,EAA2BA,EAAgB,IAAI37Y,QAAiB47Y,EAAIprX,QACnH3L,EAAKtkB,OAAOm7Y,IAAW,EAAG72X,EAAKtkB,OAAOF,EAAG,GAAG,GAEhD,CAEF,CAAE,MAAOsmC,GACP4/L,EAAWljO,EAAEsjC,EACf,CAAE,QACA4/L,EAAW/jO,GACb,CACA,IAAK,IAAIo+M,EAAM,EAAGy9K,EAASx5W,EAAM+7L,EAAMy9K,EAAOr+X,OAAQ4gN,IAAO,CAC3D,IAAIi7L,EAGFr1K,EADEC,EAAa,IAA6D,QAAjCo1K,EADpCxd,EAAOz9K,GAC+C3tM,iBAAwC,IAAjB4oY,EAA0BA,EAAe,IAE/H,IACE,IAAKp1K,EAAWxpN,MAAOupN,EAASC,EAAW14M,KAAK0pB,MAAO,CACrD,IAAIv0C,EAAIsjO,EAAOllO,MACA,WAAX4B,EAAE4E,OACJ5E,EAAEu1B,KAAOqjW,EAAcP,YAAYr4X,EAAEu1B,MAAM4iW,YAE/C,CACF,CAAE,MAAO10V,GACP8/L,EAAWpjO,EAAEsjC,EACf,CAAE,QACA8/L,EAAWjkO,GACb,CACF,CAEA,IAAK,IAAIq+M,EAAM,EAAGi7L,EAASj3X,EAAMg8L,EAAMi7L,EAAO97Y,OAAQ6gN,IAAO,CAC3D,IAAIk7L,EAAMD,EAAOj7L,GACbk7L,EAAI36Y,QAAQi6Y,IACdU,EAAIp8W,OAAS07W,EAASU,EAAI36Y,MAE9B,CACA,OAAOyjB,CACT,C0BxHEm3X,CAAiBz3G,EAAM5lO,UAAU95C,KAAMw2X,IACnC/vH,EAAciZ,EAAMwnF,sBACpB76T,EAAQqzO,EAAM+7E,gBACdr1W,EAAQs5R,EAAM2rG,qBACd5I,EAAc/iG,EAAMyrG,0BAAyB,GAC7C4D,EAAgBrvG,EAAM4qG,wBAE1ByE,EAAgBA,EAAclkY,QAAO,SAAUi5S,GAC7C,MAAqB,UAAhBA,EAAOvnT,MAAoC,WAAhBunT,EAAOvnT,WAAuCw0B,IAAjB+yR,EAAOrnT,QAClE85Y,EAAmBzyF,EAAOvnT,OAASunT,EAAOrnT,OACnC,EAGX,IACA,IAAImf,EAAS26X,EAAmB36X,OAC9Bw7X,GAAqB,OAAyBb,EAAoB,KACpE,OAAO,IAAc,IAAc,IAAc,IAAc,IAAc,IAAc,IAAc,IAAc,IAAc,CACnIc,QAAS,8CACR33G,EAAMp+N,YAAc,CACrBA,YAAao+N,EAAMp+N,aACjB,CAAC,GAAI81U,GAAqB/qV,EAAQ,CACpCA,MAAOA,GACL,CAAC,GAAIjmD,EAAQ,CACfA,MAAOA,GACL,CAAC,GAAIq8X,EAAc,CACrBxtK,OAAQ,CACNn1N,OAAQ2iY,IAER,CAAC,GAAI,CAAC,EAAG,CACXziX,KAAMA,GACLymQ,EAAYtrR,OAAS,EAAI,CAC1BsrR,YAAaA,GACX,CAAC,GAAIiZ,EAAMgsG,cAAc,GAAG79X,QAAO,QAAmBkhY,IAAgB,QAAmBrvG,EAAMiqG,iCAAiC,MAAM,QAAmBvzC,IAAyBx6U,OAAa86X,EAAW,CAC5M5vS,OAAQ4vS,GACN,CAAC,GAAID,EAAW,CAClBA,SAAUA,GACR,CAAC,EACP,CAtGiBa,CAAsB53G,EAgBvC,SAA+Bu2G,EAAWtjI,EAAU7rK,EAAQ44L,GAC1D,IAAIr3R,EAAQq3R,EAAM5lO,UAAUmnT,WAAW3kX,IAAI,SACvCgM,EAASo3R,EAAM5lO,UAAUmnT,WAAW3kX,IAAI,eAC3By0B,IAAb4hP,GACFA,EAAW,CACT1vQ,KAAM,OAEJy8R,EAAM63G,2BACR5kI,EAASv0F,QAAS,IAEX,GAASu0F,KAClBA,EAAW,CACT1vQ,KAAM0vQ,IAGV,GAAItqQ,GAASC,I1HjHWkvY,E0HiHS7kI,EAAS1vQ,K1HhHlB,QAAjBu0Y,GAA2C,UAAjBA,GAA6C,UAAjBA,G0HiH3D,GAAc,SAAVnvY,GAA+B,SAAXC,EACtB,IAAS,OACTqqQ,EAAS1vQ,KAAO,WACX,GAAc,SAAVoF,GAA+B,SAAXC,EAAmB,CAGhD,IAAIoiU,EAAqB,SAAVriU,EAAmB,QAAU,SAE5C,IAAS,IAAwBoiU,IAAwBC,KAEzD,IAAI+sE,EAA+B,UAAb/sE,EAAuB,SAAW,QACxD/3D,EAAS1vQ,K1H1HR,SAAoBynU,GACzB,OAAOA,EAAW,OAAO78T,OAAO48T,IAAwBC,IAAa,KACvE,C0HwHsBgtE,CAAWD,EAC7B,C1H9HG,IAAmBD,E0HgIxB,OAAO,IAAc,IAAc,IAAc,CAAC,EAA6B,IAA1B,GAAK7kI,GAAUx3Q,QAAgBw3Q,EAAS1vQ,KAAyB,QAAlB0vQ,EAAS1vQ,KAAiB,CAAC,EAAI,CACjI0vQ,SAAUA,EAAS1vQ,MACjB,CACF0vQ,SAAUA,IACRg1F,IAA0B7gQ,GAAQ,IAAS6gQ,IAA0BsuC,GAAW,GACtF,CAnD8C0B,CAAsB1B,EAAWtoL,EAAKglD,SAAU7rK,EAAQ44L,GAAQu2G,EAAUO,SAAUP,EAAUQ,UACxI,MAAO,CACL9oL,KAAM2oL,EACNsB,WAAYjqL,EAEhB,CAAE,QAEInmE,EAAIgrD,QACN,MAGEhrD,EAAIs8L,YzJ6OVM,IAAkBP,IyJ1OlB,CACF,CCrGO,IAAI,aCUX,QAVA,SAAWrlV,GACT,IAAIq5Y,EAAc,wCAAwCtpW,KAAK/vC,GAAG8iB,MAAM,EAAG,GACzEw2X,GAAe,OAAeD,EAAa,GAG7C,MAAO,CACLE,QAHID,EAAa,GAIjBz6X,QAHIy6X,EAAa,GAKrB,ECuEIE,IAhFY,SAoGZxuS,IAAa,OACbyuS,IAAW,OACXC,IAAY,CACdrzU,WAAY,OACZ6nM,KAAM,CACJjxP,OAAQw8X,KAEV5rV,MAAO,CACLhe,MAAOm7D,IACPwjO,cAAexjO,KAEjBpjG,MAAO,CACL,cAAe,CACb8vC,KAAMszD,KAER,cAAe,CACbtzD,KAAMszD,MAGV2kK,KAAM,CACJ0xD,YAAar2N,IACbu2N,UAAWk4E,IACX/3E,UAAW12N,MAGX2uS,IAAc,UACdC,IAAa,CACfvzU,WAAY,OACZm1I,IAAK,CACH9jK,KAAMiiW,KAERj1V,KAAM,CACJhN,KAAMiiW,KAER3nX,KAAM,CACJ/U,OAAQ08X,IACR1rV,YAAa,GAEftrD,KAAM,CACJsa,OAAQ08X,KAEVr9X,KAAM,CACJo7B,KAAMiiW,KAERp4Y,MAAO,CACL0b,OAAQ08X,KAEVp1W,OAAQ,CACNmT,KAAMiiW,IACN1rV,YAAa,IACb7tB,KAAM,IAERuvO,KAAM,CACJwxD,aAAc,GACdx4I,MAAM,EACN44I,UAAW,UACXwnB,YAAa,EACbznB,UAAW,GACXG,aAAc,GACdhD,SAAU,EACVoD,UAAW,IAEbhE,SAAU,CACRl1I,MAAM,EACN+hK,WAAW,GAEbv3E,OAAQ,CACN0rD,cAAe,SACf4pB,cAAe,GACfnmB,WAAY,GACZD,WAAY,UAEd5+Q,MAAO,CACLi/Q,SAAU,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,aAG9Gm3E,IAAc,UACdC,IAAc,UAGdC,IAAoB,UACpBC,IAAa,OACbC,IAAuB,CACzBz+L,IAAK,CACH9jK,KAAMmiW,KAERn1V,KAAM,CACJhN,KAAMmiW,KAERlqI,KAAM,CACJ0xD,YAAay4E,IACbnxN,MAAM,EACN44I,UAAWu4E,IACXx4E,UAAW,EACXinB,WAhBkB,OAiBlBE,cAAe,GACf7zM,WAjBkB,OAkBlB8sL,UAAWo4E,IACXr7E,SAAU,GACV3pL,cAAe,GACfm7H,aAAc,GACdwxD,aAAc,GAEhB5D,SAAU,CACRl1I,MAAM,GAERtiH,WAAY0zU,IACZvsY,MAAO,CACLkqC,KAAMqiW,KAER5mI,OAAQ,CACNo1E,WAAYyxD,IACZvxD,cAAe,GACfvyQ,QAAS,EACTosP,WAAY,GACZD,WAAY,SACZztL,WAAYolQ,IACZllQ,cAAe,GACfm7H,aAAc,IAEhBj+O,KAAM,CACJ/U,OAAQ48X,IACR5rV,YAAa,GAEftrD,KAAM,CACJsa,OAAQ48X,IACR5rV,YAAa,IAEf3xC,KAAM,CACJo7B,KAAMmiW,KAERp2V,MAAO,CACLi/Q,SAAU,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACpI17E,UAAW,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WACnE27E,QAAS,CAAC,UAAW,UAAW,UAAW,UAAW,YAExD77T,MAAO,CACL0mB,QAAQ,EACRjsB,MAAO,UAETA,MAAO,CACL0b,OAAQ48X,KAEVhtE,IAAK,CACHiS,WAAY,EACZpnS,KAAMmiW,IACN58X,OAAQ,MAEV4wC,MAAO,CACL01D,OAAQ,QACR3mG,SAAU,GACV4S,WAAY,IACZyvD,OAAQ,KAGRi7T,IAAc,OACdC,IAAe,CACjB3sY,MAAO,CACLkqC,KAAM,WAER8jK,IAAK,CACH9jK,KAAMwiW,KAERx1V,KAAM,CACJhN,KAAMwiW,KAERloX,KAAM,CACJ/U,OAAQi9X,KAEVv3Y,KAAM,CACJsa,OAAQi9X,KAEV59X,KAAM,CACJo7B,KAAMwiW,KAER34Y,MAAO,CACL0b,OAAQi9X,KAEV31W,OAAQ,CACNmT,KAAMwiW,IACN95W,KAAM,IAERuvO,KAAM,CACJt5N,QAAQ,EACRsyI,MAAM,EACN44I,UAAW,UACXwnB,YAAa,EACbR,WAAY,UACZ9mB,aAAc,EACdC,UAAW,UACXjD,SAAU,KACV3pL,cAAe,GACfw1M,gBAAiB,UAEnBn3E,OAAQ,CACN0rD,cAAe,SACf4pB,cAAe,GACfnmB,WAAY,IAEd7+Q,MAAO,CACLi/Q,SAAU,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,aAK9G03E,IAAc,4BAGdC,IAAc,UAIdjwD,IAAY,iCACZE,IAAkB,SAElBgwD,IAAiB,CACnB,aAAc,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE,SAAU,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAC7E,eAAgB,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WACxE,QAAS,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YAE1EC,IAAe,CACjBl0U,WAAY,UACZxY,MAAO,CACL01D,OAAQ,QACR1zE,MAAO,UACP/yB,KAAMstU,IACNxtU,SAxBmB,GAyBnB4S,WAxBqB,UA0BvBgsL,IAAK,CACH9jK,KAAM2iW,KAER31V,KAAM,CACJhN,KAAM2iW,KAERroX,KAAM,CACJ/U,OAAQo9X,IACRpsV,YAAa,GAEftrD,KAAM,CACJsa,OAAQo9X,KAEV/9X,KAAM,CACJo7B,KAAM2iW,KAER94Y,MAAO,CACL0b,OAAQo9X,KAEV91W,OAAQ,CACNmT,KAAM2iW,IACNj6W,KAAM,IAERuvO,KAAM,CACJ64E,UAAW4xD,IACX3xD,cAjDgB,KAkDhBE,gBAjDkB,SAkDlByB,UAAWA,IACXt1M,cA5CkB,GA6ClBw1M,gBAAiBA,KAEnBvsB,MAAO,CACLyD,WAAY,EACZC,aAAc,EACdhD,SAAU,GAEZT,MAAO,CACLa,cAAe,SACf7uD,UAAW,GACXD,UAAW,GACX0uD,SAAU,EACVwrB,WAAY,OACZC,WAAY,EACZM,QAAS,GACTC,QAAS,IAEXt3E,OAAQ,CACNq1E,UAAW4xD,IACX3xD,cAxEgB,KAyEhBpmB,WAAY,SACZ+nB,UAAWA,IACXt1M,cAnEkB,GAoElBw1M,gBAAiBA,KAEnB7mS,MAAO,CACLi/Q,SAAU43E,IAAe,cACzBtzJ,UAAWszJ,IAAe,gBAC1B33E,QAAS23E,IAAe,UACxB95J,QAAS85J,IAAe,UACxB13E,KAAM03E,IAAe,YAGrBE,IAAc,UACdC,IAAc,UACdC,IAAc,CAChBr0U,WAAY,UACZm1I,IAAK,CACH9jK,KAAM8iW,KAER91V,KAAM,CACJhN,KAAM8iW,KAERxoX,KAAM,CACJ/U,OAAQu9X,KAEV73Y,KAAM,CACJsa,OAAQu9X,KAEVl+X,KAAM,CACJo7B,KAAM8iW,KAERj5Y,MAAO,CACL0b,OAAQu9X,KAEVj2W,OAAQ,CACNmT,KAAM8iW,IACNp6W,KAAM,IAERuvO,KAAM,CACJ0xD,YAAao5E,IACbr5E,YAAa,GACbE,UAAW,GACXinB,WAAYkyD,IACZ/4E,UAAW+4E,IACX54E,UAAW,GACXjtL,WAAY6lQ,KAEd58E,SAAU,CACRl1I,MAAM,GAERo1I,MAAO,CACLp1I,MAAM,EACN81I,SAAU,IAEZT,MAAO,CACL3nR,QAAQ,EACRsyI,MAAM,EACN81I,SAAU,GAEZtrD,OAAQ,CACNs1E,cAAe,GACfvyQ,QAAS,EACTosP,WAAY,GACZD,WAAY,UAEd5+Q,MAAO,CACLi/Q,SAAU,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,aAG9Gi4E,IAAc,UACdC,IAAW,CACbv0U,WAAY,OACZm1I,IAAK,CACH9jK,KAAMijW,KAERj2V,KAAM,CACJhN,KAAMijW,KAER3oX,KAAM,CACJ/U,OAAQ09X,KAEVh4Y,KAAM,CACJsa,OAAQ09X,KAEVr+X,KAAM,CACJo7B,KAAMijW,KAERp5Y,MAAO,CACL0b,OAAQ09X,KAEVp2W,OAAQ,CACNmT,KAAMijW,KAERhrI,KAAM,CACJyxD,YAAa,GACbz4I,MAAM,EACN84I,aAAc,EACdhD,SAAU,EACVoD,UAAW,GACXyoB,gBAAiB,UAEnBzsB,SAAU,CACRl1I,MAAM,GAERo1I,MAAO,CACLuD,UAAW,IAEbtD,MAAO,CACL6qB,SAAU,CAAC,GACXvnB,UAAW,IAEbnuD,OAAQ,CACNs1E,cAAe,GACfvyQ,QAAS,EACTmsP,WAAY,UAEd5+Q,MAAO,CACLi/Q,SAAU,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,aAGxFm4E,IAAc,UACdC,IAAY,UAEZ,IAAO,OACPtyD,IAAY,OAIZuyD,IAAe,CACjB,cAAe,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAC7F,cAAe,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAC7F,cAAe,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAC7F,gBAAiB,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAC/F,iBAAkB,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAChG,eAAgB,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAC9F,eAAgB,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAC9F,aAAc,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAC5F,YAAa,CAAC,UAAW,WACzB,mBAAoB,CAAC,UAAW,WAChC,mBAAoB,CAAC,UAAW,WAChC,mBAAoB,CAAC,UAAW,WAChC,iBAAkB,CAAC,UAAW,WAC9B,mBAAoB,CAAC,UAAW,UAAW,WAC3C,mBAAoB,CAAC,UAAW,UAAW,WAC3C,oBAAqB,CAAC,UAAW,UAAW,UAAW,WACvD,oBAAqB,CAAC,UAAW,WAAY,UAAW,WACxD,kBAAmB,CAAC,UAAW,UAAW,UAAW,WACrD,oBAAqB,CAAC,UAAW,UAAW,UAAW,UAAW,WAClE,oBAAqB,CAAC,UAAW,UAAW,UAAW,UAAW,WAClE,kBAAmB,CAAC,UAAW,UAAW,UAAW,UAAW,WAChE,mBAAoB,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAC5E,mBAAoB,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAC5E,iBAAkB,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAC1E,mBAAoB,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YAEhGC,IAAsB,CACxB30U,WAlCsB,UAmCtBxY,MAAO,CACL01D,OAAQ,QACR3mG,SAhCgB,GAiChBE,KAAM,KAERihT,MAAO,CACL1nR,QAAQ,EACRgrR,YAAay5E,IACb15E,YAAa,EACbz4I,MAAM,EACN8/J,cAAe,GACfD,UAAWA,IACXhnB,WAAY,EACZE,UAAWo5E,IACXr8E,SAAU,EACV3pL,cAAe,GACfm7H,aAAc,GACdm6E,UAAW,KAEbpsB,MAAO,CACL3nR,QAAQ,EACR+qR,YAAa,EACbz4I,MAAM,EACN44I,UAtDc,UAuDdD,UAAW,EACXmnB,cAAe,GACfD,UAAWA,IACX/mB,aAAc,EACdnkH,OAAO,EACPxoE,cAAe,GACfm7H,aAAc,GACdm6E,UAAW,IACXF,WAAY,EACZO,QAAS,GACTD,OAAQ,IAEVr3E,OAAQ,CACNs1E,cAAe,GACfD,UAAWA,IACXlmB,WAAY,IACZxtL,cAAe,GACfm7H,aAAc,GACdm6E,UAAW,IACXpvF,OAAQ,QACR/7K,OAAQ,IAEVivL,KAAM,CACJjxP,OAAQ,eAEVwmC,MAAO,CACLi/Q,SAAUq4E,IAAa,oBACvB/zJ,UAAW+zJ,IAAa,oBACxBp4E,QAASo4E,IAAa,oBACtBv6J,QAASu6J,IAAa,kBACtBn4E,KAAMm4E,IAAa,gBAErBr2V,KAAM,CACJhN,KAAMmjW,KAERv+X,KAAM,CACJo7B,KAAMmjW,KAER7oX,KAAM,CACJ6d,MAAOgrW,IACP59X,OAAQ49X,IACR5sV,YAAa,GAEf4kM,MAAO,CACLhjN,MAAOgrW,IACP59X,OAAQ49X,IACR5sV,YAAa,EACb7tB,KAAM,GAERz9B,KAAM,CACJsa,OAAQ49X,IACR5sV,YAAa,IAEfnnD,MAAO,CACL0mB,QAAQ,GAEV7Q,KAAM,CACJG,KAjHa,OAkHb+yB,MAAOgrW,IACPj+X,SAAU,GACVuzE,MAAO,SACP3gE,WAAY,IACZ4Q,KAAM,IAERx4B,MAAO,CACLilU,IAAK,CACHn1R,KAAMmjW,IACN59X,OAAQ,OAGZu+L,IAAK,CACH9jK,KAAMmjW,KAERt5Y,MAAO,CACL0b,OAAQ49X,KAEVt2W,OAAQ,CACNmT,KAAMmjW,IACNz6W,KAAM,KAYN66W,IAAY,UACZ15E,IAAY,OACZ25E,IAAgB,oBAChBC,IAAoB,CACtB3/L,IAAK,CACH9jK,KAAMujW,KAERv2V,KAAM,CACJhN,KAAMujW,KAERt4Y,KAAM,CACJsa,OAAQg+X,KAEV3+X,KAAM,CACJo7B,KAAMujW,KAER15Y,MAAO,CACL0b,OAAQg+X,KAEV12W,OAAQ,CACNtnB,OAAQg+X,KAEV1+X,OAAQ,CACNm7B,KAAMujW,KAER50U,WAAY,OACZ6P,QAAS,CACPnrE,IAAK,GACL0D,MAAO,GACP8wE,OAAQ,GACRz0E,KAAM,IAERlD,MAAO,CACL,cAAe,CACbkV,KAAMo+X,IACNt+X,SAAU,IAEZ,cAAe,CACbE,KAAMo+X,IACNt+X,SAAU,IAEZ,cAAe,CACbE,KAAMo+X,IACNt+X,SAAU,KAGdixC,MAAO,CACL/wC,KAAMo+X,IACNt+X,SAAU,GACV4S,WAAY,OACZ7mB,IAAK,EACL46G,OAAQ,SAEVosJ,KAAM,CACJ4xD,UAAWA,IACXG,UAAWH,IACXlrR,QAAQ,EACRsyI,MAAM,GAERllI,MAAO,CACLi/Q,SAAU,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACpIC,QAAS,CAAC,UAAW,UAAW,aAGhCy4E,IAAS,SAAgBn9Y,GAC3B,OAAOA,GAAS,EAAI,EAAI,EAC1B,EACIo9Y,IAAcD,IAAO,GACrBE,IAAeF,IAAO,IACtBG,IAAcH,IAAO,IACrBI,IAAe,WACfC,IAAY,iDACZC,IAAyB,UACzBC,IAA0B,UAC1BvxU,IAAkB,cAElBwxU,IAAgB,UAShBC,IAAoB,UACpBC,IAAmB,CAACD,IAFAD,KAIpBG,IAAe,CACjB7tI,KAAM,CACJjxP,OAAQmtD,KAEV/D,WAAY+D,IACZttD,KAAM0+X,IACN3wN,OAAQ,CACNu/J,UAAWqxD,IACX3mQ,cAAeymQ,IACf3mQ,WAAY8mQ,IACZlzD,UAAWgzD,IACX/yD,cAAe6yD,IACf/yD,WAAYozD,KAEdhsI,KAAM,CACJryD,OAAO,EACP30B,MAAM,EACNtyI,QAAQ,EACRkyS,WAAYozD,IACZlzD,cAAe4yD,IACfjxD,UAAWqxD,IACX7mQ,WAAY8mQ,IACZ5mQ,cAAeymQ,IACfjxD,gBAAiB,UAEnBY,iBAAkB,CAChB5+F,UAAW,EACX3jE,MAAM,EACN44I,UAzC2B,UA0C3BsnB,SAAU,CAAC,EAAG,GACde,YAAY,GAEd/rB,SAAU,CACR6sB,WAAW,GAEb3sB,MAAO,CACL0D,aAAc,GAEhBzD,MAAO,CACLyD,aAAc,IAEhBoL,IAAK,CACHn1R,KAAMkkW,KAER5pX,KAAM,CACJ/U,OAAQ2+X,IACR3tV,YAAa,EACb8qM,UAAW,QACXxD,WAAY,SAEd54O,KAAM,CACJG,KAAM0+X,IACN5+X,SAAUy+X,IACV3jW,KAAMikW,KAERngM,IAAK,CACH9jK,KAAMkkW,KAERl3V,KAAM,CACJhN,KAAMkkW,IACN5pX,MAAM,EACNvhB,QAAS,IAEX9N,KAAM,CACJsa,OAAQ2+X,KAEVt/X,KAAM,CACJo7B,KAAMkkW,KAER90Y,MAAO,CACL4wC,KAAMkkW,IACNpuX,QAAQ,EACR4S,KAAM,IAER7+B,MAAO,CACL0b,OAAQ2+X,KAEVr3W,OAAQ,CACNmT,KAAMkkW,IACN3tV,YAAa,IACb7tB,KAAM,IAER+yO,OAAQ,CACNi3E,UAAWoxD,IACXlxD,gBAAiB,OACjB11M,WAAY+mQ,IACZnzD,UAAWgzD,IACX/yD,cAAe6yD,IACf/yD,WAAYozD,IACZt5E,WAAY,SACZC,WAAY,IAEd7+Q,MAAO,CACLi/Q,SAAU,CAACk5E,IAxGK,UACA,UACA,UACA,UACA,UACA,UACA,WAmGhB50J,UAAW80J,IACXn5E,QAASm5E,IACTt7J,QAjGiB,CAACq7J,IAAmB,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAH9FD,OAuGpB96E,IAAc,0FAEdk7E,IAAiB,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACjKC,IAAkB,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACtK,SAASC,IAAgBvuV,GACvB,IAAIlpD,EAAOkpD,EAAKlpD,KAEZ03Y,EAAkB,SAAT13Y,EAAkB,UAAY,UACvC+uE,EAAqB,SAAT/uE,EAAkB,UAAY,UAE1Cw2Y,EAAqB,SAATx2Y,EAAkB,UAAY,UAC9C,MAAO,CACL4hE,WANa1Y,EAAK0Y,WAOlBm1I,IAAK,CACH9jK,KAAMujW,GAERv2V,KAAM,CACJhN,KAAMujW,GAERt4Y,KAAM,CACJsa,OAAQg+X,GAEV3+X,KAAM,CACJo7B,KAAMujW,GAER15Y,MAAO,CACL0b,OAAQg+X,GAEV12W,OAAQ,CACNtnB,OAAQg+X,GAEV1+X,OAAQ,CACNm7B,KAAMujW,GAER/sI,KAAM,CACJx2N,KAAMykW,EACNl/X,OAAQk/X,GAEV3uY,MAAO,CACLkqC,KAAMykW,GAERtuV,MAAO,CACLhe,MAAO2jC,EACP+vC,OAAQ,QACR56G,IAAK,GACLiU,SAAU,GACVE,KAAMgkT,IACNtxS,WAAY,KAEdmgP,KAAM,CACJ44E,WAAY/0Q,EACZi1Q,cAAe,GACf9/J,MAAM,EACN44I,UAAW,UACX3sL,WAAYphE,EACZguP,WAAY,GAEd55T,MAAO,CACL,cAAe,CACbkV,KAAMgkT,IACNppR,KAAM87B,EACNhkD,WA5DS,KA8DX,cAAe,CACb1S,KAAMgkT,IACNppR,KAAM87B,EACNhkD,WAjES,MAoEbi0B,MAAO,CACLi/Q,SA7DoB,SAATj+T,EAAkBu3Y,IAAiBC,IA8D9Cj1J,UAAW,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACjL27E,QAAS,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YAGnH,CACA,IAAIy5E,IAAcF,IAAgB,CAChCz3Y,KAAM,QACN4hE,WAAY,YAEVg2U,IAAYH,IAAgB,CAC9Bz3Y,KAAM,QACN4hE,WAAY,YAEVi2U,IAAYJ,IAAgB,CAC9Bz3Y,KAAM,OACN4hE,WAAY,YAEVk2U,IAAaL,IAAgB,CAC/Bz3Y,KAAM,OACN4hE,WAAY,YAEV,IAAUmzU,ICj6Bd,SAAS,IAA2Bt4X,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAuGlL,SAAS,IAAQnlM,GAGf,OAAO,IAAU,mBAAqBqkB,QAAU,iBAAmBA,OAAOC,SAAW,SAAUtkB,GAC7F,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAO,mBAAqBqkB,QAAUrkB,EAAIjvB,cAAgBszC,QAAUrkB,IAAQqkB,OAAOl4C,UAAY,gBAAkB6zB,CAC1H,EAAG,IAAQA,EACb,CAWA,SAAS,IAAeyoB,GACtB,IAAI3b,EAXN,SAAsBwoF,EAAO0qO,GAC3B,GAAuB,WAAnB,IAAQ1qO,IAAiC,OAAVA,EAAgB,OAAOA,EAC1D,IAAI2qO,EAAO3qO,EAAMjxE,OAAO67S,aACxB,QAAax9T,IAATu9T,EAAoB,CACtB,IAAI9tU,EAAM8tU,EAAKpyV,KAAKynH,EAAO0qO,GAAQ,WACnC,GAAqB,WAAjB,IAAQ7tU,GAAmB,OAAOA,EACtC,MAAM,IAAInhB,UAAU,+CACtB,CACA,OAAiB,WAATgvV,EAAoBpuU,OAAS1D,QAAQonG,EAC/C,CAEY,CAAa7sE,EAAK,UAC5B,MAAwB,WAAjB,IAAQ3b,GAAoBA,EAAMlb,OAAOkb,EAClD,CACA,SAAS,IAAgB9M,EAAK8M,EAAK1+B,GAYjC,OAXA0+B,EAAM,IAAeA,MACV9M,EACTvc,OAAOoxB,eAAe7U,EAAK8M,EAAK,CAC9B1+B,MAAOA,EACPwmC,YAAY,EACZsqB,cAAc,EACdC,UAAU,IAGZn/B,EAAI8M,GAAO1+B,EAEN4xB,CACT,CAaA,SAAS2sX,IAAyBrvX,EAAQsvX,GACxC,GAAc,MAAVtvX,EAAgB,MAAO,CAAC,EAC5B,IACIwP,EAAK3/B,EADLwH,EAdN,SAAuC2oB,EAAQsvX,GAC7C,GAAc,MAAVtvX,EAAgB,MAAO,CAAC,EAC5B,IAEIwP,EAAK3/B,EAFLwH,EAAS,CAAC,EACV6sI,EAAa/9H,OAAOopB,KAAKvP,GAE7B,IAAKnwB,EAAI,EAAGA,EAAIq0I,EAAW10I,OAAQK,IACjC2/B,EAAM00G,EAAWr0I,GACby/Y,EAASztY,QAAQ2tB,IAAQ,IAC7Bn4B,EAAOm4B,GAAOxP,EAAOwP,IAEvB,OAAOn4B,CACT,CAGek4Y,CAA8BvvX,EAAQsvX,GAEnD,GAAInpY,OAAO+wB,sBAAuB,CAChC,IAAIs4W,EAAmBrpY,OAAO+wB,sBAAsBlX,GACpD,IAAKnwB,EAAI,EAAGA,EAAI2/Y,EAAiBhgZ,OAAQK,IACvC2/B,EAAMggX,EAAiB3/Y,GACnBy/Y,EAASztY,QAAQ2tB,IAAQ,GACxBrpB,OAAOtX,UAAUgsD,qBAAqBtqD,KAAKyvB,EAAQwP,KACxDn4B,EAAOm4B,GAAOxP,EAAOwP,GAEzB,CACA,OAAOn4B,CACT,CACA,IAAI,IAAY,CAAC,QAAS,SA+E1B,SAAS,IAAUqrB,EAAK6yP,GACtB,OAAO5lO,KAAKF,UAAU/sB,EAvBxB,SAAkB6yP,GAChB,IAAI7b,EAAQ,GACZ,OAAO,SAAUlqO,EAAK1+B,GACpB,GAAqB,iBAAVA,GAAgC,OAAVA,EAC/B,OAAOA,EAET,IAAIw4H,EAAMowI,EAAM73P,QAAQlT,MAAQ,EAEhC,OADA+qQ,EAAMlqQ,OAAS85H,EACXowI,EAAMlqQ,OAAS+lR,EACV,WAEL7b,EAAM73P,QAAQ/Q,IAAU,EACnB,cAET4oQ,EAAMxqQ,KAAK4B,GACJA,EACT,CACF,CAM6B4jD,CAAS6gO,GACtC,CAGA,IACIk6H,IAAQ,qBACRC,IAAkB,CAIpBxyY,QAAS,GAITE,QAAS,GAITiF,GAAIotY,IAIJE,QAAS,qBAMT1zS,MAAO,QAIP2zS,qBAAqB,EAMrBzrL,SAkBF,SAAoBrzN,GAClB,OAAOwjB,OAAOxjB,GAAOyjB,QAAQ,KAAM,SAASA,QAAQ,KAAM,OAC5D,EAhBEghQ,SAAU,EAOVymC,cAzHF,SAAqBlrT,EAAO++Y,EAAat6H,GACvC,GAAI,GAAQzkR,GACV,MAAO,IAAIoR,OAAOpR,EAAM6uB,KAAI,SAAU/e,GACpC,OAAOivY,EAAY,GAASjvY,GAAKA,EAAI,IAAUA,EAAG20Q,GACpD,IAAGv9P,KAAK,MAAO,KAEjB,GAAI8kC,GAAShsD,GAAQ,CACnB,IAAI20E,EAAU,GACVjlB,EAAO1vD,EACT4vD,EAAQF,EAAKE,MACb82D,EAAQh3D,EAAKg3D,MACblsC,EAAO+jU,IAAyB7uV,EAAM,KACpCE,IACF+kB,GAAW,OAAOvjE,OAAO2tY,EAAYnvV,GAAQ,UAE3C82D,IACF/xC,GAAW,aAAcvjE,OAAO2tY,EAAYr4R,GAAQ,OAEtD,IAAIjoF,EAAOppB,OAAOopB,KAAK+7C,GACvB,GAAI/7C,EAAK//B,OAAS,EAAG,CACnBi2E,GAAW,UACX,IACEynJ,EADEC,EAAY,IAA2B59L,GAE3C,IACE,IAAK49L,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIzX,EAAM09L,EAAMp8N,MACZkD,EAAMs3E,EAAK97C,QAGHpK,IAARpxB,IAGA8oD,GAAS9oD,KACXA,EAAM,IAAUA,EAAKuhR,IAEvB9vM,GAAW,uBAAyBvjE,OAAO2tY,EAAYrgX,GAAM,4BAA8BttB,OAAO2tY,EAAY77Y,GAAM,cACtH,CACF,CAAE,MAAOmiC,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACAyzE,GAAW,UACb,CACA,OAAOA,GAAW,IACpB,CAEA,OAAOoqU,EAAY/+Y,EACrB,GAiHA,SAAS,IAAQwiC,EAAQm6P,GACvB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GACvB,GAAIntB,OAAO+wB,sBAAuB,CAChC,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAC3Cm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GACpD,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UACtD,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAC7B,CACA,OAAO5H,CACT,CACA,SAAS,IAAcl4B,GACrB,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CACzC,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EACpDA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,GACpD,IAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GACtC,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAC5JrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAC7E,GACF,CACA,OAAOn4B,CACT,CAKA,ICxWIy4Y,IAsDA9oW,IACA+oW,IDiTA,IAAuB,WAkBzB,SAASv9I,EAAQ1+N,IACf,QAAgBnlC,KAAM6jQ,GACtB7jQ,KAAKmlC,QAAU,IAAc,IAAc,CAAC,EAAG47W,KAAkB57W,GACjE,IAAIk8W,EAAYrhZ,KAAKmlC,QAAQzxB,GAO7B,GANA1T,KAAKwK,GAAK,KAGVxK,KAAK4B,KAAO5B,KAAKshZ,eAAel+Y,KAAKpD,OAGhCA,KAAKmlC,QAAQ87W,sBAAwBt2Y,SAAS8C,eAAezN,KAAKmlC,QAAQ67W,SAAU,CACvF,IAAIl1Y,EAAQnB,SAAS+Z,cAAc,SACnC5Y,EAAMw+C,aAAa,KAAMtqD,KAAKmlC,QAAQ67W,SACtCl1Y,EAAMy1Y,UAtFZ,SAA4B7tY,GAE1B,IAAK,sBAAsBpO,KAAKoO,GAC9B,MAAM,IAAIu0B,MAAM,mBAElB,MA5DiB,6qCA4DGrlB,WAAWgD,QAAQk7X,IAAOptY,EAChD,CAgFwB8tY,CAAmBH,GACrC,IAAIr/W,EAAOr3B,SAASq3B,KAChBA,EAAK49J,WAAW/+L,OAAS,EAC3BmhC,EAAKiuC,aAAankE,EAAOk2B,EAAK49J,WAAW,IAEzC59J,EAAKr0B,YAAY7B,EAErB,CACF,CAuCA,OAlCA,QAAa+3P,EAAS,CAAC,CACrBhjO,IAAK,iBACL1+B,MAAO,SAAwBshC,EAAS14B,EAAO0M,EAAMtV,GAMjD,IAAIs/Y,GAFNzhZ,KAAKwK,GAAKG,SAAS8C,eAAezN,KAAKmlC,QAAQzxB,IAC1C1T,KAAKwK,MAERxK,KAAKwK,GAAKG,SAAS+Z,cAAc,OACjC1kB,KAAKwK,GAAG8/C,aAAa,KAAMtqD,KAAKmlC,QAAQzxB,IACxC1T,KAAKwK,GAAG8kE,UAAU99D,IAAI,eAC0D,QAAxDiwY,EAAwB92Y,SAAS+2Y,yBAAyD,IAA1BD,EAAmCA,EAAwB92Y,SAASgiD,MAC3Ih/C,YAAY3N,KAAKwK,KAIpC,GAAa,MAATrI,GAA2B,KAAVA,EAArB,CAMAnC,KAAKwK,GAAG+2Y,UAAYvhZ,KAAKmlC,QAAQkoR,cAAclrT,EAAOnC,KAAKmlC,QAAQqwL,SAAUx1N,KAAKmlC,QAAQyhP,UAG1F5mR,KAAKwK,GAAG8kE,UAAU99D,IAAI,UAAW,GAAG+B,OAAOvT,KAAKmlC,QAAQmoE,MAAO,WAC/D,IAAIq0S,EA9GV,SAA2B52Y,EAAO62Y,EAAYrzY,EAASE,GACrD,IAAIxD,EAAIF,EAAMI,QAAUoD,EACpBtD,EAAI22Y,EAAW7zY,MAAQ7K,OAAOujF,aAChCx7E,GAAKF,EAAMI,QAAUoD,EAAUqzY,EAAW7zY,OAE5C,IAAI7C,EAAIH,EAAMK,QAAUqD,EAIxB,OAHIvD,EAAI02Y,EAAW5zY,OAAS9K,OAAOojF,cACjCp7E,GAAKH,EAAMK,QAAUqD,EAAUmzY,EAAW5zY,QAErC,CACL/C,EAAGA,EACHC,EAAGA,EAEP,CAiG+B22Y,CAAkB92Y,EAAO/K,KAAKwK,GAAGuE,wBAAyB/O,KAAKmlC,QAAQ52B,QAASvO,KAAKmlC,QAAQ12B,SACpHxD,EAAI02Y,EAAmB12Y,EACvBC,EAAIy2Y,EAAmBz2Y,EACzBlL,KAAKwK,GAAGsB,MAAMmD,IAAM,GAAGsE,OAAOrI,EAAG,MACjClL,KAAKwK,GAAGsB,MAAMkD,KAAO,GAAGuE,OAAOtI,EAAG,KAXlC,MAFEjL,KAAKwK,GAAG8kE,UAAUn8D,OAAO,UAAW,GAAGI,OAAOvT,KAAKmlC,QAAQmoE,MAAO,UActE,KAEKu2J,CACT,CA/E2B,GCvW3B,SAAS,IAA2Bz+O,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CAWlL,SAAS,IAAQnlM,GAGf,OAAO,IAAU,mBAAqBqkB,QAAU,iBAAmBA,OAAOC,SAAW,SAAUtkB,GAC7F,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAO,mBAAqBqkB,QAAUrkB,EAAIjvB,cAAgBszC,QAAUrkB,IAAQqkB,OAAOl4C,UAAY,gBAAkB6zB,CAC1H,EAAG,IAAQA,EACb,CAWA,SAAS,IAAeyoB,GACtB,IAAI3b,EAXN,SAAsBwoF,EAAO0qO,GAC3B,GAAuB,WAAnB,IAAQ1qO,IAAiC,OAAVA,EAAgB,OAAOA,EAC1D,IAAI2qO,EAAO3qO,EAAMjxE,OAAO67S,aACxB,QAAax9T,IAATu9T,EAAoB,CACtB,IAAI9tU,EAAM8tU,EAAKpyV,KAAKynH,EAAO0qO,GAAQ,WACnC,GAAqB,WAAjB,IAAQ7tU,GAAmB,OAAOA,EACtC,MAAM,IAAInhB,UAAU,+CACtB,CACA,OAAiB,WAATgvV,EAAoBpuU,OAAS1D,QAAQonG,EAC/C,CAEY,CAAa7sE,EAAK,UAC5B,MAAwB,WAAjB,IAAQ3b,GAAoBA,EAAMlb,OAAOkb,EAClD,CACA,SAAS,IAAgB9M,EAAK8M,EAAK1+B,GAYjC,OAXA0+B,EAAM,IAAeA,MACV9M,EACTvc,OAAOoxB,eAAe7U,EAAK8M,EAAK,CAC9B1+B,MAAOA,EACPwmC,YAAY,EACZsqB,cAAc,EACdC,UAAU,IAGZn/B,EAAI8M,GAAO1+B,EAEN4xB,CACT,CACA,SAAS+tX,IAAwB72Y,GAC/B,OAAOA,GAAKA,EAAE8+C,YAAcvyC,OAAOtX,UAAUqX,eAAe3V,KAAKqJ,EAAG,WAAaA,EAAW,QAAIA,CAClG,CAiCA,IAAI82Y,IAAUC,IAGd,SAASA,IAAUtgS,GACjB,IAAIh7D,EAAO1mD,KAOX,GANM0mD,aAAgBs7V,MACpBt7V,EAAO,IAAIs7V,KAEbt7V,EAAKu7V,KAAO,KACZv7V,EAAK1kB,KAAO,KACZ0kB,EAAK7lD,OAAS,EACV6gH,GAAgC,mBAAjBA,EAAKt5G,QACtBs5G,EAAKt5G,SAAQ,SAAUqP,GACrBivC,EAAKnmD,KAAKkX,EACZ,SACK,GAAI7W,UAAUC,OAAS,EAC5B,IAAK,IAAIK,EAAI,EAAGokB,EAAI1kB,UAAUC,OAAQK,EAAIokB,EAAGpkB,IAC3CwlD,EAAKnmD,KAAKK,UAAUM,IAGxB,OAAOwlD,CACT,CAuSA,SAAS,IAAOA,EAAMhG,EAAMv+C,GAC1B,IAAI+/Y,EAAWxhW,IAASgG,EAAK1kB,KAAO,IAAI,IAAK7/B,EAAO,KAAMu+C,EAAMgG,GAAQ,IAAI,IAAKvkD,EAAOu+C,EAAMA,EAAKnrB,KAAMmxB,GAQzG,OAPsB,OAAlBw7V,EAAS3sX,OACXmxB,EAAKu7V,KAAOC,GAEQ,OAAlBA,EAAS5sX,OACXoxB,EAAK1kB,KAAOkgX,GAEdx7V,EAAK7lD,SACEqhZ,CACT,CACA,SAAS3hZ,IAAKmmD,EAAMjvC,GAClBivC,EAAKu7V,KAAO,IAAI,IAAKxqY,EAAMivC,EAAKu7V,KAAM,KAAMv7V,GACvCA,EAAK1kB,OACR0kB,EAAK1kB,KAAO0kB,EAAKu7V,MAEnBv7V,EAAK7lD,QACP,CACA,SAAS8U,IAAQ+wC,EAAMjvC,GACrBivC,EAAK1kB,KAAO,IAAI,IAAKvqB,EAAM,KAAMivC,EAAK1kB,KAAM0kB,GACvCA,EAAKu7V,OACRv7V,EAAKu7V,KAAOv7V,EAAK1kB,MAEnB0kB,EAAK7lD,QACP,CACA,SAAS,IAAKsB,EAAOmzB,EAAMC,EAAMmsF,GAC/B,KAAM1hH,gBAAgB,KACpB,OAAO,IAAI,IAAKmC,EAAOmzB,EAAMC,EAAMmsF,GAErC1hH,KAAK0hH,KAAOA,EACZ1hH,KAAKmC,MAAQA,EACTmzB,GACFA,EAAKC,KAAOv1B,KACZA,KAAKs1B,KAAOA,GAEZt1B,KAAKs1B,KAAO,KAEVC,GACFA,EAAKD,KAAOt1B,KACZA,KAAKu1B,KAAOA,GAEZv1B,KAAKu1B,KAAO,IAEhB,CAtWAysX,IAAU9pR,KAAO,IACjB8pR,IAAU95W,OAAS85W,IAoBnBA,IAAU9hZ,UAAUiiZ,WAAa,SAAUzhW,GACzC,GAAIA,EAAKghE,OAAS1hH,KAChB,MAAM,IAAIioC,MAAM,oDAElB,IAAI1S,EAAOmrB,EAAKnrB,KACZD,EAAOorB,EAAKprB,KAiBhB,OAhBIC,IACFA,EAAKD,KAAOA,GAEVA,IACFA,EAAKC,KAAOA,GAEVmrB,IAAS1gD,KAAKgiC,OAChBhiC,KAAKgiC,KAAOzM,GAEVmrB,IAAS1gD,KAAKiiZ,OAChBjiZ,KAAKiiZ,KAAO3sX,GAEdorB,EAAKghE,KAAK7gH,SACV6/C,EAAKnrB,KAAO,KACZmrB,EAAKprB,KAAO,KACZorB,EAAKghE,KAAO,KACLnsF,CACT,EACAysX,IAAU9hZ,UAAUkiZ,YAAc,SAAU1hW,GAC1C,GAAIA,IAAS1gD,KAAKgiC,KAAlB,CAGI0e,EAAKghE,MACPhhE,EAAKghE,KAAKygS,WAAWzhW,GAEvB,IAAI1e,EAAOhiC,KAAKgiC,KAChB0e,EAAKghE,KAAO1hH,KACZ0gD,EAAKnrB,KAAOyM,EACRA,IACFA,EAAK1M,KAAOorB,GAEd1gD,KAAKgiC,KAAO0e,EACP1gD,KAAKiiZ,OACRjiZ,KAAKiiZ,KAAOvhW,GAEd1gD,KAAKa,QAdL,CAeF,EACAmhZ,IAAU9hZ,UAAUmiZ,SAAW,SAAU3hW,GACvC,GAAIA,IAAS1gD,KAAKiiZ,KAAlB,CAGIvhW,EAAKghE,MACPhhE,EAAKghE,KAAKygS,WAAWzhW,GAEvB,IAAIuhW,EAAOjiZ,KAAKiiZ,KAChBvhW,EAAKghE,KAAO1hH,KACZ0gD,EAAKprB,KAAO2sX,EACRA,IACFA,EAAK1sX,KAAOmrB,GAEd1gD,KAAKiiZ,KAAOvhW,EACP1gD,KAAKgiC,OACRhiC,KAAKgiC,KAAO0e,GAEd1gD,KAAKa,QAdL,CAeF,EACAmhZ,IAAU9hZ,UAAUK,KAAO,WACzB,IAAK,IAAIW,EAAI,EAAGokB,EAAI1kB,UAAUC,OAAQK,EAAIokB,EAAGpkB,IAC3CX,IAAKP,KAAMY,UAAUM,IAEvB,OAAOlB,KAAKa,MACd,EACAmhZ,IAAU9hZ,UAAUyV,QAAU,WAC5B,IAAK,IAAIzU,EAAI,EAAGokB,EAAI1kB,UAAUC,OAAQK,EAAIokB,EAAGpkB,IAC3CyU,IAAQ3V,KAAMY,UAAUM,IAE1B,OAAOlB,KAAKa,MACd,EACAmhZ,IAAU9hZ,UAAU+mB,IAAM,WACxB,GAAKjnB,KAAKiiZ,KAAV,CAGA,IAAI/7X,EAAMlmB,KAAKiiZ,KAAK9/Y,MAQpB,OAPAnC,KAAKiiZ,KAAOjiZ,KAAKiiZ,KAAK3sX,KAClBt1B,KAAKiiZ,KACPjiZ,KAAKiiZ,KAAK1sX,KAAO,KAEjBv1B,KAAKgiC,KAAO,KAEdhiC,KAAKa,SACEqlB,CATP,CAUF,EACA87X,IAAU9hZ,UAAU0qB,MAAQ,WAC1B,GAAK5qB,KAAKgiC,KAAV,CAGA,IAAI9b,EAAMlmB,KAAKgiC,KAAK7/B,MAQpB,OAPAnC,KAAKgiC,KAAOhiC,KAAKgiC,KAAKzM,KAClBv1B,KAAKgiC,KACPhiC,KAAKgiC,KAAK1M,KAAO,KAEjBt1B,KAAKiiZ,KAAO,KAEdjiZ,KAAKa,SACEqlB,CATP,CAUF,EACA87X,IAAU9hZ,UAAUkI,QAAU,SAAUiL,EAAIivY,GAC1CA,EAAQA,GAAStiZ,KACjB,IAAK,IAAIuiZ,EAASviZ,KAAKgiC,KAAM9gC,EAAI,EAAc,OAAXqhZ,EAAiBrhZ,IACnDmS,EAAGzR,KAAK0gZ,EAAOC,EAAOpgZ,MAAOjB,EAAGlB,MAChCuiZ,EAASA,EAAOhtX,IAEpB,EACAysX,IAAU9hZ,UAAUsiZ,eAAiB,SAAUnvY,EAAIivY,GACjDA,EAAQA,GAAStiZ,KACjB,IAAK,IAAIuiZ,EAASviZ,KAAKiiZ,KAAM/gZ,EAAIlB,KAAKa,OAAS,EAAc,OAAX0hZ,EAAiBrhZ,IACjEmS,EAAGzR,KAAK0gZ,EAAOC,EAAOpgZ,MAAOjB,EAAGlB,MAChCuiZ,EAASA,EAAOjtX,IAEpB,EACA0sX,IAAU9hZ,UAAU8B,IAAM,SAAU4sB,GAClC,IAAK,IAAI1tB,EAAI,EAAGqhZ,EAASviZ,KAAKgiC,KAAiB,OAAXugX,GAAmBrhZ,EAAI0tB,EAAG1tB,IAE5DqhZ,EAASA,EAAOhtX,KAElB,GAAIr0B,IAAM0tB,GAAgB,OAAX2zX,EACb,OAAOA,EAAOpgZ,KAElB,EACA6/Y,IAAU9hZ,UAAUuiZ,WAAa,SAAU7zX,GACzC,IAAK,IAAI1tB,EAAI,EAAGqhZ,EAASviZ,KAAKiiZ,KAAiB,OAAXM,GAAmBrhZ,EAAI0tB,EAAG1tB,IAE5DqhZ,EAASA,EAAOjtX,KAElB,GAAIp0B,IAAM0tB,GAAgB,OAAX2zX,EACb,OAAOA,EAAOpgZ,KAElB,EACA6/Y,IAAU9hZ,UAAU8wB,IAAM,SAAU3d,EAAIivY,GACtCA,EAAQA,GAAStiZ,KAEjB,IADA,IAAIkmB,EAAM,IAAI87X,IACLO,EAASviZ,KAAKgiC,KAAiB,OAAXugX,GAC3Br8X,EAAI3lB,KAAK8S,EAAGzR,KAAK0gZ,EAAOC,EAAOpgZ,MAAOnC,OACtCuiZ,EAASA,EAAOhtX,KAElB,OAAOrP,CACT,EACA87X,IAAU9hZ,UAAUwiZ,WAAa,SAAUrvY,EAAIivY,GAC7CA,EAAQA,GAAStiZ,KAEjB,IADA,IAAIkmB,EAAM,IAAI87X,IACLO,EAASviZ,KAAKiiZ,KAAiB,OAAXM,GAC3Br8X,EAAI3lB,KAAK8S,EAAGzR,KAAK0gZ,EAAOC,EAAOpgZ,MAAOnC,OACtCuiZ,EAASA,EAAOjtX,KAElB,OAAOpP,CACT,EACA87X,IAAU9hZ,UAAUyxB,OAAS,SAAUte,EAAIkxC,GACzC,IAAIyiQ,EACAu7F,EAASviZ,KAAKgiC,KAClB,GAAIphC,UAAUC,OAAS,EACrBmmT,EAAMziQ,MACD,KAAIvkD,KAAKgiC,KAId,MAAM,IAAIj9B,UAAU,8CAHpBw9Y,EAASviZ,KAAKgiC,KAAKzM,KACnByxR,EAAMhnT,KAAKgiC,KAAK7/B,KAGlB,CACA,IAAK,IAAIjB,EAAI,EAAc,OAAXqhZ,EAAiBrhZ,IAC/B8lT,EAAM3zS,EAAG2zS,EAAKu7F,EAAOpgZ,MAAOjB,GAC5BqhZ,EAASA,EAAOhtX,KAElB,OAAOyxR,CACT,EACAg7F,IAAU9hZ,UAAUyiZ,cAAgB,SAAUtvY,EAAIkxC,GAChD,IAAIyiQ,EACAu7F,EAASviZ,KAAKiiZ,KAClB,GAAIrhZ,UAAUC,OAAS,EACrBmmT,EAAMziQ,MACD,KAAIvkD,KAAKiiZ,KAId,MAAM,IAAIl9Y,UAAU,8CAHpBw9Y,EAASviZ,KAAKiiZ,KAAK3sX,KACnB0xR,EAAMhnT,KAAKiiZ,KAAK9/Y,KAGlB,CACA,IAAK,IAAIjB,EAAIlB,KAAKa,OAAS,EAAc,OAAX0hZ,EAAiBrhZ,IAC7C8lT,EAAM3zS,EAAG2zS,EAAKu7F,EAAOpgZ,MAAOjB,GAC5BqhZ,EAASA,EAAOjtX,KAElB,OAAO0xR,CACT,EACAg7F,IAAU9hZ,UAAU0iZ,QAAU,WAE5B,IADA,IAAInsY,EAAM,IAAIgqB,MAAMzgC,KAAKa,QAChBK,EAAI,EAAGqhZ,EAASviZ,KAAKgiC,KAAiB,OAAXugX,EAAiBrhZ,IACnDuV,EAAIvV,GAAKqhZ,EAAOpgZ,MAChBogZ,EAASA,EAAOhtX,KAElB,OAAO9e,CACT,EACAurY,IAAU9hZ,UAAU2iZ,eAAiB,WAEnC,IADA,IAAIpsY,EAAM,IAAIgqB,MAAMzgC,KAAKa,QAChBK,EAAI,EAAGqhZ,EAASviZ,KAAKiiZ,KAAiB,OAAXM,EAAiBrhZ,IACnDuV,EAAIvV,GAAKqhZ,EAAOpgZ,MAChBogZ,EAASA,EAAOjtX,KAElB,OAAO7e,CACT,EACAurY,IAAU9hZ,UAAU8mB,MAAQ,SAAUsS,EAAMC,IAC1CA,EAAKA,GAAMv5B,KAAKa,QACP,IACP04B,GAAMv5B,KAAKa,SAEby4B,EAAOA,GAAQ,GACJ,IACTA,GAAQt5B,KAAKa,QAEf,IAAI+gD,EAAM,IAAIogW,IACd,GAAIzoX,EAAKD,GAAQC,EAAK,EACpB,OAAOqoB,EAELtoB,EAAO,IACTA,EAAO,GAELC,EAAKv5B,KAAKa,SACZ04B,EAAKv5B,KAAKa,QAEZ,IAAK,IAAIK,EAAI,EAAGqhZ,EAASviZ,KAAKgiC,KAAiB,OAAXugX,GAAmBrhZ,EAAIo4B,EAAMp4B,IAC/DqhZ,EAASA,EAAOhtX,KAElB,KAAkB,OAAXgtX,GAAmBrhZ,EAAIq4B,EAAIr4B,IAAKqhZ,EAASA,EAAOhtX,KACrDqsB,EAAIrhD,KAAKgiZ,EAAOpgZ,OAElB,OAAOy/C,CACT,EACAogW,IAAU9hZ,UAAU4iZ,aAAe,SAAUxpX,EAAMC,IACjDA,EAAKA,GAAMv5B,KAAKa,QACP,IACP04B,GAAMv5B,KAAKa,SAEby4B,EAAOA,GAAQ,GACJ,IACTA,GAAQt5B,KAAKa,QAEf,IAAI+gD,EAAM,IAAIogW,IACd,GAAIzoX,EAAKD,GAAQC,EAAK,EACpB,OAAOqoB,EAELtoB,EAAO,IACTA,EAAO,GAELC,EAAKv5B,KAAKa,SACZ04B,EAAKv5B,KAAKa,QAEZ,IAAK,IAAIK,EAAIlB,KAAKa,OAAQ0hZ,EAASviZ,KAAKiiZ,KAAiB,OAAXM,GAAmBrhZ,EAAIq4B,EAAIr4B,IACvEqhZ,EAASA,EAAOjtX,KAElB,KAAkB,OAAXitX,GAAmBrhZ,EAAIo4B,EAAMp4B,IAAKqhZ,EAASA,EAAOjtX,KACvDssB,EAAIrhD,KAAKgiZ,EAAOpgZ,OAElB,OAAOy/C,CACT,EACAogW,IAAU9hZ,UAAUkB,OAAS,SAAUslB,EAAOq8X,GACxCr8X,EAAQ1mB,KAAKa,SACf6lB,EAAQ1mB,KAAKa,OAAS,GAEpB6lB,EAAQ,IACVA,EAAQ1mB,KAAKa,OAAS6lB,GAExB,IAAK,IAAIxlB,EAAI,EAAGqhZ,EAASviZ,KAAKgiC,KAAiB,OAAXugX,GAAmBrhZ,EAAIwlB,EAAOxlB,IAChEqhZ,EAASA,EAAOhtX,KAElB,IAAIqsB,EAAM,GACV,IAAS1gD,EAAI,EAAGqhZ,GAAUrhZ,EAAI6hZ,EAAa7hZ,IACzC0gD,EAAIrhD,KAAKgiZ,EAAOpgZ,OAChBogZ,EAASviZ,KAAKmiZ,WAAWI,GAEZ,OAAXA,IACFA,EAASviZ,KAAKiiZ,MAEZM,IAAWviZ,KAAKgiC,MAAQugX,IAAWviZ,KAAKiiZ,OAC1CM,EAASA,EAAOjtX,MAElB,IAASp0B,EAAI,EAAGA,GAAKN,UAAUC,QAAU,EAAI,EAAID,UAAUC,OAAS,GAAIK,IACtEqhZ,EAAS,IAAOviZ,KAAMuiZ,EAAQrhZ,EAAI,EAAI,GAAKN,UAAUC,QAAUK,EAAI,OAAIu1B,EAAY71B,UAAUM,EAAI,IAEnG,OAAO0gD,CACT,EACAogW,IAAU9hZ,UAAU0wB,QAAU,WAG5B,IAFA,IAAIoR,EAAOhiC,KAAKgiC,KACZigX,EAAOjiZ,KAAKiiZ,KACPM,EAASvgX,EAAiB,OAAXugX,EAAiBA,EAASA,EAAOjtX,KAAM,CAC7D,IAAIlX,EAAImkY,EAAOjtX,KACfitX,EAAOjtX,KAAOitX,EAAOhtX,KACrBgtX,EAAOhtX,KAAOnX,CAChB,CAGA,OAFApe,KAAKgiC,KAAOigX,EACZjiZ,KAAKiiZ,KAAOjgX,EACLhiC,IACT,EA6CA,KArYMohZ,MACJA,IAAsB,EACtB/oW,IAAW,SAAkB2qW,GAC3BA,EAAQ9iZ,UAAUk4C,OAAOC,UAAyB,UAAyB,SAAS4lB,IAClF,IAAIskV,EACJ,OAAO,UAAyB,SAAkB/jV,GAChD,cAAkBA,EAASlpC,KAAOkpC,EAASjpC,MACzC,KAAK,EACHgtX,EAASviZ,KAAKgiC,KAChB,KAAK,EACH,IAAKugX,EAAQ,CACX/jV,EAASjpC,KAAO,EAChB,KACF,CAEA,OADAipC,EAASjpC,KAAO,EACTgtX,EAAOpgZ,MAChB,KAAK,EACHogZ,EAASA,EAAOhtX,KAChBipC,EAASjpC,KAAO,EAChB,MACF,KAAK,EACL,IAAK,MACH,OAAOipC,EAASx5D,OAEtB,GAAGi5D,EAASj+D,KACd,GACF,GA1BgCq4C,KAuYd2pW,IACpB,CAAE,MAAOiB,KAAK,CAGd,IAAID,IAAUjB,IACVmB,IAAM9qW,OAAO,OACb+qW,IAAS/qW,OAAO,UAChBgrW,IAAoBhrW,OAAO,oBAC3BirW,IAAcjrW,OAAO,cACrBkrW,IAAUlrW,OAAO,UACjBmrW,IAAUnrW,OAAO,WACjBorW,IAAoBprW,OAAO,kBAC3BqrW,IAAWrrW,OAAO,WAClB,IAAQA,OAAO,SACfsrW,IAAoBtrW,OAAO,kBAC3BurW,IAAc,WAChB,OAAO,CACT,EAUIC,IAAwB,WAC1B,SAASA,EAASz+W,GAMhB,IALA,QAAgBnlC,KAAM4jZ,GACC,iBAAZz+W,IAAsBA,EAAU,CACzChrB,IAAKgrB,IAEFA,IAASA,EAAU,CAAC,GACrBA,EAAQhrB,MAA+B,iBAAhBgrB,EAAQhrB,KAAoBgrB,EAAQhrB,IAAM,GAAI,MAAM,IAAIpV,UAAU,qCAE7F/E,KAAKkjZ,KAAO/9W,EAAQhrB,KAAO5V,IAC3B,IAAIqzP,EAAKzyN,EAAQtkC,QAAU8iZ,IAG3B,GAFA3jZ,KAAKojZ,KAAmC,mBAAPxrJ,EAAoB+rJ,IAAc/rJ,EACnE53P,KAAKqjZ,KAAel+W,EAAQ0+W,QAAS,EACjC1+W,EAAQ2+W,QAAoC,iBAAnB3+W,EAAQ2+W,OAAqB,MAAM,IAAI/+Y,UAAU,2BAC9E/E,KAAKsjZ,KAAWn+W,EAAQ2+W,QAAU,EAClC9jZ,KAAKujZ,KAAWp+W,EAAQ4+W,QACxB/jZ,KAAKwjZ,KAAqBr+W,EAAQ6+W,iBAAkB,EACpDhkZ,KAAK0jZ,KAAqBv+W,EAAQ8+W,iBAAkB,EACpDjkZ,KAAKk2D,OACP,CAsOA,OAnOA,QAAa0tV,EAAU,CAAC,CACtB/iX,IAAK,MACL7+B,IAAK,WACH,OAAOhC,KAAKkjZ,IACd,EACAhhZ,IAAK,SAAagiZ,GAChB,GAAkB,iBAAPA,GAAmBA,EAAK,EAAG,MAAM,IAAIn/Y,UAAU,qCAC1D/E,KAAKkjZ,KAAOgB,GAAM3/Y,IAClBsvB,IAAK7zB,KACP,GACC,CACD6gC,IAAK,aACL7+B,IAAK,WACH,OAAOhC,KAAKqjZ,IACd,EACAnhZ,IAAK,SAAaiiZ,GAChBnkZ,KAAKqjZ,OAAiBc,CACxB,GACC,CACDtjX,IAAK,SACL7+B,IAAK,WACH,OAAOhC,KAAKsjZ,IACd,EAIAphZ,IAAK,SAAakiZ,GAChB,GAAkB,iBAAPA,EAAiB,MAAM,IAAIr/Y,UAAU,wCAChD/E,KAAKsjZ,KAAWc,EAChBvwX,IAAK7zB,KACP,GACC,CACD6gC,IAAK,mBACL7+B,IAAK,WACH,OAAOhC,KAAKojZ,IACd,EACAlhZ,IAAK,SAAamiZ,GAChB,IAAI5jZ,EAAQT,KACM,mBAAPqkZ,IAAmBA,EAAKV,KAC/BU,IAAOrkZ,KAAKojZ,OACdpjZ,KAAKojZ,KAAqBiB,EAC1BrkZ,KAAKmjZ,KAAU,EACfnjZ,KAAKyjZ,KAAUr7Y,SAAQ,SAAU21P,GAC/BA,EAAIl9P,OAASJ,EAAM2iZ,KAAmBrlJ,EAAI57P,MAAO47P,EAAIl9N,KACrDpgC,EAAM0iZ,MAAWplJ,EAAIl9P,MACvB,KAEFgzB,IAAK7zB,KACP,GACC,CACD6gC,IAAK,SACL7+B,IAAK,WACH,OAAOhC,KAAKmjZ,IACd,GACC,CACDtiX,IAAK,YACL7+B,IAAK,WACH,OAAOhC,KAAKyjZ,KAAU5iZ,MACxB,GACC,CACDggC,IAAK,WACL1+B,MAAO,SAAkBkR,EAAIivY,GAC3BA,EAAQA,GAAStiZ,KACjB,IAAK,IAAIuiZ,EAASviZ,KAAKyjZ,KAAUxB,KAAiB,OAAXM,GAAkB,CACvD,IAAIjtX,EAAOitX,EAAOjtX,KAClBgvX,IAAYtkZ,KAAMqT,EAAIkvY,EAAQD,GAC9BC,EAASjtX,CACX,CACF,GACC,CACDuL,IAAK,UACL1+B,MAAO,SAAiBkR,EAAIivY,GAC1BA,EAAQA,GAAStiZ,KACjB,IAAK,IAAIuiZ,EAASviZ,KAAKyjZ,KAAUzhX,KAAiB,OAAXugX,GAAkB,CACvD,IAAIhtX,EAAOgtX,EAAOhtX,KAClB+uX,IAAYtkZ,KAAMqT,EAAIkvY,EAAQD,GAC9BC,EAAShtX,CACX,CACF,GACC,CACDsL,IAAK,OACL1+B,MAAO,WACL,OAAOnC,KAAKyjZ,KAAUb,UAAU5xX,KAAI,SAAUtqB,GAC5C,OAAOA,EAAEm6B,GACX,GACF,GACC,CACDA,IAAK,SACL1+B,MAAO,WACL,OAAOnC,KAAKyjZ,KAAUb,UAAU5xX,KAAI,SAAUtqB,GAC5C,OAAOA,EAAEvE,KACX,GACF,GACC,CACD0+B,IAAK,QACL1+B,MAAO,WACL,IAAI28D,EAAS9+D,KACTA,KAAKujZ,MAAYvjZ,KAAKyjZ,MAAazjZ,KAAKyjZ,KAAU5iZ,QACpDb,KAAKyjZ,KAAUr7Y,SAAQ,SAAU21P,GAC/B,OAAOj/L,EAAOykV,KAASxlJ,EAAIl9N,IAAKk9N,EAAI57P,MACtC,IAEFnC,KAAK,KAAS,IAAI+e,IAClB/e,KAAKyjZ,KAAY,IAAIT,IACrBhjZ,KAAKmjZ,KAAU,CACjB,GACC,CACDtiX,IAAK,OACL1+B,MAAO,WACL,IAAI29N,EAAS9/N,KACb,OAAOA,KAAKyjZ,KAAUzyX,KAAI,SAAU+sO,GAClC,OAAOwmJ,IAAQzkL,EAAQi+B,IAAe,CACpCr3P,EAAGq3P,EAAIl9N,IACP5uB,EAAG8rP,EAAI57P,MACP+B,EAAG65P,EAAIh7P,KAAOg7P,EAAI+lJ,QAAU,GAEhC,IAAGlB,UAAUryY,QAAO,SAAU8U,GAC5B,OAAOA,CACT,GACF,GACC,CACDwb,IAAK,UACL1+B,MAAO,WACL,OAAOnC,KAAKyjZ,IACd,GACC,CACD5iX,IAAK,MACL1+B,MAAO,SAAa0+B,EAAK1+B,EAAO2hZ,GAE9B,IADAA,EAASA,GAAU9jZ,KAAKsjZ,OACQ,iBAAXQ,EAAqB,MAAM,IAAI/+Y,UAAU,2BAC9D,IAAIhC,EAAM+gZ,EAAS9gZ,KAAKD,MAAQ,EAC5By3B,EAAMx6B,KAAKojZ,KAAmBjhZ,EAAO0+B,GACzC,GAAI7gC,KAAK,KAAO8hC,IAAIjB,GAAM,CACxB,GAAIrG,EAAMx6B,KAAKkjZ,KAEb,OADAsB,IAAKxkZ,KAAMA,KAAK,KAAOgC,IAAI6+B,KACpB,EAET,IACIppB,EADOzX,KAAK,KAAOgC,IAAI6+B,GACX1+B,MAchB,OAVInC,KAAKujZ,OACFvjZ,KAAKwjZ,MAAoBxjZ,KAAKujZ,KAAS1iX,EAAKppB,EAAKtV,QAExDsV,EAAK1U,IAAMA,EACX0U,EAAKqsY,OAASA,EACdrsY,EAAKtV,MAAQA,EACbnC,KAAKmjZ,MAAW3oX,EAAM/iB,EAAK5W,OAC3B4W,EAAK5W,OAAS25B,EACdx6B,KAAKgC,IAAI6+B,GACThN,IAAK7zB,OACE,CACT,CACA,IAAI+9P,EAAM,IAAI,IAAMl9N,EAAK1+B,EAAOq4B,EAAKz3B,EAAK+gZ,GAG1C,OAAI/lJ,EAAIl9P,OAASb,KAAKkjZ,MAChBljZ,KAAKujZ,MAAUvjZ,KAAKujZ,KAAS1iX,EAAK1+B,IAC/B,IAETnC,KAAKmjZ,MAAWplJ,EAAIl9P,OACpBb,KAAKyjZ,KAAU9tY,QAAQooP,GACvB/9P,KAAK,KAAOkC,IAAI2+B,EAAK7gC,KAAKyjZ,KAAUzhX,MACpCnO,IAAK7zB,OACE,EACT,GACC,CACD6gC,IAAK,MACL1+B,MAAO,SAAa0+B,GAClB,IAAK7gC,KAAK,KAAO8hC,IAAIjB,GAAM,OAAO,EAClC,IAAIk9N,EAAM/9P,KAAK,KAAOgC,IAAI6+B,GAAK1+B,MAC/B,OAAQoiZ,IAAQvkZ,KAAM+9P,EACxB,GACC,CACDl9N,IAAK,MACL1+B,MAAO,SAAa0+B,GAClB,OAAO,IAAK7gC,KAAM6gC,GAAK,EACzB,GACC,CACDA,IAAK,OACL1+B,MAAO,SAAc0+B,GACnB,OAAO,IAAK7gC,KAAM6gC,GAAK,EACzB,GACC,CACDA,IAAK,MACL1+B,MAAO,WACL,IAAIu+C,EAAO1gD,KAAKyjZ,KAAUxB,KAC1B,OAAKvhW,GACL8jW,IAAKxkZ,KAAM0gD,GACJA,EAAKv+C,OAFM,IAGpB,GACC,CACD0+B,IAAK,MACL1+B,MAAO,SAAa0+B,GAClB2jX,IAAKxkZ,KAAMA,KAAK,KAAOgC,IAAI6+B,GAC7B,GACC,CACDA,IAAK,OACL1+B,MAAO,SAAcsU,GAEnBzW,KAAKk2D,QAGL,IAFA,IAAInzD,EAAMC,KAAKD,MAENuiB,EAAI7O,EAAI5V,OAAS,EAAGykB,GAAK,EAAGA,IAAK,CACxC,IAAIy4O,EAAMtnP,EAAI6O,GACVm/X,EAAY1mJ,EAAI75P,GAAK,EACzB,GAAkB,IAAdugZ,EAEFzkZ,KAAKkC,IAAI67P,EAAIr3P,EAAGq3P,EAAI9rP,OAAQ,CAC5B,IAAI6xY,EAASW,EAAY1hZ,EAErB+gZ,EAAS,GACX9jZ,KAAKkC,IAAI67P,EAAIr3P,EAAGq3P,EAAI9rP,EAAG6xY,EAE3B,CACF,CACF,GACC,CACDjjX,IAAK,QACL1+B,MAAO,WACL,IAAIooO,EAASvqO,KACbA,KAAK,KAAOoI,SAAQ,SAAUjG,EAAO0+B,GACnC,OAAO,IAAK0pM,EAAQ1pM,GAAK,EAC3B,GACF,KAEK+iX,CACT,CA1P4B,GA2PxB,IAAO,SAAcl9V,EAAM7lB,EAAK6jX,GAClC,IAAIhkW,EAAOgG,EAAK,KAAO1kD,IAAI6+B,GAC3B,GAAI6f,EAAM,CACR,IAAIq9M,EAAMr9M,EAAKv+C,MACf,GAAIoiZ,IAAQ79V,EAAMq3M,IAEhB,GADAymJ,IAAK99V,EAAMhG,IACNgG,EAAK28V,KAAc,YAEpBqB,IACEh+V,EAAKg9V,OAAoBhjW,EAAKv+C,MAAMY,IAAMC,KAAKD,OACnD2jD,EAAK+8V,KAAUrB,YAAY1hW,IAG/B,OAAOq9M,EAAI57P,KACb,CACF,EACIoiZ,IAAU,SAAiB79V,EAAMq3M,GACnC,IAAKA,IAAQA,EAAI+lJ,SAAWp9V,EAAK48V,KAAU,OAAO,EAClD,IAAI9wX,EAAOxvB,KAAKD,MAAQg7P,EAAIh7P,IAC5B,OAAOg7P,EAAI+lJ,OAAStxX,EAAOurO,EAAI+lJ,OAASp9V,EAAK48V,MAAY9wX,EAAOk0B,EAAK48V,IACvE,EACIzvX,IAAO,SAAc6yB,GACvB,GAAIA,EAAKy8V,KAAUz8V,EAAKw8V,KACtB,IAAK,IAAIX,EAAS77V,EAAK+8V,KAAUxB,KAAMv7V,EAAKy8V,KAAUz8V,EAAKw8V,MAAmB,OAAXX,GAAkB,CAInF,IAAIjtX,EAAOitX,EAAOjtX,KAClBkvX,IAAK99V,EAAM67V,GACXA,EAASjtX,CACX,CAEJ,EACIkvX,IAAO,SAAc99V,EAAMhG,GAC7B,GAAIA,EAAM,CACR,IAAIq9M,EAAMr9M,EAAKv+C,MACXukD,EAAK68V,MAAU78V,EAAK68V,KAASxlJ,EAAIl9N,IAAKk9N,EAAI57P,OAC9CukD,EAAKy8V,MAAWplJ,EAAIl9P,OACpB6lD,EAAK,KAAOrgB,OAAO03N,EAAIl9N,KACvB6lB,EAAK+8V,KAAUtB,WAAWzhW,EAC5B,CACF,EACI,KAAqB,SAAa,SAASmzQ,EAAMhzR,EAAK1+B,EAAOtB,EAAQkC,EAAK+gZ,IAC5E,QAAgB9jZ,KAAM6zT,GACtB7zT,KAAK6gC,IAAMA,EACX7gC,KAAKmC,MAAQA,EACbnC,KAAKa,OAASA,EACdb,KAAK+C,IAAMA,EACX/C,KAAK8jZ,OAASA,GAAU,CAC1B,IACIQ,IAAc,SAAqB59V,EAAMrzC,EAAIqtC,EAAM4hW,GACrD,IAAIvkJ,EAAMr9M,EAAKv+C,MACXoiZ,IAAQ79V,EAAMq3M,KAChBymJ,IAAK99V,EAAMhG,GACNgG,EAAK28V,OAActlJ,OAAMtnO,IAE5BsnO,GAAK1qP,EAAGzR,KAAK0gZ,EAAOvkJ,EAAI57P,MAAO47P,EAAIl9N,IAAK6lB,EAC9C,EACI,IAAWk9V,IAGXe,IAAcntY,OAAOokO,OAAO,CAC9BgpK,OAAO,IAELC,IAAYrtY,OAAOokO,OAAO,CAAC,GAU3BkpK,IATiB,SAAwB3/W,GAC3C,OAAKA,EAGkB,iBAAZA,EACFw/W,IAEFx/W,EALE0/W,GAMX,EAEIE,IAAO,CACTv7W,QAAS,CAAC,GAgBR,IAAY,CACdw7W,WAXiB,IAYjBC,0BAR8B,GAS9BC,sBAL0BC,IAM1B/tP,iBAbuBn1I,OAAOm1I,kBAA8C,iBAc5EguP,cANkB,CAAC,QAAS,WAAY,QAAS,WAAY,QAAS,WAAY,cAOlFC,oBAjBwB,QAkBxBC,wBAAyB,EACzBC,WAAY,GAEVC,IAA6B,iBAAZ3mW,SAAuC,GAAY4mW,YAAc,cAAcngZ,KAAK,GAAYmgZ,YAAc,WAEjI,IADA,IAAIC,EACKn8V,EAAO3oD,UAAUC,OAAQH,EAAO,IAAI+/B,MAAM8oB,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E9oD,EAAK8oD,GAAQ5oD,UAAU4oD,GAEzB,OAAQk8V,EAAW1gR,SAAS53E,MAAM/rD,MAAMqkZ,EAAU,CAAC,UAAUnyY,OAAO7S,GACtE,EAAI,WAAa,EACbilZ,IAAUH,KACd,SAAWj8W,EAAQC,GACjB,IAAIy7W,EAA4B,IAAUA,0BACxCC,EAAwB,IAAUA,sBAClCF,EAAa,IAAUA,WACrBh+T,EAAQ2+T,IAIR18W,GAHJO,EAAUD,EAAOC,QAAU,CAAC,GAGXP,GAAK,GAClB28W,EAASp8W,EAAQo8W,OAAS,GAC1BzhX,EAAMqF,EAAQrF,IAAM,GACpBpgC,EAAIylC,EAAQzlC,EAAI,CAAC,EACjBqrD,EAAI,EACJy2V,EAAmB,eAQnBC,EAAwB,CAAC,CAAC,MAAO,GAAI,CAAC,MAAOd,GAAa,CAACa,EAAkBX,IAU7Ea,EAAc,SAAqB9jZ,EAAME,EAAO6jZ,GAClD,IAAIC,EAVc,SAAuB9jZ,GACzC,IAAK,IAAIxB,EAAK,EAAGulZ,EAAwBJ,EAAuBnlZ,EAAKulZ,EAAsBrlZ,OAAQF,IAAM,CACvG,IAAIwlZ,GAAyB,OAAeD,EAAsBvlZ,GAAK,GACrEypE,EAAQ+7U,EAAuB,GAC/BhsY,EAAMgsY,EAAuB,GAC/BhkZ,EAAQA,EAAMmnB,MAAM,GAAG/V,OAAO62D,EAAO,MAAM/gD,KAAK,GAAG9V,OAAO62D,EAAO,OAAO72D,OAAO4G,EAAK,MAAMmP,MAAM,GAAG/V,OAAO62D,EAAO,MAAM/gD,KAAK,GAAG9V,OAAO62D,EAAO,OAAO72D,OAAO4G,EAAK,KAClK,CACA,OAAOhY,CACT,CAEaikZ,CAAcjkZ,GACrB6F,EAAQonD,IACZ43B,EAAM/kF,EAAM+F,EAAO7F,GACnB4B,EAAE9B,GAAQ+F,EACVm8B,EAAIn8B,GAAS7F,EACb8mC,EAAGjhC,GAAS,IAAI8c,OAAO3iB,EAAO6jZ,EAAW,SAAMvvX,GAC/CmvX,EAAO59Y,GAAS,IAAI8c,OAAOmhY,EAAMD,EAAW,SAAMvvX,EACpD,EAQAsvX,EAAY,oBAAqB,eACjCA,EAAY,yBAA0B,QAMtCA,EAAY,uBAAwB,gBAAgBxyY,OAAOsyY,EAAkB,MAK7EE,EAAY,cAAe,IAAIxyY,OAAO4wB,EAAIpgC,EAAEsiZ,mBAAoB,QAAU,IAAI9yY,OAAO4wB,EAAIpgC,EAAEsiZ,mBAAoB,QAAU,IAAI9yY,OAAO4wB,EAAIpgC,EAAEsiZ,mBAAoB,MAC9JN,EAAY,mBAAoB,IAAIxyY,OAAO4wB,EAAIpgC,EAAEuiZ,wBAAyB,QAAU,IAAI/yY,OAAO4wB,EAAIpgC,EAAEuiZ,wBAAyB,QAAU,IAAI/yY,OAAO4wB,EAAIpgC,EAAEuiZ,wBAAyB,MAKlLP,EAAY,uBAAwB,MAAMxyY,OAAO4wB,EAAIpgC,EAAEsiZ,mBAAoB,KAAK9yY,OAAO4wB,EAAIpgC,EAAEwiZ,sBAAuB,MACpHR,EAAY,4BAA6B,MAAMxyY,OAAO4wB,EAAIpgC,EAAEuiZ,wBAAyB,KAAK/yY,OAAO4wB,EAAIpgC,EAAEwiZ,sBAAuB,MAM9HR,EAAY,aAAc,QAAQxyY,OAAO4wB,EAAIpgC,EAAEyiZ,sBAAuB,UAAUjzY,OAAO4wB,EAAIpgC,EAAEyiZ,sBAAuB,SACpHT,EAAY,kBAAmB,SAASxyY,OAAO4wB,EAAIpgC,EAAE0iZ,2BAA4B,UAAUlzY,OAAO4wB,EAAIpgC,EAAE0iZ,2BAA4B,SAKpIV,EAAY,kBAAmB,GAAGxyY,OAAOsyY,EAAkB,MAM3DE,EAAY,QAAS,UAAUxyY,OAAO4wB,EAAIpgC,EAAE2iZ,iBAAkB,UAAUnzY,OAAO4wB,EAAIpgC,EAAE2iZ,iBAAkB,SAWvGX,EAAY,YAAa,KAAKxyY,OAAO4wB,EAAIpgC,EAAE4iZ,cAAcpzY,OAAO4wB,EAAIpgC,EAAE6iZ,YAAa,KAAKrzY,OAAO4wB,EAAIpgC,EAAE8iZ,OAAQ,MAC7Gd,EAAY,OAAQ,IAAIxyY,OAAO4wB,EAAIpgC,EAAE+iZ,WAAY,MAKjDf,EAAY,aAAc,WAAWxyY,OAAO4wB,EAAIpgC,EAAEgjZ,mBAAmBxzY,OAAO4wB,EAAIpgC,EAAEijZ,iBAAkB,KAAKzzY,OAAO4wB,EAAIpgC,EAAE8iZ,OAAQ,MAC9Hd,EAAY,QAAS,IAAIxyY,OAAO4wB,EAAIpgC,EAAEkjZ,YAAa,MACnDlB,EAAY,OAAQ,gBAKpBA,EAAY,wBAAyB,GAAGxyY,OAAO4wB,EAAIpgC,EAAEuiZ,wBAAyB,aAC9EP,EAAY,mBAAoB,GAAGxyY,OAAO4wB,EAAIpgC,EAAEsiZ,mBAAoB,aACpEN,EAAY,cAAe,YAAYxyY,OAAO4wB,EAAIpgC,EAAEmjZ,kBAAmB,KAAO,UAAU3zY,OAAO4wB,EAAIpgC,EAAEmjZ,kBAAmB,KAAO,UAAU3zY,OAAO4wB,EAAIpgC,EAAEmjZ,kBAAmB,KAAO,MAAM3zY,OAAO4wB,EAAIpgC,EAAE6iZ,YAAa,MAAMrzY,OAAO4wB,EAAIpgC,EAAE8iZ,OAAQ,KAAO,QAClPd,EAAY,mBAAoB,YAAYxyY,OAAO4wB,EAAIpgC,EAAEojZ,uBAAwB,KAAO,UAAU5zY,OAAO4wB,EAAIpgC,EAAEojZ,uBAAwB,KAAO,UAAU5zY,OAAO4wB,EAAIpgC,EAAEojZ,uBAAwB,KAAO,MAAM5zY,OAAO4wB,EAAIpgC,EAAEijZ,iBAAkB,MAAMzzY,OAAO4wB,EAAIpgC,EAAE8iZ,OAAQ,KAAO,QAC3Qd,EAAY,SAAU,IAAIxyY,OAAO4wB,EAAIpgC,EAAEqjZ,MAAO,QAAQ7zY,OAAO4wB,EAAIpgC,EAAEsjZ,aAAc,MACjFtB,EAAY,cAAe,IAAIxyY,OAAO4wB,EAAIpgC,EAAEqjZ,MAAO,QAAQ7zY,OAAO4wB,EAAIpgC,EAAEujZ,kBAAmB,MAI3FvB,EAAY,SAAU,GAAGxyY,OAAO,qBAA0BA,OAAO0xY,EAA2B,MAAQ,gBAAgB1xY,OAAO0xY,EAA2B,QAAU,gBAAgB1xY,OAAO0xY,EAA2B,QAAU,gBAC5Nc,EAAY,YAAa5hX,EAAIpgC,EAAEwjZ,SAAS,GAIxCxB,EAAY,YAAa,WACzBA,EAAY,YAAa,SAASxyY,OAAO4wB,EAAIpgC,EAAEyjZ,WAAY,SAAS,GACpEh+W,EAAQi+W,iBAAmB,MAC3B1B,EAAY,QAAS,IAAIxyY,OAAO4wB,EAAIpgC,EAAEyjZ,YAAYj0Y,OAAO4wB,EAAIpgC,EAAEsjZ,aAAc,MAC7EtB,EAAY,aAAc,IAAIxyY,OAAO4wB,EAAIpgC,EAAEyjZ,YAAYj0Y,OAAO4wB,EAAIpgC,EAAEujZ,kBAAmB,MAIvFvB,EAAY,YAAa,WACzBA,EAAY,YAAa,SAASxyY,OAAO4wB,EAAIpgC,EAAE2jZ,WAAY,SAAS,GACpEl+W,EAAQm+W,iBAAmB,MAC3B5B,EAAY,QAAS,IAAIxyY,OAAO4wB,EAAIpgC,EAAE2jZ,YAAYn0Y,OAAO4wB,EAAIpgC,EAAEsjZ,aAAc,MAC7EtB,EAAY,aAAc,IAAIxyY,OAAO4wB,EAAIpgC,EAAE2jZ,YAAYn0Y,OAAO4wB,EAAIpgC,EAAEujZ,kBAAmB,MAGvFvB,EAAY,kBAAmB,IAAIxyY,OAAO4wB,EAAIpgC,EAAEqjZ,MAAO,SAAS7zY,OAAO4wB,EAAIpgC,EAAEkjZ,YAAa,UAC1FlB,EAAY,aAAc,IAAIxyY,OAAO4wB,EAAIpgC,EAAEqjZ,MAAO,SAAS7zY,OAAO4wB,EAAIpgC,EAAE+iZ,WAAY,UAIpFf,EAAY,iBAAkB,SAASxyY,OAAO4wB,EAAIpgC,EAAEqjZ,MAAO,SAAS7zY,OAAO4wB,EAAIpgC,EAAEkjZ,YAAa,KAAK1zY,OAAO4wB,EAAIpgC,EAAEsjZ,aAAc,MAAM,GACpI79W,EAAQo+W,sBAAwB,SAMhC7B,EAAY,cAAe,SAASxyY,OAAO4wB,EAAIpgC,EAAEsjZ,aAAc,KAAO,YAAc,IAAI9zY,OAAO4wB,EAAIpgC,EAAEsjZ,aAAc,KAAO,SAC1HtB,EAAY,mBAAoB,SAASxyY,OAAO4wB,EAAIpgC,EAAEujZ,kBAAmB,KAAO,YAAc,IAAI/zY,OAAO4wB,EAAIpgC,EAAEujZ,kBAAmB,KAAO,SAGzIvB,EAAY,OAAQ,mBAEpBA,EAAY,OAAQ,6BACpBA,EAAY,UAAW,8BACxB,CA7JD,CA6JGhB,IAAMA,IAAKv7W,SACd,IA6XI,IACAq+W,IAyIA,IACAC,IAxgBAC,IAAYhD,IAAKv7W,QACjBw+W,IAAU,WACVC,IAAuB,SAA8B9pY,EAAG8E,GAC1D,IAAIilY,EAAOF,IAAQ1iZ,KAAK6Y,GACpBgqY,EAAOH,IAAQ1iZ,KAAK2d,GAKxB,OAJIilY,GAAQC,IACVhqY,GAAKA,EACL8E,GAAKA,GAEA9E,IAAM8E,EAAI,EAAIilY,IAASC,GAAQ,EAAIA,IAASD,EAAO,EAAI/pY,EAAI8E,GAAK,EAAI,CAC7E,EAIImlY,IACkBH,IAGlB,IAAQtC,IACRX,IAAa,IAAUA,WACzB5tP,IAAmB,IAAUA,iBAC3B,IAAK2wP,IAAUnC,OACjB7hZ,IAAIgkZ,IAAUhkZ,EACZskZ,IAAevD,IACfwD,IAAqBF,IACrBG,IAAwB,WAC1B,SAASC,EAAOzlY,EAASoiB,GAGvB,IAFA,QAAgBnlC,KAAMwoZ,GACtBrjX,EAAUkjX,IAAaljX,GACnBpiB,aAAmBylY,EAAQ,CAC7B,GAAIzlY,EAAQ6hY,UAAYz/W,EAAQy/W,OAAS7hY,EAAQ0lY,sBAAwBtjX,EAAQsjX,kBAC/E,OAAO1lY,EAEPA,EAAUA,EAAQA,OAEtB,MAAO,GAAuB,iBAAZA,EAChB,MAAM,IAAIhe,UAAU,gDAAiDwO,cAAcwP,EAAS,OAE9F,GAAIA,EAAQliB,OAASmkZ,IACnB,MAAM,IAAIjgZ,UAAU,0BAA0BwO,OAAOyxY,IAAY,gBAEnE,IAAM,SAAUjiY,EAASoiB,GACzBnlC,KAAKmlC,QAAUA,EACfnlC,KAAK4kZ,QAAUz/W,EAAQy/W,MAGvB5kZ,KAAKyoZ,oBAAsBtjX,EAAQsjX,kBACnC,IAAI1yY,EAAIgN,EAAQ8Q,OAAOoH,MAAMkK,EAAQy/W,MAAQ,IAAG7gZ,IAAE2kZ,OAAS,IAAG3kZ,IAAE4kZ,OAChE,IAAK5yY,EACH,MAAM,IAAIhR,UAAU,oBAAoBwO,OAAOwP,IAQjD,GANA/iB,KAAK27O,IAAM54N,EAGX/iB,KAAK4oZ,OAAS7yY,EAAE,GAChB/V,KAAK6oZ,OAAS9yY,EAAE,GAChB/V,KAAKy1M,OAAS1/L,EAAE,GACZ/V,KAAK4oZ,MAAQxxP,KAAoBp3J,KAAK4oZ,MAAQ,EAChD,MAAM,IAAI7jZ,UAAU,yBAEtB,GAAI/E,KAAK6oZ,MAAQzxP,KAAoBp3J,KAAK6oZ,MAAQ,EAChD,MAAM,IAAI9jZ,UAAU,yBAEtB,GAAI/E,KAAKy1M,MAAQr+C,KAAoBp3J,KAAKy1M,MAAQ,EAChD,MAAM,IAAI1wM,UAAU,yBAIjBgR,EAAE,GAGL/V,KAAK8oZ,WAAa/yY,EAAE,GAAGuT,MAAM,KAAK0H,KAAI,SAAUtd,GAC9C,GAAI,WAAWpO,KAAKoO,GAAK,CACvB,IAAI89E,GAAO99E,EACX,GAAI89E,GAAO,GAAKA,EAAM4lE,IACpB,OAAO5lE,CAEX,CACA,OAAO99E,CACT,IAVA1T,KAAK8oZ,WAAa,GAYpB9oZ,KAAK+oZ,MAAQhzY,EAAE,GAAKA,EAAE,GAAGuT,MAAM,KAAO,GACtCtpB,KAAKg0C,QACP,CAyNA,OAxNA,QAAaw0W,EAAQ,CAAC,CACpB3nX,IAAK,SACL1+B,MAAO,WAKL,OAJAnC,KAAK+iB,QAAU,GAAGxP,OAAOvT,KAAK4oZ,MAAO,KAAKr1Y,OAAOvT,KAAK6oZ,MAAO,KAAKt1Y,OAAOvT,KAAKy1M,OAC1Ez1M,KAAK8oZ,WAAWjoZ,SAClBb,KAAK+iB,SAAW,IAAIxP,OAAOvT,KAAK8oZ,WAAWz/X,KAAK,OAE3CrpB,KAAK+iB,OACd,GACC,CACD8d,IAAK,WACL1+B,MAAO,WACL,OAAOnC,KAAK+iB,OACd,GACC,CACD8d,IAAK,UACL1+B,MAAO,SAAiBoiC,GAEtB,GADA,IAAM,iBAAkBvkC,KAAK+iB,QAAS/iB,KAAKmlC,QAASZ,KAC9CA,aAAiBikX,GAAS,CAC9B,GAAqB,iBAAVjkX,GAAsBA,IAAUvkC,KAAK+iB,QAC9C,OAAO,EAETwhB,EAAQ,IAAIikX,EAAOjkX,EAAOvkC,KAAKmlC,QACjC,CACA,OAAIZ,EAAMxhB,UAAY/iB,KAAK+iB,QAClB,EAEF/iB,KAAKgpZ,YAAYzkX,IAAUvkC,KAAKipZ,WAAW1kX,EACpD,GACC,CACD1D,IAAK,cACL1+B,MAAO,SAAqBoiC,GAI1B,OAHMA,aAAiBikX,IACrBjkX,EAAQ,IAAIikX,EAAOjkX,EAAOvkC,KAAKmlC,UAE1BmjX,IAAmBtoZ,KAAK4oZ,MAAOrkX,EAAMqkX,QAAUN,IAAmBtoZ,KAAK6oZ,MAAOtkX,EAAMskX,QAAUP,IAAmBtoZ,KAAKy1M,MAAOlxK,EAAMkxK,MAC5I,GACC,CACD50K,IAAK,aACL1+B,MAAO,SAAoBoiC,GAMzB,GALMA,aAAiBikX,IACrBjkX,EAAQ,IAAIikX,EAAOjkX,EAAOvkC,KAAKmlC,UAI7BnlC,KAAK8oZ,WAAWjoZ,SAAW0jC,EAAMukX,WAAWjoZ,OAC9C,OAAQ,EACH,IAAKb,KAAK8oZ,WAAWjoZ,QAAU0jC,EAAMukX,WAAWjoZ,OACrD,OAAO,EACF,IAAKb,KAAK8oZ,WAAWjoZ,SAAW0jC,EAAMukX,WAAWjoZ,OACtD,OAAO,EAET,IAAIK,EAAI,EACR,EAAG,CACD,IAAIid,EAAIne,KAAK8oZ,WAAW5nZ,GACpB+hB,EAAIshB,EAAMukX,WAAW5nZ,GAEzB,GADA,IAAM,qBAAsBA,EAAGid,EAAG8E,QACxBwT,IAANtY,QAAyBsY,IAANxT,EACrB,OAAO,EACF,QAAUwT,IAANxT,EACT,OAAO,EACF,QAAUwT,IAANtY,EACT,OAAQ,EACH,GAAIA,IAAM8E,EAGf,OAAOqlY,IAAmBnqY,EAAG8E,EAEjC,SAAW/hB,EACb,GACC,CACD2/B,IAAK,eACL1+B,MAAO,SAAsBoiC,GACrBA,aAAiBikX,IACrBjkX,EAAQ,IAAIikX,EAAOjkX,EAAOvkC,KAAKmlC,UAEjC,IAAIjkC,EAAI,EACR,EAAG,CACD,IAAIid,EAAIne,KAAK+oZ,MAAM7nZ,GACf+hB,EAAIshB,EAAMwkX,MAAM7nZ,GAEpB,GADA,IAAM,qBAAsBA,EAAGid,EAAG8E,QACxBwT,IAANtY,QAAyBsY,IAANxT,EACrB,OAAO,EACF,QAAUwT,IAANxT,EACT,OAAO,EACF,QAAUwT,IAANtY,EACT,OAAQ,EACH,GAAIA,IAAM8E,EAGf,OAAOqlY,IAAmBnqY,EAAG8E,EAEjC,SAAW/hB,EACb,GAIC,CACD2/B,IAAK,MACL1+B,MAAO,SAAa+mZ,EAASjqC,EAAYkqC,GACvC,OAAQD,GACN,IAAK,WACHlpZ,KAAK8oZ,WAAWjoZ,OAAS,EACzBb,KAAKy1M,MAAQ,EACbz1M,KAAK6oZ,MAAQ,EACb7oZ,KAAK4oZ,QACL5oZ,KAAKqhN,IAAI,MAAO49J,EAAYkqC,GAC5B,MACF,IAAK,WACHnpZ,KAAK8oZ,WAAWjoZ,OAAS,EACzBb,KAAKy1M,MAAQ,EACbz1M,KAAK6oZ,QACL7oZ,KAAKqhN,IAAI,MAAO49J,EAAYkqC,GAC5B,MACF,IAAK,WAIHnpZ,KAAK8oZ,WAAWjoZ,OAAS,EACzBb,KAAKqhN,IAAI,QAAS49J,EAAYkqC,GAC9BnpZ,KAAKqhN,IAAI,MAAO49J,EAAYkqC,GAC5B,MAGF,IAAK,aAC4B,IAA3BnpZ,KAAK8oZ,WAAWjoZ,QAClBb,KAAKqhN,IAAI,QAAS49J,EAAYkqC,GAEhCnpZ,KAAKqhN,IAAI,MAAO49J,EAAYkqC,GAC5B,MACF,IAAK,QAKgB,IAAfnpZ,KAAK6oZ,OAA8B,IAAf7oZ,KAAKy1M,OAA0C,IAA3Bz1M,KAAK8oZ,WAAWjoZ,QAC1Db,KAAK4oZ,QAEP5oZ,KAAK6oZ,MAAQ,EACb7oZ,KAAKy1M,MAAQ,EACbz1M,KAAK8oZ,WAAa,GAClB,MACF,IAAK,QAKgB,IAAf9oZ,KAAKy1M,OAA0C,IAA3Bz1M,KAAK8oZ,WAAWjoZ,QACtCb,KAAK6oZ,QAEP7oZ,KAAKy1M,MAAQ,EACbz1M,KAAK8oZ,WAAa,GAClB,MACF,IAAK,QAK4B,IAA3B9oZ,KAAK8oZ,WAAWjoZ,QAClBb,KAAKy1M,QAEPz1M,KAAK8oZ,WAAa,GAClB,MAGF,IAAK,MAED,IAAItmX,EAAOvgB,OAAOknY,GAAkB,EAAI,EACxC,IAAKlqC,IAAiC,IAAnBkqC,EACjB,MAAM,IAAIlhX,MAAM,mDAElB,GAA+B,IAA3BjoC,KAAK8oZ,WAAWjoZ,OAClBb,KAAK8oZ,WAAa,CAACtmX,OACd,CAEL,IADA,IAAIthC,EAAIlB,KAAK8oZ,WAAWjoZ,SACfK,GAAK,GACsB,iBAAvBlB,KAAK8oZ,WAAW5nZ,KACzBlB,KAAK8oZ,WAAW5nZ,KAChBA,GAAK,GAGT,IAAW,IAAPA,EAAU,CAEZ,GAAI+9W,IAAej/W,KAAK8oZ,WAAWz/X,KAAK,OAA2B,IAAnB8/X,EAC9C,MAAM,IAAIlhX,MAAM,yDAElBjoC,KAAK8oZ,WAAWvoZ,KAAKiiC,EACvB,CACF,CACA,GAAIy8U,EAAY,CAGd,IAAI6pC,EAAa,CAAC7pC,EAAYz8U,IACP,IAAnB2mX,IACFL,EAAa,CAAC7pC,IAE2C,IAAvDqpC,IAAmBtoZ,KAAK8oZ,WAAW,GAAI7pC,GACrC/8V,MAAMliB,KAAK8oZ,WAAW,MACxB9oZ,KAAK8oZ,WAAaA,GAGpB9oZ,KAAK8oZ,WAAaA,CAEtB,CACA,MAEJ,QACE,MAAM,IAAI7gX,MAAM,+BAA+B10B,OAAO21Y,IAM1D,OAJAlpZ,KAAK27O,IAAM37O,KAAKg0C,SACZh0C,KAAK+oZ,MAAMloZ,SACbb,KAAK27O,KAAO,IAAIpoO,OAAOvT,KAAK+oZ,MAAM1/X,KAAK,OAElCrpB,IACT,KAEKwoZ,CACT,CApR4B,GAqRxBY,IAASb,IACTC,IAASY,IAITC,IAHY,SAAmBlrY,EAAG8E,EAAG2hY,GACvC,OAAO,IAAI4D,IAAOrqY,EAAGymY,GAAOpyY,QAAQ,IAAIg2Y,IAAOvlY,EAAG2hY,GACpD,EAEI0E,IAAYD,IAIZE,IAHO,SAAcprY,EAAG8E,EAAG2hY,GAC7B,OAAkC,IAA3B0E,IAAUnrY,EAAG8E,EAAG2hY,EACzB,EAEI4E,IAAYH,IAIZI,IAHQ,SAAetrY,EAAG8E,EAAG2hY,GAC/B,OAAkC,IAA3B4E,IAAUrrY,EAAG8E,EAAG2hY,EACzB,EAEI8E,IAAYL,IAIZM,IAHO,SAAcxrY,EAAG8E,EAAG2hY,GAC7B,OAAO8E,IAAUvrY,EAAG8E,EAAG2hY,GAAS,CAClC,EAEIgF,IAAYP,IAIZQ,IAHQ,SAAe1rY,EAAG8E,EAAG2hY,GAC/B,OAAOgF,IAAUzrY,EAAG8E,EAAG2hY,IAAU,CACnC,EAEIkF,IAAYT,IAIZU,IAHO,SAAc5rY,EAAG8E,EAAG2hY,GAC7B,OAAOkF,IAAU3rY,EAAG8E,EAAG2hY,GAAS,CAClC,EAEI,IAAUyE,IAIVW,IAHQ,SAAe7rY,EAAG8E,EAAG2hY,GAC/B,OAAO,IAAQzmY,EAAG8E,EAAG2hY,IAAU,CACjC,EAEIqF,IAAKV,IACLW,IAAMT,IACN/hG,IAAKiiG,IACL3sE,IAAM6sE,IACNpiG,IAAKsiG,IACLltE,IAAMmtE,IAqCNG,IApCM,SAAahsY,EAAG8uC,EAAIhqC,EAAG2hY,GAC/B,OAAQ33V,GACN,IAAK,MAOH,MANiB,iBAAN9uC,IACTA,EAAIA,EAAE4E,SAES,iBAANE,IACTA,EAAIA,EAAEF,SAED5E,IAAM8E,EACf,IAAK,MAOH,MANiB,iBAAN9E,IACTA,EAAIA,EAAE4E,SAES,iBAANE,IACTA,EAAIA,EAAEF,SAED5E,IAAM8E,EACf,IAAK,GACL,IAAK,IACL,IAAK,KACH,OAAOgnY,IAAG9rY,EAAG8E,EAAG2hY,GAClB,IAAK,KACH,OAAOsF,IAAI/rY,EAAG8E,EAAG2hY,GACnB,IAAK,IACH,OAAOl9F,IAAGvpS,EAAG8E,EAAG2hY,GAClB,IAAK,KACH,OAAO5nE,IAAI7+T,EAAG8E,EAAG2hY,GACnB,IAAK,IACH,OAAOn9F,IAAGtpS,EAAG8E,EAAG2hY,GAClB,IAAK,KACH,OAAO/nE,IAAI1+T,EAAG8E,EAAG2hY,GACnB,QACE,MAAM,IAAI7/Y,UAAU,qBAAqBwO,OAAO05C,IAEtD,EA8IA,SAASm9V,MACP,GAAItC,IAAkB,OAAO,IAC7BA,IAAmB,EAEnB,IAAIuC,EAAqB,WACvB,SAASA,EAAM1iW,EAAOxiB,GACpB,IAAIinM,EAASpsO,KAGb,IAFA,QAAgBA,KAAMqqZ,GACtBllX,EAAUkjX,EAAaljX,GACnBwiB,aAAiB0iW,EACnB,OAAI1iW,EAAMi9V,UAAYz/W,EAAQy/W,OAASj9V,EAAM8gW,sBAAwBtjX,EAAQsjX,kBACpE9gW,EAEA,IAAI0iW,EAAM1iW,EAAMg0L,IAAKx2M,GAGhC,GAAIwiB,aAAiB2iW,EAKnB,OAHAtqZ,KAAK27O,IAAMh0L,EAAMxlD,MACjBnC,KAAKkC,IAAM,CAAC,CAACylD,IACb3nD,KAAKg0C,SACEh0C,KAuBT,GArBAA,KAAKmlC,QAAUA,EACfnlC,KAAK4kZ,QAAUz/W,EAAQy/W,MACvB5kZ,KAAKyoZ,oBAAsBtjX,EAAQsjX,kBAKnCzoZ,KAAK27O,IAAMh0L,EAAM9zB,OAAOvK,MAAM,OAAOD,KAAK,KAG1CrpB,KAAKkC,IAAMlC,KAAK27O,IAAIryN,MAAM,MAEzB0H,KAAI,SAAU9R,GACb,OAAOktN,EAAOm+K,WAAWrrY,EAAE2U,OAC7B,IAICtjB,QAAO,SAAU4U,GAChB,OAAOA,EAAEtkB,MACX,KACKb,KAAKkC,IAAIrB,OACZ,MAAM,IAAIkE,UAAU,yBAAyBwO,OAAOvT,KAAK27O,MAI3D,GAAI37O,KAAKkC,IAAIrB,OAAS,EAAG,CAEvB,IAAI07B,EAAQv8B,KAAKkC,IAAI,GAIrB,GAHAlC,KAAKkC,IAAMlC,KAAKkC,IAAIqO,QAAO,SAAU4U,GACnC,OAAQqlY,EAAUrlY,EAAE,GACtB,IACwB,IAApBnlB,KAAKkC,IAAIrB,OACXb,KAAKkC,IAAM,CAACq6B,QACP,GAAIv8B,KAAKkC,IAAIrB,OAAS,EAAG,CAE9B,IACE09N,EADEC,EAAY,IAA2Bx+N,KAAKkC,KAEhD,IACE,IAAKs8N,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAInzB,EAAIo5M,EAAMp8N,MACd,GAAiB,IAAbgjB,EAAEtkB,QAAgB4pZ,EAAMtlY,EAAE,IAAK,CACjCnlB,KAAKkC,IAAM,CAACijB,GACZ,KACF,CACF,CACF,CAAE,MAAOqiB,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACF,CACF,CACArD,KAAKg0C,QACP,CAmIA,OAlIA,QAAaq2W,EAAO,CAAC,CACnBxpX,IAAK,SACL1+B,MAAO,WAIL,OAHAnC,KAAK2nD,MAAQ3nD,KAAKkC,IAAI8uB,KAAI,SAAU05X,GAClC,OAAOA,EAAMrhY,KAAK,KAAKwK,MACzB,IAAGxK,KAAK,MAAMwK,OACP7zB,KAAK2nD,KACd,GACC,CACD9mB,IAAK,WACL1+B,MAAO,WACL,OAAOnC,KAAK2nD,KACd,GACC,CACD9mB,IAAK,aACL1+B,MAAO,SAAoBwlD,GACzB,IAAImpL,EAAS9wO,KAIT2qZ,IADY3qZ,KAAKmlC,QAAQsjX,mBAAqBnD,IAA4BtlZ,KAAKmlC,QAAQy/W,OAASW,IAC3E,IAAM59V,EAC3Bw9B,EAASrmE,EAAM9c,IAAI2oZ,GACvB,GAAIxlU,EACF,OAAOA,EAET,IAAIy/T,EAAQ5kZ,KAAKmlC,QAAQy/W,MAErBgG,EAAKhG,EAAQ37W,EAAGllC,EAAE8mZ,kBAAoB5hX,EAAGllC,EAAE+mZ,aAC/CnjW,EAAQA,EAAM/hC,QAAQglY,EAAIG,EAAc/qZ,KAAKmlC,QAAQsjX,oBACrDzhU,EAAM,iBAAkBr/B,GAGxBA,EAAQA,EAAM/hC,QAAQqjB,EAAGllC,EAAEinZ,gBAAiBpD,GAC5C5gU,EAAM,kBAAmBr/B,GAGzBA,EAAQA,EAAM/hC,QAAQqjB,EAAGllC,EAAEknZ,WAAYxD,GACvCzgU,EAAM,aAAcr/B,GAGpBA,EAAQA,EAAM/hC,QAAQqjB,EAAGllC,EAAEmnZ,WAAYvD,GACvC3gU,EAAM,aAAcr/B,GAKpB,IAAIwjW,EAAYxjW,EAAMr+B,MAAM,KAAK0H,KAAI,SAAUo6X,GAC7C,OAAOC,EAAgBD,EAAMt6K,EAAO3rM,QACtC,IAAG9b,KAAK,KAAKC,MAAM,OAElB0H,KAAI,SAAUo6X,GACb,OAAOE,EAAYF,EAAMt6K,EAAO3rM,QAClC,IACIy/W,IAEFuG,EAAYA,EAAU56Y,QAAO,SAAU66Y,GAErC,OADApkU,EAAM,uBAAwBokU,EAAMt6K,EAAO3rM,WAClCimX,EAAKnwX,MAAMgO,EAAGllC,EAAEwnZ,iBAC3B,KAEFvkU,EAAM,aAAcmkU,GAKpB,IAKEloL,EALEuoL,EAAW,IAAIzsY,IACf0sY,EAAcN,EAAUn6X,KAAI,SAAUo6X,GACxC,OAAO,IAAId,EAAWc,EAAMt6K,EAAO3rM,QACrC,IACI+9L,EAAa,IAA2BuoL,GAE5C,IACE,IAAKvoL,EAAWplN,MAAOmlN,EAASC,EAAWt0M,KAAK0pB,MAAO,CACrD,IAAI8yW,EAAOnoL,EAAO9gO,MAClB,GAAIqoZ,EAAUY,GACZ,MAAO,CAACA,GAEVI,EAAStpZ,IAAIkpZ,EAAKjpZ,MAAOipZ,EAC3B,CACF,CAAE,MAAO5jX,GACP07L,EAAWh/N,EAAEsjC,EACf,CAAE,QACA07L,EAAW7/N,GACb,CACImoZ,EAASlnX,KAAO,GAAKknX,EAAS1pX,IAAI,KACpC0pX,EAASnlX,OAAO,IAElB,IAAIzzB,GAAS,QAAmB44Y,EAAShrX,UAEzC,OADA1hB,EAAM5c,IAAIyoZ,EAAS/3Y,GACZA,CACT,GACC,CACDiuB,IAAK,aACL1+B,MAAO,SAAoBwlD,EAAOxiB,GAChC,KAAMwiB,aAAiB0iW,GACrB,MAAM,IAAItlZ,UAAU,uBAEtB,OAAO/E,KAAKkC,IAAIw4D,MAAK,SAAUgxV,GAC7B,OAAOC,EAAcD,EAAiBvmX,IAAYwiB,EAAMzlD,IAAIw4D,MAAK,SAAUkxV,GACzE,OAAOD,EAAcC,EAAkBzmX,IAAYumX,EAAgBljR,OAAM,SAAUqjR,GACjF,OAAOD,EAAiBpjR,OAAM,SAAUsjR,GACtC,OAAOD,EAAe7xJ,WAAW8xJ,EAAiB3mX,EACpD,GACF,GACF,GACF,GACF,GAGC,CACDtE,IAAK,OACL1+B,MAAO,SAAc4gB,GACnB,IAAKA,EACH,OAAO,EAET,GAAuB,iBAAZA,EACT,IACEA,EAAU,IAAIylY,EAAOzlY,EAAS/iB,KAAKmlC,QACrC,CAAE,MAAO89W,KACP,OAAO,CACT,CAEF,IAAK,IAAI/hZ,EAAI,EAAGA,EAAIlB,KAAKkC,IAAIrB,OAAQK,IACnC,GAAI6qZ,EAAQ/rZ,KAAKkC,IAAIhB,GAAI6hB,EAAS/iB,KAAKmlC,SACrC,OAAO,EAGX,OAAO,CACT,KAEKklX,CACT,CA7MyB,GA8MzB,IAAQA,EACR,IACIvrY,EAAQ,IADF,IACU,CAClB3E,IAAK,MAEHkuY,EAAevD,IACfwF,EAlWN,WACE,GAAIzC,IAAuB,OAAO,IAClCA,IAAwB,EACxB,IAAImE,EAAM5zW,OAAO,cAEbkyW,EAA0B,WAC5B,SAASA,EAAWc,EAAMjmX,GAGxB,IAFA,QAAgBnlC,KAAMsqZ,GACtBnlX,EAAUkjX,EAAaljX,GACnBimX,aAAgBd,EAAY,CAC9B,GAAIc,EAAKxG,UAAYz/W,EAAQy/W,MAC3B,OAAOwG,EAEPA,EAAOA,EAAKjpZ,KAEhB,CACAipZ,EAAOA,EAAKv3X,OAAOvK,MAAM,OAAOD,KAAK,KACrC29D,EAAM,aAAcokU,EAAMjmX,GAC1BnlC,KAAKmlC,QAAUA,EACfnlC,KAAK4kZ,QAAUz/W,EAAQy/W,MACvB5kZ,KAAKymD,MAAM2kW,GACPprZ,KAAKopZ,SAAW4C,EAClBhsZ,KAAKmC,MAAQ,GAEbnC,KAAKmC,MAAQnC,KAAKq5S,SAAWr5S,KAAKopZ,OAAOrmY,QAE3CikE,EAAM,OAAQhnF,KAChB,CAiGA,OAhGA,QAAasqZ,EAAY,CAAC,CACxBzpX,IAAK,QACL1+B,MAAO,SAAeipZ,GACpB,IAAIlsY,EAAIlf,KAAKmlC,QAAQy/W,MAAQ37W,EAAGllC,EAAEwnZ,iBAAmBtiX,EAAGllC,EAAEkoZ,YACtDl2Y,EAAIq1Y,EAAKnwX,MAAM/b,GACnB,IAAKnJ,EACH,MAAM,IAAIhR,UAAU,uBAAuBwO,OAAO63Y,IAEpDprZ,KAAKq5S,cAAoB5iR,IAAT1gB,EAAE,GAAmBA,EAAE,GAAK,GACtB,MAAlB/V,KAAKq5S,WACPr5S,KAAKq5S,SAAW,IAIbtjS,EAAE,GAGL/V,KAAKopZ,OAAS,IAAIZ,EAAOzyY,EAAE,GAAI/V,KAAKmlC,QAAQy/W,OAF5C5kZ,KAAKopZ,OAAS4C,CAIlB,GACC,CACDnrX,IAAK,WACL1+B,MAAO,WACL,OAAOnC,KAAKmC,KACd,GACC,CACD0+B,IAAK,OACL1+B,MAAO,SAAc4gB,GAEnB,GADAikE,EAAM,kBAAmBjkE,EAAS/iB,KAAKmlC,QAAQy/W,OAC3C5kZ,KAAKopZ,SAAW4C,GAAOjpY,IAAYipY,EACrC,OAAO,EAET,GAAuB,iBAAZjpY,EACT,IACEA,EAAU,IAAIylY,EAAOzlY,EAAS/iB,KAAKmlC,QACrC,CAAE,MAAO89W,KACP,OAAO,CACT,CAEF,OAAOziW,EAAIz9B,EAAS/iB,KAAKq5S,SAAUr5S,KAAKopZ,OAAQppZ,KAAKmlC,QACvD,GACC,CACDtE,IAAK,aACL1+B,MAAO,SAAoBipZ,EAAMjmX,GAC/B,KAAMimX,aAAgBd,GACpB,MAAM,IAAIvlZ,UAAU,4BAEtB,MAAsB,KAAlB/E,KAAKq5S,SACY,KAAfr5S,KAAKmC,OAGF,IAAIkoZ,EAAMe,EAAKjpZ,MAAOgjC,GAAS7/B,KAAKtF,KAAKmC,OACrB,KAAlBipZ,EAAK/xG,SACK,KAAf+xG,EAAKjpZ,OAGF,IAAIkoZ,EAAMrqZ,KAAKmC,MAAOgjC,GAAS7/B,KAAK8lZ,EAAKhC,WAElDjkX,EAAUkjX,EAAaljX,IAGXsjX,oBAAqC,aAAfzoZ,KAAKmC,OAAuC,aAAfipZ,EAAKjpZ,SAG/DgjC,EAAQsjX,oBAAsBzoZ,KAAKmC,MAAMo/E,WAAW,WAAa6pU,EAAKjpZ,MAAMo/E,WAAW,cAKxFvhF,KAAKq5S,SAAS93N,WAAW,OAAQ6pU,EAAK/xG,SAAS93N,WAAW,SAI1DvhF,KAAKq5S,SAAS93N,WAAW,OAAQ6pU,EAAK/xG,SAAS93N,WAAW,QAI1DvhF,KAAKopZ,OAAOrmY,UAAYqoY,EAAKhC,OAAOrmY,UAAW/iB,KAAKq5S,SAASl0S,SAAS,OAAQimZ,EAAK/xG,SAASl0S,SAAS,SAIrGq7C,EAAIxgD,KAAKopZ,OAAQ,IAAKgC,EAAKhC,OAAQjkX,IAAYnlC,KAAKq5S,SAAS93N,WAAW,MAAQ6pU,EAAK/xG,SAAS93N,WAAW,SAIzG/gC,EAAIxgD,KAAKopZ,OAAQ,IAAKgC,EAAKhC,OAAQjkX,IAAYnlC,KAAKq5S,SAAS93N,WAAW,MAAQ6pU,EAAK/xG,SAAS93N,WAAW,MAI/G,IACE,CAAC,CACH1gD,IAAK,MACL7+B,IAAK,WACH,OAAOgqZ,CACT,KAEK1B,CACT,CAxH8B,GAyH9B,IAAaA,EACb,IAAIjC,EAAevD,IACf77W,EAAK8+W,IAAUnC,OACjB7hZ,EAAIgkZ,IAAUhkZ,EACZy8C,EAAM2pW,IACNnjU,EAAQ2+T,IACR6C,EAASY,IACTiB,EAAQD,MACZ,OAAO,GACT,CA2NmB8B,GACbllU,EAAQ2+T,IACR6C,EAASY,IACTngX,EAAK8+W,IAAUnC,OACjB7hZ,EAAIgkZ,IAAUhkZ,EACd6jZ,EAAwBG,IAAUH,sBAClCH,EAAmBM,IAAUN,iBAC7BE,EAAmBI,IAAUJ,iBAC3BrC,EAA0B,IAAUA,wBACtCC,EAAa,IAAUA,WACrBiF,EAAY,SAAmBrlY,GACjC,MAAmB,aAAZA,EAAEhjB,KACX,EACIsoZ,EAAQ,SAAetlY,GACzB,MAAmB,KAAZA,EAAEhjB,KACX,EAIIwpZ,EAAgB,SAAuBF,EAAatmX,GAItD,IAHA,IAAIvyB,GAAS,EACTu5Y,EAAuBV,EAAYzkY,QACnColY,EAAiBD,EAAqBllY,MACnCrU,GAAUu5Y,EAAqBtrZ,QACpC+R,EAASu5Y,EAAqB3jR,OAAM,SAAU6jR,GAC5C,OAAOD,EAAepyJ,WAAWqyJ,EAAiBlnX,EACpD,IACAinX,EAAiBD,EAAqBllY,MAExC,OAAOrU,CACT,EAKIy4Y,EAAkB,SAAyBD,EAAMjmX,GAUnD,OATA6hD,EAAM,OAAQokU,EAAMjmX,GACpBimX,EAAOkB,EAAclB,EAAMjmX,GAC3B6hD,EAAM,QAASokU,GACfA,EAAOmB,EAAcnB,EAAMjmX,GAC3B6hD,EAAM,SAAUokU,GAChBA,EAAOoB,EAAepB,EAAMjmX,GAC5B6hD,EAAM,SAAUokU,GAChBA,EAAOqB,EAAarB,EAAMjmX,GAC1B6hD,EAAM,QAASokU,GACRA,CACT,EACIv0I,EAAM,SAAanjQ,GACrB,OAAQA,GAA2B,MAArBA,EAAGkL,eAAgC,MAAPlL,CAC5C,EASI64Y,EAAgB,SAAuBnB,EAAMjmX,GAC/C,OAAOimX,EAAKv3X,OAAOvK,MAAM,OAAO0H,KAAI,SAAU7L,GAC5C,OAAOunY,EAAavnY,EAAGggB,EACzB,IAAG9b,KAAK,IACV,EACIqjY,EAAe,SAAsBtB,EAAMjmX,GAC7C,IAAIjmB,EAAIimB,EAAQy/W,MAAQ37W,EAAGllC,EAAE4oZ,YAAc1jX,EAAGllC,EAAE6oZ,OAChD,OAAOxB,EAAKxlY,QAAQ1G,GAAG,SAAUwnB,EAAGkjL,EAAG7zM,EAAGqI,EAAG8gN,GAE3C,IAAIt9K,EAgBJ,OAjBAolC,EAAM,QAASokU,EAAM1kX,EAAGkjL,EAAG7zM,EAAGqI,EAAG8gN,GAE7B23C,EAAIjtD,GACNhoK,EAAM,GACGi1N,EAAI9gQ,GACb6rC,EAAM,KAAKruC,OAAOq2M,EAAG,UAAUr2M,QAAQq2M,EAAI,EAAG,UACrCitD,EAAIz4P,GAEbwjC,EAAM,KAAKruC,OAAOq2M,EAAG,KAAKr2M,OAAOwC,EAAG,QAAQxC,OAAOq2M,EAAG,KAAKr2M,QAAQwC,EAAI,EAAG,QACjEmpN,GACTl4I,EAAM,kBAAmBk4I,GACzBt9K,EAAM,KAAKruC,OAAOq2M,EAAG,KAAKr2M,OAAOwC,EAAG,KAAKxC,OAAO6K,EAAG,KAAK7K,OAAO2rN,EAAI,MAAM3rN,OAAOq2M,EAAG,KAAKr2M,QAAQwC,EAAI,EAAG,SAGvG6rC,EAAM,KAAKruC,OAAOq2M,EAAG,KAAKr2M,OAAOwC,EAAG,KAAKxC,OAAO6K,EAAG,MAAM7K,OAAOq2M,EAAG,KAAKr2M,QAAQwC,EAAI,EAAG,QAEzFixE,EAAM,eAAgBplC,GACfA,CACT,GACF,EAUI0qW,EAAgB,SAAuBlB,EAAMjmX,GAC/C,OAAOimX,EAAKv3X,OAAOvK,MAAM,OAAO0H,KAAI,SAAU7L,GAC5C,OAAO0nY,EAAa1nY,EAAGggB,EACzB,IAAG9b,KAAK,IACV,EACIwjY,EAAe,SAAsBzB,EAAMjmX,GAC7C6hD,EAAM,QAASokU,EAAMjmX,GACrB,IAAIjmB,EAAIimB,EAAQy/W,MAAQ37W,EAAGllC,EAAE+oZ,YAAc7jX,EAAGllC,EAAEgpZ,OAC5CtnY,EAAI0f,EAAQsjX,kBAAoB,KAAO,GAC3C,OAAO2C,EAAKxlY,QAAQ1G,GAAG,SAAUwnB,EAAGkjL,EAAG7zM,EAAGqI,EAAG8gN,GAE3C,IAAIt9K,EAmCJ,OApCAolC,EAAM,QAASokU,EAAM1kX,EAAGkjL,EAAG7zM,EAAGqI,EAAG8gN,GAE7B23C,EAAIjtD,GACNhoK,EAAM,GACGi1N,EAAI9gQ,GACb6rC,EAAM,KAAKruC,OAAOq2M,EAAG,QAAQr2M,OAAOkS,EAAG,MAAMlS,QAAQq2M,EAAI,EAAG,UACnDitD,EAAIz4P,GAEXwjC,EADQ,MAANgoK,EACI,KAAKr2M,OAAOq2M,EAAG,KAAKr2M,OAAOwC,EAAG,MAAMxC,OAAOkS,EAAG,MAAMlS,OAAOq2M,EAAG,KAAKr2M,QAAQwC,EAAI,EAAG,QAElF,KAAKxC,OAAOq2M,EAAG,KAAKr2M,OAAOwC,EAAG,MAAMxC,OAAOkS,EAAG,MAAMlS,QAAQq2M,EAAI,EAAG,UAElEsV,GACTl4I,EAAM,kBAAmBk4I,GAGrBt9K,EAFM,MAANgoK,EACQ,MAAN7zM,EACI,KAAKxC,OAAOq2M,EAAG,KAAKr2M,OAAOwC,EAAG,KAAKxC,OAAO6K,EAAG,KAAK7K,OAAO2rN,EAAI,MAAM3rN,OAAOq2M,EAAG,KAAKr2M,OAAOwC,EAAG,KAAKxC,QAAQ6K,EAAI,EAAG,MAEhH,KAAK7K,OAAOq2M,EAAG,KAAKr2M,OAAOwC,EAAG,KAAKxC,OAAO6K,EAAG,KAAK7K,OAAO2rN,EAAI,MAAM3rN,OAAOq2M,EAAG,KAAKr2M,QAAQwC,EAAI,EAAG,QAGnG,KAAKxC,OAAOq2M,EAAG,KAAKr2M,OAAOwC,EAAG,KAAKxC,OAAO6K,EAAG,KAAK7K,OAAO2rN,EAAI,MAAM3rN,QAAQq2M,EAAI,EAAG,YAG1F5iI,EAAM,SAGFplC,EAFM,MAANgoK,EACQ,MAAN7zM,EACI,KAAKxC,OAAOq2M,EAAG,KAAKr2M,OAAOwC,EAAG,KAAKxC,OAAO6K,GAAG7K,OAAOkS,EAAG,MAAMlS,OAAOq2M,EAAG,KAAKr2M,OAAOwC,EAAG,KAAKxC,QAAQ6K,EAAI,EAAG,MAE1G,KAAK7K,OAAOq2M,EAAG,KAAKr2M,OAAOwC,EAAG,KAAKxC,OAAO6K,GAAG7K,OAAOkS,EAAG,MAAMlS,OAAOq2M,EAAG,KAAKr2M,QAAQwC,EAAI,EAAG,QAG7F,KAAKxC,OAAOq2M,EAAG,KAAKr2M,OAAOwC,EAAG,KAAKxC,OAAO6K,EAAG,MAAM7K,QAAQq2M,EAAI,EAAG,WAG5E5iI,EAAM,eAAgBplC,GACfA,CACT,GACF,EACI4qW,EAAiB,SAAwBpB,EAAMjmX,GAEjD,OADA6hD,EAAM,iBAAkBokU,EAAMjmX,GACvBimX,EAAK9hY,MAAM,OAAO0H,KAAI,SAAU7L,GACrC,OAAO6nY,EAAc7nY,EAAGggB,EAC1B,IAAG9b,KAAK,IACV,EACI2jY,EAAgB,SAAuB5B,EAAMjmX,GAC/CimX,EAAOA,EAAKv3X,OACZ,IAAI3U,EAAIimB,EAAQy/W,MAAQ37W,EAAGllC,EAAEkpZ,aAAehkX,EAAGllC,EAAEmpZ,QACjD,OAAO9B,EAAKxlY,QAAQ1G,GAAG,SAAU0iC,EAAKurW,EAAMvjM,EAAG7zM,EAAGqI,EAAG8gN,GACnDl4I,EAAM,SAAUokU,EAAMxpW,EAAKurW,EAAMvjM,EAAG7zM,EAAGqI,EAAG8gN,GAC1C,IAAIkuL,EAAKv2I,EAAIjtD,GACTunE,EAAKi8H,GAAMv2I,EAAI9gQ,GACfunB,EAAK6zP,GAAMta,EAAIz4P,GACfivY,EAAO/vX,EAuDX,MAtDa,MAAT6vX,GAAgBE,IAClBF,EAAO,IAKTjuL,EAAK/5L,EAAQsjX,kBAAoB,KAAO,GACpC2E,EAGAxrW,EAFW,MAATurW,GAAyB,MAATA,EAEZ,WAGA,IAECA,GAAQE,GAGbl8H,IACFp7Q,EAAI,GAENqI,EAAI,EACS,MAAT+uY,GAGFA,EAAO,KACHh8H,GACFvnE,GAAKA,EAAI,EACT7zM,EAAI,EACJqI,EAAI,IAEJrI,GAAKA,EAAI,EACTqI,EAAI,IAEY,OAAT+uY,IAGTA,EAAO,IACHh8H,EACFvnE,GAAKA,EAAI,EAET7zM,GAAKA,EAAI,GAGA,MAATo3Y,IACFjuL,EAAK,MAEPt9K,EAAM,GAAGruC,OAAO45Y,EAAOvjM,EAAG,KAAKr2M,OAAOwC,EAAG,KAAKxC,OAAO6K,GAAG7K,OAAO2rN,IACtDiyD,EACTvvO,EAAM,KAAKruC,OAAOq2M,EAAG,QAAQr2M,OAAO2rN,EAAI,MAAM3rN,QAAQq2M,EAAI,EAAG,UACpDtsL,IACTskB,EAAM,KAAKruC,OAAOq2M,EAAG,KAAKr2M,OAAOwC,EAAG,MAAMxC,OAAO2rN,EAAI,MAAM3rN,OAAOq2M,EAAG,KAAKr2M,QAAQwC,EAAI,EAAG,SAE3FixE,EAAM,gBAAiBplC,GAChBA,CACT,GACF,EAII6qW,EAAe,SAAsBrB,EAAMjmX,GAG7C,OAFA6hD,EAAM,eAAgBokU,EAAMjmX,GAErBimX,EAAKv3X,OAAOjO,QAAQqjB,EAAGllC,EAAEupZ,MAAO,GACzC,EACIhC,EAAc,SAAqBF,EAAMjmX,GAE3C,OADA6hD,EAAM,cAAeokU,EAAMjmX,GACpBimX,EAAKv3X,OAAOjO,QAAQqjB,EAAG9D,EAAQsjX,kBAAoB1kZ,EAAEwpZ,QAAUxpZ,EAAEypZ,MAAO,GACjF,EAOIzC,EAAgB,SAAuB0C,GACzC,OAAO,SAAU30G,EAAIx/Q,EAAMo0X,EAAIC,EAAIC,EAAIC,EAAKC,EAAIv0X,EAAIw0X,EAAIC,EAAIC,EAAIC,EAAKvsT,GAyBnE,OAvBEroE,EADEu9O,EAAI62I,GACC,GACE72I,EAAI82I,GACN,KAAKp6Y,OAAOm6Y,EAAI,QAAQn6Y,OAAOk6Y,EAAQ,KAAO,IAC5C52I,EAAI+2I,GACN,KAAKr6Y,OAAOm6Y,EAAI,KAAKn6Y,OAAOo6Y,EAAI,MAAMp6Y,OAAOk6Y,EAAQ,KAAO,IAC1DI,EACF,KAAKt6Y,OAAO+lB,GAEZ,KAAK/lB,OAAO+lB,GAAM/lB,OAAOk6Y,EAAQ,KAAO,IAG/Cl0X,EADEs9O,EAAIk3I,GACD,GACIl3I,EAAIm3I,GACR,IAAIz6Y,QAAQw6Y,EAAK,EAAG,UAChBl3I,EAAIo3I,GACR,IAAI16Y,OAAOw6Y,EAAI,KAAKx6Y,QAAQy6Y,EAAK,EAAG,QAChCE,EACJ,KAAK36Y,OAAOw6Y,EAAI,KAAKx6Y,OAAOy6Y,EAAI,KAAKz6Y,OAAO06Y,EAAI,KAAK16Y,OAAO26Y,GACxDT,EACJ,IAAIl6Y,OAAOw6Y,EAAI,KAAKx6Y,OAAOy6Y,EAAI,KAAKz6Y,QAAQ06Y,EAAK,EAAG,MAEpD,KAAK16Y,OAAOgmB,GAEZ,GAAGhmB,OAAO+lB,EAAM,KAAK/lB,OAAOgmB,GAAI1F,MACzC,CACF,EACIk4X,EAAU,SAAiB7pZ,EAAK6gB,EAASoiB,GAC3C,IAAK,IAAIjkC,EAAI,EAAGA,EAAIgB,EAAIrB,OAAQK,IAC9B,IAAKgB,EAAIhB,GAAGoE,KAAKyd,GACf,OAAO,EAGX,GAAIA,EAAQ+lY,WAAWjoZ,SAAWskC,EAAQsjX,kBAAmB,CAM3D,IAAK,IAAIhnM,EAAM,EAAGA,EAAMv/M,EAAIrB,OAAQ4gN,IAElC,GADAz6H,EAAM9kF,EAAIu/M,GAAK2nM,QACXlnZ,EAAIu/M,GAAK2nM,SAAWkB,EAAW0B,KAG/B9pZ,EAAIu/M,GAAK2nM,OAAON,WAAWjoZ,OAAS,EAAG,CACzC,IAAIu8S,EAAUl7S,EAAIu/M,GAAK2nM,OACvB,GAAIhsG,EAAQwrG,QAAU7lY,EAAQ6lY,OAASxrG,EAAQyrG,QAAU9lY,EAAQ8lY,OAASzrG,EAAQ3nG,QAAU1yL,EAAQ0yL,MAClG,OAAO,CAEX,CAIF,OAAO,CACT,CACA,OAAO,CACT,EACA,OAAO,GACT,CACA,IAAI40M,IAAQD,MASR+D,IARY,SAAmBprY,EAAS4kC,EAAOxiB,GACjD,IACEwiB,EAAQ,IAAI0iW,IAAM1iW,EAAOxiB,EAC3B,CAAE,MAAO89W,KACP,OAAO,CACT,CACA,OAAOt7V,EAAMriD,KAAKyd,EACpB,EAEIqrY,IAA2BtM,IAAwBqM,KAKvD,SAASpwV,IAAK76D,EAAQy2D,EAAKj0C,GAEzB,IAAI2oY,EAASnrZ,EAAO42D,KAAKH,GAIvBkE,EADS,IAAIujB,IAAIznB,GACHkE,OAEZ/sC,EAAQ,GAOZ5tB,EAAOwH,iBAAiB,WANxB,SAAS4jZ,EAAOluZ,GACVA,EAAIixB,SAAWg9X,IACjBv9X,EAAQ,EACR5tB,EAAO2H,oBAAoB,UAAWyjZ,GAAQ,GAElD,IAC2C,GAY3ChrZ,YARA,SAAS42D,IACHppC,GAAS,IAGbu9X,EAAOx6P,YAAYnuI,EAAMm4C,GACzBv6D,WAAW42D,EApBF,KAqBTppC,GAAS,EACX,GAtBW,IAwBb,CAGA,IAAIy9X,IAAa,+/EACjB,SAAS,IAAUrlF,GACjB,IAAK,IAAIjjO,EAAQrlG,UAAUC,OAAQsjC,EAAM,IAAI1D,MAAMwlE,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACvG/hE,EAAI+hE,EAAQ,GAAKtlG,UAAUslG,GAE7B,IAAK,IAAIw7G,EAAM,EAAGynH,EAAOhlS,EAAKu9K,EAAMynH,EAAKtoU,OAAQ6gN,IAAO,CAEtD,IAAWwnH,EADHC,EAAKznH,GAEf,CACA,OAAOwnH,CACT,CACA,SAAS,IAAWA,EAAM/kS,GACxB,IAAK,IAAIqyM,EAAM,EAAGg4K,EAAeh3Y,OAAOopB,KAAKuD,GAAMqyM,EAAMg4K,EAAa3tZ,OAAQ21O,IAAO,CACnF,IAAIx7B,EAAWwzM,EAAah4K,GAC5Bh+B,GAAY0wH,EAAMluH,EAAU72K,EAAI62K,IAAW,EAC7C,CACF,CA0HA,SAAS,IAAQr2K,EAAQm6P,GACvB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GACvB,GAAIntB,OAAO+wB,sBAAuB,CAChC,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAC3Cm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GACpD,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UACtD,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAC7B,CACA,OAAO5H,CACT,CACA,SAAS,IAAcl4B,GACrB,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CACzC,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EACpDA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,GACpD,IAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GACtC,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAC5JrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAC7E,GACF,CACA,OAAOn4B,CACT,CACA,IACIyiT,IAAO,EACPsjG,IAAY,EAGZ,IAAsB,oBAAXvrZ,OAAyBA,YAASuzB,OAC/BA,IAAdg4X,WAA2B,KAAiD,QAAlBtN,IAAQ,IAAEuN,UAA0B,IAAVvN,KAAoBA,IAAMzF,UAChH+S,IAAY,IAAEC,IAEhB,IAAIC,IAAkB,CACpBC,OAAQ,CACNvuS,KAAK,EACLwuS,KAAK,GAEPx9X,QAAQ,EACRy9X,UAAU,EACVT,QAAQ,GAENU,IAAO,CACTC,sBAAuB,wBACvBC,gBAAiB,qBACjBC,cAAe,sBACfC,WAAY,cACZC,cAAe,cACfC,WAAY,eAEVC,IAAQ,CACVnkG,KAAM,OACN,YAAa,aAEXokG,IAAU,CACZpkG,KAAMA,IAAKpoS,QACX,YAAa0rY,IAAYA,IAAU1rY,QAAU,iBAE3CysY,IAAe,CACjBrkG,KAAM,SAAc6wF,GAClB,OAAOA,CACT,EACA,YAAa,SAAkByT,EAAQjjT,GACrC,OAAOiiT,IAAU/S,QAAQ+T,EAAQ,CAC/BjjT,OAAQA,IACP6mH,IACL,GAEEq8L,IAAc,oQACdC,IAAsB,gBAC1B,SAASC,IAAiBvqY,GACxB,MAAoB,mBAANA,CAChB,CACA,SAASwqY,IAAWx+X,EAAQy+X,EAAcC,EAAc50P,GACtD,IAAI4zB,EAAS,eAAex7K,OAAOu8Y,EAAc,yCAC7Cz2R,EAAS,gBAAgB9lH,OAAOw8Y,EAAc,kBAE9CrxT,EAAMx7F,OAAO42D,KAAK,IACtB4kC,EAAI/zF,SAASqlZ,MAAMjhO,EAAS19J,EAASgoG,GACrC36B,EAAI/zF,SAASonD,MAAQ,GAAGx+C,OAAO+7Y,IAAMn0P,GAAO,eAC9C,CAOA,SAAS80P,IAAU58L,EAAM68L,GAEvB,GAAI78L,EAAK0pL,QAAS,CAChB,IAEMoT,EAFFt6J,EAAS,IAAaxiC,EAAK0pL,SAC/B,GAAImT,GAAgBA,IAAiBr6J,EAAO4nJ,QAE1Cz4Q,QAAQib,KAAK,8CAA8C1sI,OAAO+7Y,IAAMz5J,EAAO4nJ,SAAU,6BAA6BlqY,OAAuD,QAA/C48Y,EAAsBb,IAAMY,UAAmD,IAAxBC,EAAiCA,EAAsBD,EAAc,MAE5P,IAAI/0P,EAAO06F,EAAO4nJ,QAIlB,OAHK2Q,IAAYmB,IAAQp0P,GAAO,IAAI5nJ,OAAOsiP,EAAO9yO,QAAQiE,MAAM,MAC9Dg+G,QAAQib,KAAK,uBAAuB1sI,OAAO+7Y,IAAMn0P,GAAO,KAAK5nJ,OAAOsiP,EAAO9yO,QAAS,iCAAiCxP,OAAO+7Y,IAAMn0P,GAAO,SAAS5nJ,OAAOg8Y,IAAQp0P,GAAO,MAEnKA,CACT,CAGA,MAAI,SAAUk4D,GAAQ,aAAcA,GAAQ,UAAWA,GAAQ,YAAaA,GAAQ,YAAaA,GAAQ,UAAWA,GAAQ,WAAYA,EAC/H,YAEL,UAAWA,GAAQ,YAAaA,GAAQ,WAAYA,GAAQ,SAAUA,EACjE,OAEF68L,QAAmDA,EAAe,MAC3E,CAIA,SAASE,IAAa7vW,GACpB,OAJgBn7B,EAIAm7B,IAHD,SAAUn7B,EAGDm7B,EAAO4qQ,IAAK7yF,OAAO/3K,GAJ7C,IAAkBn7B,CAKlB,CACA,SAASirY,IAAyBC,GAChC,IAAIC,EAAuBC,EACvBjwW,EAA2K,QAAnKgwW,EAAyE,QAAhDC,EAAuBF,EAAWnU,gBAA+C,IAAzBqU,OAAkC,EAASA,EAAqBC,oBAAoD,IAA1BF,EAAmCA,EAAwB,CAAC,EAKnP,OAJI,GAAShwW,EAAKmwW,gBAEhBnwW,EAAKmwW,cAAe,GAEfnwW,CACT,CAaA,SAASowW,MA2DP,OA1DAA,IAAU,GAAgC,UAAyB,SAAS3kV,EAASxhE,EAAI6oN,GACvF,IAAIu9L,EAAoBC,EACpBtwW,EACF+vW,EACAh4L,EACAw4L,EACAC,EACAC,EACAC,EACAC,EACAC,EACA3lF,EAAQ5qU,UACV,OAAO,UAAyB,SAAmBqrE,GACjD,cAAkBA,EAAU32C,KAAO22C,EAAU12C,MAC3C,KAAK,EAEH,GADAgrB,EAAOirR,EAAM3qU,OAAS,QAAkB41B,IAAb+0S,EAAM,GAAmBA,EAAM,GAAK,CAAC,GAC3D,GAASn4G,GAAO,CACnBpnJ,EAAU12C,KAAO,GACjB,KACF,CAIA,OAHA+iM,EAAS83L,IAAa7vW,EAAK+3K,QAC3BrsJ,EAAU7nE,GAAK48C,KACfirB,EAAU12C,KAAO,EACV+iM,EAAOjD,KAAKhC,GACrB,KAAK,EACHpnJ,EAAU3nE,GAAK2nE,EAAUpf,KACzByjW,EAAarkV,EAAU7nE,GAAGqiD,MAAM7kD,KAAKqqE,EAAU7nE,GAAI6nE,EAAU3nE,IAC7D2nE,EAAU12C,KAAO,GACjB,MACF,KAAK,GACH+6X,EAAaj9L,EACf,KAAK,GAOH,OANAy9L,EAAqBT,IAAyBC,GAC9CS,EAAiBD,EAAmBx4L,OAC/BA,IAAUy4L,IACbz4L,EAAS83L,IAA8C,QAAhCY,EAAezwW,EAAK+3K,cAAqC,IAAjB04L,EAA0BA,EAAeD,IAE1G9kV,EAAU12C,KAAO,GACV67X,IAASN,EAAoBx4L,GACtC,KAAK,GAGH,OAFA24L,EAAehlV,EAAUpf,KACzBof,EAAU12C,KAAO,GACV67X,IAAS7wW,EAAM+3K,GACxB,KAAK,GAMH,OALA44L,EAAajlV,EAAUpf,KACvBskW,EAAa,IAAc,IAAc,CAAC,EAAG,IAAUD,EAAYD,IAAgB,CAAC,EAAG,CACrFzkT,OAAQ,GAAyD,QAA5CokT,EAAqBM,EAAW1kT,cAA2C,IAAvBokT,EAAgCA,EAAqB,CAAC,EAAoD,QAAhDC,EAAuBI,EAAazkT,cAA6C,IAAzBqkT,EAAkCA,EAAuB,CAAC,KAEvP5kV,EAAU12C,KAAO,GACV87X,IAAO7mZ,EAAI8lZ,EAAYa,EAAY74L,GAC5C,KAAK,GACH,OAAOrsJ,EAAU9W,OAAO,SAAU8W,EAAUpf,MAC9C,KAAK,GACL,IAAK,MACH,OAAOof,EAAUjnE,OAEvB,GAAGgnE,EACL,KACO2kV,IAAQtvZ,MAAMrB,KAAMY,UAC7B,CACA,SAASwwZ,IAAS3rR,EAAKC,GACrB,OAAO4rR,IAAUjwZ,MAAMrB,KAAMY,UAC/B,CACA,SAAS0wZ,MAkDP,OAjDAA,IAAY,GAAgC,UAAyB,SAAS5pR,EAASwlB,EAAKorE,GAC1F,IAAIi5L,EACA/kT,EAAQipG,EACZ,OAAO,UAAyB,SAAmB9tE,GACjD,cAAkBA,EAAUryG,KAAOqyG,EAAUpyG,MAC3C,KAAK,EACH,IAAK,GAAS23H,EAAI1gD,QAAS,CACzBm7B,EAAUpyG,KAAO,EACjB,KACF,CAGA,OAFAoyG,EAAUrjI,GAAK08C,KACf2mF,EAAUpyG,KAAO,EACV+iM,EAAOjD,KAAKnoE,EAAI1gD,QACzB,KAAK,EACHm7B,EAAUtjI,GAAKsjI,EAAU96E,KACzB86E,EAAUvjI,GAAKujI,EAAUrjI,GAAGmiD,MAAM7kD,KAAK+lI,EAAUrjI,GAAIqjI,EAAUtjI,IAC/DsjI,EAAUpyG,KAAO,EACjB,MACF,KAAK,EACHoyG,EAAUvjI,GAAoC,QAA9BmtZ,EAAcrkQ,EAAI1gD,cAAoC,IAAhB+kT,EAAyBA,EAAc,CAAC,EAChG,KAAK,EAEH,GADA/kT,EAASm7B,EAAUvjI,IACd,GAAS8oJ,EAAIuoD,OAAQ,CACxB9tE,EAAUpyG,KAAO,GACjB,KACF,CAGA,OAFAoyG,EAAU6pR,GAAKxwW,KACf2mF,EAAUpyG,KAAO,GACV+iM,EAAOjD,KAAKnoE,EAAIuoD,OACzB,KAAK,GACH9tE,EAAU8pR,GAAK9pR,EAAU96E,KACzB86E,EAAUh5G,GAAKg5G,EAAU6pR,GAAG/qW,MAAM7kD,KAAK+lI,EAAU6pR,GAAI7pR,EAAU8pR,IAC/D9pR,EAAUpyG,KAAO,GACjB,MACF,KAAK,GACHoyG,EAAUh5G,GAAKu+H,EAAIuoD,MACrB,KAAK,GAEH,OADAA,EAAQ9tE,EAAUh5G,GACXg5G,EAAUxyE,OAAO,SAAU,IAAc,IAAc,IAAc,CAAC,EAAG+3F,GAAMuoD,EAAQ,CAC5FA,MAAOA,GACL,CAAC,GAAIjpG,EAAS,CAChBA,OAAQA,GACN,CAAC,IACP,KAAK,GACL,IAAK,MACH,OAAOm7B,EAAU3iI,OAEvB,GAAG0iI,EACL,KACO4pR,IAAUjwZ,MAAMrB,KAAMY,UAC/B,CACA,SAAS8wZ,IAAQlnZ,GACf,IAAImnZ,EACAC,EAAepnZ,EAAGqnZ,YAAcrnZ,EAAGqnZ,cAAgBlnZ,SACvD,OAAOinZ,aAAwBE,WAAa,CAC1CvmV,KAAMqmV,EACNG,cAAeH,GACb,CACFrmV,KAAM5gE,SACNonZ,cAAoD,QAApCJ,EAAiBhnZ,SAASq3B,YAAqC,IAAnB2vX,EAA4BA,EAAiBhnZ,SAASgiD,KAEtH,CACA,SAAS0kW,IAAO1rR,EAAKsB,GACnB,OAAO+qR,IAAQ3wZ,MAAMrB,KAAMY,UAC7B,CACA,SAASoxZ,MAqUP,OApUAA,IAAU,GAAgC,UAAyB,SAASr7L,EAASnsN,EAAI6oN,GACvF,IAAI4+L,EAAcC,EAAeC,EAAgBC,EAAgBC,EAAuBxgW,EAAMygW,EAC1F/xW,EACF+3K,EACA9rH,EACAjyE,EACAg4X,EACA55J,EACAj3B,EACA8wL,EACA7iZ,EACA8iZ,EACAC,EACAnnV,EACAwmV,EACAjmZ,EACAqvJ,EACA6gP,EACAnmJ,EACA7sP,EACA2pZ,EACAl9M,EACAs8G,EACA7L,EACArI,EACAkQ,EACA37C,EACA3uO,EACAgrR,EACAzwP,EACA4xP,EACAgjG,EACAC,EACAtpO,EACAmoK,EACAnxM,EACAuyQ,EACArvQ,EACAgzF,EACAx+L,EACA86W,EACAC,EACAC,EACAC,EACAC,GACAzjG,GACA0jG,GAASxyZ,UACX,OAAO,UAAyB,SAAmByyZ,GACjD,cAAkBA,EAAU/9X,KAAO+9X,EAAU99X,MAC3C,KAAK,EAgBH,GAfAm6R,GAAW,WACLmjG,GACFloZ,SAASE,oBAAoB,QAASgoZ,GAExCzgJ,EAAKs9C,UACP,EAEAp3F,EAAS86L,GAAOvyZ,OAAS,EAAIuyZ,GAAO,QAAK38X,EACzC+1E,GAFAjsD,EAAO6yW,GAAOvyZ,OAAS,QAAmB41B,IAAd28X,GAAO,GAAmBA,GAAO,GAAK,CAAC,GAErD9lT,MAAQ,GAAY,EAAO/sD,EAAK+sD,OAAyC,QAAhC2kT,EAAe1xW,EAAKisD,cAAqC,IAAjBylT,EAA0BA,EAAe,CAAC,GAAK1xW,EAAKisD,OACnJjyE,EAAUmhL,GAAUn7J,EAAKhmB,SAAWgmB,EAAKhmB,QAAU,IAAU,CAAC,EAAGo0X,IAAoD,QAAlCuD,EAAgB3xW,EAAKhmB,eAAuC,IAAlB23X,EAA2BA,EAAgB,CAAC,GACzKK,EAAO,IAAc,IAAc,CAAC,EAAGxD,KAAOxuW,EAAKgyW,MACnD55J,EAAgD,QAApCw5J,EAAiB5xW,EAAKo4M,gBAAyC,IAAnBw5J,EAA4BA,EAAiB,SACrGzwL,EAAgD,QAApC0wL,EAAiB7xW,EAAKmhL,gBAAyC,IAAnB0wL,EAA4BA,EAAiBjnG,IAAKmoG,KAC1Gd,EAAuE,QAAnDH,EAAwB9xW,EAAKiyW,wBAAwD,IAA1BH,EAAmCA,EAAwB,gBAC1I1iZ,EAAwB,iBAAPnF,EAAkBG,SAASqyD,cAAcxyD,GAAMA,EACnD,CACX6oZ,EAAU99X,KAAO,GACjB,KACF,CACA,MAAM,IAAI0S,MAAM,GAAG10B,OAAO/I,EAAI,oBAChC,KAAK,GA+CH,IA9C0B,IAAtB+1C,EAAKmwW,eACP+B,EAAK,mBACLC,EAAWhB,IAAQ/hZ,GAAU47D,EAAOmnV,EAASnnV,KAAMwmV,EAAgBW,EAASX,cACvExmV,EAAK99D,eAAeglZ,MACvB3mZ,EAAQnB,SAAS+Z,cAAc,UACzBhR,GAAK++Y,EACX3mZ,EAAMy1Y,eAAkC9qX,IAAtB8pB,EAAKmwW,eAAoD,IAAtBnwW,EAAKmwW,aAAwBnC,IAAW3rY,WAAa29B,EAAKmwW,aAC/GqB,EAAcpkZ,YAAY7B,KAG9BqvJ,EAAO80P,IAAU58L,EAAM9yK,EAAK46G,MAC5B6gP,EAASwT,IAAar0P,GAAMk4D,EAAM7mH,GACrB,cAAT2uD,GACE6gP,EAAOe,UACTlnJ,EAAS,IAAammJ,EAAOe,SACxBqR,IAAYmB,IAAQpkG,KAAM,IAAI53S,OAAOsiP,EAAO9yO,QAAQiE,MAAM,MAC7Dg+G,QAAQib,KAAK,+BAA+B1sI,OAAOsiP,EAAO9yO,QAAS,8BAA8BxP,OAAOg8Y,IAAQpkG,KAAM,OAI5Hx7S,EAAQ2/D,UAAU99D,IAAI,cAClB+oB,GACF5qB,EAAQ2/D,UAAU99D,IAAI,eAExB7B,EAAQ4xY,UAAY,GACpBv4Y,EAAY2G,EACR4qB,KACFo4X,EAAehoZ,SAAS+Z,cAAc,QACzB4qD,UAAU99D,IAAIm+Y,KAC3BhgZ,EAAQhC,YAAYglZ,GACpB3pZ,EAAY2pZ,IAEdl9M,EAAQl1J,EAAKk1J,SAEXumM,EAASvmM,aAAiBxsH,SAAWwsH,EAAMumM,GAAUxmM,GAAWwmM,EAAQvmM,GAAO,GAAM,GAAOjB,aAI1Fj0J,EAAKgsK,cACP4+F,IAAK5+F,aAAahsK,EAAKgsK,cAErBhsK,EAAKq0K,kBACPu2F,IAAKv2F,iBAAiBr0K,EAAKq0K,kBAIzBr0K,EAAKgzW,oBACP,IAAKxhG,KAASxxQ,EAAKgzW,oBAEb,OADJrtG,EAAqB3lQ,EAAKgzW,oBAAoBxhG,IAE5C5G,IAAKjF,mBAAmB6L,EAAO7L,EAAmB7yS,GAAI6yS,EAA4B,SACzEA,aAA8Bj9N,UACvCkiO,IAAKjF,mBAAmB6L,EAAO7L,GAwDrC,OApDArI,EAAMt9P,EAAKs9P,IAEXkQ,EAAU5C,IAAK1kQ,MAAMu1V,EAAiB,cAAT7gP,EAAuB,CAAC,EAAI3uD,EAAQ,CAC/DqxM,IAAKA,KAEPzrC,EAAO,IAAK7xN,EAAKizW,WAAaroG,IAAKmC,MAAMS,EAAS,IAAc,CAC9Dz1F,OAAQA,EACRoJ,SAAUA,EACVi3B,SAAUA,GACTklD,EAAM,CACPnuE,KAAyJ,QAAlJ79K,EAAgE,QAAxDygW,EAAwBnnG,IAAKsoG,6BAA6D,IAA1BnB,EAAmCA,EAAwB/xW,EAAKmvL,YAA2B,IAAT79K,EAAkBA,EAAO,IACxL,CAAC,KACAs9P,kBAAkB,YAAY,SAAUzoR,EAAG2xO,GAC9C,IAAI1vQ,EAAO0vQ,EAAS1vQ,KACR,SAARA,GACFK,EAAUsmE,UAAU99D,IAAI,SACxBxI,EAAUsmE,UAAUn8D,OAAO,UACV,SAARxK,GACTK,EAAUsmE,UAAUn8D,OAAO,SAC3BnK,EAAUsmE,UAAU99D,IAAI,UACP,OAAR7I,EACTK,EAAUsmE,UAAU99D,IAAI,QAAS,SAEjCxI,EAAUsmE,UAAUn8D,OAAO,QAAS,QAExC,KACqB,IAAjBotC,EAAKwkN,UACPthO,EAAUmsX,IAAiBrvW,EAAKwkN,SAAWxkN,EAAKwkN,QAEhD,IAAI,KAAyB,IAAjBxkN,EAAKwkN,QAAmB,CAAC,EAAIxkN,EAAKwkN,SAASnjQ,KACvDwwQ,EAAKrN,QAAQthO,SAGDhN,KADdg4R,EAAQluQ,EAAKkuQ,SAEXA,EAAiB,SAATtzJ,GAENszJ,IAC+CmB,GAAjD5xP,EAAyB,kBAAVywP,EAAsB,CAAC,EAAIA,GAAwBmB,SAAUgjG,EAAY50V,EAAM40V,UAC9FxgJ,EAAKq8C,MAAMmB,EAAUgjG,IAEnBryW,IACgB,MAAdA,EAAKxyC,OACPqkQ,EAAKrkQ,MAAMwyC,EAAKxyC,OAEC,MAAfwyC,EAAKvyC,QACPokQ,EAAKpkQ,OAAOuyC,EAAKvyC,QAEC,MAAhBuyC,EAAK65B,SACPg4L,EAAKh4L,QAAQ75B,EAAK65B,UAGtBi5U,EAAU99X,KAAO,GACV68O,EAAKnP,WAAWj6P,EAAWu3C,EAAKn9C,MAAMw8N,WAC/C,KAAK,GACH,IAAkB,IAAZrlM,EAAoB,CACxB84X,EAAU99X,KAAO,GACjB,KACF,CAsBA,GArBAg0J,EAAU55K,GACgB,IAAtB4wC,EAAKmwW,gBACPh/D,EAAU/mV,SAAS+Z,cAAc,YACzBqtC,MAAQwgW,EAAKvD,sBACrBr/Y,EAAQwpD,OAAOu4R,GACfnoK,EAAUmoK,GACVnxM,EAAU51I,SAAS+Z,cAAc,YACzB68X,UAAYmO,IACpBh+D,EAAQv4R,OAAOonF,GACfsyQ,EAAuB,SAA8B/oZ,GAC9C4nV,EAAQniR,SAASzlE,EAAGpB,SACvBgpV,EAAQlnS,gBAAgB,OAE5B,EACA7/C,SAASD,iBAAiB,QAASmoZ,IAErCC,EAAOnoZ,SAAS+Z,cAAc,OAC9B6kK,EAAQpwH,OAAO25V,GACfA,EAAKxjV,UAAU99D,IAAI,iBAGD,IAAZ+oB,IAAuC,IAAnBA,EAAQq0X,OAAmB,CACnDyE,EAAU99X,KAAO,GACjB,KACF,CACAkuH,EAAqB,UAAyB,SAASA,IACrD,IAAI2oE,EAAKsnM,EAAkBC,EAAYxuJ,EACvC,OAAO,UAAyB,SAAgBvuC,GAC9C,cAAkBA,EAAUthM,KAAOshM,EAAUrhM,MAC3C,KAAK,EACH62L,EAAMn0K,EAAKw+L,KACK,IAAZl8M,IAAuC,IAAnBA,EAAQq0X,QAAmBr0X,EAAQq0X,OAAOxiM,MAChEsnM,EAAmBnB,EAAK,GAAGh/Y,OAAO64M,EAAIxlM,cAAe,YACrD+sY,EAAahpZ,SAAS+Z,cAAc,KACpCygP,EAAch3M,GAAS5N,EAAK4kN,aAAe5kN,EAAK4kN,YAAY/4C,GAAO7rK,EAAK4kN,YACxEwuJ,EAAW9yY,KAAO6yY,EAClBC,EAAWr0U,KAAO,IAClBq0U,EAAWjrZ,OAAS,SACpBirZ,EAAWl4S,SAAW,GAAGloG,OAAOi/Y,EAAkB,KAAKj/Y,OAAO64M,GAE9DunM,EAAWjpZ,iBAAiB,YAA0B,WACpD,IAAIm0D,EAAQ,GAAgC,UAAyB,SAASgpE,EAAS3jI,GACrF,IAAIy1D,EACJ,OAAO,UAAyB,SAAmBmuE,GACjD,cAAkBA,EAAUxyG,KAAOwyG,EAAUvyG,MAC3C,KAAK,EAGH,OAFArxB,EAAEuI,iBACFq7H,EAAUvyG,KAAO,EACV68O,EAAK+9C,WAAW/jG,EAAK+4C,GAC9B,KAAK,EACHxrM,EAAMmuE,EAAUj7E,KAChB7sD,KAAKs/E,KAAO3lB,EACd,KAAK,EACL,IAAK,MACH,OAAOmuE,EAAU9iI,OAEvB,GAAG6iI,EAAU7nI,KACf,KACA,OAAO,SAAUknI,GACf,OAAOroE,EAAMx9D,MAAMrB,KAAMY,UAC3B,CACF,CArBsD,IAsBtDkyZ,EAAK35V,OAAOw6V,IAEhB,KAAK,EACL,IAAK,MACH,OAAO/8L,EAAU5xN,OAEvB,GAAGy+I,EACL,IACAgzF,EAAM,EAAGx+L,EAAO,CAAC,MAAO,OAC1B,KAAK,GACH,KAAMw+L,EAAMx+L,EAAKp3C,QAAS,CACxBwyZ,EAAU99X,KAAO,GACjB,KACF,CACA,OAAO89X,EAAU57V,cAAcgsF,IAAS,KAAM,IAChD,KAAK,GACHgzF,IACA48K,EAAU99X,KAAO,GACjB,MACF,KAAK,IAEa,IAAZgF,IAAuC,IAAnBA,EAAQlJ,UAC9B0hY,EAAiBpoZ,SAAS+Z,cAAc,MACzB7D,KAAO0xY,EAAKnD,cAC3B2D,EAAezzU,KAAO,IACtByzU,EAAeroZ,iBAAiB,SAAS,SAAUxG,GACjD,IAAI0vZ,EAAoBC,EACxBhE,IAAW,KAAUx8L,GAAoD,QAA5CugM,EAAqBrzW,EAAKuvW,oBAAiD,IAAvB8D,EAAgCA,EAAqB,GAAiD,QAA5CC,EAAqBtzW,EAAKwvW,oBAAiD,IAAvB8D,EAAgCA,EAAqB,GAAI14P,GACxPj3J,EAAEuI,gBACJ,IACAqmZ,EAAK35V,OAAO45V,IAID,cAAT53P,IAAqC,IAAZ5gI,IAAyC,IAArBA,EAAQu0X,YACvDkE,EAAcroZ,SAAS+Z,cAAc,MACzB7D,KAAO0xY,EAAKtD,gBACxB+D,EAAY1zU,KAAO,IACnB0zU,EAAYtoZ,iBAAiB,SAAS,SAAUxG,GAC9C,IAAI4vZ,EAAqBC,EACzBlE,IAAW,KAAU7T,GAAuD,QAA7C8X,EAAsBvzW,EAAKuvW,oBAAkD,IAAxBgE,EAAiCA,EAAsB,GAAkD,QAA7CC,EAAsBxzW,EAAKwvW,oBAAkD,IAAxBgE,EAAiCA,EAAsB,GAAI,QAChQ7vZ,EAAEuI,gBACJ,IACAqmZ,EAAK35V,OAAO65V,KAIE,IAAZz4X,IAAuC,IAAnBA,EAAQ8zX,SAC9B6E,EAAmD,QAAtCD,EAAkB1yW,EAAK2yW,iBAA2C,IAApBD,EAA6BA,EAAkB,kCAC1GE,GAAaxoZ,SAAS+Z,cAAc,MACzB7D,KAAO0xY,EAAKrD,cACvBiE,GAAW7zU,KAAO,IAClB6zU,GAAWzoZ,iBAAiB,SAAS,SAAUxG,GAC7C65D,IAAK76D,OAAQgwZ,EAAW,CACtB1mT,OAAQA,EACR2uD,KAAMA,EACNw9F,SAAUA,EACVtlC,KAAM,KAAUA,KAElBnvN,EAAEuI,gBACJ,IACAqmZ,EAAK35V,OAAOg6V,KAEhB,KAAK,GACH,OAAOE,EAAUl+V,OAAO,SAAU,CAChCi9M,KAAMA,EACN/+C,KAAMA,EACN2oL,OAAQA,EACRtsF,SAAUA,GACV+gG,aAAclwW,IAElB,KAAK,GACL,IAAK,MACH,OAAO8yW,EAAUruZ,OAEvB,GAAG2xN,EACL,KACOq7L,IAAQ3wZ,MAAMrB,KAAMY,UAC7B,CCrvFe,SAASozZ,IAA6B5hJ,EAAM1sP,GACzDlO,OAAOopB,KAAKlb,GAAMtd,SAAQ,SAAUnG,ICAvB,SAAmCmwQ,EAAMnwQ,EAAME,GCF/C,IAAoB8xZ,EDG7B9xZ,KCH6B8xZ,EDIhB9xZ,ICFsD,sBADzD,CAAC,EACqBygB,SAAShhB,KAAKqyZ,GDG9C9xZ,EAAMiwQ,EAAK1sP,KAAKzjB,IAEhBmwQ,EAAK2kB,OAAO90R,EAAMkpT,IAAKjxF,YAAY/mN,QAAO,WACxC,OAAO,CACT,IAAGsnN,OAAOt4N,IAGhB,CDTI+xZ,CAA0B9hJ,EAAMnwQ,EAAMyjB,EAAKzjB,GAC7C,GACF,+BGLe,SAASkyZ,IAAoBj1M,GAC1C,IAAIt/E,EAAS,IAAIj5F,IAMjB,OALAu4K,EAAQ92M,SAAQ,SAAUgd,GACxB5N,OAAOopB,KAAKxb,GAAGhd,SAAQ,SAAUy3H,GAC/BD,EAAOpuH,IAAIquH,EACb,GACF,IACOD,CACT,CCPO,IAAIw0R,IAAO,WAAiB,ECDpB,SAASC,IAAyBjiJ,EAAMkiJ,GACrD,IAAIC,EAAc/8Y,OAAOopB,KAAK0zX,GAS9B,OARAC,EAAYnsZ,SAAQ,SAAU+9S,GAC5B,IACE/zC,EAAK+8C,kBAAkBhJ,EAAYmuG,EAAgBnuG,GACrD,CAAE,MAAO/4P,GAEP43E,QAAQib,KAAK,sCAAuC7yF,EACtD,CACF,IACOmnW,EAAY1zZ,OAAS,CAC9B,CCXe,SAAS2zZ,IAA8BpiJ,EAAMkiJ,GAC1D,IAAIC,EAAc/8Y,OAAOopB,KAAK0zX,GAS9B,OARAC,EAAYnsZ,SAAQ,SAAU+9S,GAC5B,IACE/zC,EAAKg9C,qBAAqBjJ,EAAYmuG,EAAgBnuG,GACxD,CAAE,MAAO/4P,GAEP43E,QAAQib,KAAK,yCAA0C7yF,EACzD,CACF,IACOmnW,EAAY1zZ,OAAS,CAC9B,CCVA,SAAS,IAAQ8jC,EAAQm6P,GAAkB,IAAIl+P,EAAOppB,OAAOopB,KAAK+D,GAAS,GAAIntB,OAAO+wB,sBAAuB,CAAE,IAAIC,EAAUhxB,OAAO+wB,sBAAsB5D,GAASm6P,IAAmBt2P,EAAUA,EAAQj4B,QAAO,SAAUwuR,GAAO,OAAOvnR,OAAO8wB,yBAAyB3D,EAAQo6P,GAAKp2P,UAAY,KAAK/H,EAAKrgC,KAAKc,MAAMu/B,EAAM4H,EAAU,CAAE,OAAO5H,CAAM,CACpV,SAAS,IAAcl4B,GAAU,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAAE,IAAImwB,EAAS,MAAQzwB,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAI,IAAQsW,OAAO6Z,IAAS,GAAIjpB,SAAQ,SAAUy4B,IAAO,OAAgBn4B,EAAQm4B,EAAKxP,EAAOwP,GAAO,IAAKrpB,OAAOwnR,0BAA4BxnR,OAAO+jD,iBAAiB7yD,EAAQ8O,OAAOwnR,0BAA0B3tQ,IAAW,IAAQ7Z,OAAO6Z,IAASjpB,SAAQ,SAAUy4B,GAAOrpB,OAAOoxB,eAAelgC,EAAQm4B,EAAKrpB,OAAO8wB,yBAAyBjX,EAAQwP,GAAO,GAAI,CAAE,OAAOn4B,CAAQ,CAC1e,SAAS+rZ,IAAyBp9Y,GAC/C,IAAIg8M,EAAOh8M,EAAMg8M,KACftlN,EAAQsJ,EAAMtJ,MACdC,EAASqJ,EAAMrJ,OACjB,YAAqB,IAAVD,QAA2C,IAAXC,EAClC,IAAc,IAAc,CAAC,EAAGqlN,GAAO,CAAC,EAAG,CAChDtlN,MAAOA,EACPC,OAAQA,SAGS,IAAVD,EACF,IAAc,IAAc,CAAC,EAAGslN,GAAO,CAAC,EAAG,CAChDtlN,MAAOA,SAGW,IAAXC,EACF,IAAc,IAAc,CAAC,EAAGqlN,GAAO,CAAC,EAAG,CAChDrlN,OAAQA,IAGLqlN,CACT,CCjBA,IAAI,IAAY,CAAC,OAAQ,YAAa,kBAAmB,QAAS,UAClE,SAAS,IAAaqwB,GAAW,IAAIC,EACrC,WAAuC,GAAuB,oBAAZ1kH,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFxqD,QAAQ10E,UAAU03C,QAAQh2C,KAAKq9H,QAAQC,UAAUtqD,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO1wE,KAAK,OAAO,CAAO,CAAE,CADvQ,GAA6B,OAAO,WAAkC,IAAsC0O,EAAlCgxO,GAAQ,QAAgBF,GAAkB,GAAIC,EAA2B,CAAE,IAAIE,GAAY,QAAgB7jP,MAAM8E,YAAa8N,EAASqsH,QAAQC,UAAU0kH,EAAOhjP,UAAWijP,EAAY,MAASjxO,EAASgxO,EAAMviP,MAAMrB,KAAMY,WAAc,OAAO,QAA2BZ,KAAM4S,EAAS,CAAG,CAGxa,SAAS,IAAgBmhB,EAAK8M,EAAK1+B,GAWjC,OAVI0+B,KAAO9M,EACTvc,OAAOoxB,eAAe7U,EAAK8M,EAAK,CAC9B1+B,MAAOA,EACPwmC,YAAY,EACZsqB,cAAc,EACdC,UAAU,IAGZn/B,EAAI8M,GAAO1+B,EAEN4xB,CACT,CAUA,IAAI2gY,IAAyB,SAAUC,IACrC,QAAUD,EAAWC,GACrB,IAAIjzZ,EAAS,IAAagzZ,GAC1B,SAASA,IACP,IAAIj0Z,EAuBJ,OAtBA,QAAgBT,KAAM00Z,GACtBj0Z,EAAQiB,EAAOL,MAAMrB,KAAMY,WAC3B,KAAgB,QAAuBH,GAAQ,eAA6B,eAC5E,KAAgB,QAAuBA,GAAQ,qBAAiB,GAChE,KAAgB,QAAuBA,GAAQ,eAAe,SAAU2sD,GACtE,IAAIwnW,EAAsBn0Z,EAAM4W,MAAMmiD,cACF,IAAxBo7V,EAAiCR,IAAOQ,GAC5CxnW,EAAO3sD,EAAM4vE,aAAa5oE,SAElCu9H,QAAQib,KAAK7yF,EAEf,IACA,KAAgB,QAAuB3sD,GAAQ,cAAc,SAAUg6B,GACjEh6B,EAAMo0Z,eACRp0Z,EAAMo0Z,cAActtX,MAAK,SAAU30B,GAIjC,OAHIA,GACF6nB,EAAO7nB,EAAOw/P,OAET,CACT,IAAGtrI,MAAMrmI,EAAMq0Z,YAEnB,IACOr0Z,CACT,CA2HA,OA1HA,QAAai0Z,EAAW,CAAC,CACvB7zX,IAAK,oBACL1+B,MAAO,WACLnC,KAAK+0Z,YACP,GACC,CACDl0X,IAAK,qBACL1+B,MAAO,SAA4BuoK,GACjC,IAAI5rG,EAAS9+D,KACTg1Z,EAAWb,IAAoB,CAACn0Z,KAAKqX,MAAOqzJ,IAQhD,GAPAsqP,EAAS3uX,OAAO,aAChB2uX,EAAS3uX,OAAO,mBAChB2uX,EAAS3uX,OAAO,QAChB2uX,EAAS3uX,OAAO,SAChB2uX,EAAS3uX,OAAO,SAChB2uX,EAAS3uX,OAAO,UAEZ5F,MAAMnH,KAAK07X,GAAUt6V,MAAK,SAAUr3D,GACtC,OAAOy7D,EAAOznD,MAAMhU,KAAOqnK,EAAUrnK,EACvC,IACErD,KAAKi1Z,YACLj1Z,KAAK+0Z,iBACA,CACL,IAAIG,EClFG,SAA4BC,EAASC,GAClD,GAAID,IAAYC,EAAS,OAAO,EAChC,IAAI9iY,EAAU,CACZvkB,OAAO,EACPC,QAAQ,EACRqnZ,aAAa,GAEX/zP,EAAa6yP,IAAoB,CAACgB,EAASC,IAuB/C,OAtBI9zP,EAAWx/H,IAAI,UAAe,UAAWqzX,GAAc,UAAWC,GAAYD,EAAQpnZ,QAAUqnZ,EAAQrnZ,QACtG,UAAWonZ,GAAoC,iBAAlBA,EAAQpnZ,MACvCukB,EAAQvkB,MAAQonZ,EAAQpnZ,MAExBukB,EAAQ+iY,aAAc,IAGtB/zP,EAAWx/H,IAAI,WAAgB,WAAYqzX,GAAc,WAAYC,GAAYD,EAAQnnZ,SAAWonZ,EAAQpnZ,SAC1G,WAAYmnZ,GAAqC,iBAAnBA,EAAQnnZ,OACxCskB,EAAQtkB,OAASmnZ,EAAQnnZ,OAEzBskB,EAAQ+iY,aAAc,GAI1B/zP,EAAWj7H,OAAO,SAClBi7H,EAAWj7H,OAAO,WACd,QAAmBi7H,GAAY5mG,MAAK,SAAUmlE,GAChD,QAASA,KAASs1R,MAAct1R,KAASu1R,KAAa,KAAMD,EAAQt1R,GAAQu1R,EAAQv1R,GACtF,MACEvtG,EAAQ+iY,aAAc,MAEC,IAAlB/iY,EAAQvkB,QAAsC,IAAnBukB,EAAQtkB,SAAoBskB,EAAQ+iY,cAAc/iY,CACtF,CDmD0BgjY,CAAmBb,IAAyBz0Z,KAAKqX,OAAQo9Y,IAAyB/pP,IAChG6qP,EAAqBv1Z,KAAKqX,MAAMi9Y,gBAChCkB,EAAqB9qP,EAAU4pP,gBACnC,GAAIY,EACF,GAAIA,EAAYG,YACdr1Z,KAAKi1Z,YACLj1Z,KAAK+0Z,iBACA,CACL,IAAIU,GAA6BtiN,GAAaoiN,EAAoBC,GAClEx1Z,KAAK01Z,YAAW,SAAUtjJ,IACE,IAAtB8iJ,EAAYnnZ,OACdqkQ,EAAKrkQ,MAAMmnZ,EAAYnnZ,QAEE,IAAvBmnZ,EAAYlnZ,QACdokQ,EAAKpkQ,OAAOknZ,EAAYlnZ,QAEtBynZ,IACED,GACFhB,IAA8BpiJ,EAAMojJ,GAElCD,GACFlB,IAAyBjiJ,EAAMmjJ,IAGnCnjJ,EAAK11C,KACP,GACF,MACUvpB,GAAaoiN,EAAoBC,IAC3Cx1Z,KAAK01Z,YAAW,SAAUtjJ,GACpBojJ,GACFhB,IAA8BpiJ,EAAMojJ,GAElCD,GACFlB,IAAyBjiJ,EAAMmjJ,GAEjCnjJ,EAAK11C,KACP,GAEJ,CACF,GACC,CACD77L,IAAK,uBACL1+B,MAAO,WACLnC,KAAKi1Z,WACP,GACC,CACDp0X,IAAK,aACL1+B,MAAO,WACL,IAAIs6D,EAAcz8D,KAAKqX,MAErBs+Y,GADOl5V,EAAY42J,KACP52J,EAAYk5V,WACxBC,EAAwBn5V,EAAY63V,gBACpCA,OAA4C,IAA1BsB,EAAmC,CAAC,EAAIA,EAG1DzwX,GAFQs3B,EAAY1uD,MACX0uD,EAAYzuD,QACX,OAAyByuD,EAAa,MAClD,GAAIz8D,KAAKqwE,aAAa5oE,QAAS,CAC7B,IAAIouZ,EAAYpB,IAAyBz0Z,KAAKqX,OAC9CrX,KAAK60Z,cT4pEb,SAAen2V,EAAIC,GACjB,OAAOgyV,IAAQtvZ,MAAMrB,KAAMY,UAC7B,CS9pE6B,CAAUZ,KAAKqwE,aAAa5oE,QAASouZ,EAAW1wX,GAASoC,MAAK,SAAU30B,GAC3F,GAAIA,EAAQ,CACV,IAAIw/P,EAAOx/P,EAAOw/P,KACdiiJ,IAAyBjiJ,EAAMkiJ,IACjCliJ,EAAK11C,KAET,CACA,OAAO9pN,CACT,IAAGk0H,MAAM9mI,KAAK80Z,aACVa,GACF31Z,KAAK01Z,WAAWC,EAEpB,CACF,GACC,CACD90X,IAAK,YACL1+B,MAAO,WASL,OARInC,KAAK60Z,eACP70Z,KAAK60Z,cAActtX,MAAK,SAAU30B,GAC5BA,GACFA,EAAO88S,UAEX,IAAG5oL,MAAM9mI,KAAK80Z,aAEhB90Z,KAAK60Z,mBAAgBp+X,EACdz2B,IACT,GACC,CACD6gC,IAAK,SACL1+B,MAAO,WACL,IAAI26D,EAAe98D,KAAKqX,MACtBzD,EAAYkpD,EAAalpD,UACzB9H,EAAQgxD,EAAahxD,MAEvB,OAAoB,gBAAoB,MAAO,CAC7CsmD,IAAKpyD,KAAKqwE,aACVz8D,UAAWA,EACX9H,MAAOA,GAEX,KAEK4oZ,CACT,CAxJ6B,CAwJ3B,iBAEF,IAAgBA,IAAW,YAAa,CACtC9gZ,UAAW,aACX4lD,QAAS,aEtLX,IAAI,IAAY,CAAC,QACjB,SAAS,IAAakqL,GAAW,IAAIC,EACrC,WAAuC,GAAuB,oBAAZ1kH,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFxqD,QAAQ10E,UAAU03C,QAAQh2C,KAAKq9H,QAAQC,UAAUtqD,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO1wE,KAAK,OAAO,CAAO,CAAE,CADvQ,GAA6B,OAAO,WAAkC,IAAsC0O,EAAlCgxO,GAAQ,QAAgBF,GAAkB,GAAIC,EAA2B,CAAE,IAAIE,GAAY,QAAgB7jP,MAAM8E,YAAa8N,EAASqsH,QAAQC,UAAU0kH,EAAOhjP,UAAWijP,EAAY,MAASjxO,EAASgxO,EAAMviP,MAAMrB,KAAMY,WAAc,OAAO,QAA2BZ,KAAM4S,EAAS,CAAG,CAExa,SAAS,MAYP,OAXA,IAAW4E,OAAO89B,QAAU,SAAU5sC,GACpC,IAAK,IAAIxH,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CACzC,IAAImwB,EAASzwB,UAAUM,GACvB,IAAK,IAAI2/B,KAAOxP,EACV7Z,OAAOtX,UAAUqX,eAAe3V,KAAKyvB,EAAQwP,KAC/Cn4B,EAAOm4B,GAAOxP,EAAOwP,GAG3B,CACA,OAAOn4B,CACT,EACO,IAASrH,MAAMrB,KAAMY,UAC9B,CACA,SAAS,IAAgBmzB,EAAK8M,EAAK1+B,GAWjC,OAVI0+B,KAAO9M,EACTvc,OAAOoxB,eAAe7U,EAAK8M,EAAK,CAC9B1+B,MAAOA,EACPwmC,YAAY,EACZsqB,cAAc,EACdC,UAAU,IAGZn/B,EAAI8M,GAAO1+B,EAEN4xB,CACT,CAMA,IACI+hY,IAAoB,SAAUnB,IAChC,QAAUmB,EAAMnB,GAChB,IAAIjzZ,EAAS,IAAao0Z,GAC1B,SAASA,IACP,IAAIr1Z,EAUJ,OATA,QAAgBT,KAAM81Z,GACtBr1Z,EAAQiB,EAAOL,MAAMrB,KAAMY,WAC3B,KAAgB,QAAuBH,GAAQ,YAA0B,eACzE,KAAgB,QAAuBA,GAAQ,iBAAiB,SAAU2xQ,GACxE3xQ,EAAM+E,SACN,IAAIuwZ,EAAwBt1Z,EAAM4W,MAAMs+Y,gBACA,IAA1BI,EAAmC3B,IAAO2B,GAC9C3jJ,EACZ,IACO3xQ,CACT,CAqCA,OApCA,QAAaq1Z,EAAM,CAAC,CAClBj1X,IAAK,oBACL1+B,MAAO,WACLnC,KAAKwF,QACP,GACC,CACDq7B,IAAK,qBACL1+B,MAAO,SAA4BuoK,GAC5ByoC,GAAanzM,KAAKqX,MAAMqO,KAAMglJ,EAAUhlJ,OAC3C1lB,KAAKwF,QAET,GACC,CACDq7B,IAAK,SACL1+B,MAAO,WACL,IAAIujB,EAAO1lB,KAAKqX,MAAMqO,KAClB1lB,KAAKg2Z,UAAUvuZ,SAAWie,GAAQlO,OAAOopB,KAAKlb,GAAM7kB,OAAS,GAC/Db,KAAKg2Z,UAAUvuZ,QAAQiuZ,YAAW,SAAUtjJ,GAC1C4hJ,IAA6B5hJ,EAAM1sP,GACnC0sP,EAAKtuF,SAAS44C,KAChB,GAEJ,GACC,CACD77L,IAAK,SACL1+B,MAAO,WACL,IAAIs6D,EAAcz8D,KAAKqX,MAErB6sE,GADOznB,EAAY/2C,MACP,OAAyB+2C,EAAa,MACpD,OAAoB,gBAAoBi4V,IAAW,IAAS,CAC1DtiW,IAAKpyD,KAAKg2Z,WACT9xU,EAAW,CACZyxU,UAAW31Z,KAAKi2Z,gBAEpB,KAEKH,CACT,CArDwB,CAqDtB,iBAEF,IAAgBA,IAAM,eAAgB,CACpCpwY,KAzDU,CAAC,qBCqCb,IApEwB,SAAHmsC,GAQd,IAPLqkW,EAAMrkW,EAANqkW,OACAzY,EAAO5rV,EAAP4rV,QACA/6P,EAAI7wF,EAAJ6wF,KAMAl2E,EAAsCq0E,EAAAA,UAAe,GAA9CL,EAAWh0E,EAAA,GAAEi0E,EAAcj0E,EAAA,GAalC,OACEq0E,EAAAA,cAAA,WACGq1Q,GACCr1Q,EAAAA,cAAA,OAAKjtI,UAAU,2BACbitI,EAAAA,cAAA,OACExgF,KAAM,SACNxD,QAlBQ,WAChB4jF,GAAe,EACjB,EAiBU30I,MAAO,CAAEkC,OAAQ,SACjBm2B,IAAG,yBAA2B+xX,EAC9BtiZ,UAAU,uCACVgnG,IAAI,YAIRs7S,GACAr1Q,EAAAA,cAAA,OAAK/0I,MAAO,CAAEsrE,SAAU,UACrB,IACDypE,EAAAA,cAACs1Q,IAAAA,EAAuB,CAACviZ,UAAU,yCAA0C,IAAI,qCAKrFitI,EAAAA,cAACh7E,GAAK,CACJ9T,MACE8uF,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,QAAMjtI,UAAU,cAAc6pY,GAAe,UAGjD3jV,KAAM0mF,EACNtI,KArCW,WACfuI,GAAe,EACjB,EAoCMtI,SAlCe,WACnBsI,GAAe,EACjB,EAiCM1yI,MAAO,KAEP8yI,EAAAA,cAAA,OAAKjtI,UAAU,QAAQ8uI,aAAI,EAAJA,EAAMS,UAC7BtC,EAAAA,cAAA,OAAKjtI,UAAU,uBAAuB8uI,aAAI,EAAJA,EAAMW,WAC5CxC,EAAAA,cAAA,OACE/0I,MAAO,CAAEiC,MAAO,OAAQC,OAAQ,QAChCm2B,IAAG,yBAA2B+xX,EAC9BtiZ,UAAU,uCACVgnG,IAAI,WAKd,EC5EI,IAAY,CAAC,QAAS,WAuB1B,IACA,IADiB,cArBjB,SAAyB/oD,EAAMC,GAC7B,IAAIC,EAAQF,EAAKE,MACfC,EAAUH,EAAKG,QACf36C,GAAQ,OAAyBw6C,EAAM,KACzC,OAAoB,gBAAoB,MAAOr6C,OAAO89B,OAAO,CAC3D2c,MAAO,6BACPrW,KAAM,OACNsW,QAAS,YACTC,YAAa,IACbhxC,OAAQ,eACR,cAAe,OACfixC,IAAKN,EACL,kBAAmBE,GAClB36C,GAAQ06C,EAAqB,gBAAoB,QAAS,CAC3Dr+C,GAAIs+C,GACHD,GAAS,KAAmB,gBAAoB,OAAQ,CACzDM,cAAe,QACfC,eAAgB,QAChBvsC,EAAG,4EAEP,ICqEA,IAhFiB,SAAH8rC,GAA4C,IAAtCwhK,EAAIxhK,EAAJwhK,KAAMloH,EAAIt5C,EAAJs5C,KAAM/9C,EAAKyE,EAALzE,MAAOqM,EAAM5H,EAAN4H,OAG/BswD,EAAO,GAuEb,OAtEa,OAATspG,GACFtpG,EAAKxpH,KAAK,CACRqsD,MACEi0F,EAAAA,cAAA,WACG,IACDA,EAAAA,cAACQ,GAAoB,CAACztI,UAAU,qBAAqB,mBAGzDitB,IAAK,IACLhxB,SACEgxI,EAAAA,cAAA,OAAKjtI,UAAU,0BACbitI,EAAAA,cAACiB,GAAAA,EAAS,CACR32C,KAAMnqD,KAAKF,UAAUuyK,EAAM,KAAM,GACjCtxE,SAAS,aACTq0Q,WAAW,EACXpmS,UAAU,aAMpBjG,EAAKxpH,KAAK,CACRqsD,MACEi0F,EAAAA,cAAA,WACG,IACDA,EAAAA,cAACw1Q,IAAe,CAACziZ,UAAU,qBAAqB,gBAGpDitB,IAAK,IACLhxB,SACEgxI,EAAAA,cAAA,OAAKjtI,UAAU,0BACbitI,EAAAA,cAACiB,GAAAA,EAAS,CACR32C,KAAMA,EACN42C,SAAS,SACTq0Q,WAAW,EACXpmS,UAAU,cAMH,IAAXv2D,GAAoBrM,GACtB28D,EAAKxpH,KAAK,CACRqsD,MACEi0F,EAAAA,cAAA,OAAKjtI,UAAU,IACZ,IACDitI,EAAAA,cAACs1Q,IAAAA,EAAuB,CAACviZ,UAAU,qCAAsC,IAAI,SAIjFitB,IAAK,IACLhxB,SACEgxI,EAAAA,cAAA,OAAKjtI,UAAU,0BACbitI,EAAAA,cAAA,OAAKjtI,UAAU,mCAAkC,mBACjDitI,EAAAA,cAACiB,GAAAA,EAAS,CACR32C,KAAM/9C,EAAMmuD,QACZwmC,SAAS,aACTq0Q,WAAW,IAEbv1Q,EAAAA,cAAA,OAAKjtI,UAAU,kCAAiC,eAChDitI,EAAAA,cAACiB,GAAAA,EAAS,CACR32C,KAAM/9C,EAAMkpW,UACZv0Q,SAAS,aACTq0Q,WAAW,OAQnBv1Q,EAAAA,cAAA,OAAKjtI,UAAU,6CACbitI,EAAAA,cAACutD,GAAI,CAACC,iBAAiB,IAAI7xI,SAAU,WAAO,EAAGrW,MAAO4jE,IAG5D,EC0CA,IA7HuB,SAAHl4D,GAMb,IALL0kW,EAAO1kW,EAAP0kW,QACAn2Q,EAASvuF,EAATuuF,UAKA5zE,EAA8Bq0E,EAAAA,UAAwB,GAA/CpuE,EAAOjG,EAAA,GAAEiR,EAAUjR,EAAA,GAC1BC,EAA0Bo0E,EAAAA,SAA+B,MAA3CqB,GAAFz1E,EAAA,GAAUA,EAAA,IACtBE,EAAwCk0E,EAAAA,SAAsB,IAAvD21Q,EAAY7pV,EAAA,GAAE8pV,EAAe9pV,EAAA,GAG9B+pV,EAAqB71Q,EAAAA,OAA6B,MAExDA,EAAAA,WAAgB,WACd41Q,EAAgB,GAClB,GAAG,CAACF,IAEJ,IA4CMI,EAAmBH,aAAY,EAAZA,EAAcxlY,KAAI,SAAC8pB,EAAK55C,GAC/C,IAAM01Z,EAAkC,kBAAhB97W,EAAI+7W,QAC5B,OACEh2Q,EAAAA,cAAA,OAAKjtI,UAAU,OAAOitB,IAAK,kBAAoB3/B,GAC7C2/I,EAAAA,cAAA,OAAKjtI,UAAU,yBAAwB,IAAEknC,EAAI+7W,SAC7Ch2Q,EAAAA,cAAA,OAAKjtI,UAAU,cACbitI,EAAAA,cAAA,OAAKjtI,WAAcgjZ,EAAkB,GAAK,UAAQ,KAC/C97W,EAAIg8W,cAGLF,GACA/1Q,EAAAA,cAAA,OAAKjtI,UAAU,SACbitI,EAAAA,cAACiB,GAAAA,EAAS,CACR32C,KAAI,GAAKrwD,EAAIqwD,KACb42C,SAAS,SAETq0Q,WAAW,MAOzB,IACA,OACEv1Q,EAAAA,cAAA,OAAKjtI,UAAU,gBACbitI,EAAAA,cAAA,OACEhkF,QAAS,kBAvEU,WACvBqlF,EAAS,MACTzkE,GAAW,GACXg5U,EAAgB,IAChBnzZ,YAAW,YACTyzZ,EAAAA,EAAAA,IAAgBL,EAClB,GAAG,KAEH,IAAMt0Q,EAAU,CACdz2I,OAAQ,OACRquD,QAAS,CACP,eAAgB,oBAElBrN,KAAM3L,KAAKF,UAAU,CACnBqqD,KAAMorT,EAAQprT,KACdsyS,QAASr9P,EAAUq9P,QACnBn7P,eAAgBlC,EAAUkC,mBAyB9BC,EAAAA,EAAAA,IAAaC,yBAA+BJ,GApB1B,SAAC18H,GACbA,GAAQA,EAAK+zC,QAEfurE,QAAQtrF,IAAI,mBAAoBh0B,GAChC+wY,EAAgB/wY,EAAK8wY,cACrBj7S,GAAQ5H,QAAQjuF,EAAK61F,SACrBj4G,YAAW,YACTyzZ,EAAAA,EAAAA,IAAgBL,EAClB,GAAG,OAEHn7S,GAAQnuD,MAAM1nC,EAAK61F,SACnB2mC,EAASx8H,IAEX+3D,GAAW,EACb,IACgB,SAACj2C,GACf+zE,GAAQnuD,MAAM5lB,EAAI+zE,SAClB99B,GAAW,GACXykE,EAAS16G,EACX,GAEF,CA6BqBwvX,EAAkB,EACjC32V,KAAM,SACNzsD,UAAS,0FACP6+D,EAAU,iCAAmC,IAAE,MAG/CA,GACAouE,EAAAA,cAACo2Q,GAAAA,EAA8B,CAACrjZ,UAAU,+BAE3C6+D,GAAWouE,EAAAA,cAACq2Q,GAAAA,GAAO,CAACtjZ,UAAU,4BAA6B,uBAW7D6+D,GACCouE,EAAAA,cAAA,OAAKjtI,UAAU,QACbitI,EAAAA,cAACq2Q,GAAAA,GAAO,CACNtjZ,UAAU,cACV0kQ,SAAU,4BAEZz3H,EAAAA,cAAChqB,GAAQ,CAACN,QAAM,EAAC3iH,UAAU,OAAOqjH,UAAW,CAAEP,KAAM,OAIzDmqB,EAAAA,cAAA,OAAKzuF,IAAKskW,EAAoB9iZ,UAAU,QACrC+iZ,GAIT,eCnII,IAAY,CAAC,QAAS,WAqB1B,ICnBWQ,IAYA,IAsBAC,IDdX,IADiB,cAnBjB,SAAkBvlW,EAAMC,GACtB,IAAIC,EAAQF,EAAKE,MACfC,EAAUH,EAAKG,QACf36C,GAAQ,OAAyBw6C,EAAM,KACzC,OAAoB,gBAAoB,MAAOr6C,OAAO89B,OAAO,CAC3D2c,MAAO,6BACPC,QAAS,YACTtW,KAAM,eACN,cAAe,OACfwW,IAAKN,EACL,kBAAmBE,GAClB36C,GAAQ06C,EAAqB,gBAAoB,QAAS,CAC3Dr+C,GAAIs+C,GACHD,GAAS,KAAmB,gBAAoB,OAAQ,CACzDs0F,SAAU,UACVtgI,EAAG,kSACHsxY,SAAU,YAEd,+BCjBA,SAAWF,GAETA,EAAY,KAAI,OAEhBA,EAAW,IAAI,MAEfA,EAAU,GAAI,IACf,CAPD,CAOGA,MAAUA,IAAQ,CAAC,IAKtB,SAAWG,GACTA,EAAe,IAAI,MACnBA,EAAoB,SAAI,WACxBA,EAAqB,UAAI,YACzBA,EAAiB,MAAI,QACrBA,EAAqB,UAAI,YACzBA,EAAwB,aAAI,eAC5BA,EAAgB,KAAI,OACpBA,EAAoB,SAAI,WACxBA,EAAuB,YAAI,cAC3BA,EAAkB,OAAI,SACtBA,EAAuB,YAAI,cAC3BA,EAAwB,aAAI,eAC5BA,EAAkB,OAAI,SACtBA,EAAkB,OAAI,SAEtBA,EAAgB,KAAI,MACrB,CAjBD,CAiBG,MAAc,IAAY,CAAC,IAK9B,SAAWF,GAETA,EAAqB,KAAI,OAEzBA,EAAqB,KAAI,OAEzBA,EAAuB,OAAI,SAE3BA,EAAwB,QAAI,UAE5BA,EAA2B,WAAI,aAE/BA,EAAuB,OAAI,SAE3BA,EAA0B,UAAI,YAE9BA,EAAsB,MAAI,OAC3B,CAjBD,CAiBGA,MAAmBA,IAAiB,CAAC,IAIjC,IASIG,IAiBAC,IAUAC,IAuBAC,IA3DAC,IACH,EADGA,IAEJ,EAFIA,IAGL,GAON,SAAWJ,GACTA,EAAgC,cAAI,eACpCA,EAA+B,aAAI,cACnCA,EAA+B,aAAI,cACnCA,EAA8B,YAAI,aAClCA,EAAqC,mBAAI,mBACzCA,EAAoC,kBAAI,kBACxCA,EAA+B,aAAI,cACnCA,EAA8B,YAAI,aAClCA,EAAiC,eAAI,gBACrCA,EAAqC,mBAAI,mBACzCA,EAAoC,kBAAI,iBACzC,CAZD,CAYGA,MAAqBA,IAAmB,CAAC,IAK5C,SAAWC,GACTA,EAA0C,oBAAI,gBAC9CA,EAAyC,mBAAI,eAC7CA,EAA0C,oBAAI,oBAC9CA,EAAyC,mBAAI,kBAC9C,CALD,CAKGA,MAAyBA,IAAuB,CAAC,IAKpD,SAAWC,GAETA,EAAyB,YAAI,kBAC7BA,EAAwB,WAAI,iBAC5BA,EAAwB,WAAI,iBAC5BA,EAAsB,SAAI,eAC1BA,EAAyB,YAAI,kBAE7BA,EAAyB,YAAI,kBAC7BA,EAAwB,WAAI,iBAC5BA,EAAuB,UAAI,gBAC3BA,EAA0B,aAAI,mBAE9BA,EAAmB,MAAI,aACvBA,EAAsB,SAAI,gBAC1BA,EAAyB,YAAI,mBAC7BA,EAAmB,MAAI,aACvBA,EAAmB,MAAI,YACxB,CAlBD,CAkBGA,MAAgBA,IAAc,CAAC,IAKlC,SAAWC,GACTA,EAAsB,OAAI,SAC1BA,EAAwB,SAAI,WAC5BA,EAAwB,SAAI,WAC5BA,EAAuB,QAAI,SAC5B,CALD,CAKGA,MAAkBA,IAAgB,CAAC,IAE/B,ICzHHE,IACAC,IACAC,IACAC,IDsHOC,IAAc,CAAC,QAAS,QAAS,QAEjCC,IAAe,UEhItBC,IAAU,CAAC,EAkBR,SAASC,IAAel2Z,EAAMm2Z,GACnCF,IAAQj2Z,GAAQm2Z,CAClB,CDGe,SAAS1qZ,IAAUg0B,GAC3Bk2X,MAdLA,IAAQjtZ,SAAS+Z,cAAc,SAC/BmzY,IAAWltZ,SAAS+Z,cAAc,MAClCozY,IAAe,qBACfC,IAAa,CACXrhK,GAAI/rP,SAAS+Z,cAAc,SAC3B2zY,MAAOT,IACPU,MAAOV,IACPW,MAAOX,IACPY,GAAIX,IACJ7iK,GAAI6iK,IACJ,IAAKltZ,SAAS+Z,cAAc,SAO9B,IAAIziB,EAAO61Z,IAAaxyZ,KAAKo8B,IAAQ5c,OAAOi0R,GACvC92S,GAAUA,KAAQ81Z,MACrB91Z,EAAO,KAET,IAAI+G,EAAY+uZ,IAAW91Z,GAC3By/B,EAAqB,iBAARA,EAAmBA,EAAI9b,QAAQ,iBAAkB,IAAM8b,EACpE14B,EAAUu4Y,UAAY,GAAK7/W,EAC3B,IAAI25E,EAAMryG,EAAU42L,WAAW,GAI/B,OAHIvkF,GAAOryG,EAAUumE,SAAS8rC,IAC5BryG,EAAUqG,YAAYgsG,GAEjBA,CACT,CEvCe,SAASo9S,IAAUp9S,EAAKq9S,GACrC,GAAIr9S,EACF,IAAK,IAAIx6E,KAAO63X,EACVA,EAAInhZ,eAAespB,KACrBw6E,EAAIvvG,MAAM+0B,GAAO63X,EAAI73X,IAI3B,OAAOw6E,CACT,CCSA,SAAS,IAASppG,GAChB,MAAoB,iBAANA,IAAmBiQ,MAAMjQ,EACzC,CAUO,SAAS0mZ,IAAalxU,EAAKmxU,EAAS7qZ,EAAOC,GAChD,IAAI0f,EAAI3f,EACJsX,EAAIrX,EACR,GAAI4qZ,EAAS,CACX,IAAIt0X,EA5BR,SAAwBmjD,GACtB,IAAI37E,EAAQo/C,iBAAiBu8B,GAC7B,MAAO,CACL15E,OAAQ05E,EAAI9B,aAAezxC,SAASpoC,EAAMiC,MAAO,KAAOmmC,SAASpoC,EAAMygL,YAAa,IAAMr4I,SAASpoC,EAAM0gL,aAAc,IACvHx+K,QAASy5E,EAAIjB,cAAgBtyC,SAASpoC,EAAMkC,OAAQ,KAAOkmC,SAASpoC,EAAMo4K,WAAY,IAAMhwI,SAASpoC,EAAM6sI,cAAe,IAE9H,CAsBekgR,CAAepxU,GAC1B/5D,EAAI4W,EAAKv2B,MAAQu2B,EAAKv2B,MAAQ2f,EAC9BrI,EAAIif,EAAKt2B,OAASs2B,EAAKt2B,OAASqX,CAClC,CACA,MAAO,CACLtX,MAAOkM,KAAKE,IAAI,IAASuT,GAAKA,EJ2FL,KI1FzB1f,OAAQiM,KAAKE,IAAI,IAASkL,GAAKA,EJ4FL,KI1F9B,kBCrCI5jB,IAAoB,SAAUC,GAEhC,SAASD,EAAKE,GACZ,IAAIlB,EAAQiB,EAAOE,KAAK5B,OAASA,KAEjCS,EAAMoB,WAAY,EAClB,IAAIV,EAAKQ,EAAI4S,QACXA,OAAiB,IAAPpT,GAAuBA,EAEnC,OADAV,EAAM8T,QAAUA,EACT9T,CACT,CAqCA,OA9CA,UAAUgB,EAAMC,GAahBD,EAAKvB,UAAUoV,KAAO,WACNtV,KAAKuU,SAEjBvU,KAAK84Z,eAAc,EAEvB,EAIAr3Z,EAAKvB,UAAUqV,KAAO,WACNvV,KAAKuU,SAEjBvU,KAAK84Z,eAAc,EAEvB,EAIAr3Z,EAAKvB,UAAUkC,QAAU,WACvBpC,KAAKsB,MACLtB,KAAK6B,WAAY,CACnB,EAMAJ,EAAKvB,UAAU44Z,cAAgB,SAAUvkZ,GACnCvU,KAAKuU,UAAYA,IAGrBvU,KAAKuU,QAAUA,EACjB,EACO9S,CACT,CAhDwB,CAgDtB,OACF,qBCpDIs3Z,IAAsB,WACxB,SAASA,EAAOp3Z,GACd,IAAIq3Z,EAASr3Z,EAAIq3Z,OACfC,EAASt3Z,EAAIs3Z,OACb93Z,EAAKQ,EAAIu3Z,YACTA,OAAqB,IAAP/3Z,EAAgB,CAAC,IAAK,KAAOA,EAC3Cg4Z,EAAex3Z,EAAIw3Z,aACrBn5Z,KAAKk5Z,YAAcA,EACnBl5Z,KAAKg5Z,OAASA,EACdh5Z,KAAKi5Z,OAASA,EACdj5Z,KAAKm5Z,aAAeA,CACtB,CA6GA,OAxGAJ,EAAO74Z,UAAUk5Z,SAAW,SAAU1nH,GACpC,OAAO1xS,KAAKk5Z,YAAYhmZ,QAAQw+R,IAAQ,CAC1C,EACAqnH,EAAO74Z,UAAUm5Z,eAAiB,SAAU3nH,EAAK4nH,EAAU94X,GACzD,IAGI0oH,EACA3zH,EAJA0jY,EAASj5Z,KAAKi5Z,OACdjxZ,EAAQw4B,EAAOttB,QAAQomZ,GACvBz4Z,EAAS2/B,EAAO3/B,OA0BpB,OAtBKo4Z,GAAUj5Z,KAAKo5Z,SAAS,MAC3BlwQ,EAAM,EACN3zH,EAAO,GACE10B,EAAS,GAElBqoJ,EAAM1oH,EAAiB,IAAVx4B,EAAc,EAAIA,EAAQ,GAEvCutB,EAAOiL,EAAOx4B,IAAUnH,EAAS,EAAIA,EAAS,EAAImH,EAAQ,GAC5C,IAAVA,EACFkhJ,IAAQowQ,EAAWpwQ,GAAO,EAE1BA,IAAQ3zH,EAAO+jY,GAAY,EAEzBtxZ,IAAUnH,EAAS,EACrB00B,IAASA,EAAO+jY,GAAY,EAE5B/jY,IAAS+jY,EAAW94X,EAAO3/B,EAAS,IAAM,IAG5CqoJ,EAAmB,IAAbowQ,EAAiB,EAAIA,EAAW,GACtC/jY,EAAoB,IAAb+jY,EAAiB,EAAIA,EAAW,IAElC,CACLpwQ,IAAKA,EACL3zH,KAAMA,EAEV,EACAwjY,EAAO74Z,UAAUq5Z,WAAa,SAAUC,EAAkBn7V,GACxD,IAAI59D,EAAQT,KAERm5Z,EAAen5Z,KAAKy5Z,aAAap7V,GAErC,OAAOm7V,GAAkB,SAAUE,EAAW1xZ,GAG5C,OAAOmxZ,GAAc,SAAU34X,EAAQkxQ,GAErCjxS,EAAMk5Z,UAAUjoH,EAAKlxQ,EAAQk5X,EAAW1xZ,EAC1C,GACF,GACF,EAOA+wZ,EAAO74Z,UAAU05Z,UAAY,SAAUl0Y,EAAMgsR,GAQ3C,OANA,OAAOhsR,GAAM,SAAU8uC,QACD/9B,IAAhB+9B,EAAOk9O,KACTl9O,EAAOk9O,GC/EQ,EDiFnB,IAEO,OAAUhsR,EAAMgsR,EACzB,EAEAqnH,EAAO74Z,UAAUy5Z,UAAY,SAAUjoH,EAAKlxQ,EAAQ9a,EAAM1d,GAAQ,EAMlE+wZ,EAAO74Z,UAAUu5Z,aAAe,SAAUp7V,GACxC,IACE26V,EADOh5Z,KACKg5Z,OACZC,EAFOj5Z,KAEKi5Z,OACVE,EAAe,OAAS,CAAC,EAAGn5Z,KAAKm5Z,cAEjC5sL,EAAO,GAiBX,GAhBIysL,GAAUh5Z,KAAKo5Z,SAAS,MAC1B7sL,EAAKhsO,KAAKy4Z,GAERC,GAAUj5Z,KAAKo5Z,SAAS,MAC1B7sL,EAAKhsO,KAAK04Z,GAEZ1sL,EAAKnkO,SAAQ,SAAUspS,GACjBynH,GAAgBA,EAAaznH,KAIjCynH,EAAaznH,GAAO,MAAcrzO,EAAYqzO,GAAKn/R,MAAK,SAAU8hB,EAAIC,GACpE,OAAOD,EAAKC,CACd,IACF,KAEK2kY,GAAUj5Z,KAAKo5Z,SAAS,KAAM,CAEjCD,EAAgB,EAAI,CCrHH,EDqHe,EAClC,CAEA,OAAOA,CACT,EACOJ,CACT,CAzH0B,GA0H1B,QE3HIc,IAAa,CAAC,EAKdC,IAAY,SAAmBnxZ,GACjC,OAAOkxZ,IAAWlxZ,EAAKiW,cACzB,EAMIm7Y,IAAiB,SAAwBpxZ,EAAM6tD,GAEjD,GAAIsjW,IAAUnxZ,GACZ,MAAM,IAAIs/B,MAAM,gBAAkBt/B,EAAO,cAG3CkxZ,IAAWlxZ,EAAKiW,eAAiB43C,CACnC,ECLI7K,IAAiB,SAAuB5lC,EAAG9C,GAQ7C,OAPA0oC,IAAiBn0C,OAAOo0C,gBAAkB,CACxCC,UAAW,cACAprB,OAAS,SAAU1a,EAAG9C,GACjC8C,EAAE8lC,UAAY5oC,CAChB,GAAK,SAAU8C,EAAG9C,GAChB,IAAK,IAAI7E,KAAK6E,EAAOA,EAAE1L,eAAe6G,KAAI2H,EAAE3H,GAAK6E,EAAE7E,GACrD,EACOutC,IAAe5lC,EAAG9C,EAC3B,EACO,SAAS,IAAU8C,EAAG9C,GAE3B,SAAS8oC,IACP/rD,KAAK8E,YAAcihB,CACrB,CAHA4lC,IAAe5lC,EAAG9C,GAIlB8C,EAAE7lB,UAAkB,OAAN+iB,EAAazL,OAAO0wB,OAAOjlB,IAAM8oC,EAAG7rD,UAAY+iB,EAAE/iB,UAAW,IAAI6rD,EACjF,CACA,IAAIC,IAAU,WAQZ,OAPAA,IAAUx0C,OAAO89B,QAAU,SAAkBvxC,GAC3C,IAAK,IAAI+Z,EAAG5c,EAAI,EAAG0tB,EAAIhuB,UAAUC,OAAQK,EAAI0tB,EAAG1tB,IAE9C,IAAK,IAAIkd,KADTN,EAAIld,UAAUM,GACOsW,OAAOtX,UAAUqX,eAAe3V,KAAKkc,EAAGM,KAAIra,EAAEqa,GAAKN,EAAEM,IAE5E,OAAOra,CACT,EACOioD,IAAQ3qD,MAAMrB,KAAMY,UAC7B,ECtCA,IAAIo5Z,IAAqB,SAAUt4Z,GAEjC,SAASs4Z,EAAMr4Z,GACb,IAAIlB,EAAQiB,EAAOE,KAAK5B,KAAM2B,IAAQ3B,KACtCS,EAAMw5Z,SAAW,CAAC,EAClBx5Z,EAAMy5Z,gBAAkB,GACxBz5Z,EAAM05Z,UAAY,GAClB,IAAIh5Z,EAAKQ,EAAIy4Z,YACXA,OAAqB,IAAPj5Z,EHVM,GGUyBA,EAC7C+V,EAAKvV,EAAI04Z,WACTA,OAAoB,IAAPnjZ,EHXM,GGWwBA,EAC3CojZ,EAAU34Z,EAAI24Z,QACdC,EAAkB54Z,EAAI44Z,gBACtBC,EAAe74Z,EAAI64Z,aACnBC,EAAmB94Z,EAAI84Z,iBACvBC,EAAW/4Z,EAAI+4Z,SACf3jB,EAAcp1Y,EAAIo1Y,YAClB4jB,EAAiBh5Z,EAAIg5Z,eACrBC,EAAiBj5Z,EAAIi5Z,eACrBC,EAAmBl5Z,EAAIk5Z,iBACvBC,EAAen5Z,EAAIm5Z,aAarB,OAZAr6Z,EAAM25Z,YAAcA,EACpB35Z,EAAM45Z,WAAaA,EACnB55Z,EAAM65Z,QAAUA,EAChB75Z,EAAM85Z,gBAAkBA,EACxB95Z,EAAM+5Z,aAAeA,EACrB/5Z,EAAMs6Z,kBAAoBN,EAC1Bh6Z,EAAMi6Z,SAAWA,EACjBj6Z,EAAMs2Y,YAAcA,EACpBt2Y,EAAMk6Z,eAAiBA,EACvBl6Z,EAAMm6Z,eAAiBA,EACvBn6Z,EAAMo6Z,iBAAmBA,EACzBp6Z,EAAMq6Z,aAAeA,EACdr6Z,CACT,CA4KA,OA7MA,IAAUu5Z,EAAOt4Z,GAkCjBs4Z,EAAM95Z,UAAU2+C,QAAU,SAAUm8W,GAClC,IAAIxB,EAAmB,OAAQwB,GAE3Bb,EAAY,OAAUX,GACtBc,EAAUt6Z,KAAKs6Z,QAEfJ,EAAkBI,EAAU,OAAQH,EAAWG,GAAWd,EAO9D,OANAx5Z,KAAKi6Z,SAAW,CAAC,EACjBj6Z,KAAKk6Z,gBAAkBA,EACvBl6Z,KAAKm6Z,UAAYA,EACjBn6Z,KAAKu5Z,WAAWW,EAAiBC,GACjCn6Z,KAAKk6Z,gBAAkB,GACvBl6Z,KAAKm6Z,UAAY,GACVX,CACT,EACAQ,EAAM95Z,UAAUy5Z,UAAY,SAAUjoH,EAAKlxQ,EAAQ9a,EAAMu1Y,GACvD,IAAIx6Z,EAAQT,KACR86Z,EAAe96Z,KAAK86Z,aACpB9pY,EAAMhxB,KAAKk7Z,gBAAgBxpH,GAC3BkoH,EAAY55Z,KAAK45Z,UAAUl0Y,EAAMgsR,GA0BrC,OAzBA,OAAOkoH,GAAW,SAAUloZ,EAAOmvB,GACjC,IAAI8mB,EAGFA,EADoB,IAAlBnnB,EAAO3/B,OACD,CACNqoJ,IAAK1oH,EAAO,GAAK,EACjBjL,KAAMiL,EAAO,GAAK,GAIZ//B,EAAM44Z,eAAe3nH,EAAKrmR,WAAWwV,GAAML,GAErD,OAAO9uB,GAAO,SAAUqU,GACtB,IAAI5jB,EAAQ4jB,EAAE2rR,GACVypH,EAAWnqY,EAAI7uB,GACfi5Z,EAAWD,EAASjoZ,QAAQ+nZ,GAChC,GAAK,OAAQH,GAKX/0Y,EAAE2rR,GAAOjxS,EAAM46Z,eAAe1zW,EAAOyzW,EAAUD,EAASt6Z,YAL9B,CAC1B,IAAIqoJ,EAAMvhG,EAAMuhG,IACd3zH,EAAOoyB,EAAMpyB,KACfxP,EAAE2rR,GAAO,OAAaopH,GAAgBA,EAAa/0Y,EAAG4hC,IAAUuhG,EAAM3zH,GAAQ,EAAIulY,CACpF,CAGF,GACF,IACO,EACT,EACAd,EAAM95Z,UAAUm7Z,eAAiB,SAAU1zW,EAAOziB,EAAK1K,GACrD,IAQI2wB,EARAhqD,EAAKnB,KACPq6Z,EAAal5Z,EAAGk5Z,WAChBD,EAAcj5Z,EAAGi5Z,YACjBG,EAAkBp5Z,EAAGo5Z,gBACrBC,EAAer5Z,EAAGq5Z,aAChBtxQ,EAAMvhG,EAAMuhG,IACd3zH,EAAOoyB,EAAMpyB,KACX+lY,EAAa/lY,EAAO2zH,EAGxB,IAAK,OAAQqxQ,IAAoB,OAAQC,IAAiBD,GAAmB,EAG3EpvW,EAAW+9F,EADElpJ,KAAKu7Z,sBAAsB/gY,EAAK0K,QAExC,IAAK,OAAQs1X,IAAiB,OAAQD,IAAoBC,GAAgB,EAAG,CAGlFrvW,EAAW+9F,EADElpJ,KAAKw7Z,mBAAmBhhY,EAAK0K,EAE5C,MAAO,IAAK,OAAQq1X,KAAqB,OAAQC,IAAiBD,GAAmB,GAAKC,GAAgB,EAAG,CAG3GrvW,EAAW+9F,EADElpJ,KAAKy7Z,0BAA0BjhY,EAAK0K,EAEnD,KAAO,CAEL,IAAIn3B,EAAQutZ,EAAajB,EAAa7/X,EAClCgwE,EAAS4vT,EAAcrsZ,EAE3Bo9C,GAAY+9F,EAAM3zH,GAAQ,GADb,IAAS+lY,EAAa9gY,EAAMzsB,GAASysB,EAAM,GAAKgwE,KAAYtlE,EAAM,GAAKn3B,EAAQm3B,EAAMslE,GAAU,GAAQz8F,EAAQ,GAAQutZ,EAEtI,CACA,OAAOnwW,CACT,EACA6uW,EAAM95Z,UAAUq7Z,sBAAwB,SAAU/gY,EAAK0K,GACrD,IAAI/jC,EAAKnB,KACP+2Y,EAAc51Y,EAAG41Y,YACjBwjB,EAAkBp5Z,EAAGo5Z,gBACrBQ,EAAoB55Z,EAAG45Z,kBACvBL,EAAWv5Z,EAAGu5Z,SACdL,EAAal5Z,EAAGk5Z,WAChBM,EAAiBx5Z,EAAGw5Z,eACpBC,EAAiBz5Z,EAAGy5Z,eACpBC,EAAmB15Z,EAAG05Z,iBACpBa,EAA4BnB,EAAkBQ,EAC9CY,GAA0B,GAAKjB,EAAW,GAAKgB,GAA6BhB,EAAWL,GAAc7/X,EAAM,GAC3GohY,IAAc,EAAIF,GAA6BhB,EAAW,IAAMA,EAAWiB,GAA0BnhY,EAAM,IAAMA,EAGrH,GADAohY,EAAa,OAAQf,GAA4De,EAAxC,EAAIlB,EAAWlgY,EAAMqgY,GACzD,OAAQF,GAAiB,CAC5B,IAAIkB,EAAqBlB,EAAiBI,EAC1Ca,EAAY3hZ,KAAKC,IAAI0hZ,EAAWC,EAClC,CACA,IAAK,OAAQjB,GAAiB,CAC5B,IAAIkB,EAAqBlB,EAAiBG,EAC1Ca,EAAY3hZ,KAAKE,IAAIyhZ,EAAWE,EAClC,CAKA,QADe,GAAQ52X,IAHvB02X,EAAY7kB,EAAcA,EAAcgkB,EAAoBa,GAGlB12X,GAD1Cy2X,IAA2B,GAAKjB,EAAW,GAAKgB,GAA6BhB,EAAWlgY,EAAMohY,IAAcphY,EAAM,IACzC,GAAQkhY,GAA6BhB,EAAWgB,EAA4B,CAEvJ,EACA1B,EAAM95Z,UAAUs7Z,mBAAqB,SAAUhhY,EAAK0K,GAClD,IAAI/jC,EAAKnB,KACP+2Y,EAAc51Y,EAAG41Y,YACjByjB,EAAer5Z,EAAGq5Z,aAClBO,EAAoB55Z,EAAG45Z,kBACvBL,EAAWv5Z,EAAGu5Z,SACdN,EAAcj5Z,EAAGi5Z,YACjBO,EAAiBx5Z,EAAGw5Z,eACpBC,EAAiBz5Z,EAAGy5Z,eACpBC,EAAmB15Z,EAAG05Z,iBACpBc,EAAyBnB,EAAeO,EACxCW,EAA4B,EAAItB,GAAeM,EAAW,GAC1DkB,IAAc,EAAIF,GAA6BhB,EAAW,IAAMA,EAAWiB,GAA0BnhY,EAAM,IAAMA,EAGrH,GADAohY,EAAYf,EAAmB,EAAIH,EAAWlgY,EAAMqgY,EAAmBe,GAClE,OAAQjB,GAAiB,CAC5B,IAAIkB,EAAqBlB,EAAiBI,EAC1Ca,EAAY3hZ,KAAKC,IAAI0hZ,EAAWC,EAClC,CACA,IAAK,OAAQjB,GAAiB,CAC5B,IAAIkB,EAAqBlB,EAAiBG,EAC1Ca,EAAY3hZ,KAAKE,IAAIyhZ,EAAWE,EAClC,CAKA,QADe,GAAQ52X,IAHvB02X,EAAY7kB,EAAcA,EAAcgkB,EAAoBa,GAGlB12X,EAAMy2X,EAAyB,IADzED,GAA6B,GAAKE,EAAYphY,EAAMmhY,GAA0BnhY,EAAM,IAAMkgY,IAAaA,EAAW,KACJA,EAAWgB,EAA4B,CAEvJ,EACA1B,EAAM95Z,UAAUu7Z,0BAA4B,SAAUjhY,EAAK0K,GACzD,IAAI/jC,EAAKnB,KACPu6Z,EAAkBp5Z,EAAGo5Z,gBACrBC,EAAer5Z,EAAGq5Z,aAClBO,EAAoB55Z,EAAG45Z,kBACvBL,EAAWv5Z,EAAGu5Z,SACZgB,EAA4BnB,EAAkBQ,EAC9CY,EAAyBnB,EAAeO,EAG5C,QADe,GAAQ71X,MADL,EAAIw2X,GAA6BhB,EAAW,IAAMA,EAAWiB,GAA0BnhY,EAAM,IAAMA,GAC3E0K,EAAMy2X,EAAyB,GAAQD,GAA6BhB,EAAWgB,EAA4B,CAEvJ,EACA1B,EAAM95Z,UAAUg7Z,gBAAkB,SAAUxpH,GAC1C,IAAI8nH,EAAmBx5Z,KAAKk6Z,gBACxBD,EAAWj6Z,KAAKi6Z,SAChBjpY,EAAMipY,EAASvoH,GAiBnB,OAhBK1gR,IACHA,EAAM,CAAC,EACP,OAAOwoY,GAAkB,SAAU9zY,EAAM1d,GACvC,IAAIw4B,EAAS,MAAc9a,EAAMgsR,GAC5BlxQ,EAAO3/B,QACV2/B,EAAOjgC,KAAK,GAEd,OAAOigC,GAAQ,SAAUn7B,GAClB2rB,EAAI3rB,KACP2rB,EAAI3rB,GAAO,IAEb2rB,EAAI3rB,GAAK9E,KAAKyH,EAChB,GACF,IACAiyZ,EAASvoH,GAAO1gR,GAEXA,CACT,EACOgpY,CACT,CA/MyB,CA+MvB,KACF,QC7MA,IAAI+B,IAAsB,SAAUr6Z,GAElC,SAASq6Z,IACP,OAAkB,OAAXr6Z,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CA0CA,OA7CA,IAAU+7Z,EAAQr6Z,GAIlBq6Z,EAAO77Z,UAAU2+C,QAAU,SAAUm8W,GACnC,IAAIxB,EAAmB,OAAQwB,GAE3Bb,EAAY,OAAUX,GAG1B,OADAx5Z,KAAKu5Z,WAAWC,EAAkBW,GAC3BX,CACT,EAOAuC,EAAO77Z,UAAUy5Z,UAAY,SAAUjoH,EAAKlxQ,EAAQk5X,GAClD,IAAIj5Z,EAAQT,KAERg7Z,EAAiBh7Z,KAAK45Z,UAAUF,EAAWhoH,GAC/C,OAAO,OAAOspH,GAAgB,SAAUt1Y,EAAM4zY,GAC5C,OAAO74Z,EAAMu7Z,YAAYt2Y,EAAMgsR,EAAKrmR,WAAWiuY,GAAW94X,EAC5D,GACF,EAEAu7X,EAAO77Z,UAAU+7Z,gBAAkB,SAAUt0W,GAC3C,IAAIuhG,EAAMvhG,EAAMuhG,IACd3zH,EAAOoyB,EAAMpyB,KAEXi1E,EJlCS,KIkCCj1E,EAAO2zH,GACrB,OApCJ,SAAsBhvI,EAAKC,GACzB,OAAQA,EAAMD,GAAOD,KAAK+qC,SAAW9qC,CACvC,CAkCWgiZ,CAAahzQ,EAAM1+C,EAAQj1E,EAAOi1E,EAC3C,EAEAuxT,EAAO77Z,UAAU87Z,YAAc,SAAUtqZ,EAAOggS,EAAK4nH,EAAU94X,GAC7D,IAAI//B,EAAQT,KAER2nD,EAAQ3nD,KAAKq5Z,eAAe3nH,EAAK4nH,EAAU94X,GAK/C,OAJA,OAAO9uB,GAAO,SAAUgU,GACtBA,EAAKgsR,GAAOjxS,EAAMw7Z,gBAAgBt0W,EACpC,IAEOj2C,CACT,EACOqqZ,CACT,CA/C0B,CA+CxB,KACF,QCpDII,IAAQ,OACR,IAAqB,SAAUz6Z,GAEjC,SAASi7Q,EAAMh7Q,GACb,IAAIlB,EAAQiB,EAAOE,KAAK5B,KAAM2B,IAAQ3B,KAClCmB,EAAKQ,EAAIu3Z,YACXA,OAAqB,IAAP/3Z,EAAgB,CAAC,KAAOA,EACtC+V,EAAKvV,EAAIqM,OACTA,OAAgB,IAAPkJ,EAAgBq9B,IAAMr9B,EAC/BC,EAAKxV,EAAI2iC,KACTA,OAAc,IAAPntB,EAAgB,GAAKA,EAC5BmnB,EAAK38B,EAAIy6Z,aACTA,OAAsB,IAAP99X,GAAwBA,EAKzC,OAJA79B,EAAMy4Z,YAAcA,EACpBz4Z,EAAMuN,OAASA,EACfvN,EAAM6jC,KAAOA,EACb7jC,EAAM27Z,aAAeA,EACd37Z,CACT,CAgFA,OAhGA,IAAUk8Q,EAAOj7Q,GAqBjBi7Q,EAAMz8Q,UAAU2+C,QAAU,SAAUm8W,GAClC,IACE/B,EADOj5Z,KACKi5Z,OACZmD,EAFOp8Z,KAEWo8Z,aAGhBr2Y,EAAIkzY,EAASj5Z,KAAKq8Z,aAAarB,GAAkBh7Z,KAAKs8Z,mBAAmBtB,GAC7E,OAAOoB,EAAep8Z,KAAK4wB,QAAQ7K,GAAKA,CAC1C,EACA42P,EAAMz8Q,UAAU0wB,QAAU,SAAU4oY,GAClC,OAAOA,EAAiBxyY,MAAM,GAAG4J,SACnC,EACA+rP,EAAMz8Q,UAAUm8Z,aAAe,SAAUrB,GACvC,IAAI75Z,EAAKnB,KACPg5Z,EAAS73Z,EAAG63Z,OACZC,EAAS93Z,EAAG83Z,OAGVO,EAFar4Z,EAAGi7Z,aAEkBp8Z,KAAK4wB,QAAQoqY,GAAkBA,EAEjEuB,EAAW,IAAIJ,IACfK,EAAW,IAAIL,IACnB,OAAO3C,EAAiBxoY,KAAI,SAAU0oY,GACpC,OAAOA,EAAU1oY,KAAI,SAAUtL,GAC7B,IAAIvkB,EACA8J,EAAI,OAAMya,EAAMszY,EAAQ,GACxB9tZ,EAAI,OAAMwa,EAAM,CAACuzY,IACjBwD,EAAOxxZ,EAAE2X,WAGb,GADA1X,EAAI,OAAUA,GAAKA,EAAE,GAAKA,GACrB,OAAQA,GAAI,CACf,IAAI4T,EAAQ5T,GAAK,EAAIqxZ,EAAWC,EAC3B19Y,EAAMgjB,IAAI26X,IACb39Y,EAAM5c,IAAIu6Z,EAAM,GAElB,IAAIC,EAAS59Y,EAAM9c,IAAIy6Z,GACnBE,EAAYzxZ,EAAIwxZ,EAGpB,OADA59Y,EAAM5c,IAAIu6Z,EAAME,GACT,IAAS,IAAS,CAAC,EAAGj3Y,KAAQvkB,EAAK,CAAC,GAAM83Z,GAAU,CAACyD,EAAQC,GAAYx7Z,GAClF,CAEA,OAAOukB,CACT,GACF,GACF,EACAi3P,EAAMz8Q,UAAUo8Z,mBAAqB,SAAUtB,GAC7C,IAAIv6Z,EAAQT,KACRmB,EAAKnB,KACPg5Z,EAAS73Z,EAAG63Z,OACZhrZ,EAAS7M,EAAG6M,OACZouZ,EAAej7Z,EAAGi7Z,aAGhB5C,EAAmB4C,EAAep8Z,KAAK4wB,QAAQoqY,GAAkBA,EAEjEl8Y,EAAQ,IAAIq9Y,IAChB,OAAO3C,EAAiBxoY,KAAI,SAAU0oY,GACpC,OAAOA,EAAU1oY,KAAI,SAAUtL,GAC7B,IAAIvkB,EACAmjC,EAAO7jC,EAAM6jC,KACbo4X,EAASh3Y,EAAKszY,GAEd4D,EAAqB,EAAPt4X,EAAWt2B,EACxB8Q,EAAMgjB,IAAI46X,IACb59Y,EAAM5c,IAAIw6Z,EAAQE,EAAc,GAGlC,IAAIC,EAAa/9Y,EAAM9c,IAAI06Z,GAG3B,OADA59Y,EAAM5c,IAAIw6Z,EAAQG,EAAaD,GACxB,IAAS,IAAS,CAAC,EAAGl3Y,KAAQvkB,EAAK,CAAC,GAAY,EAAI07Z,EAAY17Z,GACzE,GACF,GACF,EACOw7Q,CACT,CAlGyB,CAkGvB,KACF,QCpGImgJ,IAAyB,SAAUp7Z,GAErC,SAASo7Z,IACP,OAAkB,OAAXp7Z,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAuDA,OA1DA,IAAU88Z,EAAWp7Z,GAIrBo7Z,EAAU58Z,UAAU2+C,QAAU,SAAUm8W,GACtC,IAAIb,EAAY,OAAUa,GAExBhC,EADOh5Z,KACKg5Z,OACZC,EAFOj5Z,KAEKi5Z,OAEVn6Y,EAAQ9e,KAAK+8Z,iBAAiB5C,GAE9BhgZ,EAAMF,KAAKE,IAAI9Y,MAAM4Y,KAAMzC,OAAOopB,KAAK9hB,GAAOkS,KAAI,SAAU6P,GAC9D,OAAO/hB,EAAM+hB,EACf,KACA,OAAO,OAAMm6X,GAAgB,SAAUtB,GACrC,OAAO,OAAMA,GAAW,SAAUh0Y,GAChC,IAAIvkB,EAAI+V,EACJ8lZ,EAASt3Y,EAAKuzY,GACdyD,EAASh3Y,EAAKszY,GAElB,GAAI,OAAUgE,GAAS,CACrB,IAAIC,GAAS9iZ,EAAM2E,EAAM49Y,IAAW,EACpC,OAAO,IAAS,IAAS,CAAC,EAAGh3Y,KAAQvkB,EAAK,CAAC,GAAM83Z,GAAU,OAAM+D,GAAQ,SAAU9xZ,GACjF,OAAO+xZ,EAAQ/xZ,CACjB,IAAI/J,GACN,CAEA,IAAIgiF,GAAUhpE,EAAM6iZ,GAAU,EAC9B,OAAO,IAAS,IAAS,CAAC,EAAGt3Y,KAAQxO,EAAK,CAAC,GAAM+hZ,GAAU,CAAC91U,EAAQ65U,EAAS75U,GAASjsE,GACxF,GACF,GACF,EAEA4lZ,EAAU58Z,UAAU68Z,iBAAmB,SAAU5C,GAC/C,IAAI15Z,EAAQT,KAEVg5Z,EADOh5Z,KACKg5Z,OACZC,EAFOj5Z,KAEKi5Z,OAEV+B,EAAiB,OAAUb,GAAW,SAAUz0Y,GAClD,OAAOA,EAAKszY,EACd,IAEA,OAAO,OAAYgC,GAAgB,SAAUtB,GAC3C,OAAOj5Z,EAAMy8Z,eAAexD,EAAWT,EACzC,GACF,EACA6D,EAAU58Z,UAAUg9Z,eAAiB,SAAU/C,EAAWzoH,GAExD,IAAIyrH,EAAY,OAAMhD,GAAW,SAAUz0Y,GACzC,OAAO,OAAMA,EAAMgsR,EAAK,GAC1B,IAEI0rH,EAAgB,OAAUD,GAE9B,OAAOljZ,KAAKE,IAAI9Y,MAAM4Y,KAAMmjZ,EAC9B,EACON,CACT,CA5D6B,CA4D3B,KACF,QCzDA/C,IAAe,QAAS,KACxBA,IAAe,SAAU,KACzBA,IAAe,QAAS,KACxBA,IAAe,YAAa,KCR5B,IAAIsD,IAAgB,SAAuBvkZ,EAAO3W,GAChD,OAAI,UAASA,GACJA,EAEF2W,EAAMwL,OAAOxL,EAAMA,MAAM3W,GAClC,EAKIm7Z,IAAyB,WAC3B,SAASA,EAAU37Z,GACjB3B,KAAKizN,MAAQ,GACbjzN,KAAKkqP,OAAS,GACdlqP,KAAKkb,QAAS,EACdlb,KAAKwgC,OAAS,GACdxgC,KAAKK,SAAW,WACd,MAAO,EACT,EAEAL,KAAKu9Z,UAAU57Z,EACjB,CA2IA,OAtIA27Z,EAAUp9Z,UAAUsxV,QAAU,WAG5B,IAFA,IAAI/wV,EAAQT,KACRshB,EAAS,GACJ3gB,EAAK,EAAGA,EAAKC,UAAUC,OAAQF,IACtC2gB,EAAO3gB,GAAMC,UAAUD,GAEzB,IAAI6/B,EAASlf,EAAO0P,KAAI,SAAU2sH,EAAOz4G,GACvC,OAAOzkC,EAAM+8Z,eAAe7/Q,EAAOl9I,EAAMypP,OAAOhlN,GAClD,IACA,OAAOllC,KAAKK,SAASgB,MAAMrB,KAAMwgC,EACnC,EAKA88X,EAAUp9Z,UAAUu9Z,eAAiB,SAAU1kW,GAE7C,IAAIirB,EAAQhkF,KAAKwgC,OAAO3/B,OAAS,EAC7B4mD,EAAOxtC,KAAKwX,MAAMuyD,EAAQjrB,GAC1B2kW,EAAc15U,EAAQjrB,EAAUtR,EAEhC/gC,EAAQ1mB,KAAKwgC,OAAOinB,GAGxB,OAAO/gC,IAFG+gC,IAASu8B,EAAQt9D,EAAQ1mB,KAAKwgC,OAAOinB,EAAO,IAEhC/gC,GAASg3Y,CACjC,EAIAJ,EAAUp9Z,UAAUy9Z,SAAW,WAK7B,IAJA,IAAIzzK,EAASlqP,KAAKkqP,OACdj3B,EAAQjzN,KAAKizN,MACbpyN,EAASoZ,KAAKC,IAAIgwO,EAAOrpP,OAAQoyN,EAAMpyN,QACvCyS,EAAM,GACDpS,EAAI,EAAGA,EAAIL,EAAQK,GAAK,EAC/BoS,EAAI/S,KAAK0yN,EAAM/xN,IAEjB,OAAOoS,CACT,EAIAgqZ,EAAUp9Z,UAAUq+H,UAAY,WAC9B,OAAOv+H,KAAKkqP,OAAOl5N,KAAI,SAAUlY,GAC/B,OAAOA,EAAM+mH,KACf,GACF,EAKAy9R,EAAUp9Z,UAAUohT,SAAW,SAAUr/S,GACvC,OAAOjC,KAAKkqP,OAAOlqP,KAAKizN,MAAM//M,QAAQjR,GACxC,EAKAq7Z,EAAUp9Z,UAAU09Z,gBAAkB,WAGpC,IAFA,IAAIn9Z,EAAQT,KACRshB,EAAS,GACJ3gB,EAAK,EAAGA,EAAKC,UAAUC,OAAQF,IACtC2gB,EAAO3gB,GAAMC,UAAUD,GAGzB,OAAsB,IAAlB2gB,EAAOzgB,OACFb,KAAKwgC,OAEPlf,EAAO0P,KAAI,SAAU2sH,EAAOz4G,GACjC,IAAIpsB,EAAQrY,EAAMypP,OAAOhlN,GACzB,MAAsB,aAAfpsB,EAAMnQ,KAAsBmQ,EAAM0nB,OAAO,GAAK//B,EAAMo9Z,mBAAmB/kZ,EAAO6kI,EACvF,GACF,EAEA2/Q,EAAUp9Z,UAAUq9Z,UAAY,SAAU57Z,GACxC,IAAIlB,EAAQT,KACRmB,EAAKQ,EAAIgH,KACXA,OAAc,IAAPxH,EAAgB,OAASA,EAChC+V,EAAKvV,EAAIsxN,MACTA,OAAe,IAAP/7M,EAAgB,GAAKA,EAC7BC,EAAKxV,EAAIuoP,OACTA,OAAgB,IAAP/yO,EAAgB,GAAKA,EAC9BmnB,EAAK38B,EAAI6+B,OACTA,OAAgB,IAAPlC,EAAgB,GAAKA,EAC9Bj+B,EAAWsB,EAAItB,SACjBL,KAAK2I,KAAOA,EACZ3I,KAAKkqP,OAASA,EACdlqP,KAAKwgC,OAASA,EACdxgC,KAAKizN,MAAQA,EAEbjzN,KAAKK,SAAW,WAEd,IADA,IAAIihB,EAAS,GACJ3gB,EAAK,EAAGA,EAAKC,UAAUC,OAAQF,IACtC2gB,EAAO3gB,GAAMC,UAAUD,GAKzB,GAAIN,EAAU,CAEZ,IAAIuhD,EAAMvhD,EAASgB,WAAM,EAAQigB,GACjC,KAAK,UAAMsgC,GACT,MAAO,CAACA,EAEZ,CAEA,OAAOnhD,EAAMm9Z,gBAAgBv8Z,MAAMZ,EAAO6gB,EAC5C,CACF,EAEAg8Y,EAAUp9Z,UAAU29Z,mBAAqB,SAAU/kZ,EAAO3W,GAExD,GAAI2W,EAAMglZ,aAAe99Z,KAAKkb,OAAQ,CAEpC,IAAIgqB,EAAMpsB,EAAMR,UAAUnW,GAC1B,OAAOnC,KAAKwgC,OAAO0E,EAAMllC,KAAKwgC,OAAO3/B,OACvC,CAEA,IAAIk4D,EAAUjgD,EAAMA,MAAM3W,GAC1B,OAAOnC,KAAKy9Z,eAAe1kW,EAC7B,EAOAukW,EAAUp9Z,UAAUs9Z,eAAiB,SAAU7/Q,EAAO7kI,GAGpD,OAAQA,EAAMilZ,SAEqBpgR,GAFV,UAAQA,GAASA,EAAM3sH,KAAI,SAAU5S,GAC5D,OAAOi/Y,IAAcvkZ,EAAOsF,EAC9B,IAAKi/Y,IAAcvkZ,EAAO6kI,EAC5B,EACO2/Q,CACT,CAvJ6B,GAwJ7B,QCnKIU,IAAU,wBACVC,IAAU,kCACVC,IAAU,gEACVC,IAAiB,8BAajB,IAAW,SAAkBz3Y,EAAOmI,EAAKkqC,EAAS/wD,GACpD,OAAO0e,EAAM1e,IAAU6mB,EAAI7mB,GAAS0e,EAAM1e,IAAU+wD,CACtD,EAEA,SAASqlW,IAAQ3nZ,GACf,MAAO,IAAM4nZ,IAAM5nZ,EAAI,IAAM4nZ,IAAM5nZ,EAAI,IAAM4nZ,IAAM5nZ,EAAI,GACzD,CAEA,IAoBI6nZ,IApBAC,IAAU,SAAiB78X,GAC7B,MAAO,CAACwS,SAASxS,EAAItG,OAAO,EAAG,GAAI,IAAK8Y,SAASxS,EAAItG,OAAO,EAAG,GAAI,IAAK8Y,SAASxS,EAAItG,OAAO,EAAG,GAAI,IACrG,EAEIijY,IAAQ,SAAel8Z,GACzB,IAAIq8Z,EAAWvkZ,KAAKwoB,MAAMtgC,GAAOygB,SAAS,IAC1C,OAA2B,IAApB47Y,EAAS39Z,OAAe,IAAM29Z,EAAWA,CAClD,EAmBIC,IAAQ,SAAe1qX,GAEzB,GAAiB,MAAbA,EAAM,IAA+B,IAAjBA,EAAMlzC,OAC5B,OAAOkzC,EAEJuqX,MAEHA,IAjDY,WACd,IAAIp9Z,EAAIyJ,SAAS+Z,cAAc,KAI/B,OAHAxjB,EAAE6wD,MAAQ,oBACV7wD,EAAE4K,MAAMu/C,QAAU,OAClB1gD,SAASgiD,KAAKh/C,YAAYzM,GACnBA,CACT,CA2CUw9Z,IAERJ,IAAIxyZ,MAAMioC,MAAQA,EAClB,IAAIzgC,EAAM3I,SAASsgD,YAAYC,iBAAiBozW,IAAK,IAAIK,iBAAiB,SAEtEC,EADUZ,IAAQ/pX,KAAK3gC,GACN,GAAGgW,MAAM,WAAW0H,KAAI,SAAUlT,GACrD,OAAOmE,OAAOnE,EAChB,IAEA,OADAxK,EAAM8qZ,IAAQQ,EAEhB,EA6CA,KACEL,QAASA,IACT55U,SAzCa,SAAkB3tC,GAC/B,IAAI6nX,GAAa,UAAS7nX,GAAUA,EAAO1tB,MAAM,KAAO0tB,EACpDt2B,GAAS,UAAIm+Y,GAAY,SAAU9qX,GACrC,OAAOwqX,KAAgC,IAAxBxqX,EAAM7gC,QAAQ,KAAcurZ,IAAM1qX,GAASA,EAC5D,IAEA,OAAO,SAAUglB,GACf,OA/CW,SAAkBr4C,EAAQq4C,GACvC,IAAI+lW,EAAe58Y,MAAMD,OAAO82C,KAAaA,EAAU,EAAI,EAAIA,EAAU,EAAI,EAAI92C,OAAO82C,GACpFirB,EAAQtjE,EAAO7f,OAAS,EACxB4mD,EAAOxtC,KAAKwX,MAAMuyD,EAAQ86U,GAC1B9vZ,EAAOg1E,EAAQ86U,EAAer3W,EAC9B/gC,EAAQhG,EAAO+mC,GACf54B,EAAM44B,IAASu8B,EAAQt9D,EAAQhG,EAAO+mC,EAAO,GACjD,OAAO22W,IAAQ,CAAC,IAAS13Y,EAAOmI,EAAK7f,EAAM,GAAI,IAAS0X,EAAOmI,EAAK7f,EAAM,GAAI,IAAS0X,EAAOmI,EAAK7f,EAAM,IAC3G,CAuCW+vZ,CAASr+Y,EAAQq4C,EAC1B,CACF,EAiCE0lW,OAAO,UAAQA,KACfO,cAjCkB,SAAuBC,GACzC,GA/EO,uBAAuB35Z,KA+EV25Z,GAAgB,CAClC,IAAIC,EACAl7U,OAAQ,EACZ,GAAyB,MAArBi7U,EAAc,GAAY,CAE5B,IACIv3Y,IADAjR,EAAMwnZ,IAAQhqX,KAAKgrX,IACN,GAAK,GACtBj7U,EAAQvtE,EAAI,GACZyoZ,EAAa,mBAAqBx3Y,EAAQ,OAC5C,MAAO,GAAyB,MAArBu3Y,EAAc,GAAY,CAGnC,IAAIxoZ,EADJyoZ,EAAa,mBAEbl7U,GADIvtE,EAAMynZ,IAAQjqX,KAAKgrX,IACX,EACd,CACA,IAAIE,EAAen7U,EAAM/oD,MAAMkjY,KAS/B,OARA,UAAKgB,GAAc,SAAU1nZ,EAAMzP,GACjC,IAAIo3Z,EAAU3nZ,EAAK6R,MAAM,KACzB41Y,GAAcE,EAAQ,GAAK,IAAmB,IAAbA,EAAQ,GAAW,IAChDp3Z,IAAUm3Z,EAAat+Z,OAAS,IAClCq+Z,GAAc,KAElB,IACAA,GAAc,GAEhB,CACA,OAAOD,CACT,GC5GIx1X,IAAqB,SAAU/nC,GAEjC,SAAS+nC,EAAM9nC,GACb,IAAIlB,EAAQiB,EAAOE,KAAK5B,KAAM2B,IAAQ3B,KAOtC,OANAS,EAAMkI,KAAO,QACblI,EAAMwyN,MAAQ,CAAC,UACX,UAASxyN,EAAM+/B,UACjB//B,EAAMya,QAAS,GAEjBza,EAAMkkF,SAAW,IAAUA,SAASlkF,EAAM+/B,QACnC//B,CACT,CAOA,OAjBA,UAAUgpC,EAAO/nC,GAcjB+nC,EAAMvpC,UAAUu9Z,eAAiB,SAAU1kW,GACzC,OAAO/4D,KAAK2kF,SAAS5rB,EACvB,EACOtvB,CACT,CAnByB,CAmBvB,KACF,QCtBI,IAAuB,SAAU/nC,GAEnC,SAAS29Z,EAAQ19Z,GACf,IAAIlB,EAAQiB,EAAOE,KAAK5B,KAAM2B,IAAQ3B,KAGtC,OAFAS,EAAMkI,KAAO,UACblI,EAAMwyN,MAAQ,CAAC,WACRxyN,CACT,CACA,OAPA,UAAU4+Z,EAAS39Z,GAOZ29Z,CACT,CAT2B,CASzB,KACF,QCTIC,IAAwB,SAAU59Z,GAEpC,SAAS49Z,EAAS39Z,GAChB,IAAIlB,EAAQiB,EAAOE,KAAK5B,KAAM2B,IAAQ3B,KAGtC,OAFAS,EAAMwyN,MAAQ,CAAC,IAAK,KACpBxyN,EAAMkI,KAAO,WACNlI,CACT,CAcA,OApBA,UAAU6+Z,EAAU59Z,GAOpB49Z,EAASp/Z,UAAUsxV,QAAU,SAAUvmV,EAAGC,GACxC,IAAI/J,EAAKnB,KAAKkqP,OACZv3J,EAASxxF,EAAG,GACZyxF,EAASzxF,EAAG,GACd,OAAI,UAAM8J,KAAM,UAAMC,GACb,GAEF,EAAC,UAAQD,GAAKA,EAAE+lB,KAAI,SAAUk+P,GACnC,OAAOv8L,EAAO75E,MAAMo2Q,EACtB,IAAKv8L,EAAO75E,MAAM7N,IAAI,UAAQC,GAAKA,EAAE8lB,KAAI,SAAUm+P,GACjD,OAAOv8L,EAAO95E,MAAMq2Q,EACtB,IAAKv8L,EAAO95E,MAAM5N,GACpB,EACOo0Z,CACT,CAtB4B,CAsB1B,KACF,QCxBI,IAAqB,SAAU59Z,GAEjC,SAAS69Z,EAAM59Z,GACb,IAAIlB,EAAQiB,EAAOE,KAAK5B,KAAM2B,IAAQ3B,KAGtC,OAFAS,EAAMkI,KAAO,QACblI,EAAMwyN,MAAQ,CAAC,SACRxyN,CACT,CAQA,OAdA,UAAU8+Z,EAAO79Z,GAUjB69Z,EAAMr/Z,UAAUu9Z,eAAiB,SAAU1kW,GACzC,IAAI7zB,EAAMjrB,KAAKwoB,OAAOziC,KAAKwgC,OAAO3/B,OAAS,GAAKk4D,GAChD,OAAO/4D,KAAKwgC,OAAO0E,EACrB,EACOq6X,CACT,CAhByB,CAgBvB,KACF,QCjBI,IAAoB,SAAU79Z,GAEhC,SAASm2T,EAAKl2T,GACZ,IAAIlB,EAAQiB,EAAOE,KAAK5B,KAAM2B,IAAQ3B,KAGtC,OAFAS,EAAMkI,KAAO,OACblI,EAAMwyN,MAAQ,CAAC,QACRxyN,CACT,CACA,OAPA,UAAUo3T,EAAMn2T,GAOTm2T,CACT,CATwB,CAStB,KACF,QCZI2nG,IAAc,CAAC,EAcZ,SAASC,IAAmB5+X,EAAKl1B,GACtC6zZ,IAAY3+X,GAAOl1B,CACrB,CCdA,IAAI,IAAqB,WACvB,SAASmvQ,EAAMn5Q,GAIb3B,KAAK2I,KAAO,OAIZ3I,KAAK89Z,YAAa,EAIlB99Z,KAAK+9Z,UAAW,EAIhB/9Z,KAAK0qP,cAAe,EAIpB1qP,KAAKwlP,YAAa,EAClBxlP,KAAKwgC,OAAS,GACdxgC,KAAK2nD,MAAQ,CAAC,EAAG,GACjB3nD,KAAKwhN,MAAQ,GACbxhN,KAAK0/Z,QAAU/9Z,EACf3B,KAAK2/Z,UACL3/Z,KAAKsK,MACP,CAsFA,OApFAwwQ,EAAM56Q,UAAUoY,UAAY,SAAUrG,GACpC,OAAOA,CACT,EAEA6oQ,EAAM56Q,UAAU62R,OAAS,SAAUp1R,IAEjC,UAAO3B,KAAK0/Z,QAAS/9Z,GACrB3B,KAAKsK,MACP,EACAwwQ,EAAM56Q,UAAUqW,MAAQ,WACtB,OAAOvW,KAAK8E,YAAY9E,KAAK0/Z,QAC/B,EAEA5kJ,EAAM56Q,UAAU0/Z,SAAW,WACzB,IAAIn/Z,EAAQT,KACZ,OAAO,UAAIA,KAAKwhN,OAAO,SAAU2yE,EAAMjvP,GACrC,OAAI,UAASivP,GAEJA,EAEF,CACLtzQ,KAAMpgB,EAAMo/Z,QAAQ1rI,EAAMjvP,GAC1B46X,UAAW3rI,EACXhyR,MAAO1B,EAAMqY,MAAMq7Q,GAEvB,GACF,EAEArZ,EAAM56Q,UAAU2/Z,QAAU,SAAU19Z,EAAO0+B,GACzC,IAAIkpT,EAAY/pV,KAAK+pV,UACjB7jU,EAAM6jU,EAAYA,EAAU5nV,EAAO0+B,GAAO1+B,EAC9C,OAAI,UAAM+jB,MAAS,UAAWA,EAAItD,UACzB,GAEFsD,EAAItD,UACb,EAEAk4P,EAAM56Q,UAAU6/Z,UAAY,SAAUl/X,GACpC,OAAO7gC,KAAK0/Z,QAAQ7+X,EACtB,EAEAi6O,EAAM56Q,UAAUoK,KAAO,YACrB,UAAOtK,KAAMA,KAAK0/Z,SAClB1/Z,KAAKgga,aACD,UAAQhga,KAAK+/Z,UAAU,YACzB//Z,KAAKwhN,MAAQxhN,KAAKiga,iBAEtB,EAEAnlJ,EAAM56Q,UAAUy/Z,QAAU,WAAa,EACvC7kJ,EAAM56Q,UAAU8/Z,UAAY,WAAa,EACzCllJ,EAAM56Q,UAAU+/Z,eAAiB,WAC/B,IAAIC,EAAalga,KAAKkga,WAClB1+M,EAAQ,GACZ,IAAI,UAAS0+M,GAAa,CACxB,IAAIv0Z,EDjFH,SAAuBk1B,GAC5B,OAAO2+X,IAAY3+X,EACrB,CC+EmBs/X,CAAcD,GAC3B,IAAKv0Z,EACH,MAAM,IAAIs8B,MAAM,6CAElBu5K,EAAQ71M,EAAO3L,KACjB,MAAW,UAAWkga,KACpB1+M,EAAQ0+M,EAAWlga,OAErB,OAAOwhN,CACT,EAEAs5D,EAAM56Q,UAAUihV,SAAW,WACzB,OAAOnhV,KAAK2nD,MAAM,EACpB,EAEAmzN,EAAM56Q,UAAUghV,SAAW,WACzB,OAAOlhV,KAAK2nD,MAAM,EACpB,EAEAmzN,EAAM56Q,UAAUkga,YAAc,SAAUj+Z,EAAO+X,EAAKC,GAClD,OAAI,UAAShY,IACHA,EAAQ+X,IAAQC,EAAMD,GAEzBq6B,GACT,EAEAumO,EAAM56Q,UAAUmga,UAAY,SAAUtnW,EAAS7+C,EAAKC,GAClD,OAAOD,EAAM6+C,GAAW5+C,EAAMD,EAChC,EACO4gQ,CACT,CAnHyB,GAoHzB,QC/GIwlJ,IAAwB,SAAU5+Z,GAEpC,SAAS4+Z,IACP,IAAI7/Z,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAGhE,OAFAS,EAAMkI,KAAO,MACblI,EAAMq9Z,YAAa,EACZr9Z,CACT,CAqEA,OA3EA,UAAU6/Z,EAAU5+Z,GAOpB4+Z,EAASpga,UAAUqga,cAAgB,WACjC,IAAKvga,KAAKwga,kBAAmB,CAC3Bxga,KAAKwga,kBAAoB,IAAIzhZ,IAE7B,IAAK,IAAI7d,EAAI,EAAGA,EAAIlB,KAAKwgC,OAAO3/B,OAAQK,IACtClB,KAAKwga,kBAAkBt+Z,IAAIlC,KAAKwgC,OAAOt/B,GAAIA,EAE/C,CACF,EACAo/Z,EAASpga,UAAUoY,UAAY,SAAUnW,GAEvCnC,KAAKuga,gBAEL,IAAIr7X,EAAMllC,KAAKwga,kBAAkBx+Z,IAAIG,GAIrC,YAHYs0B,IAARyO,IACFA,GAAM,UAAS/iC,GAASA,EAAQoyC,KAE3BrP,CACT,EACAo7X,EAASpga,UAAU4Y,MAAQ,SAAU3W,GACnC,IAAIm7C,EAAQt9C,KAAKsY,UAAUnW,GAKvB42D,EAAU/4D,KAAKoga,YAAY9iX,EAAOt9C,KAAKka,IAAKla,KAAKma,KACrD,OAAOna,KAAKqga,UAAUtnW,EAAS/4D,KAAKmhV,WAAYnhV,KAAKkhV,WACvD,EACAo/E,EAASpga,UAAUokB,OAAS,SAAUm8Y,GACpC,IAAIC,EAAc1ga,KAAKma,IAAMna,KAAKka,IAC9B6+C,EAAU/4D,KAAKoga,YAAYK,EAAazga,KAAKmhV,WAAYnhV,KAAKkhV,YAC9Dh8S,EAAMjrB,KAAKwoB,MAAMi+X,EAAc3nW,GAAW/4D,KAAKka,IACnD,OAAIgrB,EAAMllC,KAAKka,KAAOgrB,EAAMllC,KAAKma,IACxBo6B,IAEFv0C,KAAKwgC,OAAO0E,EACrB,EACAo7X,EAASpga,UAAU2/Z,QAAU,SAAU19Z,GAErC,IADA,IAAIzB,EAAO,GACFC,EAAK,EAAGA,EAAKC,UAAUC,OAAQF,IACtCD,EAAKC,EAAK,GAAKC,UAAUD,GAE3B,IAAIsR,EAAI9P,EAKR,OAHI,UAASA,KAAWnC,KAAKwgC,OAAOr7B,SAAShD,KAC3C8P,EAAIjS,KAAKwgC,OAAOvuB,IAEXvQ,EAAOxB,UAAU2/Z,QAAQx+Z,MAAMrB,MAAM,UAAe,CAACiS,GAAIvR,GAClE,EAEA4/Z,EAASpga,UAAUy/Z,QAAU,WAC3B3/Z,KAAKkga,WAAa,KACpB,EAEAI,EAASpga,UAAU8/Z,UAAY,WAK7B,IAHI,UAAMhga,KAAK+/Z,UAAU,UACvB//Z,KAAKka,IAAM,IAET,UAAMla,KAAK+/Z,UAAU,QAAS,CAChC,IAAIz7X,EAAOtkC,KAAKwgC,OAAO3/B,OACvBb,KAAKma,IAAMmqB,EAAO,EAAIA,EAAO,EAAIA,CACnC,CAEItkC,KAAKwga,oBACPxga,KAAKwga,uBAAoB/pY,EAE7B,EACO6pY,CACT,CA7E4B,CA6E1B,KACF,QCrFIl2V,IAAQ,6EACRu2V,IAAoB,UACpBC,IAAY,SAGZ5+R,IAAO,UACP22K,IAAU,gBACd,SAASkoH,IAAQpqZ,EAAKqqZ,GAEpB,IADA,IAAIC,EAAS,GACJ7/Z,EAAI,EAAGs5B,EAAM/jB,EAAI5V,OAAQK,EAAIs5B,EAAKt5B,IACzC6/Z,EAAOxga,KAAKkW,EAAIvV,GAAGk6B,OAAO,EAAG0lY,IAE/B,OAAOC,CACT,CACA,IAAIC,IAAc,SAAqBC,GACrC,OAAO,SAAUhvZ,EAAGsgZ,GAClB,IAAI2O,EAAe3O,EAAK0O,GAASjwY,KAAI,SAAU/e,GAC7C,OAAOA,EAAE2M,aACX,IACI5W,EAAQk5Z,EAAahuZ,QAAQjB,EAAE2M,eACnC,OAAI5W,GAAS,EACJA,EAEF,IACT,CACF,EACA,SAAS,IAAOm5Z,GAEd,IADA,IAAIzga,EAAO,GACFC,EAAK,EAAGA,EAAKC,UAAUC,OAAQF,IACtCD,EAAKC,EAAK,GAAKC,UAAUD,GAE3B,IAAK,IAAIQ,EAAK,EAAGiga,EAAS1ga,EAAMS,EAAKiga,EAAOvga,OAAQM,IAAM,CACxD,IAAI4yB,EAAMqtY,EAAOjga,GACjB,IAAK,IAAI0/B,KAAO9M,EAEdotY,EAAQtgY,GAAO9M,EAAI8M,EAEvB,CACA,OAAOsgY,CACT,CACA,IAAIE,IAAW,CAAC,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,YAC9EC,IAAa,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,YAC5HC,IAAkBV,IAAQS,IAAY,GAEtCE,IAAc,CAChBC,cAFkBZ,IAAQQ,IAAU,GAGpCA,SAAUA,IACVE,gBAAiBA,IACjBD,WAAYA,IACZI,KAAM,CAAC,KAAM,MACbC,KAAM,SAAcC,GAClB,OAAOA,EAAa,CAAC,KAAM,KAAM,KAAM,MAAMA,EAAa,GAAK,EAAI,GAAKA,EAAaA,EAAa,IAAO,GAAK,EAAI,GAAKA,EAAa,GACtI,GAEEC,IAAa,IAAO,CAAC,EAAGL,KACxBM,IAAoB,SAA2BvP,GACjD,OAAOsP,IAAa,IAAOA,IAAYtP,EACzC,EACIwP,IAAc,SAAqBrgY,GACrC,OAAOA,EAAI9b,QAAQ,oBAAqB,OAC1C,EACI,IAAM,SAAavgB,EAAKm1B,GAK1B,SAJY,IAARA,IACFA,EAAM,GAERn1B,EAAMsgB,OAAOtgB,GACNA,EAAIxE,OAAS25B,GAClBn1B,EAAM,IAAMA,EAEd,OAAOA,CACT,EACI28Z,IAAc,CAChB5jL,EAAG,SAAWyiE,GACZ,OAAOl7R,OAAOk7R,EAAQn8F,UACxB,EACAu9M,GAAI,SAAYphH,GACd,OAAO,IAAIA,EAAQn8F,UACrB,EACAw9M,GAAI,SAAYrhH,EAAS0xG,GACvB,OAAOA,EAAKoP,KAAK9gH,EAAQn8F,UAC3B,EACA3+L,EAAG,SAAW86R,GACZ,OAAOl7R,OAAOk7R,EAAQ57F,SACxB,EACA9L,GAAI,SAAY0nG,GACd,OAAO,IAAIA,EAAQ57F,SACrB,EACAk9M,IAAK,SAAathH,EAAS0xG,GACzB,OAAOA,EAAKkP,cAAc5gH,EAAQ57F,SACpC,EACAm9M,KAAM,SAAcvhH,EAAS0xG,GAC3B,OAAOA,EAAK8O,SAASxgH,EAAQ57F,SAC/B,EACA2E,EAAG,SAAWi3F,GACZ,OAAOl7R,OAAOk7R,EAAQ/+K,WAAa,EACrC,EACAugS,GAAI,SAAYxhH,GACd,OAAO,IAAIA,EAAQ/+K,WAAa,EAClC,EACAwgS,IAAK,SAAazhH,EAAS0xG,GACzB,OAAOA,EAAKgP,gBAAgB1gH,EAAQ/+K,WACtC,EACAygS,KAAM,SAAc1hH,EAAS0xG,GAC3B,OAAOA,EAAK+O,WAAWzgH,EAAQ/+K,WACjC,EACA0gS,GAAI,SAAY3hH,GACd,OAAO,IAAIl7R,OAAOk7R,EAAQx6F,eAAgB,GAAGjrL,OAAO,EACtD,EACAqnY,KAAM,SAAc5hH,GAClB,OAAO,IAAIA,EAAQx6F,cAAe,EACpC,EACAhhM,EAAG,SAAWw7R,GACZ,OAAOl7R,OAAOk7R,EAAQ95F,WAAa,IAAM,GAC3C,EACAy+E,GAAI,SAAYqb,GACd,OAAO,IAAIA,EAAQ95F,WAAa,IAAM,GACxC,EACA4C,EAAG,SAAWk3F,GACZ,OAAOl7R,OAAOk7R,EAAQ95F,WACxB,EACA27M,GAAI,SAAY7hH,GACd,OAAO,IAAIA,EAAQ95F,WACrB,EACAhxM,EAAG,SAAW8qS,GACZ,OAAOl7R,OAAOk7R,EAAQ/5F,aACxB,EACA67M,GAAI,SAAY9hH,GACd,OAAO,IAAIA,EAAQ/5F,aACrB,EACAhpM,EAAG,SAAW+iS,GACZ,OAAOl7R,OAAOk7R,EAAQh6F,aACxB,EACA2zD,GAAI,SAAYqmC,GACd,OAAO,IAAIA,EAAQh6F,aACrB,EACAgD,EAAG,SAAWg3F,GACZ,OAAOl7R,OAAO1L,KAAKwoB,MAAMo+Q,EAAQj6F,kBAAoB,KACvD,EACAg8M,GAAI,SAAY/hH,GACd,OAAO,IAAI5mS,KAAKwoB,MAAMo+Q,EAAQj6F,kBAAoB,IAAK,EACzD,EACAi8M,IAAK,SAAahiH,GAChB,OAAO,IAAIA,EAAQj6F,kBAAmB,EACxC,EACAzoM,EAAG,SAAW0iS,EAAS0xG,GACrB,OAAO1xG,EAAQ95F,WAAa,GAAKwrM,EAAKmP,KAAK,GAAKnP,EAAKmP,KAAK,EAC5D,EACA3xW,EAAG,SAAW8wP,EAAS0xG,GACrB,OAAO1xG,EAAQ95F,WAAa,GAAKwrM,EAAKmP,KAAK,GAAG96Y,cAAgB2rY,EAAKmP,KAAK,GAAG96Y,aAC7E,EACAk8Y,GAAI,SAAYjiH,GACd,IAAI19N,EAAS09N,EAAQl8F,oBACrB,OAAQxhI,EAAS,EAAI,IAAM,KAAO,IAAwC,IAApClpE,KAAKwX,MAAMxX,KAAKoG,IAAI8iE,GAAU,IAAYlpE,KAAKoG,IAAI8iE,GAAU,GAAI,EACzG,EACAivI,EAAG,SAAWyuF,GACZ,IAAI19N,EAAS09N,EAAQl8F,oBACrB,OAAQxhI,EAAS,EAAI,IAAM,KAAO,IAAIlpE,KAAKwX,MAAMxX,KAAKoG,IAAI8iE,GAAU,IAAK,GAAK,IAAM,IAAIlpE,KAAKoG,IAAI8iE,GAAU,GAAI,EACjH,GAEE4/U,IAAa,SAAoB9wZ,GACnC,OAAQA,EAAI,CACd,EACI+wZ,IAAc,CAAC,KAAMrC,KACrBsC,IAAY,CAAC,KAAMjhS,KACnB0/R,IAAO,CAAC,OAAQ1/R,IAAM,SAAU/vH,EAAGsgZ,GACrC,IAAIltZ,EAAM4M,EAAE2M,cACZ,OAAIvZ,IAAQktZ,EAAKmP,KAAK,GACb,EACEr8Z,IAAQktZ,EAAKmP,KAAK,GACpB,EAEF,IACT,GACIwB,IAAiB,CAAC,iBAAkB,4CAA6C,SAAUjxZ,GAC7F,IAAIomN,GAASpmN,EAAI,IAAIgpB,MAAM,iBAC3B,GAAIo9L,EAAO,CACT,IAAI1a,EAAsB,IAAX0a,EAAM,GAAUnkL,SAASmkL,EAAM,GAAI,IAClD,MAAoB,MAAbA,EAAM,GAAa1a,GAAWA,CACvC,CACA,OAAO,CACT,GACIwlN,IAAa,CACf/kL,EAAG,CAAC,MAAOuiL,KACXsB,GAAI,CAAC,MAAOrB,KACZsB,GAAI,CAAC,MAAOvB,IAAoB3+R,IAAM,SAAU/vH,GAC9C,OAAOiiC,SAASjiC,EAAG,GACrB,GACA23M,EAAG,CAAC,QAAS+2M,IAAmBoC,KAChCV,GAAI,CAAC,QAASzB,IAAWmC,KACzBP,GAAI,CAAC,OAAQ5B,IAAW,SAAU3uZ,GAChC,IACImxZ,IAAS,IADH,IAAIpga,MACQqjN,eAAejrL,OAAO,EAAG,GAC/C,QAAS,KAAOnpB,EAAI,GAAKmxZ,EAAO,EAAIA,GAAQnxZ,EAC9C,GACAoT,EAAG,CAAC,OAAQs7Y,SAAmBlqY,EAAW,QAC1C+uQ,GAAI,CAAC,OAAQo7H,SAAWnqY,EAAW,QACnCkzL,EAAG,CAAC,OAAQg3M,KACZ+B,GAAI,CAAC,OAAQ9B,KACb7qZ,EAAG,CAAC,SAAU4qZ,KACdgC,GAAI,CAAC,SAAU/B,KACf9iZ,EAAG,CAAC,SAAU6iZ,KACdnmJ,GAAI,CAAC,SAAUomJ,KACf6B,KAAM,CAAC,OAtMQ,UAuMf54M,EAAG,CAAC,cAAe,MAAO,SAAU53M,GAClC,OAAY,KAAJA,CACV,GACA2wZ,GAAI,CAAC,cAAehC,IAAW,SAAU3uZ,GACvC,OAAY,IAAJA,CACV,GACA4wZ,IAAK,CAAC,cA9MU,UA+MhB98Y,EAAGi9Y,IACH7pN,GAAI6pN,IACJb,IAAKc,IACLb,KAAMa,IACNX,IAAK,CAAC,QAAStgS,IAAMg/R,IAAY,oBACjCuB,KAAM,CAAC,QAASvgS,IAAMg/R,IAAY,eAClC7iZ,EAAGujZ,IACH3xW,EAAG2xW,IACHoB,GAAII,IACJ9wM,EAAG8wM,KAGDG,IAAc,CAChB17V,QAAS,2BACT27V,UAAW,SACXC,WAAY,cACZC,SAAU,eACVC,SAAU,qBACVC,QAAS,aACTC,YAAa,uBACbC,UAAW,QACXC,WAAY,WACZC,SAAU,gBAERC,IAAqB,SAA4BC,GACnD,OAAO,IAAOX,IAAaW,EAC7B,EAQI,IAAS,SAAgBnjH,EAASzrN,EAAMm9T,GAU1C,QATa,IAATn9T,IACFA,EAAOiuU,IAAqB,cAEjB,IAAT9Q,IACFA,EAAO,CAAC,GAEa,iBAAZ1xG,IACTA,EAAU,IAAI79S,KAAK69S,IAE2B,kBAA5CrpS,OAAOtX,UAAU0iB,SAAShhB,KAAKi/S,IAAgC3+R,MAAM2+R,EAAQt4S,WAC/E,MAAM,IAAI0/B,MAAM,+BAElBmtD,EAAOiuU,IAAYjuU,IAASA,EAC5B,IAAI6uU,EAAW,GAEf7uU,EAAOA,EAAKxvE,QAAQ+yR,KAAS,SAAUG,EAAIC,GAEzC,OADAkrH,EAAS1ja,KAAKw4S,GACP,KACT,IACA,IAAImrH,EAAuB,IAAO,IAAO,CAAC,EAAGrC,KAAatP,GAM1D,OAJAn9T,EAAOA,EAAKxvE,QAAQwkD,KAAO,SAAU0uO,GACnC,OAAOkpH,IAAYlpH,GAAI+H,EAASqjH,EAClC,KAEYt+Y,QAAQ,QAAQ,WAC1B,OAAOq+Y,EAASr5Y,OAClB,GACF,EASA,SAAS,IAAMu5Y,EAASnwX,EAAQu+W,GAI9B,QAHa,IAATA,IACFA,EAAO,CAAC,GAEY,iBAAXv+W,EACT,MAAM,IAAI/L,MAAM,iCAMlB,GAHA+L,EAASqvX,IAAYrvX,IAAWA,EAG5BmwX,EAAQtja,OAAS,IACnB,OAAO,KAGT,IACIuja,EAAW,CACbliW,MAFU,IAAIl/D,MAEFqjN,cACZpkJ,MAAO,EACP0oJ,IAAK,EACL4J,KAAM,EACND,OAAQ,EACRjN,OAAQ,EACRC,YAAa,EACb+8M,KAAM,KACNnB,eAAgB,MAEdoB,EAAY,GACZL,EAAW,GAEX5gN,EAAYrvK,EAAOpuB,QAAQ+yR,KAAS,SAAUG,EAAIC,GAEpD,OADAkrH,EAAS1ja,KAAKwha,IAAYhpH,IACnB,KACT,IACIwrH,EAAkB,CAAC,EACnBC,EAAiB,CAAC,EAEtBnhN,EAAY0+M,IAAY1+M,GAAWz9L,QAAQwkD,KAAO,SAAU0uO,GAC1D,IAAIzjP,EAAO8tW,IAAWrqH,GAClBj5K,EAAQxqE,EAAK,GACftV,EAAQsV,EAAK,GACbovW,EAAgBpvW,EAAK,GAEvB,GAAIkvW,EAAgB1kS,GAClB,MAAM,IAAI53F,MAAM,mBAAqB43F,EAAQ,8BAQ/C,OANA0kS,EAAgB1kS,IAAS,EAErB4kS,IACFD,EAAeC,IAAiB,GAElCH,EAAU/ja,KAAK80D,GACR,IAAMtV,EAAQ,GACvB,IAEAvoC,OAAOopB,KAAK4jY,GAAgBp8Z,SAAQ,SAAUy3H,GAC5C,IAAK0kS,EAAgB1kS,GACnB,MAAM,IAAI53F,MAAM,mBAAqB43F,EAAQ,mCAEjD,IAEAwjF,EAAYA,EAAUz9L,QAAQ,QAAQ,WACpC,OAAOq+Y,EAASr5Y,OAClB,IAEA,IAAIm7H,EAAUo+Q,EAAQlpY,MAAM,IAAInW,OAAOu+L,EAAW,MAClD,IAAKt9D,EACH,OAAO,KAIT,IAFA,IAkBI2+Q,EAlBAR,EAAuB,IAAO,IAAO,CAAC,EAAGrC,KAAatP,GAEjDrxZ,EAAI,EAAGA,EAAI6kJ,EAAQllJ,OAAQK,IAAK,CACvC,IAAIC,EAAKmja,EAAUpja,EAAI,GACrB2+H,EAAQ1+H,EAAG,GACXu7M,EAASv7M,EAAG,GACVgB,EAAQu6M,EAASA,EAAO32D,EAAQ7kJ,GAAIgja,IAAyBn+Q,EAAQ7kJ,GAEzE,GAAa,MAATiB,EACF,OAAO,KAETiia,EAASvkS,GAAS19H,CACpB,CAOA,GANsB,IAAlBiia,EAASC,MAA+B,MAAjBD,EAAS7vM,MAAmC,KAAlB6vM,EAAS7vM,KAC5D6vM,EAAS7vM,MAAQ6vM,EAAS7vM,KAAO,GACN,IAAlB6vM,EAASC,MAAiC,KAAlBD,EAAS7vM,OAC1C6vM,EAAS7vM,KAAO,GAGa,MAA3B6vM,EAASlB,eAAwB,CACnCwB,EAAS,IAAI1ha,KAAKoha,EAASliW,KAAMkiW,EAASniW,MAAOmiW,EAASz5M,IAAKy5M,EAAS7vM,KAAM6vM,EAAS9vM,OAAQ8vM,EAAS/8M,OAAQ+8M,EAAS98M,aAEzH,IADA,IAAI1pF,EAAiB,CAAC,CAAC,QAAS,YAAa,CAAC,MAAO,WAAY,CAAC,OAAQ,YAAa,CAAC,SAAU,cAAe,CAAC,SAAU,eAC5GpjG,GAAPt5B,EAAI,EAAS08H,EAAe/8H,QAAQK,EAAIs5B,EAAKt5B,IAGpD,GAAIqja,EAAgB3mS,EAAe18H,GAAG,KAAOkja,EAASxmS,EAAe18H,GAAG,MAAQwja,EAAO9mS,EAAe18H,GAAG,MACvG,OAAO,IAGb,MAGE,GAFAwja,EAAS,IAAI1ha,KAAKA,KAAKmnN,IAAIi6M,EAASliW,KAAMkiW,EAASniW,MAAOmiW,EAASz5M,IAAKy5M,EAAS7vM,KAAM6vM,EAAS9vM,OAAS8vM,EAASlB,eAAgBkB,EAAS/8M,OAAQ+8M,EAAS98M,cAExJ88M,EAASniW,MAAQ,IAAMmiW,EAASniW,MAAQ,GAAKmiW,EAASz5M,IAAM,IAAMy5M,EAASz5M,IAAM,GAAKy5M,EAAS7vM,KAAO,IAAM6vM,EAAS7vM,KAAO,GAAK6vM,EAAS9vM,OAAS,IAAM8vM,EAAS9vM,OAAS,GAAK8vM,EAAS/8M,OAAS,IAAM+8M,EAAS/8M,OAAS,EAC5N,OAAO,KAIX,OAAOq9M,CACT,CACA,IAOA,IAPY,CACV1wX,OAAQ,IACRyS,MAAO,IACP+6W,YAAaA,IACbM,kBAAmBA,IACnBiC,mBAAoBA,KCvYtB,IAAIY,IAAgB,SACb,SAAS,IAAW7ga,EAAMsxF,GAE/B,OADa,EAAOuvU,MAAkB,IAAMA,MAC9B7ga,EAAMsxF,EACtB,CAKO,SAASwvU,IAAYzia,GAc1B,OAbI,UAASA,KAETA,EADEA,EAAM+Q,QAAQ,KAAO,EACf,IAAIlQ,KAAKb,GAAOoG,UAKhB,IAAIvF,KAAKb,EAAMyjB,QAAQ,MAAO,MAAMrd,YAG5C,UAAOpG,KACTA,EAAQA,EAAMoG,WAETpG,CACT,CACA,IAAI0ia,IAAS,IACTC,IAAS,IACTC,IAAO,KACP,IAAM,GAAKA,IACX,IAAc,GAAN,IACR,IAAa,IAAN,IAEP,IAAY,CAAC,CAAC,WAAYF,KAAS,CAAC,WAAYA,KAAc,CAAC,WAAYA,KAAc,CAAC,QAASC,KAAS,CAAC,QAASA,KAAc,CAAC,QAASA,MAAc,CAAC,KAAMC,KAAO,CAAC,KAAa,EAAPA,KAAW,CAAC,KAAa,GAAPA,KAAY,CAAC,aAAc,KAAM,CAAC,aAAoB,EAAN,KAAU,CAAC,UAAiB,EAAN,KAAU,CAAC,UAAW,KAAQ,CAAC,UAAmB,EAAR,KAAY,CAAC,UAAmB,EAAR,KAAY,CAAC,OAAc,IAAN,MAC7V,SAASC,IAAgB9qZ,EAAKC,EAAKq2O,GACxC,IAAI9nP,GAAUyR,EAAMD,GAAOs2O,EACvBtrN,EClCS,SAAUuyK,GAMvB,OAAO,SAAUt5L,EAAGlT,EAAGg6Z,EAAKC,GAG1B,IAFA,IAAIhrN,GAAK,UAAM+qN,GAAO,EAAIA,EACtB9qN,GAAK,UAAM+qN,GAAO/mZ,EAAEtd,OAASqka,EAC1BhrN,EAAKC,GAAI,CACd,IAAI54J,EAAM24J,EAAKC,IAAO,EAClB1C,EAAOt5L,EAAEojC,IAAQt2C,EACnBkvM,EAAK54J,EAEL24J,EAAK34J,EAAM,CAEf,CACA,OAAO24J,CACT,CACF,CDeY,EAAS,SAAU90L,GAC3B,OAAOA,EAAE,EACX,GAFU,CAEP,IAAW1c,GAAU,EACpBlG,EAAW,IAAU0iC,GAMzB,OALIA,EAAM,EACR1iC,EAAW,IAAU,GACZ0iC,GAAO,IAAUrkC,SAC1B2B,GAAW,UAAK,MAEXA,CACT,CEzCA,IAAI2ia,IAAuB,SAAUzja,GAEnC,SAASyja,IACP,IAAI1ka,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAEhE,OADAS,EAAMkI,KAAO,UACNlI,CACT,CA+CA,OApDA,UAAU0ka,EAASzja,GASnByja,EAAQjla,UAAUoY,UAAY,SAAUnW,GACtCA,EAAQyia,IAAYzia,GACpB,IAAI6F,EAAQhI,KAAKwgC,OAAOttB,QAAQ/Q,GAQhC,OAPe,IAAX6F,IAEAA,GADE,UAAS7F,IAAUA,EAAQnC,KAAKwgC,OAAO3/B,OACjCsB,EAEAoyC,KAGLvsC,CACT,EAKAm9Z,EAAQjla,UAAU2/Z,QAAU,SAAU19Z,EAAOija,GAC3C,IAAIp9Z,EAAQhI,KAAKsY,UAAUnW,GAC3B,GAAI6F,GAAS,EAAG,CACd,IAAI4K,EAAS5S,KAAKwgC,OAAOx4B,GACrB+hV,EAAY/pV,KAAK+pV,UAErB,OADAn3U,EAASm3U,EAAYA,EAAUn3U,EAAQwyZ,GAAa,IAAWxyZ,EAAQ5S,KAAKo1F,KAE9E,CACA,OAAOjzF,CACT,EACAgja,EAAQjla,UAAUy/Z,QAAU,WAC1B3/Z,KAAKkga,WAAa,WAClBlga,KAAKo1F,KAAO,aACZp1F,KAAKwwP,UAAY,CACnB,EAEA20K,EAAQjla,UAAU8/Z,UAAY,WAC5B,IAAIx/X,EAASxgC,KAAKwgC,QAElB,UAAKA,GAAQ,SAAUvuB,EAAG/Q,GACxBs/B,EAAOt/B,GAAK0ja,IAAY3yZ,EAC1B,IACAuuB,EAAOjuB,MAAK,SAAU8hB,EAAIC,GACxB,OAAOD,EAAKC,CACd,IACA5yB,EAAOxB,UAAU8/Z,UAAUp+Z,KAAK5B,KAClC,EACOmla,CACT,CAtD2B,CAsDzB,KACF,QCxDI,IAA0B,SAAUzja,GAEtC,SAAS+nP,IACP,IAAIhpP,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAEhE,OADAS,EAAMiqP,cAAe,EACdjqP,CACT,CAqEA,OA1EA,UAAUgpP,EAAY/nP,GAMtB+nP,EAAWvpP,UAAU4Y,MAAQ,SAAU3W,GACrC,IAAI,UAAMA,GACR,OAAOoyC,IAET,IAAI4sS,EAAWnhV,KAAKmhV,WAChBD,EAAWlhV,KAAKkhV,WAGpB,OAFUlhV,KAAKma,MACLna,KAAKka,IAENinU,EAGFA,EADOnhV,KAAKqla,gBAAgBlja,IACN++U,EAAWC,EAC1C,EACA13F,EAAWvpP,UAAUoK,KAAO,WAC1B5I,EAAOxB,UAAUoK,KAAK1I,KAAK5B,MAE3B,IAAIwhN,EAAQxhN,KAAKwhN,MACb8jN,GAAY,UAAK9jN,GACjB+jN,GAAW,UAAK/jN,GAChB8jN,EAAYtla,KAAKka,MACnBla,KAAKka,IAAMorZ,GAETC,EAAWvla,KAAKma,MAClBna,KAAKma,IAAMorZ,IAGR,UAAMvla,KAAKwla,YACdxla,KAAKka,IAAMorZ,IAER,UAAMtla,KAAKyla,YACdzla,KAAKma,IAAMorZ,EAEf,EACA97K,EAAWvpP,UAAU8/Z,UAAY,WAC/B,IAAI7+Z,GAAK,UAASnB,KAAKwgC,QACrBtmB,EAAM/Y,EAAG+Y,IACTC,EAAMhZ,EAAGgZ,KACP,UAAMna,KAAKka,OACbla,KAAKka,IAAMA,IAET,UAAMla,KAAKma,OACbna,KAAKma,IAAMA,GAETna,KAAKka,IAAMla,KAAKma,MAClBna,KAAKka,IAAMA,EACXla,KAAKma,IAAMA,EAEf,EACAsvO,EAAWvpP,UAAU+/Z,eAAiB,WACpC,IAAIx/Z,EAAQT,KACRwhN,EAAQ9/M,EAAOxB,UAAU+/Z,eAAer+Z,KAAK5B,MAMjD,OALKA,KAAKukO,OACR/iB,GAAQ,UAAOA,GAAO,SAAU2yE,GAC9B,OAAOA,GAAQ1zR,EAAMyZ,KAAOi6Q,GAAQ1zR,EAAM0Z,GAC5C,KAEKqnM,CACT,EAEAioC,EAAWvpP,UAAUmla,gBAAkB,SAAUlja,GAC/C,IAAIgY,EAAMna,KAAKma,IACXD,EAAMla,KAAKka,IACf,OAAQ/X,EAAQ+X,IAAQC,EAAMD,EAChC,EACAuvO,EAAWvpP,UAAUwla,iBAAmB,SAAUvja,GAChD,OAAQA,EAAQnC,KAAKmhV,aAAenhV,KAAKkhV,WAAalhV,KAAKmhV,WAC7D,EACO13F,CACT,CA5E8B,CA4E5B,KACF,QC9EI,IAAsB,SAAU/nP,GAElC,SAASk5O,IACP,IAAIn6O,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAGhE,OAFAS,EAAMkI,KAAO,SACblI,EAAMs9Z,UAAW,EACVt9Z,CACT,CASA,OAfA,UAAUm6O,EAAQl5O,GAOlBk5O,EAAO16O,UAAUokB,OAAS,SAAUniB,GAClC,IAAI42D,EAAU/4D,KAAK0la,iBAAiBvja,GACpC,OAAOnC,KAAKka,IAAM6+C,GAAW/4D,KAAKma,IAAMna,KAAKka,IAC/C,EACA0gO,EAAO16O,UAAUy/Z,QAAU,WACzB3/Z,KAAKkga,WAAa,qBAClBlga,KAAKukO,MAAO,CACd,EACOqW,CACT,CAjB0B,CAiBxB,KACF,QCrBO,SAAS+qL,IAAQxnZ,EAAG8E,GACzB,IAAI/e,EAAI+V,KAAKwlB,EAQb,OANIxc,GAAK,EACChJ,KAAK0B,IAAIzX,EAAG+V,KAAKy/B,IAAIz2B,GAAK9E,IAEO,EAAjClE,KAAK0B,IAAIzX,EAAG+V,KAAKy/B,KAAKz2B,GAAK9E,EAIvC,CACO,SAAS,IAAIA,EAAG8E,GACrB,OAAU,IAAN9E,EACK,EAEFlE,KAAKy/B,IAAIz2B,GAAKhJ,KAAKy/B,IAAIv7B,EAChC,CACO,SAASynZ,IAAkBplY,EAAQgC,EAAMroB,IAC1C,UAAMA,KACRA,EAAMF,KAAKE,IAAI9Y,MAAM,KAAMm/B,IAE7B,IAAIqlY,EAAc1rZ,EAYlB,OAXA,UAAKqmB,GAAQ,SAAUr+B,GACjBA,EAAQ,GAAKA,EAAQ0ja,IACvBA,EAAc1ja,EAElB,IACI0ja,IAAgB1rZ,IAClB0rZ,EAAc1rZ,EAAMqoB,GAElBqjY,EAAc,IAChBA,EAAc,GAETA,CACT,CC/BA,IAAI,IAAmB,SAAUnka,GAE/B,SAASknP,IACP,IAAInoP,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAEhE,OADAS,EAAMkI,KAAO,MACNlI,CACT,CAuEA,OA5EA,UAAUmoP,EAAKlnP,GASfknP,EAAI1oP,UAAUokB,OAAS,SAAUniB,GAC/B,IAII+X,EAJAsoB,EAAOxiC,KAAKwiC,KACZroB,EAAM,IAAIqoB,EAAMxiC,KAAKma,KACrBgnU,EAAWnhV,KAAKmhV,WAChBx5R,EAAQ3nD,KAAKkhV,WAAaC,EAE1B0kF,EAAc7la,KAAK6la,YACvB,GAAIA,EAAa,CACf,GAAc,IAAV1ja,EACF,OAAO,EAGT,IAAI2ja,EAAgB,GAAK3rZ,GADzBD,EAAM,IAAIsoB,EAAMqjY,EAAcrjY,KACQmlB,EACtC,GAAIxlD,EAAQ2ja,EAEV,OAAO3ja,EAAQ2ja,EAAgBD,CAEnC,MACE3rZ,EAAM,IAAIsoB,EAAMxiC,KAAKka,KAEvB,IACIonB,GADWn/B,EAAQg/U,GAAYx5R,GACdxtC,EAAMD,GAAOA,EAClC,OAAOD,KAAK0B,IAAI6mB,EAAMlB,EACxB,EACAsnN,EAAI1oP,UAAUy/Z,QAAU,WACtB3/Z,KAAKkga,WAAa,MAClBlga,KAAKwiC,KAAO,GACZxiC,KAAKwwP,UAAY,EACjBxwP,KAAKukO,MAAO,CACd,EAEAqkB,EAAI1oP,UAAU8/Z,UAAY,WACxBt+Z,EAAOxB,UAAU8/Z,UAAUp+Z,KAAK5B,MAChC,IAAIka,EAAMla,KAAKka,IACf,GAAIA,EAAM,EACR,MAAM,IAAI+tB,MAAM,wEAEN,IAAR/tB,IACFla,KAAK6la,YAAcD,IAAkB5la,KAAKwgC,OAAQxgC,KAAKwiC,KAAMxiC,KAAKma,KAEtE,EAEAyuO,EAAI1oP,UAAUmla,gBAAkB,SAAUlja,GACxC,IAAIgY,EAAMna,KAAKma,IACXD,EAAMla,KAAKka,IACf,GAAIC,IAAQD,EACV,OAAO,EAGT,GAAI/X,GAAS,EACX,OAAO,EAET,IAAIqgC,EAAOxiC,KAAKwiC,KACZqjY,EAAc7la,KAAK6la,YAYvB,OAVIA,IACF3rZ,EAAoB,EAAd2rZ,EAAkBrjY,GAItBrgC,EAAQ0ja,EACA1ja,EAAQ0ja,GAAe,IAAIrjY,EAAMroB,GAAO,IAAIqoB,EAAMtoB,KAEjD,IAAIsoB,EAAMrgC,GAAS,IAAIqgC,EAAMtoB,KAAS,IAAIsoB,EAAMroB,GAAO,IAAIqoB,EAAMtoB,GAGhF,EACO0uO,CACT,CA9EuB,CA8ErB,KACF,QC/EI,IAAmB,SAAUlnP,GAE/B,SAASmnP,IACP,IAAIpoP,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAEhE,OADAS,EAAMkI,KAAO,MACNlI,CACT,CA8BA,OAnCA,UAAUooP,EAAKnnP,GASfmnP,EAAI3oP,UAAUokB,OAAS,SAAUniB,GAC/B,IAAI42D,EAAU/4D,KAAK0la,iBAAiBvja,GAChCyZ,EAAW5b,KAAK4b,SAChBzB,EAAMwrZ,IAAQ/pZ,EAAU5b,KAAKma,KAC7BD,EAAMyrZ,IAAQ/pZ,EAAU5b,KAAKka,KAC7BonB,EAAMy3B,GAAW5+C,EAAMD,GAAOA,EAC9BqnM,EAASjgL,GAAO,EAAI,GAAK,EAC7B,OAAOrnB,KAAK0B,IAAI2lB,EAAK1lB,GAAY2lM,CACnC,EACAsnC,EAAI3oP,UAAUy/Z,QAAU,WACtB3/Z,KAAKkga,WAAa,MAClBlga,KAAK4b,SAAW,EAChB5b,KAAKwwP,UAAY,EACjBxwP,KAAKukO,MAAO,CACd,EAEAskB,EAAI3oP,UAAUmla,gBAAkB,SAAUlja,GACxC,IAAIgY,EAAMna,KAAKma,IACXD,EAAMla,KAAKka,IACf,GAAIC,IAAQD,EACV,OAAO,EAET,IAAI0B,EAAW5b,KAAK4b,SAEpB,OADe+pZ,IAAQ/pZ,EAAUzZ,GAASwja,IAAQ/pZ,EAAU1B,KAASyrZ,IAAQ/pZ,EAAUzB,GAAOwrZ,IAAQ/pZ,EAAU1B,GAElH,EACO2uO,CACT,CArCuB,CAqCrB,KACF,QCpCI,IAAoB,SAAUnnP,GAEhC,SAASsnP,IACP,IAAIvoP,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAEhE,OADAS,EAAMkI,KAAO,OACNlI,CACT,CAgFA,OArFA,UAAUuoP,EAAMtnP,GAShBsnP,EAAK9oP,UAAU2/Z,QAAU,SAAU19Z,EAAO6F,GACxC,IAAI+9Z,EAAc/la,KAAKsY,UAAUnW,GAC7B4nV,EAAY/pV,KAAK+pV,UACrB,OAAOA,EAAYA,EAAUg8E,EAAa/9Z,GAAS,IAAW+9Z,EAAa/la,KAAKo1F,KAClF,EAIA4zJ,EAAK9oP,UAAU4Y,MAAQ,SAAU3W,GAC/B,IAAI8P,EAAI9P,EAIR,QAHI,UAAS8P,KAAM,UAAOA,MACxBA,EAAIjS,KAAKsY,UAAUrG,IAEdvQ,EAAOxB,UAAU4Y,MAAMlX,KAAK5B,KAAMiS,EAC3C,EAKA+2O,EAAK9oP,UAAUoY,UAAY,SAAUrG,GACnC,OAAO2yZ,IAAY3yZ,EACrB,EACA+2O,EAAK9oP,UAAUy/Z,QAAU,WACvB3/Z,KAAKkga,WAAa,cAClBlga,KAAKo1F,KAAO,aACZp1F,KAAKwwP,UAAY,EACjBxwP,KAAKukO,MAAO,CACd,EACAykB,EAAK9oP,UAAU8/Z,UAAY,WACzB,IAAIx/X,EAASxgC,KAAKwgC,OAEdwlY,EAAYhma,KAAK+/Z,UAAU,OAC3BkG,EAAYjma,KAAK+/Z,UAAU,OAS/B,IAPK,UAAMiG,KAAe,UAASA,KACjChma,KAAKka,IAAMla,KAAKsY,UAAUtY,KAAKka,OAE5B,UAAM+rZ,KAAe,UAASA,KACjCjma,KAAKma,IAAMna,KAAKsY,UAAUtY,KAAKma,MAG7BqmB,GAAUA,EAAO3/B,OAAQ,CAE3B,IAAIqla,EAAe,GACfC,EAAQ5ha,IACR6ha,EAAcD,EACdE,EAAQ,GAEZ,UAAK7lY,GAAQ,SAAUvuB,GACrB,IAAI9F,EAAYy4Z,IAAY3yZ,GAC5B,GAAIiQ,MAAM/V,GACR,MAAM,IAAIpH,UAAU,iBAAmBkN,EAAI,mBAEzCk0Z,EAAQh6Z,GACVi6Z,EAAcD,EACdA,EAAQh6Z,GACCi6Z,EAAcj6Z,IACvBi6Z,EAAcj6Z,GAEZk6Z,EAAQl6Z,IACVk6Z,EAAQl6Z,GAEV+5Z,EAAa3la,KAAK4L,EACpB,IAEIq0B,EAAO3/B,OAAS,IAClBb,KAAKsma,gBAAkBF,EAAcD,IAEnC,UAAMH,KACRhma,KAAKka,IAAMisZ,IAET,UAAMF,KACRjma,KAAKma,IAAMksZ,EAEf,CACF,EACOr9K,CACT,CAvFwB,CAuFtB,KACF,QC1FI,IAAwB,SAAUtnP,GAEpC,SAASynP,IACP,IAAI1oP,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAEhE,OADAS,EAAMkI,KAAO,WACNlI,CACT,CA4DA,OAjEA,UAAU0oP,EAAUznP,GAMpBynP,EAASjpP,UAAUokB,OAAS,SAAUniB,GACpC,IAAIq/M,EAAQxhN,KAAKwhN,MACb3gN,EAAS2gN,EAAM3gN,OACfk4D,EAAU/4D,KAAK0la,iBAAiBvja,GAChCoka,EAAWtsZ,KAAKwX,MAAMsnC,GAAWl4D,EAAS,IAE9C,GAAI0la,GAAY1la,EAAS,EACvB,OAAO,UAAK2gN,GAGd,GAAI+kN,EAAW,EACb,OAAO,UAAK/kN,GAEd,IAAIglN,EAAUhlN,EAAM+kN,GAGhBE,EAAkBF,GAAY1la,EAAS,GAE3C,OAAO2la,GAAWztW,EAAU0tW,KADLF,EAAW,IAAM1la,EAAS,GACiB4la,IAJnDjlN,EAAM+kN,EAAW,GAIiEC,EACnG,EACAr9K,EAASjpP,UAAUy/Z,QAAU,WAC3B3/Z,KAAKkga,WAAa,WAClBlga,KAAKwwP,UAAY,EACjBxwP,KAAKukO,MAAO,CACd,EACA4kB,EAASjpP,UAAU+/Z,eAAiB,WAClC,IAAIz+M,EAAQ9/M,EAAOxB,UAAU+/Z,eAAer+Z,KAAK5B,MAUjD,OATKA,KAAKukO,QAEJ,UAAK/iB,KAAWxhN,KAAKma,KACvBqnM,EAAMjhN,KAAKP,KAAKma,MAEd,UAAKqnM,KAAWxhN,KAAKka,KACvBsnM,EAAM7rM,QAAQ3V,KAAKka,MAGhBsnM,CACT,EAEA2nC,EAASjpP,UAAUmla,gBAAkB,SAAUlja,GAC7C,IAAIq/M,EAAQxhN,KAAKwhN,MAEjB,GAAIr/M,GAAQ,UAAKq/M,GACf,OAAO,EAGT,GAAIr/M,GAAQ,UAAKq/M,GACf,OAAO,EAET,IAAI+kN,EAAW,EAQf,OAPA,UAAK/kN,GAAO,SAAU2yE,EAAMnsR,GAC1B,KAAI7F,GAASgyR,GAGX,OAAO,EAFPoyI,EAAWv+Z,CAIf,IACOu+Z,GAAY/kN,EAAM3gN,OAAS,EACpC,EACOsoP,CACT,CAnE4B,CAmE1B,KACF,QCxEI,IAAwB,SAAUznP,GAEpC,SAAS6wO,IACP,IAAI9xO,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAEhE,OADAS,EAAMkI,KAAO,WACNlI,CACT,CAMA,OAXA,UAAU8xO,EAAU7wO,GAMpB6wO,EAASryO,UAAUy/Z,QAAU,WAC3B3/Z,KAAKkga,WAAa,WAClBlga,KAAKwwP,UAAY,EACjBxwP,KAAKukO,MAAO,CACd,EACOgO,CACT,CAb4B,CAa1B,KACF,QCfI,IAAM,CAAC,EACX,SAASm0L,IAAS7lY,GAChB,OAAO,IAAIA,EACb,CACA,SAAS8lY,IAAc9lY,EAAKk/B,GAC1B,GAAI2mW,IAAS7lY,GACX,MAAM,IAAIoH,MAAM,SAAWpH,EAAM,cAEnC,IAAIA,GAAOk/B,CACb,CCFA,IAAI,IAAwB,SAAUr+D,GAEpC,SAASkla,IACP,IAAInma,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAGhE,OAFAS,EAAMkI,KAAO,WACblI,EAAM+kP,YAAa,EACZ/kP,CACT,CAkBA,OAxBA,UAAUmma,EAAUlla,GAOpBkla,EAAS1ma,UAAU+/Z,eAAiB,WAClC,OAAOjga,KAAKwgC,MACd,EACAomY,EAAS1ma,UAAU4Y,MAAQ,SAAU3W,GAEnC,OAAInC,KAAKwgC,OAAO,KAAOr+B,IAAS,UAASA,GAChCA,EAEFnC,KAAK2nD,MAAM,EACpB,EACAi/W,EAAS1ma,UAAUokB,OAAS,SAAUniB,GACpC,IAAIwlD,EAAQ3nD,KAAK2nD,MACjB,OAAIxlD,EAAQwlD,EAAM,IAAMxlD,EAAQwlD,EAAM,GAC7BpT,IAEFv0C,KAAKwgC,OAAO,EACrB,EACOomY,CACT,CA1B4B,CA0B1B,KACF,QC7Be,SAASC,IAAkBlla,GACxC,IAAI6+B,EAAS7+B,EAAI6+B,OACfyhN,EAAetgP,EAAIsgP,aACnBuO,EAAY7uP,EAAI6uP,UAChBs2K,EAAWnla,EAAImla,SACjB,IAAI,UAAS7kL,GAAe,CAC1B,IAAI8kL,GAAU,UAAOvmY,GAAQ,SAAUurB,EAAI7qD,GACzC,OAAOA,EAAI+gP,GAAiB,CAC9B,IACI+kL,GAAY,UAAKxmY,GAIrB,OAHIsmY,IAAY,UAAKC,KAAaC,GAChCD,EAAQxma,KAAKyma,GAERD,CACT,CACA,IAAIvsY,EAAMgG,EAAO3/B,OACbqZ,EAAMvY,EAAIuY,IACZC,EAAMxY,EAAIwY,IAOZ,IANI,UAAMD,KACRA,EAAM,IAEJ,UAAMC,KACRA,EAAMqmB,EAAO3/B,OAAS,KAEnB,UAAS2vP,IAAcA,GAAah2N,EAAK,OAAOgG,EAAOxZ,MAAM9M,EAAKC,EAAM,GAC7E,GAAIq2O,GAAa,GAAKr2O,GAAO,EAAG,MAAO,GAIvC,IAHA,IAAI3X,EAAyB,IAAdguP,EAAkBh2N,EAAMvgB,KAAKwX,MAAM+I,GAAOg2N,EAAY,IACjEhvC,EAAQ,GACRt8K,EAAMhrB,EACDhZ,EAAI,EAAGA,EAAIsvP,KACdtrN,GAAO/qB,GADkBjZ,IAE7BgkC,EAAMjrB,KAAKC,IAAIA,EAAMhZ,EAAIsB,EAAU2X,GAC/BjZ,IAAMsvP,EAAY,GAAKs2K,EAAUtlN,EAAMjhN,KAAKigC,EAAOrmB,IAAWqnM,EAAMjhN,KAAKigC,EAAO0E,IAEtF,OAAOs8K,CACT,CC7BA,IACI,IAAMvnM,KAAK2C,KAAK,IAChB,IAAK3C,KAAK2C,KAAK,IACf,IAAK3C,KAAK2C,KAAK,GAEfqqZ,IAAwB,WAC1B,SAASA,IACPjna,KAAKkna,QAAU,CAAC,EAAG,EACrB,CAkDA,OAjDAD,EAAS/ma,UAAUq6C,OAAS,SAAUA,GACpC,OAAIA,GACFv6C,KAAKkna,QAAUzmY,MAAMnH,KAAKihB,EAAQt4B,QAC3BjiB,MAEFA,KAAKkna,QAAQlgZ,OACtB,EACAigZ,EAAS/ma,UAAUqkO,KAAO,SAAUzzM,GAClC,IAAI3vB,EAAI+V,OACM,IAAV4Z,IACFA,EAnBc,GAqBhB,IAKI22B,EALA1hC,EAAI/lB,KAAKkna,QAAQlgZ,QACjB60B,EAAK,EACLC,EAAK97C,KAAKkna,QAAQrma,OAAS,EAC3B6lB,EAAQ1mB,KAAKkna,QAAQrrX,GACrB72C,EAAOhF,KAAKkna,QAAQprX,GAyBxB,OAvBI92C,EAAO0hB,IACWA,GAApBvlB,EAAK,CAAC6D,EAAM0hB,IAAmB,GAAI1hB,EAAO7D,EAAG,GAC9B06C,GAAf3kC,EAAK,CAAC4kC,EAAID,IAAa,GAAIC,EAAK5kC,EAAG,KAErCuwC,EAAO,IAAc/gC,EAAO1hB,EAAM8rB,IACvB,EAGT22B,EAAO,IAFP/gC,EAAQzM,KAAKwX,MAAM/K,EAAQ+gC,GAAQA,EACnCziD,EAAOiV,KAAKisJ,KAAKlhK,EAAOyiD,GAAQA,EACE32B,GACzB22B,EAAO,IAGhBA,EAAO,IAFP/gC,EAAQzM,KAAKisJ,KAAKx/I,EAAQ+gC,GAAQA,EAClCziD,EAAOiV,KAAKwX,MAAMzsB,EAAOyiD,GAAQA,EACC32B,IAEhC22B,EAAO,GACT1hC,EAAE81B,GAAM5hC,KAAKwX,MAAM/K,EAAQ+gC,GAAQA,EACnC1hC,EAAE+1B,GAAM7hC,KAAKisJ,KAAKlhK,EAAOyiD,GAAQA,EACjCznD,KAAKu6C,OAAOx0B,IACH0hC,EAAO,IAChB1hC,EAAE81B,GAAM5hC,KAAKisJ,KAAKx/I,EAAQ+gC,GAAQA,EAClC1hC,EAAE+1B,GAAM7hC,KAAKwX,MAAMzsB,EAAOyiD,GAAQA,EAClCznD,KAAKu6C,OAAOx0B,IAEP/lB,IACT,EACAina,EAAS/ma,UAAUshN,MAAQ,SAAU1wL,GAInC,YAHc,IAAVA,IACFA,EAtDc,GA6DpB,SAAsBpK,EAAO1hB,EAAM8rB,GACjC,IAAIF,EAEAhC,EACA4yL,EACA/5J,EAHAvmD,GAAK,EAKT,GADA8D,GAAQA,EAAsB8rB,GAASA,GAAzBpK,GAASA,KACT1hB,GAAQ8rB,EAAQ,EAC5B,MAAO,CAACpK,IAGNkK,EAAU5rB,EAAO0hB,KACnBkI,EAAIlI,EAAOA,EAAQ1hB,EAAMA,EAAO4pB,GAGlC,GAAmD,KAA9C64B,EAAO,IAAc/gC,EAAO1hB,EAAM8rB,MAAkBwP,SAASmnB,GAChE,MAAO,GAET,GAAIA,EAAO,EAIT,IAHA/gC,EAAQzM,KAAKisJ,KAAKx/I,EAAQ+gC,GAC1BziD,EAAOiV,KAAKwX,MAAMzsB,EAAOyiD,GACzB+5J,EAAQ,IAAI/gL,MAAM7R,EAAI3U,KAAKisJ,KAAKlhK,EAAO0hB,EAAQ,MACtCxlB,EAAI0tB,GACX4yL,EAAMtgN,IAAMwlB,EAAQxlB,GAAKumD,OAM3B,IAHA/gC,EAAQzM,KAAKwX,MAAM/K,EAAQ+gC,GAC3BziD,EAAOiV,KAAKisJ,KAAKlhK,EAAOyiD,GACxB+5J,EAAQ,IAAI/gL,MAAM7R,EAAI3U,KAAKisJ,KAAKx/I,EAAQ1hB,EAAO,MACtC9D,EAAI0tB,GACX4yL,EAAMtgN,IAAMwlB,EAAQxlB,GAAKumD,EAGzB72B,GACF4wL,EAAM5wL,UAER,OAAO4wL,CACT,CA1CW2lN,CAAanna,KAAKkna,QAAQ,GAAIlna,KAAKkna,QAAQlna,KAAKkna,QAAQrma,OAAS,GAAIiwB,GAxD5D,EAyDlB,EACOm2Y,CACT,CAtD4B,GA8F5B,SAAS,IAAcvgZ,EAAO1hB,EAAM8rB,GAClC,IAAI22B,GAAQziD,EAAO0hB,GAASzM,KAAKE,IAAI,EAAG2W,GACpCgtB,EAAQ7jC,KAAKwX,MAAMxX,KAAKy/B,IAAI+N,GAAQxtC,KAAK6hS,MACzC1uP,EAAQ3F,EAAOxtC,KAAK0B,IAAI,GAAImiC,GAChC,OAAOA,GAAS,GAAKsP,GAAS,IAAM,GAAKA,GAAS,IAAK,EAAIA,GAAS,IAAK,EAAI,GAAKnzC,KAAK0B,IAAI,GAAImiC,IAAU7jC,KAAK0B,IAAI,IAAKmiC,IAAUsP,GAAS,IAAM,GAAKA,GAAS,IAAK,EAAIA,GAAS,IAAK,EAAI,EAC3L,CCnHA,SAASg6W,IAAan1Z,EAAGuwB,EAAM6kY,GAS7B,OAPiB,SAAbA,EACIptZ,KAAKisJ,KAAKj0J,EAAIuwB,GACE,UAAb6kY,EACHptZ,KAAKwX,MAAMxf,EAAIuwB,GAEfvoB,KAAKwoB,MAAMxwB,EAAIuwB,IAEVA,CACf,CACe,SAAS8kY,IAAcptZ,EAAKC,EAAK3X,GAE9C,IAAIgka,EAAUY,IAAaltZ,EAAK1X,EAAU,SACtC+ka,EAAUH,IAAajtZ,EAAK3X,EAAU,QAE1Cgka,GAAU,UAAUA,EAAShka,GAC7B+ka,GAAU,UAAUA,EAAS/ka,GAI7B,IAHA,IAAIg/M,EAAQ,GAERgmN,EAAoBvtZ,KAAKE,KAAKotZ,EAAUf,IAAYvsZ,KAAK0B,IAAI,EAAG,IAAM,GAAInZ,GACrEtB,EAAIsla,EAAStla,GAAKqma,EAASrma,GAAQsma,EAAmB,CAC7D,IAAI1H,GAAY,UAAU5+Z,EAAGsma,GAC7BhmN,EAAMjhN,KAAKu/Z,EACb,CACA,MAAO,CACL5lZ,IAAKssZ,EACLrsZ,IAAKotZ,EACL/lN,MAAOA,EAEX,CCxBe,SAASimN,IAAY9la,EAAK+la,EAAYC,GACnD,IAAIxma,EACAqka,EAAW7ja,EAAI6ja,SACjBC,EAAW9ja,EAAI8ja,SACfvrZ,EAAMvY,EAAIuY,IACVC,EAAMxY,EAAIwY,IACVjD,EAAKvV,EAAI6uP,UACTA,OAAmB,IAAPt5O,EAAgB,EAAIA,EAC9B0wZ,GAAU,UAAMpC,IAAY,UAAMkC,GAAcxtZ,EAAMwtZ,EAAalC,EACnEqC,GAAU,UAAMpC,IAAY,UAAMkC,GAAcxtZ,EAAMwtZ,EAAalC,EAIvE,GAHImC,EAAUC,IACaA,GAAzB1ma,EAAK,CAACyma,EAASC,IAAuB,GAAID,EAAUzma,EAAG,IAErDqvP,GAAa,EACf,MAAO,CAACo3K,EAASC,GAInB,IAFA,IAAIpgX,GAAQogX,EAAUD,IAAYp3K,EAAY,GAC1ChvC,EAAQ,GACHtgN,EAAI,EAAGA,EAAIsvP,EAAWtvP,IAC7BsgN,EAAMjhN,KAAKqna,EAAUngX,EAAOvmD,GAE9B,OAAOsgN,CACT,CC5BO,SAASsmN,IAAal5Y,GAC3B,OAAO3U,KAAKoG,IAAIuO,GAAK,MAAQA,EAAIvD,WAAWuD,EAAExG,QAAQ,IACxD,CCDO,IAAI2/Y,IAAY,CAAC,EAAG,EAAG,EAAG,IAAK,EAAG,GAErCzjM,IAAuB,IAAjBriN,OAAO+lZ,QAOjB,SAASC,IAAW1iZ,EAAGkF,EAAGvjB,EAAGgha,EAAMC,EAAMC,GACvC,IAAIx5Y,GAAI,UAAKnE,GACTvpB,GAAI,UAAQupB,EAAGlF,GACftT,EAAI,EACJ8D,EAVN,SAAa6Y,EAAG7Y,GACd,OAAQ6Y,EAAI7Y,EAAIA,GAAKA,CACvB,CAQUqkN,CAAI8tM,EAAME,GAIlB,OAHKryZ,EAAIuuN,KAAO8jM,EAAQryZ,EAAIuuN,MAAQ4jM,GAAQ,GAAKC,GAAQ,IACvDl2Z,EAAI,GAEC,EAAI/Q,GAAK0tB,EAAI,GAAK1nB,EAAI+K,CAC/B,CACA,SAASo2Z,IAAc9iZ,EAAGkF,EAAGvjB,GAC3B,IAAI0nB,GAAI,UAAKnE,GAGb,OAAO,GAFC,UAAQA,EAAGlF,IAEHqJ,EAAI,GAAK1nB,EADjB,CAEV,CACA,SAASqsO,IAAQ7sO,EAAGqP,EAAGuyZ,EAAMC,EAAMC,EAAMC,GACvC,IAAIvpZ,GAAKxY,EAAI,IAAM+ha,EAAOD,GACtBE,GAAM3yZ,EAAI,IAAMkE,KAAKE,IAAIsuZ,EAAMF,GAAQtuZ,KAAKC,IAAIouZ,EAAME,IAC1D,OAAO,EAAIvuZ,KAAKE,IAAI+E,EAAIwpZ,EAAIA,EAAKxpZ,EACnC,CACA,SAASypZ,IAAWjia,EAAGqP,GACrB,OAAIrP,GAAKqP,EACA,GAAKrP,EAAI,IAAMqP,EAAI,GAErB,CACT,CACA,SAAS6yZ,IAASN,EAAMC,EAAMC,EAAMC,GAClC,IAAI9gX,EAAQ4gX,EAAOD,EACnB,OAAO,EAAI,IAAOruZ,KAAK0B,IAAI4sZ,EAAOE,EAAM,GAAKxuZ,KAAK0B,IAAI2sZ,EAAOE,EAAM,IAAMvuZ,KAAK0B,IAAI,GAAMgsC,EAAO,EACjG,CACA,SAASkhX,IAAYP,EAAMC,EAAMr4S,GAC/B,IAAIvoE,EAAQ4gX,EAAOD,EACnB,GAAIp4S,EAAOvoE,EAAO,CAChB,IAAImhX,GAAQ54S,EAAOvoE,GAAS,EAC5B,OAAO,EAAI1tC,KAAK0B,IAAImtZ,EAAM,GAAK7uZ,KAAK0B,IAAI,GAAMgsC,EAAO,EACvD,CACA,OAAO,CACT,CAce,SAASohX,IAAST,EAAMC,EAAM35Y,EAAGo6Y,EAAWv+Y,EAAGiD,QAClD,IAANkB,IACFA,EAAI,QAEY,IAAdo6Y,IACFA,GAAY,QAEJ,IAANv+Y,IACFA,EAAIs9Y,UAEI,IAANr6Y,IACFA,EAAI,CAAC,IAAM,GAAK,GAAK,MAGvB,IAAI3X,EAAI6Y,EAAI,EAAI,EAAI3U,KAAKwoB,MAAM7T,GAE/B,GAAI3M,OAAOC,MAAMomZ,IAASrmZ,OAAOC,MAAMqmZ,IAAyB,iBAATD,GAAqC,iBAATC,IAAsBxyZ,EACvG,MAAO,CACLmE,IAAK,EACLC,IAAK,EACLqnM,MAAO,IAIX,GAAI+mN,EAAOD,EAAO,OAAe,IAANvyZ,EACzB,MAAO,CACLmE,IAAKouZ,EACLnuZ,IAAKouZ,EACL/mN,MAAO,CAAC8mN,IAIZ,GAAIC,EAAOD,EAAO,MAAO,CACvB,IACIW,GAAUV,EAAOD,IADjBx3Y,EAAQlC,GAAK,GAEjB,MAAO,CACL1U,IAAKouZ,EACLnuZ,IAAKouZ,EACL/mN,MAAO/gL,MAAM3P,GAAO8qB,KAAK,MAAM5qB,KAAI,SAAU0V,EAAGxB,GAC9C,OAAO4iY,IAAaQ,EAAOW,EAAS/jY,EACtC,IAEJ,CAQA,IAPA,IAAIgkY,EAAO,CACT5vI,OAAQ,EACR4uI,KAAM,EACNC,KAAM,EACNC,MAAO,GAELlha,EAAI,EACDA,EAAI3C,KAAU,CACnB,IAAK,IAAIrD,EAAI,EAAGA,EAAIupB,EAAE5pB,OAAQK,GAAK,EAAG,CACpC,IAAIqkB,EAAIkF,EAAEvpB,GACN2iJ,EAAKwkR,IAAc9iZ,EAAGkF,EAAGvjB,GAC7B,GAAIwmB,EAAE,GAAKm2H,EAAKn2H,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKw7Y,EAAK5vI,MAAO,CAC/CpyR,EAAI3C,IACJ,KACF,CAEA,IADA,IAAImC,EAAI,EACDA,EAAInC,KAAU,CACnB,IAAI4ka,EAAKR,IAAWjia,EAAGqP,GACvB,GAAI2X,EAAE,GAAKm2H,EAAKn2H,EAAE,GAAKA,EAAE,GAAKy7Y,EAAKz7Y,EAAE,GAAKw7Y,EAAK5vI,MAC7C,MAIF,IAFA,IAAIj/O,GAASkuX,EAAOD,IAAS5ha,EAAI,GAAKQ,EAAIqe,EACtCE,EAAIxL,KAAKisJ,KAAKjsJ,KAAKqnM,MAAMjnK,IACtB50B,EAAIlhB,KAAU,CACnB,IAAIkjD,EAAOvgD,EAAIqe,EAAItL,KAAK0B,IAAI,GAAI8J,GAC5B2jZ,EAAKP,IAAYP,EAAMC,EAAM9gX,GAAQ/gD,EAAI,IAC7C,GAAIgnB,EAAE,GAAKm2H,EAAKn2H,EAAE,GAAK07Y,EAAK17Y,EAAE,GAAKy7Y,EAAKz7Y,EAAE,GAAKw7Y,EAAK5vI,MAClD,MAEF,IAAI+vI,EAAWpvZ,KAAKwX,MAAM82Y,EAAO9gX,GAAQvgD,GAAKR,EAAI,GAAKQ,EACnDoia,EAAWrvZ,KAAKisJ,KAAKoiQ,EAAO7gX,GAAQvgD,EACxC,GAAImia,GAAYC,EAEd,IADA,IAAIx4Y,EAAQw4Y,EAAWD,EACdx1N,EAAM,EAAGA,GAAO/iL,EAAO+iL,GAAO,EAAG,CACxC,IACI20N,GADQa,EAAWx1N,IACHpsJ,EAAOvgD,GACvBuha,EAAOD,EAAO/gX,GAAQ/gD,EAAI,GAC1B6ia,EAAQ9hX,EACR3pC,EAAImqZ,IAAW1iZ,EAAGkF,EAAGvjB,EAAGsha,EAAMC,EAAMc,GACpCpkZ,EAAIyjZ,IAASN,EAAMC,EAAMC,EAAMC,GAC/Bj0X,EAAI++L,IAAQ7sO,EAAGqP,EAAGuyZ,EAAMC,EAAMC,EAAMC,GAEpCnvI,EAAQ5rQ,EAAE,GAAK5P,EAAI4P,EAAE,GAAKvI,EAAIuI,EAAE,GAAK8mB,EAjG9C,EAiGkD9mB,EAAE,GAC3C4rQ,EAAQ4vI,EAAK5vI,SAAW0vI,GAAaR,GAAQF,GAAQG,GAAQF,KAC/DW,EAAKhB,KAAOM,EACZU,EAAKf,KAAOM,EACZS,EAAKd,MAAQmB,EACbL,EAAK5vI,MAAQA,EAEjB,CAEF7zQ,GAAK,CACP,CACA/e,GAAK,CACP,CACF,CACAQ,GAAK,CACP,CAEA,IAAIiha,EAAOL,IAAaoB,EAAKf,MACzBD,EAAOJ,IAAaoB,EAAKhB,MACzBE,EAAQN,IAAaoB,EAAKd,OAG1B53K,EAAYv2O,KAAKwX,MAlKvB,SAAe7C,GACb,OAAO3U,KAAKwoB,MAAU,KAAJ7T,GAAY,IAChC,CAgK6B,EAAOu5Y,EAAOD,GAAQE,IAAU,EACvD5mN,EAAQ,IAAI/gL,MAAM+vN,GAEtBhvC,EAAM,GAAKsmN,IAAaI,GACxB,IAAShna,EAAI,EAAGA,EAAIsvP,EAAWtvP,IAC7BsgN,EAAMtgN,GAAK4ma,IAAatmN,EAAMtgN,EAAI,GAAKkna,GAEzC,MAAO,CACLluZ,IAAKD,KAAKC,IAAIouZ,GAAM,UAAK9mN,IACzBrnM,IAAKF,KAAKE,IAAIouZ,GAAM,UAAK/mN,IACzBA,MAAOA,EAEX,CCrLe,SAASgoN,IAAOtvZ,EAAKC,EAAKpE,GAIvC,QAHU,IAANA,IACFA,EAAI,GAEFmE,IAAQC,EACV,MAAO,CACLA,IAAKA,EACLD,IAAKA,EACLsnM,MAAO,CAACtnM,IAGZ,IAAI0U,EAAI7Y,EAAI,EAAI,EAAIkE,KAAKwoB,MAAM1sB,GAC/B,GAAU,IAAN6Y,EAAS,MAAO,CAClBzU,IAAKA,EACLD,IAAKA,EACLsnM,MAAO,IAOT,IAIIr8L,GADIhL,EAAMD,GACF0U,EAOR4T,EAAOvoB,KAAK0B,IAAI,GAAI1B,KAAKwX,MAAMxX,KAAKqnM,MAAMn8L,KAC1CypH,EAAOpsG,EACP,EAAIA,EAAOrd,EAbP,KAagBA,EAAIypH,IAEtB,EAAIpsG,EAAOrd,EAdR,MAckBA,GADzBypH,EAAO,EAAIpsG,KAGL,GAAKA,EAAOrd,EAjBZ,KAiBqBA,GADzBypH,EAAO,EAAIpsG,MAETosG,EAAO,GAAKpsG,GAUlB,IANA,IAAIinY,EAAKxvZ,KAAKisJ,KAAK/rJ,EAAMy0H,GACrBy0H,EAAKppP,KAAKwX,MAAMvX,EAAM00H,GACtBurE,EAAKlgM,KAAKE,IAAIsvZ,EAAK76R,EAAMz0H,GACzB+/L,EAAKjgM,KAAKC,IAAImpP,EAAKz0H,EAAM10H,GACzBoqB,EAAOrqB,KAAKwX,OAAO0oL,EAAKD,GAAMtrE,GAAQ,EACtC4yE,EAAQ,IAAI/gL,MAAM6D,GACbpjC,EAAI,EAAGA,EAAIojC,EAAMpjC,IACxBsgN,EAAMtgN,GAAK4ma,IAAa5tN,EAAKh5M,EAAI0tI,GAEnC,MAAO,CACL10H,IAAKggM,EACL//L,IAAKggM,EACLqH,MAAOA,EAEX,CCtDA,SAAS,IAAev2M,EAAGmT,GACzB,IAAI8mB,EAAMj6B,EAAEpK,OAASud,EAMrB,OAAU,IAANA,EAEKnT,EAAEA,EAAEpK,OAAS,GACL,IAANud,EAEFnT,EAAE,GACAi6B,EAAM,GAAM,EAEdj6B,EAAEgP,KAAKisJ,KAAKhhI,GAAO,GACjBj6B,EAAEpK,OAAS,GAAM,GAGlBoK,EAAEi6B,EAAM,GAAKj6B,EAAEi6B,IAAQ,EAIxBj6B,EAAEi6B,EAEb,CC7BA,SAAS68F,IAAQh6D,GACf,OAAO,IAAI/kE,KAAK+kE,GAAMs+I,aACxB,CACA,SAASqjN,IAAWxnW,GAClB,OAAO,IAAIl/D,KAAKk/D,EAAM,EAAG,GAAG35D,SAC9B,CACA,SAASu5H,IAAS/5D,GAChB,OAAO,IAAI/kE,KAAK+kE,GAAM+5D,UACxB,CAQA,SAAS6nS,IAAWznW,EAAMD,GACxB,OAAO,IAAIj/D,KAAKk/D,EAAMD,EAAO,GAAG15D,SAClC,CCRAk3Z,IAAmB,MAAO,KAC1BA,IAAmB,YCLJ,SAAiB99Z,GAK9B,OAHY,KAAS,UAAS,CAC5Bmla,UAAU,GACTnla,GAEL,IDAA89Z,IAAmB,sBEJJ,SAAgB99Z,GAC7B,IAAIuY,EAAMvY,EAAIuY,IACZC,EAAMxY,EAAIwY,IACVq2O,EAAY7uP,EAAI6uP,UAChBjsB,EAAO5iO,EAAI4iO,KACX0d,EAAetgP,EAAIsgP,aACnBujL,EAAW7ja,EAAI6ja,SACfC,EAAW9ja,EAAI8ja,SACbjkN,EAAQunN,IAAS7uZ,EAAKC,EAAKq2O,EAAWjsB,GAAM/iB,MAChD,OAAK,UAAMgkN,KAAc,UAAMC,GAG3BxjL,EACK,IAAS/nO,EAAKC,EAAK8nO,GAAczgC,MAEnCA,EALEimN,IAAY9la,GAAK,UAAK6/M,IAAQ,UAAKA,GAM9C,IFXAi+M,IAAmB,YGLJ,SAAsB99Z,GACnC,IAAIuY,EAAMvY,EAAIuY,IACZC,EAAMxY,EAAIwY,IACVq2O,EAAY7uP,EAAI6uP,UAChBvO,EAAetgP,EAAIsgP,aACnBujL,EAAW7ja,EAAI6ja,SACfC,EAAW9ja,EAAI8ja,SACbjkN,EAAQgoN,IAAOtvZ,EAAKC,EAAKq2O,GAAWhvC,MACxC,OAAK,UAAMgkN,KAAc,UAAMC,GAG3BxjL,EACK,IAAS/nO,EAAKC,EAAK8nO,GAAczgC,MAEnCA,EALEimN,IAAY9la,GAAK,UAAK6/M,IAAQ,UAAKA,GAM9C,IHTAi+M,IAAmB,QIdJ,SAA4B99Z,GACzC,IAAIuY,EAAMvY,EAAIuY,IACZC,EAAMxY,EAAIwY,IACVmsZ,EAAkB3ka,EAAI2ka,gBACpBrkL,EAAetgP,EAAIsgP,aACnBuO,EAAY7uP,EAAI6uP,UAEpB,GAAIvO,EACFuO,EAAYv2O,KAAKisJ,MAAM/rJ,EAAMD,GAAO+nO,OAC/B,CAEL,IACIr8O,GADSuU,EAAMD,IADnB+nO,EAAe+iL,IAAgB9qZ,EAAKC,EAAKq2O,GAAW,IAEhCA,EAChB5qP,EAAQ,IACVq8O,GAA8BhoO,KAAKisJ,KAAKtgK,IAGtC0ga,GAAmBrkL,EAAeqkL,IACpCrkL,EAAeqkL,EAEnB,CACArkL,EAAehoO,KAAKE,IAAIF,KAAKwX,OAAOtX,EAAMD,IAAQD,KAAK0B,IAAI,EAAG,IAAM,IAAKsmO,GAEzE,IADA,IAAIzgC,EAAQ,GACHtgN,EAAIgZ,EAAKhZ,EAAIiZ,EAAM8nO,EAAc/gP,GAAK+gP,EAC7CzgC,EAAMjhN,KAAKW,GAEb,OAAOsgN,CACT,IJZAi+M,IAAmB,eDkBJ,SAAoB99Z,GACjC,IAAIuY,EAAMvY,EAAIuY,IACZC,EAAMxY,EAAIwY,IACVmsZ,EAAkB3ka,EAAI2ka,gBACtB91K,EAAY7uP,EAAI6uP,UACdvO,EAAetgP,EAAIsgP,aACnBzgC,EAAQ,GAEPygC,IACHA,GAAgB9nO,EAAMD,GAAOs2O,EAEzB81K,GAAmBrkL,EAAeqkL,IACpCrkL,EAAeqkL,IAGnBrkL,EAAehoO,KAAKE,IAAIF,KAAKwX,OAAOtX,EAAMD,IAAQD,KAAK0B,IAAI,EAAG,IAAM,IAAKsmO,GACzE,IAAI2nL,EAAU7nS,IAAQ7nH,GAEtB,GAAI+nO,EAAe,IAGjB,IAFA,IAAI4nL,EAAU9nS,IAAQ5nH,GAClB2vZ,EAAe7vZ,KAAKisJ,KAAK+7E,EAAe,KACnC/gP,EAAI0oa,EAAS1oa,GAAK2oa,EAAUC,EAAc5oa,GAAQ4oa,EACzDtoN,EAAMjhN,KAAKmpa,IAAWxoa,SAEnB,GAAI+gP,EAAe,IAExB,KAAI8nL,EAAgB9vZ,KAAKisJ,KAAK+7E,EAAe,KACzC+nL,EAASloS,IAAS5nH,GAClB+vZ,EApDR,SAAmB/vZ,EAAKC,GACtB,IAAIyvZ,EAAU7nS,IAAQ7nH,GAClB2vZ,EAAU9nS,IAAQ5nH,GAClB+vZ,EAAWpoS,IAAS5nH,GAExB,OAA6B,IAArB2vZ,EAAUD,IADH9nS,IAAS3nH,GACsB+vZ,GAAY,EAC5D,CA8CkBC,CAAUjwZ,EAAKC,GAC7B,IAASjZ,EAAI,EAAGA,GAAK+oa,EAAUF,EAAe7oa,GAAQ6oa,EACpDvoN,EAAMjhN,KAAKopa,IAAWC,EAAS1oa,EAAI8oa,GAJc,MAM9C,GAAI/nL,EAAe,IAExB,KACI//K,GADA6F,EAAO,IAAI/kE,KAAKkX,IACJmsM,cACZpkJ,EAAQ8F,EAAK+5D,WACbsoS,EAAOriW,EAAK28I,UACZiG,EAAM1wM,KAAKisJ,KAAK+7E,EAAe,KAC/BooL,EArDR,SAAiBnwZ,EAAKC,GACpB,OAAOF,KAAKisJ,MAAM/rJ,EAAMD,GAAO,IACjC,CAmDgBowZ,CAAQpwZ,EAAKC,GACzB,IAASjZ,EAAI,EAAGA,EAAImpa,EAAQ1/M,EAAKzpN,GAAQypN,EACvCnJ,EAAMjhN,KAAK,IAAIyC,KAAKk/D,EAAMD,EAAOmoW,EAAOlpa,GAAGqH,UAPrB,MASnB,GAAI05O,EAAe8iL,IAExB,CACI7iW,GADA6F,EAAO,IAAI/kE,KAAKkX,IACJmsM,cACZpkJ,EAAQ8F,EAAK+5D,WACb6oF,EAAM5iJ,EAAK28I,UAHf,IAAI38I,EAIAwsJ,EAAOxsJ,EAAKg/I,WACZtJ,EAAQxjM,KAAKisJ,KAAK+7E,EAAe8iL,KACjCwF,EA9DR,SAAkBrwZ,EAAKC,GACrB,OAAOF,KAAKisJ,MAAM/rJ,EAAMD,GAAO6qZ,IACjC,CA4DiByF,CAAStwZ,EAAKC,GAC3B,IAASjZ,EAAI,EAAGA,GAAKqpa,EAAS9sN,EAAOv8M,GAAQu8M,EAC3C+D,EAAMjhN,KAAK,IAAIyC,KAAKk/D,EAAMD,EAAO0oJ,EAAK4J,EAAOrzN,GAAGqH,UAR1B,MAUnB,GAAI05O,EAAe6iL,IAExB,KAAI2F,EAjER,SAAmBvwZ,EAAKC,GACtB,OAAOF,KAAKisJ,MAAM/rJ,EAAMD,GAAO,IACjC,CA+DiBwwZ,CAAUxwZ,EAAKC,GACxBwjM,EAAU1jM,KAAKisJ,KAAK+7E,EAAe6iL,KACvC,IAAS5ja,EAAI,EAAGA,GAAKupa,EAAS9sN,EAASz8M,GAAQy8M,EAC7C6D,EAAMjhN,KAAK2Z,EAAMhZ,EAAI4ja,IAHS,KAK3B,CAEL,IAAItia,EAAWy/O,EACXz/O,EAAWqia,MACbria,EAAWqia,KAEb,IAAI8F,EAAY1wZ,KAAKwX,MAAMvX,EAAM2qZ,KAAUA,IACvC+F,EAAW3wZ,KAAKisJ,MAAM/rJ,EAAMD,GAAO2qZ,KACnChnN,EAAU5jM,KAAKisJ,KAAK1jK,EAAWqia,KACnC,IAAS3ja,EAAI,EAAGA,EAAI0pa,EAAW/sN,EAAS38M,GAAQ28M,EAC9C2D,EAAMjhN,KAAKoqa,EAAYzpa,EAAI2ja,IAE/B,CAMA,OAHIrjN,EAAM3gN,QAAU,KAClBmkI,QAAQib,KAAK,gCAAkCuhE,EAAM3gN,OAAS,mIAAuIohP,EAAe,4DAE/MzgC,CACT,IClGAi+M,IAAmB,OKXJ,SAA2B99Z,GACxC,IAKI6ka,EALAhkY,EAAO7gC,EAAI6gC,KACbguN,EAAY7uP,EAAI6uP,UAChBt2O,EAAMvY,EAAIuY,IACVC,EAAMxY,EAAIwY,IACVqmB,EAAS7+B,EAAI6+B,OAEX+mY,EAAU,IAAI/kY,EAAMroB,GACxB,GAAID,EAAM,EACRssZ,EAAUvsZ,KAAKwX,MAAM,IAAI+Q,EAAMtoB,QAC1B,CACL,IAAI2rZ,EAAcD,IAAkBplY,EAAQgC,EAAMroB,GAClDqsZ,EAAUvsZ,KAAKwX,MAAM,IAAI+Q,EAAMqjY,GACjC,CAIA,IAHA,IAAI/0Y,EAAQy2Y,EAAUf,EAClBqE,EAAM5wZ,KAAKisJ,KAAKp1I,EAAQ0/N,GACxBhvC,EAAQ,GACHtgN,EAAIsla,EAAStla,EAAIqma,EAAUsD,EAAK3pa,GAAQ2pa,EAC/CrpN,EAAMjhN,KAAK0Z,KAAK0B,IAAI6mB,EAAMthC,IAM5B,OAJIgZ,GAAO,GAETsnM,EAAM7rM,QAAQ,GAET6rM,CACT,ILbAi+M,IAAmB,OMXJ,SAA2B99Z,GACxC,IAAIia,EAAWja,EAAIia,SACjB40O,EAAY7uP,EAAI6uP,UACdr2O,EAAMF,KAAKisJ,KAAKy/P,IAAQ/pZ,EAAUja,EAAIwY,MAG1C,OADYqvZ,IADFvvZ,KAAKwX,MAAMk0Y,IAAQ/pZ,EAAUja,EAAIuY,MACnBC,EAAKq2O,GAAWhvC,MAC3BxwL,KAAI,SAAUmjQ,GACzB,IAAI5yE,EAAS4yE,GAAQ,EAAI,GAAK,EAC9B,OAAOl6Q,KAAK0B,IAAIw4Q,EAAMv4Q,GAAY2lM,CACpC,GACF,INEAk+M,IAAmB,YFYJ,SAAwB99Z,GACrC,IAAI6uP,EAAY7uP,EAAI6uP,UAClBhwN,EAAS7+B,EAAI6+B,OACf,IAAKA,IAAWA,EAAO3/B,OACrB,MAAO,GAMT,IAJA,IAAIiqa,EAAStqY,EAAOxZ,QAAQzU,MAAK,SAAU4L,EAAG8E,GAC5C,OAAO9E,EAAI8E,CACb,IACIu+L,EAAQ,GACHtgN,EAAI,EAAGA,EAAIsvP,EAAWtvP,IAAK,CAClC,IAAIkd,EAAIld,GAAKsvP,EAAY,GACzBhvC,EAAMjhN,KAAK,IAAeuqa,EAAQ1sZ,GACpC,CACA,OAAOojM,CACT,IE1BAi+M,IAAmB,aOhBJ,SAA4B99Z,GACzC,IAAIuY,EAAMvY,EAAIuY,IACZC,EAAMxY,EAAIwY,IACV8nO,EAAetgP,EAAIsgP,aACnBujL,EAAW7ja,EAAI6ja,SACfC,EAAW9ja,EAAI8ja,SACbjkN,EfVS,SAAkB7/M,GAC/B,IAAIuY,EAAMvY,EAAIuY,IACZC,EAAMxY,EAAIwY,IACVoqN,EAAO5iO,EAAI4iO,KACXisB,EAAY7uP,EAAI6uP,UACdt1O,EAAS,IAAI+rZ,IAKjB,OAJA/rZ,EAAOq/B,OAAO,CAACrgC,EAAKC,IAChBoqN,GACFrpN,EAAOqpN,KAAKisB,GAEPt1O,EAAOsmM,MAAMgvC,EACtB,CeDcu6K,CAASppa,GACrB,OAAK,UAAM6ja,KAAc,UAAMC,GAG3BxjL,EACK,IAAS/nO,EAAKC,EAAK8nO,GAAczgC,MAEnCA,EALEimN,IAAY9la,GAAK,UAAK6/M,IAAQ,UAAKA,GAM9C,ICNA,IAAc,MAAO,KACrB,IAAc,WAAY,KAC1B,IAAc,WAAY,KAC1B,IAAc,SAAU,KACxB,IAAc,MAAO,KACrB,IAAc,MAAO,KACrB,IAAc,OAAQ,KACtB,IAAc,UAAW,KACzB,IAAc,WAAY,KAC1B,IAAc,WAAY,KCnB1B,IAAIwpN,IAAgB,CAAC,EAKjB5gX,IAAe,SAAsBzhD,GACvC,OAAOqia,IAAcria,EAAKiW,cAC5B,EACIqsZ,IAAoB,SAA2Btia,EAAM6tD,GAEvD,GAAIpM,IAAazhD,GACf,MAAM,IAAIs/B,MAAM,mBAAmB10B,OAAO5K,EAAM,eAGlDqia,IAAcria,EAAKiW,eAAiB43C,CACtC,ECVAy0W,IAAkB,QAAS,KAC3BA,IAAkB,UAAW,KAC7BA,IAAkB,WAAY,KAC9BA,IAAkB,QAAS,KAC3BA,IAAkB,OAAQ,sBCqenB,SAAS1lX,IAAcriC,EAAK/E,EAAGpI,GACpC,IAAI9K,EAAIkT,EAAE,GACRjT,EAAIiT,EAAE,GACNsH,EAAItH,EAAE,GAIR,OAHA+E,EAAI,GAAKjY,EAAI8K,EAAE,GAAK7K,EAAI6K,EAAE,GAAK0P,EAAI1P,EAAE,GACrCmN,EAAI,GAAKjY,EAAI8K,EAAE,GAAK7K,EAAI6K,EAAE,GAAK0P,EAAI1P,EAAE,GACrCmN,EAAI,GAAKjY,EAAI8K,EAAE,GAAK7K,EAAI6K,EAAE,GAAK0P,EAAI1P,EAAE,GAC9BmN,CACT,EAwPqB,WACnB,IAnuBIA,EAmuBAlI,GAnuBAkI,EAAM,IAAI,OAAoB,GAC9B,QAAuB6hC,eACzB7hC,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,GAEJA,EAsvBT,CA1BqB,GAlDd,8BCxrBHgoZ,IAA0B,WAC5B,SAASA,EAAWvpa,GAElB3B,KAAK2I,KAAO,aACZ3I,KAAKmra,QAAS,EACdnra,KAAKora,SAAU,EACfpra,KAAKqra,SAAU,EACfrra,KAAKsra,YAAa,EAClBtra,KAAKura,YAAa,EAClB,IAAI7kZ,EAAQ/kB,EAAI+kB,MACdmI,EAAMltB,EAAIktB,IACV1tB,EAAKQ,EAAIwP,OACTA,OAAgB,IAAPhQ,EAAgB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAKA,EACvD+V,EAAKvV,EAAI6pa,aACTA,OAAsB,IAAPt0Z,GAAwBA,EACzClX,KAAK0mB,MAAQA,EACb1mB,KAAK6uB,IAAMA,EACX7uB,KAAKmR,OAASA,EACdnR,KAAKyra,gBAAiB,UAAc,GAAIt6Z,GACxCnR,KAAKwra,aAAeA,CACtB,CAgMA,OA5LAN,EAAWhra,UAAUqkD,QAAU,WAE7BvkD,KAAK69B,OAAS,CACZ5yB,GAAIjL,KAAK0mB,MAAMzb,EAAIjL,KAAK6uB,IAAI5jB,GAAK,EACjCC,GAAIlL,KAAK0mB,MAAMxb,EAAIlL,KAAK6uB,IAAI3jB,GAAK,GAEnClL,KAAK+N,MAAQkM,KAAKoG,IAAIrgB,KAAK6uB,IAAI5jB,EAAIjL,KAAK0mB,MAAMzb,GAC9CjL,KAAKgO,OAASiM,KAAKoG,IAAIrgB,KAAK6uB,IAAI3jB,EAAIlL,KAAK0mB,MAAMxb,EACjD,EAKAgga,EAAWhra,UAAUsF,OAAS,SAAU7D,IACtC,UAAO3B,KAAM2B,GACb3B,KAAKukD,SACP,EACA2mX,EAAWhra,UAAUwra,WAAa,SAAU3yW,EAAS24O,GACnD,IAAIvwS,EACA+V,EAAKlX,KAAK0xS,GACZhrR,EAAQxP,EAAGwP,MACXmI,EAAM3X,EAAG2X,IAKX,OAHI7uB,KAAK2ra,UAAUj6H,KACEhrR,GAAnBvlB,EAAK,CAAC0tB,EAAKnI,IAAmB,GAAImI,EAAM1tB,EAAG,IAEtCulB,EAAQqyC,GAAWlqC,EAAMnI,EAClC,EACAwkZ,EAAWhra,UAAU0ra,UAAY,SAAUzpa,EAAOuvS,GAChD,IAAIvwS,EACA+V,EAAKlX,KAAK0xS,GACZhrR,EAAQxP,EAAGwP,MACXmI,EAAM3X,EAAG2X,IAKX,OAHI7uB,KAAK2ra,UAAUj6H,KACEhrR,GAAnBvlB,EAAK,CAAC0tB,EAAKnI,IAAmB,GAAImI,EAAM1tB,EAAG,KAErCgB,EAAQukB,IAAUmI,EAAMnI,EAClC,EAQAwkZ,EAAWhra,UAAUgR,YAAc,SAAUjG,EAAGC,EAAGgwB,QACrC,IAARA,IACFA,EAAM,GAER,IACIhC,EAAS,CAACjuB,EAAGC,EAAGgwB,GAEpB,OADA,IAAmBhC,EAAQA,EAFdl5B,KAAKmR,QAGX+nB,CACT,EAQAgyY,EAAWhra,UAAUgW,aAAe,SAAUjL,EAAGC,EAAGgwB,QACtC,IAARA,IACFA,EAAM,GAER,IAAI/pB,EAASnR,KAAKmR,OACd06Z,EAAWC,IAAA,GAAY,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI36Z,GACpD+nB,EAAS,CAACjuB,EAAGC,EAAGgwB,GAKpB,OAJI2wY,GAEF,IAAmB3yY,EAAQA,EAAQ2yY,GAE9B3yY,CACT,EAMAgyY,EAAWhra,UAAU2+M,QAAU,SAAU7zM,GACvC,IAAI7J,EAAKnB,KAAK+ra,aAAa/ga,GACzBC,EAAI9J,EAAG8J,EACPC,EAAI/J,EAAG+J,EACLguB,EAASl5B,KAAKkR,YAAYjG,EAAGC,EAAG,GACpC,MAAO,CACLD,EAAGiuB,EAAO,GACVhuB,EAAGguB,EAAO,GAEd,EAMAgyY,EAAWhra,UAAUokB,OAAS,SAAUtZ,GACtC,IAAIkuB,EAASl5B,KAAKkW,aAAalL,EAAMC,EAAGD,EAAME,EAAG,GACjD,OAAOlL,KAAKgsa,YAAY,CACtB/ga,EAAGiuB,EAAO,GACVhuB,EAAGguB,EAAO,IAEd,EAMAgyY,EAAWhra,UAAU+Y,OAAS,SAAUC,GACtC,IAAI/H,EAASnR,KAAKmR,OACd0sB,EAAS79B,KAAK69B,OAIlB,OAHAuuL,IAAA,GAAkBj7M,EAAQA,EAAQ,EAAE0sB,EAAO5yB,GAAI4yB,EAAO3yB,IACtDkhN,IAAA,GAAej7M,EAAQA,EAAQ+H,GAC/BkzM,IAAA,GAAkBj7M,EAAQA,EAAQ,CAAC0sB,EAAO5yB,EAAG4yB,EAAO3yB,IAC7ClL,IACT,EAMAkra,EAAWhra,UAAU+gP,QAAU,SAAUywD,GAMvC,MALY,MAARA,EACF1xS,KAAKsra,YAActra,KAAKsra,WAExBtra,KAAKura,YAAcvra,KAAKura,WAEnBvra,IACT,EAOAkra,EAAWhra,UAAU4Y,MAAQ,SAAU4P,EAAIE,GACzC,IAAIzX,EAASnR,KAAKmR,OACd0sB,EAAS79B,KAAK69B,OAIlB,OAHAuuL,IAAA,GAAkBj7M,EAAQA,EAAQ,EAAE0sB,EAAO5yB,GAAI4yB,EAAO3yB,IACtDkhN,IAAA,GAAcj7M,EAAQA,EAAQ,CAACuX,EAAIE,IACnCwjM,IAAA,GAAkBj7M,EAAQA,EAAQ,CAAC0sB,EAAO5yB,EAAG4yB,EAAO3yB,IAC7ClL,IACT,EAOAkra,EAAWhra,UAAUoY,UAAY,SAAUrN,EAAGC,GAC5C,IAAIiG,EAASnR,KAAKmR,OAElB,OADAi7M,IAAA,GAAkBj7M,EAAQA,EAAQ,CAAClG,EAAGC,IAC/BlL,IACT,EAKAkra,EAAWhra,UAAU+ra,UAAY,WAE/B,OADAjsa,KAAKwra,cAAgBxra,KAAKwra,aACnBxra,IACT,EACAkra,EAAWhra,UAAUgsa,UAAY,WAC/B,OAAOlsa,KAAK69B,MACd,EACAqtY,EAAWhra,UAAUs2H,SAAW,WAC9B,OAAOx2H,KAAK+N,KACd,EACAm9Z,EAAWhra,UAAUisa,UAAY,WAC/B,OAAOnsa,KAAKgO,MACd,EACAk9Z,EAAWhra,UAAUksa,UAAY,WAC/B,OAAOpsa,KAAKguE,MACd,EAKAk9V,EAAWhra,UAAUyra,UAAY,SAAUj6H,GACzC,MAAe,MAARA,EAAc1xS,KAAKsra,WAAatra,KAAKura,UAC9C,EAKAL,EAAWhra,UAAU0V,YAAc,SAAUzE,GAE3CnR,KAAKmR,OAASA,IAAkB,UAAc,GAAInR,KAAKyra,eACzD,EACOP,CACT,CArN8B,GAsN9B,QCtNImB,IAAyB,SAAU3qa,GAErC,SAAS2qa,EAAU1qa,GACjB,IAAIlB,EAAQiB,EAAOE,KAAK5B,KAAM2B,IAAQ3B,KAItC,OAHAS,EAAM0qa,QAAS,EACf1qa,EAAMkI,KAAO,YACblI,EAAM8jD,UACC9jD,CACT,CAuCA,OA9CA,UAAU4ra,EAAW3qa,GAQrB2qa,EAAUnsa,UAAUqkD,QAAU,WAC5B7iD,EAAOxB,UAAUqkD,QAAQ3iD,KAAK5B,MAC9B,IAAI0mB,EAAQ1mB,KAAK0mB,MACbmI,EAAM7uB,KAAK6uB,IACf7uB,KAAKiL,EAAI,CACPyb,MAAOA,EAAMzb,EACb4jB,IAAKA,EAAI5jB,GAEXjL,KAAKkL,EAAI,CACPwb,MAAOA,EAAMxb,EACb2jB,IAAKA,EAAI3jB,EAEb,EACAmha,EAAUnsa,UAAU6ra,aAAe,SAAU/ga,GAC3C,IAAI7J,EACA8J,EAAID,EAAMC,EACZC,EAAIF,EAAME,EAKZ,OAHIlL,KAAKwra,eACMvga,GAAb9J,EAAK,CAAC+J,EAAGD,IAAW,GAAIC,EAAI/J,EAAG,IAE1B,CACL8J,EAAGjL,KAAK0ra,WAAWzga,EAAG,KACtBC,EAAGlL,KAAK0ra,WAAWxga,EAAG,KAE1B,EACAmha,EAAUnsa,UAAU8ra,YAAc,SAAUhha,GAC1C,IAAI7J,EACA8J,EAAIjL,KAAK4ra,UAAU5ga,EAAMC,EAAG,KAC5BC,EAAIlL,KAAK4ra,UAAU5ga,EAAME,EAAG,KAIhC,OAHIlL,KAAKwra,eACMvga,GAAb9J,EAAK,CAAC+J,EAAGD,IAAW,GAAIC,EAAI/J,EAAG,IAE1B,CACL8J,EAAGA,EACHC,EAAGA,EAEP,EACOmha,CACT,CAhD6B,CAgD3B,KACF,qBChDIC,IAAqB,SAAU5qa,GAEjC,SAAS4qa,EAAM3qa,GACb,IAAIlB,EAAQiB,EAAOE,KAAK5B,KAAM2B,IAAQ3B,KACtCS,EAAM2qa,SAAU,EAChB3qa,EAAMkI,KAAO,QACb,IAAIxH,EAAKQ,EAAIogB,WACXA,OAAoB,IAAP5gB,EAAgB,KAAO8Y,KAAK+B,GAAK7a,EAC9C+V,EAAKvV,EAAIqgB,SACTA,OAAkB,IAAP9K,EAAgB,KAAO+C,KAAK+B,GAAK9E,EAC5CC,EAAKxV,EAAImoG,YACTA,OAAqB,IAAP3yF,EAAgB,EAAIA,EAClC62D,EAASrsE,EAAIqsE,OAMf,OALAvtE,EAAMshB,WAAaA,EACnBthB,EAAMuhB,SAAWA,EACjBvhB,EAAMqpG,YAAcA,EACpBrpG,EAAMutE,OAASA,EACfvtE,EAAM8jD,UACC9jD,CACT,CAuEA,OAzFA,UAAU6ra,EAAO5qa,GAmBjB4qa,EAAMpsa,UAAUqkD,QAAU,WACxB7iD,EAAOxB,UAAUqkD,QAAQ3iD,KAAK5B,MAC9B,IAAIgI,GAAShI,KAAKgiB,SAAWhiB,KAAK+hB,aAAe,EAAI9H,KAAK+B,IAAM,EAC5DuwZ,EAAYtyZ,KAAKC,IAAIla,KAAK+N,MAAO/N,KAAKgO,QAAU,EAChDhO,KAAKguE,QAAUhuE,KAAKguE,QAAU,GAAKhuE,KAAKguE,QAAU,IACpDu+V,GAAwBvsa,KAAKguE,QAE/BhuE,KAAK+lB,EAAI9L,KAAKwX,MAAM86Y,GAAa,EAAIvsa,KAAK8pG,aAAe9hG,GACzDhI,KAAKme,EAAIne,KAAK+lB,GAAe,EAAV9L,KAAK+B,IACxBhc,KAAKiL,EAAI,CACPyb,MAAO1mB,KAAK+hB,WACZ8M,IAAK7uB,KAAKgiB,UAEZhiB,KAAKkL,EAAI,CACPwb,MAAO1mB,KAAK8pG,YAAcyiU,EAC1B19Y,IAAK7uB,KAAK8pG,YAAcyiU,EAAqB,IAATvsa,KAAK+lB,EAE7C,EAMAumZ,EAAMpsa,UAAU6ra,aAAe,SAAU/ga,GACvC,IAAI7J,EACA8J,EAAID,EAAMC,EACZC,EAAIF,EAAME,EACRlL,KAAKwra,eACMvga,GAAb9J,EAAK,CAAC+J,EAAGD,IAAW,GAAIC,EAAI/J,EAAG,IAEjC,IAAIqra,EAAMxsa,KAAK0ra,WAAWzga,EAAG,KACzBiU,EAAIlf,KAAKme,EAAIquZ,EACbC,EAAOzsa,KAAK0ra,WAAWxga,EAAG,KAC9B,MAAO,CACLD,EAAGjL,KAAK69B,OAAO5yB,EAAIgP,KAAKkC,IAAIqwZ,IAAQttZ,EAAIutZ,GACxCvha,EAAGlL,KAAK69B,OAAO3yB,EAAI+O,KAAKoC,IAAImwZ,IAAQttZ,EAAIutZ,GAE5C,EAMAH,EAAMpsa,UAAU8ra,YAAc,SAAUhha,GACtC,IAAI7J,EACA4kB,EAAI/lB,KAAK+lB,EAAI/lB,KAAKkL,EAAEwb,MACpBzU,EAAI6iB,IAAA,GAAc,CAAC,EAAG,GAAI,CAAC9pB,EAAMC,EAAGD,EAAME,GAAI,CAAClL,KAAK69B,OAAO5yB,EAAGjL,KAAK69B,OAAO3yB,IAC1Esha,EAAMpgN,IAAA,GAAYn6M,EAAG,CAAC,EAAG,IAAI,GAC7BqwX,EAAOkqC,EAAMxsa,KAAKme,EAClB2W,IAAA,GAAY7iB,GAAKqwX,IAEnBA,EAAOxtW,IAAA,GAAY7iB,IAGrBu6Z,EAAM,EADMvyZ,KAAKwX,OAAOqD,IAAA,GAAY7iB,GAAKqwX,GAAQv8W,GAC/B9L,KAAK+B,GAAKwwZ,EAC5B,IAAIttZ,EAAIlf,KAAKme,EAAIquZ,EACbC,EAAO33Y,IAAA,GAAY7iB,GAAKiN,EAC5ButZ,GAAO,UAAcA,EAAM,GAAK,EAAIA,EACpC,IAAIxha,EAAIjL,KAAK4ra,UAAUY,EAAK,KACxBtha,EAAIlL,KAAK4ra,UAAUa,EAAM,KAM7B,OALAxha,GAAI,UAAcA,EAAG,GAAK,EAAIA,EAC9BC,GAAI,UAAcA,EAAG,GAAK,EAAIA,EAC1BlL,KAAKwra,eACMvga,GAAb9J,EAAK,CAAC+J,EAAGD,IAAW,GAAIC,EAAI/J,EAAG,IAE1B,CACL8J,EAAGA,EACHC,EAAGA,EAEP,EACOoha,CACT,CA3FyB,CA2FvB,KACF,QC/FII,IAAqB,SAAUhra,GAEjC,SAASgra,EAAM/qa,GACb,IAAIlB,EAAQiB,EAAOE,KAAK5B,KAAM2B,IAAQ3B,KACtCS,EAAM4qa,SAAU,EAChB5qa,EAAMkI,KAAO,QACb,IAAIxH,EAAKQ,EAAIogB,WACXA,OAAoB,IAAP5gB,GAAiB8Y,KAAK+B,GAAK,EAAI7a,EAC5C+V,EAAKvV,EAAIqgB,SACTA,OAAkB,IAAP9K,EAA0B,EAAV+C,KAAK+B,GAAS,EAAI9E,EAC7CC,EAAKxV,EAAImoG,YACTA,OAAqB,IAAP3yF,EAAgB,EAAIA,EAClC62D,EAASrsE,EAAIqsE,OAMf,OALAvtE,EAAMshB,WAAaA,EACnBthB,EAAMuhB,SAAWA,EACjBvhB,EAAMqpG,YAAcA,EACpBrpG,EAAMutE,OAASA,EACfvtE,EAAM8jD,UACC9jD,CACT,CAwHA,OA1IA,UAAUisa,EAAOhra,GAmBjBgra,EAAMxsa,UAAUqkD,QAAU,WAExB,IADA7iD,EAAOxB,UAAUqkD,QAAQ3iD,KAAK5B,MACvBA,KAAKgiB,SAAWhiB,KAAK+hB,YAC1B/hB,KAAKgiB,UAAsB,EAAV/H,KAAK+B,GAExB,IAKIuwZ,EALAI,EAAS3sa,KAAK4sa,YACdC,EAAWF,EAAOx8Z,KAAOw8Z,EAAOz8Z,KAChC48Z,EAAYH,EAAOt8Z,KAAOs8Z,EAAOv8Z,KACjCpB,EAAOiL,KAAKoG,IAAIssZ,EAAOz8Z,MAAQ28Z,EAC/B59Z,EAAMgL,KAAKoG,IAAIssZ,EAAOv8Z,MAAQ08Z,EAE9B9sa,KAAKgO,OAAS8+Z,EAAY9sa,KAAK+N,MAAQ8+Z,GAEzCN,EAAYvsa,KAAK+N,MAAQ8+Z,EACzB7sa,KAAK+sa,aAAe,CAClB9ha,EAAGjL,KAAK69B,OAAO5yB,GAAK,GAAM+D,GAAQhP,KAAK+N,MACvC7C,EAAGlL,KAAK69B,OAAO3yB,GAAK,GAAM+D,GAAOs9Z,EAAYO,KAI/CP,EAAYvsa,KAAKgO,OAAS8+Z,EAC1B9sa,KAAK+sa,aAAe,CAClB9ha,EAAGjL,KAAK69B,OAAO5yB,GAAK,GAAM+D,GAAQu9Z,EAAYM,EAC9C3ha,EAAGlL,KAAK69B,OAAO3yB,GAAK,GAAM+D,GAAOjP,KAAKgO,SAG1ChO,KAAKgta,YAAchta,KAAKguE,OACnBhuE,KAAKguE,OAEChuE,KAAKguE,OAAS,GAAKhuE,KAAKguE,QAAU,EAC3ChuE,KAAKgta,YAAcT,EAAYvsa,KAAKguE,QAC3BhuE,KAAKguE,QAAU,GAAKhuE,KAAKguE,OAASu+V,KAC3Cvsa,KAAKgta,YAAcT,GAJnBvsa,KAAKgta,YAAcT,EAMrBvsa,KAAKiL,EAAI,CACPyb,MAAO1mB,KAAK+hB,WACZ8M,IAAK7uB,KAAKgiB,UAEZhiB,KAAKkL,EAAI,CACPwb,MAAO1mB,KAAK8pG,YAAc9pG,KAAKgta,YAC/Bn+Y,IAAK7uB,KAAKgta,YAEd,EACAN,EAAMxsa,UAAUksa,UAAY,WAC1B,OAAOpsa,KAAKgta,WACd,EACAN,EAAMxsa,UAAU6ra,aAAe,SAAU/ga,GACvC,IAAI7J,EACA08B,EAAS79B,KAAKksa,YACdjha,EAAID,EAAMC,EACZC,EAAIF,EAAME,EAMZ,OALIlL,KAAKwra,eACMvga,GAAb9J,EAAK,CAAC+J,EAAGD,IAAW,GAAIC,EAAI/J,EAAG,IAEjC8J,EAAIjL,KAAK0ra,WAAWzga,EAAG,KACvBC,EAAIlL,KAAK0ra,WAAWxga,EAAG,KAChB,CACLD,EAAG4yB,EAAO5yB,EAAIgP,KAAKkC,IAAIlR,GAAKC,EAC5BA,EAAG2yB,EAAO3yB,EAAI+O,KAAKoC,IAAIpR,GAAKC,EAEhC,EACAwha,EAAMxsa,UAAU8ra,YAAc,SAAUhha,GACtC,IAAI7J,EACA08B,EAAS79B,KAAKksa,YACde,EAAS,CAACjia,EAAMC,EAAI4yB,EAAO5yB,EAAGD,EAAME,EAAI2yB,EAAO3yB,GAEjD6W,EADO/hB,KACS+hB,WAChBC,EAFOhiB,KAEOgiB,SACZhiB,KAAK2ra,UAAU,OACY5pZ,GAA7B5gB,EAAK,CAAC6gB,EAAUD,IAA6B,GAAIC,EAAW7gB,EAAG,IAEjE,IAAI4U,EAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACjCq2M,IAAA,GAAer2M,EAAGA,EAAGgM,GACrB,IAAImrZ,EAAU,CAAC,EAAG,EAAG,GACrB,IAAmBA,EAASA,EAASn3Z,GACrC,IAAIo3Z,EAAU,CAACD,EAAQ,GAAIA,EAAQ,IAC/BxlZ,EAAQ0kM,IAAA,GAAY+gN,EAASF,EAAQjrZ,EAAWD,IAChD,UAAc2F,EAAiB,EAAVzN,KAAK+B,MAC5B0L,EAAQ,GAEV,IAAIsmD,EAASl5C,IAAA,GAAYm4Y,GACrBG,EAAW1lZ,GAAS1F,EAAWD,GACnCqrZ,EAAWprZ,EAAWD,EAAa,EAAIqrZ,GAAYA,EACnD,IAAIC,EAAWrta,KAAK4ra,UAAU59V,EAAQ,KAClC16D,EAAM,CACRrI,EAAG,EACHC,EAAG,GAIL,OAFAoI,EAAIrI,EAAIjL,KAAKwra,aAAe6B,EAAWD,EACvC95Z,EAAIpI,EAAIlL,KAAKwra,aAAe4B,EAAWC,EAChC/5Z,CACT,EACAo5Z,EAAMxsa,UAAUgsa,UAAY,WAC1B,OAAOlsa,KAAK+sa,YACd,EACAL,EAAMxsa,UAAU0sa,UAAY,WAC1B,IAAI7qZ,EAAa/hB,KAAK+hB,WAClBC,EAAWhiB,KAAKgiB,SACpB,GAAI/H,KAAKoG,IAAI2B,EAAWD,IAAyB,EAAV9H,KAAK+B,GAC1C,MAAO,CACL9L,MAAO,EACPC,KAAM,EACNC,MAAO,EACPC,KAAM,GAKV,IAFA,IAAIsoB,EAAK,CAAC,EAAG1e,KAAKkC,IAAI4F,GAAa9H,KAAKkC,IAAI6F,IACxC6W,EAAK,CAAC,EAAG5e,KAAKoC,IAAI0F,GAAa9H,KAAKoC,IAAI2F,IACnC9gB,EAAI+Y,KAAKC,IAAI6H,EAAYC,GAAW9gB,EAAI+Y,KAAKE,IAAI4H,EAAYC,GAAW9gB,GAAK+Y,KAAK+B,GAAK,GAC9F2c,EAAGp4B,KAAK0Z,KAAKkC,IAAIjb,IACjB23B,EAAGt4B,KAAK0Z,KAAKoC,IAAInb,IAEnB,MAAO,CACLgP,KAAM+J,KAAKC,IAAI7Y,MAAM4Y,KAAM0e,GAC3BxoB,KAAM8J,KAAKE,IAAI9Y,MAAM4Y,KAAM0e,GAC3BvoB,KAAM6J,KAAKC,IAAI7Y,MAAM4Y,KAAM4e,GAC3BxoB,KAAM4J,KAAKE,IAAI9Y,MAAM4Y,KAAM4e,GAE/B,EACO6zY,CACT,CA5IyB,CA4IvB,KACF,QChJIY,IAAiB,CAAC,EAaXC,IAAqB,SAA4B5ka,EAAM6tD,GAEhE82W,IAAe3ka,EAAKiW,eAAiB43C,CACvC,ECVO,SAASg3W,IAAoB97Z,EAAOjH,EAAWgja,GACpD,IAAI1ia,EAAQ,IAAI,UAAWN,EAAWgja,GACtC1ia,EAAMrC,OAASgJ,EACf3G,EAAMM,gBAAgB9K,KAAKmR,GAC3BA,EAAM1E,eAAevC,EAAWM,GAGhC,IAFA,IAAI6G,EAASF,EAAM3E,YAEZ6E,GAELA,EAAO5E,eAAevC,EAAWM,GACjCA,EAAMM,gBAAgB9K,KAAKqR,GAC3BA,EAASA,EAAO7E,WAEpB,CCfAwga,IAAmB,OAAQ,KAC3BA,IAAmB,YAAa,KAChCA,IAAmB,QAAS,KAC5BA,IAAmB,QAAS,KCP5B,IAAIG,IAAiB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACvC,SAASC,IAAiB3ia,EAAO0c,EAAOvW,GAI7C,YAHe,IAAXA,IACFA,EAASu8Z,KAENhmZ,EAIG0kM,IAAA,GAAcj7M,EAAQ,CAAC,CAAC,KAAMnG,EAAMC,GAAID,EAAME,GAAI,CAAC,IAAKwc,GAAQ,CAAC,IAAK1c,EAAMC,EAAGD,EAAME,KAFpF,IAIX,CACO,SAAS0ia,IAAqB5ia,EAAO7D,GAC1C,OAAK6D,EAAMC,GAAMD,EAAME,EAIhBkhN,IAAA,GAAcjlN,GAAiBuma,IAAgB,CAAC,CAAC,IAAK1ia,EAAMC,EAAGD,EAAME,KAFnE,IAGX,CASA,SAASmZ,IAAalT,EAAQc,GAC5B,IAAIiR,EAAM,CAAC,EAAG,GAEd,OADA4R,IAAA,GAAmB5R,EAAKjR,EAAGd,GACpB+R,CACT,CAqBO,SAAS2qZ,IAAYpoa,EAAOwT,EAAQhO,EAAGC,GAC5C,GAAI+N,EAAQ,CACV,IAAI9H,EAASw8Z,IAAiB,CAC5B1ia,EAAGA,EACHC,EAAGA,GACF+N,EAAQxT,EAAMoQ,aACjBpQ,EAAMqQ,UAAU3E,EAClB,CACF,CACO,SAAS28Z,IAAeroa,EAAOwF,EAAGC,GACvC,IAAI6ia,EAAkBH,IAAqB,CACzC3ia,EAAGA,EACHC,EAAGA,IAELzF,EAAMW,KAAK,SAAU2na,EACvB,CCnEO,SAASC,IAAc5zV,GAC5B,IAAInrE,EAAM,EACND,EAAO,EACP2D,EAAQ,EACR8wE,EAAS,EASb,OARI,UAASrJ,GACXnrE,EAAMD,EAAO2D,EAAQ8wE,EAASrJ,GACrB,UAAQA,KACjBnrE,EAAMmrE,EAAQ,GACdznE,GAAS,UAAMynE,EAAQ,IAAmBA,EAAQ,GAArBA,EAAQ,GACrCqJ,GAAU,UAAMrJ,EAAQ,IAAmBA,EAAQ,GAArBA,EAAQ,GACtCprE,GAAQ,UAAMorE,EAAQ,IAAmBznE,EAAbynE,EAAQ,IAE/B,CAACnrE,EAAK0D,EAAO8wE,EAAQz0E,EAC9B,CACO,SAASi/Z,IAASjla,GAGvB,IAFA,IAAI6G,EAAW7G,EAAU42L,WAEhB1+L,EADI2O,EAAShP,OACA,EAAGK,GAAK,EAAGA,IAC/B8H,EAAUqG,YAAYQ,EAAS3O,GAEnC,CAIO,SAASgta,IAAaC,GAC3B,IAAIznZ,EAAQynZ,EAAOznZ,MACjBmI,EAAMs/Y,EAAOt/Y,IACX3e,EAAO+J,KAAKC,IAAIwM,EAAMzb,EAAG4jB,EAAI5jB,GAC7BmF,EAAO6J,KAAKC,IAAIwM,EAAMxb,EAAG2jB,EAAI3jB,GAC7BiF,EAAO8J,KAAKE,IAAIuM,EAAMzb,EAAG4jB,EAAI5jB,GAC7BoF,EAAO4J,KAAKE,IAAIuM,EAAMxb,EAAG2jB,EAAI3jB,GACjC,MAAO,CACLD,EAAGiF,EACHhF,EAAGkF,EACHF,KAAMA,EACNE,KAAMA,EACND,KAAMA,EACNE,KAAMA,EACNtC,MAAOoC,EAAOD,EACdlC,OAAQqC,EAAOD,EAEnB,CAuBO,SAASg+Z,IAAWnja,EAAGC,EAAG6C,EAAOC,GACtC,IAAImC,EAAOlF,EAAI8C,EACXsC,EAAOnF,EAAI8C,EACf,MAAO,CACL/C,EAAGA,EACHC,EAAGA,EACH6C,MAAOA,EACPC,OAAQA,EACRkC,KAAMjF,EACNmF,KAAMlF,EAKNiF,KAAM+R,MAAM/R,GAAQ,EAAIA,EACxBE,KAAM6R,MAAM7R,GAAQ,EAAIA,EAE5B,CACO,SAASg+Z,IAAkBn0Z,EAAKC,EAAK4+C,GAC1C,OAAQ,EAAIA,GAAW7+C,EAAMC,EAAM4+C,CACrC,CACO,SAASu1W,IAAezwY,EAAQmwC,EAAQtmD,GAC7C,MAAO,CACLzc,EAAG4yB,EAAO5yB,EAAIgP,KAAKkC,IAAIuL,GAASsmD,EAChC9iE,EAAG2yB,EAAO3yB,EAAI+O,KAAKoC,IAAIqL,GAASsmD,EAEpC,CAMO,IASIugW,IAAO,SAActja,EAAGC,EAAGhH,GAIpC,YAHU,IAANA,IACFA,EAAI+V,KAAK0B,IAAIsG,OAAO+lZ,QAAS,KAExB,CAAC/8Z,EAAGC,GAAG/F,SAASZ,KAAY0V,KAAKoG,IAAIpV,KAAOgP,KAAKoG,IAAInV,GAAK+O,KAAKoG,IAAIpV,EAAIC,GAAKhH,CACrF,EAeO,SAASsqa,IAAgB7+Z,GAC9B,IAEIb,EAjBwBmxB,EAAMC,EAC9BhwB,EACAE,EAaAiG,EAAY1G,EAAQuF,UACpBu5Z,EAAWp4Z,GAAaA,EAAUpG,UAEtC,GAAKN,EAAQC,UAGN,CACL,IAAI8+Z,EAASnqa,IACToqa,GAAUpqa,IACVqqa,EAASrqa,IACTsqa,GAAUtqa,IACVsL,EAAWF,EAAQW,cACnBT,EAAShP,OAAS,GACpB,UAAKgP,GAAU,SAAUC,GACvB,GAAIA,EAAM9N,IAAI,WAAY,CAExB,GAAI8N,EAAMF,WAA8C,IAAjCE,EAAM9N,IAAI,YAAYnB,OAC3C,OAAO,EAET,IAAI0gB,EAAMitZ,IAAgB1+Z,GAEtBq4F,EAAUr4F,EAAMmG,cAAc,CAACsL,EAAIrR,KAAMqR,EAAInR,KAAM,IACnDk4F,EAAax4F,EAAMmG,cAAc,CAACsL,EAAIrR,KAAMqR,EAAIlR,KAAM,IACtD+3F,EAAWt4F,EAAMmG,cAAc,CAACsL,EAAIpR,KAAMoR,EAAInR,KAAM,IACpDi4F,EAAcv4F,EAAMmG,cAAc,CAACsL,EAAIpR,KAAMoR,EAAIlR,KAAM,IAEvDy+Z,EAAU70Z,KAAKC,IAAIiuF,EAAQ,GAAIG,EAAW,GAAIF,EAAS,GAAIC,EAAY,IACvE0mU,EAAU90Z,KAAKE,IAAIguF,EAAQ,GAAIG,EAAW,GAAIF,EAAS,GAAIC,EAAY,IACvE2mU,EAAU/0Z,KAAKC,IAAIiuF,EAAQ,GAAIG,EAAW,GAAIF,EAAS,GAAIC,EAAY,IACvE4mU,EAAUh1Z,KAAKE,IAAIguF,EAAQ,GAAIG,EAAW,GAAIF,EAAS,GAAIC,EAAY,IACvEymU,EAAUJ,IACZA,EAASI,GAEPC,EAAUJ,IACZA,EAASI,GAEPC,EAAUJ,IACZA,EAASI,GAEPC,EAAUJ,IACZA,EAASI,EAEb,CACF,KAEAP,EAAS,EACTC,EAAS,EACTC,EAAS,EACTC,EAAS,GAEX//Z,EAAOs/Z,IAAWM,EAAQE,EAAQD,EAASD,EAAQG,EAASD,EAC9D,MA9CE9/Z,EAAOa,EAAQM,UA+CjB,OAAIw+Z,GAnEwBxuY,EAoELnxB,EApEWoxB,EAoELuuY,EAnEzBv+Z,EAAO+J,KAAKE,IAAI8lB,EAAK/vB,KAAMgwB,EAAKhwB,MAChCE,EAAO6J,KAAKE,IAAI8lB,EAAK7vB,KAAM8vB,EAAK9vB,MAG7Bg+Z,IAAWl+Z,EAAME,EAFb6J,KAAKC,IAAI+lB,EAAK9vB,KAAM+vB,EAAK/vB,MAECD,EAD1B+J,KAAKC,IAAI+lB,EAAK5vB,KAAM6vB,EAAK7vB,MACcD,IAiEzCtB,CAEX,CAkBO,SAASoga,IAAKhnW,GACnB,OAAOA,EAAS,IAClB,CACO,SAASinW,IAAazoZ,EAAOmI,EAAKs8B,EAAUg4B,GACjD,IAlHuB13D,EAAIhC,EACvB7c,EACAC,EAiHAuia,EAAgBjsV,GAnHG13D,EAkHG/E,EAjHtB9Z,GADuB6c,EAkHMoF,GAjHrB5jB,EAAIwgB,EAAGxgB,EACf4B,EAAK4c,EAAGve,EAAIugB,EAAGvgB,EACZ+O,KAAK2C,KAAKhQ,EAAKA,EAAKC,EAAKA,IAiH5BksD,EAAU,EAMd,MALiB,UAAb5N,EACF4N,EAAU,EAAIq2W,EACQ,QAAbjkX,IACT4N,EAAU,EAAIq2W,GAET,CACLnka,EAAGoja,IAAkB3nZ,EAAMzb,EAAG4jB,EAAI5jB,EAAG8tD,GACrC7tD,EAAGmja,IAAkB3nZ,EAAMxb,EAAG2jB,EAAI3jB,EAAG6tD,GAEzC,CCxNA,IAAIs2W,IAAqB,CACvBC,KAAM,GACNtka,MAAO,CAAC,IAAK,KACbmja,OAAQ,CAAC,QAAS,OAClBztZ,OAAQ,CAAC,UACTD,OAAQ,CAAC,SAAU,SAAU,aAAc,aAEzC6/C,IAAyB,SAAU5+D,GAErC,SAAS4+D,EAAU3+D,GACjB,IAAIlB,EAAQiB,EAAOE,KAAK5B,KAAM2B,IAAQ3B,KAEtC,OADAS,EAAMk/Z,UACCl/Z,CACT,CA4IA,OAjJA,UAAU6/D,EAAW5+D,GAWrB4+D,EAAUpgE,UAAU6B,cAAgB,WAClC,MAAO,CACL2R,GAAI,GACJzR,KAAM,GACN0G,KAAM,GACN4ma,aAAc,OACdhha,QAAS,EACTE,QAAS,EACTqI,SAAS,EACTtC,SAAS,EACTg7Z,kBAAkB,EAClBC,cAAe,CACbC,OAAQ,KACRlqa,OAAQ,CACNO,SAAU,IACVC,OAAQ,iBAEVwzQ,MAAO,CACLzzQ,SAAU,IACVC,OAAQ,iBAEV2pa,MAAO,CACL5pa,SAAU,IACVC,OAAQ,eAGZlF,OAAQ,KACRgB,WAAY,CAAC,EACbyS,SAAS,EAEb,EAOA+rD,EAAUpgE,UAAUqP,MAAQ,WAAa,EAKzC+wD,EAAUpgE,UAAUsF,OAAS,SAAU7D,GACrC,IAAIlB,EAAQT,KACR8B,EAAa9B,KAAKgC,IAAI,eAAiB,CAAC,GAC5C,UAAKL,GAAK,SAAUQ,EAAOF,GACzB,IACI2ta,EAASzta,EADG1B,EAAMuB,IAAIC,KAERE,KAEZ,UAASA,IAAUL,EAAWG,KAEhC2ta,GAAS,UAAQ,CAAC,EAAG9ta,EAAWG,GAAOE,IAEzC1B,EAAMyB,IAAID,EAAM2ta,GAEpB,IACA5va,KAAK6va,YAAYlua,GACjB3B,KAAK8va,YAAYnua,EACnB,EAEA2+D,EAAUpgE,UAAU2va,YAAc,SAAUlua,GAAM,EAClD2+D,EAAUpgE,UAAU4va,YAAc,SAAUnua,IAEtC,UAAOA,EAAK,aACVA,EAAI4S,QACNvU,KAAKsV,OAELtV,KAAKuV,SAIL,UAAO5T,EAAK,YACd3B,KAAK+va,WAAWpua,EAAI6S,QAExB,EACA8rD,EAAUpgE,UAAU8va,cAAgB,WAClC,OAAOhwa,KAAKiQ,SACd,EAEAqwD,EAAUpgE,UAAU+va,gBAAkB,WACpC,OAAOjwa,KAAKgC,IAAI,eAClB,EACAs+D,EAAUpgE,UAAU43L,UAAY,WAC9B,MAAO,CACLvpL,QAASvO,KAAKgC,IAAI,WAClByM,QAASzO,KAAKgC,IAAI,WAEtB,EAEAs+D,EAAUpgE,UAAUgwa,UAAY,SAAU3ha,EAASE,GACjDzO,KAAKwF,OAAO,CACV+I,QAASA,EACTE,QAASA,GAEb,EACA6xD,EAAUpgE,UAAUiwa,YAAc,SAAUxua,GAC1C,IAAIgsQ,GAAW,UAAS,CAAC,EAAGhsQ,GAC5B3B,KAAKwF,OAAOmoQ,EACd,EAEArtM,EAAUpgE,UAAUkwa,YAAc,WAChC,IAAI3va,EAAQT,KACR2tQ,EAAW,CAAC,EACZ4hK,EAAevva,KAAKgC,IAAI,gBACxB49H,EAASyvS,IAAmBE,GAIhC,OAHA,UAAK3vS,GAAQ,SAAUC,GACrB8tI,EAAS9tI,GAASp/H,EAAMuB,IAAI69H,EAC9B,IACO8tI,CACT,EACArtM,EAAUpgE,UAAUmsI,OAAS,WAC3B,OAAO,CACT,EACA/rE,EAAUpgE,UAAUmwa,SAAW,WAC7B,OAAO,CACT,EAKA/vW,EAAUpgE,UAAUoK,KAAO,WAAa,EAExCg2D,EAAUpgE,UAAUy/Z,QAAU,WAC5B,IAAIl/Z,EAAQT,KACR8B,EAAa9B,KAAKgC,IAAI,eAC1B,UAAKF,GAAY,SAAUK,EAAOF,GAChC,IAAIN,EAAMlB,EAAMuB,IAAIC,GACpB,IAAI,UAASN,GAAM,CACjB,IAAIiua,GAAS,UAAQ,CAAC,EAAGzta,EAAOR,GAChClB,EAAMyB,IAAID,EAAM2ta,EAClB,CACF,GACF,EACOtvW,CACT,CAnJ6B,CAmJ3B,IAAA7+D,MACF,QCxJI6ua,IAAgB,gBAChBC,IAAkB,CAAC,UAAW,MAAO,kBACrCC,IAA2B,CAAC,YAAa,QAAS,YAAa,aAAc,aAAc,aAC3FC,IAA8B,SAAU/ua,GAE1C,SAAS+ua,IACP,OAAkB,OAAX/ua,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CA2eA,OA9eA,UAAUywa,EAAgB/ua,GAI1B+ua,EAAevwa,UAAU6B,cAAgB,WACvC,IAAIJ,EAAMD,EAAOxB,UAAU6B,cAAcH,KAAK5B,MAC9C,OAAO,WAAS,UAAS,CAAC,EAAG2B,GAAM,CACjCqH,UAAW,KAKX0na,UAAW,CAAC,EACZh/Z,MAAO,KACP8C,SAAS,EAKTm8Z,YAAY,EAKZC,YAAY,EAKZC,QAAQ,GAEZ,EACAJ,EAAevwa,UAAUiT,OAAS,WAChCnT,KAAKuP,QACOvP,KAAKgC,IAAI,SACfmR,QACR,EACAs9Z,EAAevwa,UAAUqP,MAAQ,WACnBvP,KAAKgC,IAAI,SACfuN,QACNvP,KAAKkC,IAAI,YAAa,CAAC,GACvBlC,KAAK8wa,sBACL9wa,KAAKkC,IAAI,UAAU,EACrB,EACAuua,EAAevwa,UAAU6wa,sBAAwB,SAAUr9Z,GACzD,IAAIhC,EAAQ1R,KAAKyN,eAAeiG,GAEhC,OADWhC,GAASA,EAAM1P,IAAI,YAEhC,EACAyua,EAAevwa,UAAUuN,eAAiB,SAAUiG,GAClD,OAAO1T,KAAKgC,IAAI,aAAa0R,EAC/B,EACA+8Z,EAAevwa,UAAU8wa,oBAAsB,SAAUC,GACvD,IAAIv9Z,EAAK1T,KAAKkxa,aAAaD,GAC3B,OAAOjxa,KAAKyN,eAAeiG,EAC7B,EACA+8Z,EAAevwa,UAAUixa,kBAAoB,SAAUlva,GACrD,IAAIqR,EAAM,GAMV,OALA,UAAKtT,KAAKgC,IAAI,cAAc,SAAU+iF,GAChCA,EAAK/iF,IAAI,UAAYC,GACvBqR,EAAI/S,KAAKwkF,EAEb,IACOzxE,CACT,EACAm9Z,EAAevwa,UAAU0mF,aAAe,WACtC,OAAO5mF,KAAKgC,IAAI,YAClB,EACAyua,EAAevwa,UAAU2va,YAAc,SAAUlua,GAG/C3B,KAAKoxa,kBACDpxa,KAAKgC,IAAI,qBACXhC,KAAKgrE,QAET,EACAylW,EAAevwa,UAAU8qE,OAAS,WAChC,IAAIqmW,EAAiBrxa,KAAKgC,IAAI,kBACzBqva,IACHA,EAAiBrxa,KAAKoxa,mBAExB,IAAI1/Z,EAAQ1R,KAAKgC,IAAI,SACrBhC,KAAKsxa,eAAeD,EAAgB3/Z,GACpC1R,KAAKuxa,iBACLvxa,KAAKwxa,cACAxxa,KAAKgC,IAAI,kBACZhC,KAAKyxa,YACLzxa,KAAKkC,IAAI,gBAAgB,IAE3BlC,KAAKkC,IAAI,UAAU,EACrB,EACAuua,EAAevwa,UAAUoV,KAAO,WAClBtV,KAAKgC,IAAI,SACfsT,OACNtV,KAAKkC,IAAI,WAAW,EACtB,EACAuua,EAAevwa,UAAUqV,KAAO,WAClBvV,KAAKgC,IAAI,SACfuT,OACNvV,KAAKkC,IAAI,WAAW,EACtB,EACAuua,EAAevwa,UAAU6va,WAAa,SAAUv7Z,GAClCxU,KAAKgC,IAAI,SACfE,IAAI,UAAWsS,GACrBxU,KAAKkC,IAAI,UAAWsS,EACtB,EACAi8Z,EAAevwa,UAAUkC,QAAU,WACjCpC,KAAK0xa,cACL1xa,KAAKmT,SACLzR,EAAOxB,UAAUkC,QAAQR,KAAK5B,KAChC,EACAywa,EAAevwa,UAAU+P,QAAU,WACjC,OAAOjQ,KAAKgC,IAAI,SAAS4O,eAC3B,EACA6/Z,EAAevwa,UAAU8va,cAAgB,WACvC,IAAIt+Z,EAAQ1R,KAAKgC,IAAI,SAEjB8M,EAAO9O,KAAK2xa,qBACZxga,EAASO,EAAMV,iBAInB,OAHIG,IACFrC,EHjGC,SAA0BqC,EAAQrC,GACvC,IAAI+K,EAAUwK,IAAalT,EAAQ,CAACrC,EAAKoB,KAAMpB,EAAKsB,OAChD0J,EAAWuK,IAAalT,EAAQ,CAACrC,EAAKqB,KAAMrB,EAAKsB,OACjD2J,EAAasK,IAAalT,EAAQ,CAACrC,EAAKoB,KAAMpB,EAAKuB,OACnD2J,EAAcqK,IAAalT,EAAQ,CAACrC,EAAKqB,KAAMrB,EAAKuB,OACpDH,EAAO+J,KAAKC,IAAIL,EAAQ,GAAIC,EAAS,GAAIC,EAAW,GAAIC,EAAY,IACpE7J,EAAO8J,KAAKE,IAAIN,EAAQ,GAAIC,EAAS,GAAIC,EAAW,GAAIC,EAAY,IACpE5J,EAAO6J,KAAKC,IAAIL,EAAQ,GAAIC,EAAS,GAAIC,EAAW,GAAIC,EAAY,IACpE3J,EAAO4J,KAAKE,IAAIN,EAAQ,GAAIC,EAAS,GAAIC,EAAW,GAAIC,EAAY,IACxE,MAAO,CACL/O,EAAGiF,EACHhF,EAAGkF,EACHF,KAAMA,EACNE,KAAMA,EACND,KAAMA,EACNE,KAAMA,EACNtC,MAAOoC,EAAOD,EACdlC,OAAQqC,EAAOD,EAEnB,CG8Eawha,CAAiBzga,EAAQrC,IAE3BA,CACT,EAEA2ha,EAAevwa,UAAUC,GAAK,SAAUC,EAAKC,EAAUC,GAGrD,OAFYN,KAAKgC,IAAI,SACf7B,GAAGC,EAAKC,EAAUC,GACjBN,IACT,EACAywa,EAAevwa,UAAUoB,IAAM,SAAUlB,EAAKC,GAC5C,IAAIqR,EAAQ1R,KAAKgC,IAAI,SAErB,OADA0P,GAASA,EAAMpQ,IAAIlB,EAAKC,GACjBL,IACT,EACAywa,EAAevwa,UAAUM,KAAO,SAAUiK,EAAWgja,GACvCzta,KAAKgC,IAAI,SACfxB,KAAKiK,EAAWgja,EACxB,EACAgD,EAAevwa,UAAUoK,KAAO,WAC9B5I,EAAOxB,UAAUoK,KAAK1I,KAAK5B,MACtBA,KAAKgC,IAAI,UACZhC,KAAK6xa,YAEP7xa,KAAKoxa,iBACP,EAEAX,EAAevwa,UAAUyxa,mBAAqB,WAC5C,OAAO3xa,KAAKgC,IAAI,kBAAoBhC,KAAKgC,IAAI,SAASiO,SACxD,EAEAwga,EAAevwa,UAAU4xa,aAAe,SAAUrna,EAAWgja,GAC3D,IAAI/7Z,EAAQ1R,KAAKgC,IAAI,SACrByra,EAAY/ka,OAASgJ,EACrBA,EAAMlR,KAAKiK,EAAWgja,GACtBD,IAAoB97Z,EAAOjH,EAAWgja,EACxC,EAEAgD,EAAevwa,UAAU6xa,qBAAuB,WAM9C,OAHe,IAFH/xa,KAAKgC,IAAI,SACE8P,eACR,CAAe,CAC5BuG,eAAgBrY,KAAKgya,qBAGzB,EAEAvB,EAAevwa,UAAUsxa,YAAc,WACrC,IAAIjja,EAAUvO,KAAKgC,IAAI,WACnByM,EAAUzO,KAAKgC,IAAI,WACvBhC,KAAKiya,cAAcjya,KAAKgC,IAAI,SAAU,CACpCiJ,EAAGsD,EACHrD,EAAGuD,GAEP,EACAgia,EAAevwa,UAAU2xa,UAAY,WACnC,IAAI7oa,EAAYhJ,KAAKgC,IAAI,aACzBhC,KAAKkC,IAAI,QAAS8G,EAAUyI,SAAS,CACnCiC,GAAI1T,KAAKgC,IAAI,MACbC,KAAMjC,KAAKgC,IAAI,QACfwS,QAASxU,KAAKgC,IAAI,WAClBuS,QAASvU,KAAKgC,IAAI,WAClBkwa,aAAa,EACb1yW,UAAWx/D,KACXqY,eAAgBrY,KAAKgya,sBAEzB,EAEAvB,EAAevwa,UAAUkxa,gBAAkB,WACzCpxa,KAAK8wa,sBACL,IAAIO,EAAiBrxa,KAAK+xa,uBAK1B,OAJA/xa,KAAKmya,YAAYd,GACjBrxa,KAAKkC,IAAI,iBAAkBmva,GAE3Brxa,KAAKkC,IAAI,gBAAiBssa,IAAgB6C,IACnCA,CACT,EAOAZ,EAAevwa,UAAUuR,SAAW,SAAUG,EAAQjQ,GACpD3B,KAAKoya,qBAAqBxga,EAAQjQ,GAClC,IAAI+P,EAAQE,EAAOH,SAAS9P,GAI5B,OAHI3B,KAAKgC,IAAI,eACXhC,KAAKqya,gBAAgB3ga,GAEhBA,CACT,EAOA++Z,EAAevwa,UAAUmR,SAAW,SAAUO,EAAQjQ,GACpD3B,KAAKoya,qBAAqBxga,EAAQjQ,GAClC,IAAI8D,EAAQmM,EAAOP,SAAS1P,GAI5B,OAHI3B,KAAKgC,IAAI,eACXhC,KAAKqya,gBAAgB5sa,GAEhBA,CACT,EAOAgra,EAAevwa,UAAUoya,aAAe,SAAU1ga,EAAQjQ,GACxD,IAAI+R,EAAK/R,EAAI+R,GACXyvB,EAAOxhC,EAAI69D,UACX+yW,GAAU,UAAO5wa,EAAK,CAAC,KAAM,cAE3B6wa,EAAO,IAAIrvY,GAAK,WAAS,UAAS,CAAC,EAAGovY,GAAU,CAClD7+Z,GAAIA,EACJ1K,UAAW4I,EACX49Z,iBAAkBxva,KAAKgC,IAAI,uBAO7B,OALAwwa,EAAKloa,OACLkoa,EAAKxnW,SACDhrE,KAAKgC,IAAI,eACXhC,KAAKqya,gBAAgBG,EAAKxwa,IAAI,UAEzBwwa,CACT,EACA/B,EAAevwa,UAAUuxa,UAAY,WAAa,EAClDhB,EAAevwa,UAAUwxa,YAAc,WACzB1xa,KAAKgC,IAAI,SACfV,KACR,EACAmva,EAAevwa,UAAUgxa,aAAe,SAAUD,GAGhD,OAFSjxa,KAAKgC,IAAI,MAEN,IADDhC,KAAKgC,IAAI,QACK,IAAMiva,CACjC,EACAR,EAAevwa,UAAUmya,gBAAkB,SAAU1ia,GACnD,IAAI+D,EAAK/D,EAAQ3N,IAAI,MACrBhC,KAAKgC,IAAI,aAAa0R,GAAM/D,CAC9B,EACA8ga,EAAevwa,UAAUuya,kBAAoB,SAAU9ia,GACrD,IAAI+D,EAAK/D,EAAQ3N,IAAI,aACdhC,KAAKgC,IAAI,aAAa0R,EAC/B,EAEA+8Z,EAAevwa,UAAU+xa,cAAgB,SAAUtia,EAAS3E,GAC1D,IAAImG,EAASy8Z,IAAqB5ia,GAClC2E,EAAQvJ,KAAK,SAAU+K,EACzB,EAQAs/Z,EAAevwa,UAAUwya,aAAe,SAAUC,EAAYC,EAAY37Z,GAExE,IAAI47Z,EAAgBD,EAAWxsa,KAAK,YAChC,UAAMysa,KACRA,EAAgB,GAElBD,EAAWxsa,KAAK,UAAW,GAC3Bwsa,EAAW97Z,QAAQ,CACjBnC,QAASk+Z,GACR57Z,EACL,EAQAw5Z,EAAevwa,UAAU4ya,gBAAkB,SAAUC,EAAaC,EAAe/7Z,GAC/E+7Z,EAAcl8Z,QAAQ,CACpBnC,QAAS,GACRsC,EACL,EAQAw5Z,EAAevwa,UAAU+ya,gBAAkB,SAAUF,EAAaC,EAAeE,EAAUj8Z,GACzF+7Z,EAAcl8Z,QAAQo8Z,EAAUj8Z,EAClC,EAEAw5Z,EAAevwa,UAAUoxa,eAAiB,SAAU6B,EAAUC,GAC5D,IAIIC,EAJA5ya,EAAQT,KACR8W,EAAU9W,KAAKgC,IAAI,WACnByta,EAAgBzva,KAAKgC,IAAI,iBACzB6N,EAAWsja,EAAS7ia,cAAc0W,MAAM,IAE5C,UAAKnX,GAAU,SAAUF,GACvB,IAAI0xY,EAAY1xY,EAAQ3N,IAAI,MACxBgxa,EAAgBvya,EAAMgN,eAAe4zY,GACrC0xB,EAAcpja,EAAQ3N,IAAI,QAC9B,GAAIgxa,EACF,GAAIrja,EAAQ3N,IAAI,eAAgB,CAE9B,IAAIy7X,EAAiB9tX,EAAQ3N,IAAI,aAC7Bsxa,EAAqBN,EAAchxa,IAAI,aACvC4ta,GAAS,UAAKnyC,EAAe97X,KAAK,WAAW,UAAK87X,EAAe97X,KAAM6ua,MAC3E8C,EAAmB9ta,OAAOoqa,GAC1BoD,EAAc9wa,IAAIoua,IAAe,SACnC,KAAO,CACL,IAAIiD,EAAe9ya,EAAM+ya,gBAAgBR,EAAerja,GAEpDmH,GAAW24Z,EAAcjqa,OAE3B/E,EAAMwya,gBAAgBF,EAAaC,EAAeO,EAAc9D,EAAcjqa,QAG9Ewta,EAAc5sa,KAAKmta,GAGjB5ja,EAAQC,WACVnP,EAAM6wa,eAAe3ha,EAASqja,IAGhC,UAAKzC,KAAiB,SAAUtua,GAC9B+wa,EAAc9wa,IAAID,EAAM0N,EAAQ3N,IAAIC,GACtC,IF3KH,SAAoB0N,EAASija,GAClC,GAAKjja,EAAQuF,WAAc09Z,EAAW19Z,UAAtC,CAIA,IAAIu+Z,EAAeb,EAAW19Z,UAC9B,GAAKu+Z,EAAL,CAKA,IAAIr9Z,EAAU,CACZzN,KAAM8qa,EAAazxa,IAAI,QACvBsE,MAAOmta,EAAarta,QAEtBuJ,EAAQwG,QAAQC,EALhB,MAFEzG,EAAQwG,QAAQ,KAJlB,CAYF,CE4JUu9Z,CAAWV,EAAerja,GAC1B0ja,EAAaL,EAEbA,EAAc9wa,IAAIoua,IAAe,SACnC,KACK,CAEL8C,EAAY5ha,IAAI7B,GAChB,IAAIytR,EAAWg2I,EAAY9ia,cAE3B,GADA8sR,EAASh8R,OAAOg8R,EAASv8R,OAAS,EAAG,GACjCwya,EAAY,CAEd,IAAIrra,EAAQo1R,EAASlqR,QAAQmga,GAC7Bj2I,EAASh8R,OAAO4G,EAAQ,EAAG,EAAG2H,EAChC,MACEytR,EAASznR,QAAQhG,GAInB,GAFAlP,EAAM4xa,gBAAgB1ia,GACtBA,EAAQzN,IAAIoua,IAAe,OACvB3ga,EAAQ3N,IAAI,gBAEVy7X,EAAiB9tX,EAAQ3N,IAAI,cAClBE,IAAI,YAAakxa,QACvBzja,EAAQC,WAEjBnP,EAAMkza,iBAAiBhka,GAGzB,GADA0ja,EAAa1ja,EACTmH,EAAS,CACX,IAAIG,EAAaxW,EAAMuB,IAAI,UAAYyta,EAAcC,OAASD,EAAcj2J,MACxEviQ,GACFxW,EAAMiya,aAAaK,EAAapja,EAASsH,EAE7C,CACF,CACF,GACF,EACAw5Z,EAAevwa,UAAU0za,kBAAoB,SAAUlia,GACrD,IAAI7B,EAAW6B,EAAMpB,eACrB,UAAKT,GAAU,SAAUrF,GACvBA,EAAGtI,IAAIoua,IAAe,KACxB,GACF,EAEAG,EAAevwa,UAAU4wa,oBAAsB,WAC7C,IAAIO,EAAiBrxa,KAAKgC,IAAI,kBAC1Bqva,GAEFA,EAAejva,UAEjBpC,KAAKkC,IAAI,iBAAkB,MAC3BlC,KAAKkC,IAAI,gBAAiB,KAC5B,EAWAuua,EAAevwa,UAAU8xa,kBAAoB,WAC3C,IAAI7wa,EAGJ,OADsBA,EAAK,CAAC,GADjBnB,KAAKgC,IAAI,SACsBhC,KAAMmB,EAAGq+D,UAAYx/D,KAAMmB,CAEvE,EAEAsva,EAAevwa,UAAUkya,qBAAuB,SAAUxga,EAAQjQ,GAChE,IAAIkya,EAAejia,EAAO5P,IAAI,kBACzBL,EAAI0W,iBACP1W,EAAI0W,eAAiB,CAAC,IAExB,UAAI1W,EAAI0W,eAAgBw7Z,EAC1B,EAEApD,EAAevwa,UAAUsza,gBAAkB,SAAUR,EAAeJ,GAClE,IAAIp8Z,EAAcw8Z,EAAc5sa,OAC5B8sa,EAAWN,EAAWxsa,OAM1B,OALA,UAAKoQ,GAAa,SAAUvE,EAAGvL,QACT+vB,IAAhBy8Y,EAASxsa,KACXwsa,EAASxsa,QAAK+vB,EAElB,IACOy8Y,CACT,EACAzC,EAAevwa,UAAUyza,iBAAmB,SAAUjia,GACpD,IAAIjR,EAAQT,KACR6P,EAAW6B,EAAMpB,eACrB,UAAKT,GAAU,SAAUF,GACvBlP,EAAM4xa,gBAAgB1ia,GACtBA,EAAQzN,IAAIoua,IAAe,OACvB3ga,EAAQC,WACVnP,EAAMkza,iBAAiBhka,EAE3B,GACF,EAEA8ga,EAAevwa,UAAUqxa,eAAiB,WACxC,IAAI9wa,EAAQT,KACR0wa,EAAY1wa,KAAKgC,IAAI,aACrB8xa,EAAc,IAElB,UAAKpD,GAAW,SAAU/ga,EAAS+D,IAC5B/D,EAAQ3N,IAAIsua,MAAkB3ga,EAAQ9N,UACzCiya,EAAYvza,KAAK,CAACmT,EAAI/D,IAEtBA,EAAQzN,IAAIoua,IAAe,KAE/B,IAEA,IAAIx5Z,EAAU9W,KAAKgC,IAAI,WACnByta,EAAgBzva,KAAKgC,IAAI,kBAE7B,UAAK8xa,GAAa,SAAUr8Z,GAC1B,IAAI/D,EAAK+D,EAAK,GACZ9H,EAAU8H,EAAK,GACjB,IAAK9H,EAAQ9N,UAAW,CACtB,IAAIkxa,EAAcpja,EAAQ3N,IAAI,QAC9B,GAAI8U,GAAW24Z,EAAcE,MAAO,CAElC,IAAIoE,GAAkB,UAAI,CACxB1za,SAAU,WACRI,EAAMuza,cAAcrka,EACtB,GACC8/Z,EAAcE,OACjBlva,EAAMqya,gBAAgBC,EAAapja,EAASoka,EAC9C,MACEtza,EAAMuza,cAAcrka,EAExB,QACO+ga,EAAUh9Z,EACnB,GACF,EAEA+8Z,EAAevwa,UAAU8za,cAAgB,SAAUrka,GACjD,GAAIA,EAAQ3N,IAAI,WAAY,CAC1B,IAAIw9D,EAAY7vD,EAAQ3N,IAAI,aACxBw9D,GACFA,EAAUp9D,SAEd,CACAuN,EAAQwD,QACV,EACOs9Z,CACT,CAhfkC,CAgfhC,KACF,QC1fIwD,IAAgB,IAUb,SAASC,IAAaxyY,EAAKxgC,GAChC,OAAIwgC,EAAI+xK,WAAWvyM,GAAK,GAAKwgC,EAAI+xK,WAAWvyM,GAAK,IACxC,EAEA,CAEX,CCdA,IAAI,IAAgB,IAChBiza,IAAuB,EAEvBC,IAAqB,IAgClB,SAASC,IAAiBtgK,GAC/B,GAAIA,EAAOlzQ,OAASuza,IAClB,OA3BJ,SAAmCrgK,GAOjC,IANA,IAAI2uB,EAAQ3uB,EAAO/iP,KAAI,SAAU47B,GAC/B,IAAI/rC,EAAO+rC,EAAMxmD,KAAK,QACtB,OAAO,UAAMya,GAAQ,GAAK,GAAKA,CACjC,IACIkxJ,EAAS,EACTuiQ,EAAS,EACJpza,EAAI,EAAGA,EAAIwhS,EAAM7hS,OAAQK,GAAK,EAAG,CAExC,IADA,IAAIs5B,EAAM,EACDtzB,EAAI,EAAGA,GAAKw7R,EAAMxhS,GAAGL,OAAQqG,GAAK,EAAG,CAC5C,IAAIikG,EAAOu3L,EAAMxhS,GAAGuyM,WAAWvsM,GAE7BszB,GADE2wE,GAAQ,OAASA,GAAQ,MACpB,EAEA,CAEX,CACI3wE,EAAMu3I,IACRA,EAASv3I,EACT85Y,EAASpza,EAEb,CACA,OAAO6yQ,EAAOugK,GAAQrka,UAAUlC,KAClC,CAIWwma,CAA0BxgK,GAEnC,IAAI55P,EAAM,EAQV,OAPA,UAAK45P,GAAQ,SAAUnnN,GACrB,IACI7+C,EADO6+C,EAAM38C,UACAlC,MACboM,EAAMpM,IACRoM,EAAMpM,EAEV,IACOoM,CACT,CAWO,SAASq6Z,IAAcn8G,EAAYzrQ,EAAO6nX,EAAatpX,GAC5D,IAAIhqD,OACa,IAAbgqD,IACFA,EAAW,QAEb,IAAItqC,EAAqC,QAA7B1f,EAAKyrD,EAAMxmD,KAAK,eAA4B,IAAPjF,EAAgBA,EAAK,GACtE,GAAiB,SAAbgqD,EAAqB,CAGvB,IAAInqC,GAAO,UAAK4rC,EAAMxmD,OAAQ,CAAC,WAAY,aAAc,aAAc,YAAa,gBAChFsua,GAAe,UAAgB7zZ,EAAM4zZ,EAAazzZ,EAAM,KAC5D,OAAIH,IAAS6zZ,GACX9nX,EAAMxmD,KAAK,OAAQsua,GACnB9nX,EAAM1qD,IAAI,MAAO2e,IACV,IAET+rC,EAAM1qD,IAAI,MAAO,OACV,EACT,CACA,IAAIyya,EA5BC,SAAwBt8G,EAAYzrQ,GACzC,IAAI99C,EAAO89C,EAAMh8C,gBACjB,OAAOynT,EAAavpT,EAAKf,MAAQe,EAAKd,MACxC,CAyBoB4ma,CAAev8G,EAAYzrQ,GACzCioX,ED/EC,SAAgBnzY,GAErB,IADA,IAAIlH,EAAM,EACDt5B,EAAI,EAAGA,EAAIwgC,EAAI7gC,OAAQK,IAC9Bs5B,GAAO05Y,IAAaxyY,EAAKxgC,GAE3B,OAAOs5B,CACT,CCyEmBs6Y,CAAOj0Z,GACpBk0Z,GAAe,EACnB,GAAIN,EAAcE,EAAa,CAC7B,IAAIK,EAAgB/6Z,KAAKwX,MAAMgjZ,EAAcE,EAAcE,GAAcV,IACrEc,OAAU,EAEZA,EADED,GAAiB,EDpElB,SAAwBtzY,EAAKwzY,EAAc/pX,QAC/B,IAAbA,IACFA,EAAW,QAEb,IAAIr6B,EAAQ4Q,EAAI7gC,OACZyS,EAAM,GACV,GAAiB,SAAb63C,EAAqB,CACvB,IAAK,IAAIjqD,EAAI,EAAG8G,EAAQ,EAAG9G,EAAIg0a,GAEzBh0a,EADagza,IAAaxyY,EAAK15B,IACbkta,GACpB5ha,GAAOouB,EAAI15B,GACX9G,GAAKgza,IAAaxyY,EAAK15B,GACvBA,IAKJsL,GAAO2ga,GACT,MAAO,GAAiB,SAAb9oX,EAAqB,CAC9B,IAASjqD,EAAI,EAAG8G,EAAQ8oB,EAAQ,EAAG5vB,EAAIg0a,GAEjCh0a,EADagza,IAAaxyY,EAAK15B,IACbkta,GACpB5ha,GAAOouB,EAAI15B,GACX9G,GAAKgza,IAAaxyY,EAAK15B,GACvBA,IAKJsL,EAAM2ga,IAAgB3ga,CACxB,KAAO,CAGL,IAFA,IAAI6ha,EAAW,GACXC,EAAS,GACG9lQ,GAAPpuK,EAAI,EAAgB,GAAGsuK,EAAW1+I,EAAQ,EAAG5vB,EAAIg0a,GAAe,CACvE,IAAIG,EAAenB,IAAaxyY,EAAK4tI,GACjCgmQ,GAAS,EACTD,EAAen0a,GAAKg0a,IACtBC,GAAYzzY,EAAI4tI,GAChBA,IACApuK,GAAKm0a,EACLC,GAAS,GAEX,IAAIC,EAAarB,IAAaxyY,EAAK8tI,GAOnC,GANI+lQ,EAAar0a,GAAKg0a,IACpBE,EAAS1zY,EAAI8tI,GAAY4lQ,EACzBl0a,GAAKq0a,EACL/lQ,IACA8lQ,GAAS,IAENA,EAEH,KAEJ,CACAhia,EAAM6ha,EAAWlB,IAAgBmB,CACnC,CACA,OAAO9ha,CACT,CCYgBkia,CAAe30Z,EAAMm0Z,EAAe7pX,GAEpC,IAER8pX,IACFroX,EAAMxmD,KAAK,OAAQ6ua,GACnBF,GAAe,EAEnB,CAMA,OALIA,EACFnoX,EAAM1qD,IAAI,MAAO2e,GAEjB+rC,EAAM1qD,IAAI,MAAO,MAEZ6ya,CACT,CCjGO,SAASU,IAAUzsa,EAAW0sa,GACnC,IAAIzqa,EAAIyqa,EAAOzqa,EACbC,EAAIwqa,EAAOxqa,EACX4rE,EAAU4+V,EAAO5+V,QACjBhrE,EAAQ4pa,EAAO5pa,MACf4H,EAAKgia,EAAOhia,GACZzR,EAAOyza,EAAOzza,KACdgX,EAASy8Z,EAAOz8Z,OAChB6sC,EAAY4vX,EAAO5vX,UACnB6vX,EAAeD,EAAOC,aACtBt9G,EAAaq9G,EAAOr9G,WACpBu9G,EAAmBF,EAAOE,iBAC1BrrW,EAAamrW,EAAOnrW,WAClBsrW,EAAW7sa,EAAUyI,SAAS,CAChCiC,GAAIA,EAAK,SACTzR,KAAMA,EAAO,SACbqE,MAAO,CACL2E,EAAGA,EACHC,EAAGA,KAIH2V,EAAOg1Z,EAASxka,SAAS,CAC3B1I,KAAM,OACN+K,GAAIA,EACJzR,KAAMA,EACNqE,OAAO,UAAS,CACd2E,EAAG,EACHC,EAAG,EACH2V,KAAMi2D,GACLhrE,KAGDsuE,EAAU4zV,KAAc,UAAIzjW,EAAY,UAAW,IACnDzkB,GAAa6vX,GAGfnB,KAAen8G,EAAYx3S,EAFPilC,GAAas0B,EAAQ,GAAKA,EAAQ,IAENw7V,GAElD,GAAIrrW,EAAY,CAEd,IAAIurW,GAAkB,UAAIvrW,EAAY,QAAS,CAAC,GAC5CppE,EAAK0f,EAAKjQ,gBACZV,EAAO/O,EAAG+O,KACVE,EAAOjP,EAAGiP,KACVrC,EAAQ5M,EAAG4M,MACXC,EAAS7M,EAAG6M,OACF6na,EAASxka,SAAS,OAAQ,CACpCqC,GAAIA,EAAK,MACTzR,KAAMyR,EAAK,MACXpN,OAAO,UAAS,CACd2E,EAAGiF,EAAOkqE,EAAQ,GAClBlvE,EAAGkF,EAAOgqE,EAAQ,GAClBrsE,MAAOA,EAAQqsE,EAAQ,GAAKA,EAAQ,GACpCpsE,OAAQA,EAASosE,EAAQ,GAAKA,EAAQ,IACrC07V,KAECpga,QACR,CACAo4Z,IAAe+H,EAAU5qa,EAAGC,GAC5B2ia,IAAYgI,EAAU58Z,EAAQhO,EAAGC,EACnC,CClEA,SACEuoB,WAAY,2JACZikD,UAAW,UACXq+V,gBAAiB,UACjBC,eAAgB,UAChBC,UAAW,UACXC,YAAa,UACbC,oBAAqBl8Z,KAAK+B,GAAK,EAC/Bo6Z,qBAAsBn8Z,KAAK+B,GAAK,EAEhCq6Z,sBAAuB,OACvBC,oBAAqB,0BCLnBC,IAA8B,SAAU70a,GAE1C,SAAS60a,IACP,OAAkB,OAAX70a,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CA2HA,OA9HA,UAAUu2a,EAAgB70a,GAS1B60a,EAAer2a,UAAU6B,cAAgB,WACvC,IAAIJ,EAAMD,EAAOxB,UAAU6B,cAAcH,KAAK5B,MAC9C,OAAO,WAAS,UAAS,CAAC,EAAG2B,GAAM,CACjCM,KAAM,aACN0G,KAAM,OACN4ma,aAAc,SACd7oZ,MAAO,KACPmI,IAAK,KACL/iB,MAAO,CAAC,EACR+U,KAAM,KACN/e,WAAY,CACVgK,MAAO,CACL8vC,KAAM,IAAM87B,UACZ52D,SAAU,GACVG,UAAW,SACXC,aAAc,SACduS,WAAY,IAAMA,YAEpB5S,KAAM,CACJsqC,SAAU,SACVqrX,YAAY,EACZ1/V,QAAS,KACTvoE,QAAS,EACTE,QAAS,EACT3C,MAAO,CACLqV,OAAQ,IAAM80Z,UACdx2Z,UAAW,MAKrB,EACA82Z,EAAer2a,UAAUiya,YAAc,SAAUzga,GAC/C1R,KAAKy2a,WAAW/ka,GACZ1R,KAAKgC,IAAI,SACXhC,KAAK02a,YAAYhla,EAErB,EAEA6ka,EAAer2a,UAAUu2a,WAAa,SAAU/ka,GAC9C,IAAIgV,EAAQ1mB,KAAKgC,IAAI,SACjB6sB,EAAM7uB,KAAKgC,IAAI,OACf8J,EAAQ9L,KAAKgC,IAAI,SACrBhC,KAAKqR,SAASK,EAAO,CACnB/I,KAAM,OACN+K,GAAI1T,KAAKkxa,aAAa,QACtBjva,KAAM,kBACNqE,OAAO,UAAS,CACd8b,GAAIsE,EAAMzb,EACVoX,GAAIqE,EAAMxb,EACVoX,GAAIuM,EAAI5jB,EACRsX,GAAIsM,EAAI3jB,GACPY,IAEP,EAEAyqa,EAAer2a,UAAUy2a,cAAgB,SAAUjwZ,EAAOmI,EAAKs8B,GAC7D,IAAI4N,EAeJ,QAbEA,EADe,UAAb5N,EACQ,EACY,WAAbA,EACC,IACD,UAASA,KAAwC,IAA3BA,EAASj4C,QAAQ,KACtCghC,SAASiX,EAAU,IAAM,KAC1B,UAASA,GACRA,EAEA,GAEE,GAAK4N,EAAU,KAC3BA,EAAU,GAEL,CACL9tD,EAAGoja,IAAkB3nZ,EAAMzb,EAAG4jB,EAAI5jB,EAAG8tD,GACrC7tD,EAAGmja,IAAkB3nZ,EAAMxb,EAAG2jB,EAAI3jB,EAAG6tD,GAEzC,EAEAw9W,EAAer2a,UAAUw2a,YAAc,SAAUhla,GAC/C,IAAImP,EAAO7gB,KAAKgC,IAAI,QAChB0kB,EAAQ1mB,KAAKgC,IAAI,SACjB6sB,EAAM7uB,KAAKgC,IAAI,OACfmpD,EAAWtqC,EAAKsqC,SAClB2rB,EAAUj2D,EAAKi2D,QACfhrE,EAAQ+U,EAAK/U,MACbyC,EAAUsS,EAAKtS,QACfE,EAAUoS,EAAKpS,QACf+na,EAAa31Z,EAAK21Z,WAClB1wX,EAAYjlC,EAAKilC,UACjB6vX,EAAe90Z,EAAK80Z,aACpBC,EAAmB/0Z,EAAK+0Z,iBACxBrrW,EAAa1pD,EAAK0pD,WAClBppE,EAAK0f,EAAKw3S,WACVA,OAAoB,IAAPl3T,GAAwBA,EACnC6J,EAAQhL,KAAK22a,cAAcjwZ,EAAOmI,EAAKs8B,GACvClgD,EAAID,EAAMC,EAAIsD,EACdrD,EAAIF,EAAME,EAAIuD,EACd9M,EAAM,CACR+R,GAAI1T,KAAKkxa,aAAa,aACtBjva,KAAM,uBACNgJ,EAAGA,EACHC,EAAGA,EACH4rE,QAASA,EACThrE,MAAOA,EACPg6C,UAAWA,EACX6vX,aAAcA,EACdC,iBAAkBA,EAClBrrW,WAAYA,EACZ8tP,WAAYA,GAGd,GAAIm+G,EAAY,CACd,IAAIt9Y,EAAS,CAACrK,EAAI5jB,EAAIyb,EAAMzb,EAAG4jB,EAAI3jB,EAAIwb,EAAMxb,GAC7CvJ,EAAIsX,OAASgB,KAAKqG,MAAM4Y,EAAO,GAAIA,EAAO,GAC5C,CACAu8Y,IAAU/ja,EAAO/P,EACnB,EACO40a,CACT,CAhIkC,CAgIhC,KACF,QClIIK,IAA8B,SAAUl1a,GAE1C,SAASk1a,IACP,OAAkB,OAAXl1a,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAgFA,OAnFA,UAAU42a,EAAgBl1a,GAS1Bk1a,EAAe12a,UAAU6B,cAAgB,WACvC,IAAIJ,EAAMD,EAAOxB,UAAU6B,cAAcH,KAAK5B,MAC9C,OAAO,WAAS,UAAS,CAAC,EAAG2B,GAAM,CACjCM,KAAM,aACN0G,KAAM,OACN4ma,aAAc,QACdtka,EAAG,EACHC,EAAG,EACH4rE,QAAS,GACT79D,OAAQ,KACRnN,MAAO,CAAC,EACRy+D,WAAY,KACZzkB,UAAW,KACX6vX,cAAc,EACdt9G,YAAY,EACZu9G,iBAAkB,OAClB9za,WAAY,CACVgK,MAAO,CACL8vC,KAAM,IAAM87B,UACZ52D,SAAU,GACVG,UAAW,SACXC,aAAc,SACduS,WAAY,IAAMA,cAI1B,EAEAmjZ,EAAe12a,UAAUiwa,YAAc,SAAUxiK,GAC/C3tQ,KAAKkC,IAAI,IAAKyrQ,EAAS1iQ,GACvBjL,KAAKkC,IAAI,IAAKyrQ,EAASziQ,GACvBlL,KAAK62a,eACP,EACAD,EAAe12a,UAAUiya,YAAc,SAAUzga,GAC/C,IAAIvQ,EAAKnB,KAAKowa,cACZnla,EAAI9J,EAAG8J,EACPC,EAAI/J,EAAG+J,EACL4rE,EAAU92E,KAAKgC,IAAI,WACnB8J,EAAQ9L,KAAKgC,IAAI,SAuBrByza,IAAU/ja,EAdA,CACRgC,GATO1T,KAAKkxa,aAAa,QAUzBjva,KATSjC,KAAKgC,IAAI,QAAU,QAU5BiJ,EAAGA,EACHC,EAAGA,EACH4rE,QAASA,EACThrE,MAAOA,EACPg6C,UAbc9lD,KAAKgC,IAAI,aAcvB2za,aAbiB31a,KAAKgC,IAAI,gBAc1Bq2T,WAber4T,KAAKgC,IAAI,cAcxB4za,iBAbqB51a,KAAKgC,IAAI,oBAc9BuoE,WAbevqE,KAAKgC,IAAI,cAcxBiX,OAbWjZ,KAAKgC,IAAI,WAgBxB,EACA40a,EAAe12a,UAAU22a,cAAgB,WACvC,IAAIC,EAAY92a,KAAKgxa,oBAAoB,cACzC,GAAI8F,EAAW,CACb,IAAI31a,EAAKnB,KAAKowa,cACZnla,EAAI9J,EAAG8J,EACPC,EAAI/J,EAAG+J,EACL+N,EAASjZ,KAAKgC,IAAI,UACtB8ra,IAAegJ,EAAW7ra,EAAGC,GAC7B2ia,IAAYiJ,EAAW79Z,EAAQhO,EAAGC,EACpC,CACF,EACO0ra,CACT,CArFkC,CAqFhC,KACF,QCxFIG,IAA6B,SAAUr1a,GAEzC,SAASq1a,IACP,OAAkB,OAAXr1a,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CA2DA,OA9DA,UAAU+2a,EAAer1a,GASzBq1a,EAAc72a,UAAU6B,cAAgB,WACtC,IAAIJ,EAAMD,EAAOxB,UAAU6B,cAAcH,KAAK5B,MAC9C,OAAO,WAAS,UAAS,CAAC,EAAG2B,GAAM,CACjCM,KAAM,aACN0G,KAAM,MACN4ma,aAAc,SACd1xY,OAAQ,KACRmwC,OAAQ,IACRjsD,YAAa9H,KAAK+B,GAAK,EACvBgG,SAAoB,EAAV/H,KAAK+B,GAAS,EACxBlQ,MAAO,CACLqV,OAAQ,OACR1B,UAAW,IAGjB,EACAs3Z,EAAc72a,UAAUiya,YAAc,SAAUzga,GAC9C1R,KAAKg3a,UAAUtla,EACjB,EACAqla,EAAc72a,UAAU+2a,WAAa,WACnC,IAAI91a,EAAKnB,KAAKowa,cACZvyY,EAAS18B,EAAG08B,OACZmwC,EAAS7sE,EAAG6sE,OACZjsD,EAAa5gB,EAAG4gB,WAChBC,EAAW7gB,EAAG6gB,SACZmb,EAAamxY,IAAezwY,EAAQmwC,EAAQjsD,GAC5Cm1Z,EAAW5I,IAAezwY,EAAQmwC,EAAQhsD,GAC1Cm1Z,EAAYn1Z,EAAWD,EAAa9H,KAAK+B,GAAK,EAAI,EAClDnV,EAAO,CAAC,CAAC,IAAKs2B,EAAWlyB,EAAGkyB,EAAWjyB,IAC3C,GAAI8W,EAAWD,GAAyB,EAAV9H,KAAK+B,GAAQ,CAEzC,IAAIo7Z,EAAc9I,IAAezwY,EAAQmwC,EAAQjsD,EAAa9H,KAAK+B,IACnEnV,EAAKtG,KAAK,CAAC,IAAKytE,EAAQA,EAAQ,EAAGmpW,EAAW,EAAGC,EAAYnsa,EAAGmsa,EAAYlsa,IAC5ErE,EAAKtG,KAAK,CAAC,IAAKytE,EAAQA,EAAQ,EAAGmpW,EAAW,EAAGD,EAASjsa,EAAGisa,EAAShsa,GACxE,MACErE,EAAKtG,KAAK,CAAC,IAAKytE,EAAQA,EAAQ,EAAGmpW,EAAW,EAAGD,EAASjsa,EAAGisa,EAAShsa,IAExE,OAAOrE,CACT,EAEAkwa,EAAc72a,UAAU82a,UAAY,SAAUtla,GAE5C,IAAI7K,EAAO7G,KAAKi3a,aACZnra,EAAQ9L,KAAKgC,IAAI,SACrBhC,KAAKqR,SAASK,EAAO,CACnB/I,KAAM,OACN+K,GAAI1T,KAAKkxa,aAAa,OACtBjva,KAAM,iBACNqE,OAAO,UAAS,CACdO,KAAMA,GACLiF,IAEP,EACOira,CACT,CAhEiC,CAgE/B,KACF,QChEIM,IAAgC,SAAU31a,GAE5C,SAAS21a,IACP,OAAkB,OAAX31a,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CA+CA,OAlDA,UAAUq3a,EAAkB31a,GAS5B21a,EAAiBn3a,UAAU6B,cAAgB,WACzC,IAAIJ,EAAMD,EAAOxB,UAAU6B,cAAcH,KAAK5B,MAC9C,OAAO,WAAS,UAAS,CAAC,EAAG2B,GAAM,CACjCM,KAAM,aACN0G,KAAM,SACN4ma,aAAc,SACd7oZ,MAAO,KACPmI,IAAK,KACL/iB,MAAO,CAAC,EACRhK,WAAY,CACVgK,MAAO,CACL2T,UAAW,EACXm8B,KAAM,IAAMs6X,YACZvha,QAAS,MAIjB,EACA0ia,EAAiBn3a,UAAUiya,YAAc,SAAUzga,GACjD1R,KAAKs3a,aAAa5la,EACpB,EACA2la,EAAiBn3a,UAAUo3a,aAAe,SAAU5la,GAClD,IAAIgV,EAAQ1mB,KAAKgC,IAAI,SACjB6sB,EAAM7uB,KAAKgC,IAAI,OACf8J,EAAQ9L,KAAKgC,IAAI,SACjB8M,EAAOo/Z,IAAa,CACtBxnZ,MAAOA,EACPmI,IAAKA,IAEP7uB,KAAKqR,SAASK,EAAO,CACnB/I,KAAM,OACN+K,GAAI1T,KAAKkxa,aAAa,UACtBjva,KAAM,oBACNqE,OAAO,UAAS,CACd2E,EAAG6D,EAAK7D,EACRC,EAAG4D,EAAK5D,EACR6C,MAAOe,EAAKf,MACZC,OAAQc,EAAKd,QACZlC,IAEP,EACOura,CACT,CApDoC,CAoDlC,KACF,QCtDIE,IAA+B,SAAU71a,GAE3C,SAAS61a,IACP,OAAkB,OAAX71a,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CA+CA,OAlDA,UAAUu3a,EAAiB71a,GAS3B61a,EAAgBr3a,UAAU6B,cAAgB,WACxC,IAAIJ,EAAMD,EAAOxB,UAAU6B,cAAcH,KAAK5B,MAC9C,OAAO,WAAS,UAAS,CAAC,EAAG2B,GAAM,CACjCM,KAAM,aACN0G,KAAM,QACN4ma,aAAc,SACd7oZ,MAAO,KACPmI,IAAK,KACLsV,IAAK,KACLr4B,MAAO,CAAC,GAEZ,EACAyra,EAAgBr3a,UAAUiya,YAAc,SAAUzga,GAChD1R,KAAKw3a,YAAY9la,EACnB,EACA6la,EAAgBr3a,UAAUu3a,cAAgB,WACxC,IAAI/wZ,EAAQ1mB,KAAKgC,IAAI,SACjB6sB,EAAM7uB,KAAKgC,IAAI,OACf8J,EAAQ9L,KAAKgC,IAAI,SACjB8M,EAAOo/Z,IAAa,CACtBxnZ,MAAOA,EACPmI,IAAKA,IAEHsV,EAAMnkC,KAAKgC,IAAI,OACnB,OAAO,UAAS,CACdiJ,EAAG6D,EAAK7D,EACRC,EAAG4D,EAAK5D,EACR41E,IAAK38C,EACLp2B,MAAOe,EAAKf,MACZC,OAAQc,EAAKd,QACZlC,EACL,EAEAyra,EAAgBr3a,UAAUs3a,YAAc,SAAU9la,GAChD1R,KAAKqR,SAASK,EAAO,CACnB/I,KAAM,QACN+K,GAAI1T,KAAKkxa,aAAa,SACtBjva,KAAM,mBACNqE,MAAOtG,KAAKy3a,iBAEhB,EACOF,CACT,CApDmC,CAoDjC,KACF,QClDIG,IAAoC,SAAUh2a,GAEhD,SAASg2a,IACP,OAAkB,OAAXh2a,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CA4OA,OA/OA,UAAU03a,EAAsBh2a,GAQhCg2a,EAAqBx3a,UAAU6B,cAAgB,WAC7C,IAAIJ,EAAMD,EAAOxB,UAAU6B,cAAcH,KAAK5B,MAC9C,OAAO,WAAS,UAAS,CAAC,EAAG2B,GAAM,CACjCM,KAAM,aACN0G,KAAM,aACN4ma,aAAc,QACdtka,EAAG,EACHC,EAAG,EACHF,MAAO,CAAC,EACRkrB,KAAM,CAAC,EACPrV,KAAM,CAAC,EACPia,UAAW,SACX68Y,YAAY,EACZC,eAAgB,KAChB91a,WAAY,CACVkJ,MAAO,CACLqgD,SAAS,EACTv/C,MAAO,CACLoT,EAAG,EACH08B,KAAM,UACNz6B,OAAQ,UACR1B,UAAW,IAGfyW,KAAM,CACJm1B,SAAS,EACTxqD,OAAQ,GACRiL,MAAO,CACLqV,OAAQ,IAAM80Z,UACdx2Z,UAAW,IAGfoB,KAAM,CACJi2D,QAAS,GACTzrB,SAAS,EACTv/C,MAAO,CACL8vC,KAAM,IAAM87B,UACZ/iE,QAAS,IACTmM,SAAU,GACVG,UAAW,QACXwS,WAAY,IAAMA,eAK5B,EACAikZ,EAAqBx3a,UAAUiya,YAAc,SAAUzga,IACjD,UAAI1R,KAAKgC,IAAI,QAAS,YACxBhC,KAAKy2a,WAAW/ka,IAEd,UAAI1R,KAAKgC,IAAI,QAAS,YACxBhC,KAAK63a,WAAWnma,IAEd,UAAI1R,KAAKgC,IAAI,SAAU,YACzBhC,KAAK83a,YAAYpma,GAEf1R,KAAKgC,IAAI,eACXhC,KAAK23a,WAAWjma,EAEpB,EACAgma,EAAqBx3a,UAAUsxa,YAAc,WAC3Cxxa,KAAKiya,cAAcjya,KAAKgC,IAAI,SAAU,CACpCiJ,EAAGjL,KAAKgC,IAAI,KAAOhC,KAAKgC,IAAI,WAC5BkJ,EAAGlL,KAAKgC,IAAI,KAAOhC,KAAKgC,IAAI,YAEhC,EACA01a,EAAqBx3a,UAAU43a,YAAc,SAAUpma,GACrD,IAAI1G,EAAQhL,KAAK+3a,gBAAgB/sa,MACjChL,KAAKqR,SAASK,EAAO,CACnB/I,KAAM,SACN+K,GAAI1T,KAAKkxa,aAAa,SACtBjva,KAAM,mBACNqE,MAAO0E,GAEX,EACA0sa,EAAqBx3a,UAAUu2a,WAAa,SAAU/ka,GACpD,IAAIwkB,EAAOl2B,KAAK+3a,gBAAgB7hZ,KAChCl2B,KAAKqR,SAASK,EAAO,CACnB/I,KAAM,OACN+K,GAAI1T,KAAKkxa,aAAa,QACtBjva,KAAM,kBACNqE,MAAO4vB,GAEX,EACAwhZ,EAAqBx3a,UAAU23a,WAAa,SAAUnma,GACpD,IAAIsma,EAAYh4a,KAAK+3a,gBAAgBl3Z,KACjC5V,EAAI+sa,EAAU/sa,EAChBC,EAAI8sa,EAAU9sa,EACd2V,EAAOm3Z,EAAUn3Z,KACjB/U,GAAQ,UAAOksa,EAAW,CAAC,IAAK,IAAK,SACnC72a,EAAKnB,KAAKgC,IAAI,QAChBuoE,EAAappE,EAAGopE,WAChBzkB,EAAY3kD,EAAG2kD,UACf6vX,EAAex0a,EAAGw0a,aAClBsC,EAAa92a,EAAG82a,WAChBrC,EAAmBz0a,EAAGy0a,iBAcxBH,IAAU/ja,EAbG,CACXzG,EAAGA,EACHC,EAAGA,EACHwI,GAAI1T,KAAKkxa,aAAa,QACtBjva,KAAM,kBACN60E,QAASj2D,EACT/U,MAAOA,EACPy+D,WAAYA,EACZzkB,UAAWA,EACX6vX,aAAcA,EACdsC,WAAYA,EACZrC,iBAAkBA,GAGtB,EACA8B,EAAqBx3a,UAAUy3a,WAAa,SAAUjma,GACpD,IAAIopB,EAAY96B,KAAKgC,IAAI,aACrBiJ,EAAIjL,KAAKgC,IAAI,KACbkJ,EAAIlL,KAAKgC,IAAI,KACbk2a,GAAa,UAAIl4a,KAAKgC,IAAI,QAAS,SAAU,GAC7C41a,EAAiB53a,KAAKgC,IAAI,kBAC1Bb,EAAKuQ,EAAMzB,UACbC,EAAO/O,EAAG+O,KACVC,EAAOhP,EAAGgP,KACVC,EAAOjP,EAAGiP,KACVC,EAAOlP,EAAGkP,KACRyma,EAAYpla,EAAM+B,SAASzT,KAAKkxa,aAAa,eAC7CiH,EAAYzma,EAAM+B,SAASzT,KAAKkxa,aAAa,SAC7Cn5K,EAAYrmP,EAAM+B,SAASzT,KAAKkxa,aAAa,SACjD,GAAK0G,GAGDd,EAAW,CACb,IAAIv+Z,EAAau+Z,EAAU1wa,KAAK,KAC9BoS,EAAas+Z,EAAU1wa,KAAK,KAC1B8Q,EAAKiha,EAAUvna,gBACjB7C,EAAQmJ,EAAGnJ,MACXC,EAASkJ,EAAGlJ,OACVoqa,EAAU,EACZC,EAAU,EACZ,GAAIpta,EAAIiF,GAAQ0na,EAAe1na,KAE7B,GAAkB,aAAd4qB,EACFs9Y,EAAU,MACL,CACL,IAAI9sX,EAAWssX,EAAe1na,MAAQjF,EAAIiF,GAC1CqI,EAAau+Z,EAAU1wa,KAAK,KAAOklD,CACrC,MACK,GAAIrgD,EAAIkF,GAAQyna,EAAezna,KAEpC,GAAkB,cAAd2qB,EACFs9Y,GAAW,MACN,CACD9sX,EAAWrgD,EAAIkF,EAAOyna,EAAezna,KACzCoI,EAAau+Z,EAAU1wa,KAAK,KAAOklD,CACrC,CAQF,GANM8sX,IACArgL,GACFA,EAAU3xP,KAAK,OAAQ,CAAC,CAAC,IAAK,EAAG,GAAI,CAAC,IAAK8xa,EAAaE,EAAS,KAEnE7/Z,GAAc2/Z,EAAa,EAAInqa,GAASqqa,GAEtClta,EAAIkF,GAAQwna,EAAexna,KAE7B,GAAkB,WAAd0qB,EACFu9Y,EAAU,MACL,CACD/sX,EAAWssX,EAAexna,MAAQlF,EAAIkF,GAC1CoI,EAAas+Z,EAAU1wa,KAAK,KAAOklD,CACrC,MACK,GAAIpgD,EAAImF,GAAQuna,EAAevna,KAEpC,GAAkB,aAAdyqB,EACFu9Y,GAAW,MACN,CACD/sX,EAAWpgD,EAAImF,EAAOuna,EAAevna,KACzCmI,EAAas+Z,EAAU1wa,KAAK,KAAOklD,CACrC,CAEI+sX,IACAtgL,GACFA,EAAU3xP,KAAK,OAAQ,CAAC,CAAC,IAAK,EAAG,GAAI,CAAC,IAAK,EAAG8xa,EAAaG,KAE7D7/Z,GAAc0/Z,EAAa,EAAIlqa,GAAUqqa,GAEvC9/Z,IAAeu+Z,EAAU1wa,KAAK,MAAQoS,IAAes+Z,EAAU1wa,KAAK,MAAM0na,IAAegJ,EAAWv+Z,EAAYC,EACtH,CACF,EACAk/Z,EAAqBx3a,UAAU63a,cAAgB,WAC7C,IAAIO,GAAc,UAAIt4a,KAAKgC,IAAI,QAAS,WACpCu2a,GAAa,UAAIv4a,KAAKgC,IAAI,SAAU,QAAS,CAAC,GAC9Cw2a,GAAY,UAAIx4a,KAAKgC,IAAI,QAAS,QAAS,CAAC,GAC5Cy2a,GAAY,UAAIz4a,KAAKgC,IAAI,QAAS,QAAS,CAAC,GAC5C84B,EAAY96B,KAAKgC,IAAI,aACrBk2a,EAAaI,GAAc,UAAIt4a,KAAKgC,IAAI,QAAS,SAAU,GAAK,EAChEo2a,EAAU,EACZC,EAAU,EACRn3Z,EAAe,MACjBD,EAAY,QACd,OAAQ6Z,GACN,IAAK,SACHu9Y,GAAW,EACXn3Z,EAAe,SACf,MACF,IAAK,WACHm3Z,EAAU,EACVn3Z,EAAe,MACf,MACF,IAAK,WACHk3Z,GAAW,EACXn3Z,EAAY,MACZ,MACF,IAAK,YACHm3Z,EAAU,EACVn3Z,EAAY,QAGhB,MAAO,CACLjW,OAAO,UAAS,CACdC,EAAG,EACHC,EAAG,GACFqta,GACHriZ,MAAM,UAAS,CACbrvB,KAAM,CAAC,CAAC,IAAK,EAAG,GAAI,CAAC,IAAKqxa,EAAaE,EAASF,EAAaG,KAC5DG,GACH33Z,MAAM,UAAS,CACb5V,GAAIita,EAAa,GAAKE,EACtBlta,GAAIgta,EAAa,GAAKG,EACtBx3Z,MAAM,UAAI7gB,KAAKgC,IAAI,QAAS,UAAW,IACvCkf,aAAcA,EACdD,UAAWA,GACVw3Z,GAEP,EACOf,CACT,CAjPwC,CAiPtC,KACF,QClPIgB,IAAoC,SAAUh3a,GAEhD,SAASg3a,IACP,OAAkB,OAAXh3a,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAqEA,OAxEA,UAAU04a,EAAsBh3a,GAQhCg3a,EAAqBx4a,UAAU6B,cAAgB,WAC7C,IAAIJ,EAAMD,EAAOxB,UAAU6B,cAAcH,KAAK5B,MAC9C,OAAO,WAAS,UAAS,CAAC,EAAG2B,GAAM,CACjCM,KAAM,aACN0G,KAAM,aACN4ma,aAAc,SACd7uZ,OAAQ,GACRw3Z,WAAY,EACZ/J,OAAQ,CAAC,EACTttZ,KAAM,CAAC,EACP/e,WAAY,CACVqsa,OAAQ,CACNria,MAAO,CACL2T,UAAW,EACXm8B,KAAM,IAAMs6X,YACZvha,QAAS,KAGbkM,KAAM,CACJi2D,QAAS,GACThrE,MAAO,CACLmV,UAAW,SACXC,aAAc,SACdJ,SAAU,GACV86B,KAAM,IAAM87B,UACZjkD,WAAY,IAAMA,eAK5B,EACAilZ,EAAqBx4a,UAAUiya,YAAc,SAAUzga,GACrD,IAAIina,GAAc,UAAI34a,KAAKgC,IAAI,UAAW,QAAS,CAAC,GAEhDk2a,IADY,UAAIl4a,KAAKgC,IAAI,QAAS,QAAS,CAAC,GAC/BhC,KAAKgC,IAAI,eAAiB,GACvC0e,EAAS1gB,KAAKgC,IAAI,UACtB,GAAK0e,EAAO7f,OAAZ,CAGA,IAAIiO,EbVD,SAAsB4R,GAC3B,IAAIiY,EAAKjY,EAAOsQ,KAAI,SAAUhmB,GAC5B,OAAOA,EAAMC,CACf,IACI4tB,EAAKnY,EAAOsQ,KAAI,SAAUhmB,GAC5B,OAAOA,EAAME,CACf,IACIgF,EAAO+J,KAAKC,IAAI7Y,MAAM4Y,KAAM0e,GAC5BvoB,EAAO6J,KAAKC,IAAI7Y,MAAM4Y,KAAM4e,GAC5B1oB,EAAO8J,KAAKE,IAAI9Y,MAAM4Y,KAAM0e,GAC5BtoB,EAAO4J,KAAKE,IAAI9Y,MAAM4Y,KAAM4e,GAChC,MAAO,CACL5tB,EAAGiF,EACHhF,EAAGkF,EACHF,KAAMA,EACNE,KAAMA,EACND,KAAMA,EACNE,KAAMA,EACNtC,MAAOoC,EAAOD,EACdlC,OAAQqC,EAAOD,EAEnB,CaXewoa,CAAal4Z,GAEpB7Z,EAAO,GACXA,EAAKtG,KAAK,CAAC,IAAKmgB,EAAO,GAAGzV,EAAG6D,EAAKsB,KAAO8na,IACzCx3Z,EAAOtY,SAAQ,SAAU4C,GACvBnE,EAAKtG,KAAK,CAAC,IAAKyK,EAAMC,EAAGD,EAAME,GACjC,IACArE,EAAKtG,KAAK,CAAC,IAAKmgB,EAAOA,EAAO7f,OAAS,GAAGoK,EAAGyV,EAAOA,EAAO7f,OAAS,GAAGqK,EAAIgta,IAC3El4a,KAAKqR,SAASK,EAAO,CACnB/I,KAAM,OACN+K,GAAI1T,KAAKkxa,aAAa,UACtBjva,KAAM,oBACNqE,OAAO,UAAS,CACdO,KAAMA,GACL8xa,KASLlD,IAAU/ja,GANI,UAAS,CACrBgC,GAAI1T,KAAKkxa,aAAa,QACtBjva,KAAM,kBACNgJ,GAAI6D,EAAKoB,KAAOpB,EAAKqB,MAAQ,EAC7BjF,EAAG4D,EAAKsB,KAAO8na,GACdl4a,KAAKgC,IAAI,SAvBZ,CAyBF,EACO02a,CACT,CA1EwC,CA0EtC,KACF,QC7EIG,IAAsC,SAAUn3a,GAElD,SAASm3a,IACP,OAAkB,OAAXn3a,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CA4DA,OA/DA,UAAU64a,EAAwBn3a,GAQlCm3a,EAAuB34a,UAAU6B,cAAgB,WAC/C,IAAIJ,EAAMD,EAAOxB,UAAU6B,cAAcH,KAAK5B,MAC9C,OAAO,WAAS,UAAS,CAAC,EAAG2B,GAAM,CACjCM,KAAM,aACN0G,KAAM,eACN4ma,aAAc,SACd7oZ,MAAO,KACPmI,IAAK,KACLklB,MAAO,KACPtuC,MAAO,IAEX,EACAoza,EAAuB34a,UAAUiya,YAAc,SAAUzga,GACvD,IAAIjR,EAAQT,KACR0mB,EAAQ1mB,KAAKgC,IAAI,SACjB6sB,EAAM7uB,KAAKgC,IAAI,OAEf00V,EAAQ12V,KAAKyR,SAASC,EAAO,CAC/BgC,GAAI1T,KAAKkxa,aAAa,iBACtB18Z,SAAS,KAGX,UAAKxU,KAAKgC,IAAI,WAAW,SAAUyD,EAAOqza,GACxC,IAAInwa,EAAOlD,EAAMzD,IAAI,QACjBsE,GAAQ,UAAMb,EAAMW,QACxB3F,EAAMs4a,iBAAiBzya,GACvB7F,EAAM4Q,SAASqlV,EAAO,CACpBhjV,GAAIjT,EAAMywa,aAAa,SAAWvoa,EAAO,IAAMmwa,GAC/Ctka,SAAS,EACT7L,KAAMA,EACNrC,MAAOA,GAEX,IAEA,IAAImoa,EAAWP,IAAa,CAC1BxnZ,MAAOA,EACPmI,IAAKA,IAEP6nU,EAAMvgV,QAAQ,CACZxN,KAAM,OACNrC,MAAO,CACL2E,EAAGwja,EAASv+Z,KACZhF,EAAGuja,EAASr+Z,KACZrC,MAAO0ga,EAAS1ga,MAChBC,OAAQyga,EAASzga,SAGvB,EACA6qa,EAAuB34a,UAAU64a,iBAAmB,SAAU3ya,GAC5D,IAAI2tC,EAAQ/zC,KAAKgC,IAAI,SACjBoE,EAAKw1C,OACPx1C,EAAKw1C,KAAOx1C,EAAKq2P,UAAY1oN,GAE/B3tC,EAAK+a,OAAS/a,EAAK22P,YAAchpN,CACnC,EACO8kY,CACT,CAjE0C,CAiExC,KACF,QCnEIG,IAA+B,SAAUt3a,GAE3C,SAASs3a,IACP,OAAkB,OAAXt3a,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAeA,OAlBA,UAAUg5a,EAAiBt3a,GAI3Bs3a,EAAgB94a,UAAU6B,cAAgB,WACxC,IAAIJ,EAAMD,EAAOxB,UAAU6B,cAAcH,KAAK5B,MAC9C,OAAO,WAAS,UAAS,CAAC,EAAG2B,GAAM,CACjCM,KAAM,aACN0G,KAAM,QACNb,KAAM,QAEV,EACAkxa,EAAgB94a,UAAUiya,YAAc,SAAUzga,GAChD,IAAIs5D,EAAShrE,KAAKgC,IAAI,WAClB,UAAWgpE,IACbA,EAAOt5D,EAEX,EACOsna,CACT,CApBmC,CAoBjC,KACF,QCjBe,SAAS,IAAS39T,EAAKp5G,EAAM+iC,GAC1C,IAAI/yB,EACJ,IACEA,EAAI/O,OAAOgoD,iBAAmBhoD,OAAOgoD,iBAAiBmwD,EAAK,MAAMp5G,GAAQo5G,EAAIvvG,MAAM7J,EACrF,CAAE,MAAOiC,KAET,CAAE,QACA+N,OAAUwkB,IAANxkB,EAAkB+yB,EAAe/yB,CACvC,CACA,OAAOA,CACT,CCfe,SAASgna,IAAczua,EAAIw6B,GACxC,IAAIj3B,ECFS,SAAmBvD,EAAIw6B,GACpC,IAAIj3B,EAAQ,IAASvD,EAAI,QAASw6B,GAIlC,MAHc,SAAVj3B,IACFA,EAAQvD,EAAGqkE,aAENxjD,WAAWtd,EACpB,CDJc,CAASvD,EAAIw6B,GACrBk0Y,EAAQ7tZ,WAAW,IAAS7gB,EAAI,qBAAuB,EACvD2ua,EAAQ9tZ,WAAW,IAAS7gB,EAAI,iBAAmB,EACnD4ua,EAAS/tZ,WAAW,IAAS7gB,EAAI,kBAAoB,EACrD6ua,EAAShuZ,WAAW,IAAS7gB,EAAI,sBAAwB,EACzD8ua,EAASjuZ,WAAW,IAAS7gB,EAAI,iBAAmB,EAExD,OAAOuD,EAAQmra,EAAQG,EAASF,EAAQC,GAD5B/tZ,WAAW,IAAS7gB,EAAI,gBAAkB,GACG8ua,CAC3D,CETe,SAASC,IAAe/ua,EAAIw6B,GACzC,IAAIh3B,ECFS,SAAmBxD,EAAIw6B,GACpC,IAAIh3B,EAAS,IAASxD,EAAI,SAAUw6B,GAIpC,MAHe,SAAXh3B,IACFA,EAASxD,EAAGskE,cAEPzjD,WAAWrd,EACpB,CDJe,CAAUxD,EAAIw6B,GACvBw0Y,EAAOnuZ,WAAW,IAAS7gB,EAAI,oBAAsB,EACrDiva,EAAOpuZ,WAAW,IAAS7gB,EAAI,gBAAkB,EACjDkva,EAAUruZ,WAAW,IAAS7gB,EAAI,mBAAqB,EAI3D,OAAOwD,EAASwra,GAHFnuZ,WAAW,IAAS7gB,EAAI,uBAAyB,GAG9Biva,EAAOC,GAF7BruZ,WAAW,IAAS7gB,EAAI,eAAiB,IACtC6gB,WAAW,IAAS7gB,EAAI,kBAAoB,EAE5D,CENA,IAAImva,IAA6B,SAAUj4a,GAEzC,SAASi4a,IACP,OAAkB,OAAXj4a,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAmLA,OAtLA,UAAU25a,EAAej4a,GAIzBi4a,EAAcz5a,UAAU6B,cAAgB,WACtC,IAAIJ,EAAMD,EAAOxB,UAAU6B,cAAcH,KAAK5B,MAC9C,OAAO,WAAS,UAAS,CAAC,EAAG2B,GAAM,CACjCqH,UAAW,KACX4wa,aAAc,cACdpK,kBAAkB,EAClBjkP,mBAAoB,GACpB35K,OAAQ,MAEZ,EACA+na,EAAcz5a,UAAU0mF,aAAe,WACrC,OAAO5mF,KAAKgC,IAAI,YAClB,EAIA23a,EAAcz5a,UAAUoV,KAAO,WACbtV,KAAKgC,IAAI,aACf8J,MAAMu/C,QAAU,GAC1BrrD,KAAKkC,IAAI,WAAW,EACtB,EAIAy3a,EAAcz5a,UAAUqV,KAAO,WACbvV,KAAKgC,IAAI,aACf8J,MAAMu/C,QAAU,OAC1BrrD,KAAKkC,IAAI,WAAW,EACtB,EAKAy3a,EAAcz5a,UAAU6va,WAAa,SAAUv7Z,GAC7C,IACIrS,EAAQqS,EAAU,OAAS,OADfxU,KAAK4mF,eAEX96E,MAAMy/C,cAAgBppD,EAChCnC,KAAKkC,IAAI,UAAWsS,EACtB,EACAmla,EAAcz5a,UAAU+P,QAAU,WAChC,IAAIjH,EAAYhJ,KAAK4mF,eAGrB,OAAOwnV,IAFC/iZ,WAAWriB,EAAU8C,MAAMkD,OAAS,EACpCqc,WAAWriB,EAAU8C,MAAMmD,MAAQ,EACnBjG,EAAU28E,YAAa38E,EAAUw9E,aAC3D,EACAmzV,EAAcz5a,UAAUqP,MAAQ,WAE9B0+Z,IADgBjua,KAAKgC,IAAI,aAE3B,EACA23a,EAAcz5a,UAAUkC,QAAU,WAChCpC,KAAK0xa,cACL1xa,KAAKmP,YACLzN,EAAOxB,UAAUkC,QAAQR,KAAK5B,KAChC,EAIA25a,EAAcz5a,UAAUoK,KAAO,WAC7B5I,EAAOxB,UAAUoK,KAAK1I,KAAK5B,MAC3BA,KAAKqN,gBACLrN,KAAKsN,UACLtN,KAAK65a,cACL75a,KAAK85a,cACL95a,KAAKyxa,YACLzxa,KAAK+5a,cACL/5a,KAAKg6a,aACP,EACAL,EAAcz5a,UAAU65a,YAAc,WACpC/5a,KAAK+va,WAAW/va,KAAKgC,IAAI,WAC3B,EACA23a,EAAcz5a,UAAU85a,YAAc,WAC/Bh6a,KAAKgC,IAAI,WAIZhC,KAAKsV,OAFLtV,KAAKuV,MAIT,EACAoka,EAAcz5a,UAAUoN,QAAU,WAAa,EAC/Cqsa,EAAcz5a,UAAUmN,cAAgB,WACtC,IAAIrE,EAAYhJ,KAAKgC,IAAI,aACzB,IAAI,UAAMgH,GAAY,CAEpBA,EAAYhJ,KAAK0N,YACjB,IAAIZ,EAAW9M,KAAKgC,IAAI,WACpB,UAAS8K,KACXA,EAAWnC,SAAS8C,eAAeX,GACnC9M,KAAKkC,IAAI,SAAU4K,IAErBA,EAASa,YAAY3E,GACjBhJ,KAAKgC,IAAI,gBACXgH,EAAUshD,aAAa,KAAMtqD,KAAKgC,IAAI,gBAExChC,KAAKkC,IAAI,YAAa8G,EACxB,MAAW,UAASA,KAElBA,EAAY2B,SAAS8C,eAAezE,GACpChJ,KAAKkC,IAAI,YAAa8G,IAEnBhJ,KAAKgC,IAAI,WACZhC,KAAKkC,IAAI,SAAU8G,EAAUoG,WAEjC,EAEAuqa,EAAcz5a,UAAU25a,YAAc,WACpC,IAAI/ta,EAAQ9L,KAAKgC,IAAI,aACjBi4a,EAAgBj6a,KAAKgC,IAAI,iBAI3B8J,EAHGA,GAGK,UAAQ,CAAC,EAAGmua,EAAenua,GAF3Bmua,EAIVj6a,KAAKkC,IAAI,YAAa4J,EACxB,EAEA6ta,EAAcz5a,UAAU45a,YAAc,WACpC,IAAII,EAAYl6a,KAAKgC,IAAI,aACzB,GAAKk4a,EAAL,CAGA,IAAIlxa,EAAYhJ,KAAK4mF,eACrB5mF,KAAKm6a,oBAAoBnxa,EAAWkxa,GACpC,IrB7G+BE,EqB6G3B7uP,EAAqBvrL,KAAKgC,IAAI,sBAClC,GAAIupL,IrB9G2B6uP,EqB8Ge7uP,EAAXviL,ErB7GnB4K,UAAUqnB,MAAM,IAAInW,OAAO,UAAYs1Z,EAAQ,aqB+G7D3hB,IAAUzvZ,EADSkxa,EAAU3uP,GAL/B,CAQF,EACAouP,EAAcz5a,UAAUi6a,oBAAsB,SAAUxqa,EAASmsE,IAC/D,UAAKA,GAAQ,SAAUhwE,EAAO7J,GAC5B,IAAI0+B,EAAWhxB,EAAQ0qa,uBAAuBp4a,IAC9C,UAAK0+B,GAAU,SAAUn2B,GACvBiuZ,IAAUjuZ,EAAIsB,EAChB,GACF,GACF,EAEA6ta,EAAcz5a,UAAUo6a,WAAa,SAAUC,EAASl/T,GAEtDo9S,IAAUp9S,EADMr7G,KAAKgC,IAAI,aACAu4a,GAC3B,EAIAZ,EAAcz5a,UAAUwN,UAAY,WAElC,OAAOA,IADY1N,KAAKgC,IAAI,gBAE9B,EAKA23a,EAAcz5a,UAAUuxa,UAAY,WAAa,EAKjDkI,EAAcz5a,UAAUiP,UAAY,WAClC,IAAInG,EAAYhJ,KAAKgC,IAAI,aAEzBgH,GAAaA,EAAUoG,YAAcpG,EAAUoG,WAAWC,YAAYrG,EACxE,EAKA2wa,EAAcz5a,UAAUwxa,YAAc,WAAa,EACnDiI,EAAcz5a,UAAU2va,YAAc,SAAUlua,IAE1C,UAAOA,EAAK,eACd3B,KAAK65a,cACL75a,KAAK85a,eAGP95a,KAAKw6a,eACP,EACAb,EAAcz5a,UAAUs6a,cAAgB,WAAa,EAE9Cb,CACT,CAxLiC,CAwL/B,KACF,QCzLIc,IAA8B,SAAU/4a,GAE1C,SAAS+4a,IACP,OAAkB,OAAX/4a,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAqEA,OAxEA,UAAUy6a,EAAgB/4a,GAI1B+4a,EAAev6a,UAAU6B,cAAgB,WACvC,IAAIJ,EAAMD,EAAOxB,UAAU6B,cAAcH,KAAK5B,MAC9C,OAAO,WAAS,UAAS,CAAC,EAAG2B,GAAM,CACjCM,KAAM,aACN0G,KAAM,OACN4ma,aAAc,QACdtka,EAAG,EACHC,EAAG,EACH0ua,aAAc,mEACdc,OAAQ,OACRC,OAAQ,MACRC,KAAM,GACNnma,OAAQ,GAEZ,EACAgma,EAAev6a,UAAU8qE,OAAS,WAChC,IAAIhiE,EAAYhJ,KAAK4mF,eACjBg0V,EAAO56a,KAAKgC,IAAI,QACpBisa,IAASjla,GACT,IAAIsK,GAAM,UAAWsna,GAAQA,EAAK5xa,GAAa4xa,EAC/C,IAAI,UAAUtna,GACZtK,EAAU2E,YAAY2F,QACjB,IAAI,UAASA,KAAQ,UAASA,GAAM,CACzC,IAAI+nG,EAAM3tG,IAAU,GAAK4F,GACrB+nG,GACFryG,EAAU2E,YAAY0tG,EAE1B,CACAr7G,KAAKw6a,eACP,EACAC,EAAev6a,UAAUs6a,cAAgB,WACvC,IAAIxxa,EAAYhJ,KAAK4mF,eACjBzlF,EAAKnB,KAAKowa,cACZnla,EAAI9J,EAAG8J,EACPC,EAAI/J,EAAG+J,EACLwva,EAAS16a,KAAKgC,IAAI,UAClB24a,EAAS36a,KAAKgC,IAAI,UAClBuM,EAAUvO,KAAKgC,IAAI,WACnByM,EAAUzO,KAAKgC,IAAI,WACnB64a,EAAW5B,IAAcjwa,GACzB8xa,EAAYvB,IAAevwa,GAC3BmiD,EAAW,CACblgD,EAAGA,EACHC,EAAGA,GAEU,WAAXwva,EACFvvX,EAASlgD,GAAKgP,KAAKwoB,MAAMo4Y,EAAW,GAChB,UAAXH,IACTvvX,EAASlgD,GAAKgP,KAAKwoB,MAAMo4Y,IAEZ,WAAXF,EACFxvX,EAASjgD,GAAK+O,KAAKwoB,MAAMq4Y,EAAY,GACjB,WAAXH,IACTxvX,EAASjgD,GAAK+O,KAAKwoB,MAAMq4Y,IAEvBvsa,IACF48C,EAASlgD,GAAKsD,GAEZE,IACF08C,EAASjgD,GAAKuD,GAEhBgqZ,IAAUzvZ,EAAW,CACnBmiD,SAAU,WACVn8C,KAAMm8C,EAASlgD,EAAI,KACnBgE,IAAKk8C,EAASjgD,EAAI,KAClBuJ,OAAQzU,KAAKgC,IAAI,WAErB,EACOy4a,CACT,CA1EkC,CA0EhC,KACF,QC9EO,SAASM,IAAetja,EAAMs7Z,EAAaiI,GAChD,IAAIC,EAAYlI,EAAc,QAC1Bj3V,EAAS,KAUb,OATA,UAAKk/V,GAAa,SAAU/oa,EAAGsxC,GACzB9rC,EAAK8rC,IAAUtxC,EAAEgpa,KACdn/V,IACHA,EAAS,CAAC,IAEZ,UAAIA,EAAQ7pE,EAAEgpa,IAElB,IAEOn/V,CACT,CCRA,IAAIo/V,IAAwB,SAAUx5a,GAEpC,SAASw5a,IACP,OAAkB,OAAXx5a,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAooBA,OAvoBA,UAAUk7a,EAAUx5a,GAIpBw5a,EAASh7a,UAAU6B,cAAgB,WACjC,IAAIJ,EAAMD,EAAOxB,UAAU6B,cAAcH,KAAK5B,MAC9C,OAAO,WAAS,UAAS,CAAC,EAAG2B,GAAM,CACjCM,KAAM,OACNu/M,MAAO,GACPtrL,KAAM,CAAC,EACPilZ,SAAU,CAAC,EACXC,YAAa,KACbrpX,MAAO,KAIPnF,MAAO,CAAC,EAIRyuX,eAAgB,EAEhBC,oBAAqB,KACrBC,aAAc,CAAC,aAAc,eAAgB,YAC7CC,WAAY,CAAC,EACbzmD,SAAU,CAAC,EACXjzX,WAAY,CACVo0B,KAAM,CAEJpqB,MAAO,CACL2T,UAAW,EACX0B,OAAQ,IAAM80Z,YAGlBkF,SAAU,CAERrva,MAAO,CACL2T,UAAW,EACX0B,OAAQ,IAAM80Z,WAEhBwF,WAAW,EACX56a,OAAQ,EACR66a,kBAAkB,GAEpBN,YAAa,CAEXtva,MAAO,CACL2T,UAAW,EACX0B,OAAQ,IAAM80Z,WAEhBnlZ,MAAO,EACPjwB,OAAQ,GAEV+rD,MAAO,CACL4pX,YAAY,EACZmF,UAAU,EACVhG,cAAc,EACd7pa,MAAO,CACLgV,SAAU,GACV86B,KAAM,IAAM87B,UACZjkD,WAAY,IAAMA,WAClBC,WAAY,UAEdyvD,OAAQ,GACR50E,QAAS,EACTE,QAAS,GAEXsjD,MAAO,CACLykX,YAAY,EACZ95E,QAAS,EACTvxS,SAAU,SACVr/C,MAAO,CACLgV,SAAU,GACV86B,KAAM,IAAM87B,UACZx2D,aAAc,SACduS,WAAY,IAAMA,WAClBxS,UAAW,UAEbk+D,UAAW,CACTvjC,KAAM,IAAM06X,oBACZn1Z,OAAQ,IAAMk1Z,uBAEhBrvW,YAAa,IAEfw0W,WAAY,CACVjlT,OAAQ,CACNqlT,WAAY,CACVloZ,WAAY,KAEdmoZ,cAAe,CACbp8Z,UAAW,IAGf4nP,SAAU,CACRu0K,WAAY,CACVhgY,KAAM,IAAMo6X,kBAKlBjhD,SAAU,CACR+mD,QAAQ,EACRvgO,UAAW,MAGfjuG,MAAO,CAAC,GAEZ,EAIA4tU,EAASh7a,UAAUiya,YAAc,SAAUzga,GACrC1R,KAAKgC,IAAI,SACXhC,KAAK+7a,SAASrqa,GAGhB1R,KAAKg8a,UAAUtqa,GACX1R,KAAKgC,IAAI,UACXhC,KAAKi8a,UAAUvqa,EAEnB,EAEAwpa,EAASh7a,UAAUmsI,OAAS,WAC1B,OAAO,CACT,EAKA6uS,EAASh7a,UAAUg8a,SAAW,WAC5B,OAAOl8a,KAAKgC,IAAI,QAClB,EAKAk5a,EAASh7a,UAAUi8a,SAAW,SAAUh2X,GACtCnmD,KAAKwF,OAAO,CACVg8M,MAAOr7J,GAEX,EAMA+0X,EAASh7a,UAAUk8a,WAAa,SAAU3ka,EAAM9V,IAC9C,UAAI8V,EAAM9V,GACV3B,KAAKuP,QACLvP,KAAKgrE,QACP,EAIAkwW,EAASh7a,UAAUm8a,WAAa,WAC9B,IAAIjxH,EAAYprT,KAAKgxa,oBAAoB,eACzC5lH,GAAaA,EAAU77S,OACzB,EAOA2ra,EAASh7a,UAAUo8a,aAAe,SAAU7ka,EAAM8rC,EAAOphD,GACvDsV,EAAK8rC,GAASphD,EACdnC,KAAKu8a,iBAAiB9ka,EACxB,EAMAyja,EAASh7a,UAAUs8a,SAAW,SAAU/ka,EAAM8rC,GAC5C,QAAS9rC,EAAK8rC,EAChB,EACA23X,EAASh7a,UAAUu8a,cAAgB,SAAUhla,GAC3C,IAAI+ja,EAAax7a,KAAKgC,IAAI,cACtBsR,EAAM,GAOV,OANA,UAAKkoa,GAAY,SAAUvpa,EAAGvL,GACxB+Q,EAAK/Q,IAEP4M,EAAI/S,KAAKmG,EAEb,IACO4M,CACT,EAKA4na,EAASh7a,UAAUw8a,gBAAkB,SAAUn5X,GAC7C,IAAI9iD,EAAQT,KACRmmD,EAAQnmD,KAAK28a,gBAAgBp5X,IACjC,UAAK4C,GAAO,SAAU1uC,GACpBhX,EAAM67a,aAAa7ka,EAAM8rC,GAAO,EAClC,GACF,EAMA23X,EAASh7a,UAAUy8a,gBAAkB,SAAUp5X,GAC7C,IAAI9iD,EAAQT,KACRmmD,EAAQnmD,KAAKk8a,WACjB,OAAO,UAAO/1X,GAAO,SAAU1uC,GAC7B,OAAOhX,EAAM+7a,SAAS/ka,EAAM8rC,EAC9B,GACF,EACA23X,EAASh7a,UAAU08a,aAAe,SAAU5xa,EAAOm4E,GACjD,IACIjqD,EADOl5B,KACO68a,cAAc15V,EAAQn4E,GACxC,MAAO,CACLC,EAAGD,EAAMC,EAAIiuB,EAAO,GACpBhuB,EAAGF,EAAME,EAAIguB,EAAO,GAExB,EACAgiZ,EAASh7a,UAAU48a,cAAgB,SAAU5jZ,GAC3C,IAAIm7D,EAQJ,OAPI,UAAcn7D,EAAO,GAAI,GAC3Bm7D,EAAQ,SACCn7D,EAAO,GAAK,EACrBm7D,EAAQ,QACCn7D,EAAO,GAAK,IACrBm7D,EAAQ,OAEHA,CACT,EACA6mV,EAASh7a,UAAU68a,gBAAkB,SAAU7jZ,GAC7C,IAAIsJ,EAQJ,OAPI,UAActJ,EAAO,GAAI,GAC3BsJ,EAAO,SACEtJ,EAAO,GAAK,EACrBsJ,EAAO,MACEtJ,EAAO,GAAK,IACrBsJ,EAAO,UAEFA,CACT,EACA04Y,EAASh7a,UAAU88a,eAAiB,SAAUC,GAAa,EAE3D/B,EAASh7a,UAAU67a,SAAW,SAAUrqa,GACtC,IAAI7K,EAAO7G,KAAKk9a,cACZhnZ,EAAOl2B,KAAKgC,IAAI,QACpBhC,KAAKqR,SAASK,EAAO,CACnB/I,KAAM,OACN+K,GAAI1T,KAAKkxa,aAAa,QACtBjva,KAAM,YACNqE,OAAO,UAAI,CACTO,KAAMA,GACLqvB,EAAKpqB,QAEZ,EACAova,EAASh7a,UAAUi9a,iBAAmB,SAAU37N,GAC9C,IAAI/gN,EAAQT,KACRo9a,EAAgB,GAChBjC,EAAWn7a,KAAKgC,IAAI,YACpBy5a,EAAYN,EAASM,UACrB4B,EAAiBlC,EAASt6a,OAC1By8a,EAAc,EAyBlB,OAxBgB97N,EAAM3gN,QACL,IACfy8a,EAAc97N,EAAM,GAAGr/M,MAAQq/M,EAAM,GAAGr/M,QAE1C,UAAKq/M,GAAO,SAAU2yE,GACpB,IAAInpR,EAAQmpR,EAAKnpR,MACZywa,IAEHzwa,EAAQvK,EAAM88a,aAAappJ,EAAKhyR,MAAQm7a,EAAc,IAExD,IAAIpG,EAAWz2a,EAAMm8a,aAAa5xa,EAAOqya,GACzCD,EAAc78a,KAAK,CACjB48B,WAAYnyB,EACZ80Z,UAAW3rI,EAAKhyR,MAChB+0a,SAAUA,EACVsG,OAAQrpJ,EAAKzgR,GACbA,GAAI,YAAcygR,EAAKzgR,IAE3B,IAMO0pa,CACT,EACAlC,EAASh7a,UAAUu9a,oBAAsB,SAAUL,GACjD,IAAIM,EAAmB,GACnBtC,EAAcp7a,KAAKgC,IAAI,eACvB27a,EAAWvC,EAAYtqZ,MACvB8sZ,EAAgBR,EAAcv8a,OAElC,GAAI+8a,GAAiB,EACnB,IAAK,IAAI18a,EAAI,EAAGA,EAAI08a,EAAgB,EAAG18a,IAGrC,IAFA,IAAIgoJ,EAAMk0R,EAAcl8a,GACpBq0B,EAAO6nZ,EAAcl8a,EAAI,GACpBgG,EAAI,EAAGA,EAAIy2a,EAAUz2a,IAAK,CACjC,IAAI6xD,GAAW7xD,EAAI,IAAMy2a,EAAW,GAChC7d,GAAa,EAAI/mW,GAAWmwF,EAAI42Q,UAAY/mW,EAAUxjC,EAAKuqY,UAC3D90Z,EAAQhL,KAAKu9a,aAAazd,GAC1BoX,EAAWl3a,KAAK48a,aAAa5xa,EAAOowa,EAAYv6a,QACpD68a,EAAiBn9a,KAAK,CACpB48B,WAAYnyB,EACZksa,SAAUA,EACVpX,UAAWA,EACXpsZ,GAAI,OAASw1I,EAAIx1I,GAAK,IAAMxM,GAEhC,CAGJ,OAAOw2a,CACT,EACAxC,EAASh7a,UAAU29a,iBAAmB,SAAUC,EAAUn1a,EAAMX,EAAO+1a,GACrE,IAAIjya,EAAQ9L,KAAKgC,IAAI2G,GAAMmD,MAEvB2L,EAAO,CACTiJ,OAAQ,CAACo9Z,EAAS3gZ,WAAY2gZ,EAAS5G,WAErC8G,GAAuB,UAAIh+a,KAAKgC,IAAI,SAAU,CAAC,WAAY,SAAU,CAAC,GAC1E8J,GAAQ,UAAWA,IAAS,UAAI,CAAC,EAAGkya,EAAsBlya,EAAM2L,EAAMzP,EAAO+1a,IAAcjya,EAC3F,IAAIqxB,EAAa2gZ,EAAS3gZ,WACxB+5Y,EAAW4G,EAAS5G,SACtB,OAAO,UAAS,CACd90Z,GAAI+a,EAAWlyB,EACfoX,GAAI8a,EAAWjyB,EACfoX,GAAI40Z,EAASjsa,EACbsX,GAAI20Z,EAAShsa,GACZY,EACL,EAEAova,EAASh7a,UAAU+9a,SAAW,SAAUH,EAAUI,EAAev1a,EAAMX,EAAO+1a,GAC5E/9a,KAAKqR,SAAS6sa,EAAe,CAC3Bv1a,KAAM,OACN+K,GAAI1T,KAAKkxa,aAAa4M,EAASpqa,IAC/BzR,KAAM,QAAU0G,EAChBrC,MAAOtG,KAAK69a,iBAAiBC,EAAUn1a,EAAMX,EAAO+1a,IAExD,EAEA7C,EAASh7a,UAAUi+a,cAAgB,SAAUzsa,GAC3C,IAAIjR,EAAQT,KACRwhN,EAAQxhN,KAAKgC,IAAI,SACjBo5a,EAAcp7a,KAAKgC,IAAI,eACvBo7a,EAAgBp9a,KAAKm9a,iBAAiB37N,GACtC08N,EAAgBl+a,KAAKyR,SAASC,EAAO,CACvCzP,KAAM,sBACNyR,GAAI1T,KAAKkxa,aAAa,oBAEpBkN,EAAUp+a,KAAKgC,IAAI,YAYvB,IAXA,UAAKo7a,GAAe,SAAU3la,EAAMzP,GAClC,GAAIo2a,EAAQ1C,iBAAkB,CAE5B,IAAI2C,EAAU59a,EAAMywa,aAAa,SAAWz5Z,EAAK+la,QAC7C9ra,EAAM+B,SAAS4qa,IACjB59a,EAAMw9a,SAASxma,EAAMyma,EAAe,WAAYl2a,EAAOo1a,EAE3D,MACE38a,EAAMw9a,SAASxma,EAAMyma,EAAe,WAAYl2a,EAAOo1a,EAE3D,IACIhC,EAAa,CACf,IAAIkD,EAAqBt+a,KAAKy9a,oBAAoBL,IAClD,UAAKkB,GAAoB,SAAU7ma,EAAMzP,GACvCvH,EAAMw9a,SAASxma,EAAMyma,EAAe,cAAel2a,EAAOs2a,EAC5D,GACF,CACF,EAEApD,EAASh7a,UAAUq+a,aAAe,WAChC,IAAI99a,EAAQT,KACRwhN,EAAQxhN,KAAKgC,IAAI,UACrB,UAAKw/M,GAAO,SAAU2yE,GACpBA,EAAKnpR,MAAQvK,EAAM88a,aAAappJ,EAAKhyR,QAEjC,UAAMgyR,EAAKzgR,MAEbygR,EAAKzgR,GAAKygR,EAAKlyR,KAEnB,GACF,EAEAi5a,EAASh7a,UAAU87a,UAAY,SAAUtqa,GACvC,IAAIjR,EAAQT,KACZA,KAAKw+a,gBACLx+a,KAAKu+a,eACDv+a,KAAKgC,IAAI,UACXhC,KAAKy+a,WAAW/sa,GAEd1R,KAAKgC,IAAI,aACXhC,KAAKm+a,cAAczsa,GAErB,IAAI8vM,EAAQxhN,KAAKgC,IAAI,UACrB,UAAKw/M,GAAO,SAAU2yE,GACpB1zR,EAAMi+a,gBAAgBvqJ,EAAMziR,EAC9B,GACF,EAIAwpa,EAASh7a,UAAUs+a,cAAgB,WACjC,IAAIzpD,EAAW/0X,KAAKgC,IAAI,YACpBw/M,EAAQxhN,KAAKgC,IAAI,SACrB,GAAI+yX,GAAYA,EAAS+mD,QAAU/mD,EAASx5K,UAAY,EAAG,CACzD,IAAI/gL,GAAM,UAAKgnL,GACf,GAAIhnL,EAAMu6V,EAASx5K,UAAW,CAC5B,IAAIojO,EAAS1ka,KAAKisJ,KAAK1rI,EAAMu6V,EAASx5K,WAClCqjO,EAAiBp9N,EAAMjxM,QAAO,SAAU4jR,EAAMjvP,GAChD,OAAOA,EAAMy5Y,GAAW,CAC1B,IACA3+a,KAAKkC,IAAI,QAAS08a,GAClB5+a,KAAKkC,IAAI,gBAAiBs/M,EAC5B,CACF,CACF,EAEA05N,EAASh7a,UAAU2+a,cAAgB,SAAU1qJ,EAAMnsR,EAAOw5M,GACxD,IAAIs9N,EAAW9+a,KAAKgC,IAAI,SACpBmhF,EAAS27V,EAAS37V,OACpB50E,EAAUuwa,EAASvwa,QACnBE,EAAUqwa,EAASrwa,QACnBwK,EAAS6la,EAAS7la,OAClB8wU,EAAY+0F,EAAS/0F,UACnB/+U,EAAQhL,KAAK48a,aAAazoJ,EAAKnpR,MAAOm4E,GACtCjqD,EAASl5B,KAAK68a,cAAc15V,EAAQn4E,GACpC6V,EAAOkpU,EAAYA,EAAU51D,EAAKlyR,KAAMkyR,EAAMnsR,GAASmsR,EAAKlyR,KAC5D6J,EAAQgza,EAAShza,MACrBA,GAAQ,UAAWA,IAAS,UAAI9L,KAAKgC,IAAI,SAAU,CAAC,QAAS,SAAU,CAAC,GAAK8J,EAC7E,IAAIxF,GAAQ,UAAI,CACd2E,EAAGD,EAAMC,EAAIsD,EACbrD,EAAGF,EAAME,EAAIuD,EACboS,KAAMA,EACNI,UAAWjhB,KAAK88a,cAAc5jZ,GAC9BhY,aAAclhB,KAAK+8a,gBAAgB7jZ,IAClCptB,GAIH,OAHImN,IACF3S,EAAM6K,OAASw8Z,IAAiB3ia,EAAOiO,IAElC3S,CACT,EAEA40a,EAASh7a,UAAUu+a,WAAa,SAAU/sa,GACxC,IAAIjR,EAAQT,KACRwhN,EAAQxhN,KAAKgC,IAAI,SACjBi7a,EAAaj9a,KAAKyR,SAASC,EAAO,CACpCzP,KAAM,mBACNyR,GAAI1T,KAAKkxa,aAAa,kBAExB,UAAK1vN,GAAO,SAAU2yE,EAAMnsR,GAC1BvH,EAAM4Q,SAAS4ra,EAAY,CACzBt0a,KAAM,OACN1G,KAAM,aACNyR,GAAIjT,EAAMywa,aAAa,SAAW/8I,EAAKzgR,IACvCpN,MAAO7F,EAAMo+a,cAAc1qJ,EAAMnsR,EAAOw5M,GACxCnpM,eAAgB,CACd87Q,KAAMA,EACN18Q,KAAM08Q,EACNnsR,MAAOA,IAGb,IACAhI,KAAKg9a,eAAeC,GAEpB,IAAIlpK,EAASkpK,EAAW3sa,cACpByua,GAAoB,UAAI/+a,KAAKgC,IAAI,SAAU,CAAC,QAAS,SAAU,CAAC,GAChEb,EAAKnB,KAAKgC,IAAI,SAChB8J,EAAQ3K,EAAG2K,MACXi+U,EAAY5oV,EAAG4oV,UACjB,IAAI,UAAWj+U,GAAQ,CACrB,IAAIkza,EAAsBjrK,EAAO/iP,KAAI,SAAU47B,GAC7C,OAAO,UAAIA,EAAM5qD,IAAI,kBAAmB,OAC1C,KACA,UAAK+xQ,GAAQ,SAAUnnN,EAAO5kD,GAC5B,IAAImsR,EAAOvnO,EAAM5qD,IAAI,kBAAkBmyR,KACnCtzQ,EAAOkpU,EAAYA,EAAU51D,EAAKlyR,KAAMkyR,EAAMnsR,GAASmsR,EAAKlyR,KAC5Dg9a,GAAW,UAAI,CAAC,EAAGF,EAAmBjza,EAAM+U,EAAM7Y,EAAOg3a,IAC7DpyX,EAAMxmD,KAAK64a,EACb,GACF,CACF,EAEA/D,EAASh7a,UAAUg/a,cAAgB,WACjC,IAAIC,EAAWn/a,KAAKgC,IAAI,SACpB8J,EAAQqza,EAASrza,MACnBq/C,EAAWg0X,EAASh0X,SACpBg4B,EAASg8V,EAASh8V,OAClBhiF,EAAKg+a,EAASziF,QACdA,OAAiB,IAAPv7V,EAAgB,EAAIA,EAC9Bq1a,EAAa2I,EAAS3I,WACpBxhT,EAAclpH,EAAMgV,SACpBi4C,EAAU,GACG,UAAb5N,EACF4N,EAAU,EACY,QAAb5N,IACT4N,EAAU,GAEZ,IAAI/tD,EAAQhL,KAAKu9a,aAAaxkX,GAE1BqmX,EAAap/a,KAAK48a,aAAa5xa,EAAOm4E,GAAUu5Q,EAAU1nO,EAAc,GACxE1uH,GAAQ,UAAI,CACd2E,EAAGm0a,EAAWn0a,EACdC,EAAGk0a,EAAWl0a,EACd2V,KAAMs+Z,EAASt+Z,MACd/U,GACCmN,EAASkma,EAASlma,OAClByO,EAAQzO,EACZ,IAAI,UAAMA,IAAWu9Z,EAAY,CAE/B,IAAIt9Y,EAASl5B,KAAKq/a,cAAcr0a,GAEhC0c,EAAQ0kM,IAAA,GAAYlzL,EADX,CAAC,EAAG,IACmB,EAClC,CACA,GAAIxR,EAAO,CACT,IAAIvW,EAASw8Z,IAAiByR,EAAY13Z,GAC1CphB,EAAM6K,OAASA,CACjB,CACA,OAAO7K,CACT,EAEA40a,EAASh7a,UAAU+7a,UAAY,SAAUvqa,GACvC,IAAIvQ,EACAm+a,EAAat/a,KAAKk/a,gBAClBK,EAAav/a,KAAKqR,SAASK,EAAO,CACpC/I,KAAM,OACN+K,GAAI1T,KAAKkxa,aAAa,SACtBjva,KAAM,aACNqE,MAAOg5a,KAGwB,QAA5Bn+a,EAAKnB,KAAKgC,IAAI,gBAA6B,IAAPb,OAAgB,EAASA,EAAG6lE,cACnEhnE,KAAKw/a,oBAAoB9ta,EAAO6ta,EAAYD,EAAWnua,OAE3D,EACA+pa,EAASh7a,UAAUs/a,oBAAsB,SAAU9ta,EAAO6ta,EAAYpua,GACpE,IAAIsua,EAAmBz/a,KAAKyR,SAASC,EAAO,CAC1CzP,KAAM,mBACNyR,GAAI1T,KAAKyN,eAAe,iBAEtBtM,EAAKo+a,EAAWtva,UAClBE,EAAOhP,EAAGgP,KACVE,EAAOlP,EAAGkP,KACVrC,EAAS7M,EAAG6M,OACVmxE,EAAYn/E,KAAKgC,IAAI,SAASm9E,UAE9BjgE,EAAIlR,EAAS,EACbyR,EAAYP,EAAI,EAChBgwR,EAAS/+R,EAHC,EAIVg/R,EAAS9+R,EAAOrC,EAAS,EAGzBkJ,EAAK,CAACg4R,EAAShwR,EAAGiwR,EAASjwR,GAC7BwN,EAAKxV,EAAG,GACRyV,EAAKzV,EAAG,GACNC,EAAK,CAACuV,EAAKxN,EAAGyN,EAAKzN,GACrBkD,EAAKjL,EAAG,GACRkL,EAAKlL,EAAG,GACNmnB,EAAK,CAAC5R,EAAIrK,EAAKnD,GACjBoD,EAAKgc,EAAG,GACR/b,EAAK+b,EAAG,GACNC,EAAK,CAAC2wQ,EAAQviR,EAAKzN,GACrB2M,EAAK0S,EAAG,GACRzS,EAAKyS,EAAG,GAENC,EAAK,CAAC0wQ,EAAShwR,EAAGiwR,EAASnhS,EAAS,GACtC+d,EAAKyS,EAAG,GACRxS,EAAKwS,EAAG,GACNC,EAAK,CAAC1S,EAAIC,EAAKvM,GACjBiga,EAAKjhZ,EAAG,GACRkhZ,EAAKlhZ,EAAG,GACNC,EAAK,CAACghZ,EAAIC,EAAKlga,GACjBmga,EAAKlhZ,EAAG,GACRmhZ,EAAKnhZ,EAAG,GACNqoQ,EAAK,CAAC64I,EAAIC,EAAS,EAAJ3ga,EAAQ,GACzB4ga,EAAK/4I,EAAG,GACRg5I,EAAKh5I,EAAG,GACV/mS,KAAKqR,SAASoua,EAAkB,CAC9B92a,KAAM,OACN+K,GAAI1T,KAAKkxa,aAAa,0BACtBjva,KAAM,8BACNqE,OAAO,UAAS,CACdO,KAAM,CAAC,CAAC,IAAK6lB,EAAIC,GAAK,CAAC,IAAKzN,EAAGA,EAAG,EAAG,EAAG,EAAGkD,EAAIC,GAAK,CAAC,IAAKnD,EAAGA,EAAG,EAAG,EAAG,EAAGoD,EAAIC,GAAK,CAAC,IAAKrD,EAAGA,EAAG,EAAG,EAAG,EAAG2M,EAAIC,GAAK,CAAC,IAAK5M,EAAGA,EAAG,EAAG,EAAG,EAAGwN,EAAIC,GAAK,CAAC,IAAKZ,EAAIC,GAAK,CAAC,IAAK0zZ,EAAIC,GAAK,CAAC,IAAKC,EAAIC,GAAK,CAAC,IAAKC,EAAIC,IACrMtga,UAAWA,EACXtO,OAAQA,GACPguE,KAGLn/E,KAAKqR,SAASoua,EAAkB,CAC9B92a,KAAM,OACN+K,GAAI1T,KAAKkxa,aAAa,0BACtBjva,KAAM,8BACNqE,MAAO,CACL2E,EAAGikS,EACHhkS,EAAGikS,EAASnhS,EAAS,EACrBD,MAAOC,EACPA,OAAQA,EACRmT,OAAQ,OACRy6B,KAAM,OACNjnC,QAAS,EACTxD,OAAQA,EACRpF,OAAQ,YAGd,EACAmva,EAASh7a,UAAUw+a,gBAAkB,SAAUvqJ,EAAMziR,GAEnD,GADa1R,KAAKy8a,cAActoJ,GACrBtzR,OAAQ,CACjB,IAAI26a,EAAax7a,KAAKgC,IAAI,cAEtBq8a,EAAUr+a,KAAKkxa,aAAa,SAAW/8I,EAAKzgR,IAC5Cssa,EAAatua,EAAM+B,SAAS4qa,GAChC,GAAI2B,EAAY,CACd,IAAIC,EAAkBlF,IAAe5mJ,EAAM,QAASqnJ,GACpDyE,GAAmBD,EAAW55a,KAAK65a,EACrC,CACA,IAAIC,EAAalgb,KAAKkxa,aAAa,YAAc/8I,EAAKzgR,IAClDysa,EAAgBzua,EAAM+B,SAASysa,GACnC,GAAIC,EAAe,CACjB,IAAIC,EAAqBrF,IAAe5mJ,EAAM,WAAYqnJ,GAC1D4E,GAAsBD,EAAc/5a,KAAKg6a,EAC3C,CACF,CACF,EACAlF,EAASh7a,UAAUq8a,iBAAmB,SAAUpoJ,GAC9C,IAAIksJ,EAASrgb,KAAKy8a,cAActoJ,GAC5BqnJ,EAAax7a,KAAKgC,IAAI,cACtB88a,EAAW9+a,KAAKgC,IAAI,SACpBg+a,EAAahgb,KAAKgxa,oBAAoB,SAAW78I,EAAKzgR,IACtD4sa,EAActgb,KAAKgC,IAAI,YACvBm+a,EAAgBngb,KAAKgxa,oBAAoB,YAAc78I,EAAKzgR,IAChE,GAAI2sa,EAAOx/a,OAAQ,CACjB,GAAIm/a,EAAY,CACd,IAAIC,EAAkBlF,IAAe5mJ,EAAM,QAASqnJ,GACpDyE,GAAmBD,EAAW55a,KAAK65a,EACrC,CACA,GAAIE,EAAe,CACjB,IAAIC,EAAqBrF,IAAe5mJ,EAAM,WAAYqnJ,GAC1D4E,GAAsBD,EAAc/5a,KAAKg6a,EAC3C,CACF,MACMJ,GACFA,EAAW55a,KAAK04a,EAAShza,OAEvBq0a,GACFA,EAAc/5a,KAAKk6a,EAAYx0a,MAGrC,EACOova,CACT,CAzoB4B,CAyoB1B,KACF,QC/oBA,SAASqF,IAAcloH,EAAY4kH,EAAYxI,EAAatpX,GAC1D,IAAIt7C,EAAWota,EAAW3sa,cACtByka,GAAe,EAKnB,OAJA,UAAKlla,GAAU,SAAU+8C,GACvB,IAAIt5C,EAAMkha,IAAcn8G,EAAYzrQ,EAAO6nX,EAAatpX,GACxD4pX,EAAeA,GAAgBzha,CACjC,IACOyha,CACT,CACO,SAASyL,MACd,OAAOC,GACT,CACO,SAASC,IAAaroH,EAAY4kH,EAAYxI,GACnD,OAAO8L,IAAcloH,EAAY4kH,EAAYxI,EAAa,OAC5D,CACO,SAASgM,IAAapoH,EAAY4kH,EAAYxI,GACnD,OAAO8L,IAAcloH,EAAY4kH,EAAYxI,EAAa,OAC5D,CACO,SAASkM,IAAetoH,EAAY4kH,EAAYxI,GACrD,OAAO8L,IAAcloH,EAAY4kH,EAAYxI,EAAa,SAC5D,CCbA,SAASmM,IAAeh0X,GACtB,IAAIllC,EANN,SAAkBklC,GAChB,IAAIz7C,EAASy7C,EAAMxmD,KAAK,UACxB,OAAO+K,GAAwB,IAAdA,EAAO,EAC1B,CAGc0va,CAASj0X,G3BWhB,SAA0Bz7C,GAC/B,IACI+R,EAAM,CAAC,EAAG,EAAG,GAEjB,OADA,IAAmBA,EAFL,CAAC,EAAG,EAAG,GAEY/R,GAC1B8I,KAAKqG,MAAM4C,EAAI,GAAIA,EAAI,GAChC,C2BhBgC49Z,CAAiBl0X,EAAMxmD,KAAK,WAAa,EACvE,OAAOshB,EAAQ,GACjB,CAiBA,SAASq5Z,IAAU1oH,EAAY97R,EAAO8qL,EAAQ25N,GAC5C,IAAIpnH,GAAU,EACVlyS,EAAQk5Z,IAAerkZ,GACvBpI,EAAWkkS,EAAap+S,KAAKoG,IAAIgnM,EAAOjhN,KAAK,KAAOm2B,EAAMn2B,KAAK,MAAQ6T,KAAKoG,IAAIgnM,EAAOjhN,KAAK,KAAOm2B,EAAMn2B,KAAK,MAC9G66a,GAAY5oH,EAAahxG,EAAOjhN,KAAK,KAAOm2B,EAAMn2B,KAAK,KAAOihN,EAAOjhN,KAAK,KAAOm2B,EAAMn2B,KAAK,MAAQm2B,EAAMtsB,UAAYo3M,EAAOp3M,UACjI,GAAIooT,EAAY,CACd,IAAIzyT,EAAQqU,KAAKoG,IAAIpG,KAAKkC,IAAIuL,IAE5BkyS,EADE20G,IAAK3oa,EAAO,EAAGqU,KAAK+B,GAAK,KACjBila,EAASlza,MAAQiza,EAAS7sZ,EAE1B8sZ,EAASjza,OAASpI,EAAQo7a,EAAS7sZ,CAEjD,KAAO,CACDvuB,EAAQqU,KAAKoG,IAAIpG,KAAKoC,IAAIqL,IAE5BkyS,EADE20G,IAAK3oa,EAAO,EAAGqU,KAAK+B,GAAK,KACjBila,EAASlza,MAAQiza,EAAS7sZ,EAE1B8sZ,EAASjza,OAASpI,EAAQo7a,EAAS7sZ,CAEjD,CACA,OAAOylS,CACT,CAEA,SAASsnH,IAAW7oH,EAAY8oH,EAAa1iE,EAAU2iE,GACrD,IAAIJ,GAAUI,aAAiD,EAASA,EAAYJ,SAAW,EAC3FjtK,EAASotK,EAAY7wa,cAAc0W,QACtCzW,QAAO,SAAUkH,GAChB,OAAOA,EAAKzV,IAAI,UAClB,IACA,IAAK+xQ,EAAOlzQ,OACV,OAAO,EAET,IAAIwgb,GAAU,EACV5iE,GAEF1qG,EAAOnjP,UAKT,IAHA,IAAIE,EAAQijP,EAAOlzQ,OAEfy0B,EADQy+O,EAAO,GAEV7yQ,EAAI,EAAGA,EAAI4vB,EAAO5vB,IAAK,CAC9B,IAAI0rD,EAAQmnN,EAAO7yQ,GACL0rD,EAAM38C,UAEP8wa,IAAU1oH,EAAY/iS,EAAMs3B,EAAOo0X,IAE9Cp0X,EAAMr3C,OACN8ra,GAAU,GAEV/rZ,EAAOs3B,CAEX,CACA,OAAOy0X,CACT,CAEA,SAASC,IAAWjpH,EAAY8oH,EAAaC,GAC3C,IAAIJ,GAAUI,aAAiD,EAASA,EAAYJ,SAAW,EAC3FjtK,EAASotK,EAAY7wa,cAAc0W,QACvC,GAAI+sP,EAAOlzQ,OAAS,EAElB,OAAO,EAET,IAAIwgb,GAAU,EACV9kZ,EAAQw3O,EAAO,GACfwtK,EAAYhlZ,EAAMtsB,UAClBo3M,EAAS0sD,EAAO,GAChBjjP,EAAQijP,EAAOlzQ,OACf6mB,EAAQk5Z,IAAerkZ,GACvBpI,EAAWkkS,EAAap+S,KAAKoG,IAAIgnM,EAAOjhN,KAAK,KAAOm2B,EAAMn2B,KAAK,MAAQ6T,KAAKoG,IAAIgnM,EAAOjhN,KAAK,KAAOm2B,EAAMn2B,KAAK,MAC9G5D,EAAW,EACf,GAAI61T,EAAY,CAEd,IAAIzyT,EAAQqU,KAAKoG,IAAIpG,KAAKkC,IAAIuL,IAC9B,GAAI6mZ,IAAK3oa,EAAO,EAAGqU,KAAK+B,GAAK,KAE3BxZ,GADe6xa,IAAiBtgK,GACTitK,GAAU7sZ,OAEjC3xB,GAAY++a,EAAUvza,OAASpI,EAAQo7a,GAAU7sZ,CAErD,KAAO,CAEDvuB,EAAQqU,KAAKoG,IAAIpG,KAAKoC,IAAIqL,IAC9B,GAAI6mZ,IAAK3oa,EAAO,EAAGqU,KAAK+B,GAAK,KAE3BxZ,GADe6xa,IAAiBtgK,GACTitK,GAAU7sZ,OAEjC3xB,GAAY++a,EAAUvza,OAASpI,EAAQo7a,GAAU7sZ,CAErD,CAEA,GAAI3xB,EAAW,EAAG,CAChBA,EAAWyX,KAAKisJ,KAAK1jK,GACrB,IAAK,IAAItB,EAAI,EAAGA,EAAI4vB,EAAO5vB,IACrBA,EAAIsB,GAAa,IAEnBuxQ,EAAO7yQ,GAAGqU,OACV8ra,GAAU,EAGhB,CACA,OAAOA,CACT,CACO,SAAS,MACd,OAAOG,GACT,CAQO,SAASC,IAAappH,EAAY8oH,EAAa1M,EAAa2M,GACjE,OAAOF,IAAW7oH,EAAY8oH,GAAa,EAAOC,EACpD,CAQO,SAASM,IAAYrpH,EAAY8oH,EAAa1M,EAAa2M,GAChE,OAAOF,IAAW7oH,EAAY8oH,GAAa,EAAMC,EACnD,CAQO,SAASO,IAAYtpH,EAAY8oH,EAAa1M,EAAa2M,GAChE,IAAIJ,GAAUI,aAAiD,EAASA,EAAYJ,SAAW,EAC3FjtK,EAASotK,EAAY7wa,cAAc0W,QACvC,GAAI+sP,EAAOlzQ,QAAU,EAEnB,OAAO,EAQT,IANA,IAAIwgb,GAAU,EACVvwZ,EAAQijP,EAAOlzQ,OACf07B,EAAQw3O,EAAO,GACfz0O,EAAOy0O,EAAOjjP,EAAQ,GACtB8wZ,EAAWrlZ,EAENr7B,EAAI,EAAGA,EAAI4vB,EAAQ,EAAG5vB,IAAK,CAClC,IAAI0rD,EAAQmnN,EAAO7yQ,GACL0rD,EAAM38C,UAEP8wa,IAAU1oH,EAAYupH,EAAUh1X,EAAOo0X,IAElDp0X,EAAMr3C,OACN8ra,GAAU,GAEVO,EAAWh1X,CAEf,CAOA,OANcm0X,IAAU1oH,EAAYupH,EAAUtiZ,EAAM0hZ,KAGlDY,EAASrsa,OACT8ra,GAAU,GAELA,CACT,CAQO,SAASG,IAAanpH,EAAY8oH,EAAa1M,EAAa2M,GACjE,IAAIC,EAAUC,IAAWjpH,EAAY8oH,EAAaC,GAKlD,OAHIF,IAAW7oH,EAAY8oH,GAAa,KACtCE,GAAU,GAELA,CACT,CAQO,SAASQ,IAA4BxpH,EAAY8oH,EAAa1M,EAAa2M,GAChF,IAAIrtK,EAASotK,EAAY7wa,cAAc0W,QACnCq6Z,EAAUC,IAAWjpH,EAAY8oH,EAAaC,GAClD,GAAIrtK,EAAOlzQ,OAAS,EAAG,CACrB,IAAI07B,EAAQw3O,EAAO,GACfz0O,EAAOy0O,EAAOA,EAAOlzQ,OAAS,GAE7B07B,EAAMv6B,IAAI,aACbu6B,EAAMjnB,OACF4ra,IAAW7oH,EAAY8oH,GAAa,EAAOC,KAC7CC,GAAU,IAIT/hZ,EAAKt9B,IAAI,aACZs9B,EAAKhqB,OACD4ra,IAAW7oH,EAAY8oH,GAAa,EAAMC,KAC5CC,GAAU,GAGhB,CACA,OAAOA,CACT,CC7NA,SAASS,IAAYzpH,EAAY8oH,EAAa1M,EAAax7Y,GACzD,IAAI86O,EAASotK,EAAY7wa,cACzB,IAAKyjQ,EAAOlzQ,OACV,OAAO,EAET,IAAKw3T,GAActkD,EAAOlzQ,OAAS,EAEjC,OAAO,EAET,IAAIglC,EAAWwuY,IAAiBtgK,GAC5BgtK,GAAY,EACZ1oH,EAEF0oH,IAActM,GAAe5uY,EAAW4uY,EAIxCsM,EAAYl7Y,EADI5rB,KAAKoG,IAAI0zP,EAAO,GAAG3tQ,KAAK,KAAO2tQ,EAAO,GAAG3tQ,KAAK,MAG5D26a,GA/BN,SAAwBhtK,EAAQrsP,IAC9B,UAAKqsP,GAAQ,SAAUnnN,GACrB,IAEIz7C,EAASw8Z,IAAiB,CAC5B1ia,EAHM2hD,EAAMxmD,KAAK,KAIjB8E,EAHM0hD,EAAMxmD,KAAK,MAIhBshB,GACHklC,EAAMxmD,KAAK,SAAU+K,EACvB,GACF,CAuBI4wa,CAAehuK,EADH96O,EAASw7Y,EAAa5uY,IAGpC,OAAOk7Y,CACT,CACO,SAAS,MACd,OAAOiB,GACT,CASO,SAASA,IAAW3pH,EAAY8oH,EAAa1M,EAAawN,GAC/D,OAAOH,IAAYzpH,EAAY8oH,EAAa1M,GAAa,WACvD,OAAI,UAASwN,GACJA,EAEF5pH,EAAa,IAAM89G,mBAAqB,IAAMC,oBACvD,GACF,CAQO,SAAS8L,IAAa7pH,EAAY8oH,EAAa1M,GACpD,OAAOqN,IAAYzpH,EAAY8oH,EAAa1M,GAAa,SAAU5za,EAAQglC,GACzE,IAAKhlC,EAEH,OAAOw3T,EAAa,IAAM89G,mBAAqB,IAAMC,qBAEvD,GAAI/9G,EAEF,OAAQp+S,KAAKgG,KAAKpf,EAASglC,GAE3B,IAAIne,EAAQ,EAWZ,OAVI7mB,EAASglC,IAIXne,EAAQzN,KAAKoE,KAAKxd,EAASglC,IACf5rB,KAAK+B,GAAK,KAHtB0L,EAAQzN,KAAK+B,GAAK,GAQb0L,CAEX,GACF,CCvFA,ICLIvmB,IDKA,IAAoB,SAAUO,GAEhC,SAASygb,IACP,OAAkB,OAAXzgb,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAuLA,OA1LA,UAAUmib,EAAMzgb,GAIhBygb,EAAKjib,UAAU6B,cAAgB,WAC7B,IAAIJ,EAAMD,EAAOxB,UAAU6B,cAAcH,KAAK5B,MAC9C,OAAO,WAAS,UAAS,CAAC,EAAG2B,GAAM,CACjCgH,KAAM,OACN4ma,aAAc,SAKd7oZ,MAAO,KAKPmI,IAAK,MAET,EAEAszZ,EAAKjib,UAAUg9a,YAAc,WAC3B,IAAIx2Z,EAAQ1mB,KAAKgC,IAAI,SACjB6sB,EAAM7uB,KAAKgC,IAAI,OACf6E,EAAO,GAGX,OAFAA,EAAKtG,KAAK,CAAC,IAAKmmB,EAAMzb,EAAGyb,EAAMxb,IAC/BrE,EAAKtG,KAAK,CAAC,IAAKsuB,EAAI5jB,EAAG4jB,EAAI3jB,IACpBrE,CACT,EAEAs7a,EAAKjib,UAAUyxa,mBAAqB,WAClC,IAAIjrZ,EAAQ1mB,KAAKgC,IAAI,SACjB6sB,EAAM7uB,KAAKgC,IAAI,OACf8M,EAAOpN,EAAOxB,UAAUyxa,mBAAmB/va,KAAK5B,MAChDkQ,EAAO+J,KAAKC,IAAIwM,EAAMzb,EAAG4jB,EAAI5jB,EAAG6D,EAAK7D,GACrCmF,EAAO6J,KAAKC,IAAIwM,EAAMxb,EAAG2jB,EAAI3jB,EAAG4D,EAAK5D,GACrCiF,EAAO8J,KAAKE,IAAIuM,EAAMzb,EAAG4jB,EAAI5jB,EAAG6D,EAAKqB,MACrCE,EAAO4J,KAAKE,IAAIuM,EAAMxb,EAAG2jB,EAAI3jB,EAAG4D,EAAKuB,MACzC,MAAO,CACLpF,EAAGiF,EACHhF,EAAGkF,EACHF,KAAMA,EACNE,KAAMA,EACND,KAAMA,EACNE,KAAMA,EACNtC,MAAOoC,EAAOD,EACdlC,OAAQqC,EAAOD,EAEnB,EACA+xa,EAAKjib,UAAUm4T,WAAa,WAC1B,IAAI3xS,EAAQ1mB,KAAKgC,IAAI,SACjB6sB,EAAM7uB,KAAKgC,IAAI,OACnB,OAAO,UAAc0kB,EAAMzb,EAAG4jB,EAAI5jB,EACpC,EACAk3a,EAAKjib,UAAUkib,aAAe,WAC5B,IAAI17Z,EAAQ1mB,KAAKgC,IAAI,SACjB6sB,EAAM7uB,KAAKgC,IAAI,OACnB,OAAO,UAAc0kB,EAAMxb,EAAG2jB,EAAI3jB,EACpC,EACAi3a,EAAKjib,UAAUq9a,aAAe,SAAUzd,GACtC,IACIp5Y,EADO1mB,KACMgC,IAAI,SACjB6sB,EAFO7uB,KAEIgC,IAAI,OACfqgb,EAAUxzZ,EAAI5jB,EAAIyb,EAAMzb,EACxBq3a,EAAUzzZ,EAAI3jB,EAAIwb,EAAMxb,EAC5B,MAAO,CACLD,EAAGyb,EAAMzb,EAAIo3a,EAAUviB,EACvB50Z,EAAGwb,EAAMxb,EAAIo3a,EAAUxiB,EAE3B,EAEAqiB,EAAKjib,UAAU28a,cAAgB,SAAU15V,GACvC,IAAIo/V,EAAavib,KAAKq/a,gBAClBrwM,EAASl6M,IAAA,GAAe,CAAC,EAAG,GAAIytZ,GAChChhO,EAASvhN,KAAKgC,IAAI,kBAClBwgb,EAAiB,CAACxzM,EAAO,IAAiB,EAAbA,EAAO,IACxC,OAAOl6M,IAAA,GAAW,CAAC,EAAG,GAAI0tZ,EAAgBr/V,EAASo+H,EACrD,EAEA4gO,EAAKjib,UAAUm/a,cAAgB,WAC7B,IAAI34Z,EAAQ1mB,KAAKgC,IAAI,SACjB6sB,EAAM7uB,KAAKgC,IAAI,OACnB,MAAO,CAAC6sB,EAAI5jB,EAAIyb,EAAMzb,EAAG4jB,EAAI3jB,EAAIwb,EAAMxb,EACzC,EACAi3a,EAAKjib,UAAU88a,eAAiB,SAAUC,GACxC,IAAIx8a,EAAQT,KACRq4T,EAAar4T,KAAKq4T,aAClB+pH,EAAepib,KAAKoib,eAExB,GAAK/pH,GAAe+pH,EAApB,CAGA,IAAItD,EAAW9+a,KAAKgC,IAAI,SACpBm9a,EAAWn/a,KAAKgC,IAAI,SACpBs5a,EAAsBt7a,KAAKgC,IAAI,uBAC/B+3T,EAAc+kH,EAAS37V,OACvBsxV,EAAc6G,EACdtmT,EAAc,EACdytT,EAAe,EACftD,IACFnqT,EAAcmqT,EAASrza,MAAMgV,SAC7B2ha,EAAetD,EAASziF,SAEtB+3E,IACFA,EAAcA,EAAc16G,EAAc0oH,EAAeztT,GAE3D,IAAIumT,EAAev7a,KAAKgC,IAAI,gBAM5B,IALA,UAAKu5a,GAAc,SAAUt5a,GACvB68a,EAAS78a,IAASxB,EAAMiib,kBAAkBzgb,IAC5CxB,EAAMkib,mBAAmB1gb,EAAM68a,EAAS78a,GAAOg7a,EAAYxI,EAE/D,IACI0K,IACE,UAAMA,EAASh8V,QAAS,CAE1B,IAAIr0E,EAAOmua,EAAWrsa,gBAClBrP,EAAW82T,EAAavpT,EAAKf,MAAQe,EAAKd,OAE9Cmxa,EAASh8V,OAAS42O,EAAcx4T,EAAWkhb,EAAeztT,EAAc,CAC1E,CA5BF,CA8BF,EAKAmtT,EAAKjib,UAAUwib,kBAAoB,SAAUzgb,GAC3C,IAAI68a,EAAW9+a,KAAKgC,IAAI,SAExB,MAAa,eAATC,IACK,UAAM68a,EAAS7la,OAI1B,EACAkpa,EAAKjib,UAAUyib,mBAAqB,SAAU1gb,EAAME,EAAO86a,EAAYxI,GACrE,IAAIh0a,EAAQT,KACRq4T,EAAar4T,KAAKq4T,aAClBuqH,GAAc,EACdC,EAAO,EAAY5gb,GACvB,IAAc,IAAVE,EAAgB,CACHnC,KAAKgC,IAAI,SAExB4gb,EAAcC,EAAKrC,YAALqC,CAAkBxqH,EAAY4kH,EAAYxI,EAC1D,MAAO,IAAI,UAAWtya,GAEpBygb,EAAczgb,EAAMk2T,EAAY4kH,EAAYxI,QACvC,IAAI,UAAStya,GAAQ,CAE1B,IAAI2gb,EAAa3gb,EACb0gb,EAAKC,EAAWn6a,QAClBi6a,EAAcC,EAAKC,EAAWn6a,MAAM0vT,EAAY4kH,EAAYxI,EAAaqO,EAAWnhb,KAExF,MAAWkhb,EAAK1gb,KAEdygb,EAAcC,EAAK1gb,GAAOk2T,EAAY4kH,EAAYxI,IAEpD,GAAa,eAATxya,GAEF,GAAI2gb,EAAa,CACf,IAAI7uK,EAASkpK,EAAW3sa,cACpByya,EAAmB/ib,KAAKgC,IAAI,mBAChC,UAAK+xQ,GAAQ,SAAUnnN,GAErB,GAAkB,WADFA,EAAMxmD,KAAK,aACC,CAE1B,IAAI48a,EAAWD,EAAmB,EAAI,MAAQ,QAC9Cn2X,EAAMxmD,KAAK,YAAa48a,EAC1B,CACF,GACF,OACK,GAAa,aAAT/gb,EAAqB,CAC9B,IAAI4N,EAAWota,EAAW3sa,cAAc0W,MAAM,IAC9C,UAAKnX,GAAU,SAAU+8C,GAClBA,EAAM5qD,IAAI,aACTvB,EAAMuB,IAAI,eAEZvB,EAAMgya,kBAAkB7lX,GAE1BA,EAAMz5C,SAEV,GACF,CACF,EAEOgva,CACT,CA5LwB,CA4LtB,KACF,QE7LI,IAAsB,SAAUzgb,GAElC,SAASuhb,IACP,OAAkB,OAAXvhb,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CA4JA,OA/JA,UAAUijb,EAAQvhb,GAIlBuhb,EAAO/ib,UAAU6B,cAAgB,WAC/B,IAAIJ,EAAMD,EAAOxB,UAAU6B,cAAcH,KAAK5B,MAC9C,OAAO,WAAS,UAAS,CAAC,EAAG2B,GAAM,CACjCgH,KAAM,SACN4ma,aAAc,SACd1xY,OAAQ,KACRmwC,OAAQ,KACRjsD,YAAa9H,KAAK+B,GAAK,EACvBgG,SAAoB,EAAV/H,KAAK+B,GAAS,GAE5B,EACAina,EAAO/ib,UAAUg9a,YAAc,WAC7B,IAAIr/Y,EAAS79B,KAAKgC,IAAI,UAClBiJ,EAAI4yB,EAAO5yB,EACXC,EAAI2yB,EAAO3yB,EACX0W,EAAK5hB,KAAKgC,IAAI,UACd6f,EAAKD,EACLG,EAAa/hB,KAAKgC,IAAI,cACtBggB,EAAWhiB,KAAKgC,IAAI,YACpB6E,EAAO,GACX,GAAIoT,KAAKoG,IAAI2B,EAAWD,KAA0B,EAAV9H,KAAK+B,GAC3CnV,EAAO,CAAC,CAAC,IAAKoE,EAAGC,EAAI2W,GAAK,CAAC,IAAKD,EAAIC,EAAI,EAAG,EAAG,EAAG5W,EAAGC,EAAI2W,GAAK,CAAC,IAAKD,EAAIC,EAAI,EAAG,EAAG,EAAG5W,EAAGC,EAAI2W,GAAK,CAAC,UAC5F,CACL,IAAIsb,EAAan9B,KAAKsua,eAAevsZ,GACjCm1Z,EAAWl3a,KAAKsua,eAAetsZ,GAC/B08D,EAAQzkE,KAAKoG,IAAI2B,EAAWD,GAAc9H,KAAK+B,GAAK,EAAI,EACxD84O,EAAQ/yO,EAAaC,EAAW,EAAI,EACxCnb,EAAO,CAAC,CAAC,IAAKoE,EAAGC,GAAI,CAAC,IAAKiyB,EAAWlyB,EAAGkyB,EAAWjyB,GAAI,CAAC,IAAK0W,EAAIC,EAAI,EAAG68D,EAAOo2K,EAAOoiL,EAASjsa,EAAGisa,EAAShsa,GAAI,CAAC,IAAKD,EAAGC,GAC3H,CACA,OAAOrE,CACT,EACAo8a,EAAO/ib,UAAUq9a,aAAe,SAAUzd,GACxC,IAAI/9Y,EAAa/hB,KAAKgC,IAAI,cAEtB0lB,EAAQ3F,GADG/hB,KAAKgC,IAAI,YACa+f,GAAc+9Y,EACnD,OAAO9/Z,KAAKsua,eAAe5mZ,EAC7B,EAEAu7Z,EAAO/ib,UAAU28a,cAAgB,SAAU15V,EAAQn4E,GACjD,IAAI6yB,EAAS79B,KAAKgC,IAAI,UAClBk3B,EAAS,CAACluB,EAAMC,EAAI4yB,EAAO5yB,EAAGD,EAAME,EAAI2yB,EAAO3yB,GAC/Cq2M,EAASvhN,KAAKgC,IAAI,kBAClBkhb,EAASpuZ,IAAA,GAAYoE,GAEzB,OADApE,IAAA,GAAWoE,EAAQA,EAAQqoL,EAASp+H,EAAS+/V,GACtChqZ,CACT,EAEA+pZ,EAAO/ib,UAAUm/a,cAAgB,SAAUr0a,GACzC,IAAI6yB,EAAS79B,KAAKgC,IAAI,UAClBk3B,EAAS,CAACluB,EAAMC,EAAI4yB,EAAO5yB,EAAGD,EAAME,EAAI2yB,EAAO3yB,GACnD,MAAO,CAACguB,EAAO,IAAK,EAAIA,EAAO,GACjC,EAEA+pZ,EAAO/ib,UAAUoua,eAAiB,SAAU5mZ,EAAOsmD,GACjD,IAAInwC,EAAS79B,KAAKgC,IAAI,UAEtB,OADAgsE,EAASA,GAAUhuE,KAAKgC,IAAI,UACrB,CACLiJ,EAAG4yB,EAAO5yB,EAAIgP,KAAKkC,IAAIuL,GAASsmD,EAChC9iE,EAAG2yB,EAAO3yB,EAAI+O,KAAKoC,IAAIqL,GAASsmD,EAEpC,EAKAi1W,EAAO/ib,UAAUwib,kBAAoB,SAAUzgb,GAC7C,IAAI68a,EAAW9+a,KAAKgC,IAAI,SAExB,MAAa,eAATC,IACK,UAAM68a,EAAS7la,OAI1B,EACAgqa,EAAO/ib,UAAU88a,eAAiB,SAAUC,GAC1C,IAAIx8a,EAAQT,KACR8+a,EAAW9+a,KAAKgC,IAAI,SACpBm9a,EAAWn/a,KAAKgC,IAAI,SACpBs5a,EAAsBt7a,KAAKgC,IAAI,uBAC/B+3T,EAAc+kH,EAAS37V,OACvBsxV,EAAc6G,EACdtmT,EAAc,EACdytT,EAAe,EACftD,IACFnqT,EAAcmqT,EAASrza,MAAMgV,SAC7B2ha,EAAetD,EAASziF,SAEtB+3E,IACFA,EAAcA,EAAc16G,EAAc0oH,EAAeztT,GAE3D,IAAIumT,EAAev7a,KAAKgC,IAAI,gBAM5B,IALA,UAAKu5a,GAAc,SAAUt5a,GACvB68a,EAAS78a,IAASxB,EAAMiib,kBAAkBzgb,IAC5CxB,EAAMkib,mBAAmB1gb,EAAM68a,EAAS78a,GAAOg7a,EAAYxI,EAE/D,IACI0K,IACE,UAAMA,EAASh8V,QAAS,CAE1B,IAAI5hF,EAAW07a,EAAWrsa,gBAAgB5C,OAE1Cmxa,EAASh8V,OAAS42O,EAAcx4T,EAAWkhb,EAAeztT,EAAc,CAC1E,CAEJ,EACAiuT,EAAO/ib,UAAUyib,mBAAqB,SAAU1gb,EAAME,EAAO86a,EAAYxI,GACvE,IAAIh0a,EAAQT,KACR4ib,GAAc,EACdC,EAAO,EAAY5gb,GACvB,GAAIwya,EAAc,EAChB,IAAc,IAAVtya,EAEFygb,EAAcC,EAAKrC,YAALqC,EAAkB,EAAO5F,EAAYxI,QAC9C,IAAI,UAAWtya,GAEpBygb,EAAczgb,GAAM,EAAO86a,EAAYxI,QAClC,IAAI,UAAStya,GAAQ,CAE1B,IAAI2gb,EAAa3gb,EACb0gb,EAAKC,EAAWn6a,QAClBi6a,EAAcC,EAAKC,EAAWn6a,OAAM,EAAOs0a,EAAYxI,EAAaqO,EAAWnhb,KAEnF,MAAWkhb,EAAK1gb,KAEdygb,EAAcC,EAAK1gb,IAAO,EAAO86a,EAAYxI,IAGjD,GAAa,eAATxya,GAEF,GAAI2gb,EAAa,CACf,IAAI7uK,EAASkpK,EAAW3sa,cACpByya,EAAmB/ib,KAAKgC,IAAI,mBAChC,UAAK+xQ,GAAQ,SAAUnnN,GAErB,GAAkB,WADFA,EAAMxmD,KAAK,aACC,CAE1B,IAAI48a,EAAWD,EAAmB,EAAI,MAAQ,QAC9Cn2X,EAAMxmD,KAAK,YAAa48a,EAC1B,CACF,GACF,OACK,GAAa,aAAT/gb,EAAqB,CAC9B,IAAI4N,EAAWota,EAAW3sa,cAAc0W,MAAM,IAC9C,UAAKnX,GAAU,SAAU+8C,GAClBA,EAAM5qD,IAAI,aACTvB,EAAMuB,IAAI,eAEZvB,EAAMgya,kBAAkB7lX,GAE1BA,EAAMz5C,SAEV,GACF,CACF,EAEO8va,CACT,CAjK0B,CAiKxB,KACF,QCjKIE,IAA6B,SAAUzhb,GAEzC,SAASyhb,IACP,OAAkB,OAAXzhb,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CA2GA,OA9GA,UAAUmjb,EAAezhb,GAIzByhb,EAAcjjb,UAAU6B,cAAgB,WACtC,IAAIJ,EAAMD,EAAOxB,UAAU6B,cAAcH,KAAK5B,MAC9C,OAAO,WAAS,UAAS,CAAC,EAAG2B,GAAM,CACjCM,KAAM,YACN0G,KAAM,OACNutB,KAAM,CAAC,EACPrV,KAAM,KACNuia,eAAgB,CAAC,EACjB5ua,SAAS,EACT1S,WAAY,CACVo0B,KAAM,CACJpqB,MAAO,CACL2T,UAAW,EACX0B,OAAQ,IAAM80Z,YAGlBp1Z,KAAM,CACJsqC,SAAU,QACVg4B,OAAQ,GACRqzV,YAAY,EACZ1/V,QAAS,KACThrE,MAAO,CACL8vC,KAAM,IAAM87B,UACZz2D,UAAW,SACXC,aAAc,SACduS,WAAY,IAAMA,aAGtB2vZ,eAAgB,CACdhpW,QAAS,EACTtuE,MAAO,CACLqV,OAAQ,IAAM80Z,cAKxB,EACAkN,EAAcjjb,UAAUiya,YAAc,SAAUzga,GAC1C1R,KAAKgC,IAAI,SACXhC,KAAKy2a,WAAW/ka,GAEd1R,KAAKgC,IAAI,UACXhC,KAAK63a,WAAWnma,GAChB1R,KAAKqjb,iBAAiB3xa,GAE1B,EACAyxa,EAAcjjb,UAAU23a,WAAa,SAAUnma,GAC7C,IAAImP,EAAO7gB,KAAKgC,IAAI,QAChB8J,EAAQ+U,EAAK/U,MACf0qa,EAAa31Z,EAAK21Z,WAClB1/V,EAAUj2D,EAAKi2D,QACjB,KAAK,UAAMA,GAAU,CACnB,IAAIwsW,EAAYtjb,KAAKmva,eACjBh+Z,EAAS,KACb,GAAIqla,EAEFrla,EAASw8Z,IAAiB2V,EADdtjb,KAAK4gb,kBAGnB5gb,KAAKqR,SAASK,EAAO,CACnB/I,KAAM,OACN1G,KAAM,iBACNyR,GAAI1T,KAAKkxa,aAAa,QACtB5qa,OAAO,WAAS,WAAS,UAAS,CAAC,EAAGg9a,GAAY,CAChDzia,KAAMi2D,EACN3lE,OAAQA,IACNrF,IAER,CACF,EACAq3a,EAAcjjb,UAAUu2a,WAAa,SAAU/ka,GAC7C,IAAI7K,EAAO7G,KAAKk9a,cAEZpxa,EADO9L,KAAKgC,IAAI,QACH8J,MACjB9L,KAAKqR,SAASK,EAAO,CACnB/I,KAAM,OACN1G,KAAM,iBACNyR,GAAI1T,KAAKkxa,aAAa,QACtB5qa,OAAO,UAAS,CACdO,KAAMA,GACLiF,IAEP,EAEAq3a,EAAcjjb,UAAUmjb,iBAAmB,SAAU3xa,GACnD,IAAI6xa,EAASvjb,KAAKkxa,aAAa,QAC3BiH,EAAYzma,EAAM+B,SAAS8va,GAC3BH,EAAiBpjb,KAAKgC,IAAI,kBAC9B,GAAIohb,GAAkBjL,EAAW,CAC/B,IAAIqL,EAAWrL,EAAUloa,UACrBmqE,EAAU4zV,IAAcoV,EAAehpW,SACvCtuE,EAAQs3a,EAAet3a,MACL9L,KAAKqR,SAASK,EAAO,CACzC/I,KAAM,OACN1G,KAAM,4BACNyR,GAAI1T,KAAKkxa,aAAa,mBACtB5qa,OAAO,UAAS,CACd2E,EAAGu4a,EAASv4a,EAAImvE,EAAQ,GACxBlvE,EAAGs4a,EAASt4a,EAAIkvE,EAAQ,GACxBrsE,MAAOy1a,EAASz1a,MAAQqsE,EAAQ,GAAKA,EAAQ,GAC7CpsE,OAAQw1a,EAASx1a,OAASosE,EAAQ,GAAKA,EAAQ,GAC/CjpE,OAAQgna,EAAU/xa,KAAK,WACtB0F,KAEW4J,QAClB,CACF,EACOyta,CACT,CAhHiC,CAgH/B,KACF,QCpHIM,IAA6B,SAAU/hb,GAEzC,SAAS+hb,IACP,OAAkB,OAAX/hb,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAmCA,OAtCA,UAAUyjb,EAAe/hb,GAIzB+hb,EAAcvjb,UAAU6B,cAAgB,WACtC,IAAIJ,EAAMD,EAAOxB,UAAU6B,cAAcH,KAAK5B,MAC9C,OAAO,WAAS,UAAS,CAAC,EAAG2B,GAAM,CACjCgH,KAAM,OACN4ma,aAAc,SACd7oZ,MAAO,KACPmI,IAAK,MAET,EAEA40Z,EAAcvjb,UAAU0gb,eAAiB,WACvC,IAAIz/a,EAAKnB,KAAKowa,cACZ1pZ,EAAQvlB,EAAGulB,MACXmI,EAAM1tB,EAAG0tB,IACPs8B,EAAWnrD,KAAKgC,IAAI,QAAQmpD,SAC5BzjC,EAAQzN,KAAKqG,MAAMuO,EAAI3jB,EAAIwb,EAAMxb,EAAG2jB,EAAI5jB,EAAIyb,EAAMzb,GAEtD,MADgC,UAAbkgD,EAAuBzjC,EAAQzN,KAAK+B,GAAK,EAAI0L,EAAQzN,KAAK+B,GAAK,CAEpF,EACAyna,EAAcvjb,UAAUiva,aAAe,WACrC,IAAIhua,EAAKnB,KAAKowa,cACZ1pZ,EAAQvlB,EAAGulB,MACXmI,EAAM1tB,EAAG0tB,IACP3X,EAAKlX,KAAKgC,IAAI,QAGlB,OAAOmta,IAAazoZ,EAAOmI,EAFd3X,EAAGi0C,SACLj0C,EAAGisE,OAEhB,EACAsgW,EAAcvjb,UAAUg9a,YAAc,WACpC,IAAI/7a,EAAKnB,KAAKowa,cACZ1pZ,EAAQvlB,EAAGulB,MACXmI,EAAM1tB,EAAG0tB,IACX,MAAO,CAAC,CAAC,IAAKnI,EAAMzb,EAAGyb,EAAMxb,GAAI,CAAC,IAAK2jB,EAAI5jB,EAAG4jB,EAAI3jB,GACpD,EACOu4a,CACT,CAxCiC,CAwC/B,KACF,QCzCI,IAA6B,SAAU/hb,GAEzC,SAAS+hb,IACP,OAAkB,OAAX/hb,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CA+DA,OAlEA,UAAUyjb,EAAe/hb,GAIzB+hb,EAAcvjb,UAAU6B,cAAgB,WACtC,IAAIJ,EAAMD,EAAOxB,UAAU6B,cAAcH,KAAK5B,MAC9C,OAAO,WAAS,UAAS,CAAC,EAAG2B,GAAM,CACjCgH,KAAM,SACN4ma,aAAc,SACd1xY,OAAQ,KACRmwC,OAAQ,IACRjsD,YAAa9H,KAAK+B,GAAK,EACvBgG,SAAoB,EAAV/H,KAAK+B,GAAS,GAE5B,EACAyna,EAAcvjb,UAAU0gb,eAAiB,WACvC,IAAIz/a,EAAKnB,KAAKowa,cACZruZ,EAAa5gB,EAAG4gB,WAChBC,EAAW7gB,EAAG6gB,SAGhB,MADgC,UADjBhiB,KAAKgC,IAAI,QAAQmpD,SACUppC,EAAa9H,KAAK+B,GAAK,EAAIgG,EAAW/H,KAAK+B,GAAK,CAE5F,EACAyna,EAAcvjb,UAAUiva,aAAe,WACrC,IAAItuZ,EAAO7gB,KAAKgC,IAAI,QAChBmpD,EAAWtqC,EAAKsqC,SAClBg4B,EAAStiE,EAAKsiE,OACZhiF,EAAKnB,KAAKowa,cACZvyY,EAAS18B,EAAG08B,OACZmwC,EAAS7sE,EAAG6sE,OACZjsD,EAAa5gB,EAAG4gB,WAChBC,EAAW7gB,EAAG6gB,SACZ0F,EAAqB,UAAbyjC,EAAuBppC,EAAaC,EAC5C+S,EAAe/0B,KAAK4gb,iBAAmB3ma,KAAK+B,GAC5ChR,EAAQsja,IAAezwY,EAAQmwC,EAAQtmD,GAIvCnZ,EAAU0L,KAAKkC,IAAI4Y,GAAgBouD,EACnC10E,EAAUwL,KAAKoC,IAAI0Y,GAAgBouD,EACvC,MAAO,CACLl4E,EAAGD,EAAMC,EAAIsD,EACbrD,EAAGF,EAAME,EAAIuD,EAEjB,EACAg1a,EAAcvjb,UAAUg9a,YAAc,WACpC,IAAI/7a,EAAKnB,KAAKowa,cACZvyY,EAAS18B,EAAG08B,OACZmwC,EAAS7sE,EAAG6sE,OACZjsD,EAAa5gB,EAAG4gB,WAChBC,EAAW7gB,EAAG6gB,SACZnb,EAAO,KACX,GAAImb,EAAWD,GAAyB,EAAV9H,KAAK+B,GAAQ,CAEzC,IAAI/Q,EAAI4yB,EAAO5yB,EACbC,EAAI2yB,EAAO3yB,EACbrE,EAAO,CAAC,CAAC,IAAKoE,EAAGC,EAAI8iE,GAAS,CAAC,IAAKA,EAAQA,EAAQ,EAAG,EAAG,EAAG/iE,EAAGC,EAAI8iE,GAAS,CAAC,IAAKA,EAAQA,EAAQ,EAAG,EAAG,EAAG/iE,EAAGC,EAAI8iE,GAAS,CAAC,KAC/H,KAAO,CACL,IAAI7wC,EAAamxY,IAAezwY,EAAQmwC,EAAQjsD,GAC5Cm1Z,EAAW5I,IAAezwY,EAAQmwC,EAAQhsD,GAC1C08D,EAAQzkE,KAAKoG,IAAI2B,EAAWD,GAAc9H,KAAK+B,GAAK,EAAI,EACxD84O,EAAQ/yO,EAAaC,EAAW,EAAI,EACxCnb,EAAO,CAAC,CAAC,IAAKs2B,EAAWlyB,EAAGkyB,EAAWjyB,GAAI,CAAC,IAAK8iE,EAAQA,EAAQ,EAAG0Q,EAAOo2K,EAAOoiL,EAASjsa,EAAGisa,EAAShsa,GACzG,CACA,OAAOrE,CACT,EACO48a,CACT,CApEiC,CAoE/B,KACF,QCxEWC,IAAkB,eAClBC,IAAiBD,IAAkB,QACnCE,IAAiBF,IAAkB,QLE9C,MAAgBvib,IAAK,CAAC,GAEnB,GAAK,KAA4B,CAClCgqD,SAAU,YACThqD,IAAG,GAAK,KAA2B,CACpCgqD,SAAU,WACVmjB,gBAAiB,uBAChBntE,IAAG,GAAK,KAA2B,CACpCgqD,SAAU,WACVpX,MAAO,IAAM2jC,UACbjkD,WAAY,IAAMA,YACjBtyB,KMRC0ib,IAA6B,SAAUnib,GAEzC,SAASmib,IACP,OAAkB,OAAXnib,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAuIA,OA1IA,UAAU6jb,EAAenib,GAIzBmib,EAAc3jb,UAAU6B,cAAgB,WACtC,IAAIJ,EAAMD,EAAOxB,UAAU6B,cAAcH,KAAK5B,MAC9C,OAAO,WAAS,UAAS,CAAC,EAAG2B,GAAM,CACjCM,KAAM,YACN0G,KAAM,OACN4ma,aAAc,SACd7oZ,MAAO,CACLzb,EAAG,EACHC,EAAG,GAEL2jB,IAAK,CACH5jB,EAAG,EACHC,EAAG,GAELsJ,SAAS,EACTqM,KAAM,KACN+4Z,aAAc,eAAkB,IAA2B,WAC3DkK,aAAc,eAAkB,IAA0B,WAC1DC,QAAS,gBAAmB,IAA0B,qBACtD7J,UAAW,KACX3uP,mBAAoB,IACpB0uP,cAAe,IACfn4a,WAAY,CACV+e,KAAM,CACJsqC,SAAU,QACV2rB,QAAS,KACTud,MAAO,SACPlR,OAAQ,MAIhB,EACA0gW,EAAc3jb,UAAU8qE,OAAS,WAC/BhrE,KAAKgkb,YACLhkb,KAAKw6a,eACP,EAEAqJ,EAAc3jb,UAAU+jb,cAAgB,WACtC,IAAIj7a,EAAYhJ,KAAK4mF,eAEjBs9V,EAAcx2a,IADC1N,KAAKgC,IAAI,iBAE5BgH,EAAU2E,YAAYu2a,GACtBlkb,KAAKs6a,WAAW,IAAyB4J,GACzClkb,KAAKkC,IAAI,cAAegib,EAC1B,EAEAL,EAAc3jb,UAAUiva,aAAe,WACrC,IAAIhua,EAAKnB,KAAKowa,cACZ1pZ,EAAQvlB,EAAGulB,MACXmI,EAAM1tB,EAAG0tB,IACP3X,EAAKlX,KAAKgC,IAAI,QAGlB,OAAOmta,IAAazoZ,EAAOmI,EAFd3X,EAAGi0C,SACLj0C,EAAGisE,OAEhB,EAEA0gW,EAAc3jb,UAAU8jb,UAAY,WAClC,IAAInja,EAAO7gB,KAAKgC,IAAI,QAChBmib,EAASnkb,KAAKgC,IAAI,UACtB,GAAI6e,EAAM,CACR,IAAIi2D,EAAUj2D,EAAKi2D,QACnB,IAAKqtW,EAAQ,CACX,IAAIn7a,EAAYhJ,KAAK4mF,eAErBu9V,EAASz2a,KADK,UAAW1N,KAAKgC,IAAI,WAAY6e,IAE9C7X,EAAU2E,YAAYw2a,GACtBnkb,KAAKs6a,WAAW,IAAyB6J,GACzCnkb,KAAKkC,IAAI,SAAUiib,EACrB,CACAA,EAAO5iC,UAAYzqU,CACrB,MAAWqtW,GACTA,EAAOhxa,QAEX,EAEA0wa,EAAc3jb,UAAUm4T,WAAa,SAAU3xS,EAAOmI,GACpD,OAAOnI,EAAMzb,IAAM4jB,EAAI5jB,CACzB,EAEA44a,EAAc3jb,UAAUs6a,cAAgB,WACtC,IAAI0J,EAAclkb,KAAKgC,IAAI,eACtBkib,IACHlkb,KAAKikb,gBACLC,EAAclkb,KAAKgC,IAAI,gBAEzB,IAAI0kB,EAAQ1mB,KAAKgC,IAAI,SACjB6sB,EAAM7uB,KAAKgC,IAAI,OACfkO,EAAO+J,KAAKC,IAAIwM,EAAMzb,EAAG4jB,EAAI5jB,GAC7BmF,EAAO6J,KAAKC,IAAIwM,EAAMxb,EAAG2jB,EAAI3jB,GAC7BlL,KAAKq4T,WAAW3xS,EAAOmI,GACzB4pY,IAAUyrB,EAAa,CACrBn2a,MAAO,MACPC,OAAQkha,IAAKj1Z,KAAKoG,IAAIwO,EAAI3jB,EAAIwb,EAAMxb,MAGtCutZ,IAAUyrB,EAAa,CACrBl2a,OAAQ,MACRD,MAAOmha,IAAKj1Z,KAAKoG,IAAIwO,EAAI5jB,EAAIyb,EAAMzb,MAGvCwtZ,IAAUyrB,EAAa,CACrBj1a,IAAKiga,IAAK9+Z,GACVpB,KAAMkga,IAAKh/Z,KAEblQ,KAAKokb,WACP,EACAP,EAAc3jb,UAAUkkb,UAAY,WAElC,IAAID,EAASnkb,KAAKgC,IAAI,UACtB,GAAImib,EAAQ,CACV,IAAI9vV,EAAQr0F,KAAKgC,IAAI,QAAQqyF,MACzB1O,EAAcw+V,EAAOx+V,YACrB36E,EAAQhL,KAAKmva,eACjB,OAAQ96U,GACN,IAAK,SACHrpF,EAAMC,EAAID,EAAMC,EAAI06E,EAAc,EAClC,MACF,IAAK,QACH36E,EAAMC,EAAID,EAAMC,EAAI06E,EAIxB8yU,IAAU0rB,EAAQ,CAChBl1a,IAAKiga,IAAKlka,EAAME,GAChB8D,KAAMkga,IAAKlka,EAAMC,IAErB,CACF,EACA44a,EAAc3jb,UAAU2va,YAAc,SAAUlua,IAC1C,UAAOA,EAAK,SACd3B,KAAKgkb,YAEPtib,EAAOxB,UAAU2va,YAAYjua,KAAK5B,KAAM2B,EAC1C,EACOkib,CACT,CA5IiC,CA4I/B,KACF,QChJIQ,IAAwB,SAAU3ib,GAEpC,SAAS2ib,IACP,OAAkB,OAAX3ib,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAyGA,OA5GA,UAAUqkb,EAAU3ib,GAIpB2ib,EAASnkb,UAAU6B,cAAgB,WACjC,IAAIJ,EAAMD,EAAOxB,UAAU6B,cAAcH,KAAK5B,MAC9C,OAAO,WAAS,UAAS,CAAC,EAAG2B,GAAM,CACjCM,KAAM,OACNi0B,KAAM,CAAC,EACPouZ,eAAgB,KAChB9va,SAAS,EACT2xC,MAAO,GACP63N,QAAQ,EACRl8Q,WAAY,CACVo0B,KAAM,CACJvtB,KAAM,OACNmD,MAAO,CACL2T,UAAW,EACX0B,OAAQ,IAAM80Z,cAKxB,EAKAoO,EAASnkb,UAAUqkb,YAAc,WAE/B,OADWvkb,KAAKgC,IAAI,SAAWhC,KAAKgC,IAAI,cAAck0B,MAC1CvtB,IACd,EACA07a,EAASnkb,UAAUiya,YAAc,SAAUzga,GACzC1R,KAAKwkb,SAAS9ya,EAChB,EACA2ya,EAASnkb,UAAUukb,iBAAmB,SAAUC,EAAWhka,GACzD,IAAIika,EAAa3kb,KAAK4kb,YAAYF,GAC9BxwV,EAAgBxzE,EAAOsG,MAAM,GAAG4J,UAChCi0Z,EAAW7kb,KAAK4kb,YAAY1wV,GAAe,GAS/C,OARal0F,KAAKgC,IAAI,UAEpB2ib,EAAaA,EAAWpxa,OAAOsxa,IAE/BA,EAAS,GAAG,GAAK,KACjBF,EAAaA,EAAWpxa,OAAOsxa,IACpBtkb,KAAK,CAAC,OAEZokb,CACT,EAEAN,EAASnkb,UAAU4kb,aAAe,WAChC,OAAO9kb,KAAKgC,IAAI,QAAQ8J,KAC1B,EAEAu4a,EAASnkb,UAAUskb,SAAW,SAAU9ya,GACtC,IAAIjR,EAAQT,KACRk2B,EAAOl2B,KAAKgC,IAAI,QAChBmkD,EAAQnmD,KAAKgC,IAAI,SACjBsib,EAAiBtkb,KAAKgC,IAAI,kBAC1B+ib,EAAU,MACd,UAAK5+X,GAAO,SAAU1uC,EAAMzP,GAC1B,IAAI0L,EAAK+D,EAAK/D,IAAM1L,EAEpB,GAAIkuB,EAAM,CACR,IAAIpqB,EAAQrL,EAAMqkb,eAClBh5a,GAAQ,UAAWA,GAASA,EAAM2L,EAAMzP,EAAOm+C,GAASr6C,EACxD,IAAIk5a,EAASvkb,EAAMywa,aAAa,QAAUx9Z,GACtCuxa,EAAWxkb,EAAMmkb,YAAYnta,EAAKiJ,QACtCjgB,EAAM4Q,SAASK,EAAO,CACpB/I,KAAM,OACN1G,KAAM,YACNyR,GAAIsxa,EACJ1+a,OAAO,UAAI,CACTO,KAAMo+a,GACLn5a,IAEP,CAGA,GAAIw4a,GAAkBt8a,EAAQ,EAAG,CAC/B,IAAIk9a,EAAWzkb,EAAMywa,aAAa,UAAYx9Z,GAC1Cyxa,EAASn9a,EAAQ,GAAM,EAC3B,IAAI,UAASs8a,GAEPa,GACF1kb,EAAM2kb,oBAAoBF,EAAUxza,EAAOqza,EAAQrka,OAAQjJ,EAAKiJ,OAAQ4ja,OAErE,CACL,IAAIvwY,EAAQoxY,EAASb,EAAe,GAAKA,EAAe,GACxD7jb,EAAM2kb,oBAAoBF,EAAUxza,EAAOqza,EAAQrka,OAAQjJ,EAAKiJ,OAAQqzB,EAC1E,CACF,CACAgxY,EAAUtta,CACZ,GACF,EAEA4sa,EAASnkb,UAAUklb,oBAAsB,SAAU1xa,EAAIhC,EAAOgza,EAAWhka,EAAQqzB,GAC/E,IAAI4wY,EAAa3kb,KAAKykb,iBAAiBC,EAAWhka,GAClD1gB,KAAKqR,SAASK,EAAO,CACnB/I,KAAM,OACN+K,GAAIA,EACJzR,KAAM,cACNqE,MAAO,CACLO,KAAM89a,EACN/oY,KAAM7H,IAGZ,EACOswY,CACT,CA9G4B,CA8G1B,KACF,QC3GA,ICRI,IDQA,IAAsB,SAAU3ib,GAElC,SAASuhb,IACP,OAAkB,OAAXvhb,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CA0DA,OA7DA,UAAUijb,EAAQvhb,GAIlBuhb,EAAO/ib,UAAU6B,cAAgB,WAC/B,IAAIJ,EAAMD,EAAOxB,UAAU6B,cAAcH,KAAK5B,MAC9C,OAAO,WAAS,UAAS,CAAC,EAAG2B,GAAM,CACjCgH,KAAM,SAKNk1B,OAAQ,KAKRmgP,QAAQ,GAEZ,EACAilK,EAAO/ib,UAAU0kb,YAAc,SAAUlka,EAAQ+9V,GAC/C,IAAInoS,EAAWt2E,KAAKukb,cAChBvmK,EAASh+Q,KAAKgC,IAAI,UAClB6E,EAAO,GACX,GAAI6Z,EAAO7f,OAET,GAAiB,WAAby1E,EAAuB,CACzB,IAAIz4C,EAAS79B,KAAKgC,IAAI,UAClBqjb,EAAa3ka,EAAO,GACpB4ka,EAnCZ,SAAkBlja,EAAIC,EAAIC,EAAIC,GAC5B,IAAI3V,EAAK0V,EAAKF,EACVvV,EAAK0V,EAAKF,EACd,OAAOpI,KAAK2C,KAAKhQ,EAAKA,EAAKC,EAAKA,EAClC,CA+BuB,CAASgxB,EAAO5yB,EAAG4yB,EAAO3yB,EAAGm6a,EAAWp6a,EAAGo6a,EAAWn6a,GACjEq6a,EAAc9mE,EAAW,EAAI,EAC7BzgG,GAEFn3Q,EAAKtG,KAAK,CAAC,IAAKs9B,EAAO5yB,EAAG4yB,EAAO3yB,EAAIo6a,IACrCz+a,EAAKtG,KAAK,CAAC,IAAK+kb,EAAUA,EAAU,EAAG,EAAGC,EAAa1nZ,EAAO5yB,EAAG4yB,EAAO3yB,EAAIo6a,IAC5Ez+a,EAAKtG,KAAK,CAAC,IAAK+kb,EAAUA,EAAU,EAAG,EAAGC,EAAa1nZ,EAAO5yB,EAAG4yB,EAAO3yB,EAAIo6a,IAC5Ez+a,EAAKtG,KAAK,CAAC,QAEX,UAAKmgB,GAAQ,SAAU1V,EAAOhD,GACd,IAAVA,EACFnB,EAAKtG,KAAK,CAAC,IAAKyK,EAAMC,EAAGD,EAAME,IAE/BrE,EAAKtG,KAAK,CAAC,IAAK+kb,EAAUA,EAAU,EAAG,EAAGC,EAAav6a,EAAMC,EAAGD,EAAME,GAE1E,GAEJ,MACE,UAAKwV,GAAQ,SAAU1V,EAAOhD,GACd,IAAVA,EACFnB,EAAKtG,KAAK,CAAC,IAAKyK,EAAMC,EAAGD,EAAME,IAE/BrE,EAAKtG,KAAK,CAAC,IAAKyK,EAAMC,EAAGD,EAAME,GAEnC,IACI8yQ,GACFn3Q,EAAKtG,KAAK,CAAC,MAIjB,OAAOsG,CACT,EACOo8a,CACT,CA/D0B,CA+DxB,KACF,QErEI,IAAoB,SAAUvhb,GAEhC,SAASygb,IACP,OAAkB,OAAXzgb,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAkBA,OArBA,UAAUmib,EAAMzgb,GAIhBygb,EAAKjib,UAAU6B,cAAgB,WAC7B,IAAIJ,EAAMD,EAAOxB,UAAU6B,cAAcH,KAAK5B,MAC9C,OAAO,WAAS,UAAS,CAAC,EAAG2B,GAAM,CACjCgH,KAAM,QAEV,EACAw5a,EAAKjib,UAAU0kb,YAAc,SAAUlka,GACrC,IAAI7Z,EAAO,GAQX,OAPA,UAAK6Z,GAAQ,SAAU1V,EAAOhD,GACd,IAAVA,EACFnB,EAAKtG,KAAK,CAAC,IAAKyK,EAAMC,EAAGD,EAAME,IAE/BrE,EAAKtG,KAAK,CAAC,IAAKyK,EAAMC,EAAGD,EAAME,GAEnC,IACOrE,CACT,EACOs7a,CACT,CAvBwB,CAuBtB,KACF,QCxBIqD,IAA0B,SAAU9jb,GAEtC,SAAS8jb,IACP,OAAkB,OAAX9jb,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAkIA,OArIA,UAAUwlb,EAAY9jb,GAItB8jb,EAAWtlb,UAAU6B,cAAgB,WACnC,IAAIJ,EAAMD,EAAOxB,UAAU6B,cAAcH,KAAK5B,MAC9C,OAAO,WAAS,UAAS,CAAC,EAAG2B,GAAM,CACjCM,KAAM,SAKN6mH,OAAQ,aACRymT,aAAc,QACdtka,EAAG,EACHC,EAAG,EACHqD,QAAS,EACTE,QAAS,EACTsjD,MAAO,KACPwY,WAAY,MAEhB,EACAi7W,EAAWtlb,UAAU8va,cAAgB,WACnC,IAAIlha,EAAOpN,EAAOxB,UAAU8va,cAAcpua,KAAK5B,MAC3C6lC,EAAW7lC,KAAKgC,IAAI,YACpBguH,EAAYhwH,KAAKgC,IAAI,aACrB+L,EAAQe,EAAKf,MACfC,EAASc,EAAKd,OAOhB,OANI63B,IACF93B,EAAQkM,KAAKC,IAAInM,EAAO83B,IAEtBmqF,IACFhiH,EAASiM,KAAKC,IAAIlM,EAAQgiH,IAErBo+S,IAAWt/Z,EAAKoB,KAAMpB,EAAKsB,KAAMrC,EAAOC,EACjD,EACAw3a,EAAWtlb,UAAUiwa,YAAc,SAAUxua,GAC3C3B,KAAKkC,IAAI,IAAKP,EAAIsJ,GAClBjL,KAAKkC,IAAI,IAAKP,EAAIuJ,GAClBlL,KAAK62a,eACP,EACA2O,EAAWtlb,UAAU22a,cAAgB,WACnC,IAAI5ra,EAAIjL,KAAKgC,IAAI,KACbkJ,EAAIlL,KAAKgC,IAAI,KACbuM,EAAUvO,KAAKgC,IAAI,WACnByM,EAAUzO,KAAKgC,IAAI,WACvBhC,KAAKiya,cAAcjya,KAAKgC,IAAI,SAAU,CACpCiJ,EAAGA,EAAIsD,EACPrD,EAAGA,EAAIuD,GAEX,EACA+2a,EAAWtlb,UAAUsxa,YAAc,WACjCxxa,KAAK62a,eACP,EAEA2O,EAAWtlb,UAAUulb,aAAe,WAClC,OAAOzlb,KAAKgC,IAAI,eAClB,EACAwjb,EAAWtlb,UAAUwlb,aAAe,SAAU16a,GAC5C,OAAOhL,KAAKkC,IAAI,eAAgB8I,EAClC,EAEAw6a,EAAWtlb,UAAUiya,YAAc,SAAUzga,GAC3C1R,KAAK2lb,YACD3lb,KAAKgC,IAAI,UACXhC,KAAKi8a,UAAUvqa,GAEjB1R,KAAK4lb,kBAAkBl0a,GACnB1R,KAAKgC,IAAI,eACXhC,KAAK6lb,eAAen0a,EAGxB,EAEA8za,EAAWtlb,UAAU2lb,eAAiB,SAAUn0a,GAC9C,IAAI64D,EAAavqE,KAAKgC,IAAI,cACtB8M,EAAO4C,EAAMzB,UACbmqE,EAAU4zV,IAAczjW,EAAW6P,SACnC9zE,GAAQ,UAAS,CAEnB2E,EAAG,EACHC,EAAG,EACH6C,MAAOe,EAAKf,MAAQqsE,EAAQ,GAAKA,EAAQ,GACzCpsE,OAAQc,EAAKd,OAASosE,EAAQ,GAAKA,EAAQ,IAC1C7P,EAAWz+D,OACQ9L,KAAKqR,SAASK,EAAO,CACzC/I,KAAM,OACN+K,GAAI1T,KAAKkxa,aAAa,cACtBjva,KAAM,oBACNqE,MAAOA,IAEOoP,QAClB,EAEA8va,EAAWtlb,UAAU+7a,UAAY,SAAUvqa,GACzC,IAAIiO,EAAe3f,KAAKgC,IAAI,gBACxBm9a,EAAWn/a,KAAKgC,IAAI,SACpB06V,EAAUyiF,EAASziF,QACrB5wV,EAAQqza,EAASrza,MACjB+U,EAAOs+Z,EAASt+Z,KAWd/R,EAVQ9O,KAAKqR,SAASK,EAAO,CAC/B/I,KAAM,OACN+K,GAAI1T,KAAKkxa,aAAa,SACtBjva,KAAM,eACNqE,OAAO,UAAS,CACdua,KAAMA,EACN5V,EAAG0U,EAAa1U,EAChBC,EAAGyU,EAAazU,GACfY,KAEYmE,UAEjBjQ,KAAKkC,IAAI,eAAgB,CACvB+I,EAAG0U,EAAa1U,EAChBC,EAAG4D,EAAKuB,KAAOqsV,GAEnB,EAEA8oF,EAAWtlb,UAAUylb,UAAY,WAC/B,IAAIp7W,EAAavqE,KAAKgC,IAAI,cACtB2d,EAAe,CACjB1U,EAAG,EACHC,EAAG,GAEL,GAAIq/D,EAAY,CACd,IAAI6P,EAAU4zV,IAAczjW,EAAW6P,SACvCz6D,EAAa1U,EAAImvE,EAAQ,GACzBz6D,EAAazU,EAAIkvE,EAAQ,EAC3B,CAEAp6E,KAAKkC,IAAI,eAAgByd,EAC3B,EAEO6la,CACT,CAvI8B,CAuI5B,KACF,QCjIIM,IAAyB,CAC3BrqI,OAAQ,CACN3vS,MAAO,CACLi6a,aAAc,OACdC,gBAAiB,IACjBpqY,KAAM,OACNjnC,QAAS,EACT2vB,KAAM,KAGVzjB,KAAM,CACJ/U,MAAO,CACL8vC,KAAM,OACN96B,SAAU,MAKZ23Z,IAAY,CACd78X,KAAM,IAAM87B,UACZ52D,SAAU,GACVG,UAAW,QACXC,aAAc,SACduS,WAAY,IAAMA,WAClBC,WAAY,SACZ3S,WAAY,IAEVkla,IAAmB,yBACnBC,IAAkB,wBAClBC,IAAa,CACfxza,MAAO,GAAKsH,KAAK+B,GAAK,IACtBhN,KAAM,IAAaiL,KAAK+B,GAAK,IAC7Boqa,GAAI,EACJC,KAAM,IAAMpsa,KAAK+B,GAAK,KAEpB,IAAwB,SAAUta,GAEpC,SAAS4+Z,IACP,IAAI7/Z,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAyChE,OAxCAS,EAAM6lb,iBAAmB,EACzB7lb,EAAM8lb,cAAgB,EACtB9lb,EAAM+lb,UAAY,EAClB/lb,EAAMgmb,WAAa,EACnBhmb,EAAMyuS,OAAS,EACfzuS,EAAM0uS,OAAS,EACf1uS,EAAMimb,iBAAmB,WACvB,IAAIt7H,EAAY3qT,EAAMuwa,oBAAoB,cAC1C,GAAIvwa,EAAM6lb,iBAAmB,EAAG,CAC9B7lb,EAAM6lb,kBAAoB,EAC1B7lb,EAAMkmb,mBACN,IAAIx1a,EAAS1Q,EAAMmmb,6BACfnmb,EAAMuB,IAAI,WACZopT,EAAUt0S,QAAQ,CAChB3F,OAAQA,GACP,KAEHi6S,EAAUhlT,KAAK,CACb+K,OAAQA,GAGd,CACF,EACA1Q,EAAMomb,kBAAoB,WACxB,IAAIz7H,EAAY3qT,EAAMuwa,oBAAoB,cAC1C,GAAIvwa,EAAM6lb,iBAAmB7lb,EAAM8lb,cAAe,CAChD9lb,EAAM6lb,kBAAoB,EAC1B7lb,EAAMkmb,mBACN,IAAIx1a,EAAS1Q,EAAMmmb,6BACfnmb,EAAMuB,IAAI,WACZopT,EAAUt0S,QAAQ,CAChB3F,OAAQA,GACP,KAEHi6S,EAAUhlT,KAAK,CACb+K,OAAQA,GAGd,CACF,EACO1Q,CACT,CA8tBA,OA1wBA,UAAU6/Z,EAAU5+Z,GA6CpB4+Z,EAASpga,UAAU6B,cAAgB,WACjC,IAAIJ,EAAMD,EAAOxB,UAAU6B,cAAcH,KAAK5B,MAC9C,OAAO,WAAS,UAAS,CAAC,EAAG2B,GAAM,CACjCM,KAAM,SACN0G,KAAM,WACNm+a,YAAa,GACbC,iBAAkB,EAClBC,aAAc,KACd7xR,UAAW,KACX8X,WAAY,KACZg6Q,SAAU,CAAC,EACXC,UAAW,KACXrhZ,SAAU,KACVmqF,UAAW,KACXyrL,OAAQ,CAAC,EACTlyL,MAAO,KACPpjE,MAAO,GACPghY,WAAY,CAAC,EACbC,eAAgB,CAAC,EACjBC,cAAe,CAAC,EAChBvlb,WAAY,CACViwD,MAAO,CACL2qS,QAAS,EACT5wV,MAAO,CACL8vC,KAAM,IAAM87B,UACZ52D,SAAU,GACVG,UAAW,QACXC,aAAc,QAGlBqpD,WAAY,CACV6P,QAAS,EACTtuE,MAAO,CACLqV,OAAQ,IAAM80Z,YAGlBmR,eAAgB,CACdt7a,MAAO,CACL6I,QAAS,EACTinC,KAAM,SAGVyrY,cAAevB,IACfmB,SAAU,CACRvqF,QAAS,GACT5wV,MAAO2sa,KAETh9H,OAAQ,CACNihD,QAAS,EACT5wV,MAAO,CACLoT,EAAG,EACHupB,OAAQ,WAGZy+Y,UAAW,CACTnwV,YAAY,EACZgzP,UAAW,KACXj+U,MAAO2sa,IACP/7E,QAAS,GAEXyqF,WAAY,CACV5wT,OAAQ,CACN+wT,UAAW,CACT3ya,QAAS,KAGb4ya,UAAW,CACTD,UAAW,CACT1rY,KAAM,IAAMo6X,gBAEdwR,YAAa,CACX5rY,KAAM,IAAMo6X,eACZ70Z,OAAQ,IAAM60Z,iBAGlB3uK,SAAU,CACRigL,UAAW,CACT1rY,KAAM,IAAMo6X,gBAEdwR,YAAa,CACX7ya,QAAS,QAMrB,EAEA2rZ,EAASpga,UAAUmsI,OAAS,WAC1B,OAAO,CACT,EAKAi0R,EAASpga,UAAUg8a,SAAW,WAC5B,OAAOl8a,KAAKgC,IAAI,QAClB,EAKAs+Z,EAASpga,UAAUi8a,SAAW,SAAUh2X,GACtCnmD,KAAKwF,OAAO,CACV2gD,MAAOA,GAEX,EAMAm6W,EAASpga,UAAUk8a,WAAa,SAAU3ka,EAAM9V,IAC9C,UAAI8V,EAAM9V,GACV3B,KAAKuP,QACLvP,KAAKgrE,QACP,EAIAs1V,EAASpga,UAAUm8a,WAAa,WAC9B,IAAIjxH,EAAYprT,KAAKgxa,oBAAoB,cACzC5lH,GAAaA,EAAU77S,OACzB,EAOA+wZ,EAASpga,UAAUo8a,aAAe,SAAU7ka,EAAM8rC,EAAOphD,GACvDsV,EAAK8rC,GAASphD,EACd,IAAIslb,EAAcznb,KAAKgxa,oBAAoB,QAAUv5Z,EAAK/D,IAC1D,GAAI+za,EAAa,CACf,IACIz/a,EADQhI,KAAKk8a,WACChpa,QAAQuE,GACtBiwa,EAAc1nb,KAAK+xa,uBACnBa,EAAa5ya,KAAK2nb,SAASlwa,EAAMzP,EAAOhI,KAAK4nb,gBAAiBF,GAClE1nb,KAAKsxa,eAAesB,EAAY6U,GAChCznb,KAAK4za,kBAAkB6T,EACzB,CACF,EAMAnnB,EAASpga,UAAUs8a,SAAW,SAAU/ka,EAAM8rC,GAC5C,QAAS9rC,EAAK8rC,EAChB,EACA+8W,EAASpga,UAAUu8a,cAAgB,SAAUhla,GAC3C,IAAI0va,EAAannb,KAAKgC,IAAI,cACtBsR,EAAM,GAOV,OANA,UAAK6za,GAAY,SAAUl1a,EAAGvL,GACxB+Q,EAAK/Q,IAEP4M,EAAI/S,KAAKmG,EAEb,IACO4M,CACT,EAKAgtZ,EAASpga,UAAUw8a,gBAAkB,SAAUn5X,GAC7C,IAAI9iD,EAAQT,KACRmmD,EAAQnmD,KAAK28a,gBAAgBp5X,IACjC,UAAK4C,GAAO,SAAU1uC,GACpBhX,EAAM67a,aAAa7ka,EAAM8rC,GAAO,EAClC,GACF,EAMA+8W,EAASpga,UAAUy8a,gBAAkB,SAAUp5X,GAC7C,IAAI9iD,EAAQT,KACRmmD,EAAQnmD,KAAKk8a,WACjB,OAAO,UAAO/1X,GAAO,SAAU1uC,GAC7B,OAAOhX,EAAM+7a,SAAS/ka,EAAM8rC,EAC9B,GACF,EAEA+8W,EAASpga,UAAU0lb,kBAAoB,SAAUl0a,GAC/C1R,KAAK6nb,eACL7nb,KAAK8nb,UAAUp2a,EACjB,EAEA4uZ,EAASpga,UAAU2nb,aAAe,WAChC,IAAI1hY,EAAQnmD,KAAKgC,IAAI,UACrB,UAAKmkD,GAAO,SAAU1uC,GACfA,EAAK/D,KAER+D,EAAK/D,GAAK+D,EAAKxV,KAEnB,GACF,EAEAq+Z,EAASpga,UAAU4nb,UAAY,SAAUp2a,GACvC,IAAIjR,EAAQT,KACR+nb,EAAqB/nb,KAAKyR,SAASC,EAAO,CAC5CgC,GAAI1T,KAAKkxa,aAAa,wBACtBjva,KAAM,gCAEJmpT,EAAYprT,KAAKyR,SAASs2a,EAAoB,CAChDr0a,GAAI1T,KAAKkxa,aAAa,cACtBjva,KAAM,sBAEJgrK,EAAajtK,KAAK4nb,gBAClBzyR,EAAYn1J,KAAKgC,IAAI,aACrB8kb,EAAc9mb,KAAKgC,IAAI,eACvB+kb,EAAmB/mb,KAAKgC,IAAI,oBAC5B2d,EAAe3f,KAAKgC,IAAI,gBACxBktS,EAASvvR,EAAa1U,EACtBkkS,EAASxvR,EAAazU,EACtB49G,EAAS9oH,KAAKgC,IAAI,UAClBmkD,EAAQnmD,KAAKgC,IAAI,SACjBgmb,GAAU,EACVxB,EAAY,EACZ3gZ,EAAW7lC,KAAKgC,IAAI,YACpBguH,EAAYhwH,KAAKgC,IAAI,cAEzB,UAAKmkD,GAAO,SAAU1uC,EAAMzP,GAC1B,IAAIigb,EAAWxnb,EAAMknb,SAASlwa,EAAMzP,EAAOilK,EAAYm+I,GACnDt8S,EAAOm5a,EAASh4a,UAChBlC,EAAQonJ,GAAarmJ,EAAKf,MAC1BA,EAAQy4a,IACVA,EAAYz4a,GAEC,eAAX+6G,GAEEjjF,GAAYA,EAAWlmB,EAAa1U,EAAI8C,EAAQmhS,IAElD84I,GAAU,EACVroa,EAAa1U,EAAIikS,EACjBvvR,EAAazU,GAAK+hK,EAAa85Q,GAEjCtmb,EAAMwxa,cAAcgW,EAAUtoa,GAC9BA,EAAa1U,GAAK8C,EAAQ+4a,IAGtB92T,GAAaA,EAAYrwG,EAAazU,EAAI+hK,EAAa85Q,EAAmB53I,IAE5E64I,GAAU,EACVroa,EAAa1U,GAAKu7a,EAAYM,EAC9Bnna,EAAazU,EAAIikS,EACjBq3I,EAAY,GAEd/lb,EAAMwxa,cAAcgW,EAAUtoa,GAC9BA,EAAazU,GAAK+hK,EAAa85Q,EAEnC,IAEIiB,GAAWhob,KAAKgC,IAAI,cACtBhC,KAAKymb,WAAa,EAClBzmb,KAAKwmb,UAAY,EACjBxmb,KAAKumb,cAAgB,EACrBvmb,KAAKkvS,OAASA,EACdlvS,KAAKmvS,OAASA,EACdnvS,KAAKkob,iBAAiBx2a,EAAO05S,GAEjC,EAEAk1G,EAASpga,UAAU0nb,cAAgB,WACjC,IAAI36Q,EAAajtK,KAAKgC,IAAI,cAC1B,IAAKirK,EAAY,CACf,IAAIk7Q,GAAWnob,KAAKgC,IAAI,aAAe,CAAC,GAAG8J,MAC3C,IAAI,UAAWq8a,GAAU,CACvB,IAAIC,EAAUpob,KAAKk8a,WACnBkM,EAAQhgb,SAAQ,SAAUqP,EAAMzP,GAC9B,IAAI8Y,GAAW,WAAS,UAAS,CAAC,EAAG23Z,KAAY0P,EAAQ1wa,EAAMzP,EAAOogb,IAAUtna,SAC5EmsJ,EAAansJ,IACfmsJ,EAAansJ,EAEjB,GACF,MAAWqna,IACTl7Q,EAAak7Q,EAAQrna,SAEzB,CACA,OAAOmsJ,CACT,EAEAqzP,EAASpga,UAAUmob,WAAa,SAAUr/a,EAAWs/a,EAAW7wa,EAAMw1J,GACpE,IAAIs7Q,GAAc,WAAS,WAAS,UAAS,CAC3Ct9a,EAAG,EACHC,EAAG+hK,EAAa,GACfq7Q,EAAUx8a,OAAQ,CACnB28B,QAAQ,UAAIhxB,EAAKgkS,OAAQ,SAAU,aACjC,UAAIhkS,EAAKgkS,OAAQ,QAAS,CAAC,IAC3Bh2S,EAAQzF,KAAKqR,SAASrI,EAAW,CACnCL,KAAM,SACN+K,GAAI1T,KAAKkxa,aAAa,QAAUz5Z,EAAK/D,GAAK,WAC1CzR,KAAM,qBACNqE,MAAOiib,IAELz5a,EAAOrJ,EAAMwK,UACjBxK,EAAMW,KAAK,IAAK0I,EAAKf,MAAQ,GAC7B,IAAI5M,EAAKsE,EAAMW,OACb+a,EAAShgB,EAAGggB,OACZy6B,EAAOz6C,EAAGy6C,KAOZ,OANIz6B,GACF1b,EAAMvD,IAAI,YAAY,GAEpB05C,GACFn2C,EAAMvD,IAAI,UAAU,GAEfuD,CACT,EAEA66Z,EAASpga,UAAUsob,aAAe,SAAUx/a,EAAWy/a,EAAU9mb,EAAK8V,EAAMw1J,EAAYy7Q,EAAW1gb,GACjG,IAAI+hV,EAAYpoV,EAAIooV,UAChBj+U,EAAQnK,EAAImK,MACZxF,GAAQ,WAAS,UAAS,CAC5B2E,EAAGy9a,EACHx9a,EAAG+hK,EAAa,EAChBpsJ,KAAMkpU,EAAYA,EAAUtyU,EAAKgxa,GAAWhxa,EAAMzP,GAASyP,EAAKgxa,IAC/DhQ,MAAY,UAAW3sa,GAASA,EAAM2L,EAAMzP,EAAOhI,KAAKk8a,YAAcpwa,GACzE,OAAO9L,KAAKqR,SAASrI,EAAW,CAC9BL,KAAM,OACN+K,GAAI1T,KAAKkxa,aAAa,QAAUz5Z,EAAK/D,GAAK,IAAM+0a,GAChDxmb,KAAM,eAAiBwmb,EACvBnib,MAAOA,GAEX,EACAg6Z,EAASpga,UAAUyob,UAAY,SAAU3/a,EAAW4/a,EAAUnxa,EAAMw1J,EAAYhiK,GAC9E,IAAI9J,EAAI+V,EACJpL,EAAQ88a,EAAS98a,OAAS,CAAC,EAE3BoT,EAAuB,QAAlB/d,EAAK2K,EAAMoT,SAAsB,IAAP/d,EAAgBA,EAAK8rK,EAAa,EACjExtJ,EAAgB,IAAJP,EAAU,EACtB/H,EAAK,CAAClM,EAAIiU,EAAG+tJ,EAAa,EAAI/tJ,GAChCwN,EAAKvV,EAAG,GACRwV,EAAKxV,EAAG,GACNmnB,EAAK,CAAC5R,EAAKxN,EAAGyN,EAAKzN,GACrBkD,EAAKkc,EAAG,GACRjc,EAAKic,EAAG,GACNC,EAAK,CAAC7R,EAAIrK,EAAKnD,GACjBoD,EAAKic,EAAG,GACRhc,EAAKgc,EAAG,GACNC,EAAK,CAACvzB,EAAG0hB,EAAKzN,GAChB2M,EAAK2S,EAAG,GACR1S,EAAK0S,EAAG,GACNqqZ,EAAYpxa,EAAKoxa,UACjBvib,GAAQ,WAAS,UAAS,CAC5BO,KAAM,CAAC,CAAC,IAAK6lB,EAAIC,GAAK,CAAC,IAAKzN,EAAGA,EAAG,EAAG,EAAG,EAAGkD,EAAIC,GAAK,CAAC,IAAKD,EAAK3C,EAAW4C,GAAK,CAAC,IAAKD,EAAIC,GAAK,CAAC,IAAKnD,EAAGA,EAAG,EAAG,EAAG,EAAGoD,EAAIC,GAAK,CAAC,IAAKD,EAAIC,EAAK9C,GAAY,CAAC,IAAK6C,EAAIC,GAAK,CAAC,IAAKrD,EAAGA,EAAG,EAAG,EAAG,EAAG2M,EAAIC,GAAK,CAAC,IAAKD,EAAKpM,EAAWqM,GAAK,CAAC,IAAKD,EAAIC,GAAK,CAAC,IAAK5M,EAAGA,EAAG,EAAG,EAAG,EAAGwN,EAAIC,GAAK,CAAC,IAAKD,EAAIC,EAAKlN,IAC3R0B,OAAQ,UACRy6B,KAAM,WACL9vC,GAAQ,CACT6I,QAASk0a,EAAmF,QAAtE3xa,EAAKpL,aAAqC,EAASA,EAAM6I,eAA4B,IAAPuC,EAAgBA,EAAK,IAAO,IAE9H4xa,EAAa9ob,KAAKqR,SAASrI,EAAW,CACxCL,KAAM,OACN+K,GAAI1T,KAAKkxa,aAAa,QAAUz5Z,EAAK/D,GAAK,UAC1CzR,KAAM,oBACNqE,MAAOA,IAGT,OADAwib,EAAW5mb,IAAI,MAAO0mb,EAAS39P,KACxB69P,CACT,EAEAxoB,EAASpga,UAAUynb,SAAW,SAAUlwa,EAAMzP,EAAOilK,EAAYm+I,GAC/D,IAAI29H,EAAU,QAAUtxa,EAAK/D,GAEzBs1a,EAAehpb,KAAKyR,SAAS25S,EAAW,CAC1CnpT,KAAM,wBACNyR,GAAI1T,KAAKkxa,aAAa,kBAAoB6X,GAC1C1wa,eAAgB,CACdZ,KAAMA,EACNzP,MAAOA,KAGPigb,EAAWjob,KAAKyR,SAASu3a,EAAc,CACzC/mb,KAAM,cACNyR,GAAI1T,KAAKkxa,aAAa6X,GACtB1wa,eAAgB,CACdZ,KAAMA,EACNzP,MAAOA,KAGPyzS,EAASz7S,KAAKgC,IAAI,UAClBilb,EAAWjnb,KAAKgC,IAAI,YACpBklb,EAAYlnb,KAAKgC,IAAI,aACrBolb,EAAiBpnb,KAAKgC,IAAI,kBAC1BunH,EAAQvpH,KAAKgC,IAAI,SACjBmzJ,EAAYn1J,KAAKipb,oBACjBC,EAAO,EACX,GAAIztI,EAAQ,CACV,IAAI0tI,EAAcnpb,KAAKqob,WAAWJ,EAAUxsI,EAAQhkS,EAAMw1J,GACtDyvL,EAAUjhD,EAAOihD,QACjB0sF,GAAoB,UAAI3xa,EAAM,CAAC,SAAU,aACzC,UAAS2xa,KAEX1sF,EAAU0sF,GAEZF,EAAOC,EAAYl5a,UAAUE,KAAOusV,CACtC,CACA,GAAIuqF,EAAU,CACZ,IAAIoC,EAAYrpb,KAAKwob,aAAaP,EAAU,OAAQhB,EAAUxva,EAAMw1J,EAAYi8Q,EAAMlhb,GAClFmtJ,GAEFq/Q,KAAc,EAAM6U,GAAW,UAAMl0R,EAAY+zR,EAAM,EAAG/zR,IAE5D+zR,EAAOG,EAAUp5a,UAAUE,KAAO82a,EAASvqF,OAC7C,CACA,GAAIwqF,EAAW,CACb,IAAIoC,EAAatpb,KAAKwob,aAAaP,EAAU,QAASf,EAAWzva,EAAMw1J,EAAYi8Q,EAAMlhb,GACrFmtJ,IACE+xR,EAAUnwV,YACZuyV,EAAWljb,KAAK,CACd6a,UAAW,QACXhW,EAAGkqJ,IAELq/Q,KAAc,EAAM8U,GAAY,UAAMn0R,EAAY+zR,EAAM,EAAG/zR,GAAY,SAEvEq/Q,KAAc,EAAM8U,GAAY,UAAMn0R,EAAY+zR,EAAM,EAAG/zR,KAG/D+zR,EAAOI,EAAWr5a,UAAUE,KAAO+2a,EAAUxqF,OAC/C,CAKA,GAJInzO,GACFvpH,KAAK2ob,UAAUV,EAAU1+T,EAAO9xG,EAAMw1J,EAAYi8Q,GAGhD9B,EAAgB,CAClB,IAAIt4a,EAAOm5a,EAASh4a,UACJjQ,KAAKqR,SAAS42a,EAAU,CACtCt/a,KAAM,OACN1G,KAAM,yBACNyR,GAAI1T,KAAKkxa,aAAa6X,EAAU,eAChCzib,OAAO,UAAS,CACd2E,EAAG,EACHC,EAAG,EACH6C,MAAOe,EAAKf,MACZC,OAAQi/J,GACPm6Q,EAAet7a,SAEV4J,QACZ,CAEA,OADA1V,KAAKupb,gBAAgB9xa,EAAMwwa,GACpBA,CACT,EAEA3nB,EAASpga,UAAUgob,iBAAmB,SAAUl/a,EAAWoiT,GACzD,IAAI3qT,EAAQT,KACRkvS,EAASlvS,KAAKkvS,OACdC,EAASnvS,KAAKmvS,OACdrmL,EAAS9oH,KAAKgC,IAAI,UAClBwnb,EAAYp+H,EAAUh4S,SAAQ,SAAUqE,GAC1C,MAA4B,gBAArBA,EAAKzV,IAAI,OAClB,IACI6jC,EAAW7lC,KAAKgC,IAAI,YACpBguH,EAAYhwH,KAAKgC,IAAI,aACrBmzJ,EAAYn1J,KAAKgC,IAAI,aACrB8kb,EAAc9mb,KAAKgC,IAAI,eACvBirK,EAAajtK,KAAK4nb,gBAClBP,GAAgB,UAAQ,CAAC,EAAGvB,IAAwB9lb,KAAKgC,IAAI,kBAC7Dynb,EAAazpb,KAAK0pb,eAAe1gb,EAAW8/G,EAAQ,QAASu+T,GAC7DsC,EAAiBF,EAAWx5a,UAC5B0P,EAAe,CACjB1U,EAAGikS,EACHhkS,EAAGikS,GAEDy6I,EAAQ,EACRC,EAAa,EACbrD,EAAY,EACZQ,EAAe,EACfD,EAAmB/mb,KAAKgC,IAAI,oBAQhC,GAAe,eAAX8mH,EAAyB,CAC3B,IAAIghU,EAAS9pb,KAAKgC,IAAI,WAAa,EAC/B+nb,EAAiB98Q,GAAyB,IAAX68Q,EAAe,EAAI/C,GAElDiD,EAAgBnkZ,EAAWihZ,EAAc6C,EAAe57a,MAAQ47a,EAAez5a,KACnFlQ,KAAKymb,WAAasD,EAAiBD,EACnC9pb,KAAKwmb,UAAYwD,GACjB,UAAKR,GAAW,SAAU/xa,GACxB,IAAI3I,EAAO2I,EAAKxH,UACZlC,EAAQonJ,GAAarmJ,EAAKf,OAC1B87a,GAAcA,EAAalqa,EAAa1U,EAAI8C,EAAQ+4a,GAhB5D,SAAoBrva,EAAMkI,GACxB,IAAI7Q,EAAO2I,EAAKxH,UACZlC,EAAQonJ,GAAarmJ,EAAKf,MAE9B,OADkB4R,EAAa1U,EAAI8C,EAAQ+4a,EAAc6C,EAAe57a,MACnD83B,CACvB,CAW2EokZ,CAAWxya,EAAMkI,MACxE,IAAViqa,IACFC,EAAalqa,EAAa1U,EAAI67a,EAC9Brmb,EAAMwxa,cAAcwX,EAAY,CAC9Bx+a,EAAG++a,EACH9+a,EAAGyU,EAAazU,EAAI+hK,EAAa,EAAI08Q,EAAe37a,OAAS,EAAI27a,EAAev5a,QAGpFw5a,GAAS,EACTjqa,EAAa1U,EAAIikS,EACjBvvR,EAAazU,GAAK6+a,GAEpBtpb,EAAMwxa,cAAcx6Z,EAAMkI,GAC1BlI,EAAK1K,YAAYoJ,QAAQ,CACvBxN,KAAM,OACNrC,MAAO,CACL2E,EAAG0U,EAAa1U,EAChBC,EAAGyU,EAAazU,EAChB6C,MAAOA,EAAQ+4a,EACf94a,OAAQi/J,KAGZttJ,EAAa1U,GAAK8C,EAAQ+4a,CAC5B,GACF,KAAO,EACL,UAAK0C,GAAW,SAAU/xa,GACxB,IAAI3I,EAAO2I,EAAKxH,UACZnB,EAAKf,MAAQy4a,IACfA,EAAY13a,EAAKf,MAErB,IACAi5a,EAAeR,EACfA,GAAaM,EACTjhZ,IAEF2gZ,EAAYvsa,KAAKC,IAAI2rB,EAAU2gZ,GAC/BQ,EAAe/sa,KAAKC,IAAI2rB,EAAUmhZ,IAEpChnb,KAAKwmb,UAAYA,EACjBxmb,KAAKymb,WAAaz2T,EAAY/1G,KAAKE,IAAIwva,EAAe37a,OAAQi/J,EAAa85Q,GAC3E,IAAImD,EAAejwa,KAAKwX,MAAMzxB,KAAKymb,YAAcx5Q,EAAa85Q,KAC9D,UAAKyC,GAAW,SAAU/xa,EAAMzP,GAChB,IAAVA,GAAeA,EAAQkib,GAAiB,IAC1CN,GAAS,EACTjqa,EAAa1U,GAAKu7a,EAClB7ma,EAAazU,EAAIikS,GAEnB1uS,EAAMwxa,cAAcx6Z,EAAMkI,GAC1BlI,EAAK1K,YAAYoJ,QAAQ,CACvBxN,KAAM,OACNrC,MAAO,CACL2E,EAAG0U,EAAa1U,EAChBC,EAAGyU,EAAazU,EAChB6C,MAAOy4a,EACPx4a,OAAQi/J,KAGZttJ,EAAazU,GAAK+hK,EAAa85Q,CACjC,IACA/mb,KAAKumb,cAAgBqD,EACrB5pb,KAAKiya,cAAcwX,EAAY,CAC7Bx+a,EAAGikS,EAAS83I,EAAe,EAAI2C,EAAe57a,MAAQ,EAAI47a,EAAez5a,KACzEhF,EAAG8kH,EAAY25T,EAAe37a,OAAS27a,EAAev5a,MAE1D,CACIpQ,KAAKymb,YAAczmb,KAAKwmb,WAE1Bp7H,EAAUr+S,YAAYoJ,QAAQ,CAC5BxN,KAAM,OACNrC,MAAO,CACL2E,EAAGjL,KAAKkvS,OACRhkS,EAAGlL,KAAKmvS,OACRphS,MAAO/N,KAAKwmb,UACZx4a,OAAQhO,KAAKymb,cAKJ,eAAX39T,GAA2B9oH,KAAKgC,IAAI,UACtChC,KAAKumb,cAAgBtsa,KAAKisJ,KAAK0jR,EAAQ5pb,KAAKgC,IAAI,WAEhDhC,KAAKumb,cAAgBqD,EAEnB5pb,KAAKsmb,iBAAmBtmb,KAAKumb,gBAC/Bvmb,KAAKsmb,iBAAmB,GAE1Btmb,KAAK2mb,iBAAiB8C,GAEtBr+H,EAAUhlT,KAAK,SAAUpG,KAAK4mb,6BAChC,EAIAtmB,EAASpga,UAAUwpb,eAAiB,SAAUh4a,EAAOo3G,EAAQjoG,EAAMspa,GACjE,IAAIxqa,EAAe,CACjB1U,EAAG,EACHC,EAAG,GAED+8a,EAAWjob,KAAKyR,SAASC,EAAO,CAClCgC,GAAI1T,KAAKkxa,aAAa,oBACtBjva,KAAM,sBAEJd,GAAK,UAAIgpb,EAAS1uI,OAAQ,QAAS,CAAC,GACtCvkS,EAAK/V,EAAGmjC,KACRA,OAAc,IAAPptB,EAAgB,GAAKA,EAC5B05F,GAAa,UAAOzvG,EAAI,CAAC,SACvBipb,EAAYpqb,KAAKqqb,UAAUpC,EAAUtoa,EAAcuma,IAA4B,eAAXp9T,EAA0B,KAAO,OAAQxkF,EAAMssE,GACvHw5U,EAAUjqb,GAAG,QAASH,KAAK0mb,kBAC3B,IAAI4D,EAAgBF,EAAUn6a,UAC9B0P,EAAa1U,GAAKq/a,EAAcv8a,MAAQ,EACxC,IAWIy1a,EAXYxjb,KAAKqR,SAAS42a,EAAU,CACtCt/a,KAAM,OACN+K,GAAI1T,KAAKkxa,aAAa,mBACtBjva,KAAM,kBACNqE,OAAO,UAAS,CACd2E,EAAG0U,EAAa1U,EAChBC,EAAGyU,EAAazU,EAAIo5B,EAAO,EAC3BzjB,KAAMA,EACNK,aAAc,WACb,UAAIipa,EAAStpa,KAAM,YAEC5Q,UAIzB,OAHA0P,EAAa1U,GAAKu4a,EAASz1a,MAAQ,EAClB/N,KAAKqqb,UAAUpC,EAAUtoa,EAAcsma,IAA6B,eAAXn9T,EAA0B,OAAS,QAASxkF,EAAMssE,GACjHzwG,GAAG,QAASH,KAAK6mb,mBACrBoB,CACT,EACA3nB,EAASpga,UAAUymb,iBAAmB,SAAU8C,GAC9C,IACItob,GADgB,UAAQ,CAAC,EAAG2kb,IAAwB9lb,KAAKgC,IAAI,kBAC1Cy5S,OAAO3vS,MAC5B8vC,EAAOz6C,EAAGy6C,KACVjnC,EAAUxT,EAAGwT,QACboxa,EAAe5kb,EAAG4kb,aAClBC,EAAkB7kb,EAAG6kb,gBACnBnla,EAAO7gB,KAAKsmb,iBAAmB,IAAMtmb,KAAKumb,cAC1CpO,EAAYsR,EAAaA,EAAWn5a,cAAc,GAAKtQ,KAAKgxa,oBAAoB,mBAChFoZ,EAAYX,EAAaA,EAAWh2a,SAASzT,KAAKkxa,aAAagV,MAAoBlmb,KAAKgxa,oBAAoBkV,KAC5GqE,EAAad,EAAaA,EAAWh2a,SAASzT,KAAKkxa,aAAa+U,MAAqBjmb,KAAKgxa,oBAAoBiV,KAClH9N,EAAU/xa,KAAK,OAAQya,GAEvBupa,EAAUhkb,KAAK,UAAqC,IAA1BpG,KAAKsmb,iBAAyBN,EAAkBrxa,GAC1Ey1a,EAAUhkb,KAAK,OAAkC,IAA1BpG,KAAKsmb,iBAAyBP,EAAenqY,GACpEwuY,EAAUhkb,KAAK,SAAoC,IAA1BpG,KAAKsmb,iBAAyB,cAAgB,WAEvEiE,EAAWnkb,KAAK,UAAWpG,KAAKsmb,mBAAqBtmb,KAAKumb,cAAgBP,EAAkBrxa,GAC5F41a,EAAWnkb,KAAK,OAAQpG,KAAKsmb,mBAAqBtmb,KAAKumb,cAAgBR,EAAenqY,GACtF2uY,EAAWnkb,KAAK,SAAUpG,KAAKsmb,mBAAqBtmb,KAAKumb,cAAgB,cAAgB,WAEzF,IAAIiE,EAAUJ,EAAUn6a,UAAUE,KAAO,EACzCgoa,EAAU/xa,KAAK,IAAKokb,GACpBA,GAAWrS,EAAUloa,UAAUlC,MAAQ,EACvC/N,KAAKyqb,gBAAgBF,EAAY,CAC/Bt/a,EAAGu/a,EACHt/a,EAAG,GAEP,EACAo1Z,EAASpga,UAAUmqb,UAAY,SAAU34a,EAAOiO,EAAc1d,EAAM64B,EAAWwJ,EAAMx4B,GACnF,IAAIb,EAAI0U,EAAa1U,EACnBC,EAAIyU,EAAazU,EACfzF,EAAQzF,KAAKqR,SAASK,EAAO,CAC/B/I,KAAM,OACN+K,GAAI1T,KAAKkxa,aAAajva,GACtBA,KAAMA,EACNqE,OAAO,UAAS,CACdg+B,KAAMA,EACNxJ,UAAWA,EACXj0B,KAAM,CAAC,CAAC,IAAKoE,EAAIq5B,EAAO,EAAGp5B,GAAI,CAAC,IAAKD,EAAGC,EAAIo5B,GAAO,CAAC,IAAKr5B,EAAIq5B,EAAMp5B,EAAIo5B,GAAO,CAAC,MAC/Ev4B,OAAQ,WACPD,KAML,OAJArG,EAAMW,KAAK,SAAUuna,IAAiB,CACpC1ia,EAAGA,EAAIq5B,EAAO,EACdp5B,EAAGA,EAAIo5B,EAAO,GACb6hZ,IAAWrrZ,KACPr1B,CACT,EAIA66Z,EAASpga,UAAUuqb,gBAAkB,SAAUn2V,EAAOtpF,GACpD,IAAIC,EAAID,EAAMC,EACZC,EAAIF,EAAME,EACR/J,EAAKmzF,EAAMluF,OACbk+B,EAAOnjC,EAAGmjC,KACVxJ,EAAY35B,EAAG25B,UACb3pB,EAASw8Z,IAAiB,CAC5B1ia,EAAGA,EAAIq5B,EAAO,EACdp5B,EAAGA,EAAIo5B,EAAO,GACb6hZ,IAAWrrZ,IACdw5D,EAAMluF,KAAK,OAAQ,CAAC,CAAC,IAAK6E,EAAIq5B,EAAO,EAAGp5B,GAAI,CAAC,IAAKD,EAAGC,EAAIo5B,GAAO,CAAC,IAAKr5B,EAAIq5B,EAAMp5B,EAAIo5B,GAAO,CAAC,OAC5FgwD,EAAMluF,KAAK,SAAU+K,EACvB,EACAmvZ,EAASpga,UAAU0mb,2BAA6B,WAC9C,IAAIzlb,EAAKnB,KACPsmb,EAAmBnlb,EAAGmlb,iBACtBE,EAAYrlb,EAAGqlb,UACfC,EAAatlb,EAAGslb,WASlB,OAAO7Y,IAPoB,eADd5ta,KAAKgC,IAAI,UACoB,CACxCiJ,EAAG,EACHC,EAAGu7a,GAAc,EAAIH,IACnB,CACFr7a,EAAGu7a,GAAa,EAAIF,GACpBp7a,EAAG,GAGP,EAEAo1Z,EAASpga,UAAUqpb,gBAAkB,SAAU9xa,EAAMwwa,GAGnD,GAFajob,KAAKy8a,cAAchla,GACT5W,OAAS,EACjB,CACb,IAAIgP,EAAWo4a,EAAS33a,cACpBo6a,EAAe1qb,KAAKgC,IAAI,eAC5B,UAAK6N,GAAU,SAAUF,GACvB,IACIg7a,EADOh7a,EAAQ3N,IAAI,QACLsnB,MAAM,KAAK,GACzBsha,EAAc7P,IAAetja,EAAMkza,EAAQD,GAC3CE,IACFj7a,EAAQvJ,KAAKwkb,GACE,WAAXD,GAAyBh7a,EAAQ3N,IAAI,aAAe2N,EAAQ3N,IAAI,YAE9D2N,EAAQ3N,IAAI,aACd2N,EAAQvJ,KAAK,OAAQ,MAEnBuJ,EAAQ3N,IAAI,WACd2N,EAAQvJ,KAAK,SAAU,OAI/B,GACF,CACF,EAEAk6Z,EAASpga,UAAU+ob,kBAAoB,WACrC,IAAI9zR,EAAYn1J,KAAKgC,IAAI,aACrBglb,EAAehnb,KAAKgC,IAAI,gBAS5B,OARIglb,EAEE7xR,IACF6xR,EAAe7xR,GAAa6xR,EAAe7xR,EAAY6xR,GAEhD7xR,IACT6xR,EAAe7xR,GAEV6xR,CACT,EACO1mB,CACT,CA5wB4B,CA4wB1B,KACF,QCnzBIuqB,IAA8B,SAAUnpb,GAE1C,SAASmpb,IACP,OAAkB,OAAXnpb,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAoqBA,OAvqBA,UAAU6qb,EAAgBnpb,GAI1Bmpb,EAAe3qb,UAAU6B,cAAgB,WACvC,IAAIJ,EAAMD,EAAOxB,UAAU6B,cAAcH,KAAK5B,MAC9C,OAAO,WAAS,UAAS,CAAC,EAAG2B,GAAM,CACjCgH,KAAM,WACNuR,IAAK,EACLC,IAAK,IACLhY,MAAO,KACP60C,OAAQ,GACR8zY,MAAO,CAAC,EACRC,KAAM,CAAC,EACPn+X,MAAO,CAAC,EACRnpB,QAAS,CAAC,EACVunZ,UAAU,EACV//P,IAAK,KACLxjI,KAAM,KACN5hB,SAAU,KACVmqF,UAAW,KACXluH,WAAY,CACV8qD,MAAO,CACLynC,MAAO,OACPqoQ,QAAS,EACT3S,UAAW,KACXj+U,MAAO,CACLgV,SAAU,GACV86B,KAAM,IAAM87B,UACZx2D,aAAc,SACduS,WAAY,IAAMA,aAGtBgQ,QAAS,CACPa,KAAM,GACNx4B,MAAO,CACL8vC,KAAM,OACNz6B,OAAQ,SAGZ2pa,MAAO,CAAC,EACRC,KAAM,CACJpib,KAAM,QACN27B,KAAM,GACN2mZ,cAAe,IACfn/a,MAAO,CACL8vC,KAAM,YAGVmW,MAAO,CACL2qS,QAAS,EACT5wV,MAAO,CACL8vC,KAAM,IAAM87B,UACZ52D,SAAU,GACVG,UAAW,QACXC,aAAc,UAKxB,EACA2pa,EAAe3qb,UAAUmwa,SAAW,WAClC,OAAO,CACT,EAEAwa,EAAe3qb,UAAUqhI,SAAW,WAClC,OAAOvhI,KAAKkrb,iBACd,EACAL,EAAe3qb,UAAU6/R,SAAW,WAClC,MAAO,CACL7lR,IAAKla,KAAKgC,IAAI,OACdmY,IAAKna,KAAKgC,IAAI,OAElB,EAEA6ob,EAAe3qb,UAAUggS,SAAW,SAAUhmR,EAAKC,GACjDna,KAAKwF,OAAO,CACV0U,IAAKA,EACLC,IAAKA,GAET,EACA0wa,EAAe3qb,UAAUm2I,SAAW,SAAUl0I,GAC5C,IAAI2O,EAAc9Q,KAAKuhI,WACvBvhI,KAAKkC,IAAI,QAASC,GAClB,IAAIuP,EAAQ1R,KAAKgC,IAAI,SACrBhC,KAAKmrb,iBACDnrb,KAAKgC,IAAI,aACXhC,KAAKorb,cAAc15a,GAErB1R,KAAK8xa,aAAa,eAAgB,CAChChha,YAAaA,EACb3O,MAAOA,GAEX,EACA0ob,EAAe3qb,UAAUuxa,UAAY,WACnC,IAAI//Z,EAAQ1R,KAAKgC,IAAI,SACrBhC,KAAKqrb,gBAAgB35a,GACrB1R,KAAKsrb,cAAc55a,GACnB1R,KAAKurb,eAAe75a,EACtB,EACAm5a,EAAe3qb,UAAU0lb,kBAAoB,SAAUl0a,GACrD1R,KAAKwrb,SAAS95a,GACd1R,KAAKy+a,WAAW/sa,GAChB1R,KAAKyrb,cAAc/5a,GACnB1R,KAAK0rb,WAAWh6a,GAChB1R,KAAKmrb,eAAez5a,GAChB1R,KAAKgC,IAAI,aACXhC,KAAKorb,cAAc15a,EAEvB,EACAm5a,EAAe3qb,UAAUmrb,gBAAkB,SAAU35a,GACnD1R,KAAK2rb,kBAAkBj6a,EACzB,EACAm5a,EAAe3qb,UAAUyrb,kBAAoB,SAAUj6a,GACrD,IAAIjR,EAAQT,KACZ0R,EAAMvR,GAAG,2BAA2B,SAAU2J,GAC5C,IAAI0xR,EAAW/6R,EAAMmrb,sBAAsB9hb,EAAGmB,EAAGnB,EAAGoB,GAEhDuwR,EADeh7R,EAAMyqb,kBACG,GACxBzvJ,EAAWD,IAEbC,EAAWD,GAEb/6R,EAAM41I,SAAS,CAACmlJ,EAAUC,GAC5B,IACA/pR,EAAMvR,GAAG,2BAA2B,SAAU2J,GAC5C,IAAI2xR,EAAWh7R,EAAMmrb,sBAAsB9hb,EAAGmB,EAAGnB,EAAGoB,GAEhDswR,EADe/6R,EAAMyqb,kBACG,GACxB1vJ,EAAWC,IAEbD,EAAWC,GAEbh7R,EAAM41I,SAAS,CAACmlJ,EAAUC,GAC5B,GACF,EACAovJ,EAAe3qb,UAAUorb,cAAgB,SAAU55a,GAAQ,EAC3Dm5a,EAAe3qb,UAAUqrb,eAAiB,SAAU75a,GAClD,IAAIjR,EAAQT,KACR0f,EAAW,KACfhO,EAAMvR,GAAG,0BAA0B,SAAU2J,GAC3C4V,EAAW,CACTzU,EAAGnB,EAAGmB,EACNC,EAAGpB,EAAGoB,EAEV,IACAwG,EAAMvR,GAAG,qBAAqB,SAAU2J,GACtC,GAAK4V,EAAL,CAGA,IAAImsa,EAAWprb,EAAMmrb,sBAAsBlsa,EAASzU,EAAGyU,EAASxU,GAC5D2/H,EAAWpqI,EAAMmrb,sBAAsB9hb,EAAGmB,EAAGnB,EAAGoB,GAChDigI,EAAe1qI,EAAMyqb,kBACrBY,EAAU3gT,EAAa,GAAKA,EAAa,GACzCxjF,EAAQlnD,EAAMs/R,WACdgsJ,EAASlhT,EAAWghT,EACpBE,EAAS,EAEP5gT,EAAa,GAAK4gT,EAASpkY,EAAMztC,IACnCzZ,EAAM41I,SAAS,CAAClL,EAAa,GAAK4gT,EAAQ5gT,EAAa,GAAK4gT,IAE5Dtrb,EAAM41I,SAAS,CAAC1uF,EAAMztC,IAAKytC,EAAMztC,IAAM4xa,IAGhCC,EAAS,IACdA,EAAS,GAAK5gT,EAAa,GAAK4gT,EAASpkY,EAAMxtC,IACjD1Z,EAAM41I,SAAS,CAAClL,EAAa,GAAK4gT,EAAQ5gT,EAAa,GAAK4gT,IAE5Dtrb,EAAM41I,SAAS,CAAC1uF,EAAMxtC,IAAM2xa,EAASnkY,EAAMxtC,OAG/CuF,EAAW,CACTzU,EAAGnB,EAAGmB,EACNC,EAAGpB,EAAGoB,EAxBR,CA0BF,IACAwG,EAAMvR,GAAG,wBAAwB,SAAU2J,GACzC4V,EAAW,IACb,GACF,EACAmra,EAAe3qb,UAAUu+a,WAAa,SAAU/sa,GAC9C1R,KAAKgsb,UAAU,MAAOt6a,GACtB1R,KAAKgsb,UAAU,MAAOt6a,EACxB,EACAm5a,EAAe3qb,UAAU8rb,UAAY,SAAU/pb,EAAMyP,GACnD,IAAIota,EAAW9+a,KAAKgC,IAAI,SACpB8J,EAAQgza,EAAShza,MACjBg3T,EAAag8G,EAASzqV,MACtB43V,EAAiBnN,EAAS/0F,UAC1B5nV,EAAQnC,KAAKgC,IAAIC,GACjBiqb,EAAalsb,KAAKmsb,mBAAmBlqb,EAAM6gU,GAC3CmuG,EAAU,SAAWhva,EACzBjC,KAAKqR,SAASK,EAAO,CACnB/I,KAAM,OACN+K,GAAI1T,KAAKkxa,aAAaD,GACtBhva,KAAM,gBAAkBA,EACxBqE,OAAO,WAAS,UAAS,CACvB2E,EAAG,EACHC,EAAG,EACH2V,MAAM,UAAWora,GAAkBA,EAAe9pb,GAASA,GAC1D2J,GAAQogb,IAEf,EAEArB,EAAe3qb,UAAUisb,mBAAqB,SAAUlqb,EAAMoyF,GAC5D,IACIpzE,EAAY,SACZC,EAAe,SA0BnB,OA5BiBlhB,KAAKq4T,cAKpBp3S,EAAY,QAGRC,EAFU,SAAVmzE,EACW,QAATpyF,EACa,MAEA,SAGF,OAGH,SAAVoyF,GACFnzE,EAAe,MAEbD,EADW,QAAThf,EACU,QAEA,QAGdgf,EAAY,QACZC,EAAe,UAGZ,CACLD,UAAWA,EACXC,aAAcA,EAElB,EACA2pa,EAAe3qb,UAAUksb,YAAc,SAAUnhb,EAAGC,EAAGwiB,EAAGrI,GACxD,IAAIgna,EAAUrsb,KAAKgC,IAAI,QACnBsiC,EAAO+nZ,EAAQ/nZ,KACjB2mZ,EAAgBoB,EAAQpB,cACxBtib,EAAO0jb,EAAQ1jb,KACb0vT,EAAar4T,KAAKq4T,aAElBtqT,EAAQ2f,EACR1f,EAASqX,EACRtX,IACHA,EAAQsqT,EAAa/zR,EAJV2mZ,GAMRj9a,IACHA,EAASqqT,EAPE4yH,EAOoB3mZ,GAEjC,IAAIz9B,EAAO,GAaX,MAZa,UAAT8B,GACF9B,EAAKtG,KAAK,CAAC,IAAK0K,EAAGC,IACnBrE,EAAKtG,KAAK,CAAC,IAAK0K,EAAI8C,EAAO7C,IAC3BrE,EAAKtG,KAAK,CAAC,IAAK0K,EAAI8C,EAAO7C,EAAI8C,IAC/BnH,EAAKtG,KAAK,CAAC,IAAK0K,EAAGC,EAAI8C,IACvBnH,EAAKtG,KAAK,CAAC,QAEXsG,EAAKtG,KAAK,CAAC,IAAK0K,EAAI8C,EAAO7C,IAC3BrE,EAAKtG,KAAK,CAAC,IAAK0K,EAAI8C,EAAO7C,EAAI8C,IAC/BnH,EAAKtG,KAAK,CAAC,IAAK0K,EAAGC,EAAI8C,IACvBnH,EAAKtG,KAAK,CAAC,OAENsG,CACT,EACAgkb,EAAe3qb,UAAUsrb,SAAW,SAAU95a,GAC5C,IACI5F,EADU9L,KAAKgC,IAAI,QACH8J,MACpB9L,KAAKqR,SAASK,EAAO,CACnB/I,KAAM,OACN+K,GAAI1T,KAAKkxa,aAAa,QACtBjva,KAAM,cACNqE,OAAO,UAAS,CACdO,KAAM7G,KAAKosb,YAAY,EAAG,IACzBtgb,IAEP,EAEA++a,EAAe3qb,UAAUosb,cAAgB,SAAUt1Y,GACjD,IAOIjD,EAPAjjB,EAAQkmB,EAAOn2C,OACnB,IAAKiwB,EACH,OAAO,KAET,GAAc,IAAVA,EACF,OAAOkmB,EAAO,GAKdjD,EAFE/zC,KAAKq4T,aAEC,QAEA,OAEV,IAAK,IAAIn3T,EAAI,EAAGA,EAAI4vB,EAAO5vB,IAAK,CAE9B6yC,GAAS,IADK7yC,GAAK4vB,EAAQ,GACF,IAAMkmB,EAAO91C,EACxC,CACA,OAAO6yC,CACT,EACA82Y,EAAe3qb,UAAUqsb,aAAe,SAAU76a,GAChD,IACI7K,EADY7G,KAAKwsb,aAAa96a,GACbtL,KAAK,QAC1B,OAAO,UAAMS,EACf,EACAgkb,EAAe3qb,UAAUusb,kBAAoB,SAAU/6a,GACrD,IAOIzG,EACAC,EACA6C,EACAC,EAVA7L,EAAQnC,KAAKkrb,kBACbhxa,EAAM/X,EAAM,GACdgY,EAAMhY,EAAM,GACVuqb,EAAW1sb,KAAK2sb,YAAYj7a,GAC5ByrB,EAAan9B,KAAK4sb,gBAAgB1ya,EAAKxI,GACvCwla,EAAWl3a,KAAK4sb,gBAAgBzya,EAAKzI,GAiBzC,OAhBiB1R,KAAKq4T,cAMpBptT,EAAIyhb,EAASx8a,KACbhF,EAAIiyB,EAAWjyB,EACf6C,EAAQ2+a,EAAS3+a,MACjBC,EAASkpa,EAAShsa,EAAIiyB,EAAWjyB,IAEjCD,EAAIkyB,EAAWlyB,EACfC,EAAIwhb,EAASt8a,KACbrC,EAAQmpa,EAASjsa,EAAIkyB,EAAWlyB,EAChC+C,EAAS0+a,EAAS1+a,QAEb,CACL/C,EAAGA,EACHC,EAAGA,EACH6C,MAAOA,EACPC,OAAQA,EAEZ,EAEA68a,EAAe3qb,UAAU2sb,cAAgB,SAAUn7a,GACjD,IAAIo7a,EAAW9sb,KAAKgC,IAAI,SACpBg1C,EAASh3C,KAAKgC,IAAI,UAClB6E,EAAO7G,KAAKusb,aAAa76a,GAC7B,OAAO,UAAI,CACT7K,KAAMA,EACN+0C,KAAM57C,KAAKssb,cAAct1Y,IACxB81Y,EAAShhb,MACd,EACA++a,EAAe3qb,UAAUirb,eAAiB,SAAUz5a,GAClD,IAAI1I,EAAY0I,GAAS1R,KAAKgC,IAAI,SAC9B+qb,EAAU/sb,KAAKkxa,aAAa,SAC5B8b,EAAahkb,EAAUyK,SAASs5a,GAChC12a,EAAY22a,EAAW93a,UACvB5O,EAAQtG,KAAKysb,kBAAkB/6a,GAC9B2E,EAMHA,EAAUjQ,KAAKE,GALf0mb,EAAW72a,QAAQ,CACjBxN,KAAM,OACNrC,MAAOA,GAKb,EACAukb,EAAe3qb,UAAUwrb,WAAa,SAAUh6a,GAC9C,IAAIq7a,EAAU/sb,KAAKkxa,aAAa,SAC5B8b,EAAat7a,EAAM+B,SAASs5a,GAC5BE,EAAajtb,KAAK6sb,cAAcn7a,GAChCs7a,EACFA,EAAW5mb,KAAK6mb,GAEhBjtb,KAAKqR,SAASK,EAAO,CACnB/I,KAAM,OACN+K,GAAIq5a,EACJG,UAAWltb,KAAKgC,IAAI,YACpBC,KAAM,eACNqE,MAAO2mb,GAGb,EACApC,EAAe3qb,UAAU0sb,gBAAkB,SAAUzqb,EAAOuP,GAC1D,IAAIvQ,EAAKnB,KAAK+/R,WACZ7lR,EAAM/Y,EAAG+Y,IAEP6+C,GAAW52D,EAAQ+X,IADf/Y,EAAGgZ,IAC0BD,GACjCpL,EAAO9O,KAAK2sb,YAAYj7a,GAExB1G,EAAQ,CACVC,EAAG,EACHC,EAAG,GASL,OAZgBlL,KAAKq4T,cAMnBrtT,EAAMC,EAAI6D,EAAKoB,KAAOpB,EAAKf,MAAQ,EACnC/C,EAAME,EAAImja,IAAkBv/Z,EAAKsB,KAAMtB,EAAKuB,KAAM0oD,KAElD/tD,EAAMC,EAAIoja,IAAkBv/Z,EAAKoB,KAAMpB,EAAKqB,KAAM4oD,GAClD/tD,EAAME,EAAI4D,EAAKsB,KAAOtB,EAAKd,OAAS,GAE/BhD,CACT,EACA6/a,EAAe3qb,UAAUssb,aAAe,SAAU96a,GAEhD,OADgBA,GAAS1R,KAAKgC,IAAI,UACjByR,SAASzT,KAAKkxa,aAAa,QAC9C,EAEA2Z,EAAe3qb,UAAUysb,YAAc,SAAUj7a,GAG/C,OAFgB1R,KAAKwsb,aAAa96a,GACbzB,SAEvB,EACA46a,EAAe3qb,UAAUitb,kBAAoB,WAI3C,OAHgBntb,KAAKgC,IAAI,SACCyR,SAASzT,KAAKkxa,aAAa,SAChCtga,eAEvB,EAEAi6a,EAAe3qb,UAAUm4T,WAAa,WACpC,MAA8B,aAAvBr4T,KAAKgC,IAAI,SAClB,EAEA6ob,EAAe3qb,UAAU0rb,sBAAwB,SAAU3gb,EAAGC,GAC5D,IAAI/J,EAAKnB,KAAK+/R,WACZ7lR,EAAM/Y,EAAG+Y,IACTC,EAAMhZ,EAAGgZ,IACPrL,EAAO9O,KAAKmtb,oBACZC,EAAYptb,KAAKq4T,aACjB5wQ,EAAOznD,KAAKgC,IAAI,QAShBG,EAAQksa,IAAkBn0Z,EAAKC,EAP/Biza,GAESlib,EAAI4D,EAAKsB,MAAQtB,EAAKd,QAGtB/C,EAAI6D,EAAKoB,MAAQpB,EAAKf,OAG/B05C,IAEFtlD,EAAQ+X,EADID,KAAKwoB,OAAOtgC,EAAQ+X,GAAOutC,GACjBA,GASxB,OANItlD,EAAQgY,IACVhY,EAAQgY,GAENhY,EAAQ+X,IACV/X,EAAQ+X,GAEH/X,CACT,EAEA0ob,EAAe3qb,UAAUgrb,gBAAkB,WACzC,IAAI/ob,EAAQnC,KAAKgC,IAAI,SACrB,IAAKG,EAAO,CACV,IAAIq+B,EAASxgC,KAAKgC,IAAI,UACtB,OAAKw+B,EAIE,CAACvmB,KAAKE,IAAIF,KAAKC,IAAI7Y,MAAM4Y,MAAM,UAAeumB,EAAQ,CAACxgC,KAAKgC,IAAI,UAAWhC,KAAKgC,IAAI,QAASiY,KAAKC,IAAID,KAAKE,IAAI9Y,MAAM4Y,MAAM,UAAeumB,EAAQ,CAACxgC,KAAKgC,IAAI,UAAWhC,KAAKgC,IAAI,SAH9K,CAAChC,KAAKgC,IAAI,OAAQhC,KAAKgC,IAAI,OAItC,CACA,OAAOG,CACT,EAEA0ob,EAAe3qb,UAAUkrb,cAAgB,SAAU15a,GACjD,IAAIy5H,EAAenrI,KAAKkrb,kBACpBhxa,EAAMixH,EAAa,GACrBhxH,EAAMgxH,EAAa,GACrBnrI,KAAKqtb,aAAa37a,EAAO,MAAOwI,GAChCla,KAAKqtb,aAAa37a,EAAO,MAAOyI,EAClC,EAEA0wa,EAAe3qb,UAAUotb,eAAiB,SAAUC,EAAYvib,GAC9D,IAAIqtT,EAAar4T,KAAKq4T,aAClBxxT,EAAO,GACPkH,EAAQw/a,EAAWjpZ,KACnBr5B,EAAID,EAAMC,EACZC,EAAIF,EAAME,EACR8C,EA/dmB,IA+dVD,EACTy/a,EAAYz/a,EAAQ,EACpB0/a,EAAgB1/a,EAAQ,EAC5B,GAAIsqT,EAAY,CAQd,IAAIq1H,EAAYzib,EAzeO,GAyeH+C,EACpBnH,EAAKtG,KAAK,CAAC,IAAK0K,EAAGC,IACnBrE,EAAKtG,KAAK,CAAC,IAAKmtb,EAAWxib,EAAIsib,IAC/B3mb,EAAKtG,KAAK,CAAC,IAAK0K,EAAI+C,EAAQ9C,EAAIsib,IAChC3mb,EAAKtG,KAAK,CAAC,IAAK0K,EAAI+C,EAAQ9C,EAAIsib,IAChC3mb,EAAKtG,KAAK,CAAC,IAAKmtb,EAAWxib,EAAIsib,IAC/B3mb,EAAKtG,KAAK,CAAC,MAEXsG,EAAKtG,KAAK,CAAC,IAAKmtb,EAAWxib,EAAIuib,IAC/B5mb,EAAKtG,KAAK,CAAC,IAAK0K,EAAI+C,EAAS,EAAG9C,EAAIuib,IACpC5mb,EAAKtG,KAAK,CAAC,IAAKmtb,EAAWxib,EAAIuib,IAC/B5mb,EAAKtG,KAAK,CAAC,IAAK0K,EAAI+C,EAAS,EAAG9C,EAAIuib,GACtC,KAAO,CAQL,IAAIE,EAAYzib,EA7fO,GA6fH8C,EACpBnH,EAAKtG,KAAK,CAAC,IAAK0K,EAAGC,IACnBrE,EAAKtG,KAAK,CAAC,IAAK0K,EAAIuib,EAAWG,IAC/B9mb,EAAKtG,KAAK,CAAC,IAAK0K,EAAIuib,EAAWtib,EAAI8C,IACnCnH,EAAKtG,KAAK,CAAC,IAAK0K,EAAIuib,EAAWtib,EAAI8C,IACnCnH,EAAKtG,KAAK,CAAC,IAAK0K,EAAIuib,EAAWG,IAC/B9mb,EAAKtG,KAAK,CAAC,MAEXsG,EAAKtG,KAAK,CAAC,IAAK0K,EAAIwib,EAAeE,IACnC9mb,EAAKtG,KAAK,CAAC,IAAK0K,EAAIwib,EAAevib,EAAI8C,EAAS,IAChDnH,EAAKtG,KAAK,CAAC,IAAK0K,EAAIwib,EAAeE,IACnC9mb,EAAKtG,KAAK,CAAC,IAAK0K,EAAIwib,EAAevib,EAAI8C,EAAS,GAClD,CACA,OAAOnH,CACT,EAEAgkb,EAAe3qb,UAAUmtb,aAAe,SAAU37a,EAAOzP,EAAME,GAC7D,IAAI6I,EAAQhL,KAAK4sb,gBAAgBzqb,EAAOuP,GACpC67a,EAAavtb,KAAKgC,IAAI,WACtB6E,EAAO7G,KAAKstb,eAAeC,EAAYvib,GACvC0I,EAAK1T,KAAKkxa,aAAa,WAAajva,GACpC2rb,EAAel8a,EAAM+B,SAASC,GAC9B2kT,EAAar4T,KAAKq4T,aAClBu1H,EACFA,EAAaxnb,KAAK,OAAQS,GAE1B7G,KAAKqR,SAASK,EAAO,CACnB/I,KAAM,OACN1G,KAAM,kBAAoBA,EAC1Birb,WAAW,EACXx5a,GAAIA,EACJpN,OAAO,WAAS,UAAS,CACvBO,KAAMA,GACL0mb,EAAWzhb,OAAQ,CACpBC,OAAQssT,EAAa,YAAc,eAI3C,EAGAwyH,EAAe3qb,UAAUurb,cAAgB,SAAU/5a,GACjD,IAAIm8a,EAAYn8a,EAAM+B,SAASzT,KAAKkxa,aAAa,SAC7C4c,EAAWp8a,EAAM+B,SAASzT,KAAKkxa,aAAa,cAC5C6c,EAAWr8a,EAAM+B,SAASzT,KAAKkxa,aAAa,cAC5C/zY,EAAan9B,KAAKylb,eAClBzlb,KAAKq4T,aAEPr4T,KAAKgub,aAAaF,EAAUC,EAAUF,EAAW1wZ,GAGjDn9B,KAAKiub,gBAAgBH,EAAUC,EAAUF,EAAW1wZ,EAExD,EACA0tZ,EAAe3qb,UAAUgub,cAAgB,SAAUC,EAAcC,EAAc1B,EAAUmB,GACvF,IACIQ,EADarub,KAAKq4T,aACS,SAAW,QACtCymH,EAAW9+a,KAAKgC,IAAI,SACpB8gU,EAAag8G,EAASzqV,MACtBqoQ,EAAUoiF,EAASpiF,QACnB52S,EAAY9lD,KAAKgC,IAAI,OAAQ,UAAWqsb,IAC5C,GAAIvoY,EAAW,CACb,IACItzB,GADgC,SAAfswS,EAAwB4pH,EAAS2B,GAAeF,EAAaE,GAAeD,EAAaC,GAAyB,EAAV3xF,EAAcgwF,EAAS2B,IACxHvoY,EACxBtzB,EAAO,GAETxyB,KAAKsub,iBAAiBT,EAAWQ,EAAa3B,EAAS2B,GAAe77Z,EAE1E,CACF,EACAq4Z,EAAe3qb,UAAUoub,iBAAmB,SAAUT,EAAWQ,EAAaxtb,GAC5E,IACIgG,EADAiI,EAAO++a,EAAU59a,UAGnBpJ,EADkB,WAAhBwnb,EACKrub,KAAKosb,YAAYt9a,EAAK7D,EAAG6D,EAAK5D,EAAG4D,EAAKf,MAAOlN,GAE7Cb,KAAKosb,YAAYt9a,EAAK7D,EAAG6D,EAAK5D,EAAGrK,EAAQiO,EAAKd,QAEvD6/a,EAAUznb,KAAK,OAAQS,EACzB,EACAgkb,EAAe3qb,UAAUqub,mBAAqB,SAAUV,EAAW5ib,EAAGC,GACpE,IAAI4D,EAAO++a,EAAU59a,UACjBpJ,EAAO7G,KAAKosb,YAAYnhb,EAAGC,EAAG4D,EAAKf,MAAOe,EAAKd,QACnD6/a,EAAUznb,KAAK,OAAQS,EACzB,EACAgkb,EAAe3qb,UAAU+tb,gBAAkB,SAAUH,EAAUC,EAAUF,EAAW1wZ,GAClF,IAAI2hZ,EAAW9+a,KAAKgC,IAAI,SACpB8gU,EAAag8G,EAASzqV,MACtBqoQ,EAAUoiF,EAASpiF,QACnBgwF,EAAWmB,EAAU59a,UACrBk+a,EAAeL,EAAS79a,UACxBm+a,EAAeL,EAAS99a,UACxBu+a,EAAa9B,EAAS1+a,OAC1BhO,KAAKkub,cAAcC,EAAcC,EAAc1B,EAAUmB,GACzDnB,EAAWmB,EAAU59a,UACF,SAAf6yT,GAEFgrH,EAAS1nb,KAAK,CACZ6E,EAAGkyB,EAAWlyB,EACdC,EAAGiyB,EAAWjyB,EAAIsjb,EAAa,IAEjCxub,KAAKuub,mBAAmBV,EAAW1wZ,EAAWlyB,EAAIkjb,EAAapgb,MAAQ2uV,EAASv/T,EAAWjyB,GAC3F6ib,EAAS3nb,KAAK,CACZ6E,EAAGkyB,EAAWlyB,EAAIkjb,EAAapgb,MAAQ2+a,EAAS3+a,MAAkB,EAAV2uV,EACxDxxV,EAAGiyB,EAAWjyB,EAAIsjb,EAAa,KAET,QAAf1rH,GACTgrH,EAAS1nb,KAAK,CACZ6E,EAAGkyB,EAAWlyB,EACdC,EAAGiyB,EAAWjyB,IAEhB6ib,EAAS3nb,KAAK,CACZ6E,EAAGkyB,EAAWlyB,EAAIyhb,EAAS3+a,MAC3B7C,EAAGiyB,EAAWjyB,IAEhBlL,KAAKuub,mBAAmBV,EAAW1wZ,EAAWlyB,EAAGkyB,EAAWjyB,EAAIijb,EAAangb,OAAS0uV,KAEtF18V,KAAKuub,mBAAmBV,EAAW1wZ,EAAWlyB,EAAGkyB,EAAWjyB,GAC5D4ib,EAAS1nb,KAAK,CACZ6E,EAAGkyB,EAAWlyB,EACdC,EAAGiyB,EAAWjyB,EAAIwhb,EAAS1+a,OAAS0uV,IAEtCqxF,EAAS3nb,KAAK,CACZ6E,EAAGkyB,EAAWlyB,EAAIyhb,EAAS3+a,MAC3B7C,EAAGiyB,EAAWjyB,EAAIwhb,EAAS1+a,OAAS0uV,IAG1C,EACAmuF,EAAe3qb,UAAU8tb,aAAe,SAAUF,EAAUC,EAAUF,EAAW1wZ,GAC/E,IAAI2hZ,EAAW9+a,KAAKgC,IAAI,SACpB8gU,EAAag8G,EAASzqV,MACtBqoQ,EAAUoiF,EAASpiF,QACnBgwF,EAAWmB,EAAU59a,UACrBk+a,EAAeL,EAAS79a,UACxBm+a,EAAeL,EAAS99a,UAG5B,GAFAjQ,KAAKkub,cAAcC,EAAcC,EAAc1B,EAAUmB,GACzDnB,EAAWmB,EAAU59a,UACF,SAAf6yT,EAEFgrH,EAAS1nb,KAAK,CACZ6E,EAAGkyB,EAAWlyB,EACdC,EAAGiyB,EAAWjyB,IAEhBlL,KAAKuub,mBAAmBV,EAAW1wZ,EAAWlyB,EAAGkyB,EAAWjyB,EAAIijb,EAAangb,OAAS0uV,GACtFqxF,EAAS3nb,KAAK,CACZ6E,EAAGkyB,EAAWlyB,EACdC,EAAGiyB,EAAWjyB,EAAIijb,EAAangb,OAAS0+a,EAAS1+a,OAAmB,EAAV0uV,SAEvD,GAAmB,UAAf55B,EACTgrH,EAAS1nb,KAAK,CACZ6E,EAAGkyB,EAAWlyB,EAAIyhb,EAAS3+a,MAAQ2uV,EACnCxxV,EAAGiyB,EAAWjyB,IAEhBlL,KAAKuub,mBAAmBV,EAAW1wZ,EAAWlyB,EAAGkyB,EAAWjyB,GAC5D6ib,EAAS3nb,KAAK,CACZ6E,EAAGkyB,EAAWlyB,EAAIyhb,EAAS3+a,MAAQ2uV,EACnCxxV,EAAGiyB,EAAWjyB,EAAIwhb,EAAS1+a,aAExB,CAEL,IAAIygb,EAAgBx0a,KAAKE,IAAIg0a,EAAapgb,MAAOqgb,EAAargb,OAC9D+/a,EAAS1nb,KAAK,CACZ6E,EAAGkyB,EAAWlyB,EACdC,EAAGiyB,EAAWjyB,IAEhBlL,KAAKuub,mBAAmBV,EAAW1wZ,EAAWlyB,EAAIwjb,EAAgB/xF,EAASv/T,EAAWjyB,GACtF6ib,EAAS3nb,KAAK,CACZ6E,EAAGkyB,EAAWlyB,EACdC,EAAGiyB,EAAWjyB,EAAIwhb,EAAS1+a,QAE/B,CACF,EACO68a,CACT,CAzqBkC,CAyqBhC,KACF,QCjrBW,IAAkB,aAClB6D,IAAc,mBACdC,IAAa,kBACbC,IAAkB,uBAClBC,IAAe,oBACfC,IAAc,mBACdC,IAAa,kBACbC,IAAc,yBACdC,IAAc,yBLJzB,MAAgB,IAAK,CAAC,GAEnB,GAAK,KAA4B,CAClC9jY,SAAU,WACVq6B,WAAY,UAGZ/wE,OAAQ,EACRi2D,WAAY,oIACZ4D,gBAAiB,2BACjB7D,UAAW,uBACXoC,aAAc,MACd94B,MAAO,kBACPjzB,SAAU,OACV2S,WAAY,IAAMA,WAClB1S,WAAY,OACZq5D,QAAS,sBACR,IAAG,GAAK,KAAwB,CACjC/E,aAAc,OACb,IAAG,GAAK,KAAuB,CAChCm1B,OAAQ,MACRslG,cAAe,OACf11H,QAAS,OACR,IAAG,GAAK,KAA4B,CACrC01H,cAAe,OACfz6H,aAAc,OACb,IAAG,GAAK,KAAyB,CAClCtnE,MAAO,MACPC,OAAQ,MACR6+D,aAAc,MACdxhB,QAAS,eACTy/F,YAAa,OACZ,IAAG,GAAK,KAAwB,CACjCz/F,QAAS,eACTgd,MAAO,QACPwiF,WAAY,QACX,IAAG,GAAK,KAAwB,CACjC1/F,SAAU,WACVp9C,MAAO,MACPugE,gBAAiB,uBAChB,IAAG,GAAK,KAAwB,CACjCnjB,SAAU,WACVn9C,OAAQ,MACRsgE,gBAAiB,uBAChB,KM7BH,IAAI,IAAuB,SAAU5sE,GAEnC,SAAS8mG,IACP,OAAkB,OAAX9mG,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAuTA,OA1TA,UAAUwoG,EAAS9mG,GAInB8mG,EAAQtoG,UAAU6B,cAAgB,WAChC,IAAIJ,EAAMD,EAAOxB,UAAU6B,cAAcH,KAAK5B,MAC9C,OAAO,WAAS,UAAS,CAAC,EAAG2B,GAAM,CACjCM,KAAM,UACN0G,KAAM,OACNsC,EAAG,EACHC,EAAG,EACHi7C,MAAO,GACP+oY,cAAe,KACftV,aAAc,eAAkB,IAA2B,iBAAqB,IAAuB,sBAA0B,IAAsB,gBACvJuV,QAAS,cAAiB,IAA2B,iDAAqD,IAAwB,gEAAsE,IAAsB,4CAAgD,IAAuB,kCACrSC,cAAe,eAAkB,IAAuB,WACxDC,cAAe,eAAkB,IAAuB,WACxDt9X,MAAO,KACPy7F,WAAW,EAKX2gR,OAAQ,KAERmhB,iBAAkB,KAClB/jQ,mBAAoB,IAEpBgkQ,WAAY,KACZpsW,OAAQ,GACRh4B,SAAU,QACV+uX,UAAW,KACXD,cAAe,KAEnB,EAEAzxU,EAAQtoG,UAAU8qE,OAAS,WACrBhrE,KAAKgC,IAAI,iBACXhC,KAAKwvb,uBAELxvb,KAAKyvb,aACLzvb,KAAK0vb,eAGP1vb,KAAKw6a,eACP,EAEAhyU,EAAQtoG,UAAUqP,MAAQ,WAExBvP,KAAK2vb,kBACL3vb,KAAK4vb,SAAS,IACd5vb,KAAK6vb,eACP,EACArnV,EAAQtoG,UAAUoV,KAAO,WACvB,IAAItM,EAAYhJ,KAAK4mF,eAChB59E,IAAahJ,KAAK6B,YAIvB7B,KAAKkC,IAAI,WAAW,GACpBu2Z,IAAUzvZ,EAAW,CACnBw8E,WAAY,YAEdxlF,KAAK8vb,sBAAqB,GAC5B,EACAtnV,EAAQtoG,UAAUqV,KAAO,WACvB,IAAIvM,EAAYhJ,KAAK4mF,eAEhB59E,IAAahJ,KAAK6B,YAGvB7B,KAAKkC,IAAI,WAAW,GACpBu2Z,IAAUzvZ,EAAW,CACnBw8E,WAAY,WAEdxlF,KAAK8vb,sBAAqB,GAC5B,EAEAtnV,EAAQtoG,UAAUkwa,YAAc,WAC9B,MAAO,CACLnla,EAAGjL,KAAKgC,IAAI,KACZkJ,EAAGlL,KAAKgC,IAAI,KAEhB,EAEAwmG,EAAQtoG,UAAUiwa,YAAc,SAAUnla,GACxChL,KAAKkC,IAAI,IAAK8I,EAAMC,GACpBjL,KAAKkC,IAAI,IAAK8I,EAAME,GACpBlL,KAAKw6a,eACP,EACAhyU,EAAQtoG,UAAU4vb,qBAAuB,SAAUv7a,GACjD,IAAI82C,EAAU92C,EAAU,GAAK,OACzBw7a,EAAgB/vb,KAAKgC,IAAI,iBACzBgub,EAAgBhwb,KAAKgC,IAAI,iBAC7B+tb,GAAiBt3B,IAAUs3B,EAAe,CACxC1kY,QAASA,IAEX2kY,GAAiBv3B,IAAUu3B,EAAe,CACxC3kY,QAASA,GAEb,EAEAm9C,EAAQtoG,UAAUmN,cAAgB,WAEhC,GADA3L,EAAOxB,UAAUmN,cAAczL,KAAK5B,MAChCA,KAAKgC,IAAI,iBAAkB,CACzBhC,KAAKgC,IAAI,cACXhC,KAAKgC,IAAI,aAAamR,SAExB,IAAInK,EAAYhJ,KAAKiwb,qBACrBjwb,KAAKgC,IAAI,UAAU2L,YAAY3E,GAC/BhJ,KAAKkC,IAAI,YAAa8G,GACtBhJ,KAAK65a,cACL75a,KAAK85a,aACP,CACF,EAEAtxU,EAAQtoG,UAAU2va,YAAc,SAAUlua,GACpC3B,KAAKgC,IAAI,iBACXhC,KAAKwvb,uBAjIX,SAAmBz7Z,EAAK6M,GACtB,IAAIhuB,GAAS,EAOb,OANA,UAAKguB,GAAM,SAAUC,GACnB,IAAI,UAAO9M,EAAK8M,GAEd,OADAjuB,GAAS,GACF,CAEX,IACOA,CACT,CA2HUs9a,CAAUvub,EAAK,CAAC,QAAS,eAC3B3B,KAAKyvb,cAGH,UAAO9tb,EAAK,UACd3B,KAAK0vb,eAGThub,EAAOxB,UAAU2va,YAAYjua,KAAK5B,KAAM2B,EAC1C,EACA6mG,EAAQtoG,UAAUoN,QAAU,WAC1BtN,KAAKmwb,WACP,EAEA3nV,EAAQtoG,UAAUiP,UAAY,WAC5BzN,EAAOxB,UAAUiP,UAAUvN,KAAK5B,MAChCA,KAAK2vb,iBACP,EAEAnnV,EAAQtoG,UAAUs6a,cAAgB,WAChC,IAYI4V,EAZAnlb,EAAIjL,KAAKgC,IAAI,KACbkJ,EAAIlL,KAAKgC,IAAI,KACbmhF,EAASnjF,KAAKgC,IAAI,UAClBb,EAAKnB,KAAK83L,YACZvpL,EAAUpN,EAAGoN,QACbE,EAAUtN,EAAGsN,QACX08C,EAAWnrD,KAAKgC,IAAI,YACpBmsa,EAASnua,KAAKgC,IAAI,UAClBgH,EAAYhJ,KAAK4mF,eACjB93E,EAAO9O,KAAKiQ,UACZlC,EAAQe,EAAKf,MACfC,EAASc,EAAKd,OAEZmga,IAEFiiB,EAAWliB,IAAaC,IAE1B,IAAInja,ECvID,SAAuBC,EAAGC,EAAGi4E,EAAQp1E,EAAOC,EAAQm9C,EAAUilY,GACnE,IAAIplb,EAlCC,SAA4BC,EAAGC,EAAGi4E,EAAQp1E,EAAOC,EAAQm9C,GAC9D,IAAI/9B,EAAKniB,EACLoiB,EAAKniB,EACT,OAAQigD,GACN,IAAK,OAEH/9B,EAAKniB,EAAI8C,EAAQo1E,EACjB91D,EAAKniB,EAAI8C,EAAS,EAClB,MACF,IAAK,QACHof,EAAKniB,EAAIk4E,EACT91D,EAAKniB,EAAI8C,EAAS,EAClB,MACF,IAAK,MACHof,EAAKniB,EAAI8C,EAAQ,EACjBsf,EAAKniB,EAAI8C,EAASm1E,EAClB,MACF,IAAK,SAEH/1D,EAAKniB,EAAI8C,EAAQ,EACjBsf,EAAKniB,EAAIi4E,EACT,MACF,QAEE/1D,EAAKniB,EAAIk4E,EACT91D,EAAKniB,EAAI8C,EAASm1E,EAGtB,MAAO,CACLl4E,EAAGmiB,EACHliB,EAAGmiB,EAEP,CAEcgja,CAAmBplb,EAAGC,EAAGi4E,EAAQp1E,EAAOC,EAAQm9C,GAC5D,GAAIilY,EAAU,CACZ,IAAIE,EA7CD,SAAqBrlb,EAAGC,EAAG6C,EAAOC,EAAQoib,GAO/C,MANW,CACTphb,KAAM/D,EAAImlb,EAASnlb,EACnB0H,MAAO1H,EAAI8C,EAAQqib,EAASnlb,EAAImlb,EAASrib,MACzCkB,IAAK/D,EAAIklb,EAASllb,EAClBu4E,OAAQv4E,EAAI8C,EAASoib,EAASllb,EAAIklb,EAASpib,OAG/C,CAqCmBuib,CAAYvlb,EAAMC,EAAGD,EAAME,EAAG6C,EAAOC,EAAQoib,GAC3C,SAAbjlY,GAEEmlY,EAAS39a,QACX3H,EAAMC,EAAIgP,KAAKE,IAAI,EAAGlP,EAAI8C,EAAQo1E,IAEhCmtW,EAASrhb,MACXjE,EAAME,EAAI+O,KAAKE,IAAI,EAAGjP,EAAI8C,EAASm1E,KAEf,QAAbh4B,GAAmC,WAAbA,GAC3BmlY,EAASthb,OAEXhE,EAAMC,EAAImlb,EAASnlb,GAEjBqlb,EAAS39a,QAEX3H,EAAMC,EAAImlb,EAASnlb,EAAImlb,EAASrib,MAAQA,GAEzB,QAAbo9C,GAAsBmlY,EAASrhb,MAEjCjE,EAAME,EAAIA,EAAIi4E,GAEC,WAAbh4B,GAAyBmlY,EAAS7sW,SACpCz4E,EAAME,EAAIA,EAAI8C,EAASm1E,KAIrBmtW,EAASrhb,MACXjE,EAAME,EAAIklb,EAASllb,GAEjBolb,EAAS7sW,SACXz4E,EAAME,EAAIklb,EAASllb,EAAIklb,EAASpib,OAASA,GAE1B,SAAbm9C,GAAuBmlY,EAASthb,OAClChE,EAAMC,EAAIA,EAAIk4E,GAEC,UAAbh4B,GAAwBmlY,EAAS39a,QACnC3H,EAAMC,EAAIA,EAAI8C,EAAQo1E,GAG5B,CACA,OAAOn4E,CACT,CD0FgB,CAAcC,EAAGC,EAAGi4E,EAAQp1E,EAAOC,EAAQm9C,EAAUilY,GACjE33B,IAAUzvZ,EAAW,CACnBgG,KAAMkga,IAAKlka,EAAMC,EAAIsD,GACrBU,IAAKiga,IAAKlka,EAAME,EAAIuD,KAEtBzO,KAAKwwb,iBACP,EAEAhoV,EAAQtoG,UAAUsvb,oBAAsB,WACtC,IAAI9uY,EAAO1gD,KAAKiwb,qBACZr+a,EAAS5R,KAAKgC,IAAI,UAClByub,EAAezwb,KAAKgC,IAAI,aACxByub,GAAgBA,EAAarhb,aAAewC,EAC9CA,EAAO8+a,aAAahwY,EAAM+vY,GAE1B7+a,EAAOjE,YAAY+yC,GAErB1gD,KAAKkC,IAAI,YAAaw+C,GACtB1gD,KAAK65a,cACL75a,KAAK85a,aACP,EACAtxU,EAAQtoG,UAAU+vb,mBAAqB,WACrC,IAAIvvY,EACAwuY,EAAgBlvb,KAAKgC,IAAI,iBAC7B,GAAIktb,EAAe,CACjB,IAAInqW,EAAOmqW,EAAclvb,KAAKgC,IAAI,SAAUhC,KAAKgC,IAAI,UAEnD0+C,GADE,UAAUqkC,GACLA,EAEAr3E,IAAUq3E,EAErB,CACA,OAAOrkC,CACT,EAEA8nD,EAAQtoG,UAAUiwb,UAAY,WAC5B,IAAInnb,EAAYhJ,KAAK4mF,eACjB+pW,EAAW3nb,EAAUqxa,uBAAuB,KAAsB,GAClEuW,EAAU5nb,EAAUqxa,uBAAuB,KAAqB,GACpEr6a,KAAKkC,IAAI,WAAYyub,GACrB3wb,KAAKkC,IAAI,UAAW0ub,EACtB,EAEApoV,EAAQtoG,UAAUuvb,WAAa,WAC7B,IAAI19X,EAAQ/xD,KAAKgC,IAAI,SACLhC,KAAKgC,IAAI,cACR+vD,EACf/xD,KAAK4vb,SAAS79X,GAEd/xD,KAAK4vb,SAAS,GAElB,EAEApnV,EAAQtoG,UAAU0vb,SAAW,SAAU/ua,GACrC,IAAI8va,EAAW3wb,KAAKgC,IAAI,YACpB2ub,IACFA,EAAShmL,UAAY9pP,EAEzB,EAEA2nF,EAAQtoG,UAAUswb,gBAAkB,WAClC,IAAIlB,EAAmBtvb,KAAKgC,IAAI,oBAC5Butb,EAAavvb,KAAKgC,IAAI,cAC1B,GAAKstb,GAAqBC,EAGnB,CACL,IAAIsB,EAAe3iB,IAAaohB,GAC5BS,EAAgB/vb,KAAKgC,IAAI,iBACzBgub,EAAgBhwb,KAAKgC,IAAI,iBACV,MAAfutb,GACFvvb,KAAK8wb,eAAe,IAAKD,GAErBb,IACFA,EAAc78a,SACdnT,KAAKkC,IAAI,gBAAiB,QAEJ,MAAfqtb,GACTvvb,KAAK8wb,eAAe,IAAKD,GAErBd,IACFA,EAAc58a,SACdnT,KAAKkC,IAAI,gBAAiB,SAG5BlC,KAAK8wb,eAAe,IAAKD,GACzB7wb,KAAK8wb,eAAe,IAAKD,IAE3B7wb,KAAK8vb,qBAAqB9vb,KAAKgC,IAAI,WACrC,MAxBEhC,KAAK2vb,iBAyBT,EAEAnnV,EAAQtoG,UAAU4wb,eAAiB,SAAU7ub,EAAM6M,GACjD,IAAIiib,EAAc/wb,KAAKgxb,eAAe/ub,GAClCE,EAAQnC,KAAKgC,IAAIC,GAEnBw2Z,IAAUs4B,EADC,MAAT9ub,EACqB,CACrB+M,KAAMkga,IAAK/sa,GACX8M,IAAKiga,IAAKpga,EAAK5D,GACf8C,OAAQkha,IAAKpga,EAAKd,SAGG,CACrBiB,IAAKiga,IAAK/sa,GACV6M,KAAMkga,IAAKpga,EAAK7D,GAChB8C,MAAOmha,IAAKpga,EAAKf,QAGvB,EAEAy6F,EAAQtoG,UAAU8wb,eAAiB,SAAU/ub,GAC3C,IAAIgvb,EAAUhvb,EAAO,eACjBivb,EAAUjvb,EAAO,eACjBkvb,EAAY,aAAelvb,EAAK2kB,cAChCq0Z,EAAY,EAASkW,GACrBJ,EAAc/wb,KAAKgC,IAAIivb,GACvBr/a,EAAS5R,KAAKgC,IAAI,UAOtB,OANK+ub,IACHA,EAAcrjb,IAAU1N,KAAKgC,IAAIkvb,IACjClxb,KAAKs6a,WAAWW,EAAW8V,GAC3Bn/a,EAAOjE,YAAYojb,GACnB/wb,KAAKkC,IAAI+ub,EAASF,IAEbA,CACT,EACAvoV,EAAQtoG,UAAUwvb,YAAc,WAC9B1vb,KAAK6vb,gBACL,IAAI1pY,EAAQnmD,KAAKgC,IAAI,SACjBmtb,EAAUnvb,KAAKgC,IAAI,WACnB4ub,EAAU5wb,KAAKgC,IAAI,WACnB4ub,KACF,UAAKzqY,GAAO,SAAU1uC,GACpB,IAAIs8B,EAAQ,IAAUirX,cAAcvnZ,EAAKs8B,OACrCq9Y,GAAgB,WAAS,UAAS,CAAC,EAAG35a,GAAO,CAC/Cs8B,MAAOA,IAGLs9Y,EAAU3jb,KADD,UAAWyhb,EAASiC,IAEjCR,EAAQjjb,YAAY0jb,EACtB,IACArxb,KAAKm6a,oBAAoByW,EAAS5wb,KAAKgC,IAAI,cAE/C,EACAwmG,EAAQtoG,UAAU2vb,cAAgB,WAC5B7vb,KAAKgC,IAAI,YACXisa,IAASjua,KAAKgC,IAAI,WAEtB,EACAwmG,EAAQtoG,UAAUyvb,gBAAkB,WAClC,IAAII,EAAgB/vb,KAAKgC,IAAI,iBACzBgub,EAAgBhwb,KAAKgC,IAAI,iBAC7B+tb,GAAiBA,EAAc58a,SAC/B68a,GAAiBA,EAAc78a,SAC/BnT,KAAKkC,IAAI,gBAAiB,MAC1BlC,KAAKkC,IAAI,gBAAiB,KAC5B,EACOsmG,CACT,CA5T2B,CA4TzB,KACF,QEhVW8oV,IAAmB,CAE5B38a,QAAS,GAEA48a,IAAa,CACtBpwa,OAAQ,UACRo4O,cAAe,KAENi4L,IAAa,CACtB51Y,KAAM,UACNjnC,QAAS,kBCUJ,SAASuoa,IAAYx8Z,GAC1B,OAbF,SAAsBA,GACpB,OAAO,UAAIA,GAAQ,SAAUtC,EAAG8mB,GAI9B,MAAO,CAHe,IAARA,EAAY,IAAM,IACxB9mB,EAAE,GACJA,EAAE,GAEV,GACF,CAMSqza,CAAa/wa,EACtB,CAmCO,SAASgxa,IAAWhsa,EAAM3X,EAAOC,EAAQ4tB,QAC/B,IAAXA,IACFA,GAAS,GAGX,IAAI1wB,EAAI,IAAI,IAAO,CACjBs1B,OAAQ9a,IAENza,EAAI,IAAI,IAAS,CACnBu1B,QAAQ,UAAI9a,GAAM,SAAUzT,EAAGizB,GAC7B,OAAOA,CACT,MAEExkB,GAAS,UAAIgF,GAAM,SAAUzT,EAAGizB,GAClC,MAAO,CAACj6B,EAAE6N,MAAMosB,GAAOn3B,EAAOC,EAAS9C,EAAE4N,MAAM7G,GAAKjE,EACtD,IACA,OAAO4tB,EA9CF,SAA2Blb,GAChC,GAAIA,EAAO7f,QAAU,EAEnB,OAAOq8a,IAAYx8Z,GAErB,IAAIgF,EAAO,IACX,UAAKhF,GAAQ,SAAUtC,IAEhB,UAAQA,EAAGsH,EAAKsB,MAAMtB,EAAK7kB,OAAS,KACvC6kB,EAAKnlB,KAAK6d,EAAE,GAAIA,EAAE,GAEtB,IAKA,IAAIvX,GAAO,UAAkB6e,GAAM,GAC/BvkB,GAAK,UAAKuf,GACZzV,EAAI9J,EAAG,GACP+J,EAAI/J,EAAG,GAET,OADA0F,EAAK8O,QAAQ,CAAC,IAAK1K,EAAGC,IACfrE,CACT,CAwBkB8qb,CAAkBjxa,GAAUw8Z,IAAYx8Z,EAC1D,CAqBO,SAASkxa,IAAmB/qb,EAAMkH,EAAOC,EAAQ0X,GACtD,IAAImsa,GAAW,UAAehrb,GAC1Birb,EAhBC,SAAsBpsa,EAAM1X,GACjC,IAAI9C,EAAI,IAAI,IAAO,CACjBs1B,OAAQ9a,IAGNqsa,EAAQ7mb,EAAEiP,IAAM,EAAIjP,EAAEiP,IAAMF,KAAKE,IAAI,EAAGjP,EAAEgP,KAC9C,OAAOlM,EAAS9C,EAAE4N,MAAMi5a,GAAS/jb,CACnC,CASgBgkb,CAAatsa,EAAM1X,GAIjC,OAHA6jb,EAAStxb,KAAK,CAAC,IAAKwN,EAAO+jb,IAC3BD,EAAStxb,KAAK,CAAC,IAAK,EAAGuxb,IACvBD,EAAStxb,KAAK,CAAC,MACRsxb,CACT,CClGA,IAAII,IAAqB,SAAUvwb,GAEjC,SAASuwb,IACP,OAAkB,OAAXvwb,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAsEA,OAzEA,UAAUiyb,EAAOvwb,GAIjBuwb,EAAM/xb,UAAU6B,cAAgB,WAC9B,IAAIJ,EAAMD,EAAOxB,UAAU6B,cAAcH,KAAK5B,MAC9C,OAAO,WAAS,UAAS,CAAC,EAAG2B,GAAM,CACjCM,KAAM,QACNgJ,EAAG,EACHC,EAAG,EACH6C,MAAO,IACPC,OAAQ,GACR4tB,QAAQ,EACRs2Z,QAAQ,EACRxsa,KAAM,GACNowZ,gBAAiBwb,IACjB9Y,UAAW+Y,IACXY,UAAWX,KAEf,EACAS,EAAM/xb,UAAUiya,YAAc,SAAUzga,GACtC,IAAIvQ,EAAKnB,KAAK2B,IACZoM,EAAQ5M,EAAG4M,MACXC,EAAS7M,EAAG6M,OACZ0X,EAAOvkB,EAAGukB,KACVkW,EAASz6B,EAAGy6B,OACZs2Z,EAAS/wb,EAAG+wb,OACZpc,EAAkB30a,EAAG20a,gBACrB0C,EAAYr3a,EAAGq3a,UACf2Z,EAAYhxb,EAAGgxb,UAEjBnyb,KAAKqR,SAASK,EAAO,CACnBgC,GAAI1T,KAAKkxa,aAAa,cACtBvoa,KAAM,OACNrC,OAAO,UAAS,CACd2E,EAAG,EACHC,EAAG,EACH6C,MAAOA,EACPC,OAAQA,GACP8na,KAEL,IAAIjva,EAAO6qb,IAAWhsa,EAAM3X,EAAOC,EAAQ4tB,GAW3C,GATA57B,KAAKqR,SAASK,EAAO,CACnBgC,GAAI1T,KAAKkxa,aAAa,QACtBvoa,KAAM,OACNrC,OAAO,UAAS,CACdO,KAAMA,GACL2xa,KAID0Z,EAAQ,CACV,IAAIL,EAAWD,IAAmB/qb,EAAMkH,EAAOC,EAAQ0X,GACvD1lB,KAAKqR,SAASK,EAAO,CACnBgC,GAAI1T,KAAKkxa,aAAa,QACtBvoa,KAAM,OACNrC,OAAO,UAAS,CACdO,KAAMgrb,GACLM,IAEP,CACF,EACAF,EAAM/xb,UAAUsxa,YAAc,WAC5B,IAAIrwa,EAAKnB,KAAK2B,IACZsJ,EAAI9J,EAAG8J,EACPC,EAAI/J,EAAG+J,EAETlL,KAAKiya,cAAcjya,KAAKgC,IAAI,SAAU,CACpCiJ,EAAGA,EACHC,EAAGA,GAEP,EACO+mb,CACT,CA3EyB,CA2EvB,KC7ESG,IAAwB,CACjCx2Y,KAAM,UACNz6B,OAAQ,UACR6sD,OAAQ,EACRr5D,QAAS,EACT5I,OAAQ,YAERsmb,cAAe,QAEb,IAAuB,SAAU3wb,GAEnC,SAASmiQ,IACP,OAAkB,OAAXniQ,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAgGA,OAnGA,UAAU6jQ,EAASniQ,GAInBmiQ,EAAQ3jQ,UAAU6B,cAAgB,WAChC,IAAIJ,EAAMD,EAAOxB,UAAU6B,cAAcH,KAAK5B,MAC9C,OAAO,WAAS,UAAS,CAAC,EAAG2B,GAAM,CACjCM,KAAM,UACNgJ,EAAG,EACHC,EAAG,EACH6C,MAAO,GACPC,OAAQ,GACRlC,MAAOsmb,KAEX,EACAvuL,EAAQ3jQ,UAAUiya,YAAc,SAAUzga,GACxC,IAAIvQ,EAAKnB,KAAK2B,IACZoM,EAAQ5M,EAAG4M,MACXC,EAAS7M,EAAG6M,OACZlC,EAAQ3K,EAAG2K,MACT8vC,EAAO9vC,EAAM8vC,KACfz6B,EAASrV,EAAMqV,OACf6sD,EAASliE,EAAMkiE,OACfr5D,EAAU7I,EAAM6I,QAChB5I,EAASD,EAAMC,OAEjB/L,KAAKqR,SAASK,EAAO,CACnB/I,KAAM,OACN+K,GAAI1T,KAAKkxa,aAAa,cACtB5qa,MAAO,CACL2E,EAAG,EACHC,EAAG,EACH6C,MAAOA,EACPC,OAAQA,EACR4tC,KAAMA,EACNz6B,OAAQA,EACR6sD,OAAQA,EACRr5D,QAASA,EACT5I,OAAQA,KAIZ,IAAIqW,EAAK,EAAI,EAAIrU,EACbuU,EAAK,EAAI,EAAIvU,EACbsU,EAAK,EAAI,EAAIrU,EACbuU,EAAK,EAAI,EAAIvU,EACjBhO,KAAKqR,SAASK,EAAO,CACnBgC,GAAI1T,KAAKkxa,aAAa,aACtBvoa,KAAM,OACNrC,MAAO,CACL8b,GAAIA,EACJC,GAAIA,EACJC,GAAIF,EACJG,GAAIA,EACJpB,OAAQA,EACRpV,OAAQA,KAGZ/L,KAAKqR,SAASK,EAAO,CACnBgC,GAAI1T,KAAKkxa,aAAa,cACtBvoa,KAAM,OACNrC,MAAO,CACL8b,GAAIE,EACJD,GAAIA,EACJC,GAAIA,EACJC,GAAIA,EACJpB,OAAQA,EACRpV,OAAQA,IAGd,EACA83P,EAAQ3jQ,UAAUsxa,YAAc,WAC9Bxxa,KAAKiya,cAAcjya,KAAKgC,IAAI,SAAU,CACpCiJ,EAAGjL,KAAKgC,IAAI,KACZkJ,EAAGlL,KAAKgC,IAAI,MAEhB,EACA6hQ,EAAQ3jQ,UAAUuxa,UAAY,WAC5Bzxa,KAAKsyb,YACP,EACAzuL,EAAQ3jQ,UAAUoyb,WAAa,WAC7B,IAAI7xb,EAAQT,KACZA,KAAKgC,IAAI,SAAS7B,GAAG,cAAc,WACjC,IAAIkyb,EAAgB5xb,EAAMuB,IAAI,SAASqwb,cACvC5xb,EAAMuwa,oBAAoB,cAAc5qa,KAAK,OAAQisb,GACrD5xb,EAAMqH,MACR,IACA9H,KAAKgC,IAAI,SAAS7B,GAAG,cAAc,WACjC,IAAIy7C,EAAOn7C,EAAMuB,IAAI,SAAS45C,KAC9Bn7C,EAAMuwa,oBAAoB,cAAc5qa,KAAK,OAAQw1C,GACrDn7C,EAAMqH,MACR,GACF,EACA+7P,EAAQ3jQ,UAAU4H,KAAO,WACvB,IAAIP,EAASvH,KAAKgC,IAAI,aAAaA,IAAI,UACnCuF,GACFA,EAAOO,MAEX,EACO+7P,CACT,CArG2B,CAqGzB,KC7GS,IAAmB,CAC5BjoN,KAAM,UACNjnC,QAAS,KAEA49a,IAAmB,CAC5B32Y,KAAM,UACNjnC,QAAS,IACT5I,OAAQ,QAGCymb,IAAgB,CACzBzkb,MAFiC,GAGjCC,OAAQ,IAECykb,IAAa,CACtBvxa,aAAc,SACd06B,KAAM,OACNjnC,QAAS,KCdP,IAAsB,SAAUjT,GAElC,SAASgxb,IACP,IAAIjyb,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAiEhE,OAhEAS,EAAMg5H,YAAc,SAAU/wH,GAC5B,OAAO,SAAUxE,GACfzD,EAAMoI,cAAgBH,EAEtB,IAAIqC,EAAQ7G,EAAEwe,cAEd3X,EAAM4X,kBACN5X,EAAM0B,iBAENhM,EAAMglT,OAAQ,UAAI16S,EAAO,kBAAmBA,EAAMixI,OAClDv7I,EAAMilT,OAAQ,UAAI36S,EAAO,kBAAmBA,EAAMkxI,OAElD,IAAI02S,EAAelyb,EAAMmyb,kBACzBD,EAAajob,iBAAiB,YAAajK,EAAM2mG,aACjDurV,EAAajob,iBAAiB,UAAWjK,EAAMi5H,WAC/Ci5T,EAAajob,iBAAiB,aAAcjK,EAAMi5H,WAElDi5T,EAAajob,iBAAiB,YAAajK,EAAM2mG,aACjDurV,EAAajob,iBAAiB,WAAYjK,EAAMi5H,WAChDi5T,EAAajob,iBAAiB,cAAejK,EAAMi5H,UACrD,CACF,EACAj5H,EAAM2mG,YAAc,SAAUr8F,GAC5B,IAAIgD,EAAQtN,EAAMkB,IAAIoM,MAClB+C,EAAc,CAACrQ,EAAMuB,IAAI,SAAUvB,EAAMuB,IAAI,QAEjD+I,EAAM4X,kBACN5X,EAAM0B,iBACN,IAAIxB,GAAI,UAAIF,EAAO,kBAAmBA,EAAMixI,OACxC9wI,GAAI,UAAIH,EAAO,kBAAmBA,EAAMkxI,OAExC1tI,EAAUtD,EAAIxK,EAAMglT,MACpBotI,EAAepyb,EAAMqyb,kBAAkBvkb,EAAUR,GAErDtN,EAAMsyb,eAAeF,GAErBpyb,EAAMuyb,SAASvyb,EAAMuwa,oBAAoB,cAAevwa,EAAMuwa,oBAAoB,WAAYvwa,EAAMuwa,oBAAoB,YACxHvwa,EAAMglT,MAAQx6S,EACdxK,EAAMilT,MAAQx6S,EACdzK,EAAMqH,OAENrH,EAAMD,KD7Be,eC6BK,CAACC,EAAMuB,IAAI,SAAUvB,EAAMuB,IAAI,QAAQuQ,QACjE9R,EAAMqxa,aAAa,eAAgB,CACjChha,YAAaA,EACb3O,MAAO,CAAC1B,EAAMuB,IAAI,SAAUvB,EAAMuB,IAAI,SAE1C,EACAvB,EAAMi5H,UAAY,WAEZj5H,EAAMoI,gBACRpI,EAAMoI,mBAAgB4tB,GAExB,IAAIk8Z,EAAelyb,EAAMmyb,kBACrBD,IACFA,EAAa9nb,oBAAoB,YAAapK,EAAM2mG,aACpDurV,EAAa9nb,oBAAoB,UAAWpK,EAAMi5H,WAElDi5T,EAAa9nb,oBAAoB,aAAcpK,EAAMi5H,WAErDi5T,EAAa9nb,oBAAoB,YAAapK,EAAM2mG,aACpDurV,EAAa9nb,oBAAoB,WAAYpK,EAAMi5H,WACnDi5T,EAAa9nb,oBAAoB,cAAepK,EAAMi5H,WAE1D,EACOj5H,CACT,CA4WA,OAhbA,UAAUiyb,EAAQhxb,GAqElBgxb,EAAOxyb,UAAUggS,SAAW,SAAUhmR,EAAKC,GACzCna,KAAKkC,IAAI,WAAYgY,GACrBla,KAAKkC,IAAI,WAAYiY,GACrB,IAAI84a,EAAWjzb,KAAKgC,IAAI,SACpBkxb,EAASlzb,KAAKgC,IAAI,OAClBmxb,GAAW,UAAMF,EAAU/4a,EAAKC,GAChCi5a,GAAS,UAAMF,EAAQh5a,EAAKC,GAC3Bna,KAAKgC,IAAI,WAAcixb,IAAaE,GAAYD,IAAWE,GAC9Dpzb,KAAKq2I,SAAS,CAAC88S,EAAUC,GAE7B,EACAV,EAAOxyb,UAAU6/R,SAAW,WAC1B,MAAO,CACL7lR,IAAKla,KAAKgC,IAAI,aAAe,EAC7BmY,IAAKna,KAAKgC,IAAI,aAAe,EAEjC,EACA0wb,EAAOxyb,UAAUm2I,SAAW,SAAUl0I,GACpC,IAAIwlD,EAAQ3nD,KAAK+/R,WACjB,IAAI,UAAQ59R,IAA2B,IAAjBA,EAAMtB,OAAc,CACxC,IAAIiQ,EAAc,CAAC9Q,KAAKgC,IAAI,SAAUhC,KAAKgC,IAAI,QAC/ChC,KAAKwF,OAAO,CACVkhB,OAAO,UAAMvkB,EAAM,GAAIwlD,EAAMztC,IAAKytC,EAAMxtC,KACxC0U,KAAK,UAAM1sB,EAAM,GAAIwlD,EAAMztC,IAAKytC,EAAMxtC,OAEnCna,KAAKgC,IAAI,qBACZhC,KAAKgrE,SAEPhrE,KAAK8xa,aAAa,eAAgB,CAChChha,YAAaA,EACb3O,MAAOA,GAEX,CACF,EACAuwb,EAAOxyb,UAAUqhI,SAAW,WAC1B,MAAO,CAACvhI,KAAKgC,IAAI,SAAUhC,KAAKgC,IAAI,OACtC,EACA0wb,EAAOxyb,UAAU6B,cAAgB,WAC/B,IAAIJ,EAAMD,EAAOxB,UAAU6B,cAAcH,KAAK5B,MAC9C,OAAO,WAAS,UAAS,CAAC,EAAG2B,GAAM,CACjCM,KAAM,SACNgJ,EAAG,EACHC,EAAG,EACH6C,MAAO,IACPC,OAAQ,GACR8na,gBAAiB,CAAC,EAClBud,gBAAiB,CAAC,EAClBC,aAAc,CAAC,EACf7a,UAAW,CAAC,EACZ32a,WAAY,CACVg0a,gBAAiB,IACjBud,gBAAiBd,IACjBe,aAAcd,IACd/Z,UAAWga,MAGjB,EACAC,EAAOxyb,UAAUsF,OAAS,SAAU7D,GAClC,IAAI+kB,EAAQ/kB,EAAI+kB,MACdmI,EAAMltB,EAAIktB,IACR0ka,GAAW,UAAS,CAAC,EAAG5xb,IACvB,UAAM+kB,KACT6sa,EAAS7sa,OAAQ,UAAMA,EAAO,EAAG,KAE9B,UAAMmI,KACT0ka,EAAS1ka,KAAM,UAAMA,EAAK,EAAG,IAE/BntB,EAAOxB,UAAUsF,OAAO5D,KAAK5B,KAAMuzb,GACnCvzb,KAAKwzb,WAAaxzb,KAAK+wa,sBAAsB/wa,KAAKkxa,aAAa,eAC/Dlxa,KAAKyzb,WAAazzb,KAAK+wa,sBAAsB/wa,KAAKkxa,aAAa,eAC/Dlxa,KAAK0zb,MAAQ1zb,KAAK+wa,sBAAsB/wa,KAAKkxa,aAAa,SAC5D,EACAwhB,EAAOxyb,UAAUoK,KAAO,WACtBtK,KAAKkC,IAAI,SAAS,UAAMlC,KAAKgC,IAAI,SAAU,EAAG,IAC9ChC,KAAKkC,IAAI,OAAO,UAAMlC,KAAKgC,IAAI,OAAQ,EAAG,IAC1CN,EAAOxB,UAAUoK,KAAK1I,KAAK5B,KAC7B,EACA0yb,EAAOxyb,UAAU8qE,OAAS,WACxBtpE,EAAOxB,UAAU8qE,OAAOppE,KAAK5B,MAC7BA,KAAKgzb,SAAShzb,KAAKgxa,oBAAoB,cAAehxa,KAAKgxa,oBAAoB,WAAYhxa,KAAKgxa,oBAAoB,WACtH,EACA0hB,EAAOxyb,UAAUiya,YAAc,SAAUzga,GACvC,IAAIvQ,EAAKnB,KAAK2B,IAGZoM,GAFQ5M,EAAGulB,MACLvlB,EAAG0tB,IACD1tB,EAAG4M,OACXC,EAAS7M,EAAG6M,OACZkJ,EAAK/V,EAAGwyb,SACRA,OAAkB,IAAPz8a,EAAgB,CAAC,EAAIA,EAChC08a,EAAUzyb,EAAGyyb,QACbC,EAAU1yb,EAAG0yb,QACb18a,EAAKhW,EAAG20a,gBACRA,OAAyB,IAAP3+Z,EAAgB,CAAC,EAAIA,EACvCmnB,EAAKn9B,EAAGkyb,gBACRA,OAAyB,IAAP/0Z,EAAgB,CAAC,EAAIA,EACvCC,EAAKp9B,EAAGs3a,UACRA,OAAmB,IAAPl6Y,EAAgB,CAAC,EAAIA,EAC/B+0Z,GAAe,UAAQ,CAAC,EAAGlB,IAAuBpyb,KAAK2B,IAAI2xb,eAI3D,WAAK,UAAIK,EAAU,WACrB3zb,KAAK0zb,MAAQ1zb,KAAKsya,aAAa5ga,GAAO,UAAS,CAC7C8tD,UAAWyyX,IACXv+a,GAAI1T,KAAKkxa,aAAa,SACtBjma,EAAG,EACHC,EAAG,EACH6C,MAAOA,EACPC,OAAQA,GACP2lb,KAGL3zb,KAAKqR,SAASK,EAAO,CACnBgC,GAAI1T,KAAKkxa,aAAa,cACtBvoa,KAAM,OACNrC,OAAO,UAAS,CACd2E,EAAG,EACHC,EAAG,EACH6C,MAAOA,EACPC,OAAQA,GACP8na,KAGc91a,KAAKqR,SAASK,EAAO,CACtCgC,GAAI1T,KAAKkxa,aAAa,WACtBvoa,KAAM,OACNrC,OAAO,UAAS,CAEd4E,EAAG8C,EAAS,EACZiT,UAAW,QACXJ,KAAM+ya,EACNl0S,QAAQ,GACP+4R,KAEcz4a,KAAKqR,SAASK,EAAO,CACtCgC,GAAI1T,KAAKkxa,aAAa,WACtBvoa,KAAM,OACNrC,OAAO,UAAS,CAEd4E,EAAG8C,EAAS,EACZiT,UAAW,OACXJ,KAAMgza,EACNn0S,QAAQ,GACP+4R,KAGiBz4a,KAAKqR,SAASK,EAAO,CACzCgC,GAAI1T,KAAKkxa,aAAa,cACtBjva,KAAM,aACN0G,KAAM,OACNrC,OAAO,UAAS,CAEd4E,EAAG,EAEH8C,OAAQA,GACPqlb,KAhCL,IAmCIS,GAAe,UAAIR,EAAc,QD9NN,IC+N3BS,GAAgB,UAAIT,EAAc,SAAU,IAEhDtzb,KAAKwzb,WAAaxzb,KAAKsya,aAAa5ga,EAAO,CACzC8tD,UAAW,IACX9rD,GAAI1T,KAAKkxa,aAAa,cACtBjva,KAAM,cACNgJ,EAAG,EACHC,GAAI8C,EAAS+lb,GAAiB,EAC9Bhmb,MAAO+lb,EACP9lb,OAAQ+lb,EACRhob,OAAQ,YACRD,MAAOwnb,IAETtzb,KAAKyzb,WAAazzb,KAAKsya,aAAa5ga,EAAO,CACzC8tD,UAAW,IACX9rD,GAAI1T,KAAKkxa,aAAa,cACtBjva,KAAM,cACNgJ,EAAG,EACHC,GAAI8C,EAAS+lb,GAAiB,EAC9Bhmb,MAAO+lb,EACP9lb,OAAQ+lb,EACRhob,OAAQ,YACRD,MAAOwnb,GAEX,EACAZ,EAAOxyb,UAAUsxa,YAAc,WAC7Bxxa,KAAKiya,cAAcjya,KAAKgC,IAAI,SAAU,CACpCiJ,EAAGjL,KAAKgC,IAAI,KACZkJ,EAAGlL,KAAKgC,IAAI,MAEhB,EACA0wb,EAAOxyb,UAAUuxa,UAAY,WAC3Bzxa,KAAKsyb,YACP,EACAI,EAAOxyb,UAAU8yb,SAAW,SAAUgB,EAAiBC,EAAcC,GACnE,IAAI/yb,EAAKnB,KAAK2B,IACZ+kB,EAAQvlB,EAAGulB,MACXmI,EAAM1tB,EAAG0tB,IACT9gB,EAAQ5M,EAAG4M,MACX6lb,EAAUzyb,EAAGyyb,QACbC,EAAU1yb,EAAG0yb,QACbP,EAAenyb,EAAGmyb,aAClBtlb,EAAS7M,EAAG6M,OACVkM,EAAMwM,EAAQ3Y,EACdoM,EAAM0U,EAAM9gB,EACZ/N,KAAK0zb,QACP1zb,KAAK0zb,MAAMlub,OAAO,CAChBuI,MAAOA,EACPC,OAAQA,IAELhO,KAAKgC,IAAI,qBACZhC,KAAK0zb,MAAM1oX,UAIfgpX,EAAgB5tb,KAAK,IAAK8T,GAC1B85a,EAAgB5tb,KAAK,QAAS+T,EAAMD,GAEpC,IAAI45a,GAAe,UAAIR,EAAc,QDzRN,IC2R/BW,EAAa7tb,KAAK,OAAQwtb,GAC1BM,EAAa9tb,KAAK,OAAQytb,GAC1B,IAAI38a,EAAKlX,KAAKm0b,WAAW,CAACj6a,EAAKC,GAAM85a,EAAcC,GACjDE,EAAWl9a,EAAG,GACdm9a,EAAWn9a,EAAG,GAEZlX,KAAKwzb,aACPxzb,KAAKwzb,WAAWhub,OAAO,CACrByF,EAAGiP,EAAM45a,EAAe,IAErB9zb,KAAKgC,IAAI,qBACZhC,KAAKwzb,WAAWxoX,WAGpB,UAAKopX,GAAU,SAAUnib,EAAGvL,GAC1B,OAAOutb,EAAa7tb,KAAKM,EAAGuL,EAC9B,IAEIjS,KAAKyzb,aACPzzb,KAAKyzb,WAAWjub,OAAO,CACrByF,EAAGkP,EAAM25a,EAAe,IAErB9zb,KAAKgC,IAAI,qBACZhC,KAAKyzb,WAAWzoX,WAGpB,UAAKqpX,GAAU,SAAUpib,EAAGvL,GAC1B,OAAOwtb,EAAa9tb,KAAKM,EAAGuL,EAC9B,GACF,EACAygb,EAAOxyb,UAAUoyb,WAAa,WAC5B,IAAI5gb,EAAQ1R,KAAKgC,IAAI,SACrB0P,EAAMvR,GAAG,wBAAyBH,KAAKy5H,YAAY,eACnD/nH,EAAMvR,GAAG,yBAA0BH,KAAKy5H,YAAY,eAEpD/nH,EAAMvR,GAAG,wBAAyBH,KAAKy5H,YAAY,eACnD/nH,EAAMvR,GAAG,yBAA0BH,KAAKy5H,YAAY,eAEpD,IAAI2mI,EAAa1uP,EAAM+B,SAASzT,KAAKkxa,aAAa,eAClD9wK,EAAWjgQ,GAAG,YAAaH,KAAKy5H,YAAY,eAC5C2mI,EAAWjgQ,GAAG,aAAcH,KAAKy5H,YAAY,cAC/C,EAKAi5T,EAAOxyb,UAAU4yb,kBAAoB,SAAUwB,GAC7C,IAAInzb,EAAKnB,KAAK2B,IACZ+kB,EAAQvlB,EAAGulB,MACXmI,EAAM1tB,EAAG0tB,IAEX,OAAQ7uB,KAAK6I,eACX,IAAK,aAED,IAAIqR,EAAM,EAAIwM,EACVvM,EAAM,EAAIuM,EACd,OAAOzM,KAAKC,IAAIC,EAAKF,KAAKE,IAAID,EAAKo6a,IAEvC,IAAK,aAEGp6a,EAAM,EAAI2U,EACV1U,EAAM,EAAI0U,EACd,OAAO5U,KAAKC,IAAIC,EAAKF,KAAKE,IAAID,EAAKo6a,IAEvC,IAAK,aAEGp6a,EAAM,EAAIwM,EACVvM,EAAM,EAAI0U,EACd,OAAO5U,KAAKC,IAAIC,EAAKF,KAAKE,IAAID,EAAKo6a,IAG3C,EACA5B,EAAOxyb,UAAU6yb,eAAiB,SAAUuB,GAC1C,IAAInzb,EAAKnB,KAAK2B,IACZ+kB,EAAQvlB,EAAGulB,MACXmI,EAAM1tB,EAAG0tB,IAEX,OAAQ7uB,KAAK6I,eACX,IAAK,aACH6d,GAAS4ta,EACT,MACF,IAAK,aACHzla,GAAOyla,EACP,MACF,IAAK,aACH5ta,GAAS4ta,EACTzla,GAAOyla,EAGXt0b,KAAKkC,IAAI,QAASwkB,GAClB1mB,KAAKkC,IAAI,MAAO2sB,EAClB,EAMA6ja,EAAOxyb,UAAUi0b,WAAa,SAAUxsY,EAAOssY,EAAcC,GAC3D,IAAI/yb,EAAI+V,EACJC,EAAKnX,KAAK2B,IACZ2xb,EAAen8a,EAAGm8a,aAClBvlb,EAAQoJ,EAAGpJ,MAET+lb,GAAe,UAAIR,EAAc,QDlYN,ICmY3Bp5a,EAAMytC,EAAM,GACdxtC,EAAMwtC,EAAM,GACVmjX,GAAS,EAET5wZ,EAAMC,IACSD,GAAjB/Y,EAAK,CAACgZ,EAAKD,IAAe,GAAIC,EAAMhZ,EAAG,GACJ8yb,GAAnC/8a,EAAK,CAACg9a,EAAcD,IAAiC,GAAIC,EAAeh9a,EAAG,GAC3E4zZ,GAAS,GAGX,IAAIypB,EAAUN,EAAahkb,UACvBukb,EAAUN,EAAajkb,UACvBmkb,EAAWG,EAAQxmb,MAAQmM,EAdjB,EAciC,CAC7CjP,EAAGiP,EAAM45a,EAAe,EAfZ,EAgBZ7ya,UAAW,QACT,CACFhW,EAAGiP,EAAM45a,EAAe,EAlBZ,EAmBZ7ya,UAAW,SAEToza,EAAWG,EAAQzmb,MAAQA,EAAQoM,EArBzB,EAqByC,CACrDlP,EAAGkP,EAAM25a,EAAe,EAtBZ,EAuBZ7ya,UAAW,SACT,CACFhW,EAAGkP,EAAM25a,EAAe,EAzBZ,EA0BZ7ya,UAAW,QAEb,OAAQ6pZ,EAAgC,CAACupB,EAAUD,GAAlC,CAACA,EAAUC,EAC9B,EACA3B,EAAOxyb,UAAU4H,KAAO,WACtB,IAAIkB,EAAYhJ,KAAKgC,IAAI,aACrBuF,EAASyB,GAAaA,EAAUhH,IAAI,UACpCuF,GACFA,EAAOO,MAEX,EACA4qb,EAAOxyb,UAAU0yb,gBAAkB,WACjC,IAAI5pb,EAAYhJ,KAAKgC,IAAI,aACrBuF,EAASyB,GAAaA,EAAUhH,IAAI,UACxC,OAAOuF,GAAUA,EAAOvF,IAAI,YAC9B,EACO0wb,CACT,CAlb0B,CAkbxB,KCxba,SAAS,IAAiBhqb,EAAQ+rb,EAAWp0b,GAC1D,GAAIqI,EAAQ,CACV,GAAuC,mBAA5BA,EAAOgC,iBAEhB,OADAhC,EAAOgC,iBAAiB+pb,EAAWp0b,GAAU,GACtC,CACL8S,OAAQ,WACNzK,EAAOmC,oBAAoB4pb,EAAWp0b,GAAU,EAClD,GAKJ,GAAkC,mBAAvBqI,EAAOgsb,YAGhB,OADAhsb,EAAOgsb,YAAY,KAAOD,EAAWp0b,GAC9B,CACL8S,OAAQ,WAENzK,EAAOisb,YAAY,KAAOF,EAAWp0b,EACvC,EAGN,CACF,CCnBA,IAMWu0b,IAAgB,CAEzBjtX,QARkB,CAClBktX,WAAY,gBACZC,WAAY,mBACZxwZ,KAAM,EACN04N,QAAS,SAMTyxD,MAAO,CACLqmI,WAAY,oBAGZ,IAAyB,SAAUpzb,GAErC,SAASqzb,IACP,IAAIt0b,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KA2EhE,OA1EAS,EAAM6O,YAAc,OACpB7O,EAAMu0b,aAAe,SAAU56V,GAC7B,OAAO,SAAUl2F,GACfzD,EAAM25F,SAAWA,EACjBl2F,EAAEwe,cAAcjW,iBAChB,IAAItB,EAAUivF,GAAW,UAAIl2F,EAAEwe,cAAe,qBAAuBxe,EAAEiH,QACnEC,EAAUgvF,GAAW,UAAIl2F,EAAEwe,cAAe,qBAAuBxe,EAAEkH,QAEvE3K,EAAMw0b,SAAWx0b,EAAMkB,IAAIygb,aAAej3a,EAAUC,EACpD3K,EAAMy0b,gBACR,CACF,EACAz0b,EAAMy0b,eAAiB,WACrB,IAAIvC,EAAelyb,EAAMmyb,kBACrB9xb,EAAS,GAEXA,EADEL,EAAM25F,SACC,CAAC,IAAiBu4V,EAAc,YAAalyb,EAAM2mG,aAAc,IAAiBurV,EAAc,WAAYlyb,EAAMi5H,WAAY,IAAiBi5T,EAAc,cAAelyb,EAAMi5H,YAElL,CAAC,IAAiBi5T,EAAc,YAAalyb,EAAM2mG,aAAc,IAAiBurV,EAAc,UAAWlyb,EAAMi5H,WAE1H,IAAiBi5T,EAAc,aAAclyb,EAAMi5H,YAErDj5H,EAAM6O,YAAc,WAClBxO,EAAOsH,SAAQ,SAAUlE,GACvBA,EAAEiP,QACJ,GACF,CACF,EAGA1S,EAAM2mG,YAAc,SAAUljG,GAC5B,IAAI/C,EAAKV,EAAMkB,IACbygb,EAAejhb,EAAGihb,aAClB+S,EAAch0b,EAAGg0b,YACnBjxb,EAAEuI,iBACF,IAAItB,EAAU1K,EAAM25F,UAAW,UAAIl2F,EAAG,qBAAuBA,EAAEiH,QAC3DC,EAAU3K,EAAM25F,UAAW,UAAIl2F,EAAG,qBAAuBA,EAAEkH,QAE3Dgqb,EAAShT,EAAej3a,EAAUC,EAElConB,EAAO4ia,EAAS30b,EAAMw0b,SAE1Bx0b,EAAMw0b,SAAWG,EACjB30b,EAAM40b,kBAAkBF,EAAc3ia,EACxC,EACA/xB,EAAMi5H,UAAY,SAAUx1H,GAC1BA,EAAEuI,iBACFhM,EAAM6O,aACR,EAEA7O,EAAM60b,aAAe,SAAUpxb,GAC7B,IAAI/C,EAAKV,EAAMkB,IACbygb,EAAejhb,EAAGihb,aAClBn3a,EAAI9J,EAAG8J,EACPC,EAAI/J,EAAG+J,EACPqqb,EAAWp0b,EAAGo0b,SAEZ/0a,EADe/f,EAAMmyb,kBACD7jb,wBACpB5D,EAAUjH,EAAEiH,QACdC,EAAUlH,EAAEkH,QACV+3E,EAASi/V,EAAej3a,EAAUqV,EAAKxR,KAAO/D,EAAIsqb,EAAW,EAAInqb,EAAUoV,EAAKvR,IAAM/D,EAAIqqb,EAAW,EACrGC,EAAY/0b,EAAMg1b,cAActyW,GACpC1iF,EAAM40b,kBAAkBG,EAC1B,EACA/0b,EAAMi1b,iBAAmB,WACvB,IAAIZ,EAAar0b,EAAMkB,IAAI2rG,MAAMmhN,MAAMqmI,WACvCr0b,EAAMuwa,oBAAoB,SAAS5qa,KAAK,SAAU0ub,GAClDr0b,EAAMqH,MACR,EACArH,EAAMk1b,gBAAkB,WACtB,IAAIb,EAAar0b,EAAMkB,IAAI2rG,MAAM3lC,QAAQmtX,WACzCr0b,EAAMuwa,oBAAoB,SAAS5qa,KAAK,SAAU0ub,GAClDr0b,EAAMqH,MACR,EACOrH,CACT,CA8MA,OA5RA,UAAUs0b,EAAWrzb,GA+ErBqzb,EAAU70b,UAAUggS,SAAW,SAAUhmR,EAAKC,GAC5Cna,KAAKkC,IAAI,WAAYgY,GACrBla,KAAKkC,IAAI,WAAYiY,GACrB,IAAI0wH,EAAW7qI,KAAKuhI,WAChB2L,GAAW,UAAMrC,EAAU3wH,EAAKC,GAChC0wH,IAAaqC,GAAaltI,KAAKgC,IAAI,WACrChC,KAAKq2I,SAASnJ,EAElB,EACA6nT,EAAU70b,UAAU6/R,SAAW,WAG7B,MAAO,CACL7lR,IAHQla,KAAKgC,IAAI,aAAe,EAIhCmY,IAHQna,KAAKgC,IAAI,aAAe,EAKpC,EACA+yb,EAAU70b,UAAUm2I,SAAW,SAAUl0I,GACvC,IAAIwlD,EAAQ3nD,KAAK+/R,WACbrrF,EAAgB10M,KAAKuhI,WACzBvhI,KAAKwF,OAAO,CACV2vb,aAAcn1b,KAAKgC,IAAI,YAAchC,KAAKgC,IAAI,cAAe,UAAMG,EAAOwlD,EAAMztC,IAAKytC,EAAMxtC,OAE7Fna,KAAK8xa,aAAa,cAAe,CAC/Bp9N,cAAeA,EACfvyM,MAAOnC,KAAKuhI,YAEhB,EACAwzT,EAAU70b,UAAUqhI,SAAW,WAC7B,OAAO,UAAMvhI,KAAKgC,IAAI,gBAAkBhC,KAAKgC,IAAI,YAAchC,KAAKgC,IAAI,aAAc,EAAG,EAC3F,EACA+yb,EAAU70b,UAAU6B,cAAgB,WAClC,IAAIJ,EAAMD,EAAOxB,UAAU6B,cAAcH,KAAK5B,MAC9C,OAAO,WAAS,UAAS,CAAC,EAAG2B,GAAM,CACjCM,KAAM,YACNmgb,cAAc,EACdwT,YAAa,GACbT,YAAa,EACb7nV,MAAOsnV,KAEX,EACAG,EAAU70b,UAAUiya,YAAc,SAAUzga,GAC1C1R,KAAK61b,iBAAiBnkb,GACtB1R,KAAK81b,iBAAiBpkb,EACxB,EACAqjb,EAAU70b,UAAUsxa,YAAc,WAChCxxa,KAAKiya,cAAcjya,KAAKgC,IAAI,SAAU,CACpCiJ,EAAGjL,KAAKgC,IAAI,KACZkJ,EAAGlL,KAAKgC,IAAI,MAEhB,EACA+yb,EAAU70b,UAAUuxa,UAAY,WAC9Bzxa,KAAKsyb,YACP,EAEAyC,EAAU70b,UAAU21b,iBAAmB,SAAUnkb,GAC/C,IAAIvQ,EAAKnB,KAAK2B,IACZo0b,EAAW50b,EAAG40b,SACd7+a,EAAK/V,EAAGmsG,MACRA,OAAe,IAAPp2F,EAAgB,CACtBywD,QAAS,CAAC,GACRzwD,EACFC,GAAK,UAAQ,CAAC,EAAGy9a,IAAetnV,GAAO3lC,QACzCq1L,EAAU7lP,EAAG6lP,QACb63L,EAAa19a,EAAG09a,WAChBmB,EAAY7+a,EAAGmtB,KACbA,GAAO,UAAItkC,KAAK2B,IAAK,OAAQq0b,GAC7B1vb,EAAQtG,KAAKgC,IAAI,gBAAkB,CACrCogB,GAAI,EAAIkiB,EAAO,EACfjiB,GAAIiiB,EAAO,EACXhiB,GAAIyza,EAAWzxZ,EAAO,EACtB/hB,GAAI+hB,EAAO,EACX7kB,UAAW6kB,EACXnjB,OAAQ0za,EACR73L,QAASA,GACP,CACF56O,GAAIkiB,EAAO,EACXjiB,GAAI,EAAIiiB,EAAO,EACfhiB,GAAIgiB,EAAO,EACX/hB,GAAIwza,EAAWzxZ,EAAO,EACtB7kB,UAAW6kB,EACXnjB,OAAQ0za,EACR73L,QAASA,GAEX,OAAOh9P,KAAKqR,SAASK,EAAO,CAC1BgC,GAAI1T,KAAKkxa,aAAa,SACtBjva,KAAM,QACN0G,KAAM,OACNrC,MAAOA,GAEX,EAEAyub,EAAU70b,UAAU41b,iBAAmB,SAAUpkb,GAC/C,IAAIvQ,EAAKnB,KAAK2B,IACZwzb,EAAch0b,EAAGg0b,YACjBI,EAAWp0b,EAAGo0b,SACdjoV,EAAQnsG,EAAGmsG,MACTp2F,GAAK,UAAQ,CAAC,EAAG09a,IAAetnV,GAAO3lC,QACzCquX,EAAY9+a,EAAGotB,KACf04N,EAAU9lP,EAAG8lP,QACb83L,EAAa59a,EAAG49a,WACdxwZ,GAAO,UAAItkC,KAAK2B,IAAK,OAAQq0b,GAC7B1vb,EAAQtG,KAAKgC,IAAI,gBAAkB,CACrCogB,GAAI+ya,EAAc7wZ,EAAO,EACzBjiB,GAAIiiB,EAAO,EACXhiB,GAAI6ya,EAAcI,EAAWjxZ,EAAO,EACpC/hB,GAAI+hB,EAAO,EACX7kB,UAAW6kB,EACXnjB,OAAQ2za,EACR93L,QAASA,EACTjxP,OAAQ,WACN,CACFqW,GAAIkiB,EAAO,EACXjiB,GAAI8ya,EAAc7wZ,EAAO,EACzBhiB,GAAIgiB,EAAO,EACX/hB,GAAI4ya,EAAcI,EAAWjxZ,EAAO,EACpC7kB,UAAW6kB,EACXnjB,OAAQ2za,EACR93L,QAASA,EACTjxP,OAAQ,WAEV,OAAO/L,KAAKqR,SAASK,EAAO,CAC1BgC,GAAI1T,KAAKkxa,aAAa,SACtBjva,KAAM,QACN0G,KAAM,OACNrC,MAAOA,GAEX,EACAyub,EAAU70b,UAAUoyb,WAAa,WAC/B,IAAI5gb,EAAQ1R,KAAKgC,IAAI,SACrB0P,EAAMvR,GAAG,YAAaH,KAAKg1b,cAAa,IACxCtjb,EAAMvR,GAAG,UAAWH,KAAK05H,WACzBhoH,EAAMvR,GAAG,aAAcH,KAAKg1b,cAAa,IACzCtjb,EAAMvR,GAAG,WAAYH,KAAK05H,WACThoH,EAAM+B,SAASzT,KAAKkxa,aAAa,UACvC/wa,GAAG,QAASH,KAAKs1b,cAC5B,IAAIW,EAAavkb,EAAM+B,SAASzT,KAAKkxa,aAAa,UAClD+kB,EAAW91b,GAAG,YAAaH,KAAK01b,kBAChCO,EAAW91b,GAAG,WAAYH,KAAK21b,gBACjC,EACAZ,EAAU70b,UAAU0yb,gBAAkB,WACpC,IAAI5pb,EAAYhJ,KAAKgC,IAAI,aACrBuF,EAASyB,GAAaA,EAAUhH,IAAI,UACxC,OAAOuF,GAAUA,EAAOvF,IAAI,YAC9B,EACA+yb,EAAU70b,UAAUu1b,cAAgB,SAAUtyW,GAC5C,IAAIhiF,EAAKnB,KAAK2B,IACZ4zb,EAAWp0b,EAAGo0b,SACdQ,EAAW50b,EAAG40b,SACZP,EAAYryW,EAMhB,OALIA,EAASoyW,EAAWQ,EACtBP,EAAYO,EAAWR,EACdpyW,EAASoyW,EAAWA,IAC7BC,EAAY,GAEPA,CACT,EACAT,EAAU70b,UAAU4H,KAAO,WACzB,IAAIkB,EAAYhJ,KAAKgC,IAAI,aACrBuF,EAASyB,GAAaA,EAAUhH,IAAI,UACpCuF,GACFA,EAAOO,MAEX,EACAitb,EAAU70b,UAAUm1b,kBAAoB,SAAUlyW,GAChD,IAAIhiF,EAAKnB,KAAK2B,IACZwzb,EAAch0b,EAAGg0b,YACjB/S,EAAejhb,EAAGihb,aAClBmT,EAAWp0b,EAAGo0b,SACdjxZ,EAAOnjC,EAAGmjC,KACRkxZ,EAAYx1b,KAAKy1b,cAActyW,GACnC,GAAIqyW,IAAcL,EAAlB,CAIA,IAAIc,EAAaj2b,KAAKgxa,oBAAoB,SACtCoR,EACF6T,EAAW7vb,KAAK,CACdgc,GAAIoza,EAAYlxZ,EAAO,EACvBhiB,GAAIkza,EAAYD,EAAWjxZ,EAAO,IAGpC2xZ,EAAW7vb,KAAK,CACdic,GAAImza,EAAYlxZ,EAAO,EACvB/hB,GAAIiza,EAAYD,EAAWjxZ,EAAO,IAGtCtkC,KAAKk2b,iBAAiBV,EAbtB,CAcF,EACAT,EAAU70b,UAAUg2b,iBAAmB,SAAU/yW,GAC/C,IAAIhiF,EAAKnB,KAAK2B,IACZ+yM,EAAgBvzM,EAAGg0b,YACnBY,EAAW50b,EAAG40b,SACdR,EAAWp0b,EAAGo0b,SAChBv1b,KAAK2B,IAAIwzb,YAAchyW,EAEvBnjF,KAAKQ,KAAK,eAAgB,CACxB20b,YAAahyW,EACbv9E,OAAO,UAAMu9E,GAAU4yW,EAAWR,GAAW,EAAG,KAElDv1b,KAAK8xa,aAAa,cAAe,CAC/Bp9N,cAAeA,EACfvyM,MAAOghF,GAEX,EACO4xW,CACT,CA9R6B,CA8R3B,KC/REoB,IAAW,IACbC,IAAa,IAGXC,IAAW,IACbC,IAAa,IAGXC,IAAiB,IACnBC,IAAmB,IAGjBC,IAAc,ICJlB,SAASC,IAAan0Z,GACpB,OAA6C,IAAtC9B,MAAMnH,KAAK,IAAIqN,IAAIpE,IAAQ1hC,MACpC,CACA,SAAS0gD,IAAIhf,GACX,QAAQ,UAAIA,IAAS,UAAIA,IAAU,CACrC,CAUO,SAASo0Z,IAAiBC,EAASC,EAAS7oX,EAAQ8oX,GACzD,MAAO,CACL7rb,EAAG2rb,EAAU5oX,EAAS/zD,KAAKkC,IAAI26a,GAC/B5rb,EAAG2rb,EAAU7oX,EAAS/zD,KAAKoC,IAAIy6a,GAEnC,CAWO,SAASC,IAAcH,EAASC,EAAS7oX,EAAQgpX,EAAoBC,EAAkBntV,QACxE,IAAhBA,IACFA,EAAc,GAEhB,IAAIpjF,EAAQiwa,IAAiBC,EAASC,EAAS7oX,EAAQgpX,GACnDnoa,EAAM8na,IAAiBC,EAASC,EAAS7oX,EAAQipX,GACjDC,EAAaP,IAAiBC,EAASC,EAAS/sV,EAAaktV,GAC7DG,EAAWR,IAAiBC,EAASC,EAAS/sV,EAAamtV,GAC/D,GAAIA,EAAmBD,GAAiC,EAAV/8a,KAAK+B,GAAQ,CAEzD,IAAIo7Z,EAAcuf,IAAiBC,EAASC,EAAS7oX,EAAQgpX,EAAqB/8a,KAAK+B,IACnFo7a,EAAmBT,IAAiBC,EAASC,EAAS/sV,EAAaktV,EAAqB/8a,KAAK+B,IAC7Fq7a,EAAqB,CAAC,CAAC,IAAK3wa,EAAMzb,EAAGyb,EAAMxb,GAAI,CAAC,IAAK8iE,EAAQA,EAAQ,EAAG,EAAG,EAAGopW,EAAYnsa,EAAGmsa,EAAYlsa,GAAI,CAAC,IAAK8iE,EAAQA,EAAQ,EAAG,EAAG,EAAGn/C,EAAI5jB,EAAG4jB,EAAI3jB,GAAI,CAAC,IAAKgsb,EAAWjsb,EAAGisb,EAAWhsb,IAO9L,OANI4+F,IACFutV,EAAmB92b,KAAK,CAAC,IAAKupG,EAAaA,EAAa,EAAG,EAAG,EAAGstV,EAAiBnsb,EAAGmsb,EAAiBlsb,IACtGmsb,EAAmB92b,KAAK,CAAC,IAAKupG,EAAaA,EAAa,EAAG,EAAG,EAAGqtV,EAASlsb,EAAGksb,EAASjsb,KAExFmsb,EAAmB92b,KAAK,CAAC,IAAKmmB,EAAMzb,EAAGyb,EAAMxb,IAC7Cmsb,EAAmB92b,KAAK,CAAC,MAClB82b,CACT,CACA,IAAIC,EAAWL,EAAmBD,GAAsB/8a,KAAK+B,GAAK,EAAI,EAClEu7a,EAAqB,CAAC,CAAC,IAAK7wa,EAAMzb,EAAGyb,EAAMxb,GAAI,CAAC,IAAK8iE,EAAQA,EAAQ,EAAGspX,EAAU,EAAGzoa,EAAI5jB,EAAG4jB,EAAI3jB,GAAI,CAAC,IAAKisb,EAASlsb,EAAGksb,EAASjsb,IAMnI,OALI4+F,GACFytV,EAAmBh3b,KAAK,CAAC,IAAKupG,EAAaA,EAAa,EAAGwtV,EAAU,EAAGJ,EAAWjsb,EAAGisb,EAAWhsb,IAEnGqsb,EAAmBh3b,KAAK,CAAC,IAAKmmB,EAAMzb,EAAGyb,EAAMxb,IAC7Cqsb,EAAmBh3b,KAAK,CAAC,MAClBg3b,CACT,CAWO,SAAStgB,IAAW2f,EAASC,EAAS7oX,EAAQgpX,EAAoBC,GACvE,IAAIvwa,EAAQiwa,IAAiBC,EAASC,EAAS7oX,EAAQgpX,GACnDnoa,EAAM8na,IAAiBC,EAASC,EAAS7oX,EAAQipX,GACrD,IAAI,UAAcA,EAAmBD,EAA8B,EAAV/8a,KAAK+B,IAAS,CACrE,IAAIo7Z,EAAcuf,IAAiBC,EAASC,EAAS7oX,EAAQgpX,EAAqB/8a,KAAK+B,IACvF,MAAO,CAAC,CAAC,IAAK0K,EAAMzb,EAAGyb,EAAMxb,GAAI,CAAC,IAAK8iE,EAAQA,EAAQ,EAAG,EAAG,EAAGopW,EAAYnsa,EAAGmsa,EAAYlsa,GAAI,CAAC,IAAK8iE,EAAQA,EAAQ,EAAG,EAAG,EAAGtnD,EAAMzb,EAAGyb,EAAMxb,GAAI,CAAC,IAAK8iE,EAAQA,EAAQ,EAAG,EAAG,EAAGopW,EAAYnsa,EAAGmsa,EAAYlsa,GAAI,CAAC,IAAK8iE,EAAQA,EAAQ,EAAG,EAAG,EAAGtnD,EAAMzb,EAAGyb,EAAMxb,GAAI,CAAC,KACpQ,CACA,IAAIosb,EAAWL,EAAmBD,GAAsB/8a,KAAK+B,GAAK,EAAI,EACtE,MAAO,CAAC,CAAC,IAAK0K,EAAMzb,EAAGyb,EAAMxb,GAAI,CAAC,IAAK8iE,EAAQA,EAAQ,EAAGspX,EAAU,EAAGzoa,EAAI5jB,EAAG4jB,EAAI3jB,GACpF,CAQO,SAAS+tB,IAASu+Z,EAAYv5K,GACnC,IAEIj8P,EACAD,EAFAR,EAjHN,SAAsBb,GACpB,IAAI,UAAQA,GACV,OAAO,KAET,IAAIxQ,EAAOwQ,EAAO,GAAGzV,EACjBkF,EAAOuQ,EAAO,GAAGzV,EACjBmF,EAAOsQ,EAAO,GAAGxV,EACjBmF,EAAOqQ,EAAO,GAAGxV,EAOrB,OANA,UAAKwV,GAAQ,SAAU1V,GACrBkF,EAAOA,EAAOlF,EAAMC,EAAID,EAAMC,EAAIiF,EAClCC,EAAOA,EAAOnF,EAAMC,EAAID,EAAMC,EAAIkF,EAClCC,EAAOA,EAAOpF,EAAME,EAAIF,EAAME,EAAIkF,EAClCC,EAAOA,EAAOrF,EAAME,EAAIF,EAAME,EAAImF,CACpC,IACO,CACLH,KAAMA,EACNC,KAAMA,EACNC,KAAMA,EACNC,KAAMA,EACNumb,SAAU1mb,EAAOC,GAAQ,EACzB0mb,SAAUzmb,EAAOC,GAAQ,EAE7B,CA2FYonb,CADGD,EAAW92a,QAIpBg3a,EAAkBz5K,EAAWl8P,WAE7B41a,EADc15K,EAAWj8P,SACG01a,EAUhC,OATIz5K,EAAWutJ,cACbxpZ,EAAWT,EAAIlR,KAAOsnb,EACtB51a,EAAaR,EAAInR,KAAOunb,IAExB31a,EAAWT,EAAIpR,KAAOwnb,EACtB51a,EAAaR,EAAIrR,KAAOynb,GAInB,CACL51a,WAFFA,GAAc21a,EAGZ11a,SAJFA,GAAY01a,EAMd,CAwCO,SAASlkB,IAAgBokB,EAAaC,GAC3C,IAAIrhb,EAAcohb,EAAYxxb,OAC1B8sa,EAAW2kB,EAAYzxb,OAM3B,OALA,UAAKoQ,GAAa,SAAUvE,EAAGvL,QACT+vB,IAAhBy8Y,EAASxsa,KACXwsa,EAASxsa,QAAK+vB,EAElB,IACOy8Y,CACT,CC7KO,SAAS/zY,IAAUh9B,EAAOukB,EAAOmI,GACtC,IAAI3U,EAAMD,KAAKC,IAAIwM,EAAOmI,GACtB1U,EAAMF,KAAKE,IAAIuM,EAAOmI,GAC1B,OAAO1sB,GAAS+X,GAAO/X,GAASgY,CAClC,CA+BO,SAAS,IAAK4Z,EAAK6M,GAMxB,MALmB,iBAAR7M,GACT6M,EAAKx4B,SAAQ,SAAUy4B,UACd9M,EAAI8M,EACb,IAEK9M,CACT,CAOO,SAAS8N,IAAKi2Z,EAAaC,EAAa/ma,GAC7C,IAAIgna,EAAK72b,OACW,IAAhB42b,IACFA,EAAc,SAEJ,IAAR/ma,IACFA,EAAM,IAAIjS,KAEZ,IACE,IAAK,IAAIk5a,GAAgB,UAASH,GAAcI,EAAkBD,EAAc1ia,QAAS2ia,EAAgB5/Y,KAAM4/Y,EAAkBD,EAAc1ia,OAAQ,CACrJ,IAAIlE,EAAS6ma,EAAgB/1b,MACxB6uB,EAAI8Q,IAAIzQ,KACX0ma,EAAYx3b,KAAK8wB,GACjBL,EAAI9uB,IAAImvB,GAAQ,GAEpB,CACF,CAAE,MAAO8ma,GACPH,EAAM,CACJ5qY,MAAO+qY,EAEX,CAAE,QACA,IACMD,IAAoBA,EAAgB5/Y,OAASn3C,EAAK82b,EAAch/N,SAAS93N,EAAGS,KAAKq2b,EACvF,CAAE,QACA,GAAID,EAAK,MAAMA,EAAI5qY,KACrB,CACF,CACA,OAAO2qY,CACT,CCjFA,IAAIK,IAAoB,WACtB,SAASA,EAAKntb,EAAGC,EAAG6C,EAAOC,QACf,IAAN/C,IACFA,EAAI,QAEI,IAANC,IACFA,EAAI,QAEQ,IAAV6C,IACFA,EAAQ,QAEK,IAAXC,IACFA,EAAS,GAEXhO,KAAKiL,EAAIA,EACTjL,KAAKkL,EAAIA,EACTlL,KAAKgO,OAASA,EACdhO,KAAK+N,MAAQA,CACf,CAiQA,OAhQAqqb,EAAKC,UAAY,SAAUnob,EAAME,EAAMD,EAAME,GAC3C,OAAO,IAAI+nb,EAAKlob,EAAME,EAAMD,EAAOD,EAAMG,EAAOD,EAClD,EACAgob,EAAKE,WAAa,SAAUxpb,GAC1B,OAAO,IAAIspb,EAAKtpb,EAAKoB,KAAMpB,EAAKsB,KAAMtB,EAAKf,MAAOe,EAAKd,OACzD,EACAwJ,OAAOoxB,eAAewvZ,EAAKl4b,UAAW,OAAQ,CAC5C8B,IAAK,WACH,OAAOhC,KAAKiL,CACd,EACA09B,YAAY,EACZsqB,cAAc,IAEhBz7C,OAAOoxB,eAAewvZ,EAAKl4b,UAAW,OAAQ,CAC5C8B,IAAK,WACH,OAAOhC,KAAKiL,EAAIjL,KAAK+N,KACvB,EACA46B,YAAY,EACZsqB,cAAc,IAEhBz7C,OAAOoxB,eAAewvZ,EAAKl4b,UAAW,OAAQ,CAC5C8B,IAAK,WACH,OAAOhC,KAAKkL,CACd,EACAy9B,YAAY,EACZsqB,cAAc,IAEhBz7C,OAAOoxB,eAAewvZ,EAAKl4b,UAAW,OAAQ,CAC5C8B,IAAK,WACH,OAAOhC,KAAKkL,EAAIlL,KAAKgO,MACvB,EACA26B,YAAY,EACZsqB,cAAc,IAEhBz7C,OAAOoxB,eAAewvZ,EAAKl4b,UAAW,KAAM,CAC1C8B,IAAK,WACH,MAAO,CACLiJ,EAAGjL,KAAKiL,EACRC,EAAGlL,KAAKkL,EAEZ,EACAy9B,YAAY,EACZsqB,cAAc,IAEhBz7C,OAAOoxB,eAAewvZ,EAAKl4b,UAAW,KAAM,CAC1C8B,IAAK,WACH,MAAO,CACLiJ,EAAGjL,KAAKmQ,KACRjF,EAAGlL,KAAKkL,EAEZ,EACAy9B,YAAY,EACZsqB,cAAc,IAEhBz7C,OAAOoxB,eAAewvZ,EAAKl4b,UAAW,KAAM,CAC1C8B,IAAK,WACH,MAAO,CACLiJ,EAAGjL,KAAKiL,EACRC,EAAGlL,KAAKqQ,KAEZ,EACAs4B,YAAY,EACZsqB,cAAc,IAEhBz7C,OAAOoxB,eAAewvZ,EAAKl4b,UAAW,KAAM,CAC1C8B,IAAK,WACH,MAAO,CACLiJ,EAAGjL,KAAKmQ,KACRjF,EAAGlL,KAAKqQ,KAEZ,EACAs4B,YAAY,EACZsqB,cAAc,IAEhBz7C,OAAOoxB,eAAewvZ,EAAKl4b,UAAW,MAAO,CAC3C8B,IAAK,WACH,MAAO,CACLiJ,EAAGjL,KAAKiL,EAAIjL,KAAK+N,MAAQ,EACzB7C,EAAGlL,KAAKoQ,KAEZ,EACAu4B,YAAY,EACZsqB,cAAc,IAEhBz7C,OAAOoxB,eAAewvZ,EAAKl4b,UAAW,QAAS,CAC7C8B,IAAK,WACH,MAAO,CACLiJ,EAAGjL,KAAKmQ,KACRjF,EAAGlL,KAAKkL,EAAIlL,KAAKgO,OAAS,EAE9B,EACA26B,YAAY,EACZsqB,cAAc,IAEhBz7C,OAAOoxB,eAAewvZ,EAAKl4b,UAAW,SAAU,CAC9C8B,IAAK,WACH,MAAO,CACLiJ,EAAGjL,KAAKiL,EAAIjL,KAAK+N,MAAQ,EACzB7C,EAAGlL,KAAKqQ,KAEZ,EACAs4B,YAAY,EACZsqB,cAAc,IAEhBz7C,OAAOoxB,eAAewvZ,EAAKl4b,UAAW,OAAQ,CAC5C8B,IAAK,WACH,MAAO,CACLiJ,EAAGjL,KAAKkQ,KACRhF,EAAGlL,KAAKkL,EAAIlL,KAAKgO,OAAS,EAE9B,EACA26B,YAAY,EACZsqB,cAAc,IAQhBmlY,EAAKl4b,UAAU0xB,QAAU,SAAU9iB,GACjC,OAAO9O,KAAKiL,IAAM6D,EAAK7D,GAAKjL,KAAKkL,IAAM4D,EAAK5D,GAAKlL,KAAK+N,QAAUe,EAAKf,OAAS/N,KAAKgO,SAAWc,EAAKd,MACrG,EAKAoqb,EAAKl4b,UAAUqvE,SAAW,SAAUz/D,GAClC,OAAOA,EAAMI,MAAQlQ,KAAKkQ,MAAQJ,EAAMK,MAAQnQ,KAAKmQ,MAAQL,EAAMM,MAAQpQ,KAAKoQ,MAAQN,EAAMO,MAAQrQ,KAAKqQ,IAC7G,EAKA+nb,EAAKl4b,UAAUqW,MAAQ,WACrB,OAAO,IAAI6hb,EAAKp4b,KAAKiL,EAAGjL,KAAKkL,EAAGlL,KAAK+N,MAAO/N,KAAKgO,OACnD,EAKAoqb,EAAKl4b,UAAUsR,IAAM,WAEnB,IADA,IAAI+mb,EAAU,GACL53b,EAAK,EAAGA,EAAKC,UAAUC,OAAQF,IACtC43b,EAAQ53b,GAAMC,UAAUD,GAE1B,IAAImO,EAAO9O,KAAKuW,QAOhB,OANA,UAAKgib,GAAS,SAAUt1a,GACtBnU,EAAK7D,EAAIgP,KAAKC,IAAI+I,EAAEhY,EAAG6D,EAAK7D,GAC5B6D,EAAK5D,EAAI+O,KAAKC,IAAI+I,EAAE/X,EAAG4D,EAAK5D,GAC5B4D,EAAKf,MAAQkM,KAAKE,IAAI8I,EAAE9S,KAAMrB,EAAKqB,MAAQrB,EAAK7D,EAChD6D,EAAKd,OAASiM,KAAKE,IAAI8I,EAAE5S,KAAMvB,EAAKuB,MAAQvB,EAAK5D,CACnD,IACO4D,CACT,EAKAspb,EAAKl4b,UAAUg8M,MAAQ,WAErB,IADA,IAAIq8O,EAAU,GACL53b,EAAK,EAAGA,EAAKC,UAAUC,OAAQF,IACtC43b,EAAQ53b,GAAMC,UAAUD,GAE1B,IAAImO,EAAO9O,KAAKuW,QAOhB,OANA,UAAKgib,GAAS,SAAUt1a,GACtBnU,EAAK7D,EAAIgP,KAAKE,IAAI8I,EAAEhY,EAAG6D,EAAK7D,GAC5B6D,EAAK5D,EAAI+O,KAAKE,IAAI8I,EAAE/X,EAAG4D,EAAK5D,GAC5B4D,EAAKf,MAAQkM,KAAKC,IAAI+I,EAAE9S,KAAMrB,EAAKqB,MAAQrB,EAAK7D,EAChD6D,EAAKd,OAASiM,KAAKC,IAAI+I,EAAE5S,KAAMvB,EAAKuB,MAAQvB,EAAK5D,CACnD,IACO4D,CACT,EAMAspb,EAAKl4b,UAAUs4b,IAAM,SAAUD,EAASz9Z,GACtC,IAAI/sB,EAAQwqb,EAAQxqb,MAChBC,EAASuqb,EAAQvqb,OACrB,OAAQ8sB,GACN,KAAK,IAAUomQ,IACf,KAAK,IAAUu3J,SACf,KAAK,IAAUC,UACb,OAAON,EAAKC,UAAUr4b,KAAKkQ,KAAMlQ,KAAKoQ,KAAOpC,EAAQhO,KAAKmQ,KAAMnQ,KAAKqQ,MACvE,KAAK,IAAUqlL,MACf,KAAK,IAAUijQ,UACf,KAAK,IAAUC,aACb,OAAOR,EAAKC,UAAUr4b,KAAKkQ,KAAMlQ,KAAKoQ,KAAMpQ,KAAKmQ,KAAOpC,EAAO/N,KAAKqQ,MACtE,KAAK,IAAU+wR,OACf,KAAK,IAAUy3J,YACf,KAAK,IAAUC,aACb,OAAOV,EAAKC,UAAUr4b,KAAKkQ,KAAMlQ,KAAKoQ,KAAMpQ,KAAKmQ,KAAMnQ,KAAKqQ,KAAOrC,GACrE,KAAK,IAAUynL,KACf,KAAK,IAAUsjQ,SACf,KAAK,IAAUC,YACb,OAAOZ,EAAKC,UAAUr4b,KAAKkQ,KAAOnC,EAAO/N,KAAKoQ,KAAMpQ,KAAKmQ,KAAMnQ,KAAKqQ,MACtE,QAEE,OAAOrQ,KAEb,EAKAo4b,EAAKl4b,UAAU+4b,OAAS,SAAUC,GAChC,IAAI/3b,GAAK,UAAO+3b,EAAK,GACnBjqb,EAAM9N,EAAG,GACTwR,EAAQxR,EAAG,GACXsiF,EAAStiF,EAAG,GACZ6N,EAAO7N,EAAG,GACZ,OAAO,IAAIi3b,EAAKp4b,KAAKiL,EAAI+D,EAAMhP,KAAKkL,EAAI+D,EAAKjP,KAAK+N,MAAQiB,EAAO2D,EAAO3S,KAAKgO,OAASiB,EAAMw0E,EAC9F,EAKA20W,EAAKl4b,UAAUklE,OAAS,SAAU8zX,GAChC,IAAI/3b,GAAK,UAAO+3b,EAAK,GACnBjqb,EAAM9N,EAAG,GACTwR,EAAQxR,EAAG,GACXsiF,EAAStiF,EAAG,GACZ6N,EAAO7N,EAAG,GACZ,OAAO,IAAIi3b,EAAKp4b,KAAKiL,EAAI+D,EAAMhP,KAAKkL,EAAI+D,EAAKjP,KAAK+N,MAAQiB,EAAO2D,EAAO3S,KAAKgO,OAASiB,EAAMw0E,EAC9F,EAMA20W,EAAKl4b,UAAUi5b,OAAS,SAAUrqb,GAChC,MAAO,CAACmL,KAAKE,KAAKna,KAAKoQ,KAAOtB,EAAKsB,KAAM,GAAI6J,KAAKE,IAAIna,KAAKmQ,KAAOrB,EAAKqB,KAAM,GAAI8J,KAAKE,IAAIna,KAAKqQ,KAAOvB,EAAKuB,KAAM,GAAI4J,KAAKE,KAAKna,KAAKkQ,KAAOpB,EAAKoB,KAAM,GACxJ,EAKAkob,EAAKl4b,UAAU80R,QAAU,SAAUlmR,GACjC,OAAO9O,KAAKkQ,KAAOpB,EAAKqB,MAAQnQ,KAAKmQ,KAAOrB,EAAKoB,MAAQlQ,KAAKoQ,KAAOtB,EAAKuB,MAAQrQ,KAAKqQ,KAAOvB,EAAKsB,IACrG,EAKAgob,EAAKl4b,UAAUokC,KAAO,WACpB,OAAOtkC,KAAK+N,MAAQ/N,KAAKgO,MAC3B,EAKAoqb,EAAKl4b,UAAUk5b,UAAY,SAAUh7a,GACnC,OAAOA,EAAEnT,GAAKjL,KAAKkQ,MAAQkO,EAAEnT,GAAKjL,KAAKmQ,MAAQiO,EAAElT,GAAKlL,KAAKoQ,MAAQgO,EAAElT,GAAKlL,KAAKqQ,IACjF,EACO+nb,CACT,CApRwB,GCGjB,SAASiB,IAAoBp7K,GAClC,GAAIA,EAAWotJ,UAAYptJ,EAAWutJ,aAEpC,OAAQvtJ,EAAWj8P,SAAWi8P,EAAWl8P,YAAck8P,EAAWmuJ,YAGpE,IAAI1lZ,EAAQu3P,EAAWp/D,QAAQ,CAC7B5zM,EAAG,EACHC,EAAG,IAED2jB,EAAMovP,EAAWp/D,QAAQ,CAC3B5zM,EAAG,EACHC,EAAG,IAGL,OAAO+O,KAAK2C,KAAK3C,KAAK0B,IAAIkT,EAAI5jB,EAAIyb,EAAMzb,EAAG,GAAKgP,KAAK0B,IAAIkT,EAAI3jB,EAAIwb,EAAMxb,EAAG,GAC5E,CAsBO,SAASoub,IAAoBr7K,EAAYjzQ,GAC9C,IAAI6yB,EAASogP,EAAWiuJ,YACxB,OAAOjyZ,KAAK2C,KAAK3C,KAAK0B,IAAI3Q,EAAMC,EAAI4yB,EAAO5yB,EAAG,GAAKgP,KAAK0B,IAAI3Q,EAAME,EAAI2yB,EAAO3yB,EAAG,GAClF,CAyBO,SAASqub,IAAgBt7K,EAAYjzQ,GAC1C,IAAI6yB,EAASogP,EAAWiuJ,YACxB,OAAOjyZ,KAAKqG,MAAMtV,EAAME,EAAI2yB,EAAO3yB,EAAGF,EAAMC,EAAI4yB,EAAO5yB,EACzD,CAOO,SAASuub,IAAqBv7K,EAAYzzK,QAChC,IAAXA,IACFA,EAAS,GAEX,IA0BIivV,EA1BA/ya,EAAQu3P,EAAWv3P,MACrBmI,EAAMovP,EAAWpvP,IACf9gB,EAAQkwQ,EAAWznJ,WACnBxoH,EAASiwQ,EAAWkuJ,YACxB,GAAIluJ,EAAWotJ,QAAS,CACtB,IAAIquB,EAAez7K,EAAWl8P,WAC5B43a,EAAa17K,EAAWj8P,SACtB43a,EAAW37K,EAAWiuJ,YACtBoZ,EAAWrnK,EAAWmuJ,YAC1B,MAAO,CACLzja,KAAM,OACNkxb,WAAY,CACVhzb,KAAMkwb,IAAc6C,EAAS3ub,EAAG2ub,EAAS1ub,EAAGo6a,EAAW96U,EAAQkvV,EAAcA,IAE/ED,SAAU,SAAkB7zb,GAC1B,IAAI4sB,GAAQmna,EAAaD,GAAgB9zb,EAAQ8zb,EAEjD,MAAO,CACL7yb,KAFSkwb,IAAc6C,EAAS3ub,EAAG2ub,EAAS1ub,EAAGo6a,EAAW96U,EAAQkvV,EAAclna,GAIpF,EACAlsB,MAAO,CACLO,KAAMkwb,IAAc6C,EAAS3ub,EAAG2ub,EAAS1ub,EAAGo6a,EAAW96U,EAAQkvV,EAAcC,IAGnF,CAWA,OAREF,EADEx7K,EAAWutJ,aACF,CACTx9Z,OAAQA,EAAkB,EAATw8F,GAGR,CACTz8F,MAAOA,EAAiB,EAATy8F,GAGZ,CACL7hG,KAAM,OACNkxb,WAAY,CACV5ub,EAAGyb,EAAMzb,EAAIu/F,EACbt/F,EAAG2jB,EAAI3jB,EAAIs/F,EACXz8F,MAAOkwQ,EAAWutJ,aAAez9Z,EAAiB,EAATy8F,EAAa,EACtDx8F,OAAQiwQ,EAAWutJ,aAAe,EAAIx9Z,EAAkB,EAATw8F,GAEjDivV,SAAUA,EACVnzb,MAAO,CACL2E,EAAGyb,EAAMzb,EAAIu/F,EACbt/F,EAAG2jB,EAAI3jB,EAAIs/F,EACXz8F,MAAOA,EAAiB,EAATy8F,EACfx8F,OAAQA,EAAkB,EAATw8F,GAGvB,CCxIA,IAAIsvV,IAAY,uTAmBT,SAASC,IAAejhb,EAAOkhb,EAAUC,EAAUC,GAIxD,YAHiB,IAAbF,IACFA,EAAW,CAAC,GAEVA,EAASrxb,KAAaqxb,EAASrxb,KAGhB,aAAfmQ,EAAMnQ,MAAuBqvZ,IAAY7yZ,SAAS80b,IAAa,CAAC,YAAY90b,SAAS+0b,IAGlFphb,EAAMglZ,WAFJ,MAEyBhlZ,EAAMnQ,IAC1C,CASO,SAASwxb,IAAmBt6T,EAAOn6G,EAAMs0a,GAC9C,IAAII,EAAY10a,GAAQ,GACxB,IAAI,UAASm6G,KAAU,WAAM,UAAWu6T,EAAWv6T,MAAW,UAAQm6T,GAEpE,OAAO,IADQ,IAAS,YACjB,CAAa,CAClBn6T,MAAOA,EAAMj9G,WACb4d,OAAQ,CAACq/F,KAGb,IAAIr/F,GAAS,SAAY45Z,EAAWv6T,GAEhCl3H,GAAO,UAAIqxb,EAAU,OA3C3B,SAAwB73b,GACtB,IAAIwG,EAAO,SAMX,OALImxb,IAAUx0b,KAAKnD,GACjBwG,EAAO,WACE,UAASxG,KAClBwG,EAAO,OAEFA,CACT,CAmCmC0xb,CAAe75Z,EAAO,KAEvD,OAAO,IADS,IAAS73B,GAClB,EAAc,UAAS,CAC5Bk3H,MAAOA,EACPr/F,OAAQA,GACPw5Z,GACL,CAyBO,SAAS,IAAQlhb,GACtB,OAAOA,EAAM63W,OAAS73W,EAAM+mH,KAC9B,CAOO,SAASy6T,IAA6Bxhb,EAAOmlQ,EAAY3wK,GAC9D,IAEI3lD,EADA72B,EADShY,EAAM0nB,OACA3/B,OAEnB,GAAc,IAAViwB,EACF62B,EAAQ,CAAC,GAAK,OACT,CACL,IACIw7B,EAAS,EAWXx7B,EDlFC,SAAsBs2N,GAC3B,GAAIA,EAAWotJ,QAAS,CACtB,IAAItpZ,EAAak8P,EAAWl8P,WAE5B,OADak8P,EAAWj8P,SACND,GAAyB,EAAV9H,KAAK+B,EACxC,CACA,OAAO,CACT,CCiEQu+a,CAAat8K,GACVA,EAAWutJ,aAKN,EADRroV,EAAS,EAAIryD,GADA,UAAIw8E,EAAO,yBAA0B,EAAI,MAEpC,EAAG,EAAInqB,EAAS,GAJ1B,CAAC,EAAG,EAAI,EAAIryD,GAQd,CADRqyD,EAAS,EAAIryD,EAAQ,EACJ,EAAIqyD,EAEzB,CAEA,OAAOx7B,CACT,CAKO,SAAS6yY,IAAY1hb,GAE1B,IAAI0nB,EAAS1nB,EAAM0nB,OAAOjwB,QAAO,SAAUkH,GACzC,QAAQ,UAAMA,KAAUyK,MAAMzK,EAChC,IACA,OAAOwC,KAAKE,IAAI9Y,MAAM4Y,MAAM,WAAc,UAAc,IAAI,UAAOumB,IAAS,GAAQ,EAAC,UAAM1nB,EAAMqB,MAAQ5V,IAAWuU,EAAMqB,MAAM,GAClI,CCzBO,SAASsgb,IAAcx8K,EAAYnjP,GACxC,IAAIqzY,EAAS,CACXznZ,MAAO,CACLzb,EAAG,EACHC,EAAG,GAEL2jB,IAAK,CACH5jB,EAAG,EACHC,EAAG,IAGH+yQ,EAAWktJ,OACbgD,EA3GG,SAAmCrzY,GACxC,IAAIpU,EACAmI,EACJ,OAAQiM,GACN,KAAK,IAAUomQ,IACbx6Q,EAAQ,CACNzb,EAAG,EACHC,EAAG,GAEL2jB,EAAM,CACJ5jB,EAAG,EACHC,EAAG,GAEL,MACF,KAAK,IAAUwqL,MACbhvK,EAAQ,CACNzb,EAAG,EACHC,EAAG,GAEL2jB,EAAM,CACJ5jB,EAAG,EACHC,EAAG,GAEL,MACF,KAAK,IAAUk2R,OACb16Q,EAAQ,CACNzb,EAAG,EACHC,EAAG,GAEL2jB,EAAM,CACJ5jB,EAAG,EACHC,EAAG,GAEL,MACF,KAAK,IAAUuqL,KACb/uK,EAAQ,CACNzb,EAAG,EACHC,EAAG,GAEL2jB,EAAM,CACJ5jB,EAAG,EACHC,EAAG,GAEL,MACF,QACEwb,EAAQmI,EAAM,CACZ5jB,EAAG,EACHC,EAAG,GAGT,MAAO,CACLwb,MAAOA,EACPmI,IAAKA,EAET,CAqDa6ra,CAA0B5/Z,GAC1BmjP,EAAWotJ,UACpB8C,EAhDG,SAAqClwJ,GAC1C,IAAIv3P,EACAmI,EAoBJ,OAnBIovP,EAAWutJ,cACb9kZ,EAAQ,CACNzb,EAAG,EACHC,EAAG,GAEL2jB,EAAM,CACJ5jB,EAAG,EACHC,EAAG,KAGLwb,EAAQ,CACNzb,EAAG,EACHC,EAAG,GAEL2jB,EAAM,CACJ5jB,EAAG,EACHC,EAAG,IAGA,CACLwb,MAAOA,EACPmI,IAAKA,EAET,CAsBa8ra,CAA4B18K,IAEvC,IAAIv3P,EAAQynZ,EAAOznZ,MACjBmI,EAAMs/Y,EAAOt/Y,IACf,MAAO,CACLnI,MAAOu3P,EAAWp/D,QAAQn4L,GAC1BmI,IAAKovP,EAAWp/D,QAAQhwL,GAE5B,CA0BO,SAASwpS,IAAW81G,GACzB,IAAIznZ,EAAQynZ,EAAOznZ,MACjBmI,EAAMs/Y,EAAOt/Y,IACf,OAAOnI,EAAMzb,IAAM4jB,EAAI5jB,CACzB,CAQO,SAAS2vb,IAAsBzsB,EAAQtwY,GAC5C,IAAInX,EAAQynZ,EAAOznZ,MACjBmI,EAAMs/Y,EAAOt/Y,IAGf,OAFqBwpS,IAAW81G,IAIzBznZ,EAAMxb,EAAI2jB,EAAI3jB,IAAM2yB,EAAO5yB,EAAIyb,EAAMzb,GAAK,EACtC,GAEC,GAIL4jB,EAAI5jB,EAAIyb,EAAMzb,IAAMyb,EAAMxb,EAAI2yB,EAAO3yB,GAAK,GACrC,EAED,CAGb,CASO,SAAS2vb,IAAgBvtV,EAAOxyE,GACrC,IAAIgga,GAAY,UAAIxtV,EAAO,CAAC,aAAc,QAAS,CAAC,GACpD,OAAO,UAAQ,CAAC,GAAG,UAAIwtV,EAAW,CAAC,UAAW,CAAC,IAAI,UAAQ,CAAC,GAAG,UAAIA,EAAW,CAAChga,GAAY,CAAC,IAC9F,CAQO,SAASiga,IAAoBztV,EAAOxyE,EAAWkga,GACpD,IAAIF,GAAY,UAAIxtV,EAAO,CAAC,aAAc,QAAS,CAAC,GACpD,OAAO,UAAQ,CAAC,GAAG,UAAIwtV,EAAW,CAAC,SAAU,SAAU,CAAC,IAAI,UAAQ,CAAC,GAAG,UAAIA,EAAW,CAAChga,EAAW,SAAU,CAAC,IAAKkga,EACrH,CAMO,SAASC,IAA0Bh9K,GAExC,IAAIhzQ,EAAIgzQ,EAAWhzQ,EACjBC,EAAI+yQ,EAAW/yQ,EACf2yB,EAASogP,EAAW8uJ,aAClBxB,EAAarga,EAAEwb,MAAQxb,EAAE2jB,IACzBnI,EAAQu3P,EAAWutJ,aAAevtJ,EAAWp/D,QAAQ,CACvD5zM,EAAGsga,EAAa,EAAI,EACpBrga,EAAG,IACA+yQ,EAAWp/D,QAAQ,CACtB5zM,EAAG,EACHC,EAAGqga,EAAa,EAAI,IAElB2vB,EAAc,CAACx0a,EAAMzb,EAAI4yB,EAAO5yB,EAAGyb,EAAMxb,EAAI2yB,EAAO3yB,GACpDiwb,EAAe,CAAC,EAAG,GACnBp5a,EAAa2E,EAAMxb,EAAI2yB,EAAO3yB,EAAI4pB,IAAA,GAAWoma,EAAaC,IAAyD,EAAzCrma,IAAA,GAAWoma,EAAaC,GAClGn5a,EAAWD,GAAc9W,EAAE4jB,IAAM5jB,EAAEyb,OAEvC,MAAO,CACLmX,OAAQA,EACRmwC,OAHW/zD,KAAK2C,KAAK3C,KAAK0B,IAAI+K,EAAMzb,EAAI4yB,EAAO5yB,EAAG,GAAKgP,KAAK0B,IAAI+K,EAAMxb,EAAI2yB,EAAO3yB,EAAG,IAIpF6W,WAAYA,EACZC,SAAUA,EAEd,CAQO,SAASo5a,IAAcr3H,EAAMlkM,GAClC,OAAI,UAAUkkM,IACI,IAATA,GAAyB,CAAC,GAE5B,UAAIA,EAAM,CAAClkM,GACpB,CAOO,SAASw7T,IAAiBC,EAAYl1Z,GAC3C,OAAO,UAAIk1Z,EAAY,WAAYl1Z,EACrC,CAMO,SAASm1Z,IAAiBzib,EAAOwib,GACtC,OAAO,UAAIA,EAAY,CAAC,QAAS,QAAS,IAAQxib,GACpD,CChPA,IAAI,IAAqB,WACvB,SAAS+2N,EAAMuiC,EAAMzwQ,GAEnB3B,KAAK6B,WAAY,EAEjB7B,KAAKopW,OAAS,GACdppW,KAAKoyQ,KAAOA,EACZpyQ,KAAK2B,KAAM,UAAQ,CAAC,EAAG3B,KAAK+B,gBAAiBJ,EAC/C,CAsQA,OAlQAkuO,EAAM3vO,UAAUoK,KAAO,WAEhBtK,KAAKgJ,YACRhJ,KAAKgJ,UAAYhJ,KAAKw7b,mBAGxB,IAAI91a,EAAO1lB,KAAKoyQ,KAAKnyG,UACrBjgK,KAAKopW,OAASppW,KAAKy7b,eAAe/1a,EACpC,EASAmqN,EAAM3vO,UAAU8qE,OAAS,WACvBhrE,KAAK07b,aACP,EAIA7rN,EAAM3vO,UAAUsF,OAAS,WAEzB,EAKAqqO,EAAM3vO,UAAUqP,MAAQ,WACtBvP,KAAK27b,iBACP,EAIA9rN,EAAM3vO,UAAUkC,QAAU,WACxBpC,KAAKuP,QACDvP,KAAKgJ,YACPhJ,KAAKgJ,UAAUmK,QAAO,GACtBnT,KAAKgJ,eAAYytB,GAEnBz2B,KAAK6B,WAAY,EACjB7B,KAAKoyQ,UAAO37O,EACZz2B,KAAKopW,OAAS,EAChB,EAKAv5H,EAAM3vO,UAAU07b,YAAc,SAAUlhI,GACtC,IAAIyzG,EAASzzG,EAAMyzG,OACjBzoZ,EAAOg1S,EAAMh1S,KACbvkB,EAAKu5T,EAAMtgP,QACXA,OAAiB,IAAPj5E,EAAgBnB,KAAK2B,IAAIy4E,QAAUj5E,EAC3CixQ,EAAOpyQ,KAAKoyQ,KAAK2iJ,WAAW,CAC9BoZ,OAAQA,EACR/zV,QAASA,IAGXg4L,EAAK1sP,KAAKA,GAAQ,IAClBg1S,EAAMtoD,KAAOA,EAEbpyQ,KAAK67b,eAAezpL,EAAMsoD,GAC1B,IAAIohI,EAAW97b,KAAK2B,IAAIm6b,SAMxB,OALIA,GACFA,EAAS1pL,EAAMsoD,GAGjB16T,KAAK+7b,cAAc3pL,EAAMsoD,GAClBtoD,CACT,EAEAviC,EAAM3vO,UAAUs7b,gBAAkB,WAEhC,OADsBx7b,KAAKoyQ,KAAK4pL,SAAS7kC,IAAM8kC,MACxBxqb,UACzB,EAIAo+N,EAAM3vO,UAAUw7b,YAAc,WAC5B17b,KAAKk8b,kBACP,EAIArsN,EAAM3vO,UAAUg8b,iBAAmB,WACjC,IAAIz7b,EAAQT,KAEZ,OAAOA,KAAKopW,OAAOp4U,KAAI,SAAU0pS,GAC/B,OAAOj6T,EAAMm7b,YAAYlhI,EAC3B,GACF,EAIA7qF,EAAM3vO,UAAUy7b,gBAAkB,WAChC,IAAIl7b,EAAQT,MAEZ,UAAKA,KAAKopW,QAAQ,SAAU1uC,GACtBA,EAAMtoD,OACR3xQ,EAAM2xQ,KAAK+pL,WAAWzhI,EAAMtoD,MAC5BsoD,EAAMtoD,UAAO37O,EAEjB,GACF,EAIAo5M,EAAM3vO,UAAUk8b,aAAe,WAc7B,IAAIj7b,EAAKnB,KAAKoyQ,KAAKiqL,SACjBtub,EAAQ5M,EAAG4M,MACXC,EAAS7M,EAAG6M,OAEd,OADchO,KAAK2B,IAAI+6V,QACR1rU,KAAI,SAAUlT,EAAGonB,GAC9B,OAAI,UAASpnB,GAAWA,GAAa,IAARonB,EAAYn3B,EAAQC,GAAoBqd,WAAWvN,GAAK,GACvF,GACF,EASA+xN,EAAM3vO,UAAUo8b,eAAiB,SAAU52a,EAAMm6G,GAC/C,IAAIvsH,EAAM,GACNwL,EAAQ,CAAC,EASb,OAPA,UAAK4G,GAAM,SAAUK,GACnB,IAAI5jB,EAAQ4jB,EAAE85G,IACT,UAAM19H,IAAW2c,EAAM3c,KAC1BmR,EAAI/S,KAAK4B,GACT2c,EAAM3c,IAAS,EAEnB,IACOmR,CACT,EAQAu8N,EAAM3vO,UAAUq8b,UAAY,SAAU7lU,EAAM8lU,EAAMC,EAAQC,GACxD,IAAIv7b,GAAK,UAAOnB,KAAKo8b,eAAgB,GACnCO,EAAWx7b,EAAG,GACdy7b,EAAWz7b,EAAG,GAWZ07b,GAAU,EAAIF,IAAsB,IAATH,EAAa,EAAIA,GAAQG,EACpDG,GAAU,EAAIF,IAAsB,IAATlmU,EAAa,EAAIA,GAAQkmU,EAEpDl2a,EAAQ,CACVzb,GAAI4xb,EAASF,GAAYF,EACzBvxb,GAAI4xb,EAASF,GAAYF,GAM3B,MAAO,CACLh2a,MAAOA,EACPmI,IANQ,CACR5jB,EAAGyb,EAAMzb,EAAI4xb,EACb3xb,EAAGwb,EAAMxb,EAAI4xb,GAMjB,EACAjtN,EAAM3vO,UAAU6B,cAAgB,WAC9B,MAAO,CACL+5b,cAAUrla,EACV+2H,WAAW,EACXkvM,QAAS,CAAC,EAAG,GACbtiR,QAAS,GACTwlD,OAAQ,GAEZ,EAIAiwG,EAAM3vO,UAAU68b,mBAAqB,WAGnC,MAAO,CACLjxb,MAAO,CACLgV,SAAU,GACV86B,KAAM,OACNnoB,WALazzB,KAAKoyQ,KAAK/qJ,WAAW5zF,YAQxC,EAMAo8M,EAAM3vO,UAAU88b,YAAc,SAAU5qL,EAAMsoD,GAC5C,IAAIv1R,EAAUitO,EAAK6qL,aACfC,EAAmB/3Z,EAAQ84O,WAC3B7+D,EAAagzD,EAAKhzD,WAEtB,GAAuB,UADF,UAAI89O,EAAkB,OAAQ,SAClB99O,EAAWv+M,OAAQ,EAC9C,UAAMskC,EAAQ4+R,QAEhB5+R,EAAQ4+R,KAAO,CAAC,GAElB,IAAIA,EAAO5+R,EAAQ4+R,KACf5iU,GAAK,UAAOi+M,EAAW,GAAG+9O,cAAe,GAC3Clyb,EAAI9J,EAAG,GACP+J,EAAI/J,EAAG,GACLi8b,EAAUhC,IAAcr3H,EAAM94T,GAC9Boyb,EAAUjC,IAAcr3H,EAAM74T,IAClB,IAAZkyb,IACFj4Z,EAAQ4+R,KAAK94T,GAAKjL,KAAKs9b,eAAeryb,EAAG84T,EAAMq5H,EAAS1iI,KAE1C,IAAZ2iI,IACFl4Z,EAAQ4+R,KAAK74T,GAAKlL,KAAKu9b,eAAeryb,EAAG64T,EAAMs5H,EAAS3iI,GAE5D,CACF,EAKA7qF,EAAM3vO,UAAUs9b,mBAAqB,SAAU/8E,GAC7C,OAAO,SAAUtoJ,GAEf,OAAO,UAAMsoJ,GAAY,SAAUx+U,GACjC,IAAI49F,EAAQ59F,EAAU49F,MACpB19H,EAAQ8/B,EAAU9/B,MACpB,UAAK,UAAMA,IAAU09H,IACZs4F,EAAMt4F,KAAW19H,CAG5B,GACF,CACF,EACO0tO,CACT,CA/QyB,GCvBrB4tN,IAAS,CAAC,EAaHC,IAAgB,SAAuB/0b,EAAM6tD,GACtDinY,KAAO,UAAU90b,IAAS6tD,CAC5B,EChBImnY,IAAsB,WACxB,SAASA,EAAOxqa,EAASxxB,GACvB3B,KAAKmzB,QAAUA,EACfnzB,KAAK2B,IAAMA,EACXwxB,EAAQyqa,UAAU59b,KACpB,CAuBA,OAlBA29b,EAAOz9b,UAAU29b,SAAW,SAAUl8b,IACpC,UAAO3B,KAAM2B,EACf,EAIAg8b,EAAOz9b,UAAUoK,KAAO,WACtBtK,KAAK69b,SAAS79b,KAAK2B,IACrB,EAIAg8b,EAAOz9b,UAAUkC,QAAU,WAEzBpC,KAAKmzB,QAAQ2qa,aAAa99b,MAE1BA,KAAKmzB,QAAU,IACjB,EACOwqa,CACT,CA7B0B,GA8B1B,QC/BII,IAA8B,SAAUr8b,GAE1C,SAASq8b,IACP,OAAkB,OAAXr8b,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAgBA,OAnBA,UAAU+9b,EAAgBr8b,GAO1Bq8b,EAAe79b,UAAU89b,QAAU,WAC7Bh+b,KAAKK,UACPL,KAAKK,SAASL,KAAKmzB,QAEvB,EAIA4qa,EAAe79b,UAAUkC,QAAU,WACjCV,EAAOxB,UAAUkC,QAAQR,KAAK5B,MAC9BA,KAAKK,SAAW,IAClB,EACO09b,CACT,CArBkC,CAqBhC,KACF,QCtBIE,IAAc,CAAC,EAuBZ,SAASC,IAAeC,GAC7B,IAAIC,EAAeH,IAAYE,GAC/B,OAAO,UAAIC,EAAc,cAC3B,CAMO,SAASC,IAAeF,EAAYG,EAAa38b,GACtDs8b,IAAYE,GAAc,CACxBG,YAAaA,EACb38b,IAAKA,EAET,CAcO,SAAS48b,IAAqBl+b,EAAU8yB,GAC7C,IAAIsH,EAAS,IAAI,IAAetH,GAGhC,OAFAsH,EAAOp6B,SAAWA,EAClBo6B,EAAOx4B,KAAO,WACPw4B,CACT,CCzCA,SAAS+ja,IAAY/nb,EAAKw8V,GAExB,IADA,IAAI3xU,EAAM,CAAC7qB,EAAI,IACNvV,EAAI,EAAGs5B,EAAM/jB,EAAI5V,OAAQK,EAAIs5B,EAAKt5B,GAAQ,EAAG,CACpD,IAAI8J,EAAQioW,EAAMp0J,QAAQ,CACxB5zM,EAAGwL,EAAIvV,GACPgK,EAAGuL,EAAIvV,EAAI,KAEbogC,EAAI/gC,KAAKyK,EAAMC,EAAGD,EAAME,EAC1B,CACA,OAAOo2B,CACT,CACA,SAASm9Z,IAAgB53b,EAAMosW,GAC7B,IAAIu4D,EAAev4D,EAAMu4D,aACrBtsZ,EAAIrY,EAAK,GACToE,EAAIpE,EAAK,GACTqE,EAAIrE,EAAK,GACTmE,EAAQioW,EAAMp0J,QAAQ,CACxB5zM,EAAGA,EACHC,EAAGA,IAGL,MAAO,CAAC,IAAKgU,EAAGA,EAAG,EAAG,EADNssZ,EAAe,EAAI,EACCxga,EAAMC,EAAGD,EAAME,EACrD,CA8DO,IAAIixB,IAAe,SAAsBzb,EAAQkb,EAAQL,EAAQD,GACtE,IAAIn6B,EAGA06B,EACAjc,EACA1F,EACAC,EACA2hB,EACAL,EACAM,EARAC,EAAM,GACNC,IAAkBX,EAQtB,GAAIW,EAAe,CACW/hB,GAA5B/Y,GAAK,UAAOm6B,EAAY,IAAa,GAAInhB,EAAMhZ,EAAG,GAClD,IAAK,IAAID,EAAI,EAAGokB,EAAI5E,EAAO7f,OAAQK,EAAIokB,EAAGpkB,IAAK,CAC7C,IAAI8J,EAAQ0V,EAAOxf,GACnBgZ,EAAM4a,IAAA,GAAS,CAAC,EAAG,GAAI5a,EAAKlP,GAC5BmP,EAAM2a,IAAA,GAAS,CAAC,EAAG,GAAI3a,EAAKnP,EAC9B,CACF,CACS9J,EAAI,EAAb,IAAK,IAAWs5B,EAAM9Z,EAAO7f,OAAQK,EAAIs5B,EAAKt5B,IAAK,CAC7C8J,EAAQ0V,EAAOxf,GACnB,GAAU,IAANA,GAAYq6B,EAET,GAAIr6B,IAAMs5B,EAAM,GAAMe,EAItB,CACLM,EAAYnb,EAAO6a,EAASr6B,EAAIA,EAAI,EAAIs5B,EAAM,EAAIt5B,EAAI,GACtD0e,EAAYc,EAAO6a,GAAUr6B,EAAI,GAAKs5B,EAAMt5B,EAAI,GAChD,IAAI+Q,EAAI,CAAC,EAAG,GACZA,EAAI6iB,IAAA,GAAS7iB,EAAG2N,EAAWic,GAC3B5pB,EAAI6iB,IAAA,GAAW7iB,EAAGA,EAAG2pB,GACrB,IAAIM,EAAKpH,IAAA,GAAc9pB,EAAO6wB,GAC1BxG,EAAKP,IAAA,GAAc9pB,EAAO4U,GAC1BwM,EAAM8P,EAAK7G,EACH,IAARjJ,IACF8P,GAAM9P,EACNiJ,GAAMjJ,GAER,IAAIiI,EAAKS,IAAA,GAAW,CAAC,EAAG,GAAI7iB,GAAIiqB,GAC5B5H,EAAKQ,IAAA,GAAW,CAAC,EAAG,GAAI7iB,EAAGojB,GAC/BoG,EAAM3G,IAAA,GAAS,CAAC,EAAG,GAAI9pB,EAAOqpB,GAC9ByH,EAAUhH,IAAA,GAAS,CAAC,EAAG,GAAI9pB,EAAOspB,GAElCwH,EAAUhH,IAAA,GAAS,CAAC,EAAG,GAAIgH,EAAShH,IAAA,GAAS,CAAC,EAAG,GAAIlV,EAAW5U,IAChE8wB,EAAUhH,IAAA,GAAS,CAAC,EAAG,GAAIgH,EAAShH,IAAA,GAAS,CAAC,EAAG,GAAIlV,EAAW5U,IAEhEqpB,EAAKS,IAAA,GAAS,CAAC,EAAG,GAAIgH,EAAS9wB,GAC/BqpB,EAAKS,IAAA,GAAW,CAAC,EAAG,GAAIT,GAAK6H,EAAK7G,GAClCoG,EAAM3G,IAAA,GAAS,CAAC,EAAG,GAAI9pB,EAAOqpB,GAE9BoH,EAAM3G,IAAA,GAAS,CAAC,EAAG,GAAI2G,EAAK3G,IAAA,GAAS,CAAC,EAAG,GAAI+G,EAAW7wB,IACxDywB,EAAM3G,IAAA,GAAS,CAAC,EAAG,GAAI2G,EAAK3G,IAAA,GAAS,CAAC,EAAG,GAAI+G,EAAW7wB,IAExDspB,EAAKQ,IAAA,GAAS,CAAC,EAAG,GAAI9pB,EAAOywB,GAC7BnH,EAAKQ,IAAA,GAAW,CAAC,EAAG,GAAIR,EAAIe,EAAK6G,GACjCJ,EAAUhH,IAAA,GAAS,CAAC,EAAG,GAAI9pB,EAAOspB,GAC9B2H,IACFR,EAAM3G,IAAA,GAAS,CAAC,EAAG,GAAI2G,EAAKvhB,GAC5BuhB,EAAM3G,IAAA,GAAS,CAAC,EAAG,GAAI2G,EAAKthB,GAC5B2hB,EAAUhH,IAAA,GAAS,CAAC,EAAG,GAAIgH,EAAS5hB,GACpC4hB,EAAUhH,IAAA,GAAS,CAAC,EAAG,GAAIgH,EAAS3hB,IAEtC6hB,EAAIz7B,KAAKw7B,GACTC,EAAIz7B,KAAKk7B,GACTM,EAAMD,CACR,MA3CEL,EAAMzwB,EACNgxB,EAAIz7B,KAAKw7B,GACTC,EAAIz7B,KAAKk7B,QAJTM,EAAM/wB,CA8CV,CAIA,OAHIuwB,GACFS,EAAIz7B,KAAKy7B,EAAIpR,SAERoR,CACT,EAKO,SAAS0ia,IAAkB54a,EAAKL,EAAG6V,GAGxC,IAFA,IAAIC,IAAW9V,EACX+V,EAAY,GACPt6B,EAAI,EAAGokB,EAAIQ,EAAIjlB,OAAQK,EAAIokB,EAAGpkB,GAAK,EAC1Cs6B,EAAUj7B,KAAK,CAACulB,EAAI5kB,GAAI4kB,EAAI5kB,EAAI,KAElC,IAGIu6B,EACAC,EACAtd,EALAud,EAAmBQ,IAAaX,EAAW,GAAKD,EAAQD,GACxDd,EAAMgB,EAAU36B,OAChBw0B,EAAK,GAIT,IAASn0B,EAAI,EAAGA,EAAIs5B,EAAM,EAAGt5B,IAC3Bu6B,EAAME,EAAqB,EAAJz6B,GACvBw6B,EAAMC,EAAqB,EAAJz6B,EAAQ,GAC/Bkd,EAAIod,EAAUt6B,EAAI,GAClBm0B,EAAG90B,KAAK,CAAC,IAAKk7B,EAAI,GAAIA,EAAI,GAAIC,EAAI,GAAIA,EAAI,GAAItd,EAAE,GAAIA,EAAE,KAQxD,OANImd,IACFE,EAAME,EAAiBnB,GACvBkB,EAAMC,EAAiBnB,EAAM,GAC7Bpc,EAAIod,EAAU,GACdnG,EAAG90B,KAAK,CAAC,IAAKk7B,EAAI,GAAIA,EAAI,GAAIC,EAAI,GAAIA,EAAI,GAAItd,EAAE,GAAIA,EAAE,MAEjDiX,CACT,CAKO,SAAS,IAAY3U,EAAQi+a,GAClC,OA/MF,SAAsBj+a,EAAQi+a,GAC5B,IAAI93b,EAAO,GACX,GAAI6Z,EAAO7f,OAAQ,CACjBgG,EAAKtG,KAAK,CAAC,IAAKmgB,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,IACvC,IAAK,IAAIhK,EAAI,EAAGK,EAAWmf,EAAO7f,OAAQK,EAAIK,EAAUL,GAAK,EAAG,CAC9D,IAAIuW,EAAOiJ,EAAOxf,GAClB2F,EAAKtG,KAAK,CAAC,IAAKkX,EAAKxM,EAAGwM,EAAKvM,GAC/B,CACIyzb,GACF93b,EAAKtG,KAAK,CAAC,KAEf,CACA,OAAOsG,CACT,CAkMS+3b,CAAal+a,EAAQi+a,EAC9B,CAKO,SAASE,IAAcn+a,EAAQi+a,EAAYG,GAChD,IAAIp5a,EAAO,GACP6W,EAAQ7b,EAAO,GACfhB,EAAW,KACf,GAAIgB,EAAO7f,QAAU,EAEnB,OAAO,IAAY6f,EAAQi+a,GAE7B,IAAK,IAAIz9b,EAAI,EAAGs5B,EAAM9Z,EAAO7f,OAAQK,EAAIs5B,EAAKt5B,IAAK,CACjD,IAAI8J,EAAQ0V,EAAOxf,GACdwe,GAAcA,EAASzU,IAAMD,EAAMC,GAAKyU,EAASxU,IAAMF,EAAME,IAChEwa,EAAKnlB,KAAKyK,EAAMC,GAChBya,EAAKnlB,KAAKyK,EAAME,GAChBwU,EAAW1U,EAEf,CACA,IAGI+zb,EAAaL,IAAkBh5a,EAAMi5a,EAHxBG,GAAa,CAE9B,CAAC,EAAG,GAAI,CAAC,EAAG,KAGZ,OADAC,EAAWppb,QAAQ,CAAC,IAAK4mB,EAAMtxB,EAAGsxB,EAAMrxB,IACjC6zb,CACT,CA8BO,SAASC,IAAiB/rF,EAAOpsW,GACtC,IACIqiJ,EACAC,EACA81S,EAHA39Z,EAAM,GAoCV,OA/BA,UAAKz6B,GAAM,SAAUq4b,EAASl3b,GAE5B,OADak3b,EAAQ,GACNtgb,eACb,IAAK,IACL,IAAK,IACL,IAAK,IACH0iB,EAAI/gC,KAAKi+b,IAAYU,EAASjsF,IAC9B,MACF,IAAK,IACH/pN,EAAMriJ,EAAKmB,EAAQ,GACnBmhJ,EAAM+1S,EACND,EAAahsF,EAAMu4D,cAEVyzB,EAAa/1S,EAAIA,EAAIroJ,OAAS,KAAOsoJ,EAAI,GAAKD,EAAIA,EAAIroJ,OAAS,KAAOsoJ,EAAI,IAEjF7nH,EAAMA,EAAI/tB,OAzPpB,SAA2B21I,EAAKC,EAAK8pN,GACnC,IAAIu4D,EAAev4D,EAAMu4D,aACvBzpZ,EAAakxV,EAAMlxV,WACnBC,EAAWixV,EAAMjxV,SACftC,EAAoC,MAAzBwpI,EAAI,GAAGtqI,cAAwB,CAC5C3T,EAAGi+I,EAAI,GACPh+I,EAAGg+I,EAAI,IACL,CACFj+I,EAAGi+I,EAAI,GACPh+I,EAAGg+I,EAAI,IAELi2S,EAAW,CACbl0b,EAAGk+I,EAAI,GACPj+I,EAAGi+I,EAAI,IAEL71I,EAAM,GACNmlB,EAAO+yY,EAAe,IAAM,IAC5B4zB,EAAanlb,KAAKoG,IAAI8+a,EAAS1ma,GAAQ/Y,EAAS+Y,KAAUzW,EAAWD,GACrE+Y,EAAYqka,EAAS1ma,IAAS/Y,EAAS+Y,GAAQ,EAAI,EACnDojM,EAAOujO,EAAanlb,KAAK+B,GAAK,EAAI,EAClC+vZ,EAAe94D,EAAMp0J,QAAQsgP,GAC7Bjgb,EAAIo6a,IAAoBrmF,EAAO84D,GACnC,GAAI7sZ,GAAK,GAEP,GAAIkgb,IAAyB,EAAVnlb,KAAK+B,GAAQ,CAC9B,IAAIo7Z,EAAc,CAChBnsa,GAAIk0b,EAASl0b,EAAIyU,EAASzU,GAAK,EAC/BC,GAAIi0b,EAASj0b,EAAIwU,EAASxU,GAAK,GAE7Bm0b,EAAqBpsF,EAAMp0J,QAAQu4N,GACvC9ja,EAAI/S,KAAK,CAAC,IAAK2e,EAAGA,EAAG,EAAG28M,EAAM/gM,EAAWuka,EAAmBp0b,EAAGo0b,EAAmBn0b,IAClFoI,EAAI/S,KAAK,CAAC,IAAK2e,EAAGA,EAAG,EAAG28M,EAAM/gM,EAAWixY,EAAa9ga,EAAG8ga,EAAa7ga,GACxE,MACEoI,EAAI/S,KAAK,CAAC,IAAK2e,EAAGA,EAAG,EAAG28M,EAAM/gM,EAAWixY,EAAa9ga,EAAG8ga,EAAa7ga,IAG1E,OAAOoI,CACT,CAoN2Bgsb,CAAkBp2S,EAAKC,EAAK8pN,IAG7C3xU,EAAI/gC,KAAKi+b,IAAYU,EAASjsF,IAEhC,MACF,IAAK,IACH3xU,EAAI/gC,KAAKk+b,IAAgBS,EAASjsF,IAClC,MAEF,QACE3xU,EAAI/gC,KAAK2+b,GAGf,IAhOF,SAA8Br4b,IAC5B,UAAKA,GAAM,SAAUq4b,EAASl3b,GAE5B,GAA6B,MADnBk3b,EACF,GAAGtgb,cAAuB,CAChC,IAAIsqI,EAAMriJ,EAAKmB,EAAQ,GACnButB,EAAO1uB,EAAKmB,EAAQ,GACpButB,GAAkC,MAA1BA,EAAK,GAAG3W,cACdsqI,GAAgC,MAAzBA,EAAI,GAAGtqI,gBAChBsqI,EAAI,GAAK,KAEFA,GAAgC,MAAzBA,EAAI,GAAGtqI,eACnB2W,GAAkC,MAA1BA,EAAK,GAAG3W,gBAClB2W,EAAK,GAAK,IAGhB,CACF,GACF,CAgNEgqa,CAAqBj+Z,GACdA,CACT,CC7SA,SAASk+Z,IAAYrsa,EAAS4L,GAG5B,OAAO0ga,IAFKtsa,EAAQpoB,MACErC,OACeq2B,EACvC,CAIA,SAAS2ga,IAAgBC,EAAW5ga,GAClC,IAAI6ga,EAAWD,EAAU/ub,gBACrB7C,EAAQ6xb,EAAS7xb,MACnBC,EAAS4xb,EAAS5xb,OACpB,OAAOD,EAAQ,GAAKC,EAAS,IAAMD,GAASgxB,GAAa/wB,GAAU+wB,EACrE,CAOA,SAAS0ga,IAAmBE,EAAW5ga,GACrC,IAAI6ga,EAAWD,EAAU/ub,gBACzB,OAAO8ub,IAAgBC,EAAW5ga,GAAa6ga,EAAW,IAC5D,CAOA,SAASC,IAAqB1sa,EAAS4L,GAErC,OADiB5L,EAAQpoB,MAAM+0b,WACb9ua,KAAI,SAAU2ua,GAC9B,OAAOF,IAAmBE,EAAW5ga,EACvC,IAAGxuB,QAAO,SAAUwvb,GAClB,QAASA,CACX,GACF,CAYA,SAASC,IAAuBL,EAAW5ga,GACzC,OAAO2ga,IAAgBC,EAAW5ga,GAAa4ga,EAAUv5b,KAAK,QAAU,IAC1E,CAkBO,SAAS65b,IAAkB9sa,GAChC,IACIxjB,EACAjH,EAFQyqB,EAAQpoB,MAEDrC,OAInB,OAHIA,IACFiH,EAAUjH,EAAO1G,IAAI,YAEhB2N,CACT,CAMO,SAASuwb,IAAoB/sa,GAClC,IAEI9a,EADA3P,EADQyqB,EAAQpoB,MACDrC,OAKnB,OAHIA,IACF2P,EAAiB3P,EAAO1G,IAAI,mBAEvBqW,CACT,CACO,SAAS8nb,IAAgBhta,GAC9B,IAAIpoB,EAAQooB,EAAQpoB,MAAMq1b,OAE1B,QAAIr1b,GAASA,EAAM3B,WAAa2B,EAAM1B,SAAW0B,EAAM3B,UAAUpH,IAAI,aAAe+I,EAAM1B,QAAQrH,IAAI,WAIxG,CAMO,SAASqqI,IAAOh0H,GACrB,OAAOA,GAAkBA,EAAemnD,WAAannD,EAAemnD,UAAU6sE,QAChF,CAMO,SAASgkS,IAASh4Z,GACvB,OAAOA,GAAkBA,EAAemnD,WAAannD,EAAemnD,UAAU6wW,UAChF,CAMO,SAASgwB,IAAOlta,GACrB,IACIzqB,EADQyqB,EAAQpoB,MACDrC,OACnB,OAAOA,GAAmF,UAAxEA,aAAuC,EAASA,EAAO1G,IAAI,UAAuBs+b,IAAenta,EACrH,CAMO,SAASmta,IAAenta,GAC7B,IAAIhyB,EACJ,MAA6F,gBAArD,QAA/BA,EAAKgyB,EAAQpoB,MAAMrC,cAA2B,IAAPvH,OAAgB,EAASA,EAAGa,IAAI,QAClF,CAMO,SAASu+b,IAAkBpta,EAAS4L,GACzC,IAAIr2B,EAASyqB,EAAQpoB,MAAMrC,OAE3B,GAAI43b,IAAenta,GACjB,OAsBJ,SAAgCA,EAAS4L,GACvC,IAAIr2B,EAASyqB,EAAQpoB,MAAMrC,OAC3B,GAA2B,SAAvBA,EAAO1G,IAAI,QAAoB,CACjC,IAAIw+b,EA/GR,SAA8Brta,EAAS4L,GAErC,OADiB5L,EAAQpoB,MAAM+0b,WACb9ua,KAAI,SAAU2ua,GAC9B,OAAOK,IAAuBL,EAAW5ga,EAC3C,GACF,CA0GuB0ha,CAAqBtta,EAAS4L,GACjD,OAAIyha,EAAa3/b,OAAS,EACjB2/b,EAAavxE,SAAQ,SAAUyxE,GACpC,OAAOC,IAAkBxta,EAAQi/O,KAAMsuL,EACzC,IAEK,IACT,CACA,IAAIE,EAAef,IAAqB1sa,EAAS4L,GACjD,GAAI6ha,EAAa//b,OAAS,EACxB,OAAO+/b,EAAa3xE,SAAQ,SAAU2wE,GACpC,OAAOiB,IAAqB1ta,EAAQi/O,KAAMwtL,EAC5C,IAEF,OAAO,IACT,CAxCWkB,CAAuB3ta,EAAS4L,GAGzC,GAA2B,SAAvBr2B,EAAO1G,IAAI,QAAoB,CACjC,IAAI0+b,EA9GR,SAAqBvta,EAAS4L,GAG5B,OAAOiha,IAFK7sa,EAAQpoB,MACErC,OACmBq2B,EAC3C,CA0GmBgia,CAAY5ta,EAAS4L,GACpC,IAAK2ha,EACH,OAEF,OAAOC,IAAkBxta,EAAQi/O,KAAMsuL,EACzC,CACA,IAAId,EAAWJ,IAAYrsa,EAAS4L,GAEpC,OAAK6ga,EAGEiB,IAAqB1ta,EAAQi/O,KAAMwtL,GAFjC,IAGX,CA4BO,SAASoB,IAAuB7ta,EAAS0kK,EAAS94J,GAEvD,GAAIuha,IAAenta,GACjB,OA0CJ,SAAuCA,EAAS0kK,EAAS94J,GACvD,IAAI6ha,EAAef,IAAqB1sa,EAAS4L,GACjD,GAAI6ha,EAAa//b,OAAS,EACxB,OAAO+/b,EAAa3xE,SAAQ,SAAU2wE,GACpC,OAAOqB,IAA6BrB,EAAUzsa,EAAS0kK,EACzD,IAEF,OAAO,IACT,CAlDWqpQ,CAA8B/ta,EAAS0kK,EAAS94J,GAGzD,IAAI6ga,EAAWJ,IAAYrsa,EAAS4L,GAEpC,OAAK6ga,EAGEqB,IAA6BrB,EAAUzsa,EAAS0kK,GAF9C,IAGX,CAQA,SAASopQ,IAA6BrB,EAAUzsa,EAAS0kK,GACvD,IAAIu6E,EAAOj/O,EAAQi/O,KACf1rP,EAAQy6a,IAAgB/uL,EAAMv6E,EAAS,CACzC5sL,EAAG20b,EAAS30b,EACZC,EAAG00b,EAAS10b,IAEV2jB,EAAMsya,IAAgB/uL,EAAMv6E,EAAS,CACvC5sL,EAAG20b,EAASzvb,KACZjF,EAAG00b,EAASvvb,OAQd,OAAOwwb,IAAqBhpQ,EANlB,CACR3nL,KAAMwW,EAAMzb,EACZmF,KAAMsW,EAAMxb,EACZiF,KAAM0e,EAAI5jB,EACVoF,KAAMwe,EAAI3jB,GAGd,CAsBO,SAASk2b,IAAYhvL,GAC1B,IAAIhzD,EAAagzD,EAAKhzD,WAClB9rM,EAAM,GAUV,OATA,UAAK8rM,GAAY,SAAUoB,GACzB,IAAI7/K,EAAW6/K,EAAK7/K,SACpBrtB,EAAMA,EAAIC,OAAOotB,EACnB,IACIyxO,EAAKoD,OAASpD,EAAKoD,MAAM30Q,SAC3B,UAAKuxQ,EAAKoD,OAAO,SAAU6rL,GACzB/tb,EAAMA,EAAIC,OAAO6tb,IAAYC,GAC/B,IAEK/tb,CACT,CAoBO,SAASgub,IAAmBlvL,EAAMmvL,GACvC,IAAIniP,EAAagzD,EAAKhzD,WAClB9rM,EAAM,GAOV,OANA,UAAK8rM,GAAY,SAAUoB,GACzB,IAAI7/K,EAAW6/K,EAAKghP,eAAc,SAAUh3b,GAC1C,OAAOA,EAAGgya,SAAS+kB,EACrB,IACAjub,EAAMA,EAAIC,OAAOotB,EACnB,IACOrtB,CACT,CAOO,SAASmub,IAAgB9xb,EAASkwH,GACvC,IACIrrE,EADQ7kD,EAAQ+xb,WACDh8a,KAOnB,OALI,UAAQ8uC,GACFA,EAAO,GAAGqrE,GAEVrrE,EAAOqrE,EAGnB,CAgBO,SAASghU,IAAqBzuL,EAAM7wP,GACzC,IAAIof,EAAWyga,IAAYhvL,GACvB9+P,EAAM,GAQV,OAPA,UAAKqtB,GAAU,SAAUn2B,GACvB,IAb0By1B,EAAMC,EAc5Byha,EADQn3b,EAAG/E,MACOmL,gBAdIqvB,EAeR1e,GAfc2e,EAeTyha,GAdXzxb,KAAO+vB,EAAK9vB,MAAQ+vB,EAAK/vB,KAAO8vB,EAAK/vB,MAAQgwB,EAAK9vB,KAAO6vB,EAAK5vB,MAAQ6vB,EAAK7vB,KAAO4vB,EAAK7vB,MAejGkD,EAAI/S,KAAKiK,EAEb,IACO8I,CACT,CACA,SAASsub,IAAa/6b,GACpB,IAAI6Z,EAAS,GAYb,OAXA,UAAK7Z,GAAM,SAAUokB,GAEnB,GAAgB,MADFA,EAAI,GAEhB,IAAK,IAAI/pB,EAAI,EAAGA,EAAI+pB,EAAIpqB,OAAQK,GAAQ,EACtCwf,EAAOngB,KAAK,CAAC0qB,EAAI/pB,GAAI+pB,EAAI/pB,EAAI,SAE1B,CACL,IAAIK,EAAW0pB,EAAIpqB,OACnB6f,EAAOngB,KAAK,CAAC0qB,EAAI1pB,EAAW,GAAI0pB,EAAI1pB,EAAW,IACjD,CACF,IACOmf,CACT,CAOO,SAASigb,IAAkBvuL,EAAMvrQ,GACtC,IAAI85B,EAAWyga,IAAYhvL,GACvB1xP,EAASkhb,IAAa/6b,GACtByM,EAAMqtB,EAASpwB,QAAO,SAAU/F,GAClC,IACIq3b,EVrEiB/yb,EUoEjBrJ,EAAQ+E,EAAG/E,MAEf,GAA0B,SAAtBA,EAAMzD,IAAI,QACZ6/b,EAAcD,IAAan8b,EAAMW,KAAK,aACjC,CACL,IAAIu7b,EAAYl8b,EAAMmL,gBACtBixb,EVzEG,CAAC,EADe/yb,EU0EI6yb,GVzEbzxb,KAAMpB,EAAKsB,MAAO,CAACtB,EAAKqB,KAAMrB,EAAKsB,MAAO,CAACtB,EAAKqB,KAAMrB,EAAKuB,MAAO,CAACvB,EAAKoB,KAAMpB,EAAKuB,MU0E/F,CACA,OAAO,UAAoBqQ,EAAQmhb,EACrC,IACA,OAAOvub,CACT,CAMO,SAASwub,IAAc1vL,GAC5B,OAAOA,EAAK0vL,gBAAgB9wa,KAAI,SAAU+wa,GACxC,OAAOA,EAAGviY,SACZ,GACF,CAEO,SAAS,IAAS/zC,EAAIhC,GAC3B,IAAI7c,EAAK6c,EAAGxe,EAAIwgB,EAAGxgB,EACf4B,EAAK4c,EAAGve,EAAIugB,EAAGvgB,EACnB,OAAO+O,KAAK2C,KAAKhQ,EAAKA,EAAKC,EAAKA,EAClC,CAsBO,SAASm1b,IAAQzgb,EAAKvW,GAC3B,OAAOuW,EAAItW,GAAKD,EAAMC,GAAKsW,EAAIpR,MAAQnF,EAAMC,GAAKsW,EAAIrW,GAAKF,EAAME,GAAKqW,EAAIlR,KAAOrF,EAAME,CACzF,CAOO,SAAS+2b,IAAY7vL,GAC1B,IAAIxgQ,EAASwgQ,EAAKxgQ,OACdwrR,EAAW,KAMf,OALIxrR,IACFwrR,EAAWxrR,EAAO4jQ,MAAMjlQ,QAAO,SAAU8qB,GACvC,OAAOA,IAAQ+2O,CACjB,KAEKgrB,CACT,CAYO,SAAS+jK,IAAgB/uL,EAAMv6E,EAAS7sL,GAC7C,IAAIk3b,EAZN,SAAyB9vL,EAAMpnQ,GAE7B,OADYonQ,EAAK+vL,gBACJ79a,OAAOtZ,EACtB,CASoBo3b,CAAgBhwL,EAAMpnQ,GACxC,OAAO6sL,EAAQsqQ,gBAAgBtjP,QAAQqjP,EACzC,CAaO,SAASG,IAAY5wT,EAASj9E,EAAQ8tY,EAAQrpC,GACnD,IAAI94X,GAAO,EAOX,OANA,UAAKsxG,GAAS,SAAUvyH,GACtB,GAAIA,EAAEojb,KAAY9tY,EAAO8tY,IAAWpjb,EAAE+5Y,KAAYzkW,EAAOykW,GAEvD,OADA94X,GAAO,GACA,CAEX,IACOA,CACT,CAEO,SAASoia,IAAgBnwL,EAAMvyI,GACpC,IAAI/mH,EAAQs5P,EAAKmwL,gBAAgB1iU,GAUjC,OATK/mH,GAASs5P,EAAKoD,QACjB,UAAKpD,EAAKoD,OAAO,SAAU6rL,GAEzB,GADAvob,EAAQypb,IAAgBlB,EAASxhU,GAE/B,OAAO,CAEX,IAGK/mH,CACT,CC/dA,IAAI,IAAuB,WACzB,SAAS26C,EAAQ2+M,GAEfpyQ,KAAKu6B,QAAU,GAEfv6B,KAAK+K,MAAQ,KACb/K,KAAKi6Z,SAAW,CAAC,EACjBj6Z,KAAKoyQ,KAAOA,CACd,CA4HA,OArHA3+M,EAAQvzD,UAAU4e,MAAQ,WAExB,IADA,IAAIwC,EAAS,GACJ3gB,EAAK,EAAGA,EAAKC,UAAUC,OAAQF,IACtC2gB,EAAO3gB,GAAMC,UAAUD,GAEzB,GAAsB,IAAlB2gB,EAAOzgB,OACT,OAAOb,KAAKi6Z,SAAS34Y,EAAO,IACD,IAAlBA,EAAOzgB,SAChBb,KAAKi6Z,SAAS34Y,EAAO,IAAMA,EAAO,GAEtC,EAKAmyC,EAAQvzD,UAAUsic,UAAY,SAAUvgc,GACtC,OAAOjC,KAAKu6B,QAAQ/mB,MAAK,SAAUinB,GACjC,OAAOA,EAAOx4B,OAASA,CACzB,GACF,EAKAwxD,EAAQvzD,UAAU09b,UAAY,SAAUnja,GACtCz6B,KAAKu6B,QAAQh6B,KAAKk6B,EACpB,EAKAg5B,EAAQvzD,UAAU49b,aAAe,SAAUrja,GACzC,IAAIF,EAAUv6B,KAAKu6B,QACfvyB,EAAQhI,KAAKu6B,QAAQrnB,QAAQunB,GAC7BzyB,GAAS,GACXuyB,EAAQn5B,OAAO4G,EAAO,EAE1B,EAIAyrD,EAAQvzD,UAAUuic,gBAAkB,WAClC,IAAI13b,EAAQ/K,KAAK+K,MACjB,OAAIA,EACEA,EAAMrC,kBAAkBkgQ,YACb5oQ,KAAKoyQ,KAAKrgQ,YACJrD,iBAAiB3D,EAAMI,QAASJ,EAAMK,SAGlD,CACLH,EAAGF,EAAME,EACTC,EAAGH,EAAMG,GAIR,IACT,EAKAuoD,EAAQvzD,UAAUwic,gBAAkB,WAClC,OAAO,UAAI1ic,KAAK+K,MAAO,CAAC,SAAU,SACpC,EAIA0oD,EAAQvzD,UAAUyic,SAAW,WAC3B,IAAI33b,EAAQhL,KAAKyic,kBACjB,QAAIz3b,GACKhL,KAAKoyQ,KAAKwwL,cAAc53b,EAGnC,EAKAyoD,EAAQvzD,UAAU0a,UAAY,SAAU3Y,GACtC,IAAIwD,EAAQzF,KAAK0ic,kBACjB,QAAIj9b,GACKA,EAAMzD,IAAI,UAAYC,CAGjC,EAKAwxD,EAAQvzD,UAAU2ic,cAAgB,SAAU5gc,GAC1C,IAAI4oH,EAAai3U,IAAc9hc,KAAKoyQ,MAChCpnQ,EAAQhL,KAAKyic,kBACjB,QAAIz3b,KACO6/G,EAAWr3G,MAAK,SAAUgsD,GACjC,IAAI1wD,EAAO0wD,EAAUvvD,UACrB,OAAIhO,EACKu9D,EAAUx9D,IAAI,UAAYC,GAAQ+/b,IAAQlzb,EAAM9D,GAEhDg3b,IAAQlzb,EAAM9D,EAEzB,GAGJ,EAIAyoD,EAAQvzD,UAAUkC,QAAU,YAE1B,UAAKpC,KAAKu6B,QAAQvT,SAAS,SAAUyT,GACnCA,EAAOr4B,SACT,IACApC,KAAKoyQ,KAAO,KACZpyQ,KAAK+K,MAAQ,KACb/K,KAAKu6B,QAAU,KACfv6B,KAAKi6Z,SAAW,IAClB,EACOxmW,CACT,CArI2B,GAsI3B,QCxIIqvY,IAA2B,WAC7B,SAASA,EAAY1wL,EAAMzwQ,GACzB3B,KAAKoyQ,KAAOA,EACZpyQ,KAAK2B,IAAMA,CACb,CAqBA,OAjBAmhc,EAAY5ic,UAAUoK,KAAO,WAC3BtK,KAAKuN,YACP,EAIAu1b,EAAY5ic,UAAUqN,WAAa,WAAa,EAIhDu1b,EAAY5ic,UAAUoP,YAAc,WAAa,EAIjDwzb,EAAY5ic,UAAUkC,QAAU,WAC9BpC,KAAKsP,aACP,EACOwzb,CACT,CA1B+B,GCGxB,SAASC,IAAYC,EAAW7va,EAASqpB,GAC9C,IAAI/lC,EAAMusb,EAAU15a,MAAM,KACtB60a,EAAa1nb,EAAI,GAEjBgkB,EAAStH,EAAQqva,UAAUrE,ILA1B,SAAsBA,EAAYhra,GACvC,IAAIira,EAAeH,IAAYE,GAC3B1ja,EAAS,KAQb,OAPI2ja,KAGF3ja,EAAS,IAAI6ja,EAFKF,EAAaE,aAENnra,EADjBira,EAAaz8b,MAEdM,KAAOk8b,EACd1ja,EAAOnwB,QAEFmwB,CACT,CKXgDwoa,CAAa9E,EAAYhra,GACvE,IAAKsH,EACH,MAAM,IAAIwN,MAAM,4BAA4B10B,OAAO4qb,IAGrD,MAAO,CACL1ja,OAAQA,EACR26B,WAHe3+C,EAAI,GAInB+lC,IAAKA,EAET,CAEA,SAAS0mZ,IAAcC,GACrB,IAAI1oa,EAAS0oa,EAAa1oa,OACxB26B,EAAa+tY,EAAa/tY,WAC1B5Y,EAAM2mZ,EAAa3mZ,IACrB,IAAI/hB,EAAO26B,GAGT,MAAM,IAAIntB,MAAM,UAAU10B,OAAOknB,EAAOx4B,KAAM,mCAAmCsR,OAAO6hD,IAFxF36B,EAAO26B,GAAY5Y,EAIvB,CACA,IAAI4mZ,IACK,QADLA,IAEW,aAFXA,IAGG,MAHHA,IAIQ,WAJRA,IAKU,aAKVC,IAAkC,SAAU3hc,GAE9C,SAAS2hc,EAAmBjxL,EAAMpuL,GAChC,IAAIvjF,EAAQiB,EAAOE,KAAK5B,KAAMoyQ,EAAMpuL,IAAUhkF,KAK9C,OAJAS,EAAM6ic,eAAiB,CAAC,EAExB7ic,EAAM8ic,WAAa,CAAC,EACpB9ic,EAAMujF,MAAQA,EACPvjF,CACT,CA6NA,OArOA,UAAU4ic,EAAoB3hc,GAY9B2hc,EAAmBnjc,UAAUoK,KAAO,WAClCtK,KAAKwjc,cACL9hc,EAAOxB,UAAUoK,KAAK1I,KAAK5B,KAC7B,EAIAqjc,EAAmBnjc,UAAUkC,QAAU,WACrCV,EAAOxB,UAAUkC,QAAQR,KAAK5B,MAC9BA,KAAKgkF,MAAQ,KACThkF,KAAKmzB,UACPnzB,KAAKmzB,QAAQ/wB,UACbpC,KAAKmzB,QAAU,MAEjBnzB,KAAKsjc,eAAiB,KACtBtjc,KAAKoyQ,KAAO,IACd,EAIAixL,EAAmBnjc,UAAUqN,WAAa,WACxC,IAAI9M,EAAQT,MACZ,UAAKA,KAAKgkF,OAAO,SAAUy/W,EAASC,IAClC,UAAKD,GAAS,SAAUh8Y,GACtB,IAAIpnD,EAAWI,EAAMkjc,kBAAkBD,EAAUj8Y,GAC7CpnD,GAEFI,EAAMmjc,UAAUn8Y,EAAKkhD,QAAStoG,EAElC,GACF,GACF,EAIAgjc,EAAmBnjc,UAAUoP,YAAc,WACzC,IAAI7O,EAAQT,MACZ,UAAKA,KAAKgkF,OAAO,SAAUy/W,EAASC,IAClC,UAAKD,GAAS,SAAUh8Y,GACtB,IAAIpnD,EAAWI,EAAMkjc,kBAAkBD,EAAUj8Y,GAC7CpnD,GACFI,EAAMojc,SAASp8Y,EAAKkhD,QAAStoG,EAEjC,GACF,GACF,EAEAgjc,EAAmBnjc,UAAUsjc,YAAc,WACzC,IAAIpxL,EAAOpyQ,KAAKoyQ,KACZj/O,EAAU,IAAI,IAAmBi/O,GACrCpyQ,KAAKmzB,QAAUA,EACf,IAAI6wD,EAAQhkF,KAAKgkF,OAEjB,UAAKA,GAAO,SAAU8/W,IACpB,UAAKA,GAAU,SAAUr8Y,GACvB,IAAI,UAAWA,EAAKhtB,QAElBgtB,EAAK07Y,aAAe,CAClB1oa,OAAQ8ja,IAAqB92Y,EAAKhtB,OAAQtH,GAC1CiiC,WAAY,gBAET,IAAI,UAAS3N,EAAKhtB,QAEvBgtB,EAAK07Y,aAAeJ,IAAYt7Y,EAAKhtB,OAAQtH,EAASs0B,EAAKjL,UACtD,IAAI,UAAQiL,EAAKhtB,QAAS,CAE/B,IAAIspa,EAAYt8Y,EAAKhtB,OACjBupa,GAAW,UAAQv8Y,EAAKjL,KAAOiL,EAAKjL,IAAM,CAACiL,EAAKjL,KACpDiL,EAAK07Y,aAAe,IACpB,UAAKY,GAAW,SAAUf,EAAW99Z,GACnCuiB,EAAK07Y,aAAa5ic,KAAKwic,IAAYC,EAAW7va,EAAS6wa,EAAS9+Z,IAClE,GACF,CAEF,GACF,GACF,EAEAm+Z,EAAmBnjc,UAAU+jc,YAAc,SAAUP,GACnD,IAAIQ,EAAkBlkc,KAAKkkc,gBACvBlgX,EAAQhkF,KAAKgkF,MAEjB,GAAIkgX,IAAoBR,EACtB,OAAO,EAET,GAAIA,IAAaN,IAEf,OAAO,EAET,GAAIM,IAAaN,IAEf,OAAOc,IAAoBd,IAE7B,GAAIM,IAAaN,IAEf,OAAOc,IAAoBd,IAE7B,GAAIM,IAAaN,IACf,OAAOc,IAAoBd,KAAyBc,IAAoBd,IAE1E,GAAIM,IAAaN,IAAqB,CACpC,GAAIp/W,EAAMo/W,KAER,OAAOc,IAAoBd,IACtB,GAAIc,IAAoBd,IAE7B,OAAO,CAEX,CACA,OAAO,CACT,EAEAC,EAAmBnjc,UAAUikc,eAAiB,SAAUT,EAAUj8Y,GAChE,GAAIznD,KAAKikc,YAAYP,GAAW,CAC9B,IAAI7ia,EAAM7gC,KAAK6tI,OAAO61T,EAAUj8Y,GAEhC,QAAIA,EAAKnnD,OAAQN,KAAKujc,WAAW1ia,OAI7B4mB,EAAK28Y,UACA38Y,EAAK28Y,SAASpkc,KAAKmzB,SAG9B,CAEA,OAAO,CACT,EACAkwa,EAAmBnjc,UAAUmkc,UAAY,SAAUX,GACjD1jc,KAAKkkc,gBAAkBR,EACvB1jc,KAAKujc,WAAa,CAAC,CACrB,EAEAF,EAAmBnjc,UAAUokc,aAAe,SAAUZ,EAAUj8Y,GAE1Di8Y,IAAaN,KAA0Bpjc,KAAKkkc,kBAAoBR,GAClE1jc,KAAKqkc,UAAUX,GAEjB,IAAI7ia,EAAM7gC,KAAK6tI,OAAO61T,EAAUj8Y,GAEhCznD,KAAKujc,WAAW1ia,IAAO,CACzB,EAEAwia,EAAmBnjc,UAAU2tI,OAAS,SAAU61T,EAAUj8Y,GACxD,OAAOi8Y,EAAWj8Y,EAAKkhD,QAAUlhD,EAAKhtB,MACxC,EAEA4oa,EAAmBnjc,UAAUyjc,kBAAoB,SAAUD,EAAUj8Y,GACnE,IAAIhnD,EAAQT,KACRmzB,EAAUnzB,KAAKmzB,QACfmwa,EAAiBtjc,KAAKsjc,eACtBH,EAAe17Y,EAAK07Y,aACxB,GAAI17Y,EAAKhtB,QAAU0oa,EAAc,CAC/B,IAAItia,EAAM7gC,KAAK6tI,OAAO61T,EAAUj8Y,GAChC,IAAK67Y,EAAezia,GAAM,CAExB,IAAI0ja,EAAiB,SAAwBx5b,GAC3CooB,EAAQpoB,MAAQA,EACZtK,EAAM0jc,eAAeT,EAAUj8Y,KAE7B,UAAQ07Y,IACV,UAAKA,GAAc,SAAUpva,GAC3BZ,EAAQpoB,MAAQA,EAChBm4b,IAAcnva,EAChB,KAEAZ,EAAQpoB,MAAQA,EAChBm4b,IAAcC,IAEhB1ic,EAAM6jc,aAAaZ,EAAUj8Y,GACzBA,EAAKpnD,WACP8yB,EAAQpoB,MAAQA,EAChB08C,EAAKpnD,SAAS8yB,KAIhBA,EAAQpoB,MAAQ,IAEpB,EAEI08C,EAAKihI,SACP46Q,EAAezia,IAAO,UAAS0ja,EAAgB98Y,EAAKihI,SAAS7kJ,KAAM4jB,EAAKihI,SAAS5kJ,WACxE2jB,EAAKyiC,SAEdo5W,EAAezia,IAAO,UAAS0ja,EAAgB98Y,EAAKyiC,SAASrmD,KAAM,CACjEwB,QAASoiB,EAAKyiC,SAAS7kD,QACvBG,SAAUiiB,EAAKyiC,SAAS1kD,WAI1B89Z,EAAezia,GAAO0ja,CAE1B,CACA,OAAOjB,EAAezia,EACxB,CACA,OAAO,IACT,EACAwia,EAAmBnjc,UAAU0jc,UAAY,SAAUn5b,EAAWpK,GAC5D,IAAImkc,EAAU/5b,EAAU6e,MAAM,KACX,WAAfk7a,EAAQ,GACVthc,OAAOwH,iBAAiB85b,EAAQ,GAAInkc,GACZ,aAAfmkc,EAAQ,GACjB75b,SAASD,iBAAiB85b,EAAQ,GAAInkc,GAEtCL,KAAKoyQ,KAAKjyQ,GAAGsK,EAAWpK,EAE5B,EACAgjc,EAAmBnjc,UAAU2jc,SAAW,SAAUp5b,EAAWpK,GAC3D,IAAImkc,EAAU/5b,EAAU6e,MAAM,KACX,WAAfk7a,EAAQ,GACVthc,OAAO2H,oBAAoB25b,EAAQ,GAAInkc,GACf,aAAfmkc,EAAQ,GACjB75b,SAASE,oBAAoB25b,EAAQ,GAAInkc,GAEzCL,KAAKoyQ,KAAK9wQ,IAAImJ,EAAWpK,EAE7B,EACOgjc,CACT,CAvOsC,CDZtC,KCoPA,QChRIoB,IAAe,CAAC,EAcb,SAASC,IAAoBzic,EAAM0ic,GACxCF,KAAa,UAAUxic,IAAS0ic,CAClC,CAOO,SAASC,IAAkB3ic,EAAMmwQ,EAAMzwQ,GAC5C,IAAIkjc,EAlBC,SAAwB5ic,GAC7B,OAAOwic,KAAa,UAAUxic,GAChC,CAgBoB6ic,CAAe7ic,GACjC,IAAK4ic,EACH,OAAO,KAET,IAAI,UAAcA,GAAc,CAE9B,IAAI7gX,GAAQ,WAAI,UAAM6gX,GAAcljc,GACpC,OAAO,IAAI,IAAmBywQ,EAAMpuL,EACtC,CAEE,OAAO,IADG6gX,EACKzyL,EAAMzwQ,EAEzB,CCwHO,SAASojc,IAAwBC,GACtC,IAAI7jc,EACA8jc,EAAc,CAChBj6b,MAAO,CACL28D,QAAS,CACP/rB,KAAMopZ,EAAWE,eACjBhmb,EAAG8lb,EAAWG,UACdhkb,OAAQ6jb,EAAWI,iBACnB3lb,UAAWulb,EAAWK,YACtBxhX,YAAamhX,EAAWM,kBAE1B/uU,OAAQ,CACNp1G,OAAQ6jb,EAAWO,uBACnB9lb,UAAWulb,EAAWQ,mBAExB1xR,SAAU,CACR3yJ,OAAQ6jb,EAAWS,yBACnBhmb,UAAWulb,EAAWU,qBAExBr+L,SAAU,CACRxjL,YAAamhX,EAAWW,yBACxBpsM,cAAeyrM,EAAWY,6BAG9BC,YAAa,CACXl+X,QAAS,CACP/rB,KAAMopZ,EAAWc,qBACjBrmb,UAAWulb,EAAWe,kBACtB5kb,OAAQ6jb,EAAWgB,uBACnBzsM,cAAeyrM,EAAWiB,yBAC1B/mb,EAAG8lb,EAAWkB,iBAEhB3vU,OAAQ,CACNp1G,OAAQ6jb,EAAWmB,6BACnB5sM,cAAeyrM,EAAWoB,gCAE5BtyR,SAAU,CACRr0J,UAAWulb,EAAWqB,0BACtBllb,OAAQ6jb,EAAWsB,+BACnB/sM,cAAeyrM,EAAWuB,kCAE5Bl/L,SAAU,CACR9N,cAAeyrM,EAAWwB,mCAG9B59Y,KAAM,CACJ+e,QAAS,CACP/rB,KAAMopZ,EAAWyB,cACjB5iX,YAAamhX,EAAW0B,gBACxBvlb,OAAQ,MAEVo1G,OAAQ,CACN1yC,YAAamhX,EAAW2B,uBAE1B7yR,SAAU,CACRjwF,YAAamhX,EAAW4B,yBAE1Bv/L,SAAU,CACRxjL,YAAamhX,EAAW6B,0BAG5BC,WAAY,CACVn/X,QAAS,CACP/rB,KAAM,KACNz6B,OAAQ6jb,EAAW+B,sBACnBtnb,UAAWulb,EAAWgC,iBACtBztM,cAAeyrM,EAAWiC,yBAE5B1wU,OAAQ,CACN36E,KAAM,KACNn8B,UAAWulb,EAAWkC,wBAExBpzR,SAAU,CACRl4H,KAAM,KACNn8B,UAAWulb,EAAWmC,0BAExB9/L,SAAU,CACR9N,cAAeyrM,EAAWoC,kCAG9B5kc,SAAU,CACRmlE,QAAS,CACP/rB,KAAMopZ,EAAWqC,kBACjBxjX,YAAamhX,EAAWsC,qBAE1B/wU,OAAQ,CACNp1G,OAAQ6jb,EAAWuC,0BACnB9nb,UAAWulb,EAAWwC,sBAExB1zR,SAAU,CACR3yJ,OAAQ6jb,EAAWyC,4BACnBhob,UAAWulb,EAAW0C,wBAExBrgM,SAAU,CACRxjL,YAAamhX,EAAW2C,4BACxBpuM,cAAeyrM,EAAW4C,gCAG9BC,eAAgB,CACdlgY,QAAS,CACP/rB,KAAMopZ,EAAW8C,wBACjB3mb,OAAQ6jb,EAAW+C,0BACnBtob,UAAWulb,EAAWgD,qBACtBzuM,cAAeyrM,EAAWiD,6BAE5B1xU,OAAQ,CACNp1G,OAAQ6jb,EAAWkD,gCACnBzob,UAAWulb,EAAWmD,2BACtB5uM,cAAeyrM,EAAWoD,mCAE5Bt0R,SAAU,CACR3yJ,OAAQ6jb,EAAWqD,kCACnB5ob,UAAWulb,EAAWsD,6BACtB/uM,cAAeyrM,EAAWuD,qCAE5BlhM,SAAU,CACRlmP,OAAQ6jb,EAAWwD,kCACnB/ob,UAAWulb,EAAWyD,6BACtBlvM,cAAeyrM,EAAW0D,sCAG9Bxya,KAAM,CACJyxC,QAAS,CACPxmD,OAAQ6jb,EAAW2D,gBACnBlpb,UAAWulb,EAAW4D,WACtBrvM,cAAeyrM,EAAW6D,kBAC1BjtZ,KAAM,KACNktZ,gBAAiB,GACjB9rM,QAAS,QACTE,SAAU,SAEZ3mI,OAAQ,CACN92G,UAAWulb,EAAW+D,kBAExBj1R,SAAU,CACRr0J,UAAWulb,EAAWgE,oBAExB3hM,SAAU,CACR9N,cAAeyrM,EAAWiE,6BAI5BC,EAnSN,SAA0BlE,GACxB,MAAO,CACLjzY,MAAO,CACLykX,YAAY,EACZrrX,SAAU,SACVuxS,QAASsoG,EAAWmE,iBACpBr9b,MAAO,CACL8vC,KAAMopZ,EAAWoE,uBACjBtob,SAAUkkb,EAAWqE,sBACrBtob,WAAYikb,EAAWsE,wBACvBpob,aAAc,SACduS,WAAYuxa,EAAWvxa,YAEzB0rD,UAAW,CACTvjC,KAAMopZ,EAAWuE,+BAGrB38Y,MAAO,CACL4pX,YAAY,EACZb,cAAc,EACdgG,SAAU,CACRhza,KAAM,eACNhH,IAAK,CACHq/a,OAAQ,IAGZ79V,OAAQ6hX,EAAWwE,gBACnB19b,MAAO,CACL8vC,KAAMopZ,EAAWyE,mBACjB3ob,SAAUkkb,EAAW0E,kBACrB3ob,WAAYikb,EAAW2E,oBACvBl2a,WAAYuxa,EAAWvxa,aAG3ByC,KAAM,CACJpqB,MAAO,CACL2T,UAAWulb,EAAW4E,eACtBzob,OAAQ6jb,EAAW6E,sBAGvBh9Q,KAAM,CACJ32J,KAAM,CACJvtB,KAAM,OACNmD,MAAO,CACLqV,OAAQ6jb,EAAW8E,oBACnBrqb,UAAWulb,EAAW+E,eACtBC,SAAUhF,EAAWiF,mBAGzBxuB,WAAW,EACX3ka,SAAS,GAEXqka,SAAU,CACRrva,MAAO,CACL2T,UAAWulb,EAAWkF,mBACtB/ob,OAAQ6jb,EAAWmF,yBAErB1uB,WAAW,EACX56a,OAAQmkc,EAAWoF,oBAErBhvB,YAAa,KACbtka,SAAS,EAEb,CAoOmBuzb,CAAiBrF,GAC9BsF,EA3NN,SAA4BtF,GAC1B,MAAO,CACLjzY,MAAO,KACP0pP,OAAQ,CACNhzQ,OAAQ,SACRi0T,QAASsoG,EAAWuF,oBACpBz+b,MAAO,CACLoT,EAAG8lb,EAAWwF,uBACd5uZ,KAAMopZ,EAAWyF,oBAGrBxjB,SAAU,CACRvqF,QAAS,EACT5wV,MAAO,CACL8vC,KAAMopZ,EAAW0F,wBACjBj3a,WAAYuxa,EAAWvxa,WACvB3S,SAAUkkb,EAAW2F,uBACrB5pb,WAAYikb,EAAW4F,yBACvBl3a,WAAYsxa,EAAW6F,yBACvB5pb,UAAW,QACXC,aAAc,WAGlBima,WAAY,CACV5wT,OAAQ,CACN+wT,UAAW,CACT3ya,QAAS,KAGb4ya,UAAW,CACTD,UAAW,CACT1rY,KAAM,WAER4rY,YAAa,CACX5rY,KAAM,UACNz6B,OAAQ,YAGZkmP,SAAU,CACRigL,UAAW,CACT1rY,KAAM,WAER4rY,YAAa,CACX7ya,QAAS,MAIfm2b,UAAU,EACVzjB,cAAe,CACb5rI,OAAQ,CACN3vS,MAAO,CACLw4B,KAAM0ga,EAAW+F,8BACjBhlB,aAAcif,EAAWgG,2CACzBhlB,gBAAiBgf,EAAWiG,6CAC5BrvZ,KAAMopZ,EAAWkG,mCACjBv2b,QAASqwb,EAAWmG,uCAGxBtqb,KAAM,CACJ/U,MAAO,CACL8vC,KAAMopZ,EAAWoG,iCACjBtqb,SAAUkkb,EAAWqG,mCAI3Bv0b,SAAS,EACTkwa,aAAc,IACdF,YAAake,EAAWsG,kBACxBvkB,iBAAkBie,EAAWuG,uBAC7BnxX,QAAS4qX,EAAWwG,cAExB,CAoJqBC,CAAmBzG,GACtC,MAAO,CACLz6X,WAAYy6X,EAAW12X,gBACvB22P,aAAc+/H,EAAW0G,WACzBC,SAAU3G,EAAW2G,SACrBC,YAAa5G,EAAW6G,mBACxBC,cAAe9G,EAAW+G,qBAC1B3xX,QAAS,OACT3mD,WAAYuxa,EAAWvxa,WAGvBonY,iBAAkB,GAElBF,eAAgB,KAEhBC,eAAgB,KAEhBoxC,eAAgB,SAEhBC,sBAAuB,EAAI,IAC3BC,SAAUlH,EAAWmH,qBACrBC,SAAUpH,EAAWqH,qBACrBC,eAAgBtH,EAAWuH,gBAC3BC,OAAQ,CACNxhc,MAAO,CAAC,gBAAiB,gBAAiB,gBAAiB,iBAAkB,iBAAkB,kBAAmB,uBAAwB,SAAU,SAAU,SAAU,UAAW,UAAW,WAAY,gBAAiB,QAAS,OAAQ,OAAQ,SAAU,QAC9PkrB,KAAM,CAAC,OAAQ,OAAQ,MAAO,UAC9B0yB,KAAM,CAAC,OAAQ,SAAU,OAAQ,eACjCpmD,SAAU,CAAC,OAAQ,cAAe,OAAQ,SAE5CupL,MAAO,CAAC,EAAG,IACXqzB,WAAY,CACV58M,SAAU,CACRge,KAAM,CACJmnD,QAAS,CACP77D,MAAOm5b,EAAYzic,SAASmlE,SAE9B4uD,OAAQ,CACNzqH,MAAOm5b,EAAYzic,SAAS+zH,QAE9B8wI,SAAU,CACRv7P,MAAOm5b,EAAYzic,SAAS6kQ,UAE9BvzF,SAAU,CACRhoK,MAAO,SAAe6D,GACpB,IAAIsuQ,EAAatuQ,EAAQ0vM,SAAS4+D,WAClC,GAAIA,EAAWotJ,SAAWptJ,EAAWutJ,aAAc,CACjD,IAAIrqa,EAAK83B,IAAStpB,EAAQ+xb,WAAYzjL,GAGlCwuL,GAFWtrc,EAAG4gB,WACL5gB,EAAG6gB,UAC4B,EAExC/W,EADI,IACIgP,KAAKkC,IAAIswb,GACjBvhc,EAFI,IAEI+O,KAAKoC,IAAIowb,GACrB,MAAO,CACLt7b,OAAQi7M,IAAA,GAAc,KAAM,CAAC,CAAC,IAAKnhN,EAAGC,KAE1C,CACA,OAAO+5b,EAAYzic,SAASsxK,QAC9B,IAGJ,cAAe,CACbnsG,QAAS,CACP77D,MAAOm5b,EAAY4C,eAAelgY,SAEpC4uD,OAAQ,CACNzqH,MAAOm5b,EAAY4C,eAAetxU,QAEpC8wI,SAAU,CACRv7P,MAAOm5b,EAAY4C,eAAexgM,UAEpCvzF,SAAU,CACRhoK,MAAOm5b,EAAY4C,eAAe/zR,WAGtC59I,KAAM,CACJyxC,QAAS,CACP77D,MAAOm5b,EAAY4C,eAAelgY,SAEpC4uD,OAAQ,CACNzqH,MAAOm5b,EAAY4C,eAAetxU,QAEpC8wI,SAAU,CACRv7P,MAAOm5b,EAAY4C,eAAexgM,UAEpCvzF,SAAU,CACRhoK,MAAOm5b,EAAY4C,eAAe/zR,WAGtCqgH,KAAM,CACJxsN,QAAS,CACP77D,MAAOm5b,EAAY4C,eAAelgY,SAEpC4uD,OAAQ,CACNzqH,MAAOm5b,EAAY4C,eAAetxU,QAEpC8wI,SAAU,CACRv7P,MAAOm5b,EAAY4C,eAAexgM,UAEpCvzF,SAAU,CACRhoK,MAAOm5b,EAAY4C,eAAe/zR,WAGtC44R,OAAQ,CACN/kY,QAAS,CACP77D,MAAOm5b,EAAYzic,SAASmlE,SAE9B4uD,OAAQ,CACNzqH,MAAOm5b,EAAYzic,SAAS+zH,QAE9B8wI,SAAU,CACRv7P,MAAOm5b,EAAYzic,SAAS6kQ,UAE9BvzF,SAAU,CACRhoK,MAAOm5b,EAAYzic,SAASsxK,WAGhC64R,QAAS,CACPhlY,QAAS,CACP77D,MAAOm5b,EAAYzic,SAASmlE,SAE9B4uD,OAAQ,CACNzqH,MAAOm5b,EAAYzic,SAAS+zH,QAE9B8wI,SAAU,CACRv7P,MAAOm5b,EAAYzic,SAAS6kQ,UAE9BvzF,SAAU,CACRhoK,MAAOm5b,EAAYzic,SAASsxK,YAIlC59I,KAAM,CACJA,KAAM,CACJyxC,QAAS,CACP77D,MAAOm5b,EAAY/ua,KAAKyxC,SAE1B4uD,OAAQ,CACNzqH,MAAOm5b,EAAY/ua,KAAKqgG,QAE1B8wI,SAAU,CACRv7P,MAAOm5b,EAAY/ua,KAAKmxO,UAE1BvzF,SAAU,CACRhoK,MAAOm5b,EAAY/ua,KAAK49I,WAG5BnyH,IAAK,CACHgmB,QAAS,CACP77D,OAAO,WAAS,UAAS,CAAC,EAAGm5b,EAAY/ua,KAAKyxC,SAAU,CACtDq1L,QAAS,KACTgtM,SAAU,CAAC,EAAG,MAGlBzzU,OAAQ,CACNzqH,OAAO,WAAS,UAAS,CAAC,EAAGm5b,EAAY/ua,KAAKqgG,QAAS,CACrDymI,QAAS,KACTgtM,SAAU,CAAC,EAAG,MAGlB3iM,SAAU,CACRv7P,OAAO,WAAS,UAAS,CAAC,EAAGm5b,EAAY/ua,KAAKmxO,UAAW,CACvDrK,QAAS,KACTgtM,SAAU,CAAC,EAAG,MAGlBl2R,SAAU,CACRhoK,OAAO,WAAS,UAAS,CAAC,EAAGm5b,EAAY/ua,KAAK49I,UAAW,CACvDkpF,QAAS,KACTgtM,SAAU,CAAC,EAAG,OAIpB4C,KAAM,CACJjlY,QAAS,CACP77D,OAAO,WAAS,UAAS,CAAC,EAAGm5b,EAAY/ua,KAAKyxC,SAAU,CACtDq1L,QAAS,KACTgtM,SAAU,CAAC,IAAK,MAGpBzzU,OAAQ,CACNzqH,OAAO,WAAS,UAAS,CAAC,EAAGm5b,EAAY/ua,KAAKqgG,QAAS,CACrDymI,QAAS,KACTgtM,SAAU,CAAC,IAAK,MAGpB3iM,SAAU,CACRv7P,OAAO,WAAS,UAAS,CAAC,EAAGm5b,EAAY/ua,KAAKmxO,UAAW,CACvDrK,QAAS,KACTgtM,SAAU,CAAC,IAAK,MAGpBl2R,SAAU,CACRhoK,OAAO,WAAS,UAAS,CAAC,EAAGm5b,EAAY/ua,KAAK49I,UAAW,CACvDkpF,QAAS,KACTgtM,SAAU,CAAC,IAAK,OAItBpua,OAAQ,CACN+rC,QAAS,CACP77D,MAAOm5b,EAAY/ua,KAAKyxC,SAE1B4uD,OAAQ,CACNzqH,MAAOm5b,EAAY/ua,KAAKqgG,QAE1B8wI,SAAU,CACRv7P,MAAOm5b,EAAY/ua,KAAKmxO,UAE1BvzF,SAAU,CACRhoK,MAAOm5b,EAAY/ua,KAAK49I,WAG5B+4R,GAAI,CACFllY,QAAS,CACP77D,MAAOm5b,EAAY/ua,KAAKyxC,SAE1B4uD,OAAQ,CACNzqH,MAAOm5b,EAAY/ua,KAAKqgG,QAE1B8wI,SAAU,CACRv7P,MAAOm5b,EAAY/ua,KAAKmxO,UAE1BvzF,SAAU,CACRhoK,MAAOm5b,EAAY/ua,KAAK49I,WAG5Bg5R,GAAI,CACFnlY,QAAS,CACP77D,MAAOm5b,EAAY/ua,KAAKyxC,SAE1B4uD,OAAQ,CACNzqH,MAAOm5b,EAAY/ua,KAAKqgG,QAE1B8wI,SAAU,CACRv7P,MAAOm5b,EAAY/ua,KAAKmxO,UAE1BvzF,SAAU,CACRhoK,MAAOm5b,EAAY/ua,KAAK49I,WAG5Bi5R,IAAK,CACHplY,QAAS,CACP77D,MAAOm5b,EAAY/ua,KAAKyxC,SAE1B4uD,OAAQ,CACNzqH,MAAOm5b,EAAY/ua,KAAKqgG,QAE1B8wI,SAAU,CACRv7P,MAAOm5b,EAAY/ua,KAAKmxO,UAE1BvzF,SAAU,CACRhoK,MAAOm5b,EAAY/ua,KAAK49I,WAG5Bk5R,IAAK,CACHrlY,QAAS,CACP77D,MAAOm5b,EAAY/ua,KAAKyxC,SAE1B4uD,OAAQ,CACNzqH,MAAOm5b,EAAY/ua,KAAKqgG,QAE1B8wI,SAAU,CACRv7P,MAAOm5b,EAAY/ua,KAAKmxO,UAE1BvzF,SAAU,CACRhoK,MAAOm5b,EAAY/ua,KAAK49I,YAI9B8rC,QAAS,CACPA,QAAS,CACPj4I,QAAS,CACP77D,MAAOm5b,EAAYzic,SAASmlE,SAE9B4uD,OAAQ,CACNzqH,MAAOm5b,EAAYzic,SAAS+zH,QAE9B8wI,SAAU,CACRv7P,MAAOm5b,EAAYzic,SAAS6kQ,UAE9BvzF,SAAU,CACRhoK,MAAOm5b,EAAYzic,SAASsxK,YAIlC9oK,MAAO,CACLyV,OAAQ,CACNknD,QAAS,CACP77D,MAAOm5b,EAAYj6b,MAAM28D,SAE3B4uD,OAAQ,CACNzqH,MAAOm5b,EAAYj6b,MAAMurH,QAE3B8wI,SAAU,CACRv7P,MAAOm5b,EAAYj6b,MAAMq8P,UAE3BvzF,SAAU,CACRhoK,MAAOm5b,EAAYj6b,MAAM8oK,WAG7BqxJ,OAAQ,CACNx9P,QAAS,CACP77D,MAAOm5b,EAAYj6b,MAAM28D,SAE3B4uD,OAAQ,CACNzqH,MAAOm5b,EAAYj6b,MAAMurH,QAE3B8wI,SAAU,CACRv7P,MAAOm5b,EAAYj6b,MAAMq8P,UAE3BvzF,SAAU,CACRhoK,MAAOm5b,EAAYj6b,MAAM8oK,WAG7Bm5R,OAAQ,CACNtlY,QAAS,CACP77D,MAAOm5b,EAAYj6b,MAAM28D,SAE3B4uD,OAAQ,CACNzqH,MAAOm5b,EAAYj6b,MAAMurH,QAE3B8wI,SAAU,CACRv7P,MAAOm5b,EAAYj6b,MAAMq8P,UAE3BvzF,SAAU,CACRhoK,MAAOm5b,EAAYj6b,MAAM8oK,WAG7Bo5R,QAAS,CACPvlY,QAAS,CACP77D,MAAOm5b,EAAYj6b,MAAM28D,SAE3B4uD,OAAQ,CACNzqH,MAAOm5b,EAAYj6b,MAAMurH,QAE3B8wI,SAAU,CACRv7P,MAAOm5b,EAAYj6b,MAAMq8P,UAE3BvzF,SAAU,CACRhoK,MAAOm5b,EAAYj6b,MAAM8oK,WAG7Bq5R,QAAS,CACPxlY,QAAS,CACP77D,MAAOm5b,EAAYj6b,MAAM28D,SAE3B4uD,OAAQ,CACNzqH,MAAOm5b,EAAYj6b,MAAMurH,QAE3B8wI,SAAU,CACRv7P,MAAOm5b,EAAYj6b,MAAMq8P,UAE3BvzF,SAAU,CACRhoK,MAAOm5b,EAAYj6b,MAAM8oK,WAG7Bs5R,SAAU,CACRzlY,QAAS,CACP77D,MAAOm5b,EAAYj6b,MAAM28D,SAE3B4uD,OAAQ,CACNzqH,MAAOm5b,EAAYj6b,MAAMurH,QAE3B8wI,SAAU,CACRv7P,MAAOm5b,EAAYj6b,MAAMq8P,UAE3BvzF,SAAU,CACRhoK,MAAOm5b,EAAYj6b,MAAM8oK,WAG7B,gBAAiB,CACfnsG,QAAS,CACP77D,MAAOm5b,EAAYj6b,MAAM28D,SAE3B4uD,OAAQ,CACNzqH,MAAOm5b,EAAYj6b,MAAMurH,QAE3B8wI,SAAU,CACRv7P,MAAOm5b,EAAYj6b,MAAMq8P,UAE3BvzF,SAAU,CACRhoK,MAAOm5b,EAAYj6b,MAAM8oK,WAG7B,gBAAiB,CACfnsG,QAAS,CACP77D,MAAOm5b,EAAYY,YAAYl+X,SAEjC4uD,OAAQ,CACNzqH,MAAOm5b,EAAYY,YAAYtvU,QAEjC8wI,SAAU,CACRv7P,MAAOm5b,EAAYY,YAAYx+L,UAEjCvzF,SAAU,CACRhoK,MAAOm5b,EAAYY,YAAY/xR,WAGnC,gBAAiB,CACfnsG,QAAS,CACP77D,MAAOm5b,EAAYY,YAAYl+X,SAEjC4uD,OAAQ,CACNzqH,MAAOm5b,EAAYY,YAAYtvU,QAEjC8wI,SAAU,CACRv7P,MAAOm5b,EAAYY,YAAYx+L,UAEjCvzF,SAAU,CACRhoK,MAAOm5b,EAAYY,YAAY/xR,WAGnC,gBAAiB,CACfnsG,QAAS,CACP77D,MAAOm5b,EAAYY,YAAYl+X,SAEjC4uD,OAAQ,CACNzqH,MAAOm5b,EAAYY,YAAYtvU,QAEjC8wI,SAAU,CACRv7P,MAAOm5b,EAAYY,YAAYx+L,UAEjCvzF,SAAU,CACRhoK,MAAOm5b,EAAYY,YAAY/xR,WAGnC,iBAAkB,CAChBnsG,QAAS,CACP77D,MAAOm5b,EAAYY,YAAYl+X,SAEjC4uD,OAAQ,CACNzqH,MAAOm5b,EAAYY,YAAYtvU,QAEjC8wI,SAAU,CACRv7P,MAAOm5b,EAAYY,YAAYx+L,UAEjCvzF,SAAU,CACRhoK,MAAOm5b,EAAYY,YAAY/xR,WAGnC,iBAAkB,CAChBnsG,QAAS,CACP77D,MAAOm5b,EAAYY,YAAYl+X,SAEjC4uD,OAAQ,CACNzqH,MAAOm5b,EAAYY,YAAYtvU,QAEjC8wI,SAAU,CACRv7P,MAAOm5b,EAAYY,YAAYx+L,UAEjCvzF,SAAU,CACRhoK,MAAOm5b,EAAYY,YAAY/xR,WAGnC,kBAAmB,CACjBnsG,QAAS,CACP77D,MAAOm5b,EAAYY,YAAYl+X,SAEjC4uD,OAAQ,CACNzqH,MAAOm5b,EAAYY,YAAYtvU,QAEjC8wI,SAAU,CACRv7P,MAAOm5b,EAAYY,YAAYx+L,UAEjCvzF,SAAU,CACRhoK,MAAOm5b,EAAYY,YAAY/xR,WAGnC,uBAAwB,CACtBnsG,QAAS,CACP77D,MAAOm5b,EAAYY,YAAYl+X,SAEjC4uD,OAAQ,CACNzqH,MAAOm5b,EAAYY,YAAYtvU,QAEjC8wI,SAAU,CACRv7P,MAAOm5b,EAAYY,YAAYx+L,UAEjCvzF,SAAU,CACRhoK,MAAOm5b,EAAYY,YAAY/xR,WAGnCl/I,MAAO,CACL+yC,QAAS,CACP77D,MAAOm5b,EAAYY,YAAYl+X,SAEjC4uD,OAAQ,CACNzqH,MAAOm5b,EAAYY,YAAYtvU,QAEjC8wI,SAAU,CACRv7P,MAAOm5b,EAAYY,YAAYx+L,UAEjCvzF,SAAU,CACRhoK,MAAOm5b,EAAYY,YAAY/xR,WAGnCqgH,KAAM,CACJxsN,QAAS,CACP77D,MAAOm5b,EAAYY,YAAYl+X,SAEjC4uD,OAAQ,CACNzqH,MAAOm5b,EAAYY,YAAYtvU,QAEjC8wI,SAAU,CACRv7P,MAAOm5b,EAAYY,YAAYx+L,UAEjCvzF,SAAU,CACRhoK,MAAOm5b,EAAYY,YAAY/xR,WAGnCu5R,KAAM,CACJ1lY,QAAS,CACP77D,MAAOm5b,EAAYY,YAAYl+X,SAEjC4uD,OAAQ,CACNzqH,MAAOm5b,EAAYY,YAAYtvU,QAEjC8wI,SAAU,CACRv7P,MAAOm5b,EAAYY,YAAYx+L,UAEjCvzF,SAAU,CACRhoK,MAAOm5b,EAAYY,YAAY/xR,WAGnCw5R,OAAQ,CACN3lY,QAAS,CACP77D,MAAOm5b,EAAYY,YAAYl+X,SAEjC4uD,OAAQ,CACNzqH,MAAOm5b,EAAYY,YAAYtvU,QAEjC8wI,SAAU,CACRv7P,MAAOm5b,EAAYY,YAAYx+L,UAEjCvzF,SAAU,CACRhoK,MAAOm5b,EAAYY,YAAY/xR,WAGnC59I,KAAM,CACJyxC,QAAS,CACP77D,MAAOm5b,EAAYY,YAAYl+X,SAEjC4uD,OAAQ,CACNzqH,MAAOm5b,EAAYY,YAAYtvU,QAEjC8wI,SAAU,CACRv7P,MAAOm5b,EAAYY,YAAYx+L,UAEjCvzF,SAAU,CACRhoK,MAAOm5b,EAAYY,YAAY/xR,YAIrClrH,KAAM,CACJA,KAAM,CACJ+e,QAAS,CACP77D,MAAOm5b,EAAYr8Y,KAAK+e,SAE1B4uD,OAAQ,CACNzqH,MAAOm5b,EAAYr8Y,KAAK2tE,QAE1B8wI,SAAU,CACRv7P,MAAOm5b,EAAYr8Y,KAAKy+M,UAE1BvzF,SAAU,CACRhoK,MAAOm5b,EAAYr8Y,KAAKkrH,WAG5Bl4I,OAAQ,CACN+rC,QAAS,CACP77D,MAAOm5b,EAAYr8Y,KAAK+e,SAE1B4uD,OAAQ,CACNzqH,MAAOm5b,EAAYr8Y,KAAK2tE,QAE1B8wI,SAAU,CACRv7P,MAAOm5b,EAAYr8Y,KAAKy+M,UAE1BvzF,SAAU,CACRhoK,MAAOm5b,EAAYr8Y,KAAKkrH,WAG5B59I,KAAM,CACJyxC,QAAS,CACP77D,MAAOm5b,EAAY6B,WAAWn/X,SAEhC4uD,OAAQ,CACNzqH,MAAOm5b,EAAY6B,WAAWvwU,QAEhC8wI,SAAU,CACRv7P,MAAOm5b,EAAY6B,WAAWz/L,UAEhCvzF,SAAU,CACRhoK,MAAOm5b,EAAY6B,WAAWhzR,WAGlC,cAAe,CACbnsG,QAAS,CACP77D,MAAOm5b,EAAY6B,WAAWn/X,SAEhC4uD,OAAQ,CACNzqH,MAAOm5b,EAAY6B,WAAWvwU,QAEhC8wI,SAAU,CACRv7P,MAAOm5b,EAAY6B,WAAWz/L,UAEhCvzF,SAAU,CACRhoK,MAAOm5b,EAAY6B,WAAWhzR,YAIpCzvC,OAAQ,CACNkpU,OAAQ,CACN5lY,QAAS,CACP77D,MAAOm5b,EAAY4C,eAAelgY,SAEpC4uD,OAAQ,CACNzqH,MAAOm5b,EAAY4C,eAAetxU,QAEpC8wI,SAAU,CACRv7P,MAAOm5b,EAAY4C,eAAexgM,UAEpCvzF,SAAU,CACRhoK,MAAOm5b,EAAY4C,eAAe/zR,WAGtCvyJ,IAAK,CACHomD,QAAS,CACP77D,MAAOm5b,EAAY4C,eAAelgY,SAEpC4uD,OAAQ,CACNzqH,MAAOm5b,EAAY4C,eAAetxU,QAEpC8wI,SAAU,CACRv7P,MAAOm5b,EAAY4C,eAAexgM,UAEpCvzF,SAAU,CACRhoK,MAAOm5b,EAAY4C,eAAe/zR,YAIxC/3H,KAAM,CACJ7lB,KAAM,CACJyxC,QAAS,CACP77D,MAAOm5b,EAAY/ua,KAAKyxC,SAE1B4uD,OAAQ,CACNzqH,MAAOm5b,EAAY/ua,KAAKqgG,QAE1B8wI,SAAU,CACRv7P,MAAOm5b,EAAY/ua,KAAKmxO,UAE1BvzF,SAAU,CACRhoK,MAAOm5b,EAAY/ua,KAAK49I,WAG5Bk5R,IAAK,CACHrlY,QAAS,CACP77D,MAAOm5b,EAAY/ua,KAAKyxC,SAE1B4uD,OAAQ,CACNzqH,MAAOm5b,EAAY/ua,KAAKqgG,QAE1B8wI,SAAU,CACRv7P,MAAOm5b,EAAY/ua,KAAKmxO,UAE1BvzF,SAAU,CACRhoK,MAAOm5b,EAAY/ua,KAAK49I,WAG5Bl4I,OAAQ,CACN+rC,QAAS,CACP77D,MAAOm5b,EAAY/ua,KAAKyxC,SAE1B4uD,OAAQ,CACNzqH,MAAOm5b,EAAY/ua,KAAKqgG,QAE1B8wI,SAAU,CACRv7P,MAAOm5b,EAAY/ua,KAAKmxO,UAE1BvzF,SAAU,CACRhoK,MAAOm5b,EAAY/ua,KAAK49I,WAG5B4rC,IAAK,CACH/3I,QAAS,CACP77D,MAAOm5b,EAAY/ua,KAAKyxC,SAE1B4uD,OAAQ,CACNzqH,MAAOm5b,EAAY/ua,KAAKqgG,QAE1B8wI,SAAU,CACRv7P,MAAOm5b,EAAY/ua,KAAKmxO,UAE1BvzF,SAAU,CACRhoK,MAAOm5b,EAAY/ua,KAAK49I,YAI9B05R,OAAQ,CACNA,OAAQ,CACN7lY,QAAS,CACP77D,MAAOm5b,EAAY/ua,KAAKyxC,SAE1B4uD,OAAQ,CACNzqH,MAAOm5b,EAAY/ua,KAAKqgG,QAE1B8wI,SAAU,CACRv7P,MAAOm5b,EAAY/ua,KAAKmxO,UAE1BvzF,SAAU,CACRhoK,MAAOm5b,EAAY/ua,KAAK49I,WAG5Bl4I,OAAQ,CACN+rC,QAAS,CACP77D,MAAOm5b,EAAY/ua,KAAKyxC,SAE1B4uD,OAAQ,CACNzqH,MAAOm5b,EAAY/ua,KAAKqgG,QAE1B8wI,SAAU,CACRv7P,MAAOm5b,EAAY/ua,KAAKmxO,UAE1BvzF,SAAU,CACRhoK,MAAOm5b,EAAY/ua,KAAK49I,WAG5B25R,OAAQ,CACN9lY,QAAS,CACP77D,MAAOm5b,EAAY6B,WAAWn/X,SAEhC4uD,OAAQ,CACNzqH,MAAOm5b,EAAY6B,WAAWvwU,QAEhC8wI,SAAU,CACRv7P,MAAOm5b,EAAY6B,WAAWz/L,UAEhCvzF,SAAU,CACRhoK,MAAOm5b,EAAY6B,WAAWhzR,WAGlC,gBAAiB,CACfnsG,QAAS,CACP77D,MAAOm5b,EAAY6B,WAAWn/X,SAEhC4uD,OAAQ,CACNzqH,MAAOm5b,EAAY6B,WAAWvwU,QAEhC8wI,SAAU,CACRv7P,MAAOm5b,EAAY6B,WAAWz/L,UAEhCvzF,SAAU,CACRhoK,MAAOm5b,EAAY6B,WAAWhzR,aAKtCjpD,WAAY,CACVgpJ,KAAM,CACJ65L,OAAQxE,EACRj6b,IAAK,CACHk8C,SAAU,MACV0hI,KAAM,KACN96H,MAAO,KACPupX,oBAAqB,IAEvB73V,OAAQ,CACNt4B,SAAU,SACV0hI,KAAM,KACN96H,MAAO,KACPupX,oBAAqB,IAEvBtsa,KAAM,CACJm8C,SAAU,OACV4G,MAAO,KACP77B,KAAM,KACNilZ,SAAU,KACVG,oBAAqB,EAAI,GAE3B3oa,MAAO,CACLw4C,SAAU,QACV4G,MAAO,KACP77B,KAAM,KACNilZ,SAAU,KACVG,oBAAqB,EAAI,GAE3B76Z,OAAQ,CACNsxC,MAAO,KACP86H,MAAM,UAAQ,CAAC,EAAGq8Q,EAAWr8Q,KAAM,CACjC32J,KAAM,CACJvtB,KAAM,WAIZqlE,OAAQ,CACNjc,MAAO,KACP86H,MAAM,UAAQ,CAAC,EAAGq8Q,EAAWr8Q,KAAM,CACjC32J,KAAM,CACJvtB,KAAM,cAKd0uQ,OAAQ,CACNq2L,OAAQpD,EACR33b,MAAO,CACLm2G,OAAQ,WACR1uC,QAAS4qX,EAAW2I,uBAEtB3+b,KAAM,CACJ85G,OAAQ,WACR1uC,QAAS4qX,EAAW2I,uBAEtB1+b,IAAK,CACH65G,OAAQ,aACR1uC,QAAS4qX,EAAW4I,yBAEtBnqX,OAAQ,CACNqlC,OAAQ,aACR1uC,QAAS4qX,EAAW4I,yBAEtBvtN,WAAY,CACVtuL,MAAO,KACPwY,WAAY,KACZugX,MAAO,CAAC,EACRC,KAAM,CACJpib,KAAM,QACN27B,KAAM0ga,EAAW6I,iBACjB5iB,cAAe+Z,EAAW8I,gBAC1Bhic,MAAO,CACL8vC,KAAMopZ,EAAW+I,oBACjB5sb,OAAQ6jb,EAAWgJ,sBACnBvub,UAAWulb,EAAWiJ,mBAG1BrhZ,MAAO,CACLynC,MAAO,OACPqoQ,QAAS,EACT3S,UAAW,KACXj+U,MAAO,CACL8vC,KAAMopZ,EAAWkJ,yBACjBptb,SAAUkkb,EAAWmJ,wBACrBptb,WAAYikb,EAAWoJ,0BACvBltb,aAAc,SACduS,WAAYuxa,EAAWvxa,aAG3BgQ,QAAS,CACPa,KAAM0ga,EAAWqJ,mBACjBvic,MAAO,CACL8vC,KAAMopZ,EAAWsJ,uBACjBntb,OAAQ6jb,EAAWuJ,2BAGvBvjB,UAAU,EACV5wW,QAASkwX,EAAalwX,UAG1B2qL,QAAS,CACPypM,aAAa,EACbC,QAAQ,EACRC,gBAAgB,EAChBC,aAAa,EACb18K,QAAQ,EACR28K,WAAW,EACXzjZ,SAAU,OACVswP,OAAQ,CACNhzQ,OAAQ,SACRtnB,OAAQ,OACR9G,WAAY,GACZC,cAAe,EACfC,cAAe,EACfH,YAAa,mBACbqF,UAAW,EACXP,EAAG,GAELqwa,WAAY,CACVr5Z,KAAM,CACJpqB,MAAO,CACLqV,OAAQ6jb,EAAW6J,6BACnBpvb,UAAWulb,EAAW8J,0BAG1Bjub,KAAM,KACNuia,eAAgB,CACdhpW,QAAS,EACTtuE,MAAO,CACL8vC,KAAM,sBACNn8B,UAAW,EACX0B,OAAQ,OAGZstb,QAAQ,GAGVv0B,WAAY/4a,EAAK,CAAC,EAAGA,EAAG,GAAGoS,OAAO,MAAsC,CACtE43C,SAAU,WACVq6B,WAAY,SACZ/wE,OAAQ,EACRi2D,WAAY,0FACZ4D,gBAAiB02X,EAAW+J,0BAC5Bp6b,QAASqwb,EAAWgK,4BACpBvkY,UAAWu6X,EAAWiK,uBACtBpiY,aAAc,GAAGt5D,OAAOyxb,EAAWkK,6BAA8B,MACjEn7Z,MAAOixZ,EAAWmK,qBAClBrub,SAAU,GAAGvN,OAAOyxb,EAAWoK,oBAAqB,MACpD37a,WAAYuxa,EAAWvxa,WACvB1S,WAAY,GAAGxN,OAAOyxb,EAAWqK,sBAAuB,MACxDj1X,QAAS,iBACRj5E,EAAG,GAAGoS,OAAO,MAAkC,CAChD8hE,aAAc,OACdopC,UAAW,QACVt9G,EAAG,GAAGoS,OAAO,MAAiC,CAC/Ci3F,OAAQ,EACRslG,cAAe,OACf11H,QAAS,GACRj5E,EAAG,GAAGoS,OAAO,MAAsC,CACpDu8L,cAAe,OACf11H,QAAS,EACT/E,aAAc,OACdopC,UAAW,OACXosC,WAAY,EACZC,YAAa,GACZ3pJ,EAAG,GAAGoS,OAAO,MAAmC,CACjDxF,MAAO,MACPC,OAAQ,MACR6+D,aAAc,MACdxhB,QAAS,eACTy/F,YAAa,OACZ3pJ,EAAG,GAAGoS,OAAO,MAAkC,CAChD83C,QAAS,eACTgd,MAAO,QACPwiF,WAAY,QACX1pJ,IAELmuc,WAAY,CACV5vP,IAAK,CACH5zM,MAAO,CACLqV,OAAQ6jb,EAAWuK,yBACnB9vb,UAAWulb,EAAWwK,qBAExB14b,SAAS,GAEXof,KAAM,CACJpqB,MAAO,CACLqV,OAAQ6jb,EAAWyK,0BACnBzF,SAAUhF,EAAW0K,mBACrBjwb,UAAWulb,EAAW2K,sBAExB9ub,KAAM,CACJsqC,SAAU,QACVqrX,YAAY,EACZ1qa,MAAO,CACL8vC,KAAMopZ,EAAW4K,wBACjBzub,OAAQ6jb,EAAW6K,0BACnBpwb,UAAWulb,EAAW8K,qBACtBhvb,SAAUkkb,EAAW+K,uBACrB9ub,UAAW,QACXwS,WAAYuxa,EAAWvxa,WACvBvS,aAAc,WAGlBpK,SAAS,GAEX+J,KAAM,CACJ/U,MAAO,CACL8vC,KAAMopZ,EAAW4K,wBACjBzub,OAAQ6jb,EAAW6K,0BACnBpwb,UAAWulb,EAAW8K,qBACtBhvb,SAAUkkb,EAAW+K,uBACrB7ub,aAAc,SACdD,UAAW,QACXwS,WAAYuxa,EAAWvxa,YAEzB3c,SAAS,GAEXq3Z,OAAQ,CACNl/Z,KAAK,EACLnD,MAAO,CACL2T,UAAWulb,EAAWgL,uBACtB7ub,OAAQ6jb,EAAWiL,4BACnBr0Z,KAAMopZ,EAAWkL,0BACjBrsX,YAAamhX,EAAWmL,6BAE1Br5b,SAAS,GAEX+xG,MAAO,CACL55G,KAAK,EACL6H,SAAS,GAEXs5b,WAAY,CACVnhc,KAAK,EACLjE,MAAO,CACLc,MAAO,CACLoT,EAAG,EACHiC,OAAQ6jb,EAAW0G,WACnBjsb,UAAW,IAGfyW,KAAM,CACJpqB,MAAO,CACLqV,OAAQ6jb,EAAWyK,0BACnBhwb,UAAWulb,EAAW2K,sBAExB9uc,OAAQmkc,EAAWqL,gCAErBxvb,KAAM,CACJ/U,MAAO,CACLmV,UAAW,QACX26B,KAAMopZ,EAAW4K,wBACjBzub,OAAQ6jb,EAAW6K,0BACnBpwb,UAAWulb,EAAW8K,qBACtBhvb,SAAUkkb,EAAW+K,uBACrBt8a,WAAYuxa,EAAWvxa,aAG3BqH,UAAW,SACX68Y,YAAY,EACZ7ga,SAAS,GAEXw5b,WAAY,CACVxkc,MAAO,CACLqia,OAAQ,CACNvyX,KAAMopZ,EAAWkL,0BACjBrsX,YAAamhX,EAAWmL,6BAE1Btvb,KAAM,CACJI,UAAW,SACXC,aAAc,SACd06B,KAAMopZ,EAAW4K,wBACjBzub,OAAQ6jb,EAAW6K,0BACnBpwb,UAAWulb,EAAW8K,qBACtBhvb,SAAUkkb,EAAW+K,uBACrBt8a,WAAYuxa,EAAWvxa,aAG3B3c,SAAS,IAGbmyG,OAAQ,CACNykV,OAAQ,CACNtzX,QAAS,CAAC,EAAG,EAAG,EAAG,GACnB07V,gBAAiB,CACfl6X,KAAMopZ,EAAWuL,2BACjB57b,QAASqwb,EAAWwL,8BAEtBnd,gBAAiB,CACfz3Y,KAAMopZ,EAAWyL,2BACjB97b,QAASqwb,EAAW0L,8BAEtBpd,aAAc,CACZvlb,MAAOi3b,EAAW2L,oBAClB3ic,OAAQg3b,EAAW4L,qBACnBh1Z,KAAMopZ,EAAW6L,wBACjBl8b,QAASqwb,EAAW8L,0BACpB3vb,OAAQ6jb,EAAW+L,0BACnBtxb,UAAWulb,EAAWgM,qBACtBhjY,OAAQg3X,EAAWiM,2BAEnB5e,cAAe2S,EAAWkM,kCAE5Bz4B,UAAW,CACT78X,KAAMopZ,EAAWmM,qBACjBx8b,QAASqwb,EAAWoM,uBACpBtwb,SAAUkkb,EAAWqM,oBACrBtwb,WAAYikb,EAAWsM,sBACvB59a,WAAYsxa,EAAWuM,sBACvBpwb,OAAQ6jb,EAAWwM,uBACnB/xb,UAAWulb,EAAWyM,qBAI5BC,UAAW,CACThE,OAAQ,CACNtzX,QAAS,CAAC,EAAG,EAAG,EAAG,IAErBzS,QAAS,CACP77D,MAAO,CACL+ob,WAAYmQ,EAAW2M,wBACvB7c,WAAYkQ,EAAW4M,0BAG3BnjJ,MAAO,CACL3iT,MAAO,CACLgpb,WAAYkQ,EAAW6M,qCAK/B99L,OAAQ,CACN5wL,OAAQ,GACRr3E,MAAO,CACL8vC,KAAMopZ,EAAW8M,eACjBhxb,SAAUkkb,EAAWr4G,cACrBl5T,WAAYuxa,EAAWvxa,WACvBtS,OAAQ6jb,EAAW+M,iBACnBtyb,UAAWulb,EAAWgN,aAExBC,cAAejN,EAAWkN,mBAC1BC,eAAgBnN,EAAWoN,oBAC3B57B,YAAY,GAEd67B,YAAa,CACXvmc,MAAO,CACL8vC,KAAMopZ,EAAWsN,oBACjBxxb,SAAUkkb,EAAWuN,mBACrB9+a,WAAYuxa,EAAWvxa,WACvBtS,OAAQ6jb,EAAWwN,sBACnB/yb,UAAWulb,EAAWyN,kBAExBj8B,YAAY,GAEdk8B,eAAgB,CACd5mc,MAAO,CACL8vC,KAAMopZ,EAAW2N,uBACjB7xb,SAAUkkb,EAAW4N,sBACrBn/a,WAAYuxa,EAAWvxa,WACvBtS,OAAQ6jb,EAAW6N,yBACnBpzb,UAAWulb,EAAW8N,sBAG1BC,UAAW,CACTC,YAAa,GACb7vX,OAAQ,GACR8vX,UAAW,CACTnnc,MAAO,CACL2T,UAAWulb,EAAWkO,kBAG1B18B,YAAY,GAGlB,CC15CA,IAAI28B,IACG,OADHA,IAIE,UAJFA,IAKE,UALFA,IAME,UANFA,IAOE,UAPFA,IAQC,UAEDC,IACG,UADHA,IAGE,UAOFC,IAAiB,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACrHC,IAAiB,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAEnOC,IAAkB,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACpGC,IAAwB,SAA+B7xc,QACpD,IAARA,IACFA,EAAM,CAAC,GAET,IAAIR,EAAKQ,EAAIwqc,qBACXA,OAA8B,IAAPhrc,EAAgBkyc,IAAiBlyc,EACxD+V,EAAKvV,EAAI0qc,qBACTA,OAA8B,IAAPn1b,EAAgBo8b,IAAiBp8b,EACtDC,EAAKxV,EAAI+pc,WACXA,OAAoB,IAAPv0b,EAAgBg1b,EAAqB,GAAKh1b,EACrDizD,EAAQ,CAEVkE,gBAAiB,cAEjBo9X,WAAYA,EAEZC,SAAU,mBAEVQ,qBAAsBA,EAEtBE,qBAAsBA,EAEtBR,mBAAoB,UAEpBE,qBAAsB,UAEtB0H,sBAAuB,UAEvBlH,gBAAiBgH,IAEjB9/a,WAAY,+JAGZo2a,oBAAqBsJ,IAErBvJ,eAAgB,EAEhB8J,aAAc,KAEdtK,uBAAwB+J,IAExB9J,sBAAuB,GAEvBC,wBAAyB,GAEzBqK,wBAAyB,SAEzBxK,iBAAkB,GAElBI,6BAA8B6J,IAE9BjJ,wBAAyBgJ,IAEzB/I,mBAAoB,EAEpBF,mBAAoB,EAEpB0J,2BAA4BT,IAE5BU,sBAAuB,EAEvBC,sBAAuB,EAEvBrK,mBAAoB0J,IAEpBzJ,kBAAmB,GAEnBC,oBAAqB,GAErBoK,oBAAqB,SAErBvK,gBAAiB,EAEjBM,oBAAqBqJ,IAErBpJ,eAAgB,EAEhBE,iBAAkB,KAGlB+J,yBAA0Bb,IAE1Bc,wBAAyB,GAEzBC,0BAA2B,GAE3BC,0BAA2B,SAE3B1J,kBAAmBiB,EAEnBnB,oBAAqB,EAErB6J,iBAAkB,EAElB5J,uBAAwB,EAExB6J,uBAAwB,EAExBC,qBAAsB,EAEtB5J,wBAAyByI,IAEzBxI,uBAAwB,GAExBC,yBAA0B,GAE1BC,yBAA0B,SAE1BS,kBAAmB,GAEnBC,uBAAwB,GAExBC,cAAe,CAAC,EAAG,EAAG,EAAG,GAEzBoC,wBAAyB,CAAC,EAAG,EAAG,EAAG,GAEnCD,sBAAuB,CAAC,EAAG,EAAG,EAAG,GAGjC5C,8BAA+B,GAE/BC,2CAA4CmI,IAE5ClI,6CAA8C,IAE9CC,mCAAoCiI,IAEpChI,qCAAsC,EAEtCC,iCAAkC+H,IAElC9H,gCAAiC,GAEjC0C,oBAAqBoF,IAErBlF,iBAAkB,EAElBD,sBAAuB,KAEvBF,gBAAiB,IAEjBD,iBAAkB,GAElBK,yBAA0BiF,IAE1BhF,wBAAyB,GAEzBC,0BAA2B,GAE3BmG,0BAA2B,SAE3BjG,uBAAwB6E,IAExB9E,mBAAoB,GAEpBmG,oBAAqB,GAErBC,oBAAqB,EAErBlG,yBAA0B4E,IAG1B5D,yBAA0B4D,IAE1B3D,oBAAqB,EAErBC,0BAA2B0D,IAE3BxD,qBAAsB,EAEtBD,mBAAoB,KAEpBE,wBAAyBuD,IAEzBpD,uBAAwB,GAExB2E,yBAA0B,GAE1BC,yBAA0B,SAE1B9E,0BAA2B,KAE3BC,qBAAsB,EAEtBI,0BAA2BiD,IAE3BhD,4BAA6B,IAE7BH,uBAAwB,EAExBC,4BAA6B,KAE7BI,+BAAgC,GAGhCxB,6BAA8BsE,IAE9BrE,wBAAyB,EAEzB8F,0BAA2B,KAE3B7F,0BAA2B,qBAC3BC,4BAA6B,IAE7BC,uBAAwB,uBAExBC,6BAA8B,EAE9BC,qBAAsBgE,IAEtB/D,oBAAqB,GAErBC,sBAAuB,GAEvBwF,sBAAuB,OAGvB/C,eAAgBqB,IAChBjB,mBAAoB,UACpBE,oBAAqB,UAErBzlH,cAAe,GAEfqB,gBAAiB,GAEjBnB,gBAAiB,SAEjBklH,iBAAkB,KAElBC,YAAa,EAEbM,oBAAqBc,IAErBb,mBAAoB,GAEpBuC,qBAAsB,GAEtBC,qBAAsB,SAEtBvC,sBAAuB,KAEvBC,iBAAkB,EAElBE,uBAAwBQ,IAExBP,sBAAuB,GAEvBoC,wBAAyB,GAEzBC,wBAAyB,SAEzBpC,yBAA0BO,IAE1BN,oBAAqB,EAErBI,gBAAiB,EAEjBgC,qBAAsB/B,IAGtBgC,kBAAmB,GAEnB5E,2BAA4B,UAE5BC,6BAA8B,IAE9BC,2BAA4B,UAE5BC,6BAA8B,IAG9BE,qBAAsB,GAEtBD,oBAAqB,GAErBE,wBAAyB,UAEzBC,0BAA2B,EAE3BI,iCAAkC,OAElCH,0BAA2B,UAE3BC,qBAAsB,EAEtBC,2BAA4B,EAG5BE,qBAAsB,OAEtBC,uBAAwB,IAExBC,oBAAqB,GAErBC,sBAAuB,GAEvBC,sBAAuB,SAEvBC,uBAAwB,KAExBC,kBAAmB,EAGnBE,wBAAyB,gBAEzBC,wBAAyB,mBAEzBC,iCAAkC,kBAGlC3M,eAAgBwG,EAEhBpG,iBAAkB,IAElBH,UAAW,EAEXE,YAAa,EAEbD,iBAAkBgO,IAElBgC,mBAAoB,EAEpB7P,uBAAwB4N,IAExBzN,oBAAqB,EAErBD,yBAA0B0N,IAE1BxN,yBAA0B,GAE1BC,2BAA4B,GAE5BM,gBAAiB,EAEjBH,kBAAmB,EAEnBC,uBAAwB0F,EAExBzF,yBAA0B,IAC1BH,qBAAsBsN,IAEtBiC,wBAAyB,EAEzBlP,6BAA8BgN,IAE9B/M,+BAAgC,EAEhCC,0BAA2B,EAE3BC,+BAAgC6M,IAEhC5M,iCAAkC,EAElCC,iCAAkC,GAElCoC,WAAY,EAEZD,gBAAiB+C,EAEjB7C,kBAAmB,EAEnBE,iBAAkB,EAElBC,mBAAoB,EAEpBC,0BAA2B,GAE3BxC,cAAeiF,EAEfhF,gBAAiB,IAEjB4O,oBAAqB5J,EACrB/E,sBAAuB,GAEvB4O,sBAAuB7J,EACvB9E,wBAAyB,GAEzBC,wBAAyB,GAEzBE,sBAAuB2E,EAEvB1E,iBAAkB,EAElBC,wBAAyB,EAEzBC,uBAAwB,EACxBsO,4BAA6BrC,IAE7BhM,yBAA0B,EAC1BsO,8BAA+BtC,IAE/B/L,gCAAiC,GAEjCC,kBAAmBqE,EAEnBpE,oBAAqB,IAErBE,qBAAsB,EAEtBD,0BAA2B4L,IAC3BuC,4BAA6B,EAE7BhO,uBAAwB,EAExBD,4BAA6B0L,IAE7BwC,8BAA+B,EAE/B/N,8BAA+B,GAE/BD,4BAA6B,GAE7BK,qBAAsB,EAEtBD,0BAA2B2D,EAE3BzD,4BAA6B,EAC7BH,wBAAyBsL,IAEzBjL,2BAA4B,EAE5BD,gCAAiCiL,IAEjC7K,6BAA8B,EAE9BD,kCAAmC8K,IAEnC5K,oCAAqC,EAErCG,oCAAqC,IAEvC,OAAO,WAAS,UAAS,CAAC,EAAGt+X,GAAQzoE,EACvC,EACuB6xc,MCtchB,SAASoC,IAAYC,GAC1B,IAAI10c,EAAK00c,EAAS7Q,WAChB8Q,OAAuB,IAAP30c,EAAgB,CAAC,EAAIA,EACrC40c,GAAc,UAAOF,EAAU,CAAC,eAE9B7Q,EAAawO,IAAsBsC,GAEvC,OAAO,UAAQ,CAAC,EAAG/Q,IAAwBC,GAAa+Q,EAC1D,CCVA,IAEIC,IAAS,CACXruY,QAHiBiuY,IAAY,CAAC,IASzB,SAASvuV,IAAS/Z,GACvB,OAAO,UAAI0oW,KAAQ,UAAU1oW,GAAQ0oW,IAAOruY,QAC9C,CCTA,SAASsuY,IAAU5hb,EAAIC,EAAIxb,GACzB,IAAIu3C,EAASv3C,EAAMR,UAAU+b,GACzBi8B,EAASx3C,EAAMR,UAAUgc,GAC7B,OAAO,UAAc+7B,EAAQC,EAC/B,CAeA,SAAS4lZ,IAAaxwb,EAAM1a,EAAOq0M,GACjC,IAAI4+D,EAAa5+D,EAAS4+D,WACtBm6H,EAAS/4L,EAAS82P,YAClBl9C,EAAS7gB,EAAOv4Q,MAChBmsS,EAAc/tJ,EAAW35P,OAAOtZ,GAChCgyZ,EAAS5kB,EAAO9zX,OAAO0nZ,EAAY9ga,GAKvC,OAJa,UAAKwa,GAAM,SAAUqO,GAChC,IAAIqib,EAAarib,EAAIkkY,KACrB,OAAOm+C,EAAWn9C,GAAQ,IAAM+D,GAAUo5C,EAAWn9C,GAAQ,IAAM+D,CACrE,KACiBt3Y,EAAKA,EAAK7kB,OAAS,EACtC,CACA,IAAIw1c,KAAe,WAAQ,SAAUv9b,GACnC,GAAIA,EAAMglZ,WACR,OAAO,EAMT,IAJA,IAAIw4C,EAAcx9b,EAAM0nB,OACpB3/B,EAASy1c,EAAYz1c,OACrBqZ,EAAMpB,EAAMR,UAAUg+b,EAAY,IAClCn8b,EAAMD,EACDlS,EAAQ,EAAGA,EAAQnH,EAAQmH,IAAS,CAC3C,IAAI7F,EAAQm0c,EAAYtuc,GAEpBuuc,EAAez9b,EAAMR,UAAUnW,GAC/Bo0c,EAAer8b,IACjBA,EAAMq8b,GAEJA,EAAep8b,IACjBA,EAAMo8b,EAEV,CACA,OAAQp8b,EAAMD,IAAQrZ,EAAS,EACjC,IAwBA,SAAS21c,IAAqBn3P,GAC5B,IAAI24O,EAAK72b,EAEL2X,EADAgyE,EARN,SAAgCu0H,GAC9B,IAAIv0H,GAAa,UAAOu0H,EAASv0H,YACjC,OAAO,UAAOA,GAAY,SAAU+vG,GAClC,OAAO,UAASm9N,IAAan9N,EAAUlyL,KACzC,GACF,CAGmB8tc,CAAuBp3P,GAExC,IACE,IAAK,IAAIq3P,GAAe,UAAS5rX,GAAa6rX,EAAiBD,EAAanhb,QAASohb,EAAer+Z,KAAMq+Z,EAAiBD,EAAanhb,OAAQ,CAC9I,IAAIslK,EAAY87Q,EAAex0c,MAC3By0c,EAAW/7Q,EAAUymH,SAASzmH,EAAUlyL,MAC5C,GAAIiuc,GAAYA,EAAS74C,SAGvB,GAAyB,QADFg8B,IAAe6c,GADpB,UAAIv3P,EAASw3P,UAAWD,EAAS/2U,OACUg7D,EAAUlyL,KAAM02M,EAAS12M,MACtD,CAE9BmQ,EAAQ89b,EACR,KACF,CAEJ,CACF,CAAE,MAAOze,GACPH,EAAM,CACJ5qY,MAAO+qY,EAEX,CAAE,QACA,IACMwe,IAAmBA,EAAer+Z,OAASn3C,EAAKu1c,EAAaz9O,SAAS93N,EAAGS,KAAK80c,EACpF,CAAE,QACA,GAAI1e,EAAK,MAAMA,EAAI5qY,KACrB,CACF,CACA,IAAI+qV,EAAS94L,EAASy3P,YAClB1+D,EAAS/4L,EAAS82P,YACtB,OAAOr9b,GAASs/X,GAAUD,CAC5B,CAmCO,SAAS4+D,IAAgB/rc,EAAO0a,EAAM25L,GAC3C,GAAoB,IAAhB35L,EAAK7kB,OACP,OAAO,KAET,IAAIq5b,EAAe76O,EAAS12M,KACxBwvY,EAAS94L,EAASy3P,YAClB1+D,EAAS/4L,EAAS82P,YAClBn9C,EAAS7gB,EAAOt4Q,MAChBo5R,EAAS7gB,EAAOv4Q,MAChBvsH,EAAM,KAEV,GAAqB,YAAjB4mb,GAA+C,UAAjBA,EAA0B,CAO1D,IALA,IACIluB,EADa3sN,EAAS4+D,WACG35P,OAAOtZ,GAChCC,EAAIktY,EAAO7zX,OAAO0nZ,EAAY/ga,GAC9BC,EAAIktY,EAAO9zX,OAAO0nZ,EAAY9ga,GAC9BgP,EAAM3V,IACDyD,EAAQ,EAAGA,EAAQ0d,EAAK7kB,OAAQmH,IAAS,CAChD,IAAI+rB,EAAMrO,EAAK1d,GACXouc,EAAarib,EAAIkkY,KACjBtwW,EAAQ1tC,KAAK0B,IAAIy6b,EAAWp9C,GAAU/tZ,EAAG,GAAKgP,KAAK0B,IAAIy6b,EAAWn9C,GAAU/tZ,EAAG,GAC/Ey8C,EAAQztC,IACVA,EAAMytC,EACNr0C,EAAMygB,EAEV,CACA,OAAOzgB,CACT,CAEA,IAAIipB,EAAQ7W,EAAK,GACb4Z,EAAO5Z,EAAKA,EAAK7kB,OAAS,GAC1B67Z,EAzKN,SAA0B1xZ,EAAOq0M,GAC/B,IAAI4+D,EAAa5+D,EAAS4+D,WACtBk6H,EAAS94L,EAASy3P,YAClBnvZ,EAAQwwV,EAAOxwV,MACfu5R,EAAWv5R,EAAMA,EAAM9mD,OAAS,GAChCsgV,EAAWx5R,EAAM,GAEjB+0W,EADcz+I,EAAW35P,OAAOtZ,GACXC,EAKzB,OAJIgzQ,EAAWotJ,SAAW3O,GAAU,EAAIx7E,GAAY,IAClDw7E,EAASv7E,GAGJg3D,EAAO7/X,UAAU6/X,EAAO7zX,OAAOo4Y,GACxC,CA4Jes6C,CAAiBhsc,EAAOq0M,GACjC43P,EAAc16a,EAAM07X,KAAce,GAClCk+C,EAAc36a,EAAM07X,KAAcgB,GAClCk+C,EAAa73a,EAAK24X,KAAce,GAChCo+C,EAAWh/D,EAAO2lB,WAAY,UAAQm5C,GAE1C,IAAI,UAAQD,GAAc,CACxB,IAASjvc,EAAQ,EAAGA,EAAQ0d,EAAK7kB,OAAQmH,IAAS,CAE5Couc,GADA5hZ,EAAS9uC,EAAK1d,IACMiwZ,KAExB,GAAI9f,EAAO7/X,UAAU89b,EAAWp9C,GAAQ,KAAO0D,GAAUvkB,EAAO7/X,UAAU89b,EAAWp9C,GAAQ,KAAO0D,EAAQ,CAC1G,IAAI06C,EAMG,CACL9jc,EAAMkhD,EACN,KACF,EAPO,UAAQlhD,KACXA,EAAM,IAERA,EAAI/S,KAAKi0D,EAKb,CACF,EACI,UAAQlhD,KACVA,EAAM4ic,IAAa5ic,EAAKtI,EAAOq0M,GAEnC,KAAO,CACL,IAAI9pL,OAAO,EACX,GAAK4iX,EAAO4lB,UAA4B,YAAhB5lB,EAAOxvY,KAuBxB,CAEL,IAAK+zZ,EAASvkB,EAAO7/X,UAAU6+b,IAAez6C,EAASvkB,EAAO7/X,UAAU2+b,MAAkBv6C,EAASvkB,EAAOh+X,KAAOuiZ,EAASvkB,EAAOj+X,KAE/H,OAAO,KAKT,IAHA,IAAIm9b,EAAW,EACXC,EAAU5xb,EAAK7kB,OAAS,EACxB02c,OAAY,EACTF,GAAYC,GAAS,CAE1B,IAAI7/b,EAAOiO,EADX6xb,EAAYt9b,KAAKwX,OAAO4lb,EAAWC,GAAW,IACnBr/C,KAAce,GACzC,GAAIi9C,IAAUx+b,EAAMilZ,EAAQvkB,GAC1B,OAAOzyX,EAAK6xb,GAEVp/D,EAAO7/X,UAAUb,IAAS0gY,EAAO7/X,UAAUokZ,IAC7C26C,EAAWE,EAAY,EACvBj4a,EAAO5Z,EAAK6xb,GACZhib,EAAO7P,EAAK6xb,EAAY,KAER,IAAZD,IACFh4a,EAAO5Z,EAAK,IAEd4xb,EAAUC,EAAY,EAE1B,CACF,KAjDmD,CAEjD,IAASvvc,EAAQ,EAAGA,EAAQ0d,EAAK7kB,OAAQmH,IAAS,CAChD,IAAIwsD,EAEJ,GAAIyhZ,KADAG,GADA5hZ,EAAS9uC,EAAK1d,IACMiwZ,MACCe,GAAS0D,EAAQvkB,GAAS,CACjD,IAAIi/D,EAKG,CACL9jc,EAAMkhD,EACN,KACF,EAPO,UAAQlhD,KACXA,EAAM,IAERA,EAAI/S,KAAKi0D,EAKb,MAAW2jV,EAAO7/X,UAAU89b,EAAWp9C,KAAY0D,IACjDp9X,EAAOk1B,EACPj/B,EAAO7P,EAAK1d,EAAQ,GAExB,EACI,UAAQsL,KACVA,EAAM4ic,IAAa5ic,EAAKtI,EAAOq0M,GAEnC,CA2BI//K,GAAQ/J,GAENtb,KAAKoG,IAAI83X,EAAO7/X,UAAUgnB,EAAK24X,KAAce,IAAW0D,GAAUziZ,KAAKoG,IAAI83X,EAAO7/X,UAAUid,EAAK0iY,KAAce,IAAW0D,KAC5Hp9X,EAAO/J,EAGb,CACA,IAAIpB,EAAWkib,IAAah3P,EAASy3P,aAIrC,OAHKxjc,GAAO2G,KAAKoG,IAAI83X,EAAO7/X,UAAUgnB,EAAK24X,KAAce,IAAW0D,IAAWvoY,EAAW,IACxF7gB,EAAMgsB,GAEDhsB,CACT,CASO,SAASkkc,IAAgB9xb,EAAM25L,EAAUttJ,EAAO0lZ,GACrD,IAAIC,EAAKv2c,OACK,IAAV4wD,IACFA,EAAQ,SAEM,IAAZ0lZ,IACFA,GAAU,GAEZ,IAKIx1c,EACAE,EANAi0c,EAAa1wb,EAAKuyY,KAClB0/C,EAjON,SAAyBvB,EAAY/2P,EAAUttJ,GAC7C,IACI6tE,EADey/E,EAASj1J,aAAa,YACfm0E,YACtB2rH,EAAS7qC,EAAS6qC,OAClB0tN,GAAa,UAAW7lZ,KAAWA,EAAQ6tE,EAAO,GAAK7tE,EACvD8lZ,EAAa3tN,EAAO0tN,GAGpBD,EAAeE,EAAaA,EAAWh4C,QAAQu2C,EAAWwB,IAAexB,EAAWwB,IAAeA,EACvG,OAAO,UAAW7lZ,GAASA,EAAM4lZ,EAAcvB,GAAcuB,CAC/D,CAuNqBG,CAAgB1B,EAAY/2P,EAAUttJ,GACrDgmZ,EAAgB14P,EAAS04P,cACzB9yI,EAAe5lH,EAAS/xG,MAAM23N,aAC9B9+Q,EAAQ,GAGZ,SAAS6xZ,EAAQ/wB,EAAUC,GACzB,GAAIuwB,KAAY,UAAMvwB,IAA4B,KAAdA,EAAkB,CAEpD,IAAIzva,EAAO,CACTs6C,MAAO4lZ,EACPjyb,KAAM0wb,EACN6B,YAAavyb,EACbzjB,KAAMglb,EACN9kb,MAAO+kb,EACPnzY,MAAOruB,EAAKquB,OAASkxR,EACrBxpB,QAAQ,GAEVt1P,EAAM5lD,KAAKkX,EACb,CACF,CACA,IAAI,UAASsgc,GAAgB,CAC3B,IAAIn4U,EAASm4U,EAAcn4U,OACzBv/H,EAAW03c,EAAc13c,SAC3B,GAAIA,EAAU,CAEZ,IAAI63c,EAAiBt4U,EAAO5uG,KAAI,SAAU6uG,GACxC,OAAOn6G,EAAKuyY,KAAcp4R,EAC5B,IACIl+H,EAAMtB,EAASgB,WAAM,GAAQ,UAAc,IAAI,UAAO62c,IAAiB,IACvEC,GAAU,UAAS,CACrBzyb,KAAMA,EAAKuyY,KACXggD,YAAavyb,EACbqsC,MAAO4lZ,EACP5ja,MAAOruB,EAAKquB,OAASkxR,EACrBxpB,QAAQ,GACP95S,GACHwkD,EAAM5lD,KAAK43c,EACb,KAAO,CACL,IAAIjuN,EAAS7qC,EAAS6qC,OACtB,IACE,IAAK,IAAIkuN,GAAW,UAASx4U,GAASy4U,EAAaD,EAAS7ib,QAAS8ib,EAAW//Z,KAAM+/Z,EAAaD,EAAS7ib,OAAQ,CAClH,IAAIsqG,EAAQw4U,EAAWl2c,MACvB,KAAK,UAAMi0c,EAAWv2U,IAAS,CAE7B,IAAI/mH,EAAQoxO,EAAOrqH,GAGnBm4U,EAFA/1c,EAAO,IAAQ6W,GACf3W,EAAQ2W,EAAM+mZ,QAAQu2C,EAAWv2U,IAEnC,CACF,CACF,CAAE,MAAOy4U,GACPZ,EAAM,CACJtqZ,MAAOkrZ,EAEX,CAAE,QACA,IACMD,IAAeA,EAAW//Z,OAASn3C,EAAKi3c,EAASn/O,SAAS93N,EAAGS,KAAKw2c,EACxE,CAAE,QACA,GAAIV,EAAK,MAAMA,EAAItqZ,KACrB,CACF,CACF,CACF,KAAO,CACL,IAAImrZ,EAAa/B,IAAqBn3P,GAEtCl9M,EAjPJ,SAAyBi0c,EAAYmC,GACnC,IACIp2c,EAAQi0c,EADAmC,EAAW14U,OAEvB,OAAI,UAAQ19H,GACEA,EAAM6uB,KAAI,SAAUwnb,GAC9B,OAAOD,EAAW14C,QAAQ24C,EAC5B,IACanvb,KAAK,KAEbkvb,EAAW14C,QAAQ19Z,EAC5B,CAuOYs2c,CAAgBrC,EAAYmC,GACpCt2c,EAtOJ,SAAwBm0c,EAAY/2P,GAClC,IAAIq5P,EACAC,EAAct5P,EAASu5P,iBAK3B,GAJID,EAAY93c,SAEd63c,EAAYC,EAAY,IAEtBD,EAAW,CACb,IAAI74U,EAAQ64U,EAAU74U,MACtB,OAAO64U,EAAU74C,QAAQu2C,EAAWv2U,GACtC,CAEA,OAAO,IADU22U,IAAqBn3P,GAExC,CAyNWw5P,CAAezC,EAAY/2P,GAClC24P,EAAQ/1c,EAAME,EAChB,CACA,OAAOgkD,CACT,CACA,SAAS2yZ,IAA0Bz5P,EAAUr0M,EAAO+mD,EAAOgnZ,GACzD,IAAIC,EAAK73c,EACLs2c,EAAUsB,EAAWtB,QACrB7kc,EAAS,GACT8mZ,EAAYr6M,EAASq6M,UACzB,KAAK,UAAQA,GAAY,CACvBr6M,EAAS9sM,KAAKmnZ,GACd,IACE,IAAK,IAAIu/C,GAAc,UAASv/C,GAAYw/C,EAAgBD,EAAY1jb,QAAS2jb,EAAc5ga,KAAM4ga,EAAgBD,EAAY1jb,OAAQ,CACvI,IACIi/B,EAASuiZ,IAAgB/rc,EADlBkuc,EAAc/2c,MACiBk9M,GAC1C,GAAI7qJ,EAAQ,CACV,IAAI6sV,EAAYhiM,EAAS6xN,aAAa18W,GAClC7kD,EAAU0vM,EAAS85P,YAAY93D,GACnC,GAAsB,YAAlBhiM,EAAS12M,MAAsBgH,EAAQ4E,QAAS,CAGlD,IAAI4xC,EAAQqxZ,IAAgBhjZ,EAAQ6qJ,EAAUttJ,EAAO0lZ,GACjDtxZ,EAAMtlD,QACR+R,EAAOrS,KAAK4lD,EAEhB,CACF,CACF,CACF,CAAE,MAAOizZ,GACPJ,EAAM,CACJ5rZ,MAAOgsZ,EAEX,CAAE,QACA,IACMF,IAAkBA,EAAc5ga,OAASn3C,EAAK83c,EAAYhgP,SAAS93N,EAAGS,KAAKq3c,EACjF,CAAE,QACA,GAAID,EAAK,MAAMA,EAAI5rZ,KACrB,CACF,CACF,CACA,OAAOx6C,CACT,CACA,SAASymc,IAA0Bh6P,EAAUr0M,EAAO+mD,EAAOgnZ,GACzD,IAAItB,EAAUsB,EAAWtB,QACrB7kc,EAAS,GAETnN,EADY45M,EAASr2M,UACHuC,SAASP,EAAMC,EAAGD,EAAME,GAC9C,GAAIzF,GAASA,EAAMzD,IAAI,YAAcyD,EAAMzD,IAAI,UAAW,CACxD,IACImkD,EAAQqxZ,IADM/xc,EAAMzD,IAAI,UAAUi2c,YACG54P,EAAUttJ,EAAO0lZ,GACtDtxZ,EAAMtlD,QACR+R,EAAOrS,KAAK4lD,EAEhB,CACA,OAAOvzC,CACT,CAIO,SAAS0mc,IAAkBlnM,EAAMpnQ,EAAO+tc,GAC7C,IAAIQ,EAAKp4c,EACLyR,EAAS,GAETwsM,EAAagzD,EAAKhzD,WAClB6yE,EAAS8mL,EAAW9mL,OACtBlgO,EAAQgnZ,EAAWhnZ,MACnB0sT,EAAWs6F,EAAWt6F,SACxB,IACE,IAAK,IAAI+6F,GAAe,UAASp6P,GAAaq6P,EAAiBD,EAAajkb,QAASkkb,EAAenha,KAAMmha,EAAiBD,EAAajkb,OAAQ,CAC9I,IAAI8pL,EAAWo6P,EAAet3c,MAC9B,GAAIk9M,EAAS9qM,UAAsC,IAA3B8qM,EAAS04P,cAAyB,CAExD,IAAI7d,EAAe76O,EAAS12M,KACxB+wc,OAAe,GAGjBA,EAFE,CAAC,QAAS,OAAQ,WAAWv0c,SAAS+0b,GAEzBmf,IAA0Bh6P,EAAUr0M,EAAO+mD,EAAOgnZ,GACxD,CAAC,OAAQ,OAAQ,OAAQ,WAAW5zc,SAAS+0b,KAIvC,IAAXjoK,EAFW6mL,IAA0Bz5P,EAAUr0M,EAAO+mD,EAAOgnZ,GAKhDM,IAA0Bh6P,EAAUr0M,EAAO+mD,EAAOgnZ,IAGpDl4c,SACX49W,GACFi7F,EAAa9ob,UAGfhe,EAAOrS,KAAKm5c,GAEhB,CACF,CACF,CAAE,MAAOC,GACPJ,EAAM,CACJnsZ,MAAOusZ,EAEX,CAAE,QACA,IACMF,IAAmBA,EAAenha,OAASn3C,EAAKq4c,EAAavgP,SAAS93N,EAAGS,KAAK43c,EACpF,CAAE,QACA,GAAID,EAAK,MAAMA,EAAInsZ,KACrB,CACF,CACA,OAAOx6C,CACT,CC/bO,SAAS,IAAawnE,QACX,IAAZA,IACFA,EAAU,GAEZ,IAAIw/X,GAAe,UAAQx/X,GAAWA,EAAU,CAACA,GACjD,OAAQw/X,EAAa/4c,QACnB,KAAK,EACH+4c,EAAe,CAAC,EAAG,EAAG,EAAG,GACzB,MACF,KAAK,EACHA,EAAe,IAAIn5a,MAAM,GAAGmb,KAAKg+Z,EAAa,IAC9C,MACF,KAAK,EACHA,GAAe,WAAc,UAAc,IAAI,UAAOA,IAAe,IAAQ,UAAOA,IAAe,GACnG,MACF,KAAK,EACHA,GAAe,WAAc,UAAc,IAAI,UAAOA,IAAe,GAAQ,CAACA,EAAa,KAAK,GAChG,MACF,QAEEA,EAAeA,EAAa5yb,MAAM,EAAG,GAGzC,OAAO4yb,CACT,CCxCA,IAAIC,IAA6B,CAAC,EAO3B,SAASC,IAA4B73c,EAAM83c,GAChDF,IAA2B53c,GAAQ83c,CACrC,CCDA,IAAIC,IAAoC,WACtC,SAASA,EAAqBthZ,GAE5B14D,KAAK04D,OAAS14D,KAAKi6c,cAAcvhZ,EACnC,CA8IA,OAzIAshZ,EAAqB95c,UAAUsF,OAAS,SAAUkzD,GAEhD,OADA14D,KAAK04D,OAAS14D,KAAKi6c,cAAcvhZ,GAC1B14D,IACT,EAKAg6c,EAAqB95c,UAAUg6c,UAAY,SAAU/b,GACnD,IAAI5ja,EAAUv6B,KAAK04D,OAAOn+B,QAC1B,OAAO,SAAKA,GAAS,SAAUE,GAC7B,OAAOA,EAAO,KAAO0ja,CACvB,GACF,EAOA6b,EAAqB95c,UAAUgoC,OAAS,SAAUxhB,EAAOmI,GACvD,IAAI1tB,EAAKnB,KAAK04D,OACZ/vD,EAAOxH,EAAGwH,KACVhH,EAAMR,EAAGQ,IACPw4c,EAAmB,UAATxxc,EAEV0O,GAAQ,UAAS,CACnBqP,MAAOA,EACPmI,IAAKA,GACJltB,GAECkmP,EnF1CmB,SAAuBl/O,GAChD,OAAO2ka,IAAe3ka,EAAKiW,cAC7B,CmFwCYujb,CAAcgY,EAAU,QAAUxxc,GAa1C,OAZA3I,KAAKi+Q,WAAa,IAAIp2B,EAAExwO,GAExBrX,KAAKi+Q,WAAWt1Q,KAAOA,EAEnBwxc,IAEGn6c,KAAKk6c,UAAU,cAClBl6c,KAAKisa,aAITjsa,KAAKo6c,cACEp6c,KAAKi+Q,UACd,EAOA+7L,EAAqB95c,UAAU05Q,OAAS,SAAUlzP,EAAOmI,GAUvD,OATA7uB,KAAKi+Q,WAAWz4Q,OAAO,CACrBkhB,MAAOA,EACPmI,IAAKA,IAKP7uB,KAAKi+Q,WAAWroQ,cAChB5V,KAAKo6c,YAAY,CAAC,QAAS,SAAU,cAC9Bp6c,KAAKi+Q,UACd,EAKA+7L,EAAqB95c,UAAU+Y,OAAS,SAAUyO,GAEhD,OADA1nB,KAAK04D,OAAOn+B,QAAQh6B,KAAK,CAAC,SAAUmnB,IAC7B1nB,IACT,EAKAg6c,EAAqB95c,UAAU+gP,QAAU,SAAUywD,GAEjD,OADA1xS,KAAK04D,OAAOn+B,QAAQh6B,KAAK,CAAC,UAAWmxS,IAC9B1xS,IACT,EAMAg6c,EAAqB95c,UAAU4Y,MAAQ,SAAUyvN,EAAIC,GAEnD,OADAxoO,KAAK04D,OAAOn+B,QAAQh6B,KAAK,CAAC,QAASgoO,EAAIC,IAChCxoO,IACT,EAIAg6c,EAAqB95c,UAAU+ra,UAAY,WAEzC,OADAjsa,KAAK04D,OAAOn+B,QAAQh6B,KAAK,CAAC,cACnBP,IACT,EAIAg6c,EAAqB95c,UAAUm6c,UAAY,WACzC,OAAOr6c,KAAK04D,MACd,EAIAshZ,EAAqB95c,UAAUiic,cAAgB,WAC7C,OAAOnic,KAAKi+Q,UACd,EAKA+7L,EAAqB95c,UAAU+5c,cAAgB,SAAUvhZ,GACvD,OAAO,UAAS,CACd/vD,KAAM,OACN4xB,QAAS,GACT54B,IAAK,CAAC,GACL+2D,EACL,EAKAshZ,EAAqB95c,UAAUk6c,YAAc,SAAUE,GACrD,IAAI75c,EAAQT,KACRu6B,EAAUv6B,KAAK04D,OAAOn+B,SAC1B,UAAKA,GAAS,SAAUE,GACtB,IAAIt5B,EACA+V,GAAK,UAAOujB,GACd0ja,EAAajnb,EAAG,GAChBxW,EAAOwW,EAAG8P,MAAM,OACD,UAAMszb,IAAyBA,EAAen1c,SAASg5b,MAErEh9b,EAAKV,EAAMw9Q,YAAYkgL,GAAY98b,MAAMF,GAAI,UAAc,IAAI,UAAOT,IAAO,GAElF,GACF,EACOs5c,CACT,CAnJwC,GAoJxC,QCvJI,IAAqB,WACvB,SAAS/tJ,EAAM75C,EAAMguL,EAAQ16a,GAC3B1lB,KAAKoyQ,KAAOA,EACZpyQ,KAAKogc,OAASA,EACdpgc,KAAK0lB,KAAOA,EACZ1lB,KAAK2I,KAAOy3b,EAAOz3b,IACrB,CA4EA,OArEAsjT,EAAMsuJ,SAAW,SAAUnoM,EAAMzpQ,EAAM+c,GACrC,OAAO,IAAIumS,EAAM75C,EAAM,IAAI,UAAOzpQ,EAAM,CAAC,GAAI+c,EAC/C,EACAlO,OAAOoxB,eAAeqjR,EAAM/rT,UAAW,SAAU,CAG/C8B,IAAK,WAGH,OAAOhC,KAAKogc,OAAO13b,MACrB,EACAigC,YAAY,EACZsqB,cAAc,IAEhBz7C,OAAOoxB,eAAeqjR,EAAM/rT,UAAW,QAAS,CAE9C8B,IAAK,WACH,OAAOhC,KAAKogc,OAAO19a,aACrB,EACAimB,YAAY,EACZsqB,cAAc,IAEhBz7C,OAAOoxB,eAAeqjR,EAAM/rT,UAAW,IAAK,CAE1C8B,IAAK,WACH,OAAOhC,KAAKogc,OAAOn1b,CACrB,EACA09B,YAAY,EACZsqB,cAAc,IAEhBz7C,OAAOoxB,eAAeqjR,EAAM/rT,UAAW,IAAK,CAE1C8B,IAAK,WACH,OAAOhC,KAAKogc,OAAOl1b,CACrB,EACAy9B,YAAY,EACZsqB,cAAc,IAEhBz7C,OAAOoxB,eAAeqjR,EAAM/rT,UAAW,UAAW,CAEhD8B,IAAK,WACH,OAAOhC,KAAKogc,OAAOj1b,OACrB,EACAw9B,YAAY,EACZsqB,cAAc,IAEhBz7C,OAAOoxB,eAAeqjR,EAAM/rT,UAAW,UAAW,CAEhD8B,IAAK,WACH,OAAOhC,KAAKogc,OAAOh1b,OACrB,EACAu9B,YAAY,EACZsqB,cAAc,IAOhBg5P,EAAM/rT,UAAU0iB,SAAW,WACzB,MAAO,gBAAgBrP,OAAOvT,KAAK2I,KAAM,KAC3C,EAKAsjT,EAAM/rT,UAAUqW,MAAQ,WACtB,OAAO,IAAI01S,EAAMjsT,KAAKoyQ,KAAMpyQ,KAAKogc,OAAQpgc,KAAK0lB,KAChD,EACOumS,CACT,CAnFyB,GAoFzB,QC7Ee,SAASuuJ,IAAcpoM,GACpC,IAAIyB,EAAOzB,EAAKqoM,cAAc,QAC1BpjM,EAASjF,EAAKqoM,cAAc,UAC5BnL,EAAal9L,EAAKqoM,cAAc,cAIpC,CAAC5mM,EAHYzB,EAAKqoM,cAAc,UAChBroM,EAAKqoM,cAAc,aAETpjM,EAAQi4L,GAAYlnc,SAAQ,SAAUmlF,GAC1DA,GACFA,EAAWu7B,QAEf,GACF,CClBA,IAAI4xV,IAAyB,WAC3B,SAASA,IAEP16c,KAAKkqP,OAAS,IAAInrO,IAElB/e,KAAK26c,WAAa,IAAI57b,GACxB,CAmMA,OA3LA27b,EAAUx6c,UAAU06c,YAAc,SAAU/6U,EAAOn6G,EAAMs0a,EAAUn5Z,GACjE,IAAIg6a,EAAgB7gB,EAChB8gB,EAAiB96c,KAAK+6c,aAAal6a,GACvC,GAAoB,IAAhBnb,EAAK7kB,QAAgBi6c,EAAgB,CAEvC,IAAIE,EAAaF,EAAehic,MAC5Bmic,EAAgB,CAClBtyc,KAAMqyc,EAAWryc,MAEfqyc,EAAWl9C,aAEbm9C,EAAcz6a,OAASw6a,EAAWx6a,QAEpCq6a,GAAgB,UAAQI,EAAeH,EAAe9gB,SAAUA,EAClE,CACA,IAAIlhb,EAAQqhb,IAAmBt6T,EAAOn6G,EAAMm1b,GAG5C,OADA76c,KAAKg7c,WAAWlic,EAAOkhb,EAAUn5Z,GAC1B/nB,CACT,EAIA4hc,EAAUx6c,UAAU6yH,KAAO,SAAUkrJ,EAAY3wK,GAC/C,IAAI7sG,EAAQT,KAEZA,KAAK26c,WAAWvyc,SAAQ,SAAU8yc,EAAWC,GAE3C,IAAIjhc,EAAM+H,OAAOm1I,iBACbj9I,EAAM8H,OAAOmjS,iBACb5kR,EAAS,IAEb,UAAK06a,GAAW,SAAUr6a,GACxB,IAAI/nB,EAAQrY,EAAM6gT,SAASzgR,GAC3B1mB,GAAM,UAASrB,EAAMqB,KAAOF,KAAKE,IAAIA,EAAKrB,EAAMqB,KAAOA,EACvDD,GAAM,UAASpB,EAAMoB,KAAOD,KAAKC,IAAIA,EAAKpB,EAAMoB,KAAOA,GAEvD,UAAKpB,EAAM0nB,QAAQ,SAAUvuB,GACtBuuB,EAAOr7B,SAAS8M,IACnBuuB,EAAOjgC,KAAK0R,EAEhB,GACF,KAEA,UAAKipc,GAAW,SAAUr6a,GACxB,IAAI/nB,EAAQrY,EAAM6gT,SAASzgR,GAC3B,GAAI/nB,EAAM4xO,aACR5xO,EAAMi+Q,OAAO,CACX78Q,IAAKA,EACLC,IAAKA,EACLqmB,OAAQA,SAEL,GAAI1nB,EAAMglZ,WAAY,CAC3B,IAAIn2W,EAAQ7uC,EAAM6uC,MACdmzZ,EAAiBr6c,EAAMs6c,aAAal6a,GAEpCL,KAAW,UAAIs6a,EAAgB,CAAC,WAAY,YAE9CnzZ,EAAQ2yY,KAA6B,UAAQ,CAAC,EAAGxhb,EAAO,CACtD0nB,OAAQA,IACNy9O,EAAY3wK,IAElBx0F,EAAMi+Q,OAAO,CACXv2P,OAAQA,EACRmnB,MAAOA,GAEX,CACF,GACF,GACF,EAOA+yZ,EAAUx6c,UAAU86c,WAAa,SAAUlic,EAAOkhb,EAAUn5Z,GAE1D,IAAIgjH,EAAK7jJ,KAAK+6c,aAAal6a,GAEvBgjH,GAAMA,EAAG/qI,MAAMnQ,OAASmQ,EAAMnQ,OvB/B/B,SAAmBmQ,EAAOsic,GAC/B,GAAmB,aAAftic,EAAMnQ,MAAyC,aAAlByyc,EAASzyc,KAAqB,CAC7D,IAAIorB,EAAM,CAAC,EACX,IAAK,IAAIrtB,KAAK00c,EACR5jc,OAAOtX,UAAUqX,eAAe3V,KAAKw5c,EAAU10c,KACjDqtB,EAAIrtB,GAAK00c,EAAS10c,IAGtBoS,EAAMi+Q,OAAOhjQ,EACf,CACF,CuBsBMsnb,CAAUx3T,EAAG/qI,MAAOA,GACpB+qI,EAAGm2S,SAAWA,IAGdn2S,EAAK,CACHhjH,IAAKA,EACL/nB,MAAOA,EACPkhb,SAAUA,GAEZh6b,KAAKkqP,OAAOhoP,IAAI2+B,EAAKgjH,IAGvB,IAAIs3T,EAAUn7c,KAAKs7c,WAAWz3T,GAK9B,GAJAA,EAAGs3T,QAAUA,EAEbn7c,KAAKu7c,qBAAqB16a,GAEtBs6a,EAAS,CAEX,IAAID,EAAYl7c,KAAK26c,WAAW34c,IAAIm5c,GAC/BD,IACHA,EAAY,GACZl7c,KAAK26c,WAAWz4c,IAAIi5c,EAASD,IAE/BA,EAAU36c,KAAKsgC,EACjB,CACF,EAKA65a,EAAUx6c,UAAUohT,SAAW,SAAUzgR,GACvC,IAAI26a,EAAYx7c,KAAK+6c,aAAal6a,GAClC,IAAK26a,EAAW,CACd,IAAI37U,GAAQ,UAAKh/F,EAAIvX,MAAM,MACvB4xb,EAAYl7c,KAAK26c,WAAW34c,IAAI69H,GAChCq7U,GAAaA,EAAUr6c,SACzB26c,EAAYx7c,KAAK+6c,aAAaG,EAAU,IAE5C,CACA,OAAOM,GAAaA,EAAU1ic,KAChC,EAKA4hc,EAAUx6c,UAAUu7c,YAAc,SAAU56a,GAC1C,IAAI26a,EAAYx7c,KAAK+6c,aAAal6a,GAClC,GAAI26a,EAAW,CACb,IAAIL,EAAUK,EAAUL,QACpBD,EAAYl7c,KAAK26c,WAAW34c,IAAIm5c,GAEpC,GAAID,GAAaA,EAAUr6c,OAAQ,CACjC,IAAIqkC,EAAMg2a,EAAUhoc,QAAQ2tB,IACf,IAATqE,GACFg2a,EAAU95c,OAAO8jC,EAAK,EAE1B,CACF,CAEAllC,KAAKkqP,OAAO7jN,OAAOxF,EACrB,EAIA65a,EAAUx6c,UAAUqP,MAAQ,WAC1BvP,KAAKkqP,OAAO36O,QACZvP,KAAK26c,WAAWprc,OAClB,EAKAmrc,EAAUx6c,UAAUq7c,qBAAuB,SAAU16a,GACnD,IAAIpgC,EAAQT,KACZA,KAAK26c,WAAWvyc,SAAQ,SAAU8yc,EAAWC,GAC3C,IAAIj2a,EAAMg2a,EAAUhoc,QAAQ2tB,GAC5B,IAAa,IAATqE,EAMF,OALAg2a,EAAU95c,OAAO8jC,EAAK,GAEG,IAArBg2a,EAAUr6c,QACZJ,EAAMk6c,WAAWt0a,OAAO80a,IAEnB,CAEX,GACF,EAKAT,EAAUx6c,UAAUo7c,WAAa,SAAUz3T,GACzC,IAAI/qI,EAAQ+qI,EAAG/qI,MACbkhb,EAAWn2S,EAAGm2S,SACZn6T,EAAQ/mH,EAAM+mH,MACd9M,GAAO,UAAIinU,EAAU,CAAC,SAE1B,OAAgB,IAATjnU,EAAgB8M,GAAiB,IAAT9M,OAAiBt8F,EAAYs8F,CAC9D,EAKA2nV,EAAUx6c,UAAU66c,aAAe,SAAUl6a,GAC3C,OAAO7gC,KAAKkqP,OAAOloP,IAAI6+B,EACzB,EACO65a,CACT,CA1M6B,GCHzBgB,IAA0B,WAQ5B,SAASA,EAAWzsc,EAAK0D,EAAO8wE,EAAQz0E,QAC1B,IAARC,IACFA,EAAM,QAEM,IAAV0D,IACFA,EAAQ,QAEK,IAAX8wE,IACFA,EAAS,QAEE,IAATz0E,IACFA,EAAO,GAEThP,KAAKiP,IAAMA,EACXjP,KAAK2S,MAAQA,EACb3S,KAAKyjF,OAASA,EACdzjF,KAAKgP,KAAOA,CACd,CAqGA,OA7FA0sc,EAAW1oV,SAAW,SAAU/jH,EAAK0D,EAAO8wE,EAAQz0E,GAalD,YAZY,IAARC,IACFA,EAAM,QAEM,IAAV0D,IACFA,EAAQ,QAEK,IAAX8wE,IACFA,EAAS,QAEE,IAATz0E,IACFA,EAAO,GAEF,IAAI0sc,EAAWzsc,EAAK0D,EAAO8wE,EAAQz0E,EAC5C,EAKA0sc,EAAWx7c,UAAUia,IAAM,SAAUigE,GACnC,IAAIj5E,GAAK,UAAOi5E,EAAS,GACvBnrE,EAAM9N,EAAG,GACTwR,EAAQxR,EAAG,GACXsiF,EAAStiF,EAAG,GACZ6N,EAAO7N,EAAG,GAKZ,OAJAnB,KAAKiP,IAAMgL,KAAKE,IAAIna,KAAKiP,IAAKA,GAC9BjP,KAAK2S,MAAQsH,KAAKE,IAAIna,KAAK2S,MAAOA,GAClC3S,KAAKyjF,OAASxpE,KAAKE,IAAIna,KAAKyjF,OAAQA,GACpCzjF,KAAKgP,KAAOiL,KAAKE,IAAIna,KAAKgP,KAAMA,GACzBhP,IACT,EAKA07c,EAAWx7c,UAAU+4b,OAAS,SAAU7+W,GACtC,IAAIj5E,GAAK,UAAOi5E,EAAS,GACvBnrE,EAAM9N,EAAG,GACTwR,EAAQxR,EAAG,GACXsiF,EAAStiF,EAAG,GACZ6N,EAAO7N,EAAG,GAKZ,OAJAnB,KAAKiP,KAAOA,EACZjP,KAAK2S,OAASA,EACd3S,KAAKyjF,QAAUA,EACfzjF,KAAKgP,MAAQA,EACNhP,IACT,EAMA07c,EAAWx7c,UAAUmhN,IAAM,SAAUvyM,EAAMgsB,GACzC,IAAI/sB,EAAQe,EAAKf,MACfC,EAASc,EAAKd,OAChB,OAAQ8sB,GACN,KAAK,IAAUomQ,IACf,KAAK,IAAUu3J,SACf,KAAK,IAAUC,UACb14b,KAAKiP,KAAOjB,EACZ,MACF,KAAK,IAAU0nL,MACf,KAAK,IAAUijQ,UACf,KAAK,IAAUC,aACb54b,KAAK2S,OAAS5E,EACd,MACF,KAAK,IAAUqzR,OACf,KAAK,IAAUy3J,YACf,KAAK,IAAUC,aACb94b,KAAKyjF,QAAUz1E,EACf,MACF,KAAK,IAAUynL,KACf,KAAK,IAAUsjQ,SACf,KAAK,IAAUC,YACbh5b,KAAKgP,MAAQjB,EAKjB,OAAO/N,IACT,EAIA07c,EAAWx7c,UAAUy7c,WAAa,WAChC,MAAO,CAAC37c,KAAKiP,IAAKjP,KAAK2S,MAAO3S,KAAKyjF,OAAQzjF,KAAKgP,KAClD,EAIA0sc,EAAWx7c,UAAUqW,MAAQ,WAC3B,OAAO,IAAKmlc,EAAWt4c,KAAK/B,MAAMq6c,GAAY,UAAc,MAAC,IAAS,UAAO17c,KAAK27c,eAAe,IACnG,EACOD,CACT,CA/H8B,GCQvB,SAASE,IAAiBxpM,GAC/B,IAAIh4L,EAAUg4L,EAAKh4L,QAEnB,IPPK,SAAuBA,GAC5B,QAAQ,UAASA,MAAa,UAAQA,EACxC,COKOyhY,CAAczhY,GACjB,OAAO,IAAKshY,IAAWt4c,KAAK/B,MAAMq6c,KAAY,UAAc,MAAC,IAAS,UAAO,IAAathY,KAAW,KAGvG,IAAIiiX,EAAWjqL,EAAKiqL,SAChByf,EAAa,IAAIJ,IACjB/yE,EAAiB,GACjBozE,EAAoB,GACpBC,EAAkB,GAuCtB,OAtCA,UAAK5pM,EAAK0vL,iBAAiB,SAAUC,GACnC,IAAIp5b,EAAOo5b,EAAGp5b,KACVA,IAASyuZ,IAAe6kD,KAC1BtzE,EAAepoY,KAAKwhc,GACX,CAAC3qC,IAAe8kD,OAAQ9kD,IAAe+kD,OAAQ/kD,IAAeglD,WAAWj3c,SAASwD,GAC3Fozc,EAAkBx7c,KAAKwhc,GACdp5b,IAASyuZ,IAAeilD,MAAQ1zc,IAASyuZ,IAAezpF,SACjEquI,EAAgBz7c,KAAKwhc,EAEzB,KAEA,UAAKp5D,GAAgB,SAAUo5D,GAC7B,IACIua,EADYva,EAAGviY,UACQwwW,gBAEvBmpB,EADgB,IAAIf,IAAKkkB,EAAWrxc,EAAGqxc,EAAWpxc,EAAGoxc,EAAWvuc,MAAOuuc,EAAWtuc,QAC3Dmrb,OAAOkD,GAElCyf,EAAW3hc,IAAIg/a,EACjB,KAEA,UAAK4iB,GAAmB,SAAUha,GAChC,IAAIviY,EAAYuiY,EAAGviY,UACjB1kC,EAAYina,EAAGjna,UACbwhb,EAAa98Y,EAAUwwW,gBACvBusC,EAAmB/8Y,EAAUx9D,IAAI,WACjCw6c,EAAgB,IAAIpkB,IAAKkkB,EAAWrxc,EAAGqxc,EAAWpxc,EAAGoxc,EAAWvuc,MAAOuuc,EAAWtuc,QAAQo3D,OAAOm3Y,GAErGT,EAAWz6P,IAAIm7P,EAAe1hb,EAChC,KAEA,UAAKkhb,GAAiB,SAAUja,GAC9B,IAAIviY,EAAYuiY,EAAGviY,UACjB1kC,EAAYina,EAAGjna,UACbwhb,EAAa98Y,EAAUwwW,gBACvBwsC,EAAgB,IAAIpkB,IAAKkkB,EAAWrxc,EAAGqxc,EAAWpxc,EAAGoxc,EAAWvuc,MAAOuuc,EAAWtuc,QAEtF8tc,EAAWz6P,IAAIm7P,EAAe1hb,EAChC,IACOghb,CACT,CCxDO,SAASW,IAAuBC,EAAOlnM,EAAOmnM,GACnD,IAAIC,EAAcD,EAAG3pV,WAErBwiJ,EAAMptQ,SAAQ,SAAU6J,GACtBA,EAAE4qc,YAAcD,EAAYzic,IAAIlI,EAAE4qc,YAAYlB,aAChD,GACF,CCaA,IAAI,IAAoB,SAAUj6c,GAEhC,SAAS4rT,EAAKj2S,GACZ,IAAI5W,EAAQiB,EAAOE,KAAK5B,KAAM,CAC5BuU,QAAS8C,EAAM9C,WACXvU,KAENS,EAAM+0Q,MAAQ,GAEd/0Q,EAAM2+M,WAAa,GAEnB3+M,EAAMq8c,YAAc,GAEpBr8c,EAAMs8c,aAAe,CAAC,EAEtBt8c,EAAMu8c,aAAc,EAEpBv8c,EAAM0kC,QAAU,CACdzf,KAAM,GACN5O,SAAS,GAGXrW,EAAMw8c,gBRxBDzlc,OAAOopB,KAAKi5a,KQ0BjBp5c,EAAMy8c,UAAY,IAAIxC,IAEtBj6c,EAAM08c,WAAa3C,IAEnB/5c,EAAM28c,kBAAmB,EAEzB38c,EAAM48c,eAAgB,EAEtB58c,EAAM68c,qBAAsB,EAE5B78c,EAAM88c,iBAAmB,IAAIx+b,IAC7Bte,EAAM+8c,cAAgB,SAAUp9c,GAC9B,IAAI6B,EAAO7B,EAAI6B,KACf,IAAKA,EAAKkD,SAAS,KAAM,CAEvB,IAAIjB,EAAIzD,EAAMg9c,gBAAgBr9c,GAE9BK,EAAMi9c,YAAYx5c,GAClBzD,EAAMD,KAAKyB,EAAMiC,EACnB,CACF,EAKAzD,EAAMk9c,iBAAmB,SAAUv9c,GAGjC,IAAI6B,EAAO7B,EAAI6B,KACf,GAAKA,EAAKkD,SAAS,KAAnB,CAIA,IAAIjB,EAAIzD,EAAMg9c,gBAAgBr9c,GAE9BK,EAAMD,KAAKyB,EAAMiC,EAJjB,CAgBF,EAEA,IAAI/C,EAAKkW,EAAM3D,GACbA,OAAY,IAAPvS,GAAgB,UAAS,QAAUA,EACxCyQ,EAASyF,EAAMzF,OACfrK,EAAS8P,EAAM9P,OACfq2c,EAAkBvmc,EAAMumc,gBACxBC,EAAcxmc,EAAMwmc,YACpBC,EAAkBzmc,EAAMymc,gBACxB5mc,EAAKG,EAAM82Z,OACXA,OAAgB,IAAPj3Z,EAAgB,CACvBwP,MAAO,CACLzb,EAAG,EACHC,EAAG,GAEL2jB,IAAK,CACH5jB,EAAG,EACHC,EAAG,IAEHgM,EACJkjE,EAAU/iE,EAAM+iE,QAChB2jY,EAAgB1mc,EAAM0mc,cACtBzwW,EAAQj2F,EAAMi2F,MACdnoE,EAAU9tB,EAAM8tB,QAChB63a,EAAc3lc,EAAM2lc,YACpBgB,EAAkB3mc,EAAM2mc,gBAiB1B,OAhBAv9c,EAAMmR,OAASA,EACfnR,EAAM8G,OAASA,EACf9G,EAAMm9c,gBAAkBA,EACxBn9c,EAAMo9c,YAAcA,EACpBp9c,EAAMq9c,gBAAkBA,EACxBr9c,EAAM0ta,OAASA,EACf1ta,EAAM25E,QAAUA,EAChB35E,EAAMs9c,cAAgBA,EAEtBt9c,EAAM0kC,SAAU,WAAS,UAAS,CAAC,EAAG1kC,EAAM0kC,SAAUA,GACtD1kC,EAAMu8c,YAAcA,EACpBv8c,EAAMiT,GAAKA,EACXjT,EAAMu9c,gBAAkBA,EAExBv9c,EAAMs1c,aAAc,UAASzoW,IAAS,UAAQ,CAAC,EAAG+Z,IAAS,WAAYuuV,IAAYtoW,IAAU+Z,IAAS/Z,GACtG7sG,EAAM6J,OACC7J,CACT,CAugDA,OAxnDA,UAAU6sT,EAAM5rT,GAuHhB4rT,EAAKptT,UAAU+9c,UAAY,SAAUn1V,GACnC9oH,KAAKm9c,WAAar0V,CACpB,EAKAwkM,EAAKptT,UAAUoK,KAAO,WAEpBtK,KAAKk+c,oBAELl+c,KAAKuN,aAELvN,KAAKm+c,0BACLn+c,KAAKo+c,aACP,EAOA9wJ,EAAKptT,UAAU8qE,OAAS,SAAUqzY,EAAUC,QACzB,IAAbD,IACFA,GAAW,GAEbr+c,KAAKQ,KAAK+2Z,IAAiBgnD,cAAe,IAAMhE,SAASv6c,KAAMu3Z,IAAiBgnD,cAAeD,IAE/Ft+c,KAAKw+c,MAAMH,GACXr+c,KAAKQ,KAAK+2Z,IAAiBknD,aAAc,IAAMlE,SAASv6c,KAAMu3Z,IAAiBknD,aAAcH,KACxE,IAAjBt+c,KAAKuU,SAEPvU,KAAK84Z,eAAc,EAEvB,EAKAxrG,EAAKptT,UAAUqP,MAAQ,WACrB,IAAI9O,EAAQT,KACZA,KAAKQ,KAAK+2Z,IAAiBmnD,cAE3B1+c,KAAK2+c,aAAe,GACpB3+c,KAAK4+c,wBAAqBnob,EAC1Bz2B,KAAKq9c,eAAgB,EACrBr9c,KAAKs9c,qBAAsB,EAG3B,IADA,IAAIl+P,EAAap/M,KAAKo/M,WACbl+M,EAAI,EAAGA,EAAIk+M,EAAWv+M,OAAQK,IACrCk+M,EAAWl+M,GAAGqO,QAEd6vM,EAAWl+M,GAAG8H,UAAUmK,QAAO,GAC/BisM,EAAWl+M,GAAG29c,gBAAgB1rc,QAAO,GAEvCnT,KAAKo/M,WAAa,GAElB,IAAI09P,EAAc98c,KAAK88c,YACvB,IAAS57c,EAAI,EAAGA,EAAI47c,EAAYj8c,OAAQK,IACV,eAAxB47c,EAAY57c,GAAGe,KAEjB66c,EAAY57c,GAAGqO,OAAM,GAErButc,EAAY57c,GAAGqO,QAInBvP,KAAKu9c,iBAAiBn1c,SAAQ,SAAU6J,EAAGvL,GACzCjG,EAAMq+c,cAAc5B,UAAUzB,YAAY/0c,EAC5C,IACA1G,KAAKu9c,iBAAiBhuc,QAEtB,IAAIimQ,EAAQx1Q,KAAKw1Q,MACjB,IAASt0Q,EAAI,EAAGA,EAAIs0Q,EAAM30Q,OAAQK,IAChCs0Q,EAAMt0Q,GAAGqO,QAEXvP,KAAKQ,KAAK+2Z,IAAiBwnD,YAC7B,EAKAzxJ,EAAKptT,UAAUkC,QAAU,WAEvBpC,KAAKQ,KAAK+2Z,IAAiBynD,gBAC3B,IAAIjC,EAAe/8c,KAAK+8c,cAExB,UAAKA,GAAc,SAAUpY,GACvBA,GAEFA,EAAYvic,SAEhB,IACApC,KAAKuP,QAGL,IADA,IAAIutc,EAAc98c,KAAK88c,YACd57c,EAAI,EAAGs5B,EAAMsib,EAAYj8c,OAAQK,EAAIs5B,EAAKt5B,IAAK,CACrC47c,EAAY57c,GAClBkB,SACb,CACApC,KAAK49c,gBAAgBzqc,QAAO,GAC5BnT,KAAK69c,YAAY1qc,QAAO,GACxBnT,KAAK89c,gBAAgB3qc,QAAO,GAC5BzR,EAAOxB,UAAUkC,QAAQR,KAAK5B,KAChC,EAOAstT,EAAKptT,UAAU44Z,cAAgB,SAAUvkZ,GACvC7S,EAAOxB,UAAU44Z,cAAcl3Z,KAAK5B,KAAMuU,GAE1C,IADA,IAAI6qM,EAAap/M,KAAKo/M,WACbl+M,EAAI,EAAGs5B,EAAM4kL,EAAWv+M,OAAQK,EAAIs5B,EAAKt5B,IAAK,CACtCk+M,EAAWl+M,GACjB43Z,cAAcvkZ,EACzB,CACA,IAAIuoc,EAAc98c,KAAK88c,YACvB,IAAS57c,EAAI,EAAGs5B,EAAMsib,EAAYj8c,OAAQK,EAAIs5B,EAAKt5B,IAAK,CACrC47c,EAAY57c,GAClB43Z,cAAcvkZ,EAC3B,CAMA,OALAvU,KAAK89c,gBAAgB57c,IAAI,UAAWqS,GACpCvU,KAAK69c,YAAY37c,IAAI,UAAWqS,GAChCvU,KAAK49c,gBAAgB17c,IAAI,UAAWqS,GAEpCvU,KAAK+R,YAAYjK,OACV9H,IACT,EAWAstT,EAAKptT,UAAUwlB,KAAO,SAAUA,GAG9B,OAFA,UAAI1lB,KAAKmlC,QAAS,OAAQzf,GAC1B1lB,KAAKq9c,eAAgB,EACdr9c,IACT,EAKAstT,EAAKptT,UAAUmxB,OAAS,SAAU3L,GAEhC,OADAs/G,QAAQib,KAAK,4EACNjgJ,KAAK0lB,KAAKA,EACnB,EAeA4nS,EAAKptT,UAAUqQ,OAAS,SAAUsvH,EAAO59F,GACvC,OAAI,UAAWA,KACb,UAAIjiC,KAAKmlC,QAAS,CAAC,UAAW06F,GAAQ59F,GAC/BjiC,QAGJiiC,IAAa,UAAIjiC,KAAKmlC,QAAS,CAAC,UAAW06F,YACvC7/H,KAAKmlC,QAAQqyL,QAAQ33F,GAEvB7/H,KACT,EACAstT,EAAKptT,UAAU2zQ,KAAO,SAAUh0I,EAAOy7T,GAMrC,OALI,UAAUz7T,IACZ,UAAI7/H,KAAKmlC,QAAS,CAAC,QAAS06F,IAE5B,UAAI7/H,KAAKmlC,QAAS,CAAC,OAAQ06F,GAAQy7T,GAE9Bt7b,IACT,EACAstT,EAAKptT,UAAUm3Q,OAAS,SAAUx3I,EAAOo/U,GAevC,OAdI,UAAUp/U,IACZ,UAAI7/H,KAAKmlC,QAAS,CAAC,WAAY06F,IACtB,UAASA,KAClB,UAAI7/H,KAAKmlC,QAAS,CAAC,UAAW06F,GAAQo/U,IAClC,UAAcA,KAAkBA,aAAmD,EAASA,EAAanrS,YAC3G,UAAI9zK,KAAKmlC,QAAS,CAAC,UAAW06F,IAAQ,SAAU59H,GAC9C,IAAId,EACJ,OAA0G,QAAlGA,EAAK89c,aAAmD,EAASA,EAAanrS,SAAS7xK,UAA0B,IAAPd,GAAgBA,CACpI,MAIF,UAAInB,KAAKmlC,QAAS,CAAC,WAAY06F,GAE1B7/H,IACT,EACAstT,EAAKptT,UAAU4Y,MAAQ,SAAU+mH,EAAOq/U,GACtC,IAAIz+c,EAAQT,KAQZ,OAPI,UAAS6/H,IACX,UAAI7/H,KAAKmlC,QAAS,CAAC,SAAU06F,GAAQq/U,IAC5B,UAASr/U,KAClB,UAAKA,GAAO,SAAU5tH,EAAGvL,IACvB,UAAIjG,EAAM0kC,QAAS,CAAC,SAAUz+B,GAAIuL,EACpC,IAEKjS,IACT,EAeAstT,EAAKptT,UAAU6kQ,QAAU,SAAUpjQ,GAEjC,OADA,UAAI3B,KAAKmlC,QAAS,UAAWxjC,GACtB3B,IACT,EAkBAstT,EAAKptT,UAAUovc,WAAa,WAC1B,OAAOtvc,KAAKy6c,cAAc,aAC5B,EAKAntJ,EAAKptT,UAAUuqV,MAAQ,WAErB,OADAzlN,QAAQib,KAAK,kFACNjgJ,KAAKsvc,YACd,EACAhiJ,EAAKptT,UAAU+9Q,WAAa,SAAUt1Q,EAAMw2c,GAY1C,OAVI,UAASx2c,IACX,UAAI3I,KAAKmlC,QAAS,aAAc,CAC9Bx8B,KAAMA,EACNhH,IAAKw9c,KAGP,UAAIn/c,KAAKmlC,QAAS,aAAcx8B,GAGlC3I,KAAKo/c,qBAAqB55c,OAAOxF,KAAKmlC,QAAQ84O,YACvCj+Q,KAAKo/c,oBACd,EAKA9xJ,EAAKptT,UAAU+yW,MAAQ,SAAUtqW,EAAMw2c,GAGrC,OAFAn6U,QAAQib,KAAK,kFAENjgJ,KAAKi+Q,WAAWt1Q,EAAMw2c,EAC/B,EAkBA7xJ,EAAKptT,UAAUw6T,MAAQ,SAAU/xT,EAAMhH,GAEjC3B,KAAKq/c,eACPr/c,KAAKq/c,cAAcj9c,UAGrB,IAAI+gC,ExBzbc,SAAkBx6B,GACtC,OAAO80b,KAAO,UAAU90b,GAC1B,CwBube22c,CAAS32c,GACpB,IAAKw6B,EACH,MAAM,IAAI8E,MAAM,UAAU10B,OAAO5K,EAAM,oBAKzC,OAHA3I,KAAKq/c,cAAgB,IAAIl8a,EAAKnjC,MAAM,WAAS,UAAS,CAAC,EAAG2B,GAAM,CAC9DgH,KAAMA,KAED3I,IACT,EAWAstT,EAAKptT,UAAU4W,QAAU,SAAU2iD,GAEjC,OADA,UAAIz5D,KAAKmlC,QAAS,UAAWs0B,GACtBz5D,IACT,EAKAstT,EAAKptT,UAAUq/c,cAAgB,SAAUp6a,GAYvC,OAXAnlC,KAAKuP,SACL,UAAIvP,KAAKmlC,QAASA,GAGlBnlC,KAAKw1Q,MAAMptQ,SAAQ,SAAUgqQ,GAC3B,OAAOA,EAAKhwQ,SACd,IACApC,KAAKw1Q,MAAQ,GACbx1Q,KAAKo+c,cAELp+c,KAAK43a,eAAiB53a,KAAKq8b,SACpBr8b,IACT,EAOAstT,EAAKptT,UAAUw4D,OAAS,SAAUz2D,EAAMirJ,GAGtC,GAAIogK,EAAKptT,UAAU+B,GACjB,MAAM,IAAIgmC,MAAM,sCAAsC10B,OAAOtR,EAAM,kCAIrE,OADA,UAAIjC,KAAKmlC,QAASljC,EAAMirJ,GACjBltJ,IACT,EAaAstT,EAAKptT,UAAUotG,MAAQ,SAAUA,GAE/B,OADAttG,KAAK+1c,aAAc,UAASzoW,IAAS,UAAQ,CAAC,EAAGttG,KAAK+1c,YAAaH,IAAYtoW,IAAU+Z,IAAS/Z,GAC3FttG,IACT,EAaAstT,EAAKptT,UAAUykc,YAAc,SAAU1ic,EAAMN,GAC3C,IAAI69c,EAAmBx/c,KAAK+8c,aAAa96c,GAErCu9c,GACFA,EAAiBp9c,UAGnB,IAAIuic,EAAcC,IAAkB3ic,EAAMjC,KAAM2B,GAKhD,OAJIgjc,IACFA,EAAYr6b,OACZtK,KAAK+8c,aAAa96c,GAAQ0ic,GAErB3kc,IACT,EAQAstT,EAAKptT,UAAUu/c,kBAAoB,SAAUx9c,GAC3C,IAAIu9c,EAAmBx/c,KAAK+8c,aAAa96c,GAErCu9c,IACFA,EAAiBp9c,UACjBpC,KAAK+8c,aAAa96c,QAAQw0B,EAE9B,EAWA62R,EAAKptT,UAAUw/c,WAAa,SAAUh6b,GACpC1lB,KAAKq9c,eAAgB,EACrBr9c,KAAKQ,KAAK+2Z,IAAiBooD,mBAAoB,IAAMpF,SAASv6c,KAAMu3Z,IAAiBooD,mBAAoB,OAEzG3/c,KAAK0lB,KAAKA,GAEV1lB,KAAKw+c,OAAM,GAGX,IADA,IAAIhpM,EAAQx1Q,KAAKw1Q,MACRt0Q,EAAI,EAAGs5B,EAAMg7O,EAAM30Q,OAAQK,EAAIs5B,EAAKt5B,IAAK,CACrCs0Q,EAAMt0Q,GAEZw+c,WAAWh6b,EAClB,CACA1lB,KAAKQ,KAAK+2Z,IAAiBqoD,kBAAmB,IAAMrF,SAASv6c,KAAMu3Z,IAAiBqoD,kBAAmB,MACzG,EAgBAtyJ,EAAKptT,UAAU60Z,WAAa,SAAUpzZ,GAGhC3B,KAAK4R,QAAU5R,KAAK4R,OAAOA,QAE7BozH,QAAQib,KAAK,0FAGf,IAAI4/T,EAAgB,CAClBn6b,KAAM1lB,KAAKmlC,QAAQzf,KACnBwkO,QAAQ,UAAMlqP,KAAKmlC,QAAQ+kN,QAC3B65E,MAAM,UAAM/jU,KAAKmlC,QAAQ4+R,MACzB9lD,YAAY,UAAMj+Q,KAAKo/c,qBAAqB/E,aAC5Ct1M,SAAS,UAAM/kQ,KAAKmlC,QAAQ4/N,SAC5BkS,SAAS,UAAMj3Q,KAAKmlC,QAAQ8xO,SAC5BngQ,QAAS9W,KAAKmlC,QAAQruB,QACtBvC,QAASvU,KAAKuU,SAEZtC,EAAI,IAAIq7S,GAAK,WAAS,UAAS,CACjC17S,OAAQ5R,KACRuH,OAAQvH,KAAKuH,OAEbq2c,gBAAiB59c,KAAK49c,gBAAgBnsc,SAAS,CAC7CgD,OAAQkjZ,MAEVkmD,YAAa79c,KAAK69c,YAAYpsc,SAAS,CACrCgD,OAAQkjZ,MAEVmmD,gBAAiB99c,KAAK89c,gBAAgBrsc,SAAS,CAC7CgD,OAAQkjZ,MAEVrqT,MAAOttG,KAAK+1c,YACZ37X,QAASp6E,KAAKo6E,SACbz4E,GAAM,CACPwjC,SAAS,WAAS,UAAS,CAAC,EAAG06a,IAAgB,UAAIl+c,EAAK,UAAW,CAAC,OAGtE,OADA3B,KAAKw1Q,MAAMj1Q,KAAK0R,GACTA,CACT,EAKAq7S,EAAKptT,UAAUkyQ,KAAO,SAAUzwQ,GAE9B,OADAqjI,QAAQib,KAAK,kFACNjgJ,KAAK+0Z,WAAWpzZ,EACzB,EAMA2rT,EAAKptT,UAAUi8b,WAAa,SAAU/pL,GACpC,IAAI0tM,GAAc,UAAO9/c,KAAKw1Q,OAAO,SAAUvjQ,GAC7C,OAAOA,IAAMmgQ,CACf,IAAG,GAIH,OAHI0tM,GACFA,EAAY19c,UAEP09c,CACT,EAOAxyJ,EAAKptT,UAAUiic,cAAgB,WAC7B,OAAOnic,KAAK4+c,kBACd,EAKAtxJ,EAAKptT,UAAUmnH,SAAW,WACxB,OAAOrnH,KAAK+1c,WACd,EAKAzoJ,EAAKptT,UAAU42c,UAAY,WAGzB,IAAItia,EAAIx0C,KAAKo/M,WAAW,GACxB,OAAO5qK,EAAIA,EAAEsia,YAAc,IAC7B,EAKAxpJ,EAAKptT,UAAU6/c,WAAa,WAE1B,IAAIh+a,EAAS,CAAC,EACVi+a,EAAU,GASd,OARAhgd,KAAKo/M,WAAWh3M,SAAQ,SAAUosC,GAChC,IAAI4jW,EAAS5jW,EAAE2ha,YACXt2U,EAAQu4Q,EAAOv4Q,MACd99F,EAAO89F,KACV99F,EAAO89F,IAAS,EAChBmgV,EAAQz/c,KAAK63Y,GAEjB,IACO4nE,CACT,EAMA1yJ,EAAKptT,UAAU+/c,eAAiB,SAAUC,GAGxC,IAFA,IAAI9gQ,EAAap/M,KAAKo/M,WAClB8qC,EAAS,CAAC,EACLhpP,EAAI,EAAGs5B,EAAM4kL,EAAWv+M,OAAQK,EAAIs5B,EAAKt5B,IAAK,CACrD,IAAIm+M,EAAWD,EAAWl+M,GACtB4X,EAAoB,MAAZonc,EAAkB7gQ,EAASy3P,YAAcz3P,EAAS82P,YAC1Dr9b,IAAUoxO,EAAOpxO,EAAM+mH,SACzBqqH,EAAOpxO,EAAM+mH,OAAS/mH,EAE1B,CACA,OAAOoxO,CACT,EAMAojE,EAAKptT,UAAUohT,SAAW,SAAUzhL,EAAOh/F,GACzC,IAAIs/a,EAAat/a,GAAY7gC,KAAKogd,YAAYvgV,GAE9C,OAAO7/H,KAAK8+c,cAAc5B,UAAU57J,SAAS6+J,EAC/C,EAKA7yJ,EAAKptT,UAAUqic,gBAAkB,SAAU1iU,EAAOh/F,GAChD,OAAO7gC,KAAKshT,SAASzhL,EAAOh/F,EAC9B,EAKAysR,EAAKptT,UAAU+8b,WAAa,WAC1B,OAAOj9b,KAAKmlC,OACd,EAKAmoR,EAAKptT,UAAU+/J,QAAU,WACvB,OAAOjgK,KAAK2+c,YACd,EAKArxJ,EAAKptT,UAAUmgd,gBAAkB,WAC/B,OAAOrgd,KAAKmlC,QAAQzf,IACtB,EAKA4nS,EAAKptT,UAAUy7c,WAAa,WAC1B,OAAO37c,KAAK68c,YAAYlB,YAC1B,EAKAruJ,EAAKptT,UAAUogd,cAAgB,WAC7B,OAAOtgd,KAAKo/M,UACd,EAIAkuG,EAAKptT,UAAUkhc,YAAc,WAC3B,OAAO,UAAOphc,KAAKo/M,YAAY,SAAUz+K,EAAU0+K,GACjD,OAAO1+K,EAASptB,OAAO8rM,EAAS+hP,cAClC,GAAG,GACL,EAeA9zI,EAAKptT,UAAUshc,cAAgB,SAAUv/Z,GACvC,OAAOjiC,KAAKohc,cAAc7wb,QAAO,SAAU/F,GACzC,OAAOy3B,EAAUz3B,EACnB,GACF,EAMA8iT,EAAKptT,UAAU87b,SAAW,SAAUtlG,GAClC,OAAOA,IAAUygE,IAAMopD,GAAKvgd,KAAK49c,gBAAkBlnH,IAAUygE,IAAMqpD,IAAMxgd,KAAK69c,aAAwB1mD,IAAM8kC,KAAOj8b,KAAK89c,gBAC1H,EAKAxwJ,EAAKptT,UAAU0ic,cAAgB,SAAU53b,GACvC,O5B3vBG,SAA6BizQ,EAAYjzQ,GAC9C,IAAI4H,GAAS,EACb,GAAIqrQ,EACF,GAAwB,UAApBA,EAAWt1Q,KAAkB,CAC/B,IAAI+d,EAAQu3P,EAAWv3P,MACrBmI,EAAMovP,EAAWpvP,IACnBjc,EAASusB,IAAUn0B,EAAMC,EAAGyb,EAAMzb,EAAG4jB,EAAI5jB,IAAMk0B,IAAUn0B,EAAME,EAAGwb,EAAMxb,EAAG2jB,EAAI3jB,EACjF,KAAO,CACL,IAAI8ga,EAAc/tJ,EAAW35P,OAAOtZ,GACpC4H,EAASusB,IAAU6sY,EAAY/ga,EAAG,EAAG,IAAMk0B,IAAU6sY,EAAY9ga,EAAG,EAAG,EACzE,CAEF,OAAO0H,CACT,C4B8uBW6tc,CAAoBzgd,KAAKmic,gBAAiBn3b,EACnD,EAKAsiT,EAAKptT,UAAUwgd,oBAAsB,WACnC,OAAO,UAAQ1gd,KAAKo/M,WAAWpuL,KAAI,SAAUwjB,GAC3C,OAAOA,EAAEmsa,oBACX,IACF,EAKArzJ,EAAKptT,UAAU04c,eAAiB,WAE9B,IAAI1uN,EAASlqP,KAAKo/M,WAAWpuL,KAAI,SAAUwjB,GACzC,OAAOA,EAAEoka,gBACX,IACA,OAAO/2a,KAAK,UAAQqoN,GACtB,EAKAojE,EAAKptT,UAAU6R,UAAY,WACzB,OAAO/R,KAAK8+c,cAAcv3c,MAC5B,EAIA+lT,EAAKptT,UAAU4+c,YAAc,WAE3B,IADA,IAAI7sc,EAAIjS,KAEFiS,EAAEL,QACJK,EAAIA,EAAEL,OAKV,OAAOK,CACT,EAMAq7S,EAAKptT,UAAU0gd,MAAQ,SAAUl7b,GAC/B,IAGIza,EACAC,EAJA+yQ,EAAaj+Q,KAAKmic,gBAClB0e,EAAU7gd,KAAKigd,eAAe,KAC9BD,EAAUhgd,KAAKigd,eAAe,KAWlC,IARA,UAAKv6b,GAAM,SAAUvjB,EAAO0+B,GACtBggb,EAAQhgb,KACV51B,EAAI41c,EAAQhgb,GAAK/nB,MAAM3W,IAErB69c,EAAQn/a,KACV31B,EAAI80c,EAAQn/a,GAAK/nB,MAAM3W,GAE3B,MACK,UAAM8I,MAAO,UAAMC,GACtB,OAAO+yQ,EAAWp/D,QAAQ,CACxB5zM,EAAGA,EACHC,EAAGA,GAGT,EAKAoiT,EAAKptT,UAAUu6c,cAAgB,SAAUx4c,GACvC,OAAO,UAAKjC,KAAK88c,aAAa,SAAU33b,GACtC,OAAOA,EAAEljB,OAASA,CACpB,GACF,EAMAqrT,EAAKptT,UAAU4gd,YAAc,SAAU91c,GACrC,IAAI+5P,EAAU/kQ,KAAKy6c,cAAc,WAIjC,OAHI11M,GACFA,EAAQ+7M,YAAY91c,GAEfhL,IACT,EAKAstT,EAAKptT,UAAU6gd,YAAc,WAC3B,IAAIh8M,EAAU/kQ,KAAKy6c,cAAc,WAIjC,OAHI11M,GACFA,EAAQg8M,cAEH/gd,IACT,EAKAstT,EAAKptT,UAAU8gd,YAAc,WAC3B,IAAIj8M,EAAU/kQ,KAAKy6c,cAAc,WAIjC,OAHI11M,GACFA,EAAQi8M,cAEHhhd,IACT,EAKAstT,EAAKptT,UAAU+gd,cAAgB,WAC7B,IAAIl8M,EAAU/kQ,KAAKy6c,cAAc,WAIjC,OAHI11M,GACFA,EAAQk8M,gBAEHjhd,IACT,EAKAstT,EAAKptT,UAAUghd,gBAAkB,WAC/B,IAAIn8M,EAAU/kQ,KAAKy6c,cAAc,WACjC,OAAO11M,GAAWA,EAAQm8M,iBAC5B,EAMA5zJ,EAAKptT,UAAUs3c,gBAAkB,SAAUxsc,GACzC,IAAI+5P,EAAU/kQ,KAAKy6c,cAAc,WACjC,OAAO11M,EAAUA,EAAQyyM,gBAAgBxsc,GAAS,EACpD,EAMAsiT,EAAKptT,UAAUihd,eAAiB,SAAUn2c,GAGxC,IAFA,IAAIo0M,EAAap/M,KAAKo/M,WAClB9rM,EAAM,GACDpS,EAAI,EAAGs5B,EAAM4kL,EAAWv+M,OAAQK,EAAIs5B,EAAKt5B,IAAK,CACrD,IAAIs/M,EAAOpB,EAAWl+M,GAClBw4Z,EAAYl5M,EAAKk5M,UACrBl5M,EAAKjuM,KAAKmnZ,GAEV,IADA,IAAIllW,OAAS,EACJttD,EAAI,EAAGwoK,EAAUgqP,EAAU74Z,OAAQqG,EAAIwoK,EAASxoK,IAAK,EAE5DstD,EAASuiZ,IAAgB/rc,EADd0uZ,EAAUxyZ,GACiBs5M,KAEpCltM,EAAI/S,KAAKi0D,EAEb,CACF,CAEA,IAAIghN,EAAQx1Q,KAAKw1Q,MACjB,IAASt0Q,EAAI,EAAGs5B,EAAMg7O,EAAM30Q,OAAQK,EAAIs5B,EAAKt5B,IAAK,CAChD,IACIkgd,EADO5rM,EAAMt0Q,GACMigd,eAAen2c,GACtCsI,EAAMA,EAAIC,OAAO6tc,EACnB,CACA,OAAO9tc,CACT,EAIAg6S,EAAKptT,UAAU4hc,cAAgB,WAG7B,IAFA,IAAIj3U,EAAa,GACbiyV,EAAc98c,KAAK88c,YACd57c,EAAI,EAAGs5B,EAAMsib,EAAYj8c,OAAQK,EAAIs5B,EAAKt5B,IAAK,CACtD,IAAIqsF,EAAauvX,EAAY57c,GAC7B2pH,EAAaA,EAAWt3G,OAAOg6E,EAAWu0W,gBAC5C,CACA,OAAOj3U,CACT,EAMAyiM,EAAKptT,UAAUmhd,WAAa,SAAU37b,GACpC,IAAI8xM,EAAUx3N,KAAKmlC,QAAQqyL,QAE3B,OAAsB,KAAlB,UAAKA,GACA9xM,GAGF,UAAOA,GAAM,SAAUyyM,EAAOjzL,GAInC,OAFa1tB,OAAOopB,KAAK42L,GAEXhvF,OAAM,SAAU3I,GAG5B,OAAO59F,EAFSu1L,EAAQ33F,IAEPs4F,EAAMt4F,GAAQs4F,EAAOjzL,EACxC,GACF,GACF,EAMAooR,EAAKptT,UAAUohd,gBAAkB,SAAUzhV,EAAOn6G,GAChD,IAAI8xM,EAAUx3N,KAAKmlC,QAAQqyL,QACvBv1L,GAAY,UAAIu1L,EAAS33F,GAC7B,OAAI,UAAY59F,GACPvc,EAEFA,EAAKnV,QAAO,SAAU4nN,EAAOjzL,GAClC,OAAOjD,EAAUk2L,EAAMt4F,GAAQs4F,EAAOjzL,EACxC,GACF,EAIAooR,EAAKptT,UAAUqhd,iBAAmB,WAChC,IAAIpgd,EAAKnB,KAAKmic,gBACZqf,EAAWrgd,EAAGulB,MACd+6b,EAAStgd,EAAG0tB,IACVnI,EAAQ1mB,KAAK43a,eAAe1vL,GAC5Br5N,EAAM7uB,KAAK43a,eAAelhL,IAE1B,UAAQ8qN,EAAU96b,KAAU,UAAQ+6b,EAAQ5yb,GAC9C7uB,KAAKs9c,qBAAsB,GAI7Bt9c,KAAKs9c,qBAAsB,EAC3Bt9c,KAAK4+c,mBAAqB5+c,KAAKo/c,qBAAqBxlM,OAAOlzP,EAAOmI,GACpE,EACAy+R,EAAKptT,UAAUs+c,MAAQ,SAAUH,GAC/Br+c,KAAK0hd,oBAAoBrD,GAEzBr+c,KAAKq7c,YACLr7c,KAAKQ,KAAK+2Z,IAAiBoqD,cAE3B3hd,KAAK4hd,uBAAuBvD,GAE5Br+c,KAAK6hd,sBAAsBxD,GAE3Br+c,KAAK8hd,6BAEL9hd,KAAK+hd,qBAAqB1D,GAC1Br+c,KAAKQ,KAAK+2Z,IAAiByqD,aAC3Bhid,KAAKq9c,eAAgB,CACvB,EAKA/vJ,EAAKptT,UAAU4hd,2BAA6B,WAE1C,IAAI9hd,KAAK4R,OAAT,CAGA,IAAI24D,GAAa,UAAIvqE,KAAK+1c,YAAa,cAEvC,GAAIxrY,EAAY,CAETvqE,KAAKiid,2BACRjid,KAAKiid,yBAA2Bjid,KAAK49c,gBAAgBvsc,SAAS,OAAQ,CACpE/K,MAAO,CAAC,EACRmO,QAAS,EAETD,SAAS,IAEXxU,KAAKiid,yBAAyBvsc,UAGhC,IAAIvU,EAAKnB,KAAKq8b,SACZpxb,EAAI9J,EAAG8J,EACPC,EAAI/J,EAAG+J,EACP6C,EAAQ5M,EAAG4M,MACXC,EAAS7M,EAAG6M,OACdhO,KAAKiid,yBAAyB77c,KAAK,CACjCw1C,KAAM2uB,EACNt/D,EAAGA,EACHC,EAAGA,EACH6C,MAAOA,EACPC,OAAQA,GAEZ,MAEMhO,KAAKiid,2BACPjid,KAAKiid,yBAAyB9uc,QAAO,GACrCnT,KAAKiid,8BAA2Bxrb,EA/BpC,CAkCF,EAKA62R,EAAKptT,UAAU0hd,uBAAyB,SAAUvD,GAEhDr+c,KAAKk+c,oBAELl+c,KAAKuhd,mBAELvhd,KAAKkid,eAAe7D,GAGpBr+c,KAAK68c,YAAcjB,IAAiB57c,MAAMi5b,OAAO,IAAaj5b,KAAK+9c,gBAGnE/9c,KAAK43a,eAAiB53a,KAAKq8b,SAASpD,OAAOj5b,KAAK68c,YAAYlB,cAC5D37c,KAAKuhd,mBAEL,IAAIY,EAAoBnid,KAAK88c,YAAYtpc,MAAK,SAAU2R,GACtD,MAAkB,YAAXA,EAAEljB,IACX,IACAkgd,EAAkB38c,SAGlB,IADA,IAAIgwQ,EAAQx1Q,KAAKw1Q,MACRt0Q,EAAI,EAAGs5B,EAAMg7O,EAAM30Q,OAAQK,EAAIs5B,EAAKt5B,IAAK,CACrCs0Q,EAAMt0Q,GACZ0gd,uBAAuBvD,EAC9B,CACF,EAKA/wJ,EAAKptT,UAAU2hd,sBAAwB,SAAUxD,GAG/C,IAAI+D,GAA6C,IAAzBpid,KAAKg+c,gBAA2BvB,KAAyB,UAAWz8c,KAAKg+c,iBAAmBh+c,KAAKg+c,qBAAkBvnb,EACvI2rb,IACFA,EAAkBpid,KAAMA,KAAKw1Q,MAAOkmM,KAEpC17c,KAAKw1Q,MAAMptQ,SAAQ,SAAU6J,GAC3BA,EAAE2la,eAAiB3la,EAAEoqb,SAASpD,OAAOhnb,EAAE4qc,YAAYlB,cACnD1pc,EAAEsvc,kBACJ,KAGFvhd,KAAKqid,WAGL,IADA,IAAI7sM,EAAQx1Q,KAAKw1Q,MACRt0Q,EAAI,EAAGs5B,EAAMg7O,EAAM30Q,OAAQK,EAAIs5B,EAAKt5B,IAAK,CACrCs0Q,EAAMt0Q,GACZ2gd,sBAAsBxD,EAC7B,CACF,EAKA/wJ,EAAKptT,UAAU6hd,qBAAuB,SAAU1D,GAC9C,IAAIR,EAAc79c,KAAK69c,YACvB,GAAI79c,KAAKg9c,YAAa,CACpB,IAAI77c,EAAKq4b,IAAqBx5b,KAAK4+c,oBACjCj2c,EAAOxH,EAAGwH,KACVrC,EAAQnF,EAAGmF,MACbu3c,EAAY1nc,QAAQ,CAClBxN,KAAMA,EACNrC,MAAOA,GAEX,MAEEu3c,EAAY1nc,aAAQsgB,GAGtBz2B,KAAKsid,gBAAgBjE,GAErBr+c,KAAKuid,iBAAiBlE,GAGtB,IADA,IAAI7oM,EAAQx1Q,KAAKw1Q,MACRt0Q,EAAI,EAAGs5B,EAAMg7O,EAAM30Q,OAAQK,EAAIs5B,EAAKt5B,IAAK,CACrCs0Q,EAAMt0Q,GACZ6gd,qBAAqB1D,EAC5B,CACF,EASA/wJ,EAAKptT,UAAU06c,YAAc,SAAU/6U,EAAOn6G,EAAMs0a,EAAUn5Z,GAE5D,IAAI2hb,GAAkB,UAAIxid,KAAKmlC,QAAQ+kN,OAAQ,CAACrqH,IAC5C4iV,GAAiB,WAAS,UAAS,CAAC,EAAGD,GAAkBxoB,GAE7D,OAAIh6b,KAAK4R,OACA5R,KAAK4R,OAAOgpc,YAAY/6U,EAAOn6G,EAAM+8b,EAAgB5hb,GAGvD7gC,KAAKk9c,UAAUtC,YAAY/6U,EAAOn6G,EAAM+8b,EAAgB5hb,EACjE,EAKAysR,EAAKptT,UAAUwhd,oBAAsB,SAAUrD,GAE7Cr+c,KAAK0id,eAEL1id,KAAK2id,mBAEL3id,KAAK4id,eAAevE,GAEpBr+c,KAAK6id,YAAYxE,GAGjB,IADA,IAAI7oM,EAAQx1Q,KAAKw1Q,MACRt0Q,EAAI,EAAGs5B,EAAMg7O,EAAM30Q,OAAQK,EAAIs5B,EAAKt5B,IAAK,CACrCs0Q,EAAMt0Q,GACZwgd,oBAAoBrD,EAC3B,CACF,EAKA/wJ,EAAKptT,UAAUg+c,kBAAoB,WACjC,IAAIjzc,EACAC,EACA6C,EACAC,EACJ,GAAIhO,KAAK4R,OAAQ,CACf,IAAI9C,EAAO9O,KAAK4R,OAAOgma,eAEvB3sa,EAAI6D,EAAK7D,EACTC,EAAI4D,EAAK5D,EACT6C,EAAQe,EAAKf,MACbC,EAASc,EAAKd,MAChB,MAEE/C,EAAI,EACJC,EAAI,EACJ6C,EAAQ/N,KAAKuH,OAAOvF,IAAI,SACxBgM,EAAShO,KAAKuH,OAAOvF,IAAI,UAE3B,IAAIb,EAAKnB,KAAKmua,OACZznZ,EAAQvlB,EAAGulB,MACXmI,EAAM1tB,EAAG0tB,IAEPwta,EAAW,IAAIjE,IAAKntb,EAAI8C,EAAQ2Y,EAAMzb,EAAGC,EAAI8C,EAAS0Y,EAAMxb,EAAG6C,GAAS8gB,EAAI5jB,EAAIyb,EAAMzb,GAAI+C,GAAU6gB,EAAI3jB,EAAIwb,EAAMxb,IACjHlL,KAAKq8b,UAAar8b,KAAKq8b,SAASzqa,QAAQyqa,KAE3Cr8b,KAAKq8b,SAAW,IAAIjE,IAAKntb,EAAI8C,EAAQ2Y,EAAMzb,EAAGC,EAAI8C,EAAS0Y,EAAMxb,EAAG6C,GAAS8gB,EAAI5jB,EAAIyb,EAAMzb,GAAI+C,GAAU6gB,EAAI3jB,EAAIwb,EAAMxb,KAGzHlL,KAAK43a,eAAiB53a,KAAKq8b,QAC7B,EAQA/uI,EAAKptT,UAAUqN,WAAa,WAE1BvN,KAAK89c,gBAAgB39c,GAAG,IAAKH,KAAK29c,kBAClC39c,KAAK69c,YAAY19c,GAAG,IAAKH,KAAK29c,kBAC9B39c,KAAK49c,gBAAgBz9c,GAAG,IAAKH,KAAK29c,kBAClC39c,KAAKuH,OAAOpH,GAAG,IAAKH,KAAKw9c,cAC3B,EAIAlwJ,EAAKptT,UAAUi+c,wBAA0B,WAEvC,IADA,IAAIlB,EAAkBj9c,KAAKi9c,gBAClB/7c,EAAI,EAAGs5B,EAAMyib,EAAgBp8c,OAAQK,EAAIs5B,EAAKt5B,IAAK,CAC1D,IAAI4hd,EAAiB7F,EAAgB/7c,GACjCiiC,ERjvCD02a,IQivC+BiJ,GAC9B3/a,GACFnjC,KAAK88c,YAAYv8c,KAAK,IAAI4iC,EAAKnjC,MAEnC,CACF,EACAstT,EAAKptT,UAAUu9c,gBAAkB,SAAUr9c,GACzC,IAAIqF,EAAQrF,EAAIqF,MACdxD,EAAO7B,EAAI6B,KACTyjB,EAAOjgB,EAAQA,EAAMzD,IAAI,UAAY,KAErCkC,EAAI,IAAI,IAAMlE,KAAMI,EAAKslB,GAE7B,OADAxhB,EAAEyE,KAAO1G,EACFiC,CACT,EAOAopT,EAAKptT,UAAUw9c,YAAc,SAAUx5c,GACrC,IAAIyE,EAAOzE,EAAEyE,KAGTqC,EAAQ,CACVC,EAHI/G,EAAE+G,EAINC,EAHIhH,EAAEgH,GAMR,GADiB,CAAC,YAAa,UAAW,YAAa,aAAc,aAAc,aAAc,YAAa,WAAY,cAAe,QAAS,WAAY,eAC/I/F,SAASwD,GAAO,CAC7B,IAAIo6c,EAAgB/id,KAAK4ic,cAAc53b,GACnCg4c,EAAW9+c,EAAEqS,QACjB,GAAIwsc,EAAe,CACjB,IAAIE,EAAO,QAAQ1vc,OAAO5K,GAC1Bq6c,EAASr6c,KAAOs6c,EAChBjjd,KAAKQ,KAAKyid,EAAMD,GACH,eAATr6c,GAAkC,aAATA,IAE3B3I,KAAKo9c,kBAAmB,EAE5B,CAEa,cAATz0c,GAAiC,cAATA,GACtB3I,KAAKo9c,mBAAqB2F,GACf,cAATp6c,IACFq6c,EAASr6c,KAAO8uZ,IAAYyrD,YAC5Bljd,KAAKQ,KAAKi3Z,IAAYyrD,YAAaF,IAErCA,EAASr6c,KAAO8uZ,IAAY0rD,MAC5Bnjd,KAAKQ,KAAKi3Z,IAAY0rD,MAAOH,KACnBhjd,KAAKo9c,kBAAoB2F,IACtB,cAATp6c,IACFq6c,EAASr6c,KAAO8uZ,IAAY2rD,YAC5Bpjd,KAAKQ,KAAKi3Z,IAAY2rD,YAAaJ,IAErCA,EAASr6c,KAAO8uZ,IAAYrqS,MAC5BptH,KAAKQ,KAAKi3Z,IAAYrqS,MAAO41V,IAG/Bhjd,KAAKo9c,iBAAmB2F,GACN,eAATp6c,GAAkC,aAATA,GAE9B3I,KAAKo9c,mBACM,eAATz0c,IACFq6c,EAASr6c,KAAO8uZ,IAAYyrD,YAC5Bljd,KAAKQ,KAAKi3Z,IAAYyrD,YAAaF,IAErCA,EAASr6c,KAAO8uZ,IAAY0rD,MAC5Bnjd,KAAKQ,KAAKi3Z,IAAY0rD,MAAOH,GAC7Bhjd,KAAKo9c,kBAAmB,EAG9B,CACF,EAMA9vJ,EAAKptT,UAAUwid,aAAe,WAC5B,IAAIh9b,EAAO1lB,KAAKmlC,QAAQzf,KACxB1lB,KAAK2+c,aAAe3+c,KAAKqhd,WAAW37b,EACtC,EAKA4nS,EAAKptT,UAAU0id,eAAiB,SAAUvE,GAExCr+c,KAAKqjd,uBAKL,IAHA,IAAIplM,EAAaj+Q,KAAKmic,gBAClB0U,GAAY,UAAI72c,KAAKmlC,QAAS,SAAU,CAAC,GACzCi6K,EAAap/M,KAAKo/M,WACbl+M,EAAI,EAAGs5B,EAAM4kL,EAAWv+M,OAAQK,EAAIs5B,EAAKt5B,IAAK,CACrD,IAAIm+M,EAAWD,EAAWl+M,GAE1Bm+M,EAAS6qC,OAASlqP,KAAKsjd,oBACvB,IAAI3hd,EAAM,CACRs8Q,WAAYA,EACZ44L,UAAWA,EACXnxb,KAAM1lB,KAAK2+c,aACXrxW,MAAOttG,KAAK+1c,YACZsH,cAAer9c,KAAKq9c,cACpBC,oBAAqBt9c,KAAKs9c,qBAExBe,EAEFh/P,EAAS75M,OAAO7D,GAEhB09M,EAAS/0M,KAAK3I,EAElB,CAEA3B,KAAKujd,cACP,EAKAj2J,EAAKptT,UAAUmjd,qBAAuB,WAQpC,IAPA,IAAIzjV,EAAS5/H,KAAKwjd,iBACdC,EAAgBzjd,KAAK0jd,mBACrBvid,EAAKnB,KAAKi9b,aACZv3a,EAAOvkB,EAAGukB,KACVxO,EAAK/V,EAAG+oP,OACRA,OAAgB,IAAPhzO,EAAgB,CAAC,EAAIA,EAC5Bync,EAAe3+c,KAAK2+c,aACfz9c,EAAI,EAAGs5B,EAAMolG,EAAO/+H,OAAQK,EAAIs5B,EAAKt5B,IAAK,CACjD,IAAI2+H,EAAQD,EAAO1+H,GACf84b,EAAW9vM,EAAOrqH,GAElBh/F,EAAM7gC,KAAKogd,YAAYvgV,GAC3B7/H,KAAK46c,YAAY/6U,EAEjB4jV,EAAct+c,SAAS06H,GAASn6G,EAAOi5b,EAAc3kB,EAAUn5Z,GAE/D7gC,KAAKu9c,iBAAiBr7c,IAAI2+B,GAAK,EACjC,CACF,EAIAysR,EAAKptT,UAAUm7c,UAAY,WAEzBr7c,KAAK8+c,cAAc5B,UAAUnqV,KAAK/yH,KAAKmic,gBAAiBnic,KAAKstG,MAC/D,EAIAggN,EAAKptT,UAAUojd,kBAAoB,WAGjC,IAFA,IAAI1jV,EAAS5/H,KAAKwjd,iBACdt5N,EAAS,CAAC,EACLhpP,EAAI,EAAGA,EAAI0+H,EAAO/+H,OAAQK,IAAK,CACtC,IAAI2+H,EAAQD,EAAO1+H,GACnBgpP,EAAOrqH,GAAS7/H,KAAKuic,gBAAgB1iU,EACvC,CACA,OAAOqqH,CACT,EACAojE,EAAKptT,UAAUsjd,eAAiB,WAI9B,IAHA,IAAI5jV,EAAS,GACT79F,EAAS,IAAIhjB,IACbqgM,EAAap/M,KAAKo/M,WACbl+M,EAAI,EAAGA,EAAIk+M,EAAWv+M,OAAQK,IAAK,CAG1C2gC,IAFeu9K,EAAWl+M,GACIsid,iBACT5jV,EAAQ79F,EAC/B,CACA,OAAO69F,CACT,EACA0tL,EAAKptT,UAAUwjd,iBAAmB,WAIhC,IAHA,IAAI9jV,EAAS,GACT79F,EAAS,IAAIhjB,IACbqgM,EAAap/M,KAAKo/M,WACbl+M,EAAI,EAAGA,EAAIk+M,EAAWv+M,OAAQK,IAAK,CAG1C2gC,IAFeu9K,EAAWl+M,GACCyid,iBACT/jV,EAAQ79F,EAC5B,CACA,OAAO69F,CACT,EAKA0tL,EAAKptT,UAAUqjd,aAAe,WAG5Bvjd,KAAK4jd,0BACP,EAKAt2J,EAAKptT,UAAU0jd,yBAA2B,WACxC,IAAInjd,EAAQT,KACR6jd,GAAW,UAAc,CAAC7jd,KAAK82c,cAAc,UAAO92c,KAAK+/c,eAAe,GAAOxvc,QAAO,SAAUrM,GAClG,QAASA,CACX,IACI+5Q,EAAaj+Q,KAAKmic,gBAClB2hB,EAAe9jd,KAAKmlC,QAAQ+kN,QAChC,UAAK25N,GAAU,SAAU/qc,GACvB,IAAI+mH,EAAQ/mH,EAAM+mH,MAChBr/F,EAAS1nB,EAAM0nB,OACfs9X,EAAahlZ,EAAMglZ,WACnBt4K,EAAa1sO,EAAM0sO,YAEjBs4K,GAAct4K,IAEZhlN,KAAW,UAAIsjb,EAAc,CAACjkV,EAAO,YAEvC/mH,EAAM6uC,MAAQ2yY,IAA6Bxhb,EAAOmlQ,EAAYx9Q,EAAM6sG,OAG1E,GACF,EAMAggN,EAAKptT,UAAUgid,eAAiB,SAAU7D,GAGxC,IADA,IAAIvB,EAAc98c,KAAK88c,YACd57c,EAAI,EAAGA,EAAI47c,EAAYj8c,OAAQK,IAAK,CAC3C,IAAIqsF,EAAauvX,EAAY57c,GAEzBm9c,EACF9wX,EAAW/nF,UAEX+nF,EAAWh+E,QACXg+E,EAAWviB,SAEf,CACF,EACAsiP,EAAKptT,UAAUmid,SAAW,WACxBrid,KAAKm9c,WAAWn9c,KAClB,EAKAstT,EAAKptT,UAAUyid,iBAAmB,WAChC,IAAIj8b,EAAQ1mB,KAAK43a,eAAe1vL,GAC5Br5N,EAAM7uB,KAAK43a,eAAelhL,GAC9B12P,KAAK4+c,mBAAqB5+c,KAAKo/c,qBAAqBl3a,OAAOxhB,EAAOmI,EACpE,EAKAy+R,EAAKptT,UAAUoid,gBAAkB,SAAUjE,GAezC,IAdA,IAAI0F,EAAc/jd,KAAKmlC,QAAQruB,QAE3BmnQ,EAAaj+Q,KAAKmic,gBAClB6hB,EAAe,CACjB/4c,EAAGjL,KAAKq8b,SAASpxb,EACjBC,EAAGlL,KAAKq8b,SAASnxb,EACjBgF,KAAMlQ,KAAKq8b,SAASnsb,KACpBE,KAAMpQ,KAAKq8b,SAASjsb,KACpBD,KAAMnQ,KAAKq8b,SAASlsb,KACpBE,KAAMrQ,KAAKq8b,SAAShsb,KACpBtC,MAAO/N,KAAKq8b,SAAStub,MACrBC,OAAQhO,KAAKq8b,SAASrub,QAEpBoxM,EAAap/M,KAAKo/M,WACbl+M,EAAI,EAAGA,EAAIk+M,EAAWv+M,OAAQK,IAAK,CAC1C,IAAIm+M,EAAWD,EAAWl+M,GAC1Bm+M,EAAS4+D,WAAaA,EACtB5+D,EAAS2kQ,aAAeA,EACnBD,GAEH1kQ,EAASvoM,SAAQ,GAEnBuoM,EAASm/P,MAAMH,EACjB,CACF,EAKA/wJ,EAAKptT,UAAUqid,iBAAmB,SAAUlE,GAG1C,IAFA,IAAIxzV,EAAa7qH,KAAK8hc,gBAEb5gc,EAAI,EAAGA,EAAI2pH,EAAWhqH,OAAQK,IAAK,CACjC2pH,EAAW3pH,GACjBs+D,UAAUwL,QACf,CACF,EAKAsiP,EAAKptT,UAAU2id,YAAc,SAAUxE,GACjCr+c,KAAKq/c,gBACHhB,EACFr+c,KAAKq/c,cAAc75c,UAEnBxF,KAAKq/c,cAAc9vc,QAEnBvP,KAAKq/c,cAAc/0c,OAEnBtK,KAAKq/c,cAAcr0Y,UAGzB,EACAsiP,EAAKptT,UAAUk+c,YAAc,WAC3B,IAAI39c,EAAQT,KACRmB,EAAKnB,KAAKmlC,QACZjuB,EAAK/V,EAAGi+M,WACRA,OAAoB,IAAPloM,EAAgB,GAAKA,EAClCC,EAAKhW,EAAG47c,aACRA,OAAsB,IAAP5lc,EAAgB,GAAKA,EACpCmnB,EAAKn9B,EAAGq0Q,MACRA,OAAe,IAAPl3O,EAAgB,GAAKA,EAC7BC,EAAKp9B,EAAG8id,YACRA,OAAqB,IAAP1lb,EAAgB,GAAKA,EACnC0/O,EAAa98Q,EAAG88Q,WAChBn9Q,EAASK,EAAGL,OACZsoW,EAASjoW,EAAGioW,OAEVppW,KAAKo/c,qBAEPnhM,GAAcj+Q,KAAKo/c,qBAAqB55c,OAAOy4Q,GAG/Cj+Q,KAAKo/c,qBAAuB,IAAI,IAAqBnhM,GAGvD,IAAK,IAAI/8Q,EAAI,EAAGA,EAAIk+M,EAAWv+M,OAAQK,IAAK,CAC1C,IAAIgjd,EAAiB9kQ,EAAWl+M,GAChClB,KAAKmkd,eAAeD,EACtB,CAEA,IAAK,IAAIh9c,EAAI,EAAGA,EAAI61c,EAAal8c,OAAQqG,IAAK,CAC5C,IAAIk9c,EAAoBrH,EAAa71c,GACjCyB,EAAOy7c,EAAkBz7c,KAC3BhH,EAAMyid,EAAkBzid,IAC1B3B,KAAK2kc,YAAYh8b,EAAMhH,EACzB,CAEA,IAAK,IAAI+E,EAAI,EAAGA,EAAI8uQ,EAAM30Q,OAAQ6F,IAAK,CACrC,IAAI29c,EAAa7uM,EAAM9uQ,GACvB1G,KAAK+0Z,WAAWsvD,EAClB,CAGA,IADA,IAAIC,EAAsBtkd,KAAKy6c,cAAc,cACpCn1b,EAAI,EAAGA,EAAI2+b,EAAYpjd,OAAQykB,IAAK,CAC3C,IAAIi/b,EAAmBN,EAAY3+b,GACnCg/b,EAAoBhV,WAAWiV,EACjC,CAEIzjd,IACF,UAAKA,GAAQ,SAAU0jd,EAAe/5c,GACpChK,EAAMN,GAAGsK,EAAW+5c,EACtB,IAEEp7G,IACF,UAAKA,GAAQ,SAAU1uC,GACrB,IAAI/xT,EAAO+xT,EAAM/xT,KACfg0E,GAAO,UAAO+9O,EAAO,CAAC,SACxBj6T,EAAMi6T,MAAM/xT,EAAMg0E,EACpB,GAEJ,EACA2wO,EAAKptT,UAAUikd,eAAiB,SAAUD,GACxC,IAAIv7c,EAAOu7c,EAAev7c,KACxBxH,EAAK+id,EAAevid,IACpBA,OAAa,IAAPR,EAAgB,CAAC,EAAIA,EAC7B,GAAInB,KAAK2I,GAAO,CACd,IAAI87c,EAAazkd,KAAK2I,GAAMhH,IAC5B,UAAKuid,GAAgB,SAAUjyc,EAAGvL,IAC5B,UAAW+9c,EAAW/9c,KACxB+9c,EAAW/9c,GAAGuL,EAElB,GACF,CACF,EAKAq7S,EAAKptT,UAAUkgd,YAAc,SAAUvgV,GACrC,MAAO,GAAGtsH,OAAOvT,KAAK0T,GAAI,KAAKH,OAAOssH,EACxC,EACOytL,CACT,CA1nDwB,CA0nDtB,KAQK,SAASo3J,IAAiBzid,EAAMkhC,GAErC,IAAKjjC,UAAU+B,EAAK2c,eAAiB,SAAUjd,QACjC,IAARA,IACFA,EAAM,CAAC,GAET,IAAI0V,GAAQ,UAAS,CAEnBrO,UAAWhJ,KAAK69c,YAAYpsc,WAC5Botc,gBAAiB7+c,KAAK89c,gBAAgBrsc,YACrC9P,GACC09M,EAAW,IAAIl8K,EAAK9rB,GAExB,OADArX,KAAKo/M,WAAW7+M,KAAK8+M,GACdA,CACT,CACF,CACA,IClqDIslQ,IAAqB,SAAUjjd,GAGjC,SAASijd,EAAMttc,GACb,IAAI5W,EAAQT,KACRgJ,EAAYqO,EAAMrO,UACpB+E,EAAQsJ,EAAMtJ,MACdC,EAASqJ,EAAMrJ,OACf7M,EAAKkW,EAAMuhZ,QACXA,OAAiB,IAAPz3Z,GAAwBA,EAClCi5E,EAAU/iE,EAAM+iE,QAChB2jY,EAAgB1mc,EAAM0mc,cACtB7mc,EAAKG,EAAMshP,SACXA,OAAkB,IAAPzhP,EAAgB,SAAWA,EACtConP,EAAajnP,EAAMinP,WACnBnnP,EAAKE,EAAMutc,aACXA,OAAsB,IAAPztc,GAAuBA,EACtCmnB,EAAKjnB,EAAM9C,QACXA,OAAiB,IAAP+pB,GAAuBA,EACjCC,EAAKlnB,EAAMwtc,oBACXA,OAA6B,IAAPtmb,GAAwBA,EAC9CC,EAAKnnB,EAAMytc,oBACXA,OAA6B,IAAPtmb,EAAgB,CAAC,UAAW,gBAAiB,gBAAiB,oBAAqB,gBAAiB,oBAAsBA,EAChJ2G,EAAU9tB,EAAM8tB,QAChB63a,EAAc3lc,EAAM2lc,YACpB1vW,EAAQj2F,EAAMi2F,MACd0wW,EAAkB3mc,EAAM2mc,gBACtBv2X,GAAM,UAASz+E,GAAa2B,SAAS8C,eAAezE,GAAaA,EAEjE+7c,EAAiBr3c,IAAU,0CAC/B+5E,EAAI95E,YAAYo3c,GAEhB,IAAIzgb,EAAOq0X,IAAalxU,EAAKmxU,EAAS7qZ,EAAOC,GAEzCzG,EAAS,IzJrCV,SAAmBtF,GACxB,IAAI+id,EAAI9sD,IAAQj2Z,GAChB,IAAK+id,EACH,MAAM,IAAI/8a,MAAM,aAAa10B,OAAOtR,EAAM,iDAE5C,OAAO+id,CACT,CyJ8BYC,CAAUtsN,GACCvrP,SAAO,UAAS,CACjCpE,UAAW+7c,EACXzmN,WAAYA,EACZsmN,aAAcA,EACdC,oBAAqBA,GACpBvgb,IAyCH,OAvCA7jC,EAAQiB,EAAOE,KAAK5B,KAAM,CACxB4R,OAAQ,KACRrK,OAAQA,EAERq2c,gBAAiBr2c,EAAOkK,SAAS,CAC/BgD,OAAQkjZ,MAEVkmD,YAAat2c,EAAOkK,SAAS,CAC3BgD,OAAQkjZ,MAEVmmD,gBAAiBv2c,EAAOkK,SAAS,CAC/BgD,OAAQkjZ,MAEVv9U,QAASA,EACT2jY,cAAeA,EACfxpc,QAASA,EACT4wB,QAASA,EACT63a,YAAaA,EACb1vW,MAAOA,EACP0wW,gBAAiBA,KACbh+c,MAIAwvF,UAAW,WAAS,WACxB/uF,EAAMykd,UACR,GAAG,KACHzkd,EAAMgnF,IAAMA,EACZhnF,EAAM8G,OAASA,EACf9G,EAAMsN,MAAQu2B,EAAKv2B,MACnBtN,EAAMuN,OAASs2B,EAAKt2B,OACpBvN,EAAMm4Z,QAAUA,EAChBn4Z,EAAMmkd,aAAeA,EACrBnkd,EAAMk4P,SAAWA,EACjBl4P,EAAMskd,eAAiBA,EAEvBtkd,EAAM0kd,oBACN1kd,EAAM2kd,cACN3kd,EAAM4kd,wBAAwBP,GACvBrkd,CACT,CAgGA,OAhLA,UAAUkkd,EAAOjjd,GAiFjBijd,EAAMzkd,UAAUmld,wBAA0B,SAAUtI,GAClD,IAAIt8c,EAAQT,MACZ,UAAK+8c,GAAc,SAAUpY,GAC3Blkc,EAAMkkc,YAAYA,EACpB,GACF,EAKAggB,EAAMzkd,UAAUk4D,KAAO,SAAUktZ,GAC/B,IAAIC,EAAO,cACQ,IAAfD,EACFtld,KAAKynF,IAAIj9B,gBAAgB+6Z,GAEzBvld,KAAKynF,IAAIn9B,aAAai7Z,EAAMD,EAAW14Z,MAE3C,EAOA+3Z,EAAMzkd,UAAU+N,WAAa,SAAUF,EAAOC,GAE5C,OAAIhO,KAAK+N,QAAUA,GAAS/N,KAAKgO,SAAWA,IAG5ChO,KAAKQ,KAAK+2Z,IAAiBiuD,oBAC3Bxld,KAAK+N,MAAQA,EACb/N,KAAKgO,OAASA,EACdhO,KAAKuH,OAAO0G,WAAWF,EAAOC,GAE9BhO,KAAKgrE,QAAO,GACZhrE,KAAKQ,KAAK+2Z,IAAiBkuD,oBARlBzld,IAUX,EAIA2kd,EAAMzkd,UAAUqP,MAAQ,WACtB7N,EAAOxB,UAAUqP,MAAM3N,KAAK5B,MAC5BA,KAAKo4D,MAAK,EACZ,EAKAusZ,EAAMzkd,UAAUkC,QAAU,WACxBV,EAAOxB,UAAUkC,QAAQR,KAAK5B,MAC9BA,KAAK0ld,gBACL1ld,KAAKuH,OAAOnF,UvJ/FT,SAAmBi5G,GACxB,IAAIzpG,EAASypG,EAAIjsG,WACbwC,GACFA,EAAOvC,YAAYgsG,EAEvB,CuJ2FIlsG,CAAUnP,KAAK+kd,gBACf/kd,KAAK+kd,eAAiB,IACxB,EAMAJ,EAAMzkd,UAAU44Z,cAAgB,SAAUvkZ,GAGxC,OAFA7S,EAAOxB,UAAU44Z,cAAcl3Z,KAAK5B,KAAMuU,GAC1CvU,KAAK+kd,eAAej5c,MAAMu/C,QAAU92C,EAAU,GAAK,OAC5CvU,IACT,EAIA2kd,EAAMzkd,UAAUgld,SAAW,WAEzB,IAAKlld,KAAK6B,UAAW,CAEnB,IAAIV,EAAKw3Z,IAAa34Z,KAAKynF,KAAK,EAAMznF,KAAK+N,MAAO/N,KAAKgO,QACrDD,EAAQ5M,EAAG4M,MACXC,EAAS7M,EAAG6M,OACdhO,KAAKiO,WAAWF,EAAOC,EACzB,CACF,EACA22c,EAAMzkd,UAAUild,kBAAoB,WAClC1sD,IAAUz4Z,KAAKuH,OAAOvF,IAAI,MAAO,CAC/BqpD,QAAS,eACT0rD,cAAe,UAEnB,EACA4tW,EAAMzkd,UAAUkld,YAAc,WACxBpld,KAAK44Z,SACP11Z,OAAOwH,iBAAiB,SAAU1K,KAAKwvF,SAE3C,EACAm1X,EAAMzkd,UAAUwld,cAAgB,WAC1B1ld,KAAK44Z,SACP11Z,OAAO2H,oBAAoB,SAAU7K,KAAKwvF,SAE9C,EACOm1X,CACT,CAlLyB,CDkqDzB,KC/+CA,QCrLIgB,IAA0B,WAC5B,SAASA,EAAWvzM,GAElBpyQ,KAAKuU,SAAU,EAEfvU,KAAK6qH,WAAa,GAClB7qH,KAAKoyQ,KAAOA,CACd,CA2CA,OAtCAuzM,EAAWzld,UAAUqP,MAAQ,SAAUq2c,IAErC,UAAK5ld,KAAK6qH,YAAY,SAAUk3U,GAC9BA,EAAGviY,UAAUp9D,SACf,IAEApC,KAAK6qH,WAAa,EACpB,EAIA86V,EAAWzld,UAAUkC,QAAU,WAC7BpC,KAAKuP,OACP,EAKAo2c,EAAWzld,UAAU4hc,cAAgB,WACnC,OAAO9hc,KAAK6qH,UACd,EAKA86V,EAAWzld,UAAU44Z,cAAgB,SAAUvkZ,GACzCvU,KAAKuU,UAAYA,IAGrBvU,KAAK6qH,WAAWziH,SAAQ,SAAU25b,GAC5Bxtb,EACFwtb,EAAGviY,UAAUlqD,OAEbysb,EAAGviY,UAAUjqD,MAEjB,IACAvV,KAAKuU,QAAUA,EACjB,EACOoxc,CACT,CAnD8B,GCoB9B,IAAI,IAAuB,SAAUjkd,GAEnC,SAAS8mG,IACP,IAAI/nG,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAEhE,OADAS,EAAMold,UAAW,EACVpld,CACT,CAksBA,OAvsBA,UAAU+nG,EAAS9mG,GAMnB8V,OAAOoxB,eAAe4/D,EAAQtoG,UAAW,OAAQ,CAC/C8B,IAAK,WACH,MAAO,SACT,EACA2mC,YAAY,EACZsqB,cAAc,IAEhBu1C,EAAQtoG,UAAUoK,KAAO,WAAa,EACtCk+F,EAAQtoG,UAAUmxE,UAAY,WAE5B,OAAkB,IADLrxE,KAAKoyQ,KAAK6qL,aAAal4L,OAEtC,EACAv8J,EAAQtoG,UAAU8qE,OAAS,WAAa,EAKxCw9B,EAAQtoG,UAAU4gd,YAAc,SAAU91c,GAExC,GADAhL,KAAKgL,MAAQA,EACRhL,KAAKqxE,YAAV,CAIA,IAAI+gM,EAAOpyQ,KAAKoyQ,KACZjsN,EAAQnmD,KAAKw3c,gBAAgBxsc,GACjC,GAAKm7C,EAAMtlD,OAAX,CAKA,IAAIkxD,EAAQ/xD,KAAK46J,SAASz0G,GACtB2/Z,EAAY,CACd76c,EAAGk7C,EAAM,GAAGl7C,EACZC,EAAGi7C,EAAM,GAAGj7C,GAEdknQ,EAAK5xQ,KAAK,eAAgB,IAAM+5c,SAASnoM,EAAM,gBAAgB,UAAS,CACtEjsN,MAAOA,EACP4L,MAAOA,GACN/mD,KACH,IAAIrJ,EAAM3B,KAAK+ld,gBACXtX,EAAS9sc,EAAI8sc,OACfE,EAAchtc,EAAIgtc,YAClBD,EAAiB/sc,EAAI+sc,eACrBF,EAAc7sc,EAAI6sc,YAClB/yJ,EAAS95S,EAAI85S,OACXuqK,EAAYhmd,KAAKmmD,MACjB8/Z,EAAYjmd,KAAK+xD,MAoCrB,IAnCK,UAAQk0Z,EAAWl0Z,KAAW,UAAQi0Z,EAAW7/Z,IAwBhDnmD,KAAK+kQ,SAAW0pM,IAClBzuc,KAAK+kQ,QAAQv/P,OAAOwF,GACpBhL,KAAK+kQ,QAAQzvP,QAGXtV,KAAKkmd,qBACPlmd,KAAKkmd,oBAAoB5wc,SA5B3B88P,EAAK5xQ,KAAK,iBAAkB,IAAM+5c,SAASnoM,EAAM,kBAAkB,UAAS,CAC1EjsN,MAAOA,EACP4L,MAAOA,GACN/mD,OACC,UAAWwjc,GAAeA,EAAYroZ,GAASqoZ,KAE5Cxuc,KAAK+kQ,SAER/kQ,KAAKmmd,gBAEPnmd,KAAK+kQ,QAAQv/P,QAAO,UAAI,CAAC,EAAG7D,EAAK,CAC/BwkD,MAAOnmD,KAAKomd,qBAAqBjga,GACjC4L,MAAOA,GACN08Y,EAASzjc,EAAQ,CAAC,IACrBhL,KAAK+kQ,QAAQzvP,QAEXq5b,GAEF3uc,KAAKqmd,qBAAqBlga,EAAOs1P,IAarCz7S,KAAKmmD,MAAQA,EACbnmD,KAAK+xD,MAAQA,EACT28Y,EAAgB,CAElB,IAAI4X,GAA2B,UAAI3kd,EAAK,CAAC,aAAc,WAAW,GAClE3B,KAAKumd,iBAAiBD,EAA2Bt7c,EAAQ86c,EAAWnkd,EACtE,CAzDA,MAFE3B,KAAK+gd,aALP,CAiEF,EACAv4W,EAAQtoG,UAAU6gd,YAAc,WAE9B,GADa/gd,KAAK+ld,gBAAgBtX,OAClC,CAKA,IAAIyX,EAAsBlmd,KAAKkmd,oBAC3BA,GACFA,EAAoB3wc,OAGtB,IAAIixc,EAAaxmd,KAAKwmd,WAClBC,EAAazmd,KAAKymd,WAClBD,GACFA,EAAWjxc,OAETkxc,GACFA,EAAWlxc,OAEb,IAAIwvP,EAAU/kQ,KAAK+kQ,QACfA,GACFA,EAAQxvP,OAEVvV,KAAKoyQ,KAAK5xQ,KAAK,eAAgB,IAAM+5c,SAASv6c,KAAKoyQ,KAAM,eAAgB,CAAC,IAC1EpyQ,KAAKgL,MAAQ,IApBb,MAFEhL,KAAKgL,MAAQ,IAuBjB,EAIAw9F,EAAQtoG,UAAU8gd,YAAc,WAC9Bhhd,KAAK6ld,UAAW,EACZ7ld,KAAK+kQ,SAEP/kQ,KAAK+kQ,QAAQgrK,YAAW,EAE5B,EAIAvnU,EAAQtoG,UAAU+gd,cAAgB,WAChCjhd,KAAK6ld,UAAW,EAChB,IAAIlkd,EAAM3B,KAAK+ld,gBACX/ld,KAAK+kQ,SAEP/kQ,KAAK+kQ,QAAQgrK,WAAWpua,EAAI6S,QAEhC,EAIAg0F,EAAQtoG,UAAUghd,gBAAkB,WAClC,OAAOlhd,KAAK6ld,QACd,EACAr9W,EAAQtoG,UAAUqP,MAAQ,WACxB,IAAIpO,EAAKnB,KACP+kQ,EAAU5jQ,EAAG4jQ,QACbyhN,EAAarld,EAAGqld,WAChBC,EAAatld,EAAGsld,WAChBP,EAAsB/kd,EAAG+kd,oBACvBnhN,IACFA,EAAQxvP,OACRwvP,EAAQx1P,SAENi3c,GACFA,EAAWj3c,QAETk3c,GACFA,EAAWl3c,QAET22c,GACFA,EAAoB32c,SAGlBw1P,aAAyC,EAASA,EAAQ/iQ,IAAI,oBAChEhC,KAAK+kQ,QAAQ3iQ,UACbpC,KAAK+kQ,QAAU,MAIjB/kQ,KAAK+xD,MAAQ,KACb/xD,KAAKmmD,MAAQ,IACf,EACAqiD,EAAQtoG,UAAUkC,QAAU,WACtBpC,KAAK+kQ,SACP/kQ,KAAK+kQ,QAAQ3iQ,UAEXpC,KAAKwmd,YACPxmd,KAAKwmd,WAAWpkd,UAEdpC,KAAKymd,YACPzmd,KAAKymd,WAAWrkd,UAEdpC,KAAKo4T,YACPp4T,KAAKo4T,WAAWjlT,QAAO,GAEzBnT,KAAKk2D,OACP,EACAsyC,EAAQtoG,UAAUg2D,MAAQ,WACxBl2D,KAAKmmD,MAAQ,KACbnmD,KAAK+xD,MAAQ,KACb/xD,KAAKkmd,oBAAsB,KAC3Blmd,KAAK0md,uBAAyB,KAC9B1md,KAAKwmd,WAAa,KAClBxmd,KAAKymd,WAAa,KAClBzmd,KAAK+kQ,QAAU,KACf/kQ,KAAKo4T,WAAa,KAClBp4T,KAAK6ld,UAAW,EAChB7ld,KAAKgL,MAAQ,IACf,EACAw9F,EAAQtoG,UAAU44Z,cAAgB,SAAUvkZ,GAC1C,GAAIvU,KAAKuU,UAAYA,EAArB,CAGA,IAAIpT,EAAKnB,KACP+kQ,EAAU5jQ,EAAG4jQ,QACbmhN,EAAsB/kd,EAAG+kd,oBACzBM,EAAarld,EAAGqld,WAChBC,EAAatld,EAAGsld,WACdlyc,GACEwwP,GACFA,EAAQzvP,OAEN4wc,GACFA,EAAoB5wc,OAElBkxc,GACFA,EAAWlxc,OAETmxc,GACFA,EAAWnxc,SAGTyvP,GACFA,EAAQxvP,OAEN2wc,GACFA,EAAoB3wc,OAElBixc,GACFA,EAAWjxc,OAETkxc,GACFA,EAAWlxc,QAGfvV,KAAKuU,QAAUA,CAjCf,CAkCF,EACAi0F,EAAQtoG,UAAUs3c,gBAAkB,SAAUxsc,GAC5C,IAAIgtb,EAAK72b,EAAIu2c,EAAKxgc,EAAI8hc,EAAK7hc,EACvBgvC,EAAQnmD,KAAKs5c,kBAAkBt5c,KAAKoyQ,KAAMpnQ,GAC9C,GAAIm7C,EAAMtlD,OAAQ,CAEhBslD,GAAQ,UAAQA,GAChB,IACE,IAAK,IAAIiiY,GAAU,UAASjiY,GAAQwga,EAAYv+B,EAAQ7yZ,QAASoxb,EAAUrua,KAAMqua,EAAYv+B,EAAQ7yZ,OAAQ,CAC3G,IAAI6pY,EAAUunD,EAAUxkd,MACxB,IACE,IAAK,IAAIykd,GAAalP,OAAM,GAAQ,UAASt4C,IAAWynD,EAAcD,EAAUrxb,QAASsxb,EAAYvua,KAAMuua,EAAcD,EAAUrxb,OAAQ,CACzI,IAAI9d,EAAOovc,EAAY1kd,MACnBm8B,EAAK7mB,EAAKwgc,YACZhtc,EAAIqzB,EAAGrzB,EACPC,EAAIozB,EAAGpzB,EACTuM,EAAKxM,GAAI,UAAQA,GAAKA,EAAEA,EAAEpK,OAAS,GAAKoK,EACxCwM,EAAKvM,GAAI,UAAQA,GAAKA,EAAEA,EAAErK,OAAS,GAAKqK,CAC1C,CACF,CAAE,MAAOotc,GACPZ,EAAM,CACJtqZ,MAAOkrZ,EAEX,CAAE,QACA,IACMuO,IAAgBA,EAAYvua,OAASphC,EAAK0vc,EAAU3tP,SAAS/hN,EAAGtV,KAAKgld,EAC3E,CAAE,QACA,GAAIlP,EAAK,MAAMA,EAAItqZ,KACrB,CACF,CACF,CACF,CAAE,MAAO+qY,GACPH,EAAM,CACJ5qY,MAAO+qY,EAEX,CAAE,QACA,IACMwuB,IAAcA,EAAUrua,OAASn3C,EAAKinb,EAAQnvN,SAAS93N,EAAGS,KAAKwmb,EACrE,CAAE,QACA,GAAI4P,EAAK,MAAMA,EAAI5qY,KACrB,CACF,CAGA,IAAe,IAFFptD,KAAK+ld,gBAAgB9zL,QAEV9rO,EAAMtlD,OAAS,EAAG,CACxC,IAAIimd,EAAW3ga,EAAM,GACjBjsC,EAAMD,KAAKoG,IAAIrV,EAAME,EAAI47c,EAAS,GAAG57c,GACzC,IACE,IAAK,IAAI67c,GAAU,UAAS5ga,GAAQ6ga,EAAYD,EAAQxxb,QAASyxb,EAAU1ua,KAAM0ua,EAAYD,EAAQxxb,OAAQ,CAC3G,IAAI0xb,EAAQD,EAAU7kd,MAClB+kd,EAAYjtc,KAAKoG,IAAIrV,EAAME,EAAI+7c,EAAM,GAAG/7c,GACxCg8c,GAAahtc,IACf4sc,EAAWG,EACX/sc,EAAMgtc,EAEV,CACF,CAAE,MAAO9N,GACPJ,EAAM,CACJ5rZ,MAAOgsZ,EAEX,CAAE,QACA,IACM4N,IAAcA,EAAU1ua,OAASnhC,EAAK4vc,EAAQ9tP,SAAS9hN,EAAGvV,KAAKmld,EACrE,CAAE,QACA,GAAI/N,EAAK,MAAMA,EAAI5rZ,KACrB,CACF,CACAjH,EAAQ,CAAC2ga,EACX,CACA,OAxUN,SAAc3ga,GAWZ,IAVA,IAAIgha,EAAY,GACZnvc,EAAU,SAAiBhQ,GAC7B,IAAIyP,EAAO0uC,EAAMn+C,IACJ,UAAKm/c,GAAW,SAAU7tS,GACrC,OAAOA,EAAQvlI,QAAUt8B,EAAKs8B,OAASulI,EAAQr3K,OAASwV,EAAKxV,MAAQq3K,EAAQn3K,QAAUsV,EAAKtV,OAASm3K,EAAQvnH,QAAUt6C,EAAKs6C,KAC9H,KAEEo1Z,EAAU5md,KAAKkX,EAEnB,EACSzP,EAAQ,EAAGA,EAAQm+C,EAAMtlD,OAAQmH,IACxCgQ,EAAQhQ,GAEV,OAAOm/c,CACT,CAyTa,EAAK,UAAQhha,GACtB,CACA,MAAO,EACT,EACAqiD,EAAQtoG,UAAU4oH,OAAS,WAAa,EACxCtgB,EAAQtoG,UAAUsF,OAAS,WAIzB,GAHIxF,KAAKgL,OACPhL,KAAK8gd,YAAY9gd,KAAKgL,OAEpBhL,KAAK+kQ,QAAS,CAGhB,IAAIx9P,EAASvH,KAAKoyQ,KAAKrgQ,YAGvB/R,KAAK+kQ,QAAQ7iQ,IAAI,SAAU,CACzBwkB,MAAO,CACLzb,EAAG,EACHC,EAAG,GAEL2jB,IAAK,CACH5jB,EAAG1D,EAAOvF,IAAI,SACdkJ,EAAG3D,EAAOvF,IAAI,YAGpB,CACF,EAKAwmG,EAAQtoG,UAAUknd,gBAAkB,SAAUp8c,GAE5C,GAAIhL,KAAK+kQ,QAAS,CAChB,IAAIv6P,EAAKxK,KAAK+kQ,QAAQn+K,eAClBpyE,EAAUxU,KAAK+kQ,QAAQ/iQ,IAAI,WAC/B,GAAIwI,GAAMgK,EAAS,CACjB,IAAIrT,EAAKqJ,EAAGuE,wBACV9D,EAAI9J,EAAG8J,EACPC,EAAI/J,EAAG+J,EACP6C,EAAQ5M,EAAG4M,MACXC,EAAS7M,EAAG6M,OACd,OAAO,IAAIoqb,IAAKntb,EAAGC,EAAG6C,EAAOC,GAAQorb,UAAUpub,EACjD,CACF,CACA,OAAO,CACT,EAEAw9F,EAAQtoG,UAAU6ld,cAAgB,WAChC,IAAI3zM,EAAOpyQ,KAAKoyQ,KACZ15M,EAAS05M,EAAK6qL,aAAal4L,QAC3BsiN,EAAgBrnd,KAAKsnd,qBAAqB5uZ,GAC1C40C,EAAQ8kK,EAAK/qJ,WACbvlH,GAAa,UAAIwrG,EAAO,CAAC,aAAc,WAAY,CAAC,GACpDshW,GAAY,UAAIyY,EAAe,YAAavld,EAAW8sc,WAC3D,OAAO,UAAQ,CAAC,EAAG9sc,EAAYuld,EAAe,CAC5C7yc,WAASo6b,IAAa5uc,KAAK6ld,WAE/B,EAEAr9W,EAAQtoG,UAAUond,qBAAuB,SAAU5uZ,GACjD,IAAI,UAAUA,MAAY,UAAIA,EAAQ,iBACpC,OAAOA,EAET,IAAI6uZ,EAAuB7uZ,EAAOw2X,cAKlC,OAAO,WAAS,UAAS,CAAC,EAAGx2X,GAAS,CACpCw2X,cALkB,SAAuBn9X,EAAO5L,GAChD,IAAI2wB,EAAUywY,EAAqBx1Z,EAAO5L,IAAU,GACpD,OAAO,UAAS2wB,GAAW,2BAA6BA,EAAU,SAAWA,CAC/E,GAIF,EACA0xB,EAAQtoG,UAAU06J,SAAW,SAAUz0G,GACrC,IAAI4L,EAAQ5L,EAAM,GAAG4L,OAAS5L,EAAM,GAAGlkD,KAEvC,OADAjC,KAAK+xD,MAAQA,EACNA,CACT,EACAy2C,EAAQtoG,UAAUimd,cAAgB,WAChC,IAAI5+c,EAASvH,KAAKoyQ,KAAKrgQ,YACnBo8Z,EAAS,CACXznZ,MAAO,CACLzb,EAAG,EACHC,EAAG,GAEL2jB,IAAK,CACH5jB,EAAG1D,EAAOvF,IAAI,SACdkJ,EAAG3D,EAAOvF,IAAI,YAGdL,EAAM3B,KAAK+ld,gBACXhhN,EAAU,IAAI0xL,KAAY,WAAS,UAAS,CAC9C7kb,OAAQrK,EAAOvF,IAAI,MAAMoN,WACzB++Z,OAAQA,GACPxsa,GAAM,CACP4S,SAAS,EACTg7a,WAAY,QAEdxqL,EAAQz6P,OACRtK,KAAK+kQ,QAAUA,CACjB,EACAv8J,EAAQtoG,UAAUmmd,qBAAuB,SAAUlga,EAAOs1P,GACxD,IAAI89J,EAAKp4c,EACL+kd,EAAsBlmd,KAAKwnd,yBAC3BC,EAAWznd,KAAKoyQ,KAAK0sM,cACrB9B,EAAcyK,EAASzK,YAC3B,IACE,IAAK,IAAI0K,GAAU,UAASvha,GAAQwha,EAAYD,EAAQnyb,QAASoyb,EAAUrva,KAAMqva,EAAYD,EAAQnyb,OAAQ,CAC3G,IAAI9d,EAAOkwc,EAAUxld,MACjB8I,EAAIwM,EAAKxM,EACXC,EAAIuM,EAAKvM,EAEX,GAAI8xc,IAAgBkJ,aAAiE,EAASA,EAAoBhxc,WAAY,CAC5H,IAAIgC,EAAKsib,IAAqBiuB,EAAStlB,iBACrCx5b,EAAOuO,EAAGvO,KACVi/c,EAAU1wc,EAAG5Q,MACf4/c,SAA0EA,EAAoB/vc,QAAQ,CACpGxN,KAAMA,EACNrC,MAAOshd,GAEX,MAEE1B,SAA0EA,EAAoB/vc,aAAQsgB,GAExG,IAAI62E,EAAQttG,KAAKoyQ,KAAK/qJ,WAClBwgW,GAAmB,UAAIv6W,EAAO,CAAC,aAAc,UAAW,UAAW,CAAC,GACpEhnG,GAAQ,WAAS,UAAS,CAC5Bs1C,KAAMnkC,EAAKs8B,MACXtL,OAAQ,SACRruB,YAAa3C,EAAKs8B,QACjB,UAAW0nQ,IAAU,WAAS,UAAS,CAAC,EAAGosK,GAAmBpsK,EAAOhkS,IAASgkS,GAAS,CACxFxwS,EAAGA,EACHC,EAAGA,IAELg7c,EAAoB70c,SAAS,SAAU,CACrC/K,MAAOA,GAEX,CACF,CAAE,MAAOqzc,GACPJ,EAAM,CACJnsZ,MAAOusZ,EAEX,CAAE,QACA,IACMgO,IAAcA,EAAUrva,OAASn3C,EAAKumd,EAAQzuP,SAAS93N,EAAGS,KAAK8ld,EACrE,CAAE,QACA,GAAInO,EAAK,MAAMA,EAAInsZ,KACrB,CACF,CACF,EACAo7C,EAAQtoG,UAAUqmd,iBAAmB,SAAUv7c,EAAOrJ,GACpD,IAAImmd,GAAiB,UAAInmd,EAAK,CAAC,aAAc,QAAS,KAC/B,MAAnBmmd,GACE9nd,KAAKymd,YACPzmd,KAAKymd,WAAWlxc,OAElBvV,KAAK+nd,kBAAkB/8c,EAAOrJ,IACF,MAAnBmmd,GACL9nd,KAAKwmd,YACPxmd,KAAKwmd,WAAWjxc,OAElBvV,KAAKgod,kBAAkBh9c,EAAOrJ,IACF,OAAnBmmd,IACT9nd,KAAK+nd,kBAAkB/8c,EAAOrJ,GAC9B3B,KAAKgod,kBAAkBh9c,EAAOrJ,GAElC,EAEA6mG,EAAQtoG,UAAU6nd,kBAAoB,SAAU/8c,EAAO+tc,GACrD,IACIryb,EACAmI,EAFAovP,EAAaj+Q,KAAKiod,oBAAoBjod,KAAKoyQ,MAAM+vL,gBAGrD,GAAIlkL,EAAWktJ,OACTltJ,EAAWutJ,cACb9kZ,EAAQ,CACNzb,EAAGgzQ,EAAWv3P,MAAMzb,EACpBC,EAAGF,EAAME,GAEX2jB,EAAM,CACJ5jB,EAAGgzQ,EAAWpvP,IAAI5jB,EAClBC,EAAGF,EAAME,KAGXwb,EAAQ,CACNzb,EAAGD,EAAMC,EACTC,EAAG+yQ,EAAWpvP,IAAI3jB,GAEpB2jB,EAAM,CACJ5jB,EAAGD,EAAMC,EACTC,EAAG+yQ,EAAWv3P,MAAMxb,QAGnB,CAEL,IAAIwc,EAAQ6xa,IAAgBt7K,EAAYjzQ,GACpC6yB,EAASogP,EAAWiuJ,YACpBl+V,EAASiwM,EAAWmuJ,YACxBv9Y,EAAM8na,IAAiB94Z,EAAO5yB,EAAG4yB,EAAO3yB,EAAG8iE,EAAQtmD,GACnDhB,EAAQmX,CACV,CACA,IAAIl8B,GAAM,UAAQ,CAChB+kB,MAAOA,EACPmI,IAAKA,EACL7lB,UAAWhJ,KAAKkod,8BACf,UAAInP,EAAY,aAAc,CAAC,GAAI/4c,KAAKmod,kBAAkB,IAAKn9c,EAAO+tc,WAClEp3c,EAAIgH,KACX,IAAI69c,EAAaxmd,KAAKwmd,WAClBA,EACFA,EAAWhhd,OAAO7D,IAElB6kd,EAAa,IAAI,IAAe7kd,IACrB2I,OAEbk8c,EAAWx7Y,SACXw7Y,EAAWlxc,OACXtV,KAAKwmd,WAAaA,CACpB,EAEAh+W,EAAQtoG,UAAU8nd,kBAAoB,SAAUh9c,EAAO+tc,GACrD,IACIp3c,EACAgH,EAFAs1Q,EAAaj+Q,KAAKiod,oBAAoBjod,KAAKoyQ,MAAM+vL,gBAGrD,GAAIlkL,EAAWktJ,OAAQ,CACrB,IAAIzkZ,OAAQ,EACRmI,OAAM,EACNovP,EAAWutJ,cACb9kZ,EAAQ,CACNzb,EAAGD,EAAMC,EACTC,EAAG+yQ,EAAWpvP,IAAI3jB,GAEpB2jB,EAAM,CACJ5jB,EAAGD,EAAMC,EACTC,EAAG+yQ,EAAWv3P,MAAMxb,KAGtBwb,EAAQ,CACNzb,EAAGgzQ,EAAWv3P,MAAMzb,EACpBC,EAAGF,EAAME,GAEX2jB,EAAM,CACJ5jB,EAAGgzQ,EAAWpvP,IAAI5jB,EAClBC,EAAGF,EAAME,IAGbvJ,EAAM,CACJ+kB,MAAOA,EACPmI,IAAKA,GAEPlmB,EAAO,MACT,MAEEhH,EAAM,CACJk8B,OAAQogP,EAAWiuJ,YAEnBl+V,OAAQsrX,IAAoBr7K,EAAYjzQ,GACxC+W,WAAYk8P,EAAWl8P,WACvBC,SAAUi8P,EAAWj8P,UAEvBrZ,EAAO,gBAEThH,GAAM,UAAQ,CACZqH,UAAWhJ,KAAKkod,6BACfvmd,GAAK,UAAIo3c,EAAY,aAAc,CAAC,GAAI/4c,KAAKmod,kBAAkB,IAAKn9c,EAAO+tc,KACnEpwc,KACX,IAAI89c,EAAazmd,KAAKymd,WAClBA,EAEExoM,EAAWktJ,QAAqC,WAA3Bs7C,EAAWzkd,IAAI,UAAyBi8Q,EAAWktJ,QAAqC,SAA3Bs7C,EAAWzkd,IAAI,SACnGykd,EAAa,IAAI,EAAU99c,GAAMhH,IACtB2I,OAEXm8c,EAAWjhd,OAAO7D,IAGpB8kd,EAAa,IAAI,EAAU99c,GAAMhH,IACtB2I,OAEbm8c,EAAWz7Y,SACXy7Y,EAAWnxc,OACXtV,KAAKymd,WAAaA,CACpB,EACAj+W,EAAQtoG,UAAUiod,kBAAoB,SAAUx/c,EAAMqC,EAAO+tc,GAC3D,IAAIqP,GAAU,UAAIrP,EAAY,CAAC,aAAc,SACzCtK,GAAS,UAAIsK,EAAY,CAAC,aAAc,WACxC5yZ,EAAQnmD,KAAKmmD,MACjB,GAAIiia,EAAS,CACX,IAAIh2M,EAAOpyQ,KAAKiod,oBAAoBjod,KAAKoyQ,MAErCi2M,EAAYlia,EAAM,GAClBgyV,EAAS/lI,EAAK0kM,YACd1+D,EAAShmI,EAAK2tM,aAAa,GAC3BrjD,OAAS,EACTM,OAAS,EACb,GAAIyxC,EAAQ,CAEV,IAAIziC,EAAchsa,KAAKoyQ,KAAK+vL,gBAAgB79a,OAAOtZ,GACnD0xZ,EAASvkB,EAAO7zX,OAAO0nZ,EAAY/ga,GACnC+xZ,EAAS5kB,EAAO9zX,OAAO0nZ,EAAY9ga,EACrC,MACEwxZ,EAAS2rD,EAAU3ic,KAAKyyX,EAAOt4Q,OAC/Bm9R,EAASqrD,EAAU3ic,KAAK0yX,EAAOv4Q,OAEjC,IAAI/oD,EAAmB,MAATnuE,EAAe+zZ,EAASM,EAMtC,OALI,UAAWorD,GACbA,EAAUA,EAAQz/c,EAAMmuE,EAAS3wB,EAAOn7C,GAExCo9c,EAAQtxY,QAAUA,EAEb,CACLj2D,KAAMunc,EAEV,CACF,EAEA5/W,EAAQtoG,UAAUood,cAAgB,WAChC,IAAKtod,KAAKo4T,WAAY,CACpB,IAAI0lJ,EAAkB99c,KAAKoyQ,KAAK0rM,gBAChC99c,KAAKo4T,WAAa0lJ,EAAgBrsc,SAAS,CACzCxP,KAAM,eACNuS,SAAS,GAEb,CACA,OAAOxU,KAAKo4T,UACd,EAEA5vN,EAAQtoG,UAAUsnd,uBAAyB,WACzC,IAAItB,EAAsBlmd,KAAKkmd,oBAW/B,OAVIA,IAAwBA,EAAoBrkd,WAC9Cqkd,EAAoB32c,QACpB22c,EAAoB5wc,UAEpB4wc,EAAsBlmd,KAAKsod,gBAAgB72c,SAAS,CAClDxP,KAAM,yBAEYwT,UACpBzV,KAAKkmd,oBAAsBA,GAEtBA,CACT,EAEA19W,EAAQtoG,UAAUgod,0BAA4B,WAC5C,IAAIxB,EAAyB1md,KAAK0md,uBASlC,OARKA,KACHA,EAAyB1md,KAAKsod,gBAAgB72c,SAAS,CACrDxP,KAAM,yBACNuS,SAAS,KAEYkB,SACvB1V,KAAK0md,uBAAyBA,GAEzBA,CACT,EACAl+W,EAAQtoG,UAAUo5c,kBAAoB,SAAUlnM,EAAMpnQ,GACpD,IAAIu9c,EAAKpnd,EACT,IAAkC,IAA9BixQ,EAAK6qL,aAAal4L,QAEpB,MAAO,GAET,IACInyP,EAAS0mc,IAAkBlnM,EAAMpnQ,EADpBhL,KAAK+ld,iBAEtB,IAEE,IAAK,IAAI7uc,GAAK,UAASk7P,EAAKoD,OAAQr+P,EAAKD,EAAGqe,QAASpe,EAAGmhC,KAAMnhC,EAAKD,EAAGqe,OAAQ,CAC5E,IAAIizb,EAAYrxc,EAAGhV,MACnByQ,EAASA,EAAOW,OAAOvT,KAAKs5c,kBAAkBkP,EAAWx9c,GAC3D,CACF,CAAE,MAAOy9c,GACPF,EAAM,CACJn7Z,MAAOq7Z,EAEX,CAAE,QACA,IACMtxc,IAAOA,EAAGmhC,OAASn3C,EAAK+V,EAAG+hN,SAAS93N,EAAGS,KAAKsV,EAClD,CAAE,QACA,GAAIqxc,EAAK,MAAMA,EAAIn7Z,KACrB,CACF,CACA,OAAOx6C,CACT,EAGA41F,EAAQtoG,UAAU+nd,oBAAsB,SAAU71M,GAChD,IAAI3xQ,EAAQT,KACZ,OAAIoyQ,EAAKhzD,WAAWv+M,OACXuxQ,GAEF,UAAKA,EAAKoD,OAAO,SAAUgzM,GAChC,OAAO/nd,EAAMwnd,oBAAoBO,EACnC,GACF,EAKAhgX,EAAQtoG,UAAUkmd,qBAAuB,SAAUsC,GACjD,IAAIC,EAAc3od,KAAK+ld,gBAAgB4C,YACnCt1c,EAAKs1c,GAA4B,SAAU12c,GAC7C,OAAOA,CACT,EACA,OAAOoB,EAAGq1c,EACZ,EACOlgX,CACT,CAzsB2B,CAysBzBm9W,KACF,QCruBIiD,IAAiB,CAAC,EAKf,SAASC,IAAalgd,GAC3B,OAAOigd,IAAejgd,EAAKiW,cAC7B,CAMO,SAASkqc,IAAkBngd,EAAMjD,GACtCkjd,IAAejgd,EAAKiW,eAAiBlZ,CACvC,CCVO,IAAIqjd,IAAsB,CAC/Br5C,OAAQ,CACN3pa,SAAU,IACVC,OAAQ,eAEVR,OAAQ,CACNO,SAAU,IACVC,OAAQ,iBAEVwzQ,MAAO,CACLzzQ,SAAU,IACVC,OAAQ,iBAEV2pa,MAAO,CACL5pa,SAAU,IACVC,OAAQ,eAIRgjd,IAAuB,CACzBxmd,SAAU,SAAkBy7Q,GAC1B,MAAO,CACLzE,MAAO,CACL9zQ,UAAWu4Q,EAAWktJ,OAASltJ,EAAWutJ,aAAe,aAAe,aAAe,WAEzFhma,OAAQ,CACNE,UAAWu4Q,EAAWotJ,SAAWptJ,EAAWutJ,aAAe,qBAAuB,MAEpFmE,MAAO,CACLjqa,UAAW,YAGjB,EACAwwB,KAAM,CACJsjP,MAAO,CACL9zQ,UAAW,WAEbiqa,MAAO,CACLjqa,UAAW,aAGfmB,KAAM,CACJ2yQ,MAAO,CACL9zQ,UAAW,WAEbiqa,MAAO,CACLjqa,UAAW,aAGfsF,MAAO,CACL0ka,OAAQ,CACNhqa,UAAW,WAEb8zQ,MAAO,CACL9zQ,UAAW,WAEbiqa,MAAO,CACLjqa,UAAW,aAGfkjD,KAAM,CACJ4wN,MAAO,CACL9zQ,UAAW,WAEbiqa,MAAO,CACLjqa,UAAW,aAGfk6M,QAAS,CACP45D,MAAO,CACL9zQ,UAAW,WAEbiqa,MAAO,CACLjqa,UAAW,aAGf2+H,OAAQ,CACNm1I,MAAO,CACL9zQ,UAAW,WAEbiqa,MAAO,CACLjqa,UAAW,aAGfq2C,KAAM,CACJy9N,MAAO,CACL9zQ,UAAW,WAEbiqa,MAAO,CACLjqa,UAAW,aAGfknD,MAAO,CACL8iX,OAAQ,CACNhqa,UAAW,UACX7B,MAAO,KAET21Q,MAAO,CACL9zQ,UAAW,WAEbF,OAAQ,CACNE,UAAW,mBAEbiqa,MAAO,CACLjqa,UAAW,cAKbujd,IAAkC,CACpC/yb,KAAM,WACJ,MAAO,CACLxwB,UAAW,UAEf,EACAkjD,KAAM,WACJ,MAAO,CACLljD,UAAW,UAEf,EACAmB,KAAM,WACJ,MAAO,CACLnB,UAAW,UAEf,EACAlD,SAAU,SAAkBy7Q,GAC1B,IAAIv4Q,EAUJ,OATIu4Q,EAAWktJ,OACbzla,EAAYu4Q,EAAWutJ,aAAe,YAAc,aAEpD9la,EAAY,aACRu4Q,EAAWotJ,SAAWptJ,EAAWutJ,eAEnC9la,EAAY,YAGT,CACLA,UAAWA,EAEf,EACA2+H,OAAQ,SAAgB45I,GAOtB,MAAO,CACLv4Q,UANEu4Q,EAAWktJ,OACDltJ,EAAWutJ,aAAe,YAAc,YAExC,aAKhB,EACA5rN,QAAS,WACP,MAAO,CACLl6M,UAAW,UACXK,SAAU,IAEd,EACAg2C,KAAM,WACJ,MAAO,CACLr2C,UAAW,UAEf,GAmBK,SAASwjd,IAAqBn2C,EAAa90J,EAAYkrM,GAC5D,IAAIlyc,EAAa+xc,IAAqBj2C,GACtC,OAAI97Z,KACE,UAAWA,KACbA,EAAaA,EAAWgnQ,IAE1BhnQ,GAAa,UAAQ,CAAC,EAAG8xc,IAAqB9xc,GAC1Ckyc,GACKlyc,EAAWkyc,GAGflyc,CACT,CASO,SAASmyc,IAAU3jd,EAAOwR,EAAYtV,GAC3C,IAAI+jB,GAAO,UAAIjgB,EAAMzD,IAAI,UAAW,OAAQi2Z,KACxCvyZ,EAAYuR,EAAWvR,UACvB2jd,EAxCN,SAA4Bpyc,EAAYyO,GACtC,MAAO,CACL7hB,OAAO,UAAWoT,EAAWpT,OAASoT,EAAWpT,MAAM6hB,GAAQzO,EAAWpT,MAC1EmC,QAAQ,UAAWiR,EAAWjR,QAAUiR,EAAWjR,OAAO0f,GAAQzO,EAAWjR,OAC7ED,UAAU,UAAWkR,EAAWlR,UAAYkR,EAAWlR,SAAS2f,GAAQzO,EAAWlR,SACnF1F,SAAU4W,EAAW5W,SACrB6F,OAAQ+Q,EAAW/Q,OAEvB,CAgCyBojd,CAAmBryc,EAAYyO,GACtD,GAAIhgB,EAAW,CAEb,IAAI6jd,EAAkBV,IAAanjd,GAC/B6jd,GACFA,EAAgB9jd,EAAO4jd,EAAkB1nd,EAE7C,MAEE8D,EAAMqR,QAAQnV,EAAI0E,QAASgjd,EAE/B,CCzNO,IAAIG,IAAmB,qBCW1B,IAAuB,SAAU9nd,GAEnC,SAASyS,EAAQxS,GACf,IAAIlB,EAAQiB,EAAOE,KAAK5B,KAAM2B,IAAQ3B,KAEtCS,EAAMu/a,WAAa,GAEnBv/a,EAAM4/a,OAAS,GACf,IAAIopC,EAAe9nd,EAAI8nd,aACrBzgd,EAAYrH,EAAIqH,UAChB0gd,EAAiB/nd,EAAI+nd,eACrBC,EAAehod,EAAIgod,aACnBxod,EAAKQ,EAAI4S,QACTA,OAAiB,IAAPpT,GAAuBA,EAMnC,OALAV,EAAMgpd,aAAeA,EACrBhpd,EAAMuI,UAAYA,EAClBvI,EAAMipd,eAAiBA,EACvBjpd,EAAM8T,QAAUA,EAChB9T,EAAMkpd,aAAeA,EACdlpd,CACT,CAyaA,OA5bA,UAAU0T,EAASzS,GAyBnByS,EAAQjU,UAAU4H,KAAO,SAAUs9R,EAAOi5K,QACvB,IAAbA,IACFA,GAAW,GAEbr+c,KAAKolS,MAAQA,EACbplS,KAAK0lB,KAAO0/Q,EAAM1/Q,KAClB1lB,KAAKsR,UAAYtR,KAAK4pd,aAAaxkL,GAEnCplS,KAAK6pd,UAAUzkL,EAAOi5K,IACD,IAAjBr+c,KAAKuU,SAEPvU,KAAK84Z,eAAc,EAEvB,EAKA3kZ,EAAQjU,UAAUsF,OAAS,SAAU4/R,GACnC,IACEqkL,EADOzpd,KACWypd,aAClBhkd,EAFOzF,KAEIyF,MACb,GAAKA,EAAL,CAIAzF,KAAKolS,MAAQA,EACbplS,KAAK0lB,KAAO0/Q,EAAM1/Q,KAClB1lB,KAAKsR,UAAYtR,KAAK4pd,aAAaxkL,GAEnCplS,KAAK8pd,aAAarkd,EAAO2/R,GAEzB,IAAIskL,EAAiB1pd,KAAK+pd,oBACtBC,EAAWP,EAAaI,UAAU7pd,KAAKsR,UAAW8zR,EAAOskL,GAE7DM,EAASrod,IAAI+jB,KAAO1lB,KAAK0lB,KAEzBskc,EAASrod,IAAIk8D,OAASunO,EAEtB4kL,EAASrod,IAAIgO,QAAU3P,KAEvBA,KAAKiqd,eAAexkd,EAAOukd,EAAUhqd,KAAKkqd,YAAalqd,KAAKmqd,cAAc,UAjB1E,CAkBF,EAIAh2c,EAAQjU,UAAUkC,QAAU,WAC1B,IACEqnd,EADOzpd,KACWypd,aAClBhkd,EAFOzF,KAEIyF,MACb,GAAIA,EAAO,CACT,IAAIwR,EAAajX,KAAKmqd,cAAc,SAChClzc,EAEFmyc,IAAU3jd,EAAOwR,EAAY,CAC3BgnQ,WAAYwrM,EAAaxrM,WACzB53Q,SAAS,UAAS,CAAC,EAAGZ,EAAMW,UAI9BX,EAAM0N,QAAO,EAEjB,CAEAnT,KAAKqgb,OAAS,GACdrgb,KAAKypd,kBAAehzb,EACpBz2B,KAAKgJ,eAAYytB,EACjBz2B,KAAKyF,WAAQgxB,EACbz2B,KAAK8W,aAAU2f,EACfz2B,KAAKq/M,cAAW5oL,EAChBz2B,KAAKggb,WAAa,GAClBhgb,KAAKolS,WAAQ3uQ,EACbz2B,KAAK0lB,UAAO+Q,EACZz2B,KAAK0pd,oBAAiBjzb,EACtBz2B,KAAK4qb,iBAAcn0Z,EACnB/0B,EAAOxB,UAAUkC,QAAQR,KAAK5B,KAChC,EAKAmU,EAAQjU,UAAU44Z,cAAgB,SAAUvkZ,GAC1C7S,EAAOxB,UAAU44Z,cAAcl3Z,KAAK5B,KAAMuU,GACtCA,GACEvU,KAAKyF,OACPzF,KAAKyF,MAAM6P,OAETtV,KAAKggb,YACPhgb,KAAKggb,WAAW53a,SAAQ,SAAUwkD,GAChCA,EAAMt3C,MACR,MAGEtV,KAAKyF,OACPzF,KAAKyF,MAAM8P,OAETvV,KAAKggb,YACPhgb,KAAKggb,WAAW53a,SAAQ,SAAUwkD,GAChCA,EAAMr3C,MACR,IAGN,EAqBApB,EAAQjU,UAAUk/D,SAAW,SAAUmiY,EAAW6oB,GAChD,IAAIjpd,EAAKnB,KACPqgb,EAASl/a,EAAGk/a,OACZopC,EAAetod,EAAGsod,aAClBrkL,EAAQjkS,EAAGikS,MACX3/R,EAAQtE,EAAGsE,MACX6L,EAAYnQ,EAAGmQ,UACbtJ,EAAQq4a,EAAOnta,QAAQqub,GAC3B,GAAI6oB,EAAa,CAEf,GAAIpid,GAAS,EAEX,OAEFq4a,EAAO9/a,KAAKghc,GACM,WAAdA,GAAwC,aAAdA,GAC5B97b,SAA8CA,EAAMgQ,SAExD,KAAO,CACL,IAAe,IAAXzN,EAEF,OAGF,GADAq4a,EAAOj/a,OAAO4G,EAAO,GACH,WAAdu5b,GAAwC,aAAdA,EAA0B,CACtD,IAAIrqb,EAAKlX,KAAKq/M,SACZgrQ,EAAanzc,EAAGmzc,WAEdnlb,EADehuB,EAAGozc,eACKtqd,KAAKq/M,SAAS1+K,SAAS9/B,OAASb,KAAK2pd,aAAe3pd,KAAK2pd,aACpFU,EAAa5kd,EAAM+P,UAAU0vB,GAAOz/B,EAAMvD,IAAI,SAAUgjC,EAC1D,CACF,CAEA,IAAIqlb,EAAiBd,EAAaI,UAAUv4c,EAAW8zR,EAAOplS,KAAK+pd,qBAC/D1pC,EAAOx/a,OAETb,KAAKiqd,eAAexkd,EAAO8kd,EAAgBlqC,EAAQ,MAGnDrgb,KAAKiqd,eAAexkd,EAAO8kd,EAAgB,CAAC,SAAU,MAExDA,EAAep3c,QAAO,GACtB,IAAIs6Z,EAAc,CAChBlqX,MAAOg+Y,EACP6oB,YAAaA,EACbz6c,QAAS3P,KACT0I,OAAQ1I,KAAKgJ,WAEfhJ,KAAKgJ,UAAUxI,KAAK,cAAeita,GAEnCD,IAAoBxta,KAAKyF,MAAO,cAAegoa,EACjD,EAIAt5Z,EAAQjU,UAAUsqd,YAAc,WAC9B,IAAI/pd,EAAQT,KACRqgb,EAASrgb,KAAKqgb,QAClB,UAAKA,GAAQ,SAAU98X,GACrB9iD,EAAM2+D,SAAS7b,GAAO,EACxB,IACAvjD,KAAKqgb,OAAS,EAChB,EAMAlsa,EAAQjU,UAAUs8a,SAAW,SAAU+kB,GACrC,OAAOvhc,KAAKqgb,OAAOl7a,SAASo8b,EAC9B,EAKAptb,EAAQjU,UAAUgqd,UAAY,WAC5B,OAAOlqd,KAAKqgb,MACd,EAKAlsa,EAAQjU,UAAU+/J,QAAU,WAC1B,OAAOjgK,KAAK0lB,IACd,EAKAvR,EAAQjU,UAAUwhc,SAAW,WAC3B,OAAO1hc,KAAKolS,KACd,EAKAjxR,EAAQjU,UAAU+P,QAAU,WAC1B,IACExK,EADOzF,KACIyF,MACXu6a,EAFOhgb,KAESggb,WACdlxa,EAAO,CACT7D,EAAG,EACHC,EAAG,EACHgF,KAAM,EACNE,KAAM,EACND,KAAM,EACNE,KAAM,EACNtC,MAAO,EACPC,OAAQ,GAkBV,OAhBIvI,IACFqJ,EAAOrJ,EAAMmL,iBAEXova,GACFA,EAAW53a,SAAQ,SAAUwkD,GAC3B,IAAI69Z,EAAY79Z,EAAMh8C,gBACtB9B,EAAK7D,EAAIgP,KAAKC,IAAIuwc,EAAUx/c,EAAG6D,EAAK7D,GACpC6D,EAAK5D,EAAI+O,KAAKC,IAAIuwc,EAAUv/c,EAAG4D,EAAK5D,GACpC4D,EAAKoB,KAAO+J,KAAKC,IAAIuwc,EAAUv6c,KAAMpB,EAAKoB,MAC1CpB,EAAKsB,KAAO6J,KAAKC,IAAIuwc,EAAUr6c,KAAMtB,EAAKsB,MAC1CtB,EAAKqB,KAAO8J,KAAKE,IAAIswc,EAAUt6c,KAAMrB,EAAKqB,MAC1CrB,EAAKuB,KAAO4J,KAAKE,IAAIswc,EAAUp6c,KAAMvB,EAAKuB,KAC5C,IAEFvB,EAAKf,MAAQe,EAAKqB,KAAOrB,EAAKoB,KAC9BpB,EAAKd,OAASc,EAAKuB,KAAOvB,EAAKsB,KACxBtB,CACT,EACAqF,EAAQjU,UAAU66a,eAAiB,WACjC,IAAK/6a,KAAK4qb,YAAa,CACrB,IAAIzpb,EAAKnB,KACPsR,EAAYnQ,EAAGmQ,UACf+tM,EAAWl+M,EAAGk+M,SACdoqQ,EAAetod,EAAGsod,aAChBiB,EAAcrrQ,EAASqrQ,YACvBC,EAAmBlB,EAAakB,iBAChCC,EAAanB,EAAan8W,MAAMh8F,IAAcm4c,EAAan8W,MAAMq9W,GACrE3qd,KAAK4qb,aAAc,UAAQ,CAAC,EAAGggC,EAAYF,EAC7C,CACA,OAAO1qd,KAAK4qb,WACd,EAEAz2a,EAAQjU,UAAU2qd,cAAgB,SAAUtpB,EAAWupB,GACrD,IAAIlgC,EAAc5qb,KAAK+6a,iBACnBgwC,GAAW,UAAIngC,EAAa,CAAC2W,EAAW,SAAU,CAAC,GACnDypB,EAAaD,EAASD,IAAaC,EACvC,OAAI,UAAWC,GACNA,EAAWhrd,MAEbgrd,CACT,EAEA72c,EAAQjU,UAAUiqd,cAAgB,SAAUhB,GAC1C,IAAI1od,EAAQT,KACR8W,EAAU9W,KAAK8W,QACnB,GAAIA,EAAS,CACX,IAAIm0c,EAAQn0c,EAAQqyc,GACpB,OAAI8B,GAEK,WAAS,UAAS,CAAC,EAAGA,GAAQ,CACnC5qd,SAAU,WACR,IAAIc,GACJ,UAAW8pd,EAAM5qd,WAAa4qd,EAAM5qd,WACV,QAAzBc,EAAKV,EAAM4+M,gBAA6B,IAAPl+M,GAAyBA,EAAGX,KAAKg3Z,IAAqB0zD,mBAC1F,IAGGD,CACT,CACA,OAAO,IACT,EAEA92c,EAAQjU,UAAU2pd,UAAY,SAAUzkL,EAAOi5K,GAC7C,IAAIl9c,OACa,IAAbk9c,IACFA,GAAW,GAEb,IAAInnc,EAAKlX,KACPypd,EAAevyc,EAAGuyc,aAClBzgd,EAAYkO,EAAGlO,UACfsI,EAAY4F,EAAG5F,UAGjB,GADAtR,KAAKyF,MAAQgkd,EAAaI,UAAUv4c,EAAW8zR,EAAOp8R,GAClDhJ,KAAKyF,MAAO,CACdzF,KAAK8pd,aAAa9pd,KAAKyF,MAAO2/R,GAE9B,IAAIntR,EAASjY,KAAKyF,MAAM9D,IAAIM,KAEvBgW,GAIM,UAASA,KAElBjY,KAAKyF,MAAM9D,IAAIM,KAAO,CAAC,UAAWgW,IAHlCjY,KAAKyF,MAAM9D,IAAIM,KAAO,CAAC,UAAWjC,KAAKypd,aAAavvB,cAMtD,IAAIivB,EAAc9K,EAAW,QAAU,SACnCpnc,EAAajX,KAAKmqd,cAAchB,GAChClyc,IAEuB,QAAxB9V,EAAKnB,KAAKq/M,gBAA6B,IAAPl+M,GAAyBA,EAAGX,KAAKg3Z,IAAqB2zD,qBACvF/B,IAAUppd,KAAKyF,MAAOwR,EAAY,CAChCgnQ,WAAYwrM,EAAaxrM,WACzB53Q,SAAS,UAAS,CAAC,EAAGrG,KAAKyF,MAAMW,UAGvC,CACF,EAEA+N,EAAQjU,UAAU6pd,kBAAoB,WACpC,IAAK/pd,KAAK0pd,eAAgB,CACxB,IAAI0B,EAAYprd,KAAKgJ,UAAU8I,eAC/B9R,KAAK0pd,eAAiB,IAAI0B,EAAU,CAAC,EACvC,CACA,OAAOprd,KAAK0pd,cACd,EAEAv1c,EAAQjU,UAAU4pd,aAAe,SAAUrkd,EAAOigB,GAChD,IAAIjlB,EAAQT,MAEZyF,EAAM9D,IAAIk8D,OAASn4C,EAEnBjgB,EAAM9D,IAAIgO,QAAU3P,KAChByF,EAAMmK,YACOnK,EAAMzD,IAAI,YAChBoG,SAAQ,SAAU0H,GACzBrP,EAAMqpd,aAAah6c,EAAO4V,EAC5B,GAEJ,EAEAvR,EAAQjU,UAAU+pd,eAAiB,SAAUryB,EAAaC,EAAaxX,EAAQppa,EAAYjP,GACzF,IACI7G,EADAV,EAAQT,KAQZ,QANe,IAAXqgb,IACFA,EAAS,SAEG,IAAVr4a,IACFA,EAAQ,GAEL4vb,GAAgBC,EAArB,CAIA,IAAI5ib,EAAO2ib,EAAY51b,IAAI,aACvBqpd,EAAUxzB,EAAY71b,IAAI,aAE9B,GADAhC,KAAKiqd,eAAeh1c,EAAMo2c,EAAShrC,EAAQppa,GACvC2gb,EAAYhob,UAGd,IAFA,IAAIC,EAAW+nb,EAAY51b,IAAI,YAC3Bspd,EAAczzB,EAAY71b,IAAI,YACzBd,EAAI,EAAGA,EAAI2O,EAAShP,OAAQK,IACnClB,KAAKiqd,eAAep6c,EAAS3O,GAAIoqd,EAAYpqd,GAAIm/a,EAAQppa,EAAYjP,EAAQ9G,OAE1E,CACL,KAAK,UAAQm/a,MAAY,UAAQA,EAAQ,CAAC,UAAW,CACnD,IAAIkrC,EAAS3zB,EAAY51b,IAAI,SACzB,UAAQupd,KAEVA,EAASA,EAAO,KAElB,UAAKlrC,GAAQ,SAAU98X,GAErB,GAAIs0Y,EAAY71b,IAAI,UAAYwnd,IAAkB,CAChD,IAAI19c,EAAQrL,EAAMoqd,cAActna,EAAOgoa,GAAUvjd,GACjD6vb,EAAYzxb,KAAK0F,EACnB,CACF,GACF,CACA,IAAIona,EAAWM,IAAgBokB,EAAaC,GACxC73b,KAAK8W,QACHG,GACuB,QAAxB9V,EAAKnB,KAAKq/M,gBAA6B,IAAPl+M,GAAyBA,EAAGX,KAAKg3Z,IAAqB2zD,qBAEvF/B,IAAUxxB,EAAa3gb,EAAY,CACjCgnQ,WAAYj+Q,KAAKypd,aAAaxrM,WAC9B53Q,QAAS6sa,EACTskB,WAAYx3b,KAAKolS,UAET,UAAQi7I,GAMlBuX,EAAYxxb,KAAK8sa,IALjB0kB,EAAYtvb,cACZsvb,EAAY9gb,QAAQo8Z,EAAU,CAC5Bnta,SAAU,OAMd6xb,EAAYxxb,KAAK8sa,EAErB,CA/CA,CAgDF,EACA/+Z,EAAQjU,UAAU0pd,aAAe,SAAUxkL,GACzC,IAAI3/R,GAAQ,UAAI2/R,EAAO,SACvB,OAAO,UAAQ3/R,GAASA,EAAM,GAAKA,CACrC,EACO0O,CACT,CA9b2B,CA8bzB,KACF,QC7cIq3c,IAAsB,CAAC,EACvBC,IAA6B,CAAC,EAc3B,SAASC,IAAsB/id,EAAM6tD,GAC1Cg1Z,IAAoB7id,EAAKiW,eAAiB43C,CAC5C,CAcO,SAASm1Z,IAA4Bhjd,EAAMijd,GAChDH,IAA2B9id,EAAKiW,eAAiBgtc,CACnD,CC5BA,IAAIC,IAAmB,CAErB5tM,WAAY,KAEZ0sM,iBAAkB,KAElBr9W,MAAO,KAOPw+W,eAAgB,SAAwBx6c,EAAWy6c,GACjD,IAAItmd,EAAQzF,KAAKuL,SAAS+F,GAC1B,OAAI7L,EAAMumd,UACDvmd,EAAMumd,UAAUD,GAElB/rd,KAAKisd,iBAAiBF,EAC/B,EAMAxgd,SAAU,SAAkB+F,GAC1B,IAAI7L,EAAQzF,KAAKsR,IAActR,KAAKA,KAAK2qd,kBAEzC,OADAlld,EAAMw4Q,WAAaj+Q,KAAKi+Q,WACjBx4Q,CACT,EAKAwmd,iBAAkB,WAChB,MAAO,EACT,EAIAC,gBAAiB,SAAyBC,GACxC,OAAO,UAAIA,EAAe,CAACnsd,KAAK2qd,iBAAkB,UAAW,SAAU,CAAC,EAC1E,EAQAyB,UAAW,SAAmB96c,EAAWg3a,GACvC,IAAI7ib,EAAQzF,KAAKuL,SAAS+F,GAC1B,IAAK7L,EAAM2md,UAAW,CACpB,IAAIzB,EAAmB3qd,KAAK2qd,iBAC5Blld,EAAQzF,KAAKuL,SAASo/c,EACxB,CACA,IAAIr9W,EAAQttG,KAAKstG,MACb09W,GAAa,UAAI19W,EAAO,CAACh8F,EAAW,WAAY,CAAC,GACjDk2a,EAAc/hb,EAAM2md,UAAU9jC,GAClC,OAAO,UAAQ,CAAC,EAAG0iC,EAAYxjC,EACjC,EASAqiC,UAAW,SAAmBv4c,EAAW3P,EAAKqH,GAE5C,OADYhJ,KAAKuL,SAAS+F,GACbxJ,KAAKnG,EAAKqH,EACzB,GAGEqjd,IAAY,CAEdpuM,WAAY,KAMZquM,UAAW,SAAmBzld,GAC5B,IAAIo3Q,EAAaj+Q,KAAKi+Q,WAClBsuM,GAAa,UAAgB1ld,GAMjC,OAJE0ld,EADEtuM,EAAWotJ,QACA2zB,IAAiB/gL,EAAYsuM,G7BwJzC,SAA2Bt5G,EAAOpsW,GACvC,IAAIy6B,EAAM,GAkBV,OAjBA,UAAKz6B,GAAM,SAAUq4b,GAEnB,OADaA,EAAQ,GACNtgb,eACb,IAAK,IACL,IAAK,IACL,IAAK,IACH0iB,EAAI/gC,KAAKi+b,IAAYU,EAASjsF,IAC9B,MACF,IAAK,IACH3xU,EAAI/gC,KAAKk+b,IAAgBS,EAASjsF,IAClC,MAEF,QACE3xU,EAAI/gC,KAAK2+b,GAGf,IACO59Z,CACT,C6B1KmBkrb,CAAkBvuM,EAAYsuM,GAEtCA,CACT,EAMAE,WAAY,SAAoBzhd,GAE9B,OADiBhL,KAAKi+Q,WACJp/D,QAAQ7zM,EAC5B,EAMA0hd,YAAa,SAAqBhsc,GAChC,IAAIu9P,EAAaj+Q,KAAKi+Q,WACtB,OAAOv9P,EAAOsQ,KAAI,SAAUhmB,GAC1B,OAAOizQ,EAAWp/D,QAAQ7zM,EAC5B,GACF,EAKAlD,KAAM,SAAcnG,EAAKqH,GAAY,GAEnC2jd,IAAkB,CAAC,EAOhB,SAASC,IAAqBC,EAAalrd,GAChD,IAAIiS,GAAY,UAAWi5c,GACvBC,GAAU,WAAS,WAAS,UAAS,CAAC,EAAGjB,KAAmBlqd,GAAM,CACpEu4b,aAAc2yB,IAGhB,OADAF,IAAgB/4c,GAAak5c,EACtBA,CACT,CAQO,SAASC,IAAcF,EAAav7c,EAAW3P,GACpD,IAAIiS,GAAY,UAAWi5c,GACvBh3a,EAAU82a,IAAgB/4c,GAC1Bo5c,GAAW,WAAS,UAAS,CAAC,EAAGX,KAAY1qd,GAEjD,OADAk0C,EAAQvkC,GAAa07c,EACdA,CACT,CAMO,SAASC,IAAgBJ,GAC9B,IAAIj5c,GAAY,UAAWi5c,GAC3B,OAAOF,IAAgB/4c,EACzB,CCzJO,SAASs5c,IAAcC,EAAcC,GAC1C,OAAO,SAAK,CAAC,QAAS,QAAS,OAAQ,IAAK,IAAK,aAAc,OAAQ,QAAS,eAAgB,SAAU,gBAAgB,SAAUvsb,GAClI,QAAQ,UAAQssb,EAAatsb,GAAMusb,EAASvsb,GAC9C,GACF,CCVO,SAASwsb,IAAYxtV,GAC1B,OAAI,UAAQA,GACHA,EAEFA,EAAMv2G,MAAM,IACrB,CCDO,SAASkJ,IAAK86b,EAAS1sb,GAK5B,IAJA,IAAI6wQ,EAAQ,GACRrvN,EAAU,GACV4gC,EAAU,GACVuqW,EAAc,IAAIxuc,IACb7d,EAAI,EAAGA,EAAI0/B,EAAK//B,OAAQK,IAAK,CACpC,IAAI2/B,EAAMD,EAAK1/B,GACXosd,EAAQzsb,GAAMuhD,EAAQ7hF,KAAKsgC,GAAU4wQ,EAAMlxS,KAAKsgC,GACpD0sb,EAAYrrd,IAAI2+B,GAAK,EACvB,CAIA,OAHArpB,OAAOopB,KAAK0sb,GAASlld,SAAQ,SAAUy4B,GAChC0sb,EAAYzrb,IAAIjB,IAAMmiF,EAAQziH,KAAKsgC,EAC1C,IACO,CACL4wQ,MAAOA,EACPrvN,QAASA,EACT4gC,QAASA,EAEb,CCJA,IAAIwqW,IAAwB,SAAU9rd,GAMpC,SAAS8rd,EAAS7rd,GAChB,IAAIlB,EAAQiB,EAAOE,KAAK5B,KAAM2B,IAAQ3B,KAEtCS,EAAMkI,KAAO,OAGblI,EAAMqqF,WAAa,CAAC,EAEpBrqF,EAAMkgC,SAAW,GAEjBlgC,EAAM04c,YAAc,CAAC,EAErB14c,EAAMgva,eAAgB,EAEtBhva,EAAMgtd,gBAAkB,CAAC,EAEzBhtd,EAAMitd,gBAAkB,CAAC,EAEzBjtd,EAAMktd,gBAAiB,EAEvBltd,EAAMmtd,kBAAoB,KAC1Bntd,EAAMotd,QAAU,CAAC,EACjBptd,EAAMqtd,SAAW,GACjBrtd,EAAMstd,WAAY,EAClBttd,EAAM68c,qBAAsB,EAC5B,IAAIt0c,EAAYrH,EAAIqH,UAClB61c,EAAkBl9c,EAAIk9c,gBACtB5gM,EAAat8Q,EAAIs8Q,WACjBv4P,EAAO/jB,EAAI+jB,KACXvkB,EAAKQ,EAAIqsd,SACTA,OAAkB,IAAP7sd,GAAwBA,EACnC+V,EAAKvV,EAAI4S,QACTA,OAAiB,IAAP2C,GAAuBA,EACjCo2F,EAAQ3rG,EAAI2rG,MACZn2F,EAAKxV,EAAIuoP,OACTA,OAAgB,IAAP/yO,EAAgB,CAAC,EAAIA,EAC9BmnB,EAAK38B,EAAIk1c,UACTA,OAAmB,IAAPv4a,EAAgB,CAAC,EAAIA,EAEjCi8X,EAAkB54Z,EAAI44Z,gBACtBC,EAAe74Z,EAAI64Z,aACnBG,EAAiBh5Z,EAAIg5Z,eACrBC,EAAiBj5Z,EAAIi5Z,eACrBC,EAAmBl5Z,EAAIk5Z,iBACvBmxC,EAAiBrqc,EAAIqqc,eACrBC,EAAwBtqc,EAAIsqc,sBAC5Bqe,EAAiB3od,EAAI2od,eACrBD,EAAa1od,EAAI0od,WACjB4D,EAAmBtsd,EAAIssd,iBAqBzB,OApBAxtd,EAAMuI,UAAYA,EAClBvI,EAAMo+c,gBAAkBA,EACxBp+c,EAAMw9Q,WAAaA,EACnBx9Q,EAAMilB,KAAOA,EACbjlB,EAAMutd,SAAWA,EACjBvtd,EAAM8T,QAAUA,EAChB9T,EAAMytd,UAAY5gX,EAClB7sG,EAAMypP,OAASA,EACfzpP,EAAMo2c,UAAYA,EAElBp2c,EAAM85Z,gBAAkBA,EACxB95Z,EAAM+5Z,aAAeA,EACrB/5Z,EAAMk6Z,eAAiBA,EACvBl6Z,EAAMm6Z,eAAiBA,EACvBn6Z,EAAMo6Z,iBAAmBA,EACzBp6Z,EAAMurc,eAAiBA,EACvBvrc,EAAMwrc,sBAAwBA,EAC9Bxrc,EAAM6pd,eAAiBA,EACvB7pd,EAAM4pd,WAAaA,EACnB5pd,EAAMwtd,iBAAmBA,EAA+C,iBAArBA,EAAgCA,EAAmB1pd,IAAW,KAC1G9D,CACT,CA0/CA,OArkDA,UAAU+sd,EAAU9rd,GA4FpB8rd,EAASttd,UAAUirD,SAAW,SAAUxpD,GACtC,IAAIwsd,EAAcxsd,GACb,UAAcA,KAEjBwsd,EAAc,CACZvuV,OAAQytV,IAAY1rd,KAGxB,IAAIi+H,GAAS,UAAIuuV,EAAa,UAO9B,OANsB,IAAlBvuV,EAAO/+H,SAET++H,EAAOjqH,QAAQ,MACf,UAAIw4c,EAAa,SAAUvuV,KAE7B,UAAI5/H,KAAKytd,gBAAiB,WAAYU,GAC/Bnud,IACT,EACAwtd,EAASttd,UAAU6zC,MAAQ,SAAU8rF,EAAOl+H,GAE1C,OADA3B,KAAKoud,iBAAiB,QAASvuV,EAAOl+H,GAC/B3B,IACT,EACAwtd,EAASttd,UAAUuF,MAAQ,SAAUo6H,EAAOl+H,GAE1C,OADA3B,KAAKoud,iBAAiB,QAASvuV,EAAOl+H,GAC/B3B,IACT,EACAwtd,EAASttd,UAAUokC,KAAO,SAAUu7F,EAAOl+H,GAEzC,OADA3B,KAAKoud,iBAAiB,OAAQvuV,EAAOl+H,GAC9B3B,IACT,EA8CAwtd,EAASttd,UAAU05Q,OAAS,SAAUy0M,GACpC,IAAIR,EAAUQ,EAYd,QAXI,UAASA,KAAc,UAAcA,MACvCR,EAAU,CAACQ,KAEb,UAAKR,GAAS,SAAUj0M,EAAQ5xQ,IACzB,UAAS4xQ,KACZi0M,EAAQ7ld,GAAS,CACfW,KAAMixQ,GAGZ,IACA55Q,KAAKsud,aAAeT,EACb7td,IACT,EACAwtd,EAASttd,UAAU4L,MAAQ,SAAU+zH,EAAO0uV,GAC1C,IAAI,UAAS1uV,GAAQ,CACnB,IAAID,EAASytV,IAAYxtV,GACzB7/H,KAAKwud,YAAc,CACjB5uV,OAAQA,EACRv/H,SAAUkud,EAEd,KAAO,CACL,IAAIptd,EAAK0+H,EAEPx/H,GADAu/H,EAASz+H,EAAGy+H,OACDz+H,EAAGd,UACdsB,EAAMR,EAAGQ,IAET3B,KAAKwud,YADH5uV,GAAUv/H,GAAYsB,EACLk+H,EAEA,CACjBl+H,IAAKk+H,EAGX,CACA,OAAO7/H,IACT,EACAwtd,EAASttd,UAAU6kQ,QAAU,SAAUllI,EAAOl+H,GAC5C,IAAI,UAASk+H,GAAQ,CACnB,IAAID,EAASytV,IAAYxtV,GACzB7/H,KAAK+3c,cAAgB,CACnBn4U,OAAQA,EACRv/H,SAAUsB,EAEd,MACE3B,KAAK+3c,cAAgBl4U,EAEvB,OAAO7/H,IACT,EA0BAwtd,EAASttd,UAAU4W,QAAU,SAAUnV,GAErC,OADA3B,KAAKyva,cAAgB9ta,EACd3B,IACT,EACAwtd,EAASttd,UAAU0sD,MAAQ,SAAUizE,EAAO4uV,EAAaC,GACvD,IAAI,UAAS7uV,GAAQ,CACnB,IAAI8uV,EAAc,CAAC,EACf/uV,EAASytV,IAAYxtV,GACzB8uV,EAAY/uV,OAASA,GACjB,UAAW6uV,GACbE,EAAYtud,SAAWoud,GACd,UAAcA,KACvBE,EAAYhtd,IAAM8sd,GAEhBC,IACFC,EAAYhtd,IAAM+sd,GAEpB1ud,KAAK2ud,YAAcA,CACrB,MACE3ud,KAAK2ud,YAAc9uV,EAErB,OAAO7/H,IACT,EAiCAwtd,EAASttd,UAAUqjD,MAAQ,SAAU5hD,GAEnC,OADA3B,KAAK0qd,YAAc/od,EACZ3B,IACT,EAsBAwtd,EAASttd,UAAU0ud,WAAa,SAAUjtd,GAExC,OADA3B,KAAK6ud,aAAeltd,EACb3B,IACT,EAKAwtd,EAASttd,UAAUoK,KAAO,SAAU3I,QACtB,IAARA,IACFA,EAAM,CAAC,GAET3B,KAAK8ud,OAAOntd,GACZ3B,KAAK+ud,iBAEL/ud,KAAKgvd,YAAYhvd,KAAK0lB,MAEtB1lB,KAAKivd,aACP,EAKAzB,EAASttd,UAAUsF,OAAS,SAAU7D,QACxB,IAARA,IACFA,EAAM,CAAC,GAET,IAAI+jB,EAAO/jB,EAAI+jB,KACb23b,EAAgB17c,EAAI07c,cACpBC,EAAsB37c,EAAI27c,oBAE1BmQ,EADOztd,KACcytd,gBACrByB,EAFOlvd,KAEkBkvd,qBACtB,UAAQzB,EAAiByB,IAGnBxpc,IAAS23b,IAAkB,UAAQ33b,EAAM1lB,KAAK0lB,MAOvD1lB,KAAK8ud,OAAOntd,IALZ3B,KAAK8ud,OAAOntd,GACZ3B,KAAK+ud,iBACL/ud,KAAKgvd,YAAYtpc,IALjB1lB,KAAKsK,KAAK3I,GAWZ3B,KAAKivd,cACLjvd,KAAKs9c,oBAAsBA,CAC7B,EAIAkQ,EAASttd,UAAUs+c,MAAQ,SAAUH,GACnC,IAAI59c,EAAQT,UACK,IAAbq+c,IACFA,GAAW,GAETr+c,KAAKyva,gBACPzva,KAAKyva,eAAgB,UAAQ,CAAC,EAAGy5C,IAAqBlpd,KAAK2I,KAAM3I,KAAKi+Q,YAAaj+Q,KAAKyva,gBAE1Fzva,KAAK+2Y,iBAActgX,EACnBz2B,KAAKm5c,YAAc,CAAC,EACpBn5c,KAAK2gC,SAAW,GACK3gC,KAAK+pd,oBACXx6c,QACf,IAAIq+c,EAAoB5td,KAAK4td,kBACzBl0D,EAAY15Z,KAAKmvd,cAAcvB,GACnC5td,KAAK05Z,UAAY,IAAIj5X,MAAMi5X,EAAU74Z,QACrC,IAAK,IAAIK,EAAI,EAAGA,EAAIw4Z,EAAU74Z,OAAQK,IAAK,CACzC,IAAIwkB,EAAOg0Y,EAAUx4Z,GACrBlB,KAAK05Z,UAAUx4Z,GAAKlB,KAAKwxV,QAAQ9rU,EACnC,CAGA,GAFA1lB,KAAKsxa,eAAetxa,KAAK05Z,UAAW2kD,GACpCr+c,KAAK0td,gBAAkB1td,KAAKm5c,YACxBn5c,KAAKovd,oBAAoB/Q,GAAW,CAEtC,IAAIr1c,EAAYhJ,KAAKgJ,UACjBL,EAAO3I,KAAK2I,KACZs1Q,EAAaj+Q,KAAKi+Q,WAClBhnQ,GAAa,UAAIjX,KAAKyva,cAAe,UACrCr3B,EAASp4Y,KAAKm2c,YACdkZ,EAAYpxM,EAAWp/D,QAAQ,CACjC5zM,EAAG,EACHC,EAAGktY,EAAOt/X,MAAM9Y,KAAKsvd,mBRlMtB,SAA8Btmd,EAAWiO,EAAYijb,EAAcj8K,EAAYsxM,GACpF,GAAItG,IAAgC/uB,GAAe,CACjD,IAAIp4b,EAAamnd,IAAgC/uB,GAAcj8K,GAC3Dv4Q,EAAYmjd,KAAa,UAAI/md,EAAY,YAAa,KAC1D,GAAI4D,EAAW,CACb,IAAI/D,GAAM,WAAS,WAAS,UAAS,CAAC,EAAGond,IAAoBr5C,QAAS5ta,GAAamV,GACnFjO,EAAUV,cACV5C,EAAUsD,EAAWrH,EAAK,CACxBs8Q,WAAYA,EACZsxM,UAAWA,EACXlpd,QAAS,MAEb,CACF,CACF,CQsLMmpd,CAAqBxmd,EAAWiO,EAAYtO,EAAMs1Q,EAAYoxM,EAChE,CAEA,GAAIrvd,KAAK2ud,YAAa,CACpB,IAAIc,EAAWzvd,KAAKiud,iBAChB5td,EAAW,WACb,OAAOI,EAAMivd,cAAa,UAAQjvd,EAAMi5Z,WAAY2kD,EACtD,EAAEj7c,KAAKpD,MACP,GAAwB,iBAAbyvd,EAAuB,CAEhC,IAAIltd,EAA8B,iBAAbktd,GAAyBA,IAAalrd,IAAWkrd,EAAW,EACjF,GAAKvsd,OAAOysd,oBAEL,CACL,IAAIxqb,EAAU5iC,GAAWA,IAAYgC,IAAW,CAC9ChC,QAASA,QACPk0B,EACJvzB,OAAOysd,oBAAoBtvd,EAAU8kC,EACvC,MANE7hC,WAAWjD,EAAUkC,EAOzB,MACElC,GAEJ,CAEAL,KAAKkvd,qBAAsB,UAAS,CAAC,EAAGlvd,KAAKytd,kBACxB,IAAjBztd,KAAKuU,SAEPvU,KAAK84Z,eAAc,EAEvB,EAKA00D,EAASttd,UAAUqP,MAAQ,WACzB,IAAIpO,EAAKnB,KACPgJ,EAAY7H,EAAG6H,UACf4md,EAAgBzud,EAAGyud,cACnBlG,EAAiBvod,EAAGuod,eAClB1gd,GACFA,EAAUuG,QAERqgd,GACFA,EAAcrgd,QAEZm6c,GACFA,EAAen6c,QAGjBvP,KAAK62c,eAAYpgb,EACjBz2B,KAAK8qF,WAAa,CAAC,EACnB9qF,KAAKkqP,OAAS,CAAC,EACflqP,KAAKm5c,YAAc,CAAC,EACpBn5c,KAAK0td,gBAAkB,CAAC,EACxB1td,KAAK2gC,SAAW,GAChB3gC,KAAK6td,QAAU,CAAC,EAChB7td,KAAK05Z,UAAY,KACjB15Z,KAAK4td,kBAAoB,KACzB5td,KAAKkvd,yBAAsBz4b,EAC3Bz2B,KAAK+2Y,iBAActgX,EACnBz2B,KAAK8td,SAAW,GAChB9td,KAAK24c,iBAAclib,EACnBz2B,KAAK+td,WAAY,EACjB/td,KAAKs9c,qBAAsB,CAC7B,EAIAkQ,EAASttd,UAAUkC,QAAU,WAC3BpC,KAAKuP,QACWvP,KAAKgJ,UACXmK,QAAO,GACbnT,KAAK0pd,iBACP1pd,KAAK0pd,eAAev2c,QAAO,GAC3BnT,KAAK0pd,eAAiB,MAEpB1pd,KAAK4vd,gBACP5vd,KAAK4vd,cAAcxtd,UACnBpC,KAAK4vd,cAAgB,MAEvB5vd,KAAKstG,WAAQ72E,EACbz2B,KAAKypd,kBAAehzb,EACpB/0B,EAAOxB,UAAUkC,QAAQR,KAAK5B,KAChC,EAKAwtd,EAASttd,UAAU04c,eAAiB,WAClC,OAAO54c,KAAK24c,WACd,EAIA6U,EAASttd,UAAUkqD,aAAe,SAAUnoD,GAC1C,OAAOjC,KAAK8qF,WAAW7oF,EACzB,EAEAurd,EAASttd,UAAU42c,UAAY,WAC7B,OAAO92c,KAAKoqD,aAAa,YAAY8/L,OAAO,EAC9C,EAEAsjO,EAASttd,UAAUi2c,UAAY,WAC7B,OAAOn2c,KAAKoqD,aAAa,YAAY8/L,OAAO,EAC9C,EAIAsjO,EAASttd,UAAUygd,mBAAqB,WACtC,IAAIrtc,EAAM,GAMV,OALA,UAAKtT,KAAK8qF,YAAY,SAAU1kF,GAC1B4xZ,IAAY7yZ,SAASiB,EAAKuC,OAC5B2K,EAAI/S,KAAK6F,EAEb,IACOkN,CACT,EAEAk6c,EAASttd,UAAU2vd,gBAAkB,SAAUC,GAC7C,IAAI3td,EACAiE,EAAOpG,KAAKoqD,aAAa0la,GAK7B,OAJI1pd,IAAQ,UAAQA,EAAK8jP,UAEvB/nP,EAAQiE,EAAKo6B,OAAO,IAEfr+B,CACT,EAOAqrd,EAASttd,UAAU6vd,mBAAqB,SAAU3pd,EAAM2tB,GAGtD,IAFA,IAAIzS,EAAS,GACT4oO,EAAS9jP,EAAK8jP,OACTliP,EAAQ,EAAGzG,EAAW2oP,EAAOrpP,OAAQmH,EAAQzG,EAAUyG,IAAS,CACvE,IAAI8Q,EAAQoxO,EAAOliP,GACf63H,EAAQ/mH,EAAM+mH,MACd/mH,EAAM0sO,WACRlkO,EAAO/gB,KAAKuY,EAAM0nB,QAElBlf,EAAO/gB,KAAKwzB,EAAI8rG,GAEpB,CACA,OAAOz5H,EAAKorV,QAAQnwV,MAAM+E,GAAM,UAAc,IAAI,UAAOkb,IAAS,GACpE,EAMAksc,EAASttd,UAAU45Z,UAAY,SAAUk2D,GACvC,OAAOhwd,KAAK6td,QAAQmC,EACtB,EAKAxC,EAASttd,UAAUiic,cAAgB,WACjC,OAAOnic,KAAKi+Q,UACd,EACAuvM,EAASttd,UAAU+/J,QAAU,WAC3B,OAAOjgK,KAAK0lB,IACd,EAOA8nc,EAASttd,UAAU+vd,eAAiB,SAAUC,EAAWvud,GAEvD,OADmB3B,KAAKitd,kBACJb,UAAU8D,EAAWvud,EAC3C,EAeA6rd,EAASttd,UAAUshc,cAAgB,SAAUv/Z,GAC3C,OAAOjiC,KAAK2gC,SAASpwB,QAAO,SAAUZ,GACpC,OAAOsyB,EAAUtyB,EACnB,GACF,EAQA69c,EAASttd,UAAUkhc,YAAc,WAC/B,OAAOphc,KAAK2gC,QACd,EAMA6sb,EAASttd,UAAUgxa,aAAe,SAAUxrZ,GAE1C,IAAI0wb,GADJ1wb,GAAO,UAAQA,GAAQA,EAAK,GAAKA,GACXuyY,KAEtB,GAAIj4Z,KAAK8td,SAASjtd,OAAQ,CAExB,IADA,IAAIwgZ,EAAY+0D,EAAWp2c,KAAK8td,SAAS,IAChC9ld,EAAQ,EAAGA,EAAQhI,KAAK8td,SAASjtd,OAAQmH,IAChDq5Y,GAAa,IAAM+0D,EAAWp2c,KAAK8td,SAAS9ld,IAE9C,OAAOq5Y,CACT,CACA,IAMI8uE,EAMAz8c,EAZA/K,EAAO3I,KAAK2I,KACZwvY,EAASn4Y,KAAK82c,YACd1+D,EAASp4Y,KAAKm2c,YACdn9C,EAAS7gB,EAAOt4Q,OAAS,IAEzBuwV,EAAOha,EADEh+D,EAAOv4Q,OAAS,KAI3BswV,EADkB,aAAhBh4E,EAAOxvY,KACFwvY,EAAO33W,OAAO,GAEd41a,EAAWp9C,GAIlBtlZ,EADW,aAAT/K,GAAgC,WAATA,EACpB,GAAG4K,OAAO48c,GACG,SAATxnd,GAA4B,SAATA,GAA4B,SAATA,EAC1CA,EAEA,GAAG4K,OAAO48c,EAAM,KAAK58c,OAAO68c,GAGnC,IADA,IAAIzX,EAAc34c,KAAK24c,YACH0X,GAAXrod,EAAQ,EAAc2wc,EAAY93c,QAAQmH,EAAQqod,EAAUrod,IAAS,CAC5E,IACI63H,EADa84U,EAAY3wc,GACN63H,MACvBnsH,EAAK,GAAGH,OAAOG,EAAI,KAAKH,OAAO6ic,EAAWv2U,GAC5C,CAEA,IAAIywV,EAActwd,KAAK85Z,UAAU,SACjC,GAAIw2D,EAAa,CACf,IAAIh2D,EAAUg2D,EAAYh2D,QACtBA,IACF5mZ,EAAK,GAAGH,OAAOG,EAAI,KAAKH,OAAO6ic,EAAW97C,IAE9C,CAIA,OAHIt6Z,KAAK85Z,UAAU,YACjBpmZ,EAAK,GAAGH,OAAOG,EAAI,KAAKH,OAAOmS,EAAKza,EAAG,KAAKsI,OAAOmS,EAAKxa,IAEnDwI,CACT,EAIA85c,EAASttd,UAAUsjd,eAAiB,WAClC,IAAI5jV,EAAS,GACT79F,EAAS,IAAIhjB,IACb5d,EAAKnB,KACPytd,EAAkBtsd,EAAGssd,gBACrBkB,EAAcxtd,EAAGwtd,YACjB5W,EAAgB52c,EAAG42c,cAErB,IAAK,IAAIwY,KAAiB9C,EACxB,GAAIA,EAAgBl2c,eAAeg5c,GAAgB,CACjD,IAAIC,EAAU/C,EAAgB8C,GAC1BC,EAAQ5wV,OACV/9F,IAAK2ub,EAAQ5wV,OAAQA,EAAQ79F,GACpByub,EAAQhwb,QAEjBqB,IAAK2ub,EAAQhwb,OAAQo/F,EAAQ79F,EAEjC,CAUF,OAPI4sb,GAAeA,EAAY/uV,QAC7B/9F,IAAK8sb,EAAY/uV,OAAQA,EAAQ79F,IAG/B,UAASg2a,IAAkBA,EAAcn4U,QAC3C/9F,IAAKk2a,EAAcn4U,OAAQA,EAAQ79F,GAE9B69F,CACT,EAKA4tV,EAASttd,UAAU44Z,cAAgB,SAAUvkZ,GAC3C7S,EAAOxB,UAAU44Z,cAAcl3Z,KAAK5B,KAAMuU,GAE1C,IADA,IAAIosB,EAAW3gC,KAAK2gC,SACX34B,EAAQ,EAAGyod,EAAW9vb,EAAS9/B,OAAQmH,EAAQyod,EAAUzod,IAAS,CAC3D24B,EAAS34B,GACf8wZ,cAAcvkZ,EACxB,CACIA,GACEvU,KAAKgJ,WACPhJ,KAAKgJ,UAAUsM,OAEbtV,KAAK6+c,iBACP7+c,KAAK6+c,gBAAgBvpc,SAGnBtV,KAAKgJ,WACPhJ,KAAKgJ,UAAUuM,OAEbvV,KAAK6+c,iBACP7+c,KAAK6+c,gBAAgBtpc,OAG3B,EAIAi4c,EAASttd,UAAUq+H,UAAY,WAC7B,IAAImyV,EAAU,IAAI3xc,IACd6gH,EAAS,GAUb,OATApoH,OAAOgpB,OAAOxgC,KAAKytd,iBAAiBrld,SAAQ,SAAUzG,KAC1CA,aAAiC,EAASA,EAAIi+H,SAAW,IAChEx3H,SAAQ,SAAU/E,GACdqtd,EAAQ5ub,IAAIz+B,IACfu8H,EAAOr/H,KAAK8C,GAEdqtd,EAAQxud,IAAImB,GAAG,EACjB,GACF,GAAG,IACIu8H,CACT,EAKA4tV,EAASttd,UAAUyjd,eAAiB,WAGlC,IAFA,IAAIgN,EAAc,GACd5ub,EAAS,IAAIhjB,IACR/W,EAAQ,EAAG4od,EAAW54D,IAAYn3Z,OAAQmH,EAAQ4od,EAAU5od,IAAS,CAC5E,IAAI6od,EAAgB74D,IAAYhwZ,GAC5BrG,EAAM3B,KAAKytd,gBAAgBoD,GAC3Blvd,GAAOA,EAAIi+H,QACb/9F,IAAKlgC,EAAIi+H,OAAQ+wV,EAAa5ub,EAElC,CACA,OAAO4ub,CACT,EAIAnD,EAASttd,UAAUi9b,YAAc,WAC/B,IAAIh8b,GAAK,UAAOnB,KAAKytd,gBAAgBtia,SAASy0E,OAAQ,GAGtD,MAAO,CAFDz+H,EAAG,GACHA,EAAG,GAEX,EAKAqsd,EAASttd,UAAU4wd,UAAY,WAC7B,OAAO,UAAI9wd,KAAKm9b,cAAe,CAAC,GAClC,EAKAqwB,EAASttd,UAAU6wd,UAAY,WAC7B,OAAO,UAAI/wd,KAAKm9b,cAAe,CAAC,GAClC,EAKAqwB,EAASttd,UAAU8wd,UAAY,WAC7B,OAAOhxd,KAAK2gC,SAAS3P,KAAI,SAAUrhB,GACjC,OAAOA,EAAQlK,KACjB,GACF,EAKA+nd,EAASttd,UAAU6pd,kBAAoB,WACrC,IAAK/pd,KAAK0pd,eAAgB,CACxB,IAAI0B,EAAYprd,KAAKgJ,UAAU8I,eAC/B9R,KAAK0pd,eAAiB,IAAI0B,EAAU,CAAC,EACvC,CACA,OAAOprd,KAAK0pd,cACd,EAEA8D,EAASttd,UAAUqS,KAAO,SAAU0+c,GAClC,IAAKjxd,KAAK+td,UAIR,IAFA,IAAImD,EAAWlxd,KAAK82c,YAChBqa,EAAWD,EAASrxV,MACf73H,EAAQ,EAAGA,EAAQipd,EAAapwd,OAAQmH,IAAS,CAC1Cipd,EAAajpd,GACnBuK,MAAK,SAAUE,EAAMC,GAC3B,OAAOw+c,EAAS54c,UAAU7F,EAAKwlZ,KAAck5D,IAAaD,EAAS54c,UAAU5F,EAAKulZ,KAAck5D,GAClG,GACF,CAEFnxd,KAAK+td,WAAY,CACnB,EAIAP,EAASttd,UAAU+ud,YAAc,WAC/B,IAAI72E,EAASp4Y,KAAKm2c,YAEd/9D,GAAUp4Y,KAAK85Z,UAAU,UAC3B95Z,KAAKoxd,iBAAiBh5E,EAAQp4Y,KAAK4td,kBAEvC,EAIAJ,EAASttd,UAAU+sd,gBAAkB,WACnC,IAAI37c,EAAYtR,KAAKsR,UACrB,GAAK27c,IAAgB37c,GAUrB,OAPKtR,KAAKypd,eACRzpd,KAAKypd,cAAe,UAAMwD,IAAgB37c,KAG5CtR,KAAKypd,aAAaxrM,WAAaj+Q,KAAKi+Q,WAEpCj+Q,KAAKypd,aAAan8W,MAAQttG,KAAKstG,MAAM8xG,WAAW9tM,IAAc,CAAC,EACxDtR,KAAKypd,YACd,EAMA+D,EAASttd,UAAUmxd,qBAAuB,SAAUt9b,GAClD,IAAIokX,EAASn4Y,KAAK82c,YACd1+D,EAASp4Y,KAAKm2c,YAQlB,MAAO,CACLlrc,EARMjL,KAAKsxd,gBAAgBv9b,EAAIokX,EAAOt4Q,OAAQs4Q,GAS9CjtY,EAPEktY,EACEp4Y,KAAKsxd,gBAAgBv9b,EAAIqkX,EAAOv4Q,OAAQu4Q,GAExCrkX,EAAI7oB,EAAI6oB,EAAI7oB,EAAI,GAKpByhB,GAAIyrX,EAASA,EAAOt/X,MAAM9Y,KAAKsvd,qBAAkB74b,EAErD,EAOA+2b,EAASttd,UAAUwkB,cAAgB,SAAU6sc,EAAcvpd,EAAOq2c,QAC/C,IAAbA,IACFA,GAAW,GAEb,IAAIr1c,EAAYhJ,KAAKgJ,UACjBwod,EAAWxxd,KAAKyxd,WAAWF,GAC3B9H,EAAezpd,KAAKitd,kBACpBt9c,EAAU,IAAI,IAAQ,CACxB85c,aAAcA,EACdzgd,UAAWA,EACX0gd,eAAgB1pd,KAAK+pd,oBACrBJ,aAAc3hd,IAKhB,OAHA2H,EAAQmH,QAAU9W,KAAKyva,cACvB9/Z,EAAQ0vM,SAAWr/M,KACnB2P,EAAQ7H,KAAK0pd,EAAUnT,GAChB1uc,CACT,EAMA69c,EAASttd,UAAUuxd,WAAa,SAAUF,GACxC,IAAInb,EAAamb,EAAat5D,KAC1Bt2Z,EAAM,CACRs2c,YAAasZ,EACb7rc,KAAM0wb,EACNnrc,EAAGsmd,EAAatmd,EAChBC,EAAGqmd,EAAarmd,EAChB6oC,MAAOw9a,EAAax9a,MACpBzP,KAAMitb,EAAajtb,KACnBq6Z,WAAY3+b,KAAKi+Q,WAAWotJ,QAC5BujD,WAAY5ud,KAAK6ud,cAEfqB,EAAYqB,EAAa9rd,OACxByqd,GAAalwd,KAAKitd,oBACrBiD,EAAYlwd,KAAKitd,kBAAkBtC,kBAErChpd,EAAI8D,MAAQyqd,EAEZ,IAAI5iX,EAAQttG,KAAKstG,MAAM8xG,WAAWp/M,KAAKsR,WACvC3P,EAAI+uZ,cAAe,UAAIpjT,EAAO,CAAC4iX,EAAW,WAAY,CAAC,GAAGpkd,OACrDnK,EAAI+uZ,cAAgB1wZ,KAAKitd,oBAC5Btrd,EAAI+uZ,aAAe1wZ,KAAKitd,kBAAkBf,gBAAgB5+W,IAE5D,IAAIkhX,EAAcxud,KAAKwud,YAQvB,OAPIA,IACF7sd,EAAImK,MAAQ9L,KAAK0xd,YAAYlD,EAAapY,IAExCp2c,KAAK2td,iBACPhsd,EAAI+e,OAAS6wc,EAAa7wc,OAC1B/e,EAAIgwd,WAAaJ,EAAaI,YAEzBhwd,CACT,EACA6rd,EAASttd,UAAUoxa,eAAiB,SAAUsgD,EAAkBvT,GAC9D,IAAIrmB,EAAK72b,EAAIu2c,EAAKxgc,EAAI8hc,EAAK7hc,OACV,IAAbknc,IACFA,GAAW,GASb,IAPA,IAAIwT,EAAW,IAAI9yc,IACf6hB,EAAO,GAEPywF,EAAW,IAAItyG,IACf/W,EAAQ,EAGH9G,EAAI,EAAGA,EAAI0wd,EAAiB/wd,OAAQK,IAE3C,IADA,IAAI+2c,EAAc2Z,EAAiB1wd,GAC1BgG,EAAI,EAAGA,EAAI+wc,EAAYp3c,OAAQqG,IAAK,CAC3C,IAAIqqd,EAAetZ,EAAY/wc,GAC3B25B,EAAM7gC,KAAKkxa,aAAaqgD,GACxBO,EAAWD,EAAS/vb,IAAIjB,GAAO,GAAGttB,OAAOstB,EAAK,KAAKttB,OAAOrS,EAAG,KAAKqS,OAAOrM,GAAK25B,EAClFD,EAAKrgC,KAAKuxd,GACVD,EAAS3vd,IAAI4vd,EAAUP,GACvBlgW,EAASnvH,IAAI4vd,EAAU9pd,GACvBA,GACF,CAEFhI,KAAK2gC,SAAW,IAAIF,MAAMz4B,GAC1B,IAAIs2B,EAAK9L,IAAKxyB,KAAK0td,gBAAiB9sb,GAClC6wQ,EAAQnzQ,EAAGmzQ,MACXrvN,EAAU9jD,EAAG8jD,QACb4gC,EAAU1kF,EAAG0kF,QACf,IAEE,IAAK,IAAI+uW,GAAU,UAAStgL,GAAQugL,EAAYD,EAAQx8b,QAASy8b,EAAU15a,KAAM05a,EAAYD,EAAQx8b,OAAQ,CACvGsL,EAAMmxb,EAAU7vd,MAChBovd,EAAeM,EAAS7vd,IAAI6+B,GAC5B3/B,EAAImwH,EAASrvH,IAAI6+B,GAFrB,IAGIlxB,EAAU3P,KAAK0kB,cAAc6sc,EAAcrwd,EAAGm9c,GAClDr+c,KAAK2gC,SAASz/B,GAAKyO,EACnB3P,KAAKm5c,YAAYt4a,GAAOlxB,EACpBA,EAAQlK,OACVkK,EAAQlK,MAAMvD,IAAI,SAAUlC,KAAKsqd,eAAiBtqd,KAAK2gC,SAAS9/B,OAASK,EAAIA,EAEjF,CACF,CAAE,MAAOi3b,GACPH,EAAM,CACJ5qY,MAAO+qY,EAEX,CAAE,QACA,IACM65B,IAAcA,EAAU15a,OAASn3C,EAAK4wd,EAAQ94P,SAAS93N,EAAGS,KAAKmwd,EACrE,CAAE,QACA,GAAI/5B,EAAK,MAAMA,EAAI5qY,KACrB,CACF,CACA,IAEE,IAAK,IAAI6ka,GAAY,UAAS7vY,GAAU8vY,EAAcD,EAAU18b,QAAS28b,EAAY55a,KAAM45a,EAAcD,EAAU18b,OAAQ,CACrHsL,EAAMqxb,EAAY/vd,MAClBwN,EAAU3P,KAAK0td,gBAAgB7sb,GAC/B0wb,EAAeM,EAAS7vd,IAAI6+B,GAFhC,IAGIsxb,EAAkBnyd,KAAKyxd,WAAWF,GAClCa,EAAczid,EAAQ+xb,WACtBxgc,EAAImwH,EAASrvH,IAAI6+B,IACjB7gC,KAAKs9c,qBAAuB4P,IAAciF,EAAiBC,MAC7Dzid,EAAQmH,QAAU9W,KAAKyva,cAEvB9/Z,EAAQnK,OAAO2sd,IAGjBnyd,KAAK2gC,SAASz/B,GAAKyO,EACnB3P,KAAKm5c,YAAYt4a,GAAOlxB,EACpBA,EAAQlK,OACVkK,EAAQlK,MAAMvD,IAAI,SAAUlC,KAAKsqd,eAAiBtqd,KAAK2gC,SAAS9/B,OAASK,EAAIA,EAEjF,CACF,CAAE,MAAOo3c,GACPZ,EAAM,CACJtqZ,MAAOkrZ,EAEX,CAAE,QACA,IACM4Z,IAAgBA,EAAY55a,OAASphC,EAAK+6c,EAAUh5P,SAAS/hN,EAAGtV,KAAKqwd,EAC3E,CAAE,QACA,GAAIva,EAAK,MAAMA,EAAItqZ,KACrB,CACF,CAEIptD,KAAKgJ,WACPhJ,KAAKgJ,UAAUuJ,OAEjB,IAEE,IAAK,IAAI8/c,GAAY,UAASrvW,GAAUsvW,EAAcD,EAAU98b,QAAS+8b,EAAYh6a,KAAMg6a,EAAcD,EAAU98b,OAAQ,CACrHsL,EAAMyxb,EAAYnwd,OAClBwN,EAAU3P,KAAK0td,gBAAgB7sb,IAE3B/pB,QAAU9W,KAAKyva,cACvB9/Z,EAAQvN,SACV,CACF,CAAE,MAAOg3c,GACPJ,EAAM,CACJ5rZ,MAAOgsZ,EAEX,CAAE,QACA,IACMkZ,IAAgBA,EAAYh6a,OAASnhC,EAAKk7c,EAAUp5P,SAAS9hN,EAAGvV,KAAKywd,EAC3E,CAAE,QACA,GAAIrZ,EAAK,MAAMA,EAAI5rZ,KACrB,CACF,CACF,EAIAoga,EAASttd,UAAUqyd,aAAe,WAChC,IAAIpxd,EAAKnB,KACP2ud,EAAcxtd,EAAGwtd,YACjB1wM,EAAa98Q,EAAG88Q,WAChBt1Q,EAAOxH,EAAGwH,KACR6pd,EAAiBv0M,EAAWt1Q,KAC9B6ia,EAAevtJ,EAAWutJ,aACxBinD,GAAY,UAAI9D,EAAa,CAAC,MAAO,SAezC,OAdK8D,IAIDA,EAFqB,UAAnBD,EAEUhnD,EAAe,MAAQ,QACP,UAAnBgnD,EAEG,MACM,aAAT7pd,GAAgC,YAATA,EACpB,WAEA,QAGT8pd,CACT,EAIAjF,EAASttd,UAAUovd,aAAe,WAChC,IAAIl3E,EAASp4Y,KAAKm2c,YACdj8b,EAAMk+X,EAAOl+X,IACfC,EAAMi+X,EAAOj+X,IAUf,OARID,GAAO,EACDA,EACCC,GAAO,EAERA,EAEA,CAGZ,EAEAqzc,EAASttd,UAAUkud,iBAAmB,SAAU0B,EAAUjwV,EAAOl+H,GAC/D,IAAI,UAAMk+H,KAAU,UAASA,IACvB,UAASA,KAAU,UAAQroH,OAAOopB,KAAKi/F,GAAQ,CAAC,YAElD,UAAI7/H,KAAKytd,gBAAiBqC,EAAU,CAClClwV,OAAQC,EAAMr/F,UAGhB,UAAIxgC,KAAKytd,gBAAiBqC,EAAUjwV,OAEjC,CACL,IAAI6yV,EAAU,CAAC,GACX,UAAS7yV,GAEX6yV,EAAQlyb,OAAS,CAACq/F,GAElB6yV,EAAQ9yV,OAASytV,IAAYxtV,GAE3Bl+H,KACE,UAAWA,GACb+wd,EAAQryd,SAAWsB,EAEnB+wd,EAAQlyb,OAAS7+B,IAGrB,UAAI3B,KAAKytd,gBAAiBqC,EAAU4C,EACtC,CACF,EACAlF,EAASttd,UAAU6ud,eAAiB,WAClC,IAAItud,EAAQT,KACRmB,EAAKnB,KACP8qF,EAAa3pF,EAAG2pF,WAChB2iY,EAAkBtsd,EAAGssd,gBACrBngX,EAAQnsG,EAAGmsG,MACXh8F,EAAYnQ,EAAGmQ,UACjBtR,KAAK24c,YAAc,GACnB,IAAI52a,EAAS,CAAC,EACV/pB,EAAU,SAAiBiib,GAC7B,GAAIwzB,EAAgBl2c,eAAe0ib,GAAW,CAC5C,IAAIvhY,EAAS+0Z,EAAgBxzB,GAC7B,IAAKvhY,EACH,MAAO,CACLv2D,WAAO,GAGX,IAAIuwd,GAAU,UAAS,CAAC,EAAGh6Z,GACvBr4D,EAAWqyd,EAAQryd,SACrBmgC,EAASkyb,EAAQlyb,OACjBtpB,EAAKw7c,EAAQ9yV,OAGXsqH,QAFc,IAAPhzO,EAAgB,GAAKA,GAEZ8Z,KAAI,SAAU6uG,GAChC,IAAI/mH,EAAQrY,EAAMypP,OAAOrqH,IACpB99F,EAAO89F,IAAUm4R,IAAY7yZ,SAAS80b,KAEhB,QADFF,IAAejhb,GAAO,UAAIrY,EAAMo2c,UAAWh3U,GAAQo6T,EAAUx5b,EAAMkI,QAExFlI,EAAMk4c,YAAYp4c,KAAKuY,GACvBipB,EAAO89F,IAAS,IAGpB,OAAO/mH,CACT,IACA45c,EAAQxoO,OAASA,EACA,aAAb+vM,GAA6C,IAAlB/vM,EAAOrpP,QAAmC,aAAnBqpP,EAAO,GAAGvhP,KAE9D+pd,EAAQlyb,OAAS0pN,EAAO,GAAG1pN,OACjBngC,GAAamgC,IAEN,SAAby5Z,EACFy4B,EAAQlyb,OAAS8sE,EAAMy+E,MACD,UAAbkuQ,EACTy4B,EAAQlyb,OAAS8sE,EAAMk/V,OAAOl7b,IAAc,GACtB,UAAb2ob,IACL/vM,EAAOrpP,OAET6xd,EAAQlyb,OAAS0pN,EAAO,GAAG1pN,OAAO3/B,QAAU,GAAKysG,EAAM4+V,SAAW5+V,EAAM8+V,SAExEsmB,EAAQlyb,OAAS8sE,EAAM4+V,WAI7B,IAAIymB,EAAgBvoa,IAAkB6vY,GACtCnvW,EAAWmvW,GAAY,IAAI04B,EAAcD,EAC3C,CACF,EAEA,IAAK,IAAIz4B,KAAYwzB,EAAiB,CACpC,IAAImF,EAAU56c,EAAQiib,GACtB,GAAuB,iBAAZ24B,EAAsB,OAAOA,EAAQzwd,KAClD,CACF,EAEAqrd,EAASttd,UAAU8ud,YAAc,SAAUtpc,GACzC,IAAI6zb,EAAKp4c,EACTnB,KAAK+td,WAAY,EAOjB,IANA,IACI8E,EADS7yd,KAAKoqD,aAAa,YAAY8/L,OACf35O,QAAO,SAAUuI,GAC3C,OAAOA,EAAMglZ,UACf,IACIg1D,EAAe9yd,KAAK45Z,UAAUl0Y,GAC9Bqtc,EAAe,GACV7xd,EAAI,EAAGs5B,EAAMs4b,EAAajyd,OAAQK,EAAIs5B,EAAKt5B,IAAK,CAGvD,IAFA,IAAI8xd,EAAUF,EAAa5xd,GACvBuV,EAAM,GACDvP,EAAI,EAAG+rd,EAASD,EAAQnyd,OAAQqG,EAAI+rd,EAAQ/rd,IAAK,CACxD,IAAIkvc,EAAa4c,EAAQ9rd,GACrBuQ,EAAO,CAAC,EAEZ,IAAK,IAAI/Q,KAAK0vc,EACZ3+b,EAAK/Q,GAAK0vc,EAAW1vc,GAEvB+Q,EAAKwgZ,KAAgBm+C,EACrB,IAEE,IAAK,IAAI8c,GAAoB3Z,OAAM,GAAQ,UAASsZ,IAAkBM,EAAqBD,EAAiB39b,QAAS49b,EAAmB76a,KAAM66a,EAAqBD,EAAiB39b,OAAQ,CAC1L,IAAIzc,EAAQq6c,EAAmBhxd,MAC3B09H,EAAQ/mH,EAAM+mH,MAClBpoH,EAAKooH,GAAS/mH,EAAMR,UAAUb,EAAKooH,GACrC,CACF,CAAE,MAAO85U,GACPJ,EAAM,CACJnsZ,MAAOusZ,EAEX,CAAE,QACA,IACMwZ,IAAuBA,EAAmB76a,OAASn3C,EAAK+xd,EAAiBj6P,SAAS93N,EAAGS,KAAKsxd,EAChG,CAAE,QACA,GAAI3Z,EAAK,MAAMA,EAAInsZ,KACrB,CACF,CACA32C,EAAIlW,KAAKkX,EACX,CACAs7c,EAAaxyd,KAAKkW,EACpB,CACA,IAAIijZ,EAAY15Z,KAAKu5Z,WAAWw5D,GAEhC,OADA/yd,KAAK4td,kBAAoBl0D,EAClBA,CACT,EAEA8zD,EAASttd,UAAUq5Z,WAAa,SAAUG,GACxC,IAAI40D,EAAetud,KAAKsud,aACpBntd,EAAKnB,KACPu6Z,EAAkBp5Z,EAAGo5Z,gBACrBC,EAAer5Z,EAAGq5Z,aAClBltT,EAAQnsG,EAAGmsG,MAETqtT,EAAiB36Z,KAAK26Z,gBAAkBrtT,EAAMqtT,eAC9CC,EAAiB56Z,KAAK46Z,gBAAkBttT,EAAMstT,eAC9CC,EAAmB76Z,KAAK66Z,kBAAoBvtT,EAAMutT,iBAClDjoZ,EAAS8mZ,EACb,GAAI40D,EAAc,CAChB,IAAI8E,EAAWpzd,KAAK82c,YAChB1+D,EAASp4Y,KAAKm2c,YACdn9C,EAASo6D,EAASvzV,MAClBo5R,EAAS7gB,EAASA,EAAOv4Q,MAAQ,KACjC46R,EAAmB4+B,IAAoBr5b,KAAKi+Q,YAC5Cy8I,EAAW04D,EAAS5yb,OAAO3/B,OAE3Bwyd,EAAWrzd,KAAKoqD,aAAa,QAC7B2sV,OAAc,EACds8E,IACFt8E,EAAcs8E,EAAS7yb,OAAO,IAEhC,IAAK,IAAIt/B,EAAI,EAAGs5B,EAAM8zb,EAAaztd,OAAQK,EAAIs5B,EAAKt5B,IAAK,CACvD,IAAI04Q,EAAS00M,EAAaptd,GACtBmtd,GAAY,UAAS,CACvBr1D,OAAQA,EACRC,OAAQA,EACRsB,gBAAiBA,EACjBC,aAAcA,EACdC,iBAAkBA,EAClBC,SAAUA,EACV3jB,YAAaA,EACb4jB,eAAgBA,EAChBC,eAAgBA,EAChBC,iBAAkBA,GACjBjhJ,GACCjxQ,EAAOixQ,EAAOjxQ,KAClB,GAAa,UAATA,EAAkB,CACpB,IAAIuwZ,EAAc,GAClB,GAAIk6D,EAASt1D,YAAgC,aAAlBs1D,EAASzqd,KAClCuwZ,EAAY34Z,KAAK,SACZ,IAAK63Y,EAGV,MAAM,IAAInwW,MAAM,yEAFhBixX,EAAY34Z,KAAK,IAGnB,CACA8td,EAAUn1D,YAAcA,EAGxBm1D,EAAUh0D,WAAaQ,CACzB,MAAO,GAAa,UAATlyZ,EAAkB,CAC3B,IAAIs1Q,EAAaj+Q,KAAKi+Q,WACtB,IAAKm6H,EAAQ,CAEXi2E,EAAUrgd,OAASiwQ,EAAWkuJ,YAC9B,IAAI7nY,EAAOtkC,KAAK6vd,gBAAgB,SAAW,EAC3CxB,EAAU/pb,KAAOA,CACnB,EAEK25O,EAAWutJ,eAAgB,UAAM6iD,EAAUjyD,gBAC9CiyD,EAAUjyD,cAAe,EAE7B,CACA,IAAIk3D,EAAax5D,IAAenxZ,GAChC0ld,EAAUl1D,aAAe,CAAC,EAEtBi6D,GAAYA,EAAS5yb,SACvB6tb,EAAUl1D,aAAai6D,EAASvzV,OAASuzV,EAAS5yb,OAAOxP,KAAI,SAAU/e,GACrE,OAAOmhd,EAAS96c,UAAUrG,EAC5B,KAEF,IAAIshd,EAAiB,IAAID,EAAWjF,GACpCz7c,EAAS2gd,EAAe10a,QAAQjsC,GAChC5S,KAAK6td,QAAQlld,GAAQ4qd,CACvB,CACF,CACA,OAAO3gd,CACT,EAEA46c,EAASttd,UAAU05Z,UAAY,SAAUl0Y,GAKvC,IAJA,IAAIizb,EAAc34c,KAAK44c,iBACnB/B,EAAY72c,KAAK62c,UACjB2c,EAAmB,CAAC,EACpB7C,EAAc,GACT3od,EAAQ,EAAGA,EAAQ2wc,EAAY93c,OAAQmH,IAAS,CACvD,IACI63H,EADQ84U,EAAY3wc,GACN63H,MAClB8wV,EAAYpwd,KAAKs/H,IACb,UAAIg3U,EAAW,CAACh3U,EAAO,aAEzB2zV,EAAiB3zV,GAASg3U,EAAUh3U,GAAOr/F,OAE/C,CACA,OCpzCG,SAAe9a,EAAMk6G,EAAQ4zV,GAClC,IAAIx7B,EAAK72b,EAIT,QAHyB,IAArBqyd,IACFA,EAAmB,CAAC,IAEjB5zV,EACH,MAAO,CAACl6G,GAEV,IAAI4c,GAAS,UAAW5c,EAAMk6G,GAC1Br9F,EAAQ,GACZ,GAAsB,IAAlBq9F,EAAO/+H,QAAgB2yd,EAAiB5zV,EAAO,IAAK,CACtD,IAAIp/F,EAASgzb,EAAiB5zV,EAAO,IACrC,IACE,IAAK,IAAI6zV,GAAW,UAASjzb,GAASkzb,EAAaD,EAASl+b,QAASm+b,EAAWp7a,KAAMo7a,EAAaD,EAASl+b,OAAQ,CAClH,IAAIpzB,EAAQuxd,EAAWvxd,MACnBsU,EAAM6rB,EAAO,IAAI/uB,OAAOpR,IACxBsU,GAEF8rB,EAAMhiC,KAAKkW,EAEf,CACF,CAAE,MAAO0hb,GACPH,EAAM,CACJ5qY,MAAO+qY,EAEX,CAAE,QACA,IACMu7B,IAAeA,EAAWp7a,OAASn3C,EAAKsyd,EAASx6P,SAAS93N,EAAGS,KAAK6xd,EACxE,CAAE,QACA,GAAIz7B,EAAK,MAAMA,EAAI5qY,KACrB,CACF,CACF,MACE,IAAK,IAAI1mD,KAAK47B,EACZ,GAAIA,EAAO/qB,eAAe7Q,GAAI,CAC5B,IAAIitd,EAAYrxb,EAAO57B,GACvB67B,EAAMhiC,KAAKozd,EACb,CAGJ,OAAOpxb,CACT,CD2wCW,CAAM7c,EAAMirc,EAAa6C,EAClC,EAEAhG,EAASttd,UAAUkxd,iBAAmB,SAAUt4c,EAAO4gZ,GAKrD,IAJA,IAAIk6D,GAAa,UAAQl6D,GACrB75R,EAAQ/mH,EAAM+mH,MACd3lH,EAAMpB,EAAMoB,IACZC,EAAMrB,EAAMqB,IACPnS,EAAQ,EAAGA,EAAQ4rd,EAAW/yd,OAAQmH,IAAS,CACtD,IAAI+rB,EAAM6/b,EAAW5rd,GACjB6rd,EAAS55c,KAAKC,IAAI7Y,MAAM,KAAM0yB,EAAI8rG,IAClCi0V,EAAS75c,KAAKE,IAAI9Y,MAAM,KAAM0yB,EAAI8rG,IAClCg0V,EAAS35c,IACXA,EAAM25c,GAEJC,EAAS35c,IACXA,EAAM25c,EAEV,CACA,IAAIjd,EAAY72c,KAAK62c,UACjBl1c,EAAM,CAAC,EACPuY,EAAMpB,EAAMoB,OAAQ,UAAI28b,EAAW,CAACh3U,EAAO,UAE7Cl+H,EAAIuY,IAAMA,GAERC,EAAMrB,EAAMqB,OAAQ,UAAI08b,EAAW,CAACh3U,EAAO,UAE7Cl+H,EAAIwY,IAAMA,GAEZrB,EAAMi+Q,OAAOp1R,EACf,EAEA6rd,EAASttd,UAAUivd,cAAgB,SAAUvB,GAG3C,IAAIv8b,EAASu8b,EAIb,GAHI5td,KAAKgud,UACPhud,KAAKuS,KAAK8e,GAERrxB,KAAK2td,eAEP,IAAK,IAAI3ld,EAAQ,EAAG+rd,EAAW1ic,EAAOxwB,OAAQmH,EAAQ+rd,EAAU/rd,IAAS,CACvE,IAAIgsd,EAAc3ic,EAAOrpB,GACzBhI,KAAKi0d,oBAAoBD,GACzB,IAAIE,EAAW7ic,EAAOrpB,EAAQ,GAC1Bksd,IACFl0d,KAAKi0d,oBAAoBC,GACzBF,EAAY,GAAGrC,WAAauC,EAAS,GAAGxzc,OAE5C,CAEF,OAAO2Q,CACT,EAEAm8b,EAASttd,UAAU+zd,oBAAsB,SAAUvuc,GAGjD,IAFA,IAAI+jc,EAAezpd,KAAKitd,kBACpBkH,EAAYn0d,KAAKoqD,aAAa,SACzBpiD,EAAQ,EAAGA,EAAQ0d,EAAK7kB,OAAQmH,IAAS,CAChD,IAAI+rB,EAAMrO,EAAK1d,GACXrG,EAAM3B,KAAKqxd,qBAAqBt9b,GAChCtuB,EAAQ0ud,EAAYn0d,KAAK+vd,mBAAmBoE,EAAWpgc,GAAO,KAC9DrT,EAAS+oc,EAAaqC,eAAermd,EAAO9D,GAChDoyB,EAAIrT,OAASA,CACf,CACF,EAEA8sc,EAASttd,UAAUoxd,gBAAkB,SAAU9wb,EAAQ1nB,GACrD,IAAIxF,EAAM,GACV,IAAI,UAAQktB,GACV,IAAK,IAAIx4B,EAAQ,EAAGA,EAAQw4B,EAAO3/B,OAAQmH,IAAS,CAClD,IAAI7F,EAAQq+B,EAAOx4B,GACnBsL,EAAI/S,KAAKuY,EAAMA,MAAM3W,GACvB,MAEAmR,EAAMwF,EAAMA,MAAM0nB,GAEpB,OAAOltB,CACT,EAEAk6c,EAASttd,UAAUsxV,QAAU,SAAU9rU,GAGrC,IAFA,IAAIolE,EAAa9qF,KAAK8qF,WAClBmtX,EAAc,GACTjwc,EAAQ,EAAGA,EAAQ0d,EAAK7kB,OAAQmH,IAAS,CAChD,IAAIwsD,EAAS9uC,EAAK1d,GACdosd,EAAY,CACd7vN,QAAS/vM,EAAOyjW,KAChBv3Y,OAAQ8zC,EAAO9zC,OACfixc,WAAYn9Z,EAAOm9Z,YAErB,IAAK,IAAIjrd,KAAKokF,EACZ,GAAIA,EAAWvzE,eAAe7Q,GAAI,CAChC,IAAIN,EAAO0kF,EAAWpkF,GAClBusN,EAAQ7sN,EAAK6sN,MACbzyL,EAASxgC,KAAK+vd,mBAAmB3pd,EAAMouD,GAC3C,GAAIy+J,EAAMpyN,OAAS,EAEjB,IAAK,IAAIqG,EAAI,EAAGA,EAAIs5B,EAAO3/B,OAAQqG,GAAK,EAAG,CACzC,IAAI7B,EAAMm7B,EAAOt5B,GAEjBktd,EADanhQ,EAAM/rN,KACC,UAAQ7B,IAAuB,IAAfA,EAAIxE,OAAewE,EAAI,GAAKA,CAClE,MAIA+ud,EAAUnhQ,EAAM,IAAwB,IAAlBzyL,EAAO3/B,OAAe2/B,EAAO,GAAKA,CAE5D,CAEFxgC,KAAK+ra,aAAaqoD,GAClBnc,EAAY13c,KAAK6zd,EACnB,CACA,OAAOnc,CACT,EAEAuV,EAASttd,UAAU6ra,aAAe,SAAUsoD,GAC1C,IAEIC,EACAC,EACAxgc,EAJA9oB,EAAIopd,EAAcppd,EACpBC,EAAImpd,EAAcnpd,EAIhB+yQ,EAAaj+Q,KAAKi+Q,WACtB,IAAI,UAAQhzQ,KAAM,UAAQC,GAAI,CAC5Bopd,EAAO,GACPC,EAAO,GACP,IAAK,IAAIrzd,EAAI,EAAGgG,EAAI,EAAGstd,EAAOvpd,EAAEpK,OAAQ4zd,EAAOvpd,EAAErK,OAAQK,EAAIszd,GAAQttd,EAAIutd,EAAMvzd,GAAK,EAAGgG,GAAK,EAC1F6sB,EAAMkqP,EAAWp/D,QAAQ,CACvB5zM,EAAGA,EAAE/J,GACLgK,EAAGA,EAAEhE,KAEPotd,EAAK/zd,KAAKwzB,EAAI9oB,GACdspd,EAAKh0d,KAAKwzB,EAAI7oB,EAElB,MAAO,IAAI,UAAQA,GAAI,CACrBqpd,EAAO,GACP,IAAK,IAAIvsd,EAAQ,EAAGA,EAAQkD,EAAErK,OAAQmH,IAAS,CAC7C,IAAIood,EAAOlld,EAAElD,GACb+rB,EAAMkqP,EAAWp/D,QAAQ,CACvB5zM,EAAGA,EACHC,EAAGkld,IAEDkE,GAAQA,IAASvgc,EAAI9oB,IAClB,UAAQqpd,KACXA,EAAO,CAACA,IAEVA,EAAK/zd,KAAKwzB,EAAI9oB,IAEdqpd,EAAOvgc,EAAI9oB,EAEbspd,EAAKh0d,KAAKwzB,EAAI7oB,EAChB,CACF,MAAO,IAAI,UAAQD,GAAI,CACrBqpd,EAAO,GACP,IAAStsd,EAAQ,EAAGA,EAAQiD,EAAEpK,OAAQmH,IAAS,CAC7C,IAAImod,EAAOlld,EAAEjD,GACb+rB,EAAMkqP,EAAWp/D,QAAQ,CACvB5zM,EAAGkld,EACHjld,EAAGA,IAEDqpd,GAAQA,IAASxgc,EAAI7oB,IAClB,UAAQqpd,KACXA,EAAO,CAACA,IAEVA,EAAKh0d,KAAKwzB,EAAI7oB,IAEdqpd,EAAOxgc,EAAI7oB,EAEbopd,EAAK/zd,KAAKwzB,EAAI9oB,EAChB,CACF,KAAO,CACL,IAAID,EAAQizQ,EAAWp/D,QAAQ,CAC7B5zM,EAAGA,EACHC,EAAGA,IAELopd,EAAOtpd,EAAMC,EACbspd,EAAOvpd,EAAME,CACf,CACAmpd,EAAcppd,EAAIqpd,EAClBD,EAAcnpd,EAAIqpd,CACpB,EAEA/G,EAASttd,UAAUwxd,YAAc,SAAUlD,EAAapY,GACtD,IAAIj1c,EAAKqtd,EAAY5uV,OACnBA,OAAgB,IAAPz+H,EAAgB,GAAKA,EAC9Bd,EAAWmud,EAAYnud,SACvBsB,EAAM6sd,EAAY7sd,IACpB,GAAIA,EAEF,OAAOA,EAET,IAAI2f,EAASs+G,EAAO5uG,KAAI,SAAU6uG,GAChC,OAAOu2U,EAAWv2U,EACpB,IACA,OAAOx/H,EAASgB,WAAM,GAAQ,UAAc,IAAI,UAAOigB,IAAS,GAClE,EACAksc,EAASttd,UAAU4ud,OAAS,SAAUntd,GACpC,IAAIlB,EAAQT,KACRi+Q,EAAat8Q,EAAIs8Q,WACnBv4P,EAAO/jB,EAAI+jB,KACX4nF,EAAQ3rG,EAAI2rG,MACZupW,EAAYl1c,EAAIk1c,UACd54L,IACFj+Q,KAAKi+Q,WAAaA,GAEhBv4P,IACF1lB,KAAK0lB,KAAOA,GAEVmxb,IACF72c,KAAK62c,UAAYA,EACjB72c,KAAK8td,SAAW,IAChB,UAAKjX,GAAW,SAAU7c,EAAUn6T,GAC9Bm6T,GAAYA,EAASn5Z,KACvBpgC,EAAMqtd,SAASvtd,KAAKs/H,EAExB,KAEEvyB,IACFttG,KAAKstG,MAAQttG,KAAKkud,WAAY,UAAQ,CAAC,EAAG5gX,EAAOttG,KAAKkud,WAAa5gX,EAEvE,EAEAkgX,EAASttd,UAAUwvd,aAAe,SAAUuB,EAAc5S,GAIxD,YAHiB,IAAbA,IACFA,GAAW,IAEN,UAAUr+c,UAAM,OAAQ,GAAQ,WACrC,IAAI4vd,EAAe6C,EAAWiC,EAAoBC,EAAWC,EAAezzd,EAAI+V,EAAIC,EAAIxH,EAASokQ,EAC7Fw0M,EAAKjqb,EACL79B,EAAQT,KACZ,OAAO,UAAYA,MAAM,SAAUu+B,GACjC,OAAQA,EAAGquB,OACT,KAAK,EASH,OARAgja,EAAgB5vd,KAAK4vd,cACrB5vd,KAAKQ,KAAKg3Z,IAAqBq9D,qBAC1BjF,IACH6C,EAAYzyd,KAAKuyd,eACjBmC,EL3hDP,SAA0B/rd,GAC/B,OAAO6id,IAAoB7id,EAAKiW,cAClC,CKyhDmCk2c,CAAiBrC,GACtC7C,EAAgB,IAAI8E,EAAmB10d,MACvCA,KAAK4vd,cAAgBA,GAEhB,CAAC,EAAaA,EAAc5kZ,OAAOimZ,EAAc5S,IAC1D,KAAK,EACH9/a,EAAGsuB,OACH8na,EAAY/E,EAAcmF,eAAerkD,UACzCkkD,EAAgB,IAAI71c,KACpB,UAAK41c,GAAW,SAAU13C,EAAY+3C,GAEpC,IADA,IAAIC,EAAgBh4C,EAAW3sa,eAAiB,GACvCpJ,EAAI,EAAGA,EAAI+td,EAAcp0d,OAAQqG,IAAK,CAC7C,IAAI84a,EAAai1C,EAAc/td,GAC3ByI,EAAUlP,EAAM04c,YAAYn5B,EAAWh+a,IAAI,cAAgBgzd,EAAa1rc,MAAM,KAAK,IACvF,GAAI3Z,EAAS,CACXqwa,EAAWr+a,IAAIM,KAAO,CAAC,UAAW,SAClC+9a,EAAWr+a,IAAIgO,QAAUA,EACzB,IAAIokQ,EAAS6gN,EAAc5yd,IAAI2N,IAAY,IAAIg3B,IAC/CotO,EAAOviQ,IAAIyra,GACX23C,EAAc1yd,IAAIyN,EAASokQ,EAC7B,CACF,CACF,IACA,IACE,IAAK5yQ,GAAK,UAASyzd,EAAc94Z,WAAY5kD,EAAK/V,EAAGo0B,QAASre,EAAGohC,KAAMphC,EAAK/V,EAAGo0B,OAC7Epe,GAAK,UAAOD,EAAG/U,MAAO,GAAIwN,EAAUwH,EAAG,GAAI48P,EAAS58P,EAAG,GACvDxH,EAAQqwa,YAAa,UAAc,IAAI,UAAOjsK,IAAS,EAE3D,CAAE,MAAO00M,GACPF,EAAM,CACJn7Z,MAAOq7Z,EAEX,CAAE,QACA,IACMvxc,IAAOA,EAAGohC,OAASha,EAAKn9B,EAAG83N,SAAS36L,EAAG18B,KAAKT,EAClD,CAAE,QACA,GAAIond,EAAK,MAAMA,EAAIn7Z,KACrB,CACF,CAEA,OADAptD,KAAKQ,KAAKg3Z,IAAqB09D,oBACxB,CAAC,GAEd,GACF,GACF,EASA1H,EAASttd,UAAUkvd,oBAAsB,SAAU/Q,GACjD,OAAQA,GAAYr+c,KAAKyva,qBAAwDh5Y,KAAtC,UAAIz2B,KAAKyva,cAAe,YAA2B,UAAIzva,KAAKyva,cAAe,gBAAkEh5Y,KAArD,UAAIz2B,KAAKyva,cAAe,CAAC,SAAU,cACxK,EACO+9C,CACT,CAvkD4B,CAukD1B,KACF,QE3lDI,IAAYphQ,IAAA,GAQT,SAAS,IAAUz8M,EAAS1E,EAAGC,GACpC,IAAIiG,EAAS,IAAUxB,EAAQkG,YAAa,CAAC,CAAC,IAAK5K,EAAGC,KACtDyE,EAAQmG,UAAU3E,EACpB,CAkBO,SAAS,IAAOxB,EAASwld,GAC9B,IAAIhkd,EAbC,SAAyBxB,EAASwld,GACvC,IAAIh0d,EAAKwO,EAAQvJ,OACf6E,EAAI9J,EAAG8J,EACPC,EAAI/J,EAAG+J,EAET,OADa,IAAUyE,EAAQkG,YAAa,CAAC,CAAC,KAAM5K,GAAIC,GAAI,CAAC,IAAKiqd,GAAe,CAAC,IAAKlqd,EAAGC,IAE5F,CAOekqd,CAAgBzld,EAASwld,GACtCxld,EAAQmG,UAAU3E,EACpB,CCxBO,SAASkkd,IAAmBzoa,GACjC,OAAOA,EAAMp5C,MAAK,SAAUhJ,GAC1B,MAA0B,SAAnBA,EAAGxI,IAAI,OAChB,GACF,CAIO,SAASszd,IAAuBr4C,EAAYs4C,EAAWn7Y,QAC5C,IAAZA,IACFA,EAAU,CAAC,EAAG,EAAG,EAAG,IAEtB,IAAItD,EAAUmmW,GAAcA,EAAW3sa,cAAc,GACrD,GAAIwmE,EAAS,CACX,IAAIkpW,EAAalpW,EAAQvgE,SAErBg/c,aAA6C,EAASA,EAAUt8c,SAClE,IAAO+ma,GAAau1C,EAAUt8c,QAGhC,IAAI9X,EAAK6+a,EAAWpva,gBAClB3F,EAAI9J,EAAG8J,EACPC,EAAI/J,EAAG+J,EACP6C,EAAQ5M,EAAG4M,MACXC,EAAS7M,EAAG6M,OACdgya,EAAW59a,UACX,IAAIozd,EAAap7Y,EAMjB,OALI,UAAMo7Y,GACRA,EAAa,CAAC,EAAG,EAAG,EAAG,IACd,UAASA,KAClBA,EAAa,IAAI/0b,MAAM,GAAGmb,KAAK45a,IAE1B,CACLvqd,EAAGA,EAAIuqd,EAAW,GAClBtqd,EAAGA,EAAIsqd,EAAW,GAClBznd,MAAOA,EAAQynd,EAAW,GAAKA,EAAW,GAC1Cxnd,OAAQA,EAASwnd,EAAW,GAAKA,EAAW,GAC5C1vM,UAAWyvM,aAA6C,EAASA,EAAUt8c,SAAW,EAE1F,CACA,MAAO,CACLhO,EAAG,EACHC,EAAG,EACH6C,MAAO,EACPC,OAAQ,EACR83Q,SAAU,EAEd,CAaO,SAAS2vM,IAAkBtsU,EAAKusU,GACrC,IAAIn0c,EAAM4nI,EAAIl5I,UACd,OAAO,SAAKyld,GAAO,SAAUp9a,GAC3B,IAAI5vC,EAAS4vC,EAAKroC,UAClB,OAbG,SAAwBkO,EAAG8E,EAAGunF,GAMnC,YALe,IAAXA,IACFA,EAAS,GAEIvwF,KAAKE,IAAI,EAAGF,KAAKC,IAAIiE,EAAElT,EAAIkT,EAAEpQ,MAAQy8F,EAAQvnF,EAAEhY,EAAIgY,EAAElV,MAAQy8F,GAAUvwF,KAAKE,IAAIgE,EAAElT,EAAIu/F,EAAQvnF,EAAEhY,EAAIu/F,IACpGvwF,KAAKE,IAAI,EAAGF,KAAKC,IAAIiE,EAAEjT,EAAIiT,EAAEnQ,OAASw8F,EAAQvnF,EAAE/X,EAAI+X,EAAEjV,OAASw8F,GAAUvwF,KAAKE,IAAIgE,EAAEjT,EAAIs/F,EAAQvnF,EAAE/X,EAAIs/F,GAEvH,CAMWmrX,CAAep0c,EAAK7Y,EAAQ,GAAK,CAC1C,GACF,CC9DO,SAASktd,IAAYxsd,EAAWC,EAAS1H,GAC9C,IAAI+jB,EAAO/jB,EAAI+jB,KACbm4C,EAASl8D,EAAIk8D,OACb5mD,EAAatV,EAAIsV,WACjBgnQ,EAAat8Q,EAAIs8Q,WACf43M,GAAmB,UAAI5+c,EAAY,UACvC7N,EAAUlH,IAAI,OAAQwjB,GACtBtc,EAAUlH,IAAI,SAAU27D,GACxBz0D,EAAUlH,IAAI,aAAc+U,GAC5B7N,EAAUlH,IAAI,aAAc+7Q,GAC5B70Q,EAAUlH,IAAI,UAAWmH,EAAQrH,IAAI,aACpCoH,EAAUkH,eAAiB,IAAIlI,SAAQ,SAAU0td,EAAW5wb,GAC3D,IAAI6wb,EAAU1sd,EAAQyJ,gBAAgBoyB,GACtC,GAAK6wb,EAGE,CACLD,EAAU5zd,IAAI,OAAQwjB,GACtBowc,EAAU5zd,IAAI,SAAU27D,GACxBi4Z,EAAU5zd,IAAI,aAAc+U,GAC5B6+c,EAAU5zd,IAAI,aAAc+7Q,GAC5B,IAAIi1J,EAAWM,IAAgBsiD,EAAWC,GACtCF,EACFzM,IAAU0M,EAAWD,EAAkB,CACrCxvd,QAAS6sa,EACTj1J,WAAYA,IAGd63M,EAAU1vd,KAAK8sa,GAEb6iD,EAAQnmd,WACVgmd,IAAYE,EAAWC,EAASp0d,EAEpC,MAnBEyH,EAAUiG,YAAYymd,GACtBA,EAAU3id,QAAO,EAmBrB,KAEA,UAAK9J,EAAQiH,eAAe,SAAUR,EAAOo1B,GACvCA,GAAO97B,EAAU4J,aACdlD,EAAMjO,WACTuH,EAAUoI,IAAI1B,GAGpB,GACF,CC5CA,IAAIkmd,IAAsB,WACxB,SAASA,EAAOr0d,GAEd3B,KAAK0wa,UAAY,CAAC,EAClB,IAAI5nT,EAASnnH,EAAImnH,OACf9/G,EAAYrH,EAAIqH,UAClBhJ,KAAK8oH,OAASA,EACd9oH,KAAKgJ,UAAYA,CACnB,CAwTA,OApTAgtd,EAAO91d,UAAU8qE,OAAS,SAAU7kB,EAAOqmZ,EAAQ6R,GAIjD,YAHiB,IAAbA,IACFA,GAAW,IAEN,UAAUr+c,UAAM,OAAQ,GAAQ,WACrC,IAAI0wa,EAAWg5C,EAAgBthC,EAASu+B,EAAWlvc,EAAMw+c,EACrDj+B,EAAK72b,EACLV,EAAQT,KACZ,OAAO,UAAYA,MAAM,SAAUkX,GACjC,OAAQA,EAAG01C,OACT,KAAK,EAGH,GAFA8jX,EAAY,CAAC,EACbg5C,EAAiB1pd,KAAKk2d,wBACjB/va,EAAMtlD,OAAQ,MAAO,CAAC,EAAa,GACxC,IAGE,IAAKunb,GAAU,UAASjiY,GAAQwga,EAAYv+B,EAAQ7yZ,QAASoxb,EAAUrua,KAAMqua,EAAYv+B,EAAQ7yZ,QAC/F9d,EAAOkvc,EAAUxkd,SAEfuua,EAAUj5Z,EAAK/D,IAAM1T,KAAK02a,YAAYj/Z,EAAMiyc,GAGlD,CAAE,MAAOvxB,GACPH,EAAM,CACJ5qY,MAAO+qY,EAEX,CAAE,QACA,IACMwuB,IAAcA,EAAUrua,OAASn3C,EAAKinb,EAAQnvN,SAAS93N,EAAGS,KAAKwmb,EACrE,CAAE,QACA,GAAI4P,EAAK,MAAMA,EAAI5qY,KACrB,CACF,CAGA,MAAO,CAAC,EAAaptD,KAAKqid,SAASl8Z,EAAOqmZ,EAAQ97B,IACpD,KAAK,EAGHx5Z,EAAG21C,OAEH7sD,KAAKm2d,gBAAgBhwa,EAAOuqX,GAE5B1wa,KAAKo2d,sBAAsBjwa,EAAOuqX,GAElC1wa,KAAKq2d,YAAYlwa,EAAOuqX,GACxBx5Z,EAAG01C,MAAQ,EACb,KAAK,EAoDH,OAnDAqpa,EAAgBj2d,KAAK0wa,WACrB,UAAKA,GAAW,SAAUjra,EAAOiO,GAC/B,GAAIjO,EAAM5D,iBAED6ua,EAAUh9Z,OACZ,CACL,GAAIuid,EAAcvid,GAAK,CAErB,IAAIgS,EAAOjgB,EAAMzD,IAAI,QACjBs0d,EAAW7wd,EAAMzD,IAAI,UACrBi8Q,EAAax4Q,EAAMzD,IAAI,cACvBu0d,EAAoB9wd,EAAMzD,IAAI,cAC9B0H,EAAeusd,EAAcvid,GACjCkid,IAAYlsd,EAAcgna,EAAUh9Z,GAAK,CACvCgS,KAAMA,EACNm4C,OAAQy4Z,EACRr/c,WAAYs/c,EACZt4M,WAAYA,IAEdyyJ,EAAUh9Z,GAAMhK,CAClB,KAAO,CAGL,GAAIjJ,EAAMuI,UAAUnH,UAAW,OAC/BpB,EAAMuI,UAAUwI,IAAI/L,GACpB,IAAIwR,GAAa,UAAIxR,EAAMzD,IAAI,cAAeq8c,EAAW,QAAU,UAC/Dpnc,GACFmyc,IAAU3jd,EAAOwR,EAAY,CAC3B5Q,SAAS,UAAS,CAAC,EAAGZ,EAAMW,QAC5B63Q,WAAYx4Q,EAAMzD,IAAI,eAG5B,QACOi0d,EAAcvid,EACvB,CACF,KAEA,UAAKuid,GAAe,SAAUO,GAC5B,IAAIv/c,GAAa,UAAIu/c,EAAYx0d,IAAI,cAAe,SAChDiV,EACFmyc,IAAUoN,EAAav/c,EAAY,CACjC5Q,QAAS,KACT43Q,WAAYu4M,EAAYx0d,IAAI,gBAG9Bw0d,EAAYrjd,QAAO,EAEvB,IAEAnT,KAAK0wa,UAAYA,EACjBg5C,EAAetnd,UACR,CAAC,GAEd,GACF,GACF,EAEA4zd,EAAO91d,UAAUqP,MAAQ,WACvBvP,KAAKgJ,UAAUuG,QACfvP,KAAK0wa,UAAY,CAAC,CACpB,EAEAslD,EAAO91d,UAAUkC,QAAU,WACzBpC,KAAKgJ,UAAU5G,UACfpC,KAAK0wa,UAAY,IACnB,EACAslD,EAAO91d,UAAUw2a,YAAc,SAAU/0a,EAAKqH,GAC5C,IAuBIg3a,EAvBAtsa,EAAK/R,EAAI+R,GACX2tY,EAAY1/Y,EAAI0/Y,UAChB37X,EAAO/jB,EAAI+jB,KACXuyb,EAAct2c,EAAIs2c,YAClBh6L,EAAat8Q,EAAIs8Q,WACjBnnQ,EAAUnV,EAAImV,QACdggE,EAAUn1E,EAAIm1E,QAEZ2/Y,EAAiB,CACnB/id,GAAIA,EACJ2tY,UAAWA,EACX7sY,QAJU7S,EAAI6S,QAKdkR,KAAMA,EACNm4C,QAAQ,WAAS,UAAS,CAAC,EAAGo6Y,GAAc,CAC1Cvyb,KAAMuyb,EAAYhgD,OAEpBh6I,WAAYA,GAEVg/J,EAAaj0a,EAAUyI,UAAS,UAAS,CAC3CxP,KAAM,QAENgV,YAA6B,IAAjBjX,KAAK8W,SAAiC,OAAZA,IAAgC,IAAZA,IAA4B,UAAQ,CAAC,EAAG9W,KAAK8W,QAASA,IAC/G2/c,IAEH,GAAI3/Y,EAAQlnE,SAAWknE,EAAQlnE,WAAaknE,EAAQ4/Y,SAAW5/Y,EAAQ4/Y,UAAW,CAEhF,IAAIv1d,EAAK21E,EAAQlmE,gBACf7C,EAAQ5M,EAAG4M,MACXC,EAAS7M,EAAG6M,OACViT,GAAY,UAAItf,EAAK,YAAa,QAClCsJ,EAAItJ,EAAIsJ,EAEM,WAAdgW,EACFhW,GAAQ8C,EAAQ,EACO,UAAdkT,GAAuC,QAAdA,IAClChW,GAAQ8C,GAEV,IAAU+oE,EAAS7rE,EANXtJ,EAAIuJ,EAAI8C,EAAS,GAOzBgya,EAAalpW,EACbmmW,EAAWzra,IAAIslE,EACjB,KAAO,CACL,IAAIl7B,GAAO,UAAIj6C,EAAK,CAAC,QAAS,SAC9Bq+a,EAAa/C,EAAW5ra,SAAS,QAAQ,UAAS,CAChD/K,OAAO,WAAS,UAAS,CACvB2E,EAAGtJ,EAAIsJ,EACPC,EAAGvJ,EAAIuJ,EACP+V,UAAWtf,EAAIsf,UACfC,cAAc,UAAIvf,EAAK,eAAgB,UACvCkf,KAAMlf,EAAIm1E,SACTn1E,EAAImK,OAAQ,CACb8vC,MAAM,UAAOA,GAAQj6C,EAAIoyC,MAAQ6H,KAElC66a,GACL,CAIA,OAHI90d,EAAIsX,QACN,IAAO+ma,EAAYr+a,EAAIsX,QAElBgka,CACT,EAEA+4C,EAAO91d,UAAUmid,SAAW,SAAUl8Z,EAAOqmZ,EAAQ97B,GACnD,OAAO,UAAU1wa,UAAM,OAAQ,GAAQ,WACrC,IAAI22d,EACAl2d,EAAQT,KACZ,OAAO,UAAYA,MAAM,SAAUmB,GACjC,OAAQA,EAAGyrD,OACT,KAAK,EACH,OAAK5sD,KAAK8oH,QACV6tW,GAAU,UAAQ32d,KAAK8oH,QAAU9oH,KAAK8oH,OAAS,CAAC9oH,KAAK8oH,QAC9C,CAAC,EAAaliF,QAAQ+2B,IAAIg5Z,EAAQ3lc,KAAI,SAAU83F,GACrD,IAAI8iW,EV3LX,SAAgCjjd,GACrC,OAAO8id,IAA2B9id,EAAKiW,cACzC,CUyL6Bg4c,EAAuB,UAAI9tW,EAAQ,OAAQ,KAC1D,GAAK8iW,EAAL,CACA,IAAIiL,EAAc,GACdC,EAAiB,GAMrB,OALA,UAAKpmD,GAAW,SAAUsP,EAAYtsa,GACpCmjd,EAAYt2d,KAAKy/a,GACjB82C,EAAev2d,KAAKisc,EAAOxsB,EAAWh+a,IAAI,cAC5C,IAEO4pd,EAASzla,EAAO0wa,EAAaC,EAAgBr2d,EAAM0ta,OAAQrlT,EAAOnnH,IARpD,CASvB,OAbyB,CAAC,EAAa,GAczC,KAAK,EACHR,EAAG0rD,OACH1rD,EAAGyrD,MAAQ,EACb,KAAK,EACH,MAAO,CAAC,GAEd,GACF,GACF,EAEAopa,EAAO91d,UAAUi2d,gBAAkB,SAAUY,EAAYrmD,IACvD,UAAKqmD,GAAY,SAAUxB,GACzB,IAAIt3M,GAAa,UAAIs3M,EAAW,cAChC,GAAKA,GAAct3M,EAAnB,CAGA,IAAIpgP,EAASogP,EAAWiuJ,YACpBl+V,EAASiwM,EAAWmuJ,YACxB,GAAKmpD,EAAUtiB,UAAf,CAIA,IAAI+jB,GAAe,UAAIzB,EAAW,YAAa,CAAC,GAC5C7hd,EAAK6hd,EAAU7hd,GACf7M,EAAOmwd,EAAanwd,KACxB,IAAKA,EAAM,CACT,IAAI6f,EAAQiwa,IAAiB94Z,EAAO5yB,EAAG4yB,EAAO3yB,EAAG8iE,EAAQunZ,EAAU7tc,OACnE7gB,EAAO,CAAC,CAAC,IAAK6f,EAAMzb,EAAGyb,EAAMxb,GAAI,CAAC,IAAKqqd,EAAUtqd,EAAGsqd,EAAUrqd,GAChE,CACA,IAAI+xa,EAAavM,EAAUh9Z,GACtBupa,EAAWp7a,WACdo7a,EAAW5ra,SAAS,OAAQ,CAC1BmD,SAAS,EACTlO,OAAO,UAAS,CACdO,KAAMA,EACNsa,OAAQo0c,EAAUxhb,MAAQwhb,EAAUxhb,OAAQ,UAAIwhb,EAAW,CAAC,QAAS,QAAS,QAC9E35a,KAAM,MACLo7a,EAAalrd,OAChB4H,GAAIA,EACJmqD,OAAQ03Z,EAAUtd,YAClBvyb,KAAM6vc,EAAU7vc,KAChBu4P,WAAYs3M,EAAUt3M,YApB1B,CANA,CA6BF,GACF,EAKA+3M,EAAO91d,UAAUk2d,sBAAwB,SAAUW,EAAYrmD,IAC7D,UAAKqmD,GAAY,SAAUxB,GACzB,IAAIt3M,GAAa,UAAIs3M,EAAW,cAC5BhrZ,GAAa,UAAIgrZ,EAAW,cAChC,GAAKhrZ,GAAe0zM,EAApB,CAGA,IAAIvqQ,EAAK6hd,EAAU7hd,GACfupa,EAAavM,EAAUh9Z,GAC3B,IAAKupa,EAAWp7a,UAAW,CACzB,IAAIo1d,EAAoBh6C,EAAW3sa,cAAc,GACjD,GAAI2md,EAAmB,CACrB,IAAI91d,EAAKm0d,IAAuBr4C,EAAYs4C,EAAWhrZ,EAAW6P,SAChE0rM,EAAW3kR,EAAG2kR,SACdvkQ,GAAM,UAAOpgB,EAAI,CAAC,aAChB+1d,EAAkBj6C,EAAW5ra,SAAS,OAAQ,CAChD/K,OAAO,WAAS,UAAS,CAAC,EAAGib,GAAMgpD,EAAWz+D,OAAS,CAAC,GACxD4H,GAAIA,EACJmqD,OAAQ03Z,EAAUtd,YAClBvyb,KAAM6vc,EAAU7vc,KAChBu4P,WAAYs3M,EAAUt3M,aAGxB,GADAi5M,EAAgB1hd,WAAW,GACvBswQ,EAAU,CACZ,IAAI30Q,EAAS8ld,EAAkBphd,YAC/Bqhd,EAAgBphd,UAAU3E,EAC5B,CACF,CACF,CAtBA,CAuBF,GACF,EACA6kd,EAAO91d,UAAUg2d,qBAAuB,WAItC,OADe,IAFCl2d,KAAKgJ,UACM8I,eACZ,CAAe,CAAC,EAEjC,EACAkkd,EAAO91d,UAAUm2d,YAAc,SAAUlwa,EAAOuqX,IAC9C,UAAKvqX,GAAO,SAAU1uC,GACpB,GAAIA,EAAM,CACR,IAAI/D,EAAK+D,EAAK/D,GACVupa,EAAavM,EAAUh9Z,GAC3B,IAAKupa,EAAWp7a,UAAW,CAEzB,IAAIg1d,EAAc55C,EAAW7pa,SAAQ,SAAUq0E,GAC7C,MAA2B,SAApBA,EAAIzlF,IAAI,OACjB,KACA,UAAK60d,GAAa,SAAU72C,GACtBA,IACEvoa,EAAKlJ,SACPyxa,EAAW55a,KAAK,IAAK45a,EAAW55a,KAAK,KAAOqR,EAAKlJ,SAE/CkJ,EAAKhJ,SACPuxa,EAAW55a,KAAK,IAAK45a,EAAW55a,KAAK,KAAOqR,EAAKhJ,SAGvD,GACF,CACF,CACF,GACF,EACOund,CACT,CAjU0B,GAkU1B,QCxUA,SAASnrD,IAAIp0Z,GACX,IAAI2V,EAAM,EAIV,OAHA,UAAK3V,GAAK,SAAUtU,GAClBiqB,GAAOjqB,CACT,IACOiqB,EAAM3V,EAAI5V,MACnB,CAIA,IAAIs2d,IAA6B,WAC/B,SAASA,EAAc93Q,GACrBr/M,KAAKq/M,SAAWA,CAClB,CAwZA,OAvZA83Q,EAAcj3d,UAAUk3d,cAAgB,SAAUC,GAChD,IAAI52d,EAAQT,KACRmmD,EAAQ,GACRmxa,EAAYt3d,KAAKu3d,aAAaF,GA0BlC,OAxBA,UAAKA,GAAe,SAAUpf,EAAajwc,GACzC,IAAI82a,EAAWw4C,EAAUtvd,GACzB,IAAK82a,IAAY,UAAMm5B,EAAYhtc,KAAM,UAAMgtc,EAAY/sc,GACzDi7C,EAAM5lD,KAAK,UADb,CAIA,IAAIi3d,GAAgB,UAAQ14C,EAAShoW,SAAgCgoW,EAAShoW,QAA9B,CAACgoW,EAAShoW,SAC1DgoW,EAAShoW,QAAU0gZ,EACnB,IAAI1+Z,EAAQ0+Z,EAAa32d,QACzB,UAAK22d,GAAc,SAAU1gZ,EAAS2gZ,GACpC,IAAI,UAAM3gZ,IAAwB,KAAZA,EACpB3wB,EAAM5lD,KAAK,UADb,CAIA,IAAIkX,GAAO,WAAS,UAAS,CAAC,EAAGqna,GAAWr+a,EAAMk2a,cAAcmI,EAAUm5B,EAAawf,IAClFhgd,EAAKwJ,YACRxJ,EAAKwJ,UAAYxgB,EAAMi3d,cAAcjgd,EAAMggd,EAAU3+Z,IAEnDrhD,EAAK0rE,QAAU,IACjB1rE,EAAKw7b,UAAY,MAEnB9sZ,EAAM5lD,KAAKkX,EARX,CASF,GAjBA,CAkBF,IACO0uC,CACT,EACAgxa,EAAcj3d,UAAU8qE,OAAS,SAAUimZ,EAAc5S,GAIvD,YAHiB,IAAbA,IACFA,GAAW,IAEN,UAAUr+c,UAAM,OAAQ,GAAQ,WACrC,IAAI+2d,EAAYhC,EAAgBvoB,EAChC,OAAO,UAAYxsc,MAAM,SAAUmB,GACjC,OAAQA,EAAGyrD,OACT,KAAK,EAKH,OAJAmqa,EAAa/2d,KAAKo3d,cAAcnG,GAChC8D,EAAiB/0d,KAAK23d,oBACtBnrB,EAASxsc,KAAK43d,oBAEP,CAAC,EAAa7C,EAAe/pZ,OAAO+rZ,EAAYvqB,EAAQ6R,IACjE,KAAK,EAGH,OADAl9c,EAAG0rD,OACI,CAAC,GAEd,GACF,GACF,EAEAsqa,EAAcj3d,UAAUqP,MAAQ,WAC9B,IAAIwld,EAAiB/0d,KAAK+0d,eACtBA,GACFA,EAAexld,OAEnB,EACA4nd,EAAcj3d,UAAUkC,QAAU,WAChC,IAAI2yd,EAAiB/0d,KAAK+0d,eACtBA,GACFA,EAAe3yd,UAEjBpC,KAAK+0d,eAAiB,IACxB,EAEAoC,EAAcj3d,UAAUiic,cAAgB,WACtC,OAAOnic,KAAKq/M,SAAS4+D,UACvB,EAIAk5M,EAAcj3d,UAAU23d,mBAAqB,SAAU10Y,EAAQh4B,GAC7D,IAAIk0J,EAAWr/M,KAAKq/M,SAChB12M,EAAO02M,EAAS12M,KAClB2kG,EAAQ+xG,EAAS/xG,MACnB,MAAa,YAAT3kG,GAA+B,aAATA,GAAoC,WAAbwiD,GAAyBg4B,EAAS,IAAM,CAAC,OAAQ,QAAS,QAAQh+E,SAASwD,IAEnH,UAAI2kG,EAAO,cAAe,CAAC,IAE7B,UAAIA,EAAO,SAAU,CAAC,EAC/B,EAKA6pX,EAAcj3d,UAAU43d,kBAAoB,SAAUh5C,GACpD,IAAIz/N,EAAWr/M,KAAKq/M,SAChB04Q,EAAkB/3d,KAAK63d,qBACvBlvd,EAAO02M,EAAS12M,KAClB2kG,EAAQ+xG,EAAS/xG,MAQnB,MANa,YAAT3kG,GAAsBm2a,EAAS37V,OAAS,IAAM,CAAC,OAAQ,QAAS,QAAQh+E,SAASwD,IAElE,UAAQ,CAAC,EAAGovd,EAAiBzqX,EAAM+kW,YAAavzB,IAEhD,UAAQ,CAAC,EAAGi5C,EAAiBzqX,EAAMymK,OAAQ+qK,EAGhE,EAQAq4C,EAAcj3d,UAAU83d,iBAAmB,SAAUC,EAAehgB,EAAajwc,EAAOmjD,GAAW,EAInGgsa,EAAcj3d,UAAUg4d,eAAiB,SAAU/0Y,GACjD,IAAI86L,EAAaj+Q,KAAKmic,gBAClBjpa,EAASl5B,KAAKm4d,gBAAgBh1Y,GAClC,OAAO86L,EAAWutJ,aAAetyY,EAAO,GAAKA,EAAO,EACtD,EAQAi+b,EAAcj3d,UAAUk4d,oBAAsB,SAAUt5C,EAAU92a,EAAO8wD,GACvE,IAAIqqB,EAAS27V,EAAS37V,OAElB87W,EADaj/b,KAAKmic,gBACM32B,aACxB95H,EAAMutJ,EAAa,IAAM,IACzB19O,EAAS09O,EAAa,GAAK,EAC3Bo5B,EAAc,CAChBptd,EAAG,EACHC,EAAG,GAQL,OAJEmtd,EAAY3mL,GAFV1pS,EAAQ,GAAe,IAAV8wD,EAEIqqB,EAASo+H,EAETp+H,EAASo+H,GAAU,EAEjC82Q,CACT,EAQAlB,EAAcj3d,UAAUy2a,cAAgB,SAAUmI,EAAUm5B,EAAajwc,GACvE,IAAIi2Q,EAAaj+Q,KAAKmic,gBAClBrpY,EAAQgmX,EAAShoW,QAAQj2E,OAC7B,SAASy3d,EAAYn2d,EAAO+iC,EAAKqzb,QACjB,IAAVA,IACFA,GAAQ,GAEV,IAAItmd,EAAI9P,EAiBR,OAhBI,UAAQ8P,KAGNA,EAF4B,IAA5B6sa,EAAShoW,QAAQj2E,OACf03d,EACE1tD,IAAI54Z,GAGJA,EAAEpR,QAAU,EACVoR,EAAE9P,EAAMtB,OAAS,GAEjBgqa,IAAI54Z,GAIRA,EAAEizB,IAGHjzB,CACT,CACA,IAAI26C,EAAQ,CACVkqB,QAASgoW,EAAShoW,QAAQ9uE,GAC1BiD,EAAG,EACHC,EAAG,EACHwb,MAAO,CACLzb,EAAG,EACHC,EAAG,GAEL6oC,MAAO,QAELtuC,GAAQ,UAAQwyc,EAAYxyc,OAASwyc,EAAYxyc,MAAM,GAAKwyc,EAAYxyc,MACxE+yd,EAAqB,WAAV/yd,GAAgC,YAAVA,EAErC,GAA2B,YAAvBzF,KAAKq/M,SAAS12M,KAAoB,CACpC,IAAIq6C,ElDvEH,SAA4BrqB,EAAIE,GACrC,IAAI,UAASF,KAAO,UAASE,GAE3B,MAAO,CAACF,EAAIE,GAUd,GAAI69Z,IAAa/9Z,IAAO+9Z,IAAa79Z,GAAK,MAAO,CAAC0oB,IAAI5oB,GAAK4oB,IAAI1oB,IAQ/D,IAPA,IAGInG,EAEAF,EALAtxB,GAAK,EACL+J,EAAI,EACJC,EAAI,EAEJzD,EAAUkxB,EAAG93B,OAAS,EAEtB6F,EAAI,IACCxF,EAAIy3B,EAAG93B,QACd6xB,EAASjrB,EACTA,EAAUvG,EACVwF,GAAK8rB,EAAOmG,EAAGjG,GAAUmG,EAAGpxB,GAAWkxB,EAAGlxB,GAAWoxB,EAAGnG,GACxDznB,IAAM0tB,EAAGjG,GAAUiG,EAAGlxB,IAAY+qB,EAClCtnB,IAAM2tB,EAAGnG,GAAUmG,EAAGpxB,IAAY+qB,EAGpC,MAAO,CAACvnB,GADRvE,GAAK,GACUwE,EAAIxE,EACrB,CkDyCqB+xd,CAAmBxgB,EAAYhtc,EAAGgtc,EAAY/sc,GAC7D0hD,EAAM3hD,EAAI+3C,EAAS,GACnB4J,EAAM1hD,EAAI83C,EAAS,EACrB,KAAkC,aAAvBhjD,KAAKq/M,SAAS12M,MAAwB6vd,GAK/C5ra,EAAM3hD,EAAIqtd,EAAYrgB,EAAYhtc,EAAGjD,GACrC4kD,EAAM1hD,EAAIotd,EAAYrgB,EAAY/sc,EAAGlD,KAJrC4kD,EAAM3hD,EAAIqtd,EAAYrgB,EAAYhtc,EAAGjD,GAAO,GAC5C4kD,EAAM1hD,EAAIotd,EAAYrgB,EAAY/sc,EAAGlD,IAMvC,GAAIwwd,EAAU,CACZ,IAAI7G,GAAa,UAAI1Z,EAAa,cAC9Bv3b,GAAS,UAAIu3b,EAAa,UAC9B,GAAI0Z,EAAY,CAEd,IAAI30b,EAASihP,EAAWp/D,QAAQn+L,EAAO,IACnCuc,EAASghP,EAAWp/D,QAAQ8yQ,EAAW,IAC3C/ka,EAAM3hD,GAAK+xB,EAAO/xB,EAAIgyB,EAAOhyB,GAAK,EAClC2hD,EAAM1hD,GAAK8xB,EAAO9xB,EAAI+xB,EAAO/xB,GAAK,CACpC,MAAO,GAAc,YAAVzF,EAAqB,CAC1Bu3B,EAASihP,EAAWp/D,QAAQn+L,EAAO,IACnCuc,EAASghP,EAAWp/D,QAAQn+L,EAAO,IACvCksC,EAAM3hD,GAAK+xB,EAAO/xB,EAAIgyB,EAAOhyB,GAAK,EAClC2hD,EAAM1hD,GAAK8xB,EAAO9xB,EAAI+xB,EAAO/xB,GAAK,CACpC,CACF,CACI4za,EAAS3zX,UAEXnrD,KAAKg4d,iBAAiBpra,EAAOqrZ,EAAajwc,EAAO82a,EAAS3zX,UAE5D,IAAIkta,EAAcr4d,KAAKo4d,oBAAoBt5C,EAAU92a,EAAO8wD,GAQ5D,OAPAlM,EAAMlmC,MAAQ,CACZzb,EAAG2hD,EAAM3hD,EACTC,EAAG0hD,EAAM1hD,GAEX0hD,EAAM3hD,GAAKotd,EAAYptd,EACvB2hD,EAAM1hD,GAAKmtd,EAAYntd,EACvB0hD,EAAM7Y,MAAQkka,EAAYlka,MACnB6Y,CACT,EAQAuqa,EAAcj3d,UAAUw3d,cAAgB,SAAUjgd,EAAMzP,EAAO8wD,GAC7D,IAAIu7B,EAAQ,SAEZ,GADiBr0F,KAAKmic,gBACP32B,aAAc,CAC3B,IAAIroV,EAAS1rE,EAAK0rE,OAEhBkR,EADElR,EAAS,EACH,QACY,IAAXA,EACD,SAEA,OAENrqB,EAAQ,GAAe,IAAV9wD,IACD,UAAVqsF,EACFA,EAAQ,OACW,SAAVA,IACTA,EAAQ,SAGd,CACA,OAAOA,CACT,EAKA8iY,EAAcj3d,UAAUw4d,WAAa,SAAUzgB,GAC7C,IAAI54P,EAAWr/M,KAAKq/M,SAChB12M,EAAO02M,EAAS12M,KAChBwvY,EAAS94L,EAASy3P,YAClB1+D,EAAS/4L,EAAS82P,YAClBt4Y,EAASo6Y,EAAYhgD,KACrBomB,EAAUh/N,EAAS6xN,aAAa+mC,GAQpC,MAPa,SAATtvc,GAA4B,SAATA,EAErB01a,GAAW,IAAI9qa,OAAOsqD,EAAOs6U,EAAOt4Q,QAClB,SAATl3H,IAET01a,GAAW,IAAI9qa,OAAOsqD,EAAOs6U,EAAOt4Q,OAAQ,KAAKtsH,OAAOsqD,EAAOu6U,EAAOv4Q,SAEjEw+S,CACT,EAEA84C,EAAcj3d,UAAUy3d,kBAAoB,WAC1C,IAAIx2d,EAAKnB,KAAKq/M,SACZw/P,EAAkB19c,EAAG09c,gBACrB8P,EAAcxtd,EAAGwtd,YACjB3K,EAAe7id,EAAG6id,aAClBv0C,EAAgBtua,EAAGsua,cACjBxxJ,EAAaj+Q,KAAKq/M,SAAS4+D,WAC3B82M,EAAiB/0d,KAAK+0d,eAa1B,OAZKA,IACHA,EAAiB,IAAI,IAAO,CAC1B/rd,UAAW61c,EACX/1V,QAAQ,UAAI6lW,EAAa,CAAC,MAAO,UAAW,CAC1Chmd,KAAM3I,KAAKw6c,kBAGfx6c,KAAK+0d,eAAiBA,GAExBA,EAAe5mD,OAAS61C,EAExB+Q,EAAej+c,UAAU24Z,GAAgBy5C,IAAqB,QAASjrM,GAChE82M,CACT,EACAoC,EAAcj3d,UAAUq3d,aAAe,SAAUF,GAC/C,IAAI52d,EAAQT,KACRq/M,EAAWr/M,KAAKq/M,SAChBsvQ,EAActvQ,EAASsvQ,YACzBzkO,EAAS7qC,EAAS6qC,OAClB+zB,EAAa5+D,EAAS4+D,WACpB98Q,EAAKwtd,EACP/uV,EAASz+H,EAAGy+H,OACZv/H,EAAWc,EAAGd,SACdsB,EAAMR,EAAGQ,IACPg3d,EAAc/4V,EAAO5uG,KAAI,SAAU6uG,GACrC,OAAOqqH,EAAOrqH,EAChB,IACIy3V,EAAY,GA4ChB,OA3CA,UAAKD,GAAe,SAAUpf,EAAajwc,GACzC,IAEI4wd,EAFA/6Z,EAASo6Y,EAAYhgD,KACrB4gE,EAAap4d,EAAMq4d,aAAaj7Z,EAAQ86Z,GAE5C,GAAIt4d,EAAU,CAEZ,IAAI04d,EAAen5V,EAAO5uG,KAAI,SAAU6uG,GACtC,OAAOhiE,EAAOgiE,EAChB,IAEA,GADA+4V,EAAcv4d,EAASgB,WAAM,GAAQ,UAAc,IAAI,UAAO03d,IAAe,KACzE,UAAMH,GAER,YADAtB,EAAU/2d,KAAK,KAGnB,CACA,IAAIu+a,GAAW,WAAS,UAAS,CAC/Bpra,GAAIjT,EAAMi4d,WAAWzgB,GACrB52D,UAAW5gZ,EAAM4+M,SAAS6xN,aAAa+mC,GACvCvyb,KAAMm4C,EAENo6Y,YAAaA,EAEbh6L,WAAYA,GACXt8Q,GAAMi3d,IACL,UAAW95C,EAAS3zX,YACtB2zX,EAAS3zX,SAAW2zX,EAAS3zX,SAAS0S,EAAQo6Y,EAAajwc,IAE7D,IAAIm7E,EAAS1iF,EAAMy3d,eAAep5C,EAAS37V,QAAU,GAEjD40Y,EAAkBt3d,EAAMo3d,mBAAmB10Y,EAAQ27V,EAAS3zX,WAEhE2zX,GAAW,UAAQ,CAAC,EAAGi5C,EAAiBj5C,IAE/B37V,OAAS1iF,EAAMy3d,eAAep5C,EAAS37V,QAAU,GAC1D,IAAIrM,EAAUgoW,EAAShoW,SACnB,UAAWA,GACbgoW,EAAShoW,QAAUA,EAAQjZ,EAAQo6Y,EAAajwc,IACvC,UAAY8uE,KAErBgoW,EAAShoW,QAAU+hZ,EAAW,IAEhCvB,EAAU/2d,KAAKu+a,EACjB,IACOw4C,CACT,EACAH,EAAcj3d,UAAU44d,aAAe,SAAUj7Z,EAAQqsL,GACvD,IAAI8uO,EAAa,GAgBjB,OAfA,UAAK9uO,GAAQ,SAAUpxO,GACrB,IAAI3W,EAAQ07D,EAAO/kD,EAAM+mH,OAEvB19H,GADE,UAAQA,GACFA,EAAM6uB,KAAI,SAAUioc,GAC1B,OAAOngd,EAAM+mZ,QAAQo5D,EACvB,IAEQngd,EAAM+mZ,QAAQ19Z,IAEpB,UAAMA,IAAoB,KAAVA,EAClB62d,EAAWz4d,KAAK,MAEhBy4d,EAAWz4d,KAAK4B,EAEpB,IACO62d,CACT,EACA7B,EAAcj3d,UAAUi4d,gBAAkB,SAAUh1Y,QACnC,IAAXA,IACFA,EAAS,GAEX,IAAI86L,EAAaj+Q,KAAKmic,gBAClB+2B,EAAe,EAKnB,OAJI,UAAS/1Y,KACX+1Y,EAAe/1Y,GAGV86L,EAAWutJ,aAAevtJ,EAAW/sQ,YAAYgod,EAAc,GAAKj7M,EAAW/sQ,YAAY,EAAGgod,EACvG,EACA/B,EAAcj3d,UAAU03d,kBAAoB,WAC1C,IAAIv4Q,EAAWr/M,KAAKq/M,SAChBmtP,EAAS,CAAC,EASd,OARA,UAAKntP,EAAS85P,aAAa,SAAUxpc,EAAS+D,GAC5C84b,EAAO94b,GAAM/D,EAAQlK,KACvB,KAEA,UAAK45M,EAAS0qQ,oBAAoBz5c,eAAe,SAAUR,GACzD,IAAI4D,EAAK2rM,EAAS6xN,aAAapha,EAAM9N,IAAI,UAAUi2c,aACnDzL,EAAO94b,GAAM5D,CACf,IACO08b,CACT,EACO2qB,CACT,CA5ZiC,GA6ZjC,QCpaO,SAASgC,IAAgB/yd,EAAMjE,EAAOikC,GAC3C,IAAKhgC,EACH,OAAOggC,EAET,IAAIlnB,EAEJ,GAAI9Y,EAAK/F,UAAY+F,EAAK/F,SAASQ,OAAS,EAAG,CAC7C,IAAI+mK,EAAWnnI,MAAMr6B,EAAK/F,SAASQ,OAAS,GAAG+6C,KAAK,IACpD18B,EAAI9Y,EAAKorV,QAAQnwV,MAAM+E,GAAM,UAAc,CAACjE,IAAQ,UAAOylK,IAAW,IAAQv+I,KAAK,GACrF,MACEnK,EAAI9Y,EAAKorV,QAAQrvV,GAAOknB,KAAK,IAE/B,OAAOnK,GAAKknB,CACd,CCrBO,IAAIgzb,IAAgB,CACzBjsB,QAAS,SAAiBlic,EAAGC,EAAGgU,GAC9B,IAAIm6c,EAAQn6c,EAAI,EAAIjF,KAAK2C,KAAK,GAC9B,MAAO,CAAC,CAAC,IAAK3R,EAAGC,EAAIgU,GAAI,CAAC,IAAKjU,EAAIoud,EAAOnud,EAAIgU,EAAI,GAAI,CAAC,IAAKjU,EAAIoud,EAAOnud,EAAIgU,EAAI,GAAI,CAAC,IAAKjU,EAAGC,EAAIgU,GAAI,CAAC,IAAKjU,EAAIoud,EAAOnud,EAAIgU,EAAI,GAAI,CAAC,IAAKjU,EAAIoud,EAAOnud,EAAIgU,EAAI,GAAI,CAAC,KACjK,EACA+tb,OAAQ,SAAgBhic,EAAGC,EAAGgU,GAC5B,IAAIo6c,EAAQp6c,EAAI,IAChB,MAAO,CAAC,CAAC,IAAKjU,EAAIiU,EAAGhU,EAAIoud,GAAQ,CAAC,IAAKrud,EAAIiU,EAAGhU,EAAIoud,GAAQ,CAAC,IAAKrud,EAAIiU,EAAGhU,EAAIoud,GAAQ,CAAC,IAAKrud,EAAIiU,EAAGhU,EAAIoud,GAAQ,CAAC,KAC/G,EACA1kc,MAAO,SAAe3pB,EAAGC,EAAGgU,GAC1B,MAAO,CAAC,CAAC,IAAKjU,EAAIiU,EAAGhU,EAAIgU,GAAI,CAAC,IAAKjU,EAAIiU,EAAGhU,EAAIgU,GAAI,CAAC,IAAKjU,EAAIiU,EAAGhU,EAAIgU,GAAI,CAAC,IAAKjU,EAAIiU,EAAGhU,EAAIgU,GAC1F,EACAi1Q,KAAM,SAAclpR,EAAGC,EAAGgU,GACxB,MAAO,CAAC,CAAC,IAAKjU,EAAIiU,EAAI,EAAGhU,EAAIgU,GAAI,CAAC,IAAKjU,EAAIiU,EAAI,EAAGhU,EAAIgU,GAAI,CAAC,IAAKjU,EAAGC,EAAIgU,GAAI,CAAC,IAAKjU,EAAGC,EAAIgU,GAAI,CAAC,IAAKjU,EAAIiU,EAAI,EAAGhU,EAAIgU,GAAI,CAAC,IAAKjU,EAAIiU,EAAI,EAAGhU,EAAIgU,GAC5I,EACAmub,KAAM,SAAcpic,EAAGC,EAAGgU,GACxB,MAAO,CAAC,CAAC,IAAKjU,EAAIiU,EAAGhU,GAAI,CAAC,IAAKD,EAAIiU,EAAGhU,GAAI,CAAC,IAAKD,EAAGC,EAAIgU,GAAI,CAAC,IAAKjU,EAAGC,EAAIgU,GAC1E,EACAoub,OAAQ,SAAgBric,EAAGC,EAAGgU,GAC5B,MAAO,CAAC,CAAC,IAAKjU,EAAIiU,EAAGhU,GAAI,CAAC,IAAKD,EAAIiU,EAAGhU,GACxC,EACAgrB,KAAM,SAAcjrB,EAAGC,EAAGgU,GACxB,MAAO,CAAC,CAAC,IAAKjU,EAAGC,EAAIgU,GAAI,CAAC,IAAKjU,EAAGC,EAAIgU,GACxC,GCjBEq6c,IAAkB,CAAC,OAAQ,QAAS,OAAQ,OAAQ,UAoCxD,SAASC,IAAgB/9K,GACvB,IAAIhzQ,EAASgzQ,EAAOhzQ,QAChB,UAASA,IAAW2wb,IAAc3wb,KACpCgzQ,EAAOhzQ,OAAS2wb,IAAc3wb,GAElC,CAOO,SAASgxb,IAAgB3+b,GAC9B,OAAOA,EAAUymD,WAAW,IAAUk0G,OAAS36J,EAAUymD,WAAW,IAAUm0G,OAAS,WAAa,YACtG,CAWO,SAASgkS,IAAetnN,EAAM/yD,EAAUj5M,EAAMuzd,EAAaC,GAChE,IAAI9gd,EAAQ1S,EAAKk7S,SAASl7S,EAAKuC,MAC/B,GAAImQ,EAAMglZ,WAAY,CACpB,IAAI+7D,EAAU/gd,EAAM+mH,MAChBi6V,EAAcz6Q,EAASj1J,aAAa,SACpC2va,EAAc16Q,EAASj1J,aAAa,SACpC4va,EAAiB5nN,EAAK/qJ,WAAW49M,aACjCg1J,EAAc56Q,EAAS4+D,WAAWotJ,QACtC,OAAOvyZ,EAAM8mZ,WAAW5uY,KAAI,SAAUmjQ,EAAMnsR,GAC1C,IAAI7G,EACA0f,EAAOszQ,EAAKtzQ,KACdq5c,EAAa/lM,EAAKhyR,MAChBF,EAAO4e,EACP1e,EAAQ2W,EAAMwL,OAAO41c,GAErB3yC,EAA2F,IAA/En1K,EAAKkvM,gBAAgBuY,EAAS,EAAE14d,EAAK,CAAC,EAAGA,EAAG04d,GAAW13d,EAAOhB,KAAMN,QACpF,UAAKuxQ,EAAKoD,OAAO,SAAU6rL,GACzB,IAAIlgc,EACCkgc,EAAQigB,gBAAgBuY,EAAS,EAAE14d,EAAK,CAAC,EAAGA,EAAG04d,GAAW13d,EAAOhB,KAAMN,SAC1E0mb,GAAY,EAEhB,IAEA,IAAIxzY,EAAQolb,IAAgBW,EAAa33d,EAAO63d,GAC5Cv0d,EAAQ0zd,IAAgBY,EAAa53d,EAAO,SAC5Cs5S,EAASp8F,EAAS4wQ,eAAexqd,EAAO,CAC1CsuC,MAAOA,EACPomb,UAAWF,IAET3xC,EAAYsxC,EAehB,OAdI,UAAWtxC,KACbA,EAAYA,EAAUrmb,EAAM+F,GAAO,UAAS,CAC1C/F,KAAMA,EACNE,MAAOA,IACN,UAAQ,CAAC,EAAGw3d,EAAal+K,MA5EpC,SAA4BA,EAAQ1nQ,GAClC,IAAItL,EAASgzQ,EAAOhzQ,OACpB,IAAI,UAASA,KAAgD,IAArC8wb,IAAgBrmd,QAAQu1B,GAAgB,CAC9D,IAAI++Y,GAAc,UAAI/rI,EAAQ,QAAS,CAAC,GACpCh8R,GAAY,UAAI+na,EAAa,YAAa,GAC1Crma,EAASqma,EAAYrma,QAAUqma,EAAY5rY,MAAQ7H,EACvD0nQ,EAAO3vS,OAAQ,UAAQ,CAAC,EAAG2vS,EAAO3vS,MAAO,CACvC2T,UAAWA,EACX0B,OAAQA,EACRy6B,KAAM,MAEV,CACF,CAoEMw+a,CADA3+K,GAAS,UAAQ,CAAC,EAAGk+K,EAAal+K,EAAQ,KAAK,UAAS,CAAC,EAAG6sI,GAAY,CAAC,WAC9Cv0Y,GACvBu0Y,GAAaA,EAAUx8a,QAEzB2vS,EAAO3vS,MA/Ff,SAA+B07a,EAAa17a,GAC1C,OAAI,UAAWA,GACNA,EAAM07a,IAER,UAAQ,CAAC,EAAGA,EAAa17a,EAClC,CA0FuBuud,CAAsB5+K,EAAO3vS,MAAOw8a,EAAUx8a,QAE/D0td,IAAgB/9K,GACT,CACL/nS,GAAIvR,EACJF,KAAMA,EACNE,MAAOA,EACPs5S,OAAQA,EACR8rI,UAAWA,EAEf,GACF,CACA,MAAO,EACT,CA8BO,SAAS+yC,IAAkBhtX,EAAOxyE,GACvC,IAAIy/b,GAAc,UAAIjtX,EAAO,CAAC,aAAc,UAAW,CAAC,GACxD,OAAO,UAAQ,CAAC,GAAG,UAAIitX,EAAa,CAAC,UAAW,CAAC,IAAI,UAAQ,CAAC,GAAG,UAAIA,EAAa,CAACz/b,GAAY,CAAC,IAClG,CCzJA,SAAS0/b,IAAar4d,GACpB,OAAIA,IAGGA,SAAyC+f,MAAM/f,GACxD,CACA,SAASs4d,IAAOzvd,GACd,IAAI,UAAQA,GAEV,OAAOwvd,IAAaxvd,EAAM,GAAGE,GAE/B,IAAI/I,EAAQ6I,EAAME,EAClB,OAAO,UAAQ/I,GAASq4d,IAAar4d,EAAM,IAAMq4d,IAAar4d,EAChE,CAwBO,SAASu4d,IAAch6c,EAAQi6c,EAAcC,GAOlD,QANqB,IAAjBD,IACFA,GAAe,QAEO,IAApBC,IACFA,GAAkB,IAEfl6c,EAAO7f,QAA4B,IAAlB6f,EAAO7f,SAAiB+5d,EAE5C,MAAO,GAET,GAAID,EAAc,CAGhB,IADA,IAAIE,EAAW,GACN35d,EAAI,EAAGs5B,EAAM9Z,EAAO7f,OAAQK,EAAIs5B,EAAKt5B,IAAK,CAE5Cu5d,IADDzvd,EAAQ0V,EAAOxf,KAEjB25d,EAASt6d,KAAKyK,EAElB,CACA,MAAO,CAAC6vd,EACV,CACA,IAAIjod,EAAS,GACT0uB,EAAM,GACV,IAASpgC,EAAI,EAAGs5B,EAAM9Z,EAAO7f,OAAQK,EAAIs5B,EAAKt5B,IAAK,CACjD,IAAI8J,EACAyvd,IADAzvd,EAAQ0V,EAAOxf,IAEbogC,EAAIzgC,UACe,IAAfygC,EAAIzgC,QAAiB+5d,IAEzBhod,EAAOrS,KAAK+gC,GAEdA,EAAM,IAGRA,EAAI/gC,KAAKyK,EAEb,CAIA,OAHIs2B,EAAIzgC,QACN+R,EAAOrS,KAAK+gC,GAEP1uB,CACT,CAMO,SAASkod,IAAcp6c,GAE5B,IADA,IAAI7Z,EAAO,GACF3F,EAAI,EAAGA,EAAIwf,EAAO7f,OAAQK,IAAK,CACtC,IAAI8J,EAAQ0V,EAAOxf,GACnB,GAAI8J,EAAO,CACT,IAAIyvB,EAAe,IAANv5B,EAAU,IAAM,IAC7B2F,EAAKtG,KAAK,CAACk6B,EAAQzvB,EAAMC,EAAGD,EAAME,GACpC,CACF,CACA,IAAIqxB,EAAQ7b,EAAO,GAKnB,OAJI6b,IACF11B,EAAKtG,KAAK,CAAC,IAAKg8B,EAAMtxB,EAAGsxB,EAAMrxB,IAC/BrE,EAAKtG,KAAK,CAAC,OAENsG,CACT,CAMO,SAASk0d,IAAoBr6c,GAIlC,IAHA,IAAIooZ,EAAOpoZ,EAAO7f,OAAS,EACvBm6d,EAAa,GACbC,EAAc,GACT/5d,EAAI,EAAGA,EAAIwf,EAAO7f,OAAQK,IAC7BA,EAAI4na,EACNkyD,EAAWz6d,KAAKmgB,EAAOxf,IAEvB+5d,EAAY16d,KAAKmgB,EAAOxf,IAG5B,IAAIg6d,EAAWr8B,IAAcm8B,GAAY,GACrCG,EAAYt8B,IAAco8B,GAAa,GACvCA,EAAYp6d,QACdq6d,EAAS36d,KAAK,CAAC,IAAK06d,EAAY,GAAGhwd,EAAGgwd,EAAY,GAAG/vd,IAEvDiwd,EAAUvwc,QACV,IAAI/jB,EAAOq0d,EAAS3nd,OAAO4nd,GAK3B,OAJIH,EAAWn6d,QACbgG,EAAKtG,KAAK,CAAC,IAAKy6d,EAAW,GAAG/vd,EAAG+vd,EAAW,GAAG9vd,IAEjDrE,EAAKtG,KAAK,CAAC,MACJsG,CACT,CCxHO,SAAS,IAASlF,EAAKy5d,EAAUC,EAAQC,QAC7B,IAAbA,IACFA,EAAW,IAEb,IAAIn6d,EAAKQ,EAAImK,MACXA,OAAe,IAAP3K,EAAgB,CAAC,EAAIA,EAC7BuvZ,EAAe/uZ,EAAI+uZ,aACnB38W,EAAQpyC,EAAIoyC,MACZzP,EAAO3iC,EAAI2iC,KACTh+B,GAAQ,WAAS,UAAS,CAAC,EAAGoqZ,GAAe5kZ,GAmBjD,OAlBIioC,IACEqnb,IACGtvd,EAAMqV,SAET7a,EAAM6a,OAAS4yB,IAGfsnb,IACGvvd,EAAM8vC,OAETt1C,EAAMs1C,KAAO7H,KAIfunb,IAAY,UAAMxvd,EAAMwvd,OAAe,UAAMh3b,KAE/Ch+B,EAAMg1d,GAAYh3b,GAEbh+B,CACT,CAKO,SAASi1d,IAAuB55d,GACrC,OAAO,UAAQ,CAAC,EAAG,CAEjBi6C,KAAM,UACNioC,YAAa,KACZ,UAAIliF,EAAK,CAAC,aAAc,UAC7B,CCvCO,SAAS,IAAYoyB,GAE1B,IAAI9oB,EAAI8oB,EAAI9oB,EAEZ,QADQ,UAAQ8oB,EAAI7oB,GAAK6oB,EAAI7oB,EAAI,CAAC6oB,EAAI7oB,IAC7B8lB,KAAI,SAAUwqc,EAAOxzd,GAC5B,MAAO,CACLiD,GAAG,UAAQA,GAAKA,EAAEjD,GAASiD,EAC3BC,EAAGswd,EAEP,GACF,CCtBA,IAAIC,IAAc,CAChBvlc,KAAM,SAAcjrB,EAAGC,EAAGgU,GACxB,MAAO,CAAC,CAAC,IAAKjU,EAAIiU,EAAGhU,GAAI,CAAC,IAAKD,EAAIiU,EAAGhU,GACxC,EACAy2C,IAAK,SAAa12C,EAAGC,EAAGgU,GACtB,MAAO,CAAC,CAAC,IAAKjU,EAAIiU,EAAGhU,GAAI,CAAC,IAAKD,EAAIiU,EAAGhU,GACxC,EACA0hc,KAAM,SAAc3hc,EAAGC,EAAGgU,GACxB,MAAO,CAAC,CAAC,IAAKjU,EAAIiU,EAAGhU,GAAI,CAAC,IAAKD,EAAIiU,EAAGhU,GACxC,EACA0wB,OAAQ,SAAgB3wB,EAAGC,EAAGgU,GAC5B,MAAO,CAAC,CAAC,IAAKjU,EAAIiU,EAAGhU,GAAI,CAAC,IAAKgU,EAAI,EAAGA,EAAI,EAAG,EAAG,EAAG,EAAGjU,EAAGC,GAAI,CAAC,IAAKgU,EAAI,EAAGA,EAAI,EAAG,EAAG,EAAG,EAAGjU,EAAIiU,EAAGhU,GACnG,EACA2hc,GAAI,SAAY5hc,EAAGC,EAAGgU,GACpB,MAAO,CAAC,CAAC,IAAKjU,EAAIiU,EAAI,EAAGhU,EAAI,KAAM,CAAC,IAAKD,EAAGC,EAAI,KAAM,CAAC,IAAKD,EAAGC,EAAI,KAAM,CAAC,IAAKD,EAAIiU,EAAI,EAAGhU,EAAI,KAChG,EACA4hc,GAAI,SAAY7hc,EAAGC,EAAGgU,GACpB,MAAO,CAAC,CAAC,IAAKjU,EAAIiU,EAAI,EAAGhU,EAAI,KAAM,CAAC,IAAKD,EAAGC,EAAI,KAAM,CAAC,IAAKD,EAAGC,EAAI,KAAM,CAAC,IAAKD,EAAIiU,EAAI,EAAGhU,EAAI,KAChG,EACA6hc,IAAK,SAAa9hc,EAAGC,EAAGgU,GACtB,MAAO,CAAC,CAAC,IAAKjU,GAAKiU,EAAI,GAAIhU,EAAI,KAAM,CAAC,IAAKD,EAAIiU,EAAI,EAAGhU,EAAI,KAAM,CAAC,IAAKD,EAAIiU,EAAI,EAAGhU,EAAI,KAAM,CAAC,IAAKD,EAAIiU,EAAI,EAAGhU,EAAI,KAAM,CAAC,IAAKD,EAAIiU,EAAI,EAAGhU,EAAI,KAAM,CAAC,IAAKD,EAAIiU,EAAI,EAAGhU,EAAI,KACxK,EACA8hc,IAAK,SAAa/hc,EAAGC,GAEnB,MAAO,CAAC,CAAC,IAAKD,EAAI,EAAGC,EAAI,KAAM,CAAC,IAAKD,EAAI,EAAGC,GAAI,CAAC,IAAKD,EAAGC,GAAI,CAAC,IAAKD,EAAGC,EAAI,GAAI,CAAC,IAAKD,EAAGC,EAAI,GAAI,CAAC,IAAKD,EAAI,IAAKC,EAAI,GACpH,GASK,SAASwwd,IAAcpzC,EAAWh3a,GACvC,IAAIyiC,EAAQu0Y,EAAUv0Y,MACtB,MAAO,CACLtL,OAAQgzb,IAAYnqd,GACpBxF,MAAO,CACL2T,UAAW,EACXP,EAAG,EACHiC,OAAQ4yB,GAGd,CCrBA,SAAS4nb,IAAcj7c,EAAQi+a,EAAY/ia,EAAQN,EAAYxvB,GAC7D,OAAsB,IAAlB4U,EAAO7f,OAEF,CAAC,CAAC,IAAK6f,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,EAAIY,EAAM2T,UAAY,GAAI,CAAC,IAAKiB,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,IAAKwV,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,EAAIY,EAAM2T,UAAY,KAGhJmc,GAOC+ia,GAAcj+a,EAAO7f,QACvB6f,EAAOngB,KAAK,CACV0K,EAAGyV,EAAO,GAAGzV,EACbC,EAAGwV,EAAO,GAAGxV,IAGjBrE,EAAOg4b,IAAcn+a,GAAQ,EAAO4a,KAZpCz0B,EAAO,IAAY6Z,GAAQ,GACvBi+a,GACF93b,EAAKtG,KAAK,CAAC,OAYRsG,GAhBP,IAAIA,CAiBN,CAoBO,SAAS,IAAQ6Z,EAAQi+a,EAAY5zF,EAASnvU,EAAQN,EAAYxvB,GACvE,GAAI4U,EAAO7f,OAAQ,CACjB,IAAI07B,EAAQ7b,EAAO,GACnB,OAAO,UAAQ6b,EAAMrxB,GAtBzB,SAAsBwV,EAAQi+a,EAAY5zF,EAASnvU,EAAQN,EAAYxvB,GACrE,IAAI8vd,EAAY,GACZC,EAAe,IACnB,UAAKn7c,GAAQ,SAAU1V,GACrB,IAAI4H,EAAS,IAAY5H,GACzB4wd,EAAUr7d,KAAKqS,EAAO,IACtBipd,EAAat7d,KAAKqS,EAAO,GAC3B,IAEA,IAAIkpd,EAAUH,IAAcC,EAAWj9B,EAAY/ia,EAAQN,EAAYxvB,GACnEiwd,EAAaJ,IAAcE,EAAcl9B,EAAY/ia,EAAQN,EAAYxvB,GAC7E,OAAIi/V,EACK+wH,EAEFA,EAAQvod,OAAOwod,EACxB,CAO8BC,CAAat7c,EAAQi+a,EAAY5zF,EAASnvU,EAAQN,EAAYxvB,GAAS6vd,IAAcj7c,EAAQi+a,EAAY/ia,EAAQN,EAAYxvB,EACzJ,CACA,MAAO,EACT,CACuB8gd,IAAqB,OAAQ,CAClDjC,iBAAkB,UAIpB,UAAK,CAAC,OAAQ,MAAO,OAAQ,WAAW,SAAUr5c,GAChDy7c,IAAc,OAAQz7c,EAAW,CAC/BxJ,KAAM,SAAcnG,EAAKqH,GACvB,IACIsyB,EADAM,EAAuB,WAAdtqB,EAEb,GAAIsqB,EAAQ,CACV,IAAIz6B,EAAKnB,KAAKi+Q,WACZv3P,EAAQvlB,EAAGulB,MACXmI,EAAM1tB,EAAG0tB,IACXyM,EAAa,CAAC,CAAC5U,EAAMzb,EAAG4jB,EAAI3jB,GAAI,CAAC2jB,EAAI5jB,EAAGyb,EAAMxb,GAChD,CACA,IAAI5E,EAjFV,SAAuB3E,EAAKi6B,EAAQN,GAQlC,IAPA,IAAIyvU,EAAUppW,EAAIopW,QAChB4vH,EAAeh5d,EAAIg5d,aACnBh8B,EAAah9b,EAAIg9b,WACjBi8B,EAAkBj5d,EAAIi5d,gBACpBqB,EAAa,IAASt6d,GAAK,GAAM,EAAO,aACxC+e,EAASg6c,IAAc/4d,EAAI+e,OAAQi6c,EAAcC,GACjD/zd,EAAO,GACF3F,EAAI,EAAGs5B,EAAM9Z,EAAO7f,OAAQK,EAAIs5B,EAAKt5B,IAAK,CACjD,IAAIg7d,EAAiBx7c,EAAOxf,GAC5B2F,EAAOA,EAAK0M,OAAO,IAAQ2od,EAAgBv9B,EAAY5zF,EAASnvU,EAAQN,EAAY2gc,GACtF,CAEA,OADAA,EAAWp1d,KAAOA,EACXo1d,CACT,CAmEkBlkD,CAAcp2a,EAAKi6B,EAAQN,GAOvC,OANYtyB,EAAUqI,SAAS,CAC7B1I,KAAM,OACNrC,MAAOA,EACPrE,KAAM,OACNuS,SAAUonB,GAGd,EACAwwb,UAAW,SAAmB9jC,GAC5B,OAAOozC,IAAcpzC,EAAWh3a,EAClC,GAEJ,IACA,IC3DW6qd,IAAO,CAChBzC,eAAgBA,IAChBphd,UAAW,IACXW,OAAQ,IACRirC,KbDK,SAAcv0C,EAAS/J,GAC5B,IAAIkJ,EAAOa,EAAQM,UACfhF,GAAK6D,EAAKoB,KAAOpB,EAAKqB,MAAQ,EAC9BjF,GAAK4D,EAAKsB,KAAOtB,EAAKuB,MAAQ,EAClCV,EAAQsG,cAAc,CAAChL,EAAGC,EAAG,IAC7B,IAAIiG,EAAS,IAAUxB,EAAQkG,YAAa,CAAC,CAAC,KAAM5K,GAAIC,GAAI,CAAC,IAAKtF,EAAOA,GAAQ,CAAC,IAAKqF,EAAGC,KAC1FyE,EAAQmG,UAAU3E,EACpB,EaLE2C,UAAW,IACXmlB,SAAUA,IACV89Z,cAAeA,IACfJ,iBAAkBA,IAClBuJ,oBAAqBA,IACrBsX,gBAAiBA,IACjB2hB,gBAAiBA,IAEjBiD,QAAS,IACT1B,cAAeA,KCxDb,IACG,OADH,IAGE,UAHF,IAME,UANF,IAQC,UAED,IACG,UADH,IAIE,UAJF,IAKE,UALF,IAME,UANF,IAOE,UAGF,IAAiB,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACrH,IAAiB,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAEnO,IAAkB,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAsbpG2B,IArbuB,SAA8B16d,QAClD,IAARA,IACFA,EAAM,CAAC,GAET,IAAIR,EAAKQ,EAAIwqc,qBACXA,OAA8B,IAAPhrc,EAAgB,IAAiBA,EACxD+V,EAAKvV,EAAI0qc,qBACTA,OAA8B,IAAPn1b,EAAgB,IAAiBA,EACtDC,EAAKxV,EAAI+pc,WAETthY,EAAQ,CAEVkE,gBAAiB,UAEjBo9X,gBALoB,IAAPv0b,EAAgBg1b,EAAqB,GAAKh1b,EAOvDw0b,SAAU,yBAEVQ,qBAAsBA,EAEtBE,qBAAsBA,EAEtBR,mBAAoB,UAEpBE,qBAAsB,UAEtB0H,sBAAuB,UAEvBlH,gBAAiB,IAEjB94a,WAAY,+JAGZo2a,oBAAqB,IAErBD,eAAgB,EAEhB8J,aAAc,KAEdtK,uBAAwB,IAExBC,sBAAuB,GAEvBC,wBAAyB,GAEzBqK,wBAAyB,SAEzBxK,iBAAkB,GAElBI,6BAA8B,IAE9BY,wBAAyB,IAEzBC,mBAAoB,EAEpBF,mBAAoB,EAEpB0J,2BAA4B,IAE5BC,sBAAuB,EAEvBC,sBAAuB,EAEvBrK,mBAAoB,IAEpBC,kBAAmB,GAEnBC,oBAAqB,GAErBoK,oBAAqB,SAErBvK,gBAAiB,EAEjBM,oBAAqB,IAErBC,eAAgB,EAEhBE,iBAAkB,KAGlB+J,yBAA0B,IAE1BC,wBAAyB,GAEzBC,0BAA2B,GAE3BC,0BAA2B,SAE3B1J,kBAAmB,IAAe,GAElCF,oBAAqB,EAErB6J,iBAAkB,EAElB5J,uBAAwB,EAExB6J,uBAAwB,EAExBC,qBAAsB,EAEtB5J,wBAAyB,IAEzBC,uBAAwB,GAExBC,yBAA0B,GAE1BC,yBAA0B,SAE1BS,kBAAmB,GAEnBC,uBAAwB,GAExB+wB,cAAe,GAEf9wB,cAAe,CAAC,EAAG,EAAG,EAAG,GAEzBoC,wBAAyB,CAAC,EAAG,EAAG,EAAG,GAEnCD,sBAAuB,CAAC,EAAG,EAAG,EAAG,GAGjC5C,8BAA+B,GAE/BC,2CAA4C,IAE5CC,6CAA8C,IAE9CC,mCAAoC,IAEpCC,qCAAsC,EAEtCC,iCAAkC,IAElCC,gCAAiC,GAEjC0C,oBAAqB,IAErBE,iBAAkB,EAElBD,sBAAuB,KAEvBF,gBAAiB,IAEjBD,iBAAkB,GAElBK,yBAA0B,IAE1BC,wBAAyB,GAEzBC,0BAA2B,GAE3BmG,0BAA2B,SAE3BjG,uBAAwB,IAExBD,mBAAoB,GAEpBmG,oBAAqB,GAErBC,oBAAqB,EAErBlG,yBAA0B,IAG1BgB,yBAA0B,IAE1BC,oBAAqB,EAErBC,0BAA2B,IAE3BE,qBAAsB,EAEtBD,mBAAoB,KAEpBE,wBAAyB,IAEzBG,uBAAwB,GAExB2E,yBAA0B,GAE1BC,yBAA0B,SAE1B9E,0BAA2B,KAE3BC,qBAAsB,EAEtBI,0BAA2B,IAE3BC,4BAA6B,IAE7BH,uBAAwB,EAExBC,4BAA6B,KAE7BI,+BAAgC,GAGhCxB,6BAA8B,IAE9BC,wBAAyB,EAEzB8F,0BAA2B,KAE3B7F,0BAA2B,UAC3BC,4BAA6B,IAE7BC,uBAAwB,6BAExBC,6BAA8B,EAE9BC,qBAAsB,IAEtBC,oBAAqB,GAErBC,sBAAuB,GAEvBwF,sBAAuB,OAGvB/C,eAAgB,IAChBI,mBAAoB,UACpBE,oBAAqB,UAErBzlH,cAAe,GAEfqB,gBAAiB,GAEjBnB,gBAAiB,SAEjBklH,iBAAkB,KAElBC,YAAa,EAEbM,oBAAqB,IAErBC,mBAAoB,GAEpBuC,qBAAsB,GAEtBC,qBAAsB,SAEtBvC,sBAAuB,KAEvBC,iBAAkB,EAElBE,uBAAwB,IACxB4pB,2BAA4B,UAC5BC,4BAA6B,UAE7B5pB,sBAAuB,GAEvBoC,wBAAyB,GAEzBC,wBAAyB,SAEzBpC,yBAA0B,IAE1BC,oBAAqB,EAErBI,gBAAiB,EAEjBgC,qBAAsB,IAGtBC,kBAAmB,GAEnB5E,2BAA4B,UAE5BC,6BAA8B,IAE9BC,2BAA4B,UAE5BC,6BAA8B,IAG9BE,qBAAsB,GAEtBD,oBAAqB,GAErBE,wBAAyB,UAEzBC,0BAA2B,EAE3BI,iCAAkC,OAElCH,0BAA2B,UAE3BC,qBAAsB,EAEtBC,2BAA4B,EAG5BE,qBAAsB,OAEtBC,uBAAwB,IAExBC,oBAAqB,GAErBC,sBAAuB,GAEvBC,sBAAuB,SAEvBC,uBAAwB,KAExBC,kBAAmB,EAGnBE,wBAAyB,yBAEzBC,wBAAyB,mBAEzBC,iCAAkC,mBAGlC3M,eAAgB,IAAe,GAE/BI,iBAAkB,IAElBH,UAAW,EAEXE,YAAa,EAEbD,iBAAkB,IAElBgQ,mBAAoB,EAEpB7P,uBAAwB,IAExBG,oBAAqB,EAErBD,yBAA0B,IAE1BE,yBAA0B,GAE1BC,2BAA4B,GAE5BM,gBAAiB,EAEjBH,kBAAmB,EAEnBC,uBAAwB,IAAe,GAEvCC,yBAA0B,IAC1BH,qBAAsB,IAEtBuP,wBAAyB,EAEzBlP,6BAA8B,IAE9BC,+BAAgC,EAEhCC,0BAA2B,EAE3BC,+BAAgC,IAEhCC,iCAAkC,EAElCC,iCAAkC,GAElCoC,WAAY,EAEZD,gBAAiB,IAAe,GAEhCE,kBAAmB,EAEnBE,iBAAkB,EAElBC,mBAAoB,EAEpBC,0BAA2B,GAE3BxC,cAAe,IAAe,GAE9BC,gBAAiB,IAEjB4O,oBAAqB,IAAe,GACpC3O,sBAAuB,GAEvB4O,sBAAuB,IAAe,GACtC3O,wBAAyB,GAEzBC,wBAAyB,GAEzBE,sBAAuB,IAAe,GAEtCC,iBAAkB,EAElBC,wBAAyB,EAEzBC,uBAAwB,EACxBsO,4BAA6B,IAE7BrO,yBAA0B,EAC1BsO,8BAA+B,IAE/BrO,gCAAiC,GAEjCC,kBAAmB,IAAe,GAElCC,oBAAqB,IAErBE,qBAAsB,EAEtBD,0BAA2B,IAC3BmO,4BAA6B,EAE7BhO,uBAAwB,EAExBD,4BAA6B,IAE7BkO,8BAA+B,EAE/B/N,8BAA+B,GAE/BD,4BAA6B,GAE7BK,qBAAsB,EAEtBD,0BAA2B,IAAe,GAE1CE,4BAA6B,EAC7BH,wBAAyB,IAEzBK,2BAA4B,EAE5BD,gCAAiC,IAEjCI,6BAA8B,EAE9BD,kCAAmC,IAEnCE,oCAAqC,EAErCG,oCAAqC,IAEvC,OAAO,WAAS,UAAS,CAAC,EAAGt+X,GAAQzoE,EACvC,CACsB86d,GCpcf,SAAS,IAASr6c,EAAIC,EAAIC,EAAIC,GACnC,IAAI3V,EAAKwV,EAAKE,EACVzV,EAAKwV,EAAKE,EACd,OAAOtI,KAAK2C,KAAKhQ,EAAKA,EAAKC,EAAKA,EAClC,CAUO,SAAS6vd,IAAMxsd,EAAME,EAAMrC,EAAOC,EAAQ/C,EAAGC,GAClD,OAAOD,GAAKiF,GAAQjF,GAAKiF,EAAOnC,GAAS7C,GAAKkF,GAAQlF,GAAKkF,EAAOpC,CACpE,CACO,SAAS,IAAciyB,EAAMC,GAClC,QAASA,EAAKhwB,KAAO+vB,EAAK9vB,MAAQ+vB,EAAK/vB,KAAO8vB,EAAK/vB,MAAQgwB,EAAK9vB,KAAO6vB,EAAK5vB,MAAQ6vB,EAAK7vB,KAAO4vB,EAAK7vB,KACvG,CAkBO,SAAS2sB,IAAYC,EAAQC,GAClC,OAAOD,EAAO,KAAOC,EAAO,IAAMD,EAAO,KAAOC,EAAO,EACzD,CChDA,IAAI,IAAU,kCACV,IAAU,gEACV0/b,IAAU,kCACV,IAAiB,8BACrB,SAASC,IAAQ54Y,EAAOW,GACtB,IAAIluE,EAAMutE,EAAM/oD,MAAM,MACtB,UAAKxkB,GAAK,SAAUgB,GAClB,IAAI2nZ,EAAU3nZ,EAAK6R,MAAM,KACzBq7D,EAAS03K,aAAa+iK,EAAQ,GAAIA,EAAQ,GAC5C,GACF,CA6IO,SAASy9D,IAAW1pc,EAASxjB,EAASokC,GAC3C,IAAIjlC,EAAOa,EAAQM,UACnB,GAAIiS,MAAMpT,EAAK7D,IAAMiX,MAAMpT,EAAK5D,IAAMgX,MAAMpT,EAAKf,QAAUmU,MAAMpT,EAAKd,QACpE,OAAO+lC,EAET,IAAI,UAASA,GAAQ,CACnB,GAAiB,MAAbA,EAAM,IAA2B,MAAbA,EAAM,GAAY,CACxC,GAAiB,MAAbA,EAAM,GAER,OA9ID,SAA2B5gB,EAASxjB,EAASmtd,GAClD,IAIIp2c,EACAmI,EALApY,EAAM,IAAQw9B,KAAK6ob,GACnBp1c,EAAQ2D,WAAW5U,EAAI,IAAM,KAAOwD,KAAK+B,GAAK,KAC9CgoE,EAAQvtE,EAAI,GACZ8K,EAAM5R,EAAQM,UAGdyX,GAAS,GAAKA,EAAQ,GAAQzN,KAAK+B,IACrC0K,EAAQ,CACNzb,EAAGsW,EAAIrR,KACPhF,EAAGqW,EAAInR,MAETye,EAAM,CACJ5jB,EAAGsW,EAAIpR,KACPjF,EAAGqW,EAAIlR,OAEA,GAAQ4J,KAAK+B,IAAM0L,GAASA,EAAQzN,KAAK+B,IAClD0K,EAAQ,CACNzb,EAAGsW,EAAIpR,KACPjF,EAAGqW,EAAInR,MAETye,EAAM,CACJ5jB,EAAGsW,EAAIrR,KACPhF,EAAGqW,EAAIlR,OAEA4J,KAAK+B,IAAM0L,GAASA,EAAQ,IAAQzN,KAAK+B,IAClD0K,EAAQ,CACNzb,EAAGsW,EAAIpR,KACPjF,EAAGqW,EAAIlR,MAETwe,EAAM,CACJ5jB,EAAGsW,EAAIrR,KACPhF,EAAGqW,EAAInR,QAGTsW,EAAQ,CACNzb,EAAGsW,EAAIrR,KACPhF,EAAGqW,EAAIlR,MAETwe,EAAM,CACJ5jB,EAAGsW,EAAIpR,KACPjF,EAAGqW,EAAInR,OAGX,IAAI2sd,EAAW9id,KAAK4O,IAAInB,GACpBs1c,EAAYD,EAAWA,EACvB9xd,GAAK4jB,EAAI5jB,EAAIyb,EAAMzb,EAAI8xd,GAAYluc,EAAI3jB,EAAIwb,EAAMxb,KAAO8xd,EAAY,GAAKt2c,EAAMzb,EAC/EC,EAAI6xd,GAAYluc,EAAI5jB,EAAIyb,EAAMzb,EAAI8xd,GAAYluc,EAAI3jB,EAAIwb,EAAMxb,KAAO8xd,EAAY,GAAKt2c,EAAMxb,EAC1Fy5E,EAAWxxD,EAAQupO,qBAAqBh2O,EAAMzb,EAAGyb,EAAMxb,EAAGD,EAAGC,GAEjE,OADA0xd,IAAQ54Y,EAAOW,GACRA,CACT,CA2Fes4Y,CAAkB9pc,EAASxjB,EAASokC,GAE7C,GAAiB,MAAbA,EAAM,GAER,OAvFD,SAA6B5gB,EAASxjB,EAASmtd,GACpD,IAAIrmd,EAAM,IAAQw9B,KAAK6ob,GACnBj6a,EAAKx3B,WAAW5U,EAAI,IACpByzF,EAAK7+E,WAAW5U,EAAI,IACpB01P,EAAK9gP,WAAW5U,EAAI,IACpButE,EAAQvtE,EAAI,GAEhB,GAAW,IAAP01P,EAAU,CACZ,IAAIn1N,EAASgtC,EAAM/oD,MAAM,KACzB,OAAO+b,EAAOA,EAAOn2C,OAAS,GAAGyoB,MAAM,KAAK,EAC9C,CACA,IAAI/H,EAAM5R,EAAQM,UACdlC,EAAQwT,EAAIpR,KAAOoR,EAAIrR,KACvBlC,EAASuT,EAAIlR,KAAOkR,EAAInR,KACxB8O,EAAIjF,KAAK2C,KAAK7O,EAAQA,EAAQC,EAASA,GAAU,EACjD22E,EAAWxxD,EAAQmpO,qBAAqB/6O,EAAIrR,KAAOnC,EAAQ80C,EAAIthC,EAAInR,KAAOpC,EAASk8F,EAAI,EAAG3oF,EAAIrR,KAAOnC,EAAQ,EAAGwT,EAAInR,KAAOpC,EAAS,EAAGm+P,EAAKjtP,GAEhJ,OADA09c,IAAQ54Y,EAAOW,GACRA,CACT,CAqEeu4Y,CAAoB/pc,EAASxjB,EAASokC,GAE/C,GAAiB,MAAbA,EAAM,GAER,OAlED,SAAsB5gB,EAASxjB,EAASwtd,GAE7C,GAAIxtd,EAAQ3N,IAAI,kBAAoB2N,EAAQ3N,IAAI,mBAAqBm7d,EACnE,OAAOxtd,EAAQ3N,IAAI,WAErB,IAAIwmE,EACAsY,EACArqE,EAAMkmd,IAAQ1ob,KAAKkpb,GACnBj3d,EAASuQ,EAAI,GACb4a,EAAS5a,EAAI,GAEjB,SAAS20C,IAEPod,EAAUr1C,EAAQypO,cAAc97K,EAAK56E,GACrCyJ,EAAQzN,IAAI,UAAWsmE,GACvB74D,EAAQzN,IAAI,gBAAiBi7d,EAC/B,CACA,OAAQj3d,GACN,IAAK,IACHA,EAAS,SACT,MACF,IAAK,IACHA,EAAS,WACT,MACF,IAAK,IACHA,EAAS,WACT,MAIF,QACEA,EAAS,YAgBb,OAdA46E,EAAM,IAAIpY,MAELr3C,EAAO4J,MAAM,aAEhB6lD,EAAIQ,YAAc,aAEpBR,EAAI38C,IAAM9S,EACNyvD,EAAIxpB,SACNlM,KAEA01B,EAAI11B,OAASA,EAEb01B,EAAI38C,IAAM28C,EAAI38C,KAETqkC,CACT,CAkBe40Z,CAAajqc,EAASxjB,EAASokC,EAE1C,CACA,OAAOA,CACT,CACA,OAAIA,aAAiBspb,cACZtpb,OADT,CAGF,CC/KA,SAASnX,IAAK3qB,GACZ,OAAOgI,KAAK2C,KAAK3K,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAC1C,CAEA,SAAS4qB,IAAOrX,EAAGvT,GAEjB,OAAO2qB,IAAKpX,GAAKoX,IAAK3qB,IAAMuT,EAAE,GAAKvT,EAAE,GAAKuT,EAAE,GAAKvT,EAAE,KAAO2qB,IAAKpX,GAAKoX,IAAK3qB,IAAM,CACjF,CAEA,SAAS6qB,IAAOtX,EAAGvT,GACjB,OAAQuT,EAAE,GAAKvT,EAAE,GAAKuT,EAAE,GAAKvT,EAAE,IAAM,EAAI,GAAKgI,KAAKgG,KAAK4c,IAAOrX,EAAGvT,GACpE,CAEe,SAASirB,IAAaC,EAAY7b,GAC/C,IAAIM,EAAKN,EAAO,GACZO,EAAKP,EAAO,GACZQ,GAAY,WAAI,UAASR,EAAO,IAAe,EAAVrH,KAAK+B,IAC1CohB,EAAU9b,EAAO,GACjB+b,EAAY/b,EAAO,GAEnBc,EAAK+a,EAAW,GAChB9a,EAAK8a,EAAW,GAEhB7a,EAAKhB,EAAO,GACZiB,EAAKjB,EAAO,GACZgc,EAAKrjB,KAAKkC,IAAI2F,IAAcM,EAAKE,GAAM,EAAMrI,KAAKoC,IAAIyF,IAAcO,EAAKE,GAAM,EAC/Egb,GAAM,EAAItjB,KAAKoC,IAAIyF,IAAcM,EAAKE,GAAM,EAAMrI,KAAKkC,IAAI2F,IAAcO,EAAKE,GAAM,EACpFib,EAASF,EAAKA,GAAM1b,EAAKA,GAAM2b,EAAKA,GAAM1b,EAAKA,GAC/C2b,EAAS,IACX5b,GAAM3H,KAAK2C,KAAK4gB,GAChB3b,GAAM5H,KAAK2C,KAAK4gB,IAElB,IAAIhL,EAAO5Q,EAAKA,GAAM2b,EAAKA,GAAM1b,EAAKA,GAAMyb,EAAKA,GAC7Cj6B,EAAImvB,EAAOvY,KAAK2C,MAAMgF,EAAKA,GAAMC,EAAKA,GAAM2Q,GAAQA,GAAQ,EAC5D4K,IAAYC,IACdh6B,IAAM,GAEJ6e,MAAM7e,KACRA,EAAI,GAGN,IAAIo6B,EAAM5b,EAAKxe,EAAIue,EAAK2b,EAAK1b,EAAK,EAC9B6b,EAAM9b,EAAKve,GAAKwe,EAAKyb,EAAK1b,EAAK,EAE/BF,GAAMU,EAAKE,GAAM,EAAMrI,KAAKkC,IAAI2F,GAAa2b,EAAMxjB,KAAKoC,IAAIyF,GAAa4b,EACzE/b,GAAMU,EAAKE,GAAM,EAAMtI,KAAKoC,IAAIyF,GAAa2b,EAAMxjB,KAAKkC,IAAI2F,GAAa4b,EAEzElY,EAAI,EAAE8X,EAAKG,GAAO7b,GAAK2b,EAAKG,GAAO7b,GAEnC5P,EAAI,GAAG,EAAIqrB,EAAKG,GAAO7b,IAAM,EAAI2b,EAAKG,GAAO7b,GAE7C8b,EAAQb,IAAO,CAAC,EAAG,GAAItX,GAEvBoY,EAASd,IAAOtX,EAAGvT,GAavB,OAZI4qB,IAAOrX,EAAGvT,KAAO,IACnB2rB,EAAS3jB,KAAK+B,IAEZ6gB,IAAOrX,EAAGvT,IAAM,IAClB2rB,EAAS,GAEO,IAAdP,GAAmBO,EAAS,IAC9BA,GAAkB,EAAI3jB,KAAK+B,IAEX,IAAdqhB,GAAmBO,EAAS,IAC9BA,GAAkB,EAAI3jB,KAAK+B,IAEtB,CACL0F,GAAIA,EACJC,GAAIA,EAEJC,GAAImb,IAAYI,EAAY,CAAC7a,EAAIC,IAAO,EAAIX,EAC5CC,GAAIkb,IAAYI,EAAY,CAAC7a,EAAIC,IAAO,EAAIV,EAC5CE,WAAY4b,EACZ3b,SAAU2b,EAAQC,EAClB9b,UAAWA,EACXsb,QAASA,EACTC,UAAWA,EAEf,CC9EA,IAAI,IAAMpjB,KAAKoC,IACb,IAAMpC,KAAKkC,IACX,IAAQlC,KAAKqG,MACbtE,IAAK/B,KAAK+B,GACZ,SAASshd,IAAiB73d,EAAOa,EAAO8b,EAAIC,EAAIC,EAAIC,EAAIg7c,GACtD,IAAIp8c,EAAS7a,EAAM6a,OACjB1B,EAAYnZ,EAAMmZ,UAGhB0G,EAAM,IADF9D,EAAKE,EADLH,EAAKE,GAGTk7c,EAAa,IAAI,IAAK,CACxB70d,KAAM,OACNpB,OAAQ9B,EAAMzD,IAAI,UAClBy7d,cAAc,EACdn3d,MAAO,CAELO,KAAM,IAAM,GAAK,IAAImV,IAAK,GAAK,IAAM,GAAK,IAAIA,IAAK,GAAK,UAAY,GAAK,IAAIA,IAAK,GAAK,KAAO,GAAK,IAAIA,IAAK,GAE5GmF,OAAQA,EACR1B,UAAWA,KAGf+9c,EAAWlld,UAAUgK,EAAIC,GACzBi7c,EAAWpkd,cAAckJ,EAAIC,EAAI4D,GACjC1gB,EAAMvD,IAAIq7d,EAAU,kBAAoB,gBAAiBC,EAC3D,CAMA,SAASE,IAAoBj4d,EAAOa,EAAO8b,EAAIC,EAAIC,EAAIC,EAAIg7c,GACzD,IAAII,EAAar3d,EAAMq3d,WACrBC,EAAWt3d,EAAMs3d,SACjBz8c,EAAS7a,EAAM6a,OACf1B,EAAYnZ,EAAMmZ,UAChBo+c,EAAaN,EAAUI,EAAaC,EACpC73c,EAAI83c,EAAW93c,EACjB+3c,EAAYD,EAAWjib,KACvBmib,EAAcF,EAAW18c,OACzB68c,EAAiBH,EAAWp+c,UAC5Bw+c,GAAY,UAAOJ,EAAY,CAAC,IAAK,OAAQ,SAAU,cAGrD13c,EAAM,IADF9D,EAAKE,EADLH,EAAKE,GAGTyD,IACFzD,GAAU,IAAI6D,GAAOJ,EACrBxD,GAAU,IAAI4D,GAAOJ,GAEvB,IAAIy3c,EAAa,IAAI,IAAK,CACxB70d,KAAM,OACNpB,OAAQ9B,EAAMzD,IAAI,UAClBy7d,cAAc,EACdn3d,OAAO,WAAS,UAAS,CAAC,EAAG23d,GAAY,CAEvC98c,OAAQ48c,GAAe58c,EACvB1B,UAAWu+c,GAAkBv+c,EAE7Bm8B,KAAMkib,MAGVN,EAAWlld,UAAUgK,EAAIC,GACzBi7c,EAAWpkd,cAAckJ,EAAIC,EAAI4D,GACjC1gB,EAAMvD,IAAIq7d,EAAU,kBAAoB,gBAAiBC,EAC3D,CAaO,SAASU,IAAiB97c,EAAIC,EAAIC,EAAIC,EAAIwD,GAC/C,IAAII,EAAM,IAAM5D,EAAKF,EAAIC,EAAKF,GAC9B,MAAO,CACLxV,GAAI,IAAIuZ,GAAOJ,EACflZ,GAAI,IAAIsZ,GAAOJ,EAEnB,CAUO,SAASo4c,IAAc14d,EAAOa,EAAO8b,EAAIC,EAAIC,EAAIC,GACtB,iBAArBjc,EAAMq3d,WACfD,IAAoBj4d,EAAOa,EAAO8b,EAAIC,EAAIC,EAAIC,GAAI,GACzCjc,EAAMq3d,WACfL,IAAiB73d,EAAOa,EAAO8b,EAAIC,EAAIC,EAAIC,GAAI,GAE/C9c,EAAMvD,IAAI,kBAAmB,KAEjC,CAUO,SAASk8d,IAAY34d,EAAOa,EAAO8b,EAAIC,EAAIC,EAAIC,GACtB,iBAAnBjc,EAAMs3d,SACfF,IAAoBj4d,EAAOa,EAAO8b,EAAIC,EAAIC,EAAIC,GAAI,GACzCjc,EAAMs3d,SACfN,IAAiB73d,EAAOa,EAAO8b,EAAIC,EAAIC,EAAIC,GAAI,GAE/C9c,EAAMvD,IAAI,kBAAmB,KAEjC,CCpHA,IAAIm8d,IAAkB,CACpBzib,KAAM,YACNz6B,OAAQ,cACRxM,QAAS,eAEJ,SAAS2pd,IAAoBnrc,EAASxjB,GAC3C,IAAIrJ,EAAQqJ,EAAQvJ,OACpB,IAAK,IAAIM,KAAKJ,EAAO,CACnB,IAAI2L,EAAI3L,EAAMI,GAEVuR,EAASomd,IAAgB33d,GAAK23d,IAAgB33d,GAAKA,EACxC,WAAXuR,GAAuBhG,EAEzBkhB,EAAQrf,UAAU7B,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,IAC9B,aAAXgG,GAAyBkb,EAAQkqO,aAE1C,UAAQprP,IAAMkhB,EAAQkqO,YAAYprP,IAEnB,gBAAXgG,GAAuC,cAAXA,EAG9BhG,EAAI4qd,IAAW1pc,EAASxjB,EAASsC,GACb,gBAAXgG,IAEThG,GAAQkhB,EAAQ0pO,aAElB1pO,EAAQlb,GAAUhG,EAEtB,CACF,CACO,SAASssd,IAAaprc,EAAStjB,EAAUs+Z,GAC9C,IAAK,IAAIjta,EAAI,EAAGA,EAAI2O,EAAShP,OAAQK,IAAK,CACxC,IAAI4O,EAAQD,EAAS3O,GACjB4O,EAAMnO,IAAI4S,QACZzE,EAAMhI,KAAKqrB,EAASg7Y,GAEpBr+Z,EAAM0ud,UAEV,CACF,CAEO,SAASC,IAAal3d,EAAQsI,EAAUs+Z,GAC7C,IAAIr3O,EAAkBvvL,EAAOvF,IAAI,oBAEjC,UAAK80L,GAAiB,SAAUtsL,GAC9B,GAAIA,IAAOjD,EAET,IADA,IAAIuF,EAAWtC,EAAG7I,IAAIiQ,OACf9E,GAAYA,IAAavF,IAAWuF,EAASnL,IAAImnE,SACtDh8D,EAASnL,IAAImnE,SAAU,EACvBh8D,EAAWA,EAASnL,IAAIiQ,MAG9B,IACIklL,EAAgB,KAAOvvL,EACzBm3d,IAAmB7ud,EAAUs+Z,GAG7BwwD,IAAqB9ud,EAAUs+Z,EAEnC,CAEO,SAASwwD,IAAqB9ud,EAAUs+Z,GAC7C,IAAK,IAAIjta,EAAI,EAAGA,EAAI2O,EAAShP,OAAQK,IAAK,CACxC,IAAI4O,EAAQD,EAAS3O,GACrB,GAAI4O,EAAMnO,IAAI4S,QAEZ,GAAIzE,EAAMnO,IAAIi9d,WAEZ9ud,EAAMnO,IAAImnE,SAAU,EAChBh5D,EAAMF,WACR8ud,IAAmB5ud,EAAMnO,IAAIkO,SAAUs+Z,QAEpC,GAAIr+Z,EAAMnO,IAAImnE,QAEfh5D,EAAMF,WACR+ud,IAAqB7ud,EAAMnO,IAAIkO,SAAUs+Z,OAEtC,CAEL,IAAIrlW,EAAU+1Z,IAAoB/ud,EAAOq+Z,GACzCr+Z,EAAMnO,IAAImnE,QAAUA,EAChBA,GAAWh5D,EAAMF,WAEnB+ud,IAAqB7ud,EAAMnO,IAAIkO,SAAUs+Z,EAE7C,CAEJ,CACF,CAGO,SAAS2wD,IAAan+b,GAC3B,IAAK,IAAIz/B,EAAI,EAAGA,EAAIy/B,EAAS9/B,OAAQK,IAAK,CACxC,IAAIsJ,EAAKm2B,EAASz/B,GAClBsJ,EAAG7I,IAAIi9d,YAAa,EAEhBp0d,EAAGoF,YAAcpF,EAAG3I,WACtBi9d,IAAat0d,EAAG7I,IAAIkO,SAExB,CACF,CAEA,SAAS6ud,IAAmB7ud,EAAUs+Z,GACpC,IAAK,IAAIjta,EAAI,EAAGA,EAAI2O,EAAShP,OAAQK,IAAK,CACxC,IAAI4O,EAAQD,EAAS3O,GAChB4O,EAAMnO,IAAI4S,UAUfzE,EAAMnO,IAAImnE,SAAU,EAEhBh5D,EAAMF,WACR8ud,IAAmB5ud,EAAM9N,IAAI,YAAamsa,GAE9C,CACF,CACA,SAAS0wD,IAAoBp5d,EAAO0oa,GAClC,IAAIr/Z,EAAOrJ,EAAM9D,IAAIo9d,gBAErB,OADct5d,EAAM9D,IAAIq9d,UAAYlwd,GAAQ,IAAcA,EAAMq/Z,EAElE,CAEO,SAAS,IAAS1oa,EAAO0tB,EAAS7sB,EAAO24d,GAC9C,IAAIp4d,EAAOP,EAAMO,KACf82d,EAAar3d,EAAMq3d,WACnBC,EAAWt3d,EAAMs3d,SACnB,GAAK/2d,EAAL,CAGA,IAAI8Y,EAAe,CAAC,EAAG,GACnBqe,EAAiB,CAAC,EAAG,GACrB7J,EAAW,CACbvnB,GAAI,EACJC,GAAI,GAENsmB,EAAQuhO,YACR,IAAK,IAAIxzP,EAAI,EAAGA,EAAI2F,EAAKhG,OAAQK,IAAK,CACpC,IAAIogB,EAASza,EAAK3F,GACdsgB,EAAUF,EAAO,GACrB,GAAU,IAANpgB,GAAWy8d,GAAcA,EAAW53c,EAEtCoO,EAAW,KADP+qc,EAAUz5d,EAAM05d,mBAC0B,GAAG,GAAID,EAAQ,GAAG,GAAIA,EAAQ,GAAG,GAAIA,EAAQ,GAAG,GAAIvB,EAAW53c,QACxG,GAAI7kB,IAAM2F,EAAKhG,OAAS,GAAwB,MAAnBgG,EAAK3F,EAAI,GAAG,IAAc08d,GAAYA,EAAS73c,EAAG,CAGpF,GAAoB,MADLlf,EAAK3F,EAAI,GACX,GAEXizB,EAAW,KADP+qc,EAAUz5d,EAAM25d,iBAC0B,GAAG,GAAIF,EAAQ,GAAG,GAAIA,EAAQ,GAAG,GAAIA,EAAQ,GAAG,GAAItB,EAAS73c,EAE/G,MAAO,GAAI7kB,IAAM2F,EAAKhG,OAAS,GAAK+8d,GAAYA,EAAS73c,EAAG,CAExD,IAAIm5c,EADN,GAAgB,MAAZr4d,EAAK,GAEPstB,EAAW,KADP+qc,EAAUz5d,EAAM25d,iBAC0B,GAAG,GAAIF,EAAQ,GAAG,GAAIA,EAAQ,GAAG,GAAIA,EAAQ,GAAG,GAAItB,EAAS73c,EAE/G,CACA,IAAInZ,EAAKunB,EAASvnB,GAChBC,EAAKsnB,EAAStnB,GAEhB,OAAQ2U,GACN,IAAK,IACH2R,EAAQta,OAAOyI,EAAO,GAAK1U,EAAI0U,EAAO,GAAKzU,GAC3CmxB,EAAiB,CAAC1c,EAAO,GAAIA,EAAO,IACpC,MACF,IAAK,IACH6R,EAAQilN,OAAO92N,EAAO,GAAK1U,EAAI0U,EAAO,GAAKzU,GAC3C,MACF,IAAK,IACHsmB,EAAQwhO,iBAAiBrzO,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAK1U,EAAI0U,EAAO,GAAKzU,GAC3E,MACF,IAAK,IACHsmB,EAAQ8jN,cAAc31N,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAK1U,EAAI0U,EAAO,GAAKzU,GAC9F,MACF,IAAK,IAED,IAAI4U,OAAY,EAEZw9c,GACFx9c,EAAYw9c,EAAe/9d,MAEzBugB,EAAYyb,IAAavd,EAAc2B,GACvC29c,EAAe/9d,GAAKugB,GAGtBA,EAAYyb,IAAavd,EAAc2B,GAEzC,IAAII,EAAKD,EAAUC,GACjBC,EAAKF,EAAUE,GACfC,EAAKH,EAAUG,GACfC,EAAKJ,EAAUI,GACfE,EAAaN,EAAUM,WACvBC,EAAWP,EAAUO,SACrBF,EAAYL,EAAUK,UACtBub,EAAY5b,EAAU4b,UAExB,GAAIlK,EAAQ6F,QACV7F,EAAQ6F,QAAQtX,EAAIC,EAAIC,EAAIC,EAAIC,EAAWC,EAAYC,EAAU,EAAIqb,OAChE,CACL,IAAIne,EAAI0C,EAAKC,EAAKD,EAAKC,EACnB8wE,EAAS/wE,EAAKC,EAAK,EAAID,EAAKC,EAC5B+wE,EAAShxE,EAAKC,EAAKA,EAAKD,EAAK,EACjCuR,EAAQ7a,UAAUoJ,EAAIC,GACtBwR,EAAQla,OAAO6I,GACfqR,EAAQra,MAAM65E,EAAQC,GACtBz/D,EAAQusL,IAAI,EAAG,EAAGxgM,EAAG6C,EAAYC,EAAU,EAAIqb,GAC/ClK,EAAQra,MAAM,EAAI65E,EAAQ,EAAIC,GAC9Bz/D,EAAQla,QAAQ6I,GAChBqR,EAAQ7a,WAAWoJ,GAAKC,EAC1B,CACA,MAEJ,IAAK,IACHwR,EAAQklN,YAMZ,GAAgB,MAAZ72N,EACF7B,EAAeqe,MACV,CACL,IAAIxD,EAAMlZ,EAAOzgB,OACjB8e,EAAe,CAAC2B,EAAOkZ,EAAM,GAAIlZ,EAAOkZ,EAAM,GAChD,CACF,CA/FA,CAgGF,CAEO,SAAS6kc,IAAe1vd,EAASiF,GACtC,IAAIrN,EAASoI,EAAQ3N,IAAI,UAErBuF,IACiB,WAAfqN,IAIFjF,EAAQ2vd,iBAAmB3vd,EAAQ3N,IAAI,oBAGpC2N,EAAQ3N,IAAI,gBAEf2N,EAAQzN,IAAI,cAAc,GAOpByN,EAAQhO,IAAIiQ,QAAUjC,EAAQhO,IAAIiQ,OAAO5P,IAAI,gBACjDuF,EAAO83d,eAAe1vd,EAASiF,EAAYrN,GACvCA,EAAOvF,IAAI,aACbuF,EAAOO,SAKjB,CACO,SAASy3d,IAAiB5vd,GAC/B,IAAIw+Z,EJ5OsBqxD,EAASC,EI6OnC,GAAK9vd,EAAQ9N,UAeXssa,EAASx+Z,EAA0B,qBAfb,CACtB,IAAI+vd,EAAW/vd,EAAQ3N,IAAI,mBACvB29d,EAAaD,MAAeA,EAAS3xd,QAAS2xd,EAAS1xd,QACvDc,EAAOa,EAAQiB,gBACfgvd,EAAY9wd,MAAWA,EAAKf,QAASe,EAAKd,QAE1C2xd,GAAcC,GJnPeH,EIoPA3wd,EAA/Bq/Z,GJpPsBqxD,EIoPDE,IJnPRD,EAGV,CACLvvd,KAAM+J,KAAKC,IAAIsld,EAAQtvd,KAAMuvd,EAAQvvd,MACrCE,KAAM6J,KAAKC,IAAIsld,EAAQpvd,KAAMqvd,EAAQrvd,MACrCD,KAAM8J,KAAKE,IAAIqld,EAAQrvd,KAAMsvd,EAAQtvd,MACrCE,KAAM4J,KAAKE,IAAIqld,EAAQnvd,KAAMovd,EAAQpvd,OAN9Bmvd,GAAWC,GImPPE,EACTxxD,EAASuxD,EACAE,IACTzxD,EAASr/Z,EAEb,CAIA,OAAOq/Z,CACT,CCxRA,IAAI,IAAqB,SAAUzsa,GAEjC,SAAS+9E,IACP,OAAkB,OAAX/9E,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAkGA,OArGA,UAAUy/E,EAAO/9E,GAQjB+9E,EAAMv/E,UAAUgO,eAAiB,SAAU0G,GACzCyqd,IAAer/d,KAAM4U,EACvB,EACA6qE,EAAMv/E,UAAUqR,aAAe,WAC7B,OAAO,CACT,EACAkuE,EAAMv/E,UAAU4R,aAAe,WAC7B,OAAO2tE,CACT,EAEAA,EAAMv/E,UAAU2/d,WAAa,SAAU1sc,EAASle,GAC1CA,IACFke,EAAQtQ,OAERy7c,IAAoBnrc,EAASle,GAE7BA,EAAK6qd,WAAW3sc,GAChBA,EAAQrQ,UAERqQ,EAAQle,OACRA,EAAK8qd,aAET,EAGAtgZ,EAAMv/E,UAAU6+d,gBAAkB,WAChC,IAAIlvd,EAAW7P,KAAK2B,IAAIkO,SACpB8Q,EAAO,GACPC,EAAO,IACX,UAAK/Q,GAAU,SAAUC,GACvB,IAAIhB,EAAOgB,EAAMnO,IAAIo9d,gBAGjBjwd,GAAQgB,EAAMnO,IAAIq9d,WACpBr+c,EAAKpgB,KAAKuO,EAAKoB,KAAMpB,EAAKqB,MAC1ByQ,EAAKrgB,KAAKuO,EAAKsB,KAAMtB,EAAKuB,MAE9B,IACA,IAAIvB,EAAO,KACX,GAAI6R,EAAK9f,OAAQ,CACf,IAAIqP,GAAO,UAAIyQ,GACXxQ,GAAO,UAAIwQ,GACXvQ,GAAO,UAAIwQ,GACXvQ,GAAO,UAAIuQ,GACf9R,EAAO,CACLoB,KAAMA,EACNE,KAAMA,EACNnF,EAAGiF,EACHhF,EAAGkF,EACHD,KAAMA,EACNE,KAAMA,EACNtC,MAAOoC,EAAOD,EACdlC,OAAQqC,EAAOD,GAEjB,IAAI7I,EAASvH,KAAK2B,IAAI4F,OACtB,GAAIA,EAAQ,CACV,IAAIy4d,EAAYz4d,EAAO04d,eAGvBjge,KAAKkC,IAAI,WAAY,IAAc4M,EAAMkxd,GAC3C,CACF,MACEhge,KAAKkC,IAAI,YAAY,GAEvBlC,KAAKkC,IAAI,kBAAmB4M,EAC9B,EACA2wE,EAAMv/E,UAAU4H,KAAO,SAAUqrB,EAASg7Y,GACxC,IAAIt+Z,EAAW7P,KAAK2B,IAAIkO,SACpBqwd,GAAY/xD,GAASnua,KAAK2B,IAAImnE,QAI9Bj5D,EAAShP,QAAUq/d,IACrB/sc,EAAQtQ,OAGRy7c,IAAoBnrc,EAASnzB,MAC7BA,KAAK6/d,WAAW1sc,EAASnzB,KAAKkV,WAC9Bqpd,IAAaprc,EAAStjB,EAAUs+Z,GAChCh7Y,EAAQrQ,UACR9iB,KAAK++d,mBAIP/+d,KAAK2B,IAAImnE,QAAU,KAEnB9oE,KAAKkC,IAAI,cAAc,EACzB,EAEAu9E,EAAMv/E,UAAUs+d,SAAW,WACzBx+d,KAAKkC,IAAI,kBAAmB,MAC5BlC,KAAKkC,IAAI,cAAc,EACzB,EACOu9E,CACT,CAvGyB,CAuGvB,IAAApmE,eACF,QCvGI,IAAyB,SAAU3X,GAErC,SAAS2qd,IACP,OAAkB,OAAX3qd,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CA0NA,OA7NA,UAAUqsd,EAAW3qd,GAIrB2qd,EAAUnsd,UAAUkU,gBAAkB,WACpC,IAAI9N,EAAQ5E,EAAOxB,UAAUkU,gBAAgBxS,KAAK5B,MAElD,OAAO,WAAS,UAAS,CAAC,EAAGsG,GAAQ,CACnCmZ,UAAW,EACXqpb,gBAAiB,EACjBvvM,cAAe,EACf11K,YAAa,GAEjB,EACAwoY,EAAUnsd,UAAUqR,aAAe,WACjC,OAAO,CACT,EACA86c,EAAUnsd,UAAU4R,aAAe,WACjC,OAAO,GACT,EAKAu6c,EAAUnsd,UAAUgO,eAAiB,SAAU0G,GAC7Cyqd,IAAer/d,KAAM4U,EACvB,EACAy3c,EAAUnsd,UAAUwZ,cAAgB,WAClC,IAAI/Q,EAAO3I,KAAKgC,IAAI,QAChByd,EAAYzf,KAAKmge,kBAGjB5+c,GADa,MAAA6+c,eAAcz3d,EACrB03d,CAAWrge,MACjBsge,EAAgB7gd,EAAY,EAC5BvP,EAAOqR,EAAItW,EAAIq1d,EACflwd,EAAOmR,EAAIrW,EAAIo1d,EACfnwd,EAAOoR,EAAItW,EAAIsW,EAAIxT,MAAQuyd,EAC3Bjwd,EAAOkR,EAAIrW,EAAIqW,EAAIvT,OAASsyd,EAChC,MAAO,CACLr1d,EAAGiF,EACHA,KAAMA,EACNhF,EAAGkF,EACHA,KAAMA,EACNrC,MAAOwT,EAAIxT,MAAQ0R,EACnBzR,OAAQuT,EAAIvT,OAASyR,EACrBtP,KAAMA,EACNE,KAAMA,EAEV,EACAg8c,EAAUnsd,UAAUm7d,OAAS,WAC3B,QAASr7d,KAAKsG,MAAY,MAAKtG,KAAKoV,aACtC,EACAi3c,EAAUnsd,UAAUk7d,SAAW,WAC7B,QAASp7d,KAAKsG,MAAc,MAC9B,EAEA+ld,EAAUnsd,UAAU2/d,WAAa,SAAU1sc,EAASle,GAC9CA,IACFke,EAAQtQ,OAERy7c,IAAoBnrc,EAASle,GAE7BA,EAAK6qd,WAAW3sc,GAChBA,EAAQrQ,UAERqQ,EAAQle,OACRA,EAAK8qd,aAET,EAEA1T,EAAUnsd,UAAU4H,KAAO,SAAUqrB,EAASg7Y,GAC5C,IAAIl5Z,EAAOjV,KAAK2B,IAAI0U,UAEpB,GAAI83Z,EAAQ,CACV,IAAyB,IAArBnua,KAAK2B,IAAImnE,QAGX,YADA9oE,KAAKkC,IAAI,cAAc,GAKzB,IAAK,IAAcisa,EADRnua,KAAK4Q,iBAUd,OAPA5Q,KAAKkC,IAAI,cAAc,QAInBlC,KAAK2B,IAAIq9d,UACXh/d,KAAK+/d,aAIX,CACA5sc,EAAQtQ,OAERy7c,IAAoBnrc,EAASnzB,MAC7BA,KAAK6/d,WAAW1sc,EAASle,GACzBjV,KAAKi+P,SAAS9qO,GACdA,EAAQrQ,UACR9iB,KAAK+/d,YACP,EACA1T,EAAUnsd,UAAUqge,iBAAmB,WACrC,IAAIh5d,EAASvH,KAAK2B,IAAI4F,OACtB,OAAIA,EAEKA,EAAO04d,eAET,IACT,EACA5T,EAAUnsd,UAAU6+d,gBAAkB,WACpC,IAAIpld,EAAa3Z,KAAKuge,mBAEtB,GAAI5md,EAAY,CACd,IAAI7K,EAAO9O,KAAK4Q,gBACZoud,EAAW,IAAclwd,EAAM6K,GACnC3Z,KAAKkC,IAAI,WAAY88d,GAIjBA,EACFh/d,KAAKkC,IAAI,kBAAmB4M,GAE5B9O,KAAKkC,IAAI,kBAAmB,KAEhC,CACF,EACAmqd,EAAUnsd,UAAU6/d,WAAa,WAC/B//d,KAAK++d,kBAEL/+d,KAAKkC,IAAI,cAAc,GACvBlC,KAAKkC,IAAI,UAAW,KACtB,EACAmqd,EAAUnsd,UAAUs+d,SAAW,WAC7Bx+d,KAAKkC,IAAI,kBAAmB,MAC5BlC,KAAKkC,IAAI,WAAY,MACrBlC,KAAKkC,IAAI,cAAc,EACzB,EAKAmqd,EAAUnsd,UAAU+9P,SAAW,SAAU9qO,GACvCnzB,KAAK8/d,WAAW3sc,GAChBnzB,KAAKwge,cAAcrtc,GACnBnzB,KAAKyge,cAActtc,EACrB,EAMAk5b,EAAUnsd,UAAU07C,KAAO,SAAUzoB,GACnCA,EAAQyoB,MACV,EAMAywa,EAAUnsd,UAAUihB,OAAS,SAAUgS,GACrCA,EAAQhS,QACV,EAEAkrc,EAAUnsd,UAAUsge,cAAgB,SAAUrtc,GAC5C,IAAIhyB,EAAKnB,KAAKsG,MACZmZ,EAAYte,EAAGse,UACf9K,EAAUxT,EAAGwT,QACb4kP,EAAgBp4P,EAAGo4P,cACnB11K,EAAc1iF,EAAG0iF,YACf7jF,KAAKq7d,YACF,UAAMx3Y,IAAgC,IAAhBA,EAKzB7jF,KAAK47C,KAAKzoB,IAJVA,EAAQ0pO,YAAch5K,EACtB7jF,KAAK47C,KAAKzoB,GACVA,EAAQ0pO,YAAcloP,IAKtB3U,KAAKo7d,YACH37c,EAAY,KACT,UAAM85O,IAAoC,IAAlBA,IAC3BpmO,EAAQ0pO,YAActD,GAExBv5P,KAAKmhB,OAAOgS,IAGhBnzB,KAAKyge,cAActtc,EACrB,EAMAk5b,EAAUnsd,UAAU4/d,WAAa,SAAU3sc,GAAU,EAKrDk5b,EAAUnsd,UAAUuge,cAAgB,SAAUttc,GAAU,EACxDk5b,EAAUnsd,UAAU0a,UAAY,SAAU7F,EAAMC,GAE9C,IAAIomd,EAAWp7d,KAAKo7d,WAChBC,EAASr7d,KAAKq7d,SACd57c,EAAYzf,KAAKmge,kBACrB,OAAOnge,KAAK0ge,iBAAiB3rd,EAAMC,EAAMomd,EAAUC,EAAQ57c,EAC7D,EAEA4sc,EAAUnsd,UAAUwge,iBAAmB,SAAUz1d,EAAGC,EAAGkwd,EAAUC,EAAQ57c,GACvE,OAAO,CACT,EAKA4sc,EAAUnsd,UAAUige,gBAAkB,WACpC,IAAKnge,KAAKo7d,WACR,OAAO,EAET,IAAI90d,EAAQtG,KAAKsG,MACjB,OAAOA,EAAiB,UAAIA,EAAuB,eACrD,EACO+ld,CACT,CA/N6B,CA+N3B,IAAA9yc,eACF,QChOI,IAAsB,SAAU7X,GAElC,SAASuhb,IACP,OAAkB,OAAXvhb,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAqCA,OAxCA,UAAUijb,EAAQvhb,GAIlBuhb,EAAO/ib,UAAUkU,gBAAkB,WACjC,IAAI9N,EAAQ5E,EAAOxB,UAAUkU,gBAAgBxS,KAAK5B,MAClD,OAAO,WAAS,UAAS,CAAC,EAAGsG,GAAQ,CACnC2E,EAAG,EACHC,EAAG,EACHgU,EAAG,GAEP,EACA+ja,EAAO/ib,UAAUwge,iBAAmB,SAAUz1d,EAAGC,EAAGkwd,EAAUC,EAAQ57c,GACpE,IAAInZ,EAAQtG,KAAKoG,OACbsb,EAAKpb,EAAM2E,EACX0W,EAAKrb,EAAM4E,EACXgU,EAAI5Y,EAAM4Y,EACVohd,EAAgB7gd,EAAY,EAC5Bkhd,EAAc,IAASj/c,EAAIC,EAAI1W,EAAGC,GAEtC,OAAImwd,GAAUD,EACLuF,GAAezhd,EAAIohd,EAExBjF,EACKsF,GAAezhd,IAEpBk8c,IACKuF,GAAezhd,EAAIohd,GAAiBK,GAAezhd,EAAIohd,EAGlE,EACAr9C,EAAO/ib,UAAU4/d,WAAa,SAAU3sc,GACtC,IAAI7sB,EAAQtG,KAAKoG,OACbsb,EAAKpb,EAAM2E,EACX0W,EAAKrb,EAAM4E,EACXgU,EAAI5Y,EAAM4Y,EACdiU,EAAQuhO,YACRvhO,EAAQusL,IAAIh+L,EAAIC,EAAIzC,EAAG,EAAa,EAAVjF,KAAK+B,IAAQ,GACvCmX,EAAQklN,WACV,EACO4qM,CACT,CA1C0B,CA0CxB,KACF,QC3CA,SAAS29C,IAAgBC,EAASC,EAASl/c,EAAIC,GAC7C,OAAOg/c,GAAWj/c,EAAKA,GAAMk/c,GAAWj/c,EAAKA,EAC/C,CACA,IAAIk/c,IAAuB,SAAUr/d,GAEnC,SAASq/d,IACP,OAAkB,OAAXr/d,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAsDA,OAzDA,UAAU+ge,EAASr/d,GAInBq/d,EAAQ7ge,UAAUkU,gBAAkB,WAClC,IAAI9N,EAAQ5E,EAAOxB,UAAUkU,gBAAgBxS,KAAK5B,MAClD,OAAO,WAAS,UAAS,CAAC,EAAGsG,GAAQ,CACnC2E,EAAG,EACHC,EAAG,EACH0W,GAAI,EACJC,GAAI,GAER,EACAk/c,EAAQ7ge,UAAUwge,iBAAmB,SAAUz1d,EAAGC,EAAGkwd,EAAUC,EAAQ57c,GACrE,IAAInZ,EAAQtG,KAAKoG,OACb46d,EAAevhd,EAAY,EAC3BiC,EAAKpb,EAAM2E,EACX0W,EAAKrb,EAAM4E,EACX0W,EAAKtb,EAAMsb,GACbC,EAAKvb,EAAMub,GACTg/c,GAAW51d,EAAIyW,IAAOzW,EAAIyW,GAC1Bo/c,GAAW51d,EAAIyW,IAAOzW,EAAIyW,GAE9B,OAAI05c,GAAUD,EACLwF,IAAgBC,EAASC,EAASl/c,EAAKo/c,EAAcn/c,EAAKm/c,IAAiB,EAEhF3F,EACKuF,IAAgBC,EAASC,EAASl/c,EAAIC,IAAO,IAElDu5c,IACKwF,IAAgBC,EAASC,EAASl/c,EAAKo/c,EAAcn/c,EAAKm/c,IAAiB,GAAKJ,IAAgBC,EAASC,EAASl/c,EAAKo/c,EAAcn/c,EAAKm/c,IAAiB,EAGtK,EACAD,EAAQ7ge,UAAU4/d,WAAa,SAAU3sc,GACvC,IAAI7sB,EAAQtG,KAAKoG,OACbsb,EAAKpb,EAAM2E,EACX0W,EAAKrb,EAAM4E,EACX0W,EAAKtb,EAAMsb,GACXC,EAAKvb,EAAMub,GAGf,GAFAsR,EAAQuhO,YAEJvhO,EAAQ6F,QACV7F,EAAQ6F,QAAQtX,EAAIC,EAAIC,EAAIC,EAAI,EAAG,EAAa,EAAV5H,KAAK+B,IAAQ,OAC9C,CAEL,IAAIkD,EAAI0C,EAAKC,EAAKD,EAAKC,EACnB8wE,EAAS/wE,EAAKC,EAAK,EAAID,EAAKC,EAC5B+wE,EAAShxE,EAAKC,EAAKA,EAAKD,EAAK,EACjCuR,EAAQtQ,OACRsQ,EAAQ7a,UAAUoJ,EAAIC,GACtBwR,EAAQra,MAAM65E,EAAQC,GACtBz/D,EAAQusL,IAAI,EAAG,EAAGxgM,EAAG,EAAa,EAAVjF,KAAK+B,IAC7BmX,EAAQrQ,UACRqQ,EAAQklN,WACV,CACF,EACO0oP,CACT,CA3D2B,CA2DzB,KACF,QC/DA,SAASz3d,IAAS+xG,GAChB,OAAOA,aAAeutJ,cAAe,UAASvtJ,EAAI65E,WAA4C,WAA/B75E,EAAI65E,SAAStuK,aAC9E,CACA,IAAIq6c,IAA0B,SAAUv/d,GAEtC,SAASu/d,IACP,OAAkB,OAAXv/d,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAgHA,OAnHA,UAAUihe,EAAYv/d,GAItBu/d,EAAW/ge,UAAUkU,gBAAkB,WACrC,IAAI9N,EAAQ5E,EAAOxB,UAAUkU,gBAAgBxS,KAAK5B,MAClD,OAAO,WAAS,UAAS,CAAC,EAAGsG,GAAQ,CACnC2E,EAAG,EACHC,EAAG,EACH6C,MAAO,EACPC,OAAQ,GAEZ,EACAizd,EAAW/ge,UAAUmU,UAAY,SAAU/N,GACzCtG,KAAKkhe,UAAU56d,EAAMw6E,IACvB,EAEAmgZ,EAAW/ge,UAAUk7d,SAAW,WAC9B,OAAO,CACT,EAGA6F,EAAW/ge,UAAU2a,aAAe,WAClC,OAAO,CACT,EACAomd,EAAW/ge,UAAUihe,cAAgB,WACnC,IAA2B,IAAvBnhe,KAAKgC,IAAI,UAAoB,CAC/B,IAAIuF,EAASvH,KAAKgC,IAAI,UAClBuF,EAEFA,EAAOO,OAGP9H,KAAK8/d,WAAW9/d,KAAKgC,IAAI,WAE7B,CACF,EACAi/d,EAAW/ge,UAAUghe,UAAY,SAAUpgZ,GACzC,IAAIrgF,EAAQT,KACRsG,EAAQtG,KAAKsG,MACjB,IAAI,UAASw6E,GAAM,CACjB,IAAIsgZ,EAAU,IAAI14Z,MAClB04Z,EAAQh2a,OAAS,WAEf,GAAI3qD,EAAMoB,UACR,OAAO,EAMTpB,EAAM2F,KAAK,MAAOg7d,GAClB3ge,EAAMyB,IAAI,WAAW,GACrBzB,EAAM0ge,gBACN,IAAI9ge,EAAWI,EAAMuB,IAAI,YACrB3B,GACFA,EAASuB,KAAKnB,EAElB,EAEA2ge,EAAQ9/Y,YAAc,YACtB8/Y,EAAQj9b,IAAM28C,EAEd9gF,KAAKkC,IAAI,WAAW,EACtB,MAAW4+E,aAAepY,OAEnBpiE,EAAMyH,QACTzH,EAAMyH,MAAQ+yE,EAAI/yE,OAEfzH,EAAM0H,SACT1H,EAAM0H,OAAS8yE,EAAI9yE,SAEZ1E,IAASw3E,KAEbx6E,EAAMyH,QACTzH,EAAMyH,MAAQkU,OAAO6+D,EAAI12B,aAAa,WAEnC9jD,EAAM0H,SACT1H,EAAM0H,OAAQiU,OAAO6+D,EAAI12B,aAAa,YAG5C,EACA62a,EAAW/ge,UAAU2Q,aAAe,SAAU5O,EAAME,EAAO2O,GACzDpP,EAAOxB,UAAU2Q,aAAajP,KAAK5B,KAAMiC,EAAME,EAAO2O,GAEzC,QAAT7O,GAEFjC,KAAKkhe,UAAU/+d,EAEnB,EACA8+d,EAAW/ge,UAAU4/d,WAAa,SAAU3sc,GAE1C,GAAInzB,KAAKgC,IAAI,WAGX,OAFAhC,KAAKkC,IAAI,UAAU,QACnBlC,KAAKkC,IAAI,UAAWixB,GAGtB,IAAI7sB,EAAQtG,KAAKoG,OACb6E,EAAI3E,EAAM2E,EACZC,EAAI5E,EAAM4E,EACV6C,EAAQzH,EAAMyH,MACdC,EAAS1H,EAAM0H,OACfu6N,EAAKjiO,EAAMiiO,GACXC,EAAKliO,EAAMkiO,GACX64P,EAAS/6d,EAAM+6d,OACfC,EAAUh7d,EAAMg7d,QACdxgZ,EAAMx6E,EAAMw6E,KACZA,aAAepY,OAASp/D,IAASw3E,OAC9B,UAAMynJ,KAAQ,UAAMC,KAAQ,UAAM64P,KAAY,UAAMC,GAGvDnuc,EAAQ8tD,UAAUH,EAAK71E,EAAGC,EAAG6C,EAAOC,GAFpCmlB,EAAQ8tD,UAAUH,EAAKynJ,EAAIC,EAAI64P,EAAQC,EAASr2d,EAAGC,EAAG6C,EAAOC,GAKnE,EACOizd,CACT,CArH8B,CAqH5B,KACF,qBC/He,SAASM,IAAOn/c,EAAIC,EAAIC,EAAIC,EAAI9C,EAAWxU,EAAGC,GAC3D,IAAIgF,EAAO+J,KAAKC,IAAIkI,EAAIE,GACpBnS,EAAO8J,KAAKE,IAAIiI,EAAIE,GACpBlS,EAAO6J,KAAKC,IAAImI,EAAIE,GACpBlS,EAAO4J,KAAKE,IAAIkI,EAAIE,GACpBira,EAAY/ta,EAAY,EAG5B,OAAMxU,GAAKiF,EAAOs9a,GAAavib,GAAKkF,EAAOq9a,GAAatib,GAAKkF,EAAOo9a,GAAatib,GAAKmF,EAAOm9a,GAItF,OAAS34Z,YAAYzS,EAAIC,EAAIC,EAAIC,EAAItX,EAAGC,IAAMuU,EAAY,CACnE,CCLA,IAAI,IAAoB,SAAU/d,GAEhC,SAASygb,IACP,OAAkB,OAAXzgb,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CA6GA,OAhHA,UAAUmib,EAAMzgb,GAIhBygb,EAAKjib,UAAUkU,gBAAkB,WAC/B,IAAI9N,EAAQ5E,EAAOxB,UAAUkU,gBAAgBxS,KAAK5B,MAClD,OAAO,WAAS,UAAS,CAAC,EAAGsG,GAAQ,CACnC8b,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJo7c,YAAY,EACZC,UAAU,GAEd,EACAz7C,EAAKjib,UAAUmU,UAAY,SAAU/N,GACnCtG,KAAKwhe,UACP,EAEAr/C,EAAKjib,UAAU2Q,aAAe,SAAU5O,EAAME,EAAO2O,GACnDpP,EAAOxB,UAAU2Q,aAAajP,KAAK5B,KAAMiC,EAAME,EAAO2O,GAEtD9Q,KAAKwhe,UACP,EACAr/C,EAAKjib,UAAUshe,SAAW,WACxB,IAAIl7d,EAAQtG,KAAKoG,OACbgc,EAAK9b,EAAM8b,GACbC,EAAK/b,EAAM+b,GACXC,EAAKhc,EAAMgc,GACXC,EAAKjc,EAAMic,GACXo7c,EAAar3d,EAAMq3d,WACnBC,EAAWt3d,EAAMs3d,SACfD,GACF,IAAwB39d,KAAMsG,EAAOgc,EAAIC,EAAIH,EAAIC,GAE/Cu7c,GACF,IAAsB59d,KAAMsG,EAAO8b,EAAIC,EAAIC,EAAIC,EAEnD,EACA4/Z,EAAKjib,UAAUwge,iBAAmB,SAAUz1d,EAAGC,EAAGkwd,EAAUC,EAAQ57c,GAClE,IAAK27c,IAAa37c,EAChB,OAAO,EAET,IAAIte,EAAKnB,KAAKoG,OAKd,OAAOm7d,IAJApge,EAAGihB,GACHjhB,EAAGkhB,GACHlhB,EAAGmhB,GACHnhB,EAAGohB,GACoB9C,EAAWxU,EAAGC,EAC9C,EACAi3a,EAAKjib,UAAU4/d,WAAa,SAAU3sc,GACpC,IAAI7sB,EAAQtG,KAAKoG,OACbgc,EAAK9b,EAAM8b,GACbC,EAAK/b,EAAM+b,GACXC,EAAKhc,EAAMgc,GACXC,EAAKjc,EAAMic,GACXo7c,EAAar3d,EAAMq3d,WACnBC,EAAWt3d,EAAMs3d,SACf6D,EAAqB,CACvB70d,GAAI,EACJC,GAAI,GAEF60d,EAAmB,CACrB90d,GAAI,EACJC,GAAI,GAEF8wd,GAAcA,EAAW53c,IAC3B07c,EAAqB,IAA2Br/c,EAAIC,EAAIC,EAAIC,EAAIjc,EAAMq3d,WAAW53c,IAE/E63c,GAAYA,EAAS73c,IACvB27c,EAAmB,IAA2Bt/c,EAAIC,EAAIC,EAAIC,EAAIjc,EAAMs3d,SAAS73c,IAE/EoN,EAAQuhO,YAERvhO,EAAQta,OAAOuJ,EAAKq/c,EAAmB70d,GAAIyV,EAAKo/c,EAAmB50d,IACnEsmB,EAAQilN,OAAO91N,EAAKo/c,EAAiB90d,GAAI2V,EAAKm/c,EAAiB70d,GACjE,EACAs1a,EAAKjib,UAAUuge,cAAgB,SAAUttc,GACvC,IAAIrY,EAAkB9a,KAAKgC,IAAI,mBAC3B+Y,EAAgB/a,KAAKgC,IAAI,iBACzB8Y,GACFA,EAAgBhT,KAAKqrB,GAEnBpY,GACFA,EAAcjT,KAAKqrB,EAEvB,EAKAgvZ,EAAKjib,UAAUyhe,eAAiB,WAC9B,IAAIxge,EAAKnB,KAAKoG,OACZgc,EAAKjhB,EAAGihB,GACRC,EAAKlhB,EAAGkhB,GACRC,EAAKnhB,EAAGmhB,GACRC,EAAKphB,EAAGohB,GACV,OAAO,OAAS1hB,OAAOuhB,EAAIC,EAAIC,EAAIC,EACrC,EAMA4/Z,EAAKjib,UAAUs4B,SAAW,SAAU5yB,GAClC,IAAIzE,EAAKnB,KAAKoG,OACZgc,EAAKjhB,EAAGihB,GACRC,EAAKlhB,EAAGkhB,GACRC,EAAKnhB,EAAGmhB,GACRC,EAAKphB,EAAGohB,GACV,OAAO,OAASmS,QAAQtS,EAAIC,EAAIC,EAAIC,EAAI3c,EAC1C,EACOu8a,CACT,CAlHwB,CAkHtB,KACF,QClHI,IAAU,CAEZ1ha,OAAQ,SAAgBxV,EAAGC,EAAGgU,GAC5B,MAAO,CAAC,CAAC,IAAKjU,EAAIiU,EAAGhU,GAAI,CAAC,IAAKgU,EAAGA,EAAG,EAAG,EAAG,EAAGjU,EAAIiU,EAAGhU,GAAI,CAAC,IAAKgU,EAAGA,EAAG,EAAG,EAAG,EAAGjU,EAAIiU,EAAGhU,GACvF,EAEAi6T,OAAQ,SAAgBl6T,EAAGC,EAAGgU,GAC5B,MAAO,CAAC,CAAC,IAAKjU,EAAIiU,EAAGhU,EAAIgU,GAAI,CAAC,IAAKjU,EAAIiU,EAAGhU,EAAIgU,GAAI,CAAC,IAAKjU,EAAIiU,EAAGhU,EAAIgU,GAAI,CAAC,IAAKjU,EAAIiU,EAAGhU,EAAIgU,GAAI,CAAC,KAC/F,EAEAgub,QAAS,SAAiBjic,EAAGC,EAAGgU,GAC9B,MAAO,CAAC,CAAC,IAAKjU,EAAIiU,EAAGhU,GAAI,CAAC,IAAKD,EAAGC,EAAIgU,GAAI,CAAC,IAAKjU,EAAIiU,EAAGhU,GAAI,CAAC,IAAKD,EAAGC,EAAIgU,GAAI,CAAC,KAC/E,EAEAkub,SAAU,SAAkBnic,EAAGC,EAAGgU,GAChC,IAAIo6c,EAAQp6c,EAAIjF,KAAKoC,IAAI,EAAI,EAAIpC,KAAK+B,IACtC,MAAO,CAAC,CAAC,IAAK/Q,EAAIiU,EAAGhU,EAAIoud,GAAQ,CAAC,IAAKrud,EAAGC,EAAIoud,GAAQ,CAAC,IAAKrud,EAAIiU,EAAGhU,EAAIoud,GAAQ,CAAC,KAClF,EAEA,gBAAiB,SAAsBrud,EAAGC,EAAGgU,GAC3C,IAAIo6c,EAAQp6c,EAAIjF,KAAKoC,IAAI,EAAI,EAAIpC,KAAK+B,IACtC,MAAO,CAAC,CAAC,IAAK/Q,EAAIiU,EAAGhU,EAAIoud,GAAQ,CAAC,IAAKrud,EAAIiU,EAAGhU,EAAIoud,GAAQ,CAAC,IAAKrud,EAAGC,EAAIoud,GAAQ,CAAC,KAClF,GAEEsI,IAAsB,SAAUlge,GAElC,SAASkge,IACP,OAAkB,OAAXlge,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CA2DA,OA9DA,UAAU4he,EAAQlge,GAIlBkge,EAAO1he,UAAUmU,UAAY,SAAU/N,GACrCtG,KAAK6he,mBACP,EAEAD,EAAO1he,UAAU2he,kBAAoB,WAGnC7he,KAAKkC,IAAI,cAAe,CAAC,EAC3B,EAEA0/d,EAAO1he,UAAU2Q,aAAe,SAAU5O,EAAME,EAAO2O,GACrDpP,EAAOxB,UAAU2Q,aAAajP,KAAK5B,KAAMiC,EAAME,EAAO2O,IACK,IAAvD,CAAC,SAAU,IAAK,IAAK,IAAK,UAAUoC,QAAQjR,IAE9CjC,KAAK6he,mBAET,EAGAD,EAAO1he,UAAU2a,aAAe,WAC9B,OAAO,CACT,EACA+md,EAAO1he,UAAU4he,MAAQ,SAAUx7d,GAEjC,OAAO,UAAMA,EAAM4Y,GAAK5Y,EAAM0nE,OAAS1nE,EAAM4Y,CAC/C,EACA0id,EAAO1he,UAAU6he,SAAW,WAC1B,IAKIp2d,EACA9E,EANAP,EAAQtG,KAAKoG,OACb6E,EAAI3E,EAAM2E,EACZC,EAAI5E,EAAM4E,EACRu9B,EAASniC,EAAMmiC,QAAU,SACzBvpB,EAAIlf,KAAK8he,MAAMx7d,GAGnB,IAAI,UAAWmiC,GAEb5hC,GADA8E,EAAS88B,GACKx9B,EAAGC,EAAGgU,GAEpBrY,GAAO,UAAcA,OAChB,CAGL,KADA8E,EAASi2d,EAAOnwN,QAAQhpO,IAGtB,OADAu8F,QAAQib,KAAKx3G,EAAS,6BACf,KAET5hC,EAAO8E,EAAOV,EAAGC,EAAGgU,EACtB,CACA,OAAOrY,CACT,EACA+6d,EAAO1he,UAAU4/d,WAAa,SAAU3sc,GAGtC,IAASnzB,KAAMmzB,EAAS,CACtBtsB,KAHS7G,KAAK+he,YACE/he,KAAKgC,IAAI,eAI7B,EACA4/d,EAAOnwN,QAAU,IACVmwN,CACT,CAhE0B,CAgExB,KACF,QClGe,SAAS/lO,IAAcp2P,EAAOwF,EAAGC,GAC9C,IAAIy6B,GAAM,MAAAlhB,uBAEV,OADAhf,EAAMq6d,WAAWn6b,GACVA,EAAIk2N,cAAc5wP,EAAGC,EAC9B,CCAA,IAAI6zB,IAAY,KAEhB,SAASC,IAAK/zB,GACZ,OAAIgP,KAAKoG,IAAIpV,GAAK8zB,IACT,EAEF9zB,EAAI,GAAK,EAAI,CACtB,CAEA,SAASg0B,IAAUxT,EAAIhC,EAAIlE,GACzB,OAAKA,EAAE,GAAKkG,EAAG,KAAOhC,EAAG,GAAKgC,EAAG,MAAShC,EAAG,GAAKgC,EAAG,KAAOlG,EAAE,GAAKkG,EAAG,KAAOxR,KAAKC,IAAIuR,EAAG,GAAIhC,EAAG,KAAOlE,EAAE,IAAMA,EAAE,IAAMtL,KAAKE,IAAIsR,EAAG,GAAIhC,EAAG,KAAOxP,KAAKC,IAAIuR,EAAG,GAAIhC,EAAG,KAAOlE,EAAE,IAAMA,EAAE,IAAMtL,KAAKE,IAAIsR,EAAG,GAAIhC,EAAG,GAIhN,CAEe,SAASyV,IAAYxe,EAAQzV,EAAGC,GAC7C,IAAIkH,GAAQ,EACRwc,EAAIlO,EAAO7f,OACf,GAAI+tB,GAAK,EAEP,OAAO,EAET,IAAK,IAAI1tB,EAAI,EAAGA,EAAI0tB,EAAG1tB,IAAK,CAC1B,IAAIuqB,EAAK/K,EAAOxf,GACZuoB,EAAK/I,GAAQxf,EAAI,GAAK0tB,GAC1B,GAAIqQ,IAAUxT,EAAIhC,EAAI,CAACxe,EAAGC,IAExB,OAAO,EAIL8zB,IAAKvT,EAAG,GAAKvgB,GAAK,GAAM8zB,IAAKvV,EAAG,GAAKve,GAAK,GAAK8zB,IAAK/zB,GAAKC,EAAIugB,EAAG,KAAOA,EAAG,GAAKhC,EAAG,KAAOgC,EAAG,GAAKhC,EAAG,IAAMgC,EAAG,IAAM,IACrHrZ,GAASA,EAEb,CACA,OAAOA,CACT,CCzCe,SAAS,IAAIsP,EAAIC,EAAIzC,EAAG6C,EAAYC,EAAUvC,EAAWxU,EAAGC,GACzE,IAAIwc,GAASzN,KAAKqG,MAAMpV,EAAIyW,EAAI1W,EAAIyW,GAAgB,EAAVzH,KAAK+B,KAAqB,EAAV/B,KAAK+B,IAC/D,GAAI0L,EAAQ3F,GAAc2F,EAAQ1F,EAChC,OAAO,EAET,IAAIhX,EAAQ,CACVC,EAAGyW,EAAKxC,EAAIjF,KAAKkC,IAAIuL,GACrBxc,EAAGyW,EAAKzC,EAAIjF,KAAKoC,IAAIqL,IAEvB,OAAO,IAAS1c,EAAMC,EAAGD,EAAME,EAAGD,EAAGC,IAAMuU,EAAY,CACzD,CCEA,IAAI,IAAY2sM,IAAA,GAmHhB,SAAe,UAAS,CACtB41Q,OAnHF,SAAgBn7d,GAGd,IAFA,IAAIm7d,GAAS,EACTlxc,EAAQjqB,EAAKhG,OACRK,EAAI,EAAGA,EAAI4vB,EAAO5vB,IAAK,CAC9B,IACI+vB,EADSpqB,EAAK3F,GACD,GACjB,GAAY,MAAR+vB,GAAuB,MAARA,GAAuB,MAARA,EAAa,CAC7C+wc,GAAS,EACT,KACF,CACF,CACA,OAAOA,CACT,EAwGEC,gBAxCF,SAAyBp7d,GAKvB,IAJA,IAAIiqB,EAAQjqB,EAAKhG,OACb+tR,EAAW,GACXszM,EAAY,GACZxhd,EAAS,GACJxf,EAAI,EAAGA,EAAI4vB,EAAO5vB,IAAK,CAC9B,IAAIogB,EAASza,EAAK3F,GACd+vB,EAAM3P,EAAO,GACL,MAAR2P,GAEEvQ,EAAO7f,SAETqhe,EAAU3he,KAAKmgB,GACfA,EAAS,IAGXA,EAAOngB,KAAK,CAAC+gB,EAAO,GAAIA,EAAO,MACd,MAAR2P,EACLvQ,EAAO7f,SAET+tR,EAASruR,KAAKmgB,GACdA,EAAS,IAIXA,EAAOngB,KAAK,CAAC+gB,EAAO,GAAIA,EAAO,IAEnC,CAMA,OAHIZ,EAAO7f,OAAS,GAClBqhe,EAAU3he,KAAKmgB,GAEV,CACLkuQ,SAAUA,EACVszM,UAAWA,EAEf,EAIE1jO,gBAxGF,SAAyBp9O,EAAU3B,EAAWxU,EAAGC,EAAGrK,GAGlD,IAFA,IAAIuR,GAAQ,EACRo7a,EAAY/ta,EAAY,EACnBve,EAAI,EAAGA,EAAIkgB,EAASvgB,OAAQK,IAAK,CACxC,IAAIse,EAAU4B,EAASlgB,GACnBye,EAAeH,EAAQG,aACzB2B,EAAS9B,EAAQ8B,OACjB5B,EAAWF,EAAQE,SACnB6B,EAAM/B,EAAQ+B,IAEhB,IAAIA,GAAQm7c,IAAMn7c,EAAItW,EAAIuib,EAAWjsa,EAAIrW,EAAIsib,EAAWjsa,EAAIxT,MAAQ0R,EAAW8B,EAAIvT,OAASyR,EAAWxU,EAAGC,GAA1G,CAGA,OAAQsU,EAAQgC,SAEd,IAAK,IACL,IAAK,IACHpP,EAAQmvd,IAAO7hd,EAAS,GAAIA,EAAS,GAAIC,EAAa,GAAIA,EAAa,GAAIF,EAAWxU,EAAGC,GACzF,MACF,IAAK,IAEHkH,EADgB,OAASuiB,cAAcjV,EAAS,GAAIA,EAAS,GAAI4B,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIrW,EAAGC,IAC3FuU,EAAY,EACjC,MACF,IAAK,IAMHrN,EALgB,OAAUuiB,cAAcjV,EAAS,GAEjDA,EAAS,GAAI4B,EAAO,GAEpBA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIrW,EAAGC,EAAGrK,IACxC4e,EAAY,EACjC,MACF,IAAK,IAEH,IAAIgC,EAAYjC,EAAQiC,UACpBC,EAAKD,EAAUC,GACjBC,EAAKF,EAAUE,GACfC,EAAKH,EAAUG,GACfC,EAAKJ,EAAUI,GACfE,EAAaN,EAAUM,WACvBC,EAAWP,EAAUO,SACrBF,EAAYL,EAAUK,UACpB1D,EAAI,CAACnT,EAAGC,EAAG,GACXgU,EAAI0C,EAAKC,EAAKD,EAAKC,EAIvB,IAAmBzD,EAAGA,EADd,IAAU,KAAM,CAAC,CAAC,KAAMsD,GAAKC,GAAK,CAAC,KAAMG,GAAY,CAAC,IAAK,GAFtDF,EAAKC,EAAK,EAAID,EAAKC,GAE+C,GADlED,EAAKC,EAAKA,EAAKD,EAAK,OAGjCxP,EAAQ,IAAM,EAAG,EAAG8M,EAAG6C,EAAYC,EAAUvC,EAAWrB,EAAE,GAAIA,EAAE,IAKpE,GAAIhM,EACF,KAzCF,CA2CF,CACA,OAAOA,CACT,GAgDG,IAAA+vd,UCzHH,SAASC,IAAaxzM,EAAU3jR,EAAGC,GAEjC,IADA,IAAIkH,GAAQ,EACHlR,EAAI,EAAGA,EAAI0tR,EAAS/tR,OAAQK,IAAK,CAGxC,GADAkR,EAAQ8sB,IADK0vP,EAAS1tR,GACM+J,EAAGC,GAE7B,KAEJ,CACA,OAAOkH,CACT,CACA,IAAI,IAAoB,SAAU1Q,GAEhC,SAASq6O,IACP,OAAkB,OAAXr6O,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAwOA,OA3OA,UAAU+7O,EAAMr6O,GAIhBq6O,EAAK77O,UAAUkU,gBAAkB,WAC/B,IAAI9N,EAAQ5E,EAAOxB,UAAUkU,gBAAgBxS,KAAK5B,MAClD,OAAO,WAAS,UAAS,CAAC,EAAGsG,GAAQ,CACnCq3d,YAAY,EACZC,UAAU,GAEd,EACA7hP,EAAK77O,UAAUmU,UAAY,SAAU/N,GACnCtG,KAAKqie,YAAY/7d,EAAMO,MACvB7G,KAAKwhe,UACP,EAEAzlP,EAAK77O,UAAU2Q,aAAe,SAAU5O,EAAME,EAAO2O,GACnDpP,EAAOxB,UAAU2Q,aAAajP,KAAK5B,KAAMiC,EAAME,EAAO2O,GACzC,SAAT7O,GACFjC,KAAKqie,YAAYlge,GAGnBnC,KAAKwhe,UACP,EAEAzlP,EAAK77O,UAAUmie,YAAc,SAAUx7d,GAErC7G,KAAKsG,MAAMO,MAAO,UAAcA,GAChC,IAAIm7d,EAAS,IAASA,OAAOn7d,GAG7B7G,KAAKkC,IAAI,SAAU8/d,GACnBhie,KAAKkC,IAAI,cAAe,CAAC,GACzBlC,KAAKkC,IAAI,WAAY,MACrBlC,KAAKkC,IAAI,QAAS,MAClBlC,KAAKkC,IAAI,SAAU,MACnBlC,KAAKkC,IAAI,cAAe,KAC1B,EACA65O,EAAK77O,UAAU49B,YAAc,WAC3B,IAAI1c,EAAWphB,KAAKgC,IAAI,aAKxB,OAJKof,IACHA,GAAW,UAAcphB,KAAKoG,KAAK,SACnCpG,KAAKkC,IAAI,WAAYkf,IAEhBA,CACT,EACA26N,EAAK77O,UAAUshe,SAAW,WACxB,IAQMtC,EARF54d,EAAQtG,KAAKoG,OACbu3d,EAAar3d,EAAMq3d,WACrBC,EAAWt3d,EAAMs3d,SACfD,GAEF,IAAwB39d,KAAMsG,GAD1B44d,EAAUl/d,KAAKm/d,mBAC0B,GAAG,GAAID,EAAQ,GAAG,GAAIA,EAAQ,GAAG,GAAIA,EAAQ,GAAG,IAE3FtB,GAEF,IAAsB59d,KAAMsG,GADxB44d,EAAUl/d,KAAKo/d,iBACwB,GAAG,GAAIF,EAAQ,GAAG,GAAIA,EAAQ,GAAG,GAAIA,EAAQ,GAAG,GAE/F,EACAnjP,EAAK77O,UAAUwge,iBAAmB,SAAUz1d,EAAGC,EAAGkwd,EAAUC,EAAQ57c,GAClE,IAAI2B,EAAWphB,KAAK89B,cAChBkkc,EAAShie,KAAKgC,IAAI,UAClBoQ,GAAQ,EACZ,GAAIgpd,EAAU,CACZ,IAAI75d,EAAWvB,KAAK2he,iBACpBvvd,EAAQ,IAASosP,gBAAgBp9O,EAAU3B,EAAWxU,EAAGC,EAAG3J,EAC9D,CACA,IAAK6Q,GAASipd,EACZ,GAAI2G,EAEF5vd,EAAQypP,IAAc77P,KAAMiL,EAAGC,OAC1B,CACL,IAAIrE,EAAO7G,KAAKoG,KAAK,QACjBk8d,EAAgB,IAASL,gBAAgBp7d,GAE7CuL,EAAQgwd,IAAaE,EAAc1zM,SAAU3jR,EAAGC,IAAMk3d,IAAaE,EAAcJ,UAAWj3d,EAAGC,EACjG,CAEF,OAAOkH,CACT,EACA2pO,EAAK77O,UAAU4/d,WAAa,SAAU3sc,GAGpC,IAASnzB,KAAMmzB,EAFHnzB,KAAKoG,OACCpG,KAAKgC,IAAI,eAE7B,EACA+5O,EAAK77O,UAAUuge,cAAgB,SAAUttc,GACvC,IAAIrY,EAAkB9a,KAAKgC,IAAI,mBAC3B+Y,EAAgB/a,KAAKgC,IAAI,iBACzB8Y,GACFA,EAAgBhT,KAAKqrB,GAEnBpY,GACFA,EAAcjT,KAAKqrB,EAEvB,EAKA4oN,EAAK77O,UAAUyhe,eAAiB,WAC9B,IAAIrqc,EAAct3B,KAAKgC,IAAI,eAC3B,OAAK,UAAMs1B,IAGXt3B,KAAKuie,kBACLvie,KAAKwie,aACExie,KAAKgC,IAAI,gBAJPs1B,CAKX,EAMAykN,EAAK77O,UAAUs4B,SAAW,SAAU5yB,GAClC,IAMI68d,EACAz6d,EAPA06d,EAAS1ie,KAAKgC,IAAI,UACjB0ge,IACH1ie,KAAKuie,kBACLvie,KAAKwie,aACLE,EAAS1ie,KAAKgC,IAAI,WAIpB,IAAI48O,EAAQ5+O,KAAKgC,IAAI,SACrB,IAAK0ge,GAA4B,IAAlBA,EAAO7he,OACpB,OAAI+9O,EACK,CACL3zO,EAAG2zO,EAAM,GAAG,GACZ1zO,EAAG0zO,EAAM,GAAG,IAGT,MAET,UAAK8jP,GAAQ,SAAUzwd,EAAG/Q,GACpB0E,GAASqM,EAAE,IAAMrM,GAASqM,EAAE,KAC9Bwwd,GAAQ78d,EAAQqM,EAAE,KAAOA,EAAE,GAAKA,EAAE,IAClCjK,EAAQ9G,EAEZ,IACA,IAAI+pB,EAAM2zN,EAAM52O,GAChB,IAAI,UAAMijB,KAAQ,UAAMjjB,GACtB,OAAO,KAET,IAAIsd,EAAI2F,EAAIpqB,OACR8he,EAAU/jP,EAAM52O,EAAQ,GAC5B,OAAO,OAAU0sB,QAAQzJ,EAAI3F,EAAI,GAAI2F,EAAI3F,EAAI,GAAIq9c,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,GAAIF,EAC3H,EACA1mP,EAAK77O,UAAUqie,gBAAkB,WAC/B,IAAI17d,EAAO7G,KAAKoG,OAAOS,KACvB7G,KAAKkC,IAAI,QAAS,IAASqnB,YAAY1iB,GACzC,EACAk1O,EAAK77O,UAAUsie,WAAa,WAC1B,IAIII,EACAC,EACAC,EACAx9c,EAPAgS,EAAc,EACdyrc,EAAa,EAEbL,EAAS,GAKT9jP,EAAQ5+O,KAAKgC,IAAI,SAChB48O,KAGL,UAAKA,GAAO,SAAUp/N,EAASte,GAC7B4he,EAAWlkP,EAAM19O,EAAI,GACrBokB,EAAI9F,EAAQ3e,OACRiie,IACFxrc,GAAe,OAAUz2B,OAAO2e,EAAQ8F,EAAI,GAAI9F,EAAQ8F,EAAI,GAAIw9c,EAAS,GAAIA,EAAS,GAAIA,EAAS,GAAIA,EAAS,GAAIA,EAAS,GAAIA,EAAS,KAAO,EAErJ,IACA9ie,KAAKkC,IAAI,cAAeo1B,GACJ,IAAhBA,IAIJ,UAAKsnN,GAAO,SAAUp/N,EAASte,GAC7B4he,EAAWlkP,EAAM19O,EAAI,GACrBokB,EAAI9F,EAAQ3e,OACRiie,KACFF,EAAW,IACF,GAAKG,EAAazrc,EAC3Burc,EAAW,OAAUhie,OAAO2e,EAAQ8F,EAAI,GAAI9F,EAAQ8F,EAAI,GAAIw9c,EAAS,GAAIA,EAAS,GAAIA,EAAS,GAAIA,EAAS,GAAIA,EAAS,GAAIA,EAAS,IAEtIC,GAAcF,GAAY,EAC1BD,EAAS,GAAKG,EAAazrc,EAC3Borc,EAAOnie,KAAKqie,GAEhB,IACA5ie,KAAKkC,IAAI,SAAUwge,IAhBjB1ie,KAAKkC,IAAI,SAAU,IAiBvB,EAKA65O,EAAK77O,UAAUi/d,gBAAkB,WAC/B,IACIvsd,EADAwO,EAAWphB,KAAK89B,cAEpB,GAAI1c,EAASvgB,OAAS,EAAG,CACvB,IAAIs8B,EAAa/b,EAAS,GAAGzB,aACzBu3Z,EAAW91Z,EAAS,GAAGzB,aACvBu/c,EAAU99c,EAAS,GAAG8c,aAC1BtrB,EAAS,GACLssd,GACFtsd,EAAOrS,KAAK,CAAC48B,EAAW,GAAK+hc,EAAQ,GAAI/hc,EAAW,GAAK+hc,EAAQ,KACjEtsd,EAAOrS,KAAK,CAAC48B,EAAW,GAAIA,EAAW,OAEvCvqB,EAAOrS,KAAK,CAAC22a,EAAS,GAAIA,EAAS,KACnCtka,EAAOrS,KAAK,CAAC48B,EAAW,GAAIA,EAAW,KAE3C,CACA,OAAOvqB,CACT,EAKAmpO,EAAK77O,UAAUk/d,cAAgB,WAC7B,IAEIxsd,EAFAwO,EAAWphB,KAAK89B,cAChBj9B,EAASugB,EAASvgB,OAEtB,GAAIA,EAAS,EAAG,CACd,IAAIs8B,EAAa/b,EAASvgB,EAAS,GAAG8e,aAClCu3Z,EAAW91Z,EAASvgB,EAAS,GAAG8e,aAChCu/c,EAAU99c,EAASvgB,EAAS,GAAGs9B,WACnCvrB,EAAS,GACLssd,GACFtsd,EAAOrS,KAAK,CAAC22a,EAAS,GAAKgoD,EAAQ,GAAIhoD,EAAS,GAAKgoD,EAAQ,KAC7Dtsd,EAAOrS,KAAK,CAAC22a,EAAS,GAAIA,EAAS,OAEnCtka,EAAOrS,KAAK,CAAC48B,EAAW,GAAIA,EAAW,KACvCvqB,EAAOrS,KAAK,CAAC22a,EAAS,GAAIA,EAAS,KAEvC,CACA,OAAOtka,CACT,EACOmpO,CACT,CA7OwB,CA6OtB,KACF,QCnQe,SAASinP,IAAWtid,EAAQjB,EAAWxU,EAAGC,EAAG+3d,GAC1D,IAAInyc,EAAQpQ,EAAO7f,OACnB,GAAIiwB,EAAQ,EACV,OAAO,EAET,IAAK,IAAI5vB,EAAI,EAAGA,EAAI4vB,EAAQ,EAAG5vB,IAAK,CAKlC,GAAIqge,IAJK7gd,EAAOxf,GAAG,GACVwf,EAAOxf,GAAG,GACVwf,EAAOxf,EAAI,GAAG,GACdwf,EAAOxf,EAAI,GAAG,GACIue,EAAWxU,EAAGC,GACvC,OAAO,CAEX,CAEA,GAAI+3d,EAAS,CACX,IAAI1mc,EAAQ7b,EAAO,GACf4e,EAAO5e,EAAOoQ,EAAQ,GAC1B,GAAIywc,IAAOhlc,EAAM,GAAIA,EAAM,GAAI+C,EAAK,GAAIA,EAAK,GAAI7f,EAAWxU,EAAGC,GAC7D,OAAO,CAEX,CACA,OAAO,CACT,CChBA,IAAI,IAAuB,SAAUxJ,GAEnC,SAASk8Q,IACP,OAAkB,OAAXl8Q,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CA8BA,OAjCA,UAAU49Q,EAASl8Q,GAInBk8Q,EAAQ19Q,UAAUwge,iBAAmB,SAAUz1d,EAAGC,EAAGkwd,EAAUC,EAAQ57c,GACrE,IAAIiB,EAAS1gB,KAAKoG,OAAOsa,OACrBtO,GAAQ,EAQZ,OAPIgpd,IACFhpd,EAAQ4wd,IAAWtid,EAAQjB,EAAWxU,EAAGC,GAAG,KAEzCkH,GAASipd,IACZjpd,EAAQ8sB,IAAYxe,EAAQzV,EAAGC,IAG1BkH,CACT,EACAwrQ,EAAQ19Q,UAAU4/d,WAAa,SAAU3sc,GACvC,IACIzS,EADQ1gB,KAAKoG,OACEsa,OACnB,KAAIA,EAAO7f,OAAS,GAApB,CAGAsyB,EAAQuhO,YACR,IAAK,IAAIxzP,EAAI,EAAGA,EAAIwf,EAAO7f,OAAQK,IAAK,CACtC,IAAI8J,EAAQ0V,EAAOxf,GACT,IAANA,EACFiyB,EAAQta,OAAO7N,EAAM,GAAIA,EAAM,IAE/BmoB,EAAQilN,OAAOptO,EAAM,GAAIA,EAAM,GAEnC,CACAmoB,EAAQklN,WAVR,CAWF,EACOulC,CACT,CAnC2B,CAmCzB,KACF,QCrCIslN,IAAwB,SAAUxhe,GAEpC,SAASwhe,IACP,OAAkB,OAAXxhe,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAwLA,OA3LA,UAAUkje,EAAUxhe,GAIpBwhe,EAAShje,UAAUkU,gBAAkB,WACnC,IAAI9N,EAAQ5E,EAAOxB,UAAUkU,gBAAgBxS,KAAK5B,MAClD,OAAO,WAAS,UAAS,CAAC,EAAGsG,GAAQ,CACnCq3d,YAAY,EACZC,UAAU,GAEd,EACAsF,EAAShje,UAAUmU,UAAY,SAAU/N,GACvCtG,KAAKwhe,UACP,EAEA0B,EAAShje,UAAU2Q,aAAe,SAAU5O,EAAME,EAAO2O,GACvDpP,EAAOxB,UAAU2Q,aAAajP,KAAK5B,KAAMiC,EAAME,EAAO2O,GACtD9Q,KAAKwhe,YAC6B,IAA9B,CAAC,UAAUtud,QAAQjR,IACrBjC,KAAKmje,aAET,EACAD,EAAShje,UAAUije,YAAc,WAC/Bnje,KAAKkC,IAAI,cAAe,MACxBlC,KAAKkC,IAAI,SAAU,KACrB,EACAghe,EAAShje,UAAUshe,SAAW,WAC5B,IAAIl7d,EAAQtG,KAAKoG,OACbjF,EAAKnB,KAAKsG,MACZoa,EAASvf,EAAGuf,OACZi9c,EAAax8d,EAAGw8d,WAChBC,EAAWz8d,EAAGy8d,SACZ/8d,EAAS6f,EAAO7f,OAChBuhB,EAAK1B,EAAO,GAAG,GACf2B,EAAK3B,EAAO,GAAG,GACf4B,EAAK5B,EAAO7f,EAAS,GAAG,GACxB0hB,EAAK7B,EAAO7f,EAAS,GAAG,GACxB88d,GACF,IAAwB39d,KAAMsG,EAAOoa,EAAO,GAAG,GAAIA,EAAO,GAAG,GAAI0B,EAAIC,GAEnEu7c,GACF,IAAsB59d,KAAMsG,EAAOoa,EAAO7f,EAAS,GAAG,GAAI6f,EAAO7f,EAAS,GAAG,GAAIyhB,EAAIC,EAEzF,EAEA2gd,EAAShje,UAAUm7d,OAAS,WAC1B,OAAO,CACT,EACA6H,EAAShje,UAAUwge,iBAAmB,SAAUz1d,EAAGC,EAAGkwd,EAAUC,EAAQ57c,GAEtE,SAAK27c,IAAa37c,IAIXujd,IADMhje,KAAKoG,OAAOsa,OACCjB,EAAWxU,EAAGC,GAAG,EAC7C,EAEAg4d,EAAShje,UAAUk7d,SAAW,WAC5B,OAAO,CACT,EACA8H,EAAShje,UAAU4/d,WAAa,SAAU3sc,GACxC,IAAIhyB,EAAKnB,KAAKoG,OACZsa,EAASvf,EAAGuf,OACZi9c,EAAax8d,EAAGw8d,WAChBC,EAAWz8d,EAAGy8d,SACZ/8d,EAAS6f,EAAO7f,OACpB,KAAI6f,EAAO7f,OAAS,GAApB,CAGA,IAWMszB,EAXF/R,EAAK1B,EAAO,GAAG,GACf2B,EAAK3B,EAAO,GAAG,GACf4B,EAAK5B,EAAO7f,EAAS,GAAG,GACxB0hB,EAAK7B,EAAO7f,EAAS,GAAG,GAE5B,GAAI88d,GAAcA,EAAW53c,EAE3B3D,IADI+R,EAAW,IAA2B/R,EAAIC,EAAI3B,EAAO,GAAG,GAAIA,EAAO,GAAG,GAAIi9c,EAAW53c,IAC1EnZ,GACfyV,GAAM8R,EAAStnB,GAEjB,GAAI+wd,GAAYA,EAAS73c,EAEvBzD,IADI6R,EAAW,IAA2BzT,EAAO7f,EAAS,GAAG,GAAI6f,EAAO7f,EAAS,GAAG,GAAIyhB,EAAIC,EAAIq7c,EAAS73c,IAC1FnZ,GACf2V,GAAM4R,EAAStnB,GAEjBsmB,EAAQuhO,YACRvhO,EAAQta,OAAOuJ,EAAIC,GACnB,IAAK,IAAInhB,EAAI,EAAGA,EAAIL,EAAS,EAAGK,IAAK,CACnC,IAAI8J,EAAQ0V,EAAOxf,GACnBiyB,EAAQilN,OAAOptO,EAAM,GAAIA,EAAM,GACjC,CACAmoB,EAAQilN,OAAO91N,EAAIC,EAtBnB,CAuBF,EACA2gd,EAAShje,UAAUuge,cAAgB,SAAUttc,GAC3C,IAAIrY,EAAkB9a,KAAKgC,IAAI,mBAC3B+Y,EAAgB/a,KAAKgC,IAAI,iBACzB8Y,GACFA,EAAgBhT,KAAKqrB,GAEnBpY,GACFA,EAAcjT,KAAKqrB,EAEvB,EAKA+vc,EAAShje,UAAUyhe,eAAiB,WAClC,IAAIjhd,EAAS1gB,KAAKoG,OAAOsa,OAErB4W,EAAct3B,KAAKgC,IAAI,eAC3B,OAAK,UAAMs1B,IAGXt3B,KAAKkC,IAAI,cAAe,OAAarB,OAAO6f,IACrC1gB,KAAKgC,IAAI,gBAHPs1B,CAIX,EAMA4rc,EAAShje,UAAUs4B,SAAW,SAAU5yB,GACtC,IAOI68d,EACAz6d,EARA0Y,EAAS1gB,KAAKoG,OAAOsa,OAErBgid,EAAS1ie,KAAKgC,IAAI,UAatB,OAZK0ge,IACH1ie,KAAKwie,aACLE,EAAS1ie,KAAKgC,IAAI,YAIpB,UAAK0ge,GAAQ,SAAUzwd,EAAG/Q,GACpB0E,GAASqM,EAAE,IAAMrM,GAASqM,EAAE,KAC9Bwwd,GAAQ78d,EAAQqM,EAAE,KAAOA,EAAE,GAAKA,EAAE,IAClCjK,EAAQ9G,EAEZ,IACO,OAASwzB,QAAQhU,EAAO1Y,GAAO,GAAI0Y,EAAO1Y,GAAO,GAAI0Y,EAAO1Y,EAAQ,GAAG,GAAI0Y,EAAO1Y,EAAQ,GAAG,GAAIy6d,EAC1G,EACAS,EAAShje,UAAUsie,WAAa,WAC9B,IAAI9hd,EAAS1gB,KAAKoG,OAAOsa,OACzB,GAAKA,GAA4B,IAAlBA,EAAO7f,OAAtB,CAGA,IAAIy2B,EAAct3B,KAAK2he,iBACvB,KAAIrqc,GAAe,GAAnB,CAGA,IAEIsrc,EACAC,EAHAE,EAAa,EACbL,EAAS,IAGb,UAAKhid,GAAQ,SAAUtC,EAAGld,GACpBwf,EAAOxf,EAAI,MACb0he,EAAW,IACF,GAAKG,EAAazrc,EAC3Burc,EAAW,OAAShie,OAAOud,EAAE,GAAIA,EAAE,GAAIsC,EAAOxf,EAAI,GAAG,GAAIwf,EAAOxf,EAAI,GAAG,IACvE6he,GAAcF,EACdD,EAAS,GAAKG,EAAazrc,EAC3Borc,EAAOnie,KAAKqie,GAEhB,IACA5ie,KAAKkC,IAAI,SAAUwge,EAfnB,CAJA,CAoBF,EAKAQ,EAAShje,UAAUi/d,gBAAkB,WACnC,IAAIz+c,EAAS1gB,KAAKoG,OAAOsa,OACrB9N,EAAS,GAGb,OAFAA,EAAOrS,KAAK,CAACmgB,EAAO,GAAG,GAAIA,EAAO,GAAG,KACrC9N,EAAOrS,KAAK,CAACmgB,EAAO,GAAG,GAAIA,EAAO,GAAG,KAC9B9N,CACT,EAKAswd,EAAShje,UAAUk/d,cAAgB,WACjC,IAAI1+c,EAAS1gB,KAAKoG,OAAOsa,OACrB4E,EAAI5E,EAAO7f,OAAS,EACpB+R,EAAS,GAGb,OAFAA,EAAOrS,KAAK,CAACmgB,EAAO4E,EAAI,GAAG,GAAI5E,EAAO4E,EAAI,GAAG,KAC7C1S,EAAOrS,KAAK,CAACmgB,EAAO4E,GAAG,GAAI5E,EAAO4E,GAAG,KAC9B1S,CACT,EACOswd,CACT,CA7L4B,CA6L1B,KACF,QC1LA,IAAIE,IAAoB,SAAU1he,GAEhC,SAAS0he,IACP,OAAkB,OAAX1he,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CA0EA,OA7EA,UAAUoje,EAAM1he,GAIhB0he,EAAKlje,UAAUkU,gBAAkB,WAC/B,IAAI9N,EAAQ5E,EAAOxB,UAAUkU,gBAAgBxS,KAAK5B,MAClD,OAAO,WAAS,UAAS,CAAC,EAAGsG,GAAQ,CACnC2E,EAAG,EACHC,EAAG,EACH6C,MAAO,EACPC,OAAQ,EACRggE,OAAQ,GAEZ,EACAo1Z,EAAKlje,UAAUwge,iBAAmB,SAAUz1d,EAAGC,EAAGkwd,EAAUC,EAAQ57c,GAClE,IAAInZ,EAAQtG,KAAKoG,OACb8J,EAAO5J,EAAM2E,EACbmF,EAAO9J,EAAM4E,EACb6C,EAAQzH,EAAMyH,MACdC,EAAS1H,EAAM0H,OACfggE,EAAS1nE,EAAM0nE,OAEnB,GAAKA,EAaE,CACL,IAAI57D,GAAQ,EASZ,OARIgpd,IACFhpd,EChDO,SAAwBlC,EAAME,EAAMrC,EAAOC,EAAQggE,EAAQvuD,EAAWxU,EAAGC,GAEtF,OAAOq2d,IAAOrxd,EAAO89D,EAAQ59D,EAAMF,EAAOnC,EAAQigE,EAAQ59D,EAAMqP,EAAWxU,EAAGC,IAAMq2d,IAAOrxd,EAAOnC,EAAOqC,EAAO49D,EAAQ99D,EAAOnC,EAAOqC,EAAOpC,EAASggE,EAAQvuD,EAAWxU,EAAGC,IAAMq2d,IAAOrxd,EAAOnC,EAAQigE,EAAQ59D,EAAOpC,EAAQkC,EAAO89D,EAAQ59D,EAAOpC,EAAQyR,EAAWxU,EAAGC,IAAMq2d,IAAOrxd,EAAME,EAAOpC,EAASggE,EAAQ99D,EAAME,EAAO49D,EAAQvuD,EAAWxU,EAAGC,IAAM,IAAMgF,EAAOnC,EAAQigE,EAAQ59D,EAAO49D,EAAQA,EAAQ,IAAM/zD,KAAK+B,GAAI,EAAI/B,KAAK+B,GAAIyD,EAAWxU,EAAGC,IAAM,IAAMgF,EAAOnC,EAAQigE,EAAQ59D,EAAOpC,EAASggE,EAAQA,EAAQ,EAAG,GAAM/zD,KAAK+B,GAAIyD,EAAWxU,EAAGC,IAAM,IAAMgF,EAAO89D,EAAQ59D,EAAOpC,EAASggE,EAAQA,EAAQ,GAAM/zD,KAAK+B,GAAI/B,KAAK+B,GAAIyD,EAAWxU,EAAGC,IAAM,IAAMgF,EAAO89D,EAAQ59D,EAAO49D,EAAQA,EAAQ/zD,KAAK+B,GAAI,IAAM/B,KAAK+B,GAAIyD,EAAWxU,EAAGC,EAC3tB,CD6CgB,CAAiBgF,EAAME,EAAMrC,EAAOC,EAAQggE,EAAQvuD,EAAWxU,EAAGC,KAIvEkH,GAASipd,IACZjpd,EAAQypP,IAAc77P,KAAMiL,EAAGC,IAE1BkH,CACT,CAvBE,IAAIo7a,EAAY/ta,EAAY,EAE5B,OAAI47c,GAAUD,EACLsB,IAAMxsd,EAAOs9a,EAAWp9a,EAAOo9a,EAAWz/a,EAAQy/a,EAAWx/a,EAASw/a,EAAWvib,EAAGC,GAGzFmwd,EACKqB,IAAMxsd,EAAME,EAAMrC,EAAOC,EAAQ/C,EAAGC,GAEzCkwd,EE3CK,SAAgBlrd,EAAME,EAAMrC,EAAOC,EAAQyR,EAAWxU,EAAGC,GACtE,IAAIsib,EAAY/ta,EAAY,EAE5B,OAAOi9c,IAAMxsd,EAAOs9a,EAAWp9a,EAAOo9a,EAAWz/a,EAAO0R,EAAWxU,EAAGC,IAEtEwxd,IAAMxsd,EAAOnC,EAAQy/a,EAAWp9a,EAAOo9a,EAAW/ta,EAAWzR,EAAQ/C,EAAGC,IAExEwxd,IAAMxsd,EAAOs9a,EAAWp9a,EAAOpC,EAASw/a,EAAWz/a,EAAO0R,EAAWxU,EAAGC,IAExEwxd,IAAMxsd,EAAOs9a,EAAWp9a,EAAOo9a,EAAW/ta,EAAWzR,EAAQ/C,EAAGC,EAClE,CFkCem4d,CAAOnzd,EAAME,EAAMrC,EAAOC,EAAQyR,EAAWxU,EAAGC,QADzD,CAeJ,EACAk4d,EAAKlje,UAAU4/d,WAAa,SAAU3sc,GACpC,IAAI7sB,EAAQtG,KAAKoG,OACb6E,EAAI3E,EAAM2E,EACVC,EAAI5E,EAAM4E,EACV6C,EAAQzH,EAAMyH,MACdC,EAAS1H,EAAM0H,OACfggE,EAAS1nE,EAAM0nE,OAEnB,GADA76C,EAAQuhO,YACO,IAAX1mL,EAEF76C,EAAQ3S,KAAKvV,EAAGC,EAAG6C,EAAOC,OACrB,CACL,IAAI7M,EpB0GH,SAAqB6sE,GAC1B,IAAIrgD,EAAK,EACLC,EAAK,EACLqrQ,EAAK,EACLqqM,EAAK,EAoBT,OAnBI,UAAQt1Z,GACY,IAAlBA,EAAOntE,OACT8sB,EAAKC,EAAKqrQ,EAAKqqM,EAAKt1Z,EAAO,GACA,IAAlBA,EAAOntE,QAChB8sB,EAAKsrQ,EAAKjrN,EAAO,GACjBpgD,EAAK01c,EAAKt1Z,EAAO,IACU,IAAlBA,EAAOntE,QAChB8sB,EAAKqgD,EAAO,GACZpgD,EAAK01c,EAAKt1Z,EAAO,GACjBirN,EAAKjrN,EAAO,KAEZrgD,EAAKqgD,EAAO,GACZpgD,EAAKogD,EAAO,GACZirN,EAAKjrN,EAAO,GACZs1Z,EAAKt1Z,EAAO,IAGdrgD,EAAKC,EAAKqrQ,EAAKqqM,EAAKt1Z,EAEf,CAACrgD,EAAIC,EAAIqrQ,EAAIqqM,EACtB,CoBnIeC,CAAYv1Z,GACnBrgD,EAAKxsB,EAAG,GACRysB,EAAKzsB,EAAG,GACR83R,EAAK93R,EAAG,GACRmie,EAAKnie,EAAG,GACVgyB,EAAQta,OAAO5N,EAAI0iB,EAAIziB,GACvBioB,EAAQilN,OAAOntO,EAAI8C,EAAQ6f,EAAI1iB,GACxB,IAAP0iB,GAAYuF,EAAQusL,IAAIz0M,EAAI8C,EAAQ6f,EAAI1iB,EAAI0iB,EAAIA,GAAK3T,KAAK+B,GAAK,EAAG,GAClEmX,EAAQilN,OAAOntO,EAAI8C,EAAO7C,EAAI8C,EAASirR,GAChC,IAAPA,GAAY9lQ,EAAQusL,IAAIz0M,EAAI8C,EAAQkrR,EAAI/tR,EAAI8C,EAASirR,EAAIA,EAAI,EAAGh/Q,KAAK+B,GAAK,GAC1EmX,EAAQilN,OAAOntO,EAAIq4d,EAAIp4d,EAAI8C,GACpB,IAAPs1d,GAAYnwc,EAAQusL,IAAIz0M,EAAIq4d,EAAIp4d,EAAI8C,EAASs1d,EAAIA,EAAIrpd,KAAK+B,GAAK,EAAG/B,KAAK+B,IACvEmX,EAAQilN,OAAOntO,EAAGC,EAAIyiB,GACf,IAAPA,GAAYwF,EAAQusL,IAAIz0M,EAAI0iB,EAAIziB,EAAIyiB,EAAIA,EAAI1T,KAAK+B,GAAc,IAAV/B,KAAK+B,IAC1DmX,EAAQklN,WACV,CACF,EACO+qP,CACT,CA/EwB,CA+EtB,KACF,QGnFIj8Z,IAAoB,SAAUzlE,GAEhC,SAASylE,IACP,OAAkB,OAAXzlE,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAyIA,OA5IA,UAAUmnE,EAAMzlE,GAKhBylE,EAAKjnE,UAAUkU,gBAAkB,WAC/B,IAAI9N,EAAQ5E,EAAOxB,UAAUkU,gBAAgBxS,KAAK5B,MAClD,OAAO,WAAS,UAAS,CAAC,EAAGsG,GAAQ,CACnC2E,EAAG,EACHC,EAAG,EACH2V,KAAM,KACNC,SAAU,GACV2S,WAAY,aACZE,UAAW,SACXD,WAAY,SACZE,YAAa,SACb3S,UAAW,QACXC,aAAc,UAElB,EAEAimD,EAAKjnE,UAAU2a,aAAe,WAC5B,OAAO,CACT,EAEAssD,EAAKjnE,UAAUmU,UAAY,SAAU/N,GACnCtG,KAAKwje,gBACDl9d,EAAMua,MACR7gB,KAAKyje,SAASn9d,EAAMua,KAExB,EAEAsmD,EAAKjnE,UAAUsje,cAAgB,WAC7B,IAAIl9d,EAAQtG,KAAKsG,MACjBA,EAAM0a,MAAO,MAAAwS,cAAaltB,EAC5B,EAEA6gE,EAAKjnE,UAAUuje,SAAW,SAAU5id,GAClC,IAAIuS,EAAU,MACV,UAASvS,KAAiC,IAAxBA,EAAK3N,QAAQ,QACjCkgB,EAAUvS,EAAKyI,MAAM,OAEvBtpB,KAAKkC,IAAI,UAAWkxB,EACtB,EAEA+zC,EAAKjnE,UAAU2Q,aAAe,SAAU5O,EAAME,EAAO2O,GACnDpP,EAAOxB,UAAU2Q,aAAajP,KAAK5B,KAAMiC,EAAME,EAAO2O,GAClD7O,EAAKs/E,WAAW,SAClBvhF,KAAKwje,gBAEM,SAATvhe,GACFjC,KAAKyje,SAASthe,EAElB,EAKAglE,EAAKjnE,UAAUwje,cAAgB,WAC7B,IAAIp9d,EAAQtG,KAAKsG,MACbya,EAAaza,EAAMya,WACnBD,EAA4B,EAAjBxa,EAAMwa,SACrB,OAAOC,EAAaA,EAAaD,EAAsB,IAAXA,CAC9C,EAEAqmD,EAAKjnE,UAAUyje,aAAe,SAAUxwc,EAASC,EAASioc,GACxD,IAOIuI,EAPAt9d,EAAQtG,KAAKsG,MACb4a,EAAe5a,EAAM4a,aACrBjW,EAAI3E,EAAM2E,EACVC,EAAI5E,EAAM4E,EACV4V,EAA4B,EAAjBxa,EAAMwa,SACjBkS,EAAYhzB,KAAK0je,gBACjB11d,GAAS,MAAA8kB,eAAcxsB,EAAMua,KAAMva,EAAMwa,SAAUxa,EAAMya,aAE7D,UAAKqS,GAAS,SAAUC,EAASrrB,GAC/B47d,EAAO14d,EAAIlD,GAASgrB,EAAYlS,GAAY9S,EAAS8S,EAChC,WAAjBI,IAA2B0id,GAAQ51d,EAAS8S,GAAY9S,EAAS8S,GAAY,GAC5D,QAAjBI,IAAwB0id,GAAQ51d,EAAS8S,IACxC,UAAMuS,KACLgoc,EACFloc,EAAQqvO,SAASnvO,EAASpoB,EAAG24d,GAE7Bzwc,EAAQsvO,WAAWpvO,EAASpoB,EAAG24d,GAGrC,GACF,EAEAz8Z,EAAKjnE,UAAU2je,UAAY,SAAU1wc,EAASkoc,GAC5C,IAAI/0d,EAAQtG,KAAKoG,OACb6E,EAAI3E,EAAM2E,EACVC,EAAI5E,EAAM4E,EACVkoB,EAAUpzB,KAAKgC,IAAI,WACvB,GAAIoxB,EACFpzB,KAAK2je,aAAaxwc,EAASC,EAASioc,OAC/B,CACL,IAAIx6c,EAAOva,EAAMua,MACZ,UAAMA,KACLw6c,EACFloc,EAAQqvO,SAAS3hP,EAAM5V,EAAGC,GAE1BioB,EAAQsvO,WAAW5hP,EAAM5V,EAAGC,GAGlC,CACF,EAEAi8D,EAAKjnE,UAAUsge,cAAgB,SAAUrtc,GACvC,IAAIhyB,EAAKnB,KAAKsG,MACZmZ,EAAYte,EAAGse,UACf9K,EAAUxT,EAAGwT,QACb4kP,EAAgBp4P,EAAGo4P,cACnB11K,EAAc1iF,EAAG0iF,YACf7jF,KAAKo7d,YACH37c,EAAY,KACT,UAAM85O,IAAoC,IAAlBA,IAC3BpmO,EAAQ0pO,YAAcloP,GAExB3U,KAAKmhB,OAAOgS,IAGZnzB,KAAKq7d,YACF,UAAMx3Y,IAAgC,IAAhBA,EAKzB7jF,KAAK47C,KAAKzoB,IAJVA,EAAQ0pO,YAAch5K,EACtB7jF,KAAK47C,KAAKzoB,GACVA,EAAQ0pO,YAAcloP,IAK1B3U,KAAKyge,cAActtc,EACrB,EAEAg0C,EAAKjnE,UAAU07C,KAAO,SAAUzoB,GAC9BnzB,KAAK6je,UAAU1wc,GAAS,EAC1B,EAEAg0C,EAAKjnE,UAAUihB,OAAS,SAAUgS,GAChCnzB,KAAK6je,UAAU1wc,GAAS,EAC1B,EACOg0C,CACT,CA9IwB,CA8ItB,KACF,QC/IA,SAAS28Z,IAASn0d,EAAS1E,EAAGC,GAE5B,IAAI6F,EAAcpB,EAAQqB,iBAC1B,GAAID,EAAa,CACf,IAAI5P,EAXR,SAA0B8Q,EAAGd,GAC3B,GAAIA,EAAQ,CACV,IAAI+E,GAAe,MAAAoO,QAAOnT,GAC1B,OAAO,MAAAkT,cAAanO,EAAcjE,EACpC,CACA,OAAOA,CACT,CAKaC,CAAiB,CAACjH,EAAGC,EAAG,GAAI6F,GAGrC,MAAO,CAFE5P,EAAG,GACHA,EAAG,GAEd,CACA,MAAO,CAAC8J,EAAGC,EACb,CAEA,SAAS64d,IAAQp0d,EAAS1E,EAAGC,GAE3B,GAAIyE,EAAQrG,UAAYqG,EAAQrG,WAC9B,OAAO,EAIT,KAAK,MAAA4qB,gBAAevkB,KAAqC,IAAzBA,EAAQhO,IAAIq9d,SAC1C,OAAO,EAET,GAAIrvd,EAAQhO,IAAI0U,UAAW,CAEzB,IAAIlV,EAAK2ie,IAASn0d,EAAS1E,EAAGC,GAC5B6J,EAAO5T,EAAG,GACV6T,EAAO7T,EAAG,GACZ,GAAIwO,EAAQwC,UAAU4C,EAAMC,GAC1B,OAAO,CAEX,CAEA,IAAIlG,EAAOa,EAAQhO,IAAIo9d,iBAAmBpvd,EAAQiB,gBAQlD,OAAM3F,GAAK6D,EAAKoB,MAAQjF,GAAK6D,EAAKqB,MAAQjF,GAAK4D,EAAKsB,MAAQlF,GAAK4D,EAAKuB,IAIxE,CAEO,SAAS9E,IAASvC,EAAWiC,EAAGC,GAErC,IAAK64d,IAAQ/6d,EAAWiC,EAAGC,GACzB,OAAO,KAKT,IAHA,IAAIzF,EAAQ,KACRoK,EAAW7G,EAAUsH,cAEhBpP,EADG2O,EAAShP,OACA,EAAGK,GAAK,EAAGA,IAAK,CACnC,IAAI4O,EAAQD,EAAS3O,GACrB,GAAI4O,EAAMF,UACRnK,EAAQ8F,IAASuE,EAAO7E,EAAGC,QACtB,GAAI64d,IAAQj0d,EAAO7E,EAAGC,GAAI,CAC/B,IAAI84d,EAAWl0d,EACX3O,EAAK2ie,IAASh0d,EAAO7E,EAAGC,GAC1B6J,EAAO5T,EAAG,GACV6T,EAAO7T,EAAG,GAER6ie,EAASppd,UAAU7F,EAAMC,KAC3BvP,EAAQqK,EAEZ,CACA,GAAIrK,EACF,KAEJ,CACA,OAAOA,CACT,CC1EA,IAAI,IAAsB,SAAU/D,GAElC,SAAS0L,IACP,OAAkB,OAAX1L,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CA8NA,OAjOA,UAAUoN,EAAQ1L,GAIlB0L,EAAOlN,UAAU6B,cAAgB,WAC/B,IAAIJ,EAAMD,EAAOxB,UAAU6B,cAAcH,KAAK5B,MAY9C,OAVA2B,EAAc,SAAI,SAElBA,EAAc,UAAI,EAElBA,EAAkB,cAAI,EACtBA,EAAqB,gBAAI,GAEzBA,EAAc,UAAI,EAElBA,EAAc,UAAI,EACXA,CACT,EAKAyL,EAAOlN,UAAUgO,eAAiB,SAAU0G,GAOvB,SAAfA,GAAwC,SAAfA,GAAwC,eAAfA,IACpD5U,KAAKkC,IAAI,kBAAmB,CAAClC,OAC7BA,KAAK8H,OAET,EACAsF,EAAOlN,UAAUqR,aAAe,WAC9B,OAAO,CACT,EACAnE,EAAOlN,UAAU4R,aAAe,WAC9B,OAAO,GACT,EAIA1E,EAAOlN,UAAU+je,cAAgB,WAC/B,IAAI3lO,EAAat+P,KAAKgC,IAAI,gB1BpDrBkB,OAASA,OAAO+kQ,iBAAmB,G0BsDxC,OAAO3J,GAAc,EAAIrkP,KAAKisJ,KAAKo4F,GAAc,CACnD,EACAlxP,EAAOlN,UAAU+/d,aAAe,WAC9B,MAAO,CACL/vd,KAAM,EACNE,KAAM,EACND,KAAMnQ,KAAK2B,IAAIoM,MACfsC,KAAMrQ,KAAK2B,IAAIqM,OAEnB,EAEAZ,EAAOlN,UAAUwN,UAAY,WAC3B,IAAIiC,EAAUhF,SAAS+Z,cAAc,UACjCyO,EAAUxjB,EAAQgV,WAAW,MAGjC,OADA3kB,KAAKkC,IAAI,UAAWixB,GACbxjB,CACT,EACAvC,EAAOlN,UAAU0N,WAAa,SAAUG,EAAOC,GAC7CtM,EAAOxB,UAAU0N,WAAWhM,KAAK5B,KAAM+N,EAAOC,GAC9C,IAAImlB,EAAUnzB,KAAKgC,IAAI,WACnBwI,EAAKxK,KAAKgC,IAAI,MACds8P,EAAat+P,KAAKike,gBACtBz5d,EAAGuD,MAAQuwP,EAAavwP,EACxBvD,EAAGwD,OAASswP,EAAatwP,EAErBswP,EAAa,GACfnrO,EAAQra,MAAMwlP,EAAYA,EAE9B,EAEAlxP,EAAOlN,UAAUqP,MAAQ,WACvB7N,EAAOxB,UAAUqP,MAAM3N,KAAK5B,MAC5BA,KAAKkke,cACL,IAAI/wc,EAAUnzB,KAAKgC,IAAI,WACnB2N,EAAU3P,KAAKgC,IAAI,MACvBmxB,EAAQ+1O,UAAU,EAAG,EAAGv5P,EAAQ5B,MAAO4B,EAAQ3B,OACjD,EACAZ,EAAOlN,UAAUqL,SAAW,SAAUN,EAAGC,GAOvC,OALIlL,KAAKgC,IAAI,YACHuJ,IAASvL,KAAMiL,EAAGC,GAElBxJ,EAAOxB,UAAUqL,SAAS3J,KAAK5B,KAAMiL,EAAGC,EAAG,KAGvD,EAEAkC,EAAOlN,UAAUike,kBAAoB,WACnC,IAEIh2D,EAFAxtY,EAAW3gC,KAAKgC,IAAI,mBACpBoie,EAAapke,KAAKige,eAGlBt/b,EAAS9/B,QAAU8/B,EAAS,KAAO3gC,KACrCmua,EAASi2D,GAETj2D,EtBgLC,SAAyBxtY,GAC9B,IAAKA,EAAS9/B,OACZ,OAAO,KAET,IAAIwje,EAAU,GACVC,EAAU,GACVC,EAAU,GACVC,EAAU,GAUd,OATA,UAAK7jc,GAAU,SAAUn2B,GACvB,IAAI2ja,EAASoxD,IAAiB/0d,GAC1B2ja,IACFk2D,EAAQ9je,KAAK4ta,EAAOj+Z,MACpBo0d,EAAQ/je,KAAK4ta,EAAO/9Z,MACpBm0d,EAAQhke,KAAK4ta,EAAOh+Z,MACpBq0d,EAAQjke,KAAK4ta,EAAO99Z,MAExB,IACO,CACLH,MAAM,UAAIm0d,GACVj0d,MAAM,UAAIk0d,GACVn0d,MAAM,UAAIo0d,GACVl0d,MAAM,UAAIm0d,GAEd,CsBvMeC,CAAgB9jc,GACrBwtY,IACFA,EAAOj+Z,KAAO+J,KAAKwX,MAAM08Y,EAAOj+Z,MAChCi+Z,EAAO/9Z,KAAO6J,KAAKwX,MAAM08Y,EAAO/9Z,MAChC+9Z,EAAOh+Z,KAAO8J,KAAKisJ,KAAKioQ,EAAOh+Z,MAC/Bg+Z,EAAO99Z,KAAO4J,KAAKisJ,KAAKioQ,EAAO99Z,MAC/B89Z,EAAO99Z,MAAQ,EACArQ,KAAKgC,IAAI,cAGtBmsa,EtB8LH,SAAmBA,EAAQi2D,GAChC,OAAKj2D,GAAWi2D,GAIX,IAAcj2D,EAAQi2D,GAGpB,CACLl0d,KAAM+J,KAAKE,IAAIg0Z,EAAOj+Z,KAAMk0d,EAAWl0d,MACvCE,KAAM6J,KAAKE,IAAIg0Z,EAAO/9Z,KAAMg0d,EAAWh0d,MACvCD,KAAM8J,KAAKC,IAAIi0Z,EAAOh+Z,KAAMi0d,EAAWj0d,MACvCE,KAAM4J,KAAKC,IAAIi0Z,EAAO99Z,KAAM+zd,EAAW/zd,OAVhC,IAYX,CsB5MmBq0d,CAAUv2D,EAAQi2D,MAIjC,OAAOj2D,CACT,EAKA/ga,EAAOlN,UAAUm/d,eAAiB,SAAU1vd,GACpB3P,KAAKgC,IAAI,mBACfzB,KAAKoP,EAIvB,EAEAvC,EAAOlN,UAAUgke,YAAc,WAC7B,IAAIS,EAAY3ke,KAAKgC,IAAI,aACrB2ie,KAEF,UAAoBA,GACpB3ke,KAAKkC,IAAI,YAAa,MACtBlC,KAAKkC,IAAI,kBAAmB,IAEhC,EAEAkL,EAAOlN,UAAU4H,KAAO,WACtB,IAAI68d,EAAY3ke,KAAKgC,IAAI,aACrBhC,KAAKgC,IAAI,aAAe2ie,GAG5B3ke,KAAK4ke,YACP,EAEAx3d,EAAOlN,UAAU2ke,SAAW,WAC1B,IAAI1xc,EAAUnzB,KAAKgC,IAAI,WACnB2N,EAAU3P,KAAKgC,IAAI,MACnB6N,EAAW7P,KAAKsQ,cACpB6iB,EAAQ+1O,UAAU,EAAG,EAAGv5P,EAAQ5B,MAAO4B,EAAQ3B,QAC/Cswd,IAAoBnrc,EAASnzB,MAC7Bu+d,IAAaprc,EAAStjB,GAEtB7P,KAAKkC,IAAI,kBAAmB,GAC9B,EAEAkL,EAAOlN,UAAU4ke,YAAc,WAC7B,IAAI3xc,EAAUnzB,KAAKgC,IAAI,WACnB80L,EAAkB92L,KAAKgC,IAAI,mBAC3B6N,EAAW7P,KAAKsQ,cAChB69Z,EAASnua,KAAKmke,oBAGdh2D,GAEFh7Y,EAAQ+1O,UAAUilK,EAAOj+Z,KAAMi+Z,EAAO/9Z,KAAM+9Z,EAAOh+Z,KAAOg+Z,EAAOj+Z,KAAMi+Z,EAAO99Z,KAAO89Z,EAAO/9Z,MAE5F+iB,EAAQtQ,OACRsQ,EAAQuhO,YACRvhO,EAAQ3S,KAAK2tZ,EAAOj+Z,KAAMi+Z,EAAO/9Z,KAAM+9Z,EAAOh+Z,KAAOg+Z,EAAOj+Z,KAAMi+Z,EAAO99Z,KAAO89Z,EAAO/9Z,MACvF+iB,EAAQle,OACRqpd,IAAoBnrc,EAASnzB,MAE7By+d,IAAaz+d,KAAM6P,EAAUs+Z,GAE7BowD,IAAaprc,EAAStjB,EAAUs+Z,GAChCh7Y,EAAQrQ,WACCg0K,EAAgBj2L,QAMzBi+d,IAAahoS,IAEf,UAAKA,GAAiB,SAAUnnL,GAC1BA,EAAQ3N,IAAI,eAGd2N,EAAQzN,IAAI,cAAc,EAE9B,IACAlC,KAAKkC,IAAI,kBAAmB,GAC9B,EAEAkL,EAAOlN,UAAU0ke,WAAa,WAC5B,IAAInke,EAAQT,KACR2ke,EAAY3ke,KAAKgC,IAAI,aACpB2ie,IACHA,GAAY,WAAsB,WAC5Blke,EAAMuB,IAAI,gBACZvB,EAAMqke,cAENrke,EAAMoke,WAERpke,EAAMyB,IAAI,YAAa,KACzB,IACAlC,KAAKkC,IAAI,YAAayie,GAE1B,EACAv3d,EAAOlN,UAAUs+d,SAAW,WAAa,EACzCpxd,EAAOlN,UAAUiP,UAAY,WAC3B,IAAI3E,EAAKxK,KAAKgC,IAAI,MAKlBwI,EAAGuD,MAAQ,EACXvD,EAAGwD,OAAS,EACZxD,EAAG4E,WAAWC,YAAY7E,EAC5B,EACO4C,CACT,CAnO0B,CAmOxB,IAAA23d,gBACF,QCrOW,IAAU,SCNVC,IAAgB,CACzBxkd,KAAM,OACNC,OAAQ,SACRyV,KAAM,OACNrvB,KAAM,OACN40S,OAAQ,OACR56R,KAAM,OACNokd,SAAU,WACVrlR,QAAS,UACT/2F,MAAO,QACP7vF,QAAS,UACTqiF,IAAK,iBAEI6pX,IAAe,CACxBvwd,QAAS,UACT8nP,UAAW,OACX7gN,KAAM,OACNioC,YAAa,eACbk5K,YAAa,SACbxD,cAAe,iBACfp4O,OAAQ,SACRlW,EAAG,IACHC,EAAG,IACHgU,EAAG,IACH0C,GAAI,KACJC,GAAI,KACJ9T,MAAO,QACPC,OAAQ,SACRoU,GAAI,KACJE,GAAI,KACJD,GAAI,KACJE,GAAI,KACJy6O,QAAS,iBACTE,SAAU,kBACVz9O,UAAW,eACXuqb,SAAU,mBACVzsM,eAAgB,oBAChBJ,WAAY,oBACZn8O,KAAM,OACNF,SAAU,YACV6S,UAAW,aACXC,YAAa,eACbF,WAAY,cACZD,WAAY,cACZkqc,WAAY,eACZC,SAAU,aACV/2d,KAAM,IACNinQ,MAAO,QACPp6P,GAAI,KACJ5H,MAAO,QACPogQ,oBAAqB,uBC5ChB,SAASi5N,IAAiBx8d,GAC/B,OAAOgC,SAASg7O,gBAAgB,6BAA8Bh9O,EAChE,CAMO,SAAS,IAAUlD,GACxB,IAAIkD,EAAOq8d,IAAcv/d,EAAMkD,MAC3BiJ,EAASnM,EAAMsH,YACnB,IAAKpE,EACH,MAAM,IAAIs/B,MAAM,YAAcxiC,EAAMkD,KAAO,4BAE7C,IAAIgH,EAAUw1d,IAAiBx8d,GAO/B,GANIlD,EAAMzD,IAAI,QACZ2N,EAAQ+D,GAAKjO,EAAMzD,IAAI,OAEzByD,EAAMvD,IAAI,KAAMyN,GAChBlK,EAAMvD,IAAI,QAAS,CAAC,GAEhB0P,EAAQ,CACV,IAAIxC,EAAawC,EAAO5P,IAAI,MACxBoN,IAIFA,EAAawC,EAAOlE,YACpBkE,EAAO1P,IAAI,KAAMkN,IAJjBA,EAAWzB,YAAYgC,EAO3B,CACA,OAAOA,CACT,CAMO,SAASy1d,IAAQz1d,EAAS01d,GAC/B,IAAI76d,EAAKmF,EAAQ3N,IAAI,MACjBgyE,GAAY,UAAQxpE,EAAGqF,UAAU0C,KAAK8yd,GAEtChyW,EAAW1oH,SAASwoH,yBACxBn/C,EAAU5rE,SAAQ,SAAU0H,GAC1BujH,EAAS1lH,YAAYmC,EACvB,IACAtF,EAAGmD,YAAY0lH,EACjB,CClCO,SAASw1I,IAAau8B,GAC3B,IAAIj0R,EAASi0R,EAAMh/R,OAAO+K,OAC1B,GAAIA,EAAQ,CAGV,IAFA,IAAI3G,EAAK46R,EAAMzjS,IAAI6I,GACfsJ,EAAY,GACP5S,EAAI,EAAGA,EAAI,EAAGA,GAAK,EAC1B4S,EAAUvT,KAAK4Q,EAAOjQ,GAAK,IAAMiQ,EAAOjQ,EAAI,KAGZ,KADlC4S,EAAYA,EAAUuV,KAAK,MACbnW,QAAQ,OACpB1I,EAAG8/C,aAAa,YAAa,UAAYx2C,EAAY,KAErDkxH,QAAQib,KAAK,kBAAmB9uI,EAEpC,CACF,CACO,SAASgF,IAAQivR,EAAOjyQ,GAC7B,IAAIle,EAAOmwR,EAAMlwR,UACb1K,EAAK46R,EAAMpjS,IAAI,MACnB,GAAKiT,GAEE,GAAIA,IAASzK,EAAG86d,aAAa,aAAc,CAChD,IAAUrwd,GACVA,EAAK6qd,WAAW3sc,GAChB,IAAIzf,EAAKyf,EAAQoyc,QAAQtwd,GACzBzK,EAAG8/C,aAAa,YAAa,QAAU52C,EAAK,IAC9C,OANElJ,EAAGggD,gBAAgB,YAOvB,CC7CO,SAAS,IAAar3B,EAAStjB,GACpCA,EAASzH,SAAQ,SAAU0H,GACzBA,EAAMhI,KAAKqrB,EACb,GACF,CAMO,SAAS,IAAexjB,EAASiF,GAEtC,IAAIrN,EAASoI,EAAQ3N,IAAI,UAEzB,GAAIuF,GAAUA,EAAOvF,IAAI,YAAa,CACpC,IAAImxB,EAAU5rB,EAAOvF,IAAI,WACrB8K,EAAW6C,EAAQ5C,YACnBy4d,EAAiB14d,EAAWA,EAASwD,cAAgB,CAAC/I,GACtDiD,EAAKmF,EAAQ3N,IAAI,MACrB,GAAmB,WAAf4S,EAGF,GAFkBjF,EAAQ3N,IAAI,eAEb,CACf,IAAIyje,EAAaj7d,GAAMA,EAAG4E,WACtBs2d,EAASD,GAAcA,EAAWr2d,WAClCq2d,GAAcC,GAChBA,EAAOr2d,YAAYo2d,EAEvB,MAAWj7d,GAAMA,EAAG4E,YAClB5E,EAAG4E,WAAWC,YAAY7E,QAEvB,GAAmB,SAAfoK,EACTpK,EAAG8/C,aAAa,aAAc,gBACzB,GAAmB,SAAf11C,EACTpK,EAAG8/C,aAAa,aAAc,eACzB,GAAmB,WAAf11C,GFuBR,SAAgBjF,EAASg2d,GAC9B,IAAIv2d,EAAaO,EAAQP,WACrBguR,EAAW38P,MAAMnH,KAAKlqB,EAAWwwL,YAAYrvL,QAEjD,SAAUmwC,GACR,OAAyB,IAAlBA,EAAK0wB,UAAkD,SAAhC1wB,EAAKw0I,SAASt2K,aAC9C,IAEIlW,EAAS00R,EAASuoM,GAClBC,EAAexoM,EAASlqR,QAAQvD,GAEpC,GAAIjH,GAEF,GAAIk9d,EAAeD,EACjBv2d,EAAW6gE,aAAatgE,EAASjH,QAC5B,GAAIk9d,EAAeD,EAAa,CAGrC,IAAIE,EAAazoM,EAASuoM,EAAc,GAEpCE,EACFz2d,EAAW6gE,aAAatgE,EAASk2d,GAGjCz2d,EAAWzB,YAAYgC,EAE3B,OAEAP,EAAWzB,YAAYgC,EAE3B,CEpDMkJ,CAAOrO,EAAIg7d,EAAetyd,QAAQvD,SAC7B,GAAmB,SAAfiF,EAAuB,CAChC,IAAIkxd,EAAan2d,EAAQ3N,IAAI,YACzB8je,GAAcA,EAAWjle,QAC3Buke,IAAQz1d,GAAS,SAAUwO,EAAG8E,GAC5B,OAAO6id,EAAW5yd,QAAQiL,GAAK2nd,EAAW5yd,QAAQ+P,GAAK,EAAI,CAC7D,GAEJ,KAA0B,UAAfrO,EAELpK,IACFA,EAAG+2Y,UAAY,IAEO,WAAf3sY,EACTi0P,IAAal5P,GACW,SAAfiF,EACTuB,IAAQxG,EAASwjB,GACO,SAAfve,GAEe,QAAfA,GACTjF,EAAQ7H,KAAKqrB,EAEjB,CACF,CCrDA,IAAI,IAAqB,SAAUzxB,GAEjC,SAAS+9E,IACP,OAAkB,OAAX/9E,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CA8EA,OAjFA,UAAUy/E,EAAO/9E,GAKjB+9E,EAAMv/E,UAAUoZ,cAAgB,WAC9B,OAAO,CACT,EACAmmE,EAAMv/E,UAAUwN,UAAY,WAC1B,IAAIiC,EAAUw1d,IAAiB,KAC/Bnle,KAAKkC,IAAI,KAAMyN,GACf,IAAIiC,EAAS5R,KAAK+M,YAClB,GAAI6E,EAAQ,CACV,IAAIxC,EAAawC,EAAO5P,IAAI,MACxBoN,IAIFA,EAAawC,EAAOlE,YACpBkE,EAAO1P,IAAI,KAAMkN,IAJjBA,EAAWzB,YAAYgC,EAO3B,CACA,OAAOA,CACT,EAEA8vE,EAAMv/E,UAAU4U,iBAAmB,SAAUK,GAC3CzT,EAAOxB,UAAU4U,iBAAiBlT,KAAK5B,KAAMmV,GAC7C,IAAI5N,EAASvH,KAAKgC,IAAI,UAEtB,GAAIuF,GAAUA,EAAOvF,IAAI,YAAa,CACpC,IAAImxB,EAAU5rB,EAAOvF,IAAI,WACzBhC,KAAK8/d,WAAW3sc,EAAShe,EAC3B,CACF,EAKAsqE,EAAMv/E,UAAUgO,eAAiB,SAAU0G,GACzC,IAAe5U,KAAM4U,EACvB,EACA6qE,EAAMv/E,UAAUqR,aAAe,WAC7B,OAAO,CACT,EACAkuE,EAAMv/E,UAAU4R,aAAe,WAC7B,OAAO2tE,CACT,EACAA,EAAMv/E,UAAU4H,KAAO,SAAUqrB,GAC/B,IAAItjB,EAAW7P,KAAKsQ,cAChB9F,EAAKxK,KAAKgC,IAAI,MACdhC,KAAKgC,IAAI,aACPwI,GACFA,EAAG4E,WAAWC,YAAY7E,IAGvBA,GACHxK,KAAK0N,YAEPyI,IAAQnW,KAAMmzB,GACdnzB,KAAK8/d,WAAW3sc,GACZtjB,EAAShP,QACX,IAAasyB,EAAStjB,GAG5B,EAMA4vE,EAAMv/E,UAAU4/d,WAAa,SAAU3sc,EAAShe,GAC9C,IAAI7O,EAAQtG,KAAKoG,OACboE,EAAKxK,KAAKgC,IAAI,OAClB,UAAKmT,GAAe7O,GAAO,SAAUnE,EAAOiE,GACtC8+d,IAAa9+d,IACfoE,EAAG8/C,aAAa46a,IAAa9+d,GAAOjE,EAExC,IACA0mQ,IAAa7oQ,KACf,EACOy/E,CACT,CAnFyB,CAmFvB,IAAApmE,eACF,QCnFI,IAAyB,SAAU3X,GAErC,SAAS2qd,IACP,IAAI5rd,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAIhE,OAHAS,EAAMkI,KAAO,MACblI,EAAMsle,SAAU,EAChBtle,EAAMule,WAAY,EACXvle,CACT,CAmOA,OA1OA,UAAU4rd,EAAW3qd,GAQrB2qd,EAAUnsd,UAAUkU,gBAAkB,WACpC,IAAI9N,EAAQ5E,EAAOxB,UAAUkU,gBAAgBxS,KAAK5B,MAElD,OAAO,WAAS,UAAS,CAAC,EAAGsG,GAAQ,CACnCmZ,UAAW,EACXqpb,gBAAiB,EACjBvvM,cAAe,EACf11K,YAAa,GAEjB,EAEAwoY,EAAUnsd,UAAU4U,iBAAmB,SAAUK,GAC/CzT,EAAOxB,UAAU4U,iBAAiBlT,KAAK5B,KAAMmV,GAC7C,IAAI5N,EAASvH,KAAKgC,IAAI,UAEtB,GAAIuF,GAAUA,EAAOvF,IAAI,YAAa,CACpC,IAAImxB,EAAU5rB,EAAOvF,IAAI,WACzBhC,KAAK8H,KAAKqrB,EAAShe,EACrB,CACF,EACAk3c,EAAUnsd,UAAUqR,aAAe,WACjC,OAAO,CACT,EACA86c,EAAUnsd,UAAU4R,aAAe,WACjC,OAAO,GACT,EAKAu6c,EAAUnsd,UAAUgO,eAAiB,SAAU0G,GAC7C,IAAe5U,KAAM4U,EACvB,EACAy3c,EAAUnsd,UAAUwZ,cAAgB,WAClC,IAAIlP,EAAKxK,KAAKgC,IAAI,MACd8M,EAAO,KAEX,GAAItE,EACFsE,EAAOtE,EAAGyF,cACL,CACL,IAAIowd,GAAa,MAAAD,eAAcpge,KAAKgC,IAAI,SACpCq+d,IACFvxd,EAAOuxd,EAAWrge,MAEtB,CACA,GAAI8O,EAAM,CACR,IAAI7D,EAAI6D,EAAK7D,EACXC,EAAI4D,EAAK5D,EACT6C,EAAQe,EAAKf,MACbC,EAASc,EAAKd,OACZyR,EAAYzf,KAAKmge,kBACjB3yC,EAAY/ta,EAAY,EACxBvP,EAAOjF,EAAIuib,EACXp9a,EAAOlF,EAAIsib,EAGf,MAAO,CACLvib,EAAGiF,EACHhF,EAAGkF,EACHF,KAAMA,EACNE,KAAMA,EACND,KAPSlF,EAAI8C,EAAQy/a,EAQrBn9a,KAPSnF,EAAI8C,EAASw/a,EAQtBz/a,MAAOA,EAAQ0R,EACfzR,OAAQA,EAASyR,EAErB,CACA,MAAO,CACLxU,EAAG,EACHC,EAAG,EACHgF,KAAM,EACNE,KAAM,EACND,KAAM,EACNE,KAAM,EACNtC,MAAO,EACPC,OAAQ,EAEZ,EACAq+c,EAAUnsd,UAAUm7d,OAAS,WAC3B,IAAIl6d,EAAKnB,KAAKoG,OACZw1C,EAAOz6C,EAAGy6C,KACV6gN,EAAYt7P,EAAGs7P,UACjB,OAAQ7gN,GAAQ6gN,GAAaz8P,KAAKoV,gBAAkBpV,KAAK+le,OAC3D,EACA1Z,EAAUnsd,UAAUk7d,SAAW,WAC7B,IAAIj6d,EAAKnB,KAAKoG,OACZ+a,EAAShgB,EAAGggB,OACZ47O,EAAc57P,EAAG47P,YACnB,OAAQ57O,GAAU47O,IAAgB/8P,KAAKgme,SACzC,EACA3Z,EAAUnsd,UAAU4H,KAAO,SAAUqrB,EAAShe,GAC5C,IAAI3K,EAAKxK,KAAKgC,IAAI,MACdhC,KAAKgC,IAAI,aACPwI,GACFA,EAAG4E,WAAWC,YAAY7E,IAGvBA,GACH,IAAUxK,MAEZmW,IAAQnW,KAAMmzB,GACdnzB,KAAK8/d,WAAW3sc,EAAShe,GACzBnV,KAAKime,OAAO9yc,EAAShe,GACrBnV,KAAKwge,cAAcrtc,EAAShe,GAC5BnV,KAAK8T,UAAUqB,GAEnB,EAOAk3c,EAAUnsd,UAAU4/d,WAAa,SAAU3sc,EAAShe,GAAc,EAElEk3c,EAAUnsd,UAAUsge,cAAgB,SAAUrtc,EAAShe,GACrD,IAAI7O,EAAQ6O,GAAenV,KAAKoG,OAC5Bw1C,EAAOt1C,EAAMs1C,KACf6gN,EAAYn2P,EAAMm2P,UAClBt7O,EAAS7a,EAAM6a,OACf47O,EAAcz2P,EAAMy2P,YACpBl5K,EAAcv9E,EAAMu9E,YACpB01K,EAAgBjzP,EAAMizP,cACtB95O,EAAYnZ,EAAMmZ,UAChBjV,EAAKxK,KAAKgC,IAAI,MACdhC,KAAK+le,UAEF5wd,EAEM,SAAU7O,EACnBtG,KAAKkme,UAAU/yc,EAAS,OAAQyoB,GACvB,cAAet1C,GAExBtG,KAAKkme,UAAU/yc,EAAS,OAAQspO,GALhCz8P,KAAKkme,UAAU/yc,EAAS,OAAQyoB,GAAQ6gN,GAOtC54K,GACFr5E,EAAG8/C,aAAa46a,IAA0B,YAAGrhZ,IAG7C7jF,KAAKgme,WAAavmd,EAAY,IAC3BtK,EAEM,WAAY7O,EACrBtG,KAAKkme,UAAU/yc,EAAS,SAAUhS,GACzB,gBAAiB7a,GAE1BtG,KAAKkme,UAAU/yc,EAAS,SAAU4pO,GALlC/8P,KAAKkme,UAAU/yc,EAAS,SAAUhS,GAAU47O,GAO1CxD,GACF/uP,EAAG8/C,aAAa46a,IAA4B,cAAG3rO,GAE7C95O,GACFjV,EAAG8/C,aAAa46a,IAAwB,UAAGzld,GAGjD,EACA4sc,EAAUnsd,UAAUgme,UAAY,SAAU/yc,EAAS/sB,EAAMjE,GACvD,IAAIqI,EAAKxK,KAAKgC,IAAI,MAClB,GAAKG,EAML,GADAA,EAAQA,EAAM0xB,OACV,uBAAuBvuB,KAAKnD,IAC1BuR,EAAKyf,EAAQ3f,KAAK,WAAYrR,MAEhCuR,EAAKyf,EAAQgzc,YAAYhke,IAE3BqI,EAAG8/C,aAAa46a,IAAa9+d,GAAO,QAAUsN,EAAK,UAC9C,GAAI,mBAAmBpO,KAAKnD,GAAQ,CACzC,IAAIuR,KAAKyf,EAAQ3f,KAAK,UAAWrR,MAE/BuR,EAAKyf,EAAQizc,WAAWjke,IAE1BqI,EAAG8/C,aAAa46a,IAAa9+d,GAAO,QAAUsN,EAAK,IACrD,MACElJ,EAAG8/C,aAAa46a,IAAa9+d,GAAOjE,QAjBpCqI,EAAG8/C,aAAa46a,IAAa9+d,GAAO,OAmBxC,EACAimd,EAAUnsd,UAAU+le,OAAS,SAAU9yc,EAAShe,GAC9C,IAAI7O,EAAQtG,KAAKoG,OACbjF,EAAKgU,GAAe7O,EACtBgU,EAAgBnZ,EAAGmZ,cACnBC,EAAgBpZ,EAAGoZ,cACnBF,EAAalZ,EAAGkZ,WAChBD,EAAcjZ,EAAGiZ,aACfE,GAAiBC,GAAiBF,GAAcD,IH5MjD,SAAmBgrR,EAAOjyQ,GAC/B,IAAI3oB,EAAK46R,EAAMzjS,IAAI6I,GACflE,EAAQ8+R,EAAMh/R,OACdzE,EAAM,CACRiL,GAAItG,EAAMgU,cACVzN,GAAIvG,EAAMiU,cACV0iD,KAAM32D,EAAM+T,WACZ05B,MAAOztC,EAAM8T,aAEf,GAAKzY,EAAIiL,IAAOjL,EAAIkL,IAAOlL,EAAIs7D,MAASt7D,EAAIoyC,MAErC,CACL,IAAIrgC,EAAKyf,EAAQ3f,KAAK,SAAU7R,GAC3B+R,IACHA,EAAKyf,EAAQkzc,UAAU1ke,IAEzB6I,EAAG8/C,aAAa,SAAU,QAAU52C,EAAK,IAC3C,MAPElJ,EAAGggD,gBAAgB,SAQvB,CG2LM87a,CAAUtme,KAAMmzB,EAEpB,EACAk5b,EAAUnsd,UAAU4T,UAAY,SAAUqB,GACxC,IAAI7O,EAAQtG,KAAKoG,QACH+O,GAAe7O,GAAO6K,QAElC03P,IAAa7oQ,KAEjB,EACAqsd,EAAUnsd,UAAU0a,UAAY,SAAU7F,EAAMC,GAC9C,OAAOhV,KAAK67P,cAAc9mP,EAAMC,EAClC,EACAq3c,EAAUnsd,UAAU27P,cAAgB,SAAU9mP,EAAMC,GAClD,IAAIxK,EAAKxK,KAAKgC,IAAI,MAEd8M,EADS9O,KAAKgC,IAAI,UACJA,IAAI,MAAM+M,wBACxB5D,EAAU4J,EAAOjG,EAAKE,KACtB5D,EAAU4J,EAAOlG,EAAKG,IACtBU,EAAUhF,SAAS47d,iBAAiBp7d,EAASC,GACjD,SAAIuE,IAAWA,EAAQ62d,YAAYh8d,GAIrC,EAKA6hd,EAAUnsd,UAAUige,gBAAkB,WACpC,IAAIh/d,EAAKnB,KAAKsG,MACZmZ,EAAYte,EAAGse,UACfqpb,EAAkB3nc,EAAG2nc,gBACvB,OAAI9oc,KAAKo7d,WACA37c,EAAYqpb,EAEd,CACT,EACOujB,CACT,CA5O6B,CA4O3B,IAAA9yc,eACF,QC9OI,IAAsB,SAAU7X,GAElC,SAASuhb,IACP,IAAIxib,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAIhE,OAHAS,EAAMkI,KAAO,SACblI,EAAMsle,SAAU,EAChBtle,EAAMule,WAAY,EACXvle,CACT,CAqBA,OA5BA,UAAUwib,EAAQvhb,GAQlBuhb,EAAO/ib,UAAUkU,gBAAkB,WACjC,IAAI9N,EAAQ5E,EAAOxB,UAAUkU,gBAAgBxS,KAAK5B,MAClD,OAAO,WAAS,UAAS,CAAC,EAAGsG,GAAQ,CACnC2E,EAAG,EACHC,EAAG,EACHgU,EAAG,GAEP,EACA+ja,EAAO/ib,UAAU4/d,WAAa,SAAU3sc,EAAShe,GAC/C,IAAI7O,EAAQtG,KAAKoG,OACboE,EAAKxK,KAAKgC,IAAI,OAClB,UAAKmT,GAAe7O,GAAO,SAAUnE,EAAOiE,GAE7B,MAATA,GAAyB,MAATA,EAClBoE,EAAG8/C,aAAa,IAAMlkD,EAAMjE,GACnB+ie,IAAa9+d,IACtBoE,EAAG8/C,aAAa46a,IAAa9+d,GAAOjE,EAExC,GACF,EACO8gb,CACT,CA9B0B,CA8BxB,KACF,QC/BIwjD,IAAmB,SAAU/ke,GAE/B,SAAS+ke,IACP,IAAIhme,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAIhE,OAHAS,EAAMkI,KAAO,MACblI,EAAMsle,SAAU,EAChBtle,EAAMule,WAAY,EACXvle,CACT,CAyBA,OAhCA,UAAUgme,EAAK/ke,GAQf+ke,EAAIvme,UAAU4/d,WAAa,SAAU3sc,EAAShe,GAC5C,IAAI7O,EAAQtG,KAAKoG,OACboE,EAAKxK,KAAKgC,IAAI,MAMlB,IALA,UAAKmT,GAAe7O,GAAO,SAAUnE,EAAOiE,GACtC8+d,IAAa9+d,IACfoE,EAAG8/C,aAAa46a,IAAa9+d,GAAOjE,EAExC,IAC6B,mBAAlBmE,EAAY,KAAkB,CACvC,IAAIqJ,EAAUrJ,EAAY,KAAE1E,KAAK5B,KAAMsG,GACvC,GAAIqJ,aAAmBwE,SAAWxE,aAAmByzB,aAAc,CAEjE,IADA,IAAIvzB,EAAWrF,EAAGo1L,WACT1+L,EAAI2O,EAAShP,OAAS,EAAGK,GAAK,EAAGA,IACxCsJ,EAAG6E,YAAYQ,EAAS3O,IAE1BsJ,EAAGmD,YAAYgC,EACjB,MACEnF,EAAG+2Y,UAAY5xY,CAEnB,MACEnF,EAAG+2Y,UAAYj7Y,EAAY,IAE/B,EAEOmge,CACT,CAlCuB,CAkCrB,KACF,QCnCI,IAAuB,SAAU/ke,GAEnC,SAASq/d,IACP,IAAItge,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAIhE,OAHAS,EAAMkI,KAAO,UACblI,EAAMsle,SAAU,EAChBtle,EAAMule,WAAY,EACXvle,CACT,CAsBA,OA7BA,UAAUsge,EAASr/d,GAQnBq/d,EAAQ7ge,UAAUkU,gBAAkB,WAClC,IAAI9N,EAAQ5E,EAAOxB,UAAUkU,gBAAgBxS,KAAK5B,MAClD,OAAO,WAAS,UAAS,CAAC,EAAGsG,GAAQ,CACnC2E,EAAG,EACHC,EAAG,EACH0W,GAAI,EACJC,GAAI,GAER,EACAk/c,EAAQ7ge,UAAU4/d,WAAa,SAAU3sc,EAAShe,GAChD,IAAI7O,EAAQtG,KAAKoG,OACboE,EAAKxK,KAAKgC,IAAI,OAClB,UAAKmT,GAAe7O,GAAO,SAAUnE,EAAOiE,GAE7B,MAATA,GAAyB,MAATA,EAClBoE,EAAG8/C,aAAa,IAAMlkD,EAAMjE,GACnB+ie,IAAa9+d,IACtBoE,EAAG8/C,aAAa46a,IAAa9+d,GAAOjE,EAExC,GACF,EACO4+d,CACT,CA/B2B,CA+BzB,KACF,QChCI,IAAqB,SAAUr/d,GAEjC,SAASgnE,IACP,IAAIjoE,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAIhE,OAHAS,EAAMkI,KAAO,QACblI,EAAMsle,SAAU,EAChBtle,EAAMule,WAAY,EACXvle,CACT,CA8DA,OArEA,UAAUioE,EAAOhnE,GAQjBgnE,EAAMxoE,UAAUkU,gBAAkB,WAChC,IAAI9N,EAAQ5E,EAAOxB,UAAUkU,gBAAgBxS,KAAK5B,MAClD,OAAO,WAAS,UAAS,CAAC,EAAGsG,GAAQ,CACnC2E,EAAG,EACHC,EAAG,EACH6C,MAAO,EACPC,OAAQ,GAEZ,EACA06D,EAAMxoE,UAAU4/d,WAAa,SAAU3sc,EAAShe,GAC9C,IAAI1U,EAAQT,KACRsG,EAAQtG,KAAKoG,OACboE,EAAKxK,KAAKgC,IAAI,OAClB,UAAKmT,GAAe7O,GAAO,SAAUnE,EAAOiE,GAC7B,QAATA,EACF3F,EAAMyge,UAAU56d,EAAMw6E,KACbokZ,IAAa9+d,IACtBoE,EAAG8/C,aAAa46a,IAAa9+d,GAAOjE,EAExC,GACF,EACAumE,EAAMxoE,UAAU2U,QAAU,SAAU5S,EAAME,GACxCnC,KAAKsG,MAAMrE,GAAQE,EACN,QAATF,GACFjC,KAAKkhe,UAAU/+d,EAEnB,EACAumE,EAAMxoE,UAAUghe,UAAY,SAAUpgZ,GACpC,IAAIx6E,EAAQtG,KAAKoG,OACboE,EAAKxK,KAAKgC,IAAI,MAClB,IAAI,UAAS8+E,GACXt2E,EAAG8/C,aAAa,OAAQw2B,QACnB,GAAIA,aAAe59E,OAAOwlE,MAC1BpiE,EAAMyH,QACTvD,EAAG8/C,aAAa,QAASw2B,EAAI/yE,OAC7B/N,KAAKoG,KAAK,QAAS06E,EAAI/yE,QAEpBzH,EAAM0H,SACTxD,EAAG8/C,aAAa,SAAUw2B,EAAI9yE,QAC9BhO,KAAKoG,KAAK,SAAU06E,EAAI9yE,SAE1BxD,EAAG8/C,aAAa,OAAQw2B,EAAI38C,UACvB,GAAI28C,aAAe8nL,cAAe,UAAS9nL,EAAIo0G,WAA4C,WAA/Bp0G,EAAIo0G,SAAStuK,cAE9Epc,EAAG8/C,aAAa,OAAQw2B,EAAIK,kBACvB,GAAIL,aAAe4lZ,UAAW,CACnC,IAAIn/d,EAASoD,SAAS+Z,cAAc,UACpCnd,EAAO+iD,aAAa,QAAS,GAAKw2B,EAAI/yE,OACtCxG,EAAO+iD,aAAa,SAAU,GAAKw2B,EAAI9yE,QACvCzG,EAAOod,WAAW,MAAM6tQ,aAAa1xM,EAAK,EAAG,GACxCx6E,EAAMyH,QACTvD,EAAG8/C,aAAa,QAAS,GAAKw2B,EAAI/yE,OAClC/N,KAAKoG,KAAK,QAAS06E,EAAI/yE,QAEpBzH,EAAM0H,SACTxD,EAAG8/C,aAAa,SAAU,GAAKw2B,EAAI9yE,QACnChO,KAAKoG,KAAK,SAAU06E,EAAI9yE,SAE1BxD,EAAG8/C,aAAa,OAAQ/iD,EAAO45E,YACjC,CACF,EACOzY,CACT,CAvEyB,CAuEvB,KACF,QCvEI,IAAoB,SAAUhnE,GAEhC,SAASygb,IACP,IAAI1hb,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAIhE,OAHAS,EAAMkI,KAAO,OACblI,EAAMsle,SAAU,EAChBtle,EAAMule,WAAY,EACXvle,CACT,CAqDA,OA5DA,UAAU0hb,EAAMzgb,GAQhBygb,EAAKjib,UAAUkU,gBAAkB,WAC/B,IAAI9N,EAAQ5E,EAAOxB,UAAUkU,gBAAgBxS,KAAK5B,MAClD,OAAO,WAAS,UAAS,CAAC,EAAGsG,GAAQ,CACnC8b,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJo7c,YAAY,EACZC,UAAU,GAEd,EACAz7C,EAAKjib,UAAU4/d,WAAa,SAAU3sc,EAAShe,GAC7C,IAAI7O,EAAQtG,KAAKoG,OACboE,EAAKxK,KAAKgC,IAAI,OAClB,UAAKmT,GAAe7O,GAAO,SAAUnE,EAAOiE,GAC1C,GAAa,eAATA,GAAkC,aAATA,EAC3B,GAAIjE,EAAO,CACT,IAAIuR,GAAK,UAASvR,GAASgxB,EAAQwzc,SAASrge,EAAO4+d,IAAa9+d,IAAS+sB,EAAQyzc,gBAAgBtge,EAAO4+d,IAAa9+d,IACrHoE,EAAG8/C,aAAa46a,IAAa9+d,GAAO,QAAUsN,EAAK,IACrD,MACElJ,EAAGggD,gBAAgB06a,IAAa9+d,SAEzB8+d,IAAa9+d,IACtBoE,EAAG8/C,aAAa46a,IAAa9+d,GAAOjE,EAExC,GACF,EAKAggb,EAAKjib,UAAUyhe,eAAiB,WAC9B,IAAIxge,EAAKnB,KAAKoG,OACZgc,EAAKjhB,EAAGihB,GACRC,EAAKlhB,EAAGkhB,GACRC,EAAKnhB,EAAGmhB,GACRC,EAAKphB,EAAGohB,GACV,OAAO,OAAS1hB,OAAOuhB,EAAIC,EAAIC,EAAIC,EACrC,EAMA4/Z,EAAKjib,UAAUs4B,SAAW,SAAU5yB,GAClC,IAAIzE,EAAKnB,KAAKoG,OACZgc,EAAKjhB,EAAGihB,GACRC,EAAKlhB,EAAGkhB,GACRC,EAAKnhB,EAAGmhB,GACRC,EAAKphB,EAAGohB,GACV,OAAO,OAASmS,QAAQtS,EAAIC,EAAIC,EAAIC,EAAI3c,EAC1C,EACOu8a,CACT,CA9DwB,CA8DtB,KACF,QCxEI,IAAU,CAEZ1ha,OAAQ,SAAgBxV,EAAGC,EAAGgU,GAC5B,MAAO,CAAC,CAAC,IAAKjU,EAAGC,GAAI,CAAC,KAAMgU,EAAG,GAAI,CAAC,IAAKA,EAAGA,EAAG,EAAG,EAAG,EAAO,EAAJA,EAAO,GAAI,CAAC,IAAKA,EAAGA,EAAG,EAAG,EAAG,EAAQ,GAAJA,EAAO,GAClG,EAEAimT,OAAQ,SAAgBl6T,EAAGC,EAAGgU,GAC5B,MAAO,CAAC,CAAC,IAAKjU,EAAIiU,EAAGhU,EAAIgU,GAAI,CAAC,IAAKjU,EAAIiU,EAAGhU,EAAIgU,GAAI,CAAC,IAAKjU,EAAIiU,EAAGhU,EAAIgU,GAAI,CAAC,IAAKjU,EAAIiU,EAAGhU,EAAIgU,GAAI,CAAC,KAC/F,EAEAgub,QAAS,SAAiBjic,EAAGC,EAAGgU,GAC9B,MAAO,CAAC,CAAC,IAAKjU,EAAIiU,EAAGhU,GAAI,CAAC,IAAKD,EAAGC,EAAIgU,GAAI,CAAC,IAAKjU,EAAIiU,EAAGhU,GAAI,CAAC,IAAKD,EAAGC,EAAIgU,GAAI,CAAC,KAC/E,EAEAkub,SAAU,SAAkBnic,EAAGC,EAAGgU,GAChC,IAAIo6c,EAAQp6c,EAAIjF,KAAKoC,IAAI,EAAI,EAAIpC,KAAK+B,IACtC,MAAO,CAAC,CAAC,IAAK/Q,EAAIiU,EAAGhU,EAAIoud,GAAQ,CAAC,IAAKrud,EAAGC,EAAIoud,GAAQ,CAAC,IAAKrud,EAAIiU,EAAGhU,EAAIoud,GAAQ,CAAC,KAClF,EAEAuN,aAAc,SAAsB57d,EAAGC,EAAGgU,GACxC,IAAIo6c,EAAQp6c,EAAIjF,KAAKoC,IAAI,EAAI,EAAIpC,KAAK+B,IACtC,MAAO,CAAC,CAAC,IAAK/Q,EAAIiU,EAAGhU,EAAIoud,GAAQ,CAAC,IAAKrud,EAAIiU,EAAGhU,EAAIoud,GAAQ,CAAC,IAAKrud,EAAGC,EAAIoud,GAAQ,CAAC,KAClF,GAEF,KACEt3d,IAAK,SAAa2G,GAChB,OAAO,IAAQA,EACjB,EACAqW,SAAU,SAAkBrW,EAAM43B,GAChC,IAAQ53B,GAAQ43B,CAClB,EACAptB,OAAQ,SAAgBxK,UACf,IAAQA,EACjB,EACAm+d,OAAQ,WACN,OAAO,GACT,GC5BE,IAAsB,SAAUple,GAElC,SAASkge,IACP,IAAInhe,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAIhE,OAHAS,EAAMkI,KAAO,SACblI,EAAMsle,SAAU,EAChBtle,EAAMule,WAAY,EACXvle,CACT,CAmCA,OA1CA,UAAUmhe,EAAQlge,GAQlBkge,EAAO1he,UAAU4/d,WAAa,SAAU3sc,GAC7BnzB,KAAKgC,IAAI,MACfsoD,aAAa,IAAKtqD,KAAK+me,kBAC5B,EACAnF,EAAO1he,UAAU6me,gBAAkB,WACjC,IAAIhhd,EAAI/lB,KAAK+he,WACb,OAAI,UAAQh8c,GACHA,EAAEiL,KAAI,SAAUnqB,GACrB,OAAOA,EAAKwiB,KAAK,IACnB,IAAGA,KAAK,IAEHtD,CACT,EACA67c,EAAO1he,UAAU6he,SAAW,WAC1B,IAMIp2d,EANArF,EAAQtG,KAAKoG,OACb6E,EAAI3E,EAAM2E,EACZC,EAAI5E,EAAM4E,EAERgU,EAAI5Y,EAAM4Y,GAAK5Y,EAAM0nE,OACrBvlC,EAASniC,EAAMmiC,QAAU,SAO7B,OAJE98B,GADE,UAAW88B,GACJA,EAEA,IAAezmC,IAAIymC,IAMvB98B,EAAOV,EAAGC,EAAGgU,IAHlB8lH,QAAQib,KAAKt0I,EAAS,yBACf,KAGX,EAEAi2d,EAAOoF,eAAiB,IACjBpF,CACT,CA5C0B,CA4CxB,KACF,QCjDI,IAAoB,SAAUlge,GAEhC,SAASq6O,IACP,IAAIt7O,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAIhE,OAHAS,EAAMkI,KAAO,OACblI,EAAMsle,SAAU,EAChBtle,EAAMule,WAAY,EACXvle,CACT,CAgEA,OAvEA,UAAUs7O,EAAMr6O,GAQhBq6O,EAAK77O,UAAUkU,gBAAkB,WAC/B,IAAI9N,EAAQ5E,EAAOxB,UAAUkU,gBAAgBxS,KAAK5B,MAClD,OAAO,WAAS,UAAS,CAAC,EAAGsG,GAAQ,CACnCq3d,YAAY,EACZC,UAAU,GAEd,EACA7hP,EAAK77O,UAAU4/d,WAAa,SAAU3sc,EAAShe,GAC7C,IAAI1U,EAAQT,KACRsG,EAAQtG,KAAKoG,OACboE,EAAKxK,KAAKgC,IAAI,OAClB,UAAKmT,GAAe7O,GAAO,SAAUnE,EAAOiE,GAC1C,GAAa,SAATA,IAAmB,UAAQjE,GAC7BqI,EAAG8/C,aAAa,IAAK7pD,EAAMwme,YAAY9ke,SAClC,GAAa,eAATiE,GAAkC,aAATA,EAClC,GAAIjE,EAAO,CACT,IAAIuR,GAAK,UAASvR,GAASgxB,EAAQwzc,SAASrge,EAAO4+d,IAAa9+d,IAAS+sB,EAAQyzc,gBAAgBtge,EAAO4+d,IAAa9+d,IACrHoE,EAAG8/C,aAAa46a,IAAa9+d,GAAO,QAAUsN,EAAK,IACrD,MACElJ,EAAGggD,gBAAgB06a,IAAa9+d,SAEzB8+d,IAAa9+d,IACtBoE,EAAG8/C,aAAa46a,IAAa9+d,GAAOjE,EAExC,GACF,EACA45O,EAAK77O,UAAU+me,YAAc,SAAU9ke,GACrC,IAAI+qI,EAAW/qI,EAAM6uB,KAAI,SAAUnqB,GACjC,OAAOA,EAAKwiB,KAAK,IACnB,IAAGA,KAAK,IACR,OAAK6jH,EAASh6H,QAAQ,OACb,GAEFg6H,CACT,EAOA6uG,EAAK77O,UAAUyhe,eAAiB,WAC9B,IAAIn3d,EAAKxK,KAAKgC,IAAI,MAClB,OAAOwI,EAAKA,EAAGm3d,iBAAmB,IACpC,EAMA5lP,EAAK77O,UAAUs4B,SAAW,SAAU5yB,GAClC,IAAI4E,EAAKxK,KAAKgC,IAAI,MACds1B,EAAct3B,KAAK2he,iBAEvB,GAAoB,IAAhBrqc,EACF,OAAO,KAET,IAAItsB,EAAQR,EAAKA,EAAG08d,iBAAiBthe,EAAQ0xB,GAAe,KAC5D,OAAOtsB,EAAQ,CACbC,EAAGD,EAAMC,EACTC,EAAGF,EAAME,GACP,IACN,EACO6wO,CACT,CAzEwB,CAyEtB,KACF,QCtEI,IAAuB,SAAUr6O,GAEnC,SAASk8Q,IACP,IAAIn9Q,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAIhE,OAHAS,EAAMkI,KAAO,UACblI,EAAMsle,SAAU,EAChBtle,EAAMule,WAAY,EACXvle,CACT,CAcA,OArBA,UAAUm9Q,EAASl8Q,GAQnBk8Q,EAAQ19Q,UAAU4/d,WAAa,SAAU3sc,EAAShe,GAChD,IAAI7O,EAAQtG,KAAKoG,OACboE,EAAKxK,KAAKgC,IAAI,OAClB,UAAKmT,GAAe7O,GAAO,SAAUnE,EAAOiE,GAC7B,WAATA,IAAqB,UAAQjE,IAAUA,EAAMtB,QAAU,EACzD2J,EAAG8/C,aAAa,SAAUnoD,EAAM6uB,KAAI,SAAUhmB,GAC5C,OAAOA,EAAM,GAAK,IAAMA,EAAM,EAChC,IAAGqe,KAAK,MACC67c,IAAa9+d,IACtBoE,EAAG8/C,aAAa46a,IAAa9+d,GAAOjE,EAExC,GACF,EACOy7Q,CACT,CAvB2B,CAuBzB,KACF,QC1BIupN,IAAwB,SAAUzle,GAEpC,SAASyle,IACP,IAAI1me,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAIhE,OAHAS,EAAMkI,KAAO,WACblI,EAAMsle,SAAU,EAChBtle,EAAMule,WAAY,EACXvle,CACT,CAqHA,OA5HA,UAAU0me,EAAUzle,GAQpByle,EAASjne,UAAUkU,gBAAkB,WACnC,IAAI9N,EAAQ5E,EAAOxB,UAAUkU,gBAAgBxS,KAAK5B,MAClD,OAAO,WAAS,UAAS,CAAC,EAAGsG,GAAQ,CACnCq3d,YAAY,EACZC,UAAU,GAEd,EAEAuJ,EAASjne,UAAU2Q,aAAe,SAAU5O,EAAME,EAAO2O,GACvDpP,EAAOxB,UAAU2Q,aAAajP,KAAK5B,KAAMiC,EAAME,EAAO2O,IACpB,IAA9B,CAAC,UAAUoC,QAAQjR,IACrBjC,KAAKmje,aAET,EACAgE,EAASjne,UAAUije,YAAc,WAC/Bnje,KAAKkC,IAAI,cAAe,MACxBlC,KAAKkC,IAAI,SAAU,KACrB,EACAile,EAASjne,UAAU4/d,WAAa,SAAU3sc,EAAShe,GACjD,IAAI7O,EAAQtG,KAAKoG,OACboE,EAAKxK,KAAKgC,IAAI,OAClB,UAAKmT,GAAe7O,GAAO,SAAUnE,EAAOiE,GAC7B,WAATA,IAAqB,UAAQjE,IAAUA,EAAMtB,QAAU,EACzD2J,EAAG8/C,aAAa,SAAUnoD,EAAM6uB,KAAI,SAAUhmB,GAC5C,OAAOA,EAAM,GAAK,IAAMA,EAAM,EAChC,IAAGqe,KAAK,MACC67c,IAAa9+d,IACtBoE,EAAG8/C,aAAa46a,IAAa9+d,GAAOjE,EAExC,GACF,EAKAgle,EAASjne,UAAUyhe,eAAiB,WAClC,IAAIjhd,EAAS1gB,KAAKoG,OAAOsa,OAErB4W,EAAct3B,KAAKgC,IAAI,eAC3B,OAAK,UAAMs1B,IAGXt3B,KAAKkC,IAAI,cAAe,OAAarB,OAAO6f,IACrC1gB,KAAKgC,IAAI,gBAHPs1B,CAIX,EAMA6vc,EAASjne,UAAUs4B,SAAW,SAAU5yB,GACtC,IAOI68d,EACAz6d,EARA0Y,EAAS1gB,KAAKoG,OAAOsa,OAErBgid,EAAS1ie,KAAKgC,IAAI,UAatB,OAZK0ge,IACH1ie,KAAKwie,aACLE,EAAS1ie,KAAKgC,IAAI,YAIpB,UAAK0ge,GAAQ,SAAUzwd,EAAG/Q,GACpB0E,GAASqM,EAAE,IAAMrM,GAASqM,EAAE,KAC9Bwwd,GAAQ78d,EAAQqM,EAAE,KAAOA,EAAE,GAAKA,EAAE,IAClCjK,EAAQ9G,EAEZ,IACO,OAASwzB,QAAQhU,EAAO1Y,GAAO,GAAI0Y,EAAO1Y,GAAO,GAAI0Y,EAAO1Y,EAAQ,GAAG,GAAI0Y,EAAO1Y,EAAQ,GAAG,GAAIy6d,EAC1G,EACA0E,EAASjne,UAAUsie,WAAa,WAC9B,IAAI9hd,EAAS1gB,KAAKoG,OAAOsa,OACzB,GAAKA,GAA4B,IAAlBA,EAAO7f,OAAtB,CAGA,IAAIy2B,EAAct3B,KAAK2he,iBACvB,KAAIrqc,GAAe,GAAnB,CAGA,IAEIsrc,EACAC,EAHAE,EAAa,EACbL,EAAS,IAGb,UAAKhid,GAAQ,SAAUtC,EAAGld,GACpBwf,EAAOxf,EAAI,MACb0he,EAAW,IACF,GAAKG,EAAazrc,EAC3Burc,EAAW,OAAShie,OAAOud,EAAE,GAAIA,EAAE,GAAIsC,EAAOxf,EAAI,GAAG,GAAIwf,EAAOxf,EAAI,GAAG,IACvE6he,GAAcF,EACdD,EAAS,GAAKG,EAAazrc,EAC3Borc,EAAOnie,KAAKqie,GAEhB,IACA5ie,KAAKkC,IAAI,SAAUwge,EAfnB,CAJA,CAoBF,EAKAyE,EAASjne,UAAUi/d,gBAAkB,WACnC,IAAIz+c,EAAS1gB,KAAKoG,OAAOsa,OACrB9N,EAAS,GAGb,OAFAA,EAAOrS,KAAK,CAACmgB,EAAO,GAAG,GAAIA,EAAO,GAAG,KACrC9N,EAAOrS,KAAK,CAACmgB,EAAO,GAAG,GAAIA,EAAO,GAAG,KAC9B9N,CACT,EAKAu0d,EAASjne,UAAUk/d,cAAgB,WACjC,IAAI1+c,EAAS1gB,KAAKoG,OAAOsa,OACrB4E,EAAI5E,EAAO7f,OAAS,EACpB+R,EAAS,GAGb,OAFAA,EAAOrS,KAAK,CAACmgB,EAAO4E,EAAI,GAAG,GAAI5E,EAAO4E,EAAI,GAAG,KAC7C1S,EAAOrS,KAAK,CAACmgB,EAAO4E,GAAG,GAAI5E,EAAO4E,GAAG,KAC9B1S,CACT,EACOu0d,CACT,CA9H4B,CA8H1B,KACF,QC5HA,IAAI,IAAoB,SAAUzle,GAEhC,SAAS0he,IACP,IAAI3ie,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAIhE,OAHAS,EAAMkI,KAAO,OACblI,EAAMsle,SAAU,EAChBtle,EAAMule,WAAY,EACXvle,CACT,CA4DA,OAnEA,UAAU2ie,EAAM1he,GAQhB0he,EAAKlje,UAAUkU,gBAAkB,WAC/B,IAAI9N,EAAQ5E,EAAOxB,UAAUkU,gBAAgBxS,KAAK5B,MAClD,OAAO,WAAS,UAAS,CAAC,EAAGsG,GAAQ,CACnC2E,EAAG,EACHC,EAAG,EACH6C,MAAO,EACPC,OAAQ,EACRggE,OAAQ,GAEZ,EACAo1Z,EAAKlje,UAAU4/d,WAAa,SAAU3sc,EAAShe,GAC7C,IAAI1U,EAAQT,KACRsG,EAAQtG,KAAKoG,OACboE,EAAKxK,KAAKgC,IAAI,MAEdole,GAAY,EAEZC,EAAmB,CAAC,IAAK,IAAK,QAAS,SAAU,WACrD,UAAKlyd,GAAe7O,GAAO,SAAUnE,EAAOiE,IACF,IAApCihe,EAAiBn0d,QAAQ9M,IAAiBghe,GAGC,IAApCC,EAAiBn0d,QAAQ9M,IAAgB8+d,IAAa9+d,IAC/DoE,EAAG8/C,aAAa46a,IAAa9+d,GAAOjE,IAHpCqI,EAAG8/C,aAAa,IAAK7pD,EAAM6me,cAAchhe,IACzC8ge,GAAY,EAIhB,GACF,EACAhE,EAAKlje,UAAUone,cAAgB,SAAUhhe,GACvC,IAAI2E,EAAI3E,EAAM2E,EACVC,EAAI5E,EAAM4E,EACVwiB,EAAIpnB,EAAMyH,MACVsX,EAAI/e,EAAM0H,OACVggE,EAAS1nE,EAAM0nE,OACnB,IAAKA,EACH,MAAO,KAAO/iE,EAAI,IAAMC,EAAI,MAAQwiB,EAAI,UAAYrI,EAAI,MAAQqI,EAAI,OAEtE,IAAIxO,ECnDD,SAAqB8uD,GAC1B,IAAIrgD,EAAK,EACLC,EAAK,EACLqrQ,EAAK,EACLqqM,EAAK,EAoBT,OAnBI,UAAQt1Z,GACY,IAAlBA,EAAOntE,OACT8sB,EAAKC,EAAKqrQ,EAAKqqM,EAAKt1Z,EAAO,GACA,IAAlBA,EAAOntE,QAChB8sB,EAAKsrQ,EAAKjrN,EAAO,GACjBpgD,EAAK01c,EAAKt1Z,EAAO,IACU,IAAlBA,EAAOntE,QAChB8sB,EAAKqgD,EAAO,GACZpgD,EAAK01c,EAAKt1Z,EAAO,GACjBirN,EAAKjrN,EAAO,KAEZrgD,EAAKqgD,EAAO,GACZpgD,EAAKogD,EAAO,GACZirN,EAAKjrN,EAAO,GACZs1Z,EAAKt1Z,EAAO,IAGdrgD,EAAKC,EAAKqrQ,EAAKqqM,EAAKt1Z,EAEf,CACLrgD,GAAIA,EACJC,GAAIA,EACJqrQ,GAAIA,EACJqqM,GAAIA,EAER,CDqBY,CAAYt1Z,GAqBpB,OApBI,UAAQA,GACY,IAAlBA,EAAOntE,OACTqe,EAAEyO,GAAKzO,EAAE0O,GAAK1O,EAAE+5Q,GAAK/5Q,EAAEokd,GAAKt1Z,EAAO,GACR,IAAlBA,EAAOntE,QAChBqe,EAAEyO,GAAKzO,EAAE+5Q,GAAKjrN,EAAO,GACrB9uD,EAAE0O,GAAK1O,EAAEokd,GAAKt1Z,EAAO,IACM,IAAlBA,EAAOntE,QAChBqe,EAAEyO,GAAKqgD,EAAO,GACd9uD,EAAE0O,GAAK1O,EAAEokd,GAAKt1Z,EAAO,GACrB9uD,EAAE+5Q,GAAKjrN,EAAO,KAEd9uD,EAAEyO,GAAKqgD,EAAO,GACd9uD,EAAE0O,GAAKogD,EAAO,GACd9uD,EAAE+5Q,GAAKjrN,EAAO,GACd9uD,EAAEokd,GAAKt1Z,EAAO,IAGhB9uD,EAAEyO,GAAKzO,EAAE0O,GAAK1O,EAAE+5Q,GAAK/5Q,EAAEokd,GAAKt1Z,EAEtB,CAAC,CAAC,MAAQ/iE,EAAIiU,EAAEyO,IAAM,IAAMziB,GAAI,CAAC,MAAQwiB,EAAIxO,EAAEyO,GAAKzO,EAAE0O,IAAM,MAAO,CAAC,KAAO1O,EAAE0O,GAAK,IAAM1O,EAAE0O,GAAK,UAAY1O,EAAE0O,GAAK,IAAM1O,EAAE0O,IAAK,CAAC,QAAUvI,EAAInG,EAAE0O,GAAK1O,EAAE+5Q,KAAM,CAAC,KAAO/5Q,EAAE+5Q,GAAK,IAAM/5Q,EAAE+5Q,GAAK,WAAa/5Q,EAAE+5Q,GAAK,IAAM/5Q,EAAE+5Q,IAAK,CAAC,MAAQ/5Q,EAAE+5Q,GAAK/5Q,EAAEokd,GAAK51c,GAAK,MAAO,CAAC,KAAOxO,EAAEokd,GAAK,IAAMpkd,EAAEokd,GAAK,WAAapkd,EAAEokd,GAAK,KAAOpkd,EAAEokd,IAAK,CAAC,QAAUpkd,EAAEokd,GAAKpkd,EAAEyO,GAAKtI,IAAK,CAAC,KAAOnG,EAAEyO,GAAK,IAAMzO,EAAEyO,GAAK,UAAYzO,EAAEyO,GAAK,KAAOzO,EAAEyO,IAAK,CAAC,MACtZtE,KAAK,IAChB,EACO+5c,CACT,CArEwB,CAqEtB,KACF,qBEpEImE,IAAe,CACjBt4d,IAAK,cACL2vE,OAAQ,UACR6E,OAAQ,aACR+jZ,WAAY,WACZC,QAAS,WAGPC,IAA2B,CAC7Bz4d,IAAK,mBACL2vE,OAAQ,UACR6E,OAAQ,kBACR+jZ,WAAY,aACZC,QAAS,WAEPE,IAAa,CACf34d,KAAM,OACN0X,MAAO,OACPmX,OAAQ,SACRlrB,MAAO,MACPkc,IAAK,OAEH,IAAoB,SAAUntB,GAEhC,SAASylE,IACP,IAAI1mE,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAIhE,OAHAS,EAAMkI,KAAO,OACblI,EAAMsle,SAAU,EAChBtle,EAAMule,WAAY,EACXvle,CACT,CAiFA,OAxFA,UAAU0mE,EAAMzlE,GAQhBylE,EAAKjnE,UAAUkU,gBAAkB,WAC/B,IAAI9N,EAAQ5E,EAAOxB,UAAUkU,gBAAgBxS,KAAK5B,MAClD,OAAO,WAAS,UAAS,CAAC,EAAGsG,GAAQ,CACnC2E,EAAG,EACHC,EAAG,EACH2V,KAAM,KACNC,SAAU,GACV2S,WAAY,aACZE,UAAW,SACXD,WAAY,SACZE,YAAa,SACb3S,UAAW,QACXC,aAAc,UAElB,EACAimD,EAAKjnE,UAAU4/d,WAAa,SAAU3sc,EAAShe,GAC7C,IAAI1U,EAAQT,KACRsG,EAAQtG,KAAKoG,OACboE,EAAKxK,KAAKgC,IAAI,MAClBhC,KAAK4ne,YACL,UAAKzyd,GAAe7O,GAAO,SAAUnE,EAAOiE,GAC7B,SAATA,EACF3F,EAAMgje,SAAS,GAAKthe,GACF,WAATiE,GAAqBjE,EAC9B0mQ,IAAapoQ,GACJyke,IAAa9+d,IACtBoE,EAAG8/C,aAAa46a,IAAa9+d,GAAOjE,EAExC,IACAqI,EAAG8/C,aAAa,cAAe,UAC/B9/C,EAAG8/C,aAAa,QAAS,8CAC3B,EACA6c,EAAKjnE,UAAU0ne,SAAW,WACxB,IAAIp9d,EAAKxK,KAAKgC,IAAI,MACdb,EAAKnB,KAAKoG,OACZ8a,EAAe/f,EAAG+f,aAClBD,EAAY9f,EAAG8f,UACb/T,GAAU,YACVA,GAA4B,YAAjBA,EAAQjL,KAErBuI,EAAG8/C,aAAa,oBAAqBo9a,IAAyBxmd,IAAiB,cAE/E1W,EAAG8/C,aAAa,qBAAsBi9a,IAAarmd,IAAiB,YAEtE1W,EAAG8/C,aAAa,cAAeq9a,IAAW1md,IAAc,OAC1D,EACAkmD,EAAKjnE,UAAUuje,SAAW,SAAU5id,GAClC,IAAIrW,EAAKxK,KAAKgC,IAAI,MACdb,EAAKnB,KAAKoG,OACZ6E,EAAI9J,EAAG8J,EACPiM,EAAK/V,EAAG+f,aACRy/O,OAAkB,IAAPzpP,EAAgB,SAAWA,EACxC,GAAK2J,EAEE,IAAKA,EAAK3N,QAAQ,MAAO,CAC9B,IAAIkgB,EAAUvS,EAAKyI,MAAM,MACrBu+c,EAAYz0c,EAAQvyB,OAAS,EAC7Bine,EAAQ,IACZ,UAAK10c,GAAS,SAAU5T,EAASte,GACrB,IAANA,EACe,eAAby/P,EACFmnO,GAAS,aAAgB78d,EAAI,UAAc48d,EAAY,OAAUrod,EAAU,WACrD,QAAbmhP,EACTmnO,GAAS,aAAgB78d,EAAI,gBAAqBuU,EAAU,WACtC,WAAbmhP,EACTmnO,GAAS,aAAgB78d,EAAI,WAAe48d,EAAY,GAAK,EAAI,OAAUrod,EAAU,WAC/D,WAAbmhP,EACTmnO,GAAS,aAAgB78d,EAAI,WAAe48d,EAnGnC,IAmGiE,OAAUrod,EAAU,WACxE,YAAbmhP,IACTmnO,GAAS,aAAgB78d,EAAI,YAAgB48d,EAAY,GArGhD,IAqGuE,OAAUrod,EAAU,YAGtGsod,GAAS,aAAgB78d,EAAI,cAAmBuU,EAAU,UAE9D,IACAhV,EAAG+2Y,UAAYumF,CACjB,MACEt9d,EAAG+2Y,UAAY1gY,OAxBfrW,EAAG+2Y,UAAY,EA0BnB,EACOp6U,CACT,CA1FwB,CA0FtB,KACF,QCtHI,IAAU,kCACV,IAAU,gEACV,IAAiB,6BACrB,SAAS,IAAQ6c,GACf,IAAIvtE,EAAMutE,EAAM/oD,MAAM,KACtB,IAAKxkB,EACH,MAAO,GAET,IAAIy7O,EAAQ,GAUZ,OATAz7O,EAAIlE,MAAK,SAAU4L,EAAG8E,GAGpB,OAFA9E,EAAIA,EAAEmL,MAAM,KACZrG,EAAIA,EAAEqG,MAAM,KACLrH,OAAO9D,EAAE,IAAM8D,OAAOgB,EAAE,GACjC,KACA,UAAKxM,GAAK,SAAUgB,GAClBA,EAAOA,EAAK6R,MAAM,KAClB4oO,GAAS,iBAAoBz6O,EAAK,GAAK,iBAAqBA,EAAK,GAAK,WACxE,IACOy6O,CACT,CAiEA,IAAI,IAAwB,WAC1B,SAASD,EAAStwP,GAChB3B,KAAK2B,IAAM,CAAC,EACZ,IAAI6I,EAAK,KACLkJ,GAAK,UAAS,aAYlB,MAX6B,MAAzB/R,EAAIid,cAAc,GArE1B,SAA2Bm1B,EAAOvpC,GAChC,IAGIkc,EACAmI,EAJApY,EAAM,IAAQw9B,KAAKF,GACnBrsB,GAAQ,WAAI,UAAS2D,WAAW5U,EAAI,KAAgB,EAAVwD,KAAK+B,IAC/CgoE,EAAQvtE,EAAI,GAGZiR,GAAS,GAAKA,EAAQ,GAAMzN,KAAK+B,IACnC0K,EAAQ,CACNzb,EAAG,EACHC,EAAG,GAEL2jB,EAAM,CACJ5jB,EAAG,EACHC,EAAG,IAEI,GAAM+O,KAAK+B,IAAM0L,GAASA,EAAQzN,KAAK+B,IAChD0K,EAAQ,CACNzb,EAAG,EACHC,EAAG,GAEL2jB,EAAM,CACJ5jB,EAAG,EACHC,EAAG,IAEI+O,KAAK+B,IAAM0L,GAASA,EAAQ,IAAMzN,KAAK+B,IAChD0K,EAAQ,CACNzb,EAAG,EACHC,EAAG,GAEL2jB,EAAM,CACJ5jB,EAAG,EACHC,EAAG,KAGLwb,EAAQ,CACNzb,EAAG,EACHC,EAAG,GAEL2jB,EAAM,CACJ5jB,EAAG,EACHC,EAAG,IAGP,IAAI6xd,EAAW9id,KAAK4O,IAAInB,GACpBs1c,EAAYD,EAAWA,EACvB9xd,GAAK4jB,EAAI5jB,EAAIyb,EAAMzb,EAAI8xd,GAAYluc,EAAI3jB,EAAIwb,EAAMxb,KAAO8xd,EAAY,GAAKt2c,EAAMzb,EAC/EC,EAAI6xd,GAAYluc,EAAI5jB,EAAIyb,EAAMzb,EAAI8xd,GAAYluc,EAAI3jB,EAAIwb,EAAMxb,KAAO8xd,EAAY,GAAKt2c,EAAMxb,EAC9FV,EAAG8/C,aAAa,KAAM5jC,EAAMzb,GAC5BT,EAAG8/C,aAAa,KAAM5jC,EAAMxb,GAC5BV,EAAG8/C,aAAa,KAAMr/C,GACtBT,EAAG8/C,aAAa,KAAMp/C,GACtBV,EAAG+2Y,UAAY,IAAQv9T,EACzB,CAmBM,CAAkBriF,EADlB6I,EAAK26d,IAAiB,mBAjB5B,SAA6Bpxb,EAAO2S,GAClC,IAAIjwC,EAAM,IAAQw9B,KAAKF,GACnBryB,EAAK2J,WAAW5U,EAAI,IACpBkL,EAAK0J,WAAW5U,EAAI,IACpByI,EAAImM,WAAW5U,EAAI,IACnButE,EAAQvtE,EAAI,GAChBiwC,EAAK4D,aAAa,KAAM5oC,GACxBglC,EAAK4D,aAAa,KAAM3oC,GACxB+kC,EAAK4D,aAAa,IAAKprC,GACvBwnC,EAAK66V,UAAY,IAAQv9T,EAC3B,CAWM,CAAoBriF,EADpB6I,EAAK26d,IAAiB,mBAGxB36d,EAAG8/C,aAAa,KAAM52C,GACtB1T,KAAKwK,GAAKA,EACVxK,KAAK0T,GAAKA,EACV1T,KAAK2B,IAAMA,EACJ3B,IACT,CAIA,OAHAiyP,EAAS/xP,UAAU+6B,MAAQ,SAAUtyB,EAAMvC,GACzC,OAAOpG,KAAK2B,MAAQyE,CACtB,EACO6rP,CACT,CAtB4B,GAuB5B,QC3GI81O,IAAW,CACb3td,YAAa,QACb4td,cAAe,UACf3td,WAAY,OACZC,cAAe,KACfC,cAAe,MAEb0td,IAAmB,CACrBh9d,EAAG,OACHC,EAAG,OACH6C,MAAO,OACPC,OAAQ,QAENk6d,IAAsB,WACxB,SAASA,EAAOvme,GACd3B,KAAK2I,KAAO,SACZ3I,KAAK2B,IAAM,CAAC,EACZ3B,KAAK2I,KAAO,SACZ,IAAI6B,EAAK26d,IAAiB,UAU1B,OARA,UAAK8C,KAAkB,SAAUh2d,EAAGvL,GAClC8D,EAAG8/C,aAAa5jD,EAAGuL,EACrB,IACAjS,KAAKwK,GAAKA,EACVxK,KAAK0T,IAAK,UAAS,WACnB1T,KAAKwK,GAAGkJ,GAAK1T,KAAK0T,GAClB1T,KAAK2B,IAAMA,EACX3B,KAAKmoe,aAAaxme,EAAK6I,GAChBxK,IACT,CAyBA,OAxBAkoe,EAAOhoe,UAAU+6B,MAAQ,SAAUtyB,EAAMhH,GACvC,GAAI3B,KAAK2I,OAASA,EAChB,OAAO,EAET,IAAIkzN,GAAO,EACPrvH,EAASxsG,KAAK2B,IAOlB,OANA,UAAK6V,OAAOopB,KAAK4rE,IAAS,SAAUpmG,GAClC,GAAIomG,EAAOpmG,KAAUzE,EAAIyE,GAEvB,OADAy1N,GAAO,GACA,CAEX,IACOA,CACT,EACAqsQ,EAAOhoe,UAAUsF,OAAS,SAAUvD,EAAME,GACxC,IAAIqqG,EAASxsG,KAAK2B,IAGlB,OAFA6qG,EAAOu7X,IAAS9le,IAASE,EACzBnC,KAAKmoe,aAAa37X,EAAQxsG,KAAKwK,IACxBxK,IACT,EACAkoe,EAAOhoe,UAAUioe,aAAe,SAAU37X,EAAQhiG,GAChD,IAAIsF,EAAQ,6BAAgC08F,EAAO5/F,IAAM,GAAK,iBAAqB4/F,EAAO3/F,IAAM,GAAK,2BAA+B2/F,EAAOvvC,KAAOuvC,EAAOvvC,KAAO,GAAK,GAAK,0BAA8BuvC,EAAOz4D,MAAQy4D,EAAOz4D,MAAQ,QAAU,4BAAgCy4D,EAAO73F,QAAU63F,EAAO73F,QAAU,GAAK,cACvTnK,EAAG+2Y,UAAYzxY,CACjB,EACOo4d,CACT,CA1C0B,GA2C1B,QCxDI,IAAqB,WACvB,SAAS9zY,EAAM9tF,EAAOqC,GACpB3I,KAAK2B,IAAM,CAAC,EACZ,IAAI6I,EAAK26d,IAAiB,UACtBzxd,GAAK,UAAS,WAClBlJ,EAAG8/C,aAAa,KAAM52C,GACtB,IAAIjO,EAAQ0/d,IAAiB,QAC7B1/d,EAAM6kD,aAAa,SAAUhkD,EAAM6a,QAAU,QAC7C1b,EAAM6kD,aAAa,OAAQhkD,EAAMs1C,MAAQ,QACzCpxC,EAAGmD,YAAYlI,GACf+E,EAAG8/C,aAAa,WAAY,WAC5B9/C,EAAG8/C,aAAa,SAAU,sBAC1BtqD,KAAKwK,GAAKA,EACVxK,KAAK8P,MAAQrK,EACbzF,KAAK0T,GAAKA,EACV,IAAI/R,EAAM2E,EAAe,iBAATqC,EAA0B,aAAe,YAQzD,OAPA3I,KAAKmhB,OAAS7a,EAAM6a,QAAU,QAClB,IAARxf,EACF3B,KAAKooe,gBAAgBz/d,EAAMlD,IAE3BzF,KAAK2B,IAAMA,EACX3B,KAAKqoe,WAAW/he,EAAMmZ,UAAWha,IAE5BzF,IACT,CAkCA,OAjCAo0F,EAAMl0F,UAAU+6B,MAAQ,WACtB,OAAO,CACT,EACAm5D,EAAMl0F,UAAUkoe,gBAAkB,SAAUz/d,EAAM6B,GAChD,IAAIoH,EAAS5R,KAAKwK,GAElBA,EAAG8/C,aAAa,IAAK,SAAW,GAAKrwC,KAAKkC,IAAIlC,KAAK+B,GAAK,GAAK,YAC7DpK,EAAO04C,aAAa,OAAQ,GAAK,GAAKrwC,KAAKkC,IAAIlC,KAAK+B,GAAK,IACzDpK,EAAO04C,aAAa,OAAQ,IAC9B,EACA8pC,EAAMl0F,UAAUmoe,WAAa,SAAUnpd,EAAG1U,GACxC,IAAIoH,EAAS5R,KAAKwK,GACd3D,EAAO7G,KAAK2B,IAAIkF,KAChBkf,EAAI/lB,KAAK2B,IAAIokB,GACb,UAAQlf,KACVA,EAAOA,EAAKmqB,KAAI,SAAUxR,GACxB,OAAOA,EAAQ6J,KAAK,IACtB,IAAGA,KAAK,KAEV7e,EAAG8/C,aAAa,IAAKzjD,GACrB+K,EAAOjE,YAAYnD,GACfub,GACFnU,EAAO04C,aAAa,OAAQ,GAAKvkC,EAAI7G,EAEzC,EACAk1E,EAAMl0F,UAAUsF,OAAS,SAAUo2C,GACjC,IAAI9rC,EAAQ9P,KAAK8P,MACbA,EAAM1J,KACR0J,EAAM1J,KAAK,OAAQw1C,GAEnB9rC,EAAMw6C,aAAa,OAAQ1O,EAE/B,EACOw4C,CACT,CA3DyB,GA4DzB,QCtCA,IAtBwB,WACtB,SAASk0Y,EAAK3me,GACZ3B,KAAK2I,KAAO,OACZ3I,KAAK2B,IAAM,CAAC,EACZ,IAAI6I,EAAK26d,IAAiB,YAC1Bnle,KAAKwK,GAAKA,EACVxK,KAAK0T,IAAK,UAAS,SACnBlJ,EAAGkJ,GAAK1T,KAAK0T,GACb,IAAI60d,EAAU5me,EAAIA,IAAI6I,GAGtB,OAFAA,EAAGmD,YAAY46d,GACfvoe,KAAK2B,IAAMA,EACJ3B,IACT,CAQA,OAPAsoe,EAAKpoe,UAAU+6B,MAAQ,WACrB,OAAO,CACT,EACAqtc,EAAKpoe,UAAUiT,OAAS,WACtB,IAAI3I,EAAKxK,KAAKwK,GACdA,EAAG4E,WAAWC,YAAY7E,EAC5B,EACO89d,CACT,CArBwB,GCApB,IAAU,kCACVE,IAAuB,WACzB,SAASA,EAAQ7me,GACf3B,KAAK2B,IAAM,CAAC,EACZ,IAAI6I,EAAK26d,IAAiB,WAC1B36d,EAAG8/C,aAAa,eAAgB,kBAChC,IAAIx6C,EAAQq1d,IAAiB,SAC7B36d,EAAGmD,YAAYmC,GACf,IAAI4D,GAAK,UAAS,YAClBlJ,EAAGkJ,GAAKA,EACR1T,KAAKwK,GAAKA,EACVxK,KAAK0T,GAAKA,EACV1T,KAAK2B,IAAMA,EACX,IACI0vB,EADM,IAAQ4iB,KAAKtyC,GACN,GACjBmO,EAAMw6C,aAAa,OAAQj5B,GAC3B,IAAIyvD,EAAM,IAAIpY,MAKd,SAAStd,IACP5gD,EAAG8/C,aAAa,QAAS,GAAKw2B,EAAI/yE,OAClCvD,EAAG8/C,aAAa,SAAU,GAAKw2B,EAAI9yE,OACrC,CAQA,OAfKqjB,EAAO4J,MAAM,aAChB6lD,EAAIQ,YAAc,aAEpBR,EAAI38C,IAAM9S,EAKNyvD,EAAIxpB,SACNlM,KAEA01B,EAAI11B,OAASA,EAEb01B,EAAI38C,IAAM28C,EAAI38C,KAETnkC,IACT,CAIA,OAHAwoe,EAAQtoe,UAAU+6B,MAAQ,SAAUtyB,EAAMvC,GACxC,OAAOpG,KAAK2B,MAAQyE,CACtB,EACOoie,CACT,CArC2B,GAsC3B,QClCIC,IAAoB,WACtB,SAASA,EAAKlhe,GACZ,IAAIiD,EAAK26d,IAAiB,QACtBzxd,GAAK,UAAS,SAClBlJ,EAAGkJ,GAAKA,EACRnM,EAAOoG,YAAYnD,GACnBxK,KAAK6P,SAAW,GAChB7P,KAAK0oe,aAAe,CAAC,EACrB1oe,KAAKwK,GAAKA,EACVxK,KAAKuH,OAASA,CAChB,CAqEA,OApEAkhe,EAAKvoe,UAAUsT,KAAO,SAAU7K,EAAMvC,GAGpC,IAFA,IAAIyJ,EAAW7P,KAAK6P,SAChB+C,EAAS,KACJ1R,EAAI,EAAGA,EAAI2O,EAAShP,OAAQK,IACnC,GAAI2O,EAAS3O,GAAG+5B,MAAMtyB,EAAMvC,GAAO,CACjCwM,EAAS/C,EAAS3O,GAAGwS,GACrB,KACF,CAEF,OAAOd,CACT,EACA61d,EAAKvoe,UAAUuT,SAAW,SAAUC,GAGlC,IAFA,IAAI7D,EAAW7P,KAAK6P,SAChBgsN,EAAO,KACF36N,EAAI,EAAGA,EAAI2O,EAAShP,OAAQK,IACnC,GAAI2O,EAAS3O,GAAGwS,KAAOA,EAAI,CACzBmoN,EAAOhsN,EAAS3O,GAChB,KACF,CAEF,OAAO26N,CACT,EACA4sQ,EAAKvoe,UAAUsR,IAAM,SAAUiG,GAC7BzX,KAAK6P,SAAStP,KAAKkX,GACnBA,EAAKlQ,OAASvH,KAAKuH,OACnBkQ,EAAK7F,OAAS5R,IAChB,EACAyoe,EAAKvoe,UAAU0me,gBAAkB,SAAUtge,EAAOrE,GAChD,IAAIkf,EAAS7a,EAAM6a,QAAU7a,EAAMy2P,YACnC,GAAI/8P,KAAK0oe,aAAavnd,GACpB,OAAOnhB,KAAK0oe,aAAavnd,GAAQzN,GAEnC,IAAI4gF,EAAQ,IAAI,IAAMhuF,EAAOrE,GAI7B,OAHAjC,KAAK0oe,aAAavnd,GAAUmzE,EAC5Bt0F,KAAKwK,GAAGmD,YAAY2mF,EAAM9pF,IAC1BxK,KAAKwR,IAAI8iF,GACFA,EAAM5gF,EACf,EACA+0d,EAAKvoe,UAAUime,YAAc,SAAUxke,GACrC,IAAIgjF,EAAW,IAAI,IAAShjF,GAG5B,OAFA3B,KAAKwK,GAAGmD,YAAYg3E,EAASn6E,IAC7BxK,KAAKwR,IAAImzE,GACFA,EAASjxE,EAClB,EACA+0d,EAAKvoe,UAAUyme,SAAW,SAAUrge,EAAOrE,GACzC,IAAIqyF,EAAQ,IAAI,IAAMhuF,EAAOrE,GAG7B,OAFAjC,KAAKwK,GAAGmD,YAAY2mF,EAAM9pF,IAC1BxK,KAAKwR,IAAI8iF,GACFA,EAAM5gF,EACf,EACA+0d,EAAKvoe,UAAUmme,UAAY,SAAU1ke,GACnC,IAAIske,EAAS,IAAI,IAAOtke,GAGxB,OAFA3B,KAAKwK,GAAGmD,YAAYs4d,EAAOz7d,IAC3BxK,KAAKwR,IAAIy0d,GACFA,EAAOvyd,EAChB,EACA+0d,EAAKvoe,UAAUkme,WAAa,SAAUzke,GACpC,IAAI6mE,EAAU,IAAI,IAAQ7mE,GAG1B,OAFA3B,KAAKwK,GAAGmD,YAAY66D,EAAQh+D,IAC5BxK,KAAKwR,IAAIg3D,GACFA,EAAQ90D,EACjB,EACA+0d,EAAKvoe,UAAUqle,QAAU,SAAU5je,GACjC,IAAIsT,EAAO,IAAI,IAAKtT,GAGpB,OAFA3B,KAAKwK,GAAGmD,YAAYsH,EAAKzK,IACzBxK,KAAKwR,IAAIyD,GACFA,EAAKvB,EACd,EACO+0d,CACT,CAhFwB,GAiFxB,QCnFI,IAAsB,SAAU/me,GAElC,SAAS0L,EAAOzL,GACd,OAAOD,EAAOE,KAAK5B,MAAM,WAAS,UAAS,CAAC,EAAG2B,GAAM,CACnDgne,UAAU,EAEVhwO,SAAU,UACL34P,IACT,CA0EA,OAjFA,UAAUoN,EAAQ1L,GAQlB0L,EAAOlN,UAAUqR,aAAe,WAC9B,OAAO,CACT,EACAnE,EAAOlN,UAAU4R,aAAe,WAC9B,OAAO,GACT,EAEA1E,EAAOlN,UAAUqL,SAAW,SAAUN,EAAGC,EAAGpB,GAC1C,IAAIpB,EAASoB,EAAGpB,QAAUoB,EAAG8+d,WAC7B,IAAK5D,IAAct8d,EAAO66P,SAAU,CAElC,IADA,IAAIz2P,EAAWpE,EAAO0G,WACftC,IAAak4d,IAAcl4d,EAASy2P,UACzCz2P,EAAWA,EAASsC,WAEtB1G,EAASoE,CACX,CACA,OAAO9M,KAAKwT,MAAK,SAAU1D,GACzB,OAAOA,EAAM9N,IAAI,QAAU0G,CAC7B,GACF,EAEA0E,EAAOlN,UAAUwN,UAAY,WAC3B,IAAIiC,EAAUw1d,IAAiB,OAC3Bhyc,EAAU,IAAI,IAAKxjB,GAKvB,OAJAA,EAAQ26C,aAAa,QAAS,GAAKtqD,KAAKgC,IAAI,UAC5C2N,EAAQ26C,aAAa,SAAU,GAAKtqD,KAAKgC,IAAI,WAE7ChC,KAAKkC,IAAI,UAAWixB,GACbxjB,CACT,EAKAvC,EAAOlN,UAAUgO,eAAiB,SAAU0G,GAC1C,IAAIue,EAAUnzB,KAAKgC,IAAI,WACnBwI,EAAKxK,KAAKgC,IAAI,MAClB,GAAmB,SAAf4S,EAAuB,CACzB,IAAIkxd,EAAa9le,KAAKgC,IAAI,YACtB8je,GAAcA,EAAWjle,QAC3Buke,IAAQple,MAAM,SAAUme,EAAG8E,GACzB,OAAO6id,EAAW5yd,QAAQiL,GAAK2nd,EAAW5yd,QAAQ+P,GAAK,EAAI,CAC7D,GAEJ,MAAO,GAAmB,UAAfrO,GAET,GAAIpK,EAAI,CAENA,EAAG+2Y,UAAY,GACf,IAAImkF,EAASvyc,EAAQ3oB,GAErBk7d,EAAOnkF,UAAY,GAEnB/2Y,EAAGmD,YAAY+3d,EACjB,MACwB,WAAf9wd,EACTi0P,IAAa7oQ,MACW,SAAf4U,EACTuB,IAAQnW,KAAMmzB,GACU,eAAfve,IACTpK,EAAG8/C,aAAa,QAAS,GAAKtqD,KAAKgC,IAAI,UACvCwI,EAAG8/C,aAAa,SAAU,GAAKtqD,KAAKgC,IAAI,WAE5C,EAEAoL,EAAOlN,UAAU4H,KAAO,WACtB,IAAIqrB,EAAUnzB,KAAKgC,IAAI,WACnB6N,EAAW7P,KAAKsQ,cACpB6F,IAAQnW,KAAMmzB,GACVtjB,EAAShP,QACX,IAAasyB,EAAStjB,EAE1B,EACOzC,CACT,CAnF0B,CAmFxB,IAAA23d,gBACF,QCxFW,IAAU,QCOjB,IAAoB,SAAUrje,GAEhC,SAASq6O,EAAKp6O,GACZ,IAAIlB,EAAQiB,EAAOE,KAAK5B,KAAM2B,IAAQ3B,KACtCS,EAAMkI,KAAO,OACblI,EAAM6Q,UAAY,OAClB,IAAInQ,EAAKQ,EAAIg5d,aACXA,OAAsB,IAAPx5d,GAAwBA,EACvC+V,EAAKvV,EAAIi5d,gBACTA,OAAyB,IAAP1jd,GAAuBA,EAG3C,OAFAzW,EAAMk6d,aAAeA,EACrBl6d,EAAMm6d,gBAAkBA,EACjBn6d,CACT,CA6IA,OAzJA,UAAUs7O,EAAMr6O,GAmBhBq6O,EAAK77O,UAAUoxa,eAAiB,SAAUsgD,EAAkBvT,GAC1D,IAAIrmB,EAAK72b,EAAIu2c,EAAKxgc,EAAI8hc,EAAK7hc,OACV,IAAbknc,IACFA,GAAW,GAOb,IAJA,IAAIwqB,EAAU,IAAI9pd,IACdsyG,EAAW,IAAItyG,IACf6hB,EAAO,GACP54B,EAAQ,EACH9G,EAAI,EAAGA,EAAI0wd,EAAiB/wd,OAAQK,IAAK,CAChD,IAAI+2c,EAAc2Z,EAAiB1wd,GAC/B2/B,EAAM7gC,KAAKkxa,aAAa+mC,GAC5Br3a,EAAKrgC,KAAKsgC,GACVgoc,EAAQ3me,IAAI2+B,EAAKo3a,GACjB5mV,EAASnvH,IAAI2+B,EAAK74B,GAClBA,GACF,CACAhI,KAAK2gC,SAAW,IAAIF,MAAMz4B,GAC1B,IAAIs2B,EAAK9L,IAAKxyB,KAAK0td,gBAAiB9sb,GAClC6wQ,EAAQnzQ,EAAGmzQ,MACXrvN,EAAU9jD,EAAG8jD,QACb4gC,EAAU1kF,EAAG0kF,QACf,IACE,IAAK,IAAI+uW,GAAU,UAAStgL,GAAQugL,EAAYD,EAAQx8b,QAASy8b,EAAU15a,KAAM05a,EAAYD,EAAQx8b,OAAQ,CACvGsL,EAAMmxb,EAAU7vd,MAChB81c,EAAc4wB,EAAQ7me,IAAI6+B,GAD9B,IAEI4ob,EAAezpd,KAAKitd,kBACpBuE,EAAWxxd,KAAK8oe,aAAa7wB,GAC7B/2c,EAAImwH,EAASrvH,IAAI6+B,IACjBlxB,EAAU,IAAI,IAAQ,CACxB85c,aAAcA,EACdzgd,UAAWhJ,KAAKgJ,UAChB0gd,eAAgB1pd,KAAK+pd,oBACrBJ,aAAczod,KAERm+M,SAAWr/M,KACnB2P,EAAQmH,QAAU9W,KAAKyva,cACvB9/Z,EAAQ7H,KAAK0pd,EAAUnT,GACvBr+c,KAAKm5c,YAAYt4a,GAAOlxB,EACxB3P,KAAK2gC,SAASz/B,GAAKyO,CACrB,CACF,CAAE,MAAOwob,GACPH,EAAM,CACJ5qY,MAAO+qY,EAEX,CAAE,QACA,IACM65B,IAAcA,EAAU15a,OAASn3C,EAAK4wd,EAAQ94P,SAAS93N,EAAGS,KAAKmwd,EACrE,CAAE,QACA,GAAI/5B,EAAK,MAAMA,EAAI5qY,KACrB,CACF,CACA,IACE,IAAK,IAAI6ka,GAAY,UAAS7vY,GAAU8vY,EAAcD,EAAU18b,QAAS28b,EAAY55a,KAAM45a,EAAcD,EAAU18b,OAAQ,CACrHsL,EAAMqxb,EAAY/vd,MAClB81c,EAAc4wB,EAAQ7me,IAAI6+B,GAD9B,IAEIlxB,EAAU3P,KAAK0td,gBAAgB7sb,GAG/Buxb,GAFAlxd,EAAImwH,EAASrvH,IAAI6+B,GACjB2wb,EAAWxxd,KAAK8oe,aAAa7wB,GACftoc,EAAQ+xb,aACtB1hc,KAAKs9c,qBAAuB4P,IAAckF,EAAaZ,MACzD7hd,EAAQmH,QAAU9W,KAAKyva,cAEvB9/Z,EAAQnK,OAAOgsd,IAGjBxxd,KAAKm5c,YAAYt4a,GAAOlxB,EACxB3P,KAAK2gC,SAASz/B,GAAKyO,CACrB,CACF,CAAE,MAAO2oc,GACPZ,EAAM,CACJtqZ,MAAOkrZ,EAEX,CAAE,QACA,IACM4Z,IAAgBA,EAAY55a,OAASphC,EAAK+6c,EAAUh5P,SAAS/hN,EAAGtV,KAAKqwd,EAC3E,CAAE,QACA,GAAIva,EAAK,MAAMA,EAAItqZ,KACrB,CACF,CACA,IACE,IAAK,IAAIila,GAAY,UAASrvW,GAAUsvW,EAAcD,EAAU98b,QAAS+8b,EAAYh6a,KAAMg6a,EAAcD,EAAU98b,OAAQ,CACrHsL,EAAMyxb,EAAYnwd,OAClBwN,EAAU3P,KAAK0td,gBAAgB7sb,IAE3B/pB,QAAU9W,KAAKyva,cACvB9/Z,EAAQvN,SACV,CACF,CAAE,MAAOg3c,GACPJ,EAAM,CACJ5rZ,MAAOgsZ,EAEX,CAAE,QACA,IACMkZ,IAAgBA,EAAYh6a,OAASnhC,EAAKk7c,EAAUp5P,SAAS9hN,EAAGvV,KAAKywd,EAC3E,CAAE,QACA,GAAIrZ,EAAK,MAAMA,EAAI5rZ,KACrB,CACF,CACF,EAKA2uL,EAAK77O,UAAU6oe,iBAAmB,SAAU9wB,GAG1C,IAFA,IAAIv3b,EAAS,GACTgF,EAAO,GACFxkB,EAAI,EAAGs5B,EAAMy9a,EAAYp3c,OAAQK,EAAIs5B,EAAKt5B,IAAK,CACtD,IAAI6yB,EAAMkkb,EAAY/2c,GACtBwf,EAAOngB,KAAK,CACV0K,EAAG8oB,EAAI9oB,EACPC,EAAG6oB,EAAI7oB,IAETwa,EAAKnlB,KAAKwzB,EAAIkkY,KAChB,CACA,MAAO,CACLv3Y,OAAQA,EACRgF,KAAMA,EAEV,EACAq2N,EAAK77O,UAAU4oe,aAAe,SAAU7wB,GACtC,IAAIuZ,EAAWxxd,KAAKyxd,WAAWxZ,EAAY,IACvC92c,EAAKnB,KAAK+oe,iBAAiB9wB,GAC7Bv3b,EAASvf,EAAGuf,OACZgF,EAAOvkB,EAAGukB,KAOZ,OANA8rc,EAASvZ,YAAcA,EACvBuZ,EAAS9rc,KAAOA,EAChB8rc,EAASzmH,UAAY/qW,KAAK85Z,UAAU,SACpC03D,EAAS9wc,OAASA,EAClB8wc,EAASmJ,aAAe36d,KAAK26d,aAC7BnJ,EAASoJ,gBAAkB56d,KAAK46d,gBACzBpJ,CACT,EACOz1O,CACT,CA3JwB,CA2JtB,KACF,QCpKA,SAAS,IAAQr7N,EAAQi+a,EAAY/ia,EAAQotc,EAAiB1tc,GAC5D,IAAIz0B,EAAO,GACX,GAAI6Z,EAAO7f,OAAQ,CAGjB,IAFA,IAAIooe,EAAkB,GAClBC,EAAqB,GAChBhoe,EAAI,EAAGs5B,EAAM9Z,EAAO7f,OAAQK,EAAIs5B,EAAKt5B,IAAK,CACjD,IAAI8J,EAAQ0V,EAAOxf,GACnB+ne,EAAgB1oe,KAAKyK,EAAM,IAC3Bk+d,EAAmB3oe,KAAKyK,EAAM,GAChC,CACAk+d,EAAqBA,EAAmBt4c,WACxC,UAAK,CAACq4c,EAAiBC,IAAqB,SAAUC,EAAYnhe,GAChE,IAAIk3b,EAAU,GACVkqC,EAAeJ,EAAgBtc,YAAYyc,GAC3C19c,EAAK29c,EAAa,GACS,IAA3BH,EAAgBpoe,QAA8C,IAA9Bqoe,EAAmBroe,OAErDq+b,EAAoB,IAAVl3b,EAAc,CAAC,CAAC,IAAKyjB,EAAGxgB,EAAI,GAAKwgB,EAAGvgB,GAAI,CAAC,IAAKugB,EAAGxgB,EAAI,GAAKwgB,EAAGvgB,IAAM,CAAC,CAAC,IAAKugB,EAAGxgB,EAAI,GAAKwgB,EAAGvgB,GAAI,CAAC,IAAKugB,EAAGxgB,EAAI,GAAKwgB,EAAGvgB,KAExHyzb,GACFyqC,EAAa7oe,KAAK,CAChB0K,EAAGwgB,EAAGxgB,EACNC,EAAGugB,EAAGvgB,IAIRg0b,EADEtja,EACQija,IAAcuqC,GAAc,EAAO9tc,GAEnC,IAAY8tc,GAAc,GAElCphe,EAAQ,IACVk3b,EAAQ,GAAG,GAAK,MAGpBr4b,EAAOA,EAAK0M,OAAO2rb,EACrB,IACAr4b,EAAKtG,KAAK,CAAC,KACb,CACA,OAAOsG,CACT,CAWO,SAAS,IAAclF,EAAKy5d,EAAUx/b,EAAQotc,EAAiB1tc,GAQpE,IAPA,IAAIh1B,EAAQ,IAAS3E,EAAKy5d,GAAWA,EAAU,aAC3CT,EAAeh5d,EAAIg5d,aACrBh8B,EAAah9b,EAAIg9b,WAGf0qC,EAAa3O,IAFN/4d,EAAI+e,OAEwBi6c,EADnBh5d,EAAIi5d,iBAEpB/zd,EAAO,GACF3F,EAAI,EAAGs5B,EAAM6uc,EAAWxoe,OAAQK,EAAIs5B,EAAKt5B,IAAK,CACrD,IAAIooe,EAAaD,EAAWnoe,GAC5B2F,EAAOA,EAAK0M,OAAO,IAAQ+1d,EAAY3qC,EAAY/ia,EAAQotc,EAAiB1tc,GAC9E,CAEA,OADAh1B,EAAMO,KAAOA,EACNP,CACT,CAOO,SAASije,IAActrN,GAC5B,IAAIv3P,EAAQu3P,EAAWv3P,MACrBmI,EAAMovP,EAAWpvP,IACnB,MAAO,CAAC,CAACnI,EAAMzb,EAAG4jB,EAAI3jB,GAAI,CAAC2jB,EAAI5jB,EAAGyb,EAAMxb,GAC1C,CC5EuB0hd,IAAqB,OAAQ,CAClDjC,iBAAkB,OAClBsB,iBAAkB,SAA0Bhid,GAE1C,IAAIgB,EAAIhB,EAAUgB,EAChB0hB,EAAK1iB,EAAU0iB,GAEjB,QADQ,UAAQ1iB,EAAUiB,GAAKjB,EAAUiB,EAAI,CAACyhB,EAAI1iB,EAAUiB,IACnD8lB,KAAI,SAAUw4c,GACrB,MAAO,CACLv+d,EAAGA,EACHC,EAAGs+d,EAEP,GACF,IAGFzc,IAAc,OAAQ,OAAQ,CAC5Bjld,KAAM,SAAcnG,EAAKqH,GACvB,IAAI1C,EAAQ,IAAc3E,GAAK,GAAO,EAAO3B,MAM7C,OALYgJ,EAAUqI,SAAS,CAC7B1I,KAAM,OACNrC,MAAOA,EACPrE,KAAM,QAGV,EACAmqd,UAAW,SAAmB9jC,GAE5B,MAAO,CACL7/Y,OAAQ,SAAgBx9B,EAAGC,EAAGgU,GAI5B,YAHU,IAANA,IACFA,EAAI,KAEC,CAAC,CAAC,IAAKjU,EAAIiU,EAAGhU,EAAI,GAAI,CAAC,IAAKD,EAAIiU,EAAGhU,EAAI,GAAI,CAAC,IAAKD,EAAIiU,EAAGhU,EAAI,GAAI,CAAC,IAAKD,EAAIiU,EAAGhU,EAAI,GAAI,CAAC,KAC/F,EACAY,MAAO,CACLoT,EAAG,EACH08B,KAVQ0sY,EAAUv0Y,MAWlB8vC,YAAa,GAGnB,IAEF,ICtCI4lZ,IAAoB,SAAU/ne,GAEhC,SAAS+ne,EAAK9ne,GACZ,IAAIlB,EAAQiB,EAAOE,KAAK5B,KAAM2B,IAAQ3B,KACtCS,EAAMkI,KAAO,OACblI,EAAM6Q,UAAY,OAElB7Q,EAAMktd,gBAAiB,EAQvBltd,EAAMipe,aAAc,EACpB,IAAIvoe,EAAKQ,EAAI+ne,YACXA,OAAqB,IAAPvoe,GAAuBA,EACrC+V,EAAKvV,EAAIqsd,SACTA,OAAkB,IAAP92c,GAAwBA,EACnCC,EAAKxV,EAAIi5d,gBACTA,OAAyB,IAAPzjd,GAAwBA,EAI5C,OAHA1W,EAAMipe,YAAcA,EACpBjpe,EAAMutd,SAAWA,EACjBvtd,EAAMm6d,gBAAkBA,EACjBn6d,CACT,CA6BA,OAtDA,UAAUgpe,EAAM/ne,GA8BhB+ne,EAAKvpe,UAAU6oe,iBAAmB,SAAU9wB,GAG1C,IAFA,IAAIv3b,EAAS,GACTgF,EAAO,GACFxkB,EAAI,EAAGs5B,EAAMy9a,EAAYp3c,OAAQK,EAAIs5B,EAAKt5B,IAAK,CACtD,IAAI6yB,EAAMkkb,EAAY/2c,GACtBwf,EAAOngB,KAAKwzB,EAAIrT,QAChBgF,EAAKnlB,KAAKwzB,EAAIkkY,KAChB,CACA,MAAO,CACLv3Y,OAAQA,EACRgF,KAAMA,EAEV,EAKA+jd,EAAKvpe,UAAUovd,aAAe,WAC5B,OAAItvd,KAAK0pe,YACAhoe,EAAOxB,UAAUovd,aAAa1td,KAAK5B,MAE/BA,KAAKm2c,YACJj8b,GAChB,EACOuvd,CACT,CAxDwB,CAwDtB,KACF,QC5DuB7c,IAAqB,OAAQ,CAClDjC,iBAAkB,OAClBsB,iBAAkB,SAA0Bhid,GAC1C,OAAO,IAAYA,EACrB,IAEF8id,IAAc,OAAQ,OAAQ,CAC5Bjld,KAAM,SAAcnG,EAAKqH,GACvB,IAAI8C,EAAQ,IAASnK,GAAK,GAAM,EAAO,aACnCkF,EAAO,IAAY7G,KAAK0sd,YAAY/qd,EAAI+e,QAAS1gB,KAAKi+Q,WAAWotJ,SACrE,OAAOria,EAAUqI,SAAS,OAAQ,CAChC/K,OAAO,WAAS,UAAS,CAAC,EAAGwF,GAAQ,CACnCjF,KAAMA,KAGZ,EACAuld,UAAW,SAAmB9jC,GAC5B,MAAO,CACL7/Y,OAAQ,SACR38B,MAAO,CACLoT,EAAG,IACH08B,KAAM0sY,EAAUv0Y,OAGtB,IAEF,ICpBI41b,IAAoB,SAAUjoe,GAEhC,SAASioe,IACP,IAAIlpe,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAIhE,OAHAS,EAAMkI,KAAO,OACblI,EAAM6Q,UAAY,OAClB7Q,EAAMktd,gBAAiB,EAChBltd,CACT,CACA,OARA,UAAUkpe,EAAMjoe,GAQTioe,CACT,CAVwB,CAUtB,KACF,QCdI,IAAuB,SAAUjoe,GAEnC,SAASmvR,IACP,IAAIpwR,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAGhE,OAFAS,EAAMkI,KAAO,UACblI,EAAMmpe,aAAe,CAAC,EACfnpe,CACT,CAkMA,OAxMA,UAAUowR,EAASnvR,GAOnBmvR,EAAQ3wR,UAAUoxa,eAAiB,SAAUsgD,EAAkBvT,QAC5C,IAAbA,IACFA,GAAW,GAEb,IAAK,IAAIn9c,EAAI,EAAGA,EAAI0wd,EAAiB/wd,OAAQK,IAAK,CAChD,IAAI+2c,EAAc2Z,EAAiB1wd,GAC/BymD,EAAQ3nD,KAAK6pe,aAAa5xB,GAC1BjqY,EAAShuE,KAAK8pe,cACdC,GAAS,UAAI/pe,KAAKwud,YAAa,CAAC,MAAO,gBACtC,UAASub,KACZA,EAAS/7Z,EAAS,GAEpBhuE,KAAKgqe,8BAA8Bh8Z,EAAQ+7Z,GAC3C/pe,KAAKiqe,cAAchyB,EAAatwZ,EAAOqmB,EAAQ+7Z,EACjD,CACF,EAEAl5M,EAAQ3wR,UAAU6zC,MAAQ,SAAU8rF,EAAOl+H,GAEzC,OADA3B,KAAKoud,iBAAiB,QAASvuV,EAAsB,mBAARl+H,EAAqBA,EAAM,IACjE3B,IACT,EAIA6wR,EAAQ3wR,UAAUqP,MAAQ,WACxB7N,EAAOxB,UAAUqP,MAAM3N,KAAK5B,MAC5BA,KAAKkqe,uBACLlqe,KAAK4pe,aAAe,CAAC,CACvB,EACA/4M,EAAQ3wR,UAAU2pe,aAAe,SAAUnkd,GACzC,IACIykd,EADYnqe,KAAKoqD,aAAa,SACPm0E,YAAY,GACnCrkH,EAAM3V,IACN4V,GAAO5V,IAaX,OAZAmhB,EAAKtd,SAAQ,SAAUg6B,GACrB,IAAIjgC,EAAQigC,EAAI61X,KAAckyE,GAC1Bhoe,EAAQgY,IACVA,EAAMhY,GAEJA,EAAQ+X,IACVA,EAAM/X,EAEV,IACI+X,IAAQC,IACVD,EAAMC,EAAM,GAEP,CAACD,EAAKC,EACf,EACA02Q,EAAQ3wR,UAAU4pe,YAAc,WAC9B,IAAI97Z,EAAShuE,KAAK6vd,gBAAgB,QAIlC,OAHK,UAAS7hZ,KACZA,EAAShuE,KAAKoqe,kBAETp8Z,CACT,EACA6iN,EAAQ3wR,UAAU8pe,8BAAgC,SAAUh8Z,EAAQ/Q,GAClE,IAAIota,EAAyBrqe,KAAKsqe,4BAC9B18c,EAAKogD,EAAS/Q,EACdt3B,EAAM0kc,EAAuB1ld,WAAW,MAC5C0ld,EAAuBt8d,MAAQs8d,EAAuBr8d,OAAc,EAAL4f,EAC/D+X,EAAIujO,UAAU,EAAG,EAAGmhO,EAAuBt8d,MAAOs8d,EAAuBr8d,QACzE23B,EAAIrrB,cAAgBqrB,EAAIprB,cAAqB,EAALqT,EACxC+X,EAAItrB,WAAa4iD,EACjBt3B,EAAIvrB,YAAc,QAClBurB,EAAI+uN,YACJ/uN,EAAI+5K,KAAK9xL,GAAKA,EAAIogD,EAAQ,EAAa,EAAV/zD,KAAK+B,IAAQ,GAC1C2pB,EAAI0yM,YACJ1yM,EAAIiW,MACN,EACAi1O,EAAQ3wR,UAAU+pe,cAAgB,SAAUvkd,EAAMiiC,EAAOqmB,EAAQ/Q,GAC/D,IAAI+6X,EAAK72b,EAEL+V,EAAKlX,KAAKi+Q,WACZv3P,EAAQxP,EAAGwP,MACXmI,EAAM3X,EAAG2X,IACP9gB,EAAQ/N,KAAKi+Q,WAAWznJ,WACxBxoH,EAAShO,KAAKi+Q,WAAWkuJ,YAGzBo+D,EADYvqe,KAAKoqD,aAAa,SACPm0E,YAAY,GAEvCv+H,KAAKkqe,uBACL,IAAIvkc,EAAM3lC,KAAKwqe,qBAEX7ib,IACFjiC,EAAOA,EAAKnV,QAAO,SAAU6xB,GAC3B,OAAOA,EAAI61X,KAAcsyE,IAAe5ib,EAAM,IAAMvlB,EAAI61X,KAAcsyE,IAAe5ib,EAAM,EAC7F,KAGF,IAAI7uC,EAAQ9Y,KAAKkqP,OAAOqgP,GACxB,IACE,IAAK,IAAIE,GAAS,UAAS/kd,GAAOgld,EAAWD,EAAOl1c,QAASm1c,EAASpyb,KAAMoyb,EAAWD,EAAOl1c,OAAQ,CACpG,IAAIxB,EAAM22c,EAASvoe,MACfgV,EAAKnX,KAAKyxd,WAAW19b,GACvB9oB,EAAIkM,EAAGlM,EACPC,EAAIiM,EAAGjM,EACL4jB,EAAQhW,EAAMA,MAAMib,EAAIkkY,KAAcsyE,IAC1Cvqe,KAAK2qe,2BAA2B1/d,EAAIyb,EAAMzb,EAAGC,EAAI2jB,EAAI3jB,EAAG8iE,EAAS/Q,EAAMnuC,EAAO6W,EAChF,CACF,CAAE,MAAOwyZ,GACPH,EAAM,CACJ5qY,MAAO+qY,EAEX,CAAE,QACA,IACMuyC,IAAaA,EAASpyb,OAASn3C,EAAKspe,EAAOxxQ,SAAS93N,EAAGS,KAAK6oe,EAClE,CAAE,QACA,GAAIzyC,EAAK,MAAMA,EAAI5qY,KACrB,CACF,CAEA,IAAIw9a,EAAUjlc,EAAI2sP,aAAa,EAAG,EAAGvkR,EAAOC,GAC5ChO,KAAKkqe,uBACLlqe,KAAK6qe,SAASD,GACdjlc,EAAI6sP,aAAao4M,EAAS,EAAG,GAC7B,IAAIE,EAAa9qe,KAAK+qe,gBACtBD,EAAW1ke,KAAK,IAAKsgB,EAAMzb,GAC3B6/d,EAAW1ke,KAAK,IAAKyoB,EAAI3jB,GACzB4/d,EAAW1ke,KAAK,QAAS2H,GACzB+8d,EAAW1ke,KAAK,SAAU4H,GAC1B88d,EAAW1ke,KAAK,MAAOu/B,EAAIp+B,QAC3Buje,EAAW5oe,IAAI,SAAUlC,KAAK8oe,aAAapjd,GAC7C,EAEAmrQ,EAAQ3wR,UAAUkqe,eAAiB,WACjC,IAAIj/a,EAAWnrD,KAAKoqD,aAAa,YAC7B6zN,EAAaj+Q,KAAKi+Q,WACtB,OAAOhkQ,KAAKC,IAAI+jQ,EAAWznJ,YAAgD,EAAlCrrE,EAAS++L,OAAO,GAAG1oC,MAAM3gN,QAAao9Q,EAAWkuJ,aAAiD,EAAlChhX,EAAS++L,OAAO,GAAG1oC,MAAM3gN,QACpI,EACAgwR,EAAQ3wR,UAAUgqe,qBAAuB,WACvC,IAAIvkc,EAAM3lC,KAAKwqe,qBACf7kc,EAAIujO,UAAU,EAAG,EAAGvjO,EAAIp+B,OAAOwG,MAAO43B,EAAIp+B,OAAOyG,OACnD,EACA6iR,EAAQ3wR,UAAUsqe,mBAAqB,WACrC,IAAIjje,EAASvH,KAAKgre,aAOlB,OANKzje,IACHA,EAASoD,SAAS+Z,cAAc,UAChC1kB,KAAKgre,aAAezje,GAEtBA,EAAOwG,MAAQ/N,KAAKi+Q,WAAWznJ,WAC/BjvH,EAAOyG,OAAShO,KAAKi+Q,WAAWkuJ,YACzB5ka,EAAOod,WAAW,KAC3B,EACAksQ,EAAQ3wR,UAAUoqe,0BAA4B,WAI5C,OAHKtqe,KAAKqqe,yBACRrqe,KAAKqqe,uBAAyB1/d,SAAS+Z,cAAc,WAEhD1kB,KAAKqqe,sBACd,EACAx5M,EAAQ3wR,UAAUyqe,2BAA6B,SAAU1/d,EAAGC,EAAGgU,EAAG4P,EAAO6W,GACvE,IAAI0kc,EAAyBrqe,KAAKsqe,4BAClC3kc,EAAIk3N,YAAc/tO,EAClB6W,EAAIs7C,UAAUopZ,EAAwBp/d,EAAIiU,EAAGhU,EAAIgU,EACnD,EACA2xQ,EAAQ3wR,UAAU2qe,SAAW,SAAU/pZ,GAIrC,IAHA,IAAImqZ,EAAYjre,KAAKoqD,aAAa,SAC9BqmP,EAAS3vN,EAAIp7D,KACbkkd,EAAe5pe,KAAK4pe,aACf1oe,EAAI,EAAGA,EAAIuvS,EAAO5vS,OAAQK,GAAK,EAAG,CACzC,IAAI4tB,EAAQ2hR,EAAOvvS,GACnB,IAAI,UAAS4tB,GAAQ,CACnB,IAAIi9N,EAAU69O,EAAa96c,GAAS86c,EAAa96c,GAAS,IAAUyvY,QAAQ0sE,EAAUtmZ,SAAS71D,EAAQ,MACvG2hR,EAAOvvS,EAAI,GAAK6qP,EAAQ,GACxB0kD,EAAOvvS,EAAI,GAAK6qP,EAAQ,GACxB0kD,EAAOvvS,EAAI,GAAK6qP,EAAQ,GACxB0kD,EAAOvvS,GAAK4tB,CACd,CACF,CACF,EACA+hQ,EAAQ3wR,UAAU6qe,cAAgB,WAChC,IAAID,EAAa9qe,KAAK8qe,WACtB,OAAIA,IAIJA,EADgB9qe,KAAKgJ,UACEqI,SAAS,CAC9B1I,KAAM,QACNrC,MAAO,CAAC,IAEVtG,KAAK8qe,WAAaA,EACXA,EACT,EACAj6M,EAAQ3wR,UAAU4oe,aAAe,SAAU7wB,GACzC,IAAIuZ,EAAWxxd,KAAKyxd,WAAWxZ,EAAY,IACvCvyb,EAAOuyb,EAAYjnb,KAAI,SAAU+C,GACnC,OAAOA,EAAIkkY,IACb,IACA,OAAO,WAAS,UAAS,CAAC,EAAGu5D,GAAW,CACtCvZ,YAAaA,EACbvyb,KAAMA,GAEV,EACOmrQ,CACT,CA1M2B,CA0MzB,KACF,QCzMO,SAASq6M,IAAcjhe,GAC5B,IAAI9I,EAAI+V,EAUJi0d,EACA91N,EAOA+1N,EACAj2N,EAlBAlqQ,EAAIhB,EAAUgB,EAChBC,EAAIjB,EAAUiB,EACdyhB,EAAK1iB,EAAU0iB,GACf2X,EAAOr6B,EAAUq6B,MAQf,UAAQp5B,IACSige,GAAnBhqe,GAAK,UAAO+J,EAAG,IAAc,GAAImqQ,EAAOl0Q,EAAG,KAE3Cgqe,EAAOx+c,EACP0oP,EAAOnqQ,IAIL,UAAQD,IACSmge,GAAnBl0d,GAAK,UAAOjM,EAAG,IAAc,GAAIkqQ,EAAOj+P,EAAG,KAE3Ck0d,EAAOnge,EAAIq5B,EAAO,EAClB6wO,EAAOlqQ,EAAIq5B,EAAO,GAEpB,IAAI5jB,EAAS,CAAC,CACZzV,EAAGmge,EACHlge,EAAGige,GACF,CACDlge,EAAGmge,EACHlge,EAAGmqQ,IAaL,OAPA30P,EAAOngB,KAAK,CACV0K,EAAGkqQ,EACHjqQ,EAAGmqQ,GACF,CACDpqQ,EAAGkqQ,EACHjqQ,EAAGige,IAEEzqd,CACT,CAQO,SAAS2qd,IAAY3qd,EAAQ4qd,QACjB,IAAbA,IACFA,GAAW,GAEb,IAAIzke,EAAO,GACPw+a,EAAa3ka,EAAO,GACxB7Z,EAAKtG,KAAK,CAAC,IAAK8kb,EAAWp6a,EAAGo6a,EAAWn6a,IACzC,IAAK,IAAIhK,EAAI,EAAGs5B,EAAM9Z,EAAO7f,OAAQK,EAAIs5B,EAAKt5B,IAC5C2F,EAAKtG,KAAK,CAAC,IAAKmgB,EAAOxf,GAAG+J,EAAGyV,EAAOxf,GAAGgK,IAOzC,OAJIoge,IACFzke,EAAKtG,KAAK,CAAC,IAAK8kb,EAAWp6a,EAAGo6a,EAAWn6a,IACzCrE,EAAKtG,KAAK,CAAC,OAENsG,CACT,CAKO,SAAS,IAAYmnE,EAAQu9Z,GAClC,IAAI59c,EAAK,EACLC,EAAK,EACLqrQ,EAAK,EACLqqM,EAAK,EA6BT,OA5BI,UAAQt1Z,GACY,IAAlBA,EAAOntE,OACT8sB,EAAKC,EAAKqrQ,EAAKqqM,EAAKt1Z,EAAO,GACA,IAAlBA,EAAOntE,QAChB8sB,EAAKsrQ,EAAKjrN,EAAO,GACjBpgD,EAAK01c,EAAKt1Z,EAAO,IACU,IAAlBA,EAAOntE,QAChB8sB,EAAKqgD,EAAO,GACZpgD,EAAK01c,EAAKt1Z,EAAO,GACjBirN,EAAKjrN,EAAO,KAEZrgD,EAAKqgD,EAAO,GACZpgD,EAAKogD,EAAO,GACZirN,EAAKjrN,EAAO,GACZs1Z,EAAKt1Z,EAAO,IAGdrgD,EAAKC,EAAKqrQ,EAAKqqM,EAAKt1Z,EAGlBrgD,EAAKC,EAAK29c,IAEZ39c,EAAK29c,GADL59c,EAAKA,EAAK49c,GAAa,EAAI39c,EAAKD,GAAM,IAGpCsrQ,EAAKqqM,EAAKiI,IAEZjI,EAAKiI,GADLtyM,EAAKA,EAAKsyM,GAAa,EAAIjI,EAAKrqM,GAAM,IAGjC,CAACtrQ,GAAM,EAAGC,GAAM,EAAGqrQ,GAAM,EAAGqqM,GAAM,EAC3C,CAQO,SAASkI,IAAsB7pe,EAAK+e,EAAQu9P,GACjD,IAAIp3Q,EAAO,GACX,GAAIo3Q,EAAWktJ,OAAQ,CACrB,IAAIz1Y,EAAKuoP,EAAWutJ,aAAe,CACjCvga,EAAGgzQ,EAAWv3P,MAAMzb,EACpBC,EAAGwV,EAAO,GAAGxV,GACX,CACFD,EAAGyV,EAAO,GAAGzV,EACbC,EAAG+yQ,EAAWv3P,MAAMxb,GAElBugB,EAAKwyP,EAAWutJ,aAAe,CACjCvga,EAAGgzQ,EAAWpvP,IAAI5jB,EAClBC,EAAGwV,EAAO,GAAGxV,GACX,CACFD,EAAGyV,EAAO,GAAGzV,EACbC,EAAG+yQ,EAAWpvP,IAAI3jB,GAGhB8iE,GAAS,UAAIrsE,EAAK,CAAC,aAAc,QAAS,WAC9C,GAAIqsE,EAAQ,CACV,IAAIjgE,EAAQkwQ,EAAWutJ,aAAevxZ,KAAKoG,IAAIK,EAAO,GAAGxV,EAAIwV,EAAO,GAAGxV,GAAKwV,EAAO,GAAGzV,EAAIyV,EAAO,GAAGzV,EAChG+C,EAASiwQ,EAAWutJ,aAAevtJ,EAAWznJ,WAAaynJ,EAAWkuJ,YACtEhra,GAAK,UAAO,IAAY6sE,EAAQ/zD,KAAKC,IAAInM,EAAOC,IAAU,GAC5D2f,EAAKxsB,EAAG,GACRysB,EAAKzsB,EAAG,GACR83R,EAAK93R,EAAG,GACRmie,EAAKnie,EAAG,GAENsqe,EAAyBxtN,EAAWutJ,cAAgBvtJ,EAAW0tJ,UAAU,KACzE+/D,EAAOD,EAAyB,EAAI,EACpCE,EAAW,SAAkBzsd,GAC/B,OAAOusd,GAA0Bvsd,EAAIA,CACvC,EACArY,EAAKtG,KAAK,CAAC,IAAKm1B,EAAGzqB,EAAGwgB,EAAGvgB,EAAIyge,EAASh+c,KAC/B,IAAPA,GAAY9mB,EAAKtG,KAAK,CAAC,IAAKotB,EAAIA,EAAI,EAAG,EAAG+9c,EAAMh2c,EAAGzqB,EAAI0iB,EAAIlC,EAAGvgB,IAC9DrE,EAAKtG,KAAK,CAAC,IAAKkrB,EAAGxgB,EAAI2iB,EAAInC,EAAGvgB,IACvB,IAAP0iB,GAAY/mB,EAAKtG,KAAK,CAAC,IAAKqtB,EAAIA,EAAI,EAAG,EAAG89c,EAAMjgd,EAAGxgB,EAAGwgB,EAAGvgB,EAAIyge,EAAS/9c,KACtE/mB,EAAKtG,KAAK,CAAC,IAAKkrB,EAAGxgB,EAAGyqB,EAAGxqB,EAAIyge,EAAS1yM,KAC/B,IAAPA,GAAYpyR,EAAKtG,KAAK,CAAC,IAAK04R,EAAIA,EAAI,EAAG,EAAGyyM,EAAMjgd,EAAGxgB,EAAIguR,EAAIvjQ,EAAGxqB,IAC9DrE,EAAKtG,KAAK,CAAC,IAAKm1B,EAAGzqB,EAAIq4d,EAAI5tc,EAAGxqB,IACvB,IAAPo4d,GAAYz8d,EAAKtG,KAAK,CAAC,IAAK+ie,EAAIA,EAAI,EAAG,EAAGoI,EAAMh2c,EAAGzqB,EAAGyqB,EAAGxqB,EAAIyge,EAASrI,IACxE,MACEz8d,EAAKtG,KAAK,CAAC,IAAKm1B,EAAGzqB,EAAGyqB,EAAGxqB,IACzBrE,EAAKtG,KAAK,CAAC,IAAKkrB,EAAGxgB,EAAGyqB,EAAGxqB,IACzBrE,EAAKtG,KAAK,CAAC,IAAKkrB,EAAGxgB,EAAGwgB,EAAGvgB,IACzBrE,EAAKtG,KAAK,CAAC,IAAKm1B,EAAGzqB,EAAGwgB,EAAGvgB,IACzBrE,EAAKtG,KAAK,CAAC,IAAKm1B,EAAGzqB,EAAGyqB,EAAGxqB,IAE3BrE,EAAKtG,KAAK,CAAC,KACb,CACA,GAAI09Q,EAAWotJ,QAAS,CACtB,IAAIxtY,EAASogP,EAAWiuJ,YACpBh1Z,EAAK+hB,IAASt3B,EAAKs8Q,GACrBl8P,EAAa7K,EAAG6K,WAChBC,EAAW9K,EAAG8K,SAChB,GAAwB,UAApBi8P,EAAWt1Q,MAAqBs1Q,EAAWutJ,aAGxC,CACL,IAAI7vZ,EAAM,SAAa1J,GACrB,OAAOgI,KAAK0B,IAAI1J,EAAG,EACrB,EACI0b,EAAK1T,KAAK2C,KAAKjB,EAAIkiB,EAAO5yB,EAAIyV,EAAO,GAAGzV,GAAK0Q,EAAIkiB,EAAO3yB,EAAIwV,EAAO,GAAGxV,IACtE0iB,EAAK3T,KAAK2C,KAAKjB,EAAIkiB,EAAO5yB,EAAIyV,EAAO,GAAGzV,GAAK0Q,EAAIkiB,EAAO3yB,EAAIwV,EAAO,GAAGxV,IAE1ErE,EAAOkwb,IAAcl5Z,EAAO5yB,EAAG4yB,EAAO3yB,EAAGyiB,EAAIswP,EAAWl8P,WAAYk8P,EAAWj8P,SAAU4L,EAC3F,MATE/mB,EAAOkwb,IAAcl5Z,EAAO5yB,EAAG4yB,EAAO3yB,EAAG+yQ,EAAWmuJ,YAAarqZ,EAAYC,EAUjF,CACA,OAAOnb,CACT,CA4CO,SAAS+ke,IAAclrd,EAAQixc,EAAYka,GAChD,IAAIhle,EAAO,GAUX,OATK,UAAM8qd,GAEAka,EAEThle,EAAKtG,KAAK,CAAC,IAAKmgB,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,IAAKwV,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,KAAMwV,EAAO,GAAGzV,EAAIyV,EAAO,GAAGzV,GAAK,GAAIyV,EAAO,GAAGxV,EAAIwV,EAAO,GAAGxV,GAAK,GAAI,CAAC,MAGtJrE,EAAKtG,KAAK,CAAC,IAAKmgB,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,IAAKwV,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,IAAKwV,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,IAAKwV,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,MAN/IrE,EAAKtG,KAAK,CAAC,IAAKmgB,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,IAAKwV,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,IAAKymd,EAAW,GAAG1md,EAAG0md,EAAW,GAAGzmd,GAAI,CAAC,IAAKymd,EAAW,GAAG1md,EAAG0md,EAAW,GAAGzmd,GAAI,CAAC,MAQ1JrE,CACT,CAIA,SAAS,IAAK6uB,EAAIjK,GAChB,MAAO,CAACA,EAAIiK,EACd,CC5P2Bk3b,IAAqB,WAAY,CAC1DjC,iBAAkB,OAClBsB,iBAAkB,SAA0Bhid,GAC1C,OAAOihe,IAAcjhe,EACvB,IAGF8id,IAAc,WAAY,OAAQ,CAChCjld,KAAM,SAAcnG,EAAKqH,GACvB,IAkBInC,EAlBAiF,EAAQ,IAASnK,GAAK,GAAO,GAC7B+P,EAAQ1I,EACR8ie,EAAgBnqe,aAAiC,EAASA,EAAI4oE,WAClE,GAAIuha,EAAe,CACjBp6d,EAAQ1I,EAAUyI,SAAS,CACzBxP,KAAM,mBAER,IAAI6za,EAAkBylD,IAAuB55d,GACzCoqe,EAAiBP,IAAsB7pe,EAAK3B,KAAK0sd,YAAY/qd,EAAI+e,QAAS1gB,KAAKi+Q,YACnFvsQ,EAAML,SAAS,OAAQ,CACrB/K,OAAO,WAAS,UAAS,CAAC,EAAGwva,GAAkB,CAC7Cjva,KAAMkle,IAERv3d,SAAS,EACTC,QAAS,EACTxS,KAAMund,KAEV,CAGE3id,EADEiF,EAAMkiE,QAAUhuE,KAAKi+Q,WAAWktJ,ODqOjC,SAAiCzqZ,EAAQu9P,EAAYjwM,GAC1D,IAAI7sE,EAAI+V,EAAIC,EAAImnB,EAAIC,EAAIC,EAAIC,EAExBC,GAAK,WAAO,UAAc,IAAI,UAAOhe,IAAS,GAAQ,GACxDgV,EAAKgJ,EAAG,GACRjT,EAAKiT,EAAG,GACRjV,EAAKiV,EAAG,GACRhT,EAAKgT,EAAG,GACNqoQ,GAAK,UAAyB,iBAAX/4N,EAAsBvtC,MAAM,GAAGmb,KAAKoyB,GAAUA,EAAQ,GAC3ErgD,EAAKo5Q,EAAG,GACRn5Q,EAAKm5Q,EAAG,GACR9N,EAAK8N,EAAG,GACRu8L,EAAKv8L,EAAG,GACN9oB,EAAWutJ,eACiB//Y,GAA9BtqB,GAAK,UAAO,IAAKsqB,EAAIC,GAAK,IAAY,GAAIA,EAAKvqB,EAAG,IAKhD88Q,EAAW0tJ,UAAU,OACOj2Y,GAA9Bxe,GAAK,UAAO,IAAKwe,EAAIjK,GAAK,IAAY,GAAIA,EAAKvU,EAAG,GACpBuS,GAA9BtS,GAAK,UAAO,IAAKsS,EAAIiC,GAAK,IAAY,GAAIA,EAAKvU,EAAG,IAEhD8mQ,EAAW0tJ,UAAU,OACOj2Y,GAA9B4I,GAAK,UAAO,IAAK5I,EAAIhK,GAAK,IAAY,GAAIA,EAAK4S,EAAG,GACpB7S,GAA9B8S,GAAK,UAAO,IAAK9S,EAAIhC,GAAK,IAAY,GAAIA,EAAK8U,EAAG,IAEpD,IAAI13B,EAAO,GAYPwZ,EAAM,SAAapO,GACrB,OAAOgI,KAAKoG,IAAIpO,EAClB,EAyCA,OAtCQ0b,GAFR6Q,GAAK,UAAO,IAAY,CAAC7Q,EAAIC,EAAIqrQ,EAAIqqM,GAAKrpd,KAAKC,IAAImG,EAAIqL,EAAGzgB,EAAIyqB,EAAGzqB,GAAIoV,EAAIoL,EAAGvgB,EAAIwqB,EAAGxqB,KAAK8lB,KAAI,SAAUjL,GACpG,OAAO1F,EAAI0F,EACb,IAAI,IAAY,GAAI6H,EAAK4Q,EAAG,GAAIy6P,EAAKz6P,EAAG,GAAI8kc,EAAK9kc,EAAG,GAChDy/O,EAAWutJ,eACqB79Y,GAAlC8Q,GAAK,UAAO,CAAC6kc,EAAI31c,EAAIC,EAAIqrQ,GAAK,IAAY,GAAIrrQ,EAAK6Q,EAAG,GAAIw6P,EAAKx6P,EAAG,GAAI6kc,EAAK7kc,EAAG,IAE5E/I,EAAGxqB,EAAIugB,EAAGvgB,GACZrE,EAAKtG,KAAK,CAAC,IAAKmrB,EAAGzgB,EAAGygB,EAAGxgB,EAAI+tR,IACtB,IAAPA,GAAYpyR,EAAKtG,KAAK,CAAC,IAAK04R,EAAIA,EAAI,EAAG,EAAG,EAAGvtQ,EAAGzgB,EAAIguR,EAAIvtQ,EAAGxgB,IAC3DrE,EAAKtG,KAAK,CAAC,IAAKm1B,EAAGzqB,EAAIq4d,EAAI5tc,EAAGxqB,IACvB,IAAPo4d,GAAYz8d,EAAKtG,KAAK,CAAC,IAAK+ie,EAAIA,EAAI,EAAG,EAAG,EAAG5tc,EAAGzqB,EAAGyqB,EAAGxqB,EAAIo4d,IAC1Dz8d,EAAKtG,KAAK,CAAC,IAAKkrB,EAAGxgB,EAAGwgB,EAAGvgB,EAAIyiB,IACtB,IAAPA,GAAY9mB,EAAKtG,KAAK,CAAC,IAAKotB,EAAIA,EAAI,EAAG,EAAG,EAAclC,EAAGxgB,EAAI0iB,EAAIlC,EAAGvgB,IACtErE,EAAKtG,KAAK,CAAC,IAAKkpB,EAAGxe,EAAI2iB,EAAInE,EAAGve,IACvB,IAAP0iB,GAAY/mB,EAAKtG,KAAK,CAAC,IAAKqtB,EAAIA,EAAI,EAAG,EAAG,EAAGnE,EAAGxe,EAAGwe,EAAGve,EAAI0iB,IAC1D/mB,EAAKtG,KAAK,CAAC,IAAKmrB,EAAGzgB,EAAGygB,EAAGxgB,EAAI+tR,IAC7BpyR,EAAKtG,KAAK,CAAC,OACFmrB,EAAGzgB,EAAIyqB,EAAGzqB,GACnBpE,EAAKtG,KAAK,CAAC,IAAKkpB,EAAGxe,EAAI2iB,EAAInE,EAAGve,IACvB,IAAP0iB,GAAY/mB,EAAKtG,KAAK,CAAC,IAAKqtB,EAAIA,EAAI,EAAG,EAAG,EAAGnE,EAAGxe,EAAGwe,EAAGve,EAAI0iB,IAC1D/mB,EAAKtG,KAAK,CAAC,IAAKmrB,EAAGzgB,EAAGygB,EAAGxgB,EAAI+tR,IACtB,IAAPA,GAAYpyR,EAAKtG,KAAK,CAAC,IAAK04R,EAAIA,EAAI,EAAG,EAAG,EAAGvtQ,EAAGzgB,EAAIguR,EAAIvtQ,EAAGxgB,IAC3DrE,EAAKtG,KAAK,CAAC,IAAKm1B,EAAGzqB,EAAIq4d,EAAI5tc,EAAGxqB,IACvB,IAAPo4d,GAAYz8d,EAAKtG,KAAK,CAAC,IAAK+ie,EAAIA,EAAI,EAAG,EAAG,EAAG5tc,EAAGzqB,EAAGyqB,EAAGxqB,EAAIo4d,IAC1Dz8d,EAAKtG,KAAK,CAAC,IAAKkrB,EAAGxgB,EAAGwgB,EAAGvgB,EAAIyiB,IACtB,IAAPA,GAAY9mB,EAAKtG,KAAK,CAAC,IAAKotB,EAAIA,EAAI,EAAG,EAAG,EAAGlC,EAAGxgB,EAAI0iB,EAAIlC,EAAGvgB,IAC3DrE,EAAKtG,KAAK,CAAC,IAAKkpB,EAAGxe,EAAI2iB,EAAInE,EAAGve,IAC9BrE,EAAKtG,KAAK,CAAC,QAEXsG,EAAKtG,KAAK,CAAC,IAAKkrB,EAAGxgB,EAAGwgB,EAAGvgB,EAAIyiB,IACtB,IAAPA,GAAY9mB,EAAKtG,KAAK,CAAC,IAAKotB,EAAIA,EAAI,EAAG,EAAG,EAAGlC,EAAGxgB,EAAI0iB,EAAIlC,EAAGvgB,IAC3DrE,EAAKtG,KAAK,CAAC,IAAKkpB,EAAGxe,EAAI2iB,EAAInE,EAAGve,IACvB,IAAP0iB,GAAY/mB,EAAKtG,KAAK,CAAC,IAAKqtB,EAAIA,EAAI,EAAG,EAAG,EAAGnE,EAAGxe,EAAGwe,EAAGve,EAAI0iB,IAC1D/mB,EAAKtG,KAAK,CAAC,IAAKmrB,EAAGzgB,EAAGygB,EAAGxgB,EAAI+tR,IACtB,IAAPA,GAAYpyR,EAAKtG,KAAK,CAAC,IAAK04R,EAAIA,EAAI,EAAG,EAAG,EAAGvtQ,EAAGzgB,EAAIguR,EAAIvtQ,EAAGxgB,IAC3DrE,EAAKtG,KAAK,CAAC,IAAKm1B,EAAGzqB,EAAIq4d,EAAI5tc,EAAGxqB,IACvB,IAAPo4d,GAAYz8d,EAAKtG,KAAK,CAAC,IAAK+ie,EAAIA,EAAI,EAAG,EAAG,EAAG5tc,EAAGzqB,EAAGyqB,EAAGxqB,EAAIo4d,IAC1Dz8d,EAAKtG,KAAK,CAAC,IAAKkrB,EAAGxgB,EAAGwgB,EAAGvgB,EAAIyiB,IAC7B9mB,EAAKtG,KAAK,CAAC,OAENsG,CACT,CCvTamle,CAAwBhse,KAAK0sd,YAAY/qd,EAAI+e,QAAS1gB,KAAKi+Q,WAAYnyQ,EAAMkiE,QAE7EhuE,KAAKssd,UDwKX,SAA6B5rc,EAAQs8O,EAASivO,GACnD,IAAIl+d,EAAQk+d,EAAKz1W,WACbxoH,EAASi+d,EAAK9/D,YACdhB,EAAuB,SAAd8gE,EAAKtje,KACd9B,EAAO,GACPqY,GAAKwB,EAAO,GAAGzV,EAAIyV,EAAO,GAAGzV,GAAK,EAClC4W,EAAKoqd,EAAKzgE,aAAetsZ,EAAIlR,EAASD,EAAQmR,EAAInR,EAAQC,EAmB9D,MAlBgB,UAAZgvP,GACEmuK,GACFtka,EAAKtG,KAAK,CAAC,IAAKmgB,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,EAAI2W,IAC3Chb,EAAKtG,KAAK,CAAC,IAAKmgB,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,EAAI2W,IAC3Chb,EAAKtG,KAAK,CAAC,IAAK2e,EAAGA,EAAG,EAAG,EAAG,EAAGwB,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,EAAI2W,IAC1Dhb,EAAKtG,KAAK,CAAC,IAAKmgB,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,EAAI2W,IAC3Chb,EAAKtG,KAAK,CAAC,IAAK2e,EAAGA,EAAG,EAAG,EAAG,EAAGwB,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,EAAI2W,MAE1Dhb,EAAKtG,KAAK,CAAC,IAAKmgB,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,IACvCrE,EAAKtG,KAAK,CAAC,IAAKmgB,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,IACvCrE,EAAKtG,KAAK,CAAC,IAAK2e,EAAGA,EAAG,EAAG,EAAG,EAAGwB,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,IACtDrE,EAAKtG,KAAK,CAAC,IAAKmgB,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,IACvCrE,EAAKtG,KAAK,CAAC,IAAK2e,EAAGA,EAAG,EAAG,EAAG,EAAGwB,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,KAExDrE,EAAKtG,KAAK,CAAC,OAEXsG,EAAOwke,IAAY3qd,GAEd7Z,CACT,CClM4Bqle,CAAoBvqe,EAAI+e,OAAQ5U,EAAMkxP,QAASh9P,KAAKi+Q,aAE5E,IAAIx4Q,EAAQiM,EAAML,SAAS,OAAQ,CACjC/K,OAAO,WAAS,UAAS,CAAC,EAAGwF,GAAQ,CACnCjF,KAAMA,IAER5E,KAAM,aAER,OAAO6pe,EAAgBp6d,EAAQjM,CACjC,EACA2md,UAAW,SAAmB9jC,GAC5B,IAAIv0Y,EAAQu0Y,EAAUv0Y,MAEtB,OADcu0Y,EAAU6xC,UAEf,CACL1xb,OAAQ,SACR38B,MAAO,CACLoT,EAAG,IACH08B,KAAM7H,IAIL,CACLtL,OAAQ,SACR38B,MAAO,CACLoT,EAAG,EACH08B,KAAM7H,GAGZ,ICpCK,SAASq2b,IAAe/qR,GAC7B,IAAI/xG,EAAQ+xG,EAAS/xG,MACjB2wK,EAAa5+D,EAAS4+D,WACtBk6H,EAAS94L,EAASy3P,YAClBq1B,EAAUh0F,EAAO33W,OACjBk5X,EAAYr6M,EAASuuQ,kBACrB98b,EAAQq7c,EAAQtre,OAChB45Z,EAAmB4+B,IAAoBh6O,EAAS4+D,YAEhDs8I,EAAkBl7M,EAASk7M,gBAC7BC,EAAen7M,EAASm7M,aAEtBG,EAAiBt7M,EAASs7M,gBAAkBrtT,EAAMqtT,eAClDC,EAAiBv7M,EAASu7M,gBAAkBttT,EAAMstT,eAClDC,EAAmBx7M,EAASw7M,kBAAoBvtT,EAAMutT,iBACtDoxC,EAAwB5sP,EAAS4sP,uBAAyB3+V,EAAM2+V,sBAChED,EAAiB3sP,EAAS2sP,gBAAkB1+V,EAAM0+V,eAEtD,GAAI7zD,EAAO4lB,UAAYouE,EAAQtre,OAAS,EAAG,CAEzCsre,EAAQ55d,OACR,IAAI/P,EAhDR,SAAyBiU,EAAKqC,GAC5B,IAAIgY,EAAQra,EAAI5V,OACZure,EAAY31d,GACZ,UAAS21d,EAAU,MAErBA,EAAY31d,EAAIua,KAAI,SAAU/e,GAC5B,OAAO6G,EAAMR,UAAUrG,EACzB,KAGF,IADA,IAAIkiB,EAAWi4c,EAAU,GAAKA,EAAU,GAC/Blre,EAAI,EAAGA,EAAI4vB,EAAO5vB,IAAK,CAC9B,IAAIogC,EAAM8qc,EAAUlre,GAAKkre,EAAUlre,EAAI,GACnCizB,EAAWmN,IACbnN,EAAWmN,EAEf,CACA,OAAOnN,CACT,CA+BmBk4c,CAAgBF,EAASh0F,GACxCrnX,GAASqnX,EAAOh+X,IAAMg+X,EAAOj+X,KAAO1X,EAChC2pe,EAAQtre,OAASiwB,IACnBA,EAAQq7c,EAAQtre,OAEpB,CACA,IAAI8mD,EAAQwwV,EAAOxwV,MACf2kb,EAAiB,EAAIx7c,EACrBy7c,EAAK,GACLtuN,EAAWotJ,QAIXkhE,EAFEtuN,EAAWutJ,cAAgB16Y,EAAQ,EAEhCm7a,EAEAD,GAIH7zD,EAAO4lB,WACTuuE,GAAkB3kb,EAAM,GAAKA,EAAM,IAErC4kb,EAAK1xE,KAGF,UAAMN,IAAoBA,GAAmB,GAGhD+xE,GAAkB,GAAKx7c,EAAQ,IADCypY,EAAkBE,IACe3pY,EAGjEw7c,GAAkBC,EAGpB,GAAIltR,EAASy6M,UAAU,SAAU,CAC/B,IAEI0yE,EAnER,SAAuB9yE,EAAWY,GAChC,GAAIA,EAAS,CACX,IAAIH,GAAY,UAAQT,GAExB,OADa,SAAYS,EAAWG,GACtBz5Z,MAChB,CACA,OAAO64Z,EAAU74Z,MACnB,CA4DqB4re,CAAc/yE,EAFbr6M,EAASy6M,UAAU,SACXQ,SAE1B,KAAK,UAAME,IAAiBA,GAAgB,EAG1C8xE,GAAkBA,EADW9xE,EAAeC,GACiB+xE,EAAa,IAAMA,QACtE,UAAMjyE,IAAoBA,GAAmB,GAEvD+xE,GAAkBC,EAClBD,GAAkCE,GAGlCF,GAAkCE,EAEpCF,EAAiBA,GAAkB,EAAIA,EAAiB,CAC1D,CAEA,KAAK,UAAM3xE,IAAmBA,GAAkB,EAAG,CACjD,IAAI+xE,EAA2B/xE,EAAiBF,EAC5C6xE,EAAiBI,IACnBJ,EAAiBI,EAErB,CAEA,KAAK,UAAM9xE,IAAmBA,GAAkB,EAAG,CACjD,IAAI+xE,EAA2B/xE,EAAiBH,EAC5C6xE,EAAiBK,IACnBL,EAAiBK,EAErB,CACA,OAAOL,CACT,CC1GA,IAAIM,IAAwB,SAAUlre,GAEpC,SAASkre,EAASjre,GAChB,IAAIlB,EAAQiB,EAAOE,KAAK5B,KAAM2B,IAAQ3B,KACtCS,EAAMkI,KAAO,WACblI,EAAM6Q,UAAY,WAClB7Q,EAAMktd,gBAAiB,EACvB,IAAIpjZ,EAAa5oE,EAAI4oE,WAErB,OADA9pE,EAAM8pE,WAAaA,EACZ9pE,CACT,CAyEA,OAlFA,UAAUmse,EAAUlre,GAepBkre,EAAS1se,UAAUmxd,qBAAuB,SAAUt9b,GAClD,IAEIuQ,EAFA3iC,EAAMD,EAAOxB,UAAUmxd,qBAAqBzvd,KAAK5B,KAAM+zB,GAGvDs/b,EAAWrzd,KAAKoqD,aAAa,QAC7Bipa,GACF/ub,EAAOtkC,KAAK+vd,mBAAmBsD,EAAUt/b,GAAK,GAI9CuQ,GADsB+0Z,IADLr5b,KAAKi+Q,cAIjBj+Q,KAAK+2Y,cACR/2Y,KAAK+2Y,YAAcqzF,IAAepqe,OAEpCskC,EAAOtkC,KAAK+2Y,aAGd,OADAp1Y,EAAI2iC,KAAOA,EACJ3iC,CACT,EAKAire,EAAS1se,UAAU+ud,YAAc,WAC/Bvtd,EAAOxB,UAAU+ud,YAAYrtd,KAAK5B,MAClC,IAAIo4Y,EAASp4Y,KAAKm2c,YAElB,GAA6B,UAAzBn2c,KAAKi+Q,WAAWt1Q,KAClByvY,EAAOrhH,OAAO,CACZxyD,MAAM,EACNrqN,IAAK,EAELC,IAAKqgb,IAAYpiD,SAEd,CAEL,IAAIy+D,EAAY72c,KAAK62c,UACjBh3U,EAAQu4Q,EAAOv4Q,MACjB3lH,EAAMk+X,EAAOl+X,IACbC,EAAMi+X,EAAOj+X,IAEF,SADJi+X,EAAOzvY,OAIVuR,EAAM,KAAM,UAAI28b,EAAW,CAACh3U,EAAO,SACrCu4Q,EAAOrhH,OAAO,CACZ78Q,IAAK,IAILC,GAAO,KAAM,UAAI08b,EAAW,CAACh3U,EAAO,SACtCu4Q,EAAOrhH,OAAO,CACZ58Q,IAAK,IAIb,CACF,EAIAyyd,EAAS1se,UAAUuxd,WAAa,SAAUxZ,GACxC,IAAIuZ,EAAW9vd,EAAOxB,UAAUuxd,WAAW7vd,KAAK5B,KAAMi4c,GAEtD,OADAuZ,EAASjnZ,WAAavqE,KAAKuqE,WACpBinZ,CACT,EACOob,CACT,CApF4B,CAoF1B,KACF,QCzFI,IAAoB,SAAUlre,GAEhC,SAASygb,EAAKxgb,GACZ,IAAIlB,EAAQiB,EAAOE,KAAK5B,KAAM2B,IAAQ3B,KACtCS,EAAMkI,KAAO,OACb,IAAIxH,EAAKQ,EAAIqsd,SACXA,OAAkB,IAAP7sd,GAAwBA,EAErC,OADAV,EAAMutd,SAAWA,EACVvtd,CACT,CACA,OATA,UAAU0hb,EAAMzgb,GASTygb,CACT,CAXwB,CAWtB,KACF,QCjBW0qD,IAAS,CAAC,SAAU,SAAU,SAAU,UAAW,UAAW,WAAY,iBAY9E,SAASC,IAAWrne,EAAO9D,EAAKqH,EAAWknd,EAAWkL,GAC3D,IAAIpjC,EAAK72b,EACL2K,EAAQ,IAASnK,EAAKy5d,GAAWA,EAAU,KAC3C16c,EAASjb,EAAMind,YAAY/qd,EAAI+e,QAC/B+2V,EAAgB/2V,EAAO,GAC3B,GAAI/e,EAAIopW,QACN0M,EAAgB/2V,EAAO,QAClB,GAAIA,EAAO7f,OAAS,EAAG,CAC5B,IAAI6Q,EAAQ1I,EAAUyI,WACtB,IACE,IAAK,IAAIs7d,GAAW,UAASrsd,GAASssd,EAAaD,EAASx3c,QAASy3c,EAAW10b,KAAM00b,EAAaD,EAASx3c,OAAQ,CAClH,IAAIvqB,EAAQgie,EAAW7qe,MACvBuP,EAAML,SAAS,CACb1I,KAAM,SACNrC,OAAO,WAAS,WAAS,UAAS,CAAC,EAAGwF,GAAQ,CAC5C28B,OAAQ2wb,IAAclJ,IAAcA,IAClClld,IAER,CACF,CAAE,MAAOmtb,GACPH,EAAM,CACJ5qY,MAAO+qY,EAEX,CAAE,QACA,IACM60C,IAAeA,EAAW10b,OAASn3C,EAAK4re,EAAS9zQ,SAAS93N,EAAGS,KAAKmre,EACxE,CAAE,QACA,GAAI/0C,EAAK,MAAMA,EAAI5qY,KACrB,CACF,CACA,OAAO17C,CACT,CACA,OAAO1I,EAAUqI,SAAS,CACxB1I,KAAM,SACNrC,OAAO,WAAS,WAAS,UAAS,CAAC,EAAGwF,GAAQ,CAC5C28B,OAAQ2wb,IAAclJ,IAAcA,IAClCz4G,IAER,CChDwBm1G,IAAqB,QAAS,CACpDjC,iBAAkB,gBAClBsB,iBAAkB,SAA0Bhid,GAC1C,OAAO,IAAYA,EACrB,KAEF,UAAK4ie,KAAQ,SAAU3c,GAErBnD,IAAc,QAAS,UAAUx5c,OAAO28c,GAAY,CAClDpod,KAAM,SAAcnG,EAAKqH,GACvB,OAAO8je,IAAW9se,KAAM2B,EAAKqH,EAAWknd,GAAW,EACrD,EACA9D,UAAW,SAAmB9jC,GAC5B,IAAIv0Y,EAAQu0Y,EAAUv0Y,MACtB,MAAO,CACLtL,OAAQ2wb,IAAclJ,IAAcA,EACpCpkd,MAAO,CACLoT,EAAG,IACHiC,OAAQ4yB,EACR6H,KAAM,MAGZ,GAEJ,IACA,ICtBI,IAAqB,SAAUl6C,GAEjC,SAAS4nP,IACP,IAAI7oP,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAIhE,OAHAS,EAAMkI,KAAO,QACblI,EAAM6Q,UAAY,QAClB7Q,EAAMktd,gBAAiB,EAChBltd,CACT,CAYA,OAnBA,UAAU6oP,EAAO5nP,GAajB4nP,EAAMppP,UAAUuxd,WAAa,SAAUF,GACrC,IAAIC,EAAW9vd,EAAOxB,UAAUuxd,WAAW7vd,KAAK5B,KAAMuxd,GACtD,OAAO,WAAS,UAAS,CAAC,EAAGC,GAAW,CACtCzmH,UAAW/qW,KAAK85Z,UAAU,UAE9B,EACOxwK,CACT,CArByB,CAqBvB,KACF,QCH0BsjO,IAAqB,UAAW,CACxDjC,iBAAkB,UAClBsB,iBAAkB,SAA0Bhid,GAC1C,IAAIyW,EAAS,GAQb,OAPA,UAAKzW,EAAUgB,GAAG,SAAUgie,EAAMjle,GAChC,IAAI47d,EAAO35d,EAAUiB,EAAElD,GACvB0Y,EAAOngB,KAAK,CACV0K,EAAGgie,EACH/he,EAAG04d,GAEP,IACOljd,CACT,IAEFqsc,IAAc,UAAW,UAAW,CAClCjld,KAAM,SAAcnG,EAAKqH,GACvB,KAAK,UAAQrH,EAAI+e,QAAS,CACxB,IAAIu7c,EAAa,IAASt6d,GAAK,GAAM,GACjCkF,EAAO7G,KAAKssd,UAzCtB,SAAiB5rc,GAIf,IAHA,IAAIm7M,EAAOn7M,EAAO,GACdxf,EAAI,EACJ2F,EAAO,CAAC,CAAC,IAAKg1N,EAAK5wN,EAAG4wN,EAAK3wN,IACxBhK,EAAIwf,EAAO7f,QAAQ,CACxB,IAAIskB,EAAIzE,EAAOxf,GACXikB,EAAEla,IAAMyV,EAAOxf,EAAI,GAAG+J,GAAKka,EAAEja,IAAMwV,EAAOxf,EAAI,GAAGgK,IACnDrE,EAAKtG,KAAK,CAAC,IAAK4kB,EAAEla,EAAGka,EAAEja,IACnBia,EAAEla,IAAM4wN,EAAK5wN,GAAKka,EAAEja,IAAM2wN,EAAK3wN,GAAKhK,EAAIwf,EAAO7f,OAAS,IAC1Dg7N,EAAOn7M,EAAOxf,EAAI,GAClB2F,EAAKtG,KAAK,CAAC,MACXsG,EAAKtG,KAAK,CAAC,IAAKs7N,EAAK5wN,EAAG4wN,EAAK3wN,IAC7BhK,MAGJA,GACF,CAKA,OAJK,WAAQ,UAAK2F,GAAOg1N,IACvBh1N,EAAKtG,KAAK,CAAC,IAAKs7N,EAAK5wN,EAAG4wN,EAAK3wN,IAE/BrE,EAAKtG,KAAK,CAAC,MACJsG,CACT,CAmBgC,CAAQlF,EAAI+e,SACtC,OAAO1X,EAAUqI,SAAS,OAAQ,CAChC/K,OAAO,WAAS,UAAS,CAAC,EAAG21d,GAAa,CACxCp1d,KAAMA,IAER5E,KAAM,WAEV,CACF,EACAmqd,UAAW,SAAmB9jC,GAE5B,MAAO,CACL7/Y,OAAQ,SACR38B,MAAO,CACLoT,EAAG,EACH08B,KALQ0sY,EAAUv0Y,OAQxB,IAEF,ICxDI,IAAuB,SAAUryC,GAEnC,SAASk8Q,IACP,IAAIn9Q,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAIhE,OAHAS,EAAMkI,KAAO,UACblI,EAAM6Q,UAAY,UAClB7Q,EAAMktd,gBAAiB,EAChBltd,CACT,CAuCA,OA9CA,UAAUm9Q,EAASl8Q,GAanBk8Q,EAAQ19Q,UAAUmxd,qBAAuB,SAAUt9b,GACjD,IAGI5C,EAHAxvB,EAAMD,EAAOxB,UAAUmxd,qBAAqBzvd,KAAK5B,KAAM+zB,GACvD9oB,EAAItJ,EAAIsJ,EACRC,EAAIvJ,EAAIuJ,EAGZ,KAAM,UAAQD,MAAM,UAAQC,GAAK,CAC/B,IAAIitY,EAASn4Y,KAAK82c,YACd1+D,EAASp4Y,KAAKm2c,YAGdp1M,EAAU,GAFDo3I,EAAO33W,OAAO3/B,OAGvBmgQ,EAAU,GAFDo3I,EAAO53W,OAAO3/B,OAGvBs3Y,EAAO2lB,YAAc1lB,EAAO0lB,YAE9B7yZ,EAAI,CAACA,EAAI81P,EAAS91P,EAAI81P,EAAS91P,EAAI81P,EAAS91P,EAAI81P,GAChD71P,EAAI,CAACA,EAAI81P,EAAS91P,EAAI81P,EAAS91P,EAAI81P,EAAS91P,EAAI81P,KACvC,UAAQ/1P,IAGjBA,EAAI,EADJkmB,EAAOlmB,GACG,GAAIkmB,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACrCjmB,EAAI,CAACA,EAAI81P,EAAU,EAAG91P,EAAI81P,EAAU,EAAG91P,EAAI81P,EAAU,EAAG91P,EAAI81P,EAAU,KAC7D,UAAQ91P,KAGjBA,EAAI,EADJimB,EAAOjmB,GACG,GAAIimB,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACrClmB,EAAI,CAACA,EAAI81P,EAAU,EAAG91P,EAAI81P,EAAU,EAAG91P,EAAI81P,EAAU,EAAG91P,EAAI81P,EAAU,IAExEp/P,EAAIsJ,EAAIA,EACRtJ,EAAIuJ,EAAIA,CACV,CACA,OAAOvJ,CACT,EACOi8Q,CACT,CAhD2B,CAgDzB,KACF,QCjDI,KCRqBgvM,IAAqB,SAAU,CACtDjC,iBAAkB,KDOM,SAAUjpd,GAElC,SAAS2hI,IACP,IAAI5iI,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAIhE,OAHAS,EAAMkI,KAAO,SACblI,EAAM6Q,UAAY,SAClB7Q,EAAMktd,gBAAiB,EAChBltd,CACT,CA0BA,OAjCA,UAAU4iI,EAAQ3hI,GAalB2hI,EAAOnjI,UAAUmxd,qBAAuB,SAAU78Z,GAChD,IAEIlwB,EAFA3iC,EAAMD,EAAOxB,UAAUmxd,qBAAqBzvd,KAAK5B,KAAMw0D,GAGvD6+Z,EAAWrzd,KAAKoqD,aAAa,QAC7Bipa,GACF/ub,EAAOtkC,KAAK+vd,mBAAmBsD,EAAU7+Z,GAAQ,GAIjDlwB,GADsB+0Z,IADLr5b,KAAKi+Q,cAIjBj+Q,KAAK+2Y,cACR/2Y,KAAK+2Y,YAAcqzF,IAAepqe,OAEpCskC,EAAOtkC,KAAK+2Y,aAGd,OADAp1Y,EAAI2iC,KAAOA,EACJ3iC,CACT,EACO0hI,CACT,CAnC0B,CAmCxB,MACF,QE/ByBupV,IAAqB,SAAU,CACtDjC,iBAAkB,SAClBsB,iBAAkB,SAA0Bhid,GAC1C,IAAI+jE,EAAS/jE,EAAUq6B,KAAO,EAC1B5jB,EAAS,GACTwsd,EAdR,SAAuBz2d,GACrB,KAAK,UAAQA,GACX,MAAO,GAET,IAAIglR,GAAW,UAAIhlR,GACnB,OAAO,UAAIA,GAAK,SAAU+6E,GACxB,OAAOA,EAAMiqM,CACf,GACF,CAMkB0xM,CAAclje,EAAUgqG,OAkBtC,OAjBA,UAAKhqG,EAAUiB,GAAG,SAAUA,EAAGlD,GAC7B,IAAIm7E,EAAS+pZ,EAAQlle,GAASgmE,EAC1Bo/Z,EAAkB,IAAVple,EACRqle,EAAQrle,IAAUiC,EAAUiB,EAAErK,OAAS,EAC3C6f,EAAOngB,KAAK,CACV6se,MAAOA,EACPC,MAAOA,EACPpie,EAAGhB,EAAUgB,EAAIk4E,EACjBj4E,EAAGA,IAELwV,EAAO/K,QAAQ,CACby3d,MAAOA,EACPC,MAAOA,EACPpie,EAAGhB,EAAUgB,EAAIk4E,EACjBj4E,EAAGA,GAEP,IACOwV,CACT,IAEFqsc,IAAc,SAAU,SAAU,CAChCjld,KAAM,SAAcnG,EAAKqH,GACvB,IAAIizd,EAAa,IAASt6d,GAAK,GAAM,GACjCkF,EAAO7G,KAAKssd,UAAUwO,IAAcn5d,EAAI+e,SAC5C,OAAO1X,EAAUqI,SAAS,OAAQ,CAChC/K,OAAO,WAAS,UAAS,CAAC,EAAG21d,GAAa,CACxCp1d,KAAMA,IAER5E,KAAM,UAEV,EACAmqd,UAAW,SAAmB9jC,GAE5B,MAAO,CACL7/Y,OAAQ,SACR38B,MAAO,CACLoT,EAAG,EACH08B,KALQ0sY,EAAUv0Y,OAQxB,IAEF,IClDIu5b,IAAsB,SAAU5re,GAElC,SAAS4re,IACP,IAAI7se,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAIhE,OAHAS,EAAMkI,KAAO,SACblI,EAAM6Q,UAAY,SAClB7Q,EAAMktd,gBAAiB,EAChBltd,CACT,CAsCA,OA7CA,UAAU6se,EAAQ5re,GAalB4re,EAAOpte,UAAUmxd,qBAAuB,SAAU78Z,GAChD,IAEIlwB,EAFA3iC,EAAMD,EAAOxB,UAAUmxd,qBAAqBzvd,KAAK5B,KAAMw0D,GAGvD6+Z,EAAWrzd,KAAKoqD,aAAa,QAC7Bipa,GACF/ub,EAAOtkC,KAAK+vd,mBAAmBsD,EAAU7+Z,GAAQ,GAIjDlwB,GADsB+0Z,IADLr5b,KAAKi+Q,cAIjBj+Q,KAAK+2Y,cACR/2Y,KAAK+2Y,YAAcqzF,IAAepqe,OAEpCskC,EAAOtkC,KAAK+2Y,aAId,OAFAp1Y,EAAI2iC,KAAOA,EACX3iC,EAAIsyG,OAAQ,UAAIz/C,EAAOyjW,KAAe,CAACj4Z,KAAKute,aACrC5re,CACT,EAIA2re,EAAOpte,UAAU6ud,eAAiB,WAChC,IAAItB,EAAkBztd,KAAKytd,gBACvB+f,EAAY/f,EAAgBnpb,KAAOmpb,EAAgBnpb,KAAKs7F,OAAO,GAAK5/H,KAAKute,WAAavte,KAAKute,WAAa,OAC5Gvte,KAAKute,WAAaC,SAEX/f,EAAgBnpb,KACvB5iC,EAAOxB,UAAU6ud,eAAentd,KAAK5B,KACvC,EACOste,CACT,CA/C0B,CA+CxB,KACF,QCpDO,SAASG,IAASn0c,EAAMC,GAC7B,MAAO,CAAC,IAAc,EAATD,EAAKruB,EAAQ,EAAW,EAAPsuB,EAAGtuB,EAAQ,EAAGquB,EAAKpuB,EAAY,EAATouB,EAAKruB,EAAQ,EAAW,EAAPsuB,EAAGtuB,EAAQ,EAAGsuB,EAAGruB,EAAGquB,EAAGtuB,EAAGsuB,EAAGruB,EACpG,CAQO,SAASwie,IAASn0c,EAAIsE,GAC3B,IAAInd,EAAS,GACbA,EAAOngB,KAAK,CACV0K,EAAG4yB,EAAO5yB,EACVC,EAAG2yB,EAAO3yB,IAEZwV,EAAOngB,KAAKg5B,GACZ,IAAI8B,EAAM,CAAC,KAIX,OAHA,UAAK3a,GAAQ,SAAU1V,GACrBqwB,EAAI96B,KAAKyK,EAAMC,EAAGD,EAAME,EAC1B,IACOmwB,CACT,CCzBA0xb,IAAc,OAAQ,OAAQ,CAC5Bjld,KAAM,SAAcnG,EAAKqH,GACvB,IAAI1C,EAAQ,IAAc3E,GAAK,GAAM,EAAO3B,MAM5C,OALYgJ,EAAUqI,SAAS,CAC7B1I,KAAM,OACNrC,MAAOA,EACPrE,KAAM,QAGV,EACAmqd,UAAW,SAAmB9jC,GAE5B,MAAO,CACL7/Y,OAAQ,SAAgBx9B,EAAGC,EAAGgU,GAI5B,YAHU,IAANA,IACFA,EAAI,KAEC,CAAC,CAAC,IAAKjU,EAAIiU,EAAGhU,EAAI,GAAI,CAAC,IAAKD,EAAIiU,EAAGhU,EAAI,GAAI,CAAC,IAAKD,EAAIiU,EAAGhU,EAAI,GAAI,CAAC,IAAKD,EAAIiU,EAAGhU,EAAI,GAAI,CAAC,KAC/F,EACAY,MAAO,CACLoT,EAAG,EACHiC,OAVQmna,EAAUv0Y,MAWlB6H,KAAM,MAGZ,ICzBFmxa,IAAc,OAAQ,SAAU,CAC9Bjld,KAAM,SAAcnG,EAAKqH,GACvB,IACI1C,EAAQ,IAAc3E,GAAK,GAAO,EAAM3B,KAAMupe,IADjCvpe,KAAKi+Q,aAOtB,OALYj1Q,EAAUqI,SAAS,CAC7B1I,KAAM,OACNrC,MAAOA,EACPrE,KAAM,QAGV,EACAmqd,UAAW,SAAmB9jC,GAE5B,MAAO,CACL7/Y,OAAQ,SAAgBx9B,EAAGC,EAAGgU,GAI5B,YAHU,IAANA,IACFA,EAAI,KAEC,CAAC,CAAC,IAAKjU,EAAIiU,EAAGhU,EAAI,GAAI,CAAC,IAAKD,EAAIiU,EAAGhU,EAAI,GAAI,CAAC,IAAKD,EAAIiU,EAAGhU,EAAI,GAAI,CAAC,IAAKD,EAAIiU,EAAGhU,EAAI,GAAI,CAAC,KAC/F,EACAY,MAAO,CACLoT,EAAG,EACH08B,KAVQ0sY,EAAUv0Y,MAWlB8vC,YAAa,GAGnB,IC5BFkpY,IAAc,OAAQ,cAAe,CACnCjld,KAAM,SAAcnG,EAAKqH,GACvB,IACI1C,EAAQ,IAAc3E,GAAK,GAAM,EAAM3B,KAAMupe,IADhCvpe,KAAKi+Q,aAOtB,OALYj1Q,EAAUqI,SAAS,CAC7B1I,KAAM,OACNrC,MAAOA,EACPrE,KAAM,QAGV,EACAmqd,UAAW,SAAmB9jC,GAE5B,MAAO,CACL7/Y,OAAQ,SAAgBx9B,EAAGC,EAAGgU,GAI5B,YAHU,IAANA,IACFA,EAAI,KAEC,CAAC,CAAC,IAAKjU,EAAIiU,EAAGhU,EAAI,GAAI,CAAC,IAAKD,EAAIiU,EAAGhU,EAAI,GAAI,CAAC,IAAKD,EAAIiU,EAAGhU,EAAI,GAAI,CAAC,IAAKD,EAAIiU,EAAGhU,EAAI,GAAI,CAAC,KAC/F,EACAY,MAAO,CACLoT,EAAG,EACHiC,OAVQmna,EAAUv0Y,MAWlB6H,KAAM,MAGZ,ICJFmxa,IAAc,OAAQ,MAAO,CAC3Bjld,KAAM,SAAcnG,EAAKqH,GACvB,IAGInC,EAHAiF,EAAQ,IAASnK,GAAK,GAAM,EAAO,aACnC+e,EAAS/e,EAAI+e,OACb/X,EAAO+X,EAAO7f,OAAS,EAAI,SAAW,SAE1C,GAAIc,EAAIg9b,WAAY,CAClB,IAAI9ga,EAAS,CACX5yB,EAAG,EACHC,EAAG,GASL,MAPa,WAATvC,EACF9B,EAhCR,SAAyByyB,EAAMC,EAAIsE,GACjC,IAAIxC,EAAMqyc,IAASn0c,EAAIsE,GACnBh3B,EAAO,CAAC,CAAC,IAAKyyB,EAAKruB,EAAGquB,EAAKpuB,IAE/B,OADArE,EAAKtG,KAAK86B,GACHx0B,CACT,CA2Be8me,CAAgBjtd,EAAO,GAAIA,EAAO,GAAImd,IAE7C/xB,EAAM8vC,KAAO9vC,EAAMqV,OACnBta,EA7BR,SAA+B6Z,EAAQmd,GACrC,IAAI+vc,EAAOF,IAAShtd,EAAO,GAAImd,GAC3Bgwc,EAAOH,IAAShtd,EAAO,GAAImd,GAC3Bh3B,EAAO,CAAC,CAAC,IAAK6Z,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,IAQzC,OAPArE,EAAKtG,KAAKste,GACVhne,EAAKtG,KAAK,CAAC,IAAKmgB,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,IACvCrE,EAAKtG,KAAK,CAAC,IAAKmgB,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,IACvCrE,EAAKtG,KAAKqte,GACV/me,EAAKtG,KAAK,CAAC,IAAKmgB,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,IACvCrE,EAAKtG,KAAK,CAAC,IAAKmgB,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,IACvCrE,EAAKtG,KAAK,CAAC,MACJsG,CACT,CAiBeine,CAAsBptd,EAAQmd,IAEvCh3B,EAAO7G,KAAKssd,UAAUzld,GACfmC,EAAUqI,SAAS,OAAQ,CAChC/K,OAAO,WAAS,UAAS,CAAC,EAAGwF,GAAQ,CACnCjF,KAAMA,KAGZ,CACE,GAAa,WAAT8B,EAGF,OADA9B,EAAOowa,MADPv2Z,EAAS1gB,KAAK0sd,YAAYhsc,IACA,GAAGzV,EAAIyV,EAAO,GAAGzV,GAAK,EAAGyV,EAAO,GAAGxV,EAAG+O,KAAKoG,IAAIK,EAAO,GAAGzV,EAAIyV,EAAO,GAAGzV,GAAK,EAAGgP,KAAK+B,GAAc,EAAV/B,KAAK+B,IAChHhT,EAAUqI,SAAS,OAAQ,CAChC/K,OAAO,WAAS,UAAS,CAAC,EAAGwF,GAAQ,CACnCjF,KAAMA,MAIV,IAAI4hB,EAAKgld,IAAS/sd,EAAO,GAAIA,EAAO,IAChCiI,EAAK8kd,IAAS/sd,EAAO,GAAIA,EAAO,IAIpC,OAHA7Z,EAAO,CAAC,CAAC,IAAK6Z,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,IAAKwV,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAIud,EAAI,CAAC,IAAK/H,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,IAAKwV,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAIyd,EAAI,CAAC,MACrJ9hB,EAAO7G,KAAKssd,UAAUzld,GACtBiF,EAAM8vC,KAAO9vC,EAAMqV,OACZnY,EAAUqI,SAAS,OAAQ,CAChC/K,OAAO,WAAS,UAAS,CAAC,EAAGwF,GAAQ,CACnCjF,KAAMA,KAKhB,EACAuld,UAAW,SAAmB9jC,GAC5B,MAAO,CACL7/Y,OAAQ,SACR38B,MAAO,CACLoT,EAAG,IACH08B,KAAM0sY,EAAUv0Y,OAGtB,ICrEFg5a,IAAc,OAAQ,SAAU,CAC9Bjld,KAAM,SAAcnG,EAAKqH,GACvB,IAAI8C,EAAQ,IAASnK,GAAK,GAAM,EAAO,aACnC+e,EAAS/e,EAAI+e,OACb7Z,EAAO7G,KAAKssd,UAVpB,SAAuBhzb,EAAMC,GAC3B,IAAI8B,EAAMoyc,IAASn0c,EAAMC,GACrB1yB,EAAO,CAAC,CAAC,IAAKyyB,EAAKruB,EAAGquB,EAAKpuB,IAE/B,OADArE,EAAKtG,KAAK86B,GACHx0B,CACT,CAK8Bkne,CAAcrtd,EAAO,GAAIA,EAAO,KAC1D,OAAO1X,EAAUqI,SAAS,OAAQ,CAChC/K,OAAO,WAAS,UAAS,CAAC,EAAGwF,GAAQ,CACnCjF,KAAMA,KAGZ,EACAuld,UAAW,SAAmB9jC,GAC5B,MAAO,CACL7/Y,OAAQ,SACR38B,MAAO,CACLoT,EAAG,IACH08B,KAAM0sY,EAAUv0Y,OAGtB,ICzBF,IAAIi6b,IAAiB,EAAI,EAkBzBjhB,IAAc,OAAQ,MAAO,CAC3Bjld,KAAM,SAAcnG,EAAKqH,GACvB,IAAI8C,EAAQ,IAASnK,GAAK,GAAM,EAAO,aACnC+e,EAAS/e,EAAI+e,OACb7Z,EAAO7G,KAAKssd,UArBpB,SAAoBhzb,EAAMC,GACxB,IAAI7Y,EAAS,GACbA,EAAOngB,KAAK,CACV0K,EAAGquB,EAAKruB,EACRC,EAAGouB,EAAKpuB,GAAK,EAAI8ie,KAAkBz0c,EAAGruB,EAAI8ie,MAE5Cttd,EAAOngB,KAAK,CACV0K,EAAGsuB,EAAGtuB,EACNC,EAAGouB,EAAKpuB,GAAK,EAAI8ie,KAAkBz0c,EAAGruB,EAAI8ie,MAE5Cttd,EAAOngB,KAAKg5B,GACZ,IAAI1yB,EAAO,CAAC,CAAC,IAAKyyB,EAAKruB,EAAGquB,EAAKpuB,IAI/B,OAHA,UAAKwV,GAAQ,SAAU1V,GACrBnE,EAAKtG,KAAK,CAAC,IAAKyK,EAAMC,EAAGD,EAAME,GACjC,IACOrE,CACT,CAK8Bone,CAAWvtd,EAAO,GAAIA,EAAO,KACvD,OAAO1X,EAAUqI,SAAS,OAAQ,CAChC/K,OAAO,WAAS,UAAS,CAAC,EAAGwF,GAAQ,CACnCjF,KAAMA,KAGZ,EACAuld,UAAW,SAAmB9jC,GAC5B,MAAO,CACL7/Y,OAAQ,SACR38B,MAAO,CACLoT,EAAG,IACH08B,KAAM0sY,EAAUv0Y,OAGtB,ICpCFg5a,IAAc,WAAY,SAAU,CAClCf,UAAW,SAAmBD,GAE5B,OADAA,EAAWznb,KAAyB,EAAlBynb,EAAWznb,KACtB4mc,IAAcnf,EACvB,EACAjkd,KAAM,SAAcnG,EAAKqH,GACvB,IAAI8C,EAAQ,IAASnK,GAAK,GAAO,GAC7BkF,EAAO7G,KAAKssd,UAAUsf,IAAcjqe,EAAI+e,OAAQ/e,EAAIgwd,YAAY,IAOpE,OANY3od,EAAUqI,SAAS,OAAQ,CACrC/K,OAAO,WAAS,UAAS,CAAC,EAAGwF,GAAQ,CACnCjF,KAAMA,IAER5E,KAAM,YAGV,EACAmqd,UAAW,SAAmB9jC,GAE5B,MAAO,CACL7/Y,OAAQ,SACR38B,MAAO,CACLoT,EAAG,EACH08B,KALQ0sY,EAAUv0Y,OAQxB,ICxBFg5a,IAAc,WAAY,cAAe,CACvCjld,KAAM,SAAcnG,EAAKqH,GACvB,IAAI8C,EAAQ,IAASnK,GAAK,GAAM,GAC5B+P,EAAQ1I,EACR8ie,EAAgBnqe,aAAiC,EAASA,EAAI4oE,WAClE,GAAIuha,EAAe,CACjBp6d,EAAQ1I,EAAUyI,WAClB,IAAIqka,EAAkBylD,IAAuB55d,GACzCoqe,EAAiBP,IAAsB7pe,EAAK3B,KAAK0sd,YAAY/qd,EAAI+e,QAAS1gB,KAAKi+Q,YACnFvsQ,EAAML,SAAS,OAAQ,CACrB/K,OAAO,WAAS,UAAS,CAAC,EAAGwva,GAAkB,CAC7Cjva,KAAMkle,IAERv3d,SAAS,EACTC,QAAS,EACTxS,KAAMund,KAEV,CACA,IAAI3id,EAAO7G,KAAKssd,UAAU+e,IAAY1pe,EAAI+e,SACtCjb,EAAQiM,EAAML,SAAS,OAAQ,CACjC/K,OAAO,WAAS,UAAS,CAAC,EAAGwF,GAAQ,CACnCjF,KAAMA,IAER5E,KAAM,aAER,OAAO6pe,EAAgBp6d,EAAQjM,CACjC,EACA2md,UAAW,SAAmB9jC,GAC5B,IAAIv0Y,EAAQu0Y,EAAUv0Y,MAEtB,OADcu0Y,EAAU6xC,UAEf,CACL1xb,OAAQ,SACR38B,MAAO,CACLoT,EAAG,IACHiC,OAAQ4yB,EACR6H,KAAM,OAIL,CACLnT,OAAQ,SACR38B,MAAO,CACLoT,EAAG,EACHiC,OAAQ4yB,EACR6H,KAAM,MAGZ,IC1BFmxa,IAAc,WAAY,OAAQ,CAChCf,UAAW,SAAmBD,GAC5B,OAvBJ,SAAuB9hd,GACrB,IAAIgB,EAAIhB,EAAUgB,EAChBC,EAAIjB,EAAUiB,EACdyhB,EAAK1iB,EAAU0iB,GACjB,OAAI,UAAQzhB,GACHA,EAAE8lB,KAAI,SAAUw4c,EAAOtkc,GAC5B,MAAO,CACLj6B,GAAG,UAAQA,GAAKA,EAAEi6B,GAAOj6B,EACzBC,EAAGs+d,EAEP,IAGK,CAAC,CACNv+d,EAAGA,EACHC,EAAGyhB,GACF,CACD1hB,EAAGA,EACHC,EAAGA,GAEP,CAGWgje,CAAcniB,EACvB,EACAjkd,KAAM,SAAcnG,EAAKqH,GACvB,IAAI8C,EAAQ,IAASnK,GAAK,GAAM,EAAO,aACnCs9a,EAAW,KAAK,UAAS,CAAC,EAAGnza,GAAQ,CAAC,SACtCjF,EAAO7G,KAAKssd,UAAU+e,IAAY1pe,EAAI+e,QAAQ,IAOlD,OANY1X,EAAUqI,SAAS,OAAQ,CACrC/K,OAAO,WAAS,UAAS,CAAC,EAAG24a,GAAW,CACtCp4a,KAAMA,IAER5E,KAAM,YAGV,EACAmqd,UAAW,SAAmB9jC,GAE5B,MAAO,CACL7/Y,OAAQ,SAAgBx9B,EAAGC,EAAGgU,GAC5B,MAAO,CAAC,CAAC,IAAKjU,EAAGC,EAAIgU,GAAI,CAAC,IAAKjU,EAAGC,EAAIgU,GACxC,EACApT,MAAO,CACLoT,EAAG,EACHiC,OAPQmna,EAAUv0Y,OAUxB,IClDFg5a,IAAc,WAAY,UAAW,CACnCf,UAAW,SAAmBD,GAE5B,OADAA,EAAWznb,KAAyB,EAAlBynb,EAAWznb,KACtB4mc,IAAcnf,EACvB,EACAjkd,KAAM,SAAcnG,EAAKqH,GACvB,IAAI8C,EAAQ,IAASnK,GAAK,GAAO,GAC7BkF,EAAO7G,KAAKssd,UAAUsf,IAAcjqe,EAAI+e,OAAQ/e,EAAIgwd,YAAY,IAOpE,OANY3od,EAAUqI,SAAS,OAAQ,CACrC/K,OAAO,WAAS,UAAS,CAAC,EAAGwF,GAAQ,CACnCjF,KAAMA,IAER5E,KAAM,YAGV,EACAmqd,UAAW,SAAmB9jC,GAE5B,MAAO,CACL7/Y,OAAQ,SACR38B,MAAO,CACLoT,EAAG,EACH08B,KALQ0sY,EAAUv0Y,OAQxB,ICoBFg5a,IAAc,WAAY,OAAQ,CAChCf,UAAW,SAAmBD,GAC5B,OA/CJ,SAAuB9hd,GACrB,IAAI9I,EAKAgqe,EACA91N,EALApqQ,EAAIhB,EAAUgB,EAChBC,EAAIjB,EAAUiB,EACdyhB,EAAK1iB,EAAU0iB,GACf2X,EAAOr6B,EAAUq6B,MAGf,UAAQp5B,IACSige,GAAnBhqe,GAAK,UAAO+J,EAAG,IAAc,GAAImqQ,EAAOl0Q,EAAG,KAE3Cgqe,EAAOx+c,EACP0oP,EAAOnqQ,GAET,IAAIiqQ,EAAOlqQ,EAAIq5B,EAAO,EAClB8mc,EAAOnge,EAAIq5B,EAAO,EAKtB,MAAO,CAAC,CACNr5B,EAAGA,EACHC,EAAGige,GACF,CACDlge,EAAGA,EACHC,EAAGmqQ,GACF,CACDpqQ,EAAGmge,EACHlge,EAAGige,GACF,CACDlge,EAAGkqQ,EACHjqQ,EAAGige,GACF,CACDlge,EAAGmge,EACHlge,EAAGmqQ,GACF,CACDpqQ,EAAGkqQ,EACHjqQ,EAAGmqQ,GAEP,CAQW84N,CAAcpiB,EACvB,EACAjkd,KAAM,SAAcnG,EAAKqH,GACvB,IAAI8C,EAAQ,IAASnK,GAAK,GAAM,GAC5BkF,EAAO7G,KAAKssd,UAVpB,SAAqB5rc,GACnB,MAAO,CAAC,CAAC,IAAKA,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,IAAKwV,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,IAAKwV,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,IAAKwV,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,IAAKwV,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,IAAKwV,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAC5M,CAQ8Bkje,CAAYzse,EAAI+e,SAO1C,OANY1X,EAAUqI,SAAS,OAAQ,CACrC/K,OAAO,WAAS,UAAS,CAAC,EAAGwF,GAAQ,CACnCjF,KAAMA,IAER5E,KAAM,YAGV,EACAmqd,UAAW,SAAmB9jC,GAE5B,MAAO,CACL7/Y,OAAQ,SAAgBx9B,EAAGC,EAAGgU,GAC5B,MAAO,CAAC,CAAC,IAAKjU,EAAIiU,EAAI,EAAGhU,EAAIgU,GAAI,CAAC,IAAKjU,EAAIiU,EAAI,EAAGhU,EAAIgU,GAAI,CAAC,IAAKjU,EAAGC,EAAIgU,GAAI,CAAC,IAAKjU,EAAGC,EAAIgU,GAAI,CAAC,IAAKjU,EAAIiU,EAAI,EAAGhU,EAAIgU,GAAI,CAAC,IAAKjU,EAAIiU,EAAI,EAAGhU,EAAIgU,GAC5I,EACApT,MAAO,CACLoT,EAAG,EACHiC,OAPQmna,EAAUv0Y,OAUxB,ICtEF,IAAIs6b,IAAsB,SAA6Brje,EAAO4U,EAAWtO,GACvE,IAIIsB,EAJA3H,EAAID,EAAMC,EACVC,EAAIF,EAAME,EACVoje,EAAQ1ud,EAAU3U,EAClBsje,EAAQ3ud,EAAU1U,EAEtB,OAAQoG,GACN,IAAK,KACHsB,EAAS,CAAC,CACR3H,EAAGqje,EACHpje,EAAGA,IAEL,MACF,IAAK,KACH0H,EAAS,CAAC,CACR3H,EAAGA,EACHC,EAAGqje,IAEL,MACF,IAAK,MACH,IAAIC,GAAWF,EAAQrje,GAAK,EAC5B2H,EAAS,CAAC,CACR3H,EAAGuje,EACHtje,EAAGA,GACF,CACDD,EAAGuje,EACHtje,EAAGqje,IAEL,MACF,IAAK,MACH,IAAIE,GAAWvje,EAAIqje,GAAS,EAC5B37d,EAAS,CAAC,CACR3H,EAAGA,EACHC,EAAGuje,GACF,CACDxje,EAAGqje,EACHpje,EAAGuje,IAMT,OAAO77d,CACT,EAoBA,SAAS87d,IAAyB/se,EAAK2P,GACrC,IAAIoP,EAASg6c,IAAc/4d,EAAI+e,OAAQ/e,EAAIg5d,aAAch5d,EAAIi5d,iBACzD/zd,EAAO,GAKX,OAJA,UAAK6Z,GAAQ,SAAUw7c,GACrB,IAAIyS,EAvBR,SAA8Bjud,EAAQpP,GACpC,IAAIsB,EAAS,GASb,OARA,UAAK8N,GAAQ,SAAU1V,EAAOhD,GAC5B,IAAI4X,EAAYc,EAAO1Y,EAAQ,GAE/B,GADA4K,EAAOrS,KAAKyK,GACR4U,EAAW,CACb,IAAIgvd,EAAmBP,IAAoBrje,EAAO4U,EAAWtO,GAC7DsB,EAASA,EAAOW,OAAOq7d,EACzB,CACF,IACOh8d,CACT,CAY4Bi8d,CAAqB3S,EAAgB5qd,GAC7DzK,EAAOA,EAAK0M,OAXhB,SAA4BmN,GAC1B,OAAOA,EAAOsQ,KAAI,SAAUhmB,EAAOhD,GACjC,OAAiB,IAAVA,EAAc,CAAC,IAAKgD,EAAMC,EAAGD,EAAME,GAAK,CAAC,IAAKF,EAAMC,EAAGD,EAAME,EACtE,GACF,CAOuB4je,CAAmBH,GACxC,KACO,WAAS,UAAS,CAAC,EAAG,IAAShte,GAAK,GAAM,EAAO,cAAe,CACrEkF,KAAMA,GAEV,CC3EA,SAASkoe,IAAW5se,GAClB,IAAIogC,GAAS,UAAQpgC,GAAmBA,EAAV,CAACA,GAC3B+X,EAAMqoB,EAAM,GACZpoB,EAAMooB,EAAMA,EAAM1hC,OAAS,GAC3Bmue,EAAOzsc,EAAM1hC,OAAS,EAAI0hC,EAAM,GAAKroB,EAGzC,MAAO,CACLA,IAAKA,EACLC,IAAKA,EACL60d,KAAMA,EACNC,KANS1sc,EAAM1hC,OAAS,EAAI0hC,EAAM,GAAKpoB,EAOvC+gC,OANW3Y,EAAM1hC,OAAS,EAAI0hC,EAAM,GAAKysc,EAQ7C,CACA,SAASE,IAAajke,EAAGC,EAAGo5B,GAC1B,IACI6qc,EADAC,EAAW9qc,EAAO,EAEtB,IAAI,UAAQp5B,GAAI,CAEd,IAAI/J,EAAK4te,IAAW7je,GAClBgP,EAAM/Y,EAAG+Y,IACTC,EAAMhZ,EAAGgZ,IACT+gC,EAAS/5C,EAAG+5C,OACZ8zb,EAAO7te,EAAG6te,KAER9+d,EAAOjF,EAAImke,EACXj/d,EAAOlF,EAAImke,EACfD,EAAc,CAAC,CAACj/d,EAAMiK,GAAM,CAAChK,EAAMgK,GAAM,CAAClP,EAAGkP,GAAM,CAAClP,EAHlDgke,EAAO9te,EAAG8te,MAGkD,CAAC/+d,EAAM8+d,GAAO,CAAC9+d,EAAM++d,GAAO,CAAC9+d,EAAM8+d,GAAO,CAAC9+d,EAAM6+d,GAAO,CAAC/je,EAAG+je,GAAO,CAAC/je,EAAGiP,GAAM,CAAChK,EAAMgK,GAAM,CAAC/J,EAAM+J,GAAM,CAAChK,EAAMgrC,GAAS,CAAC/qC,EAAM+qC,GAC9L,KAAO,CAELhwC,GAAI,UAAMA,GAAK,GAAMA,EACrB,IAKE+je,EALE/3d,EAAK63d,IAAW9je,GAMhBmF,GALF8J,EAAMhD,EAAGgD,IACTC,EAAMjD,EAAGiD,IACT+gC,EAAShkC,EAAGgkC,OAGHhwC,EAAIkke,GACX/+d,EAAOnF,EAAIkke,EACfD,EAAc,CAAC,CAACj1d,EAAK9J,GAAO,CAAC8J,EAAK7J,GAAO,CAAC6J,EAAKhP,GAAI,CAJjD8je,EAAO93d,EAAG83d,KAI8C9je,GAAI,CAAC8je,EAAM5+d,GAAO,CAAC4+d,EAAM3+d,GAAO,CAHxF4+d,EAAO/3d,EAAG+3d,KAGqF5+d,GAAO,CAAC4+d,EAAM7+d,GAAO,CAAC6+d,EAAM/je,GAAI,CAACiP,EAAKjP,GAAI,CAACiP,EAAK/J,GAAO,CAAC+J,EAAK9J,GAAO,CAAC6qC,EAAQ9qC,GAAO,CAAC8qC,EAAQ7qC,GAChM,CACA,OAAO8+d,EAAYn+c,KAAI,SAAUva,GAC/B,MAAO,CACLxL,EAAGwL,EAAI,GACPvL,EAAGuL,EAAI,GAEX,GACF,CC/CA,SAAS44d,IAAiBlte,GACxB,IAEI2oa,IAFS,UAAQ3oa,GAAmBA,EAAV,CAACA,IAEZoQ,MAAK,SAAU4L,EAAG8E,GACnC,OAAOA,EAAI9E,CACb,IACA,OtJcK,SAAgBkT,EAAQi+c,EAAcC,GAC3C,IAAI,UAASl+c,GACX,OAAOA,EAAOm+c,OAAOF,EAAcC,GAC9B,IAAI,UAAQl+c,GAAS,CAC1B,IAAIo+c,EAAep+c,EAAOxwB,OAC1B,GAAI4ue,EAAeH,EAEjB,IADA,IAAI98c,EAAO88c,EAAeG,EACjBvue,EAAI,EAAGA,EAAIsxB,EAAMtxB,IACxBmwB,EAAO9wB,KAAKgve,EAGlB,CACA,OAAOl+c,CACT,CsJ3BSm+c,CAAO1kE,EAAQ,EAAGA,EAAOA,EAAOjqa,OAAS,GAClD,CAEA,SAAS6ue,IAAgBzke,EAAGC,EAAGo5B,GAC7B,IAAIqrc,EAAUN,IAAiBnke,GAC/B,MAAO,CAAC,CACND,EAAGA,EACHC,EAAGyke,EAAQ,IACV,CACD1ke,EAAGA,EACHC,EAAGyke,EAAQ,IACV,CACD1ke,EAAGA,EAAIq5B,EAAO,EACdp5B,EAAGyke,EAAQ,IACV,CACD1ke,EAAGA,EAAIq5B,EAAO,EACdp5B,EAAGyke,EAAQ,IACV,CACD1ke,EAAGA,EAAIq5B,EAAO,EACdp5B,EAAGyke,EAAQ,IACV,CACD1ke,EAAGA,EAAIq5B,EAAO,EACdp5B,EAAGyke,EAAQ,IACV,CACD1ke,EAAGA,EACHC,EAAGyke,EAAQ,IACV,CACD1ke,EAAGA,EACHC,EAAGyke,EAAQ,IAEf,CCrCA,SAASC,IAAalvd,EAAQ4jB,GAC5B,IAAIv2B,EAAQkM,KAAKoG,IAAIK,EAAO,GAAGzV,EAAIyV,EAAO,GAAGzV,GACzC+C,EAASiM,KAAKoG,IAAIK,EAAO,GAAGxV,EAAIwV,EAAO,GAAGxV,GAC1CsvB,EAAMvgB,KAAKC,IAAInM,EAAOC,GAO1B,OANIs2B,IACF9J,GAAM,UAAM8J,EAAM,EAAGrqB,KAAKC,IAAInM,EAAOC,KAEvCwsB,GAAY,EAGL,CACLvvB,GAHayV,EAAO,GAAGzV,EAAIyV,EAAO,GAAGzV,GAAK,EAG7BuvB,EACbtvB,GAHawV,EAAO,GAAGxV,EAAIwV,EAAO,GAAGxV,GAAK,EAG7BsvB,EACbzsB,MAAa,EAANysB,EACPxsB,OAAc,EAANwsB,EAEZ,EH6DA,UAAK,CAAC,KAAM,KAAM,MAAO,QAAQ,SAAUlpB,GACzCy7c,IAAc,OAAQz7c,EAAW,CAC/BxJ,KAAM,SAAcnG,EAAKqH,GACvB,IAAI1C,EAAQooe,IAAyB/se,EAAK2P,GAM1C,OALYtI,EAAUqI,SAAS,CAC7B1I,KAAM,OACNrC,MAAOA,EACPrE,KAAM,QAGV,EACAmqd,UAAW,SAAmB9jC,GAC5B,OAAOozC,IAAcpzC,EAAWh3a,EAClC,GAEJ,KI3FA,UzBD2B,CAAC,QAAS,OAAQ,OAAQ,SAAU,SyBC3C,SAAU4+c,GAC5BnD,IAAc,QAASmD,EAAW,CAChCpod,KAAM,SAAcnG,EAAKqH,GACvB,OAAO8je,IAAW9se,KAAM2B,EAAKqH,EAAWknd,GAAW,EACrD,EACA9D,UAAW,SAAmB9jC,GAC5B,IAAIv0Y,EAAQu0Y,EAAUv0Y,MACtB,MAAO,CACLtL,OAAQ2wb,IAAclJ,GACtBpkd,MAAO,CACLoT,EAAG,IACHiC,OAAQ4yB,EACR6H,KAAM,MAGZ,GAEJ,ICnBAmxa,IAAc,QAAS,QAAS,CAC9Bjld,KAAM,SAAcnG,EAAKqH,GACvB,IAAIgvb,EAAK72b,EACLmjC,EAAO,IAAS3iC,GAAK,GAAO,EAAO,KAAKud,EACxCwB,EAAS1gB,KAAK0sd,YAAY/qd,EAAI+e,QAC9B+2V,EAAgB/2V,EAAO,GAC3B,GAAI/e,EAAIopW,QACN0M,EAAgB/2V,EAAO,QAClB,GAAIA,EAAO7f,OAAS,EAAG,CAC5B,IAAI6Q,EAAQ1I,EAAUyI,WACtB,IACE,IAAK,IAAIs7d,GAAW,UAASrsd,GAASssd,EAAaD,EAASx3c,QAASy3c,EAAW10b,KAAM00b,EAAaD,EAASx3c,OAAQ,CAClH,IAAIvqB,EAAQgie,EAAW7qe,MACvBuP,EAAML,SAAS,QAAS,CACtB/K,MAAO,CACL2E,EAAGD,EAAMC,EAAIq5B,EAAO,EACpBp5B,EAAGF,EAAME,EAAIo5B,EACbv2B,MAAOu2B,EACPt2B,OAAQs2B,EACRw8C,IAAKn/E,EAAI8D,MAAM,KAGrB,CACF,CAAE,MAAO0yb,GACPH,EAAM,CACJ5qY,MAAO+qY,EAEX,CAAE,QACA,IACM60C,IAAeA,EAAW10b,OAASn3C,EAAK4re,EAAS9zQ,SAAS93N,EAAGS,KAAKmre,EACxE,CAAE,QACA,GAAI/0C,EAAK,MAAMA,EAAI5qY,KACrB,CACF,CACA,OAAO17C,CACT,CACA,OAAO1I,EAAUqI,SAAS,QAAS,CACjC/K,MAAO,CACL2E,EAAGwsW,EAAcxsW,EAAIq5B,EAAO,EAC5Bp5B,EAAGusW,EAAcvsW,EAAIo5B,EACrBv2B,MAAOu2B,EACPt2B,OAAQs2B,EACRw8C,IAAKn/E,EAAI8D,MAAM,KAGrB,EACA2md,UAAW,SAAmB9jC,GAE5B,MAAO,CACL7/Y,OAAQ,SACR38B,MAAO,CACLoT,EAAG,IACH08B,KALQ0sY,EAAUv0Y,OAQxB,KCrDF,UAAK84b,KAAQ,SAAU3c,GACrBnD,IAAc,QAASmD,EAAW,CAChCpod,KAAM,SAAcnG,EAAKqH,GACvB,OAAO8je,IAAW9se,KAAM2B,EAAKqH,EAAWknd,GAAW,EACrD,EACA9D,UAAW,SAAmB9jC,GAC5B,IAAIv0Y,EAAQu0Y,EAAUv0Y,MACtB,MAAO,CACLtL,OAAQ2wb,IAAclJ,IAAcA,EACpCpkd,MAAO,CACLoT,EAAG,IACH08B,KAAM7H,GAGZ,GAEJ,ILoCAg5a,IAAc,SAAU,MAAO,CAC7Bf,UAAW,SAAmBD,GAI5B,OAAOmjB,IAHCnjB,EAAW9gd,EACb8gd,EAAW7gd,EACR6gd,EAAWznb,KAEtB,EACAx8B,KAAM,SAAcnG,EAAKqH,GACvB,IAAI8C,EAAQ,IAASnK,GAAK,GAAM,GAC5BkF,EAAO7G,KAAKssd,UAbpB,SAAoB5rc,GAClB,MAAO,CAAC,CAAC,IAAKA,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,IAAKwV,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,IAAKwV,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,IAAKwV,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,IAAKwV,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,IAAKwV,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,IAAKwV,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,IAAKwV,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,IAAKwV,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,KAAM,CAAC,IAAKwV,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,IAAKwV,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,IAAKwV,EAAO,IAAIzV,EAAGyV,EAAO,IAAIxV,GAAI,CAAC,IAAKwV,EAAO,IAAIzV,EAAGyV,EAAO,IAAIxV,GAAI,CAAC,IAAKwV,EAAO,IAAIzV,EAAGyV,EAAO,IAAIxV,GAAI,CAAC,IAAKwV,EAAO,IAAIzV,EAAGyV,EAAO,IAAIxV,GACpgB,CAW8B2ke,CAAWlue,EAAI+e,SAOzC,OANY1X,EAAUqI,SAAS,OAAQ,CACrC/K,OAAO,WAAS,UAAS,CAAC,EAAGwF,GAAQ,CACnCjF,KAAMA,EACN5E,KAAM,YAIZ,EACAmqd,UAAW,SAAmB9jC,GAE5B,MAAO,CACL7/Y,OAAQ,SAAgBx9B,EAAGC,EAAGgU,GAC5B,IACIwB,EAASwud,IAAajke,EADZ,CAACC,EAAI,EAAGA,EAAI,EAAGA,EAAGA,EAAI,EAAGA,EAAI,GACLgU,GACtC,MAAO,CAAC,CAAC,IAAKwB,EAAO,GAAGzV,EAAI,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,IAAKwV,EAAO,GAAGzV,EAAI,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,IAAKwV,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,IAAKwV,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,IAAKwV,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,IAAKwV,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,IAAKwV,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,IAAKwV,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,IAAKwV,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,KAAM,CAAC,IAAKwV,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,IAAKwV,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,IAAKwV,EAAO,IAAIzV,EAAI,EAAGyV,EAAO,IAAIxV,GAAI,CAAC,IAAKwV,EAAO,IAAIzV,EAAI,EAAGyV,EAAO,IAAIxV,GAAI,CAAC,IAAKwV,EAAO,IAAIzV,EAAGyV,EAAO,IAAIxV,GAAI,CAAC,IAAKwV,EAAO,IAAIzV,EAAGyV,EAAO,IAAIxV,GACphB,EACAY,MAAO,CACLoT,EAAG,EACHO,UAAW,EACX0B,OAVQmna,EAAUv0Y,OAaxB,IC3CFg5a,IAAc,SAAU,SAAU,CAChCf,UAAW,SAAmBD,GAI5B,OAAO2jB,IAHC3jB,EAAW9gd,EACb8gd,EAAW7gd,EACR6gd,EAAWznb,KAEtB,EACAx8B,KAAM,SAAcnG,EAAKqH,GACvB,IAAI8C,EAAQ,IAASnK,GAAK,GAAM,GAC5BkF,EAAO7G,KAAKssd,UAbpB,SAAuB5rc,GACrB,MAAO,CAAC,CAAC,IAAKA,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,IAAKwV,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,IAAKwV,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,IAAKwV,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,IAAKwV,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,IAAKwV,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,KAAM,CAAC,IAAKwV,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,IAAKwV,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GACrR,CAW8B4ke,CAAcnue,EAAI+e,SAO5C,OANY1X,EAAUqI,SAAS,OAAQ,CACrC/K,OAAO,WAAS,UAAS,CAAC,EAAGwF,GAAQ,CACnCjF,KAAMA,EACN5E,KAAM,YAIZ,EACAmqd,UAAW,SAAmB9jC,GAC5B,IAAIv0Y,EAAQu0Y,EAAUv0Y,MACtB,MAAO,CACLtL,OAAQ,SAAgBx9B,EAAGC,EAAGgU,GAC5B,IACIwB,EAASgvd,IAAgBzke,EADf,CAACC,EAAI,IAAKA,EAAI,EAAGA,EAAI,EAAGA,EAAI,KACDgU,GACzC,MAAO,CAAC,CAAC,IAAKwB,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,IAAKwV,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,IAAKwV,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,IAAKwV,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,IAAKwV,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,IAAKwV,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,KAAM,CAAC,IAAKwV,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,IAAKwV,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GACrR,EACAY,MAAO,CACL2T,UAAW,EACX0B,OAAQ4yB,EACR6H,KAAM7H,EACN70B,EAAG,GAGT,IC1DF6tc,IAAc,UAAW,SAAU,CACjCjld,KAAM,SAAcnG,EAAKqH,GACvB,KAAK,UAAQrH,EAAI+e,QAAS,CACxB,IAAIu7c,EAAa,IAASt6d,GAAK,GAAM,GACjC+e,EAAS1gB,KAAK0sd,YAAY/qd,EAAI+e,QAClC,OAAO1X,EAAUqI,SAAS,OAAQ,CAChC/K,OAAO,WAAS,UAAS,CAAC,EAAG21d,GAAa2T,IAAalvd,EAAQ/e,EAAI2iC,OACnEriC,KAAM,WAEV,CACF,EACAmqd,UAAW,SAAmB9jC,GAE5B,MAAO,CACL7/Y,OAAQ,SACR38B,MAAO,CACLoT,EAAG,EACH08B,KALQ0sY,EAAUv0Y,OAQxB,IIlCFg5a,IAAc,SAAU,SAAU,CAChCjld,KAAM,SAAcnG,EAAKqH,GACvB,IAAI1C,EAAQ,IAAS3E,GAAK,GAAM,GAC5BkF,EAAO7G,KAAKssd,UAAUyO,IAAoBp5d,EAAI+e,SAClD,OAAO1X,EAAUqI,SAAS,OAAQ,CAChC/K,OAAO,WAAS,UAAS,CAAC,EAAGA,GAAQ,CACnCO,KAAMA,KAGZ,EACAuld,UAAW,SAAmB9jC,GAE5B,MAAO,CACL7/Y,OAAQ,SACR38B,MAAO,CACLqV,OAAQ,KACRjC,EAAG,EACH08B,KANQ0sY,EAAUv0Y,OASxB,ICpBFg5a,IAAc,SAAU,SAAU,CAChCjld,KAAM,SAAcnG,EAAKqH,GACvB,IAAI1C,EAAQ,IAAS3E,GAAK,GAAM,GAC5BkF,EAAO7G,KAAKssd,UAAUwO,IAAcn5d,EAAI+e,SAC5C,OAAO1X,EAAUqI,SAAS,OAAQ,CAChC/K,OAAO,WAAS,UAAS,CAAC,EAAGA,GAAQ,CACnCO,KAAMA,KAGZ,EACAuld,UAAW,SAAmB9jC,GAE5B,MAAO,CACL7/Y,OAAQ,SACR38B,MAAO,CACLoT,EAAG,EACH08B,KAAM,KACNz6B,OANQmna,EAAUv0Y,OASxB,IAKFg5a,IAAc,SAAU,gBAAiB,CACvCjld,KAAM,SAAcnG,EAAKqH,GACvB,IAAI1C,EAAQ,IAAS3E,GAAK,GAAM,GAC5BkF,EAAO7G,KAAKssd,UAAUyO,IAAoBp5d,EAAI+e,SAClD,OAAO1X,EAAUqI,SAAS,OAAQ,CAChC/K,OAAO,WAAS,UAAS,CAAC,EAAGA,GAAQ,CACnCO,KAAMA,KAGZ,EACAuld,UAAW,SAAmB9jC,GAE5B,MAAO,CACL7/Y,OAAQ,SACR38B,MAAO,CACLoT,EAAG,EACH08B,KAAM,KACNz6B,OANQmna,EAAUv0Y,OASxB,IC9CF,IAAIg8b,IAA6B,SAAUrue,GAEzC,SAASque,IACP,OAAkB,OAAXrue,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAuIA,OA1IA,UAAU+ve,EAAerue,GAQzBque,EAAc7ve,UAAU8ve,iBAAmB,SAAU/3B,GAEnD,IACIv3b,EAASu3b,EAAYv3b,OACzB,OAAOA,EAAO,GAAM,GAAKA,EAAO,GAAM,EAAI,GAAK,CACjD,EAOAqvd,EAAc7ve,UAAUk4d,oBAAsB,SAAUt5C,EAAU92a,EAAO8wD,EAAO3N,GAC9E,IAAIhqD,EACA6J,EAAQtJ,EAAOxB,UAAUk4d,oBAAoBx2d,KAAK5B,KAAM8+a,EAAU92a,EAAO8wD,GACzEmlN,EAAaj+Q,KAAKmic,gBAElBzwJ,EADazzB,EAAWutJ,aACL,IAAM,IACzB1nO,EAAM9jM,KAAKgwe,iBAAiBlxD,EAASm5B,aAYzC,OAXAjtc,GAAQ,WAAS,UAAS,CAAC,EAAGA,KAAS7J,EAAK,CAAC,GAAMuwS,GAAO1mS,EAAM0mS,GAAO5tG,EAAK3iM,IACxE88Q,EAAW0tJ,UAAU,OACvB3ga,GAAQ,WAAS,UAAS,CAAC,EAAGA,GAAQ,CACpCC,GAAc,EAAXD,EAAMC,KAGTgzQ,EAAW0tJ,UAAU,OACvB3ga,GAAQ,WAAS,UAAS,CAAC,EAAGA,GAAQ,CACpCE,GAAc,EAAXF,EAAME,KAGNF,CACT,EAKA+ke,EAAc7ve,UAAU43d,kBAAoB,SAAUh5C,GACpD,IAAIz/N,EAAWr/M,KAAKq/M,SAChB04Q,EAAkB/3d,KAAK63d,qBACvBvqX,EAAQ+xG,EAAS/xG,MAErB,OAAO,UAAQ,CAAC,EAAGyqX,EAAiBzqX,EAAMymK,OAA8B,WAAtB+qK,EAAS3zX,SAAwB,CACjFg4B,OAAQ,GACN,CAAC,EAAG27V,EACV,EACAixD,EAAc7ve,UAAU83d,iBAAmB,SAAUC,EAAehgB,EAAajwc,EAAOmjD,GACtF,IAMIl8C,EACA0D,EACA8wE,EACAz0E,EATAivQ,EAAaj+Q,KAAKmic,gBAClBlD,EAAahhL,EAAWutJ,aACxBq2B,EAAcoW,EAAYv3b,OAC1BmiQ,EAAS5E,EAAWp/D,QAAQgjP,EAAY,IACxC5ka,EAASghP,EAAWp/D,QAAQgjP,EAAY,IACxC/9P,EAAM9jM,KAAKgwe,iBAAiB/3B,GAK5Bxyc,GAAQ,UAAQwyc,EAAYxyc,OAASwyc,EAAYxyc,MAAM,GAAKwyc,EAAYxyc,MAC5E,GAAc,WAAVA,GAAgC,YAAVA,EAAqB,CAE7C,IAAIksd,GAAa,UAAI1Z,EAAa,cAC9Bv3b,GAAS,UAAIu3b,EAAa,UAC9B,GAAI0Z,EAAY,CAEd,IAAIj8b,EAAKuoP,EAAWp/D,QAAQn+L,EAAO,IAC/B+K,EAAKwyP,EAAWp/D,QAAQn+L,EAAO,IAC/Buvd,EAAShyN,EAAWp/D,QAAQ8yQ,EAAW,IACvCue,EAASjyN,EAAWp/D,QAAQ8yQ,EAAW,IAEvC1yB,GACFhwb,EAAMgL,KAAKC,IAAI+1d,EAAO/ke,EAAGwqB,EAAGxqB,GAC5Bu4E,EAASxpE,KAAKE,IAAI81d,EAAO/ke,EAAGwqB,EAAGxqB,GAC/ByH,GAAS8Y,EAAGxgB,EAAIile,EAAOjle,GAAK,EAC5B+D,GAAQ0mB,EAAGzqB,EAAIgle,EAAOhle,GAAK,IAE3BgE,EAAMgL,KAAKC,KAAKuR,EAAGvgB,EAAIgle,EAAOhle,GAAK,GAAIwqB,EAAGxqB,EAAI+ke,EAAO/ke,GAAK,GAC1Du4E,EAASxpE,KAAKE,KAAKsR,EAAGvgB,EAAIgle,EAAOhle,GAAK,GAAIwqB,EAAGxqB,EAAI+ke,EAAO/ke,GAAK,GAC7DyH,EAAQu9d,EAAOjle,EACf+D,EAAO0mB,EAAGzqB,EAEd,MACEgE,EAAMgL,KAAKC,IAAI+iB,EAAO/xB,EAAG23Q,EAAO33Q,GAChCu4E,EAASxpE,KAAKE,IAAI8iB,EAAO/xB,EAAG23Q,EAAO33Q,GACnCyH,EAAQsqB,EAAOhyB,EACf+D,EAAO6zQ,EAAO53Q,CAElB,MACEgE,EAAMgL,KAAKC,IAAI+iB,EAAO/xB,EAAG23Q,EAAO33Q,GAChCu4E,EAASxpE,KAAKE,IAAI8iB,EAAO/xB,EAAG23Q,EAAO33Q,GACnCyH,EAAQsqB,EAAOhyB,EACf+D,EAAO6zQ,EAAO53Q,EAEhB,OAAQkgD,GACN,IAAK,QACH8sa,EAAchtd,EAAI0H,EAClBsld,EAAc/sd,GAAK+D,EAAMw0E,GAAU,EACnCw0Y,EAAch3c,WAAY,UAAIg3c,EAAe,YAAan0R,EAAM,EAAI,OAAS,SAC7E,MACF,IAAK,OACHm0R,EAAchtd,EAAI+D,EAClBipd,EAAc/sd,GAAK+D,EAAMw0E,GAAU,EACnCw0Y,EAAch3c,WAAY,UAAIg3c,EAAe,YAAan0R,EAAM,EAAI,OAAS,SAC7E,MACF,IAAK,SACCm7P,IACFg5B,EAAchtd,GAAK0H,EAAQ3D,GAAQ,GAErCipd,EAAc/sd,EAAIu4E,EAClBw0Y,EAAch3c,WAAY,UAAIg3c,EAAe,YAAa,UAC1DA,EAAc/2c,cAAe,UAAI+2c,EAAe,eAAgBn0R,EAAM,EAAI,SAAW,OACrF,MACF,IAAK,SACCm7P,IACFg5B,EAAchtd,GAAK0H,EAAQ3D,GAAQ,GAErCipd,EAAc/sd,GAAK+D,EAAMw0E,GAAU,EACnCw0Y,EAAch3c,WAAY,UAAIg3c,EAAe,YAAa,UAC1DA,EAAc/2c,cAAe,UAAI+2c,EAAe,eAAgB,UAChE,MACF,IAAK,MACCh5B,IACFg5B,EAAchtd,GAAK0H,EAAQ3D,GAAQ,GAErCipd,EAAc/sd,EAAI+D,EAClBgpd,EAAch3c,WAAY,UAAIg3c,EAAe,YAAa,UAC1DA,EAAc/2c,cAAe,UAAI+2c,EAAe,eAAgBn0R,EAAM,EAAI,SAAW,OAK3F,EACOisS,CACT,CA5IiC,CA4I/B,KACF,QC9III,IAAUl2d,KAAK+B,GAAK,EAIpBo0d,IAA0B,SAAU1ue,GAEtC,SAAS0ue,IACP,OAAkB,OAAX1ue,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAsMA,OAzMA,UAAUowe,EAAY1ue,GAStB0ue,EAAWlwe,UAAUg4d,eAAiB,SAAU/0Y,GAC9C,IAAI86L,EAAaj+Q,KAAKmic,gBAClB+2B,EAAe,EACnB,IAAI,UAAS/1Y,GACX+1Y,EAAe/1Y,OACV,IAAI,UAASA,KAAoC,IAAzBA,EAAOjwE,QAAQ,KAAa,CACzD,IAAIgM,EAAI++P,EAAWmuJ,YACfnuJ,EAAWn0K,YAAc,IAC3B5qF,GAAS,EAAI++P,EAAWn0K,aAE1BovX,EAAoC,IAArB7tc,WAAW83D,GAAiBjkE,CAC7C,CACA,OAAOg6c,CACT,EAMAkX,EAAWlwe,UAAUk3d,cAAgB,SAAUC,GAC7C,IAAIlxa,EAAQzkD,EAAOxB,UAAUk3d,cAAcx1d,KAAK5B,KAAMq3d,GAClDj/E,EAASp4Y,KAAKq/M,SAAS82P,YAC3B,OAAO,UAAIhwZ,GAAO,SAAU1uC,GAC1B,GAAIA,GAAQ2gY,EAAQ,CAClB,IAAIr/U,EAAUq/U,EAAOt/X,OAAM,UAAIrB,EAAKiO,KAAM0yX,EAAOv4Q,QACjD,OAAO,WAAS,UAAS,CAAC,EAAGpoH,GAAO,CAClCshD,QAASA,GAEb,CACA,OAAOthD,CACT,GACF,EAMA24d,EAAWlwe,UAAUw3d,cAAgB,SAAU1sd,GAC7C,IACIqpF,EADA4pL,EAAaj+Q,KAAKmic,gBAEtB,GAAIn3b,EAAMqle,UACRh8Y,EAAQrpF,EAAM0c,OAASzN,KAAK+B,GAAK,GAAKhR,EAAM0c,QAAUzN,KAAK+B,GAAK,EAAI,OAAS,aACxE,GAAKiiQ,EAAWutJ,aAEhB,CACL,IAAI3tY,EAASogP,EAAWiuJ,YACpB/oV,EAASn4E,EAAMm4E,OAEjBkR,EADEp6E,KAAKoG,IAAIrV,EAAMC,EAAI4yB,EAAO5yB,GAAK,EACzB,SACCD,EAAM0c,MAAQzN,KAAK+B,IAAMhR,EAAM0c,OAAS,EACzCy7D,EAAS,EAAI,OAAS,QAEtBA,EAAS,EAAI,QAAU,MAEnC,MAXEkR,EAAQ,SAYV,OAAOA,CACT,EAQA+7Y,EAAWlwe,UAAUy2a,cAAgB,SAAUmI,EAAUm5B,EAAajwc,GACpE,IACIsoe,EADA/uR,EAAS,EAETzqI,EAAUgoW,EAAShoW,QAAQ9uE,GAC3BhI,KAAKuwe,WAAWt4B,GAClBq4B,EAAWtwe,KAAKwwe,eAAev4B,EAAYv3b,SAEX,IAA5Bo+Z,EAAShoW,QAAQj2E,QAA0B,IAAVmH,EACnCA,EAAQ,EACW,IAAVA,IACTu5M,GAAU,GAEZ+uR,EAAWtwe,KAAKywe,YAAYx4B,EAAajwc,IAE3C,IAAIm7E,EAAS27V,EAAS37V,OAASo+H,EAC3BkrP,EAAczsc,KAAK0we,cAAcJ,GACjCK,EAAc7xD,EAASuxD,UACvBO,EAAmB5we,KAAKsua,eAAem+B,EAAatpX,EAAQmtZ,EAAUK,GAc1E,OAb2B,IAAvBC,EAAiB1xd,EAEnB0xd,EAAiB95Z,QAAU,IAE3B85Z,EAAiB95Z,QAAUA,EAC3B85Z,EAAiBlpd,MAAQ+kb,EACzBmkC,EAAiB78b,MAAQkka,EAAYlka,OAEvC68b,EAAiB33d,OAAS6la,EAAStI,WAAax2a,KAAK6we,eAAepkC,EAAatpX,EAAQwtZ,GAAe7xD,EAAS7la,OACjH23d,EAAiBlqd,MAAQ,CACvBzb,EAAGqle,EAASrle,EACZC,EAAGole,EAASple,GAEP0le,CACT,EAIAR,EAAWlwe,UAAUuwe,YAAc,SAAUx4B,EAAajwc,GAIxD,YAHc,IAAVA,IACFA,EAAQ,IAEL,UAAQiwc,EAAYhtc,KAAO,UAAQgtc,EAAY/sc,GAM7C,CACLD,GAAG,UAAQgtc,EAAYhtc,GAAKgtc,EAAYhtc,EAAEjD,GAASiwc,EAAYhtc,EAC/DC,GAAG,UAAQ+sc,EAAY/sc,GAAK+sc,EAAY/sc,EAAElD,GAASiwc,EAAY/sc,GAPxD,CACLD,EAAGgtc,EAAYhtc,EACfC,EAAG+sc,EAAY/sc,EAOrB,EAKAkle,EAAWlwe,UAAUwwe,cAAgB,SAAU1le,GAC7C,OAAOuub,IAAgBv5b,KAAKmic,gBAAiBn3b,EAC/C,EAQAole,EAAWlwe,UAAUoua,eAAiB,SAAU5mZ,EAAOy7D,EAAQn4E,EAAO2le,GACpE,IAAI1yN,EAAaj+Q,KAAKmic,gBAClBtka,EAASogP,EAAWiuJ,YACpBhtZ,EAAIo6a,IAAoBr7K,EAAYjzQ,GACxC,GAAU,IAANkU,EACF,OAAO,WAAS,UAAS,CAAC,EAAG2e,GAAS,CACpC3e,EAAGA,IAGP,IAAIwmT,EAAah+S,EACbu2P,EAAWutJ,cAAgBtsZ,EAAIikE,IAAWwtZ,EAE5CjrK,EAAah+S,EAAsB,EADjBzN,KAAKoE,KAAK8kE,GAAU,EAAIjkE,IAG1CA,GAAQikE,EAEV,MAAO,CACLl4E,EAAG4yB,EAAO5yB,EAAIiU,EAAIjF,KAAKkC,IAAIupT,GAC3Bx6T,EAAG2yB,EAAO3yB,EAAIgU,EAAIjF,KAAKoC,IAAIqpT,GAC3BxmT,EAAGA,EAEP,EAOAkxd,EAAWlwe,UAAU2we,eAAiB,SAAUnpd,EAAOy7D,EAAQwtZ,GAC7D,IAAI13d,EAASyO,EAAQyod,IAWrB,OAVIQ,IACF13d,GAAUk3d,KAERl3d,IACEA,EAASk3d,IACXl3d,GAAkBgB,KAAK+B,GACd/C,GAAUk3d,MACnBl3d,GAAkBgB,KAAK+B,KAGpB/C,CACT,EAEAm3d,EAAWlwe,UAAUswe,eAAiB,SAAU9vd,GAC9C,IAAIu9P,EAAaj+Q,KAAKmic,gBAClBrxa,EAAQpQ,EAAO7f,OACfu2a,EAAc,CAChBnsa,EAAG,EACHC,EAAG,GASL,OAPA,UAAKwV,GAAQ,SAAU1V,GACrBosa,EAAYnsa,GAAKD,EAAMC,EACvBmsa,EAAYlsa,GAAKF,EAAME,CACzB,IACAksa,EAAYnsa,GAAK6lB,EACjBsmZ,EAAYlsa,GAAK4lB,EACjBsmZ,EAAcn5J,EAAWp/D,QAAQu4N,EAEnC,EAEAg5D,EAAWlwe,UAAUqwe,WAAa,SAAUt4B,GAC1C,OAAOA,EAAYhtc,EAAEpK,OAAS,CAChC,EACOuve,CACT,CA3M8B,CA2M5B,KACF,QC7MIU,IAAwB,SAAUpve,GAEpC,SAASove,IACP,IAAIrwe,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAEhE,OADAS,EAAM+5c,cAAgB,aACf/5c,CACT,CA6EA,OAlFA,UAAUqwe,EAAUpve,GAMpBove,EAAS5we,UAAU23d,mBAAqB,SAAU10Y,EAAQh4B,GACxD,IAAIxpD,EAAMD,EAAOxB,UAAU23d,mBAAmBj2d,KAAK5B,KAAMmjF,EAAQh4B,GACjE,OAAO,UAAQ,CAAC,EAAGxpD,GAAK,UAAI3B,KAAKq/M,SAAS/xG,MAAO,YAAa,CAAC,GACjE,EAEAwjY,EAAS5we,UAAUg4d,eAAiB,SAAU/0Y,GAC5C,OAAOzhF,EAAOxB,UAAUg4d,eAAet2d,KAAK5B,KAAMmjF,IAAW,CAC/D,EACA2tZ,EAAS5we,UAAU2we,eAAiB,SAAUnpd,EAAOy7D,EAAQ4tZ,GAC3D,IAAI93d,EAUJ,OATIkqE,EAAS,KACXlqE,EAASyO,GACIzN,KAAK+B,GAAK,IACrB/C,GAAkBgB,KAAK+B,IAErB/C,GAAUgB,KAAK+B,GAAK,IACtB/C,GAAkBgB,KAAK+B,KAGpB/C,CACT,EACA63d,EAAS5we,UAAUw3d,cAAgB,SAAU1sd,GAC3C,IAEIqpF,EADAx2D,EADa79B,KAAKmic,gBACEj2B,YAcxB,OAXE73U,EADErpF,EAAM0c,OAASzN,KAAK+B,GAAK,GAAKhR,EAAMC,GAAK4yB,EAAO5yB,EAC1C,OAEA,QAEND,EAAMm4E,QAAU,IAEhBkR,EADY,UAAVA,EACM,OAEA,SAGLA,CACT,EACAy8Y,EAAS5we,UAAUuwe,YAAc,SAAUzle,GACzC,OAAOA,CACT,EACA8le,EAAS5we,UAAUwwe,cAAgB,SAAU1le,GAC3C,IASI0c,EATAu2P,EAAaj+Q,KAAKmic,gBAClBhla,EAAa,CACflyB,GAAG,UAAQD,EAAMC,GAAKD,EAAMC,EAAE,GAAKD,EAAMC,EACzCC,EAAGF,EAAME,EAAE,IAETgsa,EAAW,CACbjsa,GAAG,UAAQD,EAAMC,GAAKD,EAAMC,EAAE,GAAKD,EAAMC,EACzCC,EAAGF,EAAME,EAAE,IAGT6W,EAAaw3a,IAAgBt7K,EAAY9gP,GAC7C,GAAInyB,EAAM0V,QAAU1V,EAAM0V,OAAO,GAAGxV,IAAMF,EAAM0V,OAAO,GAAGxV,EACxDwc,EAAQ3F,MACH,CACL,IAAIC,EAAWu3a,IAAgBt7K,EAAYi5J,GACvCn1Z,GAAcC,IAEhBA,GAAgC,EAAV/H,KAAK+B,IAE7B0L,EAAQ3F,GAAcC,EAAWD,GAAc,CACjD,CACA,OAAO2F,CACT,EAEAopd,EAAS5we,UAAUoua,eAAiB,SAAU5mZ,EAAOy7D,GACnD,IAAI86L,EAAaj+Q,KAAKmic,gBAClBtka,EAASogP,EAAWiuJ,YACpBhtZ,EAAI++P,EAAWmuJ,YAAcjpV,EACjC,OAAO,WAAS,UAAS,CAAC,EAAGwzW,IAAiB94Z,EAAO5yB,EAAG4yB,EAAO3yB,EAAGgU,EAAGwI,IAAS,CAC5EA,MAAOA,EACPxI,EAAGA,GAEP,EACO4xd,CACT,CApF4B,CAoF1B,KACF,QC1FO,SAAS,IAAc3qb,EAAO6sZ,EAAag+B,GAChD,IAAIj9N,EAAS5tN,EAAM51C,QAAO,SAAUkH,GAClC,OAAQA,EAAKw5d,SACf,IAEAl9N,EAAOxhQ,MAAK,SAAU4L,EAAG8E,GACvB,OAAO9E,EAAEjT,EAAI+X,EAAE/X,CACjB,IAEA,IAIIhK,EAJAgwe,GAAc,EACd/hM,EAAS6hM,EAAU5ge,KACnB+ge,EAAOH,EAAU3ge,KACjB+ge,EAAcn3d,KAAKoG,IAAI8uR,EAASgiM,GAEhC9ge,EAAO,EACPD,EAAO6R,OAAO+5R,UACd1mC,EAAQvB,EAAO/iP,KAAI,SAAU47B,GAO/B,OANIA,EAAM1hD,EAAImF,IACZA,EAAOu8C,EAAM1hD,GAEX0hD,EAAM1hD,EAAIkF,IACZA,EAAOw8C,EAAM1hD,GAER,CACL4rE,QAASlqB,EAAMkqB,QACfxyC,KAAM0ua,EACNj3O,QAAS,CAACnvK,EAAM1hD,EAAIikS,GACpBx0K,IAAK,KAET,IAKA,IAJAvqH,GAAQ++R,EACJ9+R,EAAO8+R,EAASiiM,IAClBA,EAAc/ge,EAAO8+R,GAEhB+hM,GAUL,IARA57N,EAAMltQ,SAAQ,SAAUmZ,GACtB,IAAI7Y,GAAUuR,KAAKC,IAAI7Y,MAAM+O,EAAMmR,EAAIw6M,SAAW9hN,KAAKE,IAAI9Y,MAAM+O,EAAMmR,EAAIw6M,UAAY,EACvFx6M,EAAIo5G,IAAM1gH,KAAKC,IAAID,KAAKE,IAAI/J,EAAM1H,EAAS6Y,EAAI+iB,KAAO,GAAI8sc,EAAc7vd,EAAI+iB,MAC5E/iB,EAAIo5G,IAAM1gH,KAAKE,IAAI,EAAGoH,EAAIo5G,IAC5B,IAEAu2W,GAAc,EACdhwe,EAAIo0Q,EAAMz0Q,OACHK,KACL,GAAIA,EAAI,EAAG,CACT,IAAImwe,EAAc/7N,EAAMp0Q,EAAI,GACxBqgB,EAAM+zP,EAAMp0Q,GACZmwe,EAAY12W,IAAM02W,EAAY/sc,KAAO/iB,EAAIo5G,MAE3C02W,EAAY/sc,MAAQ/iB,EAAI+iB,KACxB+sc,EAAYt1Q,QAAUs1Q,EAAYt1Q,QAAQxoN,OAAOgO,EAAIw6M,SAEjDs1Q,EAAY12W,IAAM02W,EAAY/sc,KAAO8sc,IACvCC,EAAY12W,IAAMy2W,EAAcC,EAAY/sc,MAE9CgxO,EAAMl0Q,OAAOF,EAAG,GAChBgwe,GAAc,EAElB,CAGJhwe,EAAI,EAEJo0Q,EAAMltQ,SAAQ,SAAU6a,GACtB,IAAIqud,EAAoBniM,EAAS6jK,EAAc,EAC/C/vb,EAAE84M,QAAQ3zN,SAAQ,WAChB2rQ,EAAO7yQ,GAAGgK,EAAI+X,EAAE03G,IAAM22W,EACtBA,GAAqBt+B,EACrB9xc,GACF,GACF,GACF,CCtEA,IAAI,IAAS,ECCb,IAAIqwe,IAAoB,EAIpBC,IAAyB,ECT7B,IAAIC,IAAY,IAKZC,IAAsB,WACxB,SAASA,EAAO/ve,QACF,IAARA,IACFA,EAAM,CAAC,GAET3B,KAAK4/R,OAAS,CAAC,EACf,IAAIz+R,EAAKQ,EAAIgwe,KACXA,OAAc,IAAPxwe,EAAgB,EAAIA,EAC3B+V,EAAKvV,EAAIiwe,KACTA,OAAc,IAAP16d,EAAgB,EAAIA,EAC7BlX,KAAK2xe,KAAOA,EACZ3xe,KAAK4xe,KAAOA,CACd,CAiEA,OAhEAF,EAAOxxe,UAAU2xe,OAAS,SAAU/ie,GAOlC,IANA,IAAI+ie,GAAS,EACTjyM,EAAS5/R,KAAK4/R,OACd1vR,EAAO+J,KAAKwoB,MAAM3zB,EAAKoB,MACvBC,EAAO8J,KAAKwoB,MAAM3zB,EAAKqB,MACvBC,EAAO6J,KAAKwoB,MAAM3zB,EAAKsB,MACvBC,EAAO4J,KAAKwoB,MAAM3zB,EAAKuB,MAClBnP,EAAIgP,EAAMhP,GAAKiP,EAAMjP,GAAK,EACjC,GAAK0+R,EAAO1+R,IAIZ,GAAIA,IAAMgP,GAAQhP,IAAMiP,GACtB,IAAK,IAAIjJ,EAAIkJ,EAAMlJ,GAAKmJ,EAAMnJ,IAC5B,GAAI04R,EAAO1+R,GAAGgG,GAAI,CAChB2qe,GAAS,EACT,KACF,OAGF,GAAIjyM,EAAO1+R,GAAGkP,IAASwvR,EAAO1+R,GAAGmP,GAAO,CACtCwhe,GAAS,EACT,KACF,OAdAjyM,EAAO1+R,GAAK,CAAC,EAiBjB,OAAO2we,CACT,EACAH,EAAOxxe,UAAU4xe,QAAU,SAAUhje,GAOnC,IANA,IAAI8wR,EAAS5/R,KAAK4/R,OACd1vR,EAAO+J,KAAKwoB,MAAM3zB,EAAKoB,MACvBC,EAAO8J,KAAKwoB,MAAM3zB,EAAKqB,MACvBC,EAAO6J,KAAKwoB,MAAM3zB,EAAKsB,MACvBC,EAAO4J,KAAKwoB,MAAM3zB,EAAKuB,MAElBnP,EAAIgP,EAAMhP,GAAKiP,EAAMjP,GAAK,EAC5B0+R,EAAO1+R,KACV0+R,EAAO1+R,GAAK,CAAC,GAGjB,IAASA,EAAIgP,EAAMhP,GAAKiP,EAAMjP,GAAKlB,KAAK2xe,KAAM,CAC5C,IAAK,IAAIzqe,EAAIkJ,EAAMlJ,GAAKmJ,EAAMnJ,GAAKlH,KAAK4xe,KACtChyM,EAAO1+R,GAAGgG,IAAK,EAEjB04R,EAAO1+R,GAAGmP,IAAQ,CACpB,CAEA,GAAkB,IAAdrQ,KAAK4xe,KACP,IAAS1we,EAAIkP,EAAMlP,GAAKmP,EAAMnP,GAAK,EACjC0+R,EAAO1vR,GAAMhP,IAAK,EAClB0+R,EAAOzvR,GAAMjP,IAAK,EAItB,GAAkB,IAAdlB,KAAK2xe,KACP,IAASzwe,EAAIgP,EAAMhP,GAAKiP,EAAMjP,GAAK,EACjC0+R,EAAO1+R,GAAGkP,IAAQ,EAClBwvR,EAAO1+R,GAAGmP,IAAQ,CAGxB,EACAqhe,EAAOxxe,UAAUkC,QAAU,WACzBpC,KAAK4/R,OAAS,CAAC,CACjB,EACO8xM,CACT,CA9E0B,GA0I1B,SAASK,IAAoBnlb,EAAO3hD,EAAGC,EAAGlD,GACxC,IAAI7G,EAAKyrD,EAAMh8C,gBACb7C,EAAQ5M,EAAG4M,MACXC,EAAS7M,EAAG6M,OACV1H,EAAQ,CACV2E,EAAGA,EACHC,EAAGA,EACH+V,UAAW,UAEb,OAAQjZ,GACN,KAAK,EACH1B,EAAM4E,GAAK8C,EAAS,EACpB1H,EAAM2E,GAAK,EACX3E,EAAM2a,UAAY,OAClB,MACF,KAAK,EACH3a,EAAM4E,GAAK8C,EAAS,EACpB1H,EAAM2E,GAAK,EACX3E,EAAM2a,UAAY,QAClB,MACF,KAAK,EACH3a,EAAM4E,GAAK8C,EAAS,EACpB1H,EAAM2E,GAAK,EACX3E,EAAM2a,UAAY,QAClB,MACF,KAAK,EACH3a,EAAM4E,GAAK8C,EAAS,EACpB1H,EAAM2E,GAAK,EACX3E,EAAM2a,UAAY,OAClB,MACF,KAAK,EACH3a,EAAM4E,GAAc,EAAT8C,EAAa,EACxB,MACF,KAAK,EACH1H,EAAM4E,GAAc,EAAT8C,EAAa,EACxB,MACF,KAAK,EACH1H,EAAM2E,GAAK8C,EAAQ,EACnBzH,EAAM2a,UAAY,OAClB,MACF,KAAK,EACH3a,EAAM2E,GAAK8C,EAAQ,EACnBzH,EAAM2a,UAAY,QAMtB,OADA2rC,EAAMxmD,KAAKE,GACJsmD,EAAMh8C,eACf,CCzLA,SAASohe,IAAQtxd,GAEf,GAAIA,EAAO7f,OAAS,EAClB,MAAO,GAGT,IAAIq4B,EAAS,SAAgBxS,EAAOmI,GAClC,MAAO,CAACA,EAAI5jB,EAAIyb,EAAMzb,EAAG4jB,EAAI3jB,EAAIwb,EAAMxb,EACzC,EAIA,MAAO,CAFEguB,EAAOxY,EAAO,GAAIA,EAAO,IACzBwY,EAAOxY,EAAO,GAAIA,EAAO,IAEpC,CAMA,SAAStH,IAAcpO,EAAOgwP,EAAKn9L,QACrB,IAARm9L,IACFA,EAAM,QAEO,IAAXn9L,IACFA,EAAS,CACP5yD,EAAG,EACHC,EAAG,IAGP,IAAID,EAAID,EAAMC,EACZC,EAAIF,EAAME,EACZ,MAAO,CACLD,GAAIA,EAAI4yD,EAAO5yD,GAAKgP,KAAKkC,KAAK6+O,IAAQ9vP,EAAI2yD,EAAO3yD,GAAK+O,KAAKoC,KAAK2+O,GAAOn9L,EAAO5yD,EAC9EC,GAAI2yD,EAAO5yD,EAAIA,GAAKgP,KAAKoC,KAAK2+O,IAAQ9vP,EAAI2yD,EAAO3yD,GAAK+O,KAAKkC,KAAK6+O,GAAOn9L,EAAO3yD,EAElF,CAOA,SAAS,IAAcqW,GACrB,IAAIb,EAAS,CAAC,CACZzV,EAAGsW,EAAItW,EACPC,EAAGqW,EAAIrW,GACN,CACDD,EAAGsW,EAAItW,EAAIsW,EAAIxT,MACf7C,EAAGqW,EAAIrW,GACN,CACDD,EAAGsW,EAAItW,EAAIsW,EAAIxT,MACf7C,EAAGqW,EAAIrW,EAAIqW,EAAIvT,QACd,CACD/C,EAAGsW,EAAItW,EACPC,EAAGqW,EAAIrW,EAAIqW,EAAIvT,SAEb83Q,EAAWvkQ,EAAIukQ,SACnB,OAAIA,EACK,CAAC1sQ,IAAcsH,EAAO,GAAIolQ,EAAUplQ,EAAO,IAAKtH,IAAcsH,EAAO,GAAIolQ,EAAUplQ,EAAO,IAAKtH,IAAcsH,EAAO,GAAIolQ,EAAUplQ,EAAO,IAAKtH,IAAcsH,EAAO,GAAIolQ,EAAUplQ,EAAO,KAE1LA,CACT,CAQA,SAASuxd,IAAcvxd,EAAuBmzP,GAE5C,GAAInzP,EAAO7f,OAAS,EAClB,MAAO,CACLqZ,IAAK,EACLC,IAAK,GAGT,IAAI+3d,EAAU,GAId,OAHAxxd,EAAOtY,SAAQ,SAAU4C,GACvBkne,EAAQ3xe,KAtFZ,SAAa4d,EAAG8E,GACd,OAAQ9E,EAAE,IAAM,IAAM8E,EAAE,IAAM,IAAM9E,EAAE,IAAM,IAAM8E,EAAE,IAAM,IAAM9E,EAAE,IAAM,IAAM8E,EAAE,IAAM,EACxF,CAoFiB,CAAI,CAACjY,EAAMC,EAAGD,EAAME,GAAI2oQ,GACvC,IACO,CACL35P,IAAKD,KAAKC,IAAI7Y,MAAM4Y,MAAM,UAAc,IAAI,UAAOi4d,IAAU,IAC7D/3d,IAAKF,KAAKE,IAAI9Y,MAAM4Y,MAAM,UAAc,IAAI,UAAOi4d,IAAU,IAEjE,CACA,SAASC,IAAoBC,EAAaC,GACxC,OAAOD,EAAYj4d,IAAMk4d,EAAYn4d,KAAOk4d,EAAYl4d,IAAMm4d,EAAYl4d,GAC5E,CAIA,SAASm4d,IAAW/wd,GAClB,MAAO,CAAC,IAAK,IAAK,QAAS,UAAUinH,OAAM,SAAUpiI,GACnD,MAJkB,iBADC2f,EAKExE,EAAInb,MAJM6b,OAAOC,MAAM6D,IAAMA,IAAMxhB,KAAYwhB,KAAM,IAD9E,IAAuBA,CAMrB,GACF,CAgBO,SAAS,IAAUka,EAAMC,EAAMsqE,GAKpC,QAJe,IAAXA,IACFA,EAAS,IAGN8nY,IAAWryc,KAAUqyc,IAAWpyc,GAAO,OAAO,EAEnD,IAAKD,EAAK6lP,WAAa5lP,EAAK4lP,SAC1B,OApBG,SAAyB7lP,EAAMC,EAAMsqE,GAI1C,YAHe,IAAXA,IACFA,EAAS,KAEFtqE,EAAKj1B,EAAIg1B,EAAKh1B,EAAIg1B,EAAKlyB,MAAQy8F,GAAUtqE,EAAKj1B,EAAIi1B,EAAKnyB,MAAQkyB,EAAKh1B,EAAIu/F,GAAUtqE,EAAKh1B,EAAI+0B,EAAK/0B,EAAI+0B,EAAKjyB,OAASw8F,GAAUtqE,EAAKh1B,EAAIg1B,EAAKlyB,OAASiyB,EAAK/0B,EAAIs/F,EACvK,CAeW+nY,CAAgBtyc,EAAMC,EAAMsqE,GAOrC,IAJA,IAAIgoY,EAAc,IAAcvyc,GAC5Bwyc,EAAc,IAAcvyc,GAE5B6jS,EAAOiuK,IAAQQ,GAAaj/d,OAAOy+d,IAAQS,IACtCvxe,EAAI,EAAGA,EAAI6iU,EAAKljU,OAAQK,IAAK,CACpC,IAAI2yQ,EAAOkwD,EAAK7iU,GAIhB,IAAKixe,IAHaF,IAAcO,EAAa3+N,GAC3Bo+N,IAAcQ,EAAa5+N,IAG3C,OAAO,CAEX,CACA,OAAO,CACT,CChJA,IAAI6+N,IAAwB,WAC1B,SAASA,EAAS/4a,GAChB,IAAIl5D,EAAQT,KACZA,KAAK4nF,MAAQ,GACb5nF,KAAK2ye,OAAS,IAAIC,OAAOj5a,GACzB35D,KAAK2ye,OAAOh/U,UAAY,SAAUzvJ,GAChC,IAAI/C,EAC2B,QAA9BA,EAAKV,EAAMmnF,MAAMh9D,eAA4B,IAAPzpB,GAAyBA,EAAGkmC,QAAQnjC,EAC7E,EACAlE,KAAK2ye,OAAOE,eAAiB,SAAU3ue,GACrC,IAAI/C,EACJ6jI,QAAQib,KAAK,yCACkB,QAA9B9+I,EAAKV,EAAMmnF,MAAMh9D,eAA4B,IAAPzpB,GAAyBA,EAAGmmC,OAAOpjC,EAC5E,CACF,CAmBA,OAlBAwue,EAASxye,UAAU69D,KAAO,SAAUz8C,EAAQk4C,GAC1C,IAAI/4D,EAAQT,KACZ,OAAO,IAAI4mC,SAAQ,SAAUS,EAASC,GACpC7mC,EAAMmnF,MAAMrnF,KAAK,CACf8mC,QAASA,EACTC,OAAQA,IAEV,IACE7mC,EAAMkye,OAAO9+U,YAAYvyI,EAC3B,CAAE,MAAOpd,KACP8gI,QAAQib,KAAK,0CACb,UAAWzmF,IAAYA,GACzB,CACF,GACF,EACAk5a,EAASxye,UAAUkC,QAAU,WAC3BpC,KAAK2ye,OAAOG,WACd,EACOJ,CACT,CAlC4B,GCD5B,IA0KIvnY,IAAO,yBAAyB53F,OA1KpB,SAAmBrP,GAwIjC,IAAIgpB,EAtIJ,WAOE,SAAS8kd,EAAQtxd,GAEf,GAAIA,EAAO7f,OAAS,EAClB,MAAO,GAGT,IAAIq4B,EAAS,SAAgBxS,EAAOmI,GAClC,MAAO,CAACA,EAAI5jB,EAAIyb,EAAMzb,EAAG4jB,EAAI3jB,EAAIwb,EAAMxb,EACzC,EAIA,MAAO,CAFEguB,EAAOxY,EAAO,GAAIA,EAAO,IACzBwY,EAAOxY,EAAO,GAAIA,EAAO,IAEpC,CAKA,SAAStH,EAAcpO,EAAOgwP,EAAKn9L,QACrB,IAARm9L,IACFA,EAAM,QAEO,IAAXn9L,IACFA,EAAS,CACP5yD,EAAG,EACHC,EAAG,IAGP,IAAID,EAAID,EAAMC,EACZC,EAAIF,EAAME,EACZ,MAAO,CACLD,GAAIA,EAAI4yD,EAAO5yD,GAAKgP,KAAKkC,KAAK6+O,IAAQ9vP,EAAI2yD,EAAO3yD,GAAK+O,KAAKoC,KAAK2+O,GAAOn9L,EAAO5yD,EAC9EC,GAAI2yD,EAAO5yD,EAAIA,GAAKgP,KAAKoC,KAAK2+O,IAAQ9vP,EAAI2yD,EAAO3yD,GAAK+O,KAAKkC,KAAK6+O,GAAOn9L,EAAO3yD,EAElF,CAOA,SAASgge,EAAc3pd,GACrB,IAAIb,EAAS,CAAC,CACZzV,EAAGsW,EAAItW,EACPC,EAAGqW,EAAIrW,GACN,CACDD,EAAGsW,EAAItW,EAAIsW,EAAIxT,MACf7C,EAAGqW,EAAIrW,GACN,CACDD,EAAGsW,EAAItW,EAAIsW,EAAIxT,MACf7C,EAAGqW,EAAIrW,EAAIqW,EAAIvT,QACd,CACD/C,EAAGsW,EAAItW,EACPC,EAAGqW,EAAIrW,EAAIqW,EAAIvT,SAEb83Q,EAAWvkQ,EAAIukQ,SACnB,OAAIA,EACK,CAAC1sQ,EAAcsH,EAAO,GAAIolQ,EAAUplQ,EAAO,IAAKtH,EAAcsH,EAAO,GAAIolQ,EAAUplQ,EAAO,IAAKtH,EAAcsH,EAAO,GAAIolQ,EAAUplQ,EAAO,IAAKtH,EAAcsH,EAAO,GAAIolQ,EAAUplQ,EAAO,KAE1LA,CACT,CAOA,SAASuxd,EAAcvxd,EAAuBmzP,GAE5C,GAAInzP,EAAO7f,OAAS,EAClB,MAAO,CACLqZ,IAAK,EACLC,IAAK,GAGT,IAAI+3d,EAAU,GAId,OAHAxxd,EAAOtY,SAAQ,SAAU4C,GACvBkne,EAAQ3xe,KAnFZ,SAAa4d,EAAG8E,GACd,OAAQ9E,EAAE,IAAM,IAAM8E,EAAE,IAAM,IAAM9E,EAAE,IAAM,IAAM8E,EAAE,IAAM,IAAM9E,EAAE,IAAM,IAAM8E,EAAE,IAAM,EACxF,CAiFiB0+B,CAAI,CAAC32C,EAAMC,EAAGD,EAAME,GAAI2oQ,GACvC,IACO,CACL35P,IAAKD,KAAKC,IAAI7Y,MAAM,KAAM6we,GAC1B/3d,IAAKF,KAAKE,IAAI9Y,MAAM,KAAM6we,GAE9B,CACA,SAASC,EAAoBC,EAAaC,GACxC,OAAOD,EAAYj4d,IAAMk4d,EAAYn4d,KAAOk4d,EAAYl4d,IAAMm4d,EAAYl4d,GAC5E,CAIA,SAASm4d,EAAW/wd,GAClB,MAAO,CAAC,IAAK,IAAK,QAAS,UAAUinH,OAAM,SAAUpiI,GACnD,MAJkB,iBADC2f,EAKExE,EAAInb,MAJM6b,OAAOC,MAAM6D,IAAMA,IAAMxhB,KAAYwhB,KAAM,IAD9E,IAAuBA,CAMrB,GACF,CA6BA,MAAO,CACLmH,UAvBF,SAAmB+S,EAAMC,EAAMsqE,GAI7B,QAHe,IAAXA,IACFA,EAAS,IAEN8nY,EAAWryc,KAAUqyc,EAAWpyc,GAAO,OAAO,EAEnD,IAAKD,EAAK6lP,WAAa5lP,EAAK4lP,SAC1B,OAbJ,SAAyB7lP,EAAMC,EAAMsqE,GAInC,YAHe,IAAXA,IACFA,EAAS,KAEFtqE,EAAKj1B,EAAIg1B,EAAKh1B,EAAIg1B,EAAKlyB,MAAQy8F,GAAUtqE,EAAKj1B,EAAIi1B,EAAKnyB,MAAQkyB,EAAKh1B,EAAIu/F,GAAUtqE,EAAKh1B,EAAI+0B,EAAK/0B,EAAI+0B,EAAKjyB,OAASw8F,GAAUtqE,EAAKh1B,EAAIg1B,EAAKlyB,OAASiyB,EAAK/0B,EAAIs/F,EACvK,CAQW+nY,CAAgBtyc,EAAMC,EAAMsqE,GAOrC,IAJA,IAAIgoY,EAActH,EAAcjrc,GAC5Bwyc,EAAcvH,EAAchrc,GAE5B6jS,EAAOiuK,EAAQQ,GAAaj/d,OAAOy+d,EAAQS,IACtCvxe,EAAI,EAAGA,EAAI6iU,EAAKljU,OAAQK,IAAK,CACpC,IAAI2yQ,EAAOkwD,EAAK7iU,GAGhB,IAAKixe,EAFaF,EAAcO,EAAa3+N,GAC3Bo+N,EAAcQ,EAAa5+N,IACO,OAAO,CAC7D,CACA,OAAO,CACT,EAIF,CACgBk/N,GAAgB7ld,UAmBhC,IAAIi5P,EAAU,CACZ,eAlBF,SAAqBhgO,GAEnB,IADA,IAAImvN,EAAQnvN,EAAMn/B,QACT9lB,EAAI,EAAGA,EAAIo0Q,EAAMz0Q,OAAQK,IAAK,CACrC,IAAI++B,EAAOq1O,EAAMp0Q,GACjB,GAAI++B,EAAK1rB,QACP,IAAK,IAAIrN,EAAIhG,EAAI,EAAGgG,EAAIouQ,EAAMz0Q,OAAQqG,IAAK,CACzC,IAAIg5B,EAAOo1O,EAAMpuQ,GACb+4B,IAASC,GAAQA,EAAK3rB,SACpB2Y,EAAU+S,EAAMC,KAClBA,EAAK3rB,SAAU,EAGrB,CAEJ,CACA,OAAO+gQ,CACT,GAKA,IACE,IAAI09N,EAAYhyb,KAAKyF,MAAMviD,EAAEwhB,MAC7B,IAAKstd,IAAcA,EAAUrqe,OAASw9Q,EAAQ6sN,EAAUrqe,MAAO,OAC/D,IAAIA,EAAOqqe,EAAUrqe,KACnBw9C,EAAQ6sb,EAAU7sb,MAChBvzC,EAASuzQ,EAAQx9Q,GAAMw9C,GAC3BO,KAAKmtG,YAAYjhJ,EACnB,CAAE,MAAO1O,GACP,MAAMA,CACR,CACF,EACqD0e,WAAY,MCpK7D,IAAS,SAAgBujC,GAE3B,IADA,IAAImvN,EAAQnvN,EAAMn/B,QACT9lB,EAAI,EAAGA,EAAIo0Q,EAAMz0Q,OAAQK,IAAK,CACrC,IAAI++B,EAAOq1O,EAAMp0Q,GACjB,GAAI++B,EAAK1rB,QACP,IAAK,IAAIrN,EAAIhG,EAAI,EAAGgG,EAAIouQ,EAAMz0Q,OAAQqG,IAAK,CACzC,IAAIg5B,EAAOo1O,EAAMpuQ,GACb+4B,IAASC,GAAQA,EAAK3rB,SACpB,IAAU0rB,EAAMC,KAClBA,EAAK3rB,SAAU,EAGrB,CAEJ,CACA,OAAO+gQ,CACT,EACI,IAAQ,IAAIv2P,IACZ4zd,IFYG,SAAsBtve,GAC3B,GAAsB,oBAAXH,OAAX,CACA,IAAI2pT,EACJ,IACEA,EAAO,IAAIxzP,KAAK,CAACh2D,EAAEuf,YAAa,CAC9Bja,KAAM,0BAEV,CAAE,MAAOzE,MAEP2oT,EAAO,IAAI3pT,OAAO+ve,aACb95a,OAAO91D,EAAEuf,YACdiqS,EAAOA,EAAKqmL,SACd,CACA,OAAO,IAAIR,IAAStxZ,IAAIQ,gBAAgBirO,GAZC,CAa3C,CE1BasmL,CAAa,KCrB1B,ICHIxtc,IDGAytc,IAAS,CACX,WAAW,GEKb,SAASC,IAAch0R,EAAU00D,EAAQy4L,GAEvC,QADgBntP,EAASy6M,UAAU,UACjB/lJ,EAAOvrI,OAAM,SAAU57E,EAAO5kD,GAC9C,IAAIvC,EAAQ+mc,EAAOxkc,GACnB,OAXJ,SAA6Bq3M,EAAUzyJ,EAAOnnD,GAC5C,IAAIw4Q,EAAa5+D,EAAS4+D,WACtBk6J,EAAYk9C,IAAmBzoa,GAC/B42X,EAAW4U,IAAKE,WAAWngB,EAAUvna,iBACrC+wb,EAAYvJ,IAAKE,WAAW7yb,EAAMwK,WACtC,OAAOguQ,EAAWutJ,aAAem2B,EAAU3zb,QAAUw1a,EAASx1a,OAAS2zb,EAAU5zb,OAASy1a,EAASz1a,KACrG,CAKWule,CAAoBj0R,EAAUzyJ,EAAOnnD,EAC9C,GACF,CCQA,SAAS8te,IAAQ7d,EAAOjud,EAAS+K,GAC/B,OAAOkjd,EAAMh7Z,MAAK,SAAUpiB,GAC1B,OAAO9lC,EAAQ8lC,EAAM7wC,EACvB,GACF,CAiBA,SAAS,IAAkBiud,EAAOjud,GAChC,OAAO8re,IAAQ7d,EAAOjud,GAAS,SAAUuH,EAAM2D,GAC7C,IAAIszB,EAAWovb,IAAmBrmd,GAC9Bwke,EAAYne,IAAmB1id,GACnC,OAjBJ,SAAwBwL,EAAG8E,EAAGunF,GAM5B,YALe,IAAXA,IACFA,EAAS,GAEIvwF,KAAKE,IAAI,EAAGF,KAAKC,IAAIiE,EAAElT,EAAIkT,EAAEpQ,MAAQy8F,EAAQvnF,EAAEhY,EAAIgY,EAAElV,MAAQy8F,GAAUvwF,KAAKE,IAAIgE,EAAElT,EAAIu/F,EAAQvnF,EAAEhY,EAAIu/F,IACpGvwF,KAAKE,IAAI,EAAGF,KAAKC,IAAIiE,EAAEjT,EAAIiT,EAAEnQ,OAASw8F,EAAQvnF,EAAE/X,EAAI+X,EAAEjV,OAASw8F,GAAUvwF,KAAKE,IAAIgE,EAAEjT,EAAIs/F,EAAQvnF,EAAE/X,EAAIs/F,GAEvH,CAUW,CAAevkE,EAASr1B,gBAAiB4ie,EAAU5ie,gBAAiB,GAAK,CAClF,GACF,CC3BA,SAAS,IAAQ8kd,EAAOjud,EAAS+K,GAC/B,OAAOkjd,EAAMh7Z,MAAK,SAAUpiB,GAC1B,OAAO9lC,EAAQ8lC,EAAM7wC,EACvB,GACF,CAiBA,SAAS,IAAkBiud,EAAOjud,GAChC,OAAO,IAAQiud,EAAOjud,GAAS,SAAUuH,EAAM2D,GAC7C,IAAIszB,EAAWovb,IAAmBrmd,GAC9Bwke,EAAYne,IAAmB1id,GACnC,OAjBJ,SAAwBwL,EAAG8E,EAAGunF,GAM5B,YALe,IAAXA,IACFA,EAAS,GAEIvwF,KAAKE,IAAI,EAAGF,KAAKC,IAAIiE,EAAElT,EAAIkT,EAAEpQ,MAAQy8F,EAAQvnF,EAAEhY,EAAIgY,EAAElV,MAAQy8F,GAAUvwF,KAAKE,IAAIgE,EAAElT,EAAIu/F,EAAQvnF,EAAEhY,EAAIu/F,IACpGvwF,KAAKE,IAAI,EAAGF,KAAKC,IAAIiE,EAAEjT,EAAIiT,EAAEnQ,OAASw8F,EAAQvnF,EAAE/X,EAAI+X,EAAEjV,OAASw8F,GAAUvwF,KAAKE,IAAIgE,EAAEjT,EAAIs/F,EAAQvnF,EAAE/X,EAAIs/F,GAEvH,CAUW,CAAevkE,EAASr1B,gBAAiB4ie,EAAU5ie,gBAAiB,GAAK,CAClF,GACF,CH9CO,SAAS6ie,MAId,OAHK9tc,MACHA,IAAMh7B,SAAS+Z,cAAc,UAAUC,WAAW,OAE7CghB,GACT,CIHO,IAAI+tc,KAAmB,WAAQ,SAAU7yd,EAAMG,QACvC,IAATA,IACFA,EAAO,CAAC,GAEV,IAAIF,EAAWE,EAAKF,SAClB2S,EAAazS,EAAKyS,WAClBC,EAAa1S,EAAK0S,WAClBC,EAAY3S,EAAK2S,UACjBC,EAAc5S,EAAK4S,YACjB+R,EAAM8tc,MAEV,OADA9tc,EAAI3kB,KAAO,CAAC2S,EAAWC,EAAaF,EAAY,GAAGngB,OAAOuN,EAAU,MAAO2S,GAAYpK,KAAK,KACrFsc,EAAIpS,aAAY,UAAS1S,GAAQA,EAAO,IAAI9S,KACrD,IAAG,SAAU8S,EAAMG,GAIjB,YAHa,IAATA,IACFA,EAAO,CAAC,IAEH,UAAc,CAACH,IAAO,WAAO,UAAOG,KAAQ,GAAOqI,KAAK,GACjE,ICYO,SAASsqd,IAAehke,EAASsH,EAAYgnQ,EAAYoxM,EAAW1md,GACzE,IAIIsC,EACAC,EALAwb,EAAQu3P,EAAWv3P,MACrBmI,EAAMovP,EAAWpvP,IACf9gB,EAAQkwQ,EAAWznJ,WACnBxoH,EAASiwQ,EAAWkuJ,YAGX,MAATxja,GACFsC,EAAIyb,EAAMzb,EAAI8C,EAAQ,EACtB7C,EAAImkd,EAAUnkd,EAAIwb,EAAMxb,EAAImkd,EAAUnkd,EAAIwb,EAAMxb,GAC9B,MAATvC,GACTsC,EAAIokd,EAAUpkd,EAAIyb,EAAMzb,EAAIokd,EAAUpkd,EAAIyb,EAAMzb,EAChDC,EAAIwb,EAAMxb,EAAI8C,EAAS,GACL,OAATrF,IACLs1Q,EAAWotJ,SACbpga,EAAIgzQ,EAAWiuJ,YAAYjha,EAC3BC,EAAI+yQ,EAAWiuJ,YAAYhha,IAE3BD,GAAKyb,EAAMzb,EAAI4jB,EAAI5jB,GAAK,EACxBC,GAAKwb,EAAMxb,EAAI2jB,EAAI3jB,GAAK,IAG5B,IAAI0oe,EAhDC,SAAwBnue,EAAOyzB,EAAQyB,GAC5C,IAAIk5c,EACA1ye,GAAK,UAAO+3B,EAAQ,GACtBjuB,EAAI9J,EAAG,GACP+J,EAAI/J,EAAG,GAYT,OAXAsE,EAAMwQ,cAAc,CAAChL,EAAGC,EAAG,IACZ,MAAXyvB,GACFl1B,EAAMqQ,UAAUs2M,IAAA,GAAc3mN,EAAMoQ,YAAa,CAAC,CAAC,KAAM5K,GAAIC,GAAI,CAAC,IAAK,IAAM,GAAI,CAAC,IAAKD,EAAGC,MAC1F2oe,EAAeznR,IAAA,GAAc3mN,EAAMoQ,YAAa,CAAC,CAAC,KAAM5K,GAAIC,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAKD,EAAGC,MACpE,MAAXyvB,GACTl1B,EAAMqQ,UAAUs2M,IAAA,GAAc3mN,EAAMoQ,YAAa,CAAC,CAAC,KAAM5K,GAAIC,GAAI,CAAC,IAAK,EAAG,KAAO,CAAC,IAAKD,EAAGC,MAC1F2oe,EAAeznR,IAAA,GAAc3mN,EAAMoQ,YAAa,CAAC,CAAC,KAAM5K,GAAIC,GAAI,CAAC,IAAK,EAAG,KAAM,CAAC,IAAKD,EAAGC,MACpE,OAAXyvB,IACTl1B,EAAMqQ,UAAUs2M,IAAA,GAAc3mN,EAAMoQ,YAAa,CAAC,CAAC,KAAM5K,GAAIC,GAAI,CAAC,IAAK,IAAM,KAAO,CAAC,IAAKD,EAAGC,MAC7F2oe,EAAeznR,IAAA,GAAc3mN,EAAMoQ,YAAa,CAAC,CAAC,KAAM5K,GAAIC,GAAI,CAAC,IAAK,IAAK,KAAM,CAAC,IAAKD,EAAGC,MAErF2oe,CACT,CA+BkBC,CAAenke,EAAS,CAAC1E,EAAGC,GAAIvC,GAChDgH,EAAQmH,QAAQ,CACd3F,OAAQyie,GACP38d,EACL,CCzDA,SAAS,IAASkmB,EAAY42c,GAC5B,IAAI5ye,EACA+V,EAAKgmB,IAAaC,EAAY42c,GAChChyd,EAAa7K,EAAG6K,WAChBC,EAAW9K,EAAG8K,SAkBhB,QAjBK,UAAcD,EAAuB,IAAV9H,KAAK+B,KAAa+F,EAAwB,IAAV9H,KAAK+B,KACnE+F,GAAwB,EAAV9H,KAAK+B,MAEhB,UAAcgG,EAAqB,IAAV/H,KAAK+B,KAAagG,EAAsB,IAAV/H,KAAK+B,KAC/DgG,GAAsB,EAAV/H,KAAK+B,IAEA,IAAf+3d,EAAQ,KAE8Bhyd,GAAxC5gB,GAAK,UAAO,CAAC6gB,EAAUD,GAAa,IAAoB,GAAIC,EAAW7gB,EAAG,KAExE,UAAc4gB,EAAsB,IAAV9H,KAAK+B,MACjC+F,GAAwB,GAAX9H,KAAK+B,KAGhB,UAAcgG,GAAqB,GAAX/H,KAAK+B,OAAe,UAAc+F,EAAYC,KACxEA,EAAqB,IAAV/H,KAAK+B,IAEX,CACL+F,WAAYA,EACZC,SAAUA,EAEd,CACA,SAASgyd,IAAiBnte,GACxB,IAAIs2B,EAMJ,MALgB,MAAZt2B,EAAK,IAA0B,MAAZA,EAAK,GAC1Bs2B,EAAa,CAACt2B,EAAK,GAAIA,EAAK,IACP,MAAZA,EAAK,IAA0B,MAAZA,EAAK,IAA0B,MAAZA,EAAK,KACpDs2B,EAAa,CAACt2B,EAAKA,EAAKhG,OAAS,GAAIgG,EAAKA,EAAKhG,OAAS,KAEnDs8B,CACT,CAWO,SAAS82c,IAAWpte,GACzB,IAAI1F,EACA4gB,EACAC,EACAkyd,EAAWrte,EAAK0J,QAAO,SAAUiR,GACnC,MAAsB,MAAfA,EAAQ,IAA6B,MAAfA,EAAQ,EACvC,IACA,GAAwB,IAApB0yd,EAASrze,OACX,MAAO,CACLkhB,WAAY,EACZC,SAAU,EACVgsD,OAAQ,EACR87B,YAAa,GAGjB,IAAIqqY,EAAsBD,EAAS,GAC/BE,EAAqBF,EAASrze,OAAS,EAAIqze,EAAS,GAAKA,EAAS,GAClEG,EAAaxte,EAAKqM,QAAQihe,GAC1Bvsc,EAAY/gC,EAAKqM,QAAQkhe,GACzBE,EAAkBN,IAAiBnte,EAAKwte,EAAa,IACrDE,EAAiBP,IAAiBnte,EAAK+gC,EAAY,IACnD1wB,EAAK,IAASo9d,EAAiBH,GACjCK,EAAkBt9d,EAAG6K,WACrB0yd,EAAgBv9d,EAAG8K,SACjB7K,EAAK,IAASo9d,EAAgBH,GAChCM,EAAiBv9d,EAAG4K,WACpB4yd,EAAex9d,EAAG6K,UAChB,UAAcwyd,EAAiBE,KAAmB,UAAcD,EAAeE,IACjF5yd,EAAayyd,EACbxyd,EAAWyyd,IAEX1yd,EAAa9H,KAAKC,IAAIs6d,EAAiBE,GACvC1yd,EAAW/H,KAAKE,IAAIs6d,EAAeE,IAErC,IAAI3ma,EAASmma,EAAoB,GAC7BrqY,EAAcoqY,EAASA,EAASrze,OAAS,GAAG,GAMhD,OALImtE,EAAS87B,GAC4B97B,GAAvC7sE,GAAK,UAAO,CAAC2oG,EAAa97B,GAAS,IAAgB,GAAI87B,EAAc3oG,EAAG,IAC/D6sE,IAAW87B,IACpBA,EAAc,GAET,CACL/nF,WAAYA,EACZC,SAAUA,EACVgsD,OAAQA,EACR87B,YAAaA,EAEjB,CC9FA,SAAS8qY,IAAYnve,EAAOwR,EAAYtO,GACtC,GAAIlD,EAAMmK,WACR,UAAKnK,EAAM6K,eAAe,SAAUR,GAClC8ke,IAAY9ke,EAAOmH,EAAYtO,EACjC,QACK,CACL,IAAImG,EAAOrJ,EAAMwK,UACbhF,GAAK6D,EAAKoB,KAAOpB,EAAKqB,MAAQ,EAC9BjF,GAAK4D,EAAKsB,KAAOtB,EAAKuB,MAAQ,EAElC,GADA5K,EAAMwQ,cAAc,CAAChL,EAAGC,EAAG,IACd,WAATvC,EAAmB,CAErB,IAAIwI,EAASi7M,IAAA,GAAc3mN,EAAMoQ,YAAa,CAAC,CAAC,KAAM5K,GAAIC,GAAI,CAAC,IAAK,IAAM,KAAO,CAAC,IAAKD,EAAGC,KAC1FzF,EAAMqQ,UAAU3E,GAChB1L,EAAMqR,QAAQ,CACZ3F,OAAQi7M,IAAA,GAAc3mN,EAAMoQ,YAAa,CAAC,CAAC,KAAM5K,GAAIC,GAAI,CAAC,IAAK,IAAK,KAAM,CAAC,IAAKD,EAAGC,MAClF+L,EACL,MACExR,EAAMqR,QAAQ,CACZ3F,OAAQi7M,IAAA,GAAc3mN,EAAMoQ,YAAa,CAAC,CAAC,KAAM5K,GAAIC,GAAI,CAAC,IAAK,IAAM,KAAO,CAAC,IAAKD,EAAGC,OACpF,WAAS,UAAS,CAAC,EAAG+L,GAAa,CACpC5W,SAAU,WACRoF,EAAM0N,QAAO,IACb,UAAW8D,EAAW5W,WAAa4W,EAAW5W,UAChD,IAGN,CACF,CC1BO,SAASw0e,IAAmB/5c,GACjC,MAAI,CAAC,IAAUomQ,IAAK,IAAUE,QAAQj8R,SAAS21B,GACtC,CACLvsB,QAAS,EACTE,QAASqsB,IAAc,IAAUomQ,KAAO,EAAI,EAC5Cp1R,MAAO,CACLmV,UAAW,SACXC,aAAc4Z,IAAc,IAAUomQ,IAAM,SAAW,QAIzD,CAAC,IAAUzrG,KAAM,IAAUC,OAAOvwL,SAAS21B,GACtC,CACLvsB,QAASusB,IAAc,IAAU26J,MAAQ,EAAI,EAC7ChnL,QAAS,EACT3C,MAAO,CACLmV,UAAW6Z,IAAc,IAAU26J,KAAO,QAAU,OACpDv0K,aAAc,SACdjI,OAAQgB,KAAK+B,GAAK,IAKjB,CAAC,CACV,CAQO,SAAS84d,IAAcj3c,EAAQ3e,EAAGwI,GACvC,MAAO,CACLzc,EAAG4yB,EAAO5yB,EAAIiU,EAAIjF,KAAKkC,IAAIuL,GAC3Bxc,EAAG2yB,EAAO3yB,EAAIgU,EAAIjF,KAAKoC,IAAIqL,GAE/B,CCjCA,IAAI,IAAsB,SAAUhmB,GAElC,SAASuhb,IACP,OAAkB,OAAXvhb,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAiHA,OApHA,UAAUijb,EAAQvhb,GAIlBuhb,EAAO/ib,UAAU6B,cAAgB,WAC/B,OAAO,UAAQ,CAAC,EAAGL,EAAOxB,UAAU6B,cAAcH,KAAK5B,MAAO,CAC5D2I,KAAM,SACN6kJ,WAAW,EACXz7F,MAAOrwD,EAAOxB,UAAU68b,mBAAmBn7b,KAAK5B,OAEpD,EACAijb,EAAO/ib,UAAU8qE,OAAS,WACxBtpE,EAAOxB,UAAU8qE,OAAOppE,KAAK5B,MACzBA,KAAK2B,IAAI6rJ,WACXxtJ,KAAK+0e,aAET,EAMA9xD,EAAO/ib,UAAUq8b,UAAY,SAAUzra,EAAO9oB,GAC5C,IAOIgte,EAAqB,EAAV/6d,KAAK+B,GAAS8U,EAEzBpJ,GAAS,EAAIzN,KAAK+B,GAAK,EAAIg5d,EAAWhte,EAEtCite,EAXI,IAWU,EAAI,EAAIh7d,KAAKoC,IAAI24d,EAAW,IAE1Cp2Z,EAASk2Z,IAXA,CACX7pe,EAAG,GACHC,EAAG,IAJG,GAa+B+pe,EAAQvtd,GAC3C3F,EAAuB,EAAV9H,KAAK+B,GAAS,EAC3BgG,EAAqB,EAAV/H,KAAK+B,GAAS,EAC7B,MAAO,CACL0K,MAAOoud,IAAcl2Z,EAAQq2Z,EAAQlzd,GACrC8M,IAAKimd,IAAcl2Z,EAAQq2Z,EAAQjzd,GAEvC,EACAiha,EAAO/ib,UAAU67b,cAAgB,SAAU3pL,EAAMsoD,GAC/C16T,KAAKg9b,YAAY5qL,EAAMsoD,EACzB,EACAuoH,EAAO/ib,UAAU27b,eAAiB,SAAUzpL,EAAMsoD,GAAQ,EAC1DuoH,EAAO/ib,UAAUu7b,eAAiB,SAAU/1a,GAC1C,IAAIjlB,EAAQT,KACRmB,EAAKnB,KAAK2B,IACZi+H,EAASz+H,EAAGy+H,OACZj3H,EAAOxH,EAAGwH,KAEVk3H,GADO,UAAOD,EAAQ,GACX,GACb,IAAKC,EACH,MAAM,IAAI53F,MAAM,0BAElB,IAAIzH,EAASxgC,KAAKs8b,eAAe52a,EAAMm6G,GACnC/uG,EAAQ0P,EAAO3/B,OACfyS,EAAM,GAuBV,OAtBAktB,EAAOp4B,SAAQ,SAAUjG,EAAO6F,GAC9B,IAAIy4W,EAAa,CAAC,CAChB5gP,MAAOA,EACP19H,MAAOA,EACPq+B,OAAQA,IAENkyV,GAAY,UAAOhtW,EAAMjlB,EAAM+8b,mBAAmB/8E,IAClD/lD,EAAQ,CACV/xT,KAAMA,EACN+c,KAAMgtW,EACNy7C,OAAQ1ta,EAAM87b,UAAUzra,EAAO9oB,GAC/B2gW,YAAaxmW,EACb+ye,YAAar1W,EACbs1W,YAAante,EACbote,mBAAoBtkd,EACpB43U,SAAU,KACV2sI,SAAU,KACVC,SAAU,EACVC,gBAAiB,GAEnBjie,EAAI/S,KAAKm6T,EACX,IACOpnT,CACT,EACA2va,EAAO/ib,UAAUo9b,eAAiB,SAAUryb,EAAG84T,EAAMrrQ,EAAQgiQ,GAE3D,OAAOhiQ,CACT,EAQAuqX,EAAO/ib,UAAUq9b,eAAiB,SAAUryb,EAAG64T,EAAMrrQ,EAAQgiQ,GAE3D,OAAOhiQ,CACT,EAIAuqX,EAAO/ib,UAAU60e,YAAc,WAC7B,IAAIt0e,EAAQT,MACZ,UAAKA,KAAKopW,QAAQ,SAAU1uC,GAC1B,IAAIiuC,EAAcjuC,EAAMiuC,YACtBv2F,EAAOsoD,EAAMtoD,KACX23E,GAAY,UAAItpV,EAAMkB,IAAIowD,MAAO,aACjCy6C,GAAS,UAAQ,CACnBrhD,SAAU,CAAC,MAAO,MAClB2rB,QAASizQ,EAAYA,EAAU4e,GAAeA,GAC7CksI,IAAmB,IAAU3zM,KAAMzgS,EAAMkB,IAAIowD,OAChDqgN,EAAKk9L,aAAazub,KAAK2rF,EACzB,GACF,EACOy2U,CACT,CAtH0B,CAsHxB,KACF,QCvHI,IAAoB,SAAUvhb,GAEhC,SAASw1I,IACP,OAAkB,OAAXx1I,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAqIA,OAxIA,UAAUk3I,EAAMx1I,GAIhBw1I,EAAKh3I,UAAU6B,cAAgB,WAC7B,OAAO,UAAQ,CAAC,EAAGL,EAAOxB,UAAU6B,cAAcH,KAAK5B,MAAO,CAC5D2I,KAAM,OACN6zb,KAAM,KACNhvS,WAAW,EACXz7F,MAAOrwD,EAAOxB,UAAU68b,mBAAmBn7b,KAAK5B,OAEpD,EACAk3I,EAAKh3I,UAAU8qE,OAAS,WACtBtpE,EAAOxB,UAAU8qE,OAAOppE,KAAK5B,MACzBA,KAAK2B,IAAI6rJ,WACXxtJ,KAAK+0e,aAET,EACA79V,EAAKh3I,UAAU67b,cAAgB,SAAU3pL,EAAMsoD,GAC7C16T,KAAKg9b,YAAY5qL,EAAMsoD,EACzB,EACAxjL,EAAKh3I,UAAU27b,eAAiB,SAAUzpL,EAAMsoD,GAAQ,EACxDxjL,EAAKh3I,UAAUu7b,eAAiB,SAAU/1a,GACxC,IAAIjlB,EAAQT,KACR4/H,EAAS5/H,KAAK2B,IAAIi+H,OAClB48T,EAAOx8b,KAAK2B,IAAI66b,KAElB04C,GADO,UAAOt1W,EAAQ,GACL,GACnB,IAAKs1W,EACH,MAAM,IAAIjtc,MAAM,0BAElB,IAAIutc,EAAYx1e,KAAKs8b,eAAe52a,EAAMwvd,GACtCpkd,EAAQ0kd,EAAU30e,OACtB27b,EAAOA,GAAQ1ra,EAEf,IAAI4lG,EAAO12H,KAAKy1e,aAAa3kd,EAAO0ra,GAChClpb,EAAM,GA4BV,OA3BAkie,EAAUpte,SAAQ,SAAU/C,EAAK2C,GAE/B,IAAI7G,EAAKV,EAAMi1e,UAAU1te,EAAOw0b,GAC9Bp6Z,EAAMjhC,EAAGihC,IACTuzc,EAAMx0e,EAAGw0e,IACPl1H,EAAa,CAAC,CAChB5gP,MAAOq1W,EACP/ye,MAAOkD,EACPm7B,OAAQg1c,IAEN9iH,GAAY,UAAOhtW,EAAMjlB,EAAM+8b,mBAAmB/8E,IAClD/lD,EAAQ,CACV/xT,KAAMlI,EAAMkB,IAAIgH,KAChB+c,KAAMgtW,EACNy7C,OAAQ1ta,EAAM87b,UAAU7lU,EAAM8lU,EAAMm5C,EAAKvzc,GACzCumU,YAAatjW,EACbqjW,SAAUrjW,EACV6ve,YAAaA,EACbG,SAAU,KACVF,YAAaQ,EACbL,SAAUlzc,EACVgzc,mBAAoB54C,EACpB+4C,gBAAiB7+W,EACjB59D,MAAOhoC,GAETxd,EAAI/S,KAAKm6T,EACX,IACOpnT,CACT,EAQA4jI,EAAKh3I,UAAUo9b,eAAiB,SAAUryb,EAAG84T,EAAMrrQ,EAAQgiQ,GAEzD,OAAIA,EAAM46K,WAAa56K,EAAM66K,gBAAkB,GAAK76K,EAAM06K,mBAAqB16K,EAAM46K,SAAW56K,EAAMy6K,YAAc,EAAIz6K,EAAM06K,oBAAsB16K,EAAM5hQ,OACjJ,WAAS,UAAS,CAAC,EAAGJ,GAAS,CACpC9L,MAAO,KACPmF,MAAO,OAGJ2G,CACT,EAQAw+E,EAAKh3I,UAAUq9b,eAAiB,SAAUryb,EAAG64T,EAAMrrQ,EAAQgiQ,GACzD,OAA0B,IAAtBA,EAAMy6K,aACD,WAAS,UAAS,CAAC,EAAGz8a,GAAS,CACpC3G,MAAO,KACPnF,MAAO,OAGJ8L,CACT,EAIAw+E,EAAKh3I,UAAU60e,YAAc,WAC3B,IAAIt0e,EAAQT,MACZ,UAAKA,KAAKopW,QAAQ,SAAU1uC,GAC1B,IAAIiuC,EAAcjuC,EAAMiuC,YACtBv2F,EAAOsoD,EAAMtoD,KACX23E,GAAY,UAAItpV,EAAMkB,IAAIowD,MAAO,aACjCy6C,GAAS,UAAQ,CACnBrhD,SAAU,CAAC,MAAO,MAClB2rB,QAASizQ,EAAYA,EAAU4e,GAAeA,GAC7CksI,IAAmB,IAAU3zM,KAAMzgS,EAAMkB,IAAIowD,OAChDqgN,EAAKk9L,aAAazub,KAAK2rF,EACzB,GACF,EAMA0qC,EAAKh3I,UAAUu1e,aAAe,SAAU38a,EAAO2zF,GAC7C,OAAOxyI,KAAKwX,OAAOqnC,EAAQ2zF,EAAW,GAAKA,EAC7C,EAMAvV,EAAKh3I,UAAUw1e,UAAY,SAAU1te,EAAOykJ,GAG1C,MAAO,CACLrqH,IAHQnoB,KAAKwX,MAAMzpB,EAAQykJ,GAI3BkpV,IAHQ3te,EAAQykJ,EAKpB,EACOvV,CACT,CA1IwB,CA0ItB,KACF,QC3II0+V,IAAsB,SAAUl0e,GAElC,SAASk0e,IACP,OAAkB,OAAXl0e,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAoHA,OAvHA,UAAU41e,EAAQl0e,GAIlBk0e,EAAO11e,UAAU6B,cAAgB,WAC/B,OAAO,UAAQ,CAAC,EAAGL,EAAOxB,UAAU6B,cAAcH,KAAK5B,MAAO,CAC5D2I,KAAM,SACN6kJ,WAAW,EACXqoV,aAAa,UAAS,CAAC,EAAGn0e,EAAOxB,UAAU68b,mBAAmBn7b,KAAK5B,OACnE81e,UAAU,UAAS,CAAC,EAAGp0e,EAAOxB,UAAU68b,mBAAmBn7b,KAAK5B,QAEpE,EACA41e,EAAO11e,UAAU8qE,OAAS,WACxBtpE,EAAOxB,UAAU8qE,OAAOppE,KAAK5B,MACzBA,KAAK2B,IAAI6rJ,WACXxtJ,KAAK+0e,aAET,EACAa,EAAO11e,UAAU67b,cAAgB,SAAU3pL,EAAMsoD,GAC/C16T,KAAKg9b,YAAY5qL,EAAMsoD,EACzB,EACAk7K,EAAO11e,UAAU27b,eAAiB,SAAUzpL,EAAMsoD,GAAQ,EAC1Dk7K,EAAO11e,UAAUu7b,eAAiB,SAAU/1a,GAQ1C,IAPA,IAAIvkB,EAAKnB,KAAK2B,IACZi+H,EAASz+H,EAAGy+H,OACZj3H,EAAOxH,EAAGwH,KAER4se,EAAkB31W,EAAO/+H,OACzBu0e,EAAqBG,EACrBjie,EAAM,GACDpS,EAAI,EAAGA,EAAIk0e,EAAoBl0e,IAEtC,IADA,IAAIg0e,EAAct1W,EAAO1+H,GAChBgG,EAAI,EAAGA,EAAIque,EAAiBrue,IAAK,CACxC,IAAImue,EAAWz1W,EAAO14H,GAClBwzT,EAAQ,CACV/xT,KAAMA,EACN+c,KAAMA,EACNyoZ,OAAQnua,KAAKu8b,UAAUg5C,EAAiBH,EAAoBl0e,EAAGgG,GAC/DyhW,YAAausI,EACbxsI,SAAU2sI,EACVH,YAAaA,EACbG,SAAUA,EACVF,YAAaj0e,EACbo0e,SAAUpue,EACVkue,mBAAoBA,EACpBG,gBAAiBA,GAEnBjie,EAAI/S,KAAKm6T,EACX,CAEF,OAAOpnT,CACT,EAQAsie,EAAO11e,UAAUo9b,eAAiB,SAAUryb,EAAG84T,EAAMrrQ,EAAQgiQ,GAE3D,OAAIA,EAAM46K,WAAa56K,EAAM66K,gBAAkB,GACtC,WAAS,UAAS,CAAC,EAAG78a,GAAS,CACpC9L,MAAO,KACPmF,MAAO,OAGJ2G,CACT,EAQAk9a,EAAO11e,UAAUq9b,eAAiB,SAAUryb,EAAG64T,EAAMrrQ,EAAQgiQ,GAE3D,OAA0B,IAAtBA,EAAMy6K,aACD,WAAS,UAAS,CAAC,EAAGz8a,GAAS,CACpC3G,MAAO,KACPnF,MAAO,OAGJ8L,CACT,EAIAk9a,EAAO11e,UAAU60e,YAAc,WAC7B,IAAIt0e,EAAQT,MACZ,UAAKA,KAAKopW,QAAQ,SAAU1uC,EAAOq7K,GACjC,IAAIZ,EAAcz6K,EAAMy6K,YACtBG,EAAW56K,EAAM46K,SACjBF,EAAqB16K,EAAM06K,mBAE3BzsI,GADkBjuC,EAAM66K,gBACV76K,EAAMiuC,aACpBD,EAAWhuC,EAAMguC,SACjBt2F,EAAOsoD,EAAMtoD,KAEf,GAAiB,IAAbkjO,EAAgB,CAClB,IAAIvrJ,GAAY,UAAItpV,EAAMkB,IAAIk0e,YAAa,aACvCrpY,GAAS,UAAQ,CACnBrhD,SAAU,CAAC,MAAO,MAClB2rB,QAASizQ,EAAYA,EAAU4e,GAAeA,GAC7CksI,IAAmB,IAAU3zM,KAAMzgS,EAAMkB,IAAIk0e,aAChDzjO,EAAKk9L,aAAazub,KAAK2rF,EACzB,CAEA,GAAI2oY,IAAgBC,EAAqB,EAAG,CACtCrrJ,GAAY,UAAItpV,EAAMkB,IAAIm0e,SAAU,aACpCtpY,GAAS,UAAQ,CACnBrhD,SAAU,CAAC,OAAQ,OACnB2rB,QAASizQ,EAAYA,EAAU2e,GAAYA,GAC1CmsI,IAAmB,IAAUn/S,OAAQj1L,EAAMkB,IAAIm0e,UAClD1jO,EAAKk9L,aAAazub,KAAK2rF,EACzB,CACF,GACF,EACOopY,CACT,CAzH0B,CAyHxB,KACF,QC1HI,IAAsB,SAAUl0e,GAElC,SAASw0M,IACP,OAAkB,OAAXx0M,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAsIA,OAzIA,UAAUk2M,EAAQx0M,GAIlBw0M,EAAOh2M,UAAU6B,cAAgB,WAC/B,OAAO,UAAQ,CAAC,EAAGL,EAAOxB,UAAU6B,cAAcH,KAAK5B,MAAO,CAC5D2I,KAAM,SACN6kJ,WAAW,EACXz7F,MAAOrwD,EAAOxB,UAAU68b,mBAAmBn7b,KAAK5B,MAChDisa,WAAW,GAEf,EACA/1N,EAAOh2M,UAAU8qE,OAAS,WACxBtpE,EAAOxB,UAAU8qE,OAAOppE,KAAK5B,MACzBA,KAAK2B,IAAI6rJ,WACXxtJ,KAAK+0e,aAET,EACA7+R,EAAOh2M,UAAU27b,eAAiB,SAAUzpL,EAAMsoD,GAE5C16T,KAAK2B,IAAIsqa,UACPvxG,EAAMy6K,YAAc,GAAM,EAC5B/iO,EAAK6L,aAAaguJ,YAAYhrL,QAAQ,KAEtCmxB,EAAK6L,aAAaguJ,YAGhBvxG,EAAM46K,SAAW,GAAM,GACzBljO,EAAK6L,aAAah9B,QAAQ,IAGhC,EACA/qC,EAAOh2M,UAAU67b,cAAgB,SAAU3pL,EAAMsoD,GAC/C16T,KAAKg9b,YAAY5qL,EAAMsoD,EACzB,EACAxkH,EAAOh2M,UAAUu7b,eAAiB,SAAU/1a,GAC1C,IAQIwvd,EACAG,EATA50e,EAAQT,KAEVqD,GADO,UAAOrD,KAAK2B,IAAIi+H,OAAQ,GACxB,GACLtsH,EAAM,GACN8he,EAAqB,EACrBG,EAAkB,EAClBS,EAAe,CAAC,IAChBC,EAAY,CAAC,IAyCjB,OAtCIj2e,KAAK2B,IAAIsqa,WACXipE,EAAc7xe,EACd2ye,EAAeh2e,KAAKs8b,eAAe52a,EAAMwvd,GAAalud,MAAM,EAAG,GAC/Doud,EAAqBY,EAAan1e,SAElCw0e,EAAWhye,EACX4ye,EAAYj2e,KAAKs8b,eAAe52a,EAAM2vd,GAAUrud,MAAM,EAAG,GACzDuud,EAAkBU,EAAUp1e,QAG9Bm1e,EAAa5te,SAAQ,SAAU+nd,EAAM1zB,GACnCw5C,EAAU7te,SAAQ,SAAUgod,EAAM1zB,GAChC,IAAIj8E,EAAa,CAAC,CAChB5gP,MAAOq1W,EACP/ye,MAAOgud,EACP3vb,OAAQw1c,GACP,CACDn2W,MAAOw1W,EACPlze,MAAOiud,EACP5vb,OAAQy1c,IAENvjH,GAAY,UAAOhtW,EAAMjlB,EAAM+8b,mBAAmB/8E,IAClD/lD,EAAQ,CACV/xT,KAAMlI,EAAMkB,IAAIgH,KAChB+c,KAAMgtW,EACNy7C,OAAQ1ta,EAAM87b,UAAUg5C,EAAiBH,EAAoB34C,EAAQC,GACrE/zF,YAAawnH,EACbznH,SAAU0nH,EACV8kB,YAAaA,EACbG,SAAUA,EACVF,YAAa14C,EACb64C,SAAU54C,EACV04C,mBAAoBA,EACpBG,gBAAiBA,GAEnBjie,EAAI/S,KAAKm6T,EACX,GACF,IACOpnT,CACT,EAQA4iM,EAAOh2M,UAAUo9b,eAAiB,SAAUryb,EAAG84T,EAAMrrQ,EAAQgiQ,GAG3D,OAA0B,IAAtBA,EAAMy6K,aAAwC,IAAnBz6K,EAAM46K,UAC5B,WAAS,UAAS,CAAC,EAAG58a,GAAS,CACpC9L,MAAO,KACPmF,MAAO,OAGJ2G,CACT,EAQAw9I,EAAOh2M,UAAUq9b,eAAiB,SAAUryb,EAAG64T,EAAMrrQ,EAAQgiQ,GAE3D,OAAOhiQ,CACT,EACAw9I,EAAOh2M,UAAU60e,YAAc,WAC7B,IAAIt0e,EAAQT,MACZ,UAAKA,KAAKopW,QAAQ,SAAU1uC,EAAOq7K,GACjC,IAAIptI,EAAcjuC,EAAMiuC,YACtBD,EAAWhuC,EAAMguC,SACjBt2F,EAAOsoD,EAAMtoD,KACX23E,GAAY,UAAItpV,EAAMkB,IAAIowD,MAAO,aACrC,GAAItxD,EAAMkB,IAAIsqa,UAAW,CACvB,IAAIz/T,GAAS,UAAQ,CACnBrhD,SAAU,CAAC,MAAO,MAClB2rB,QAASizQ,EAAYA,EAAU4e,GAAeA,GAC7CksI,IAAmB,IAAU3zM,KAAMzgS,EAAMkB,IAAIowD,OAChDqgN,EAAKk9L,aAAazub,KAAK2rF,EACzB,KAAO,CACDA,GAAS,UAAQ,CACnBrhD,SAAU,CAAC,OAAQ,OACnB2rB,QAASizQ,EAAYA,EAAU2e,GAAYA,GAC1CmsI,IAAmB,IAAUn/S,OAAQj1L,EAAMkB,IAAIowD,OAClDqgN,EAAKk9L,aAAazub,KAAK2rF,EACzB,CACF,GACF,EACO0pG,CACT,CA3I0B,CA2IxB,KACF,QC5II,IAAoB,SAAUx0M,GAEhC,SAAS0he,IACP,OAAkB,OAAX1he,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAgJA,OAnJA,UAAUoje,EAAM1he,GAIhB0he,EAAKlje,UAAU67b,cAAgB,SAAU3pL,EAAMsoD,GAC7C16T,KAAKg9b,YAAY5qL,EAAMsoD,EACzB,EACA0oK,EAAKlje,UAAU27b,eAAiB,SAAUzpL,EAAMsoD,GAEhD,EACA0oK,EAAKlje,UAAU6B,cAAgB,WAC7B,OAAO,UAAQ,CAAC,EAAGL,EAAOxB,UAAU6B,cAAcH,KAAK5B,MAAO,CAC5D2I,KAAM,OACNkte,aAAa,UAAS,CAAC,EAAGn0e,EAAOxB,UAAU68b,mBAAmBn7b,KAAK5B,OACnE81e,UAAU,UAAS,CAAC,EAAGp0e,EAAOxB,UAAU68b,mBAAmBn7b,KAAK5B,QAEpE,EACAoje,EAAKlje,UAAU8qE,OAAS,WACtBtpE,EAAOxB,UAAU8qE,OAAOppE,KAAK5B,MACzBA,KAAK2B,IAAI6rJ,WACXxtJ,KAAK+0e,aAET,EAKA3R,EAAKlje,UAAUu7b,eAAiB,SAAU/1a,GACxC,IAAIjlB,EAAQT,KACRmB,GAAK,UAAOnB,KAAK2B,IAAIi+H,OAAQ,GAC/Bs1W,EAAc/ze,EAAG,GACjBk0e,EAAWl0e,EAAG,GACZmS,EAAM,GACN8he,EAAqB,EACrBG,EAAkB,EAClBS,EAAe,CAAC,IAChBC,EAAY,CAAC,IAsCjB,OArCIf,IACFc,EAAeh2e,KAAKs8b,eAAe52a,EAAMwvd,GACzCE,EAAqBY,EAAan1e,QAEhCw0e,IACFY,EAAYj2e,KAAKs8b,eAAe52a,EAAM2vd,GACtCE,EAAkBU,EAAUp1e,QAG9Bm1e,EAAa5te,SAAQ,SAAU+nd,EAAM1zB,GACnCw5C,EAAU7te,SAAQ,SAAUgod,EAAM1zB,GAChC,IAAIj8E,EAAa,CAAC,CAChB5gP,MAAOq1W,EACP/ye,MAAOgud,EACP3vb,OAAQw1c,GACP,CACDn2W,MAAOw1W,EACPlze,MAAOiud,EACP5vb,OAAQy1c,IAENvjH,GAAY,UAAOhtW,EAAMjlB,EAAM+8b,mBAAmB/8E,IAClD/lD,EAAQ,CACV/xT,KAAMlI,EAAMkB,IAAIgH,KAChB+c,KAAMgtW,EACNy7C,OAAQ1ta,EAAM87b,UAAUg5C,EAAiBH,EAAoB34C,EAAQC,GACrE/zF,YAAawnH,EACbznH,SAAU0nH,EACV8kB,YAAaA,EACbG,SAAUA,EACVF,YAAa14C,EACb64C,SAAU54C,EACV04C,mBAAoBA,EACpBG,gBAAiBA,GAEnBjie,EAAI/S,KAAKm6T,EACX,GACF,IACOpnT,CACT,EACA8vd,EAAKlje,UAAU60e,YAAc,WAC3B,IAAIt0e,EAAQT,MACZ,UAAKA,KAAKopW,QAAQ,SAAU1uC,EAAOq7K,GACjC,IAAIZ,EAAcz6K,EAAMy6K,YACtBG,EAAW56K,EAAM46K,SACjBF,EAAqB16K,EAAM06K,mBAC3BzsI,EAAcjuC,EAAMiuC,YACpBD,EAAWhuC,EAAMguC,SACjBt2F,EAAOsoD,EAAMtoD,KAEf,GAAiB,IAAbkjO,EAAgB,CAClB,IAAIvrJ,GAAY,UAAItpV,EAAMkB,IAAIk0e,YAAa,aACvCrpY,GAAS,UAAQ,CACnBrhD,SAAU,CAAC,MAAO,MAClB2rB,QAASizQ,EAAYA,EAAU4e,GAAeA,GAC7CksI,IAAmB,IAAU3zM,KAAMzgS,EAAMkB,IAAIk0e,aAChDzjO,EAAKk9L,aAAazub,KAAK2rF,EACzB,CAEA,GAAI2oY,IAAgBC,EAAqB,EAAG,CACtCrrJ,GAAY,UAAItpV,EAAMkB,IAAIm0e,SAAU,aACpCtpY,GAAS,UAAQ,CACnBrhD,SAAU,CAAC,OAAQ,OACnB2rB,QAASizQ,EAAYA,EAAU2e,GAAYA,GAC1CmsI,IAAmB,IAAUn/S,OAAQj1L,EAAMkB,IAAIm0e,UAClD1jO,EAAKk9L,aAAazub,KAAK2rF,EACzB,CACF,GACF,EAQA42X,EAAKlje,UAAUo9b,eAAiB,SAAUryb,EAAG84T,EAAMrrQ,EAAQgiQ,GAEzD,OAAIA,EAAM46K,WAAa56K,EAAM66K,gBAAkB,GACtC,WAAS,UAAS,CAAC,EAAG78a,GAAS,CACpC3G,MAAO,KACPnF,MAAO,OAEA8tQ,EAAMy6K,cAAgBl7d,KAAKwX,OAAOipS,EAAM06K,mBAAqB,GAAK,IAEpE,WAAS,UAAS,CAAC,EAAG18a,GAAS,CACpC3G,MAAO,OAGJ2G,CACT,EAQA0qa,EAAKlje,UAAUq9b,eAAiB,SAAUryb,EAAG64T,EAAMrrQ,EAAQgiQ,GACzD,OAA0B,IAAtBA,EAAMy6K,aACD,WAAS,UAAS,CAAC,EAAGz8a,GAAS,CACpC3G,MAAO,KACPnF,MAAO,OAEA8tQ,EAAM46K,WAAar7d,KAAKwX,OAAOipS,EAAM66K,gBAAkB,GAAK,IAC9D,WAAS,UAAS,CAAC,EAAG78a,GAAS,CACpC3G,MAAO,OAGJ2G,CACT,EACO0qa,CACT,CArJwB,CAqJtB,KACF,QClJI,IAAoB,SAAU1he,GAEhC,SAASy8R,IACP,IAAI19R,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAOhE,OANAS,EAAMy1e,iBAAmB,WACnBz1e,EAAM2oW,QAAU3oW,EAAMkB,IAAIu0B,OAC5Bz1B,EAAMuI,UAAUuG,QAChB9O,EAAM01e,UAAU11e,EAAM2oW,QAE1B,EACO3oW,CACT,CA2RA,OArSA,UAAU09R,EAAMz8R,GAWhBy8R,EAAKj+R,UAAU67b,cAAgB,SAAU3pL,EAAMsoD,GAC7C16T,KAAKg9b,YAAY5qL,EAAMsoD,EACzB,EACAv8B,EAAKj+R,UAAU27b,eAAiB,SAAUzpL,EAAMsoD,GAAQ,EACxDv8B,EAAKj+R,UAAUoK,KAAO,WACpB5I,EAAOxB,UAAUoK,KAAK1I,KAAK5B,MAC3BA,KAAKoyQ,KAAKjyQ,GAAGo3Z,IAAiBknD,aAAcz+c,KAAKk2e,iBACnD,EACA/3M,EAAKj+R,UAAU6B,cAAgB,WAC7B,OAAO,UAAQ,CAAC,EAAGL,EAAOxB,UAAU6B,cAAcH,KAAK5B,MAAO,CAC5D2I,KAAM,OACNutB,KAAM,CACJpqB,MAAO,CACL2T,UAAW,EACX0B,OAAQ,QAEVya,QAAQ,GAEV4xH,WAAW,EACXz7F,MAAOrwD,EAAOxB,UAAU68b,mBAAmBn7b,KAAK5B,OAEpD,EACAm+R,EAAKj+R,UAAUu7b,eAAiB,SAAU/1a,GAExC,IADa1lB,KAAK2B,IAAIi+H,OACV/+H,OACV,MAAM,IAAIonC,MAAM,gDAElB,IAAI30B,EAAM,GACN8ie,EAAY,CACdzte,KAAM3I,KAAK2B,IAAIgH,KACf+c,KAAMA,EACNyoZ,OAAQ,KACRonE,gBAAiBv1e,KAAKq2e,UACtBjB,mBAAoB,EACpBE,SAAU,EACVH,YAAa,EACbE,SAAU,GACVH,YAAa,GACbxsI,SAAU,GACVC,YAAa,IAKf,OAHAr1V,EAAI/S,KAAK61e,GACTA,EAAUvme,SAAW7P,KAAKs2e,eAAe5wd,EAAM,EAAGpS,GAClDtT,KAAKu2e,UAAUjje,GACRA,CACT,EACA6qR,EAAKj+R,UAAUq2e,UAAY,SAAUntI,GACnC,IAAI3oW,EAAQT,KACZA,KAAKw2e,cAAcptI,GACnBA,EAAOhhW,SAAQ,SAAUsyT,GAEvBA,EAAMyzG,OAAS1ta,EAAM87b,UAAU7hI,EAAM66K,gBAAiB76K,EAAM06K,mBAAoB16K,EAAMy6K,YAAaz6K,EAAM46K,SAC3G,GACF,EACAn3M,EAAKj+R,UAAUq8b,UAAY,SAAU7lU,EAAM8lU,EAAMC,EAAQC,GACvD,IAAI+5C,EAAS,EAAIj6C,EACbk6C,EAAS,EAAIhgX,EACbhwG,EAAQ,CACVzb,EAAGwre,EAASh6C,EACZvxb,EAAGwre,EAASh6C,GAOd,MAAO,CACLh2a,MAAOA,EACPmI,IAPQ,CACR5jB,EAAGyb,EAAMzb,EAAIwre,EACbvre,EAAGwb,EAAMxb,EAAa,EAATwre,EAAa,GAO9B,EACAv4M,EAAKj+R,UAAUs2e,cAAgB,SAAUptI,GACvC,IAAI4uF,EAAK72b,EACLV,EAAQT,KACR22e,EAAQ,GACR3ue,EAAQ,EACZohW,EAAOhhW,SAAQ,SAAUsyT,GACnBj6T,EAAMm2e,OAAOl8K,KACfi8K,EAAMp2e,KAAKm6T,GAEXA,EAAMy6K,YAAcnte,EACpBA,IAEJ,IACA2ue,EAAMvue,SAAQ,SAAUsyT,GAEtBA,EAAM06K,mBAAqBuB,EAAM91e,MACnC,IAEA,IADA,IACSK,EADMlB,KAAK2B,IAAIi+H,OAAO/+H,OACP,EAAGK,GAAK,EAAGA,IAAK,CACtC,IAAI21e,EAAc72e,KAAK82e,iBAAiB1tI,EAAQloW,GAChD,IAEE,IAAK,IAAI61e,GAAiB/+C,OAAM,GAAQ,UAAS6+C,IAAeG,EAAkBD,EAAcxhd,QAASyhd,EAAgB1+b,KAAM0+b,EAAkBD,EAAcxhd,OAAQ,CACrK,IAAImlS,EAAQs8K,EAAgB70e,MACvBnC,KAAK42e,OAAOl8K,KACfA,EAAMu8K,eAAiBv8K,EAAMy6K,YAE7Bz6K,EAAMy6K,YAAcn1e,KAAKk3e,eAAex8K,EAAM7qT,UAE9C6qT,EAAM06K,mBAAqBuB,EAAM91e,OAErC,CACF,CAAE,MAAOs3b,GACPH,EAAM,CACJ5qY,MAAO+qY,EAEX,CAAE,QACA,IACM6+C,IAAoBA,EAAgB1+b,OAASn3C,EAAK41e,EAAc99Q,SAAS93N,EAAGS,KAAKm1e,EACvF,CAAE,QACA,GAAI/+C,EAAK,MAAMA,EAAI5qY,KACrB,CACF,CACF,CACF,EAEA+wO,EAAKj+R,UAAU42e,iBAAmB,SAAU1tI,EAAQhlU,GAClD,IAAI9wB,EAAM,GAMV,OALA81V,EAAOhhW,SAAQ,SAAUsyT,GACnBA,EAAM46K,WAAalxc,GACrB9wB,EAAI/S,KAAKm6T,EAEb,IACOpnT,CACT,EAEA6qR,EAAKj+R,UAAUg3e,eAAiB,SAAUrne,GACxC,IAAI0sB,EAAQ1sB,EAAS,GAErB,OADWA,EAASA,EAAShP,OAAS,GACzBs0e,YAAc54c,EAAM44c,aAAe,EAAI54c,EAAM44c,WAC5D,EAEAh3M,EAAKj+R,UAAU02e,OAAS,SAAUl8K,GAChC,OAAQA,EAAM7qT,WAAa6qT,EAAM7qT,SAAShP,MAC5C,EACAs9R,EAAKj+R,UAAUm2e,QAAU,WACvB,OAAOr2e,KAAK2B,IAAIi+H,OAAO/+H,OAAS,CAClC,EAEAs9R,EAAKj+R,UAAUo2e,eAAiB,SAAU5wd,EAAM0e,EAAO3tB,GACrD,IAAIhW,EAAQT,KAER4/H,EAAS5/H,KAAK2B,IAAIi+H,OAEtB,KADaA,EAAO/+H,OACPujC,GAAb,CAGA,IAAI9wB,EAAM,GAENusH,EAAQD,EAAOx7F,EAAQ,GAEvB5D,EAASxgC,KAAKs8b,eAAe52a,EAAMm6G,GA2BvC,OA1BAr/F,EAAOp4B,SAAQ,SAAUjG,EAAO6F,GAC9B,IAAIy4W,EAAa,CAAC,CAChB5gP,MAAOA,EACP19H,MAAOA,EACPq+B,OAAQA,IAENwyb,EAAUttc,EAAKnV,OAAO9P,EAAM+8b,mBAAmB/8E,IACnD,GAAIuyG,EAAQnyd,OAAQ,CAClB,IAAI65T,EAAQ,CACV/xT,KAAMlI,EAAMkB,IAAIgH,KAChB+c,KAAMstc,EACN7kD,OAAQ,KACRxlE,YAAaxmW,EACbumW,SAAU,GACVwsI,YAAar1W,EACbw1W,SAAU,GACVF,YAAante,EACbute,gBAAiB90e,EAAM41e,UACvBjB,mBAAoB,EACpBE,SAAUlxc,EACVv0B,SAAUpP,EAAM61e,eAAetjB,EAAS5ub,EAAQ,EAAG3tB,IAErDnD,EAAI/S,KAAKm6T,GACTjkT,EAAIlW,KAAKm6T,EACX,CACF,IACOpnT,CAhCP,CAiCF,EACA6qR,EAAKj+R,UAAU8qE,OAAS,WACtBtpE,EAAOxB,UAAU8qE,OAAOppE,KAAK5B,MACzBA,KAAK2B,IAAI6rJ,WACXxtJ,KAAK+0e,aAET,EACA52M,EAAKj+R,UAAU60e,YAAc,WAC3B,IAAIt0e,EAAQT,MACZ,UAAKA,KAAKopW,QAAQ,SAAU1uC,GAC1B,IAAIiuC,EAAcjuC,EAAMiuC,YACtBv2F,EAAOsoD,EAAMtoD,KACX23E,GAAY,UAAItpV,EAAMkB,IAAIowD,MAAO,aACjCy6C,GAAS,UAAQ,CACnBrhD,SAAU,CAAC,MAAO,MAClB2rB,QAASizQ,EAAYA,EAAU4e,GAAeA,GAC7CksI,IAAmB,IAAU3zM,KAAMzgS,EAAMkB,IAAIowD,OAChDqgN,EAAKk9L,aAAazub,KAAK2rF,EACzB,GACF,EACA2xL,EAAKj+R,UAAUi2e,UAAY,SAAU/sI,GACnC,IAAI3oW,EAAQT,KACZopW,EAAOhhW,SAAQ,SAAUsyT,GACvB,IAAKj6T,EAAMm2e,OAAOl8K,GAAQ,CACxB,IAAI7qT,EAAW6qT,EAAM7qT,SACrBpP,EAAM02e,cAAcz8K,EAAO7qT,EAC7B,CACF,GACF,EAEAsuR,EAAKj+R,UAAUi3e,cAAgB,SAAUz8K,EAAO7qT,GAC9C,IAAIpP,EAAQT,KAERmua,EADOzzG,EAAMtoD,KACCwlK,eAEdlxZ,EAAQ,CACVzb,EAAGkja,EAAOlja,EAAIkja,EAAOpga,MAAQ,EAC7B7C,EAAGija,EAAOjja,EAAIija,EAAOnga,QAEvB6B,EAASzH,SAAQ,SAAUgve,GACzB,IAAIC,EAAYD,EAAShlO,KAAKwlK,eAC1B/oZ,EAAM,CACR5jB,EAAGose,EAAUnvP,GAAGj9O,GAAKose,EAAU3gP,GAAGzrP,EAAIose,EAAUnvP,GAAGj9O,GAAK,EACxDC,EAAGmse,EAAU3gP,GAAGxrP,GAEdose,EAAU,CACZrse,EAAGyb,EAAMzb,EACTC,EAAGwb,EAAMxb,GAAK2jB,EAAI3jB,EAAIwb,EAAMxb,GAAK,GAE/Bqse,EAAU,CACZtse,EAAG4jB,EAAI5jB,EACPC,EAAGose,EAAQpse,GAEbzK,EAAMs7a,SAAS,CAACr1Z,EAAO4wd,EAASC,EAAS1od,GAC3C,GACF,EACAsvQ,EAAKj+R,UAAUk8d,QAAU,SAAU17c,GACjC,IAAI7Z,EAAO,GAcX,OAba7G,KAAK2B,IAAIu0B,KAAK0F,QAEzB/0B,EAAKtG,KAAK,CAAC,IAAKmgB,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,IACvCrE,EAAKtG,KAAK,CAAC,IAAKmgB,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,EAAGwV,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,EAAGwV,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,KAE3FwV,EAAOtY,SAAQ,SAAU4C,EAAOhD,GAChB,IAAVA,EACFnB,EAAKtG,KAAK,CAAC,IAAKyK,EAAMC,EAAGD,EAAME,IAE/BrE,EAAKtG,KAAK,CAAC,IAAKyK,EAAMC,EAAGD,EAAME,GAEnC,IAEKrE,CACT,EAEAs3R,EAAKj+R,UAAU67a,SAAW,SAAUr7Z,GAClC,IAAI7Z,EAAO7G,KAAKo8d,QAAQ17c,GACpBwV,EAAOl2B,KAAK2B,IAAIu0B,KAAKpqB,MACzB9L,KAAKgJ,UAAUqI,SAAS,OAAQ,CAC9B/K,OAAO,UAAO,CAEZO,KAAMA,GACLqvB,IAEP,EACAioQ,EAAKj+R,UAAUo9b,eAAiB,SAAUryb,EAAG84T,EAAMrrQ,EAAQgiQ,GACzD,OAAIA,EAAM46K,WAAa56K,EAAM66K,gBAAkB,GACtC,WAAS,UAAS,CAAC,EAAG78a,GAAS,CACpC3G,MAAO,KACPnF,MAAO,OAGJ8L,CACT,EACAylO,EAAKj+R,UAAUq9b,eAAiB,SAAUryb,EAAG64T,EAAMrrQ,EAAQgiQ,GACzD,OAA6B,IAAzBA,EAAMu8K,gBAA8C,IAAtBv8K,EAAMy6K,aAC/B,WAAS,UAAS,CAAC,EAAGz8a,GAAS,CACpC3G,MAAO,KACPnF,MAAO,OAGJ8L,CACT,EACOylO,CACT,CAvSwB,CAuStB,KACF,QC/SO,SAASq5M,IAAUj1c,GACxB,IAAI9rB,GAAM,UAAc,IAAI,UAAO8rB,IAAQ,GAE3C9rB,EAAIlE,MAAK,SAAU4L,EAAG8E,GACpB,OAAO9E,EAAI8E,CACb,IACA,IAAIuX,EAAM/jB,EAAI5V,OAGd,OAAY,IAAR25B,EACK,EAGLA,EAAM,GAAM,EACP/jB,GAAK+jB,EAAM,GAAK,IAGjB/jB,EAAI+jB,EAAM,GAAK/jB,EAAI+jB,EAAM,EAAI,IAAM,CAC7C,CClBO,SAASi9c,IAAmBpye,EAAKyT,GACtC,IAAKA,EACH,OAAO,KAET,IAAIi6V,EACJ,OAAQ1tW,GACN,IAAK,QACH,OAAO,EACT,IAAK,SACH,MAAO,GACT,IAAK,MACH,OAAO,EACT,IAAK,SAED0tW,EAASj6V,EAAMglZ,WAAa05E,IAAU1+d,EAAM0nB,OAAOxP,KAAI,SAAU0V,EAAGxB,GAClE,OAAOA,CACT,KAAMsyc,IAAU1+d,EAAM0nB,QACtB,MAEJ,IAAK,OAEDuyU,EAASj6V,EAAMglZ,YAAchlZ,EAAM0nB,OAAO3/B,OAAS,GAAK,EDEzD,SAAiB0hC,GACtB,IAAInW,GAAM,UAAOmW,GAAO,SAAUrjB,EAAGsyE,GACnC,OAAOtyE,GAAKgD,MAAMsvE,MAAS,UAASA,GAAO,EAAIA,EACjD,GAAG,GACH,OAAwB,IAAjBjvD,EAAM1hC,OAAe,EAAIurB,EAAMmW,EAAM1hC,MAC9C,CCPoE62e,CAAQ5+d,EAAM0nB,QAC1E,MAEJ,IAAK,MACHuyU,EAASj6V,EAAMglZ,WAAa,EAAIhlZ,EAAMzT,GACtC,MACF,IAAK,MACH0tW,EAASj6V,EAAMglZ,WAAahlZ,EAAM0nB,OAAO3/B,OAAS,EAAIiY,EAAMzT,GAC5D,MACF,QACE0tW,EAAS1tW,EAGb,OAAOyT,EAAMA,MAAMi6V,EACrB,CC/BA,IAAI4kI,IAA2B,CAAC,eAAgB,SAM5CC,IAA0B,SAAUl2e,GAEtC,SAASk2e,EAAWxlO,GAClB,IAAI3xQ,EAAQiB,EAAOE,KAAK5B,KAAMoyQ,IAASpyQ,KAMvC,OAJAS,EAAMqe,MAAQ,IAAIC,IAClBte,EAAMo3e,oBAAsBp3e,EAAM2xQ,KAAK4pL,SAAS7kC,IAAM8kC,MAAMxqb,WAC5DhR,EAAMq3e,oBAAsBr3e,EAAM2xQ,KAAK4pL,SAAS7kC,IAAMopD,IAAI9uc,WAC1DhR,EAAMi4D,OAAS,GACRj4D,CACT,CAkqBA,OA3qBA,UAAUm3e,EAAYl2e,GAUtB8V,OAAOoxB,eAAegvc,EAAW13e,UAAW,OAAQ,CAClD8B,IAAK,WACH,MAAO,YACT,EACA2mC,YAAY,EACZsqB,cAAc,IAEhB2kb,EAAW13e,UAAUoK,KAAO,WAAa,EAIzCste,EAAW13e,UAAU4oH,OAAS,WAC5B9oH,KAAKwF,QACP,EAEAoye,EAAW13e,UAAU8qE,OAAS,WAAa,EAI3C4sa,EAAW13e,UAAUsF,OAAS,WAC5B,IAAI/E,EAAQT,KAEZA,KAAK+3e,eAAc,WACjB,IAAI31Z,EAAU,IAAIrjE,KAElB,UAAKte,EAAMi4D,QAAQ,SAAUA,GAC3B,IAAI,UAASi/a,IAA0Bj/a,EAAO/vD,MAAO,CACnD,IAAIo5b,EAAKthc,EAAMu3e,eAAet/a,GAE1BqpY,GACF3/W,EAAQlgF,IAAIzB,EAAMw3e,YAAYv/a,GAASqpY,EAE3C,CACF,IAGAthc,EAAMqe,MAAQre,EAAMy3e,UAAU91Z,EAChC,IAEA,IAAI+1Z,EAAc,IAAIp5d,KACtB,UAAK/e,KAAK04D,QAAQ,SAAUA,GAC1B,KAAK,UAASi/a,IAA0Bj/a,EAAO/vD,MAAO,CACpD,IAAIo5b,EAAKthc,EAAMu3e,eAAet/a,GAE1BqpY,GACFo2C,EAAYj2e,IAAIzB,EAAMw3e,YAAYv/a,GAASqpY,EAE/C,CACF,IACA/hc,KAAK8e,MAAQ9e,KAAKk4e,UAAUC,EAC9B,EAKAP,EAAW13e,UAAUqP,MAAQ,SAAUq2c,QACf,IAAlBA,IACFA,GAAgB,GAElBlkd,EAAOxB,UAAUqP,MAAM3N,KAAK5B,MAC5BA,KAAKo4e,kBACLp4e,KAAK63e,oBAAoBtoe,QACzBvP,KAAK83e,oBAAoBvoe,QAErBq2c,IACF5ld,KAAK04D,OAAS,GAElB,EACAk/a,EAAW13e,UAAUkC,QAAU,WAC7BpC,KAAKuP,OAAM,GACXvP,KAAK63e,oBAAoB1ke,QAAO,GAChCnT,KAAK83e,oBAAoB3ke,QAAO,EAClC,EAIAyke,EAAW13e,UAAU4hc,cAAgB,WACnC,IAAIC,EAAK,GAIT,OAHA/hc,KAAK8e,MAAM1W,SAAQ,SAAUjG,GAC3B4/b,EAAGxhc,KAAK4B,EACV,IACO4/b,CACT,EAIA61C,EAAW13e,UAAUk4e,gBAAkB,WACrCp4e,KAAK8hc,gBAAgB15b,SAAQ,SAAU25b,GACrCA,EAAGviY,UAAUp9D,SACf,IACApC,KAAK8e,MAAMvP,OACb,EAKAqoe,EAAW13e,UAAU63e,cAAgB,SAAUM,GAC7C,IAAI//b,GAAO,EACPt4C,KAAKoyQ,KAAK6qL,aAAanmb,SACzB9W,KAAKoyQ,KAAKhzD,WAAWh3M,SAAQ,SAAUosC,GAEjCA,EAAEi7X,gBACJj7X,EAAEl0C,KAAKk3Z,IAAqB0zD,oBAAoB,WAC9CmtB,GACF,IACA//b,GAAO,EAEX,IAEGA,GACHt4C,KAAKoyQ,KAAK0sM,cAAcx+c,KAAKi3Z,IAAiBknD,cAAc,WAC1D45B,GACF,GAEJ,EACAT,EAAW13e,UAAUo4e,iBAAmB,SAAU5/a,GAChD,IAAI/vD,EAAO+vD,EAAO/vD,KACdw6B,EAAO,GAAoB,UAAWx6B,IAC1C,GAAIw6B,EAAM,CACR,IAAImqE,EAAQttG,KAAKu4e,mBAAmB5ve,GAChChH,EAAM3B,KAAKw4e,iBAAiB7ve,EAAM+vD,EAAQ40C,GAE9C,OAAK3rG,EAIE,CACL69D,UAFe,IAAIr8B,EAAKxhC,GAGxB+0V,MAAO12V,KAAKy4e,MAAM92e,GAAOw1Z,IAAM8kC,KAAO9kC,IAAMopD,GAC5Czlb,UAAW,IAAU49c,KACrB/ve,KAAMyuZ,IAAeuhF,WACrB3kY,MAAOt7C,GARA,IAUX,CACF,EAEAk/a,EAAW13e,UAAUovc,WAAa,SAAU52Y,GAC1C14D,KAAK04D,OAAOn4D,KAAKm4D,EACnB,EAMAk/a,EAAW13e,UAAUw/M,IAAM,SAAUhnJ,GAInC,OAHA14D,KAAKsvc,YAAW,UAAS,CACvB3mc,KAAM,OACL+vD,IACI14D,IACT,EAMA43e,EAAW13e,UAAU2oH,MAAQ,SAAUnwD,GAIrC,OAHA14D,KAAKsvc,YAAW,UAAS,CACvB3mc,KAAM,SACL+vD,IACI14D,IACT,EAMA43e,EAAW13e,UAAUg2B,KAAO,SAAUwiC,GAIpC,OAHA14D,KAAKsvc,YAAW,UAAS,CACvB3mc,KAAM,QACL+vD,IACI14D,IACT,EAMA43e,EAAW13e,UAAUiua,OAAS,SAAUz1W,GAItC,OAHA14D,KAAKsvc,YAAW,UAAS,CACvB3mc,KAAM,UACL+vD,IACI14D,IACT,EAMA43e,EAAW13e,UAAU2gB,KAAO,SAAU63C,GAIpC,OAHA14D,KAAKsvc,YAAW,UAAS,CACvB3mc,KAAM,QACL+vD,IACI14D,IACT,EAMA43e,EAAW13e,UAAUkwc,WAAa,SAAU13Y,GAI1C,OAHA14D,KAAKsvc,YAAW,UAAS,CACvB3mc,KAAM,cACL+vD,IACI14D,IACT,EAMA43e,EAAW13e,UAAUowc,WAAa,SAAU53Y,GAC1C14D,KAAKsvc,YAAW,UAAS,CACvB3mc,KAAM,cACL+vD,GACL,EAMAk/a,EAAW13e,UAAU04e,aAAe,SAAUlgb,GAC5C14D,KAAKsvc,YAAW,UAAS,CACvB3mc,KAAM,gBACL+vD,GACL,EAKAk/a,EAAW13e,UAAUuF,MAAQ,SAAUizD,GACrC14D,KAAKsvc,YAAW,UAAS,CACvB3mc,KAAM,SACL+vD,GACL,EAKAk/a,EAAW13e,UAAU06a,KAAO,SAAUliX,GACpC14D,KAAKsvc,YAAW,UAAS,CACvB3mc,KAAM,QACL+vD,GACL,EAOAk/a,EAAW13e,UAAU24e,cAAgB,SAAUz6d,GAC7C,IAAI45a,EAAK72b,EACLg3Y,EAASn4Y,KAAKoyQ,KAAK0kM,YAEnBkJ,EAAUhgd,KAAKoyQ,KAAK6tM,eAAe,KACnC90Z,GAAW,UAAW/sC,GAAKA,EAAExc,KAAK,KAAMu2Y,EAAQ6nE,GAAW5hc,EAC3DnT,EAAI,EACJC,EAAI,EAER,IAAI,UAAQigD,GAAW,CACrB,IAAIj0C,GAAK,UAAOi0C,EAAU,GACxB2tb,EAAO5he,EAAG,GACV6he,EAAO7he,EAAG,GAIZ,IAAI,UAAS4he,KAAgC,IAAvBA,EAAK5le,QAAQ,OAAgBgP,MAAM42d,EAAK9xd,MAAM,GAAI,IACtE,OAAOhnB,KAAKg5e,qBAAqB7tb,GAEnClgD,EAAIwse,IAAmBqB,EAAM3gG,GAC7BjtY,EAAIuse,IAAmBsB,EAAMvhe,OAAOgpB,OAAOw/a,GAAS,GACtD,MAAO,KAAK,UAAM70Z,GAChB,IAEE,IAAK,IAAIh0C,GAAK,WAAS,UAAKg0C,IAAY7sB,EAAKnnB,EAAGoe,QAAS+I,EAAGga,KAAMha,EAAKnnB,EAAGoe,OAAQ,CAChF,IAAIsL,EAAMvC,EAAGn8B,MACTA,EAAQgpD,EAAStqB,GACjBA,IAAQs3W,EAAOt4Q,QACjB50H,EAAIwse,IAAmBt1e,EAAOg2Y,IAE5B6nE,EAAQn/a,KACV31B,EAAIuse,IAAmBt1e,EAAO69c,EAAQn/a,IAE1C,CACF,CAAE,MAAOs3Z,GACPH,EAAM,CACJ5qY,MAAO+qY,EAEX,CAAE,QACA,IACM75Z,IAAOA,EAAGga,OAASn3C,EAAKgW,EAAG8hN,SAAS93N,EAAGS,KAAKuV,EAClD,CAAE,QACA,GAAI6gb,EAAK,MAAMA,EAAI5qY,KACrB,CACF,CAEF,OAAIlrC,MAAMjX,IAAMiX,MAAMhX,GACb,KAEFlL,KAAKoyQ,KAAK+vL,gBAAgBtjP,QAAQ,CACvC5zM,EAAGA,EACHC,EAAGA,GAEP,EAOA0se,EAAW13e,UAAU+4e,gBAAkB,SAAUvyd,EAAOmI,GACtD,IASIygJ,EATA7uK,EAAQT,KACRm4Y,EAASn4Y,KAAKoyQ,KAAK0kM,YACnBkJ,EAAUhgd,KAAKoyQ,KAAK6tM,eAAe,KACnC7nE,EAAS5gY,OAAOgpB,OAAOw/a,GAAS,GAChChnD,EAAS7gB,EAAOt4Q,MAChBq5W,EAAWl5e,KAAKoyQ,KAAKnyG,UACrBk5U,GAAc,UAAQzyd,GAASA,EAAM,GAAKA,EAAMsyY,GAChDogF,GAAY,UAAQvqd,GAAOA,EAAI,GAAKA,EAAImqY,GACxCviZ,EAAM,GAgBV,OAdA,UAAKyie,GAAU,SAAUzhe,EAAMytB,GAI7B,GAHIztB,EAAKuhZ,KAAYmgF,IACnB7pU,EAAapqI,GAEXA,GAAOoqI,EAAY,CACrB,IAAItkK,EAAQvK,EAAMo4e,cAAc,CAACphe,EAAKuhZ,GAASvhZ,EAAK2gY,EAAOv4Q,SACvD70H,GACFyL,EAAIlW,KAAKyK,EAEb,CACA,GAAIyM,EAAKuhZ,KAAYogF,EACnB,OAAO,CAEX,IACO3ie,CACT,EAKAmhe,EAAW13e,UAAU84e,qBAAuB,SAAU7tb,GACpD,IAAIiiX,EAAW/hZ,WAAW8/B,EAAS,IAAM,IACrCkiX,EAAWhiZ,WAAW8/B,EAAS,IAAM,IACrC8yN,EAAaj+Q,KAAKoyQ,KAAK+vL,gBACvBz7a,EAAQu3P,EAAWv3P,MACrBmI,EAAMovP,EAAWpvP,IACfhV,EACCI,KAAKC,IAAIwM,EAAMzb,EAAG4jB,EAAI5jB,GADvB4O,EAECI,KAAKC,IAAIwM,EAAMxb,EAAG2jB,EAAI3jB,GAI3B,MAAO,CACLD,EAHMgzQ,EAAWznJ,WAAa42S,EAAWvzZ,EAIzC3O,EAHM+yQ,EAAWkuJ,YAAckB,EAAWxzZ,EAK9C,EAIA+9d,EAAW13e,UAAUm5e,kBAAoB,WACvC,IAAIp7N,EAAaj+Q,KAAKoyQ,KAAK+vL,gBACvBz7a,EAAQu3P,EAAWv3P,MACrBmI,EAAMovP,EAAWpvP,IACf9gB,EAAQkwQ,EAAWznJ,WACnBxoH,EAASiwQ,EAAWkuJ,YACpBtyZ,EAAU,CACZ5O,EAAGgP,KAAKC,IAAIwM,EAAMzb,EAAG4jB,EAAI5jB,GACzBC,EAAG+O,KAAKC,IAAIwM,EAAMxb,EAAG2jB,EAAI3jB,IAE3B,MAAO,CACLD,EAAG4O,EAAQ5O,EACXC,EAAG2O,EAAQ3O,EACXgF,KAAM2J,EAAQ5O,EACdmF,KAAMyJ,EAAQ3O,EACdiF,KAAM0J,EAAQ5O,EAAI8C,EAClBsC,KAAMwJ,EAAQ3O,EAAI8C,EAClBD,MAAOA,EACPC,OAAQA,EAEZ,EAOA4pe,EAAW13e,UAAUs4e,iBAAmB,SAAU7ve,EAAM+vD,EAAQ40C,GAC9D,IAAI7sG,EAAQT,KACRi+Q,EAAaj+Q,KAAKoyQ,KAAK+vL,gBACvB56b,EAASvH,KAAKoyQ,KAAKrgQ,YACnBqT,EAAI,CAAC,EACT,IAAI,UAAMszC,GACR,OAAO,KAET,IAAIhyC,EAAQgyC,EAAOhyC,MACjBmI,EAAM6pC,EAAO7pC,IACbs8B,EAAWuN,EAAOvN,SAChBmub,EAAKt5e,KAAK64e,cAAcnyd,GACxB6yd,EAAKv5e,KAAK64e,cAAchqd,GACxBy0Z,EAAYtjb,KAAK64e,cAAc1tb,GACnC,MAAI,CAAC,MAAO,QAAS,OAAQ,SAAU,gBAAgBhmD,SAASwD,IAAW2we,GAAOC,GAChF,OAAO,KACF,GAAI,CAAC,OAAQ,aAAc,QAAQp0e,SAASwD,KAAU26a,EAC3D,OAAO,KAET,GAAa,QAAT36a,EAAgB,CAClB,IAAIxH,EAAKu3D,EAGPikB,GAFUx7E,EAAGulB,MACLvlB,EAAG0tB,KACJ,UAAO1tB,EAAI,CAAC,QAAS,SAC1B4gB,EAAaw3a,IAAgBt7K,EAAYq7N,GACzCt3d,EAAWu3a,IAAgBt7K,EAAYs7N,GACvCx3d,EAAaC,IACfA,EAAqB,EAAV/H,KAAK+B,GAASgG,GAE3BoD,GAAI,WAAS,UAAS,CAAC,EAAGu3D,GAAO,CAC/B9+C,OAAQogP,EAAWiuJ,YACnBl+V,OAAQsrX,IAAoBr7K,EAAYq7N,GACxCv3d,WAAYA,EACZC,SAAUA,GAEd,MAAO,GAAa,UAATrZ,EAAkB,CAC3B,IAAIuO,EAAKwhD,EACGxhD,EAAGwP,MACLxP,EAAG2X,IACX8tD,GAAO,UAAOzlE,EAAI,CAAC,QAAS,QAC9BkO,GAAI,WAAS,UAAS,CAAC,EAAGu3D,GAAO,CAC/Bj2D,MAAO4yd,EACPzqd,IAAK0qd,EACLp1c,IAAKu0B,EAAOv0B,KAEhB,MAAO,GAAa,SAATx7B,EAAiB,CAC1B,IAAIwO,EAAKuhD,EACGvhD,EAAGuP,MACLvP,EAAG0X,IACX8tD,GAAO,UAAOxlE,EAAI,CAAC,QAAS,QAC9BiO,GAAI,WAAS,UAAS,CAAC,EAAGu3D,GAAO,CAC/Bj2D,MAAO4yd,EACPzqd,IAAK0qd,EACL14d,MAAM,UAAI63C,EAAQ,OAAQ,OAE9B,MAAO,GAAa,WAAT/vD,EAAmB,CAC5B,IAAI21B,EAAKo6B,EACGp6B,EAAG5X,MACL4X,EAAGzP,IACX8tD,GAAO,UAAOr+C,EAAI,CAAC,QAAS,QAC9BlZ,GAAI,WAAS,UAAS,CAAC,EAAGu3D,GAAO,CAC/Bj2D,MAAO4yd,EACPzqd,IAAK0qd,GAET,MAAO,GAAa,SAAT5we,EAAiB,CAC1B,IAAIg2c,EAAe3+c,KAAKoyQ,KAAKnyG,UACzB1hI,EAAKm6B,EAEPoe,GADav4C,EAAG4sB,SACN5sB,EAAGu4C,SAEXuH,GADF1B,GAAO,UAAOp+C,EAAI,CAAC,WAAY,YACfu4C,IACd,UAAWA,KACbuH,EAAcvH,EAAQ6nY,IAExBv5b,GAAI,WAAS,WAAS,UAAS,CAAC,EAAGk+Z,GAAY3mW,GAAO,CACpD7F,QAASuH,GAEb,MAAO,GAAa,eAAT11E,EAAuB,CAChC,IAAI61B,EAAKk6B,EAEP1tD,GADawzB,EAAG2sB,SACR3sB,EAAGxzB,OACXkrB,EAAOsI,EAAGtI,KACVrV,EAAO2d,EAAG3d,KACV82Z,EAAan5Y,EAAGm5Y,WAChB78Y,EAAY0D,EAAG1D,UACf6hD,GAAO,UAAOn+C,EAAI,CAAC,WAAY,QAAS,OAAQ,OAAQ,aAAc,cACxEpZ,GAAI,WAAS,WAAS,UAAS,CAAC,EAAGu3D,GAAO2mW,GAAY,CACpD1L,eAAgB53a,KAAKq5e,oBACrBrue,MAAOA,EACPkrB,KAAMA,EACNrV,KAAMA,EACN82Z,WAAYA,EACZ78Y,UAAWA,GAEf,MAAO,GAAa,eAATnyB,EAAuB,CAChC,IAAI81B,EAAKi6B,EACP8gb,EAAU/6c,EAAG/X,MACb+yd,EAAQh7c,EAAG5P,IACXs/Y,EAAS1vY,EAAG0vY,OAEZ+J,GADAr3Z,EAAO4d,EAAG5d,KACG4d,EAAGy5Y,YAChBv7V,GAAO,UAAOl+C,EAAI,CAAC,QAAS,MAAO,SAAU,OAAQ,eACvDrZ,GAAI,WAAS,UAAS,CAAC,EAAGu3D,GAAO,CAC/Bj8D,OAAQ1gB,KAAKi5e,gBAAgBO,EAASC,GACtCtrE,OAAQA,EACRttZ,KAAMA,EACNq3Z,WAAYA,GAEhB,MAAO,GAAa,iBAATvva,EAAyB,CAClC,IAAI+1B,EAAKg6B,EAGPghb,GAFUh7c,EAAGhY,MACLgY,EAAG7P,IACD6P,EAAGr9B,OACb0yC,EAAQrV,EAAGqV,MAETqrK,GADFziI,GAAO,UAAOj+C,EAAI,CAAC,QAAS,MAAO,QAAS,UAC7B1+B,KAAKoyQ,KAAKhzD,YACvBu6R,EAAW,GACXC,EAAc,SAASA,EAAYnie,GAChCA,IAGDA,EAAK7H,UACP6H,EAAKnH,cAAclI,SAAQ,SAAU0H,GACnC,OAAO8pe,EAAY9pe,EACrB,IAEA6pe,EAASp5e,KAAKkX,GAElB,GACA,UAAK2nM,GAAY,SAAUoB,GACrBk5R,GACE,UAASA,EAASl5R,EAAK73M,QACzB,UAAK63M,EAAK7/K,UAAU,SAAUokD,GAC5B60Z,EAAY70Z,EAAKt/E,MACnB,KAGF,UAAK+6M,EAAK7/K,UAAU,SAAUokD,GAC5B60Z,EAAY70Z,EAAKt/E,MACnB,GAEJ,IACA2f,GAAI,WAAS,UAAS,CAAC,EAAGu3D,GAAO,CAC/B5oC,MAAOA,EACPy4Z,OAAQmtC,EACRjzd,MAAO4yd,EACPzqd,IAAK0qd,GAET,MAAO,GAAa,UAAT5we,EAAkB,CAC3B,IAAIo+R,EAAKruO,EACPmhb,EAAW9yM,EAAG/7N,OACd8ua,GAAc,UAAO/yM,EAAI,CAAC,WAQ5B3hR,GAAI,WAAS,UAAS,CAAC,EAAG00d,GAAc,CACtC9ua,OARkB,SAAuBhiE,GACzC,IAAI,UAAW0vD,EAAOsS,QACpB,OAAO6ua,EAAS7we,EAAWvI,EAAM2xQ,KAAM,CACrCymO,cAAep4e,EAAMo4e,cAAcz1e,KAAK3C,IAG9C,GAIF,MAAO,GAAa,SAATkI,EAAiB,CAC1B,IAAI0yN,EAAK3iK,EACPqhb,EAAS1+Q,EAAGu/M,KACCv/M,EAAGlwK,SAChB2ub,GAAc,UAAOz+Q,EAAI,CAAC,OAAQ,aAOpCj2M,GAAI,WAAS,WAAS,UAAS,CAAC,EAAG00d,GAAcx2D,GAAY,CAE3D1xa,OAAQrK,EAAOvF,IAAI,MAAMoN,WACzBwra,KATgB,SAAqB5xa,GACrC,OAAI,UAAW+we,GACNA,EAAO/we,EAAWvI,EAAM2xQ,MAE1B2nO,CACT,GAMF,CAEA,IAAIp4e,GAAM,UAAQ,CAAC,EAAG2rG,GAAO,WAAS,UAAS,CAAC,EAAGloF,GAAI,CACrDnW,IAAKypD,EAAOzpD,IACZnD,MAAO4sD,EAAO5sD,MACdyC,QAASmqD,EAAOnqD,QAChBE,QAASiqD,EAAOjqD,WAQlB,MANa,SAAT9F,IAEFhH,EAAIqH,UAAYhJ,KAAKg6e,sBAAsBr4e,IAE7CA,EAAImV,QAAU9W,KAAKoyQ,KAAK6qL,aAAanmb,SAAWnV,EAAImV,UAAW,UAAI4hD,EAAQ,UAAW/2D,EAAImV,SAC1FnV,EAAI8ta,eAAgB,UAAQ,CAAC,EAAGs5C,IAAqBpnd,EAAI8ta,cAAe/2W,EAAO+2W,eACxE9ta,CACT,EAMAi2e,EAAW13e,UAAUu4e,MAAQ,SAAU//a,GACrC,OAAO,UAAIA,EAAQ,OAAO,EAC5B,EAOAk/a,EAAW13e,UAAU85e,sBAAwB,SAAUthb,GACrD,OAAO14D,KAAKy4e,MAAM//a,GAAU14D,KAAK63e,oBAAsB73e,KAAK83e,mBAC9D,EACAF,EAAW13e,UAAUq4e,mBAAqB,SAAU5ve,GAClD,OAAO,UAAI3I,KAAKoyQ,KAAK/qJ,WAAY,CAAC,aAAc,aAAc1+G,GAAO,CAAC,EACxE,EAKAive,EAAW13e,UAAU83e,eAAiB,SAAUt/a,GAE9C,IAAIqpY,EAAK/hc,KAAK8e,MAAM9c,IAAIhC,KAAKi4e,YAAYv/a,IAEzC,GAAIqpY,EAAI,CACN,IAAIp5b,EAAO+vD,EAAO/vD,KACd2kG,EAAQttG,KAAKu4e,mBAAmB5ve,GAChChH,EAAM3B,KAAKw4e,iBAAiB7ve,EAAM+vD,EAAQ40C,GAE1C3rG,GACF,IAAKA,EAAK,CAAC,cAEbogc,EAAGviY,UAAUh6D,QAAO,WAAS,UAAS,CAAC,EAAG7D,GAAO,CAAC,GAAI,CACpD4S,UAAW5S,MAGT,UAASg2e,IAA0Bj/a,EAAO/vD,OAC5Co5b,EAAGviY,UAAUwL,QAEjB,MAEE+2X,EAAK/hc,KAAKs4e,iBAAiB5/a,MAEzBqpY,EAAGviY,UAAUl1D,QAGT,UAASqte,IAA0Bj/a,EAAO/vD,OAC5Co5b,EAAGviY,UAAUwL,UAInB,OAAO+2X,CACT,EAKA61C,EAAW13e,UAAUg4e,UAAY,SAAU91Z,GACzC,IAAI3hF,EAAQT,KACRi6e,EAAW,IAAIl7d,IAAI/e,KAAK8e,OAe5B,OAbAsjE,EAAQh6E,SAAQ,SAAU25b,EAAIlha,GAC5Bo5c,EAAS/3e,IAAI2+B,EAAKkha,EACpB,IAEAk4C,EAAS7xe,SAAQ,SAAU25b,EAAIlha,IAExB,UAAKpgC,EAAMi4D,QAAQ,SAAUA,GAChC,OAAO73B,IAAQpgC,EAAMw3e,YAAYv/a,EACnC,MACEqpY,EAAGviY,UAAUp9D,UACb63e,EAAS5zc,OAAOxF,GAEpB,IACOo5c,CACT,EAKArC,EAAW13e,UAAU+3e,YAAc,SAAUv/a,GAE3C,OAAOA,CAIT,EAEOk/a,CACT,CA7qB8B,CA6qB5BjyB,KACF,QCtrBO,SAASu0B,IAAgB5sY,EAAOxyE,GACrC,IAAIgga,GAAY,UAAQ,CAAC,GAAG,UAAIxtV,EAAO,CAAC,aAAc,OAAQ,YAAY,UAAIA,EAAO,CAAC,aAAc,OAAQxyE,KAC5G,OAAO,UAAIgga,EAAW,CAAC,QAAS,CAAC,EACnC,CASO,SAASq/C,IAAiBl8N,EAAYnlQ,EAAO44R,EAAK+pI,GACvD,IAAIt1X,EAAQ,GACRq7J,EAAQ1oM,EAAM8mZ,WAkDlB,OAjDI3hJ,EAAWotJ,SAEb7pN,EAAMjhN,KAAK,CACT4B,MAAO,EACP0e,KAAM,GACNi/Y,UAAW,KAGft+M,EAAM7vL,QAAO,SAAUyod,EAASC,EAAazU,GAC3C,IAAIz6V,EAAekvW,EAAYl4e,MAC/B,GAAIs5a,EACFt1X,EAAM5lD,KAAK,CACTmgB,OAAQ,CAACu9P,EAAWp/D,QAAgB,MAAR6yF,EAAc,CACxCzmS,EAAG,EACHC,EAAGigI,GACD,CACFlgI,EAAGkgI,EACHjgI,EAAG,IACD+yQ,EAAWp/D,QAAgB,MAAR6yF,EAAc,CACnCzmS,EAAG,EACHC,EAAGigI,GACD,CACFlgI,EAAGkgI,EACHjgI,EAAG,YAIP,GAAI06d,EAAc,CAChB,IACI0U,GADWF,EAAQj4e,MACOgpI,GAAgB,EAC9ChlF,EAAM5lD,KAAK,CACTmgB,OAAQ,CAACu9P,EAAWp/D,QAAgB,MAAR6yF,EAAc,CACxCzmS,EAAG,EACHC,EAAGove,GACD,CACFrve,EAAGqve,EACHpve,EAAG,IACD+yQ,EAAWp/D,QAAgB,MAAR6yF,EAAc,CACnCzmS,EAAG,EACHC,EAAGove,GACD,CACFrve,EAAGqve,EACHpve,EAAG,MAGT,CAEF,OAAOmve,CACT,GAAG74R,EAAM,IACFr7J,CACT,CAUO,SAASo0b,IAAmBt8N,EAAYk6H,EAAQC,EAAQqjC,EAAW/pI,GACxE,IAAI5gR,EAAQqnX,EAAO33W,OAAO3/B,OACtBslD,EAAQ,GACRq7J,EAAQ42L,EAAOwnB,WA4BnB,OA3BAp+M,EAAM7vL,QAAO,SAAUyod,EAASC,GAC9B,IAAIxuD,EAAWuuD,EAAUA,EAAQj4e,MAAQk4e,EAAYl4e,MACjDgpI,EAAekvW,EAAYl4e,MAC3Bm4e,GAAezuD,EAAW1gT,GAAgB,EAsB9C,MArBY,MAARumK,EAEFvrP,EAAM5lD,KAAK,CACTmgB,OAAQ,CAACu9P,EAAWp/D,QAAQ,CAC1B5zM,EAAGwwa,EAAYtwS,EAAemvW,EAC9Bpve,EAAG,IACD+yQ,EAAWp/D,QAAQ,CACrB5zM,EAAGwwa,EAAYtwS,EAAemvW,EAC9Bpve,EAAG,OAIPi7C,EAAM5lD,KAAK,CACTmgB,QAAQ,UAAI+f,MAAM3P,EAAQ,IAAI,SAAUi7B,EAAI7mB,GAC1C,OAAO+4O,EAAWp/D,QAAQ,CACxB5zM,EAAGi6B,EAAMpU,EACT5lB,EAAGuwa,EAAYtwS,EAAemvW,GAElC,MAGGD,CACT,GAAG74R,EAAM,IACFr7J,CACT,CAOO,SAASq0b,IAAS1/C,EAAWQ,GAClC,IAAIm/C,GAAW,UAAIn/C,EAAY,QAC/B,GAAiB,OAAbm/C,EACF,OAAO,EAET,IAAIC,GAAY,UAAI5/C,EAAW,QAC/B,aAAsBrka,IAAbgkd,GAAwC,OAAdC,EACrC,CCtHA,IAAIC,IAAW,CAAC,aAEZC,KAA2B,WAAS,UAAS,CAAC,EAAG7xB,KAAsB,CACzEr5C,OAAQ,OAUNmrE,IAAoB,SAAUn5e,GAEhC,SAASm5e,EAAKzoO,GACZ,IAAI3xQ,EAAQiB,EAAOE,KAAK5B,KAAMoyQ,IAASpyQ,KAQvC,OANAS,EAAMqe,MAAQ,IAAIC,IAElBte,EAAMq6e,cAAgBr6e,EAAM2xQ,KAAK4pL,SAAS7kC,IAAMopD,IAAI9uc,WACpDhR,EAAMs6e,kBAAoBt6e,EAAM2xQ,KAAK4pL,SAAS7kC,IAAM8kC,MAAMxqb,WAC1DhR,EAAMu6e,cAAgBv6e,EAAM2xQ,KAAK4pL,SAAS7kC,IAAMopD,IAAI9uc,WACpDhR,EAAMw6e,kBAAoBx6e,EAAM2xQ,KAAK4pL,SAAS7kC,IAAM8kC,MAAMxqb,WACnDhR,CACT,CAmiBA,OA9iBA,UAAUo6e,EAAMn5e,GAYhB8V,OAAOoxB,eAAeiyc,EAAK36e,UAAW,OAAQ,CAC5C8B,IAAK,WACH,MAAO,MACT,EACA2mC,YAAY,EACZsqB,cAAc,IAEhB4nb,EAAK36e,UAAUoK,KAAO,WAAa,EACnCuwe,EAAK36e,UAAU8qE,OAAS,WACtBhrE,KAAKwF,QACP,EAIAq1e,EAAK36e,UAAU4oH,OAAS,WACtB,IAAIroH,EAAQT,KACRi+Q,EAAaj+Q,KAAKoyQ,KAAK+vL,iBAC3B,UAAKnic,KAAK8hc,iBAAiB,SAAUC,GACnC,IAOI3/W,EAPA5iB,EAAYuiY,EAAGviY,UACjB1kC,EAAYina,EAAGjna,UACfnyB,EAAOo5b,EAAGp5b,KACVqrG,EAAQ+tV,EAAG/tV,MACT09L,EAAM19L,EAAM09L,IACd54R,EAAQk7F,EAAMl7F,MACd2ia,EAAYznU,EAAMynU,UAEpB,GAAI9ya,IAASyuZ,IAAe6kD,KACtBh+L,EAAWotJ,QACD,MAAR35H,EACFtvN,EAAU67L,EAAWutJ,aAAeivB,IAAcx8K,EAAYnjP,GAAamga,IAA0Bh9K,GACpF,MAARyzB,IACTtvN,EAAU67L,EAAWutJ,aAAeyvB,IAA0Bh9K,GAAcw8K,IAAcx8K,EAAYnjP,IAGxGsnD,EAAUq4W,IAAcx8K,EAAYnjP,QAEjC,GAAInyB,IAASyuZ,IAAeilD,KACjC,GAAIp+L,EAAWotJ,QAAS,CAOtBjpV,EAAU,CACRj8B,MANE83N,EAAWutJ,aACG,MAAR95H,EAAc6oM,IAAmBt8N,EAAYx9Q,EAAM2xQ,KAAK2tM,aAAa,GAAIjnc,EAAO2ia,EAAW/pI,GAAOyoM,IAAiBl8N,EAAYnlQ,EAAO44R,EAAK+pI,GAEnI,MAAR/pI,EAAcyoM,IAAiBl8N,EAAYnlQ,EAAO44R,EAAK+pI,GAAa8+D,IAAmBt8N,EAAYx9Q,EAAM2xQ,KAAK0kM,YAAah+b,EAAO2ia,EAAW/pI,GAKrJ7zQ,OAAQp9B,EAAM2xQ,KAAK+vL,gBAAgBj2B,YAEvC,MACE9pV,EAAU,CACRj8B,MAAOg0b,IAAiBl8N,EAAYnlQ,EAAO44R,EAAK+pI,IAItDj8W,EAAUh6D,OAAO48E,EACnB,GACF,EAIAy4Z,EAAK36e,UAAUsF,OAAS,WACtBxF,KAAK04D,OAAS14D,KAAKoyQ,KAAK6qL,aAAal5H,KACrC,IAAIm3K,EAAe,IAAIn8d,IACvB/e,KAAKm7e,YAAYD,GACjBl7e,KAAKo7e,YAAYF,GAGjB,IAAIjB,EAAW,IAAIl7d,IACnB/e,KAAK8e,MAAM1W,SAAQ,SAAU25b,EAAIlha,GAC3Bq6c,EAAap5c,IAAIjB,GACnBo5c,EAAS/3e,IAAI2+B,EAAKkha,GAGlBA,EAAGviY,UAAUp9D,SAEjB,IAEApC,KAAK8e,MAAQm7d,CACf,EACAY,EAAK36e,UAAUqP,MAAQ,WACrB7N,EAAOxB,UAAUqP,MAAM3N,KAAK5B,MAC5BA,KAAK8e,MAAMvP,QACXvP,KAAK86e,cAAcvre,QACnBvP,KAAK+6e,kBAAkBxre,QACvBvP,KAAKg7e,cAAczre,QACnBvP,KAAKi7e,kBAAkB1re,OACzB,EACAsre,EAAK36e,UAAUkC,QAAU,WACvBV,EAAOxB,UAAUkC,QAAQR,KAAK5B,MAC9BA,KAAK86e,cAAc3ne,QAAO,GAC1BnT,KAAK+6e,kBAAkB5ne,QAAO,GAC9BnT,KAAKg7e,cAAc7ne,QAAO,GAC1BnT,KAAKi7e,kBAAkB9ne,QAAO,EAChC,EAIA0ne,EAAK36e,UAAU4hc,cAAgB,WAC7B,IAAIC,EAAK,GAIT,OAHA/hc,KAAK8e,MAAM1W,SAAQ,SAAUjG,GAC3B4/b,EAAGxhc,KAAK4B,EACV,IACO4/b,CACT,EAKA84C,EAAK36e,UAAUi7e,YAAc,SAAUD,GAErC,IAAIpie,EAAQ9Y,KAAKoyQ,KAAK0kM,YACtB,GAAKh+b,IAASA,EAAM0sO,WAApB,CAGA,IAAI61P,EAAcjgD,IAAcp7b,KAAK04D,OAAQ5/C,EAAM+mH,OACnD,IAAoB,IAAhBw7W,EAAJ,CAGA,IAAIvgd,EAAYuga,IAAiBggD,EAAa,IAAUj6M,QACpDs1D,EAAQygE,IAAMopD,GACd7uK,EAAM,IACNzzB,EAAaj+Q,KAAKoyQ,KAAK+vL,gBACvBm5C,EAASt7e,KAAKu7e,MAAM,OAAQzie,EAAM+mH,OAClC27W,EAASx7e,KAAKu7e,MAAM,OAAQzie,EAAM+mH,OACtC,GAAIo+I,EAAWktJ,OAAQ,CAIrB,GAFIt3J,EAAO7zQ,KAAK8e,MAAM9c,IAAIs5e,GAIxB,IADI35e,EAAM3B,KAAKy7e,eAAe3ie,EAAOuie,EAAavgd,GACxC6/c,KACV9mO,EAAKr0M,UAAUh6D,OAAO7D,GACtBu5e,EAAah5e,IAAIo5e,EAAQznO,QAGzBA,EAAO7zQ,KAAK07e,eAAe5ie,EAAOuie,EAAa3kJ,EAAO57T,EAAW42Q,GACjE1xS,KAAK8e,MAAM5c,IAAIo5e,EAAQznO,GACvBqnO,EAAah5e,IAAIo5e,EAAQznO,GAK3B,GAFIhnF,EAAO7sL,KAAK8e,MAAM9c,IAAIw5e,GAIxB,IADI75e,EAAM3B,KAAK27e,eAAe7ie,EAAOuie,EAAavgd,EAAW42Q,GACnDipM,KACV9tT,EAAKrtH,UAAUh6D,OAAO7D,GACtBu5e,EAAah5e,IAAIs5e,EAAQ3uT,QAGzBA,EAAO7sL,KAAK47e,eAAe9ie,EAAOuie,EAAa3kJ,EAAO57T,EAAW42Q,MAE/D1xS,KAAK8e,MAAM5c,IAAIs5e,EAAQ3uT,GACvBquT,EAAah5e,IAAIs5e,EAAQ3uT,GAG/B,MAAO,GAAIoxF,EAAWotJ,QAAS,CAE7B,IAAIx3J,EAyBAhnF,EAvBJ,GAFIgnF,EAAO7zQ,KAAK8e,MAAM9c,IAAIs5e,GAEhB,CAER,IADI35e,EAAMs8Q,EAAWutJ,aAAexra,KAAKy7e,eAAe3ie,EAAOuie,EAAa,IAAUhvK,QAAUrsU,KAAK67e,iBAAiB/ie,EAAOuie,EAAavgd,GAChI6/c,KACV9mO,EAAKr0M,UAAUh6D,OAAO7D,GACtBu5e,EAAah5e,IAAIo5e,EAAQznO,EAC3B,KAAO,CAEL,GAAIoK,EAAWutJ,aAAc,CAC3B,IAAI,UAAY6vE,GAEd,OAIAxnO,EAAO7zQ,KAAK07e,eAAe5ie,EAAOuie,EAAa3kJ,EAAO,IAAUrqB,OAAQ36B,EAE5E,MACE79B,EAAO7zQ,KAAK87e,iBAAiBhje,EAAOuie,EAAa3kJ,EAAO57T,EAAW42Q,GAErE1xS,KAAK8e,MAAM5c,IAAIo5e,EAAQznO,GACvBqnO,EAAah5e,IAAIo5e,EAAQznO,EAC3B,CAIA,GAFIhnF,EAAO7sL,KAAK8e,MAAM9c,IAAIw5e,GAEhB,CACR,IAAI75e,EACJ,IADIA,EAAMs8Q,EAAWutJ,aAAexra,KAAK+7e,iBAAiBjje,EAAOuie,EAAa,IAAUhvK,OAAQ36B,GAAO1xS,KAAK27e,eAAe7ie,EAAOuie,EAAa,IAAUp5J,OAAQvwC,GACvJipM,KACV9tT,EAAKrtH,UAAUh6D,OAAO7D,GACtBu5e,EAAah5e,IAAIs5e,EAAQ3uT,EAC3B,KAAO,CAEL,GAAIoxF,EAAWutJ,aAAc,CAC3B,IAAI,UAAY6vE,GACd,OAEAxuT,EAAO7sL,KAAKg8e,iBAAiBlje,EAAOuie,EAAa3kJ,EAAO,IAAUrqB,OAAQ36B,EAE9E,MAEE7kH,EAAO7sL,KAAK47e,eAAe9ie,EAAOuie,EAAa3kJ,EAAO,IAAUzU,OAAQvwC,GAEtE7kH,IACF7sL,KAAK8e,MAAM5c,IAAIs5e,EAAQ3uT,GACvBquT,EAAah5e,IAAIs5e,EAAQ3uT,GAE7B,CACF,CAzFA,CAJA,CAgGF,EACAguT,EAAK36e,UAAUk7e,YAAc,SAAUF,GACrC,IAAIz6e,EAAQT,KAERggd,EAAUhgd,KAAKoyQ,KAAK2tM,cACxB,UAAKC,GAAS,SAAUlnc,EAAOosB,GAE7B,GAAKpsB,IAASA,EAAM0sO,WAApB,CAGA,IAAI3lH,EAAQ/mH,EAAM+mH,MACdo8W,EAAc7gD,IAAc36b,EAAMi4D,OAAQmnE,GAC9C,IAAoB,IAAhBo8W,EAAuB,CACzB,IAAIvlJ,EAAQygE,IAAMopD,GACd7uK,EAAM,IACN4pM,EAAS76e,EAAM86e,MAAM,OAAQ17W,GAC7B27W,EAAS/6e,EAAM86e,MAAM,OAAQ17W,GAC7Bo+I,EAAax9Q,EAAM2xQ,KAAK+vL,gBAC5B,GAAIlkL,EAAWktJ,OAAQ,CACrB,IAAIrwY,EAAYuga,IAAiB4gD,EAAqB,IAAR/2c,EAAY,IAAUuwJ,KAAO,IAAUC,OAIrF,GAFIm+E,EAAOpzQ,EAAMqe,MAAM9c,IAAIs5e,GAIzB,IADI35e,EAAMlB,EAAMg7e,eAAe3ie,EAAOmje,EAAanhd,GACzC6/c,KACV9mO,EAAKr0M,UAAUh6D,OAAO7D,GACtBu5e,EAAah5e,IAAIo5e,EAAQznO,QAGzBA,EAAOpzQ,EAAMi7e,eAAe5ie,EAAOmje,EAAavlJ,EAAO57T,EAAW42Q,GAClEjxS,EAAMqe,MAAM5c,IAAIo5e,EAAQznO,GACxBqnO,EAAah5e,IAAIo5e,EAAQznO,GAK3B,GAFIhnF,EAAOpsL,EAAMqe,MAAM9c,IAAIw5e,GAIzB,IADI75e,EAAMlB,EAAMk7e,eAAe7ie,EAAOmje,EAAanhd,EAAW42Q,GACpDipM,KACV9tT,EAAKrtH,UAAUh6D,OAAO7D,GACtBu5e,EAAah5e,IAAIs5e,EAAQ3uT,QAGzBA,EAAOpsL,EAAMm7e,eAAe9ie,EAAOmje,EAAavlJ,EAAO57T,EAAW42Q,MAEhEjxS,EAAMqe,MAAM5c,IAAIs5e,EAAQ3uT,GACxBquT,EAAah5e,IAAIs5e,EAAQ3uT,GAG/B,MAAO,GAAIoxF,EAAWotJ,QAAS,CAE7B,IAAIx3J,EAuBAhnF,EArBJ,GAFIgnF,EAAOpzQ,EAAMqe,MAAM9c,IAAIs5e,GAEjB,CAGR,IAFI35e,EAAMs8Q,EAAWutJ,aAAe/qa,EAAMo7e,iBAAiB/ie,EAAOmje,EAAa,IAAUh6J,QAAUxhV,EAAMg7e,eAAe3ie,EAAOmje,EAAa,IAAU5vK,QAE5IsuK,KACV9mO,EAAKr0M,UAAUh6D,OAAO7D,GACtBu5e,EAAah5e,IAAIo5e,EAAQznO,EAC3B,KAAO,CAEL,GAAIoK,EAAWutJ,aAAc,CAC3B,IAAI,UAAYywE,GACd,OAEApoO,EAAOpzQ,EAAMq7e,iBAAiBhje,EAAOmje,EAAavlJ,EAAO,IAAUzU,OAAQvwC,EAE/E,MACE79B,EAAOpzQ,EAAMi7e,eAAe5ie,EAAOmje,EAAavlJ,EAAO,IAAUrqB,OAAQ36B,GAE3EjxS,EAAMqe,MAAM5c,IAAIo5e,EAAQznO,GACxBqnO,EAAah5e,IAAIo5e,EAAQznO,EAC3B,CAIA,GAFIhnF,EAAOpsL,EAAMqe,MAAM9c,IAAIw5e,GAEjB,CACR,IAAI75e,EACJ,IADIA,EAAMs8Q,EAAWutJ,aAAe/qa,EAAMk7e,eAAe7ie,EAAOmje,EAAa,IAAUh6J,OAAQvwC,GAAOjxS,EAAMs7e,iBAAiBjje,EAAOmje,EAAa,IAAU5vK,OAAQ36B,GACzJipM,KACV9tT,EAAKrtH,UAAUh6D,OAAO7D,GACtBu5e,EAAah5e,IAAIs5e,EAAQ3uT,EAC3B,KAAO,CAEL,GAAIoxF,EAAWutJ,aAAc,CAC3B,IAAI,UAAYywE,GACd,OAEApvT,EAAOpsL,EAAMm7e,eAAe9ie,EAAOmje,EAAavlJ,EAAO,IAAUzU,OAAQvwC,EAE7E,MACE7kH,EAAOpsL,EAAMu7e,iBAAiBlje,EAAOmje,EAAavlJ,EAAO,IAAUrqB,OAAQ36B,GAEzE7kH,IACFpsL,EAAMqe,MAAM5c,IAAIs5e,EAAQ3uT,GACxBquT,EAAah5e,IAAIs5e,EAAQ3uT,GAE7B,CACF,CAGF,CA5FA,CA6FF,GACF,EASAguT,EAAK36e,UAAUw7e,eAAiB,SAAU5ie,EAAO4/C,EAAQg+R,EAAO57T,EAAW42Q,GAEzE,IAAI79B,EAAO,CACTr0M,UAAW,IAAI22X,IAASn2b,KAAKy7e,eAAe3ie,EAAO4/C,EAAQ59B,IAC3D47T,MAAOA,EACP57T,UAAWA,IAAc,IAAUuxS,OAAS,IAAUqsK,KAAO59c,EAC7DnyB,KAAMyuZ,IAAe6kD,KACrBjoW,MAAO,CACL09L,IAAKA,EACL54R,MAAOA,IAKX,OAFA+6P,EAAKr0M,UAAUt9D,IAAI,QAAS4W,EAAM+mH,OAClCg0I,EAAKr0M,UAAUl1D,OACRupQ,CACT,EACAgnO,EAAK36e,UAAU07e,eAAiB,SAAU9ie,EAAO4/C,EAAQg+R,EAAO57T,EAAW42Q,GACzE,IAAI/vS,EAAM3B,KAAK27e,eAAe7ie,EAAO4/C,EAAQ59B,EAAW42Q,GACxD,GAAI/vS,EAAK,CACP,IAAIkrL,EAAO,CACTrtH,UAAW,IAAI62X,IAAS10b,GACxB+0V,MAAOA,EACP57T,UAAW,IAAU49c,KACrB/ve,KAAMyuZ,IAAeilD,KACrBroW,MAAO,CACL09L,IAAKA,EACL54R,MAAOA,EACP2ia,WAAW,UAAI95a,EAAK,aAAa,KAIrC,OADAkrL,EAAKrtH,UAAUl1D,OACRuiL,CACT,CACF,EACAguT,EAAK36e,UAAU47e,iBAAmB,SAAUhje,EAAO4/C,EAAQg+R,EAAO57T,EAAW42Q,GAC3E,IAAI79B,EAAO,CACTr0M,UAAW,IAAI42X,IAAWp2b,KAAK67e,iBAAiB/ie,EAAO4/C,EAAQ59B,IAC/D47T,MAAOA,EACP57T,UAAWA,EACXnyB,KAAMyuZ,IAAe6kD,KACrBjoW,MAAO,CACL09L,IAAKA,EACL54R,MAAOA,IAKX,OAFA+6P,EAAKr0M,UAAUt9D,IAAI,QAAS4W,EAAM+mH,OAClCg0I,EAAKr0M,UAAUl1D,OACRupQ,CACT,EACAgnO,EAAK36e,UAAU87e,iBAAmB,SAAUlje,EAAO4/C,EAAQg+R,EAAO57T,EAAW42Q,GAC3E,IAAI/vS,EAAM3B,KAAK+7e,iBAAiBjje,EAAO4/C,EAAQ59B,EAAW42Q,GAC1D,GAAI/vS,EAAK,CACP,IAAIkrL,EAAO,CACTrtH,UAAW,IAAI82X,IAAW30b,GAC1B+0V,MAAOA,EACP57T,UAAW,IAAU49c,KACrB/ve,KAAMyuZ,IAAeilD,KACrBroW,MAAO,CACL09L,IAAKA,EACL54R,MAAOA,EACP2ia,WAAW,UAAI95a,EAAK,aAAa,KAIrC,OADAkrL,EAAKrtH,UAAUl1D,OACRuiL,CACT,CACF,EAQAguT,EAAK36e,UAAUu7e,eAAiB,SAAU3ie,EAAOwib,EAAYxga,GAC3D,IAAI9xB,GAAY,UAAIsyb,EAAY,CAAC,QAAUt7b,KAAKi7e,kBAAoBj7e,KAAKg7e,cACrE/8N,EAAaj+Q,KAAKoyQ,KAAK+vL,gBACvBh0B,EAASssB,IAAcx8K,EAAYnjP,GACnCohd,EAAY3gD,IAAiBzib,EAAOwib,GACpC6gD,EAAethD,IAAgB76b,KAAKoyQ,KAAK/qJ,WAAYvsF,GAErDshd,GAAkB,UAAI9gD,EAAY,CAAC,WAAY,UAAQ,CACzDvpY,MAAO,CACLjmD,MAAO,CACL+U,KAAMq7d,KAGT,CACDnqb,MAAOgpY,IAAoB/6b,KAAKoyQ,KAAK/qJ,WAAYvsF,EAAWwga,EAAWvpY,QACtEupY,GAAcA,EACb35b,GAAM,WAAQ,WAAS,UAAS,CAClCqH,UAAWA,GACVmla,GAAS,CACV3sN,MAAO1oM,EAAM8mZ,WAAW5uY,KAAI,SAAUmjQ,GACpC,MAAO,CACLzgR,GAAI,GAAGH,OAAO4gR,EAAK2rI,WACnB79Z,KAAMkyR,EAAKtzQ,KACX1e,MAAOgyR,EAAKhyR,MAEhB,IACAk5a,eAAgBp9J,EAAWotJ,SAAmE,EAAzDuvB,IAAsBzsB,EAAQlwJ,EAAWiuJ,aAAoB0uB,IAAsBzsB,EAAQlwJ,EAAWiuJ,aAC3I5+T,MAAO6uY,IACLA,EAAcC,GACdj7e,EAAKnB,KAAKmqd,cAAcxod,GAC1BmV,EAAU3V,EAAG2V,QACb24Z,EAAgBtua,EAAGsua,cACrB9ta,EAAI8ta,cAAgBA,EACpB9ta,EAAImV,QAAUA,EAEd,IAAIule,EAAiBhkL,IAAW81G,GAE5BmN,GAAsB,UAAI35a,EAAK,sBAAuB06e,EAAiB,EAAI,EAAI,IACnF,GAAI/gE,GAAuB,EAAG,CAE5B,IAAIghE,EAAct8e,KAAKoyQ,KAAKrgQ,YAAY/P,IAAI,SACxCu6e,EAAev8e,KAAKoyQ,KAAKrgQ,YAAY/P,IAAI,UAC7CL,EAAI25a,oBAAsBA,GAAuB+gE,EAAiBC,EAAcC,EAClF,CACA,OAAO56e,CACT,EASAk5e,EAAK36e,UAAUy7e,eAAiB,SAAU7ie,EAAOwib,EAAYxga,EAAW42Q,GACtE,GAAK8oM,IAAS3/C,IAAgB76b,KAAKoyQ,KAAK/qJ,WAAYvsF,GAAYwga,GAAhE,CAGA,IAAIkhD,EAAetC,IAAgBl6e,KAAKoyQ,KAAK/qJ,WAAYvsF,GAGrD2hd,GAAU,UAAQ,CACpBzze,WAAW,UAAIsyb,EAAY,CAAC,QAAUt7b,KAAK+6e,kBAAoB/6e,KAAK86e,eACnE0B,GAAc,UAAIlhD,EAAY,QAASt7b,KAAKmqd,cAAc7uB,IAE7D,OADAmhD,EAAQt2b,MAAQg0b,IAAiBn6e,KAAKoyQ,KAAK+vL,gBAAiBrpb,EAAO44R,GAAK,UAAI+qM,EAAS,aAAa,IAC3FA,CARP,CASF,EAQA5B,EAAK36e,UAAU27e,iBAAmB,SAAU/ie,EAAOwib,EAAYxga,GAC7D,IAAI9xB,GAAY,UAAIsyb,EAAY,CAAC,QAAUt7b,KAAKi7e,kBAAoBj7e,KAAKg7e,cACrE/8N,EAAaj+Q,KAAKoyQ,KAAK+vL,gBACvB3gP,EAAQ1oM,EAAM8mZ,WAAW5uY,KAAI,SAAUmjQ,GACzC,MAAO,CACLzgR,GAAI,GAAGH,OAAO4gR,EAAK2rI,WACnB79Z,KAAMkyR,EAAKtzQ,KACX1e,MAAOgyR,EAAKhyR,MAEhB,IACK2W,EAAMglZ,YAAc7jZ,KAAKoG,IAAI49P,EAAWj8P,SAAWi8P,EAAWl8P,cAA0B,EAAV9H,KAAK+B,IAElFwlM,EAAM3gN,SAAQ2gN,EAAMA,EAAM3gN,OAAS,GAAGoB,KAAO,IAEnD,IAAIi6e,EAAY3gD,IAAiBzib,EAAOwib,GACpC6gD,EAAethD,IAAgB76b,KAAKoyQ,KAAK/qJ,WAAY,IAAU46N,QAE/Dm6J,GAAkB,UAAI9gD,EAAY,CAAC,WAAY,UAAQ,CACzDvpY,MAAO,CACLjmD,MAAO,CACL+U,KAAMq7d,KAGT,CACDnqb,MAAOgpY,IAAoB/6b,KAAKoyQ,KAAK/qJ,WAAYvsF,EAAWwga,EAAWvpY,QACtEupY,GAAcA,EACb35b,GAAM,WAAQ,WAAS,UAAS,CAClCqH,UAAWA,GACViyb,IAA0Bj7b,KAAKoyQ,KAAK+vL,kBAAmB,CACxD3gP,MAAOA,EACP65N,eAAgB,EAChB/tU,MAAO6uY,IACLA,EAAcC,GACdj7e,EAAKnB,KAAKmqd,cAAcxod,GAC1BmV,EAAU3V,EAAG2V,QACb24Z,EAAgBtua,EAAGsua,cAGrB,OAFA9ta,EAAImV,QAAUA,EACdnV,EAAI8ta,cAAgBA,EACb9ta,CACT,EAQAk5e,EAAK36e,UAAU67e,iBAAmB,SAAUjje,EAAOwib,EAAYxga,EAAW42Q,GACxE,GAAK8oM,IAAS3/C,IAAgB76b,KAAKoyQ,KAAK/qJ,WAAYvsF,GAAYwga,GAAhE,CAKA,IAAIkhD,EAAetC,IAAgBl6e,KAAKoyQ,KAAK/qJ,WAAY,IAAUglN,QAC/DowK,GAAU,UAAQ,CACpBzze,WAAW,UAAIsyb,EAAY,CAAC,QAAUt7b,KAAK+6e,kBAAoB/6e,KAAK86e,cACpEj9c,OAAQ79B,KAAKoyQ,KAAK+vL,gBAAgBj2B,aACjCswE,GAAc,UAAIlhD,EAAY,QAASt7b,KAAKmqd,cAAc7uB,IACzD7f,GAAY,UAAIghE,EAAS,aAAa,GACtCC,EAAwB,MAARhrM,EAAc1xS,KAAKoyQ,KAAK2tM,aAAa,GAAK//c,KAAKoyQ,KAAK0kM,YAIxE,OAHA2lC,EAAQt2b,MAAQo0b,IAAmBv6e,KAAKoyQ,KAAK+vL,gBAAiBu6C,EAAe5je,EAAO2ia,EAAW/pI,GAGxF+qM,CAbP,CAcF,EACA5B,EAAK36e,UAAUq7e,MAAQ,SAAUt5e,EAAM4+B,GACrC,IAAIo9O,EAAaj+Q,KAAKoyQ,KAAK+vL,gBAE3B,MAAO,GAAG5ub,OAAOtR,EAAM,KAAKsR,OAAOstB,EAAK,KAAKttB,OAAO0qQ,EAAWt1Q,KACjE,EACAkye,EAAK36e,UAAUiqd,cAAgB,SAAUxod,GACvC,MAAO,CACLmV,QAAS9W,KAAKoyQ,KAAK6qL,aAAanmb,UAAW,UAAInV,EAAK,WACpD8ta,cAAe9ta,GAAOA,EAAI8ta,eAAgB,UAAQ,CAAC,EAAGmrE,IAA0Bj5e,EAAI8ta,eAAiBmrE,IAEzG,EACOC,CACT,CAhjBwB,CAgjBtBl1B,KACF,QCjkBO,SAASg3B,IAAoBC,EAAY9te,EAAMgsB,GACpD,OAAIA,IAAc,IAAUomQ,IACnB,CAAC07M,EAAW1se,KAAO0se,EAAW7ue,MAAQ,EAAIe,EAAKf,MAAQ,EAAG6ue,EAAWxse,MAE1E0qB,IAAc,IAAUsmQ,OACnB,CAACw7M,EAAW1se,KAAO0se,EAAW7ue,MAAQ,EAAIe,EAAKf,MAAQ,EAAG6ue,EAAWvse,KAAOvB,EAAKd,QAEtF8sB,IAAc,IAAU26J,KACnB,CAACmnT,EAAW1se,KAAM0se,EAAWxse,KAAOwse,EAAW5ue,OAAS,EAAIc,EAAKd,OAAS,GAE/E8sB,IAAc,IAAU46J,MACnB,CAACknT,EAAWzse,KAAOrB,EAAKf,MAAO6ue,EAAWxse,KAAOwse,EAAW5ue,OAAS,EAAIc,EAAKd,OAAS,GAE5F8sB,IAAc,IAAU29Z,UAAY39Z,IAAc,IAAUi+Z,SACvD,CAAC6jD,EAAWnmP,GAAGxrP,EAAG2xe,EAAWnmP,GAAGvrP,GAErC4vB,IAAc,IAAU49Z,WAAa59Z,IAAc,IAAU69Z,UACxD,CAACikD,EAAWlmP,GAAGzrP,EAAI6D,EAAKf,MAAO6ue,EAAWlmP,GAAGxrP,GAElD4vB,IAAc,IAAU+9Z,aAAe/9Z,IAAc,IAAUk+Z,YAC1D,CAAC4jD,EAAW10P,GAAGj9O,EAAG2xe,EAAW10P,GAAGh9O,EAAI4D,EAAKd,QAE9C8sB,IAAc,IAAUg+Z,cAAgBh+Z,IAAc,IAAU89Z,aAC3D,CAACgkD,EAAWjmP,GAAG1rP,EAAI6D,EAAKf,MAAO6ue,EAAWjmP,GAAGzrP,EAAI4D,EAAKd,QAExD,CAAC,EAAG,EACb,CCjBA,SAAS6ue,IAAgB5lO,EAASp3I,GAChC,OAAI,UAAUo3I,IACO,IAAZA,GAA4B,CAAC,GAE/B,UAAIA,EAAS,CAACp3I,GAAQo3I,EAC/B,CACA,SAAS,IAAagoM,GACpB,OAAO,UAAIA,EAAc,WAAY,IAAU79K,OACjD,CAKA,IAAI07M,IAAsB,SAAUp7e,GAElC,SAASo7e,EAAO1qO,GACd,IAAI3xQ,EAAQiB,EAAOE,KAAK5B,KAAMoyQ,IAASpyQ,KAEvC,OADAS,EAAMuI,UAAYvI,EAAM2xQ,KAAK4pL,SAAS7kC,IAAM8kC,MAAMxqb,WAC3ChR,CACT,CA0cA,OA/cA,UAAUq8e,EAAQp7e,GAMlB8V,OAAOoxB,eAAek0c,EAAO58e,UAAW,OAAQ,CAC9C8B,IAAK,WACH,MAAO,QACT,EACA2mC,YAAY,EACZsqB,cAAc,IAEhB6pb,EAAO58e,UAAUoK,KAAO,WAAa,EAIrCwye,EAAO58e,UAAU8qE,OAAS,WAExBhrE,KAAKwF,QACP,EAKAs3e,EAAO58e,UAAU4oH,OAAS,WACxB,IAAIroH,EAAQT,KACZA,KAAK+8e,WAAa/8e,KAAKoyQ,KAAKiqL,UAC5B,UAAKr8b,KAAK6qH,YAAY,SAAUk3U,GAC9B,IAAIviY,EAAYuiY,EAAGviY,UACjB1kC,EAAYina,EAAGjna,UACbguF,EAAS2wW,IAAgB3+b,GACzBkid,EAAgBx9a,EAAUx9D,IAAI,iBAC9Bi7e,EAAiBz9a,EAAUx9D,IAAI,kBAC/B4/R,EAAUnhS,EAAMy8e,yBAAyBp0X,EAAQk0X,EAAeC,GAChEp3c,EAAW25B,EAAUx9D,IAAI,YACzBguH,EAAYxwD,EAAUx9D,IAAI,aAE9Bw9D,EAAUh6D,OAAO,CACfqgC,SAAU5rB,KAAKC,IAAI0nR,EAAQ/7P,SAAUA,GAAY,GACjDmqF,UAAW/1G,KAAKC,IAAI0nR,EAAQ5xK,UAAWA,GAAa,KAEtD,IAAI51C,EAAU5a,EAAUx9D,IAAI,WACxBs6c,EAAa98Y,EAAUwwW,gBACvBlha,EAAO,IAAIspb,IAAKkkB,EAAWrxc,EAAGqxc,EAAWpxc,EAAGoxc,EAAWvuc,MAAOuuc,EAAWtuc,QAAQo3D,OAAOgV,GACxFj5E,GAAK,UAAOw7e,IAAoBl8e,EAAM2xQ,KAAKiqL,SAAUvtb,EAAMgsB,GAAY,GACzE1Y,EAAKjhB,EAAG,GACRkhB,EAAKlhB,EAAG,GACN+V,GAAK,UAAOyle,IAAoBl8e,EAAMs8e,WAAYjue,EAAMgsB,GAAY,GACtExY,EAAKpL,EAAG,GACRqL,EAAKrL,EAAG,GACNjM,EAAI,EACJC,EAAI,EAEJ4vB,EAAUymD,WAAW,QAAUzmD,EAAUymD,WAAW,WACtDt2E,EAAImX,EACJlX,EAAIqX,IAEJtX,EAAIqX,EACJpX,EAAImX,GAGNm9C,EAAU2wW,YAAY,CACpBlla,EAAGA,EAAImvE,EAAQ,GACflvE,EAAGA,EAAIkvE,EAAQ,KAEjB35E,EAAMs8e,WAAat8e,EAAMs8e,WAAWvkD,IAAI1pb,EAAMgsB,EAChD,GACF,EAIAgid,EAAO58e,UAAUsF,OAAS,WACxB,IAAI/E,EAAQT,KACZA,KAAK04D,OAAS14D,KAAKoyQ,KAAK6qL,aAAahmL,QAErC,IAAI70L,EAAU,CAAC,EA2Cf,IAAI,UAAIpiF,KAAK04D,OAAQ,UAAW,CAC9B,IAAIhlD,EAAK,gBACLype,EAAUn9e,KAAKo9e,iBAAiB1pe,GACpC,GAAIype,EAAS,CACX,IAAIE,EAAYr9e,KAAKs9e,oBAAe7md,OAAWA,OAAWA,EAAWz2B,KAAK04D,QAAQ,GAClF,IAAK2kb,EAAW,CAAC,cACjBF,EAAQ39a,UAAUh6D,OAAO63e,GACzBj7Z,EAAQ1uE,IAAM,CAChB,KAAO,CACL,IAAI8rD,EAAYx/D,KAAKu9e,wBAAmB9md,OAAWA,OAAWA,EAAWz2B,KAAK04D,QAC9E,GAAI8G,EAAW,CACbA,EAAUl1D,OACV,IAAIosV,EAAQygE,IAAM8kC,KACdnha,EAAY,IAAa96B,KAAK04D,QAClC14D,KAAK6qH,WAAWtqH,KAAK,CACnBmT,GAAIA,EACJ8rD,UAAWA,EACXk3R,MAAOA,EACP57T,UAAWA,EACXnyB,KAAMyuZ,IAAe8kD,OACrBloW,WAAOv9E,IAGT2rD,EAAQ1uE,IAAM,CAChB,CACF,CACF,MAEE1T,KAAKw9e,aAtEU,SAAoBn+R,EAAUj5M,EAAM0S,GACnD,IAAIpF,EAAKjT,EAAM86e,MAAMzie,EAAM+mH,OACvBs9W,EAAU18e,EAAM28e,iBAAiB1pe,GAErC,GAAIype,EAAS,CACX,IAAIx7e,OAAM,EACNs9c,EAAe49B,IAAgBp8e,EAAMi4D,OAAQ5/C,EAAM+mH,QAElC,IAAjBo/U,KACE,UAAIA,EAAc,UACpBt9c,EAAMlB,EAAM68e,eAAej+R,EAAUj5M,EAAM0S,EAAOmmc,GAAc,GAE5Dnmc,EAAMilZ,SAERp8Z,EAAMlB,EAAMg9e,iBAAiBp+R,EAAUj5M,EAAM0S,EAAOmmc,GAC3Cnmc,EAAMglZ,aAEfn8Z,EAAMlB,EAAM68e,eAAej+R,EAAUj5M,EAAM0S,EAAOmmc,KAKpDt9c,IAEF,IAAKA,EAAK,CAAC,cACXw7e,EAAQrid,UAAY,IAAamkb,GACjCk+B,EAAQ39a,UAAUh6D,OAAO7D,GAEzBygF,EAAQ1uE,IAAM,EAElB,KAAO,CAEL,IAAI2jQ,EAAS52Q,EAAMi9e,kBAAkBr+R,EAAUj5M,EAAM0S,GACjDu+P,IACFA,EAAO73M,UAAUl1D,OACjB7J,EAAMoqH,WAAWtqH,KAAK82Q,GAEtBj1L,EAAQ1uE,IAAM,EAElB,CACF,IAkCA,IAAIm3G,EAAa,IACjB,UAAK7qH,KAAK8hc,iBAAiB,SAAUC,GAC/B3/W,EAAQ2/W,EAAGrub,IACbm3G,EAAWtqH,KAAKwhc,GAEhBA,EAAGviY,UAAUp9D,SAEjB,IAEApC,KAAK6qH,WAAaA,CACpB,EACAiyX,EAAO58e,UAAUqP,MAAQ,WACvB7N,EAAOxB,UAAUqP,MAAM3N,KAAK5B,MAC5BA,KAAKgJ,UAAUuG,OACjB,EACAute,EAAO58e,UAAUkC,QAAU,WACzBV,EAAOxB,UAAUkC,QAAQR,KAAK5B,MAC9BA,KAAKgJ,UAAUmK,QAAO,EACxB,EAIA2pe,EAAO58e,UAAUogd,cAAgB,SAAUluM,GACzC,IAAI3xQ,EAAQT,KACRo/M,EAAagzD,EAAKhzD,WAItB,OAHA,UAAKgzD,EAAKoD,OAAO,SAAUvjQ,GACzBmtM,EAAaA,EAAW7rM,OAAO9S,EAAM6/c,cAAcruc,GACrD,IACOmtM,CACT,EAKA09R,EAAO58e,UAAUs9e,YAAc,SAAUG,GAGvC,GAFiB39e,KAAKoyQ,KAAK0sM,gBAAkB9+c,KAAKoyQ,KAElD,CAIA,IAAIhzD,EAAap/M,KAAKsgd,cAActgd,KAAKoyQ,MACrCwrO,EAAS,CAAC,GACd,UAAKx+R,GAAY,SAAUC,GACzB,IAAIv0H,EAAau0H,EAASshQ,sBAC1B,UAAK71X,GAAY,SAAU1kF,GACzB,IAAI0S,EAAQ1S,EAAKk7S,SAASl7S,EAAKuC,MAE1BmQ,GAAwB,aAAfA,EAAMnQ,OAAuBi1e,EAAO9ke,EAAM+mH,SAGxD89W,EAAOt+R,EAAUj5M,EAAM0S,GACvB8ke,EAAO9ke,EAAM+mH,QAAS,EACxB,GACF,GAfA,CAgBF,EAOAi9W,EAAO58e,UAAUw9e,kBAAoB,SAAUr+R,EAAUj5M,EAAM0S,GAC7D,IAAI0mD,EACAy/Y,EAAe49B,IAAgB78e,KAAK04D,OAAQ5/C,EAAM+mH,OAClD62N,EAAQygE,IAAM8kC,KACdnha,EAAY,IAAamkb,GAe7B,IAbqB,IAAjBA,KACE,UAAIA,EAAc,UACpBz/Y,EAAYx/D,KAAKu9e,mBAAmBl+R,EAAUj5M,EAAM0S,EAAOmmc,GAEvDnmc,EAAMilZ,SAERv+V,EAAYx/D,KAAK69e,uBAAuBx+R,EAAUj5M,EAAM0S,EAAOmmc,GACtDnmc,EAAMglZ,aAEft+V,EAAYx/D,KAAK89e,qBAAqBz+R,EAAUj5M,EAAM0S,EAAOmmc,KAI/Dz/Y,EAEF,OADAA,EAAUt9D,IAAI,QAAS4W,EAAM+mH,OACtB,CACLnsH,GAAI1T,KAAKu7e,MAAMzie,EAAM+mH,OACrBrgE,UAAWA,EACXk3R,MAAOA,EACP57T,UAAWA,EACXnyB,KAAMyuZ,IAAe8kD,OACrBloW,MAAO,CACLl7F,MAAOA,GAIf,EAQAgke,EAAO58e,UAAUq9e,mBAAqB,SAAUl+R,EAAUj5M,EAAM0S,EAAOmmc,GAErE,IAAIt9c,EAAM3B,KAAKs9e,eAAej+R,EAAUj5M,EAAM0S,EAAOmmc,GAAc,GACnE,OAAO,IAAI1oB,IAAe50b,EAC5B,EAQAm7e,EAAO58e,UAAU29e,uBAAyB,SAAUx+R,EAAUj5M,EAAM0S,EAAOmmc,GACzE,IAAIt9c,EAAM3B,KAAKy9e,iBAAiBp+R,EAAUj5M,EAAM0S,EAAO,IAAKmmc,EAAc,CAAC,WAC3E,OAAO,IAAIzoB,IAAiB70b,EAC9B,EAQAm7e,EAAO58e,UAAU49e,qBAAuB,SAAUz+R,EAAUj5M,EAAM0S,EAAOmmc,GACvE,IAAIt9c,EAAM3B,KAAKs9e,eAAej+R,EAAUj5M,EAAM0S,EAAOmmc,GACrD,OAAO,IAAI1oB,IAAe50b,EAC5B,EAQAm7e,EAAO58e,UAAUu9e,iBAAmB,SAAUp+R,EAAUj5M,EAAM0S,EAAOmmc,GACnE,IAAIz9P,EAAQ1oM,EAAM8mZ,WACdm+E,GAAa,UAAKv8R,GAAO,SAAU2yE,GACrC,OAAsB,IAAfA,EAAKhyR,KACd,IACI67e,GAAa,UAAKx8R,GAAO,SAAU2yE,GACrC,OAAsB,IAAfA,EAAKhyR,KACd,IACIgkD,EAAQq7J,EAAMxwL,KAAI,SAAUmjQ,GAC9B,IAAIhyR,EAAQgyR,EAAKhyR,MACf29Z,EAAY3rI,EAAK2rI,UACfm+E,EAAY73e,EAAKorV,QAAQ14U,EAAMwL,OAAOniB,IAAQknB,KAAK,IACvD,MAAO,CACLlnB,MAAO29Z,EACPm+E,UAAWA,EACXlqc,MAAOkqc,EACP/jB,WAAY/3d,EAEhB,IACK47e,GACH53b,EAAM5lD,KAAK,CACT4B,MAAO2W,EAAMoB,IACb+je,UAAW73e,EAAKorV,QAAQ14U,EAAMwL,OAAO,IAAI+E,KAAK,IAC9C0qB,MAAO3tC,EAAKorV,QAAQ14U,EAAMwL,OAAO,IAAI+E,KAAK,IAC1C6wc,WAAY,IAGX8jB,GACH73b,EAAM5lD,KAAK,CACT4B,MAAO2W,EAAMqB,IACb8je,UAAW73e,EAAKorV,QAAQ14U,EAAMwL,OAAO,IAAI+E,KAAK,IAC9C0qB,MAAO3tC,EAAKorV,QAAQ14U,EAAMwL,OAAO,IAAI+E,KAAK,IAC1C6wc,WAAY,IAIhB/za,EAAM5zC,MAAK,SAAU4L,EAAG8E,GACtB,OAAO9E,EAAEhc,MAAQ8gB,EAAE9gB,KACrB,IAGA,IAAI+7e,EAAgB,CAClBhke,KAAK,UAAKisC,GAAOhkD,MACjBgY,KAAK,UAAKgsC,GAAOhkD,MACjB60C,OAAQ,GACR+zY,KAAM,CACJpib,KAAMvC,EAAKuC,MAEbmib,MAAO,CAAC,GAEQ,SAAd1kb,EAAKuC,OACPu1e,EAAcpzD,MAAQ,CACpBh/a,MAAO,CAGL8vC,KAAoB,SAAdx1C,EAAKuC,KAAkB3I,KAAKoyQ,KAAK/qJ,WAAW49M,kBAAexuS,KAIrD,UAAdrwB,EAAKuC,OACPu1e,EAAclnc,OAASmP,EAAMn1B,KAAI,SAAUvZ,GACzC,OAAOA,EAAKwme,SACd,KAEF,IAAIj1e,EAAYhJ,KAAKgJ,UAGjB8/G,EAAS2wW,IADG,IAAaxa,IAEzBltZ,GAAQ,UAAIktZ,EAAc,SAY9B,OAXIltZ,IACFA,GAAQ,UAAQ,CACdlxC,KAAM,IAAQ/H,IACbi5C,IAGLmsb,EAAcl1e,UAAYA,EAC1Bk1e,EAAcp1X,OAASA,EACvBo1X,EAAcnsb,MAAQA,EACtBmsb,EAAczuE,cAAgBs5C,IAEvB/od,KAAKm+e,eAAeD,EAAej/B,EAAc,aAC1D,EASA69B,EAAO58e,UAAUo9e,eAAiB,SAAUj+R,EAAUj5M,EAAM0S,EAAOmmc,EAAcvjc,GAC/E,IAAI1S,EAAYhJ,KAAKgJ,UAEjB8xB,GAAY,UAAImkb,EAAc,WAAY,IAAU79K,QACpDm5L,EAAcD,IAAkBt6d,KAAKoyQ,KAAK/qJ,WAAYvsF,GAEtD6+b,GAAc,UAAIY,EAAa,CAAC,WAChCX,GAAa,UAAI3a,EAAc,UAC/Bn2V,EAAS2wW,IAAgB3+b,GACzBsjd,GAAqB,UAAI7jB,EAAa,CAAC,kBACvC8jB,GAAoB,UAAIp/B,EAAc,iBACtC94Z,EAAQzqC,E1IhST,SAA8Bi+c,EAAaC,EAAYjR,GAE5D,OAAOA,EAAY33b,KAAI,SAAUvZ,EAAMzP,GACrC,IAAIsgb,EAAYsxC,GACZ,UAAWtxC,KACbA,EAAYA,EAAU7wa,EAAKxV,KAAM+F,GAAO,UAAQ,CAAC,EAAG2xd,EAAalid,KAEnE,IAAI6me,GAAa,UAAW7me,EAAKgkS,QAAUhkS,EAAKgkS,OAAOhkS,EAAKxV,KAAM+F,GAAO,UAAQ,CAAC,EAAG2xd,EAAalid,IAASA,EAAKgkS,OAC5GA,GAAS,UAAQ,CAAC,EAAGk+K,EAAarxC,EAAWg2D,GAGjD,OAFA9kB,IAAgB/9K,GAChBhkS,EAAKgkS,OAASA,EACPhkS,CACT,GACF,C0ImRyB8me,CAAqB5kB,EAAaC,EAAY3a,EAAa94Z,OAASuza,IAAe15d,KAAKoyQ,KAAM/yD,EAAUj5M,EAAMuzd,EAAaC,GAC5I7na,GAAQ,UAAIktZ,EAAc,SAC1BltZ,IACFA,GAAQ,UAAQ,CACdlxC,KAAM/H,EAAQ,IAAQA,GAAS,IAC9Bi5C,IAEL,IAAIirb,GAAgB,UAAI/9B,EAAc,iBAClCg+B,GAAiB,UAAIh+B,EAAc,kBACnCu/B,EAAUx+e,KAAKk9e,yBAAyBp0X,EAAQk0X,EAAeC,GACnEuB,EAAQx1e,UAAYA,EACpBw1e,EAAQ11X,OAASA,EACjB01X,EAAQr4b,MAAQA,EAChBq4b,EAAQzsb,MAAQA,EAChBysb,EAAQ/uE,cAAgBs5C,IACxBy1B,EAAQn3D,eAAgB,UAAQ,CAAC,EAAG+2D,EAAoBC,GACxD,IAAII,EAAcz+e,KAAKm+e,eAAeK,EAASv/B,EAAcnkb,GACzD2jd,EAAYhgI,UAEdggI,EAAYt4b,MAAMv1B,UAEpB,IAAIo2Z,GAAe,UAAIy3D,EAAa,gBAKpC,OAJIz3D,GAAgBA,GAAgB,IAElCy3D,EAAYz3D,aAAehnb,KAAKoyQ,KAAKiqL,SAAStub,MAAQi5a,GAEjDy3D,CACT,EAOA3B,EAAO58e,UAAUi+e,eAAiB,SAAUK,EAASv/B,EAAcnkb,GACjE,IAAIqwB,EAAWrwB,EAAUxR,MAAM,KAAK,GAChCysb,EAAcukB,IAAkBt6d,KAAKoyQ,KAAK/qJ,WAAYl8D,GAC1D,OAAO,UAAQ,CAAC,EAAG4qZ,EAAayoC,EAASv/B,EAC3C,EAKA69B,EAAO58e,UAAUq7e,MAAQ,SAAU16c,GACjC,MAAO,GAAGttB,OAAOvT,KAAKiC,KAAM,KAAKsR,OAAOstB,EAC1C,EAKAi8c,EAAO58e,UAAUk9e,iBAAmB,SAAU1pe,GAC5C,OAAO,UAAK1T,KAAK6qH,YAAY,SAAUk3U,GACrC,OAAOA,EAAGrub,KAAOA,CACnB,GACF,EACAope,EAAO58e,UAAUg9e,yBAA2B,SAAUp0X,EAAQk0X,EAAeC,QACrD,IAAlBD,IACFA,E1TtVqC,U0TwVhB,IAAnBC,IACFA,E1TzVqC,K0T2VvC,IAAI97e,EAAKnB,KAAKoyQ,KAAKiqL,SACjBqiD,EAAKv9e,EAAG4M,MACR++b,EAAK3rc,EAAG6M,OAGV,MAAkB,aAAX86G,EAAwB,CAC7BjjF,SAAU64c,EAAK1B,EACfhtX,UAAW88U,GACT,CACFjna,SAAU64c,EACV1uX,UAAW88U,EAAKmwC,EAEpB,EACOH,CACT,CAjd0B,CAidxBn3B,KACF,QCpeIjzB,IAAsB,SAAUhxb,GAElC,SAASgxb,EAAOtgL,GACd,IAAI3xQ,EAAQiB,EAAOE,KAAK5B,KAAMoyQ,IAASpyQ,KA2BvC,OA1BAS,EAAMk+e,WAAa,OAInBl+e,EAAMm+e,aAAe,WACnBn+e,EAAM8O,OACR,EAKA9O,EAAMo+e,cAAgB,SAAU5se,GAC9B,IAAI9Q,GAAK,UAAO8Q,EAAG,GACjBiI,EAAM/Y,EAAG,GACTgZ,EAAMhZ,EAAG,GACXV,EAAMimB,MAAQxM,EACdzZ,EAAMouB,IAAM1U,EACZ1Z,EAAMq+e,eAAe5ke,EAAKC,EAC5B,EACA1Z,EAAMuI,UAAYvI,EAAM2xQ,KAAK4pL,SAAS7kC,IAAM8kC,MAAMxqb,WAClDhR,EAAMk+e,YAAa,UAASl+e,EAAMo+e,cAAe,GAAI,CACnDx5c,SAAS,IAEX5kC,EAAMsN,MAAQ,EACdtN,EAAM2xQ,KAAKjyQ,GAAGo3Z,IAAiBooD,mBAAoBl/c,EAAMm+e,cACzDn+e,EAAM2xQ,KAAKjyQ,GAAGo3Z,IAAiBiuD,mBAAoB/kd,EAAMm+e,cAClDn+e,CACT,CAkSA,OAhUA,UAAUiyb,EAAQhxb,GA+BlB8V,OAAOoxB,eAAe8pZ,EAAOxyb,UAAW,OAAQ,CAC9C8B,IAAK,WACH,MAAO,QACT,EACA2mC,YAAY,EACZsqB,cAAc,IAEhBy/X,EAAOxyb,UAAUkC,QAAU,WACzBV,EAAOxB,UAAUkC,QAAQR,KAAK5B,MAC9BA,KAAKoyQ,KAAK9wQ,IAAIi2Z,IAAiBooD,mBAAoB3/c,KAAK4+e,cACxD5+e,KAAKoyQ,KAAK9wQ,IAAIi2Z,IAAiBiuD,mBAAoBxld,KAAK4+e,aAC1D,EAIAlsD,EAAOxyb,UAAUoK,KAAO,WAAa,EAIrCoob,EAAOxyb,UAAU8qE,OAAS,WACxBhrE,KAAK04D,OAAS14D,KAAKoyQ,KAAK6qL,aAAah0U,OACrC,IAAI9nH,EAAKnB,KAAK++e,eACZr4d,EAAQvlB,EAAGulB,MACXmI,EAAM1tB,EAAG0tB,KACP,UAAM7uB,KAAK0mB,SACb1mB,KAAK0mB,MAAQA,EACb1mB,KAAK6uB,IAAMA,GAEb,IAAIqqd,EAAWl5e,KAAKoyQ,KAAK6qL,aAAav3a,KAClC1lB,KAAK04D,UAAW,UAAQwgb,GACtBl5e,KAAKipH,OAEPjpH,KAAKipH,OAASjpH,KAAKg/e,gBAGnBh/e,KAAKipH,OAASjpH,KAAKi/e,eAEnBj/e,KAAKipH,OAAOzpD,UAAUr/D,GAAG,eAAgBH,KAAK2+e,aAG5C3+e,KAAKipH,SAEPjpH,KAAKipH,OAAOzpD,UAAUp9D,UACtBpC,KAAKipH,YAASxyF,EAKpB,EAIAi8Z,EAAOxyb,UAAU4oH,OAAS,WACxB,IAAIroH,EAAQT,KAUZ,GATIA,KAAK04D,SAAW14D,KAAK+N,QACvB/N,KAAKk/e,gBACL57e,YAAW,WAEJ7C,EAAM2xQ,KAAKvwQ,WACdpB,EAAMq+e,eAAer+e,EAAMimB,MAAOjmB,EAAMouB,IAE5C,GAAG,IAED7uB,KAAKipH,OAAQ,CACf,IAAIl7G,EAAQ/N,KAAKoyQ,KAAKwlK,eAAe7pa,MAEjCqsE,EAAUp6E,KAAKipH,OAAOzpD,UAAUx9D,IAAI,WACpCb,GAAK,UAAOi5E,EAAS,GACvB8pG,EAAa/iL,EAAG,GAGhBorL,GAFeprL,EAAG,GACFA,EAAG,GACLA,EAAG,IACfm7c,EAAat8c,KAAKipH,OAAOzpD,UAAUwwW,gBACnClha,EAAO,IAAIspb,IAAKkkB,EAAWrxc,EAAGqxc,EAAWpxc,EAAG+O,KAAKC,IAAIoic,EAAWvuc,MAAOA,GAAQuuc,EAAWtuc,QAAQo3D,OAAOgV,GACzGljE,EAAKlX,KAAKm/e,cAAcn/e,KAAK0mB,MAAO1mB,KAAK6uB,KAC3C+ka,EAAU18a,EAAG08a,QACbC,EAAU38a,EAAG28a,QACX18a,GAAK,UAAOwle,IAAoB38e,KAAKoyQ,KAAKiqL,SAAUvtb,EAAM,IAAUsyR,QAAS,GAE/E/+Q,GADKlL,EAAG,GACHA,EAAG,IACNmnB,GAAK,UAAOq+c,IAAoB38e,KAAKoyQ,KAAKwlK,eAAgB9oa,EAAM,IAAUsyR,QAAS,GACrF9+Q,EAAKgc,EAAG,GACHA,EAAG,GAEVt+B,KAAKipH,OAAOzpD,UAAUh6D,QAAO,WAAS,UAAS,CAAC,EAAGxF,KAAK++e,gBAAiB,CACvE9ze,EAAGqX,EAAKiqK,EACRrhL,EAAGmX,EAAK6hK,EACRn2K,MAAO/N,KAAK+N,MACZ2Y,MAAO1mB,KAAK0mB,MACZmI,IAAK7uB,KAAK6uB,IACV+ka,QAASA,EACTC,QAASA,KAEX7zb,KAAKoyQ,KAAKiqL,SAAWr8b,KAAKoyQ,KAAKiqL,SAAS7D,IAAI1pb,EAAM,IAAUsyR,OAC9D,CACF,EAIAsxJ,EAAOxyb,UAAUsF,OAAS,WAExBxF,KAAKgrE,QACP,EAIA0nX,EAAOxyb,UAAU++e,aAAe,WAC9B,IAAIt9e,EAAM3B,KAAK++e,eAEXv/a,EAAY,IAAI,KAAgB,UAAS,CAC3Cx2D,UAAWhJ,KAAKgJ,WACfrH,IAEH,OADA69D,EAAUl1D,OACH,CACLk1D,UAAWA,EACXk3R,MAAOygE,IAAM8kC,KACbnha,UAAW,IAAUsmQ,OACrBz4R,KAAMyuZ,IAAe+kD,OAEzB,EAIAzpB,EAAOxyb,UAAU8+e,aAAe,WAC9B,IAAIr9e,EAAM3B,KAAK++e,eACf,GAAI/+e,KAAK+N,MAAO,CACd,IAAI5M,EAAKnB,KAAKm/e,cAAcn/e,KAAK0mB,MAAO1mB,KAAK6uB,KAC3C+ka,EAAUzyb,EAAGyyb,QACbC,EAAU1yb,EAAG0yb,QACflyb,GAAM,WAAS,UAAS,CAAC,EAAGA,GAAM,CAChCoM,MAAO/N,KAAK+N,MACZ2Y,MAAO1mB,KAAK0mB,MACZmI,IAAK7uB,KAAK6uB,IACV+ka,QAASA,EACTC,QAASA,GAEb,CAEA,OADA7zb,KAAKipH,OAAOzpD,UAAUh6D,OAAO7D,GACtB3B,KAAKipH,MACd,EAIAypU,EAAOxyb,UAAUg/e,cAAgB,WAC/B,IAAInxe,EAAQ/N,KAAK++e,eAAehxe,MAChC/N,KAAK+N,MAAQA,CACf,EAIA2kb,EAAOxyb,UAAU6+e,aAAe,WAC9B,IAAIp9e,EAAM,CACRqM,OAAQ,GACR0Y,MAAO,EACPmI,IAAK,EACL+ka,QAAS,GACTC,QAAS,GACT5ob,EAAG,EACHC,EAAG,EACH6C,MAAO/N,KAAKoyQ,KAAKwlK,eAAe7pa,OAElC,IAAI,UAAS/N,KAAK04D,QAAS,CAEzB,IAAIi7X,GAAW,UAAS,CACtBjua,KAAM1lB,KAAKigK,YACV,UAAIjgK,KAAK04D,OAAQ,WAAY,CAAC,IAEjC/2D,GAAM,UAAQ,CAAC,EAAGA,EAAK3B,KAAKo/e,kBAAmBp/e,KAAK04D,QAEpD/2D,GAAM,WAAS,UAAS,CAAC,EAAGA,GAAM,CAChCgyb,SAAUA,GAEd,CAGA,OAFAhyb,EAAI+kB,OAAQ,UAAMzM,KAAKC,KAAI,UAAMvY,EAAI+kB,OAAS,EAAI/kB,EAAI+kB,OAAO,UAAM/kB,EAAIktB,KAAO,EAAIltB,EAAIktB,KAAM,EAAG,GAC/FltB,EAAIktB,KAAM,UAAM5U,KAAKE,KAAI,UAAMxY,EAAI+kB,OAAS,EAAI/kB,EAAI+kB,OAAO,UAAM/kB,EAAIktB,KAAO,EAAIltB,EAAIktB,KAAM,EAAG,GACtFltB,CACT,EAIA+wb,EAAOxyb,UAAU+/J,QAAU,WACzB,IAAIv6I,EAAO1lB,KAAKoyQ,KAAK6qL,aAAav3a,KAEhC0yX,GADO,UAAOp4Y,KAAKoyQ,KAAK2tM,aAAc,GAC1B,GACVpH,EAAc34c,KAAKoyQ,KAAKwmM,iBAC5B,GAAID,EAAY93c,OAAQ,CACtB,IAAIqW,EAAKyhc,EAAY,GACnBkhB,EAAU3id,EAAG2oH,MACbknS,EAAU7vZ,EAAGsqM,MACf,OAAO97L,EAAKiM,QAAO,SAAUu3H,EAAKC,GAIhC,OAHIA,EAAI0wU,KAAa9yD,EAAQ,IAC3B79Q,EAAI3oJ,KAAK4oJ,EAAIivP,EAAOv4Q,QAEfqpB,CACT,GAAG,GACL,CACA,OAAOxjI,EAAKsL,KAAI,SAAUmnM,GACxB,OAAOA,EAAMigL,EAAOv4Q,QAAU,CAChC,GACF,EAIA6yT,EAAOxyb,UAAUk/e,gBAAkB,WACjC,IAAI9xY,EAAQttG,KAAKoyQ,KAAK/qJ,WACtB,OAAO,UAAI/Z,EAAO,CAAC,aAAc,SAAU,UAAW,CAAC,EACzD,EAMAolV,EAAOxyb,UAAUi/e,cAAgB,SAAUjle,EAAKC,GAC9C,IAAIuL,EAAO1lB,KAAKoyQ,KAAK6qL,aAAav3a,KAC9ByyX,EAASn4Y,KAAKoyQ,KAAK0kM,YAEnBt2a,GAAS,SAAY9a,EAAMyyX,EAAOt4Q,OAElCs4Q,EAAO4lB,WACTv9X,EAASA,EAAOjuB,QAElB,IAAI45d,EAAyB3rc,EACzB6+c,GAAW,UAAK35d,GACpB,IAAKyyX,IAAWknG,EACd,MAAO,CAAC,EAGV,IAAIC,GAAa,UAAKnT,GAClB5lE,EAAWtsZ,KAAKwoB,MAAMvoB,GAAOole,EAAa,IAC1CC,EAAWtle,KAAKwoB,MAAMtoB,GAAOmle,EAAa,IAC1C1rD,GAAU,UAAIu4C,EAAS,CAAC5lE,IACxBstB,GAAU,UAAIs4C,EAAS,CAACoT,IACxBx1J,EAAY/pV,KAAK++e,eAAeh1J,UAKpC,OAJIA,IACF6pG,EAAU7pG,EAAU6pG,EAASlua,EAAK6gZ,GAAWA,GAC7CstB,EAAU9pG,EAAU8pG,EAASnua,EAAK65d,GAAWA,IAExC,CACL3rD,QAASA,EACTC,QAASA,EAEb,EAMAnB,EAAOxyb,UAAU4+e,eAAiB,SAAU5ke,EAAKC,GAC/C,IAAIuL,EAAO1lB,KAAKoyQ,KAAK6qL,aAAav3a,KAC9ByyX,EAASn4Y,KAAKoyQ,KAAK0kM,YACnBuoC,GAAW,UAAK35d,GACpB,GAAKyyX,GAAWknG,EAAhB,CAGA,IACI7+c,GAAS,SAAY9a,EAAMyyX,EAAOt4Q,OAElC2/W,EAAex/e,KAAKoyQ,KAAK0kM,YAAY/4C,SAAWv9X,EAAOjuB,MAAK,SAAU4L,EAAG8E,GAC3E,OAAOhB,OAAO9D,GAAK8D,OAAOgB,EAC5B,IAAKud,EACD2rc,EAAyBqT,EACzBF,GAAa,UAAKnT,GAClB5lE,EAAWtsZ,KAAKwoB,MAAMvoB,GAAOole,EAAa,IAC1CC,EAAWtle,KAAKwoB,MAAMtoB,GAAOmle,EAAa,IAE9Ct/e,KAAKoyQ,KAAK7hQ,OAAO4nY,EAAOt4Q,OAAO,SAAU19H,EAAOg2N,GAC9C,IAAIjzL,EAAMinc,EAAQj5d,QAAQ/Q,GAC1B,QAAO+iC,GAAO,IAAI/F,IAAU+F,EAAKqhY,EAAUg5E,EAC7C,IACAv/e,KAAKoyQ,KAAKpnM,QAAO,EAhBjB,CAiBF,EAIA0nX,EAAOxyb,UAAU4hc,cAAgB,WAC/B,OAAO9hc,KAAKipH,OAAS,CAACjpH,KAAKipH,QAAU,EACvC,EAIAypU,EAAOxyb,UAAUqP,MAAQ,WACnBvP,KAAKipH,SACPjpH,KAAKipH,OAAOzpD,UAAUp9D,UACtBpC,KAAKipH,YAASxyF,GAEhBz2B,KAAK+N,MAAQ,EACb/N,KAAK0mB,WAAQ+P,EACbz2B,KAAK6uB,SAAM4H,CACb,EACOi8Z,CACT,CAlU0B,CAkUxBizB,KACF,QCnUI5wB,IAAyB,SAAUrzb,GAErC,SAASqzb,EAAU3iL,GACjB,IAAI3xQ,EAAQiB,EAAOE,KAAK5B,KAAMoyQ,IAASpyQ,KAyBvC,OAxBAS,EAAMk+e,WAAa,OACnBl+e,EAAMm+e,aAAe,WACnBn+e,EAAM8O,OACR,EACA9O,EAAMo+e,cAAgB,SAAU19e,GAC9B,IAAIyE,EAAQzE,EAAGyE,MACXkR,EAAUrW,EAAMg/e,uBAAuB3oe,QAC3CrW,EAAMmF,OAAQ,UAAMA,EAAO,EAAG,GAC9B,IAAI85e,EAAkBj/e,EAAM2xQ,KAAK6qL,aAAanmb,QACzCA,GACHrW,EAAM2xQ,KAAKt7P,SAAQ,GAErBrW,EAAMq+e,eAAer+e,EAAMk/e,kBAAkB,GAC7Cl/e,EAAM2xQ,KAAKt7P,QAAQ4oe,EACrB,EACAj/e,EAAMuI,UAAYvI,EAAM2xQ,KAAK4pL,SAAS7kC,IAAM8kC,MAAMxqb,WAClDhR,EAAMk+e,YAAa,UAASl+e,EAAMo+e,cAAe,GAAI,CACnDx5c,SAAS,IAEX5kC,EAAMs1b,SAAW,EACjBt1b,EAAM80b,SAAW,EACjB90b,EAAMmF,MAAQ,EACdnF,EAAM2xQ,KAAKjyQ,GAAGo3Z,IAAiBooD,mBAAoBl/c,EAAMm+e,cACzDn+e,EAAM2xQ,KAAKjyQ,GAAGo3Z,IAAiBiuD,mBAAoB/kd,EAAMm+e,cAClDn+e,CACT,CAiUA,OA7VA,UAAUs0b,EAAWrzb,GA6BrB8V,OAAOoxB,eAAemsZ,EAAU70b,UAAW,OAAQ,CACjD8B,IAAK,WACH,MAAO,WACT,EACA2mC,YAAY,EACZsqB,cAAc,IAEhB8hY,EAAU70b,UAAUkC,QAAU,WAC5BV,EAAOxB,UAAUkC,QAAQR,KAAK5B,MAC9BA,KAAKoyQ,KAAK9wQ,IAAIi2Z,IAAiBooD,mBAAoB3/c,KAAK4+e,cACxD5+e,KAAKoyQ,KAAK9wQ,IAAIi2Z,IAAiBiuD,mBAAoBxld,KAAK4+e,aAC1D,EACA7pD,EAAU70b,UAAUoK,KAAO,WAAa,EAIxCyqb,EAAU70b,UAAU8qE,OAAS,WAC3BhrE,KAAK04D,OAAS14D,KAAKoyQ,KAAK6qL,aAAayU,UACjC1xc,KAAK04D,OACH14D,KAAK0xc,UAEP1xc,KAAK0xc,UAAY1xc,KAAK4/e,mBAGtB5/e,KAAK0xc,UAAY1xc,KAAK6/e,kBACtB7/e,KAAK0xc,UAAUlyY,UAAUr/D,GAAG,eAAgBH,KAAK2+e,aAG/C3+e,KAAK0xc,YAEP1xc,KAAK0xc,UAAUlyY,UAAUp9D,UACzBpC,KAAK0xc,eAAYj7a,EAGvB,EAIAs+Z,EAAU70b,UAAU4oH,OAAS,WAC3B,IAAIroH,EAAQT,KASZ,GARIA,KAAK04D,SAAW14D,KAAK+1b,WACvB/1b,KAAK8/e,mBACLx8e,YAAW,WACJ7C,EAAM2xQ,KAAKvwQ,WACdpB,EAAMq+e,eAAer+e,EAAMk/e,kBAAkB,EAEjD,KAEE3/e,KAAK0xc,UAAW,CAClB,IAAI3jc,EAAQ/N,KAAKoyQ,KAAKwlK,eAAe7pa,MACjCqsE,EAAUp6E,KAAK0xc,UAAUlyY,UAAUx9D,IAAI,WACvCs6c,EAAat8c,KAAK0xc,UAAUlyY,UAAUwwW,gBACtClha,EAAO,IAAIspb,IAAKkkB,EAAWrxc,EAAGqxc,EAAWpxc,EAAG+O,KAAKC,IAAIoic,EAAWvuc,MAAOA,GAAQuuc,EAAWtuc,QAAQo3D,OAAOgV,GACzGz4E,EAAM3B,KAAK+/e,2BACX90e,OAAI,EACJC,OAAI,EACR,GAAIvJ,EAAIygb,aAAc,CACpB,IAAIjhb,GAAK,UAAOw7e,IAAoB38e,KAAKoyQ,KAAKiqL,SAAUvtb,EAAM,IAAUsyR,QAAS,GAE/E/+Q,GADKlhB,EAAG,GACHA,EAAG,IACN+V,GAAK,UAAOyle,IAAoB38e,KAAKoyQ,KAAKwlK,eAAgB9oa,EAAM,IAAUsyR,QAAS,GACrF9+Q,EAAKpL,EAAG,GACHA,EAAG,GACVjM,EAAIqX,EACJpX,EAAImX,CACN,KAAO,CACL,IAAIlL,GAAK,UAAOwle,IAAoB38e,KAAKoyQ,KAAKiqL,SAAUvtb,EAAM,IAAU4mL,OAAQ,GAG5Ep3J,GAFGnnB,EAAG,GACRkL,EAAKlL,EAAG,IACD,UAAOwle,IAAoB38e,KAAKoyQ,KAAKiqL,SAAUvtb,EAAM,IAAU4mL,OAAQ,IAC9EpzK,EAAKgc,EAAG,GACHA,EAAG,GACVrzB,EAAIqX,EACJpX,EAAImX,CACN,CACApX,GAAKmvE,EAAQ,GACblvE,GAAKkvE,EAAQ,GAETp6E,KAAK+1b,SACP/1b,KAAK0xc,UAAUlyY,UAAUh6D,QAAO,WAAS,UAAS,CAAC,EAAG7D,GAAM,CAC1DsJ,EAAGA,EACHC,EAAGA,EACH6qb,SAAU/1b,KAAK+1b,SACfR,SAAUv1b,KAAKu1b,SACfJ,aAAcn1b,KAAK+1b,SAAW/1b,KAAKu1b,UAAYv1b,KAAK4F,SAGtD5F,KAAK0xc,UAAUlyY,UAAUh6D,QAAO,WAAS,UAAS,CAAC,EAAG7D,GAAM,CAC1DsJ,EAAGA,EACHC,EAAGA,KAGPlL,KAAKoyQ,KAAKiqL,SAAWr8b,KAAKoyQ,KAAKiqL,SAAS7D,IAAI1pb,EAAMnN,EAAIygb,aAAe,IAAUhhJ,OAAS,IAAU1rG,MACpG,CACF,EAIAq/P,EAAU70b,UAAUsF,OAAS,WAE3BxF,KAAKgrE,QACP,EACA+pX,EAAU70b,UAAU4hc,cAAgB,WAClC,OAAO9hc,KAAK0xc,UAAY,CAAC1xc,KAAK0xc,WAAa,EAC7C,EACA3c,EAAU70b,UAAUqP,MAAQ,WACtBvP,KAAK0xc,YACP1xc,KAAK0xc,UAAUlyY,UAAUp9D,UACzBpC,KAAK0xc,eAAYj7a,GAEnBz2B,KAAK+1b,SAAW,EAChB/1b,KAAKu1b,SAAW,EAChBv1b,KAAK4F,MAAQ,EACb5F,KAAK28C,IAAM,EACX38C,KAAKynD,KAAO,EACZznD,KAAK0lB,UAAO+Q,EACZz2B,KAAKggf,eAAYvpd,EACjBz2B,KAAKigf,WAAa,EACpB,EAEAlrD,EAAU70b,UAAUm2I,SAAW,SAAUzwI,GACvC5F,KAAK6+e,cAAc,CACjBj5e,MAAOA,GAEX,EAEAmvb,EAAU70b,UAAUqhI,SAAW,WAC7B,OAAOvhI,KAAK4F,KACd,EAIAmvb,EAAU70b,UAAUk/e,gBAAkB,WACpC,IAAI9xY,EAAQttG,KAAKoyQ,KAAK/qJ,WACtB,OAAO,UAAI/Z,EAAO,CAAC,aAAc,YAAa,UAAW,CAAC,EAC5D,EAIAynV,EAAU70b,UAAUggf,kBAAoB,SAAUp0e,GAChD,IAAIwhG,GAAQ,UAAIttG,KAAKoyQ,KAAK/qJ,WAAY,CAAC,aAAc,cACjDlmH,EAAK2K,GAAS,CAAC,EACjBq0e,EAAsBh/e,EAAGg/e,oBACzBC,GAAa,UAAOj/e,EAAI,CAAC,wBAC3B,MAAO,CACLwmE,SAAS,UAAQ,CAAC,GAAG,UAAI2lC,EAAO,CAAC,UAAW,SAAU,CAAC,GAAI8yY,GAC3D3xL,OAAO,UAAQ,CAAC,GAAG,UAAInhN,EAAO,CAAC,QAAS,SAAU,CAAC,GAAI,CACrDwnV,WAAYqrD,IAGlB,EACAprD,EAAU70b,UAAU4/e,iBAAmB,WACrC,IAAI3nG,EAASn4Y,KAAKoyQ,KAAK0kM,YACnBkJ,EAAUhgd,KAAKoyQ,KAAK2tM,aAAa/4b,QACrChnB,KAAK0lB,KAAO1lB,KAAKqgf,mBACjBrgf,KAAKynD,KAAOznD,KAAKsgf,UACjBtgf,KAAK28C,IAAM38C,KAAKugf,SAChB,IAAIp/e,EAAKnB,KAAK+/e,2BACZhqD,EAAW50b,EAAG40b,SACdR,EAAWp0b,EAAGo0b,SAChBv1b,KAAK+1b,SAAWA,EAChB/1b,KAAKu1b,SAAWA,EAChBv1b,KAAKggf,UAAY,CACfngX,MAAOs4Q,EAAOt4Q,MACdr/F,OAAQ23W,EAAO33W,QAAU,IAE3BxgC,KAAKigf,WAAajgC,CACpB,EACAjrB,EAAU70b,UAAUy/e,eAAiB,WACnC,IAAIa,EAAWvme,KAAKwX,OAAOzxB,KAAK28C,IAAM38C,KAAKynD,OAAQ,UAAMznD,KAAK4F,MAAO,EAAG,IAExE,MAAO,CAAC46e,EADKvme,KAAKC,IAAIsme,EAAWxgf,KAAKynD,KAAO,EAAGznD,KAAK28C,IAAM,GAE7D,EACAo4Y,EAAU70b,UAAU4+e,eAAiB,SAAU39e,EAAI6pE,GACjD,IAAIvqE,EAAQT,KACRkX,GAAK,UAAO/V,EAAI,GAClBq/e,EAAWtpe,EAAG,GACdupe,EAASvpe,EAAG,GAEVkra,EAAwB,aADjBpib,KAAKy/e,uBAAuB92e,KAEnC63B,GAAS,SAAYxgC,KAAK0lB,KAAM1lB,KAAKggf,UAAUngX,OAE/C2/W,EAAex/e,KAAKoyQ,KAAK0kM,YAAY/4C,SAAWv9X,EAAOjuB,MAAK,SAAU4L,EAAG8E,GAC3E,OAAOhB,OAAO9D,GAAK8D,OAAOgB,EAC5B,IAAKud,EACD2rc,EAAU/pD,EAAeo9D,EAAeA,EAAa5ud,UACzD5wB,KAAKigf,WAAW73e,SAAQ,SAAUzG,GAChClB,EAAM2xQ,KAAKt5P,MAAMnX,EAAIk+H,MAAO,CAC1BkqN,UAAWpoV,EAAIooV,UACfphV,KAAMhH,EAAIgH,KACVuR,IAAKvY,EAAIuY,IACTC,IAAKxY,EAAIwY,IACT+lZ,WAAYv+Z,EAAIu+Z,YAEpB,IACAlga,KAAKoyQ,KAAK7hQ,OAAOvQ,KAAKggf,UAAUngX,OAAO,SAAUx6H,GAC/C,IAAI6/B,EAAMinc,EAAQj5d,QAAQ7N,GAC1B,QAAO6/B,GAAO,IAAI/F,IAAU+F,EAAKs7c,EAAUC,EAC7C,IACAzgf,KAAKoyQ,KAAKpnM,QAAO,EACnB,EACA+pX,EAAU70b,UAAU2/e,gBAAkB,WACpC,IACIz9D,EAAwB,aADjBpib,KAAKy/e,uBAAuB92e,KAEnC62D,EAAY,IAAI,KAAmB,WAAS,UAAS,CACvDx2D,UAAWhJ,KAAKgJ,WACfhJ,KAAK+/e,4BAA6B,CACnC90e,EAAG,EACHC,EAAG,KAGL,OADAs0D,EAAUl1D,OACH,CACLk1D,UAAWA,EACXk3R,MAAOygE,IAAM8kC,KACbnha,UAAWsnZ,EAAe,IAAUhhJ,OAAS,IAAU1rG,MACvD/sL,KAAMyuZ,IAAeglD,UAEzB,EACArnB,EAAU70b,UAAU0/e,gBAAkB,WACpC,IAAIpzY,EAASxsG,KAAK+/e,2BACdW,EAAa1gf,KAAK+1b,UAAW,WAAS,UAAS,CAAC,EAAGvpV,GAAS,CAC9DupV,SAAU/1b,KAAK+1b,SACfR,SAAUv1b,KAAKu1b,SACfJ,aAAcn1b,KAAK+1b,SAAW/1b,KAAKu1b,UAAYv1b,KAAK4F,SACjD,UAAS,CAAC,EAAG4mG,GAElB,OADAxsG,KAAK0xc,UAAUlyY,UAAUh6D,OAAOk7e,GACzB1gf,KAAK0xc,SACd,EACA3c,EAAU70b,UAAUogf,QAAU,WAC5B,GAAItgf,KAAKynD,KACP,OAAOznD,KAAKynD,KAEd,IAAImwX,EAAiB53a,KAAKoyQ,KAAKwlK,eAC3Bz2a,EAAKnB,KAAKy/e,uBACZ92e,EAAOxH,EAAGwH,KACVg4e,EAAex/e,EAAGw/e,aAChBv+D,EAAwB,aAATz5a,EACnB,OAAOsR,KAAKwX,OAAO2wZ,EAAexK,EAAe7pa,MAAQ6pa,EAAe5pa,QAAU2ye,EACpF,EACA5rD,EAAU70b,UAAUqgf,OAAS,WAC3B,GAAIvgf,KAAK28C,IACP,OAAO38C,KAAK28C,IAEd,IAAIw7V,EAASn4Y,KAAKoyQ,KAAK0kM,YACnBpxb,EAAO1lB,KAAKqgf,mBACZ7/c,GAAS,SAAY9a,EAAMyyX,EAAOt4Q,OACtC,OAAO,UAAKr/F,EACd,EACAu0Z,EAAU70b,UAAU6/e,yBAA2B,WAC7C,IAAI5+e,EAAKnB,KAAKoyQ,KACZwlK,EAAiBz2a,EAAGy2a,eACpBykB,EAAWl7b,EAAGk7b,SACZnlb,EAAKlX,KAAKy/e,uBACZ92e,EAAOuO,EAAGvO,KACVyxE,EAAUljE,EAAGkjE,QACbrsE,EAAQmJ,EAAGnJ,MACXC,EAASkJ,EAAGlJ,OACZlC,EAAQoL,EAAGpL,MACTs2a,EAAwB,aAATz5a,EACfwO,GAAK,UAAOijE,EAAS,GACvB8pG,EAAa/sK,EAAG,GAChBq1K,EAAer1K,EAAG,GAClBwhI,EAAgBxhI,EAAG,GACnBo1K,EAAcp1K,EAAG,GACfg0C,EAAWi3X,EAAe,CAC5Bn3a,EAAG2sa,EAAe1na,KAAOq8K,EACzBrhL,EAAGmxb,EAAShsb,KAAOrC,EAAS2qI,GAC1B,CACF1tI,EAAGoxb,EAASlsb,KAAOpC,EAAQy+K,EAC3BthL,EAAG0sa,EAAexna,KAAO8zK,GAEvBz8H,EAAOznD,KAAKsgf,UACZ3jc,EAAM38C,KAAKugf,SACXxqD,EAAW3T,EAAexK,EAAe7pa,MAAQw+K,EAAcC,EAAeorP,EAAe5pa,OAASk2K,EAAavrC,EACnH48S,EAAWt7a,KAAKE,IAAI47a,GAAW,UAAMtuY,EAAO9K,EAAK,EAAG,GAjTrC,IAkTnB,OAAO,WAAS,UAAS,CAAC,EAAG38C,KAAKo/e,mBAAoB,CACpDn0e,EAAGkgD,EAASlgD,EACZC,EAAGigD,EAASjgD,EACZo5B,KAAM89Y,EAAep0a,EAASD,EAC9Bq0a,aAAcA,EACd2T,SAAUA,EACVR,SAAUA,EACVJ,YAAa,EACb7nV,MAAOttG,KAAKkgf,kBAAkBp0e,IAElC,EAIAipb,EAAU70b,UAAUu/e,qBAAuB,WACzC,IAAI99e,EAAM,CACRgH,KAAM,aACNg4e,aApUsB,GAqUtB5ye,MAtUa,EAuUbC,OAvUa,EAwUbosE,QAAS,CAAC,EAAG,EAAG,EAAG,GACnBtjE,SAAS,EACThL,MAAO,CAAC,GAQV,OANI,UAAS9L,KAAK04D,UAChB/2D,GAAM,WAAS,UAAS,CAAC,EAAGA,GAAM3B,KAAK04D,UAEpC,UAAS14D,KAAK04D,SAAY14D,KAAK04D,OAAO0hB,UACzCz4E,EAAIy4E,SAAUz4E,EAAIgH,KAAwB,CAjV1B,EAiV4C,EAjV5C,EAiVgE,KAE3EhH,CACT,EAIAozb,EAAU70b,UAAUmgf,iBAAmB,WACrC,IAAIpiO,EAAaj+Q,KAAKoyQ,KAAK+vL,gBACvBxgc,EAAM3B,KAAKy/e,uBACX/5d,EAAO1lB,KAAKoyQ,KAAK6qL,aAAav3a,MAAQ,GAK1C,OAHIu4P,EAAW0tJ,UAAU,MAAqB,aAAbhqa,EAAIgH,OACnC+c,GAAO,UAAc,IAAI,UAAOA,IAAO,GAAOkL,WAEzClL,CACT,EACOqva,CACT,CA/V6B,CA+V3B4wB,KACF,QCvWIi7B,IAA4B,CAC9Bhlc,KAAM,UACNjnC,QAAS,IAEJ,SAASkse,IAAezuO,EAAMpnQ,EAAO+tc,GAC1C,IAAI/gB,EAAK72b,EAAIu2c,EAAKxgc,EAAI8hc,EAAK7hc,EACvBgvC,E7KqcC,SAAqCisN,EAAMpnQ,EAAO+tc,GACvD,IAAIwP,EAAKpnd,EACLyR,EAAS0mc,IAAkBlnM,EAAMpnQ,EAAO+tc,GAC5C,IAEE,IAAK,IAAI7hc,GAAK,UAASk7P,EAAKoD,OAAQr+P,EAAKD,EAAGqe,QAASpe,EAAGmhC,KAAMnhC,EAAKD,EAAGqe,OAAQ,CAC5E,IAAIizb,EAAYrxc,EAAGhV,MACnByQ,EAASA,EAAOW,OAAO+lc,IAAkBkP,EAAWx9c,EAAO+tc,GAC7D,CACF,CAAE,MAAO0P,GACPF,EAAM,CACJn7Z,MAAOq7Z,EAEX,CAAE,QACA,IACMtxc,IAAOA,EAAGmhC,OAASn3C,EAAK+V,EAAG+hN,SAAS93N,EAAGS,KAAKsV,EAClD,CAAE,QACA,GAAIqxc,EAAK,MAAMA,EAAIn7Z,KACrB,CACF,CACA,OAAOx6C,CACT,C6K1dckue,CAA4B1uO,EAAMpnQ,EAAO+tc,GACrD,GAAI5yZ,EAAMtlD,OAAQ,CAEhBslD,GAAQ,UAAQA,GAChB,IACE,IAAK,IAAIiiY,GAAU,UAASjiY,GAAQwga,EAAYv+B,EAAQ7yZ,QAASoxb,EAAUrua,KAAMqua,EAAYv+B,EAAQ7yZ,OAAQ,CAC3G,IAAI6pY,EAAUunD,EAAUxkd,MACxB,IACE,IAAK,IAAIykd,GAAalP,OAAM,GAAQ,UAASt4C,IAAWynD,EAAcD,EAAUrxb,QAASsxb,EAAYvua,KAAMuua,EAAcD,EAAUrxb,OAAQ,CACzI,IAAI9d,EAAOovc,EAAY1kd,MACnBm8B,EAAK7mB,EAAKwgc,YACZhtc,EAAIqzB,EAAGrzB,EACPC,EAAIozB,EAAGpzB,EACTuM,EAAKxM,GAAI,UAAQA,GAAKA,EAAEA,EAAEpK,OAAS,GAAKoK,EACxCwM,EAAKvM,GAAI,UAAQA,GAAKA,EAAEA,EAAErK,OAAS,GAAKqK,CAC1C,CACF,CAAE,MAAOotc,GACPZ,EAAM,CACJtqZ,MAAOkrZ,EAEX,CAAE,QACA,IACMuO,IAAgBA,EAAYvua,OAASphC,EAAK0vc,EAAU3tP,SAAS/hN,EAAGtV,KAAKgld,EAC3E,CAAE,QACA,GAAIlP,EAAK,MAAMA,EAAItqZ,KACrB,CACF,CACF,CACF,CAAE,MAAO+qY,GACPH,EAAM,CACJ5qY,MAAO+qY,EAEX,CAAE,QACA,IACMwuB,IAAcA,EAAUrua,OAASn3C,EAAKinb,EAAQnvN,SAAS93N,EAAGS,KAAKwmb,EACrE,CAAE,QACA,GAAI4P,EAAK,MAAMA,EAAI5qY,KACrB,CACF,CAGA,IAAe,IAFF2rZ,EAAW9mL,QAEA9rO,EAAMtlD,OAAS,EAAG,CACxC,IAAIimd,EAAW3ga,EAAM,GACjBjsC,EAAMD,KAAKoG,IAAIrV,EAAME,EAAI47c,EAAS,GAAG57c,GACzC,IACE,IAAK,IAAI67c,GAAU,UAAS5ga,GAAQ6ga,EAAYD,EAAQxxb,QAASyxb,EAAU1ua,KAAM0ua,EAAYD,EAAQxxb,OAAQ,CAC3G,IAAI0xb,EAAQD,EAAU7kd,MAClB+kd,EAAYjtc,KAAKoG,IAAIrV,EAAME,EAAI+7c,EAAM,GAAG/7c,GACxCg8c,GAAahtc,IACf4sc,EAAWG,EACX/sc,EAAMgtc,EAEV,CACF,CAAE,MAAO9N,GACPJ,EAAM,CACJ5rZ,MAAOgsZ,EAEX,CAAE,QACA,IACM4N,IAAcA,EAAU1ua,OAASnhC,EAAK4vc,EAAQ9tP,SAAS9hN,EAAGvV,KAAKmld,EACrE,CAAE,QACA,GAAI/N,EAAK,MAAMA,EAAI5rZ,KACrB,CACF,CACAjH,EAAQ,CAAC2ga,EACX,CACA,OAAO,WAAK,UAAQ3ga,GACtB,CACA,MAAO,EACT,CAKA,IAAI46b,IAA4B,SAAUr/e,GAExC,SAASq/e,IACP,OAAkB,OAAXr/e,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CA2IA,OA9IA,UAAU+gf,EAAcr/e,GAUxBq/e,EAAa7gf,UAAUoV,KAAO,SAAU5U,GACtC,IAAI0xQ,EAAOpyQ,KAAKmzB,QAAQi/O,KACpBtoQ,EAAK9J,KAAKmzB,QAAQpoB,MAClBguc,EAAa3mM,EAAKqoM,cAAc,WAAWsL,gBAC3CrM,EAAemnC,IAAezuO,EAAM,CACtCnnQ,EAAGnB,EAAGmB,EACNC,EAAGpB,EAAGoB,GACL6tc,GACH,KAAI,UAAQW,EAAc15c,KAAKmmD,SAI/BnmD,KAAKmmD,MAAQuzZ,EACTA,EAAa74c,QAAQ,CACvB,IAAIswd,EAAW/+M,EAAK0kM,YAAYj3U,MAC5BmhX,EAAWtnC,EAAa,GAAGh0b,KAAKyrc,GAEhC8vB,EAAa,GACb7hS,EAAagzD,EAAKhzD,WAWtB,IAVA,UAAKA,GAAY,SAAUC,GACzB,GAAsB,aAAlBA,EAAS12M,MAAyC,WAAlB02M,EAAS12M,KAAmB,CAC9D,IAAIiK,EAASysM,EAASmiP,eAAc,SAAU/5W,GAE5C,OADcA,EAAIw4E,UACHkxT,KAAc6vB,CAC/B,IACAC,EAAaA,EAAW1te,OAAOX,EACjC,CACF,IAEIque,EAAWpgf,OAAQ,CACrB,IAAIqgf,EAAe9uO,EAAK+vL,gBACpBg/C,EAAcF,EAAW,GAAGx7e,MAAMmL,gBAClCwwe,EAAaH,EAAW,GAAGx7e,MAAMmL,gBACjCywe,EAAcF,GAClB,UAAKF,GAAY,SAAUx5Z,GACzB,IAAI34E,EAAO24E,EAAIhiF,MAAMmL,gBACjBswe,EAAa11E,cACX18Z,EAAKsB,KAAO+we,EAAY/we,OAC1B+we,EAAcrye,GAEZA,EAAKuB,KAAO+we,EAAW/we,OACzB+we,EAAatye,KAGXA,EAAKoB,KAAOixe,EAAYjxe,OAC1Bixe,EAAcrye,GAEZA,EAAKqB,KAAOixe,EAAWjxe,OACzBixe,EAAatye,IAGjBuye,EAAYp2e,EAAIgP,KAAKC,IAAIpL,EAAKoB,KAAMmxe,EAAYnxe,MAChDmxe,EAAYn2e,EAAI+O,KAAKC,IAAIpL,EAAKsB,KAAMixe,EAAYjxe,MAChDixe,EAAYtze,MAAQkM,KAAKE,IAAIrL,EAAKqB,KAAMkxe,EAAYlxe,MAAQkxe,EAAYp2e,EACxEo2e,EAAYrze,OAASiM,KAAKE,IAAIrL,EAAKuB,KAAMgxe,EAAYhxe,MAAQgxe,EAAYn2e,CAC3E,IACA,IAAI0yc,EAAkBxrM,EAAKwrM,gBACzBhmC,EAAiBxlK,EAAKwlK,eACpB/wa,OAAO,EACX,GAAIq6e,EAAa/1E,OAAQ,CACvB,IAAIhzB,EAAS/lI,EAAK0kM,YACd31c,EAAKT,GAAQ,CAAC,EAChB4gf,EAAcngf,EAAGmgf,YACjBC,EAAcpgf,EAAGogf,aACf,UAAMA,KACRD,GAAc,UAAMA,GAAenpG,EAAO4lB,SAAW,EAAI,IAAOujF,EAChEC,EAAcL,EAAa11E,aAAe81E,EAAcF,EAAWpze,OAASsze,EAAcH,EAAYpze,OAExG,IAAImC,OAAO,EACPE,OAAO,EACPrC,OAAQ,EACRC,OAAS,EACTkze,EAAa11E,cACft7Z,EAAO0na,EAAe1na,KACtBE,EAAO6J,KAAKC,IAAIkne,EAAWhxe,KAAM+we,EAAY/we,MAAQmxe,EACrDxze,EAAQ6pa,EAAe7pa,MACvBC,EAASqze,EAAYrze,OAAuB,EAAduze,IAE9Brxe,EAAO+J,KAAKC,IAAIine,EAAYjxe,KAAMkxe,EAAWlxe,MAAQqxe,EAErDnxe,EAAOwna,EAAexna,KACtBrC,EAAQsze,EAAYtze,MAAsB,EAAdwze,EAC5Bvze,EAAS4pa,EAAe5pa,QAE1BnH,EAAO,CAAC,CAAC,IAAKqJ,EAAME,GAAO,CAAC,IAAKF,EAAOnC,EAAOqC,GAAO,CAAC,IAAKF,EAAOnC,EAAOqC,EAAOpC,GAAS,CAAC,IAAKkC,EAAME,EAAOpC,GAAS,CAAC,KACzH,KAAO,CACL,IAAIwze,GAAe,UAAKP,GACpBQ,GAAc,UAAKR,GACnBl/d,EAAakX,IAASuod,EAAa9/C,WAAYw/C,GAAcn/d,WAC7DC,EAAWiX,IAASwod,EAAY//C,WAAYw/C,GAAcl/d,SAC1D6b,EAASqjd,EAAah1E,YACtBl+V,EAASkza,EAAa90E,YACtBs1E,EAAeR,EAAap3Y,YAAc97B,EAC9CnnE,EAAOkwb,IAAcl5Z,EAAO5yB,EAAG4yB,EAAO3yB,EAAG8iE,EAAQjsD,EAAYC,EAAU0/d,EACzE,CACA,GAAI1hf,KAAK2kb,WACP3kb,KAAK2kb,WAAWv+a,KAAK,OAAQS,GAC7B7G,KAAK2kb,WAAWrva,WACX,CACL,IAAIxJ,GAAQ,UAAIpL,EAAM,QAASkgf,KAC/B5gf,KAAK2kb,WAAai5B,EAAgBvsc,SAAS,CACzC1I,KAAM,OACN1G,KAAM,gBACNuS,SAAS,EACTlO,OAAO,WAAS,UAAS,CAAC,EAAGwF,GAAQ,CACnCjF,KAAMA,KAGZ,CACF,CACF,CACF,EAIAk6e,EAAa7gf,UAAUqV,KAAO,WACxBvV,KAAK2kb,YACP3kb,KAAK2kb,WAAWpva,OAGlBvV,KAAKmmD,MAAQ,IACf,EAIA46b,EAAa7gf,UAAUkC,QAAU,WAC/BpC,KAAKuV,OACDvV,KAAK2kb,YACP3kb,KAAK2kb,WAAWxxa,QAAO,GAEzBzR,EAAOxB,UAAUkC,QAAQR,KAAK5B,KAChC,EACO+gf,CACT,CAhJgC,CAgJ9B,KACF,QC/NIY,IAA6B,SAAUjgf,GAEzC,SAASigf,IACP,IAAIlhf,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAEhE,OADAS,EAAM0L,UAAY,EACX1L,CACT,CA8DA,OAnEA,UAAUkhf,EAAejgf,GAUzBigf,EAAczhf,UAAUoV,KAAO,WAC7B,IAAI6d,EAAUnzB,KAAKmzB,QACfrpB,EAAKqpB,EAAQpoB,MACbqnQ,EAAOj/O,EAAQi/O,KAEnB,IADsBA,EAAK8uM,kBAC3B,CAIA,IAAI0gC,EAAgB5hf,KAAKmM,UACrBA,GAAa,IAAInJ,KAGrB,GAAImJ,EAAYy1e,GADA,UAAIzud,EAAQi/O,KAAK6qL,aAAc,oBAAqB,IACzB,CACzC,IAAI4kD,EAAS7hf,KAAK2tQ,SACdm0O,EAAS,CACX72e,EAAGnB,EAAGmB,EACNC,EAAGpB,EAAGoB,GAEH22e,IAAW,UAAQA,EAAQC,IAC9B9hf,KAAK8gd,YAAY1uM,EAAM0vO,GAEzB9hf,KAAKmM,UAAYA,EACjBnM,KAAK2tQ,SAAWm0O,CAClB,CAhBA,CAiBF,EAKAH,EAAczhf,UAAUqV,KAAO,WAC7B,IAAI68P,EAAOpyQ,KAAKmzB,QAAQi/O,KACpBrN,EAAUqN,EAAKqoM,cAAc,WAC7Bt5c,EAAKnB,KAAKmzB,QAAQpoB,MACpBI,EAAUhK,EAAGgK,QACbC,EAAUjK,EAAGiK,QAEX25P,EAAQqiN,gBAAgB,CAC1Bn8c,EAAGE,EACHD,EAAGE,KAKDgnQ,EAAK8uM,oBAGTlhd,KAAK+gd,YAAY3uM,GACjBpyQ,KAAK2tQ,SAAW,KAClB,EACAg0O,EAAczhf,UAAU4gd,YAAc,SAAU1uM,EAAMpnQ,GAEpDonQ,EAAK0uM,YAAY91c,EACnB,EACA22e,EAAczhf,UAAU6gd,YAAc,SAAU3uM,GAC9CA,EAAK2uM,aACP,EACO4gC,CACT,CArEiC,CAqE/B,KACF,QCrEII,IAA8B,SAAUrgf,GAE1C,SAASqgf,IACP,OAAkB,OAAXrgf,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAuBA,OA1BA,UAAU+hf,EAAgBrgf,GAS1Bqgf,EAAe7hf,UAAU4gd,YAAc,SAAU1uM,EAAMpnQ,GACrD,IAAIoyR,EAAW6kK,IAAY7vL,IAC3B,UAAKgrB,GAAU,SAAUvlG,GACvB,IAAImqT,EAAe7gD,IAAgB/uL,EAAMv6E,EAAS7sL,GAClD6sL,EAAQipR,YAAYkhC,EACtB,GACF,EAKAD,EAAe7hf,UAAU6gd,YAAc,SAAU3uM,GAC/C,IAAIgrB,EAAW6kK,IAAY7vL,IAC3B,UAAKgrB,GAAU,SAAUvlG,GACvBA,EAAQkpR,aACV,GACF,EACOghC,CACT,CA5BkC,CA4BhC,KACF,QC5BIE,IAA4B,SAAUvgf,GAExC,SAASugf,IACP,IAAIxhf,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAEhE,OADAS,EAAM0L,UAAY,EACX1L,CACT,CAwFA,OA7FA,UAAUwhf,EAAcvgf,GAMxBugf,EAAa/hf,UAAUkC,QAAU,WAC/BV,EAAOxB,UAAUkC,QAAQR,KAAK5B,MAC9BA,KAAK+kQ,SAAW/kQ,KAAK+kQ,QAAQ3iQ,SAC/B,EAKA6/e,EAAa/hf,UAAUoV,KAAO,WAC5B,IACIxL,EADU9J,KAAKmzB,QACFpoB,MACb62e,EAAgB5hf,KAAKmM,UACrBA,GAAa,IAAInJ,KACrB,GAAImJ,EAAYy1e,EAAgB,GAAI,CAClC,IAAIC,EAAS7hf,KAAK2tQ,SACdm0O,EAAS,CACX72e,EAAGnB,EAAGmB,EACNC,EAAGpB,EAAGoB,GAEH22e,IAAW,UAAQA,EAAQC,IAC9B9hf,KAAK8gd,YAAYghC,GAEnB9hf,KAAKmM,UAAYA,EACjBnM,KAAK2tQ,SAAWm0O,CAClB,CACF,EAKAG,EAAa/hf,UAAUqV,KAAO,WAC5BvV,KAAK+gd,cACL/gd,KAAK2tQ,SAAW,IAClB,EACAs0O,EAAa/hf,UAAU4gd,YAAc,SAAUghC,GAC7C,IAEIp5e,EAFU1I,KAAKmzB,QACFpoB,MACDrC,OAChB,GAAIA,GAAUA,EAAO1G,IAAI,OAAQ,CAC1BhC,KAAK+kQ,SACR/kQ,KAAKmmd,gBAGP,IAAI+7B,EAAax5e,EAAO1G,IAAI,OAE5BhC,KAAK+kQ,QAAQv/P,QAAO,UAAS,CAC3BusD,MAAOmwb,GACNJ,IACH9hf,KAAK+kQ,QAAQzvP,MACf,CACF,EACA2se,EAAa/hf,UAAU6gd,YAAc,WACnC/gd,KAAK+kQ,SAAW/kQ,KAAK+kQ,QAAQxvP,MAC/B,EACA0se,EAAa/hf,UAAUimd,cAAgB,WACrC,IAAIhld,EACAixQ,EAAOpyQ,KAAKmzB,QAAQi/O,KACpB7qQ,EAAS6qQ,EAAK7qQ,OACd4ma,EAAS,CACXznZ,MAAO,CACLzb,EAAG,EACHC,EAAG,GAEL2jB,IAAK,CACH5jB,EAAG1D,EAAOvF,IAAI,SACdkJ,EAAG3D,EAAOvF,IAAI,YAGdsrG,EAAQ8kK,EAAK/qJ,WACb86X,GAAgB,UAAI70Y,EAAO,CAAC,aAAc,UAAW,aAAc,CAAC,GACpEy3J,EAAU,IAAI0xL,IAAY,CAC5B7kb,OAAQrK,EAAOvF,IAAI,MAAMoN,WACzB++Z,OAAQA,EACR55Z,SAAS,EACTg7a,WAAY,KACZrV,WAAW,UAAS,CAAC,GAAG,UAAQ,CAAC,EAAGioE,GAAgBhhf,EAAK,CAAC,EAE1DA,EAAG,KAAqC,CACtC,YAAa,OACZA,EAAG,KAAiC,CACrC,aAAc,aACbA,OAEL4jQ,EAAQz6P,OACRy6P,EAAQgrK,YAAW,GACnB/va,KAAK+kQ,QAAUA,CACjB,EACOk9O,CACT,CA/FgC,CA+F9B,KACF,QC/FIG,IAAyB,SAAU1gf,GAErC,SAAS0gf,IACP,IAAI3hf,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAKhE,OADAS,EAAM8gc,UAAY,GACX9gc,CACT,CAoCA,OA5CA,UAAU2hf,EAAW1gf,GAarB0gf,EAAUlif,UAAUs8a,SAAW,SAAU7sa,GACvC,OAAOA,EAAQ6sa,SAASx8a,KAAKuhc,UAC/B,EAKA6gD,EAAUlif,UAAUmif,gBAAkB,SAAU1ye,EAASmsa,GAEvDnsa,EAAQyvD,SAASp/D,KAAKuhc,UAAWzlB,EACnC,EAIAsmE,EAAUlif,UAAUk/D,SAAW,WAC7Bp/D,KAAKsif,gBAAe,EACtB,EAIAF,EAAUlif,UAAUqP,MAAQ,WAC1B,IAAI6iQ,EAAOpyQ,KAAKmzB,QAAQi/O,KACxBpyQ,KAAKuif,eAAenwO,EACtB,EACAgwO,EAAUlif,UAAUqif,eAAiB,SAAUnwO,GAC7C,IAAI3xQ,EAAQT,KACR2gC,EAAW2ga,IAAmBlvL,EAAMpyQ,KAAKuhc,YAC7C,UAAK5ga,GAAU,SAAUn2B,GACvB/J,EAAM4hf,gBAAgB73e,GAAI,EAC5B,GACF,EACO43e,CACT,CA9C6B,CA8C3B,KACF,QCrDA,SAASI,IAAQ/8e,GACf,OAAO,UAAIA,EAAMzD,IAAI,kBAAmB,OAC1C,CAMA,IAAIygf,IAA4B,SAAU/gf,GAExC,SAAS+gf,IACP,IAAIhif,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAEhE,OADAS,EAAMiif,qBAAuB,CAAC,aACvBjif,CACT,CA6EA,OAlFA,UAAUgif,EAAc/gf,GAOxB+gf,EAAavif,UAAUyif,aAAe,SAAUlre,EAAMiqG,GACpD,IACIm5W,EADS76d,KAAK0if,qBACInye,QAAO,SAAUgzC,GACrC,OAAOm+D,EAAK86T,SAAS/ka,EAAM8rC,EAC7B,IACA,QAASs3a,EAASh6d,MACpB,EAEA4hf,EAAavif,UAAU0if,oBAAsB,SAAUpjb,EAAW/nD,EAAMqka,GACtE,IAAI1pK,EAAOpyQ,KAAKmzB,QAAQi/O,KACpBvyI,EAAQrgE,EAAUx9D,IAAI,SACtB2+B,EAAWyga,IAAYhvL,GAC3BpyQ,KAAK6if,uBAAuBlid,EAAUk/F,EAAOpoH,EAAMqka,EACrD,EAEA2mE,EAAavif,UAAU4if,kBAAoB,SAAUnze,EAASmsa,GAC5D97a,KAAKqif,gBAAgB1ye,EAASmsa,EAChC,EAEA2mE,EAAavif,UAAU6if,WAAa,SAAUpze,EAASkwH,EAAOpoH,GAC5D,IACIqB,EAAQypb,IADDvic,KAAKmzB,QAAQi/O,KACUvyI,GAC9B19H,EAAQs/b,IAAgB9xb,EAASkwH,GACrC,QAAQ,UAAM19H,IAAUsV,EAAKxV,OAAS6W,EAAM+mZ,QAAQ19Z,EACtD,EACAsgf,EAAavif,UAAU2if,uBAAyB,SAAUlid,EAAUk/F,EAAOpoH,EAAMqka,GAC/E,IAAIr7a,EAAQT,MACZ,UAAK2gC,GAAU,SAAUn2B,GACnB/J,EAAMsif,WAAWv4e,EAAIq1H,EAAOpoH,IAC9BjN,EAAG40D,SAAS3+D,EAAM8gc,UAAWzlB,EAEjC,GACF,EAEA2mE,EAAavif,UAAUoif,eAAiB,SAAUxmE,GAChD,IAAInsa,EAAUswb,IAAkBjgc,KAAKmzB,SACrC,GAAIxjB,EAEEwwb,IAAgBngc,KAAKmzB,UACvBnzB,KAAK8if,kBAAkBnze,EAASmsa,OAE7B,CAEL,IAAIzja,EAAiB6nb,IAAoBlgc,KAAKmzB,SAE9C,GAAIk5G,IAAOh0H,GAAiB,CAC1B,IAAIZ,EAAOY,EAAeZ,KACxB+nD,EAAYnnD,EAAemnD,UAC7B,GAAI/nD,GAAQ+nD,IAAcx/D,KAAK2if,aAAalre,EAAM+nD,GAAY,CAC5D,IAAIwjb,EAAUhjf,KAAKmzB,QAAQpoB,MAAMq1b,OAEjC,GAAI4iD,GAAWA,EAAQ55e,WAAa45e,EAAQ35e,SAAWm5e,IAAQQ,EAAQ55e,aAAeo5e,IAAQQ,EAAQ35e,SACpG,OAEFrJ,KAAK4if,oBAAoBpjb,EAAW/nD,EAAMqka,EAC5C,CACF,CACF,CACF,EAIA2mE,EAAavif,UAAU0kT,OAAS,WAC9B,IAAIj1S,EAAUswb,IAAkBjgc,KAAKmzB,SACrC,GAAIxjB,EAAS,CACX,IAAI6sa,EAAW7sa,EAAQ6sa,SAASx8a,KAAKuhc,WACrCvhc,KAAKqif,gBAAgB1ye,GAAU6sa,EACjC,CACF,EAIAimE,EAAavif,UAAUg2D,MAAQ,WAC7Bl2D,KAAKsif,gBAAe,EACtB,EACOG,CACT,CApFgC,CAoF9B,KACF,QC1FIQ,IAA6B,SAAUvhf,GAEzC,SAASuhf,IACP,IAAIxif,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAEhE,OADAS,EAAM8gc,UAAY,SACX9gc,CACT,CAOA,OAZA,UAAUwif,EAAevhf,GASzBuhf,EAAc/if,UAAUq2H,OAAS,WAC/Bv2H,KAAKo/D,UACP,EACO6jb,CACT,CAdiC,CAc/B,KACF,QCbIC,IAA2B,SAAUxhf,GAEvC,SAASwhf,IACP,IAAIzif,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAEhE,OADAS,EAAMqe,MAAQ,CAAC,EACRre,CACT,CA6HA,OAlIA,UAAUyif,EAAaxhf,GAOvBwhf,EAAYhjf,UAAUijf,cAAgB,SAAU/wO,EAAMziQ,GACpD,IAAIs7d,EAAYt7d,EAAQ0vM,SAASj1J,aAAa,SAC9C,OAAK6gb,EAGO74N,EAAKmwL,gBAAgB0oC,EAAU1sW,YAAY,IAF9C,IAIX,EAEA2kX,EAAYhjf,UAAUkjf,YAAc,SAAUzze,EAAS0ze,GACrD,IACI73E,EADOxra,KAAKmzB,QAAQi/O,KACA+vL,gBAAgB32B,aACpC18Z,EAAOa,EAAQlK,MAAMmL,gBACrB0ye,EAAWD,EAAY59e,MAAMmL,gBAEjC,OADW46Z,EAAe,CAAC,CAAC,IAAK18Z,EAAKoB,KAAMpB,EAAKsB,MAAO,CAAC,IAAKkze,EAASpze,KAAMoze,EAASjze,MAAO,CAAC,IAAKize,EAASnze,KAAMmze,EAASjze,MAAO,CAAC,IAAKvB,EAAKqB,KAAMrB,EAAKsB,MAAO,CAAC,MAAQ,CAAC,CAAC,IAAKtB,EAAKqB,KAAMrB,EAAKsB,MAAO,CAAC,IAAKkze,EAASpze,KAAMoze,EAASlze,MAAO,CAAC,IAAKkze,EAASpze,KAAMoze,EAASjze,MAAO,CAAC,IAAKvB,EAAKqB,KAAMrB,EAAKuB,MAAO,CAAC,KAEhT,EAEA6ye,EAAYhjf,UAAUqjf,aAAe,SAAU7xe,EAAO/B,EAAS0ze,EAAansa,GAC1E,IAAIprE,EAAQ,CACV6I,QAAS,GACTinC,KAAMjsC,EAAQlK,MAAMW,KAAK,SAE3BsL,EAAML,SAAS,CACb1I,KAAM,OACNrC,OAAO,WAAS,UAAS,CAAC,GAAG,UAAQ,CAAC,EAAGwF,GAAO,UAAWorE,GAAeA,EAAYprE,EAAO6D,GAAWunE,IAAe,CACrHrwE,KAAM7G,KAAKojf,YAAYzze,EAAS0ze,MAGtC,EAEAH,EAAYhjf,UAAUsjf,cAAgB,SAAU7ze,EAASunE,GACvD,IAAIz2E,EAAQT,KACRoyQ,EAAOpyQ,KAAKmzB,QAAQi/O,KACpBt5P,EAAQ9Y,KAAKmjf,cAAc/wO,EAAMziQ,GACrC,GAAKmJ,EAAL,CAGA,IAAI3W,EAAQs/b,IAAgB9xb,EAASmJ,EAAM+mH,OAC3C,IAAK7/H,KAAK8e,MAAM3c,GAAQ,CACtB,IAAI8+e,E7LyNH,SAA4B7uO,EAAMvyI,EAAO19H,GAE9C,OADei/b,IAAYhvL,GACX7hQ,QAAO,SAAU/F,GAC/B,OAAOi3b,IAAgBj3b,EAAIq1H,KAAW19H,CACxC,GACF,C6L9NuBshf,CAAmBrxO,EAAMt5P,EAAM+mH,MAAO19H,GAEnDuhf,EADY1jf,KAAK2jf,UACGlye,WACxBzR,KAAK8e,MAAM3c,GAASuhf,EACpB,IAAIE,EAAU3C,EAAWpgf,QACzB,UAAKogf,GAAY,SAAUz2e,EAAIxC,GAC7B,GAAIA,EAAQ47e,EAAU,EAAG,CACvB,IAAIC,EAAS5C,EAAWj5e,EAAQ,GAChCvH,EAAM8if,aAAaG,EAASl5e,EAAIq5e,EAAQ3sa,EAC1C,CACF,GACF,CAdA,CAeF,EAEAgsa,EAAYhjf,UAAU4jf,WAAa,SAAUn0e,GAC3C,IAAImJ,EAAQ9Y,KAAKmjf,cAAcnjf,KAAKmzB,QAAQi/O,KAAMziQ,GAClD,GAAKmJ,EAAL,CAGA,IAAI3W,EAAQs/b,IAAgB9xb,EAASmJ,EAAM+mH,OACvC7/H,KAAK8e,MAAM3c,KACbnC,KAAK8e,MAAM3c,GAAOgR,SAClBnT,KAAK8e,MAAM3c,GAAS,KAJtB,CAMF,EAkBA+gf,EAAYhjf,UAAUg4L,KAAO,SAAUx3L,GACrC,IAAIyyB,EAAUnzB,KAAKmzB,QACdnzB,KAAK2jf,YAER3jf,KAAK2jf,UAAYxwd,EAAQi/O,KAAK0rM,gBAAgBrsc,SAAS,CACrDiC,GAAI,sBACJc,SAAS,KAGb,IAAI7E,EAAUswb,IAAkB9sa,GAC5BxjB,GACF3P,KAAKwjf,cAAc7ze,EAASjP,aAAmC,EAASA,EAAKoL,MAEjF,EAIAo3e,EAAYhjf,UAAU6jf,OAAS,WAC7B,IAAIp0e,EAAUswb,IAAkBjgc,KAAKmzB,SACjCxjB,GACF3P,KAAK8jf,WAAWn0e,EAEpB,EAIAuze,EAAYhjf,UAAUqP,MAAQ,WACxBvP,KAAK2jf,WACP3jf,KAAK2jf,UAAUp0e,QAEjBvP,KAAK8e,MAAQ,CAAC,CAChB,EAIAoke,EAAYhjf,UAAUkC,QAAU,WAC9BV,EAAOxB,UAAUkC,QAAQR,KAAK5B,MAC1BA,KAAK2jf,WACP3jf,KAAK2jf,UAAUxwe,QAEnB,EACO+ve,CACT,CApI+B,CAoI7B,KACF,QCtIIc,IAAiC,SAAUtif,GAE7C,SAASsif,IACP,IAAIvjf,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAYhE,OAXAS,EAAM08B,WAAa,KACnB18B,EAAMy2a,SAAW,KACjBz2a,EAAMwjf,WAAY,EAIlBxjf,EAAMyjf,gBAAiB,EAIvBzjf,EAAM0jf,gBAAiB,EAChB1jf,CACT,CAiIA,OAhJA,UAAUujf,EAAmBtif,GAiB7Bsif,EAAkB9jf,UAAUuic,gBAAkB,WAC5C,IAAI13b,EAAQ/K,KAAKmzB,QAAQpoB,MACzB,MAAO,CACLE,EAAGF,EAAME,EACTC,EAAGH,EAAMG,EAEb,EAIA84e,EAAkB9jf,UAAUwmB,MAAQ,WAClC1mB,KAAKuP,QACLvP,KAAKm9B,WAAan9B,KAAKyic,kBACvBzic,KAAKikf,WAAY,CACnB,EACAD,EAAkB9jf,UAAU2gc,qBAAuB,WACjD,IAAIlga,EAAW,KACf,GAAI0/Z,IAAOrgc,KAAKmzB,SACdwN,EAAW4/Z,IAAkBvgc,KAAKmzB,QAAS,QACtC,CACL,IAAIgK,EAAan9B,KAAKm9B,WAClB+5Y,EAAWl3a,KAAKikf,UAAYjkf,KAAKyic,kBAAoBzic,KAAKk3a,SAE9D,IAAK/5Y,IAAe+5Y,EAClB,OAGF,IAAI31Z,EAAM,CACRrR,KAAM+J,KAAKC,IAAIijB,EAAWlyB,EAAGisa,EAASjsa,GACtCmF,KAAM6J,KAAKC,IAAIijB,EAAWjyB,EAAGgsa,EAAShsa,GACtCiF,KAAM8J,KAAKE,IAAIgjB,EAAWlyB,EAAGisa,EAASjsa,GACtCoF,KAAM4J,KAAKE,IAAIgjB,EAAWjyB,EAAGgsa,EAAShsa,IAIxCy1B,EAAWkga,IADA7gc,KAAKmzB,QAAQi/O,KACc7wP,EACxC,CACA,OAAOof,CACT,EAIAqjd,EAAkB9jf,UAAUoif,eAAiB,SAAUxmE,GACrD,GAAI97a,KAAKkkf,iBAAmBlkf,KAAKmkf,eAC/Bnkf,KAAKokf,iBAAiBtoE,OACjB,CACL,IAAIuoE,EAAcjjD,IAAYphc,KAAKmzB,QAAQi/O,MACvCzxO,EAAW3gC,KAAK6gc,uBAChBlga,GAAYA,EAAS9/B,OACnBb,KAAKmkf,eACPnkf,KAAKskf,yBAAyB3jd,EAAUm7Y,GAExC97a,KAAKukf,iBAAiB5jd,EAAUm7Y,EAAQuoE,GAG1Crkf,KAAKuP,OAET,CACF,EAEAy0e,EAAkB9jf,UAAUokf,yBAA2B,SAAU3jd,EAAUm7Y,GACzE,IAAIr7a,EAAQT,KACRoyQ,EAAOpyQ,KAAKmzB,QAAQi/O,KACpBgrB,EAAW6kK,IAAY7vL,GACvB3gI,EAAU9wG,EAAS3P,KAAI,SAAUxmB,GACnC,OAAOA,EAAGk3b,WAAWh8a,IACvB,IACI48a,EAASlwL,EAAK0kM,YAAYj3U,MAC1Bo5R,EAAS7mJ,EAAK2tM,aAAa,GAAGlgV,OAClC,UAAKu9J,GAAU,SAAUvlG,GACvB,IAAIwsT,EAAcjjD,IAAYvpQ,GAC1B2sT,EAAiBH,EAAY9ze,QAAO,SAAU/F,GAChD,IAAIgqD,EAAShqD,EAAGk3b,WAAWh8a,KAC3B,OAAO28a,IAAY5wT,EAASj9E,EAAQ8tY,EAAQrpC,EAC9C,IACAx4Z,EAAM8jf,iBAAiBC,EAAgB1oE,EAAQuoE,EACjD,GACF,EAEAL,EAAkB9jf,UAAUkkf,iBAAmB,SAAUtoE,GACvD,IAAIr7a,EAAQT,KAERo9R,EAAW6kK,IADJjic,KAAKmzB,QAAQi/O,MAEpBiuL,IAAOrgc,KAAKmzB,WAEd,UAAKiqQ,GAAU,SAAUvlG,GACvB,IAAIwsT,EAAcjjD,IAAYvpQ,GAC1B2sT,EAAiBxjD,IAAuBvgc,EAAM0yB,QAAS0kK,EAAS,IAChE2sT,GAAkBA,EAAe3jf,OACnCJ,EAAM8jf,iBAAiBC,EAAgB1oE,EAAQuoE,GAE/C5jf,EAAM8hf,eAAe1qT,EAEzB,GAEJ,EACAmsT,EAAkB9jf,UAAUqkf,iBAAmB,SAAU5jd,EAAUm7Y,EAAQuoE,GACzE,IAAI5jf,EAAQT,MACZ,UAAKqkf,GAAa,SAAU75e,GACrBm2B,EAASx7B,SAASqF,GAGrB/J,EAAM4hf,gBAAgB73e,EAAIsxa,GAF1Br7a,EAAM4hf,gBAAgB73e,GAAI,EAI9B,GACF,EAIAw5e,EAAkB9jf,UAAU2uB,IAAM,WAChC7uB,KAAKikf,WAAY,EACjBjkf,KAAKk3a,SAAWl3a,KAAKyic,iBACvB,EAEAuhD,EAAkB9jf,UAAUqP,MAAQ,WAClC,IAAI9O,EAAQT,KACRoyQ,EAAOpyQ,KAAKmzB,QAAQi/O,KAExB,GAAIpyQ,KAAKkkf,eAAgB,CACvB,IAAI9mN,EAAW6kK,IAAY7vL,IAC3B,UAAKgrB,GAAU,SAAUvlG,GACvBp3L,EAAM8hf,eAAe1qT,EACvB,GACF,MACE73L,KAAKuif,eAAenwO,EAExB,EACO4xO,CACT,CAlJqC,CAkJnC,KACF,QCrJIS,IAAkC,SAAU/if,GAE9C,SAAS+if,IACP,IAAIhkf,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAEhE,OADAS,EAAM8gc,UAAY,SACX9gc,CACT,CAOA,OAZA,UAAUgkf,EAAoB/if,GAS9B+if,EAAmBvkf,UAAUq2H,OAAS,WACpCv2H,KAAKo/D,UACP,EACOqlb,CACT,CAdsC,CAcpC,KACF,QCbIC,IAAkC,SAAUhjf,GAE9C,SAASgjf,IACP,OAAkB,OAAXhjf,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAoCA,OAvCA,UAAU0kf,EAAoBhjf,GAI9Bgjf,EAAmBxkf,UAAUoif,eAAiB,SAAUxmE,GACtD,IAAInsa,EAAUswb,IAAkBjgc,KAAKmzB,SACrC,GAAIxjB,EAAS,CAEX,IAAKwwb,IAAgBngc,KAAKmzB,SACxB,OAGE2oZ,GACF97a,KAAKuP,QACLvP,KAAKqif,gBAAgB1ye,GAAS,IACrB3P,KAAKw8a,SAAS7sa,IACvB3P,KAAKqif,gBAAgB1ye,GAAS,EAElC,CACF,EAIA+0e,EAAmBxkf,UAAU0kT,OAAS,WACpC,IAAIj1S,EAAUswb,IAAkBjgc,KAAKmzB,SACrC,GAAIxjB,EAAS,CACX,IAAI6sa,EAAWx8a,KAAKw8a,SAAS7sa,GACxB6sa,GACHx8a,KAAKuP,QAEPvP,KAAKqif,gBAAgB1ye,GAAU6sa,EACjC,CACF,EAIAkoE,EAAmBxkf,UAAUg2D,MAAQ,WACnCl2D,KAAKsif,gBAAe,EACtB,EACOoC,CACT,CAzCsC,CAyCpC,KACF,QC5CIC,IAAmC,SAAUjjf,GAE/C,SAASijf,IACP,IAAIlkf,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAEhE,OADAS,EAAM8gc,UAAY,SACX9gc,CACT,CAOA,OAZA,UAAUkkf,EAAqBjjf,GAS/Bijf,EAAoBzkf,UAAUq2H,OAAS,WACrCv2H,KAAKo/D,UACP,EACOulb,CACT,CAduC,CAcrC,KACF,QCnBIC,IAAkB,WAClBC,IAAgB,SAMb,SAASC,IAAe1yO,GAC7B,IAAIzxO,EAAWyga,IAAYhvL,IAC3B,UAAKzxO,GAAU,SAAUn2B,GACnBA,EAAGgya,SAASqoE,MACdr6e,EAAG40D,SAASylb,KAAe,GAEzBr6e,EAAGgya,SAASooE,MACdp6e,EAAG40D,SAASwlb,KAAiB,EAEjC,GACF,CAQO,SAASG,IAAepkd,EAAUtgC,EAAUy7a,IACjD,UAAKn7Y,GAAU,SAAUn2B,GAEnBnK,EAASmK,IACPA,EAAGgya,SAASooE,MACdp6e,EAAG40D,SAASwlb,KAAiB,GAE/Bp6e,EAAG40D,SAASylb,IAAe/oE,KAEvBtxa,EAAGgya,SAASqoE,MACdr6e,EAAG40D,SAASylb,KAAe,GAE7Br6e,EAAG40D,SAASwlb,IAAiB9oE,GAEjC,GACF,CCpCO,ICFH,IDEO,IAAkBpkB,IAAcstF,SAChC,IAAgBttF,IAAcutF,OAKrCC,IAAgC,SAAUxjf,GAE5C,SAASwjf,IACP,IAAIzkf,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAEhE,OADAS,EAAM8gc,UAAY,IACX9gc,CACT,CAwEA,OA7EA,UAAUykf,EAAkBxjf,GAO5Bwjf,EAAiBhlf,UAAU2if,uBAAyB,SAAUlid,EAAUk/F,EAAOpoH,EAAMqka,GACnF,IAAIr7a,EAAQT,KAIZA,KAAK+kf,eAAepkd,GAHL,SAAkBn2B,GAC/B,OAAO/J,EAAMsif,WAAWv4e,EAAIq1H,EAAOpoH,EACrC,GACwCqka,EAC1C,EAEAopE,EAAiBhlf,UAAUilf,oBAAsB,SAAU36e,EAAInK,GACzDA,EAASmK,IACPA,EAAGgya,SAAS,MACdhya,EAAG40D,SAAS,KAAiB,GAE/B50D,EAAG40D,SAAS,KAAe,IACjB50D,EAAGgya,SAAS,MACtBhya,EAAG40D,SAAS,KAAiB,EAEjC,EACA8lb,EAAiBhlf,UAAU6kf,eAAiB,SAAUpkd,EAAUtgC,EAAUy7a,GACxE,IAAIr7a,EAAQT,KACZ,GAAI87a,GAGF,UAAKn7Y,GAAU,SAAUn2B,GACvB/J,EAAM0kf,oBAAoB36e,EAAInK,EAChC,QACK,CAEL,IAAI+kf,EAAiB9jD,IAAmBthc,KAAKmzB,QAAQi/O,KAAM,KACvDizO,GAAc,GAElB,UAAKD,GAAgB,SAAU56e,GAC7B,IAAKnK,EAASmK,GAEZ,OADA66e,GAAc,GACP,CAEX,IACIA,EAEFrlf,KAAKuP,SAIL,UAAKoxB,GAAU,SAAUn2B,GACnBnK,EAASmK,KACPA,EAAGgya,SAAS,MACdhya,EAAG40D,SAAS,KAAe,GAE7B50D,EAAG40D,SAAS,KAAiB,GAEjC,GAEJ,CACF,EAEA8lb,EAAiBhlf,UAAUmif,gBAAkB,SAAU1ye,EAASmsa,GAC9D,IACIn7Y,EAAWyga,IADJphc,KAAKmzB,QAAQi/O,MAExBpyQ,KAAK+kf,eAAepkd,GAAU,SAAUn2B,GACtC,OAAOmF,IAAYnF,CACrB,GAAGsxa,EACL,EACAopE,EAAiBhlf,UAAUolf,UAAY,WACrCtlf,KAAKo/D,UACP,EAEA8lb,EAAiBhlf,UAAUqP,MAAQ,WAEjCu1e,IADW9kf,KAAKmzB,QAAQi/O,KAE1B,EACO8yO,CACT,CA/EoC,CA+ElC,KACF,QErFIK,IAA8B,SAAU7jf,GAE1C,SAAS6jf,IACP,OAAkB,OAAX7jf,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAiBA,OApBA,UAAUulf,EAAgB7jf,GAI1B6jf,EAAerlf,UAAU4if,kBAAoB,SAAUnze,EAASmsa,GAC9D,IAAI1pK,EAAOpyQ,KAAKmzB,QAAQi/O,KACpB64N,EAAYt7d,EAAQ0vM,SAASj1J,aAAa,SAC9C,GAAK6gb,EAAL,CAGA,IAAInyd,EAAQs5P,EAAKmwL,gBAAgB0oC,EAAU1sW,YAAY,IACnDp8H,EAAQs/b,IAAgB9xb,EAASmJ,EAAM+mH,OACvCl/F,EAAWyga,IAAYhvL,GACvBozO,EAAoB7kd,EAASpwB,QAAO,SAAU/F,GAChD,OAAOi3b,IAAgBj3b,EAAIsO,EAAM+mH,SAAW19H,CAC9C,IACAnC,KAAK+kf,eAAepkd,GAAU,SAAUn2B,GACtC,OAAOg7e,EAAkBrgf,SAASqF,EACpC,GAAGsxa,EATH,CAUF,EACOypE,CACT,CAtBkC,CAsBhC,KACF,QCvBIE,IAA0B,SAAU/jf,GAEtC,SAAS+jf,IACP,OAAkB,OAAX/jf,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAqCA,OAxCA,UAAUylf,EAAY/jf,GAKtB+jf,EAAWvlf,UAAUilf,oBAAsB,SAAU36e,EAAInK,GACnDA,EAASmK,IACPA,EAAGgya,SAAS,MACdhya,EAAG40D,SAAS,KAAiB,GAE/B50D,EAAG40D,SAAS,KAAe,KAE3B50D,EAAG40D,SAAS,KAAiB,GACzB50D,EAAGgya,SAAS,MACdhya,EAAG40D,SAAS,KAAe,GAGjC,EACAqmb,EAAWvlf,UAAU4if,kBAAoB,SAAUnze,EAASmsa,GAC1D,IAAI1pK,EAAOpyQ,KAAKmzB,QAAQi/O,KACpBt5P,EAAQs5P,EAAK0kM,YACb30c,EAAQs/b,IAAgB9xb,EAASmJ,EAAM+mH,OACvCl/F,EAAWyga,IAAYhvL,GACvBozO,EAAoB7kd,EAASpwB,QAAO,SAAU/F,GAChD,OAAOi3b,IAAgBj3b,EAAIsO,EAAM+mH,SAAW19H,CAC9C,IACAnC,KAAK+kf,eAAepkd,GAAU,SAAUn2B,GACtC,OAAOg7e,EAAkBrgf,SAASqF,EACpC,GAAGsxa,EACL,EAIA2pE,EAAWvlf,UAAU0kT,OAAS,WAC5B,IAAIj1S,EAAUswb,IAAkBjgc,KAAKmzB,SACrC,GAAIxjB,EAAS,CACX,IAAI6sa,EAAW7sa,EAAQ6sa,SAASx8a,KAAKuhc,WACrCvhc,KAAK8if,kBAAkBnze,GAAU6sa,EACnC,CACF,EACOipE,CACT,CA1C8B,CA0C5B,KACF,SF7CA,SAAWj9e,GACTA,EAAyB,iBAAI,0CAC7BA,EAAwB,gBAAI,yCAC5BA,EAAqB,aAAI,sCACzBA,EAAoB,YAAI,oCACzB,CALD,CAKG,MAAW,IAAS,CAAC,IAMxB,IAAIk9e,IAAqC,SAAUhkf,GAEjD,SAASgkf,IACP,IAAIjlf,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAEhE,OADAS,EAAM8gc,UAAY,SACX9gc,CACT,CAoCA,OAzCA,UAAUilf,EAAuBhkf,GAOjCgkf,EAAsBxlf,UAAUqif,eAAiB,SAAUnwO,GACzD0yO,IAAe1yO,EACjB,EAIAszO,EAAsBxlf,UAAUolf,UAAY,WAC1C,IAAInkf,EAAKnB,KAAKmzB,QACZi/O,EAAOjxQ,EAAGixQ,KAGRksM,EAAU,CACZlsM,KAAMA,EACNrnQ,MAJQ5J,EAAG4J,MAKXy6e,kBAJaxlf,KAAK6gc,wBAMpBzuL,EAAK5xQ,KAAK,IAAOmlf,iBAAkB,IAAMprC,SAASnoM,EAAM,IAAOuzO,iBAAkBrnC,IACjFt+c,KAAKo/D,WACLgzM,EAAK5xQ,KAAK,IAAOolf,gBAAiB,IAAMrrC,SAASnoM,EAAM,IAAOwzO,gBAAiBtnC,GACjF,EAIAonC,EAAsBxlf,UAAUqP,MAAQ,WACtC,IAAI6iQ,EAAOpyQ,KAAKmzB,QAAQi/O,KACxBA,EAAK5xQ,KAAK,IAAOk+c,aAAc,IAAMnE,SAASnoM,EAAM,IAAOssM,aAAc,CAAC,IAC1Eh9c,EAAOxB,UAAUqP,MAAM3N,KAAK5B,MAC5BoyQ,EAAK5xQ,KAAK,IAAOu+c,YAAa,IAAMxE,SAASnoM,EAAM,IAAO2sM,YAAa,CAAC,GAC1E,EACA2mC,EAAsBxlf,UAAUqkf,iBAAmB,SAAU5jd,EAAUm7Y,EAAQuoE,GAC7EU,IAAeV,GAAa,SAAU75e,GACpC,OAAOm2B,EAASztB,QAAQ1I,IAAO,CACjC,GAAGsxa,EACL,EACO4pE,CACT,CA3CyC,CA2CvC,KACF,QGpDIG,IAAsC,SAAUnkf,GAElD,SAASmkf,IACP,IAAIplf,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAEhE,OADAS,EAAM8gc,UAAY,SACX9gc,CACT,CAmBA,OAxBA,UAAUolf,EAAwBnkf,GASlCmkf,EAAuB3lf,UAAUolf,UAAY,WAC3Ctlf,KAAKo/D,UACP,EACAymb,EAAuB3lf,UAAUmif,gBAAkB,SAAU1ye,EAASmsa,GAGpEipE,IADe3jD,IADJphc,KAAKmzB,QAAQi/O,OAEC,SAAU5nQ,GACjC,OAAOmF,IAAYnF,CACrB,GAAGsxa,EACL,EAEA+pE,EAAuB3lf,UAAUqP,MAAQ,WAEvCu1e,IADW9kf,KAAKmzB,QAAQi/O,KAE1B,EACOyzO,CACT,CA1B0C,CA0BxC,KACF,QC7BIC,IAAoC,SAAUpkf,GAEhD,SAASokf,IACP,IAAIrlf,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAEhE,OADAS,EAAM8gc,UAAY,WACX9gc,CACT,CAOA,OAZA,UAAUqlf,EAAsBpkf,GAShCokf,EAAqB5lf,UAAU4zK,SAAW,WACxC9zK,KAAKo/D,UACP,EACO0mb,CACT,CAdwC,CActC,KACF,QCdIC,IAAuC,SAAUrkf,GAEnD,SAASqkf,IACP,IAAItlf,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAEhE,OADAS,EAAM8gc,UAAY,WACX9gc,CACT,CAOA,OAZA,UAAUslf,EAAyBrkf,GASnCqkf,EAAwB7lf,UAAU4zK,SAAW,WAC3C9zK,KAAKo/D,UACP,EACO2mb,CACT,CAd2C,CAczC,KACF,QChBIC,IAAqC,SAAUtkf,GAEjD,SAASskf,IACP,IAAIvlf,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAEhE,OADAS,EAAM8gc,UAAY,WACX9gc,CACT,CAOA,OAZA,UAAUulf,EAAuBtkf,GASjCskf,EAAsB9lf,UAAU4zK,SAAW,WACzC9zK,KAAKo/D,UACP,EACO4mb,CACT,CAdyC,CAcvC,KACF,QCXIC,IAAyB,SAAUvkf,GAErC,SAASukf,IACP,IAAIxlf,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAGhE,OAFAS,EAAM8gc,UAAY,GAClB9gc,EAAMylf,iBAAmB,GAClBzlf,CACT,CAkJA,OAxJA,UAAUwlf,EAAWvkf,GAQrBukf,EAAU/lf,UAAUimf,mBAAqB,WACvC,IAAI9te,EAAiB6nb,IAAoBlgc,KAAKmzB,SAC1CkiC,EAAO,KAOX,OANIg3E,IAAOh0H,KACTg9C,EAAO,CACL59C,KAAMY,EAAeZ,KACrBiqG,KAAMrpG,EAAemnD,YAGlBnK,CACT,EAEA4wb,EAAU/lf,UAAUkmf,mBAAqB,WACvC,IAAI3lf,EAAQT,KAER6qH,EAAai3U,IADN9hc,KAAKmzB,QAAQi/O,MAEpB9+P,EAAM,GAMV,OALA,UAAKu3G,GAAY,SAAUrrD,GACrBA,EAAU6sE,UAAY5rI,EAAM4lf,uBAAuB7mb,IACrDlsD,EAAI/S,KAAKi/D,EAEb,IACOlsD,CACT,EAEA2ye,EAAU/lf,UAAUs8a,SAAW,SAAU96T,EAAMjqG,GAC7C,OAAOiqG,EAAK86T,SAAS/ka,EAAMzX,KAAKuhc,UAClC,EAEA0kD,EAAU/lf,UAAUomf,wBAA0B,WAC5C,IAAI7lf,EAAQT,KACR6qH,EAAa7qH,KAAKomf,sBACtB,UAAKv7X,GAAY,SAAUrrD,GACzBA,EAAUk9W,gBAAgBj8a,EAAM8gc,UAClC,GACF,EAEA0kD,EAAU/lf,UAAUmmf,uBAAyB,SAAU7mb,GACrD,IAAIqgE,EAAQrgE,EAAUx9D,IAAI,SAC1B,IAAK69H,EACH,OAAO,EAET,GAAI7/H,KAAK2B,KAAO3B,KAAK2B,IAAI4kf,eAAgB,CACvC,IAAItue,EAASunD,EAAUx9D,IAAI,QAE3B,IAAiD,IAA7ChC,KAAK2B,IAAI4kf,eAAerze,QAAQ+E,GAClC,OAAO,CAEX,CACA,IACIa,EAAQypb,IADDvic,KAAKmzB,QAAQi/O,KACUvyI,GAClC,OAAO/mH,GAASA,EAAMglZ,UACxB,EAEAmoF,EAAU/lf,UAAUsmf,oBAAsB,SAAU/ue,EAAMiqG,GACxD,IAAI+kY,EAAezmf,KAAKkmf,iBACxB,GAAIO,EAAa5lf,OAAQ,CACvB,IAAI6lf,EAAeD,EAAal2e,QAAO,SAAUgzC,GAC/C,OAAOm+D,EAAK86T,SAAS/ka,EAAM8rC,EAC7B,IACA,OAA+B,IAAxBmjc,EAAa7lf,MACtB,CACA,OAAO,CACT,EAEAolf,EAAU/lf,UAAU4if,kBAAoB,SAAUtjb,EAAW7vD,EAASmsa,GACpE,IAAIj8S,EAAQrgE,EAAUx9D,IAAI,SAEtB8W,EAAQypb,IADDvic,KAAKmzB,QAAQi/O,KACUvyI,GAC9B19H,EAAQs/b,IAAgB9xb,EAASkwH,GACjCh/G,EAAO/H,EAAM+mZ,QAAQ19Z,GACzBnC,KAAK2mf,cAAcnnb,EAAW3+C,EAAMi7Z,EACtC,EAEAmqE,EAAU/lf,UAAUoif,eAAiB,SAAUxmE,GAC7C,IAAIr7a,EAAQT,KACR2P,EAAUswb,IAAkBjgc,KAAKmzB,SACrC,GAAIxjB,EAAS,CAEX,IAAIk7G,EAAa7qH,KAAKomf,sBACtB,UAAKv7X,GAAY,SAAUrrD,GACzB/+D,EAAMqif,kBAAkBtjb,EAAW7vD,EAASmsa,EAC9C,GACF,KAAO,CAEL,IAAIzja,EAAiB6nb,IAAoBlgc,KAAKmzB,SAC9C,GAAIk5G,IAAOh0H,GAAiB,CAC1B,IAAIZ,EAAOY,EAAeZ,KACxB+nD,EAAYnnD,EAAemnD,UACzBx/D,KAAKqmf,uBAAuB7mb,IAAcx/D,KAAKwmf,oBAAoB/ue,EAAM+nD,IAC3Ex/D,KAAKs8a,aAAa98W,EAAW/nD,EAAMqka,EAEvC,CACF,CACF,EAEAmqE,EAAU/lf,UAAUymf,cAAgB,SAAUjlY,EAAMz/G,EAAM65a,GACxD,IAAIr7a,EAAQT,KACRmmD,EAAQu7D,EAAKw6T,YACjB,UAAK/1X,GAAO,SAAU1uC,GAChBA,EAAKxV,OAASA,GAChBxB,EAAM67a,aAAa56T,EAAMjqG,EAAMqka,EAEnC,GACF,EAEAmqE,EAAU/lf,UAAUo8a,aAAe,SAAU56T,EAAMjqG,EAAMqka,GACvDp6T,EAAK46T,aAAa7ka,EAAMzX,KAAKuhc,UAAWzlB,EAC1C,EAIAmqE,EAAU/lf,UAAUk/D,SAAW,WAC7Bp/D,KAAKsif,gBAAe,EACtB,EAIA2D,EAAU/lf,UAAUg2D,MAAQ,WAC1Bl2D,KAAKsif,gBAAe,EACtB,EAIA2D,EAAU/lf,UAAU0kT,OAAS,WAC3B,IAAIgiM,EAAc5mf,KAAKmmf,qBACvB,GAAIS,GAAeA,EAAYnve,KAAM,CACnC,IAAIiqG,EAAOklY,EAAYllY,KACrBjqG,EAAOmve,EAAYnve,KACjBqka,EAAS97a,KAAKw8a,SAAS96T,EAAMjqG,GACjCzX,KAAKs8a,aAAa56T,EAAMjqG,GAAOqka,EACjC,CACF,EAIAmqE,EAAU/lf,UAAUqP,MAAQ,WAC1B,IAAIq3e,EAAc5mf,KAAKmmf,qBACnBS,EACFA,EAAYllY,KAAKg7T,gBAAgB18a,KAAKuhc,WAEtCvhc,KAAKsmf,yBAET,EACOL,CACT,CA1J6B,CA0J3B,KACF,QC9JIY,IAA0B,SAAUnlf,GAEtC,SAASmlf,IACP,IAAIpmf,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAEhE,OADAS,EAAM8gc,UAAY,SACX9gc,CACT,CAOA,OAZA,UAAUomf,EAAYnlf,GAStBmlf,EAAW3mf,UAAUq2H,OAAS,WAC5Bv2H,KAAKo/D,UACP,EACOynb,CACT,CAd8B,CAc5B,KACF,QCrBI,IAAkB,WAClB,IAAgB,SCEpB,IAAI,IAAkB,WAClB,IAAgB,SAMhBC,IAA6B,SAAUplf,GAEzC,SAASolf,IACP,IAAIrmf,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAGhE,OAFAS,EAAM8gc,UAAY,IAClB9gc,EAAMylf,iBAAmB,CAAC,aACnBzlf,CACT,CA2EA,OAjFA,UAAUqmf,EAAeplf,GAQzBolf,EAAc5mf,UAAUymf,cAAgB,SAAUjlY,EAAMz/G,EAAM65a,GAC5D97a,KAAK+kf,eAAerjY,GAAM,SAAUjqG,GAClC,OAAOA,EAAKxV,OAASA,CACvB,GAAG65a,EACL,EAEAgrE,EAAc5mf,UAAUo8a,aAAe,SAAU56T,EAAMjqG,EAAMqka,GAC/Cp6T,EAAKw6T,WACjBl8a,KAAK+kf,eAAerjY,GAAM,SAAUl3G,GAClC,OAAOA,IAAOiN,CAChB,GAAGqka,EACL,EAEAgrE,EAAc5mf,UAAU6kf,eAAiB,SAAUrjY,EAAMrhH,EAAUy7a,GACjE,IAAI31X,EAAQu7D,EAAKw6T,WACjB,GAAIJ,GAEF,UAAK31X,GAAO,SAAU1uC,GAChBpX,EAASoX,IACPiqG,EAAK86T,SAAS/ka,EAAM,MACtBiqG,EAAK46T,aAAa7ka,EAAM,KAAiB,GAE3CiqG,EAAK46T,aAAa7ka,EAAM,KAAe,IAC7BiqG,EAAK86T,SAAS/ka,EAAM,MAC9BiqG,EAAK46T,aAAa7ka,EAAM,KAAiB,EAE7C,QACK,CACL,IAAIsve,EAAcrlY,EAAKi7T,gBAAgB,KACnC0oE,GAAc,GAElB,UAAK0B,GAAa,SAAUtve,GAC1B,IAAKpX,EAASoX,GAEZ,OADA4te,GAAc,GACP,CAEX,IACIA,EACFrlf,KAAKuP,SAIL,UAAK42C,GAAO,SAAU1uC,GAChBpX,EAASoX,KACPiqG,EAAK86T,SAAS/ka,EAAM,MACtBiqG,EAAK46T,aAAa7ka,EAAM,KAAe,GAEzCiqG,EAAK46T,aAAa7ka,EAAM,KAAiB,GAE7C,GAEJ,CACF,EAIAqve,EAAc5mf,UAAUolf,UAAY,WAClCtlf,KAAKo/D,UACP,EAEA0nb,EAAc5mf,UAAUqP,MAAQ,WAC9B,IAAIq3e,EAAc5mf,KAAKmmf,qBACvB,GAAIS,GD1ED,SAAmBllY,GACxB,IAAIv7D,EAAQu7D,EAAKw6T,YACjB,UAAK/1X,GAAO,SAAU1uC,GAChBiqG,EAAK86T,SAAS/ka,EAAM,MACtBiqG,EAAK46T,aAAa7ka,EAAM,KAAe,GAErCiqG,EAAK86T,SAAS/ka,EAAM,MACtBiqG,EAAK46T,aAAa7ka,EAAM,KAAiB,EAE7C,GACF,CCiEMuve,CAAUJ,EAAYllY,UACjB,CAEL,IAAImJ,EAAa7qH,KAAKomf,sBACtB,UAAKv7X,GAAY,SAAUrrD,GACzBA,EAAUk9W,gBAAgB,KAC1Bl9W,EAAUk9W,gBAAgB,IAC5B,GACF,CACF,EACOoqE,CACT,CAnFiC,CAmF/B,KACF,QCzFIG,IAA4B,SAAUvlf,GAExC,SAASulf,IACP,IAAIxmf,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAEhE,OADAS,EAAM8gc,UAAY,WACX9gc,CACT,CAIA,OATA,UAAUwmf,EAAcvlf,GAMxBulf,EAAa/mf,UAAU4zK,SAAW,WAChC9zK,KAAKo/D,UACP,EACO6nb,CACT,CAXgC,CAW9B,KACF,QCZIC,IAA6B,SAAUxlf,GAEzC,SAASwlf,IACP,IAAIzmf,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAEhE,OADAS,EAAM8gc,UAAY,YACX9gc,CACT,CAOA,OAZA,UAAUymf,EAAexlf,GASzBwlf,EAAchnf,UAAUqnb,UAAY,WAClCvnb,KAAKo/D,UACP,EACO8nb,CACT,CAdiC,CAc/B,KACF,QClBIC,IAAmB,YACnBC,IAAiB,UAQjBC,IAA2B,SAAU3lf,GAEvC,SAAS2lf,IACP,IAAI5mf,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAEhE,OADAS,EAAM8gc,UAAY6lD,IACX3mf,CACT,CA+DA,OApEA,UAAU4mf,EAAa3lf,GAOvB2lf,EAAYnnf,UAAUo8a,aAAe,SAAU56T,EAAMjqG,EAAMqka,GACzD97a,KAAKsnf,aAAa5lY,GAAM,SAAUl3G,GAChC,OAAOA,IAAOiN,CAChB,GAAGqka,EACL,EAEAurE,EAAYnnf,UAAUonf,aAAe,SAAU5lY,EAAMrhH,EAAUy7a,GAC7D,IAAI31X,EAAQu7D,EAAKw6T,WACbJ,IAEF,UAAK31X,GAAO,SAAU1uC,GAChBpX,EAASoX,IACPiqG,EAAK86T,SAAS/ka,EAAM0ve,MACtBzlY,EAAK46T,aAAa7ka,EAAM0ve,KAAkB,GAE5CzlY,EAAK46T,aAAa7ka,EAAM2ve,KAAgB,IAC9B1lY,EAAK86T,SAAS/ka,EAAM2ve,MAC9B1lY,EAAK46T,aAAa7ka,EAAM0ve,KAAkB,EAE9C,GAEJ,EAOAE,EAAYnnf,UAAU0kT,OAAS,WAC7B,IAAIgiM,EAAc5mf,KAAKmmf,qBACvB,GAAIS,GAAeA,EAAYnve,KAAM,CACnC,IAAI8ve,EAASX,EAAYllY,KACvBjqG,EAAOmve,EAAYnve,KAEjB+ve,IAAc,SAAKD,EAAOrrE,YAAY,SAAUn4a,GAClD,OAAOwjf,EAAO/qE,SAASz4a,EAAGojf,IAC5B,IAEIK,GAAcD,EAAO/qE,SAAS/ka,EAAM0ve,KACtCnnf,KAAKs8a,aAAairE,EAAQ9ve,GAAM,GAEhCzX,KAAKk2D,OAET,CACF,EAIAmxb,EAAYnnf,UAAU8vE,QAAU,WAC9BhwE,KAAKo/D,UACP,EAIAiob,EAAYnnf,UAAUg2D,MAAQ,WAC5B,IAAI20D,EAAa7qH,KAAKomf,sBACtB,UAAKv7X,GAAY,SAAUrrD,GACzBA,EAAUk9W,gBAAgB0qE,KAC1B5nb,EAAUk9W,gBAAgByqE,IAC5B,GACF,EACOE,CACT,CAtE+B,CAsE7B,KACF,QCjFI,IAAmB,YACnBI,IAAyB,SAAU/lf,GAErC,SAAS+lf,IACP,OAAkB,OAAX/lf,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CA+FA,OAlGA,UAAUynf,EAAW/lf,GAIrB+lf,EAAUvnf,UAAU0kT,OAAS,WAC3B,IAAIozI,EAAK72b,EAAIu2c,EAAKxgc,EAAI8hc,EAAK7hc,EAAIoic,EAAKj7a,EAChCsod,EAAc5mf,KAAKmmf,qBACvB,GAAIS,aAAiD,EAASA,EAAYnve,KAAM,CAC9E,IAAI8ve,EAASX,EAAYllY,KACvBgmY,EAAcd,EAAYnve,KACxB0uC,EAAQohc,EAAOrrE,WACfyrE,EAAexhc,EAAM51C,QAAO,SAAUxM,GACxC,OAAQwjf,EAAO/qE,SAASz4a,EAAG,IAC7B,IACI6jf,EAAiBzhc,EAAM51C,QAAO,SAAUxM,GAC1C,OAAOwjf,EAAO/qE,SAASz4a,EAAG,IAC5B,IACI8jf,EAAcF,EAAa,GAQ/B,GAAIxhc,EAAMtlD,SAAW8mf,EAAa9mf,OAChC,IACE,IAAK,IAAIunb,GAAU,UAASjiY,GAAQwga,EAAYv+B,EAAQ7yZ,QAASoxb,EAAUrua,KAAMqua,EAAYv+B,EAAQ7yZ,OAAQ,CAC3G,IAAI9d,EAAOkvc,EAAUxkd,MACrBolf,EAAOjrE,aAAa7ka,EAAM,IAAkBA,EAAK/D,KAAOg0e,EAAYh0e,GACtE,CACF,CAAE,MAAOykb,GACPH,EAAM,CACJ5qY,MAAO+qY,EAEX,CAAE,QACA,IACMwuB,IAAcA,EAAUrua,OAASn3C,EAAKinb,EAAQnvN,SAAS93N,EAAGS,KAAKwmb,EACrE,CAAE,QACA,GAAI4P,EAAK,MAAMA,EAAI5qY,KACrB,CACF,MACK,GAAIjH,EAAMtlD,OAAS+mf,EAAe/mf,QAAW,EAClD,GAAIgnf,EAAYn0e,KAAOg0e,EAAYh0e,GACjC,IACE,IAAK,IAAIqzc,GAAU,UAAS5ga,GAAQ6ga,EAAYD,EAAQxxb,QAASyxb,EAAU1ua,KAAM0ua,EAAYD,EAAQxxb,OAAQ,CACvG9d,EAAOuvc,EAAU7kd,MACrBolf,EAAOjrE,aAAa7ka,EAAM,KAAkB,EAC9C,CACF,CAAE,MAAO6gc,GACPZ,EAAM,CACJtqZ,MAAOkrZ,EAEX,CAAE,QACA,IACM0O,IAAcA,EAAU1ua,OAASphC,EAAK6vc,EAAQ9tP,SAAS/hN,EAAGtV,KAAKmld,EACrE,CAAE,QACA,GAAIrP,EAAK,MAAMA,EAAItqZ,KACrB,CACF,MAEA,IACE,IAAK,IAAIs6Z,GAAU,UAASvha,GAAQwha,EAAYD,EAAQnyb,QAASoyb,EAAUrva,KAAMqva,EAAYD,EAAQnyb,OAAQ,CACvG9d,EAAOkwc,EAAUxld,MACrBolf,EAAOjrE,aAAa7ka,EAAM,IAAkBA,EAAK/D,KAAOg0e,EAAYh0e,GACtE,CACF,CAAE,MAAO0lc,GACPJ,EAAM,CACJ5rZ,MAAOgsZ,EAEX,CAAE,QACA,IACMuO,IAAcA,EAAUrva,OAASnhC,EAAKuwc,EAAQzuP,SAAS9hN,EAAGvV,KAAK8ld,EACrE,CAAE,QACA,GAAI1O,EAAK,MAAMA,EAAI5rZ,KACrB,CACF,MAGF,IACE,IAAK,IAAI06b,GAAU,UAAS3hc,GAAQ4hc,EAAYD,EAAQvyd,QAASwyd,EAAUzvc,KAAMyvc,EAAYD,EAAQvyd,OAAQ,CACvG9d,EAAOswe,EAAU5lf,MACrBolf,EAAOjrE,aAAa7ka,EAAM,IAAkBA,EAAK/D,KAAOg0e,EAAYh0e,GACtE,CACF,CAAE,MAAOimc,GACPJ,EAAM,CACJnsZ,MAAOusZ,EAEX,CAAE,QACA,IACMouC,IAAcA,EAAUzvc,OAASha,EAAKwpd,EAAQ7uR,SAAS36L,EAAG18B,KAAKkmf,EACrE,CAAE,QACA,GAAIvuC,EAAK,MAAMA,EAAInsZ,KACrB,CACF,CAEJ,CACF,EACOq6b,CACT,CApG6B,CAoG3B,KACF,QCnGIO,IAAc,YACdC,IAAS,mBACTC,IAAyB,SAAUxmf,GAErC,SAASwmf,IACP,IAAIznf,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAEhE,OADAS,EAAM0L,UAAY,EACX1L,CACT,CA4GA,OAjHA,UAAUynf,EAAWxmf,GAMrBwmf,EAAUhof,UAAUoV,KAAO,WACzB,IAAIsxe,EAAc5mf,KAAKmmf,qBACvB,GAAIS,aAAiD,EAASA,EAAYnve,KAAM,CAC9E,IAAIiqG,EAAOklY,EAAYllY,KACrBjqG,EAAOmve,EAAYnve,KACrBiqG,EAAK46T,aAAa7ka,EAAMuwe,KAAa,EACvC,CACF,EACAE,EAAUhof,UAAUqV,KAAO,WACzB,IAAIqxe,EAAc5mf,KAAKmmf,qBACvB,GAAIS,aAAiD,EAASA,EAAYnve,KAAM,CAC9E,IAAIiqG,EAAOklY,EAAYllY,KACrBjqG,EAAOmve,EAAYnve,KACrBiqG,EAAK46T,aAAa7ka,EAAMuwe,KAAa,EACvC,CACF,EACAE,EAAUhof,UAAUkC,QAAU,WAC5BV,EAAOxB,UAAUkC,QAAQR,KAAK5B,MAC9BA,KAAK+kQ,SAAW/kQ,KAAK+kQ,QAAQ3iQ,SAC/B,EAKA8lf,EAAUhof,UAAUiof,QAAU,WAC5B,IACIr+e,EADU9J,KAAKmzB,QACFpoB,MACb62e,EAAgB5hf,KAAKmM,UACrBA,GAAa,IAAInJ,KACjB0F,EAAS1I,KAAKmzB,QAAQpoB,MAAMrC,OAChC,GAAIyD,EAAYy1e,EAAgB,IAA6B,sBAAvBl5e,EAAO1G,IAAI,QAAiC,CAChF,IAAI6/e,EAAS7hf,KAAK2tQ,SACdm0O,EAAS,CACX72e,EAAGnB,EAAGmB,EACNC,EAAGpB,EAAGoB,GAERlL,KAAKmM,UAAYA,EACjBnM,KAAK2tQ,SAAWm0O,EACXD,IAAW,UAAQA,EAAQC,IAC9B9hf,KAAK8gd,YAAYghC,EAErB,CACF,EAKAoG,EAAUhof,UAAUkof,QAAU,WAC5Bpof,KAAK+gd,cACL/gd,KAAK2tQ,SAAW,IAClB,EACAu6O,EAAUhof,UAAU4gd,YAAc,SAAUghC,GAC1C,IAAI3ud,EAAUnzB,KAAKmzB,QAEfzqB,EADKyqB,EAAQpoB,MACDrC,OAChB,GAAIA,GAAUA,EAAO1G,IAAI,OAAQ,CAC1BhC,KAAK+kQ,SACR/kQ,KAAKmmd,gBAGP,IAAIhld,EAAKgyB,EAAQi/O,KAAKrgQ,YAAY/P,IAAI,MAAM+M,wBAC1CR,EAAUpN,EAAG8J,EACbwD,EAAUtN,EAAG+J,EACflL,KAAK+kQ,QAAQv/P,QAAO,WAAS,UAAS,CACpCusD,MAAOrpD,EAAO1G,IAAI,QACjB8/e,GAAS,CACV72e,EAAG62e,EAAO72e,EAAIsD,EACdrD,EAAG42e,EAAO52e,EAAIuD,KAEhBzO,KAAK+kQ,QAAQzvP,MACf,CACF,EACA4ye,EAAUhof,UAAU6gd,YAAc,WAChC/gd,KAAK+kQ,SAAW/kQ,KAAK+kQ,QAAQxvP,MAC/B,EACA2ye,EAAUhof,UAAUimd,cAAgB,WAClC,IAAIhld,EACAghf,IAAiBhhf,EAAK,CAAC,GAAM,KAAqC,CACpEi5E,QAAS,UACTtmE,UAAW,wBACXy2D,WAAY,mBACZx2B,MAAO,OACP,gBAAiB,MAEjB,UAAW,KACV5yC,EAAG,KAAiC,CACrC,YAAa,OACb,cAAe,OACf,gBAAiB,EACjB,aAAc,aACbA,GACCwJ,SAAS8C,eAAew6e,MAC1Bt9e,SAASgiD,KAAKt9C,YAAY1E,SAAS8C,eAAew6e,MAEpD,IAAIljP,EAAU,IAAI0xL,IAAY,CAC5B7kb,OAAQjH,SAASgiD,KAEjBwhX,OAAQ,KACR55Z,SAAS,EACTg7a,WAAY,KACZrV,UAAWioE,EACXkG,YAAaJ,MAEfljP,EAAQz6P,OACRy6P,EAAQgrK,YAAW,GACnB/va,KAAK+kQ,QAAUA,CACjB,EACOmjP,CACT,CAnH6B,CAmH3B,KACF,QCpHII,IAAwB,SAAU5mf,GAEpC,SAAS4mf,IACP,IAAI7nf,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAWhE,OATAS,EAAMk/b,UAAY,KAElBl/b,EAAMigB,OAAS,GAEfjgB,EAAM8nf,UAAW,EAEjB9nf,EAAM+nf,QAAS,EACf/nf,EAAMgof,aAAe,KACrBhof,EAAM6Q,UAAY,OACX7Q,CACT,CAkJA,OAhKA,UAAU6nf,EAAU5mf,GAgBpB4mf,EAASpof,UAAUuic,gBAAkB,WACnC,IAAI13b,EAAQ/K,KAAKmzB,QAAQpoB,MACzB,MAAO,CACLE,EAAGF,EAAME,EACTC,EAAGH,EAAMG,EAEb,EAEAo9e,EAASpof,UAAUq4H,UAAY,SAAU5vH,GACvC,IAAI8B,EAAY,QAAQ8I,OAAO5K,GAC3BypQ,EAAOpyQ,KAAKmzB,QAAQi/O,KACpBrnQ,EAAQ/K,KAAKmzB,QAAQpoB,MACzBqnQ,EAAK5xQ,KAAKiK,EAAW,CACnB/B,OAAQ1I,KAAK2/b,UACbl6b,MAAOzF,KAAK2/b,UACZj/a,OAAQ1gB,KAAK0gB,OACbzV,EAAGF,EAAME,EACTC,EAAGH,EAAMG,GAEb,EAEAo9e,EAASpof,UAAUwof,WAAa,WAC9B,IAAIt2O,EAAOpyQ,KAAKmzB,QAAQi/O,KACpBu2O,EAAY3of,KAAK4of,eAUrB,OATgBx2O,EAAK0rM,gBAAgBzsc,SAAS,CAC5C1I,KAAM3I,KAAKsR,UACXrP,KAAM,OACNirb,WAAW,EACX5mb,OAAO,UAAS,CACds1C,KAAM,UACNjnC,QAAS,IACRg0e,IAGP,EAEAL,EAASpof,UAAU6gc,YAAc,WAC/B,MAAO,EACT,EAIAunD,EAASpof,UAAUoV,KAAO,WACpBtV,KAAK2/b,YACP3/b,KAAK2/b,UAAUrqb,OACftV,KAAKu4H,UAAU,QAEnB,EAIA+vX,EAASpof,UAAUwmB,MAAQ,SAAU81B,GACnCx8C,KAAKuof,UAAW,EAEhBvof,KAAKwof,QAAS,EACdxof,KAAK0gB,OAAS,CAAC1gB,KAAKyic,mBACfzic,KAAK2/b,YACR3/b,KAAK2/b,UAAY3/b,KAAK0of,aAEtB1of,KAAK2/b,UAAUz9b,IAAI,WAAW,IAEhClC,KAAK6of,WAAWrsc,aAAiC,EAASA,EAAIk/E,WAC9D17H,KAAKu4H,UAAU,QACjB,EAIA+vX,EAASpof,UAAU4of,UAAY,WAC7B9of,KAAKwof,QAAS,EACdxof,KAAKyof,aAAezof,KAAKyic,iBAC3B,EAIA6lD,EAASpof,UAAUwY,KAAO,WACxB,GAAK1Y,KAAKwof,QAAWxof,KAAK2/b,UAA1B,CAGA,IAAIhgb,EAAe3f,KAAKyic,kBACpBgmD,EAAezof,KAAKyof,aACpB77e,EAAK+S,EAAa1U,EAAIw9e,EAAax9e,EACnC4B,EAAK8S,EAAazU,EAAIu9e,EAAav9e,EACnCwV,EAAS1gB,KAAK0gB,QAClB,UAAKA,GAAQ,SAAU1V,GACrBA,EAAMC,GAAK2B,EACX5B,EAAME,GAAK2B,CACb,IACA7M,KAAK6of,aACL7of,KAAKu4H,UAAU,UACfv4H,KAAKyof,aAAe9oe,CAZpB,CAaF,EACA2oe,EAASpof,UAAU2of,WAAa,SAAUntX,GACxC,IAAIp1H,GAAQ,UAAQ,CAAC,EAAGtG,KAAK4of,eAAgBltX,GAC7C17H,KAAK2/b,UAAUv5b,KAAKE,EACtB,EAIAgif,EAASpof,UAAU6of,QAAU,WAC3B/of,KAAKwof,QAAS,EACdxof,KAAKyof,aAAe,IACtB,EAIAH,EAASpof,UAAU2uB,IAAM,WACvB7uB,KAAKuof,UAAW,EAChBvof,KAAKu4H,UAAU,OACXv4H,KAAK2/b,WACP3/b,KAAK2/b,UAAUz9b,IAAI,WAAW,EAElC,EAIAomf,EAASpof,UAAUqV,KAAO,WACpBvV,KAAK2/b,YACP3/b,KAAK2/b,UAAUpqb,OACfvV,KAAKu4H,UAAU,QAEnB,EAIA+vX,EAASpof,UAAU4jL,OAAS,WAEtB9jL,KAAKuof,UAAYvof,KAAK2/b,YACxB3/b,KAAK0gB,OAAOngB,KAAKP,KAAKyic,mBACtBzic,KAAK6of,aACL7of,KAAKu4H,UAAU,UAEnB,EAIA+vX,EAASpof,UAAUkC,QAAU,WAC3BpC,KAAK0gB,OAAS,GACV1gB,KAAK2/b,WACP3/b,KAAK2/b,UAAUxsb,SAEjBnT,KAAK2/b,UAAY,KACjB3/b,KAAKyof,aAAe,KACpB/mf,EAAOxB,UAAUkC,QAAQR,KAAK5B,KAChC,EACOsof,CACT,CAlK4B,CAkK1B,KACF,QCtKO,SAASM,IAAaloe,GAC3B,IAAIf,GAAe,UAAKe,GACpBxB,EAAI,EACJjU,EAAI,EACJC,EAAI,EACR,GAAIwV,EAAO7f,OAAQ,CACjB,IAAI07B,EAAQ7b,EAAO,GACnBxB,EAAI,IAASqd,EAAO5c,GAAgB,EACpC1U,GAAK0U,EAAa1U,EAAIsxB,EAAMtxB,GAAK,EACjCC,GAAKyU,EAAazU,EAAIqxB,EAAMrxB,GAAK,CACnC,CACA,MAAO,CACLD,EAAGA,EACHC,EAAGA,EACHgU,EAAGA,EAEP,CAKA,IAAI8pe,IAA0B,SAAUtnf,GAEtC,SAASsnf,IACP,IAAIvof,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAEhE,OADAS,EAAM6Q,UAAY,SACX7Q,CACT,CAIA,OATA,UAAUuof,EAAYtnf,GAMtBsnf,EAAW9of,UAAU0of,aAAe,WAClC,OAAOA,IAAa5of,KAAK0gB,OAC3B,EACOsoe,CACT,CAX8B,CAW5B,KACF,QClCO,SAASzsD,IAAU77a,GACxB,MAAO,CACLgG,OAAO,UAAKhG,GACZmO,KAAK,UAAKnO,GAEd,CAMO,SAAS,IAAagG,EAAOmI,GAKlC,MAAO,CACL5jB,EALMgP,KAAKC,IAAIwM,EAAMzb,EAAG4jB,EAAI5jB,GAM5BC,EALM+O,KAAKC,IAAIwM,EAAMxb,EAAG2jB,EAAI3jB,GAM5B6C,MALUkM,KAAKoG,IAAIwO,EAAI5jB,EAAIyb,EAAMzb,GAMjC+C,OALWiM,KAAKoG,IAAIwO,EAAI3jB,EAAIwb,EAAMxb,GAOtC,CAKA,IAAI+9e,IAAwB,SAAUvnf,GAEpC,SAASunf,IACP,IAAIxof,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAEhE,OADAS,EAAM6Q,UAAY,OACX7Q,CACT,CAUA,OAfA,UAAUwof,EAAUvnf,GAMpBunf,EAAS/of,UAAUq8b,UAAY,WAC7B,OAAOA,IAAUv8b,KAAK0gB,OACxB,EACAuoe,EAAS/of,UAAU0of,aAAe,WAChC,IAAIznf,EAAKnB,KAAKu8b,YAGd,OAAO,IAFGp7b,EAAGulB,MACLvlB,EAAG0tB,IAEb,EACOo6d,CACT,CAjB4B,CAiB1B,KACF,QC7CA,SAASC,IAAWl+e,GAClBA,EAAMC,GAAI,UAAMD,EAAMC,EAAG,EAAG,GAC5BD,EAAME,GAAI,UAAMF,EAAME,EAAG,EAAG,EAC9B,CACO,SAAS,IAAUwV,EAAQgxR,EAAKy3M,EAAQl2I,GAC7C,IAAIvsV,EAAQ,KACRmI,EAAM,KACNu6d,EAAcn2I,EAAM3uV,QAAO,UAAK5D,IAChC2oe,EAAYp2I,EAAM3uV,QAAO,UAAK5D,IA2BlC,OA1BIyoe,IAEFD,IAAWE,GACXF,IAAWG,IAED,MAAR33M,GAEFhrR,EAAQusV,EAAMp0J,QAAQ,CACpB5zM,EAAGm+e,EAAYn+e,EACfC,EAAG,IAEL2jB,EAAMokV,EAAMp0J,QAAQ,CAClB5zM,EAAGo+e,EAAUp+e,EACbC,EAAG,MAILwb,EAAQusV,EAAMp0J,QAAQ,CACpB5zM,EAAG,EACHC,EAAGk+e,EAAYl+e,IAEjB2jB,EAAMokV,EAAMp0J,QAAQ,CAClB5zM,EAAG,EACHC,EAAGm+e,EAAUn+e,KAGV,CACLwb,MAAOA,EACPmI,IAAKA,EAET,CAIA,IAAIy6d,IAAuB,SAAU5nf,GAEnC,SAAS4nf,IACP,IAAI7of,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAGhE,OAFAS,EAAMixS,IAAM,IACZjxS,EAAM0of,QAAS,EACR1of,CACT,CAKA,OAXA,UAAU6of,EAAS5nf,GAOnB4nf,EAAQppf,UAAUq8b,UAAY,WAC5B,IAAItpF,EAAQjzW,KAAKmzB,QAAQi/O,KAAK+vL,gBAC9B,OAAO,IAAUnic,KAAK0gB,OAAQ1gB,KAAK0xS,IAAK1xS,KAAKmpf,OAAQl2I,EACvD,EACOq2I,CACT,CAb2B,CAazB,KACF,QCpDO,SAAS,IAAY5oe,GAC1B,IAAI7Z,EAAO,GAWX,OAVI6Z,EAAO7f,UACT,UAAK6f,GAAQ,SAAU1V,EAAOhD,GACd,IAAVA,EACFnB,EAAKtG,KAAK,CAAC,IAAKyK,EAAMC,EAAGD,EAAME,IAE/BrE,EAAKtG,KAAK,CAAC,IAAKyK,EAAMC,EAAGD,EAAME,GAEnC,IACArE,EAAKtG,KAAK,CAAC,IAAKmgB,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,KAElCrE,CACT,CACO,SAAS,IAAa6Z,GAC3B,MAAO,CACL7Z,KAAM,IAAY6Z,GAEtB,CAKA,IAAI6oe,IAAwB,SAAU7nf,GAEpC,SAAS6nf,IACP,OAAkB,OAAX7nf,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAaA,OAhBA,UAAUupf,EAAU7nf,GAIpB6nf,EAASrpf,UAAU6gc,YAAc,WAC/B,OAAO,IAAY/gc,KAAK0gB,OAC1B,EACA6oe,EAASrpf,UAAU0of,aAAe,WAChC,OAAO,IAAa5of,KAAK0gB,OAC3B,EAIA6oe,EAASrpf,UAAUspf,SAAW,WAC5Bxpf,KAAK8jL,QACP,EACOylU,CACT,CAlB4B,CAkB1B,KACF,QC1CO,SAAS,IAAY7oe,GAC1B,OzNkYK,SAAmBA,EAAQ+E,GAChC,GAAI/E,EAAO7f,QAAU,EACnB,OAAO,IAAY6f,GAAQ,GAE7B,IAAI6b,EAAQ7b,EAAO,GACfjK,EAAM,IACV,UAAKiK,GAAQ,SAAU1V,GACrByL,EAAIlW,KAAKyK,EAAMC,GACfwL,EAAIlW,KAAKyK,EAAME,EACjB,IACA,IAAIrE,EAAO63b,IAAkBjob,EAAKgP,EAAG,MAErC,OADA5e,EAAK8O,QAAQ,CAAC,IAAK4mB,EAAMtxB,EAAGsxB,EAAMrxB,IAC3BrE,CACT,CyN/YS4if,CAAU/oe,GAAQ,EAC3B,CACO,SAAS,IAAaA,GAC3B,MAAO,CACL7Z,KAAM,IAAY6Z,GAEtB,CAKA,ICkBI,IDlBAgpe,IAA8B,SAAUhof,GAE1C,SAASgof,IACP,OAAkB,OAAXhof,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAOA,OAVA,UAAU0pf,EAAgBhof,GAI1Bgof,EAAexpf,UAAU6gc,YAAc,WACrC,OAAO,IAAY/gc,KAAK0gB,OAC1B,EACAgpe,EAAexpf,UAAU0of,aAAe,WACtC,OAAO,IAAa5of,KAAK0gB,OAC3B,EACOgpe,CACT,CAZkC,CAYhC,KACF,QE1BIC,IAAgC,SAAUjof,GAE5C,SAASiof,IACP,IAAIlpf,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAYhE,OAVAS,EAAMq/b,WAAa,GAEnBr/b,EAAM8nf,UAAW,EAEjB9nf,EAAM+nf,QAAS,EAEf/nf,EAAMmpf,aAAe,KACrBnpf,EAAMgof,aAAe,KACrBhof,EAAM6Q,UAAY,OAClB7Q,EAAMopf,SAAW,aACVppf,CACT,CAoRA,OAnSA,UAAUkpf,EAAkBjof,GAmB5Biof,EAAiBzpf,UAAUuic,gBAAkB,WAC3C,IAAI13b,EAAQ/K,KAAKmzB,QAAQpoB,MACzB,MAAO,CACLE,EAAGF,EAAME,EACTC,EAAGH,EAAMG,EAEb,EAKAy+e,EAAiBzpf,UAAUq4H,UAAY,SAAU5vH,GAC/C,IAAI8B,EAAY,GAAG8I,OAAOvT,KAAK6pf,SAAU,KAAKt2e,OAAO5K,GACjDypQ,EAAOpyQ,KAAKmzB,QAAQi/O,KACpBrnQ,EAAQ/K,KAAKmzB,QAAQpoB,MACrBrC,EAAS,CACXC,KAAM3I,KAAKsR,UACXrP,KAAMjC,KAAK6pf,SACX7nf,IAAK,SAAa6+B,GAChB,OAAOn4B,EAAO6O,eAAespB,GAAOn4B,EAAOm4B,QAAOpK,CACpD,GAEF27O,EAAK5xQ,KAAKiK,EAAW,CACnB/B,OAAQA,EACRo3b,WAAY9/b,KAAK8/b,WACjBgqD,YAAa9pf,KAAK4pf,aAClB3+e,EAAGF,EAAME,EACTC,EAAGH,EAAMG,GAEb,EAKAy+e,EAAiBzpf,UAAUwof,WAAa,SAAU1gf,GAChD,IAAIoqQ,EAAOpyQ,KAAKmzB,QAAQi/O,KACpB1xP,EAAS1gB,KAAK4pf,aAAa5hf,GAC3B2gf,EAAY3of,KAAK4of,aAAaloe,GAC9Bi/a,EAAYvtL,EAAK0rM,gBAAgBzsc,SAAS,CAC5C1I,KAAM3I,KAAKsR,UACXrP,KAAM,OACNirb,WAAW,EACX5mb,OAAO,UAAS,CACds1C,KAAM,UACNjnC,QAAS,IACRg0e,KAEL3of,KAAK8/b,WAAWv/b,KAAKo/b,EACvB,EAIAgqD,EAAiBzpf,UAAU6gc,YAAc,SAAUrgb,GACjD,MAAO,EACT,EAIAipe,EAAiBzpf,UAAUoV,KAAO,WAC5BtV,KAAK8/b,WAAWj/b,OAAS,IAC3Bb,KAAK8/b,WAAW13b,SAAQ,SAAUu3b,GAChC,OAAOA,EAAUrqb,MACnB,IACAtV,KAAKu4H,UAAU,QAEnB,EAIAoxX,EAAiBzpf,UAAUwmB,MAAQ,SAAU81B,GAC3Cx8C,KAAK+pf,mBACL/pf,KAAKuof,UAAW,EAEhBvof,KAAKwof,QAAS,EAEd,IAAIxgf,EAAQhI,KAAK4pf,aAAa/of,OAAS,EACvCb,KAAK0of,WAAW1gf,GAEhBhI,KAAKgqf,qBAAoB,GACzBhqf,KAAK6of,WAAWrsc,aAAiC,EAASA,EAAIk/E,WAC9D17H,KAAKu4H,UAAU,QACjB,EAIAoxX,EAAiBzpf,UAAU4of,UAAY,WACrC9of,KAAKwof,QAAS,EACdxof,KAAKyof,aAAezof,KAAKyic,kBACzBzic,KAAKgqf,qBAAoB,EAC3B,EAIAL,EAAiBzpf,UAAUwY,KAAO,WAChC,GAAK1Y,KAAKwof,QAAqC,IAA3Bxof,KAAK8/b,WAAWj/b,OAApC,CAGA,IAAI8e,EAAe3f,KAAKyic,kBACpBgmD,EAAezof,KAAKyof,aACpB77e,EAAK+S,EAAa1U,EAAIw9e,EAAax9e,EACnC4B,EAAK8S,EAAazU,EAAIu9e,EAAav9e,EAEnClD,EAAQhI,KAAKiqf,uBACbjif,GAAS,IACXhI,KAAK4pf,aAAa5hf,GAAOI,SAAQ,SAAU4C,GACzCA,EAAMC,GAAK2B,EACX5B,EAAME,GAAK2B,CACb,IACA7M,KAAK6of,aACL7of,KAAKu4H,UAAU,UACfv4H,KAAKyof,aAAe9oe,EAdtB,CAgBF,EAKAgqe,EAAiBzpf,UAAU2of,WAAa,SAAUntX,GAChD,IAAIj7H,EAAQT,KACZA,KAAK4pf,aAAaxhf,SAAQ,SAAUsY,EAAQ1Y,GAC1C,IAAI1B,GAAQ,UAAQ,CAAC,EAAG7F,EAAMmof,aAAaloe,GAASg7G,GACpDj7H,EAAMq/b,WAAW93b,GAAO5B,KAAKE,EAC/B,GACF,EAIAqjf,EAAiBzpf,UAAU4jL,OAAS,WAC9B9jL,KAAKuof,UAAYvof,KAAK8/b,WAAWj/b,OAAS,IAC5Cb,KAAKkqf,sBACLlqf,KAAK6of,aACL7of,KAAKu4H,UAAU,UAEnB,EAIAoxX,EAAiBzpf,UAAU6of,QAAU,WACnC/of,KAAKwof,QAAS,EACdxof,KAAKyof,aAAe,KACpBzof,KAAKgqf,qBAAoB,EAC3B,EAIAL,EAAiBzpf,UAAU2uB,IAAM,WAC/B7uB,KAAKuof,UAAW,EAChBvof,KAAKu4H,UAAU,OACfv4H,KAAKgqf,qBAAoB,EAC3B,EAIAL,EAAiBzpf,UAAUqV,KAAO,WAC5BvV,KAAK8/b,WAAWj/b,OAAS,IAC3Bb,KAAK8/b,WAAW13b,SAAQ,SAAUu3b,GAChC,OAAOA,EAAUpqb,MACnB,IACAvV,KAAKu4H,UAAU,QAEnB,EAIAoxX,EAAiBzpf,UAAUiT,OAAS,WAClC,IAAInL,EAAQhI,KAAKiqf,uBACbjif,GAAS,IAEXhI,KAAK4pf,aAAaxof,OAAO4G,EAAO,GAChChI,KAAK8/b,WAAW93b,GAAOmL,SACvBnT,KAAK8/b,WAAW1+b,OAAO4G,EAAO,GAC9BhI,KAAKyof,aAAe,KACpBzof,KAAKgqf,qBAAoB,GACzBhqf,KAAKu4H,UAAU,UAEnB,EAIAoxX,EAAiBzpf,UAAUiqf,SAAW,WACpCnqf,KAAKoqf,mBACLpqf,KAAK8/b,WAAW13b,SAAQ,SAAUu3b,GAChC,OAAOA,EAAUxsb,QACnB,IACAnT,KAAK8/b,WAAa,GAClB9/b,KAAKyof,aAAe,IACtB,EAIAkB,EAAiBzpf,UAAUqP,MAAQ,WACjC,IAAIvH,EAAQhI,KAAKiqf,wBACF,IAAXjif,GACFhI,KAAKoqf,mBACLpqf,KAAK8/b,WAAW13b,SAAQ,SAAUu3b,GAChC,OAAOA,EAAUxsb,QACnB,IACAnT,KAAK8/b,WAAa,GAClB9/b,KAAKu4H,UAAU,cAEfv4H,KAAK4pf,aAAaxof,OAAO4G,EAAO,GAChChI,KAAK8/b,WAAW93b,GAAOmL,SACvBnT,KAAK8/b,WAAW1+b,OAAO4G,EAAO,GAC9BhI,KAAKyof,aAAe,KACpBzof,KAAKu4H,UAAU,gBAEjBv4H,KAAKyof,aAAe,IACtB,EAIAkB,EAAiBzpf,UAAUkC,QAAU,WACnCpC,KAAKuP,QACL7N,EAAOxB,UAAUkC,QAAQR,KAAK5B,KAChC,EAIA2pf,EAAiBzpf,UAAUmqf,gBAAkB,WAC3C,IAAIlpf,EACJ,OAAO,UAAc,IAAI,UAAoC,QAA5BA,EAAKnB,KAAK4pf,oBAAiC,IAAPzof,EAAgBA,EAAK,KAAK,EACjG,EAIAwof,EAAiBzpf,UAAU6pf,iBAAmB,WAC5C,IAAIH,EAAe5pf,KAAKqqf,kBACpB1qe,EAAe3f,KAAKyic,kBACxBzic,KAAK4pf,cAAe,WAAc,UAAc,IAAI,UAAOA,IAAe,GAAQ,CAAC,CAACjqe,KAAgB,EACtG,EAIAgqe,EAAiBzpf,UAAUgqf,oBAAsB,WAC/C,IAAIN,EAAe5pf,KAAKqqf,kBACpB1qe,EAAe3f,KAAKyic,kBACpB6nD,EAAaV,EAAaxof,QAAQ,EAAG,GAAG,IAAM,GAClDkpf,EAAW/pf,KAAKof,GAChB3f,KAAK4pf,cAAe,WAAc,UAAc,IAAI,UAAOA,IAAe,GAAQ,CAACU,IAAa,EAClG,EAIAX,EAAiBzpf,UAAUkqf,iBAAmB,WAC5Cpqf,KAAK4pf,aAAe,EACtB,EAOAD,EAAiBzpf,UAAU8pf,oBAAsB,SAAUO,GACzDvqf,KAAK8/b,WAAW13b,SAAQ,SAAUu3b,GAChC,OAAOA,EAAUz9b,IAAI,UAAWqof,EAClC,GACF,EAKAZ,EAAiBzpf,UAAU+pf,qBAAuB,WAChD,IAAItqe,EAAe3f,KAAKyic,kBACxB,OAAOzic,KAAK8/b,WAAW5/W,WAAU,SAAUy/W,GACzC,IAAIx+b,EAAKw+b,EAAUr5b,MACjByH,EAAQ5M,EAAG4M,MACXC,EAAS7M,EAAG6M,OACZkR,EAAI/d,EAAG+d,EAET,QADwB,IAAVnR,GAA0B,IAAXC,GAAsB,IAANkR,IAC1Bygb,EAAUvtb,MAAMuN,EAAa1U,EAAG0U,EAAazU,EAClE,GACF,EACOy+e,CACT,CArSoC,CAqSlC,KACF,QCtSIa,IAA6B,SAAU9of,GAEzC,SAAS8of,IACP,IAAI/pf,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAEhE,OADAS,EAAM6Q,UAAY,OACX7Q,CACT,CAUA,OAfA,UAAU+pf,EAAe9of,GAMzB8of,EAActqf,UAAUq8b,UAAY,SAAU77a,GAC5C,OAAO67a,IAAU77a,EACnB,EACA8pe,EAActqf,UAAU0of,aAAe,SAAUloe,GAC/C,IAAIvf,EAAKnB,KAAKu8b,UAAU77a,GAGxB,OAAO,IAFGvf,EAAGulB,MACLvlB,EAAG0tB,IAEb,EACO27d,CACT,CAjBiC,CAiB/B,KACF,QCnBIC,IAAgC,SAAU/of,GAE5C,SAAS+of,IACP,IAAIhqf,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAGhE,OAFAS,EAAMixS,IAAM,IACZjxS,EAAM0of,QAAS,EACR1of,CACT,CAKA,OAXA,UAAUgqf,EAAkB/of,GAO5B+of,EAAiBvqf,UAAUq8b,UAAY,SAAU77a,GAC/C,IAAIuyV,EAAQjzW,KAAKmzB,QAAQi/O,KAAK+vL,gBAC9B,OAAO,IAAUzhb,EAAQ1gB,KAAK0xS,IAAK1xS,KAAKmpf,OAAQl2I,EAClD,EACOw3I,CACT,CAboC,CAalC,KACF,QCbIC,IAA+B,SAAUhpf,GAE3C,SAASgpf,IACP,IAAIjqf,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAGhE,OAFAS,EAAM6Q,UAAY,SAClB7Q,EAAMmof,aAAeA,IACdnof,CACT,CACA,OAPA,UAAUiqf,EAAiBhpf,GAOpBgpf,CACT,CATmC,CASjC,KACF,QCVIC,IAA6B,SAAUjpf,GAEzC,SAASipf,IACP,IAAIlqf,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAGhE,OAFAS,EAAMsgc,YAAc,IACpBtgc,EAAMmof,aAAe,IACdnof,CACT,CAIA,OAVA,UAAUkqf,EAAejpf,GAOzBipf,EAAczqf,UAAUspf,SAAW,WACjCxpf,KAAK8jL,QACP,EACO6mU,CACT,CAZiC,CAY/B,KACF,QCbIC,IAAmC,SAAUlpf,GAE/C,SAASkpf,IACP,IAAInqf,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAGhE,OAFAS,EAAMsgc,YAAc,IACpBtgc,EAAMmof,aAAe,IACdnof,CACT,CACA,OAPA,UAAUmqf,EAAqBlpf,GAOxBkpf,CACT,CATuC,CASrC,KACF,QCPIC,IAA4B,SAAUnpf,GAExC,SAASmpf,IACP,OAAkB,OAAXnpf,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CA2GA,OA9GA,UAAU6qf,EAAcnpf,GAIxBmpf,EAAa3qf,UAAUmO,UAAY,SAAUtC,GAChC/L,KAAKmzB,QAAQi/O,KACnBrgQ,YAAY1D,UAAUtC,EAC7B,EAIA8+e,EAAa3qf,UAAUynE,QAAU,WAC/B3nE,KAAKqO,UAAU,UACjB,EAEAw8e,EAAa3qf,UAAU80M,QAAU,WAC/Bh1M,KAAKqO,UAAU,UACjB,EAEAw8e,EAAa3qf,UAAUwY,KAAO,WAC5B1Y,KAAKqO,UAAU,OACjB,EAEAw8e,EAAa3qf,UAAU4qf,UAAY,WACjC9qf,KAAKqO,UAAU,YACjB,EAEAw8e,EAAa3qf,UAAU2jC,KAAO,WAC5B7jC,KAAKqO,UAAU,OACjB,EAEAw8e,EAAa3qf,UAAU6qf,KAAO,WAC5B/qf,KAAKqO,UAAU,OACjB,EAEAw8e,EAAa3qf,UAAU2gB,KAAO,WAC5B7gB,KAAKqO,UAAU,OACjB,EAIAw8e,EAAa3qf,UAAU8qf,QAAU,WAC/Bhrf,KAAKqO,UAAU,WACjB,EAIAw8e,EAAa3qf,UAAU+qf,QAAU,WAC/Bjrf,KAAKqO,UAAU,WACjB,EAIAw8e,EAAa3qf,UAAUgrf,QAAU,WAC/Blrf,KAAKqO,UAAU,WACjB,EAIAw8e,EAAa3qf,UAAUirf,QAAU,WAC/Bnrf,KAAKqO,UAAU,WACjB,EAIAw8e,EAAa3qf,UAAUkrf,SAAW,WAChCprf,KAAKqO,UAAU,YACjB,EAIAw8e,EAAa3qf,UAAUmrf,SAAW,WAChCrrf,KAAKqO,UAAU,YACjB,EAIAw8e,EAAa3qf,UAAUorf,SAAW,WAChCtrf,KAAKqO,UAAU,YACjB,EAIAw8e,EAAa3qf,UAAUqrf,SAAW,WAChCvrf,KAAKqO,UAAU,YACjB,EAIAw8e,EAAa3qf,UAAUsrf,SAAW,WAChCxrf,KAAKqO,UAAU,YACjB,EAIAw8e,EAAa3qf,UAAUurf,SAAW,WAChCzrf,KAAKqO,UAAU,YACjB,EAIAw8e,EAAa3qf,UAAU+tG,OAAS,WAC9BjuG,KAAKqO,UAAU,UACjB,EAIAw8e,EAAa3qf,UAAUguG,QAAU,WAC/BluG,KAAKqO,UAAU,WACjB,EACOw8e,CACT,CAhHgC,CAgH9B,KACF,QCnHIa,IAA0B,SAAUhqf,GAEtC,SAASgqf,IACP,OAAkB,OAAXhqf,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAoDA,OAvDA,UAAU0rf,EAAYhqf,GAItBgqf,EAAWxrf,UAAUyrf,WAAa,SAAUv5O,EAAMvyI,EAAOtvH,GACvD,IAAI9P,EAAQT,KAERoyQ,EAAKmwL,gBAAgB1iU,IACvBuyI,EAAK7hQ,OAAOsvH,EAAOtvH,GAEjB6hQ,EAAKoD,OAASpD,EAAKoD,MAAM30Q,SAC3B,UAAKuxQ,EAAKoD,OAAO,SAAU6rL,GACzB5gc,EAAMkrf,WAAWtqD,EAASxhU,EAAOtvH,EACnC,GAEJ,EAIAm7e,EAAWxrf,UAAUqQ,OAAS,WAC5B,IAAI8H,EAAiB6nb,IAAoBlgc,KAAKmzB,SAC9C,GAAI9a,EAAgB,CAClB,IAAI+5P,EAAOpyQ,KAAKmzB,QAAQi/O,KACpB5yM,EAAYnnD,EAAemnD,UAC3BqgE,EAAQrgE,EAAUx9D,IAAI,SAE1B,GAAIqqI,IAAOh0H,IACT,GAAIwnH,EAAO,CACT,IAAI+rX,EAAiBpsb,EAAUm9W,gBAAgB,aAC3CkvE,EAAUtpD,IAAgBnwL,EAAMvyI,GAChCisX,EAAUF,EAAe56d,KAAI,SAAUvZ,GACzC,OAAOA,EAAKxV,IACd,IACI6pf,EAAQjrf,OACVb,KAAK2rf,WAAWv5O,EAAMvyI,GAAO,SAAU19H,GACrC,IAAI0e,EAAOgre,EAAQhsF,QAAQ19Z,GAC3B,OAAQ2pf,EAAQ3mf,SAAS0b,EAC3B,IAEA7gB,KAAK2rf,WAAWv5O,EAAMvyI,EAAO,MAE/BuyI,EAAKpnM,QAAO,EACd,OACK,GAAIqlW,IAASh4Z,GAAiB,CACnC,IAAIsvC,EAAQ6X,EAAU+hE,WAClBpgI,GAAK,UAAOwmD,EAAO,GACrBw+W,EAAQhla,EAAG,GACXkla,EAAQlla,EAAG,GACbnB,KAAK2rf,WAAWv5O,EAAMvyI,GAAO,SAAU19H,GACrC,OAAOA,GAASgka,GAAShka,GAASkka,CACpC,IACAj0J,EAAKpnM,QAAO,EACd,CACF,CACF,EACO0gb,CACT,CAzD8B,CAyD5B,KACF,QR7DA,SAASK,IAAUjze,EAAO44R,EAAK10Q,EAAQC,GACrC,IAAI/iB,EAAMD,KAAKC,IAAI8iB,EAAO00Q,GAAMz0Q,EAAOy0Q,IACnCv3R,EAAMF,KAAKE,IAAI6iB,EAAO00Q,GAAMz0Q,EAAOy0Q,IACnCvwS,GAAK,UAAO2X,EAAM6uC,MAAO,GAC3Bw5R,EAAWhgV,EAAG,GACd+/U,EAAW//U,EAAG,GAShB,GAPI+Y,EAAMinU,IACRjnU,EAAMinU,GAEJhnU,EAAM+mU,IACR/mU,EAAM+mU,GAGJhnU,IAAQgnU,GAAY/mU,IAAQ+mU,EAC9B,OAAO,KAET,IAAI1lD,EAAW1iR,EAAMwL,OAAOpK,GACxBuhR,EAAW3iR,EAAMwL,OAAOnK,GAC5B,GAAIrB,EAAMglZ,WAAY,CACpB,IAAIyI,EAAWztZ,EAAM0nB,OAAOttB,QAAQsoR,GAChC+jN,EAAWzme,EAAM0nB,OAAOttB,QAAQuoR,GAChCqsM,EAAQhvd,EAAM0nB,OAAOxZ,MAAMu/Y,EAAUg5E,EAAW,GACpD,OAAO,SAAUp9e,GACf,OAAO2le,EAAM3ie,SAAShD,EACxB,CACF,CACE,OAAO,SAAUA,GACf,OAAOA,GAASq5R,GAAYr5R,GAASs5R,CACvC,CAEJ,EAGA,SAAWjzR,GACTA,EAAe,OAAI,0BACnBA,EAAc,MAAI,qBAClBA,EAAsB,cAAI,4BAC1BA,EAAqB,aAAI,2BACzBA,EAAqB,aAAI,2BACzBA,EAAoB,YAAI,yBACzB,CAPD,CAOG,MAAW,IAAS,CAAC,IAMxB,IAAIwjf,IAA2B,SAAUtqf,GAEvC,SAASsqf,IACP,IAAIvrf,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAQhE,OAJAS,EAAM8rO,KAAO,CAAC,IAAK,KAEnB9rO,EAAM08B,WAAa,KACnB18B,EAAMwjf,WAAY,EACXxjf,CACT,CAiHA,OA5HA,UAAUurf,EAAatqf,GAavBsqf,EAAY9rf,UAAU+rf,OAAS,SAAUv6M,GACvC,OAAO1xS,KAAKusO,KAAKpnO,SAASusS,EAC5B,EAIAs6M,EAAY9rf,UAAUwmB,MAAQ,WAC5B,IAAIyM,EAAUnzB,KAAKmzB,QACnBnzB,KAAKikf,WAAY,EACjBjkf,KAAKm9B,WAAahK,EAAQsva,iBAC5B,EAIAupD,EAAY9rf,UAAUqQ,OAAS,WAC7B,IAAI4sB,EACAxd,EACJ,GAAI0gb,IAAOrgc,KAAKmzB,SAAU,CACxB,IACIrkB,EADY9O,KAAKmzB,QAAQpoB,MAAMrC,OACdkI,gBACrBusB,EAAa,CACXlyB,EAAG6D,EAAK7D,EACRC,EAAG4D,EAAK5D,GAEVyU,EAAe,CACb1U,EAAG6D,EAAKqB,KACRjF,EAAG4D,EAAKuB,KAEZ,KAAO,CACL,IAAKrQ,KAAKikf,UAER,OAEF9md,EAAan9B,KAAKm9B,WAClBxd,EAAe3f,KAAKmzB,QAAQsva,iBAC9B,CACA,KAAIxob,KAAKoG,IAAI8c,EAAWlyB,EAAI0U,EAAa1U,GAAK,GAAKgP,KAAKoG,IAAI8c,EAAWlyB,EAAI0U,EAAazU,GAAK,GAA7F,CAIA,IAAI/J,EAAKnB,KAAKmzB,QACZi/O,EAAOjxQ,EAAGixQ,KAERksM,EAAU,CACZlsM,KAAMA,EACNrnQ,MAHQ5J,EAAG4J,MAIXwhO,KAAMvsO,KAAKusO,MAEb6lC,EAAK5xQ,KAAK,IAAO0rf,cAAe,IAAM3xC,SAASnoM,EAAM,IAAO85O,cAAe5tC,IAC3E,IAAIrrG,EAAQ7gG,EAAK+vL,gBACbgqD,EAAgBl5I,EAAM3uV,OAAO3E,GAC7Bype,EAAcn2I,EAAM3uV,OAAO6Y,GAE/B,GAAIn9B,KAAKisf,OAAO,KAAM,CACpB,IAAI9zG,EAAS/lI,EAAK0kM,YACdvmc,EAASw7e,IAAU5zG,EAAQ,IAAKg0G,EAAe/C,GACnDppf,KAAK2rf,WAAWv5O,EAAM+lI,EAAOt4Q,MAAOtvH,EACtC,CAEA,GAAIvQ,KAAKisf,OAAO,KAAM,CACpB,IAAI7zG,EAAShmI,EAAK2tM,aAAa,GAC3Bxvc,EAASw7e,IAAU3zG,EAAQ,IAAK+zG,EAAe/C,GACnDppf,KAAK2rf,WAAWv5O,EAAMgmI,EAAOv4Q,MAAOtvH,EACtC,CACAvQ,KAAK+qI,SAASqnI,EAAM,CAClB/gP,OAAQ,IAAO+6d,SAEjBh6O,EAAK5xQ,KAAK,IAAO6rf,aAAc,IAAM9xC,SAASnoM,EAAM,IAAOi6O,aAAc/tC,GA5BzE,CA6BF,EAIA0tC,EAAY9rf,UAAU2uB,IAAM,WAC1B7uB,KAAKikf,WAAY,CACnB,EAIA+H,EAAY9rf,UAAUg2D,MAAQ,WAC5B,IAAIk8M,EAAOpyQ,KAAKmzB,QAAQi/O,KAGxB,GAFAA,EAAK5xQ,KAAK,IAAO8rf,aAAc,IAAM/xC,SAASnoM,EAAM,IAAOk6O,aAAc,CAAC,IAC1Etsf,KAAKikf,WAAY,EACbjkf,KAAKisf,OAAO,KAAM,CACpB,IAAI9zG,EAAS/lI,EAAK0kM,YAClB92c,KAAK2rf,WAAWv5O,EAAM+lI,EAAOt4Q,MAAO,KACtC,CAEA,GAAI7/H,KAAKisf,OAAO,KAAM,CAEpB,IAAI7zG,EAAShmI,EAAK2tM,aAAa,GAC/B//c,KAAK2rf,WAAWv5O,EAAMgmI,EAAOv4Q,MAAO,KACtC,CAEA7/H,KAAK+qI,SAASqnI,EAAM,CAClB/gP,OAAQ,IAAOk7d,QAEjBn6O,EAAK5xQ,KAAK,IAAOgsf,YAAa,IAAMjyC,SAASnoM,EAAM,IAAOo6O,YAAa,CAAC,GAC1E,EAIAR,EAAY9rf,UAAUyrf,WAAa,SAAUv5O,EAAMvyI,EAAOtvH,GACxD6hQ,EAAK7hQ,OAAOsvH,EAAOtvH,EACrB,EAKAy7e,EAAY9rf,UAAU6qI,SAAW,SAAUqnI,EAAMksM,GAC/ClsM,EAAKpnM,QAAO,EAAMszY,EACpB,EACO0tC,CACT,CA9H+B,CA8H7B,KACF,QS3KIS,IAA6B,SAAU/qf,GAEzC,SAAS+qf,IACP,OAAkB,OAAX/qf,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAuBA,OA1BA,UAAUysf,EAAe/qf,GAUzB+qf,EAAcvsf,UAAUyrf,WAAa,SAAUv5O,EAAMvyI,EAAOtvH,GAC1D,IAAI6sR,EAAW6kK,IAAY7vL,IAC3B,UAAKgrB,GAAU,SAAUvlG,GACvBA,EAAQtnL,OAAOsvH,EAAOtvH,EACxB,GACF,EAKAk8e,EAAcvsf,UAAU6qI,SAAW,SAAUqnI,GAC3C,IAAIgrB,EAAW6kK,IAAY7vL,IAC3B,UAAKgrB,GAAU,SAAUvlG,GACvBA,EAAQ7sH,QAAO,EACjB,GACF,EACOyhb,CACT,CA5BiC,CA4B/B,KACF,QC7BIC,IAA6B,SAAUhrf,GAEzC,SAASgrf,IACP,OAAkB,OAAXhrf,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAwEA,OA3EA,UAAU0sf,EAAehrf,GAOzBgrf,EAAcxsf,UAAUqQ,OAAS,WAC/B,IAAI8H,EAAiB6nb,IAAoBlgc,KAAKmzB,SAC1Ci/O,EAAOpyQ,KAAKmzB,QAAQi/O,KACpBzxO,EAAWyga,IAAYhvL,GAC3B,GAAIiuL,IAAOrgc,KAAKmzB,SAAU,CACxB,IAAIw5d,EAAiBpsD,IAAkBvgc,KAAKmzB,QAAS,IACjDw5d,IACF,UAAKhsd,GAAU,SAAUn2B,GACnBmif,EAAexnf,SAASqF,GAC1BA,EAAG8K,OAEH9K,EAAG+K,MAEP,GAEJ,MAAO,GAAI8C,EAAgB,CACzB,IAAImnD,EAAYnnD,EAAemnD,UAC3Bq6Z,EAAUr6Z,EAAUx9D,IAAI,SAE5B,GAAIqqI,IAAOh0H,IACT,GAAIwhd,EAAS,CACX,IAAI+xB,EAAiBpsb,EAAUm9W,gBAAgB,aAC3CkvE,EAAUtpD,IAAgBnwL,EAAMynN,GAChCiyB,EAAUF,EAAe56d,KAAI,SAAUvZ,GACzC,OAAOA,EAAKxV,IACd,KAEA,UAAK0+B,GAAU,SAAUn2B,GACvB,IAAIrI,EAAQs/b,IAAgBj3b,EAAIqvd,GAC5Bh5c,EAAOgre,EAAQhsF,QAAQ19Z,GACvB2pf,EAAQ54e,QAAQ2N,IAAS,EAC3BrW,EAAG+K,OAEH/K,EAAG8K,MAEP,GACF,OACK,GAAI+6Z,IAASh4Z,GAAiB,CACnC,IAAIsvC,EAAQ6X,EAAU+hE,WAClBpgI,GAAK,UAAOwmD,EAAO,GACrBw+W,EAAQhla,EAAG,GACXkla,EAAQlla,EAAG,IACb,UAAKw/B,GAAU,SAAUn2B,GACvB,IAAIrI,EAAQs/b,IAAgBj3b,EAAIqvd,GAC5B13d,GAASgka,GAAShka,GAASkka,EAC7B77Z,EAAG8K,OAEH9K,EAAG+K,MAEP,GACF,CACF,CACF,EAIAm3e,EAAcxsf,UAAUqP,MAAQ,WAC9B,IAAIoxB,EAAWyga,IAAYphc,KAAKmzB,QAAQi/O,OACxC,UAAKzxO,GAAU,SAAUn2B,GACvBA,EAAG8K,MACL,GACF,EAIAo3e,EAAcxsf,UAAUg2D,MAAQ,WAC9Bl2D,KAAKuP,OACP,EACOm9e,CACT,CA7EiC,CA6E/B,KACF,QC9EI,IAA6B,SAAUhrf,GAEzC,SAAS+qf,IACP,IAAIhsf,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAEhE,OADAS,EAAMmsf,UAAW,EACVnsf,CACT,CAwEA,OA7EA,UAAUgsf,EAAe/qf,GASzB+qf,EAAcvsf,UAAUqQ,OAAS,WAE3B8vb,IAAOrgc,KAAKmzB,WACVnzB,KAAK4sf,SACP5sf,KAAK6sf,iBAEL7sf,KAAK8sf,eAGX,EAEAL,EAAcvsf,UAAU2sf,eAAiB,WACvC,IAAIz6O,EAAOpyQ,KAAKmzB,QAAQi/O,KACpB26O,EAAexsD,IAAkBvgc,KAAKmzB,QAAS,IACnD,GAAK45d,EAAL,CAGA,IAAIzqD,EAASlwL,EAAK0kM,YAAYj3U,MAC1Bo5R,EAAS7mJ,EAAK2tM,aAAa,GAAGlgV,MAC9B4R,EAAUs7W,EAAa/7d,KAAI,SAAUxmB,GACvC,OAAOA,EAAGk3b,WAAWh8a,IACvB,IACI03Q,EAAW6kK,IAAY7vL,IAC3B,UAAKgrB,GAAU,SAAUvlG,GACvB,IAAIl3J,EAAWyga,IAAYvpQ,IAC3B,UAAKl3J,GAAU,SAAUn2B,GACvB,IAAIgqD,EAAShqD,EAAGk3b,WAAWh8a,KAEvB28a,IAAY5wT,EAASj9E,EAAQ8tY,EAAQrpC,GACvCzuZ,EAAG8K,OAEH9K,EAAG+K,MAEP,GACF,GAlBA,CAmBF,EAEAk3e,EAAcvsf,UAAU4sf,aAAe,WACrC,IAAIrsf,EAAQT,KAERo9R,EAAW6kK,IADJjic,KAAKmzB,QAAQi/O,OAExB,UAAKgrB,GAAU,SAAUvlG,GACvB,IAAIk1T,EAAe/rD,IAAuBvgc,EAAM0yB,QAAS0kK,EAAS,IAC9Dl3J,EAAWyga,IAAYvpQ,GACvBk1T,IAEF,UAAKpsd,GAAU,SAAUn2B,GACnBuif,EAAa5nf,SAASqF,GACxBA,EAAG8K,OAEH9K,EAAG+K,MAEP,GAEJ,GACF,EAIAk3e,EAAcvsf,UAAUg2D,MAAQ,WAC9B,IAAIknO,EAAW6kK,IAAYjic,KAAKmzB,QAAQi/O,OACxC,UAAKgrB,GAAU,SAAUvlG,GACvB,IAAIl3J,EAAWyga,IAAYvpQ,IAC3B,UAAKl3J,GAAU,SAAUn2B,GACvBA,EAAG8K,MACL,GACF,GACF,EACOm3e,CACT,CA/EiC,CA+E/B,KACF,QC7EIO,IAA4B,SAAUtrf,GAExC,SAASsrf,IACP,IAAIvsf,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAsBhE,OArBAS,EAAMwsf,YAAc,KACpBxsf,EAAMysf,UAAY,CAChBjrf,KAAM,SACN4e,KAAM,SACN43Z,UAAW,CACTxta,EAAG,EACHC,EAAG,EACH4V,SAAU,GACV86B,KAAM,UACN7vC,OAAQ,WAEVquE,QAAS,CAAC,EAAG,IACbtuE,MAAO,CACL8vC,KAAM,UACNz6B,OAAQ,UACRpV,OAAQ,WAEVmrE,YAAa,CACXt7B,KAAM,YAGHn7C,CACT,CAmFA,OA5GA,UAAUusf,EAActrf,GA2BxBsrf,EAAa9sf,UAAUitf,aAAe,WACpC,OAAO,UAAQntf,KAAKktf,UAAWltf,KAAK2B,IACtC,EAEAqrf,EAAa9sf,UAAUktf,WAAa,WAClC,IAAI5gZ,EAASxsG,KAAKmtf,eACdz7e,EAAQ1R,KAAKmzB,QAAQi/O,KAAK0rM,gBAAgBrsc,SAAS,CACrDxP,KAAMuqG,EAAOvqG,OAUXuhb,EAPY9xa,EAAML,SAAS,CAC7B1I,KAAM,OACN1G,KAAM,cACNqE,OAAO,UAAS,CACdua,KAAM2rF,EAAO3rF,MACZ2rF,EAAOisU,aAEaxoa,UACrBmqE,EAAU,IAAaoyB,EAAOpyB,SAE9Biza,EAAc37e,EAAML,SAAS,CAC/B1I,KAAM,OACN1G,KAAM,cACNqE,OAAO,UAAS,CACd2E,EAAGu4a,EAASv4a,EAAImvE,EAAQ,GACxBlvE,EAAGs4a,EAASt4a,EAAIkvE,EAAQ,GACxBrsE,MAAOy1a,EAASz1a,MAAQqsE,EAAQ,GAAKA,EAAQ,GAC7CpsE,OAAQw1a,EAASx1a,OAASosE,EAAQ,GAAKA,EAAQ,IAC9CoyB,EAAO1gG,SAEZuhf,EAAY33e,SAEZhE,EAAMvR,GAAG,cAAc,WACrBktf,EAAYjnf,KAAKomG,EAAOt1B,YAC1B,IACAxlE,EAAMvR,GAAG,cAAc,WACrBktf,EAAYjnf,KAAKomG,EAAO1gG,MAC1B,IACA9L,KAAKitf,YAAcv7e,CACrB,EAEAs7e,EAAa9sf,UAAUs6a,cAAgB,WACrC,IAEIxva,EAFOhL,KAAKmzB,QAAQi/O,KACP+vL,gBACCtjP,QAAQ,CACxB5zM,EAAG,EACHC,EAAG,IAED+hf,EAAcjtf,KAAKitf,YACnBn+e,EAAOm+e,EAAYh9e,UACnBkB,EAASi7M,IAAA,GAAc,KAAM,CAAC,CAAC,IAAKphN,EAAMC,EAAI6D,EAAKf,MApFvC,GAoF8D/C,EAAME,EAAI4D,EAAKd,OAnF/E,KAoFdi/e,EAAYn3e,UAAU3E,EACxB,EAIA67e,EAAa9sf,UAAUoV,KAAO,WACvBtV,KAAKitf,aACRjtf,KAAKotf,aAEPptf,KAAKw6a,gBACLx6a,KAAKitf,YAAY33e,MACnB,EAIA03e,EAAa9sf,UAAUqV,KAAO,WACxBvV,KAAKitf,aACPjtf,KAAKitf,YAAY13e,MAErB,EAIAy3e,EAAa9sf,UAAUkC,QAAU,WAC/B,IAAI6qf,EAAcjtf,KAAKitf,YACnBA,GACFA,EAAY95e,SAEdzR,EAAOxB,UAAUkC,QAAQR,KAAK5B,KAChC,EACOgtf,CACT,CA9GgC,CA8G9B,KACF,QClHIM,IAAoB,SAAU5rf,GAEhC,SAAS4rf,IACP,IAAI7sf,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAKhE,OAHAS,EAAM8nf,UAAW,EAEjB9nf,EAAM8sf,WAAY,EACX9sf,CACT,CAmDA,OA3DA,UAAU6sf,EAAM5rf,GAYhB4rf,EAAKptf,UAAUwmB,MAAQ,WACrB1mB,KAAKuof,UAAW,EAChBvof,KAAKm9B,WAAan9B,KAAKmzB,QAAQsva,iBACjC,EAIA6qD,EAAKptf,UAAUstf,KAAO,WACpB,GAAKxtf,KAAKm9B,WAAV,CAGA,IAAI11B,EAAUzH,KAAKmzB,QAAQsva,kBACvBrwL,EAAOpyQ,KAAKmzB,QAAQi/O,KACpBrnQ,EAAQ/K,KAAKmzB,QAAQpoB,MACpB/K,KAAKutf,UAURn7O,EAAK5xQ,KAAK,OAAQ,CAChBkI,OAAQqC,EAAMrC,OACduC,EAAGF,EAAME,EACTC,EAAGH,EAAMG,IAZP,IAASzD,EAASzH,KAAKm9B,YAjClB,IAkCPi1O,EAAK5xQ,KAAK,YAAa,CACrBkI,OAAQqC,EAAMrC,OACduC,EAAGF,EAAME,EACTC,EAAGH,EAAMG,IAEXlL,KAAKutf,WAAY,EAXrB,CAoBF,EAIAD,EAAKptf,UAAU2uB,IAAM,WACnB,GAAI7uB,KAAKutf,UAAW,CAClB,IAAIn7O,EAAOpyQ,KAAKmzB,QAAQi/O,KACpB4wO,EAAUhjf,KAAKmzB,QAAQpoB,MAC3BqnQ,EAAK5xQ,KAAK,UAAW,CACnBkI,OAAQs6e,EAAQt6e,OAChBuC,EAAG+3e,EAAQ/3e,EACXC,EAAG83e,EAAQ93e,GAEf,CACAlL,KAAKuof,UAAW,EAChBvof,KAAKutf,WAAY,CACnB,EACOD,CACT,CA7DwB,CA6DtB,KACF,QC7DIG,IAAoB,SAAU/rf,GAEhC,SAAS+rf,IACP,IAAIhtf,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAMhE,OALAS,EAAM8nf,UAAW,EACjB9nf,EAAMitf,UAAW,EAEjBjtf,EAAM08B,WAAa,KACnB18B,EAAMktf,YAAc,KACbltf,CACT,CAuDA,OAhEA,UAAUgtf,EAAM/rf,GAahB+rf,EAAKvtf,UAAUwmB,MAAQ,WACrB1mB,KAAKuof,UAAW,EAChBvof,KAAKm9B,WAAan9B,KAAKmzB,QAAQsva,kBAE/Bzic,KAAK2tf,YAAc3tf,KAAKmzB,QAAQi/O,KAAKyrM,YAAYhoc,WACnD,EAIA43e,EAAKvtf,UAAUwY,KAAO,WACpB,GAAK1Y,KAAKuof,SAAV,CAGA,IAAIprd,EAAan9B,KAAKm9B,WAClBxd,EAAe3f,KAAKmzB,QAAQsva,kBAKhC,GAJQ,IAAStla,EAAYxd,GAlCd,IAmCU3f,KAAK0tf,WAC5B1tf,KAAK0tf,UAAW,GAEd1tf,KAAK0tf,SAAU,CACjB,IAAIt7O,EAAOpyQ,KAAKmzB,QAAQi/O,KACpBjhQ,EAASi7M,IAAA,GAAcpsN,KAAK2tf,YAAa,CAAC,CAAC,IAAKhue,EAAa1U,EAAIkyB,EAAWlyB,EAAG0U,EAAazU,EAAIiyB,EAAWjyB,KAC/GknQ,EAAKwrM,gBAAgB9nc,UAAU3E,GAC/BihQ,EAAK0rM,gBAAgBhoc,UAAU3E,GAC/BihQ,EAAKyrM,YAAY/nc,UAAU3E,EAC7B,CAbA,CAcF,EAIAs8e,EAAKvtf,UAAU2uB,IAAM,WACf7uB,KAAK0tf,WACP1tf,KAAK0tf,UAAW,GAElB1tf,KAAK2tf,YAAc,KACnB3tf,KAAKuof,UAAW,EAChBvof,KAAKm9B,WAAa,IACpB,EAIAswd,EAAKvtf,UAAUg2D,MAAQ,WACrBl2D,KAAKuof,UAAW,EAChBvof,KAAKm9B,WAAa,KAClBn9B,KAAK0tf,UAAW,EAChB,IAAIt7O,EAAOpyQ,KAAKmzB,QAAQi/O,KACxBA,EAAKwrM,gBAAgBhoc,cACrBw8P,EAAK0rM,gBAAgBloc,cACrBw8P,EAAKyrM,YAAYjoc,cACjB5V,KAAK0tf,UAAW,CAClB,EACOD,CACT,CAlEwB,CAkEtB,KACF,QCpEIG,IAA8B,SAAUlsf,GAE1C,SAASksf,IACP,IAAIntf,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAIhE,OAHAS,EAAM8rO,KAAO,CAVL,IACA,KAUR9rO,EAAMotf,UAAY,CAAC,QACnBptf,EAAMqtf,eAAiB,CAAC,EACjBrtf,CACT,CA8BA,OArCA,UAAUmtf,EAAgBlsf,GAS1Bksf,EAAe1tf,UAAU+rf,OAAS,SAAUv6M,GAC1C,OAAO1xS,KAAKusO,KAAKpnO,SAASusS,EAC5B,EACAk8M,EAAe1tf,UAAUohT,SAAW,SAAU5P,GAC5C,IAAIt/B,EAAOpyQ,KAAKmzB,QAAQi/O,KACxB,MAAY,MAARs/B,EACKt/B,EAAK0kM,YAEL1kM,EAAK2tM,aAAa,EAE7B,EACA6tC,EAAe1tf,UAAU6tf,SAAW,SAAUr8M,GAC5C,IAAIt/B,EAAOpyQ,KAAKmzB,QAAQi/O,KACxB,GAAIpyQ,KAAKisf,OAAOv6M,IAAQ1xS,KAAK8tf,eAAep8M,GAAM,CAChD,IAAI54R,EAAQ9Y,KAAKshT,SAAS5P,GAC1Bt/B,EAAKt5P,MAAMA,EAAM+mH,MAAO7/H,KAAK8tf,eAAep8M,IAC5C1xS,KAAK8tf,eAAep8M,GAAO,IAC7B,CACF,EAIAk8M,EAAe1tf,UAAUg2D,MAAQ,WAC/Bl2D,KAAK+tf,SAvCG,KAwCR/tf,KAAK+tf,SAvCG,KAwCG/tf,KAAKmzB,QAAQi/O,KACnBpnM,QAAO,EACd,EACO4ib,CACT,CAvCkC,CAuChC,KACF,QCzCI,IAA8B,SAAUlsf,GAE1C,SAASksf,IACP,IAAIntf,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAIhE,OAHAS,EAAM08B,WAAa,KACnB18B,EAAM8nf,UAAW,EACjB9nf,EAAMutf,WAAa,CAAC,EACbvtf,CACT,CAwGA,OA/GA,UAAUmtf,EAAgBlsf,GAW1Bksf,EAAe1tf,UAAUwmB,MAAQ,WAC/B,IAAIjmB,EAAQT,KACZA,KAAKm9B,WAAan9B,KAAKmzB,QAAQsva,kBAC/Bzic,KAAKuof,UAAW,EAChB,IAAIh8Q,EAAOvsO,KAAKusO,MAChB,UAAKA,GAAM,SAAUmlE,GACnB,IAAI54R,EAAQrY,EAAM6gT,SAAS5P,GACvBx3R,EAAMpB,EAAMoB,IACdC,EAAMrB,EAAMqB,IACZqmB,EAAS1nB,EAAM0nB,OACjB//B,EAAMutf,WAAWt8M,GAAO,CACtBx3R,IAAKA,EACLC,IAAKA,EACLqmB,OAAQA,EAEZ,GACF,EAOAotd,EAAe1tf,UAAU2uB,IAAM,WAC7B7uB,KAAKm9B,WAAa,KAClBn9B,KAAKuof,UAAW,EAChBvof,KAAKguf,WAAa,CAAC,CACrB,EAIAJ,EAAe1tf,UAAUoY,UAAY,WACnC,IAAI7X,EAAQT,KACZ,GAAKA,KAAKuof,SAAV,CAGA,IAAIprd,EAAan9B,KAAKm9B,WAClB81U,EAAQjzW,KAAKmzB,QAAQi/O,KAAK+vL,gBAC1Bxib,EAAe3f,KAAKmzB,QAAQsva,kBAC5B2mD,EAAcn2I,EAAM3uV,OAAO6Y,GAC3B8wd,EAAgBh7I,EAAM3uV,OAAO3E,GAC7B/S,EAAKqhf,EAAchjf,EAAIm+e,EAAYn+e,EACnC4B,EAAKohf,EAAc/if,EAAIk+e,EAAYl+e,EACnCknQ,EAAOpyQ,KAAKmzB,QAAQi/O,KACpB7lC,EAAOvsO,KAAKusO,MAChB,UAAKA,GAAM,SAAUmlE,GACnBjxS,EAAMytf,aAAax8M,EAAK,CACtBzmS,GAAS,EAAN2B,EACH1B,GAAS,EAAN2B,GAEP,IACAulQ,EAAKpnM,QAAO,EAhBZ,CAiBF,EAEA4ib,EAAe1tf,UAAUguf,aAAe,SAAUx8M,EAAKwwJ,GACrD,GAAIlic,KAAKisf,OAAOv6M,GAAM,CACpB,IAAI54R,EAAQ9Y,KAAKshT,SAAS5P,GACtB54R,EAAMilZ,UACR/9Z,KAAKmuf,gBAAgBz8M,EAAK54R,EAAOopb,EAKrC,CACF,EAEA0rD,EAAe1tf,UAAUiuf,gBAAkB,SAAUz8M,EAAK54R,EAAOopb,GAC/D,IAAI9vL,EAAOpyQ,KAAKmzB,QAAQi/O,KACpBjxQ,EAAKnB,KAAKguf,WAAWt8M,GACvBx3R,EAAM/Y,EAAG+Y,IACTC,EAAMhZ,EAAGgZ,IACPwtC,EAAQxtC,EAAMD,EACd6L,EAAIm8a,EAAYxwJ,GAAO/pP,EAEtB3nD,KAAK8tf,eAAep8M,KACvB1xS,KAAK8tf,eAAep8M,GAAO,CAEzBntE,KAAMzrN,EAAMyrN,KACZrqN,IAAKA,EACLC,IAAKA,IAGTi4P,EAAKt5P,MAAMA,EAAM+mH,MAAO,CAEtB0kG,MAAM,EACNrqN,IAAKA,EAAM6L,EACX5L,IAAKA,EAAM4L,GAEf,EAOA6ne,EAAe1tf,UAAUg2D,MAAQ,WAC/Bx0D,EAAOxB,UAAUg2D,MAAMt0D,KAAK5B,MAC5BA,KAAKm9B,WAAa,KAClBn9B,KAAKuof,UAAW,CAClB,EACOqF,CACT,CAjHkC,CAiHhC,KACF,QClHI,IAA8B,SAAUlsf,GAE1C,SAASksf,IACP,IAAIntf,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAEhE,OADAS,EAAM2tf,UAAY,IACX3tf,CAIT,CAgEA,OAxEA,UAAUmtf,EAAgBlsf,GAY1Bksf,EAAe1tf,UAAU+tG,OAAS,WAChCjuG,KAAKkkD,KAAKlkD,KAAKouf,UACjB,EACAR,EAAe1tf,UAAUgkD,KAAO,SAAUprC,GACxC,IAAIrY,EAAQT,KACRusO,EAAOvsO,KAAKusO,MAChB,UAAKA,GAAM,SAAUmlE,GACnBjxS,EAAM4tf,QAAQ38M,EAAK54R,EACrB,IACA9Y,KAAKmzB,QAAQi/O,KAAKpnM,QAAO,EAC3B,EAIA4ib,EAAe1tf,UAAUguG,QAAU,WACjCluG,KAAKkkD,MAAM,EAAIlkD,KAAKouf,UACtB,EAEAR,EAAe1tf,UAAUmuf,QAAU,SAAU38M,EAAK48M,GAChD,GAAItuf,KAAKisf,OAAOv6M,GAAM,CACpB,IAAI54R,EAAQ9Y,KAAKshT,SAAS5P,GACtB54R,EAAMilZ,UACR/9Z,KAAK05M,WAAWg4F,EAAK54R,EAAOw1e,EAKhC,CACF,EAEAV,EAAe1tf,UAAUw5M,WAAa,SAAUg4F,EAAK54R,EAAOw1e,GAC1D,IAAIl8O,EAAOpyQ,KAAKmzB,QAAQi/O,KAEnBpyQ,KAAK8tf,eAAep8M,KACvB1xS,KAAK8tf,eAAep8M,GAAO,CAEzBntE,KAAMzrN,EAAMyrN,KACZrqN,IAAKpB,EAAMoB,IACXC,IAAKrB,EAAMqB,MAIf,IAAI6/a,EAAWh6b,KAAK8tf,eAAep8M,GAC/B/pP,EAAQqyY,EAAS7/a,IAAM6/a,EAAS9/a,IAChCA,EAAMpB,EAAMoB,IACdC,EAAMrB,EAAMqB,IACV4L,EAAIuoe,EAAS3mc,EACb4mc,EAAQr0e,EAAM6L,EACdyoe,EAAQr0e,EAAM4L,EAEdgtV,GADWy7I,EAAQD,GACC5mc,EACpB6mc,EAAQD,GAASx7I,EAAS,KAAOA,EAAS,KAC5C3gG,EAAKt5P,MAAMA,EAAM+mH,MAAO,CAEtB0kG,MAAM,EACNrqN,IAAKA,EAAM6L,EACX5L,IAAKA,EAAM4L,GAGjB,EACO6ne,CACT,CA1EkC,CA0EhC,KACF,QC3EA,IACIa,IAAgC,SAAU/sf,GAE5C,SAAS+sf,IACP,OAAkB,OAAX/sf,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAqBA,OAxBA,UAAUyuf,EAAkB/sf,GAI5B+sf,EAAiBvuf,UAAUwuf,OAAS,SAAUlyc,GAC5C,IAAIr7C,EAAKnB,KAAKmzB,QACZi/O,EAAOjxQ,EAAGixQ,KACVrnQ,EAAQ5J,EAAG4J,MACb,GAAKqnQ,EAAK6qL,aAAayU,UAAvB,CAGA,IAAIi9C,GAAcnyc,aAAiC,EAASA,EAAImyc,aAb3C,EAcjBC,EAAsBx8O,EAAKqoM,cAAc,aACzCtiE,EAAS/lI,EAAK0kM,YACdpxb,EAAO0sP,EAAK6qL,aAAav3a,KACzB25d,GAAW,WAAK,SAAY35d,EAAMyyX,EAAOt4Q,QACzCp4E,GAAO,UAAK0wV,EAAO33W,QACnB7G,EAAei1d,EAAoBrtX,WAEnCstX,EADe50e,KAAKwX,OAAO4td,EAAW53b,GAAQ9tB,IAxBtD,SAAqB5uB,GAEnB,OADiBA,EAAMq1b,OAAO19a,cACZ+pJ,OAAS,CAC7B,CAsBoCqiV,CAAY/jf,GAAS4jf,GAAcA,GAC/DI,EAAaJ,GAActP,EAAW53b,GAAQ,IAC9Cunc,GAAY,UAAMH,GAAaxP,EAAW53b,GAAQsnc,EAAY,EAAG,GACrEH,EAAoBv4W,SAAS24W,EAZ7B,CAaF,EACOP,CACT,CA1BoC,CA0BlC,KACF,QC5BIQ,IAA+B,SAAUvtf,GAE3C,SAASutf,IACP,OAAkB,OAAXvtf,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAmEA,OAtEA,UAAUivf,EAAiBvtf,GAI3Butf,EAAgB/uf,UAAUoV,KAAO,WAC/B,IAAI6d,EAAUnzB,KAAKmzB,QAEfhyB,EADO++b,IAAoB/sa,GAAS0gP,KAC1BlyQ,IAAIowD,MAChBiV,EAAc7lE,EAAG6lE,YACjBnmD,EAAO1f,EAAG0f,KACVque,EAA0B/tf,EAAG+tf,wBAC3Bh4e,EAAKic,EAAQpoB,MACfE,EAAIiM,EAAGjM,EACPC,EAAIgM,EAAGhM,EACJlL,KAAK+kQ,SACR/kQ,KAAKmmd,gBAEPnmd,KAAK+kQ,QAAQv/P,OAAO,CAClBusD,MAAOlxC,GAAQ,GACfqua,cAAe,WACb,MAAO,2BAA4B37a,OAAO,IAAmC,aAAcA,OAAO27e,EAAyB,gCAAiC37e,OAAO,IAA+B,2BAAqDA,OAAOyzD,EAAa,mDAC7Q,EACA/7D,EAAGA,EACHC,EAAGA,IAELlL,KAAK+kQ,QAAQzvP,MACf,EACA25e,EAAgB/uf,UAAUkC,QAAU,WAClCV,EAAOxB,UAAUkC,QAAQR,KAAK5B,MAC9BA,KAAK+kQ,SAAW/kQ,KAAK+kQ,QAAQ3iQ,SAC/B,EACA6sf,EAAgB/uf,UAAUqV,KAAO,WAC/BvV,KAAK+kQ,SAAW/kQ,KAAK+kQ,QAAQxvP,MAC/B,EACA05e,EAAgB/uf,UAAUimd,cAAgB,WACxC,IAAIhld,EAEAoG,EADOvH,KAAKmzB,QAAQi/O,KACN7qQ,OACd4ma,EAAS,CACXznZ,MAAO,CACLzb,EAAG,EACHC,EAAG,GAEL2jB,IAAK,CACH5jB,EAAG1D,EAAOvF,IAAI,SACdkJ,EAAG3D,EAAOvF,IAAI,YAGd+iQ,EAAU,IAAI0xL,IAAY,CAC5B7kb,OAAQrK,EAAOvF,IAAI,MAAMoN,WACzB++Z,OAAQA,EACR55Z,SAAS,EACT8ze,YAtDyB,2BAuDzBnuE,WAAW,UAAS,CAAC,GAAG,UAAQ,CAAC,GAAI/4a,EAAK,CAAC,EAE3CA,EAAG,KAAqC,CACtC,YAAa,MACbi5E,QAAS,OACT,cAAe,OACf,YAAa,OACbrmC,MAAO,sBACN5yC,EAAG,KAAiC,CACrC,aAAc,YACd,gBAAiB,OAChBA,OAEL4jQ,EAAQz6P,OACRy6P,EAAQgrK,YAAW,GACnB/va,KAAK+kQ,QAAUA,CACjB,EACOkqP,CACT,CAxEmC,CAwEjC,KACF,QCwMA,SAASE,IAAch8d,GACrB,OAAOA,EAAQwva,UACjB,CAmeA,SAAS,IAAY53b,GAEnB,OADAA,EAAMq1b,OAAO3zb,iBACN1B,EAAMq1b,OAAO19a,cAAc+pJ,OAAS,CAC7C,EtO7uBO,SAAuBn/D,EAAOnrG,GACnC6zc,KAAO,UAAU1oW,IAAUsoW,IAAYzzc,EACzC,CsOjBA,CAAc,OAAQ4ic,IAAwBs3B,MAK9ClkE,IAAe,SAAU,GACzBA,IAAe,MAAO,GAatBusD,IAAiB,UAAW,KAC5BA,IAAiB,WAAY,KAC7BA,IAAiB,SAAU,KAC3BA,IAAiB,OAAQ,KACzBA,IAAiB,QAAS,KAC1BA,IAAiB,OAAQ,KACzBA,IAAiB,OAAQ,KACzBA,IAAiB,OAAQ,KACzBA,IAAiB,UAAW,KAC5BA,IAAiB,SAAU,KA4B3BgH,IAAsB,OAAQ,KAC9BA,IAAsB,WAAY,KAClCA,IAAsB,MAAO,KAC7BA,IAAsB,QAAS,KAgB/BC,IAA4B,WtF0IrB,SAAiBxla,EAAO4tN,EAAQy4L,EAAQr+B,GAC7C,IAAIl7J,EAAS,IAAIy+N,KACjB,UAAK39N,GAAQ,SAAUnnN,GAQrB,IAPA,IAAIozX,EAAapzX,EAAMp5C,MAAK,SAAU/N,GACpC,MAA6B,SAAtBA,EAAMzD,IAAI,OACnB,IACIb,EAAK6+a,EAAW55a,OAClB6E,EAAI9J,EAAG8J,EACPC,EAAI/J,EAAG+J,EACL66d,GAAU,EACL7ke,EAAI,EAAGA,GAAK,EAAGA,IAAK,CAC3B,IAAI4N,EAAOije,IAAoB/xD,EAAY/0a,EAAGC,EAAGhK,GACjD,GAAI+xQ,EAAO4+N,OAAO/ie,GAAO,CACvBmkQ,EAAO6+N,QAAQhje,GACfi3d,GAAU,EACV,KACF,CACF,CACKA,GACHn5a,EAAMz5C,QAAO,EAEjB,IACA8/P,EAAO7wQ,SACT,IsFhKAupd,IAA4B,cCsCrB,SAAoBxla,EAAO4tN,EAAQy4L,EAAQr+B,GAChD,GAAKhoX,EAAMtlD,QAAWkzQ,EAAOlzQ,OAA7B,CAGA,IAAIsiF,EAASh9B,EAAM,GAAKA,EAAM,GAAGg9B,OAAS,EACtC86L,EAAalK,EAAO,GAAG/xQ,IAAI,cAC3BgsE,EAASiwM,EAAWmuJ,YACpBvuY,EAASogP,EAAWiuJ,YACxB,GAAI/oV,EAAS,EAAG,CAEd,IAEIisa,EAAyB,GADhBphb,EAASmV,GACWksa,GAC7BC,EAAc,CAChB5oe,MAAOu3P,EAAWv3P,MAClBmI,IAAKovP,EAAWpvP,KAGd0ge,EAAW,CAAC,GAAI,IAGpBppc,EAAM/9C,SAAQ,SAAUmtd,GACjBA,IAGuB,UAAxBA,EAAUt0c,UAEZsue,EAAS,GAAGhvf,KAAKg1d,GAGjBg6B,EAAS,GAAGhvf,KAAKg1d,GAErB,IACAg6B,EAASnnf,SAAQ,SAAU0ga,EAAM9ga,GAE/B,IAAIwnf,EAA2BJ,EAzBd,GA0BbtmF,EAAKjoa,OAAS2uf,IAChB1mF,EAAKv2Z,MAAK,SAAU4L,EAAG8E,GAErB,OAAOA,EAAE,aAAe9E,EAAE,YAC5B,IACA2qZ,EAAK1na,OAAOouf,EAA0B1mF,EAAKjoa,OAAS2uf,IAGtD1mF,EAAKv2Z,MAAK,SAAU4L,EAAG8E,GAErB,OAAO9E,EAAEjT,EAAI+X,EAAE/X,CACjB,IAhKN,SAAuB2rd,EAAa9iN,EAAQhzP,EAAYiwd,EAAWnzc,EAAQ4xd,GACzE,IAAIz3D,EAAK72b,EAOLD,EALAgwe,GAAc,EACdxqd,EAAQsqd,EAAUtqd,MAClBmI,EAAMmid,EAAUnid,IAChBsgR,EAASl1R,KAAKC,IAAIwM,EAAMxb,EAAG2jB,EAAI3jB,GAC/Bkme,EAAcn3d,KAAKoG,IAAIqG,EAAMxb,EAAI2jB,EAAI3jB,GAErCmF,EAAO,EACPD,EAAO6R,OAAO+5R,UACd1mC,EAAQvB,EAAO/iP,KAAI,SAAU47B,GAO/B,OANIA,EAAM1hD,EAAImF,IACZA,EAAOu8C,EAAM1hD,GAEX0hD,EAAM1hD,EAAIkF,IACZA,EAAOw8C,EAAM1hD,GAER,CACLo5B,KAAMvjB,EACNg7M,QAAS,CAACnvK,EAAM1hD,EAAIikS,GAExB,IAKA,IAJA/+R,GAAQ++R,EACJ9+R,EAAO8+R,EAASiiM,IAClBA,EAAc/ge,EAAO8+R,GAEhB+hM,GAUL,IARA57N,EAAMltQ,SAAQ,SAAUmZ,GACtB,IAAI7Y,GAAUuR,KAAKC,IAAI7Y,MAAM+O,EAAMmR,EAAIw6M,SAAW9hN,KAAKE,IAAI9Y,MAAM+O,EAAMmR,EAAIw6M,UAAY,EACvFx6M,EAAIo5G,IAAM1gH,KAAKC,IAAID,KAAKE,IAAI/J,EAAM1H,EAAS6Y,EAAI+iB,KAAO,GAAI8sc,EAAc7vd,EAAI+iB,KAE9E,IAEA4sc,GAAc,EACdhwe,EAAIo0Q,EAAMz0Q,OACHK,KACL,GAAIA,EAAI,EAAG,CACT,IAAImwe,EAAc/7N,EAAMp0Q,EAAI,GACxBqgB,EAAM+zP,EAAMp0Q,GACZmwe,EAAY12W,IAAM02W,EAAY/sc,KAAO/iB,EAAIo5G,MAE3C02W,EAAY/sc,MAAQ/iB,EAAI+iB,KACxB+sc,EAAYt1Q,QAAUs1Q,EAAYt1Q,QAAQxoN,OAAOgO,EAAIw6M,SAEjDs1Q,EAAY12W,IAAM02W,EAAY/sc,KAAO8sc,IACvCC,EAAY12W,IAAMy2W,EAAcC,EAAY/sc,MAE9CgxO,EAAMl0Q,OAAOF,EAAG,GAChBgwe,GAAc,EAElB,CAGJhwe,EAAI,EAEJo0Q,EAAMltQ,SAAQ,SAAU6a,GACtB,IAAIqud,EAAoBniM,EAASpuR,EAAa,EAC9CkC,EAAE84M,QAAQ3zN,SAAQ,WAChB2rQ,EAAO7yQ,GAAGgK,EAAI+X,EAAE03G,IAAM22W,EACtBA,GAAqBvwd,EACrB7f,GACF,GACF,IACA,IAAIyzd,EAAY,CAAC,EACjB,IACE,IAAK,IAAI+6B,GAAgB,UAAS74B,GAAc84B,EAAkBD,EAAcn6d,QAASo6d,EAAgBr3c,KAAMq3c,EAAkBD,EAAcn6d,OAAQ,CACrJ,IAAIyqZ,EAAa2vE,EAAgBxtf,MACjCwyd,EAAU30C,EAAWh+a,IAAI,OAASg+a,CACpC,CACF,CAAE,MAAOmY,GACPH,EAAM,CACJ5qY,MAAO+qY,EAEX,CAAE,QACA,IACMw3D,IAAoBA,EAAgBr3c,OAASn3C,EAAKuuf,EAAcz2R,SAAS93N,EAAGS,KAAK8tf,EACvF,CAAE,QACA,GAAI13D,EAAK,MAAMA,EAAI5qY,KACrB,CACF,CAEA2mN,EAAO3rQ,SAAQ,SAAUwkD,GACvB,IAAIgjc,EAAQhjc,EAAM1tC,EAAI0tC,EAAM1tC,EACxB2we,EAAS51e,KAAK0B,IAAI1B,KAAKoG,IAAIusC,EAAM1hD,EAAI2yB,EAAO3yB,GAAI,GACpD,GAAI0kf,EAAQC,EACVjjc,EAAM3hD,EAAI4yB,EAAO5yB,MACZ,CACL,IAAI2B,EAAKqN,KAAK2C,KAAKgze,EAAQC,GAMzBjjc,EAAM3hD,EALHwkf,EAKO5xd,EAAO5yB,EAAI2B,EAHXixB,EAAO5yB,EAAI2B,CAKzB,CAEA,IAAIoza,EAAa20C,EAAU/na,EAAMl5C,IACjCssa,EAAW55a,KAAK,IAAKwmD,EAAM3hD,GAC3B+0a,EAAW55a,KAAK,IAAKwmD,EAAM1hD,GAE3B,IAAIita,GAAY,UAAK6H,EAAW1va,eAAe,SAAUm3E,GACvD,MAA2B,SAApBA,EAAIzlF,IAAI,OACjB,IAEIm2a,IACFA,EAAU/xa,KAAK,IAAKwmD,EAAM1hD,GAC1Bita,EAAU/xa,KAAK,IAAKwmD,EAAM3hD,GAE9B,GACF,CAiDM6kf,CAAc/7O,EAAQ+0J,EAtCL,GAsCyBwmF,EAAazxd,EAAQ71B,EACjE,GACF,EAEA,UAAKm+C,GAAO,SAAU1uC,GACpB,GAAIA,GAAQA,EAAKw7b,UAAW,CAC1B,IAAI9+a,EAAW1c,EAAK0rE,OAChBz7D,EAAQjQ,EAAKiQ,MAEbyV,EAAaw5Z,IAAiB94Z,EAAO5yB,EAAG4yB,EAAO3yB,EAAG8iE,EAAQtmD,GAC1Dqoe,EAAap5D,IAAiB94Z,EAAO5yB,EAAG4yB,EAAO3yB,EAAG8iE,EAAS75C,EAAW,EAAGzM,GACzEsoe,EAAQv4e,EAAKxM,GAAI,UAAIwM,EAAM,UAAW,GACtCw4e,EAAQx4e,EAAKvM,GAAI,UAAIuM,EAAM,UAAW,GACtCy/Z,EAAW,CACbjsa,EAAG+kf,EAhLE,EAgLM/1e,KAAKkC,IAAIuL,GACpBxc,EAAG+kf,EAjLE,EAiLMh2e,KAAKoC,IAAIqL,KAEjB,UAASjQ,EAAKw7b,aAEjBx7b,EAAKw7b,UAAY,CAAC,GAEpBx7b,EAAKw7b,UAAUpsc,KAAO,CAAC,KAAK0M,OAAO4pB,EAAWlyB,GAAI,GAAGsI,OAAO4pB,EAAWjyB,EAAG,MAAMqI,OAAOw8e,EAAW9kf,GAAI,GAAGsI,OAAOw8e,EAAW7kf,EAAG,KAAKqI,OAAO2ja,EAASjsa,GAAIisa,EAAShsa,GAAGme,KAAK,IAC1K,CACF,GApEA,CAqEF,ID7GAsic,IAA4B,iBtFuHrB,SAAsBxla,EAAO4tN,EAAQy4L,EAAQr+B,GAClD,IAAIl7J,EAAS,IAAIy+N,KACjB,UAAK39N,GAAQ,SAAUnnN,GACrB,IAAIozX,EAAapzX,EAAMp5C,MAAK,SAAU/N,GACpC,MAA6B,SAAtBA,EAAMzD,IAAI,OACnB,KAxHJ,SAAoB4qD,EAAOqmN,EAAQi9O,QAChB,IAAbA,IACFA,EAAWze,KAEb,IAMIxiM,EALA9tS,EAAKyrD,EAAMxmD,OACb6E,EAAI9J,EAAG8J,EACPC,EAAI/J,EAAG+J,EACL4D,EAAO89C,EAAMh8C,gBACbw+R,EAAWn1R,KAAK2C,KAAK9N,EAAKf,MAAQe,EAAKf,MAAQe,EAAKd,OAASc,EAAKd,QAElEjK,EAAI,EACJ6I,EAAK,EACLC,EAAK,EACLxJ,EAAI,SAAWs6I,GACjB,IAAIwyW,EAAa,GAARxyW,EACT,MAAO,CAACwyW,EAAKl2e,KAAKkC,IAAIg0e,GAAKA,EAAKl2e,KAAKoC,IAAI8ze,GAC3C,EACA,GAAIl9O,EAAO4+N,OAAO/ie,GAEhB,OADAmkQ,EAAO6+N,QAAQhje,IACR,EAKT,IAHA,IAAIi3d,GAAU,EACVj5W,EAAQ,EACRsjY,EAAgB,CAAC,EACdn2e,KAAKC,IAAID,KAAKoG,IAAIzT,GAAKqN,KAAKoG,IAAIxT,IAAOuiS,GAAYtiL,EAAQojY,GAIhE,GAFAtjf,KADAqiS,EAAO5rS,EAAEU,IAtBF,IAuBK,GACZ8I,IAAOoiS,EAAK,IACPriS,GAAOC,KAAMujf,EAAc,GAAG78e,OAAO3G,EAAI,KAAK2G,OAAO1G,MAG1D+/C,EAAMxmD,KAAK,CACT6E,EAAGA,EAAI2B,EACP1B,EAAGA,EAAI2B,IAELD,EAAKC,EAAK,GACZ+/C,EAAMxmD,KAAK,YAAa,SAE1B0mH,IACImmJ,EAAO4+N,OAAOjlb,EAAMh8C,kBAAkB,CACxCqiQ,EAAO6+N,QAAQllb,EAAMh8C,iBACrBm1d,GAAU,EACVqqB,EAAc,GAAG78e,OAAO3G,EAAI,KAAK2G,OAAO1G,KAAO,EAC/C,KACF,CAEF,OAAOk5d,CACT,EAyESsqB,CAAWrwE,EAAY/sK,IAC1BrmN,EAAMz5C,QAAO,EAEjB,IACA8/P,EAAO7wQ,SACT,IsFjIAupd,IAA4B,gBlFpDrB,SAAqBoL,EAAYhjN,EAAQy4L,EAAQr+B,GACtD,OAAO,UAAUnua,UAAM,OAAQ,GAAQ,WACrC,IAAIs1Q,EAAOq1I,EAAS9xW,EAAIv3B,EAAQ4E,EAAK8xa,EACrC,OAAO,UAAYh4b,MAAM,SAAUmB,GACjC,OAAQA,EAAGyrD,OACT,KAAK,EAoBH,OAnBA0oN,EAAQvB,EAAO/iP,KAAI,SAAUjL,EAAGmf,GAC9B,OAAO,WAAS,UAAS,CAAC,EAAGowb,IAAuBvvc,EAAGgxc,EAAW7xb,IAAM,UAAI6xb,EAAW7xb,GAAM,wBAAyB,CACpH3wB,SAAS,GAEb,IACAo2Y,EAAU3pW,KAAKF,UAAUw0N,GACzBz8N,EAAK,SAAYsN,GAWf,OAVA,IAAMjkD,IAAIyoZ,EAASxkW,IACnB,UAAKA,GAAO,SAAUhlD,EAAI+jC,GACxB,IAAI3wB,EAAUpT,EAAGoT,QACbyra,EAAajsK,EAAO7uO,GACpB3wB,EACFyra,SAAwDA,EAAW1qa,OAEnE0qa,SAAwDA,EAAWzqa,MAEvE,IACO4wC,CACT,EACK,IAAMnkD,IAAI2oZ,IACf9xW,EAAG,IAAM72C,IAAI2oZ,IACN,CAAC,EAAa,IAFW,CAAC,EAAa,GAGhD,KAAK,EACH,IAAKgoF,IAAQ,MAAO,CAAC,EAAa,GAClCxxe,EAAGyrD,MAAQ,EACb,KAAK,EAMH,OALAzrD,EAAG2rD,KAAKvsD,KAAK,CAAC,EAAG,EAAE,CAAE,IACrB+gB,EAAS0/B,KAAKF,UAAU,CACtBn4C,KAAM,eACNw9C,MAAOmvN,IAEF,CAAC,EAAaq9N,IAAO50a,KAAKz8C,GAAQ,WACvC,OAAOu3B,EAAG,IAAOy8N,GACnB,KACF,KAAK,EAGH,OAFApvP,EAAM/kB,EAAG0rD,OACThU,EAAGpY,MAAMC,QAAQxa,EAAIR,MAAQQ,EAAIR,KAAO,IACjC,CAAC,EAAa,GACvB,KAAK,EAIH,OAHAsya,EAAM72b,EAAG0rD,OACTm4E,QAAQ53E,MAAM4qY,GACdn/Y,EAAG,IAAOy8N,IACH,CAAC,EAAa,GACvB,KAAK,EACH,MAAO,CAAC,EAAa,GACvB,KAAK,EAEHz8N,EAAG,IAAOy8N,IACVn0Q,EAAGyrD,MAAQ,EACb,KAAK,EACH,MAAO,CAAC,GAEd,GACF,GACF,IkFPA++Z,IAA4B,kBE9ErB,SAAsBxla,EAAO4tN,EAAQy4L,EAAQr+B,IAClD,UAAKp6J,GAAQ,SAAUnnN,EAAO5kD,GAC5B,IAAIyid,EAAY79Z,EAAMh8C,gBAClB+wb,EAAY6K,EAAOxkc,GAAOiI,WAC1Bw6c,EAAUv6c,KAAOyxb,EAAUzxb,MAAQu6c,EAAUr6c,KAAOuxb,EAAUvxb,MAAQq6c,EAAUt6c,KAAOwxb,EAAUxxb,MAAQs6c,EAAUp6c,KAAOsxb,EAAUtxb,OACtIu8C,EAAMz5C,QAAO,EAEjB,GACF,IFuEAw4c,IAA4B,mBG5ErB,SAAuBxla,EAAO4tN,EAAQy4L,EAAQr+B,IACnD,UAAKp6J,GAAQ,SAAUnnN,GACrB,IAAI0jc,EAAaniF,EAAOj+Z,KACtBqgf,EAAapiF,EAAO/9Z,KACpBogf,EAAariF,EAAOh+Z,KACpBsgf,EAAatiF,EAAO99Z,KAClBlP,EAAKyrD,EAAMh8C,gBACbV,EAAO/O,EAAG+O,KACVE,EAAOjP,EAAGiP,KACVD,EAAOhP,EAAGgP,KACVE,EAAOlP,EAAGkP,KACVpF,EAAI9J,EAAG8J,EACPC,EAAI/J,EAAG+J,EACP6C,EAAQ5M,EAAG4M,MACXC,EAAS7M,EAAG6M,OACV0if,EAASzlf,EACT0lf,EAASzlf,GACTgF,EAAOogf,GAAcngf,EAAOmgf,KAE9BI,EAASJ,IAEPlgf,EAAOmgf,GAAclgf,EAAOkgf,KAE9BI,EAASJ,GAEPrgf,EAAOsgf,EAETE,EAASF,EAAazif,EACboC,EAAOqgf,IAEhBE,GAAmBvgf,EAAOqgf,GAExBpgf,EAAOqgf,EAETE,EAASF,EAAazif,EACbqC,EAAOogf,IAEhBE,GAAmBtgf,EAAOogf,GAExBC,IAAWzlf,GAAK0lf,IAAWzlf,GAC7B,IAAU0hD,EAAO8jc,EAASzlf,EAAG0lf,EAASzlf,EAE1C,GACF,IHkCAygd,IAA4B,iBI3ErB,SAAqBxla,EAAO4tN,EAAQy4L,EAAQr+B,EAAQxsa,GACzD,KAAIoyQ,EAAOlzQ,QAAU,GAArB,CAGA,IAAIi6B,GAAan5B,aAAiC,EAASA,EAAIm5B,YAAc,CAAC,MAAO,QAAS,SAAU,QACpGL,GAAU94B,aAAiC,EAASA,EAAI84B,SAAW,YACnE+vE,GAAU7oG,aAAiC,EAASA,EAAI6oG,SAAW,EACnEyzK,EAAalK,EAAO,GAAG/xQ,IAAI,cAC/B,GAAKi8Q,EAAL,CAGA,IAAI98Q,E3P8HC,SAA2B88Q,EAAYzzK,QAC7B,IAAXA,IACFA,EAAS,GAEX,IAAI9jF,EAAQu3P,EAAWv3P,MACrBmI,EAAMovP,EAAWpvP,IACf9gB,EAAQkwQ,EAAWznJ,WACnBxoH,EAASiwQ,EAAWkuJ,YACpBj8Z,EAAO+J,KAAKC,IAAIwM,EAAMzb,EAAG4jB,EAAI5jB,GAC7BmF,EAAO6J,KAAKC,IAAIwM,EAAMxb,EAAG2jB,EAAI3jB,GACjC,OAAOktb,IAAKC,UAAUnob,EAAOs6F,EAAQp6F,EAAOo6F,EAAQt6F,EAAOnC,EAAQy8F,EAAQp6F,EAAOpC,EAASw8F,EAC7F,C2PzIW6uY,CAAkBp7N,EAAYzzK,GACrC8lZ,EAAanvf,EAAG+O,KAChBqgf,EAAapvf,EAAGiP,KAChBogf,EAAarvf,EAAGgP,KAChBsgf,EAAatvf,EAAGkP,MAClB,UAAK0jQ,GAAQ,SAAUnnN,GACrB,IAAIzrD,EAAKyrD,EAAMh8C,gBACbV,EAAO/O,EAAG+O,KACVE,EAAOjP,EAAGiP,KACVD,EAAOhP,EAAGgP,KACVE,EAAOlP,EAAGkP,KACVpF,EAAI9J,EAAG8J,EACPC,EAAI/J,EAAG+J,EACP6C,EAAQ5M,EAAG4M,MACXC,EAAS7M,EAAG6M,OACV0if,EAASzlf,EACT0lf,EAASzlf,EA2Bb,GA1BI4vB,EAAU5nB,QAAQ,SAAW,IAAMhD,EAAOogf,GAAcngf,EAAOmgf,KAEjEI,EAASJ,GAEPx1d,EAAU5nB,QAAQ,QAAU,IAAM9C,EAAOmgf,GAAclgf,EAAOkgf,KAEhEI,EAASJ,GAEPz1d,EAAU5nB,QAAQ,UAAY,IAC5BhD,EAAOsgf,EAETE,EAASF,EAAazif,EACboC,EAAOqgf,IAEhBE,GAAmBvgf,EAAOqgf,IAG1B11d,EAAU5nB,QAAQ,WAAa,IAC7B9C,EAAOqgf,EAETE,EAASF,EAAazif,EACbqC,EAAOogf,IAEhBE,GAAmBtgf,EAAOogf,IAG1BC,IAAWzlf,GAAK0lf,IAAWzlf,EAAG,CAChC,IAAI0lf,EAAeF,EAASzlf,EAC5B,GAAe,cAAXwvB,EACF,IAAUmyB,EAAOgkc,EAAcD,EAASzlf,QACnC,GAAe,aAAXuvB,EAAuB,CAChC,IAAIo2d,EAAajkc,EAAMx5C,SAAQ,SAAU3N,GACvC,MAA6B,SAAtBA,EAAMzD,IAAI,OACnB,IACA6uf,EAAWzof,SAAQ,SAAU+va,GAC3B,IAAIrsa,GAAQ,UAAKqsa,EAAU/xa,OAAQ,CAAC,WAAY,aAAc,aAAc,YAAa,gBACrF0qf,EAAU34E,EAAUvna,gBACpBiQ,EhF1Ce,SAAyBA,EAAMglB,EAAU7kB,GACpE,IAEIilB,EADA8qd,EAAYrd,IAAiB,MAAO1yd,GAKtCilB,GAHG,UAASplB,GAGDA,GAFA,UAASA,GAItB,IAEIilB,EACAC,EAHAG,EAAYL,EACZ3mB,EAAI,GAGR,GAAIw0d,IAAiB7yd,EAAMG,IAAS6kB,EAClC,OAAOhlB,EAGT,KAEEilB,EAAcG,EAAS7K,OAAO,EAlBrB,OAoBT2K,EAAe2tc,IAAiB5tc,EAAa9kB,IAE1B+ve,EAAY7qd,GACzBH,EAAeG,IASrB,GALAhnB,EAAE3e,KAAKulC,GAEPI,GAAaH,IACbE,EAAWA,EAAS7K,OA9BX,KAiCP,OAAOlc,EAAEmK,KAAK,IAIlB,KAEEyc,EAAcG,EAAS7K,OAAO,EAAG,MAEjC2K,EAAe2tc,IAAiB5tc,EAAa9kB,IAE1B+ve,EAAY7qd,IAO/B,GAJAhnB,EAAE3e,KAAKulC,GAEPI,GAAaH,IACbE,EAAWA,EAAS7K,OAAO,IAEzB,OAAOlc,EAAEmK,KAAK,IAGlB,MAAO,GAAG9V,OAAO2L,EAAEmK,KAAK,IAAK,MAC/B,CgFdqB2ne,CAAgB74E,EAAU/xa,KAAK,QAAS0qf,EAAQ/if,MAAQkM,KAAKoG,IAAIuwe,GAAe9kf,GAC3Fqsa,EAAU/xa,KAAK,OAAQya,EACzB,GACF,MACE+rC,EAAMr3C,MAEV,CACF,GA9DA,CAPA,CAsEF,IJGAo2c,IAA4B,axFwBrB,SAA6BjD,EAAe30M,EAAQy4L,EAAQr+B,GACjE,IAAI6pB,EAAK72b,EACLglD,GAAQ,UAAOuia,GAAe,SAAUjxc,GAC1C,QAAQ,UAAMA,EAChB,IAEIwmQ,EAAalK,EAAO,IAAMA,EAAO,GAAG/xQ,IAAI,cAC5C,GAAKi8Q,EAAL,CAIA,IAAIpgP,EAASogP,EAAWiuJ,YAEpBl+V,EAASiwM,EAAWmuJ,YAEpBuoD,EAAY,CAAC,EACjB,IACE,IAAK,IAAIs8B,GAAW,UAASl9O,GAASm9O,EAAaD,EAAS17d,QAAS27d,EAAW54c,KAAM44c,EAAaD,EAAS17d,OAAQ,CAClH,IAAIyqZ,EAAakxE,EAAW/uf,MAC5Bwyd,EAAU30C,EAAWh+a,IAAI,OAASg+a,CACpC,CACF,CAAE,MAAOmY,GACPH,EAAM,CACJ5qY,MAAO+qY,EAEX,CAAE,QACA,IACM+4D,IAAeA,EAAW54c,OAASn3C,EAAK8vf,EAASh4R,SAAS93N,EAAGS,KAAKqvf,EACxE,CAAE,QACA,GAAIj5D,EAAK,MAAMA,EAAI5qY,KACrB,CACF,CAEA,IAAI4lZ,GAAc,UAAI7sZ,EAAM,GAAI,cAAe,IAC3C4zQ,GAAc,UAAI5zQ,EAAM,GAAI,SAAU,GAC1C,KAAI4zQ,GAAe,GAAnB,CAGA,IACIo3L,EAAiB,QAEjBC,GAAiB,UAAQjrc,GAAO,SAAU1uC,GAC5C,OAAOA,EAAKxM,EAAI4yB,EAAO5yB,EAJL,OAIyBkmf,CAC7C,IACIzqe,EAAQu3P,EAAWv3P,MACrBmI,EAAMovP,EAAWpvP,IAEfuid,EAAcn3d,KAAKC,IAA2C,GAAtC8zD,EAAS+rP,EAAci5I,GAAkB/0L,EAAWkuJ,aAC5EklF,EAASjgB,EAAc,EAEvBkgB,EAAuB,CACzBphf,KAAMwW,EAAMzb,EACZkF,KAAM0e,EAAI5jB,EACVmF,KAAMytB,EAAO3yB,EAAImmf,EACjBhhf,KAAMwtB,EAAO3yB,EAAImmf,IAGnB,UAAKD,GAAgB,SAAUtoF,EAAMjoY,GACnC,IAAI2ud,EAA2Bv1e,KAAKwX,MAAM2/c,EAAcp+B,GACpDlqC,EAAKjoa,OAAS2uf,IAChB1mF,EAAKv2Z,MAAK,SAAU4L,EAAG8E,GAErB,OAAOA,EAAE81C,QAAU56C,EAAE46C,OACvB,KACA,UAAK+vW,GAAM,SAAUysD,EAAWrwb,GAC1BA,EAAM,EAAIsqd,IACZ76B,EAAUY,EAAU7hd,IAAIxR,IAAI,WAAW,GACvCqzd,EAAU0b,WAAY,EAE1B,KAEF,IAAcnoE,EAAMkqC,EAAas+C,EACnC,KACA,UAAKF,GAAgB,SAAUtoF,EAAMjoY,IACnC,UAAKioY,GAAM,SAAUrxZ,GACnB,IAAIg4e,EAAU5ud,IAAQswd,EAGlBr6a,EAFa69Y,EAAUl9c,EAAK/D,IAEPZ,gBAAgB,GAEzC,GAAIgkE,EAAS,CACX,IAAI53D,EAAI8uD,EAAS+rP,EAEbltT,EAAK4K,EAAKvM,EAAI2yB,EAAO3yB,EACrB0kf,EAAQ31e,KAAK0B,IAAIuD,EAAG,GACpB2we,EAAS51e,KAAK0B,IAAI9O,EAAI,GACtB0kf,EAAS3B,EAAQC,EAAS,EAAID,EAAQC,EAAS,EAC/Cjjf,EAAKqN,KAAK2C,KAAK20e,GACfC,EAAYv3e,KAAKoG,IAAIpG,KAAKkC,IAAI1E,EAAKiQ,OAASxI,GAM9CzH,EAAKxM,EALFwkf,EAKM5xd,EAAO5yB,EAAIgP,KAAKE,IAAIvN,EAAI4kf,GAHxB3zd,EAAO5yB,EAAIgP,KAAKE,IAAIvN,EAAI4kf,EAKrC,CAEI16a,IACFA,EAAQ1wE,KAAK,IAAKqR,EAAKvM,GACvB4rE,EAAQ1wE,KAAK,IAAKqR,EAAKxM,IAxM/B,SAAuBwM,EAA4BwmQ,GAEjD,IAAIpgP,EAASogP,EAAWiuJ,YAEpBl+V,EAASiwM,EAAWmuJ,YACxB,GAAI30Z,GAAQA,EAAKw7b,UAAW,CAC1B,IAAIvrb,EAAQjQ,EAAKiQ,MACfqyS,EAActiT,EAAK0rE,OAEjBhmD,EAAaw5Z,IAAiB94Z,EAAO5yB,EAAG4yB,EAAO3yB,EAAG8iE,EAAQtmD,GAC1Dsoe,EAAQv4e,EAAKxM,GAAI,UAAIwM,EAAM,UAAW,IAAMwC,KAAKkC,IAAIuL,GAAS,EAAI,GAAK,GACvEuoe,EAAQx4e,EAAKvM,GAAI,UAAIuM,EAAM,UAAW,IAAMwC,KAAKoC,IAAIqL,GAAS,EAAI,GAAK,GACvEwvZ,EAAW,CACbjsa,EAAG+kf,EAAQ/1e,KAAKkC,IAAIuL,GAAS,IAC7Bxc,EAAG+kf,EAAQh2e,KAAKoC,IAAIqL,GAAS,KAE3B+pe,EAAkBh6e,EAAKw7b,UAAUr3a,OACjC/0B,EAAO,GACP+F,EAAKsqa,EAASjsa,EAAI4yB,EAAO5yB,EACzB4B,EAAKqqa,EAAShsa,EAAI2yB,EAAO3yB,EACzB8W,EAAW/H,KAAKye,KAAK7rB,EAAKD,GAM9B,GAJIA,EAAK,IACPoV,GAAY/H,KAAK+B,KAGK,IAApBy1e,EAA2B,EACxB,UAASh6e,EAAKw7b,aAEjBx7b,EAAKw7b,UAAY,CAAC,GAGpB,IAAI51a,EAAY,GAEZ3V,EAAQ,GAAKA,GAASzN,KAAK+B,GAAK,GAAK0L,EAAkB,IAAVzN,KAAK+B,KAChDk7Z,EAAShsa,EAAIiyB,EAAWjyB,IAC1BmyB,EAAY,GAIZ3V,GAAS,GAAKA,EAAQzN,KAAK+B,GAAK,GAC9Bk7Z,EAAShsa,EAAIiyB,EAAWjyB,IAC1BmyB,EAAY,GAIZ3V,GAASzN,KAAK+B,GAAK,GAAK0L,EAAQzN,KAAK+B,IACnCmhB,EAAWjyB,EAAIgsa,EAAShsa,IAC1BmyB,EAAY,IAIZ3V,GAASzN,KAAK+B,GAAK,GAAK0L,GAASzN,KAAK+B,IAAM0L,EAAkB,IAAVzN,KAAK+B,KACvDmhB,EAAWjyB,EAAIgsa,EAAShsa,IAC1BmyB,EAAY,GAGhB,IAAIlJ,EAAW4lS,EAAc,EAAI,EAAI,EAAI9/S,KAAKE,IAAI4/S,EAAc,EAAI,EAAG,GACnE23L,EAAa/6D,IAAiB94Z,EAAO5yB,EAAG4yB,EAAO3yB,EAAG8iE,EAAS75C,EAAUzM,GAErEiqe,EAAch7D,IAAiB94Z,EAAO5yB,EAAG4yB,EAAO3yB,EAAG8iE,EAAS+rP,EAAc,EAAG/3S,GAWjFnb,EAAKtG,KAAK,KAAKgT,OAAO4pB,EAAWlyB,EAAG,KAAKsI,OAAO4pB,EAAWjyB,IAE3DrE,EAAKtG,KAAK,KAAKgT,OAAOm+e,EAAWzmf,EAAG,KAAKsI,OAAOm+e,EAAWxmf,IAE3DrE,EAAKtG,KAAK,KAAKgT,OAAOsqB,EAAO5yB,EAAG,KAAKsI,OAAOsqB,EAAO3yB,EAAG,OAAOqI,OAN1C,EAM+D,KAAKA,OAAO8pB,EAAW,KAAK9pB,OAAOo+e,EAAY1mf,EAAG,KAAKsI,OAAOo+e,EAAYzmf,IAE5JrE,EAAKtG,KAAK,KAAKgT,OAAO2ja,EAASjsa,EAAG,KAAKsI,OAAO2ja,EAAShsa,GACzD,KAAO,CACDwmf,EAAa/6D,IAAiB94Z,EAAO5yB,EAAG4yB,EAAO3yB,EAAG8iE,GAAU+rP,EAAc,EAAI,EAAI,EAAI9/S,KAAKE,IAAI4/S,EAAc,EAAI,EAAG,IAAKryS,GAA7H,IAGIkqe,EAAQz0d,EAAWlyB,EAAI4yB,EAAO5yB,EAAI,GAAK,EAE3CpE,EAAKtG,KAAK,KAAKgT,OAAO2ja,EAASjsa,EAAG,KAAKsI,OAAO2ja,EAAShsa,IACvD,IAAI2mf,GAAU10d,EAAWjyB,EAAI2yB,EAAO3yB,IAAMiyB,EAAWlyB,EAAI4yB,EAAO5yB,GAC5DiwO,GAAUg8L,EAAShsa,EAAI2yB,EAAO3yB,IAAMgsa,EAASjsa,EAAI4yB,EAAO5yB,GACxDgP,KAAKoG,IAAIwxe,EAAS32Q,GAAUjhO,KAAK0B,IAAI1B,KAAKwlB,GAAI,KAEhD54B,EAAKtG,KAAKc,MAAMwF,EAAM,CAAC,IAAKqwa,EAASjsa,EAAY,EAAR2mf,EAAW16E,EAAShsa,EAAG,EAAIwmf,EAAWzmf,EAAIkyB,EAAWlyB,EAAG,EAAIymf,EAAWxmf,EAAIiyB,EAAWjyB,EAAGiyB,EAAWlyB,EAAGkyB,EAAWjyB,IAG7JrE,EAAKtG,KAAK,KAAKgT,OAAO4pB,EAAWlyB,EAAG,KAAKsI,OAAO4pB,EAAWjyB,GAC7D,CACAuM,EAAKw7b,UAAUpsc,KAAOA,EAAKwiB,KAAK,IAClC,CACF,CA0GMyoe,CAAcr6e,EAAMwmQ,EACtB,GACF,GAnEA,CA5BA,CAgGF,IwFhIA0tM,IAA4B,gBKrFrB,SAAqBxla,EAAO4tN,EAAQy4L,GACzC,GAAsB,IAAlBA,EAAO3rc,OAAX,CAGA,IACIysG,EADUk/V,EAAO,GAAGxqc,IAAI,WACRq9M,SAAS/xG,MACzBnsG,EAAKmsG,EAAMymK,QAAU,CAAC,EACxBo+L,EAAiBhxc,EAAGgxc,eACpBF,EAAgB9wc,EAAG8wc,cACrBzF,EAAOpkc,SAAQ,SAAU3C,EAAOuC,GAC9B,IACImwa,EADQpkK,EAAO/rQ,GACGwL,MAAK,SAAUhJ,GACnC,MAA0B,SAAnBA,EAAGxI,IAAI,OAChB,IACI2/b,EAAYvJ,IAAKE,WAAW7yb,EAAMwK,WAClCuza,EAAW4U,IAAKE,WAAWngB,EAAUvna,iBACrC06C,GAAYq2Y,EAAUpyX,SAASi0W,GAE/BuuE,EtFX0B,SAA8Bh+c,GAC9D,IAAIJ,EAAM,IAAU8qX,MAAM1qX,GAAOntB,cACjC,GAAIwsd,IAAOz/b,GACT,OAAOy/b,IAAOz/b,GAEhB,IAAIxyC,GAAK,UAAO,IAAUo9Z,QAAQ5qX,GAAM,GAKxC,OADkB,IAHZxyC,EAAG,GAGmB,IAFtBA,EAAG,GAE6B,IADhCA,EAAG,IACoC,IAAO,GAEtD,CsFAoB6wf,CADFvsf,EAAMW,KAAK,SAEpBklD,EAYH6sX,EAAU/xa,KAAKknG,EAAMolW,eAAe5mc,OAXhCimf,EACE5/C,GACFh6B,EAAU/xa,KAAK,OAAQ+rc,GAGrBF,GACF95B,EAAU/xa,KAAK,OAAQ6rc,EAO/B,GA9BA,CA+BF,ILoDA0Z,IAA4B,4B/EhDrB,SAAgCxla,EAAO4tN,EAAQy4L,GACpD,IAAIrrc,EACJ,GAAsB,IAAlBqrc,EAAO3rc,OAAX,CAGA,IAAI8O,EAA+B,QAApBxO,EAAKqrc,EAAO,UAAuB,IAAPrrc,OAAgB,EAASA,EAAGa,IAAI,WACvEq9M,EAAW1vM,aAAyC,EAASA,EAAQ0vM,SACzE,GAAKA,GAA8B,aAAlBA,EAAS12M,KAGZ0qe,IAAch0R,EAAU00D,EAAQy4L,IAE5CA,EAAOpkc,SAAQ,SAAU3C,EAAOuC,GAC9B,IAAI4kD,EAAQmnN,EAAO/rQ,IArCzB,SAAqBq3M,EAAUzyJ,EAAOnnD,GACpC,IAAIw4Q,EAAa5+D,EAAS4+D,WACtB0jL,EAAYvJ,IAAKE,WAAW7yb,EAAMwK,WAClCkoa,EAAYk9C,IAAmBzoa,GAC/BqxN,EAAWutJ,aAEb2M,EAAU/xa,KAAK,CACb6E,EAAG02b,EAAUzxb,KAAOyxb,EAAU5zb,MAAQ,EACtCkT,UAAW,WAIbk3Z,EAAU/xa,KAAK,CACb8E,EAAGy2b,EAAUvxb,KAAOuxb,EAAU3zb,OAAS,EACvCkT,aAAc,UAGpB,CAqBM+we,CAAY5yS,EAAUzyJ,EAAOnnD,EAC/B,GAXF,CAaF,I+EgCAkmd,IAA4B,yBMnErB,SAA6Bxla,EAAO4tN,EAAQy4L,GACjD,IAAIrrc,EACJ,GAAsB,IAAlBqrc,EAAO3rc,OAAX,CAGA,IAAI8O,EAA+B,QAApBxO,EAAKqrc,EAAO,UAAuB,IAAPrrc,OAAgB,EAASA,EAAGa,IAAI,WACvEq9M,EAAW1vM,aAAyC,EAASA,EAAQ0vM,SACzE,GAAKA,GAA8B,aAAlBA,EAAS12M,KAA1B,CAGA,IAWI+zZ,EAXAw1F,EA7BN,SAAqBn+O,GACnB,IACIm+O,EAAiB,GACjBtoE,EAAQ3va,KAAKE,IAAIF,KAAKwX,MAAMsiP,EAAOlzQ,OAFzB,KAE4C,GAQ1D,OAPA,UAAKkzQ,GAAQ,SAAUnnN,EAAO1nB,GACxBA,EAAM0kZ,GAAU,EAClBsoE,EAAe3xf,KAAKqsD,GAEpBA,EAAM1qD,IAAI,WAAW,EAEzB,IACOgwf,CACT,CAiBuBC,CAAYp+O,GAE/BilJ,GADO,UAAO35M,EAAS89O,cAAe,GAC1B,GACVu4B,EAAQ,GACR08B,EAAO,GACPC,GAAgB,UAAQH,GAAgB,SAAUtlc,GACpD,OAAOA,EAAM5qD,IAAI,QAAQg3Z,EAC3B,IACImzE,GAAU,WAAK,UAAI+lB,GAAgB,SAAUtlc,GAC/C,OAAOA,EAAM5qD,IAAI,QAAQg3Z,EAC3B,KAEAk5F,EAAe9pf,SAAQ,SAAUwkD,GAC/BA,EAAM1qD,IAAI,WAAW,EACvB,IACA,IAAIowf,EAAkB,SAAyBC,GACzCA,IACEA,EAAS1xf,QAEXuxf,EAAK7xf,KAAKgyf,EAAStre,OAErBmre,EAAK7xf,KAAKc,MAAM+wf,GAAM,UAAc,IAAI,UAAOG,IAAW,IAE9D,EAeA,KAdI,UAAKpmB,GAAW,IAElBzvE,EAASyvE,EAAQvhd,QACjB0ne,EAAgBD,EAAc31F,MAE5B,UAAKyvE,GAAW,IAElBzvE,EAASyvE,EAAQlld,MACjBqre,EAAgBD,EAAc31F,MAEhC,UAAKyvE,EAAQv7c,WAAW,SAAUvrB,GAEhCitf,EAAgBD,EAAchtf,GAChC,IACO+sf,EAAKvxf,OAAS,GAAG,CACtB,IAAIsoJ,EAAMipW,EAAKxne,QACXu+H,EAAInnJ,IAAI,aACNyzd,IAAkBtsU,EAAKusU,GACzBvsU,EAAIjnJ,IAAI,WAAW,GAEnBwzd,EAAMn1d,KAAK4oJ,GAGjB,CAhDA,CALA,CAsDF,INUAwiU,IAA4B,yB9E/BrB,SAA6Bxla,EAAO4tN,EAAQy4L,EAAQr+B,EAAQxsa,GACjE,IAAIR,EAAI+V,EACR,GAAsB,IAAlBs1b,EAAO3rc,OAAX,CAGA,IAAI8O,EAA+B,QAApBxO,EAAKqrc,EAAO,UAAuB,IAAPrrc,OAAgB,EAASA,EAAGa,IAAI,WACvEq9M,EAAW1vM,aAAyC,EAASA,EAAQ0vM,SACzE,GAAKA,GAA8B,UAAlBA,EAAS12M,KAA1B,CAGA,IAAIwO,GAAK,UAAOkoM,EAAS89O,cAAe,GACtCnkC,EAAS7hZ,EAAG,GACZ8hZ,EAAS9hZ,EAAG,GACVk7e,GAAgB,UAAQt+O,GAAQ,SAAUnnN,GAC5C,OAAOA,EAAM5qD,IAAI,QAAQg3Z,EAC3B,IACI08D,EAAQ,GACRvyY,EAASxhF,GAAOA,EAAIwhF,SAA+B,QAAnBjsE,EAAKivC,EAAM,UAAuB,IAAPjvC,OAAgB,EAASA,EAAGisE,SAAW,IACtG,WAAI,UAAKkva,GAAezhe,WAAW,SAAU8rY,GAE3C,IADA,IAAI81F,EAtER,SAAoBnzS,EAAU00D,GAC5B,IAAIklJ,EAAS55M,EAAS89O,cAAc,GAChCvqb,EAAS,GACT6/e,EAAe1+O,EAAOxhQ,MAAK,SAAUvD,EAAM2D,GAC7C,OAAO3D,EAAKhN,IAAI,QAAQi3Z,GAAUjqZ,EAAKhN,IAAI,QAAQi3Z,EACrD,IAQA,OAPIw5F,EAAa5xf,OAAS,GACxB+R,EAAOrS,KAAKkyf,EAAa7ne,SAEvB6ne,EAAa5xf,OAAS,GACxB+R,EAAOrS,KAAKkyf,EAAaxre,OAE3BrU,EAAOrS,KAAKc,MAAMuR,GAAQ,UAAc,IAAI,UAAO6/e,IAAe,IAC3D7/e,CACT,CAwD4B8/e,CAAWrzS,EAAUgzS,EAAc31F,IACpD81F,EAAkB3xf,QAAQ,CAC/B,IAAI4G,EAAU+qf,EAAkB5ne,QAC5ButZ,EAAYk9C,IAAmB5td,GACnC,GAAI8re,IAAQ7d,EAAOjud,GAAS,SAAUuH,EAAM2D,GAC1C,OAAO3D,EAAKhN,IAAI,QAAQg3Z,KAAYrmZ,EAAM3Q,IAAI,QAAQg3Z,IAAWhqZ,EAAKhN,IAAI,QAAQi3Z,KAAYtmZ,EAAM3Q,IAAI,QAAQi3Z,EAClH,IAEEkf,EAAUj2a,IAAI,WAAW,OAJ3B,CAOA,IACIywf,GAAW,EADF,IAAkBj9B,EAAOjud,KAGpC0wa,EAAU/xa,KAAK,IAAK+xa,EAAU/xa,KAAK,KAAO,EAAI+8E,GAC9Cwva,EAAW,IAAkBj9B,EAAOjud,IAElCkrf,EACFx6E,EAAUj2a,IAAI,WAAW,GAG3Bwzd,EAAMn1d,KAAKkH,EAXX,CAYF,CACF,GAjCA,CALA,CAuCF,I8EXAkkd,IAA4B,cvFNrB,SAA8Bxla,EAAO4tN,EAAQy4L,EAAQr+B,GAC1D,IAAI6pB,EAAK72b,EAEL88Q,EAAalK,EAAO,IAAMA,EAAO,GAAG/xQ,IAAI,cAC5C,GAAKi8Q,EAAL,CAIA,IAAIpgP,EAASogP,EAAWiuJ,YAEpBl+V,EAASiwM,EAAWmuJ,YAEpBuoD,EAAY,CAAC,EACjB,IACE,IAAK,IAAIs8B,GAAW,UAASl9O,GAASm9O,EAAaD,EAAS17d,QAAS27d,EAAW54c,KAAM44c,EAAaD,EAAS17d,OAAQ,CAClH,IAAIyqZ,EAAakxE,EAAW/uf,MAC5Bwyd,EAAU30C,EAAWh+a,IAAI,OAASg+a,CACpC,CACF,CAAE,MAAOmY,GACPH,EAAM,CACJ5qY,MAAO+qY,EAEX,CAAE,QACA,IACM+4D,IAAeA,EAAW54c,OAASn3C,EAAK8vf,EAASh4R,SAAS93N,EAAGS,KAAKqvf,EACxE,CAAE,QACA,GAAIj5D,EAAK,MAAMA,EAAI5qY,KACrB,CACF,CACA,IAAI4lZ,GAAc,UAAI7sZ,EAAM,GAAI,cAAe,IAC3C4zQ,EAAc9/S,KAAKE,KAAI,UAAIgsC,EAAM,GAAI,SAAU,GAAIorb,MAEvD,UAAKprb,GAAO,SAAU1uC,GACpB,GAAKA,IACO,UAAIk9c,EAAW,CAACl9c,EAAK/D,KACjC,CACA,IAAIk/e,EAAUn7e,EAAKxM,EAAI4yB,EAAO5yB,GAAKwM,EAAKxM,IAAM4yB,EAAO5yB,GAAKwM,EAAKvM,EAAI2yB,EAAO3yB,EACtEqD,GAAW,UAAMkJ,EAAKlJ,SAlHT,EAkHoBkJ,EAAKlJ,QACtCskf,EAAkBl8D,IAAiB94Z,EAAO5yB,EAAG4yB,EAAO3yB,EAAG8iE,EAASuja,IAAmB95d,EAAKiQ,OACxFore,EAAc/4L,EAAcxrT,EAChCkJ,EAAKxM,EAAI4yB,EAAO5yB,GAAK2nf,EAAU,GAAK,IAAM5kb,EAAS8kb,GACnDr7e,EAAKvM,EAAI2nf,EAAgB3nf,CANP,CAOpB,IACA,IAAIwb,EAAQu3P,EAAWv3P,MACrBmI,EAAMovP,EAAWpvP,IAEfsie,EAAiB,QAEjBC,GAAiB,UAAQjrc,GAAO,SAAU1uC,GAC5C,OAAOA,EAAKxM,EAAI4yB,EAAO5yB,EAJL,OAIyBkmf,CAC7C,IAEI/f,EAAuC,GAAxBpja,EAAS+rP,GAAmBi5I,GAC/C,UAAKo+C,GAAgB,SAAUtoF,GAC7B,IAAIiqF,EAAajqF,EAAKjoa,OAASmyc,EAC3B+/C,EAAa3hB,IACfA,EAAcn3d,KAAKC,IAAI64e,EAAY94e,KAAKoG,IAAIqG,EAAMxb,EAAI2jB,EAAI3jB,IAE9D,IAEA,IAAIomf,EAAuB,CACzBphf,KAAMwW,EAAMzb,EACZkF,KAAM0e,EAAI5jB,EACVmF,KAAMytB,EAAO3yB,EAAIkme,EAAc,EAC/B/ge,KAAMwtB,EAAO3yB,EAAIkme,EAAc,IAGjC,UAAKggB,GAAgB,SAAUtoF,EAAMjoY,GACnC,IAAI2ud,EAA2Bpe,EAAcp+B,EACzClqC,EAAKjoa,OAAS2uf,IAChB1mF,EAAKv2Z,MAAK,SAAU4L,EAAG8E,GAErB,OAAOA,EAAE81C,QAAU56C,EAAE46C,OACvB,KACA,UAAK+vW,GAAM,SAAUysD,EAAWrwb,GAC1BA,EAAMsqd,IACR76B,EAAUY,EAAU7hd,IAAIxR,IAAI,WAAW,GACvCqzd,EAAU0b,WAAY,EAE1B,KAEF,IAAcnoE,EAAMkqC,EAAas+C,EACnC,IACA,IAAIniN,EAASmiN,EAAqBlhf,KAC9B+ge,EAAOmgB,EAAqBjhf,MAEhC,UAAK+gf,GAAgB,SAAUtoF,EAAMjoY,GACnC,IAAI+xd,EAAU/xd,IAAQswd,GACtB,UAAKroF,GAAM,SAAUrxZ,GACnB,IAAIm1C,GAAQ,UAAI+na,EAAWl9c,GAAQ,CAACA,EAAK/D,KACzC,GAAKk5C,EAIL,GAAIn1C,EAAKvM,EAAIikS,GAAU13R,EAAKvM,EAAIime,EAC9Bvkb,EAAM1qD,IAAI,WAAW,OADvB,CAIA,IAAIs1d,EAAe5qa,EAAM95C,gBAAgB,GACrCyO,EAAMi2c,EAAa5md,gBACnBoif,EACCJ,EAAUrxe,EAAItW,EAAIsW,EAAIpR,KADvB6if,EAECzxe,EAAIrW,EAAIqW,EAAIvT,OAAS,EAE1B,IAAUwpd,EAAc//c,EAAKxM,EAAI+nf,EAAyCv7e,EAAKvM,EAAI8nf,GAE/Ev7e,EAAKw7b,WApLf,SAAuBx7b,EAAMwmQ,EAAY20O,GAEvC,IAiBI/rf,EAjBAg3B,EAASogP,EAAWiuJ,YAEpBl+V,EAASiwM,EAAWmuJ,YACpBjvY,EAAa,CACflyB,EAAGwM,EAAKxM,GAAK2nf,EAAUphB,KAA0BA,KACjDtme,EAAGuM,EAAKvM,GAEN2nf,EAAkBl8D,IAAiB94Z,EAAO5yB,EAAG4yB,EAAO3yB,EAAG8iE,EAASuja,IAAmB95d,EAAKiQ,OACxF+D,EAAK,CACPxgB,EAAGkyB,EAAWlyB,EACdC,EAAGiyB,EAAWjyB,GAEZue,EAAK,CACPxe,EAAG4nf,EAAgB5nf,EACnBC,EAAG2nf,EAAgB3nf,GAEjBgsa,EAAWyf,IAAiB94Z,EAAO5yB,EAAG4yB,EAAO3yB,EAAG8iE,EAAQv2D,EAAKiQ,OAGjE,GAAIyV,EAAWjyB,IAAM2nf,EAAgB3nf,EAAG,CACtC,IAAIi4E,EAASyva,EAAU,GAAK,EAC5Bnne,EAAGvgB,EAAIiyB,EAAWjyB,EAEduM,EAAKiQ,MAAQ,GAAKjQ,EAAKiQ,QAAUzN,KAAK+B,GAAK,IAC7CyP,EAAGxgB,EAAIgP,KAAKE,IAAI04e,EAAgB5nf,EAAGkyB,EAAWlyB,EAAIk4E,GAC9ChmD,EAAWjyB,EAAI2nf,EAAgB3nf,EACjCue,EAAGve,EAAIugB,EAAGvgB,GAEVue,EAAGve,EAAI2nf,EAAgB3nf,EACvBue,EAAGxe,EAAIgP,KAAKE,IAAIsP,EAAGxe,EAAGwgB,EAAGxgB,EAAIk4E,KAI7B1rE,EAAKiQ,MAAQ,GAAKjQ,EAAKiQ,MAAQzN,KAAK+B,GAAK,IAC3CyP,EAAGxgB,EAAIgP,KAAKE,IAAI04e,EAAgB5nf,EAAGkyB,EAAWlyB,EAAIk4E,GAC9ChmD,EAAWjyB,EAAI2nf,EAAgB3nf,EACjCue,EAAGve,EAAIugB,EAAGvgB,GAEVue,EAAGve,EAAI2nf,EAAgB3nf,EACvBue,EAAGxe,EAAIgP,KAAKE,IAAIsP,EAAGxe,EAAGwgB,EAAGxgB,EAAIk4E,KAI7B1rE,EAAKiQ,MAAQzN,KAAK+B,GAAK,IACzByP,EAAGxgB,EAAIgP,KAAKC,IAAI24e,EAAgB5nf,EAAGkyB,EAAWlyB,EAAIk4E,GAC9ChmD,EAAWjyB,EAAI2nf,EAAgB3nf,EACjCue,EAAGve,EAAIugB,EAAGvgB,GAEVue,EAAGve,EAAI2nf,EAAgB3nf,EACvBue,EAAGxe,EAAIgP,KAAKC,IAAIuP,EAAGxe,EAAGwgB,EAAGxgB,EAAIk4E,KAI7B1rE,EAAKiQ,OAASzN,KAAK+B,GAAK,IAC1ByP,EAAGxgB,EAAIgP,KAAKC,IAAI24e,EAAgB5nf,EAAGkyB,EAAWlyB,EAAIk4E,GAC9ChmD,EAAWjyB,EAAI2nf,EAAgB3nf,EACjCue,EAAGve,EAAIugB,EAAGvgB,GAEVue,EAAGve,EAAI2nf,EAAgB3nf,EACvBue,EAAGxe,EAAIgP,KAAKC,IAAIuP,EAAGxe,EAAGwgB,EAAGxgB,EAAIk4E,IAGnC,CACAt8E,EAAO,CAAC,KAAK0M,OAAO4pB,EAAWlyB,EAAG,KAAKsI,OAAO4pB,EAAWjyB,GAAI,KAAKqI,OAAOkY,EAAGxgB,EAAG,KAAKsI,OAAOkY,EAAGvgB,GAAI,KAAKqI,OAAOkW,EAAGxe,EAAG,KAAKsI,OAAOkW,EAAGve,GAAI,KAAKqI,OAAOs/e,EAAgB5nf,EAAG,KAAKsI,OAAOs/e,EAAgB3nf,GAAI,KAAKqI,OAAO2ja,EAASjsa,EAAG,KAAKsI,OAAO2ja,EAAShsa,IAAIme,KAAK,KAC5P5R,EAAKw7b,WAAY,UAAQ,CAAC,EAAGx7b,EAAKw7b,UAAW,CAC3Cpsc,KAAMA,GAEV,CAgHQ,CAAc4Q,EAAMwmQ,EAAY20O,EAVlC,CAYF,GACF,GAxGA,CAyGF,IuFxGAjnC,IAA4B,wB7EjCrB,SAA4Bxla,EAAO4tN,EAAQy4L,EAAQr+B,EAAQxsa,GAChE,IAAIR,EAAI+V,EACR,GAAsB,IAAlBs1b,EAAO3rc,OAAX,CAGA,IAAI8O,EAA+B,QAApBxO,EAAKqrc,EAAO,UAAuB,IAAPrrc,OAAgB,EAASA,EAAGa,IAAI,WACvEq9M,EAAW1vM,aAAyC,EAASA,EAAQ0vM,SACzE,GAAKA,KAAY,CAAC,OAAQ,OAAQ,QAAQnsM,QAAQmsM,EAAS12M,MAAQ,GAAnE,CAGA,IAAIwO,GAAK,UAAOkoM,EAAS89O,cAAe,GACtCnkC,EAAS7hZ,EAAG,GACZ8hZ,EAAS9hZ,EAAG,GACVk7e,GAAgB,UAAQt+O,GAAQ,SAAUnnN,GAC5C,OAAOA,EAAM5qD,IAAI,QAAQg3Z,EAC3B,IACI08D,EAAQ,GACRvyY,EAASxhF,GAAOA,EAAIwhF,SAA+B,QAAnBjsE,EAAKivC,EAAM,UAAuB,IAAPjvC,OAAgB,EAASA,EAAGisE,SAAW,IACtG,WAAI,UAAKkva,GAAezhe,WAAW,SAAU8rY,GAE3C,IADA,IAAI81F,EAtER,SAAoBnzS,EAAU00D,GAC5B,IAAIklJ,EAAS55M,EAAS89O,cAAc,GAChCvqb,EAAS,GACT6/e,EAAe1+O,EAAOxhQ,MAAK,SAAUvD,EAAM2D,GAC7C,OAAO3D,EAAKhN,IAAI,QAAQi3Z,GAAUjqZ,EAAKhN,IAAI,QAAQi3Z,EACrD,IAQA,OAPIw5F,EAAa5xf,OAAS,GACxB+R,EAAOrS,KAAKkyf,EAAa7ne,SAEvB6ne,EAAa5xf,OAAS,GACxB+R,EAAOrS,KAAKkyf,EAAaxre,OAE3BrU,EAAOrS,KAAKc,MAAMuR,GAAQ,UAAc,IAAI,UAAO6/e,IAAe,IAC3D7/e,CACT,CAwD4B,CAAWysM,EAAUgzS,EAAc31F,IACpD81F,EAAkB3xf,QAAQ,CAC/B,IAAI4G,EAAU+qf,EAAkB5ne,QAC5ButZ,EAAYk9C,IAAmB5td,GACnC,GAAI,IAAQiud,EAAOjud,GAAS,SAAUuH,EAAM2D,GAC1C,OAAO3D,EAAKhN,IAAI,QAAQg3Z,KAAYrmZ,EAAM3Q,IAAI,QAAQg3Z,IAAWhqZ,EAAKhN,IAAI,QAAQi3Z,KAAYtmZ,EAAM3Q,IAAI,QAAQi3Z,EAClH,IAEEkf,EAAUj2a,IAAI,WAAW,OAJ3B,CAOA,IACIywf,GAAW,EADF,IAAkBj9B,EAAOjud,KAGpC0wa,EAAU/xa,KAAK,IAAK+xa,EAAU/xa,KAAK,KAAO,EAAI+8E,GAC9Cwva,EAAW,IAAkBj9B,EAAOjud,IAElCkrf,EACFx6E,EAAUj2a,IAAI,WAAW,GAG3Bwzd,EAAMn1d,KAAKkH,EAXX,CAYF,CACF,GAjCA,CALA,CAuCF,I6ECAqhd,IAAkB,WO9FX,SAAgBrjd,EAAOwR,EAAYtV,GACxC,IAAI83b,EAAW,CACb51W,aAAa,UAAMp+E,EAAMW,KAAK,gBAAkB,EAAIX,EAAMW,KAAK,eAC/DmzP,eAAe,UAAM9zP,EAAMW,KAAK,kBAAoB,EAAIX,EAAMW,KAAK,iBACnEuO,SAAS,UAAMlP,EAAMW,KAAK,YAAc,EAAIX,EAAMW,KAAK,YAEzDX,EAAMW,KAAK,CACTy9E,YAAa,EACb01K,cAAe,EACf5kP,QAAS,IAEXlP,EAAMqR,QAAQ2ib,EAAUxib,EAC1B,IPmFA6xc,IAAkB,YO1EX,SAAiBrjd,EAAOwR,EAAYtV,GACzC,IAKIqE,EAASiR,EAAWjR,OACtBD,EAAWkR,EAAWlR,SACtBlC,EAAQoT,EAAWpT,MACrB4B,EAAMqR,QARS,CACb+sE,YAAa,EACb01K,cAAe,EACf5kP,QAAS,GAKa5O,EAAUC,GAAQ,WACxCP,EAAM0N,QAAO,EACf,GAAGtP,EACL,IP+DAild,IAAkB,aQhGX,SAAiBn5c,EAASsH,EAAYtV,GAG3Cgye,IAAehke,EAASsH,EAFPtV,EAAIs8Q,WACPt8Q,EAAI4td,UACyC,IAC7D,IR6FAzG,IAAkB,cQvEX,SAAkBn5c,EAASsH,EAAYtV,GAG5Cgye,IAAehke,EAASsH,EAFPtV,EAAIs8Q,WACPt8Q,EAAI4td,UACyC,KAC7D,IRoEAzG,IAAkB,aQrFX,SAAiBn5c,EAASsH,EAAYtV,GAG3Cgye,IAAehke,EAASsH,EAFPtV,EAAIs8Q,WACPt8Q,EAAI4td,UACyC,IAC7D,IRkFAzG,IAAkB,cSpGX,SAAkBrjd,EAAOwR,EAAYtV,GAC1C,IAAI4f,EAAM9b,EAAMwK,UAEZyQ,EADcjb,EAAMzD,IAAI,UAAUi2c,YACbv3b,OAErBzV,EAAIyV,EAAO,GAAGxV,EAAIwV,EAAO,GAAGxV,EAAI,EAAIqW,EAAIpR,KAAOoR,EAAIrR,KACnDhF,GAAKqW,EAAInR,KAAOmR,EAAIlR,MAAQ,EAChC5K,EAAMwQ,cAAc,CAAChL,EAAGC,EAAG,IAC3B,IAAIiG,EAASi7M,IAAA,GAAc3mN,EAAMoQ,YAAa,CAAC,CAAC,KAAM5K,GAAIC,GAAI,CAAC,IAAK,IAAM,GAAI,CAAC,IAAKD,EAAGC,KACvFzF,EAAMqQ,UAAU3E,GAChB1L,EAAMqR,QAAQ,CACZ3F,OAAQi7M,IAAA,GAAc3mN,EAAMoQ,YAAa,CAAC,CAAC,KAAM5K,GAAIC,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAKD,EAAGC,MAChF+L,EACL,ITwFA6xc,IAAkB,cShFX,SAAkBrjd,EAAOwR,EAAYtV,GAC1C,IAAI4f,EAAM9b,EAAMwK,UACZgoc,EAAcxyc,EAAMzD,IAAI,UAAUi2c,YAClChtc,GAAKsW,EAAIrR,KAAOqR,EAAIpR,MAAQ,EAC5BuQ,EAASu3b,EAAYv3b,OAErBxV,EAAIwV,EAAO,GAAGxV,EAAIwV,EAAO,GAAGxV,GAAK,EAAIqW,EAAIlR,KAAOkR,EAAInR,KACxD3K,EAAMwQ,cAAc,CAAChL,EAAGC,EAAG,IAC3B,IAAIiG,EAASi7M,IAAA,GAAc3mN,EAAMoQ,YAAa,CAAC,CAAC,KAAM5K,GAAIC,GAAI,CAAC,IAAK,EAAG,KAAO,CAAC,IAAKD,EAAGC,KACvFzF,EAAMqQ,UAAU3E,GAChB1L,EAAMqR,QAAQ,CACZ3F,OAAQi7M,IAAA,GAAc3mN,EAAMoQ,YAAa,CAAC,CAAC,KAAM5K,GAAIC,GAAI,CAAC,IAAK,EAAG,KAAM,CAAC,IAAKD,EAAGC,MAChF+L,EACL,IToEA6xc,IAAkB,WUlGX,SAAgBn5c,EAASsH,EAAYtV,GAC1C,IAAIR,EAAKq4b,IAAqB73b,EAAIs8Q,WAAY,IAC5Ct1Q,EAAOxH,EAAGwH,KACVkxb,EAAa14b,EAAG04b,WAChBJ,EAAWt4b,EAAGs4b,SACZpjb,EAAY1G,EAAQwG,QAAQ,CAC9BxN,KAAMA,EACNrC,MAAOuzb,IAGLl4b,EAAI0E,SACNsJ,EAAQvJ,KAAKzE,EAAI0E,SAGnBgQ,EAAUS,QAAQ2ib,GAAU,WAAS,UAAS,CAAC,EAAGxib,GAAa,CAC7D5W,SAAU,WACJsP,IAAYA,EAAQ3N,IAAI,cAC1B2N,EAAQzN,IAAI,YAAa,MAE3BmU,EAAUlD,QAAO,IACjB,UAAW8D,EAAW5W,WAAa4W,EAAW5W,UAChD,IAEJ,IV4EAyod,IAAkB,WzEvEX,SAAgBrjd,EAAOwR,EAAYtV,GACxCize,IAAYnve,EAAOwR,EAAY,SACjC,IyEsEA6xc,IAAkB,YzE7DX,SAAiBrjd,EAAOwR,EAAYtV,GACzCize,IAAYnve,EAAOwR,EAAY,UACjC,IyE4DA6xc,IAAkB,mBW1GX,SAAwBrjd,EAAOwR,EAAYtV,GAChD,IAAI0E,EAAU1E,EAAI0E,QAEd4E,EAAI5E,EAAQ4E,EAEZC,EAAI7E,EAAQ6E,SAET7E,EAAQ4E,SAER5E,EAAQ6E,EACfzF,EAAMW,KAAKC,GACXZ,EAAMqR,QAAQ,CACZ7L,EAAGA,EACHC,EAAGA,GACF+L,EACL,IX4FA6xc,IAAkB,sB1ETX,SAA0Brjd,EAAOwR,EAAYtV,GAClD,IAAI0E,EAAU1E,EAAI0E,QAChB43Q,EAAat8Q,EAAIs8Q,WACfp3Q,EAAOR,EAAQQ,MAAQ,GACvBosf,EAAepsf,EAAKmqB,KAAI,SAAUxP,GACpC,OAAOA,EAAQ,EACjB,IACA,KAAI3a,EAAKhG,OAAS,GAAlB,CACA,IAAIM,EAAK8ye,IAAWpte,GAClBqsf,EAAgB/xf,EAAG4gB,WACnBoxe,EAAchyf,EAAG6gB,SACjBgsD,EAAS7sE,EAAG6sE,OACZ87B,EAAc3oG,EAAG2oG,YACf5yF,EAAK+8d,IAAWxue,EAAMW,KAAK,SAC7Bgtf,EAAgBl8e,EAAG6K,WACnBsxe,EAAcn8e,EAAG8K,SACf6b,EAASogP,EAAWiuJ,YACpBonF,EAAiBJ,EAAgBE,EACjCG,EAAeJ,EAAcE,EAEV,IAAnBC,GAAyC,IAAjBC,EAI5B9tf,EAAMqR,SAAQ,SAAUlR,GACtB,IAAI4tf,EAAoBJ,EAAgBxtf,EAAQ0tf,EAC5CG,EAAkBJ,EAAcztf,EAAQ2tf,EAC5C,OAAO,WAAS,UAAS,CAAC,EAAGltf,GAAU,CACrCQ,MAEA,UAAQosf,EAAc,CAAC,IAAK,IAAK,IAAK,MAAQh8E,IAAWp5Y,EAAO5yB,EAAG4yB,EAAO3yB,EAAG8iE,EAAQwlb,EAAmBC,GAAmB18D,IAAcl5Z,EAAO5yB,EAAG4yB,EAAO3yB,EAAG8iE,EAAQwlb,EAAmBC,EAAiB3pZ,IAE7M,IAAG,WAAS,UAAS,CAAC,EAAG7yF,GAAa,CACpC5W,SAAU,WAERoF,EAAMW,KAAK,OAAQS,IACnB,UAAWoQ,EAAW5W,WAAa4W,EAAW5W,UAChD,KAhBAoF,EAAMW,KAAK,OAAQS,EAdM,CAgC7B,I0E7BAiid,IAAkB,WY3GX,SAAgBn5c,EAASsH,EAAYtV,GAE1C,IAAId,EAAS8O,EAAQgyd,iBAErBhyd,EAAQvJ,KAAK,WAAY,CAACvF,IAC1B8O,EAAQmH,SAAQ,SAAUlR,GACxB,MAAO,CAEL23P,gBAAiB,EAAI33P,GAAS/E,EAElC,GAAGoW,EACL,IZyGAymb,IAAc,OAAQ,KACtBA,IAAc,SAAU,KACxBA,IAAc,OAAQ,KACtBA,IAAc,SAAU,KACxBA,IAAc,SAAU,KACxBA,IAAc,OAAQ,KAUtBoc,IAA4B,OAAQ,KACpCA,IAA4B,SAAU,KACtCA,IAA4B,UAAW,KACvCA,IAA4B,aAAc,KAC1CA,IAA4B,SAAU,KACtCA,IAA4B,YAAa,KAiDzCzb,IAAe,UAAW,KAC1BA,IAAe,kBAAmB,KAClCA,IAAe,gBAAiB,KAChCA,IAAe,iBAAkB,KACjCA,IAAe,wBAAyB,KACxCA,IAAe,uBAAwB,KACvCA,IAAe,oBAAqB,KACpCA,IAAe,yBAA0B,KACzCA,IAAe,6BAA8B,KAC7CA,IAAe,2BAA4B,KAC3CA,IAAe,0BAA2B,KAC1CA,IAAe,4BAA6B,IAAuB,CACjE6lD,gBAAgB,EAChBC,gBAAgB,IAElB9lD,IAAe,mBAAoB,KACnCA,IAAe,0BAA2B,KAC1CA,IAAe,yBAA0B,KACzCA,IAAe,wBAAyB,KACxCA,IAAe,gBAAiB,KAChCA,IAAe,cAAe,KAC9BA,IAAe,gBAAiB,KAChCA,IAAe,iBAAkB,KACjCA,IAAe,iBAAkB,KACjCA,IAAe,eAAgB,KAC/BA,IAAe,aAAc,KAC7BA,IAAe,aAAc,KAC7BA,IAAe,wBAAyB,IAAe,CACrDkoD,eAAgB,CAAC,YAEnBloD,IAAe,uBAAwB,IAAe,CACpDkoD,eAAgB,CAAC,UAEnBloD,IAAe,mBAAoB,KACnCA,IAAe,YAAa,KAC5BA,IAAe,cAAe,IAAS,CACrC3sJ,IAAK,MAEP2sJ,IAAe,cAAe,IAAS,CACrC3sJ,IAAK,MAEP2sJ,IAAe,cAAe,KAC9BA,IAAe,YAAa,KAC5BA,IAAe,mBAAoB,KACnCA,IAAe,kBAAmB,KAClCA,IAAe,oBAAqB,IAAkB,CACpD3sJ,IAAK,MAEP2sJ,IAAe,oBAAqB,IAAkB,CACpD3sJ,IAAK,MAEP2sJ,IAAe,oBAAqB,KACpCA,IAAe,kBAAmB,KAClCA,IAAe,yBAA0B,KACzCA,IAAe,SAAU,KACzBA,IAAe,cAAe,KAC9BA,IAAe,QAAS,KACxBA,IAAe,UAAW,IAAiB,CACzC9xN,KAAM,CAAC,OAET8xN,IAAe,UAAW,IAAiB,CACzC9xN,KAAM,CAAC,OAET8xN,IAAe,iBAAkB,KACjCA,IAAe,mBAAoB,IAAe,CAChD9xN,KAAM,MAER8xN,IAAe,mBAAoB,IAAe,CAChD9xN,KAAM,MAER8xN,IAAe,iBAAkB,KACjCA,IAAe,yBAA0B,KACzCA,IAAe,gCAAiC,IAAsB,CACpEuuD,UAAU,IAEZvuD,IAAe,YAAa,KAC5BA,IAAe,YAAa,KAC5BA,IAAe,kBAAmB,KAClCA,IAAe,aAAc,KAC7BA,IAAe,eAAgB,IAAc,CAC3Cp8b,KAAM,eACN4e,KAAM,UAERw9a,IAAe,oBAAqB,KAQpCqG,IAAoB,UAAW,CAC7Bh+a,MAAO,CAAC,CACNiiF,QAAS,iBACTluE,OAAQ,eACRyvD,SAAU,CACRrmD,KAAM,GACNwB,SAAS,EACTG,UAAU,IAEX,CACDmjE,QAAS,iBACTluE,OAAQ,eACRyvD,SAAU,CACRrmD,KAAM,GACNwB,SAAS,EACTG,UAAU,KAGd3W,IAAK,CAAC,CACJ85E,QAAS,kBACTluE,OAAQ,gBACP,CACDkuE,QAAS,aACTluE,OAAQ,gBACP,CACDkuE,QAAS,gBACTluE,OAAQ,mBAGZiqa,IAAoB,gBAAiB,CACnCh+a,MAAO,CAAC,CACNiiF,QAAS,6BACTluE,OAAQ,qBACRyvD,SAAU,CACRrmD,KAAM,GACNwB,SAAS,EACTG,UAAU,IAEX,CACDmjE,QAAS,8BACTluE,OAAQ,qBACRyvD,SAAU,CACRrmD,KAAM,GACNwB,SAAS,EACTG,UAAU,IAEX,CACDmjE,QAAS,uBACTluE,OAAQ,qBACRyvD,SAAU,CACRrmD,KAAM,GACNwB,SAAS,EACTG,UAAU,IAEX,CACDmjE,QAAS,wBACTluE,OAAQ,qBACRyvD,SAAU,CACRrmD,KAAM,GACNwB,SAAS,EACTG,UAAU,KAGd3W,IAAK,CAAC,CACJ85E,QAAS,8BACTluE,OAAQ,sBACP,CACDkuE,QAAS,4BACTluE,OAAQ,sBACP,CACDkuE,QAAS,wBACTluE,OAAQ,sBACP,CACDkuE,QAAS,sBACTluE,OAAQ,sBACP,CACDkuE,QAAS,sBACTluE,OAAQ,yBAIZiqa,IAAoB,iBAAkB,CACpCh+a,MAAO,CAAC,CACNiiF,QAAS,qBACTluE,OAAQ,0BAEV5L,IAAK,CAAC,CACJ85E,QAAS,qBACTluE,OAAQ,2BAIZiqa,IAAoB,mBAAoB,CACtCh+a,MAAO,CAAC,CACNiiF,QAAS,gBACTluE,OAAQ,8BAIZiqa,IAAoB,oBAAqB,CACvCh+a,MAAO,CAAC,CACNiiF,QAAS,qBACTluE,OAAQ,gCAEV5L,IAAK,CAAC,CACJ85E,QAAS,qBACTluE,OAAQ,8BAIZiqa,IAAoB,yBAA0B,CAC5Ch+a,MAAO,CAAC,CACNiiF,QAAS,qBACTluE,OAAQ,qCAEV5L,IAAK,CAAC,CACJ85E,QAAS,qBACTluE,OAAQ,mCAIZiqa,IAAoB,6BAA8B,CAChDh+a,MAAO,CAAC,CACNiiF,QAAS,qBACTluE,OAAQ,yCAEV5L,IAAK,CAAC,CACJ85E,QAAS,qBACTluE,OAAQ,uCAIZiqa,IAAoB,gBAAiB,CACnCh+a,MAAO,CAAC,CACNiiF,QAAS,yBACTluE,OAAQ,CAAC,qBAAsB,2BAEjC5L,IAAK,CAAC,CACJ85E,QAAS,yBACTluE,OAAQ,CAAC,oBAAqB,4BAIlCiqa,IAAoB,mBAAoB,CACtCh+a,MAAO,CAAC,CACNiiF,QAAS,yBACTluE,OAAQ,CAAC,kCAAmC,iCAE9C5L,IAAK,CAAC,CACJ85E,QAAS,yBACTluE,OAAQ,CAAC,8BAA+B,+BAI5Ciqa,IAAoB,uBAAwB,CAC1Ch+a,MAAO,CAAC,CACNiiF,QAAS,wBACTluE,OAAQ,CAAC,iCAAkC,iCAE7C5L,IAAK,CAAC,CACJ85E,QAAS,wBACTluE,OAAQ,CAAC,6BAA8B,+BAI3Ciqa,IAAoB,yBAA0B,CAC5Ch+a,MAAO,CAAC,CACNiiF,QAAS,qBACTluE,OAAQ,CAAC,2BAA4B,iCAEvC5L,IAAK,CAAC,CACJ85E,QAAS,qBACTluE,OAAQ,CAAC,uBAAwB,+BAIrCiqa,IAAoB,0BAA2B,CAC7CgvD,WAAY,CAAC,CACX/qZ,QAAS,kBACTluE,OAAQ,oBACP,CACDkuE,QAAS,kBACTluE,OAAQ,eACP,CACDkuE,QAAS,kBACTluE,OAAQ,kBACP,CACDkuE,QAAS,kBACTluE,OAAQ,qBAEV/T,MAAO,CAAC,CACNiiF,QAAS,iBACTy7V,SAAU,SAAkBjxa,GAE1B,OAAQA,EAAQvY,UAAU,OAC5B,EACA6f,OAAQ,CAAC,kBAAmB,mBAC3B,CACDkuE,QAAS,iBACTluE,OAAQ,CAAC,yBAEXk5d,WAAY,CAAC,CACXhrZ,QAAS,iBACTluE,OAAQ,CAAC,qBACR,CACDkuE,QAAS,YACTluE,OAAQ,CAAC,mBACR,CACDkuE,QAAS,cACTluE,OAAQ,CAAC,uCAEX5L,IAAK,CAAC,CACJ85E,QAAS,eACTluE,OAAQ,CAAC,kBACR,CACDkuE,QAAS,eACTluE,OAAQ,CAAC,sBACR,CACDkuE,QAAS,mBACTy7V,SAAU,SAAkBjxa,GAC1B,OAAQA,EAAQwva,UAClB,EACAloa,OAAQ,CAAC,gCAAiC,gBAAiB,oBAE7Dm5d,SAAU,CAAC,CACTjrZ,QAAS,WACTluE,OAAQ,CAAC,gCAAiC,sBAG9Ciqa,IAAoB,QAAS,CAC3BgvD,WAAY,CAAC,CACX/qZ,QAAS,kBACTluE,OAAQ,oBACP,CACDkuE,QAAS,kBACTluE,OAAQ,mBAEV/T,MAAO,CAAC,CACNiiF,QAAS,YACTy7V,SAAU+qD,IACV10d,OAAQ,CAAC,cAAe,kBAAmB,oBAE7Ck5d,WAAY,CAAC,CACXhrZ,QAAS,YACTy7V,SAAU+qD,IACV10d,OAAQ,CAAC,sBAEX5L,IAAK,CAAC,CACJ85E,QAAS,UACTy7V,SAAU+qD,IACV10d,OAAQ,CAAC,eAAgB,YAAa,gBAAiB,iBAAkB,uBAE3Em5d,SAAU,CAAC,CACTjrZ,QAAS,qBACTluE,OAAQ,CAAC,cAAe,oBAAqB,wBAGjDiqa,IAAoB,gBAAiB,CACnCgvD,WAAY,CAAC,CACX/qZ,QAAS,kBACTluE,OAAQ,oBACP,CACDkuE,QAAS,kBACTluE,OAAQ,mBAEV/T,MAAO,CAAC,CACNiiF,QAAS,iBACTluE,OAAQ,CAAC,kBAAmB,oBAE9Bk5d,WAAY,CAAC,CACXhrZ,QAAS,iBACTluE,OAAQ,CAAC,qBACR,CACDkuE,QAAS,cACTluE,OAAQ,CAAC,uCAEX5L,IAAK,CAAC,CACJ85E,QAAS,eACTluE,OAAQ,CAAC,gBAAiB,iBAAkB,wBAAyB,mCAEvEm5d,SAAU,CAAC,CACTjrZ,QAAS,WACTluE,OAAQ,CAAC,4BAGbiqa,IAAoB,UAAW,CAC7BgvD,WAAY,CAAC,CACX/qZ,QAAS,kBACTluE,OAAQ,oBACP,CACDkuE,QAAS,kBACTluE,OAAQ,mBAEV/T,MAAO,CAAC,CACNiiF,QAAS,YACTy7V,SAAU+qD,IACV10d,OAAQ,CAAC,gBAAiB,oBAAqB,sBAEjDk5d,WAAY,CAAC,CACXhrZ,QAAS,YACTy7V,SAAU+qD,IACV10d,OAAQ,CAAC,wBAEX5L,IAAK,CAAC,CACJ85E,QAAS,UACTy7V,SAAU+qD,IACV10d,OAAQ,CAAC,iBAAkB,cAAe,kBAAmB,sBAE/Dm5d,SAAU,CAAC,CACTjrZ,QAAS,WACTluE,OAAQ,CAAC,qBAGbiqa,IAAoB,yBAA0B,CAC5CgvD,WAAY,CAAC,CACX/qZ,QAAS,kBACTluE,OAAQ,oBACP,CACDkuE,QAAS,kBACTluE,OAAQ,mBAEV/T,MAAO,CAAC,CACNiiF,QAAS,YACTy7V,SAAU+qD,IACV10d,OAAQ,mBACP,CACDkuE,QAAS,YACTy7V,SAAU+qD,IACV10d,OAAQ,mBAEVk5d,WAAY,CAAC,CACXhrZ,QAAS,YACTluE,OAAQ,uBAEV5L,IAAK,CAAC,CACJ85E,QAAS,UACTluE,OAAQ,kBAEVm5d,SAAU,CAAC,CACTjrZ,QAAS,WACTluE,OAAQ,qBAGZiqa,IAAoB,gBAAiB,CACnCgvD,WAAY,CAAC,CACX/qZ,QAAS,kBACTluE,OAAQ,oBACP,CACDkuE,QAAS,kBACTluE,OAAQ,eACP,CACDkuE,QAAS,kBACTluE,OAAQ,kBACP,CACDkuE,QAAS,kBACTluE,OAAQ,qBAEV/T,MAAO,CAAC,CACNiiF,QAAS,YACTy7V,SAAU+qD,IACV10d,OAAQ,CAAC,0BAA2B,2BACnC,CACDkuE,QAAS,iBACTluE,OAAQ,CAAC,iCAEXk5d,WAAY,CAAC,CACXhrZ,QAAS,YACTy7V,SAAU,SAAkBjxa,GAC1B,OAAQmta,IAAenta,EACzB,EACAsH,OAAQ,CAAC,6BACR,CACDkuE,QAAS,oBACTluE,OAAQ,qCACP,CACDkuE,QAAS,YACTluE,OAAQ,CAAC,4BAEX5L,IAAK,CAAC,CACJ85E,QAAS,UACTluE,OAAQ,CAAC,0BACR,CACDkuE,QAAS,eACTluE,OAAQ,CAAC,+BAEXm5d,SAAU,CAAC,CACTjrZ,QAAS,WACTluE,OAAQ,CAAC,0BAA2B,qBACnC,CACDkuE,QAAS,sBACTluE,OAAQ,CAAC,kCACR,CACDkuE,QAAS,yBACTluE,OAAQ,CAAC,yCAIbiqa,IAAoB,0BAA2B,CAC7Ch+a,MAAO,CAAC,CACNiiF,QAAS,gBACTluE,OAAQ,qCAIZiqa,IAAoB,gBAAiB,CACnCgvD,WAAY,CAAC,CACX/qZ,QAAS,yBACTluE,OAAQ,CAAC,iBAAkB,oBAC1B,CACDkuE,QAAS,yBACTluE,OAAQ,CAAC,iBAAkB,qBAE7B/T,MAAO,CAAC,CACNiiF,QAAS,oBACTy7V,SAAU,SAAkBjxa,GAC1B,OAAQA,EAAQvY,UAAU,oBAC5B,EACA6f,OAAQ,CAAC,8BAA+B,0BAA2B,wBAAyB,qBAAsB,oBAGpH,CACEkuE,QAAS,+BACTluE,OAAQ,CAAC,uBACR,CACDkuE,QAAS,+BACTluE,OAAQ,CAAC,uBACR,CACDkuE,QAAS,0BACTluE,OAAQ,CAAC,oBAAqB,qBAAsB,uBAIxDiqa,IAAoB,oBAAqB,CACvCh+a,MAAO,CAAC,CACNiiF,QAAS,sBACTluE,OAAQ,yBAIZiqa,IAAoB,4BAA6B,CAC/Ch+a,MAAO,CAAC,CACNiiF,QAAS,sBACTluE,OAAQ,4BAIZiqa,IAAoB,wBAAyB,CAC3CgvD,WAAY,CAAC,CACX/qZ,QAAS,yBACTluE,OAAQ,kBACP,CACDkuE,QAAS,yBACTluE,OAAQ,mBAEV/T,MAAO,CAAC,CACNiiF,QAAS,oBACTluE,OAAQ,CAAC,8BAA+B,0BAA2B,wBAAyB,6BAIhGiqa,IAAoB,gBAAiB,CACnCh+a,MAAO,CAAC,CACNiiF,QAAS,iBACTluE,OAAQ,uBAEV5L,IAAK,CAAC,CACJ85E,QAAS,kBACTluE,OAAQ,yBAIZiqa,IAAoB,mBAAoB,CACtCh+a,MAAO,CAAC,CACNiiF,QAAS,6BACTluE,OAAQ,0BAEV5L,IAAK,CAAC,CACJ85E,QAAS,8BACTluE,OAAQ,4BAOZiqa,IAAoB,YAAa,CAC/Bh+a,MAAO,CAAC,CACNiiF,QAAS,kBACTy7V,SAAU,SAAkBjxa,GAC1B,OAAO,IAAYA,EAAQpoB,MAC7B,EACA0vB,OAAQ,qBACRyvD,SAAU,CACRrmD,KAAM,IACNwB,SAAS,EACTG,UAAU,IAEX,CACDmjE,QAAS,kBACTy7V,SAAU,SAAkBjxa,GAC1B,OAAQ,IAAYA,EAAQpoB,MAC9B,EACA0vB,OAAQ,oBACRyvD,SAAU,CACRrmD,KAAM,IACNwB,SAAS,EACTG,UAAU,OAIhBk/Z,IAAoB,kBAAmB,CACrCh+a,MAAO,CAAC,CACNiiF,QAAS,iBACTluE,OAAQ,yBAEV5L,IAAK,CAAC,CACJ85E,QAAS,kBACTluE,OAAQ,2BAGZiqa,IAAoB,yBAA0B,CAC5Ch+a,MAAO,CAAC,CACNiiF,QAAS,kBACTluE,OAAQ,+BapyBL,ICCIo5d,IDDAC,IAAwB,CAAC,OAAQ,QAAS,YAAa,eAAgB,MAAO,MAAO,OAAQ,WAAY,WAEpH,QAAS,aAET,OAEA,WAEA,OAEA,SCRA,SAAWD,GACTA,EAAa,MAAI,QACjBA,EAAY,KAAI,OAChBA,EAAY,KAAI,KACjB,CAJD,CAIGA,MAAUA,IAAQ,CAAC,IACtB,IAAIE,IAAQ,cAMZ,SAASC,IAAWhgd,GAElB,IADA,IAAItzC,EAAO,GACFC,EAAK,EAAGA,EAAKC,UAAUC,OAAQF,IACtCD,EAAKC,EAAK,GAAKC,UAAUD,GAE3B,IAAIszf,EAAW,EACf,MAAO,GAAG1gf,OAAOwgf,IAAO,MAAMxgf,OAAOygC,EAAOpuB,QAAQ,OAAO,WACzD,MAAO,GAAGrS,OAAO7S,EAAKuzf,KACxB,IACF,CA0BO,SAAS,IAAI7vd,EAAOnC,EAAW+R,GAEpC,IADA,IAAItzC,EAAO,GACFC,EAAK,EAAGA,EAAKC,UAAUC,OAAQF,IACtCD,EAAKC,EAAK,GAAKC,UAAUD,GAEtBshC,GACH+iG,QAAQ5gG,GAAO4vd,IAAW3yf,WAAM,GAAQ,UAAc,CAAC2yC,GAAStzC,GAAM,IAE1E,CCtDO,SAAS,IAAKqzB,EAAK6M,GACxB,IAAI1hB,EAAI,CAAC,EAST,OARY,OAAR6U,GAA+B,iBAARA,GACzB6M,EAAKx4B,SAAQ,SAAUy4B,GACrB,IAAI5uB,EAAI8hB,EAAI8M,QACFpK,IAANxkB,IACFiN,EAAE2hB,GAAO5uB,EAEb,IAEKiN,CACT,CCPO,SAASg1e,IAAkBxue,EAAMm6G,GACtC,IAAKn6G,EAAM,MAAO,CAAC,EAEnB,IAAIyue,EAAazue,EAAKnV,QAAO,SAAU4nN,GACrC,IAAIlmN,GAAI,UAAIkmN,EAAO,CAACt4F,IACpB,OAAO,UAAS5tH,KAAOiQ,MAAMjQ,EAC/B,IACImif,EAASD,EAAW3rX,OAAM,SAAU2vF,GACtC,OAAO,UAAIA,EAAO,CAACt4F,KAAW,CAChC,IACIw0X,EAASF,EAAW3rX,OAAM,SAAU2vF,GACtC,OAAO,UAAIA,EAAO,CAACt4F,KAAW,CAChC,IAEA,OAAIu0X,EACK,CACLl6e,IAAK,GAGLm6e,EACK,CACLl6e,IAAK,GAGF,CAAC,CACV,CASO,SAASm6e,IAA4B5ue,EAAM6ue,EAAaC,EAAaC,EAAaC,GAIvF,QAHkB,IAAdA,IACFA,EAAY,KAETj0d,MAAMC,QAAQhb,GACjB,MAAO,CACLyiJ,MAAO,GACP6tH,MAAO,IAIX,IAAIA,EAAQ,GAER2+N,EAAW,CAAC,EACZC,GAAc,EA6BlB,OA3BAlve,EAAKtd,SAAQ,SAAU+vN,GACrB,IAAI9mM,EAAS8mM,EAAMo8R,GACf7rf,EAASyvN,EAAMq8R,GACf/rc,EAAS0vK,EAAMs8R,GACfI,EAAU,IAAK18R,EAAOu8R,GAErBC,EAAStje,KACZsje,EAAStje,IAAU,UAAS,CAC1B3d,KAAMkhf,EACN3yf,KAAMovB,GACLwje,IAEAF,EAASjsf,KACZisf,EAASjsf,IAAU,UAAS,CAC1BgL,KAAMkhf,EACN3yf,KAAMyG,GACLmsf,IAGL7+N,EAAMz1R,MAAK,UAAS,CAClB8wB,OAAQsje,EAAStje,GAAQ3d,GACzBhL,OAAQisf,EAASjsf,GAAQgL,GAGzBvR,MAAOsmD,GACNosc,GACL,IACO,CAEL1sV,MAAO3wJ,OAAOgpB,OAAOm0d,GAAUpif,MAAK,SAAU4L,EAAG8E,GAC/C,OAAO9E,EAAEzK,GAAKuP,EAAEvP,EAClB,IACAsiR,MAAOA,EAEX,CAMO,SAAS8+N,IAAmBpve,EAAMm6G,GACvC,IAAImvV,GAAc,UAAOtpc,GAAM,SAAUK,GACvC,IAAI9T,EAAI8T,EAAE85G,GACV,OAAa,OAAN5tH,GAA2B,iBAANA,IAAmBiQ,MAAMjQ,EACvD,IAGA,OADA,IAAI4hf,IAAMkB,KAAM/lC,EAAYnud,SAAW6kB,EAAK7kB,OAAQ,uCAC7Cmud,CACT,CC3GA,ICAI,IDCA,IAAW,CAAC,EAAEpsc,SAEd,IAAS,SAAgBzgB,EAAOwG,GAClC,OAAO,IAAS/G,KAAKO,KAAW,WAAawG,EAAO,GACtD,EACI,IAAU,SAAiBxG,GAC7B,OAAO,IAAOA,EAAO,QACvB,EASI6yf,IAAgB,SAAuB7yf,GAMzC,IAdiB,SAAsBA,GAMvC,MAAwB,iBAAVA,GAAgC,OAAVA,CACtC,CAOO8yf,CAAa9yf,KAAW,IAAOA,EAAO,UACzC,OAAO,EAGT,IADA,IAAI6+B,EAAQ7+B,EAC4B,OAAjCqV,OAAOupB,eAAeC,IAC3BA,EAAQxpB,OAAOupB,eAAeC,GAEhC,OAAOxpB,OAAOupB,eAAe5+B,KAAW6+B,CAC1C,EAOIkjG,IAAO,SAASA,EAAK9xG,EAAM+R,EAAKC,EAAOC,GAGzC,IAAK,IAAIxD,KAFTuD,EAAQA,GAAS,EACjBC,EAAWA,GAxCO,EAyCFF,EACd,GAAI3sB,OAAOtX,UAAUqX,eAAe3V,KAAKuiC,EAAKtD,GAAM,CAClD,IAAI1+B,EAAQgiC,EAAItD,GACX1+B,EAIC6yf,IAAc7yf,IACX6yf,IAAc5ie,EAAKyO,MACtBzO,EAAKyO,GAAO,CAAC,GAEXuD,EAAQC,EACV6/F,EAAK9xG,EAAKyO,GAAM1+B,EAAOiiC,EAAQ,EAAGC,GAGlCjS,EAAKyO,GAAOsD,EAAItD,IAET,IAAQ1+B,IACjBiwB,EAAKyO,GAAO,GACZzO,EAAKyO,GAAOzO,EAAKyO,GAAKttB,OAAOpR,IAE7BiwB,EAAKyO,GAAO1+B,EAhBdiwB,EAAKyO,GAAO1+B,CAmBhB,CAEJ,EAMW+yf,IAAa,SAAoB5hf,GAE1C,IADA,IAAI5S,EAAO,GACFC,EAAK,EAAGA,EAAKC,UAAUC,OAAQF,IACtCD,EAAKC,EAAK,GAAKC,UAAUD,GAE3B,IAAK,IAAIO,EAAI,EAAGA,EAAIR,EAAKG,OAAQK,GAAK,EACpCgjI,IAAK5wH,EAAK5S,EAAKQ,IAEjB,OAAOoS,CACT,EE7EO,SAAS6hf,IAAiB1ta,GAC/B,IAAKA,EACH,MAAO,CACL15E,MAAO,EACPC,OAAQ,GAGZ,IAAIlC,EAAQo/C,iBAAiBu8B,GAC7B,MAAO,CACL15E,OAAQ05E,EAAI9B,aAAezxC,SAASpoC,EAAMiC,MAAO,KAAOmmC,SAASpoC,EAAMygL,YAAa,IAAMr4I,SAASpoC,EAAM0gL,aAAc,IACvHx+K,QAASy5E,EAAIjB,cAAgBtyC,SAASpoC,EAAMkC,OAAQ,KAAOkmC,SAASpoC,EAAMo4K,WAAY,IAAMhwI,SAASpoC,EAAM6sI,cAAe,IAE9H,CCbO,SAAS43F,MAEd,IADA,IAAIE,EAAQ,GACH9vO,EAAK,EAAGA,EAAKC,UAAUC,OAAQF,IACtC8vO,EAAM9vO,GAAMC,UAAUD,GAExB,OAAO,SAAUg9I,GACf,OAAO8yF,EAAM9+M,QAAO,SAAU/e,EAAQvP,GACpC,OAAOA,EAAEuP,EACX,GAAG+qI,EACL,CACF,CCRO,SAASy3W,IAAahjP,EAAMzpQ,GACjC,OAAOypQ,EAAKhzD,WAAW5rM,MAAK,SAAUghC,GACpC,OAAOA,EAAE7rC,OAASA,CACpB,GACF,CAIO,SAAS0sf,IAAejjP,GAC7B,OAAO,UAAOA,EAAKhzD,YAAY,SAAUlgM,EAAGmgM,GAC1C,OAAOngM,EAAE3L,OAAO8rM,EAAS1+K,SAC3B,GAAG,GACL,CAIO,SAAS20d,IAA0BljP,GACxC,OAAI,UAAIA,EAAM,CAAC,QAAS,UAAW,IAAM,EAChCijP,IAAejjP,IAEjB,UAAOA,EAAKoD,OAAO,SAAU/tL,EAAK45W,GACvC,OAAO55W,EAAIl0E,OAAO+hf,IAA0Bj0D,GAC9C,GAAGg0D,IAAejjP,GACpB,CCvBO,SAASmjP,IAAet/U,GAC7B,KAAK,UAAOA,EAAc,UACxB,OAAOA,EAET,IAAIrpH,GAAQ,UAAS,CAAC,EAAGqpH,GAIzB,OAHIrpH,EAAMm9R,YAAcn9R,EAAMkqB,UAC5BlqB,EAAMkqB,QAAUlqB,EAAMm9R,WAEjBn9R,CACT,ECP8B,WAAQ,SAAU/rC,EAAMG,QACvC,IAATA,IACFA,EAAO,CAAC,GAEV,IAAIF,EAAWE,EAAKF,SAClB3f,EAAK6f,EAAKyS,WACVA,OAAoB,IAAPtyB,EAAgB,aAAeA,EAC5CuyB,EAAa1S,EAAK0S,WAClBC,EAAY3S,EAAK2S,UACjBC,EAAc5S,EAAK4S,YACjB+R,GLbC,MACH,IAAMh7B,SAAS+Z,cAAc,UAAUC,WAAW,OAE7C,KKcP,OAFAghB,EAAI3kB,KAAO,CAAC2S,EAAWD,EAAYE,EAAa,GAAGrgB,OAAOuN,EAAU,MAAO2S,GAAYpK,KAAK,KAC9Esc,EAAIpS,aAAY,UAAS1S,GAAQA,EAAO,IACvC9S,KACjB,IAAG,SAAU8S,EAAMG,GAIjB,YAHa,IAATA,IACFA,EAAO,CAAC,IAEH,UAAc,CAACH,IAAO,UAAOG,IAAO,GAAMqI,KAAK,GACxD,ICxBO,SAASmse,IAAavjf,GAC3B,MAAoB,iBAANA,IAAmBiQ,MAAMjQ,EACzC,CCDO,SAASwjf,IAAcr7a,GAC5B,IAAI,UAASA,GACX,MAAO,CAACA,EAASA,EAASA,EAASA,GAErC,IAAI,UAAQA,GAAU,CACpB,IAAI74E,EAAW64E,EAAQv5E,OACvB,GAAiB,IAAbU,EACF,MAAO,CAAC64E,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,IAEtD,GAAiB,IAAb74E,EACF,MAAO,CAAC64E,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,IAEtD,GAAiB,IAAb74E,EACF,MAAO,CAAC64E,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,IAEtD,GAAiB,IAAb74E,EACF,OAAO64E,CAEX,CACA,MAAO,CAAC,EAAG,EAAG,EAAG,EACnB,CAIO,SAASs7a,IAAuBt7a,EAASjvB,EAAUgO,QACvC,IAAbhO,IACFA,EAAW,eAEE,IAAXgO,IACFA,EAAS,IAEX,IAAIw8b,EAAuBF,IAAcr7a,GACrCw7a,EAAU,CAACzqc,EAASo2B,WAAW,OAASpoB,EAAS,EAAGhO,EAASo2B,WAAW,SAAWpoB,EAAS,EAAGhO,EAASo2B,WAAW,UAAYpoB,EAAS,EAAGhO,EAASo2B,WAAW,QAAUpoB,EAAS,GACtL,MAAO,CAACw8b,EAAqB,GAAKC,EAAQ,GAAID,EAAqB,GAAKC,EAAQ,GAAID,EAAqB,GAAKC,EAAQ,GAAID,EAAqB,GAAKC,EAAQ,GAC9J,CAKO,SAASC,IAAkBhqa,GAEhC,IAAIiqa,EAAiBjqa,EAAS76D,KAAI,SAAUvZ,GAC1C,OAAOg+e,IAAch+e,EACvB,IACIs+e,EAAe,CAAC,EAAG,EAAG,EAAG,GAU7B,OATID,EAAej1f,OAAS,IAC1Bk1f,EAAeA,EAAa/ke,KAAI,SAAUvZ,EAAMzP,GAK9C,OAHA8tf,EAAe1tf,SAAQ,SAAU2d,EAAG7kB,GAClCuW,GAAQq+e,EAAe50f,GAAG8G,EAC5B,IACOyP,CACT,KAEKs+e,CACT,CCzCO,IAAI,IAAe,SAAsBr1e,EAAQkb,EAAQL,EAAQD,GACtE,IACIO,EACAjc,EAEA1F,EACAC,EALA6hB,EAAM,GAGNC,IAAkBX,EAGtB,GAAIW,EAAe,CACjB/hB,EAAM,CAAC3V,IAAUA,KACjB4V,EAAM,EAAE5V,KAAWA,KACnB,IAAK,IAAIrD,EAAI,EAAGokB,EAAI5E,EAAO7f,OAAQK,EAAIokB,EAAGpkB,IAAK,CAC7C,IAAI8J,EAAQ0V,EAAOxf,GACnBgZ,EAAM4a,IAAA,GAAS,CAAC,EAAG,GAAI5a,EAAKlP,GAC5BmP,EAAM2a,IAAA,GAAS,CAAC,EAAG,GAAI3a,EAAKnP,EAC9B,CACAkP,EAAM4a,IAAA,GAAS,CAAC,EAAG,GAAI5a,EAAKohB,EAAW,IACvCnhB,EAAM2a,IAAA,GAAS,CAAC,EAAG,GAAI3a,EAAKmhB,EAAW,GACzC,CACSp6B,EAAI,EAAb,IAAK,IAAWs5B,EAAM9Z,EAAO7f,OAAQK,EAAIs5B,EAAKt5B,IAAK,CAC7C8J,EAAQ0V,EAAOxf,GACnB,GAAIq6B,EACFM,EAAYnb,EAAOxf,EAAIA,EAAI,EAAIs5B,EAAM,GACrC5a,EAAYc,GAAQxf,EAAI,GAAKs5B,OACxB,CACL,GAAU,IAANt5B,GAAWA,IAAMs5B,EAAM,EAAG,CAC5BwB,EAAIz7B,KAAKyK,GACT,QACF,CACE6wB,EAAYnb,EAAOxf,EAAI,GACvB0e,EAAYc,EAAOxf,EAAI,EAE3B,CACA,IAAI+Q,EAAI,CAAC,EAAG,GACZA,EAAI6iB,IAAA,GAAS7iB,EAAG2N,EAAWic,GAC3B5pB,EAAI6iB,IAAA,GAAW7iB,EAAGA,EAAG2pB,GACrB,IAAIM,EAAKpH,IAAA,GAAc9pB,EAAO6wB,GAC1BxG,EAAKP,IAAA,GAAc9pB,EAAO4U,GAC1BwM,EAAM8P,EAAK7G,EACH,IAARjJ,IACF8P,GAAM9P,EACNiJ,GAAMjJ,GAER,IAAIiI,EAAKS,IAAA,GAAW,CAAC,EAAG,GAAI7iB,GAAIiqB,GAC5B5H,EAAKQ,IAAA,GAAW,CAAC,EAAG,GAAI7iB,EAAGojB,GAC3B0G,EAAMjH,IAAA,GAAS,CAAC,EAAG,GAAI9pB,EAAOqpB,GAC9BoH,EAAM3G,IAAA,GAAS,CAAC,EAAG,GAAI9pB,EAAOspB,GAC9B2H,IACFF,EAAMjH,IAAA,GAAS,CAAC,EAAG,GAAIiH,EAAK7hB,GAC5B6hB,EAAMjH,IAAA,GAAS,CAAC,EAAG,GAAIiH,EAAK5hB,GAC5BshB,EAAM3G,IAAA,GAAS,CAAC,EAAG,GAAI2G,EAAKvhB,GAC5BuhB,EAAM3G,IAAA,GAAS,CAAC,EAAG,GAAI2G,EAAKthB,IAE9B6hB,EAAIz7B,KAAKw7B,GACTC,EAAIz7B,KAAKk7B,EACX,CAIA,OAHIF,GACFS,EAAIz7B,KAAKy7B,EAAIpR,SAERoR,CACT,EAmCO,SAAS,IAActb,EAAQi+a,EAAYG,GAChD,IAAIp5a,EAAO,GACP6W,EAAQ7b,EAAO,GACfhB,EAAW,KACf,GAAIgB,EAAO7f,QAAU,EAEnB,OAtHG,SAAqB6f,EAAQi+a,GAClC,IAAI93b,EAAO,GACX,GAAI6Z,EAAO7f,OAAQ,CACjBgG,EAAKtG,KAAK,CAAC,IAAKmgB,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,IACvC,IAAK,IAAIhK,EAAI,EAAGK,EAAWmf,EAAO7f,OAAQK,EAAIK,EAAUL,GAAK,EAAG,CAC9D,IAAIuW,EAAOiJ,EAAOxf,GAClB2F,EAAKtG,KAAK,CAAC,IAAKkX,EAAKxM,EAAGwM,EAAKvM,GAC/B,CACIyzb,GACF93b,EAAKtG,KAAK,CAAC,KAEf,CACA,OAAOsG,CACT,CAyGWmvf,CAAYt1e,EAAQi+a,GAE7B,IAAK,IAAIz9b,EAAI,EAAGs5B,EAAM9Z,EAAO7f,OAAQK,EAAIs5B,EAAKt5B,IAAK,CACjD,IAAI8J,EAAQ0V,EAAOxf,GACdwe,GAAcA,EAASzU,IAAMD,EAAMC,GAAKyU,EAASxU,IAAMF,EAAME,IAChEwa,EAAKnlB,KAAKyK,EAAMC,GAChBya,EAAKnlB,KAAKyK,EAAME,GAChBwU,EAAW1U,EAEf,CACA,IAGI+zb,EAjDC,SAA2Bj5a,EAAKL,EAAG6V,GAGxC,IAFA,IAAIC,IAAW9V,EACX+V,EAAY,GACPt6B,EAAI,EAAGokB,EAAIQ,EAAIjlB,OAAQK,EAAIokB,EAAGpkB,GAAK,EAC1Cs6B,EAAUj7B,KAAK,CAACulB,EAAI5kB,GAAI4kB,EAAI5kB,EAAI,KAElC,IAGIu6B,EACAC,EACAtd,EALAud,EAAmB,IAAaH,EAAW,GAAKD,EAAQD,GACxDd,EAAMgB,EAAU36B,OAChBw0B,EAAK,GAIT,IAASn0B,EAAI,EAAGA,EAAIs5B,EAAM,EAAGt5B,IAC3Bu6B,EAAME,EAAqB,EAAJz6B,GACvBw6B,EAAMC,EAAqB,EAAJz6B,EAAQ,GAC/Bkd,EAAIod,EAAUt6B,EAAI,GAClBm0B,EAAG90B,KAAK,CAAC,IAAKk7B,EAAI,GAAIA,EAAI,GAAIC,EAAI,GAAIA,EAAI,GAAItd,EAAE,GAAIA,EAAE,KAQxD,OANImd,IACFE,EAAME,EAAiBnB,GACvBkB,EAAMC,EAAiBnB,EAAM,GAC7Bpc,EAAIod,EAAU,GACdnG,EAAG90B,KAAK,CAAC,IAAKk7B,EAAI,GAAIA,EAAI,GAAIC,EAAI,GAAIA,EAAI,GAAItd,EAAE,GAAIA,EAAE,MAEjDiX,CACT,CAwBmB,CAAkB3P,EAAMi5a,EAHxBG,GAAa,CAE9B,CAAC,EAAG,GAAI,CAAC,EAAG,KAGZ,OADAC,EAAWppb,QAAQ,CAAC,IAAK4mB,EAAMtxB,EAAGsxB,EAAMrxB,IACjC6zb,CACT,CClIO,SAASk3D,IAAUj0X,GACxB,OAAKA,EAGQA,EAAK/mG,MAAM,0CACVjK,KAAI,SAAUlT,GAC1B,OAAOA,EAAEc,aACX,IAAGyK,KAAK,KALC24G,CAMX,CCHO,SAASk0X,IAAYpqf,GAC1B,IAAIqqf,EAAc,CAChB7qc,SAAU,SACV,cAAe,SACf,gBAAiB,WACjBD,QAAS,OACT40D,eAAgB,SAChBlI,WAAY,UAEVq+Y,EAAiB,CAAC,SAAU,YAAa,cAAe,gBAAiB,aAAc,gBAAiB,gBAAiB,SAEzH,UAAItqf,EAAO,UACbqqf,EAAmB,MAAIrqf,EAAY,MAErC,IAAI3K,EAAK,IAAK2K,EAAOsqf,GACnBh8e,EAAcjZ,EAAGiZ,YACjBlD,EAAK/V,EAAGkZ,WACRA,OAAoB,IAAPnD,EAAgB,EAAIA,EACjCC,EAAKhW,EAAGmZ,cACRA,OAAuB,IAAPnD,EAAgB,EAAIA,EACpCmnB,EAAKn9B,EAAGoZ,cACRA,OAAuB,IAAP+jB,EAAgB,EAAIA,EACtC63d,EAAY,eAAiB,GAAG5if,OAAO,CAAC6G,EAAa,GAAG7G,OAAO+G,EAAe,MAAO,GAAG/G,OAAOgH,EAAe,MAAO,GAAGhH,OAAO8G,EAAY,OAAOgP,KAAK,MACvJ,IAAIkV,EAAK,IAAKzyB,EAAOsqf,GACnBj1e,EAASod,EAAGpd,OACZqd,EAAKD,EAAG9e,UACRA,OAAmB,IAAP+e,EAAgB,EAAIA,EAWlC,OAVA23d,EAAY,uBAAyB,GAAG5if,OAAO,CAAC,GAAGA,OAAOkM,EAAW,MAAO0B,GAAQkI,KAAK,OAEzF,UAAKvd,GAAO,SAAUmG,EAAGvL,GAEnB,CAAC,YAAYvB,SAASuB,KAAM,UAASuL,GACvCkkf,EAAYF,IAAUvvf,IAAM,GAAG6M,OAAOtB,EAAG,MAChCvL,IAAM0vf,EAAejxf,SAASuB,KACvCyvf,EAAYF,IAAUvvf,IAAM,GAAG6M,OAAOtB,GAE1C,IACOkkf,CACT,CAMO,SAASE,IAA2Brtf,EAAW8C,GACpD9C,EAAU8C,MAAM,kBAAoB,QACpC,UAAKA,GAAO,SAAUmG,EAAGvL,GACnBA,GAAKuL,IACPjJ,EAAU8C,MAAMpF,GAAKuL,EAEzB,GACF,CAQO,IAAIqkf,IAAkB,SAAyB55C,EAAOv3a,EAASgzL,GACpE,IAAIjwG,EAAY/iF,EAAQ+iF,UACtBquY,EAAWpxd,EAAQoxd,SACjBC,EAAWtuY,EAAUn2D,MACvB0kc,EAAavuY,EAAUpxC,QACzB,CAAC0/a,EAAUC,GAAYruf,SAAQ,SAAUswD,EAAQxzB,GAC/C,GAAKwzB,EAAL,CAGA,IAAI5kD,EAAY,GAEdA,EADU,IAARoxB,EACUuxd,EAAa,yBAA2B,wBAExCD,EAAW,qBAAuB,wBAEhD,IAAI1qf,GAAQ,UAAW4sD,EAAO5sD,OAAS4sD,EAAO5sD,MAAMqsN,GAASz/J,EAAO5sD,MACpE4wc,EAAMpN,aAAa10B,MAAK,UAAS,CAC/BzvX,SAAU,CAAC,MAAO,OAClByvX,KAAM,SAAc5xa,EAAWopQ,GAC7B,IAAI6L,EAAa7L,EAAK+vL,gBAClBu0D,EAAa,EACjB,GAAiB,QAAbH,GAAmC,kBAAbA,EACxBG,EAAaz4O,EAAWmuJ,YAAcnuJ,EAAWn0K,YAAc,OAC1D,GAAiB,WAAbysZ,EAAuB,CAChC,IAAII,GAAc,UAAIvkP,EAAKhzD,WAAY,CAAC,EAAG,WAAY,EAAG,UAC1D,GAAIu3S,EAAa,CAEf,IAAI9vf,EAAO8vf,EAAYnjf,MAAK,SAAUzP,GACpC,MAAyB,SAAlBA,EAAE/B,IAAI,OACf,IAEA00f,EADY7vf,EAAK+J,gBAAgB7C,KAEnC,CACF,MAAY2of,IAEVA,EAAaz4O,EAAWznJ,YAE1B6/X,IAA2Brtf,GAAW,UAAS,CAC7C+E,MAAO,GAAGwF,OAAOmjf,EAAY,MAC7B5if,UAAWA,GACVoif,IAAYpqf,KACf,IAAI6yc,EAAevsM,EAAKnyG,UACxB,GAAIvnG,EAAOk+b,WACT,OAAOl+b,EAAOk+b,WAAW5tf,EAAWopQ,EAAMj6C,EAAOwmP,GAEnD,IAAI99b,EAAO63C,EAAOoe,QAKlB,OAJIpe,EAAOqxR,YACTlpU,EAAO63C,EAAOqxR,UAAU5xH,EAAOwmP,IAG1B99b,GAAO,UAASA,GAAQA,EAAO,GAAGtN,OAAOsN,GAAQ,aAC1D,EAEAggB,IAAK,GAAGttB,OAAe,IAAR2xB,EAAY,MAAQ,SAAU,eAC5C,IAAKwzB,EAAQ,CAAC,UAAW,UAAW,SAAU,QAAS,eA9C1D,CA+CF,GACF,EAQWm+b,IAAuB,SAA8Bn6C,EAAOv3a,EAASgzL,GAC9E,IAAIjwG,EAAY/iF,EAAQ+iF,UAGxB,CAFeA,EAAUn2D,MACVm2D,EAAUpxC,SACF1uE,SAAQ,SAAUswD,GACvC,GAAKA,EAAL,CAGA,IAAI5sD,GAAQ,UAAW4sD,EAAO5sD,OAAS4sD,EAAO5sD,MAAMqsN,GAASz/J,EAAO5sD,MACpE4wc,EAAMpN,aAAa10B,MAAK,UAAS,CAC/BzvX,SAAU,CAAC,MAAO,QAClByvX,KAAM,SAAc5xa,EAAWopQ,GAC7B,IAAI6L,EAAa7L,EAAK+vL,gBAElB20D,EAAa1kP,EAAKoD,MAAM,GAAG2sL,gBAC3B40D,EAAcD,EAAW5qF,YACzBc,EAAc8pF,EAAW1qF,YACzB4qF,EAAY/8e,KAAKE,IAAIF,KAAKoC,IAAIy6e,EAAW/0e,YAAa9H,KAAKoC,IAAIy6e,EAAW90e,WAAagrZ,EACvFv+Z,EAAUsof,EAAY7rf,EAAI8rf,EAAY/4O,EAAW/yQ,EAAEwb,MAAQ2E,YAAW,UAAIvf,EAAO,WAAY,IAC7F8pJ,EAAiBqoH,EAAWmuJ,YAAcnuJ,EAAWn0K,YAAc,EACvEusZ,IAA2Brtf,GAAW,UAAS,CAC7C+E,MAAO,GAAGwF,OAAOqiJ,EAAgB,MACjC9hJ,UAAW,mBAAmBP,OAAO9E,EAAS,QAC7Cynf,IAAYpqf,KACf,IAAI6yc,EAAevsM,EAAKnyG,UACxB,GAAIvnG,EAAOk+b,WACT,OAAOl+b,EAAOk+b,WAAW5tf,EAAWopQ,EAAMj6C,EAAOwmP,GAEnD,IAAI99b,EAAO63C,EAAOoe,QAKlB,OAJIpe,EAAOqxR,YACTlpU,EAAO63C,EAAOqxR,UAAU5xH,EAAOwmP,IAG1B99b,GAAO,UAASA,GAAQA,EAAO,GAAGtN,OAAOsN,GAAQ,aAC1D,GACC,IAAK63C,EAAQ,CAAC,UAAW,UAAW,SAAU,QAAS,eA5B1D,CA6BF,GACF,ECnKO,SAASq0C,IAAS17E,EAAQ3L,GAC/B,OAAKA,GAGE,UAEPA,GAAM,SAAUxG,EAAGjN,EAAGvL,GACpB,OAAOwY,EAAE0G,QAAQ,IAAId,OAAO,QAAQvR,OAAO7M,EAAG,SAAU,KAAMuL,EAChE,GAAGof,GANMA,CAOX,CCVO,SAAS4le,IAAav6C,EAAOhpc,GAClC,OAAOgpc,EAAMlnM,MAAMhiQ,MAAK,SAAU4+P,GAChC,OAAOA,EAAK1+P,KAAOA,CACrB,GACF,CAOO,SAASwjf,IAAS9kP,GACvB,IAAIxgQ,EAASwgQ,EAAKxgQ,OAClB,OAAOA,EAASA,EAAO4jQ,MAAQ,EACjC,CAOO,SAAS2hP,IAAgB/kP,GAC9B,OAAO8kP,IAAS9kP,GAAM7hQ,QAAO,SAAU8qB,GACrC,OAAOA,IAAQ+2O,CACjB,GACF,CAMO,SAASglP,IAAiBhlP,EAAM1sQ,EAAW05M,QAC7B,IAAfA,IACFA,EAAagzD,EAAKhzD,YAGK,kBAAd15M,EACT0sQ,EAAKt7P,QAAQpR,GAEb0sQ,EAAKt7P,SAAQ,IAGf,UAAKsoM,GAAY,SAAU5qK,GACzB,IAAI6id,EAEFA,GADE,UAAW3xf,GACEA,EAAU8uC,EAAE7rC,MAAQ6rC,EAAEljC,UAAWkjC,KAAM,EAEvC9uC,EAEjB8uC,EAAE19B,QAAQugf,EACZ,GACF,CCtDO,SAAS,MACd,MAAyB,iBAAXn0f,OAAiC,OAAXA,aAA8B,IAAXA,YAAoB,EAASA,OAAO+kQ,iBAAmB,CAChH,CAIO,SAASqvP,IAAWvpf,EAAOC,QACjB,IAAXA,IACFA,EAASD,GAEX,IAAIxG,EAASoD,SAAS+Z,cAAc,UAChC45O,EAAa,MASjB,OAPA/2P,EAAOwG,MAAQA,EAAQuwP,EACvB/2P,EAAOyG,OAASA,EAASswP,EAEzB/2P,EAAOuE,MAAMiC,MAAQ,GAAGwF,OAAOxF,EAAO,MACtCxG,EAAOuE,MAAMkC,OAAS,GAAGuF,OAAOvF,EAAQ,MAC9BzG,EAAOod,WAAW,MACxB7L,MAAMwlP,EAAYA,GACf/2P,CACT,CASO,SAASs+a,IAAe1yZ,EAASxxB,EAAKoM,EAAOC,QACnC,IAAXA,IACFA,EAASD,GAEX,IAAIugE,EAAkB3sE,EAAI2sE,gBACxB35D,EAAUhT,EAAIgT,QAChBwe,EAAQ0pO,YAAcloP,EACtBwe,EAAQspO,UAAYnuL,EACpBn7C,EAAQuhO,YACRvhO,EAAQwpO,SAAS,EAAG,EAAG5uP,EAAOC,GAC9BmlB,EAAQklN,WACV,CASO,SAASk/Q,IAAmBjzd,EAAM81C,EAASo9a,GAEhD,IAAIh8G,EAAWl3W,EAAO81C,EACtB,OAAOo9a,EAAuB,EAAXh8G,EAAeA,CACpC,CAQO,SAASi8G,IAAmBj8G,EAAUg8G,GAG3C,OADiBA,EAAY,CAAC,CAACh8G,GAAY,EAAI,GAAIA,GAAY,EAAI,IAAK,CAACA,GAAY,EAAI,GAAIA,GAAY,EAAI,KAAO,CAAC,CAAY,GAAXA,EAA+B,GAAXA,GAE5I,CAQO,SAASk8G,IAAgBC,EAAK7xO,GACnC,IAAI5sQ,EAAS4sQ,EAAW7rQ,KAAK+B,GAAK,IASlC,MARa,CACXmC,EAAGlE,KAAKkC,IAAIjD,IAAW,EAAIy+e,GAC3B10e,EAAGhJ,KAAKoC,IAAInD,IAAW,EAAIy+e,GAC3Bxye,GAAIlL,KAAKoC,IAAInD,IAAW,EAAIy+e,GAC5B5xe,EAAG9L,KAAKkC,IAAIjD,IAAW,EAAIy+e,GAC3Bzzf,EAAG,EACHb,EAAG,EAGP,CCnFO,IAAIu0f,IAAuB,CAChCtzd,KAAM,EACN81C,QAAS,EACT9L,gBAAiB,cACjB35D,QAAS,EACTmxQ,SAAU,EACVlqO,KAAM,OACNioC,YAAa,GACb1iE,OAAQ,cACR1B,UAAW,EACX+3e,WAAW,GAUN,SAASK,IAAQ1ke,EAASxxB,EAAKsJ,EAAGC,GACvC,IAAIo5B,EAAO3iC,EAAI2iC,KACbsX,EAAOj6C,EAAIi6C,KACXn8B,EAAY9d,EAAI8d,UAChB0B,EAASxf,EAAIwf,OACb0iE,EAAcliF,EAAIkiF,YACpB1wD,EAAQuhO,YACRvhO,EAAQ0pO,YAAch5K,EACtB1wD,EAAQspO,UAAY7gN,EACpBzoB,EAAQ4pO,YAAc57O,EACtBgS,EAAQ1T,UAAYA,EACpB0T,EAAQusL,IAAIz0M,EAAGC,EAAGo5B,EAAO,EAAG,EAAG,EAAIrqB,KAAK+B,IAAI,GAC5CmX,EAAQyoB,OACJn8B,GACF0T,EAAQhS,SAEVgS,EAAQklN,WACV,CCrCO,IAAIy/Q,IAAwB,CACjChyO,SAAU,GACV42E,QAAS,EACT/nV,QAAS,EACT25D,gBAAiB,cACjBirL,cAAe,GACfp4O,OAAQ,OACR1B,UAAW,GAuBN,SAASs4e,IAAkBp2f,GAChC,IAAIq2f,EAAU9C,IAAW,CAAC,EAAG4C,IAAuBn2f,GAChD+6V,EAAUs7J,EAAQt7J,QACpB52E,EAAWkyO,EAAQlyO,SACnBrmQ,EAAYu4e,EAAQv4e,UAElB1R,EAAQ2uV,EAAUj9U,GAAa,EAC/BzR,EAAS0uV,EAAUj9U,GAAa,EAChCsG,EAAI,yBAAyBxS,OAAOxF,EAAO,wBAAwBwF,OAAOvF,EAAQ,OAAOuF,OAAOxF,EAAO,KAAKwF,OAAOvF,EAAQ,kBAE3HzG,EAAS+vf,IAAWvpf,EAAOC,GAC3B23B,EAAMp+B,EAAOod,WAAW,MAE5Bkha,IAAelgZ,EAAKqyd,EAASjqf,EAAOC,GA3B/B,SAAkBmlB,EAASxxB,EAAKokB,GACrC,IAAI5E,EAASxf,EAAIwf,OACf1B,EAAY9d,EAAI8d,UAChB85O,EAAgB53P,EAAI43P,cAClB1yP,EAAO,IAAIoxf,OAAOlye,GACtBoN,EAAQ0pO,YAActD,EACtBpmO,EAAQ6pO,QAAU,SAClB7pO,EAAQ4pO,YAAct9O,EAAY0B,EAAS,cAC3CgS,EAAQ1T,UAAYA,EACpB0T,EAAQhS,OAAOta,EACjB,CAkBEk1a,CAASp2Y,EAAKqyd,EAASjye,GACvB,IAAIyiD,EAAU7iC,EAAIi3N,cAAcr1P,EAAQ,UACxC,GAAIihE,EAAS,CACX,IACIr3D,EAASumf,IADH,MACwB5xO,GAClCt9M,EAAQqgM,aAAa13P,EACvB,CAEA,OAAOq3D,CACT,CCrDO,IAAI0vb,IAA0B,CACnC5zd,KAAM,EACN81C,QAAS,EACTo9a,WAAW,EACXlpb,gBAAiB,cACjB35D,QAAS,EACTmxQ,SAAU,EACVlqO,KAAM,OACNioC,YAAa,GACb1iE,OAAQ,cACR1B,UAAW,GASN,SAAS04e,IAAWhle,EAASxxB,EAAKsJ,EAAGC,GAC1C,IAAIiW,EAASxf,EAAIwf,OACfmjB,EAAO3iC,EAAI2iC,KACXsX,EAAOj6C,EAAIi6C,KACXn8B,EAAY9d,EAAI8d,UAChBokE,EAAcliF,EAAIkiF,YACpB1wD,EAAQ0pO,YAAch5K,EACtB1wD,EAAQ4pO,YAAc57O,EACtBgS,EAAQ1T,UAAYA,EACpB0T,EAAQspO,UAAY7gN,EAEpBzoB,EAAQile,WAAWntf,EAAIq5B,EAAO,EAAGp5B,EAAIo5B,EAAO,EAAGA,EAAMA,GACrDnR,EAAQwpO,SAAS1xP,EAAIq5B,EAAO,EAAGp5B,EAAIo5B,EAAO,EAAGA,EAAMA,EACrD,CC7BO,SAAS+zd,IAAiBlzd,GAC/B,IAEIqjC,EAFA7/D,EAAOw8B,EAAQx8B,KACjBhH,EAAMwjC,EAAQxjC,IAEhB,OAAQgH,GACN,IAAK,MACH6/D,EHmCC,SAA0B7mE,GAC/B,IAAI22f,EAASpD,IAAW,CAAC,EAAG0C,IAAsBj2f,GAC9C2iC,EAAOg0d,EAAOh0d,KAChB81C,EAAUk+a,EAAOl+a,QACjBo9a,EAAYc,EAAOd,UACnB1xO,EAAWwyO,EAAOxyO,SAEhB01H,EAAW+7G,IAAmBjzd,EAAM81C,EAASo9a,GAC7Cjxe,EAAOkxe,IAAmBj8G,EAAUg8G,GAEpCjwf,EAAS+vf,IAAW97G,EAAUA,GAC9B71W,EAAMp+B,EAAOod,WAAW,MAE5Bkha,IAAelgZ,EAAK2yd,EAAQ98G,GAC5B,IAAK,IAAI76Y,EAAK,EAAG43f,EAAShye,EAAM5lB,EAAK43f,EAAO13f,OAAQF,IAAM,CACxD,IAAIQ,EAAKo3f,EAAO53f,GAGhBk3f,IAAQlyd,EAAK2yd,EAFPn3f,EAAG,GACHA,EAAG,GAEX,CACA,IAAIqnE,EAAU7iC,EAAIi3N,cAAcr1P,EAAQ,UACxC,GAAIihE,EAAS,CACX,IACIr3D,EAASumf,IADH,MACwB5xO,GAClCt9M,EAAQqgM,aAAa13P,EACvB,CACA,OAAOq3D,CACT,CG9DgBgwb,CAAiB72f,GAC3B,MACF,IAAK,OACH6mE,EAAUuvb,IAAkBp2f,GAC5B,MACF,IAAK,SACH6mE,EDqBC,SAA6B7mE,GAClC,IAAI82f,EAAYvD,IAAW,CAAC,EAAGgD,IAAyBv2f,GACpD2iC,EAAOm0d,EAAUn0d,KACnB81C,EAAUq+a,EAAUr+a,QACpBo9a,EAAYiB,EAAUjB,UACtB1xO,EAAW2yO,EAAU3yO,SAEnB01H,EAAW+7G,IAAmBjzd,EAAM81C,EAASo9a,GAC7CkB,EAAUjB,IAAmBj8G,EAAUg8G,GAEvCjwf,EAAS+vf,IAAW97G,EAAUA,GAC9B71W,EAAMp+B,EAAOod,WAAW,MAE5Bkha,IAAelgZ,EAAK8yd,EAAWj9G,GAC/B,IAAK,IAAI76Y,EAAK,EAAGg4f,EAAYD,EAAS/3f,EAAKg4f,EAAU93f,OAAQF,IAAM,CACjE,IAAIQ,EAAKw3f,EAAUh4f,GAGnBw3f,IAAWxyd,EAAK8yd,EAFVt3f,EAAG,GACHA,EAAG,GAEX,CACA,IAAIqnE,EAAU7iC,EAAIi3N,cAAcr1P,EAAQ,UACxC,GAAIihE,EAAS,CACX,IACIr3D,EAASumf,IADH,MACwB5xO,GAClCt9M,EAAQqgM,aAAa13P,EACvB,CACA,OAAOq3D,CACT,CChDgBowb,CAAoBj3f,GAKlC,OAAO6mE,CACT,CCdO,SAAS,IAAQ3nC,GACtB,IAAIpgC,EAAQT,KACZ,OAAO,SAAUshB,GACf,IAAIngB,EACAgkC,EAAU7jB,EAAO6jB,QACnBu3a,EAAQp7b,EAAOo7b,MACbm8C,EAAgB1zd,EAAQqjC,QAE5B,IAAKqwb,EACH,OAAOv3e,EAoCT,OAAO4ze,IAAW,CAAC,EAAG5ze,EAAQ,CAC5B6jB,SAAUhkC,EAAK,CAAC,EAAGA,EAAG0/B,GAlCZ,SAAes3L,GAGzB,IAFA,IAAIh3N,EAAI+V,EAAIC,EACRzW,EAAO,GACFC,EAAK,EAAGA,EAAKC,UAAUC,OAAQF,IACtCD,EAAKC,EAAK,GAAKC,UAAUD,GAE3B,IAAIskU,EAAey3I,EAAMr1V,WAAW49M,aAChClxR,EAAQkxR,EACR6zL,EAA+F,QAA7E5hf,EAAiC,QAA3B/V,EAAKu7c,EAAMt9P,kBAA+B,IAAPj+M,OAAgB,EAASA,EAAG,UAAuB,IAAP+V,OAAgB,EAASA,EAAGkzC,aAAa,SACpJ,GAAI0uc,EAAgB,CAClB,IAAI3uB,EAAa2uB,EAAev6X,YAAY,GACxCw6X,GAAc,UAAI5gS,EAAOgyQ,GAC7Bp2b,EAAQoob,IAAKhD,gBAAgB2/B,EAAgBC,GAA+C,QAAhC5hf,EAAK2hf,EAAet4d,cAA2B,IAAPrpB,OAAgB,EAASA,EAAG,KAAO8tT,EACzI,CACA,IAAIz8P,EAAUqwb,EAEe,mBAAlBA,IACTrwb,EAAUqwb,EAAcj3f,KAAKnB,EAAO03N,EAAOpkL,IAGzCy0B,aAAmB60Z,gBAAkB,IAEvC70Z,EAAU6vb,IAAiBnD,IAAW,CAAC,EAAG,CACxCvzf,IAAK,CACH2sE,gBAAiBv6B,IAElBy0B,KAEL,IAAIgmZ,EAAcrpb,EAAQtE,GAC1B,OAAO,WAAS,UAAS,CAAC,EAA0B,mBAAhB2tb,EAA6BA,EAAY5sd,KAAKP,MAAMmtd,GAAa,UAAc,CAAC/td,EAAO03N,GAAQz3N,GAAM,IAAU8td,GAAe,CAAC,GAAI,CACrK5ya,KAAM4sB,GAAWz0B,GAErB,EAEsC5yC,IAExC,CACF,CCrDO,SAAS,IAAOmgB,GACrB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfkyO,EAASlyO,EAAQkyO,OACnB8yN,EAAahlc,EAAQglc,WACrB6uB,EAAc7zd,EAAQ6zd,YAMxB,OALe,IAAX3hP,EACFqlM,EAAMrlM,QAAO,IACJ8yN,GAAc6uB,IACvBt8C,EAAMrlM,OAAO8yN,GAAc6uB,EAAa3hP,GAEnC/1P,CACT,CAKO,SAAS,IAAQA,GACtB,IAAIo7b,EAAQp7b,EAAOo7b,MAEf33M,EADQzjP,EAAO6jB,QACG4/N,QAItB,YAHgBtuO,IAAZsuO,GACF23M,EAAM33M,QAAQA,GAETzjP,CACT,CAKO,SAAS,IAAYA,GAC1B,IAAIo7b,EAAQp7b,EAAOo7b,MAEfK,EADQz7b,EAAO6jB,QACQ43a,aAQ3B,OAPA,UAAKA,GAAc,SAAU77c,IACV,IAAbA,EAAE46a,OACJ4gC,EAAM+C,kBAAkBv+c,EAAEyH,MAE1B+zc,EAAM/X,YAAYzjc,EAAEyH,KAAMzH,EAAES,KAAO,CAAC,EAExC,IACO2f,CACT,CAKO,SAAS5b,IAAU4b,GAMxB,OADA81e,IAJY91e,EAAOo7b,MACPp7b,EAAO6jB,QACKz/B,WAGjB4b,CACT,CAKO,SAAS,IAAMA,GACpB,IAAIo7b,EAAQp7b,EAAOo7b,MAEfpvW,EADQhsF,EAAO6jB,QACCmoE,MAKpB,OAHIA,GACFovW,EAAMpvW,MAAMA,GAEPhsF,CACT,CAKO,SAAS,IAAMA,GACpB,IAAIo7b,EAAQp7b,EAAOo7b,MAEfn5Z,EADQjiC,EAAO6jB,QACCoe,MAMpB,OALIA,IACF,UAAKm5Z,EAAMt9P,YAAY,SAAUC,GAC/BA,EAAS97J,MAAMA,EACjB,IAEKjiC,CACT,CAKO,SAAS,IAAOA,GACrB,IAAIo7b,EAAQp7b,EAAOo7b,MAEfzzV,EADQ3nG,EAAO6jB,QACE8jF,OAErB,OADAyzV,EAAMhkZ,OAAO,SAAUuwD,GAChB3nG,CACT,CAKO,SAAS,IAAUA,GACxB,IAAIo7b,EAAQp7b,EAAOo7b,MAEfhL,EADQpwb,EAAO6jB,QACKusa,UAExB,OADAgL,EAAMhkZ,OAAO,YAAag5Y,GACnBpwb,CACT,CAKO,SAAS,IAAMyiT,EAAMz5L,GAC1B,OAAO,SAAUhpH,GACf,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QAEf+kN,EAAS,CAAC,EAOd,OANA,UAAK65E,GAAM,SAAUlwD,EAAMh0I,GACzBqqH,EAAOrqH,GAAS,IAAKg0I,EAAMigP,IAC7B,IAEA5pQ,EAASgrQ,IAAW,CAAC,EAAG5qX,EAAMnlG,EAAQmlG,KAAM4/G,GAC5CwyN,EAAM5jc,MAAMoxO,GACL5oO,CACT,CACF,CAKO,SAAS,IAAW23e,GACzB,OAAO,SAAU33e,GACf,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACf+zd,EAAuBx8C,EAAMjC,cAAc,cAM/C,OAJA,WAAK,WAAc,UAAc,GAAIt1a,EAAQ8+a,aAAe,IAAI,GAAOg1C,GAAqB,IAAI,IAAO,SAAU10C,GAE/G20C,EAAqB5pD,WAAWiV,EAClC,IACOjjc,CACT,CACF,CAKO,SAAS,IAAYA,GAC1B,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfg0d,EAAQh0d,EAAQg0d,MAClBn8C,EAAc73a,EAAQ63a,YACpB76c,EAAQ66c,EAYZ,OAVI,UAASm8C,KAAU,UAAMn8C,KAIzB76c,IAHEqV,OAAOgpB,OAAO,IAAK24d,EAAO,CAAC,MAAO,MAAO,WAAY,cAAcz+b,MAAK,SAAUv4D,GACpF,QAAQ,UAAMA,EAChB,KAMFu6c,EAAMM,YAAc76c,EACbmf,CACT,CAIO,SAAS83e,IAAgB5mC,GAI9B,YAHuB,IAAnBA,IACFA,EAAiB,QAEZ,SAAUlxc,GACf,IAAIo7b,EAAQp7b,EAAOo7b,MAEfz+L,EADQ38P,EAAO6jB,QACM84O,WACrB1jP,EAAUkG,MAAMnH,KAAK2kP,GAAc,IAAIjtP,KAAI,SAAUrvB,GACvD,MAAiB,aAAbA,EAAIgH,KAA4B,CAAC,UAAW,KAC/B,aAAbhH,EAAIgH,KAA4B,CAAC,UAAW,KAC/B,cAAbhH,EAAIgH,KAA6B,CAAC,aAC/B,IACT,IAAG4H,QAAO,SAAUwV,GAClB,QAASA,CACX,IAOA,OANuB,IAAnBwU,EAAQ15B,QACV67c,EAAMz+L,WAAW,CACft1Q,KAAM6pd,EACNj4b,QAASA,IAGNjZ,CACT,CACF,CCpMO,IAAI+3e,IAAS,CAElBx3b,OAAQ,SCHV,IAAIy3b,IAAY,CAAC,EAMV,SAASC,IAAe13b,EAAQ23b,GACrCF,IAAUz3b,GAAU23b,CACtB,CAMO,SAASpwb,IAAUvH,GACxB,MAAO,CACL7/D,IAAK,SAAa6+B,EAAK9M,GACrB,OAAOg5E,KAAS,UAAKusZ,IAAUz3b,GAAShhC,KAAQ,UAAKy4d,IAAUD,IAAOx3b,QAAShhC,KAAQ,UAAKy4d,IAAU,SAAUz4d,IAAQA,EAAK9M,EAC/H,EAEJ,CCjBO,SAAS0le,IAAkB10P,EAAS20P,GACzC,IAAgB,IAAZ30P,EACF,MAAO,CACLnlI,QAAQ,GAIZ,IAAIA,GAAS,UAAImlI,EAAS,UACtBglF,GAAY,UAAIhlF,EAAS,aAI7B,OAHIglF,IAAcnqN,IAChBA,EAAS85X,GAEJ,CACL95X,OAAQA,EACRmqN,UAAWA,EAEf,CCdO,SAAS4vK,IAAgBv0e,EAAGy6G,GACjC,IAAIl3H,EAAOyc,EAAEzc,KACXqwZ,EAAS5zY,EAAE4zY,OACXC,EAAS7zY,EAAE6zY,OACXkxE,EAAa/kd,EAAE+kd,WACfyvB,EAAax0e,EAAEw0e,WACfpsB,EAAYpod,EAAEood,UACdqsB,EAAaz0e,EAAEy0e,WACbnF,EAAYtve,EAAEsve,UACd90X,EAAS,GAKb,GAJA80X,IAAa,UAAWA,GAAaA,EAAU/rf,EAAMk3H,GAAS60X,IAAc,GAI9D,UAAV70X,EACFD,GAAS,UAAc,CAACuqW,GAAcnxE,GAAS07F,GAAW,QACrD,GAAc,UAAV70X,EACTD,GAAS,UAAc,CAACg6X,GAAc5gG,GAAS07F,GAAW,QACrD,GAAc,SAAV70X,EACTD,GAAS,UAAc,CAAC4tW,GAAax0E,GAAS07F,GAAW,OACpD,CACL90X,GAAS,UAAc,CAACo5R,EAAQC,EAAQkxE,EAAYyvB,EAAYpsB,EAAWqsB,GAAanF,GAAW,GAEnG,IAAIxvd,EAAM,CAAC,IAAK,IAAK,QAAS,QAAS,OAAQ,SAAShyB,QAAQ2sH,GAC5Dx8H,EAAIu8H,EAAO16F,GAEf06F,EAAOx+H,OAAO8jC,EAAK,GAEnB06F,EAAOjqH,QAAQtS,EACjB,CACA,IAAIy2f,GAAgB,UAAKl6X,EAAOrvH,QAAO,SAAUlN,GAC/C,QAASA,CACX,KAMI02f,EAA4B,SAATpxf,GAAmB,CAACqwZ,EAAQC,GAAQ9zZ,SAAS20f,EAAczwe,KAAK,MAAQ,GAAKywe,EAAczwe,KAAK,KACvH,MAAO,CACLywe,cAAeA,EACfC,iBAAkBA,EAEtB,CAMO,SAASC,IAAmBF,EAAev5d,GAChD,GAAKA,EAEL,OAAO,WAEL,IADA,IAAI7/B,EAAO,GACFC,EAAK,EAAGA,EAAKC,UAAUC,OAAQF,IACtCD,EAAKC,GAAMC,UAAUD,GAEvB,IAAI2gB,EAAS,CAAC,EAMd,OALAw4e,EAAc1xf,SAAQ,SAAU/E,EAAG6hC,GACjC5jB,EAAOje,GAAK3C,EAAKwkC,EACnB,WAEO5jB,OAAO,GACPif,EAAKjf,EACd,CACF,CAKO,SAAS,IAASA,GACvB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfx8B,EAAOw8B,EAAQx8B,KACjBjI,EAAOykC,EAAQzkC,KACf8wV,EAAUrsT,EAAQqsT,QAClBwnE,EAAS7zX,EAAQ6zX,OACjBC,EAAS9zX,EAAQ8zX,OACjBkxE,EAAahlc,EAAQglc,WACrByvB,EAAaz0d,EAAQy0d,WACrBpsB,EAAYroc,EAAQqoc,UACpBysB,EAAgB90d,EAAQ80d,cACxBrtc,EAAQznB,EAAQynB,MAChBrJ,EAAQpe,EAAQoe,MAChBqra,EAAazpb,EAAQypb,WAEvB,IAAKp9H,EACH,OAAOlwU,EAET,IAAIyyB,EAAQy9S,EAAQz9S,MAClBtuC,EAAQ+rV,EAAQ/rV,MAChB6+B,EAAOktT,EAAQltT,KACfx4B,EAAQ0lV,EAAQ1lV,MAChBi5P,EAAUysF,EAAQzsF,QAEhB1lD,EAAWq9P,EAAM/zc,GAAMjI,GAAMyqD,SAAS,GAAG53C,OAAOylZ,EAAQ,KAAKzlZ,OAAO0lZ,IAQxE,IAAI,UAASllX,GACXo2b,EAAa9qR,EAAStrK,MAAMo2b,EAAYp2b,GAASsrK,EAAStrK,MAAMA,QAC3D,IAAI,UAAWA,GAAQ,CAC5B,IAAI5yC,EAAKw4f,IAAgBx0d,EAAS,SAChC20d,EAAgB34f,EAAG24f,cACnBC,EAAmB54f,EAAG44f,iBACxB16S,EAAStrK,MAAMgmd,EAAkBC,IAAmBF,EAAe/ld,GACrE,MACEo2b,GAAc9qR,EAAStrK,MAAMo2b,EAAYp2b,GAS3C,IAAI,UAAStuC,GACXm0f,EAAav6S,EAAS55M,MAAMm0f,EAAY,CAACn0f,IAAU45M,EAAS55M,MAAMA,QAC7D,IAAI,UAAWA,GAAQ,CAC5B,IAAIyR,EAAKyif,IAAgBx0d,EAAS,SAChC20d,EAAgB5if,EAAG4if,cACnBC,EAAmB7if,EAAG6if,iBACxB16S,EAAS55M,MAAMs0f,EAAkBC,IAAmBF,EAAer0f,GACrE,MACEm0f,GAAcv6S,EAAS55M,MAAMm0f,EAAYn0f,GAS3C,IAAI,UAAS6+B,GACXkpc,EAAYnuR,EAAS/6K,KAAKkpc,EAAWlpc,GAAQ+6K,EAAS/6K,KAAKA,QACtD,IAAI,UAAWA,GAAO,CAC3B,IAAIntB,EAAKwif,IAAgBx0d,EAAS,QAChC20d,EAAgB3if,EAAG2if,cACnBC,EAAmB5if,EAAG4if,iBACxB16S,EAAS/6K,KAAKy1d,EAAkBC,IAAmBF,EAAex1d,GACpE,MACEkpc,GAAanuR,EAAS/6K,KAAKkpc,EAAWlpc,GAOxC,IAAI,UAAWx4B,GAAQ,CACrB,IAAIwyB,EAAKq7d,IAAgBx0d,EAAS,SAChC20d,EAAgBx7d,EAAGw7d,cACnBC,EAAmBz7d,EAAGy7d,iBACxB16S,EAASvzM,MAAMiuf,EAAkBC,IAAmBF,EAAehuf,GACrE,MAAW,UAASA,IAClBuzM,EAASvzM,MAAMA,GAejB,IARsB,IAAlBmuf,EACF56S,EAAS0lD,SAAQ,IACP,UAAQk1P,IAClB56S,EAAS0lD,QAAQk1P,EAAc5we,KAAK,KAAM2we,IAAmBC,EAAel1P,KAKhE,IAAVn4M,EACFyyJ,EAASzyJ,OAAM,QACV,GAAIA,EAAO,CAChB,IAAIvsD,EAAWusD,EAAMvsD,SACnBu/H,EAAShzE,EAAMgzE,OACfj+H,GAAM,UAAOirD,EAAO,CAAC,WAAY,WACnCyyJ,EAASzyJ,MAAM,CACbgzE,OAAQA,GAAU,CAACq5R,GACnB54Z,SAAUA,EACVsB,IAAK4zf,IAAe5zf,IAExB,CAmBA,OAfI4hD,GACF87J,EAAS97J,MAAMA,GAKbqra,GACFvvQ,EAASuvQ,WAAWA,GAGtB,CAAC51D,EAAQC,GAAQ1oZ,QAAO,SAAUlN,GAChC,OAAOA,IAAM8me,CACf,IAAG/he,SAAQ,SAAU/E,GACnBq5c,EAAMrlM,OAAOh0Q,GAAG,EAClB,KACO,WAAS,UAAS,CAAC,EAAGie,GAAS,CAEpC8qM,IAAK,CACH/M,SAAUA,IAGhB,CCjNO,SAAS,IAAK/9L,GACnB,IAAI6jB,EAAU7jB,EAAO6jB,QACjByjB,EAAOzjB,EAAQyjB,KACjBowW,EAAS7zX,EAAQ6zX,OACjBC,EAAS9zX,EAAQ8zX,OACjB+/F,EAAc7zd,EAAQ6zd,YACtBp9d,EAASuJ,EAAQvJ,OACjBmpO,EAAU5/N,EAAQ4/N,QAClBkpN,EAAmB9ob,EAAQ8ob,iBACzB9sd,EAAKs4f,IAAkB10P,EAAS,CAACi0J,EAAQC,EAAQ+/F,IACnDp5X,EAASz+H,EAAGy+H,OACZmqN,EAAY5oV,EAAG4oV,UAEjB,OAAOnhS,EAAO,IAASssc,IAAW,CAAC,EAAG5ze,EAAQ,CAC5C6jB,QAAS,CACPx8B,KAAM,OACNwhe,WAAY6uB,EACZiB,cAAer6X,EACf4xN,SAAS,UAAQ,CACf/rV,MAAOm2B,EAAS,SAAW,OAC3BmpO,QAASglF,GACRnhS,GACHloD,KAAM,CACJutd,iBAAkBA,OAGlB3sc,CACR,CC3BO,SAAS,IAAKA,GACnB,IAAI6jB,EAAU7jB,EAAO6jB,QACjB4W,EAAO5W,EAAQ4W,KACjBi9W,EAAS7zX,EAAQ6zX,OACjBC,EAAS9zX,EAAQ8zX,OACjB+/F,EAAc7zd,EAAQ6zd,YACtBj0P,EAAU5/N,EAAQ4/N,QAClBkpN,EAAmB9ob,EAAQ8ob,iBACzB9sd,EAAKs4f,IAAkB10P,EAAS,CAACi0J,EAAQC,EAAQ+/F,IACnDp5X,EAASz+H,EAAGy+H,OACZmqN,EAAY5oV,EAAG4oV,UACjB,OAAOhuS,EAAO,IAASm5c,IAAW,CAAC,EAAG5ze,EAAQ,CAC5C6jB,QAAS,CACPx8B,KAAM,OACNwhe,WAAY6uB,EACZiB,cAAer6X,EACf4xN,SAAS,UAAS,CAChBzsF,QAASglF,GACRhuS,GACHr7C,KAAM,CACJutd,iBAAkBA,OAGlB3sc,CACR,CCuBO,SAAS,IAASA,GACvB,IAAI6jB,EAAU7jB,EAAO6jB,QACjB6zX,EAAS7zX,EAAQ6zX,OACnBC,EAAS9zX,EAAQ8zX,OACjBz2Z,EAAW2iC,EAAQ3iC,SACnBw2f,EAAc7zd,EAAQ6zd,YACtBj0P,EAAU5/N,EAAQ4/N,QAClB61J,EAAiBz1X,EAAQy1X,eACzBD,EAAiBx1X,EAAQw1X,eACzBu/F,EAAmB/0d,EAAQ+0d,iBAC3B1/F,EAAer1X,EAAQq1X,aACvBD,EAAkBp1X,EAAQo1X,gBAC1B0zD,EAAmB9ob,EAAQ8ob,iBACzB9sd,EAAKs4f,IAAkB10P,EAAS,CAACi0J,EAAQC,EAAQ+/F,IACnDp5X,EAASz+H,EAAGy+H,OACZmqN,EAAY5oV,EAAG4oV,UAEb39H,GAAO5pN,EAAW,IAAS0yf,IAAW,CAAC,EAAG5ze,EAAQ,CACpD6jB,QAAS,CACPx8B,KAAM,WACNwhe,WAAY6uB,EACZiB,cAAer6X,EACf4xN,SAAS,UAAS,CAChBzsF,QAASglF,GACRvnV,GACH9B,KAAM,CACJ85Z,aAAcA,EACdD,gBAAiBA,EACjBK,eAAgBA,EAChBD,eAAgBA,EAChBpwV,WAAY2vb,EACZjsC,iBAAkBA,OAGlB3sc,GAAQ8qM,IACd,OAhFF,SAAsB9qM,GACpB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACjBinL,EAAM9qM,EAAO8qM,IACX4sS,EAAc7zd,EAAQ6zd,YACxBppf,EAAUu1B,EAAQv1B,QAClBm7V,EAAU5lU,EAAQ4lU,QAClBqvD,EAAcj1X,EAAQi1X,YACtB+/F,EAAah1d,EAAQg1d,WACrBC,EAAaj1d,EAAQi1d,WACrB9sZ,EAAQnoE,EAAQmoE,MAIdssK,EAAS,GA6Bb,OA5BIo/O,IAEEppf,GACFgqQ,EAAOr5Q,KAAK,CACVoI,KAAM,QACN2xZ,QAAS8/F,GAAcpB,EACvB5+F,YAAaA,IAIbrvD,GACFnxF,EAAOr5Q,KAAK,CACVoI,KAAM,QACNyxZ,YAAaA,KAIfxgJ,EAAO/4Q,SAAWurN,aAAiC,EAASA,EAAI/M,YAC1D+M,aAAiC,EAASA,EAAI/M,UACpDu6D,OAAOA,IAGN,UAAMugP,IACTz9C,EAAMpvW,MAAM4nZ,IAAW,CAAC,GAAG,UAAS5nZ,GAASA,EAAQ+Z,IAAS/Z,GAAQ,CAEpEutT,iBAAkBs/F,KAGf74e,CACT,CAoCS+4e,EAAa,WAAS,UAAS,CAAC,EAAG/4e,GAAS,CACjD8qM,IAAKA,IAET,CCrFO,SAAS,IAAK9qM,GACnB,IAAI6jB,EAAU7jB,EAAO6jB,QACjBjP,EAAOiP,EAAQjP,KACjBoke,EAAWn1d,EAAQm1d,SACnBthG,EAAS7zX,EAAQ6zX,OACjBC,EAAS9zX,EAAQ8zX,OACjB+/F,EAAc7zd,EAAQ6zd,YACtBp9d,EAASuJ,EAAQvJ,OACjB++b,EAAex1b,EAAQw1b,aACvB51N,EAAU5/N,EAAQ4/N,QAClBkpN,EAAmB9ob,EAAQ8ob,iBACzB9sd,EAAKs4f,IAAkB10P,EAAS,CAACi0J,EAAQC,EAAQ+/F,IACnDp5X,EAASz+H,EAAGy+H,OACZmqN,EAAY5oV,EAAG4oV,UAEjB,OAAO7zT,EAAO,IAASg/d,IAAW,CAAC,EAAG5ze,EAAQ,CAC5C6jB,QAAS,CACPx8B,KAAM,OACNwhe,WAAY6uB,EACZiB,cAAer6X,EACf4xN,SAAS,UAAQ,CACf/rV,MAAO60f,IAAa1+d,EAAS,SAAW,QACxCmpO,QAASglF,GACR7zT,GACHx1B,KAAM,CACJi6d,aAAcA,EACd1M,iBAAkBA,OAGlB3sc,CACR,CC9BO,SAAS,IAAMA,GACpB,IAAI6jB,EAAU7jB,EAAO6jB,QACjBn6B,EAAQm6B,EAAQn6B,MAClBguZ,EAAS7zX,EAAQ6zX,OACjBC,EAAS9zX,EAAQ8zX,OACjB+/F,EAAc7zd,EAAQ6zd,YACtBxrB,EAAYroc,EAAQqoc,UACpBosB,EAAaz0d,EAAQy0d,WACrB70P,EAAU5/N,EAAQ4/N,QAClBkpN,EAAmB9ob,EAAQ8ob,iBACzB9sd,EAAKs4f,IAAkB10P,EAAS,CAACi0J,EAAQC,EAAQ+/F,EAAaxrB,EAAWosB,IAC3Eh6X,EAASz+H,EAAGy+H,OACZmqN,EAAY5oV,EAAG4oV,UACjB,OAAO/+U,EAAQ,IAASkqf,IAAW,CAAC,EAAG5ze,EAAQ,CAC7C6jB,QAAS,CACPx8B,KAAM,QACNwhe,WAAY6uB,EACZY,WAAYA,EACZK,cAAer6X,EACf4xN,SAAS,UAAS,CAChBzsF,QAASglF,GACR/+U,GACHtK,KAAM,CACJutd,iBAAkBA,OAGlB3sc,CACR,CC3BO,SAAS,IAAQA,GACtB,IAAI6jB,EAAU7jB,EAAO6jB,QACjBy6K,EAAUz6K,EAAQy6K,QACpBo5M,EAAS7zX,EAAQ6zX,OACjBC,EAAS9zX,EAAQ8zX,OACjB+/F,EAAc7zd,EAAQ6zd,YACtBj0P,EAAU5/N,EAAQ4/N,QAClBkpN,EAAmB9ob,EAAQ8ob,iBACzB9sd,EAAKs4f,IAAkB10P,EAAS,CAACi0J,EAAQC,EAAQ+/F,IACnDp5X,EAASz+H,EAAGy+H,OACZmqN,EAAY5oV,EAAG4oV,UACjB,OAAOnqI,EAAU,IAASs1S,IAAW,CAAC,EAAG5ze,EAAQ,CAC/C6jB,QAAS,CACPx8B,KAAM,UACNwhe,WAAY6uB,EACZiB,cAAer6X,EACf4xN,SAAS,UAAS,CAChBzsF,QAASglF,GACRnqI,GACHl/M,KAAM,CACJutd,iBAAkBA,OAGlB3sc,CACR,CCxBO,SAAS,IAAOA,GACrB,IAAI6jB,EAAU7jB,EAAO6jB,QACjBk/F,EAASl/F,EAAQk/F,OACnB20R,EAAS7zX,EAAQ6zX,OACjBC,EAAS9zX,EAAQ8zX,OACjB+/F,EAAc7zd,EAAQ6zd,YACtBj0P,EAAU5/N,EAAQ4/N,QAClBkpN,EAAmB9ob,EAAQ8ob,iBACzB9sd,EAAKs4f,IAAkB10P,EAAS,CAACi0J,EAAQC,EAAQ+/F,IACnDp5X,EAASz+H,EAAGy+H,OACZmqN,EAAY5oV,EAAG4oV,UACjB,OAAO1lN,EAAS,IAAS6wX,IAAW,CAAC,EAAG5ze,EAAQ,CAC9C6jB,QAAS,CACPx8B,KAAM,SACNwhe,WAAY6uB,EACZiB,cAAer6X,EACf4xN,SAAS,UAAS,CAChBzsF,QAASglF,GACR1lN,GACH3jI,KAAM,CACJutd,iBAAkBA,OAGlB3sc,CACR,kBC1BIi5e,IAAwB,yBAEjBC,IAAyB,CAAC,UAAW,gBAAiB,WAAY,aAAc,kBAAmB,sBAAuB,eAIjIC,IAAoB,SAAU/4f,GAEhC,SAAS+4f,EAAKzxf,EAAWm8B,GACvB,IAAI1kC,EAAQiB,EAAOE,KAAK5B,OAASA,KAKjC,OAJAS,EAAMuI,UAAiC,iBAAdA,EAAyB2B,SAAS8C,eAAezE,GAAaA,EACvFvI,EAAM0kC,QAAU+vd,IAAW,CAAC,EAAGz0f,EAAMi6f,oBAAqBv1d,GAC1D1kC,EAAMk6f,WACNl6f,EAAM6xb,aACC7xb,CACT,CAySA,OAjTA,UAAUg6f,EAAM/4f,GAahB+4f,EAAKC,kBAAoB,WACvB,MAAO,CACL/hQ,SAAU,SACViiQ,MAAO,CACLr2R,MAAM,EACN33K,MAAO,CACL4pX,YAAY,EACZmF,SAAU,CACRhza,KAAM,eACNhH,IAAK,CACHq/a,OAAQ,MAKhBm4E,MAAO,CACL50R,MAAM,EACN33K,MAAO,CACL+uX,UAAU,EACVnF,YAAY,IAGhB9wa,WAAW,EAEf,EAIA+0f,EAAKv6f,UAAUy6f,SAAW,WACxB,IAAIx5f,EAAKnB,KAAKmlC,QACZp3B,EAAQ5M,EAAG4M,MACXC,EAAS7M,EAAG6M,OACZ82c,EAAsB3jd,EAAG2jd,oBAC3B9kd,KAAK08c,MAAQ,IAAI,KAAM,WAAS,WAAS,WAAS,UAAS,CACzD1zc,UAAWhJ,KAAKgJ,UAChB4vZ,SAAS,GACR54Z,KAAK24Z,aAAa5qZ,EAAOC,IAAU,CACpC42c,cAAc,IACZ,IAAK5kd,KAAKmlC,QAASq1d,MAA0B,CAC/C11C,oBAAqBA,KAGvB9kd,KAAKgJ,UAAUshD,aAAaiwc,IAAuB,SACrD,EAMAE,EAAKv6f,UAAUy4Z,aAAe,SAAU5qZ,EAAOC,GAC7C,IAAI6sf,EAAY1F,IAAiBn1f,KAAKgJ,WACtC,MAAO,CACL+E,MAAOA,GAAS8sf,EAAU9sf,OAAS,IACnCC,OAAQA,GAAU6sf,EAAU7sf,QAAU,IAE1C,EAIAysf,EAAKv6f,UAAUoyb,WAAa,WAC1B,IAAI7xb,EAAQT,KACRA,KAAK08c,OACP18c,KAAK08c,MAAMv8c,GAAG,KAAK,SAAU+D,IACvBA,aAA6B,EAASA,EAAEyE,OAC1ClI,EAAMD,KAAK0D,EAAEyE,KAAMzE,EAEvB,GAEJ,EAKAu2f,EAAKv6f,UAAUw6f,kBAAoB,WACjC,OAAOD,EAAKC,mBACd,EAIAD,EAAKv6f,UAAU8qE,OAAS,WAEtBhrE,KAAK08c,MAAMntc,QAMXvP,KAAK08c,MAAMv3a,QAAU,CACnBzf,KAAM,GACN5O,SAAS,GAEX9W,KAAK08c,MAAMlnM,MAAQ,GAEnBx1Q,KAAK86f,cAEL96f,KAAK08c,MAAM1xY,SAEXhrE,KAAK+6f,gBACP,EAKAN,EAAKv6f,UAAUsF,OAAS,SAAU2/B,GAChCnlC,KAAKg7f,aAAa71d,GAClBnlC,KAAKgrE,QACP,EAKAyvb,EAAKv6f,UAAU86f,aAAe,SAAU71d,GACtCnlC,KAAKmlC,QAAU+vd,IAAW,CAAC,EAAGl1f,KAAKmlC,QAASA,EAC9C,EAOAs1d,EAAKv6f,UAAUk/D,SAAW,SAAUz2D,EAAMs5B,EAAWw3B,QACpC,IAAXA,IACFA,GAAS,GAEX,IAAI94B,EAAW20d,IAA0Bt1f,KAAK08c,QAC9C,UAAK/7a,GAAU,SAAU8mD,GACnBxlD,EAAUwlD,EAAIw4E,YAChBx4E,EAAIroB,SAASz2D,EAAM8wD,EAEvB,GACF,EAIAghc,EAAKv6f,UAAUgqd,UAAY,WACzB,IAAIvpb,EAAW20d,IAA0Bt1f,KAAK08c,OAC1Cu+C,EAAe,GAanB,OAZA,UAAKt6d,GAAU,SAAUhxB,GACvB,IAAI+V,EAAO/V,EAAQswJ,UACfogR,EAAS1wa,EAAQu6c,aACrB,UAAK7pC,GAAQ,SAAU98X,GACrB03c,EAAa16f,KAAK,CAChBmlB,KAAMA,EACN69B,MAAOA,EACP87J,SAAU1vM,EAAQ0vM,SAClB1vM,QAASA,GAEb,GACF,IACOsrf,CACT,EAMAR,EAAKv6f,UAAUw/c,WAAa,SAAUh6b,GAEpC1lB,KAAKwF,OAAO,CACVkgB,KAAMA,GAIV,EAMA+0e,EAAKv6f,UAAU+N,WAAa,SAAUF,EAAOC,GAC3ChO,KAAK08c,MAAMzuc,WAAWF,EAAOC,EAC/B,EAIAysf,EAAKv6f,UAAUg7f,eAAiB,SAAUj3C,EAAa7xM,GACrDA,EAAOA,GAAcpyQ,KAAK08c,MAC1B,IAAIy+C,GAAW,UAAc,GAAIl3C,GAAa,GAC1C12X,EAAa6kL,EAAKqoM,cAAc,cAChChzc,EAAU8lF,EAAWu0W,gBAAgB9wa,KAAI,SAAU+wa,GACrD,OAAOA,EAAG/tV,KACZ,IACAzmB,EAAWh+E,OAAM,GAYjB,IAXA,IAAIyI,EAAU,SAAiB9W,GAC7B,IAAIouc,EAAa7nc,EAAQvG,GACrBg/E,EAAYi7a,EAASj7a,WAAU,SAAUzoE,GAC3C,OAAOA,EAAK/D,IAAM+D,EAAK/D,KAAO47b,EAAW57b,EAC3C,KACmB,IAAfwsE,IACFovX,EAAa4lD,IAAW,CAAC,EAAG5lD,EAAY6rD,EAASj7a,IACjDi7a,EAAS/5f,OAAO8+E,EAAW,IAE7BqN,EAAW+hX,WAAWA,EACxB,EACSpuc,EAAI,EAAGA,EAAIuG,EAAQ5G,OAAQK,IAClC8W,EAAQ9W,GAEVi6f,EAAS/yf,SAAQ,SAAUknc,GACzB,OAAO/hX,EAAW+hX,WAAWA,EAC/B,IACAl9L,EAAKpnM,QAAO,EACd,EAIAyvb,EAAKv6f,UAAUk7f,kBAAoB,SAAUn3C,GAC3C,IAAI12X,EAAavtF,KAAK08c,MAAMjC,cAAc,cACtChzc,EAAU8lF,EAAWu0W,gBAAgB9wa,KAAI,SAAU+wa,GACrD,OAAOA,EAAG/tV,KACZ,IACAzmB,EAAWh+E,OAAM,GASjB,IARA,IAAI8rf,EAAU,SAAiBn6f,GAC7B,IAAIouc,EAAa7nc,EAAQvG,GACpB+id,EAAYzwc,MAAK,SAAUiE,GAC9B,OAAOA,EAAK/D,IAAM+D,EAAK/D,KAAO47b,EAAW57b,EAC3C,KACE65E,EAAW+hX,WAAWA,EAE1B,EACSpuc,EAAI,EAAGA,EAAIuG,EAAQ5G,OAAQK,IAClCm6f,EAAQn6f,GAEVlB,KAAK08c,MAAM1xY,QAAO,EACpB,EAIAyvb,EAAKv6f,UAAUkC,QAAU,WAEvBpC,KAAKs7f,mBAELt7f,KAAK08c,MAAMt6c,UAEXpC,KAAKsB,MACLtB,KAAKgJ,UAAUwhD,gBAAgB+vc,IACjC,EAIAE,EAAKv6f,UAAU46f,YAAc,WAC3B,IAAIS,EAAUv7f,KAAKw7f,mBACfr6f,EAAKnB,KAAKmlC,QACZi1C,EAAUj5E,EAAGi5E,QACb2jY,EAAgB58c,EAAG48c,cAErB/9c,KAAK08c,MAAMtiY,QAAUA,EAErBp6E,KAAK08c,MAAMqB,cAAgBA,EAE3Bw9C,EAAQ,CACN7+C,MAAO18c,KAAK08c,MACZv3a,QAASnlC,KAAKmlC,SAElB,EAIAs1d,EAAKv6f,UAAUu7f,cAAgB,WAC7Bz7f,KAAK08c,MAAMwI,UACb,EAIAu1C,EAAKv6f,UAAU66f,eAAiB,WAC9B,IAAIt6f,EAAQT,KACZ,IAAIA,KAAK4pD,OAAT,CAGA,IAAIzoD,EAAKnB,KAAKmlC,QAAQyzX,cACH,IAAPz3Z,GAAuBA,KAEjCnB,KAAK4pD,QAAS,UAAK5pD,KAAKgJ,WAAW,WAEjC,IAAI7H,EAAKg0f,IAAiB10f,EAAMuI,WAC9B+E,EAAQ5M,EAAG4M,MACXC,EAAS7M,EAAG6M,OAEVD,IAAUtN,EAAMi8c,MAAM3uc,OAASC,IAAWvN,EAAMi8c,MAAM1uc,QACxDvN,EAAMg7f,eAEV,IAbF,CAeF,EAIAhB,EAAKv6f,UAAUo7f,iBAAmB,WAC5Bt7f,KAAK4pD,SACP5pD,KAAK4pD,SACL5pD,KAAK4pD,YAASnzB,EAElB,EACOgke,CACT,CAnTwB,CAmTtB,OCrTK,SAAS1hc,IAAQrzC,EAAMu2K,EAASm+T,EAAYrxR,GAEjD,IAAI2yR,GAAS,UAAOh2e,GAAM,SAAUsL,EAAKmnM,GACvC,IAAIwjS,EAAaxjS,EAAMiiS,GACnBhue,EAAM4E,EAAI8Q,IAAI65d,GAAc3qe,EAAIhvB,IAAI25f,GAAc,EAClD1pf,EAAIkmN,EAAMl8B,GAGd,OAFA7vK,EAAMope,IAAavjf,GAAKma,EAAMna,EAAIma,EAClC4E,EAAI9uB,IAAIy5f,EAAYvve,GACb4E,CACT,GAAG,IAAIjS,KAEP,OAAO,UAAI2G,GAAM,SAAUyyM,GACzB,IAAIh3N,EACA8Q,EAAIkmN,EAAMl8B,GACV0/T,EAAaxjS,EAAMiiS,GACnBwB,EAAapG,IAAavjf,IAAiC,IAA3Bypf,EAAO15f,IAAI25f,GAAoB1pf,EAAIypf,EAAO15f,IAAI25f,GAAc,EAChG,OAAO,WAAS,UAAS,CAAC,EAAGxjS,KAASh3N,EAAK,CAAC,GAAM4nO,GAAM6yR,EAAYz6f,GACtE,GACF,CAoCO,SAAS06f,IAAyBn2e,EAAMuzY,EAAQmhG,EAAY0B,EAASC,GAC1E,OAAQA,EAAmBhjc,IAAQrzC,EAAMuzY,EAAQmhG,EAAY0B,GAAzCp2e,CACtB,CCxDA,SAAS,IAASpE,GAChB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfzf,EAAOyf,EAAQzf,KACjBquB,EAAQ5O,EAAQ4O,MAChBykY,EAAYrzY,EAAQqzY,UACpBzgL,EAAY5yN,EAAQ4yN,UACpBikQ,EAAe72d,EAAQn6B,MACvBixf,EAAc92d,EAAQyjB,KACtBowc,EAAc7zd,EAAQ6zd,YACpBkD,EAAaF,aAAmD,EAASA,EAAaz4c,MACtF44c,EAAYF,aAAiD,EAASA,EAAY14c,MACtFm5Z,EAAMh3b,KAAKA,GAEX,IAAI+5F,EAAUy1Y,IAAW,CAAC,EAAG5ze,EAAQ,CACnC6jB,QAAS,CACPy0d,WAAYZ,EACZ9ie,KAAM,CACJ6d,MAAOA,EACPjoC,MAAO0sa,EACP/ya,MAAOsyP,GAIT/sP,MAAOgxf,IAAgB,UAAS,CAC9Bjod,MAAOA,EACPtuC,MAAO,UACNu2f,GAEHpzc,KAAMqzc,IAAe,UAAS,CAC5Blod,MAAOA,GACNkod,GAEHrvc,WAAOn2B,KAGP4wL,EAAS6tS,IAAW,CAAC,EAAGz1Y,EAAS,CACnCt6E,QAAS,CACP4/N,SAAS,EACTxhN,MAAO24c,KAGPE,EAAalH,IAAW,CAAC,EAAGz1Y,EAAS,CACvCt6E,QAAS,CACP4/N,SAAS,EACTxhN,MAAO44c,KAMX,OAHA,IAAK18Y,GACL,IAAM4nG,GACN,IAAK+0S,GACE96e,CACT,CAKO,SAASgpH,IAAKhpH,GACnB,IAAIngB,EAAI+V,EACJiuB,EAAU7jB,EAAO6jB,QACjBy1d,EAAQz1d,EAAQy1d,MAClBzB,EAAQh0d,EAAQg0d,MAChBngG,EAAS7zX,EAAQ6zX,OACjBC,EAAS9zX,EAAQ8zX,OACjBvzY,EAAOyf,EAAQzf,KACjB,OAAO6qN,IAAK,MAAOpvO,EAAK,CAAC,GAAM63Z,GAAU4hG,EAAOz5f,EAAG83Z,GAAUkgG,EAAOh4f,KAAM+V,EAAK,CAAC,GAAM8hZ,GAAU,CAC9FrwZ,KAAM,OACLuO,EAAG+hZ,GAAUi7F,IAAkBxue,EAAMuzY,GAAS/hZ,IAF1Cq5N,CAEgDjvN,EACzD,CAKA,SAAS28P,IAAW38P,GAClB,IAAIo7b,EAAQp7b,EAAOo7b,MAEfz7N,EADQ3/N,EAAO6jB,QACG87M,QACtB,GAAIA,EAAS,CACX,IAAI7iO,EAAI6iO,GACH,UAAQ7iO,KACXA,EAAI,CAACA,IAEP,IAAImc,EAAUnc,EAAE4S,KAAI,SAAUjL,GAC5B,MAAO,CAAC,UAAWA,EACrB,IACA22b,EAAMz+L,WAAW,CACft1Q,KAAM,OACN4xB,QAASA,GAEb,CACA,OAAOjZ,CACT,CAKO,SAAS,IAAKA,GACnB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfy1d,EAAQz1d,EAAQy1d,MAClBzB,EAAQh0d,EAAQg0d,MAChBngG,EAAS7zX,EAAQ6zX,OACjBC,EAAS9zX,EAAQ8zX,OAYnB,OAVc,IAAV2hG,EACFl+C,EAAM7oM,KAAKmlJ,GAAQ,GAEnB0jD,EAAM7oM,KAAKmlJ,EAAQ4hG,IAEP,IAAVzB,EACFz8C,EAAM7oM,KAAKolJ,GAAQ,GAEnByjD,EAAM7oM,KAAKolJ,EAAQkgG,GAEd73e,CACT,CAKO,SAAS,IAAOA,GACrB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfkyO,EAASlyO,EAAQkyO,OACnB2hP,EAAc7zd,EAAQ6zd,YAMxB,OALI3hP,GAAU2hP,EACZt8C,EAAMrlM,OAAO2hP,EAAa3hP,IACN,IAAXA,GACTqlM,EAAMrlM,QAAO,GAER/1P,CACT,CAKA,SAASsrC,IAAMtrC,GACb,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfynB,EAAQznB,EAAQynB,MAClBqsW,EAAS9zX,EAAQ8zX,OACfojG,EAAejH,IAAa14C,EAAO,QAEvC,GAAK9vZ,EAEE,CACL,IAAIvsD,EAAWusD,EAAMvsD,SACnBsB,GAAM,UAAOirD,EAAO,CAAC,aACvByvc,EAAazvc,MAAM,CACjBgzE,OAAQ,CAACq5R,GACT54Z,SAAUA,EACVsB,KAAK,UAAS,CACZmnH,OAAQ,CAAC,CACPngH,KAAM,iBACL,CACDA,KAAM,wBACL,CACDA,KAAM,yBACL,CACDA,KAAM,gBACNhH,IAAK,CACH84B,OAAQ,WAGX86d,IAAe5zf,KAEtB,MAtBE06f,EAAazvc,OAAM,GAuBrB,OAAOtrC,CACT,CAKO,SAAS,IAAOA,GACrB,IAAIo7b,EAAQp7b,EAAOo7b,MAQnB,OAPYp7b,EAAO6jB,QACG4lU,UAEpB,UAAK2xG,EAAMt9P,YAAY,SAAU5qK,GAC/BA,EAAEolO,OAAO,QACX,IAEKt4P,CACT,CAMO,SAASi6e,IAAQj6e,GAEtB,OAAOivN,IAAK,IAAUjmG,IAAM,IAAQ,IAAO2zI,IAAY,IAAM,IAAQ,IAASrxN,IAAO,IAAQ,IAAW,IAAalnD,IAAW,MAAc,IAAvI6qO,CAAoJjvN,EAC7J,CC9LA,SAAS,IAASA,GAChB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfzf,EAAOyf,EAAQzf,KACjBysa,EAAYhtZ,EAAQgtZ,UACpBmqE,EAAYn3d,EAAQm3d,UACpBvod,EAAQ5O,EAAQ4O,MAChBiod,EAAe72d,EAAQn6B,MACvBuxf,EAAcp3d,EAAQjP,KACtB6le,EAAY52d,EAAQ42d,UACpB/iG,EAAS7zX,EAAQ6zX,OACjBC,EAAS9zX,EAAQ8zX,OACjBl0J,EAAU5/N,EAAQ4/N,QAClBi0P,EAAc7zd,EAAQ6zd,YACtBtvB,EAAcvkc,EAAQukc,YACpBwyB,EAAaF,aAAmD,EAASA,EAAaz4c,MACtFi5c,EAAYX,IAAyBn2e,EAAMuzY,EAAQD,EAAQC,EAAQ8iG,GACvEr/C,EAAMh3b,KAAK82e,GAEX,IAAIC,EAAiBV,GAAY,UAAS,CACxChyK,UAAW,SAAmB5xH,GAC5B,MAAO,CACLl2N,KAAMk2N,EAAM6gS,IAAgB7gS,EAAM6gM,GAClC72Z,OAAgC,IAAxB8f,OAAOk2M,EAAM8gM,KAAgB7wY,QAAQ,GAAK,IAEtD,GACC28O,GAAWA,EACVtlJ,EAAUy1Y,IAAW,CAAC,EAAG5ze,EAAQ,CACnC6jB,QAAS,CACPyjB,KAAM,CACJ7U,MAAOA,EACPjoC,MAAOqmb,EACP1sb,MAAO62f,GAETtxf,MAAOgxf,IAAgB,UAAS,CAC9Bjod,MAAOA,GACNiod,GACHj3P,QAAS03P,EAET7vc,WAAOn2B,EACP/1B,KAAM,CACJgpe,YAAaA,MAKfgzB,EAAa,CACfhgD,MAAOA,EACPv3a,QAAS+vd,IAAW,CAClBh/d,KAAM,CACJoO,KAAM,KAEP,UAAKa,EAAS,CAAC,UAAW,CAG3BjP,KAAMqme,IAAe,UAAS,CAC5Bxod,MAAOA,GACNwod,GACH/uB,UAAWwrB,EACXz1c,MAAOg5c,aAAiD,EAASA,EAAYh5c,MAC7EwhN,SAAS,EAETn4M,WAAOn2B,EACP/1B,KAAM,CACJgpe,YAAaA,MAIfizB,EAAczH,IAAW,CAAC,EAAGz1Y,EAAS,CACxCt6E,QAAS,CACP4/N,SAAS,EACTxhN,MAAO24c,KAOX,OAHA,IAAKz8Y,GACL,IAAKi9Y,GACL,IAAMC,GACCr7e,CACT,CAKA,SAAS,IAAMA,GACb,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfynB,EAAQznB,EAAQynB,MAClBqsW,EAAS9zX,EAAQ8zX,OACf2jG,EAAexH,IAAa14C,EAAO,QAEvC,GAAK9vZ,EAEE,CACL,IAAIvsD,EAAWusD,EAAMvsD,SACnBsB,GAAM,UAAOirD,EAAO,CAAC,aACvBgwc,EAAahwc,MAAM,CACjBgzE,OAAQ,CAACq5R,GACT54Z,SAAUA,EACVsB,KAAK,UAAS,CACZmnH,OAAQ,CAAC,CACPngH,KAAM,iBACL,CACDA,KAAM,wBACL,CACDA,KAAM,yBACL,CACDA,KAAM,gBACNhH,IAAK,CACH84B,OAAQ,WAGX86d,IAAe5zf,KAEtB,MAtBEi7f,EAAahwc,OAAM,GAuBrB,OAAOtrC,CACT,CAKA,SAAS,IAAOA,GACd,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACf4lU,EAAU5lU,EAAQ4lU,QACpBgxJ,EAAY52d,EAAQ42d,UACpB/C,EAAc7zd,EAAQ6zd,YAMxB,OALK+C,GAAahxJ,IAAYiuJ,IAC5B,UAAKt8C,EAAMt9P,YAAY,SAAU5qK,GAC/BA,EAAEolO,OAAO,QACX,IAEKt4P,CACT,CAMO,SAAS,IAAQA,GAEtB,OAAOivN,IAAK,IAAO,IAAQ,aAAc6oR,IAAgB,QAAS,IAAU9uX,IAAM,IAAQ,IAAM,IAAQ,IAAS,IAAO,IAAQ,MAAc,IAAa5kI,IAAW,IAA/J6qO,CAA4KjvN,EACrL,CCrJO,IAAI,IAAkB4ze,IAAW,CAAC,EAAGuF,IAAKC,oBAAqB,CACpE31P,QAAS,CACPktB,QAAQ,EACR08K,aAAa,EACbD,gBAAgB,EAChBnf,WAAY,CACV5mb,KAAM,MAGVoiW,SAAS,EAET70U,KAAM,CAAC,EACPmhP,OAAQ,CACNlsN,SAAU,WACVo+D,MAAO,CAAC,KCdR,IAAoB,SAAU7nH,GAEhC,SAAS+ne,IACP,IAAIhpe,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAGhE,OADAS,EAAMkI,KAAO,OACNlI,CACT,CAyCA,OA/CA,UAAUgpe,EAAM/ne,GAWhB+ne,EAAKixB,kBAAoB,WACvB,OAAO,GACT,EAIAjxB,EAAKvpe,UAAUw6f,kBAAoB,WACjC,OAAOjxB,EAAKixB,mBACd,EAKAjxB,EAAKvpe,UAAUw/c,WAAa,SAAUh6b,GACpC1lB,KAAKg7f,aAAa,CAChBt1e,KAAMA,IAER,IAAIvkB,EAAKnB,KAAKmlC,QACZ42d,EAAY56f,EAAG46f,UACf/iG,EAAS73Z,EAAG63Z,OACZC,EAAS93Z,EAAG83Z,OAId3uR,IAAK,CACHoyU,MAJO18c,KACI08c,MAIXv3a,QALOnlC,KAEMmlC,UAKfnlC,KAAK08c,MAAMgD,WAAWm8C,IAAyBn2e,EAAMuzY,EAAQD,EAAQC,EAAQ8iG,GAC/E,EAIAtyB,EAAKvpe,UAAUs7f,iBAAmB,WAChC,OAAO,GACT,EACO/xB,CACT,CAjDwB,CAiDtBgxB,KC3CSoC,IAAuB,CAChCzib,QAAS,CAAC,EAAG,IACbv5D,KAAM,QACN43Z,UAAW,CACT9wW,QAAS,CACP18D,EAAG,EACHC,EAAG,EACH4V,SAAU,GACV86B,KAAM,UACN7vC,OAAQ,YAGZ0lG,YAAa,CACX9pC,QAAS,CACP/rB,KAAM,UACNz6B,OAAQ,UACRpV,OAAQ,WAEVwqH,OAAQ,CACN36E,KAAM,aAOR,IAA4B,SAAUl6C,GAExC,SAASsrf,IACP,IAAIvsf,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAKhE,OAJAS,EAAMwsf,YAAc,KACpBxsf,EAAMysf,WAAY,UAAS,CACzBjrf,KAAM,UACL46f,KACIp8f,CACT,CAwGA,OAhHA,UAAUusf,EAActrf,GAYxBsrf,EAAa9sf,UAAUitf,aAAe,WACpC,IAAI/6O,EAAOpyQ,KAAKmzB,QAAQi/O,KACpB86O,GAAY,UAAI96O,EAAM,CAAC,eAAgB,gBAAiB,MAAO,iBACnE,OAAO8iP,IAAWl1f,KAAKktf,UAAWA,EAAWltf,KAAK2B,IACpD,EAIAqrf,EAAa9sf,UAAUktf,WAAa,WAClC,IAAI5gZ,EAASxsG,KAAKmtf,eACdz7e,EAAQ1R,KAAKmzB,QAAQi/O,KAAK0rM,gBAAgBrsc,SAAS,CACrDxP,KAAMuqG,EAAOvqG,OAEXk2a,EAAYn4a,KAAK88f,SAASprf,GAC9B1R,KAAK6lb,eAAen0a,EAAOyma,EAAUloa,WACrCjQ,KAAKitf,YAAcv7e,CACrB,EAIAs7e,EAAa9sf,UAAU48f,SAAW,SAAUprf,GAC1C,IAAIvQ,EACAqrG,EAASxsG,KAAKmtf,eAElB,OAAOz7e,EAAML,SAAS,CACpB1I,KAAM,OACN1G,KAAM,cACNqE,OAAO,UAAS,CACdua,KAAM2rF,EAAO3rF,MACgB,QAA3B1f,EAAKqrG,EAAOisU,iBAA8B,IAAPt3a,OAAgB,EAASA,EAAGwmE,UAEvE,EACAqlb,EAAa9sf,UAAU2lb,eAAiB,SAAUn0a,EAAO5C,GACvD,IAAI3N,EACAqrG,EAASxsG,KAAKmtf,eACd/ya,EAAUq7a,IAAcjpZ,EAAOpyB,SAE/Biza,EAAc37e,EAAML,SAAS,CAC/B1I,KAAM,OACN1G,KAAM,cACNqE,OAAO,UAAS,CACd2E,EAAG6D,EAAK7D,EAAImvE,EAAQ,GACpBlvE,EAAG4D,EAAK5D,EAAIkvE,EAAQ,GACpBrsE,MAAOe,EAAKf,MAAQqsE,EAAQ,GAAKA,EAAQ,GACzCpsE,OAAQc,EAAKd,OAASosE,EAAQ,GAAKA,EAAQ,IACZ,QAA7Bj5E,EAAKqrG,EAAOiF,mBAAgC,IAAPtwG,OAAgB,EAASA,EAAGwmE,WAYvE,OAVA0lb,EAAY33e,SAEZhE,EAAMvR,GAAG,cAAc,WACrB,IAAIgB,EACJksf,EAAYjnf,KAAmC,QAA7BjF,EAAKqrG,EAAOiF,mBAAgC,IAAPtwG,OAAgB,EAASA,EAAGo1H,OACrF,IACA7kH,EAAMvR,GAAG,cAAc,WACrB,IAAIgB,EACJksf,EAAYjnf,KAAmC,QAA7BjF,EAAKqrG,EAAOiF,mBAAgC,IAAPtwG,OAAgB,EAASA,EAAGwmE,QACrF,IACO0lb,CACT,EAEAL,EAAa9sf,UAAUs6a,cAAgB,WACrC,IAEIxva,EAFOhL,KAAKmzB,QAAQi/O,KACP+vL,gBACCtjP,QAAQ,CACxB5zM,EAAG,EACHC,EAAG,IAED+hf,EAAcjtf,KAAKitf,YACnBn+e,EAAOm+e,EAAYh9e,UACnBkB,EAASgrd,IAAKrod,UAAU,KAAM,CAAC,CAAC,IAAK9I,EAAMC,EAAI6D,EAAKf,MAnHxC,GAmH+D/C,EAAME,EAAI4D,EAAKd,OAlHhF,KAmHdi/e,EAAYn3e,UAAU3E,EACxB,EAIA67e,EAAa9sf,UAAUoV,KAAO,WACvBtV,KAAKitf,aACRjtf,KAAKotf,aAEPptf,KAAKw6a,gBACLx6a,KAAKitf,YAAY33e,MACnB,EAIA03e,EAAa9sf,UAAUqV,KAAO,WACxBvV,KAAKitf,aACPjtf,KAAKitf,YAAY13e,MAErB,EAIAy3e,EAAa9sf,UAAUkC,QAAU,WAC/B,IAAI6qf,EAAcjtf,KAAKitf,YACnBA,GACFA,EAAY95e,SAEdzR,EAAOxB,UAAUkC,QAAQR,KAAK5B,KAChC,EACOgtf,CACT,CAlHgC,CAkH9B,KC3IF,SAAS,IAAc75d,GACrB,OAAOA,EAAQwva,UACjB,CAIO,SAASo6D,IAAkBC,EAAiBC,EAAW93d,GAC5D,IAAIhkC,EAAKgkC,GAAW,CAAC,EACnBiwD,EAAOj0F,EAAGi0F,KACV8na,EAAgB/7f,EAAG+7f,cACjBrT,EAAWoT,GAAa,OAC5B,OAAQD,GACN,IAAK,QACH,MAAO,CACLtJ,WAAY,CAAC,CACX/qZ,QAAS,kBACTluE,OAAQ,mBACR2pa,SAAU84D,GAAiB,WACzB,OAAO,CACT,GACC,CACDv0Z,QAAS,kBACTluE,OAAQ,mBAEV/T,MAAO,CAAC,CACNiiF,QAAS,YACTy7V,SAAU84D,GAAiB,IAC3Bzie,OAAQ,CAAC,cAAe,GAAGlnB,OAAOs2e,EAAU,eAAgB,GAAGt2e,OAAOs2e,EAAU,eAEhFrtc,IAAK,CAAC,KAAM,CACVk/E,UAAWtmC,aAAmC,EAASA,EAAKtpF,UAGhE6nf,WAAY,CAAC,CACXhrZ,QAAS,YACTy7V,SAAU,IACV3pa,OAAQ,CAAC,GAAGlnB,OAAOs2e,EAAU,mBAE/Bh7d,IAAK,CAAC,CACJ85E,QAAS,UACTy7V,SAAU,IACV3pa,OAAQ,CAAC,eAAgB,YAAa,GAAGlnB,OAAOs2e,EAAU,aAAc,GAAGt2e,OAAOs2e,EAAU,cAAe,6BAE7G+J,SAAU,CAAC,CACTjrZ,QAAS,2BACTluE,OAAQ,CAAC,cAAe,0BAA2B,uBAGzD,IAAK,kBACH,MAAO,CACLi5d,WAAY,CAAC,CACX/qZ,QAAS,kBACTluE,OAAQ,mBACR2pa,SAAU84D,GAAiB,WACzB,OAAO,CACT,GACC,CACDv0Z,QAAS,iBACTluE,OAAQ,mBACR2pa,SAAU84D,GAAiB,WACzB,OAAO,CACT,GACC,CACDv0Z,QAAS,iBACTluE,OAAQ,iBACR2pa,SAAU,SAAkBjxa,GAC1B,QAAO+pe,IAAiBA,EAAc/pe,EACxC,GACC,CACDw1E,QAAS,kBACTluE,OAAQ,cACR2pa,SAAU84D,GAAiB,WACzB,OAAO,CACT,GACC,CACDv0Z,QAAS,kBACTluE,OAAQ,kBACP,CACDkuE,QAAS,kBACTluE,OAAQ,qBAEV/T,MAAO,CAAC,CACNiiF,QAAS,iBACTy7V,SAAU84D,GAAiB,SAAU/pe,GAEnC,OAAQA,EAAQvY,UAAU,OAC5B,EACA6f,OAAQ,CAAC,GAAGlnB,OAAOs2e,EAAU,eAAgB,GAAGt2e,OAAOs2e,EAAU,eAEjErtc,IAAK,CAAC,CACJk/E,UAAWtmC,aAAmC,EAASA,EAAKtpF,SAE7D,CACD68F,QAAS,iBACTluE,OAAQ,CAAC,GAAGlnB,OAAOs2e,EAAU,sBAE/B8J,WAAY,CAAC,CACXhrZ,QAAS,iBACTluE,OAAQ,CAAC,GAAGlnB,OAAOs2e,EAAU,kBAC5B,CACDlhZ,QAAS,YACTluE,OAAQ,CAAC,GAAGlnB,OAAOs2e,EAAU,gBAC5B,CACDlhZ,QAAS,cACTluE,OAAQ,CAAC,uCAEX5L,IAAK,CAAC,CACJ85E,QAAS,eACTluE,OAAQ,CAAC,GAAGlnB,OAAOs2e,EAAU,eAC5B,CACDlhZ,QAAS,eACTluE,OAAQ,CAAC,GAAGlnB,OAAOs2e,EAAU,mBAC5B,CACDlhZ,QAAS,mBACTy7V,SAAU,SAAkBjxa,GAC1B,OAAQA,EAAQwva,UAClB,EACAloa,OAAQ,CAAC,gCAAiC,GAAGlnB,OAAOs2e,EAAU,aAAc,GAAGt2e,OAAOs2e,EAAU,iBAElG+J,SAAU,CAAC,CACTjrZ,QAAS,WACTluE,OAAQ,CAAC,gCAAiC,GAAGlnB,OAAOs2e,EAAU,kBAGpE,IAAK,UACH,MAAO,CACL6J,WAAY,CAAC,CACX/qZ,QAAS,kBACTluE,OAAQ,mBACR2pa,SAAU84D,GAAiB,WACzB,OAAO,CACT,GACC,CACDv0Z,QAAS,kBACTluE,OAAQ,mBAEV/T,MAAO,CAAC,CACNiiF,QAAS,YACTy7V,SAAU84D,GAAiB,IAC3Bzie,OAAQ,CAAC,gBAAiB,GAAGlnB,OAAOs2e,EAAU,eAAgB,GAAGt2e,OAAOs2e,EAAU,eAElFrtc,IAAK,CAAC,KAAM,CACVk/E,UAAWtmC,aAAmC,EAASA,EAAKtpF,UAGhE6nf,WAAY,CAAC,CACXhrZ,QAAS,YACTy7V,SAAU,IACV3pa,OAAQ,CAAC,GAAGlnB,OAAOs2e,EAAU,mBAE/Bh7d,IAAK,CAAC,CACJ85E,QAAS,UACTy7V,SAAU,IACV3pa,OAAQ,CAAC,iBAAkB,cAAe,GAAGlnB,OAAOs2e,EAAU,aAAc,GAAGt2e,OAAOs2e,EAAU,iBAElG+J,SAAU,CAAC,CACTjrZ,QAAS,WACTluE,OAAQ,CAAC,oBAGf,IAAK,oBAoGL,IAAK,oBACH,MAAO,CACLi5d,WAAY,CAAC,CACX/qZ,QAAS,kBACTluE,OAAQ,mBACR2pa,SAAU84D,GAAiB,WACzB,OAAO,CACT,GACC,CACDv0Z,QAAS,kBACTluE,OAAQ,cACR2pa,SAAU84D,GAAiB,WACzB,OAAO,CACT,GACC,CACDv0Z,QAAS,kBACTluE,OAAQ,kBACP,CACDkuE,QAAS,kBACTluE,OAAQ,qBAEV/T,MAAO,CAAC,CACNiiF,QAAS,iBACTy7V,SAAU84D,GAAiB,SAAU/pe,GAEnC,OAAQA,EAAQvY,UAAU,OAC5B,EACA6f,OAAQ,CAAC,GAAGlnB,OAAOs2e,EAAU,eAAgB,GAAGt2e,OAAOs2e,EAAU,eAEjErtc,IAAK,CAAC,CACJk/E,UAAWtmC,aAAmC,EAASA,EAAKtpF,SAE7D,CACD68F,QAAS,iBACTluE,OAAQ,CAAC,GAAGlnB,OAAOs2e,EAAU,sBAE/B8J,WAAY,CAAC,CACXhrZ,QAAS,iBACTluE,OAAQ,CAAC,GAAGlnB,OAAOs2e,EAAU,kBAC5B,CACDlhZ,QAAS,YACTluE,OAAQ,CAAC,GAAGlnB,OAAOs2e,EAAU,gBAC5B,CACDlhZ,QAAS,cACTluE,OAAQ,CAAC,uCAEX5L,IAAK,CAAC,CACJ85E,QAAS,eACTluE,OAAQ,CAAC,GAAGlnB,OAAOs2e,EAAU,eAC5B,CACDlhZ,QAAS,eACTluE,OAAQ,CAAC,GAAGlnB,OAAOs2e,EAAU,mBAC5B,CACDlhZ,QAAS,mBACTy7V,SAAU,SAAkBjxa,GAC1B,OAAQA,EAAQwva,UAClB,EACAloa,OAAQ,CAAC,gCAAiC,GAAGlnB,OAAOs2e,EAAU,aAAc,GAAGt2e,OAAOs2e,EAAU,iBAElG+J,SAAU,CAAC,CACTjrZ,QAAS,WACTluE,OAAQ,CAAC,gCAAiC,GAAGlnB,OAAOs2e,EAAU,kBAjGpE,IAAK,UACH,MAAO,CACL6J,WAAY,CAAC,CACX/qZ,QAAS,kBACTluE,OAAQ,mBACR2pa,SAAU84D,GAAiB,WACzB,OAAO,CACT,GACC,CACDv0Z,QAAS,kBACTluE,OAAQ,mBAEV/T,MAAO,CAAC,CACNiiF,QAAS,YACTy7V,SAAU84D,GAAiB,IAC3Bzie,OAAQ,CAAC,gBAAiB,GAAGlnB,OAAOs2e,EAAU,eAAgB,GAAGt2e,OAAOs2e,EAAU,eAElFrtc,IAAK,CAAC,KAAM,CACVk/E,UAAWtmC,aAAmC,EAASA,EAAKtpF,UAGhE6nf,WAAY,CAAC,CACXhrZ,QAAS,YACTy7V,SAAU,IACV3pa,OAAQ,CAAC,GAAGlnB,OAAOs2e,EAAU,mBAE/Bh7d,IAAK,CAAC,CACJ85E,QAAS,UACTy7V,SAAU,IACV3pa,OAAQ,CAAC,iBAAkB,cAAe,GAAGlnB,OAAOs2e,EAAU,aAAc,GAAGt2e,OAAOs2e,EAAU,iBAElG+J,SAAU,CAAC,CACTjrZ,QAAS,WACTluE,OAAQ,CAAC,oBAmEf,QACE,MAAO,CAAC,EAEd,CAjVA4ja,IAAe,qBAAsB,IAAc,CACjDp8b,KAAM,uBAERyic,IAAoB,gBAAiB,CAAC,GAgVtCA,IAAoB,QAASq4D,IAAkB,UAE/Cr4D,IAAoB,kBAAmBq4D,IAAkB,oBAEzDr4D,IAAoB,UAAWq4D,IAAkB,UAAW,WAE5Dr4D,IAAoB,UAAWq4D,IAAkB,UAAW,WAE5Dr4D,IAAoB,oBAAqBq4D,IAAkB,oBAAqB,WAEhFr4D,IAAoB,oBAAqBq4D,IAAkB,oBAAqB,WC1VhF,IAAII,IAAc,CAAC,QAAS,UAAW,UAAW,kBAAmB,oBAAqB,qBAInF,SAASC,IAAiB97e,GAC/B,IAAI6jB,EAAU7jB,EAAO6jB,QACjBy2N,EAAQz2N,EAAQy2N,MAEhBmhN,GAAe,UAAO53a,EAAQ43a,cAAgB,IAAI,SAAU77c,GAC9D,OAAwC,IAAjCi8f,IAAYjqf,QAAQhS,EAAEyH,KAC/B,IAmCA,OAjCIizP,aAAqC,EAASA,EAAM/tL,WACtDsvb,IAAY/0f,SAAQ,SAAUO,GAC5B,IAAImza,GAAS,EACb,OAAQlgL,EAAMjzP,MACZ,IAAK,SACHmza,EAASnza,KAA2B,cAAjBizP,EAAMnhO,OAAyB,oBAAsB,WACxE,MACF,IAAK,SACHqhZ,EAASnza,KAA2B,cAAjBizP,EAAMnhO,OAAyB,oBAAsB,WACxE,MACF,QACEqhZ,EAASnza,KAA2B,cAAjBizP,EAAMnhO,OAAyB,kBAAoB,SAG1E,IAAI1G,EAAM,CACRprB,KAAMA,EACNmza,OAAQA,GAENlgL,IACF7nO,EAAIpyB,IAAMo7f,IAAkBp0f,EAAMizP,EAAMjzP,KAAMizP,IAEhDmhN,EAAax8c,KAAKwzB,EACpB,IAEqE,eAAhE6nO,aAAqC,EAASA,EAAMnhO,SACvDsib,EAAax8c,KAAK,CAChBoI,KAAM,gBACNhH,IAAK,CACH07f,aAAczhQ,EAAM3vP,WAKrBipf,IAAW,CAAC,EAAG5ze,EAAQ,CAC5B6jB,QAAS,CACP43a,aAAcA,IAGpB,CCtDA,IAAIugD,IAAkB,CACpB7uM,MAAO,oCACPvxP,MAAO,qCAELqgc,IAAiB,SAAwB50Z,EAAS78F,GACpD,MAAgB,UAAZ68F,EACK,CAAC,CACNA,QAAS,sBACTluE,OAAQ,CAAC,uCAAwC,8BACjD+hB,IAAK,CAAC,KAAM,CACV1wC,MAAOA,MAIN,CAAC,CACN68F,QAAS,iBACTluE,OAAQ,CAAC,mCAAoC,uCAAwC,8BAA+B,+BAAgC,8BACpJ+hB,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,CAC5B1wC,MAAOA,KAGb,EChBO,SAAS0xf,IAAuBloe,EAAMC,GAC3C,OAAK,UAASD,KAAU,UAASC,GAIpB,IAATD,GAAuB,IAATC,EACT,IAELD,IAASC,EACJ,OAEI,IAATD,EACK,IAEF,GAAG/hB,QAAQ,IAAMgiB,EAAOD,GAAMlN,QAAQ,GAAI,KAZxC,GAaX,CChBA,SAASq1e,IAAoCt4d,EAASqyJ,GACpD,OAAO09T,IAAW,CAChB5wd,KAAMkzJ,EAAa,GAAK,GACxBklK,QAASllK,EAAa,EAAI,GAC1Br0G,OAAQq0G,EAAa,GAAK,EAC1BljG,OAAyB,IAAlBnvD,EAAQmvD,OAAmB,CAChCopa,SAAU,GACV5xf,MAAO,CACL8vC,KAAM,wBAGV/6B,MAAuB,IAAjBskB,EAAQtkB,MAAkB,CAC9B/U,MAAO,CACLgV,SAAU,GACV86B,KAAM,sBACN36B,UAAW,SACXC,aAAc,UAEhB6oU,UAAWyzK,MAEZr4d,EACL,CACA,SAASunb,IAAYzuM,EAAYtuQ,GAE/B,OAAO,UAAIA,EAAQ+xb,WAAWhhb,QAAQ,SAAU1V,GAC9C,OAAOizQ,EAAW8tJ,aAAa/ga,EACjC,GACF,CA6FA,SAAS,IAAUm6B,EAASw4d,EAAUC,IA5FtC,SAAwBpxZ,EAAQmxZ,EAAUC,GACxC,IAAIxrP,EAAO5lK,EAAO4lK,KAChB/yD,EAAW7yG,EAAO6yG,SAClB3tM,EAAQ86F,EAAO96F,MACfyzB,EAAUqnE,EAAOrnE,QACjBqyJ,EAAahrF,EAAOgrF,WAClBr0G,EAASh+C,EAAQg+C,OACnB7+C,EAAOa,EAAQb,KACfgwD,EAAQnvD,EAAQmvD,MACd2pL,EAAa7L,EAAK+vL,gBAClB07D,EAAYnxC,IAAYzuM,EAAY0/O,GAAU,GAC9CG,EAAYpxC,IAAYzuM,EAAY2/O,GAAU,GAC9CxsB,EAAc0sB,EAAU5yf,EAAI2yf,EAAU3yf,EACtCktJ,EAAa0lW,EAAU7yf,EAAI4yf,EAAU5yf,EACzC,GAAqB,kBAAVqpF,EAAX,CAGA,IAEI5zE,EAFAg9e,EAAWppa,EAAMopa,SACjBhhK,EAAUv3T,EAAQu3T,QAElBllK,GACGp/B,EAAaslW,GAAY,EAAIhhK,GAEhCA,EAAUziV,KAAKE,IAAI,GAAIi+I,EAAaslW,GAAY,GAChDh9e,EAAS,CAAC,CAACm9e,EAAU5yf,EAAIyxV,EAASmhK,EAAU3yf,EAAIi4E,GAAS,CAAC06a,EAAU5yf,EAAIyxV,EAASmhK,EAAU3yf,EAAIi4E,EAAS7+C,GAAO,CAACw5d,EAAU7yf,EAAIyxV,EAASohK,EAAU5yf,EAAIi4E,EAAS7+C,EAAO,KAGrK5jB,EAAS,CAAC,CAACm9e,EAAU5yf,EAAIyxV,EAASmhK,EAAU3yf,EAAIi4E,GAAS,CAAC06a,EAAU5yf,EAAIyxV,EAASmhK,EAAU3yf,EAAIi4E,EAAS7+C,GAAO,CAACw5d,EAAU7yf,EAAIyxV,EAAUghK,EAAUI,EAAU5yf,EAAIi4E,EAAS7+C,GAAO,CAACw5d,EAAU7yf,EAAIyxV,EAASohK,EAAU5yf,EAAIi4E,EAAS7+C,EAAO,GAAI,CAACw5d,EAAU7yf,EAAIyxV,EAAUghK,EAAUI,EAAU5yf,EAAIi4E,KAGxRiuZ,EAAcssB,GAAY,EAAIhhK,GAEjCA,EAAUziV,KAAKE,IAAI,GAAIi3d,EAAcssB,GAAY,GACjDh9e,EAAS,CAAC,CAACm9e,EAAU5yf,EAAIk4E,EAAQ06a,EAAU3yf,EAAIwxV,GAAU,CAACmhK,EAAU5yf,EAAIk4E,EAAS7+C,EAAMu5d,EAAU3yf,EAAIwxV,GAAU,CAACohK,EAAU7yf,EAAIk4E,EAAS7+C,EAAO,EAAGw5d,EAAU5yf,EAAIwxV,KAG/Jh8U,EAAS,CAAC,CAACm9e,EAAU5yf,EAAIk4E,EAAQ06a,EAAU3yf,EAAIwxV,GAAU,CAACmhK,EAAU5yf,EAAIk4E,EAAS7+C,EAAMu5d,EAAU3yf,EAAIwxV,GAAU,CAACohK,EAAU7yf,EAAIk4E,EAAS7+C,EAAMw5d,EAAU5yf,EAAIwxV,EAAUghK,GAAW,CAACI,EAAU7yf,EAAIk4E,EAAS7+C,EAAO,EAAGw5d,EAAU5yf,EAAIwxV,GAAU,CAACohK,EAAU7yf,EAAIk4E,EAAQ26a,EAAU5yf,EAAIwxV,EAAUghK,IAG7Rhsf,EAAML,SAAS,UAAW,CACxBqC,GAAI,GAAGH,OAAO6+P,EAAK1+P,GAAI,0BAA0BH,OAAO8rM,EAAS6xN,aAAaysF,EAASj8D,WAAWuW,cAClGh2c,KAAM,uBACN47D,OAAQ,CACNluD,QAASguf,EACTta,YAAaua,GAEft3f,OAAO,WAAS,UAAS,CAAC,EAAGguF,EAAMxoF,OAAS,CAAC,GAAI,CAC/C4U,OAAQA,KA/BZ,CAkCF,CA2CEq9e,CAAe54d,EAASw4d,EAAUC,GA1CpC,SAAuBpxZ,EAAQmxZ,EAAUC,GACvC,IAAIz8f,EAAI+V,EAAIC,EACRi7P,EAAO5lK,EAAO4lK,KAChB/yD,EAAW7yG,EAAO6yG,SAClB3tM,EAAQ86F,EAAO96F,MACfyzB,EAAUqnE,EAAOrnE,QACjB06F,EAAQrzB,EAAOqzB,MACf23D,EAAahrF,EAAOgrF,WAClBr0G,EAASh+C,EAAQg+C,OACnB7+C,EAAOa,EAAQb,KACjB,GAA4B,kBAAjBa,EAAQtkB,KAAnB,CAGA,IAAIo9P,EAAa7L,EAAK+vL,gBAClBthb,GAAgC,QAAvB1f,EAAKgkC,EAAQtkB,YAAyB,IAAP1f,OAAgB,EAASA,EAAG4oV,aAAuC,QAAvB7yU,EAAKiuB,EAAQtkB,YAAyB,IAAP3J,OAAgB,EAASA,EAAG6yU,UAAU4zK,EAAS19V,UAAUpgC,GAAQ+9X,EAAS39V,UAAUpgC,KACvMg+X,EAAYnxC,IAAYzuM,EAAY0/O,GAAUnmU,EAAa,EAAI,GAC/DsmU,EAAYpxC,IAAYzuM,EAAY2/O,GAAUpmU,EAAa,EAAI,GAC/D2gP,EAAYzma,EAAML,SAAS,OAAQ,CACrCqC,GAAI,GAAGH,OAAO6+P,EAAK1+P,GAAI,yBAAyBH,OAAO8rM,EAAS6xN,aAAaysF,EAASj8D,WAAWuW,cACjGh2c,KAAM,sBACN47D,OAAQ,CACNluD,QAASguf,EACTta,YAAaua,GAEft3f,OAAO,WAAS,UAAS,CAAC,GAA4B,QAAvB6Q,EAAKguB,EAAQtkB,YAAyB,IAAP1J,OAAgB,EAASA,EAAGrL,QAAU,CAAC,GAAI,CACvG+U,KAAMA,EACN5V,EAAGusL,GAAcqmU,EAAU5yf,EAAI6yf,EAAU7yf,GAAK,EAAI4yf,EAAU5yf,EAAIk4E,EAAS7+C,EAAO,EAChFp5B,EAAGssL,EAAaqmU,EAAU3yf,EAAIi4E,EAAS7+C,EAAO,GAAKu5d,EAAU3yf,EAAI4yf,EAAU5yf,GAAK,MAGpF,GAAIssL,EAAY,CACd,IAAIp/B,EAAa0lW,EAAU7yf,EAAI4yf,EAAU5yf,EACrCq1R,EAAY63I,EAAUloa,UAAUlC,MACpC,GAAIuyR,EAAYloI,EAAY,CAC1B,IAAI4lW,EAAS19N,EAAYz/Q,EAAKhgB,OAC1Bo9f,EAAOhkf,KAAKE,IAAI,EAAGF,KAAKisJ,KAAK9N,EAAa4lW,GAAU,GACpDE,EAAe,GAAG3qf,OAAOsN,EAAKmG,MAAM,EAAGi3e,GAAO,OAClD9lF,EAAU/xa,KAAK,OAAQ83f,EACzB,CACF,CA3BA,CA4BF,CAGEC,CAAch5d,EAASw4d,EAAUC,EACnC,CClHA,SAASQ,IAAe98e,GACtB,IAAI6jB,EAAU7jB,EAAO6jB,QAEjBkyO,EAASlyO,EAAQkyO,OACjB2hP,EAAc7zd,EAAQ6zd,YACxBjuJ,EAAU5lU,EAAQ4lU,QAYpB,OAXIiuJ,GACa,IAAX3hP,IACFA,GAAS,UAAS,CAChBlsN,SAAU4/S,EAAU,YAAc,YACjC1zF,IAGLA,GAAS,EAGX/1P,EAAO6jB,QAAQkyO,OAASA,EACjB/1P,CACT,CAKA,SAAS,IAASA,GAChB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfzf,EAAOyf,EAAQzf,KACjB24e,EAAcl5d,EAAQk5d,YACtBtqd,EAAQ5O,EAAQ4O,MAChB8mX,EAAmB11X,EAAQ01X,iBAC3BkhG,EAAY52d,EAAQ42d,UACpBnsf,EAAUu1B,EAAQv1B,QAClBm7V,EAAU5lU,EAAQ4lU,QAClBiuD,EAAS7zX,EAAQ6zX,OACjBC,EAAS9zX,EAAQ8zX,OACjB+/F,EAAc7zd,EAAQ6zd,YACtBoB,EAAaj1d,EAAQi1d,WACrBr1P,EAAU5/N,EAAQ4/N,QAClBt/P,EAAQ0/B,EAAQ1/B,MACd64f,EAAcvC,GAAansf,GAAWm7V,EXjBrC,SAAwBrlV,EAAMu2K,EAASr8D,EAAQ7mE,GACpD,IAAI2ic,GAAS,UAAOh2e,GAAM,SAAUsL,EAAKmnM,GAEvC,IAAIwjS,GAAa,UAAO/7X,GAAQ,SAAUz9H,EAAO09H,GAC/C,MAAO,GAAGtsH,OAAOpR,GAAOoR,OAAO4kN,EAAMt4F,GACvC,GAAG,IACCzzG,EAAM4E,EAAI8Q,IAAI65d,GAAc3qe,EAAIhvB,IAAI25f,GAAc,EAClD1pf,EAAIkmN,EAAMl8B,GAGd,OAFA7vK,EAAMope,IAAavjf,GAAKma,EAAMna,EAAIma,EAClC4E,EAAI9uB,IAAIy5f,EAAYvve,GACb4E,CACT,GAAG,IAAIjS,KAEP,OAAO,UAAI2G,GAAM,SAAUyyM,GACzB,IAAIh3N,EACA8Q,EAAIkmN,EAAMl8B,GAEV0/T,GAAa,UAAO/7X,GAAQ,SAAUz9H,EAAO09H,GAC/C,MAAO,GAAGtsH,OAAOpR,GAAOoR,OAAO4kN,EAAMt4F,GACvC,GAAG,IACC+7X,EAAapG,IAAavjf,IAAiC,IAA3Bypf,EAAO15f,IAAI25f,GAAoB1pf,EAAIypf,EAAO15f,IAAI25f,GAAc,EAChG,OAAO,WAAS,UAAS,CAAC,EAAGxjS,KAASh3N,EAAK,CAAC,GAAM43D,GAAW6ic,EAAYz6f,GAC3E,GACF,CWNsDo9f,CAAe74e,EAAMuzY,EAAQ,CAACD,EAAQohG,GAAanhG,GAAU4iG,IAAyBn2e,EAAMuzY,EAAQD,EAAQC,EAAQ8iG,GACpKS,EAAY,GAEZzxJ,GAAWiuJ,IAAgBppf,EAC7B0uf,EAAYl2f,SAAQ,SAAUqP,GAC5B,IAAI+mf,EAAchC,EAAUhpf,MAAK,SAAUvB,GACzC,OAAOA,EAAE+mZ,KAAYvhZ,EAAKuhZ,IAAW/mZ,EAAE+mf,KAAiBvhf,EAAKuhf,EAC/D,IACIwF,EACFA,EAAYvlG,IAAWxhZ,EAAKwhZ,IAAW,EAEvCujG,EAAUj8f,MAAK,UAAS,CAAC,EAAGkX,GAEhC,IAEA+kf,EAAY8B,EAEd5hD,EAAMh3b,KAAK82e,GAEX,IAAIC,EAAiBV,GAAY,UAAS,CACxChyK,UAAW,SAAmB5xH,GAC5B,IAAIh3N,EACJ,MAAO,CACLc,KAAM2N,GAAWm7V,EAAU,GAAGx3V,OAAO4kN,EAAM6gS,GAAc,OAAOzlf,OAAO4kN,EAAMiiS,IAA6C,QAA7Bj5f,EAAKg3N,EAAM6gS,UAAiC,IAAP73f,EAAgBA,EAAKg3N,EAAM6gM,GAC7J72Z,OAAgC,IAAxB8f,OAAOk2M,EAAM8gM,KAAgB7wY,QAAQ,GAAK,IAEtD,GACC28O,GAAWA,EACV3mP,EAAI82e,IAAW,CAAC,EAAG5ze,EAAQ,CAC7B6jB,QAAS,CACPzf,KAAM82e,EACNrC,WAAYt/F,EACZ91J,QAAS03P,EACTj6f,SAAU,CACRiD,MAAOA,EACPqG,MAAOuyf,EACPtqd,MAAOA,MAKb,OADA,IAAS31B,GACFA,CACT,CAKO,SAAS,IAAKkD,GACnB,IAAIngB,EAAI+V,EACJiuB,EAAU7jB,EAAO6jB,QACjBy1d,EAAQz1d,EAAQy1d,MAClBzB,EAAQh0d,EAAQg0d,MAChBngG,EAAS7zX,EAAQ6zX,OACjBC,EAAS9zX,EAAQ8zX,OACjBvzY,EAAOyf,EAAQzf,KAEb+4e,EADUt5d,EAAQ42d,UACS,CAC7B5hf,IAAK,EACLD,IAAK,EACLsrZ,SAAU,EACVC,SAAU,GACR,CAAC,EACL,OAAOl1L,IAAK,MAAOpvO,EAAK,CAAC,GAAM63Z,GAAU4hG,EAAOz5f,EAAG83Z,GAAUkgG,EAAOh4f,KAAM+V,EAAK,CAAC,GAAM8hZ,GAAU,CAC9FrwZ,KAAM,OACLuO,EAAG+hZ,IAAU,WAAS,UAAS,CAAC,EAAGi7F,IAAkBxue,EAAMuzY,IAAUwlG,GAAevnf,IAFhFq5N,CAEsFjvN,EAC/F,CAKA,SAAS,IAAKA,GACZ,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfy1d,EAAQz1d,EAAQy1d,MAClBzB,EAAQh0d,EAAQg0d,MAChBngG,EAAS7zX,EAAQ6zX,OACjBC,EAAS9zX,EAAQ8zX,OAYnB,OAVc,IAAV2hG,EACFl+C,EAAM7oM,KAAKmlJ,GAAQ,GAEnB0jD,EAAM7oM,KAAKmlJ,EAAQ4hG,IAEP,IAAVzB,EACFz8C,EAAM7oM,KAAKolJ,GAAQ,GAEnByjD,EAAM7oM,KAAKolJ,EAAQkgG,GAEd73e,CACT,CAKO,SAAS,IAAOA,GACrB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfkyO,EAASlyO,EAAQkyO,OACnB2hP,EAAc7zd,EAAQ6zd,YAMxB,OALI3hP,GAAU2hP,EACZt8C,EAAMrlM,OAAO2hP,EAAa3hP,IACN,IAAXA,GACTqlM,EAAMrlM,QAAO,GAER/1P,CACT,CAKA,SAAS,IAAMA,GACb,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfynB,EAAQznB,EAAQynB,MAClBqsW,EAAS9zX,EAAQ8zX,OACjBylG,EAAUv5d,EAAQu5d,QAChBr/S,EAAW+1S,IAAa14C,EAAO,YACnC,GAAK9vZ,EAEE,CACL,IAAIvsD,EAAWusD,EAAMvsD,SACnBsB,GAAM,UAAOirD,EAAO,CAAC,aACvByyJ,EAASzyJ,MAAM,CACbgzE,OAAQ,CAACq5R,GACT54Z,SAAUA,EACVsB,KAAK,UAAS,CAEZmnH,QAASnnH,aAAiC,EAASA,EAAIwpD,eAAY10B,EAAY,CAAC,CAC9E9tB,KAAM,4BACL,CACDA,KAAM,yBACL,CACDA,KAAM,gBACL,CACDA,KAAM,gBACNhH,IAAK,CACH84B,OAAQ,WAGX86d,IAAemJ,GAAU,UAAS,CACnC5nb,QAAS,SAAiBr/D,GACxB,IAAItW,EACJ,OAA+B,QAAvBA,EAAKsW,EAAKwhZ,UAA4B,IAAP93Z,OAAgB,EAASA,EAAGkoB,KAAK,IAC1E,GACC1nB,GAAOA,KAEd,MA5BE09M,EAASzyJ,OAAM,GA6BjB,OAAOtrC,CACT,CAKA,SAASq9e,IAAcr9e,GACrB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACf4/N,EAAU5/N,EAAQ4/N,QACpBn1P,EAAUu1B,EAAQv1B,QAClBm7V,EAAU5lU,EAAQ4lU,QAClBqvJ,EAAaj1d,EAAQi1d,WACrB10e,EAAOyf,EAAQzf,KACfszY,EAAS7zX,EAAQ6zX,OACjBC,EAAS9zX,EAAQ8zX,OACjB+/F,EAAc7zd,EAAQ6zd,YACxB,IAAgB,IAAZj0P,EACF23M,EAAM33M,SAAQ,OACT,CACL,IAAI03P,EAAiB13P,EAErB,GAAIn1P,GAAWm7V,EAAS,CACtB,IAAI6zJ,EAAgBnC,EAAe9zC,YAC/Bk2C,GAAsBpC,aAAuD,EAASA,EAAe1yK,YAAc,SAAU5xH,GAC/H,MAAO,CACLl2N,KAAM,GAAGsR,OAAO4kN,EAAM6gS,GAAc,OAAOzlf,OAAO4kN,EAAMiiS,IACxDj4f,MAAOg2N,EAAM8gM,GAEjB,EACAwjG,GAAiB,WAAS,UAAS,CAAC,EAAGA,GAAiB,CACtD9zC,YAAa,SAAqBD,GAChC,IAAIvia,EAAQ,GAiBZ,OAhBA,UAAKuia,GAAe,SAAUjxc,IAEhB,UAAOiO,GAAM,SAAUK,GACjC,OAAO,UAAQA,EAAG,IAAKtO,EAAKiO,KAAM,CAACszY,EAAQggG,IAC7C,IACM5wf,SAAQ,SAAU+vN,GACtBhyK,EAAM5lD,MAAK,WAAS,WAAS,UAAS,CAAC,EAAGkX,GAAO,CAC/CtV,MAAOg2N,EAAM8gM,GACbvzY,KAAMyyM,EACN8/O,YAAa,CACX1zM,QAASpsC,KAET0mS,EAAmB1mS,IACzB,GACF,IAEOymS,EAAgBA,EAAcz4c,GAASA,CAChD,GAEJ,CACAu2Z,EAAM33M,QAAQ03P,EAChB,CACA,OAAOn7e,CACT,CAKO,SAAS,IAAQA,EAAQw9e,QAChB,IAAVA,IACFA,GAAQ,GAEV,IH9N4Bx+I,EG8NxBn7U,EAAU7jB,EAAO6jB,QACjB6zd,EAAc7zd,EAAQ6zd,YAC1B,OAAOzoR,IAAK6tR,IAEZ,IAEA,IAAQ,eAAgB,IAAOhF,IAAgB,QAAS,IAAU,IAAM,IAAM,IAAQuF,IAAe,IAAQ,IAAW,IAAOvB,IAAkB,IAAa13f,IAAW,MDxIpK,SAAuBm6H,EAAO23D,EAAY93H,GAO/C,YANmB,IAAf83H,IACFA,GAAa,QAEE,IAAb93H,IACFA,GAAW,GAEN,SAAUp+C,GACf,IAAI6jB,EAAU7jB,EAAO6jB,QACnBu3a,EAAQp7b,EAAOo7b,MACbqiD,EAAgB55d,EAAQ45d,cAC1BzxZ,EAAQnoE,EAAQmoE,MAiClB,OAhCIyxZ,IAAkBr/b,IAEpBg9Y,EAAMpvW,MAAM4nZ,IAAW,CAAC,GAAG,UAAS5nZ,GAASA,EAAQ+Z,IAAS/Z,GAAQ,CACpEutT,iBAAkB,EAAI,KAGxB6hD,EAAMpN,aAAa7pc,MAAM,CACvBulE,OAAQ,SAAgBhiE,EAAWopQ,GACjC,IAAI1gQ,EAAQ1I,EAAUyI,SAAS,CAC7BiC,GAAI,GAAGH,OAAOmpc,EAAMhpc,GAAI,yBACxBzR,KAAM,yBAEJO,GAAW,UAAKk6c,EAAMt9P,YAAY,SAAUoB,GAC9C,MAAqB,aAAdA,EAAK73M,IACd,IACI6jG,EAAS,CACX4lK,KAAMA,EACN/yD,SAAU78M,EACVkP,MAAOA,EACPmuH,MAAOA,EACP23D,WAAYA,EACZryJ,QAASs4d,IAAoCsB,EAAevnU,IAE1D72J,EAAWn+B,EAASm+B,UACxB,UAAKA,GAAU,SAAUokD,EAAM7/C,GACzBA,EAAM,GACR,IAAUsnE,EAAQ7rE,EAASuE,EAAM,GAAI6/C,EAEzC,GACF,KAGGzjE,CACT,CACF,CC0FyLy9e,CAAc55d,EAAQ8zX,QAAS6lG,IAAS9F,SHnO/M,KADY14I,GGsObn7U,EAAQ4lU,WHpOrBuV,GAAU,GAEL,SAAUh/V,GACf,IAAIo7b,EAAQp7b,EAAOo7b,MAEfsiD,EADQ19e,EAAO6jB,QACS65d,cACxBzvf,EAAQ,WACVmtc,EAAM+C,kBAAkB69C,IAAgB7uM,OACxCiuJ,EAAM+C,kBAAkB69C,IAAgBpgc,MAC1C,EACA,IAAKojT,GAAW0+I,EAAe,CAC7B,IAAIr2Z,EAAUq2Z,EAAcr2Z,SAAW,QACvCp5F,IACAmtc,EAAM/X,YAAY24D,IAAgB30Z,GAAU,CAC1CjiF,MAAO62e,IAAe50Z,EAASq2Z,EAAclzf,QAEjD,MACEyD,IAEF,OAAO+R,CACT,GGgNiC,IAN1BivN,CAMuCjvN,EAChD,CCxQA,SAAS,IAAeA,GACtB,IAAI6jB,EAAU7jB,EAAO6jB,QACjB6zX,EAAS7zX,EAAQ6zX,OACnBC,EAAS9zX,EAAQ8zX,OACjB2hG,EAAQz1d,EAAQy1d,MAChBzB,EAAQh0d,EAAQg0d,MACdhuc,EAAW,CACbn8C,KAAM,SACN2D,MAAO,MACP1D,IAAK,OACLw0E,OAAQ,SAENw7a,GAAyB,IAAV9F,IAAkB,UAAS,CAC5Chuc,SAAUA,GAAUguc,aAAqC,EAASA,EAAMhuc,WAAa,SACpFguc,GACC+F,GAA2B,IAAVtE,IAAkB,UAAS,CAC9Czvc,SAAUA,GAAUyvc,aAAqC,EAASA,EAAMzvc,WAAa,WACpFyvc,GACH,OAAO,WAAS,UAAS,CAAC,EAAGt5e,GAAS,CACpC6jB,SAAS,WAAS,UAAS,CAAC,EAAGA,GAAU,CACvC6zX,OAAQC,EACRA,OAAQD,EAER4hG,MAAOqE,EACP9F,MAAO+F,KAGb,CAKA,SAAS,IAAM59e,GACb,IACIsrC,EADUtrC,EAAO6jB,QACDynB,MAoBpB,OAlBIA,IAAUA,EAAMzB,WAClByB,EAAMzB,SAAW,OAEZyB,EAAMk8D,SACTl8D,EAAMk8D,OAAS,CAAC,CACdngH,KAAM,4BACL,CACDA,KAAM,yBACL,CACDA,KAAM,gBACL,CACDA,KAAM,gBACNhH,IAAK,CACH84B,OAAQ,YAKTy6d,IAAW,CAAC,EAAG5ze,EAAQ,CAC5B6jB,QAAS,CACPynB,MAAOA,IAGb,CAKA,SAAS,IAAOtrC,GACd,IAAI6jB,EAAU7jB,EAAO6jB,QAEjB6zd,EAAc7zd,EAAQ6zd,YACxBjuJ,EAAU5lU,EAAQ4lU,QAChB1zF,EAASlyO,EAAQkyO,OAUrB,OATI2hP,GACa,IAAX3hP,IACFA,GAAS,UAAS,CAChBlsN,SAAU4/S,EAAU,WAAa,aAChC1zF,GAAU,CAAC,IAGhBA,GAAS,EAEJ69O,IAAW,CAAC,EAAG5ze,EAAQ,CAC5B6jB,QAAS,CACPkyO,OAAQA,IAGd,CAKA,SAAS,IAAW/1P,GAElB,IAAI6jB,EAAU7jB,EAAO6jB,QACjBg6d,EAAoB,CAAC,CACvBx2f,KAAM,aACL,CACDA,KAAM,aACL4K,OAAO4xB,EAAQ84O,YAAc,IAChC,OAAOi3O,IAAW,CAAC,EAAG5ze,EAAQ,CAC5B6jB,QAAS,CACP84O,WAAYkhP,IAGlB,CAKO,SAAS,IAAS79e,GACvB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfi6d,EAAWj6d,EAAQi6d,SACrBC,EAAgBl6d,EAAQk6d,cACxBC,EAAcn6d,EAAQm6d,YACtBC,EAAcp6d,EAAQo6d,YACtBC,EAAgBr6d,EAAQq6d,cAC1B,OAAO,IAAc,CACnB9iD,MAAOA,EACPv3a,SAAS,WAAS,UAAS,CAAC,EAAGA,GAAU,CAEvCk5d,YAAae,EACbvkG,iBAAkBwkG,EAClBzkG,eAAgB0kG,EAChB3kG,eAAgB4kG,EAChBrF,iBAAkBsF,MAEnB,EACL,CAKO,SAAS,IAAQl+e,GAEtB,OAAOivN,IAAK,IAAgB,IAAO,IAAQ,IAAS,IAAY,IAAzDA,CAAmEjvN,EAC5E,CJxHAojb,IAAoB44D,IAAgB7uM,MAAO,CACzC/nS,MAAO62e,IAAeD,IAAgB7uM,OACtC5/R,IAAK,CAAC,CACJ85E,QAAS,sBACTluE,OAAQ,CAAC,mCAAoC,oCAIjDiqa,IAAoB44D,IAAgBpgc,MAAO,CACzCx2C,MAAO62e,IAAeD,IAAgBpgc,OACtCruC,IAAK,CAAC,CACJ85E,QAAS,qBACTluE,OAAQ,CAAC,mCAAoC,mCK/B1C,ICLH,IDKO,IAAkBy6d,IAAW,CAAC,EAAGuF,IAAKC,oBAAqB,CACpE2E,cAAe,GACfjlG,YAAa,EAAI,GACjBr1J,QAAS,CACPktB,QAAQ,EACR08K,aAAa,EACbxrX,OAAQ,IAEVk0L,OAAQ,CACN9tJ,MAAO,CAAC,GAEVwzV,aAAc,CAAC,CACbp0c,KAAM,oBETN82f,IAAmB,SAAU/9f,GAE/B,SAAS+9f,IACP,IAAIh/f,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAGhE,OADAS,EAAMkI,KAAO,MACNlI,CACT,CAkDA,OAxDA,UAAUg/f,EAAK/9f,GAWf+9f,EAAI/E,kBAAoB,WACtB,OAAO,GACT,EAIA+E,EAAIv/f,UAAUw/c,WAAa,SAAUh6b,GACnC,IAAIvkB,EAAI+V,EACRlX,KAAKg7f,aAAa,CAChBt1e,KAAMA,IAER,IACEg3b,EADO18c,KACI08c,MACXv3a,EAFOnlC,KAEMmlC,QACX42d,EAAY52d,EAAQ42d,UACpB/iG,EAAS7zX,EAAQ6zX,OACnBC,EAAS9zX,EAAQ8zX,OACjB2hG,EAAQz1d,EAAQy1d,MAChBzB,EAAQh0d,EAAQg0d,MACKngG,GAAvB73Z,EAAK,CAAC83Z,EAAQD,IAAqB,GAAIC,EAAS93Z,EAAG,GAC9By5f,GAArB1jf,EAAK,CAACiif,EAAOyB,IAAmB,GAAIzB,EAAQjif,EAAG,GAO/C,IAAK,CACHwlc,MAAOA,EACPv3a,SARyB,WAAS,UAAS,CAAC,EAAGA,GAAU,CACzD6zX,OAAQA,EACRC,OAAQA,EACRkgG,MAAOA,EACPyB,MAAOA,MAMTl+C,EAAMgD,WAAWm8C,IAAyBn2e,EAAMszY,EAAQC,EAAQD,EAAQ+iG,GAC1E,EAIA0D,EAAIv/f,UAAUw6f,kBAAoB,WAChC,OAAO+E,EAAI/E,mBACb,EAIA+E,EAAIv/f,UAAUs7f,iBAAmB,WAC/B,OAAO,GACT,EACOiE,CACT,CA1DuB,CA0DrBhF,KC7DS,IAAkBvF,IAAW,CAAC,EAAGuF,IAAKC,oBAAqB,CACpE7/F,iBAAkB,GAClBT,YAAa,EAAI,GACjBr1J,QAAS,CACPktB,QAAQ,EACR08K,aAAa,EACbxrX,OAAQ,IAEVk0L,OAAQ,CACN9tJ,MAAO,CAAC,GAEVwzV,aAAc,CAAC,CACbp0c,KAAM,oBCTN,IAAsB,SAAUjH,GAElC,SAASuwQ,IACP,IAAIxxQ,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAGhE,OADAS,EAAMkI,KAAO,SACNlI,CACT,CAwCA,OA9CA,UAAUwxQ,EAAQvwQ,GAWlBuwQ,EAAOyoP,kBAAoB,WACzB,OAAO,GACT,EAIAzoP,EAAO/xQ,UAAUw/c,WAAa,SAAUh6b,GACtC1lB,KAAKg7f,aAAa,CAChBt1e,KAAMA,IAER,IAAIvkB,EAAKnB,KAAKmlC,QACZ8zX,EAAS93Z,EAAG83Z,OACZD,EAAS73Z,EAAG63Z,OACZ+iG,EAAY56f,EAAG46f,UAIjB,IAAK,CACHr/C,MAJO18c,KACI08c,MAIXv3a,QALOnlC,KAEMmlC,UAKfnlC,KAAK08c,MAAMgD,WAAWm8C,IAAyBn2e,EAAMuzY,EAAQD,EAAQC,EAAQ8iG,GAC/E,EAIA9pP,EAAO/xQ,UAAUw6f,kBAAoB,WACnC,OAAOzoP,EAAOyoP,mBAChB,EAIAzoP,EAAO/xQ,UAAUs7f,iBAAmB,WAClC,OAAO,GACT,EACOvpP,CACT,CAhD0B,CAgDxBwoP,KHtDSiF,IAAiB,iBAEjBC,IAAuB,mBAEvBC,IAAsB,iBAGtBC,IAAuB,sBAEvBC,IAAY,QACZC,IAAY,QAIZ,IAAkB,CAC3BhiD,cAAe,CAAC,EAAG,IACnBhgH,QAAS,EACTn8D,QAAS,EACTt3J,MAAO,IAAK,CAAC,EAAG,IAAGq1X,KAAwB,CACzCzlf,IAAK,EACLC,IAAK,EACLoqN,MAAM,GACL,KACH33K,MAAO,CACL9gD,MAAO,CACL8vC,KAAM,OACN96B,SAAU,KAGdikP,QAAS,CACPv3G,WAAW,EACXmhT,aAAa,EACb18K,QAAQ,GAEV8sO,cAAe,CACbxwf,QAAS,GACTE,QAAS,EACT3C,MAAO,CACLgV,SAAU,GACV86B,KAAM,sBItCDokd,IAAsB,sBAK1B,SAASC,IAAcv6e,EAAM0wb,EAAYjxa,GAC9C,IAAI+6d,EACAjnG,EAAS9zX,EAAQ8zX,OACnBr3H,EAAUz8P,EAAQy8P,QAClBm8D,EAAU54T,EAAQ44T,QAChBoiK,GAAiB,WAAI,UAAM/pD,EAAYn9C,GAAS,CAACA,IACjD9+Y,GAAM,UAASynR,GAAWA,EAAU,EACpC1nR,GAAM,UAAS6jV,GAAWA,EAAU,EAUxC,OARAmiK,GAAa,UAAIx6e,GAAM,SAAU0c,EAAKp6B,GACpC,IAAI+wD,GAAW32B,EAAI62X,IAAW,GAAKknG,EAKnC,OAJA/9d,EAAIs9d,KAAkB3mc,EACtB32B,EAAIu9d,MAAyBxlf,EAAMD,GAAO6+C,EAAU7+C,EAEpDkoB,EAAIw9d,KAAuB,EAAC,UAAIl6e,EAAM,CAAC1d,EAAQ,EAAGixZ,IAAU72X,EAAI62X,IACzD72X,CACT,IACO89d,CACT,CAKO,SAASE,IAAuBC,GACrC,OAAO,SAAU/+e,GACf,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QAEf45d,EAAgB55d,EAAQ45d,cAExBr5e,EADayf,EAAQw5a,cACEjC,EAAMzf,aAAav3a,KAC9C,GAAIq5e,EAAe,CACjB,IAAIuB,EAAcvB,EAAch1K,UAChCrkU,EAAKtd,SAAQ,SAAU2rB,EAAK/rB,GAC1B,KAAIA,GAAS,GAAKia,OAAOC,MAAM6R,EAAI4re,OAAnC,CACA,IAAIY,EAAaF,EAAkBtse,EAAK/rB,EAAO0d,EAAM,CACnDzW,KAAK,EACLhN,KAAM+9f,IACNn/e,KAAM,CACJi2D,SAAS,UAAWwpb,GAAeA,EAAYvse,EAAKrO,GAAQ46e,EAC5D/xf,QAASwwf,EAAcxwf,QACvBE,QAASswf,EAActwf,QACvB08C,SAAU,MACVqrX,YAAY,EACZ1qa,OAAO,UAAS,CACdmV,UAAW,QACXC,aAAc,UACb69e,EAAcjzf,UAGrB4wc,EAAMpN,aAAap5a,KAAKqqe,EAhByC,CAiBnE,GACF,CACA,OAAOj/e,CACT,CACF,CCpDA,SAAS,IAAMA,GACb,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfhkC,EAAKgkC,EAAQzf,KACfA,OAAc,IAAPvkB,EAAgB,GAAKA,EAI1B++f,EAAaD,IAAcv6e,EAAMA,EAAM,CACzCuzY,OAJS9zX,EAAQ8zX,OAKjBr3H,QAJUz8P,EAAQy8P,QAKlBm8D,QAJU54T,EAAQ44T,UAQpB,OADA2+G,EAAMh3b,KAAKw6e,GACJ5+e,CACT,CAKA,SAAS,IAASA,GAChB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACf6zX,EAAS7zX,EAAQ6zX,OACnBC,EAAS9zX,EAAQ8zX,OACjBllX,EAAQ5O,EAAQ4O,MAChBgxN,EAAU5/N,EAAQ4/N,QAClBn4M,EAAQznB,EAAQynB,MAChBzrD,EAAKgkC,EAAQ1/B,MACbA,OAAe,IAAPtE,EAAgB,SAAWA,EACnCq/f,EAAcr7d,EAAQq7d,YACtBj9c,EAAQpe,EAAQoe,MACdrsC,EAAKuif,IAAkB10P,EAAS,CAACi0J,EAAQC,IAC3Cr5R,EAAS1oH,EAAG0oH,OACZmqN,EAAY7yU,EAAG6yU,UAqBjB,OApBA,IAAa,CACX2yH,MAAOA,EACPv3a,QAAS,CACPx8B,KAAM,WACNqwZ,OAAQA,EACRC,OAAQ0mG,IACRx1B,WAAYnxE,EACZihG,eAAe,UAAQr6X,IAAWA,EAAOrsH,OAAO,CAACmsf,IAAgBE,MACjEpuK,QAAS,CACP/rV,MAAOA,EACPs/P,QAASglF,EACTh2S,MAAOA,EACPjoC,MAAO00f,GAET5zc,MAAOA,EACPrJ,MAAOA,KAGD6xc,IAAa9ze,EAAOo7b,MAAO,YACjC9iM,OAAO,aACJt4P,CACT,CAKA,SAAS2qZ,IAAU3qZ,GACjB,IAAIo7b,EAAQp7b,EAAOo7b,MAEflxC,EADQlqZ,EAAO6jB,QACQqmY,aAK3B,OAJAkxC,EAAMz+L,WAAW,CACft1Q,KAAM,OACN4xB,QAAUixY,EAAmD,GAApC,CAAC,CAAC,aAAc,CAAC,QAAS,GAAI,MAElDlqZ,CACT,CAKO,SAAS,IAAcA,GAC5B,IAAI6jB,EAAU7jB,EAAO6jB,QACnBu3a,EAAQp7b,EAAOo7b,MACb96K,EAAUz8P,EAAQy8P,QAElB83H,GAAY,UAAIgjD,EAAO,CAAC,aAAc,IAAK,aAAc,IACzDp4a,GAAO,UAAIo4a,EAAO,CAAC,UAAW,OAAQ,WACtCzxc,GAAI,UAAIyuZ,GAAW,SAAUjiZ,GAC/B,OAAO,UAAIA,EAAM,CAAC,IAAK,aAAc,IAAK,MAAQ6sB,EAAO,EAC3D,IASA,OADA87d,KAPwB,SAA2BjoS,EAAOsoS,EAAY/6e,EAAMg7e,GAC1E,IAAI3nc,EAAU6oO,GAAWA,EAAUzpE,EAAMwnS,MAAyB,EAClE,OAAO,WAAS,UAAS,CAAC,EAAGe,GAAiB,CAC5Ch6e,MAAO,CAACzb,EAAEw1f,EAAa,IAAMA,EAAa,GAAK1nc,GAC/ClqC,IAAK,CAAC5jB,EAAEw1f,EAAa,IAAMA,EAAa,GAAK1nc,EAAU,MAE3D,GACAqnc,CAA0C9+e,GACnCA,CACT,CAMO,SAASq/e,IAAYr/e,GAC1B,OAAOivN,IAAK,IAAO,IAAU07L,IAAW,IAAjC17L,CAAgDjvN,EACzD,CCxGA,SAAS,IAAMA,GACb,IAAIngB,EACAu7c,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfjuB,EAAKiuB,EAAQzf,KACfA,OAAc,IAAPxO,EAAgB,GAAKA,EAC5B+hZ,EAAS9zX,EAAQ8zX,OAMnB,OAJAyjD,EAAMh3b,KAAKA,GACXg3b,EAAM5jc,QAAO3X,EAAK,CAAC,GAAM83Z,GAAU,CACjClmS,MAAM,GACL5xH,IACImgB,CACT,CAKA,SAAS,IAASA,GAChB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfzf,EAAOyf,EAAQzf,KACjBszY,EAAS7zX,EAAQ6zX,OACjBC,EAAS9zX,EAAQ8zX,OACjBllX,EAAQ5O,EAAQ4O,MAChB6sd,EAAez7d,EAAQy7d,aACvBp1F,EAAermY,EAAQqmY,aACvBzmK,EAAU5/N,EAAQ4/N,QAClB68B,EAAUz8P,EAAQy8P,QAClBm8D,EAAU54T,EAAQ44T,QAClBnxS,EAAQznB,EAAQynB,MAChB4zc,EAAcr7d,EAAQq7d,YACtBj9c,EAAQpe,EAAQoe,MAChBs9c,EAAiB17d,EAAQ07d,eAwD3B,OAvDAnkD,EAAMhiJ,MAAM,SAAU,CACpB96L,OAAQ,CAACghY,GAET30F,WAAYT,EACZpxV,QAASoxV,EAAe,EAAI,CAAC,GAAI,EAAG,EAAG,GACvCh+Q,UAAWqzW,EACX/kE,SAAU,SAAkB1pL,EAAMsoD,GAChC,IAAI1yT,EAAQwja,EAAe9wG,EAAM46K,SAAW56K,EAAMy6K,YAC7C3pE,GACHp5J,EAAK6L,WAAW,CACdt1Q,KAAM,OACN4xB,QAAS,CAAC,CAAC,aAAc,CAAC,QAAmB,IAAVvyB,GAAe,EAAI,GAAI,MAG9D,IAAI84f,EAAgBb,IAAcvlM,EAAMh1S,KAAMA,EAAM,CAClDuzY,OAAQA,EACRr3H,QAASA,EACTm8D,QAASA,IAEX3rF,EAAK1sP,KAAKo7e,GAEV,IAAI3/f,EAAKs4f,IAAkB10P,EAAS,CAACi0J,EAAQC,EAAQ2nG,IACnDhhY,EAASz+H,EAAGy+H,OACZmqN,EAAY5oV,EAAG4oV,UACbg3K,EAAoBv1F,EAAe,CACrCroV,OAAkB,IAAVn7E,EAAc,IAAM,GAC5BmjD,SAAoB,IAAVnjD,EAAc,SAAW,OACjC,CACFm7E,OAAQ,GACRh4B,SAAU,OACVr/C,MAAO,CACLmV,UAAqB,IAAVjZ,EAAc,MAAQ,UAGrC,IAAa,CACX00c,MAAOtqM,EACPjtO,QAAS,CACPx8B,KAAM,WACNqwZ,OAAQA,EACRC,OAAQ0mG,IACRx1B,WAAYnxE,EACZihG,eAAe,UAAQr6X,IAAWA,EAAOrsH,OAAO,CAACmsf,IAAgBE,MACjEpuK,QAAS,CAEP/rV,MAAO,SACPs/P,QAASglF,EACTh2S,MAAOA,EACPjoC,MAAO00f,GAET5zc,OAAiB,IAAVA,GAA0Bsoc,IAAW,CAAC,EAAG6L,EAAmBn0c,GACnErJ,MAAOA,IAGb,IAEKjiC,CACT,CACO,SAAS0/e,IAAqB1/e,GAEnC,IAAIo7b,EAAQp7b,EAAOo7b,MACjB10c,EAAQsZ,EAAOtZ,MACfm9B,EAAU7jB,EAAO6jB,QACf45d,EAAgB55d,EAAQ45d,cAC1BvzF,EAAermY,EAAQqmY,eACxB,UAASxja,GAAS,CAAC00c,GAASA,EAAMlnM,OAAOptQ,SAAQ,SAAUgqQ,EAAM6uP,GAEhE,IAAIvnG,GAAY,UAAItnJ,EAAM,CAAC,aAAc,IAAK,aAAc,IACxD9tO,GAAO,UAAI8tO,EAAM,CAAC,UAAW,OAAQ,WACrCnnQ,GAAI,UAAIyuZ,GAAW,SAAUjiZ,GAC/B,OAAO,UAAIA,EAAM,CAAC,IAAK,aAAc,IAAK,MAAQ6sB,EAAO,EAC3D,IAkBA87d,KAjBwB,SAA2BjoS,EAAOsoS,EAAY/6e,EAAMg7e,GAC1E,IAAI96f,EAAiC,KAAxBoC,GAASi5f,IAAoB,EAAI,EAC9C,OAAO/L,IAAW,CAAC,EAAGwL,EAAgB,CACpCh6e,MAAO,CAACzb,EAAEw1f,EAAa,IAAMA,EAAa,GAAKtoS,EAAMwnS,MACrD9we,IAAK,CAAC5jB,EAAEw1f,EAAa,IAAMA,EAAa,GAAKtoS,EAAMwnS,KAAwB,KAC3E9+e,KAAM2qZ,EAAe,CACnB1/Z,MAAO,CACLmV,UAAW,UAEX,CACF1S,SAA2B,IAAlBwwf,EAA0Bn5f,EAAQm5f,EAAcxwf,QAAU,EACnEzC,MAAO,CACLmV,UAAoC,KAAxBjZ,GAASi5f,GAAmB,MAAQ,WAIxD,GACAb,CAA0ClL,IAAW,CAAC,EAAG,CACvDx4C,MAAOtqM,EACPjtO,QAASA,IAEb,GACF,CAKA,SAAS,IAAc7jB,GAMrB,OALYA,EAAOo7b,MAEbp8c,KAAK,eAAe,WACxB,OAAO0ggB,IAAqB1/e,EAC9B,IACOA,CACT,CCjIA,SAAS,IAAMA,GACb,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfhkC,EAAKgkC,EAAQzf,KACfA,OAAc,IAAPvkB,EAAgB,GAAKA,EAC5B83Z,EAAS9zX,EAAQ8zX,OAEf7sY,GAAM,UAAO1G,GAAM,SAAUozC,EAAOrhD,GACtC,OAAOqhD,GAASrhD,EAAKwhZ,IAAW,EAClC,GAAG,GACC9+Y,GAAM,UAAMuL,EAAMuzY,GAAQA,GAC1BinG,GAAa,UAAIx6e,GAAM,SAAU0c,EAAKp6B,GAExC,IAAIiD,EAAI,GACJC,EAAI,GAGR,GAFAk3B,EAAIy9d,MAAyBz9d,EAAI62X,IAAW,GAAK7sY,EAE7CpkB,EAAO,CACT,IAAIk5f,EAAWx7e,EAAK1d,EAAQ,GAAG83f,KAC3BqB,EAAWz7e,EAAK1d,EAAQ,GAAG+3f,KAC/B90f,EAAE,GAAKi2f,EAAS,GAChBh2f,EAAE,GAAKi2f,EAAS,GAChBl2f,EAAE,GAAKi2f,EAAS,GAChBh2f,EAAE,GAAKi2f,EAAS,EAClB,MACEl2f,EAAE,IAAM,GACRC,EAAE,GAAK,EACPD,EAAE,GAAK,GACPC,EAAE,GAAK,EAYT,OATAA,EAAE,GAAKA,EAAE,GAAKk3B,EAAIy9d,KAClB50f,EAAE,IAAMC,EAAE,GAAK,GAAK,EACpBA,EAAE,GAAKA,EAAE,GACTD,EAAE,IAAMA,EAAE,GAEVm3B,EAAI09d,KAAa70f,EACjBm3B,EAAI29d,KAAa70f,EACjBk3B,EAAIs9d,MAAmBt9d,EAAI62X,IAAW,GAAK9+Y,EAC3CioB,EAAIw9d,KAAuB,EAAC,UAAIl6e,EAAM,CAAC1d,EAAQ,EAAGixZ,IAAU72X,EAAI62X,IACzD72X,CACT,IAEA,OADAs6a,EAAMh3b,KAAKw6e,GACJ5+e,CACT,CAKA,SAAS,IAASA,GAChB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACf6zX,EAAS7zX,EAAQ6zX,OACnBC,EAAS9zX,EAAQ8zX,OACjBllX,EAAQ5O,EAAQ4O,MAChBgxN,EAAU5/N,EAAQ4/N,QAClBn4M,EAAQznB,EAAQynB,MAChB4zc,EAAcr7d,EAAQq7d,YACtBj9c,EAAQpe,EAAQoe,MACdpiD,EAAKs4f,IAAkB10P,EAAS,CAACi0J,EAAQC,IAC3Cr5R,EAASz+H,EAAGy+H,OACZmqN,EAAY5oV,EAAG4oV,UAmBjB,OAjBA,IAAa,CACX2yH,MAAOA,EACPv3a,QAAS,CACPx8B,KAAM,UACNqwZ,OAAQ8mG,IACR7mG,OAAQ8mG,IACR51B,WAAYnxE,EACZihG,eAAe,UAAQr6X,IAAWA,EAAOrsH,OAAO,CAACmsf,IAAgBE,MACjEhzc,MAAOA,EACPrJ,MAAOA,EACPiuS,QAAS,CACPzsF,QAASglF,EACTh2S,MAAOA,EACPjoC,MAAO00f,MAINl/e,CACT,CAKA,SAAS,IAAUA,GACjB,IAAIo7b,EAAQp7b,EAAOo7b,MAEflxC,EADQlqZ,EAAO6jB,QACQqmY,aAK3B,OAJAkxC,EAAMz+L,WAAW,CACft1Q,KAAM,OACN4xB,QAASixY,EAAe,CAAC,CAAC,aAAc,CAAC,UAAW,MAAQ,KAEvDlqZ,CACT,CAKA,SAAS,IAAcA,GAQrB,OADA8+e,KANwB,SAA2BjoS,EAAOsoS,EAAY/6e,EAAMg7e,GAC1E,OAAO,WAAS,UAAS,CAAC,EAAGA,GAAiB,CAC5Ch6e,MAAO,CAACyxM,EAAM2nS,KAAW,GAAI3nS,EAAM4nS,KAAW,IAC9Clxe,IAAK,CAACspM,EAAM2nS,KAAW,GAAK,IAAM3nS,EAAM4nS,KAAW,KAEvD,GACAK,CAA0C9+e,GACnCA,CACT,CC3HA,SAAS,IAAMA,GACb,IAAIngB,EACAu7c,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfjuB,EAAKiuB,EAAQzf,KACfA,OAAc,IAAPxO,EAAgB,GAAKA,EAC5B+hZ,EAAS9zX,EAAQ8zX,OAMnB,OAJAyjD,EAAMh3b,KAAKA,GACXg3b,EAAM5jc,QAAO3X,EAAK,CAAC,GAAM83Z,GAAU,CACjClmS,MAAM,GACL5xH,IACImgB,CACT,CAKA,SAAS,IAASA,GAChB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACf6zd,EAAc7zd,EAAQ6zd,YACxBxtF,EAAermY,EAAQqmY,aACvBq1F,EAAiB17d,EAAQ07d,eAc3B,OAbAnkD,EAAMhiJ,MAAM,OAAQ,CAClB96L,OAAQ,CAACo5X,GACT5+a,QAAS,CAACoxV,EAAe,EAAI,GAAI,GAAI,EAAG,IACxCh+Q,UAAWqzW,EACX/kE,SAAU,SAAkB1pL,EAAMsoD,GAChCimM,IAAYzL,IAAW,CAAC,EAAG5ze,EAAQ,CACjCo7b,MAAOtqM,EACPjtO,QAAS,CACPzf,KAAMg1S,EAAMh1S,QAGlB,IAEKpE,CACT,CCnCA,IAAI8/e,IAAmC,SAAU1/f,GAE/C,SAAS0/f,IACP,IAAI3ggB,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAEhE,OADAS,EAAM4ggB,WAAY,EACX5ggB,CACT,CAwCA,OA7CA,UAAU2ggB,EAAqB1/f,GAM/B0/f,EAAoBlhgB,UAAU62R,OAAS,SAAU5xP,GAC/C,IAAI1kC,EAAQT,KAEZ,IAAKA,KAAKqhgB,UAAW,CACnB,IAAIrI,EAAc7zd,EAAQ6zd,YACxB4H,EAAez7d,EAAQy7d,aACrBU,EAAkBV,EAAeI,IAAuB,IACxD5uP,EAAOpyQ,KAAKmzB,QAAQi/O,KAEpBoD,EAAQwjP,GAAe4H,EAAexuP,EAAKoD,MAAQ,CAACpD,IACxD,UAAIoD,GAAO,SAAUvjQ,EAAGjK,GAEtB,IAAIkxf,EAAuBjnf,EAAEwoc,cAAc,cACvCwJ,GAAc,WAAO,UAAIi1C,EAAsB,CAAC,UAAW,KAAK,SAAU/3f,GAE5E,OADWA,EAAGc,OACE+9f,GAClB,IACA9G,EAAqB3pf,OAAM,IAC3B,UAAK00c,GAAa,SAAU3U,GACA,iBAAfA,GACTr9b,EAAEq9b,aAAaA,EAAW3mc,MAAM2mc,EAEpC,IACA,IAAI5pb,GAAO,UAAIzT,EAAG,CAAC,gBAAiBA,EAAEgrb,aAAav3a,MACnD47e,EAAgB,CACd5kD,MAAOzqc,EACPjK,MAAOA,EACPm9B,SAAS,WAAS,UAAS,CAAC,EAAGA,GAAU,CAEvCw5a,aAAcshD,IAAcv6e,EAAMA,EAAMyf,OAG5ClzB,EAAEovc,WAAW37b,GACbjlB,EAAM4ggB,WAAY,EAClBpvf,EAAE+4D,QAAO,EACX,GACF,CACAhrE,KAAKqhgB,WAAY,CACnB,EACOD,CACT,CA/CuC,CA+CrC,KCtDEG,IAAwB,wBACjBC,IAAuB,qBACvBC,IAAmB,CAC5B94Z,QAAS,cACTluE,OAAQ,GAAGlnB,OAAOguf,IAAuB,YCmB3C,SAAS,IAAejgf,GACtB,IAuCIxV,EAvCAq5B,EAAU7jB,EAAO6jB,QACjBy7d,EAAez7d,EAAQy7d,aACzB5nG,EAAS7zX,EAAQ6zX,OACjBC,EAAS9zX,EAAQ8zX,OACjBp3V,EAAS18B,EAAQ08B,OACjB2+b,EAAcr7d,EAAQq7d,YACtB96e,EAAOyf,EAAQzf,KACb6sY,EAAOnpV,IAAUvH,GACjB6/b,EAAgB,CAClB90c,MAAOg0c,EAAe,CACpBhhY,OAAQ,CAACo5R,EAAQC,EAAQ2nG,EAAclB,IAAgBE,KACvD71K,UAAW,SAAmB5xH,GAC5B,MAAO,GAAG5kN,OAAO4kN,EAAM8gM,GACzB,GACE,CACFr5R,OAAQ,CAACo5R,EAAQC,EAAQymG,IAAgBE,KACzCz8a,OAAQ,EACRh4B,SAAU,SACV4+R,UAAW,SAAmB5xH,GAC5B,MAAO,GAAG5kN,OAAO4kN,EAAM6gM,GAAS,KAAKzlZ,OAAO4kN,EAAM8gM,GACpD,GAEFl0J,QAAS,CACPhzM,MAAOinW,EACPjvE,UAAW,SAAmB5xH,GAC5B,MAAO,CACLl2N,KAAMk2N,EAAM6gM,GACZ72Z,MAAOg2N,EAAM8gM,GAEjB,GAEF8lG,cAAe,CAEbh1K,UAAW,SAAmB5xH,GAC5B,MAAO,GAAG5kN,OAAOg/Y,EAAKvwZ,IAAI,CAAC,gBAAiB,UAAW,MAAMuR,OAAOiqf,IAAuBn8f,WAAM,EAAQ82N,EAAMynS,MACjH,IAeJ,OAVIgB,GAAgBJ,KAClB10f,EAAQ,SAAeqsN,GACrB,OAAO+8R,IAAW,CAAC,EAEnB0L,GAAgB,CACdnhf,UAAW,EACX0B,OAAQ,SACP,UAAWq/e,GAAeA,EAAYroS,GAASqoS,EACpD,GAEKtL,IAAW,CAChB/vd,QAASu8d,GACRpgf,EAAQ,CACT6jB,QAAS,CACPq7d,YAAa10f,EACb4Z,MAAM,UAAMA,KAGlB,CAKA,SAAS,IAASpE,GAChB,IAAI6jB,EAAU7jB,EAAO6jB,QACjBy7d,EAAez7d,EAAQy7d,aACzBe,EAAgBx8d,EAAQw8d,cAE1B,OADgBx8d,EAAQ6zd,YH3CnB,SAAqB13e,GAC1B,OAAOivN,IAAK,IAAO,IAAZA,CAAsBjvN,EAC/B,CG2CWsgf,CAAYtgf,GAEjBs/e,EL0DC,SAAuBt/e,GAC5B,OAAOivN,IAAK,IAAO,IAAU,IAAtBA,CAAqCjvN,EAC9C,CK3DWugf,CAAcvgf,GAEnBqgf,EJmCC,SAA6Brgf,GAClC,OAAOivN,IAAK,IAAO,IAAU,IAAW,IAAjCA,CAAgDjvN,EACzD,CIpCWwgf,CAAoBxgf,GAEtBq/e,IAAYr/e,EACrB,CAKO,SAAS,IAAKA,GACnB,IAAIngB,EACAgkC,EAAU7jB,EAAO6jB,QACjBy1d,EAAQz1d,EAAQy1d,MAClBzB,EAAQh0d,EAAQg0d,MAChBngG,EAAS7zX,EAAQ6zX,OACjBC,EAAS9zX,EAAQ8zX,OACnB,OAAO1oL,IAAK,MAAOpvO,EAAK,CAAC,GAAM63Z,GAAU4hG,EAAOz5f,EAAG83Z,GAAUkgG,EAAOh4f,IAA7DovO,CAAmEjvN,EAC5E,CAKA,SAAS,IAAKA,GAGZ,OAFYA,EAAOo7b,MACb7oM,MAAK,GACJvyP,CACT,CAKA,SAAS,IAAOA,GACd,IAAIo7b,EAAQp7b,EAAOo7b,MAEfrlM,EADQ/1P,EAAO6jB,QACEkyO,OAQrB,OAPe,IAAXA,EACFqlM,EAAMrlM,QAAO,GAEbqlM,EAAMrlM,OAAOA,GAIR/1P,CACT,CAKO,SAAS,IAAYA,GAC1B,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QAEf43a,EAAe53a,EAAQ43a,aACzB4kD,EAAgBx8d,EAAQw8d,cAkB1B,OAjBA,UAAK5kD,GAAc,SAAU77c,IACV,IAAbA,EAAE46a,OACJ4gC,EAAM+C,kBAAkBv+c,EAAEyH,MAE1B+zc,EAAM/X,YAAYzjc,EAAEyH,KAAMzH,EAAES,KAAO,CAAC,EAExC,IAEKgggB,EAOHjlD,EAAM+C,kBAAkB+hD,KANxB9kD,EAAM/X,YAAY68D,IAAsB,CACtC96e,MAAO,EAAC,WAAS,UAAS,CAAC,EAAG+6e,KAAmB,CAC/Cjld,IAAKrX,OAMJ7jB,CACT,CAMO,SAAS,IAAQA,GACtB,OAAOivN,IAAK,IAAgB,IAAU,IAAM,IAAM,IAAS,IAAa,IAAQ7qO,IAAW,IAAO,MAA3F6qO,CAAyGjvN,EAClH,CD5KA+8a,IAAekjE,IAAuBH,KACtC18D,IAAoB88D,IAAsB,CACxC96e,MAAO,CAAC+6e,OEFV,ICRI,IDQAM,IAAsB,SAAUrggB,GAElC,SAASqggB,IACP,IAAIthgB,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAGhE,OADAS,EAAMkI,KAAO,SACNlI,CACT,CA6DA,OAnEA,UAAUshgB,EAAQrggB,GAOlBqggB,EAAOrH,kBAAoB,WACzB,OAAO,GACT,EAIAqH,EAAO7hgB,UAAUw6f,kBAAoB,WAEnC,OAAOqH,EAAOrH,mBAChB,EAIAqH,EAAO7hgB,UAAUs7f,iBAAmB,WAClC,OAAO,GACT,EAOAuG,EAAO7hgB,UAAUk/D,SAAW,SAAUz2D,EAAMs5B,EAAWw3B,QACtC,IAAXA,IACFA,GAAS,GAEX,IAAI94B,EAAW20d,IAA0Bt1f,KAAK08c,QAC9C,UAAK/7a,GAAU,SAAU8mD,GACnBxlD,EAAUwlD,EAAIw4E,YAChBx4E,EAAIroB,SAASz2D,EAAM8wD,EAEvB,GACF,EAIAsoc,EAAO7hgB,UAAUgqd,UAAY,WAC3B,IAAIvpb,EAAW20d,IAA0Bt1f,KAAK08c,OAC1Cu+C,EAAe,GAanB,OAZA,UAAKt6d,GAAU,SAAUhxB,GACvB,IAAI+V,EAAO/V,EAAQswJ,UACfogR,EAAS1wa,EAAQu6c,aACrB,UAAK7pC,GAAQ,SAAU98X,GACrB03c,EAAa16f,KAAK,CAChBmlB,KAAMA,EACN69B,MAAOA,EACP87J,SAAU1vM,EAAQ0vM,SAClB1vM,QAASA,GAEb,GACF,IACOsrf,CACT,EAGA8G,EAAOC,mBAAqBpC,IAE5BmC,EAAOE,cAAgBvC,IAEvBqC,EAAOG,oBAAsBrC,IACtBkC,CACT,CArE0B,CAqExBtH,KC5ES0H,IAAc,QACdC,IAAa,OACbC,IAAU,UACV,IAAgB,UAEhBC,IAAqB,iBACrBC,IAAgB,aAIhB,IAAkB,CAC3Bxpc,QAAS,EACTpR,MAAO,CACL65J,MAAO,IAET13G,YAAa,GACb97B,OAAQ,IACRjsD,YAAa,EAAI,EAAI9H,KAAK+B,GAC1BgG,SAAU,EAAI,EAAI/H,KAAK+B,GACvBgic,iBAAiB,EACjBnqM,KAAM,CACJ39O,KAAM,KACN02B,MAAO,CACLu2B,QAAS,GACTr3E,MAAO,CACLmV,UAAW,SACXC,aAAc,WAGlBk6Z,YAAa,CACXv6a,QAAS,GAEXs6a,SAAU,CACRt6a,QAAS,IAEXgsL,KAAM,MAERpB,UAAW,CACTupB,QAAS,CACPlpM,MAAO,CACL2T,UAAW,EACXu9O,QAAS,UAGbwlQ,IAAK,CACH12f,MAAO,CACLoT,EAAG,KACHO,UAAW,IACXm8B,KAAM,UAIZssE,UAAW,CACTn2D,OAAO,GAETu4E,MAAO,IAAK,CAAC,EAEb,IAAG63X,KAAe,CAChBpvY,KAAM,KACL,IAAGsvY,KAAW,CACftvY,KAAM,IACNy9H,UAAW,EACXvO,aAAc,IACb,KACHv8O,WAAW,GC7CN,SAAS+8f,IAAiB1pc,GAC/B,IAAI53D,EACJ,MAAO,EAAEA,EAAK,CAAC,EAAGA,EAAGkhgB,MAAW,UAAMtpc,EAAS,EAAG,GAAI53D,GACxD,CAMO,SAASuhgB,IAAa3pc,EAASpR,GACpC,IAAI65J,GAAQ,UAAI75J,EAAO,CAAC,SAAU,IAC9Bg7c,GAAa,UAAKnhT,IAAS,UAAKA,GAAS,CAAC,GAAG,UAAMzoJ,EAAS,EAAG,GAAI,GAIvE,OAHK4pc,EAAW,IACdA,EAAW/3e,QAzBR,SAA0B+8B,EAAOoR,GACtC,OAAOpR,EAEN32B,KAAI,SAAU9R,EAAGgmB,GAChB,IAAI/jC,EACJ,OAAOA,EAAK,CAAC,GAAMghgB,KAAejjf,GAAKyoC,EAAMziB,EAAM,IAAM,GAAI/jC,EAAGihgB,KAAc,GAAG7uf,OAAO2xB,GAAM/jC,EAAGkhgB,KAAWtpc,EAAS53D,CACvH,GACF,CAoBSyhgB,CAAiBD,EAAY5pc,EACtC,CCxBA,SAAS,IAASz3C,GAChB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACf4zB,EAAU5zB,EAAQ4zB,QACpBpR,EAAQxiB,EAAQwiB,MAChBqmB,EAAS7oC,EAAQ6oC,OACjB87B,EAAc3kE,EAAQ2kE,YACtB/nF,EAAaojB,EAAQpjB,WACrBC,EAAWmjB,EAAQnjB,SACnB6xP,EAAO1uO,EAAQ0uO,KACfpoF,EAAYtmJ,EAAQsmJ,UACpBo3U,EAAa19d,EAAQ09d,WACrBl6f,EAAOw8B,EAAQx8B,KACfm6f,EAAQ39d,EAAQ29d,MACd/ud,EAAQ4T,EAAM5T,MAChBgvd,EAAap7c,EAAM55C,MAGrB,GAAI09K,EAAW,CACb,IAAIu3U,EAAgBP,IAAiB1pc,GACjC1kC,EAAKqob,EAAM3nD,WAAW,CACxBrhZ,GAAI4uf,MAENjue,EAAG3O,KAAKs9e,GACR3ue,EAAGrpB,QAAQmgD,SAAS,GAAG53C,OAAO8uf,IAAS,OAAO58f,MAAMgmL,EAAUhmL,OAAS,mBAEtEmpd,WAAW,CACV3pJ,aAAcy3I,EAAMr1V,WAAW49M,aAC/Bx5I,UAAWA,IAEbp3J,EAAG4pP,WAAW,QAAS,CACrBl8P,WAAYA,EACZC,SAAUA,EACVgsD,OAAQ87B,EAAc97B,IAGxB35C,EAAGw/O,KAAKwuP,IAASxuP,GAEjBx/O,EAAGvb,MAAMupf,IAAS,IAAKxuP,EAAMigP,KAC/B,CAGA,IAAImP,EAAYP,IAAa3pc,EAAS5zB,EAAQwiB,OAC1CrzB,EAAKoob,EAAM3nD,WAAW,CACxBrhZ,GAAI6uf,MAENjue,EAAG5O,KAAKu9e,GACR,IAAIC,GAAa,UAASnvd,GAAS,CAACA,EAAO,KAAiBA,EAiC5D,OAhCU,IAAS,CACjB2oa,MAAOpob,EACP6Q,QAAS,CACP6zX,OAAQ,IACRC,OAAQkpG,IACRnJ,YAAaoJ,IACb1N,UAAW,CAAC2N,KACZt3J,SAAS,EACTvoW,SAAU,CACRuxC,MAAOmvd,EACPp3f,MAAO+2f,EACPp9f,MAAgB,UAATkD,EAAmB,cAAgB,MAE5CjI,KAAM,CACJ4pd,gBAAgB,EAChBD,YAAY,GAEdzvD,eAAgBmoG,EAChBpoG,eAAgBooG,KAEjB32S,IACgB/M,SAEVuvQ,WAAW,CAClBk0C,MAAOA,IAETxue,EAAG2pP,WAAW,QAAS,CACrBn0K,YAAaA,EACb97B,OAAQA,EACRjsD,WAAYA,EACZC,SAAUA,IACTiqZ,YACI3qZ,CACT,CAKA,SAAS,IAAKA,GACZ,IAAIngB,EACJ,OAAOovO,IAAK,MAAOpvO,EAAK,CACtBwmD,MAAO,CACLztC,IAAK,EACLC,IAAK,EACLsrZ,SAAU,EACVD,SAAU,KAER68F,KAAW,CAAC,EAAGlhgB,IAPdovO,CAOoBjvN,EAC7B,CAKA,SAAS,IAAUA,EAAQ8gE,GACzB,IAAIs6X,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACf+iF,EAAY/iF,EAAQ+iF,UACtBnvD,EAAU5zB,EAAQ4zB,QAGpB,GADA2jZ,EAAMjC,cAAc,cAAclrc,OAAM,GACpC24G,EAAW,CACb,IAAIi7Y,EAAgBj7Y,EAAUpxC,QAC1Bssb,OAAmB,EAEnBD,IACFC,EAAmBlO,IAAW,CAAC,EAAG,CAChCp+a,QAAS,GAAGvjE,QAAkB,IAAVwlD,GAAe3wC,QAAQ,GAAI,KAC/Ctc,MAAO,CACL6I,QAAS,IACTmM,SAAU,OACVC,WAAY,EACZE,UAAW,SACX8yB,MAAO,wBAERovd,IAELtM,IAAqBn6C,EAAO,CAC1Bx0V,WAAW,WAAS,UAAS,CAAC,EAAGA,GAAY,CAC3CpxC,QAASssb,KAEV,CACDrqc,QAASA,GAEb,CAIA,OAHIqpB,GACFs6X,EAAM1xY,QAAO,GAER1pD,CACT,CAIA,SAAS,IAAQA,GACf,IAAIo7b,EAAQp7b,EAAOo7b,MAEf33M,EADQzjP,EAAO6jB,QACG4/N,QAqBtB,OApBIA,EACF23M,EAAM33M,QAAQmwP,IAAW,CACvB1nW,WAAW,EACXmhT,aAAa,EACb/0B,aAAc,oEACdM,UAAW,CACT,aAAc,CACZ9/V,QAAS,UACTt5D,SAAU,SAGdoua,cAAe,SAAuBjkb,EAAGya,GACvC,IAAIqzC,GAAU,UAAIrzC,EAAM,CAAC,EAAG,OAAQ28e,KAAU,GAC9C,MAAO,GAAG9uf,QAAkB,IAAVwlD,GAAe3wC,QAAQ,GAAI,IAC/C,GACC28O,IAGH23M,EAAM33M,SAAQ,GAETzjP,CACT,CAKA,SAASijB,IAAMjjB,GAGb,OAFYA,EAAOo7b,MACbrlM,QAAO,GACN/1P,CACT,CAUO,SAAS,IAAQA,GAEtB,OAAOivN,IAAK,IAEZ7qO,IAAW,IAAU,IAAM,IAAS,IAAW,IAAa,MAAc6+B,IAFnEgsM,CAILjvN,EACJ,CCxMAyrc,IAAc,QAAS,kBAAmB,CACxCjld,KAAM,SAAcnG,EAAKqH,GAEvB,IAAI7H,EAAKQ,EAAIitd,WACXnjS,EAAYtqL,EAAGsqL,UACfw5I,EAAe9jU,EAAG8jU,aAChB/tT,EAAKu0K,EACPupB,EAAU99L,EAAG89L,QACbwtT,EAAMtrf,EAAGsrf,IACP9wf,EAAQ1I,EAAUyI,WAElBosB,EAAS79B,KAAKysd,WAAW,CAC3Bxhd,EAAG,EACHC,EAAG,IA2BL,OAxBI8pM,GAEFtjM,EAAML,SAAS,OAAQ,CACrBpP,KAAM,UACNqE,OAAO,UAAS,CACd8b,GAAIyb,EAAO5yB,EACXoX,GAAIwb,EAAO3yB,EACXoX,GAAI3gB,EAAIsJ,EACRsX,GAAI5gB,EAAIuJ,EACRiW,OAAQ8jT,GACPjwH,EAAQlpM,SAIX02f,GACF9wf,EAAML,SAAS,SAAU,CACvBpP,KAAM,MACNqE,OAAO,UAAS,CACd2E,EAAG4yB,EAAO5yB,EACVC,EAAG2yB,EAAO3yB,EACViW,OAAQ8jT,GACPu9L,EAAI12f,SAGJ4F,CACT,ICtCFq7c,IAAc,WAAY,cAAe,CACvCjld,KAAM,SAAcnG,EAAKqH,GAEvB,IAAI7H,EAAKQ,EAAIitd,WAAWk0C,MACtBA,OAAe,IAAP3hgB,EAAgB,CAAC,EAAIA,EAC3B+V,EAAK4rf,EAAM9+a,MACbq/a,OAAc,IAAPnsf,EAAgB,GAAKA,EAC5BC,EAAK2rf,EAAMQ,UACXC,OAAoB,IAAPpsf,EAAgB,GAAMA,EACrCksf,EAAOA,EAAO,EAAI,EAAIA,EAEtBE,GAAa,UAAMA,EAAY,EAAG,GAClC,IAAIjle,EAAKt+B,KAAKi+Q,WACZulP,EAAoBlle,EAAGvc,WACvB0hf,EAAkBnle,EAAGtc,SACnB0hf,EAAM,EACNH,EAAa,GAAKA,EAAa,IAEjCG,GADYD,EAAkBD,GAChBH,GAAQE,GAAc,EAAIA,GAAc,EAAI,EAAIF,IAUhE,IARA,IAAIM,EAAWD,GAAO,EAAIH,GAAcA,EACpC7xf,EAAQ1I,EAAUyI,WAElBosB,EAAS79B,KAAKi+Q,WAAWiuJ,YACzBl+V,EAAShuE,KAAKi+Q,WAAWmuJ,YACzB7tY,EAAK49b,IAAKljc,SAASt3B,EAAK3B,KAAKi+Q,YAC/B2lP,EAAcrle,EAAGxc,WACjB8hf,EAAYtle,EAAGvc,SACRD,EAAa6hf,EAAa7hf,EAAa8hf,GAAY,CAC1D,IAAI7hf,OAAW,EACX9C,GAAK6C,EAAayhf,IAAsBG,EAAWD,GAErD1hf,EADE9C,EAAIykf,EACK5hf,GAAc4hf,EAAWzkf,IAEpC6C,GAAc4hf,EAAWD,EAAMxkf,GACPykf,EAE1B,IAAI98f,EAAOs1d,IAAKplC,cAAcl5Z,EAAO5yB,EAAG4yB,EAAO3yB,EAAG8iE,EAAQjsD,EAAY9H,KAAKC,IAAI8H,EAAU6hf,GAAY71b,EAAShuE,KAAKi+Q,WAAWn0K,aAC9Hp4F,EAAML,SAAS,OAAQ,CACrBpP,KAAM,cACNqE,MAAO,CACLO,KAAMA,EACN+0C,KAAMj6C,EAAIoyC,MACV5yB,OAAQxf,EAAIoyC,MACZt0B,UAAW,MAGfsC,EAAaC,EAAW0hf,CAC1B,CACA,OAAOhyf,CACT,IC5CF,IAAIoyf,IAAqB,SAAUpigB,GAEjC,SAASoigB,IACP,IAAIrjgB,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAGhE,OADAS,EAAMkI,KAAO,QACNlI,CACT,CAiDA,OAvDA,UAAUqjgB,EAAOpigB,GAWjBoigB,EAAMpJ,kBAAoB,WACxB,OAAO,GACT,EAKAoJ,EAAM5jgB,UAAUw/c,WAAa,SAAU3mZ,GACrC/4D,KAAK08c,MAAMl8c,KAAK+2Z,IAAiBooD,mBAAoB,IAAMpF,SAASv6c,KAAK08c,MAAOnlD,IAAiBooD,mBAAoB,OACrH3/c,KAAKg7f,aAAa,CAChBjic,QAASA,IAEX,IAAIgrc,EAAgB/jgB,KAAK08c,MAAMlnM,MAAMhiQ,MAAK,SAAUvB,GAClD,OAAOA,EAAEyB,KAAO4uf,GAClB,IACIyB,GACFA,EAAcr+e,KAAK+8e,IAAiB1pc,IAEtC,IAAIirc,EAAYhkgB,KAAK08c,MAAMlnM,MAAMhiQ,MAAK,SAAUvB,GAC9C,OAAOA,EAAEyB,KAAO6uf,GAClB,IACIyB,GACFA,EAAUt+e,KAAKg9e,IAAa3pc,EAAS/4D,KAAKmlC,QAAQwiB,QAGpD,IAAU,CACR+0Z,MAAO18c,KAAK08c,MACZv3a,QAASnlC,KAAKmlC,UACb,GACHnlC,KAAK08c,MAAMl8c,KAAK+2Z,IAAiBqoD,kBAAmB,IAAMrF,SAASv6c,KAAK08c,MAAOnlD,IAAiBqoD,kBAAmB,MACrH,EAKAkkD,EAAM5jgB,UAAUw6f,kBAAoB,WAClC,OAAOoJ,EAAMpJ,mBACf,EAIAoJ,EAAM5jgB,UAAUs7f,iBAAmB,WACjC,OAAO,GACT,EACOsI,CACT,CAzDyB,CAyDvBrJ,KCnEF,SAASwJ,IAAU9hgB,EAAO+hgB,EAAUC,GAElC,GAAkB,IAAdA,EACF,MAAO,CAAC,EAAGD,GAEb,IAAIl8f,EAAQiS,KAAKwX,MAAMtvB,EAAQ+hgB,GAC/B,MAAO,CAACA,EAAWl8f,EAAOk8f,GAAYl8f,EAAQ,GAChD,CAaO,SAASo8f,IAAa1+e,EAAM2+e,EAAUH,EAAUC,EAAW/pI,GAChE,IAAIkqI,GAAkB,UAAM5+e,IAE5B,UAAO4+e,EAAiBD,GAExB,IAAI7je,GAAS,SAAY8je,EAAiBD,GACtC18c,GAAQ,UAASnnB,GACjBuie,EAAap7c,EAAMxtC,IAAMwtC,EAAMztC,IAE/Bqqf,EAAYL,EAKhB,IAJKA,GAAYC,IACfI,EAAYJ,EAAY,EAAIpB,GAAcoB,EAAY,GAAKx8c,EAAMxtC,MAG9D+pf,IAAaC,EAAW,CAC3B,IAAIK,EA1BR,SAAiBhke,GACf,OAAOvmB,KAAKisJ,KAAKjsJ,KAAKy/B,IAAIlZ,EAAO3/B,QAAUoZ,KAAKi2Q,KAAO,CACzD,CAwB4Bu0O,CAAQjke,GAChC+je,EAAYxB,EAAayB,CAC3B,CAEA,IAAIp2R,EAAO,CAAC,EACR9rM,GAAS,UAAQgie,EAAiBlqI,IAElC,UAAQ93V,IACV,UAAKgie,GAAiB,SAAU5+e,GAC9B,IACIymM,EAAM83S,IADEv+e,EAAK2+e,GACUE,EAAWJ,GAClC91I,EAAS,GAAG96W,OAAO44M,EAAI,GAAI,KAAK54M,OAAO44M,EAAI,KAC1C,UAAOiiB,EAAMigJ,KAChBjgJ,EAAKigJ,GAAU,CACb1mU,MAAOwkK,EACPr7L,MAAO,IAGXs9M,EAAKigJ,GAAQv9V,OAAS,CACxB,IAEAtZ,OAAOopB,KAAK0B,GAAQl6B,SAAQ,SAAUs8f,IACpC,UAAKpie,EAAOoie,IAAW,SAAUh/e,GAC/B,IACIymM,EAAM83S,IADEv+e,EAAK2+e,GACUE,EAAWJ,GAClC91I,EAAS,GAAG96W,OAAO44M,EAAI,GAAI,KAAK54M,OAAO44M,EAAI,IAC3Cw4S,EAAiB,GAAGpxf,OAAO86W,EAAQ,KAAK96W,OAAOmxf,IAC9C,UAAOt2R,EAAMu2R,KAChBv2R,EAAKu2R,GAAkB,CACrBh9c,MAAOwkK,EACPr7L,MAAO,GAETs9M,EAAKu2R,GAAgBvqI,GAAcsqI,GAErCt2R,EAAKu2R,GAAgB7ze,OAAS,CAChC,GACF,IAGF,IAAI8ze,EAAW,GAIf,OAHA,UAAKx2R,GAAM,SAAUjiB,GACnBy4S,EAASrkgB,KAAK4rN,EAChB,IACOy4S,CACT,CC9EO,IAAIC,IAAoB,QAEpBC,IAAoB,QAIpB,IAAkB5P,IAAW,CAAC,EAAGuF,IAAKC,oBAAqB,CACpE2D,YAAa,CACXl9e,OAAQ,WAEV4jP,QAAS,CACPktB,QAAQ,EACR08K,aAAa,GAEfoO,aAAc,CAAC,CACbp0c,KAAM,oBCPV,SAAS,IAAS2Y,GAChB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfzf,EAAOyf,EAAQzf,KACjB2+e,EAAWl/d,EAAQk/d,SACnBF,EAAYh/d,EAAQg/d,UACpBD,EAAW/+d,EAAQ++d,SACnBnwd,EAAQ5O,EAAQ4O,MAChBqmV,EAAaj1V,EAAQi1V,WACrB/iH,EAASlyO,EAAQkyO,OACjBgnP,EAAcl5d,EAAQk5d,YAEpBuG,EAAWR,IAAa1+e,EAAM2+e,EAAUH,EAAUC,EAAW/pI,GAqBjE,OApBAsiF,EAAMh3b,KAAKk/e,GAaX,IAZQ1P,IAAW,CAAC,EAAG5ze,EAAQ,CAC7B6jB,QAAS,CACP6zX,OAAQ6rG,IACR5rG,OAAQ6rG,IACR9L,YAAa5+H,EACbrvB,SAAS,EACTvoW,SAAU,CACRuxC,MAAOA,EACPjoC,MAAOuyf,OAMThnP,GAAU+iH,EACZsiF,EAAMrlM,OAAO+iH,EAAY/iH,GAEzBqlM,EAAMrlM,QAAO,GAER/1P,CACT,CAKA,SAAS,IAAKA,GACZ,IAAIngB,EACAgkC,EAAU7jB,EAAO6jB,QACjBy1d,EAAQz1d,EAAQy1d,MAClBzB,EAAQh0d,EAAQg0d,MAClB,OAAO5oR,IAAK,MAAOpvO,EAAK,CAAC,GAAM0jgB,KAAqBjK,EAAOz5f,EAAG2jgB,KAAqB3L,EAAOh4f,IAAnFovO,CAAyFjvN,EAClG,CAKA,SAAS,IAAKA,GACZ,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfy1d,EAAQz1d,EAAQy1d,MAClBzB,EAAQh0d,EAAQg0d,MAYlB,OAVc,IAAVyB,EACFl+C,EAAM7oM,KAAKgxP,KAAmB,GAE9BnoD,EAAM7oM,KAAKgxP,IAAmBjK,IAElB,IAAVzB,EACFz8C,EAAM7oM,KAAKixP,KAAmB,GAE9BpoD,EAAM7oM,KAAKixP,IAAmB3L,GAEzB73e,CACT,CAKA,SAAS,IAAMA,GACb,IAAIo7b,EAAQp7b,EAAOo7b,MAEf9vZ,EADQtrC,EAAO6jB,QACCynB,MAChByyJ,EAAW+1S,IAAa14C,EAAO,YACnC,GAAK9vZ,EAEE,CACL,IAAIvsD,EAAWusD,EAAMvsD,SACnBsB,GAAM,UAAOirD,EAAO,CAAC,aACvByyJ,EAASzyJ,MAAM,CACbgzE,OAAQ,CAACklY,KACTzkgB,SAAUA,EACVsB,IAAK4zf,IAAe5zf,IAExB,MATE09M,EAASzyJ,OAAM,GAUjB,OAAOtrC,CACT,CAMO,SAAS,IAAQA,GAEtB,OAAOivN,IAAK,IAAO,IAAQ,eAAgB,IAAU,IAAM,IAAM,IAAO,IAAO,IAAS,IAAa7qO,IAA9F6qO,CAAyGjvN,EAClH,CCxGA,IAAIyjf,IAAyB,SAAUrjgB,GAErC,SAASqjgB,IACP,IAAItkgB,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAGhE,OADAS,EAAMkI,KAAO,YACNlI,CACT,CA+BA,OArCA,UAAUskgB,EAAWrjgB,GAWrBqjgB,EAAUrK,kBAAoB,WAC5B,OAAO,GACT,EACAqK,EAAU7kgB,UAAUw/c,WAAa,SAAUh6b,GACzC1lB,KAAKg7f,aAAa,CAChBt1e,KAAMA,IAER,IAAIvkB,EAAKnB,KAAKmlC,QACZk/d,EAAWljgB,EAAGkjgB,SACdF,EAAYhjgB,EAAGgjgB,UACfD,EAAW/igB,EAAG+igB,SACd9pI,EAAaj5X,EAAGi5X,WAClBp6X,KAAK08c,MAAMgD,WAAW0kD,IAAa1+e,EAAM2+e,EAAUH,EAAUC,EAAW/pI,GAC1E,EAIA2qI,EAAU7kgB,UAAUw6f,kBAAoB,WACtC,OAAOqK,EAAUrK,mBACnB,EAIAqK,EAAU7kgB,UAAUs7f,iBAAmB,WACrC,OAAO,GACT,EACOuJ,CACT,CAvC6B,CAuC3BtK,KCvCS,IAAkBvF,IAAW,CAAC,EAAGuF,IAAKC,oBAAqB,CACpE31P,QAAS,CACPktB,QAAQ,EACR08K,aAAa,EACbD,gBAAgB,EAChBnf,WAAY,CACV5mb,KAAM,MAGV0uQ,OAAQ,CACNlsN,SAAU,WACVo+D,MAAO,CAAC,GAEVwhP,SAAS,ICfPi6J,IAAkC,SAAUtjgB,GAE9C,SAASsjgB,IACP,OAAkB,OAAXtjgB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAkCA,OArCA,UAAUglgB,EAAoBtjgB,GAI9BsjgB,EAAmB9kgB,UAAUq2H,OAAS,WACpC,IAAI67I,EAAOpyQ,KAAKilgB,UACZ7kgB,EAAMJ,KAAKmzB,QAAQpoB,MACvB,GAAI3K,EAAIslB,KAAM,CAEZ,IAAI0ia,EAAUhob,EAAIslB,KAAKygC,MACnBzlC,EAAS0xP,EAAKhzD,WAAW7uM,QAAO,SAAUiwM,GAC5C,MAAqB,UAAdA,EAAK73M,IACd,KACA,UAAK+X,GAAQ,SAAU1V,IACrB,UAAKA,EAAM21B,UAAU,SAAUhxB,GAC7B,IAAI4mH,GAEI,KAFK,UAAU6xT,GAAS,SAAU3wa,GACxC,OAAOA,EAAKiO,OAAS/V,EAAQ+V,IAC/B,IACA/V,EAAQyvD,SAAS,SAAUm3D,EAC7B,GACF,GACF,CACF,EACAyuY,EAAmB9kgB,UAAUg2D,MAAQ,WACnC,IACIx1C,EADO1gB,KAAKilgB,UACE7lT,WAAW7uM,QAAO,SAAUiwM,GAC5C,MAAqB,UAAdA,EAAK73M,IACd,KACA,UAAK+X,GAAQ,SAAU1V,IACrB,UAAKA,EAAM21B,UAAU,SAAUhxB,GAC7BA,EAAQyvD,SAAS,UAAU,EAC7B,GACF,GACF,EACA4lc,EAAmB9kgB,UAAU+kgB,QAAU,WACrC,OAAOjlgB,KAAKmzB,QAAQi/O,IACtB,EACO4yP,CACT,CAvCsC,CAuCpC,KCxCF3mE,IAAe,gBAAiB2mE,KAChCtgE,IAAoB,gBAAiB,CACnCh+a,MAAO,CAAC,CACNiiF,QAAS,eACTluE,OAAQ,yBAEV5L,IAAK,CAAC,CACJ85E,QAAS,eACTluE,OAAQ,0BCLZ,IAAI,IAAoB,SAAU/4B,GAEhC,SAASygb,IACP,IAAI1hb,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAGhE,OADAS,EAAMkI,KAAO,OACNlI,CACT,CAqCA,OA3CA,UAAU0hb,EAAMzgb,GAWhBygb,EAAKu4E,kBAAoB,WACvB,OAAO,GACT,EAKAv4E,EAAKjib,UAAUw/c,WAAa,SAAUh6b,GACpC1lB,KAAKg7f,aAAa,CAChBt1e,KAAMA,IAKR4kH,IAAK,CACHoyU,MAJO18c,KACI08c,MAIXv3a,QALOnlC,KAEMmlC,UAKfnlC,KAAK08c,MAAMgD,WAAWh6b,EACxB,EAIAy8Z,EAAKjib,UAAUw6f,kBAAoB,WACjC,OAAOv4E,EAAKu4E,mBACd,EAIAv4E,EAAKjib,UAAUs7f,iBAAmB,WAChC,OAAOD,GACT,EACOp5E,CACT,CA7CwB,CA6CtBs4E,KC7CS,IAAkBvF,IAAW,CAAC,EAAGuF,IAAKC,oBAAqB,CACpErjP,OAAQ,CACNlsN,SAAU,QACVo+D,MAAO,CAAC,GAEVw7I,QAAS,CACPktB,QAAQ,EACRzkI,WAAW,EACXmhT,aAAa,GAEf/hZ,MAAO,CACLk8D,OAAQ,CACNngH,KAAM,gBACNhH,IAAK,CACH84B,OAAQ,cAKdyqe,SAAU,CACR/jf,OAAQ,QACR1B,UAAW,GAGbyoG,UAAW,CACTn2D,MAAO,CACLjmD,MAAO,CACL4nB,WAAY,IACZqgB,MAAO,UACP9yB,UAAW,SACXH,SAAU,OACVC,WAAY,IAGhB+1D,QAAS,CACPhrE,MAAO,CACL4nB,WAAY,OACZqgB,MAAO,sBACP9yB,UAAW,SACXH,SAAU,OACVC,WAAY,KAKlBusF,MAAO,CACLud,WAAY,CACVykV,WAAY,CACVzub,KAAM,CACJ/J,SAAS,QCpDfquf,IAAgB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAMtC,SAAS,IAAU5qe,EAASppB,GACjC,IAAIi0f,EAAWj0f,GAAS,UAAc,GAAIA,GAAQ,IAAQ,UAAc,GAAIg0f,KAAe,GAC3F,OAAOhpC,IAAKrod,UAAUsxf,EAAU7qe,EAClC,CCJA,IAAI8qe,IAA+B,SAAU3jgB,GAE3C,SAAS2jgB,IACP,OAAkB,OAAX3jgB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAgEA,OAnEA,UAAUqlgB,EAAiB3jgB,GAO3B2jgB,EAAgBnlgB,UAAUolgB,kBAAoB,WAC5C,IAAIjtf,EAAiB8jd,IAAKj8B,oBAAoBlgc,KAAKmzB,SACnD,GAAI9a,EAAgB,CAClB,IAAI+5P,EAAOpyQ,KAAKmzB,QAAQi/O,KACpB5yM,EAAYnnD,EAAemnD,UAC7B+lc,EAASltf,EAAeZ,KACtBoid,EAAUr6Z,EAAUx9D,IAAI,SAC5B,GAAI63d,EAEF,OADeznN,EAAKhzD,WAAW,GAAGz+K,SAClBpwB,QAAO,SAAUk3E,GAC/B,OAAOA,EAAIi6W,WAAWh8a,KAAKm0c,KAAa0rC,EAAOpjgB,KACjD,GAEJ,CACA,MAAO,EACT,EAIAkjgB,EAAgBnlgB,UAAUslgB,uBAAyB,WACjD,IAAIpzP,EAAOpyQ,KAAKmzB,QAAQi/O,KACpBzxO,EAAW3gC,KAAKslgB,oBAEpB,OADalzP,EAAKhzD,WAAW,GAAGy/P,gBAAgBvuc,cAClCC,QAAO,SAAUq8C,GAC7B,OAAOjsB,EAASntB,MAAK,SAAUi0E,GAC7B,OAAO,UAAQA,EAAIw4E,UAAWrzG,EAAM5qD,IAAI,QAC1C,GACF,GACF,EACAqjgB,EAAgBnlgB,UAAUulgB,UAAY,SAAUtib,QAC/B,IAAXA,IACFA,EAAS,KAEX,IAAIxiD,EAAW3gC,KAAKslgB,oBAChB1wC,EAAgB50d,KAAKwlgB,yBACzB7ke,EAASv4B,SAAQ,SAAUuH,EAASu1B,GAClC,IAAI86Y,EAAa40C,EAAc1vb,GAC3B+4O,EAAatuQ,EAAQ0vM,SAAS4+D,WAClC,GAAIA,EAAWotJ,SAAWptJ,EAAWutJ,aAAc,CACjD,IAAIrqa,EAAKg7d,IAAKljc,SAAStpB,EAAQ+xb,WAAYzjL,GAGvCwuL,GAFWtrc,EAAG4gB,WACL5gB,EAAG6gB,UAC4B,EACxC9C,EAAIikE,EACJl4E,EAAIiU,EAAIjF,KAAKkC,IAAIswb,GACjBvhc,EAAIgU,EAAIjF,KAAKoC,IAAIowb,GACrB98b,EAAQlK,MAAMqQ,UAAU,IAAU,CAAC,CAAC,IAAK7K,EAAGC,MAC5C80a,EAAWlqa,UAAU,IAAU,CAAC,CAAC,IAAK7K,EAAGC,KAC3C,CACF,GACF,EACAm6f,EAAgBnlgB,UAAUq2H,OAAS,WACjCv2H,KAAKylgB,WACP,EAIAJ,EAAgBnlgB,UAAUg2D,MAAQ,WAChCl2D,KAAKylgB,UAAU,EACjB,EACOJ,CACT,CArEmC,CAqEjC,KCpEF,IAAIK,IAA+B,SAAUhkgB,GAE3C,SAASgkgB,IACP,OAAkB,OAAXhkgB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAsEA,OAzEA,UAAU0lgB,EAAiBhkgB,GAI3BgkgB,EAAgBxlgB,UAAUylgB,eAAiB,SAAUC,GAGnD,OAFWA,GAAS5lgB,KAAKmzB,QAAQi/O,MAErBqoM,cAAc,cAAc/hZ,MAC1C,EACAgtc,EAAgBxlgB,UAAU2lgB,qBAAuB,WAC/C,OAAO7lgB,KAAK8lgB,iBACd,EACAJ,EAAgBxlgB,UAAUoK,KAAO,WAC/B,IAAI7J,EAAQT,KACRoyQ,EAAOpyQ,KAAKmzB,QAAQi/O,KACxBA,EAAKqtM,kBAAkB,WACvBrtM,EAAKjyQ,GAAG,mBAAmB,WACzB,IAAI8jd,EAAcxjd,EAAMklgB,eAAevzP,GACvC3xQ,EAAMqlgB,kBAAoB7hD,CAC5B,GACF,EACAyhD,EAAgBxlgB,UAAU62R,OAAS,SAAUv6O,GAC3C,IAAIr7C,EAAKnB,KAAKmzB,QACZi/O,EAAOjxQ,EAAGixQ,KACVrnQ,EAAQ5J,EAAG4J,MACR/K,KAAK8lgB,oBACR9lgB,KAAK8lgB,kBAAoB9lgB,KAAK2lgB,kBAEhC,IAAIjgf,GAAO,UAAI3a,EAAO,CAAC,OAAQ,SAC/B,GAAIA,EAAMpC,KAAKsyB,MAAM,eAAgB,CACnC,IAAI5iB,EAAiB8jd,IAAKj8B,oBAAoBlgc,KAAKmzB,SAE/C4ye,EAAe3zP,EAAKsxM,mBAAmB,GAC3C,GAAIrrc,GAAkB0tf,EAAc,CAClC,IAAIR,EAASltf,EAAeZ,KAC5BiO,EAAO0sP,EAAKnyG,UAAUzsJ,MAAK,SAAUuS,GACnC,OAAOA,EAAEggf,KAAkBR,EAAOpjgB,KACpC,GACF,CACF,CACA,GAAIujB,EAAM,CACR,IAAIu+b,GAAc,UAAIzna,EAAK,cAAe,IACtC0rE,GAAY,UAAI1rE,EAAK,YAAa,CAAC,GAEvC41N,EAAKqoM,cAAc,cAAclrc,OAAM,IAEvC,UAAK00c,GAAa,SAAU3U,GACA,iBAAfA,GACTl9L,EAAKk9L,aAAaA,EAAW3mc,MAAM2mc,EAEvC,IACAgnD,IAAgBlkP,EAAM,CACpBlqJ,UAAWA,EACXquY,SAAU,OACT7we,GACH0sP,EAAKpnM,QAAO,EACd,CAEA,IAAIyc,EC9DD,SAA2Bt0D,GAChC,IACIxjB,EACAjH,EAFQyqB,EAAQpoB,MAEDrC,OAInB,OAHIA,IACFiH,EAAUjH,EAAO1G,IAAI,YAEhB2N,CACT,CDsDc,CAAkB3P,KAAKmzB,SAC7Bs0D,GACFA,EAAIhiF,MAAMgQ,SAEd,EACAiwf,EAAgBxlgB,UAAUg2D,MAAQ,WAChC,IAAIk8M,EAAOpyQ,KAAKmzB,QAAQi/O,KACGA,EAAKqoM,cAAc,cACzBlrc,OAAM,GAC3B,IAAIy2f,EAAmBhmgB,KAAK6lgB,wBAC5B,UAAKG,GAAkB,SAAU7nf,GAC/Bi0P,EAAKk9L,aAAanxb,EAAExV,MAAMwV,EAC5B,IACAi0P,EAAKpnM,QAAO,EACd,EACO06b,CACT,CA3EmC,CA2EjC,KEhFSO,IAAgB,gBCgBpB,SAASC,IAAYv9f,EAAMw6E,GAChC,IAAIgjb,EACJ,OAAQx9f,GACN,IAAK,QAEH,OADAw9f,EAAgB,QACZ,UAAShjb,IAAWA,EAAOnoB,SAAS,KACV,IAArB3vC,WAAW83D,GAAiB,EAAIgjb,EAAgBhjb,EAElDA,EAAS,EAAIA,EAASgjb,EAC/B,IAAK,QAEH,OADAA,EAAgB,IACZ,UAAShjb,IAAWA,EAAOnoB,SAAS,KACV,IAArB3vC,WAAW83D,GAAiB,EAAIgjb,EAAgBhjb,EAElDA,EAAS,EAAIA,EAASgjb,EAC/B,QACE,OAAOhjb,EAEb,CAMO,SAASijb,IAAU1gf,EAAM2gf,GAC9B,OAAO,UAAMvR,IAAmBpve,EAAM2gf,IAAa,SAAUtgf,GAC3D,OAAyB,IAAlBA,EAAEsgf,EACX,GACF,CChCA,SAAS,IAAS/kf,GAChB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfzf,EAAOyf,EAAQzf,KACjB2gf,EAAalhe,EAAQkhe,WACrBl8B,EAAahlc,EAAQglc,WACrBp2b,EAAQ5O,EAAQ4O,MAChBmxd,EAAW//d,EAAQ+/d,SACnBz/f,EAAQ0/B,EAAQ1/B,MAEdupd,EAAc8lC,IAAmBpve,EAAM2gf,GAC3C,GAAID,IAAUp3C,EAAaq3C,GAAa,CAEtC,IAAIC,EAAoB,iBACxBt3C,EAAcA,EAAYh+b,KAAI,SAAUjL,GACtC,IAAI5kB,EACJ,OAAO,WAAS,UAAS,CAAC,EAAG4kB,KAAK5kB,EAAK,CAAC,GAAMmlgB,GAAqB,EAAIt3C,EAAYnud,OAAQM,GAC7F,IACAu7c,EAAMh3b,KAAKspc,GAkBX,IAjBQkmC,IAAW,CAAC,EAAG5ze,EAAQ,CAC7B6jB,QAAS,CACP6zX,OAAQ,IACRC,OAAQqtG,EACRtN,YAAa7uB,EACbp/H,SAAS,EACTvoW,SAAU,CACRuxC,MAAOA,EACPtuC,MAAOA,EACPqG,MAAOo5f,GAETxkgB,KAAM,CACJ4pd,gBAAgB,EAChBD,YAAY,MAKpB,KAAO,CACL3N,EAAMh3b,KAAKspc,GAkBX,IAjBQkmC,IAAW,CAAC,EAAG5ze,EAAQ,CAC7B6jB,QAAS,CACP6zX,OAAQ,IACRC,OAAQotG,EACRrN,YAAa7uB,EACbp/H,SAAS,EACTvoW,SAAU,CACRuxC,MAAOA,EACPtuC,MAAOA,EACPqG,MAAOo5f,GAETxkgB,KAAM,CACJ4pd,gBAAgB,EAChBD,YAAY,MAKpB,CACA,OAAO/oc,CACT,CAKA,SAAS,IAAKA,GACZ,IAAIngB,EACAu7c,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfmlG,EAAOnlG,EAAQmlG,KACjB6/V,EAAahlc,EAAQglc,WAEnBjgP,EAASgrQ,IAAW,CAAC,EAAG5qX,GAI5B,OAHAoyU,EAAM5jc,MAAMoxO,IAAS/oP,EAAK,CAAC,GAAMgpe,GAAc,CAC7Cxhe,KAAM,OACLxH,IACImgB,CACT,CAKA,SAAS,IAAWA,GAClB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACf6oC,EAAS7oC,EAAQ6oC,OACnB87B,EAAc3kE,EAAQ2kE,YACtB/nF,EAAaojB,EAAQpjB,WACrBC,EAAWmjB,EAAQnjB,SAUrB,OATA06b,EAAMz+L,WAAW,CACft1Q,KAAM,QACNhH,IAAK,CACHqsE,OAAQA,EACR87B,YAAaA,EACb/nF,WAAYA,EACZC,SAAUA,KAGPV,CACT,CAKA,SAAS,IAAMA,GACb,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfynB,EAAQznB,EAAQynB,MAClBu9a,EAAahlc,EAAQglc,WACrBk8B,EAAalhe,EAAQkhe,WACnBhnT,EAAWq9P,EAAMt9P,WAAW,GAEhC,GAAKxyJ,EAEE,CACL,IAAIvsD,EAAWusD,EAAMvsD,SAEjBy+a,EAAWy2E,KADP,UAAO3oc,EAAO,CAAC,cAGvB,GAAIkyX,EAAShoW,QAAS,CACpB,IAAIyvb,EAAYznF,EAAShoW,QACzBgoW,EAAShoW,QAAU,SAAUpxD,EAAM8gf,EAAQx+f,GACzC,IAAI/F,EAAOyjB,EAAKykd,GACZhoe,EAAQujB,EAAK2gf,GAEbI,EAAa/pD,EAAMna,gBAAgB8jE,GACnCttc,EAAU0tc,aAA+C,EAASA,EAAW3tf,MAAM3W,GACvF,OAAO,UAAWokgB,GAElBA,GAAU,WAAS,UAAS,CAAC,EAAG7gf,GAAO,CACrCqzC,QAASA,IACPytc,EAAQx+f,IAAS,UAASu+f,GAAax5Z,IAASw5Z,EAAW,CAC7DpkgB,MAAOA,EACPF,KAAMA,EAEN25f,YAAY,UAAS7ic,MAAa,UAAM52D,GAAS,GAAGoR,QAAkB,IAAVwlD,GAAe3wC,QAAQ,GAAI,KAAO,OAC3Fm+e,CACP,CACF,CACA,IAKIG,EAAkB5nF,EAASn2a,KALH,CAC1Bk8C,MAAO,GACPygC,MAAO,YACPqhb,OAAQ,cAEkD7nF,EAASn2a,MAAQ,YACzEi+f,EAAiB9nF,EAASh2T,QAAU,UAAQg2T,EAASh2T,QAA8Bg2T,EAASh2T,OAA7B,CAACg2T,EAASh2T,QAA4B,GACzGg2T,EAASh2T,QAAU49Y,EAAkB,CAAC,CACpC/9f,KAAM+9f,IACH,IAAInzf,OAAOqzf,GAChBvnT,EAASzyJ,MAAM,CAEbgzE,OAAQuqW,EAAa,CAACk8B,EAAYl8B,GAAc,CAACk8B,GACjDhmgB,SAAUA,EACVsB,KAAK,WAAS,UAAS,CAAC,EAAGm9a,GAAW,CACpC37V,OAAQ+ib,IAAYpnF,EAASn2a,KAAMm2a,EAAS37V,QAC5Cx6E,KAAM,SAGZ,MA7CE02M,EAASzyJ,OAAM,GA8CjB,OAAOtrC,CACT,CAMO,SAASulf,IAA0B1he,GACxC,IAAI2kE,EAAc3kE,EAAQ2kE,YACxBoe,EAAY/iF,EAAQ+iF,UACpBm+Y,EAAalhe,EAAQkhe,WACrBl8B,EAAahlc,EAAQglc,WACrB7/V,EAAOnlG,EAAQmlG,KAEbioR,EAAOnpV,IADAjkC,EAAQ08B,QAEnB,GAAIioC,GAAeoe,EAAW,CAC5B,IAAI/mH,EAAK+zf,IAAW,CAAC,EAAG,IAAgBhtY,UAAWA,GACjD4+Y,EAAa3lgB,EAAG4wD,MAChBg1c,EAAe5lgB,EAAG21E,QA4BpB,OA3BmB,IAAfgwb,IACFA,EAAa5R,IAAW,CAAC,EAAG,CAC1BnrK,UAAW,SAAmB5xH,GAE5B,IAAIt3M,EAAOs3M,EAAQA,EAAMgyQ,IAAe,UAAM28B,EAAWhwb,SAAgCy7U,EAAKvwZ,IAAI,CAAC,YAAa,UAA5C8kgB,EAAWhwb,QAC3Ekwb,GAAgB,UAAI18X,EAAM,CAAC6/V,EAAY,eAAiB,SAAUl4d,GACpE,OAAOA,CACT,EACA,OAAO+0f,EAAcnmf,EACvB,GACCimf,KAEgB,IAAjBC,IACFA,EAAe7R,IAAW,CAAC,EAAG,CAC5BnrK,UAAW,SAAmB5xH,EAAOzyM,GACnC,IAAIuhf,EAAY9uS,EAAQA,EAAMkuS,GDxMjC,SAAuB3gf,EAAMm6G,GAClC,IAAI/mE,EAAQ,KAMZ,OALA,UAAKpzC,GAAM,SAAUjO,GACQ,iBAAhBA,EAAKooH,KACd/mE,GAASrhD,EAAKooH,GAElB,IACO/mE,CACT,CCgMsDouc,CAAcxhf,EAAM2gf,GAC5DW,GAAgB,UAAI18X,EAAM,CAAC+7X,EAAY,eAAiB,SAAUp0f,GACpE,OAAOA,CACT,EAEA,OAAIkmN,IAGI,UAAM4uS,EAAajwb,SAFlBkwb,EAAcC,GAEeF,EAAajwb,OACrD,GACCiwb,IAEE7R,IAAW,CAAC,EAAG,CACpBhtY,UAAW,CACTn2D,MAAO+0c,EACPhwb,QAASiwb,IAEV5he,EACL,CACA,OAAOA,CACT,CAKO,SAASgie,IAAc7lf,GAC5B,IAAIo7b,EAAQp7b,EAAOo7b,MAEfv7c,EAAK0lgB,IADGvlf,EAAO6jB,SAEjB2kE,EAAc3oG,EAAG2oG,YACjBoe,EAAY/mH,EAAG+mH,UAYjB,OAVAw0V,EAAMjC,cAAc,cAAclrc,OAAM,GAExCghO,IAAK,MAALA,CAAmBjvN,GAEfwoF,GAAeoe,GACjBouY,IAAgB55C,EAAO,CACrBx0V,UAAWA,EACXquY,SAAU,QAGPj1e,CACT,CAMA,SAAS,IAAQA,GACf,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACf4/N,EAAU5/N,EAAQ4/N,QACpBolO,EAAahlc,EAAQglc,WACrBk8B,EAAalhe,EAAQkhe,WACrB3gf,EAAOyf,EAAQzf,KACjB,IAAgB,IAAZq/O,EACF23M,EAAM33M,QAAQA,QAMd,GAJA23M,EAAM33M,QAAQmwP,IAAW,CAAC,EAAGnwP,EAAS,CACpCktB,QAAQ,KAGNm0O,IAAU1gf,EAAM2gf,GAAa,CAC/B,IAAIzmY,GAAS,UAAImlI,EAAS,UACtBglF,GAAY,UAAIhlF,EAAS,cACzB,WAAQ,UAAIA,EAAS,aACvBnlI,EAAS,CAACuqW,EAAYk8B,GACtBt8K,EAAYA,GAAa,SAAU5xH,GACjC,MAAO,CACLl2N,KAAMk2N,EAAMgyQ,GACZhoe,OAAO,UAASg2N,EAAMkuS,IAE1B,GAEF3pD,EAAMt9P,WAAW,GAAG2lD,QAAQnlI,EAAOv2G,KAAK,KAAM2we,IAAmBp6X,EAAQmqN,GAC3E,CAEF,OAAOzoU,CACT,CAKO,SAAS,IAAYA,GAC1B,IAAIo7b,EAAQp7b,EAAOo7b,MAEfv7c,EAAK0lgB,IADGvlf,EAAO6jB,SAEjB43a,EAAe57c,EAAG47c,aAClB70V,EAAY/mH,EAAG+mH,UACf+7V,EAAc9id,EAAG8id,YAiCnB,OAhCA,UAAKlH,GAAc,SAAU77c,GAC3B,IAAIC,EAAI+V,EACR,IAAiB,IAAbhW,EAAE46a,OACJ4gC,EAAM+C,kBAAkBv+c,EAAEyH,WACrB,GAAe,yBAAXzH,EAAEyH,KAAiC,CAE5C,IAAIy+f,EAAgB,IACG,QAAhBjmgB,EAAKD,EAAES,WAAwB,IAAPR,OAAgB,EAASA,EAAGulB,SACzD0gf,EAAgB,CAAC,CACfz+Z,QAAS,qBACTluE,OAAQ,GAAGlnB,OAAO0yf,IAAe,WACjCzpd,IAAK,CACH0rE,UAAWA,EACX+7V,YAAaA,OAInB,UAAsB,QAAhB/sc,EAAKhW,EAAES,WAAwB,IAAPuV,OAAgB,EAASA,EAAGwP,OAAO,SAAU2gf,GACzED,EAAc7mgB,MAAK,WAAS,UAAS,CAAC,EAAG8mgB,GAAQ,CAC/C7qd,IAAK,CACH0rE,UAAWA,EACX+7V,YAAaA,KAGnB,IACAvH,EAAM/X,YAAYzjc,EAAEyH,KAAMusf,IAAW,CAAC,EAAGh0f,EAAES,IAAK,CAC9C+kB,MAAO0gf,IAEX,MACE1qD,EAAM/X,YAAYzjc,EAAEyH,KAAMzH,EAAES,KAAO,CAAC,EAExC,IACO2f,CACT,CAMO,SAAS,IAAQA,GAEtB,OAAOivN,IAAK,IAAQ,YAAa,IAAU,IAAM,IAAO,IAAY,IAAQ,IAAS,IAAO,IAC5F42R,IAAe,IAAazhgB,IADrB6qO,CACgCjvN,EACzC,CFjVA+8a,IAAe4nE,IAAeP,KAC9BhhE,IAAoB,uBAAwB,CAC1Ch+a,MAAO,CAAC,CACNiiF,QAAS,qBACTluE,OAAQ,yBAEV5L,IAAK,CAAC,CACJ85E,QAAS,qBACTluE,OAAQ,0BAGZ4ja,IAAe,aAAcgnE,KAC7B3gE,IAAoB,oBAAqB,CACvCh+a,MAAO,CAAC,CACNiiF,QAAS,yBACTluE,OAAQ,sBAEV5L,IAAK,CAAC,CACJ85E,QAAS,yBACTluE,OAAQ,uBGfZ,IAAI,IAAmB,SAAU/4B,GAE/B,SAASi5Q,IACP,IAAIl6Q,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAGhE,OADAS,EAAMkI,KAAO,MACNlI,CACT,CAiDA,OAvDA,UAAUk6Q,EAAKj5Q,GAWfi5Q,EAAI+/O,kBAAoB,WACtB,OAAO,GACT,EAKA//O,EAAIz6Q,UAAUw/c,WAAa,SAAUh6b,GACnC1lB,KAAK08c,MAAMl8c,KAAK+2Z,IAAiBooD,mBAAoB,IAAMpF,SAASv6c,KAAK08c,MAAOnlD,IAAiBooD,mBAAoB,OACrH,IAAI2nD,EAActngB,KAAKmlC,QACnBkhe,EAAarmgB,KAAKmlC,QAAQkhe,WAC1B/6V,EAAWwpV,IAAmBwS,EAAY5hf,KAAM2gf,GAChDkB,EAAUzS,IAAmBpve,EAAM2gf,GAEnCD,IAAU96V,EAAU+6V,IAAeD,IAAUmB,EAASlB,GACxDrmgB,KAAKwF,OAAO,CACVkgB,KAAMA,KAGR1lB,KAAKg7f,aAAa,CAChBt1e,KAAMA,IAER1lB,KAAK08c,MAAMh3b,KAAK6hf,GAEhBJ,IAAc,CACZzqD,MAAO18c,KAAK08c,MACZv3a,QAASnlC,KAAKmlC,UAEhBnlC,KAAK08c,MAAM1xY,QAAO,IAEpBhrE,KAAK08c,MAAMl8c,KAAK+2Z,IAAiBqoD,kBAAmB,IAAMrF,SAASv6c,KAAK08c,MAAOnlD,IAAiBqoD,kBAAmB,MACrH,EAIAjlM,EAAIz6Q,UAAUw6f,kBAAoB,WAChC,OAAO//O,EAAI+/O,mBACb,EAIA//O,EAAIz6Q,UAAUs7f,iBAAmB,WAC/B,OAAO,GACT,EACO7gP,CACT,CAzDuB,CAyDrB8/O,KCjES,IAAgB,CAAC,UAAW,WAI5B,IAAkB,CAC3B1hc,QAAS,GACThlB,MAAO,IACPruC,UAAW,CAAC,GCFP,SAAS8hgB,IAAgBzuc,GAC9B,IAAI0uc,GAAe,UAAMjS,IAAaz8b,GAAWA,EAAU,EAAG,EAAG,GACjE,MAAO,CAAC,CAENtxD,QAAS,GAAG8L,OAAOk0f,GACnB9+f,KAAM,UACNowD,QAAS0uc,GACR,CACDhggB,QAAS,GAAG8L,OAAOk0f,GACnB9+f,KAAM,SACNowD,QAAS,GAEb,CCPO,SAAS,IAASz3C,GACvB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACf4zB,EAAU5zB,EAAQ4zB,QACpB8/C,EAAgB1zE,EAAQ0zE,cACxB9kE,EAAQ5O,EAAQ4O,MAChBsrd,EAAgBl6d,EAAQk6d,cAuB1B,OAtBA3iD,EAAMh3b,KAAK8hf,IAAgBzuc,IAiB3B,IAhBQm8b,IAAW,CAAC,EAAG5ze,EAAQ,CAC7B6jB,QAAS,CACP6zX,OAAQ,UACRC,OAAQ,UACR+/F,YAAa,OACbmB,WAAYkF,EACZ78f,SAAU,CACRsJ,MAAO+sG,EACP9kE,OAAO,UAASA,GAAS,CAACA,EAAO,IAAc,IAAMA,GAEvDrzC,KAAM,CACJ4pd,gBAAgB,EAChBD,YAAY,OAMlB3N,EAAM33M,SAAQ,GACd23M,EAAM7oM,MAAK,GACX6oM,EAAMrlM,QAAO,GACN/1P,CACT,CAKA,SAAS,IAAWA,GAGlB,OAFYA,EAAOo7b,MACbz+L,WAAW,QAAQguJ,YAClB3qZ,CACT,CAMO,SAAS,IAAQA,GAEtB,OAAOivN,IAAK,IAAU,IAAM,CAAC,GAAI,IAAY7qO,IAAW,IAAO,MAAxD6qO,CAAsEjvN,EAC/E,CCrDA,IAAI,IAAwB,SAAU5f,GAEpC,SAAS82G,IACP,IAAI/3G,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAGhE,OADAS,EAAMkI,KAAO,UACNlI,CACT,CA2BA,OAjCA,UAAU+3G,EAAU92G,GAWpB82G,EAASkiZ,kBAAoB,WAC3B,OAAO,GACT,EAKAliZ,EAASt4G,UAAUw/c,WAAa,SAAU3mZ,GACxC/4D,KAAKg7f,aAAa,CAChBjic,QAASA,IAEX/4D,KAAK08c,MAAMgD,WAAW8nD,IAAgBzuc,GACxC,EACAy/C,EAASt4G,UAAUw6f,kBAAoB,WACrC,OAAOliZ,EAASkiZ,mBAClB,EAIAliZ,EAASt4G,UAAUs7f,iBAAmB,WACpC,OAAO,GACT,EACOhjZ,CACT,CAnC4B,CAmC1BiiZ,KC/BF,SAAS,IAAWn5e,GAClB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACf2kE,EAAc3kE,EAAQ2kE,YACxB97B,EAAS7oC,EAAQ6oC,OAMnB,OAJA0uY,EAAMz+L,WAAW,QAAS,CACxBn0K,YAAaA,EACb97B,OAAQA,IAEH1sD,CACT,CAKO,SAAS,IAAUA,EAAQ8gE,GAChC,IAAIs6X,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACf2kE,EAAc3kE,EAAQ2kE,YACxBoe,EAAY/iF,EAAQ+iF,UACpBnvD,EAAU5zB,EAAQ4zB,QAClBuxE,EAAOnlG,EAAQmlG,KAIjB,GAFAoyU,EAAMjC,cAAc,cAAclrc,OAAM,GAEpCu6F,GAAeoe,EAAW,CAC5B,IAAI8+Y,GAAgB,UAAI18X,EAAM,CAAC,UAAW,eAAiB,SAAUr4H,GACnE,MAAO,GAAGsB,QAAY,IAAJtB,GAASmW,QAAQ,GAAI,IACzC,EACIque,EAAavuY,EAAUpxC,QACvB2/a,IACFA,EAAavB,IAAW,CAAC,EAAGuB,EAAY,CACtC3/a,SAAU,UAAM2/a,EAAW3/a,SAAgCkwb,EAAcjuc,GAAnC09b,EAAW3/a,WAGrDw/a,IAAgB55C,EAAO,CACrBx0V,WAAW,WAAS,UAAS,CAAC,EAAGA,GAAY,CAC3CpxC,QAAS2/a,IAEXF,SAAU,iBACT,CACDx9b,QAASA,GAEb,CAIA,OAHIqpB,GACFs6X,EAAM1xY,QAAO,GAER1pD,CACT,CAMO,SAAS,IAAQA,GACtB,OAAOivN,IAAK,IAAU,IAAM,CAAC,GAAI,IAAY,IAAW7qO,IAAW,IAAO,MAAnE6qO,CAAiFjvN,EAC1F,CC/DO,IAAI,IAAkB,CAC3By3C,QAAS,GACT+wC,YAAa,GACb97B,OAAQ,IACRj6B,MAAO,CAAC,UAAW,WACnBm0E,UAAW,CACTn2D,OAAO,EACP+kB,QAAS,CACPhrE,MAAO,CACLgV,SAAU,OACV4S,WAAY,IACZkoB,KAAM,UACN36B,UAAW,SACXC,aAAc,YAIpBxb,UAAW,CAAC,GCdVgigB,IAA4B,SAAUhmgB,GAExC,SAASgmgB,IACP,IAAIjngB,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAGhE,OADAS,EAAMkI,KAAO,eACNlI,CACT,CAkCA,OAxCA,UAAUingB,EAAchmgB,GAWxBgmgB,EAAahN,kBAAoB,WAC/B,OAAO,GACT,EAKAgN,EAAaxngB,UAAUw/c,WAAa,SAAU3mZ,GAC5C/4D,KAAK08c,MAAMl8c,KAAK+2Z,IAAiBooD,mBAAoB,IAAMpF,SAASv6c,KAAK08c,MAAOnlD,IAAiBooD,mBAAoB,OACrH3/c,KAAKg7f,aAAa,CAChBjic,QAASA,IAEX/4D,KAAK08c,MAAMh3b,KAAK8hf,IAAgBzuc,IAEhC,IAAU,CACR2jZ,MAAO18c,KAAK08c,MACZv3a,QAASnlC,KAAKmlC,UACb,GACHnlC,KAAK08c,MAAMl8c,KAAK+2Z,IAAiBqoD,kBAAmB,IAAMrF,SAASv6c,KAAK08c,MAAOnlD,IAAiBqoD,kBAAmB,MACrH,EACA8nD,EAAaxngB,UAAUw6f,kBAAoB,WACzC,OAAOgN,EAAahN,mBACtB,EAIAgN,EAAaxngB,UAAUs7f,iBAAmB,WACxC,OAAO,GACT,EACOkM,CACT,CA1CgC,CA0C9BjN,kBC5CEkN,IAAiB,CACnB7sd,IAAK,IAAAkD,cACL9iC,OAAQ,IAAA+iC,iBACR5C,MAAO,IAAA6C,gBACPxE,IAAK,IAAAyE,cACLypL,KAAM,IAAAxpL,eACNziC,IAAK,IAAA0iC,cACLtB,KAAM,IAAAuB,gBAiGR,IAAIygZ,IAAa,SAAoBr5a,EAAM8mF,GACzC,IAAI4lK,EAAO5lK,EAAO4lK,KAChBjxQ,EAAKqrG,EAAOrnE,QACZ6zX,EAAS73Z,EAAG63Z,OACZC,EAAS93Z,EAAG83Z,OACV2uG,EAAax1P,EAAKmwL,gBAAgBvpC,GAClC6uG,EAAaz1P,EAAKmwL,gBAAgBtpC,GAOtC,OAAO,IANQvzY,EAAKsL,KAAI,SAAUjL,GAChC,OAAOqsP,EAAK+vL,gBAAgBtjP,QAAQ,CAClC5zM,EAAG28f,EAAW9uf,MAAMiN,EAAE,IACtB7a,EAAG28f,EAAW/uf,MAAMiN,EAAE,KAE1B,KAC+B,EACjC,EACW,IAAU,SAAiBymF,GACpC,IASIs7Z,EATA3ie,EAAUqnE,EAAOrnE,QACjB6zX,EAAS7zX,EAAQ6zX,OACnBC,EAAS9zX,EAAQ8zX,OACjBvzY,EAAOyf,EAAQzf,KACfqif,EAAiB5ie,EAAQ4ie,eACvB5mgB,EAAK4mgB,EAAep/f,KACtBA,OAAc,IAAPxH,EAAgB,SAAWA,EAClCyqH,EAAYm8Y,EAAen8Y,UAC3Bo8Y,EAAiBD,EAAeE,SAE9BA,EAAW,KACXr8Y,GACFk8Y,GAAW,UAAQl8Y,GAAaA,EAAYA,EAAUlmG,GACtDuif,EAAWD,GAQXC,EA0DG,SAA+Bt/f,EAAMud,GAC1C,IAAI/kB,EAAI+V,EAAIC,EACR+wf,EAAmB,SAA0Bt5e,EAAGxQ,GAIlD,YAHU,IAANA,IACFA,EAAI,GAECnE,KAAKwoB,MAAM7T,EAAI3U,KAAK0B,IAAI,GAAIyC,IAAMnE,KAAK0B,IAAI,GAAIyC,EACxD,EACI+pf,EAAa,SAAoBhmgB,GACnC,OAAO8f,OAAOqe,SAASn+B,GAAS+lgB,EAAiB/lgB,GAAS,GAC5D,EACA,OAAQwG,GACN,IAAK,SAEH,MAAO,OAAO4K,OAAO40f,EAAWjif,EAAI/H,GAAI,QAAQ5K,OAAO40f,EAAWjif,EAAIjD,GAAI,YAAY1P,OAAO40f,EAAWjif,EAAI60B,WAC9G,IAAK,MAEH,MAAO,OAAOxnC,OAAO40f,EAAWjif,EAAI/H,GAAI,OAAO5K,OAAO40f,EAAWjif,EAAIjD,GAAI,cAAc1P,OAAO40f,EAAWjif,EAAI60B,WAC/G,IAAK,MAEH,MAAO,OAAOxnC,OAAO40f,EAAWjif,EAAI/H,GAAI,YAAY5K,OAAO40f,EAAWjif,EAAIjD,GAAI,YAAY1P,OAAO40f,EAAWjif,EAAI60B,WAClH,IAAK,OAEH,MAAO,OAAOxnC,OAAO40f,EAAWjif,EAAI/H,GAAI,UAAU5K,OAAO40f,EAAWjif,EAAIjD,GAAI,QAAQ1P,OAAO40f,EAAWjif,EAAIf,GAAI,YAAY5R,OAAO40f,EAAWjif,EAAI60B,WAClJ,IAAK,OAIH,IADA,IAAI5pB,EAAO,OAAO5d,OAAO40f,EAAuC,QAA3BhngB,EAAK+kB,EAAIq3B,oBAAiC,IAAPp8C,OAAgB,EAASA,EAAG,IAAK,OAAOoS,OAAO40f,EAAuC,QAA3Bjxf,EAAKgP,EAAIq3B,oBAAiC,IAAPrmC,OAAgB,EAASA,EAAG,IAAK,QAAQ3D,OAAO40f,EAAuC,QAA3Bhxf,EAAK+O,EAAIq3B,oBAAiC,IAAPpmC,OAAgB,EAASA,EAAG,IAAK,OAC7RjW,EAAI,EAAGA,EAAIglB,EAAIq3B,aAAa18C,SAAUK,EAC7CiwB,GAAQ,MAAM5d,OAAO40f,EAAWjif,EAAIq3B,aAAar8C,IAAK,MAAMqS,OAAOrS,GAErE,MAAO,GAAGqS,OAAO4d,EAAM,YAAY5d,OAAO40f,EAAWjif,EAAI60B,WAC3D,IAAK,MAEH,MAAO,OAAOxnC,OAAO40f,EAAWjif,EAAI/H,GAAI,MAAM5K,OAAO40f,EAAWjif,EAAIjD,GAAI,YAAY1P,OAAO40f,EAAWjif,EAAI60B,WAE9G,OAAO,IACT,CA/Feqtd,CAAsBz/f,EADjCm/f,EALUH,IAAeh/f,KAAQsC,GAAE,SAAU8a,GAC3C,OAAOA,EAAEizY,EACX,IAAG9tZ,GAAE,SAAU6a,GACb,OAAOA,EAAEkzY,EACX,GACWovG,CAAI3if,IAGjB,MAAO,CAACq5a,IAAW+oE,EAAUt7Z,GAASy7Z,EACxC,EAMW19X,IAAU,SAAiBplG,GACpC,IAAIhkC,EACA+V,EAAKiuB,EAAQmlG,KACfA,OAAc,IAAPpzH,EAAgB,CAAC,EAAIA,EAC5B8hZ,EAAS7zX,EAAQ6zX,OACjBC,EAAS9zX,EAAQ8zX,OACjBvzY,EAAOyf,EAAQzf,KACb4if,EAAc5if,EAAK,GAAGszY,GACtBuvG,EAAc7if,EAAK,GAAGuzY,GACtBuvG,EAAoBF,EAAc,EAClCG,EAAoBF,EAAc,EAItC,SAASG,EAAc7oY,EAAOg0I,GAC5B,IAAI80P,GAAY,UAAIr+X,EAAM,CAACzK,IAC3B,SAAS+oY,EAAejggB,GACtB,OAAO,UAAIgggB,EAAWhggB,EACxB,CACA,IAAIg/C,EAAQ,CAAC,EACb,MAAa,MAATksN,IACE,UAASy0P,MACN,UAASM,EAAe,UAC3Bjhd,EAAW,IAAI6gd,EAAoB,EAAkB,EAAdF,IAEpC,UAASM,EAAe,UAC3Bjhd,EAAW,IAAI6gd,EAAkC,EAAdF,EAAkB,IAGlD3gd,KAEL,UAAS4gd,MACN,UAASK,EAAe,UAC3Bjhd,EAAW,IAAI8gd,EAAoB,EAAkB,EAAdF,IAEpC,UAASK,EAAe,UAC3Bjhd,EAAW,IAAI8gd,EAAkC,EAAdF,EAAkB,IAGlD5gd,EACT,CACA,OAAO,WAAS,UAAS,CAAC,EAAG2iF,KAAQnpI,EAAK,CAAC,GAAM63Z,IAAU,WAAS,UAAS,CAAC,EAAG1uR,EAAK0uR,IAAU0vG,EAAc1vG,EAAQ,MAAO73Z,EAAG83Z,IAAU,WAAS,UAAS,CAAC,EAAG3uR,EAAK2uR,IAAUyvG,EAAczvG,EAAQ,MAAO93Z,GAC9M,ECvLO,SAAS0ngB,IAAiB1je,GAC/B,IAAIhkC,EAAKgkC,EAAQzf,KACfA,OAAc,IAAPvkB,EAAgB,GAAKA,EAC5B63Z,EAAS7zX,EAAQ6zX,OACjBC,EAAS9zX,EAAQ8zX,OACnB,GAAIvzY,EAAK7kB,OAAQ,CAMf,IAJA,IAAIiogB,GAAS,EACTC,GAAS,EACTzze,EAAO5P,EAAK,GACZ0b,OAAO,EACFlgC,EAAI,EAAGA,EAAIwkB,EAAK7kB,SACvBugC,EAAO1b,EAAKxkB,GACRo0B,EAAK0jY,KAAY53X,EAAK43X,KACxB8vG,GAAS,GAEPxze,EAAK2jY,KAAY73X,EAAK63X,KACxB8vG,GAAS,GAGND,GAAWC,GATe7ngB,IAY/Bo0B,EAAO8L,EAET,IAAIR,EAAO,GACXkoe,GAAUloe,EAAKrgC,KAAKy4Z,GACpB+vG,GAAUnoe,EAAKrgC,KAAK04Z,GACpB,IAAI+vG,EAAS,IAAKz+X,IAAQplG,GAAUvE,GACpC,OAAOs0d,IAAW,CAAC,EAAG/vd,EAAS,CAC7BmlG,KAAM0+X,GAEV,CACA,OAAO7je,CACT,CAKA,SAAS,IAAS7jB,GAChB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfzf,EAAOyf,EAAQzf,KACjB/c,EAAOw8B,EAAQx8B,KACforC,EAAQ5O,EAAQ4O,MAChBtuC,EAAQ0/B,EAAQ1/B,MAChB8ya,EAAapzY,EAAQozY,WACrBqhF,EAAaz0d,EAAQy0d,WACrBzvB,EAAahlc,EAAQglc,WACrBnxE,EAAS7zX,EAAQ6zX,OACjBC,EAAS9zX,EAAQ8zX,OACjBu0E,EAAYroc,EAAQqoc,UAClBlpc,EAAOa,EAAQb,KACfygO,EAAU5/N,EAAQ4/N,QAClByoO,IACGlpc,IACHA,EAAO,CAAC,EAAG,KAET,UAASA,KACXA,EAAO,CAACA,EAAMA,KAGdygO,IAAYA,EAAQnlI,SACtBmlI,GAAU,WAAS,UAAS,CAAC,EAAGA,GAAU,CACxCnlI,OAAQ,CAACo5R,EAAQC,EAAQkxE,EAAYqD,EAAWosB,MAIpDl9C,EAAMh3b,KAAKA,GAEX,IAAMwve,IAAW,CAAC,EAAG5ze,EAAQ,CAC3B6jB,QAAS,CACP6zd,YAAa7uB,EACbn/d,MAAO,CACL+oC,MAAOA,EACPtuC,MAAOA,EACP6+B,KAAMA,EACNx4B,MAAOysa,GAETxzK,QAASA,MAGb,IAAI1lD,EAAW+1S,IAAa14C,EAAO,SAKnC,OAHI/zc,GACF02M,EAASu6D,OAAOjxQ,GAEX2Y,CACT,CAKO,SAAS,IAAKA,GACnB,IAAIngB,EACAgkC,EAAU7jB,EAAO6jB,QACjBy1d,EAAQz1d,EAAQy1d,MAClBzB,EAAQh0d,EAAQg0d,MAChBngG,EAAS7zX,EAAQ6zX,OACjBC,EAAS9zX,EAAQ8zX,OACfgwG,EAAaJ,IAAiB1je,GAClC,OAAOorM,IAAK,MAAOpvO,EAAK,CAAC,GAAM63Z,GAAU4hG,EAAOz5f,EAAG83Z,GAAUkgG,EAAOh4f,IAA7DovO,CAAmE2kR,IAAW,CAAC,EAAG5ze,EAAQ,CAC/F6jB,QAAS8je,IAEb,CAKA,SAAS,IAAK3nf,GACZ,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfy1d,EAAQz1d,EAAQy1d,MAClBzB,EAAQh0d,EAAQg0d,MAChBngG,EAAS7zX,EAAQ6zX,OACjBC,EAAS9zX,EAAQ8zX,OAGnB,OAFAyjD,EAAM7oM,KAAKmlJ,EAAQ4hG,GACnBl+C,EAAM7oM,KAAKolJ,EAAQkgG,GACZ73e,CACT,CAKA,SAAS,IAAOA,GACd,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfkyO,EAASlyO,EAAQkyO,OACnB8yN,EAAahlc,EAAQglc,WACrByvB,EAAaz0d,EAAQy0d,WACrBpsB,EAAYroc,EAAQqoc,UACpB07B,EAAc/je,EAAQ+je,YACtBC,EAAahke,EAAQgke,WAEnBC,GAAwB,IAAX/xP,EAoBjB,OAnBI8yN,GACFztB,EAAMrlM,OAAO8yN,IAAYi/B,GAAa/xP,GAGpCuiP,IACEsP,EACFxsD,EAAMrlM,OAAOuiP,EAAYsP,GAEzBxsD,EAAMrlM,OAAOuiP,GAA4B,IAAhBsP,GAAgC7xP,IAGzDm2N,GACF9wB,EAAMrlM,OAAOm2N,EAAW27B,IAA0B,GAI/CC,GAAeF,GAAgBC,GAClCzsD,EAAMrlM,QAAO,GAER/1P,CACT,CAKA,SAAS,IAAMA,GACb,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfynB,EAAQznB,EAAQynB,MAClBqsW,EAAS9zX,EAAQ8zX,OACfowG,EAAkBjU,IAAa14C,EAAO,SAE1C,GAAK9vZ,EAEE,CACL,IAAIvsD,EAAWusD,EAAMvsD,SACnBsB,GAAM,UAAOirD,EAAO,CAAC,aACvBy8c,EAAgBz8c,MAAM,CACpBgzE,OAAQ,CAACq5R,GACT54Z,SAAUA,EACVsB,IAAK4zf,IAAe5zf,IAExB,MATE0ngB,EAAgBz8c,OAAM,GAUxB,OAAOtrC,CACT,CAMA,SAASgof,IAAkBhof,GACzB,IACIiof,EADUjof,EAAO6jB,QACEoke,SACnBtQ,EAAoB,GACxB,GAAIsQ,EAAU,CACZ,IAAIpogB,EAAKoogB,EAASC,UAChBA,OAAmB,IAAProgB,EAAgB,EAAIA,EAChC+V,EAAKqyf,EAASE,UACdA,OAAmB,IAAPvyf,EAAgB,EAAIA,EAChC+5e,EAAWsY,EAASx1P,OACpB21P,EAAgBH,EAAS5wF,YACzBH,EAAY+wF,EAAS/wF,UACnBmxF,EDhMD,SAAkCH,EAAWC,GAElD,IAAIG,EAAa,GAsFjB,MApFoB,CAClBjxF,YAAa,CAAC,CACZxtX,SAAU,CACRzkC,MAAO,CAAC8if,EAAW,OACnB36e,IAAK,CAAC,MAAO46e,IAEf39f,MAAO,CACL8vC,KAAM,UACNjnC,QAAS,KAEV,CACDw2C,SAAU,CACRzkC,MAAO,CAAC,MAAO,OACfmI,IAAK,CAAC26e,EAAWC,IAEnB39f,MAAO,CACL8vC,KAAM,UACNjnC,QAAS,KAEV,CACDw2C,SAAU,CACRzkC,MAAO,CAAC,MAAO+if,GACf56e,IAAK,CAAC26e,EAAW,QAEnB19f,MAAO,CACL8vC,KAAM,UACNjnC,QAAS,KAEV,CACDw2C,SAAU,CACRzkC,MAAO,CAAC8if,EAAWC,GACnB56e,IAAK,CAAC,MAAO,QAEf/iB,MAAO,CACL8vC,KAAM,UACNjnC,QAAS,MAGb6ja,UAAW,CACTr3Z,OAAQ,UACR1B,UAAW,GAEbm8Z,WAAY,CAAC,CACXzwX,SAAU,CAAC,MAAOs+c,GAClBl7f,SAAS,GACTE,SAAS,GACT3C,MAAO,CACLmV,UAAW,QACXC,aAAc,SACdJ,SAAU,GACV86B,KAAM,SAEP,CACDuP,SAAU,CAAC,MAAOs+c,GAClBl7f,QAASq7f,EACTn7f,SAAS,GACT3C,MAAO,CACLmV,UAAW,OACXC,aAAc,SACdJ,SAAU,GACV86B,KAAM,SAEP,CACDuP,SAAU,CAAC,MAAOs+c,GAClBl7f,QAASq7f,EACTn7f,QAASm7f,EACT99f,MAAO,CACLmV,UAAW,OACXC,aAAc,MACdJ,SAAU,GACV86B,KAAM,SAEP,CACDuP,SAAU,CAAC,MAAOs+c,GAClBl7f,SAAS,GACTE,QAASm7f,EACT99f,MAAO,CACLmV,UAAW,QACXC,aAAc,MACdJ,SAAU,GACV86B,KAAM,UAKd,CCuG0Biud,CAAyBL,EAAWC,GAE1C,IAAIhpe,MAAM,GAAGpX,KAAK,KAAKC,MAAM,KACnClhB,SAAQ,SAAUs+B,EAAG1+B,GAC7Bixf,EAAkB14f,MAAK,WAAS,UAAS,CACvCoI,KAAM,SACNsG,KAAK,GACJ06f,EAAgBhxF,YAAY3wa,GAAOmjD,UAAW,CAC/Cr/C,MAAOopf,IAAW,CAAC,EAAGyU,EAAgBhxF,YAAY3wa,GAAO8D,MAAO49f,aAAqD,EAASA,EAAc1hgB,OAC1I,UAAS,CACXW,KAAM,OACNsG,KAAK,GACJimf,IAAW,CAAC,EAAGyU,EAAgB/tF,WAAW5za,GAAQipf,aAA2C,EAASA,EAASjpf,KACpH,IAEAixf,EAAkB14f,KAAK,CACrBoI,KAAM,OACNsG,KAAK,EACLyX,MAAO,CAAC,MAAO+if,GACf56e,IAAK,CAAC,MAAO46e,GACb39f,MAAOopf,IAAW,CAAC,EAAGyU,EAAgBnxF,UAAWA,IAChD,CACD7va,KAAM,OACNsG,KAAK,EACLyX,MAAO,CAAC8if,EAAW,OACnB36e,IAAK,CAAC26e,EAAW,OACjB19f,MAAOopf,IAAW,CAAC,EAAGyU,EAAgBnxF,UAAWA,IAErD,CACA,OAAOjoM,IAAK,IAAW0oR,GAAhB1oR,CAAoCjvN,EAC7C,CAEA,SAASymf,IAAezmf,GACtB,IAAI6jB,EAAU7jB,EAAO6jB,QACnBu3a,EAAQp7b,EAAOo7b,MACbqrD,EAAiB5ie,EAAQ4ie,eAC7B,GAAIA,EAAgB,CAClB,IAAI5/E,EAAU4/E,EAAej8f,MAC3B3K,EAAK4mgB,EAAe+B,cACpBC,OAAyB,IAAP5ogB,EAAgB,CAAC,EAAIA,EACvC+V,EAAK6wf,EAAe94f,IACpB+6f,OAAe,IAAP9yf,GAAwBA,EAChCC,EAAK4wf,EAAekC,aACpBC,OAAwB,IAAP/yf,GAAwBA,EACvCgzf,EAAiB,CACnBhpf,OAAQ,UACR1B,UAAW,EACX9K,QAAS,IAEPy1f,EAAwB,CAC1Bn/f,EAAG,GACHC,EAAG,GACH+V,UAAW,OACXC,aAAc,SACdJ,SAAU,GACV+iE,YAAa,IAEf64X,EAAMpN,aAAa7pc,MAAM,CACvBwJ,IAAK+6f,EACLh/b,OAAQ,SAAgBhiE,EAAWopQ,GACjC,IAAI1gQ,EAAQ1I,EAAUyI,SAAS,CAC7BiC,GAAI,GAAGH,OAAOmpc,EAAMhpc,GAAI,oBACxBzR,KAAM,0BAEJd,EAAK,IAAQ,CACbixQ,KAAMA,EACNjtO,QAASA,IAEXt+B,EAAO1F,EAAG,GACV8mgB,EAAW9mgB,EAAG,GAChBuQ,EAAML,SAAS,OAAQ,CACrBpP,KAAM,kBACNqE,OAAO,WAAS,UAAS,CACvBO,KAAMA,GACLsjgB,GAAiBhiF,KAElB+hF,GACFx4f,EAAML,SAAS,OAAQ,CACrBpP,KAAM,sBACNqE,OAAO,WAAS,WAAS,UAAS,CAAC,EAAG8jgB,GAAwBL,GAAkB,CAC9Elpf,KAAMonf,KAId,GAEJ,CACA,OAAO3mf,CACT,CAKO,SAAS,IAAQA,GACtB,IAAIo7b,EAAQp7b,EAAOo7b,MAEf33M,EADQzjP,EAAO6jB,QACG4/N,QAMtB,OALIA,EACF23M,EAAM33M,QAAQA,IACO,IAAZA,GACT23M,EAAM33M,SAAQ,GAETzjP,CACT,CAMO,SAAS,IAAQA,GAEtB,OAAOivN,IAAK,IAAU,IAAM,IAAM,IAAQ,IAAS,IAEnD6sR,IAAkB,IAAQ,IAAW,IAAakM,IAAmB5jgB,IAAW,IAAOqigB,IAFhFx3R,CAEgGjvN,EACzG,CC/TO,IAAI,IAAkB4ze,IAAW,CAAC,EAAGuF,IAAKC,oBAAqB,CACpEp2d,KAAM,EACNygO,QAAS,CACPv3G,WAAW,EACXmhT,aAAa,EACbD,gBAAgB,EAChBnf,WAAY,CACV5mb,KAAM,SCXZ+7b,IAAoB,YAAa,CAC/Bh+a,MAAO,CAAC,CACNiiF,QAAS,iBACTluE,OAAQ,0BAEVk5d,WAAY,CAAC,CACXhrZ,QAAS,iBACTluE,OAAQ,4BACRyvD,SAAU,CACRrmD,KAAM,IACNwB,SAAS,EACTG,UAAU,KAGd3W,IAAK,CAAC,CACJ85E,QAAS,eACTluE,OAAQ,0BCVZ,IAAI4ve,IAAuB,SAAU3ogB,GAEnC,SAAS2ogB,EAAQrhgB,EAAWm8B,GAC1B,IAAI1kC,EAAQiB,EAAOE,KAAK5B,KAAMgJ,EAAWm8B,IAAYnlC,KA0BrD,OAxBAS,EAAMkI,KAAO,UAEblI,EAAMN,GAAGo3Z,IAAiBgnD,eAAe,SAAUn+c,GACjD,IAAIe,EAAI+V,EAEJC,EAAK1W,EACP0kC,EAAUhuB,EAAGguB,QACbu3a,EAAQvlc,EAAGulc,MACb,IAAyB,QAAnBv7c,EAAKf,EAAIslB,YAAyB,IAAPvkB,OAAgB,EAASA,EAAGkwB,UAAY,IAAoB+6d,OAAQ,CACnG,IAAIztC,EAAel+c,EAAMi8c,MAAM2E,WAAW5gd,EAAMi8c,MAAMz8S,WACtD,IAAK,CACHy8S,MAAOA,EACPv3a,SAAS,WAAS,UAAS,CAAC,EAAGA,GAAU,CACvCzf,KAAMi5b,KAGZ,EACyB,QAAnBznc,EAAK9W,EAAIslB,YAAyB,IAAPxO,OAAgB,EAASA,EAAGma,UAAY,IAAoBk7d,OAC3F,IAAK,CACH7vC,MAAOA,EACPv3a,QAASA,GAGf,IACO1kC,CACT,CAkCA,OA/DA,UAAU4pgB,EAAS3ogB,GAkCnB2ogB,EAAQ3P,kBAAoB,WAC1B,OAAO,GACT,EAKA2P,EAAQnqgB,UAAUw/c,WAAa,SAAUh6b,GACvC1lB,KAAKg7f,aAAa6N,IAAiB3T,IAAW,CAAC,EAAGl1f,KAAKmlC,QAAS,CAC9Dzf,KAAMA,MAER,IACEyf,EADOnlC,KACMmlC,QAEf,IAAK,CACHu3a,MAJO18c,KAEI08c,MAGXv3a,QAASA,IAEXnlC,KAAK08c,MAAMgD,WAAWh6b,EACxB,EAIA2kf,EAAQnqgB,UAAUs7f,iBAAmB,WACnC,OAAO,GACT,EACA6O,EAAQnqgB,UAAUw6f,kBAAoB,WACpC,OAAO2P,EAAQ3P,mBACjB,EACO2P,CACT,CAjE2B,CAiEzB5P,KCtES6P,IAAU,kBACVC,IAAc,QACdC,IAAW,KACXC,IAAa,OAqCb,IAAkBvV,IAAW,CAAC,EAAGuF,IAAKC,oBAAqB,CAEpE31P,QArCmC,CACnC4pM,aAAa,EACbD,gBAAgB,EAChBz8K,QAAQ,EACRs9J,WAAY,CACV5mb,KAAM,KACN8lc,QAAQ,EACR5tb,KAAM,SAAclY,EAAM+hgB,EAAgBvkd,GACxC,IAAIk4B,EACJ,GAAa,MAAT11E,EAAc,CAChB,IAAI8O,EAAO0uC,EAAM,GACjBk4B,EAAc5mE,EAAOA,EAAKs6C,MAAQ24c,CACpC,MACErsb,EAAcqsb,EAEhB,MAAO,CACLv/c,SAAmB,MAATxiD,EAAe,QAAU,MACnCmuE,QAASuH,EACTvyE,MAAO,CACL8vC,KAAM,WAGZ,EAEAwnY,eAAgB,CACdhpW,QAAS,CAAC,EAAG,GACbtuE,MAAO,CACL8vC,KAAM,WAWZmha,aAAc,CAAC,CACbp0c,KAAM,YAER0uQ,OAAQ,CACNlsN,SAAU,YAEZw/c,WAAY,UACZC,YAAa,YC5CR,SAASC,IAAanlf,EAAMuzY,GACjC,OAAO,UAAIvzY,GAAM,SAAUjO,GACzB,IAAIsc,EAAMtc,IAAQ,UAAS,CAAC,EAAGA,GAC/B,IAAI,UAAQwhZ,IAAWllY,EAAK,CAC1B,IAAI+2e,EAAS7xG,EAAO,GAClB8xG,EAAU9xG,EAAO,GACjB+xG,EAAO/xG,EAAO,GACdgyG,EAAMhyG,EAAO,GACfllY,EAAIw2e,KAAex2e,EAAI+2e,IAAW/2e,EAAIg3e,GAAWP,IAAWC,IAC5D12e,EAAIu2e,KAAW,CAACv2e,EAAI+2e,GAAS/2e,EAAIg3e,GAAUh3e,EAAIi3e,GAAOj3e,EAAIk3e,GAC5D,CACA,OAAOl3e,CACT,GACF,CCXA,SAAS,IAASzS,GAChB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACf8zX,EAAS9zX,EAAQ8zX,OACjBvzY,EAAOyf,EAAQzf,KACjBilf,EAAaxle,EAAQwle,WACrBC,EAAczle,EAAQyle,YACtB7lQ,EAAU5/N,EAAQ4/N,QAClBmmQ,EAAa/le,EAAQ+le,WACvBxuD,EAAMh3b,KAAKmlf,IAAanlf,EAAMuzY,IAC9B,IAAIwjG,EAAiB13P,EAmBrB,OAlBuB,IAAnB03P,IACFA,EAAiBvH,IAAW,CAAC,EAAG,CAC9Bt1X,OAAQq5R,GACPwjG,IAEL,IAAOvH,IAAW,CAAC,EAAG5ze,EAAQ,CAC5B6jB,QAAS,CACPk/F,OAAQ,CACN5+H,MAAO,SACPsuC,MAAO,CAAC42d,EAAYC,GACpB9+f,MAAOo/f,GAETjyG,OAAQqxG,IACRtR,YAAauR,IACb7V,UAAWz7F,EACXl0J,QAAS03P,MAGNn7e,CACT,CAKO,SAAS,IAAKA,GACnB,IAAIngB,EAAI+V,EACJwlc,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfmlG,EAAOnlG,EAAQmlG,KACjBswX,EAAQz1d,EAAQy1d,MAChBzB,EAAQh0d,EAAQg0d,MAChBngG,EAAS7zX,EAAQ6zX,OACfmyG,IAAYhqgB,EAAK,CAAC,GAAM63Z,GAAU,CACpCrwZ,KAAM,UACN6nP,UAAW,GACVrvP,EAAGopgB,KAAe,CACnB/pe,OAAQ,CAACgqe,IAAUC,MAClBtpgB,GACC+oP,EAASgrQ,IAAWiW,EAAU7gY,IAAOpzH,EAAK,CAAC,GAAM8hZ,GAAU,IAAK4hG,EAAO9G,KAAwB58e,EAAGozf,KAAW,IAAKnR,EAAOrF,KAAwB58e,IAErJ,OADAwlc,EAAM5jc,MAAMoxO,GACL5oO,CACT,CAKO,SAAS,IAAKA,GACnB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfy1d,EAAQz1d,EAAQy1d,MAClBzB,EAAQh0d,EAAQg0d,MAChBngG,EAAS7zX,EAAQ6zX,OAYnB,OAVc,IAAV4hG,EACFl+C,EAAM7oM,KAAKmlJ,GAAQ,GAEnB0jD,EAAM7oM,KAAKmlJ,EAAQ4hG,IAEP,IAAVzB,EACFz8C,EAAM7oM,KAAKy2P,KAAS,GAEpB5tD,EAAM7oM,KAAKy2P,IAASnR,GAEf73e,CACT,CAKO,SAAS,IAAQA,GACtB,IAAIo7b,EAAQp7b,EAAOo7b,MAEf33M,EADQzjP,EAAO6jB,QACG4/N,QAMtB,OALgB,IAAZA,EACF23M,EAAM33M,QAAQA,GAEd23M,EAAM33M,SAAQ,GAETzjP,CACT,CAKO,SAAS,IAAOA,GACrB,IAAIo7b,EAAQp7b,EAAOo7b,MAEfrlM,EADQ/1P,EAAO6jB,QACEkyO,OAMrB,OALIA,EACFqlM,EAAMrlM,OAAOkzP,IAAalzP,IACN,IAAXA,GACTqlM,EAAMrlM,QAAO,GAER/1P,CACT,CAMO,SAAS,IAAQA,GAEtBivN,IAAK,IAAO,IAAU,IAAM,IAAM,IAAS,IAAQ,IAAa7qO,IAAW,MAAc,IAAzF6qO,CAAiGjvN,EACnG,CCvHA,IAAI8pf,IAAqB,SAAU1pgB,GAEjC,SAAS0pgB,IACP,IAAI3qgB,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAGhE,OADAS,EAAMkI,KAAO,QACNlI,CACT,CAgCA,OAtCA,UAAU2qgB,EAAO1pgB,GAWjB0pgB,EAAM1Q,kBAAoB,WACxB,OAAO,GACT,EAKA0Q,EAAMlrgB,UAAUw6f,kBAAoB,WAClC,OAAO0Q,EAAM1Q,mBACf,EAIA0Q,EAAMlrgB,UAAUs7f,iBAAmB,WACjC,OAAO,GACT,EAKA4P,EAAMlrgB,UAAUw/c,WAAa,SAAUh6b,GACrC1lB,KAAKg7f,aAAa,CAChBt1e,KAAMA,IAER,IAAIuzY,EAASj5Z,KAAKmlC,QAAQ8zX,OAC1Bj5Z,KAAK08c,MAAMgD,WAAWmrD,IAAanlf,EAAMuzY,GAC3C,EACOmyG,CACT,CAxCyB,CAwCvB3Q,KC5CK,SAAS4Q,IAAY3lf,GAC1B,OAAO,UAAIA,GAAQ,IAAI,SAAUxa,EAAGD,GAClC,MAAO,CACLA,EAAG,GAAGsI,OAAOtI,GACbC,EAAGA,EAEP,GACF,CCNO,IAAIoggB,IAAU,IACV,IAAU,IACV,IAA0B,CACnC99W,WAAW,EACXykI,QAAQ,EACR08K,aAAa,EACbzf,cAAe,SAAuBjkb,EAAGya,GACvC,MAAO,GAAGnS,QAAO,UAAImS,EAAM,CAAC,EAAG,OAAQ,KAAM,GAC/C,EACAk0Z,aAAc,oEACduV,QAAS,uBACTjV,UAAW,CACT,aAAc,CACZ9/V,QAAS,UACTt5D,SAAU,SAGd4tb,gBAAgB,EAChBnf,WAAY,CACV5mb,KAAM,MAMC,IAAkB,CAC3Bo1c,cAAe,EACfh5M,SAAS,UAAS,CAAC,EAAG,KACtBr/P,UAAW,CAAC,GCpBd,SAAS,IAAS4b,GAChB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfzf,EAAOyf,EAAQzf,KACjBquB,EAAQ5O,EAAQ4O,MAChBo+Y,EAAYhtZ,EAAQgtZ,UACpBo5E,EAAepme,EAAQn6B,MACvBwggB,EAAcrme,EAAQjP,KACpBgme,EAAaqP,aAAmD,EAASA,EAAahod,MACtFkod,EAAaJ,IAAY3lf,GAC7Bg3b,EAAMh3b,KAAK+lf,GACX,IAAIhsZ,EAAUy1Y,IAAW,CAAC,EAAG5ze,EAAQ,CACnC6jB,QAAS,CACP6zX,OAAQsyG,IACRryG,OAAQ,IACRrwW,KAAM,CACJ7U,MAAOA,EACPjoC,MAAOqmb,GAETj8Z,KAAMs1e,EACNxggB,MAAOuggB,KAGPlkT,EAAS6tS,IAAW,CAAC,EAAGz1Y,EAAS,CACnCt6E,QAAS,CACP4/N,SAAS,KAGT43P,EAAczH,IAAW,CAAC,EAAGz1Y,EAAS,CACxCt6E,QAAS,CACP4/N,SAAS,EACTxhN,MAAO24c,KASX,OALA,IAAKz8Y,GACL,IAAK4nG,GACL,IAAMs1S,GACNjgD,EAAM7oM,MAAK,GACX6oM,EAAMrlM,QAAO,GACN/1P,CACT,CAKO,SAAS,IAAKA,GACnB,IAAIngB,EAAI+V,EACJiuB,EAAU7jB,EAAO6jB,QACjBy1d,EAAQz1d,EAAQy1d,MAClBzB,EAAQh0d,EAAQg0d,MAEdsS,EAAaJ,IADRlme,EAAQzf,MAEjB,OAAO6qN,IAAK,MAAOpvO,EAAK,CAAC,GAAMmqgB,KAAW1Q,EAAOz5f,EAAG,KAAWg4f,EAAOh4f,KAAM+V,EAAK,CAAC,GAAMo0f,KAAW,CACjG3igB,KAAM,OACLuO,EAAG,KAAWg9e,IAAkBuX,EAAY,KAAUv0f,IAFlDq5N,CAEwDjvN,EACjE,CAMO,SAAS,IAAQA,GACtB,OAAOivN,IAAK,IAAQ,aAAc,IAAU,IAAM,IAAS,IAAO7qO,IAAW,MAAtE6qO,CAAoFjvN,EAC7F,CCrEO,IAAI,IAAkB,CAC3By8b,cAAe,EACfh5M,SAAS,UAAS,CAAC,EAAG,KAEtBhxN,MAAO,4BACPo+Y,UAAW,CACTtuW,YAAa,IAEf3tD,KAAM,CACJoO,KAAM,EACNyP,MAAO,WAETruC,UAAW,CAAC,GCZVgmgB,IAAwB,SAAUhqgB,GAEpC,SAASgqgB,IACP,IAAIjrgB,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAGhE,OADAS,EAAMkI,KAAO,YACNlI,CACT,CAkCA,OAxCA,UAAUirgB,EAAUhqgB,GAWpBgqgB,EAAShR,kBAAoB,WAC3B,OAAO,GACT,EAKAgR,EAASxrgB,UAAUw/c,WAAa,SAAUh6b,GACxC1lB,KAAKg7f,aAAa,CAChBt1e,KAAMA,IAER,IACEg3b,EADO18c,KACI08c,MAEb,IAAK,CACHA,MAAOA,EACPv3a,QALOnlC,KAEMmlC,UAKfu3a,EAAMgD,WAAW2rD,IAAY3lf,GAC/B,EACAgmf,EAASxrgB,UAAUw6f,kBAAoB,WACrC,OAAOgR,EAAShR,mBAClB,EAIAgR,EAASxrgB,UAAUs7f,iBAAmB,WACpC,OAAO,GACT,EACOkQ,CACT,CA1C4B,CA0C1BjR,KCpCF,SAAS,IAASn5e,GAChB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfzf,EAAOyf,EAAQzf,KACjBquB,EAAQ5O,EAAQ4O,MAChBsqd,EAAcl5d,EAAQk5d,YACtBxjG,EAAmB11X,EAAQ01X,iBACzB4wG,EAAaJ,IAAY3lf,GAiB7B,OAhBAg3b,EAAMh3b,KAAK+lf,GAYX,IAXQvW,IAAW,CAAC,EAAG5ze,EAAQ,CAC7B6jB,QAAS,CACP6zX,OAAQsyG,IACRryG,OAAQ,IACRkhG,WAAYt/F,EACZr4Z,SAAU,CACRsJ,MAAOuyf,EACPtqd,MAAOA,OAKb2oa,EAAM7oM,MAAK,GACX6oM,EAAMrlM,QAAO,GACbqlM,EAAM/X,YAAY,kBACXrjb,CACT,CAMO,SAAS,IAAQA,GACtB,OAAOivN,IAAK,IAAO,IAAQ,eAAgB,IAAU,IAAM,IAAS7qO,IAAW,MAAxE6qO,CAAsFjvN,EAC/F,CC1CO,IAAI,IAA0B,CACnCksI,WAAW,EACXykI,QAAQ,EACR08K,aAAa,EACbzf,cAAe,SAAuBjkb,EAAGya,GACvC,MAAO,GAAGnS,QAAO,UAAImS,EAAM,CAAC,EAAG,OAAQ,KAAM,GAC/C,EACAk0Z,aAAc,oEACduV,QAAS,uBACTjV,UAAW,CACT,aAAc,CACZ9/V,QAAS,UACTt5D,SAAU,UAOL,IAAkB,CAC3Bi9b,cAAe,EACfh5M,SAAS,UAAS,CAAC,EAAG,KACtBr/P,UAAW,CAAC,GCnBVimgB,IAA0B,SAAUjqgB,GAEtC,SAASiqgB,IACP,IAAIlrgB,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAGhE,OADAS,EAAMkI,KAAO,cACNlI,CACT,CAkCA,OAxCA,UAAUkrgB,EAAYjqgB,GAWtBiqgB,EAAWjR,kBAAoB,WAC7B,OAAO,GACT,EAKAiR,EAAWzrgB,UAAUw/c,WAAa,SAAUh6b,GAC1C1lB,KAAKg7f,aAAa,CAChBt1e,KAAMA,IAER,IACEg3b,EADO18c,KACI08c,MAEb,IAAK,CACHA,MAAOA,EACPv3a,QALOnlC,KAEMmlC,UAKfu3a,EAAMgD,WAAW2rD,IAAY3lf,GAC/B,EACAimf,EAAWzrgB,UAAUw6f,kBAAoB,WACvC,OAAOiR,EAAWjR,mBACpB,EAIAiR,EAAWzrgB,UAAUs7f,iBAAmB,WACtC,OAAO,GACT,EACOmQ,CACT,CA1C8B,CA0C5BlR,KCpCF,SAAS,IAASn5e,GAChB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfzf,EAAOyf,EAAQzf,KACjBquB,EAAQ5O,EAAQ4O,MAChBykY,EAAYrzY,EAAQqzY,UACpBwjF,EAAe72d,EAAQn6B,MACrBkxf,EAAaF,aAAmD,EAASA,EAAaz4c,MACtFkod,EAAaJ,IAAY3lf,GAC7Bg3b,EAAMh3b,KAAK+lf,GAEX,IAAIhsZ,EAAUy1Y,IAAW,CAAC,EAAG5ze,EAAQ,CACnC6jB,QAAS,CACP6zX,OAAQsyG,IACRryG,OAAQ,IACR/iY,KAAM,CACJ6d,MAAOA,EACPjoC,MAAO0sa,GAETxta,MAAOgxf,KAGPW,EAAczH,IAAW,CAAC,EAAGz1Y,EAAS,CACxCt6E,QAAS,CACP4/N,SAAS,EACTxhN,MAAO24c,KAOX,OAJA,IAAKz8Y,GACL,IAAMk9Y,GACNjgD,EAAM7oM,MAAK,GACX6oM,EAAMrlM,QAAO,GACN/1P,CACT,CAMO,SAAS,IAAQA,GACtB,OAAOivN,IAAK,IAAU,IAAM,IAAO,IAAS7qO,IAAW,MAAhD6qO,CAA8DjvN,EACvE,CC/CA,IAAIsqf,IAAwB,SAAUlqgB,GAEpC,SAASkqgB,IACP,IAAInrgB,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAGhE,OADAS,EAAMkI,KAAO,YACNlI,CACT,CAkCA,OAxCA,UAAUmrgB,EAAUlqgB,GAWpBkqgB,EAASlR,kBAAoB,WAC3B,OAAO,GACT,EAKAkR,EAAS1rgB,UAAUw/c,WAAa,SAAUh6b,GACxC1lB,KAAKg7f,aAAa,CAChBt1e,KAAMA,IAER,IACEg3b,EADO18c,KACI08c,MAEb,IAAK,CACHA,MAAOA,EACPv3a,QALOnlC,KAEMmlC,UAKfu3a,EAAMgD,WAAW2rD,IAAY3lf,GAC/B,EACAkmf,EAAS1rgB,UAAUw6f,kBAAoB,WACrC,OAAOkR,EAASlR,mBAClB,EAIAkR,EAAS1rgB,UAAUs7f,iBAAmB,WACpC,OAAO,GACT,EACOoQ,CACT,CA1C4B,CA0C1BnR,KCZEoR,IAAgB,CAClB31e,KAAM,IACN41e,IAAK,IACLtqX,OAAQ,IACRuvL,IAAK,IACLnoR,KAAM,IACNmjd,MAAO,IACP,YAAa,IACb,cAAe,IACf,YAAa,IACb,gBAAiB,IACjBt4Z,SAAU,IACVu4Z,QAAS,IACTC,UAAW,IACXv/D,OAAQ,IACRw/D,MAAO,KAMLC,IAAmB,CACrBj2e,KAAM,IACN41e,IAAK,IACLtqX,OAAQ,IACRuvL,IAAK0uL,IACL72c,KAAM,IACNmjd,MAAOjI,IACP,YAAa8H,IACb,cAAeD,IACf,YAAaD,IACb,gBAAiBhE,IACjBj0Z,SAAU,IACVu4Z,QAAS3B,IACT4B,UAAWlH,IACXr4D,OAAQq1D,IACRmK,MAAOd,KAKLgB,IAAsB,CACxBN,IAAK,CACHl/c,OAAO,GAET40F,OAAQ,CACNujH,QAAS,CACP4pM,aAAa,IAGjB59H,IAAK,CACHhsE,QAAS,CACP4pM,aAAa,KAQZ,SAAS09D,IAAgBC,EAAMl6P,EAAMjtO,GAC1C,IAAI46B,EAAMosc,IAAiBG,GACtBvsc,GAKLx2B,EADasie,IAAcS,IACpB,CACL5vD,MAAOtqM,EACPjtO,QAAS+vd,IAAW,CAAC,EAAGn1b,EAAI26b,qBAAqB,UAAI0R,IAAqBE,EAAM,CAAC,GAAInne,KANrF6/F,QAAQ53E,MAAM,kBAAkB75C,OAAO+4f,EAAM,SAQjD,CC9FA,SAASC,IAAUjrf,GACjB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfqwO,EAAQrwO,EAAQqwO,MAClB6B,EAASlyO,EAAQkyO,OAsFnB,OArFA,UAAK7B,GAAO,SAAUvjQ,GACpB,IAAIk8Z,EAASl8Z,EAAEk8Z,OACbzoZ,EAAOzT,EAAEyT,KACT4kH,EAAOr4H,EAAEq4H,KACTy5L,EAAO9xT,EAAE8xT,KACT9lD,EAAahsQ,EAAEgsQ,WACf8+L,EAAe9qc,EAAE8qc,aACjBkH,EAAchyc,EAAEgyc,YAChBl/M,EAAU9yP,EAAE8yP,QACZ3lD,EAAantM,EAAEmtM,WAEbotT,EAAW9vD,EAAM3nD,WAAW,CAC9BoZ,OAAQA,IAGVq+F,EAAS9mf,KAAKA,GAEd,IAAIwkO,EAAS,CAAC,EACV65E,IACF,UAAKA,GAAM,SAAUlwD,EAAMh0I,GACzBqqH,EAAOrqH,GAAS,IAAKg0I,EAAMigP,IAC7B,IAEF5pQ,EAASgrQ,IAAW,CAAC,EAAG5qX,EAAM4/G,GAC9BsiR,EAAS1zf,MAAMoxO,GAEV65E,GAGH,UAAKA,GAAM,SAAUlwD,EAAMh0I,GACzB2sY,EAAS34P,KAAKh0I,EAAOg0I,EACvB,IAJA24P,EAAS34P,MAAK,GAOhB24P,EAASvuP,WAAWA,IAEpB,UAAK7+D,GAAY,SAAUC,GACzB,IAAI+M,EAAM,IAAgB,CACxBswP,MAAO8vD,EACPrne,QAASk6K,IACR+M,IAECwtD,EAASv6D,EAASu6D,OAClBA,GACFxtD,EAAI/M,SAASu6D,OAAOA,EAExB,KAEA,UAAKmjM,GAAc,SAAUpY,IACA,IAAvBA,EAAY7oB,OACd0wF,EAAS/sD,kBAAkB9a,EAAYh8b,MAEvC6jgB,EAAS7nE,YAAYA,EAAYh8b,KAAMg8b,EAAYhjc,IAEvD,KAEA,UAAKsid,GAAa,SAAU3U,GAC1Bk9D,EAASl9D,aAAaA,EAAW3mc,OAAM,UAAS,CAAC,EAAG2mc,GACtD,IAE2B,kBAAhBr9b,EAAEvM,UACX8mgB,EAAS11f,SAAQ,IAEjB01f,EAAS11f,SAAQ,IAEjB,UAAK01f,EAASptT,YAAY,SAAU5qK,GAClCA,EAAE19B,QAAQ7E,EAAEvM,UACd,KAEEq/P,IAEFynQ,EAAS7nE,YAAY,WACrB6nE,EAASznQ,QAAQA,GAErB,IAEKsS,GAGH,UAAKA,GAAQ,SAAU/xP,EAAGu6G,GACxB68U,EAAMrlM,OAAOx3I,EAAOv6G,EACtB,IAJAo3b,EAAMrlM,QAAO,GAOfqlM,EAAM33M,QAAQ5/N,EAAQ4/N,SACfzjP,CACT,CAKA,SAASmrf,IAAUnrf,GACjB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfune,EAAQvne,EAAQune,MAClBvrgB,EAAKgkC,EAAQzf,KACbA,OAAc,IAAPvkB,EAAgB,GAAKA,EAyB9B,OAxBA,UAAKurgB,GAAO,SAAUJ,GACpB,IAAI3jgB,EAAO2jgB,EAAK3jgB,KACdwla,EAASm+F,EAAKn+F,OACdhta,EAAKmrgB,EAAKnne,QACVA,OAAiB,IAAPhkC,EAAgB,CAAC,EAAIA,EAC/B8N,EAAMq9f,EAAKr9f,IACT81P,EAAU5/N,EAAQ4/N,QACtB,GAAI91P,EACFo9f,IAAgB1jgB,EAAM+zc,GAAO,WAAS,UAAS,CAAC,EAAGv3a,GAAU,CAC3Dzf,KAAMA,SAFV,CAMA,IAAI8mf,EAAW9vD,EAAM3nD,YAAW,UAAS,CACvCoZ,OAAQA,GACP,IAAKhpY,EAASq1d,OACbz1P,GAEFynQ,EAAS7nE,YAAY,WAEvB0nE,IAAgB1jgB,EAAM6jgB,GAAU,UAAS,CACvC9mf,KAAMA,GACLyf,GAVH,CAWF,IACO7jB,CACT,CAKO,SAAS,IAAOA,GACrB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QAEnB,OADAu3a,EAAMhkZ,OAAO,SAAUvzB,EAAQ8jF,QACxB3nG,CACT,CAMO,SAAS,IAAQA,GACtB,OAAOivN,IAAK7qO,IAEZ6mgB,IAAWE,IAAW,IAAa/mgB,IAAW,IAAO,IAAS,IAAQ,MAF/D6qO,CAILjvN,EACJ,CC/IA,IAAIqrf,IAA2B,SAAUjrgB,GAEvC,SAASirgB,IACP,OAAkB,OAAXjrgB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CA+HA,OAlIA,UAAU2sgB,EAAajrgB,GAYvBirgB,EAAYzsgB,UAAU0sgB,oBAAsB,SAAUp3P,EAAOl0P,GAC3D,IAAIngB,EACA4J,EAAQ/K,KAAKmzB,QAAQpoB,MACrBmM,EAAKoK,GAAU,CAAC,EAClBurf,EAAY31f,EAAG21f,UACfn7N,EAAMx6R,EAAGw6R,IACPvrP,EAAQ,GACZ,GAA0B,QAArBhlD,EAAK4J,EAAM2a,YAAyB,IAAPvkB,OAAgB,EAASA,EAAGukB,KAAM,CAClE,IAAI+kd,EAAS1/d,EAAM2a,KAAKA,MACxB,UAAK8vP,GAAO,SAAUvjQ,GACpB,IAAI9Q,EAAI+V,EACJ2oH,EAAQgtY,EAUZ,GATY,MAARn7N,EACF7xK,EAAQ5tH,EAAE6kc,YAAYj3U,MACL,MAAR6xK,EACT7xK,EAEQ,QAFC1+H,EAAK8Q,EAAE8tc,aAAavsc,MAAK,SAAUsK,GAC1C,OAAOA,EAAE+hH,QAAUA,CACrB,WAAuB,IAAP1+H,OAAgB,EAASA,EAAG0+H,MAClCA,IACVA,EAAyC,QAAhC3oH,EAAKjF,EAAE2mc,iBAAiB,UAAuB,IAAP1hc,OAAgB,EAASA,EAAG2oH,OAE1EA,EAAL,CAGA,IAAIl/F,GAAW,UAAI00d,IAAepjf,IAAI,SAAUw1E,GAC9C,IAAI8uC,GAAS,EACT8wI,GAAW,EACX4/P,GAAY,UAAQx8B,IAAU,UAAIA,EAAO,GAAI5qW,IAAS,UAAI4qW,EAAQ5qW,GAMtE,OCxDH,SAAyBlwH,EAASkwH,GACvC,IACIrrE,EADQ7kD,EAAQ+xb,WACDh8a,KAOnB,OALI,UAAQ8uC,GACFA,EAAO,GAAGqrE,GAEVrrE,EAAOqrE,EAGnB,CDyCc,CAAgBp4C,EAAKo4C,KAAWonY,EAClC1wY,GAAS,EAET8wI,GAAW,EAEN,CACL13P,QAAS83E,EACT2qL,KAAMngQ,EACNskH,OAAQA,EACR8wI,SAAUA,EAEd,IACAlhN,EAAM5lD,KAAKc,MAAM8kD,EAAOxlB,EAjBxB,CAkBF,GACF,CACA,OAAOwlB,CACT,EAIAwmd,EAAYzsgB,UAAU4gd,YAAc,SAAUx/b,GAC5C,IAAI87Q,EAAW+5N,IAAgBn3f,KAAKmzB,QAAQi/O,MACxCzxO,EAAW3gC,KAAK4sgB,oBAAoBxvO,EAAU97Q,IAClD,UAAKqf,GAAU,SAAU8mD,GACvB,GAAIA,EAAI8uC,OAAQ,CACd,IAAIh1G,EAAMkmE,EAAI93E,QAAQlK,MAAMmL,gBAC5B62E,EAAI2qL,KAAK0uM,YAAY,CACnB71c,EAAGsW,EAAIrR,KAAOqR,EAAIxT,MAAQ,EAC1B7C,EAAGqW,EAAInR,KAAOmR,EAAIvT,OAAS,GAE/B,CACF,GACF,EAIA2+f,EAAYzsgB,UAAU6gd,YAAc,WAClC,IAAI3jL,EAAW+5N,IAAgBn3f,KAAKmzB,QAAQi/O,OAC5C,UAAKgrB,GAAU,SAAUvlG,GACvBA,EAAQkpR,aACV,GACF,EAIA4rD,EAAYzsgB,UAAUq2H,OAAS,SAAUj1G,GACvC,IAAIk0P,EAAQ0hP,IAASl3f,KAAKmzB,QAAQi/O,MAC9BjsN,EAAQnmD,KAAK4sgB,oBAAoBp3P,EAAOl0P,IAC5C,UAAK6kC,GAAO,SAAU1uC,GACpB,IAAI8+G,EAAS9+G,EAAK8+G,OAChB5mH,EAAU8H,EAAK9H,QACb4mH,GACF5mH,EAAQyvD,SAAS,UAAU,EAE/B,GACF,EAIAutc,EAAYzsgB,UAAU4zK,SAAW,SAAUxyJ,GACzC,IAAIk0P,EAAQ0hP,IAASl3f,KAAKmzB,QAAQi/O,MAC9BjsN,EAAQnmD,KAAK4sgB,oBAAoBp3P,EAAOl0P,IAC5C,UAAK6kC,GAAO,SAAU1uC,GACpB,IAAI8+G,EAAS9+G,EAAK8+G,OAChB5mH,EAAU8H,EAAK9H,QACb4mH,GACF5mH,EAAQyvD,SAAS,YAAY,EAEjC,GACF,EAIAutc,EAAYzsgB,UAAUolf,UAAY,SAAUhke,GAC1C,IAAIk0P,EAAQ0hP,IAASl3f,KAAKmzB,QAAQi/O,MAC9BjsN,EAAQnmD,KAAK4sgB,oBAAoBp3P,EAAOl0P,IAC5C,UAAK6kC,GAAO,SAAU1uC,GACpB,IAAI4vP,EAAW5vP,EAAK4vP,SAClB13P,EAAU8H,EAAK9H,QACb03P,GACF13P,EAAQyvD,SAAS,YAAY,EAEjC,GACF,EACAutc,EAAYzsgB,UAAUg2D,MAAQ,WAC5B,IAAIs/M,EAAQ0hP,IAASl3f,KAAKmzB,QAAQi/O,OAClC,UAAKoD,GAAO,SAAUvjQ,ICzHnB,SAAwBmgQ,GAC7B,IAAIzxO,EAAW00d,IAAejjP,IAC9B,UAAKzxO,GAAU,SAAUn2B,GACnBA,EAAGgya,SAAS,WACdhya,EAAG40D,SAAS,UAAU,GAEpB50D,EAAGgya,SAAS,aACdhya,EAAG40D,SAAS,YAAY,GAEtB50D,EAAGgya,SAAS,aACdhya,EAAG40D,SAAS,YAAY,EAE5B,GACF,CD6GM,CAAentD,EACjB,GACF,EACO06f,CACT,CApI+B,CAoI7B,KACFtuE,IAAe,cAAesuE,KAI9BjoE,IAAoB,qBAAsB,CACxCh+a,MAAO,CAAC,CACNiiF,QAAS,qBACTluE,OAAQ,uBAEV5L,IAAK,CAAC,CACJ85E,QAAS,qBACTluE,OAAQ,wBAMZiqa,IAAoB,uBAAwB,CAC1Ch+a,MAAO,CAAC,CACNiiF,QAAS,qBACTluE,OAAQ,yBAEV5L,IAAK,CAAC,CACJ85E,QAAS,qBACTluE,OAAQ,wBAMZiqa,IAAoB,wBAAyB,CAC3Ch+a,MAAO,CAAC,CACNiiF,QAAS,qBACTluE,OAAQ,0BAEV5L,IAAK,CAAC,CACJ85E,QAAS,qBACTluE,OAAQ,wBAMZiqa,IAAoB,sBAAuB,CACzCh+a,MAAO,CAAC,CACNiiF,QAAS,oBACTluE,OAAQ,4BAEV5L,IAAK,CAAC,CACJ85E,QAAS,qBACTluE,OAAQ,8BE1LZ,ICbWqye,IDaPC,IAAmB,SAAUrrgB,GAE/B,SAASqrgB,IACP,IAAItsgB,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAGhE,OADAS,EAAMkI,KAAO,MACNlI,CACT,CAOA,OAbA,UAAUssgB,EAAKrrgB,GAUfqrgB,EAAI7sgB,UAAUs7f,iBAAmB,WAC/B,OAAO,GACT,EACOuR,CACT,CAfuB,CAerBtS,MC3BF,SAAWqS,GACTA,EAAW,IAAI,MACfA,EAAY,KAAI,OAChBA,EAAc,OAAI,QACnB,CAJD,CAIGA,MAAUA,IAAQ,CAAC,KAWC,WACrB,SAAS7lR,IAAO,CAChBzvO,OAAOoxB,eAAeq+M,EAAK,YAAa,CACtCjlP,IAAK,WATF,IAAgBqlgB,EAAO9Q,EAWxB,OAXiB8Q,EAUVyF,IAAME,OAVWzW,EAUH,YATzBvxX,QAAQib,KAAKonX,IAAUyF,IAAMG,IAAM,SAAS15f,OAAOgjf,EAAU,2CAA6C8Q,IAAUyF,IAAMI,KAAO,SAAS35f,OAAOgjf,EAAU,wDAA0D8Q,IAAUyF,IAAME,OAAS,SAASz5f,OAAOgjf,EAAU,kDAAkDhjf,OAAOgjf,EAAU,6BAA+B,uBAU/VwW,GACT,EACApke,YAAY,EACZsqB,cAAc,GAGlB,CAXuB,GAAvB,IClBWk6c,IAAkB,kBAClBC,IAAmB,mBAEnBC,IAAmB,mBCIvB,SAAS,IAAcr0G,EAAQC,EAAQ+/F,EAAatze,EAAMkL,GAC/D,IAAI08e,EAAW,GACfr0G,EAAO7wZ,SAAQ,SAAU2d,GACvBL,EAAKtd,SAAQ,SAAU1B,GACrB,IAAIvF,EACA4yB,IAAO5yB,EAAK,CAAC,GAAM63Z,GAAUtyZ,EAAEsyZ,GAAS73Z,EAAG63f,GAAejze,EAAG5kB,EAAG4kB,GAAKrf,EAAEqf,GAAI5kB,GAC/EmsgB,EAAS/sgB,KAAKwzB,EAChB,GACF,IACA,IAAI6lY,EAAYpiZ,OAAOgpB,QAAO,UAAQ8se,EAAUtU,IAC5C73f,EAAKy4Z,EAAU,GACjB2zG,OAAe,IAAPpsgB,EAAgB,GAAKA,EAC7B+V,EAAK0iZ,EAAU,GACf4zG,OAAe,IAAPt2f,EAAgB,GAAKA,EAC/B,OAAO0Z,EAAU,CAAC28e,EAAM38e,UAAW48e,EAAM58e,WAAa,CAAC28e,EAAOC,EAChE,CAKO,SAASprF,IAAat5T,GAC3B,MAAkB,aAAXA,CACT,CAOO,SAASk1V,IAAgBtB,EAAOlnM,EAAOp3P,GAC5C,IAAIiW,EAAKmhP,EAAM,GACblhP,EAAKkhP,EAAM,GACT/pP,EAAK4I,EAAGwob,YACRpzb,EAAK6K,EAAGuob,YACR17c,EAAKu7c,EAAM+wD,eACb3kZ,EAAS3nH,EAAG2nH,OACZ39D,EAAWhqD,EAAGgqD,SAmBhB,GAjBIi3X,IAAat5T,IAAwB,QAAb39D,IAK1B92B,EAAGwob,YAAcz+b,EAAE40G,SAASvnG,EAAGxc,IAAK,EAAGwc,EAAGg4D,OAAQh4D,EAAGzc,MACrDslB,EAAGuob,YAAcz+b,EAAE40G,SAASvpG,EAAGxa,IAAKwc,EAAGzc,KAAMya,EAAGg6D,OAAQ,IAEtD2+V,IAAat5T,IAAwB,WAAb39D,IAM1B92B,EAAGwob,YAAcz+b,EAAE40G,SAASvnG,EAAGxc,IAAKwc,EAAG9Y,MAAQ,EAAI,EAAG8Y,EAAGg4D,OAAQh4D,EAAGzc,MACpEslB,EAAGuob,YAAcz+b,EAAE40G,SAASvpG,EAAGxa,IAAKwa,EAAG9W,MAAO8W,EAAGg6D,OAAQh4D,EAAG9Y,MAAQ,EAAI,KAErEyva,IAAat5T,IAAwB,WAAb39D,EAAuB,CAMlD,IAAIn8C,EAAOyc,EAAGzc,MAAQya,EAAGza,KAAOyc,EAAGzc,KAAOya,EAAGza,KAC7CqlB,EAAGwob,YAAcz+b,EAAE40G,SAASvnG,EAAGxc,IAAKwc,EAAG9Y,MAAO8Y,EAAGg4D,OAAS,EAAI,EAAGz0E,GACjEslB,EAAGuob,YAAcz+b,EAAE40G,SAASvnG,EAAGg4D,OAAS,EAAI,EAAGh6D,EAAG9W,MAAO8W,EAAGg6D,OAAQz0E,EACtE,CAEA,IAAKoza,IAAat5T,IAAwB,QAAb39D,EAAoB,CAC3Cn8C,EAAOyc,EAAGzc,MAAQya,EAAGza,KAAOyc,EAAGzc,KAAOya,EAAGza,KAC7CqlB,EAAGwob,YAAcz+b,EAAE40G,SAASvnG,EAAGxc,IAAKwc,EAAG9Y,MAAO,EAAG3D,GACjDslB,EAAGuob,YAAcz+b,EAAE40G,SAAS,EAAGvpG,EAAG9W,MAAO8Y,EAAGxc,IAAKD,EACnD,CACF,CCnEA,SAAS,IAASsS,GAChB,IAmBIosf,EACAC,EApBAjxD,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfzf,EAAOyf,EAAQzf,KACjBszY,EAAS7zX,EAAQ6zX,OACjBC,EAAS9zX,EAAQ8zX,OACjBllX,EAAQ5O,EAAQ4O,MAChBqrd,EAAWj6d,EAAQi6d,SACnBjF,EAAah1d,EAAQg1d,WACrB9iP,EAASlyO,EAAQkyO,OACjBvuJ,EAAS3jF,EAAQ2jF,OAEf8wS,EAAY,IAAcZ,EAAQC,EAAQo0G,IAAkB3nf,EAAM08Z,IAAat5T,IAE/EuuJ,EACFqlM,EAAMrlM,OAAOg2P,IAAkBh2P,IACX,IAAXA,GACTqlM,EAAMrlM,QAAO,GAKf,IAAIu2P,EAAgBh0G,EAAU,GAC5Bi0G,EAAiBj0G,EAAU,GA8F7B,OA5FIwoB,IAAat5T,KACf4kZ,EAAYhxD,EAAM3nD,WAAW,CAC3BoZ,OAAQ,CACNznZ,MAAO,CACLzb,EAAG,EACHC,EAAG,GAEL2jB,IAAK,CACH5jB,EAAG,GACHC,EAAG,IAGPwI,GAAIy5f,OAEIlvP,aAAaguJ,YAAYhrL,QAAQ,MAC3C0sR,EAAajxD,EAAM3nD,WAAW,CAC5BoZ,OAAQ,CACNznZ,MAAO,CACLzb,EAAG,GACHC,EAAG,GAEL2jB,IAAK,CACH5jB,EAAG,EACHC,EAAG,IAGPwI,GAAI05f,OAEKnvP,aAAaguJ,YAExByhG,EAAUhof,KAAKkof,GACfD,EAAWjof,KAAKmof,KAGhBH,EAAYhxD,EAAM3nD,WAAW,CAC3BoZ,OAAQ,CACNznZ,MAAO,CACLzb,EAAG,EACHC,EAAG,GAEL2jB,IAAK,CACH5jB,EAAG,EACHC,EAAG,KAGPwI,GAAIy5f,OAENQ,EAAajxD,EAAM3nD,WAAW,CAC5BoZ,OAAQ,CACNznZ,MAAO,CACLzb,EAAG,EACHC,EAAG,IAEL2jB,IAAK,CACH5jB,EAAG,EACHC,EAAG,IAGPwI,GAAI05f,OAEKnvP,aAAah9B,QAAQ,KAChCysR,EAAUhof,KAAKkof,GACfD,EAAWjof,KAAKmof,IAelB,IAbW3Y,IAAW,CAAC,EAAG5ze,EAAQ,CAChCo7b,MAAOgxD,EACPvoe,QAAS,CACPg1d,WAAYA,EACZnhG,OAAQA,EACRC,OAAQA,EAAO,GACf+/F,YAAaqU,IACb7qgB,SAAU,CACRuxC,MAAOA,EACPjoC,MAAOszf,OAkBb,IAbYlK,IAAW,CAAC,EAAG5ze,EAAQ,CACjCo7b,MAAOixD,EACPxoe,QAAS,CACP6zX,OAAQA,EACRC,OAAQA,EAAO,GACf+/F,YAAaqU,IACblT,WAAYA,EACZ33f,SAAU,CACRuxC,MAAOA,EACPjoC,MAAOszf,OAKN99e,CACT,CAMA,SAAS,IAAKA,GACZ,IAAIngB,EAAI+V,EAAIC,EACRguB,EAAU7jB,EAAO6jB,QACnBu3a,EAAQp7b,EAAOo7b,MACbk+C,EAAQz1d,EAAQy1d,MAClBzB,EAAQh0d,EAAQg0d,MAChBngG,EAAS7zX,EAAQ6zX,OACjBC,EAAS9zX,EAAQ8zX,OACfy0G,EAAYzW,IAAav6C,EAAOywD,KAChCQ,EAAa1W,IAAav6C,EAAO0wD,KACjCU,EAAW,CAAC,EAkBhB,OAjBA,WAAM3oe,aAAyC,EAASA,EAAQmlG,OAAS,CAAC,GAAGt5G,KAAI,SAAU+8e,IACrF,UAAI5oe,aAAyC,EAASA,EAAQmlG,KAAM,CAACyjY,EAAS,YAChFD,EAASC,GAAW5oe,EAAQmlG,KAAKyjY,GAASp9I,MAE9C,IACA+rF,EAAM5jc,QAAO3X,EAAK,CAAC,GAAMksgB,KAAoB,CAC3Ct6Y,MAAM,EACNg3N,UAAW,SAAmB93U,GAC5B,OAAO,UAAI67f,EAAU77f,EAAGA,EAC1B,GACC9Q,IACH,MAAO+V,EAAK,CAAC,GAAM8hZ,GAAU4hG,EAAO1jf,EAAG+hZ,EAAO,IAAMkgG,EAAMlgG,EAAO,IAAK/hZ,GAAtE,CAA2Eg+e,IAAW,CAAC,EAAG5ze,EAAQ,CAChGo7b,MAAOgxD,KAET,MAAOv2f,EAAK,CAAC,GAAM6hZ,GAAU4hG,EAAOzjf,EAAG8hZ,EAAO,IAAMkgG,EAAMlgG,EAAO,IAAK9hZ,GAAtE,CAA2E+9e,IAAW,CAAC,EAAG5ze,EAAQ,CAChGo7b,MAAOixD,KAEFrsf,CACT,CAKA,SAAS,IAAKA,GACZ,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfy1d,EAAQz1d,EAAQy1d,MAClBzB,EAAQh0d,EAAQg0d,MAChBngG,EAAS7zX,EAAQ6zX,OACjBC,EAAS9zX,EAAQ8zX,OACjBnwS,EAAS3jF,EAAQ2jF,OACf4kZ,EAAYzW,IAAav6C,EAAOywD,KAChCQ,EAAa1W,IAAav6C,EAAO0wD,KAwCrC,MArCuE,YAAlExS,aAAqC,EAASA,EAAMzvc,UAEvDwid,EAAW95P,KAAKmlJ,GAAQ,WAAS,UAAS,CAAC,EAAG4hG,GAAQ,CACpDhuc,MAAO,CACLm9R,UAAW,WACT,MAAO,EACT,MAIJ4jL,EAAW95P,KAAKmlJ,GAAQ,IAGZ,IAAV4hG,EACF8S,EAAU75P,KAAKmlJ,GAAQ,GAEvB00G,EAAU75P,KAAKmlJ,GAAQ,UAAS,CAE9B7tW,SAAUi3X,IAAat5T,GAAU,MAAQ,UACxC8xY,KAES,IAAVzB,GACFuU,EAAU75P,KAAKolJ,EAAO,IAAI,GAC1B00G,EAAW95P,KAAKolJ,EAAO,IAAI,KAE3By0G,EAAU75P,KAAKolJ,EAAO,GAAIkgG,EAAMlgG,EAAO,KACvC00G,EAAW95P,KAAKolJ,EAAO,GAAIkgG,EAAMlgG,EAAO,MAO1CyjD,EAAM+wD,eAAiB,CACrBtid,SAAUuid,EAAUzwE,aAAal5H,KAAKi1F,GAAQ7tW,SAC9C29D,OAAQA,GAEHxnG,CACT,CAKO,SAAS,IAAYA,GAC1B,IAAIo7b,EAAQp7b,EAAOo7b,MAOnB,OANA,IAAkBw4C,IAAW,CAAC,EAAG5ze,EAAQ,CACvCo7b,MAAOu6C,IAAav6C,EAAOywD,QAE7B,IAAkBjY,IAAW,CAAC,EAAG5ze,EAAQ,CACvCo7b,MAAOu6C,IAAav6C,EAAO0wD,QAEtB9rf,CACT,CAKO,SAAS,IAAYA,GAC1B,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACf8zX,EAAS9zX,EAAQ8zX,OACnBkgG,EAAQh0d,EAAQg0d,MAalB,OAZA,IAAkBjE,IAAW,CAAC,EAAG5ze,EAAQ,CACvCo7b,MAAOu6C,IAAav6C,EAAOywD,KAC3Bhoe,QAAS,CACPg0d,MAAOA,EAAMlgG,EAAO,QAGxB,IAAkBi8F,IAAW,CAAC,EAAG5ze,EAAQ,CACvCo7b,MAAOu6C,IAAav6C,EAAO0wD,KAC3Bjoe,QAAS,CACPg0d,MAAOA,EAAMlgG,EAAO,QAGjB33Y,CACT,CAKO,SAAS,IAAMA,GACpB,IAAIo7b,EAAQp7b,EAAOo7b,MAQnB,OAPA,IAAYw4C,IAAW,CAAC,EAAG5ze,EAAQ,CACjCo7b,MAAOu6C,IAAav6C,EAAOywD,QAE7B,IAAYjY,IAAW,CAAC,EAAG5ze,EAAQ,CACjCo7b,MAAOu6C,IAAav6C,EAAO0wD,QAE7B,IAAY9rf,GACLA,CACT,CAKO,SAAS,IAAUA,GACxB,IAAIo7b,EAAQp7b,EAAOo7b,MAOnB,OANA,IAAgBw4C,IAAW,CAAC,EAAG5ze,EAAQ,CACrCo7b,MAAOu6C,IAAav6C,EAAOywD,QAE7B,IAAgBjY,IAAW,CAAC,EAAG5ze,EAAQ,CACrCo7b,MAAOu6C,IAAav6C,EAAO0wD,QAEtB9rf,CACT,CAKA,SAAS,IAAMA,GACb,IACIngB,EAAI+V,EADJzW,EAAQT,KAER08c,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfynB,EAAQznB,EAAQynB,MAClBqsW,EAAS9zX,EAAQ8zX,OACjBnwS,EAAS3jF,EAAQ2jF,OACf4kZ,EAAYzW,IAAav6C,EAAOywD,KAChCQ,EAAa1W,IAAav6C,EAAO0wD,KACjCY,EAAe5Y,IAAasY,EAAW,YACvCO,EAAgB7Y,IAAauY,EAAY,YAC7C,GAAK/gd,EAGE,CACL,IAAIvsD,EAAWusD,EAAMvsD,SACnB4qd,GAAQ,UAAOr+Z,EAAO,CAAC,aAGpBq+Z,EAAM9/Z,WACT8/Z,EAAM9/Z,SAAW,eAEE10B,IAAjBw0b,EAAM9nY,SACR8nY,EAAM9nY,OAAS,GAGjB,IAAI+qb,GAAe,UAAS,CAAC,EAAGjjD,GAChC,GAAI7oC,IAAat5T,GAAS,CAExB,IAAI7nG,GAA2C,QAA7B9f,EAAK+sgB,EAAapigB,aAA0B,IAAP3K,OAAgB,EAASA,EAAG8f,aAAkC,WAAnBgqc,EAAM9/Z,SAAwB,SAAW,QAC3I8/Z,EAAMn/c,MAAQopf,IAAW,CAAC,EAAGjqC,EAAMn/c,MAAO,CACxCmV,UAAWA,IAObitf,EAAapigB,MAAQopf,IAAW,CAAC,EAAGgZ,EAAapigB,MAAO,CACtDmV,UANiB,CACjBjS,KAAM,QACN2D,MAAO,OACPkrB,OAAQ,UAGgB5c,IAE5B,KAAO,CACL,IAAIktf,EAAgB,CAClBl/f,IAAK,SACLw0E,OAAQ,MACR7E,OAAQ,UAEoB,iBAAnBqsY,EAAM9/Z,SACf8/Z,EAAM9/Z,SAAWgjd,EAAcljD,EAAM9/Z,UACF,mBAAnB8/Z,EAAM9/Z,WACtB8/Z,EAAM9/Z,SAAW,WAEf,IADA,IAAIzqD,EAAO,GACFC,EAAK,EAAGA,EAAKC,UAAUC,OAAQF,IACtCD,EAAKC,GAAMC,UAAUD,GAEvB,OAAOwtgB,EAAcljD,EAAM9/Z,SAAS9pD,MAAMZ,EAAOC,GACnD,GAGF,IAAIwgB,GAA8C,QAA7BhK,EAAKg3f,EAAapigB,aAA0B,IAAPoL,OAAgB,EAASA,EAAGgK,eAAiB,SACvGgtf,EAAapigB,MAAQopf,IAAW,CAAC,EAAGgZ,EAAapigB,MAAO,CACtDoV,aAAcA,IAOhB+pc,EAAMn/c,MAAQopf,IAAW,CAAC,EAAGjqC,EAAMn/c,MAAO,CACxCoV,aANoB,CACpBjS,IAAK,SACLw0E,OAAQ,MACR7E,OAAQ,UAGsB19D,IAElC,CACA8sf,EAAaphd,MAAM,CACjBgzE,OAAQ,CAACq5R,EAAO,IAChB54Z,SAAUA,EACVsB,IAAK4zf,IAAe2Y,KAEtBD,EAAcrhd,MAAM,CAClBgzE,OAAQ,CAACq5R,EAAO,IAChB54Z,SAAUA,EACVsB,IAAK4zf,IAAetqC,IAExB,MAtEE+iD,EAAaphd,OAAM,GACnBqhd,EAAcrhd,OAAM,GAsEtB,OAAOtrC,CACT,CAMO,SAAS,IAAQA,GAEtB,OAAOivN,IAAK,IAAU,IAAM,IAAM,IAAa,IAAO,IAAO,IAAS,IAAa,IAA5EA,CAAuFjvN,EAChG,ECzXoC,SAAU5f,GAE5C,SAAS0sgB,IACP,IAAI3tgB,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAGhE,OADAS,EAAMkI,KAAO,oBACNlI,CACT,EANA,UAAU2tgB,EAAkB1sgB,GAW5B0sgB,EAAiB1T,kBAAoB,WACnC,OAAOxF,IAAW,CAAC,EAAGxzf,EAAOg5f,kBAAkB94f,KAAK5B,MAAO,CACzDg+c,gBAAiBA,KAErB,EAIAowD,EAAiBlugB,UAAUw/c,WAAa,SAAUh6b,QACnC,IAATA,IACFA,EAAO,IAET1lB,KAAK08c,MAAMl8c,KAAK+2Z,IAAiBooD,mBAAoB,IAAMpF,SAASv6c,KAAK08c,MAAOnlD,IAAiBooD,mBAAoB,OAErH3/c,KAAKg7f,aAAa,CAChBt1e,KAAMA,IAER,IAAIvkB,EAAKnB,KAAKmlC,QACZ6zX,EAAS73Z,EAAG63Z,OACZC,EAAS93Z,EAAG83Z,OACZnwS,EAAS3nH,EAAG2nH,OAEV8wS,EAAY,IAAcZ,EAAQC,EAAQo0G,IAAkB3nf,EAAM08Z,IAAat5T,IAC/E8kZ,EAAgBh0G,EAAU,GAC5Bi0G,EAAiBj0G,EAAU,GACzB8zG,EAAYzW,IAAaj3f,KAAK08c,MAAOywD,KACrCQ,EAAa1W,IAAaj3f,KAAK08c,MAAO0wD,KAE1CM,EAAUhof,KAAKkof,GACfD,EAAWjof,KAAKmof,GAEhB7tgB,KAAK08c,MAAM1xY,QAAO,GAClBhrE,KAAK08c,MAAMl8c,KAAK+2Z,IAAiBqoD,kBAAmB,IAAMrF,SAASv6c,KAAK08c,MAAOnlD,IAAiBqoD,kBAAmB,MACrH,EACAwuD,EAAiBlugB,UAAUw6f,kBAAoB,WAC7C,OAAO0T,EAAiB1T,mBAC1B,EAIA0T,EAAiBlugB,UAAUs7f,iBAAmB,WAC5C,OAAO,GACT,EAEA4S,EAAiBf,iBAAmBA,GAEtC,CA1DoC,CA0DlC5S,KA1DF,ICPI,IAGO4T,IAAY,YAEZC,IAAgB,iBAChBC,IAAmB,gBAInB,IAAkBrZ,IAAW,CAAC,EAAGuF,IAAKC,oBAAqB,CACpEpwX,MAAO,IAAK,CAAC,EAAG,IAAG+jY,KAAa,CAC9Bn0f,IAAK,EACLy2W,MATyB,yBAUxB,KAEHosF,aAAc,CAAC,CACbp0c,KAAM,kBAGRo8P,QAAS,CACP4pM,aAAa,EACb18K,QAAQ,GAEVu8O,SAAU,CACR/uf,UAAW,KClBJ,IAAgB,SAAuBiG,EAAMuzY,GACtD,IAAI3c,EAAU52X,EAEd,GAAI+a,MAAMC,QAAQu4X,GAAS,CACzB,IAAIw1G,EAAQx1G,EAAO,GACjBy1G,EAAOz1G,EAAO,GACd01G,EAAW11G,EAAO,GAClB21G,EAAO31G,EAAO,GACd41G,EAAS51G,EAAO,GAClB3c,GAAU,UAAI52X,GAAM,SAAUqO,GAE5B,OADAA,EAAIs6e,KAAa,CAACt6e,EAAI06e,GAAQ16e,EAAI26e,GAAO36e,EAAI46e,GAAW56e,EAAI66e,GAAO76e,EAAI86e,IAChE96e,CACT,GACF,CACA,OAAOuoX,CACT,ECVA,SAAS,IAAMh7X,GACb,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACf6zX,EAAS7zX,EAAQ6zX,OACnBC,EAAS9zX,EAAQ8zX,OACjBmhG,EAAaj1d,EAAQi1d,WACrBrmd,EAAQ5O,EAAQ4O,MAChBgxN,EAAU5/N,EAAQ4/N,QAClBypQ,EAAWrpe,EAAQqpe,SACrB9xD,EAAMh3b,KAAK,IAAcyf,EAAQzf,KAAMuzY,IACvC,IAAI61G,GAAa,UAAQ71G,GAAUo1G,IAAYp1G,EAC3Cy7F,EAAYz7F,GAAS,UAAQA,GAAUA,EAAS,CAACA,GAAU,GAC3DwjG,EAAiB13P,GACE,IAAnB03P,IACFA,EAAiBvH,IAAW,CAAC,EAAG,CAC9Bt1X,QAAQ,UAAQq5R,GAAUA,EAAS,IAClCwjG,IAEL,IAAIrwS,EAAM,IAAO8oS,IAAW,CAAC,EAAG5ze,EAAQ,CACtC6jB,QAAS,CACP6zX,OAAQA,EACRC,OAAQ61G,EACR9V,YAAaoB,EACbr1P,QAAS03P,EACT/H,UAAWA,EAEX9nc,OAAO,EACPy3E,OAAQ,CACN5+H,MAAO,MACPsuC,MAAOA,EACPjoC,MAAO0igB,OAGTpiT,IAIJ,OAHIguS,GACFhuS,EAAI/M,SAASu6D,OAAO,SAEft4P,CACT,CAIA,SAASytf,IAAcztf,GACrB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACf6zX,EAAS7zX,EAAQ6zX,OACnBtzY,EAAOyf,EAAQzf,KACfspf,EAAgB7pe,EAAQ6pe,cACxBC,EAAgB9pe,EAAQ8pe,cACxB70b,EAAUj1C,EAAQi1C,QAClBxtB,EAAQznB,EAAQynB,MAClB,IAAKoid,EAAe,OAAO1tf,EAC3B,IAAI4tf,EAAexyD,EAAM3nD,WAAW,CAClC36U,QAASA,EACT1mE,GAAI66f,MAEFY,EAAmBzpf,EAAKiM,QAAO,SAAUiwB,EAAKu2K,GAMhD,OALmBA,EAAM62S,GACZ5mgB,SAAQ,SAAU2d,GAC7B,IAAI5kB,EACJ,OAAOygD,EAAIrhD,MAAK,WAAS,UAAS,CAAC,EAAG43N,KAASh3N,EAAK,CAAC,GAAM6tgB,GAAiBjpf,EAAG5kB,IACjF,IACOygD,CACT,GAAG,IAeH,OAdAstd,EAAaxpf,KAAKypf,GAClB,IAAM,CACJzyD,MAAOwyD,EACP/pe,QAAS,CACP6zX,OAAQA,EACRC,OAAQ+1G,EACRhkgB,MAAO,CACLvF,MAAO,SACPqG,MAAOmjgB,GAETrid,MAAOA,KAGXsid,EAAar7P,MAAK,GACXvyP,CACT,CAKA,SAAS,IAAKA,GACZ,IAAIngB,EAAI+V,EACJwlc,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfmlG,EAAOnlG,EAAQmlG,KACjBswX,EAAQz1d,EAAQy1d,MAChBzB,EAAQh0d,EAAQg0d,MAChBngG,EAAS7zX,EAAQ6zX,OACjBC,EAAS9zX,EAAQ8zX,OACjB+1G,EAAgB7pe,EAAQ6pe,cACtBF,EAAarue,MAAMC,QAAQu4X,GAAUo1G,IAAYp1G,EACjDkyG,EAAW,CAAC,EAEhB,GAAI6D,EAAe,CACjB,IAAII,EAAWd,KACHntgB,EAAK,CAAC,GAAM6tgB,GAAiB,CACvCj8Y,KAAMq8Y,EACN7qS,MAAM,GACLpjO,EAAG2tgB,GAAc,CAClB/7Y,KAAMq8Y,EACN7qS,MAAM,GALR4mS,EAMGhqgB,CACL,CACA,IAAI+oP,EAASgrQ,IAAWiW,EAAU7gY,IAAOpzH,EAAK,CAAC,GAAM8hZ,GAAU,IAAK4hG,EAAO9G,KAAwB58e,EAAG43f,GAAc,IAAK3V,EAAOrF,KAAwB58e,IAExJ,OADAwlc,EAAM5jc,MAAMoxO,GACL5oO,CACT,CAKA,SAAS,IAAKA,GACZ,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfy1d,EAAQz1d,EAAQy1d,MAClBzB,EAAQh0d,EAAQg0d,MAChBngG,EAAS7zX,EAAQ6zX,OACjBC,EAAS9zX,EAAQ8zX,OACf61G,EAAarue,MAAMC,QAAQu4X,GAAUo1G,IAAYp1G,EAYrD,OAVc,IAAV2hG,EACFl+C,EAAM7oM,KAAKmlJ,GAAQ,GAEnB0jD,EAAM7oM,KAAKmlJ,EAAQ4hG,IAEP,IAAVzB,EACFz8C,EAAM7oM,KAAKw6P,KAAW,GAEtB3xD,EAAM7oM,KAAKi7P,EAAY3V,GAElB73e,CACT,CAKO,SAAS,IAAOA,GACrB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfkyO,EAASlyO,EAAQkyO,OACnB+iP,EAAaj1d,EAAQi1d,WAavB,OAZIA,EACE/iP,EACFqlM,EAAMrlM,OAAO+iP,EAAY/iP,GAGzBqlM,EAAMrlM,OAAO+iP,EAAY,CACvBjvc,SAAU,WAIduxZ,EAAMrlM,QAAO,GAER/1P,CACT,CAKO,SAAS,IAAQA,GACtB,OAAOivN,IAAK,IAAOw+R,IAAe,IAAM,IAAM,IAAQ,IAAS,MAAc,IAAarpgB,IAAW,IAA9F6qO,CAAqGjvN,EAC9G,EC5KuB,SAAU5f,GAE/B,SAAS2tgB,IACP,IAAI5ugB,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAGhE,OADAS,EAAMkI,KAAO,MACNlI,CACT,EANA,UAAU4ugB,EAAK3tgB,GAWf2tgB,EAAI3U,kBAAoB,WACtB,OAAO,GACT,EAKA2U,EAAInvgB,UAAUw/c,WAAa,SAAUh6b,GACnC1lB,KAAKg7f,aAAa,CAChBt1e,KAAMA,IAER,IAAIuzY,EAASj5Z,KAAKmlC,QAAQ8zX,OACtBi2G,EAAelvgB,KAAK08c,MAAMlnM,MAAMhiQ,MAAK,SAAUvB,GACjD,OAAOA,EAAEyB,KAAO66f,GAClB,IACIW,GACFA,EAAaxpf,KAAKA,GAEpB1lB,KAAK08c,MAAMgD,WAAW,IAAch6b,EAAMuzY,GAC5C,EAIAo2G,EAAInvgB,UAAUw6f,kBAAoB,WAChC,OAAO2U,EAAI3U,mBACb,EAIA2U,EAAInvgB,UAAUs7f,iBAAmB,WAC/B,OAAO,GACT,CAEF,CA7CuB,CA6CrBf,KCzCF,SAAS6U,IAAkB9ue,EAAQq/F,EAAO73H,GACxC,OAAOw4B,EAAO3/B,OAAS,EAAI,GAAG0S,OAAOssH,EAAO,KAAKtsH,OAAOvL,GAAS,GAAGuL,OAAOssH,EAC7E,CAKO,SAAS,IAAc16F,GAC5B,IAAIzf,EAAOyf,EAAQzf,KACjBszY,EAAS7zX,EAAQ6zX,OACjBu2G,EAAepqe,EAAQoqe,aACvBC,EAAarqe,EAAQqqe,WACrBhb,EAAcrvd,EAAQqvd,YACtB1rY,EAAS3jF,EAAQ2jF,OACf6zM,EAAK,GACLzyE,EAAS,GACbxkO,EAAKtd,SAAQ,SAAUqP,EAAMzP,GAE3B,IAAIyngB,EAAc,CAACh4f,EAAK+3f,IAAa5/c,OACrC6/c,EAAYl9f,MAAK,SAAU4L,EAAG8E,GAC5B,OAAO9E,EAAI8E,CACb,IACAwsf,EAAYrngB,SAAQ,SAAU2d,EAAG7kB,GAC/B,IAAIC,EACAwmD,EAAc,IAANzmD,EAAU6kB,EAAI0pf,EAAYvugB,GAAKuugB,EAAYvugB,EAAI,GAC3Dy7T,EAAGp8T,OAAMY,EAAK,CACZuugB,KAAM,GAAGn8f,OAAOi8f,EAAY,KAAKj8f,OAAOrS,KACpC83Z,GAAUA,EAASvhZ,EAAKuhZ,GAAUrzY,OAAO3d,GAAQ7G,EAAGqugB,GAAc7nd,EAAOxmD,GACjF,IAEA,IAAIwugB,EAAgB,CAACl4f,EAAK83f,IAAe3/c,OACzC+/c,EAAcvngB,SAAQ,SAAU2d,EAAG7kB,GACjC,IAAIC,EACJw7T,EAAGp8T,OAAMY,EAAK,CACZyugB,KAAMN,IAAkBK,EAAeJ,EAAcrugB,KACjD83Z,GAAUA,EAASvhZ,EAAKuhZ,GAAUrzY,OAAO3d,GAAQ7G,EAAGougB,GAAgBxpf,EAAG5kB,GAC/E,IAEA,IAAI0ugB,EAAe,CAACp4f,EAAK+8e,IAAc5kc,OACvCigd,EAAazngB,SAAQ,SAAU2d,EAAG7kB,GAChC,IAAIC,EACJw7T,EAAGp8T,OAAMY,EAAK,CACZ2ugB,KAAMR,IAAkBO,EAAcrb,EAAatzf,KAC/C83Z,GAAUA,EAASvhZ,EAAKuhZ,GAAUrzY,OAAO3d,GAAQ7G,EAAGqzf,GAAezue,EAAG5kB,GAC9E,IAEA+oP,EAAO3pP,KAAKkX,EAAK+3f,GAAa/3f,EAAK83f,GAAe93f,EAAK+8e,GACzD,IAEA,IAAIt6e,EAAMD,KAAKC,IAAI7Y,MAAM4Y,KAAMiwO,EAAOt6L,KAAKrrD,MACvC4V,EAAMF,KAAKE,IAAI9Y,MAAM4Y,KAAMiwO,EAAOt6L,KAAKrrD,MAO3C,OALA2V,EAAMA,EAAM,EAAI,EAAIA,EAEL,aAAX4uG,GACF6zM,EAAG/rS,UAEE,CACL1W,IAAKA,EACLC,IAAKA,EACLwiT,GAAIA,EAER,CC7DA,SAAS,IAASr7S,GAChB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACf4qe,EAAc5qe,EAAQ4qe,YACxBvb,EAAcrvd,EAAQqvd,YACtBgb,EAAarqe,EAAQqqe,WACrBD,EAAepqe,EAAQoqe,aACvBv2G,EAAS7zX,EAAQ6zX,OACjBjlX,EAAQ5O,EAAQ4O,MAChB+0E,EAAS3jF,EAAQ2jF,OACjBxkF,EAAOa,EAAQb,KACfsoB,EAAQznB,EAAQynB,MAEdzrD,EAAK,IAAcgkC,GACrBjrB,EAAM/Y,EAAG+Y,IACTC,EAAMhZ,EAAGgZ,IACTwiT,EAAKx7T,EAAGw7T,GACV+/I,EAAMh3b,KAAKi3S,GAgBX,IAdQu4L,IAAW,CAAC,EAAG5ze,EAAQ,CAC7B6jB,QAAS,CACP6zX,OAAQA,EACRC,OAAQu2G,EACRxW,YAAa,OACbjuJ,SAAS,EACTn+S,OAAO,UAAIA,EAAO,SAClBpqD,SAAU,CACRuxC,OAAO,UAAIA,EAAO,SAClBjoC,OAAO,UAAIikgB,EAAa,SACxBzre,MAAM,UAAIA,EAAM,cAMtBo4a,EAAMt9P,WAAW,GAAG2lD,SAAQ,GAgB5B,IAdQmwP,IAAW,CAAC,EAAG5ze,EAAQ,CAC7B6jB,QAAS,CACP6zX,OAAQA,EACRC,OAAQs2G,EACRvW,YAAa,OACbjuJ,SAAS,EACTn+S,OAAO,UAAIA,EAAO,WAClBpqD,SAAU,CACRuxC,OAAO,UAAIA,EAAO,WAClBjoC,OAAO,UAAIikgB,EAAa,WACxBzre,MAAM,UAAIA,EAAM,gBAMtB,IAAIvgC,EAAImxf,IAAW,CAAC,EAAG5ze,EAAQ,CAC7B6jB,QAAS,CACP6zX,OAAQA,EACRC,OAAQu7F,EACRwE,YAAa,OACbpsc,OAAO,UAAIA,EAAO,UAClB5hD,MAAO,CACL+oC,OAAO,UAAIA,EAAO,UAClBjoC,OAAO,UAAIikgB,EAAa,UACxBzre,MAAM,WAAW,UAAIA,EAAM,WAAa,SAAU5e,GAChD,OAAO,UAAI4e,EAAM,SAAV,CAAoB5e,GAAQ,CACrC,GAAI,UAAI4e,EAAM,UAAY,EAC1B7+B,MAAkB,eAAXqjH,EAA0B,OAAS,aAShD,OALA,IAAM/kH,GAES,eAAX+kH,GACF4zV,EAAMz+L,aAAaguJ,aAEd,WAAS,UAAS,CAAC,EAAG3qZ,GAAS,CACpC8qM,IAAK,CACH1mM,KAAM,CACJxL,IAAKA,EACLC,IAAKA,KAIb,CAKO,SAAS,IAAKmH,GACnB,IAAIngB,EAAI+V,EACJiuB,EAAU7jB,EAAO6jB,QACnBinL,EAAM9qM,EAAO8qM,IACXwuS,EAAQz1d,EAAQy1d,MAClBzB,EAAQh0d,EAAQg0d,MAChB3E,EAAcrvd,EAAQqvd,YACtBgb,EAAarqe,EAAQqqe,WACrBD,EAAepqe,EAAQoqe,aACvBv2G,EAAS7zX,EAAQ6zX,OACfg3G,EAAU5jT,EAAI1mM,KAClB,OAAO6qN,IAAK,MAAOpvO,EAAK,CAAC,GAAM63Z,GAAU4hG,EAAOz5f,EAAGougB,GAAgBpW,EAAOh4f,KAAM+V,EAAK,CAAC,GAAMq4f,GAAgB,CAC1Gr1f,IAAK81f,aAAyC,EAASA,EAAQ91f,IAC/DC,IAAK61f,aAAyC,EAASA,EAAQ71f,IAC/D44G,MAAM,GACL77G,EAAGs9e,GAAe,CACnBzhY,KAAM,GAAGx/G,OAAOg8f,IACfr4f,EAAGs4f,GAAc,CAClBz8Y,KAAM,GAAGx/G,OAAOg8f,IACfr4f,IARIq5N,CAQEjvN,EACX,CAKA,SAAS,IAAKA,GACZ,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfy1d,EAAQz1d,EAAQy1d,MAClBzB,EAAQh0d,EAAQg0d,MAChBngG,EAAS7zX,EAAQ6zX,OACjBu2G,EAAepqe,EAAQoqe,aACvBC,EAAarqe,EAAQqqe,WACrBhb,EAAcrvd,EAAQqvd,YAcxB,OAbA93C,EAAM7oM,KAAK,GAAGtgQ,OAAOi8f,IAAa,GAClC9yD,EAAM7oM,KAAK,GAAGtgQ,OAAOihf,IAAc,IAErB,IAAVoG,EACFl+C,EAAM7oM,KAAK,GAAGtgQ,OAAOylZ,IAAS,GAE9B0jD,EAAM7oM,KAAK,GAAGtgQ,OAAOylZ,GAAS4hG,IAElB,IAAVzB,EACFz8C,EAAM7oM,KAAK,GAAGtgQ,OAAOg8f,IAAe,GAEpC7yD,EAAM7oM,KAAK,GAAGtgQ,OAAOg8f,GAAepW,GAE/B73e,CACT,CAKA,SAAS,IAAOA,GACd,IAAIo7b,EAAQp7b,EAAOo7b,MAEfrlM,EADQ/1P,EAAO6jB,QACEkyO,OAQrB,OAPAqlM,EAAM+C,kBAAkB,iBAExB/C,EAAMrlM,OAAOA,GAEbqlM,EAAMrlM,OAAO,QAAQ,GACrBqlM,EAAMrlM,OAAO,QAAQ,GACrBqlM,EAAMrlM,OAAO,QAAQ,GACd/1P,CACT,CAKA,SAAS,IAAMA,GACb,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfynB,EAAQznB,EAAQynB,MAClB2id,EAAepqe,EAAQoqe,aACvB/a,EAAcrvd,EAAQqvd,YACtBgb,EAAarqe,EAAQqqe,WACnBrugB,EAAKu7c,EAAMt9P,WACb6wT,EAAgB9ugB,EAAG,GACnB+ugB,EAAkB/ugB,EAAG,GACrBgvgB,EAAiBhvgB,EAAG,GA4BtB,OA3BI,UAAIyrD,EAAO,SACbqjd,EAAcrjd,MAAM,GAAGr5C,OAAOi8f,IAAa,UAAS,CAClD1mZ,OAAQ,CAAC,CACPngH,KAAM,mBAEP4sf,IAAe3oc,EAAMjF,SAExBsod,EAAcrjd,OAAM,IAElB,UAAIA,EAAO,WACbsjd,EAAgBtjd,MAAM,GAAGr5C,OAAOg8f,IAAe,UAAS,CACtDzmZ,OAAQ,CAAC,CACPngH,KAAM,mBAEP4sf,IAAe3oc,EAAMqvI,WAExBi0U,EAAgBtjd,OAAM,IAEpB,UAAIA,EAAO,UACbujd,EAAevjd,MAAM,GAAGr5C,OAAOihf,IAAc,UAAS,CACpD1rY,OAAQ,CAAC,CACPngH,KAAM,mBAEP4sf,IAAe3oc,EAAMlkD,UAExByngB,EAAevjd,OAAM,GAEhBtrC,CACT,CAMO,SAAS,IAAQA,GAEtBivN,IAAK,IAAU,IAAM,IAAM,IAAQ,IAAO,IAAO,IAAS,IAAa7qO,IAAvE6qO,CAAkFjvN,EACpF,CClNO,IAAI,IAAkB4ze,IAAW,CAAC,EAAGuF,IAAKC,oBAAqB,CACpE5xY,OAAQ,aACRxkF,KAAM,CACJqjB,MAAO,GACPs0I,QAAS,GACTvzL,OAAQ,IAEVkyf,MAAO,CACLz/E,UAAU,EACVjlZ,KAAM,MAER65e,YAAa,CACXpod,MAAO,CACLk8B,YAAa,KAGjBj3B,MAAO,CACLqvI,QAAS,CACP9wI,SAAU,UAGd45M,QAAS,CAEP4pM,aAAa,KCvBb,KCAsB,SAAUjtc,GAElC,SAAS0ugB,IACP,IAAI3vgB,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAGhE,OADAS,EAAMkI,KAAO,SACNlI,CACT,EANA,UAAU2vgB,EAAQ1ugB,GAWlB0ugB,EAAO1V,kBAAoB,WACzB,OAAO,GACT,EACA0V,EAAOlwgB,UAAUw/c,WAAa,SAAUh6b,GACtC1lB,KAAKg7f,aAAa,CAChBt1e,KAAMA,IAER,IAAIvkB,EAAK,IAAcnB,KAAKmlC,SAC1BjrB,EAAM/Y,EAAG+Y,IACTC,EAAMhZ,EAAGgZ,IACTwiT,EAAKx7T,EAAGw7T,GAEV,IAAK,CACHx3R,QAASnlC,KAAKmlC,QACdinL,IAAK,CACH1mM,KAAM,CACJxL,IAAKA,EACLC,IAAKA,IAGTuic,MAAO18c,KAAK08c,QAEd18c,KAAK08c,MAAMgD,WAAW/iJ,EACxB,EAIAyzM,EAAOlwgB,UAAUs7f,iBAAmB,WAClC,OAAO,GACT,EAIA4U,EAAOlwgB,UAAUw6f,kBAAoB,WACnC,OAAO0V,EAAO1V,mBAChB,CAEF,CAjD0B,CAiDxBD,KDjDoB,CACpBvvf,EAAG,EACHmlgB,eAAgB,IAChB5nd,QAAQ,EACR6nd,iBAAkB,GAClB58f,GAAI,SAAYgtC,GACd,OAAOA,EAAKhtC,EACd,EACA2d,OAAQ,SAAgB0qB,GACtB,OAAOA,EAAK1qB,MACd,EACA3oB,OAAQ,SAAgBqzC,GACtB,OAAOA,EAAKrzC,MACd,EACA6ngB,aAAc,SAAsBx0d,GAClC,OAAOA,EAAK55C,OAAS,CACvB,EACAqugB,aAAc,SAAsBz0d,GAClC,OAAOA,EAAK55C,OAAS,CACvB,EACAsugB,OAAQ,OA4JH,SAASC,IAAYC,EAAoBC,GAC9C,IAAIzre,EAJC,SAA2BA,GAChC,OAAO,UAAO,CAAC,EAAG,IAAiBA,EACrC,CAEgBu1d,CAAkBiW,GAC5B/7O,EAAW,CAAC,EACZzsH,EAAQyoW,EAAqBzoW,MAC7B6tH,EAAQ46O,EAAqB56O,MACjC7tH,EAAM//J,SAAQ,SAAUs4C,GACtB,IAAIhtC,EAAKyxB,EAAQzxB,GAAGgtC,GACpBk0O,EAASlhR,GAAMgtC,CACjB,IA5JF,SAAsBk0O,EAAUi8O,EAAO1re,IACrC,UAAMyvP,GAAU,SAAUl0O,EAAMhtC,GAE9BgtC,EAAKowd,QAAUD,EAAMtggB,QAAO,SAAUwrC,GACpC,MAAO,GAAGxoC,OAAO4xB,EAAQz8B,OAAOqzC,MAAW,GAAGxoC,OAAOG,EACvD,IACAgtC,EAAKqwd,SAAWF,EAAMtggB,QAAO,SAAUwrC,GACrC,MAAO,GAAGxoC,OAAO4xB,EAAQ9T,OAAO0qB,MAAW,GAAGxoC,OAAOG,EACvD,IAEAgtC,EAAKmwd,MAAQnwd,EAAKqwd,SAASx9f,OAAOmtC,EAAKowd,SACvCpwd,EAAKswd,UAAYtwd,EAAKmwd,MAAMhwgB,OAE5B6/C,EAAKv+C,MAAQ,EACbu+C,EAAKowd,QAAQ1ogB,SAAQ,SAAU2zC,GAC7B2E,EAAKv+C,OAASgjC,EAAQqre,aAAaz0d,EACrC,IACA2E,EAAKqwd,SAAS3ogB,SAAQ,SAAU2zC,GAC9B2E,EAAKv+C,OAASgjC,EAAQore,aAAax0d,EACrC,GACF,GACF,CAwIEk1d,CAAar8O,EAAUoB,EAAO7wP,GAlIhC,SAAmBgjI,EAAOhjI,GACxB,IAAI+re,EAAc,CAChBzod,OAAQ,SAAgBtqC,EAAG8E,GACzB,OAAOA,EAAE9gB,MAAQgc,EAAEhc,KACrB,EACA6ugB,UAAW,SAAmB7yf,EAAG8E,GAC/B,OAAOA,EAAE+tf,UAAY7yf,EAAE6yf,SACzB,EACAt9f,GAAI,SAAYyK,EAAG8E,GACjB,MAAO,GAAG1P,OAAO4xB,EAAQzxB,GAAGyK,IAAIgzf,cAAc,GAAG59f,OAAO4xB,EAAQzxB,GAAGuP,IACrE,GAEEtX,EAASulgB,EAAY/re,EAAQsre,SAC5B9kgB,IAAU,UAAWw5B,EAAQsre,UAChC9kgB,EAASw5B,EAAQsre,QAEf9kgB,GACFw8J,EAAM51J,KAAK5G,EAEf,CAgHEylgB,CAAUjpW,EAAOhjI,GACjB,IAAIi3V,EAhHN,SAAqBj0N,EAAOhjI,GAC1B,IAAI3K,EAAM2tI,EAAMtnK,OAChB,IAAK25B,EACH,MAAM,IAAIz1B,UAAU,8BAEtB,GAAIogC,EAAQsjB,OAAQ,CAClB,IAAI4od,EAAqBlse,EAAQmre,iBACjC,GAAIe,EAAqB,GAAKA,GAAsB,EAClD,MAAM,IAAItsgB,UAAU,yDAEtB,IAAIusgB,EAAWD,GAAsB,EAAI72e,GACrC+2e,EAAmBpse,EAAQkre,eAC/B,GAAIkB,GAAoB,GAAKA,GAAoB,EAC/C,MAAM,IAAIxsgB,UAAU,uDAEtB,IAAIysgB,EAAe,EACnBrpW,EAAM//J,SAAQ,SAAUs4C,GACtB8wd,GAAgB9wd,EAAKv+C,KACvB,IACAgmK,EAAM//J,SAAQ,SAAUs4C,GACtBA,EAAK+H,OAAS/H,EAAKv+C,MAAQqvgB,EAC3B9wd,EAAK3yC,MAAQ2yC,EAAK+H,QAAU,EAAI4od,GAChC3wd,EAAK1yC,OAASujgB,CAChB,IACAppW,EAAM//J,SAAQ,SAAUs4C,EAAM14C,GAG5B,IADA,IAAI6iM,EAAS,EACJ3pM,EAAI8G,EAAQ,EAAG9G,GAAK,EAAGA,IAC9B2pM,GAAU1iC,EAAMjnK,GAAG6M,MAAQ,EAAIujgB,EAEjC,IAAIphgB,EAAOwwC,EAAKxwC,KAAOohgB,EAAWzmU,EAC9B16L,EAAOuwC,EAAKvwC,KAAOuwC,EAAKxwC,KAAOwwC,EAAK3yC,MACpCqC,EAAOswC,EAAKtwC,KAAO+0B,EAAQj6B,EAAIqmgB,EAAmB,EAClDlhgB,EAAOqwC,EAAKrwC,KAAOD,EAAOmhgB,EAC9B7wd,EAAKz1C,EAAI,CAACiF,EAAMC,EAAMA,EAAMD,GAC5BwwC,EAAKx1C,EAAI,CAACkF,EAAMA,EAAMC,EAAMA,EAQ9B,GACF,KAAO,CACL,IAAIohgB,EAAW,EAAIj3e,EACnB2tI,EAAM//J,SAAQ,SAAUs4C,EAAM14C,GAC5B04C,EAAKz1C,GAAKjD,EAAQ,IAAOypgB,EACzB/wd,EAAKx1C,EAAIi6B,EAAQj6B,CACnB,GACF,CACA,OAAOi9J,CACT,CA4DoBupW,CAAYvpW,EAAOhjI,GACjCwse,EA5DN,SAAuB/8O,EAAUi8O,EAAO1re,GACtC,GAAIA,EAAQsjB,OAAQ,CAClB,IAAImpd,EAAc,CAAC,GACnB,UAAMh9O,GAAU,SAAUl0O,EAAMhtC,GAC9Bk+f,EAAYl+f,GAAMgtC,EAAKv+C,KACzB,IACA0ugB,EAAMzogB,SAAQ,SAAU2zC,GACtB,IAAI81d,EAAM1se,EAAQ9T,OAAO0qB,GACrB+1d,EAAM3se,EAAQz8B,OAAOqzC,GACrBg2d,EAAQn9O,EAASi9O,GACjBG,EAAQp9O,EAASk9O,GACrB,GAAIC,GAASC,EAAO,CAClB,IAAIC,EAASL,EAAYC,GACrBK,EAAgB/se,EAAQore,aAAax0d,GACrCo2d,EAASJ,EAAM7hgB,MAAQ6hgB,EAAM5vgB,MAAQ8vgB,GAAUF,EAAM5vgB,MAAQ4vgB,EAAMhkgB,MACnEqkgB,EAAOD,EAASD,EAAgBH,EAAM5vgB,MAAQ4vgB,EAAMhkgB,MACxD6jgB,EAAYC,IAAQK,EACpB,IAAIG,EAAST,EAAYE,GACrBQ,EAAgBnte,EAAQqre,aAAaz0d,GACrCw2d,EAASP,EAAM9hgB,MAAQ8hgB,EAAM7vgB,MAAQkwgB,GAAUL,EAAM7vgB,MAAQ6vgB,EAAMjkgB,MACnEykgB,EAAOD,EAASD,EAAgBN,EAAM7vgB,MAAQ6vgB,EAAMjkgB,MACxD6jgB,EAAYE,IAAQQ,EACpB,IAAIpngB,EAAIi6B,EAAQj6B,EAChB6wC,EAAK9wC,EAAI,CAACkngB,EAAQC,EAAMG,EAAQC,GAChCz2d,EAAK7wC,EAAI,CAACA,EAAGA,EAAGA,EAAGA,GAEnB6wC,EAAK1qB,OAAS0gf,EACdh2d,EAAKrzC,OAASspgB,CAChB,CACF,GACF,MACEnB,EAAMzogB,SAAQ,SAAU2zC,GACtB,IAAIg2d,EAAQn9O,EAASzvP,EAAQ9T,OAAO0qB,IAChCi2d,EAAQp9O,EAASzvP,EAAQz8B,OAAOqzC,IAChCg2d,GAASC,IACXj2d,EAAK9wC,EAAI,CAAC8mgB,EAAM9mgB,EAAG+mgB,EAAM/mgB,GACzB8wC,EAAK7wC,EAAI,CAAC6mgB,EAAM7mgB,EAAG8mgB,EAAM9mgB,GAEzB6wC,EAAK1qB,OAAS0gf,EACdh2d,EAAKrzC,OAASspgB,EAElB,IAEF,OAAOnB,CACT,CAgBoB4B,CAAc79O,EAAUoB,EAAO7wP,GACjD,MAAO,CACLgjI,MAAOi0N,EACPpmG,MAAO27O,EAEX,CErMO,IAAI,IAAU,IACV,IAAU,IACVe,IAAmB,OACnBC,IAAmB,SACnB,IAAkB,CAC3Bzkc,UAAW,CACTv5D,QAAS,EACTkvE,YAAa,EACbpkE,UAAW,GAEbmzf,UAAW,CACTj+f,QAAS,GACT8K,UAAW,GAEbmtC,MAAO,CACLgzE,OAAQ,CAAC,IAAK,QACdv/H,SAAU,SAAkB4K,EAAGhJ,GAG7B,MAAO,CACLsM,SAHatD,EAAE,GAAKA,EAAE,IAAM,EACN,IAAO,EAAI,EAGjC6rE,QAAS70E,EAEb,EACAoue,WAAW,EACXvke,MAAO,CACL8vC,KAAM,YAGVmpN,QAAS,CACPv3G,WAAW,EACXmhT,aAAa,EACb/uU,OAAQ,CAAC,SAAU,SAAU,QAAS,UAEtC4uU,YAAa,SAAqBroZ,GAChC,QAAQ,UAAIA,EAAO,CAAC,EAAG,OAAQ,UACjC,EACA4jS,UAAW,SAAmB5xH,GAC5B,IAAI9mM,EAAS8mM,EAAM9mM,OACjB3oB,EAASyvN,EAAMzvN,OACfvG,EAAQg2N,EAAMh2N,MAChB,MAAO,CACLF,KAAM,GAAGsR,OAAO8d,EAAQ,QAAQ9d,OAAO7K,GACvCvG,MAAOA,EAEX,GAEF46c,aAAc,CAAC,CACbp0c,KAAM,mBAER8/C,QAAQ,EACR6nd,iBAAkB,GAClBD,eAAgB,KC/ClB,SAAS,IAAc/uf,GAErB,IAAI6jB,EAAU7jB,EAAO6jB,QACjBzf,EAAOyf,EAAQzf,KACjB6ue,EAAcpvd,EAAQovd,YACtBC,EAAcrvd,EAAQqvd,YACtBC,EAActvd,EAAQsvd,YACtB6b,EAAmBnre,EAAQmre,iBAC3BD,EAAiBlre,EAAQkre,eACzBlvgB,EAAKgkC,EAAQuvd,UACbA,OAAmB,IAAPvzf,EAAgB,GAAKA,EAG/B+V,EAAKw5f,IAAY,CACjBjod,QAAQ,EACR6nd,iBAAkBA,EAClBD,eAAgBA,GAJO/b,IAA4B5ue,EAAM6ue,EAAaC,EAAaC,IAMrFtsV,EAAQjxJ,EAAGixJ,MACX6tH,EAAQ9+Q,EAAG8+Q,MAET68O,EAAY1qW,EAAMn3I,KAAI,SAAU0vB,GAClC,OAAO,WAAS,UAAS,CAAC,EAAG,IAAKA,GAAM,UAAc,CAAC,KAAM,IAAK,IAAK,QAASg0c,GAAW,KAAS,CAClGoe,QAAQ,GAEZ,IAEIC,EAAY/8O,EAAMhlQ,KAAI,SAAUknK,GAClC,OAAO,WAAS,UAAS,CACvB7mK,OAAQ6mK,EAAK7mK,OAAOpvB,KACpByG,OAAQwvL,EAAKxvL,OAAOzG,KACpBA,KAAMi2L,EAAK7mK,OAAOpvB,MAAQi2L,EAAKxvL,OAAOzG,MACrC,IAAKi2L,GAAM,UAAc,CAAC,IAAK,IAAK,SAAUw8T,GAAW,KAAS,CACnEoe,QAAQ,GAEZ,IACA,OAAO,WAAS,UAAS,CAAC,EAAGxxf,GAAS,CACpC8qM,KAAK,WAAS,UAAS,CAAC,EAAG9qM,EAAO8qM,KAAM,CAEtC4mT,UAAW,CACTH,UAAWA,EACXE,UAAWA,MAInB,CAKA,SAAS,IAAMzxf,GACb,IAAIngB,EAiBJ,OAhBYmgB,EAAOo7b,MACb5jc,QAAO3X,EAAK,CAChB8J,EAAG,CACD8nH,MAAM,EACNwxG,MAAM,GAERr5N,EAAG,CACD6nH,MAAM,EACNwxG,MAAM,EACNpqN,IAAK,KAEHu4f,KAAoB,CACxB3/Y,KAAM,SACL5xH,EAAGwxgB,KAAoB,CACxB5/Y,KAAM,SACL5xH,IACImgB,CACT,CAKA,SAAS,IAAKA,GAGZ,OAFYA,EAAOo7b,MACb7oM,MAAK,GACJvyP,CACT,CAKA,SAAS,IAAOA,GAGd,OAFYA,EAAOo7b,MACbrlM,QAAO,GACN/1P,CACT,CAKA,SAAS,IAAQA,GACf,IAAIo7b,EAAQp7b,EAAOo7b,MAEf33M,EADQzjP,EAAO6jB,QACG4/N,QAEtB,OADA23M,EAAM33M,QAAQA,GACPzjP,CACT,CAKA,SAAS,IAAWA,GAGlB,OAFYA,EAAOo7b,MACbz+L,WAAW,SAASh9B,QAAQ,KAC3B3/N,CACT,CAKA,SAAS2xf,IAAa3xf,GAEpB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACf0te,EAAYvxf,EAAO8qM,IAAI4mT,UAAUH,UACjC3kc,EAAY/oC,EAAQ+oC,UACtBthB,EAAQznB,EAAQynB,MAChBm4M,EAAU5/N,EAAQ4/N,QAChBmuQ,EAAWx2D,EAAM3nD,aAgBrB,OAfAm+G,EAASxtf,KAAKmtf,GAEd,IAAQ,CACNn2D,MAAOw2D,EACP/te,QAAS,CACP6zX,OAAQ,IACRC,OAAQ,IACR+/F,YAAa0Z,IACb9yT,QAAS,CACP9zM,MAAOoiE,GAETthB,MAAOA,EACPm4M,QAASA,KAGNzjP,CACT,CAKA,SAAS6xf,IAAa7xf,GACpB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACf4te,EAAYzxf,EAAO8qM,IAAI4mT,UAAUD,UACjCH,EAAYzte,EAAQyte,UACtB7tQ,EAAU5/N,EAAQ4/N,QAChBquQ,EAAW12D,EAAM3nD,aAiBrB,OAhBAq+G,EAAS1tf,KAAKqtf,GAYd,IAAK,CACHr2D,MAAO02D,EACPjue,QAZgB,CAChB6zX,OAAQ,IACRC,OAAQ,IACR+/F,YAAa2Z,IACb52d,KAAM,CACJjwC,MAAO8mgB,EACPntgB,MAAO,OAETs/P,QAASA,KAMJzjP,CACT,CACA,SAAS,IAAUA,GACjB,IAAIo7b,EAAQp7b,EAAOo7b,MAInB,OADA06C,IAAiB16C,EAFLp7b,EAAO6jB,QACKz/B,U7H/InB,SAAqC0sQ,GAC1C,OAAI,UAAIA,EAAM,CAAC,QAAS,UAAW,IAAM,EAChCA,EAAKhzD,YAEP,UAAOgzD,EAAKoD,OAAO,SAAU/tL,EAAK45W,GACvC,OAAO55W,EAAIl0E,OAAO8tb,EAAQjiP,WAC5B,GAAGgzD,EAAKhzD,WACV,C6HyIqCi0T,CAA4B32D,IACxDp7b,CACT,CAMO,SAAS,IAAQA,GAEtB,OAAOivN,IAAK,IAAO,IAAe,IAAY,IAAO,IAAM,IAAQ,IAAS4iS,IAAcF,IAAc,IAAa,IAAO,IAArH1iS,CAAgIjvN,EACzI,ECrLyB,SAAU5f,GAEjC,SAAS4xgB,IACP,IAAI7ygB,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAGhE,OADAS,EAAMkI,KAAO,QACNlI,CACT,EANA,UAAU6ygB,EAAO5xgB,GAWjB4xgB,EAAM5Y,kBAAoB,WACxB,OAAO,GACT,EACA4Y,EAAMpzgB,UAAUw6f,kBAAoB,WAClC,OAAO4Y,EAAM5Y,mBACf,EAIA4Y,EAAMpzgB,UAAUs7f,iBAAmB,WACjC,OAAO,GACT,CAEF,CAzByB,CAyBvBf,KAzBF,ICNW8Y,IAAa,CAAC,IAAK,IAAK,IAAK,OAAQ,QAAS,OAAQ,SACtD,IAAkB,CAE3BppC,WAAY,OACZvxE,SAAS,EACT2f,WAAY,CACV94Z,UAAW,EACX0B,OAAQ,QAGVk2P,QAAQ,EACRm8P,gBAAiB,CACflve,KAAM,CAAC,EAAG,GACV81C,QAAS,GAEXxtB,MAAO,CACLgzE,OAAQ,CAAC,QACT9W,OAAQ,CACNngH,KAAM,mBAGVo8P,QAAS,CACP4pM,aAAa,EACbnhT,WAAW,GAGbimX,UAAW,CACT5lc,SAAS,ICjBF6lc,IAAmB,wBAEnBC,IAA6B,CAEtCxod,SAAU,WACVyod,YAAa,IACbn7F,UAAW,CACT33Z,SAAU,GACV86B,KAAM,sBACN7vC,OAAQ,WAEV8ngB,gBAAiB,CACfj4d,KAAM,YAMCk4d,IAAkC,kCAOzCC,IAA+B,SAAUrygB,GAE3C,SAASqygB,IACP,IAAItzgB,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAShE,OAPAS,EAAMwB,KAAO,aAEbxB,EAAMuzgB,aAAe,GAErBvzgB,EAAMwzgB,gBAAkB,KAExBxzgB,EAAMyzgB,cAAgBP,IACflzgB,CACT,CA+NA,OA3OA,UAAUszgB,EAAiBrygB,GAgB3BqygB,EAAgB7zgB,UAAUg9D,MAAQ,WAChC,IAAIx3C,GAAO,UAAI1lB,KAAKmzB,QAAS,CAAC,QAAS,OAAQ,SAC/C,IAAKzN,EAAM,OAAO,EAClB1lB,KAAKm0gB,MAAMzuf,GACX1lB,KAAKo0gB,gBACP,EAIAL,EAAgB7zgB,UAAUs6a,cAAgB,WAExC,GAAKx6a,KAAKi0gB,gBAAV,CACA,IAAIh2P,EAAaj+Q,KAAKmzB,QAAQi/O,KAAK+vL,gBAC/B8xE,EAAkBj0gB,KAAKi0gB,gBACvBnlgB,EAAOmlgB,EAAgBhkgB,UACvBk7C,EAAWnrD,KAAKmtf,eAAehic,SAG/BngD,EAAQ,CACVC,EAAGgzQ,EAAWv3P,MAAMzb,EACpBC,EAAG+yQ,EAAWpvP,IAAI3jB,GAAK4D,EAAKd,OAAS,KAEnCiwQ,EAAWotJ,UAEbrga,EAAQ,CACNC,EAAG,EACHC,EAAG,IAGU,gBAAbigD,IAEFngD,EAAQ,CACNC,EAAGgzQ,EAAWv3P,MAAMzb,EACpBC,EAAG+yQ,EAAWv3P,MAAMxb,IAIxB,IAAIiG,EAASgrd,IAAKrod,UAAU,KAAM,CAAC,CAAC,IAAK9I,EAAMC,EAnFhC,EAmFkDD,EAAME,EAAI4D,EAAKd,OAjF3D,KAkFrBimgB,EAAgBn+f,UAAU3E,EA3BO,CA4BnC,EAIA4igB,EAAgB7zgB,UAAUqnE,KAAO,YAC3B,UAAKvnE,KAAKg0gB,eACZh0gB,KAAKq0gB,OAAOr0gB,KAAKg0gB,aAAahtf,MAAM,GAAI,GAE5C,EAIA+sf,EAAgB7zgB,UAAUg2D,MAAQ,WAC5Bl2D,KAAKg0gB,aAAa,IACpBh0gB,KAAKq0gB,OAAOr0gB,KAAKg0gB,aAAahtf,MAAM,EAAG,IAGzChnB,KAAKg0gB,aAAe,GACpBh0gB,KAAKs0gB,gBACP,EAKAP,EAAgB7zgB,UAAUi0gB,MAAQ,SAAUI,GAC1C,IAAIniQ,EAAOpyQ,KAAKmzB,QAAQi/O,KACpB6tP,GAAgB,UAAI7tP,EAAM,CAAC,eAAgB,aAAc,MAAO,kBAAkB,SAAUngQ,GAC9F,OAAOA,CACT,IAEIuigB,EAAYvU,GAAc,UAAS,CACrCv6e,KAAM6uf,EAAS7uf,MACd6uf,EAAST,OACZ1hQ,EAAKstM,WAAW80D,GAIhB,IAFA,IAAIR,EAAe,GACftzd,EAAO6zd,EACJ7zd,GAAM,CACX,IAAI+zd,EAAW/zd,EAAKh7B,KACpBsuf,EAAar+f,QAAQ,CACnBjC,GAAI,GAAGH,OAAOkhgB,EAASxygB,KAAM,KAAKsR,OAAOmtC,EAAK1yC,OAAQ,KAAKuF,OAAOmtC,EAAK5Z,OACvE7kC,KAAMwygB,EAASxygB,KAEf4N,SAAUowf,GAAc,UAAS,CAC/Bv6e,KAAM+uf,GACLF,EAAST,SAEdpzd,EAAOA,EAAK9uC,MACd,CACA5R,KAAKg0gB,cAAgBh0gB,KAAKg0gB,cAAgB,IAAIhtf,MAAM,GAAI,GAAGzT,OAAOyggB,EACpE,EAKAD,EAAgB7zgB,UAAUm0gB,OAAS,SAAUL,GAC3C,GAAKA,KAAgBA,EAAanzgB,QAAU,GAA5C,CAGA,IAAIuxQ,EAAOpyQ,KAAKmzB,QAAQi/O,KACpB1sP,GAAO,UAAKsuf,GAAcnkgB,SAC9BuiQ,EAAKstM,WAAWh6b,GACZsuf,EAAanzgB,OAAS,GACxBb,KAAKg0gB,aAAeA,EACpBh0gB,KAAKo0gB,mBAGLp0gB,KAAKg0gB,aAAe,GACpBh0gB,KAAKs0gB,iBAVP,CAYF,EAIAP,EAAgB7zgB,UAAUitf,aAAe,WACvC,IAAI/6O,EAAOpyQ,KAAKmzB,QAAQi/O,KACpBsiQ,GAAkB,UAAItiQ,EAAM,CAAC,eAAgB,aAAc,MAAO,oBACtE,OAAO8iP,IAAWl1f,KAAKk0gB,cAAeQ,aAAyD,EAASA,EAAgBC,WAAY30gB,KAAK2B,IAC3I,EAIAoygB,EAAgB7zgB,UAAUk0gB,eAAiB,WACzCp0gB,KAAK40gB,sBACL50gB,KAAKw6a,gBACLx6a,KAAKi0gB,gBAAgB3+f,MACvB,EAIAy+f,EAAgB7zgB,UAAU00gB,oBAAsB,WAC9C,IAAIn0gB,EAAQT,KACRwsG,EAASxsG,KAAKmtf,eACdrue,EAAQ9e,KAAKg0gB,aAEZh0gB,KAAKi0gB,gBAKRj0gB,KAAKi0gB,gBAAgB1kgB,QAJrBvP,KAAKi0gB,gBAAkBj0gB,KAAKmzB,QAAQi/O,KAAK0rM,gBAAgBrsc,SAAS,CAChExP,KAAMyxgB,MAMV,IAAI1kgB,EAAO,EACX8P,EAAM1W,SAAQ,SAAUosD,EAAQxsD,GAE9B,IAAImwa,EAAY13a,EAAMwzgB,gBAAgB5igB,SAAS,CAC7C1I,KAAM,OACN+K,GAAI8gD,EAAO9gD,GACXzR,KAAM,GAAGsR,OAAOmggB,IAAkB,KAAKnggB,OAAOihD,EAAOvyD,KAAM,SAC3DqE,OAAO,WAAS,UAAS,CACvBua,KAAgB,IAAV7Y,IAAgB,UAAMwkG,EAAOqoa,UAA8Brgd,EAAOvyD,KAAzBuqG,EAAOqoa,UACrDroa,EAAOisU,WAAY,CACpBxta,EAAG+D,EACH9D,EAAG,MAGH4pgB,EAAe38F,EAAUloa,UA4B7B,GA3BAjB,GAAQ8lgB,EAAa/mgB,MA7Mb,EA+MRoqa,EAAUh4a,GAAG,SAAS,SAAU4K,GAC9B,IAAI5J,EACA4zgB,EAAWhqgB,EAAMrC,OAAO1G,IAAI,MAChC,GAAI+ygB,KAAqC,QAAtB5zgB,GAAK,UAAK2d,UAA2B,IAAP3d,OAAgB,EAASA,EAAGuS,IAAK,CAChF,IAAIshgB,EAAkBl2f,EAAMkI,MAAM,EAAGlI,EAAMohE,WAAU,SAAUn6D,GAC7D,OAAOA,EAAErS,KAAOqhgB,CAClB,IAAK,GACLt0gB,EAAM4zgB,OAAOW,EACf,CACF,IAEA78F,EAAUh4a,GAAG,cAAc,SAAU4K,GACnC,IAAI5J,EACW4J,EAAMrC,OAAO1G,IAAI,SACS,QAAtBb,GAAK,UAAK2d,UAA2B,IAAP3d,OAAgB,EAASA,EAAGuS,IAC3Eyka,EAAU/xa,KAAKomG,EAAOqna,iBAEtB17F,EAAU/xa,KAAK,CACb2F,OAAQ,WAGd,IACAosa,EAAUh4a,GAAG,cAAc,WACzBg4a,EAAU/xa,KAAKomG,EAAOisU,UACxB,IACIzwa,EAAQ8W,EAAMje,OAAS,EAAG,CAE5B,IAUIo0gB,EAVex0gB,EAAMwzgB,gBAAgB5igB,SAAS,CAChD1I,KAAM,OACN1G,KAAM,GAAGsR,OAAOi5F,EAAOvqG,KAAM,KAAKsR,OAAOihD,EAAOvyD,KAAM,YACtDqE,OAAO,WAAS,UAAS,CACvBua,KAAM2rF,EAAOona,aACZpna,EAAOisU,WAAY,CACpBxta,EAAG+D,EACH9D,EAAG,MAGuB+E,UAC9BjB,GAAQimgB,EAAWlngB,MArPb,CAsPR,CACF,GACF,EAIAgmgB,EAAgB7zgB,UAAUo0gB,eAAiB,WACrCt0gB,KAAKi0gB,iBACPj0gB,KAAKi0gB,gBAAgB1+f,MAEzB,EAKAw+f,EAAgB7zgB,UAAUkC,QAAU,WAC9BpC,KAAKi0gB,iBACPj0gB,KAAKi0gB,gBAAgB9ggB,SAEvBzR,EAAOxB,UAAUkC,QAAQR,KAAK5B,KAChC,EACO+zgB,CACT,CA7OmC,CA6OjC,KChRa,SAAS,IAAC17O,GAMvB,IALA,IAGEj6Q,EACAla,EAJEhD,EAAI,EACN0tB,GAAKypQ,ECEF,SAAiB91P,GAItB,IAHA,IACEx+B,EACA7C,EAFE6U,EAAIwsB,EAAM1hC,OAGPkV,GACL7U,EAAI+Y,KAAK+qC,SAAWjvC,IAAM,EAC1BhS,EAAIw+B,EAAMxsB,GACVwsB,EAAMxsB,GAAKwsB,EAAMrhC,GACjBqhC,EAAMrhC,GAAK6C,EAEb,OAAOw+B,CACT,CDbmB,CAAQ9B,MAAMnH,KAAK++P,KAAWx3R,OAC7C+mP,EAAI,GAGC1mP,EAAI0tB,GACTxQ,EAAIi6Q,EAAQn3R,GACRgD,GAAK,IAAaA,EAAGka,KAAMld,GAAOgD,EAAI,IAAa0jP,EAAI,IAAYA,EAAGxpO,IAAKld,EAAI,GAErF,OAAOgD,CACT,CACA,SAAS,IAAY0jP,EAAGxpO,GACtB,IAAIld,EAAGgG,EACP,GAAI,IAAgBkX,EAAGwpO,GAAI,MAAO,CAACxpO,GAGnC,IAAKld,EAAI,EAAGA,EAAI0mP,EAAE/mP,SAAUK,EAC1B,GAAI,IAAYkd,EAAGwpO,EAAE1mP,KAAO,IAAgB,IAAc0mP,EAAE1mP,GAAIkd,GAAIwpO,GAClE,MAAO,CAACA,EAAE1mP,GAAIkd,GAKlB,IAAKld,EAAI,EAAGA,EAAI0mP,EAAE/mP,OAAS,IAAKK,EAC9B,IAAKgG,EAAIhG,EAAI,EAAGgG,EAAI0gP,EAAE/mP,SAAUqG,EAC9B,GAAI,IAAY,IAAc0gP,EAAE1mP,GAAI0mP,EAAE1gP,IAAKkX,IAAM,IAAY,IAAcwpO,EAAE1mP,GAAIkd,GAAIwpO,EAAE1gP,KAAO,IAAY,IAAc0gP,EAAE1gP,GAAIkX,GAAIwpO,EAAE1mP,KAAO,IAAgB,IAAc0mP,EAAE1mP,GAAI0mP,EAAE1gP,GAAIkX,GAAIwpO,GACvL,MAAO,CAACA,EAAE1mP,GAAI0mP,EAAE1gP,GAAIkX,GAM1B,MAAM,IAAI6pB,KACZ,CACA,SAAS,IAAY9pB,EAAG8E,GACtB,IAAI61Q,EAAK36Q,EAAEe,EAAI+D,EAAE/D,EACftS,EAAKqW,EAAEhY,EAAIkT,EAAElT,EACb4B,EAAKoW,EAAE/X,EAAIiT,EAAEjT,EACf,OAAO4tR,EAAK,GAAKA,EAAKA,EAAKlsR,EAAKA,EAAKC,EAAKA,CAC5C,CACA,SAAS,IAAasR,EAAG8E,GACvB,IAAI61Q,EAAK36Q,EAAEe,EAAI+D,EAAE/D,EAA4B,KAAxBjF,KAAKE,IAAIgE,EAAEe,EAAG+D,EAAE/D,EAAG,GACtCtS,EAAKqW,EAAEhY,EAAIkT,EAAElT,EACb4B,EAAKoW,EAAE/X,EAAIiT,EAAEjT,EACf,OAAO4tR,EAAK,GAAKA,EAAKA,EAAKlsR,EAAKA,EAAKC,EAAKA,CAC5C,CACA,SAAS,IAAgBsR,EAAGypO,GAC1B,IAAK,IAAI1mP,EAAI,EAAGA,EAAI0mP,EAAE/mP,SAAUK,EAC9B,IAAK,IAAaid,EAAGypO,EAAE1mP,IACrB,OAAO,EAGX,OAAO,CACT,CACA,SAAS,IAAa0mP,GACpB,OAAQA,EAAE/mP,QACR,KAAK,EACH,OAON,SAAuBsd,GACrB,MAAO,CACLlT,EAAGkT,EAAElT,EACLC,EAAGiT,EAAEjT,EACLgU,EAAGf,EAAEe,EAET,CAba,CAAc0oO,EAAE,IACzB,KAAK,EACH,OAAO,IAAcA,EAAE,GAAIA,EAAE,IAC/B,KAAK,EACH,OAAO,IAAcA,EAAE,GAAIA,EAAE,GAAIA,EAAE,IAEzC,CAQA,SAAS,IAAczpO,EAAG8E,GACxB,IAAIb,EAAKjE,EAAElT,EACToX,EAAKlE,EAAEjT,EACPyiB,EAAKxP,EAAEe,EACPoD,EAAKW,EAAEhY,EACPsX,EAAKU,EAAE/X,EACP0iB,EAAK3K,EAAE/D,EACPi9N,EAAM75N,EAAKF,EACXg6N,EAAM75N,EAAKF,EACX22Q,EAAMprQ,EAAKD,EACXrI,EAAIrL,KAAK2C,KAAKu/N,EAAMA,EAAMC,EAAMA,GAClC,MAAO,CACLnxO,GAAImX,EAAKE,EAAK65N,EAAM72N,EAAI0zQ,GAAO,EAC/B9tR,GAAImX,EAAKE,EAAK65N,EAAM92N,EAAI0zQ,GAAO,EAC/B95Q,GAAIoG,EAAIqI,EAAKC,GAAM,EAEvB,CACA,SAAS,IAAczP,EAAG8E,EAAGkC,GAC3B,IAAI/C,EAAKjE,EAAElT,EACToX,EAAKlE,EAAEjT,EACPyiB,EAAKxP,EAAEe,EACPoD,EAAKW,EAAEhY,EACPsX,EAAKU,EAAE/X,EACP0iB,EAAK3K,EAAE/D,EACP2M,EAAK1G,EAAEla,EACP6gB,EAAK3G,EAAEja,EACP+tR,EAAK9zQ,EAAEjG,EACP8L,EAAK5I,EAAKE,EACV42Q,EAAK92Q,EAAKyJ,EACV7O,EAAKqF,EAAKE,EACVtF,EAAKoF,EAAKyJ,EACVnD,EAAKiF,EAAKD,EACVuJ,EAAK+hQ,EAAKtrQ,EACV0H,EAAKjT,EAAKA,EAAKC,EAAKA,EAAKsL,EAAKA,EAC9B6H,EAAKH,EAAK/S,EAAKA,EAAKC,EAAKA,EAAKqL,EAAKA,EACnCurQ,EAAK9jQ,EAAKxJ,EAAKA,EAAKC,EAAKA,EAAKmtQ,EAAKA,EACnCG,EAAKF,EAAKl8Q,EAAKgO,EAAK/N,EACpBgoO,GAAMjoO,EAAKm8Q,EAAKl8Q,EAAKuY,IAAY,EAAL4jQ,GAAUh3Q,EACtC+iO,GAAMloO,EAAK0L,EAAK3L,EAAKka,GAAMkiQ,EAC3Bl0C,GAAMg0C,EAAK1jQ,EAAKxK,EAAKmuQ,IAAY,EAALC,GAAU/2Q,EACtC+iO,GAAMp6N,EAAKkM,EAAKgiQ,EAAKvwQ,GAAMywQ,EAC3BrpO,EAAIo1L,EAAKA,EAAKC,EAAKA,EAAK,EACxBwC,EAAI,GAAKj6N,EAAKs3N,EAAKE,EAAKD,EAAKE,GAC7ByC,EAAI5C,EAAKA,EAAKC,EAAKA,EAAKv3N,EAAKA,EAC7BzO,IAAM6wC,GAAK63L,EAAI3tO,KAAK2C,KAAKgrO,EAAIA,EAAI,EAAI73L,EAAI83L,KAAO,EAAI93L,GAAK83L,EAAID,GAC/D,MAAO,CACL38O,EAAGmX,EAAK6iO,EAAKE,EAAKjmO,EAClBhU,EAAGmX,EAAK6iO,EAAKE,EAAKlmO,EAClBA,EAAGA,EAEP,CEzHA,SAAS,IAAM+D,EAAG9E,EAAGgH,GACnB,IACEla,EACA+f,EAEA9f,EACA8R,EALEpQ,EAAKqW,EAAEhY,EAAIkT,EAAElT,EAGf4B,EAAKoW,EAAE/X,EAAIiT,EAAEjT,EAGbsqB,EAAK5oB,EAAKA,EAAKC,EAAKA,EAClB2oB,GACFxK,EAAK7M,EAAEe,EAAIiG,EAAEjG,EAAG8L,GAAMA,EACtBhO,EAAKiG,EAAE/D,EAAIiG,EAAEjG,EACT8L,GADYhO,GAAMA,IAEpB/R,GAAKuqB,EAAKxY,EAAKgO,IAAO,EAAIwK,GAC1BtqB,EAAI+O,KAAK2C,KAAK3C,KAAKE,IAAI,EAAG6C,EAAKwY,EAAKvqB,EAAIA,IACxCka,EAAEla,EAAIgY,EAAEhY,EAAIA,EAAI2B,EAAK1B,EAAI2B,EACzBsY,EAAEja,EAAI+X,EAAE/X,EAAID,EAAI4B,EAAK3B,EAAI0B,IAEzB3B,GAAKuqB,EAAKxK,EAAKhO,IAAO,EAAIwY,GAC1BtqB,EAAI+O,KAAK2C,KAAK3C,KAAKE,IAAI,EAAG6Q,EAAKwK,EAAKvqB,EAAIA,IACxCka,EAAEla,EAAIkT,EAAElT,EAAIA,EAAI2B,EAAK1B,EAAI2B,EACzBsY,EAAEja,EAAIiT,EAAEjT,EAAID,EAAI4B,EAAK3B,EAAI0B,KAG3BuY,EAAEla,EAAIkT,EAAElT,EAAIka,EAAEjG,EACdiG,EAAEja,EAAIiT,EAAEjT,EAEZ,CACA,SAAS,IAAWiT,EAAG8E,GACrB,IAAI61Q,EAAK36Q,EAAEe,EAAI+D,EAAE/D,EAAI,KACnBtS,EAAKqW,EAAEhY,EAAIkT,EAAElT,EACb4B,EAAKoW,EAAE/X,EAAIiT,EAAEjT,EACf,OAAO4tR,EAAK,GAAKA,EAAKA,EAAKlsR,EAAKA,EAAKC,EAAKA,CAC5C,CACA,SAAS,IAAM6zC,GACb,IAAIviC,EAAIuiC,EAAKha,EACXzjB,EAAIy9B,EAAKnrB,KAAKmR,EACd0yP,EAAKj7Q,EAAEe,EAAI+D,EAAE/D,EACbtS,GAAMuR,EAAElT,EAAIgY,EAAE/D,EAAI+D,EAAEhY,EAAIkT,EAAEe,GAAKk6Q,EAC/BvsR,GAAMsR,EAAEjT,EAAI+X,EAAE/D,EAAI+D,EAAE/X,EAAIiT,EAAEe,GAAKk6Q,EACjC,OAAOxsR,EAAKA,EAAKC,EAAKA,CACxB,CACA,SAAS,IAAK4T,GACZzgB,KAAK0mC,EAAIjmB,EACTzgB,KAAKu1B,KAAO,KACZv1B,KAAKyhC,SAAW,IAClB,CACO,SAASyze,IAAY78O,GAC1B,KAAMzpQ,GAAKypQ,EDjDE,SAAUptR,GACvB,MAAoB,iBAANA,GAAkB,WAAYA,EAAIA,EAC9Cw1B,MAAMnH,KAAKruB,EACf,CC8CuB,CAAMotR,IAAUx3R,QAAS,OAAO,EACrD,IAAIsd,EAAG8E,EAAGkC,EAAGyJ,EAAG4qQ,EAAI/U,EAAIvjR,EAAGgG,EAAGR,EAAG+yR,EAAIC,EAIrC,IADAv7Q,EAAIk6Q,EAAQ,IAAMptR,EAAI,EAAGkT,EAAEjT,EAAI,IACzB0jB,EAAI,GAAI,OAAOzQ,EAAEe,EAIvB,GADA+D,EAAIo1Q,EAAQ,GAAIl6Q,EAAElT,GAAKgY,EAAE/D,EAAG+D,EAAEhY,EAAIkT,EAAEe,EAAG+D,EAAE/X,EAAI,IACvC0jB,EAAI,GAAI,OAAOzQ,EAAEe,EAAI+D,EAAE/D,EAG7B,IAAM+D,EAAG9E,EAAGgH,EAAIkzQ,EAAQ,IAGxBl6Q,EAAI,IAAI,IAAKA,GAAI8E,EAAI,IAAI,IAAKA,GAAIkC,EAAI,IAAI,IAAKA,GAC/ChH,EAAEoX,KAAOpQ,EAAEsc,SAAWxe,EACtBA,EAAEsS,KAAOpX,EAAEsjB,SAAWtc,EACtBA,EAAEoQ,KAAOtS,EAAEwe,SAAWtjB,EAGtBqgC,EAAM,IAAKt9C,EAAI,EAAGA,EAAI0tB,IAAK1tB,EAAG,CAC5B,IAAMid,EAAEuoB,EAAGzjB,EAAEyjB,EAAGvhB,EAAIkzQ,EAAQn3R,IAAKikB,EAAI,IAAI,IAAKA,GAK9Cje,EAAI+b,EAAEsS,KAAM7uB,EAAIyX,EAAEsjB,SAAUg4P,EAAKx2Q,EAAEyjB,EAAExnB,EAAGw6Q,EAAKv7Q,EAAEuoB,EAAExnB,EACjD,GACE,GAAIu6Q,GAAMC,EAAI,CACZ,GAAI,IAAWxyR,EAAEw/B,EAAGvhB,EAAEuhB,GAAI,CACxBzjB,EAAI/b,EAAGiX,EAAEoX,KAAOtS,EAAGA,EAAEwe,SAAWtjB,IAAKjd,EACrC,SAASs9C,CACX,CACAi7O,GAAMvyR,EAAEw/B,EAAExnB,EAAGhY,EAAIA,EAAEquB,IACrB,KAAO,CACL,GAAI,IAAW7uB,EAAEggC,EAAGvhB,EAAEuhB,GAAI,EACxBvoB,EAAIzX,GAAK6uB,KAAOtS,EAAGA,EAAEwe,SAAWtjB,IAAKjd,EACrC,SAASs9C,CACX,CACAk7O,GAAMhzR,EAAEggC,EAAExnB,EAAGxY,EAAIA,EAAE+6B,QACrB,QACOv6B,IAAMR,EAAE6uB,MAOjB,IAJApQ,EAAEsc,SAAWtjB,EAAGgH,EAAEoQ,KAAOtS,EAAG9E,EAAEoX,KAAOtS,EAAEwe,SAAWxe,EAAIkC,EAGtDq0Q,EAAK,IAAMr7Q,IACHgH,EAAIA,EAAEoQ,QAAUtS,IACjBwhQ,EAAK,IAAMt/P,IAAMq0Q,IACpBr7Q,EAAIgH,EAAGq0Q,EAAK/U,GAGhBxhQ,EAAI9E,EAAEoX,IACR,CAIA,IADApX,EAAI,CAAC8E,EAAEyjB,GAAIvhB,EAAIlC,GACPkC,EAAIA,EAAEoQ,QAAUtS,GAAG9E,EAAE5d,KAAK4kB,EAAEuhB,GAIpC,IAHAvhB,EAAI,IAAQhH,GAGPjd,EAAI,EAAGA,EAAI0tB,IAAK1tB,GAAGid,EAAIk6Q,EAAQn3R,IAAM+J,GAAKka,EAAEla,EAAGkT,EAAEjT,GAAKia,EAAEja,EAC7D,OAAOia,EAAEjG,CACX,CACe,SAAS,IAACm5Q,GAEvB,OADA68O,IAAY78O,GACLA,CACT,CCnHO,SAAS,IAASh1R,GACvB,GAAiB,mBAANA,EAAkB,MAAM,IAAI4kC,MACvC,OAAO5kC,CACT,CCNO,SAAS,MACd,OAAO,CACT,CACe,SAAS,IAAC4H,GACvB,OAAO,WACL,OAAOA,CACT,CACF,CCJA,SAAS,IAAc8a,GACrB,OAAO9L,KAAK2C,KAAKmJ,EAAE5jB,MACrB,CACe,SAAS,MACtB,IAAI6rE,EAAS,KACXphE,EAAK,EACLC,EAAK,EACLutE,EAAU,IACZ,SAAS57B,EAAK+sB,GAOZ,OANAA,EAAKtgE,EAAI2B,EAAK,EAAG2+D,EAAKrgE,EAAI2B,EAAK,EAC3BmhE,EACFzC,EAAKgsN,WAAW,IAAWvpN,IAAS2pN,UAAUw9O,IAAa/6b,EAAS,KAAMm9M,WAAW,IAAe,IAEpGhsN,EAAKgsN,WAAW,IAAW,MAAgBI,UAAUw9O,IAAa,IAAc,IAAIx9O,UAAUw9O,IAAa/6b,EAAS7O,EAAKrsD,EAAIjF,KAAKC,IAAItN,EAAIC,KAAM0qR,WAAW,IAAet9Q,KAAKC,IAAItN,EAAIC,IAAO,EAAI0+D,EAAKrsD,KAElMqsD,CACT,CAUA,OATA/sB,EAAKwvB,OAAS,SAAU/iE,GACtB,OAAOrK,UAAUC,QAAUmtE,EFpBjB,OADW3qE,EEqBwB4H,GFpB5B,KAAO,IAAS5H,GEoBgBm7C,GAAQwvB,EFrBtD,IAAkB3qE,CEsBvB,EACAm7C,EAAKla,KAAO,SAAUr5B,GACpB,OAAOrK,UAAUC,QAAU+L,GAAM3B,EAAE,GAAI4B,GAAM5B,EAAE,GAAIuzC,GAAQ,CAAC5xC,EAAIC,EAClE,EACA2xC,EAAK47B,QAAU,SAAUnvE,GACvB,OAAOrK,UAAUC,QAAUu5E,EAAuB,mBAANnvE,EAAmBA,EAAI,KAAUA,GAAIuzC,GAAQ47B,CAC3F,EACO57B,CACT,CACA,SAAS,IAAWwvB,GAClB,OAAO,SAAUttB,GACVA,EAAK7wC,WACR6wC,EAAKxhC,EAAIjF,KAAKE,IAAI,GAAI6zD,EAAOttB,IAAS,GAE1C,CACF,CACA,SAASy0d,IAAa/6b,EAAS1zE,GAC7B,OAAO,SAAUg6C,GACf,GAAI7wC,EAAW6wC,EAAK7wC,SAAU,CAC5B,IAAIA,EACF3O,EAGAgD,EAFA0qB,EAAI/e,EAAShP,OACbqe,EAAIk7D,EAAQ15B,GAAQh6C,GAAK,EAE3B,GAAIwY,EAAG,IAAKhe,EAAI,EAAGA,EAAI0tB,IAAK1tB,EAAG2O,EAAS3O,GAAGge,GAAKA,EAEhD,GADAhb,EAAIgxgB,IAAYrlgB,GACZqP,EAAG,IAAKhe,EAAI,EAAGA,EAAI0tB,IAAK1tB,EAAG2O,EAAS3O,GAAGge,GAAKA,EAChDwhC,EAAKxhC,EAAIhb,EAAIgb,CACf,CACF,CACF,CACA,SAAS,IAAexY,GACtB,OAAO,SAAUg6C,GACf,IAAI9uC,EAAS8uC,EAAK9uC,OAClB8uC,EAAKxhC,GAAKxY,EACNkL,IACF8uC,EAAKz1C,EAAI2G,EAAO3G,EAAIvE,EAAIg6C,EAAKz1C,EAC7By1C,EAAKx1C,EAAI0G,EAAO1G,EAAIxE,EAAIg6C,EAAKx1C,EAEjC,CACF,CC9DA,SAAS,IAAMw1C,GACb,IAAIt0B,EAAM,EACRvc,EAAW6wC,EAAK7wC,SAChB3O,EAAI2O,GAAYA,EAAShP,OAC3B,GAAKK,EAAgB,OAASA,GAAK,GAAGkrB,GAAOvc,EAAS3O,GAAGiB,WAAjDiqB,EAAM,EACds0B,EAAKv+C,MAAQiqB,CACf,CCNA,SAAS,IAA2BhH,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CCFlL,SAAS,IAA2B9zM,EAAGqzM,GAAkB,IAAIlqK,EAAuB,oBAAXnW,QAA0BhzB,EAAEgzB,OAAOC,WAAajzB,EAAE,cAAe,IAAKmpC,EAAI,CAAE,GAAI9tB,MAAMC,QAAQtb,KAAOmpC,EAC9K,SAAqCnpC,EAAGszM,GAAU,IAAKtzM,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,IAAkBA,EAAGszM,GAAS,IAAI9pM,EAAIpX,OAAOtX,UAAU0iB,SAAShhB,KAAKwjB,GAAG4B,MAAM,GAAI,GAAc,WAAN4H,GAAkBxJ,EAAEtgB,cAAa8pB,EAAIxJ,EAAEtgB,YAAY7C,MAAM,GAAU,QAAN2sB,GAAqB,QAANA,EAAa,OAAO6R,MAAMnH,KAAKlU,GAAI,GAAU,cAANwJ,GAAqB,2CAA2CtpB,KAAKspB,GAAI,OAAO,IAAkBxJ,EAAGszM,EAAS,CAD5O,CAA4BtzM,KAAOqzM,GAAkBrzM,GAAyB,iBAAbA,EAAEvkB,OAAqB,CAAM0tD,IAAInpC,EAAImpC,GAAI,IAAIrtD,EAAI,EAAO23N,EAAI,WAAc,EAAG,MAAO,CAAE/6M,EAAG+6M,EAAGjqM,EAAG,WAAe,OAAI1tB,GAAKkkB,EAAEvkB,OAAe,CAAEy3C,MAAM,GAAe,CAAEA,MAAM,EAAOn2C,MAAOijB,EAAElkB,KAAQ,EAAGgD,EAAG,SAAWq6B,GAAM,MAAMA,CAAI,EAAGl7B,EAAGw1N,EAAK,CAAE,MAAM,IAAI9zN,UAAU,wIAA0I,CAAE,IAA6CyiC,EAAzCsxL,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEj7M,EAAG,WAAeywC,EAAKA,EAAG3sD,KAAKwjB,EAAI,EAAGwJ,EAAG,WAAe,IAAI64B,EAAO8G,EAAGh5B,OAAsC,OAA9BujM,EAAmBrxK,EAAKnP,KAAamP,CAAM,EAAGvjD,EAAG,SAAW80N,GAAOD,GAAS,EAAMvxL,EAAMwxL,CAAK,EAAG31N,EAAG,WAAe,IAAWy1N,GAAiC,MAAbvqK,EAAG0qK,QAAgB1qK,EAAG0qK,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvxL,CAAK,CAAE,EAAK,CAEr+B,SAAS,IAAkB/wB,EAAK+jB,IAAkB,MAAPA,GAAeA,EAAM/jB,EAAI5V,UAAQ25B,EAAM/jB,EAAI5V,QAAQ,IAAK,IAAIK,EAAI,EAAGg4N,EAAO,IAAIz4L,MAAMjG,GAAMt5B,EAAIs5B,EAAKt5B,IAAKg4N,EAAKh4N,GAAKuV,EAAIvV,GAAI,OAAOg4N,CAAM,CCDlL,IAAI,IAAuB,SAAyB,KACrC,SAAS,MACtB,IAAIx4K,EAAMj5C,EAAS8tB,EAAM1lB,EAAU3O,EAAG0tB,EACtC,OAAO,UAAyB,SAAkB4vC,GAChD,cAAkBA,EAASlpC,KAAOkpC,EAASjpC,MACzC,KAAK,EACUA,EAAO,CAApBmrB,EAAO1gD,MACT,KAAK,EACHyH,EAAU8tB,EAAK3E,UAAW2E,EAAO,GACnC,KAAK,EACH,KAAMmrB,EAAOj5C,EAAQwf,OAAQ,CAC3Bu3C,EAASjpC,KAAO,EAChB,KACF,CAEA,OADAipC,EAASjpC,KAAO,EACTmrB,EACT,KAAK,EACH,GAAI7wC,EAAW6wC,EAAK7wC,SAClB,IAAK3O,EAAI,EAAG0tB,EAAI/e,EAAShP,OAAQK,EAAI0tB,IAAK1tB,EACxCq0B,EAAKh1B,KAAKsP,EAAS3O,IAGvBs9D,EAASjpC,KAAO,EAChB,MACF,KAAK,EACH,GAAIA,EAAK10B,OAAQ,CACf29D,EAASjpC,KAAO,EAChB,KACF,CACF,KAAK,EACL,IAAK,MACH,OAAOipC,EAASx5D,OAEtB,GAAG,IAAShF,KACd,CCrBe,SAAS,IAAU0lB,EAAM7V,GAClC6V,aAAgB3G,KAClB2G,EAAO,MAAC+Q,EAAW/Q,QACF+Q,IAAb5mB,IAAwBA,EAAW,WACjB4mB,IAAb5mB,IACTA,EAAW,KASb,IAPA,IACE6wC,EAEA5wC,EACAwnR,EACAp2R,EACA0tB,EANE28C,EAAO,IAAI,IAAK7lD,GAElByiJ,EAAQ,CAAC58F,GAKJ7qB,EAAOynH,EAAMlhJ,OAClB,IAAKqwQ,EAASznR,EAAS6wC,EAAKh7B,SAAWkJ,GAAK0oQ,EAAS72P,MAAMnH,KAAKg+P,IAASz2R,QAEvE,IADA6/C,EAAK7wC,SAAWynR,EACXp2R,EAAI0tB,EAAI,EAAG1tB,GAAK,IAAKA,EACxBinK,EAAM5nK,KAAKuP,EAAQwnR,EAAOp2R,GAAK,IAAI,IAAKo2R,EAAOp2R,KAC/C4O,EAAM8B,OAAS8uC,EACf5wC,EAAMg3B,MAAQ4Z,EAAK5Z,MAAQ,EAIjC,OAAOykC,EAAKgsN,WAAW,IACzB,CAIA,SAAS,IAAexxQ,GACtB,OAAOA,EAAElW,QACX,CACA,SAAS,IAAYkW,GACnB,OAAO0a,MAAMC,QAAQ3a,GAAKA,EAAE,GAAK,IACnC,CACA,SAAS,IAAS26B,QACQjqB,IAApBiqB,EAAKh7B,KAAKvjB,QAAqBu+C,EAAKv+C,MAAQu+C,EAAKh7B,KAAKvjB,OAC1Du+C,EAAKh7B,KAAOg7B,EAAKh7B,KAAKA,IACxB,CACO,SAAS,IAAcg7B,GAC5B,IAAI1yC,EAAS,EACb,GAAG0yC,EAAK1yC,OAASA,SAAgB0yC,EAAOA,EAAK9uC,SAAW8uC,EAAK1yC,SAAWA,EAC1E,CACO,SAAS,IAAK0X,GACnB1lB,KAAK0lB,KAAOA,EACZ1lB,KAAK8mC,MAAQ9mC,KAAKgO,OAAS,EAC3BhO,KAAK4R,OAAS,IAChB,CACA,IAAK1R,UAAY,IAAUA,WAAY,OAAgB,CACrD4E,YAAa,IACbgsB,MJzDa,WACb,OAAO9wB,KAAK23R,UAAU,IACxB,EIwDEC,KH9Da,SAAUv3R,EAAUquD,GACjC,IAEE6vK,EAFEv2N,GAAS,EACTw2N,EAAY,IAA2Bx+N,MAE3C,IACE,IAAKw+N,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIoI,EAAO69K,EAAMp8N,MACjB9B,EAASuB,KAAK8sD,EAAMhO,IAAQ14C,EAAOhI,KACrC,CACF,CAAE,MAAOwnC,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACA,OAAOrD,IACT,EGgDE23R,UClEa,SAAUt3R,EAAUquD,GAQjC,IAPA,IAGE7+C,EACA3O,EACA0tB,EALE8xB,EAAO1gD,KACTmoK,EAAQ,CAACznH,GACTnrB,EAAO,GAIPvtB,GAAS,EACJ04C,EAAOynH,EAAMlhJ,OAElB,GADAsO,EAAKh1B,KAAKmgD,GACN7wC,EAAW6wC,EAAK7wC,SAClB,IAAK3O,EAAI,EAAG0tB,EAAI/e,EAAShP,OAAQK,EAAI0tB,IAAK1tB,EACxCinK,EAAM5nK,KAAKsP,EAAS3O,IAI1B,KAAOw/C,EAAOnrB,EAAKtO,OACjB5mB,EAASuB,KAAK8sD,EAAMhO,IAAQ14C,EAAOhI,MAErC,OAAOA,IACT,ED+CEu3R,WEnEa,SAAUl3R,EAAUquD,GAMjC,IALA,IAEE7+C,EACA3O,EAHEw/C,EAAO1gD,KACTmoK,EAAQ,CAACznH,GAGT14C,GAAS,EACJ04C,EAAOynH,EAAMlhJ,OAElB,GADA5mB,EAASuB,KAAK8sD,EAAMhO,IAAQ14C,EAAOhI,MAC/B6P,EAAW6wC,EAAK7wC,SAClB,IAAK3O,EAAI2O,EAAShP,OAAS,EAAGK,GAAK,IAAKA,EACtCinK,EAAM5nK,KAAKsP,EAAS3O,IAI1B,OAAOlB,IACT,EFqDEwT,KFjEa,SAAUnT,EAAUquD,GACjC,IAEE6vK,EAFEv2N,GAAS,EACTw2N,EAAY,IAA2Bx+N,MAE3C,IACE,IAAKw+N,EAAU1gN,MAAOygN,EAAQC,EAAU5vM,KAAK0pB,MAAO,CAClD,IAAIoI,EAAO69K,EAAMp8N,MACjB,GAAI9B,EAASuB,KAAK8sD,EAAMhO,IAAQ14C,EAAOhI,MACrC,OAAO0gD,CAEX,CACF,CAAE,MAAOlZ,GACPg3L,EAAUt6N,EAAEsjC,EACd,CAAE,QACAg3L,EAAUn7N,GACZ,CACF,EEkDE+oB,IGrEa,SAAUjqB,GACvB,OAAOnC,KAAK23R,WAAU,SAAUj3O,GAI9B,IAHA,IAAIt0B,GAAOjqB,EAAMu+C,EAAKh7B,OAAS,EAC7B7V,EAAW6wC,EAAK7wC,SAChB3O,EAAI2O,GAAYA,EAAShP,SAClBK,GAAK,GAAGkrB,GAAOvc,EAAS3O,GAAGiB,MACpCu+C,EAAKv+C,MAAQiqB,CACf,GACF,EH8DE7Z,KItEa,SAAUC,GACvB,OAAOxS,KAAKu3R,YAAW,SAAU72O,GAC3BA,EAAK7wC,UACP6wC,EAAK7wC,SAAS0C,KAAKC,EAEvB,GACF,EJiEE3L,KKvEa,SAAUgoB,GAIvB,IAHA,IAAInI,EAAQ1mB,KACV63R,EAaJ,SAA6B15Q,EAAG8E,GAC9B,GAAI9E,IAAM8E,EAAG,OAAO9E,EACpB,IAAI25Q,EAAS35Q,EAAE45Q,YACbC,EAAS/0Q,EAAE80Q,YACX5yQ,EAAI,KACNhH,EAAI25Q,EAAO7wQ,MACXhE,EAAI+0Q,EAAO/wQ,MACX,KAAO9I,IAAM8E,GACXkC,EAAIhH,EACJA,EAAI25Q,EAAO7wQ,MACXhE,EAAI+0Q,EAAO/wQ,MAEb,OAAO9B,CACT,CA1Be,CAAoBuB,EAAOmI,GACtCs5I,EAAQ,CAACzhJ,GACJA,IAAUmxQ,GACfnxQ,EAAQA,EAAM9U,OACdu2J,EAAM5nK,KAAKmmB,GAGb,IADA,IAAIhgB,EAAIyhK,EAAMtnK,OACPguB,IAAQgpQ,GACb1vH,EAAM/mK,OAAOsF,EAAG,EAAGmoB,GACnBA,EAAMA,EAAIjd,OAEZ,OAAOu2J,CACT,EL0DE4vH,UMxEa,WAGb,IAFA,IAAIr3O,EAAO1gD,KACTmoK,EAAQ,CAACznH,GACJA,EAAOA,EAAK9uC,QACjBu2J,EAAM5nK,KAAKmgD,GAEb,OAAOynH,CACT,ENkEE+vH,YOzEa,WACb,OAAOz3P,MAAMnH,KAAKt5B,KACpB,EPwEEm4R,OQ1Ea,WACb,IAAIA,EAAS,GAMb,OALAn4R,KAAKu3R,YAAW,SAAU72O,GACnBA,EAAK7wC,UACRsoR,EAAO53R,KAAKmgD,EAEhB,IACOy3O,CACT,ERmEEnC,MS3Ea,WACb,IAAIzqN,EAAOvrE,KACTg2R,EAAQ,GAUV,OATAzqN,EAAKqsN,MAAK,SAAUl3O,GACdA,IAAS6qB,GAEXyqN,EAAMz1R,KAAK,CACT8wB,OAAQqvB,EAAK9uC,OACblJ,OAAQg4C,GAGd,IACOs1O,CACT,ET+DEhuP,KApCF,WACE,OAAO,IAAUhoC,MAAMu3R,WAAW,IACpC,GAmCGn/O,OAAOC,SAAU,KU1Eb,IAAI+8d,IAAmB,YAEnBC,IAAmB,iBAEnBC,IAAuB,eAC9BC,IAAwB,sCACrB,SAAS,IAASpwe,EAASg/F,GAChC,IAAItE,EAAQ16F,EAAQ06F,MAClBD,EAASz6F,EAAQy6F,OACnB,IAAI,UAASC,GACX,OAAOA,EAET,IAAI,UAAQA,GAEV,OADAmF,QAAQib,KAAKs1X,KACN11Y,EAAM,GAGf,GADAmF,QAAQib,KAAK,GAAG1sI,OAAOgigB,IAAuB,sCAC1C,UAAS31Y,GACX,OAAOA,EAET,IAAI,UAAQA,IAAWA,EAAO/+H,OAC5B,OAAO++H,EAAO,GAEhB,GAAIuE,EACF,OAAOA,EAET,MAAM,IAAIp/H,UAAUwwgB,IACtB,CACO,SAASC,IAAYjqc,GAC1B,IAEMz+D,EACA2ogB,EAHFttW,EAAQ,GACR58F,GAAQA,EAAKqsN,KAIfrsN,EAAKqsN,MAAK,SAAUl3O,GAClB,IAAIv/C,EAAI+V,EACJwpC,EAAK9uC,SAAW9E,GAClBA,EAAW4zC,EAAK9uC,OAChB6jgB,EAAU,GAEVA,GAAW,EAEb,IAAI19O,GAAY,YAAmC,QAAzB52R,EAAKu/C,EAAKq3O,iBAA8B,IAAP52R,OAAgB,EAASA,EAAGS,KAAK8+C,KAAU,IAAI1vB,KAAI,SAAUjL,GACtH,OAAOoiJ,EAAM30J,MAAK,SAAUob,GAC1B,OAAOA,EAAE3sB,OAAS8jB,EAAE9jB,IACtB,KAAM8jB,CACR,KAAI,SAAU5kB,GACZ,IAAI2lC,EAAQ3lC,EAAG2lC,MACf,OAAOA,EAAQ,GAAKA,EAAQ4Z,EAAK5Z,KACnC,IACA4Z,EAAK40d,KAAwBv9O,EAC7Br3O,EAAK20d,MAA8C,QAAxBn+f,EAAKwpC,EAAK7wC,gBAA6B,IAAPqH,OAAgB,EAASA,EAAGrW,SAAW,EAClG6/C,EAAK00d,KAAoBK,EACzBttW,EAAM5nK,KAAKmgD,EACb,IACS6qB,GAAQA,EAAKmqc,UAEtBnqc,EAAKmqc,UAAS,SAAUh1d,GACtBynH,EAAM5nK,KAAKmgD,EACb,IAEF,OAAOynH,CACT,CC9DA,IAAI,IAAkB,CACpBtoC,MAAO,QACPkpG,GAAI,CAAC,IAAK,IAAK,KAEfx2N,KAAM,SAAc4L,EAAG8E,GACrB,OAAOA,EAAE9gB,MAAQgc,EAAEhc,KACrB,GCAK,SAAS,IAAcgjC,GAC5B,IAAIzf,EAAOyf,EAAQzf,KACjB8tf,EAAkBrue,EAAQque,gBAC1BrygB,EAAKgkC,EAAQuvd,UACbA,OAAmB,IAAPvzf,EAAgB,GAAKA,EACjCw0gB,EAAkBxwe,EAAQwwe,gBACxBxtW,EDJC,SAAcziJ,EAAMyf,GAEzB,IAII06F,EAJAkpG,GADJ5jM,GAAU,UAAO,CAAC,EAAG,IAAiBA,IACrB4jM,GACjB,KAAK,UAAQA,IAAqB,IAAdA,EAAGloO,OACrB,MAAM,IAAIkE,UAAU,4EAGtB,IACE86H,EAAQ,IAAS16F,EACnB,CAAE,MAAOjhC,KACP8gI,QAAQib,KAAK/7I,IACf,CACA,IAKIqnE,EALa,SAAoB7lD,GACnC,OAAO,MAAmB4e,KAAKa,EAAQb,MAAM81C,QAAQj1C,EAAQi1C,QAAtD,CAA+D,IAAsB10D,GAAM0G,KAAI,SAAUrG,GAC9G,OAAOA,EAAE85G,EACX,IAAGttH,KAAK4yB,EAAQ5yB,MAClB,CACWqjgB,CAAWlwf,GAClBza,EAAI89N,EAAG,GACP79N,EAAI69N,EAAG,GACP7pN,EAAI6pN,EAAG,GAMX,OALAx9J,EAAKqsN,MAAK,SAAUl3O,GAClBA,EAAKz1C,GAAKy1C,EAAKz1C,EACfy1C,EAAKx1C,GAAKw1C,EAAKx1C,EACfw1C,EAAKxhC,GAAKwhC,EAAKxhC,CACjB,IACOs2f,IAAYjqc,EACrB,CCvBc,CAAK7lD,GAAM,WAAS,UAAS,CAAC,EAAG8tf,GAAkB,CAC7D3zY,MAAO,QACPkpG,GAAI,CAAC,IAAK,IAAK,QAEbn2N,EAAS,GAwBb,OAvBAu1J,EAAM//J,SAAQ,SAAUs4C,GAItB,IAHA,IAAIv/C,EACA0F,EAAO65C,EAAKh7B,KAAKzjB,KACjB4zgB,GAAe,UAAS,CAAC,EAAGn1d,GACzBm1d,EAAa/ue,MAAQ,GAC1BjgC,EAAO,GAAG0M,OAA2C,QAAnCpS,EAAK00gB,EAAajkgB,OAAO8T,YAAyB,IAAPvkB,OAAgB,EAASA,EAAGc,KAAM,OAAOsR,OAAO1M,GAC7GgvgB,EAAeA,EAAajkgB,OAG9B,GAAI+jgB,GAAmBj1d,EAAK5Z,MAAQ,EAClC,OAAO,KAET,IAAIyte,EAAWrf,IAAW,CAAC,EAAGx0c,EAAKh7B,MAAM,WAAS,WAAS,UAAS,CAAC,EAAG,IAAKg7B,EAAKh7B,KAAMgve,IAAa,CACnG7tf,KAAMA,IACJ65C,IACJ6zd,EAASnoT,IAAMonT,EACfe,EAAST,KAAmC,CAC1CN,gBAAiBA,EACjB9e,UAAWA,EACXihB,gBAAiBA,GAEnB/igB,EAAOrS,KAAKg0gB,EACd,IACO3hgB,CACT,CAKO,SAASkjgB,IAAwB17b,EAAS2jY,EAAexxQ,GAC9D,IAAIwpU,EAAclgB,IAAkB,CAACz7a,EAAS2jY,IAC1C9uc,EAAM8mgB,EAAY,GACpBpjgB,EAAQojgB,EAAY,GACpBtyb,EAASsyb,EAAY,GACrB/mgB,EAAO+mgB,EAAY,GAIjBC,EAHQzpU,EAAcx+L,OAGLiB,EAAO2D,GACxBsjgB,EAHO1pU,EAAcv+L,QAGHiB,EAAMw0E,GACxBs6Q,EAAU9jV,KAAKC,IAAI87f,EAAOC,GAE1BC,GAAoBF,EAAQj4K,GAAW,EACvCo4K,GAAqBF,EAAQl4K,GAAW,EAO5C,MAAO,CACLg4J,aAHiB,CAJJ9mf,EAAMkngB,EACJxjgB,EAAQujgB,EACPzyb,EAAS0yb,EACXnngB,EAAOkngB,GAKrBE,UAHcr4K,EAAU,EAAI,EAAIA,EAKpC,CC9DA,SAAS,IAAez8U,GACtB,IAAIo7b,EAAQp7b,EAAOo7b,MACf25D,EAAWp8f,KAAKC,IAAIwic,EAAMrgB,SAAStub,MAAO2uc,EAAMrgB,SAASrub,QAC7D,OAAOknf,IAAW,CAChB/vd,QAAS,CACPb,KAAM,SAAcnjC,GAElB,OADQA,EAAG+d,EACAm3f,CACb,IAED/0f,EACL,CAKA,SAAS84D,IAAQ94D,GACf,IAAI6jB,EAAU7jB,EAAO6jB,QACnBu3a,EAAQp7b,EAAOo7b,MAEbnwQ,EAAgBmwQ,EAAMrgB,SACtBjiX,EAAUj1C,EAAQi1C,QACpB2jY,EAAgB54a,EAAQ44a,cACxB01D,EAAYtue,EAAQsue,UAClB6C,EAAoBv4D,GACpB01D,aAA6C,EAASA,EAAU5lc,WAElEyoc,EAAoBzgB,IAAkB,CADPH,IAAuBh5C,EAAMqB,eAAe,UAAI01D,EAAW,CAAC,aAAc,cACxC11D,KAEnE,IAAIg4C,EAAe+f,IAAwB17b,EAASk8b,EAAmB/pU,GAAewpT,aAGtF,OAFAr5C,EAAMtiY,QAAU27a,EAChBr5C,EAAMqB,cAAgB,EACfz8b,CACT,CAKA,SAAS,IAASA,GAChB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfi1C,EAAUsiY,EAAMtiY,QAClB2jY,EAAgBrB,EAAMqB,cACpBhqa,EAAQ5O,EAAQ4O,MAClBo2b,EAAahlc,EAAQglc,WACrB5xD,EAAapzY,EAAQozY,WACrBi7F,EAAkBrue,EAAQque,gBAC1BhmC,EAAYroc,EAAQqoc,UACpBrse,EAAKgkC,EAAQuvd,UACbA,OAAmB,IAAPvzf,EAAgB,GAAKA,EACjCsygB,EAAYtue,EAAQsue,UAClB/tf,EAAO,IAAc,CACvBA,KAAMyf,EAAQzf,KACd8tf,gBAAiBA,EACjBmC,gBAAiBlC,aAA6C,EAASA,EAAU5lc,QACjF6mb,UAAWA,IAEbh4C,EAAMh3b,KAAKA,GACX,IACI0wf,EAAYN,IAAwB17b,EAAS2jY,EAD7BrB,EAAMrgB,UACqD+5E,UAE3EG,EAAa,SAAoBp1gB,GAEnC,OADQA,EAAG+d,EACAk3f,CACb,EAsBA,OArBI5oC,IACF+oC,EAAa,SAAoBxwf,GAC/B,OAAOA,EAAEynd,GAAa4oC,CACxB,GAGF,IAAMlhB,IAAW,CAAC,EAAG5ze,EAAQ,CAC3B6jB,QAAS,CACP6zX,OAAQ,IACRC,OAAQ,IACR+/F,YAAa7uB,EACbqD,UAAWA,EACXknB,WAAW,WAAc,UAAc,GAAI6e,KAAY,GAAO7e,GAAW,GACzE1pf,MAAO,CACL+oC,MAAOA,EACPjoC,MAAOysa,EACP9ya,MAAO,SACP6+B,KAAMiye,OAILj1f,CACT,CAKO,SAAS,IAAKA,GACnB,OAAOivN,IAAK,IAAM,CAAC,EAAG,CAEpBtlO,EAAG,CACDiP,IAAK,EACLC,IAAK,EACLqrZ,SAAU,EACVC,SAAU,EACVlhM,MAAM,GAERr5N,EAAG,CACDgP,IAAK,EACLC,IAAK,EACLqrZ,SAAU,EACVC,SAAU,EACVlhM,MAAM,KAdHgM,CAgBHjvN,EACN,CAKA,SAAS,IAAQA,GACf,IAAIo7b,EAAQp7b,EAAOo7b,MAEf33M,EADQzjP,EAAO6jB,QACG4/N,QACtB,IAAgB,IAAZA,EACF23M,EAAM33M,SAAQ,OACT,CACL,IAAI03P,EAAiB13P,GAEhB,UAAIA,EAAS,YAChB03P,EAAiBvH,IAAW,CAAC,EAAG,CAC9BvsC,YAAa,SAAqBxia,GAChC,OAAOA,EAAMn1B,KAAI,SAAUvZ,GACzB,IAAIyyO,GAAS,UAAIwyN,EAAMzf,aAAc,UACjCu5E,GAAgB,UAAItsR,EAAQ,CAAC,OAAQ,cAAc,SAAUj4O,GAC/D,OAAOA,CACT,IACIwkgB,GAAiB,UAAIvsR,EAAQ,CAAC,QAAS,cAAc,SAAUj4O,GACjE,OAAOA,CACT,IACA,OAAO,WAAS,UAAS,CAAC,EAAGwF,GAAO,CAClCxV,KAAMu0gB,EAAc/+f,EAAKiO,KAAKzjB,MAC9BE,MAAOs0gB,EAAeh/f,EAAKiO,KAAKvjB,QAEpC,GACF,GACCs6f,IAEL//C,EAAM33M,QAAQ03P,EAChB,CACA,OAAOn7e,CACT,CAKA,SAAS,IAAKA,GAGZ,OAFYA,EAAOo7b,MACb7oM,MAAK,GACJvyP,CACT,CACA,SAASo1f,IAAmBvxe,GAC1B,IAAIsue,EAAYtue,EAAQsue,UACtBtygB,EAAKgkC,EAAQ43a,aACbA,OAAsB,IAAP57c,EAAgB,GAAKA,EACtC,OAAIsygB,aAA6C,EAASA,EAAU5lc,SAC3Dqnb,IAAW,CAAC,EAAG/vd,EAAS,CAC7B43a,cAAc,WAAc,UAAc,GAAIA,GAAc,GAAO,CAAC,CAClEp0c,KAAM,aACNhH,IAAK,CACH+ygB,gBAAiBjB,EACjBxT,cAAe,IACf0V,iBAAiB,MAEjB,KAGDxwe,CACT,CAMA,SAAS,IAAY7jB,GAOnB,OAJA,IAAgB,CACdo7b,MAHUp7b,EAAOo7b,MAIjBv3a,QAASuxe,IAHCp1f,EAAO6jB,WAKZ7jB,CACT,CAMO,SAAS,IAAQA,GACtB,OAAOivN,IAAK,IAAQ,cAAe,IAAgBn2J,IAAS,IAAO,IAAM,IAAU,IAAM,IAAQ,IAAS,IAAa10E,IAAW,MAA3H6qO,CAAyIjvN,EAClJ,CCzMO,SAASq1f,IAAaxjf,GAC3B,IAAIzN,GAAO,UAAIyN,EAAS,CAAC,QAAS,OAAQ,QAAS,CAAC,GACpD,OAAO,UAAQzN,EAAK7V,WAAa6V,EAAK7V,SAAShP,OAAS,CAC1D,CAIA,SAAS+1gB,IAASzjf,GAChB,IAAI8qP,EAAa9qP,EAAQi/O,KAAK+vL,gBAC1Br4V,EAAcm0K,EAAWn0K,YAC7B,GAAIA,EAAa,CACf,IAAI3oG,EAAKgyB,EAAQpoB,MACfE,EAAI9J,EAAG8J,EACPC,EAAI/J,EAAG+J,EACLgM,EAAK+mQ,EAAWpgP,OAClB+4Z,EAAU1/a,EAAGjM,EACb4rb,EAAU3/a,EAAGhM,EACXgU,EAAI++P,EAAWmuJ,YAActiU,EAEjC,OADe7vF,KAAK2C,KAAK3C,KAAK0B,IAAIi7a,EAAU3rb,EAAG,GAAKgP,KAAK0B,IAAIk7a,EAAU3rb,EAAG,IACxDgU,CACpB,CACA,OAAO,CACT,CACAm/a,IAAe,oBAAqB01E,KACpCrvE,IAAoB,aAAc,CAChCgvD,WAAY,CAAC,CACX/qZ,QAAS,qBACTluE,OAAQ,iBACR2pa,SAAUuyE,KACT,CACDhua,QAAS,qBACTluE,OAAQ,kBAGV,CACEkuE,QAAS,qBACTluE,OAAQ,iBACR2pa,SAAUwyE,MAEZlwf,MAAO,CAAC,CACNiiF,QAAS,gBACTy7V,SAAUuyE,IACVl8e,OAAQ,CAAC,4BACR,CACDkuE,QAAS,kBACTluE,OAAQ,CAAC,oCACR,CAEDkuE,QAAS,QACTy7V,SAAUwyE,IACVn8e,OAAQ,CAAC,+BC/CoB,SAAU/4B,GAEzC,SAASm1gB,IACP,IAAIp2gB,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAGhE,OADAS,EAAMkI,KAAO,iBACNlI,CACT,EANA,UAAUo2gB,EAAen1gB,GAWzBm1gB,EAAcnc,kBAAoB,WAChC,OAAO,GACT,EACAmc,EAAc32gB,UAAUw6f,kBAAoB,WAC1C,OAAOmc,EAAcnc,mBACvB,EAIAmc,EAAc32gB,UAAUs7f,iBAAmB,WACzC,OAAO,GACT,EAIAqb,EAAc32gB,UAAUu7f,cAAgB,WACjCz7f,KAAK08c,MAAM76c,YAEd7B,KAAK08c,MAAMwI,WACXlld,KAAK08c,MAAMntc,QACXvP,KAAK86f,cAEL96f,KAAK08c,MAAM1xY,QAAO,GAEtB,CAEF,CAtCiC,CAsC/Byvb,KAtCF,ICTWqc,IAKAC,ICJAC,IAAiB,iBACjBC,IAAkB,kBAClBC,IAAuB,CAChC3yS,MAAM,EACN33K,MAAO,CACL+uX,UAAU,EACVnF,YAAY,IAGL2gG,KAA4B,WAAS,UAAS,CAAC,EAAGD,KAAuB,CAClF/rd,SAAU,SAEDisd,KAA6B,WAAS,UAAS,CAAC,EAAGF,KAAuB,CACnF/rd,SAAU,QACV0hI,KAAM,OCPD,SAASwqV,IAAOnzD,GACrB,OAAO,UAAIA,EAAgB,cAAgB6yD,IAAiB50F,IAC9D,CAIO,SAASm1F,IAASpzD,GACvB,OAAO,UAAIA,EAAgB,cAAgB6yD,IAAiB9kQ,MAC9D,CAMO,SAASslQ,IAAkBv+G,EAAQC,EAAQirD,GAEhD,OAAOozD,IAASpzD,GAAkBgxC,IAAW,CAAC,EAAG,CAC/C71S,SAAU03T,IAAiB9kQ,OAC3BrlN,MAAOs3Z,EAAet3Z,OAASs3Z,EAAew6C,QAAU,CACtD5nb,QAAS,SAAiBr/D,GACxB,IAAItW,EACJ,OAA+B,QAAvBA,EAAKsW,EAAKwhZ,UAA4B,IAAP93Z,OAAgB,EAASA,EAAGkoB,KAAK,IAC1E,QACEoN,GACHytb,IAAkB,UAAS,CAC5B7kQ,SAAU03T,IAAiB50F,MAC1B+hC,EACL,CAOO,SAASszD,IAAuBv+G,EAAQw+G,GAC7C,IAAIp1f,EAAK42Y,EAAO,GACd12Y,EAAK02Y,EAAO,GACd,OAAI,UAAQw+G,GAIH,CAFIA,EAAmB,GACrBA,EAAmB,IAKvB,EAFE,UAAIA,EAAoBp1f,IACxB,UAAIo1f,EAAoBl1f,GAEnC,CAMO,SAASm1f,IAAoBve,EAAOwe,GACzC,OAAIA,IAAab,IAAS3mQ,MACP,IAAVgpP,GAA0BjE,IAAW,CAAC,EAAGiiB,IAA2Bhe,GAClEwe,IAAab,IAAS1mQ,OACd,IAAV+oP,GAA0BjE,IAAW,CAAC,EAAGkiB,IAA4Bje,GAEvEA,CACT,CC3DO,SAASye,IAAmBt2f,GACjC,IAAI8wP,EAAO9wP,EAAO8wP,KAChB8xM,EAAiB5ic,EAAO4ic,eACxBjrD,EAAS33Y,EAAO23Y,OAChB5hJ,EAAS/1P,EAAO+1P,OACduiN,GAAa,UAAIviN,EAAQ,UACzBh4D,EAAW+1S,IAAahjP,EAAMilQ,IAAOnzD,GAAkB,OAAS,YACpE,IAAKA,EAAe80C,YAAa,CAC/B,IAAI6e,GAAiB,UAAIzlQ,EAAM,kBAAkB7+P,OAAO0lZ,EAAQ,YAAcA,EAE1E6/F,EAAiBz5S,EAASj1J,aAAa,SACvCrW,EAAQq+N,EAAK/qJ,WAAW49M,aACxB6zL,IACF/kd,EAAQoob,IAAKhD,gBAAgB2/B,EAAgB+e,GAAgB,UAAI/e,EAAgB,CAAC,SAAU,GAAI/kd,KAElG,IAAI0nQ,IAAU,UAAWm+K,GAAcA,IAAc,UAAQA,IAAes7B,IAAW,CAAC,EAAG,CACzFppf,MAAO,CACLqV,OAAQ4yB,EACR6H,KAAM7H,IAEP6lb,MAAiBy9C,IAAOnzD,GAAkB,CAC3Cz7a,OAAQ,SAAgBx9B,EAAGC,EAAGgU,GAC5B,MAAO,CAAC,CAAC,IAAKjU,EAAIiU,EAAGhU,GAAI,CAAC,IAAKD,EAAIiU,EAAGhU,GACxC,EACAY,MAAO,CACL2T,UAAW,EACXP,EAAG,EACHiC,OAAQ4yB,IAER,CACFtL,OAAQ,SACR38B,MAAO,CACL8vC,KAAM7H,KAGV,MAAO,CAAC,CACN5xC,MAAO82Z,EACPh3Z,KAAM41gB,EACNp8N,OAAQA,EACRq8N,YAAY,EACZC,OAAQ3lQ,EAAK1+P,IAEjB,CACA,IAAIo3E,EAAau0H,EAASshQ,qBAC1B,OAAO,UAAO71X,GAAY,SAAU3kC,EAAO//C,GACzC,IAAI4xgB,EAAY77C,IAAKzC,eAAetnN,EAAM/yD,EAAUj5M,EAAMgsQ,EAAK/qJ,WAAYuyW,GAC3E,OAAOzza,EAAM5yC,OAAOykgB,EACtB,GAAG,GACL,EHvDA,SAAWlB,GACTA,EAAe,KAAI,OACnBA,EAAgB,MAAI,OACrB,CAHD,CAGGA,MAAaA,IAAW,CAAC,IAE5B,SAAWC,GACTA,EAAuB,KAAI,OAC3BA,EAAyB,OAAI,QAC9B,CAHD,CAGGA,MAAqBA,IAAmB,CAAC,IIArC,IAAIkB,IAAiB,SAAwB7lQ,EAAM8lQ,GACxD,IAAIh+f,EAAMg+f,EAAY,GACpB/9f,EAAM+9f,EAAY,GAChBxyf,EAAO0sP,EAAK6qL,aAAav3a,KACzByyX,EAAS/lI,EAAK0kM,YACduoC,GAAW,UAAK35d,GACpB,GAAKyyX,GAAWknG,EAAhB,CAGA,IACI7+c,GAAS,SAAY9a,EAAMyyX,EAAOt4Q,OAClCssW,EAAyB3rc,EACzB8+c,GAAa,UAAKnT,GAClB5lE,EAAWtsZ,KAAKwX,MAAMvX,GAAOole,EAAa,IAC1CC,EAAWtle,KAAKwX,MAAMtX,GAAOmle,EAAa,IAE9CltO,EAAK7hQ,OAAO4nY,EAAOt4Q,OAAO,SAAU19H,GAClC,IAAI+iC,EAAMinc,EAAQj5d,QAAQ/Q,GAC1B,QAAO+iC,GAAO,I5JZX,SAAmB/iC,EAAOukB,EAAOmI,GACtC,IAAI3U,EAAMD,KAAKC,IAAIwM,EAAOmI,GACtB1U,EAAMF,KAAKE,IAAIuM,EAAOmI,GAC1B,OAAO1sB,GAAS+X,GAAO/X,GAASgY,CAClC,C4JQsB,CAAU+qB,EAAKqhY,EAAUg5E,EAC7C,IACAntO,EAAK0sM,cAAc9zY,QAAO,EAZ1B,CAaF,ECRO,SAAS,IAAiB1pD,GAC/B,IAAIngB,EACAgkC,EAAU7jB,EAAO6jB,QACjBjuB,EAAKiuB,EAAQgze,gBACfA,OAAyB,IAAPjhgB,EAAgB,GAAKA,EACvC8hZ,EAAS7zX,EAAQ6zX,OACjBC,EAAS9zX,EAAQ8zX,OACfm/G,GAAU,UAAMD,GAAiB,SAAUh3gB,GAC7C,IAAIk+M,EAAWl+M,EAAGk+M,SAClB,OAAOA,IAAa03T,IAAiB50F,WAAqB1rZ,IAAb4oL,CAC/C,IACA,OAAO61S,IAAW,CAAC,EAAG,CACpB/vd,QAAS,CACPgze,gBAAiB,GACjB7tY,MAAOnpI,EAAK,CAAC,EAAGA,EAAG63Z,GAAU,CAE3BrwZ,KAAM,MAENoqH,MAAM,EAENprE,MAAOywd,EAAU,CAAC,EAAG,QAAK3hf,GACzBt1B,GACH4jQ,QAAS,CACP4pM,YAAaypE,EAEb1pE,eAAgB0pE,EAChBnmP,QAAQ,EACRs9J,WAAY,CACV5mb,KAAM,MAGVo0c,aAAeq7D,EAIV,CAAC,CACJzvgB,KAAM,0BALiB,CAAC,CACxBA,KAAM,yBACL,CACDA,KAAM,kBAIR0uQ,OAAQ,CACNlsN,SAAU,cAGb7pC,EAAQ,CACT6jB,QAAS,CAEPg0d,MAAOqe,IAAuBv+G,EAAQ9zX,EAAQg0d,OAE9Cgf,gBAAiB,CAACZ,IAAkBv+G,EAAQC,EAAO,GAAIk/G,EAAgB,IAAKZ,IAAkBv+G,EAAQC,EAAO,GAAIk/G,EAAgB,KAEjIl0D,YAAauzD,IAAuBv+G,EAAQ9zX,EAAQ8+a,eAG1D,CAKA,SAASo0D,IAAY/2f,GACnB,IAAIngB,EAAI+V,EACJwlc,EAAQp7b,EAAOo7b,MAEfy7D,EADQ72f,EAAO6jB,QACWgze,gBAC1BG,EAAW,CACbpif,KAAM,EACNsrH,OAAQ,GAkBV,MAfiB,CAAC,CAChB74I,KAAoC,QAA7BxH,EAAKg3gB,EAAgB,UAAuB,IAAPh3gB,OAAgB,EAASA,EAAGk+M,SACxE3rM,GAAIsjgB,KACH,CACDrugB,KAAoC,QAA7BuO,EAAKihgB,EAAgB,UAAuB,IAAPjhgB,OAAgB,EAASA,EAAGmoM,SACxE3rM,GAAIujgB,MAGK1kgB,MAAK,SAAU4L,EAAG8E,GAC3B,OAAQq1f,EAASn6f,EAAExV,MAAQ2vgB,EAASr1f,EAAEta,KACxC,IAAGP,SAAQ,SAAUosC,GACnB,OAAOkoa,EAAM3nD,WAAW,CACtBrhZ,GAAI8gC,EAAE9gC,IAEV,IACO4N,CACT,CAKA,SAAS,IAASA,GAChB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACf6zX,EAAS7zX,EAAQ6zX,OACnBC,EAAS9zX,EAAQ8zX,OACjBk/G,EAAkBhze,EAAQgze,gBAC1Bzyf,EAAOyf,EAAQzf,KACfq/O,EAAU5/N,EAAQ4/N,QAsCpB,MApCiB,EAAC,WAAS,UAAS,CAAC,EAAGozQ,EAAgB,IAAK,CAC3DzkgB,GAAIsjgB,IACJtxf,KAAMA,EAAK,GACXuzY,OAAQA,EAAO,MACb,WAAS,UAAS,CAAC,EAAGk/G,EAAgB,IAAK,CAC7CzkgB,GAAIujgB,IACJvxf,KAAMA,EAAK,GACXuzY,OAAQA,EAAO,MAEN7wZ,SAAQ,SAAUi3M,GAC3B,IAAI3rM,EAAK2rM,EAAS3rM,GAChBgS,EAAO25L,EAAS35L,KAChBuzY,EAAS55M,EAAS45M,OAEhB8iG,EAAYub,IAASj4T,IAAaA,EAAS08S,UAC3CmE,EAAanE,EAAYhjc,IAAQrzC,EAAMuzY,EAAQD,EAAQC,GAAUvzY,EACjE0sP,EAAO6kP,IAAav6C,EAAOhpc,GAAIgS,KAAKw6e,GACpCzD,EAAiBV,GAAY,UAAS,CACxChyK,UAAW,SAAmB5xH,GAC5B,MAAO,CACLl2N,KAAMk2N,EAAM9Y,EAAS25S,cAAgB//F,EACrC92Z,OAAgC,IAAxB8f,OAAOk2M,EAAM8gM,KAAgB7wY,QAAQ,GAAK,IAEtD,GACC28O,GAAWA,GCrIX,SAA4BzjP,GACjC,IAAI6jB,EAAU7jB,EAAO6jB,QACnBu3a,EAAQp7b,EAAOo7b,MACbwH,EAAiB/+a,EAAQ++a,eACzBn5G,EAAUm5G,EAAen5G,QAC3Bh3T,EAAQmwa,EAAenwa,MACvBild,EAAc90C,EAAe80C,YAC7BoB,EAAal2C,EAAek2C,WAC5Bxqf,EAAUs0c,EAAet0c,QACvB2ogB,EAAY,CAAC,SAAU,UAC3B,GAAIlB,IAAOnzD,GAAiB,CAE1B,IAAKgxC,IAAW,CAAC,EAAG5ze,EAAQ,CAC1B6jB,SAAS,WAAS,WAAS,UAAS,CAAC,EAAG,IAAKA,EAASoze,IAAar0D,GAAiB,CAClFhub,KAAM,CACJ6d,MAAOmwa,EAAenwa,MACtBjoC,MAAOo4c,EAAe1rC,gBAK5B,IAAM08E,IAAW,CAAC,EAAG5ze,EAAQ,CAC3B6jB,SAAS,WAAS,WAAS,UAAS,CAAC,EAAG,IAAKA,EAASoze,IAAar0D,GAAiB,CAClFl5c,MAAOk5c,EAAel5c,QAAS,UAAS,CACtC+oC,MAAOA,EACPtuC,MAAO,UACNy+c,EAAel5c,YAItB,IAAIwtgB,EAAW,GACX5ogB,GACF4ogB,EAASj4gB,KAAK,CACZoI,KAAM,QACN2xZ,QAAS8/F,GAAcpB,EACvBl+F,aAAc,IAGd/vD,GACFytK,EAASj4gB,KAAK,CACZoI,KAAM,UAGN6vgB,EAAS33gB,SACX,UAAK67c,EAAMt9P,YAAY,SAAU5qK,GAC/BA,EAAEolO,OAAO4+P,EACX,GAEJ,CACIlB,IAASpzD,IACX,IAAcgxC,IAAW,CAAC,EAAG5ze,EAAQ,CACnC6jB,SAAS,WAAS,WAAS,UAAS,CAAC,EAAG,IAAKA,EAASoze,IAAar0D,GAAiB,CAClFi2C,WAAYj2C,EAAerpD,iBAC3Br4Z,UAAU,WAAS,UAAS,CAAC,EAAG,IAAK0hd,EAAgB,CAAC,WAAY,CAChEp4c,MAAOo4c,EAAem6C,kBAMhC,CD2EIoa,CAAmB,CACjB/7D,MAAOtqM,EACPjtO,QAAS,CACP6zX,OAAQA,EACRC,OAAQA,EACRl0J,QAAS03P,EACTv4C,eAAgB7kQ,IAGtB,IACO/9L,CACT,CACO,SAAS,IAAMA,GACpB,IAAIngB,EACAu7c,EAAQp7b,EAAOo7b,MAEfy7D,EADQ72f,EAAO6jB,QACWgze,gBAC1BO,GAA0C,QAA3Bv3gB,EAAKu7c,EAAMr1V,kBAA+B,IAAPlmH,OAAgB,EAASA,EAAG+qc,WAAa,GAC3Fxlb,EAAQ,EA0BZ,OAlBAg2b,EAAMp8c,KAAK,eAAe,YACxB,UAAK63gB,GAAiB,SAAUj0D,EAAgBl8c,GAC9C,IAAIoqQ,EAAO6kP,IAAav6C,EAAiB,IAAV10c,EAAcgvgB,IAAiBC,KAC9D,IAAI/yD,EAAenwa,MAAnB,CACA,IAAI4ke,EAAavmQ,EAAKwmM,iBAClB9nb,GAAQ,UAAI6nf,EAAY,CAAC,EAAG,SAAU,UAAW,GACjD5ke,EAAQ2ke,EAAW1xf,MAAMN,EAAOA,EAAQoK,GAAOvd,OAAiB,IAAVvL,EAAc,GAAK0wgB,GAC7EtmQ,EAAKhzD,WAAWh3M,SAAQ,SAAUi3M,GAC5B6kQ,EAAe80C,YACjB35S,EAAStrK,MAAMmwa,EAAe80C,YAAajld,GAE3CsrK,EAAStrK,MAAMA,EAAM,GAEzB,IACArtB,GAASoK,CAXuB,CAYlC,IACA4rb,EAAM1xY,QAAO,EACf,IACO1pD,CACT,CAKO,SAAS,IAAKA,GACnB,IAAIngB,EAAI+V,EACJwlc,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfy1d,EAAQz1d,EAAQy1d,MAClBzB,EAAQh0d,EAAQg0d,MAChBngG,EAAS7zX,EAAQ6zX,OACjBC,EAAS9zX,EAAQ8zX,OAOnB,OANA,MAAO93Z,EAAK,CAAC,GAAM63Z,GAAU4hG,EAAOz5f,EAAG83Z,EAAO,IAAMkgG,EAAM,GAAIh4f,GAA9D,CAAmE+zf,IAAW,CAAC,EAAG5ze,EAAQ,CACxFo7b,MAAOu6C,IAAav6C,EAAOs6D,QAE7B,MAAO9/f,EAAK,CAAC,GAAM8hZ,GAAU4hG,EAAO1jf,EAAG+hZ,EAAO,IAAMkgG,EAAM,GAAIjif,GAA9D,CAAmEg+e,IAAW,CAAC,EAAG5ze,EAAQ,CACxFo7b,MAAOu6C,IAAav6C,EAAOu6D,QAEtB31f,CACT,CAKO,SAAS,IAAKA,GACnB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfyze,EAAW3hB,IAAav6C,EAAOs6D,KAC/B6B,EAAY5hB,IAAav6C,EAAOu6D,KAChCj+G,EAAS7zX,EAAQ6zX,OACnBC,EAAS9zX,EAAQ8zX,OACjB2hG,EAAQz1d,EAAQy1d,MAChBzB,EAAQh0d,EAAQg0d,MAUlB,OATAz8C,EAAM7oM,KAAKmlJ,GAAQ,GACnB0jD,EAAM7oM,KAAKolJ,EAAO,IAAI,GACtByjD,EAAM7oM,KAAKolJ,EAAO,IAAI,GAEtB2/G,EAAS/kQ,KAAKmlJ,EAAQ4hG,GACtBge,EAAS/kQ,KAAKolJ,EAAO,GAAIy+G,IAAoBve,EAAM,GAAI2d,IAAS3mQ,OAEhE0oQ,EAAUhlQ,KAAKmlJ,GAAQ,GACvB6/G,EAAUhlQ,KAAKolJ,EAAO,GAAIy+G,IAAoBve,EAAM,GAAI2d,IAAS1mQ,QAC1D9uP,CACT,CAKO,SAAS,IAAQA,GACtB,IAAIo7b,EAAQp7b,EAAOo7b,MAEf33M,EADQzjP,EAAO6jB,QACG4/N,QAClB6zQ,EAAW3hB,IAAav6C,EAAOs6D,KAC/B6B,EAAY5hB,IAAav6C,EAAOu6D,KAWpC,OATAv6D,EAAM33M,QAAQA,GAGd6zQ,EAAS7zQ,QAAQ,CACfktB,QAAQ,IAEV4mP,EAAU9zQ,QAAQ,CAChBktB,QAAQ,IAEH3wQ,CACT,CAKO,SAAS,IAAYA,GAC1B,IAAIo7b,EAAQp7b,EAAOo7b,MAOnB,OANA,IAAkBw4C,IAAW,CAAC,EAAG5ze,EAAQ,CACvCo7b,MAAOu6C,IAAav6C,EAAOs6D,QAE7B,IAAkB9hB,IAAW,CAAC,EAAG5ze,EAAQ,CACvCo7b,MAAOu6C,IAAav6C,EAAOu6D,QAEtB31f,CACT,CAKO,SAAS,IAAWA,GACzB,IAAIo7b,EAAQp7b,EAAOo7b,MAEfuH,EADQ3ic,EAAO6jB,QACO8+a,YACtBl5b,GAAK,UAAIk5b,EAAa,CAAC,IACvBj5b,GAAK,UAAIi5b,EAAa,CAAC,IAa3B,OAZA,IAAiBl5b,EAAjB,CAAqBmqe,IAAW,CAAC,EAAG5ze,EAAQ,CAC1Co7b,MAAOu6C,IAAav6C,EAAOs6D,KAC3B7xe,QAAS,CACP8+a,YAAal5b,MAGjB,IAAiBC,EAAjB,CAAqBkqe,IAAW,CAAC,EAAG5ze,EAAQ,CAC1Co7b,MAAOu6C,IAAav6C,EAAOu6D,KAC3B9xe,QAAS,CACP8+a,YAAaj5b,MAGV1J,CACT,CACO,SAAS,IAAMA,GACpB,IAAIo7b,EAAQp7b,EAAOo7b,MAYnB,OAPA,IAAYw4C,IAAW,CAAC,EAAG5ze,EAAQ,CACjCo7b,MAAOu6C,IAAav6C,EAAOs6D,QAE7B,IAAY9hB,IAAW,CAAC,EAAG5ze,EAAQ,CACjCo7b,MAAOu6C,IAAav6C,EAAOu6D,QAE7B,IAAY31f,GACLA,CACT,CACO,SAAS,IAAUA,GACxB,IAAIo7b,EAAQp7b,EAAOo7b,MAOnB,OANA,IAAgBw4C,IAAW,CAAC,EAAG5ze,EAAQ,CACrCo7b,MAAOu6C,IAAav6C,EAAOs6D,QAE7B,IAAgB9hB,IAAW,CAAC,EAAG5ze,EAAQ,CACrCo7b,MAAOu6C,IAAav6C,EAAOu6D,QAEtB31f,CACT,CAKO,SAAS,IAAYA,GAC1B,IAAIo7b,EAAQp7b,EAAOo7b,MAEfy8C,EADQ73e,EAAO6jB,QACCg0d,MAapB,OAZA,IAAkBjE,IAAW,CAAC,EAAG5ze,EAAQ,CACvCo7b,MAAOu6C,IAAav6C,EAAOs6D,KAC3B7xe,QAAS,CACPg0d,MAAOA,EAAM,OAGjB,IAAkBjE,IAAW,CAAC,EAAG5ze,EAAQ,CACvCo7b,MAAOu6C,IAAav6C,EAAOu6D,KAC3B9xe,QAAS,CACPg0d,MAAOA,EAAM,OAGV73e,CACT,CAMO,SAAS,IAAOA,GACrB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfkyO,EAASlyO,EAAQkyO,OACnB8gQ,EAAkBhze,EAAQgze,gBAC1Bl/G,EAAS9zX,EAAQ8zX,OACjBvzY,EAAOyf,EAAQzf,KACbkzf,EAAW3hB,IAAav6C,EAAOs6D,KAC/B6B,EAAY5hB,IAAav6C,EAAOu6D,KACpC,IAAe,IAAX5/P,EACFqlM,EAAMrlM,QAAO,QACR,IAAI,UAASA,KAA6B,IAAlBA,EAAO37P,OACpCghc,EAAMrlM,OAAOA,OACR,CACL,IAAIyhQ,GAAe,UAAIX,EAAiB,CAAC,EAAG,UAAW9gQ,GACnD0hQ,GAAgB,UAAIZ,EAAiB,CAAC,EAAG,UAAW9gQ,GAExDqlM,EAAMp8c,KAAK,eAAe,WACxB,IAAI04gB,EAAYtzf,EAAK,GAAG7kB,OAAS+2gB,IAAmB,CAClDxlQ,KAAMwmQ,EACN10D,eAAgBi0D,EAAgB,GAChCl/G,OAAQA,EAAO,GACf5hJ,OAAQyhQ,IACL,GACDG,EAAavzf,EAAK,GAAG7kB,OAAS+2gB,IAAmB,CACnDxlQ,KAAMymQ,EACN30D,eAAgBi0D,EAAgB,GAChCl/G,OAAQA,EAAO,GACf5hJ,OAAQ0hQ,IACL,GACLr8D,EAAMrlM,OAAO69O,IAAW,CAAC,EAAG79O,EAAQ,CAClC37P,QAAQ,EAGRyqC,MAAO6yd,EAAUzlgB,OAAO0lgB,KAE5B,IACId,EAAgB,GAAGnf,aACrB4f,EAASvhQ,OAAO8gQ,EAAgB,GAAGnf,YAAa8f,GAE9CX,EAAgB,GAAGnf,aACrB6f,EAAUxhQ,OAAO8gQ,EAAgB,GAAGnf,YAAa+f,GAGnDr8D,EAAMv8c,GAAG,qBAAqB,SAAUC,GACtC,IAAIiY,GAAiB,UAAIjY,EAAK,wBAAyB,CAAC,GACxD,GAAIiY,GAAkBA,EAAeZ,KAAM,CACzC,IAAItW,EAAKkX,EAAeZ,KACtBoid,EAAU14d,EAAGgB,MACb21gB,EAAa32gB,EAAG22gB,WAChBC,EAAS52gB,EAAG42gB,OAEd,GAAID,EAAY,CAId,IAHU,UAAU7+G,GAAQ,SAAUigH,GACpC,OAAOA,IAAOr/C,CAChB,KACW,EAAG,CACZ,IAAIz6Q,GAAa,UAAI63S,IAAav6C,EAAOq7D,GAAS,eAClD,UAAK34T,GAAY,SAAU5qK,GACzBA,EAAEskX,eAAezgZ,EAAeZ,KAAK8va,UACvC,GACF,CACF,KAAO,CACL,IAAI4xF,GAAe,UAAIz8D,EAAMjC,cAAc,UAAW,eAAgB,KAEtE,UAAKiC,EAAMlnM,OAAO,SAAUpD,GAE1B,IAAIumQ,EAAavmQ,EAAKwmM,kBACtB,UAAK+/D,GAAY,SAAU7/f,GACrBA,EAAM0nB,QAAU1nB,EAAM0nB,OAAOttB,QAAQ2md,IAAY,GACnDznN,EAAK7hQ,OAAOuI,EAAM+mH,OAAO,SAAU19H,GAKjC,QAJoB,UAAKg3gB,GAAc,SAAU1hgB,GAC/C,OAAOA,EAAKtV,QAAUA,CACxB,IAEsBolb,SACxB,GAEJ,IACAm1B,EAAM1xY,QAAO,EACf,GACF,CACF,CACF,GACF,CACA,OAAO1pD,CACT,CAKO,SAAS,IAAOA,GACrB,IAAIo7b,EAAQp7b,EAAOo7b,MAEfzzV,EADQ3nG,EAAO6jB,QACE8jF,OACjB2vZ,EAAW3hB,IAAav6C,EAAOs6D,KAC/B6B,EAAY5hB,IAAav6C,EAAOu6D,KAyBpC,OAxBIhuZ,IAEF2vZ,EAASlgd,OAAO,SAAUuwD,GAE1B2vZ,EAASz4gB,GAAG,uBAAuB,SAAUC,GAC3C,IAAIe,EAAKf,EAAI2K,MACX5I,EAAQhB,EAAGgB,MACX2O,EAAc3P,EAAG2P,aACf,UAAQ3O,EAAO2O,IAGnBmngB,IAAeY,EAAW12gB,EAC5B,IACAu6c,EAAMp8c,KAAK,cAAc,WAEvB,KAAK,UAAU2oH,GAAS,CACtB,IAAIviG,EAAQuiG,EAAOviG,MACjBmI,EAAMo6F,EAAOp6F,KACXnI,GAASmI,IACXopf,IAAeY,EAAW,CAACnyf,EAAOmI,GAEtC,CACF,KAEKvN,CACT,CAMO,SAAS,IAAQA,GAEtB,OAAOivN,IAAK,IAAkB8nS,IAE9B,IAAO,IAAU,IAAM,IAAM,IAAa,IAAS,IAAa,IAAY,IAAW,IAAO,IAAQ,IAF/F9nS,CAEuGjvN,EAChH,EE5d4B,SAAU5f,GAEpC,SAAS03gB,IACP,IAAI34gB,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAGhE,OADAS,EAAMkI,KAAO,YACNlI,CACT,EANA,UAAU24gB,EAAU13gB,GAUpB03gB,EAASl5gB,UAAUw6f,kBAAoB,WACrC,OAAOxF,IAAW,CAAC,EAAGxzf,EAAOxB,UAAUw6f,kBAAkB94f,KAAK5B,MAAO,CACnEm5f,MAAO,GACPn7C,iBAAiB,GAErB,EAIAo7D,EAASl5gB,UAAUs7f,iBAAmB,WACpC,OAAO,GACT,CAEF,CAxB4B,CAwB1Bf,KCrBF,SAAS4e,IAAa/3f,GACpB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfm0e,EAAYn0e,EAAQx8B,KACtB+c,EAAOyf,EAAQzf,KACfk6G,EAASz6F,EAAQy6F,OACjB25Y,EAAYp0e,EAAQ22Z,SAClB09E,GAAe,UAAKr0e,EAAS,CAAC,OAAQ,OAAQ,SAAU,WAAY,OAAQ,OAAQ,UAAW,aAAc,QAAS,SAAU,eAAgB,gBAsBpJ,OApBAu3a,EAAMh3b,KAAKA,GAEXg3b,EAAMhiJ,MAAM4+M,GAAW,WAAS,UAAS,CAAC,EAAGE,GAAe,CAC1D55Y,OAAQA,EACRk8T,SAAU,SAAkB0wE,EAAU9xM,GACpC,IAAI++M,EAAcF,EAAU/M,EAAU9xM,GACtC,GAAI++M,EAAYr6T,YCZf,SAAyBotT,EAAUrne,GACxC,IAAIzf,EAAOyf,EAAQzf,KACjBu4P,EAAa94O,EAAQ84O,WACrB8+L,EAAe53a,EAAQ43a,aACvBkH,EAAc9+a,EAAQ8+a,YACtBv+c,EAAYy/B,EAAQz/B,UACpBq/P,EAAU5/N,EAAQ4/N,QAClBg/D,EAAO5+R,EAAQ4+R,KACfz5L,EAAOnlG,EAAQmlG,KACf80E,EAAaj6K,EAAQi6K,WAEnB15L,GACF8mf,EAAS9mf,KAAKA,GAGhB,IAAIwkO,EAAS,CAAC,EACV65E,IACF,UAAKA,GAAM,SAAUlwD,EAAMh0I,GACzBqqH,EAAOrqH,GAAS,IAAKg0I,EAAMigP,IAC7B,IAEF5pQ,EAASgrQ,IAAW,CAAC,EAAG5qX,EAAM4/G,GAC9BsiR,EAAS1zf,MAAMoxO,GAEX+zB,GACFuuP,EAASvuP,WAAWA,IAGT,IAAT8lD,EACFyoM,EAAS34P,MAAK,IAEd,UAAKkwD,GAAM,SAAUlwD,EAAMh0I,GACzB2sY,EAAS34P,KAAKh0I,EAAOg0I,EACvB,KAEF,UAAKz0D,GAAY,SAAUC,GAEzB,IAAI+M,EAAM,IAAgB,CACxBswP,MAAO8vD,EACPrne,QAASk6K,IACR+M,IAECwtD,EAASv6D,EAASu6D,OAClBA,GACFxtD,EAAI/M,SAASu6D,OAAOA,EAExB,KAEA,UAAKmjM,GAAc,SAAUpY,IACA,IAAvBA,EAAY7oB,OACd0wF,EAAS/sD,kBAAkB9a,EAAYh8b,MAEvC6jgB,EAAS7nE,YAAYA,EAAYh8b,KAAMg8b,EAAYhjc,IAEvD,KAEA,UAAKsid,GAAa,SAAU3U,GAC1Bk9D,EAASl9D,aAAaA,EAAW3mc,OAAM,UAAS,CAAC,EAAG2mc,GACtD,IAEA8nD,IAAiBoV,EAAU9mgB,GACvBq/P,GAEFynQ,EAAS7nE,YAAY,WACrB6nE,EAASznQ,QAAQA,KACI,IAAZA,GACTynQ,EAAS/sD,kBAAkB,UAE/B,CDvDQi6D,CAAgBlN,EAAUiN,OACrB,CACL,IAAInN,EAAOmN,EACPE,EAAcrN,EAAKnne,QAEnBw0e,EAAY50Q,SAEdynQ,EAAS7nE,YAAY,WAEvB0nE,IAAgBC,EAAK3jgB,KAAM6jgB,EAAUmN,EACvC,CACF,KAEKr4f,CACT,CACA,SAAS,IAAUA,GACjB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACf4+R,EAAO5+R,EAAQ4+R,KACjBz5L,EAAOnlG,EAAQmlG,KACfy6H,EAAU5/N,EAAQ4/N,QAClBkZ,EAAa94O,EAAQ84O,WACrB3wK,EAAQnoE,EAAQmoE,MAChB+pK,EAASlyO,EAAQkyO,OACjB0lM,EAAe53a,EAAQ43a,aACvBkH,EAAc9+a,EAAQ8+a,YAEpB/5N,EAAS,CAAC,EA2Cd,OA1CI65E,IACF,UAAKA,GAAM,SAAUlwD,EAAMh0I,GACzBqqH,EAAOrqH,GAAS,IAAKg0I,EAAMigP,IAC7B,IAEF5pQ,EAASgrQ,IAAW,CAAC,EAAG5qX,EAAM4/G,GAC9BwyN,EAAM5jc,MAAMoxO,GAEZwyN,EAAMz+L,WAAWA,GAEZ8lD,GAGH,UAAKA,GAAM,SAAUlwD,EAAMh0I,GACzB68U,EAAM7oM,KAAKh0I,EAAOg0I,EACpB,IAJA6oM,EAAM7oM,MAAK,GAOT9O,GACF23M,EAAM/X,YAAY,WAClB+X,EAAM33M,QAAQA,KACO,IAAZA,GACT23M,EAAM+C,kBAAkB,WAG1B/C,EAAMrlM,OAAOA,GAET/pK,GACFovW,EAAMpvW,MAAMA,IAGd,UAAKyvW,GAAc,SAAUpY,IACA,IAAvBA,EAAY7oB,OACd4gC,EAAM+C,kBAAkB9a,EAAYh8b,MAEpC+zc,EAAM/X,YAAYA,EAAYh8b,KAAMg8b,EAAYhjc,IAEpD,KAEA,UAAKsid,GAAa,SAAU3U,GAC1BoN,EAAMpN,aAAaA,EAAW3mc,OAAM,UAAS,CAAC,EAAG2mc,GACnD,IACOhub,CACT,CAMO,SAAS,IAAQA,GAEtB,OAAOivN,IAAK,IAAO8oS,IAAc,IAA1B9oS,CAAqCjvN,EAC9C,CEpGO,IAAI,IAAkB,CAC3BywC,MAAO,CACLjmD,MAAO,CACLgV,SAAU,GACV86B,KAAM,qBAGVk6b,SAAU,CACRhqe,MAAO,CACLgV,SAAU,GACV86B,KAAM,qBAGVi6b,YAAa,CACX/pe,MAAO,CACLgV,SAAU,GACV86B,KAAM,uBCfa,SAAUl6C,GAEjC,SAASmuO,IACP,IAAIpvO,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAGhE,OADAS,EAAMkI,KAAO,OACNlI,CACT,EANA,UAAUovO,EAAOnuO,GAWjBmuO,EAAM6qR,kBAAoB,WACxB,OAAO,GACT,EAIA7qR,EAAM3vO,UAAUw6f,kBAAoB,WAClC,OAAO7qR,EAAM6qR,mBACf,EAIA7qR,EAAM3vO,UAAUs7f,iBAAmB,WACjC,OAAO,GACT,CAEF,CA5ByB,CA4BvBf,KC1BF,SAAS,IAASn5e,GAChB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfzf,EAAOyf,EAAQzf,KACjB/c,EAAOw8B,EAAQx8B,KACfqwZ,EAAS7zX,EAAQ6zX,OACjBC,EAAS9zX,EAAQ8zX,OACjBkxE,EAAahlc,EAAQglc,WACrBqD,EAAYroc,EAAQqoc,UACpBosC,EAAYz0e,EAAQy0e,UACpBn0gB,EAAQ0/B,EAAQ1/B,MAChBsuC,EAAQ5O,EAAQ4O,MAChBgxN,EAAU5/N,EAAQ4/N,QAClB80Q,EAAe10e,EAAQ00e,aACvBvvY,EAAOnlG,EAAQmlG,KACjBoyU,EAAMh3b,KAAKA,GACX,IAAIw0a,EAAe,UACN,YAATvxb,IACFuxb,EAAe,WAEjB,IAAI/4b,EAAKs4f,IAAkB10P,EAAS,CAACi0J,EAAQC,EAAQkxE,IACnDvqW,EAASz+H,EAAGy+H,OACZmqN,EAAY5oV,EAAG4oV,UAOb+vL,EAAmB,EAqCvB,OApCIF,GAA2B,IAAdA,KACVn0gB,GAAU+ne,EAEJosC,EAAY,GAAKA,EAAY,EACtC50Y,QAAQib,KAAK,4DAEb65X,EAAmBF,EAJnB50Y,QAAQib,KAAK,qEAOjB,IAAgBi1W,IAAW,CAAC,EAAG5ze,EAAQ,CACrC6jB,QAAS,CACPx8B,KAAMuxb,EACNiwC,WAAYA,EACZ8vB,cAAer6X,EACfg6X,WAAYpsB,GAAa,GACzB5gb,WAAOn2B,EACP+6T,QAAS,CACPzsF,QAASglF,EACTtkV,MAAOA,IAAU+ne,EAAY,SAAUusC,GACrC,IAAIl6Y,EAAQn6G,EAAKsL,KAAI,SAAUoR,GAC7B,OAAOA,EAAIorc,EACb,IACIrse,GAAMmpI,aAAmC,EAASA,EAAKkjW,KAAe,CAAC,EACzEtzd,EAAM/Y,EAAG+Y,IACTC,EAAMhZ,EAAGgZ,IAGX,OAFAD,GAAM,UAASA,GAAOA,EAAMD,KAAKC,IAAI7Y,MAAM4Y,KAAM4lH,GACjD1lH,GAAM,UAASA,GAAOA,EAAMF,KAAKE,IAAI9Y,MAAM4Y,KAAM4lH,GAC1C,CAACp6H,IAAQ,UAAIs0gB,EAAOvsC,GAAatzd,IAAQC,EAAMD,GAAM4/f,EAC9D,EAAI,WACF,MAAO,CAACr0gB,EAAO,EAAGq0gB,EACpB,GACA/le,MAAOA,GAASo2b,GAAcztB,EAAMr1V,WAAWilV,eAAejjb,KAAK,KACnEvd,MAAO+tgB,OAINv4f,CACT,CAKA,SAAS,IAAKA,GACZ,IAAIngB,EACAgkC,EAAU7jB,EAAO6jB,QACjBy1d,EAAQz1d,EAAQy1d,MAClBzB,EAAQh0d,EAAQg0d,MAChBngG,EAAS7zX,EAAQ6zX,OACjBC,EAAS9zX,EAAQ8zX,OACnB,OAAO1oL,IAAK,MAAOpvO,EAAK,CAAC,GAAM63Z,GAAU4hG,EAAOz5f,EAAG83Z,GAAUkgG,EAAOh4f,IAA7DovO,CAAmEjvN,EAC5E,CAKA,SAAS,IAAKA,GACZ,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfy1d,EAAQz1d,EAAQy1d,MAClBzB,EAAQh0d,EAAQg0d,MAChBngG,EAAS7zX,EAAQ6zX,OACjBC,EAAS9zX,EAAQ8zX,OAYnB,OAVc,IAAV2hG,EACFl+C,EAAM7oM,KAAKmlJ,GAAQ,GAEnB0jD,EAAM7oM,KAAKmlJ,EAAQ4hG,IAEP,IAAVzB,EACFz8C,EAAM7oM,KAAKolJ,GAAQ,GAEnByjD,EAAM7oM,KAAKolJ,EAAQkgG,GAEd73e,CACT,CAKA,SAAS,IAAOA,GACd,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfkyO,EAASlyO,EAAQkyO,OACnB8yN,EAAahlc,EAAQglc,WACrBqD,EAAYroc,EAAQqoc,UACpB27B,EAAahke,EAAQgke,WAEnBC,GAAwB,IAAX/xP,EAYjB,OAXI8yN,GACFztB,EAAMrlM,OAAO8yN,IAAYi/B,GAAa/xP,GAGpCm2N,GACF9wB,EAAMrlM,OAAOm2N,OAA0B/2c,IAAf0ye,EAA2B9xP,EAAS8xP,GAGzDC,GAAeD,GAClBzsD,EAAMrlM,QAAO,GAER/1P,CACT,CAMA,SAAS,IAAMA,GACb,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfynB,EAAQznB,EAAQynB,MAClBu9a,EAAahlc,EAAQglc,WAEnB9qR,EAAW+1S,IAAa14C,EAAgB,YADnCv3a,EAAQx8B,KACuC,UAAY,WACpE,GAAKikD,GAEE,GAAIu9a,EAAY,CACrB,IAAI9pe,EAAWusD,EAAMvsD,SACnBsB,GAAM,UAAOirD,EAAO,CAAC,aACvByyJ,EAASzyJ,MAAM,CACbgzE,OAAQ,CAACuqW,GACT9pe,SAAUA,EACVsB,IAAK4zf,IAAe5zf,IAExB,OATE09M,EAASzyJ,OAAM,GAUjB,OAAOtrC,CACT,CAKA,SAAS,IAAWA,GAClB,IAAIngB,EAAI+V,EACJwlc,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACf84O,EAAa94O,EAAQ84O,WACvBh9B,EAAU97M,EAAQ87M,QAChBi8M,EAAmBg4D,IAAW,CAChC36d,QAAS,IACR0jP,QAA+CA,EAAa,CAC7Dt1Q,KAAM,SAMR,OAJIs4O,IACsF,QAAvF/pO,EAAyC,QAAnC/V,EAAK+7b,EAAiB3ia,eAA4B,IAAPp5B,OAAgB,EAASA,EAAGZ,YAAyB,IAAP2W,GAAyBA,EAAGtV,KAAKT,EAAI,CAAC,UAAW8/O,KAEnJy7N,EAAMz+L,WAAWi/K,GACV57a,CACT,CAMO,SAAS,IAAQA,GAEtB,OAAOivN,IAAK,IAAO,IAAQ,gBAAiB,IAAM,IAAY,IAAU,IAAM,IAAQ,IAAS,IAAO,MAAc,IAAa7qO,IAAW,IAArI6qO,CAA4IjvN,EACrJ,CC1LO,IAAI,IAAkB4ze,IAAW,CAAC,EAAGuF,IAAKC,oBAAqB,CACpE/xf,KAAM,UACN0uQ,QAAQ,EACR4G,WAAY,CACVt1Q,KAAM,QAERiyf,MAAO,CACLz/E,SAAU,KACVjlZ,KAAM,KACN22J,KAAM,CACJ4uP,WAAW,EACXvlZ,KAAM,CACJpqB,MAAO,CACL2T,UAAW,EACXuqb,SAAU,KACV7ob,OAAQ,cAKhBg4e,MAAO,CACLtsU,KAAM,CACJ4uP,WAAW,EACXvlZ,KAAM,CACJpqB,MAAO,CACL2T,UAAW,EACXuqb,SAAU,KACV7ob,OAAQ,gBC9BlB4rc,IAAc,UAAW,SAAU,CACjCjld,KAAM,SAAcnG,EAAK+P,GACvB,IAAIvQ,EAAI+V,EACJwK,EAAK/f,EAAIsJ,EACT0W,EAAKhgB,EAAIuJ,EACTwV,EAAS1gB,KAAK0sd,YAAY/qd,EAAI+e,QAC9B3S,EAAQkM,KAAKoG,IAAIK,EAAO,GAAGzV,EAAIyV,EAAO,GAAGzV,GACzC+C,EAASiM,KAAKoG,IAAIK,EAAO,GAAGxV,EAAIwV,EAAO,GAAGxV,GAC1Cqha,EAAYtyZ,KAAKC,IAAInM,EAAOC,GAAU,EACtC7L,EAAQ8f,OAAOtgB,EAAI8D,MAAM,IACzBm0gB,EAAY33f,OAAOtgB,EAAI8D,MAAM,IAE7BuoE,EAASu+V,EADKtyZ,KAAK2C,KAAKg9f,GACW3/f,KAAK2C,KAAKza,GAC7Cy5C,GAA6B,QAApBz6C,EAAKQ,EAAImK,aAA0B,IAAP3K,OAAgB,EAASA,EAAGy6C,OAASj6C,EAAIoyC,QAAsC,QAA3B78B,EAAKvV,EAAI+uZ,oBAAiC,IAAPx5Y,OAAgB,EAASA,EAAG0kC,MAU5J,OATclqC,EAAML,SAAS,SAAU,CACrC/K,OAAO,WAAS,WAAS,UAAS,CAChC2E,EAAGyW,EACHxW,EAAGyW,EACHzC,EAAG8uD,GACFrsE,EAAI+uZ,cAAe/uZ,EAAImK,OAAQ,CAChC8vC,KAAMA,KAIZ,ICxBFmxa,IAAc,UAAW,SAAU,CACjCjld,KAAM,SAAcnG,EAAK+P,GACvB,IAAIvQ,EAAI+V,EACJwK,EAAK/f,EAAIsJ,EACT0W,EAAKhgB,EAAIuJ,EACTwV,EAAS1gB,KAAK0sd,YAAY/qd,EAAI+e,QAC9B3S,EAAQkM,KAAKoG,IAAIK,EAAO,GAAGzV,EAAIyV,EAAO,GAAGzV,GACzC+C,EAASiM,KAAKoG,IAAIK,EAAO,GAAGxV,EAAIwV,EAAO,GAAGxV,GAC1C8ugB,EAAgB//f,KAAKC,IAAInM,EAAOC,GAChC7L,EAAQ8f,OAAOtgB,EAAI8D,MAAM,IACzBm0gB,EAAY33f,OAAOtgB,EAAI8D,MAAM,IAE7Bw0gB,EAAaD,EADF//f,KAAK2C,KAAKg9f,GACmB3/f,KAAK2C,KAAKza,GAClDy5C,GAA6B,QAApBz6C,EAAKQ,EAAImK,aAA0B,IAAP3K,OAAgB,EAASA,EAAGy6C,OAASj6C,EAAIoyC,QAAsC,QAA3B78B,EAAKvV,EAAI+uZ,oBAAiC,IAAPx5Y,OAAgB,EAASA,EAAG0kC,MAW5J,OAVclqC,EAAML,SAAS,OAAQ,CACnC/K,OAAO,WAAS,WAAS,UAAS,CAChC2E,EAAGyW,EAAKu4f,EAAa,EACrB/ugB,EAAGyW,EAAKs4f,EAAa,EACrBlsgB,MAAOksgB,EACPjsgB,OAAQisgB,GACPt4gB,EAAI+uZ,cAAe/uZ,EAAImK,OAAQ,CAChC8vC,KAAMA,KAIZ,KCpByB,SAAUl6C,GAEnC,SAASmvR,IACP,IAAIpwR,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAGhE,OADAS,EAAMkI,KAAO,UACNlI,CACT,EANA,UAAUowR,EAASnvR,GAWnBmvR,EAAQ6pO,kBAAoB,WAC1B,OAAO,GACT,EAIA7pO,EAAQ3wR,UAAUs7f,iBAAmB,WACnC,OAAO,GACT,EAIA3qO,EAAQ3wR,UAAUw6f,kBAAoB,WACpC,OAAO7pO,EAAQ6pO,mBACjB,CAEF,CA5B2B,CA4BzBD,KA5BF,ICPIyf,IAAY,SAIT,SAASC,IAAcphd,GAC5B,MAAO,CAAC,CACNA,QAASA,EACTpwD,KAAMuxgB,KAEV,CCCA,SAAS,IAAS54f,GAChB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACf4zB,EAAU5zB,EAAQ4zB,QACpBqhd,EAAcj1e,EAAQi1e,YACtBpsc,EAAS7oC,EAAQ6oC,OACjBkI,EAAU/wC,EAAQ+wC,QAClBvF,EAAOxrC,EAAQwrC,KACflrE,EAAQ0/B,EAAQ1/B,MAChBuld,EAAa7lb,EAAQ6lb,WACrBtld,EAAYy/B,EAAQz/B,UACtBg3c,EAAM5jc,MAAM,CACVigD,QAAS,CACP7+C,IAAK,EACLC,IAAK,KAGTuic,EAAMh3b,KAAKy0f,IAAcphd,IACzB,IAAIhlB,EAAQ5O,EAAQ4O,OAAS2oa,EAAMr1V,WAAW49M,aAgB1C5lH,EADM,IAdF61S,IAAW,CAAC,EAAG5ze,EAAQ,CAC7B6jB,QAAS,CACP6zX,OAAQ,OACRC,OAAQ,UAGRkhG,WAAYnsb,EACZxrE,SAAU,CACRuxC,MAAOA,EACPjoC,MAAOsugB,EACP30gB,MAAO,yBAIS2mN,IACH/M,SAEfuvQ,EAAa,CACf71Z,QAASA,EACTiV,OAAQA,EACRkI,QAASA,EACTvF,KAAMA,EACNlrE,MAAOA,EACPuld,WAAYA,EACZzgZ,WARemyY,EAAMr1V,WAAW98C,WAShC7kE,UAAWA,GAQb,OALA25M,EAASuvQ,WAAWA,GAEpBlS,EAAMrlM,QAAO,GACbqlM,EAAM7oM,MAAK,GACX6oM,EAAM33M,SAAQ,GACPzjP,CACT,CAKO,SAAS,IAAUA,EAAQ8gE,GAChC,IAAIs6X,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACf+iF,EAAY/iF,EAAQ+iF,UACtBnvD,EAAU5zB,EAAQ4zB,QAClBuxE,EAAOnlG,EAAQmlG,KAEjBoyU,EAAMjC,cAAc,cAAclrc,OAAM,GACxC,IAAIy3f,GAAgB,UAAI18X,EAAM,CAAC,UAAW,eAAiB,SAAUr4H,GACnE,MAAO,GAAGsB,QAAY,IAAJtB,GAASmW,QAAQ,GAAI,IACzC,EACIque,EAAavuY,EAAUpxC,QAiB3B,OAhBI2/a,IACFA,EAAavB,IAAW,CAAC,EAAGuB,EAAY,CACtC3/a,SAAU,UAAM2/a,EAAW3/a,SAAgCkwb,EAAcjuc,GAAnC09b,EAAW3/a,WAGrDw/a,IAAgB55C,EAAO,CACrBx0V,WAAW,WAAS,UAAS,CAAC,EAAGA,GAAY,CAC3CpxC,QAAS2/a,IAEXF,SAAU,UACT,CACDx9b,QAASA,IAEPqpB,GACFs6X,EAAM1xY,QAAO,GAER1pD,CACT,CAMO,SAAS,IAAQA,GAEtB,OAAOivN,IAAK,IAAO,IAAQ,eAAgB,IAAU,IAAW,IAAM,CAAC,GAAI7qO,IAAW,IAA/E6qO,CAA4FjvN,EACrG,CCvGO,IAAI,IAAkB,CAC3B0sD,OAAQ,GACRk6C,UAAW,CACTn2D,OAAO,EACP+kB,QAAS,CACPhrE,MAAO,CACL6I,QAAS,IACTmM,SAAU,OACVC,WAAY,OACZE,UAAW,YAIjBi1D,QAAS,CACPG,OAAQ,EACRliD,SAAU,GAEZw8C,KAAM,CACJ7/C,MAAO,EACPjwB,OAAQ,KAEV4E,MAAO,UCbT,SAAS,IAAKyU,EAAKC,EAAKonM,GACtB,OAAOrnM,GAAOC,EAAMD,GAAOqnM,CAC7B,CAqDA,SAAS84T,IAAsBpvgB,EAAGo8f,EAAOiT,EAAYh8f,GACnD,OAAc,IAAV+of,EACK,CAAC,CAACp8f,EAAI,GAAQqvgB,EAAarggB,KAAK+B,GAAK,EAAGsC,EAAY,GAAI,CAACrT,EAAI,GAAQqvgB,EAAarggB,KAAK+B,GAAIsC,GAAY,CAACrT,EAAIqvgB,EAAa,EAAGh8f,IAEvH,IAAV+of,EACK,CAAC,CAACp8f,EAAI,GAAQqvgB,EAAarggB,KAAK+B,GAAK,GAAK/B,KAAK+B,GAAK,GAAIsC,GAAY,CAACrT,EAAI,GAAQqvgB,EAAarggB,KAAK+B,GAAK,GAAK/B,KAAK+B,GAAK,GAAIsC,EAAY,GAAI,CAACrT,EAAIqvgB,EAAa,EAAG,IAE3J,IAAVjT,EACK,CAAC,CAACp8f,EAAI,GAAQqvgB,EAAarggB,KAAK+B,GAAK,GAAIsC,EAAY,GAAI,CAACrT,EAAI,GAAQqvgB,EAAarggB,KAAK+B,IAAKsC,GAAY,CAACrT,EAAIqvgB,EAAa,GAAIh8f,IAEjI,CAAC,CAACrT,EAAI,GAAQqvgB,EAAarggB,KAAK+B,GAAK,GAAK/B,KAAK+B,GAAK,IAAKsC,GAAY,CAACrT,EAAI,GAAQqvgB,EAAarggB,KAAK+B,GAAK,GAAK/B,KAAK+B,GAAK,IAAKsC,EAAY,GAAI,CAACrT,EAAIqvgB,EAAa,EAAG,GAC3K,CAaA,SAASC,IAAiBvsc,EAAQwsc,EAAYF,EAAY9vT,EAAOlsM,EAAWoD,EAAIC,GAK9E,IAJA,IAAIywO,EAAkD,EAAzCn4O,KAAKisJ,KAAK,EAAIl4F,EAASssc,EAAa,GAC7CzzgB,EAAO,GACP4zgB,EAASjwT,EAENiwT,EAAoB,GAAVxggB,KAAK+B,IACpBy+f,GAAoB,EAAVxggB,KAAK+B,GAEjB,KAAOy+f,EAAS,GACdA,GAAoB,EAAVxggB,KAAK+B,GAGjB,IAAIhN,EAAO0S,EAAKssD,GADhBysc,EAASA,EAASxggB,KAAK+B,GAAK,EAAIs+f,GACW,EAATtsc,EAWlCnnE,EAAKtG,KAAK,CAAC,IAAKyO,EAAMwrgB,IAStB,IADA,IAAIE,EAAY,EACPv1f,EAAI,EAAGA,EAAIitO,IAAUjtO,EAAG,CAC/B,IACIw1G,EAAM0/Y,IAAsBl1f,EAAIm1f,EAAa,EADrCn1f,EAAI,EAC2Cm1f,EAAYh8f,GACvEzX,EAAKtG,KAAK,CAAC,IAAKo6H,EAAI,GAAG,GAAK3rH,GAAO2rH,EAAI,GAAG,GAAK6/Y,EAAY7/Y,EAAI,GAAG,GAAK3rH,GAAO2rH,EAAI,GAAG,GAAK6/Y,EAAY7/Y,EAAI,GAAG,GAAK3rH,GAAO2rH,EAAI,GAAG,GAAK6/Y,IACjIr1f,IAAMitO,EAAS,IACjBsoR,EAAY//Y,EAAI,GAAG,GAEvB,CAeA,OAJA9zH,EAAKtG,KAAK,CAAC,IAAKm6gB,EAAY1rgB,EAAM2S,EAAKqsD,IACvCnnE,EAAKtG,KAAK,CAAC,IAAKyO,EAAM2S,EAAKqsD,IAC3BnnE,EAAKtG,KAAK,CAAC,MAEJsG,CACT,CA8HA,IAAI8zgB,IAAqB,CACvBnY,IApEF,SAAav3f,EAAGC,EAAG6C,EAAOC,GACxB,IAAI0f,EAAY,EAAR3f,EAAY,EAChBsX,EAAIpL,KAAKE,IAAIuT,EAAG1f,GAChBkR,EAAIwO,EAAI,EAERhM,EAAKzW,EACL0W,EAAKzC,EAAIhU,EAAIma,EAAI,EACjBsY,EAAQ1jB,KAAKoE,KAAKa,GAAe,KAATmG,EAAInG,KAC5BrS,EAAKoN,KAAKoC,IAAIshB,GAASze,EACvBtS,EAAKqN,KAAKkC,IAAIwhB,GAASze,EAEvBwN,EAAKhL,EAAK9U,EACV+f,EAAKhL,EAAK9U,EAEV+tgB,EAAM3vgB,EACN4vgB,EAAMl5f,EAAKzC,EAAIjF,KAAKoC,IAAIshB,GAC5B,MAAO,aAAapqB,OAAOmZ,EAAI,KAAKnZ,OAAOoZ,EAAI,cAAcpZ,OAAO2L,EAAG,KAAK3L,OAAO2L,EAAG,WAAW3L,OAAOmZ,EAAU,EAAL9f,EAAQ,KAAK2G,OAAOoZ,EAAI,cAAcpZ,OAAOqngB,EAAK,KAAKrngB,OAAOsngB,EAAK,KAAKtngB,OAAOtI,EAAG,KAAKsI,OAAOrI,EAAIma,EAAI,EAAG,cAAc9R,OAAOqngB,EAAK,KAAKrngB,OAAOsngB,EAAK,KAAKtngB,OAAOmZ,EAAI,KAAKnZ,OAAOoZ,EAAI,mBACnS,EAoDElM,OA5CF,SAAgBxV,EAAGC,EAAG6C,EAAOC,GAC3B,IAAI4T,EAAK7T,EAAQ,EACb8T,EAAK7T,EAAS,EAClB,MAAO,aAAauF,OAAOtI,EAAG,KAAKsI,OAAOrI,EAAI2W,EAAI,eAAetO,OAAOqO,EAAI,KAAKrO,OAAOsO,EAAI,aAAatO,OAAY,EAALsO,EAAQ,cAActO,OAAOqO,EAAI,KAAKrO,OAAOsO,EAAI,aAAatO,OAAa,GAALsO,EAAQ,kBAChM,EAyCEqrb,QAjCF,SAAiBjic,EAAGC,EAAG6C,EAAOC,GAC5B,IAAIqX,EAAIrX,EAAS,EACb0f,EAAI3f,EAAQ,EAChB,MAAO,aAAawF,OAAOtI,EAAG,KAAKsI,OAAOrI,EAAIma,EAAG,cAAc9R,OAAOtI,EAAIyiB,EAAG,KAAKna,OAAOrI,EAAG,cAAcqI,OAAOtI,EAAG,KAAKsI,OAAOrI,EAAIma,EAAG,cAAc9R,OAAOtI,EAAIyiB,EAAG,KAAKna,OAAOrI,EAAG,kBACpL,EA8BEkic,SAtBF,SAAkBnic,EAAGC,EAAG6C,EAAOC,GAC7B,IAAIqX,EAAIrX,EAAS,EACb0f,EAAI3f,EAAQ,EAChB,MAAO,aAAawF,OAAOtI,EAAG,KAAKsI,OAAOrI,EAAIma,EAAG,cAAc9R,OAAOtI,EAAIyiB,EAAG,KAAKna,OAAOrI,EAAIma,EAAG,cAAc9R,OAAOtI,EAAIyiB,EAAG,KAAKna,OAAOrI,EAAIma,EAAG,kBACjJ,EAmBE7E,KAXF,SAAcvV,EAAGC,EAAG6C,EAAOC,GACzB,IACIqX,EAAIrX,EAAS,EACb0f,EAAI3f,EAAQ,EAFW,KAG3B,MAAO,aAAawF,OAAOtI,EAAIyiB,EAAG,KAAKna,OAAOrI,EAAIma,EAAG,cAAc9R,OAAOtI,EAAIyiB,EAAG,KAAKna,OAAOrI,EAAIma,EAAG,cAAc9R,OAAOtI,EAAIyiB,EAAG,KAAKna,OAAOrI,EAAIma,EAAG,cAAc9R,OAAOtI,EAAIyiB,EAAG,KAAKna,OAAOrI,EAAIma,EAAG,kBACpM,GAQA0nc,IAAc,WAAY,oBAAqB,CAC7Cjld,KAAM,SAAcnG,EAAKqH,GACvB,IAEI4ld,EAAajtd,EAAIitd,WACjBztd,EAAKytd,EACP71Z,EAAU53D,EAAG43D,QACbwwD,EAAQpoH,EAAG6sE,OACXvoE,EAAQtE,EAAGsE,MACXuld,EAAa7pd,EAAG6pd,WAChBzgZ,EAAappE,EAAGopE,WAChB7kE,EAAYvE,EAAGuE,UACbwwE,EAAU04Y,EAAW14Y,QACrBvF,EAAOi+Y,EAAWj+Y,KAClB0F,EAASH,EAAQG,OACnBliD,EAAW+hD,EAAQ/hD,SACjB2mf,EAAYnqc,EAAK7/C,MACnBwpf,EAAa3pc,EAAK9vE,OAEhBqP,GAAO,UAAOvO,EAAI+e,QAAQ,SAAUxB,EAAGd,GACzC,OAAOnE,KAAKC,IAAIgF,EAAGd,EAAEnT,EACvB,GAAG1G,KACCs5B,EAAS79B,KAAKysd,WAAW,CAC3Bxhd,EArBO,GAsBPC,EArBO,KAuBL6vgB,EAAY/6gB,KAAKysd,WAAW,CAC9Bxhd,EAAGiF,EACHhF,EAzBO,KA2BLsib,EAAY3vZ,EAAO5yB,EAAI8vgB,EAAU9vgB,EAEjC+iE,EAAS/zD,KAAKC,IAAIsza,EAAWutF,EAAU7vgB,EAAIq+G,GAC3CyxZ,EArSR,SAAsBr5gB,GACpB,IAAI2E,GAAQ,UAAS,CACnBqO,QAAS,GACRhT,EAAImK,OAIP,OAHInK,EAAIoyC,QAAUztC,EAAMs1C,OACtBt1C,EAAMs1C,KAAOj6C,EAAIoyC,OAEZztC,CACT,CA6RoB20gB,CAAat5gB,GACzBu5gB,EAzRR,SAAsBv5gB,GACpB,IAKI2E,GAAQ,UAAI,CAAC,EALE,CACjBs1C,KAAM,OACNioC,YAAa,EACbpkE,UAAW,GAEqB9d,EAAImK,OAOtC,OANInK,EAAIoyC,QAAUztC,EAAM6a,SACtB7a,EAAM6a,OAASxf,EAAIoyC,QAEjB,UAASpyC,EAAIgT,WACfrO,EAAMqO,QAAUrO,EAAMizP,cAAgB53P,EAAIgT,SAErCrO,CACT,CA2QuB60gB,EAAa,UAAI,CAAC,EAAGx5gB,EAAKu0E,IACzC4zB,EAAc97B,EAASqI,EAAS,EAEhC+kc,GAD6B,mBAAV31gB,EAAuBA,EAAQk1gB,IAAmBl1gB,IAAUk1gB,IAA2B,QACpF98e,EAAO5yB,EAAG4yB,EAAO3yB,EAAiB,EAAd4+F,EAA+B,EAAdA,GAW/D,GATIkhX,GACFhid,EAAUqI,SAAS,OAAQ,CACzBpP,KAAM,QACNqE,OAAO,UAAS,CACdO,KAAMu0gB,GACLpwD,KAIHjyZ,EAAU,EAAG,CAEf,IAAIsid,EAAQrygB,EAAUyI,SAAS,CAC7BxP,KAAM,UAGJooG,EAAWgxa,EAAMllgB,QAAQ,CAC3BxN,KAAM,OACNrC,MAAO,CACLO,KAAMu0gB,MAjLT,SAAsBnwgB,EAAGC,EAAGk5B,EAAO02e,EAAWE,EAAWtpgB,EAAOuD,EAAM+4D,EAAQssc,EAAY50gB,GAQ/F,IANA,IAAIk2C,EAAOo/d,EAAUp/d,KACnBjnC,EAAUqmgB,EAAUrmgB,QAClB7F,EAAOmG,EAAKhF,UACZlC,EAAQe,EAAKqB,KAAOrB,EAAKoB,KACzBlC,EAASc,EAAKuB,KAAOvB,EAAKsB,KAErB80B,EAAM,EAAGA,EAAM41e,EAAW51e,IAAO,CACxC,IAAIq8K,EAASu5T,GAAa,EAAI,EAAI51e,GAAO41e,EAAY,GAEjDnqc,EAAOj/D,EAAML,SAAS,OAAQ,CAChCpP,KAAM,iBACNqE,MAAO,CAELO,KAAM0zgB,IAAiBvsc,EAAQl/D,EAAKsB,KAAOpC,EAASo2B,EAAOk2e,EAAY,EAAGvsgB,EAAQ,GAElF9C,EAAGC,GACH0wC,KAAMA,EACNjnC,QAAS,IAAK,GAAK,GAAK4sM,GAAU5sM,KAGtC,IAEE,IAAkB,IAAdjP,EAAqB,OACzB,IAAIyL,EAAS,IAAU,CAAC,CAAC,IAAKmpgB,EAAY,KAC1C3pc,EAAKroE,cACLqoE,EAAK75D,QAAQ,CACX3F,OAAQA,GACP,CACDpL,SAAU,IAAK,KAxLR,IAwLkCw7M,GACzCr7M,QAAQ,GAEZ,CAAE,MAAOhC,KAEP8gI,QAAQib,KAAK,kCACf,CACF,CACF,CA+IMq7X,CAAaz9e,EAAO5yB,EAAG4yB,EAAO3yB,EAAG,EAAIvJ,EAAI+e,OAAO,GAAGxV,EAAG4vgB,EAAWE,EAAWK,EAAOhxa,EAAmB,EAATr8B,EAAYssc,EAAY50gB,EACvH,CAoBA,OAlBAsD,EAAUqI,SAAS,OAAQ,CACzBpP,KAAM,WACNqE,MAAO,CACLO,KAAMu0gB,EACNx/d,KAAM,cACNn8B,UAAW42D,EAAoB,EAAXliD,EACpBhT,OAAuB,gBAAfopD,EAA+B,OAASA,KAIpDvhE,EAAUqI,SAAS,OAAQ,CACzBpP,KAAM,OACNqE,OAAO,UAAI40gB,EAAc,CACvBr0gB,KAAMu0gB,EACNx/d,KAAM,cACNn8B,UAAW42D,MAGRrtE,CACT,KC7VwB,SAAUtH,GAElC,SAAS65gB,IACP,IAAI96gB,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAGhE,OADAS,EAAMkI,KAAO,SACNlI,CACT,EANA,UAAU86gB,EAAQ75gB,GAWlB65gB,EAAO7gB,kBAAoB,WACzB,OAAO,GACT,EAIA6gB,EAAOr7gB,UAAUw6f,kBAAoB,WACnC,OAAO6gB,EAAO7gB,mBAChB,EAKA6gB,EAAOr7gB,UAAUw/c,WAAa,SAAU3mZ,GACtC/4D,KAAK08c,MAAMl8c,KAAK+2Z,IAAiBooD,mBAAoB,IAAMpF,SAASv6c,KAAK08c,MAAOnlD,IAAiBooD,mBAAoB,OACrH3/c,KAAKg7f,aAAa,CAChBjic,QAASA,IAEX/4D,KAAK08c,MAAMh3b,KAAKy0f,IAAcphd,IAC9B,IAAU,CACR2jZ,MAAO18c,KAAK08c,MACZv3a,QAASnlC,KAAKmlC,UACb,GACHnlC,KAAK08c,MAAMl8c,KAAK+2Z,IAAiBqoD,kBAAmB,IAAMrF,SAASv6c,KAAK08c,MAAOnlD,IAAiBqoD,kBAAmB,MACrH,EAIA27D,EAAOr7gB,UAAUs7f,iBAAmB,WAClC,OAAO,GACT,CAEF,CA5C0B,CA4CxBf,KChDF,SAAS,IAASn5e,GAChB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfzf,EAAOyf,EAAQzf,KACjB8yZ,EAAYrzY,EAAQqzY,UACpBzkY,EAAQ5O,EAAQ4O,MAChBw3d,EAAepme,EAAQn6B,MACvBwwgB,EAAcr2e,EAAQyjB,KACxB8zZ,EAAMh3b,KAAKA,GAEX,IAAI+5F,EAAUy1Y,IAAW,CAAC,EAAG5ze,EAAQ,CACnC6jB,QAAS,CACPjP,KAAM,CACJpqB,MAAO0sa,EACPzkY,MAAOA,GAET/oC,MAAOuggB,GAAe,UAAS,CAC7Bx3d,MAAOA,GACNw3d,GAAgBA,EACnB3id,KAAM4yd,GAAc,UAAS,CAC3Bzne,MAAOA,GACNyne,GAAeA,EAElB5ud,WAAOn2B,KAIP4wL,EAAS6tS,IAAW,CAAC,EAAGz1Y,EAAS,CACnCt6E,QAAS,CACP4/N,SAAS,KAITm3P,GAAcqP,aAAmD,EAASA,EAAahod,QAAUpe,EAAQoe,MACzGo5c,EAAczH,IAAW,CAAC,EAAGz1Y,EAAS,CACxCt6E,QAAS,CACP4/N,SAAS,EACTxhN,MAAO24c,KAMX,OAHA,IAAKz8Y,GACL,IAAMk9Y,GACN,IAAKt1S,GACE/lM,CACT,CAKA,SAAS,IAAKA,GACZ,IAAIngB,EACAgkC,EAAU7jB,EAAO6jB,QACjBy1d,EAAQz1d,EAAQy1d,MAClBzB,EAAQh0d,EAAQg0d,MAChBngG,EAAS7zX,EAAQ6zX,OACjBC,EAAS9zX,EAAQ8zX,OACnB,OAAO1oL,IAAK,MAAOpvO,EAAK,CAAC,GAAM63Z,GAAU4hG,EAAOz5f,EAAG83Z,GAAUkgG,EAAOh4f,IAA7DovO,CAAmEjvN,EAC5E,CAKA,SAAS2xV,IAAM3xV,GACb,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACf6oC,EAAS7oC,EAAQ6oC,OACnBjsD,EAAaojB,EAAQpjB,WACrBC,EAAWmjB,EAAQnjB,SAMrB,OALA06b,EAAMz+L,WAAW,QAAS,CACxBjwM,OAAQA,EACRjsD,WAAYA,EACZC,SAAUA,IAELV,CACT,CAKA,SAAS,IAAKA,GACZ,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACf6zX,EAAS7zX,EAAQ6zX,OACnB4hG,EAAQz1d,EAAQy1d,MAChB3hG,EAAS9zX,EAAQ8zX,OACjBkgG,EAAQh0d,EAAQg0d,MAGlB,OAFAz8C,EAAM7oM,KAAKmlJ,EAAQ4hG,GACnBl+C,EAAM7oM,KAAKolJ,EAAQkgG,GACZ73e,CACT,CAKA,SAAS,IAAMA,GACb,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfynB,EAAQznB,EAAQynB,MAClBqsW,EAAS9zX,EAAQ8zX,OACf55M,EAAW+1S,IAAa14C,EAAO,QACnC,GAAK9vZ,EAEE,CACL,IAAIvsD,EAAWusD,EAAMvsD,SACnBsB,GAAM,UAAOirD,EAAO,CAAC,aACvByyJ,EAASzyJ,MAAM,CACbgzE,OAAQ,CAACq5R,GACT54Z,SAAUA,EACVsB,IAAK4zf,IAAe5zf,IAExB,MATE09M,EAASzyJ,OAAM,GAUjB,OAAOtrC,CACT,CAMO,SAAS,IAAQA,GAEtB,OAAOivN,IAAK,IAAU,IAAM,IAAO0iI,IAAO,IAAM,IAAQ,IAAS,IAAO,IAAavtW,IAAW,MAAzF6qO,CAAuGjvN,EAChH,CC9HA,IAAIm6f,IAAsC,SAAU/5gB,GAElD,SAAS+5gB,IACP,OAAkB,OAAX/5gB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAyCA,OA5CA,UAAUy7gB,EAAwB/5gB,GAIlC8V,OAAOoxB,eAAe6ye,EAAuBv7gB,UAAW,OAAQ,CAC9D8B,IAAK,WACH,MAAO,eACT,EACA2mC,YAAY,EACZsqB,cAAc,IAEhBwod,EAAuBv7gB,UAAUs3c,gBAAkB,SAAUxsc,GAC3D,IAAI7J,EAAKnB,KAAK+ld,gBACZ9zL,EAAS9wR,EAAG8wR,OACZypP,EAAWv6gB,EAAG4wD,MACZ4pd,EAAYj6gB,EAAOxB,UAAUs3c,gBAAgB51c,KAAK5B,KAAMgL,GAC5D,GAAI2wgB,EAAU96gB,OAAS,EAAG,CACxB,IAAI4jd,EAAazkd,KAAKoyQ,KAAKhzD,WAAW,GAClCs6M,EAAY+qD,EAAW/qD,UACvBkiH,EAAUD,EAAU,GAAG15gB,KACvB45gB,EAAW,GAoBf,OAnBAniH,EAAUtxZ,SAAQ,SAAU6vc,GAC1BA,EAAY7vc,SAAQ,SAAU2d,GAC5B,IACItO,EADQ0kd,IAAK3kB,gBAAgBzxb,EAAG0+b,GACnB,GACjB,IAAKxyL,GAAUx6Q,GAAQA,EAAKxV,OAAS25gB,EAAS,CAC5C,IAAIE,GAAe,UAAMJ,GAAYE,EAAUF,EAC/CG,EAASt7gB,MAAK,WAAS,UAAS,CAAC,EAAGkX,GAAO,CACzCxV,KAAMwV,EAAKs6C,MACXA,MAAO+pd,IAEX,MAAO,GAAI7pP,GAAUx6Q,EAAM,CACrBqkgB,GAAe,UAAMJ,GAAYjkgB,EAAKxV,MAAQ25gB,EAAUF,EAC5DG,EAASt7gB,MAAK,WAAS,UAAS,CAAC,EAAGkX,GAAO,CACzCxV,KAAMwV,EAAKs6C,MACXA,MAAO+pd,IAEX,CACF,GACF,IACOD,CACT,CACA,MAAO,EACT,EACOJ,CACT,CA9C0C,CA8CxC,KAEF3hE,IAA4B,gBAAiB2hE,KAI7C,IAAIM,IAAkC,SAAUr6gB,GAE9C,SAASq6gB,IACP,OAAkB,OAAXr6gB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAqBA,OAxBA,UAAU+7gB,EAAoBr6gB,GAI9Bq6gB,EAAmB77gB,UAAUoK,KAAO,WACvBtK,KAAKmzB,QAAQi/O,KACnBqtM,kBAAkB,UACzB,EACAs8D,EAAmB77gB,UAAUoV,KAAO,WAClC,IAAIvK,EAAQ/K,KAAKmzB,QAAQpoB,MACR/K,KAAKg8gB,uBACXl7D,YAAY,CACrB71c,EAAGF,EAAME,EACTC,EAAGH,EAAMG,GAEb,EACA6wgB,EAAmB77gB,UAAUqV,KAAO,WACjBvV,KAAKg8gB,uBACXj7D,aACb,EACAg7D,EAAmB77gB,UAAU87gB,qBAAuB,WAElD,OADWh8gB,KAAKmzB,QAAQi/O,KACZqoM,cAAc,gBAC5B,EACOshE,CACT,CA1BsC,CA0BpC,KC/EF19E,IAAe,gBAAiB09E,KAChCr3E,IAAoB,gBAAiB,CACnCh+a,MAAO,CAAC,CACNiiF,QAAS,iBACTluE,OAAQ,uBAEV5L,IAAK,CAAC,CACJ85E,QAAS,kBACTluE,OAAQ,yBCLZ,IAAIwhf,IAAqB,SAAUv6gB,GAEjC,SAASu6gB,IACP,IAAIx7gB,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAGhE,OADAS,EAAMkI,KAAO,QACNlI,CACT,CA2DA,OAjEA,UAAUw7gB,EAAOv6gB,GAWjBu6gB,EAAM/7gB,UAAUw/c,WAAa,SAAUh6b,GACrC1lB,KAAKg7f,aAAa,CAChBt1e,KAAMA,IAER1lB,KAAK08c,MAAMgD,WAAWh6b,EACxB,EAIAu2f,EAAM/7gB,UAAUw6f,kBAAoB,WAClC,OAAOxF,IAAW,CAAC,EAAGxzf,EAAOxB,UAAUw6f,kBAAkB94f,KAAK5B,MAAO,CACnE46f,MAAO,CACLhuc,MAAO,CACLu2B,OAAQ,IAEV0pG,KAAM,CACJ32J,KAAM,CACJvtB,KAAM,UAIZwwf,MAAO,CACLtsU,KAAM,CACJ32J,KAAM,CACJvtB,KAAM,YAIZ0uQ,OAAQ,CACNlsN,SAAU,OAEZ45M,QAAS,CACPktB,QAAQ,EACRy8K,gBAAgB,EAChBC,aAAa,EACbpf,WAAY,CACV5mb,KAAM,KACNutB,KAAM,CACJpqB,MAAO,CACLqV,OAAQ,UACR6ob,SAAU,CAAC,KAGfyE,QAAQ,KAIhB,EAIAwtE,EAAM/7gB,UAAUs7f,iBAAmB,WACjC,OAAO,GACT,EACOygB,CACT,CAnEyB,CAmEvBxhB,KCvEK,SAASyhB,IAAYC,EAAUljH,EAAQvzY,GAC5C,IAAI02f,EAAQ12f,EAAKsL,KAAI,SAAUvZ,GAC7B,OAAOA,EAAKwhZ,EACd,IAAG1oZ,QAAO,SAAU0B,GAClB,YAAawkB,IAANxkB,CACT,IACIwpR,EAAW2gP,EAAMv7gB,OAAS,EAAIoZ,KAAKE,IAAI9Y,MAAM4Y,KAAMmigB,GAAS,EAC5DC,EAAepigB,KAAKoG,IAAI87f,GAAY,IACxC,OAAKE,EAGa,IAAX5gP,EAAiB4gP,EAFf5gP,CAGX,CCHA,SAAS,IAASn6Q,GAChB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfr5B,EAAQq5B,EAAQi6d,SAClBrrd,EAAQ5O,EAAQ4O,MAChBgxN,EAAU5/N,EAAQ4/N,QAClBolO,EAAahlc,EAAQglc,WACrBxhe,EAAOw8B,EAAQx8B,KACfqwZ,EAAS7zX,EAAQ6zX,OACjBC,EAAS9zX,EAAQ8zX,OACjBvzY,EAAOyf,EAAQzf,KACfjgB,EAAQ0/B,EAAQ1/B,MAEdupd,EAAc8lC,IAAmBpve,EAAMuzY,GAgC3C,OA/BAyjD,EAAMh3b,KAAKspc,GAgBX,IAfQkmC,IAAW,CAAC,EAAG5ze,EAAQ,CAC7B6jB,QAAS,CACP4/N,QAASA,EACTi0P,YAAa7uB,EACb3ne,SAAU,CACRsJ,MAAOA,EACPioC,MAAOA,EACPtuC,MAAOA,IAAmB,SAATkD,EAAkB,OAAS,aAG9CiyZ,eAAgBz1X,EAAQm6d,YACxB3kG,eAAgBx1X,EAAQo6d,YACxBrF,iBAAkB/0d,EAAQq6d,kBAIjB,SAAT72f,GACF,IAAM,CACJ+zc,MAAOA,EACPv3a,QAAS,CACP6zX,OAAQA,EACRC,OAAQA,EACR+/F,YAAa7uB,EACbn/d,MAAO,CACLvF,MAAO,SACPsuC,MAAOA,MAKRzyB,CACT,CAKO,SAAS,IAAKA,GACnB,IAAIngB,EACAgkC,EAAU7jB,EAAO6jB,QACjB8zX,EAAS9zX,EAAQ8zX,OACnBD,EAAS7zX,EAAQ6zX,OACjBtzY,EAAOyf,EAAQzf,KACfqlV,EAAU5lU,EAAQ4lU,QAClBn7V,EAAUu1B,EAAQv1B,QAClBu6d,EAAahlc,EAAQglc,WACrBgyC,EAAWh3e,EAAQg3e,SACjBG,EAAavxK,IAAYn7V,GAAWu6d,EDtDnC,SAAwBzkd,EAAMszY,EAAQC,GAC3C,IAAIsjH,EAAc,GAWlB,OAVA72f,EAAKtd,SAAQ,SAAUqP,GACrB,IAAImlJ,EAAY2/W,EAAY/ogB,MAAK,SAAUvB,GACzC,OAAOA,EAAE+mZ,KAAYvhZ,EAAKuhZ,EAC5B,IACIp8P,EACFA,EAAUq8P,IAAWxhZ,EAAKwhZ,IAAW,KAErCsjH,EAAYh8gB,MAAK,UAAS,CAAC,EAAGkX,GAElC,IACO8kgB,CACT,CCyCuDC,CAAe92f,EAAMszY,EAAQC,GAAUvzY,EACxFspc,EAAc8lC,IAAmBwnB,EAAYrjH,GACjD,OAAO1oL,IAAK,MAAOpvO,EAAK,CAAC,GAAM83Z,GAAU,CACvC/+Y,IAAK,EACLC,IAAK+hgB,IAAYC,EAAUljH,EAAQ+1D,IAClC7td,IAHIovO,CAGEjvN,EACX,CAKA,SAAS,IAAWA,GAClB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACf6oC,EAAS7oC,EAAQ6oC,OACnB87B,EAAc3kE,EAAQ2kE,YACtB/nF,EAAaojB,EAAQpjB,WACrBC,EAAWmjB,EAAQnjB,SAUrB,OATA06b,EAAMz+L,WAAW,CACft1Q,KAAM,QACNhH,IAAK,CACHqsE,OAAQA,EACR87B,YAAaA,EACb/nF,WAAYA,EACZC,SAAUA,KAEXiqZ,YACI3qZ,CACT,CAKO,SAAS,IAAKA,GACnB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACf6zX,EAAS7zX,EAAQ6zX,OACnB4hG,EAAQz1d,EAAQy1d,MAElB,OADAl+C,EAAM7oM,KAAKmlJ,EAAQ4hG,GACZt5e,CACT,CAKA,SAAS,IAAMA,GACb,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfynB,EAAQznB,EAAQynB,MAClBqsW,EAAS9zX,EAAQ8zX,OACfwjH,EAAmBrnB,IAAa14C,EAAO,YAE3C,GAAK9vZ,EAEE,CACL,IAAIvsD,EAAWusD,EAAMvsD,SACnBsB,GAAM,UAAOirD,EAAO,CAAC,aACvB6vd,EAAiB7vd,MAAM,CACrBgzE,OAAQ,CAACq5R,GACT54Z,SAAUA,EACVsB,KAAK,WAAS,UAAS,CAAC,EAAG4zf,IAAe5zf,IAAO,CAC/CgH,KAAM,WAGZ,MAXE8zgB,EAAiB7vd,OAAM,GAYzB,OAAOtrC,CACT,CAMO,SAAS,IAAQA,GACtB,OAAOivN,IAAK,IAAQ,YAAa,IAAU,IAAM,IAAM,IAAY,IAAa7qO,IAAW,IAAO,IAAS,IAAQ,MAAc,IAA1H6qO,CAAiIjvN,EAC1I,CC5IO,IAAI,IAAkB4ze,IAAW,CAAC,EAAGuF,IAAKC,oBAAqB,CACpE39C,aAAc,CAAC,CACbp0c,KAAM,mBAER0uQ,QAAQ,EACRtS,QAAS,CACP4pM,aAAa,GAEfisD,MAAO,CACL/tU,KAAM,KACNsuP,SAAU,KACVjlZ,KAAM,MAERimf,SAAU,OCXiB,SAAUz6gB,GAErC,SAASg7gB,IACP,IAAIj8gB,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAGhE,OADAS,EAAMkI,KAAO,aACNlI,CACT,EANA,UAAUi8gB,EAAWh7gB,GAOrBg7gB,EAAUhiB,kBAAoB,WAC5B,OAAO,GACT,EAKAgiB,EAAUx8gB,UAAUw/c,WAAa,SAAUh6b,GACzC1lB,KAAKg7f,aAAa,CAChBt1e,KAAMA,IAGR,IAAK,CACHg3b,MAAO18c,KAAK08c,MACZv3a,QAASnlC,KAAKmlC,UAEhBnlC,KAAK08c,MAAMgD,WAAWh6b,EACxB,EAIAg3f,EAAUx8gB,UAAUw6f,kBAAoB,WACtC,OAAOgiB,EAAUhiB,mBACnB,EAIAgiB,EAAUx8gB,UAAUs7f,iBAAmB,WACrC,OAAO,GACT,CAEF,CAvC6B,CAuC3Bf,KCrCF,SAAS,IAASn5e,GAChB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfzf,EAAOyf,EAAQzf,KACjBi3f,EAAcx3e,EAAQw3e,YACtBl3gB,EAAQ0/B,EAAQ1/B,MAChBsuC,EAAQ5O,EAAQ4O,MAalB,OAXA2oa,EAAMh3b,KAAKA,GACX6qN,IAAK,IAALA,CAAe2kR,IAAW,CAAC,EAAG5ze,EAAQ,CACpC6jB,QAAS,CACPi1X,YAAa,EACb53Z,SAAU,CACRsJ,MAAO6wgB,EACP5oe,MAAOA,EACPtuC,MAAOA,OAIN6b,CACT,CAKA,SAAS,IAAMA,GACb,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfynB,EAAQznB,EAAQynB,MAClBosW,EAAS7zX,EAAQ6zX,OACf35M,EAAW+1S,IAAa14C,EAAO,YAEnC,IAAc,IAAV9vZ,EACFyyJ,EAASzyJ,OAAM,QACV,IAAI,UAASA,GAAQ,CAC1B,IAAIvsD,EAAWusD,EAAMvsD,SACnBu/H,EAAShzE,EAAMgzE,OACfj+H,GAAM,UAAOirD,EAAO,CAAC,WAAY,WAC/Bu2B,EAASxhF,EAAIwhF,OACb2lC,EAASnnH,EAAImnH,aAGFryF,IAAX0sD,GAAwBA,GAAU,KACpC2lC,EAASA,GAAS,UAAQA,GAAUA,EAAS,CAACA,GAAU,GACxDnnH,EAAImnH,QAAS,UAAOA,GAAQ,SAAU72G,GACpC,MAAkB,mBAAXA,EAAEtJ,IACX,IACAhH,EAAImnH,OAAOjoH,eAAiBc,EAAImnH,QAElCu2F,EAASzyJ,MAAM,CACbgzE,OAAQA,GAAU,CAACo5R,GACnB34Z,SAAUA,EACVsB,IAAK4zf,IAAe5zf,IAExB,MACE,IAAIkyf,IAAMkB,KAAgB,OAAVnoc,EAAgB,uCAChCyyJ,EAASzyJ,MAAM,CACbgzE,OAAQ,CAACo5R,KAGb,OAAO13Y,CACT,CAKO,SAAS,IAAOA,GACrB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfkyO,EAASlyO,EAAQkyO,OACnB2hP,EAAc7zd,EAAQ6zd,YAMxB,OALe,IAAX3hP,EACFqlM,EAAMrlM,QAAO,GACJ2hP,GACTt8C,EAAMrlM,OAAO2hP,EAAa3hP,GAErB/1P,CACT,CAKA,SAAS,IAAWA,GAClB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACf6oC,EAAS7oC,EAAQ6oC,OACnB87B,EAAc3kE,EAAQ2kE,YACtB/nF,EAAaojB,EAAQpjB,WACrBC,EAAWmjB,EAAQnjB,SAUrB,OATA06b,EAAMz+L,WAAW,CACft1Q,KAAM,QACNhH,IAAK,CACHqsE,OAAQA,EACR87B,YAAaA,EACb/nF,WAAYA,EACZC,SAAUA,KAGPV,CACT,CAKA,SAAS,IAAKA,GACZ,IAAIngB,EACAgkC,EAAU7jB,EAAO6jB,QACjBy1d,EAAQz1d,EAAQy1d,MAClBzB,EAAQh0d,EAAQg0d,MAChBngG,EAAS7zX,EAAQ6zX,OACjBC,EAAS9zX,EAAQ8zX,OACnB,OAAO1oL,IAAK,MAAOpvO,EAAK,CAAC,GAAM63Z,GAAU4hG,EAAOz5f,EAAG83Z,GAAUkgG,EAAOh4f,IAA7DovO,CAAmEjvN,EAC5E,CAKA,SAAS,IAAKA,GACZ,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfy1d,EAAQz1d,EAAQy1d,MAClBzB,EAAQh0d,EAAQg0d,MAChBngG,EAAS7zX,EAAQ6zX,OACjBC,EAAS9zX,EAAQ8zX,OAYnB,OAVK2hG,EAGHl+C,EAAM7oM,KAAKmlJ,EAAQ4hG,GAFnBl+C,EAAM7oM,KAAKmlJ,GAAQ,GAIhBmgG,EAGHz8C,EAAM7oM,KAAKolJ,EAAQkgG,GAFnBz8C,EAAM7oM,KAAKolJ,GAAQ,GAId33Y,CACT,CAMO,SAAS,IAAQA,GAEtBivN,IAAK,IAAQ,eAAgB,IAAU,IAAM,IAAO,IAAY,IAAM,IAAQ,IAAS,IAAa7qO,IAAW,IAAO,MAAc,IAApI6qO,CAA2IjvN,EAC7I,CCrJO,IAAI,IAAkB4ze,IAAW,CAAC,EAAGuF,IAAKC,oBAAqB,CACpEE,OAAO,EACPzB,OAAO,EACP9hP,OAAQ,CACNlsN,SAAU,QACVo+D,MAAO,CAAC,GAEVozZ,YAAa,CACXx7f,OAAQ,OACR1B,UAAW,GAEbmtC,MAAO,CACLk8D,OAAQ,CACNngH,KAAM,mBAGVo8P,QAAS,CACPktB,QAAQ,EACR08K,aAAa,GAEfoO,aAAc,CAAC,CACbp0c,KAAM,oBC1BC,KCIa,SAAUjH,GAEhC,SAASk7gB,IACP,IAAIn8gB,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAGhE,OADAS,EAAMkI,KAAO,OACNlI,CACT,EANA,UAAUm8gB,EAAMl7gB,GAWhBk7gB,EAAKliB,kBAAoB,WACvB,OAAO,GACT,EAKAkiB,EAAK18gB,UAAUw/c,WAAa,SAAUh6b,GACpC1lB,KAAKg7f,aAAa,CAChBt1e,KAAMA,IAER1lB,KAAK08c,MAAMgD,WAAWh6b,EACxB,EAIAk3f,EAAK18gB,UAAUw6f,kBAAoB,WACjC,OAAOkiB,EAAKliB,mBACd,EAIAkiB,EAAK18gB,UAAUs7f,iBAAmB,WAChC,OAAO,GACT,CAEF,CAtCwB,CAsCtBf,KD1CmB,KACV,IAAU,IACVoiB,IAAc,OACdC,IAAgB,QAChBC,IAAgB,QEoCpB,SAASC,IAAanM,EAAOtc,EAAaC,GAC/C,KAAK,UAAQqc,GAAQ,MAAO,GAE5B,IAAIoM,EAAc,GAEd90W,EAzCC,SAAkB0oW,EAAOtc,EAAaC,GAC3C,IAAIrsV,EAAQ,GAWZ,OAVA0oW,EAAMzogB,SAAQ,SAAUlE,GACtB,IAAImtB,EAASntB,EAAEqwf,GACX7rf,EAASxE,EAAEswf,GACVrsV,EAAMhjK,SAASksB,IAClB82I,EAAM5nK,KAAK8wB,GAER82I,EAAMhjK,SAASuD,IAClBy/J,EAAM5nK,KAAKmI,EAEf,IACOy/J,CACT,CA4Bc+0W,CAASrM,EAAOtc,EAAaC,GAErC2oB,EA1BC,SAAmBtM,EAAO1oW,EAAOosV,EAAaC,GACnD,IAAI2oB,EAAc,CAAC,EAUnB,OATAh1W,EAAM//J,SAAQ,SAAU8gJ,GACtBi0X,EAAYj0X,GAAO,CAAC,EACpBif,EAAM//J,SAAQ,SAAUmtB,GACtB4nf,EAAYj0X,GAAK3zH,GAAQ,CAC3B,GACF,IACAs7e,EAAMzogB,SAAQ,SAAU2zC,GACtBohe,EAAYphe,EAAKw4c,IAAcx4c,EAAKy4c,IAAgB,CACtD,IACO2oB,CACT,CAcoBtngB,CAAUg7f,EAAO1oW,EAAOosV,EAAaC,GAEnD4oB,EAAU,CAAC,EAMf,SAASC,EAAIC,GAEXF,EAAQE,GAAW,EACnBn1W,EAAM//J,SAAQ,SAAUs4C,GACtB,GAAkC,GAA9By8d,EAAYG,GAAS58d,GAEvB,GAAqB,GAAjB08d,EAAQ18d,GAEVu8d,EAAY18gB,KAAK,GAAGgT,OAAO+pgB,EAAS,KAAK/pgB,OAAOmtC,QAC3C,KAAsB,GAAlB08d,EAAQ18d,GAEjB,OAEA28d,EAAI38d,EACN,CAEJ,IAEA08d,EAAQE,IAAY,CACtB,CAaA,OApCAn1W,EAAM//J,SAAQ,SAAUs4C,GACtB08d,EAAQ18d,GAAQ,CAClB,IAuBAynH,EAAM//J,SAAQ,SAAUs4C,IAEA,GAAlB08d,EAAQ18d,IAGZ28d,EAAI38d,EACN,IAC2B,IAAvBu8d,EAAYp8gB,QACdmkI,QAAQib,KAAK,gCAAgC1sI,OAAO0pgB,EAAYp8gB,OAAQ,qBAAsBo8gB,GAGzFpM,EAAMtggB,QAAO,SAAUwrC,GAC5B,OAAOkhe,EAAY/8b,WAAU,SAAUh/E,GACrC,OAAOA,IAAM,GAAGqS,OAAOwoC,EAAKw4c,GAAc,KAAKhhf,OAAOwoC,EAAKy4c,GAC7D,IAAK,CACP,GACF,CC3FA,SAAS+oB,IAAYx3f,GACnB,OAAOA,EAAErd,OAAOo+B,KAClB,CAOO,SAAS4iH,IAAQhpG,EAAM9xB,GAC5B,OAAO8xB,EAAK88d,YAAY38gB,OAAS6/C,EAAK5Z,MAAQlY,EAAI,CACpD,CCZO,SAAS,IAAS3jB,GACvB,OAAO,WACL,OAAOA,CACT,CACF,CACO,SAASwygB,IAAMhngB,EAAK8pB,GAEzB,IADA,IAAIrhB,EAAI,EACChe,EAAI,EAAGA,EAAIuV,EAAI5V,OAAQK,IAC9Bge,GAAKqhB,EAAK9pB,EAAIvV,IAEhB,OAAOge,CACT,CAMO,SAASw+f,IAAWjngB,EAAK8pB,GAE9B,IADA,IAAIrhB,GAAK3a,IACArD,EAAI,EAAGA,EAAIuV,EAAI5V,OAAQK,IAC9Bge,EAAIjF,KAAKE,IAAIomB,EAAK9pB,EAAIvV,IAAKge,GAE7B,OAAOA,CACT,CCrBA,SAASy+f,IAAuBx/f,EAAG8E,GACjC,OAAO26f,IAAiBz/f,EAAEkT,OAAQpO,EAAEoO,SAAWlT,EAAEnW,MAAQib,EAAEjb,KAC7D,CACA,SAAS61gB,IAAuB1/f,EAAG8E,GACjC,OAAO26f,IAAiBz/f,EAAEzV,OAAQua,EAAEva,SAAWyV,EAAEnW,MAAQib,EAAEjb,KAC7D,CACA,SAAS41gB,IAAiBz/f,EAAG8E,GAC3B,OAAO9E,EAAEwO,GAAK1J,EAAE0J,EAClB,CACA,SAAS,IAAM5G,GACb,OAAOA,EAAE5jB,KACX,CACA,SAAS,IAAU4jB,GACjB,OAAOA,EAAE/d,KACX,CACA,SAAS81gB,IAAaC,GACpB,OAAOA,EAAM51W,KACf,CACA,SAAS61W,IAAaD,GACpB,OAAOA,EAAM/nP,KACf,CACA,SAAS,IAAKpB,EAAUlhR,GACtB,IAAIgtC,EAAOk0O,EAAS5yR,IAAI0R,GACxB,IAAKgtC,EAAM,MAAM,IAAIzY,MAAM,YAAcv0B,GACzC,OAAOgtC,CACT,CACA,SAASu9d,IAAoB98gB,GAE3B,IADA,IACSR,EAAK,EAAGu9gB,EADL/8gB,EAAGgnK,MACmBxnK,EAAKu9gB,EAAQr9gB,OAAQF,IAAM,CAI3D,IAHA,IAAI+/C,EAAOw9d,EAAQv9gB,GACfgsB,EAAK+zB,EAAK/zB,GACVtK,EAAKsK,EACAzV,EAAK,EAAGC,EAAKupC,EAAK88d,YAAatmgB,EAAKC,EAAGtW,OAAQqW,IAAM,EACxDghL,EAAO/gL,EAAGD,IACTyV,GAAKA,EAAKurK,EAAKnqL,MAAQ,EAC5B4e,GAAMurK,EAAKnqL,KACb,CACA,IAAK,IAAIuwB,EAAK,EAAGC,EAAKmiB,EAAKy9d,YAAa7/e,EAAKC,EAAG19B,OAAQy9B,IAAM,CAC5D,IAAI45J,KAAO35J,EAAGD,IACTjc,GAAKA,EAAK61K,EAAKnqL,MAAQ,EAC5BsU,GAAM61K,EAAKnqL,KACb,CACF,CACF,CACO,SAASqwgB,MACd,IAME/wf,EAGEyZ,EACAv0B,EACA8rgB,EAXA3xf,EAAK,EACPC,EAAK,EACLvK,EAAK,EACLC,EAAK,EACHzV,EAAK,GACLC,EAAK,EAEL6G,EAAK,IACL2gF,EAAQq1D,IAIRye,EAAQ21W,IACR9nP,EAAQgoP,IACRlle,EAAa,EACjB,SAASwle,EAAO9he,GACd,IAAIuhe,EAAQ,CACV51W,MAAOA,EAAM3rH,GACbw5O,MAAOA,EAAMx5O,IAQf,OA0CF,SAA0Br7C,GACxB,IAAIgnK,EAAQhnK,EAAGgnK,MACb6tH,EAAQ70R,EAAG60R,MACb7tH,EAAM//J,SAAQ,SAAUs4C,EAAMxb,GAC5Bwb,EAAK14C,MAAQk9B,EACbwb,EAAK88d,YAAc,GACnB98d,EAAKy9d,YAAc,EACrB,IACA,IAAIvpP,EAAW,IAAI71Q,IAAIopJ,EAAMn3I,KAAI,SAAUjL,GACzC,MAAO,CAACrS,EAAGqS,GAAIA,EACjB,KAUA,GATAiwQ,EAAM5tR,SAAQ,SAAU8vL,EAAMhzJ,GAC5BgzJ,EAAKlwL,MAAQk9B,EACb,IAAI7T,EAAS6mK,EAAK7mK,OAChB3oB,EAASwvL,EAAKxvL,OACM,iBAAX2oB,IAAqBA,EAAS6mK,EAAK7mK,OAAS,IAAKujQ,EAAUvjQ,IAChD,iBAAX3oB,IAAqBA,EAASwvL,EAAKxvL,OAAS,IAAKksR,EAAUlsR,IACtE2oB,EAAOmsf,YAAYj9gB,KAAK23L,GACxBxvL,EAAOy1gB,YAAY59gB,KAAK23L,EAC1B,IACgB,MAAZmmV,EACF,IAAK,IAAI19gB,EAAK,EAAG49gB,EAAUp2W,EAAOxnK,EAAK49gB,EAAQ19gB,OAAQF,IAAM,CAC3D,IAAIuW,EAAKqngB,EAAQ59gB,GACf68gB,EAActmgB,EAAGsmgB,YACjBW,EAAcjngB,EAAGingB,YACnBX,EAAYjrgB,KAAK8rgB,GACjBF,EAAY5rgB,KAAK8rgB,EACnB,CAEJ,CA7EEG,CAAiBT,GA8EnB,SAA2B58gB,GAEzB,IADA,IAAIgnK,EAAQhnK,EAAGgnK,MACNxnK,EAAK,EAAG89gB,EAAUt2W,EAAOxnK,EAAK89gB,EAAQ59gB,OAAQF,IAAM,CAC3D,IAAI+/C,EAAO+9d,EAAQ99gB,GACnB+/C,EAAKv+C,WAA4Bs0B,IAApBiqB,EAAKg+d,WAA2BzkgB,KAAKE,IAAIsjgB,IAAM/8d,EAAK88d,YAAa,KAAQC,IAAM/8d,EAAKy9d,YAAa,MAAUz9d,EAAKg+d,UAC/H,CACF,CAnFEC,CAAkBZ,GAoFpB,SAA2B58gB,GACzB,IAAIgnK,EAAQhnK,EAAGgnK,MACXv5I,EAAIu5I,EAAMtnK,OACV4G,EAAU,IAAIk/B,IAAIwhI,GAClB5yI,EAAO,IAAIoR,IACX17B,EAAI,EACR,KAAOxD,EAAQ68B,MAAM,CAQnB,GAPA78B,EAAQW,SAAQ,SAAUs4C,GACxBA,EAAK5Z,MAAQ77B,EACb,IAAK,IAAItK,EAAK,EAAGQ,EAAKu/C,EAAK88d,YAAa78gB,EAAKQ,EAAGN,OAAQF,IAAM,CAC5D,IAAI+H,EAASvH,EAAGR,GAAI+H,OACpB6sB,EAAK/jB,IAAI9I,EACX,CACF,MACMuC,EAAI2jB,EAAG,MAAM,IAAIqZ,MAAM,iBAC7BxgC,EAAU8tB,EACVA,EAAO,IAAIoR,GACb,CAEA,GAAIG,EAKF,IAJA,IAAI8/O,EAAW3sQ,KAAKE,IAAIujgB,IAAWv1W,GAAO,SAAUpiJ,GAClD,OAAOA,EAAE+gB,KACX,IAAK,EAAG,GACJ4Z,OAAO,EACFx/C,EAAI,EAAGA,EAAIinK,EAAMtnK,OAAQK,KAChCw/C,EAAOynH,EAAMjnK,IACR4lC,MAAQA,EAAMllC,KAAK,KAAM8+C,EAAMkmO,EAG1C,CAhHEg4P,CAAkBb,GAiHpB,SAA4B58gB,GAC1B,IAAIgnK,EAAQhnK,EAAGgnK,MACXv5I,EAAIu5I,EAAMtnK,OACV4G,EAAU,IAAIk/B,IAAIwhI,GAClB5yI,EAAO,IAAIoR,IACX17B,EAAI,EACR,KAAOxD,EAAQ68B,MAAM,CAQnB,GAPA78B,EAAQW,SAAQ,SAAUs4C,GACxBA,EAAK1yC,OAAS/C,EACd,IAAK,IAAItK,EAAK,EAAGQ,EAAKu/C,EAAKy9d,YAAax9gB,EAAKQ,EAAGN,OAAQF,IAAM,CAC5D,IAAI0wB,EAASlwB,EAAGR,GAAI0wB,OACpBkE,EAAK/jB,IAAI6f,EACX,CACF,MACMpmB,EAAI2jB,EAAG,MAAM,IAAIqZ,MAAM,iBAC7BxgC,EAAU8tB,EACVA,EAAO,IAAIoR,GACb,CACF,CAlIEk4e,CAAmBd,GAoLrB,SAA6BA,GAC3B,IAAI1gU,EAlDN,SAA2Bl8M,GASzB,IARA,IAAIgnK,EAAQhnK,EAAGgnK,MACXl9J,EAAIgP,KAAKE,IAAIujgB,IAAWv1W,GAAO,SAAUpiJ,GAC3C,OAAOA,EAAE+gB,KACX,IAAK,EAAG,GACJy4K,GAAMn9L,EAAKsK,EAAK9f,IAAO3B,EAAI,GAC3BoyM,EAAU,IAAI58K,MAAMx1B,GAAG2wC,KAAK,GAAG5qB,KAAI,WACrC,MAAO,EACT,IACSrwB,EAAK,EAAGm+gB,EAAU32W,EAAOxnK,EAAKm+gB,EAAQj+gB,OAAQF,IAAM,CAC3D,IAAI+/C,EAAOo+d,EAAQn+gB,GACfO,EAAI+Y,KAAKE,IAAI,EAAGF,KAAKC,IAAIjP,EAAI,EAAGgP,KAAKwX,MAAM4iE,EAAMzyF,KAAK,KAAM8+C,EAAMz1C,MACtEy1C,EAAKg2S,MAAQx1V,EACbw/C,EAAKh0B,GAAKA,EAAKxrB,EAAIq+M,EACnB7+J,EAAKt+B,GAAKs+B,EAAKh0B,GAAK9f,EAChBywM,EAAQn8M,GAAIm8M,EAAQn8M,GAAGX,KAAKmgD,GAAW28J,EAAQn8M,GAAK,CAACw/C,EAC3D,CACA,GAAInuC,EAAM,IAAK,IAAI2E,EAAK,EAAG6ngB,EAAY1hU,EAASnmM,EAAK6ngB,EAAUl+gB,OAAQqW,IAAM,CAC9D6ngB,EAAU7ngB,GAChB3E,KAAKA,EACd,CACA,OAAO8qM,CACT,CA4BgB2hU,CAAkBjB,GAChC1wf,EAAKpT,KAAKC,IAAIrN,GAAKwV,EAAKsK,IAAO+wf,IAAWrgU,GAAS,SAAUl4L,GAC3D,OAAOA,EAAEtkB,MACX,IAAK,IA9BP,SAAgCw8M,GAI9B,IAHA,IAAImC,EDpMD,SAAoB/oM,EAAK8pB,GAE9B,IADA,IAAIrhB,EAAI3a,IACCrD,EAAI,EAAGA,EAAIuV,EAAI5V,OAAQK,IAC9Bge,EAAIjF,KAAKC,IAAIqmB,EAAK9pB,EAAIvV,IAAKge,GAE7B,OAAOA,CACT,CC8La+/f,CAAW5hU,GAAS,SAAUl4L,GACrC,OAAQ9C,EAAKsK,GAAMxH,EAAEtkB,OAAS,GAAKwsB,GAAMowf,IAAMt4f,EAAG,IACpD,IACSxkB,EAAK,EAAGu+gB,EAAY7hU,EAAS18M,EAAKu+gB,EAAUr+gB,OAAQF,IAAM,CAGjE,IAFA,IAAIw+gB,EAAUD,EAAUv+gB,GACpBuK,EAAIyhB,EACCxrB,EAAK,EAAGi+gB,EAAUD,EAASh+gB,EAAKi+gB,EAAQv+gB,OAAQM,IAAM,EACzDu/C,EAAO0+d,EAAQj+gB,IACdwrB,GAAKzhB,EACVw1C,EAAKr+B,GAAKnX,EAAIw1C,EAAKv+C,MAAQq9M,EAC3Bt0M,EAAIw1C,EAAKr+B,GAAKgL,EACd,IAAK,IAAInW,EAAK,EAAGC,EAAKupC,EAAK88d,YAAatmgB,EAAKC,EAAGtW,OAAQqW,IAAM,CAC5D,IAAIghL,EAAO/gL,EAAGD,GACdghL,EAAKnqL,MAAQmqL,EAAK/1L,MAAQq9M,CAC5B,CACF,CACAt0M,GAAKmX,EAAKnX,EAAImiB,IAAO8xf,EAAQt+gB,OAAS,GACtC,IAAK,IAAIK,EAAI,EAAGA,EAAIi+gB,EAAQt+gB,SAAUK,EAAG,CACvC,IAAIw/C,KAAOy+d,EAAQj+gB,IACdyrB,IAAMzhB,GAAKhK,EAAI,GACpBw/C,EAAKr+B,IAAMnX,GAAKhK,EAAI,EACtB,CACAm+gB,EAAaF,EACf,CACF,CAMEG,CAAuBjiU,GACvB,IAAK,IAAIn8M,EAAI,EAAGA,EAAI43C,IAAc53C,EAAG,CACnC,IAAI4tB,EAAQ7U,KAAK0B,IAAI,IAAMza,GACvBw2O,EAAOz9N,KAAKE,IAAI,EAAI2U,GAAQ5tB,EAAI,GAAK43C,GACzCyme,EAAiBliU,EAASvuL,EAAO4oN,GACjC8nS,EAAiBniU,EAASvuL,EAAO4oN,EACnC,CACF,CA/LE+nS,CAAoB1B,GACpBE,IAAoBF,GACbA,CACT,CA8LA,SAASyB,EAAiBniU,EAASvuL,EAAO4oN,GACxC,IAAK,IAAIx2O,EAAI,EAAG0tB,EAAIyuL,EAAQx8M,OAAQK,EAAI0tB,IAAK1tB,EAAG,CAE9C,IADA,IAAIsgJ,EAAS67D,EAAQn8M,GACZP,EAAK,EAAG++gB,EAAWl+X,EAAQ7gJ,EAAK++gB,EAAS7+gB,OAAQF,IAAM,CAI9D,IAHA,IAAI+H,EAASg3gB,EAAS/+gB,GAClBuK,EAAI,EACJwiB,EAAI,EACCvsB,EAAK,EAAG+V,EAAKxO,EAAOy1gB,YAAah9gB,EAAK+V,EAAGrW,OAAQM,IAAM,CAC9D,IAAIgW,EAAKD,EAAG/V,GACVkwB,EAASla,EAAGka,OAEVpf,EADQkF,EAAGhV,OACIuG,EAAOguV,MAAQrlU,EAAOqlU,OACzCxrV,GAAK+3F,EAAU5xE,EAAQ3oB,GAAUuJ,EACjCyb,GAAKzb,CACP,CACA,GAAMyb,EAAI,EAAV,CACA,IAAIiyf,GAAQz0gB,EAAIwiB,EAAIhlB,EAAOikB,IAAMmC,EACjCpmB,EAAOikB,IAAMgzf,EACbj3gB,EAAO2Z,IAAMs9f,EACbC,EAAiBl3gB,EAJK,CAKxB,MACa+tB,IAATlkB,GAAoBivI,EAAOjvI,KAAKqrgB,KAChCp8X,EAAO3gJ,QAAQg/gB,EAAkBr+X,EAAQk2F,EAC/C,CACF,CAEA,SAAS6nS,EAAiBliU,EAASvuL,EAAO4oN,GACxC,IAAK,IAAwBx2O,EAAhBm8M,EAAQx8M,OAAgB,EAAGK,GAAK,IAAKA,EAAG,CAEnD,IADA,IAAIsgJ,EAAS67D,EAAQn8M,GACZP,EAAK,EAAGm/gB,EAAWt+X,EAAQ7gJ,EAAKm/gB,EAASj/gB,OAAQF,IAAM,CAI9D,IAHA,IAAI0wB,EAASyuf,EAASn/gB,GAClBuK,EAAI,EACJwiB,EAAI,EACCvsB,EAAK,EAAG+V,EAAKma,EAAOmsf,YAAar8gB,EAAK+V,EAAGrW,OAAQM,IAAM,CAC9D,IAAIgW,EAAKD,EAAG/V,GACVuH,EAASyO,EAAGzO,OAEVuJ,EADQkF,EAAGhV,OACIuG,EAAOguV,MAAQrlU,EAAOqlU,OACzCxrV,GAAK60gB,EAAU1uf,EAAQ3oB,GAAUuJ,EACjCyb,GAAKzb,CACP,CACA,GAAMyb,EAAI,EAAV,CACA,IAAIsyf,GAAQ90gB,EAAIwiB,EAAI2D,EAAO1E,IAAMmC,EACjCuC,EAAO1E,IAAMqzf,EACb3uf,EAAOhP,IAAM29f,EACbJ,EAAiBvuf,EAJK,CAKxB,MACaoF,IAATlkB,GAAoBivI,EAAOjvI,KAAKqrgB,KAChCp8X,EAAO3gJ,QAAQg/gB,EAAkBr+X,EAAQk2F,EAC/C,CACF,CACA,SAASmoS,EAAkB13W,EAAOr5I,GAChC,IAAI5tB,EAAIinK,EAAMtnK,QAAU,EACpBwgR,EAAUl5G,EAAMjnK,GACpB++gB,EAA6B93W,EAAOk5G,EAAQ10P,GAAKU,EAAInsB,EAAI,EAAG4tB,GAC5Doxf,EAA6B/3W,EAAOk5G,EAAQh/P,GAAKgL,EAAInsB,EAAI,EAAG4tB,GAC5Dmxf,EAA6B93W,EAAO9lJ,EAAI8lJ,EAAMtnK,OAAS,EAAGiuB,GAC1Doxf,EAA6B/3W,EAAOx7I,EAAI,EAAGmC,EAC7C,CAEA,SAASoxf,EAA6B/3W,EAAOj9J,EAAGhK,EAAG4tB,GACjD,KAAO5tB,EAAIinK,EAAMtnK,SAAUK,EAAG,CAC5B,IAAIw/C,EAAOynH,EAAMjnK,GACbi/gB,GAAQj1gB,EAAIw1C,EAAK/zB,IAAMmC,EACvBqxf,EAAO,OAAMz/d,EAAK/zB,IAAMwzf,EAAMz/d,EAAKr+B,IAAM89f,GAC7Cj1gB,EAAIw1C,EAAKr+B,GAAKgL,CAChB,CACF,CAEA,SAAS4yf,EAA6B93W,EAAOj9J,EAAGhK,EAAG4tB,GACjD,KAAO5tB,GAAK,IAAKA,EAAG,CAClB,IAAIw/C,EAAOynH,EAAMjnK,GACbk/gB,GAAQ1/d,EAAKr+B,GAAKnX,GAAK4jB,EACvBsxf,EAAO,OAAM1/d,EAAK/zB,IAAMyzf,EAAM1/d,EAAKr+B,IAAM+9f,GAC7Cl1gB,EAAIw1C,EAAK/zB,GAAKU,CAChB,CACF,CACA,SAASuyf,EAAiBz+gB,GACxB,IAAIq8gB,EAAcr8gB,EAAGq8gB,YACnBW,EAAch9gB,EAAGg9gB,YACnB,QAAiB1nf,IAAb4nf,EAAwB,CAC1B,IAAK,IAAI19gB,EAAK,EAAG0/gB,EAAgBlC,EAAax9gB,EAAK0/gB,EAAcx/gB,OAAQF,IAAM,CACzD0/gB,EAAc1/gB,GAAI0wB,OAAOmsf,YAC/BjrgB,KAAKsrgB,IACrB,CACA,IAAK,IAAI3mgB,EAAK,EAAGopgB,EAAgB9C,EAAatmgB,EAAKopgB,EAAcz/gB,OAAQqW,IAAM,CACzDopgB,EAAcppgB,GAAIxO,OAAOy1gB,YAC/B5rgB,KAAKorgB,IACrB,CACF,CACF,CACA,SAAS0B,EAAal3W,GACpB,QAAiB1xI,IAAb4nf,EACF,IAAK,IAAI19gB,EAAK,EAAG4/gB,EAAUp4W,EAAOxnK,EAAK4/gB,EAAQ1/gB,OAAQF,IAAM,CAC3D,IAAIQ,EAAKo/gB,EAAQ5/gB,GACf68gB,EAAcr8gB,EAAGq8gB,YACjBW,EAAch9gB,EAAGg9gB,YACnBX,EAAYjrgB,KAAKsrgB,KACjBM,EAAY5rgB,KAAKorgB,IACnB,CAEJ,CAEA,SAAS16a,EAAU5xE,EAAQ3oB,GAEzB,IADA,IAAIwC,EAAImmB,EAAO1E,IAAM0E,EAAOmsf,YAAY38gB,OAAS,GAAKwsB,EAAK,EAClD1sB,EAAK,EAAGQ,EAAKkwB,EAAOmsf,YAAa78gB,EAAKQ,EAAGN,OAAQF,IAAM,CAC9D,IAAIuW,EAAK/V,EAAGR,GACV+/C,EAAOxpC,EAAGxO,OACVqF,EAAQmJ,EAAGnJ,MACb,GAAI2yC,IAASh4C,EAAQ,MACrBwC,GAAK6C,EAAQsf,CACf,CACA,IAAK,IAAIlW,EAAK,EAAGmnB,EAAK51B,EAAOy1gB,YAAahngB,EAAKmnB,EAAGz9B,OAAQsW,IAAM,CAC9D,IAAIonB,EAAKD,EAAGnnB,GACVupC,EAAOniB,EAAGlN,OACVtjB,EAAQwwB,EAAGxwB,MACb,GAAI2yC,IAASrvB,EAAQ,MACrBnmB,GAAK6C,CACP,CACA,OAAO7C,CACT,CAEA,SAAS60gB,EAAU1uf,EAAQ3oB,GAEzB,IADA,IAAIwC,EAAIxC,EAAOikB,IAAMjkB,EAAOy1gB,YAAYt9gB,OAAS,GAAKwsB,EAAK,EAClD1sB,EAAK,EAAGQ,EAAKuH,EAAOy1gB,YAAax9gB,EAAKQ,EAAGN,OAAQF,IAAM,CAC9D,IAAIuW,EAAK/V,EAAGR,GACV+/C,EAAOxpC,EAAGma,OACVtjB,EAAQmJ,EAAGnJ,MACb,GAAI2yC,IAASrvB,EAAQ,MACrBnmB,GAAK6C,EAAQsf,CACf,CACA,IAAK,IAAIlW,EAAK,EAAGmnB,EAAKjN,EAAOmsf,YAAarmgB,EAAKmnB,EAAGz9B,OAAQsW,IAAM,CAC9D,IAAIonB,EAAKD,EAAGnnB,GACVupC,EAAOniB,EAAG71B,OACVqF,EAAQwwB,EAAGxwB,MACb,GAAI2yC,IAASh4C,EAAQ,MACrBwC,GAAK6C,CACP,CACA,OAAO7C,CACT,CACA,OAzUAozgB,EAAO94gB,OAAS,SAAUu4gB,GAExB,OADAE,IAAoBF,GACbA,CACT,EACAO,EAAOzpP,OAAS,SAAUnuP,GACxB,OAAO9lC,UAAUC,QAAU6S,EAAkB,mBAANgzB,EAAmBA,EAAI,IAASA,GAAI43e,GAAU5qgB,CACvF,EACA4qgB,EAAOkC,UAAY,SAAU95e,GAC3B,OAAO9lC,UAAUC,QAAUwzF,EAAqB,mBAAN3tD,EAAmBA,EAAI,IAASA,GAAI43e,GAAUjqb,CAC1F,EACAiqb,EAAOmC,UAAY,SAAU/5e,GAC3B,OAAO9lC,UAAUC,QAAUimC,EAAkCJ,EAAO43e,GAAUx3e,CAChF,EACAw3e,EAAOoC,SAAW,SAAUh6e,GAC1B,OAAO9lC,UAAUC,QAAU0R,EAAOm0B,EAAG43e,GAAU/rgB,CACjD,EACA+rgB,EAAOqC,UAAY,SAAUj6e,GAC3B,OAAO9lC,UAAUC,QAAU+L,GAAM85B,EAAG43e,GAAU1xgB,CAChD,EACA0xgB,EAAOsC,YAAc,SAAUl6e,GAC7B,OAAO9lC,UAAUC,QAAUgM,EAAKwgB,GAAMqZ,EAAG43e,GAAUzxgB,CACrD,EACAyxgB,EAAOn2W,MAAQ,SAAUzhI,GACvB,OAAO9lC,UAAUC,QAAUsnK,EAAqB,mBAANzhI,EAAmBA,EAAI,IAASA,GAAI43e,GAAUn2W,CAC1F,EACAm2W,EAAOtoP,MAAQ,SAAUtvP,GACvB,OAAO9lC,UAAUC,QAAUm1R,EAAqB,mBAANtvP,EAAmBA,EAAI,IAASA,GAAI43e,GAAUtoP,CAC1F,EACAsoP,EAAOD,SAAW,SAAU33e,GAC1B,OAAO9lC,UAAUC,QAAUw9gB,EAAW33e,EAAG43e,GAAUD,CACrD,EACAC,EAAOh6e,KAAO,SAAUoC,GACtB,OAAO9lC,UAAUC,QAAU6rB,EAAKC,EAAK,EAAGvK,GAAMskB,EAAE,GAAIrkB,GAAMqkB,EAAE,GAAI43e,GAAU,CAACl8f,EAAKsK,EAAIrK,EAAKsK,EAC3F,EACA2xf,EAAOjyT,OAAS,SAAU3lL,GACxB,OAAO9lC,UAAUC,QAAU6rB,GAAMga,EAAE,GAAG,GAAItkB,GAAMskB,EAAE,GAAG,GAAI/Z,GAAM+Z,EAAE,GAAG,GAAIrkB,GAAMqkB,EAAE,GAAG,GAAI43e,GAAU,CAAC,CAAC5xf,EAAIC,GAAK,CAACvK,EAAIC,GACnH,EACAi8f,EAAOxle,WAAa,SAAUpS,GAC5B,OAAO9lC,UAAUC,QAAUi4C,GAAcpS,EAAG43e,GAAUxle,CACxD,EAkSOwle,CACT,CCnZA,IAAIuC,IAAe,CACjB7xgB,KHCK,SAAc0xC,GACnB,OAAOA,EAAK5Z,KACd,EGFEn0B,MHGK,SAAe+tC,EAAM9xB,GAC1B,OAAOA,EAAI,EAAI8xB,EAAK1yC,MACtB,EGJE6vB,OHQK,SAAgB6iB,GACrB,OAAOA,EAAKy9d,YAAYt9gB,OAAS6/C,EAAK5Z,MAAQ4Z,EAAK88d,YAAY38gB,QAAS,SAAM6/C,EAAK88d,YAAaD,KAAe,EAAI,CACrH,EGTE7zX,QAASA,KAKP,IAAkB,CACpBmrI,OAAQ,SAAgBn0O,GACtB,OAAOA,EAAK14C,KACd,EACAw4gB,UAAW,UACXG,UAAW,KACXC,YAAa,IACbF,cAAUjqf,GAoBL,SAASqqf,IAAaC,EAAqBr7f,GAChD,IAAIyf,EAVC,SAA2B47e,GAChC,OAAO,UAAO,CAAC,EAAG,IAAiBA,EACrC,CAQgB,CAAkBA,GAC5BlsP,EAAS1vP,EAAQ0vP,OACnB6rP,EAAWv7e,EAAQu7e,SACnBF,EAAYr7e,EAAQq7e,UACpBG,EAAYx7e,EAAQw7e,UACpBC,EAAcz7e,EAAQy7e,YACtBH,EAAYt7e,EAAQs7e,UAClBO,EAAkB,MAGrBN,SAASA,GAAUC,UAAUA,GAAWC,YAAYA,GAAaH,UAAUA,GAAWD,UAxBlF,SAA8BA,GAEnC,QADW,UAASA,GAAaK,IAAaL,IAAa,UAAWA,GAAaA,EAAY,OAChF92X,GACjB,CAqBmGu3X,CAAqBT,IAAYn0T,OAAO,CAAC,CAAC,EAAG,GAAI,CAAC,EAAG,KAAKwoE,OAAOA,GAE9JqsP,EAAaF,EAAgBt7f,GAE7ByiJ,EAAQ+4W,EAAW/4W,MAAMn3I,KAAI,SAAU0vB,GACzC,IAAIh0B,EAAKg0B,EAAKh0B,GACZtK,EAAKs+B,EAAKt+B,GACVuK,EAAK+zB,EAAK/zB,GACVtK,EAAKq+B,EAAKr+B,GAQZ,OAFAq+B,EAAKz1C,EAAI,CAACyhB,EAAItK,EAAIA,EAAIsK,GACtBg0B,EAAKx1C,EAAI,CAACyhB,EAAIA,EAAItK,EAAIA,GACfq+B,CACT,IAAGnwC,QAAO,SAAUmwC,GAClB,OAAqB,OAAdA,EAAKz+C,IACd,IACI+zR,EAAQkrP,EAAWlrP,MAAMhlQ,KAAI,SAAU+qB,GACzC,IAAI1qB,EAAS0qB,EAAK1qB,OAChB3oB,EAASqzC,EAAKrzC,OACZ6/N,EAAKl3M,EAAOjP,GACZo1P,EAAK9uQ,EAAOgkB,GAChBqvB,EAAK9wC,EAAI,CAACs9N,EAAIA,EAAIivC,EAAIA,GACtB,IAAIr0L,EAASpnC,EAAKhuC,MAAQ,EAE1B,OADAguC,EAAK7wC,EAAI,CAAC6wC,EAAKpvB,GAAKw2D,EAAQpnC,EAAKpvB,GAAKw2D,EAAQpnC,EAAK15B,GAAK8gE,EAAQpnC,EAAK15B,GAAK8gE,GACnEpnC,CACT,IAAGxrC,QAAO,SAAUwrC,GAClB,IAAI1qB,EAAS0qB,EAAK1qB,OAChB3oB,EAASqzC,EAAKrzC,OAChB,OAAuB,OAAhB2oB,EAAOpvB,MAAiC,OAAhByG,EAAOzG,IACxC,IACA,MAAO,CACLkmK,MAAOA,EACP6tH,MAAOA,EAEX,CC1EO,SAASmrP,IAAkBR,EAAWtQ,EAAgBtigB,GAC3D,OAAOynf,IAAamrB,GAAaA,EAAY5ygB,EAAQsigB,CACvD,CACO,SAAS+Q,IAAoBR,EAAatQ,EAAkBtigB,GACjE,OAAOwnf,IAAaorB,GAAeA,EAAc5ygB,EAASsigB,CAC5D,CAOO,SAAS+Q,IAAqBl8e,EAASp3B,EAAOC,GACnD,IAcIszgB,EAdAC,EAAWp8e,EAAQo8e,SACrB77f,EAAOyf,EAAQzf,KACf6ue,EAAcpvd,EAAQovd,YACtBC,EAAcrvd,EAAQqvd,YACtBC,EAActvd,EAAQsvd,YACtB+rB,EAAYr7e,EAAQq7e,UACpBE,EAAWv7e,EAAQu7e,SACnBE,EAAcz7e,EAAQy7e,YACtBtQ,EAAmBnre,EAAQmre,iBAC3BqQ,EAAYx7e,EAAQw7e,UACpBtQ,EAAiBlre,EAAQkre,eACzBoQ,EAAYt7e,EAAQs7e,UACpBt/gB,EAAKgkC,EAAQuvd,UACbA,OAAmB,IAAPvzf,EAAgB,GAAKA,EAGjCmghB,EAhCJ,SAAoBC,GAClB,MAAoB,cAAbA,CACT,CA6BOC,CAAWD,GAGU77f,EAFA4ue,IAA4B0oB,IAAat3f,EAAM6ue,EAAaC,GAAcD,EAAaC,EAAaC,EAAaC,GAK3I,IAAIx9e,EAAK4pgB,IAAa,CAClBN,UAAWA,EACXI,YAAaQ,IAAoBR,EAAatQ,EAAkBtigB,GAChE2ygB,UAAWQ,IAAkBR,EAAWtQ,EAAgBtigB,GACxD2ygB,SAAUA,EACVD,UAAWA,GACVa,GACHn5W,EAAQjxJ,EAAGixJ,MACX6tH,EAAQ9+Q,EAAG8+Q,MAEb,MAAO,CACL7tH,MAAOA,EAAMn3I,KAAI,SAAU0vB,GACzB,OAAO,WAAS,UAAS,CAAC,EAAG,IAAKA,GAAM,UAAc,CAAC,IAAK,IAAK,QAASg0c,GAAW,KAAS,CAC5Foe,QAAQ,GAEZ,IACAjC,MAAO76O,EAAMhlQ,KAAI,SAAUknK,GACzB,OAAO,WAAS,UAAS,CACvB7mK,OAAQ6mK,EAAK7mK,OAAOpvB,KACpByG,OAAQwvL,EAAKxvL,OAAOzG,KACpBA,KAAMi2L,EAAK7mK,OAAOpvB,MAAQi2L,EAAKxvL,OAAOzG,MACrC,IAAKi2L,GAAM,UAAc,CAAC,IAAK,IAAK,SAAUw8T,GAAW,KAAS,CACnEoe,QAAQ,GAEZ,IAEJ,CC7DA,SAAS,IAAexxf,GACtB,IACIngB,EADUmgB,EAAO6jB,QACJuvd,UACfA,OAAmB,IAAPvzf,EAAgB,GAAKA,EACnC,OAAO+zf,IAAW,CAAC,EAAG,CACpB/vd,QAAS,CACP4/N,QAAS,CACPnlI,QAAQ,WAAK,UAAc,CAAC,OAAQ,SAAU,SAAU,QAAS,UAAW80X,GAAW,KAEzF9nc,MAAO,CACLgzE,QAAQ,WAAK,UAAc,CAAC,IAAK,QAAS80X,GAAW,OAGxDpze,EACL,CAKA,SAAS,IAASA,GAChB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACf4O,EAAQ5O,EAAQ4O,MAClBm6B,EAAY/oC,EAAQ+oC,UACpB0kc,EAAYzte,EAAQyte,UACpBhmd,EAAQznB,EAAQynB,MAChBm4M,EAAU5/N,EAAQ4/N,QAClB08Q,EAAYt8e,EAAQs8e,UACpBC,EAAYv8e,EAAQu8e,UACpBvghB,EAAKgkC,EAAQuvd,UACbA,OAAmB,IAAPvzf,EAAgB,GAAKA,EAEnCu7c,EAAMrlM,QAAO,GACbqlM,EAAM33M,QAAQA,GACd23M,EAAM7oM,MAAK,GAEX6oM,EAAMz+L,aAAah9B,QAAQ,KAG3B,IAAI/pO,EAAKmqgB,IAAqBl8e,EAASu3a,EAAM3uc,MAAO2uc,EAAM1uc,QACxDm6J,EAAQjxJ,EAAGixJ,MACX0oW,EAAQ35f,EAAG25f,MAETuC,EAAW12D,EAAM3nD,WAAW,CAC9BrhZ,GAAIqpgB,MAEN3J,EAAS1tf,KAAKmrf,GACd,IAAK,CACHn0D,MAAO02D,EAEPjue,QAAS,CACP6zX,OAAQ,IACRC,OAAQ,IACR+/F,YAAa6jB,IACbnoB,WAAW,UAAc,CAAC,SAAU,UAAWA,GAAW,GAC1D34c,KAAM,CACJhI,MAAOA,EACPjoC,MAAO8mgB,EACPntgB,MAAO,OAETs/P,QAASA,EACTxhN,MAAOm+d,KAGX,IAAIxO,EAAWx2D,EAAM3nD,WAAW,CAC9BrhZ,GAAIopgB,MA0CN,OAxCA5J,EAASxtf,KAAKyiJ,GACd,IAAQ,CACNu0S,MAAOw2D,EACP/te,QAAS,CACP6zX,OAAQ,IACRC,OAAQ,IACR+/F,YAAa6jB,IACbj9T,QAAS,CACP7rK,MAAOA,EACPjoC,MAAOoiE,GAETthB,MAAOA,EACPm4M,QAASA,EACTxhN,MAAOk+d,KAGX/kE,EAAM/X,YAAY,kBAElB+X,EAAM5jc,MAAM,CACV7N,EAAG,CACD8nH,MAAM,EACNwxG,MAAM,EACNrqN,IAAK,EACLC,IAAK,EACLqrZ,SAAU,EACVC,SAAU,GAEZv6Z,EAAG,CACD6nH,MAAM,EACNwxG,MAAM,EACNrqN,IAAK,EACLC,IAAK,EACLqrZ,SAAU,EACVC,SAAU,GAEZxja,KAAM,CACJ8wH,KAAM,QACNpqH,KAAM,SAGH2Y,CACT,CAKO,SAAS,IAAUA,GACxB,IAAIo7b,EAAQp7b,EAAOo7b,MAKnB,OADA06C,IAAiB16C,EAHLp7b,EAAO6jB,QACKz/B,WACP,WAAc,UAAc,GAAIg3c,EAAMlnM,MAAM,GAAGp2D,YAAY,GAAOs9P,EAAMlnM,MAAM,GAAGp2D,YAAY,IAEvG99L,CACT,CAKO,SAASqggB,IAAcrggB,GAC5B,IAAIo7b,EAAQp7b,EAAOo7b,MAGfklE,EAAmB,wBAMvB,OARYtggB,EAAO6jB,QACSw8e,cAG1BjlE,EAAM/X,YAAYi9E,GAElBllE,EAAM+C,kBAAkBmiE,GAEnBtggB,CACT,CAKA,SAAS,IAAYA,GACnB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfhkC,EAAKgkC,EAAQ43a,aACfA,OAAsB,IAAP57c,EAAgB,GAAKA,EAClC0ghB,EAAmB,GAAGtugB,OAAOwpc,EAAc53a,EAAQ08e,kBAAoB,IACvEC,EAAmB,GAAGvugB,OAAOwpc,EAAc53a,EAAQ28e,kBAAoB,IACvE5O,EAAWjc,IAAav6C,EAAOogE,KAC/B1J,EAAWnc,IAAav6C,EAAOqgE,KAenC,OAdA8E,EAAiBz5gB,SAAQ,SAAUlH,IACwB,KAApDA,aAA6B,EAASA,EAAE46a,QAC3Co3F,EAASzzD,kBAAkBv+c,EAAEyH,MAE7BuqgB,EAASvuE,YAAYzjc,EAAEyH,KAAMzH,EAAES,KAAO,CAAC,EAE3C,IACAmghB,EAAiB15gB,SAAQ,SAAUlH,IACwB,KAApDA,aAA6B,EAASA,EAAE46a,QAC3Cs3F,EAAS3zD,kBAAkBv+c,EAAEyH,MAE7ByqgB,EAASzuE,YAAYzjc,EAAEyH,KAAMzH,EAAES,KAAO,CAAC,EAE3C,IACO2f,CACT,CAMO,SAAS,IAAQA,GAEtB,OAAOivN,IAAK,IAAgB,IAAU,IAAaoxS,IAAe,IAAW,IAAtEpxS,CAELjvN,EACJ,CCvLA,IAAIyggB,IAAoC,SAAUrghB,GAEhD,SAASqghB,IACP,IAAIthhB,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAKhE,OADAS,EAAMuhhB,YAAa,EACZvhhB,CACT,CA8HA,OAtIA,UAAUshhB,EAAsBrghB,GAYhCqghB,EAAqB7hhB,UAAU+hhB,cAAgB,WAC7C,IAAIx8gB,GAAQ,UAAIzF,KAAKmzB,QAAS,gBAC9B,GAAI1tB,EAAO,CACT,IAAIkK,EAAUlK,EAAMzD,IAAI,WACxB,OAAO2N,GAAWA,EAAQ+xb,WAAWh8a,KAAKotf,MAC5C,CACA,OAAO,CACT,EACAiP,EAAqB7hhB,UAAUgihB,YAAc,WAC3C,OAAOjrB,IAAaj3f,KAAKmzB,QAAQi/O,KAAM0qQ,IACzC,EACAiF,EAAqB7hhB,UAAUiihB,YAAc,WAC3C,OAAOlrB,IAAaj3f,KAAKmzB,QAAQi/O,KAAM2qQ,IACzC,EAKAgF,EAAqB7hhB,UAAUkihB,mBAAqB,SAAUzygB,GAC5D,OAAO3P,KAAKkihB,cAAc9iU,WAAW,GAAGz+K,SAASztB,QAAQvD,EAC3D,EAIAoygB,EAAqB7hhB,UAAUwmB,MAAQ,WAErC,GAAI1mB,KAAKiihB,gBAAiB,CACxBjihB,KAAK67B,UAAY,CACf5wB,GAAG,UAAIjL,KAAKmzB,QAAS,WACrBjoB,GAAG,UAAIlL,KAAKmzB,QAAS,YAEvB,IAAIxjB,EAAU3P,KAAKmzB,QAAQpoB,MAAMrC,OAAO1G,IAAI,WACxCkjC,EAAMllC,KAAKoihB,mBAAmBzygB,GAClC,IAAa,IAATu1B,EACF,OAEFllC,KAAKqihB,kBAAoBn9e,EACzBllC,KAAKmzB,QAAQ6uf,YAAa,EAC1BhihB,KAAKgihB,YAAa,EAElBhihB,KAAKsihB,mBAAqBtihB,KAAKkihB,cAAcjlF,aAAanmb,QAC1D9W,KAAKuihB,mBAAqBvihB,KAAKmihB,cAAcllF,aAAanmb,QAC1D9W,KAAKkihB,cAAcprgB,SAAQ,GAC3B9W,KAAKmihB,cAAcrrgB,SAAQ,EAC7B,CACF,EAIAirgB,EAAqB7hhB,UAAUoY,UAAY,WACzC,GAAItY,KAAKgihB,WAAY,CACnB,IAAItlE,EAAQ18c,KAAKmzB,QAAQi/O,KACrBzyP,EAAe,CACjB1U,GAAG,UAAIjL,KAAKmzB,QAAS,WACrBjoB,GAAG,UAAIlL,KAAKmzB,QAAS,YAEnBloB,EAAI0U,EAAa1U,EAAIjL,KAAK67B,UAAU5wB,EACpCC,EAAIyU,EAAazU,EAAIlL,KAAK67B,UAAU3wB,EACpCgogB,EAAWlzgB,KAAKkihB,cAChBvygB,EAAUujgB,EAAS9zT,WAAW,GAAGz+K,SAAS3gC,KAAKqihB,mBAEnD,GAAI1ygB,GAAWA,EAAQ+xb,WAAY,CACjC,IAAI8gF,EAAY7ygB,EAAQ+xb,WAAWh8a,KAC/BA,EAAOwtf,EAASj2E,aAAav3a,KAC7Bu4P,EAAai1P,EAAS/wE,gBACtBsgF,EAAa,CACfx3gB,EAAGA,EAAIgzQ,EAAWznJ,WAClBtrH,EAAGA,EAAI+yQ,EAAWkuJ,aAEhBu2G,GAAY,WAAS,UAAS,CAAC,EAAGF,GAAY,CAChDv3gB,EAAGu3gB,EAAUv3gB,EAAE+lB,KAAI,SAAU/lB,GAC3B,OAAOA,EAAKw3gB,EAAWx3gB,CACzB,IACAC,EAAGs3gB,EAAUt3gB,EAAE8lB,KAAI,SAAU9lB,GAC3B,OAAOA,EAAKu3gB,EAAWv3gB,CACzB,MAIEoxY,GAAU,UAAc,GAAI52X,GAAM,GACtC42X,EAAQt8Y,KAAKqihB,mBAAqBK,EAClCxP,EAASxtf,KAAK42X,GAEd,IAAIrkY,EAASuqgB,EAAUvghB,KACnBmxgB,EAAWpzgB,KAAKmihB,cAChBQ,EAAWvP,EAASn2E,aAAav3a,KACrCi9f,EAASv6gB,SAAQ,SAAU+vN,GAErBA,EAAM9mM,SAAWpZ,IACnBkgN,EAAMltN,EAAE,IAAMw3gB,EAAWx3gB,EACzBktN,EAAMltN,EAAE,IAAMw3gB,EAAWx3gB,EACzBktN,EAAMjtN,EAAE,IAAMu3gB,EAAWv3gB,EACzBitN,EAAMjtN,EAAE,IAAMu3gB,EAAWv3gB,GAGvBitN,EAAMzvN,SAAWuP,IACnBkgN,EAAMltN,EAAE,IAAMw3gB,EAAWx3gB,EACzBktN,EAAMltN,EAAE,IAAMw3gB,EAAWx3gB,EACzBktN,EAAMjtN,EAAE,IAAMu3gB,EAAWv3gB,EACzBitN,EAAMjtN,EAAE,IAAMu3gB,EAAWv3gB,EAE7B,IACAkogB,EAAS1tf,KAAKi9f,GAEd3ihB,KAAK67B,UAAYlc,EAEjB+8b,EAAM1xY,QAAO,EACf,CACF,CACF,EAIA+2c,EAAqB7hhB,UAAU2uB,IAAM,WACnC7uB,KAAKgihB,YAAa,EAClBhihB,KAAKmzB,QAAQ6uf,YAAa,EAC1BhihB,KAAK67B,UAAY,KACjB77B,KAAKqihB,kBAAoB,KAEzBrihB,KAAKkihB,cAAcprgB,QAAQ9W,KAAKsihB,oBAChCtihB,KAAKmihB,cAAcrrgB,QAAQ9W,KAAKuihB,mBAClC,EACOR,CACT,CAxIwC,CAwItC,KC3IF1jF,IAAe,mBAAoB0jF,KACnCr9E,IAAoB,wBAAyB,CAC3CgvD,WAAY,CAAC,CACX/qZ,QAAS,qBACTluE,OAAQ,kBACP,CACDkuE,QAAS,qBACTluE,OAAQ,mBAEV/T,MAAO,CAAC,CACNiiF,QAAS,oBACTluE,OAAQ,2BAEVk5d,WAAY,CAAC,CACXhrZ,QAAS,iBACTluE,OAAQ,8BACP,CACD2pa,SAAU,SAAkBjxa,GAC1B,OAAOA,EAAQ6uf,UACjB,EACAr5a,QAAS,iBACTluE,OAAQ,gBAEV5L,IAAK,CAAC,CACJ85E,QAAS,eACTluE,OAAQ,4BCfc,SAAU/4B,GAElC,SAAS08gB,IACP,IAAI39gB,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAGhE,OADAS,EAAMkI,KAAO,SACNlI,CACT,EANA,UAAU29gB,EAAQ18gB,GAOlB08gB,EAAO1jB,kBAAoB,WACzB,MAAO,CACL38C,cAAe,EACfC,iBAAiB,EACjB9vY,UAAW,CACTv5D,QAAS,EACTkvE,YAAa,EACbpkE,UAAW,GAEbmzf,UAAW,CACTj+f,QAAS,GACT8K,UAAW,GAEbiigB,UAAW,CACTnrZ,OAAQ,CACNzqH,MAAO,CACL6I,QAAS,GACT8K,UAAW,KAIjBmtC,MAAO,CACLm9R,UAAW,SAAmB5oV,GAE5B,OADWA,EAAGc,IAEhB,EACA5B,SAAU,SAAkB4K,GAC1B,IAAI23gB,EAAkB,IAAT33gB,EAAE,GACf,MAAO,CACLa,MAAO,CACL8vC,KAAM,UACN36B,UAAW2hgB,EAAS,MAAQ,SAE9Br0gB,QAASq0gB,GAAU,EAAI,EAE3B,EACA95Z,OAAQ,CAAC,CACPngH,KAAM,kBAGVo8P,QAAS,CACPv3G,WAAW,EACXmhT,aAAa,EACb18K,QAAQ,EAERu8K,YAAa,SAAqBroZ,GAChC,QAAQ,UAAIA,EAAO,CAAC,EAAG,OAAQ,UACjC,EACA4jS,UAAW,SAAmB5xH,GAI5B,MAAO,CACLl2N,KAJWk2N,EAAM9mM,OAIF,OAHN8mM,EAAMzvN,OAIfvG,MAHQg2N,EAAMh2N,MAKlB,GAEFkugB,eAAgB,KAChBC,iBAAkB,IAClB5qgB,UAAW,CACTgqa,OAAQ,CACNhqa,UAAW,WAEb8zQ,MAAO,CACL9zQ,UAAW,YAInB,EAKA04gB,EAAOl+gB,UAAUw/c,WAAa,SAAUh6b,GACtC1lB,KAAKg7f,aAAa,CAChBt1e,KAAMA,IAER,IAAIvkB,EAAKkghB,IAAqBrhhB,KAAKmlC,QAASnlC,KAAK08c,MAAM3uc,MAAO/N,KAAK08c,MAAM1uc,QACvEm6J,EAAQhnK,EAAGgnK,MACX0oW,EAAQ1vgB,EAAG0vgB,MACTgS,EAAY5rB,IAAaj3f,KAAK08c,MAAOogE,KACrCgG,EAAY7rB,IAAaj3f,KAAK08c,MAAOqgE,KACzC8F,EAAUnjE,WAAWv3S,GACrB26W,EAAUpjE,WAAWmxD,EACvB,EAIAuN,EAAOl+gB,UAAUs7f,iBAAmB,WAClC,OAAO,GACT,EAIA4iB,EAAOl+gB,UAAUw6f,kBAAoB,WACnC,OAAO0jB,EAAO1jB,mBAChB,CAEF,CA3G0B,CA2GxBD,KA3GF,ICNWsoB,IAA0B,gBAC1BC,IAAmB,QACnBC,IAAsB,OAEtB,IAAa,CAACA,IAAqB7N,IAAkBE,IAAsBD,IAAkB,OAAQ,QAAS,UAI9G,IAAkBngB,IAAW,CAAC,EAAGuF,IAAKC,oBAAqB,CACpE5wZ,YAAa,EACb97B,OAAQ,IAERwlc,gBAAiB,CAEf3zY,MAAO,SAGTklI,QAAS,CACPktB,QAAQ,EACR08K,aAAa,EACbxrX,OAAQ,GACRqqE,WAAW,GAEb6pH,QAAQ,EAER6rQ,cAAe,CACbzjgB,UAAW,GACX0B,OAAQ,QAGVsyf,UAAW,CACT5lc,SAAS,KCrCE,SAAS,IAACntB,GACvBA,EAAKh0B,GAAKzS,KAAKwoB,MAAMie,EAAKh0B,IAC1Bg0B,EAAK/zB,GAAK1S,KAAKwoB,MAAMie,EAAK/zB,IAC1B+zB,EAAKt+B,GAAKnI,KAAKwoB,MAAMie,EAAKt+B,IAC1Bs+B,EAAKr+B,GAAKpI,KAAKwoB,MAAMie,EAAKr+B,GAC5B,CCLe,SAAS,IAACzQ,EAAQ8a,EAAIC,EAAIvK,EAAIC,GAM3C,IALA,IACEq+B,EADEynH,EAAQv2J,EAAO/B,SAEjB3O,GAAK,EACL0tB,EAAIu5I,EAAMtnK,OACV6F,EAAIkL,EAAOzP,QAAUigB,EAAKsK,GAAM9a,EAAOzP,QAChCjB,EAAI0tB,IACX8xB,EAAOynH,EAAMjnK,IAASyrB,GAAKA,EAAI+zB,EAAKr+B,GAAKA,EACzCq+B,EAAKh0B,GAAKA,EAAIg0B,EAAKt+B,GAAKsK,GAAMg0B,EAAKv+C,MAAQuE,CAE/C,CCRe,SAAS,MACtB,IAAIkG,EAAK,EACPC,EAAK,EACLutE,EAAU,EACV33C,GAAQ,EACV,SAAS0wM,EAAU5nK,GACjB,IAAI38C,EAAI28C,EAAKv9D,OAAS,EAMtB,OALAu9D,EAAK7+C,GAAK6+C,EAAK5+C,GAAKytD,EACpB7O,EAAKnpD,GAAKxV,EACV2+D,EAAKlpD,GAAKxV,EAAK+hB,EACf28C,EAAKgsN,WAIP,SAAsB1qR,EAAI+hB,GACxB,OAAO,SAAU8xB,GACXA,EAAK7wC,UACP,IAAY6wC,EAAMA,EAAKh0B,GAAI7f,GAAM6zC,EAAK5Z,MAAQ,GAAKlY,EAAG8xB,EAAKt+B,GAAIvV,GAAM6zC,EAAK5Z,MAAQ,GAAKlY,GAEzF,IAAIlC,EAAKg0B,EAAKh0B,GACZC,EAAK+zB,EAAK/zB,GACVvK,EAAKs+B,EAAKt+B,GAAKg4D,EACf/3D,EAAKq+B,EAAKr+B,GAAK+3D,EACbh4D,EAAKsK,IAAIA,EAAKtK,GAAMsK,EAAKtK,GAAM,GAC/BC,EAAKsK,IAAIA,EAAKtK,GAAMsK,EAAKtK,GAAM,GACnCq+B,EAAKh0B,GAAKA,EACVg0B,EAAK/zB,GAAKA,EACV+zB,EAAKt+B,GAAKA,EACVs+B,EAAKr+B,GAAKA,CACZ,CACF,CApBkBu6Q,CAAa/vR,EAAI+hB,IAC7B6T,GAAO8oC,EAAKgsN,WAAW,KACpBhsN,CACT,CA2BA,OATA4nK,EAAU1wM,MAAQ,SAAUx3B,GAC1B,OAAOrK,UAAUC,QAAU4hC,IAAUx3B,EAAGkoO,GAAa1wM,CACvD,EACA0wM,EAAU7uM,KAAO,SAAUr5B,GACzB,OAAOrK,UAAUC,QAAU+L,GAAM3B,EAAE,GAAI4B,GAAM5B,EAAE,GAAIkoO,GAAa,CAACvmO,EAAIC,EACvE,EACAsmO,EAAU/4J,QAAU,SAAUnvE,GAC5B,OAAOrK,UAAUC,QAAUu5E,GAAWnvE,EAAGkoO,GAAa/4J,CACxD,EACO+4J,CACT,CCxCA,IAAI,IAAkB,CACpBtzG,MAAO,QACPv7F,KAAM,CAAC,EAAG,GACV7B,OAAO,EACP23C,QAAS,EAET7nE,KAAM,SAAc4L,EAAG8E,GACrB,OAAOA,EAAE9gB,MAAQgc,EAAEhc,KACrB,EACA4mO,GAAI,CAAC,IAAK,KAEVo6S,mBAAmB,GAEd,SAAS,IAAUz9f,EAAMyf,GAE9B,IAII06F,EAJAkpG,GADJ5jM,GAAU,UAAO,CAAC,EAAG,IAAiBA,IACrB4jM,GACjB,KAAK,UAAQA,IAAqB,IAAdA,EAAGloO,OACrB,MAAM,IAAIkE,UAAU,uEAGtB,IACE86H,EAAQ,IAAS16F,EACnB,CAAE,MAAOjhC,KACP8gI,QAAQib,KAAK/7I,IACf,CACA,IAeIqnE,EAfY,SAAmB7lD,GACjC,OAAO,MAAwB4e,KAAKa,EAAQb,MAAM7B,MAAM0C,EAAQ1C,OAAO23C,QAAQj1C,EAAQi1C,QAAhF,CAQP,IAAsB10D,GAAM0G,KAAI,SAAUrG,GACxC,OAAO,UAAKA,EAAElW,UAAYs1B,EAAQg+e,kBAAoB,EAAIp9f,EAAE85G,IAAS,UAAO95G,EAAElW,UAAU,SAAUsO,EAAG8E,GACnG,OAAO9E,EAAI8E,EAAE48G,EACf,GAAG,GAAK95G,EAAE85G,EACZ,IAAGttH,KAAK4yB,EAAQ5yB,MAClB,CACW4gO,CAAUztN,GAMjBza,EAAI89N,EAAG,GACP79N,EAAI69N,EAAG,GAcX,OAbAx9J,EAAKqsN,MAAK,SAAUl3O,GAClB,IAAIv/C,EAAI+V,EACRwpC,EAAKz1C,GAAK,CAACy1C,EAAKh0B,GAAIg0B,EAAKt+B,GAAIs+B,EAAKt+B,GAAIs+B,EAAKh0B,IAC3Cg0B,EAAKx1C,GAAK,CAACw1C,EAAKr+B,GAAIq+B,EAAKr+B,GAAIq+B,EAAK/zB,GAAI+zB,EAAK/zB,IAE3C+zB,EAAKz+C,KAAOy+C,EAAKz+C,OAA8B,QAApBd,EAAKu/C,EAAKh7B,YAAyB,IAAPvkB,OAAgB,EAASA,EAAGc,QAA+B,QAApBiV,EAAKwpC,EAAKh7B,YAAyB,IAAPxO,OAAgB,EAASA,EAAG01C,OACtJlM,EAAKh7B,KAAKzjB,KAAOy+C,EAAKz+C,KACtB,CAAC,KAAM,KAAM,KAAM,MAAMmG,SAAQ,SAAUlD,IACf,IAAtB6jO,EAAG71N,QAAQhO,WACNw7C,EAAKx7C,EAEhB,GACF,IACOswgB,IAAYjqc,EACrB,CCjEA,SAAS,IAAkBptD,EAAG8E,GAC5B,OAAO9E,EAAEvM,SAAWqR,EAAErR,OAAS,EAAI,CACrC,CAIA,SAAS,IAAY3G,EAAGka,GACtB,OAAOla,EAAIka,EAAEla,CACf,CAIA,SAAS,IAAWC,EAAGia,GACrB,OAAOlL,KAAKE,IAAIjP,EAAGia,EAAEja,EACvB,CAWe,SAAS,MACtB,IAAIooQ,EAAa,IACf1mQ,EAAK,EACLC,EAAK,EACLkwR,GAAW,EACb,SAASc,EAAQtyN,GACf,IAAIuyN,EACF7yR,EAAI,EAGNsgE,EAAKosN,WAAU,SAAUj3O,GACvB,IAAI7wC,EAAW6wC,EAAK7wC,SAChBA,GACF6wC,EAAKz1C,EAnCb,SAAe4E,GACb,OAAOA,EAAS8hB,OAAO,IAAa,GAAK9hB,EAAShP,MACpD,CAiCiB,CAAMgP,GACf6wC,EAAKx1C,EA9Bb,SAAc2E,GACZ,OAAO,EAAIA,EAAS8hB,OAAO,IAAY,EACzC,CA4BiB,CAAK9hB,KAEd6wC,EAAKz1C,EAAI6yR,EAAe7yR,GAAKqoQ,EAAW5yN,EAAMo9O,GAAgB,EAC9Dp9O,EAAKx1C,EAAI,EACT4yR,EAAep9O,EAEnB,IACA,IAAI1xC,EA/BR,SAAkB0xC,GAEhB,IADA,IAAI7wC,EACGA,EAAW6wC,EAAK7wC,UAAU6wC,EAAO7wC,EAAS,GACjD,OAAO6wC,CACT,CA2Be,CAAS6qB,GAClB54D,EA3BN,SAAmB+tC,GAEjB,IADA,IAAI7wC,EACGA,EAAW6wC,EAAK7wC,UAAU6wC,EAAO7wC,EAASA,EAAShP,OAAS,GACnE,OAAO6/C,CACT,CAuBc,CAAU6qB,GAClB7+C,EAAK1d,EAAK/D,EAAIqoQ,EAAWtkQ,EAAM2D,GAAS,EACxCyP,EAAKzP,EAAM1H,EAAIqoQ,EAAW3gQ,EAAO3D,GAAQ,EAG3C,OAAOu8D,EAAKosN,UAAUoF,EAAW,SAAUr8O,GACzCA,EAAKz1C,GAAKy1C,EAAKz1C,EAAIsgE,EAAKtgE,GAAK2B,EAC7B8zC,EAAKx1C,GAAKqgE,EAAKrgE,EAAIw1C,EAAKx1C,GAAK2B,CAC/B,EAAI,SAAU6zC,GACZA,EAAKz1C,GAAKy1C,EAAKz1C,EAAIyhB,IAAOtK,EAAKsK,GAAM9f,EACrC8zC,EAAKx1C,GAAK,GAAKqgE,EAAKrgE,EAAIw1C,EAAKx1C,EAAIqgE,EAAKrgE,EAAI,IAAM2B,CAClD,EACF,CAUA,OATAgxR,EAAQvqB,WAAa,SAAUroQ,GAC7B,OAAOrK,UAAUC,QAAUyyQ,EAAaroQ,EAAG4yR,GAAWvqB,CACxD,EACAuqB,EAAQv5P,KAAO,SAAUr5B,GACvB,OAAOrK,UAAUC,QAAUk8R,GAAW,EAAOnwR,GAAM3B,EAAE,GAAI4B,GAAM5B,EAAE,GAAI4yR,GAAWd,EAAW,KAAO,CAACnwR,EAAIC,EACzG,EACAgxR,EAAQd,SAAW,SAAU9xR,GAC3B,OAAOrK,UAAUC,QAAUk8R,GAAW,EAAMnwR,GAAM3B,EAAE,GAAI4B,GAAM5B,EAAE,GAAI4yR,GAAWd,EAAW,CAACnwR,EAAIC,GAAM,IACvG,EACOgxR,CACT,CCpEA,IAAI,IAAU,CACV/2P,OAAQ,GAEV,IAAY,CAAC,EACf,SAAS,IAAU/gB,GACjB,OAAOA,EAAErS,EACX,CACA,SAAS,IAAgBqS,GACvB,OAAOA,EAAEq0Q,QACX,CACe,SAAS,MACtB,IAAI1mR,EAAK,IACP0mR,EAAW,IACb,SAASC,EAAS30Q,GAChB,IAEEK,EACA7kB,EACAqqE,EACA35D,EACA8uC,EACAm0O,EACAyF,EAREnyH,EAAQ1nI,MAAMnH,KAAK5T,GACrBkJ,EAAIu5I,EAAMtnK,OAQV25R,EAAY,IAAIz7Q,IAClB,IAAK7d,EAAI,EAAGA,EAAI0tB,IAAK1tB,EACnB6kB,EAAIoiJ,EAAMjnK,GAAIw/C,EAAOynH,EAAMjnK,GAAK,IAAI,IAAK6kB,GACR,OAA5B8uQ,EAASnhR,EAAGqS,EAAG7kB,EAAGwkB,MAAmBmvQ,GAAU,MAClDyF,EAAU55O,EAAKhtC,GAAKmhR,EACpB2F,EAAUt4R,IAAIo4R,EAASE,EAAU14P,IAAIw4P,GAAW,IAAY55O,IAEvB,OAAlCm0O,EAASuF,EAASr0Q,EAAG7kB,EAAGwkB,MAAmBmvQ,GAAU,MACxDn0O,EAAK9uC,OAASijR,GAGlB,IAAK3zR,EAAI,EAAGA,EAAI0tB,IAAK1tB,EAEnB,GAAI2zR,GADJn0O,EAAOynH,EAAMjnK,IACK0Q,OAAQ,CAExB,KADAA,EAAS4oR,EAAUx4R,IAAI6yR,IACV,MAAM,IAAI5sP,MAAM,YAAc4sP,GAC3C,GAAIjjR,IAAW,IAAW,MAAM,IAAIq2B,MAAM,cAAgB4sP,GACtDjjR,EAAO/B,SAAU+B,EAAO/B,SAAStP,KAAKmgD,GAAW9uC,EAAO/B,SAAW,CAAC6wC,GACxEA,EAAK9uC,OAASA,CAChB,KAAO,CACL,GAAI25D,EAAM,MAAM,IAAItjC,MAAM,kBAC1BsjC,EAAO7qB,CACT,CAEF,IAAK6qB,EAAM,MAAM,IAAItjC,MAAM,WAO3B,GANAsjC,EAAK35D,OAAS,IACd25D,EAAKgsN,YAAW,SAAU72O,GACxBA,EAAK5Z,MAAQ4Z,EAAK9uC,OAAOk1B,MAAQ,IAC/BlY,CACJ,IAAG2oQ,WAAW,KACdhsN,EAAK35D,OAAS,KACVgd,EAAI,EAAG,MAAM,IAAIqZ,MAAM,SAC3B,OAAOsjC,CACT,CAOA,OANA8uN,EAAS3mR,GAAK,SAAUzI,GACtB,OAAOrK,UAAUC,QAAU6S,EAAK,IAASzI,GAAIovR,GAAY3mR,CAC3D,EACA2mR,EAASD,SAAW,SAAUnvR,GAC5B,OAAOrK,UAAUC,QAAUu5R,EAAW,IAASnvR,GAAIovR,GAAYD,CACjE,EACOC,CACT,CCjEA,SAAS,IAAkBl8Q,EAAG8E,GAC5B,OAAO9E,EAAEvM,SAAWqR,EAAErR,OAAS,EAAI,CACrC,CAUA,SAAS,IAASK,GAChB,IAAIpC,EAAWoC,EAAEpC,SACjB,OAAOA,EAAWA,EAAS,GAAKoC,EAAElO,CACpC,CAGA,SAAS,IAAUkO,GACjB,IAAIpC,EAAWoC,EAAEpC,SACjB,OAAOA,EAAWA,EAASA,EAAShP,OAAS,GAAKoR,EAAElO,CACtD,CAIA,SAAS,IAAYg3R,EAAIC,EAAIpwQ,GAC3B,IAAImsQ,EAASnsQ,GAASowQ,EAAG95R,EAAI65R,EAAG75R,GAChC85R,EAAG71Q,GAAK4xQ,EACRiE,EAAGl9Q,GAAK8M,EACRmwQ,EAAG51Q,GAAK4xQ,EACRiE,EAAGv1Q,GAAKmF,EACRowQ,EAAGjlR,GAAK6U,CACV,CAqBA,SAAS,IAAaswQ,EAAKjpR,EAAG4lR,GAC5B,OAAOqD,EAAI/8Q,EAAEvM,SAAWK,EAAEL,OAASspR,EAAI/8Q,EAAI05Q,CAC7C,CACA,SAAS,IAASn3O,EAAMx/C,GACtBlB,KAAK0mC,EAAIga,EACT1gD,KAAK4R,OAAS,KACd5R,KAAK6P,SAAW,KAChB7P,KAAK+vD,EAAI,KACT/vD,KAAKme,EAAIne,KACTA,KAAKylB,EAAI,EACTzlB,KAAK+V,EAAI,EACT/V,KAAKmlB,EAAI,EACTnlB,KAAK8d,EAAI,EACT9d,KAAK+D,EAAI,KACT/D,KAAKkB,EAAIA,CACX,CAyBe,SAAS,MACtB,IAAIoyQ,EAAa,IACf1mQ,EAAK,EACLC,EAAK,EACLkwR,EAAW,KACb,SAAS7yK,EAAK3+C,GACZ,IAAIxnE,EA5BR,SAAkBwnE,GAQhB,IAPA,IACE7qB,EAEA5wC,EACAD,EACA3O,EACA0tB,EANEs7F,EAAO,IAAI,IAAS3+C,EAAM,GAE5B48F,EAAQ,CAACj+C,GAKJxpE,EAAOynH,EAAMlhJ,OAClB,GAAIpX,EAAW6wC,EAAKha,EAAE72B,SAEpB,IADA6wC,EAAK7wC,SAAW,IAAI4wB,MAAM7R,EAAI/e,EAAShP,QAClCK,EAAI0tB,EAAI,EAAG1tB,GAAK,IAAKA,EACxBinK,EAAM5nK,KAAKuP,EAAQ4wC,EAAK7wC,SAAS3O,GAAK,IAAI,IAAS2O,EAAS3O,GAAIA,IAChE4O,EAAM8B,OAAS8uC,EAKrB,OADCwpE,EAAKt4G,OAAS,IAAI,IAAS,KAAM,IAAI/B,SAAW,CAACq6G,GAC3CA,CACT,CASY,CAAS3+C,GAOjB,GAJAxnE,EAAE4zR,UAAUsF,GAAYl5R,EAAE6N,OAAOmE,GAAKhS,EAAE0hB,EACxC1hB,EAAEwzR,WAAW2F,GAGTH,EAAUxxN,EAAKgsN,WAAW4F,OAIzB,CACH,IAAInuR,EAAOu8D,EACT54D,EAAQ44D,EACRkY,EAASlY,EACXA,EAAKgsN,YAAW,SAAU72O,GACpBA,EAAKz1C,EAAI+D,EAAK/D,IAAG+D,EAAO0xC,GACxBA,EAAKz1C,EAAI0H,EAAM1H,IAAG0H,EAAQ+tC,GAC1BA,EAAK5Z,MAAQ28C,EAAO38C,QAAO28C,EAAS/iC,EAC1C,IACA,IAAI5iC,EAAI9O,IAAS2D,EAAQ,EAAI2gQ,EAAWtkQ,EAAM2D,GAAS,EACrD6kQ,EAAK15P,EAAI9O,EAAK/D,EACds0M,EAAK3yM,GAAM+F,EAAM1H,EAAI6S,EAAI05P,GACzBh4D,EAAK3yM,GAAM42E,EAAO38C,OAAS,GAC7BykC,EAAKgsN,YAAW,SAAU72O,GACxBA,EAAKz1C,GAAKy1C,EAAKz1C,EAAIusQ,GAAMj4D,EACzB7+J,EAAKx1C,EAAIw1C,EAAK5Z,MAAQ04K,CACxB,GACF,CACA,OAAOj0I,CACT,CAMA,SAAS0xN,EAAUhrR,GACjB,IAAIpC,EAAWoC,EAAEpC,SACfutR,EAAWnrR,EAAEL,OAAO/B,SACpB6d,EAAIzb,EAAE/Q,EAAIk8R,EAASnrR,EAAE/Q,EAAI,GAAK,KAChC,GAAI2O,EAAU,EAtGlB,SAAuBoC,GAMrB,IALA,IAIEyb,EAJE9C,EAAQ,EACVmsQ,EAAS,EACTlnR,EAAWoC,EAAEpC,SACb3O,EAAI2O,EAAShP,SAENK,GAAK,IACZwsB,EAAI7d,EAAS3O,IACXukB,GAAKmF,EACP8C,EAAE3X,GAAK6U,EACPA,GAAS8C,EAAE5P,GAAKi5Q,GAAUrpQ,EAAEvI,EAEhC,CA2FM,CAAclT,GACd,IAAIqnC,GAAYzpC,EAAS,GAAG4V,EAAI5V,EAASA,EAAShP,OAAS,GAAG4kB,GAAK,EAC/DiI,GACFzb,EAAEwT,EAAIiI,EAAEjI,EAAI6tP,EAAWrhQ,EAAEy0B,EAAGhZ,EAAEgZ,GAC9Bz0B,EAAE8D,EAAI9D,EAAEwT,EAAI6zB,GAEZrnC,EAAEwT,EAAI6zB,CAEV,MAAW5rB,IACTzb,EAAEwT,EAAIiI,EAAEjI,EAAI6tP,EAAWrhQ,EAAEy0B,EAAGhZ,EAAEgZ,IAEhCz0B,EAAEL,OAAOm+C,EAoBX,SAAmB99C,EAAGyb,EAAGmqQ,GACvB,GAAInqQ,EAAG,CAUL,IATA,IAQE9C,EARE0yQ,EAAMrrR,EACRsrR,EAAMtrR,EACNipR,EAAMxtQ,EACN8vQ,EAAMF,EAAI1rR,OAAO/B,SAAS,GAC1B4tR,EAAMH,EAAIvnR,EACV2nR,EAAMH,EAAIxnR,EACV4gR,EAAMuE,EAAInlR,EACV4nR,EAAMH,EAAIznR,EAELmlR,EAAM,IAAUA,GAAMoC,EAAM,IAASA,GAAMpC,GAAOoC,GACvDE,EAAM,IAASA,IACfD,EAAM,IAAUA,IACZp/Q,EAAIlM,GACR2Y,EAAQswQ,EAAIz1Q,EAAIkxQ,EAAM2G,EAAI73Q,EAAIg4Q,EAAMnqB,EAAW4nB,EAAIx0P,EAAG42P,EAAI52P,IAC9C,IACV,IAAY,IAAaw0P,EAAKjpR,EAAG4lR,GAAW5lR,EAAG2Y,GAC/C6yQ,GAAO7yQ,EACP8yQ,GAAO9yQ,GAET+rQ,GAAOuE,EAAInlR,EACX0nR,GAAOH,EAAIvnR,EACX4nR,GAAOH,EAAIznR,EACX2nR,GAAOH,EAAIxnR,EAETmlR,IAAQ,IAAUqC,KACpBA,EAAIx5R,EAAIm3R,EACRqC,EAAIxnR,GAAK4gR,EAAM+G,GAEbJ,IAAQ,IAASE,KACnBA,EAAIz5R,EAAIu5R,EACRE,EAAIznR,GAAK0nR,EAAME,EACf9F,EAAW5lR,EAEf,CACA,OAAO4lR,CACT,CAzDe+F,CAAU3rR,EAAGyb,EAAGzb,EAAEL,OAAOm+C,GAAKqtO,EAAS,GACtD,CAGA,SAASF,EAAWjrR,GAClBA,EAAEy0B,EAAEz7B,EAAIgH,EAAEwT,EAAIxT,EAAEL,OAAOmE,EACvB9D,EAAE8D,GAAK9D,EAAEL,OAAOmE,CAClB,CAmDA,SAASonR,EAASz8O,GAChBA,EAAKz1C,GAAK2B,EACV8zC,EAAKx1C,EAAIw1C,EAAK5Z,MAAQj6B,CACxB,CAUA,OATAq9G,EAAKopJ,WAAa,SAAUroQ,GAC1B,OAAOrK,UAAUC,QAAUyyQ,EAAaroQ,EAAGi/G,GAAQopJ,CACrD,EACAppJ,EAAK5lF,KAAO,SAAUr5B,GACpB,OAAOrK,UAAUC,QAAUk8R,GAAW,EAAOnwR,GAAM3B,EAAE,GAAI4B,GAAM5B,EAAE,GAAIi/G,GAAQ6yK,EAAW,KAAO,CAACnwR,EAAIC,EACtG,EACAq9G,EAAK6yK,SAAW,SAAU9xR,GACxB,OAAOrK,UAAUC,QAAUk8R,GAAW,EAAMnwR,GAAM3B,EAAE,GAAI4B,GAAM5B,EAAE,GAAIi/G,GAAQ6yK,EAAW,CAACnwR,EAAIC,GAAM,IACpG,EACOq9G,CACT,CChOe,SAAS,IAACt4G,EAAQ8a,EAAIC,EAAIvK,EAAIC,GAM3C,IALA,IACEq+B,EADEynH,EAAQv2J,EAAO/B,SAEjB3O,GAAK,EACL0tB,EAAIu5I,EAAMtnK,OACV6F,EAAIkL,EAAOzP,QAAUkgB,EAAKsK,GAAM/a,EAAOzP,QAChCjB,EAAI0tB,IACX8xB,EAAOynH,EAAMjnK,IAASwrB,GAAKA,EAAIg0B,EAAKt+B,GAAKA,EACzCs+B,EAAK/zB,GAAKA,EAAI+zB,EAAKr+B,GAAKsK,GAAM+zB,EAAKv+C,MAAQuE,CAE/C,CD6DA,IAASxG,UAAYsX,OAAO0wB,OAAO,IAAKhoC,WErEjC,IAAI,KAAO,EAAI+Z,KAAK2C,KAAK,IAAM,EAC/B,SAAS,IAAchX,EAAOgM,EAAQ8a,EAAIC,EAAIvK,EAAIC,GAkBvD,IAjBA,IAEE+f,EACAipO,EAIAz+P,EACAC,EAEA0uR,EACAC,EACAC,EACAC,EACAC,EACA7sQ,EACA4oN,EAhBEhhH,EAAO,GACTyxC,EAAQv2J,EAAO/B,SAGfgsC,EAAK,EACLC,EAAK,EACLltB,EAAIu5I,EAAMtnK,OAGVsB,EAAQyP,EAAOzP,MAQV05C,EAAKjtB,GAAG,CACbhiB,EAAKwV,EAAKsK,EAAI7f,EAAKwV,EAAKsK,EAGxB,GAAG4uQ,EAAWpzH,EAAMrsH,KAAM35C,aAAeo5R,GAAYz/O,EAAKltB,GAO1D,IANA4sQ,EAAWC,EAAWF,EAEtB7jD,EAAO6jD,EAAWA,GADlBzsQ,EAAQ7U,KAAKE,IAAItN,EAAKD,EAAIA,EAAKC,IAAO1K,EAAQyD,IAE9C+1R,EAAW1hR,KAAKE,IAAIshR,EAAW/jD,EAAMA,EAAO8jD,GAGrC1/O,EAAKltB,IAAKktB,EAAI,CAMnB,GALAy/O,GAAYlwB,EAAYljG,EAAMrsH,GAAI35C,MAC9BkpQ,EAAYmwB,IAAUA,EAAWnwB,GACjCA,EAAYowB,IAAUA,EAAWpwB,GACrC3zB,EAAO6jD,EAAWA,EAAWzsQ,GAC7B4sQ,EAAWzhR,KAAKE,IAAIshR,EAAW/jD,EAAMA,EAAO8jD,IAC7BG,EAAU,CACvBJ,GAAYlwB,EACZ,KACF,CACAswB,EAAWD,CACb,CAGAhlK,EAAKn2H,KAAK6hC,EAAM,CACdjgC,MAAOo5R,EACPK,KAAMhvR,EAAKC,EACXgD,SAAUs4J,EAAMnhJ,MAAM60B,EAAIC,KAExB1Z,EAAIw5P,KAAM,IAAYx5P,EAAK1V,EAAIC,EAAIvK,EAAIjgB,EAAQwqB,GAAM9f,EAAK0uR,EAAWp5R,EAAQkgB,GAAS,IAAa+f,EAAK1V,EAAIC,EAAIxqB,EAAQuqB,GAAM9f,EAAK2uR,EAAWp5R,EAAQigB,EAAIC,GAC9JlgB,GAASo5R,EAAU1/O,EAAKC,CAC1B,CACA,OAAO46E,CACT,CACA,QAAe,SAAUh7G,EAAO9V,GAC9B,SAASi2R,EAASjqR,EAAQ8a,EAAIC,EAAIvK,EAAIC,GACpC,IAAczc,EAAOgM,EAAQ8a,EAAIC,EAAIvK,EAAIC,EAC3C,CAIA,OAHAw5Q,EAASj2R,MAAQ,SAAUqF,GACzB,OAAOyQ,GAAQzQ,GAAKA,GAAK,EAAIA,EAAI,EACnC,EACO4wR,CACR,CARD,CAQG,KC5DY,SAAS,MACtB,IAAIoD,EAAO,IACTx8P,GAAQ,EACR71B,EAAK,EACLC,EAAK,EACLqyR,EAAe,CAAC,GAChBx2C,EAAe,IACfxkE,EAAa,IACbsI,EAAe,IACf7zC,EAAgB,IAChB4zC,EAAc,IAChB,SAAS4yG,EAAQ5zN,GAOf,OANAA,EAAK7+C,GAAK6+C,EAAK5+C,GAAK,EACpB4+C,EAAKnpD,GAAKxV,EACV2+D,EAAKlpD,GAAKxV,EACV0+D,EAAKgsN,WAAWqF,GAChBsC,EAAe,CAAC,GACZz8P,GAAO8oC,EAAKgsN,WAAW,KACpBhsN,CACT,CACA,SAASqxN,EAAal8O,GACpB,IAAItiC,EAAI8gR,EAAax+O,EAAK5Z,OACxBpa,EAAKg0B,EAAKh0B,GAAKtO,EACfuO,EAAK+zB,EAAK/zB,GAAKvO,EACfgE,EAAKs+B,EAAKt+B,GAAKhE,EACfiE,EAAKq+B,EAAKr+B,GAAKjE,EACbgE,EAAKsK,IAAIA,EAAKtK,GAAMsK,EAAKtK,GAAM,GAC/BC,EAAKsK,IAAIA,EAAKtK,GAAMsK,EAAKtK,GAAM,GACnCq+B,EAAKh0B,GAAKA,EACVg0B,EAAK/zB,GAAKA,EACV+zB,EAAKt+B,GAAKA,EACVs+B,EAAKr+B,GAAKA,EACNq+B,EAAK7wC,WACPuO,EAAI8gR,EAAax+O,EAAK5Z,MAAQ,GAAK4hN,EAAahoM,GAAQ,EACxDh0B,GAAM6/J,EAAY7rI,GAAQtiC,EAC1BuO,GAAMu3J,EAAWxjI,GAAQtiC,GACzBgE,GAAMoqK,EAAa9rI,GAAQtiC,GAElBsO,IAAIA,EAAKtK,GAAMsK,EAAKtK,GAAM,IADnCC,GAAMs2H,EAAcj4F,GAAQtiC,GAEnBuO,IAAIA,EAAKtK,GAAMsK,EAAKtK,GAAM,GACnC48Q,EAAKv+O,EAAMh0B,EAAIC,EAAIvK,EAAIC,GAE3B,CA+BA,OA9BA88Q,EAAQ18P,MAAQ,SAAUx3B,GACxB,OAAOrK,UAAUC,QAAU4hC,IAAUx3B,EAAGk0R,GAAW18P,CACrD,EACA08P,EAAQ76P,KAAO,SAAUr5B,GACvB,OAAOrK,UAAUC,QAAU+L,GAAM3B,EAAE,GAAI4B,GAAM5B,EAAE,GAAIk0R,GAAW,CAACvyR,EAAIC,EACrE,EACAsyR,EAAQF,KAAO,SAAUh0R,GACvB,OAAOrK,UAAUC,QAAUo+R,EAAO,IAASh0R,GAAIk0R,GAAWF,CAC5D,EACAE,EAAQ/kN,QAAU,SAAUnvE,GAC1B,OAAOrK,UAAUC,OAASs+R,EAAQz2C,aAAaz9O,GAAG09O,aAAa19O,GAAKk0R,EAAQz2C,cAC9E,EACAy2C,EAAQz2C,aAAe,SAAUz9O,GAC/B,OAAOrK,UAAUC,QAAU6nP,EAA4B,mBAANz9O,EAAmBA,EAAI,KAAUA,GAAIk0R,GAAWz2C,CACnG,EACAy2C,EAAQx2C,aAAe,SAAU19O,GAC/B,OAAOrK,UAAUC,OAASs+R,EAAQj7G,WAAWj5K,GAAGuhL,aAAavhL,GAAG0tI,cAAc1tI,GAAGshL,YAAYthL,GAAKk0R,EAAQj7G,YAC5G,EACAi7G,EAAQj7G,WAAa,SAAUj5K,GAC7B,OAAOrK,UAAUC,QAAUqjL,EAA0B,mBAANj5K,EAAmBA,EAAI,KAAUA,GAAIk0R,GAAWj7G,CACjG,EACAi7G,EAAQ3yG,aAAe,SAAUvhL,GAC/B,OAAOrK,UAAUC,QAAU2rL,EAA4B,mBAANvhL,EAAmBA,EAAI,KAAUA,GAAIk0R,GAAW3yG,CACnG,EACA2yG,EAAQxmJ,cAAgB,SAAU1tI,GAChC,OAAOrK,UAAUC,QAAU83I,EAA6B,mBAAN1tI,EAAmBA,EAAI,KAAUA,GAAIk0R,GAAWxmJ,CACpG,EACAwmJ,EAAQ5yG,YAAc,SAAUthL,GAC9B,OAAOrK,UAAUC,QAAU0rL,EAA2B,mBAANthL,EAAmBA,EAAI,KAAUA,GAAIk0R,GAAW5yG,CAClG,EACO4yG,CACT,CC9Ee,SAAS,IAACvtR,EAAQ8a,EAAIC,EAAIvK,EAAIC,GAC3C,IACEnhB,EAEAkrB,EAHE+7I,EAAQv2J,EAAO/B,SAEjB+e,EAAIu5I,EAAMtnK,OAEV09R,EAAO,IAAI99P,MAAM7R,EAAI,GACvB,IAAK2vQ,EAAK,GAAKnyQ,EAAMlrB,EAAI,EAAGA,EAAI0tB,IAAK1tB,EACnCq9R,EAAKr9R,EAAI,GAAKkrB,GAAO+7I,EAAMjnK,GAAGiB,OAGhC,SAASgxO,EAAUjyO,EAAGgG,EAAG/E,EAAOuqB,EAAIC,EAAIvK,EAAIC,GAC1C,GAAInhB,GAAKgG,EAAI,EAAG,CACd,IAAIw5C,EAAOynH,EAAMjnK,GAGjB,OAFAw/C,EAAKh0B,GAAKA,EAAIg0B,EAAK/zB,GAAKA,EACxB+zB,EAAKt+B,GAAKA,OAAIs+B,EAAKr+B,GAAKA,EAE1B,CACA,IAAIm8Q,EAAcD,EAAKr9R,GACrBu9R,EAAct8R,EAAQ,EAAIq8R,EAC1B93R,EAAIxF,EAAI,EACRi5M,EAAKjzM,EAAI,EACX,KAAOR,EAAIyzM,GAAI,CACb,IAAI54J,EAAM76C,EAAIyzM,IAAO,EACjBokF,EAAKh9O,GAAOk9O,EAAa/3R,EAAI66C,EAAM,EAAO44J,EAAK54J,CACrD,CACIk9O,EAAcF,EAAK73R,EAAI,GAAK63R,EAAK73R,GAAK+3R,GAAev9R,EAAI,EAAIwF,KAAKA,EACtE,IAAIg4R,EAAYH,EAAK73R,GAAK83R,EACxBG,EAAax8R,EAAQu8R,EACvB,GAAIt8Q,EAAKsK,EAAKrK,EAAKsK,EAAI,CACrB,IAAIuvB,EAAK/5C,GAASuqB,EAAKiyQ,EAAav8Q,EAAKs8Q,GAAav8R,EAAQigB,EAC9D+wN,EAAUjyO,EAAGwF,EAAGg4R,EAAWhyQ,EAAIC,EAAIuvB,EAAI75B,GACvC8wN,EAAUzsO,EAAGQ,EAAGy3R,EAAYziP,EAAIvvB,EAAIvK,EAAIC,EAC1C,KAAO,CACL,IAAI85B,EAAKh6C,GAASwqB,EAAKgyQ,EAAat8Q,EAAKq8Q,GAAav8R,EAAQkgB,EAC9D8wN,EAAUjyO,EAAGwF,EAAGg4R,EAAWhyQ,EAAIC,EAAIvK,EAAI+5B,GACvCg3L,EAAUzsO,EAAGQ,EAAGy3R,EAAYjyQ,EAAIyvB,EAAI/5B,EAAIC,EAC1C,CACF,CA5BA8wN,CAAU,EAAGvkN,EAAGhd,EAAOzP,MAAOuqB,EAAIC,EAAIvK,EAAIC,EA6B5C,CCpCe,SAAS,IAACzQ,EAAQ8a,EAAIC,EAAIvK,EAAIC,IAC3B,EAAfzQ,EAAOk1B,MAAY,IAAQ,KAAMl1B,EAAQ8a,EAAIC,EAAIvK,EAAIC,EACxD,CCDA,QAAe,SAAU3G,EAAO9V,GAC9B,SAASk2R,EAAWlqR,EAAQ8a,EAAIC,EAAIvK,EAAIC,GACtC,IAAKq0G,EAAO9kH,EAAOmqR,YAAcrlK,EAAK9wH,QAAUA,EAS9C,IARA,IAAI8wH,EACFt0F,EACA+lI,EACAjnK,EAEA0tB,EADA1nB,GAAK,EAEL6O,EAAI2gH,EAAK71H,OACTsB,EAAQyP,EAAOzP,QACR+E,EAAI6O,GAAG,CAEd,IADeoyJ,GAAf/lI,EAAMs0F,EAAKxvH,IAAgB2I,SACtB3O,EAAIkhC,EAAIjgC,MAAQ,EAAGysB,EAAIu5I,EAAMtnK,OAAQK,EAAI0tB,IAAK1tB,EAAGkhC,EAAIjgC,OAASgmK,EAAMjnK,GAAGiB,MACxEigC,EAAIw5P,KAAM,IAAYx5P,EAAK1V,EAAIC,EAAIvK,EAAIjgB,EAAQwqB,IAAOtK,EAAKsK,GAAMyV,EAAIjgC,MAAQA,EAAQkgB,GAAS,IAAa+f,EAAK1V,EAAIC,EAAIxqB,EAAQuqB,IAAOtK,EAAKsK,GAAM0V,EAAIjgC,MAAQA,EAAQigB,EAAIC,GAC9KlgB,GAASigC,EAAIjgC,KACf,MAEAyP,EAAOmqR,UAAYrlK,EAAO,IAAc9wH,EAAOgM,EAAQ8a,EAAIC,EAAIvK,EAAIC,GACnEq0G,EAAK9wH,MAAQA,CAEjB,CAIA,OAHAk2R,EAAWl2R,MAAQ,SAAUqF,GAC3B,OAAOyQ,GAAQzQ,GAAKA,GAAK,EAAIA,EAAI,EACnC,EACO6wR,CACR,CA1BD,CA0BG,KC1BC,IAAkB,CACpBj8J,MAAO,QACPo/J,KAAM,kBACN36P,KAAM,CAAC,EAAG,GACV7B,OAAO,EACP0gf,mBAAmB,EACnB/oc,QAAS,EACTsuK,aAAc,EACdC,aAAc,EACdzkE,WAAY,EACZsI,aAAc,EACd7zC,cAAe,EACf4zC,YAAa,EACbw8C,GAAI,CAAC,IAAK,KAEVx2N,KAAM,SAAc4L,EAAG8E,GACrB,OAAOA,EAAE9gB,MAAQgc,EAAEhc,KACrB,EAEAyD,MAAO,IAAO,EAAIqU,KAAK2C,KAAK,KAKvB,SAAS,IAAQ8I,EAAMyf,GAE5B,IAII06F,EAJAkpG,GADJ5jM,GAAU,UAAO,CAAC,EAAG,IAAiBA,IACrB4jM,GACjB,KAAK,UAAQA,IAAqB,IAAdA,EAAGloO,OACrB,MAAM,IAAIkE,UAAU,uEAGtB,IACE86H,EAAQ,IAAS16F,EACnB,CAAE,MAAOjhC,KACP8gI,QAAQib,KAAK/7I,IACf,CACA,IAf4B+6R,EAAMr5R,EAe9Bw9gB,GAfwBnkP,EAeG95P,EAAQ85P,KAfLr5R,EAeWu/B,EAAQv/B,MAdrC,oBAATq5R,EAA6B,EAAYA,GAAMr5R,MAAMA,GAAS,EAAYq5R,IA8B7E1zN,EAfY,SAAmB7lD,GACjC,OAAO,MAAsBu5Q,KAAKmkP,GAAY9+e,KAAKa,EAAQb,MAAM7B,MAAM0C,EAAQ1C,OAAO23C,QAAQj1C,EAAQi1C,SAASsuK,aAAavjN,EAAQujN,cAAcC,aAAaxjN,EAAQwjN,cAAczkE,WAAW/+I,EAAQ++I,YAAYsI,aAAarnJ,EAAQqnJ,cAAc7zC,cAAcxzG,EAAQwzG,eAAe4zC,YAAYpnJ,EAAQonJ,YAAzS,CAUP,IAAsB7mK,GAAM0G,KAAI,SAAUrG,GACxC,OAAOof,EAAQg+e,mBAAqBp9f,EAAElW,SAAW,EAAIkW,EAAE85G,EACzD,IAAGttH,KAAK4yB,EAAQ5yB,MAClB,CACW4gO,CAAUztN,GAMjBza,EAAI89N,EAAG,GACP79N,EAAI69N,EAAG,GAUX,OATAx9J,EAAKqsN,MAAK,SAAUl3O,GAClBA,EAAKz1C,GAAK,CAACy1C,EAAKh0B,GAAIg0B,EAAKt+B,GAAIs+B,EAAKt+B,GAAIs+B,EAAKh0B,IAC3Cg0B,EAAKx1C,GAAK,CAACw1C,EAAKr+B,GAAIq+B,EAAKr+B,GAAIq+B,EAAK/zB,GAAI+zB,EAAK/zB,IAC3C,CAAC,KAAM,KAAM,KAAM,MAAMvkB,SAAQ,SAAUlD,IACf,IAAtB6jO,EAAG71N,QAAQhO,WACNw7C,EAAKx7C,EAEhB,GACF,IACOswgB,IAAYjqc,EACrB,CC9DO,SAAS,IAAcpmC,GAC5B,IAAIzf,EAAOyf,EAAQzf,KACjBykd,EAAahlc,EAAQglc,WACrBuqB,EAAYvvd,EAAQuvd,UACpBvzf,EAAKgkC,EAAQque,gBACbA,OAAyB,IAAPrygB,EAAgB,CAAC,EAAIA,EACrCkihB,EAAc7P,EAAgB6P,YAC9BvvgB,EAAY,CACdq/N,UAAW,IACXgsD,QAAS,KAGP65N,EAAc7zd,EAAQ6zd,YAEtBrwf,EAAOw8B,EAAQx8B,MAAQ,YACvBw/J,EAAQr0J,EAAUnL,GAAM+c,GAAM,WAAS,UAAS,CAClDm6G,MAAOm5X,GAAe,UACrB,UAAKwa,EAAiB,CAAC,iBAAkB,CAE1C7qgB,KAAM,aAAa4K,OAAO5K,GAC1BogO,GAAI,CAAC,IAAK,QAERn2N,EAAS,GAgCb,OA/BAu1J,EAAM//J,SAAQ,SAAUs4C,GACtB,IAAIv/C,EACA+V,EAAIC,EAAImnB,EAAIC,EAAIC,EACpB,GAAmB,IAAfkiB,EAAK5Z,MACP,OAAO,KAET,GAAIu8e,EAAc,GAAK3ie,EAAK5Z,MAAQu8e,EAClC,OAAO,KAIT,IAFA,IAAIx8gB,EAAO65C,EAAKh7B,KAAKzjB,KACjB4zgB,GAAe,UAAS,CAAC,EAAGn1d,GACzBm1d,EAAa/ue,MAAQ,GAC1BjgC,EAAO,GAAG0M,OAA2C,QAAnC2D,EAAK2+f,EAAajkgB,OAAO8T,YAAyB,IAAPxO,OAAgB,EAASA,EAAGjV,KAAM,OAAOsR,OAAO1M,GAC7GgvgB,EAAeA,EAAajkgB,OAE9B,IAAI2igB,GAAW,WAAS,WAAS,UAAS,CAAC,EAAG,IAAK7zd,EAAKh7B,MAAM,WAAc,UAAc,GAAIgve,GAAa,IAAI,GAAO,CAAC8e,EAAgB3zY,QAAQ,OAAW1+H,EAAK,CAAC,GAAM8hhB,KAAuBp8gB,EAAM1F,EAAG4hhB,KAA2BlN,EAAanwf,KAAKzjB,KAAMd,IAAMu/C,GAE3Ps4c,IACFub,EAASvb,GAAet4c,EAAKh7B,KAAKsze,KAA4F,QAA1E16d,EAA4B,QAAtBnnB,EAAKupC,EAAK9uC,cAA2B,IAAPuF,OAAgB,EAASA,EAAGuO,YAAyB,IAAP4Y,OAAgB,EAASA,EAAG06d,KAEhK7uB,IACFoqC,EAASpqC,GAAczpb,EAAKh7B,KAAKykd,KAA2F,QAA1E3rc,EAA4B,QAAtBD,EAAKmiB,EAAK9uC,cAA2B,IAAP2sB,OAAgB,EAASA,EAAG7Y,YAAyB,IAAP8Y,OAAgB,EAASA,EAAG2rc,KAElKoqC,EAASnoT,IAAMonT,EACfe,EAAST,KAAmC,CAC1CN,gBAAiBA,EACjBrpC,WAAYA,EACZuqB,UAAWA,GAEb9hf,EAAOrS,KAAKg0gB,EACd,IACO3hgB,CACT,CCtDA,SAAS,IAAS0O,GAChB,IAYIxV,EAZA4wc,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACf4O,EAAQ5O,EAAQ4O,MAClB5yC,EAAKgkC,EAAQglc,WACbA,OAAoB,IAAPhpe,EAAgB4hhB,IAA0B5hhB,EACvD+hhB,EAAgB/9e,EAAQ+9e,cACxBhsgB,EAAKiuB,EAAQuvd,UACbA,OAAmB,IAAPx9e,EAAgB,GAAKA,EACjCzR,EAAQ0/B,EAAQ1/B,MACdigB,EAAO,IAAcyf,GAyBzB,OAxBAu3a,EAAMh3b,KAAKA,GAGPw9f,IACFp3gB,EAAQ,SAAeqsN,GACrB,OAAO+8R,IAAW,CAAC,EAAG,CACpBrxa,YAAa5pE,KAAK0B,IAAI,IAAMw8M,EAAMrxL,SACjC,UAAWo8e,GAAiBA,EAAc/qT,GAAS+qT,EACxD,GAGF,IAAehuB,IAAW,CAAC,EAAG5ze,EAAQ,CACpC6jB,QAAS,CACP6zX,OAAQ,IACRC,OAAQ,IACR+/F,YAAa7uB,EACbuqB,WAAW,WAAK,WAAc,UAAc,GAAI,KAAY,GAAOA,GAAW,IAC9E90S,QAAS,CACP7rK,MAAOA,EACPjoC,MAAOA,EACPrG,MAAOA,OAIN6b,CACT,CAKO,SAAS,IAAKA,GAGnB,OAFYA,EAAOo7b,MACb7oM,MAAK,GACJvyP,CACT,CAKA,SAAS,IAAMA,GACb,IAAIo7b,EAAQp7b,EAAOo7b,MAEf9vZ,EADQtrC,EAAO6jB,QACCynB,MAChByyJ,EAAW+1S,IAAa14C,EAAO,WAEnC,GAAK9vZ,EAEE,CACL,IAAIzrD,EAAKyrD,EAAMgzE,OACbA,OAAgB,IAAPz+H,EAAgB,CAAC,QAAUA,EACpCd,EAAWusD,EAAMvsD,SACjBsB,GAAM,UAAOirD,EAAO,CAAC,SAAU,aACjCyyJ,EAASzyJ,MAAM,CACbgzE,OAAQA,EACRv/H,SAAUA,EACVsB,IAAK4zf,IAAe5zf,IAExB,MAXE09M,EAASzyJ,OAAM,GAYjB,OAAOtrC,CACT,CAKA,SAAS,IAAWA,GAClB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACf2kE,EAAc3kE,EAAQ2kE,YACxB97B,EAAS7oC,EAAQ6oC,OACjBizK,EAAU97M,EAAQ87M,QAChBgyH,EAAQypG,EAAMz+L,WAAW,CAC3Bt1Q,KAAM,QACNhH,IAAK,CACHmoG,YAAaA,EACb97B,OAAQA,KAMZ,OAHIizK,GACFgyH,EAAMhyH,QAAQA,GAET3/N,CACT,CAKO,SAAS,IAAKA,GACnB,IAAIngB,EACAgkC,EAAU7jB,EAAO6jB,QACjBque,EAAkBrue,EAAQque,gBAC5BlpY,EAAOnlG,EAAQmlG,KACjB,OAAOimG,IAAK,IAAM,CAAC,IAAIpvO,EAAK,CAAC,GAAM6hhB,MAAoB,UAAI14Y,GAAM,UAAIkpY,EAAiB,CAAC,SAAU,UAAWrygB,IAArGovO,CAA2GjvN,EACpH,CAKO,SAAS,IAAQA,GACtB,IAAIo7b,EAAQp7b,EAAOo7b,MAEf33M,EADQzjP,EAAO6jB,QACG4/N,QACtB,IAAgB,IAAZA,EACF23M,EAAM33M,SAAQ,OACT,CACL,IAAI03P,EAAiB13P,GAEhB,UAAIA,EAAS,YAChB03P,EAAiBvH,IAAW,CAAC,EAAG,CAC9BvsC,YAAa,SAAqBxia,GAChC,OAAOA,EAAMn1B,KAAI,SAAUvZ,GACzB,IAAIyyO,GAAS,UAAIwyN,EAAMzf,aAAc,UACjCqmF,GAAgB,UAAIp5R,EAAQ,CAAC+4R,IAAqB,cAAc,SAAUhxgB,GAC5E,OAAOA,CACT,IACIwkgB,GAAiB,UAAIvsR,EAAQ,CAAC84R,IAAkB,cAAc,SAAU/wgB,GAC1E,OAAOA,CACT,IACA,OAAO,WAAS,UAAS,CAAC,EAAGwF,GAAO,CAClCxV,KAAMqhhB,EAAc7rgB,EAAKiO,KAAKu9f,MAC9B9ghB,MAAOs0gB,EAAeh/f,EAAKiO,KAAKvjB,QAEpC,GACF,GACCs6f,IAEL//C,EAAM33M,QAAQ03P,EAChB,CACA,OAAOn7e,CACT,CACA,SAAS,IAAmB6jB,GAC1B,IAAIsue,EAAYtue,EAAQsue,UACtBtygB,EAAKgkC,EAAQ43a,aACbA,OAAsB,IAAP57c,EAAgB,GAAKA,EACtC,OAAIsygB,aAA6C,EAASA,EAAU5lc,SAC3Dqnb,IAAW,CAAC,EAAG/vd,EAAS,CAC7B43a,cAAc,WAAc,UAAc,GAAIA,GAAc,GAAO,CAAC,CAClEp0c,KAAM,aACNhH,IAAK,CACH+ygB,gBAAiBjB,EACjBxT,cAAe,QAEf,KAGD96d,CACT,CAMA,SAAS,IAAY7jB,GACnB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfsue,EAAYtue,EAAQsue,UAUxB,OATA,IAAgB,CACd/2D,MAAOA,EACPv3a,QAAS,IAAmBA,MAG1Bsue,aAA6C,EAASA,EAAU5lc,WAElE6uY,EAAMqB,cAAgB23C,IAAuBh5C,EAAMqB,eAAe,UAAI01D,EAAW,CAAC,aAAc,eAE3Fnyf,CACT,CAMO,SAAS,IAAQA,GAEtB,OAAOivN,IAAK,IAAO,IAAQ,iBAAkB,IAAU,IAAM,IAAM,IAAQ,IAAY,IAAS,IAAO,IAAa7qO,IAAW,MAAxH6qO,CAAsIjvN,EAC/I,EC/L4B,SAAU5f,GAEpC,SAAS6hhB,IACP,IAAI9ihB,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAGhE,OADAS,EAAMkI,KAAO,WACNlI,CACT,EANA,UAAU8ihB,EAAU7hhB,GAWpB6hhB,EAAS7oB,kBAAoB,WAC3B,OAAO,GACT,EAIA6oB,EAASrjhB,UAAUw6f,kBAAoB,WACrC,OAAO6oB,EAAS7oB,mBAClB,EAIA6oB,EAASrjhB,UAAUs7f,iBAAmB,WACpC,OAAO,GACT,EAEA+nB,EAASR,wBAA0BA,IAEnCQ,EAASN,oBAAsBA,IAE/BM,EAASjO,qBAAuBA,GAElC,CAlC4B,CAkC1B7a,KCpCK,SAAS+oB,IAAgBzmE,EAAcigD,GAC5C,IAAK,UAAQjgD,GACb,OAAOA,EAAavpc,MAAK,SAAUtS,GACjC,OAAOA,EAAEyH,OAASq0f,CACpB,GACF,CACO,SAASymB,IAAkB1mE,EAAcigD,GAC9C,IAAIr4D,EAAc6+E,IAAgBzmE,EAAcigD,GAChD,OAAOr4D,IAAsC,IAAvBA,EAAY7oB,MACpC,CAOO,SAAS4nG,IAAuBv+e,GACrC,IAAI43a,EAAe53a,EAAQ43a,aACzB02D,EAAYtue,EAAQsue,UAEtB,OAAO,UAAIA,EAAW,YAAcgQ,IAAkB1mE,EAAc,qBACtE,CAUO,SAAS,IAAc53a,GAC5B,IAAIzf,EAAOyf,EAAQzf,KACjBykd,EAAahlc,EAAQglc,WACrBwrC,EAAkBxwe,EAAQwwe,gBAC1BnC,EAAkBrue,EAAQque,gBACxBrrW,EAAQ,IAAQziJ,GAAM,WAAS,UAAS,CAAC,EAAG8tf,GAAkB,CAEhE7qgB,KAAM,oBACNk3H,MAAO,QACPkpG,GAAI,CAAC,IAAK,QAERn2N,EAAS,GA6Cb,OA5CAu1J,EAAM//J,SAAQ,SAAUs4C,GACtB,GAAmB,IAAfA,EAAK5Z,MACP,OAAO,KAGT,GAAI6ue,GAAkC,IAAfj1d,EAAK5Z,MAC1B,OAAO,KAGT,IAAK6ue,GAAmBj1d,EAAK7wC,SAC3B,OAAO,KAGT,IAAI8zgB,EAAUjje,EAAKq3O,YAAY/mQ,KAAI,SAAUpC,GAC3C,MAAO,CACLlJ,KAAMkJ,EAAElJ,KACR1X,OAAQ4gB,EAAE5gB,OACV7L,MAAOysB,EAAEzsB,MAEb,IAEI0E,EAAO8ugB,IAAmB,UAAQjwf,EAAK7e,MAAQ88gB,EAAQpwgB,OAAOmS,EAAK7e,KAAKmgB,MAAM,IAAM28f,EACpFpP,EAAW/8f,OAAO89B,OAAO,CAAC,EAAGoL,EAAKh7B,MAAM,UAAS,CACnDza,EAAGy1C,EAAKz1C,EACRC,EAAGw1C,EAAKx1C,EACR47B,MAAO4Z,EAAK5Z,MACZ3kC,MAAOu+C,EAAKv+C,MACZ0E,KAAMA,GACL65C,IACH,IAAKA,EAAKh7B,KAAKykd,IAAezpb,EAAK9uC,OAAQ,CACzC,IAAIikgB,EAAen1d,EAAKq3O,YAAYvkR,MAAK,SAAUob,GACjD,OAAOA,EAAElJ,KAAKykd,EAChB,IACAoqC,EAASpqC,GAAc0rC,aAAmD,EAASA,EAAanwf,KAAKykd,EACvG,MACEoqC,EAASpqC,GAAczpb,EAAKh7B,KAAKykd,GAEnCoqC,EAAST,KAAmC,CAC1CN,gBAAiBA,EACjBrpC,WAAYA,EACZwrC,gBAAiBA,GAEnB/igB,EAAOrS,KAAKg0gB,EACd,IACO3hgB,CACT,CChFA,SAAS,IAAe0O,GACtB,IACI6od,EADU7od,EAAO6jB,QACIglc,WACzB,OAAO+qB,IAAW,CAChB/vd,QAAS,CACPuvd,UAAW,CAAC,SACZ3vP,QAAS,CACPnlI,OAAQ,CAAC,OAAQ,QAASuqW,EAAY,QACtCpgJ,UAAW,SAAmBrkU,GAC5B,MAAO,CACLzjB,KAAMyjB,EAAKzjB,KACXE,MAAOujB,EAAKvjB,MAEhB,KAGHmf,EACL,CAKA,SAAS,IAASA,GAChB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACf4O,EAAQ5O,EAAQ4O,MAClBo2b,EAAahlc,EAAQglc,WACrBy5C,EAAYz+e,EAAQy+e,UACpBpQ,EAAkBrue,EAAQque,gBAC1B9e,EAAYvvd,EAAQuvd,UAClBhve,EAAO,IAAc,CACvBA,KAAMyf,EAAQzf,KACdykd,WAAYhlc,EAAQglc,WACpBwrC,gBAAiB+N,IAAuBv+e,GACxCque,gBAAiBA,IAkBnB,OAhBA92D,EAAMh3b,KAAKA,GAEX,IAAYwve,IAAW,CAAC,EAAG5ze,EAAQ,CACjC6jB,QAAS,CACP6zX,OAAQ,IACRC,OAAQ,IACR+/F,YAAa7uB,EACbuqB,UAAWA,EACX90S,QAAS,CACP7rK,MAAOA,EACPjoC,MAAO83gB,OAKblnE,EAAMz+L,aAAah9B,QAAQ,KACpB3/N,CACT,CAKA,SAAS,IAAKA,GAGZ,OAFYA,EAAOo7b,MACb7oM,MAAK,GACJvyP,CACT,CACA,SAAS,IAAmB6jB,GAC1B,IAAIsue,EAAYtue,EAAQsue,UACtBtygB,EAAKgkC,EAAQ43a,aACbA,OAAsB,IAAP57c,EAAgB,GAAKA,EAEtC,OADsBuihB,IAAuBv+e,GAEpC+vd,IAAW,CAAC,EAAG/vd,EAAS,CAC7B43a,cAAc,WAAc,UAAc,GAAIA,GAAc,GAAO,CAAC,CAClEp0c,KAAM,aAENhH,IAAK,CACH+ygB,gBAAiBjB,EACjBxT,cAAe,QAEf,KAGD96d,CACT,CAKO,SAAS,IAAY7jB,GAC1B,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACf43a,EAAe53a,EAAQ43a,aACzB02D,EAAYtue,EAAQsue,UACtB,IAAkB,CAChB/2D,MAAOA,EACPv3a,QAAS,IAAmBA,KAG9B,IAAI0+e,EAAsBL,IAAgBzmE,EAAc,aAkBxD,OAjBI8mE,KAEiC,IAA/BA,EAAoB/nG,OACtB4gC,EAAM3qc,YAAY5R,GAAG,cAAc,SAAU2J,GAC3CA,EAAG2C,gBACL,IAGAiwc,EAAM3qc,YAAYzQ,IAAI,eAIJoihB,IAAuBv+e,KAG3Cu3a,EAAMqB,cAAgB23C,IAAuBh5C,EAAMqB,eAAe,UAAI01D,EAAW,CAAC,aAAc,eAE3Fnyf,CACT,CAMO,SAAS,IAAQA,GACtB,OAAOivN,IAAK,IAAgB,IAAO,IAAQ,aAAc,IAAU,IAAM,IAAQ,IAAS,IAAa7qO,IAAW,MAA3G6qO,CAAyHjvN,EAClI,CCvIO,IAAI,IAAkB,CAE3B6od,WAAY,OACZy5C,UAAW,CACTnkgB,UAAW,EACX0B,OAAQ,QAEVqyf,gBAAiB,CACfv0O,KAAM,mBAERryO,MAAO,CACLgzE,OAAQ,CAAC,QACT9W,OAAQ,CACNngH,KAAM,mBAGVo8P,QAAS,CACP4pM,aAAa,EACbnhT,WAAW,GAGbimX,UAAW,CACT5lc,SAAS,EACT8mc,WAAY,CACVxpd,SAAU,cACV0pd,SAAU,KACVjB,YAAa,IACbn7F,UAAW,CACT33Z,SAAU,GACV86B,KAAM,sBACN7vC,OAAQ,WAEV8ngB,gBAAiB,CACfj4d,KAAM,cChCHkoe,KCKgB,SAAUpihB,GAEnC,SAASm9R,IACP,IAAIp+R,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAGhE,OADAS,EAAMkI,KAAO,UACNlI,CACT,EANA,UAAUo+R,EAASn9R,GAWnBm9R,EAAQ67N,kBAAoB,WAC1B,OAAO,GACT,EAIA77N,EAAQ3+R,UAAUw/c,WAAa,SAAUh6b,GACvC,IAAIvkB,EAAKnB,KAAKmlC,QACZglc,EAAahpe,EAAGgpe,WAChBptB,EAAe57c,EAAG47c,aAClBy2D,EAAkBrygB,EAAGqygB,gBACvBxzgB,KAAKg7f,aAAa,CAChBt1e,KAAMA,IAER,IAAIq+f,EAAY,IAAc,CAC5Br+f,KAAMA,EACNykd,WAAYA,EACZwrC,gBAAiB8N,IAAkB1mE,EAAc,sBACjDy2D,gBAAiBA,IAEnBxzgB,KAAK08c,MAAMgD,WAAWqkE,GJZnB,SAAwBrnE,GAC7B,IAAIsnE,EAAuBtnE,EAAMK,aAAa,cAC9C,GAAKinE,EAAL,CAEA,IAAIC,EAAkBD,EAAqB7wf,QAAQoH,QAAQ/mB,MAAK,SAAUtS,GACxE,MAAkB,sBAAXA,EAAEe,IACX,IACAgihB,EAAgB/td,OALiB,CAMnC,CIKIgud,CAAelkhB,KAAK08c,MACtB,EAIA79K,EAAQ3+R,UAAUw6f,kBAAoB,WACpC,OAAO77N,EAAQ67N,mBACjB,EACA77N,EAAQ3+R,UAAUs7f,iBAAmB,WACnC,OAAO,GACT,CAEF,CA7C2B,CA6CzBf,KDlDoB,MACX0pB,IAAa,OAIb,IAAkB,CAC3BpmE,cAAe,CAAC,GAAI,EAAG,GAAI,GAC3BqmE,UAAW,WACXr/Q,QAAS,CACPv3G,WAAW,EACXmhT,aAAa,EACb/uU,OAAQ,CAAC,KAAM,QACfmqN,UAAW,SAAmB5xH,GAC5B,MAAO,CACLl2N,KAAMk2N,EAAMzkN,GACZvR,MAAOg2N,EAAM7zL,KAEjB,GAEF+yO,OAAQ,CACNlsN,SAAU,YAEZyB,MAAO,CACL9gD,MAAO,CACLmV,UAAW,SACX26B,KAAM,SAIVmha,aAAc,CAAC,CACbp0c,KAAM,gBACNmza,QAAQ,IAEVv4X,MAAO,CACLgzE,OAAQ,CACNzqH,MAAO,CACLqV,OAAQ,SAGZ2yJ,SAAU,CACRhoK,MAAO,CACLqV,OAAQ,OACR1B,UAAW,IAGf4nP,SAAU,CACRv7P,MAAO,CACL+3E,YAAa,GACb01K,cAAe,MAKrBurN,oBAAqB,CAAC,UAAW,uBErD5B,SAASu/D,IAAqBjyQ,GAC9BA,GAGUA,EAAKhzD,WAAW,GAAGz+K,SACzBv4B,SAAQ,SAAU28E,GACzBA,EAAKt/E,MAAMgQ,SACb,GACF,CCNA,IACI6ugB,IAAiC,SAAU5ihB,GAE7C,SAAS4ihB,IACP,OAAkB,OAAX5ihB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAsBA,OAzBA,UAAUskhB,EAAmB5ihB,GAO7B4ihB,EAAkBpkhB,UAAUqkhB,gBAAkB,WAC5CF,IAAqBrkhB,KAAKmzB,QAAQi/O,KACpC,EAEAkyQ,EAAkBpkhB,UAAUq2H,OAAS,WACnC70H,EAAOxB,UAAUq2H,OAAO30H,KAAK5B,MAC7BA,KAAKukhB,iBACP,EAEAD,EAAkBpkhB,UAAU0kT,OAAS,WACnCljT,EAAOxB,UAAU0kT,OAAOhjT,KAAK5B,MAC7BA,KAAKukhB,iBACP,EAEAD,EAAkBpkhB,UAAUg2D,MAAQ,WAClCx0D,EAAOxB,UAAUg2D,MAAMt0D,KAAK5B,MAC5BA,KAAKukhB,iBACP,EACOD,CACT,CA3BqC,CADXpmF,IAAe,mBCCrCsmF,IAAoC,SAAU9ihB,GAEhD,SAAS8ihB,IACP,OAAkB,OAAX9ihB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CA2BA,OA9BA,UAAUwkhB,EAAsB9ihB,GAOhC8ihB,EAAqBtkhB,UAAUqkhB,gBAAkB,WAC/CF,IAAqBrkhB,KAAKmzB,QAAQi/O,KACpC,EAEAoyQ,EAAqBtkhB,UAAUolf,UAAY,WACzC5jf,EAAOxB,UAAUolf,UAAU1jf,KAAK5B,MAChCA,KAAKukhB,iBACP,EAEAC,EAAqBtkhB,UAAU0kT,OAAS,WACtCljT,EAAOxB,UAAU0kT,OAAOhjT,KAAK5B,MAC7BA,KAAKukhB,iBACP,EAEAC,EAAqBtkhB,UAAUqP,MAAQ,WACrC7N,EAAOxB,UAAUqP,MAAM3N,KAAK5B,MAC5BA,KAAKukhB,iBACP,EAEAC,EAAqBtkhB,UAAUg2D,MAAQ,WACrCx0D,EAAOxB,UAAUg2D,MAAMt0D,KAAK5B,MAC5BA,KAAKukhB,iBACP,EACOC,CACT,CAhCwC,CADXtmF,IAAe,sBCAxCumF,IAAwBvmF,IAAe,oBACvCwmF,IAA8BxmF,IAAe,2BAI7CymF,IAAmC,SAAUjjhB,GAE/C,SAASijhB,IACP,OAAkB,OAAXjjhB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAsBA,OAzBA,UAAU2khB,EAAqBjjhB,GAO/BijhB,EAAoBzkhB,UAAUqkhB,gBAAkB,WAC9CF,IAAqBrkhB,KAAKmzB,QAAQi/O,KACpC,EAEAuyQ,EAAoBzkhB,UAAU4zK,SAAW,WACvCpyK,EAAOxB,UAAU4zK,SAASlyK,KAAK5B,MAC/BA,KAAKukhB,iBACP,EAEAI,EAAoBzkhB,UAAU0kT,OAAS,WACrCljT,EAAOxB,UAAU0kT,OAAOhjT,KAAK5B,MAC7BA,KAAKukhB,iBACP,EAEAI,EAAoBzkhB,UAAUg2D,MAAQ,WACpCx0D,EAAOxB,UAAUg2D,MAAMt0D,KAAK5B,MAC5BA,KAAKukhB,iBACP,EACOI,CACT,CA3BuC,CA2BrCF,KAKEG,IAAyC,SAAUljhB,GAErD,SAASkjhB,IACP,OAAkB,OAAXljhB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAsBA,OAzBA,UAAU4khB,EAA2BljhB,GAOrCkjhB,EAA0B1khB,UAAUqkhB,gBAAkB,WACpDF,IAAqBrkhB,KAAKmzB,QAAQi/O,KACpC,EAEAwyQ,EAA0B1khB,UAAU4zK,SAAW,WAC7CpyK,EAAOxB,UAAU4zK,SAASlyK,KAAK5B,MAC/BA,KAAKukhB,iBACP,EAEAK,EAA0B1khB,UAAU0kT,OAAS,WAC3CljT,EAAOxB,UAAU0kT,OAAOhjT,KAAK5B,MAC7BA,KAAKukhB,iBACP,EAEAK,EAA0B1khB,UAAUg2D,MAAQ,WAC1Cx0D,EAAOxB,UAAUg2D,MAAMt0D,KAAK5B,MAC5BA,KAAKukhB,iBACP,EACOK,CACT,CA3B6C,CA2B3CF,KC9DFrmF,IAAe,sBAAuBimF,KACtCjmF,IAAe,yBAA0BmmF,KACzCnmF,IAAe,wBAAyBsmF,KACxCtmF,IAAe,+BAAgCumF,KAG/ClgF,IAAoB,sBAAuB,CACzCh+a,MAAO,CAAC,CACNiiF,QAAS,qBACTluE,OAAQ,+BAEV5L,IAAK,CAAC,CACJ85E,QAAS,qBACTluE,OAAQ,gCAIZiqa,IAAoB,yBAA0B,CAC5Ch+a,MAAO,CAAC,CACNiiF,QAAS,qBACTluE,OAAQ,qCAEV5L,IAAK,CAAC,CACJ85E,QAAS,qBACTluE,OAAQ,mCAKZiqa,IAAoB,wBAAyB,CAC3Ch+a,MAAO,CAAC,CACNiiF,QAAS,gBACTluE,OAAQ,iCAEVm5d,SAAU,CAAC,CACTjrZ,QAAS,WACTluE,OAAQ,CAAC,mCAIbiqa,IAAoB,+BAAgC,CAClDh+a,MAAO,CAAC,CACNiiF,QAAS,gBACTluE,OAAQ,wCAEVm5d,SAAU,CAAC,CACTjrZ,QAAS,WACTluE,OAAQ,CAAC,0CAKbiqa,IAAoB,qBAAsB,CACxCh+a,MAAO,CAAC,CACNiiF,QAAS,yBACTluE,OAAQ,CAAC,qBAAsB,gCAEjC5L,IAAK,CAAC,CACJ85E,QAAS,yBACTluE,OAAQ,CAAC,oBAAqB,iCAIlCiqa,IAAoB,wBAAyB,CAC3Ch+a,MAAO,CAAC,CACNiiF,QAAS,yBACTluE,OAAQ,CAAC,kCAAmC,sCAE9C5L,IAAK,CAAC,CACJ85E,QAAS,yBACTluE,OAAQ,CAAC,8BAA+B,oCCtE5C,IAAIoqf,IAAyB,SAAUnjhB,GAErC,SAASmjhB,IACP,OAAkB,OAAXnjhB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,IAC7D,CAqBA,OAxBA,UAAU6khB,EAAWnjhB,GAWrBmjhB,EAAU3khB,UAAUy2a,cAAgB,SAAUmI,EAAUm5B,EAAajwc,GACnE,IAAI7G,EAAK29a,EAASp5Z,KAChBza,EAAI9J,EAAG8J,EACPC,EAAI/J,EAAG+J,EACLgM,EAAK4na,EAASgmG,gBAChBv2gB,EAAU2I,EAAG3I,QACbE,EAAUyI,EAAGzI,QACf,MAAO,CACLqoE,QAASgoW,EAAShoW,QAAQ9uE,GAC1BiD,EAAGA,EAAIsD,EACPrD,EAAGA,EAAIuD,EAEX,EACOo2gB,CACT,CA1B6B,CA0B3B,KAEFn5D,IAAsB,OAAQm5D,KCV9B,IACA,IADcpkf,MAAMC,QCtBhB9b,IAAS,2CACTC,IAAe,IAAIC,OAAO,WAAaF,IAAS,wCAA0CA,IAAS,QAAUA,IAAS,QAAS,MAC/HG,IAAc,IAAID,OAAO,qCAAuCF,IAAS,QAAUA,IAAS,KAAM,MCH5F3K,KAAK+B,GCef+wc,IAAc,SAAU,OAAQ,CAC9Bjld,KAAM,SAAcnG,EAAKqH,GACvB,IACIoY,EFbO,SAAyB6D,GACtC,IAAKA,EACH,OAAO,KAET,GAAI,IAAQA,GACV,OAAOA,EAET,IAAIC,EAAc,CAChB/G,EAAG,EACHgH,EAAG,EACHC,EAAG,EACHC,EAAG,EACHC,EAAG,EACHvP,EAAG,EACHmJ,EAAG,EACHqG,EAAG,EACHzH,EAAG,EACH/Z,EAAG,EACHkO,EAAG,EACHuT,EAAG,EACHC,EAAG,GAEDC,EAAO,GA2BX,OA1BAC,OAAOV,GAAYW,QAAQf,KAAc,SAAU1G,EAAG8E,EAAGkC,GACvD,IAAI7D,EAAS,GACTrf,EAAOghB,EAAErE,cAYb,GAXAuG,EAAES,QAAQb,KAAa,SAAU5G,EAAG8E,GAClCA,GAAK3B,EAAO/gB,MAAM0iB,EACpB,IACa,MAAThhB,GAAgBqf,EAAOzgB,OAAS,IAClC6kB,EAAKnlB,KAAK,CAAC0iB,GAAG1P,OAAO+N,EAAOlgB,OAAO,EAAG,KACtCa,EAAO,IACPghB,EAAU,MAANA,EAAY,IAAM,KAEX,MAAThhB,GAAkC,IAAlBqf,EAAOzgB,QACzB6kB,EAAKnlB,KAAK,CAAC0iB,EAAG3B,EAAO,KAEV,MAATrf,EACFyjB,EAAKnlB,KAAK,CAAC0iB,GAAG1P,OAAO+N,SAErB,KAAOA,EAAOzgB,QAAUqkB,EAAYjjB,KAClCyjB,EAAKnlB,KAAK,CAAC0iB,GAAG1P,OAAO+N,EAAOlgB,OAAO,EAAG8jB,EAAYjjB,MAC7CijB,EAAYjjB,MAKrB,MAAO,EACT,IACOyjB,CACT,CErCmB,CADJ/jB,EAAI+jB,KACqBy+f,MAChCY,EAVR,SAAsBpjhB,GAEpB,OAAOuzf,IAAW,CAAC,EAAGvzf,EAAI+uZ,aAAc,CACtC90W,KAAMj6C,EAAIoyC,OACTpyC,EAAImK,MACT,CAKoB,CAAanK,GACzB+P,EAAQ1I,EAAUyI,SAAS,CAC7BxP,KAAM,eAERyP,EAAML,SAAS,OAAQ,CACrB/K,OAAO,WAAS,UAAS,CAAC,EAAGy+gB,GAAY,CACvCl+gB,KAAMua,IAERnf,KAAM,cAER,IAAId,EAAKQ,EAAIitd,WACXrgd,EAAUpN,EAAGoN,QACbE,EAAUtN,EAAGsN,QACX0C,EAASgrd,IAAKrod,UAAU,KAAM,CAAC,CAAC,IAAKvF,EAASE,KAElD,OADAiD,EAAMoE,UAAU3E,GACTO,CACT,EACA06c,UAAW,SAAmB9jC,GAC5B,IAAIv0Y,EAAQu0Y,EAAUv0Y,MACtB,MAAO,CACLtL,OAAQ,SACR38B,MAAO,CACL2T,UAAW,EACX0B,OAAQ4yB,EACR6H,KAAM7H,EACN70B,EAAG,GAGT,IC1CF,IAYI8lgB,IAAc,CAChBh2S,OAAQ,SAAgB7wN,GACtB,OAAOA,CACT,EACA8mC,SAAU,SAAkB9mC,EAAG8E,GAC7B,OAAO9E,EAAI8E,EAAI,GACjB,EACA4hI,OAAQ,SAAgB1mI,EAAG8E,GACzB,OAAO,KAAO,GAAK,EAAI9E,EAAI,MAAQ,EAAI8E,EAAI,KAC7C,EACAqmF,QAAS,SAAiBnrF,EAAG8E,GAC3B,OAAOA,EAAI,IAAM,EAAI9E,EAAI8E,EAAI,IAAM,KAAO,EAAI,GAAK,EAAI9E,EAAI,MAAQ,EAAI8E,EAAI,KAC7E,EACA6iG,OAAQ,SAAgB3nG,EAAG8E,GACzB,OAAO9E,EAAI8E,EAAIA,EAAI9E,CACrB,EACAunG,QAAS,SAAiBvnG,EAAG8E,GAC3B,OAAO9E,EAAI8E,EAAI9E,EAAI8E,CACrB,EACAgigB,MAAO,SAAe9mgB,EAAG8E,GACvB,OAAU,MAAN9E,IACJA,EAAW8E,EAAI,IAAX,KAAmB,EAAI9E,EAAI,MACpB,IAFW,IAECA,CACzB,EACA+mgB,KAAM,SAAc/mgB,EAAG8E,GAErB,OAAU,MAANA,EAAkB,IAAmB,IAAN9E,EAAgB,EAAc,KAAO,EAAIlE,KAAKC,IAAI,GAAI,EAAI+I,EAAI,MAAQ9E,EAAI,MAC/G,GAmBK,SAAS,IAAMspN,EAAIh/M,EAAI0yI,QACf,IAATA,IACFA,EAAO,UAGT,IA/DuB93J,EA+DnB8hhB,GA/DmB9hhB,EA4CD,SAAoB83J,GAC1C,IAAK6pX,IAAY7pX,GACf,MAAM,IAAIlzH,MAAM,sBAAwBkzH,GAE1C,OAAO6pX,IAAY7pX,EACrB,CAcyBiqX,CAAWjqX,GA9D3B,SAAUssE,EAAIh/M,GACnB,IAAIvF,EAAM,GAIV,OAHAA,EAAI,GAAK7f,EAAEokO,EAAG,GAAIh/M,EAAG,IACrBvF,EAAI,GAAK7f,EAAEokO,EAAG,GAAIh/M,EAAG,IACrBvF,EAAI,GAAK7f,EAAEokO,EAAG,GAAIh/M,EAAG,IACdvF,CACT,GAwDyCmigB,IAAW59S,GAAK49S,IAAW58f,IAChEtnB,EAAKkkhB,IAAW59S,GAClB55M,EAAK1sB,EAAG,GACRmkhB,EAAKnkhB,EAAG,GACRqc,EAAKrc,EAAG,GACR64C,EAAK74C,EAAG,GACN+V,EAAKmugB,IAAW58f,GAClBkF,EAAKzW,EAAG,GACRqugB,EAAKrugB,EAAG,GACR6F,EAAK7F,EAAG,GACR6T,EAAK7T,EAAG,GACNiH,EAAI8D,QAAQ+3B,EAAKjvB,GAAM,EAAIivB,IAAK5xB,QAAQ,IACxClJ,EAAIjF,KAAKwoB,OAAOuX,GAAM,EAAIjvB,IAAO8C,EAAK,KAAOmsB,EAAKjvB,GAAMo6f,EAAY,GAAK,MAAQ,EAAInre,GAAMjvB,GAAM4C,EAAK,MAAQxP,EAAI,KAClHq2B,EAAIv6B,KAAKwoB,OAAOuX,GAAM,EAAIjvB,IAAOu6f,EAAK,KAAOtre,EAAKjvB,GAAMo6f,EAAY,GAAK,MAAQ,EAAInre,GAAMjvB,GAAMw6f,EAAK,MAAQpngB,EAAI,KAClH8E,EAAIhJ,KAAKwoB,OAAOuX,GAAM,EAAIjvB,IAAOvN,EAAK,KAAOw8B,EAAKjvB,GAAMo6f,EAAY,GAAK,MAAQ,EAAInre,GAAMjvB,GAAMhO,EAAK,MAAQoB,EAAI,KACtH,MAAO,QAAQ5K,OAAO2L,EAAG,MAAM3L,OAAOihC,EAAG,MAAMjhC,OAAO0P,EAAG,MAAM1P,OAAO4K,EAAG,IAC3E,CAOO,SAASkngB,IAAWlggB,GACzB,IACIqggB,EADAzxe,EAAQ5uB,EAAES,QAAQ,QAAS,IAG/B,MAAqB,iBAAVmuB,GAAuBA,EAAMwtC,WAAW,SAAYxtC,EAAMwtC,WAAW,MAI5ExtC,EAAMwtC,WAAW,UAASikc,EAAUzxe,EAAMnuB,QAAQ,QAAS,IAAIA,QAAQ,IAAK,IAAI0D,MAAM,MAEtFyqB,EAAMwtC,WAAW,OAAMikc,EAAU,IAAUjnH,QAAQxqX,GAAOxgC,OAAO,CAAC,KAE/DiygB,EAAQx0f,KAAI,SAAUvZ,EAAMzP,GACjC,OAAiB,IAAVA,EAAcia,OAAOxK,GAAe,EAAPA,CACtC,KATmB,IAAU8mZ,QAAQ,IAAUE,MAAM1qX,IAAQxgC,OAAO,CAAC,GAUvE,kBC1GIkygB,IAAQ,MAGL,SAASC,IAAiBrtP,EAASstP,GAExC,IAOEzkhB,EAPE0khB,EAoIN,SAA+BvtP,GAE7B,IADA,IAAIz2O,EAAM,GACD1gD,EAAI,EAAGA,EAAIm3R,EAAQx3R,SAAUK,EACpC,IAAK,IAAIgG,EAAIhG,EAAI,EAAGgG,EAAImxR,EAAQx3R,SAAUqG,EAExC,IADA,IAAIgmB,EAAY24f,IAAyBxtP,EAAQn3R,GAAIm3R,EAAQnxR,IACpDR,EAAI,EAAGA,EAAIwmB,EAAUrsB,SAAU6F,EAAG,CACzC,IAAI0X,EAAI8O,EAAUxmB,GAClB0X,EAAE0ngB,YAAc,CAAC5khB,EAAGgG,GACpB06C,EAAIrhD,KAAK6d,EACX,CAGJ,OAAOwjC,CACT,CAjJ2Bmke,CAAsB1tP,GAE3C2tP,EAAcJ,EAAmBr1gB,QAAO,SAAU6N,GACpD,OAwHG,SAA4BpT,EAAOqtR,GACxC,IAAK,IAAIn3R,EAAI,EAAGA,EAAIm3R,EAAQx3R,SAAUK,EACpC,GAAI,IAAS8J,EAAOqtR,EAAQn3R,IAAMm3R,EAAQn3R,GAAG8sE,OAASy3c,IACpD,OAAO,EAGX,OAAO,CACT,CA/HWQ,CAAmB7ngB,EAAGi6Q,EAC/B,IACI6tP,EAAU,EACZC,EAAc,EAEZ1mU,EAAO,GAGX,GAAIumU,EAAYnlhB,OAAS,EAAG,CAG1B,IAAIg9B,EAASquY,IAAU85G,GACvB,IAAK9khB,EAAI,EAAGA,EAAI8khB,EAAYnlhB,SAAUK,EAAG,CACvC,IAAIkd,EAAI4ngB,EAAY9khB,GACpBkd,EAAEsJ,MAAQzN,KAAKqG,MAAMlC,EAAEnT,EAAI4yB,EAAO5yB,EAAGmT,EAAElT,EAAI2yB,EAAO3yB,EACpD,CACA86gB,EAAYzzgB,MAAK,SAAU4L,EAAG8E,GAC5B,OAAOA,EAAEyE,MAAQvJ,EAAEuJ,KACrB,IAGA,IAAI+B,EAAKu8f,EAAYA,EAAYnlhB,OAAS,GAC1C,IAAKK,EAAI,EAAGA,EAAI8khB,EAAYnlhB,SAAUK,EAAG,CACvC,IAAIuqB,EAAKu6f,EAAY9khB,GAErBilhB,IAAgB18f,EAAGxe,EAAIwgB,EAAGxgB,IAAMwgB,EAAGvgB,EAAIue,EAAGve,GAO1C,IALA,IAAIq4U,EAAW,CACbt4U,GAAIwgB,EAAGxgB,EAAIwe,EAAGxe,GAAK,EACnBC,GAAIugB,EAAGvgB,EAAIue,EAAGve,GAAK,GAEjBw0M,EAAM,KACDx4M,EAAI,EAAGA,EAAIukB,EAAGq6f,YAAYjlhB,SAAUqG,EAC3C,GAAIuiB,EAAGq8f,YAAY5ygB,QAAQuY,EAAGq6f,YAAY5+gB,KAAO,EAAG,CAGlD,IAAIuZ,EAAS43Q,EAAQ5sQ,EAAGq6f,YAAY5+gB,IAClC6jB,EAAK9Q,KAAKqG,MAAMmL,EAAGxgB,EAAIwV,EAAOxV,EAAGwgB,EAAGvgB,EAAIuV,EAAOvV,GAC/C8f,EAAK/Q,KAAKqG,MAAMmJ,EAAGxe,EAAIwV,EAAOxV,EAAGwe,EAAGve,EAAIuV,EAAOvV,GAC7Ck7gB,EAAYp7f,EAAKD,EACjBq7f,EAAY,IACdA,GAAa,EAAInsgB,KAAK+B,IAIxB,IAAImC,EAAI6M,EAAKo7f,EAAY,EACrBr4gB,EAAQ,IAASw1U,EAAU,CAC7Bt4U,EAAGwV,EAAOxV,EAAIwV,EAAOutD,OAAS/zD,KAAKoC,IAAI8B,GACvCjT,EAAGuV,EAAOvV,EAAIuV,EAAOutD,OAAS/zD,KAAKkC,IAAIgC,KAIrCpQ,EAAwB,EAAhB0S,EAAOutD,SACjBjgE,EAAwB,EAAhB0S,EAAOutD,SAGL,OAAR0xI,GAAgBA,EAAI3xM,MAAQA,KAC9B2xM,EAAM,CACJj/L,OAAQA,EACR1S,MAAOA,EACP0d,GAAIA,EACJhC,GAAIA,GAGV,CAEU,OAARi2L,IACFD,EAAKl/M,KAAKm/M,GACVwmU,GAAWG,IAAW3mU,EAAIj/L,OAAOutD,OAAQ0xI,EAAI3xM,OAC7C0b,EAAKgC,EAET,CACF,KAAO,CAGL,IAAI66f,EAAWjuP,EAAQ,GACvB,IAAKn3R,EAAI,EAAGA,EAAIm3R,EAAQx3R,SAAUK,EAC5Bm3R,EAAQn3R,GAAG8sE,OAASs4c,EAASt4c,SAC/Bs4c,EAAWjuP,EAAQn3R,IAKvB,IAAIqlhB,GAAW,EACf,IAAKrlhB,EAAI,EAAGA,EAAIm3R,EAAQx3R,SAAUK,EAChC,GAAI,IAASm3R,EAAQn3R,GAAIolhB,GAAYrsgB,KAAKoG,IAAIimgB,EAASt4c,OAASqqN,EAAQn3R,GAAG8sE,QAAS,CAClFu4c,GAAW,EACX,KACF,CAEEA,EACFL,EAAUC,EAAc,GAExBD,EAAUI,EAASt4c,OAASs4c,EAASt4c,OAAS/zD,KAAK+B,GACnDyjM,EAAKl/M,KAAK,CACRkgB,OAAQ6lgB,EACR76f,GAAI,CACFxgB,EAAGq7gB,EAASr7gB,EACZC,EAAGo7gB,EAASp7gB,EAAIo7gB,EAASt4c,QAE3BvkD,GAAI,CACFxe,EAAGq7gB,EAASr7gB,EAAIw6gB,IAChBv6gB,EAAGo7gB,EAASp7gB,EAAIo7gB,EAASt4c,QAE3BjgE,MAAyB,EAAlBu4gB,EAASt4c,SAGtB,CAUA,OATAm4c,GAAe,EACXR,IACFA,EAAM/8d,KAAOs9d,EAAUC,EACvBR,EAAMO,QAAUA,EAChBP,EAAMQ,YAAcA,EACpBR,EAAMlmU,KAAOA,EACbkmU,EAAMK,YAAcA,EACpBL,EAAMC,mBAAqBA,GAEtBM,EAAUC,CACnB,CA0BO,SAASE,IAAWnngB,EAAGnR,GAC5B,OAAOmR,EAAIA,EAAIjF,KAAKgG,KAAK,EAAIlS,EAAQmR,IAAMA,EAAInR,GAASkM,KAAK2C,KAAK7O,GAAS,EAAImR,EAAInR,GACrF,CAEO,SAAS,IAAS0d,EAAIhC,GAC3B,OAAOxP,KAAK2C,MAAM6O,EAAGxgB,EAAIwe,EAAGxe,IAAMwgB,EAAGxgB,EAAIwe,EAAGxe,IAAMwgB,EAAGvgB,EAAIue,EAAGve,IAAMugB,EAAGvgB,EAAIue,EAAGve,GAC9E,CAIO,SAASs7gB,IAAc74f,EAAIC,EAAI7H,GAEpC,GAAIA,GAAK4H,EAAKC,EACZ,OAAO,EAGT,GAAI7H,GAAK9L,KAAKoG,IAAIsN,EAAKC,GACrB,OAAO3T,KAAK+B,GAAK/B,KAAKC,IAAIyT,EAAIC,GAAM3T,KAAKC,IAAIyT,EAAIC,GAEnD,IACEo0B,EAAKp0B,GAAM7H,EAAIA,EAAI4H,EAAKA,EAAKC,EAAKA,IAAO,EAAI7H,GAC/C,OAAOsggB,IAAW14f,EAFTA,GAAM5H,EAAIA,EAAI6H,EAAKA,EAAKD,EAAKA,IAAO,EAAI5H,IAErBsggB,IAAWz4f,EAAIo0B,EAC7C,CAKO,SAAS6je,IAAyBp6f,EAAIhC,GAC3C,IAAI1D,EAAI,IAAS0F,EAAIhC,GACnBkE,EAAKlC,EAAGuiD,OACRpgD,EAAKnE,EAAGukD,OAEV,GAAIjoD,GAAK4H,EAAKC,GAAM7H,GAAK9L,KAAKoG,IAAIsN,EAAKC,GACrC,MAAO,GAET,IAAIzP,GAAKwP,EAAKA,EAAKC,EAAKA,EAAK7H,EAAIA,IAAM,EAAIA,GACzCV,EAAIpL,KAAK2C,KAAK+Q,EAAKA,EAAKxP,EAAIA,GAC5BuO,EAAKjB,EAAGxgB,EAAIkT,GAAKsL,EAAGxe,EAAIwgB,EAAGxgB,GAAK8a,EAChC4G,EAAKlB,EAAGvgB,EAAIiT,GAAKsL,EAAGve,EAAIugB,EAAGvgB,GAAK6a,EAChCnE,IAAO6H,EAAGve,EAAIugB,EAAGvgB,IAAMma,EAAIU,GAC3BlE,IAAO4H,EAAGxe,EAAIwgB,EAAGxgB,IAAMoa,EAAIU,GAC7B,MAAO,CAAC,CACN9a,EAAGyhB,EAAK9K,EACR1W,EAAGyhB,EAAK9K,GACP,CACD5W,EAAGyhB,EAAK9K,EACR1W,EAAGyhB,EAAK9K,GAEZ,CAEO,SAASqqZ,IAAUxrZ,GAKxB,IAJA,IAAImd,EAAS,CACX5yB,EAAG,EACHC,EAAG,GAEIhK,EAAI,EAAGA,EAAIwf,EAAO7f,SAAUK,EACnC28B,EAAO5yB,GAAKyV,EAAOxf,GAAG+J,EACtB4yB,EAAO3yB,GAAKwV,EAAOxf,GAAGgK,EAIxB,OAFA2yB,EAAO5yB,GAAKyV,EAAO7f,OACnBg9B,EAAO3yB,GAAKwV,EAAO7f,OACZg9B,CACT,CCpNA,SAAS4of,IAAah/gB,EAASgwN,EAAUC,GACvC,IACEx2N,EACA6U,EAFEy0F,EAASitH,EAAS,GAAGzpJ,OAAS,IAASypJ,EAAS,GAAIhwN,GAGxD,IAAKvG,EAAI,EAAGA,EAAIu2N,EAAS52N,SAAUK,GACjC6U,EAAI0hN,EAASv2N,GAAG8sE,OAAS,IAASypJ,EAASv2N,GAAIuG,KACtC+iG,IACPA,EAASz0F,GAGb,IAAK7U,EAAI,EAAGA,EAAIw2N,EAAS72N,SAAUK,GACjC6U,EAAI,IAAS2hN,EAASx2N,GAAIuG,GAAWiwN,EAASx2N,GAAG8sE,SACxCw8B,IACPA,EAASz0F,GAGb,OAAOy0F,CACT,CAIO,SAASk8a,IAAkBjvT,EAAUC,GAG1C,IACIx2N,EADAwf,EAAS,GAEb,IAAKxf,EAAI,EAAGA,EAAIu2N,EAAS52N,SAAUK,EAAG,CACpC,IAAIikB,EAAIsyM,EAASv2N,GACjBwf,EAAOngB,KAAK,CACV0K,EAAGka,EAAEla,EACLC,EAAGia,EAAEja,IAEPwV,EAAOngB,KAAK,CACV0K,EAAGka,EAAEla,EAAIka,EAAE6oD,OAAS,EACpB9iE,EAAGia,EAAEja,IAEPwV,EAAOngB,KAAK,CACV0K,EAAGka,EAAEla,EAAIka,EAAE6oD,OAAS,EACpB9iE,EAAGia,EAAEja,IAEPwV,EAAOngB,KAAK,CACV0K,EAAGka,EAAEla,EACLC,EAAGia,EAAEja,EAAIia,EAAE6oD,OAAS,IAEtBttD,EAAOngB,KAAK,CACV0K,EAAGka,EAAEla,EACLC,EAAGia,EAAEja,EAAIia,EAAE6oD,OAAS,GAExB,CACA,IAAIzpB,EAAU7jC,EAAO,GACnB8pF,EAASi8a,IAAa/lgB,EAAO,GAAI+2M,EAAUC,GAC7C,IAAKx2N,EAAI,EAAGA,EAAIwf,EAAO7f,SAAUK,EAAG,CAClC,IAAI6U,EAAI0wgB,IAAa/lgB,EAAOxf,GAAIu2N,EAAUC,GACtC3hN,GAAKy0F,IACPjmD,EAAU7jC,EAAOxf,GACjBspG,EAASz0F,EAEb,CAEA,IAAI4wgB,GAAW,MAAA1ke,aAAW,SAAU7jC,GAClC,OAAQ,EAAIqogB,IAAa,CACvBx7gB,EAAGmT,EAAE,GACLlT,EAAGkT,EAAE,IACJq5M,EAAUC,EACf,GAAG,CAACnzK,EAAQt5C,EAAGs5C,EAAQr5C,GAAI,CACzBk2C,cAAe,IACfiB,cAAe,QACdp3C,EACC22C,EAAM,CACR32C,EAAG07gB,EAAS,GACZz7gB,EAAGy7gB,EAAS,IAIVz7a,GAAQ,EACZ,IAAKhqG,EAAI,EAAGA,EAAIu2N,EAAS52N,SAAUK,EACjC,GAAI,IAAS0gD,EAAK61K,EAASv2N,IAAMu2N,EAASv2N,GAAG8sE,OAAQ,CACnDk9B,GAAQ,EACR,KACF,CAEF,IAAKhqG,EAAI,EAAGA,EAAIw2N,EAAS72N,SAAUK,EACjC,GAAI,IAAS0gD,EAAK81K,EAASx2N,IAAMw2N,EAASx2N,GAAG8sE,OAAQ,CACnDk9B,GAAQ,EACR,KACF,CAEF,IAAKA,EACH,GAAuB,GAAnBusH,EAAS52N,OACX+gD,EAAM,CACJ32C,EAAGwsN,EAAS,GAAGxsN,EACfC,EAAGusN,EAAS,GAAGvsN,OAEZ,CACL,IAAI07gB,EAAY,CAAC,EACjBlB,IAAiBjuT,EAAUmvT,GAEzBhle,EAD4B,IAA1Bgle,EAAUnnU,KAAK5+M,OACX,CACJoK,EAAG,EACHC,GAAI,IACJq7gB,UAAU,GAEsB,GAAzBK,EAAUnnU,KAAK5+M,OAClB,CACJoK,EAAG27gB,EAAUnnU,KAAK,GAAGh/L,OAAOxV,EAC5BC,EAAG07gB,EAAUnnU,KAAK,GAAGh/L,OAAOvV,GAErBwsN,EAAS72N,OAEZ6lhB,IAAkBjvT,EAAU,IAM5By0M,IAAU06G,EAAUnnU,KAAKzuL,KAAI,SAAU7S,GAC3C,OAAOA,EAAEsN,EACX,IAEJ,CAEF,OAAOm2B,CACT,CAwBO,SAASile,IAAmBxuP,EAASyuP,GAG1C,IAFA,IAAIlle,EAAM,CAAC,EACTmle,EAvBJ,SAA+B1uP,GAC7B,IAAIz2O,EAAM,CAAC,EACTole,EAAY,GACd,IAAK,IAAIC,KAAY5uP,EACnB2uP,EAAUzmhB,KAAK0mhB,GACfrle,EAAIqle,GAAY,GAElB,IAAK,IAAI/lhB,EAAI,EAAGA,EAAI8lhB,EAAUnmhB,OAAQK,IAEpC,IADA,IAAIid,EAAIk6Q,EAAQ2uP,EAAU9lhB,IACjBgG,EAAIhG,EAAI,EAAGgG,EAAI8/gB,EAAUnmhB,SAAUqG,EAAG,CAC7C,IAAI+b,EAAIo1Q,EAAQ2uP,EAAU9/gB,IACxB6e,EAAI,IAAS5H,EAAG8E,GACd8C,EAAI9C,EAAE+qD,QAAU7vD,EAAE6vD,OAAS,MAC7BpsB,EAAIole,EAAU9/gB,IAAI3G,KAAKymhB,EAAU9lhB,IACxB6kB,EAAI5H,EAAE6vD,QAAU/qD,EAAE+qD,OAAS,OACpCpsB,EAAIole,EAAU9lhB,IAAIX,KAAKymhB,EAAU9/gB,GAErC,CAEF,OAAO06C,CACT,CAGiBsle,CAAsB7uP,GAC5Bn3R,EAAI,EAAGA,EAAI4lhB,EAAMjmhB,SAAUK,EAAG,CAIrC,IAHA,IAAI0nD,EAAOk+d,EAAM5lhB,GAAGimhB,KAClBC,EAAU,CAAC,EACXC,EAAU,CAAC,EACJnghB,EAAI,EAAGA,EAAI0hD,EAAK/nD,SAAUqG,EAAG,CACpCkghB,EAAQx+d,EAAK1hD,KAAM,EAKnB,IAJA,IAAIoghB,EAAWP,EAAWn+d,EAAK1hD,IAItBR,EAAI,EAAGA,EAAI4ghB,EAASzmhB,SAAU6F,EACrC2ghB,EAAQC,EAAS5ghB,KAAM,CAE3B,CACA,IAAI+wN,EAAW,GACbC,EAAW,GACb,IAAK,IAAIkC,KAASy+D,EACZz+D,KAASwtT,EACX3vT,EAASl3N,KAAK83R,EAAQz+D,IACXA,KAASytT,GACpB3vT,EAASn3N,KAAK83R,EAAQz+D,IAG1B,IAAI2tT,EAASb,IAAkBjvT,EAAUC,GACzC91K,EAAIgH,GAAQ2+d,EACRA,EAAOhB,UAAYO,EAAM5lhB,GAAGojC,KAAO,GACrC0gG,QAAQtrF,IAAI,iBAAmBkP,EAAO,6BAE1C,CACA,OAAOhH,CACT,CCnIA,IAAI,IAAQ,MAGL,SAAS4le,IAA0B75f,EAAIC,EAAIgsS,GAEhD,OAAI3/S,KAAKC,IAAIyT,EAAIC,GAAM3T,KAAKC,IAAIyT,EAAIC,GAAM3T,KAAK+B,IAAM49S,EAAU,IACtD3/S,KAAKoG,IAAIsN,EAAKC,IAEhB,MAAAszB,SAAO,SAAU/sB,GACtB,OAAOqyf,IAAc74f,EAAIC,EAAIuG,GAAYylS,CAC3C,GAAG,EAAGjsS,EAAKC,EACb,CAyGO,SAAS65f,IAAkBX,EAAOxlgB,GACvC,IAAIijC,EA0EC,SAAsBuie,EAAOxlgB,GAMlC,IALA,IAIIpf,EAJAwlhB,EAAOpmgB,GAAUA,EAAOqmgB,aAAermgB,EAAOqmgB,aAAeA,IAE7DtvP,EAAU,CAAC,EACbuvP,EAAc,CAAC,EAER1mhB,EAAI,EAAGA,EAAI4lhB,EAAMjmhB,SAAUK,EAAG,CACrC,IAAI0nD,EAAOk+d,EAAM5lhB,GACO,GAApB0nD,EAAKu+d,KAAKtmhB,SACZqB,EAAM0mD,EAAKu+d,KAAK,GAChB9uP,EAAQn2R,GAAO,CACb+I,EAAG,KACHC,EAAG,KAEH28gB,MAAOrwgB,OAAOopB,KAAKy3P,GAASx3R,OAC5ByjC,KAAMskB,EAAKtkB,KACX0pC,OAAQ/zD,KAAK2C,KAAKgsC,EAAKtkB,KAAOrqB,KAAK+B,KAErC4rgB,EAAY1lhB,GAAO,GAEvB,CACA4khB,EAAQA,EAAMv2gB,QAAO,SAAU4N,GAC7B,OAAwB,GAAjBA,EAAEgpgB,KAAKtmhB,MAChB,IAEA,IAASK,EAAI,EAAGA,EAAI4lhB,EAAMjmhB,SAAUK,EAAG,CACrC,IAAIuG,EAAUq/gB,EAAM5lhB,GAEhBunD,EAAShhD,EAAQ8P,eAAe,UAAY9P,EAAQghD,OAAS,EAC7Dz5C,EAAOvH,EAAQ0/gB,KAAK,GACtBx0gB,EAAQlL,EAAQ0/gB,KAAK,GAEnB1/gB,EAAQ68B,KAAO,KAASrqB,KAAKC,IAAIm+Q,EAAQrpR,GAAMs1B,KAAM+zP,EAAQ1lR,GAAO2xB,QACtEmkB,EAAS,GAEXm/d,EAAY54gB,GAAMzO,KAAK,CACrB2B,IAAKyQ,EACL2xB,KAAM78B,EAAQ68B,KACdmkB,OAAQA,IAEVm/d,EAAYj1gB,GAAOpS,KAAK,CACtB2B,IAAK8M,EACLs1B,KAAM78B,EAAQ68B,KACdmkB,OAAQA,GAEZ,CAEA,IAAIq/d,EAAiB,GACrB,IAAK5lhB,KAAO0lhB,EAEV,GAAIA,EAAYrwgB,eAAerV,GAAM,CACnC,IAAIoiC,EAAO,EACX,IAASpjC,EAAI,EAAGA,EAAI0mhB,EAAY1lhB,GAAKrB,SAAUK,EAC7CojC,GAAQsjf,EAAY1lhB,GAAKhB,GAAGojC,KAAOsjf,EAAY1lhB,GAAKhB,GAAGunD,OAEzDq/d,EAAevnhB,KAAK,CAClB2B,IAAKA,EACLoiC,KAAMA,GAEV,CAGF,SAASye,EAAU5kC,EAAG8E,GACpB,OAAOA,EAAEqhB,KAAOnmB,EAAEmmB,IACpB,CACAwjf,EAAev1gB,KAAKwwC,GAEpB,IAAIgle,EAAa,CAAC,EAClB,SAASC,EAAar4gB,GACpB,OAAOA,EAAQzN,OAAO6lhB,CACxB,CAEA,SAASE,EAAYj9gB,EAAOhD,GAC1BqwR,EAAQrwR,GAAOiD,EAAID,EAAMC,EACzBotR,EAAQrwR,GAAOkD,EAAIF,EAAME,EACzB68gB,EAAW//gB,IAAS,CACtB,CAEAighB,EAAY,CACVh9gB,EAAG,EACHC,EAAG,GACF48gB,EAAe,GAAG5lhB,KAIrB,IAAShB,EAAI,EAAGA,EAAI4mhB,EAAejnhB,SAAUK,EAAG,CAC9C,IAAIgnhB,EAAWJ,EAAe5mhB,GAAGgB,IAC/B03T,EAAUguN,EAAYM,GAAU33gB,OAAOy3gB,GAGzC,GAFA9lhB,EAAMm2R,EAAQ6vP,GACdtuN,EAAQrnT,KAAKwwC,GACU,IAAnB62Q,EAAQ/4T,OAEV,KAAM,8CAGR,IADA,IAAI6f,EAAS,GACJxZ,EAAI,EAAGA,EAAI0yT,EAAQ/4T,SAAUqG,EAAG,CAEvC,IAAIukB,EAAK4sQ,EAAQuhC,EAAQ1yT,GAAGhF,KAC1BmzB,EAAKmyf,IAA0BtlhB,EAAI8rE,OAAQviD,EAAGuiD,OAAQ4rP,EAAQ1yT,GAAGo9B,MAEnE5jB,EAAOngB,KAAK,CACV0K,EAAGwgB,EAAGxgB,EAAIoqB,EACVnqB,EAAGugB,EAAGvgB,IAERwV,EAAOngB,KAAK,CACV0K,EAAGwgB,EAAGxgB,EAAIoqB,EACVnqB,EAAGugB,EAAGvgB,IAERwV,EAAOngB,KAAK,CACV2K,EAAGugB,EAAGvgB,EAAImqB,EACVpqB,EAAGwgB,EAAGxgB,IAERyV,EAAOngB,KAAK,CACV2K,EAAGugB,EAAGvgB,EAAImqB,EACVpqB,EAAGwgB,EAAGxgB,IAIR,IAAK,IAAIvE,EAAIQ,EAAI,EAAGR,EAAIkzT,EAAQ/4T,SAAU6F,EAYxC,IAXA,IAAI+iB,EAAK4uQ,EAAQuhC,EAAQlzT,GAAGxE,KAC1BszB,EAAKgyf,IAA0BtlhB,EAAI8rE,OAAQvkD,EAAGukD,OAAQ4rP,EAAQlzT,GAAG49B,MAC/D6jf,EAActC,IAAyB,CACzC56gB,EAAGwgB,EAAGxgB,EACNC,EAAGugB,EAAGvgB,EACN8iE,OAAQ34C,GACP,CACDpqB,EAAGwe,EAAGxe,EACNC,EAAGue,EAAGve,EACN8iE,OAAQx4C,IAEDlQ,EAAI,EAAGA,EAAI6igB,EAAYtnhB,SAAUykB,EACxC5E,EAAOngB,KAAK4nhB,EAAY7igB,GAG9B,CAGA,IAAI8igB,EAAW,KACbC,EAAY3ngB,EAAO,GACrB,IAASxZ,EAAI,EAAGA,EAAIwZ,EAAO7f,SAAUqG,EAAG,CACtCmxR,EAAQ6vP,GAAUj9gB,EAAIyV,EAAOxZ,GAAG+D,EAChCotR,EAAQ6vP,GAAUh9gB,EAAIwV,EAAOxZ,GAAGgE,EAChC,IAAIo9gB,EAAYZ,EAAKrvP,EAASyuP,GAC1BwB,EAAYF,IACdA,EAAWE,EACXD,EAAY3ngB,EAAOxZ,GAEvB,CACA+ghB,EAAYI,EAAWH,EACzB,CACA,OAAO7vP,CACT,CAjOgBkwP,CAAazB,EAAOxlgB,GAC9BomgB,EAAOpmgB,EAAOqmgB,cAAgBA,IAKlC,GAAIb,EAAMjmhB,QAAU,EAAG,CACrB,IAAI2nhB,EAUD,SAA8B1B,EAAOxlgB,GAC1CA,EAASA,GAAU,CAAC,EACpB,IAIIpgB,EAJAunhB,EAAWnngB,EAAOmngB,UAAY,GAE9BtB,EAAO,GACTuB,EAAS,CAAC,EAEZ,IAAKxnhB,EAAI,EAAGA,EAAI4lhB,EAAMjmhB,SAAUK,EAAG,CACjC,IAAI0nD,EAAOk+d,EAAM5lhB,GACO,GAApB0nD,EAAKu+d,KAAKtmhB,SACZ6nhB,EAAO9/d,EAAKu+d,KAAK,IAAMA,EAAKtmhB,OAC5BsmhB,EAAK5mhB,KAAKqoD,GAEd,CACA,IAAI+/d,EA7FC,SAA6B7B,EAAOK,EAAMuB,GAE/C,IAAIzyP,GAAY,MAAAv0O,QAAOyle,EAAKtmhB,OAAQsmhB,EAAKtmhB,QACvC+nhB,GAAc,MAAAlne,QAAOyle,EAAKtmhB,OAAQsmhB,EAAKtmhB,QAsBzC,OAnBAimhB,EAAMv2gB,QAAO,SAAUtF,GACrB,OAAwB,GAAjBA,EAAEk8gB,KAAKtmhB,MAChB,IAAGmwB,KAAI,SAAUvpB,GACf,IAAIuH,EAAO05gB,EAAOjhhB,EAAQ0/gB,KAAK,IAC7Bx0gB,EAAQ+1gB,EAAOjhhB,EAAQ0/gB,KAAK,IAG5Bhzf,EAAWqzf,IAFNvtgB,KAAK2C,KAAKuqgB,EAAKn4gB,GAAMs1B,KAAOrqB,KAAK+B,IACjC/B,KAAK2C,KAAKuqgB,EAAKx0gB,GAAO2xB,KAAOrqB,KAAK+B,IACMvU,EAAQ68B,MACvD2xP,EAAUjnR,GAAM2D,GAASsjR,EAAUtjR,GAAO3D,GAAQmlB,EAGlD,IAAIhP,EAAI,EACJ1d,EAAQ68B,KAAO,OAASrqB,KAAKC,IAAIitgB,EAAKn4gB,GAAMs1B,KAAM6if,EAAKx0gB,GAAO2xB,MAChEnf,EAAI,EACK1d,EAAQ68B,MAAQ,QACzBnf,GAAK,GAEPyjgB,EAAY55gB,GAAM2D,GAASi2gB,EAAYj2gB,GAAO3D,GAAQmW,CACxD,IACO,CACL8wQ,UAAWA,EACX2yP,YAAaA,EAEjB,CAgEiBC,CAAoB/B,EAAOK,EAAMuB,GAC5CzyP,EAAY0yP,EAAS1yP,UACrB2yP,EAAcD,EAASC,YAGvBE,GAAO,MAAAjne,OAAMo0O,EAAUjlQ,IAAI,IAAA6wB,QAAUo0O,EAAUp1R,OACnDo1R,EAAYA,EAAUjlQ,KAAI,SAAUoR,GAClC,OAAOA,EAAIpR,KAAI,SAAU7uB,GACvB,OAAOA,EAAQ2mhB,CACjB,GACF,IACA,IAGI5/G,EAAMzha,EAHNssB,EAAM,SAAa9oB,EAAG64C,GACxB,OA1EJ,SAAgC74C,EAAG64C,EAASmyO,EAAW2yP,GACrD,IACE1nhB,EADEwmhB,EAAO,EAEX,IAAKxmhB,EAAI,EAAGA,EAAI4iD,EAAQjjD,SAAUK,EAChC4iD,EAAQ5iD,GAAK,EAEf,IAAKA,EAAI,EAAGA,EAAI+0R,EAAUp1R,SAAUK,EAGlC,IAFA,IAAIguR,EAAKjkR,EAAE,EAAI/J,GACbiuR,EAAKlkR,EAAE,EAAI/J,EAAI,GACRgG,EAAIhG,EAAI,EAAGgG,EAAI+uR,EAAUp1R,SAAUqG,EAAG,CAC7C,IAAIkoR,EAAKnkR,EAAE,EAAI/D,GACbmoR,EAAKpkR,EAAE,EAAI/D,EAAI,GACf6hhB,EAAM9yP,EAAU/0R,GAAGgG,GACnBo0B,EAAastf,EAAY1nhB,GAAGgG,GAC1B8hhB,GAAmB55P,EAAKF,IAAOE,EAAKF,IAAOG,EAAKF,IAAOE,EAAKF,GAC9Dn1P,EAAa/f,KAAK2C,KAAKosgB,GACvB3ue,EAAQ2ue,EAAkBD,EAAMA,EAC9Bztf,EAAa,GAAKtB,GAAc+uf,GAAOztf,EAAa,GAAKtB,GAAc+uf,IAG3ErB,GAAQ,EAAIrte,EAAQA,EACpByJ,EAAQ,EAAI5iD,IAAM,EAAIm5C,GAAS60O,EAAKE,GACpCtrO,EAAQ,EAAI5iD,EAAI,IAAM,EAAIm5C,GAAS80O,EAAKE,GACxCvrO,EAAQ,EAAI58C,IAAM,EAAImzC,GAAS+0O,EAAKF,GACpCprO,EAAQ,EAAI58C,EAAI,IAAM,EAAImzC,GAASg1O,EAAKF,GAC1C,CAEF,OAAOu4P,CACT,CA8CWuB,CAAuBh+gB,EAAG64C,EAASmyO,EAAW2yP,EACvD,EAEA,IAAK1nhB,EAAI,EAAGA,EAAIunhB,IAAYvnhB,EAAG,CAC7B,IAAIqjD,GAAU,MAAA9C,OAAyB,EAAnBw0O,EAAUp1R,QAAYmwB,IAAI/W,KAAK+qC,QACnDv9C,GAAU,MAAA68C,mBAAkBvwB,EAAKwwB,EAASjjC,KACrC4nZ,GAAQzha,EAAQo7C,GAAKqmX,EAAKrmX,MAC7BqmX,EAAOzha,EAEX,CACA,IAAIkkF,EAAYu9U,EAAKj+Z,EAEjBotR,EAAU,CAAC,EACf,IAAKn3R,EAAI,EAAGA,EAAIimhB,EAAKtmhB,SAAUK,EAAG,CAChC,IAAIgB,EAAMilhB,EAAKjmhB,GACfm3R,EAAQn2R,EAAIilhB,KAAK,IAAM,CACrBl8gB,EAAG0gF,EAAU,EAAIzqF,GAAK4nhB,EACtB59gB,EAAGygF,EAAU,EAAIzqF,EAAI,GAAK4nhB,EAC1B96c,OAAQ/zD,KAAK2C,KAAK1a,EAAIoiC,KAAOrqB,KAAK+B,IAEtC,CACA,GAAIsF,EAAO+hC,QACT,IAAKniD,EAAI,EAAGA,EAAIogB,EAAO+hC,QAAQxiD,SAAUK,GACvC,MAAA4X,OAAMwI,EAAO+hC,QAAQniD,GAAG+J,EAAG69gB,GAG/B,OAAOzwP,CACT,CA/DsB6wP,CAAqBpC,EAAOxlgB,GAC1BomgB,EAAKc,EAAa1B,GAEhB,KADPY,EAAKnje,EAASuie,KAE3Bvie,EAAUike,EAEd,CACA,OAAOjke,CACT,CAsNO,SAASoje,IAAaR,EAAMG,GACjC,IAAI5qe,EAAS,EAMb,IAAK,IAAIx7C,EAAI,EAAGA,EAAIomhB,EAASzmhB,SAAUK,EAAG,CACxC,IAAI0nD,EAAO0+d,EAASpmhB,GAChB04T,OAAU,EACd,GAAwB,GAApBhxQ,EAAKu+d,KAAKtmhB,OAAd,CAEO,GAAwB,GAApB+nD,EAAKu+d,KAAKtmhB,OAAa,CAChC,IAAImO,EAAOm4gB,EAAKv+d,EAAKu+d,KAAK,IACxBx0gB,EAAQw0gB,EAAKv+d,EAAKu+d,KAAK,IACzBvtN,EAAU4sN,IAAcx3gB,EAAKg/D,OAAQr7D,EAAMq7D,OAAQ,IAASh/D,EAAM2D,GACpE,MACEinT,EAAU8rN,IAA4B98d,EAAKu+d,KAd9Bn2f,KAAI,SAAU9vB,GAC3B,OAAOimhB,EAAKjmhB,EACd,KAgBAw7C,IADakM,EAAKrxC,eAAe,UAAYqxC,EAAKH,OAAS,IACvCmxQ,EAAUhxQ,EAAKtkB,OAASs1R,EAAUhxQ,EAAKtkB,KAH3D,CAIF,CACA,OAAOoY,CACT,CAkHA,SAASyse,IAAe9wP,GACtB,IAAI+wP,EAAS,SAAgBrjgB,GAC3B,IAAIo0L,EAAKlgM,KAAKE,IAAI9Y,MAAM,KAAMg3R,EAAQrnQ,KAAI,SAAU7L,GAChD,OAAOA,EAAEY,GAAKZ,EAAE6oD,MAClB,KACAksI,EAAKjgM,KAAKC,IAAI7Y,MAAM,KAAMg3R,EAAQrnQ,KAAI,SAAU7L,GAC9C,OAAOA,EAAEY,GAAKZ,EAAE6oD,MAClB,KACF,MAAO,CACL7zD,IAAKggM,EACLjgM,IAAKggM,EAET,EACA,MAAO,CACLmvU,OAAQD,EAAO,KACfE,OAAQF,EAAO,KAEnB,CC1hBO,IAAIG,KAAc,WAAQ,SAAUC,EAAc9jgB,EAAM0+f,EAAWqF,GACxE,IAAIC,EAAW,IAAI3qgB,IACf4qgB,EAAkBH,EAAa3ohB,OAcnC,OAbA6kB,EAAKtd,SAAQ,SAAU2d,EAAGmf,GACxB,GAA4B,IAAxBnf,EAAE0jgB,GAAW5ohB,OACf6ohB,EAASxnhB,IAAI6jB,EAAE+9f,KAAW0F,GAActkf,EAAMykf,GAAmBA,QAC5D,CAEL,IAAIC,EAAW7jgB,EAAE0jgB,GAAWz4f,KAAI,SAAUtd,GACxC,OAAOg2gB,EAAS1nhB,IAAI0R,EACtB,IACAg2gB,EAASxnhB,IAAI6jB,EAAE+9f,KAAW8F,EAAS5igB,MAAM,GAAG2K,QAAO,SAAUxT,EAAG8E,GAC9D,OAAO,IAAM9E,EAAG8E,EAAGmhgB,EACrB,GAAGwF,EAAS,IACd,CACF,IACOF,CACT,IAAG,WAED,IADA,IAAIpogB,EAAS,GACJ3gB,EAAK,EAAGA,EAAKC,UAAUC,OAAQF,IACtC2gB,EAAO3gB,GAAMC,UAAUD,GAEzB,OAAOqgD,KAAKF,UAAUx/B,EACxB,IAUO,SAASuogB,IAAe1kf,EAASp3B,EAAOC,EAAQosE,QACrC,IAAZA,IACFA,EAAU,GAEZ,IAAI10D,EAAOyf,EAAQzf,KACjB+jgB,EAAYtkf,EAAQskf,UACpBj8C,EAAYroc,EAAQqoc,UAEtB,GAAoB,IAAhB9nd,EAAK7kB,OAEP,OADA,IAAIgzf,IAAMkB,MAAM,EAAO,WAAY,UAC5B,GAET,IAAI+0B,EAAWpkgB,EAAKsL,KAAI,SAAUjL,GAChC,IAAI5kB,EACJ,OAAO,WAAS,UAAS,CAAC,EAAG4kB,KAAK5kB,EAAK,CACrCgmhB,KAAMphgB,EAAE0jgB,IAAc,GACtBnlf,KAAMve,EAAEynd,KACJ22C,KAAc,GAAIhjhB,EAAG2ihB,KAAY,GAAI3ihB,GAC7C,IAEA2ohB,EAASv3gB,MAAK,SAAU4L,EAAG8E,GACzB,OAAO9E,EAAEgpgB,KAAKtmhB,OAASoiB,EAAEkkgB,KAAKtmhB,MAChC,IAEA,IAAI8lhB,EDjEC,SAAcG,EAAO3le,IAC1BA,EAAaA,GAAc,CAAC,GACjBC,cAAgBD,EAAWC,eAAiB,IACvD,IAAI2oe,EAAgB5oe,EAAW4oe,eAAiBtC,IAC5CC,EAAOvme,EAAWwme,cAAgBA,IAEtCb,EAuDF,SAAyBA,GACvBA,EAAQA,EAAM9/f,QAEd,IAEI9lB,EAAGgG,EAAGiX,EAAG8E,EAFTo2M,EAAM,GACR2wT,EAAQ,CAAC,EAEX,IAAK9ohB,EAAI,EAAGA,EAAI4lhB,EAAMjmhB,SAAUK,EAAG,CACjC,IAAI0nD,EAAOk+d,EAAM5lhB,GACO,GAApB0nD,EAAKu+d,KAAKtmhB,OACZw4N,EAAI94N,KAAKqoD,EAAKu+d,KAAK,IACU,GAApBv+d,EAAKu+d,KAAKtmhB,SAInBmphB,EAAM,CAHN7rgB,EAAIyqC,EAAKu+d,KAAK,GACdlkgB,EAAI2lC,EAAKu+d,KAAK,MAEE,EAEhB6C,EAAM,CAAC/mgB,EAAG9E,KAAM,EAEpB,CAIA,IAHAk7M,EAAI9mN,MAAK,SAAU4L,EAAG8E,GACpB,OAAO9E,EAAI8E,EAAI,GAAK,CACtB,IACK/hB,EAAI,EAAGA,EAAIm4N,EAAIx4N,SAAUK,EAE5B,IADAid,EAAIk7M,EAAIn4N,GACHgG,EAAIhG,EAAI,EAAGgG,EAAImyN,EAAIx4N,SAAUqG,EAG1B,CAACiX,EAFP8E,EAAIo2M,EAAInyN,MAEQ8ihB,GACdlD,EAAMvmhB,KAAK,CACT4mhB,KAAM,CAAChpgB,EAAG8E,GACVqhB,KAAM,IAKd,OAAOwif,CACT,CA3FUmD,CAAgBnD,GAExB,IAIIltT,EAJAy+D,EAAU0xP,EAAcjD,EAAO3le,GAE/BoD,EAAU,GACZmke,EAAS,GAEX,IAAK9uT,KAASy+D,EAERA,EAAQ9gR,eAAeqiN,KACzBr1K,EAAQhkD,KAAK83R,EAAQz+D,GAAO3uN,GAC5Bs5C,EAAQhkD,KAAK83R,EAAQz+D,GAAO1uN,GAC5Bw9gB,EAAOnohB,KAAKq5N,IAoBhB,IAhBA,IAAI+sT,GAAW,MAAA1ke,aAAW,SAAUzhB,GAElC,IADA,IAAI/4B,EAAU,CAAC,EACNvG,EAAI,EAAGA,EAAIwnhB,EAAO7nhB,SAAUK,EAAG,CACtC,IAAIgphB,EAAUxB,EAAOxnhB,GACrBuG,EAAQyihB,GAAW,CACjBj/gB,EAAGu1B,EAAO,EAAIt/B,GACdgK,EAAGs1B,EAAO,EAAIt/B,EAAI,GAClB8sE,OAAQqqN,EAAQ6xP,GAASl8c,OAG7B,CAEA,OAAO05c,EAAKjghB,EAASq/gB,EACvB,GAAGvie,EAASpD,GAERwqC,EAAYg7b,EAAS17gB,EAChB/J,EAAI,EAAGA,EAAIwnhB,EAAO7nhB,SAAUK,EACnC04N,EAAQ8uT,EAAOxnhB,GACfm3R,EAAQz+D,GAAO3uN,EAAI0gF,EAAU,EAAIzqF,GACjCm3R,EAAQz+D,GAAO1uN,EAAIygF,EAAU,EAAIzqF,EAAI,GAEvC,OAAOm3R,CACT,CCqBiB8xP,CAAKL,GAChBzxP,EDmjBC,SAAuBsuP,EAAU54gB,EAAOC,EAAQosE,GACrD,IAAIi+M,EAAU,GACZqwP,EAAS,GACX,IAAK,IAAI9uT,KAAS+sT,EAEZA,EAASpvgB,eAAeqiN,KAC1B8uT,EAAOnohB,KAAKq5N,GACZy+D,EAAQ93R,KAAKomhB,EAAS/sT,KAG1B7rN,GAAS,EAAIqsE,EACbpsE,GAAU,EAAIosE,EACd,IAAIvtD,EAASs8f,IAAe9wP,GAC1BgxP,EAASx8f,EAAOw8f,OAChBC,EAASz8f,EAAOy8f,OAClB,GAAID,EAAOlvgB,KAAOkvgB,EAAOnvgB,KAAOovgB,EAAOnvgB,KAAOmvgB,EAAOpvgB,IAEnD,OADA8qH,QAAQtrF,IAAI,4CACLite,EAST,IAPA,IAAIyD,EAAWr8gB,GAASs7gB,EAAOlvgB,IAAMkvgB,EAAOnvgB,KAC1CmwgB,EAAWr8gB,GAAUs7gB,EAAOnvgB,IAAMmvgB,EAAOpvgB,KACzCowgB,EAAUrwgB,KAAKC,IAAImwgB,EAAUD,GAE7BrpR,GAAWhzP,GAASs7gB,EAAOlvgB,IAAMkvgB,EAAOnvgB,KAAOowgB,GAAW,EAC1DtpR,GAAWhzP,GAAUs7gB,EAAOnvgB,IAAMmvgB,EAAOpvgB,KAAOowgB,GAAW,EACzDv3K,EAAS,CAAC,EACL7xW,EAAI,EAAGA,EAAIm3R,EAAQx3R,SAAUK,EAAG,CACvC,IAAIuf,EAAS43Q,EAAQn3R,GACrB6xW,EAAO21K,EAAOxnhB,IAAM,CAClB8sE,OAAQs8c,EAAU7pgB,EAAOutD,OACzB/iE,EAAGmvE,EAAU2mL,GAAWtgP,EAAOxV,EAAIo+gB,EAAOnvgB,KAAOowgB,EACjDp/gB,EAAGkvE,EAAU4mL,GAAWvgP,EAAOvV,EAAIo+gB,EAAOpvgB,KAAOowgB,EAErD,CACA,OAAOv3K,CACT,CCtlBgBw3K,CAAc5D,EAAU54gB,EAAOC,EAAQosE,GACjDowc,EAAc3D,IAAmBxuP,EAASyxP,GAoB9C,OAnBAA,EAAS1hhB,SAAQ,SAAUg6B,GACzB,IAAI+kf,EAAO/kf,EAAI+kf,KACXzzgB,EAAKyzgB,EAAK99f,KAAK,KACnB+Y,EAAI0hf,KAAYpwgB,EAEhB,IAAI+2gB,EAAatD,EAAKn2f,KAAI,SAAU9uB,GAClC,OAAOm2R,EAAQn2R,EACjB,IACI2E,EFmID,SAA8BwxR,GACnC,IAAIstP,EAAQ,CAAC,EACbD,IAAiBrtP,EAASstP,GAC1B,IAAIlmU,EAAOkmU,EAAMlmU,KACjB,GAAoB,IAAhBA,EAAK5+M,OACP,MAAO,QACF,GAAmB,GAAf4+M,EAAK5+M,OAAa,CAC3B,IAAI4f,EAASg/L,EAAK,GAAGh/L,OACrB,OA/BG,SAAoBxV,EAAGC,EAAGgU,GAC/B,IAAI0iC,EAAM,GAKNl1B,EAAKzhB,EAAIiU,EACTyN,EAAKzhB,EAIT,OAHA02C,EAAIrhD,KAAK,IAAKmsB,EAAIC,GAClBi1B,EAAIrhD,KAAK,IAAK2e,EAAGA,EAAG,EAAG,EAAG,EAAGwN,EAAK,EAAIxN,EAAGyN,GACzCi1B,EAAIrhD,KAAK,IAAK2e,EAAGA,EAAG,EAAG,EAAG,EAAGwN,EAAIC,GAC1Bi1B,EAAIv4B,KAAK,IAClB,CAmBWqhgB,CAAWjqgB,EAAOxV,EAAGwV,EAAOvV,EAAGuV,EAAOutD,OAC/C,CAGE,IADA,IAAIpsB,EAAM,CAAC,MAAO69J,EAAK,GAAGh2L,GAAGxe,EAAGw0M,EAAK,GAAGh2L,GAAGve,GAClChK,EAAI,EAAGA,EAAIu+M,EAAK5+M,SAAUK,EAAG,CACpC,IAAIw+M,EAAMD,EAAKv+M,GACbge,EAAIwgM,EAAIj/L,OAAOutD,OACf28c,EAAOjrU,EAAI3xM,MAAQmR,EACrB0iC,EAAIrhD,KAAK,MAAO2e,EAAGA,EAAG,EAAGyrgB,EAAO,EAAI,EAAG,EAAGjrU,EAAIj0L,GAAGxgB,EAAGy0M,EAAIj0L,GAAGvgB,EAC7D,CACA,OAAO02C,EAAIv4B,KAAK,IAEpB,CEvJeuhgB,CAAqBH,GAC3B,QAAQnlhB,KAAKuB,KAChBA,GAAQ,MAEVu7B,EAAI+hf,KAAct9gB,EAClB,IAAIg3B,EAAS2sf,EAAY92gB,IAAO,CAC9BzI,EAAG,EACHC,EAAG,IAEL,UAAOk3B,EAAKvE,EACd,IACOisf,CACT,CClFO,IAAIe,IAAe,GAI1B,SAASnB,IAASpogB,EAAQoE,EAAM8jgB,GAC9B,IAAI9sE,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfi/e,EAAYj/e,EAAQi/e,UACtBqF,EAAYtkf,EAAQskf,UAClBtohB,EAAKu7c,EAAMr1V,WACb6kV,EAAW/qc,EAAG+qc,SACdE,EAAWjrc,EAAGirc,SACZrgN,EAAUy9R,GACT,UAAQz9R,KACXA,EAAUrmO,EAAKnV,QAAO,SAAUwV,GAC9B,OAA+B,IAAxBA,EAAE0jgB,GAAW5ohB,MACtB,IAAGA,QAAU,GAAKqrc,EAAWE,GAE/B,IAAIp7a,EAAMu4f,IAAYx9R,EAASrmO,EAAM0+f,EAAWqF,GAChD,OAAO,SAAU/1gB,GACf,OAAOsd,EAAIhvB,IAAI0R,IAAOq4O,EAAQ,EAChC,CACF,CAmBA,SAAS,IAAQzqO,GACf,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfkyO,EAASlyO,EAAQkyO,OACnB0mM,EAAgB54a,EAAQ44a,cACxB3jY,EAAUj1C,EAAQi1C,QAEhB27b,EAActgB,IAAc13C,GAKhC,OAJe,IAAX1mM,IACF0+P,EAAcrgB,IAAuB33C,GAAe,UAAI1mM,EAAQ,YAAawzQ,MAE/EnuE,EAAMqB,cAAgB83C,IAAkB,CAACkgB,EAAa37b,IAC/C94D,CACT,CAKA,SAAS,IAAKA,GACZ,IAWIoE,EAXUpE,EAAO6jB,QAWI,KACpBzf,IACH,IAAImue,IAAMkB,MAAM,EAAO,WAAY,UACnCrve,EAAO,IAGT,IAAIolgB,EAAWplgB,EAAKnV,QAAO,SAAU4nN,GACnC,OAA6B,IAAtBA,EAAMgvT,KAAKtmhB,MACpB,IAAGmwB,KAAI,SAAUmnM,GACf,OAAOA,EAAMgvT,KAAK,EACpB,IAEI4D,EAAarlgB,EAAKnV,QAAO,SAAU4nN,GACrC,IAAIgvT,EAAOhvT,EAAMgvT,KAEjB,ODGG,SAAqB6D,EAAUC,GACpC,IAAK,IAAI/phB,EAAI,EAAGA,EAAI+phB,EAAQpqhB,OAAQK,IAClC,IAAK8phB,EAAS7lhB,SAAS8lhB,EAAQ/phB,IAC7B,OAAO,EAGX,OAAO,CACT,CCVWgqhB,CAAYJ,EAAU3D,EAC/B,IAEA,OADK,UAAQ4D,EAAYrlgB,IAAO,IAAImue,IAAMkB,MAAM,EAAO,WAAY,2BAC5D,UAAQ,CAAC,EAAGzze,EAAQ,CACzB6jB,QAAS,CACPzf,KAAMqlgB,IAGZ,CAKA,SAAS,IAASzpgB,GAChB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfozY,EAAapzY,EAAQozY,WACvBkxG,EAAYtkf,EAAQskf,UACpBj8C,EAAYroc,EAAQqoc,UAElBrse,EAAKs0f,IAAc/4C,EAAMqB,eAC3Bh6c,EAAI5C,EAAG,GACP+d,EAAI/d,EAAG,GACP8hB,EAAI9hB,EAAG,GACPmkB,EAAInkB,EAAG,GAELytd,EAAa,CACfrgd,QAAS+W,EACT7W,QAAS1K,GAGPmT,EAAKwlc,EAAMrgB,SACbtub,EAAQmJ,EAAGnJ,MACXC,EAASkJ,EAAGlJ,OAEV87gB,EAAWD,IAAe1kf,EAASlrB,KAAKE,IAAIpM,GAASmR,EAAIoG,GAAI,GAAIrL,KAAKE,IAAInM,GAAUjK,EAAIkf,GAAI,GAAI,GACpGy5b,EAAMh3b,KAAKokgB,GACX,IAaIzqU,EAbM,IAAe61S,IAAW,CAAC,EAAG5ze,EAAQ,CAC9C6jB,QAAS,CACP6zX,OAAQ,IACRC,OAAQ,IACRu0E,UAAWA,EACXwrB,YAAa8qB,IACbpvB,UAAW,CAAC+0B,EAAWj8C,GACvBnpW,OAAQ,CACN5+H,MAAO,OACPqG,MAAOysa,OAGTnsN,IACe/M,SACnBA,EAASuvQ,WAAWA,GACpB,IAAIu8D,EAhHN,SAAwB7pgB,EAAQoE,GAC9B,IACIquB,EADUzyB,EAAO6jB,QACD4O,MACpB,GAAqB,mBAAVA,EAAsB,CAC/B,IACIq3e,EAAQ1B,IAASpogB,EAAQoE,EADO,iBAAVquB,EAAqB,CAACA,GAASA,GAEzD,OAAO,SAAUokL,GACf,OAAOizT,EAAMjzT,EAAM2rT,KACrB,CACF,CACA,OAAO/ve,CACT,CAqGqBs3e,CAAe/pgB,EAAQwogB,GAW1C,MAT4B,mBAAjBqB,GACT9rU,EAAStrK,MAAM+ve,KAAU,SAAUpwgB,GACjC,IAAIykN,EAAQ2xT,EAASt2gB,MAAK,SAAUuS,GAClC,OAAOA,EAAE+9f,OAAcpwgB,CACzB,IACIuxT,EAAeykN,IAASpogB,EAAQwogB,EAAjBJ,CAA2Bh2gB,GAC9C,OAAOy3gB,EAAahzT,EAAO8sG,EAC7B,IAEK3jT,CACT,CAKA,SAAS,IAAMA,GACb,IAAIo7b,EAAQp7b,EAAOo7b,MAEf9vZ,EADQtrC,EAAO6jB,QACCynB,MAEhBzrD,EAAKs0f,IAAc/4C,EAAMqB,eAC3Bh6c,EAAI5C,EAAG,GAGL2jhB,EAAkB,CACpBv2gB,QAHIpN,EAAG,GAIPsN,QAAS1K,GAEPs7M,EAAW+1S,IAAa14C,EAAO,UACnC,GAAK9vZ,EAEE,CACL,IAAIvsD,EAAWusD,EAAMvsD,SACnBsB,GAAM,UAAOirD,EAAO,CAAC,aACvByyJ,EAASzyJ,MAAM,CACbgzE,OAAQ,CAAC,MACTv/H,SAAUA,EACVsB,KAAK,UAAQ,CAAC,EAAG4zf,IAAe5zf,GAAM,CAEpCgH,KAAM,OACNm8gB,gBAAiBA,KAGvB,MAbEzlU,EAASzyJ,OAAM,GAcjB,OAAOtrC,CACT,CAKO,SAAS,IAAOA,GACrB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfkyO,EAASlyO,EAAQkyO,OACnBm2N,EAAYroc,EAAQqoc,UAItB,OAHA9wB,EAAMrlM,OAAOysQ,IAAUzsQ,GAEvBqlM,EAAMrlM,OAAOm2N,GAAW,GACjBlsd,CACT,CAKO,SAAS,IAAKA,GAGnB,OAFYA,EAAOo7b,MACb7oM,MAAK,GACJvyP,CACT,CAIA,SAASgqgB,IAAgBhqgB,GACvB,IAAI6jB,EAAU7jB,EAAO6jB,QACnBu3a,EAAQp7b,EAAOo7b,MACbK,EAAe53a,EAAQ43a,aAC3B,GAAIA,EAAc,CAChB,IAAIwuE,EAAQ,CACV,gBAAiB,qBACjB,mBAAoB,yBAEtB,IAAYr2B,IAAW,CAAC,EAAG5ze,EAAQ,CACjC6jB,QAAS,CACP43a,aAAcA,EAAa/rb,KAAI,SAAU9vB,GACvC,OAAO,WAAS,UAAS,CAAC,EAAGA,GAAI,CAC/ByH,KAAM4ihB,EAAMrqhB,EAAEyH,OAASzH,EAAEyH,MAE7B,OAGN,CAGA,OAFA+zc,EAAM+C,kBAAkB,iBACxB/C,EAAM+C,kBAAkB,oBACjBn+b,CACT,CAMO,SAAS,IAAQA,GAEtB,OAAOivN,IAAK,IAAS,IAAO,IAAM,IAAU,IAAO,IAAM,CAAC,GAAI,IAAQ,IAAM,IAAS+6S,IAAiB5lhB,IAA/F6qO,CAELjvN,EACJ,ECzPwB,SAAU5f,GAEhC,SAAS8phB,IACP,IAAI/qhB,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAGhE,OADAS,EAAMkI,KAAO,OACNlI,CACT,EANA,UAAU+qhB,EAAM9phB,GAOhB8phB,EAAK9wB,kBAAoB,WACvB,OAAO,GACT,EAIA8wB,EAAKtrhB,UAAUw6f,kBAAoB,WACjC,OAAO8wB,EAAK9wB,mBACd,EAIA8wB,EAAKtrhB,UAAUs7f,iBAAmB,WAChC,OAAO,GACT,EAIAgwB,EAAKtrhB,UAAUu7f,cAAgB,WACxBz7f,KAAK08c,MAAM76c,YAEd7B,KAAK08c,MAAMwI,WACXlld,KAAK08c,MAAMntc,QACXvP,KAAK86f,cAEL96f,KAAK08c,MAAM1xY,QAAO,GAEtB,CAEF,CArCwB,CAqCtByvb,KArCF,ICLW,IAAU,IACVgxB,IAAiB,UACjBC,IAAoB,aACpBC,IAAgB,SAChBC,IAAiB,WACjBC,IAAe,SACfC,IAAiB,cACjBC,IAAkB,eAClBC,IAAmB,gBACnBC,IAAiB,cACjB,IAAkB/2B,IAAW,CAAC,EAAGuF,IAAKC,oBAAqB,CAEpE18C,iBAAiB,EAEjBj4O,IAAK,CACHp9N,KAAM,aACNujhB,WAAY,GACZn+gB,MAAO,GAGTo+gB,YAAa,CACX1sgB,UAAW,EACXokE,YAAa,GACb01K,cAAe,KAGjBqhQ,MAAO,CACL/tU,KAAM,CACJ32J,KAAM,MAERilZ,SAAU,CACRM,WAAW,IAGf09E,MAAO,CACLtsU,KAAM,CACJ32J,KAAM,CACJpqB,MAAO,CACL2T,UAAW,GACXuqb,SAAU,CAAC,EAAG,OAMtB3yL,OAAQ,CACNlsN,SAAU,YAGZ45M,QAAS,CACP4pM,aAAa,+BCtCV,SAAS,IAAe1jc,EAAGmT,GAChC,IAAI8mB,EAAMj6B,EAAEpK,OAASud,EACrB,GAAiB,IAAbnT,EAAEpK,OACJ,MAAM,IAAIonC,MAAM,8CACX,GAAI7pB,EAAI,GAAKA,EAAI,EACtB,MAAM,IAAI6pB,MAAM,qCACX,OAAU,IAAN7pB,EAEFnT,EAAEA,EAAEpK,OAAS,GACL,IAANud,EAEFnT,EAAE,GACAi6B,EAAM,GAAM,EAEdj6B,EAAEgP,KAAKisJ,KAAKhhI,GAAO,GACjBj6B,EAAEpK,OAAS,GAAM,GAGlBoK,EAAEi6B,EAAM,GAAKj6B,EAAEi6B,IAAQ,EAIxBj6B,EAAEi6B,EAEb,CAOO,SAAS,IAAKzuB,EAAKvV,EAAGgG,GAC3B,IAAIo6B,EAAM7qB,EAAIvV,GACduV,EAAIvV,GAAKuV,EAAIvP,GACbuP,EAAIvP,GAAKo6B,CACX,CAiBO,SAAS,IAAY7qB,EAAK/P,EAAGsI,EAAM2D,GAGxC,IAFA3D,EAAOA,GAAQ,EACf2D,EAAQA,GAAS8D,EAAI5V,OAAS,EACvB8R,EAAQ3D,GAAM,CAEnB,GAAI2D,EAAQ3D,EAAO,IAAK,CACtB,IAAI4f,EAAIjc,EAAQ3D,EAAO,EACnB+G,EAAIrP,EAAIsI,EAAO,EACfyW,EAAIxL,KAAKy/B,IAAI9qB,GACb9Q,EAAI,GAAM7D,KAAK6gC,IAAI,EAAIr1B,EAAI,GAC3B49M,EAAK,GAAMppN,KAAK2C,KAAK6I,EAAI3H,GAAK8Q,EAAI9Q,GAAK8Q,GACvC7Y,EAAI6Y,EAAI,EAAI,IAAGy0M,IAAO,GAG1B,IAAY5sN,EAAK/P,EAFHuT,KAAKE,IAAInL,EAAMiL,KAAKwX,MAAM/qB,EAAIqP,EAAI+H,EAAI8Q,EAAIy0M,IACzCppN,KAAKC,IAAIvH,EAAOsH,KAAKwX,MAAM/qB,GAAKkoB,EAAI7Y,GAAK+H,EAAI8Q,EAAIy0M,IAElE,CACA,IAAIt/N,EAAI0S,EAAI/P,GACRxF,EAAI8N,EACJ9H,EAAIyL,EAGR,IAFA,IAAK8D,EAAKzH,EAAMtI,GACZ+P,EAAI9D,GAAS5O,GAAG,IAAK0S,EAAKzH,EAAM2D,GAC7BzR,EAAIgG,GAAG,CAIZ,IAHA,IAAKuP,EAAKvV,EAAGgG,GACbhG,IACAgG,IACOuP,EAAIvV,GAAK6C,GAAG7C,IACnB,KAAOuV,EAAIvP,GAAKnD,GAAGmD,GACrB,CACIuP,EAAIzH,KAAUjL,EAAG,IAAK0S,EAAKzH,EAAM9H,GAEnC,IAAKuP,IADLvP,EACayL,GAEXzL,GAAKR,IAAGsI,EAAO9H,EAAI,GACnBR,GAAKQ,IAAGyL,EAAQzL,EAAI,EAC1B,CACF,CACA,SAAS,IAAS+D,EAAGmT,GACnB,IAAI4pB,EAAO/8B,EAAE+b,QACb,GAAIyZ,MAAMC,QAAQtiB,GAAI,EA0BxB,SAA6B3H,EAAK2H,GAEhC,IADA,IAAI01P,EAAU,CAAC,GACN5yQ,EAAI,EAAGA,EAAIkd,EAAEvd,OAAQK,IAC5B4yQ,EAAQvzQ,KAAK,IAAckW,EAAI5V,OAAQud,EAAEld,KAE3C4yQ,EAAQvzQ,KAAKkW,EAAI5V,OAAS,GAC1BizQ,EAAQvhQ,KAAK,KACb,IAAIw4P,EAAQ,CAAC,EAAG+I,EAAQjzQ,OAAS,GACjC,KAAOkqQ,EAAMlqQ,QAAQ,CACnB,IAAIqe,EAAIjF,KAAKisJ,KAAK6kG,EAAM9jP,OACpB3B,EAAIrL,KAAKwX,MAAMs5O,EAAM9jP,OACzB,KAAI/H,EAAIoG,GAAK,GAAb,CACA,IAAIvP,EAAIkE,KAAKwX,OAAOnM,EAAIpG,GAAK,GAC7BktgB,IAAe31gB,EAAKq9P,EAAQ/9P,GAAIkE,KAAKwX,MAAMqiP,EAAQxuP,IAAKrL,KAAKisJ,KAAK4tG,EAAQ50P,KAC1E6rP,EAAMxqQ,KAAK+kB,EAAGvP,EAAGA,EAAGmJ,EAHI,CAI1B,CACF,CAvCImtgB,CAAoBrkf,EAAM5pB,GAI1B,IAFA,IAAI2iH,EAAU,GAEL7/H,EAAI,EAAGA,EAAIkd,EAAEvd,OAAQK,IAC5B6/H,EAAQ7/H,GAAK,IAAe8mC,EAAM5pB,EAAEld,IAEtC,OAAO6/H,CACT,CAGE,OADAqrZ,IAAepkf,EADL,IAAcA,EAAKnnC,OAAQud,GACX,EAAG4pB,EAAKnnC,OAAS,GACpC,IAAemnC,EAAM5pB,EAEhC,CACA,SAASgugB,IAAe31gB,EAAK/P,EAAGsI,EAAM2D,GAChCjM,EAAI,GAAM,EACZ,IAAY+P,EAAK/P,EAAGsI,EAAM2D,IAG1B,IAAY8D,EADZ/P,EAAIuT,KAAKwX,MAAM/qB,GACKsI,EAAM2D,GAC1B,IAAY8D,EAAK/P,EAAI,EAAGA,EAAI,EAAGiM,GAEnC,CAkBA,SAAS,IAAQwL,EAAG8E,GAClB,OAAO9E,EAAI8E,CACb,CACA,SAAS,IAAcuX,EAAKpc,GAC1B,IAAI8mB,EAAM1K,EAAMpc,EAChB,OAAU,IAANA,EAEKoc,EAAM,EACE,IAANpc,EAEF,EACE8mB,EAAM,GAAM,EAEdjrB,KAAKisJ,KAAKhhI,GAAO,EACf1K,EAAM,GAAM,EAGd0K,EAAM,GAINA,CAEX,CCtKO,IAAIonf,IAAa,SAAoB9rf,GAC1C,MAAO,CACLyqe,KAAK,UAAIzqe,GACTwqe,MAAM,UAAIxqe,GACVupM,GAAI,IAASvpM,EAAQ,KACrBwpM,GAAI,IAASxpM,EAAQ,KACrB0a,OAAQ,IAAS1a,EAAQ,CAAC,KAC1B4of,OAAQ,EAAC,UAAI5of,IAAS,UAAIA,IAC1BijM,SAAU,CAAC,IAASjjM,EAAQ,KAAO,IAASA,EAAQ,MAExD,EACW+rf,IAAgB,SAAuB/rf,EAAQgsf,GACxD,IAAIC,EAAa,aAAWjsf,EAAQgsf,GACpC,MAAO,CACLE,WAAYD,EAAWz7f,KAAI,SAAUpe,GACnC,OAAOA,EAAO1H,CAChB,IACAyhhB,QAASF,EAAWz7f,KAAI,SAAUpe,GAChC,OAAOA,EAAO3H,CAChB,IAEJ,EACW2hhB,IAAsB,SAA6Bznf,GAC5D,IAAI6zX,EAAS7zX,EAAQ6zX,OACnBC,EAAS9zX,EAAQ8zX,OACjB+/F,EAAc7zd,EAAQ6zd,YACtBtze,EAAOyf,EAAQzf,KACfqgN,EAAM5gM,EAAQ4gM,IAEZymT,EAAa,CACftygB,IAAK6rN,EAAI7rN,IACTC,IAAK4rN,EAAI5rN,IACTmqB,KAAMyhM,EAAImmT,WACVn+gB,MAAOg4N,EAAIh4N,OAGb,IAAKirf,EAAa,CAChB,IAAItV,GAAU,UAAQh+d,EAAMszY,GAC5B,OAAOxhZ,OAAOopB,KAAK8id,GAAS1yd,KAAI,SAAU/lB,GACxC,IACIu1B,EADUkjd,EAAQz4e,GACD+lB,KAAI,SAAUwjC,GACjC,OAAOA,EAAOykW,EAChB,IACA,OAAO,WAAS,UAAS,CACvBhuZ,EAAGA,GACFshhB,IAAc/rf,EAAQgsf,IAAcF,IAAW9rf,GACpD,GACF,CAEA,IAAIqsf,EAAa,GACbC,GAAc,UAAQpngB,EAAMsze,GAchC,OAbAxhf,OAAOopB,KAAKksf,GAAa1khB,SAAQ,SAAUw7H,GACzC,IAAIlyH,GAAQ,UAAQo7gB,EAAYlpZ,GAASo1R,GACzC,OAAOxhZ,OAAOopB,KAAKlvB,GAAOtJ,SAAQ,SAAUy4B,GAC1C,IAAI1/B,EAEAq/B,EADU9uB,EAAMmvB,GACC7P,KAAI,SAAUwjC,GACjC,OAAOA,EAAOykW,EAChB,IACA4zH,EAAWtshB,MAAK,WAAS,YAAUY,EAAK,CACtC8J,EAAG41B,IACCm4d,GAAep1X,EAAQziI,GAAKorhB,IAAc/rf,EAAQgsf,IAAcF,IAAW9rf,IACnF,GACF,IACOqsf,CACT,EC5DIE,IAAiB,CAAC,MAAO,OAAQ,KAAM,KAAM,UAC7C1+D,IAAY,CAAC,CACf1ld,KAAM,QACNyxZ,YAAa,EAAI,KAGnB,SAAS,IAAK94Y,GACZ,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QAEnB,OADAu3a,EAAMh3b,KAAKkngB,IAAoBznf,IACxB7jB,CACT,CAEA,SAAS0rgB,IAAW1rgB,GAClB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACf6zd,EAAc7zd,EAAQ6zd,YACxBjld,EAAQ5O,EAAQ4O,MAChB5yC,EAAKgkC,EAAQ1/B,MACbA,OAAe,IAAPtE,EAAgB,SAAWA,EACnCgrhB,EAAchnf,EAAQgnf,YACtBpnR,EAAU5/N,EAAQ4/N,QAClBxhN,EAAQpe,EAAQoe,MACd6uN,EAAOsqM,EAAM3nD,WAAW,CAC1BrhZ,GAAIo4gB,MAqBN,OC9CK,SAAgBxqgB,GACrB,IAAI6jB,EAAU7jB,EAAO6jB,QACjBqoa,EAASroa,EAAQqoa,OACnBx0C,EAAS7zX,EAAQ6zX,OACjBC,EAAS9zX,EAAQ8zX,OACjB+/F,EAAc7zd,EAAQ6zd,YACtBxrB,EAAYroc,EAAQqoc,UAElBrse,EAAKs4f,IADGt0d,EAAQ4/N,QACgB,CAACi0J,EAAQC,EAAQ+/F,EAAaxrB,IAChE5tW,EAASz+H,EAAGy+H,OACZmqN,EAAY5oV,EAAG4oV,UACVyjH,GAAS,IAAS0nD,IAAW,CAAC,EAAG5ze,EAAQ,CAC9C6jB,QAAS,CACPx8B,KAAM,SACNwhe,WAAY6uB,EACZiB,cAAer6X,EACf4xN,SAAS,UAAS,CAChBzsF,QAASglF,GACRyjH,MAGT,CDME,CAAO,CACLkP,MAAOtqM,EACPjtO,QAAS,CACP6zX,OAAQ,IACRC,OAAQwyH,IACRzyB,YAAaA,GAA4B,IACzCxrB,UAAWk+C,IACX3mR,SAAS,UAAS,CAChBnlI,OAAQmtZ,KACPhoR,GACHyoM,OAAQ,CACN1hc,MAAOqghB,EACPp4e,MAAOA,EACPtuC,MAAOA,GAET89C,MAAOA,KAGX6uN,EAAKhzD,WAAW,GAAGw6D,OAAOy0M,KACnB/sc,CACT,CAEA,SAAS2rgB,IAAQ3rgB,GACf,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACf6zd,EAAc7zd,EAAQ6zd,YACxBjld,EAAQ5O,EAAQ4O,MAChBgxN,EAAU5/N,EAAQ4/N,QAClBxjP,EAAM4jB,EAAQ5jB,IAEhB,IAAY,IAARA,EAAe,OAAOD,EAE1B,IAAI4rgB,EAAaxwE,EAAM3nD,WAAW,CAChCrhZ,GAAIq4gB,MAEN,IAAS,CACPrvE,MAAOwwE,EACP/nf,QAAS,CACP6zX,OAAQ,IACRC,OAAQ0yH,IACR3yB,YAAaA,GAA4B,IACzCj0P,SAAS,UAAS,CAChBnlI,OAAQmtZ,KACPhoR,GACHxhN,MAAsB,iBAARhiC,EAAmBA,EAAIgiC,MAAQ,CAAC,EAC9C/gD,SAAU,CACRuxC,MAAOA,EACPzP,KAAM,EACNx4B,MAAO,CACL2T,UAAW,OAKnBytgB,EAAW9tU,WAAW,GAAGw6D,OAAOy0M,KAEhC,IAAI8+D,EAAezwE,EAAM3nD,WAAW,CAClCrhZ,GAAIs4gB,MAEN,IAAS,CACPtvE,MAAOywE,EACPhof,QAAS,CACP6zX,OAAQ,IACRC,OAAQ2yH,IACR5yB,YAAaA,GAA4B,IACzCj0P,SAAS,UAAS,CAChBnlI,OAAQmtZ,KACPhoR,GACHxhN,MAAsB,iBAARhiC,EAAmBA,EAAIgiC,MAAQ,CAAC,EAC9C/gD,SAAU,CACRuxC,MAAOA,EACPzP,KAAM,EACNx4B,MAAO,CACL+3E,YAAa,OAKrBspc,EAAa/tU,WAAW,GAAGw6D,OAAOy0M,KAElC,IAAI++D,EAAa1wE,EAAM3nD,WAAW,CAChCrhZ,GAAIu4gB,MA+BN,OA7BA,IAAM,CACJvvE,MAAO0wE,EACPjof,QAAS,CACP6zX,OAAQ,IACRC,OAAQ4yH,IACR7yB,YAAaA,GAA4B,IACzCj0P,SAAS,UAAS,CAChBnlI,OAAQmtZ,KACPhoR,GACHxhN,MAAsB,iBAARhiC,EAAmBA,EAAIgiC,MAAQ,CAAC,EAC9Cv4C,MAAO,CACL+oC,MAAOA,EACPzP,KAAM,EACNx4B,MAAO,CACL8vC,KAAM,QACNn8B,UAAW,OAKnB2tgB,EAAWhuU,WAAW,GAAGw6D,OAAOy0M,KAEhC8+D,EAAat5Q,MAAK,GAClBq5Q,EAAWr5Q,MAAK,GAChBu5Q,EAAWv5Q,MAAK,GAEhBu5Q,EAAW/1Q,QAAO,GAClB61Q,EAAW71Q,QAAO,GAClB81Q,EAAa91Q,QAAO,GACb/1P,CACT,CAIA,SAAS,IAAKA,GACZ,IAAIngB,EACAu7c,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfmlG,EAAOnlG,EAAQmlG,KACjBswX,EAAQz1d,EAAQy1d,MAChBzB,EAAQh0d,EAAQg0d,MAEdjvQ,EAASgrQ,IADE,CAAC,EACkB5qX,IAAOnpI,EAAK,CAAC,GAAM,MAAW,WAAS,UAAS,CAChF4xH,MAAM,GACL,IAAK6nY,EAAO9G,MAAyB,CAGtCnrf,KAAM,QACJxH,EAAGsqhB,MAAkB,UAAS,CAChC14Z,MAAM,GACL,IAAKomY,EAAOrF,MAAyB3yf,EAAGwqhB,MAAiB,UAAS,CACnE54Z,KAAM04Z,KACL,IAAKtyB,EAAOrF,MAAyB3yf,EAAGyqhB,MAAkB,UAAS,CACpE74Z,KAAM04Z,KACL,IAAKtyB,EAAOrF,MAAyB3yf,EAAG0qhB,MAAgB,UAAS,CAClE94Z,KAAM04Z,KACL,IAAKtyB,EAAOrF,MAAyB3yf,IAExC,OADAu7c,EAAM5jc,MAAMoxO,GACL5oO,CACT,CAIA,SAAS,IAAKA,GACZ,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfy1d,EAAQz1d,EAAQy1d,MAClBzB,EAAQh0d,EAAQg0d,MACd/mP,EAAO6kP,IAAav6C,EAAOovE,KAa/B,OAXc,IAAVlxB,EACFxoP,EAAKyB,KAAK,KAAS,GAEnBzB,EAAKyB,KAAK,IAAS+mP,IAEP,IAAVzB,EACF/mP,EAAKyB,KAAK43Q,KAAgB,GAE1Br5Q,EAAKyB,KAAK43Q,IAAgBtyB,GAE5Bz8C,EAAM7oM,MAAK,GACJvyP,CACT,CAMA,SAAS,IAAOA,GACd,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfkyO,EAASlyO,EAAQkyO,OACnB2hP,EAAc7zd,EAAQ6zd,YACtBvzf,EAAQ0/B,EAAQ1/B,MAClB,IAAe,IAAX4xQ,EACFqlM,EAAMrlM,QAAO,OACR,CACL,IAAIg2Q,EAAgBr0B,GAA4B,IAE5Cs0B,GAAgB,UAAKj2Q,EAAQ,CAAC,aAC7B5xQ,GAAUA,EAAM87E,WAAW,YACzB,UAAI+rc,EAAe,CAAC,SAAU,QAAS,gBAC1C,UAAIA,EAAe,CAAC,SAAU,QAAS,aAAc,GAGzD5wE,EAAMrlM,OAAOg2Q,EAAeC,IAExB,UAAIj2Q,EAAQ,cACd,UAAKqlM,EAAMlnM,OAAO,SAAUpD,GAC1B,OAAOA,EAAKiF,OAAOg2Q,EAAeh2Q,EACpC,GAEJ,CACA,OAAO/1P,CACT,CAMA,SAAS,IAAWA,GAClB,IACI0rgB,EAAa/1B,IADL31e,EAAOo7b,MACkBovE,KAIrC,OAHA,OAAiB,WAAS,UAAS,CAAC,EAAGxqgB,GAAS,CAC9Co7b,MAAOswE,KAEF1rgB,CACT,CAKO,SAAS,IAAUA,GACxB,IAAIo7b,EAAQp7b,EAAOo7b,MAEfh3c,EADQ4b,EAAO6jB,QACKz/B,UAKxB,OAHA,UAAKg3c,EAAMlnM,OAAO,SAAUpD,GAC1BglP,IAAiBhlP,EAAM1sQ,EACzB,IACO4b,CACT,CAKO,SAAS,IAAQA,GACtB,OAAOivN,IAAK,IAAO,IAAMy8S,IAAYC,IAAS,IAAM,IAAS,IAAM,IAAQ,IAAa,IAAY,IAA7F18S,CAAwGjvN,EACjH,EErQ0B,SAAU5f,GAElC,SAAS4re,IACP,IAAI7se,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAGhE,OADAS,EAAMkI,KAAO,SACNlI,CACT,EANA,UAAU6se,EAAQ5re,GAWlB4re,EAAOotB,kBAAoB,WACzB,OAAO,GACT,EAIAptB,EAAOpte,UAAUw/c,WAAa,SAAUh6b,GACtC1lB,KAAKg7f,aAAa,CAChBt1e,KAAMA,IAER1lB,KAAK08c,MAAMgD,WAAWktE,IAAoB5shB,KAAKmlC,SACjD,EAIAmoc,EAAOpte,UAAUw6f,kBAAoB,WACnC,OAAOptB,EAAOotB,mBAChB,EAIAptB,EAAOpte,UAAUs7f,iBAAmB,WAClC,OAAO,GACT,CAEF,CArC0B,CAqCxBf,KArCF,ICLW,IAAU,aACV8yB,IAAa,gBACbC,IAAiB,oBACjBC,IAAW,cAIX,IAAkB,CAE3B7ge,MAAO,CAAC,EAER8ge,WAAY,CACV5hhB,MAAO,CACL2T,UAAW,EACX0B,OAAQ,UACR6ob,SAAU,CAAC,EAAG,KAIlBlxY,MAAO,CACLhtD,MAAO,CACL8vC,KAAM,wBAGVmha,aAAc,CAAC,CACbp0c,KAAM,mBAERgigB,WAAY,UACZC,YAAa,UACb+iB,eAAgB,CACd/xe,KAAM,uBAERu9c,MAAO,CACLtsU,KAAM,CACJ32J,KAAM,CACJpqB,MAAO,CACLk+b,SAAU,CAAC,EAAG,QCJjB,SAAS,IAActkb,EAAMszY,EAAQC,EAAQngW,GAClD,IAAI80d,EAtBC,SAAqBlogB,EAAMszY,EAAQC,EAAQ40H,EAAW/0d,GAC3D,IAAI33D,EACAm7Y,EAAU,GAUd,IATA,UAAO52X,GAAM,SAAUxG,EAAG6G,GACxB,IAAI5kB,EAEJ,IAAI0yf,IAAMkB,MAAM,UAAShve,EAAEkzY,IAAU,GAAG1lZ,OAAOwS,EAAEkzY,GAAS,2BAC1D,IAAI92Z,GAAQ,UAAY4jB,EAAEkzY,IAAW,KAAOlzY,EAAEkzY,GAE9C,OADA3c,EAAQ/7Y,MAAK,WAAS,UAAS,CAAC,EAAGwlB,KAAK5kB,EAAK,CAAC,GAAM0shB,GAAa,CAAC3ugB,EAAGA,EAAI/c,GAAQhB,KAC1E+d,EAAI/c,CACb,GAAG,GAECm6Y,EAAQz7Y,QAAUi4D,EAAO,CAC3B,IAAI1sC,GAAM,UAAIkwX,EAAS,CAAC,CAAC52X,EAAK7kB,OAAS,GAAIgthB,EAAW,CAAC,KACvDvxI,EAAQ/7Y,OAAMY,EAAK,CAAC,GAAM63Z,GAAUlgW,EAAMlM,MAAOzrD,EAAG83Z,GAAU7sY,EAAKjrB,EAAG0shB,GAAa,CAAC,EAAGzhgB,GAAMjrB,GAC/F,CACA,OAAOm7Y,CACT,CAKkB0yE,CAAYtpc,EAAMszY,EAAQC,EAAQ,IAASngW,GAC3D,OAAO80d,EAAU58f,KAAI,SAAUjL,EAAG+ngB,GAChC,IAAI3shB,EACJ,OAAK,UAAS4kB,IAGP,WAAS,UAAS,CAAC,EAAGA,KAAK5kB,EAAK,CAAC,GAAMqshB,KAAkBzngB,EAAE,KAAS,GAAI5kB,EAAGoshB,KAAcxngB,EAAE,KAAS,GAAKA,EAAE,KAAS,GAAI5kB,EAAGsshB,KAAYK,IAASpogB,EAAK7kB,OAAQM,IAF3J4kB,CAGX,GACF,CC3BA,SAAS,IAAezE,GACtB,IAAIngB,EAAKmgB,EAAO6jB,QACd08B,EAAS1gE,EAAG0gE,OACZ/I,EAAQ33D,EAAG23D,MACTi1d,EAAmB3kd,IAAUvH,GAAQ7/D,IAAI,CAAC,YAAa,UAK3D,OAJI82D,GAAgC,iBAAhBA,EAAMlM,OAAsBmhe,IAE9CzsgB,EAAO6jB,QAAQ2zB,MAAMlM,MAAQmhe,GAExBzsgB,CACT,CAKA,SAAS,IAASA,GAChB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfzf,EAAOyf,EAAQzf,KACjBszY,EAAS7zX,EAAQ6zX,OACjBC,EAAS9zX,EAAQ8zX,OACjBngW,EAAQ3zB,EAAQ2zB,MAChB40d,EAAavof,EAAQuof,WACrB7yH,EAAmB11X,EAAQ01X,iBAC3B8yH,EAAiBxof,EAAQwof,eACzBhjB,EAAaxle,EAAQwle,WACrBC,EAAczle,EAAQyle,YACtB72d,EAAQ5O,EAAQ4O,MAChBtuC,EAAQ0/B,EAAQ1/B,MAChBmpd,EAAazpb,EAAQypb,WAEvBlS,EAAMh3b,KAAK,IAAcA,EAAMszY,EAAQC,EAAQngW,IAE/C,IAAIk1d,EAAej6e,GAAS,SAAUokL,GACpC,OAAI,UAAIA,EAAO,CAACs1T,OACP,UAAI30d,EAAO,CAAC,QAAS,QAAS,KAEhC,UAAIq/J,EAAO,CAAC,IAAS,KAAM,UAAIA,EAAO,CAAC,IAAS,IAAM,EAAIwyS,EAAaC,CAChF,EAsBA,OANU,IAfF1V,IAAW,CAAC,EAAG5ze,EAAQ,CAC7B6jB,QAAS,CACP6zX,OAAQA,EACRC,OAAQ,IACR+/F,YAAahgG,EACb07F,UAAW,CAACz7F,EAAQs0H,IAAYE,IAAU,KAC1CtzB,WAAYt/F,EACZr4Z,SAAU,CACRsJ,MAAO6hhB,EAEPlohB,MAAOA,GAAS,YAChBsuC,MAAOi6e,OAIS5hU,IACH/M,SAEVuvQ,YAAW,WAAS,UAAS,CAAC,EAAGA,GAAa,CACrD8+D,WAAYA,KAEPpsgB,CACT,CAKA,SAAS,IAAKA,GACZ,IAAIngB,EAAI+V,EACJiuB,EAAU7jB,EAAO6jB,QACjBy1d,EAAQz1d,EAAQy1d,MAClBzB,EAAQh0d,EAAQg0d,MAChBngG,EAAS7zX,EAAQ6zX,OACjBC,EAAS9zX,EAAQ8zX,OACjB3uR,EAAOnlG,EAAQmlG,KACb2jZ,EAAe/4B,IAAW,CAAC,EAAG,CAChCvkI,MAAOsoC,IACN,UAAI3uR,EAAM2uR,IACb,OAAO1oL,IAAK,MAAOpvO,EAAK,CAAC,GAAM63Z,GAAU4hG,EAAOz5f,EAAG83Z,GAAUkgG,EAAOh4f,EAAG,KAAWg4f,EAAOh4f,GAAK+zf,IAAW,CAAC,EAAG5qX,IAAOpzH,EAAK,CAAC,GAAM,KAAW+2gB,EAAc/2gB,EAAGq2gB,KAAcU,EAAc/2gB,EAAGs2gB,KAAkBS,EAAc/2gB,KAApNq5N,CAA2NjvN,EACpO,CAKA,SAAS,IAAKA,GACZ,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfy1d,EAAQz1d,EAAQy1d,MAClBzB,EAAQh0d,EAAQg0d,MAChBngG,EAAS7zX,EAAQ6zX,OACjBC,EAAS9zX,EAAQ8zX,OAcnB,OAZc,IAAV2hG,EACFl+C,EAAM7oM,KAAKmlJ,GAAQ,GAEnB0jD,EAAM7oM,KAAKmlJ,EAAQ4hG,IAEP,IAAVzB,GACFz8C,EAAM7oM,KAAKolJ,GAAQ,GACnByjD,EAAM7oM,KAAK,KAAS,KAEpB6oM,EAAM7oM,KAAKolJ,EAAQkgG,GACnBz8C,EAAM7oM,KAAK,IAASslP,IAEf73e,CACT,CAKA,SAAS,IAAOA,GACd,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfkyO,EAASlyO,EAAQkyO,OACnBv+M,EAAQ3zB,EAAQ2zB,MAChB6xc,EAAaxle,EAAQwle,WACrBC,EAAczle,EAAQyle,YAEpBr4G,EAAOnpV,IADAjkC,EAAQ08B,QAEnB,IAAe,IAAXw1M,EACFqlM,EAAMrlM,QAAO,OACR,CACL,IAAIlxN,EAAQ,CAAC,CACXlkD,KAAMswZ,EAAKvwZ,IAAI,CAAC,UAAW,aAC3BG,MAAO,WACPs5S,OAAQ,CACNhzQ,OAAQ,SACR38B,MAAO,CACLoT,EAAG,EACH08B,KAAM+ud,KAGT,CACD1ogB,KAAMswZ,EAAKvwZ,IAAI,CAAC,UAAW,aAC3BG,MAAO,WACPs5S,OAAQ,CACNhzQ,OAAQ,SACR38B,MAAO,CACLoT,EAAG,EACH08B,KAAMgvd,MAIR9xc,GACF3S,EAAM5lD,KAAK,CACT0B,KAAM62D,EAAMlM,OAAS,GACrBzqD,MAAO,QACPs5S,OAAQ,CACNhzQ,OAAQ,SACR38B,MAAOopf,IAAW,CAAC,EAAG,CACpBh2e,EAAG,IACF,UAAI45C,EAAO,aAIpB4jZ,EAAMrlM,OAAO69O,IAAW,CAAC,EAAG,CAC1Bx5e,QAAQ,EACRyvC,SAAU,MACVhF,MAAOA,GACNkxN,IACHqlM,EAAM+C,kBAAkB,gBAC1B,CACA,OAAOn+b,CACT,CAKA,SAAS,IAAMA,GACb,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfynB,EAAQznB,EAAQynB,MAClBshe,EAAY/of,EAAQ+of,UACpBl1H,EAAS7zX,EAAQ6zX,OACf35M,EAAW+1S,IAAa14C,EAAO,YACnC,GAAK9vZ,EAEE,CACL,IAAIvsD,EAAWusD,EAAMvsD,SACnBsB,GAAM,UAAOirD,EAAO,CAAC,aACvByyJ,EAASzyJ,MAAM,CACbgzE,OAAsB,aAAdsuZ,EAA2B,CAACV,IAAgBx0H,GAAU,CAACu0H,IAAYv0H,GAC3E34Z,SAAUA,EACVsB,IAAK4zf,IAAe5zf,IAExB,MATE09M,EAASzyJ,OAAM,GAUjB,OAAOtrC,CACT,CAKO,SAAS,IAAQA,GACtB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACf4/N,EAAU5/N,EAAQ4/N,QACpBi0J,EAAS7zX,EAAQ6zX,OACjBC,EAAS9zX,EAAQ8zX,OACnB,IAAgB,IAAZl0J,EAAmB,CACrB23M,EAAM33M,SAAQ,UAAS,CACrB2pM,gBAAgB,EAChBC,aAAa,EACb18K,QAAQ,EAERryJ,OAAQ,CAACq5R,IACRl0J,IAEH,IAAI0/M,EAAa/H,EAAMt9P,WAAW,IACjC2lD,aAAyC,EAASA,EAAQglF,WAAa06H,EAAW1/M,QAAQ,GAAGxxP,OAAOylZ,EAAQ,KAAKzlZ,OAAO0lZ,GAASl0J,EAAQglF,WAAa06H,EAAW1/M,QAAQk0J,EAC5K,MACEyjD,EAAM33M,SAAQ,GAEhB,OAAOzjP,CACT,CAKO,SAAS,IAAQA,GACtB,OAAOivN,IAAK,IAAgB,IAAO,IAAU,IAAM,IAAM,IAAQ,IAAS,IAAO,IAAO,IAAa7qO,IAAW,MAAzG6qO,CAAuHjvN,EAChI,CC1MAyrc,IAAc,WAAY,YAAa,CACrCjld,KAAM,SAAcnG,EAAKqH,GACvB,IAAI4ld,EAAajtd,EAAIitd,WACnBluc,EAAS/e,EAAI+e,OACbixc,EAAahwd,EAAIgwd,WACfjgd,EAAQ1I,EAAUyI,WAElBgc,EAAWztB,KAAKssd,UA9BxB,SAAqB5rc,GAEnB,IADA,IAAI7Z,EAAO,GACF3F,EAAI,EAAGA,EAAIwf,EAAO7f,OAAQK,IAAK,CACtC,IAAI8J,EAAQ0V,EAAOxf,GACnB,GAAI8J,EAAO,CACT,IAAIyvB,EAAe,IAANv5B,EAAU,IAAM,IAC7B2F,EAAKtG,KAAK,CAACk6B,EAAQzvB,EAAMC,EAAGD,EAAME,GACpC,CACF,CACA,IAAIqxB,EAAQ7b,EAAO,GAGnB,OAFA7Z,EAAKtG,KAAK,CAAC,IAAKg8B,EAAMtxB,EAAGsxB,EAAMrxB,IAC/BrE,EAAKtG,KAAK,CAAC,MACJsG,CACT,CAiBkC,CAAY6Z,IACtCqkgB,EAbR,SAAsBpjhB,GACpB,OAAOuzf,IAAW,CAAC,EAAGvzf,EAAI+uZ,aAAc/uZ,EAAImK,MAAO,CACjD8vC,KAAMj6C,EAAIoyC,OAEd,CASoB,CAAapyC,GAC7B+P,EAAML,SAAS,OAAQ,CACrB/K,OAAO,WAAS,UAAS,CAAC,EAAGy+gB,GAAY,CACvCl+gB,KAAM4mB,MAIV,IAAI0ggB,GAAgB,UAAIv/D,EAAY,cACpC,GAAIu/D,GAAiBx8D,EAAY,CAC/B,IAAIy8D,EAAW,CAAC,CAAC,IAAK1tgB,EAAO,GAAGzV,EAAGyV,EAAO,GAAGxV,GAAI,CAAC,IAAKymd,EAAW,GAAG1md,EAAG0md,EAAW,GAAGzmd,IAClFwV,EAAO,GAAGxV,IAAMymd,EAAW,GAAGzmd,IAChCkjhB,EAAS,GAAK,CAAC,IAAKz8D,EAAW,GAAG1md,EAAG0md,EAAW,GAAGzmd,IAErDkjhB,EAAWpuhB,KAAKssd,UAAU8hE,GAC1B18gB,EAAML,SAAS,OAAQ,CACrB/K,OAAO,UAAS,CACdO,KAAMunhB,GACLD,EAAcrihB,OAAS,CAAC,IAE/B,CACA,OAAO4F,CACT,KCpD2B,SAAUhQ,GAErC,SAAS2shB,IACP,IAAI5thB,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAGhE,OADAS,EAAMkI,KAAO,YACNlI,CACT,EANA,UAAU4thB,EAAW3shB,GAWrB2shB,EAAU3zB,kBAAoB,WAC5B,OAAO,GACT,EAKA2zB,EAAUnuhB,UAAUw/c,WAAa,SAAUh6b,GACzC,IAAIvkB,EAAKnB,KAAKmlC,QACZ6zX,EAAS73Z,EAAG63Z,OACZC,EAAS93Z,EAAG83Z,OACZngW,EAAQ33D,EAAG23D,MACb94D,KAAKg7f,aAAa,CAChBt1e,KAAMA,IAER1lB,KAAK08c,MAAMgD,WAAW,IAAch6b,EAAMszY,EAAQC,EAAQngW,GAC5D,EAIAu1d,EAAUnuhB,UAAUs7f,iBAAmB,WACrC,OAAO,GACT,EAIA6yB,EAAUnuhB,UAAUw6f,kBAAoB,WACtC,OAAO2zB,EAAU3zB,mBACnB,CAEF,CA1C6B,CA0C3BD,KA1CF,ICLW6zB,IAAyB,QAIzB,IAAkBp5B,IAAW,CAAC,EAAGuF,IAAKC,oBAAqB,CACpE72S,aAAc,IACdwzD,QAAQ,EACRtS,QAAS,CACPv3G,WAAW,EACXmhT,aAAa,EACbD,gBAAgB,EAChB9uU,OAAQ,CAAC,OAAQ,QAAS0uZ,KAC1BvkM,UAAW,SAAmB5xH,GAC5B,MAAO,CACLl2N,KAAMk2N,EAAMt3M,KACZ1e,MAAOg2N,EAAMh2N,MAEjB,GAEFoshB,UAAW,CACT96f,WAAY,UACZC,WAAY,SACZ0mD,QAAS,EACTt5D,SAAU,CAAC,GAAI,IACfglQ,SAAU,CAAC,EAAG,IACd0oQ,cAAe,EACfC,YAAa,MC5Bb,IAAkB,CACpBztgB,KAAM,WACJ,MAAO,OACT,EACAo5D,QAAS,EACT91C,KAAM,CAAC,IAAK,KACZwqQ,OAAQ,cAERjrF,aAAc,KAUT,SAAS6qU,IAAU9yW,EAAOz2I,GAG/B,OAOK,SAAmBy2I,EAAOz2I,GAE/B,IAAI2jF,EAsON,WACE,IAAIxkF,EAAO,CAAC,IAAK,KACftjB,EAAO2tgB,IACP7tgB,EAAW8tgB,IACXl7f,EAAam7f,IACb51gB,EAAS61gB,IACT10c,EAAU20c,IACVjgP,EAAS,IACT9pP,EAAS/qC,KAAK+qC,OACd42H,EAAQ,GACRioC,EAAet/M,IACbsc,EAAOmugB,IACPr7f,EAAYk7f,IACZtnhB,EAAS0nhB,IACTpgP,EAAQ,CAAC,EA8Db,SAASlqR,EAAWpd,GAClBA,EAAOwG,MAAQxG,EAAOyG,OAAS,EAC/B,IAAIpI,EAAQqU,KAAK2C,KAAKrV,EAAOod,WAAW,KAAM,CAC5CuqgB,oBAAoB,IACnB58P,aAAa,EAAG,EAAG,EAAG,GAAG5sQ,KAAK7kB,QAAU,GAC3C0G,EAAOwG,OAAS,KAAM,GAAKnI,EAC3B2B,EAAOyG,OAAS,IAAKpI,EACrB,IAAIutB,EAAU5rB,EAAOod,WAAW,KAAM,CACpCuqgB,oBAAoB,IAItB,OAFA/7f,EAAQspO,UAAYtpO,EAAQ4pO,YAAc,MAC1C5pO,EAAQlS,UAAY,SACb,CACLkS,QAASA,EACTvtB,MAAOA,EAEX,CACA,SAASyzR,EAAM2V,EAAO9zQ,EAAKrO,GAWzB,IATA,IAKIoiR,EAEFriS,EACAC,EAREqiS,EAASh0Q,EAAIjwB,EACfkkS,EAASj0Q,EAAIhwB,EACbkkS,EAAWn1R,KAAK2C,KAAK0nB,EAAK,GAAKA,EAAK,GAAKA,EAAK,GAAKA,EAAK,IACxDxmB,EAAIgxR,EAAOxqQ,GACX0vM,EAAKhvL,IAAW,GAAM,GAAK,EAE3BjhD,GAAKiwO,GAGAi7D,EAAOnxR,EAAE/Z,GAAKiwO,MACnBpnO,IAAOqiS,EAAK,GACZpiS,IAAOoiS,EAAK,KACRh1R,KAAKC,IAAID,KAAKoG,IAAIzT,GAAKqN,KAAKoG,IAAIxT,KAAQuiS,KAG5C,GAFAl0Q,EAAIjwB,EAAIikS,EAAStiS,EACjBsuB,EAAIhwB,EAAIikS,EAAStiS,IACbquB,EAAIjwB,EAAIiwB,EAAIxO,GAAK,GAAKwO,EAAIhwB,EAAIgwB,EAAIvO,GAAK,GAAKuO,EAAIjwB,EAAIiwB,EAAI9Y,GAAKkiB,EAAK,IAAMpJ,EAAIhwB,EAAIgwB,EAAI7Y,GAAKiiB,EAAK,OAE7FzX,IAAW,IAAaqO,EAAK8zQ,EAAO1qQ,EAAK,QACvCzX,GAAU,IAAaqO,EAAKrO,IAAS,CAUxC,IATA,IAAI0iR,EAASr0Q,EAAIq0Q,OACf7hR,EAAIwN,EAAIntB,OAAS,EACjByrP,EAAKl1N,EAAK,IAAM,EAChBwY,EAAK5hB,EAAIjwB,GAAKyiB,GAAK,GACnB66M,EAAU,IAALzrL,EACL0yP,EAAM,GAAKjnE,EACXljN,EAAI6V,EAAI7Y,GAAK6Y,EAAIvO,GACf2S,OAAO,EACTr0B,GAAKiwB,EAAIhwB,EAAIgwB,EAAIvO,IAAM6sO,GAAM18M,GAAM,GAC5B51C,EAAI,EAAGA,EAAIme,EAAGne,IAAK,CAC1Bo4B,EAAO,EACP,IAAK,IAAIp+B,EAAI,EAAGA,GAAKwsB,EAAGxsB,IACtB8tS,EAAM/jS,EAAI/J,IAAMo+B,GAAQkwQ,GAAOtuS,EAAIwsB,GAAK4R,EAAOiwQ,EAAOroS,EAAIwmB,EAAIxsB,MAAQqnO,EAAK,GAE7Et9N,GAAKuuP,CACP,CAEA,cADOt+N,EAAIq0Q,QACJ,CACT,CAGJ,OAAO,CACT,CA0DA,OAnLAV,EAAMnoR,MAAQ,WACZ,IAAI3Y,EAAQu2B,EAAK,GACft2B,EAASs2B,EAAK,GACZmrQ,EAAkB9qR,EAAWpd,KAC/BynS,EAAQH,EAAMG,MAAQH,EAAMG,MAAQ,KAAW1qQ,EAAK,IAAM,GAAKA,EAAK,IACpE1V,EAAIgtJ,EAAM/6K,OACV8uS,EAAO,GACPjqR,EAAOk2J,EAAM5qJ,KAAI,SAAUjL,EAAG7kB,EAAGwkB,GAQ/B,OAPAK,EAAElF,KAAOA,EAAKjf,KAAK5B,KAAM+lB,EAAG7kB,EAAGwkB,GAC/BK,EAAE/E,KAAOA,EAAKpf,KAAK5B,KAAM+lB,EAAG7kB,EAAGwkB,GAC/BK,EAAEja,MAAQ6nB,EAAU/xB,KAAK5B,KAAM+lB,EAAG7kB,EAAGwkB,GACrCK,EAAE0iC,OAAS/0B,EAAW9xB,KAAK5B,KAAM+lB,EAAG7kB,EAAGwkB,GACvCK,EAAE9M,OAASA,EAAOrX,KAAK5B,KAAM+lB,EAAG7kB,EAAGwkB,GACnCK,EAAEue,OAASxjB,EAASlf,KAAK5B,KAAM+lB,EAAG7kB,EAAGwkB,GACrCK,EAAEq0D,QAAUA,EAAQx4E,KAAK5B,KAAM+lB,EAAG7kB,EAAGwkB,GAC9BK,CACT,IAAGxT,MAAK,SAAU4L,EAAG8E,GACnB,OAAOA,EAAEqhB,KAAOnmB,EAAEmmB,IACpB,IACEpjC,GAAK,EACP2rB,EAAUgiR,EAAMG,MAAe,CAAC,CAC9B/jS,EAAG,EACHC,EAAG,GACF,CACDD,EAAG8C,EACH7C,EAAG8C,IALmB,KAQ1B,SAASy5C,IAEP,IADA,IAAI/gC,EAAQ1jB,KAAKD,MACVC,KAAKD,MAAQ2jB,EAAQm9L,KAAkB3iN,EAAI0tB,GAAG,CACnD,IAAI7I,EAAIL,EAAKxkB,GACb6kB,EAAE9a,EAAI8C,GAASi3C,IAAW,KAAQ,EAClCj/B,EAAE7a,EAAI8C,GAAUg3C,IAAW,KAAQ,EACnC,IAAYyqP,EAAiB1pR,EAAGL,EAAMxkB,GAClC6kB,EAAE+pR,SAAWzW,EAAM2V,EAAOjpR,EAAG8G,KAC/B8iR,EAAKpvS,KAAKwlB,GACN8G,EACGgiR,EAAMsgP,UAET,IAAYtigB,EAAQ9G,GAGtB8G,EAAS,CAAC,CACR5hB,EAAG8a,EAAE9a,EAAI8a,EAAE2G,GACXxhB,EAAG6a,EAAE7a,EAAI6a,EAAE4G,IACV,CACD1hB,EAAG8a,EAAE9a,EAAI8a,EAAE3D,GACXlX,EAAG6a,EAAE7a,EAAI6a,EAAE1D,KAIf0D,EAAE9a,GAAKq5B,EAAK,IAAM,EAClBve,EAAE7a,GAAKo5B,EAAK,IAAM,EAEtB,CACAuqQ,EAAMugP,MAAQz/O,EACdd,EAAMv3B,QAAUzqP,CAClB,CACA,OAhCA46B,IAgCOonP,CACT,EA8DAA,EAAM65M,WAAa,SAAU5na,GAC3B,IAAIuxM,EAAM1nR,SAAS+Z,cAAc,UAC7B3W,EAAQu2B,EAAK,GACft2B,EAASs2B,EAAK,GAEhB,GAAKv2B,GAAUC,EAAf,CAGA,IAAImiS,EAAMpiS,GAAS,EACfihS,EAAQ,KAAWjhS,GAAS,GAAKC,GACrCqkR,EAAItkR,MAAQA,EACZskR,EAAIrkR,OAASA,EACb,IAAIqhhB,EAAMh9P,EAAI1tQ,WAAW,MACzB0qgB,EAAIpuc,UAAUH,EAAK,EAAG,EAAGA,EAAI/yE,MAAO+yE,EAAI9yE,OAAQ,EAAG,EAAGD,EAAOC,GAE7D,IADA,IAAIshhB,EAAYD,EAAI/8P,aAAa,EAAG,EAAGvkR,EAAOC,GAAQ0X,KAC7Cxe,EAAI,EAAGA,EAAI8G,EAAQ9G,IAC1B,IAAK,IAAIhG,EAAI,EAAGA,EAAI6M,EAAO7M,IAAK,CAC9B,IAAIwF,EAAIypS,EAAMjpS,GAAKhG,GAAK,GACpBogC,EAAMp6B,EAAI6G,EAAQ7M,GAAK,EAEvB6U,EADOu5gB,EAAUhuf,IAAQ,KAAOguf,EAAUhuf,EAAM,IAAM,KAAOguf,EAAUhuf,EAAM,IAAM,IACxE,GAAK,GAAKpgC,EAAI,GAAK,EAClC8tS,EAAMtoS,IAAMqP,CACd,CAEF84R,EAAMG,MAAQA,EACdH,EAAMsgP,UAAW,CAlBjB,CAmBF,EACAtgP,EAAMhrF,aAAe,SAAUn9K,GAC7Bm9K,EAAoB,MAALn9K,EAAYniC,IAAWmiC,CACxC,EACAmoQ,EAAMjzH,MAAQ,SAAUl1I,GACtBk1I,EAAQl1I,CACV,EACAmoQ,EAAMvqQ,KAAO,SAAUoC,GACrBpC,EAAO,EAAEoC,EAAE,IAAKA,EAAE,GACpB,EACAmoQ,EAAM7tR,KAAO,SAAU0lB,GACrB1lB,EAAO,IAAQ0lB,EACjB,EACAmoQ,EAAMn7Q,WAAa,SAAUgT,GAC3BhT,EAAa,IAAQgT,EACvB,EACAmoQ,EAAM51R,OAAS,SAAUytB,GACvBztB,EAAS,IAAQytB,EACnB,EACAmoQ,EAAMC,OAAS,SAAUpoQ,GACvBooQ,EAAS,IAAQpoQ,IAAMA,CACzB,EACAmoQ,EAAM/tR,SAAW,SAAU4lB,GACzB5lB,EAAW,IAAQ4lB,EACrB,EACAmoQ,EAAMz0N,QAAU,SAAU1zC,GACxB0zC,EAAU,IAAQ1zC,EACpB,EACAmoQ,EAAM7pP,OAAS,SAAUte,GACvBse,EAAS,IAAQte,EACnB,EACOmoQ,CACT,CAzae0gP,GACb,CAAC,OAAQ,WAAY,aAAc,UAAW,SAAU,OAAQ,SAAU,eAAgB,UAAUnnhB,SAAQ,SAAUy4B,IAC/G,UAAMsE,EAAQtE,KACjBioF,EAAOjoF,GAAKsE,EAAQtE,GAExB,IACAioF,EAAO8yD,MAAMA,GACTz2I,EAAQqqf,WACV1ma,EAAO4/X,WAAWvjd,EAAQqqf,WAE5B,IAAI58gB,EAASk2G,EAAOpiG,QAChBipR,EAAO/8R,EAAOw8gB,MAClBz/O,EAAKvnS,SAAQ,SAAU8yB,GACrBA,EAAIjwB,GAAKk6B,EAAQb,KAAK,GAAK,EAC3BpJ,EAAIhwB,GAAKi6B,EAAQb,KAAK,GAAK,CAC7B,IACA,IAAInjC,EAAKgkC,EAAQb,KACf5W,EAAIvsB,EAAG,GACPkkB,EAAIlkB,EAAG,GAmBT,OAdAwuS,EAAKpvS,KAAK,CACRsgB,KAAM,GACN1e,MAAO,EACP8I,EAAG,EACHC,EAAG,EACHyJ,QAAS,IAEXg7R,EAAKpvS,KAAK,CACRsgB,KAAM,GACN1e,MAAO,EACP8I,EAAGyiB,EACHxiB,EAAGma,EACH1Q,QAAS,IAEJg7R,CACT,CA/CS,CAAU/zH,EADjBz2I,GAAU,UAAO,CAAC,EAAG,IAAiBA,GAExC,CA+CA,IAAI,IAAelrB,KAAK+B,GAAK,IAC3B,IAAK,GACL,IAAK,KACP,SAASgzgB,IAAUjpgB,GACjB,OAAOA,EAAElF,IACX,CACA,SAAS8tgB,MACP,MAAO,OACT,CACA,SAASE,MACP,MAAO,QACT,CACA,SAASD,IAAc7ogB,GACrB,OAAOA,EAAE5jB,KACX,CACA,SAAS2shB,MACP,OAA+B,MAAL,EAAhB70gB,KAAK+qC,SACjB,CACA,SAAS+pe,MACP,OAAO,CACT,CAGA,SAAS,IAAYt/O,EAAiB1pR,EAAGL,EAAM8J,GAC7C,IAAIzJ,EAAEwpR,OAAN,CACA,IAAIpqR,EAAIsqR,EAAgBt8Q,QACtBvtB,EAAQ6pS,EAAgB7pS,MAC1Buf,EAAE+jP,UAAU,EAAG,GAAI,KAAM,GAAKtjQ,EAAO,IAAKA,GAC1C,IAAIqF,EAAI,EACNC,EAAI,EACJklS,EAAO,EACLxhR,EAAIlJ,EAAK7kB,OAEb,MADE2uB,IACOA,EAAKZ,GAAG,CACf7I,EAAIL,EAAK8J,GACTrK,EAAEtC,OACFsC,EAAEnE,KAAO+E,EAAEja,MAAQ,IAAMia,EAAE0iC,OAAS,QAAU1iC,EAAEue,KAAO,GAAK1+B,GAAS,MAAQmgB,EAAE/E,KAC/E,IAAI0M,EAAIvI,EAAEoO,YAAYxN,EAAElF,KAAO,KAAK9S,MAAQnI,EAC1Cyf,EAAIU,EAAEue,MAAQ,EAChB,GAAIve,EAAE9M,OAAQ,CACZ,IAAIohQ,EAAKpgQ,KAAKoC,IAAI0J,EAAE9M,OAAS,KAC3B0vQ,EAAK1uQ,KAAKkC,IAAI4J,EAAE9M,OAAS,KACzBo3R,EAAM3iR,EAAIi7P,EACV2nB,EAAM5iR,EAAI2sP,EACVk2B,EAAMlrR,EAAIsjQ,EACV6nB,EAAMnrR,EAAIg1P,EACZ3sP,EAAIzT,KAAKE,IAAIF,KAAKoG,IAAIgwR,EAAMG,GAAMv2R,KAAKoG,IAAIgwR,EAAMG,IAAQ,IAAQ,GAAK,EACtEnrR,IAAMpL,KAAKE,IAAIF,KAAKoG,IAAIiwR,EAAMC,GAAMt2R,KAAKoG,IAAIiwR,EAAMC,GACrD,MACE7iR,EAAIA,EAAI,IAAQ,GAAK,EAQvB,GANIrI,EAAI+qR,IAAMA,EAAO/qR,GACjBpa,EAAIyiB,GAAK,KAAM,IACjBziB,EAAI,EACJC,GAAKklS,EACLA,EAAO,GAELllS,EAAIma,GAAK,IAAI,MACjBF,EAAE7M,WAAWrN,GAAKyiB,GAAK,IAAM9nB,GAAQsF,GAAKma,GAAK,IAAMzf,GACjDmgB,EAAE9M,QAAQkM,EAAElM,OAAO8M,EAAE9M,OAAS,KAClCkM,EAAEq9O,SAASz8O,EAAElF,KAAM,EAAG,GAClBkF,EAAEq0D,UACJj1D,EAAE1F,UAAY,EAAIsG,EAAEq0D,QACpBj1D,EAAEs9O,WAAW18O,EAAElF,KAAM,EAAG,IAE1BsE,EAAErC,UACFiD,EAAEhY,MAAQ2f,EACV3H,EAAE/X,OAASqX,EACXU,EAAE6pR,KAAO3kS,EACT8a,EAAE8pR,KAAO3kS,EACT6a,EAAE3D,GAAKsL,GAAK,EACZ3H,EAAE1D,GAAKgD,GAAK,EACZU,EAAE2G,IAAM3G,EAAE3D,GACV2D,EAAE4G,IAAM5G,EAAE1D,GACV0D,EAAE+pR,SAAU,EACZ7kS,GAAKyiB,CACP,CAGA,IAFA,IAAI+iR,EAAStrR,EAAEmtQ,aAAa,EAAG,GAAI,KAAM,GAAK1sR,EAAO,IAAKA,GAAO8f,KAC/D6pR,EAAS,KACF//Q,GAAM,GAEb,IADAzJ,EAAIL,EAAK8J,IACFsgR,QAAP,CAKA,IAJA,IACEK,GADEziR,EAAI3H,EAAEhY,QACG,EAGJ7M,GAFLmkB,EAAIU,EAAE1D,GAAK0D,EAAE4G,GAEJ,GAAGzrB,EAAImkB,EAAI8qR,EAAKjvS,IAAKquS,EAAOruS,GAAK,EAE9C,GAAS,OADT+J,EAAI8a,EAAE6pR,MACS,OACf1kS,EAAI6a,EAAE8pR,KAGN,IAFA,IAAIhvP,EAAO,EACT6vP,GAAW,EACJxpS,EAAI,EAAGA,EAAIme,EAAGne,IAAK,CAC1B,IAAShG,EAAI,EAAGA,EAAIwsB,EAAGxsB,IAAK,CAC1B,IAAIwF,EAAIypS,EAAMjpS,GAAKhG,GAAK,GACtB6U,EAAI06R,GAAQvlS,EAAIhE,IAAM,KAAM,IAAM+D,EAAI/J,IAAM,GAAK,GAAK,GAAKA,EAAI,GAAK,EACtEquS,EAAO7oS,IAAMqP,EACb8qC,GAAQ9qC,CACV,CACI8qC,EAAM6vP,EAAUxpS,GAClB6e,EAAE4G,KACFtH,IACAne,IACAgE,IAEJ,CACA6a,EAAE1D,GAAK0D,EAAE4G,GAAK+jR,EACd3qR,EAAEwpR,OAASA,EAAOvoR,MAAM,GAAIjB,EAAE1D,GAAK0D,EAAE4G,IAAMwjR,EA1BnB,CAzDN,CAqFtB,CAEA,SAAS,IAAaj1Q,EAAK8zQ,EAAOx1C,GAChCA,IAAO,EASP,IARA,IAOEl6N,EAPEiwQ,EAASr0Q,EAAIq0Q,OACf7hR,EAAIwN,EAAIntB,OAAS,EACjB+uC,EAAK5hB,EAAIjwB,GAAKyiB,GAAK,GACnB66M,EAAU,IAALzrL,EACL0yP,EAAM,GAAKjnE,EACXljN,EAAI6V,EAAI7Y,GAAK6Y,EAAIvO,GACf1hB,GAAKiwB,EAAIhwB,EAAIgwB,EAAIvO,IAAM6sO,GAAM18M,GAAM,GAE9B51C,EAAI,EAAGA,EAAIme,EAAGne,IAAK,CAC1Bo4B,EAAO,EACP,IAAK,IAAIp+B,EAAI,EAAGA,GAAKwsB,EAAGxsB,IACtB,IAAKo+B,GAAQkwQ,GAAOtuS,EAAIwsB,GAAK4R,EAAOiwQ,EAAOroS,EAAIwmB,EAAIxsB,MAAQqnO,EAAK,IAAMymE,EAAM/jS,EAAI/J,GAAI,OAAO,EAE7F+J,GAAKuuP,CACP,CACA,OAAO,CACT,CACA,SAAS,IAAY3sO,EAAQ9G,GAC3B,IAAIvI,EAAKqP,EAAO,GACd9P,EAAK8P,EAAO,GACV9G,EAAE9a,EAAI8a,EAAE2G,GAAKlP,EAAGvS,IAAGuS,EAAGvS,EAAI8a,EAAE9a,EAAI8a,EAAE2G,IAClC3G,EAAE7a,EAAI6a,EAAE4G,GAAKnP,EAAGtS,IAAGsS,EAAGtS,EAAI6a,EAAE7a,EAAI6a,EAAE4G,IAClC5G,EAAE9a,EAAI8a,EAAE3D,GAAKrF,EAAG9R,IAAG8R,EAAG9R,EAAI8a,EAAE9a,EAAI8a,EAAE3D,IAClC2D,EAAE7a,EAAI6a,EAAE1D,GAAKtF,EAAG7R,IAAG6R,EAAG7R,EAAI6a,EAAE7a,EAAI6a,EAAE1D,GACxC,CACA,SAAS,IAAalE,EAAG8E,GACvB,OAAO9E,EAAElT,EAAIkT,EAAEiE,GAAKa,EAAE,GAAGhY,GAAKkT,EAAElT,EAAIkT,EAAEuO,GAAKzJ,EAAE,GAAGhY,GAAKkT,EAAEjT,EAAIiT,EAAEkE,GAAKY,EAAE,GAAG/X,GAAKiT,EAAEjT,EAAIiT,EAAEwO,GAAK1J,EAAE,GAAG/X,CAChG,CACA,SAAS,IAAkBo5B,GACzB,IAAIpgC,EAAIogC,EAAK,GAAKA,EAAK,GACvB,OAAO,SAAUvgC,GACf,MAAO,CAACG,GAAKH,GAAK,IAAOkW,KAAKkC,IAAIpY,GAAIA,EAAIkW,KAAKoC,IAAItY,GACrD,CACF,CA2BA,SAAS,IAAU6qB,GAGjB,IAFA,IAAIzQ,EAAI,GACJjd,GAAK,IACAA,EAAI0tB,GAAGzQ,EAAEjd,GAAK,EACvB,OAAOid,CACT,CACA,SAAS8wgB,MACP,OAAOtkhB,SAAS+Z,cAAc,SAChC,CACO,SAAS,IAAQqB,GACtB,OAAO,UAAWA,GAAKA,EAAI,WACzB,OAAOA,CACT,CACF,CACA,IAAI,IAAU,CACZ4qR,YAAa,IACbC,YA1CF,SAA2BtsQ,GACzB,IACE13B,EADO,EACG03B,EAAK,GAAKA,EAAK,GACvBr5B,EAAI,EACNC,EAAI,EACN,OAAO,SAAUnH,GACf,IAAI40M,EAAO50M,EAAI,GAAK,EAAI,EAExB,OAAQkW,KAAK2C,KAAK,EAAI,EAAI+7L,EAAO50M,GAAK40M,EAAO,GAC3C,KAAK,EACH1tM,GAAK2B,EACL,MACF,KAAK,EACH1B,GAZG,EAaH,MACF,KAAK,EACHD,GAAK2B,EACL,MACF,QACE1B,GAlBG,EAqBP,MAAO,CAACD,EAAGC,EACb,CACF,GCxOO,SAAS,IAAUoW,GACxB,IAAImugB,EAAanugB,EAAO6jB,QACtBu3a,EAAQp7b,EAAOo7b,MACbv7c,EAAKu7c,EACP3uc,EAAQ5M,EAAG4M,MACXC,EAAS7M,EAAG6M,OACZ0hhB,EAAevuhB,EAAGi5E,QAClB2jY,EAAgB58c,EAAG48c,cACnBt2X,EAAMtmF,EAAGsmF,IACP/hE,EAAO+pgB,EAAW/pgB,KACpB8pgB,EAAYC,EAAWD,UACvBG,EAAYF,EAAWE,UACvBl7B,EAAcg7B,EAAWh7B,YACzBtqB,EAAaslD,EAAWtlD,WACxBokD,EAAYkB,EAAWlB,UACvB1qU,EAAe4rU,EAAW5rU,aAC1B7+J,EAASyqe,EAAWzqe,OACpB8pP,EAAS2gP,EAAW3gP,OACpB53R,EAAKu4gB,EAAW72H,QAChBA,OAAiB,IAAP1hZ,GAAuBA,EACjC04gB,EAAoBH,EAAWG,kBACjC,IAAKlqgB,IAASA,EAAK7kB,OACjB,MAAO,GAET,IAAI4yB,EAAa86f,EAAU96f,WACzBC,EAAa66f,EAAU76f,WACvB0mD,EAAUm0c,EAAUn0c,QACpBt5D,EAAWytgB,EAAUztgB,SACnBrK,EA2KC,SAA4BiP,EAAMmb,GACvC,OAAOnb,EAAKsL,KAAI,SAAU/e,GACxB,OAAOA,EAAE4uB,EACX,IAAGtwB,QAAO,SAAU0B,GAElB,MAAiB,iBAANA,IAAmBiQ,MAAMjQ,EAEtC,GACF,CAnLY49gB,CAAmBnqgB,EAAM+ue,GAC/B9sc,EAAQ,CAAC,IAAIlxC,GAAM,IAAIA,IAEvBmlK,EAAQl2J,EAAKsL,KAAI,SAAUmnM,GAC7B,MAAO,CACLt3M,KAAMs3M,EAAMw3T,GACZxthB,MAAOg2N,EAAMs8R,GACb1gd,MAAOokL,EAAMgyQ,GACbhyQ,MAAOA,EAEX,IACIhzL,EAAU,CACZqqf,UAAWA,EACXxugB,KAAMyS,EACN3S,SAAUgvgB,IAAmBhvgB,EAAU6mC,GACvCj0B,WAAYA,EAEZ4Q,KAAM,IAAQ,CACZv2B,MAAOA,EACPC,OAAQA,EACRosE,QAASs1c,EACT3xE,cAAeA,EACfnlD,QAASA,EACT5vZ,UAAWy+E,IAEbrN,QAASA,EACTypI,aAAcA,EACd7+J,OAAQA,EACR8pP,OAAQA,EACR71R,OAAQ82gB,IAAUN,IAGpB,IAAI,UAAWG,GAAoB,CACjC,IAAIh9gB,EAASgpK,EAAM5qJ,KAAI,SAAUgxG,EAAMh6H,EAAO4zK,GAC5C,OAAO,WAAS,WAAS,UAAS,CAAC,EAAG55C,GAAO,CAC3C8tK,UAAW9tK,EAAKnhH,KAChBG,KAAM,IAAQmkB,EAAQnkB,KAAhB,CAAsBghH,EAAMh6H,EAAO4zK,GACzCnzH,OAAQ,IAAQtjB,EAAQzR,WAAhB,CAA4BsuG,EAAMh6H,EAAO4zK,GACjD3iK,OAAQ,IAAQksB,EAAQlsB,OAAhB,CAAwB+oH,EAAMh6H,EAAO4zK,GAC7Ct3I,KAAM,IAAQa,EAAQrkB,SAAhB,CAA0BkhH,EAAMh6H,EAAO4zK,GAC7C9vK,MAAO,WACL8jhB,EAAkBhuhB,KAAK86c,EAAO16U,EAAMh6H,EAAO4zK,GACjD,IAgBA,OAdAhpK,EAAOrS,KAAK,CACVsgB,KAAM,GACN1e,MAAO,EACP8I,EAAG,EACHC,EAAG,EACHyJ,QAAS,IAEX/B,EAAOrS,KAAK,CACVsgB,KAAM,GACN1e,MAAO,EACP8I,EAAGk6B,EAAQb,KAAK,GAChBp5B,EAAGi6B,EAAQb,KAAK,GAChB3vB,QAAS,IAEJ/B,CACT,CAEA,OAAO87gB,IAAU9yW,EAAOz2I,EAC1B,CAKO,SAAS,IAAQA,GACtB,IAAIp3B,EAAQo3B,EAAQp3B,MAClBC,EAASm3B,EAAQn3B,OACfhF,EAAYm8B,EAAQn8B,UACtB4vZ,EAAUzzX,EAAQyzX,QAClBx+U,EAAUj1C,EAAQi1C,QAClB2jY,EAAgB54a,EAAQ44a,cAK1B,GAAInlD,EAAS,CACX,IAAIrsN,EAAgB4oT,IAAiBnsf,GACrC+E,EAAQw+L,EAAcx+L,MACtBC,EAASu+L,EAAcv+L,MACzB,CAEAD,EAAQA,GAAS,IACjBC,EAASA,GAAU,IACnB,IAAI7M,EAeN,SAAwBgkC,GACtB,IAAIi1C,EAAUq7a,IAActwd,EAAQi1C,SAChC2jY,EAAgB03C,IAActwd,EAAQ44a,eACtC9uc,EAAMmrE,EAAQ,GAAK2jY,EAAc,GACjCprc,EAAQynE,EAAQ,GAAK2jY,EAAc,GACnCt6X,EAASrJ,EAAQ,GAAK2jY,EAAc,GACpC/uc,EAAOorE,EAAQ,GAAK2jY,EAAc,GACtC,MAAO,CAAC9uc,EAAK0D,EAAO8wE,EAAQz0E,EAC9B,CAvBWghhB,CAAe,CACpB51c,QAASA,EACT2jY,cAAeA,IAEjB9uc,EAAM9N,EAAG,GACTwR,EAAQxR,EAAG,GACXsiF,EAAStiF,EAAG,GAGd,MADa,CAAC4M,GADL5M,EAAG,GACkBwR,GAAQ3E,GAAUiB,EAAMw0E,GAExD,CA+CO,SAASqsc,IAAmBhvgB,EAAU6mC,GAC3C,IAAI,UAAW7mC,GACb,OAAOA,EAET,IAAI,UAAQA,GAAW,CACrB,IAAImvgB,EAASnvgB,EAAS,GACpBovgB,EAASpvgB,EAAS,GACpB,IAAK6mC,EACH,OAAO,WACL,OAAQuoe,EAASD,GAAU,CAC7B,EAEF,IAAI9pH,EAAQx+W,EAAM,GAChB0+W,EAAQ1+W,EAAM,GAChB,OAAI0+W,IAAUF,EACL,WACL,OAAQ+pH,EAASD,GAAU,CAC7B,EAEK,SAAkB9uhB,GACvB,IAAIgB,EAAQhB,EAAGgB,MACf,OAAQ+thB,EAASD,IAAW5pH,EAAQF,IAAUhka,EAAQgka,GAAS8pH,CACjE,CACF,CACA,OAAO,WACL,OAAOnvgB,CACT,CACF,CAcA,SAASivgB,IAAU5qf,GACjB,IAAIhkC,EAiBN,SAAuBgkC,GACrB,IAAIqpf,EAAgBrpf,EAAQopf,UAAUC,cAClCA,EAAgB,IAClB,IAAI36B,IAAMkB,MAAM,EAAO,gEACvBy5B,EAAgB,GAElB,MAAO,CACL1oQ,SAAU3gP,EAAQopf,UAAUzoQ,SAC5B0oQ,cAAeA,EAEnB,CA3BW2B,CAAchrf,GACrB2gP,EAAW3kR,EAAG2kR,SACd0oQ,EAAgBrthB,EAAGqthB,cACrB,KAAK,UAAQ1oQ,GAAW,OAAOA,EAC/B,IAAI5rQ,EAAM4rQ,EAAS,GACf3rQ,EAAM2rQ,EAAS,GAEfsqQ,EAA4B,IAAlB5B,EAAsB,GAAKr0gB,EAAMD,IAAQs0gB,EAAgB,GACvE,OAAO,WACL,OAAIr0gB,IAAQD,EAAYC,EACjBF,KAAKwX,MAAMxX,KAAK+qC,SAAWwpe,GAAiB4B,CACrD,CACF,CAqBA,SAAS,IAAI5sT,GACX,OAAOvpN,KAAKC,IAAI7Y,MAAM4Y,KAAMupN,EAC9B,CAMA,SAAS,IAAIA,GACX,OAAOvpN,KAAKE,IAAI9Y,MAAM4Y,KAAMupN,EAC9B,CC9PA,SAAS,IAASliN,GAChB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfglc,EAAahlc,EAAQglc,WACvBp2b,EAAQ5O,EAAQ4O,MACdruB,EAAO,IAAUpE,GAkBrB,OAjBAo7b,EAAMh3b,KAAKA,GAaD,IAZFwve,IAAW,CAAC,EAAG5ze,EAAQ,CAC7B6jB,QAAS,CACP6zX,OAAQ,IACRC,OAAQ,IACR+/F,YAAa7uB,GAAcmkD,IAC3B55B,WAAW,UAAW3gd,KAAU,WAAc,UAAc,IAAI,UAAI5O,EAAS,YAAa,KAAK,GAAO,CAAC,UAAU,GACjHn6B,MAAO,CACL+oC,MAAOA,EACPtuC,MAAO,kBAIM2mN,IACf/M,SAASzyJ,OAAM,GACnB8vZ,EAAMz+L,aAAah9B,QAAQ,KAC3By7N,EAAM7oM,MAAK,GACJvyP,CACT,CAKA,SAAS,IAAKA,GACZ,OAAOivN,IAAK,IAAM,CAChBtlO,EAAG,CACDs5N,MAAM,GAERr5N,EAAG,CACDq5N,MAAM,KALHgM,CAOHjvN,EACN,CAKO,SAAS,IAAOA,GACrB,IAAIo7b,EAAQp7b,EAAOo7b,MACjBv3a,EAAU7jB,EAAO6jB,QACfkyO,EAASlyO,EAAQkyO,OACnB8yN,EAAahlc,EAAQglc,WAMvB,OALe,IAAX9yN,EACFqlM,EAAMrlM,QAAO,GACJ8yN,GACTztB,EAAMrlM,OAAOi3Q,IAAwBj3Q,GAEhC/1P,CACT,CAMO,SAAS,IAAQA,GAEtBivN,IAAK,IAAU,IAAM,IAAS,IAAQ,IAAa7qO,IAAW,IAAO,IAArE6qO,CAA4EjvN,EAC9E,CCvDA,SAAS+ugB,IAAa1uhB,GACpB,MAAO,CACLmf,SAAUnf,EAAI+jB,KAAK4e,KACnBzjB,KAAMlf,EAAI+jB,KAAK7E,KACfI,UAAW,SACXwS,WAAY9xB,EAAI+jB,KAAK1E,KACrB0S,WAAY/xB,EAAI+jB,KAAK+iC,OACrB7M,KAAMj6C,EAAIoyC,OAASpyC,EAAI+uZ,aAAavvY,OACpCD,aAAc,aAElB,CA3BA6rc,IAAc,QAAS,aAAc,CACnCjld,KAAM,SAAcnG,EAAK+P,GACvB,IAAIgQ,EAAK/f,EAAIsJ,EACT0W,EAAKhgB,EAAIuJ,EACTzF,EAAQiM,EAAML,SAAS,OAAQ,CACjC/K,OAAO,WAAS,UAAS,CAAC,EAAG+phB,IAAa1uhB,IAAO,CAC/CsJ,EAAGyW,EACHxW,EAAGyW,MAGH1I,EAAStX,EAAI+jB,KAAKzM,OAItB,MAHsB,iBAAXA,GACTkjd,IAAKljd,OAAOxT,EAAOwT,EAASgB,KAAK+B,GAAK,KAEjCvW,CACT,KCV2B,SAAU/D,GAErC,SAAS4uhB,IACP,IAAI7vhB,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAGhE,OADAS,EAAMkI,KAAO,aACNlI,CACT,EANA,UAAU6vhB,EAAW5uhB,GAWrB4uhB,EAAU51B,kBAAoB,WAC5B,OAAO,GACT,EAKA41B,EAAUpwhB,UAAUw/c,WAAa,SAAUh6b,GACzC1lB,KAAKg7f,aAAa,CAChBt1e,KAAMA,IAEJ1lB,KAAKmlC,QAAQqqf,UACfxvhB,KAAKgrE,SAELhrE,KAAK08c,MAAMgD,WAAW,IAAU,CAC9BhD,MAAO18c,KAAK08c,MACZv3a,QAASnlC,KAAKmlC,UAGpB,EAIAmrf,EAAUpwhB,UAAUw6f,kBAAoB,WACtC,OAAO41B,EAAU51B,mBACnB,EAIA41B,EAAUpwhB,UAAU8qE,OAAS,WAC3B,IAAIvqE,EAAQT,KACZ,OAAO,IAAI4mC,SAAQ,SAAU1gB,GAC3B,IAAIspgB,EAAY/uhB,EAAM0kC,QAAQqqf,UAC9B,IAAKA,EAIH,OAFA9thB,EAAOxB,UAAU8qE,OAAOppE,KAAKnB,QAC7BylB,IAGF,IH8F2B46D,EG9FvBr9C,EAAU,SAAiBq9C,GAC7BrgF,EAAM0kC,SAAU,WAAS,UAAS,CAAC,EAAG1kC,EAAM0kC,SAAU,CACpDqqf,UAAW1uc,GAAO,OAGpBp/E,EAAOxB,UAAU8qE,OAAOppE,KAAKnB,GAC7BylB,GACF,GHuF2B46D,EGtFV0uc,EHuFd,IAAI5of,SAAQ,SAAU1gB,EAAKqqgB,GAChC,GAAIzvc,aAAe0vc,iBACjBtqgB,EAAI46D,OADN,CAIA,IAAI,UAASA,GAAM,CACjB,IAAIsgZ,EAAU,IAAI14Z,MAUlB,OATA04Z,EAAQ9/Y,YAAc,YACtB8/Y,EAAQj9b,IAAM28C,EACdsgZ,EAAQh2a,OAAS,WACfllC,EAAIk7c,EACN,OACAA,EAAQ7na,QAAU,WAChB,IAAIs6b,IAAM48B,OAAO,EAAO,2BAA4B3vc,GACpDyvc,GACF,EAEF,CACA,IAAI18B,IAAMkB,UAAct+d,IAARqqD,EAAmB,oEACnCyvc,GAfA,CAgBF,KG3GgChpf,KAAK9D,GAASqjG,MAAMrjG,EAClD,GACF,EAIA6sf,EAAUpwhB,UAAUs7f,iBAAmB,WACrC,OAAO,GACT,EAIA80B,EAAUpwhB,UAAUu7f,cAAgB,WAClC,IAAIh7f,EAAQT,KACPA,KAAK08c,MAAM76c,YAId7B,KAAK86f,cAGL53f,OAAOI,YAAW,WAEhB5B,EAAOxB,UAAUu7f,cAAc75f,KAAKnB,EACtC,IAEJ,CAEF,EAvF6B,CAuF3Bg6f,KCrEmB,SAAU/4f,GAS7B,SAAS4qD,EAAEtjD,EAAWm8B,EAASo2d,EAAS6C,GACtC,IAAI39f,EAAQiB,EAAOE,KAAK5B,KAAMgJ,EAAWksf,IAAW,CAAC,EAAGkJ,EAAgBj5d,KAAanlC,KAKrF,OAHAS,EAAMkI,KAAO,UACblI,EAAM29f,eAAiBA,EACvB39f,EAAM86f,QAAUA,EACT96f,CACT,EAfA,UAAU6rD,EAAG5qD,GAmBb4qD,EAAEpsD,UAAUw6f,kBAAoB,WAC9B,OAAO16f,KAAKo+f,cACd,EAIA9xc,EAAEpsD,UAAUs7f,iBAAmB,WAC7B,OAAOx7f,KAAKu7f,OACd,CAEF,CA9BqB,CA8BnBd,KC6CFlB,IAAe,QCpGW,CACxB13b,OAAQ,QAER6ud,QAAS,CACPC,SAAU,WACVC,SAAU,WACVrld,KAAM,QAIR28C,UAAW,CACTpvD,MAAO,SAGTimc,cAAe,CACbnyc,MAAO,QAETyqN,OAAQ,CAAC,EACTtS,QAAS,CAAC,EACV97I,OAAQ,CAAC,EACTyoV,UAAW,CAAC,EAEZm/E,UAAW,CACT/3d,MAAO,WD8EXygc,IAAe,QErGW,CACxB13b,OAAQ,QAER6ud,QAAS,CACPC,SAAU,KACVC,SAAU,KACVrld,KAAM,MAIR28C,UAAW,CACTpvD,MAAO,MAGTimc,cAAe,CACbnyc,MAAO,OAETyqN,OAAQ,CAAC,EACTtS,QAAS,CAAC,EACV97I,OAAQ,CAAC,EACTyoV,UAAW,CAAC,EAEZm/E,UAAW,CACT/3d,MAAO,QF+EJ,IG6BH,IAnIAg4d,IAAoC,WAQtC,OAPAA,IAAWt5gB,OAAO89B,QAAU,SAAUvxC,GACpC,IAAK,IAAI+Z,EAAG5c,EAAI,EAAG0tB,EAAIhuB,UAAUC,OAAQK,EAAI0tB,EAAG1tB,IAE9C,IAAK,IAAIkd,KADTN,EAAIld,UAAUM,GACOsW,OAAOtX,UAAUqX,eAAe3V,KAAKkc,EAAGM,KAAIra,EAAEqa,GAAKN,EAAEM,IAE5E,OAAOra,CACT,EACO+shB,IAASzvhB,MAAMrB,KAAMY,UAC9B,EAsHI,IAAYkwhB,IAAS,CAAC,EAAG,IACzB,IAAU,IAAU/tgB,QACtB,IAAc,IAAUioD,OACC,IAAUC,uBAErC,IACoBhpD,QAAQ,KAAW,IAAIqH,MAAM,KAAK,KACjC,KACjB,IAAa,IAAUugD,WAE3B,CAAE,MAAO3lE,KAET,CACA,SAAS,IAAcinE,GACrB,IAAIC,EAAqD,IAAUA,mDAC/DA,GAAoH,iBAAvDA,IAC/DA,EAAmDC,sBAAwBF,EAE/E,CACA,IAAI,IAAO,oBAiBJ,SAASH,IAAOtqB,EAAM13C,GACvB,IAjBN,SAAsB03C,EAAM13C,GAC1B,KAAc,GACd,IAAIuiE,EAAOviE,EAAU,MAAS,IAAWA,GACzC,KAAc,GACduiE,EAAKP,OAAOtqB,GACZ13C,EAAU,KAAQuiE,CACpB,CAYI,CAAa7qB,EAAM13C,GAXvB,SAAsB03C,EAAM13C,GAC1B,IAAY03C,EAAM13C,EACpB,CAYE,CAAa03C,EAAM13C,EACrB,CCxKA,IAAI+nhB,IAA4B,IAAIhygB,IAepC,IAdiB,SAAoBlP,EAAUlH,EAAM45E,GACnD,IAAIyuc,EAAarmhB,SAAS+Z,cAAc,OAWxC,MAVa,YAAT/b,IACFqohB,EAAW1me,aAAa,YAAai4B,GACjCwuc,IAA0Bjvf,IAAIygD,GAChCyuc,EAAaD,IAA0B/uhB,IAAIugF,GAE3Cwuc,IAA0B7uhB,IAAIqgF,EAAMyuc,GAEtCA,EAAWp9gB,UAAY,cAEzBo3D,IAAOn7D,EAAUmhhB,GACVA,CACT,ECbW,IAAS,SAAgB7uhB,EAAOwG,GAEzC,MADe,CAAC,EAAEia,SACFhhB,KAAKO,KAAW,WAAWoR,OAAO5K,EAAM,IAC1D,EAmBW,IAAY,SAAS2rM,EAAUjjL,GACxC,OAAKA,GAA4B,iBAAXA,GAIlBoP,MAAMC,QAAQrP,GAChB3oB,EAAS2oB,EAAOL,KAAI,SAAUvZ,GAC5B,OAAO68L,EAAU78L,EACnB,KAEA/O,EAAS,CAAC,EACV8O,OAAOopB,KAAKvP,GAAQjpB,SAAQ,SAAUy4B,GACpC,OAAOn4B,EAAOm4B,GAAOyzK,EAAUjjL,EAAOwP,GACxC,KAEKn4B,GAbE2oB,EAET,IAAI3oB,CAYN,EAIWuohB,IAAU,SAAiB5/f,EAAQxqB,GAE5C,IADA,IAAIY,EAAU4pB,EACLnwB,EAAI,EAAGA,EAAI2F,EAAKhG,OAAQK,GAAK,EAAG,CACvC,KAAIuG,aAAyC,EAASA,EAAQZ,EAAK3F,KAE5D,CACLuG,OAAUgvB,EACV,KACF,CAJEhvB,EAAUA,EAAQZ,EAAK3F,GAK3B,CACA,OAAOuG,CACT,ECvDI,IAAoC,WAQtC,OAPA,IAAW+P,OAAO89B,QAAU,SAAUvxC,GACpC,IAAK,IAAI+Z,EAAG5c,EAAI,EAAG0tB,EAAIhuB,UAAUC,OAAQK,EAAI0tB,EAAG1tB,IAE9C,IAAK,IAAIkd,KADTN,EAAIld,UAAUM,GACOsW,OAAOtX,UAAUqX,eAAe3V,KAAKkc,EAAGM,KAAIra,EAAEqa,GAAKN,EAAEM,IAE5E,OAAOra,CACT,EACO,IAAS1C,MAAMrB,KAAMY,UAC9B,EACI,IAAgC,SAAUkd,EAAG5Z,GAC/C,IAAIH,EAAI,CAAC,EACT,IAAK,IAAIqa,KAAKN,EAAOtG,OAAOtX,UAAUqX,eAAe3V,KAAKkc,EAAGM,IAAMla,EAAEgP,QAAQkL,GAAK,IAAGra,EAAEqa,GAAKN,EAAEM,IAC9F,GAAS,MAALN,GAAqD,mBAAjCtG,OAAO+wB,sBAA2C,KAAIrnC,EAAI,EAAb,IAAgBkd,EAAI5G,OAAO+wB,sBAAsBzqB,GAAI5c,EAAIkd,EAAEvd,OAAQK,IAClIgD,EAAEgP,QAAQkL,EAAEld,IAAM,GAAKsW,OAAOtX,UAAUgsD,qBAAqBtqD,KAAKkc,EAAGM,EAAEld,MAAK6C,EAAEqa,EAAEld,IAAM4c,EAAEM,EAAEld,IADuB,CAGvH,OAAO6C,CACT,EAKe,SAASmthB,IAAQC,EAAY3kb,GAC1C,IAAIkwW,GAAQ,IAAApsY,UACR8gd,GAAe,IAAA9gd,UACftnE,GAAY,IAAAsnE,QAAO,MACnB+gd,EAAU7kb,EAAO6kb,QACnBC,EAAU9kb,EAAO8kb,QAyCfC,EAAmB,SAA0BlggB,EAAQxqB,EAAM8B,EAAM6ohB,GACnE,IAAIC,EAAsBR,IAAQ5/f,EAAQxqB,IDVzB,SAAiBwqB,EAAQxqB,EAAM1E,GAClD,IAAKkvB,EACH,OAAOA,EAET,IAAIjM,EAAIiM,EACRxqB,EAAKuB,SAAQ,SAAUy4B,EAAKqE,GAEtBA,EAAMr+B,EAAKhG,OAAS,EACtBukB,EAAIA,EAAEyb,GAENzb,EAAEyb,GAAO1+B,CAEb,GAEF,CCHIuvhB,CAAQrggB,EAAQxqB,GAAM,WAEpB,IADA,IAAI21C,EAAM,GACD77C,EAAK,EAAGA,EAAKC,UAAUC,OAAQF,IACtC67C,EAAI77C,GAAMC,UAAUD,GAEtB,IAAIgxhB,EAAe,IAAOF,EAAqB,YAAcA,EAAoBpwhB,WAAM,EAAQm7C,GAAOi1e,EACtG,OAAI,IAAOE,EAAc,WAAa,IAAOA,EAAc,WAAa,IAAOA,EAAc,kBACpFA,EAEF,IAAWA,EAAchphB,EAAM6ohB,EACxC,GACF,EACII,EAAgB,WAClB,IAAIJ,EDRC,uCAAuC5rgB,QAAQ,SAAS,SAAUT,GACvE,IAAIjG,EAAoB,GAAhBjF,KAAK+qC,SAAgB,EAE7B,OADa,KAAL7/B,EAAWjG,EAAQ,EAAJA,EAAU,GACxB0D,SAAS,GACpB,ICMMqugB,IAAQzkb,EAAQ,CAAC,YAAa,UAAW,gBAC3C+kb,EAAiB/kb,EAAQ,CAAC,YAAa,UAAW,eAEhDykb,IAAQzkb,EAAQ,CAAC,YAAa,QAAS,gBACzC+kb,EAAiB/kb,EAAQ,CAAC,YAAa,QAAS,eAGpB,iBAAnBA,EAAOu4J,UACZksR,IAAQzkb,EAAQ,CAAC,UAAW,eAC9B+kb,EAAiB/kb,EAAQ,CAAC,UAAW,aAAc,UAAWglb,GAE5DP,IAAQzkb,EAAQ,CAAC,UAAW,mBAC9B+kb,EAAiB/kb,EAAQ,CAAC,UAAW,iBAAkB,UAAWglb,GAGxE,EAwEA,OAvEA,IAAAtzc,YAAU,WACR,GAAIw+X,EAAMj1c,WAAY,UAAQ2phB,EAAa3phB,QAAS+kG,GAAS,CAC3D,IAAIkzW,GAAa,EACjB,GAAI0xE,EAAa3phB,QAAS,CAExB,IAAItG,EAAKiwhB,EAAa3phB,QAIpB6jH,GAHcnqH,EAAGukB,KACFvkB,EAAGgB,MACDhB,EAAG43D,QACJ,IAAO53D,EAAI,CAAC,OAAQ,QAAS,aAI7C0whB,GAHcrlb,EAAO9mF,KACR8mF,EAAOrqG,MACLqqG,EAAOzzC,QACR,IAAOyzC,EAAQ,CAAC,OAAQ,QAAS,aACjDkzW,GAAa,UAAQp0V,EAAeuma,EACtC,CAEA,GADAT,EAAa3phB,QAAU,IAAU+kG,GAC7BkzW,GAA2C,SAA7B,UAAIlzW,EAAQ,aAAwB,CACpD,IAAIslb,EAAe,OAEfC,EAAgBv6gB,OAAOopB,KAAK4rE,GADjB,CAAC,WAEPpkG,SAAQ,SAAUO,GACrBophB,EAAc5shB,SAASwD,KACzBmphB,EAAenphB,EAEnB,IACA+zc,EAAMj1c,QAAQi4c,YAAYlzW,aAAuC,EAASA,EAAOslb,KAAkB,IACnGp1E,EAAMj1c,QAAQujE,QAChB,MACE4md,IACAl1E,EAAMj1c,QAAQjC,OAAOgnG,EAEzB,CACF,GAAG,CAACA,KACJ,IAAAtuB,YAAU,WACR,IAAKl1E,EAAUvB,QACb,OAAO,WACL,OAAO,IACT,EAEG2phB,EAAa3phB,UAChB2phB,EAAa3phB,QAAU,IAAU+kG,IAEnColb,IACA,IAAII,EAAgB,IAAIb,EAAWnohB,EAAUvB,QAAS,IAAS,CAAC,EAAG+kG,IACnEwlb,EAAc7wc,UAAY,SAAUx4E,EAAMsphB,GACxC,OAlHY,SAAmBtphB,EAAMsphB,GACvC,IAAI9whB,EAIJ,YAHa,IAATwH,IACFA,EAAO,aAEuB,QAAxBxH,EAAKu7c,EAAMj1c,eAA4B,IAAPtG,OAAgB,EAASA,EAAGu7c,MAAMn1c,OAAO5F,IAAI6I,GAAG22E,UAAUx4E,EAAMsphB,EAC1G,CA4GW9wc,CAAUx4E,EAAMsphB,EACzB,EACAD,EAAcE,cAAgB,SAAUjwhB,EAAM0G,EAAMsphB,GAClD,OAxGgB,SAAuBhwhB,EAAM0G,EAAMsphB,GACrD,IAAI9whB,OACS,IAATc,IACFA,EAAO,iBAEI,IAAT0G,IACFA,EAAO,aAET,IAAIwphB,EAAYlwhB,GACW,IAAvBA,EAAKiR,QAAQ,OACfi/gB,EAAY,GAAG5+gB,OAAOtR,EAAM,KAAKsR,OAAO5K,EAAK2gB,MAAM,KAAK,KAE1D,IAAI8ogB,EAAkC,QAAxBjxhB,EAAKu7c,EAAMj1c,eAA4B,IAAPtG,OAAgB,EAASA,EAAGu7c,MAAMn1c,OAAO5F,IAAI6I,GAAG22E,UAAUx4E,EAAMsphB,GAC1G9zgB,EAAIxT,SAAS+Z,cAAc,KAO/B,OANAvG,EAAEmhE,KAAO8yc,EACTj0gB,EAAEs9F,SAAW02a,EACbxnhB,SAASgiD,KAAKh/C,YAAYwQ,GAC1BA,EAAE++C,QACFvyD,SAASgiD,KAAKt9C,YAAY8O,GAC1BA,EAAI,KACGg0gB,CACT,CAmFWD,CAAcjwhB,EAAM0G,EAAMsphB,EACnC,EACAD,EAAchnd,SACd0xY,EAAMj1c,QDnJS,SAAe4pB,GAChC,IAAKA,EACH,OAAOA,EAET,IAAI3oB,EAAS,CAAC,EAEd,IAAK,IAAIhC,KAAK2qB,EACZ3oB,EAAOhC,GAAK2qB,EAAO3qB,GAErB,OAAOgC,CACT,CCyIoB,CAAMsphB,GAClBX,GACFA,EAAQW,GAEV,IAAIvuf,EAAU,SAAiB14B,GACzBumhB,GACFA,EAAQU,EAAejnhB,EAE3B,EAGA,OAFAinhB,EAAc7xhB,GAAG,IAAKsjC,GAEf,WACDi5a,EAAMj1c,UACRi1c,EAAMj1c,QAAQrF,UACds6c,EAAMj1c,QAAQnG,IAAI,IAAKmiC,GACvBi5a,EAAMj1c,aAAUgvB,EAEpB,CACF,GAAG,IACI,CACLimb,MAAOA,EACP1zc,UAAWA,EAEf,CC5KO,ICJH,IAAsC,WACxC,IAAI2iD,EAAiB,SAAuB5lC,EAAG9C,GAQ7C,OAPA0oC,EAAiBn0C,OAAOo0C,gBAAkB,CACxCC,UAAW,cACAprB,OAAS,SAAU1a,EAAG9C,GACjC8C,EAAE8lC,UAAY5oC,CAChB,GAAK,SAAU8C,EAAG9C,GAChB,IAAK,IAAI7E,KAAK6E,EAAOzL,OAAOtX,UAAUqX,eAAe3V,KAAKqhB,EAAG7E,KAAI2H,EAAE3H,GAAK6E,EAAE7E,GAC5E,EACOutC,EAAe5lC,EAAG9C,EAC3B,EACA,OAAO,SAAU8C,EAAG9C,GAClB,GAAiB,mBAANA,GAA0B,OAANA,EAAY,MAAM,IAAIle,UAAU,uBAAyB4gB,OAAO1C,GAAK,iCAEpG,SAAS8oC,IACP/rD,KAAK8E,YAAcihB,CACrB,CAHA4lC,EAAe5lC,EAAG9C,GAIlB8C,EAAE7lB,UAAkB,OAAN+iB,EAAazL,OAAO0wB,OAAOjlB,IAAM8oC,EAAG7rD,UAAY+iB,EAAE/iB,UAAW,IAAI6rD,EACjF,CACF,CAnB0C,GAqBtCsme,IAA6B,SAAU3whB,GAEzC,SAAS2whB,IACP,IAAI5xhB,EAAmB,OAAXiB,GAAmBA,EAAOL,MAAMrB,KAAMY,YAAcZ,KAchE,OAbAS,EAAM8iD,MAAQ,CACZowF,UAAU,GAEZlzI,EAAM6xhB,YAAc,SAAUpuhB,GAC5B,IAAIquhB,EAAgB9xhB,EAAM4W,MAAMk7gB,cAG5B,MAA6B,mBAAlBA,EACFA,EAAcruhB,GAEhBquhB,GAAgC,gBAAoB,KAAM,KAAM,iBAAmFruhB,EAAEq3G,QAElK,EACO96G,CACT,CAuBA,OAxCA,IAAU4xhB,EAAe3whB,GAkBzB2whB,EAAcG,yBAA2B,SAAUple,GACjD,MAAO,CACLumF,UAAU,EACVvmF,MAAOA,EAEX,EACAile,EAAcI,yBAA2B,SAAUC,EAAWnve,GAC5D,OAAIA,EAAM1zC,WAAa6ihB,EAAU7ihB,SACxB,CACLA,SAAU6ihB,EAAU7ihB,SACpB8jI,UAAU,EACVvmF,WAAO32B,GAGJ,IACT,EACA47f,EAAcnyhB,UAAU8qE,OAAS,WAC/B,OAAIhrE,KAAKujD,MAAMowF,SACN3zI,KAAKsyhB,YAAYtyhB,KAAKujD,MAAM6J,OAE9B,gBAAoB,EAAAule,SAAU,KAAM3yhB,KAAKqX,MAAMxH,SACxD,EACOwihB,CACT,CA1CiC,CA0C/B,aACF,QC/CI,IAAU,WAQZ,OAPA,IAAU76gB,OAAO89B,QAAU,SAAkBvxC,GAC3C,IAAK,IAAI+Z,EAAG5c,EAAI,EAAG0tB,EAAIhuB,UAAUC,OAAQK,EAAI0tB,EAAG1tB,IAE9C,IAAK,IAAIkd,KADTN,EAAIld,UAAUM,GACOsW,OAAOtX,UAAUqX,eAAe3V,KAAKkc,EAAGM,KAAIra,EAAEqa,GAAKN,EAAEM,IAE5E,OAAOra,CACT,EACO,IAAQ1C,MAAMrB,KAAMY,UAC7B,EASA,IAGI,IAAM,SAAaO,GACrB,IAAI2V,EAAU3V,EAAG2V,QACfw3D,EAAkBntE,EAAGmtE,gBACrBskd,EAAoBzxhB,EAAGyxhB,kBACvBC,EAAU1xhB,EAAG0xhB,QACbhjhB,EAAW1O,EAAG0O,SACdijhB,EAAkB3xhB,EAAG2xhB,gBACrBC,EAAoB5xhB,EAAG4xhB,kBACvBC,EAAgB7xhB,EAAG6xhB,cACnBvka,EAAYttH,EAAGstH,UACfjsH,EAAWrB,EAAGqB,SACdyuH,EAAM9vH,EAAG8vH,IACTgia,EAAQ9xhB,EAAG8xhB,MACXnnhB,EAAQ3K,EAAG2K,MACXimD,EAAQ5wD,EAAG4wD,MACX16C,EA1BJ,SAAgByG,EAAG5Z,GACjB,IAAIH,EAAI,CAAC,EACT,IAAK,IAAIqa,KAAKN,EAAOtG,OAAOtX,UAAUqX,eAAe3V,KAAKkc,EAAGM,IAAMla,EAAEgP,QAAQkL,GAAK,IAAGra,EAAEqa,GAAKN,EAAEM,IAC9F,GAAS,MAALN,GAAqD,mBAAjCtG,OAAO+wB,sBAA2C,KAAIrnC,EAAI,EAAb,IAAgBkd,EAAI5G,OAAO+wB,sBAAsBzqB,GAAI5c,EAAIkd,EAAEvd,OAAQK,IAClIgD,EAAEgP,QAAQkL,EAAEld,IAAM,GAAKsW,OAAOtX,UAAUgsD,qBAAqBtqD,KAAKkc,EAAGM,EAAEld,MAAK6C,EAAEqa,EAAEld,IAAM4c,EAAEM,EAAEld,IADuB,CAGvH,OAAO6C,CACT,CAmBY,CAAO5C,EAAI,CAAC,UAAW,kBAAmB,oBAAqB,UAAW,WAAY,kBAAmB,oBAAqB,gBAAiB,YAAa,WAAY,MAAO,QAAS,QAAS,UACvM+xhB,EAAUzka,GAlBPx0G,KAAK+qC,SAASpiC,SAAS,IAAIqgB,UAAU,GAmBxCkwf,EAASD,EAAU,QACnBE,EAAaF,EAAU,iBACvBG,EAASH,EAAU,QACnBI,EAAWria,EAAM,CACnBn9G,UAAW,cACT,KACAy/gB,EAAW,MAAQ/whB,EAAW,MAC9BgxhB,EAAMP,EAAQ,IAClB,OAAO,IAAAvugB,eAAc,MAAO,IAAQ,CAClC,kBAAmB2ugB,EACnBhzd,KAAM,MACNv0D,MAAO,IAAQ,IAAQ,CAAC,EAAGA,GAAQwnhB,IAClCj8gB,GAAQ06C,GAAQ,IAAArtC,eAAc,QAAS,CACxChR,GAAI2/gB,GACHthe,GAAS,MAAM,IAAArtC,eAAc,OAAQ,CACtC27C,KAAM,eACNp1D,EAAG,IACHC,EAAG,IACH6C,MAAO,OACPC,OAAQ,OACRq8F,SAAU,OAASwob,EAAU,IAAMM,EAAS,IAC5CrnhB,MAAO,CACL8vC,KAAM,OAASi3e,EAAU,IAAMO,EAAa,QAE5C,IAAA1ugB,eAAc,OAAQ,CACxB27C,KAAM,iBACL,IAAA37C,eAAc,WAAY,CAC3BhR,GAAIy/gB,GACHtjhB,IAAW,IAAA6U,eAAc,iBAAkB,CAC5ChR,GAAI0/gB,IACH,IAAA1ugB,eAAc,OAAQ,CACvBy+D,OAAQ,KACRyB,UAAWtW,EACXmld,YAAab,GACZ97gB,IAAW,IAAA4N,eAAc,UAAW,CACrCmsc,cAAe,SACfrwb,QAASwyf,EAAgB,MAAQA,EAAgB,MACjDO,SAAUA,EACVC,IAAKA,EACLE,YAAa,iBACV,IAAAhvgB,eAAc,OAAQ,CACzBy+D,OAAQ,MACRyB,UAAWkuc,EACXW,YAAaV,GACZj8gB,IAAW,IAAA4N,eAAc,UAAW,CACrCmsc,cAAe,SACfrwb,QAASwyf,EAAgB,EAAI,MAAQA,EAAgB,EAAI,MAAQ,EAAIA,EAAgB,GACrFO,SAAUA,EACVC,IAAKA,EACLE,YAAa,iBACV,IAAAhvgB,eAAc,OAAQ,CACzBy+D,OAAQ,OACRyB,UAAWtW,EACXmld,YAAab,GACZ97gB,IAAW,IAAA4N,eAAc,UAAW,CACrCmsc,cAAe,SACfrwb,OAAQ,UAAY,EAAIwyf,GACxBO,SAAUA,EACVC,IAAKA,EACLE,YAAa,kBAEjB,EACA,IAAI/yd,aAAe,CACjB7pD,SAAS,EACTw3D,gBAAiB,UACjBskd,kBAAmB,EACnBC,QAAS,GACTC,gBAAiB,OACjBC,kBAAmB,EACnBC,cAAe,EACft/gB,GAAI,KACJlR,SAAU,IACVyuH,KAAK,EACLgia,MAAO,IACPnnhB,MAAO,CAAC,EACRimD,MAAO,cAET,IAAI4he,IAAgB,SAAuBt8gB,GACzC,OAAOA,EAAMxH,UAAW,IAAA6U,eAAc,IAAK,IAAQ,CAAC,EAAGrN,KAAU,IAAAqN,eAAckvgB,IAA4B,IAAQ,CAAC,EAAGv8gB,GACzH,EACIu8gB,IAA6B,SAAoCv8gB,GACnE,OAAO,IAAAqN,eAAcivgB,IAAe,IAAQ,CAC1Czhe,QAAS,eACR76C,IAAQ,IAAAqN,eAAc,OAAQ,CAC/BzZ,EAAG,KACHC,EAAG,IACH6C,MAAO,KACPC,OAAQ,IACR4T,GAAI,OACF,IAAA8C,eAAc,OAAQ,CACxBzZ,EAAG,KACHC,EAAG,KACH6C,MAAO,KACPC,OAAQ,IACR4T,GAAI,OACF,IAAA8C,eAAc,OAAQ,CACxBzZ,EAAG,IACHC,EAAG,KACH6C,MAAO,MACPC,OAAQ,IACR4T,GAAI,OACF,IAAA8C,eAAc,OAAQ,CACxBzZ,EAAG,IACHC,EAAG,KACH6C,MAAO,MACPC,OAAQ,IACR4T,GAAI,OACF,IAAA8C,eAAc,OAAQ,CACxBzZ,EAAG,IACHC,EAAG,KACH6C,MAAO,MACPC,OAAQ,IACR4T,GAAI,OACF,IAAA8C,eAAc,SAAU,CAC1BhD,GAAI,KACJC,GAAI,KACJzC,EAAG,OAEP,EAoLA,QCzPA,IAtGmB,SAAsB/d,GACvC,IAAI0yhB,EAAkB1yhB,EAAG0yhB,gBACvB38gB,EAAK/V,EAAGmsG,MACRA,OAAe,IAAPp2F,EAAgB,QAAUA,EAmFpC,OAAO,gBAAoB,MAAO,CAChCtD,UAAW,2BACX9H,MAAO,CACLq/C,SAAU,WACVp9C,MAAO,OACPC,OAAQ,OACRq9C,QAAS,OACT0sD,WAAY,SACZkI,eAAgB,SAChBjxG,KAAM,EACNC,IAAK,EACLwF,OAAQ,GACR65D,gBAA2B,SAAVg/B,EAAmB,kBAAoB,uBA7FtDumb,GAGG,gBAAoB,IAAe,CACxC3he,QAAS,cACTnkD,MAAO,IACPC,OAAQ,GACRilhB,MAAO,EACP3kd,gBAA2B,SAAVg/B,EAAmB,UAAY,WAC/C,gBAAoB,OAAQ,CAC7BriG,EAAG,KACHC,EAAG,IACH0W,GAAI,IACJC,GAAI,IACJ9T,MAAO,IACPC,OAAQ,QACN,gBAAoB,OAAQ,CAC9B/C,EAAG,KACHC,EAAG,MACH0W,GAAI,IACJC,GAAI,IACJ9T,MAAO,MACPC,OAAQ,MACN,gBAAoB,OAAQ,CAC9B/C,EAAG,KACHC,EAAG,KACH0W,GAAI,IACJC,GAAI,IACJ9T,MAAO,KACPC,OAAQ,QACN,gBAAoB,OAAQ,CAC9B/C,EAAG,KACHC,EAAG,MACH0W,GAAI,IACJC,GAAI,IACJ9T,MAAO,KACPC,OAAQ,OACN,gBAAoB,OAAQ,CAC9B/C,EAAG,MACHC,EAAG,MACH0W,GAAI,IACJC,GAAI,IACJ9T,MAAO,KACPC,OAAQ,OACN,gBAAoB,OAAQ,CAC9B/C,EAAG,MACHC,EAAG,KACH0W,GAAI,IACJC,GAAI,IACJ9T,MAAO,KACPC,OAAQ,QACN,gBAAoB,OAAQ,CAC9B/C,EAAG,MACHC,EAAG,KACH0W,GAAI,IACJC,GAAI,IACJ9T,MAAO,KACPC,OAAQ,QACN,gBAAoB,OAAQ,CAC9B/C,EAAG,MACHC,EAAG,KACH0W,GAAI,IACJC,GAAI,IACJ9T,MAAO,KACPC,OAAQ,QACN,gBAAoB,OAAQ,CAC9B/C,EAAG,MACHC,EAAG,MACH0W,GAAI,IACJC,GAAI,IACJ9T,MAAO,KACPC,OAAQ,OACN,gBAAoB,OAAQ,CAC9B/C,EAAG,MACHC,EAAG,KACH0W,GAAI,IACJC,GAAI,IACJ9T,MAAO,KACPC,OAAQ,QAkBd,ECvGI,IAAgC,SAAU8P,EAAG5Z,GAC/C,IAAIH,EAAI,CAAC,EACT,IAAK,IAAIqa,KAAKN,EAAOtG,OAAOtX,UAAUqX,eAAe3V,KAAKkc,EAAGM,IAAMla,EAAEgP,QAAQkL,GAAK,IAAGra,EAAEqa,GAAKN,EAAEM,IAC9F,GAAS,MAALN,GAAqD,mBAAjCtG,OAAO+wB,sBAA2C,KAAIrnC,EAAI,EAAb,IAAgBkd,EAAI5G,OAAO+wB,sBAAsBzqB,GAAI5c,EAAIkd,EAAEvd,OAAQK,IAClIgD,EAAEgP,QAAQkL,EAAEld,IAAM,GAAKsW,OAAOtX,UAAUgsD,qBAAqBtqD,KAAKkc,EAAGM,EAAEld,MAAK6C,EAAEqa,EAAEld,IAAM4c,EAAEM,EAAEld,IADuB,CAGvH,OAAO6C,CACT,EAOI+vhB,KAAa,IAAA7hd,aAAW,SAAU56D,EAAO+6C,GAC3C,IAAI2he,EAAW18gB,EAAM08gB,SACnB5yhB,EAAKkW,EAAMvL,MACXA,OAAe,IAAP3K,EAAgB,CACtB6M,OAAQ,WACN7M,EACJyS,EAAYyD,EAAMzD,UAClB6+D,EAAUp7D,EAAMo7D,QAChBohd,EAAkBx8gB,EAAMw8gB,gBACxBtB,EAAgBl7gB,EAAMk7gB,cACtB51c,EAAO,IAAOtlE,EAAO,CAAC,WAAY,QAAS,YAAa,UAAW,kBAAmB,kBACpFH,EAAK,IAAS,IAAaylE,GAC7B+/X,EAAQxlc,EAAGwlc,MACX1zc,EAAYkO,EAAGlO,UAWjB,OAVA,IAAAk1E,YAAU,YJxBU,SAAkB61c,EAAUr3E,GAC3Cq3E,KAGD,UAAWA,GACbA,EAASr3E,GAETq3E,EAAStshB,QAAUi1c,EAEvB,CIgBIs3E,CAASD,EAAUr3E,EAAMj1c,QAC3B,GAAG,CAACi1c,EAAMj1c,WACV,IAAAkiG,qBAAoBv3C,GAAK,WACvB,MAAO,CACL4he,SAAU,WACR,OAAOt3E,EAAMj1c,OACf,EAEJ,IACO,gBAAoB,IAAe,CACxC8qhB,cAAeA,GACd9/c,GAAW,gBAAoB,IAAc,CAC9Cohd,gBAAiBA,EACjBvmb,MAAOj2F,EAAMi2F,QACX,gBAAoB,MAAO,CAC7B15F,UAAWA,EACX9H,MAAOA,EACPsmD,IAAKppD,IAET,IACA,qlBC9CA,IAsEA,IAtEsB,SAAH6oD,GAAuB,IA+BlC26C,EAAS,CACb9mF,KAhCyBmsC,EAAJnsC,KAgCVsL,KAAI,SAACjL,GAAM,OAAA08H,IAAAA,IAAA,GAAW18H,GAAC,IAAEuzQ,MAAOvzQ,EAAEuzQ,MAAQ,GAAC,IACtD0/H,OAAQ,YACRC,OAAQ,QACR8kD,cAAe,CAAC,EAAG,GAAI,EAAG,IAC1BzzU,KAAM,CACJgvJ,MAAO,CACLq3F,MAAO,mBACPz2W,IAAK,EACLqqN,MAAM,EACNwlH,UAAW,SAAC93U,GAAM,OAAKgQ,OAAOhQ,GAAGmW,QAAQ,EAAE,IAG/Cwye,MAAO,CACLz/E,SAAU,MAEZg+E,MAAO,CACLvsc,OAAO,EACPigI,KAAM,CACJy3P,eAAgB,wBAGpBt5a,MAAO,CACLs5B,KAAM,GAERskB,KAAM,CACJ98C,MAAO,CACL+3E,YAAa,GACbjoC,KAAM,QACNz6B,OAAQ,WAId,OACE0/H,EAAAA,cAAA,OAAKjtI,UAAU,KACbitI,EAAAA,cAACo7X,IAAUzva,GAGjB,EC4PA,IAxTuB,SAAH36C,GAQb,IACDoie,EARJ19H,EAAO1kW,EAAP0kW,QACA29H,EAAUrie,EAAVqie,WACA9zY,EAASvuF,EAATuuF,UA4CA6zY,EAAW,GACX,IAAAznd,EAA8Bq0E,EAAAA,UAAwB,GAA/CpuE,EAAOjG,EAAA,GAAEiR,EAAUjR,EAAA,GAC1BC,EAA0Co0E,EAAAA,UAAwB,GAA3DszY,EAAa1nd,EAAA,GAAE2nd,EAAgB3nd,EAAA,GACtCE,EAA0Bk0E,EAAAA,SAA+B,MAA3CqB,GAAFv1E,EAAA,GAAUA,EAAA,IACtBC,EAAsCi0E,EAAAA,SAAsBozY,GAArDI,EAAWznd,EAAA,GAAE0nd,EAAc1nd,EAAA,GAC5B41E,EAAY3jG,OAClBkuB,EAAoD8zE,EAAAA,SAAuB,GAApE0zY,EAAkBxnd,EAAA,GAAEynd,EAAqBznd,EAAA,GAE1C0nd,EAAoB5zY,EAAAA,OAA6B,MAEvDA,EAAAA,WAAgB,WACdyzY,EAAeL,GACfO,EAAsB,EACxB,GAAG,CAACj+H,IAEJ,IAgHMm+H,EAAkBL,aAAW,EAAXA,EAAarjgB,KAAI,SAAC8pB,EAAK55C,GAC7C,IAAM4yK,EAAWygX,IAAuBrzhB,EACxC,OACE2/I,EAAAA,cAAA,OACExgF,KAAK,SACLD,SAAU,EACVvD,QAAS,kBAAM23d,EAAsBtzhB,EAAE,EAEvC0S,UAAS,yCACPkgK,EAAW,kBAAoB,uBAEjCjzI,IAAK,iBAAmB3/B,GAExB2/I,EAAAA,cAAA,OAAKjtI,UAAU,OACbitI,EAAAA,cAAA,OAAKjtI,UAAU,kBACbitI,EAAAA,cAAA,OAAK/0I,MAAO,CAAEsrE,SAAU,SAAWxjE,UAAU,aAC1C,IAtCS,SAAC0lR,GAErB,IADA,IAAMq7P,EAAQ,GACLzzhB,EAAI,EAAGA,EAAI,EAAGA,IACjBA,EAAIo4R,EACNq7P,EAAMp0hB,KACJsgJ,EAAAA,cAAC+zY,IAAQ,CACP/zf,IAAK,YAAc3/B,EACnB0S,UAAU,0CAId+ghB,EAAMp0hB,KACJsgJ,EAAAA,cAAC+zY,IAAQ,CACP/zf,IAAK,YAAc3/B,EACnB0S,UAAU,wCAKlB,OAAO+ghB,CACT,CAmBaE,CAAc/5e,EAAIw+O,MAAQ,GAAI,IAC/Bz4I,EAAAA,cAAA,QAAMjtI,UAAU,qBAAqBknC,EAAIg6e,YAE3Cj0Y,EAAAA,cAAA,OAAKjtI,UAAU,uCACbitI,EAAAA,cAAA,OACE/0I,MAAO,CACLiC,OAAoB,GAAZ+sC,EAAIw+O,OAAYlxQ,QAAQ,GAAK,IACrCkmD,iBAAiBymd,EAAAA,EAAAA,IAAiBj6e,EAAIw+O,MAAO,EAAG,KAElD1lR,UAAU,mBAOxB,IACA,OACEitI,EAAAA,cAAA,OAAK/0I,MAAO,CAAEorF,UAAW,SAAWtjF,UAAU,gBAC5CitI,EAAAA,cAAA,OACEhkF,QAAS,kBArJS,WACtBqlF,EAAS,MACTzkE,GAAW,GACX62c,EAAe,IACfhxhB,YAAW,YACTyzZ,EAAAA,EAAAA,IAAgB09H,EAClB,GAAG,KACH,IAAM/ugB,EAAO,CACXylF,KAAMorT,EAAQprT,KACdu3C,KAAMtC,EAAUsC,KAChBJ,eAAgBlC,EAAUkC,eAC1Bm7P,QAASr9P,EAAUq9P,SAEfr7P,EAAU,CACdz2I,OAAQ,OACRquD,QAAS,CACP,eAAgB,oBAElBrN,KAAM3L,KAAKF,UAAUp7B,KAuBvB68H,EAAAA,EAAAA,IAAaC,EAAS,sBAAuBJ,GApB3B,SAAC18H,GACbA,GAAQA,EAAK+zC,QAGf66d,EAAe5ugB,EAAK2ugB,aACpB94a,GAAQ5H,QAAQjuF,EAAK61F,SACrBj4G,YAAW,YACTyzZ,EAAAA,EAAAA,IAAgB09H,EAClB,GAAG,OAEHl5a,GAAQnuD,MAAM1nC,EAAK61F,SACnB2mC,EAASx8H,IAEX+3D,GAAW,EACb,IACgB,SAACj2C,GACf+zE,GAAQnuD,MAAM5lB,EAAI+zE,SAClB99B,GAAW,GACXykE,EAAS16G,EACX,GAEF,CA2GqBwtf,EAAiB,EAChC30d,KAAM,SACNzsD,UAAS,0FACP6+D,EAAU,iCAAmC,IAAE,MAG/CA,GAAWouE,EAAAA,cAACo0Y,GAAAA,EAAe,CAACrhhB,UAAU,+BACvC6+D,GAAWouE,EAAAA,cAACq2Q,GAAAA,GAAO,CAACtjZ,UAAU,4BAA6B,wBAG7D6+D,GACCouE,EAAAA,cAAA,OAAKjtI,UAAU,QACbitI,EAAAA,cAACq2Q,GAAAA,GAAO,CACNtjZ,UAAU,cACV0kQ,SAAU,4BAEZz3H,EAAAA,cAAChqB,GAAQ,CAACN,QAAM,EAAC3iH,UAAU,OAAOqjH,UAAW,CAAEP,KAAM,OAGzDmqB,EAAAA,cAAA,OAAKzuF,IAAKqie,EAAmB7ghB,UAAU,QACpCyghB,GAAeA,EAAYxzhB,OAAS,GACnCggJ,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,OAAKjtI,UAAU,QAAO,sHAE+B,KAErDitI,EAAAA,cAAA,OAAKjtI,UAAU,qDACbitI,EAAAA,cAAA,OAAKjtI,UAAU,YAEbitI,EAAAA,cAACq0Y,IAAa,CAACxvgB,KAAM2ugB,KAGvBxzY,EAAAA,cAAA,OAAKjtI,UAAU,iBACbitI,EAAAA,cAAA,OAAKjtI,UAAU,QAAO,IAAE8ghB,GAExB7zY,EAAAA,cAAA,OAAKjtI,UAAU,2BACbitI,EAAAA,cAAA,OAAKjtI,UAAU,mBACZyghB,EAAYE,GAAoBO,UAAW,KAE9Cj0Y,EAAAA,cAAA,OAAKjtI,UAAU,QACbitI,EAAAA,cAAA,OACE/0I,MAAO,CACLgV,SAAU,OACVizB,OAAOghf,EAAAA,EAAAA,IACLV,EAAYE,GAAoBj7P,MAChC,EACA,KAGJ1lR,UAAU,uBAERyghB,EAAYE,GAAoBj7P,MAAQ,GAAGlxQ,QAAQ,GACrDy4H,EAAAA,cAAA,OAAKjtI,UAAU,0CACZ,IAAI,WACI,MAGbitI,EAAAA,cAAA,WAAK,IAAEwzY,EAAYE,GAAoBlxY,iBAepDgxY,GAAeA,EAAYxzhB,OAAS,GACnCggJ,EAAAA,cAAA,OAAKjtI,UAAU,oBACZ,IACDitI,EAAAA,cAAA,OACEhkF,QAAS,kBArLC,WAClBqlF,EAAS,MACTkyY,GAAiB,GACjB9whB,YAAW,YACTyzZ,EAAAA,EAAAA,IAAgB09H,EAClB,GAAG,KACH,IAAM/ugB,EAAO,CACXylF,KAAMorT,EAAQprT,KACdgqb,SAAUd,EACV/xY,eAAgBlC,EAAUkC,eAC1Bm7P,QAASr9P,EAAUq9P,QACnBl9P,QAASH,EAAUG,QACnBmC,KAAMtC,EAAUsC,MAEZN,EAAU,CACdz2I,OAAQ,OACRquD,QAAS,CACP,eAAgB,oBAElBrN,KAAM3L,KAAKF,UAAUp7B,KAwBvB68H,EAAAA,EAAAA,IAAaC,EAAS,oBAAqBJ,GArBzB,SAAC18H,GACbA,GAAQA,EAAK+zC,QAEfurE,QAAQtrF,IAAI,cAAeh0B,GAE3BwugB,EAAWxugB,EAAK0vgB,OAAO,IACvB75a,GAAQ5H,QAAQjuF,EAAK61F,SACrBj4G,YAAW,YACTyzZ,EAAAA,EAAAA,IAAgB09H,EAClB,GAAG,OAEHl5a,GAAQnuD,MAAM1nC,EAAK61F,SACnB2mC,EAASx8H,IAEX0ugB,GAAiB,EACnB,IACgB,SAAC5sf,GACf+zE,GAAQnuD,MAAM5lB,EAAI+zE,SAClB64a,GAAiB,GACjBlyY,EAAS16G,EACX,GAEF,CAyIyB6tf,EAAa,EAC5Bh1d,KAAM,SACNzsD,UAAS,0FACPughB,EAAgB,iCAAmC,IAAE,MAGrDA,GACAtzY,EAAAA,cAAAA,EAAAA,SAAA,KACG,IACDA,EAAAA,cAACy0Y,IAAAA,EAAqB,CAAC1hhB,UAAU,+BAAgC,IAAI,sBAIxEughB,GACCtzY,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAACq2Q,GAAAA,GAAO,CAACtjZ,UAAU,4BAA4B,qBAC5B,KAEpB,MAMf,ECxLA,IAnIyB,SAAHi+C,GAQf,IAPL0kW,EAAO1kW,EAAP0kW,QAEAn2Q,GADUvuF,EAAVqie,WACSrie,EAATuuF,WAMA5zE,EAA8Bq0E,EAAAA,UAAwB,GAA/CpuE,EAAOjG,EAAA,GAAEiR,EAAUjR,EAAA,GAC1BC,EAA0Bo0E,EAAAA,SAA+B,MAA3CqB,GAAFz1E,EAAA,GAAUA,EAAA,IACtBE,EAA8Ck0E,EAAAA,SAAsB,IAA7D00Y,EAAe5od,EAAA,GAAE6od,EAAkB7od,EAAA,GAGpC8od,EAAwB50Y,EAAAA,OAA6B,MAE3DA,EAAAA,WAAgB,WACd20Y,EAAmB,GACrB,GAAG,CAACj/H,IAEJ,IAiDMm/H,EAAsBH,aAAe,EAAfA,EAAiBvkgB,KAAI,SAAC8pB,EAAK55C,GACrD,IAAM01Z,EAAkC,kBAAhB97W,EAAI+7W,QAC5B,OACEh2Q,EAAAA,cAAA,OAAKjtI,UAAU,OAAOitB,IAAK,qBAAuB3/B,GAChD2/I,EAAAA,cAAA,OAAKjtI,UAAU,yBAAwB,IAAEknC,EAAI+7W,SAC7Ch2Q,EAAAA,cAAA,OAAKjtI,UAAU,cACbitI,EAAAA,cAAA,OAAKjtI,WAAcgjZ,EAAkB,GAAK,UAAQ,KAChD/1Q,EAAAA,cAAA,OAAK18G,IAAG,yBAA2B2W,EAAIo7W,WAEvCU,GACA/1Q,EAAAA,cAAA,OAAKjtI,UAAU,SACbitI,EAAAA,cAACiB,GAAAA,EAAS,CACR32C,KAAI,GAAKrwD,EAAIqwD,KACb42C,SAAS,SAETq0Q,WAAW,MAOzB,IACA,OACEv1Q,EAAAA,cAAA,OAAKjtI,UAAU,gBACbitI,EAAAA,cAAA,OACEhkF,QAAS,kBA3Ea,WAC1BqlF,EAAS,MACTzkE,GAAW,GACX+3c,EAAmB,IACnBlyhB,YAAW,YACTyzZ,EAAAA,EAAAA,IAAgB0+H,EAClB,GAAG,KAEH,IAAMnzY,EAAiB9qI,OAAO89B,OAAO,CAAC,EAAG8qG,EAAUkC,gBACnDA,EAAe1zH,EAAI,EACnB0zH,EAAeqzY,YAAc,GAE7B,IAAMvzY,EAAU,CACdz2I,OAAQ,OACRquD,QAAS,CACP,eAAgB,oBAElBrN,KAAM3L,KAAKF,UAAU,CACnBqqD,KAAMorT,EAAQprT,KACdsyS,QAASr9P,EAAUq9P,QACnBl9P,QAASH,EAAUG,QACnB+B,eAAgBA,MAyBpBC,EAAAA,EAAAA,IAAaC,2BAAiCJ,GApB5B,SAAC18H,GACbA,GAAQA,EAAK+zC,QAEfurE,QAAQtrF,IAAI,qBAAsBh0B,GAClC8vgB,EAAmB9vgB,EAAK0vgB,QACxB75a,GAAQ5H,QAAQjuF,EAAK61F,SACrBj4G,YAAW,YACTyzZ,EAAAA,EAAAA,IAAgB0+H,EAClB,GAAG,OAEHl6a,GAAQnuD,MAAM1nC,EAAK61F,SACnB2mC,EAASx8H,IAEX+3D,GAAW,EACb,IACgB,SAACj2C,GACf+zE,GAAQnuD,MAAM5lB,EAAI+zE,SAClB99B,GAAW,GACXykE,EAAS16G,EACX,GAEF,CA4BqBouf,EAAqB,EACpCv1d,KAAM,SACNzsD,UAAS,0FACP6+D,EAAU,iCAAmC,IAAE,MAG/CA,GACAouE,EAAAA,cAACo2Q,GAAAA,EAA8B,CAACrjZ,UAAU,+BAE3C6+D,GAAWouE,EAAAA,cAACq2Q,GAAAA,GAAO,CAACtjZ,UAAU,4BAA6B,6BAW7D6+D,GACCouE,EAAAA,cAAA,OAAKjtI,UAAU,QACbitI,EAAAA,cAACq2Q,GAAAA,GAAO,CACNtjZ,UAAU,cACV0kQ,SAAU,+BAEZz3H,EAAAA,cAAChqB,GAAQ,CAACN,QAAM,EAAC3iH,UAAU,OAAOqjH,UAAW,CAAEP,KAAM,OAIzDmqB,EAAAA,cAAA,OAAKzuF,IAAKqje,EAAuB7hhB,UAAU,QACxC8hhB,GAIT,ECkJA,IAxQkB,SAAH7je,GAMR,IAgBKgke,EArBVC,EAAOjke,EAAPike,QACAtpb,EAAM36C,EAAN26C,OAKMk2C,EAAOl2C,EAAOk2C,KACdF,EAAY3jG,OAClB2tB,EAA8Cq0E,EAAAA,UAAwB,GAA/Dk1Y,EAAevpd,EAAA,GAAEwpd,EAAkBxpd,EAAA,GAC1CC,EAA0Bo0E,EAAAA,SAA+B,MAAlDzzF,EAAKqf,EAAA,GAAEy1E,EAAQz1E,EAAA,GACtBE,EAAgCk0E,EAAAA,SAAyB,IAAlD6xG,EAAQ/lL,EAAA,GAAEspd,EAAWtpd,EAAA,GAGtBupd,EAAkBr1Y,EAAAA,OAA+B,MACjDs1Y,EAAct1Y,EAAAA,OAA6B,MAEjDj0E,EAA8Bi0E,EAAAA,SAA2Bi1Y,GAAlDv/H,EAAO3pV,EAAA,GAAEsnd,EAAUtnd,EAAA,GAEpBymJ,EAAOkjM,EAAQljM,KACf6iM,EAASK,EAAQL,OAEnB7iM,WACKA,EAAK7mH,OACZ6mH,EAAKtlN,MAAQ,IACbslN,EAAKrlN,OAAS,IACdqlN,EAAc,SAAI,EAEbA,EAAK3tM,KAAKi0C,IAAIx0D,SAAS,UAC1BkuN,EAAK3tM,KAAKi0C,IAAM6oF,EAAY6wE,EAAK3tM,KAAKi0C,KAE1B,QAAdk8d,EAAIxiU,EAAKthK,aAAK,IAAA8je,GAAVA,EAAYv9Q,iBACPjlD,EAAKthK,MAAMumN,UAItB,IAAM89Q,EAAe1jS,EAAS1hO,KAAI,SAACxP,EAAiBtgB,GAClD,OACE2/I,EAAAA,cAAA,OAAKjtI,UAAU,GAAGitB,IAAK,cAAgB3/B,GACrC2/I,EAAAA,cAAA,QAAMjtI,UAAU,WAAW4N,GAGjC,IA+CM60gB,EAA+B,CACnC,CACEx1f,IAAK,IACL+rB,MACEi0F,EAAAA,cAAA,WACG,IACDA,EAAAA,cAACy1Y,GAA0B,CAAC1ihB,UAAU,0BAA0B,UAIpE/D,SACEgxI,EAAAA,cAAA,OAAKjtI,UAAU,eAAe9H,MAAO,CAAEorF,UAAW,UAChD2pD,EAAAA,cAAA,OAAKjtI,UAAU,6BAA4B,gDAG3CitI,EAAAA,cAAA,OACEjtI,UAAS,0DACPmihB,EAAkB,gCAAkC,IAAE,KAGxDl1Y,EAAAA,cAAA,SACEzuF,IAAK8je,EACL/4d,UAAW,SAACj5D,GACc,IAADqyhB,EAAT,UAAVryhB,EAAE28B,KApEM,SAACrf,GACzB0gI,EAAS,MACT8zY,GAAmB,GACnB,IAAIQ,EAAQh/gB,OAAO89B,OAAO,GAAIo9M,GAC9B8jS,EAAMj2hB,KAAKihB,GACX,IAAM4gI,EAAU,CACdz2I,OAAQ,OACRquD,QAAS,CACP,eAAgB,oBAElBrN,KAAM3L,KAAKF,UAAU,CACnBy/F,QAAS/zC,EAAO+zC,QAChBk2Y,aAAcD,EACdrrb,KAAM2qb,EAAQ3qb,KACdsyS,QAASjxS,EAAOixS,QAChBn7P,eAAgB91C,EAAO81C,mBA2B3BC,EAAAA,EAAAA,IAAaC,EAAS,kBAAmBJ,GAtBvB,SAAC18H,GACS,IAADgxgB,EAArBhxgB,GAAQA,EAAK+zC,QAGfy6d,EAAWxugB,EAAK0vgB,OAAO,IACvB75a,GAAQ5H,QAAQjuF,EAAK61F,UAIE,QAAvBm7a,EAAAR,EAAgBzuhB,eAAO,IAAAivhB,OAAA,EAAvBA,EAAyBv0hB,SAAU+zhB,EAAgBzuhB,QAAQtF,MAAQ,IACnE8zhB,EAAYO,KAEZj7a,GAAQnuD,MAAM1nC,EAAK61F,SACnB2mC,EAASx8H,IAEXswgB,GAAmB,EACrB,IACgB,SAACxuf,GACf+zE,GAAQnuD,MAAM5lB,EAAI+zE,SAClBy6a,GAAmB,GACnB9zY,EAAS16G,EACX,GAEF,CA2BgBmvf,EAAyC,QAAvBJ,EAAAL,EAAgBzuhB,eAAO,IAAA8uhB,OAAA,EAAvBA,EAAyBp0hB,QAAS,GAExD,EACAyR,UAAU,4CACV0vD,YAAY,2CACZ36D,KAAM,UAEPothB,GACCl1Y,EAAAA,cAAA,QAAMjtI,UAAU,qCACb,IACDitI,EAAAA,cAACq2Q,GAAAA,GAAO,CAACtjZ,UAAU,MAIrBitI,EAAAA,cAAA,OAAKjtI,UAAU,gCACZw5C,aAAK,EAALA,EAAOmuD,UAIdslC,EAAAA,cAAA,OAAKjtI,UAAU,yEACZ8+O,GAAYA,EAAS7xP,OAAS,GAC7BggJ,EAAAA,cAAA,OAAKjtI,UAAU,cACbitI,EAAAA,cAAA,OACExgF,KAAM,SACNxD,QAAS,WACPo5d,EAAY,GACd,EACArihB,UAAU,iGAET,IACDitI,EAAAA,cAAC+1Y,GAAmB,CAAChjhB,UAAU,yBAAyB,sBAC3C,MAIlBwihB,KAKT,CACEv1f,IAAK,IACL+rB,MACEi0F,EAAAA,cAAA,WACG,IACDA,EAAAA,cAACo2Q,GAAAA,EAA8B,CAACrjZ,UAAU,0BAA0B,WAIxE/D,SACEgxI,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,OAAKjtI,UAAU,6BAA4B,wFAI3CitI,EAAAA,cAACg2Y,IAAc,CAACtgI,QAASA,EAASn2Q,UAAW5zC,MAInD,CACE3rE,IAAK,IACL+rB,MACEi0F,EAAAA,cAAA,WACG,IACDA,EAAAA,cAACo0Y,GAAAA,EAAe,CAACrhhB,UAAU,0BAA0B,YAIzD/D,SACEgxI,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,OAAKjtI,UAAU,6BAA4B,iGAI3CitI,EAAAA,cAACi2Y,IAAc,CACbvgI,QAASA,EACT29H,WAAYA,EACZ9zY,UAAW5zC,MAKnB,CACE3rE,IAAK,IACL+rB,MACEi0F,EAAAA,cAAA,WACG,IACDA,EAAAA,cAACyC,GAAAA,EAAa,CAAC1vI,UAAU,0BAA0B,cAIvD/D,SACEgxI,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,OAAKjtI,UAAU,6BAA4B,4BAG3CitI,EAAAA,cAACk2Y,IAAgB,CACfxgI,QAASA,EACT29H,WAAYA,EACZ9zY,UAAW5zC,OAOrB,OACEq0C,EAAAA,cAAA,OAAKjtI,UAAU,iBAAiBw+C,IAAK+je,GACnCt1Y,EAAAA,cAAA,OAAKjtI,UAAU,iBACbitI,EAAAA,cAAA,OAAKjtI,UAAU,yBAAyB8uI,aAAI,EAAJA,EAAMS,UAC9CtC,EAAAA,cAAA,QAAMjtI,UAAU,WAAW8uI,aAAI,EAAJA,EAAMW,WAAkB,KAClDX,aAAI,EAAJA,EAAMU,gBACLvC,EAAAA,cAAA,OAAKjtI,UAAU,uBAAuB8uI,aAAI,EAAJA,EAAMU,gBAIhDvC,EAAAA,cAAA,OAAKjtI,UAAU,0BACZy/M,GACCxyE,EAAAA,cAAA,OAAKjtI,UAAU,2BACbitI,EAAAA,cAACi1Q,IAAI,CAACziM,KAAMA,EAAM94L,SAAS,KAG9B27X,GACCr1Q,EAAAA,cAACm2Y,IAAe,CACd9gI,OAAQA,EACRzY,QAASjxS,EAAOixS,QAChB/6P,KAAMl2C,EAAOk2C,OAGjB7B,EAAAA,cAAA,OAAKjtI,UAAU,0CACbitI,EAAAA,cAAA,OAAKjtI,UAAU,YACbitI,EAAAA,cAAA,OAAKjtI,UAAU,mDACbitI,EAAAA,cAACo2Y,GAAAA,EAAqB,CAACrjhB,UAAU,8BAA8B,8EAIjEitI,EAAAA,cAACq2Y,IAAQ,CACP7jU,KAAMA,EACNloH,KAAMorT,EAAQprT,KACd/9C,MAAOmpW,EAAQnpW,MACfqM,OAAQ88V,EAAQ98V,YAMxBonF,EAAAA,cAACutD,GAAI,CAACC,iBAAiB,IAAIloJ,MAAOkwe,IAGxC,EC7PA,IAzBwB,SAAHxke,GAMd,IALLsle,EAAQtle,EAARsle,SACA/2Y,EAASvuF,EAATuuF,UAMA,OACES,EAAAA,cAAA,OAAKjtI,UAAU,WACbitI,EAAAA,cAAC3J,GAAI,CACHr1E,OAAQ,CAAEiD,UAAW+7E,EAAAA,cAAC95E,GAAK,CAACC,YAAY,0BACxC8nH,WAAYqoW,EACZzkY,WAAY,SAACojY,EAAc50hB,GAAS,OAClC2/I,EAAAA,cAACu2Y,IAAS,CAACtB,QAASA,EAAStpb,OAAQ4zC,GAAa,EAEpDh3B,WAAY,CACVqjC,SAAU,EACVnoH,KAAM,QACNwsH,kBAAkB,KAK5B,+kBChBA,IA2LA,IA3LmB,SAAHj/F,GAOT,IAADwle,EANJ7qb,EAAM36C,EAAN26C,OAQQ4zC,EAA4B5zC,EAA5B4zC,UAAWE,EAAiB9zC,EAAjB8zC,aACnB9zE,EAAgCq0E,EAAAA,SAA0B,MAAnDs2Y,EAAQ3qd,EAAA,GAAE8qd,EAAW9qd,EAAA,GAC5BC,EAA0Bo0E,EAAAA,SAA+B,MAA3CqB,GAAFz1E,EAAA,GAAUA,EAAA,IACtBE,EAA8Bk0E,EAAAA,UAAe,GAAtCpuE,EAAO9F,EAAA,GAAE8Q,EAAU9Q,EAAA,GAEpB4qd,EAAiB12Y,EAAAA,OAA+B,MAEhD22Y,EAAY32Y,EAAAA,OAA6B,MAE/CA,EAAAA,WAAgB,WACe,IAAD42Y,EAAxBF,EAAe9vhB,UACjB8vhB,EAAe9vhB,QAAQtF,OAAsB,QAAds1hB,EAAAr3Y,EAAUsC,YAAI,IAAA+0Y,OAAA,EAAdA,EAAgBt0Y,WAAY,IAEzD/C,EAAUG,SAAWH,EAAUsC,IAOrC,GAAG,CAACtC,EAAUsC,OAEd7B,EAAAA,WAAgB,WACVT,EAAUG,SAAWH,EAAUsC,OACjCp/I,YAAW,YACTyzZ,EAAAA,EAAAA,IAAgBygI,EAClB,GAAG,KACHE,EAAmBt3Y,GAGvB,GAAG,CAACA,EAAUq9P,QAASr9P,EAAUsC,OAEjC,IAAMg1Y,EAAqB,SAAClrb,GAG1B01C,EAAS,MACTo1Y,EAAY,MACZ75c,GAAW,GACX,IAAM2kE,EAAU,CACdz2I,OAAQ,OACRquD,QAAS,CACP,eAAgB,oBAElBrN,KAAM3L,KAAKF,UAAU,CACnBy/F,QAAS/zC,EAAO+zC,QAChBmC,KAAMl2C,EAAOk2C,KACb+6P,QAASr9P,EAAUq9P,QACnBn7P,eAAgBlC,EAAUkC,mBAwB9BC,EAAAA,EAAAA,IAAaC,iBAAuBJ,GAnBlB,SAAC18H,GACbA,GAAQA,EAAK+zC,QACf69d,EAAY5xgB,EAAK0vgB,QAEjB75a,GAAQ5H,QAAQjuF,EAAK61F,SACrBj4G,YAAW,YACTyzZ,EAAAA,EAAAA,IAAgBygI,EAClB,GAAG,OAEHj8a,GAAQnuD,MAAM1nC,EAAK61F,SACnB2mC,EAASx8H,IAEX+3D,GAAW,EACb,IACgB,SAACj2C,GACf06G,EAAS16G,GACT+zE,GAAQnuD,MAAM5lB,EAAI+zE,SAClB99B,GAAW,EACb,GAEF,EAEA,OACEojE,EAAAA,cAAA,OAAKjtI,UAAS,UACXwsI,EAAUG,SACTM,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,OAAKjtI,UAAU,+CACbitI,EAAAA,cAAC82Y,GAAAA,EAAY,CAAC/jhB,UAAU,qBAAqB,6BAG/CitI,EAAAA,cAAA,OAAKjtI,UAAU,gCAA+B,yFAI9CitI,EAAAA,cAAA,OACEjtI,WACG6+D,EAAe,IAAL,IAAQ,mDAGrBouE,EAAAA,cAAA,SACEjtI,UAAS,mFACP6+D,EAAU,oCAAsC,IAElDnP,YAAY,eACZ36D,KAAM,OACNq8B,aAA4B,QAAhBqyf,EAAEj3Y,EAAUsC,YAAI,IAAA20Y,OAAA,EAAdA,EAAgBl0Y,SAC9B/wF,IAAKmle,EACLp6d,UAAW,SAACj5D,GACoD,IAAD0zhB,EAAAC,EAA/C,UAAV3zhB,EAAE28B,KAAmB02f,EAAe9vhB,UAAYgrE,GAClD6tE,EAAYmC,IAAAA,IAAC,CAAC,EACTrC,GAAS,IACZsC,KAAM,CACJ16I,MAAO,EACPm7I,SAAgC,QAAxBy0Y,EAAEL,EAAe9vhB,eAAO,IAAAmwhB,OAAA,EAAtBA,EAAwBz1hB,MAClCihJ,cAAqC,QAAxBy0Y,EAAEN,EAAe9vhB,eAAO,IAAAowhB,OAAA,EAAtBA,EAAwB11hB,MACvCkhJ,UAAW,OAInB,IAGFxC,EAAAA,cAAC0C,GAAAA,GAAY,CACX1mF,QAAS,WACsB,IAADi7d,EAAAC,EAAxBR,EAAe9vhB,SACjB64I,EAAYmC,IAAAA,IAAC,CAAC,EACTrC,GAAS,IACZsC,KAAM,CACJ16I,MAAO,EACPm7I,SAAgC,QAAxB20Y,EAAEP,EAAe9vhB,eAAO,IAAAqwhB,OAAA,EAAtBA,EAAwB31hB,MAClCihJ,cAAqC,QAAxB20Y,EAAER,EAAe9vhB,eAAO,IAAAswhB,OAAA,EAAtBA,EAAwB51hB,MACvCkhJ,UAAW,OAInB,GAEAxC,EAAAA,cAAA,OAAKjtI,UAAU,oBACZ6+D,GACCouE,EAAAA,cAAA,OAAKjtI,UAAU,mBACbitI,EAAAA,cAACm3Y,GAAa,CAACpkhB,UAAU,qEAG3B6+D,GACAouE,EAAAA,cAAA,QAAMjtI,UAAU,iBACb,IACDitI,EAAAA,cAACo3Y,GAAiB,CAACrkhB,UAAU,gCACO,aAInC,OAMfitI,EAAAA,cAAA,OAAKzuF,IAAKole,GACP/kd,GACCouE,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAACq3Y,GAAAA,GAAU,KACTr3Y,EAAAA,cAAAA,EAAAA,SAAA,KAAE,sDAEJA,EAAAA,cAAChqB,GAAQ,CAACN,QAAM,EAAC3iH,UAAU,OAAOqjH,UAAW,CAAEP,KAAM,OAGxD0pB,EAAUG,SAAWH,EAAUsC,MAC9B7B,EAAAA,cAAA,OAAKjtI,UAAU,QACZujhB,GAAYA,EAASt2hB,OAAS,GAC7BggJ,EAAAA,cAAA,OAAKjtI,UAAU,UACbitI,EAAAA,cAACs3Y,IAAe,CAAChB,SAAUA,EAAU/2Y,UAAWA,MAKvD+2Y,GAAgC,IAApBA,EAASt2hB,QACpBggJ,EAAAA,cAAA,OAAKjtI,UAAU,yCACZ,IACDitI,EAAAA,cAACu3Y,EAAqB,CAACxkhB,UAAU,0BAA0B,8BAC/B,MAMxC,+kBC5LA,IA4OA,IA5O4B,SAAHi+C,GASlB,IARL26C,EAAM36C,EAAN26C,OASQ4zC,EAA6C5zC,EAA7C4zC,UAAWE,EAAkC9zC,EAAlC8zC,aAAqB4B,GAAa11C,EAApBp/C,MAAoBo/C,EAAb01C,UAClCM,EAAY3jG,OAElB2tB,EAAwCq0E,EAAAA,UAAwB,GAAzDiC,EAAYt2E,EAAA,GAAE6rd,EAAe7rd,EAAA,GACpCC,EAA4Co0E,EAAAA,UAAwB,GAA7DR,EAAc5zE,EAAA,GAAEu1E,EAAiBv1E,EAAA,GAExCE,EAA0Bk0E,EAAAA,SAA+B,MAAlDgC,EAAKl2E,EAAA,GAAE2rd,EAAQ3rd,EAAA,GAEhB4rd,EAAgB13Y,EAAAA,OAA6B,MAC7C23Y,EAAc33Y,EAAAA,OAA6B,MAEzC38B,EAAY1jD,GAAZ0jD,QAIR28B,EAAAA,WAAgB,WACVT,EAAUG,UAEZk4Y,EAAWr4Y,EAAUG,SACrBj9I,YAAW,YACTyzZ,EAAAA,EAAAA,IAAgBwhI,EAClB,GAAG,KAEP,GAAG,CAACn4Y,EAAUG,UAEd,IAAM0B,EAAc,WAElBC,EAAS,MACT,IAAI11C,EAASh1F,OAAO89B,OAAO,CAAC,EAAG8qG,GAC/B5zC,EAAOk2C,KAAO,KACdl2C,EAAO+zC,QAAU,KACjBD,EAAa9zC,EACf,EA0CMisb,EAAa,SAACl4Y,GAClB,IAAMm4Y,EAAmBl2Y,EAAS,QAClCN,EAAS,MACTm2Y,GAAgB,GAEhB,IAAMj2Y,EAAU,CACdz2I,OAAQ,OACRquD,QAAS,CACP,eAAgB,oBAElBrN,KAAM3L,KAAKF,UAAU,CACnBy/F,QAASA,EACT3xH,EAAG,EACH0zH,eAAgBlC,EAAUkC,mBAuB9BC,EAAAA,EAAAA,IAAUm2Y,EAAet2Y,GAnBP,SAAC18H,GACbA,GAAQA,EAAK+zC,QACf8hD,GAAQ5H,QAAQjuF,EAAK61F,SACrB+kC,EAAYmC,IAAAA,IAAC,CAAC,EACTrC,GAAS,IACZsC,KAAMh9H,EAAKA,KAAK,MAElB4ygB,EAAS5ygB,EAAKA,OAEd61F,GAAQnuD,MAAM1nC,EAAK61F,SAErB88a,GAAgB,EAClB,IACgB,SAAC7wf,GACfw9F,QAAQtrF,IAAIlS,GACZ06G,EAAS16G,GACT+zE,GAAQnuD,MAAM5lB,EAAI+zE,SAClB88a,GAAgB,EAClB,GAEF,EAEMhhhB,EAAqB,CACzBpV,KAAM,OACNo7D,UAAU,EACV8jD,SAAU,EACVjjD,aAAc,SAAC9E,GAEb,OArFe,SAACA,GAClB6oF,IACA,IAAMhpF,EAAW,IAAIC,SACrBD,EAASE,OAAO,OAAQC,EAAMA,EAAKn3D,MACnC,IAAM03D,EAAS6oF,EAAS,aACxBR,GAAkB,GAClBw0E,MAAM78J,EAAK,CAEThuD,OAAQ,OACRghD,KAAMsM,IAEL1xB,MACC,SAACixB,GAAQ,OAAKA,EAASq2E,MAAM,IAE9BtnG,MAAK,SAAC7hB,GACDA,EAAK+zC,QACPyoF,EAAS,MACTF,GAAkB,GAIlB1B,EAAYmC,IAAAA,IAAC,CAAC,EACTrC,GAAS,IACZG,QAAS76H,EAAK66H,QACdmC,KAAM,UAGRR,EAAS,CAAEzoF,QAAQ,EAAO8hD,QAAS71F,EAAK61F,UACxCymC,GAAkB,GAEtB,IACClb,OACC,SAAC15E,GACC40F,GAAkB,GAClBhd,QAAQtrF,IAAI0T,GACZ80F,EAAS,CAAEzoF,QAAQ,EAAO8hD,QAASnuD,EAAQ,IAC7C,GAEN,CA8CIure,CAAWv/d,IACJ,CACT,EAEAoD,SAAQ,SAACnH,GACP,IAAQoE,EAAWpE,EAAK+D,KAAhBK,OACO,SAAXA,EACF8hD,GAAQ5H,QAAWt+C,EAAK+D,KAAKn3D,KAAI,gCAEb,UAAXw3D,GACT8hD,GAAQnuD,MAASiI,EAAK+D,KAAKn3D,KAAI,uBAEnC,EACAi+D,OAAM,SAACh8D,GACL8gI,QAAQtrF,IAAI,gBAAiBx1C,EAAEo5D,aAAarC,MAC9C,GAGF,OACE4lF,EAAAA,cAAA,OAAKjtI,UAAU,IACbitI,EAAAA,cAAA,OAAKjtI,UAAS,SACZitI,EAAAA,cAAA,OAAKjtI,UAAS,oBACZitI,EAAAA,cAAA,OAAKjtI,UAAU,SACbitI,EAAAA,cAAA,QAAMjtI,UAAU,kBACditI,EAAAA,cAAC+B,EAAmB,CAAChvI,UAAU,qBAAqB,WAC9C,IACRitI,EAAAA,cAAA,QAAMjtI,UAAU,YAAW,2BAA+B,KAG5DitI,EAAAA,cAAC38B,EAAO1sG,OAAA89B,OAAA,CAAC1hC,UAAU,KAAQyD,GACzBwpI,EAAAA,cAAA,KAAGjtI,UAAU,6CACXitI,EAAAA,cAAC+3Y,EAAS,CAAChlhB,UAAU,UAEvBitI,EAAAA,cAAA,KAAGjtI,UAAU,wBAAuB,6CAGpCitI,EAAAA,cAAA,KAAGjtI,UAAU,wBAAuB,6DAMxCitI,EAAAA,cAACg4Y,GAAW,CACVrsb,OAAQ,CACNw1C,kBAAmBA,EACnBC,YAAaA,EACb7B,UAAWA,EACXE,aAAcA,EACd4B,SAAUA,KAGb7B,GACCQ,EAAAA,cAAA,OAAKjtI,UAAU,qBACZ,IACDitI,EAAAA,cAAA,QAAMjtI,UAAU,iCACb,IACDitI,EAAAA,cAAC55E,GAAAA,EAAI,CAACC,KAAM,UAAW5iC,KAAM,KACvB,IAAI,wCAC0B,IACtCu8G,EAAAA,cAAChqB,GAAQ,CAACN,QAAM,EAAC3iH,UAAU,OAAOqjH,UAAW,CAAEP,KAAM,OAIzDmqB,EAAAA,cAACi4Y,GAAW,CACV34Y,cAAe,CACbC,UAAWA,EACXE,aAAcA,EACdD,eAAgBA,KAGpBQ,EAAAA,cAAA,OAAKzuF,IAAKmme,IAEV13Y,EAAAA,cAAA,OAAKjtI,UAAU,eACZkvI,GACCjC,EAAAA,cAAA,OAAKjtI,UAAU,gBACZ,IACDitI,EAAAA,cAAA,QAAMjtI,UAAU,iCACb,IACDitI,EAAAA,cAAC55E,GAAAA,EAAI,CAACC,KAAM,UAAW5iC,KAAM,KACvB,IAAI,oDACsC,IAClDu8G,EAAAA,cAAChqB,GAAQ,CAACN,QAAM,EAAC3iH,UAAU,OAAOqjH,UAAW,CAAEP,KAAM,OAGzDmqB,EAAAA,cAAA,OAAKzuF,IAAKome,GACR33Y,EAAAA,cAACk4Y,GAAQ,CACPvsb,OAAQ,CACNq2C,MAAOA,EACPzC,UAAWA,EACXE,aAAcA,EACdwC,aAAcA,MAKnBD,GACChC,EAAAA,cAACm4Y,IAAU,CACTxsb,OAAQ,CACN4zC,UAAWA,EACXE,aAAcA,OAQ9B,ECrPI,IAAY,CAAC,QAAS,WAuB1B,IACA,IADiB,cArBjB,SAAiCzuF,EAAMC,GACrC,IAAIC,EAAQF,EAAKE,MACfC,EAAUH,EAAKG,QACf36C,GAAQ,OAAyBw6C,EAAM,KACzC,OAAoB,gBAAoB,MAAOr6C,OAAO89B,OAAO,CAC3D2c,MAAO,6BACPrW,KAAM,OACNsW,QAAS,YACTC,YAAa,IACbhxC,OAAQ,eACR,cAAe,OACfixC,IAAKN,EACL,kBAAmBE,GAClB36C,GAAQ06C,EAAqB,gBAAoB,QAAS,CAC3Dr+C,GAAIs+C,GACHD,GAAS,KAAmB,gBAAoB,OAAQ,CACzDM,cAAe,QACfC,eAAgB,QAChBvsC,EAAG,0MAEP,ICZA,IAViC,gBAAoB,CACnD7L,IAAK,EACLC,IAAK,EACL2gB,UAAW,MACX2sB,KAAM,EACNwxe,cAAe,EACfC,YAAa,EACb94d,SAAU,EACV66D,UAAU,ICTL,SAAS,IAAU94H,EAAO+X,EAAKC,GACpC,OAAQhY,EAAQ+X,IAAQC,EAAMD,EAChC,CACO,SAASi/gB,IAAkBr+f,EAAW34B,EAAO+X,EAAKC,GACvD,IAAIgpE,EAAS,IAAUhhF,EAAO+X,EAAKC,GAC/Bi/gB,EAAgB,CAAC,EACrB,OAAQt+f,GACN,IAAK,MACHs+f,EAAczmhB,MAAQ,GAAGY,OAAgB,IAAT4vE,EAAc,KAC9Ci2c,EAActlhB,UAAY,kBAC1B,MACF,IAAK,MACHslhB,EAAc31c,OAAS,GAAGlwE,OAAgB,IAAT4vE,EAAc,KAC/Ci2c,EAActlhB,UAAY,kBAC1B,MACF,IAAK,MACHslhB,EAAcnqhB,IAAM,GAAGsE,OAAgB,IAAT4vE,EAAc,KAC5Ci2c,EAActlhB,UAAY,mBAC1B,MACF,QACEslhB,EAAcpqhB,KAAO,GAAGuE,OAAgB,IAAT4vE,EAAc,KAC7Ci2c,EAActlhB,UAAY,mBAG9B,OAAOslhB,CACT,CAEO,SAASvwc,IAAS1mF,EAAO6F,GAC9B,OAAOy4B,MAAMC,QAAQv+B,GAASA,EAAM6F,GAAS7F,CAC/C,CCzBA,IAAI,IAAY,CAAC,YAAa,QAAS,aAAc,cAAe,QAAS,SAAU,WAAY,kBAM/Fk3hB,IAAsB,cAAiB,SAAUhihB,EAAO+6C,GAC1D,IAAIiN,EAAai6d,EACb75d,EAAYpoD,EAAMooD,UACpBt9D,EAAQkV,EAAMlV,MACdisI,EAAa/2H,EAAM+2H,WACnB07B,EAAczyJ,EAAMyyJ,YACpBh+J,EAAQuL,EAAMvL,MACdk/D,EAAS3zD,EAAM2zD,OACfvhE,EAAW4N,EAAM5N,SACjB8vhB,EAAiBlihB,EAAMkihB,eACvBr1c,GAAY,QAAyB7sE,EAAO,KAC1Cg8D,EAAoB,aAAiB,KACvCn5D,EAAMm5D,EAAkBn5D,IACxBC,EAAMk5D,EAAkBl5D,IACxB2gB,EAAYu4C,EAAkBv4C,UAC9B4kC,EAAW2T,EAAkB3T,SAC7Bu7D,EAAW5nD,EAAkB4nD,SAC7BtzE,EAAQ0rB,EAAkB1rB,MAC1ByY,EAAWiT,EAAkBjT,SAC7Bo5d,EAAqBnmd,EAAkBmmd,mBACvCC,EAA0Bpmd,EAAkBomd,wBAC5CC,EAAkCrmd,EAAkBqmd,gCAClDC,EAAkB,GAAGpmhB,OAAOksD,EAAW,WAEvCm6d,EAAsB,SAA6B11hB,GAChDw7D,GACHoqG,EAAY5lK,EAAGkqI,EAEnB,EAyCIgrZ,EAAgBD,IAAkBr+f,EAAW34B,EAAO+X,EAAKC,GAEzD0/gB,EAA0B,gBAAoB,OAAO,OAAS,CAChEzne,IAAKA,EACLx+C,UAAW,IAAW+lhB,GAAkBt6d,EAAc,CAAC,GAAG,OAAgBA,EAAa,GAAG9rD,OAAOomhB,EAAiB,KAAKpmhB,OAAO66H,EAAa,GAAIzmF,IAAQ,OAAgB0X,EAAa,GAAG9rD,OAAOomhB,EAAiB,aAAclwhB,GAAW41D,IACxOvzD,OAAO,SAAc,QAAc,CAAC,EAAGsthB,GAAgBtthB,GACvD2tH,YAAamga,EACb1oX,aAAc0oX,EACdz8d,UA/Cc,SAAmBj5D,GACjC,IAAKw7D,GAAYu7D,EAAU,CACzB,IAAI93C,EAAS,KAEb,OAAQj/E,EAAEo6J,OAASp6J,EAAEgpH,SACnB,KAAKC,GAAA,EAAQsoE,KACXtyG,EAAuB,QAAdroD,GAAqC,QAAdA,GAAuB,EAAI,EAC3D,MACF,KAAKqyF,GAAA,EAAQuoE,MACXvyG,EAAuB,QAAdroD,GAAqC,QAAdA,EAAsB,GAAK,EAC3D,MAEF,KAAKqyF,GAAA,EAAQoxC,GACXp7E,EAAuB,QAAdroD,EAAsB,GAAK,EACpC,MAEF,KAAKqyF,GAAA,EAAQqxC,KACXr7E,EAAuB,QAAdroD,GAAuB,EAAI,EACpC,MACF,KAAKqyF,GAAA,EAAQwoE,KACXxyG,EAAS,MACT,MACF,KAAKgqC,GAAA,EAAQyoE,IACXzyG,EAAS,MACT,MACF,KAAKgqC,GAAA,EAAQ2sa,QACX32c,EAAS,EACT,MACF,KAAKgqC,GAAA,EAAQ4sa,UACX52c,GAAU,EAGC,OAAXA,IACFj/E,EAAEuI,iBACF8shB,EAAep2c,EAAQirD,GAE3B,CACF,EAWEhuE,SAAUV,EAAW,KAAOmpB,IAASzoB,EAAUguE,GAC/C/tE,KAAM,SACN,gBAAiBnmD,EACjB,gBAAiBC,EACjB,gBAAiBhY,EACjB,gBAAiBu9D,EACjB,aAAcmpB,IAAS2wc,EAAoBprZ,GAC3C,kBAAmBvlD,IAAS4wc,EAAyBrrZ,GACrD,iBAA0F,QAAvEkrZ,EAAYzwc,IAAS6wc,EAAiCtrZ,UAAuC,IAAdkrZ,OAAuB,EAASA,EAAUn3hB,IAC3I+hF,IAUH,OARIlZ,IACF6ud,EAAa7ud,EAAO6ud,EAAY,CAC9B7xhB,MAAOomI,EACP3uE,UAAWA,EACXt9D,MAAOA,EACPsH,SAAUA,KAGPowhB,CACT,IAIA,YC9GI,IAAY,CAAC,YAAa,QAAS,cAAe,iBAAkB,SAAU,eAAgB,iBAI9FG,IAAuB,cAAiB,SAAU3ihB,EAAO+6C,GAC3D,IAAIqN,EAAYpoD,EAAMooD,UACpB3zD,EAAQuL,EAAMvL,MACdg+J,EAAczyJ,EAAMyyJ,YACpByvX,EAAiBlihB,EAAMkihB,eACvB/4f,EAASnpB,EAAMmpB,OACfy5f,EAAe5ihB,EAAM4ihB,aACrBC,EAAgB7ihB,EAAM6ihB,cACtBh2c,GAAY,QAAyB7sE,EAAO,KAC1C8ihB,EAAa,SAAa,CAAC,GAS/B,OARA,sBAA0B/ne,GAAK,WAC7B,MAAO,CACL2K,MAAO,SAAe/0D,GACpB,IAAIoyhB,EACoD,QAAvDA,EAAwBD,EAAW1yhB,QAAQO,UAA8C,IAA1BoyhB,GAA4CA,EAAsBr9d,OACpI,EAEJ,IACoB,gBAAoB,WAAgB,KAAMv8B,EAAOxP,KAAI,SAAU7uB,EAAO6F,GACxF,OAAoB,gBAAoB,KAAQ,OAAS,CACvDoqD,IAAK,SAAa1R,GACXA,EAGHy5e,EAAW1yhB,QAAQO,GAAS04C,SAFrBy5e,EAAW1yhB,QAAQO,EAI9B,EACAyB,SAAUywhB,IAAkBlyhB,EAC5By3D,UAAWA,EACX3zD,MAAO+8E,IAAS/8E,EAAO9D,GACvB64B,IAAK74B,EACL7F,MAAOA,EACPisI,WAAYpmI,EACZ8hK,YAAaA,EACbyvX,eAAgBA,EAChBvud,OAAQivd,GACP/1c,GACL,IACF,IAIA,YC7CA,SAASm2c,IAAYn2hB,GACnB,IAAI6vB,EAAM,YAAa7vB,EAAIA,EAAE0K,QAAQ,GAAK1K,EAC1C,MAAO,CACL83I,MAAOjoH,EAAIioH,MACXC,MAAOloH,EAAIkoH,MAEf,CCJe,SAASq+Y,IAAMjjhB,GAC5B,IAAIooD,EAAYpoD,EAAMooD,UACpB3zD,EAAQuL,EAAMvL,MACd4a,EAAQrP,EAAMqP,MACdmI,EAAMxX,EAAMwX,IACZ7mB,EAAQqP,EAAMrP,MACd8hK,EAAczyJ,EAAMyyJ,YAClBz2F,EAAoB,aAAiB,KACvCv4C,EAAYu4C,EAAkBv4C,UAC9B5gB,EAAMm5D,EAAkBn5D,IACxBC,EAAMk5D,EAAkBl5D,IACxBulD,EAAW2T,EAAkB3T,SAC7B/X,EAAQ0rB,EAAkB1rB,MACxB4ye,EAAiB,GAAGhnhB,OAAOksD,EAAW,UACtC+6d,EAAc,IAAU9zgB,EAAOxM,EAAKC,GACpCsghB,EAAY,IAAU5rgB,EAAK3U,EAAKC,GAEhCy/gB,EAAsB,SAA6B11hB,IAChDw7D,GAAYoqG,GACfA,EAAY5lK,GAAI,EAEpB,EAEIk1hB,EAAgB,CAAC,EACrB,OAAQt+f,GACN,IAAK,MACHs+f,EAAczmhB,MAAQ,GAAGY,OAAqB,IAAdinhB,EAAmB,KACnDpB,EAAcrrhB,MAAQ,GAAGwF,OAAmB,IAAZknhB,EAAgC,IAAdD,EAAmB,KACrE,MACF,IAAK,MACHpB,EAAc31c,OAAS,GAAGlwE,OAAqB,IAAdinhB,EAAmB,KACpDpB,EAAcprhB,OAAS,GAAGuF,OAAmB,IAAZknhB,EAAgC,IAAdD,EAAmB,KACtE,MACF,IAAK,MACHpB,EAAcnqhB,IAAM,GAAGsE,OAAqB,IAAdinhB,EAAmB,KACjDpB,EAAcprhB,OAAS,GAAGuF,OAAmB,IAAZknhB,EAAgC,IAAdD,EAAmB,KACtE,MACF,QACEpB,EAAcpqhB,KAAO,GAAGuE,OAAqB,IAAdinhB,EAAmB,KAClDpB,EAAcrrhB,MAAQ,GAAGwF,OAAmB,IAAZknhB,EAAgC,IAAdD,EAAmB,KAEzE,OAAoB,gBAAoB,MAAO,CAC7C5mhB,UAAW,IAAW2mhB,EAAgB5ye,GAAS,GAAGp0C,OAAOgnhB,EAAgB,KAAKhnhB,OAAOvL,EAAQ,IAC7F8D,OAAO,SAAc,QAAc,CAAC,EAAGsthB,GAAgBtthB,GACvD2tH,YAAamga,EACb1oX,aAAc0oX,GAElB,CChDe,SAASc,IAAOrjhB,GAC7B,IAAIooD,EAAYpoD,EAAMooD,UACpB3zD,EAAQuL,EAAMvL,MACd00B,EAASnpB,EAAMmpB,OACfrD,EAAa9lB,EAAM8lB,WACnB2sI,EAAczyJ,EAAMyyJ,YAClBz2F,EAAoB,aAAiB,KACvCsnd,EAAWtnd,EAAkBsnd,SAC7Bhze,EAAQ0rB,EAAkB1rB,MAC1BztC,EAAMm5D,EAAkBn5D,IACtB0ghB,EAAY,WAAc,WAC5B,IAAKjze,EAAO,CAEV,GAAsB,IAAlBnnB,EAAO3/B,OACT,MAAO,GAET,IAAIg6hB,EAAa19f,QAA+CA,EAAajjB,EACzE4ghB,EAAWt6f,EAAO,GACtB,MAAO,CAAC,CACN9Z,MAAOzM,KAAKC,IAAI2ghB,EAAYC,GAC5BjsgB,IAAK5U,KAAKE,IAAI0ghB,EAAYC,IAE9B,CAGA,IADA,IAAIp5a,EAAO,GACFxgH,EAAI,EAAGA,EAAIs/B,EAAO3/B,OAAS,EAAGK,GAAK,EAC1CwgH,EAAKnhH,KAAK,CACRmmB,MAAO8Z,EAAOt/B,GACd2tB,IAAK2R,EAAOt/B,EAAI,KAGpB,OAAOwgH,CACT,GAAG,CAAClhF,EAAQmnB,EAAOxqB,EAAYjjB,IAC/B,OAAOyghB,EAAWC,EAAU5pgB,KAAI,SAAU6gC,EAAM7pD,GAC9C,IAAI0e,EAAQmrC,EAAKnrC,MACfmI,EAAMgjC,EAAKhjC,IACb,OAAoB,gBAAoByrgB,IAAO,CAC7CtyhB,MAAOA,EACPy3D,UAAWA,EACX3zD,MAAO+8E,IAAS/8E,EAAO9D,GACvB0e,MAAOA,EACPmI,IAAKA,EACLgS,IAAK74B,EACL8hK,YAAaA,GAEjB,IAAK,IACP,CC5Ce,SAAS,IAAKzyJ,GAC3B,IAAIooD,EAAYpoD,EAAMooD,UACpB3zD,EAAQuL,EAAMvL,MACd+D,EAAWwH,EAAMxH,SACjB1N,EAAQkV,EAAMlV,MACd44hB,EAAW1jhB,EAAMwlD,QACfwW,EAAoB,aAAiB,KACvCn5D,EAAMm5D,EAAkBn5D,IACxBC,EAAMk5D,EAAkBl5D,IACxB2gB,EAAYu4C,EAAkBv4C,UAC9Bm+f,EAAgB5ld,EAAkB4ld,cAClCC,EAAc7ld,EAAkB6ld,YAChCyB,EAAWtnd,EAAkBsnd,SAC3BK,EAAU,GAAGznhB,OAAOksD,EAAW,SAE/B25d,EAAgBD,IAAkBr+f,EAAW34B,EAAO+X,EAAKC,GAC7D,OAAoB,gBAAoB,OAAQ,CAC9CvG,UAAW,IAAWonhB,GAAS,OAAgB,CAAC,EAAG,GAAGznhB,OAAOynhB,EAAS,WAAYL,GAAY1B,GAAiB92hB,GAASA,GAAS+2hB,IACjIpthB,OAAO,SAAc,QAAc,CAAC,EAAGsthB,GAAgBtthB,GACvD2tH,YAAa,SAAqBv1H,GAChCA,EAAEye,iBACJ,EACAk6C,QAAS,WACPk+d,EAAS54hB,EACX,GACC0N,EACL,CC9Be,SAAS,IAAMwH,GAC5B,IAAIooD,EAAYpoD,EAAMooD,UACpB8vM,EAAQl4P,EAAMk4P,MACd1yM,EAAUxlD,EAAMwlD,QACdo+d,EAAgB,GAAG1nhB,OAAOksD,EAAW,SAEzC,OAAK8vM,EAAM1uQ,OAGS,gBAAoB,MAAO,CAC7C+S,UAAWqnhB,GACV1rR,EAAMv+O,KAAI,SAAU6gC,GACrB,IAAI1vD,EAAQ0vD,EAAK1vD,MACf2J,EAAQ+lD,EAAK/lD,MACb8gD,EAAQiF,EAAKjF,MACf,OAAoB,gBAAoB,IAAM,CAC5C/rB,IAAK1+B,EACLs9D,UAAWw7d,EACXnvhB,MAAOA,EACP3J,MAAOA,EACP06D,QAASA,GACRjQ,EACL,KAfS,IAgBX,CCnBe,SAASsue,IAAI7jhB,GAC1B,IAAIooD,EAAYpoD,EAAMooD,UACpBt9D,EAAQkV,EAAMlV,MACd2J,EAAQuL,EAAMvL,MACdorE,EAAc7/D,EAAM6/D,YAClB7D,EAAoB,aAAiB,KACvCn5D,EAAMm5D,EAAkBn5D,IACxBC,EAAMk5D,EAAkBl5D,IACxB2gB,EAAYu4C,EAAkBv4C,UAC9B6/f,EAAWtnd,EAAkBsnd,SAC7B1B,EAAgB5ld,EAAkB4ld,cAClCC,EAAc7ld,EAAkB6ld,YAC9BxtW,EAAe,GAAGn4K,OAAOksD,EAAW,QACpC82D,EAASoka,GAAY1B,GAAiB92hB,GAASA,GAAS+2hB,EAExDv1a,GAAc,SAAc,QAAc,CAAC,EAAGw1a,IAAkBr+f,EAAW34B,EAAO+X,EAAKC,IAAwB,mBAAVrO,EAAuBA,EAAM3J,GAAS2J,GAI/I,OAHIyqH,IACF5S,GAAc,SAAc,QAAc,CAAC,EAAGA,GAAqC,mBAAhBzsC,EAA6BA,EAAY/0E,GAAS+0E,IAEnG,gBAAoB,OAAQ,CAC9CtjE,UAAW,IAAW83K,GAAc,OAAgB,CAAC,EAAG,GAAGn4K,OAAOm4K,EAAc,WAAYn1D,IAC5FzqH,MAAO63G,GAEX,CC1Be,SAAS,IAAMtsG,GAC5B,IAAIooD,EAAYpoD,EAAMooD,UACpB8vM,EAAQl4P,EAAMk4P,MACdhpP,EAAOlP,EAAMkP,KACbza,EAAQuL,EAAMvL,MACdorE,EAAc7/D,EAAM6/D,YAClB7D,EAAoB,aAAiB,KACvCn5D,EAAMm5D,EAAkBn5D,IACxBC,EAAMk5D,EAAkBl5D,IACxBstC,EAAO4rB,EAAkB5rB,KACvB0ze,EAAW,WAAc,WAC3B,IAAIC,EAAS,IAAIz0f,IAMjB,GAJA4oO,EAAMnnQ,SAAQ,SAAUquD,GACtB2ke,EAAO5phB,IAAIilD,EAAKt0D,MAClB,IAEIokB,GAAiB,OAATkhC,EAEV,IADA,IAAIhgD,EAAUyS,EACPzS,GAAW0S,GAChBihhB,EAAO5phB,IAAI/J,GACXA,GAAWggD,EAGf,OAAOhnB,MAAMnH,KAAK8hgB,EACpB,GAAG,CAAClhhB,EAAKC,EAAKstC,EAAMlhC,EAAMgpP,IAC1B,OAAoB,gBAAoB,MAAO,CAC7C37P,UAAW,GAAGL,OAAOksD,EAAW,UAC/B07d,EAASnqgB,KAAI,SAAUqqgB,GACxB,OAAoB,gBAAoBH,IAAK,CAC3Cz7d,UAAWA,EACX5+B,IAAKw6f,EACLl5hB,MAAOk5hB,EACPvvhB,MAAOA,EACPorE,YAAaA,GAEjB,IACF,CCxBA,IAAI,IAAsB,cAAiB,SAAU7/D,EAAO+6C,GAC1D,IAAIiN,EACA64B,EAAmB7gF,EAAMooD,UAC3BA,OAAiC,IAArBy4B,EAA8B,YAAcA,EACxDtkF,EAAYyD,EAAMzD,UAClB9H,EAAQuL,EAAMvL,MACdwvhB,EAAkBjkhB,EAAMqoD,SACxBA,OAA+B,IAApB47d,GAAqCA,EAChDtga,EAAkB3jH,EAAM4jH,SACxBA,OAA+B,IAApBD,GAAoCA,EAC/C1C,EAAYjhH,EAAMihH,UAClBokC,EAAUrlJ,EAAMqlJ,QAChBnP,EAASl2I,EAAMk2I,OACfguY,EAAalkhB,EAAM6C,IACnBA,OAAqB,IAAfqhhB,EAAwB,EAAIA,EAClCC,EAAankhB,EAAM8C,IACnBA,OAAqB,IAAfqhhB,EAAwB,IAAMA,EACpCC,EAAcpkhB,EAAMowC,KACpBA,OAAuB,IAAhBg0e,EAAyB,EAAIA,EACpCt5hB,EAAQkV,EAAMlV,MACd6iC,EAAe3tB,EAAM2tB,aACrB2iB,EAAQtwC,EAAMswC,MACd72B,EAAQzZ,EAAMyZ,MACd0rC,EAAWnlD,EAAMmlD,SACjBk/d,EAAiBrkhB,EAAMqkhB,eACvBC,EAAgBtkhB,EAAMskhB,cACtBC,EAAoBvkhB,EAAMwkhB,WAC1BA,OAAmC,IAAtBD,GAAsCA,EACnDE,EAAkBzkhB,EAAM0khB,SACxBA,OAA+B,IAApBD,GAAqCA,EAChDE,EAAiB3khB,EAAM2khB,eACvBprgB,EAAUvZ,EAAMuZ,QAChB6mK,EAAWpgL,EAAMogL,SACjBwkW,EAAkB5khB,EAAMsjhB,SACxBA,OAA+B,IAApBsB,GAAoCA,EAC/C9+f,EAAa9lB,EAAM8lB,WACnB++f,EAAa7khB,EAAM6khB,WACnBC,EAAc9khB,EAAM8khB,YACpBC,EAAY/khB,EAAM+khB,UAClBC,EAAWhlhB,EAAMglhB,SACjBC,EAAiBjlhB,EAAMilhB,eACvB/sR,EAAQl4P,EAAMk4P,MACdhpP,EAAOlP,EAAMkP,KACb0zgB,EAAe5ihB,EAAM4ihB,aACrBsC,EAAkBllhB,EAAM+oD,SACxBA,OAA+B,IAApBm8d,EAA6B,EAAIA,EAC5C/C,EAAqBnihB,EAAMmihB,mBAC3BC,EAA0BpihB,EAAMoihB,wBAChCC,EAAkCrihB,EAAMqihB,gCACtCS,GAAa,WACb9pd,GAAe,WACfv1C,GAAY,WAAc,WAC5B,OAAI28J,EACK7mK,EAAU,MAAQ,MAEpBA,EAAU,MAAQ,KAC3B,GAAG,CAACA,EAAS6mK,IAET+kW,GAAY,WAAc,WAC5B,OAAOl8f,SAASpmB,GAAOA,EAAM,CAC/B,GAAG,CAACA,IACAuihB,GAAY,WAAc,WAC5B,OAAOn8f,SAASnmB,GAAOA,EAAM,GAC/B,GAAG,CAACA,IAEAuihB,GAAa,WAAc,WAC7B,OAAgB,OAATj1e,GAAiBA,GAAQ,EAAI,EAAIA,CAC1C,GAAG,CAACA,IAEAk1e,GAAa,WAAc,WAC7B,OAAiB,IAAbZ,EACKW,GAEFX,GAAY,GAAIA,CACzB,GAAG,CAACA,EAAUW,KAEVE,GAAW,WAAc,WAE3B,OADWplhB,OAAOopB,KAAK2uO,GAAS,CAAC,GACrBv+O,KAAI,SAAU6P,GACxB,IAAI41B,EAAO84M,EAAM1uO,GACbg8f,EAAU,CACZ16hB,MAAO8f,OAAO4e,IAQhB,OANI41B,GAA0B,YAAlB,QAAQA,KAAqC,iBAAqBA,KAAU,UAAWA,GAAQ,UAAWA,IACpHome,EAAQ/whB,MAAQ2qD,EAAK3qD,MACrB+whB,EAAQjwe,MAAQ6J,EAAK7J,OAErBiwe,EAAQjwe,MAAQ6J,EAEXome,CACT,IAAGtshB,QAAO,SAAUshD,GAClB,IAAIjF,EAAQiF,EAAKjF,MACjB,OAAOA,GAA0B,iBAAVA,CACzB,IAAGr6C,MAAK,SAAU4L,EAAG8E,GACnB,OAAO9E,EAAEhc,MAAQ8gB,EAAE9gB,KACrB,GACF,GAAG,CAACotQ,IAEAutR,GChHS,SAAmB5ihB,EAAKC,EAAKstC,EAAMm1e,EAAUf,EAAYE,GACtE,IAAIgB,EAAmB,eAAkB,SAAU13hB,GACjD,IAAI23hB,EAAkB18f,SAASj7B,GAAOA,EAAM6U,EAG5C,OAFA8ihB,EAAkB/ihB,KAAKC,IAAIC,EAAK9U,GACd4U,KAAKE,IAAID,EAAK8ihB,EAElC,GAAG,CAAC9ihB,EAAKC,IACL8ihB,EAAkB,eAAkB,SAAU53hB,GAChD,GAAa,OAAToiD,EAAe,CACjB,IAAIy1e,EAAYhjhB,EAAMD,KAAKwoB,OAAOs6f,EAAiB13hB,GAAO6U,GAAOutC,GAAQA,EAErE01e,EAAa,SAAoB3rc,GACnC,OAAQ7rE,OAAO6rE,GAAKloE,MAAM,KAAK,IAAM,IAAIzoB,MAC3C,EACIu8hB,EAAanjhB,KAAKE,IAAIgjhB,EAAW11e,GAAO01e,EAAWhjhB,GAAMgjhB,EAAWjjhB,IACpEwkgB,EAAaz8f,OAAOi7gB,EAAU90gB,QAAQg1gB,IAC1C,OAAOljhB,GAAOwkgB,GAAcA,GAAcvkgB,EAAMukgB,EAAa,IAC/D,CACA,OAAO,IACT,GAAG,CAACj3d,EAAMvtC,EAAKC,EAAK4ihB,IAChBp+U,EAAc,eAAkB,SAAUt5M,GAC5C,IAAI23hB,EAAkBD,EAAiB13hB,GAEnCg4hB,EAAcT,EAAS5rgB,KAAI,SAAUylC,GACvC,OAAOA,EAAKt0D,KACd,IACa,OAATslD,GACF41e,EAAY98hB,KAAK08hB,EAAgB53hB,IAGnCg4hB,EAAY98hB,KAAK2Z,EAAKC,GAEtB,IAAImjhB,EAAaD,EAAY,GACzBE,EAAYpjhB,EAAMD,EAQtB,OAPAmjhB,EAAYj1hB,SAAQ,SAAUo1hB,GAC5B,IAAIprgB,EAAOnY,KAAKoG,IAAI28gB,EAAkBQ,GAClCprgB,GAAQmrgB,IACVD,EAAaE,EACbD,EAAYnrgB,EAEhB,IACOkrgB,CACT,GAAG,CAACpjhB,EAAKC,EAAKyihB,EAAUn1e,EAAMs1e,EAAkBE,IAG5CxoR,EAAc,SAASA,EAAYj0O,EAAQ2iD,EAAQirD,GACrD,IAAI+sB,EAAOv6J,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,OAC/E,GAAsB,iBAAXuiF,EAAqB,CAC9B,IAAI8lD,EACAn4H,EAAc0vB,EAAO4tG,GAErBqvZ,EAAkB3shB,EAAcqyE,EAEhCu6c,EAAkB,GACtBd,EAASx0hB,SAAQ,SAAUquD,GACzBine,EAAgBn9hB,KAAKk2D,EAAKt0D,MAC5B,IAEAu7hB,EAAgBn9hB,KAAK2Z,EAAKC,GAE1BujhB,EAAgBn9hB,KAAK08hB,EAAgBnshB,IAErC,IAAI6nM,EAAOx1H,EAAS,EAAI,GAAK,EAChB,SAATg4E,EACFuiY,EAAgBn9hB,KAAK08hB,EAAgBnshB,EAAc6nM,EAAOlxJ,IAE1Di2e,EAAgBn9hB,KAAK08hB,EAAgBQ,IAGvCC,EAAkBA,EAAgBnthB,QAAO,SAAUlL,GACjD,OAAe,OAARA,CACT,IAECkL,QAAO,SAAUlL,GAChB,OAAO89E,EAAS,EAAI99E,GAAOyL,EAAczL,GAAOyL,CAClD,IACa,SAATqqJ,IAEFuiY,EAAkBA,EAAgBnthB,QAAO,SAAUlL,GACjD,OAAOA,IAAQyL,CACjB,KAEF,IAAI6shB,EAAwB,SAATxiY,EAAkBrqJ,EAAc2shB,EACnDx0Z,EAAYy0Z,EAAgB,GAC5B,IAAIE,EAAY3jhB,KAAKoG,IAAI4oH,EAAY00Z,GASrC,GARAD,EAAgBt1hB,SAAQ,SAAUy1hB,GAChC,IAAIzrgB,EAAOnY,KAAKoG,IAAIw9gB,EAAiBF,GACjCvrgB,EAAOwrgB,IACT30Z,EAAY40Z,EACZD,EAAYxrgB,EAEhB,SAEkBqE,IAAdwyG,EACF,OAAO9lD,EAAS,EAAIjpE,EAAMC,EAG5B,GAAa,SAATghJ,EACF,OAAOlyB,EAGT,GAAIhvH,KAAKoG,IAAI8iE,GAAU,EAAG,CACxB,IAAIk4F,GAAc,OAAmB76I,GAErC,OADA66I,EAAYjtC,GAAcnF,EACnBwrI,EAAYp5F,EAAal4F,EAASw1H,EAAMvqE,EAAY+sB,EAC7D,CACA,OAAOlyB,CACT,CAAO,MAAe,QAAX9lD,EACFjpE,EACa,QAAXipE,EACFhpE,OADF,CAGT,EAEI2jhB,EAAqB,SAA4Bt9f,EAAQ2iD,EAAQirD,GACnE,IAAI+sB,EAAOv6J,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,OAC3EkQ,EAAc0vB,EAAO4tG,GACrBnF,EAAYwrI,EAAYj0O,EAAQ2iD,EAAQirD,EAAY+sB,GACxD,MAAO,CACLh5J,MAAO8mI,EACP01F,QAAS11F,IAAcn4H,EAE3B,EACIithB,EAAW,SAAkB3rgB,GAC/B,OAAoB,OAAb2pgB,GAA8B,IAAT3pgB,GAAkC,iBAAb2pgB,GAAyB3pgB,EAAO2pgB,CACnF,EAiEA,MAAO,CAACp9U,EA/DW,SAAsBn+K,EAAQ2iD,EAAQirD,GACvD,IAAI+sB,EAAOv6J,UAAUC,OAAS,QAAsB41B,IAAjB71B,UAAU,GAAmBA,UAAU,GAAK,OAC3E66K,EAAaj7I,EAAOxP,IAAI2tL,GACxB7tM,EAAc2qK,EAAWrtC,GACzBnF,EAAYwrI,EAAYh5F,EAAYt4F,EAAQirD,EAAY+sB,GAE5D,GADAsgB,EAAWrtC,GAAcnF,GACN,IAAf4yZ,EAAsB,CAExB,IAAImC,EAAUjC,GAAY,EAEtB3tZ,EAAa,GAAKqtC,EAAWrtC,EAAa,KAAOt9H,IACnD2qK,EAAWrtC,GAAcn0H,KAAKE,IAAIshK,EAAWrtC,GAAaqtC,EAAWrtC,EAAa,GAAK4vZ,IAErF5vZ,EAAaqtC,EAAW56K,OAAS,GAAK46K,EAAWrtC,EAAa,KAAOt9H,IACvE2qK,EAAWrtC,GAAcn0H,KAAKC,IAAIuhK,EAAWrtC,GAAaqtC,EAAWrtC,EAAa,GAAK4vZ,GAE3F,MAAO,GAAwB,iBAAbjC,GAAsC,OAAbA,EAAmB,CAK5D,IAAK,IAAI76hB,EAAIktI,EAAa,EAAGltI,EAAIu6K,EAAW56K,OAAQK,GAAK,EAEvD,IADA,IAAIy9N,GAAU,EACPo/T,EAAStiX,EAAWv6K,GAAKu6K,EAAWv6K,EAAI,KAAOy9N,GAAS,CAC7D,IAAIs/T,EAAsBH,EAAmBriX,EAAY,EAAGv6K,GAC5Du6K,EAAWv6K,GAAK+8hB,EAAoB97hB,MACpCw8N,EAAUs/T,EAAoBt/T,OAChC,CAGF,IAAK,IAAIh+N,EAAKytI,EAAYztI,EAAK,EAAGA,GAAM,EAEtC,IADA,IAAIu9hB,GAAW,EACRH,EAAStiX,EAAW96K,GAAM86K,EAAW96K,EAAK,KAAOu9hB,GAAU,CAChE,IAAIC,EAAuBL,EAAmBriX,GAAa,EAAG96K,EAAK,GACnE86K,EAAW96K,EAAK,GAAKw9hB,EAAqBh8hB,MAC1C+7hB,EAAWC,EAAqBx/T,OAClC,CAIF,IAAK,IAAIld,EAAMhmC,EAAW56K,OAAS,EAAG4gN,EAAM,EAAGA,GAAO,EAEpD,IADA,IAAI28U,GAAY,EACTL,EAAStiX,EAAWgmC,GAAOhmC,EAAWgmC,EAAM,KAAO28U,GAAW,CACnE,IAAIC,EAAuBP,EAAmBriX,GAAa,EAAGgmC,EAAM,GACpEhmC,EAAWgmC,EAAM,GAAK48U,EAAqBl8hB,MAC3Ci8hB,EAAYC,EAAqB1/T,OACnC,CAGF,IAAK,IAAIjd,EAAM,EAAGA,EAAMjmC,EAAW56K,OAAS,EAAG6gN,GAAO,EAEpD,IADA,IAAI48U,GAAY,EACTP,EAAStiX,EAAWimC,EAAM,GAAKjmC,EAAWimC,KAAS48U,GAAW,CACnE,IAAIC,EAAuBT,EAAmBriX,EAAY,EAAGimC,EAAM,GACnEjmC,EAAWimC,EAAM,GAAK68U,EAAqBp8hB,MAC3Cm8hB,EAAYC,EAAqB5/T,OACnC,CAEJ,CACA,MAAO,CACLx8N,MAAOs5K,EAAWrtC,GAClB5tG,OAAQi7I,EAEZ,EAEF,CD/EmB+iX,CAAUhC,GAAWC,GAAWC,GAAYE,GAAUf,EAAYc,IACjF8B,IAAc,QAAe3B,GAAY,GACzCn+U,GAAc8/U,GAAY,GAC1BC,GAAeD,GAAY,GAEzBtsb,IAAkB,EAAAC,GAAA,GAAeptE,EAAc,CAC/C7iC,MAAOA,IAETmwG,IAAmB,QAAeH,GAAiB,GACnDrvB,GAAcwvB,GAAiB,GAC/B+jC,GAAW/jC,GAAiB,GAC1BygE,GAAY,WAAc,WAC5B,IAAI4rX,EAAY77c,SAAoD,GAAKriD,MAAMC,QAAQoiD,IAAeA,GAAc,CAACA,IAEnH87c,GADe,QAAeD,EAAW,GAChB,GAEvBzkX,EAA+B,OAAhBp3F,GAAuB,GAAK,MADtB,IAAhB87c,EAAyBpC,GAAYoC,GAG9C,GAAIj3e,EAAO,CAGT,GAFAuyH,GAAe,OAAmBykX,GAE9B7tgB,QAAyB2F,IAAhBqsD,GAA2B,CACtC,IAAI+7c,EAAa/tgB,GAAS,EAAIA,EAAQ,EAAI,EAG1C,IAFAopJ,EAAeA,EAAalzJ,MAAM,EAAG63gB,GAE9B3kX,EAAar5K,OAASg+hB,GAAY,CACvC,IAAIC,EACJ5kX,EAAa35K,KAAiE,QAA3Du+hB,EAAgB5kX,EAAaA,EAAar5K,OAAS,UAAkC,IAAlBi+hB,EAA2BA,EAAgBtC,GACnI,CACF,CACAtiX,EAAa3nK,MAAK,SAAU4L,EAAG8E,GAC7B,OAAO9E,EAAI8E,CACb,GACF,CAKA,OAHAi3J,EAAa9xK,SAAQ,SAAU/C,EAAK2C,GAClCkyK,EAAalyK,GAAS22M,GAAYt5M,EACpC,IACO60K,CACT,GAAG,CAACp3F,GAAan7B,EAAO60e,GAAW1rgB,EAAO6tL,KAEtCogV,GAAe,SAAahsX,IAChCgsX,GAAat3hB,QAAUsrK,GACvB,IAAIisX,GAAkB,SAAyBC,GAC7C,OAAOt3e,EAAQs3e,EAAgBA,EAAc,EAC/C,EACIllX,GAAgB,SAAuB0B,GAEzC,IAAIyjX,GAAkB,OAAmBzjX,GAAYlpK,MAAK,SAAU4L,EAAG8E,GACrE,OAAO9E,EAAI8E,CACb,IAEIu5C,KAAa,EAAA5qC,GAAA,GAAQstgB,EAAiBH,GAAat3hB,SAAS,IAC9D+0D,EAASwie,GAAgBE,IAG3B7oZ,GAAS6oZ,EACX,EACIC,GAAqB,SAA4BjyZ,GACnD,IAAKxtE,EAAU,CACb,IAAI0uE,EAAa,EACbwvZ,EAAYnB,GAAYD,GAC5BzpX,GAAU3qK,SAAQ,SAAU/C,EAAK2C,GAC/B,IAAIoqB,EAAOnY,KAAKoG,IAAI6sH,EAAW7nI,GAC3B+sB,GAAQwrgB,IACVA,EAAYxrgB,EACZg8G,EAAapmI,EAEjB,IAEA,IAAIk3hB,GAAkB,OAAmBnsX,IACzCmsX,EAAgB9wZ,GAAclB,EAE1BvlF,IAAUorH,GAAUlyK,aAAoB41B,IAAV3F,GAChCougB,EAAgB3+hB,KAAK2sI,GAEvBwuZ,SAAgEA,EAAesD,GAAgBE,IAC/FnlX,GAAcmlX,GACdvD,SAA8DA,EAAcqD,GAAgBE,GAC9F,CACF,EA+BI1yd,GAAkB,WAAe,MACnCC,IAAmB,QAAeD,GAAiB,GACnD4yd,GAAgB3yd,GAAiB,GACjC4yd,GAAmB5yd,GAAiB,GAUtC,aAAgB,WACd,GAAsB,OAAlB2yd,GAAwB,CAC1B,IAAIhxZ,EAAa2kC,GAAU7/J,QAAQkshB,IAC/BhxZ,GAAc,GAChB+rZ,GAAW1yhB,QAAQs1D,MAAMqxE,EAE7B,CACAixZ,GAAiB,KACnB,GAAG,CAACD,KAEJ,IAAIE,GAAuB,WAAc,WACvC,QAAItD,GAAiC,OAAfU,KAMfV,CACT,GAAG,CAACA,EAAgBU,KAIhB6C,GP1PS,SAAiBlvd,EAAcv1C,EAAWi4I,EAAW74J,EAAKC,EAAKwkM,EAAa5kC,EAAeylX,EAAcd,GACtH,IAAIlyd,EAAkB,WAAe,MACnCC,GAAmB,QAAeD,EAAiB,GACnDizd,EAAgBhzd,EAAiB,GACjCizd,EAAmBjzd,EAAiB,GAClCE,EAAmB,YAAgB,GACrCC,GAAmB,QAAeD,EAAkB,GACpDutd,EAAgBttd,EAAiB,GACjC+yd,EAAmB/yd,EAAiB,GAClCG,EAAmB,WAAegmG,GACpC/lG,GAAmB,QAAeD,EAAkB,GACpD6yd,EAAc5yd,EAAiB,GAC/B6yd,EAAiB7yd,EAAiB,GAChCE,EAAmB,WAAe6lG,GACpC5lG,GAAmB,QAAeD,EAAkB,GACpD6rZ,EAAe5rZ,EAAiB,GAChC2yd,EAAkB3yd,EAAiB,GACjC4yd,EAAoB,SAAa,MACjCC,EAAkB,SAAa,MACnC,aAAgB,YACS,IAAnB9F,GACF2F,EAAe9sX,EAEnB,GAAG,CAACA,EAAWmnX,IAEf,aAAgB,WACd,OAAO,WACLvvhB,SAASE,oBAAoB,YAAak1hB,EAAkBt4hB,SAC5DkD,SAASE,oBAAoB,UAAWm1hB,EAAgBv4hB,SACxDkD,SAASE,oBAAoB,YAAak1hB,EAAkBt4hB,SAC5DkD,SAASE,oBAAoB,WAAYm1hB,EAAgBv4hB,QAC3D,CACF,GAAG,IACH,IAAIw4hB,EAAc,SAAqBxkX,EAAYxyC,GAE7C22Z,EAAYlle,MAAK,SAAUr1D,EAAKnE,GAClC,OAAOmE,IAAQo2K,EAAWv6K,EAC5B,WACoBu1B,IAAdwyG,GACFy2Z,EAAiBz2Z,GAEnB42Z,EAAepkX,GACf1B,EAAc0B,GAElB,EACIykX,EAAmB,SAA0B9xZ,EAAYghS,GAE3D,IAAoB,IAAhBhhS,EAAmB,CAErB,IAAIysZ,EAAa9hE,EAAa,GAC1B+hE,EAAW/hE,EAAaA,EAAal4d,OAAS,GAC9Cs/hB,EAAiBjmhB,EAAM2ghB,EACvBuF,EAAejmhB,EAAM2ghB,EAErB33c,EAASisV,GAAiBj1Z,EAAMD,GACpCipE,EAASlpE,KAAKE,IAAIgpE,EAAQg9c,GAC1Bh9c,EAASlpE,KAAKC,IAAIipE,EAAQi9c,GAE1B,IAAIC,EAAmB1hV,EAAYk8U,EAAa13c,GAChDA,EAASk9c,EAAmBxF,EAC5B,IAAIyF,EAAmBvnE,EAAa/nc,KAAI,SAAU3rB,GAChD,OAAOA,EAAM89E,CACf,IACA88c,EAAYK,EACd,KAAO,CAEL,IAAIC,GAAcpmhB,EAAMD,GAAOk1Z,EAE3B/zP,GAAc,OAAmBukX,GACrCvkX,EAAYjtC,GAAc2qV,EAAa3qV,GACvC,IAAI74G,EAAOmpgB,EAAarjX,EAAaklX,EAAYnyZ,EAAY,QAC7D6xZ,EAAY1qgB,EAAKiL,OAAQjL,EAAKpzB,MAChC,CACF,EAEIq+hB,EAAsB,SAAaN,GACvCM,EAAoB/4hB,QAAUy4hB,EAC9B,IAwDIhmX,EAAe,WAAc,WAC/B,IAAIumX,GAAe,OAAmB1tX,GAAWxgK,MAAK,SAAU4L,EAAG8E,GACjE,OAAO9E,EAAI8E,CACb,IACI4sf,GAAe,OAAmB+vB,GAAarthB,MAAK,SAAU4L,EAAG8E,GACnE,OAAO9E,EAAI8E,CACb,IACA,OAAOw9gB,EAAaj4Z,OAAM,SAAUnjI,EAAK2C,GACvC,OAAO3C,IAAQwqgB,EAAa7ngB,EAC9B,IAAK43hB,EAAc7sX,CACrB,GAAG,CAACA,EAAW6sX,IACf,MAAO,CAAC1F,EAAeuF,EAAevlX,EAnEpB,SAAqBh2K,EAAGkqI,GACxClqI,EAAEye,kBACF,IAAI7R,EAAciiK,EAAU3kC,GAC5BuxZ,EAAiBvxZ,GACjBsxZ,EAAiB5uhB,GACjBgvhB,EAAgB/sX,GAChB,IAAI2tX,EAAerG,IAAYn2hB,GAC7BgrS,EAASwxP,EAAa1kZ,MACtBmzJ,EAASuxP,EAAazkZ,MAEpB70C,EAAc,SAAqBr8F,GACrCA,EAAM0B,iBACN,IAQIk0hB,EARAC,EAAgBvG,IAAYtvhB,GAC9B81hB,EAAQD,EAAc5kZ,MACtB8kZ,EAAQF,EAAc3kZ,MACpB1tI,EAAUsyhB,EAAQ3xP,EAClBzgS,EAAUqyhB,EAAQ3xP,EAClBnpI,EAAwB31F,EAAa5oE,QAAQsH,wBAC/ChB,EAAQi4J,EAAsBj4J,MAC9BC,EAASg4J,EAAsBh4J,OAEjC,OAAQ8sB,GACN,IAAK,MACH6lgB,GAAiBlyhB,EAAUT,EAC3B,MACF,IAAK,MACH2yhB,EAAgBlyhB,EAAUT,EAC1B,MACF,IAAK,MACH2yhB,GAAiBpyhB,EAAUR,EAC3B,MACF,QACE4yhB,EAAgBpyhB,EAAUR,EAE9ByyhB,EAAoB/4hB,QAAQ2mI,EAAYuyZ,EAC1C,EAEIjna,EAAY,SAASA,EAAU3uH,GACjCA,EAAM0B,iBACN9B,SAASE,oBAAoB,UAAW6uH,GACxC/uH,SAASE,oBAAoB,YAAau8F,GAC1Cz8F,SAASE,oBAAoB,WAAY6uH,GACzC/uH,SAASE,oBAAoB,YAAau8F,GAC1C24b,EAAkBt4hB,QAAU,KAC5Bu4hB,EAAgBv4hB,QAAU,KAC1Bk4hB,GAAkB,GAClBH,GACF,EACA70hB,SAASD,iBAAiB,UAAWgvH,GACrC/uH,SAASD,iBAAiB,YAAa08F,GACvCz8F,SAASD,iBAAiB,WAAYgvH,GACtC/uH,SAASD,iBAAiB,YAAa08F,GACvC24b,EAAkBt4hB,QAAU2/F,EAC5B44b,EAAgBv4hB,QAAUiyH,CAC5B,EAcF,COyGiBqna,CAAQ1wd,GAAcv1C,GAAWi4I,GAAWypX,GAAWC,GAAW99U,GAAa5kC,IAH3E,WACjB4hX,SAA8DA,EAAcqD,GAAgBD,GAAat3hB,SAC3G,GAC2Hi3hB,IACzHsC,IAAY,QAAezB,GAAU,GACrCrF,GAAgB8G,GAAU,GAC1BvB,GAAgBuB,GAAU,GAC1BpB,GAAcoB,GAAU,GACxBC,GAAcD,GAAU,GACtBl3X,GAAc,SAAqB5lK,EAAGkqI,GACxC6yZ,GAAY/8hB,EAAGkqI,GACfstZ,SAAgEA,EAAesD,GAAgBD,GAAat3hB,SAC9G,EAEIgC,IAA8B,IAAnBywhB,GACf,aAAgB,WACd,IAAKzwhB,GAAU,CACb,IAAI2kI,EAAa2kC,GAAU4gD,YAAY8rU,IACvCtF,GAAW1yhB,QAAQs1D,MAAMqxE,EAC3B,CACF,GAAG,CAAC3kI,KAEJ,IAAIy3hB,GAAoB,WAAc,WACpC,OAAO,OAAmBtB,IAAarthB,MAAK,SAAU4L,EAAG8E,GACvD,OAAO9E,EAAI8E,CACb,GACF,GAAG,CAAC28gB,KAGAxwX,GAAiB,WAAc,WAC/B,OAAKznH,EAGE,CAACu5e,GAAkB,GAAIA,GAAkBA,GAAkBrgiB,OAAS,IAFlE,CAAC27hB,GAAW0E,GAAkB,GAGzC,GAAG,CAACA,GAAmBv5e,EAAO60e,KAC9B56V,IAAkB,QAAexyB,GAAgB,GACjD6pX,GAAgBr3V,GAAgB,GAChCs3V,GAAct3V,GAAgB,GAEhC,sBAA0BxvI,GAAK,WAC7B,MAAO,CACL2K,MAAO,WACLo9d,GAAW1yhB,QAAQs1D,MAAM,EAC3B,EACAE,KAAM,WACJ,IACE88D,EADcpvH,SACYovH,cACxB1pD,GAAa5oE,QAAQ8nE,SAASwqD,KAChCA,SAA8DA,EAAc98D,OAEhF,EAEJ,IAEA,aAAgB,WACVq7D,GACF6ha,GAAW1yhB,QAAQs1D,MAAM,EAE7B,GAAG,IAEH,IAAI5pC,GAAU,WAAc,WAC1B,MAAO,CACLjZ,IAAKsihB,GACLrihB,IAAKsihB,GACL3hgB,UAAWA,GACX4kC,SAAUA,EACVu7D,SAAUA,EACVxzE,KAAMi1e,GACN/B,SAAUA,EACV1B,cAAeA,GACfC,YAAaA,GACbvxe,MAAOA,EACPyY,SAAUA,EACVo5d,mBAAoBA,EACpBC,wBAAyBA,EACzBC,gCAAiCA,EAErC,GAAG,CAAC8C,GAAWC,GAAW3hgB,GAAW4kC,EAAUu7D,EAAUyha,GAAY/B,EAAU1B,GAAeC,GAAavxe,EAAOyY,EAAUo5d,EAAoBC,EAAyBC,IAEzK,OAAoB,gBAAoB,IAAc14d,SAAU,CAC9D7+D,MAAOgxB,IACO,gBAAoB,MAAO,CACzCi/B,IAAKie,GACLz8D,UAAW,IAAW6rD,EAAW7rD,GAAYyrD,EAAc,CAAC,GAAG,OAAgBA,EAAa,GAAG9rD,OAAOksD,EAAW,aAAcC,IAAW,OAAgBL,EAAa,GAAG9rD,OAAOksD,EAAW,aAAcg4H,IAAW,OAAgBp4H,EAAa,GAAG9rD,OAAOksD,EAAW,gBAAiBg4H,IAAW,OAAgBp4H,EAAa,GAAG9rD,OAAOksD,EAAW,eAAgBm9d,GAAS/7hB,QAASw+D,IACvXvzD,MAAOA,EACP2tH,YAlJsB,SAA2Bv1H,GACjDA,EAAEuI,iBACF,IASIssD,EATAitG,EAAwB31F,GAAa5oE,QAAQsH,wBAC/ChB,EAAQi4J,EAAsBj4J,MAC9BC,EAASg4J,EAAsBh4J,OAC/BgB,EAAOg3J,EAAsBh3J,KAC7BC,EAAM+2J,EAAsB/2J,IAC5Bw0E,EAASuiF,EAAsBviF,OAC/B9wE,EAAQqzJ,EAAsBrzJ,MAC5BxH,EAAUjH,EAAEiH,QACdC,EAAUlH,EAAEkH,QAEd,OAAQ0vB,IACN,IAAK,MACHi+B,GAAW0qB,EAASr4E,GAAW4C,EAC/B,MACF,IAAK,MACH+qD,GAAW3tD,EAAU6D,GAAOjB,EAC5B,MACF,IAAK,MACH+qD,GAAWpmD,EAAQxH,GAAW4C,EAC9B,MACF,QACEgrD,GAAW5tD,EAAU6D,GAAQjB,EAGjCoxhB,GAAmBxgV,GADH69U,GAAYzje,GAAW0je,GAAYD,KAErD,GAwHgB,gBAAoB,MAAO,CACzC5ohB,UAAW,GAAGL,OAAOksD,EAAW,SAChC3zD,MAAOswhB,IACQ,gBAAoB1B,IAAQ,CAC3Cj7d,UAAWA,EACX3zD,MAAOowhB,EACP17f,OAAQ0ggB,GACR/jgB,WAAYA,EACZ2sI,YAAaw1X,GAAuBx1X,GAAc,OACnC,gBAAoB,IAAO,CAC1CrqG,UAAWA,EACX8vM,MAAOqtR,GACPr2gB,KAAMA,EACNza,MAAOuwhB,EACPnld,YAAaold,IACE,gBAAoB,IAAS,CAC5Clqe,IAAK+ne,GACL16d,UAAWA,EACX3zD,MAAOqwhB,EACP37f,OAAQo/f,GACR1F,cAAeA,GACfpwX,YAAaA,GACbyvX,eAxIyB,SAA8Bp2c,EAAQirD,GAC/D,IAAK1uE,EAAU,CACb,IAAInqC,EAAOmpgB,GAAa3rX,GAAW5vF,EAAQirD,GAC3CstZ,SAAgEA,EAAesD,GAAgBjsX,KAC/FgH,GAAcxkJ,EAAKiL,QACnBm7f,SAA8DA,EAAcqD,GAAgBzpgB,EAAKiL,SACjG6+f,GAAiB9pgB,EAAKpzB,MACxB,CACF,EAiIEu6J,QAASA,EACTnP,OAAQA,EACR0sY,aAAcA,IACC,gBAAoB,IAAO,CAC1Cx6d,UAAWA,EACX8vM,MAAOqtR,GACP//d,QAASsie,MAEb,IAIA,IEzXA,IFyXA,IGrXIgC,IAA6B,cAAiB,SAAU9phB,EAAO+6C,GACjE,IAAI0H,EAAOziD,EAAMyiD,KACbsne,GAAW,IAAA9wd,QAAO,MAClBmmH,GAAS,IAAAnmH,QAAO,MACpB,SAAS+wd,IACPjyd,GAAA,EAAI3pC,OAAOgxJ,EAAOhvL,SAClBgvL,EAAOhvL,QAAU,IACnB,CAgBA,OARA,aAAgB,WAMd,OALIqyD,EAPJ28H,EAAOhvL,SAAU,EAAA2nE,GAAA,IAAI,WACnB,IAAIjuE,EACwB,QAA3BA,EAAKigiB,EAAS35hB,eAA4B,IAAPtG,GAAyBA,EAAGmkG,aAChEmxF,EAAOhvL,QAAU,IACnB,IAME45hB,IAEKA,CACT,GAAG,CAACvne,EAAMziD,EAAM06C,QACI,gBAAoB,GAASv6C,OAAO89B,OAAO,CAC7D8c,KAAK,SAAWgve,EAAUhve,IACzB/6C,GACL,IAIA,YC9BI,IAAe,SAAsB+yD,GACvC,IAAIk3d,EAAQljb,EAAUvkC,EAAWy1B,EAC7BjlC,EAAeD,EAAMC,aACvBokC,EAASrkC,EAAMqkC,OACf8yb,EAAcn3d,EAAMm3d,YACpBC,EAAUp3d,EAAMo3d,QAChBC,EAAar3d,EAAMq3d,WACnBC,EAAat3d,EAAMs3d,WACnB9nZ,EAAwBxvE,EAAMwvE,sBAChC,OAAO,OAAgB,CAAC,EAAGvvE,EAAc7yD,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,GAAG,SAAe80B,KAAUklC,EAAiB,CACjHnkD,SAAU,WACVn9C,OAAQuzhB,EACR/2b,OAAQ,GAAGj3F,OAAOmuhB,EAAY,OAAOnuhB,OAAOkuhB,EAAY,MACxDrnd,QAAS,EACTruE,OAAQ,UACR0qE,YAAa,SACZ,OAAgB64B,EAAgB,aAAc,CAC/C9E,OAAQ,GAAGj3F,OAAOkuhB,EAAY,OAAOluhB,OAAOmuhB,EAAY,SACtD,OAAgBpyb,EAAgB,GAAG/7F,OAAO82D,EAAc,SAAU,CACpElf,SAAU,WACVmjB,gBAAiBlE,EAAMu3d,OACvB90d,aAAczC,EAAMshC,eACpBhhC,WAAY,oBAAoBn3D,OAAO62D,EAAMmM,sBAC3C,OAAgB+4B,EAAgB,GAAG/7F,OAAO82D,EAAc,UAAW,CACrElf,SAAU,WACVmjB,gBAAiBlE,EAAMw3d,QACvB/0d,aAAczC,EAAMshC,eACpBhhC,WAAY,oBAAoBn3D,OAAO62D,EAAMmM,sBAC3C,OAAgB+4B,EAAgB,WAAYgyb,EAAS,CAAC,GAAG,OAAgBA,EAAQ,GAAG/thB,OAAO82D,EAAc,SAAU,CACrHiE,gBAAiBlE,EAAMy3d,eACrB,OAAgBP,EAAQ,GAAG/thB,OAAO82D,EAAc,UAAW,CAC7DiE,gBAAiBlE,EAAM03d,gBACrB,OAAgBR,EAAQ,GAAG/thB,OAAO82D,EAAc,QAAS,CAC3DgE,YAAaurE,KACX,OAAgB0nZ,EAAQ,GAAG/thB,OAAO82D,EAAc,kBAAmB,CACrEI,UAAW,SAASl3D,OAAO62D,EAAM23d,gBAAiB,OAAOxuhB,OAAO62D,EAAM43d,4BACpE,OAAgBV,EAAQ,GAAG/thB,OAAO82D,EAAc,eAAgB,CAClEgE,YAAajE,EAAM63d,uBACjBX,KAAU,OAAgBhyb,EAAgB,GAAG/7F,OAAO82D,EAAc,YAAa+zC,EAAW,CAC5FjzD,SAAU,WACVp9C,MAAOq8D,EAAM83d,WACbl0hB,OAAQo8D,EAAM83d,WACdhsd,QAAS,SACR,OAAgBkoC,EAAU,GAAG7qG,OAAO82D,EAAc,aAAc,CACjE51D,OAAQ,KACN,OAAgB2pG,EAAU,YAAa,CACzCtnC,QAAS,KACT3rB,SAAU,WACV0rB,kBAAmBzM,EAAM23d,gBACzB7qb,iBAAkB9sC,EAAM23d,gBACxBh0hB,MAAOq8D,EAAM83d,WAAqC,EAAxB93d,EAAM23d,gBAChC/zhB,OAAQo8D,EAAM83d,WAAqC,EAAxB93d,EAAM23d,gBACjCzzd,gBAAiB,iBACf,OAAgB8vC,EAAU,WAAY,CACxCtnC,QAAS,KACT3rB,SAAU,WACV+rD,gBAAiB,EACjBrgC,iBAAkB,EAClB9oE,MAAOq8D,EAAM83d,WACbl0hB,OAAQo8D,EAAM83d,WACd5zd,gBAAiBlE,EAAMgmD,gBACvB3lD,UAAW,SAASl3D,OAAO62D,EAAM23d,gBAAiB,OAAOxuhB,OAAO62D,EAAM+3d,aACtEt1d,aAAc,MACd9gE,OAAQ,UACR2+D,WAAY,oCAAoCn3D,OAAO62D,EAAMmM,kBAAmB,qCAAqChjE,OAAO62D,EAAMmM,kBAAmB,yBAAyBhjE,OAAO62D,EAAMmM,kBAAmB,0BAA0BhjE,OAAO62D,EAAMmM,kBAAmB,8BAA8BhjE,OAAO62D,EAAMmM,kBAAmB,mBACpU,OAAgB6nC,EAAU,6BAA8B,CAC1D,YAAa,CACXvnC,oBAAqBzM,EAAMg4d,gBAAkBh4d,EAAM83d,YAAc,EAAI93d,EAAMi4d,sBAC3Enrb,mBAAoB9sC,EAAMg4d,gBAAkBh4d,EAAM83d,YAAc,EAAI93d,EAAMi4d,sBAC1Et0hB,MAAOq8D,EAAMg4d,gBAA+C,EAA7Bh4d,EAAMi4d,qBACrCr0hB,OAAQo8D,EAAMg4d,gBAA+C,EAA7Bh4d,EAAMi4d,sBAExC,WAAY,CACV53d,UAAW,SAASl3D,OAAO62D,EAAMi4d,qBAAsB,OAAO9uhB,OAAO62D,EAAMk4d,mBAC3Ev0hB,MAAOq8D,EAAMg4d,gBACbp0hB,OAAQo8D,EAAMg4d,gBACdvrd,kBAAmBzM,EAAM83d,WAAa93d,EAAMg4d,iBAAmB,EAC/Dlrb,iBAAkB9sC,EAAM83d,WAAa93d,EAAMg4d,iBAAmB,KAE9Dhkb,KAAY,OAAgB9O,EAAgB,GAAG/7F,OAAO82D,EAAc,SAAU,CAChFlf,SAAU,WACVrqC,SAAUspD,EAAMtpD,YACd,OAAgBwuF,EAAgB,GAAG/7F,OAAO82D,EAAc,cAAe,CACzElf,SAAU,WACVE,QAAS,eACTtX,MAAOq2B,EAAM4zC,qBACb/8F,UAAW,SACXo2F,UAAW,WACXtrG,OAAQ,UACRyqE,WAAY,OACZ,WAAY,CACVziC,MAAOq2B,EAAMsM,cAEb,OAAgB44B,EAAgB,GAAG/7F,OAAO82D,EAAc,SAAU,CACpElf,SAAU,WACVof,WAAY,cACZhf,cAAe,UACb,OAAgB+jD,EAAgB,GAAG/7F,OAAO82D,EAAc,QAAS,CACnElf,SAAU,WACVp9C,MAAOyzhB,EACPxzhB,OAAQwzhB,EACRlzd,gBAAiBlE,EAAMgmD,gBACvB/5C,OAAQ,GAAG9iE,OAAO62D,EAAM23d,gBAAiB,aAAaxuhB,OAAO62D,EAAMm4d,gBACnE11d,aAAc,MACd9gE,OAAQ,UACR2+D,WAAY,gBAAgBn3D,OAAO62D,EAAMmQ,oBACzChvB,cAAe,OACf,WAAY,CACV8iB,YAAajE,EAAM63d,yBAEnB,OAAgB3yb,EAAgB,IAAI/7F,OAAO82D,EAAc,cAAewP,EAAY,CACtF9tE,OAAQ,gBACP,OAAgB8tE,EAAW,GAAGtmE,OAAO82D,EAAc,SAAU,CAC9DiE,gBAAiB,GAAG/6D,OAAO62D,EAAMu3d,OAAQ,kBACvC,OAAgB9nd,EAAW,GAAGtmE,OAAO82D,EAAc,UAAW,CAChEiE,gBAAiB,GAAG/6D,OAAO62D,EAAMo4d,gBAAiB,kBAChD,OAAgB3od,EAAW,eAAetmE,OAAO82D,EAAc,kBAAmB,CACpFiE,gBAAiBlE,EAAMgmD,gBACvB/hD,YAAajE,EAAMo4d,gBACnB/3d,UAAW,OACX1+D,OAAQ,iBACN,OAAgB8tE,EAAW,GAAGtmE,OAAO82D,EAAc,kBAAmB,CACxEiE,gBAAiBlE,EAAMgmD,gBACvBrkH,OAAQ,cACRgC,MAAOq8D,EAAM83d,WACbl0hB,OAAQo8D,EAAM83d,WACdz3d,UAAW,SAASl3D,OAAO62D,EAAM23d,gBAAiB,OAAOxuhB,OAAO,IAAI,KAAU62D,EAAM2N,mBAAmB0uE,aAAar8E,EAAMiO,kBAAkBquE,oBAC5I7vE,iBAAkB,EAClBqgC,gBAAiB,KACf,OAAgBr9B,EAAW,eAAetmE,OAAO82D,EAAc,2BAA2B92D,OAAO82D,EAAc,kBAAmB,CACpIt+D,OAAQ,2BACN8tE,KAAa,OAAgBy1B,EAAgB,aAAa/7F,OAAOk7F,EAAQ,kBAAmB,CAC9Fr3B,SAAU,UACRk4B,IACN,EAEImzb,IAAoB,SAA2Br4d,EAAOotH,GACxD,IAAIl4E,EAAWM,EAAWmlE,EAAW/mH,EACjCqM,EAAeD,EAAMC,aACvBq4d,EAAWt4d,EAAMs4d,SACjBR,EAAa93d,EAAM83d,WACnBV,EAAUp3d,EAAMo3d,QACdmB,EAAcnrW,EAAa,eAAiB,gBAC5CorW,EAAOprW,EAAa,QAAU,SAC9B8jJ,EAAO9jJ,EAAa,SAAW,QAC/BqrW,EAAYrrW,EAAa,kBAAoB,mBAC7CsrW,EAAYtrW,EAAa,MAAQ,mBACrC,OAAOx5H,EAAQ,CAAC,GAAG,OAAgBA,EAAO2ke,EAAaD,IAAW,OAAgB1ke,EAAOs9Q,EAAiB,EAAXonN,IAAe,OAAgB1ke,EAAO,GAAGzqD,OAAO82D,EAAc,UAAWi1C,EAAY,CAAC,GAAG,OAAgBA,EAAWsjb,EAAM,SAAS,OAAgBtjb,EAAWg8N,EAAMonN,GAAWpjb,KAAa,OAAgBthD,EAAO,GAAGzqD,OAAO82D,EAAc,WAAW,OAAgB,CAAC,EAAGixQ,EAAMonN,KAAY,OAAgB1ke,EAAO,GAAGzqD,OAAO82D,EAAc,YAAY,OAAgB,CAAC,EAAGw4d,GAAuB,EAAXH,EAAeR,GAAc,KAAK,OAAgBlke,EAAO,GAAGzqD,OAAO82D,EAAc,UAAWu1C,EAAY,CAE5jB/oC,iBAAkB,EAClB5nE,IAAK,IACJ,OAAgB2wG,EAAWkjb,EAAsB,EAAXJ,GAAgBlrW,EAAa,EAAIptH,EAAMq3d,cAAc,OAAgB7hb,EAAWgjb,EAAM,QAAShjb,KAAa,OAAgB5hD,EAAO,GAAGzqD,OAAO82D,EAAc,UAAW06G,EAAY,CAEzNluG,iBAAkB,EAClB5nE,IAAK,IACJ,OAAgB81K,EAAW+9W,EAAWJ,IAAW,OAAgB39W,EAAW69W,EAAM,SAAS,OAAgB79W,EAAWu2J,EAAMonN,GAAW39W,KAAa,OAAgB/mH,EAAO,GAAGzqD,OAAO82D,EAAc,SAAS,OAAgB,CAC7Nlf,SAAU,YACT03e,GAAYH,EAAWlB,GAAW,IAAKxje,CAC5C,EAEI+ke,IAAqB,SAA4B34d,GACnD,IAAIC,EAAeD,EAAMC,aACvB24d,EAAqB54d,EAAM44d,mBAC7B,OAAO,OAAgB,CAAC,EAAG,GAAGzvhB,OAAO82D,EAAc,eAAgB7yD,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGmtf,IAAkBr4d,GAAO,KAAQ,OAAgB,CAAC,EAAG,IAAI72D,OAAO82D,EAAc,eAAgB,CAC/LgL,aAAc2td,KAElB,EAEIC,IAAmB,SAA0B74d,GAC/C,IAAIC,EAAeD,EAAMC,aACzB,OAAO,OAAgB,CAAC,EAAG,GAAG92D,OAAO82D,EAAc,aAAc7yD,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGmtf,IAAkBr4d,GAAO,IAAS,CACjIp8D,OAAQ,SAEZ,EAEA,KAAe,EAAA68D,GAAA,GAAsB,UAAU,SAAUT,GACvD,IAAI84d,GAAc,SAAW94d,EAAO,CAClCs3d,YAAat3d,EAAMiN,cAAgBjN,EAAMm3d,aAAe,EACxDE,WAAYr3d,EAAMm3d,YAAc,EAChCyB,mBAAoB54d,EAAM6Q,gBAAkB7Q,EAAMm3d,cAEpD,MAAO,CAAC,IAAa2B,GAAcH,IAAmBG,GAAcD,IAAiBC,GACvF,IAAG,SAAU94d,GAEX,IACIm3d,EAAcn3d,EAAM6Q,gBAAkB,EAI1C,MAAO,CACLsmd,YAAaA,EACbmB,SAAU,EACVR,WAAYX,EACZa,gBAPqBh4d,EAAMuQ,gBAAkB,EAQ7C6md,QAAS,EACTO,gBARoB33d,EAAM3qD,UAHF,EAYxB4ihB,qBARyBj4d,EAAM3qD,UAAY0jhB,EAS3CxB,OAAQv3d,EAAMk8E,kBACdu7Y,YAAaz3d,EAAMkuC,mBACnBspb,QAASx3d,EAAMg5d,mBACftB,aAAc13d,EAAM43d,wBACpBG,YAAa/3d,EAAMg5d,mBACnBd,kBAAmBl4d,EAAME,aACzBi4d,eAAgBn4d,EAAMilI,qBACtB4yV,qBAAsB73d,EAAMg5d,mBAC5BZ,gBAAiBp4d,EAAM4N,yBAE3B,IChNI,IAAgC,SAAUl6D,EAAG5Z,GAC/C,IAAIH,EAAI,CAAC,EACT,IAAK,IAAIqa,KAAKN,EAAOtG,OAAOtX,UAAUqX,eAAe3V,KAAKkc,EAAGM,IAAMla,EAAEgP,QAAQkL,GAAK,IAAGra,EAAEqa,GAAKN,EAAEM,IAC9F,GAAS,MAALN,GAAqD,mBAAjCtG,OAAO+wB,sBAA2C,KAAIrnC,EAAI,EAAb,IAAgBkd,EAAI5G,OAAO+wB,sBAAsBzqB,GAAI5c,EAAIkd,EAAEvd,OAAQK,IAClIgD,EAAEgP,QAAQkL,EAAEld,IAAM,GAAKsW,OAAOtX,UAAUgsD,qBAAqBtqD,KAAKkc,EAAGM,EAAEld,MAAK6C,EAAEqa,EAAEld,IAAM4c,EAAEM,EAAEld,IADuB,CAGvH,OAAO6C,CACT,EASI,IAAmB,SAA0BsB,GAC/C,MAAsB,iBAARA,EAAmBA,EAAIud,WAAa,EACpD,EACI,IAAsB,cAAiB,SAAUvL,EAAO+6C,GAC1D,IAAIkhB,EAAqBj8D,EAAMooD,UAC7B9X,EAAQtwC,EAAMswC,MACd/zC,EAAYyD,EAAMzD,UAClBooE,EAAgB3kE,EAAM2kE,cACtBlwE,EAAQuL,EAAMvL,MACd4zD,EAAWroD,EAAMqoD,SACjB2je,EAAyBhshB,EAAMishB,iBAC/BC,EAAqBlshB,EAAMmshB,aAC3BC,EAAuBpshB,EAAMqshB,eAC7BC,EAAiCtshB,EAAMushB,yBACvCC,EAAyBxshB,EAAMyshB,iBAC/B5/c,EAAY,IAAO7sE,EAAO,CAAC,YAAa,QAAS,YAAa,gBAAiB,QAAS,WAAY,mBAAoB,eAAgB,iBAAkB,2BAA4B,qBACpLg8D,EAAoB,aAAiB,OACvCv4C,EAAYu4C,EAAkBv4C,UAC9BmuF,EAAS51C,EAAkB41C,OAC3B94C,EAAekD,EAAkBlD,aACjCylB,EAAoBviB,EAAkBuiB,kBACpCslG,EAAkB,aAAiB,IACnCl+G,EAAiBtd,QAA2CA,EAAWw7H,EACvE1uH,EAAkB,WAAe,CAAC,GACpCC,GAAmB,OAAeD,EAAiB,GACnDu3d,EAAQt3d,EAAiB,GACzBu3d,EAAWv3d,EAAiB,GAC1Bw3d,EAAoB,SAA2Bj8hB,EAAO8xD,GACxDkqe,GAAS,SAAU1ugB,GACjB,OAAO9d,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGhgB,IAAO,OAAgB,CAAC,EAAGttB,EAAO8xD,GAC3E,GACF,EACIoqe,EAAsB,SAA6Brnc,EAAW46F,GAChE,OAAI56F,IAGC46F,EAGgB,QAAd38J,EAAsB,OAAS,QAF7B,MAGX,EACI2kC,EAAY0Q,EAAa,SAAUmD,GACnC/C,EAAY,IAAS9Q,GACvBqd,GAAa,OAAevM,EAAW,GACvCwM,EAAUD,EAAW,GACrBtM,EAASsM,EAAW,GAClB/c,EAAM,IAAWnsD,EAAWq1G,aAAuC,EAASA,EAAOr1G,UAAWooE,GAAe,OAAgB,CAAC,EAAG,GAAGzoE,OAAOksD,EAAW,QAAuB,QAAd3kC,GAAsB01C,GAEvK,QAAd11C,GAAwBopD,EAAUuzG,WACpCvzG,EAAUtzD,SAAWszD,EAAUtzD,SAGjC,IAAIw+I,EAAiB,WAAc,WAC/B,OAAKznH,EAGmB,iBAAVA,EAAqB,EAAC,EAAMA,EAAMq0e,gBAAkB,EAAC,GAAM,GAFhE,EAAC,EAGZ,GAAG,CAACr0e,IACJi6I,GAAkB,OAAexyB,EAAgB,GACjD+0X,EAAcviW,EAAgB,GAC9Bo6V,EAAiBp6V,EAAgB,GAUnC,IA0CIj+E,EAAcnsG,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAG2zE,aAAuC,EAASA,EAAOn9G,OAAQA,GACjH,OAAOixE,EAAsB,gBAAoB,IAAUvlE,OAAO89B,OAAO,CAAC,EAAG4uC,EAAW,CACtFz8B,KAAMy8B,EAAUz8B,KAChBE,MAAOw8e,EACPnI,eAAgBA,EAChBpohB,UAAWmsD,EACXj0D,MAAO63G,EACPjkD,SAAUsd,EACV5qB,IAAKA,EACLqN,UAAWA,EACXw6d,aApDiB,SAAsBv5e,EAAM2U,GAC7C,IAAIl0D,EAYAijiB,EAXAp8hB,EAAQqtD,EAAKrtD,MACfyB,EAAW4rD,EAAK5rD,SACd46hB,EAAiBhthB,EAAM0tP,QACzBA,OAA6B,IAAnBs/R,EAA4B,CAAC,EAAIA,EAC3C5sW,EAAWpgL,EAAMogL,SACf6sW,EAAe9shB,OAAO89B,OAAO,CAAC,EAAGyvN,GACjCw/R,EAAcD,EAAaxqe,KAC7Bgqe,EAAmBQ,EAAaznc,UAChC+mc,EAA2BU,EAAa1uc,kBACxC4uc,EAA4BF,EAAa7ke,UACzC+je,EAAec,EAAav6M,UAS1B06M,KANFL,EADEZ,GAAiC,OAAjBA,EACGA,EACZD,GAA6C,OAAvBA,EACVA,EAEA,OAEmBQ,EAAM/7hB,IAAUyB,GACtDqwD,EAAsG,QAA9F34D,EAAKojiB,QAAiDA,EAAcd,SAAyC,IAAPtiiB,EAAgBA,OAAqBs1B,IAAhB8tgB,GAA6BE,EAChK98b,EAAcnwF,OAAO89B,OAAO99B,OAAO89B,OAAO,CAAC,EAAGoL,EAAKrpC,OAAQ,CAC7DuoD,aAAc,WACZ,OAAOqke,EAAkBj8hB,GAAO,EAClC,EACA63D,aAAc,WACZ,OAAOoke,EAAkBj8hB,GAAO,EAClC,IAEEs7hB,EAAmBnzd,EAAa,UAAWq0d,QAA6EA,EAA4BnB,GACxJ,OAAoB,gBAAoB,IAAe7rhB,OAAO89B,OAAO,CAAC,EAAGgvf,EAAc,CACrF7ke,UAAW6je,EACXvxe,MAAOqye,EAAqBA,EAAmB/ue,EAAKlzD,OAAS,GAC7D23D,KAAMA,EACN+iC,UAAWqnc,EAAoBJ,QAA2DA,EAAmBD,EAAwBpsW,GACrI52J,IAAK74B,EACLygG,iBAAkB,GAAGl1F,OAAOksD,EAAW,YACvCm2B,kBAAmBguc,GAA4BD,GAAkC/tc,IAClE,eAAmBl1C,EAAMinD,GAC5C,KAaF,IAIA,ylBC1IA,IAiWA,IAjW8B,SAAH91C,GASpB,IAAD6ye,EAAAC,EARJn4b,EAAM36C,EAAN26C,OACAo4b,EAAM/ye,EAAN+ye,OAQAp4d,EAA4Cq0E,EAAAA,UAAe,GAApDgkZ,EAAcr4d,EAAA,GAAEs4d,EAAiBt4d,EAAA,GACxCC,EAAwCo0E,EAAAA,SAAoB,IAC5Dl0E,GADmBF,EAAA,GAAiBA,EAAA,GACYo0E,EAAAA,SAAuB,IAAhEkkZ,EAAgBp4d,EAAA,GAAEq4d,EAAmBr4d,EAAA,GAC5CC,EAA0Ci0E,EAAAA,SAAuB,GAA1DokZ,EAAar4d,EAAA,GAAEs4d,EAAgBt4d,EAAA,GAE9BwzE,EAA4B5zC,EAA5B4zC,UAAWE,EAAiB9zC,EAAjB8zC,aACbgC,EAAiBlC,EAAUkC,eAE3B6iZ,EAAY3thB,OAAOopB,KAAKgkgB,GAExBQ,EAAmBD,EAAUn0gB,KAAI,SAACq0gB,EAAkBr9hB,GACxD,MAAO,CAAE4kD,MAAOy4e,EAAUljiB,MAAOkjiB,EAAUxkgB,IAAK74B,EAClD,IAEMi1b,EAAa,SAAC2nG,GAClB,OACEA,aAAM,EAANA,EAAQA,OAAO5zgB,KAAI,SAACo0Q,EAAYp9R,GAC9B,IAAI/F,EAAOmjS,EAAMnjS,KASjB,OAPEmjS,GACAA,EAAMA,OACNA,EAAMA,MAAMjkP,YACZikP,EAAMA,MAAMjkP,WAAWikP,QAEvBnjS,EAAOmjS,EAAMA,MAAMjkP,WAAWikP,OAEzB,CACLx4O,MAAO3qD,EACPE,MAAOF,EACP4+B,IAAK74B,EAET,MAAM,EAEV,EACMs9hB,EAAgBroG,EAAW2nG,EAAOO,EAAUJ,KA+B5CQ,GAFqD,QADpCb,EACrBE,EAAOO,EAAUJ,IAAmBH,OAAOK,UAAc,IAAAP,GAAzDA,EAA2Dc,WAEtC,SAAHxne,GAMR,IALVjM,EAAKiM,EAALjM,MACAiV,EAAWhJ,EAAXgJ,YACA7kE,EAAK67D,EAAL77D,MACA8qI,EAAOjvE,EAAPivE,QACAr5H,EAASoqD,EAATpqD,UAEA,OACEitI,EAAAA,cAAA,OAAKjtI,UAAS,GAAKA,GACjBitI,EAAAA,cAAA,WACEA,EAAAA,cAAA,QAAMjtI,UAAU,6BAA6Bm+C,EAAM,KACnD8uF,EAAAA,cAAA,QAAMjtI,UAAU,+CACbzR,IAGL0+I,EAAAA,cAAA,OAAKjtI,UAAU,0BAAyB,IAAEozD,EAAY,KACrDimE,EAGP,GAEA,OACE4T,EAAAA,cAAA,OAAKjtI,UAAU,4BACbitI,EAAAA,cAACh7E,GAAK,CACJ93D,MAAO,IACPgkD,MACE8uF,EAAAA,cAAA,YACEA,EAAAA,cAAC4kZ,IAAuB,CAAC7xhB,UAAU,4CAA4C,uBAInFkmD,KAAM+qe,EACN1sZ,SAAU,WACR2sZ,GAAkB,EACpB,EACA5sZ,KAAM,WACJ4sZ,GAAkB,EACpB,GAEAjkZ,EAAAA,cAAA,OAAKjtI,UAAU,eACbitI,EAAAA,cAAA,OAAKjtI,UAAU,SACbitI,EAAAA,cAAC0kZ,EAAc,CACbxze,MAAM,iBACNiV,YAAY,8CACZ7kE,MAAOmgJ,EAAe+iZ,SACtBp4Z,QACE4T,EAAAA,cAACgM,GAAM,CACL6oB,cAAY,EACZ9hK,UAAU,cACVoxB,aAAc,CACZ4nB,MAAO01F,EAAe+iZ,SACtBljiB,MAAOmgJ,EAAe+iZ,UAAY,SAClCxkgB,IAAKskgB,EAAUjyhB,QAAQovI,EAAe+iZ,UAAY,WAEpD7oe,SAAU,SAACr6D,GAKTm+I,EAAYmC,IAAAA,IAAC,CAAC,EACTrC,GAAS,IACZkC,eAAcG,IAAAA,IAAA,GACTH,GAAc,IACjB+iZ,SAAUljiB,EAAMA,MAChBijS,MAAO63J,EAAW2nG,EAAOziiB,EAAMA,QAAQ,GAAGA,MAC1CqjiB,WAAY,UAGhBR,EAAoB7iiB,EAAM0+B,KAC1BmkG,QAAQtrF,IAAI,iBAAkBv3C,EAChC,EACAgjC,QAASiggB,MAIfvkZ,EAAAA,cAAC0kZ,EAAc,CACbxze,MAAM,QACNn+C,UAAU,OACVozD,YAAY,mCACZ7kE,MAAOmgJ,EAAe8iJ,MACtBn4J,QACE4T,EAAAA,cAACgM,GAAM,CACL6oB,cAAY,EACZ9hK,UAAU,cACVoxB,aAAc,CACZ4nB,MAAO01F,EAAe8iJ,MACtBjjS,MACEmgJ,EAAe8iJ,OACf63J,EAAW2nG,EAAOO,EAAUJ,KAAoB,GAAG5iiB,MACrD0+B,IAAKokgB,GAEPzoe,SAAU,SAACr6D,GAKTm+I,EAAYmC,IAAAA,IAAC,CAAC,EACTrC,GAAS,IACZkC,eAAcG,IAAAA,IAAA,GAAOH,GAAc,IAAE8iJ,MAAOjjS,EAAMA,WAEpD+iiB,EAAiB/iiB,EAAM0+B,IACzB,EACAsE,QAASmggB,OAKjBzkZ,EAAAA,cAAA,OAAKjtI,UAAU,SACbitI,EAAAA,cAAC0kZ,EAAc,CACbxze,MAAM,aACNiV,YAAY,wCACZ7kE,MAAOmgJ,EAAekjZ,WACtBv4Z,QACE4T,EAAAA,cAAC6xS,IAAM,CACLx4a,IAAK,IACLC,KAC2D,QAAzDwqhB,EAAAC,EAAOO,EAAUJ,IAAmBH,OAAOK,UAAc,IAAAN,OAAA,EAAzDA,EACIa,aAAc,KAEpBxggB,aAAcs9G,EAAekjZ,YAAc,EAC3C/9e,KAAM,GACNk0e,cAAe,SAACx5hB,GACdm+I,EAAYmC,IAAAA,IAAC,CAAC,EACTrC,GAAS,IACZkC,eAAcG,IAAAA,IAAA,GAAOH,GAAc,IAAEkjZ,WAAYrjiB,MAErD,MAKN0+I,EAAAA,cAAC0kZ,EAAc,CACbxze,MAAM,cACNiV,YAAY,oDACZ7kE,MAAOmgJ,EAAeqzY,YACtB1oZ,QACE4T,EAAAA,cAAC6xS,IAAM,CACLx4a,IAAK,EACLC,IAAK,EACL6qB,aAAcs9G,EAAeqzY,YAC7Blue,KAAM,GACNk0e,cAAe,SAACx5hB,GACdm+I,EAAYmC,IAAAA,IAAC,CAAC,EACTrC,GAAS,IACZkC,eAAcG,IAAAA,IAAA,GAAOH,GAAc,IAAEqzY,YAAaxzhB,MAEtD,MAKN0+I,EAAAA,cAAC0kZ,EAAc,CACbxze,MAAM,kBACNiV,YAAY,uCACZ7kE,MAAOmgJ,EAAe1zH,EACtBq+G,QACE4T,EAAAA,cAAC6xS,IAAM,CACLx4a,IAAK,EACLC,IAAK,GACL6qB,aAAcs9G,EAAe1zH,EAC7B64B,KAAM,EACNk0e,cAAe,SAACx5hB,GACdm+I,EAAYmC,IAAAA,IAAC,CAAC,EACTrC,GAAS,IACZkC,eAAcG,IAAAA,IAAA,GAAOH,GAAc,IAAE1zH,EAAGzsB,MAE5C,MAKN0+I,EAAAA,cAAC0kZ,EAAc,CACbxze,MAAM,mBACNiV,YAAY,gLACZ7kE,MAAOmgJ,EAAeojZ,iBACtBz4Z,QACE4T,EAAAA,cAAC6xS,IAAM,CACLx4a,KAAM,EACNC,IAAK,EACL6qB,aAAcs9G,EAAeojZ,iBAC7Bj+e,KAAM,GACNk0e,cAAe,SAACx5hB,GACdm+I,EAAYmC,IAAAA,IAAC,CAAC,EACTrC,GAAS,IACZkC,eAAcG,IAAAA,IAAA,GACTH,GAAc,IACjBojZ,iBAAkBvjiB,MAGxB,MAKN0+I,EAAAA,cAAC0kZ,EAAc,CACbxze,MAAM,oBACNiV,YAAY,gLACZ7kE,MAAOmgJ,EAAeqjZ,kBACtB14Z,QACE4T,EAAAA,cAAC6xS,IAAM,CACLx4a,KAAM,EACNC,IAAK,EACL6qB,aAAcs9G,EAAeqjZ,kBAC7Bl+e,KAAM,GACNk0e,cAAe,SAACx5hB,GACdm+I,EAAYmC,IAAAA,IAAC,CAAC,EACTrC,GAAS,IACZkC,eAAcG,IAAAA,IAAA,GACTH,GAAc,IACjBqjZ,kBAAmBxjiB,MAGzB,QAOV0+I,EAAAA,cAAA,KAAGjtI,UAAU,+BACV,IAAI,2CACoC,IACzCitI,EAAAA,cAAA,KACEjtI,UAAU,4CACVlL,OAAQ,SACRoyG,IAAK,sBACL,aAAW,kBACXx7B,KAAM,uDACP,QAEG,MAKRuhE,EAAAA,cAAA,OAAKjtI,UAAU,0CACZ,IACDitI,EAAAA,cAAA,OAAKjtI,UAAU,eACbitI,EAAAA,cAAA,OAAKjtI,UAAU,gBACZ,IAAI,0CAGPitI,EAAAA,cAACgM,GAAM,CACL7nH,aAAco7G,EAAUq9P,QACxB3xY,MAAO,CAAEiC,MAAO,KAChByuD,SAAU,SAACr6D,GACTm+I,EAAYmC,IAAAA,IAAC,CAAC,EAAIrC,GAAS,IAAEq9P,QAASt7Y,IACxC,EACAgjC,QAAS,CACP,CAAEynB,MAAO,SAAUzqD,MAAO,UAC1B,CAAEyqD,MAAO,aAAczqD,MAAO,cAC9B,CAAEyqD,MAAO,UAAWzqD,MAAO,WAC3B,CAAEyqD,MAAO,SAAUzqD,MAAO,cAIhC0+I,EAAAA,cAAA,OAAKjtI,UAAU,gBACbitI,EAAAA,cAAC+kZ,GAAAA,GAAe,CACd/oe,QAAS,WACPioe,GAAkB,EACpB,GAEAjkZ,EAAAA,cAAC4kZ,IAAuB,CAAC7xhB,UAAU,4CAA4C,sBAC3D,KAEtBitI,EAAAA,cAAA,OAAKjtI,UAAU,2BAA0B,UAChCitI,EAAAA,cAAA,QAAMjtI,UAAU,eAAc,IAAE0uI,EAAe8iJ,OAAc,OAEpEvkJ,EAAAA,cAAA,QAAMjtI,UAAU,eAAc,IAAE0uI,EAAe1zH,GAAU,2BAC5C,IACbiyH,EAAAA,cAAA,QAAMjtI,UAAU,eAAc,IAAE0uI,EAAeqzY,aAAoB,IAAI,SAOnF,EC9OA,IApHqB,WACnB,IAAAnpd,EAA8Bq0E,EAAAA,UAAe,GAA7BpjE,GAAFjR,EAAA,GAAYA,EAAA,IAqB1BC,EAA4Bo0E,EAAAA,SAXT,CACjBglZ,OAAQ,CACN5jiB,KAAM,SACN2iiB,OAAQ,CACN,CACE3iiB,KAAM,qBACNujiB,WAAY,UAKbZ,EAAMn4d,EAAA,GAAEq5d,EAASr5d,EAAA,GAGlBs5d,GAA4BC,EAAAA,EAAAA,IAAgB,oBAAsB,CACtEtjZ,KAAM,KACNnC,QAAS,KACTk9P,QAAS,UACTn7P,eA1BqD,CACrDqzY,YAAa,EACb/mgB,EAAG,EACHw2Q,MAAO,qBACPogQ,WAAY,KACZH,SAAU,WAwBN9M,EAAgB13Y,EAAAA,OAA6B,MAGnDl0E,EAAkCk0E,EAAAA,SAAeklZ,GAA1C3lZ,EAASzzE,EAAA,GAAE2zE,EAAY3zE,EAAA,GAC9BC,EAAgCi0E,EAAAA,SAA0B,MAAzCy2Y,GAAF1qd,EAAA,GAAaA,EAAA,IAC5BG,EAA0B8zE,EAAAA,SAA+B,MAAlDzzF,EAAK2f,EAAA,GAAEm1E,EAAQn1E,EAAA,GAEtB8zE,EAAAA,WAAgB,WAEY,OAAtBT,EAAUG,WACZw2Q,EAAAA,EAAAA,IAAgBwhI,GAChBjB,EAAY,MAEhB,GAAG,CAACl3Y,EAAUG,UAoCd,OAJAM,EAAAA,WAAgB,WA7BdqB,EAAS,MACTzkE,GAAW,IAyBX8kE,EAAAA,EAAAA,IAAaC,cAxBG,CACd72I,OAAQ,MACRquD,QAAS,CACP,eAAgB,sBAIF,SAACt0C,GACbA,GAAQA,EAAK+zC,OAEfqse,EAAUpghB,EAAKA,MAIfs/G,QAAQtrF,IAAI,wBAAyBh0B,GAEvC+3D,GAAW,EACb,IACgB,SAACj2C,GAEfi2C,GAAW,GAEXunD,QAAQtrF,IAAI,wBAAyBlS,EACvC,GAMF,GAAG,IAGDq5G,EAAAA,cAAA,OAAKjtI,UAAU,IACbitI,EAAAA,cAAColZ,IAAqB,CACpBz5b,OAAQ,CACN4zC,UAAWA,EACXE,aAAcA,GAEhBskZ,OAAQA,IACP,IACH/jZ,EAAAA,cAAA,OAAKzuF,IAAKmme,GACR13Y,EAAAA,cAACqlZ,IAAmB,CAClB15b,OAAQ,CACN4zC,UAAWA,EACXE,aAAcA,EACdlzF,MAAOA,EACP80F,SAAUA,MAIf90F,IAAUA,EAAMqM,QACfonF,EAAAA,cAAA,OAAKjtI,UAAU,QACZ,IACDitI,EAAAA,cAAA,OAAKjtI,UAAU,yCACbitI,EAAAA,cAACu3Y,EAAqB,CAACxkhB,UAAU,+BAA+B,+CAGlEitI,EAAAA,cAAA,OAAKjtI,UAAU,uEACZ,IACAw5C,EAAMmuD,QAAQ,MAM3B,EC/EA,IAtCiB,SAAH1pD,GAAsB,IAAhBnsC,EAAImsC,EAAJnsC,KAClB,OACEm7H,EAAAA,cAACslZ,EAAAA,EAAM,CAAC77Z,KAAM5kH,EAAK0ghB,KAAKC,aAAct0e,MAAM,OAAOmmI,KAAM,SACvDr3C,EAAAA,cAAA,QAAMjtI,UAAU,IACditI,EAAAA,cAAA,OAAKjtI,UAAU,QACbitI,EAAAA,cAAA,WAAK,uEACkE,IACrEA,EAAAA,cAAA,QAAMjtI,UAAU,0BAAyB,oBAAwB,IAAI,gDACvB,MAGlDitI,EAAAA,cAACylZ,IAAY,OAcrB,wBC/BA,IAAIC,EAAU,iBACd,SAASh0e,IACP,aACAhpB,EAAOC,QAAU+oB,EAAsB,WACrC,OAAO/oB,CACT,EAAGD,EAAOC,QAAQugB,YAAa,EAAMxgB,EAAOC,QAAiB,QAAID,EAAOC,QACxE,IAAIA,EAAU,CAAC,EACbgpB,EAAKh7C,OAAOtX,UACZ8uD,EAASwD,EAAGj7C,eACZqxB,EAAiBpxB,OAAOoxB,gBAAkB,SAAU7U,EAAK8M,EAAK4xB,GAC5D1+B,EAAI8M,GAAO4xB,EAAKtwD,KAClB,EACAuwD,EAAU,mBAAqBta,OAASA,OAAS,CAAC,EAClDua,EAAiBD,EAAQra,UAAY,aACrCua,EAAsBF,EAAQG,eAAiB,kBAC/CC,EAAoBJ,EAAQK,aAAe,gBAC7C,SAASC,EAAOj/B,EAAK8M,EAAK1+B,GACxB,OAAOqV,OAAOoxB,eAAe7U,EAAK8M,EAAK,CACrC1+B,MAAOA,EACPwmC,YAAY,EACZsqB,cAAc,EACdC,UAAU,IACRn/B,EAAI8M,EACV,CACA,IACEmyB,EAAO,CAAC,EAAG,GACb,CAAE,MAAOxrB,GACPwrB,EAAS,SAAgBj/B,EAAK8M,EAAK1+B,GACjC,OAAO4xB,EAAI8M,GAAO1+B,CACpB,CACF,CACA,SAASgxD,EAAKC,EAASC,EAAS3M,EAAM4M,GACpC,IAAIC,EAAiBF,GAAWA,EAAQnzD,qBAAqBszD,EAAYH,EAAUG,EACjFjH,EAAY/0C,OAAO0wB,OAAOqrB,EAAerzD,WACzCizB,EAAU,IAAIsgC,EAAQH,GAAe,IACvC,OAAO1qB,EAAe2jB,EAAW,UAAW,CAC1CpqD,MAAOuxD,EAAiBN,EAAS1M,EAAMvzB,KACrCo5B,CACN,CACA,SAASoH,EAAStgD,EAAI0gB,EAAKyoB,GACzB,IACE,MAAO,CACL7zC,KAAM,SACN6zC,IAAKnpC,EAAGzR,KAAKmyB,EAAKyoB,GAEtB,CAAE,MAAOhV,GACP,MAAO,CACL7+B,KAAM,QACN6zC,IAAKhV,EAET,CACF,CACAgC,EAAQ2pB,KAAOA,EACf,IAAIS,EAAmB,CAAC,EACxB,SAASJ,IAAa,CACtB,SAASK,IAAqB,CAC9B,SAASC,IAA8B,CACvC,IAAIC,EAAoB,CAAC,EACzBf,EAAOe,EAAmBpB,GAAgB,WACxC,OAAO3yD,IACT,IACA,IAAIg0D,EAAWx8C,OAAOupB,eACpBkzB,EAA0BD,GAAYA,EAASA,EAASxzB,EAAO,MACjEyzB,GAA2BA,IAA4BzB,GAAMxD,EAAOptD,KAAKqyD,EAAyBtB,KAAoBoB,EAAoBE,GAC1I,IAAIC,EAAKJ,EAA2B5zD,UAAYszD,EAAUtzD,UAAYsX,OAAO0wB,OAAO6rB,GACpF,SAASI,EAAsBj0D,GAC7B,CAAC,OAAQ,QAAS,UAAUkI,SAAQ,SAAUuD,GAC5CqnD,EAAO9yD,EAAWyL,GAAQ,SAAU6wC,GAClC,OAAOx8C,KAAKo0D,QAAQzoD,EAAQ6wC,EAC9B,GACF,GACF,CACA,SAAS6X,EAAc9H,EAAW+H,GAChC,SAASC,EAAO5oD,EAAQ6wC,EAAKnV,EAASC,GACpC,IAAIktB,EAASb,EAASpH,EAAU5gD,GAAS4gD,EAAW/P,GACpD,GAAI,UAAYgY,EAAO7rD,KAAM,CAC3B,IAAIiK,EAAS4hD,EAAOhY,IAClBr6C,EAAQyQ,EAAOzQ,MACjB,OAAOA,GAAS,UAAYokiB,EAAQpkiB,IAAU6sD,EAAOptD,KAAKO,EAAO,WAAamyD,EAAYjtB,QAAQllC,EAAMsyD,SAASltB,MAAK,SAAUplC,GAC9HoyD,EAAO,OAAQpyD,EAAOklC,EAASC,EACjC,IAAG,SAAUE,GACX+sB,EAAO,QAAS/sB,EAAKH,EAASC,EAChC,IAAKgtB,EAAYjtB,QAAQllC,GAAOolC,MAAK,SAAUmtB,GAC7C9hD,EAAOzQ,MAAQuyD,EAAWrtB,EAAQz0B,EACpC,IAAG,SAAUw6C,GACX,OAAOmH,EAAO,QAASnH,EAAO/lB,EAASC,EACzC,GACF,CACAA,EAAOktB,EAAOhY,IAChB,CACA,IAAImY,EACJ/rB,EAAe5oC,KAAM,UAAW,CAC9BmC,MAAO,SAAewJ,EAAQ6wC,GAC5B,SAASoY,IACP,OAAO,IAAIN,GAAY,SAAUjtB,EAASC,GACxCitB,EAAO5oD,EAAQ6wC,EAAKnV,EAASC,EAC/B,GACF,CACA,OAAOqtB,EAAkBA,EAAkBA,EAAgBptB,KAAKqtB,EAA4BA,GAA8BA,GAC5H,GAEJ,CACA,SAASlB,EAAiBN,EAAS1M,EAAMvzB,GACvC,IAAIowB,EAAQ,iBACZ,OAAO,SAAU53C,EAAQ6wC,GACvB,GAAI,cAAgB+G,EAAO,MAAM,IAAItb,MAAM,gCAC3C,GAAI,cAAgBsb,EAAO,CACzB,GAAI,UAAY53C,EAAQ,MAAM6wC,EAC9B,OAAOqY,GACT,CACA,IAAK1hC,EAAQxnB,OAASA,EAAQwnB,EAAQqpB,IAAMA,IAAO,CACjD,IAAIsY,EAAW3hC,EAAQ2hC,SACvB,GAAIA,EAAU,CACZ,IAAIC,EAAiBC,EAAoBF,EAAU3hC,GACnD,GAAI4hC,EAAgB,CAClB,GAAIA,IAAmBnB,EAAkB,SACzC,OAAOmB,CACT,CACF,CACA,GAAI,SAAW5hC,EAAQxnB,OAAQwnB,EAAQ05B,KAAO15B,EAAQ8hC,MAAQ9hC,EAAQqpB,SAAS,GAAI,UAAYrpB,EAAQxnB,OAAQ,CAC7G,GAAI,mBAAqB43C,EAAO,MAAMA,EAAQ,YAAapwB,EAAQqpB,IACnErpB,EAAQ+hC,kBAAkB/hC,EAAQqpB,IACpC,KAAO,WAAarpB,EAAQxnB,QAAUwnB,EAAQgiC,OAAO,SAAUhiC,EAAQqpB,KACvE+G,EAAQ,YACR,IAAIiR,EAASb,EAASP,EAAS1M,EAAMvzB,GACrC,GAAI,WAAaqhC,EAAO7rD,KAAM,CAC5B,GAAI46C,EAAQpwB,EAAQmlB,KAAO,YAAc,iBAAkBkc,EAAOhY,MAAQoX,EAAkB,SAC5F,MAAO,CACLzxD,MAAOqyD,EAAOhY,IACdlE,KAAMnlB,EAAQmlB,KAElB,CACA,UAAYkc,EAAO7rD,OAAS46C,EAAQ,YAAapwB,EAAQxnB,OAAS,QAASwnB,EAAQqpB,IAAMgY,EAAOhY,IAClG,CACF,CACF,CACA,SAASwY,EAAoBF,EAAU3hC,GACrC,IAAIiiC,EAAajiC,EAAQxnB,OACvBA,EAASmpD,EAASzc,SAAS+c,GAC7B,QAAI3+B,IAAc9qB,EAAQ,OAAOwnB,EAAQ2hC,SAAW,KAAM,UAAYM,GAAcN,EAASzc,SAAiB,SAAMllB,EAAQxnB,OAAS,SAAUwnB,EAAQqpB,SAAM/lB,EAAWu+B,EAAoBF,EAAU3hC,GAAU,UAAYA,EAAQxnB,SAAW,WAAaypD,IAAejiC,EAAQxnB,OAAS,QAASwnB,EAAQqpB,IAAM,IAAIz3C,UAAU,oCAAsCqwD,EAAa,aAAcxB,EAClY,IAAIY,EAASb,EAAShoD,EAAQmpD,EAASzc,SAAUllB,EAAQqpB,KACzD,GAAI,UAAYgY,EAAO7rD,KAAM,OAAOwqB,EAAQxnB,OAAS,QAASwnB,EAAQqpB,IAAMgY,EAAOhY,IAAKrpB,EAAQ2hC,SAAW,KAAMlB,EACjH,IAAIyB,EAAOb,EAAOhY,IAClB,OAAO6Y,EAAOA,EAAK/c,MAAQnlB,EAAQ2hC,EAASQ,YAAcD,EAAKlzD,MAAOgxB,EAAQoC,KAAOu/B,EAASS,QAAS,WAAapiC,EAAQxnB,SAAWwnB,EAAQxnB,OAAS,OAAQwnB,EAAQqpB,SAAM/lB,GAAYtD,EAAQ2hC,SAAW,KAAMlB,GAAoByB,GAAQliC,EAAQxnB,OAAS,QAASwnB,EAAQqpB,IAAM,IAAIz3C,UAAU,oCAAqCouB,EAAQ2hC,SAAW,KAAMlB,EACrW,CACA,SAAS4B,EAAaC,GACpB,IAAIC,EAAQ,CACVC,OAAQF,EAAK,IAEf,KAAKA,IAASC,EAAME,SAAWH,EAAK,IAAK,KAAKA,IAASC,EAAMG,WAAaJ,EAAK,GAAIC,EAAMI,SAAWL,EAAK,IAAKz1D,KAAK+1D,WAAWx1D,KAAKm1D,EACrI,CACA,SAASM,EAAcN,GACrB,IAAIlB,EAASkB,EAAMO,YAAc,CAAC,EAClCzB,EAAO7rD,KAAO,gBAAiB6rD,EAAOhY,IAAKkZ,EAAMO,WAAazB,CAChE,CACA,SAASf,EAAQH,GACftzD,KAAK+1D,WAAa,CAAC,CACjBJ,OAAQ,SACNrC,EAAYlrD,QAAQotD,EAAcx1D,MAAOA,KAAKk2D,OAAM,EAC1D,CACA,SAAS11B,EAAO21B,GACd,GAAIA,EAAU,CACZ,IAAIC,EAAiBD,EAASxD,GAC9B,GAAIyD,EAAgB,OAAOA,EAAex0D,KAAKu0D,GAC/C,GAAI,mBAAqBA,EAAS5gC,KAAM,OAAO4gC,EAC/C,IAAKj0C,MAAMi0C,EAASt1D,QAAS,CAC3B,IAAIK,GAAK,EACPq0B,EAAO,SAASA,IACd,OAASr0B,EAAIi1D,EAASt1D,QAAS,GAAImuD,EAAOptD,KAAKu0D,EAAUj1D,GAAI,OAAOq0B,EAAKpzB,MAAQg0D,EAASj1D,GAAIq0B,EAAK+iB,MAAO,EAAI/iB,EAC9G,OAAOA,EAAKpzB,WAAQs0B,EAAWlB,EAAK+iB,MAAO,EAAI/iB,CACjD,EACF,OAAOA,EAAKA,KAAOA,CACrB,CACF,CACA,MAAO,CACLA,KAAMs/B,EAEV,CACA,SAASA,IACP,MAAO,CACL1yD,WAAOs0B,EACP6hB,MAAM,EAEV,CACA,OAAOub,EAAkB3zD,UAAY4zD,EAA4BlrB,EAAesrB,EAAI,cAAe,CACjG/xD,MAAO2xD,EACPb,cAAc,IACZrqB,EAAekrB,EAA4B,cAAe,CAC5D3xD,MAAO0xD,EACPZ,cAAc,IACZY,EAAkBwC,YAAcrD,EAAOc,EAA4BhB,EAAmB,qBAAsBtpB,EAAQ8sB,oBAAsB,SAAUC,GACtJ,IAAIC,EAAO,mBAAqBD,GAAUA,EAAOzxD,YACjD,QAAS0xD,IAASA,IAAS3C,GAAqB,uBAAyB2C,EAAKH,aAAeG,EAAKv0D,MACpG,EAAGunC,EAAQitB,KAAO,SAAUF,GAC1B,OAAO/+C,OAAOo0C,eAAiBp0C,OAAOo0C,eAAe2K,EAAQzC,IAA+ByC,EAAO1K,UAAYiI,EAA4Bd,EAAOuD,EAAQzD,EAAmB,sBAAuByD,EAAOr2D,UAAYsX,OAAO0wB,OAAOgsB,GAAKqC,CAC5O,EAAG/sB,EAAQktB,MAAQ,SAAUla,GAC3B,MAAO,CACLiY,QAASjY,EAEb,EAAG2X,EAAsBE,EAAcn0D,WAAY8yD,EAAOqB,EAAcn0D,UAAW0yD,GAAqB,WACtG,OAAO5yD,IACT,IAAIwpC,EAAQ6qB,cAAgBA,EAAe7qB,EAAQmtB,MAAQ,SAAUvD,EAASC,EAAS3M,EAAM4M,EAAagB,QACxG,IAAWA,IAAgBA,EAAc1tB,SACzC,IAAIiT,EAAO,IAAIwa,EAAclB,EAAKC,EAASC,EAAS3M,EAAM4M,GAAcgB,GACxE,OAAO9qB,EAAQ8sB,oBAAoBjD,GAAWxZ,EAAOA,EAAKtkB,OAAOgS,MAAK,SAAU30B,GAC9E,OAAOA,EAAO0lC,KAAO1lC,EAAOzQ,MAAQ03C,EAAKtkB,MAC3C,GACF,EAAG4+B,EAAsBD,GAAKlB,EAAOkB,EAAIpB,EAAmB,aAAcE,EAAOkB,EAAIvB,GAAgB,WACnG,OAAO3yD,IACT,IAAIgzD,EAAOkB,EAAI,YAAY,WACzB,MAAO,oBACT,IAAI1qB,EAAQ5I,KAAO,SAAUv7B,GAC3B,IAAIs/B,EAASntB,OAAOnS,GAClBu7B,EAAO,GACT,IAAK,IAAIC,KAAO8D,EAAQ/D,EAAKrgC,KAAKsgC,GAClC,OAAOD,EAAKhQ,UAAW,SAAS2E,IAC9B,KAAOqL,EAAK//B,QAAS,CACnB,IAAIggC,EAAMD,EAAK3Z,MACf,GAAI4Z,KAAO8D,EAAQ,OAAOpP,EAAKpzB,MAAQ0+B,EAAKtL,EAAK+iB,MAAO,EAAI/iB,CAC9D,CACA,OAAOA,EAAK+iB,MAAO,EAAI/iB,CACzB,CACF,EAAGiU,EAAQhJ,OAASA,EAAQizB,EAAQvzD,UAAY,CAC9C4E,YAAa2uD,EACbyC,MAAO,SAAeU,GACpB,GAAI52D,KAAKs1B,KAAO,EAAGt1B,KAAKu1B,KAAO,EAAGv1B,KAAK6sD,KAAO7sD,KAAKi1D,WAAQx+B,EAAWz2B,KAAKs4C,MAAO,EAAIt4C,KAAK80D,SAAW,KAAM90D,KAAK2L,OAAS,OAAQ3L,KAAKw8C,SAAM/lB,EAAWz2B,KAAK+1D,WAAW3tD,QAAQ4tD,IAAiBY,EAAe,IAAK,IAAI30D,KAAQjC,KAAM,MAAQiC,EAAKk5B,OAAO,IAAM6zB,EAAOptD,KAAK5B,KAAMiC,KAAUigB,OAAOjgB,EAAK+kB,MAAM,MAAQhnB,KAAKiC,QAAQw0B,EACtU,EACAzxB,KAAM,WACJhF,KAAKs4C,MAAO,EACZ,IAAIue,EAAa72D,KAAK+1D,WAAW,GAAGE,WACpC,GAAI,UAAYY,EAAWluD,KAAM,MAAMkuD,EAAWra,IAClD,OAAOx8C,KAAK82D,IACd,EACA5B,kBAAmB,SAA2B6B,GAC5C,GAAI/2D,KAAKs4C,KAAM,MAAMye,EACrB,IAAI5jC,EAAUnzB,KACd,SAASg3D,EAAOC,EAAKC,GACnB,OAAO1C,EAAO7rD,KAAO,QAAS6rD,EAAOhY,IAAMua,EAAW5jC,EAAQoC,KAAO0hC,EAAKC,IAAW/jC,EAAQxnB,OAAS,OAAQwnB,EAAQqpB,SAAM/lB,KAAcygC,CAC5I,CACA,IAAK,IAAIh2D,EAAIlB,KAAK+1D,WAAWl1D,OAAS,EAAGK,GAAK,IAAKA,EAAG,CACpD,IAAIw0D,EAAQ11D,KAAK+1D,WAAW70D,GAC1BszD,EAASkB,EAAMO,WACjB,GAAI,SAAWP,EAAMC,OAAQ,OAAOqB,EAAO,OAC3C,GAAItB,EAAMC,QAAU31D,KAAKs1B,KAAM,CAC7B,IAAI6hC,EAAWnI,EAAOptD,KAAK8zD,EAAO,YAChC0B,EAAapI,EAAOptD,KAAK8zD,EAAO,cAClC,GAAIyB,GAAYC,EAAY,CAC1B,GAAIp3D,KAAKs1B,KAAOogC,EAAME,SAAU,OAAOoB,EAAOtB,EAAME,UAAU,GAC9D,GAAI51D,KAAKs1B,KAAOogC,EAAMG,WAAY,OAAOmB,EAAOtB,EAAMG,WACxD,MAAO,GAAIsB,GACT,GAAIn3D,KAAKs1B,KAAOogC,EAAME,SAAU,OAAOoB,EAAOtB,EAAME,UAAU,OACzD,CACL,IAAKwB,EAAY,MAAM,IAAInvB,MAAM,0CACjC,GAAIjoC,KAAKs1B,KAAOogC,EAAMG,WAAY,OAAOmB,EAAOtB,EAAMG,WACxD,CACF,CACF,CACF,EACAV,OAAQ,SAAgBxsD,EAAM6zC,GAC5B,IAAK,IAAIt7C,EAAIlB,KAAK+1D,WAAWl1D,OAAS,EAAGK,GAAK,IAAKA,EAAG,CACpD,IAAIw0D,EAAQ11D,KAAK+1D,WAAW70D,GAC5B,GAAIw0D,EAAMC,QAAU31D,KAAKs1B,MAAQ05B,EAAOptD,KAAK8zD,EAAO,eAAiB11D,KAAKs1B,KAAOogC,EAAMG,WAAY,CACjG,IAAIwB,EAAe3B,EACnB,KACF,CACF,CACA2B,IAAiB,UAAY1uD,GAAQ,aAAeA,IAAS0uD,EAAa1B,QAAUnZ,GAAOA,GAAO6a,EAAaxB,aAAewB,EAAe,MAC7I,IAAI7C,EAAS6C,EAAeA,EAAapB,WAAa,CAAC,EACvD,OAAOzB,EAAO7rD,KAAOA,EAAM6rD,EAAOhY,IAAMA,EAAK6a,GAAgBr3D,KAAK2L,OAAS,OAAQ3L,KAAKu1B,KAAO8hC,EAAaxB,WAAYjC,GAAoB5zD,KAAKs3D,SAAS9C,EAC5J,EACA8C,SAAU,SAAkB9C,EAAQsB,GAClC,GAAI,UAAYtB,EAAO7rD,KAAM,MAAM6rD,EAAOhY,IAC1C,MAAO,UAAYgY,EAAO7rD,MAAQ,aAAe6rD,EAAO7rD,KAAO3I,KAAKu1B,KAAOi/B,EAAOhY,IAAM,WAAagY,EAAO7rD,MAAQ3I,KAAK82D,KAAO92D,KAAKw8C,IAAMgY,EAAOhY,IAAKx8C,KAAK2L,OAAS,SAAU3L,KAAKu1B,KAAO,OAAS,WAAai/B,EAAO7rD,MAAQmtD,IAAa91D,KAAKu1B,KAAOugC,GAAWlC,CACtQ,EACA2D,OAAQ,SAAgB1B,GACtB,IAAK,IAAI30D,EAAIlB,KAAK+1D,WAAWl1D,OAAS,EAAGK,GAAK,IAAKA,EAAG,CACpD,IAAIw0D,EAAQ11D,KAAK+1D,WAAW70D,GAC5B,GAAIw0D,EAAMG,aAAeA,EAAY,OAAO71D,KAAKs3D,SAAS5B,EAAMO,WAAYP,EAAMI,UAAWE,EAAcN,GAAQ9B,CACrH,CACF,EACA,MAAS,SAAgB+B,GACvB,IAAK,IAAIz0D,EAAIlB,KAAK+1D,WAAWl1D,OAAS,EAAGK,GAAK,IAAKA,EAAG,CACpD,IAAIw0D,EAAQ11D,KAAK+1D,WAAW70D,GAC5B,GAAIw0D,EAAMC,SAAWA,EAAQ,CAC3B,IAAInB,EAASkB,EAAMO,WACnB,GAAI,UAAYzB,EAAO7rD,KAAM,CAC3B,IAAI6uD,EAAShD,EAAOhY,IACpBwZ,EAAcN,EAChB,CACA,OAAO8B,CACT,CACF,CACA,MAAM,IAAIvvB,MAAM,wBAClB,EACAwvB,cAAe,SAAuBtB,EAAUb,EAAYC,GAC1D,OAAOv1D,KAAK80D,SAAW,CACrBzc,SAAU7X,EAAO21B,GACjBb,WAAYA,EACZC,QAASA,GACR,SAAWv1D,KAAK2L,SAAW3L,KAAKw8C,SAAM/lB,GAAYm9B,CACvD,GACCpqB,CACL,CACAD,EAAOC,QAAU+oB,EAAqBhpB,EAAOC,QAAQugB,YAAa,EAAMxgB,EAAOC,QAAiB,QAAID,EAAOC,+BC7S3G,IAAIukR,EAAU,EAAQ,KAAR,GACdxkR,EAAOC,QAAUukR,EAGjB,IACEy4O,mBAAqBz4O,CACvB,CAAE,MAAO04O,GACmB,iBAAfC,WACTA,WAAWF,mBAAqBz4O,EAEhC9kO,SAAS,IAAK,yBAAdA,CAAwC8kO,EAE5C","sources":["webpack://lida/./node_modules/@antv/event-emitter/esm/index.js","webpack://lida/./node_modules/@antv/g-base/esm/abstract/base.js","webpack://lida/./node_modules/@antv/g-base/node_modules/d3-timer/src/timer.js","webpack://lida/./node_modules/@antv/g-base/esm/util/color.js","webpack://lida/./node_modules/@antv/g-base/esm/animate/timeline.js","webpack://lida/./node_modules/@antv/g-base/esm/event/event-contoller.js","webpack://lida/./node_modules/@antv/g-base/esm/abstract/canvas.js","webpack://lida/./node_modules/@antv/g-base/esm/abstract/container.js","webpack://lida/./node_modules/@antv/g-base/esm/abstract/element.js","webpack://lida/./node_modules/@antv/g-base/esm/abstract/group.js","webpack://lida/./node_modules/@antv/g-base/esm/abstract/shape.js","webpack://lida/./node_modules/@antv/g-base/node_modules/d3-ease/src/linear.js","webpack://lida/./node_modules/@antv/g-base/node_modules/d3-ease/src/quad.js","webpack://lida/./node_modules/@antv/g-base/node_modules/d3-ease/src/cubic.js","webpack://lida/./node_modules/@antv/g-base/node_modules/d3-ease/src/poly.js","webpack://lida/./node_modules/@antv/g-base/node_modules/d3-ease/src/sin.js","webpack://lida/./node_modules/@antv/g-base/node_modules/d3-ease/src/math.js","webpack://lida/./node_modules/@antv/g-base/node_modules/d3-ease/src/exp.js","webpack://lida/./node_modules/@antv/g-base/node_modules/d3-ease/src/circle.js","webpack://lida/./node_modules/@antv/g-base/node_modules/d3-ease/src/bounce.js","webpack://lida/./node_modules/@antv/g-base/node_modules/d3-ease/src/back.js","webpack://lida/./node_modules/@antv/g-base/node_modules/d3-ease/src/elastic.js","webpack://lida/./node_modules/@antv/g-base/esm/animate/register.js","webpack://lida/./node_modules/@antv/g-base/esm/bbox/register.js","webpack://lida/./node_modules/@antv/g-base/esm/bbox/rect.js","webpack://lida/./node_modules/@antv/g-base/esm/bbox/circle.js","webpack://lida/./node_modules/@antv/g-base/esm/bbox/util.js","webpack://lida/./node_modules/@antv/g-base/esm/bbox/path.js","webpack://lida/./node_modules/@antv/g-base/esm/bbox/index.js","webpack://lida/./node_modules/@antv/g-base/esm/bbox/polyline.js","webpack://lida/./node_modules/@antv/g-base/esm/bbox/polygon.js","webpack://lida/./node_modules/@antv/g-base/esm/bbox/text.js","webpack://lida/./node_modules/@antv/g-base/esm/bbox/line.js","webpack://lida/./node_modules/@antv/g-base/esm/bbox/ellipse.js","webpack://lida/./node_modules/@antv/g-base/esm/event/graph-event.js","webpack://lida/./node_modules/@antv/g-base/esm/index.js","webpack://lida/./node_modules/@antv/g-base/esm/util/matrix.js","webpack://lida/./node_modules/@antv/g-base/esm/util/offscreen.js","webpack://lida/./node_modules/@antv/g-base/esm/util/path.js","webpack://lida/./node_modules/@antv/g-base/esm/util/text.js","webpack://lida/./node_modules/@antv/g-base/esm/util/util.js","webpack://lida/./node_modules/@antv/g-math/esm/util.js","webpack://lida/./node_modules/@antv/g-math/esm/line.js","webpack://lida/./node_modules/@antv/g-math/esm/bezier.js","webpack://lida/./node_modules/@antv/g-math/esm/quadratic.js","webpack://lida/./node_modules/@antv/g-math/esm/cubic.js","webpack://lida/./node_modules/@antv/g-math/esm/ellipse.js","webpack://lida/./node_modules/@antv/g-math/esm/arc.js","webpack://lida/./node_modules/@antv/g-math/esm/segments.js","webpack://lida/./node_modules/@antv/g-math/esm/polyline.js","webpack://lida/./node_modules/@antv/matrix-util/esm/ext.js","webpack://lida/./node_modules/@antv/path-util/esm/parse-path.js","webpack://lida/./node_modules/@antv/path-util/esm/catmull-rom-2-bezier.js","webpack://lida/./node_modules/@antv/path-util/esm/parse-path-string.js","webpack://lida/./node_modules/@antv/path-util/esm/path-2-absolute.js","webpack://lida/./node_modules/@antv/path-util/esm/process/arc-2-cubic.js","webpack://lida/./node_modules/@antv/path-util/esm/get-arc-params.js","webpack://lida/./node_modules/@antv/path-util/esm/path-2-segments.js","webpack://lida/./node_modules/@antv/path-util/esm/point-in-polygon.js","webpack://lida/./node_modules/@antv/path-util/esm/get-line-intersect.js","webpack://lida/./node_modules/@antv/path-util/esm/is-polygons-intersect.js","webpack://lida/./node_modules/@antv/util/esm/is-array-like.js","webpack://lida/./node_modules/@antv/util/esm/contains.js","webpack://lida/./node_modules/@antv/util/esm/filter.js","webpack://lida/./node_modules/@antv/util/esm/difference.js","webpack://lida/./node_modules/@antv/util/esm/is-type.js","webpack://lida/./node_modules/@antv/util/esm/is-function.js","webpack://lida/./node_modules/@antv/util/esm/is-nil.js","webpack://lida/./node_modules/@antv/util/esm/is-array.js","webpack://lida/./node_modules/@antv/util/esm/is-object.js","webpack://lida/./node_modules/@antv/util/esm/each.js","webpack://lida/./node_modules/@antv/util/esm/keys.js","webpack://lida/./node_modules/@antv/util/esm/is-match.js","webpack://lida/./node_modules/@antv/util/esm/is-object-like.js","webpack://lida/./node_modules/@antv/util/esm/is-plain-object.js","webpack://lida/./node_modules/@antv/util/esm/find.js","webpack://lida/./node_modules/@antv/util/esm/find-index.js","webpack://lida/./node_modules/@antv/util/esm/first-value.js","webpack://lida/./node_modules/@antv/util/esm/flatten.js","webpack://lida/./node_modules/@antv/util/esm/max.js","webpack://lida/./node_modules/@antv/util/esm/min.js","webpack://lida/./node_modules/@antv/util/esm/get-range.js","webpack://lida/./node_modules/@antv/util/esm/pull.js","webpack://lida/./node_modules/@antv/util/esm/pull-at.js","webpack://lida/./node_modules/@antv/util/esm/reduce.js","webpack://lida/./node_modules/@antv/util/esm/remove.js","webpack://lida/./node_modules/@antv/util/esm/is-string.js","webpack://lida/./node_modules/@antv/util/esm/sort-by.js","webpack://lida/./node_modules/@antv/util/esm/uniq.js","webpack://lida/./node_modules/@antv/util/esm/values-of-key.js","webpack://lida/./node_modules/@antv/util/esm/head.js","webpack://lida/./node_modules/@antv/util/esm/last.js","webpack://lida/./node_modules/@antv/util/esm/ends-with.js","webpack://lida/./node_modules/@antv/util/esm/every.js","webpack://lida/./node_modules/@antv/util/esm/some.js","webpack://lida/./node_modules/@antv/util/esm/group-by.js","webpack://lida/./node_modules/@antv/util/esm/group-to-map.js","webpack://lida/./node_modules/@antv/util/esm/group.js","webpack://lida/./node_modules/@antv/util/esm/parse-radius.js","webpack://lida/./node_modules/@antv/util/esm/clamp.js","webpack://lida/./node_modules/@antv/util/esm/fixed-base.js","webpack://lida/./node_modules/@antv/util/esm/is-number.js","webpack://lida/./node_modules/@antv/util/esm/is-number-equal.js","webpack://lida/./node_modules/@antv/util/esm/is-integer.js","webpack://lida/./node_modules/@antv/util/esm/is-odd.js","webpack://lida/./node_modules/@antv/util/esm/max-by.js","webpack://lida/./node_modules/@antv/util/esm/min-by.js","webpack://lida/./node_modules/@antv/util/esm/mod.js","webpack://lida/./node_modules/@antv/util/esm/to-radian.js","webpack://lida/./node_modules/@antv/util/esm/to-degree.js","webpack://lida/./node_modules/@antv/util/esm/for-in.js","webpack://lida/./node_modules/@antv/util/esm/has-key.js","webpack://lida/./node_modules/@antv/util/esm/has.js","webpack://lida/./node_modules/@antv/util/esm/values.js","webpack://lida/./node_modules/@antv/util/esm/to-string.js","webpack://lida/./node_modules/@antv/util/esm/lower-case.js","webpack://lida/./node_modules/@antv/util/esm/substitute.js","webpack://lida/./node_modules/@antv/util/esm/upper-first.js","webpack://lida/./node_modules/@antv/util/esm/get-type.js","webpack://lida/./node_modules/@antv/util/esm/is-boolean.js","webpack://lida/./node_modules/@antv/util/esm/is-date.js","webpack://lida/./node_modules/@antv/util/esm/is-null.js","webpack://lida/./node_modules/@antv/util/esm/is-prototype.js","webpack://lida/./node_modules/@antv/util/esm/is-undefined.js","webpack://lida/./node_modules/@antv/util/esm/is-element.js","webpack://lida/./node_modules/@antv/util/esm/request-animation-frame.js","webpack://lida/./node_modules/@antv/util/esm/clear-animation-frame.js","webpack://lida/./node_modules/@antv/util/esm/augment.js","webpack://lida/./node_modules/@antv/util/esm/clone.js","webpack://lida/./node_modules/@antv/util/esm/debounce.js","webpack://lida/./node_modules/@antv/util/esm/memoize.js","webpack://lida/./node_modules/@antv/util/esm/deep-mix.js","webpack://lida/./node_modules/@antv/util/esm/index-of.js","webpack://lida/./node_modules/@antv/util/esm/is-empty.js","webpack://lida/./node_modules/@antv/util/esm/is-equal.js","webpack://lida/./node_modules/@antv/util/esm/map.js","webpack://lida/./node_modules/@antv/util/esm/map-values.js","webpack://lida/./node_modules/@antv/util/esm/mix.js","webpack://lida/./node_modules/@antv/util/esm/get.js","webpack://lida/./node_modules/@antv/util/esm/set.js","webpack://lida/./node_modules/@antv/util/esm/pick.js","webpack://lida/./node_modules/@antv/util/esm/omit.js","webpack://lida/./node_modules/@antv/util/esm/throttle.js","webpack://lida/./node_modules/@antv/util/esm/to-array.js","webpack://lida/./node_modules/@antv/util/esm/unique-id.js","webpack://lida/./node_modules/@antv/util/esm/noop.js","webpack://lida/./node_modules/@antv/util/esm/size.js","webpack://lida/./node_modules/@antv/util/esm/measure-text-width.js","webpack://lida/./node_modules/@antv/util/esm/get-ellipsis-text.js","webpack://lida/./node_modules/@antv/util/esm/cache.js","webpack://lida/./node_modules/clone/clone.js","webpack://lida/./node_modules/d3-color/src/color.js","webpack://lida/./node_modules/d3-color/src/define.js","webpack://lida/./node_modules/d3-interpolate/src/array.js","webpack://lida/./node_modules/d3-interpolate/src/basis.js","webpack://lida/./node_modules/d3-interpolate/src/basisClosed.js","webpack://lida/./node_modules/d3-interpolate/src/color.js","webpack://lida/./node_modules/d3-interpolate/src/constant.js","webpack://lida/./node_modules/d3-interpolate/src/date.js","webpack://lida/./node_modules/d3-interpolate/src/number.js","webpack://lida/./node_modules/d3-interpolate/src/numberArray.js","webpack://lida/./node_modules/d3-interpolate/src/object.js","webpack://lida/./node_modules/d3-interpolate/src/rgb.js","webpack://lida/./node_modules/d3-interpolate/src/string.js","webpack://lida/./node_modules/d3-interpolate/src/value.js","webpack://lida/./node_modules/d3-regression/dist/d3-regression.js","webpack://lida/./node_modules/detect-browser/es/index.js","webpack://lida/./node_modules/fast-deep-equal/index.js","webpack://lida/./node_modules/fast-json-stable-stringify/index.js","webpack://lida/./node_modules/fmin/build/fmin.js","webpack://lida/./node_modules/gl-matrix/esm/common.js","webpack://lida/./node_modules/gl-matrix/esm/mat3.js","webpack://lida/./node_modules/gl-matrix/esm/vec2.js","webpack://lida/./node_modules/json-stringify-pretty-compact/index.js","webpack://lida/./node_modules/pdfast/src/helper.js","webpack://lida/./node_modules/pdfast/src/index.js","webpack://lida/./node_modules/size-sensor/lib/constant.js","webpack://lida/./node_modules/size-sensor/lib/debounce.js","webpack://lida/./node_modules/size-sensor/lib/id.js","webpack://lida/./node_modules/size-sensor/lib/index.js","webpack://lida/./node_modules/size-sensor/lib/sensorPool.js","webpack://lida/./node_modules/size-sensor/lib/sensors/index.js","webpack://lida/./node_modules/size-sensor/lib/sensors/object.js","webpack://lida/./node_modules/size-sensor/lib/sensors/resizeObserver.js","webpack://lida/./node_modules/tslib/tslib.es6.mjs","webpack://lida/./node_modules/core-js/internals/get-substitution.js","webpack://lida/./node_modules/core-js/internals/is-regexp.js","webpack://lida/./node_modules/core-js/internals/regexp-flags.js","webpack://lida/./node_modules/core-js/internals/regexp-get-flags.js","webpack://lida/./node_modules/core-js/internals/to-string.js","webpack://lida/./node_modules/core-js/modules/es.array.flat.js","webpack://lida/./node_modules/core-js/modules/es.array.unscopables.flat.js","webpack://lida/./node_modules/core-js/modules/es.math.hypot.js","webpack://lida/./node_modules/core-js/modules/es.string.replace-all.js","webpack://lida/./node_modules/core-js/modules/esnext.string.replace-all.js","webpack://lida/./node_modules/@heroicons/react/24/outline/esm/ExclamationCircleIcon.js","webpack://lida/./node_modules/@heroicons/react/24/outline/esm/ArrowUpOnSquareIcon.js","webpack://lida/./node_modules/@heroicons/react/24/outline/esm/InboxIcon.js","webpack://lida/./node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js","webpack://lida/./node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://lida/./node_modules/rc-util/es/pickAttrs.js","webpack://lida/./node_modules/rc-upload/es/request.js","webpack://lida/./node_modules/rc-upload/es/uid.js","webpack://lida/./node_modules/rc-upload/es/attr-accept.js","webpack://lida/./node_modules/rc-upload/es/traverseFileTree.js","webpack://lida/./node_modules/rc-upload/es/AjaxUploader.js","webpack://lida/./node_modules/rc-upload/es/Upload.js","webpack://lida/./node_modules/rc-upload/es/index.js","webpack://lida/./node_modules/antd/es/config-provider/DisabledContext.js","webpack://lida/./node_modules/antd/es/locale/context.js","webpack://lida/./node_modules/rc-pagination/es/locale/en_US.js","webpack://lida/./node_modules/rc-picker/es/locale/en_US.js","webpack://lida/./node_modules/antd/es/time-picker/locale/en_US.js","webpack://lida/./node_modules/antd/es/date-picker/locale/en_US.js","webpack://lida/./node_modules/antd/es/locale/en_US.js","webpack://lida/./node_modules/antd/es/locale/useLocale.js","webpack://lida/./node_modules/@ant-design/icons-svg/es/asn/FileTwoTone.js","webpack://lida/./node_modules/@ant-design/icons/es/icons/FileTwoTone.js","webpack://lida/./node_modules/@ant-design/icons-svg/es/asn/LoadingOutlined.js","webpack://lida/./node_modules/@ant-design/icons/es/icons/LoadingOutlined.js","webpack://lida/./node_modules/@ant-design/icons-svg/es/asn/PaperClipOutlined.js","webpack://lida/./node_modules/@ant-design/icons/es/icons/PaperClipOutlined.js","webpack://lida/./node_modules/@ant-design/icons-svg/es/asn/PictureTwoTone.js","webpack://lida/./node_modules/@ant-design/icons/es/icons/PictureTwoTone.js","webpack://lida/./node_modules/antd/es/_util/hooks/useForceUpdate.js","webpack://lida/./node_modules/rc-util/es/React/render.js","webpack://lida/./node_modules/rc-util/es/Dom/isVisible.js","webpack://lida/./node_modules/antd/es/_util/wave/style.js","webpack://lida/./node_modules/antd/es/_util/wave/util.js","webpack://lida/./node_modules/antd/es/_util/wave/interface.js","webpack://lida/./node_modules/antd/es/_util/wave/WaveEffect.js","webpack://lida/./node_modules/antd/es/_util/wave/index.js","webpack://lida/./node_modules/antd/es/_util/wave/useWave.js","webpack://lida/./node_modules/antd/es/space/Compact.js","webpack://lida/./node_modules/antd/es/button/IconWrapper.js","webpack://lida/./node_modules/antd/es/button/LoadingIcon.js","webpack://lida/./node_modules/antd/es/button/button-group.js","webpack://lida/./node_modules/antd/es/button/buttonHelpers.js","webpack://lida/./node_modules/antd/es/style/compact-item.js","webpack://lida/./node_modules/antd/es/style/compact-item-vertical.js","webpack://lida/./node_modules/antd/es/button/style/group.js","webpack://lida/./node_modules/antd/es/button/style/index.js","webpack://lida/./node_modules/antd/es/button/button.js","webpack://lida/./node_modules/antd/es/button/index.js","webpack://lida/./node_modules/antd/es/upload/utils.js","webpack://lida/./node_modules/@ant-design/icons-svg/es/asn/DeleteOutlined.js","webpack://lida/./node_modules/@ant-design/icons/es/icons/DeleteOutlined.js","webpack://lida/./node_modules/@ant-design/icons-svg/es/asn/DownloadOutlined.js","webpack://lida/./node_modules/@ant-design/icons/es/icons/DownloadOutlined.js","webpack://lida/./node_modules/@ant-design/icons-svg/es/asn/EyeOutlined.js","webpack://lida/./node_modules/@ant-design/icons/es/icons/EyeOutlined.js","webpack://lida/./node_modules/@ant-design/icons-svg/es/asn/CheckCircleFilled.js","webpack://lida/./node_modules/@ant-design/icons/es/icons/CheckCircleFilled.js","webpack://lida/./node_modules/@ant-design/icons-svg/es/asn/CheckOutlined.js","webpack://lida/./node_modules/@ant-design/icons/es/icons/CheckOutlined.js","webpack://lida/./node_modules/@ant-design/icons-svg/es/asn/CloseCircleFilled.js","webpack://lida/./node_modules/@ant-design/icons/es/icons/CloseCircleFilled.js","webpack://lida/./node_modules/@ant-design/icons-svg/es/asn/CloseOutlined.js","webpack://lida/./node_modules/@ant-design/icons/es/icons/CloseOutlined.js","webpack://lida/./node_modules/rc-progress/es/common.js","webpack://lida/./node_modules/rc-progress/es/Line.js","webpack://lida/./node_modules/rc-progress/es/hooks/useId.js","webpack://lida/./node_modules/rc-progress/es/Circle.js","webpack://lida/./node_modules/@rc-component/portal/es/Context.js","webpack://lida/./node_modules/@rc-component/portal/es/useDom.js","webpack://lida/./node_modules/rc-util/es/getScrollBarSize.js","webpack://lida/./node_modules/@rc-component/portal/es/useScrollLocker.js","webpack://lida/./node_modules/@rc-component/portal/es/util.js","webpack://lida/./node_modules/@rc-component/portal/es/mock.js","webpack://lida/./node_modules/@rc-component/portal/es/Portal.js","webpack://lida/./node_modules/@rc-component/portal/es/index.js","webpack://lida/./node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","webpack://lida/./node_modules/rc-resize-observer/es/utils/observerUtil.js","webpack://lida/./node_modules/rc-resize-observer/es/SingleObserver/DomWrapper.js","webpack://lida/./node_modules/rc-resize-observer/es/Collection.js","webpack://lida/./node_modules/rc-resize-observer/es/SingleObserver/index.js","webpack://lida/./node_modules/rc-resize-observer/es/index.js","webpack://lida/./node_modules/rc-util/es/hooks/useId.js","webpack://lida/./node_modules/rc-util/es/isMobile.js","webpack://lida/./node_modules/@rc-component/trigger/es/context.js","webpack://lida/./node_modules/@rc-component/trigger/es/hooks/useAction.js","webpack://lida/./node_modules/@rc-component/trigger/es/util.js","webpack://lida/./node_modules/@rc-component/trigger/es/hooks/useAlign.js","webpack://lida/./node_modules/@rc-component/trigger/es/Popup/Arrow.js","webpack://lida/./node_modules/@rc-component/trigger/es/Popup/Mask.js","webpack://lida/./node_modules/@rc-component/trigger/es/Popup/PopupContent.js","webpack://lida/./node_modules/@rc-component/trigger/es/Popup/index.js","webpack://lida/./node_modules/@rc-component/trigger/es/TriggerWrapper.js","webpack://lida/./node_modules/@rc-component/trigger/es/index.js","webpack://lida/./node_modules/@rc-component/trigger/es/hooks/useWatch.js","webpack://lida/./node_modules/@rc-component/trigger/es/hooks/useWinClick.js","webpack://lida/./node_modules/rc-tooltip/es/placements.js","webpack://lida/./node_modules/rc-tooltip/es/Popup.js","webpack://lida/./node_modules/rc-tooltip/es/Tooltip.js","webpack://lida/./node_modules/rc-tooltip/es/index.js","webpack://lida/./node_modules/antd/es/style/roundedArrow.js","webpack://lida/./node_modules/antd/es/style/placementArrow.js","webpack://lida/./node_modules/antd/es/_util/placements.js","webpack://lida/./node_modules/antd/es/theme/index.js","webpack://lida/./node_modules/antd/es/style/motion/motion.js","webpack://lida/./node_modules/antd/es/style/motion/zoom.js","webpack://lida/./node_modules/antd/es/theme/interface/presetColors.js","webpack://lida/./node_modules/antd/es/theme/util/genPresetColor.js","webpack://lida/./node_modules/antd/es/tooltip/style/index.js","webpack://lida/./node_modules/antd/es/_util/colors.js","webpack://lida/./node_modules/antd/es/tooltip/util.js","webpack://lida/./node_modules/antd/es/tooltip/PurePanel.js","webpack://lida/./node_modules/antd/es/tooltip/index.js","webpack://lida/./node_modules/antd/es/progress/utils.js","webpack://lida/./node_modules/antd/es/progress/Circle.js","webpack://lida/./node_modules/antd/es/progress/Line.js","webpack://lida/./node_modules/antd/es/progress/Steps.js","webpack://lida/./node_modules/antd/es/progress/style/index.js","webpack://lida/./node_modules/antd/es/progress/progress.js","webpack://lida/./node_modules/antd/es/progress/index.js","webpack://lida/./node_modules/antd/es/upload/UploadList/ListItem.js","webpack://lida/./node_modules/antd/es/upload/UploadList/index.js","webpack://lida/./node_modules/antd/es/upload/style/dragger.js","webpack://lida/./node_modules/antd/es/upload/style/list.js","webpack://lida/./node_modules/antd/es/style/motion/fade.js","webpack://lida/./node_modules/antd/es/upload/style/motion.js","webpack://lida/./node_modules/antd/es/upload/style/picture.js","webpack://lida/./node_modules/antd/es/upload/style/rtl.js","webpack://lida/./node_modules/antd/es/upload/style/index.js","webpack://lida/./node_modules/antd/es/upload/Upload.js","webpack://lida/./node_modules/antd/es/upload/Dragger.js","webpack://lida/./node_modules/antd/es/upload/index.js","webpack://lida/./node_modules/antd/es/form/validateMessagesContext.js","webpack://lida/./node_modules/antd/es/modal/locale.js","webpack://lida/./node_modules/antd/es/locale/index.js","webpack://lida/./node_modules/antd/es/config-provider/cssVariables.js","webpack://lida/./node_modules/antd/es/config-provider/hooks/useConfig.js","webpack://lida/./node_modules/antd/es/config-provider/MotionWrapper.js","webpack://lida/./node_modules/antd/es/config-provider/style/index.js","webpack://lida/./node_modules/antd/es/config-provider/index.js","webpack://lida/./node_modules/antd/es/config-provider/hooks/useTheme.js","webpack://lida/./node_modules/@ant-design/icons-svg/es/asn/ExclamationCircleFilled.js","webpack://lida/./node_modules/@ant-design/icons/es/icons/ExclamationCircleFilled.js","webpack://lida/./node_modules/@ant-design/icons-svg/es/asn/InfoCircleFilled.js","webpack://lida/./node_modules/@ant-design/icons/es/icons/InfoCircleFilled.js","webpack://lida/./node_modules/rc-notification/es/Notice.js","webpack://lida/./node_modules/rc-notification/es/Notifications.js","webpack://lida/./node_modules/rc-notification/es/useNotification.js","webpack://lida/./node_modules/antd/es/message/style/index.js","webpack://lida/./node_modules/antd/es/message/PurePanel.js","webpack://lida/./node_modules/antd/es/message/util.js","webpack://lida/./node_modules/antd/es/message/useMessage.js","webpack://lida/./node_modules/antd/es/message/index.js","webpack://lida/./node_modules/antd/es/skeleton/Element.js","webpack://lida/./node_modules/antd/es/skeleton/style/index.js","webpack://lida/./node_modules/antd/es/skeleton/Avatar.js","webpack://lida/./node_modules/antd/es/skeleton/Button.js","webpack://lida/./node_modules/antd/es/skeleton/Image.js","webpack://lida/./node_modules/antd/es/skeleton/Input.js","webpack://lida/./node_modules/@ant-design/icons-svg/es/asn/DotChartOutlined.js","webpack://lida/./node_modules/@ant-design/icons/es/icons/DotChartOutlined.js","webpack://lida/./node_modules/antd/es/skeleton/Node.js","webpack://lida/./node_modules/antd/es/skeleton/Paragraph.js","webpack://lida/./node_modules/antd/es/skeleton/Title.js","webpack://lida/./node_modules/antd/es/skeleton/Skeleton.js","webpack://lida/./node_modules/antd/es/skeleton/index.js","webpack://lida/./node_modules/@heroicons/react/24/outline/esm/ChatBubbleOvalLeftIcon.js","webpack://lida/./node_modules/@heroicons/react/24/outline/esm/HashtagIcon.js","webpack://lida/./node_modules/@heroicons/react/24/outline/esm/CalendarDaysIcon.js","webpack://lida/./node_modules/@heroicons/react/24/outline/esm/TagIcon.js","webpack://lida/./node_modules/@heroicons/react/24/outline/esm/DocumentChartBarIcon.js","webpack://lida/./node_modules/@heroicons/react/24/outline/esm/ClipboardDocumentIcon.js","webpack://lida/./node_modules/antd/es/_util/ActionButton.js","webpack://lida/./node_modules/rc-dialog/es/util.js","webpack://lida/./node_modules/rc-dialog/es/Dialog/Content/MemoChildren.js","webpack://lida/./node_modules/rc-dialog/es/Dialog/Content/Panel.js","webpack://lida/./node_modules/rc-dialog/es/Dialog/Content/index.js","webpack://lida/./node_modules/rc-dialog/es/Dialog/Mask.js","webpack://lida/./node_modules/rc-dialog/es/Dialog/index.js","webpack://lida/./node_modules/rc-dialog/es/DialogWrap.js","webpack://lida/./node_modules/rc-dialog/es/index.js","webpack://lida/./node_modules/antd/es/_util/styleChecker.js","webpack://lida/./node_modules/rc-field-form/es/FieldContext.js","webpack://lida/./node_modules/rc-field-form/es/ListContext.js","webpack://lida/./node_modules/rc-field-form/es/utils/typeUtil.js","webpack://lida/./node_modules/async-validator/dist-web/index.js","webpack://lida/./node_modules/rc-field-form/es/utils/messages.js","webpack://lida/./node_modules/rc-field-form/es/utils/validateUtil.js","webpack://lida/./node_modules/rc-field-form/es/utils/valueUtil.js","webpack://lida/./node_modules/rc-field-form/es/Field.js","webpack://lida/./node_modules/rc-field-form/es/List.js","webpack://lida/./node_modules/rc-field-form/es/utils/NameMap.js","webpack://lida/./node_modules/rc-field-form/es/useForm.js","webpack://lida/./node_modules/rc-field-form/es/utils/asyncUtil.js","webpack://lida/./node_modules/rc-field-form/es/FormContext.js","webpack://lida/./node_modules/rc-field-form/es/Form.js","webpack://lida/./node_modules/rc-field-form/es/useWatch.js","webpack://lida/./node_modules/rc-field-form/es/index.js","webpack://lida/./node_modules/antd/es/form/context.js","webpack://lida/./node_modules/antd/es/modal/shared.js","webpack://lida/./node_modules/antd/es/modal/style/index.js","webpack://lida/./node_modules/antd/es/modal/Modal.js","webpack://lida/./node_modules/antd/es/_util/hooks/useClosable.js","webpack://lida/./node_modules/antd/es/modal/ConfirmDialog.js","webpack://lida/./node_modules/antd/es/modal/destroyFns.js","webpack://lida/./node_modules/antd/es/modal/confirm.js","webpack://lida/./node_modules/antd/es/_util/PurePanel.js","webpack://lida/./node_modules/antd/es/modal/PurePanel.js","webpack://lida/./node_modules/antd/es/modal/useModal/HookModal.js","webpack://lida/./node_modules/antd/es/modal/useModal/index.js","webpack://lida/./node_modules/antd/es/_util/hooks/usePatchElement.js","webpack://lida/./node_modules/antd/es/modal/index.js","webpack://lida/./src/components/views/generate/upload/summary.tsx","webpack://lida/./src/components/views/generate/upload/samples.tsx","webpack://lida/./node_modules/@heroicons/react/24/outline/esm/BookmarkSquareIcon.js","webpack://lida/./src/components/views/generate/upload/goal.tsx","webpack://lida/./node_modules/@heroicons/react/24/outline/esm/Cog6ToothIcon.js","webpack://lida/./node_modules/@heroicons/react/24/outline/esm/PaperAirplaneIcon.js","webpack://lida/./node_modules/antd/es/_util/extendsObject.js","webpack://lida/./node_modules/antd/es/_util/responsiveObserver.js","webpack://lida/./node_modules/antd/es/empty/empty.js","webpack://lida/./node_modules/antd/es/empty/simple.js","webpack://lida/./node_modules/antd/es/empty/style/index.js","webpack://lida/./node_modules/antd/es/empty/index.js","webpack://lida/./node_modules/antd/es/config-provider/defaultRenderEmpty.js","webpack://lida/./node_modules/antd/es/_util/hooks/useFlexGapSupport.js","webpack://lida/./node_modules/antd/es/grid/RowContext.js","webpack://lida/./node_modules/antd/es/grid/style/index.js","webpack://lida/./node_modules/antd/es/grid/row.js","webpack://lida/./node_modules/antd/es/grid/hooks/useBreakpoint.js","webpack://lida/./node_modules/@ant-design/icons-svg/es/asn/DoubleLeftOutlined.js","webpack://lida/./node_modules/@ant-design/icons/es/icons/DoubleLeftOutlined.js","webpack://lida/./node_modules/@ant-design/icons-svg/es/asn/DoubleRightOutlined.js","webpack://lida/./node_modules/@ant-design/icons/es/icons/DoubleRightOutlined.js","webpack://lida/./node_modules/@ant-design/icons-svg/es/asn/LeftOutlined.js","webpack://lida/./node_modules/@ant-design/icons/es/icons/LeftOutlined.js","webpack://lida/./node_modules/rc-pagination/es/KeyCode.js","webpack://lida/./node_modules/rc-pagination/es/Options.js","webpack://lida/./node_modules/rc-pagination/es/Pager.js","webpack://lida/./node_modules/rc-pagination/es/Pagination.js","webpack://lida/./node_modules/rc-pagination/es/locale/zh_CN.js","webpack://lida/./node_modules/rc-select/es/hooks/useBaseProps.js","webpack://lida/./node_modules/rc-select/es/hooks/useLock.js","webpack://lida/./node_modules/rc-overflow/es/Item.js","webpack://lida/./node_modules/rc-overflow/es/hooks/useEffectState.js","webpack://lida/./node_modules/rc-overflow/es/hooks/channelUpdate.js","webpack://lida/./node_modules/rc-overflow/es/context.js","webpack://lida/./node_modules/rc-overflow/es/RawItem.js","webpack://lida/./node_modules/rc-overflow/es/Overflow.js","webpack://lida/./node_modules/rc-overflow/es/index.js","webpack://lida/./node_modules/rc-select/es/TransBtn.js","webpack://lida/./node_modules/rc-select/es/Selector/Input.js","webpack://lida/./node_modules/rc-select/es/utils/commonUtil.js","webpack://lida/./node_modules/rc-select/es/Selector/MultipleSelector.js","webpack://lida/./node_modules/rc-select/es/hooks/useLayoutEffect.js","webpack://lida/./node_modules/rc-select/es/Selector/SingleSelector.js","webpack://lida/./node_modules/rc-select/es/Selector/index.js","webpack://lida/./node_modules/rc-select/es/utils/keyUtil.js","webpack://lida/./node_modules/rc-select/es/SelectTrigger.js","webpack://lida/./node_modules/rc-select/es/utils/valueUtil.js","webpack://lida/./node_modules/rc-select/es/BaseSelect.js","webpack://lida/./node_modules/rc-select/es/hooks/useDelayReset.js","webpack://lida/./node_modules/rc-select/es/hooks/useSelectTriggerControl.js","webpack://lida/./node_modules/rc-select/es/hooks/useAllowClear.js","webpack://lida/./node_modules/rc-select/es/hooks/useFilterOptions.js","webpack://lida/./node_modules/rc-select/es/hooks/useId.js","webpack://lida/./node_modules/rc-select/es/utils/legacyUtil.js","webpack://lida/./node_modules/rc-select/es/hooks/useRefFunc.js","webpack://lida/./node_modules/rc-select/es/OptGroup.js","webpack://lida/./node_modules/rc-select/es/Option.js","webpack://lida/./node_modules/rc-virtual-list/es/Filler.js","webpack://lida/./node_modules/rc-virtual-list/es/ScrollBar.js","webpack://lida/./node_modules/rc-virtual-list/es/Item.js","webpack://lida/./node_modules/rc-virtual-list/es/utils/CacheMap.js","webpack://lida/./node_modules/rc-virtual-list/es/hooks/useDiffItem.js","webpack://lida/./node_modules/rc-virtual-list/es/utils/algorithmUtil.js","webpack://lida/./node_modules/rc-virtual-list/es/utils/isFirefox.js","webpack://lida/./node_modules/rc-virtual-list/es/hooks/useOriginScroll.js","webpack://lida/./node_modules/rc-virtual-list/es/hooks/useMobileTouchMove.js","webpack://lida/./node_modules/rc-virtual-list/es/List.js","webpack://lida/./node_modules/rc-virtual-list/es/hooks/useHeights.js","webpack://lida/./node_modules/rc-virtual-list/es/hooks/useFrameWheel.js","webpack://lida/./node_modules/rc-virtual-list/es/hooks/useScrollTo.js","webpack://lida/./node_modules/rc-virtual-list/es/hooks/useChildren.js","webpack://lida/./node_modules/rc-virtual-list/es/index.js","webpack://lida/./node_modules/rc-select/es/SelectContext.js","webpack://lida/./node_modules/rc-select/es/OptionList.js","webpack://lida/./node_modules/rc-select/es/utils/platformUtil.js","webpack://lida/./node_modules/rc-select/es/utils/warningPropsUtil.js","webpack://lida/./node_modules/rc-select/es/Select.js","webpack://lida/./node_modules/rc-select/es/hooks/useOptions.js","webpack://lida/./node_modules/rc-select/es/hooks/useCache.js","webpack://lida/./node_modules/rc-select/es/index.js","webpack://lida/./node_modules/antd/es/_util/statusUtils.js","webpack://lida/./node_modules/antd/es/style/motion/slide.js","webpack://lida/./node_modules/antd/es/style/motion/move.js","webpack://lida/./node_modules/antd/es/select/style/dropdown.js","webpack://lida/./node_modules/antd/es/select/style/multiple.js","webpack://lida/./node_modules/antd/es/select/style/single.js","webpack://lida/./node_modules/antd/es/select/style/index.js","webpack://lida/./node_modules/antd/es/select/useBuiltinPlacements.js","webpack://lida/./node_modules/@ant-design/icons-svg/es/asn/DownOutlined.js","webpack://lida/./node_modules/@ant-design/icons/es/icons/DownOutlined.js","webpack://lida/./node_modules/@ant-design/icons-svg/es/asn/SearchOutlined.js","webpack://lida/./node_modules/@ant-design/icons/es/icons/SearchOutlined.js","webpack://lida/./node_modules/antd/es/select/index.js","webpack://lida/./node_modules/antd/es/select/useShowArrow.js","webpack://lida/./node_modules/antd/es/select/utils/iconUtil.js","webpack://lida/./node_modules/antd/es/pagination/Select.js","webpack://lida/./node_modules/antd/es/input/style/index.js","webpack://lida/./node_modules/antd/es/pagination/style/index.js","webpack://lida/./node_modules/antd/es/pagination/Pagination.js","webpack://lida/./node_modules/antd/es/pagination/index.js","webpack://lida/./node_modules/throttle-debounce/esm/index.js","webpack://lida/./node_modules/antd/es/spin/style/index.js","webpack://lida/./node_modules/antd/es/spin/index.js","webpack://lida/./node_modules/antd/es/grid/col.js","webpack://lida/./node_modules/antd/es/list/context.js","webpack://lida/./node_modules/antd/es/list/Item.js","webpack://lida/./node_modules/antd/es/list/style/index.js","webpack://lida/./node_modules/antd/es/list/index.js","webpack://lida/./node_modules/@heroicons/react/24/outline/esm/ChatBubbleLeftEllipsisIcon.js","webpack://lida/./node_modules/@heroicons/react/24/outline/esm/ArchiveBoxXMarkIcon.js","webpack://lida/./node_modules/@ant-design/icons-svg/es/asn/EllipsisOutlined.js","webpack://lida/./node_modules/@ant-design/icons/es/icons/EllipsisOutlined.js","webpack://lida/./node_modules/@ant-design/icons-svg/es/asn/PlusOutlined.js","webpack://lida/./node_modules/@ant-design/icons/es/icons/PlusOutlined.js","webpack://lida/./node_modules/rc-tabs/es/TabContext.js","webpack://lida/./node_modules/rc-tabs/es/TabPanelList/TabPane.js","webpack://lida/./node_modules/rc-tabs/es/TabPanelList/index.js","webpack://lida/./node_modules/rc-tabs/es/hooks/useOffsets.js","webpack://lida/./node_modules/rc-tabs/es/hooks/useSyncState.js","webpack://lida/./node_modules/rc-tabs/es/hooks/useTouchMove.js","webpack://lida/./node_modules/rc-tabs/es/hooks/useUpdate.js","webpack://lida/./node_modules/rc-tabs/es/hooks/useVisibleRange.js","webpack://lida/./node_modules/rc-tabs/es/util.js","webpack://lida/./node_modules/rc-tabs/es/TabNavList/AddButton.js","webpack://lida/./node_modules/rc-tabs/es/TabNavList/ExtraContent.js","webpack://lida/./node_modules/rc-dropdown/es/hooks/useAccessibility.js","webpack://lida/./node_modules/rc-dropdown/es/Overlay.js","webpack://lida/./node_modules/rc-dropdown/es/placements.js","webpack://lida/./node_modules/rc-dropdown/es/Dropdown.js","webpack://lida/./node_modules/rc-dropdown/es/index.js","webpack://lida/./node_modules/rc-menu/es/context/IdContext.js","webpack://lida/./node_modules/rc-menu/es/context/MenuContext.js","webpack://lida/./node_modules/rc-menu/es/context/PathContext.js","webpack://lida/./node_modules/rc-menu/es/context/PrivateContext.js","webpack://lida/./node_modules/rc-util/es/Dom/focus.js","webpack://lida/./node_modules/rc-menu/es/hooks/useAccessibility.js","webpack://lida/./node_modules/rc-menu/es/hooks/useKeyRecords.js","webpack://lida/./node_modules/rc-menu/es/utils/timeUtil.js","webpack://lida/./node_modules/rc-menu/es/hooks/useMemoCallback.js","webpack://lida/./node_modules/rc-menu/es/hooks/useUUID.js","webpack://lida/./node_modules/rc-menu/es/hooks/useActive.js","webpack://lida/./node_modules/rc-menu/es/hooks/useDirectionStyle.js","webpack://lida/./node_modules/rc-menu/es/Icon.js","webpack://lida/./node_modules/rc-menu/es/utils/warnUtil.js","webpack://lida/./node_modules/rc-menu/es/MenuItem.js","webpack://lida/./node_modules/rc-menu/es/SubMenu/SubMenuList.js","webpack://lida/./node_modules/rc-menu/es/utils/commonUtil.js","webpack://lida/./node_modules/rc-menu/es/placements.js","webpack://lida/./node_modules/rc-menu/es/utils/motionUtil.js","webpack://lida/./node_modules/rc-menu/es/SubMenu/PopupTrigger.js","webpack://lida/./node_modules/rc-menu/es/SubMenu/InlineSubMenuList.js","webpack://lida/./node_modules/rc-menu/es/SubMenu/index.js","webpack://lida/./node_modules/rc-menu/es/MenuItemGroup.js","webpack://lida/./node_modules/rc-menu/es/Divider.js","webpack://lida/./node_modules/rc-menu/es/utils/nodeUtil.js","webpack://lida/./node_modules/rc-menu/es/Menu.js","webpack://lida/./node_modules/rc-menu/es/index.js","webpack://lida/./node_modules/rc-tabs/es/TabNavList/OperationNode.js","webpack://lida/./node_modules/rc-tabs/es/TabNavList/TabNode.js","webpack://lida/./node_modules/rc-tabs/es/TabNavList/index.js","webpack://lida/./node_modules/rc-tabs/es/TabNavList/Wrapper.js","webpack://lida/./node_modules/rc-tabs/es/Tabs.js","webpack://lida/./node_modules/rc-tabs/es/hooks/useAnimateConfig.js","webpack://lida/./node_modules/rc-tabs/es/index.js","webpack://lida/./node_modules/antd/es/tabs/TabPane.js","webpack://lida/./node_modules/antd/es/tabs/hooks/useAnimateConfig.js","webpack://lida/./node_modules/antd/es/tabs/hooks/useLegacyItems.js","webpack://lida/./node_modules/antd/es/tabs/style/motion.js","webpack://lida/./node_modules/antd/es/tabs/style/index.js","webpack://lida/./node_modules/antd/es/tabs/index.js","webpack://lida/./node_modules/react-vega/esm/utils/shallowEqual.js","webpack://lida/./node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://lida/./node_modules/fast-json-patch/module/helpers.mjs","webpack://lida/./node_modules/fast-json-patch/module/core.mjs","webpack://lida/./node_modules/fast-json-patch/module/duplex.mjs","webpack://lida/./node_modules/fast-json-patch/index.mjs","webpack://lida/./node_modules/vega-util/build/vega-util.module.js","webpack://lida/./node_modules/d3-dsv/src/dsv.js","webpack://lida/./node_modules/topojson-client/src/identity.js","webpack://lida/./node_modules/topojson-client/src/feature.js","webpack://lida/./node_modules/topojson-client/src/transform.js","webpack://lida/./node_modules/topojson-client/src/reverse.js","webpack://lida/./node_modules/topojson-client/src/stitch.js","webpack://lida/./node_modules/topojson-client/src/mesh.js","webpack://lida/./node_modules/d3-array/src/ticks.js","webpack://lida/./node_modules/vega-format/node_modules/d3-format/src/formatSpecifier.js","webpack://lida/./node_modules/vega-format/node_modules/d3-format/src/formatPrefixAuto.js","webpack://lida/./node_modules/vega-format/node_modules/d3-format/src/formatDecimal.js","webpack://lida/./node_modules/vega-format/node_modules/d3-format/src/exponent.js","webpack://lida/./node_modules/vega-format/node_modules/d3-format/src/formatRounded.js","webpack://lida/./node_modules/vega-format/node_modules/d3-format/src/formatTypes.js","webpack://lida/./node_modules/vega-format/node_modules/d3-format/src/identity.js","webpack://lida/./node_modules/vega-format/node_modules/d3-format/src/locale.js","webpack://lida/./node_modules/vega-format/node_modules/d3-format/src/defaultLocale.js","webpack://lida/./node_modules/vega-format/node_modules/d3-format/src/formatGroup.js","webpack://lida/./node_modules/vega-format/node_modules/d3-format/src/formatNumerals.js","webpack://lida/./node_modules/vega-format/node_modules/d3-format/src/formatTrim.js","webpack://lida/./node_modules/d3-time/src/interval.js","webpack://lida/./node_modules/d3-time/src/duration.js","webpack://lida/./node_modules/d3-time/src/day.js","webpack://lida/./node_modules/d3-time/src/week.js","webpack://lida/./node_modules/d3-time/src/year.js","webpack://lida/./node_modules/d3-time/src/month.js","webpack://lida/./node_modules/d3-time/src/hour.js","webpack://lida/./node_modules/d3-time/src/minute.js","webpack://lida/./node_modules/d3-time/src/second.js","webpack://lida/./node_modules/d3-time/src/millisecond.js","webpack://lida/./node_modules/vega-time/build/vega-time.module.js","webpack://lida/./node_modules/d3-array/src/ascending.js","webpack://lida/./node_modules/d3-array/src/descending.js","webpack://lida/./node_modules/d3-array/src/bisector.js","webpack://lida/./node_modules/vega-format/node_modules/d3-time-format/src/locale.js","webpack://lida/./node_modules/vega-format/node_modules/d3-time-format/src/defaultLocale.js","webpack://lida/./node_modules/vega-format/build/vega-format.module.js","webpack://lida/./node_modules/vega-format/node_modules/d3-format/src/precisionPrefix.js","webpack://lida/./node_modules/vega-format/node_modules/d3-format/src/precisionRound.js","webpack://lida/./node_modules/vega-format/node_modules/d3-format/src/precisionFixed.js","webpack://lida/./node_modules/vega-dataflow/node_modules/vega-loader/build/vega-loader.browser.module.js","webpack://lida/./node_modules/vega-dataflow/build/vega-dataflow.module.js","webpack://lida/./node_modules/d3-array/src/max.js","webpack://lida/./node_modules/d3-array/src/min.js","webpack://lida/./node_modules/d3-array/src/sort.js","webpack://lida/./node_modules/d3-array/src/quickselect.js","webpack://lida/./node_modules/d3-array/src/number.js","webpack://lida/./node_modules/d3-array/src/quantile.js","webpack://lida/./node_modules/d3-array/src/variance.js","webpack://lida/./node_modules/d3-array/src/deviation.js","webpack://lida/./node_modules/d3-array/src/median.js","webpack://lida/./node_modules/vega-statistics/build/vega-statistics.module.js","webpack://lida/./node_modules/d3-array/src/mean.js","webpack://lida/./node_modules/d3-array/src/range.js","webpack://lida/./node_modules/vega/node_modules/vega-transforms/build/vega-transforms.module.js","webpack://lida/./node_modules/d3-shape/src/curve/basis.js","webpack://lida/./node_modules/d3-shape/src/noop.js","webpack://lida/./node_modules/d3-shape/src/curve/basisClosed.js","webpack://lida/./node_modules/d3-shape/src/curve/basisOpen.js","webpack://lida/./node_modules/d3-shape/src/curve/bundle.js","webpack://lida/./node_modules/d3-shape/src/curve/cardinal.js","webpack://lida/./node_modules/d3-shape/src/curve/cardinalOpen.js","webpack://lida/./node_modules/d3-shape/src/curve/cardinalClosed.js","webpack://lida/./node_modules/d3-shape/src/math.js","webpack://lida/./node_modules/d3-shape/src/curve/catmullRom.js","webpack://lida/./node_modules/d3-shape/src/curve/catmullRomClosed.js","webpack://lida/./node_modules/d3-shape/src/curve/catmullRomOpen.js","webpack://lida/./node_modules/d3-path/src/path.js","webpack://lida/./node_modules/d3-shape/src/curve/linear.js","webpack://lida/./node_modules/d3-shape/src/curve/linearClosed.js","webpack://lida/./node_modules/d3-shape/src/curve/monotone.js","webpack://lida/./node_modules/d3-shape/src/curve/natural.js","webpack://lida/./node_modules/d3-shape/src/curve/step.js","webpack://lida/./node_modules/d3-shape/src/constant.js","webpack://lida/./node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","webpack://lida/./node_modules/d3-shape/src/path.js","webpack://lida/./node_modules/d3-shape/src/arc.js","webpack://lida/./node_modules/d3-shape/src/array.js","webpack://lida/./node_modules/d3-shape/src/point.js","webpack://lida/./node_modules/d3-shape/src/line.js","webpack://lida/./node_modules/d3-shape/src/area.js","webpack://lida/./node_modules/d3-shape/src/symbol/asterisk.js","webpack://lida/./node_modules/d3-shape/src/symbol/circle.js","webpack://lida/./node_modules/d3-shape/src/symbol/star.js","webpack://lida/./node_modules/d3-shape/src/symbol/diamond.js","webpack://lida/./node_modules/d3-shape/src/symbol/triangle.js","webpack://lida/./node_modules/d3-shape/src/symbol/triangle2.js","webpack://lida/./node_modules/d3-shape/src/symbol/wye.js","webpack://lida/./node_modules/vega-canvas/build/vega-canvas.browser.module.js","webpack://lida/./node_modules/vega-scenegraph/node_modules/vega-loader/build/vega-loader.browser.module.js","webpack://lida/./node_modules/d3-array/src/bisect.js","webpack://lida/./node_modules/d3-interpolate/src/round.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-scale/src/number.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-scale/src/continuous.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-scale/src/constant.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-scale/src/init.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-format/src/formatSpecifier.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-format/src/formatPrefixAuto.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-format/src/formatDecimal.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-format/src/exponent.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-format/src/formatRounded.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-format/src/formatTypes.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-format/src/identity.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-format/src/locale.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-format/src/defaultLocale.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-format/src/formatGroup.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-format/src/formatNumerals.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-format/src/formatTrim.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-scale/src/tickFormat.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-format/src/precisionPrefix.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-format/src/precisionRound.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-format/src/precisionFixed.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-scale/src/linear.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-scale/src/nice.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-scale/src/log.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-scale/src/pow.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-scale/src/symlog.js","webpack://lida/./node_modules/d3-time/src/ticks.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-time-format/src/locale.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-time-format/src/defaultLocale.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-scale/src/time.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-scale/src/sequential.js","webpack://lida/./node_modules/d3-interpolate/src/piecewise.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-scale/src/diverging.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-scale/src/quantile.js","webpack://lida/./node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/get.js","webpack://lida/./node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/superPropBase.js","webpack://lida/./node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/construct.js","webpack://lida/./node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","webpack://lida/./node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","webpack://lida/./node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","webpack://lida/./node_modules/internmap/src/index.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-scale/src/ordinal.js","webpack://lida/./node_modules/d3-interpolate/src/discrete.js","webpack://lida/./node_modules/d3-interpolate/src/hue.js","webpack://lida/./node_modules/d3-interpolate/src/transform/parse.js","webpack://lida/./node_modules/d3-interpolate/src/transform/decompose.js","webpack://lida/./node_modules/d3-interpolate/src/transform/index.js","webpack://lida/./node_modules/d3-interpolate/src/zoom.js","webpack://lida/./node_modules/d3-interpolate/src/hsl.js","webpack://lida/./node_modules/d3-color/src/math.js","webpack://lida/./node_modules/d3-color/src/lab.js","webpack://lida/./node_modules/d3-interpolate/src/lab.js","webpack://lida/./node_modules/d3-interpolate/src/hcl.js","webpack://lida/./node_modules/d3-color/src/cubehelix.js","webpack://lida/./node_modules/d3-interpolate/src/cubehelix.js","webpack://lida/./node_modules/vega-scale/build/vega-scale.module.js","webpack://lida/./node_modules/d3-interpolate/src/quantize.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-scale/src/identity.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-scale/src/utcTime.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-scale/src/quantize.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-scale/src/threshold.js","webpack://lida/./node_modules/vega-scenegraph/build/vega-scenegraph.module.js","webpack://lida/./node_modules/d3-shape/src/symbol.js","webpack://lida/./node_modules/vega/node_modules/vega-view-transforms/build/vega-view-transforms.module.js","webpack://lida/./node_modules/d3-array/src/sum.js","webpack://lida/./node_modules/vega/node_modules/vega-encode/build/vega-encode.module.js","webpack://lida/./node_modules/d3-geo/src/identity.js","webpack://lida/./node_modules/d3-geo/src/stream.js","webpack://lida/./node_modules/d3-array/src/fsum.js","webpack://lida/./node_modules/d3-geo/src/math.js","webpack://lida/./node_modules/d3-geo/src/noop.js","webpack://lida/./node_modules/d3-geo/src/path/area.js","webpack://lida/./node_modules/d3-geo/src/path/bounds.js","webpack://lida/./node_modules/d3-geo/src/path/centroid.js","webpack://lida/./node_modules/d3-geo/src/path/context.js","webpack://lida/./node_modules/d3-geo/src/path/measure.js","webpack://lida/./node_modules/d3-geo/src/path/string.js","webpack://lida/./node_modules/d3-geo/src/path/index.js","webpack://lida/./node_modules/d3-geo/src/clip/buffer.js","webpack://lida/./node_modules/d3-geo/src/pointEqual.js","webpack://lida/./node_modules/d3-geo/src/clip/rejoin.js","webpack://lida/./node_modules/d3-geo/src/cartesian.js","webpack://lida/./node_modules/d3-geo/src/polygonContains.js","webpack://lida/./node_modules/d3-array/src/merge.js","webpack://lida/./node_modules/d3-geo/src/clip/index.js","webpack://lida/./node_modules/d3-geo/src/clip/antimeridian.js","webpack://lida/./node_modules/d3-geo/src/circle.js","webpack://lida/./node_modules/d3-geo/src/clip/rectangle.js","webpack://lida/./node_modules/d3-geo/src/clip/line.js","webpack://lida/./node_modules/d3-geo/src/compose.js","webpack://lida/./node_modules/d3-geo/src/rotation.js","webpack://lida/./node_modules/d3-geo/src/transform.js","webpack://lida/./node_modules/d3-geo/src/projection/fit.js","webpack://lida/./node_modules/d3-geo/src/projection/resample.js","webpack://lida/./node_modules/d3-geo/src/projection/index.js","webpack://lida/./node_modules/d3-geo/src/clip/circle.js","webpack://lida/./node_modules/d3-geo/src/projection/conic.js","webpack://lida/./node_modules/d3-geo/src/projection/conicEqualArea.js","webpack://lida/./node_modules/d3-geo/src/projection/cylindricalEqualArea.js","webpack://lida/./node_modules/d3-geo/src/projection/albers.js","webpack://lida/./node_modules/d3-geo/src/projection/azimuthal.js","webpack://lida/./node_modules/d3-geo/src/projection/azimuthalEqualArea.js","webpack://lida/./node_modules/d3-geo/src/projection/azimuthalEquidistant.js","webpack://lida/./node_modules/d3-geo/src/projection/mercator.js","webpack://lida/./node_modules/d3-geo/src/projection/conicConformal.js","webpack://lida/./node_modules/d3-geo/src/projection/equirectangular.js","webpack://lida/./node_modules/d3-geo/src/projection/conicEquidistant.js","webpack://lida/./node_modules/d3-geo/src/projection/equalEarth.js","webpack://lida/./node_modules/d3-geo/src/projection/gnomonic.js","webpack://lida/./node_modules/d3-geo/src/projection/naturalEarth1.js","webpack://lida/./node_modules/d3-geo/src/projection/orthographic.js","webpack://lida/./node_modules/d3-geo/src/projection/stereographic.js","webpack://lida/./node_modules/d3-geo/src/projection/transverseMercator.js","webpack://lida/./node_modules/d3-geo-projection/src/math.js","webpack://lida/./node_modules/d3-geo-projection/src/mollweide.js","webpack://lida/./node_modules/vega-projection/build/vega-projection.module.js","webpack://lida/./node_modules/d3-geo/src/projection/albersUsa.js","webpack://lida/./node_modules/d3-geo/src/projection/identity.js","webpack://lida/./node_modules/d3-geo/src/graticule.js","webpack://lida/./node_modules/vega/node_modules/vega-geo/build/vega-geo.module.js","webpack://lida/./node_modules/vega/node_modules/d3-quadtree/src/add.js","webpack://lida/./node_modules/vega/node_modules/d3-quadtree/src/quad.js","webpack://lida/./node_modules/vega/node_modules/d3-quadtree/src/x.js","webpack://lida/./node_modules/vega/node_modules/d3-quadtree/src/y.js","webpack://lida/./node_modules/vega/node_modules/d3-quadtree/src/quadtree.js","webpack://lida/./node_modules/vega/node_modules/d3-force/src/constant.js","webpack://lida/./node_modules/vega/node_modules/d3-force/src/jiggle.js","webpack://lida/./node_modules/vega/node_modules/d3-force/src/collide.js","webpack://lida/./node_modules/vega/node_modules/d3-quadtree/src/cover.js","webpack://lida/./node_modules/vega/node_modules/d3-quadtree/src/data.js","webpack://lida/./node_modules/vega/node_modules/d3-quadtree/src/extent.js","webpack://lida/./node_modules/vega/node_modules/d3-quadtree/src/find.js","webpack://lida/./node_modules/vega/node_modules/d3-quadtree/src/remove.js","webpack://lida/./node_modules/vega/node_modules/d3-quadtree/src/root.js","webpack://lida/./node_modules/vega/node_modules/d3-quadtree/src/size.js","webpack://lida/./node_modules/vega/node_modules/d3-quadtree/src/visit.js","webpack://lida/./node_modules/vega/node_modules/d3-quadtree/src/visitAfter.js","webpack://lida/./node_modules/d3-dispatch/src/dispatch.js","webpack://lida/./node_modules/d3-timer/src/timer.js","webpack://lida/./node_modules/vega/node_modules/d3-force/src/lcg.js","webpack://lida/./node_modules/vega/node_modules/d3-force/src/simulation.js","webpack://lida/./node_modules/vega/node_modules/d3-force/src/link.js","webpack://lida/./node_modules/vega/node_modules/vega-force/build/vega-force.module.js","webpack://lida/./node_modules/vega/node_modules/d3-force/src/center.js","webpack://lida/./node_modules/vega/node_modules/d3-force/src/manyBody.js","webpack://lida/./node_modules/vega/node_modules/d3-force/src/x.js","webpack://lida/./node_modules/vega/node_modules/d3-force/src/y.js","webpack://lida/./node_modules/d3-hierarchy/src/hierarchy/count.js","webpack://lida/./node_modules/d3-hierarchy/src/hierarchy/each.js","webpack://lida/./node_modules/d3-hierarchy/src/hierarchy/find.js","webpack://lida/./node_modules/d3-hierarchy/src/hierarchy/iterator.js","webpack://lida/./node_modules/d3-hierarchy/src/hierarchy/index.js","webpack://lida/./node_modules/d3-hierarchy/src/accessors.js","webpack://lida/./node_modules/d3-hierarchy/src/constant.js","webpack://lida/./node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","webpack://lida/./node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","webpack://lida/./node_modules/d3-hierarchy/src/hierarchy/sum.js","webpack://lida/./node_modules/d3-hierarchy/src/hierarchy/sort.js","webpack://lida/./node_modules/d3-hierarchy/src/hierarchy/path.js","webpack://lida/./node_modules/d3-hierarchy/src/hierarchy/ancestors.js","webpack://lida/./node_modules/d3-hierarchy/src/hierarchy/descendants.js","webpack://lida/./node_modules/d3-hierarchy/src/hierarchy/leaves.js","webpack://lida/./node_modules/d3-hierarchy/src/hierarchy/links.js","webpack://lida/./node_modules/d3-hierarchy/src/lcg.js","webpack://lida/./node_modules/d3-hierarchy/src/pack/enclose.js","webpack://lida/./node_modules/d3-hierarchy/src/array.js","webpack://lida/./node_modules/d3-hierarchy/src/pack/siblings.js","webpack://lida/./node_modules/d3-hierarchy/src/pack/index.js","webpack://lida/./node_modules/d3-hierarchy/src/treemap/round.js","webpack://lida/./node_modules/d3-hierarchy/src/treemap/dice.js","webpack://lida/./node_modules/d3-hierarchy/src/stratify.js","webpack://lida/./node_modules/d3-hierarchy/src/tree.js","webpack://lida/./node_modules/d3-hierarchy/src/cluster.js","webpack://lida/./node_modules/d3-hierarchy/src/treemap/slice.js","webpack://lida/./node_modules/d3-hierarchy/src/treemap/squarify.js","webpack://lida/./node_modules/d3-hierarchy/src/treemap/resquarify.js","webpack://lida/./node_modules/vega/node_modules/vega-hierarchy/build/vega-hierarchy.module.js","webpack://lida/./node_modules/d3-hierarchy/src/partition.js","webpack://lida/./node_modules/d3-hierarchy/src/treemap/binary.js","webpack://lida/./node_modules/d3-hierarchy/src/treemap/sliceDice.js","webpack://lida/./node_modules/vega-label/build/vega-label.module.js","webpack://lida/./node_modules/d3-hierarchy/src/treemap/index.js","webpack://lida/./node_modules/vega-regression/build/vega-regression.module.js","webpack://lida/./node_modules/robust-predicates/esm/util.js","webpack://lida/./node_modules/robust-predicates/esm/orient2d.js","webpack://lida/./node_modules/robust-predicates/esm/orient3d.js","webpack://lida/./node_modules/robust-predicates/esm/incircle.js","webpack://lida/./node_modules/robust-predicates/esm/insphere.js","webpack://lida/./node_modules/delaunator/index.js","webpack://lida/./node_modules/d3-delaunay/src/path.js","webpack://lida/./node_modules/d3-delaunay/src/polygon.js","webpack://lida/./node_modules/d3-delaunay/src/voronoi.js","webpack://lida/./node_modules/d3-delaunay/src/delaunay.js","webpack://lida/./node_modules/vega/node_modules/vega-voronoi/build/vega-voronoi.module.js","webpack://lida/./node_modules/vega/node_modules/vega-wordcloud/build/vega-wordcloud.module.js","webpack://lida/./node_modules/vega/node_modules/vega-crossfilter/build/vega-crossfilter.module.js","webpack://lida/./node_modules/d3-array/src/permute.js","webpack://lida/./node_modules/vega/node_modules/vega-loader/build/vega-loader.browser.module.js","webpack://lida/./node_modules/vega-expression/build/vega-expression.module.js","webpack://lida/./node_modules/d3-geo/src/area.js","webpack://lida/./node_modules/d3-geo/src/bounds.js","webpack://lida/./node_modules/d3-geo/src/centroid.js","webpack://lida/./node_modules/vega-selections/build/vega-selection.module.js","webpack://lida/./node_modules/vega-selections/node_modules/d3-array/src/ascending.js","webpack://lida/./node_modules/vega-selections/node_modules/d3-array/src/descending.js","webpack://lida/./node_modules/vega-selections/node_modules/d3-array/src/bisector.js","webpack://lida/./node_modules/vega-selections/node_modules/d3-array/src/union.js","webpack://lida/./node_modules/vega-selections/node_modules/d3-array/src/intersection.js","webpack://lida/./node_modules/vega-functions/build/vega-functions.module.js","webpack://lida/./node_modules/vega/node_modules/vega-runtime/build/vega-runtime.module.js","webpack://lida/./node_modules/vega/node_modules/vega-view/build/vega-view.module.js","webpack://lida/./node_modules/d3-timer/src/interval.js","webpack://lida/./node_modules/vega-event-selector/build/vega-event-selector.module.js","webpack://lida/./node_modules/vega/node_modules/vega-parser/build/vega-parser.module.js","webpack://lida/./node_modules/vega/build/vega.module.js","webpack://lida/./node_modules/vega-interpreter/build/vega-interpreter.module.js","webpack://lida/./node_modules/vega-lite/build/src/logical.js","webpack://lida/./node_modules/vega-lite/build/src/util.js","webpack://lida/./node_modules/vega-lite/build/src/channel.js","webpack://lida/./node_modules/vega-lite/build/src/aggregate.js","webpack://lida/./node_modules/vega-lite/build/src/bin.js","webpack://lida/./node_modules/vega-lite/build/src/expr.js","webpack://lida/./node_modules/vega-lite/build/src/title.js","webpack://lida/./node_modules/vega-lite/build/src/vega.schema.js","webpack://lida/./node_modules/vega-lite/build/src/compile/common.js","webpack://lida/./node_modules/vega-lite/build/src/log/message.js","webpack://lida/./node_modules/vega-lite/build/src/log/index.js","webpack://lida/./node_modules/vega-lite/build/src/datetime.js","webpack://lida/./node_modules/vega-lite/build/src/timeunit.js","webpack://lida/./node_modules/vega-lite/build/src/predicate.js","webpack://lida/./node_modules/vega-lite/build/src/type.js","webpack://lida/./node_modules/vega-lite/build/src/scale.js","webpack://lida/./node_modules/vega-lite/build/src/mark.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/encode/valueref.js","webpack://lida/./node_modules/vega-lite/build/src/compile/format.js","webpack://lida/./node_modules/vega-lite/build/src/sort.js","webpack://lida/./node_modules/vega-lite/build/src/spec/facet.js","webpack://lida/./node_modules/vega-lite/build/src/channeldef.js","webpack://lida/./node_modules/vega-lite/build/src/axis.js","webpack://lida/./node_modules/vega-lite/build/src/spec/unit.js","webpack://lida/./node_modules/vega-lite/build/src/compositemark/base.js","webpack://lida/./node_modules/vega-lite/build/src/encoding.js","webpack://lida/./node_modules/vega-lite/build/src/compositemark/common.js","webpack://lida/./node_modules/vega-lite/build/src/compositemark/boxplot.js","webpack://lida/./node_modules/vega-lite/build/src/compositemark/errorbar.js","webpack://lida/./node_modules/vega-lite/build/src/compositemark/errorband.js","webpack://lida/./node_modules/vega-lite/build/src/compositemark/index.js","webpack://lida/./node_modules/vega-lite/build/src/guide.js","webpack://lida/./node_modules/vega-lite/build/src/header.js","webpack://lida/./node_modules/vega-lite/build/src/legend.js","webpack://lida/./node_modules/vega-lite/build/src/selection.js","webpack://lida/./node_modules/vega-lite/build/src/parameter.js","webpack://lida/./node_modules/vega-lite/build/src/spec/concat.js","webpack://lida/./node_modules/vega-lite/build/src/spec/base.js","webpack://lida/./node_modules/vega-lite/build/src/config.js","webpack://lida/./node_modules/vega-lite/build/src/spec/layer.js","webpack://lida/./node_modules/vega-lite/build/src/spec/map.js","webpack://lida/./node_modules/vega-lite/build/src/spec/repeat.js","webpack://lida/./node_modules/vega-lite/build/src/stack.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/init.js","webpack://lida/./node_modules/vega-lite/build/src/normalize/pathoverlay.js","webpack://lida/./node_modules/vega-lite/build/src/normalize/repeater.js","webpack://lida/./node_modules/vega-lite/build/src/normalize/ruleforrangedline.js","webpack://lida/./node_modules/vega-lite/build/src/normalize/core.js","webpack://lida/./node_modules/vega-lite/build/src/transform.js","webpack://lida/./node_modules/vega-lite/build/src/normalize/selectioncompat.js","webpack://lida/./node_modules/vega-lite/build/src/normalize/toplevelselection.js","webpack://lida/./node_modules/vega-lite/build/src/normalize/index.js","webpack://lida/./node_modules/vega-lite/build/src/spec/toplevel.js","webpack://lida/./node_modules/vega-lite/build/src/compile/split.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/index.js","webpack://lida/./node_modules/vega-lite/build/src/data.js","webpack://lida/./node_modules/vega-lite/build/src/compile/selection/assemble.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/dataflow.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/timeunit.js","webpack://lida/./node_modules/vega-lite/build/src/compile/selection/project.js","webpack://lida/./node_modules/vega-lite/build/src/compile/selection/scales.js","webpack://lida/./node_modules/vega-lite/build/src/compile/selection/interval.js","webpack://lida/./node_modules/vega-lite/build/src/compile/selection/point.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/encode/conditional.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/encode/text.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/encode/tooltip.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/encode/aria.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/encode/nonposition.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/encode/color.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/encode/offset.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/encode/position-point.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/encode/position-align.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/encode/position-range.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/encode/position-rect.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/encode/base.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/encode/zindex.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/encode/defined.js","webpack://lida/./node_modules/vega-lite/build/src/compile/selection/nearest.js","webpack://lida/./node_modules/vega-lite/build/src/compile/selection/inputs.js","webpack://lida/./node_modules/vega-lite/build/src/compile/selection/toggle.js","webpack://lida/./node_modules/vega-lite/build/src/compile/selection/clear.js","webpack://lida/./node_modules/vega-lite/build/src/compile/selection/legends.js","webpack://lida/./node_modules/vega-lite/build/src/compile/selection/translate.js","webpack://lida/./node_modules/vega-lite/build/src/compile/selection/zoom.js","webpack://lida/./node_modules/vega-lite/build/src/compile/selection/index.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/expressions.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/filter.js","webpack://lida/./node_modules/vega-lite/build/src/compile/selection/parse.js","webpack://lida/./node_modules/vega-lite/build/src/compile/predicate.js","webpack://lida/./node_modules/vega-lite/build/src/compile/axis/assemble.js","webpack://lida/./node_modules/vega-lite/build/src/compile/axis/config.js","webpack://lida/./node_modules/vega-lite/build/src/compile/axis/properties.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/calculate.js","webpack://lida/./node_modules/vega-lite/build/src/compile/header/common.js","webpack://lida/./node_modules/vega-lite/build/src/compile/header/component.js","webpack://lida/./node_modules/vega-lite/build/src/compile/header/assemble.js","webpack://lida/./node_modules/vega-lite/build/src/compile/layoutsize/assemble.js","webpack://lida/./node_modules/vega-lite/build/src/compile/layoutsize/component.js","webpack://lida/./node_modules/vega-lite/build/src/compile/guide.js","webpack://lida/./node_modules/vega-lite/build/src/compile/resolve.js","webpack://lida/./node_modules/vega-lite/build/src/compile/legend/component.js","webpack://lida/./node_modules/vega-lite/build/src/compile/legend/encode.js","webpack://lida/./node_modules/vega-lite/build/src/compile/legend/properties.js","webpack://lida/./node_modules/vega-lite/build/src/compile/legend/parse.js","webpack://lida/./node_modules/vega-lite/build/src/compile/legend/assemble.js","webpack://lida/./node_modules/vega-lite/build/src/compile/projection/assemble.js","webpack://lida/./node_modules/vega-lite/build/src/projection.js","webpack://lida/./node_modules/vega-lite/build/src/compile/projection/component.js","webpack://lida/./node_modules/vega-lite/build/src/compile/projection/parse.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/bin.js","webpack://lida/./node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toArray.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/aggregate.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/facet.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/formatparse.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/identifier.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/graticule.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/sequence.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/source.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/optimizer.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/optimizers.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/joinaggregate.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/stack.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/window.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/subtree.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/optimize.js","webpack://lida/./node_modules/vega-lite/build/src/compile/signal.js","webpack://lida/./node_modules/vega-lite/build/src/compile/scale/domain.js","webpack://lida/./node_modules/vega-lite/build/src/compile/scale/assemble.js","webpack://lida/./node_modules/vega-lite/build/src/compile/scale/component.js","webpack://lida/./node_modules/vega-lite/build/src/compile/scale/range.js","webpack://lida/./node_modules/vega-lite/build/src/compile/scale/properties.js","webpack://lida/./node_modules/vega-lite/build/src/compile/scale/type.js","webpack://lida/./node_modules/vega-lite/build/src/compile/scale/parse.js","webpack://lida/./node_modules/vega-lite/build/src/compile/model.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/density.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/extent.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/filterinvalid.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/flatten.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/fold.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/geojson.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/geopoint.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/impute.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/loess.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/lookup.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/quantile.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/regression.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/pivot.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/sample.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/assemble.js","webpack://lida/./node_modules/vega-lite/build/src/compile/header/parse.js","webpack://lida/./node_modules/vega-lite/build/src/compile/layoutsize/parse.js","webpack://lida/./node_modules/vega-lite/build/src/compile/facet.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/parse.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/joinaggregatefacet.js","webpack://lida/./node_modules/vega-lite/build/src/compile/concat.js","webpack://lida/./node_modules/vega-lite/build/src/compile/axis/component.js","webpack://lida/./node_modules/vega-lite/build/src/compile/axis/encode.js","webpack://lida/./node_modules/vega-lite/build/src/compile/axis/parse.js","webpack://lida/./node_modules/vega-lite/build/src/compile/layoutsize/init.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/arc.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/area.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/bar.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/geoshape.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/image.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/line.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/point.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/rect.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/rule.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/text.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/tick.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/mark.js","webpack://lida/./node_modules/vega-lite/build/src/compile/unit.js","webpack://lida/./node_modules/vega-lite/build/src/compile/layer.js","webpack://lida/./node_modules/vega-lite/build/src/compile/buildmodel.js","webpack://lida/./node_modules/vega-lite/build/src/compile/compile.js","webpack://lida/./node_modules/vega-lite/build/src/index.js","webpack://lida/./node_modules/react-vega/node_modules/vega-schema-url-parser/dist/parser.module.js","webpack://lida/./node_modules/vega-themes/build/vega-themes.module.js","webpack://lida/./node_modules/react-vega/node_modules/vega-tooltip/build/vega-tooltip.module.js","webpack://lida/./node_modules/react-vega/node_modules/vega-embed/build/vega-embed.module.js","webpack://lida/./node_modules/react-vega/esm/utils/updateMultipleDatasetsInView.js","webpack://lida/./node_modules/react-vega/esm/utils/updateSingleDatasetInView.js","webpack://lida/./node_modules/react-vega/esm/utils/isFunction.js","webpack://lida/./node_modules/react-vega/esm/utils/getUniqueFieldNames.js","webpack://lida/./node_modules/react-vega/esm/constants.js","webpack://lida/./node_modules/react-vega/esm/utils/addSignalListenersToView.js","webpack://lida/./node_modules/react-vega/esm/utils/removeSignalListenersFromView.js","webpack://lida/./node_modules/react-vega/esm/utils/combineSpecWithDimension.js","webpack://lida/./node_modules/react-vega/esm/VegaEmbed.js","webpack://lida/./node_modules/react-vega/esm/utils/computeSpecChanges.js","webpack://lida/./node_modules/react-vega/esm/Vega.js","webpack://lida/./src/components/views/chartview/chartraster.tsx","webpack://lida/./node_modules/@heroicons/react/24/outline/esm/CodeBracketIcon.js","webpack://lida/./src/components/views/chartview/codeview.tsx","webpack://lida/./src/components/views/chartview/chartexplainer.tsx","webpack://lida/./node_modules/@heroicons/react/24/solid/esm/StarIcon.js","webpack://lida/./node_modules/@antv/g2/esm/constant.js","webpack://lida/./node_modules/@antv/dom-util/esm/create-dom.js","webpack://lida/./node_modules/@antv/g2/esm/engine/index.js","webpack://lida/./node_modules/@antv/dom-util/esm/modify-css.js","webpack://lida/./node_modules/@antv/g2/esm/util/dom.js","webpack://lida/./node_modules/@antv/g2/esm/base.js","webpack://lida/./node_modules/@antv/adjust/esm/adjusts/adjust.js","webpack://lida/./node_modules/@antv/adjust/esm/constant.js","webpack://lida/./node_modules/@antv/adjust/esm/factory.js","webpack://lida/./node_modules/@antv/adjust/node_modules/tslib/tslib.es6.js","webpack://lida/./node_modules/@antv/adjust/esm/adjusts/dodge.js","webpack://lida/./node_modules/@antv/adjust/esm/adjusts/jitter.js","webpack://lida/./node_modules/@antv/adjust/esm/adjusts/stack.js","webpack://lida/./node_modules/@antv/adjust/esm/adjusts/symmetric.js","webpack://lida/./node_modules/@antv/adjust/esm/index.js","webpack://lida/./node_modules/@antv/attr/esm/attributes/base.js","webpack://lida/./node_modules/@antv/color-util/esm/index.js","webpack://lida/./node_modules/@antv/attr/esm/attributes/color.js","webpack://lida/./node_modules/@antv/attr/esm/attributes/opacity.js","webpack://lida/./node_modules/@antv/attr/esm/attributes/position.js","webpack://lida/./node_modules/@antv/attr/esm/attributes/shape.js","webpack://lida/./node_modules/@antv/attr/esm/attributes/size.js","webpack://lida/./node_modules/@antv/scale/esm/tick-method/register.js","webpack://lida/./node_modules/@antv/scale/esm/base.js","webpack://lida/./node_modules/@antv/scale/esm/category/base.js","webpack://lida/./node_modules/fecha/lib/fecha.js","webpack://lida/./node_modules/@antv/scale/esm/util/time.js","webpack://lida/./node_modules/@antv/scale/esm/util/bisector.js","webpack://lida/./node_modules/@antv/scale/esm/category/time.js","webpack://lida/./node_modules/@antv/scale/esm/continuous/base.js","webpack://lida/./node_modules/@antv/scale/esm/continuous/linear.js","webpack://lida/./node_modules/@antv/scale/esm/util/math.js","webpack://lida/./node_modules/@antv/scale/esm/continuous/log.js","webpack://lida/./node_modules/@antv/scale/esm/continuous/pow.js","webpack://lida/./node_modules/@antv/scale/esm/continuous/time.js","webpack://lida/./node_modules/@antv/scale/esm/continuous/quantize.js","webpack://lida/./node_modules/@antv/scale/esm/continuous/quantile.js","webpack://lida/./node_modules/@antv/scale/esm/factory.js","webpack://lida/./node_modules/@antv/scale/esm/identity/index.js","webpack://lida/./node_modules/@antv/scale/esm/tick-method/cat.js","webpack://lida/./node_modules/@antv/scale/esm/util/d3-linear.js","webpack://lida/./node_modules/@antv/scale/esm/util/interval.js","webpack://lida/./node_modules/@antv/scale/esm/util/strict-limit.js","webpack://lida/./node_modules/@antv/scale/esm/util/pretty-number.js","webpack://lida/./node_modules/@antv/scale/esm/util/extended.js","webpack://lida/./node_modules/@antv/scale/esm/util/pretty.js","webpack://lida/./node_modules/@antv/scale/esm/tick-method/quantile.js","webpack://lida/./node_modules/@antv/scale/esm/tick-method/time-pretty.js","webpack://lida/./node_modules/@antv/scale/esm/tick-method/index.js","webpack://lida/./node_modules/@antv/scale/esm/tick-method/time-cat.js","webpack://lida/./node_modules/@antv/scale/esm/tick-method/linear.js","webpack://lida/./node_modules/@antv/scale/esm/tick-method/r-prettry.js","webpack://lida/./node_modules/@antv/scale/esm/tick-method/time.js","webpack://lida/./node_modules/@antv/scale/esm/tick-method/log.js","webpack://lida/./node_modules/@antv/scale/esm/tick-method/pow.js","webpack://lida/./node_modules/@antv/scale/esm/tick-method/d3-linear.js","webpack://lida/./node_modules/@antv/scale/esm/index.js","webpack://lida/./node_modules/@antv/attr/esm/factory.js","webpack://lida/./node_modules/@antv/attr/esm/index.js","webpack://lida/./node_modules/gl-matrix/esm/vec3.js","webpack://lida/./node_modules/@antv/coord/esm/coord/base.js","webpack://lida/./node_modules/@antv/coord/esm/coord/cartesian.js","webpack://lida/./node_modules/@antv/coord/esm/coord/helix.js","webpack://lida/./node_modules/@antv/coord/esm/coord/polar.js","webpack://lida/./node_modules/@antv/coord/esm/factory.js","webpack://lida/./node_modules/@antv/component/esm/util/event.js","webpack://lida/./node_modules/@antv/coord/esm/index.js","webpack://lida/./node_modules/@antv/component/esm/util/matrix.js","webpack://lida/./node_modules/@antv/component/esm/util/util.js","webpack://lida/./node_modules/@antv/component/esm/abstract/component.js","webpack://lida/./node_modules/@antv/component/esm/abstract/group-component.js","webpack://lida/./node_modules/@antv/component/esm/util/text.js","webpack://lida/./node_modules/@antv/component/esm/util/label.js","webpack://lida/./node_modules/@antv/component/esm/util/graphic.js","webpack://lida/./node_modules/@antv/component/esm/util/theme.js","webpack://lida/./node_modules/@antv/component/esm/annotation/line.js","webpack://lida/./node_modules/@antv/component/esm/annotation/text.js","webpack://lida/./node_modules/@antv/component/esm/annotation/arc.js","webpack://lida/./node_modules/@antv/component/esm/annotation/region.js","webpack://lida/./node_modules/@antv/component/esm/annotation/image.js","webpack://lida/./node_modules/@antv/component/esm/annotation/data-marker.js","webpack://lida/./node_modules/@antv/component/esm/annotation/data-region.js","webpack://lida/./node_modules/@antv/component/esm/annotation/region-filter.js","webpack://lida/./node_modules/@antv/component/esm/annotation/shape.js","webpack://lida/./node_modules/@antv/dom-util/esm/get-style.js","webpack://lida/./node_modules/@antv/dom-util/esm/get-outer-width.js","webpack://lida/./node_modules/@antv/dom-util/esm/get-width.js","webpack://lida/./node_modules/@antv/dom-util/esm/get-outer-height.js","webpack://lida/./node_modules/@antv/dom-util/esm/get-height.js","webpack://lida/./node_modules/@antv/component/esm/abstract/html-component.js","webpack://lida/./node_modules/@antv/component/esm/annotation/html.js","webpack://lida/./node_modules/@antv/component/esm/util/state.js","webpack://lida/./node_modules/@antv/component/esm/axis/base.js","webpack://lida/./node_modules/@antv/component/esm/axis/overlap/auto-ellipsis.js","webpack://lida/./node_modules/@antv/component/esm/axis/overlap/auto-hide.js","webpack://lida/./node_modules/@antv/component/esm/axis/overlap/auto-rotate.js","webpack://lida/./node_modules/@antv/component/esm/axis/line.js","webpack://lida/./node_modules/@antv/component/esm/crosshair/html-theme.js","webpack://lida/./node_modules/@antv/component/esm/axis/circle.js","webpack://lida/./node_modules/@antv/component/esm/crosshair/base.js","webpack://lida/./node_modules/@antv/component/esm/crosshair/line.js","webpack://lida/./node_modules/@antv/component/esm/crosshair/circle.js","webpack://lida/./node_modules/@antv/component/esm/crosshair/css-const.js","webpack://lida/./node_modules/@antv/component/esm/crosshair/html.js","webpack://lida/./node_modules/@antv/component/esm/grid/base.js","webpack://lida/./node_modules/@antv/component/esm/grid/circle.js","webpack://lida/./node_modules/@antv/component/esm/tooltip/html-theme.js","webpack://lida/./node_modules/@antv/component/esm/grid/line.js","webpack://lida/./node_modules/@antv/component/esm/legend/base.js","webpack://lida/./node_modules/@antv/component/esm/legend/category.js","webpack://lida/./node_modules/@antv/component/esm/legend/continuous.js","webpack://lida/./node_modules/@antv/component/esm/tooltip/css-const.js","webpack://lida/./node_modules/@antv/component/esm/tooltip/html.js","webpack://lida/./node_modules/@antv/component/esm/util/align.js","webpack://lida/./node_modules/@antv/component/esm/trend/constant.js","webpack://lida/./node_modules/@antv/component/esm/trend/path.js","webpack://lida/./node_modules/@antv/component/esm/trend/trend.js","webpack://lida/./node_modules/@antv/component/esm/slider/handler.js","webpack://lida/./node_modules/@antv/component/esm/slider/constant.js","webpack://lida/./node_modules/@antv/component/esm/slider/slider.js","webpack://lida/./node_modules/@antv/dom-util/esm/add-event-listener.js","webpack://lida/./node_modules/@antv/component/esm/scrollbar/scrollbar.js","webpack://lida/./node_modules/@antv/g2/esm/dependents.js","webpack://lida/./node_modules/@antv/g2/esm/util/graphics.js","webpack://lida/./node_modules/@antv/g2/esm/util/helper.js","webpack://lida/./node_modules/@antv/g2/esm/util/bbox.js","webpack://lida/./node_modules/@antv/g2/esm/util/coordinate.js","webpack://lida/./node_modules/@antv/g2/esm/util/scale.js","webpack://lida/./node_modules/@antv/g2/esm/util/axis.js","webpack://lida/./node_modules/@antv/g2/esm/facet/facet.js","webpack://lida/./node_modules/@antv/g2/esm/facet/index.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/base.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/callback.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/register.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/util/path.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/util.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/context.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/interaction.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/grammar-interaction.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/index.js","webpack://lida/./node_modules/@antv/g2/esm/theme/util/create-by-style-sheet.js","webpack://lida/./node_modules/@antv/g2/esm/theme/style-sheet/light.js","webpack://lida/./node_modules/@antv/g2/esm/theme/util/create-theme.js","webpack://lida/./node_modules/@antv/g2/esm/theme/index.js","webpack://lida/./node_modules/@antv/g2/esm/util/tooltip.js","webpack://lida/./node_modules/@antv/g2/esm/util/padding.js","webpack://lida/./node_modules/@antv/g2/esm/chart/controller/index.js","webpack://lida/./node_modules/@antv/g2/esm/chart/controller/coordinate.js","webpack://lida/./node_modules/@antv/g2/esm/chart/event.js","webpack://lida/./node_modules/@antv/g2/esm/chart/layout/index.js","webpack://lida/./node_modules/@antv/g2/esm/chart/util/scale-pool.js","webpack://lida/./node_modules/@antv/g2/esm/chart/layout/padding-cal.js","webpack://lida/./node_modules/@antv/g2/esm/chart/layout/auto.js","webpack://lida/./node_modules/@antv/g2/esm/chart/util/sync-view-padding.js","webpack://lida/./node_modules/@antv/g2/esm/chart/view.js","webpack://lida/./node_modules/@antv/g2/esm/chart/chart.js","webpack://lida/./node_modules/@antv/g2/esm/chart/controller/base.js","webpack://lida/./node_modules/@antv/g2/esm/chart/controller/tooltip.js","webpack://lida/./node_modules/@antv/g2/esm/animate/animation/index.js","webpack://lida/./node_modules/@antv/g2/esm/animate/index.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/constant.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/element/index.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/label/index.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/base.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/util/is-model-change.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/util/parse-fields.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/util/diff.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/base.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/util/group-data.js","webpack://lida/./node_modules/@antv/g2/esm/util/transform.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/label/util/index.js","webpack://lida/./node_modules/@antv/g2/esm/component/update-label.js","webpack://lida/./node_modules/@antv/g2/esm/component/labels.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/label/base.js","webpack://lida/./node_modules/@antv/g2/esm/util/attr.js","webpack://lida/./node_modules/@antv/g2/esm/util/marker.js","webpack://lida/./node_modules/@antv/g2/esm/util/legend.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/util/get-path-points.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/util/get-style.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/util/split-points.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/line/util.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/line/index.js","webpack://lida/./node_modules/@antv/g2/esm/core.js","webpack://lida/./node_modules/@antv/g2/esm/theme/style-sheet/dark.js","webpack://lida/./node_modules/@antv/g-canvas/esm/util/util.js","webpack://lida/./node_modules/@antv/g-canvas/esm/util/parse.js","webpack://lida/./node_modules/@antv/g-canvas/esm/util/arc-params.js","webpack://lida/./node_modules/@antv/g-canvas/esm/util/arrow.js","webpack://lida/./node_modules/@antv/g-canvas/esm/util/draw.js","webpack://lida/./node_modules/@antv/g-canvas/esm/group.js","webpack://lida/./node_modules/@antv/g-canvas/esm/shape/base.js","webpack://lida/./node_modules/@antv/g-canvas/esm/shape/circle.js","webpack://lida/./node_modules/@antv/g-canvas/esm/shape/ellipse.js","webpack://lida/./node_modules/@antv/g-canvas/esm/shape/image.js","webpack://lida/./node_modules/@antv/g-canvas/esm/util/in-stroke/line.js","webpack://lida/./node_modules/@antv/g-canvas/esm/shape/line.js","webpack://lida/./node_modules/@antv/g-canvas/esm/shape/marker.js","webpack://lida/./node_modules/@antv/g-canvas/esm/util/in-path/point-in-path.js","webpack://lida/./node_modules/@antv/g-canvas/esm/util/in-path/polygon.js","webpack://lida/./node_modules/@antv/g-canvas/esm/util/in-stroke/arc.js","webpack://lida/./node_modules/@antv/g-canvas/esm/util/path.js","webpack://lida/./node_modules/@antv/g-canvas/esm/shape/path.js","webpack://lida/./node_modules/@antv/g-canvas/esm/util/in-stroke/polyline.js","webpack://lida/./node_modules/@antv/g-canvas/esm/shape/polygon.js","webpack://lida/./node_modules/@antv/g-canvas/esm/shape/polyline.js","webpack://lida/./node_modules/@antv/g-canvas/esm/shape/rect.js","webpack://lida/./node_modules/@antv/g-canvas/esm/util/in-stroke/rect-radius.js","webpack://lida/./node_modules/@antv/g-canvas/esm/util/in-stroke/rect.js","webpack://lida/./node_modules/@antv/g-canvas/esm/shape/text.js","webpack://lida/./node_modules/@antv/g-canvas/esm/util/hit.js","webpack://lida/./node_modules/@antv/g-canvas/esm/canvas.js","webpack://lida/./node_modules/@antv/g-canvas/esm/index.js","webpack://lida/./node_modules/@antv/g-svg/esm/constant.js","webpack://lida/./node_modules/@antv/g-svg/esm/util/dom.js","webpack://lida/./node_modules/@antv/g-svg/esm/util/svg.js","webpack://lida/./node_modules/@antv/g-svg/esm/util/draw.js","webpack://lida/./node_modules/@antv/g-svg/esm/group.js","webpack://lida/./node_modules/@antv/g-svg/esm/shape/base.js","webpack://lida/./node_modules/@antv/g-svg/esm/shape/circle.js","webpack://lida/./node_modules/@antv/g-svg/esm/shape/dom.js","webpack://lida/./node_modules/@antv/g-svg/esm/shape/ellipse.js","webpack://lida/./node_modules/@antv/g-svg/esm/shape/image.js","webpack://lida/./node_modules/@antv/g-svg/esm/shape/line.js","webpack://lida/./node_modules/@antv/g-svg/esm/shape/marker/symbols.js","webpack://lida/./node_modules/@antv/g-svg/esm/shape/marker/index.js","webpack://lida/./node_modules/@antv/g-svg/esm/shape/path.js","webpack://lida/./node_modules/@antv/g-svg/esm/shape/polygon.js","webpack://lida/./node_modules/@antv/g-svg/esm/shape/polyline.js","webpack://lida/./node_modules/@antv/g-svg/esm/shape/rect.js","webpack://lida/./node_modules/@antv/g-svg/esm/util/format.js","webpack://lida/./node_modules/@antv/g-svg/esm/shape/text.js","webpack://lida/./node_modules/@antv/g-svg/esm/defs/gradient.js","webpack://lida/./node_modules/@antv/g-svg/esm/defs/shadow.js","webpack://lida/./node_modules/@antv/g-svg/esm/defs/arrow.js","webpack://lida/./node_modules/@antv/g-svg/esm/defs/clip.js","webpack://lida/./node_modules/@antv/g-svg/esm/defs/pattern.js","webpack://lida/./node_modules/@antv/g-svg/esm/defs/index.js","webpack://lida/./node_modules/@antv/g-svg/esm/canvas.js","webpack://lida/./node_modules/@antv/g-svg/esm/index.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/path.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/area/util.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/area/index.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/area.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/edge/index.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/edge.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/heatmap.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/interval/util.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/interval/index.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/util/shape-size.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/interval.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/line.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/point/util.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/point/index.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/point.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/polygon/index.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/polygon.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/schema.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/schema/index.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/violin/index.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/violin.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/edge/util.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/area/line.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/area/smooth.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/area/smooth-line.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/edge/arc.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/edge/smooth.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/edge/vhv.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/interval/funnel.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/interval/hollow-rect.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/interval/line.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/interval/pyramid.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/interval/tick.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/line/step.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/schema/box.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/schema/candle.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/polygon/square.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/point/hollow.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/point/image.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/point/solid.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/violin/smooth.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/violin/hollow.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/label/interval.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/label/polar.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/label/pie.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/label/layout/pie/util.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/label/layout/pie/outer.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/label/layout/pie/spider.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/label/layout/overlap.js","webpack://lida/./node_modules/@antv/g2/esm/util/collision-detect.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/label/util/createWorker.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/label/layout/worker/hide-overlap.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/label/layout/hide-overlap.js","webpack://lida/./node_modules/@antv/g2/esm/util/color.js","webpack://lida/./node_modules/@antv/g2/esm/util/context.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/label/layout/interval/adjust-position.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/label/layout/point/adjust-position.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/label/layout/path/adjust-position.js","webpack://lida/./node_modules/@antv/g2/esm/util/text.js","webpack://lida/./node_modules/@antv/g2/esm/animate/animation/util.js","webpack://lida/./node_modules/@antv/g2/esm/animate/animation/sector-path-update.js","webpack://lida/./node_modules/@antv/g2/esm/animate/animation/zoom.js","webpack://lida/./node_modules/@antv/g2/esm/util/facet.js","webpack://lida/./node_modules/@antv/g2/esm/facet/circle.js","webpack://lida/./node_modules/@antv/g2/esm/facet/list.js","webpack://lida/./node_modules/@antv/g2/esm/facet/matrix.js","webpack://lida/./node_modules/@antv/g2/esm/facet/mirror.js","webpack://lida/./node_modules/@antv/g2/esm/facet/rect.js","webpack://lida/./node_modules/@antv/g2/esm/facet/tree.js","webpack://lida/./node_modules/@antv/g2/esm/util/stat.js","webpack://lida/./node_modules/@antv/g2/esm/util/annotation.js","webpack://lida/./node_modules/@antv/g2/esm/chart/controller/annotation.js","webpack://lida/./node_modules/@antv/g2/esm/util/grid.js","webpack://lida/./node_modules/@antv/g2/esm/chart/controller/axis.js","webpack://lida/./node_modules/@antv/g2/esm/util/direction.js","webpack://lida/./node_modules/@antv/g2/esm/chart/controller/legend.js","webpack://lida/./node_modules/@antv/g2/esm/chart/controller/slider.js","webpack://lida/./node_modules/@antv/g2/esm/chart/controller/scrollbar.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/active-region.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/component/tooltip/geometry.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/component/tooltip/sibling.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/component/tooltip/ellipsis-text.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/element/state-base.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/element/state.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/element/active.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/element/link-by-color.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/element/range-state.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/element/range-active.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/element/single-state.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/element/single-active.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/element/highlight-util.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/element/highlight.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/element/range-highlight.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/element/highlight-by-color.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/element/highlight-by-x.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/element/single-highlight.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/element/range-selected.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/element/selected.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/element/single-selected.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/component/list-state.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/component/list-active.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/component/list-highlight-util.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/component/list-highlight.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/component/list-selected.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/component/list-unchecked.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/component/list-checked.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/component/list-focus.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/component/list-radio.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/mask/base.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/mask/circle.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/mask/rect.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/mask/dim-rect.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/mask/path.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/mask/smooth-path.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/data/range-filter.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/mask/multiple/base.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/mask/multiple/rect.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/mask/multiple/dim-rect.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/mask/multiple/circle.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/mask/multiple/path.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/mask/multiple/smooth-path.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/cursor.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/data/filter.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/data/sibling-filter.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/element/filter.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/element/sibling-filter.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/view/button.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/view/drag.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/view/move.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/view/scale-transform.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/view/scale-translate.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/view/scale-zoom.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/view/mousewheel-scroll.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/component/axis/axis-description.js","webpack://lida/./node_modules/@antv/g2/esm/index.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/label/layout/pie/distribute.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/label/layout/limit-in-shape.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/label/layout/limit-in-canvas.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/label/layout/limit-in-plot.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/label/layout/adjust-color.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/label/layout/interval/hide-overlap.js","webpack://lida/./node_modules/@antv/g2/esm/animate/animation/fade.js","webpack://lida/./node_modules/@antv/g2/esm/animate/animation/grow-in.js","webpack://lida/./node_modules/@antv/g2/esm/animate/animation/scale-in.js","webpack://lida/./node_modules/@antv/g2/esm/animate/animation/wave-in.js","webpack://lida/./node_modules/@antv/g2/esm/animate/animation/position-update.js","webpack://lida/./node_modules/@antv/g2/esm/animate/animation/path-in.js","webpack://lida/./node_modules/@antv/g2plot/esm/constant.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/invariant.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/pick.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/data.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/deep-assign.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/context.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/dom.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/flow.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/geometry.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/label.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/measure-text.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/number.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/padding.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/path.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/kebab-case.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/statistic.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/template.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/view.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/pattern/util.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/pattern/dot.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/pattern/line.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/pattern/square.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/pattern/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/adaptor/pattern.js","webpack://lida/./node_modules/@antv/g2plot/esm/adaptor/common.js","webpack://lida/./node_modules/@antv/g2plot/esm/core/global.js","webpack://lida/./node_modules/@antv/g2plot/esm/core/locale.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/tooltip.js","webpack://lida/./node_modules/@antv/g2plot/esm/adaptor/geometries/base.js","webpack://lida/./node_modules/@antv/g2plot/esm/adaptor/geometries/area.js","webpack://lida/./node_modules/@antv/g2plot/esm/adaptor/geometries/edge.js","webpack://lida/./node_modules/@antv/g2plot/esm/adaptor/geometries/interval.js","webpack://lida/./node_modules/@antv/g2plot/esm/adaptor/geometries/line.js","webpack://lida/./node_modules/@antv/g2plot/esm/adaptor/geometries/point.js","webpack://lida/./node_modules/@antv/g2plot/esm/adaptor/geometries/polygon.js","webpack://lida/./node_modules/@antv/g2plot/esm/adaptor/geometries/schema.js","webpack://lida/./node_modules/@antv/g2plot/esm/core/plot.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/transform/percent.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/line/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/area/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/area/constants.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/area/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/interactions/actions/reset-button.js","webpack://lida/./node_modules/@antv/g2plot/esm/interactions/brush.js","webpack://lida/./node_modules/@antv/g2plot/esm/adaptor/brush.js","webpack://lida/./node_modules/@antv/g2plot/esm/adaptor/connected-area.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/conversion.js","webpack://lida/./node_modules/@antv/g2plot/esm/adaptor/conversion-tag.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/column/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/bar/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/bar/constants.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/funnel/constant.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/bar/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/column/constants.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/column/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/funnel/geometries/common.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/funnel/geometries/basic.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/funnel/geometries/compare.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/funnel/geometries/dynamic-height.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/funnel/geometries/facet.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/funnel/interactions/funnel-conversion-tag.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/funnel/interactions/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/funnel/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/funnel/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/gauge/constants.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/gauge/utils.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/gauge/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/gauge/shapes/indicator.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/gauge/shapes/meter-gauge.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/gauge/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/transform/histogram.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/histogram/constant.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/histogram/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/histogram/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/line/constants.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/line/interactions/marker-active.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/line/interactions/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/line/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/pie/contants.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/matrix.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/pie/interactions/actions/legend-active.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/pie/interactions/actions/statistic-active.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/pie/interactions/util.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/pie/interactions/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/pie/utils.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/pie/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/pie/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/progress/constants.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/progress/utils.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/progress/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/progress/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/ring-progress/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/ring-progress/constants.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/ring-progress/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/scatter/util.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/scatter/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/scatter/constant.js","webpack://lida/./node_modules/@antv/g2plot/esm/interactions/drag-move.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/scatter/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/stock/constant.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/stock/utils.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/stock/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/stock/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/tiny-line/utils.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/tiny-line/constants.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/tiny-area/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/tiny-area/constants.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/tiny-area/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/tiny-column/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/tiny-column/constants.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/tiny-column/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/tiny-line/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/tiny-line/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/mix/utils.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/mix/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/mix/interactions/association.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/mix/interactions/utils.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/mix/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/lab.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/bidirectional-bar/constant.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/bidirectional-bar/utils.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/bidirectional-bar/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/bidirectional-bar/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/box/constant.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/box/utils.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/box/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/box/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/bullet/utils.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/bullet/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/bullet/constant.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/transform/chord.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/bullet/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/chord/constant.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/chord/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/chord/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/circle-packing/constant.js","webpack://lida/./node_modules/@antv/g2plot/esm/interactions/actions/drill-down.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/pack/enclose.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/array.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/pack/siblings.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/accessors.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/constant.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/pack/index.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/count.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/each.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/find.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/iterator.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/index.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/sum.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/sort.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/path.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/ancestors.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/descendants.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/leaves.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/links.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/hierarchy/util.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/hierarchy/pack.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/circle-packing/utils.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/circle-packing/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/interactions/drill-down.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/circle-packing/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/dual-axes/types.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/dual-axes/constant.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/dual-axes/util/option.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/dual-axes/util/legend.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/dual-axes/util/render-sider.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/dual-axes/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/dual-axes/util/geometry.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/dual-axes/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/facet/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/facet/utils.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/facet/constant.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/facet/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/heatmap/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/heatmap/constant.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/heatmap/shapes/circle.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/heatmap/shapes/square.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/heatmap/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/liquid/utils.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/liquid/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/liquid/constants.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/liquid/shapes/liquid.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/liquid/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/radar/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/radar/interactions/radar-tooltip-action.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/radar/interactions/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/radar/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/radial-bar/utils.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/radial-bar/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/radial-bar/constant.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/radial-bar/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/rose/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/rose/constant.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/sankey/constant.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/rose/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/sankey/circle.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/sankey/sankey/align.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/sankey/sankey/helper.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/sankey/sankey/sankey.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/sankey/layout.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/sankey/helper.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/sankey/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/sankey/interactions/actions/node-drag.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/sankey/interactions/node-draggable.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/sankey/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/sunburst/constant.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/treemap/round.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/treemap/dice.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/partition.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/hierarchy/partition.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/cluster.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/stratify.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/tree.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/treemap/slice.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/treemap/squarify.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/treemap/index.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/treemap/binary.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/treemap/sliceDice.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/treemap/resquarify.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/hierarchy/treemap.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/sunburst/utils.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/sunburst/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/sunburst/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/treemap/utils.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/treemap/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/treemap/constant.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/venn/constant.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/treemap/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/venn/interactions/util.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/venn/interactions/actions/active.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/venn/interactions/actions/highlight.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/venn/interactions/actions/selected.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/venn/interactions/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/venn/label.js","webpack://lida/./node_modules/lodash-es/isArray.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/@antv/path-util/esm/parse-path-string.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/@antv/path-util/esm/process/arc-2-cubic.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/venn/shape.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/color/blend.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/venn/layout/circleintersection.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/venn/layout/diagram.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/venn/layout/layout.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/venn/utils.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/venn/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/venn/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/violin/constant.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/transform/quantile.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/violin/utils.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/violin/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/adaptor/geometries/violin.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/violin/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/waterfall/constant.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/waterfall/utils.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/waterfall/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/waterfall/shape.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/waterfall/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/word-cloud/constant.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/transform/word-cloud.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/word-cloud/utils.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/word-cloud/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/word-cloud/shapes/word-cloud.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/word-cloud/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plugin/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/locales/en_US.js","webpack://lida/./node_modules/@antv/g2plot/esm/locales/zh_CN.js","webpack://lida/./node_modules/@ant-design/plots/es/utils/render.js","webpack://lida/./node_modules/@ant-design/plots/es/utils/createNode.js","webpack://lida/./node_modules/@ant-design/plots/es/utils/utils.js","webpack://lida/./node_modules/@ant-design/plots/es/hooks/useChart.js","webpack://lida/./node_modules/@ant-design/plots/es/utils/getChart.js","webpack://lida/./node_modules/@ant-design/plots/es/errorBoundary/index.js","webpack://lida/./node_modules/react-content-loader/dist/react-content-loader.es.js","webpack://lida/./node_modules/@ant-design/plots/es/utils/createLoading.js","webpack://lida/./node_modules/@ant-design/plots/es/components/radar/index.js","webpack://lida/./src/components/views/chartview/evalradar.tsx","webpack://lida/./src/components/views/chartview/chartevaluator.tsx","webpack://lida/./src/components/views/chartview/chartrecommender.tsx","webpack://lida/./src/components/views/chartview/chartview.tsx","webpack://lida/./src/components/views/chartview/index.tsx","webpack://lida/./src/components/views/generate/upload/viz.tsx","webpack://lida/./src/components/views/generate/upload/datasetupload.tsx","webpack://lida/./node_modules/@heroicons/react/24/outline/esm/AdjustmentsVerticalIcon.js","webpack://lida/./node_modules/rc-slider/es/context.js","webpack://lida/./node_modules/rc-slider/es/util.js","webpack://lida/./node_modules/rc-slider/es/Handles/Handle.js","webpack://lida/./node_modules/rc-slider/es/Handles/index.js","webpack://lida/./node_modules/rc-slider/es/hooks/useDrag.js","webpack://lida/./node_modules/rc-slider/es/Tracks/Track.js","webpack://lida/./node_modules/rc-slider/es/Tracks/index.js","webpack://lida/./node_modules/rc-slider/es/Marks/Mark.js","webpack://lida/./node_modules/rc-slider/es/Marks/index.js","webpack://lida/./node_modules/rc-slider/es/Steps/Dot.js","webpack://lida/./node_modules/rc-slider/es/Steps/index.js","webpack://lida/./node_modules/rc-slider/es/Slider.js","webpack://lida/./node_modules/rc-slider/es/hooks/useOffset.js","webpack://lida/./node_modules/rc-slider/es/index.js","webpack://lida/./node_modules/antd/es/slider/SliderTooltip.js","webpack://lida/./node_modules/antd/es/slider/style/index.js","webpack://lida/./node_modules/antd/es/slider/index.js","webpack://lida/./src/components/views/generate/controls.tsx","webpack://lida/./src/components/views/generate/generateindex.tsx","webpack://lida/./src/pages/demo.tsx","webpack://lida/./node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack://lida/./node_modules/babel-preset-gatsby/node_modules/@babel/runtime/regenerator/index.js"],"sourcesContent":["var WILDCARD = '*';\n/* event-emitter */\nvar EventEmitter = /** @class */function () {\n function EventEmitter() {\n this._events = {};\n }\n /**\n * 监听一个事件\n * @param evt\n * @param callback\n * @param once\n */\n EventEmitter.prototype.on = function (evt, callback, once) {\n if (!this._events[evt]) {\n this._events[evt] = [];\n }\n this._events[evt].push({\n callback: callback,\n once: !!once\n });\n return this;\n };\n /**\n * 监听一个事件一次\n * @param evt\n * @param callback\n */\n EventEmitter.prototype.once = function (evt, callback) {\n return this.on(evt, callback, true);\n };\n /**\n * 触发一个事件\n * @param evt\n * @param args\n */\n EventEmitter.prototype.emit = function (evt) {\n var _this = this;\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var events = this._events[evt] || [];\n var wildcardEvents = this._events[WILDCARD] || [];\n // 实际的处理 emit 方法\n var doEmit = function doEmit(es) {\n var length = es.length;\n for (var i = 0; i < length; i++) {\n if (!es[i]) {\n continue;\n }\n var _a = es[i],\n callback = _a.callback,\n once = _a.once;\n if (once) {\n es.splice(i, 1);\n if (es.length === 0) {\n delete _this._events[evt];\n }\n length--;\n i--;\n }\n callback.apply(_this, args);\n }\n };\n doEmit(events);\n doEmit(wildcardEvents);\n };\n /**\n * 取消监听一个事件,或者一个channel\n * @param evt\n * @param callback\n */\n EventEmitter.prototype.off = function (evt, callback) {\n if (!evt) {\n // evt 为空全部清除\n this._events = {};\n } else {\n if (!callback) {\n // evt 存在,callback 为空,清除事件所有方法\n delete this._events[evt];\n } else {\n // evt 存在,callback 存在,清除匹配的\n var events = this._events[evt] || [];\n var length_1 = events.length;\n for (var i = 0; i < length_1; i++) {\n if (events[i].callback === callback) {\n events.splice(i, 1);\n length_1--;\n i--;\n }\n }\n if (events.length === 0) {\n delete this._events[evt];\n }\n }\n }\n return this;\n };\n /* 当前所有的事件 */\n EventEmitter.prototype.getEvents = function () {\n return this._events;\n };\n return EventEmitter;\n}();\nexport default EventEmitter;","import { __extends } from \"tslib\";\nimport EE from '@antv/event-emitter';\nimport { mix } from '../util/util';\nvar Base = /** @class */function (_super) {\n __extends(Base, _super);\n function Base(cfg) {\n var _this = _super.call(this) || this;\n /**\n * 是否被销毁\n * @type {boolean}\n */\n _this.destroyed = false;\n var defaultCfg = _this.getDefaultCfg();\n _this.cfg = mix(defaultCfg, cfg);\n return _this;\n }\n /**\n * @protected\n * 默认的配置项\n * @returns {object} 默认的配置项\n */\n Base.prototype.getDefaultCfg = function () {\n return {};\n };\n // 实现接口的方法\n Base.prototype.get = function (name) {\n return this.cfg[name];\n };\n // 实现接口的方法\n Base.prototype.set = function (name, value) {\n this.cfg[name] = value;\n };\n // 实现接口的方法\n Base.prototype.destroy = function () {\n this.cfg = {\n destroyed: true\n };\n this.off();\n this.destroyed = true;\n };\n return Base;\n}(EE);\nexport default Base;","var frame = 0,\n // is an animation frame pending?\n timeout = 0,\n // is a timeout pending?\n interval = 0,\n // are any timers active?\n pokeDelay = 1000,\n // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function (f) {\n setTimeout(f, 17);\n };\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\nfunction clearNow() {\n clockNow = 0;\n}\nexport function Timer() {\n this._call = this._time = this._next = null;\n}\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function restart(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function stop() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\nexport function timer(callback, delay, time) {\n var t = new Timer();\n t.restart(callback, delay, time);\n return t;\n}\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead,\n e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\nfunction poke() {\n var now = clock.now(),\n delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\nfunction nap() {\n var t0,\n t1 = taskHead,\n t2,\n time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}","export var isColorProp = function isColorProp(prop) {\n return ['fill', 'stroke', 'fillStyle', 'strokeStyle'].includes(prop);\n};\nexport var isGradientColor = function isGradientColor(val) {\n return /^[r,R,L,l]{1}[\\s]*\\(/.test(val);\n};","import { isEqual, isNumber, isFunction } from '@antv/util';\nimport * as d3Timer from 'd3-timer';\nimport { interpolate, interpolateArray } from 'd3-interpolate'; // 目前整体动画只需要数值和数组的差值计算\nimport { getEasing } from './register';\nimport * as PathUtil from '../util/path';\nimport { isColorProp, isGradientColor } from '../util/color';\nvar IDENTITY_MATRIX = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n/**\n * 使用 ratio 进行插值计算来更新属性\n * @param {IElement} shape 元素\n * @param {Animation} animation 动画\n * @param {number} ratio 比例\n * @return {boolean} 动画是否执行完成\n */\nfunction _update(shape, animation, ratio) {\n var cProps = {}; // 此刻属性\n var fromAttrs = animation.fromAttrs,\n toAttrs = animation.toAttrs;\n if (shape.destroyed) {\n return;\n }\n var interf; // 差值函数\n for (var k in toAttrs) {\n if (!isEqual(fromAttrs[k], toAttrs[k])) {\n if (k === 'path') {\n var toPath = toAttrs[k];\n var fromPath = fromAttrs[k];\n if (toPath.length > fromPath.length) {\n toPath = PathUtil.parsePathString(toAttrs[k]); // 终点状态\n fromPath = PathUtil.parsePathString(fromAttrs[k]); // 起始状态\n fromPath = PathUtil.fillPathByDiff(fromPath, toPath);\n fromPath = PathUtil.formatPath(fromPath, toPath);\n animation.fromAttrs.path = fromPath;\n animation.toAttrs.path = toPath;\n } else if (!animation.pathFormatted) {\n toPath = PathUtil.parsePathString(toAttrs[k]);\n fromPath = PathUtil.parsePathString(fromAttrs[k]);\n fromPath = PathUtil.formatPath(fromPath, toPath);\n animation.fromAttrs.path = fromPath;\n animation.toAttrs.path = toPath;\n animation.pathFormatted = true;\n }\n cProps[k] = [];\n for (var i = 0; i < toPath.length; i++) {\n var toPathPoint = toPath[i];\n var fromPathPoint = fromPath[i];\n var cPathPoint = [];\n for (var j = 0; j < toPathPoint.length; j++) {\n if (isNumber(toPathPoint[j]) && fromPathPoint && isNumber(fromPathPoint[j])) {\n interf = interpolate(fromPathPoint[j], toPathPoint[j]);\n cPathPoint.push(interf(ratio));\n } else {\n cPathPoint.push(toPathPoint[j]);\n }\n }\n cProps[k].push(cPathPoint);\n }\n } else if (k === 'matrix') {\n /*\n 对矩阵进行插值时,需要保证矩阵不为空,为空则使用单位矩阵\n TODO: 二维和三维场景下单位矩阵不同,之后 WebGL 版需要做进一步处理\n */\n var matrixFn = interpolateArray(fromAttrs[k] || IDENTITY_MATRIX, toAttrs[k] || IDENTITY_MATRIX);\n var currentMatrix = matrixFn(ratio);\n cProps[k] = currentMatrix;\n } else if (isColorProp(k) && isGradientColor(toAttrs[k])) {\n cProps[k] = toAttrs[k];\n } else if (!isFunction(toAttrs[k])) {\n // 非函数类型的值才能做插值\n interf = interpolate(fromAttrs[k], toAttrs[k]);\n cProps[k] = interf(ratio);\n }\n }\n }\n shape.attr(cProps);\n}\n/**\n * 根据自定义帧动画函数 onFrame 来更新属性\n * @param {IElement} shape 元素\n * @param {Animation} animation 动画\n * @param {number} elapsed 动画执行时间(毫秒)\n * @return {boolean} 动画是否执行完成\n */\nfunction update(shape, animation, elapsed) {\n var startTime = animation.startTime,\n delay = animation.delay;\n // 如果还没有开始执行或暂停,先不更新\n if (elapsed < startTime + delay || animation._paused) {\n return false;\n }\n var ratio;\n var duration = animation.duration;\n var easing = animation.easing;\n var easeFn = getEasing(easing);\n // 已执行时间\n elapsed = elapsed - startTime - animation.delay;\n if (animation.repeat) {\n // 如果动画重复执行,则 elapsed > duration,计算 ratio 时需取模\n ratio = elapsed % duration / duration;\n ratio = easeFn(ratio);\n } else {\n ratio = elapsed / duration;\n if (ratio < 1) {\n // 动画未执行完\n ratio = easeFn(ratio);\n } else {\n // 动画已执行完\n if (animation.onFrame) {\n shape.attr(animation.onFrame(1));\n } else {\n shape.attr(animation.toAttrs);\n }\n return true;\n }\n }\n if (animation.onFrame) {\n var attrs = animation.onFrame(ratio);\n shape.attr(attrs);\n } else {\n _update(shape, animation, ratio);\n }\n return false;\n}\nvar Timeline = /** @class */function () {\n /**\n * 时间轴构造函数,依赖于画布\n * @param {}\n */\n function Timeline(canvas) {\n /**\n * 执行动画的元素列表\n * @type {IElement[]}\n */\n this.animators = [];\n /**\n * 当前时间\n * @type {number}\n */\n this.current = 0;\n /**\n * 定时器\n * @type {d3Timer.Timer}\n */\n this.timer = null;\n this.canvas = canvas;\n }\n /**\n * 初始化定时器\n */\n Timeline.prototype.initTimer = function () {\n var _this = this;\n var isFinished = false;\n var shape;\n var animations;\n var animation;\n this.timer = d3Timer.timer(function (elapsed) {\n _this.current = elapsed;\n if (_this.animators.length > 0) {\n for (var i = _this.animators.length - 1; i >= 0; i--) {\n shape = _this.animators[i];\n if (shape.destroyed) {\n // 如果已经被销毁,直接移出队列\n _this.removeAnimator(i);\n continue;\n }\n if (!shape.isAnimatePaused()) {\n animations = shape.get('animations');\n for (var j = animations.length - 1; j >= 0; j--) {\n animation = animations[j];\n isFinished = update(shape, animation, elapsed);\n if (isFinished) {\n animations.splice(j, 1);\n isFinished = false;\n if (animation.callback) {\n animation.callback();\n }\n }\n }\n }\n if (animations.length === 0) {\n _this.removeAnimator(i);\n }\n }\n var autoDraw = _this.canvas.get('autoDraw');\n // 非自动渲染模式下,手动调用 canvas.draw() 重新渲染\n if (!autoDraw) {\n _this.canvas.draw();\n }\n }\n });\n };\n /**\n * 增加动画元素\n */\n Timeline.prototype.addAnimator = function (shape) {\n this.animators.push(shape);\n };\n /**\n * 移除动画元素\n */\n Timeline.prototype.removeAnimator = function (index) {\n this.animators.splice(index, 1);\n };\n /**\n * 是否有动画在执行\n */\n Timeline.prototype.isAnimating = function () {\n return !!this.animators.length;\n };\n /**\n * 停止定时器\n */\n Timeline.prototype.stop = function () {\n if (this.timer) {\n this.timer.stop();\n }\n };\n /**\n * 停止时间轴上所有元素的动画,并置空动画元素列表\n * @param {boolean} toEnd 是否到动画的最终状态,用来透传给动画元素的 stopAnimate 方法\n */\n Timeline.prototype.stopAllAnimations = function (toEnd) {\n if (toEnd === void 0) {\n toEnd = true;\n }\n this.animators.forEach(function (animator) {\n animator.stopAnimate(toEnd);\n });\n this.animators = [];\n this.canvas.draw();\n };\n /**\n * 获取当前时间\n */\n Timeline.prototype.getTime = function () {\n return this.current;\n };\n return Timeline;\n}();\nexport default Timeline;","/**\n * @fileoverview 事件处理器\n * @author dxq613@gmail.com\n */\nimport GraphEvent from './graph-event';\nimport { each, isParent } from '../util/util';\nvar CLICK_OFFSET = 40;\nvar LEFT_BTN_CODE = 0;\nvar DELEGATION_SPLIT = ':';\nvar EVENTS = ['mousedown', 'mouseup', 'dblclick', 'mouseout', 'mouseover', 'mousemove', 'mouseleave', 'mouseenter', 'touchstart', 'touchmove', 'touchend', 'dragenter', 'dragover', 'dragleave', 'drop', 'contextmenu', 'mousewheel'];\n// 是否有委托事件监听\nfunction hasDelegation(events, type) {\n for (var key in events) {\n if (events.hasOwnProperty(key) && key.indexOf(DELEGATION_SPLIT + type) >= 0) {\n return true;\n }\n }\n return false;\n}\n// 触发目标事件,目标只能是 shape 或 canvas\nfunction emitTargetEvent(target, type, eventObj) {\n eventObj.name = type;\n eventObj.target = target;\n eventObj.currentTarget = target;\n eventObj.delegateTarget = target;\n target.emit(type, eventObj);\n}\n// 事件冒泡, enter 和 leave 需要对 fromShape 和 toShape 进行判同\nfunction bubbleEvent(container, type, eventObj) {\n if (eventObj.bubbles) {\n var relativeShape = void 0;\n var isOverEvent = false;\n if (type === 'mouseenter') {\n relativeShape = eventObj.fromShape;\n isOverEvent = true;\n } else if (type === 'mouseleave') {\n isOverEvent = true;\n relativeShape = eventObj.toShape;\n }\n // canvas 上的 mouseenter, mouseleave 事件,仅当进入或者移出 canvas 时触发\n if (container.isCanvas() && isOverEvent) {\n return;\n }\n // 如果相关图形同当前图形在同一个容器内,不触发事件\n if (relativeShape && isParent(container, relativeShape)) {\n // 阻止继续向上冒泡\n eventObj.bubbles = false;\n return;\n }\n // 事件名称可能在委托过程中被修改,因此事件冒泡时需要重新设置事件名称\n eventObj.name = type;\n eventObj.currentTarget = container;\n eventObj.delegateTarget = container;\n container.emit(type, eventObj);\n }\n}\nvar EventController = /** @class */function () {\n function EventController(cfg) {\n var _this = this;\n // 正在被拖拽的图形\n this.draggingShape = null;\n this.dragging = false;\n // 当前鼠标/touch所在位置的图形\n this.currentShape = null;\n this.mousedownShape = null;\n this.mousedownPoint = null;\n // 统一处理所有的回调\n this._eventCallback = function (ev) {\n var type = ev.type;\n _this._triggerEvent(type, ev);\n };\n // 在 document 处理拖拽到画布外的事件,处理从图形上移除画布未被捕捉的问题\n this._onDocumentMove = function (ev) {\n var canvas = _this.canvas;\n var el = canvas.get('el');\n if (el !== ev.target) {\n // 不在 canvas 上移动\n if (_this.dragging || _this.currentShape) {\n var pointInfo = _this._getPointInfo(ev);\n // 还在拖拽过程中\n if (_this.dragging) {\n _this._emitEvent('drag', ev, pointInfo, _this.draggingShape);\n }\n // 说明从某个图形直接移动到了画布外面,\n // 修复了 mouseleave 的 bug 后不再出现这种情况\n // if (this.currentShape) {\n // this._emitEvent('mouseleave', ev, pointInfo, this.currentShape, this.currentShape, null);\n // this.currentShape = null;\n // }\n }\n }\n };\n // 在 document 上处理拖拽到外面,释放鼠标时触发 dragend\n this._onDocumentMouseUp = function (ev) {\n var canvas = _this.canvas;\n var el = canvas.get('el');\n if (el !== ev.target) {\n // 不在 canvas 上移动\n if (_this.dragging) {\n var pointInfo = _this._getPointInfo(ev);\n if (_this.draggingShape) {\n // 如果存在拖拽的图形,则也触发 drop 事件\n _this._emitEvent('drop', ev, pointInfo, null);\n }\n _this._emitEvent('dragend', ev, pointInfo, _this.draggingShape);\n _this._afterDrag(_this.draggingShape, pointInfo, ev);\n }\n }\n };\n this.canvas = cfg.canvas;\n }\n EventController.prototype.init = function () {\n this._bindEvents();\n };\n // 注册事件\n EventController.prototype._bindEvents = function () {\n var _this = this;\n var el = this.canvas.get('el');\n each(EVENTS, function (eventName) {\n el.addEventListener(eventName, _this._eventCallback);\n });\n if (document) {\n // 处理移动到外面没有触发 shape mouse leave 的事件\n // 处理拖拽到外部的问题\n document.addEventListener('mousemove', this._onDocumentMove);\n // 处理拖拽过程中在外部释放鼠标的问题\n document.addEventListener('mouseup', this._onDocumentMouseUp);\n }\n };\n // 清理事件\n EventController.prototype._clearEvents = function () {\n var _this = this;\n var el = this.canvas.get('el');\n each(EVENTS, function (eventName) {\n el.removeEventListener(eventName, _this._eventCallback);\n });\n if (document) {\n document.removeEventListener('mousemove', this._onDocumentMove);\n document.removeEventListener('mouseup', this._onDocumentMouseUp);\n }\n };\n EventController.prototype._getEventObj = function (type, event, point, target, fromShape, toShape) {\n var eventObj = new GraphEvent(type, event);\n eventObj.fromShape = fromShape;\n eventObj.toShape = toShape;\n eventObj.x = point.x;\n eventObj.y = point.y;\n eventObj.clientX = point.clientX;\n eventObj.clientY = point.clientY;\n eventObj.propagationPath.push(target);\n // 事件的x,y应该是基于画布左上角的,与canvas的matrix无关\n return eventObj;\n };\n // 根据点获取图形,提取成独立方法,便于后续优化\n EventController.prototype._getShape = function (point, ev) {\n return this.canvas.getShape(point.x, point.y, ev);\n };\n // 获取事件的当前点的信息\n EventController.prototype._getPointInfo = function (ev) {\n var canvas = this.canvas;\n var clientPoint = canvas.getClientByEvent(ev);\n var point = canvas.getPointByEvent(ev);\n return {\n x: point.x,\n y: point.y,\n clientX: clientPoint.x,\n clientY: clientPoint.y\n };\n };\n // 触发事件\n EventController.prototype._triggerEvent = function (type, ev) {\n var pointInfo = this._getPointInfo(ev);\n // 每次都获取图形有一定成本,后期可以考虑进行缓存策略\n var shape = this._getShape(pointInfo, ev);\n var method = this[\"_on\" + type];\n var leaveCanvas = false;\n if (method) {\n method.call(this, pointInfo, shape, ev);\n } else {\n var preShape = this.currentShape;\n // 如果进入、移出画布时存在图形,则要分别触发事件\n if (type === 'mouseenter' || type === 'dragenter' || type === 'mouseover') {\n this._emitEvent(type, ev, pointInfo, null, null, shape); // 先进入画布\n if (shape) {\n this._emitEvent(type, ev, pointInfo, shape, null, shape); // 再触发图形的事件\n }\n\n if (type === 'mouseenter' && this.draggingShape) {\n // 如果正在拖拽图形, 则触发 dragleave\n this._emitEvent('dragenter', ev, pointInfo, null);\n }\n } else if (type === 'mouseleave' || type === 'dragleave' || type === 'mouseout') {\n leaveCanvas = true;\n if (preShape) {\n this._emitEvent(type, ev, pointInfo, preShape, preShape, null); // 先触发图形的事件\n }\n\n this._emitEvent(type, ev, pointInfo, null, preShape, null); // 再触发离开画布事件\n if (type === 'mouseleave' && this.draggingShape) {\n this._emitEvent('dragleave', ev, pointInfo, null);\n }\n } else {\n this._emitEvent(type, ev, pointInfo, shape, null, null); // 一般事件中不需要考虑 from, to\n }\n }\n\n if (!leaveCanvas) {\n this.currentShape = shape;\n }\n // 当鼠标从画布移动到 shape 或者从 preShape 移动到 shape 时,应用 shape 上的鼠标样式\n if (shape && !shape.get('destroyed')) {\n var canvas = this.canvas;\n var el = canvas.get('el');\n el.style.cursor = shape.attr('cursor') || canvas.get('cursor');\n }\n };\n // 记录下点击的位置、图形,便于拖拽事件、click 事件的判定\n EventController.prototype._onmousedown = function (pointInfo, shape, event) {\n // 只有鼠标左键的 mousedown 事件才会设置 mousedownShape 等属性,避免鼠标右键的 mousedown 事件引起其他事件发生\n if (event.button === LEFT_BTN_CODE) {\n this.mousedownShape = shape;\n this.mousedownPoint = pointInfo;\n this.mousedownTimeStamp = event.timeStamp;\n }\n this._emitEvent('mousedown', event, pointInfo, shape, null, null); // mousedown 不考虑fromShape, toShape\n };\n // mouseleave 和 mouseenter 都是成对存在的\n // mouseenter 和 mouseover 同时触发\n EventController.prototype._emitMouseoverEvents = function (event, pointInfo, fromShape, toShape) {\n var el = this.canvas.get('el');\n if (fromShape !== toShape) {\n if (fromShape) {\n this._emitEvent('mouseout', event, pointInfo, fromShape, fromShape, toShape);\n this._emitEvent('mouseleave', event, pointInfo, fromShape, fromShape, toShape);\n // 当鼠标从 fromShape 移动到画布上时,重置鼠标样式\n if (!toShape || toShape.get('destroyed')) {\n el.style.cursor = this.canvas.get('cursor');\n }\n }\n if (toShape) {\n this._emitEvent('mouseover', event, pointInfo, toShape, fromShape, toShape);\n this._emitEvent('mouseenter', event, pointInfo, toShape, fromShape, toShape);\n }\n }\n };\n // dragover 不等同于 mouseover,而等同于 mousemove\n EventController.prototype._emitDragoverEvents = function (event, pointInfo, fromShape, toShape, isCanvasEmit) {\n if (toShape) {\n if (toShape !== fromShape) {\n if (fromShape) {\n this._emitEvent('dragleave', event, pointInfo, fromShape, fromShape, toShape);\n }\n this._emitEvent('dragenter', event, pointInfo, toShape, fromShape, toShape);\n }\n if (!isCanvasEmit) {\n this._emitEvent('dragover', event, pointInfo, toShape);\n }\n } else if (fromShape) {\n // TODO: 此处判断有问题,当 drag 图形时,也会触发一次 dragleave 事件,因为此时 toShape 为 null,这不是所期望的\n // 经过空白区域\n this._emitEvent('dragleave', event, pointInfo, fromShape, fromShape, toShape);\n }\n if (isCanvasEmit) {\n this._emitEvent('dragover', event, pointInfo, toShape);\n }\n };\n // drag 完成后,需要做一些清理工作\n EventController.prototype._afterDrag = function (draggingShape, pointInfo, event) {\n if (draggingShape) {\n draggingShape.set('capture', true); // 恢复可以拾取\n this.draggingShape = null;\n }\n this.dragging = false;\n // drag 完成后,有可能 draggingShape 已经移动到了当前位置,所以不能直接取当前图形\n var shape = this._getShape(pointInfo, event);\n // 拖拽完成后,进行 enter,leave 的判定\n if (shape !== draggingShape) {\n this._emitMouseoverEvents(event, pointInfo, draggingShape, shape);\n }\n this.currentShape = shape; // 更新当前 shape,如果不处理当前图形的 mouseleave 事件可能会出问题\n };\n // 按键抬起时,会终止拖拽、触发点击\n EventController.prototype._onmouseup = function (pointInfo, shape, event) {\n // eevent.button === 0 表示鼠标左键事件,此处加上判断主要是为了避免右键鼠标会触发 mouseup 和 click 事件\n // ref: https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button\n if (event.button === LEFT_BTN_CODE) {\n var draggingShape = this.draggingShape;\n if (this.dragging) {\n // 存在可以拖拽的图形,同时拖拽到其他图形上时触发 drag 事件\n if (draggingShape) {\n this._emitEvent('drop', event, pointInfo, shape);\n }\n this._emitEvent('dragend', event, pointInfo, draggingShape);\n this._afterDrag(draggingShape, pointInfo, event);\n } else {\n this._emitEvent('mouseup', event, pointInfo, shape); // 先触发 mouseup 再触发 click\n if (shape === this.mousedownShape) {\n this._emitEvent('click', event, pointInfo, shape);\n }\n this.mousedownShape = null;\n this.mousedownPoint = null;\n }\n }\n };\n // 当触发浏览器的 dragover 事件时,不会再触发 mousemove ,所以这时候的 dragenter, dragleave 事件需要重新处理\n EventController.prototype._ondragover = function (pointInfo, shape, event) {\n event.preventDefault(); // 如果不对 dragover 进行 preventDefault,则不会在 canvas 上触发 drop 事件\n var preShape = this.currentShape;\n this._emitDragoverEvents(event, pointInfo, preShape, shape, true);\n };\n // 大量的图形事件,都通过 mousemove 模拟\n EventController.prototype._onmousemove = function (pointInfo, shape, event) {\n var canvas = this.canvas;\n var preShape = this.currentShape;\n var draggingShape = this.draggingShape;\n // 正在拖拽时\n if (this.dragging) {\n // 正在拖拽中\n if (draggingShape) {\n // 如果拖拽了 shape 会触发 dragenter, dragleave, dragover 和 drag 事件\n this._emitDragoverEvents(event, pointInfo, preShape, shape, false);\n }\n // 如果存在 draggingShape 则会在 draggingShape 上触发 drag 事件,冒泡到 canvas 上\n // 否则在 canvas 上触发 drag 事件\n this._emitEvent('drag', event, pointInfo, draggingShape);\n } else {\n var mousedownPoint = this.mousedownPoint;\n if (mousedownPoint) {\n // 当鼠标点击下去,同时移动时,进行 drag 判定\n var mousedownShape = this.mousedownShape;\n var now = event.timeStamp;\n var timeWindow = now - this.mousedownTimeStamp;\n var dx = mousedownPoint.clientX - pointInfo.clientX;\n var dy = mousedownPoint.clientY - pointInfo.clientY;\n var dist = dx * dx + dy * dy;\n if (timeWindow > 120 || dist > CLICK_OFFSET) {\n if (mousedownShape && mousedownShape.get('draggable')) {\n // 设置了 draggable 的 shape 才能触发 drag 相关的事件\n draggingShape = this.mousedownShape; // 拖动鼠标点下时的 shape\n draggingShape.set('capture', false); // 禁止继续拾取,否则无法进行 dragover,dragenter,dragleave,drop的判定\n this.draggingShape = draggingShape;\n this.dragging = true;\n this._emitEvent('dragstart', event, pointInfo, draggingShape);\n // 清理按下鼠标时缓存的值\n this.mousedownShape = null;\n this.mousedownPoint = null;\n } else if (!mousedownShape && canvas.get('draggable')) {\n // 设置了 draggable 的 canvas 才能触发 drag 相关的事件\n this.dragging = true;\n this._emitEvent('dragstart', event, pointInfo, null);\n // 清理按下鼠标时缓存的值\n this.mousedownShape = null;\n this.mousedownPoint = null;\n } else {\n this._emitMouseoverEvents(event, pointInfo, preShape, shape);\n this._emitEvent('mousemove', event, pointInfo, shape);\n }\n } else {\n this._emitMouseoverEvents(event, pointInfo, preShape, shape);\n this._emitEvent('mousemove', event, pointInfo, shape);\n }\n } else {\n // 没有按键按下时,则直接触发 mouse over 相关的各种事件\n this._emitMouseoverEvents(event, pointInfo, preShape, shape);\n // 始终触发移动\n this._emitEvent('mousemove', event, pointInfo, shape);\n }\n }\n };\n // 触发事件\n EventController.prototype._emitEvent = function (type, event, pointInfo, shape, fromShape, toShape) {\n var eventObj = this._getEventObj(type, event, pointInfo, shape, fromShape, toShape);\n // 存在 shape 触发,则进行冒泡处理\n if (shape) {\n eventObj.shape = shape;\n // 触发 shape 上的事件\n emitTargetEvent(shape, type, eventObj);\n var parent_1 = shape.getParent();\n // 执行冒泡\n while (parent_1) {\n // 委托事件要先触发\n parent_1.emitDelegation(type, eventObj);\n // 事件冒泡停止,不能妨碍委托事件\n if (!eventObj.propagationStopped) {\n bubbleEvent(parent_1, type, eventObj);\n }\n eventObj.propagationPath.push(parent_1);\n parent_1 = parent_1.getParent();\n }\n } else {\n // 如果没有 shape 直接在 canvas 上触发\n var canvas = this.canvas;\n // 直接触发 canvas 上的事件\n emitTargetEvent(canvas, type, eventObj);\n }\n };\n EventController.prototype.destroy = function () {\n // 清理事件\n this._clearEvents();\n // 清理缓存的对象\n this.canvas = null;\n this.currentShape = null;\n this.draggingShape = null;\n this.mousedownPoint = null;\n this.mousedownShape = null;\n this.mousedownTimeStamp = null;\n };\n return EventController;\n}();\nexport default EventController;","import { __extends } from \"tslib\";\nimport { detect } from 'detect-browser';\nimport Container from './container';\nimport { isBrowser, isNil, isString } from '../util/util';\nimport Timeline from '../animate/timeline';\nimport EventController from '../event/event-contoller';\nvar PX_SUFFIX = 'px';\nvar browser = detect();\nvar isFirefox = browser && browser.name === 'firefox';\nvar Canvas = /** @class */function (_super) {\n __extends(Canvas, _super);\n function Canvas(cfg) {\n var _this = _super.call(this, cfg) || this;\n _this.initContainer();\n _this.initDom();\n _this.initEvents();\n _this.initTimeline();\n return _this;\n }\n Canvas.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n // set default cursor style for canvas\n cfg['cursor'] = 'default';\n // CSS transform 目前尚未经过长时间验证,为了避免影响上层业务,默认关闭,上层按需开启\n cfg['supportCSSTransform'] = false;\n return cfg;\n };\n /**\n * @protected\n * 初始化容器\n */\n Canvas.prototype.initContainer = function () {\n var container = this.get('container');\n if (isString(container)) {\n container = document.getElementById(container);\n this.set('container', container);\n }\n };\n /**\n * @protected\n * 初始化 DOM\n */\n Canvas.prototype.initDom = function () {\n var el = this.createDom();\n this.set('el', el);\n // 附加到容器\n var container = this.get('container');\n container.appendChild(el);\n // 设置初始宽度\n this.setDOMSize(this.get('width'), this.get('height'));\n };\n /**\n * @protected\n * 初始化绑定的事件\n */\n Canvas.prototype.initEvents = function () {\n var eventController = new EventController({\n canvas: this\n });\n eventController.init();\n this.set('eventController', eventController);\n };\n /**\n * @protected\n * 初始化时间轴\n */\n Canvas.prototype.initTimeline = function () {\n var timeline = new Timeline(this);\n this.set('timeline', timeline);\n };\n /**\n * @protected\n * 修改画布对应的 DOM 的大小\n * @param {number} width 宽度\n * @param {number} height 高度\n */\n Canvas.prototype.setDOMSize = function (width, height) {\n var el = this.get('el');\n if (isBrowser) {\n el.style.width = width + PX_SUFFIX;\n el.style.height = height + PX_SUFFIX;\n }\n };\n // 实现接口\n Canvas.prototype.changeSize = function (width, height) {\n this.setDOMSize(width, height);\n this.set('width', width);\n this.set('height', height);\n this.onCanvasChange('changeSize');\n };\n /**\n * 获取当前的渲染引擎\n * @return {Renderer} 返回当前的渲染引擎\n */\n Canvas.prototype.getRenderer = function () {\n return this.get('renderer');\n };\n /**\n * 获取画布的 cursor 样式\n * @return {Cursor}\n */\n Canvas.prototype.getCursor = function () {\n return this.get('cursor');\n };\n /**\n * 设置画布的 cursor 样式\n * @param {Cursor} cursor cursor 样式\n */\n Canvas.prototype.setCursor = function (cursor) {\n this.set('cursor', cursor);\n var el = this.get('el');\n if (isBrowser && el) {\n // 直接设置样式,不等待鼠标移动时再设置\n el.style.cursor = cursor;\n }\n };\n // 实现接口\n Canvas.prototype.getPointByEvent = function (ev) {\n var supportCSSTransform = this.get('supportCSSTransform');\n if (supportCSSTransform) {\n // For Firefox <= 38\n if (isFirefox && !isNil(ev.layerX) && ev.layerX !== ev.offsetX) {\n return {\n x: ev.layerX,\n y: ev.layerY\n };\n }\n if (!isNil(ev.offsetX)) {\n // For IE6+, Firefox >= 39, Chrome, Safari, Opera\n return {\n x: ev.offsetX,\n y: ev.offsetY\n };\n }\n }\n // should calculate by self for other cases, like Safari in ios\n // TODO: support CSS transform\n var _a = this.getClientByEvent(ev),\n clientX = _a.x,\n clientY = _a.y;\n return this.getPointByClient(clientX, clientY);\n };\n // 获取 touch 事件的 clientX 和 clientY 需要单独处理\n Canvas.prototype.getClientByEvent = function (ev) {\n var clientInfo = ev;\n if (ev.touches) {\n if (ev.type === 'touchend') {\n clientInfo = ev.changedTouches[0];\n } else {\n clientInfo = ev.touches[0];\n }\n }\n return {\n x: clientInfo.clientX,\n y: clientInfo.clientY\n };\n };\n // 实现接口\n Canvas.prototype.getPointByClient = function (clientX, clientY) {\n var el = this.get('el');\n var bbox = el.getBoundingClientRect();\n return {\n x: clientX - bbox.left,\n y: clientY - bbox.top\n };\n };\n // 实现接口\n Canvas.prototype.getClientByPoint = function (x, y) {\n var el = this.get('el');\n var bbox = el.getBoundingClientRect();\n return {\n x: x + bbox.left,\n y: y + bbox.top\n };\n };\n // 实现接口\n Canvas.prototype.draw = function () {};\n /**\n * @protected\n * 销毁 DOM 容器\n */\n Canvas.prototype.removeDom = function () {\n var el = this.get('el');\n el.parentNode.removeChild(el);\n };\n /**\n * @protected\n * 清理所有的事件\n */\n Canvas.prototype.clearEvents = function () {\n var eventController = this.get('eventController');\n eventController.destroy();\n };\n Canvas.prototype.isCanvas = function () {\n return true;\n };\n Canvas.prototype.getParent = function () {\n return null;\n };\n Canvas.prototype.destroy = function () {\n var timeline = this.get('timeline');\n if (this.get('destroyed')) {\n return;\n }\n this.clear();\n // 同初始化时相反顺序调用\n if (timeline) {\n // 画布销毁时自动停止动画\n timeline.stop();\n }\n this.clearEvents();\n this.removeDom();\n _super.prototype.destroy.call(this);\n };\n return Canvas;\n}(Container);\nexport default Canvas;","import { __extends } from \"tslib\";\nimport Element from './element';\nimport { isFunction, isObject, each, removeFromArray, upperFirst, isAllowCapture } from '../util/util';\nvar SHAPE_MAP = {};\nvar INDEX = '_INDEX';\n/**\n * 设置 canvas\n * @param {IElement} element 元素\n * @param {ICanvas} canvas 画布\n */\nfunction setCanvas(element, canvas) {\n element.set('canvas', canvas);\n if (element.isGroup()) {\n var children = element.get('children');\n if (children.length) {\n children.forEach(function (child) {\n setCanvas(child, canvas);\n });\n }\n }\n}\n/**\n * 设置 timeline\n * @param {IElement} element 元素\n * @param {Timeline} timeline 时间轴\n */\nfunction setTimeline(element, timeline) {\n element.set('timeline', timeline);\n if (element.isGroup()) {\n var children = element.get('children');\n if (children.length) {\n children.forEach(function (child) {\n setTimeline(child, timeline);\n });\n }\n }\n}\nfunction contains(container, element) {\n var children = container.getChildren();\n return children.indexOf(element) >= 0;\n}\nfunction removeChild(container, element, destroy) {\n if (destroy === void 0) {\n destroy = true;\n }\n // 不再调用 element.remove() 方法,会出现循环调用\n if (destroy) {\n element.destroy();\n } else {\n element.set('parent', null);\n element.set('canvas', null);\n }\n removeFromArray(container.getChildren(), element);\n}\nfunction getComparer(compare) {\n return function (left, right) {\n var result = compare(left, right);\n return result === 0 ? left[INDEX] - right[INDEX] : result;\n };\n}\nvar Container = /** @class */function (_super) {\n __extends(Container, _super);\n function Container() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Container.prototype.isCanvas = function () {\n return false;\n };\n // 根据子节点确定 BBox\n Container.prototype.getBBox = function () {\n // 所有的值可能在画布的可视区外\n var minX = Infinity;\n var maxX = -Infinity;\n var minY = Infinity;\n var maxY = -Infinity;\n // 将可见元素、图形以及不为空的图形分组筛选出来,用于包围盒合并\n var children = this.getChildren().filter(function (child) {\n return child.get('visible') && (!child.isGroup() || child.isGroup() && child.getChildren().length > 0);\n });\n if (children.length > 0) {\n each(children, function (child) {\n var _a = child.getBBox(),\n childMinX = _a.minX,\n childMaxX = _a.maxX,\n childMinY = _a.minY,\n childMaxY = _a.maxY;\n if (childMinX < minX) {\n minX = childMinX;\n }\n if (childMaxX > maxX) {\n maxX = childMaxX;\n }\n if (childMinY < minY) {\n minY = childMinY;\n }\n if (childMaxY > maxY) {\n maxY = childMaxY;\n }\n });\n } else {\n minX = 0;\n maxX = 0;\n minY = 0;\n maxY = 0;\n }\n var box = {\n x: minX,\n y: minY,\n minX: minX,\n minY: minY,\n maxX: maxX,\n maxY: maxY,\n width: maxX - minX,\n height: maxY - minY\n };\n return box;\n };\n // 获取画布的包围盒\n Container.prototype.getCanvasBBox = function () {\n var minX = Infinity;\n var maxX = -Infinity;\n var minY = Infinity;\n var maxY = -Infinity;\n // 将可见元素、图形以及不为空的图形分组筛选出来,用于包围盒合并\n var children = this.getChildren().filter(function (child) {\n return child.get('visible') && (!child.isGroup() || child.isGroup() && child.getChildren().length > 0);\n });\n if (children.length > 0) {\n each(children, function (child) {\n var _a = child.getCanvasBBox(),\n childMinX = _a.minX,\n childMaxX = _a.maxX,\n childMinY = _a.minY,\n childMaxY = _a.maxY;\n if (childMinX < minX) {\n minX = childMinX;\n }\n if (childMaxX > maxX) {\n maxX = childMaxX;\n }\n if (childMinY < minY) {\n minY = childMinY;\n }\n if (childMaxY > maxY) {\n maxY = childMaxY;\n }\n });\n } else {\n minX = 0;\n maxX = 0;\n minY = 0;\n maxY = 0;\n }\n var box = {\n x: minX,\n y: minY,\n minX: minX,\n minY: minY,\n maxX: maxX,\n maxY: maxY,\n width: maxX - minX,\n height: maxY - minY\n };\n return box;\n };\n Container.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n cfg['children'] = [];\n return cfg;\n };\n Container.prototype.onAttrChange = function (name, value, originValue) {\n _super.prototype.onAttrChange.call(this, name, value, originValue);\n if (name === 'matrix') {\n var totalMatrix = this.getTotalMatrix();\n this._applyChildrenMarix(totalMatrix);\n }\n };\n // 不但应用到自己身上还要应用于子元素\n Container.prototype.applyMatrix = function (matrix) {\n var preTotalMatrix = this.getTotalMatrix();\n _super.prototype.applyMatrix.call(this, matrix);\n var totalMatrix = this.getTotalMatrix();\n // totalMatrix 没有发生变化时,这里仅考虑两者都为 null 时\n // 不继续向下传递矩阵\n if (totalMatrix === preTotalMatrix) {\n return;\n }\n this._applyChildrenMarix(totalMatrix);\n };\n // 在子元素上设置矩阵\n Container.prototype._applyChildrenMarix = function (totalMatrix) {\n var children = this.getChildren();\n each(children, function (child) {\n child.applyMatrix(totalMatrix);\n });\n };\n // 兼容老版本的接口\n Container.prototype.addShape = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var type = args[0];\n var cfg = args[1];\n if (isObject(type)) {\n cfg = type;\n } else {\n cfg['type'] = type;\n }\n var shapeType = SHAPE_MAP[cfg.type];\n if (!shapeType) {\n shapeType = upperFirst(cfg.type);\n SHAPE_MAP[cfg.type] = shapeType;\n }\n var ShapeBase = this.getShapeBase();\n var shape = new ShapeBase[shapeType](cfg);\n this.add(shape);\n return shape;\n };\n Container.prototype.addGroup = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var groupClass = args[0],\n cfg = args[1];\n var group;\n if (isFunction(groupClass)) {\n if (cfg) {\n group = new groupClass(cfg);\n } else {\n group = new groupClass({\n // canvas,\n parent: this\n });\n }\n } else {\n var tmpCfg = groupClass || {};\n var TmpGroupClass = this.getGroupBase();\n group = new TmpGroupClass(tmpCfg);\n }\n this.add(group);\n return group;\n };\n Container.prototype.getCanvas = function () {\n var canvas;\n if (this.isCanvas()) {\n canvas = this;\n } else {\n canvas = this.get('canvas');\n }\n return canvas;\n };\n Container.prototype.getShape = function (x, y, ev) {\n // 如果不支持拾取,则直接返回\n if (!isAllowCapture(this)) {\n return null;\n }\n var children = this.getChildren();\n var shape;\n // 如果容器是 group\n if (!this.isCanvas()) {\n var v = [x, y, 1];\n // 将 x, y 转换成对应于 group 的局部坐标\n v = this.invertFromMatrix(v);\n if (!this.isClipped(v[0], v[1])) {\n shape = this._findShape(children, v[0], v[1], ev);\n }\n } else {\n shape = this._findShape(children, x, y, ev);\n }\n return shape;\n };\n Container.prototype._findShape = function (children, x, y, ev) {\n var shape = null;\n for (var i = children.length - 1; i >= 0; i--) {\n var child = children[i];\n if (isAllowCapture(child)) {\n if (child.isGroup()) {\n shape = child.getShape(x, y, ev);\n } else if (child.isHit(x, y)) {\n shape = child;\n }\n }\n if (shape) {\n break;\n }\n }\n return shape;\n };\n Container.prototype.add = function (element) {\n var canvas = this.getCanvas();\n var children = this.getChildren();\n var timeline = this.get('timeline');\n var preParent = element.getParent();\n if (preParent) {\n removeChild(preParent, element, false);\n }\n element.set('parent', this);\n if (canvas) {\n setCanvas(element, canvas);\n }\n if (timeline) {\n setTimeline(element, timeline);\n }\n children.push(element);\n element.onCanvasChange('add');\n this._applyElementMatrix(element);\n };\n // 将当前容器的矩阵应用到子元素\n Container.prototype._applyElementMatrix = function (element) {\n var totalMatrix = this.getTotalMatrix();\n // 添加图形或者分组时,需要把当前图元的矩阵设置进去\n if (totalMatrix) {\n element.applyMatrix(totalMatrix);\n }\n };\n Container.prototype.getChildren = function () {\n return this.get('children');\n };\n Container.prototype.sort = function () {\n var children = this.getChildren();\n // 稳定排序\n each(children, function (child, index) {\n child[INDEX] = index;\n return child;\n });\n children.sort(getComparer(function (obj1, obj2) {\n return obj1.get('zIndex') - obj2.get('zIndex');\n }));\n this.onCanvasChange('sort');\n };\n Container.prototype.clear = function () {\n this.set('clearing', true);\n if (this.destroyed) {\n return;\n }\n var children = this.getChildren();\n for (var i = children.length - 1; i >= 0; i--) {\n children[i].destroy(); // 销毁子元素\n }\n\n this.set('children', []);\n this.onCanvasChange('clear');\n this.set('clearing', false);\n };\n Container.prototype.destroy = function () {\n if (this.get('destroyed')) {\n return;\n }\n this.clear();\n _super.prototype.destroy.call(this);\n };\n /**\n * 获取第一个子元素\n * @return {IElement} 第一个元素\n */\n Container.prototype.getFirst = function () {\n return this.getChildByIndex(0);\n };\n /**\n * 获取最后一个子元素\n * @return {IElement} 元素\n */\n Container.prototype.getLast = function () {\n var children = this.getChildren();\n return this.getChildByIndex(children.length - 1);\n };\n /**\n * 根据索引获取子元素\n * @return {IElement} 第一个元素\n */\n Container.prototype.getChildByIndex = function (index) {\n var children = this.getChildren();\n return children[index];\n };\n /**\n * 子元素的数量\n * @return {number} 子元素数量\n */\n Container.prototype.getCount = function () {\n var children = this.getChildren();\n return children.length;\n };\n /**\n * 是否包含对应元素\n * @param {IElement} element 元素\n * @return {boolean}\n */\n Container.prototype.contain = function (element) {\n var children = this.getChildren();\n return children.indexOf(element) > -1;\n };\n /**\n * 移除对应子元素\n * @param {IElement} element 子元素\n * @param {boolean} destroy 是否销毁子元素,默认为 true\n */\n Container.prototype.removeChild = function (element, destroy) {\n if (destroy === void 0) {\n destroy = true;\n }\n if (this.contain(element)) {\n element.remove(destroy);\n }\n };\n /**\n * 查找所有匹配的元素\n * @param {ElementFilterFn} fn 匹配函数\n * @return {IElement[]} 元素数组\n */\n Container.prototype.findAll = function (fn) {\n var rst = [];\n var children = this.getChildren();\n each(children, function (element) {\n if (fn(element)) {\n rst.push(element);\n }\n if (element.isGroup()) {\n rst = rst.concat(element.findAll(fn));\n }\n });\n return rst;\n };\n /**\n * 查找元素,找到第一个返回\n * @param {ElementFilterFn} fn 匹配函数\n * @return {IElement|null} 元素,可以为空\n */\n Container.prototype.find = function (fn) {\n var rst = null;\n var children = this.getChildren();\n each(children, function (element) {\n if (fn(element)) {\n rst = element;\n } else if (element.isGroup()) {\n rst = element.find(fn);\n }\n if (rst) {\n return false;\n }\n });\n return rst;\n };\n /**\n * 根据 ID 查找元素\n * @param {string} id 元素 id\n * @return {IElement|null} 元素\n */\n Container.prototype.findById = function (id) {\n return this.find(function (element) {\n return element.get('id') === id;\n });\n };\n /**\n * 该方法即将废弃,不建议使用\n * 根据 className 查找元素\n * TODO: 该方式定义暂时只给 G6 3.3 以后的版本使用,待 G6 中的 findByClassName 方法移除后,G 也需要同步移除\n * @param {string} className 元素 className\n * @return {IElement | null} 元素\n */\n Container.prototype.findByClassName = function (className) {\n return this.find(function (element) {\n return element.get('className') === className;\n });\n };\n /**\n * 根据 name 查找元素列表\n * @param {string} name 元素名称\n * @return {IElement[]} 元素\n */\n Container.prototype.findAllByName = function (name) {\n return this.findAll(function (element) {\n return element.get('name') === name;\n });\n };\n return Container;\n}(Element);\nexport default Container;","import { __extends } from \"tslib\";\nimport { each, isEqual, isFunction, isNumber, isObject, isArray, noop, mix, upperFirst, uniqueId } from '@antv/util';\nimport { ext } from '@antv/matrix-util';\nimport { removeFromArray, isParent } from '../util/util';\nimport { multiplyMatrix, multiplyVec2, invert } from '../util/matrix';\nimport Base from './base';\nvar transform = ext.transform;\nvar MATRIX = 'matrix';\nvar CLONE_CFGS = ['zIndex', 'capture', 'visible', 'type'];\n// 可以在 toAttrs 中设置,但不属于绘图属性的字段\nvar RESERVED_PORPS = ['repeat'];\nvar DELEGATION_SPLIT = ':';\nvar WILDCARD = '*';\n// 需要考虑数组嵌套数组的场景\n// 数组嵌套对象的场景不考虑\nfunction _cloneArrayAttr(arr) {\n var result = [];\n for (var i = 0; i < arr.length; i++) {\n if (isArray(arr[i])) {\n result.push([].concat(arr[i]));\n } else {\n result.push(arr[i]);\n }\n }\n return result;\n}\nfunction getFormatFromAttrs(toAttrs, shape) {\n var fromAttrs = {};\n var attrs = shape.attrs;\n for (var k in toAttrs) {\n fromAttrs[k] = attrs[k];\n }\n return fromAttrs;\n}\nfunction getFormatToAttrs(props, shape) {\n var toAttrs = {};\n var attrs = shape.attr();\n each(props, function (v, k) {\n if (RESERVED_PORPS.indexOf(k) === -1 && !isEqual(attrs[k], v)) {\n toAttrs[k] = v;\n }\n });\n return toAttrs;\n}\nfunction checkExistedAttrs(animations, animation) {\n if (animation.onFrame) {\n return animations;\n }\n var startTime = animation.startTime,\n delay = animation.delay,\n duration = animation.duration;\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n each(animations, function (item) {\n // 后一个动画开始执行的时间 < 前一个动画的结束时间 && 后一个动画的执行时间 > 前一个动画的延迟\n if (startTime + delay < item.startTime + item.delay + item.duration && duration > item.delay) {\n each(animation.toAttrs, function (v, k) {\n if (hasOwnProperty.call(item.toAttrs, k)) {\n delete item.toAttrs[k];\n delete item.fromAttrs[k];\n }\n });\n }\n });\n return animations;\n}\nvar Element = /** @class */function (_super) {\n __extends(Element, _super);\n function Element(cfg) {\n var _this = _super.call(this, cfg) || this;\n /**\n * @protected\n * 图形属性\n * @type {ShapeAttrs}\n */\n _this.attrs = {};\n var attrs = _this.getDefaultAttrs();\n mix(attrs, cfg.attrs);\n _this.attrs = attrs;\n _this.initAttrs(attrs);\n _this.initAnimate(); // 初始化动画\n return _this;\n }\n // override\n Element.prototype.getDefaultCfg = function () {\n return {\n visible: true,\n capture: true,\n zIndex: 0\n };\n };\n /**\n * @protected\n * 获取默认的属相\n */\n Element.prototype.getDefaultAttrs = function () {\n return {\n matrix: this.getDefaultMatrix(),\n opacity: 1\n };\n };\n /**\n * @protected\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n Element.prototype.onCanvasChange = function (changeType) {};\n /**\n * @protected\n * 初始化属性,有些属性需要加工\n * @param {object} attrs 属性值\n */\n Element.prototype.initAttrs = function (attrs) {};\n /**\n * @protected\n * 初始化动画\n */\n Element.prototype.initAnimate = function () {\n this.set('animable', true);\n this.set('animating', false);\n };\n Element.prototype.isGroup = function () {\n return false;\n };\n Element.prototype.getParent = function () {\n return this.get('parent');\n };\n Element.prototype.getCanvas = function () {\n return this.get('canvas');\n };\n Element.prototype.attr = function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var name = args[0],\n value = args[1];\n if (!name) return this.attrs;\n if (isObject(name)) {\n for (var k in name) {\n this.setAttr(k, name[k]);\n }\n this.afterAttrsChange(name);\n return this;\n }\n if (args.length === 2) {\n this.setAttr(name, value);\n this.afterAttrsChange((_a = {}, _a[name] = value, _a));\n return this;\n }\n return this.attrs[name];\n };\n // 是否被裁剪,被裁剪则不显示,不参与拾取\n Element.prototype.isClipped = function (refX, refY) {\n var clip = this.getClip();\n return clip && !clip.isHit(refX, refY);\n };\n /**\n * 内部设置属性值的接口\n * @param {string} name 属性名\n * @param {any} value 属性值\n */\n Element.prototype.setAttr = function (name, value) {\n var originValue = this.attrs[name];\n if (originValue !== value) {\n this.attrs[name] = value;\n this.onAttrChange(name, value, originValue);\n }\n };\n /**\n * @protected\n * 属性值发生改变\n * @param {string} name 属性名\n * @param {any} value 属性值\n * @param {any} originValue 属性值\n */\n Element.prototype.onAttrChange = function (name, value, originValue) {\n if (name === 'matrix') {\n this.set('totalMatrix', null);\n }\n };\n /**\n * 属性更改后需要做的事情\n * @protected\n */\n Element.prototype.afterAttrsChange = function (targetAttrs) {\n if (this.cfg.isClipShape) {\n var applyTo = this.cfg.applyTo;\n if (applyTo) {\n applyTo.onCanvasChange('clip');\n }\n } else {\n this.onCanvasChange('attr');\n }\n };\n Element.prototype.show = function () {\n // 不是高频操作直接使用 set\n this.set('visible', true);\n this.onCanvasChange('show');\n return this;\n };\n Element.prototype.hide = function () {\n // 不是高频操作直接使用 set\n this.set('visible', false);\n this.onCanvasChange('hide');\n return this;\n };\n Element.prototype.setZIndex = function (zIndex) {\n this.set('zIndex', zIndex);\n var parent = this.getParent();\n if (parent) {\n // 改变 zIndex 不应该立即触发渲染 (调用 onCanvasChange('zIndex')),需要经过 sort 再触发\n parent.sort();\n }\n return this;\n };\n Element.prototype.toFront = function () {\n var parent = this.getParent();\n if (!parent) {\n return;\n }\n var children = parent.getChildren();\n var el = this.get('el');\n var index = children.indexOf(this);\n children.splice(index, 1);\n children.push(this);\n this.onCanvasChange('zIndex');\n };\n Element.prototype.toBack = function () {\n var parent = this.getParent();\n if (!parent) {\n return;\n }\n var children = parent.getChildren();\n var el = this.get('el');\n var index = children.indexOf(this);\n children.splice(index, 1);\n children.unshift(this);\n this.onCanvasChange('zIndex');\n };\n Element.prototype.remove = function (destroy) {\n if (destroy === void 0) {\n destroy = true;\n }\n var parent = this.getParent();\n if (parent) {\n removeFromArray(parent.getChildren(), this);\n if (!parent.get('clearing')) {\n // 如果父元素正在清理,当前元素不触发 remove\n this.onCanvasChange('remove');\n }\n } else {\n this.onCanvasChange('remove');\n }\n if (destroy) {\n this.destroy();\n }\n };\n Element.prototype.resetMatrix = function () {\n this.attr(MATRIX, this.getDefaultMatrix());\n this.onCanvasChange('matrix');\n };\n Element.prototype.getMatrix = function () {\n return this.attr(MATRIX);\n };\n Element.prototype.setMatrix = function (m) {\n this.attr(MATRIX, m);\n this.onCanvasChange('matrix');\n };\n // 获取总的 matrix\n Element.prototype.getTotalMatrix = function () {\n var totalMatrix = this.cfg.totalMatrix;\n if (!totalMatrix) {\n var currentMatrix = this.attr('matrix');\n var parentMatrix = this.cfg.parentMatrix;\n if (parentMatrix && currentMatrix) {\n totalMatrix = multiplyMatrix(parentMatrix, currentMatrix);\n } else {\n totalMatrix = currentMatrix || parentMatrix;\n }\n this.set('totalMatrix', totalMatrix);\n }\n return totalMatrix;\n };\n // 上层分组设置 matrix\n Element.prototype.applyMatrix = function (matrix) {\n var currentMatrix = this.attr('matrix');\n var totalMatrix = null;\n if (matrix && currentMatrix) {\n totalMatrix = multiplyMatrix(matrix, currentMatrix);\n } else {\n totalMatrix = currentMatrix || matrix;\n }\n this.set('totalMatrix', totalMatrix);\n this.set('parentMatrix', matrix);\n };\n /**\n * @protected\n * 获取默认的矩阵\n * @returns {number[]|null} 默认的矩阵\n */\n Element.prototype.getDefaultMatrix = function () {\n return null;\n };\n // 将向量应用设置的矩阵\n Element.prototype.applyToMatrix = function (v) {\n var matrix = this.attr('matrix');\n if (matrix) {\n return multiplyVec2(matrix, v);\n }\n return v;\n };\n // 根据设置的矩阵,将向量转换相对于图形/分组的位置\n Element.prototype.invertFromMatrix = function (v) {\n var matrix = this.attr('matrix');\n if (matrix) {\n var invertMatrix = invert(matrix);\n if (invertMatrix) {\n return multiplyVec2(invertMatrix, v);\n }\n }\n return v;\n };\n // 设置 clip\n Element.prototype.setClip = function (clipCfg) {\n var canvas = this.getCanvas();\n // 应该只设置当前元素的 clip,不应该去修改 clip 本身,方便 clip 被复用\n // TODO: setClip 的传参既 shape 配置,也支持 shape 对象\n // const preShape = this.get('clipShape');\n // if (preShape) {\n // // 将之前的 clipShape 销毁\n // preShape.destroy();\n // }\n var clipShape = null;\n // 如果配置项为 null,则不移除 clipShape\n if (clipCfg) {\n var ShapeBase = this.getShapeBase();\n var shapeType = upperFirst(clipCfg.type);\n var Cons = ShapeBase[shapeType];\n if (Cons) {\n clipShape = new Cons({\n type: clipCfg.type,\n isClipShape: true,\n applyTo: this,\n attrs: clipCfg.attrs,\n canvas: canvas\n });\n }\n }\n this.set('clipShape', clipShape);\n this.onCanvasChange('clip');\n return clipShape;\n };\n Element.prototype.getClip = function () {\n // 高频率调用的地方直接使用 this.cfg.xxx\n var clipShape = this.cfg.clipShape;\n // 未设置时返回 Null,保证一致性\n if (!clipShape) {\n return null;\n }\n return clipShape;\n };\n Element.prototype.clone = function () {\n var _this = this;\n var originAttrs = this.attrs;\n var attrs = {};\n each(originAttrs, function (i, k) {\n if (isArray(originAttrs[k])) {\n attrs[k] = _cloneArrayAttr(originAttrs[k]);\n } else {\n attrs[k] = originAttrs[k];\n }\n });\n var cons = this.constructor;\n // @ts-ignore\n var clone = new cons({\n attrs: attrs\n });\n each(CLONE_CFGS, function (cfgName) {\n clone.set(cfgName, _this.get(cfgName));\n });\n return clone;\n };\n Element.prototype.destroy = function () {\n var destroyed = this.destroyed;\n if (destroyed) {\n return;\n }\n this.attrs = {};\n _super.prototype.destroy.call(this);\n // this.onCanvasChange('destroy');\n };\n /**\n * 是否处于动画暂停状态\n * @return {boolean} 是否处于动画暂停状态\n */\n Element.prototype.isAnimatePaused = function () {\n return this.get('_pause').isPaused;\n };\n /**\n * 执行动画,支持多种函数签名\n * 1. animate(toAttrs: ElementAttrs, duration: number, easing?: string, callback?: () => void, delay?: number)\n * 2. animate(onFrame: OnFrame, duration: number, easing?: string, callback?: () => void, delay?: number)\n * 3. animate(toAttrs: ElementAttrs, cfg: AnimateCfg)\n * 4. animate(onFrame: OnFrame, cfg: AnimateCfg)\n * 各个参数的含义为:\n * toAttrs 动画最终状态\n * onFrame 自定义帧动画函数\n * duration 动画执行时间\n * easing 动画缓动效果\n * callback 动画执行后的回调\n * delay 动画延迟时间\n */\n Element.prototype.animate = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (!this.get('timeline') && !this.get('canvas')) {\n return;\n }\n this.set('animating', true);\n var timeline = this.get('timeline');\n if (!timeline) {\n timeline = this.get('canvas').get('timeline');\n this.set('timeline', timeline);\n }\n var animations = this.get('animations') || [];\n // 初始化 tick\n if (!timeline.timer) {\n timeline.initTimer();\n }\n var toAttrs = args[0],\n duration = args[1],\n _a = args[2],\n easing = _a === void 0 ? 'easeLinear' : _a,\n _b = args[3],\n callback = _b === void 0 ? noop : _b,\n _c = args[4],\n delay = _c === void 0 ? 0 : _c;\n var onFrame;\n var repeat;\n var pauseCallback;\n var resumeCallback;\n var animateCfg;\n // 第二个参数,既可以是动画最终状态 toAttrs,也可以是自定义帧动画函数 onFrame\n if (isFunction(toAttrs)) {\n onFrame = toAttrs;\n toAttrs = {};\n } else if (isObject(toAttrs) && toAttrs.onFrame) {\n // 兼容 3.0 中的写法,onFrame 和 repeat 可在 toAttrs 中设置\n onFrame = toAttrs.onFrame;\n repeat = toAttrs.repeat;\n }\n // 第二个参数,既可以是执行时间 duration,也可以是动画参数 animateCfg\n if (isObject(duration)) {\n animateCfg = duration;\n duration = animateCfg.duration;\n easing = animateCfg.easing || 'easeLinear';\n delay = animateCfg.delay || 0;\n // animateCfg 中的设置优先级更高\n repeat = animateCfg.repeat || repeat || false;\n callback = animateCfg.callback || noop;\n pauseCallback = animateCfg.pauseCallback || noop;\n resumeCallback = animateCfg.resumeCallback || noop;\n } else {\n // 第四个参数,既可以是回调函数 callback,也可以是延迟时间 delay\n if (isNumber(callback)) {\n delay = callback;\n callback = null;\n }\n // 第三个参数,既可以是缓动参数 easing,也可以是回调函数 callback\n if (isFunction(easing)) {\n callback = easing;\n easing = 'easeLinear';\n } else {\n easing = easing || 'easeLinear';\n }\n }\n var formatToAttrs = getFormatToAttrs(toAttrs, this);\n var animation = {\n fromAttrs: getFormatFromAttrs(formatToAttrs, this),\n toAttrs: formatToAttrs,\n duration: duration,\n easing: easing,\n repeat: repeat,\n callback: callback,\n pauseCallback: pauseCallback,\n resumeCallback: resumeCallback,\n delay: delay,\n startTime: timeline.getTime(),\n id: uniqueId(),\n onFrame: onFrame,\n pathFormatted: false\n };\n // 如果动画元素队列中已经有这个图形了\n if (animations.length > 0) {\n // 先检查是否需要合并属性。若有相同的动画,将该属性从前一个动画中删除,直接用后一个动画中\n animations = checkExistedAttrs(animations, animation);\n } else {\n // 否则将图形添加到动画元素队列\n timeline.addAnimator(this);\n }\n animations.push(animation);\n this.set('animations', animations);\n this.set('_pause', {\n isPaused: false\n });\n };\n /**\n * 停止动画\n * @param {boolean} toEnd 是否到动画的最终状态\n */\n Element.prototype.stopAnimate = function (toEnd) {\n var _this = this;\n if (toEnd === void 0) {\n toEnd = true;\n }\n var animations = this.get('animations');\n each(animations, function (animation) {\n // 将动画执行到最后一帧\n if (toEnd) {\n if (animation.onFrame) {\n _this.attr(animation.onFrame(1));\n } else {\n _this.attr(animation.toAttrs);\n }\n }\n if (animation.callback) {\n // 动画停止时的回调\n animation.callback();\n }\n });\n this.set('animating', false);\n this.set('animations', []);\n };\n /**\n * 暂停动画\n */\n Element.prototype.pauseAnimate = function () {\n var timeline = this.get('timeline');\n var animations = this.get('animations');\n var pauseTime = timeline.getTime();\n each(animations, function (animation) {\n animation._paused = true;\n animation._pauseTime = pauseTime;\n if (animation.pauseCallback) {\n // 动画暂停时的回调\n animation.pauseCallback();\n }\n });\n // 记录下是在什么时候暂停的\n this.set('_pause', {\n isPaused: true,\n pauseTime: pauseTime\n });\n return this;\n };\n /**\n * 恢复动画\n */\n Element.prototype.resumeAnimate = function () {\n var timeline = this.get('timeline');\n var current = timeline.getTime();\n var animations = this.get('animations');\n var pauseTime = this.get('_pause').pauseTime;\n // 之后更新属性需要计算动画已经执行的时长,如果暂停了,就把初始时间调后\n each(animations, function (animation) {\n animation.startTime = animation.startTime + (current - pauseTime);\n animation._paused = false;\n animation._pauseTime = null;\n if (animation.resumeCallback) {\n animation.resumeCallback();\n }\n });\n this.set('_pause', {\n isPaused: false\n });\n this.set('animations', animations);\n return this;\n };\n /**\n * 触发委托事件\n * @param {string} type 事件类型\n * @param {GraphEvent} eventObj 事件对象\n */\n Element.prototype.emitDelegation = function (type, eventObj) {\n var _this = this;\n var paths = eventObj.propagationPath;\n var events = this.getEvents();\n var relativeShape;\n if (type === 'mouseenter') {\n relativeShape = eventObj.fromShape;\n } else if (type === 'mouseleave') {\n relativeShape = eventObj.toShape;\n }\n var _loop_1 = function _loop_1(i) {\n var element = paths[i];\n // 暂定跟 name 绑定\n var name_1 = element.get('name');\n if (name_1) {\n // 第一个 mouseenter 和 mouseleave 的停止即可,因为后面的都是前面的 Parent\n if (\n // 只有 element 是 Group 或者 Canvas 的时候,才需要判断 isParent\n (element.isGroup() || element.isCanvas && element.isCanvas()) && relativeShape && isParent(element, relativeShape)) {\n return \"break\";\n }\n if (isArray(name_1)) {\n each(name_1, function (subName) {\n _this.emitDelegateEvent(element, subName, eventObj);\n });\n } else {\n this_1.emitDelegateEvent(element, name_1, eventObj);\n }\n }\n };\n var this_1 = this;\n // 至少有一个对象,且第一个对象为 shape\n for (var i = 0; i < paths.length; i++) {\n var state_1 = _loop_1(i);\n if (state_1 === \"break\") break;\n }\n };\n Element.prototype.emitDelegateEvent = function (element, name, eventObj) {\n var events = this.getEvents();\n // 事件委托的形式 name:type\n var eventName = name + DELEGATION_SPLIT + eventObj.type;\n if (events[eventName] || events[WILDCARD]) {\n // 对于通配符 *,事件名称 = 委托事件名称\n eventObj.name = eventName;\n eventObj.currentTarget = element;\n eventObj.delegateTarget = this;\n // 将委托事件的监听对象 delegateObject 挂载到事件对象上\n eventObj.delegateObject = element.get('delegateObject');\n this.emit(eventName, eventObj);\n }\n };\n /**\n * 移动元素\n * @param {number} translateX 水平移动距离\n * @param {number} translateY 垂直移动距离\n * @return {IElement} 元素\n */\n Element.prototype.translate = function (translateX, translateY) {\n if (translateX === void 0) {\n translateX = 0;\n }\n if (translateY === void 0) {\n translateY = 0;\n }\n var matrix = this.getMatrix();\n var newMatrix = transform(matrix, [['t', translateX, translateY]]);\n this.setMatrix(newMatrix);\n return this;\n };\n /**\n * 移动元素到目标位置\n * @param {number} targetX 目标位置的水平坐标\n * @param {number} targetX 目标位置的垂直坐标\n * @return {IElement} 元素\n */\n Element.prototype.move = function (targetX, targetY) {\n var x = this.attr('x') || 0;\n var y = this.attr('y') || 0;\n this.translate(targetX - x, targetY - y);\n return this;\n };\n /**\n * 移动元素到目标位置,等价于 move 方法。由于 moveTo 的语义性更强,因此在文档中推荐使用 moveTo 方法\n * @param {number} targetX 目标位置的 x 轴坐标\n * @param {number} targetY 目标位置的 y 轴坐标\n * @return {IElement} 元素\n */\n Element.prototype.moveTo = function (targetX, targetY) {\n return this.move(targetX, targetY);\n };\n /**\n * 缩放元素\n * @param {number} ratioX 水平缩放比例\n * @param {number} ratioY 垂直缩放比例\n * @return {IElement} 元素\n */\n Element.prototype.scale = function (ratioX, ratioY) {\n var matrix = this.getMatrix();\n var newMatrix = transform(matrix, [['s', ratioX, ratioY || ratioX]]);\n this.setMatrix(newMatrix);\n return this;\n };\n /**\n * 以画布左上角 (0, 0) 为中心旋转元素\n * @param {number} radian 旋转角度(弧度值)\n * @return {IElement} 元素\n */\n Element.prototype.rotate = function (radian) {\n var matrix = this.getMatrix();\n var newMatrix = transform(matrix, [['r', radian]]);\n this.setMatrix(newMatrix);\n return this;\n };\n /**\n * 以起始点为中心旋转元素\n * @param {number} radian 旋转角度(弧度值)\n * @return {IElement} 元素\n */\n Element.prototype.rotateAtStart = function (rotate) {\n var _a = this.attr(),\n x = _a.x,\n y = _a.y;\n var matrix = this.getMatrix();\n var newMatrix = transform(matrix, [['t', -x, -y], ['r', rotate], ['t', x, y]]);\n this.setMatrix(newMatrix);\n return this;\n };\n /**\n * 以任意点 (x, y) 为中心旋转元素\n * @param {number} radian 旋转角度(弧度值)\n * @return {IElement} 元素\n */\n Element.prototype.rotateAtPoint = function (x, y, rotate) {\n var matrix = this.getMatrix();\n var newMatrix = transform(matrix, [['t', -x, -y], ['r', rotate], ['t', x, y]]);\n this.setMatrix(newMatrix);\n return this;\n };\n return Element;\n}(Base);\nexport default Element;","import { __extends } from \"tslib\";\nimport Container from './container';\nvar AbstractGroup = /** @class */function (_super) {\n __extends(AbstractGroup, _super);\n function AbstractGroup() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AbstractGroup.prototype.isGroup = function () {\n return true;\n };\n AbstractGroup.prototype.isEntityGroup = function () {\n return false;\n };\n AbstractGroup.prototype.clone = function () {\n var clone = _super.prototype.clone.call(this);\n // 获取构造函数\n var children = this.getChildren();\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n clone.add(child.clone());\n }\n return clone;\n };\n return AbstractGroup;\n}(Container);\nexport default AbstractGroup;","import { __extends } from \"tslib\";\nimport Element from './element';\nimport { multiplyVec2 } from '../util/matrix';\nvar AbstractShape = /** @class */function (_super) {\n __extends(AbstractShape, _super);\n function AbstractShape(cfg) {\n return _super.call(this, cfg) || this;\n }\n // 是否在包围盒内\n AbstractShape.prototype._isInBBox = function (refX, refY) {\n var bbox = this.getBBox();\n return bbox.minX <= refX && bbox.maxX >= refX && bbox.minY <= refY && bbox.maxY >= refY;\n };\n /**\n * 属性更改后需要做的事情\n * @protected\n * @param {ShapeAttrs} targetAttrs 渲染的图像属性\n */\n AbstractShape.prototype.afterAttrsChange = function (targetAttrs) {\n _super.prototype.afterAttrsChange.call(this, targetAttrs);\n this.clearCacheBBox();\n };\n // 计算包围盒时,需要缓存,这是一个高频的操作\n AbstractShape.prototype.getBBox = function () {\n var bbox = this.cfg.bbox;\n if (!bbox) {\n bbox = this.calculateBBox();\n this.set('bbox', bbox);\n }\n return bbox;\n };\n // 计算相对于画布的包围盒\n AbstractShape.prototype.getCanvasBBox = function () {\n var canvasBBox = this.cfg.canvasBBox;\n if (!canvasBBox) {\n canvasBBox = this.calculateCanvasBBox();\n this.set('canvasBBox', canvasBBox);\n }\n return canvasBBox;\n };\n AbstractShape.prototype.applyMatrix = function (matrix) {\n _super.prototype.applyMatrix.call(this, matrix);\n // 清理掉缓存的包围盒\n this.set('canvasBBox', null);\n };\n /**\n * 计算相对于画布的包围盒,默认等同于 bbox\n * @return {BBox} 包围盒\n */\n AbstractShape.prototype.calculateCanvasBBox = function () {\n var bbox = this.getBBox();\n var totalMatrix = this.getTotalMatrix();\n var minX = bbox.minX,\n minY = bbox.minY,\n maxX = bbox.maxX,\n maxY = bbox.maxY;\n if (totalMatrix) {\n var topLeft = multiplyVec2(totalMatrix, [bbox.minX, bbox.minY]);\n var topRight = multiplyVec2(totalMatrix, [bbox.maxX, bbox.minY]);\n var bottomLeft = multiplyVec2(totalMatrix, [bbox.minX, bbox.maxY]);\n var bottomRight = multiplyVec2(totalMatrix, [bbox.maxX, bbox.maxY]);\n minX = Math.min(topLeft[0], topRight[0], bottomLeft[0], bottomRight[0]);\n maxX = Math.max(topLeft[0], topRight[0], bottomLeft[0], bottomRight[0]);\n minY = Math.min(topLeft[1], topRight[1], bottomLeft[1], bottomRight[1]);\n maxY = Math.max(topLeft[1], topRight[1], bottomLeft[1], bottomRight[1]);\n }\n var attrs = this.attrs;\n // 如果存在 shadow 则计算 shadow\n if (attrs.shadowColor) {\n var _a = attrs.shadowBlur,\n shadowBlur = _a === void 0 ? 0 : _a,\n _b = attrs.shadowOffsetX,\n shadowOffsetX = _b === void 0 ? 0 : _b,\n _c = attrs.shadowOffsetY,\n shadowOffsetY = _c === void 0 ? 0 : _c;\n var shadowLeft = minX - shadowBlur + shadowOffsetX;\n var shadowRight = maxX + shadowBlur + shadowOffsetX;\n var shadowTop = minY - shadowBlur + shadowOffsetY;\n var shadowBottom = maxY + shadowBlur + shadowOffsetY;\n minX = Math.min(minX, shadowLeft);\n maxX = Math.max(maxX, shadowRight);\n minY = Math.min(minY, shadowTop);\n maxY = Math.max(maxY, shadowBottom);\n }\n return {\n x: minX,\n y: minY,\n minX: minX,\n minY: minY,\n maxX: maxX,\n maxY: maxY,\n width: maxX - minX,\n height: maxY - minY\n };\n };\n /**\n * @protected\n * 清理缓存的 bbox\n */\n AbstractShape.prototype.clearCacheBBox = function () {\n this.set('bbox', null);\n this.set('canvasBBox', null);\n };\n // 实现接口\n AbstractShape.prototype.isClipShape = function () {\n return this.get('isClipShape');\n };\n /**\n * @protected\n * 不同的图形自己实现是否在图形内部的逻辑,要判断边和填充区域\n * @param {number} refX 相对于图形的坐标 x\n * @param {number} refY 相对于图形的坐标 Y\n * @return {boolean} 点是否在图形内部\n */\n AbstractShape.prototype.isInShape = function (refX, refY) {\n return false;\n };\n /**\n * 是否仅仅使用 BBox 检测就可以判定拾取到图形\n * 默认是 false,但是有些图形例如 image、marker 等都可直接使用 BBox 的检测而不需要使用图形拾取\n * @return {Boolean} 仅仅使用 BBox 进行拾取\n */\n AbstractShape.prototype.isOnlyHitBox = function () {\n return false;\n };\n // 不同的 Shape 各自实现\n AbstractShape.prototype.isHit = function (x, y) {\n var startArrowShape = this.get('startArrowShape');\n var endArrowShape = this.get('endArrowShape');\n var vec = [x, y, 1];\n vec = this.invertFromMatrix(vec);\n var refX = vec[0],\n refY = vec[1];\n var inBBox = this._isInBBox(refX, refY);\n // 跳过图形的拾取,在某些图形中可以省略一倍的检测成本\n if (this.isOnlyHitBox()) {\n return inBBox;\n }\n // 被裁减掉的和不在包围盒内的不进行计算\n if (inBBox && !this.isClipped(refX, refY)) {\n // 对图形进行拾取判断\n if (this.isInShape(refX, refY)) {\n return true;\n }\n // 对起始箭头进行拾取判断\n if (startArrowShape && startArrowShape.isHit(refX, refY)) {\n return true;\n }\n // 对结束箭头进行拾取判断\n if (endArrowShape && endArrowShape.isHit(refX, refY)) {\n return true;\n }\n }\n return false;\n };\n return AbstractShape;\n}(Element);\nexport default AbstractShape;","export function linear(t) {\n return +t;\n}","export function quadIn(t) {\n return t * t;\n}\nexport function quadOut(t) {\n return t * (2 - t);\n}\nexport function quadInOut(t) {\n return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;\n}","export function cubicIn(t) {\n return t * t * t;\n}\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}","var exponent = 3;\nexport var polyIn = function custom(e) {\n e = +e;\n function polyIn(t) {\n return Math.pow(t, e);\n }\n polyIn.exponent = custom;\n return polyIn;\n}(exponent);\nexport var polyOut = function custom(e) {\n e = +e;\n function polyOut(t) {\n return 1 - Math.pow(1 - t, e);\n }\n polyOut.exponent = custom;\n return polyOut;\n}(exponent);\nexport var polyInOut = function custom(e) {\n e = +e;\n function polyInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\n }\n polyInOut.exponent = custom;\n return polyInOut;\n}(exponent);","var pi = Math.PI,\n halfPi = pi / 2;\nexport function sinIn(t) {\n return +t === 1 ? 1 : 1 - Math.cos(t * halfPi);\n}\nexport function sinOut(t) {\n return Math.sin(t * halfPi);\n}\nexport function sinInOut(t) {\n return (1 - Math.cos(pi * t)) / 2;\n}","// tpmt is two power minus ten times t scaled to [0,1]\nexport function tpmt(x) {\n return (Math.pow(2, -10 * x) - 0.0009765625) * 1.0009775171065494;\n}","import { tpmt } from \"./math.js\";\nexport function expIn(t) {\n return tpmt(1 - +t);\n}\nexport function expOut(t) {\n return 1 - tpmt(t);\n}\nexport function expInOut(t) {\n return ((t *= 2) <= 1 ? tpmt(1 - t) : 2 - tpmt(t - 1)) / 2;\n}","export function circleIn(t) {\n return 1 - Math.sqrt(1 - t * t);\n}\nexport function circleOut(t) {\n return Math.sqrt(1 - --t * t);\n}\nexport function circleInOut(t) {\n return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\n}","var b1 = 4 / 11,\n b2 = 6 / 11,\n b3 = 8 / 11,\n b4 = 3 / 4,\n b5 = 9 / 11,\n b6 = 10 / 11,\n b7 = 15 / 16,\n b8 = 21 / 22,\n b9 = 63 / 64,\n b0 = 1 / b1 / b1;\nexport function bounceIn(t) {\n return 1 - bounceOut(1 - t);\n}\nexport function bounceOut(t) {\n return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;\n}\nexport function bounceInOut(t) {\n return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\n}","var overshoot = 1.70158;\nexport var backIn = function custom(s) {\n s = +s;\n function backIn(t) {\n return (t = +t) * t * (s * (t - 1) + t);\n }\n backIn.overshoot = custom;\n return backIn;\n}(overshoot);\nexport var backOut = function custom(s) {\n s = +s;\n function backOut(t) {\n return --t * t * ((t + 1) * s + t) + 1;\n }\n backOut.overshoot = custom;\n return backOut;\n}(overshoot);\nexport var backInOut = function custom(s) {\n s = +s;\n function backInOut(t) {\n return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;\n }\n backInOut.overshoot = custom;\n return backInOut;\n}(overshoot);","import { tpmt } from \"./math.js\";\nvar tau = 2 * Math.PI,\n amplitude = 1,\n period = 0.3;\nexport var elasticIn = function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n function elasticIn(t) {\n return a * tpmt(- --t) * Math.sin((s - t) / p);\n }\n elasticIn.amplitude = function (a) {\n return custom(a, p * tau);\n };\n elasticIn.period = function (p) {\n return custom(a, p);\n };\n return elasticIn;\n}(amplitude, period);\nexport var elasticOut = function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n function elasticOut(t) {\n return 1 - a * tpmt(t = +t) * Math.sin((t + s) / p);\n }\n elasticOut.amplitude = function (a) {\n return custom(a, p * tau);\n };\n elasticOut.period = function (p) {\n return custom(a, p);\n };\n return elasticOut;\n}(amplitude, period);\nexport var elasticInOut = function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n function elasticInOut(t) {\n return ((t = t * 2 - 1) < 0 ? a * tpmt(-t) * Math.sin((s - t) / p) : 2 - a * tpmt(t) * Math.sin((s + t) / p)) / 2;\n }\n elasticInOut.amplitude = function (a) {\n return custom(a, p * tau);\n };\n elasticInOut.period = function (p) {\n return custom(a, p);\n };\n return elasticInOut;\n}(amplitude, period);","import * as d3Ease from 'd3-ease';\nvar EASING_MAP = {};\n/**\n * 根据名称获取对应的动画缓动函数\n * @param type 动画缓动函数名称\n */\nexport function getEasing(type) {\n // 默认从 d3-ease 中获取\n return EASING_MAP[type.toLowerCase()] || d3Ease[type];\n}\n/**\n * 注册动画缓动函数\n * @param type 动画缓动函数名称\n * @param easeFn 动画缓动函数\n */\nexport function registerEasing(type, easeFn) {\n EASING_MAP[type.toLowerCase()] = easeFn;\n}","var cache = new Map();\n/**\n * 注册计算包围盒的算法\n * @param type 方法名\n * @param method 方法\n */\nexport function register(type, method) {\n cache.set(type, method);\n}\n/**\n * 获取计算包围盒的算法\n * @param type 方法名\n */\nexport function getMethod(type) {\n return cache.get(type);\n}","export default function (shape) {\n var attrs = shape.attr();\n var x = attrs.x,\n y = attrs.y,\n width = attrs.width,\n height = attrs.height;\n return {\n x: x,\n y: y,\n width: width,\n height: height\n };\n}","export default function (shape) {\n var _a = shape.attr(),\n x = _a.x,\n y = _a.y,\n r = _a.r;\n return {\n x: x - r,\n y: y - r,\n width: r * 2,\n height: r * 2\n };\n}","// 合并包围盒\nexport function mergeBBox(bbox1, bbox2) {\n if (!bbox1 || !bbox2) {\n return bbox1 || bbox2;\n }\n return {\n minX: Math.min(bbox1.minX, bbox2.minX),\n minY: Math.min(bbox1.minY, bbox2.minY),\n maxX: Math.max(bbox1.maxX, bbox2.maxX),\n maxY: Math.max(bbox1.maxY, bbox2.maxY)\n };\n}\n// 合并箭头的包围盒\nexport function mergeArrowBBox(shape, bbox) {\n var startArrowShape = shape.get('startArrowShape');\n var endArrowShape = shape.get('endArrowShape');\n var startArrowBBox = null;\n var endArrowBBox = null;\n if (startArrowShape) {\n startArrowBBox = startArrowShape.getCanvasBBox();\n bbox = mergeBBox(bbox, startArrowBBox);\n }\n if (endArrowShape) {\n endArrowBBox = endArrowShape.getCanvasBBox();\n bbox = mergeBBox(bbox, endArrowBBox);\n }\n return bbox;\n}","import { Quad as QuadUtil, Cubic as CubicUtil, Arc as EllipseArcUtil } from '@antv/g-math';\nimport { path2Segments } from '@antv/path-util';\nimport { isNumberEqual, max, min } from '@antv/util';\nimport { mergeArrowBBox } from './util';\nfunction getPathBox(segments, lineWidth) {\n var xArr = [];\n var yArr = [];\n var segmentsWithAngle = [];\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n var currentPoint = segment.currentPoint,\n params = segment.params,\n prePoint = segment.prePoint;\n var box = void 0;\n switch (segment.command) {\n case 'Q':\n box = QuadUtil.box(prePoint[0], prePoint[1], params[1], params[2], params[3], params[4]);\n break;\n case 'C':\n box = CubicUtil.box(prePoint[0], prePoint[1], params[1], params[2], params[3], params[4], params[5], params[6]);\n break;\n case 'A':\n var arcParams = segment.arcParams;\n box = EllipseArcUtil.box(arcParams.cx, arcParams.cy, arcParams.rx, arcParams.ry, arcParams.xRotation, arcParams.startAngle, arcParams.endAngle);\n break;\n default:\n xArr.push(currentPoint[0]);\n yArr.push(currentPoint[1]);\n break;\n }\n if (box) {\n segment.box = box;\n xArr.push(box.x, box.x + box.width);\n yArr.push(box.y, box.y + box.height);\n }\n if (lineWidth && (segment.command === 'L' || segment.command === 'M') && segment.prePoint && segment.nextPoint) {\n segmentsWithAngle.push(segment);\n }\n }\n // bbox calculation should ignore NaN for path attribute\n // ref: https://github.com/antvis/g/issues/210\n // ref: https://github.com/antvis/G2/issues/3109\n xArr = xArr.filter(function (item) {\n return !Number.isNaN(item) && item !== Infinity && item !== -Infinity;\n });\n yArr = yArr.filter(function (item) {\n return !Number.isNaN(item) && item !== Infinity && item !== -Infinity;\n });\n var minX = min(xArr);\n var minY = min(yArr);\n var maxX = max(xArr);\n var maxY = max(yArr);\n if (segmentsWithAngle.length === 0) {\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n }\n for (var i = 0; i < segmentsWithAngle.length; i++) {\n var segment = segmentsWithAngle[i];\n var currentPoint = segment.currentPoint;\n var extra = void 0;\n if (currentPoint[0] === minX) {\n extra = getExtraFromSegmentWithAngle(segment, lineWidth);\n minX = minX - extra.xExtra;\n } else if (currentPoint[0] === maxX) {\n extra = getExtraFromSegmentWithAngle(segment, lineWidth);\n maxX = maxX + extra.xExtra;\n }\n if (currentPoint[1] === minY) {\n extra = getExtraFromSegmentWithAngle(segment, lineWidth);\n minY = minY - extra.yExtra;\n } else if (currentPoint[1] === maxY) {\n extra = getExtraFromSegmentWithAngle(segment, lineWidth);\n maxY = maxY + extra.yExtra;\n }\n }\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getExtraFromSegmentWithAngle(segment, lineWidth) {\n var prePoint = segment.prePoint,\n currentPoint = segment.currentPoint,\n nextPoint = segment.nextPoint;\n var currentAndPre = Math.pow(currentPoint[0] - prePoint[0], 2) + Math.pow(currentPoint[1] - prePoint[1], 2);\n var currentAndNext = Math.pow(currentPoint[0] - nextPoint[0], 2) + Math.pow(currentPoint[1] - nextPoint[1], 2);\n var preAndNext = Math.pow(prePoint[0] - nextPoint[0], 2) + Math.pow(prePoint[1] - nextPoint[1], 2);\n // 以 currentPoint 为顶点的夹角\n var currentAngle = Math.acos((currentAndPre + currentAndNext - preAndNext) / (2 * Math.sqrt(currentAndPre) * Math.sqrt(currentAndNext)));\n // 夹角为空、 0 或 PI 时,不需要计算夹角处的额外宽度\n // 注意: 由于计算精度问题,夹角为 0 的情况计算出来的角度可能是一个很小的值,还需要判断其与 0 是否近似相等\n if (!currentAngle || Math.sin(currentAngle) === 0 || isNumberEqual(currentAngle, 0)) {\n return {\n xExtra: 0,\n yExtra: 0\n };\n }\n var xAngle = Math.abs(Math.atan2(nextPoint[1] - currentPoint[1], nextPoint[0] - currentPoint[0]));\n var yAngle = Math.abs(Math.atan2(nextPoint[0] - currentPoint[0], nextPoint[1] - currentPoint[1]));\n // 将夹角转为锐角\n xAngle = xAngle > Math.PI / 2 ? Math.PI - xAngle : xAngle;\n yAngle = yAngle > Math.PI / 2 ? Math.PI - yAngle : yAngle;\n // 这里不考虑在水平和垂直方向的投影,直接使用最大差值\n // 由于上层统一加减了二分之一线宽,这里需要进行弥补\n var extra = {\n // 水平方向投影\n xExtra: Math.cos(currentAngle / 2 - xAngle) * (lineWidth / 2 * (1 / Math.sin(currentAngle / 2))) - lineWidth / 2 || 0,\n // 垂直方向投影\n yExtra: Math.cos(yAngle - currentAngle / 2) * (lineWidth / 2 * (1 / Math.sin(currentAngle / 2))) - lineWidth / 2 || 0\n };\n return extra;\n}\nexport default function (shape) {\n var attrs = shape.attr();\n var path = attrs.path,\n stroke = attrs.stroke;\n var lineWidth = stroke ? attrs.lineWidth : 0; // 只有有 stroke 时,lineWidth 才生效\n var segments = shape.get('segments') || path2Segments(path);\n var _a = getPathBox(segments, lineWidth),\n x = _a.x,\n y = _a.y,\n width = _a.width,\n height = _a.height;\n var bbox = {\n minX: x,\n minY: y,\n maxX: x + width,\n maxY: y + height\n };\n bbox = mergeArrowBBox(shape, bbox);\n return {\n x: bbox.minX,\n y: bbox.minY,\n width: bbox.maxX - bbox.minX,\n height: bbox.maxY - bbox.minY\n };\n}","import { register, getMethod } from './register';\nimport rect from './rect';\nimport circle from './circle';\nimport polyline from './polyline';\nimport polygon from './polygon';\nimport text from './text';\nimport path from './path';\nimport line from './line';\nimport ellipse from './ellipse';\nregister('rect', rect);\nregister('image', rect); // image 使用 rect 的包围盒计算\nregister('circle', circle);\nregister('marker', circle); // marker 使用 circle 的计算方案\nregister('polyline', polyline);\nregister('polygon', polygon);\nregister('text', text);\nregister('path', path);\nregister('line', line);\nregister('ellipse', ellipse);\nexport { getMethod as getBBoxMethod, register as registerBBox };","import { Util } from '@antv/g-math';\nimport { mergeArrowBBox } from './util';\nexport default function (shape) {\n var attrs = shape.attr();\n var points = attrs.points;\n var xArr = [];\n var yArr = [];\n for (var i = 0; i < points.length; i++) {\n var point = points[i];\n xArr.push(point[0]);\n yArr.push(point[1]);\n }\n var _a = Util.getBBoxByArray(xArr, yArr),\n x = _a.x,\n y = _a.y,\n width = _a.width,\n height = _a.height;\n var bbox = {\n minX: x,\n minY: y,\n maxX: x + width,\n maxY: y + height\n };\n bbox = mergeArrowBBox(shape, bbox);\n return {\n x: bbox.minX,\n y: bbox.minY,\n width: bbox.maxX - bbox.minX,\n height: bbox.maxY - bbox.minY\n };\n}","import { Util } from '@antv/g-math';\nexport default function (shape) {\n var attrs = shape.attr();\n var points = attrs.points;\n var xArr = [];\n var yArr = [];\n for (var i = 0; i < points.length; i++) {\n var point = points[i];\n xArr.push(point[0]);\n yArr.push(point[1]);\n }\n return Util.getBBoxByArray(xArr, yArr);\n}","import { getTextWidth, getTextHeight, assembleFont } from '../util/text';\nexport default function (shape) {\n var attrs = shape.attr();\n var x = attrs.x,\n y = attrs.y,\n text = attrs.text,\n fontSize = attrs.fontSize,\n lineHeight = attrs.lineHeight;\n var font = attrs.font;\n if (!font) {\n // 如果未组装 font\n font = assembleFont(attrs);\n }\n var width = getTextWidth(text, font);\n var bbox;\n if (!width) {\n // 如果width不存在,四点共其实点\n bbox = {\n x: x,\n y: y,\n width: 0,\n height: 0\n };\n } else {\n var textAlign = attrs.textAlign,\n textBaseline = attrs.textBaseline;\n var height = getTextHeight(text, fontSize, lineHeight); // attrs.height\n // 默认左右对齐:left, 默认上下对齐 bottom\n var point = {\n x: x,\n y: y - height\n };\n if (textAlign) {\n if (textAlign === 'end' || textAlign === 'right') {\n point.x -= width;\n } else if (textAlign === 'center') {\n point.x -= width / 2;\n }\n }\n if (textBaseline) {\n if (textBaseline === 'top') {\n point.y += height;\n } else if (textBaseline === 'middle') {\n point.y += height / 2;\n }\n }\n bbox = {\n x: point.x,\n y: point.y,\n width: width,\n height: height\n };\n }\n return bbox;\n}","import { mergeArrowBBox } from './util';\nexport default function (shape) {\n var attrs = shape.attr();\n var x1 = attrs.x1,\n y1 = attrs.y1,\n x2 = attrs.x2,\n y2 = attrs.y2;\n var minX = Math.min(x1, x2);\n var maxX = Math.max(x1, x2);\n var minY = Math.min(y1, y2);\n var maxY = Math.max(y1, y2);\n var bbox = {\n minX: minX,\n maxX: maxX,\n minY: minY,\n maxY: maxY\n };\n bbox = mergeArrowBBox(shape, bbox);\n return {\n x: bbox.minX,\n y: bbox.minY,\n width: bbox.maxX - bbox.minX,\n height: bbox.maxY - bbox.minY\n };\n}","export default function (shape) {\n var attrs = shape.attr();\n var x = attrs.x,\n y = attrs.y,\n rx = attrs.rx,\n ry = attrs.ry;\n return {\n x: x - rx,\n y: y - ry,\n width: rx * 2,\n height: ry * 2\n };\n}","var GraphEvent = /** @class */function () {\n function GraphEvent(type, event) {\n /**\n * 是否允许冒泡\n * @type {boolean}\n */\n this.bubbles = true;\n /**\n * 触发对象\n * @type {object}\n */\n this.target = null;\n /**\n * 监听对象\n * @type {object}\n */\n this.currentTarget = null;\n /**\n * 委托对象\n * @type {object}\n */\n this.delegateTarget = null;\n /**\n * 委托事件监听对象的代理对象,即 ev.delegateObject = ev.currentTarget.get('delegateObject')\n * @type {object}\n */\n this.delegateObject = null;\n /**\n * 是否阻止了原生事件\n * @type {boolean}\n */\n this.defaultPrevented = false;\n /**\n * 是否阻止传播(向上冒泡)\n * @type {boolean}\n */\n this.propagationStopped = false;\n /**\n * 触发事件的图形\n * @type {IShape}\n */\n this.shape = null;\n /**\n * 开始触发事件的图形\n * @type {IShape}\n */\n this.fromShape = null;\n /**\n * 事件结束时的触发图形\n * @type {IShape}\n */\n this.toShape = null;\n // 触发事件的路径\n this.propagationPath = [];\n this.type = type;\n this.name = type;\n this.originalEvent = event;\n this.timeStamp = event.timeStamp;\n }\n /**\n * 阻止浏览器默认的行为\n */\n GraphEvent.prototype.preventDefault = function () {\n this.defaultPrevented = true;\n if (this.originalEvent.preventDefault) {\n this.originalEvent.preventDefault();\n }\n };\n /**\n * 阻止冒泡\n */\n GraphEvent.prototype.stopPropagation = function () {\n this.propagationStopped = true;\n };\n GraphEvent.prototype.toString = function () {\n var type = this.type;\n return \"[Event (type=\" + type + \")]\";\n };\n GraphEvent.prototype.save = function () {};\n GraphEvent.prototype.restore = function () {};\n return GraphEvent;\n}();\nexport default GraphEvent;","/**\n * @fileoverview G 的基础接口定义和所有的抽象类\n * @author dxq613@gmail.com\n */\nimport * as PathUtil from './util/path';\nexport * from './types';\nexport * from './interfaces';\nexport { default as Event } from './event/graph-event';\nexport { default as Base } from './abstract/base';\nexport { default as AbstractCanvas } from './abstract/canvas';\nexport { default as AbstractGroup } from './abstract/group';\nexport { default as AbstractShape } from './abstract/shape';\nexport { PathUtil };\nexport { getBBoxMethod, registerBBox } from './bbox';\nexport { getTextHeight, assembleFont } from './util/text';\nexport { isAllowCapture } from './util/util';\nexport { multiplyVec2, invert } from './util/matrix';\nexport { getOffScreenContext } from './util/offscreen';\nexport { registerEasing } from './animate/register';\nexport var version = '0.5.11';","/**\n * @fileoverview 矩阵运算,本来是要引入 gl-matrix, 但是考虑到 g-mobile 对大小有限制,同时 g-webgl 使用的 matrix 不一致\n * 所以,这里仅实现 2D 几个运算,上层自己引入 gl-matrix\n * @author dxq613@gmail.com\n */\n/**\n * 3阶矩阵相乘\n * @param {number[]} a 矩阵1\n * @param {number[]} b 矩阵2\n */\nexport function multiplyMatrix(a, b) {\n var out = [];\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a10 = a[3];\n var a11 = a[4];\n var a12 = a[5];\n var a20 = a[6];\n var a21 = a[7];\n var a22 = a[8];\n var b00 = b[0];\n var b01 = b[1];\n var b02 = b[2];\n var b10 = b[3];\n var b11 = b[4];\n var b12 = b[5];\n var b20 = b[6];\n var b21 = b[7];\n var b22 = b[8];\n out[0] = b00 * a00 + b01 * a10 + b02 * a20;\n out[1] = b00 * a01 + b01 * a11 + b02 * a21;\n out[2] = b00 * a02 + b01 * a12 + b02 * a22;\n out[3] = b10 * a00 + b11 * a10 + b12 * a20;\n out[4] = b10 * a01 + b11 * a11 + b12 * a21;\n out[5] = b10 * a02 + b11 * a12 + b12 * a22;\n out[6] = b20 * a00 + b21 * a10 + b22 * a20;\n out[7] = b20 * a01 + b21 * a11 + b22 * a21;\n out[8] = b20 * a02 + b21 * a12 + b22 * a22;\n return out;\n}\n/**\n * 3阶矩阵同2阶向量相乘\n * @param {number[]} m 矩阵\n * @param {number[]} v 二阶向量\n */\nexport function multiplyVec2(m, v) {\n var out = [];\n var x = v[0];\n var y = v[1];\n out[0] = m[0] * x + m[3] * y + m[6];\n out[1] = m[1] * x + m[4] * y + m[7];\n return out;\n}\n/**\n * 矩阵的逆\n * @param {number[]} a 矩阵\n */\nexport function invert(a) {\n var out = [];\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a10 = a[3];\n var a11 = a[4];\n var a12 = a[5];\n var a20 = a[6];\n var a21 = a[7];\n var a22 = a[8];\n var b01 = a22 * a11 - a12 * a21;\n var b11 = -a22 * a10 + a12 * a20;\n var b21 = a21 * a10 - a11 * a20;\n // Calculate the determinant\n var det = a00 * b01 + a01 * b11 + a02 * b21;\n if (!det) {\n return null;\n }\n det = 1.0 / det;\n out[0] = b01 * det;\n out[1] = (-a22 * a01 + a02 * a21) * det;\n out[2] = (a12 * a01 - a02 * a11) * det;\n out[3] = b11 * det;\n out[4] = (a22 * a00 - a02 * a20) * det;\n out[5] = (-a12 * a00 + a02 * a10) * det;\n out[6] = b21 * det;\n out[7] = (-a21 * a00 + a01 * a20) * det;\n out[8] = (a11 * a00 - a01 * a10) * det;\n return out;\n}","// 全局设置一个唯一离屏的 ctx,用于计算 isPointInPath\nvar offScreenCtx = null;\nexport function getOffScreenContext() {\n if (!offScreenCtx) {\n var canvas = document.createElement('canvas');\n canvas.width = 1;\n canvas.height = 1;\n offScreenCtx = canvas.getContext('2d');\n }\n return offScreenCtx;\n}","import { each, isArray } from '@antv/util';\nvar SPACES = \"\\t\\n\\x0B\\f\\r \\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\";\nvar PATH_COMMAND = new RegExp(\"([a-z])[\" + SPACES + \",]*((-?\\\\d*\\\\.?\\\\d*(?:e[\\\\-+]?\\\\d+)?[\" + SPACES + \"]*,?[\" + SPACES + \"]*)+)\", 'ig');\nvar PATH_VALUES = new RegExp(\"(-?\\\\d*\\\\.?\\\\d*(?:e[\\\\-+]?\\\\d+)?)[\" + SPACES + \"]*,?[\" + SPACES + \"]*\", 'ig');\n// Parse given path string into an array of arrays of path segments\nvar parsePathString = function parsePathString(pathString) {\n if (!pathString) {\n return null;\n }\n if (isArray(pathString)) {\n return pathString;\n }\n var paramCounts = {\n a: 7,\n c: 6,\n o: 2,\n h: 1,\n l: 2,\n m: 2,\n r: 4,\n q: 4,\n s: 4,\n t: 2,\n v: 1,\n u: 3,\n z: 0\n };\n var data = [];\n String(pathString).replace(PATH_COMMAND, function (a, b, c) {\n var params = [];\n var name = b.toLowerCase();\n c.replace(PATH_VALUES, function (a, b) {\n b && params.push(+b);\n });\n if (name === 'm' && params.length > 2) {\n data.push([b].concat(params.splice(0, 2)));\n name = 'l';\n b = b === 'm' ? 'l' : 'L';\n }\n if (name === 'o' && params.length === 1) {\n data.push([b, params[0]]);\n }\n if (name === 'r') {\n data.push([b].concat(params));\n } else {\n while (params.length >= paramCounts[name]) {\n data.push([b].concat(params.splice(0, paramCounts[name])));\n if (!paramCounts[name]) {\n break;\n }\n }\n }\n return pathString;\n });\n return data;\n};\n// http://schepers.cc/getting-to-the-point\nvar catmullRomToBezier = function catmullRomToBezier(crp, z) {\n var d = [];\n // @ts-ignore\n for (var i = 0, iLen = crp.length; iLen - 2 * !z > i; i += 2) {\n var p = [{\n x: +crp[i - 2],\n y: +crp[i - 1]\n }, {\n x: +crp[i],\n y: +crp[i + 1]\n }, {\n x: +crp[i + 2],\n y: +crp[i + 3]\n }, {\n x: +crp[i + 4],\n y: +crp[i + 5]\n }];\n if (z) {\n if (!i) {\n p[0] = {\n x: +crp[iLen - 2],\n y: +crp[iLen - 1]\n };\n } else if (iLen - 4 === i) {\n p[3] = {\n x: +crp[0],\n y: +crp[1]\n };\n } else if (iLen - 2 === i) {\n p[2] = {\n x: +crp[0],\n y: +crp[1]\n };\n p[3] = {\n x: +crp[2],\n y: +crp[3]\n };\n }\n } else {\n if (iLen - 4 === i) {\n p[3] = p[2];\n } else if (!i) {\n p[0] = {\n x: +crp[i],\n y: +crp[i + 1]\n };\n }\n }\n d.push(['C', (-p[0].x + 6 * p[1].x + p[2].x) / 6, (-p[0].y + 6 * p[1].y + p[2].y) / 6, (p[1].x + 6 * p[2].x - p[3].x) / 6, (p[1].y + 6 * p[2].y - p[3].y) / 6, p[2].x, p[2].y]);\n }\n return d;\n};\nvar ellipsePath = function ellipsePath(x, y, rx, ry, a) {\n var res = [];\n if (a === null && ry === null) {\n ry = rx;\n }\n x = +x;\n y = +y;\n rx = +rx;\n ry = +ry;\n if (a !== null) {\n var rad = Math.PI / 180;\n var x1 = x + rx * Math.cos(-ry * rad);\n var x2 = x + rx * Math.cos(-a * rad);\n var y1 = y + rx * Math.sin(-ry * rad);\n var y2 = y + rx * Math.sin(-a * rad);\n res = [['M', x1, y1], ['A', rx, rx, 0, +(a - ry > 180), 0, x2, y2]];\n } else {\n res = [['M', x, y], ['m', 0, -ry], ['a', rx, ry, 0, 1, 1, 0, 2 * ry], ['a', rx, ry, 0, 1, 1, 0, -2 * ry], ['z']];\n }\n return res;\n};\nvar pathToAbsolute = function pathToAbsolute(pathArray) {\n pathArray = parsePathString(pathArray);\n if (!pathArray || !pathArray.length) {\n return [['M', 0, 0]];\n }\n var res = [];\n var x = 0;\n var y = 0;\n var mx = 0;\n var my = 0;\n var start = 0;\n var pa0;\n var dots;\n if (pathArray[0][0] === 'M') {\n x = +pathArray[0][1];\n y = +pathArray[0][2];\n mx = x;\n my = y;\n start++;\n res[0] = ['M', x, y];\n }\n var crz = pathArray.length === 3 && pathArray[0][0] === 'M' && pathArray[1][0].toUpperCase() === 'R' && pathArray[2][0].toUpperCase() === 'Z';\n for (var r = void 0, pa = void 0, i = start, ii = pathArray.length; i < ii; i++) {\n res.push(r = []);\n pa = pathArray[i];\n pa0 = pa[0];\n if (pa0 !== pa0.toUpperCase()) {\n r[0] = pa0.toUpperCase();\n switch (r[0]) {\n case 'A':\n r[1] = pa[1];\n r[2] = pa[2];\n r[3] = pa[3];\n r[4] = pa[4];\n r[5] = pa[5];\n r[6] = +pa[6] + x;\n r[7] = +pa[7] + y;\n break;\n case 'V':\n r[1] = +pa[1] + y;\n break;\n case 'H':\n r[1] = +pa[1] + x;\n break;\n case 'R':\n dots = [x, y].concat(pa.slice(1));\n for (var j = 2, jj = dots.length; j < jj; j++) {\n dots[j] = +dots[j] + x;\n dots[++j] = +dots[j] + y;\n }\n res.pop();\n res = res.concat(catmullRomToBezier(dots, crz));\n break;\n case 'O':\n res.pop();\n dots = ellipsePath(x, y, pa[1], pa[2]);\n dots.push(dots[0]);\n res = res.concat(dots);\n break;\n case 'U':\n res.pop();\n res = res.concat(ellipsePath(x, y, pa[1], pa[2], pa[3]));\n r = ['U'].concat(res[res.length - 1].slice(-2));\n break;\n case 'M':\n mx = +pa[1] + x;\n my = +pa[2] + y;\n break;\n // for lint\n default:\n for (var j = 1, jj = pa.length; j < jj; j++) {\n r[j] = +pa[j] + (j % 2 ? x : y);\n }\n }\n } else if (pa0 === 'R') {\n dots = [x, y].concat(pa.slice(1));\n res.pop();\n res = res.concat(catmullRomToBezier(dots, crz));\n r = ['R'].concat(pa.slice(-2));\n } else if (pa0 === 'O') {\n res.pop();\n dots = ellipsePath(x, y, pa[1], pa[2]);\n dots.push(dots[0]);\n res = res.concat(dots);\n } else if (pa0 === 'U') {\n res.pop();\n res = res.concat(ellipsePath(x, y, pa[1], pa[2], pa[3]));\n r = ['U'].concat(res[res.length - 1].slice(-2));\n } else {\n for (var k = 0, kk = pa.length; k < kk; k++) {\n r[k] = pa[k];\n }\n }\n pa0 = pa0.toUpperCase();\n if (pa0 !== 'O') {\n switch (r[0]) {\n case 'Z':\n x = +mx;\n y = +my;\n break;\n case 'H':\n x = r[1];\n break;\n case 'V':\n y = r[1];\n break;\n case 'M':\n mx = r[r.length - 2];\n my = r[r.length - 1];\n break;\n // for lint\n default:\n x = r[r.length - 2];\n y = r[r.length - 1];\n }\n }\n }\n return res;\n};\nvar l2c = function l2c(x1, y1, x2, y2) {\n return [x1, y1, x2, y2, x2, y2];\n};\nvar q2c = function q2c(x1, y1, ax, ay, x2, y2) {\n var _13 = 1 / 3;\n var _23 = 2 / 3;\n return [_13 * x1 + _23 * ax, _13 * y1 + _23 * ay, _13 * x2 + _23 * ax, _13 * y2 + _23 * ay, x2, y2];\n};\nvar a2c = function a2c(x1, y1, rx, ry, angle, large_arc_flag, sweep_flag, x2, y2, recursive) {\n // for more information of where this math came from visit:\n // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes\n if (rx === ry) {\n rx += 1;\n }\n var _120 = Math.PI * 120 / 180;\n var rad = Math.PI / 180 * (+angle || 0);\n var res = [];\n var xy;\n var f1;\n var f2;\n var cx;\n var cy;\n var rotate = function rotate(x, y, rad) {\n var X = x * Math.cos(rad) - y * Math.sin(rad);\n var Y = x * Math.sin(rad) + y * Math.cos(rad);\n return {\n x: X,\n y: Y\n };\n };\n if (!recursive) {\n xy = rotate(x1, y1, -rad);\n x1 = xy.x;\n y1 = xy.y;\n xy = rotate(x2, y2, -rad);\n x2 = xy.x;\n y2 = xy.y;\n if (x1 === x2 && y1 === y2) {\n // 若弧的起始点和终点重叠则错开一点\n x2 += 1;\n y2 += 1;\n }\n // const cos = Math.cos(Math.PI / 180 * angle);\n // const sin = Math.sin(Math.PI / 180 * angle);\n var x = (x1 - x2) / 2;\n var y = (y1 - y2) / 2;\n var h = x * x / (rx * rx) + y * y / (ry * ry);\n if (h > 1) {\n h = Math.sqrt(h);\n rx = h * rx;\n ry = h * ry;\n }\n var rx2 = rx * rx;\n var ry2 = ry * ry;\n var k = (large_arc_flag === sweep_flag ? -1 : 1) * Math.sqrt(Math.abs((rx2 * ry2 - rx2 * y * y - ry2 * x * x) / (rx2 * y * y + ry2 * x * x)));\n cx = k * rx * y / ry + (x1 + x2) / 2;\n cy = k * -ry * x / rx + (y1 + y2) / 2;\n // @ts-ignore\n f1 = Math.asin(((y1 - cy) / ry).toFixed(9));\n // @ts-ignore\n f2 = Math.asin(((y2 - cy) / ry).toFixed(9));\n f1 = x1 < cx ? Math.PI - f1 : f1;\n f2 = x2 < cx ? Math.PI - f2 : f2;\n f1 < 0 && (f1 = Math.PI * 2 + f1);\n f2 < 0 && (f2 = Math.PI * 2 + f2);\n if (sweep_flag && f1 > f2) {\n f1 = f1 - Math.PI * 2;\n }\n if (!sweep_flag && f2 > f1) {\n f2 = f2 - Math.PI * 2;\n }\n } else {\n f1 = recursive[0];\n f2 = recursive[1];\n cx = recursive[2];\n cy = recursive[3];\n }\n var df = f2 - f1;\n if (Math.abs(df) > _120) {\n var f2old = f2;\n var x2old = x2;\n var y2old = y2;\n f2 = f1 + _120 * (sweep_flag && f2 > f1 ? 1 : -1);\n x2 = cx + rx * Math.cos(f2);\n y2 = cy + ry * Math.sin(f2);\n res = a2c(x2, y2, rx, ry, angle, 0, sweep_flag, x2old, y2old, [f2, f2old, cx, cy]);\n }\n df = f2 - f1;\n var c1 = Math.cos(f1);\n var s1 = Math.sin(f1);\n var c2 = Math.cos(f2);\n var s2 = Math.sin(f2);\n var t = Math.tan(df / 4);\n var hx = 4 / 3 * rx * t;\n var hy = 4 / 3 * ry * t;\n var m1 = [x1, y1];\n var m2 = [x1 + hx * s1, y1 - hy * c1];\n var m3 = [x2 + hx * s2, y2 - hy * c2];\n var m4 = [x2, y2];\n m2[0] = 2 * m1[0] - m2[0];\n m2[1] = 2 * m1[1] - m2[1];\n if (recursive) {\n return [m2, m3, m4].concat(res);\n }\n res = [m2, m3, m4].concat(res).join().split(',');\n var newres = [];\n for (var i = 0, ii = res.length; i < ii; i++) {\n newres[i] = i % 2 ? rotate(res[i - 1], res[i], rad).y : rotate(res[i], res[i + 1], rad).x;\n }\n return newres;\n};\nvar pathToCurve = function pathToCurve(path, path2) {\n var p = pathToAbsolute(path);\n var p2 = path2 && pathToAbsolute(path2);\n var attrs = {\n x: 0,\n y: 0,\n bx: 0,\n by: 0,\n X: 0,\n Y: 0,\n qx: null,\n qy: null\n };\n var attrs2 = {\n x: 0,\n y: 0,\n bx: 0,\n by: 0,\n X: 0,\n Y: 0,\n qx: null,\n qy: null\n };\n var pcoms1 = []; // path commands of original path p\n var pcoms2 = []; // path commands of original path p2\n var pfirst = ''; // temporary holder for original path command\n var pcom = ''; // holder for previous path command of original path\n var ii;\n var processPath = function processPath(path, d, pcom) {\n var nx;\n var ny;\n if (!path) {\n return ['C', d.x, d.y, d.x, d.y, d.x, d.y];\n }\n !(path[0] in {\n T: 1,\n Q: 1\n }) && (d.qx = d.qy = null);\n switch (path[0]) {\n case 'M':\n d.X = path[1];\n d.Y = path[2];\n break;\n case 'A':\n path = ['C'].concat(a2c.apply(0, [d.x, d.y].concat(path.slice(1))));\n break;\n case 'S':\n if (pcom === 'C' || pcom === 'S') {\n // In \"S\" case we have to take into account, if the previous command is C/S.\n nx = d.x * 2 - d.bx; // And reflect the previous\n ny = d.y * 2 - d.by; // command's control point relative to the current point.\n } else {\n // or some else or nothing\n nx = d.x;\n ny = d.y;\n }\n path = ['C', nx, ny].concat(path.slice(1));\n break;\n case 'T':\n if (pcom === 'Q' || pcom === 'T') {\n // In \"T\" case we have to take into account, if the previous command is Q/T.\n d.qx = d.x * 2 - d.qx; // And make a reflection similar\n d.qy = d.y * 2 - d.qy; // to case \"S\".\n } else {\n // or something else or nothing\n d.qx = d.x;\n d.qy = d.y;\n }\n path = ['C'].concat(q2c(d.x, d.y, d.qx, d.qy, path[1], path[2]));\n break;\n case 'Q':\n d.qx = path[1];\n d.qy = path[2];\n path = ['C'].concat(q2c(d.x, d.y, path[1], path[2], path[3], path[4]));\n break;\n case 'L':\n path = ['C'].concat(l2c(d.x, d.y, path[1], path[2]));\n break;\n case 'H':\n path = ['C'].concat(l2c(d.x, d.y, path[1], d.y));\n break;\n case 'V':\n path = ['C'].concat(l2c(d.x, d.y, d.x, path[1]));\n break;\n case 'Z':\n path = ['C'].concat(l2c(d.x, d.y, d.X, d.Y));\n break;\n default:\n break;\n }\n return path;\n };\n var fixArc = function fixArc(pp, i) {\n if (pp[i].length > 7) {\n pp[i].shift();\n var pi = pp[i];\n while (pi.length) {\n pcoms1[i] = 'A'; // if created multiple C:s, their original seg is saved\n p2 && (pcoms2[i] = 'A'); // the same as above\n pp.splice(i++, 0, ['C'].concat(pi.splice(0, 6)));\n }\n pp.splice(i, 1);\n ii = Math.max(p.length, p2 && p2.length || 0);\n }\n };\n var fixM = function fixM(path1, path2, a1, a2, i) {\n if (path1 && path2 && path1[i][0] === 'M' && path2[i][0] !== 'M') {\n path2.splice(i, 0, ['M', a2.x, a2.y]);\n a1.bx = 0;\n a1.by = 0;\n a1.x = path1[i][1];\n a1.y = path1[i][2];\n ii = Math.max(p.length, p2 && p2.length || 0);\n }\n };\n ii = Math.max(p.length, p2 && p2.length || 0);\n for (var i = 0; i < ii; i++) {\n p[i] && (pfirst = p[i][0]); // save current path command\n if (pfirst !== 'C') {\n // C is not saved yet, because it may be result of conversion\n pcoms1[i] = pfirst; // Save current path command\n i && (pcom = pcoms1[i - 1]); // Get previous path command pcom\n }\n\n p[i] = processPath(p[i], attrs, pcom); // Previous path command is inputted to processPath\n if (pcoms1[i] !== 'A' && pfirst === 'C') pcoms1[i] = 'C'; // A is the only command\n // which may produce multiple C:s\n // so we have to make sure that C is also C in original path\n fixArc(p, i); // fixArc adds also the right amount of A:s to pcoms1\n if (p2) {\n // the same procedures is done to p2\n p2[i] && (pfirst = p2[i][0]);\n if (pfirst !== 'C') {\n pcoms2[i] = pfirst;\n i && (pcom = pcoms2[i - 1]);\n }\n p2[i] = processPath(p2[i], attrs2, pcom);\n if (pcoms2[i] !== 'A' && pfirst === 'C') {\n pcoms2[i] = 'C';\n }\n fixArc(p2, i);\n }\n fixM(p, p2, attrs, attrs2, i);\n fixM(p2, p, attrs2, attrs, i);\n var seg = p[i];\n var seg2 = p2 && p2[i];\n var seglen = seg.length;\n var seg2len = p2 && seg2.length;\n attrs.x = seg[seglen - 2];\n attrs.y = seg[seglen - 1];\n attrs.bx = parseFloat(seg[seglen - 4]) || attrs.x;\n attrs.by = parseFloat(seg[seglen - 3]) || attrs.y;\n attrs2.bx = p2 && (parseFloat(seg2[seg2len - 4]) || attrs2.x);\n attrs2.by = p2 && (parseFloat(seg2[seg2len - 3]) || attrs2.y);\n attrs2.x = p2 && seg2[seg2len - 2];\n attrs2.y = p2 && seg2[seg2len - 1];\n }\n return p2 ? [p, p2] : p;\n};\nvar p2s = /,?([a-z]),?/gi;\nvar parsePathArray = function parsePathArray(path) {\n return path.join(',').replace(p2s, '$1');\n};\nvar base3 = function base3(t, p1, p2, p3, p4) {\n var t1 = -3 * p1 + 9 * p2 - 9 * p3 + 3 * p4;\n var t2 = t * t1 + 6 * p1 - 12 * p2 + 6 * p3;\n return t * t2 - 3 * p1 + 3 * p2;\n};\nvar bezlen = function bezlen(x1, y1, x2, y2, x3, y3, x4, y4, z) {\n if (z === null) {\n z = 1;\n }\n z = z > 1 ? 1 : z < 0 ? 0 : z;\n var z2 = z / 2;\n var n = 12;\n var Tvalues = [-0.1252, 0.1252, -0.3678, 0.3678, -0.5873, 0.5873, -0.7699, 0.7699, -0.9041, 0.9041, -0.9816, 0.9816];\n var Cvalues = [0.2491, 0.2491, 0.2335, 0.2335, 0.2032, 0.2032, 0.1601, 0.1601, 0.1069, 0.1069, 0.0472, 0.0472];\n var sum = 0;\n for (var i = 0; i < n; i++) {\n var ct = z2 * Tvalues[i] + z2;\n var xbase = base3(ct, x1, x2, x3, x4);\n var ybase = base3(ct, y1, y2, y3, y4);\n var comb = xbase * xbase + ybase * ybase;\n sum += Cvalues[i] * Math.sqrt(comb);\n }\n return z2 * sum;\n};\nvar curveDim = function curveDim(x0, y0, x1, y1, x2, y2, x3, y3) {\n var tvalues = [];\n var bounds = [[], []];\n var a;\n var b;\n var c;\n var t;\n for (var i = 0; i < 2; ++i) {\n if (i === 0) {\n b = 6 * x0 - 12 * x1 + 6 * x2;\n a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n c = 3 * x1 - 3 * x0;\n } else {\n b = 6 * y0 - 12 * y1 + 6 * y2;\n a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n c = 3 * y1 - 3 * y0;\n }\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) < 1e-12) {\n continue;\n }\n t = -c / b;\n if (t > 0 && t < 1) {\n tvalues.push(t);\n }\n continue;\n }\n var b2ac = b * b - 4 * c * a;\n var sqrtb2ac = Math.sqrt(b2ac);\n if (b2ac < 0) {\n continue;\n }\n var t1 = (-b + sqrtb2ac) / (2 * a);\n if (t1 > 0 && t1 < 1) {\n tvalues.push(t1);\n }\n var t2 = (-b - sqrtb2ac) / (2 * a);\n if (t2 > 0 && t2 < 1) {\n tvalues.push(t2);\n }\n }\n var j = tvalues.length;\n var jlen = j;\n var mt;\n while (j--) {\n t = tvalues[j];\n mt = 1 - t;\n bounds[0][j] = mt * mt * mt * x0 + 3 * mt * mt * t * x1 + 3 * mt * t * t * x2 + t * t * t * x3;\n bounds[1][j] = mt * mt * mt * y0 + 3 * mt * mt * t * y1 + 3 * mt * t * t * y2 + t * t * t * y3;\n }\n bounds[0][jlen] = x0;\n bounds[1][jlen] = y0;\n bounds[0][jlen + 1] = x3;\n bounds[1][jlen + 1] = y3;\n bounds[0].length = bounds[1].length = jlen + 2;\n return {\n min: {\n x: Math.min.apply(0, bounds[0]),\n y: Math.min.apply(0, bounds[1])\n },\n max: {\n x: Math.max.apply(0, bounds[0]),\n y: Math.max.apply(0, bounds[1])\n }\n };\n};\nvar intersect = function intersect(x1, y1, x2, y2, x3, y3, x4, y4) {\n if (Math.max(x1, x2) < Math.min(x3, x4) || Math.min(x1, x2) > Math.max(x3, x4) || Math.max(y1, y2) < Math.min(y3, y4) || Math.min(y1, y2) > Math.max(y3, y4)) {\n return;\n }\n var nx = (x1 * y2 - y1 * x2) * (x3 - x4) - (x1 - x2) * (x3 * y4 - y3 * x4);\n var ny = (x1 * y2 - y1 * x2) * (y3 - y4) - (y1 - y2) * (x3 * y4 - y3 * x4);\n var denominator = (x1 - x2) * (y3 - y4) - (y1 - y2) * (x3 - x4);\n if (!denominator) {\n return;\n }\n var px = nx / denominator;\n var py = ny / denominator;\n var px2 = +px.toFixed(2);\n var py2 = +py.toFixed(2);\n if (px2 < +Math.min(x1, x2).toFixed(2) || px2 > +Math.max(x1, x2).toFixed(2) || px2 < +Math.min(x3, x4).toFixed(2) || px2 > +Math.max(x3, x4).toFixed(2) || py2 < +Math.min(y1, y2).toFixed(2) || py2 > +Math.max(y1, y2).toFixed(2) || py2 < +Math.min(y3, y4).toFixed(2) || py2 > +Math.max(y3, y4).toFixed(2)) {\n return;\n }\n return {\n x: px,\n y: py\n };\n};\nvar isPointInsideBBox = function isPointInsideBBox(bbox, x, y) {\n return x >= bbox.x && x <= bbox.x + bbox.width && y >= bbox.y && y <= bbox.y + bbox.height;\n};\nvar rectPath = function rectPath(x, y, w, h, r) {\n if (r) {\n return [['M', +x + +r, y], ['l', w - r * 2, 0], ['a', r, r, 0, 0, 1, r, r], ['l', 0, h - r * 2], ['a', r, r, 0, 0, 1, -r, r], ['l', r * 2 - w, 0], ['a', r, r, 0, 0, 1, -r, -r], ['l', 0, r * 2 - h], ['a', r, r, 0, 0, 1, r, -r], ['z']];\n }\n var res = [['M', x, y], ['l', w, 0], ['l', 0, h], ['l', -w, 0], ['z']];\n // @ts-ignore\n res.parsePathArray = parsePathArray;\n return res;\n};\nvar box = function box(x, y, width, height) {\n if (x === null) {\n x = y = width = height = 0;\n }\n if (y === null) {\n y = x.y;\n width = x.width;\n height = x.height;\n x = x.x;\n }\n return {\n x: x,\n y: y,\n width: width,\n w: width,\n height: height,\n h: height,\n x2: x + width,\n y2: y + height,\n cx: x + width / 2,\n cy: y + height / 2,\n r1: Math.min(width, height) / 2,\n r2: Math.max(width, height) / 2,\n r0: Math.sqrt(width * width + height * height) / 2,\n path: rectPath(x, y, width, height),\n vb: [x, y, width, height].join(' ')\n };\n};\nvar isBBoxIntersect = function isBBoxIntersect(bbox1, bbox2) {\n bbox1 = box(bbox1);\n bbox2 = box(bbox2);\n return isPointInsideBBox(bbox2, bbox1.x, bbox1.y) || isPointInsideBBox(bbox2, bbox1.x2, bbox1.y) || isPointInsideBBox(bbox2, bbox1.x, bbox1.y2) || isPointInsideBBox(bbox2, bbox1.x2, bbox1.y2) || isPointInsideBBox(bbox1, bbox2.x, bbox2.y) || isPointInsideBBox(bbox1, bbox2.x2, bbox2.y) || isPointInsideBBox(bbox1, bbox2.x, bbox2.y2) || isPointInsideBBox(bbox1, bbox2.x2, bbox2.y2) || (bbox1.x < bbox2.x2 && bbox1.x > bbox2.x || bbox2.x < bbox1.x2 && bbox2.x > bbox1.x) && (bbox1.y < bbox2.y2 && bbox1.y > bbox2.y || bbox2.y < bbox1.y2 && bbox2.y > bbox1.y);\n};\nvar bezierBBox = function bezierBBox(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y) {\n if (!isArray(p1x)) {\n p1x = [p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y];\n }\n var bbox = curveDim.apply(null, p1x);\n return box(bbox.min.x, bbox.min.y, bbox.max.x - bbox.min.x, bbox.max.y - bbox.min.y);\n};\nvar findDotsAtSegment = function findDotsAtSegment(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t) {\n var t1 = 1 - t;\n var t13 = Math.pow(t1, 3);\n var t12 = Math.pow(t1, 2);\n var t2 = t * t;\n var t3 = t2 * t;\n var x = t13 * p1x + t12 * 3 * t * c1x + t1 * 3 * t * t * c2x + t3 * p2x;\n var y = t13 * p1y + t12 * 3 * t * c1y + t1 * 3 * t * t * c2y + t3 * p2y;\n var mx = p1x + 2 * t * (c1x - p1x) + t2 * (c2x - 2 * c1x + p1x);\n var my = p1y + 2 * t * (c1y - p1y) + t2 * (c2y - 2 * c1y + p1y);\n var nx = c1x + 2 * t * (c2x - c1x) + t2 * (p2x - 2 * c2x + c1x);\n var ny = c1y + 2 * t * (c2y - c1y) + t2 * (p2y - 2 * c2y + c1y);\n var ax = t1 * p1x + t * c1x;\n var ay = t1 * p1y + t * c1y;\n var cx = t1 * c2x + t * p2x;\n var cy = t1 * c2y + t * p2y;\n var alpha = 90 - Math.atan2(mx - nx, my - ny) * 180 / Math.PI;\n // (mx > nx || my < ny) && (alpha += 180);\n return {\n x: x,\n y: y,\n m: {\n x: mx,\n y: my\n },\n n: {\n x: nx,\n y: ny\n },\n start: {\n x: ax,\n y: ay\n },\n end: {\n x: cx,\n y: cy\n },\n alpha: alpha\n };\n};\nvar interHelper = function interHelper(bez1, bez2, justCount) {\n var bbox1 = bezierBBox(bez1);\n var bbox2 = bezierBBox(bez2);\n if (!isBBoxIntersect(bbox1, bbox2)) {\n return justCount ? 0 : [];\n }\n var l1 = bezlen.apply(0, bez1);\n var l2 = bezlen.apply(0, bez2);\n var n1 = ~~(l1 / 8);\n var n2 = ~~(l2 / 8);\n var dots1 = [];\n var dots2 = [];\n var xy = {};\n var res = justCount ? 0 : [];\n for (var i = 0; i < n1 + 1; i++) {\n var d = findDotsAtSegment.apply(0, bez1.concat(i / n1));\n dots1.push({\n x: d.x,\n y: d.y,\n t: i / n1\n });\n }\n for (var i = 0; i < n2 + 1; i++) {\n var d = findDotsAtSegment.apply(0, bez2.concat(i / n2));\n dots2.push({\n x: d.x,\n y: d.y,\n t: i / n2\n });\n }\n for (var i = 0; i < n1; i++) {\n for (var j = 0; j < n2; j++) {\n var di = dots1[i];\n var di1 = dots1[i + 1];\n var dj = dots2[j];\n var dj1 = dots2[j + 1];\n var ci = Math.abs(di1.x - di.x) < 0.001 ? 'y' : 'x';\n var cj = Math.abs(dj1.x - dj.x) < 0.001 ? 'y' : 'x';\n var is = intersect(di.x, di.y, di1.x, di1.y, dj.x, dj.y, dj1.x, dj1.y);\n if (is) {\n if (xy[is.x.toFixed(4)] === is.y.toFixed(4)) {\n continue;\n }\n xy[is.x.toFixed(4)] = is.y.toFixed(4);\n var t1 = di.t + Math.abs((is[ci] - di[ci]) / (di1[ci] - di[ci])) * (di1.t - di.t);\n var t2 = dj.t + Math.abs((is[cj] - dj[cj]) / (dj1[cj] - dj[cj])) * (dj1.t - dj.t);\n if (t1 >= 0 && t1 <= 1 && t2 >= 0 && t2 <= 1) {\n if (justCount) {\n // @ts-ignore\n res += 1;\n } else {\n // @ts-ignore\n res.push({\n x: is.x,\n y: is.y,\n t1: t1,\n t2: t2\n });\n }\n }\n }\n }\n }\n return res;\n};\nvar interPathHelper = function interPathHelper(path1, path2, justCount) {\n path1 = pathToCurve(path1);\n path2 = pathToCurve(path2);\n var x1;\n var y1;\n var x2;\n var y2;\n var x1m;\n var y1m;\n var x2m;\n var y2m;\n var bez1;\n var bez2;\n var res = justCount ? 0 : [];\n for (var i = 0, ii = path1.length; i < ii; i++) {\n var pi = path1[i];\n if (pi[0] === 'M') {\n x1 = x1m = pi[1];\n y1 = y1m = pi[2];\n } else {\n if (pi[0] === 'C') {\n bez1 = [x1, y1].concat(pi.slice(1));\n x1 = bez1[6];\n y1 = bez1[7];\n } else {\n bez1 = [x1, y1, x1, y1, x1m, y1m, x1m, y1m];\n x1 = x1m;\n y1 = y1m;\n }\n for (var j = 0, jj = path2.length; j < jj; j++) {\n var pj = path2[j];\n if (pj[0] === 'M') {\n x2 = x2m = pj[1];\n y2 = y2m = pj[2];\n } else {\n if (pj[0] === 'C') {\n bez2 = [x2, y2].concat(pj.slice(1));\n x2 = bez2[6];\n y2 = bez2[7];\n } else {\n bez2 = [x2, y2, x2, y2, x2m, y2m, x2m, y2m];\n x2 = x2m;\n y2 = y2m;\n }\n var intr = interHelper(bez1, bez2, justCount);\n if (justCount) {\n // @ts-ignore\n res += intr;\n } else {\n // @ts-ignore\n for (var k = 0, kk = intr.length; k < kk; k++) {\n intr[k].segment1 = i;\n intr[k].segment2 = j;\n intr[k].bez1 = bez1;\n intr[k].bez2 = bez2;\n }\n // @ts-ignore\n res = res.concat(intr);\n }\n }\n }\n }\n }\n return res;\n};\nvar intersection = function intersection(path1, path2) {\n return interPathHelper(path1, path2);\n};\nfunction decasteljau(points, t) {\n var left = [];\n var right = [];\n function recurse(points, t) {\n if (points.length === 1) {\n left.push(points[0]);\n right.push(points[0]);\n } else {\n var middlePoints = [];\n for (var i = 0; i < points.length - 1; i++) {\n if (i === 0) {\n left.push(points[0]);\n }\n if (i === points.length - 2) {\n right.push(points[i + 1]);\n }\n middlePoints[i] = [(1 - t) * points[i][0] + t * points[i + 1][0], (1 - t) * points[i][1] + t * points[i + 1][1]];\n }\n recurse(middlePoints, t);\n }\n }\n if (points.length) {\n recurse(points, t);\n }\n return {\n left: left,\n right: right.reverse()\n };\n}\nfunction splitCurve(start, end, count) {\n var points = [[start[1], start[2]]];\n count = count || 2;\n var segments = [];\n if (end[0] === 'A') {\n points.push(end[6]);\n points.push(end[7]);\n } else if (end[0] === 'C') {\n points.push([end[1], end[2]]);\n points.push([end[3], end[4]]);\n points.push([end[5], end[6]]);\n } else if (end[0] === 'S' || end[0] === 'Q') {\n points.push([end[1], end[2]]);\n points.push([end[3], end[4]]);\n } else {\n points.push([end[1], end[2]]);\n }\n var leftSegments = points;\n var t = 1 / count;\n for (var i = 0; i < count - 1; i++) {\n var rt = t / (1 - t * i);\n var split = decasteljau(leftSegments, rt);\n segments.push(split.left);\n leftSegments = split.right;\n }\n segments.push(leftSegments);\n var result = segments.map(function (segment) {\n var cmd = [];\n if (segment.length === 4) {\n cmd.push('C');\n cmd = cmd.concat(segment[2]);\n }\n if (segment.length >= 3) {\n if (segment.length === 3) {\n cmd.push('Q');\n }\n cmd = cmd.concat(segment[1]);\n }\n if (segment.length === 2) {\n cmd.push('L');\n }\n cmd = cmd.concat(segment[segment.length - 1]);\n return cmd;\n });\n return result;\n}\nvar splitSegment = function splitSegment(start, end, count) {\n if (count === 1) {\n return [[].concat(start)];\n }\n var segments = [];\n if (end[0] === 'L' || end[0] === 'C' || end[0] === 'Q') {\n segments = segments.concat(splitCurve(start, end, count));\n } else {\n var temp = [].concat(start);\n if (temp[0] === 'M') {\n temp[0] = 'L';\n }\n for (var i = 0; i <= count - 1; i++) {\n segments.push(temp);\n }\n }\n return segments;\n};\nvar fillPath = function fillPath(source, target) {\n if (source.length === 1) {\n return source;\n }\n var sourceLen = source.length - 1;\n var targetLen = target.length - 1;\n var ratio = sourceLen / targetLen;\n var segmentsToFill = [];\n if (source.length === 1 && source[0][0] === 'M') {\n for (var i = 0; i < targetLen - sourceLen; i++) {\n source.push(source[0]);\n }\n return source;\n }\n for (var i = 0; i < targetLen; i++) {\n var index = Math.floor(ratio * i);\n segmentsToFill[index] = (segmentsToFill[index] || 0) + 1;\n }\n var filled = segmentsToFill.reduce(function (filled, count, i) {\n if (i === sourceLen) {\n return filled.concat(source[sourceLen]);\n }\n return filled.concat(splitSegment(source[i], source[i + 1], count));\n }, []);\n filled.unshift(source[0]);\n if (target[targetLen] === 'Z' || target[targetLen] === 'z') {\n filled.push('Z');\n }\n return filled;\n};\nvar isEqual = function isEqual(obj1, obj2) {\n if (obj1.length !== obj2.length) {\n return false;\n }\n var result = true;\n each(obj1, function (item, i) {\n if (item !== obj2[i]) {\n result = false;\n return false;\n }\n });\n return result;\n};\nfunction getMinDiff(del, add, modify) {\n var type = null;\n var min = modify;\n if (add < min) {\n min = add;\n type = 'add';\n }\n if (del < min) {\n min = del;\n type = 'del';\n }\n return {\n type: type,\n min: min\n };\n}\n/*\n * https://en.wikipedia.org/wiki/Levenshtein_distance\n * 计算两条path的编辑距离\n */\nvar levenshteinDistance = function levenshteinDistance(source, target) {\n var sourceLen = source.length;\n var targetLen = target.length;\n var sourceSegment;\n var targetSegment;\n var temp = 0;\n if (sourceLen === 0 || targetLen === 0) {\n return null;\n }\n var dist = [];\n for (var i = 0; i <= sourceLen; i++) {\n dist[i] = [];\n dist[i][0] = {\n min: i\n };\n }\n for (var j = 0; j <= targetLen; j++) {\n dist[0][j] = {\n min: j\n };\n }\n for (var i = 1; i <= sourceLen; i++) {\n sourceSegment = source[i - 1];\n for (var j = 1; j <= targetLen; j++) {\n targetSegment = target[j - 1];\n if (isEqual(sourceSegment, targetSegment)) {\n temp = 0;\n } else {\n temp = 1;\n }\n var del = dist[i - 1][j].min + 1;\n var add = dist[i][j - 1].min + 1;\n var modify = dist[i - 1][j - 1].min + temp;\n dist[i][j] = getMinDiff(del, add, modify);\n }\n }\n return dist;\n};\nvar fillPathByDiff = function fillPathByDiff(source, target) {\n var diffMatrix = levenshteinDistance(source, target);\n var sourceLen = source.length;\n var targetLen = target.length;\n var changes = [];\n var index = 1;\n var minPos = 1;\n // 如果source和target不是完全不相等\n if (diffMatrix[sourceLen][targetLen].min !== sourceLen) {\n // 获取从source到target所需改动\n for (var i = 1; i <= sourceLen; i++) {\n var min = diffMatrix[i][i].min;\n minPos = i;\n for (var j = index; j <= targetLen; j++) {\n if (diffMatrix[i][j].min < min) {\n min = diffMatrix[i][j].min;\n minPos = j;\n }\n }\n index = minPos;\n if (diffMatrix[i][index].type) {\n changes.push({\n index: i - 1,\n type: diffMatrix[i][index].type\n });\n }\n }\n // 对source进行增删path\n for (var i = changes.length - 1; i >= 0; i--) {\n index = changes[i].index;\n if (changes[i].type === 'add') {\n source.splice(index, 0, [].concat(source[index]));\n } else {\n source.splice(index, 1);\n }\n }\n }\n // source尾部补齐\n sourceLen = source.length;\n var diff = targetLen - sourceLen;\n if (sourceLen < targetLen) {\n for (var i = 0; i < diff; i++) {\n if (source[sourceLen - 1][0] === 'z' || source[sourceLen - 1][0] === 'Z') {\n source.splice(sourceLen - 2, 0, source[sourceLen - 2]);\n } else {\n source.push(source[sourceLen - 1]);\n }\n sourceLen += 1;\n }\n }\n return source;\n};\n// 将两个点均分成count个点\nfunction _splitPoints(points, former, count) {\n var result = [].concat(points);\n var index;\n var t = 1 / (count + 1);\n var formerEnd = _getSegmentPoints(former)[0];\n for (var i = 1; i <= count; i++) {\n t *= i;\n index = Math.floor(points.length * t);\n if (index === 0) {\n result.unshift([formerEnd[0] * t + points[index][0] * (1 - t), formerEnd[1] * t + points[index][1] * (1 - t)]);\n } else {\n result.splice(index, 0, [formerEnd[0] * t + points[index][0] * (1 - t), formerEnd[1] * t + points[index][1] * (1 - t)]);\n }\n }\n return result;\n}\n/*\n * 抽取pathSegment中的关键点\n * M,L,A,Q,H,V一个端点\n * Q, S抽取一个端点,一个控制点\n * C抽取一个端点,两个控制点\n */\nfunction _getSegmentPoints(segment) {\n var points = [];\n switch (segment[0]) {\n case 'M':\n points.push([segment[1], segment[2]]);\n break;\n case 'L':\n points.push([segment[1], segment[2]]);\n break;\n case 'A':\n points.push([segment[6], segment[7]]);\n break;\n case 'Q':\n points.push([segment[3], segment[4]]);\n points.push([segment[1], segment[2]]);\n break;\n case 'T':\n points.push([segment[1], segment[2]]);\n break;\n case 'C':\n points.push([segment[5], segment[6]]);\n points.push([segment[1], segment[2]]);\n points.push([segment[3], segment[4]]);\n break;\n case 'S':\n points.push([segment[3], segment[4]]);\n points.push([segment[1], segment[2]]);\n break;\n case 'H':\n points.push([segment[1], segment[1]]);\n break;\n case 'V':\n points.push([segment[1], segment[1]]);\n break;\n default:\n }\n return points;\n}\nvar formatPath = function formatPath(fromPath, toPath) {\n if (fromPath.length <= 1) {\n return fromPath;\n }\n var points;\n for (var i = 0; i < toPath.length; i++) {\n if (fromPath[i][0] !== toPath[i][0]) {\n // 获取fromPath的pathSegment的端点,根据toPath的指令对其改造\n points = _getSegmentPoints(fromPath[i]);\n switch (toPath[i][0]) {\n case 'M':\n fromPath[i] = ['M'].concat(points[0]);\n break;\n case 'L':\n fromPath[i] = ['L'].concat(points[0]);\n break;\n case 'A':\n fromPath[i] = [].concat(toPath[i]);\n fromPath[i][6] = points[0][0];\n fromPath[i][7] = points[0][1];\n break;\n case 'Q':\n if (points.length < 2) {\n if (i > 0) {\n points = _splitPoints(points, fromPath[i - 1], 1);\n } else {\n fromPath[i] = toPath[i];\n break;\n }\n }\n fromPath[i] = ['Q'].concat(points.reduce(function (arr, i) {\n return arr.concat(i);\n }, []));\n break;\n case 'T':\n fromPath[i] = ['T'].concat(points[0]);\n break;\n case 'C':\n if (points.length < 3) {\n if (i > 0) {\n points = _splitPoints(points, fromPath[i - 1], 2);\n } else {\n fromPath[i] = toPath[i];\n break;\n }\n }\n fromPath[i] = ['C'].concat(points.reduce(function (arr, i) {\n return arr.concat(i);\n }, []));\n break;\n case 'S':\n if (points.length < 2) {\n if (i > 0) {\n points = _splitPoints(points, fromPath[i - 1], 1);\n } else {\n fromPath[i] = toPath[i];\n break;\n }\n }\n fromPath[i] = ['S'].concat(points.reduce(function (arr, i) {\n return arr.concat(i);\n }, []));\n break;\n default:\n fromPath[i] = toPath[i];\n }\n }\n }\n return fromPath;\n};\nexport { catmullRomToBezier, fillPath, fillPathByDiff, formatPath, intersection, parsePathArray, parsePathString, pathToAbsolute, pathToCurve, rectPath };","import { isNil, each, isString } from './util';\nimport { getOffScreenContext } from './offscreen';\n/**\n * 获取文本的高度\n * @param text 文本\n * @param fontSize 字体大小\n * @param lineHeight 行高,可以为空\n */\nexport function getTextHeight(text, fontSize, lineHeight) {\n var lineCount = 1;\n if (isString(text)) {\n lineCount = text.split('\\n').length;\n }\n if (lineCount > 1) {\n var spaceingY = getLineSpaceing(fontSize, lineHeight);\n return fontSize * lineCount + spaceingY * (lineCount - 1);\n }\n return fontSize;\n}\n/**\n * 获取行间距如果文本多行,需要获取文本间距\n * @param fontSize 字体大小\n * @param lineHeight 行高\n */\nexport function getLineSpaceing(fontSize, lineHeight) {\n return lineHeight ? lineHeight - fontSize : fontSize * 0.14;\n}\n/**\n * 字体宽度\n * @param text 文本\n * @param font 字体\n */\nexport function getTextWidth(text, font) {\n var context = getOffScreenContext(); // 获取离屏的 ctx 进行计算\n var width = 0;\n // null 或者 undefined 时,宽度为 0\n if (isNil(text) || text === '') {\n return width;\n }\n context.save();\n context.font = font;\n if (isString(text) && text.includes('\\n')) {\n var textArr = text.split('\\n');\n each(textArr, function (subText) {\n var measureWidth = context.measureText(subText).width;\n if (width < measureWidth) {\n width = measureWidth;\n }\n });\n } else {\n width = context.measureText(text).width;\n }\n context.restore();\n return width;\n}\nexport function assembleFont(attrs) {\n var fontSize = attrs.fontSize,\n fontFamily = attrs.fontFamily,\n fontWeight = attrs.fontWeight,\n fontStyle = attrs.fontStyle,\n fontVariant = attrs.fontVariant;\n return [fontStyle, fontVariant, fontWeight, fontSize + \"px\", fontFamily].join(' ').trim();\n}","export function removeFromArray(arr, obj) {\n var index = arr.indexOf(obj);\n if (index !== -1) {\n arr.splice(index, 1);\n }\n}\nexport var isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\nexport { isNil, isFunction, isString, isObject, isArray, mix, each, upperFirst } from '@antv/util';\n// 是否元素的父容器\nexport function isParent(container, shape) {\n // 所有 shape 都是 canvas 的子元素\n if (container.isCanvas()) {\n return true;\n }\n var parent = shape.getParent();\n var isParent = false;\n while (parent) {\n if (parent === container) {\n isParent = true;\n break;\n }\n parent = parent.getParent();\n }\n return isParent;\n}\nexport function isAllowCapture(element) {\n // @ts-ignore\n return element.cfg.visible && element.cfg.capture;\n}","import { max, min } from '@antv/util';\n/**\n * 两点之间的距离\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @return {number} 距离\n */\nexport function distance(x1, y1, x2, y2) {\n var dx = x1 - x2;\n var dy = y1 - y2;\n return Math.sqrt(dx * dx + dy * dy);\n}\nexport function isNumberEqual(v1, v2) {\n return Math.abs(v1 - v2) < 0.001;\n}\nexport function getBBoxByArray(xArr, yArr) {\n var minX = min(xArr);\n var minY = min(yArr);\n var maxX = max(xArr);\n var maxY = max(yArr);\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nexport function getBBoxRange(x1, y1, x2, y2) {\n return {\n minX: min([x1, x2]),\n maxX: max([x1, x2]),\n minY: min([y1, y2]),\n maxY: max([y1, y2])\n };\n}\nexport function piMod(angle) {\n return (angle + Math.PI * 2) % (Math.PI * 2);\n}","import { distance, getBBoxByArray } from './util';\nimport * as vec2 from 'gl-matrix/vec2';\nexport default {\n /**\n * 计算线段的包围盒\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @return {object} 包围盒对象\n */\n box: function box(x1, y1, x2, y2) {\n return getBBoxByArray([x1, x2], [y1, y2]);\n },\n /**\n * 线段的长度\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @return {number} 距离\n */\n length: function length(x1, y1, x2, y2) {\n return distance(x1, y1, x2, y2);\n },\n /**\n * 根据比例获取点\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @param {number} t 指定比例\n * @return {object} 包含 x, y 的点\n */\n pointAt: function pointAt(x1, y1, x2, y2, t) {\n return {\n x: (1 - t) * x1 + t * x2,\n y: (1 - t) * y1 + t * y2\n };\n },\n /**\n * 点到线段的距离\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @param {number} x 测试点 x\n * @param {number} y 测试点 y\n * @return {number} 距离\n */\n pointDistance: function pointDistance(x1, y1, x2, y2, x, y) {\n // 投影距离 x1, y1 的向量,假设 p, p1, p2 三个点,投影点为 a\n // p1a = p1p.p1p2/|p1p2| * (p1p 的单位向量)\n var cross = (x2 - x1) * (x - x1) + (y2 - y1) * (y - y1);\n if (cross < 0) {\n return distance(x1, y1, x, y);\n }\n var lengthSquare = (x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1);\n if (cross > lengthSquare) {\n return distance(x2, y2, x, y);\n }\n return this.pointToLine(x1, y1, x2, y2, x, y);\n },\n /**\n * 点到直线的距离,而不是点到线段的距离\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @param {number} x 测试点 x\n * @param {number} y 测试点 y\n * @return {number} 距离\n */\n pointToLine: function pointToLine(x1, y1, x2, y2, x, y) {\n var d = [x2 - x1, y2 - y1];\n // 如果端点相等,则判定点到点的距离\n if (vec2.exactEquals(d, [0, 0])) {\n return Math.sqrt((x - x1) * (x - x1) + (y - y1) * (y - y1));\n }\n var u = [-d[1], d[0]];\n vec2.normalize(u, u);\n var a = [x - x1, y - y1];\n return Math.abs(vec2.dot(a, u));\n },\n /**\n * 线段的角度\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @return {number} 导数\n */\n tangentAngle: function tangentAngle(x1, y1, x2, y2) {\n return Math.atan2(y2 - y1, x2 - x1);\n }\n};","import { distance } from './util';\nvar EPSILON = 0.0001;\n/**\n * 使用牛顿切割法求最近的点\n * @param {number[]} xArr 点的 x 数组\n * @param {number[]} yArr 点的 y 数组\n * @param {number} x 指定的点 x\n * @param {number} y 指定的点 y\n * @param {Function} tCallback 差值函数\n */\nexport function nearestPoint(xArr, yArr, x, y, tCallback, length) {\n var t;\n var d = Infinity;\n var v0 = [x, y];\n var segNum = 20;\n if (length && length > 200) {\n segNum = length / 10;\n }\n var increaseRate = 1 / segNum;\n var interval = increaseRate / 10;\n for (var i = 0; i <= segNum; i++) {\n var _t = i * increaseRate;\n var v1 = [tCallback.apply(null, xArr.concat([_t])), tCallback.apply(null, yArr.concat([_t]))];\n var d1 = distance(v0[0], v0[1], v1[0], v1[1]);\n if (d1 < d) {\n t = _t;\n d = d1;\n }\n }\n // 提前终止\n if (t === 0) {\n return {\n x: xArr[0],\n y: yArr[0]\n };\n }\n if (t === 1) {\n var count = xArr.length;\n return {\n x: xArr[count - 1],\n y: yArr[count - 1]\n };\n }\n d = Infinity;\n for (var i = 0; i < 32; i++) {\n if (interval < EPSILON) {\n break;\n }\n var prev = t - interval;\n var next = t + interval;\n var v1 = [tCallback.apply(null, xArr.concat([prev])), tCallback.apply(null, yArr.concat([prev]))];\n var d1 = distance(v0[0], v0[1], v1[0], v1[1]);\n if (prev >= 0 && d1 < d) {\n t = prev;\n d = d1;\n } else {\n var v2 = [tCallback.apply(null, xArr.concat([next])), tCallback.apply(null, yArr.concat([next]))];\n var d2 = distance(v0[0], v0[1], v2[0], v2[1]);\n if (next <= 1 && d2 < d) {\n t = next;\n d = d2;\n } else {\n interval *= 0.5;\n }\n }\n }\n return {\n x: tCallback.apply(null, xArr.concat([t])),\n y: tCallback.apply(null, yArr.concat([t]))\n };\n}\n// 近似求解 https://community.khronos.org/t/3d-cubic-bezier-segment-length/62363/2\nexport function snapLength(xArr, yArr) {\n var totalLength = 0;\n var count = xArr.length;\n for (var i = 0; i < count; i++) {\n var x = xArr[i];\n var y = yArr[i];\n var nextX = xArr[(i + 1) % count];\n var nextY = yArr[(i + 1) % count];\n totalLength += distance(x, y, nextX, nextY);\n }\n return totalLength / 2;\n}","import line from './line';\nimport { distance, isNumberEqual, getBBoxByArray, piMod } from './util';\nimport { nearestPoint as _nearestPoint } from './bezier';\n// 差值公式\nfunction quadraticAt(p0, p1, p2, t) {\n var onet = 1 - t;\n return onet * onet * p0 + 2 * t * onet * p1 + t * t * p2;\n}\n// 求极值\nfunction extrema(p0, p1, p2) {\n var a = p0 + p2 - 2 * p1;\n if (isNumberEqual(a, 0)) {\n return [0.5];\n }\n var rst = (p0 - p1) / a;\n if (rst <= 1 && rst >= 0) {\n return [rst];\n }\n return [];\n}\nfunction derivativeAt(p0, p1, p2, t) {\n return 2 * (1 - t) * (p1 - p0) + 2 * t * (p2 - p1);\n}\n// 分割贝塞尔曲线\nfunction divideQuadratic(x1, y1, x2, y2, x3, y3, t) {\n // 划分点\n var xt = quadraticAt(x1, x2, x3, t);\n var yt = quadraticAt(y1, y2, y3, t);\n // 分割的第一条曲线的控制点\n var controlPoint1 = line.pointAt(x1, y1, x2, y2, t);\n // 分割的第二条曲线的控制点\n var controlPoint2 = line.pointAt(x2, y2, x3, y3, t);\n return [[x1, y1, controlPoint1.x, controlPoint1.y, xt, yt], [xt, yt, controlPoint2.x, controlPoint2.y, x3, y3]];\n}\n// 使用迭代法取贝塞尔曲线的长度\nfunction quadraticLength(x1, y1, x2, y2, x3, y3, iterationCount) {\n if (iterationCount === 0) {\n return (distance(x1, y1, x2, y2) + distance(x2, y2, x3, y3) + distance(x1, y1, x3, y3)) / 2;\n }\n var quadratics = divideQuadratic(x1, y1, x2, y2, x3, y3, 0.5);\n var left = quadratics[0];\n var right = quadratics[1];\n left.push(iterationCount - 1);\n right.push(iterationCount - 1);\n return quadraticLength.apply(null, left) + quadraticLength.apply(null, right);\n}\nexport default {\n box: function box(x1, y1, x2, y2, x3, y3) {\n var xExtrema = extrema(x1, x2, x3)[0];\n var yExtrema = extrema(y1, y2, y3)[0];\n // 控制点不加入 box 的计算\n var xArr = [x1, x3];\n var yArr = [y1, y3];\n if (xExtrema !== undefined) {\n xArr.push(quadraticAt(x1, x2, x3, xExtrema));\n }\n if (yExtrema !== undefined) {\n yArr.push(quadraticAt(y1, y2, y3, yExtrema));\n }\n return getBBoxByArray(xArr, yArr);\n },\n length: function length(x1, y1, x2, y2, x3, y3) {\n return quadraticLength(x1, y1, x2, y2, x3, y3, 3);\n },\n nearestPoint: function nearestPoint(x1, y1, x2, y2, x3, y3, x0, y0) {\n return _nearestPoint([x1, x2, x3], [y1, y2, y3], x0, y0, quadraticAt);\n },\n pointDistance: function pointDistance(x1, y1, x2, y2, x3, y3, x0, y0) {\n var point = this.nearestPoint(x1, y1, x2, y2, x3, y3, x0, y0);\n return distance(point.x, point.y, x0, y0);\n },\n interpolationAt: quadraticAt,\n pointAt: function pointAt(x1, y1, x2, y2, x3, y3, t) {\n return {\n x: quadraticAt(x1, x2, x3, t),\n y: quadraticAt(y1, y2, y3, t)\n };\n },\n divide: function divide(x1, y1, x2, y2, x3, y3, t) {\n return divideQuadratic(x1, y1, x2, y2, x3, y3, t);\n },\n tangentAngle: function tangentAngle(x1, y1, x2, y2, x3, y3, t) {\n var dx = derivativeAt(x1, x2, x3, t);\n var dy = derivativeAt(y1, y2, y3, t);\n var angle = Math.atan2(dy, dx);\n return piMod(angle);\n }\n};","import { distance, isNumberEqual, getBBoxByArray, piMod } from './util';\nimport line from './line';\nimport { snapLength, nearestPoint as _nearestPoint } from './bezier';\nfunction cubicAt(p0, p1, p2, p3, t) {\n var onet = 1 - t; // t * t * t 的性能大概是 Math.pow(t, 3) 的三倍\n return onet * onet * onet * p0 + 3 * p1 * t * onet * onet + 3 * p2 * t * t * onet + p3 * t * t * t;\n}\nfunction derivativeAt(p0, p1, p2, p3, t) {\n var onet = 1 - t;\n return 3 * (onet * onet * (p1 - p0) + 2 * onet * t * (p2 - p1) + t * t * (p3 - p2));\n}\nfunction extrema(p0, p1, p2, p3) {\n var a = -3 * p0 + 9 * p1 - 9 * p2 + 3 * p3;\n var b = 6 * p0 - 12 * p1 + 6 * p2;\n var c = 3 * p1 - 3 * p0;\n var extremas = [];\n var t1;\n var t2;\n var discSqrt;\n if (isNumberEqual(a, 0)) {\n if (!isNumberEqual(b, 0)) {\n t1 = -c / b;\n if (t1 >= 0 && t1 <= 1) {\n extremas.push(t1);\n }\n }\n } else {\n var disc = b * b - 4 * a * c;\n if (isNumberEqual(disc, 0)) {\n extremas.push(-b / (2 * a));\n } else if (disc > 0) {\n discSqrt = Math.sqrt(disc);\n t1 = (-b + discSqrt) / (2 * a);\n t2 = (-b - discSqrt) / (2 * a);\n if (t1 >= 0 && t1 <= 1) {\n extremas.push(t1);\n }\n if (t2 >= 0 && t2 <= 1) {\n extremas.push(t2);\n }\n }\n }\n return extremas;\n}\n// 分割贝塞尔曲线\nfunction divideCubic(x1, y1, x2, y2, x3, y3, x4, y4, t) {\n // 划分点\n var xt = cubicAt(x1, x2, x3, x4, t);\n var yt = cubicAt(y1, y2, y3, y4, t);\n // 计算两点之间的差值点\n var c1 = line.pointAt(x1, y1, x2, y2, t);\n var c2 = line.pointAt(x2, y2, x3, y3, t);\n var c3 = line.pointAt(x3, y3, x4, y4, t);\n var c12 = line.pointAt(c1.x, c1.y, c2.x, c2.y, t);\n var c23 = line.pointAt(c2.x, c2.y, c3.x, c3.y, t);\n return [[x1, y1, c1.x, c1.y, c12.x, c12.y, xt, yt], [xt, yt, c23.x, c23.y, c3.x, c3.y, x4, y4]];\n}\n// 使用迭代法取贝塞尔曲线的长度,二阶和三阶分开写,更清晰和便于调试\nfunction cubicLength(x1, y1, x2, y2, x3, y3, x4, y4, iterationCount) {\n if (iterationCount === 0) {\n return snapLength([x1, x2, x3, x4], [y1, y2, y3, y4]);\n }\n var cubics = divideCubic(x1, y1, x2, y2, x3, y3, x4, y4, 0.5);\n var left = cubics[0];\n var right = cubics[1];\n left.push(iterationCount - 1);\n right.push(iterationCount - 1);\n return cubicLength.apply(null, left) + cubicLength.apply(null, right);\n}\nexport default {\n extrema: extrema,\n box: function box(x1, y1, x2, y2, x3, y3, x4, y4) {\n var xArr = [x1, x4];\n var yArr = [y1, y4];\n var xExtrema = extrema(x1, x2, x3, x4);\n var yExtrema = extrema(y1, y2, y3, y4);\n for (var i = 0; i < xExtrema.length; i++) {\n xArr.push(cubicAt(x1, x2, x3, x4, xExtrema[i]));\n }\n for (var i = 0; i < yExtrema.length; i++) {\n yArr.push(cubicAt(y1, y2, y3, y4, yExtrema[i]));\n }\n return getBBoxByArray(xArr, yArr);\n },\n length: function length(x1, y1, x2, y2, x3, y3, x4, y4) {\n // 迭代三次,划分成 8 段求长度\n return cubicLength(x1, y1, x2, y2, x3, y3, x4, y4, 3);\n },\n nearestPoint: function nearestPoint(x1, y1, x2, y2, x3, y3, x4, y4, x0, y0, length) {\n return _nearestPoint([x1, x2, x3, x4], [y1, y2, y3, y4], x0, y0, cubicAt, length);\n },\n pointDistance: function pointDistance(x1, y1, x2, y2, x3, y3, x4, y4, x0, y0, length) {\n var point = this.nearestPoint(x1, y1, x2, y2, x3, y3, x4, y4, x0, y0, length);\n return distance(point.x, point.y, x0, y0);\n },\n interpolationAt: cubicAt,\n pointAt: function pointAt(x1, y1, x2, y2, x3, y3, x4, y4, t) {\n return {\n x: cubicAt(x1, x2, x3, x4, t),\n y: cubicAt(y1, y2, y3, y4, t)\n };\n },\n divide: function divide(x1, y1, x2, y2, x3, y3, x4, y4, t) {\n return divideCubic(x1, y1, x2, y2, x3, y3, x4, y4, t);\n },\n tangentAngle: function tangentAngle(x1, y1, x2, y2, x3, y3, x4, y4, t) {\n var dx = derivativeAt(x1, x2, x3, x4, t);\n var dy = derivativeAt(y1, y2, y3, y4, t);\n return piMod(Math.atan2(dy, dx));\n }\n};","import \"core-js/modules/es.math.hypot.js\";\n/**\n * @fileoverview 椭圆的一些计算,\n * - 周长计算参考:https://www.mathsisfun.com/geometry/ellipse-perimeter.html\n * - 距离计算参考:https://wet-robots.ghost.io/simple-method-for-distance-to-ellipse/\n * @author dxq613@gmail.com\n */\nimport { distance, piMod } from './util';\nfunction copysign(v1, v2) {\n var absv = Math.abs(v1);\n return v2 > 0 ? absv : absv * -1;\n}\nexport default {\n /**\n * 包围盒计算\n * @param {number} x 椭圆中心 x\n * @param {number} y 椭圆中心 y\n * @param {number} rx 椭圆 x 方向半径\n * @param {number} ry 椭圆 y 方向半径\n * @return {object} 包围盒\n */\n box: function box(x, y, rx, ry) {\n return {\n x: x - rx,\n y: y - ry,\n width: rx * 2,\n height: ry * 2\n };\n },\n /**\n * 计算周长,使用近似法\n * @param {number} x 椭圆中心 x\n * @param {number} y 椭圆中心 y\n * @param {number} rx 椭圆 x 方向半径\n * @param {number} ry 椭圆 y 方向半径\n * @return {number} 椭圆周长\n */\n length: function length(x, y, rx, ry) {\n return Math.PI * (3 * (rx + ry) - Math.sqrt((3 * rx + ry) * (rx + 3 * ry)));\n },\n /**\n * 距离椭圆最近的点\n * @param {number} x 椭圆中心 x\n * @param {number} y 椭圆中心 y\n * @param {number} rx 椭圆 x 方向半径\n * @param {number} ry 椭圆 y 方向半径\n * @param {number} x0 指定的点 x\n * @param {number} y0 指定的点 y\n * @return {object} 椭圆上距离指定点最近的点\n */\n nearestPoint: function nearestPoint(x, y, rx, ry, x0, y0) {\n var a = rx;\n var b = ry;\n // 假如椭圆半径为0则返回圆心\n if (a === 0 || b === 0) {\n return {\n x: x,\n y: y\n };\n }\n // 转换成 0, 0 为中心的椭圆计算\n var relativeX = x0 - x;\n var relativeY = y0 - y;\n var px = Math.abs(relativeX);\n var py = Math.abs(relativeY);\n var squareA = a * a;\n var squareB = b * b;\n // const angle0 = Math.atan2(relativeY, relativeX);\n var t = Math.PI / 4;\n var nearestX; // 椭圆上的任一点\n var nearestY;\n // 迭代 4 次\n for (var i = 0; i < 4; i++) {\n nearestX = a * Math.cos(t);\n nearestY = b * Math.sin(t);\n var ex = (squareA - squareB) * Math.pow(Math.cos(t), 3) / a;\n var ey = (squareB - squareA) * Math.pow(Math.sin(t), 3) / b;\n var rx1 = nearestX - ex;\n var ry1 = nearestY - ey;\n var qx = px - ex;\n var qy = py - ey;\n var r = Math.hypot(ry1, rx1);\n var q = Math.hypot(qy, qx);\n var delta_c = r * Math.asin((rx1 * qy - ry1 * qx) / (r * q));\n var delta_t = delta_c / Math.sqrt(squareA + squareB - nearestX * nearestX - nearestY * nearestY);\n t += delta_t;\n t = Math.min(Math.PI / 2, Math.max(0, t));\n }\n return {\n x: x + copysign(nearestX, relativeX),\n y: y + copysign(nearestY, relativeY)\n };\n },\n /**\n * 点到椭圆最近的距离\n * @param {number} x 椭圆中心 x\n * @param {number} y 椭圆中心 y\n * @param {number} rx 椭圆 x 方向半径\n * @param {number} ry 椭圆 y 方向半径\n * @param {number} x0 指定的点 x\n * @param {number} y0 指定的点 y\n * @return {number} 点到椭圆的距离\n */\n pointDistance: function pointDistance(x, y, rx, ry, x0, y0) {\n var nearestPoint = this.nearestPoint(x, y, rx, ry, x0, y0);\n return distance(nearestPoint.x, nearestPoint.y, x0, y0);\n },\n /**\n * 根据比例获取点\n * @param {number} x 椭圆中心 x\n * @param {number} y 椭圆中心 y\n * @param {number} rx 椭圆 x 方向半径\n * @param {number} ry 椭圆 y 方向半径\n * @param {number} t 指定比例,x轴方向为 0\n * @return {object} 点\n */\n pointAt: function pointAt(x, y, rx, ry, t) {\n var angle = 2 * Math.PI * t; // 按照角度进行计算,而不按照周长计算\n return {\n x: x + rx * Math.cos(angle),\n y: y + ry * Math.sin(angle)\n };\n },\n /**\n * 根据比例计算切线角度\n * @param {number} x 椭圆中心 x\n * @param {number} y 椭圆中心 y\n * @param {number} rx 椭圆 x 方向半径\n * @param {number} ry 椭圆 y 方向半径\n * @param {number} t 指定比例 0 - 1 之间,x轴方向为 0。在 0-1 范围之外是循环还是返回 null,还需要调整\n * @return {number} 角度,在 0 - 2PI 之间\n */\n tangentAngle: function tangentAngle(x, y, rx, ry, t) {\n var angle = 2 * Math.PI * t; // 按照角度进行计算,而不按照周长计算\n // 直接使用 x,y 的导数计算, x' = -rx * sin(t); y' = ry * cos(t);\n var tangentAngle = Math.atan2(ry * Math.cos(angle), -rx * Math.sin(angle));\n // 也可以使用指定点的切线方程计算,成本有些高\n // const point = this.pointAt(0, 0, rx, ry, t); // 椭圆的切线同椭圆的中心不相关\n // let tangentAngle = -1 * Math.atan((ry * ry * point.x) / (rx * rx * point.y));\n // if (angle >= 0 && angle <= Math.PI) {\n // tangentAngle += Math.PI;\n // }\n return piMod(tangentAngle);\n }\n};","import { distance, piMod } from './util';\nimport ellipse from './ellipse';\n// 偏导数 x\nfunction derivativeXAt(cx, cy, rx, ry, xRotation, startAngle, endAngle, angle) {\n return -1 * rx * Math.cos(xRotation) * Math.sin(angle) - ry * Math.sin(xRotation) * Math.cos(angle);\n}\n// 偏导数 y\nfunction derivativeYAt(cx, cy, rx, ry, xRotation, startAngle, endAngle, angle) {\n return -1 * rx * Math.sin(xRotation) * Math.sin(angle) + ry * Math.cos(xRotation) * Math.cos(angle);\n}\n// x 的极值\nfunction xExtrema(rx, ry, xRotation) {\n return Math.atan(-ry / rx * Math.tan(xRotation));\n}\n// y 的极值\nfunction yExtrema(rx, ry, xRotation) {\n return Math.atan(ry / (rx * Math.tan(xRotation)));\n}\n// 根据角度求 x 坐标\nfunction xAt(cx, cy, rx, ry, xRotation, angle) {\n return rx * Math.cos(xRotation) * Math.cos(angle) - ry * Math.sin(xRotation) * Math.sin(angle) + cx;\n}\n// 根据角度求 y 坐标\nfunction yAt(cx, cy, rx, ry, xRotation, angle) {\n return rx * Math.sin(xRotation) * Math.cos(angle) + ry * Math.cos(xRotation) * Math.sin(angle) + cy;\n}\n// 获取点在椭圆上的角度\nfunction getAngle(rx, ry, x0, y0) {\n var angle = Math.atan2(y0 * rx, x0 * ry);\n // 转换到 0 - 2PI 内\n return (angle + Math.PI * 2) % (Math.PI * 2);\n}\n// 根据角度获取,x,y\nfunction getPoint(rx, ry, angle) {\n return {\n x: rx * Math.cos(angle),\n y: ry * Math.sin(angle)\n };\n}\n// 旋转\nfunction rotate(x, y, angle) {\n var cos = Math.cos(angle);\n var sin = Math.sin(angle);\n return [x * cos - y * sin, x * sin + y * cos];\n}\nexport default {\n /**\n * 计算包围盒\n * @param {number} cx 圆心 x\n * @param {number} cy 圆心 y\n * @param {number} rx x 轴方向的半径\n * @param {number} ry y 轴方向的半径\n * @param {number} xRotation 旋转角度\n * @param {number} startAngle 起始角度\n * @param {number} endAngle 结束角度\n * @return {object} 包围盒对象\n */\n box: function box(cx, cy, rx, ry, xRotation, startAngle, endAngle) {\n var xDim = xExtrema(rx, ry, xRotation);\n var minX = Infinity;\n var maxX = -Infinity;\n var xs = [startAngle, endAngle];\n for (var i = -Math.PI * 2; i <= Math.PI * 2; i += Math.PI) {\n var xAngle = xDim + i;\n if (startAngle < endAngle) {\n if (startAngle < xAngle && xAngle < endAngle) {\n xs.push(xAngle);\n }\n } else {\n if (endAngle < xAngle && xAngle < startAngle) {\n xs.push(xAngle);\n }\n }\n }\n for (var i = 0; i < xs.length; i++) {\n var x = xAt(cx, cy, rx, ry, xRotation, xs[i]);\n if (x < minX) {\n minX = x;\n }\n if (x > maxX) {\n maxX = x;\n }\n }\n var yDim = yExtrema(rx, ry, xRotation);\n var minY = Infinity;\n var maxY = -Infinity;\n var ys = [startAngle, endAngle];\n for (var i = -Math.PI * 2; i <= Math.PI * 2; i += Math.PI) {\n var yAngle = yDim + i;\n if (startAngle < endAngle) {\n if (startAngle < yAngle && yAngle < endAngle) {\n ys.push(yAngle);\n }\n } else {\n if (endAngle < yAngle && yAngle < startAngle) {\n ys.push(yAngle);\n }\n }\n }\n for (var i = 0; i < ys.length; i++) {\n var y = yAt(cx, cy, rx, ry, xRotation, ys[i]);\n if (y < minY) {\n minY = y;\n }\n if (y > maxY) {\n maxY = y;\n }\n }\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n },\n /**\n * 获取圆弧的长度,计算圆弧长度时不考虑旋转角度,\n * 仅跟 rx, ry, startAngle, endAngle 相关\n * @param {number} cx 圆心 x\n * @param {number} cy 圆心 y\n * @param {number} rx x 轴方向的半径\n * @param {number} ry y 轴方向的半径\n * @param {number} xRotation 旋转角度\n * @param {number} startAngle 起始角度\n * @param {number} endAngle 结束角度\n */\n length: function length(cx, cy, rx, ry, xRotation, startAngle, endAngle) {},\n /**\n * 获取指定点到圆弧的最近距离的点\n * @param {number} cx 圆心 x\n * @param {number} cy 圆心 y\n * @param {number} rx x 轴方向的半径\n * @param {number} ry y 轴方向的半径\n * @param {number} xRotation 旋转角度\n * @param {number} startAngle 起始角度\n * @param {number} endAngle 结束角度\n * @param {number} x0 指定点的 x\n * @param {number} y0 指定点的 y\n * @return {object} 到指定点最近距离的点\n */\n nearestPoint: function nearestPoint(cx, cy, rx, ry, xRotation, startAngle, endAngle, x0, y0) {\n // 将最近距离问题转换成到椭圆中心 0,0 没有旋转的椭圆问题\n var relativeVector = rotate(x0 - cx, y0 - cy, -xRotation);\n var x1 = relativeVector[0],\n y1 = relativeVector[1];\n // 计算点到椭圆的最近的点\n var relativePoint = ellipse.nearestPoint(0, 0, rx, ry, x1, y1);\n // 获取点在椭圆上的角度\n var angle = getAngle(rx, ry, relativePoint.x, relativePoint.y);\n // 点没有在圆弧上\n if (angle < startAngle) {\n // 小于起始圆弧\n relativePoint = getPoint(rx, ry, startAngle);\n } else if (angle > endAngle) {\n // 大于结束圆弧\n relativePoint = getPoint(rx, ry, endAngle);\n }\n // 旋转到 xRotation 的角度\n var vector = rotate(relativePoint.x, relativePoint.y, xRotation);\n return {\n x: vector[0] + cx,\n y: vector[1] + cy\n };\n },\n pointDistance: function pointDistance(cx, cy, rx, ry, xRotation, startAngle, endAngle, x0, y0) {\n var nearestPoint = this.nearestPoint(cx, cy, rx, ry, x0, y0);\n return distance(nearestPoint.x, nearestPoint.y, x0, y0);\n },\n pointAt: function pointAt(cx, cy, rx, ry, xRotation, startAngle, endAngle, t) {\n var angle = (endAngle - startAngle) * t + startAngle;\n return {\n x: xAt(cx, cy, rx, ry, xRotation, angle),\n y: yAt(cx, cy, rx, ry, xRotation, angle)\n };\n },\n tangentAngle: function tangentAngle(cx, cy, rx, ry, xRotation, startAngle, endAngle, t) {\n var angle = (endAngle - startAngle) * t + startAngle;\n var dx = derivativeXAt(cx, cy, rx, ry, xRotation, startAngle, endAngle, angle);\n var dy = derivativeYAt(cx, cy, rx, ry, xRotation, startAngle, endAngle, angle);\n return piMod(Math.atan2(dy, dx));\n }\n};","import line from './line';\nimport { distance } from './util';\nfunction analyzePoints(points) {\n // 计算每段的长度和总的长度\n var totalLength = 0;\n var segments = [];\n for (var i = 0; i < points.length - 1; i++) {\n var from = points[i];\n var to = points[i + 1];\n var length_1 = distance(from[0], from[1], to[0], to[1]);\n var seg = {\n from: from,\n to: to,\n length: length_1\n };\n segments.push(seg);\n totalLength += length_1;\n }\n return {\n segments: segments,\n totalLength: totalLength\n };\n}\nexport function lengthOfSegment(points) {\n if (points.length < 2) {\n return 0;\n }\n var totalLength = 0;\n for (var i = 0; i < points.length - 1; i++) {\n var from = points[i];\n var to = points[i + 1];\n totalLength += distance(from[0], from[1], to[0], to[1]);\n }\n return totalLength;\n}\n/**\n * 按照比例在数据片段中获取点\n * @param {array} points 点的集合\n * @param {number} t 百分比 0-1\n * @return {object} 点的坐标\n */\nexport function pointAtSegments(points, t) {\n // 边界判断\n if (t > 1 || t < 0 || points.length < 2) {\n return null;\n }\n var _a = analyzePoints(points),\n segments = _a.segments,\n totalLength = _a.totalLength;\n // 多个点有可能重合\n if (totalLength === 0) {\n return {\n x: points[0][0],\n y: points[0][1]\n };\n }\n // 计算比例\n var startRatio = 0;\n var point = null;\n for (var i = 0; i < segments.length; i++) {\n var seg = segments[i];\n var from = seg.from,\n to = seg.to;\n var currentRatio = seg.length / totalLength;\n if (t >= startRatio && t <= startRatio + currentRatio) {\n var localRatio = (t - startRatio) / currentRatio;\n point = line.pointAt(from[0], from[1], to[0], to[1], localRatio);\n break;\n }\n startRatio += currentRatio;\n }\n return point;\n}\n/**\n * 按照比例在数据片段中获取切线的角度\n * @param {array} points 点的集合\n * @param {number} t 百分比 0-1\n */\nexport function angleAtSegments(points, t) {\n // 边界判断\n if (t > 1 || t < 0 || points.length < 2) {\n return 0;\n }\n var _a = analyzePoints(points),\n segments = _a.segments,\n totalLength = _a.totalLength;\n // 计算比例\n var startRatio = 0;\n var angle = 0;\n for (var i = 0; i < segments.length; i++) {\n var seg = segments[i];\n var from = seg.from,\n to = seg.to;\n var currentRatio = seg.length / totalLength;\n if (t >= startRatio && t <= startRatio + currentRatio) {\n angle = Math.atan2(to[1] - from[1], to[0] - from[0]);\n break;\n }\n startRatio += currentRatio;\n }\n return angle;\n}\nexport function distanceAtSegment(points, x, y) {\n var minDistance = Infinity;\n for (var i = 0; i < points.length - 1; i++) {\n var point = points[i];\n var nextPoint = points[i + 1];\n var distance_1 = line.pointDistance(point[0], point[1], nextPoint[0], nextPoint[1], x, y);\n if (distance_1 < minDistance) {\n minDistance = distance_1;\n }\n }\n return minDistance;\n}","import { pointAtSegments, angleAtSegments, distanceAtSegment, lengthOfSegment } from './segments';\nimport { getBBoxByArray } from './util';\nexport default {\n /**\n * 计算多折线的包围盒\n * @param {array} points 点的集合 [x,y] 的形式\n * @return {object} 包围盒\n */\n box: function box(points) {\n var xArr = [];\n var yArr = [];\n for (var i = 0; i < points.length; i++) {\n var point = points[i];\n xArr.push(point[0]);\n yArr.push(point[1]);\n }\n return getBBoxByArray(xArr, yArr);\n },\n /**\n * 计算多折线的长度\n * @param {array} points 点的集合 [x,y] 的形式\n * @return {object} 多条边的长度\n */\n length: function length(points) {\n return lengthOfSegment(points);\n },\n /**\n * 根据比例获取多折线的点\n * @param {array} points 点的集合 [x,y] 的形式\n * @param {number} t 在多折线的长度上的比例\n * @return {object} 根据比例值计算出来的点\n */\n pointAt: function pointAt(points, t) {\n return pointAtSegments(points, t);\n },\n /**\n * 指定点到多折线的距离\n * @param {array} points 点的集合 [x,y] 的形式\n * @param {number} x 指定点的 x\n * @param {number} y 指定点的 y\n * @return {number} 点到多折线的距离\n */\n pointDistance: function pointDistance(points, x, y) {\n return distanceAtSegment(points, x, y);\n },\n /**\n * 根据比例获取多折线的切线角度\n * @param {array} points 点的集合 [x,y] 的形式\n * @param {number} t 在多折线的长度上的比例\n * @return {object} 根据比例值计算出来的角度\n */\n tangentAngle: function tangentAngle(points, t) {\n return angleAtSegments(points, t);\n }\n};","/**\n * @description 扩展方法,提供 gl-matrix 为提供的方法\n * */\nimport { mat3, vec2 } from 'gl-matrix';\nexport function leftTranslate(out, a, v) {\n var transMat = [0, 0, 0, 0, 0, 0, 0, 0, 0];\n mat3.fromTranslation(transMat, v);\n return mat3.multiply(out, transMat, a);\n}\nexport function leftRotate(out, a, rad) {\n var rotateMat = [0, 0, 0, 0, 0, 0, 0, 0, 0];\n mat3.fromRotation(rotateMat, rad);\n return mat3.multiply(out, rotateMat, a);\n}\nexport function leftScale(out, a, v) {\n var scaleMat = [0, 0, 0, 0, 0, 0, 0, 0, 0];\n mat3.fromScaling(scaleMat, v);\n return mat3.multiply(out, scaleMat, a);\n}\nfunction leftMultiply(out, a, a1) {\n return mat3.multiply(out, a1, a);\n}\n/**\n * 根据 actions 来做 transform\n * @param m\n * @param actions\n */\nexport function transform(m, actions) {\n var matrix = m ? [].concat(m) : [1, 0, 0, 0, 1, 0, 0, 0, 1];\n for (var i = 0, len = actions.length; i < len; i++) {\n var action = actions[i];\n switch (action[0]) {\n case 't':\n leftTranslate(matrix, matrix, [action[1], action[2]]);\n break;\n case 's':\n leftScale(matrix, matrix, [action[1], action[2]]);\n break;\n case 'r':\n leftRotate(matrix, matrix, action[1]);\n break;\n case 'm':\n leftMultiply(matrix, matrix, action[1]);\n break;\n default:\n break;\n }\n }\n return matrix;\n}\n/**\n * 向量 v1 到 向量 v2 夹角的方向\n * @param {Array} v1 向量\n * @param {Array} v2 向量\n * @return {Boolean} >= 0 顺时针 < 0 逆时针\n */\nexport function direction(v1, v2) {\n return v1[0] * v2[1] - v2[0] * v1[1];\n}\n/**\n * 二维向量 v1 到 v2 的夹角\n * @param v1\n * @param v2\n * @param direct\n */\nexport function angleTo(v1, v2, direct) {\n var ang = vec2.angle(v1, v2);\n var angleLargeThanPI = direction(v1, v2) >= 0;\n if (direct) {\n if (angleLargeThanPI) {\n return Math.PI * 2 - ang;\n }\n return ang;\n }\n if (angleLargeThanPI) {\n return ang;\n }\n return Math.PI * 2 - ang;\n}\n/**\n * 计算二维向量的垂直向量\n * @param out\n * @param v\n * @param flag\n */\nexport function vertical(out, v, flag) {\n if (flag) {\n out[0] = v[1];\n out[1] = -1 * v[0];\n } else {\n out[0] = -1 * v[1];\n out[1] = v[0];\n }\n return out;\n}","import { each, isArray, isString } from '@antv/util';\nvar regexTags = /[MLHVQTCSAZ]([^MLHVQTCSAZ]*)/ig;\nvar regexDot = /[^\\s\\,]+/ig;\nfunction parsePath(p) {\n var path = p || [];\n if (isArray(path)) {\n return path;\n }\n if (isString(path)) {\n path = path.match(regexTags);\n each(path, function (item, index) {\n // @ts-ignore\n item = item.match(regexDot);\n if (item[0].length > 1) {\n var tag = item[0].charAt(0);\n // @ts-ignore\n item.splice(1, 0, item[0].substr(1));\n // @ts-ignore\n item[0] = tag;\n }\n // @ts-ignore\n each(item, function (sub, i) {\n if (!isNaN(sub)) {\n // @ts-ignore\n item[i] = +sub;\n }\n });\n // @ts-ignore\n path[index] = item;\n });\n return path;\n }\n}\nexport default parsePath;","import { vec2 } from '@antv/matrix-util';\nfunction smoothBezier(points, smooth, isLoop, constraint) {\n var cps = [];\n var hasConstraint = !!constraint;\n var prevPoint;\n var nextPoint;\n var min;\n var max;\n var nextCp0;\n var cp1;\n var cp0;\n if (hasConstraint) {\n min = constraint[0], max = constraint[1];\n for (var i = 0, l = points.length; i < l; i += 1) {\n var point = points[i];\n min = vec2.min([0, 0], min, point);\n max = vec2.max([0, 0], max, point);\n }\n }\n for (var i = 0, len = points.length; i < len; i += 1) {\n var point = points[i];\n if (i === 0 && !isLoop) {\n cp0 = point;\n } else if (i === len - 1 && !isLoop) {\n cp1 = point;\n cps.push(cp0);\n cps.push(cp1);\n } else {\n var prevIdx = [i ? i - 1 : len - 1, i - 1][isLoop ? 0 : 1];\n prevPoint = points[prevIdx];\n nextPoint = points[isLoop ? (i + 1) % len : i + 1];\n var v = [0, 0];\n v = vec2.sub(v, nextPoint, prevPoint);\n v = vec2.scale(v, v, smooth);\n var d0 = vec2.distance(point, prevPoint);\n var d1 = vec2.distance(point, nextPoint);\n var sum = d0 + d1;\n if (sum !== 0) {\n d0 /= sum;\n d1 /= sum;\n }\n var v1 = vec2.scale([0, 0], v, -d0);\n var v2 = vec2.scale([0, 0], v, d1);\n cp1 = vec2.add([0, 0], point, v1);\n nextCp0 = vec2.add([0, 0], point, v2);\n // 下一个控制点必须在这个点和下一个点之间\n nextCp0 = vec2.min([0, 0], nextCp0, vec2.max([0, 0], nextPoint, point));\n nextCp0 = vec2.max([0, 0], nextCp0, vec2.min([0, 0], nextPoint, point));\n // 重新计算 cp1 的值\n v1 = vec2.sub([0, 0], nextCp0, point);\n v1 = vec2.scale([0, 0], v1, -d0 / d1);\n cp1 = vec2.add([0, 0], point, v1);\n // 上一个控制点必须要在上一个点和这一个点之间\n cp1 = vec2.min([0, 0], cp1, vec2.max([0, 0], prevPoint, point));\n cp1 = vec2.max([0, 0], cp1, vec2.min([0, 0], prevPoint, point));\n // 重新计算 nextCp0 的值\n v2 = vec2.sub([0, 0], point, cp1);\n v2 = vec2.scale([0, 0], v2, d1 / d0);\n nextCp0 = vec2.add([0, 0], point, v2);\n if (hasConstraint) {\n cp1 = vec2.max([0, 0], cp1, min);\n cp1 = vec2.min([0, 0], cp1, max);\n nextCp0 = vec2.max([0, 0], nextCp0, min);\n nextCp0 = vec2.min([0, 0], nextCp0, max);\n }\n cps.push(cp0);\n cps.push(cp1);\n cp0 = nextCp0;\n }\n }\n if (isLoop) {\n cps.push(cps.shift());\n }\n return cps;\n}\n/**\n * create bezier spline from catmull rom spline\n * @param {Array} crp Catmull Rom Points\n * @param {boolean} z Spline is loop\n * @param {Array} constraint Constraint\n */\nfunction catmullRom2Bezier(crp, z, constraint) {\n if (z === void 0) {\n z = false;\n }\n if (constraint === void 0) {\n constraint = [[0, 0], [1, 1]];\n }\n var isLoop = !!z;\n var pointList = [];\n for (var i = 0, l = crp.length; i < l; i += 2) {\n pointList.push([crp[i], crp[i + 1]]);\n }\n var controlPointList = smoothBezier(pointList, 0.4, isLoop, constraint);\n var len = pointList.length;\n var d1 = [];\n var cp1;\n var cp2;\n var p;\n for (var i = 0; i < len - 1; i += 1) {\n cp1 = controlPointList[i * 2];\n cp2 = controlPointList[i * 2 + 1];\n p = pointList[i + 1];\n d1.push(['C', cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1]]);\n }\n if (isLoop) {\n cp1 = controlPointList[len];\n cp2 = controlPointList[len + 1];\n p = pointList[0];\n d1.push(['C', cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1]]);\n }\n return d1;\n}\nexport default catmullRom2Bezier;","import { isArray } from '@antv/util';\nvar SPACES = \"\\t\\n\\x0B\\f\\r \\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\";\nvar PATH_COMMAND = new RegExp('([a-z])[' + SPACES + ',]*((-?\\\\d*\\\\.?\\\\d*(?:e[\\\\-+]?\\\\d+)?[' + SPACES + ']*,?[' + SPACES + ']*)+)', 'ig');\nvar PATH_VALUES = new RegExp('(-?\\\\d*\\\\.?\\\\d*(?:e[\\\\-+]?\\\\d+)?)[' + SPACES + ']*,?[' + SPACES + ']*', 'ig');\n// Parses given path string into an array of arrays of path segments\nexport default function parsePathString(pathString) {\n if (!pathString) {\n return null;\n }\n if (isArray(pathString)) {\n return pathString;\n }\n var paramCounts = {\n a: 7,\n c: 6,\n o: 2,\n h: 1,\n l: 2,\n m: 2,\n r: 4,\n q: 4,\n s: 4,\n t: 2,\n v: 1,\n u: 3,\n z: 0\n };\n var data = [];\n String(pathString).replace(PATH_COMMAND, function (a, b, c) {\n var params = [];\n var name = b.toLowerCase();\n c.replace(PATH_VALUES, function (a, b) {\n b && params.push(+b);\n });\n if (name === 'm' && params.length > 2) {\n data.push([b].concat(params.splice(0, 2)));\n name = 'l';\n b = b === 'm' ? 'l' : 'L';\n }\n if (name === 'o' && params.length === 1) {\n data.push([b, params[0]]);\n }\n if (name === 'r') {\n data.push([b].concat(params));\n } else {\n while (params.length >= paramCounts[name]) {\n data.push([b].concat(params.splice(0, paramCounts[name])));\n if (!paramCounts[name]) {\n break;\n }\n }\n }\n return '';\n });\n return data;\n}","import parsePathString from './parse-path-string';\nvar REGEX_MD = /[a-z]/;\nfunction toSymmetry(p, c) {\n return [c[0] + (c[0] - p[0]), c[1] + (c[1] - p[1])];\n}\nexport default function pathToAbsolute(pathString) {\n var pathArray = parsePathString(pathString);\n if (!pathArray || !pathArray.length) {\n return [['M', 0, 0]];\n }\n var needProcess = false; // 如果存在小写的命令或者 V,H,T,S 则需要处理\n for (var i = 0; i < pathArray.length; i++) {\n var cmd = pathArray[i][0];\n // 如果存在相对位置的命令,则中断返回\n if (REGEX_MD.test(cmd) || ['V', 'H', 'T', 'S'].indexOf(cmd) >= 0) {\n needProcess = true;\n break;\n }\n }\n // 如果不存在相对命令,则直接返回\n // 如果在业务上都写绝对路径,这种方式最快,仅做了一次检测\n if (!needProcess) {\n return pathArray;\n }\n var res = [];\n var x = 0;\n var y = 0;\n var mx = 0;\n var my = 0;\n var start = 0;\n var pa0;\n var dots;\n var first = pathArray[0];\n if (first[0] === 'M' || first[0] === 'm') {\n x = +first[1];\n y = +first[2];\n mx = x;\n my = y;\n start++;\n res[0] = ['M', x, y];\n }\n for (var i = start, ii = pathArray.length; i < ii; i++) {\n var pa = pathArray[i];\n var preParams = res[i - 1]; // 取前一个已经处理后的节点,否则会出现问题\n var r = [];\n var cmd = pa[0];\n var upCmd = cmd.toUpperCase();\n if (cmd !== upCmd) {\n r[0] = upCmd;\n switch (upCmd) {\n case 'A':\n r[1] = pa[1];\n r[2] = pa[2];\n r[3] = pa[3];\n r[4] = pa[4];\n r[5] = pa[5];\n r[6] = +pa[6] + x;\n r[7] = +pa[7] + y;\n break;\n case 'V':\n r[1] = +pa[1] + y;\n break;\n case 'H':\n r[1] = +pa[1] + x;\n break;\n case 'M':\n mx = +pa[1] + x;\n my = +pa[2] + y;\n r[1] = mx;\n r[2] = my;\n break;\n // for lint\n default:\n for (var j = 1, jj = pa.length; j < jj; j++) {\n r[j] = +pa[j] + (j % 2 ? x : y);\n }\n }\n } else {\n // 如果本来已经大写,则不处理\n r = pathArray[i];\n }\n // 需要在外面统一做,同时处理 V,H,S,T 等特殊指令\n switch (upCmd) {\n case 'Z':\n x = +mx;\n y = +my;\n break;\n case 'H':\n x = r[1];\n r = ['L', x, y];\n break;\n case 'V':\n y = r[1];\n r = ['L', x, y];\n break;\n case 'T':\n x = r[1];\n y = r[2];\n // 以 x, y 为中心的,上一个控制点的对称点\n // 需要假设上一个节点的命令为 Q\n var symetricT = toSymmetry([preParams[1], preParams[2]], [preParams[3], preParams[4]]);\n r = ['Q', symetricT[0], symetricT[1], x, y];\n break;\n case 'S':\n x = r[r.length - 2];\n y = r[r.length - 1];\n // 以 x,y 为中心,取上一个控制点,\n // 需要假设上一个线段为 C 或者 S\n var length_1 = preParams.length;\n var symetricS = toSymmetry([preParams[length_1 - 4], preParams[length_1 - 3]], [preParams[length_1 - 2], preParams[length_1 - 1]]);\n r = ['C', symetricS[0], symetricS[1], r[1], r[2], x, y];\n break;\n case 'M':\n mx = r[r.length - 2];\n my = r[r.length - 1];\n break;\n // for lint\n default:\n x = r[r.length - 2];\n y = r[r.length - 1];\n }\n res.push(r);\n }\n return res;\n}","var TAU = Math.PI * 2;\nvar mapToEllipse = function mapToEllipse(_a, rx, ry, cosphi, sinphi, centerx, centery) {\n var x = _a.x,\n y = _a.y;\n x *= rx;\n y *= ry;\n var xp = cosphi * x - sinphi * y;\n var yp = sinphi * x + cosphi * y;\n return {\n x: xp + centerx,\n y: yp + centery\n };\n};\nvar approxUnitArc = function approxUnitArc(ang1, ang2) {\n // If 90 degree circular arc, use a constant\n // as derived from http://spencermortensen.com/articles/bezier-circle\n var a = ang2 === 1.5707963267948966 ? 0.551915024494 : ang2 === -1.5707963267948966 ? -0.551915024494 : 4 / 3 * Math.tan(ang2 / 4);\n var x1 = Math.cos(ang1);\n var y1 = Math.sin(ang1);\n var x2 = Math.cos(ang1 + ang2);\n var y2 = Math.sin(ang1 + ang2);\n return [{\n x: x1 - y1 * a,\n y: y1 + x1 * a\n }, {\n x: x2 + y2 * a,\n y: y2 - x2 * a\n }, {\n x: x2,\n y: y2\n }];\n};\nvar vectorAngle = function vectorAngle(ux, uy, vx, vy) {\n var sign = ux * vy - uy * vx < 0 ? -1 : 1;\n var dot = ux * vx + uy * vy;\n if (dot > 1) {\n dot = 1;\n }\n if (dot < -1) {\n dot = -1;\n }\n return sign * Math.acos(dot);\n};\nvar getArcCenter = function getArcCenter(px, py, cx, cy, rx, ry, largeArcFlag, sweepFlag, sinphi, cosphi, pxp, pyp) {\n var rxsq = Math.pow(rx, 2);\n var rysq = Math.pow(ry, 2);\n var pxpsq = Math.pow(pxp, 2);\n var pypsq = Math.pow(pyp, 2);\n var radicant = rxsq * rysq - rxsq * pypsq - rysq * pxpsq;\n if (radicant < 0) {\n radicant = 0;\n }\n radicant /= rxsq * pypsq + rysq * pxpsq;\n radicant = Math.sqrt(radicant) * (largeArcFlag === sweepFlag ? -1 : 1);\n var centerxp = radicant * rx / ry * pyp;\n var centeryp = radicant * -ry / rx * pxp;\n var centerx = cosphi * centerxp - sinphi * centeryp + (px + cx) / 2;\n var centery = sinphi * centerxp + cosphi * centeryp + (py + cy) / 2;\n var vx1 = (pxp - centerxp) / rx;\n var vy1 = (pyp - centeryp) / ry;\n var vx2 = (-pxp - centerxp) / rx;\n var vy2 = (-pyp - centeryp) / ry;\n var ang1 = vectorAngle(1, 0, vx1, vy1);\n var ang2 = vectorAngle(vx1, vy1, vx2, vy2);\n if (sweepFlag === 0 && ang2 > 0) {\n ang2 -= TAU;\n }\n if (sweepFlag === 1 && ang2 < 0) {\n ang2 += TAU;\n }\n return [centerx, centery, ang1, ang2];\n};\nvar arcToBezier = function arcToBezier(_a) {\n var px = _a.px,\n py = _a.py,\n cx = _a.cx,\n cy = _a.cy,\n rx = _a.rx,\n ry = _a.ry,\n _b = _a.xAxisRotation,\n xAxisRotation = _b === void 0 ? 0 : _b,\n _c = _a.largeArcFlag,\n largeArcFlag = _c === void 0 ? 0 : _c,\n _d = _a.sweepFlag,\n sweepFlag = _d === void 0 ? 0 : _d;\n var curves = [];\n if (rx === 0 || ry === 0) {\n return [{\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 0,\n x: cx,\n y: cy\n }];\n }\n var sinphi = Math.sin(xAxisRotation * TAU / 360);\n var cosphi = Math.cos(xAxisRotation * TAU / 360);\n var pxp = cosphi * (px - cx) / 2 + sinphi * (py - cy) / 2;\n var pyp = -sinphi * (px - cx) / 2 + cosphi * (py - cy) / 2;\n if (pxp === 0 && pyp === 0) {\n return [{\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 0,\n x: cx,\n y: cy\n }];\n }\n rx = Math.abs(rx);\n ry = Math.abs(ry);\n var lambda = Math.pow(pxp, 2) / Math.pow(rx, 2) + Math.pow(pyp, 2) / Math.pow(ry, 2);\n if (lambda > 1) {\n rx *= Math.sqrt(lambda);\n ry *= Math.sqrt(lambda);\n }\n var _e = getArcCenter(px, py, cx, cy, rx, ry, largeArcFlag, sweepFlag, sinphi, cosphi, pxp, pyp),\n centerx = _e[0],\n centery = _e[1],\n ang1 = _e[2],\n ang2 = _e[3];\n // If 'ang2' == 90.0000000001, then `ratio` will evaluate to\n // 1.0000000001. This causes `segments` to be greater than one, which is an\n // unecessary split, and adds extra points to the bezier curve. To alleviate\n // this issue, we round to 1.0 when the ratio is close to 1.0.\n var ratio = Math.abs(ang2) / (TAU / 4);\n if (Math.abs(1.0 - ratio) < 0.0000001) {\n ratio = 1.0;\n }\n var segments = Math.max(Math.ceil(ratio), 1);\n ang2 /= segments;\n for (var i = 0; i < segments; i++) {\n curves.push(approxUnitArc(ang1, ang2));\n ang1 += ang2;\n }\n return curves.map(function (curve) {\n var _a = mapToEllipse(curve[0], rx, ry, cosphi, sinphi, centerx, centery),\n x1 = _a.x,\n y1 = _a.y;\n var _b = mapToEllipse(curve[1], rx, ry, cosphi, sinphi, centerx, centery),\n x2 = _b.x,\n y2 = _b.y;\n var _c = mapToEllipse(curve[2], rx, ry, cosphi, sinphi, centerx, centery),\n x = _c.x,\n y = _c.y;\n return {\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2,\n x: x,\n y: y\n };\n });\n};\nexport function arcToCubic(x1, y1, rx, ry, angle, LAF, SF, x2, y2) {\n var curves = arcToBezier({\n px: x1,\n py: y1,\n cx: x2,\n cy: y2,\n rx: rx,\n ry: ry,\n xAxisRotation: angle,\n largeArcFlag: LAF,\n sweepFlag: SF\n });\n return curves.reduce(function (prev, cur) {\n var x1 = cur.x1,\n y1 = cur.y1,\n x2 = cur.x2,\n y2 = cur.y2,\n x = cur.x,\n y = cur.y;\n prev.push(x1, y1, x2, y2, x, y);\n return prev;\n }, []);\n}","import { mod, toRadian } from '@antv/util';\n// 向量长度\nfunction vMag(v) {\n return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\n}\n// u.v/|u||v|,计算夹角的余弦值\nfunction vRatio(u, v) {\n // 当存在一个向量的长度为 0 时,夹角也为 0,即夹角的余弦值为 1\n return vMag(u) * vMag(v) ? (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v)) : 1;\n}\n// 向量角度\nfunction vAngle(u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vRatio(u, v));\n}\n/**\n * 判断两个点是否重合,点坐标的格式为 [x, y]\n * @param {Array} point1 第一个点\n * @param {Array} point2 第二个点\n */\nexport function isSamePoint(point1, point2) {\n return point1[0] === point2[0] && point1[1] === point2[1];\n}\n// A 0:rx 1:ry 2:x-axis-rotation 3:large-arc-flag 4:sweep-flag 5: x 6: y\nexport default function getArcParams(startPoint, params) {\n var rx = params[1];\n var ry = params[2];\n var xRotation = mod(toRadian(params[3]), Math.PI * 2);\n var arcFlag = params[4];\n var sweepFlag = params[5];\n // 弧形起点坐标\n var x1 = startPoint[0];\n var y1 = startPoint[1];\n // 弧形终点坐标\n var x2 = params[6];\n var y2 = params[7];\n var xp = Math.cos(xRotation) * (x1 - x2) / 2.0 + Math.sin(xRotation) * (y1 - y2) / 2.0;\n var yp = -1 * Math.sin(xRotation) * (x1 - x2) / 2.0 + Math.cos(xRotation) * (y1 - y2) / 2.0;\n var lambda = xp * xp / (rx * rx) + yp * yp / (ry * ry);\n if (lambda > 1) {\n rx *= Math.sqrt(lambda);\n ry *= Math.sqrt(lambda);\n }\n var diff = rx * rx * (yp * yp) + ry * ry * (xp * xp);\n var f = diff ? Math.sqrt((rx * rx * (ry * ry) - diff) / diff) : 1;\n if (arcFlag === sweepFlag) {\n f *= -1;\n }\n if (isNaN(f)) {\n f = 0;\n }\n // 旋转前的起点坐标,且当长半轴和短半轴的长度为 0 时,坐标按 (0, 0) 处理\n var cxp = ry ? f * rx * yp / ry : 0;\n var cyp = rx ? f * -ry * xp / rx : 0;\n // 椭圆圆心坐标\n var cx = (x1 + x2) / 2.0 + Math.cos(xRotation) * cxp - Math.sin(xRotation) * cyp;\n var cy = (y1 + y2) / 2.0 + Math.sin(xRotation) * cxp + Math.cos(xRotation) * cyp;\n // 起始点的单位向量\n var u = [(xp - cxp) / rx, (yp - cyp) / ry];\n // 终止点的单位向量\n var v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry];\n // 计算起始点和圆心的连线,与 x 轴正方向的夹角\n var theta = vAngle([1, 0], u);\n // 计算圆弧起始点和终止点与椭圆圆心连线的夹角\n var dTheta = vAngle(u, v);\n if (vRatio(u, v) <= -1) {\n dTheta = Math.PI;\n }\n if (vRatio(u, v) >= 1) {\n dTheta = 0;\n }\n if (sweepFlag === 0 && dTheta > 0) {\n dTheta = dTheta - 2 * Math.PI;\n }\n if (sweepFlag === 1 && dTheta < 0) {\n dTheta = dTheta + 2 * Math.PI;\n }\n return {\n cx: cx,\n cy: cy,\n // 弧形的起点和终点相同时,长轴和短轴的长度按 0 处理\n rx: isSamePoint(startPoint, [x2, y2]) ? 0 : rx,\n ry: isSamePoint(startPoint, [x2, y2]) ? 0 : ry,\n startAngle: theta,\n endAngle: theta + dTheta,\n xRotation: xRotation,\n arcFlag: arcFlag,\n sweepFlag: sweepFlag\n };\n}","import getArcParams from './get-arc-params';\nimport { isSamePoint } from './get-arc-params';\nimport parsePath from './parse-path';\n// 点对称\nfunction toSymmetry(point, center) {\n return [center[0] + (center[0] - point[0]), center[1] + (center[1] - point[1])];\n}\nexport default function getSegments(path) {\n path = parsePath(path);\n var segments = [];\n var currentPoint = null; // 当前图形\n var nextParams = null; // 下一节点的 path 参数\n var startMovePoint = null; // 开始 M 的点,可能会有多个\n var lastStartMovePointIndex = 0; // 最近一个开始点 M 的索引\n var count = path.length;\n for (var i = 0; i < count; i++) {\n var params = path[i];\n nextParams = path[i + 1];\n var command = params[0];\n // 数学定义上的参数,便于后面的计算\n var segment = {\n command: command,\n prePoint: currentPoint,\n params: params,\n startTangent: null,\n endTangent: null\n };\n switch (command) {\n case 'M':\n startMovePoint = [params[1], params[2]];\n lastStartMovePointIndex = i;\n break;\n case 'A':\n var arcParams = getArcParams(currentPoint, params);\n segment['arcParams'] = arcParams;\n break;\n default:\n break;\n }\n if (command === 'Z') {\n // 有了 Z 后,当前节点从开始 M 的点开始\n currentPoint = startMovePoint;\n // 如果当前点的命令为 Z,相当于当前点为最近一个 M 点,则下一个点直接指向最近一个 M 点的下一个点\n nextParams = path[lastStartMovePointIndex + 1];\n } else {\n var len = params.length;\n currentPoint = [params[len - 2], params[len - 1]];\n }\n if (nextParams && nextParams[0] === 'Z') {\n // 如果下一个点的命令为 Z,则下一个点直接指向最近一个 M 点\n nextParams = path[lastStartMovePointIndex];\n if (segments[lastStartMovePointIndex]) {\n // 如果下一个点的命令为 Z,则最近一个 M 点的前一个点为当前点\n segments[lastStartMovePointIndex].prePoint = currentPoint;\n }\n }\n segment['currentPoint'] = currentPoint;\n // 如果当前点与最近一个 M 点相同,则最近一个 M 点的前一个点为当前点的前一个点\n if (segments[lastStartMovePointIndex] && isSamePoint(currentPoint, segments[lastStartMovePointIndex].currentPoint)) {\n segments[lastStartMovePointIndex].prePoint = segment.prePoint;\n }\n var nextPoint = nextParams ? [nextParams[nextParams.length - 2], nextParams[nextParams.length - 1]] : null;\n segment['nextPoint'] = nextPoint;\n // Add startTangent and endTangent\n var prePoint = segment.prePoint;\n if (['L', 'H', 'V'].includes(command)) {\n segment.startTangent = [prePoint[0] - currentPoint[0], prePoint[1] - currentPoint[1]];\n segment.endTangent = [currentPoint[0] - prePoint[0], currentPoint[1] - prePoint[1]];\n } else if (command === 'Q') {\n // 二次贝塞尔曲线只有一个控制点\n var cp = [params[1], params[2]];\n // 二次贝塞尔曲线的终点为 currentPoint\n segment.startTangent = [prePoint[0] - cp[0], prePoint[1] - cp[1]];\n segment.endTangent = [currentPoint[0] - cp[0], currentPoint[1] - cp[1]];\n } else if (command === 'T') {\n var preSegment = segments[i - 1];\n var cp = toSymmetry(preSegment.currentPoint, prePoint);\n if (preSegment.command === 'Q') {\n segment.command = 'Q';\n segment.startTangent = [prePoint[0] - cp[0], prePoint[1] - cp[1]];\n segment.endTangent = [currentPoint[0] - cp[0], currentPoint[1] - cp[1]];\n } else {\n segment.command = 'TL';\n segment.startTangent = [prePoint[0] - currentPoint[0], prePoint[1] - currentPoint[1]];\n segment.endTangent = [currentPoint[0] - prePoint[0], currentPoint[1] - prePoint[1]];\n }\n } else if (command === 'C') {\n // 三次贝塞尔曲线有两个控制点\n var cp1 = [params[1], params[2]];\n var cp2 = [params[3], params[4]];\n segment.startTangent = [prePoint[0] - cp1[0], prePoint[1] - cp1[1]];\n segment.endTangent = [currentPoint[0] - cp2[0], currentPoint[1] - cp2[1]];\n // horizontal line, eg. ['C', 100, 100, 100, 100, 200, 200]\n if (segment.startTangent[0] === 0 && segment.startTangent[1] === 0) {\n segment.startTangent = [cp1[0] - cp2[0], cp1[1] - cp2[1]];\n }\n if (segment.endTangent[0] === 0 && segment.endTangent[1] === 0) {\n segment.endTangent = [cp2[0] - cp1[0], cp2[1] - cp1[1]];\n }\n } else if (command === 'S') {\n var preSegment = segments[i - 1];\n var cp1 = toSymmetry(preSegment.currentPoint, prePoint);\n var cp2 = [params[1], params[2]];\n if (preSegment.command === 'C') {\n segment.command = 'C'; // 将 S 命令变换为 C 命令\n segment.startTangent = [prePoint[0] - cp1[0], prePoint[1] - cp1[1]];\n segment.endTangent = [currentPoint[0] - cp2[0], currentPoint[1] - cp2[1]];\n } else {\n segment.command = 'SQ'; // 将 S 命令变换为 SQ 命令\n segment.startTangent = [prePoint[0] - cp2[0], prePoint[1] - cp2[1]];\n segment.endTangent = [currentPoint[0] - cp2[0], currentPoint[1] - cp2[1]];\n }\n } else if (command === 'A') {\n var d = 0.001;\n var _a = segment['arcParams'] || {},\n _b = _a.cx,\n cx = _b === void 0 ? 0 : _b,\n _c = _a.cy,\n cy = _c === void 0 ? 0 : _c,\n _d = _a.rx,\n rx = _d === void 0 ? 0 : _d,\n _e = _a.ry,\n ry = _e === void 0 ? 0 : _e,\n _f = _a.sweepFlag,\n sweepFlag = _f === void 0 ? 0 : _f,\n _g = _a.startAngle,\n startAngle = _g === void 0 ? 0 : _g,\n _h = _a.endAngle,\n endAngle = _h === void 0 ? 0 : _h;\n if (sweepFlag === 0) {\n d *= -1;\n }\n var dx1 = rx * Math.cos(startAngle - d) + cx;\n var dy1 = ry * Math.sin(startAngle - d) + cy;\n segment.startTangent = [dx1 - startMovePoint[0], dy1 - startMovePoint[1]];\n var dx2 = rx * Math.cos(startAngle + endAngle + d) + cx;\n var dy2 = ry * Math.sin(startAngle + endAngle - d) + cy;\n segment.endTangent = [prePoint[0] - dx2, prePoint[1] - dy2];\n }\n segments.push(segment);\n }\n return segments;\n}","/**\n * @fileoverview 判断点是否在多边形内\n * @author dxq613@gmail.com\n */\n// 多边形的射线检测,参考:https://blog.csdn.net/WilliamSun0122/article/details/77994526\nvar tolerance = 1e-6;\n// 三态函数,判断两个double在eps精度下的大小关系\nfunction dcmp(x) {\n if (Math.abs(x) < tolerance) {\n return 0;\n }\n return x < 0 ? -1 : 1;\n}\n// 判断点Q是否在p1和p2的线段上\nfunction onSegment(p1, p2, q) {\n if ((q[0] - p1[0]) * (p2[1] - p1[1]) === (p2[0] - p1[0]) * (q[1] - p1[1]) && Math.min(p1[0], p2[0]) <= q[0] && q[0] <= Math.max(p1[0], p2[0]) && Math.min(p1[1], p2[1]) <= q[1] && q[1] <= Math.max(p1[1], p2[1])) {\n return true;\n }\n return false;\n}\n// 判断点P在多边形内-射线法\nexport default function isInPolygon(points, x, y) {\n var isHit = false;\n var n = points.length;\n if (n <= 2) {\n // svg 中点小于 3 个时,不显示,也无法被拾取\n return false;\n }\n for (var i = 0; i < n; i++) {\n var p1 = points[i];\n var p2 = points[(i + 1) % n];\n if (onSegment(p1, p2, [x, y])) {\n // 点在多边形一条边上\n return true;\n }\n // 前一个判断min(p1[1],p2[1]) 0 !== dcmp(p2[1] - y) > 0 && dcmp(x - (y - p1[1]) * (p1[0] - p2[0]) / (p1[1] - p2[1]) - p1[0]) < 0) {\n isHit = !isHit;\n }\n }\n return isHit;\n}","var isBetween = function isBetween(value, min, max) {\n return value >= min && value <= max;\n};\nexport default function getLineIntersect(p0, p1, p2, p3) {\n var tolerance = 0.001;\n var E = {\n x: p2.x - p0.x,\n y: p2.y - p0.y\n };\n var D0 = {\n x: p1.x - p0.x,\n y: p1.y - p0.y\n };\n var D1 = {\n x: p3.x - p2.x,\n y: p3.y - p2.y\n };\n var kross = D0.x * D1.y - D0.y * D1.x;\n var sqrKross = kross * kross;\n var sqrLen0 = D0.x * D0.x + D0.y * D0.y;\n var sqrLen1 = D1.x * D1.x + D1.y * D1.y;\n var point = null;\n if (sqrKross > tolerance * sqrLen0 * sqrLen1) {\n var s = (E.x * D1.y - E.y * D1.x) / kross;\n var t = (E.x * D0.y - E.y * D0.x) / kross;\n if (isBetween(s, 0, 1) && isBetween(t, 0, 1)) {\n point = {\n x: p0.x + s * D0.x,\n y: p0.y + s * D0.y\n };\n }\n }\n return point;\n}\n;","import isPointInPolygon from './point-in-polygon';\nimport getLineIntersect from './get-line-intersect';\nimport { each } from '@antv/util';\nfunction parseToLines(points) {\n var lines = [];\n var count = points.length;\n for (var i = 0; i < count - 1; i++) {\n var point = points[i];\n var next = points[i + 1];\n lines.push({\n from: {\n x: point[0],\n y: point[1]\n },\n to: {\n x: next[0],\n y: next[1]\n }\n });\n }\n if (lines.length > 1) {\n var first = points[0];\n var last = points[count - 1];\n lines.push({\n from: {\n x: last[0],\n y: last[1]\n },\n to: {\n x: first[0],\n y: first[1]\n }\n });\n }\n return lines;\n}\nfunction lineIntersectPolygon(lines, line) {\n var isIntersect = false;\n each(lines, function (l) {\n if (getLineIntersect(l.from, l.to, line.from, line.to)) {\n isIntersect = true;\n return false;\n }\n });\n return isIntersect;\n}\nfunction getBBox(points) {\n var xArr = points.map(function (p) {\n return p[0];\n });\n var yArr = points.map(function (p) {\n return p[1];\n });\n return {\n minX: Math.min.apply(null, xArr),\n maxX: Math.max.apply(null, xArr),\n minY: Math.min.apply(null, yArr),\n maxY: Math.max.apply(null, yArr)\n };\n}\nfunction intersectBBox(box1, box2) {\n return !(box2.minX > box1.maxX || box2.maxX < box1.minX || box2.minY > box1.maxY || box2.maxY < box1.minY);\n}\nexport default function isPolygonsIntersect(points1, points2) {\n // 空数组,或者一个点返回 false\n if (points1.length < 2 || points2.length < 2) {\n return false;\n }\n var bbox1 = getBBox(points1);\n var bbox2 = getBBox(points2);\n // 判定包围盒是否相交,比判定点是否在多边形内要快的多,可以筛选掉大多数情况\n if (!intersectBBox(bbox1, bbox2)) {\n return false;\n }\n var isIn = false;\n // 判定点是否在多边形内部,一旦有一个点在另一个多边形内,则返回\n each(points2, function (point) {\n if (isPointInPolygon(points1, point[0], point[1])) {\n isIn = true;\n return false;\n }\n });\n if (isIn) {\n return true;\n }\n // 两个多边形都需要判定\n each(points1, function (point) {\n if (isPointInPolygon(points2, point[0], point[1])) {\n isIn = true;\n return false;\n }\n });\n if (isIn) {\n return true;\n }\n var lines1 = parseToLines(points1);\n var lines2 = parseToLines(points2);\n var isIntersect = false;\n each(lines2, function (line) {\n if (lineIntersectPolygon(lines1, line)) {\n isIntersect = true;\n return false;\n }\n });\n return isIntersect;\n}","var isArrayLike = function isArrayLike(value) {\n /**\n * isArrayLike([1, 2, 3]) => true\n * isArrayLike(document.body.children) => true\n * isArrayLike('abc') => true\n * isArrayLike(Function) => false\n */\n return value !== null && typeof value !== 'function' && isFinite(value.length);\n};\nexport default isArrayLike;","import isArrayLike from './is-array-like';\nvar contains = function contains(arr, value) {\n if (!isArrayLike(arr)) {\n return false;\n }\n return arr.indexOf(value) > -1;\n};\nexport default contains;","import isArrayLike from './is-array-like';\nvar filter = function filter(arr, func) {\n if (!isArrayLike(arr)) {\n return arr;\n }\n var result = [];\n for (var index = 0; index < arr.length; index++) {\n var value = arr[index];\n if (func(value, index)) {\n result.push(value);\n }\n }\n return result;\n};\nexport default filter;","import filter from './filter';\nimport contains from './contains';\n/**\n * Flattens `array` a single level deep.\n *\n * @param {Array} arr The array to inspect.\n * @param {Array} values The values to exclude.\n * @return {Array} Returns the new array of filtered values.\n * @example\n * difference([2, 1], [2, 3]); // => [1]\n */\nvar difference = function difference(arr, values) {\n if (values === void 0) {\n values = [];\n }\n return filter(arr, function (value) {\n return !contains(values, value);\n });\n};\nexport default difference;","var toString = {}.toString;\nvar isType = function isType(value, type) {\n return toString.call(value) === '[object ' + type + ']';\n};\nexport default isType;","/**\n * 是否为函数\n * @param {*} fn 对象\n * @return {Boolean} 是否函数\n */\nimport isType from './is-type';\nexport default (function (value) {\n return isType(value, 'Function');\n});","// isFinite,\nvar isNil = function isNil(value) {\n /**\n * isNil(null) => true\n * isNil() => true\n */\n return value === null || value === undefined;\n};\nexport default isNil;","import isType from './is-type';\nexport default (function (value) {\n return Array.isArray ? Array.isArray(value) : isType(value, 'Array');\n});","export default (function (value) {\n /**\n * isObject({}) => true\n * isObject([1, 2, 3]) => true\n * isObject(Function) => true\n * isObject(null) => false\n */\n var type = typeof value;\n return value !== null && type === 'object' || type === 'function';\n});","import isArray from './is-array';\nimport isObject from './is-object';\nfunction each(elements, func) {\n if (!elements) {\n return;\n }\n var rst;\n if (isArray(elements)) {\n for (var i = 0, len = elements.length; i < len; i++) {\n rst = func(elements[i], i);\n if (rst === false) {\n break;\n }\n }\n } else if (isObject(elements)) {\n for (var k in elements) {\n if (elements.hasOwnProperty(k)) {\n rst = func(elements[k], k);\n if (rst === false) {\n break;\n }\n }\n }\n }\n}\nexport default each;","import each from './each';\nimport isFunction from './is-function';\nvar keys = Object.keys ? function (obj) {\n return Object.keys(obj);\n} : function (obj) {\n var result = [];\n each(obj, function (value, key) {\n if (!(isFunction(obj) && key === 'prototype')) {\n result.push(key);\n }\n });\n return result;\n};\nexport default keys;","import isNil from './is-nil';\nimport keys from './keys';\nfunction isMatch(obj, attrs) {\n var _keys = keys(attrs);\n var length = _keys.length;\n if (isNil(obj)) return !length;\n for (var i = 0; i < length; i += 1) {\n var key = _keys[i];\n if (attrs[key] !== obj[key] || !(key in obj)) {\n return false;\n }\n }\n return true;\n}\nexport default isMatch;","var isObjectLike = function isObjectLike(value) {\n /**\n * isObjectLike({}) => true\n * isObjectLike([1, 2, 3]) => true\n * isObjectLike(Function) => false\n * isObjectLike(null) => false\n */\n return typeof value === 'object' && value !== null;\n};\nexport default isObjectLike;","import isObjectLike from './is-object-like';\nimport isType from './is-type';\nvar isPlainObject = function isPlainObject(value) {\n /**\n * isObjectLike(new Foo) => false\n * isObjectLike([1, 2, 3]) => false\n * isObjectLike({ x: 0, y: 0 }) => true\n * isObjectLike(Object.create(null)) => true\n */\n if (!isObjectLike(value) || !isType(value, 'Object')) {\n return false;\n }\n if (Object.getPrototypeOf(value) === null) {\n return true;\n }\n var proto = value;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(value) === proto;\n};\nexport default isPlainObject;","import isFunction from './is-function';\nimport isMatch from './is-match';\nimport isArray from './is-array';\nimport isPlainObject from './is-plain-object';\nfunction find(arr, predicate) {\n if (!isArray(arr)) return null;\n var _predicate;\n if (isFunction(predicate)) {\n _predicate = predicate;\n }\n if (isPlainObject(predicate)) {\n _predicate = function _predicate(a) {\n return isMatch(a, predicate);\n };\n }\n if (_predicate) {\n for (var i = 0; i < arr.length; i += 1) {\n if (_predicate(arr[i])) {\n return arr[i];\n }\n }\n }\n return null;\n}\nexport default find;","function findIndex(arr, predicate, fromIndex) {\n if (fromIndex === void 0) {\n fromIndex = 0;\n }\n for (var i = fromIndex; i < arr.length; i++) {\n if (predicate(arr[i], i)) {\n // 找到终止循环\n return i;\n }\n }\n return -1;\n}\nexport default findIndex;","import isNil from './is-nil';\nimport isArray from './is-array';\nvar firstValue = function firstValue(data, name) {\n var rst = null;\n for (var i = 0; i < data.length; i++) {\n var obj = data[i];\n var value = obj[name];\n if (!isNil(value)) {\n if (isArray(value)) {\n rst = value[0]; // todo 这里是否应该使用递归,调用 firstValue @绝云\n } else {\n rst = value;\n }\n break;\n }\n }\n return rst;\n};\nexport default firstValue;","import isArray from './is-array';\n/**\n * Flattens `array` a single level deep.\n *\n * @param {Array} arr The array to flatten.\n * @return {Array} Returns the new flattened array.\n * @example\n *\n * flatten([1, [2, [3, [4]], 5]]); // => [1, 2, [3, [4]], 5]\n */\nvar flatten = function flatten(arr) {\n if (!isArray(arr)) {\n return [];\n }\n var rst = [];\n for (var i = 0; i < arr.length; i++) {\n rst = rst.concat(arr[i]);\n }\n return rst;\n};\nexport default flatten;","import isArray from './is-array';\n/**\n * @param {Array} arr The array to iterate over.\n * @return {*} Returns the maximum value.\n * @example\n *\n * max([1, 2]);\n * // => 2\n *\n * max([]);\n * // => undefined\n *\n * const data = new Array(1250010).fill(1).map((d,idx) => idx);\n *\n * max(data);\n * // => 1250010\n * // Math.max(...data) will encounter \"Maximum call stack size exceeded\" error\n */\nexport default (function (arr) {\n if (!isArray(arr)) {\n return undefined;\n }\n return arr.reduce(function (prev, curr) {\n return Math.max(prev, curr);\n }, arr[0]);\n});","import isArray from './is-array';\n/**\n * @param {Array} arr The array to iterate over.\n * @return {*} Returns the minimum value.\n * @example\n *\n * min([1, 2]);\n * // => 1\n *\n * min([]);\n * // => undefined\n *\n * const data = new Array(1250010).fill(1).map((d,idx) => idx);\n *\n * min(data);\n * // => 1250010\n * // Math.min(...data) will encounter \"Maximum call stack size exceeded\" error\n */\nexport default (function (arr) {\n if (!isArray(arr)) {\n return undefined;\n }\n return arr.reduce(function (prev, curr) {\n return Math.min(prev, curr);\n }, arr[0]);\n});","import isArray from './is-array';\nimport { default as getMax } from './max';\nimport { default as getMin } from './min';\nvar getRange = function getRange(values) {\n // 存在 NaN 时,min,max 判定会出问题\n var filterValues = values.filter(function (v) {\n return !isNaN(v);\n });\n if (!filterValues.length) {\n // 如果没有数值则直接返回0\n return {\n min: 0,\n max: 0\n };\n }\n if (isArray(values[0])) {\n var tmp = [];\n for (var i = 0; i < values.length; i++) {\n tmp = tmp.concat(values[i]);\n }\n filterValues = tmp;\n }\n var max = getMax(filterValues);\n var min = getMin(filterValues);\n return {\n min: min,\n max: max\n };\n};\nexport default getRange;","var arrPrototype = Array.prototype;\nvar splice = arrPrototype.splice;\nvar indexOf = arrPrototype.indexOf;\nvar pull = function pull(arr) {\n var values = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n values[_i - 1] = arguments[_i];\n }\n for (var i = 0; i < values.length; i++) {\n var value = values[i];\n var fromIndex = -1;\n while ((fromIndex = indexOf.call(arr, value)) > -1) {\n splice.call(arr, fromIndex, 1);\n }\n }\n return arr;\n};\nexport default pull;","import isArrayLike from './is-array-like';\nvar splice = Array.prototype.splice;\nvar pullAt = function pullAt(arr, indexes) {\n if (!isArrayLike(arr)) {\n return [];\n }\n var length = arr ? indexes.length : 0;\n var last = length - 1;\n while (length--) {\n var previous = void 0;\n var index = indexes[length];\n if (length === last || index !== previous) {\n previous = index;\n splice.call(arr, index, 1);\n }\n }\n return arr;\n};\nexport default pullAt;","import each from './each';\nimport isArray from './is-array';\nimport isPlainObject from './is-plain-object';\nvar reduce = function reduce(arr, fn, init) {\n if (!isArray(arr) && !isPlainObject(arr)) {\n return arr;\n }\n var result = init;\n each(arr, function (data, i) {\n result = fn(result, data, i);\n });\n return result;\n};\nexport default reduce;","import isArrayLike from './is-array-like';\nimport pullAt from './pull-at';\nvar remove = function remove(arr, predicate) {\n /**\n * const arr = [1, 2, 3, 4]\n * const evens = remove(arr, n => n % 2 == 0)\n * console.log(arr) // => [1, 3]\n * console.log(evens) // => [2, 4]\n */\n var result = [];\n if (!isArrayLike(arr)) {\n return result;\n }\n var i = -1;\n var indexes = [];\n var length = arr.length;\n while (++i < length) {\n var value = arr[i];\n if (predicate(value, i, arr)) {\n result.push(value);\n indexes.push(i);\n }\n }\n pullAt(arr, indexes);\n return result;\n};\nexport default remove;","import isType from './is-type';\nexport default (function (str) {\n return isType(str, 'String');\n});","import isArray from './is-array';\nimport isString from './is-string';\nimport isFunction from './is-function';\nfunction sortBy(arr, key) {\n var comparer;\n if (isFunction(key)) {\n comparer = function comparer(a, b) {\n return key(a) - key(b);\n };\n } else {\n var keys_1 = [];\n if (isString(key)) {\n keys_1.push(key);\n } else if (isArray(key)) {\n keys_1 = key;\n }\n comparer = function comparer(a, b) {\n for (var i = 0; i < keys_1.length; i += 1) {\n var prop = keys_1[i];\n if (a[prop] > b[prop]) {\n return 1;\n }\n if (a[prop] < b[prop]) {\n return -1;\n }\n }\n return 0;\n };\n }\n arr.sort(comparer);\n return arr;\n}\nexport default sortBy;","export default function uniq(arr, cache) {\n if (cache === void 0) {\n cache = new Map();\n }\n var r = [];\n if (Array.isArray(arr)) {\n for (var i = 0, len = arr.length; i < len; i++) {\n var item = arr[i];\n // 加一个 cache,提升性能\n if (!cache.has(item)) {\n r.push(item);\n cache.set(item, true);\n }\n }\n }\n return r;\n}","import isArray from './is-array';\nimport isNil from './is-nil';\nexport default (function (data, name) {\n var rst = [];\n var tmpMap = {};\n for (var i = 0; i < data.length; i++) {\n var obj = data[i];\n var value = obj[name];\n if (!isNil(value)) {\n // flatten\n if (!isArray(value)) {\n value = [value];\n }\n for (var j = 0; j < value.length; j++) {\n var val = value[j];\n // unique\n if (!tmpMap[val]) {\n rst.push(val);\n tmpMap[val] = true;\n }\n }\n }\n }\n return rst;\n});","import isArrayLike from './is-array-like';\nexport default function head(o) {\n if (isArrayLike(o)) {\n return o[0];\n }\n return undefined;\n}","import isArrayLike from './is-array-like';\nexport default function last(o) {\n if (isArrayLike(o)) {\n var arr = o;\n return arr[arr.length - 1];\n }\n return undefined;\n}","import isArray from './is-array';\nimport isString from './is-string';\nfunction endsWith(arr, e) {\n return isArray(arr) || isString(arr) ? arr[arr.length - 1] === e : false;\n}\nexport default endsWith;","/**\n * 只要有一个不满足条件就返回 false\n * @param arr\n * @param func\n */\nvar every = function every(arr, func) {\n for (var i = 0; i < arr.length; i++) {\n if (!func(arr[i], i)) return false;\n }\n return true;\n};\nexport default every;","/**\n * 只要有一个满足条件就返回 true\n * @param arr\n * @param func\n */\nvar some = function some(arr, func) {\n for (var i = 0; i < arr.length; i++) {\n if (func(arr[i], i)) return true;\n }\n return false;\n};\nexport default some;","import isArray from './is-array';\nimport isFunction from './is-function';\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction groupBy(data, condition) {\n if (!condition || !isArray(data)) {\n return {};\n }\n var result = {};\n // 兼容方法和 字符串的写法\n var predicate = isFunction(condition) ? condition : function (item) {\n return item[condition];\n };\n var key;\n for (var i = 0; i < data.length; i++) {\n var item = data[i];\n key = predicate(item);\n if (hasOwnProperty.call(result, key)) {\n result[key].push(item);\n } else {\n result[key] = [item];\n }\n }\n return result;\n}\nexport default groupBy;","import isArray from './is-array';\nimport isFunction from './is-function';\nimport groupBy from './group-by';\n/**\n * 将数据分组成 map\n * @param data\n * @param condition\n */\nexport default function groupToMap(data, condition) {\n if (!condition) {\n return {\n 0: data\n };\n }\n if (!isFunction(condition)) {\n // 如果是字符串,则按照 a*b 风格成数组\n var paramscondition_1 = isArray(condition) ? condition : condition.replace(/\\s+/g, '').split('*');\n condition = function condition(row) {\n var unique = '_'; // 避免出现数字作为Key的情况,会进行按照数字的排序\n // 根据字段列表的值,拼接成 key\n for (var i = 0, l = paramscondition_1.length; i < l; i++) {\n unique += row[paramscondition_1[i]] && row[paramscondition_1[i]].toString();\n }\n return unique;\n };\n }\n return groupBy(data, condition);\n}","import groupToMap from './group-to-map';\nexport default (function (data, condition) {\n if (!condition) {\n // 没有条件,则自身改成数组\n return [data];\n }\n var groups = groupToMap(data, condition);\n var array = [];\n for (var i in groups) {\n array.push(groups[i]);\n }\n return array;\n});","import isArray from './is-array';\nfunction parseRadius(radius) {\n var r1 = 0,\n r2 = 0,\n r3 = 0,\n r4 = 0;\n if (isArray(radius)) {\n if (radius.length === 1) {\n r1 = r2 = r3 = r4 = radius[0];\n } else if (radius.length === 2) {\n r1 = r3 = radius[0];\n r2 = r4 = radius[1];\n } else if (radius.length === 3) {\n r1 = radius[0];\n r2 = r4 = radius[1];\n r3 = radius[2];\n } else {\n r1 = radius[0];\n r2 = radius[1];\n r3 = radius[2];\n r4 = radius[3];\n }\n } else {\n r1 = r2 = r3 = r4 = radius;\n }\n return {\n r1: r1,\n r2: r2,\n r3: r3,\n r4: r4\n };\n}\nexport default parseRadius;","var clamp = function clamp(a, min, max) {\n if (a < min) {\n return min;\n } else if (a > max) {\n return max;\n }\n return a;\n};\nexport default clamp;","var fixedBase = function fixedBase(v, base) {\n var str = base.toString();\n var index = str.indexOf('.');\n if (index === -1) {\n return Math.round(v);\n }\n var length = str.substr(index + 1).length;\n if (length > 20) {\n length = 20;\n }\n return parseFloat(v.toFixed(length));\n};\nexport default fixedBase;","/**\n * 判断是否数字\n * @return {Boolean} 是否数字\n */\nimport isType from './is-type';\nvar isNumber = function isNumber(value) {\n return isType(value, 'Number');\n};\nexport default isNumber;","var PRECISION = 0.00001; // numbers less than this is considered as 0\nexport default function isNumberEqual(a, b, precision) {\n if (precision === void 0) {\n precision = PRECISION;\n }\n return Math.abs(a - b) < precision;\n}\n;","import isNumber from './is-number';\nvar isInteger = Number.isInteger ? Number.isInteger : function (num) {\n return isNumber(num) && num % 1 === 0;\n};\nexport default isInteger;","import isNumber from './is-number';\nvar isOdd = function isOdd(num) {\n return isNumber(num) && num % 2 !== 0;\n};\nexport default isOdd;","import isArray from './is-array';\nimport isFunction from './is-function';\n/**\n * @param {Array} arr The array to iterate over.\n * @param {Function} [fn] The iteratee invoked per element.\n * @return {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\nexport default (function (arr, fn) {\n if (!isArray(arr)) {\n return undefined;\n }\n var maxItem;\n var max = -Infinity;\n for (var i = 0; i < arr.length; i++) {\n var item = arr[i];\n var v = isFunction(fn) ? fn(item) : item[fn];\n if (v > max) {\n maxItem = item;\n max = v;\n }\n }\n return maxItem;\n});","import isArray from './is-array';\nimport isFunction from './is-function';\n/**\n * @param {Array} arr The array to iterate over.\n * @param {Function} [fn] The iteratee invoked per element.\n * @return {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * minBy(objects, 'n');\n * // => { 'n': 1 }\n */\nexport default (function (arr, fn) {\n if (!isArray(arr)) {\n return undefined;\n }\n var minItem;\n var min = Infinity;\n for (var i = 0; i < arr.length; i++) {\n var item = arr[i];\n var v = isFunction(fn) ? fn(item) : item[fn];\n if (v < min) {\n minItem = item;\n min = v;\n }\n }\n return minItem;\n});","var mod = function mod(n, m) {\n return (n % m + m) % m;\n};\nexport default mod;","var RADIAN = Math.PI / 180;\nvar toRadian = function toRadian(degree) {\n return RADIAN * degree;\n};\nexport default toRadian;","var DEGREE = 180 / Math.PI;\nvar toDegree = function toDegree(radian) {\n return DEGREE * radian;\n};\nexport default toDegree;","import each from './each';\nexport default each;","import has from './has';\nexport default has;","export default (function (obj, key) {\n return obj.hasOwnProperty(key);\n});","import each from './each';\nimport isFunction from './is-function';\n// @ts-ignore\nvar values = Object.values ? function (obj) {\n return Object.values(obj);\n} : function (obj) {\n var result = [];\n each(obj, function (value, key) {\n if (!(isFunction(obj) && key === 'prototype')) {\n result.push(value);\n }\n });\n return result;\n};\nexport default values;","import isNil from './is-nil';\nexport default (function (value) {\n if (isNil(value)) return '';\n return value.toString();\n});","import toString from './to-string';\nvar lowerCase = function lowerCase(str) {\n return toString(str).toLowerCase();\n};\nexport default lowerCase;","function substitute(str, o) {\n if (!str || !o) {\n return str;\n }\n return str.replace(/\\\\?\\{([^{}]+)\\}/g, function (match, name) {\n if (match.charAt(0) === '\\\\') {\n return match.slice(1);\n }\n return o[name] === undefined ? '' : o[name];\n });\n}\nexport default substitute;","import toString from './to-string';\nvar upperFirst = function upperFirst(value) {\n var str = toString(value);\n return str.charAt(0).toUpperCase() + str.substring(1);\n};\nexport default upperFirst;","var toString = {}.toString;\nvar getType = function getType(value) {\n return toString.call(value).replace(/^\\[object /, '').replace(/]$/, '');\n};\nexport default getType;","/**\n * 是否是布尔类型\n *\n * @param {Object} value 测试的值\n * @return {Boolean}\n */\nimport isType from './is-type';\nvar isBoolean = function isBoolean(value) {\n return isType(value, 'Boolean');\n};\nexport default isBoolean;","import isType from './is-type';\nvar isDate = function isDate(value) {\n return isType(value, 'Date');\n};\nexport default isDate;","var isNull = function isNull(value) {\n return value === null;\n};\nexport default isNull;","var objectProto = Object.prototype;\nvar isPrototype = function isPrototype(value) {\n var Ctor = value && value.constructor;\n var proto = typeof Ctor === 'function' && Ctor.prototype || objectProto;\n return value === proto;\n};\nexport default isPrototype;","var isUndefined = function isUndefined(value) {\n return value === undefined;\n};\nexport default isUndefined;","/**\n * 判断是否HTML元素\n * @return {Boolean} 是否HTML元素\n */\nvar isElement = function isElement(o) {\n return o instanceof Element || o instanceof HTMLDocument;\n};\nexport default isElement;","export default function requestAnimationFrame(fn) {\n var method = window.requestAnimationFrame || window.webkitRequestAnimationFrame ||\n // @ts-ignore\n window.mozRequestAnimationFrame ||\n // @ts-ignore\n window.msRequestAnimationFrame || function (f) {\n return setTimeout(f, 16);\n };\n return method(fn);\n}\n;","export default function cancelAnimationFrame(handler) {\n var method = window.cancelAnimationFrame || window.webkitCancelAnimationFrame ||\n // @ts-ignore\n window.mozCancelAnimationFrame ||\n // @ts-ignore\n window.msCancelAnimationFrame || clearTimeout;\n method(handler);\n}\n;","import mix from './mix';\nimport isFunction from './is-function';\nvar augment = function augment() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var c = args[0];\n for (var i = 1; i < args.length; i++) {\n var obj = args[i];\n if (isFunction(obj)) {\n obj = obj.prototype;\n }\n mix(c.prototype, obj);\n }\n};\nexport default augment;","import isArray from './is-array';\nvar clone = function clone(obj) {\n if (typeof obj !== 'object' || obj === null) {\n return obj;\n }\n var rst;\n if (isArray(obj)) {\n rst = [];\n for (var i = 0, l = obj.length; i < l; i++) {\n if (typeof obj[i] === 'object' && obj[i] != null) {\n rst[i] = clone(obj[i]);\n } else {\n rst[i] = obj[i];\n }\n }\n } else {\n rst = {};\n for (var k in obj) {\n if (typeof obj[k] === 'object' && obj[k] != null) {\n rst[k] = clone(obj[k]);\n } else {\n rst[k] = obj[k];\n }\n }\n }\n return rst;\n};\nexport default clone;","function debounce(func, wait, immediate) {\n var timeout;\n return function () {\n var context = this,\n args = arguments;\n var later = function later() {\n timeout = null;\n if (!immediate) {\n func.apply(context, args);\n }\n };\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) {\n func.apply(context, args);\n }\n };\n}\nexport default debounce;","import isFunction from './is-function';\n/**\n * _.memoize(calColor);\n * _.memoize(calColor, (...args) => args[0]);\n * @param f\n * @param resolver\n */\nexport default (function (f, resolver) {\n if (!isFunction(f)) {\n throw new TypeError('Expected a function');\n }\n var memoized = function memoized() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n // 使用方法构造 key,如果不存在 resolver,则直接取第一个参数作为 key\n var key = resolver ? resolver.apply(this, args) : args[0];\n var cache = memoized.cache;\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = f.apply(this, args);\n // 缓存起来\n cache.set(key, result);\n return result;\n };\n memoized.cache = new Map();\n return memoized;\n});","import isArray from './is-array';\nimport isPlainObject from './is-plain-object';\nvar MAX_MIX_LEVEL = 5;\nfunction _deepMix(dist, src, level, maxLevel) {\n level = level || 0;\n maxLevel = maxLevel || MAX_MIX_LEVEL;\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n var value = src[key];\n if (value !== null && isPlainObject(value)) {\n if (!isPlainObject(dist[key])) {\n dist[key] = {};\n }\n if (level < maxLevel) {\n _deepMix(dist[key], value, level + 1, maxLevel);\n } else {\n dist[key] = src[key];\n }\n } else if (isArray(value)) {\n dist[key] = [];\n dist[key] = dist[key].concat(value);\n } else if (value !== undefined) {\n dist[key] = value;\n }\n }\n }\n}\n// todo 重写\nvar deepMix = function deepMix(rst) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n for (var i = 0; i < args.length; i += 1) {\n _deepMix(rst, args[i]);\n }\n return rst;\n};\nexport default deepMix;","import isArrayLike from './is-array-like';\nvar indexOf = function indexOf(arr, obj) {\n if (!isArrayLike(arr)) {\n return -1;\n }\n var m = Array.prototype.indexOf;\n if (m) {\n return m.call(arr, obj);\n }\n var index = -1;\n for (var i = 0; i < arr.length; i++) {\n if (arr[i] === obj) {\n index = i;\n break;\n }\n }\n return index;\n};\nexport default indexOf;","import isNil from './is-nil';\nimport isArrayLike from './is-array-like';\nimport getType from './get-type';\nimport isPrototype from './is-prototype';\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction isEmpty(value) {\n /**\n * isEmpty(null) => true\n * isEmpty() => true\n * isEmpty(true) => true\n * isEmpty(1) => true\n * isEmpty([1, 2, 3]) => false\n * isEmpty('abc') => false\n * isEmpty({ a: 1 }) => false\n */\n if (isNil(value)) {\n return true;\n }\n if (isArrayLike(value)) {\n return !value.length;\n }\n var type = getType(value);\n if (type === 'Map' || type === 'Set') {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !Object.keys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\nexport default isEmpty;","import isObjectLike from './is-object-like';\nimport isArrayLike from './is-array-like';\nimport isString from './is-string';\nvar isEqual = function isEqual(value, other) {\n if (value === other) {\n return true;\n }\n if (!value || !other) {\n return false;\n }\n if (isString(value) || isString(other)) {\n return false;\n }\n if (isArrayLike(value) || isArrayLike(other)) {\n if (value.length !== other.length) {\n return false;\n }\n var rst = true;\n for (var i = 0; i < value.length; i++) {\n rst = isEqual(value[i], other[i]);\n if (!rst) {\n break;\n }\n }\n return rst;\n }\n if (isObjectLike(value) || isObjectLike(other)) {\n var valueKeys = Object.keys(value);\n var otherKeys = Object.keys(other);\n if (valueKeys.length !== otherKeys.length) {\n return false;\n }\n var rst = true;\n for (var i = 0; i < valueKeys.length; i++) {\n rst = isEqual(value[valueKeys[i]], other[valueKeys[i]]);\n if (!rst) {\n break;\n }\n }\n return rst;\n }\n return false;\n};\nexport default isEqual;","import isArrayLike from './is-array-like';\nvar map = function map(arr, func) {\n if (!isArrayLike(arr)) {\n // @ts-ignore\n return arr;\n }\n var result = [];\n for (var index = 0; index < arr.length; index++) {\n var value = arr[index];\n result.push(func(value, index));\n }\n return result;\n};\nexport default map;","import isNil from './is-nil';\nimport isObject from './is-object';\nvar identity = function identity(v) {\n return v;\n};\nexport default (function (object, func) {\n if (func === void 0) {\n func = identity;\n }\n var r = {};\n if (isObject(object) && !isNil(object)) {\n Object.keys(object).forEach(function (key) {\n // @ts-ignore\n r[key] = func(object[key], key);\n });\n }\n return r;\n});","// FIXME: Mutable param should be forbidden in static lang.\nfunction _mix(dist, obj) {\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && key !== 'constructor' && obj[key] !== undefined) {\n dist[key] = obj[key];\n }\n }\n}\nexport default function mix(dist, src1, src2, src3) {\n if (src1) _mix(dist, src1);\n if (src2) _mix(dist, src2);\n if (src3) _mix(dist, src3);\n return dist;\n}","import isString from './is-string';\n/**\n * https://github.com/developit/dlv/blob/master/index.js\n * @param obj\n * @param key\n * @param defaultValue\n */\nexport default (function (obj, key, defaultValue) {\n var p = 0;\n var keyArr = isString(key) ? key.split('.') : key;\n while (obj && p < keyArr.length) {\n obj = obj[keyArr[p++]];\n }\n return obj === undefined || p < keyArr.length ? defaultValue : obj;\n});","import isObject from './is-object';\nimport isString from './is-string';\nimport isNumber from './is-number';\n/**\n * https://github.com/developit/dlv/blob/master/index.js\n * @param obj\n * @param path\n * @param value\n */\nexport default (function (obj, path, value) {\n var o = obj;\n var keyArr = isString(path) ? path.split('.') : path;\n keyArr.forEach(function (key, idx) {\n // 不是最后一个\n if (idx < keyArr.length - 1) {\n if (!isObject(o[key])) {\n o[key] = isNumber(keyArr[idx + 1]) ? [] : {};\n }\n o = o[key];\n } else {\n o[key] = value;\n }\n });\n return obj;\n});","import each from './each';\nimport isPlainObject from './is-plain-object';\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nexport default (function (object, keys) {\n if (object === null || !isPlainObject(object)) {\n return {};\n }\n var result = {};\n each(keys, function (key) {\n if (hasOwnProperty.call(object, key)) {\n result[key] = object[key];\n }\n });\n return result;\n});","import reduce from './reduce';\nexport default (function (obj, keys) {\n return reduce(obj, function (r, curr, key) {\n if (!keys.includes(key)) {\n r[key] = curr;\n }\n return r;\n }, {});\n});","export default (function (func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n var later = function later() {\n previous = options.leading === false ? 0 : Date.now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n var throttled = function throttled() {\n var now = Date.now();\n if (!previous && options.leading === false) previous = now;\n var remaining = wait - (now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n throttled.cancel = function () {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n return throttled;\n});","import isArrayLike from './is-array-like';\nexport default (function (value) {\n return isArrayLike(value) ? Array.prototype.slice.call(value) : [];\n});","var map = {};\nexport default (function (prefix) {\n prefix = prefix || 'g';\n if (!map[prefix]) {\n map[prefix] = 1;\n } else {\n map[prefix] += 1;\n }\n return prefix + map[prefix];\n});","export default (function () {});","import isNil from './is-nil';\nimport isArraylike from './is-array-like';\nexport default function size(o) {\n if (isNil(o)) {\n return 0;\n }\n if (isArraylike(o)) {\n return o.length;\n }\n return Object.keys(o).length;\n}","import { __spreadArrays } from \"tslib\";\nimport values from './values';\nimport memoize from './memoize';\nimport isString from './is-string';\nvar ctx;\n/**\n * 计算文本的宽度\n */\nexport default memoize(function (text, font) {\n if (font === void 0) {\n font = {};\n }\n var fontSize = font.fontSize,\n fontFamily = font.fontFamily,\n fontWeight = font.fontWeight,\n fontStyle = font.fontStyle,\n fontVariant = font.fontVariant;\n if (!ctx) {\n ctx = document.createElement('canvas').getContext('2d');\n }\n ctx.font = [fontStyle, fontVariant, fontWeight, fontSize + \"px\", fontFamily].join(' ');\n return ctx.measureText(isString(text) ? text : '').width;\n}, function (text, font) {\n if (font === void 0) {\n font = {};\n }\n return __spreadArrays([text], values(font)).join('');\n});","import isString from './is-string';\nimport toString from './to-string';\nimport { default as measureTextWidth } from './measure-text-width';\n/**\n * 获取文本的 ... 文本。\n * 算法(减少每次 measureText 的长度,measureText 的性能跟字符串时间相关):\n * 1. 先通过 STEP 逐步计算,找到最后一个小于 maxWidth 的字符串\n * 2. 然后对最后这个字符串二分计算\n * @param text 需要计算的文本, 由于历史原因 除了支持string,还支持空值,number和数组等\n * @param maxWidth 最大宽度\n * @param font 字体\n * @param str 要替换的文本\n */\nexport default (function (text, maxWidth, font, str) {\n if (str === void 0) {\n str = '...';\n }\n var STEP = 16; // 每次 16,调参工程师\n var PLACEHOLDER_WIDTH = measureTextWidth(str, font);\n var leftText = !isString(text) ? toString(text) : text;\n var leftWidth = maxWidth;\n var r = []; // 最终的分段字符串\n var currentText;\n var currentWidth;\n if (measureTextWidth(text, font) <= maxWidth) {\n return text;\n }\n // 首先通过 step 计算,找出最大的未超出长度的\n // eslint-disable-next-line no-constant-condition\n while (true) {\n // 更新字符串\n currentText = leftText.substr(0, STEP);\n // 计算宽度\n currentWidth = measureTextWidth(currentText, font);\n // 超出剩余宽度,则停止\n if (currentWidth + PLACEHOLDER_WIDTH > leftWidth) {\n if (currentWidth > leftWidth) {\n break;\n }\n }\n r.push(currentText);\n // 没有超出,则计算剩余宽度\n leftWidth -= currentWidth;\n leftText = leftText.substr(STEP);\n // 字符串整体没有超出\n if (!leftText) {\n return r.join('');\n }\n }\n // 最下的最后一个 STEP,使用 1 递增(用二分效果更高)\n // eslint-disable-next-line no-constant-condition\n while (true) {\n // 更新字符串\n currentText = leftText.substr(0, 1);\n // 计算宽度\n currentWidth = measureTextWidth(currentText, font);\n // 超出剩余宽度,则停止\n if (currentWidth + PLACEHOLDER_WIDTH > leftWidth) {\n break;\n }\n r.push(currentText);\n // 没有超出,则计算剩余宽度\n leftWidth -= currentWidth;\n leftText = leftText.substr(1);\n if (!leftText) {\n return r.join('');\n }\n }\n return \"\" + r.join('') + str;\n});","/**\n * k-v 存储\n */\nvar default_1 = /** @class */function () {\n function default_1() {\n this.map = {};\n }\n default_1.prototype.has = function (key) {\n return this.map[key] !== undefined;\n };\n default_1.prototype.get = function (key, def) {\n var v = this.map[key];\n return v === undefined ? def : v;\n };\n default_1.prototype.set = function (key, value) {\n this.map[key] = value;\n };\n default_1.prototype.clear = function () {\n this.map = {};\n };\n default_1.prototype.delete = function (key) {\n delete this.map[key];\n };\n default_1.prototype.size = function () {\n return Object.keys(this.map).length;\n };\n return default_1;\n}();\nexport default default_1;","var clone = function () {\n 'use strict';\n\n function _instanceof(obj, type) {\n return type != null && obj instanceof type;\n }\n var nativeMap;\n try {\n nativeMap = Map;\n } catch (_) {\n // maybe a reference error because no `Map`. Give it a dummy value that no\n // value will ever be an instanceof.\n nativeMap = function nativeMap() {};\n }\n var nativeSet;\n try {\n nativeSet = Set;\n } catch (_) {\n nativeSet = function nativeSet() {};\n }\n var nativePromise;\n try {\n nativePromise = Promise;\n } catch (_) {\n nativePromise = function nativePromise() {};\n }\n\n /**\n * Clones (copies) an Object using deep copying.\n *\n * This function supports circular references by default, but if you are certain\n * there are no circular references in your object, you can save some CPU time\n * by calling clone(obj, false).\n *\n * Caution: if `circular` is false and `parent` contains circular references,\n * your program may enter an infinite loop and crash.\n *\n * @param `parent` - the object to be cloned\n * @param `circular` - set to true if the object to be cloned may contain\n * circular references. (optional - true by default)\n * @param `depth` - set to a number if the object is only to be cloned to\n * a particular depth. (optional - defaults to Infinity)\n * @param `prototype` - sets the prototype to be used when cloning an object.\n * (optional - defaults to parent prototype).\n * @param `includeNonEnumerable` - set to true if the non-enumerable properties\n * should be cloned as well. Non-enumerable properties on the prototype\n * chain will be ignored. (optional - false by default)\n */\n function clone(parent, circular, depth, prototype, includeNonEnumerable) {\n if (typeof circular === 'object') {\n depth = circular.depth;\n prototype = circular.prototype;\n includeNonEnumerable = circular.includeNonEnumerable;\n circular = circular.circular;\n }\n // maintain two arrays for circular references, where corresponding parents\n // and children have the same index\n var allParents = [];\n var allChildren = [];\n var useBuffer = typeof Buffer != 'undefined';\n if (typeof circular == 'undefined') circular = true;\n if (typeof depth == 'undefined') depth = Infinity;\n\n // recurse this function so we don't reset allParents and allChildren\n function _clone(parent, depth) {\n // cloning null always returns null\n if (parent === null) return null;\n if (depth === 0) return parent;\n var child;\n var proto;\n if (typeof parent != 'object') {\n return parent;\n }\n if (_instanceof(parent, nativeMap)) {\n child = new nativeMap();\n } else if (_instanceof(parent, nativeSet)) {\n child = new nativeSet();\n } else if (_instanceof(parent, nativePromise)) {\n child = new nativePromise(function (resolve, reject) {\n parent.then(function (value) {\n resolve(_clone(value, depth - 1));\n }, function (err) {\n reject(_clone(err, depth - 1));\n });\n });\n } else if (clone.__isArray(parent)) {\n child = [];\n } else if (clone.__isRegExp(parent)) {\n child = new RegExp(parent.source, __getRegExpFlags(parent));\n if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n } else if (clone.__isDate(parent)) {\n child = new Date(parent.getTime());\n } else if (useBuffer && Buffer.isBuffer(parent)) {\n if (Buffer.allocUnsafe) {\n // Node.js >= 4.5.0\n child = Buffer.allocUnsafe(parent.length);\n } else {\n // Older Node.js versions\n child = new Buffer(parent.length);\n }\n parent.copy(child);\n return child;\n } else if (_instanceof(parent, Error)) {\n child = Object.create(parent);\n } else {\n if (typeof prototype == 'undefined') {\n proto = Object.getPrototypeOf(parent);\n child = Object.create(proto);\n } else {\n child = Object.create(prototype);\n proto = prototype;\n }\n }\n if (circular) {\n var index = allParents.indexOf(parent);\n if (index != -1) {\n return allChildren[index];\n }\n allParents.push(parent);\n allChildren.push(child);\n }\n if (_instanceof(parent, nativeMap)) {\n parent.forEach(function (value, key) {\n var keyChild = _clone(key, depth - 1);\n var valueChild = _clone(value, depth - 1);\n child.set(keyChild, valueChild);\n });\n }\n if (_instanceof(parent, nativeSet)) {\n parent.forEach(function (value) {\n var entryChild = _clone(value, depth - 1);\n child.add(entryChild);\n });\n }\n for (var i in parent) {\n var attrs;\n if (proto) {\n attrs = Object.getOwnPropertyDescriptor(proto, i);\n }\n if (attrs && attrs.set == null) {\n continue;\n }\n child[i] = _clone(parent[i], depth - 1);\n }\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(parent);\n for (var i = 0; i < symbols.length; i++) {\n // Don't need to worry about cloning a symbol because it is a primitive,\n // like a number or string.\n var symbol = symbols[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);\n if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {\n continue;\n }\n child[symbol] = _clone(parent[symbol], depth - 1);\n if (!descriptor.enumerable) {\n Object.defineProperty(child, symbol, {\n enumerable: false\n });\n }\n }\n }\n if (includeNonEnumerable) {\n var allPropertyNames = Object.getOwnPropertyNames(parent);\n for (var i = 0; i < allPropertyNames.length; i++) {\n var propertyName = allPropertyNames[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);\n if (descriptor && descriptor.enumerable) {\n continue;\n }\n child[propertyName] = _clone(parent[propertyName], depth - 1);\n Object.defineProperty(child, propertyName, {\n enumerable: false\n });\n }\n }\n return child;\n }\n return _clone(parent, depth);\n }\n\n /**\n * Simple flat clone using prototype, accepts only objects, usefull for property\n * override on FLAT configuration object (no nested props).\n *\n * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n * works.\n */\n clone.clonePrototype = function clonePrototype(parent) {\n if (parent === null) return null;\n var c = function c() {};\n c.prototype = parent;\n return new c();\n };\n\n // private utility functions\n\n function __objToStr(o) {\n return Object.prototype.toString.call(o);\n }\n clone.__objToStr = __objToStr;\n function __isDate(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Date]';\n }\n clone.__isDate = __isDate;\n function __isArray(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Array]';\n }\n clone.__isArray = __isArray;\n function __isRegExp(o) {\n return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n }\n clone.__isRegExp = __isRegExp;\n function __getRegExpFlags(re) {\n var flags = '';\n if (re.global) flags += 'g';\n if (re.ignoreCase) flags += 'i';\n if (re.multiline) flags += 'm';\n return flags;\n }\n clone.__getRegExpFlags = __getRegExpFlags;\n return clone;\n}();\nif (typeof module === 'object' && module.exports) {\n module.exports = clone;\n}","import define, { extend } from \"./define.js\";\nexport function Color() {}\nvar _darker = 0.7;\nexport { _darker as darker };\nvar _brighter = 1 / _darker;\nexport { _brighter as brighter };\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\".concat(reI, \",\").concat(reI, \",\").concat(reI, \"\\\\)$\")),\n reRgbPercent = new RegExp(\"^rgb\\\\(\".concat(reP, \",\").concat(reP, \",\").concat(reP, \"\\\\)$\")),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\".concat(reI, \",\").concat(reI, \",\").concat(reI, \",\").concat(reN, \"\\\\)$\")),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\".concat(reP, \",\").concat(reP, \",\").concat(reP, \",\").concat(reN, \"\\\\)$\")),\n reHslPercent = new RegExp(\"^hsl\\\\(\".concat(reN, \",\").concat(reP, \",\").concat(reP, \"\\\\)$\")),\n reHslaPercent = new RegExp(\"^hsla\\\\(\".concat(reN, \",\").concat(reP, \",\").concat(reP, \",\").concat(reN, \"\\\\)$\"));\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\ndefine(Color, color, {\n copy: function copy(channels) {\n return Object.assign(new this.constructor(), this, channels);\n },\n displayable: function displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex,\n // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb(m >> 8 & 0xf | m >> 4 & 0xf0, m >> 4 & 0xf | m & 0xf0, (m & 0xf) << 4 | m & 0xf, 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba(m >> 12 & 0xf | m >> 8 & 0xf0, m >> 8 & 0xf | m >> 4 & 0xf0, m >> 4 & 0xf | m & 0xf0, ((m & 0xf) << 4 | m & 0xf) / 0xff) // #f000\n : null // invalid hex\n ) : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0) : null;\n}\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb();\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\ndefine(Rgb, rgb, extend(Color, {\n brighter: function brighter(k) {\n k = k == null ? _brighter : Math.pow(_brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function darker(k) {\n k = k == null ? _darker : Math.pow(_darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function rgb() {\n return this;\n },\n clamp: function clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable: function displayable() {\n return -0.5 <= this.r && this.r < 255.5 && -0.5 <= this.g && this.g < 255.5 && -0.5 <= this.b && this.b < 255.5 && 0 <= this.opacity && this.opacity <= 1;\n },\n hex: rgb_formatHex,\n // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\nfunction rgb_formatHex() {\n return \"#\".concat(hex(this.r)).concat(hex(this.g)).concat(hex(this.b));\n}\nfunction rgb_formatHex8() {\n return \"#\".concat(hex(this.r)).concat(hex(this.g)).concat(hex(this.b)).concat(hex((isNaN(this.opacity) ? 1 : this.opacity) * 255));\n}\nfunction rgb_formatRgb() {\n var a = clampa(this.opacity);\n return \"\".concat(a === 1 ? \"rgb(\" : \"rgba(\").concat(clampi(this.r), \", \").concat(clampi(this.g), \", \").concat(clampi(this.b)).concat(a === 1 ? \")\" : \", \".concat(a, \")\"));\n}\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;else if (l <= 0 || l >= 1) h = s = NaN;else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl();\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;else if (g === max) h = (b - r) / s + 2;else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\ndefine(Hsl, hsl, extend(Color, {\n brighter: function brighter(k) {\n k = k == null ? _brighter : Math.pow(_brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function darker(k) {\n k = k == null ? _darker : Math.pow(_darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2), hsl2rgb(h, m1, m2), hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2), this.opacity);\n },\n clamp: function clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable: function displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s)) && 0 <= this.l && this.l <= 1 && 0 <= this.opacity && this.opacity <= 1;\n },\n formatHsl: function formatHsl() {\n var a = clampa(this.opacity);\n return \"\".concat(a === 1 ? \"hsl(\" : \"hsla(\").concat(clamph(this.h), \", \").concat(clampt(this.s) * 100, \"%, \").concat(clampt(this.l) * 100, \"%\").concat(a === 1 ? \")\" : \", \".concat(a, \")\"));\n }\n}));\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60 : h < 180 ? m2 : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60 : m1) * 255;\n}","export default function (constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}","import value from \"./value.js\";\nimport numberArray, { isNumberArray } from \"./numberArray.js\";\nexport default function (a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n return function (t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1,\n t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0 + (4 - 6 * t2 + 3 * t3) * v1 + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2 + t3 * v3) / 6;\n}\nexport default function (values) {\n var n = values.length - 1;\n return function (t) {\n var i = t <= 0 ? t = 0 : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}","import { basis } from \"./basis.js\";\nexport default function (values) {\n var n = values.length;\n return function (t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}","import constant from \"./constant.js\";\nfunction linear(a, d) {\n return function (t) {\n return a + t * d;\n };\n}\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function (t) {\n return Math.pow(a + t * b, y);\n };\n}\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function (a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}","export default (function (x) {\n return function () {\n return x;\n };\n});","export default function (a, b) {\n var d = new Date();\n return a = +a, b = +b, function (t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}","export default function (a, b) {\n return a = +a, b = +b, function (t) {\n return a * (1 - t) + b * t;\n };\n}","export default function (a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function (t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}","import value from \"./value.js\";\nexport default function (a, b) {\n var i = {},\n c = {},\n k;\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n return function (t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}","import { rgb as colorRgb } from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, { gamma } from \"./color.js\";\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function (t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n rgb.gamma = rgbGamma;\n return rgb;\n})(1);\nfunction rgbSpline(spline) {\n return function (colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i,\n color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function (t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);","import number from \"./number.js\";\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\nfunction zero(b) {\n return function () {\n return b;\n };\n}\nfunction one(b) {\n return function (t) {\n return b(t) + \"\";\n };\n}\nexport default function (a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0,\n // scan index for next number in b\n am,\n // current match in a\n bm,\n // current match in b\n bs,\n // string preceding current number in b, if any\n i = -1,\n // index in s\n s = [],\n // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a)) && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) {\n // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) {\n // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else {\n // interpolate non-matching numbers\n s[++i] = null;\n q.push({\n i: i,\n x: number(am, bm)\n });\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? q[0] ? one(q[0].x) : zero(b) : (b = q.length, function (t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}","import { color } from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport { genericArray } from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, { isNumberArray } from \"./numberArray.js\";\nexport default function (a, b) {\n var t = typeof b,\n c;\n return b == null || t === \"boolean\" ? constant(b) : (t === \"number\" ? number : t === \"string\" ? (c = color(b)) ? (b = c, rgb) : string : b instanceof color ? rgb : b instanceof Date ? date : isNumberArray(b) ? numberArray : Array.isArray(b) ? genericArray : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object : number)(a, b);\n}","// https://github.com/HarryStevens/d3-regression#readme Version 1.3.10. Copyright 2022 Harry Stevens.\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : (global = global || self, factory(global.d3 = {}));\n})(this, function (exports) {\n 'use strict';\n\n function _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n }\n function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n }\n function _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\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 return _arr;\n }\n function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n\n // Adapted from vega-statistics by Jeffrey Heer\n // License: https://github.com/vega/vega/blob/f058b099decad9db78301405dd0d2e9d8ba3d51a/LICENSE\n // Source: https://github.com/vega/vega/blob/f058b099decad9db78301405dd0d2e9d8ba3d51a/packages/vega-statistics/src/regression/points.js\n function points(data, x, y, sort) {\n data = data.filter(function (d, i) {\n var u = x(d, i),\n v = y(d, i);\n return u != null && isFinite(u) && v != null && isFinite(v);\n });\n if (sort) {\n data.sort(function (a, b) {\n return x(a) - x(b);\n });\n }\n var n = data.length,\n X = new Float64Array(n),\n Y = new Float64Array(n); // extract values, calculate means\n\n var ux = 0,\n uy = 0,\n xv,\n yv,\n d;\n for (var i = 0; i < n;) {\n d = data[i];\n X[i] = xv = +x(d, i, data);\n Y[i] = yv = +y(d, i, data);\n ++i;\n ux += (xv - ux) / i;\n uy += (yv - uy) / i;\n } // mean center the data\n\n for (var _i = 0; _i < n; ++_i) {\n X[_i] -= ux;\n Y[_i] -= uy;\n }\n return [X, Y, ux, uy];\n }\n function visitPoints(data, x, y, cb) {\n var iterations = 0;\n for (var i = 0, n = data.length; i < n; i++) {\n var d = data[i],\n dx = +x(d, i, data),\n dy = +y(d, i, data);\n if (dx != null && isFinite(dx) && dy != null && isFinite(dy)) {\n cb(dx, dy, iterations++);\n }\n }\n }\n\n // return the coefficient of determination, or R squared.\n\n function determination(data, x, y, uY, predict) {\n var SSE = 0,\n SST = 0;\n visitPoints(data, x, y, function (dx, dy) {\n var sse = dy - predict(dx),\n sst = dy - uY;\n SSE += sse * sse;\n SST += sst * sst;\n });\n return 1 - SSE / SST;\n }\n\n // Returns the angle of a line in degrees.\n function angle(line) {\n return Math.atan2(line[1][1] - line[0][1], line[1][0] - line[0][0]) * 180 / Math.PI;\n } // Returns the midpoint of a line.\n\n function midpoint(line) {\n return [(line[0][0] + line[1][0]) / 2, (line[0][1] + line[1][1]) / 2];\n }\n\n // returns a smooth line.\n\n function interpose(xmin, xmax, predict) {\n var l = Math.log(xmax - xmin) * Math.LOG10E + 1 | 0;\n var precision = 1 * Math.pow(10, -l / 2 - 1),\n maxIter = 1e4;\n var points = [px(xmin), px(xmax)],\n iter = 0;\n while (find(points) && iter < maxIter) {}\n return points;\n function px(x) {\n return [x, predict(x)];\n }\n function find(points) {\n iter++;\n var n = points.length;\n var found = false;\n for (var i = 0; i < n - 1; i++) {\n var p0 = points[i],\n p1 = points[i + 1],\n m = midpoint([p0, p1]),\n mp = px(m[0]),\n a0 = angle([p0, m]),\n a1 = angle([p0, mp]),\n a = Math.abs(a0 - a1);\n if (a > precision) {\n points.splice(i + 1, 0, mp);\n found = true;\n }\n }\n return found;\n }\n }\n\n // Ordinary Least Squares from vega-statistics by Jeffrey Heer\n // License: https://github.com/vega/vega/blob/f058b099decad9db78301405dd0d2e9d8ba3d51a/LICENSE\n // Source: https://github.com/vega/vega/blob/f058b099decad9db78301405dd0d2e9d8ba3d51a/packages/vega-statistics/src/regression/ols.js\n function ols(uX, uY, uXY, uX2) {\n var delta = uX2 - uX * uX,\n slope = Math.abs(delta) < 1e-24 ? 0 : (uXY - uX * uY) / delta,\n intercept = uY - slope * uX;\n return [intercept, slope];\n }\n function exponential() {\n var x = function x(d) {\n return d[0];\n },\n y = function y(d) {\n return d[1];\n },\n domain;\n function exponential(data) {\n var n = 0,\n Y = 0,\n YL = 0,\n XY = 0,\n XYL = 0,\n X2Y = 0,\n xmin = domain ? +domain[0] : Infinity,\n xmax = domain ? +domain[1] : -Infinity;\n visitPoints(data, x, y, function (dx, dy) {\n var ly = Math.log(dy),\n xy = dx * dy;\n ++n;\n Y += (dy - Y) / n;\n XY += (xy - XY) / n;\n X2Y += (dx * xy - X2Y) / n;\n YL += (dy * ly - YL) / n;\n XYL += (xy * ly - XYL) / n;\n if (!domain) {\n if (dx < xmin) xmin = dx;\n if (dx > xmax) xmax = dx;\n }\n });\n var _ols = ols(XY / Y, YL / Y, XYL / Y, X2Y / Y),\n _ols2 = _slicedToArray(_ols, 2),\n a = _ols2[0],\n b = _ols2[1];\n a = Math.exp(a);\n var fn = function fn(x) {\n return a * Math.exp(b * x);\n },\n out = interpose(xmin, xmax, fn);\n out.a = a;\n out.b = b;\n out.predict = fn;\n out.rSquared = determination(data, x, y, Y, fn);\n return out;\n }\n exponential.domain = function (arr) {\n return arguments.length ? (domain = arr, exponential) : domain;\n };\n exponential.x = function (fn) {\n return arguments.length ? (x = fn, exponential) : x;\n };\n exponential.y = function (fn) {\n return arguments.length ? (y = fn, exponential) : y;\n };\n return exponential;\n }\n function linear() {\n var x = function x(d) {\n return d[0];\n },\n y = function y(d) {\n return d[1];\n },\n domain;\n function linear(data) {\n var n = 0,\n X = 0,\n // sum of x\n Y = 0,\n // sum of y\n XY = 0,\n // sum of x * y\n X2 = 0,\n // sum of x * x\n xmin = domain ? +domain[0] : Infinity,\n xmax = domain ? +domain[1] : -Infinity;\n visitPoints(data, x, y, function (dx, dy) {\n ++n;\n X += (dx - X) / n;\n Y += (dy - Y) / n;\n XY += (dx * dy - XY) / n;\n X2 += (dx * dx - X2) / n;\n if (!domain) {\n if (dx < xmin) xmin = dx;\n if (dx > xmax) xmax = dx;\n }\n });\n var _ols = ols(X, Y, XY, X2),\n _ols2 = _slicedToArray(_ols, 2),\n intercept = _ols2[0],\n slope = _ols2[1],\n fn = function fn(x) {\n return slope * x + intercept;\n },\n out = [[xmin, fn(xmin)], [xmax, fn(xmax)]];\n out.a = slope;\n out.b = intercept;\n out.predict = fn;\n out.rSquared = determination(data, x, y, Y, fn);\n return out;\n }\n linear.domain = function (arr) {\n return arguments.length ? (domain = arr, linear) : domain;\n };\n linear.x = function (fn) {\n return arguments.length ? (x = fn, linear) : x;\n };\n linear.y = function (fn) {\n return arguments.length ? (y = fn, linear) : y;\n };\n return linear;\n }\n\n // Returns the medium value of an array of numbers.\n function median(arr) {\n arr.sort(function (a, b) {\n return a - b;\n });\n var i = arr.length / 2;\n return i % 1 === 0 ? (arr[i - 1] + arr[i]) / 2 : arr[Math.floor(i)];\n }\n var maxiters = 2,\n epsilon = 1e-12;\n function loess() {\n var x = function x(d) {\n return d[0];\n },\n y = function y(d) {\n return d[1];\n },\n bandwidth = .3;\n function loess(data) {\n var _points = points(data, x, y, true),\n _points2 = _slicedToArray(_points, 4),\n xv = _points2[0],\n yv = _points2[1],\n ux = _points2[2],\n uy = _points2[3],\n n = xv.length,\n bw = Math.max(2, ~~(bandwidth * n)),\n yhat = new Float64Array(n),\n residuals = new Float64Array(n),\n robustWeights = new Float64Array(n).fill(1);\n for (var iter = -1; ++iter <= maxiters;) {\n var interval = [0, bw - 1];\n for (var i = 0; i < n; ++i) {\n var dx = xv[i],\n i0 = interval[0],\n i1 = interval[1],\n edge = dx - xv[i0] > xv[i1] - dx ? i0 : i1;\n var W = 0,\n X = 0,\n Y = 0,\n XY = 0,\n X2 = 0,\n denom = 1 / Math.abs(xv[edge] - dx || 1); // Avoid singularity\n\n for (var k = i0; k <= i1; ++k) {\n var xk = xv[k],\n yk = yv[k],\n w = tricube(Math.abs(dx - xk) * denom) * robustWeights[k],\n xkw = xk * w;\n W += w;\n X += xkw;\n Y += yk * w;\n XY += yk * xkw;\n X2 += xk * xkw;\n } // Linear regression fit\n\n var _ols = ols(X / W, Y / W, XY / W, X2 / W),\n _ols2 = _slicedToArray(_ols, 2),\n a = _ols2[0],\n b = _ols2[1];\n yhat[i] = a + b * dx;\n residuals[i] = Math.abs(yv[i] - yhat[i]);\n updateInterval(xv, i + 1, interval);\n }\n if (iter === maxiters) {\n break;\n }\n var medianResidual = median(residuals);\n if (Math.abs(medianResidual) < epsilon) break;\n for (var _i = 0, arg, _w; _i < n; ++_i) {\n arg = residuals[_i] / (6 * medianResidual); // Default to epsilon (rather than zero) for large deviations\n // Keeping weights tiny but non-zero prevents singularites\n\n robustWeights[_i] = arg >= 1 ? epsilon : (_w = 1 - arg * arg) * _w;\n }\n }\n return output(xv, yhat, ux, uy);\n }\n loess.bandwidth = function (bw) {\n return arguments.length ? (bandwidth = bw, loess) : bandwidth;\n };\n loess.x = function (fn) {\n return arguments.length ? (x = fn, loess) : x;\n };\n loess.y = function (fn) {\n return arguments.length ? (y = fn, loess) : y;\n };\n return loess;\n } // Weighting kernel for local regression\n\n function tricube(x) {\n return (x = 1 - x * x * x) * x * x;\n } // Advance sliding window interval of nearest neighbors\n\n function updateInterval(xv, i, interval) {\n var val = xv[i],\n left = interval[0],\n right = interval[1] + 1;\n if (right >= xv.length) return; // Step right if distance to new right edge is <= distance to old left edge\n // Step when distance is equal to ensure movement over duplicate x values\n\n while (i > left && xv[right] - val <= val - xv[left]) {\n interval[0] = ++left;\n interval[1] = right;\n ++right;\n }\n } // Generate smoothed output points\n // Average points with repeated x values\n\n function output(xv, yhat, ux, uy) {\n var n = xv.length,\n out = [];\n var i = 0,\n cnt = 0,\n prev = [],\n v;\n for (; i < n; ++i) {\n v = xv[i] + ux;\n if (prev[0] === v) {\n // Average output values via online update\n prev[1] += (yhat[i] - prev[1]) / ++cnt;\n } else {\n // Add new output point\n cnt = 0;\n prev[1] += uy;\n prev = [v, yhat[i]];\n out.push(prev);\n }\n }\n prev[1] += uy;\n return out;\n }\n function logarithmic() {\n var x = function x(d) {\n return d[0];\n },\n y = function y(d) {\n return d[1];\n },\n base = Math.E,\n domain;\n function logarithmic(data) {\n var n = 0,\n X = 0,\n Y = 0,\n XY = 0,\n X2 = 0,\n xmin = domain ? +domain[0] : Infinity,\n xmax = domain ? +domain[1] : -Infinity,\n lb = Math.log(base);\n visitPoints(data, x, y, function (dx, dy) {\n var lx = Math.log(dx) / lb;\n ++n;\n X += (lx - X) / n;\n Y += (dy - Y) / n;\n XY += (lx * dy - XY) / n;\n X2 += (lx * lx - X2) / n;\n if (!domain) {\n if (dx < xmin) xmin = dx;\n if (dx > xmax) xmax = dx;\n }\n });\n var _ols = ols(X, Y, XY, X2),\n _ols2 = _slicedToArray(_ols, 2),\n intercept = _ols2[0],\n slope = _ols2[1],\n fn = function fn(x) {\n return slope * Math.log(x) / lb + intercept;\n },\n out = interpose(xmin, xmax, fn);\n out.a = slope;\n out.b = intercept;\n out.predict = fn;\n out.rSquared = determination(data, x, y, Y, fn);\n return out;\n }\n logarithmic.domain = function (arr) {\n return arguments.length ? (domain = arr, logarithmic) : domain;\n };\n logarithmic.x = function (fn) {\n return arguments.length ? (x = fn, logarithmic) : x;\n };\n logarithmic.y = function (fn) {\n return arguments.length ? (y = fn, logarithmic) : y;\n };\n logarithmic.base = function (n) {\n return arguments.length ? (base = n, logarithmic) : base;\n };\n return logarithmic;\n }\n function quad() {\n var x = function x(d) {\n return d[0];\n },\n y = function y(d) {\n return d[1];\n },\n domain;\n function quadratic(data) {\n var _points = points(data, x, y),\n _points2 = _slicedToArray(_points, 4),\n xv = _points2[0],\n yv = _points2[1],\n ux = _points2[2],\n uy = _points2[3],\n n = xv.length;\n var X2 = 0,\n X3 = 0,\n X4 = 0,\n XY = 0,\n X2Y = 0,\n i,\n dx,\n dy,\n x2;\n for (i = 0; i < n;) {\n dx = xv[i];\n dy = yv[i++];\n x2 = dx * dx;\n X2 += (x2 - X2) / i;\n X3 += (x2 * dx - X3) / i;\n X4 += (x2 * x2 - X4) / i;\n XY += (dx * dy - XY) / i;\n X2Y += (x2 * dy - X2Y) / i;\n }\n var Y = 0,\n n0 = 0,\n xmin = domain ? +domain[0] : Infinity,\n xmax = domain ? +domain[1] : -Infinity;\n visitPoints(data, x, y, function (dx, dy) {\n n0++;\n Y += (dy - Y) / n0;\n if (!domain) {\n if (dx < xmin) xmin = dx;\n if (dx > xmax) xmax = dx;\n }\n });\n var X2X2 = X4 - X2 * X2,\n d = X2 * X2X2 - X3 * X3,\n a = (X2Y * X2 - XY * X3) / d,\n b = (XY * X2X2 - X2Y * X3) / d,\n c = -a * X2,\n fn = function fn(x) {\n x = x - ux;\n return a * x * x + b * x + c + uy;\n };\n var out = interpose(xmin, xmax, fn);\n out.a = a;\n out.b = b - 2 * a * ux;\n out.c = c - b * ux + a * ux * ux + uy;\n out.predict = fn;\n out.rSquared = determination(data, x, y, Y, fn);\n return out;\n }\n quadratic.domain = function (arr) {\n return arguments.length ? (domain = arr, quadratic) : domain;\n };\n quadratic.x = function (fn) {\n return arguments.length ? (x = fn, quadratic) : x;\n };\n quadratic.y = function (fn) {\n return arguments.length ? (y = fn, quadratic) : y;\n };\n return quadratic;\n }\n\n // Source: https://github.com/Tom-Alexander/regression-js/blob/master/src/regression.js#L246\n // License: https://github.com/Tom-Alexander/regression-js/blob/master/LICENSE\n // ...with ideas from vega-statistics by Jeffrey Heer\n // Source: https://github.com/vega/vega/blob/f21cb8792b4e0cbe2b1a3fd44b0f5db370dbaadb/packages/vega-statistics/src/regression/poly.js\n // License: https://github.com/vega/vega/blob/f058b099decad9db78301405dd0d2e9d8ba3d51a/LICENSE\n\n function polynomial() {\n var x = function x(d) {\n return d[0];\n },\n y = function y(d) {\n return d[1];\n },\n order = 3,\n domain;\n function polynomial(data) {\n // Use more efficient methods for lower orders\n if (order === 1) {\n var o = linear().x(x).y(y).domain(domain)(data);\n o.coefficients = [o.b, o.a];\n delete o.a;\n delete o.b;\n return o;\n }\n if (order === 2) {\n var _o = quad().x(x).y(y).domain(domain)(data);\n _o.coefficients = [_o.c, _o.b, _o.a];\n delete _o.a;\n delete _o.b;\n delete _o.c;\n return _o;\n }\n var _points = points(data, x, y),\n _points2 = _slicedToArray(_points, 4),\n xv = _points2[0],\n yv = _points2[1],\n ux = _points2[2],\n uy = _points2[3],\n n = xv.length,\n lhs = [],\n rhs = [],\n k = order + 1;\n var Y = 0,\n n0 = 0,\n xmin = domain ? +domain[0] : Infinity,\n xmax = domain ? +domain[1] : -Infinity;\n visitPoints(data, x, y, function (dx, dy) {\n ++n0;\n Y += (dy - Y) / n0;\n if (!domain) {\n if (dx < xmin) xmin = dx;\n if (dx > xmax) xmax = dx;\n }\n });\n var i, j, l, v, c;\n for (i = 0; i < k; ++i) {\n for (l = 0, v = 0; l < n; ++l) {\n v += Math.pow(xv[l], i) * yv[l];\n }\n lhs.push(v);\n c = new Float64Array(k);\n for (j = 0; j < k; ++j) {\n for (l = 0, v = 0; l < n; ++l) {\n v += Math.pow(xv[l], i + j);\n }\n c[j] = v;\n }\n rhs.push(c);\n }\n rhs.push(lhs);\n var coef = gaussianElimination(rhs),\n fn = function fn(x) {\n x -= ux;\n var y = uy + coef[0] + coef[1] * x + coef[2] * x * x;\n for (i = 3; i < k; ++i) {\n y += coef[i] * Math.pow(x, i);\n }\n return y;\n },\n out = interpose(xmin, xmax, fn);\n out.coefficients = uncenter(k, coef, -ux, uy);\n out.predict = fn;\n out.rSquared = determination(data, x, y, Y, fn);\n return out;\n }\n polynomial.domain = function (arr) {\n return arguments.length ? (domain = arr, polynomial) : domain;\n };\n polynomial.x = function (fn) {\n return arguments.length ? (x = fn, polynomial) : x;\n };\n polynomial.y = function (fn) {\n return arguments.length ? (y = fn, polynomial) : y;\n };\n polynomial.order = function (n) {\n return arguments.length ? (order = n, polynomial) : order;\n };\n return polynomial;\n }\n function uncenter(k, a, x, y) {\n var z = Array(k);\n var i, j, v, c; // initialize to zero\n\n for (i = 0; i < k; ++i) {\n z[i] = 0;\n } // polynomial expansion\n\n for (i = k - 1; i >= 0; --i) {\n v = a[i];\n c = 1;\n z[i] += v;\n for (j = 1; j <= i; ++j) {\n c *= (i + 1 - j) / j; // binomial coefficent\n\n z[i - j] += v * Math.pow(x, j) * c;\n }\n } // bias term\n\n z[0] += y;\n return z;\n } // Given an array for a two-dimensional matrix and the polynomial order,\n // solve A * x = b using Gaussian elimination.\n\n function gaussianElimination(matrix) {\n var n = matrix.length - 1,\n coef = [];\n var i, j, k, r, t;\n for (i = 0; i < n; ++i) {\n r = i; // max row\n\n for (j = i + 1; j < n; ++j) {\n if (Math.abs(matrix[i][j]) > Math.abs(matrix[i][r])) {\n r = j;\n }\n }\n for (k = i; k < n + 1; ++k) {\n t = matrix[k][i];\n matrix[k][i] = matrix[k][r];\n matrix[k][r] = t;\n }\n for (j = i + 1; j < n; ++j) {\n for (k = n; k >= i; k--) {\n matrix[k][j] -= matrix[k][i] * matrix[i][j] / matrix[i][i];\n }\n }\n }\n for (j = n - 1; j >= 0; --j) {\n t = 0;\n for (k = j + 1; k < n; ++k) {\n t += matrix[k][j] * coef[k];\n }\n coef[j] = (matrix[n][j] - t) / matrix[j][j];\n }\n return coef;\n }\n function power() {\n var x = function x(d) {\n return d[0];\n },\n y = function y(d) {\n return d[1];\n },\n domain;\n function power(data) {\n var n = 0,\n X = 0,\n Y = 0,\n XY = 0,\n X2 = 0,\n YS = 0,\n xmin = domain ? +domain[0] : Infinity,\n xmax = domain ? +domain[1] : -Infinity;\n visitPoints(data, x, y, function (dx, dy) {\n var lx = Math.log(dx),\n ly = Math.log(dy);\n ++n;\n X += (lx - X) / n;\n Y += (ly - Y) / n;\n XY += (lx * ly - XY) / n;\n X2 += (lx * lx - X2) / n;\n YS += (dy - YS) / n;\n if (!domain) {\n if (dx < xmin) xmin = dx;\n if (dx > xmax) xmax = dx;\n }\n });\n var _ols = ols(X, Y, XY, X2),\n _ols2 = _slicedToArray(_ols, 2),\n a = _ols2[0],\n b = _ols2[1];\n a = Math.exp(a);\n var fn = function fn(x) {\n return a * Math.pow(x, b);\n },\n out = interpose(xmin, xmax, fn);\n out.a = a;\n out.b = b;\n out.predict = fn;\n out.rSquared = determination(data, x, y, YS, fn);\n return out;\n }\n power.domain = function (arr) {\n return arguments.length ? (domain = arr, power) : domain;\n };\n power.x = function (fn) {\n return arguments.length ? (x = fn, power) : x;\n };\n power.y = function (fn) {\n return arguments.length ? (y = fn, power) : y;\n };\n return power;\n }\n exports.regressionExp = exponential;\n exports.regressionLinear = linear;\n exports.regressionLoess = loess;\n exports.regressionLog = logarithmic;\n exports.regressionPoly = polynomial;\n exports.regressionPow = power;\n exports.regressionQuad = quad;\n Object.defineProperty(exports, '__esModule', {\n value: true\n });\n});","var __spreadArray = this && this.__spreadArray || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar BrowserInfo = /** @class */function () {\n function BrowserInfo(name, version, os) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.type = 'browser';\n }\n return BrowserInfo;\n}();\nexport { BrowserInfo };\nvar NodeInfo = /** @class */function () {\n function NodeInfo(version) {\n this.version = version;\n this.type = 'node';\n this.name = 'node';\n this.os = process.platform;\n }\n return NodeInfo;\n}();\nexport { NodeInfo };\nvar SearchBotDeviceInfo = /** @class */function () {\n function SearchBotDeviceInfo(name, version, os, bot) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.bot = bot;\n this.type = 'bot-device';\n }\n return SearchBotDeviceInfo;\n}();\nexport { SearchBotDeviceInfo };\nvar BotInfo = /** @class */function () {\n function BotInfo() {\n this.type = 'bot';\n this.bot = true; // NOTE: deprecated test name instead\n this.name = 'bot';\n this.version = null;\n this.os = null;\n }\n return BotInfo;\n}();\nexport { BotInfo };\nvar ReactNativeInfo = /** @class */function () {\n function ReactNativeInfo() {\n this.type = 'react-native';\n this.name = 'react-native';\n this.version = null;\n this.os = null;\n }\n return ReactNativeInfo;\n}();\nexport { ReactNativeInfo };\n// tslint:disable-next-line:max-line-length\nvar SEARCHBOX_UA_REGEX = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/;\nvar SEARCHBOT_OS_REGEX = /(nuhk|curl|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\\ Jeeves\\/Teoma|ia_archiver)/;\nvar REQUIRED_VERSION_PARTS = 3;\nvar userAgentRules = [['aol', /AOLShield\\/([0-9\\._]+)/], ['edge', /Edge\\/([0-9\\._]+)/], ['edge-ios', /EdgiOS\\/([0-9\\._]+)/], ['yandexbrowser', /YaBrowser\\/([0-9\\._]+)/], ['kakaotalk', /KAKAOTALK\\s([0-9\\.]+)/], ['samsung', /SamsungBrowser\\/([0-9\\.]+)/], ['silk', /\\bSilk\\/([0-9._-]+)\\b/], ['miui', /MiuiBrowser\\/([0-9\\.]+)$/], ['beaker', /BeakerBrowser\\/([0-9\\.]+)/], ['edge-chromium', /EdgA?\\/([0-9\\.]+)/], ['chromium-webview', /(?!Chrom.*OPR)wv\\).*Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/], ['chrome', /(?!Chrom.*OPR)Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/], ['phantomjs', /PhantomJS\\/([0-9\\.]+)(:?\\s|$)/], ['crios', /CriOS\\/([0-9\\.]+)(:?\\s|$)/], ['firefox', /Firefox\\/([0-9\\.]+)(?:\\s|$)/], ['fxios', /FxiOS\\/([0-9\\.]+)/], ['opera-mini', /Opera Mini.*Version\\/([0-9\\.]+)/], ['opera', /Opera\\/([0-9\\.]+)(?:\\s|$)/], ['opera', /OPR\\/([0-9\\.]+)(:?\\s|$)/], ['pie', /^Microsoft Pocket Internet Explorer\\/(\\d+\\.\\d+)$/], ['pie', /^Mozilla\\/\\d\\.\\d+\\s\\(compatible;\\s(?:MSP?IE|MSInternet Explorer) (\\d+\\.\\d+);.*Windows CE.*\\)$/], ['netfront', /^Mozilla\\/\\d\\.\\d+.*NetFront\\/(\\d.\\d)/], ['ie', /Trident\\/7\\.0.*rv\\:([0-9\\.]+).*\\).*Gecko$/], ['ie', /MSIE\\s([0-9\\.]+);.*Trident\\/[4-7].0/], ['ie', /MSIE\\s(7\\.0)/], ['bb10', /BB10;\\sTouch.*Version\\/([0-9\\.]+)/], ['android', /Android\\s([0-9\\.]+)/], ['ios', /Version\\/([0-9\\._]+).*Mobile.*Safari.*/], ['safari', /Version\\/([0-9\\._]+).*Safari/], ['facebook', /FB[AS]V\\/([0-9\\.]+)/], ['instagram', /Instagram\\s([0-9\\.]+)/], ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Mobile/], ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Gecko\\)$/], ['curl', /^curl\\/([0-9\\.]+)$/], ['searchbot', SEARCHBOX_UA_REGEX]];\nvar operatingSystemRules = [['iOS', /iP(hone|od|ad)/], ['Android OS', /Android/], ['BlackBerry OS', /BlackBerry|BB10/], ['Windows Mobile', /IEMobile/], ['Amazon OS', /Kindle/], ['Windows 3.11', /Win16/], ['Windows 95', /(Windows 95)|(Win95)|(Windows_95)/], ['Windows 98', /(Windows 98)|(Win98)/], ['Windows 2000', /(Windows NT 5.0)|(Windows 2000)/], ['Windows XP', /(Windows NT 5.1)|(Windows XP)/], ['Windows Server 2003', /(Windows NT 5.2)/], ['Windows Vista', /(Windows NT 6.0)/], ['Windows 7', /(Windows NT 6.1)/], ['Windows 8', /(Windows NT 6.2)/], ['Windows 8.1', /(Windows NT 6.3)/], ['Windows 10', /(Windows NT 10.0)/], ['Windows ME', /Windows ME/], ['Windows CE', /Windows CE|WinCE|Microsoft Pocket Internet Explorer/], ['Open BSD', /OpenBSD/], ['Sun OS', /SunOS/], ['Chrome OS', /CrOS/], ['Linux', /(Linux)|(X11)/], ['Mac OS', /(Mac_PowerPC)|(Macintosh)/], ['QNX', /QNX/], ['BeOS', /BeOS/], ['OS/2', /OS\\/2/]];\nexport function detect(userAgent) {\n if (!!userAgent) {\n return parseUserAgent(userAgent);\n }\n if (typeof document === 'undefined' && typeof navigator !== 'undefined' && navigator.product === 'ReactNative') {\n return new ReactNativeInfo();\n }\n if (typeof navigator !== 'undefined') {\n return parseUserAgent(navigator.userAgent);\n }\n return getNodeVersion();\n}\nfunction matchUserAgent(ua) {\n // opted for using reduce here rather than Array#first with a regex.test call\n // this is primarily because using the reduce we only perform the regex\n // execution once rather than once for the test and for the exec again below\n // probably something that needs to be benchmarked though\n return ua !== '' && userAgentRules.reduce(function (matched, _a) {\n var browser = _a[0],\n regex = _a[1];\n if (matched) {\n return matched;\n }\n var uaMatch = regex.exec(ua);\n return !!uaMatch && [browser, uaMatch];\n }, false);\n}\nexport function browserName(ua) {\n var data = matchUserAgent(ua);\n return data ? data[0] : null;\n}\nexport function parseUserAgent(ua) {\n var matchedRule = matchUserAgent(ua);\n if (!matchedRule) {\n return null;\n }\n var name = matchedRule[0],\n match = matchedRule[1];\n if (name === 'searchbot') {\n return new BotInfo();\n }\n // Do not use RegExp for split operation as some browser do not support it (See: http://blog.stevenlevithan.com/archives/cross-browser-split)\n var versionParts = match[1] && match[1].split('.').join('_').split('_').slice(0, 3);\n if (versionParts) {\n if (versionParts.length < REQUIRED_VERSION_PARTS) {\n versionParts = __spreadArray(__spreadArray([], versionParts, true), createVersionParts(REQUIRED_VERSION_PARTS - versionParts.length), true);\n }\n } else {\n versionParts = [];\n }\n var version = versionParts.join('.');\n var os = detectOS(ua);\n var searchBotMatch = SEARCHBOT_OS_REGEX.exec(ua);\n if (searchBotMatch && searchBotMatch[1]) {\n return new SearchBotDeviceInfo(name, version, os, searchBotMatch[1]);\n }\n return new BrowserInfo(name, version, os);\n}\nexport function detectOS(ua) {\n for (var ii = 0, count = operatingSystemRules.length; ii < count; ii++) {\n var _a = operatingSystemRules[ii],\n os = _a[0],\n regex = _a[1];\n var match = regex.exec(ua);\n if (match) {\n return os;\n }\n }\n return null;\n}\nexport function getNodeVersion() {\n var isNode = typeof process !== 'undefined' && process.version;\n return isNode ? new NodeInfo(process.version.slice(1)) : null;\n}\nfunction createVersionParts(count) {\n var output = [];\n for (var ii = 0; ii < count; ii++) {\n output.push('0');\n }\n return output;\n}","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;) if (!equal(a[i], b[i])) return false;\n return true;\n }\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n for (i = length; i-- !== 0;) if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n if (!equal(a[key], b[key])) return false;\n }\n return true;\n }\n\n // true if both NaN, false otherwise\n return a !== a && b !== b;\n};","'use strict';\n\nmodule.exports = function (data, opts) {\n if (!opts) opts = {};\n if (typeof opts === 'function') opts = {\n cmp: opts\n };\n var cycles = typeof opts.cycles === 'boolean' ? opts.cycles : false;\n var cmp = opts.cmp && function (f) {\n return function (node) {\n return function (a, b) {\n var aobj = {\n key: a,\n value: node[a]\n };\n var bobj = {\n key: b,\n value: node[b]\n };\n return f(aobj, bobj);\n };\n };\n }(opts.cmp);\n var seen = [];\n return function stringify(node) {\n if (node && node.toJSON && typeof node.toJSON === 'function') {\n node = node.toJSON();\n }\n if (node === undefined) return;\n if (typeof node == 'number') return isFinite(node) ? '' + node : 'null';\n if (typeof node !== 'object') return JSON.stringify(node);\n var i, out;\n if (Array.isArray(node)) {\n out = '[';\n for (i = 0; i < node.length; i++) {\n if (i) out += ',';\n out += stringify(node[i]) || 'null';\n }\n return out + ']';\n }\n if (node === null) return 'null';\n if (seen.indexOf(node) !== -1) {\n if (cycles) return JSON.stringify('__cycle__');\n throw new TypeError('Converting circular structure to JSON');\n }\n var seenIndex = seen.push(node) - 1;\n var keys = Object.keys(node).sort(cmp && cmp(node));\n out = '';\n for (i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = stringify(node[key]);\n if (!value) continue;\n if (out) out += ',';\n out += JSON.stringify(key) + ':' + value;\n }\n seen.splice(seenIndex, 1);\n return '{' + out + '}';\n }(data);\n};","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : factory(global.fmin = global.fmin || {});\n})(this, function (exports) {\n 'use strict';\n\n /** finds the zeros of a function, given two starting points (which must\n * have opposite signs */\n function bisect(f, a, b, parameters) {\n parameters = parameters || {};\n var maxIterations = parameters.maxIterations || 100,\n tolerance = parameters.tolerance || 1e-10,\n fA = f(a),\n fB = f(b),\n delta = b - a;\n if (fA * fB > 0) {\n throw \"Initial bisect points must have opposite signs\";\n }\n if (fA === 0) return a;\n if (fB === 0) return b;\n for (var i = 0; i < maxIterations; ++i) {\n delta /= 2;\n var mid = a + delta,\n fMid = f(mid);\n if (fMid * fA >= 0) {\n a = mid;\n }\n if (Math.abs(delta) < tolerance || fMid === 0) {\n return mid;\n }\n }\n return a + delta;\n }\n\n // need some basic operations on vectors, rather than adding a dependency,\n // just define here\n function zeros(x) {\n var r = new Array(x);\n for (var i = 0; i < x; ++i) {\n r[i] = 0;\n }\n return r;\n }\n function zerosM(x, y) {\n return zeros(x).map(function () {\n return zeros(y);\n });\n }\n function dot(a, b) {\n var ret = 0;\n for (var i = 0; i < a.length; ++i) {\n ret += a[i] * b[i];\n }\n return ret;\n }\n function norm2(a) {\n return Math.sqrt(dot(a, a));\n }\n function scale(ret, value, c) {\n for (var i = 0; i < value.length; ++i) {\n ret[i] = value[i] * c;\n }\n }\n function weightedSum(ret, w1, v1, w2, v2) {\n for (var j = 0; j < ret.length; ++j) {\n ret[j] = w1 * v1[j] + w2 * v2[j];\n }\n }\n\n /** minimizes a function using the downhill simplex method */\n function nelderMead(f, x0, parameters) {\n parameters = parameters || {};\n var maxIterations = parameters.maxIterations || x0.length * 200,\n nonZeroDelta = parameters.nonZeroDelta || 1.05,\n zeroDelta = parameters.zeroDelta || 0.001,\n minErrorDelta = parameters.minErrorDelta || 1e-6,\n minTolerance = parameters.minErrorDelta || 1e-5,\n rho = parameters.rho !== undefined ? parameters.rho : 1,\n chi = parameters.chi !== undefined ? parameters.chi : 2,\n psi = parameters.psi !== undefined ? parameters.psi : -0.5,\n sigma = parameters.sigma !== undefined ? parameters.sigma : 0.5,\n maxDiff;\n\n // initialize simplex.\n var N = x0.length,\n simplex = new Array(N + 1);\n simplex[0] = x0;\n simplex[0].fx = f(x0);\n simplex[0].id = 0;\n for (var i = 0; i < N; ++i) {\n var point = x0.slice();\n point[i] = point[i] ? point[i] * nonZeroDelta : zeroDelta;\n simplex[i + 1] = point;\n simplex[i + 1].fx = f(point);\n simplex[i + 1].id = i + 1;\n }\n function updateSimplex(value) {\n for (var i = 0; i < value.length; i++) {\n simplex[N][i] = value[i];\n }\n simplex[N].fx = value.fx;\n }\n var sortOrder = function sortOrder(a, b) {\n return a.fx - b.fx;\n };\n var centroid = x0.slice(),\n reflected = x0.slice(),\n contracted = x0.slice(),\n expanded = x0.slice();\n for (var iteration = 0; iteration < maxIterations; ++iteration) {\n simplex.sort(sortOrder);\n if (parameters.history) {\n // copy the simplex (since later iterations will mutate) and\n // sort it to have a consistent order between iterations\n var sortedSimplex = simplex.map(function (x) {\n var state = x.slice();\n state.fx = x.fx;\n state.id = x.id;\n return state;\n });\n sortedSimplex.sort(function (a, b) {\n return a.id - b.id;\n });\n parameters.history.push({\n x: simplex[0].slice(),\n fx: simplex[0].fx,\n simplex: sortedSimplex\n });\n }\n maxDiff = 0;\n for (i = 0; i < N; ++i) {\n maxDiff = Math.max(maxDiff, Math.abs(simplex[0][i] - simplex[1][i]));\n }\n if (Math.abs(simplex[0].fx - simplex[N].fx) < minErrorDelta && maxDiff < minTolerance) {\n break;\n }\n\n // compute the centroid of all but the worst point in the simplex\n for (i = 0; i < N; ++i) {\n centroid[i] = 0;\n for (var j = 0; j < N; ++j) {\n centroid[i] += simplex[j][i];\n }\n centroid[i] /= N;\n }\n\n // reflect the worst point past the centroid and compute loss at reflected\n // point\n var worst = simplex[N];\n weightedSum(reflected, 1 + rho, centroid, -rho, worst);\n reflected.fx = f(reflected);\n\n // if the reflected point is the best seen, then possibly expand\n if (reflected.fx < simplex[0].fx) {\n weightedSum(expanded, 1 + chi, centroid, -chi, worst);\n expanded.fx = f(expanded);\n if (expanded.fx < reflected.fx) {\n updateSimplex(expanded);\n } else {\n updateSimplex(reflected);\n }\n }\n\n // if the reflected point is worse than the second worst, we need to\n // contract\n else if (reflected.fx >= simplex[N - 1].fx) {\n var shouldReduce = false;\n if (reflected.fx > worst.fx) {\n // do an inside contraction\n weightedSum(contracted, 1 + psi, centroid, -psi, worst);\n contracted.fx = f(contracted);\n if (contracted.fx < worst.fx) {\n updateSimplex(contracted);\n } else {\n shouldReduce = true;\n }\n } else {\n // do an outside contraction\n weightedSum(contracted, 1 - psi * rho, centroid, psi * rho, worst);\n contracted.fx = f(contracted);\n if (contracted.fx < reflected.fx) {\n updateSimplex(contracted);\n } else {\n shouldReduce = true;\n }\n }\n if (shouldReduce) {\n // if we don't contract here, we're done\n if (sigma >= 1) break;\n\n // do a reduction\n for (i = 1; i < simplex.length; ++i) {\n weightedSum(simplex[i], 1 - sigma, simplex[0], sigma, simplex[i]);\n simplex[i].fx = f(simplex[i]);\n }\n }\n } else {\n updateSimplex(reflected);\n }\n }\n simplex.sort(sortOrder);\n return {\n fx: simplex[0].fx,\n x: simplex[0]\n };\n }\n\n /// searches along line 'pk' for a point that satifies the wolfe conditions\n /// See 'Numerical Optimization' by Nocedal and Wright p59-60\n /// f : objective function\n /// pk : search direction\n /// current: object containing current gradient/loss\n /// next: output: contains next gradient/loss\n /// returns a: step size taken\n function wolfeLineSearch(f, pk, current, next, a, c1, c2) {\n var phi0 = current.fx,\n phiPrime0 = dot(current.fxprime, pk),\n phi = phi0,\n phi_old = phi0,\n phiPrime = phiPrime0,\n a0 = 0;\n a = a || 1;\n c1 = c1 || 1e-6;\n c2 = c2 || 0.1;\n function zoom(a_lo, a_high, phi_lo) {\n for (var iteration = 0; iteration < 16; ++iteration) {\n a = (a_lo + a_high) / 2;\n weightedSum(next.x, 1.0, current.x, a, pk);\n phi = next.fx = f(next.x, next.fxprime);\n phiPrime = dot(next.fxprime, pk);\n if (phi > phi0 + c1 * a * phiPrime0 || phi >= phi_lo) {\n a_high = a;\n } else {\n if (Math.abs(phiPrime) <= -c2 * phiPrime0) {\n return a;\n }\n if (phiPrime * (a_high - a_lo) >= 0) {\n a_high = a_lo;\n }\n a_lo = a;\n phi_lo = phi;\n }\n }\n return 0;\n }\n for (var iteration = 0; iteration < 10; ++iteration) {\n weightedSum(next.x, 1.0, current.x, a, pk);\n phi = next.fx = f(next.x, next.fxprime);\n phiPrime = dot(next.fxprime, pk);\n if (phi > phi0 + c1 * a * phiPrime0 || iteration && phi >= phi_old) {\n return zoom(a0, a, phi_old);\n }\n if (Math.abs(phiPrime) <= -c2 * phiPrime0) {\n return a;\n }\n if (phiPrime >= 0) {\n return zoom(a, a0, phi);\n }\n phi_old = phi;\n a0 = a;\n a *= 2;\n }\n return a;\n }\n function conjugateGradient(f, initial, params) {\n // allocate all memory up front here, keep out of the loop for perfomance\n // reasons\n var current = {\n x: initial.slice(),\n fx: 0,\n fxprime: initial.slice()\n },\n next = {\n x: initial.slice(),\n fx: 0,\n fxprime: initial.slice()\n },\n yk = initial.slice(),\n pk,\n temp,\n a = 1,\n maxIterations;\n params = params || {};\n maxIterations = params.maxIterations || initial.length * 20;\n current.fx = f(current.x, current.fxprime);\n pk = current.fxprime.slice();\n scale(pk, current.fxprime, -1);\n for (var i = 0; i < maxIterations; ++i) {\n a = wolfeLineSearch(f, pk, current, next, a);\n\n // todo: history in wrong spot?\n if (params.history) {\n params.history.push({\n x: current.x.slice(),\n fx: current.fx,\n fxprime: current.fxprime.slice(),\n alpha: a\n });\n }\n if (!a) {\n // faiiled to find point that satifies wolfe conditions.\n // reset direction for next iteration\n scale(pk, current.fxprime, -1);\n } else {\n // update direction using Polak–Ribiere CG method\n weightedSum(yk, 1, next.fxprime, -1, current.fxprime);\n var delta_k = dot(current.fxprime, current.fxprime),\n beta_k = Math.max(0, dot(yk, next.fxprime) / delta_k);\n weightedSum(pk, beta_k, pk, -1, next.fxprime);\n temp = current;\n current = next;\n next = temp;\n }\n if (norm2(current.fxprime) <= 1e-5) {\n break;\n }\n }\n if (params.history) {\n params.history.push({\n x: current.x.slice(),\n fx: current.fx,\n fxprime: current.fxprime.slice(),\n alpha: a\n });\n }\n return current;\n }\n function gradientDescent(f, initial, params) {\n params = params || {};\n var maxIterations = params.maxIterations || initial.length * 100,\n learnRate = params.learnRate || 0.001,\n current = {\n x: initial.slice(),\n fx: 0,\n fxprime: initial.slice()\n };\n for (var i = 0; i < maxIterations; ++i) {\n current.fx = f(current.x, current.fxprime);\n if (params.history) {\n params.history.push({\n x: current.x.slice(),\n fx: current.fx,\n fxprime: current.fxprime.slice()\n });\n }\n weightedSum(current.x, 1, current.x, -learnRate, current.fxprime);\n if (norm2(current.fxprime) <= 1e-5) {\n break;\n }\n }\n return current;\n }\n function gradientDescentLineSearch(f, initial, params) {\n params = params || {};\n var current = {\n x: initial.slice(),\n fx: 0,\n fxprime: initial.slice()\n },\n next = {\n x: initial.slice(),\n fx: 0,\n fxprime: initial.slice()\n },\n maxIterations = params.maxIterations || initial.length * 100,\n learnRate = params.learnRate || 1,\n pk = initial.slice(),\n c1 = params.c1 || 1e-3,\n c2 = params.c2 || 0.1,\n temp,\n functionCalls = [];\n if (params.history) {\n // wrap the function call to track linesearch samples\n var inner = f;\n f = function f(x, fxprime) {\n functionCalls.push(x.slice());\n return inner(x, fxprime);\n };\n }\n current.fx = f(current.x, current.fxprime);\n for (var i = 0; i < maxIterations; ++i) {\n scale(pk, current.fxprime, -1);\n learnRate = wolfeLineSearch(f, pk, current, next, learnRate, c1, c2);\n if (params.history) {\n params.history.push({\n x: current.x.slice(),\n fx: current.fx,\n fxprime: current.fxprime.slice(),\n functionCalls: functionCalls,\n learnRate: learnRate,\n alpha: learnRate\n });\n functionCalls = [];\n }\n temp = current;\n current = next;\n next = temp;\n if (learnRate === 0 || norm2(current.fxprime) < 1e-5) break;\n }\n return current;\n }\n exports.bisect = bisect;\n exports.nelderMead = nelderMead;\n exports.conjugateGradient = conjugateGradient;\n exports.gradientDescent = gradientDescent;\n exports.gradientDescentLineSearch = gradientDescentLineSearch;\n exports.zeros = zeros;\n exports.zerosM = zerosM;\n exports.norm2 = norm2;\n exports.weightedSum = weightedSum;\n exports.scale = scale;\n});","import \"core-js/modules/es.math.hypot.js\";\n/**\n * Common utilities\n * @module glMatrix\n */\n// Configuration Constants\nexport var EPSILON = 0.000001;\nexport var ARRAY_TYPE = typeof Float32Array !== 'undefined' ? Float32Array : Array;\nexport var RANDOM = Math.random;\n/**\n * Sets the type of array used when creating new vectors and matrices\n *\n * @param {Float32ArrayConstructor | ArrayConstructor} type Array type, such as Float32Array or Array\n */\n\nexport function setMatrixArrayType(type) {\n ARRAY_TYPE = type;\n}\nvar degree = Math.PI / 180;\n/**\n * Convert Degree To Radian\n *\n * @param {Number} a Angle in Degrees\n */\n\nexport function toRadian(a) {\n return a * degree;\n}\n/**\n * Tests whether or not the arguments have approximately the same value, within an absolute\n * or relative tolerance of glMatrix.EPSILON (an absolute tolerance is used for values less\n * than or equal to 1.0, and a relative tolerance is used for larger values)\n *\n * @param {Number} a The first number to test.\n * @param {Number} b The second number to test.\n * @returns {Boolean} True if the numbers are approximately equal, false otherwise.\n */\n\nexport function equals(a, b) {\n return Math.abs(a - b) <= EPSILON * Math.max(1.0, Math.abs(a), Math.abs(b));\n}\nif (!Math.hypot) Math.hypot = function () {\n var y = 0,\n i = arguments.length;\n while (i--) {\n y += arguments[i] * arguments[i];\n }\n return Math.sqrt(y);\n};","import \"core-js/modules/es.math.hypot.js\";\nimport * as glMatrix from \"./common.js\";\n/**\n * 3x3 Matrix\n * @module mat3\n */\n\n/**\n * Creates a new identity mat3\n *\n * @returns {mat3} a new 3x3 matrix\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(9);\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n }\n out[0] = 1;\n out[4] = 1;\n out[8] = 1;\n return out;\n}\n/**\n * Copies the upper-left 3x3 values into the given mat3.\n *\n * @param {mat3} out the receiving 3x3 matrix\n * @param {ReadonlyMat4} a the source 4x4 matrix\n * @returns {mat3} out\n */\n\nexport function fromMat4(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[4];\n out[4] = a[5];\n out[5] = a[6];\n out[6] = a[8];\n out[7] = a[9];\n out[8] = a[10];\n return out;\n}\n/**\n * Creates a new mat3 initialized with values from an existing matrix\n *\n * @param {ReadonlyMat3} a matrix to clone\n * @returns {mat3} a new 3x3 matrix\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(9);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n/**\n * Copy the values from one mat3 to another\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n/**\n * Create a new mat3 with the given values\n *\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m10 Component in column 1, row 0 position (index 3)\n * @param {Number} m11 Component in column 1, row 1 position (index 4)\n * @param {Number} m12 Component in column 1, row 2 position (index 5)\n * @param {Number} m20 Component in column 2, row 0 position (index 6)\n * @param {Number} m21 Component in column 2, row 1 position (index 7)\n * @param {Number} m22 Component in column 2, row 2 position (index 8)\n * @returns {mat3} A new mat3\n */\n\nexport function fromValues(m00, m01, m02, m10, m11, m12, m20, m21, m22) {\n var out = new glMatrix.ARRAY_TYPE(9);\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m10;\n out[4] = m11;\n out[5] = m12;\n out[6] = m20;\n out[7] = m21;\n out[8] = m22;\n return out;\n}\n/**\n * Set the components of a mat3 to the given values\n *\n * @param {mat3} out the receiving matrix\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m10 Component in column 1, row 0 position (index 3)\n * @param {Number} m11 Component in column 1, row 1 position (index 4)\n * @param {Number} m12 Component in column 1, row 2 position (index 5)\n * @param {Number} m20 Component in column 2, row 0 position (index 6)\n * @param {Number} m21 Component in column 2, row 1 position (index 7)\n * @param {Number} m22 Component in column 2, row 2 position (index 8)\n * @returns {mat3} out\n */\n\nexport function set(out, m00, m01, m02, m10, m11, m12, m20, m21, m22) {\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m10;\n out[4] = m11;\n out[5] = m12;\n out[6] = m20;\n out[7] = m21;\n out[8] = m22;\n return out;\n}\n/**\n * Set a mat3 to the identity matrix\n *\n * @param {mat3} out the receiving matrix\n * @returns {mat3} out\n */\n\nexport function identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 1;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n/**\n * Transpose the values of a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function transpose(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n if (out === a) {\n var a01 = a[1],\n a02 = a[2],\n a12 = a[5];\n out[1] = a[3];\n out[2] = a[6];\n out[3] = a01;\n out[5] = a[7];\n out[6] = a02;\n out[7] = a12;\n } else {\n out[0] = a[0];\n out[1] = a[3];\n out[2] = a[6];\n out[3] = a[1];\n out[4] = a[4];\n out[5] = a[7];\n out[6] = a[2];\n out[7] = a[5];\n out[8] = a[8];\n }\n return out;\n}\n/**\n * Inverts a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function invert(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n var b01 = a22 * a11 - a12 * a21;\n var b11 = -a22 * a10 + a12 * a20;\n var b21 = a21 * a10 - a11 * a20; // Calculate the determinant\n\n var det = a00 * b01 + a01 * b11 + a02 * b21;\n if (!det) {\n return null;\n }\n det = 1.0 / det;\n out[0] = b01 * det;\n out[1] = (-a22 * a01 + a02 * a21) * det;\n out[2] = (a12 * a01 - a02 * a11) * det;\n out[3] = b11 * det;\n out[4] = (a22 * a00 - a02 * a20) * det;\n out[5] = (-a12 * a00 + a02 * a10) * det;\n out[6] = b21 * det;\n out[7] = (-a21 * a00 + a01 * a20) * det;\n out[8] = (a11 * a00 - a01 * a10) * det;\n return out;\n}\n/**\n * Calculates the adjugate of a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function adjoint(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n out[0] = a11 * a22 - a12 * a21;\n out[1] = a02 * a21 - a01 * a22;\n out[2] = a01 * a12 - a02 * a11;\n out[3] = a12 * a20 - a10 * a22;\n out[4] = a00 * a22 - a02 * a20;\n out[5] = a02 * a10 - a00 * a12;\n out[6] = a10 * a21 - a11 * a20;\n out[7] = a01 * a20 - a00 * a21;\n out[8] = a00 * a11 - a01 * a10;\n return out;\n}\n/**\n * Calculates the determinant of a mat3\n *\n * @param {ReadonlyMat3} a the source matrix\n * @returns {Number} determinant of a\n */\n\nexport function determinant(a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n return a00 * (a22 * a11 - a12 * a21) + a01 * (-a22 * a10 + a12 * a20) + a02 * (a21 * a10 - a11 * a20);\n}\n/**\n * Multiplies two mat3's\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nexport function multiply(out, a, b) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n var b00 = b[0],\n b01 = b[1],\n b02 = b[2];\n var b10 = b[3],\n b11 = b[4],\n b12 = b[5];\n var b20 = b[6],\n b21 = b[7],\n b22 = b[8];\n out[0] = b00 * a00 + b01 * a10 + b02 * a20;\n out[1] = b00 * a01 + b01 * a11 + b02 * a21;\n out[2] = b00 * a02 + b01 * a12 + b02 * a22;\n out[3] = b10 * a00 + b11 * a10 + b12 * a20;\n out[4] = b10 * a01 + b11 * a11 + b12 * a21;\n out[5] = b10 * a02 + b11 * a12 + b12 * a22;\n out[6] = b20 * a00 + b21 * a10 + b22 * a20;\n out[7] = b20 * a01 + b21 * a11 + b22 * a21;\n out[8] = b20 * a02 + b21 * a12 + b22 * a22;\n return out;\n}\n/**\n * Translate a mat3 by the given vector\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to translate\n * @param {ReadonlyVec2} v vector to translate by\n * @returns {mat3} out\n */\n\nexport function translate(out, a, v) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a10 = a[3],\n a11 = a[4],\n a12 = a[5],\n a20 = a[6],\n a21 = a[7],\n a22 = a[8],\n x = v[0],\n y = v[1];\n out[0] = a00;\n out[1] = a01;\n out[2] = a02;\n out[3] = a10;\n out[4] = a11;\n out[5] = a12;\n out[6] = x * a00 + y * a10 + a20;\n out[7] = x * a01 + y * a11 + a21;\n out[8] = x * a02 + y * a12 + a22;\n return out;\n}\n/**\n * Rotates a mat3 by the given angle\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat3} out\n */\n\nexport function rotate(out, a, rad) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a10 = a[3],\n a11 = a[4],\n a12 = a[5],\n a20 = a[6],\n a21 = a[7],\n a22 = a[8],\n s = Math.sin(rad),\n c = Math.cos(rad);\n out[0] = c * a00 + s * a10;\n out[1] = c * a01 + s * a11;\n out[2] = c * a02 + s * a12;\n out[3] = c * a10 - s * a00;\n out[4] = c * a11 - s * a01;\n out[5] = c * a12 - s * a02;\n out[6] = a20;\n out[7] = a21;\n out[8] = a22;\n return out;\n}\n/**\n * Scales the mat3 by the dimensions in the given vec2\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to rotate\n * @param {ReadonlyVec2} v the vec2 to scale the matrix by\n * @returns {mat3} out\n **/\n\nexport function scale(out, a, v) {\n var x = v[0],\n y = v[1];\n out[0] = x * a[0];\n out[1] = x * a[1];\n out[2] = x * a[2];\n out[3] = y * a[3];\n out[4] = y * a[4];\n out[5] = y * a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n/**\n * Creates a matrix from a vector translation\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.translate(dest, dest, vec);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyVec2} v Translation vector\n * @returns {mat3} out\n */\n\nexport function fromTranslation(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 1;\n out[5] = 0;\n out[6] = v[0];\n out[7] = v[1];\n out[8] = 1;\n return out;\n}\n/**\n * Creates a matrix from a given angle\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.rotate(dest, dest, rad);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat3} out\n */\n\nexport function fromRotation(out, rad) {\n var s = Math.sin(rad),\n c = Math.cos(rad);\n out[0] = c;\n out[1] = s;\n out[2] = 0;\n out[3] = -s;\n out[4] = c;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.scale(dest, dest, vec);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyVec2} v Scaling vector\n * @returns {mat3} out\n */\n\nexport function fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = v[1];\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n/**\n * Copies the values from a mat2d into a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat2d} a the matrix to copy\n * @returns {mat3} out\n **/\n\nexport function fromMat2d(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = 0;\n out[3] = a[2];\n out[4] = a[3];\n out[5] = 0;\n out[6] = a[4];\n out[7] = a[5];\n out[8] = 1;\n return out;\n}\n/**\n * Calculates a 3x3 matrix from the given quaternion\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyQuat} q Quaternion to create matrix from\n *\n * @returns {mat3} out\n */\n\nexport function fromQuat(out, q) {\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var yx = y * x2;\n var yy = y * y2;\n var zx = z * x2;\n var zy = z * y2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - yy - zz;\n out[3] = yx - wz;\n out[6] = zx + wy;\n out[1] = yx + wz;\n out[4] = 1 - xx - zz;\n out[7] = zy - wx;\n out[2] = zx - wy;\n out[5] = zy + wx;\n out[8] = 1 - xx - yy;\n return out;\n}\n/**\n * Calculates a 3x3 normal matrix (transpose inverse) from the 4x4 matrix\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyMat4} a Mat4 to derive the normal matrix from\n *\n * @returns {mat3} out\n */\n\nexport function normalFromMat4(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n if (!det) {\n return null;\n }\n det = 1.0 / det;\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n out[1] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n out[2] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n out[3] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n out[4] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n out[5] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n out[6] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n out[7] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n out[8] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n return out;\n}\n/**\n * Generates a 2D projection matrix with the given bounds\n *\n * @param {mat3} out mat3 frustum matrix will be written into\n * @param {number} width Width of your gl context\n * @param {number} height Height of gl context\n * @returns {mat3} out\n */\n\nexport function projection(out, width, height) {\n out[0] = 2 / width;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = -2 / height;\n out[5] = 0;\n out[6] = -1;\n out[7] = 1;\n out[8] = 1;\n return out;\n}\n/**\n * Returns a string representation of a mat3\n *\n * @param {ReadonlyMat3} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\n\nexport function str(a) {\n return \"mat3(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \", \" + a[8] + \")\";\n}\n/**\n * Returns Frobenius norm of a mat3\n *\n * @param {ReadonlyMat3} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\n\nexport function frob(a) {\n return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8]);\n}\n/**\n * Adds two mat3's\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n out[6] = a[6] + b[6];\n out[7] = a[7] + b[7];\n out[8] = a[8] + b[8];\n return out;\n}\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n out[4] = a[4] - b[4];\n out[5] = a[5] - b[5];\n out[6] = a[6] - b[6];\n out[7] = a[7] - b[7];\n out[8] = a[8] - b[8];\n return out;\n}\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat3} out\n */\n\nexport function multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n out[6] = a[6] * b;\n out[7] = a[7] * b;\n out[8] = a[8] * b;\n return out;\n}\n/**\n * Adds two mat3's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat3} out the receiving vector\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat3} out\n */\n\nexport function multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n out[4] = a[4] + b[4] * scale;\n out[5] = a[5] + b[5] * scale;\n out[6] = a[6] + b[6] * scale;\n out[7] = a[7] + b[7] * scale;\n out[8] = a[8] + b[8] * scale;\n return out;\n}\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyMat3} a The first matrix.\n * @param {ReadonlyMat3} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8];\n}\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {ReadonlyMat3} a The first matrix.\n * @param {ReadonlyMat3} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3],\n a4 = a[4],\n a5 = a[5],\n a6 = a[6],\n a7 = a[7],\n a8 = a[8];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a8), Math.abs(b8));\n}\n/**\n * Alias for {@link mat3.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link mat3.subtract}\n * @function\n */\n\nexport var sub = subtract;","import \"core-js/modules/es.math.hypot.js\";\nimport * as glMatrix from \"./common.js\";\n/**\n * 2 Dimensional Vector\n * @module vec2\n */\n\n/**\n * Creates a new, empty vec2\n *\n * @returns {vec2} a new 2D vector\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(2);\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n }\n return out;\n}\n/**\n * Creates a new vec2 initialized with values from an existing vector\n *\n * @param {ReadonlyVec2} a vector to clone\n * @returns {vec2} a new 2D vector\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(2);\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\n/**\n * Creates a new vec2 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @returns {vec2} a new 2D vector\n */\n\nexport function fromValues(x, y) {\n var out = new glMatrix.ARRAY_TYPE(2);\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\n * Copy the values from one vec2 to another\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the source vector\n * @returns {vec2} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\n/**\n * Set the components of a vec2 to the given values\n *\n * @param {vec2} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @returns {vec2} out\n */\n\nexport function set(out, x, y) {\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\n * Adds two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n return out;\n}\n/**\n * Multiplies two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n return out;\n}\n/**\n * Divides two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n return out;\n}\n/**\n * Math.ceil the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to ceil\n * @returns {vec2} out\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n return out;\n}\n/**\n * Math.floor the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to floor\n * @returns {vec2} out\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n return out;\n}\n/**\n * Returns the minimum of two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n return out;\n}\n/**\n * Returns the maximum of two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n return out;\n}\n/**\n * Math.round the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to round\n * @returns {vec2} out\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n return out;\n}\n/**\n * Scales a vec2 by a scalar number\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec2} out\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n return out;\n}\n/**\n * Adds two vec2's after scaling the second operand by a scalar value\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec2} out\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n return out;\n}\n/**\n * Calculates the euclidian distance between two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} distance between a and b\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1];\n return Math.hypot(x, y);\n}\n/**\n * Calculates the squared euclidian distance between two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1];\n return x * x + y * y;\n}\n/**\n * Calculates the length of a vec2\n *\n * @param {ReadonlyVec2} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport function length(a) {\n var x = a[0],\n y = a[1];\n return Math.hypot(x, y);\n}\n/**\n * Calculates the squared length of a vec2\n *\n * @param {ReadonlyVec2} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nexport function squaredLength(a) {\n var x = a[0],\n y = a[1];\n return x * x + y * y;\n}\n/**\n * Negates the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to negate\n * @returns {vec2} out\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n return out;\n}\n/**\n * Returns the inverse of the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to invert\n * @returns {vec2} out\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n return out;\n}\n/**\n * Normalize a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to normalize\n * @returns {vec2} out\n */\n\nexport function normalize(out, a) {\n var x = a[0],\n y = a[1];\n var len = x * x + y * y;\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n }\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n return out;\n}\n/**\n * Calculates the dot product of two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1];\n}\n/**\n * Computes the cross product of two vec2's\n * Note that the cross product must by definition produce a 3D vector\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec3} out\n */\n\nexport function cross(out, a, b) {\n var z = a[0] * b[1] - a[1] * b[0];\n out[0] = out[1] = 0;\n out[2] = z;\n return out;\n}\n/**\n * Performs a linear interpolation between two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec2} out\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0],\n ay = a[1];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec2} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec2} out\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0;\n var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n out[0] = Math.cos(r) * scale;\n out[1] = Math.sin(r) * scale;\n return out;\n}\n/**\n * Transforms the vec2 with a mat2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat2} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat2(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[2] * y;\n out[1] = m[1] * x + m[3] * y;\n return out;\n}\n/**\n * Transforms the vec2 with a mat2d\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat2d} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat2d(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[2] * y + m[4];\n out[1] = m[1] * x + m[3] * y + m[5];\n return out;\n}\n/**\n * Transforms the vec2 with a mat3\n * 3rd vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat3} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat3(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[3] * y + m[6];\n out[1] = m[1] * x + m[4] * y + m[7];\n return out;\n}\n/**\n * Transforms the vec2 with a mat4\n * 3rd vector component is implicitly '0'\n * 4th vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0];\n var y = a[1];\n out[0] = m[0] * x + m[4] * y + m[12];\n out[1] = m[1] * x + m[5] * y + m[13];\n return out;\n}\n/**\n * Rotate a 2D vector\n * @param {vec2} out The receiving vec2\n * @param {ReadonlyVec2} a The vec2 point to rotate\n * @param {ReadonlyVec2} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec2} out\n */\n\nexport function rotate(out, a, b, rad) {\n //Translate point to the origin\n var p0 = a[0] - b[0],\n p1 = a[1] - b[1],\n sinC = Math.sin(rad),\n cosC = Math.cos(rad); //perform rotation and translate to correct position\n\n out[0] = p0 * cosC - p1 * sinC + b[0];\n out[1] = p0 * sinC + p1 * cosC + b[1];\n return out;\n}\n/**\n * Get the angle between two 2D vectors\n * @param {ReadonlyVec2} a The first operand\n * @param {ReadonlyVec2} b The second operand\n * @returns {Number} The angle in radians\n */\n\nexport function angle(a, b) {\n var x1 = a[0],\n y1 = a[1],\n x2 = b[0],\n y2 = b[1],\n // mag is the product of the magnitudes of a and b\n mag = Math.sqrt(x1 * x1 + y1 * y1) * Math.sqrt(x2 * x2 + y2 * y2),\n // mag &&.. short circuits if mag == 0\n cosine = mag && (x1 * x2 + y1 * y2) / mag; // Math.min(Math.max(cosine, -1), 1) clamps the cosine between -1 and 1\n\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n/**\n * Set the components of a vec2 to zero\n *\n * @param {vec2} out the receiving vector\n * @returns {vec2} out\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec2} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n return \"vec2(\" + a[0] + \", \" + a[1] + \")\";\n}\n/**\n * Returns whether or not the vectors exactly have the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec2} a The first vector.\n * @param {ReadonlyVec2} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec2} a The first vector.\n * @param {ReadonlyVec2} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1];\n var b0 = b[0],\n b1 = b[1];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1));\n}\n/**\n * Alias for {@link vec2.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Alias for {@link vec2.subtract}\n * @function\n */\n\nexport var sub = subtract;\n/**\n * Alias for {@link vec2.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link vec2.divide}\n * @function\n */\n\nexport var div = divide;\n/**\n * Alias for {@link vec2.distance}\n * @function\n */\n\nexport var dist = distance;\n/**\n * Alias for {@link vec2.squaredDistance}\n * @function\n */\n\nexport var sqrDist = squaredDistance;\n/**\n * Alias for {@link vec2.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec2s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec2. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec2s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n if (!stride) {\n stride = 2;\n }\n if (!offset) {\n offset = 0;\n }\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n }\n return a;\n };\n}();","\"use strict\";\n\n// Note: This regex matches even invalid JSON strings, but since we’re\n// working on the output of `JSON.stringify` we know that only valid strings\n// are present (unless the user supplied a weird `options.indent` but in\n// that case we don’t care since the output would be invalid anyway).\nvar stringOrChar = /(\"(?:[^\\\\\"]|\\\\.)*\")|[:,]/g;\nmodule.exports = function stringify(passedObj, options) {\n var indent, maxLength, replacer;\n options = options || {};\n indent = JSON.stringify([1], undefined, options.indent === undefined ? 2 : options.indent).slice(2, -3);\n maxLength = indent === \"\" ? Infinity : options.maxLength === undefined ? 80 : options.maxLength;\n replacer = options.replacer;\n return function _stringify(obj, currentIndent, reserved) {\n // prettier-ignore\n var end, index, items, key, keyPart, keys, length, nextIndent, prettified, start, string, value;\n if (obj && typeof obj.toJSON === \"function\") {\n obj = obj.toJSON();\n }\n string = JSON.stringify(obj, replacer);\n if (string === undefined) {\n return string;\n }\n length = maxLength - currentIndent.length - reserved;\n if (string.length <= length) {\n prettified = string.replace(stringOrChar, function (match, stringLiteral) {\n return stringLiteral || match + \" \";\n });\n if (prettified.length <= length) {\n return prettified;\n }\n }\n if (replacer != null) {\n obj = JSON.parse(string);\n replacer = undefined;\n }\n if (typeof obj === \"object\" && obj !== null) {\n nextIndent = currentIndent + indent;\n items = [];\n index = 0;\n if (Array.isArray(obj)) {\n start = \"[\";\n end = \"]\";\n length = obj.length;\n for (; index < length; index++) {\n items.push(_stringify(obj[index], nextIndent, index === length - 1 ? 0 : 1) || \"null\");\n }\n } else {\n start = \"{\";\n end = \"}\";\n keys = Object.keys(obj);\n length = keys.length;\n for (; index < length; index++) {\n key = keys[index];\n keyPart = JSON.stringify(key) + \": \";\n value = _stringify(obj[key], nextIndent, keyPart.length + (index === length - 1 ? 0 : 1));\n if (value !== undefined) {\n items.push(keyPart + value);\n }\n }\n }\n if (items.length > 0) {\n return [start, indent + items.join(\",\\n\" + nextIndent), end].join(\"\\n\" + currentIndent);\n }\n }\n return string;\n }(passedObj, \"\", 0);\n};","'use strict';\n\nvar self = module.exports;\nmodule.exports.isNumber = function (x) {\n return typeof x === 'number';\n};\nmodule.exports.findMin = function (arr) {\n if (arr.length === 0) {\n return Infinity;\n }\n var curr = arr[0];\n for (var i = 1; i < arr.length; i++) {\n curr = Math.min(curr, arr[i]);\n }\n return curr;\n};\nmodule.exports.findMax = function (arr) {\n if (arr.length === 0) {\n return -Infinity;\n }\n var curr = arr[0];\n for (var i = 1; i < arr.length; i++) {\n curr = Math.max(curr, arr[i]);\n }\n return curr;\n};\nmodule.exports.findMinMulti = function (arr) {\n var curr = self.findMin(arr[0]);\n for (var i = 1; i < arr.length; i++) {\n curr = Math.min(curr, self.findMin(arr[i]));\n }\n return curr;\n};\nmodule.exports.findMaxMulti = function (arr) {\n var curr = self.findMax(arr[0]);\n for (var i = 1; i < arr.length; i++) {\n curr = Math.max(curr, self.findMax(arr[i]));\n }\n return curr;\n};\nmodule.exports.inside = function (min, max, x) {\n return min <= x && x <= max;\n};","'use strict';\n\nvar DEFAULT_SIZE = 50;\nvar DEFAULT_WIDTH = 2;\nvar LN_2 = Math.log(2);\nvar self = module.exports;\nvar helper = require('./helper');\n\n// Triangle\nfunction kernel(x) {\n return 1 - Math.abs(x);\n}\n\n/**\n * Get min and max value for the pdf, covering all arr data range while respecting options' data\n * @param arr\n * @param options\n * @returns {*}\n */\nmodule.exports.getUnifiedMinMax = function (arr, options) {\n return self.getUnifiedMinMaxMulti([arr], options);\n};\nmodule.exports.getUnifiedMinMaxMulti = function (arrMulti, options) {\n options = options || {};\n var relaxMin = false;\n var relaxMax = false;\n var width = helper.isNumber(options.width) ? options.width : DEFAULT_WIDTH;\n var size = helper.isNumber(options.size) ? options.size : DEFAULT_SIZE;\n var min = helper.isNumber(options.min) ? options.min : (relaxMin = true, helper.findMinMulti(arrMulti));\n var max = helper.isNumber(options.max) ? options.max : (relaxMax = true, helper.findMaxMulti(arrMulti));\n var range = max - min;\n var step = range / (size - 1);\n\n // Relax?\n if (relaxMin) {\n min = min - 2 * width * step;\n }\n if (relaxMax) {\n max = max + 2 * width * step;\n }\n return {\n min: min,\n max: max\n };\n};\nmodule.exports.create = function (arr, options) {\n options = options || {};\n if (!arr || arr.length === 0) {\n return [];\n }\n var size = helper.isNumber(options.size) ? options.size : DEFAULT_SIZE;\n var width = helper.isNumber(options.width) ? options.width : DEFAULT_WIDTH;\n var normalizedMinMax = self.getUnifiedMinMax(arr, {\n size: size,\n width: width,\n min: options.min,\n max: options.max\n });\n var min = normalizedMinMax.min;\n var max = normalizedMinMax.max;\n var range = max - min;\n var step = range / (size - 1);\n if (range === 0) {\n // Special case...\n return [{\n x: min,\n y: 1\n }];\n }\n\n // Good to go\n\n var buckets = [];\n for (var i = 0; i < size; i++) {\n buckets.push({\n x: min + i * step,\n y: 0\n });\n }\n var xToBucket = function xToBucket(x) {\n return Math.floor((x - min) / step);\n };\n var partialArea = generatePartialAreas(kernel, width);\n var fullArea = partialArea[width];\n var c = partialArea[width - 1] - partialArea[width - 2];\n var initalValue = 0;\n arr.forEach(function (x) {\n var bucket = xToBucket(x);\n\n // Totally outside?\n if (bucket + width < 0 || bucket - width >= buckets.length) {\n return;\n }\n var start = Math.max(bucket - width, 0);\n var mid = bucket;\n var end = Math.min(bucket + width, buckets.length - 1);\n var leftBlockCount = start - (bucket - width);\n var rightBlockCount = bucket + width - end;\n var spilledAreaLeft = partialArea[-width - 1 + leftBlockCount] || 0;\n var spilledAreaRight = partialArea[-width - 1 + rightBlockCount] || 0;\n var weight = fullArea / (fullArea - spilledAreaLeft - spilledAreaRight);\n if (leftBlockCount > 0) {\n initalValue += weight * (leftBlockCount - 1) * c;\n }\n\n // Add grads\n var startGradPos = Math.max(0, bucket - width + 1);\n if (helper.inside(0, buckets.length - 1, startGradPos)) {\n buckets[startGradPos].y += weight * 1 * c;\n }\n if (helper.inside(0, buckets.length - 1, mid + 1)) {\n buckets[mid + 1].y -= weight * 2 * c;\n }\n if (helper.inside(0, buckets.length - 1, end + 1)) {\n buckets[end + 1].y += weight * 1 * c;\n }\n });\n var accumulator = initalValue;\n var gradAccumulator = 0;\n var area = 0;\n buckets.forEach(function (bucket) {\n gradAccumulator += bucket.y;\n accumulator += gradAccumulator;\n bucket.y = accumulator;\n area += accumulator;\n });\n\n // Normalize\n if (area > 0) {\n buckets.forEach(function (bucket) {\n bucket.y /= area;\n });\n }\n return buckets;\n};\nfunction generatePartialAreas(kernel, width) {\n var partialAreas = {};\n var accumulator = 0;\n for (var i = -width; i <= width; i++) {\n accumulator += kernel(i / width);\n partialAreas[i] = accumulator;\n }\n return partialAreas;\n}\nmodule.exports.getExpectedValueFromPdf = function (pdf) {\n if (!pdf || pdf.length === 0) {\n return undefined;\n }\n var expected = 0;\n pdf.forEach(function (obj) {\n expected += obj.x * obj.y;\n });\n return expected;\n};\nmodule.exports.getXWithLeftTailArea = function (pdf, area) {\n if (!pdf || pdf.length === 0) {\n return undefined;\n }\n var accumulator = 0;\n var last = 0;\n for (var i = 0; i < pdf.length; i++) {\n last = i;\n accumulator += pdf[i].y;\n if (accumulator >= area) {\n break;\n }\n }\n return pdf[last].x;\n};\nmodule.exports.getPerplexity = function (pdf) {\n if (!pdf || pdf.length === 0) {\n return undefined;\n }\n var entropy = 0;\n pdf.forEach(function (obj) {\n var ln = Math.log(obj.y);\n if (isFinite(ln)) {\n entropy += obj.y * ln;\n }\n });\n entropy = -entropy / LN_2;\n return Math.pow(2, entropy);\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SensorTabIndex = exports.SensorClassName = exports.SizeSensorId = void 0;\n\n/**\n * Created by hustcc on 18/6/9.\n * Contract: i@hust.cc\n */\nvar SizeSensorId = 'size-sensor-id';\nexports.SizeSensorId = SizeSensorId;\nvar SensorClassName = 'size-sensor-object';\nexports.SensorClassName = SensorClassName;\nvar SensorTabIndex = '-1';\nexports.SensorTabIndex = SensorTabIndex;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\n/**\n * Created by hustcc on 18/6/9.\n * Contract: i@hust.cc\n */\nvar _default = function _default(fn) {\n var delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 60;\n var timer = null;\n return function () {\n var _this = this;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n clearTimeout(timer);\n timer = setTimeout(function () {\n fn.apply(_this, args);\n }, delay);\n };\n};\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\n/**\n * Created by hustcc on 18/6/9.\n * Contract: i@hust.cc\n */\nvar id = 1;\n/**\n * generate unique id in application\n * @return {string}\n */\n\nvar _default = function _default() {\n return \"\".concat(id++);\n};\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ver = exports.clear = exports.bind = void 0;\nvar _sensorPool = require(\"./sensorPool\");\n\n/**\n * Created by hustcc on 18/6/9.[高考时间]\n * Contract: i@hust.cc\n */\n\n/**\n * bind an element with resize callback function\n * @param {*} element\n * @param {*} cb\n */\nvar bind = function bind(element, cb) {\n var sensor = (0, _sensorPool.getSensor)(element); // listen with callback\n\n sensor.bind(cb); // return unbind function\n\n return function () {\n sensor.unbind(cb);\n };\n};\n/**\n * clear all the listener and sensor of an element\n * @param element\n */\n\nexports.bind = bind;\nvar clear = function clear(element) {\n var sensor = (0, _sensorPool.getSensor)(element);\n (0, _sensorPool.removeSensor)(sensor);\n};\nexports.clear = clear;\nvar ver = \"1.0.1\";\nexports.ver = ver;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.removeSensor = exports.getSensor = void 0;\nvar _id = _interopRequireDefault(require(\"./id\"));\nvar _sensors = require(\"./sensors\");\nvar _constant = require(\"./constant\");\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\n/**\n * Created by hustcc on 18/6/9.\n * Contract: i@hust.cc\n */\n\n/**\n * all the sensor objects.\n * sensor pool\n */\nvar Sensors = {};\n/**\n * get one sensor\n * @param element\n * @returns {*}\n */\n\nvar getSensor = function getSensor(element) {\n var sensorId = element.getAttribute(_constant.SizeSensorId); // 1. if the sensor exists, then use it\n\n if (sensorId && Sensors[sensorId]) {\n return Sensors[sensorId];\n } // 2. not exist, then create one\n\n var newId = (0, _id[\"default\"])();\n element.setAttribute(_constant.SizeSensorId, newId);\n var sensor = (0, _sensors.createSensor)(element); // add sensor into pool\n\n Sensors[newId] = sensor;\n return sensor;\n};\n/**\n * 移除 sensor\n * @param sensor\n */\n\nexports.getSensor = getSensor;\nvar removeSensor = function removeSensor(sensor) {\n var sensorId = sensor.element.getAttribute(_constant.SizeSensorId); // remove attribute\n\n sensor.element.removeAttribute(_constant.SizeSensorId); // remove event, dom of the sensor used\n\n sensor.destroy(); // exist, then remove from pool\n\n if (sensorId && Sensors[sensorId]) {\n delete Sensors[sensorId];\n }\n};\nexports.removeSensor = removeSensor;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createSensor = void 0;\nvar _object = require(\"./object\");\nvar _resizeObserver = require(\"./resizeObserver\");\n\n/**\n * Created by hustcc on 18/7/5.\n * Contract: i@hust.cc\n */\n\n/**\n * sensor strategies\n */\n// export const createSensor = createObjectSensor;\nvar createSensor = typeof ResizeObserver !== 'undefined' ? _resizeObserver.createSensor : _object.createSensor;\nexports.createSensor = createSensor;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createSensor = void 0;\nvar _debounce = _interopRequireDefault(require(\"../debounce\"));\nvar _constant = require(\"../constant\");\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\n/**\n * Created by hustcc on 18/6/9.\n * Contract: i@hust.cc\n */\nvar createSensor = function createSensor(element) {\n var sensor = undefined; // callback\n\n var listeners = [];\n /**\n * create object DOM of sensor\n * @returns {HTMLObjectElement}\n */\n\n var newSensor = function newSensor() {\n // adjust style\n if (getComputedStyle(element).position === 'static') {\n element.style.position = 'relative';\n }\n var obj = document.createElement('object');\n obj.onload = function () {\n obj.contentDocument.defaultView.addEventListener('resize', resizeListener); // 直接触发一次 resize\n\n resizeListener();\n };\n obj.style.display = 'block';\n obj.style.position = 'absolute';\n obj.style.top = '0';\n obj.style.left = '0';\n obj.style.height = '100%';\n obj.style.width = '100%';\n obj.style.overflow = 'hidden';\n obj.style.pointerEvents = 'none';\n obj.style.zIndex = '-1';\n obj.style.opacity = '0';\n obj.setAttribute('class', _constant.SensorClassName);\n obj.setAttribute('tabindex', _constant.SensorTabIndex);\n obj.type = 'text/html'; // append into dom\n\n element.appendChild(obj); // for ie, should set data attribute delay, or will be white screen\n\n obj.data = 'about:blank';\n return obj;\n };\n /**\n * trigger listeners\n */\n\n var resizeListener = (0, _debounce[\"default\"])(function () {\n // trigger all listener\n listeners.forEach(function (listener) {\n listener(element);\n });\n });\n /**\n * listen with one callback function\n * @param cb\n */\n\n var bind = function bind(cb) {\n // if not exist sensor, then create one\n if (!sensor) {\n sensor = newSensor();\n }\n if (listeners.indexOf(cb) === -1) {\n listeners.push(cb);\n }\n };\n /**\n * destroy all\n */\n\n var destroy = function destroy() {\n if (sensor && sensor.parentNode) {\n if (sensor.contentDocument) {\n // remote event\n sensor.contentDocument.defaultView.removeEventListener('resize', resizeListener);\n } // remove dom\n\n sensor.parentNode.removeChild(sensor); // initial variable\n\n sensor = undefined;\n listeners = [];\n }\n };\n /**\n * cancel listener bind\n * @param cb\n */\n\n var unbind = function unbind(cb) {\n var idx = listeners.indexOf(cb);\n if (idx !== -1) {\n listeners.splice(idx, 1);\n } // no listener, and sensor is exist\n // then destroy the sensor\n\n if (listeners.length === 0 && sensor) {\n destroy();\n }\n };\n return {\n element: element,\n bind: bind,\n destroy: destroy,\n unbind: unbind\n };\n};\nexports.createSensor = createSensor;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createSensor = void 0;\nvar _debounce = _interopRequireDefault(require(\"../debounce\"));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\n/**\n * Created by hustcc on 18/7/5.\n * Contract: i@hust.cc\n */\nvar createSensor = function createSensor(element) {\n var sensor = undefined; // callback\n\n var listeners = [];\n /**\n * trigger listeners\n */\n\n var resizeListener = (0, _debounce[\"default\"])(function () {\n // trigger all\n listeners.forEach(function (listener) {\n listener(element);\n });\n });\n /**\n * create ResizeObserver sensor\n * @returns\n */\n\n var newSensor = function newSensor() {\n var s = new ResizeObserver(resizeListener); // listen element\n\n s.observe(element); // trigger once\n\n resizeListener();\n return s;\n };\n /**\n * listen with callback\n * @param cb\n */\n\n var bind = function bind(cb) {\n if (!sensor) {\n sensor = newSensor();\n }\n if (listeners.indexOf(cb) === -1) {\n listeners.push(cb);\n }\n };\n /**\n * destroy\n */\n\n var destroy = function destroy() {\n sensor.disconnect();\n listeners = [];\n sensor = undefined;\n };\n /**\n * cancel bind\n * @param cb\n */\n\n var unbind = function unbind(cb) {\n var idx = listeners.indexOf(cb);\n if (idx !== -1) {\n listeners.splice(idx, 1);\n } // no listener, and sensor is exist\n // then destroy the sensor\n\n if (listeners.length === 0 && sensor) {\n destroy();\n }\n };\n return {\n element: element,\n bind: bind,\n destroy: destroy,\n unbind: unbind\n };\n};\nexports.createSensor = createSensor;","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return _extendStatics(d, b);\n};\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\nvar _assign = function __assign() {\n _assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return _assign.apply(this, arguments);\n};\nexport { _assign as __assign };\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n}\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\nexport function __param(paramIndex, decorator) {\n return function (target, key) {\n decorator(target, key, paramIndex);\n };\n}\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) {\n if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\");\n return f;\n }\n var kind = contextIn.kind,\n key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _,\n done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) {\n if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\");\n extraInitializers.push(accept(f || null));\n };\n var result = (0, decorators[i])(kind === \"accessor\" ? {\n get: descriptor.get,\n set: descriptor.set\n } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n } else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n}\n;\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n}\n;\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n}\n;\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", {\n configurable: true,\n value: prefix ? \"\".concat(prefix, \" \", name) : name\n });\n}\n;\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\nexport function __generator(thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\nexport var __createBinding = Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = {\n enumerable: true,\n get: function get() {\n return m[k];\n }\n };\n }\n Object.defineProperty(o, k2, desc);\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n};\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function next() {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j];\n return r;\n}\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []),\n i,\n q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i;\n function verb(n) {\n if (g[n]) i[n] = function (v) {\n return new Promise(function (a, b) {\n q.push([n, v, a, b]) > 1 || resume(n, v);\n });\n };\n }\n function resume(n, v) {\n try {\n step(g[n](v));\n } catch (e) {\n settle(q[0][3], e);\n }\n }\n function step(r) {\n r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);\n }\n function fulfill(value) {\n resume(\"next\", value);\n }\n function reject(value) {\n resume(\"throw\", value);\n }\n function settle(f, v) {\n if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]);\n }\n}\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) {\n throw e;\n }), verb(\"return\"), i[Symbol.iterator] = function () {\n return this;\n }, i;\n function verb(n, f) {\n i[n] = o[n] ? function (v) {\n return (p = !p) ? {\n value: __await(o[n](v)),\n done: false\n } : f ? f(v) : v;\n } : f;\n }\n}\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator],\n i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i);\n function verb(n) {\n i[n] = o[n] && function (v) {\n return new Promise(function (resolve, reject) {\n v = o[n](v), settle(resolve, reject, v.done, v.value);\n });\n };\n }\n function settle(resolve, reject, d, v) {\n Promise.resolve(v).then(function (v) {\n resolve({\n value: v,\n done: d\n });\n }, reject);\n }\n}\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n return cooked;\n}\n;\nvar __setModuleDefault = Object.create ? function (o, v) {\n Object.defineProperty(o, \"default\", {\n enumerable: true,\n value: v\n });\n} : function (o, v) {\n o[\"default\"] = v;\n};\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\nexport function __importDefault(mod) {\n return mod && mod.__esModule ? mod : {\n default: mod\n };\n}\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value), value;\n}\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || typeof receiver !== \"object\" && typeof receiver !== \"function\") throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({\n value: value,\n dispose: dispose,\n async: async\n });\n } else if (async) {\n env.stack.push({\n async: true\n });\n }\n return value;\n}\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function (e) {\n fail(e);\n return next();\n });\n } catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\nexport default {\n __extends: __extends,\n __assign: _assign,\n __rest: __rest,\n __decorate: __decorate,\n __param: __param,\n __metadata: __metadata,\n __awaiter: __awaiter,\n __generator: __generator,\n __createBinding: __createBinding,\n __exportStar: __exportStar,\n __values: __values,\n __read: __read,\n __spread: __spread,\n __spreadArrays: __spreadArrays,\n __spreadArray: __spreadArray,\n __await: __await,\n __asyncGenerator: __asyncGenerator,\n __asyncDelegator: __asyncDelegator,\n __asyncValues: __asyncValues,\n __makeTemplateObject: __makeTemplateObject,\n __importStar: __importStar,\n __importDefault: __importDefault,\n __classPrivateFieldGet: __classPrivateFieldGet,\n __classPrivateFieldSet: __classPrivateFieldSet,\n __classPrivateFieldIn: __classPrivateFieldIn,\n __addDisposableResource: __addDisposableResource,\n __disposeResources: __disposeResources\n};","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\n// eslint-disable-next-line redos/no-vulnerable -- safe\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// `GetSubstitution` abstract operation\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return replace(replacement, symbols, function (match, ch) {\n var capture;\n switch (charAt(ch, 0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return stringSlice(str, 0, position);\n case \"'\": return stringSlice(str, tailPos);\n case '<':\n capture = namedCaptures[stringSlice(ch, 1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n};\n","'use strict';\nvar isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.hasIndices) result += 'd';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.unicodeSets) result += 'v';\n if (that.sticky) result += 'y';\n return result;\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar hasOwn = require('../internals/has-own-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar regExpFlags = require('../internals/regexp-flags');\n\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (R) {\n var flags = R.flags;\n return flags === undefined && !('flags' in RegExpPrototype) && !hasOwn(R, 'flags') && isPrototypeOf(RegExpPrototype, R)\n ? call(regExpFlags, R) : flags;\n};\n","'use strict';\nvar classof = require('../internals/classof');\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n return $String(argument);\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar flattenIntoArray = require('../internals/flatten-into-array');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\n// `Array.prototype.flat` method\n// https://tc39.es/ecma262/#sec-array.prototype.flat\n$({ target: 'Array', proto: true }, {\n flat: function flat(/* depthArg = 1 */) {\n var depthArg = arguments.length ? arguments[0] : undefined;\n var O = toObject(this);\n var sourceLen = lengthOfArrayLike(O);\n var A = arraySpeciesCreate(O, 0);\n A.length = flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toIntegerOrInfinity(depthArg));\n return A;\n }\n});\n","'use strict';\n// this method was added to unscopables after implementation\n// in popular engines, so it's moved to a separate module\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('flat');\n","'use strict';\nvar $ = require('../internals/export');\n\n// eslint-disable-next-line es/no-math-hypot -- required for testing\nvar $hypot = Math.hypot;\nvar abs = Math.abs;\nvar sqrt = Math.sqrt;\n\n// Chrome 77 bug\n// https://bugs.chromium.org/p/v8/issues/detail?id=9546\nvar FORCED = !!$hypot && $hypot(Infinity, NaN) !== Infinity;\n\n// `Math.hypot` method\n// https://tc39.es/ecma262/#sec-math.hypot\n$({ target: 'Math', stat: true, arity: 2, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n hypot: function hypot(value1, value2) {\n var sum = 0;\n var i = 0;\n var aLen = arguments.length;\n var larg = 0;\n var arg, div;\n while (i < aLen) {\n arg = abs(arguments[i++]);\n if (larg < arg) {\n div = larg / arg;\n sum = sum * div * div + 1;\n larg = arg;\n } else if (arg > 0) {\n div = arg / larg;\n sum += div * div;\n } else sum += arg;\n }\n return larg === Infinity ? Infinity : larg * sqrt(sum);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar isCallable = require('../internals/is-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar isRegExp = require('../internals/is-regexp');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\nvar getSubstitution = require('../internals/get-substitution');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar REPLACE = wellKnownSymbol('replace');\nvar $TypeError = TypeError;\nvar indexOf = uncurryThis(''.indexOf);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\nvar max = Math.max;\n\nvar stringIndexOf = function (string, searchValue, fromIndex) {\n if (fromIndex > string.length) return -1;\n if (searchValue === '') return fromIndex;\n return indexOf(string, searchValue, fromIndex);\n};\n\n// `String.prototype.replaceAll` method\n// https://tc39.es/ecma262/#sec-string.prototype.replaceall\n$({ target: 'String', proto: true }, {\n replaceAll: function replaceAll(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var IS_REG_EXP, flags, replacer, string, searchString, functionalReplace, searchLength, advanceBy, replacement;\n var position = 0;\n var endOfLastMatch = 0;\n var result = '';\n if (!isNullOrUndefined(searchValue)) {\n IS_REG_EXP = isRegExp(searchValue);\n if (IS_REG_EXP) {\n flags = toString(requireObjectCoercible(getRegExpFlags(searchValue)));\n if (!~indexOf(flags, 'g')) throw $TypeError('`.replaceAll` does not allow non-global regexes');\n }\n replacer = getMethod(searchValue, REPLACE);\n if (replacer) {\n return call(replacer, searchValue, O, replaceValue);\n } else if (IS_PURE && IS_REG_EXP) {\n return replace(toString(O), searchValue, replaceValue);\n }\n }\n string = toString(O);\n searchString = toString(searchValue);\n functionalReplace = isCallable(replaceValue);\n if (!functionalReplace) replaceValue = toString(replaceValue);\n searchLength = searchString.length;\n advanceBy = max(1, searchLength);\n position = stringIndexOf(string, searchString, 0);\n while (position !== -1) {\n replacement = functionalReplace\n ? toString(replaceValue(searchString, position, string))\n : getSubstitution(searchString, string, position, [], undefined, replaceValue);\n result += stringSlice(string, endOfLastMatch, position) + replacement;\n endOfLastMatch = position + searchLength;\n position = stringIndexOf(string, searchString, position + advanceBy);\n }\n if (endOfLastMatch < string.length) {\n result += stringSlice(string, endOfLastMatch);\n }\n return result;\n }\n});\n","'use strict';\n// TODO: Remove from `core-js@4`\nrequire('../modules/es.string.replace-all');\n","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"title\", \"titleId\"];\nimport * as React from \"react\";\nfunction ExclamationCircleIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M12 9v3.75m9-.75a9 9 0 11-18 0 9 9 0 0118 0zm-9 3.75h.008v.008H12v-.008z\"\n }));\n}\nvar ForwardRef = React.forwardRef(ExclamationCircleIcon);\nexport default ForwardRef;","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"title\", \"titleId\"];\nimport * as React from \"react\";\nfunction ArrowUpOnSquareIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M9 8.25H7.5a2.25 2.25 0 00-2.25 2.25v9a2.25 2.25 0 002.25 2.25h9a2.25 2.25 0 002.25-2.25v-9a2.25 2.25 0 00-2.25-2.25H15m0-3l-3-3m0 0l-3 3m3-3V15\"\n }));\n}\nvar ForwardRef = React.forwardRef(ArrowUpOnSquareIcon);\nexport default ForwardRef;","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"title\", \"titleId\"];\nimport * as React from \"react\";\nfunction InboxIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M2.25 13.5h3.86a2.25 2.25 0 012.012 1.244l.256.512a2.25 2.25 0 002.013 1.244h3.218a2.25 2.25 0 002.013-1.244l.256-.512a2.25 2.25 0 012.013-1.244h3.859m-19.5.338V18a2.25 2.25 0 002.25 2.25h15A2.25 2.25 0 0021.75 18v-4.162c0-.224-.034-.447-.1-.661L19.24 5.338a2.25 2.25 0 00-2.15-1.588H6.911a2.25 2.25 0 00-2.15 1.588L2.35 13.177a2.25 2.25 0 00-.1.661z\"\n }));\n}\nvar ForwardRef = React.forwardRef(InboxIcon);\nexport default ForwardRef;","import _typeof from \"./typeof.js\";\nexport default function _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n };\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n defineProperty = Object.defineProperty || function (obj, key, desc) {\n obj[key] = desc.value;\n },\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return defineProperty(generator, \"_invoke\", {\n value: makeInvokeMethod(innerFn, self, context)\n }), generator;\n }\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n exports.wrap = wrap;\n var ContinueSentinel = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n reject(record.arg);\n }\n var previousPromise;\n defineProperty(this, \"_invoke\", {\n value: function value(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method,\n method = delegate.iterator[methodName];\n if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel;\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n return next.value = undefined, next.done = !0, next;\n };\n return next.next = next;\n }\n }\n return {\n next: doneResult\n };\n }\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (val) {\n var object = Object(val),\n keys = [];\n for (var key in object) keys.push(key);\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nvar attributes = \"accept acceptCharset accessKey action allowFullScreen allowTransparency\\n alt async autoComplete autoFocus autoPlay capture cellPadding cellSpacing challenge\\n charSet checked classID className colSpan cols content contentEditable contextMenu\\n controls coords crossOrigin data dateTime default defer dir disabled download draggable\\n encType form formAction formEncType formMethod formNoValidate formTarget frameBorder\\n headers height hidden high href hrefLang htmlFor httpEquiv icon id inputMode integrity\\n is keyParams keyType kind label lang list loop low manifest marginHeight marginWidth max maxLength media\\n mediaGroup method min minLength multiple muted name noValidate nonce open\\n optimum pattern placeholder poster preload radioGroup readOnly rel required\\n reversed role rowSpan rows sandbox scope scoped scrolling seamless selected\\n shape size sizes span spellCheck src srcDoc srcLang srcSet start step style\\n summary tabIndex target title type useMap value width wmode wrap\";\nvar eventsName = \"onCopy onCut onPaste onCompositionEnd onCompositionStart onCompositionUpdate onKeyDown\\n onKeyPress onKeyUp onFocus onBlur onChange onInput onSubmit onClick onContextMenu onDoubleClick\\n onDrag onDragEnd onDragEnter onDragExit onDragLeave onDragOver onDragStart onDrop onMouseDown\\n onMouseEnter onMouseLeave onMouseMove onMouseOut onMouseOver onMouseUp onSelect onTouchCancel\\n onTouchEnd onTouchMove onTouchStart onScroll onWheel onAbort onCanPlay onCanPlayThrough\\n onDurationChange onEmptied onEncrypted onEnded onError onLoadedData onLoadedMetadata\\n onLoadStart onPause onPlay onPlaying onProgress onRateChange onSeeked onSeeking onStalled onSuspend onTimeUpdate onVolumeChange onWaiting onLoad onError\";\nvar propList = \"\".concat(attributes, \" \").concat(eventsName).split(/[\\s\\n]+/);\n\n/* eslint-enable max-len */\nvar ariaPrefix = 'aria-';\nvar dataPrefix = 'data-';\nfunction match(key, prefix) {\n return key.indexOf(prefix) === 0;\n}\n/**\n * Picker props from exist props with filter\n * @param props Passed props\n * @param ariaOnly boolean | { aria?: boolean; data?: boolean; attr?: boolean; } filter config\n */\nexport default function pickAttrs(props) {\n var ariaOnly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var mergedConfig;\n if (ariaOnly === false) {\n mergedConfig = {\n aria: true,\n data: true,\n attr: true\n };\n } else if (ariaOnly === true) {\n mergedConfig = {\n aria: true\n };\n } else {\n mergedConfig = _objectSpread({}, ariaOnly);\n }\n var attrs = {};\n Object.keys(props).forEach(function (key) {\n if (\n // Aria\n mergedConfig.aria && (key === 'role' || match(key, ariaPrefix)) ||\n // Data\n mergedConfig.data && match(key, dataPrefix) ||\n // Attr\n mergedConfig.attr && propList.includes(key)) {\n attrs[key] = props[key];\n }\n });\n return attrs;\n}","function getError(option, xhr) {\n var msg = \"cannot \".concat(option.method, \" \").concat(option.action, \" \").concat(xhr.status, \"'\");\n var err = new Error(msg);\n err.status = xhr.status;\n err.method = option.method;\n err.url = option.action;\n return err;\n}\nfunction getBody(xhr) {\n var text = xhr.responseText || xhr.response;\n if (!text) {\n return text;\n }\n try {\n return JSON.parse(text);\n } catch (e) {\n return text;\n }\n}\nexport default function upload(option) {\n // eslint-disable-next-line no-undef\n var xhr = new XMLHttpRequest();\n if (option.onProgress && xhr.upload) {\n xhr.upload.onprogress = function progress(e) {\n if (e.total > 0) {\n e.percent = e.loaded / e.total * 100;\n }\n option.onProgress(e);\n };\n } // eslint-disable-next-line no-undef\n\n var formData = new FormData();\n if (option.data) {\n Object.keys(option.data).forEach(function (key) {\n var value = option.data[key]; // support key-value array data\n\n if (Array.isArray(value)) {\n value.forEach(function (item) {\n // { list: [ 11, 22 ] }\n // formData.append('list[]', 11);\n formData.append(\"\".concat(key, \"[]\"), item);\n });\n return;\n }\n formData.append(key, value);\n });\n } // eslint-disable-next-line no-undef\n\n if (option.file instanceof Blob) {\n formData.append(option.filename, option.file, option.file.name);\n } else {\n formData.append(option.filename, option.file);\n }\n xhr.onerror = function error(e) {\n option.onError(e);\n };\n xhr.onload = function onload() {\n // allow success when 2xx status\n // see https://github.com/react-component/upload/issues/34\n if (xhr.status < 200 || xhr.status >= 300) {\n return option.onError(getError(option, xhr), getBody(xhr));\n }\n return option.onSuccess(getBody(xhr), xhr);\n };\n xhr.open(option.method, option.action, true); // Has to be after `.open()`. See https://github.com/enyo/dropzone/issues/179\n\n if (option.withCredentials && 'withCredentials' in xhr) {\n xhr.withCredentials = true;\n }\n var headers = option.headers || {}; // when set headers['X-Requested-With'] = null , can close default XHR header\n // see https://github.com/react-component/upload/issues/33\n\n if (headers['X-Requested-With'] !== null) {\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n }\n Object.keys(headers).forEach(function (h) {\n if (headers[h] !== null) {\n xhr.setRequestHeader(h, headers[h]);\n }\n });\n xhr.send(formData);\n return {\n abort: function abort() {\n xhr.abort();\n }\n };\n}","var now = +new Date();\nvar index = 0;\nexport default function uid() {\n // eslint-disable-next-line no-plusplus\n return \"rc-upload-\".concat(now, \"-\").concat(++index);\n}","import warning from \"rc-util/es/warning\";\nexport default (function (file, acceptedFiles) {\n if (file && acceptedFiles) {\n var acceptedFilesArray = Array.isArray(acceptedFiles) ? acceptedFiles : acceptedFiles.split(',');\n var fileName = file.name || '';\n var mimeType = file.type || '';\n var baseMimeType = mimeType.replace(/\\/.*$/, '');\n return acceptedFilesArray.some(function (type) {\n var validType = type.trim(); // This is something like */*,* allow all files\n\n if (/^\\*(\\/\\*)?$/.test(type)) {\n return true;\n } // like .jpg, .png\n\n if (validType.charAt(0) === '.') {\n var lowerFileName = fileName.toLowerCase();\n var lowerType = validType.toLowerCase();\n var affixList = [lowerType];\n if (lowerType === '.jpg' || lowerType === '.jpeg') {\n affixList = ['.jpg', '.jpeg'];\n }\n return affixList.some(function (affix) {\n return lowerFileName.endsWith(affix);\n });\n } // This is something like a image/* mime type\n\n if (/\\/\\*$/.test(validType)) {\n return baseMimeType === validType.replace(/\\/.*$/, '');\n } // Full match\n\n if (mimeType === validType) {\n return true;\n } // Invalidate type should skip\n\n if (/^\\w+$/.test(validType)) {\n warning(false, \"Upload takes an invalidate 'accept' type '\".concat(validType, \"'.Skip for check.\"));\n return true;\n }\n return false;\n });\n }\n return true;\n});","function loopFiles(item, callback) {\n var dirReader = item.createReader();\n var fileList = [];\n function sequence() {\n dirReader.readEntries(function (entries) {\n var entryList = Array.prototype.slice.apply(entries);\n fileList = fileList.concat(entryList); // Check if all the file has been viewed\n\n var isFinished = !entryList.length;\n if (isFinished) {\n callback(fileList);\n } else {\n sequence();\n }\n });\n }\n sequence();\n}\nvar traverseFileTree = function traverseFileTree(files, callback, isAccepted) {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n var _traverseFileTree = function _traverseFileTree(item, path) {\n // eslint-disable-next-line no-param-reassign\n item.path = path || '';\n if (item.isFile) {\n item.file(function (file) {\n if (isAccepted(file)) {\n // https://github.com/ant-design/ant-design/issues/16426\n if (item.fullPath && !file.webkitRelativePath) {\n Object.defineProperties(file, {\n webkitRelativePath: {\n writable: true\n }\n }); // eslint-disable-next-line no-param-reassign\n\n file.webkitRelativePath = item.fullPath.replace(/^\\//, '');\n Object.defineProperties(file, {\n webkitRelativePath: {\n writable: false\n }\n });\n }\n callback([file]);\n }\n });\n } else if (item.isDirectory) {\n loopFiles(item, function (entries) {\n entries.forEach(function (entryItem) {\n _traverseFileTree(entryItem, \"\".concat(path).concat(item.name, \"/\"));\n });\n });\n }\n };\n files.forEach(function (file) {\n _traverseFileTree(file.webkitGetAsEntry());\n });\n};\nexport default traverseFileTree;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _regeneratorRuntime from \"@babel/runtime/helpers/esm/regeneratorRuntime\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _asyncToGenerator from \"@babel/runtime/helpers/esm/asyncToGenerator\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nvar _excluded = [\"component\", \"prefixCls\", \"className\", \"disabled\", \"id\", \"style\", \"multiple\", \"accept\", \"capture\", \"children\", \"directory\", \"openFileDialogOnClick\", \"onMouseEnter\", \"onMouseLeave\"];\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nimport defaultRequest from './request';\nimport getUid from './uid';\nimport attrAccept from './attr-accept';\nimport traverseFileTree from './traverseFileTree';\nvar AjaxUploader = /*#__PURE__*/function (_Component) {\n _inherits(AjaxUploader, _Component);\n var _super = _createSuper(AjaxUploader);\n function AjaxUploader() {\n var _this;\n _classCallCheck(this, AjaxUploader);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _this.state = {\n uid: getUid()\n };\n _this.reqs = {};\n _this.fileInput = void 0;\n _this._isMounted = void 0;\n _this.onChange = function (e) {\n var _this$props = _this.props,\n accept = _this$props.accept,\n directory = _this$props.directory;\n var files = e.target.files;\n var acceptedFiles = _toConsumableArray(files).filter(function (file) {\n return !directory || attrAccept(file, accept);\n });\n _this.uploadFiles(acceptedFiles);\n _this.reset();\n };\n _this.onClick = function (e) {\n var el = _this.fileInput;\n if (!el) {\n return;\n }\n var _this$props2 = _this.props,\n children = _this$props2.children,\n onClick = _this$props2.onClick;\n if (children && children.type === 'button') {\n var parent = el.parentNode;\n parent.focus();\n parent.querySelector('button').blur();\n }\n el.click();\n if (onClick) {\n onClick(e);\n }\n };\n _this.onKeyDown = function (e) {\n if (e.key === 'Enter') {\n _this.onClick(e);\n }\n };\n _this.onFileDrop = function (e) {\n var multiple = _this.props.multiple;\n e.preventDefault();\n if (e.type === 'dragover') {\n return;\n }\n if (_this.props.directory) {\n traverseFileTree(Array.prototype.slice.call(e.dataTransfer.items), _this.uploadFiles, function (_file) {\n return attrAccept(_file, _this.props.accept);\n });\n } else {\n var files = _toConsumableArray(e.dataTransfer.files).filter(function (file) {\n return attrAccept(file, _this.props.accept);\n });\n if (multiple === false) {\n files = files.slice(0, 1);\n }\n _this.uploadFiles(files);\n }\n };\n _this.uploadFiles = function (files) {\n var originFiles = _toConsumableArray(files);\n var postFiles = originFiles.map(function (file) {\n // eslint-disable-next-line no-param-reassign\n file.uid = getUid();\n return _this.processFile(file, originFiles);\n }); // Batch upload files\n\n Promise.all(postFiles).then(function (fileList) {\n var onBatchStart = _this.props.onBatchStart;\n onBatchStart === null || onBatchStart === void 0 ? void 0 : onBatchStart(fileList.map(function (_ref) {\n var origin = _ref.origin,\n parsedFile = _ref.parsedFile;\n return {\n file: origin,\n parsedFile: parsedFile\n };\n }));\n fileList.filter(function (file) {\n return file.parsedFile !== null;\n }).forEach(function (file) {\n _this.post(file);\n });\n });\n };\n _this.processFile = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(file, fileList) {\n var beforeUpload, transformedFile, action, mergedAction, data, mergedData, parsedData, parsedFile, mergedParsedFile;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n beforeUpload = _this.props.beforeUpload;\n transformedFile = file;\n if (!beforeUpload) {\n _context.next = 14;\n break;\n }\n _context.prev = 3;\n _context.next = 6;\n return beforeUpload(file, fileList);\n case 6:\n transformedFile = _context.sent;\n _context.next = 12;\n break;\n case 9:\n _context.prev = 9;\n _context.t0 = _context[\"catch\"](3);\n // Rejection will also trade as false\n transformedFile = false;\n case 12:\n if (!(transformedFile === false)) {\n _context.next = 14;\n break;\n }\n return _context.abrupt(\"return\", {\n origin: file,\n parsedFile: null,\n action: null,\n data: null\n });\n case 14:\n // Get latest action\n action = _this.props.action;\n if (!(typeof action === 'function')) {\n _context.next = 21;\n break;\n }\n _context.next = 18;\n return action(file);\n case 18:\n mergedAction = _context.sent;\n _context.next = 22;\n break;\n case 21:\n mergedAction = action;\n case 22:\n // Get latest data\n data = _this.props.data;\n if (!(typeof data === 'function')) {\n _context.next = 29;\n break;\n }\n _context.next = 26;\n return data(file);\n case 26:\n mergedData = _context.sent;\n _context.next = 30;\n break;\n case 29:\n mergedData = data;\n case 30:\n parsedData =\n // string type is from legacy `transformFile`.\n // Not sure if this will work since no related test case works with it\n (_typeof(transformedFile) === 'object' || typeof transformedFile === 'string') && transformedFile ? transformedFile : file;\n if (parsedData instanceof File) {\n parsedFile = parsedData;\n } else {\n parsedFile = new File([parsedData], file.name, {\n type: file.type\n });\n }\n mergedParsedFile = parsedFile;\n mergedParsedFile.uid = file.uid;\n return _context.abrupt(\"return\", {\n origin: file,\n data: mergedData,\n parsedFile: mergedParsedFile,\n action: mergedAction\n });\n case 35:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, null, [[3, 9]]);\n }));\n return function (_x, _x2) {\n return _ref2.apply(this, arguments);\n };\n }();\n _this.saveFileInput = function (node) {\n _this.fileInput = node;\n };\n return _this;\n }\n _createClass(AjaxUploader, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this._isMounted = true;\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this._isMounted = false;\n this.abort();\n }\n }, {\n key: \"post\",\n value: function post(_ref3) {\n var _this2 = this;\n var data = _ref3.data,\n origin = _ref3.origin,\n action = _ref3.action,\n parsedFile = _ref3.parsedFile;\n if (!this._isMounted) {\n return;\n }\n var _this$props3 = this.props,\n onStart = _this$props3.onStart,\n customRequest = _this$props3.customRequest,\n name = _this$props3.name,\n headers = _this$props3.headers,\n withCredentials = _this$props3.withCredentials,\n method = _this$props3.method;\n var uid = origin.uid;\n var request = customRequest || defaultRequest;\n var requestOption = {\n action: action,\n filename: name,\n data: data,\n file: parsedFile,\n headers: headers,\n withCredentials: withCredentials,\n method: method || 'post',\n onProgress: function onProgress(e) {\n var onProgress = _this2.props.onProgress;\n onProgress === null || onProgress === void 0 ? void 0 : onProgress(e, parsedFile);\n },\n onSuccess: function onSuccess(ret, xhr) {\n var onSuccess = _this2.props.onSuccess;\n onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess(ret, parsedFile, xhr);\n delete _this2.reqs[uid];\n },\n onError: function onError(err, ret) {\n var onError = _this2.props.onError;\n onError === null || onError === void 0 ? void 0 : onError(err, ret, parsedFile);\n delete _this2.reqs[uid];\n }\n };\n onStart(origin);\n this.reqs[uid] = request(requestOption);\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.setState({\n uid: getUid()\n });\n }\n }, {\n key: \"abort\",\n value: function abort(file) {\n var reqs = this.reqs;\n if (file) {\n var uid = file.uid ? file.uid : file;\n if (reqs[uid] && reqs[uid].abort) {\n reqs[uid].abort();\n }\n delete reqs[uid];\n } else {\n Object.keys(reqs).forEach(function (uid) {\n if (reqs[uid] && reqs[uid].abort) {\n reqs[uid].abort();\n }\n delete reqs[uid];\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _classNames;\n var _this$props4 = this.props,\n Tag = _this$props4.component,\n prefixCls = _this$props4.prefixCls,\n className = _this$props4.className,\n disabled = _this$props4.disabled,\n id = _this$props4.id,\n style = _this$props4.style,\n multiple = _this$props4.multiple,\n accept = _this$props4.accept,\n capture = _this$props4.capture,\n children = _this$props4.children,\n directory = _this$props4.directory,\n openFileDialogOnClick = _this$props4.openFileDialogOnClick,\n onMouseEnter = _this$props4.onMouseEnter,\n onMouseLeave = _this$props4.onMouseLeave,\n otherProps = _objectWithoutProperties(_this$props4, _excluded);\n var cls = classNames((_classNames = {}, _defineProperty(_classNames, prefixCls, true), _defineProperty(_classNames, \"\".concat(prefixCls, \"-disabled\"), disabled), _defineProperty(_classNames, className, className), _classNames)); // because input don't have directory/webkitdirectory type declaration\n\n var dirProps = directory ? {\n directory: 'directory',\n webkitdirectory: 'webkitdirectory'\n } : {};\n var events = disabled ? {} : {\n onClick: openFileDialogOnClick ? this.onClick : function () {},\n onKeyDown: openFileDialogOnClick ? this.onKeyDown : function () {},\n onMouseEnter: onMouseEnter,\n onMouseLeave: onMouseLeave,\n onDrop: this.onFileDrop,\n onDragOver: this.onFileDrop,\n tabIndex: '0'\n };\n return /*#__PURE__*/React.createElement(Tag, _extends({}, events, {\n className: cls,\n role: \"button\",\n style: style\n }), /*#__PURE__*/React.createElement(\"input\", _extends({}, pickAttrs(otherProps, {\n aria: true,\n data: true\n }), {\n id: id,\n type: \"file\",\n ref: this.saveFileInput,\n onClick: function onClick(e) {\n return e.stopPropagation();\n } // https://github.com/ant-design/ant-design/issues/19948\n ,\n\n key: this.state.uid,\n style: {\n display: 'none'\n },\n accept: accept\n }, dirProps, {\n multiple: multiple,\n onChange: this.onChange\n }, capture != null ? {\n capture: capture\n } : {})), children);\n }\n }]);\n return AjaxUploader;\n}(Component);\nexport default AjaxUploader;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\n\n/* eslint react/prop-types:0 */\nimport React, { Component } from 'react';\nimport AjaxUpload from './AjaxUploader';\nfunction empty() {}\nvar Upload = /*#__PURE__*/function (_Component) {\n _inherits(Upload, _Component);\n var _super = _createSuper(Upload);\n function Upload() {\n var _this;\n _classCallCheck(this, Upload);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _this.uploader = void 0;\n _this.saveUploader = function (node) {\n _this.uploader = node;\n };\n return _this;\n }\n _createClass(Upload, [{\n key: \"abort\",\n value: function abort(file) {\n this.uploader.abort(file);\n }\n }, {\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/React.createElement(AjaxUpload, _extends({}, this.props, {\n ref: this.saveUploader\n }));\n }\n }]);\n return Upload;\n}(Component);\nUpload.defaultProps = {\n component: 'span',\n prefixCls: 'rc-upload',\n data: {},\n headers: {},\n name: 'file',\n multipart: false,\n onStart: empty,\n onError: empty,\n onSuccess: empty,\n multiple: false,\n beforeUpload: null,\n customRequest: null,\n withCredentials: false,\n openFileDialogOnClick: true\n};\nexport default Upload;","import Upload from './Upload';\nexport default Upload;","import * as React from 'react';\nvar DisabledContext = /*#__PURE__*/React.createContext(false);\nexport var DisabledContextProvider = function DisabledContextProvider(_ref) {\n var children = _ref.children,\n disabled = _ref.disabled;\n var originDisabled = React.useContext(DisabledContext);\n return /*#__PURE__*/React.createElement(DisabledContext.Provider, {\n value: disabled !== null && disabled !== void 0 ? disabled : originDisabled\n }, children);\n};\nexport default DisabledContext;","import { createContext } from 'react';\nvar LocaleContext = /*#__PURE__*/createContext(undefined);\nexport default LocaleContext;","export default {\n // Options.jsx\n items_per_page: '/ page',\n jump_to: 'Go to',\n jump_to_confirm: 'confirm',\n page: 'Page',\n // Pagination.jsx\n prev_page: 'Previous Page',\n next_page: 'Next Page',\n prev_5: 'Previous 5 Pages',\n next_5: 'Next 5 Pages',\n prev_3: 'Previous 3 Pages',\n next_3: 'Next 3 Pages',\n page_size: 'Page Size'\n};","var locale = {\n locale: 'en_US',\n today: 'Today',\n now: 'Now',\n backToToday: 'Back to today',\n ok: 'OK',\n clear: 'Clear',\n month: 'Month',\n year: 'Year',\n timeSelect: 'select time',\n dateSelect: 'select date',\n weekSelect: 'Choose a week',\n monthSelect: 'Choose a month',\n yearSelect: 'Choose a year',\n decadeSelect: 'Choose a decade',\n yearFormat: 'YYYY',\n dateFormat: 'M/D/YYYY',\n dayFormat: 'D',\n dateTimeFormat: 'M/D/YYYY HH:mm:ss',\n monthBeforeYear: true,\n previousMonth: 'Previous month (PageUp)',\n nextMonth: 'Next month (PageDown)',\n previousYear: 'Last year (Control + left)',\n nextYear: 'Next year (Control + right)',\n previousDecade: 'Last decade',\n nextDecade: 'Next decade',\n previousCentury: 'Last century',\n nextCentury: 'Next century'\n};\nexport default locale;","var locale = {\n placeholder: 'Select time',\n rangePlaceholder: ['Start time', 'End time']\n};\nexport default locale;","import CalendarLocale from \"rc-picker/es/locale/en_US\";\nimport TimePickerLocale from '../../time-picker/locale/en_US';\n// Merge into a locale object\nvar locale = {\n lang: Object.assign({\n placeholder: 'Select date',\n yearPlaceholder: 'Select year',\n quarterPlaceholder: 'Select quarter',\n monthPlaceholder: 'Select month',\n weekPlaceholder: 'Select week',\n rangePlaceholder: ['Start date', 'End date'],\n rangeYearPlaceholder: ['Start year', 'End year'],\n rangeQuarterPlaceholder: ['Start quarter', 'End quarter'],\n rangeMonthPlaceholder: ['Start month', 'End month'],\n rangeWeekPlaceholder: ['Start week', 'End week']\n }, CalendarLocale),\n timePickerLocale: Object.assign({}, TimePickerLocale)\n};\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\nexport default locale;","/* eslint-disable no-template-curly-in-string */\nimport Pagination from \"rc-pagination/es/locale/en_US\";\nimport Calendar from '../calendar/locale/en_US';\nimport DatePicker from '../date-picker/locale/en_US';\nimport TimePicker from '../time-picker/locale/en_US';\nvar typeTemplate = '${label} is not a valid ${type}';\nvar localeValues = {\n locale: 'en',\n Pagination: Pagination,\n DatePicker: DatePicker,\n TimePicker: TimePicker,\n Calendar: Calendar,\n global: {\n placeholder: 'Please select'\n },\n Table: {\n filterTitle: 'Filter menu',\n filterConfirm: 'OK',\n filterReset: 'Reset',\n filterEmptyText: 'No filters',\n filterCheckall: 'Select all items',\n filterSearchPlaceholder: 'Search in filters',\n emptyText: 'No data',\n selectAll: 'Select current page',\n selectInvert: 'Invert current page',\n selectNone: 'Clear all data',\n selectionAll: 'Select all data',\n sortTitle: 'Sort',\n expand: 'Expand row',\n collapse: 'Collapse row',\n triggerDesc: 'Click to sort descending',\n triggerAsc: 'Click to sort ascending',\n cancelSort: 'Click to cancel sorting'\n },\n Tour: {\n Next: 'Next',\n Previous: 'Previous',\n Finish: 'Finish'\n },\n Modal: {\n okText: 'OK',\n cancelText: 'Cancel',\n justOkText: 'OK'\n },\n Popconfirm: {\n okText: 'OK',\n cancelText: 'Cancel'\n },\n Transfer: {\n titles: ['', ''],\n searchPlaceholder: 'Search here',\n itemUnit: 'item',\n itemsUnit: 'items',\n remove: 'Remove',\n selectCurrent: 'Select current page',\n removeCurrent: 'Remove current page',\n selectAll: 'Select all data',\n removeAll: 'Remove all data',\n selectInvert: 'Invert current page'\n },\n Upload: {\n uploading: 'Uploading...',\n removeFile: 'Remove file',\n uploadError: 'Upload error',\n previewFile: 'Preview file',\n downloadFile: 'Download file'\n },\n Empty: {\n description: 'No data'\n },\n Icon: {\n icon: 'icon'\n },\n Text: {\n edit: 'Edit',\n copy: 'Copy',\n copied: 'Copied',\n expand: 'Expand'\n },\n PageHeader: {\n back: 'Back'\n },\n Form: {\n optional: '(optional)',\n defaultValidateMessages: {\n default: 'Field validation error for ${label}',\n required: 'Please enter ${label}',\n enum: '${label} must be one of [${enum}]',\n whitespace: '${label} cannot be a blank character',\n date: {\n format: '${label} date format is invalid',\n parse: '${label} cannot be converted to a date',\n invalid: '${label} is an invalid date'\n },\n types: {\n string: typeTemplate,\n method: typeTemplate,\n array: typeTemplate,\n object: typeTemplate,\n number: typeTemplate,\n date: typeTemplate,\n boolean: typeTemplate,\n integer: typeTemplate,\n float: typeTemplate,\n regexp: typeTemplate,\n email: typeTemplate,\n url: typeTemplate,\n hex: typeTemplate\n },\n string: {\n len: '${label} must be ${len} characters',\n min: '${label} must be at least ${min} characters',\n max: '${label} must be up to ${max} characters',\n range: '${label} must be between ${min}-${max} characters'\n },\n number: {\n len: '${label} must be equal to ${len}',\n min: '${label} must be minimum ${min}',\n max: '${label} must be maximum ${max}',\n range: '${label} must be between ${min}-${max}'\n },\n array: {\n len: 'Must be ${len} ${label}',\n min: 'At least ${min} ${label}',\n max: 'At most ${max} ${label}',\n range: 'The amount of ${label} must be between ${min}-${max}'\n },\n pattern: {\n mismatch: '${label} does not match the pattern ${pattern}'\n }\n }\n },\n Image: {\n preview: 'Preview'\n },\n QRCode: {\n expired: 'QR code expired',\n refresh: 'Refresh'\n },\n ColorPicker: {\n presetEmpty: 'Empty'\n }\n};\nexport default localeValues;","import * as React from 'react';\nimport LocaleContext from './context';\nimport defaultLocaleData from './en_US';\nvar useLocale = function useLocale(componentName, defaultLocale) {\n var fullLocale = React.useContext(LocaleContext);\n var getLocale = React.useMemo(function () {\n var _a;\n var locale = defaultLocale || defaultLocaleData[componentName];\n var localeFromContext = (_a = fullLocale === null || fullLocale === void 0 ? void 0 : fullLocale[componentName]) !== null && _a !== void 0 ? _a : {};\n return Object.assign(Object.assign({}, typeof locale === 'function' ? locale() : locale), localeFromContext || {});\n }, [componentName, defaultLocale, fullLocale]);\n var getLocaleCode = React.useMemo(function () {\n var localeCode = fullLocale === null || fullLocale === void 0 ? void 0 : fullLocale.locale;\n // Had use LocaleProvide but didn't set locale\n if ((fullLocale === null || fullLocale === void 0 ? void 0 : fullLocale.exist) && !localeCode) {\n return defaultLocaleData.locale;\n }\n return localeCode;\n }, [fullLocale]);\n return [getLocale, getLocaleCode];\n};\nexport default useLocale;","// This icon file is generated automatically.\nvar FileTwoTone = {\n \"icon\": function render(primaryColor, secondaryColor) {\n return {\n \"tag\": \"svg\",\n \"attrs\": {\n \"viewBox\": \"64 64 896 896\",\n \"focusable\": \"false\"\n },\n \"children\": [{\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M534 352V136H232v752h560V394H576a42 42 0 01-42-42z\",\n \"fill\": secondaryColor\n }\n }, {\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0042 42h216v494z\",\n \"fill\": primaryColor\n }\n }]\n };\n },\n \"name\": \"file\",\n \"theme\": \"twotone\"\n};\nexport default FileTwoTone;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport FileTwoToneSvg from \"@ant-design/icons-svg/es/asn/FileTwoTone\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar FileTwoTone = function FileTwoTone(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: FileTwoToneSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n FileTwoTone.displayName = 'FileTwoTone';\n}\nexport default /*#__PURE__*/React.forwardRef(FileTwoTone);","// This icon file is generated automatically.\nvar LoadingOutlined = {\n \"icon\": {\n \"tag\": \"svg\",\n \"attrs\": {\n \"viewBox\": \"0 0 1024 1024\",\n \"focusable\": \"false\"\n },\n \"children\": [{\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z\"\n }\n }]\n },\n \"name\": \"loading\",\n \"theme\": \"outlined\"\n};\nexport default LoadingOutlined;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport LoadingOutlinedSvg from \"@ant-design/icons-svg/es/asn/LoadingOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar LoadingOutlined = function LoadingOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: LoadingOutlinedSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n LoadingOutlined.displayName = 'LoadingOutlined';\n}\nexport default /*#__PURE__*/React.forwardRef(LoadingOutlined);","// This icon file is generated automatically.\nvar PaperClipOutlined = {\n \"icon\": {\n \"tag\": \"svg\",\n \"attrs\": {\n \"viewBox\": \"64 64 896 896\",\n \"focusable\": \"false\"\n },\n \"children\": [{\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M779.3 196.6c-94.2-94.2-247.6-94.2-341.7 0l-261 260.8c-1.7 1.7-2.6 4-2.6 6.4s.9 4.7 2.6 6.4l36.9 36.9a9 9 0 0012.7 0l261-260.8c32.4-32.4 75.5-50.2 121.3-50.2s88.9 17.8 121.2 50.2c32.4 32.4 50.2 75.5 50.2 121.2 0 45.8-17.8 88.8-50.2 121.2l-266 265.9-43.1 43.1c-40.3 40.3-105.8 40.3-146.1 0-19.5-19.5-30.2-45.4-30.2-73s10.7-53.5 30.2-73l263.9-263.8c6.7-6.6 15.5-10.3 24.9-10.3h.1c9.4 0 18.1 3.7 24.7 10.3 6.7 6.7 10.3 15.5 10.3 24.9 0 9.3-3.7 18.1-10.3 24.7L372.4 653c-1.7 1.7-2.6 4-2.6 6.4s.9 4.7 2.6 6.4l36.9 36.9a9 9 0 0012.7 0l215.6-215.6c19.9-19.9 30.8-46.3 30.8-74.4s-11-54.6-30.8-74.4c-41.1-41.1-107.9-41-149 0L463 364 224.8 602.1A172.22 172.22 0 00174 724.8c0 46.3 18.1 89.8 50.8 122.5 33.9 33.8 78.3 50.7 122.7 50.7 44.4 0 88.8-16.9 122.6-50.7l309.2-309C824.8 492.7 850 432 850 367.5c.1-64.6-25.1-125.3-70.7-170.9z\"\n }\n }]\n },\n \"name\": \"paper-clip\",\n \"theme\": \"outlined\"\n};\nexport default PaperClipOutlined;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport PaperClipOutlinedSvg from \"@ant-design/icons-svg/es/asn/PaperClipOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar PaperClipOutlined = function PaperClipOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: PaperClipOutlinedSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n PaperClipOutlined.displayName = 'PaperClipOutlined';\n}\nexport default /*#__PURE__*/React.forwardRef(PaperClipOutlined);","// This icon file is generated automatically.\nvar PictureTwoTone = {\n \"icon\": function render(primaryColor, secondaryColor) {\n return {\n \"tag\": \"svg\",\n \"attrs\": {\n \"viewBox\": \"64 64 896 896\",\n \"focusable\": \"false\"\n },\n \"children\": [{\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 632H136v-39.9l138.5-164.3 150.1 178L658.1 489 888 761.6V792zm0-129.8L664.2 396.8c-3.2-3.8-9-3.8-12.2 0L424.6 666.4l-144-170.7c-3.2-3.8-9-3.8-12.2 0L136 652.7V232h752v430.2z\",\n \"fill\": primaryColor\n }\n }, {\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M424.6 765.8l-150.1-178L136 752.1V792h752v-30.4L658.1 489z\",\n \"fill\": secondaryColor\n }\n }, {\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M136 652.7l132.4-157c3.2-3.8 9-3.8 12.2 0l144 170.7L652 396.8c3.2-3.8 9-3.8 12.2 0L888 662.2V232H136v420.7zM304 280a88 88 0 110 176 88 88 0 010-176z\",\n \"fill\": secondaryColor\n }\n }, {\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M276 368a28 28 0 1056 0 28 28 0 10-56 0z\",\n \"fill\": secondaryColor\n }\n }, {\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M304 456a88 88 0 100-176 88 88 0 000 176zm0-116c15.5 0 28 12.5 28 28s-12.5 28-28 28-28-12.5-28-28 12.5-28 28-28z\",\n \"fill\": primaryColor\n }\n }]\n };\n },\n \"name\": \"picture\",\n \"theme\": \"twotone\"\n};\nexport default PictureTwoTone;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport PictureTwoToneSvg from \"@ant-design/icons-svg/es/asn/PictureTwoTone\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar PictureTwoTone = function PictureTwoTone(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: PictureTwoToneSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n PictureTwoTone.displayName = 'PictureTwoTone';\n}\nexport default /*#__PURE__*/React.forwardRef(PictureTwoTone);","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport * as React from 'react';\nexport default function useForceUpdate() {\n var _React$useReducer = React.useReducer(function (x) {\n return x + 1;\n }, 0),\n _React$useReducer2 = _slicedToArray(_React$useReducer, 2),\n forceUpdate = _React$useReducer2[1];\n return forceUpdate;\n}","import _regeneratorRuntime from \"@babel/runtime/helpers/esm/regeneratorRuntime\";\nimport _asyncToGenerator from \"@babel/runtime/helpers/esm/asyncToGenerator\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as ReactDOM from 'react-dom';\n// Let compiler not to search module usage\nvar fullClone = _objectSpread({}, ReactDOM);\nvar version = fullClone.version,\n reactRender = fullClone.render,\n unmountComponentAtNode = fullClone.unmountComponentAtNode;\nvar createRoot;\ntry {\n var mainVersion = Number((version || '').split('.')[0]);\n if (mainVersion >= 18) {\n createRoot = fullClone.createRoot;\n }\n} catch (e) {\n // Do nothing;\n}\nfunction toggleWarning(skip) {\n var __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = fullClone.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n if (__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED && _typeof(__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED) === 'object') {\n __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.usingClientEntryPoint = skip;\n }\n}\nvar MARK = '__rc_react_root__';\n\n// ========================== Render ==========================\n\nfunction modernRender(node, container) {\n toggleWarning(true);\n var root = container[MARK] || createRoot(container);\n toggleWarning(false);\n root.render(node);\n container[MARK] = root;\n}\nfunction legacyRender(node, container) {\n reactRender(node, container);\n}\n\n/** @private Test usage. Not work in prod */\nexport function _r(node, container) {\n if (process.env.NODE_ENV !== 'production') {\n return legacyRender(node, container);\n }\n}\nexport function render(node, container) {\n if (createRoot) {\n modernRender(node, container);\n return;\n }\n legacyRender(node, container);\n}\n\n// ========================= Unmount ==========================\nfunction modernUnmount(_x) {\n return _modernUnmount.apply(this, arguments);\n}\nfunction _modernUnmount() {\n _modernUnmount = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(container) {\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n return _context.abrupt(\"return\", Promise.resolve().then(function () {\n var _container$MARK;\n (_container$MARK = container[MARK]) === null || _container$MARK === void 0 ? void 0 : _container$MARK.unmount();\n delete container[MARK];\n }));\n case 1:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return _modernUnmount.apply(this, arguments);\n}\nfunction legacyUnmount(container) {\n unmountComponentAtNode(container);\n}\n\n/** @private Test usage. Not work in prod */\nexport function _u(container) {\n if (process.env.NODE_ENV !== 'production') {\n return legacyUnmount(container);\n }\n}\nexport function unmount(_x2) {\n return _unmount.apply(this, arguments);\n}\nfunction _unmount() {\n _unmount = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(container) {\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n if (!(createRoot !== undefined)) {\n _context2.next = 2;\n break;\n }\n return _context2.abrupt(\"return\", modernUnmount(container));\n case 2:\n legacyUnmount(container);\n case 3:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }));\n return _unmount.apply(this, arguments);\n}","export default (function (element) {\n if (!element) {\n return false;\n }\n if (element instanceof Element) {\n if (element.offsetParent) {\n return true;\n }\n if (element.getBBox) {\n var _getBBox = element.getBBox(),\n width = _getBBox.width,\n height = _getBBox.height;\n if (width || height) {\n return true;\n }\n }\n if (element.getBoundingClientRect) {\n var _element$getBoundingC = element.getBoundingClientRect(),\n _width = _element$getBoundingC.width,\n _height = _element$getBoundingC.height;\n if (_width || _height) {\n return true;\n }\n }\n }\n return false;\n});","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { genComponentStyleHook } from '../../theme/internal';\nvar genWaveStyle = function genWaveStyle(token) {\n var componentCls = token.componentCls,\n colorPrimary = token.colorPrimary;\n return _defineProperty({}, componentCls, {\n position: 'absolute',\n background: 'transparent',\n pointerEvents: 'none',\n boxSizing: 'border-box',\n color: \"var(--wave-color, \".concat(colorPrimary, \")\"),\n boxShadow: \"0 0 0 0 currentcolor\",\n opacity: 0.2,\n // =================== Motion ===================\n '&.wave-motion-appear': {\n transition: [\"box-shadow 0.4s \".concat(token.motionEaseOutCirc), \"opacity 2s \".concat(token.motionEaseOutCirc)].join(','),\n '&-active': {\n boxShadow: \"0 0 0 6px currentcolor\",\n opacity: 0\n },\n '&.wave-quick': {\n transition: [\"box-shadow 0.3s \".concat(token.motionEaseInOut), \"opacity 0.35s \".concat(token.motionEaseInOut)].join(',')\n }\n }\n });\n};\nexport default genComponentStyleHook('Wave', function (token) {\n return [genWaveStyle(token)];\n});","export function isNotGrey(color) {\n // eslint-disable-next-line no-useless-escape\n var match = (color || '').match(/rgba?\\((\\d*), (\\d*), (\\d*)(, [\\d.]*)?\\)/);\n if (match && match[1] && match[2] && match[3]) {\n return !(match[1] === match[2] && match[2] === match[3]);\n }\n return true;\n}\nexport function isValidWaveColor(color) {\n return color && color !== '#fff' && color !== '#ffffff' && color !== 'rgb(255, 255, 255)' && color !== 'rgba(255, 255, 255, 1)' && isNotGrey(color) && !/rgba\\((?:\\d*, ){3}0\\)/.test(color) &&\n // any transparent rgba color\n color !== 'transparent';\n}\nexport function getTargetWaveColor(node) {\n var _getComputedStyle = getComputedStyle(node),\n borderTopColor = _getComputedStyle.borderTopColor,\n borderColor = _getComputedStyle.borderColor,\n backgroundColor = _getComputedStyle.backgroundColor;\n if (isValidWaveColor(borderTopColor)) {\n return borderTopColor;\n }\n if (isValidWaveColor(borderColor)) {\n return borderColor;\n }\n if (isValidWaveColor(backgroundColor)) {\n return backgroundColor;\n }\n return null;\n}","export var TARGET_CLS = 'ant-wave-target';","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport { render, unmount } from \"rc-util/es/React/render\";\nimport raf from \"rc-util/es/raf\";\nimport * as React from 'react';\nimport { getTargetWaveColor } from './util';\nimport { TARGET_CLS } from './interface';\nfunction validateNum(value) {\n return Number.isNaN(value) ? 0 : value;\n}\nvar WaveEffect = function WaveEffect(props) {\n var className = props.className,\n target = props.target,\n component = props.component;\n var divRef = React.useRef(null);\n var _React$useState = React.useState(null),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n color = _React$useState2[0],\n setWaveColor = _React$useState2[1];\n var _React$useState3 = React.useState([]),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n borderRadius = _React$useState4[0],\n setBorderRadius = _React$useState4[1];\n var _React$useState5 = React.useState(0),\n _React$useState6 = _slicedToArray(_React$useState5, 2),\n left = _React$useState6[0],\n setLeft = _React$useState6[1];\n var _React$useState7 = React.useState(0),\n _React$useState8 = _slicedToArray(_React$useState7, 2),\n top = _React$useState8[0],\n setTop = _React$useState8[1];\n var _React$useState9 = React.useState(0),\n _React$useState10 = _slicedToArray(_React$useState9, 2),\n width = _React$useState10[0],\n setWidth = _React$useState10[1];\n var _React$useState11 = React.useState(0),\n _React$useState12 = _slicedToArray(_React$useState11, 2),\n height = _React$useState12[0],\n setHeight = _React$useState12[1];\n var _React$useState13 = React.useState(false),\n _React$useState14 = _slicedToArray(_React$useState13, 2),\n enabled = _React$useState14[0],\n setEnabled = _React$useState14[1];\n var waveStyle = {\n left: left,\n top: top,\n width: width,\n height: height,\n borderRadius: borderRadius.map(function (radius) {\n return \"\".concat(radius, \"px\");\n }).join(' ')\n };\n if (color) {\n waveStyle['--wave-color'] = color;\n }\n function syncPos() {\n var nodeStyle = getComputedStyle(target);\n // Get wave color from target\n setWaveColor(getTargetWaveColor(target));\n var isStatic = nodeStyle.position === 'static';\n // Rect\n var borderLeftWidth = nodeStyle.borderLeftWidth,\n borderTopWidth = nodeStyle.borderTopWidth;\n setLeft(isStatic ? target.offsetLeft : validateNum(-parseFloat(borderLeftWidth)));\n setTop(isStatic ? target.offsetTop : validateNum(-parseFloat(borderTopWidth)));\n setWidth(target.offsetWidth);\n setHeight(target.offsetHeight);\n // Get border radius\n var borderTopLeftRadius = nodeStyle.borderTopLeftRadius,\n borderTopRightRadius = nodeStyle.borderTopRightRadius,\n borderBottomLeftRadius = nodeStyle.borderBottomLeftRadius,\n borderBottomRightRadius = nodeStyle.borderBottomRightRadius;\n setBorderRadius([borderTopLeftRadius, borderTopRightRadius, borderBottomRightRadius, borderBottomLeftRadius].map(function (radius) {\n return validateNum(parseFloat(radius));\n }));\n }\n React.useEffect(function () {\n if (target) {\n // We need delay to check position here\n // since UI may change after click\n var id = raf(function () {\n syncPos();\n setEnabled(true);\n });\n // Add resize observer to follow size\n var resizeObserver;\n if (typeof ResizeObserver !== 'undefined') {\n resizeObserver = new ResizeObserver(syncPos);\n resizeObserver.observe(target);\n }\n return function () {\n raf.cancel(id);\n resizeObserver === null || resizeObserver === void 0 ? void 0 : resizeObserver.disconnect();\n };\n }\n }, []);\n if (!enabled) {\n return null;\n }\n var isSmallComponent = (component === 'Checkbox' || component === 'Radio') && (target === null || target === void 0 ? void 0 : target.classList.contains(TARGET_CLS));\n return /*#__PURE__*/React.createElement(CSSMotion, {\n visible: true,\n motionAppear: true,\n motionName: \"wave-motion\",\n motionDeadline: 5000,\n onAppearEnd: function onAppearEnd(_, event) {\n var _a;\n if (event.deadline || event.propertyName === 'opacity') {\n var holder = (_a = divRef.current) === null || _a === void 0 ? void 0 : _a.parentElement;\n unmount(holder).then(function () {\n holder === null || holder === void 0 ? void 0 : holder.remove();\n });\n }\n return false;\n }\n }, function (_ref) {\n var motionClassName = _ref.className;\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: divRef,\n className: classNames(className, {\n 'wave-quick': isSmallComponent\n }, motionClassName),\n style: waveStyle\n });\n });\n};\nvar showWaveEffect = function showWaveEffect(target, info) {\n var _a;\n var component = info.component;\n // Skip for unchecked checkbox\n if (component === 'Checkbox' && !((_a = target.querySelector('input')) === null || _a === void 0 ? void 0 : _a.checked)) {\n return;\n }\n // Create holder\n var holder = document.createElement('div');\n holder.style.position = 'absolute';\n holder.style.left = '0px';\n holder.style.top = '0px';\n target === null || target === void 0 ? void 0 : target.insertBefore(holder, target === null || target === void 0 ? void 0 : target.firstChild);\n render( /*#__PURE__*/React.createElement(WaveEffect, Object.assign({}, info, {\n target: target\n })), holder);\n};\nexport default showWaveEffect;","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport classNames from 'classnames';\nimport { composeRef, supportRef } from \"rc-util/es/ref\";\nimport isVisible from \"rc-util/es/Dom/isVisible\";\nimport React, { useContext, useRef } from 'react';\nimport { ConfigContext } from '../../config-provider';\nimport { cloneElement } from '../reactNode';\nimport useStyle from './style';\nimport useWave from './useWave';\nvar Wave = function Wave(props) {\n var children = props.children,\n disabled = props.disabled,\n component = props.component;\n var _useContext = useContext(ConfigContext),\n getPrefixCls = _useContext.getPrefixCls;\n var containerRef = useRef(null);\n // ============================== Style ===============================\n var prefixCls = getPrefixCls('wave');\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n hashId = _useStyle2[1];\n // =============================== Wave ===============================\n var showWave = useWave(containerRef, classNames(prefixCls, hashId), component);\n // ============================== Effect ==============================\n React.useEffect(function () {\n var node = containerRef.current;\n if (!node || node.nodeType !== 1 || disabled) {\n return;\n }\n // Click handler\n var onClick = function onClick(e) {\n // Fix radio button click twice\n if (!isVisible(e.target) ||\n // No need wave\n !node.getAttribute || node.getAttribute('disabled') || node.disabled || node.className.includes('disabled') || node.className.includes('-leave')) {\n return;\n }\n showWave(e);\n };\n // Bind events\n node.addEventListener('click', onClick, true);\n return function () {\n node.removeEventListener('click', onClick, true);\n };\n }, [disabled]);\n // ============================== Render ==============================\n if (! /*#__PURE__*/React.isValidElement(children)) {\n return children !== null && children !== void 0 ? children : null;\n }\n var ref = supportRef(children) ? composeRef(children.ref, containerRef) : containerRef;\n return cloneElement(children, {\n ref: ref\n });\n};\nif (process.env.NODE_ENV !== 'production') {\n Wave.displayName = 'Wave';\n}\nexport default Wave;","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport * as React from 'react';\nimport useEvent from \"rc-util/es/hooks/useEvent\";\nimport raf from \"rc-util/es/raf\";\nimport showWaveEffect from './WaveEffect';\nimport { ConfigContext } from '../../config-provider';\nimport useToken from '../../theme/useToken';\nimport { TARGET_CLS } from './interface';\nexport default function useWave(nodeRef, className, component) {\n var _React$useContext = React.useContext(ConfigContext),\n wave = _React$useContext.wave;\n var _useToken = useToken(),\n _useToken2 = _slicedToArray(_useToken, 3),\n token = _useToken2[1],\n hashId = _useToken2[2];\n var showWave = useEvent(function (event) {\n var node = nodeRef.current;\n if ((wave === null || wave === void 0 ? void 0 : wave.disabled) || !node) {\n return;\n }\n var targetNode = node.querySelector(\".\".concat(TARGET_CLS)) || node;\n var _ref = wave || {},\n showEffect = _ref.showEffect;\n // Customize wave effect\n (showEffect || showWaveEffect)(targetNode, {\n className: className,\n token: token,\n component: component,\n event: event,\n hashId: hashId\n });\n });\n var rafId = React.useRef();\n // Merge trigger event into one for each frame\n var showDebounceWave = function showDebounceWave(event) {\n raf.cancel(rafId.current);\n rafId.current = raf(function () {\n showWave(event);\n });\n };\n return showDebounceWave;\n}","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport toArray from \"rc-util/es/Children/toArray\";\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport useSize from '../config-provider/hooks/useSize';\nimport useStyle from './style';\nexport var SpaceCompactItemContext = /*#__PURE__*/React.createContext(null);\nexport var useCompactItemContext = function useCompactItemContext(prefixCls, direction) {\n var compactItemContext = React.useContext(SpaceCompactItemContext);\n var compactItemClassnames = React.useMemo(function () {\n var _classNames;\n if (!compactItemContext) {\n return '';\n }\n var compactDirection = compactItemContext.compactDirection,\n isFirstItem = compactItemContext.isFirstItem,\n isLastItem = compactItemContext.isLastItem;\n var separator = compactDirection === 'vertical' ? '-vertical-' : '-';\n return classNames(\"\".concat(prefixCls, \"-compact\").concat(separator, \"item\"), (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-compact\").concat(separator, \"first-item\"), isFirstItem), _defineProperty(_classNames, \"\".concat(prefixCls, \"-compact\").concat(separator, \"last-item\"), isLastItem), _defineProperty(_classNames, \"\".concat(prefixCls, \"-compact\").concat(separator, \"item-rtl\"), direction === 'rtl'), _classNames));\n }, [prefixCls, direction, compactItemContext]);\n return {\n compactSize: compactItemContext === null || compactItemContext === void 0 ? void 0 : compactItemContext.compactSize,\n compactDirection: compactItemContext === null || compactItemContext === void 0 ? void 0 : compactItemContext.compactDirection,\n compactItemClassnames: compactItemClassnames\n };\n};\nexport var NoCompactStyle = function NoCompactStyle(_ref) {\n var children = _ref.children;\n return /*#__PURE__*/React.createElement(SpaceCompactItemContext.Provider, {\n value: null\n }, children);\n};\nvar CompactItem = function CompactItem(_a) {\n var children = _a.children,\n otherProps = __rest(_a, [\"children\"]);\n return /*#__PURE__*/React.createElement(SpaceCompactItemContext.Provider, {\n value: otherProps\n }, children);\n};\nvar Compact = function Compact(props) {\n var _classNames2;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n directionConfig = _React$useContext.direction;\n var size = props.size,\n direction = props.direction,\n block = props.block,\n customizePrefixCls = props.prefixCls,\n className = props.className,\n rootClassName = props.rootClassName,\n children = props.children,\n restProps = __rest(props, [\"size\", \"direction\", \"block\", \"prefixCls\", \"className\", \"rootClassName\", \"children\"]);\n var mergedSize = useSize(function (ctx) {\n return size !== null && size !== void 0 ? size : ctx;\n });\n var prefixCls = getPrefixCls('space-compact', customizePrefixCls);\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n var clx = classNames(prefixCls, hashId, (_classNames2 = {}, _defineProperty(_classNames2, \"\".concat(prefixCls, \"-rtl\"), directionConfig === 'rtl'), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-block\"), block), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-vertical\"), direction === 'vertical'), _classNames2), className, rootClassName);\n var compactItemContext = React.useContext(SpaceCompactItemContext);\n var childNodes = toArray(children);\n var nodes = React.useMemo(function () {\n return childNodes.map(function (child, i) {\n var key = child && child.key || \"\".concat(prefixCls, \"-item-\").concat(i);\n return /*#__PURE__*/React.createElement(CompactItem, {\n key: key,\n compactSize: mergedSize,\n compactDirection: direction,\n isFirstItem: i === 0 && (!compactItemContext || (compactItemContext === null || compactItemContext === void 0 ? void 0 : compactItemContext.isFirstItem)),\n isLastItem: i === childNodes.length - 1 && (!compactItemContext || (compactItemContext === null || compactItemContext === void 0 ? void 0 : compactItemContext.isLastItem))\n }, child);\n });\n }, [size, childNodes, compactItemContext]);\n // =========================== Render ===========================\n if (childNodes.length === 0) {\n return null;\n }\n return wrapSSR( /*#__PURE__*/React.createElement(\"div\", Object.assign({\n className: clx\n }, restProps), nodes));\n};\nexport default Compact;","import React, { forwardRef } from 'react';\nimport classNames from 'classnames';\nvar IconWrapper = /*#__PURE__*/forwardRef(function (props, ref) {\n var className = props.className,\n style = props.style,\n children = props.children,\n prefixCls = props.prefixCls;\n var iconWrapperCls = classNames(\"\".concat(prefixCls, \"-icon\"), className);\n return /*#__PURE__*/React.createElement(\"span\", {\n ref: ref,\n className: iconWrapperCls,\n style: style\n }, children);\n});\nexport default IconWrapper;","import LoadingOutlined from \"@ant-design/icons/es/icons/LoadingOutlined\";\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport React, { forwardRef } from 'react';\nimport IconWrapper from './IconWrapper';\nvar InnerLoadingIcon = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var prefixCls = _ref.prefixCls,\n className = _ref.className,\n style = _ref.style,\n iconClassName = _ref.iconClassName;\n var mergedIconCls = classNames(\"\".concat(prefixCls, \"-loading-icon\"), className);\n return /*#__PURE__*/React.createElement(IconWrapper, {\n prefixCls: prefixCls,\n className: mergedIconCls,\n style: style,\n ref: ref\n }, /*#__PURE__*/React.createElement(LoadingOutlined, {\n className: iconClassName\n }));\n});\nvar getCollapsedWidth = function getCollapsedWidth() {\n return {\n width: 0,\n opacity: 0,\n transform: 'scale(0)'\n };\n};\nvar getRealWidth = function getRealWidth(node) {\n return {\n width: node.scrollWidth,\n opacity: 1,\n transform: 'scale(1)'\n };\n};\nvar LoadingIcon = function LoadingIcon(props) {\n var prefixCls = props.prefixCls,\n loading = props.loading,\n existIcon = props.existIcon,\n className = props.className,\n style = props.style;\n var visible = !!loading;\n if (existIcon) {\n return /*#__PURE__*/React.createElement(InnerLoadingIcon, {\n prefixCls: prefixCls,\n className: className,\n style: style\n });\n }\n return /*#__PURE__*/React.createElement(CSSMotion, {\n visible: visible,\n // We do not really use this motionName\n motionName: \"\".concat(prefixCls, \"-loading-icon-motion\"),\n removeOnLeave: true,\n onAppearStart: getCollapsedWidth,\n onAppearActive: getRealWidth,\n onEnterStart: getCollapsedWidth,\n onEnterActive: getRealWidth,\n onLeaveStart: getRealWidth,\n onLeaveActive: getCollapsedWidth\n }, function (_ref2, ref) {\n var motionCls = _ref2.className,\n motionStyle = _ref2.style;\n return /*#__PURE__*/React.createElement(InnerLoadingIcon, {\n prefixCls: prefixCls,\n className: className,\n style: Object.assign(Object.assign({}, style), motionStyle),\n ref: ref,\n iconClassName: motionCls\n });\n });\n};\nexport default LoadingIcon;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport warning from '../_util/warning';\nimport { ConfigContext } from '../config-provider';\nimport { useToken } from '../theme/internal';\nexport var GroupSizeContext = /*#__PURE__*/React.createContext(undefined);\nvar ButtonGroup = function ButtonGroup(props) {\n var _classNames;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n var customizePrefixCls = props.prefixCls,\n size = props.size,\n className = props.className,\n others = __rest(props, [\"prefixCls\", \"size\", \"className\"]);\n var prefixCls = getPrefixCls('btn-group', customizePrefixCls);\n var _useToken = useToken(),\n _useToken2 = _slicedToArray(_useToken, 3),\n hashId = _useToken2[2];\n var sizeCls = '';\n switch (size) {\n case 'large':\n sizeCls = 'lg';\n break;\n case 'small':\n sizeCls = 'sm';\n break;\n case 'middle':\n case undefined:\n break;\n default:\n process.env.NODE_ENV !== \"production\" ? warning(!size, 'Button.Group', 'Invalid prop `size`.') : void 0;\n }\n var classes = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(sizeCls), sizeCls), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _classNames), className, hashId);\n return /*#__PURE__*/React.createElement(GroupSizeContext.Provider, {\n value: size\n }, /*#__PURE__*/React.createElement(\"div\", Object.assign({}, others, {\n className: classes\n })));\n};\nexport default ButtonGroup;","import React from 'react';\nimport { cloneElement, isFragment } from '../_util/reactNode';\nvar rxTwoCNChar = /^[\\u4e00-\\u9fa5]{2}$/;\nexport var isTwoCNChar = rxTwoCNChar.test.bind(rxTwoCNChar);\nexport function isString(str) {\n return typeof str === 'string';\n}\nexport function isUnBorderedButtonType(type) {\n return type === 'text' || type === 'link';\n}\nfunction splitCNCharsBySpace(child, needInserted) {\n if (child === null || child === undefined) {\n return;\n }\n var SPACE = needInserted ? ' ' : '';\n if (typeof child !== 'string' && typeof child !== 'number' && isString(child.type) && isTwoCNChar(child.props.children)) {\n return cloneElement(child, {\n children: child.props.children.split('').join(SPACE)\n });\n }\n if (isString(child)) {\n return isTwoCNChar(child) ? /*#__PURE__*/React.createElement(\"span\", null, child.split('').join(SPACE)) : /*#__PURE__*/React.createElement(\"span\", null, child);\n }\n if (isFragment(child)) {\n return /*#__PURE__*/React.createElement(\"span\", null, child);\n }\n return child;\n}\nexport function spaceChildren(children, needInserted) {\n var isPrevChildPure = false;\n var childList = [];\n React.Children.forEach(children, function (child) {\n var type = typeof child;\n var isCurrentChildPure = type === 'string' || type === 'number';\n if (isPrevChildPure && isCurrentChildPure) {\n var lastIndex = childList.length - 1;\n var lastChild = childList[lastIndex];\n childList[lastIndex] = \"\".concat(lastChild).concat(child);\n } else {\n childList.push(child);\n }\n isPrevChildPure = isCurrentChildPure;\n });\n return React.Children.map(childList, function (child) {\n return splitCNCharsBySpace(child, needInserted);\n });\n}\nvar ButtonTypes = ['default', 'primary', 'dashed', 'link', 'text'];\nvar ButtonShapes = ['default', 'circle', 'round'];\nvar ButtonHTMLTypes = ['submit', 'button', 'reset'];","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\n// handle border collapse\nfunction compactItemBorder(token, parentCls, options) {\n var _ref2;\n var focusElCls = options.focusElCls,\n focus = options.focus,\n borderElCls = options.borderElCls;\n var childCombinator = borderElCls ? '> *' : '';\n var hoverEffects = ['hover', focus ? 'focus' : null, 'active'].filter(Boolean).map(function (n) {\n return \"&:\".concat(n, \" \").concat(childCombinator);\n }).join(',');\n return _ref2 = {}, _defineProperty(_ref2, \"&-item:not(\".concat(parentCls, \"-last-item)\"), {\n marginInlineEnd: -token.lineWidth\n }), _defineProperty(_ref2, '&-item', Object.assign(Object.assign(_defineProperty({}, hoverEffects, {\n zIndex: 2\n }), focusElCls ? _defineProperty({}, \"&\".concat(focusElCls), {\n zIndex: 2\n }) : {}), _defineProperty({}, \"&[disabled] \".concat(childCombinator), {\n zIndex: 0\n }))), _ref2;\n}\n// handle border-radius\nfunction compactItemBorderRadius(prefixCls, parentCls, options) {\n var _ref3;\n var borderElCls = options.borderElCls;\n var childCombinator = borderElCls ? \"> \".concat(borderElCls) : '';\n return _ref3 = {}, _defineProperty(_ref3, \"&-item:not(\".concat(parentCls, \"-first-item):not(\").concat(parentCls, \"-last-item) \").concat(childCombinator), {\n borderRadius: 0\n }), _defineProperty(_ref3, \"&-item:not(\".concat(parentCls, \"-last-item)\").concat(parentCls, \"-first-item\"), _defineProperty({}, \"& \".concat(childCombinator, \", &\").concat(prefixCls, \"-sm \").concat(childCombinator, \", &\").concat(prefixCls, \"-lg \").concat(childCombinator), {\n borderStartEndRadius: 0,\n borderEndEndRadius: 0\n })), _defineProperty(_ref3, \"&-item:not(\".concat(parentCls, \"-first-item)\").concat(parentCls, \"-last-item\"), _defineProperty({}, \"& \".concat(childCombinator, \", &\").concat(prefixCls, \"-sm \").concat(childCombinator, \", &\").concat(prefixCls, \"-lg \").concat(childCombinator), {\n borderStartStartRadius: 0,\n borderEndStartRadius: 0\n })), _ref3;\n}\nexport function genCompactItemStyle(token) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n focus: true\n };\n var componentCls = token.componentCls;\n var compactCls = \"\".concat(componentCls, \"-compact\");\n return _defineProperty({}, compactCls, Object.assign(Object.assign({}, compactItemBorder(token, compactCls, options)), compactItemBorderRadius(componentCls, compactCls, options)));\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction compactItemVerticalBorder(token, parentCls) {\n var _ref;\n return _ref = {}, _defineProperty(_ref, \"&-item:not(\".concat(parentCls, \"-last-item)\"), {\n marginBottom: -token.lineWidth\n }), _defineProperty(_ref, '&-item', {\n '&:hover,&:focus,&:active': {\n zIndex: 2\n },\n '&[disabled]': {\n zIndex: 0\n }\n }), _ref;\n}\nfunction compactItemBorderVerticalRadius(prefixCls, parentCls) {\n var _ref2;\n return _ref2 = {}, _defineProperty(_ref2, \"&-item:not(\".concat(parentCls, \"-first-item):not(\").concat(parentCls, \"-last-item)\"), {\n borderRadius: 0\n }), _defineProperty(_ref2, \"&-item\".concat(parentCls, \"-first-item:not(\").concat(parentCls, \"-last-item)\"), _defineProperty({}, \"&, &\".concat(prefixCls, \"-sm, &\").concat(prefixCls, \"-lg\"), {\n borderEndEndRadius: 0,\n borderEndStartRadius: 0\n })), _defineProperty(_ref2, \"&-item\".concat(parentCls, \"-last-item:not(\").concat(parentCls, \"-first-item)\"), _defineProperty({}, \"&, &\".concat(prefixCls, \"-sm, &\").concat(prefixCls, \"-lg\"), {\n borderStartStartRadius: 0,\n borderStartEndRadius: 0\n })), _ref2;\n}\nexport function genCompactItemVerticalStyle(token) {\n var compactCls = \"\".concat(token.componentCls, \"-compact-vertical\");\n return _defineProperty({}, compactCls, Object.assign(Object.assign({}, compactItemVerticalBorder(token, compactCls)), compactItemBorderVerticalRadius(token.componentCls, compactCls)));\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nvar genButtonBorderStyle = function genButtonBorderStyle(buttonTypeCls, borderColor) {\n return _defineProperty({}, \"> span, > \".concat(buttonTypeCls), {\n '&:not(:last-child)': _defineProperty({}, \"&, & > \".concat(buttonTypeCls), {\n '&:not(:disabled)': {\n borderInlineEndColor: borderColor\n }\n }),\n '&:not(:first-child)': _defineProperty({}, \"&, & > \".concat(buttonTypeCls), {\n '&:not(:disabled)': {\n borderInlineStartColor: borderColor\n }\n })\n });\n};\nvar genGroupStyle = function genGroupStyle(token) {\n var _componentCls, _ref2;\n var componentCls = token.componentCls,\n fontSize = token.fontSize,\n lineWidth = token.lineWidth,\n colorPrimaryHover = token.colorPrimaryHover,\n colorErrorHover = token.colorErrorHover;\n return _defineProperty({}, \"\".concat(componentCls, \"-group\"), [(_ref2 = {\n position: 'relative',\n display: 'inline-flex'\n }, _defineProperty(_ref2, \"> span, > \".concat(componentCls), {\n '&:not(:last-child)': _defineProperty({}, \"&, & > \".concat(componentCls), {\n borderStartEndRadius: 0,\n borderEndEndRadius: 0\n }),\n '&:not(:first-child)': _defineProperty({\n marginInlineStart: -lineWidth\n }, \"&, & > \".concat(componentCls), {\n borderStartStartRadius: 0,\n borderEndStartRadius: 0\n })\n }), _defineProperty(_ref2, componentCls, (_componentCls = {\n position: 'relative',\n zIndex: 1\n }, _defineProperty(_componentCls, \"&:hover,\\n &:focus,\\n &:active\", {\n zIndex: 2\n }), _defineProperty(_componentCls, '&[disabled]', {\n zIndex: 0\n }), _componentCls)), _defineProperty(_ref2, \"\".concat(componentCls, \"-icon-only\"), {\n fontSize: fontSize\n }), _ref2),\n // Border Color\n genButtonBorderStyle(\"\".concat(componentCls, \"-primary\"), colorPrimaryHover), genButtonBorderStyle(\"\".concat(componentCls, \"-danger\"), colorErrorHover)]);\n};\nexport default genGroupStyle;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { genFocusStyle } from '../../style';\nimport { genCompactItemStyle } from '../../style/compact-item';\nimport { genCompactItemVerticalStyle } from '../../style/compact-item-vertical';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport genGroupStyle from './group';\n// ============================== Shared ==============================\nvar genSharedButtonStyle = function genSharedButtonStyle(token) {\n var _componentCls;\n var componentCls = token.componentCls,\n iconCls = token.iconCls,\n buttonFontWeight = token.buttonFontWeight;\n return _defineProperty({}, componentCls, (_componentCls = {\n outline: 'none',\n position: 'relative',\n display: 'inline-block',\n fontWeight: buttonFontWeight,\n whiteSpace: 'nowrap',\n textAlign: 'center',\n backgroundImage: 'none',\n backgroundColor: 'transparent',\n border: \"\".concat(token.lineWidth, \"px \").concat(token.lineType, \" transparent\"),\n cursor: 'pointer',\n transition: \"all \".concat(token.motionDurationMid, \" \").concat(token.motionEaseInOut),\n userSelect: 'none',\n touchAction: 'manipulation',\n lineHeight: token.lineHeight,\n color: token.colorText,\n '&:disabled > *': {\n pointerEvents: 'none'\n },\n '> span': {\n display: 'inline-block'\n }\n }, _defineProperty(_componentCls, \"\".concat(componentCls, \"-icon\"), {\n lineHeight: 0\n }), _defineProperty(_componentCls, \"> \".concat(iconCls, \" + span, > span + \").concat(iconCls), {\n marginInlineStart: token.marginXS\n }), _defineProperty(_componentCls, \"&:not(\".concat(componentCls, \"-icon-only) > \").concat(componentCls, \"-icon\"), _defineProperty({}, \"&\".concat(componentCls, \"-loading-icon, &:not(:last-child)\"), {\n marginInlineEnd: token.marginXS\n })), _defineProperty(_componentCls, '> a', {\n color: 'currentColor'\n }), _defineProperty(_componentCls, '&:not(:disabled)', Object.assign({}, genFocusStyle(token))), _defineProperty(_componentCls, \"&-icon-only\".concat(componentCls, \"-compact-item\"), {\n flex: 'none'\n }), _defineProperty(_componentCls, \"&-compact-item\".concat(componentCls, \"-primary\"), _defineProperty({}, \"&:not([disabled]) + \".concat(componentCls, \"-compact-item\").concat(componentCls, \"-primary:not([disabled])\"), {\n position: 'relative',\n '&:before': {\n position: 'absolute',\n top: -token.lineWidth,\n insetInlineStart: -token.lineWidth,\n display: 'inline-block',\n width: token.lineWidth,\n height: \"calc(100% + \".concat(token.lineWidth * 2, \"px)\"),\n backgroundColor: token.colorPrimaryHover,\n content: '\"\"'\n }\n })), _defineProperty(_componentCls, '&-compact-vertical-item', _defineProperty({}, \"&\".concat(componentCls, \"-primary\"), _defineProperty({}, \"&:not([disabled]) + \".concat(componentCls, \"-compact-vertical-item\").concat(componentCls, \"-primary:not([disabled])\"), {\n position: 'relative',\n '&:before': {\n position: 'absolute',\n top: -token.lineWidth,\n insetInlineStart: -token.lineWidth,\n display: 'inline-block',\n width: \"calc(100% + \".concat(token.lineWidth * 2, \"px)\"),\n height: token.lineWidth,\n backgroundColor: token.colorPrimaryHover,\n content: '\"\"'\n }\n }))), _componentCls));\n};\nvar genHoverActiveButtonStyle = function genHoverActiveButtonStyle(btnCls, hoverStyle, activeStyle) {\n return _defineProperty({}, \"&:not(:disabled):not(\".concat(btnCls, \"-disabled)\"), {\n '&:hover': hoverStyle,\n '&:active': activeStyle\n });\n};\n// ============================== Shape ===============================\nvar genCircleButtonStyle = function genCircleButtonStyle(token) {\n return {\n minWidth: token.controlHeight,\n paddingInlineStart: 0,\n paddingInlineEnd: 0,\n borderRadius: '50%'\n };\n};\nvar genRoundButtonStyle = function genRoundButtonStyle(token) {\n return {\n borderRadius: token.controlHeight,\n paddingInlineStart: token.controlHeight / 2,\n paddingInlineEnd: token.controlHeight / 2\n };\n};\n// =============================== Type ===============================\nvar genDisabledStyle = function genDisabledStyle(token) {\n return {\n cursor: 'not-allowed',\n borderColor: token.colorBorder,\n color: token.colorTextDisabled,\n backgroundColor: token.colorBgContainerDisabled,\n boxShadow: 'none'\n };\n};\nvar genGhostButtonStyle = function genGhostButtonStyle(btnCls, textColor, borderColor, textColorDisabled, borderColorDisabled, hoverStyle, activeStyle) {\n return _defineProperty({}, \"&\".concat(btnCls, \"-background-ghost\"), Object.assign(Object.assign({\n color: textColor || undefined,\n backgroundColor: 'transparent',\n borderColor: borderColor || undefined,\n boxShadow: 'none'\n }, genHoverActiveButtonStyle(btnCls, Object.assign({\n backgroundColor: 'transparent'\n }, hoverStyle), Object.assign({\n backgroundColor: 'transparent'\n }, activeStyle))), {\n '&:disabled': {\n cursor: 'not-allowed',\n color: textColorDisabled || undefined,\n borderColor: borderColorDisabled || undefined\n }\n }));\n};\nvar genSolidDisabledButtonStyle = function genSolidDisabledButtonStyle(token) {\n return _defineProperty({}, \"&:disabled, &\".concat(token.componentCls, \"-disabled\"), Object.assign({}, genDisabledStyle(token)));\n};\nvar genSolidButtonStyle = function genSolidButtonStyle(token) {\n return Object.assign({}, genSolidDisabledButtonStyle(token));\n};\nvar genPureDisabledButtonStyle = function genPureDisabledButtonStyle(token) {\n return _defineProperty({}, \"&:disabled, &\".concat(token.componentCls, \"-disabled\"), {\n cursor: 'not-allowed',\n color: token.colorTextDisabled\n });\n};\n// Type: Default\nvar genDefaultButtonStyle = function genDefaultButtonStyle(token) {\n return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, genSolidButtonStyle(token)), {\n backgroundColor: token.colorBgContainer,\n borderColor: token.colorBorder,\n boxShadow: \"0 \".concat(token.controlOutlineWidth, \"px 0 \").concat(token.controlTmpOutline)\n }), genHoverActiveButtonStyle(token.componentCls, {\n color: token.colorPrimaryHover,\n borderColor: token.colorPrimaryHover\n }, {\n color: token.colorPrimaryActive,\n borderColor: token.colorPrimaryActive\n })), genGhostButtonStyle(token.componentCls, token.colorBgContainer, token.colorBgContainer, token.colorTextDisabled, token.colorBorder)), _defineProperty({}, \"&\".concat(token.componentCls, \"-dangerous\"), Object.assign(Object.assign(Object.assign({\n color: token.colorError,\n borderColor: token.colorError\n }, genHoverActiveButtonStyle(token.componentCls, {\n color: token.colorErrorHover,\n borderColor: token.colorErrorBorderHover\n }, {\n color: token.colorErrorActive,\n borderColor: token.colorErrorActive\n })), genGhostButtonStyle(token.componentCls, token.colorError, token.colorError, token.colorTextDisabled, token.colorBorder)), genSolidDisabledButtonStyle(token))));\n};\n// Type: Primary\nvar genPrimaryButtonStyle = function genPrimaryButtonStyle(token) {\n return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, genSolidButtonStyle(token)), {\n color: token.colorTextLightSolid,\n backgroundColor: token.colorPrimary,\n boxShadow: \"0 \".concat(token.controlOutlineWidth, \"px 0 \").concat(token.controlOutline)\n }), genHoverActiveButtonStyle(token.componentCls, {\n color: token.colorTextLightSolid,\n backgroundColor: token.colorPrimaryHover\n }, {\n color: token.colorTextLightSolid,\n backgroundColor: token.colorPrimaryActive\n })), genGhostButtonStyle(token.componentCls, token.colorPrimary, token.colorPrimary, token.colorTextDisabled, token.colorBorder, {\n color: token.colorPrimaryHover,\n borderColor: token.colorPrimaryHover\n }, {\n color: token.colorPrimaryActive,\n borderColor: token.colorPrimaryActive\n })), _defineProperty({}, \"&\".concat(token.componentCls, \"-dangerous\"), Object.assign(Object.assign(Object.assign({\n backgroundColor: token.colorError,\n boxShadow: \"0 \".concat(token.controlOutlineWidth, \"px 0 \").concat(token.colorErrorOutline)\n }, genHoverActiveButtonStyle(token.componentCls, {\n backgroundColor: token.colorErrorHover\n }, {\n backgroundColor: token.colorErrorActive\n })), genGhostButtonStyle(token.componentCls, token.colorError, token.colorError, token.colorTextDisabled, token.colorBorder, {\n color: token.colorErrorHover,\n borderColor: token.colorErrorHover\n }, {\n color: token.colorErrorActive,\n borderColor: token.colorErrorActive\n })), genSolidDisabledButtonStyle(token))));\n};\n// Type: Dashed\nvar genDashedButtonStyle = function genDashedButtonStyle(token) {\n return Object.assign(Object.assign({}, genDefaultButtonStyle(token)), {\n borderStyle: 'dashed'\n });\n};\n// Type: Link\nvar genLinkButtonStyle = function genLinkButtonStyle(token) {\n return Object.assign(Object.assign(Object.assign({\n color: token.colorLink\n }, genHoverActiveButtonStyle(token.componentCls, {\n color: token.colorLinkHover\n }, {\n color: token.colorLinkActive\n })), genPureDisabledButtonStyle(token)), _defineProperty({}, \"&\".concat(token.componentCls, \"-dangerous\"), Object.assign(Object.assign({\n color: token.colorError\n }, genHoverActiveButtonStyle(token.componentCls, {\n color: token.colorErrorHover\n }, {\n color: token.colorErrorActive\n })), genPureDisabledButtonStyle(token))));\n};\n// Type: Text\nvar genTextButtonStyle = function genTextButtonStyle(token) {\n return Object.assign(Object.assign(Object.assign({}, genHoverActiveButtonStyle(token.componentCls, {\n color: token.colorText,\n backgroundColor: token.colorBgTextHover\n }, {\n color: token.colorText,\n backgroundColor: token.colorBgTextActive\n })), genPureDisabledButtonStyle(token)), _defineProperty({}, \"&\".concat(token.componentCls, \"-dangerous\"), Object.assign(Object.assign({\n color: token.colorError\n }, genPureDisabledButtonStyle(token)), genHoverActiveButtonStyle(token.componentCls, {\n color: token.colorErrorHover,\n backgroundColor: token.colorErrorBg\n }, {\n color: token.colorErrorHover,\n backgroundColor: token.colorErrorBg\n }))));\n};\nvar genTypeButtonStyle = function genTypeButtonStyle(token) {\n var _ref6;\n var componentCls = token.componentCls;\n return _ref6 = {}, _defineProperty(_ref6, \"\".concat(componentCls, \"-default\"), genDefaultButtonStyle(token)), _defineProperty(_ref6, \"\".concat(componentCls, \"-primary\"), genPrimaryButtonStyle(token)), _defineProperty(_ref6, \"\".concat(componentCls, \"-dashed\"), genDashedButtonStyle(token)), _defineProperty(_ref6, \"\".concat(componentCls, \"-link\"), genLinkButtonStyle(token)), _defineProperty(_ref6, \"\".concat(componentCls, \"-text\"), genTextButtonStyle(token)), _defineProperty(_ref6, \"\".concat(componentCls, \"-ghost\"), genGhostButtonStyle(token.componentCls, token.colorBgContainer, token.colorBgContainer, token.colorTextDisabled, token.colorBorder)), _ref6;\n};\n// =============================== Size ===============================\nvar genSizeButtonStyle = function genSizeButtonStyle(token) {\n var _$concat2, _$concat$concat;\n var sizePrefixCls = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var componentCls = token.componentCls,\n controlHeight = token.controlHeight,\n fontSize = token.fontSize,\n lineHeight = token.lineHeight,\n lineWidth = token.lineWidth,\n borderRadius = token.borderRadius,\n buttonPaddingHorizontal = token.buttonPaddingHorizontal,\n iconCls = token.iconCls;\n var paddingVertical = Math.max(0, (controlHeight - fontSize * lineHeight) / 2 - lineWidth);\n var paddingHorizontal = buttonPaddingHorizontal - lineWidth;\n var iconOnlyCls = \"\".concat(componentCls, \"-icon-only\");\n return [// Size\n _defineProperty({}, \"\".concat(componentCls).concat(sizePrefixCls), (_$concat$concat = {\n fontSize: fontSize,\n height: controlHeight,\n padding: \"\".concat(paddingVertical, \"px \").concat(paddingHorizontal, \"px\"),\n borderRadius: borderRadius\n }, _defineProperty(_$concat$concat, \"&\".concat(iconOnlyCls), (_$concat2 = {\n width: controlHeight,\n paddingInlineStart: 0,\n paddingInlineEnd: 0\n }, _defineProperty(_$concat2, \"&\".concat(componentCls, \"-round\"), {\n width: 'auto'\n }), _defineProperty(_$concat2, iconCls, {\n fontSize: token.buttonIconOnlyFontSize\n }), _$concat2)), _defineProperty(_$concat$concat, \"&\".concat(componentCls, \"-loading\"), {\n opacity: token.opacityLoading,\n cursor: 'default'\n }), _defineProperty(_$concat$concat, \"\".concat(componentCls, \"-loading-icon\"), {\n transition: \"width \".concat(token.motionDurationSlow, \" \").concat(token.motionEaseInOut, \", opacity \").concat(token.motionDurationSlow, \" \").concat(token.motionEaseInOut)\n }), _$concat$concat)), // Shape - patch prefixCls again to override solid border radius style\n _defineProperty({}, \"\".concat(componentCls).concat(componentCls, \"-circle\").concat(sizePrefixCls), genCircleButtonStyle(token)), _defineProperty({}, \"\".concat(componentCls).concat(componentCls, \"-round\").concat(sizePrefixCls), genRoundButtonStyle(token))];\n};\nvar genSizeBaseButtonStyle = function genSizeBaseButtonStyle(token) {\n return genSizeButtonStyle(token);\n};\nvar genSizeSmallButtonStyle = function genSizeSmallButtonStyle(token) {\n var smallToken = mergeToken(token, {\n controlHeight: token.controlHeightSM,\n padding: token.paddingXS,\n buttonPaddingHorizontal: 8,\n borderRadius: token.borderRadiusSM,\n buttonIconOnlyFontSize: token.fontSizeLG - 2\n });\n return genSizeButtonStyle(smallToken, \"\".concat(token.componentCls, \"-sm\"));\n};\nvar genSizeLargeButtonStyle = function genSizeLargeButtonStyle(token) {\n var largeToken = mergeToken(token, {\n controlHeight: token.controlHeightLG,\n fontSize: token.fontSizeLG,\n borderRadius: token.borderRadiusLG,\n buttonIconOnlyFontSize: token.fontSizeLG + 2\n });\n return genSizeButtonStyle(largeToken, \"\".concat(token.componentCls, \"-lg\"));\n};\nvar genBlockButtonStyle = function genBlockButtonStyle(token) {\n var componentCls = token.componentCls;\n return _defineProperty({}, componentCls, _defineProperty({}, \"&\".concat(componentCls, \"-block\"), {\n width: '100%'\n }));\n};\n// ============================== Export ==============================\nexport default genComponentStyleHook('Button', function (token) {\n var controlTmpOutline = token.controlTmpOutline,\n paddingContentHorizontal = token.paddingContentHorizontal;\n var buttonToken = mergeToken(token, {\n colorOutlineDefault: controlTmpOutline,\n buttonPaddingHorizontal: paddingContentHorizontal,\n buttonIconOnlyFontSize: token.fontSizeLG,\n buttonFontWeight: 400\n });\n return [\n // Shared\n genSharedButtonStyle(buttonToken),\n // Size\n genSizeSmallButtonStyle(buttonToken), genSizeBaseButtonStyle(buttonToken), genSizeLargeButtonStyle(buttonToken),\n // Block\n genBlockButtonStyle(buttonToken),\n // Group (type, ghost, danger, loading)\n genTypeButtonStyle(buttonToken),\n // Button Group\n genGroupStyle(buttonToken),\n // Space Compact\n genCompactItemStyle(token), genCompactItemVerticalStyle(token)];\n});","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n/* eslint-disable react/button-has-type */\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport { composeRef } from \"rc-util/es/ref\";\nimport React, { Children, createRef, forwardRef, useContext, useEffect, useMemo, useState } from 'react';\nimport warning from '../_util/warning';\nimport Wave from '../_util/wave';\nimport { ConfigContext } from '../config-provider';\nimport DisabledContext from '../config-provider/DisabledContext';\nimport useSize from '../config-provider/hooks/useSize';\nimport { useCompactItemContext } from '../space/Compact';\nimport IconWrapper from './IconWrapper';\nimport LoadingIcon from './LoadingIcon';\nimport Group, { GroupSizeContext } from './button-group';\nimport { isTwoCNChar, isUnBorderedButtonType, spaceChildren } from './buttonHelpers';\nimport useStyle from './style';\nexport function convertLegacyProps(type) {\n if (type === 'danger') {\n return {\n danger: true\n };\n }\n return {\n type: type\n };\n}\nfunction getLoadingConfig(loading) {\n if (typeof loading === 'object' && loading) {\n var delay = loading === null || loading === void 0 ? void 0 : loading.delay;\n var isDelay = !Number.isNaN(delay) && typeof delay === 'number';\n return {\n loading: false,\n delay: isDelay ? delay : 0\n };\n }\n return {\n loading: !!loading,\n delay: 0\n };\n}\nvar InternalButton = function InternalButton(props, ref) {\n var _classNames;\n var _a, _b;\n var _props$loading = props.loading,\n loading = _props$loading === void 0 ? false : _props$loading,\n customizePrefixCls = props.prefixCls,\n _props$type = props.type,\n type = _props$type === void 0 ? 'default' : _props$type,\n danger = props.danger,\n _props$shape = props.shape,\n shape = _props$shape === void 0 ? 'default' : _props$shape,\n customizeSize = props.size,\n styles = props.styles,\n customDisabled = props.disabled,\n className = props.className,\n rootClassName = props.rootClassName,\n children = props.children,\n icon = props.icon,\n _props$ghost = props.ghost,\n ghost = _props$ghost === void 0 ? false : _props$ghost,\n _props$block = props.block,\n block = _props$block === void 0 ? false : _props$block,\n _props$htmlType = props.htmlType,\n htmlType = _props$htmlType === void 0 ? 'button' : _props$htmlType,\n customClassNames = props.classNames,\n _props$style = props.style,\n customStyle = _props$style === void 0 ? {} : _props$style,\n rest = __rest(props, [\"loading\", \"prefixCls\", \"type\", \"danger\", \"shape\", \"size\", \"styles\", \"disabled\", \"className\", \"rootClassName\", \"children\", \"icon\", \"ghost\", \"block\", \"htmlType\", \"classNames\", \"style\"]);\n var _useContext = useContext(ConfigContext),\n getPrefixCls = _useContext.getPrefixCls,\n autoInsertSpaceInButton = _useContext.autoInsertSpaceInButton,\n direction = _useContext.direction,\n button = _useContext.button;\n var prefixCls = getPrefixCls('btn', customizePrefixCls);\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n var disabled = useContext(DisabledContext);\n var mergedDisabled = customDisabled !== null && customDisabled !== void 0 ? customDisabled : disabled;\n var groupSize = useContext(GroupSizeContext);\n var loadingOrDelay = useMemo(function () {\n return getLoadingConfig(loading);\n }, [loading]);\n var _useState = useState(loadingOrDelay.loading),\n _useState2 = _slicedToArray(_useState, 2),\n innerLoading = _useState2[0],\n setLoading = _useState2[1];\n var _useState3 = useState(false),\n _useState4 = _slicedToArray(_useState3, 2),\n hasTwoCNChar = _useState4[0],\n setHasTwoCNChar = _useState4[1];\n var internalRef = /*#__PURE__*/createRef();\n var buttonRef = composeRef(ref, internalRef);\n var needInserted = Children.count(children) === 1 && !icon && !isUnBorderedButtonType(type);\n useEffect(function () {\n var delayTimer = null;\n if (loadingOrDelay.delay > 0) {\n delayTimer = setTimeout(function () {\n delayTimer = null;\n setLoading(true);\n }, loadingOrDelay.delay);\n } else {\n setLoading(loadingOrDelay.loading);\n }\n function cleanupTimer() {\n if (delayTimer) {\n clearTimeout(delayTimer);\n delayTimer = null;\n }\n }\n return cleanupTimer;\n }, [loadingOrDelay]);\n useEffect(function () {\n // FIXME: for HOC usage like \n if (!buttonRef || !buttonRef.current || autoInsertSpaceInButton === false) {\n return;\n }\n var buttonText = buttonRef.current.textContent;\n if (needInserted && isTwoCNChar(buttonText)) {\n if (!hasTwoCNChar) {\n setHasTwoCNChar(true);\n }\n } else if (hasTwoCNChar) {\n setHasTwoCNChar(false);\n }\n }, [buttonRef]);\n var handleClick = function handleClick(e) {\n var onClick = props.onClick;\n // FIXME: https://github.com/ant-design/ant-design/issues/30207\n if (innerLoading || mergedDisabled) {\n e.preventDefault();\n return;\n }\n onClick === null || onClick === void 0 ? void 0 : onClick(e);\n };\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof icon === 'string' && icon.length > 2), 'Button', \"`icon` is using ReactNode instead of string naming in v4. Please check `\".concat(icon, \"` at https://ant.design/components/icon\")) : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!(ghost && isUnBorderedButtonType(type)), 'Button', \"`link` or `text` button can't be a `ghost` button.\") : void 0;\n var autoInsertSpace = autoInsertSpaceInButton !== false;\n var _useCompactItemContex = useCompactItemContext(prefixCls, direction),\n compactSize = _useCompactItemContex.compactSize,\n compactItemClassnames = _useCompactItemContex.compactItemClassnames;\n var sizeClassNameMap = {\n large: 'lg',\n small: 'sm',\n middle: undefined\n };\n var sizeFullName = useSize(function (ctxSize) {\n var _a, _b;\n return (_b = (_a = customizeSize !== null && customizeSize !== void 0 ? customizeSize : compactSize) !== null && _a !== void 0 ? _a : groupSize) !== null && _b !== void 0 ? _b : ctxSize;\n });\n var sizeCls = sizeFullName ? sizeClassNameMap[sizeFullName] || '' : '';\n var iconType = innerLoading ? 'loading' : icon;\n var linkButtonRestProps = omit(rest, ['navigate']);\n var classes = classNames(prefixCls, hashId, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(shape), shape !== 'default' && shape), _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(type), type), _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(sizeCls), sizeCls), _defineProperty(_classNames, \"\".concat(prefixCls, \"-icon-only\"), !children && children !== 0 && !!iconType), _defineProperty(_classNames, \"\".concat(prefixCls, \"-background-ghost\"), ghost && !isUnBorderedButtonType(type)), _defineProperty(_classNames, \"\".concat(prefixCls, \"-loading\"), innerLoading), _defineProperty(_classNames, \"\".concat(prefixCls, \"-two-chinese-chars\"), hasTwoCNChar && autoInsertSpace && !innerLoading), _defineProperty(_classNames, \"\".concat(prefixCls, \"-block\"), block), _defineProperty(_classNames, \"\".concat(prefixCls, \"-dangerous\"), !!danger), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _classNames), compactItemClassnames, className, rootClassName, button === null || button === void 0 ? void 0 : button.className);\n var fullStyle = Object.assign(Object.assign({}, button === null || button === void 0 ? void 0 : button.style), customStyle);\n var iconClasses = classNames(customClassNames === null || customClassNames === void 0 ? void 0 : customClassNames.icon, (_a = button === null || button === void 0 ? void 0 : button.classNames) === null || _a === void 0 ? void 0 : _a.icon);\n var iconStyle = Object.assign(Object.assign({}, (styles === null || styles === void 0 ? void 0 : styles.icon) || {}), ((_b = button === null || button === void 0 ? void 0 : button.styles) === null || _b === void 0 ? void 0 : _b.icon) || {});\n var iconNode = icon && !innerLoading ? /*#__PURE__*/React.createElement(IconWrapper, {\n prefixCls: prefixCls,\n className: iconClasses,\n style: iconStyle\n }, icon) : /*#__PURE__*/React.createElement(LoadingIcon, {\n existIcon: !!icon,\n prefixCls: prefixCls,\n loading: !!innerLoading\n });\n var kids = children || children === 0 ? spaceChildren(children, needInserted && autoInsertSpace) : null;\n if (linkButtonRestProps.href !== undefined) {\n return wrapSSR( /*#__PURE__*/React.createElement(\"a\", Object.assign({}, linkButtonRestProps, {\n className: classNames(classes, _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), mergedDisabled)),\n style: fullStyle,\n onClick: handleClick,\n ref: buttonRef\n }), iconNode, kids));\n }\n var buttonNode = /*#__PURE__*/React.createElement(\"button\", Object.assign({}, rest, {\n type: htmlType,\n className: classes,\n style: fullStyle,\n onClick: handleClick,\n disabled: mergedDisabled,\n ref: buttonRef\n }), iconNode, kids);\n if (!isUnBorderedButtonType(type)) {\n buttonNode = /*#__PURE__*/React.createElement(Wave, {\n component: \"Button\",\n disabled: !!innerLoading\n }, buttonNode);\n }\n return wrapSSR(buttonNode);\n};\nvar Button = /*#__PURE__*/forwardRef(InternalButton);\nif (process.env.NODE_ENV !== 'production') {\n Button.displayName = 'Button';\n}\nButton.Group = Group;\nButton.__ANT_BUTTON = true;\nexport default Button;","'use client';\n\nimport Button from './button';\nexport * from './buttonHelpers';\nexport default Button;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nexport function file2Obj(file) {\n return Object.assign(Object.assign({}, file), {\n lastModified: file.lastModified,\n lastModifiedDate: file.lastModifiedDate,\n name: file.name,\n size: file.size,\n type: file.type,\n uid: file.uid,\n percent: 0,\n originFileObj: file\n });\n}\n/** Upload fileList. Replace file if exist or just push into it. */\nexport function updateFileList(file, fileList) {\n var nextFileList = _toConsumableArray(fileList);\n var fileIndex = nextFileList.findIndex(function (_ref) {\n var uid = _ref.uid;\n return uid === file.uid;\n });\n if (fileIndex === -1) {\n nextFileList.push(file);\n } else {\n nextFileList[fileIndex] = file;\n }\n return nextFileList;\n}\nexport function getFileItem(file, fileList) {\n var matchKey = file.uid !== undefined ? 'uid' : 'name';\n return fileList.filter(function (item) {\n return item[matchKey] === file[matchKey];\n })[0];\n}\nexport function removeFileItem(file, fileList) {\n var matchKey = file.uid !== undefined ? 'uid' : 'name';\n var removed = fileList.filter(function (item) {\n return item[matchKey] !== file[matchKey];\n });\n if (removed.length === fileList.length) {\n return null;\n }\n return removed;\n}\n// ==================== Default Image Preview ====================\nvar extname = function extname() {\n var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var temp = url.split('/');\n var filename = temp[temp.length - 1];\n var filenameWithoutSuffix = filename.split(/#|\\?/)[0];\n return (/\\.[^./\\\\]*$/.exec(filenameWithoutSuffix) || [''])[0];\n};\nvar isImageFileType = function isImageFileType(type) {\n return type.indexOf('image/') === 0;\n};\nexport var isImageUrl = function isImageUrl(file) {\n if (file.type && !file.thumbUrl) {\n return isImageFileType(file.type);\n }\n var url = file.thumbUrl || file.url || '';\n var extension = extname(url);\n if (/^data:image\\//.test(url) || /(webp|svg|png|gif|jpg|jpeg|jfif|bmp|dpg|ico|heic|heif)$/i.test(extension)) {\n return true;\n }\n if (/^data:/.test(url)) {\n // other file types of base64\n return false;\n }\n if (extension) {\n // other file types which have extension\n return false;\n }\n return true;\n};\nvar MEASURE_SIZE = 200;\nexport function previewImage(file) {\n return new Promise(function (resolve) {\n if (!file.type || !isImageFileType(file.type)) {\n resolve('');\n return;\n }\n var canvas = document.createElement('canvas');\n canvas.width = MEASURE_SIZE;\n canvas.height = MEASURE_SIZE;\n canvas.style.cssText = \"position: fixed; left: 0; top: 0; width: \".concat(MEASURE_SIZE, \"px; height: \").concat(MEASURE_SIZE, \"px; z-index: 9999; display: none;\");\n document.body.appendChild(canvas);\n var ctx = canvas.getContext('2d');\n var img = new Image();\n img.onload = function () {\n var width = img.width,\n height = img.height;\n var drawWidth = MEASURE_SIZE;\n var drawHeight = MEASURE_SIZE;\n var offsetX = 0;\n var offsetY = 0;\n if (width > height) {\n drawHeight = height * (MEASURE_SIZE / width);\n offsetY = -(drawHeight - drawWidth) / 2;\n } else {\n drawWidth = width * (MEASURE_SIZE / height);\n offsetX = -(drawWidth - drawHeight) / 2;\n }\n ctx.drawImage(img, offsetX, offsetY, drawWidth, drawHeight);\n var dataURL = canvas.toDataURL();\n document.body.removeChild(canvas);\n window.URL.revokeObjectURL(img.src);\n resolve(dataURL);\n };\n img.crossOrigin = 'anonymous';\n if (file.type.startsWith('image/svg+xml')) {\n var reader = new FileReader();\n reader.onload = function () {\n if (reader.result) img.src = reader.result;\n };\n reader.readAsDataURL(file);\n } else if (file.type.startsWith('image/gif')) {\n var _reader = new FileReader();\n _reader.onload = function () {\n if (_reader.result) resolve(_reader.result);\n };\n _reader.readAsDataURL(file);\n } else {\n img.src = window.URL.createObjectURL(file);\n }\n });\n}","// This icon file is generated automatically.\nvar DeleteOutlined = {\n \"icon\": {\n \"tag\": \"svg\",\n \"attrs\": {\n \"viewBox\": \"64 64 896 896\",\n \"focusable\": \"false\"\n },\n \"children\": [{\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z\"\n }\n }]\n },\n \"name\": \"delete\",\n \"theme\": \"outlined\"\n};\nexport default DeleteOutlined;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport DeleteOutlinedSvg from \"@ant-design/icons-svg/es/asn/DeleteOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar DeleteOutlined = function DeleteOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: DeleteOutlinedSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n DeleteOutlined.displayName = 'DeleteOutlined';\n}\nexport default /*#__PURE__*/React.forwardRef(DeleteOutlined);","// This icon file is generated automatically.\nvar DownloadOutlined = {\n \"icon\": {\n \"tag\": \"svg\",\n \"attrs\": {\n \"viewBox\": \"64 64 896 896\",\n \"focusable\": \"false\"\n },\n \"children\": [{\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M505.7 661a8 8 0 0012.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9h-74.1V168c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v338.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.8zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z\"\n }\n }]\n },\n \"name\": \"download\",\n \"theme\": \"outlined\"\n};\nexport default DownloadOutlined;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport DownloadOutlinedSvg from \"@ant-design/icons-svg/es/asn/DownloadOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar DownloadOutlined = function DownloadOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: DownloadOutlinedSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n DownloadOutlined.displayName = 'DownloadOutlined';\n}\nexport default /*#__PURE__*/React.forwardRef(DownloadOutlined);","// This icon file is generated automatically.\nvar EyeOutlined = {\n \"icon\": {\n \"tag\": \"svg\",\n \"attrs\": {\n \"viewBox\": \"64 64 896 896\",\n \"focusable\": \"false\"\n },\n \"children\": [{\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M942.2 486.2C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 000 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM512 766c-161.3 0-279.4-81.8-362.7-254C232.6 339.8 350.7 258 512 258c161.3 0 279.4 81.8 362.7 254C791.5 684.2 673.4 766 512 766zm-4-430c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm0 288c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z\"\n }\n }]\n },\n \"name\": \"eye\",\n \"theme\": \"outlined\"\n};\nexport default EyeOutlined;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport EyeOutlinedSvg from \"@ant-design/icons-svg/es/asn/EyeOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar EyeOutlined = function EyeOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: EyeOutlinedSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n EyeOutlined.displayName = 'EyeOutlined';\n}\nexport default /*#__PURE__*/React.forwardRef(EyeOutlined);","// This icon file is generated automatically.\nvar CheckCircleFilled = {\n \"icon\": {\n \"tag\": \"svg\",\n \"attrs\": {\n \"viewBox\": \"64 64 896 896\",\n \"focusable\": \"false\"\n },\n \"children\": [{\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm193.5 301.7l-210.6 292a31.8 31.8 0 01-51.7 0L318.5 484.9c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.2 0 19.9 4.9 25.9 13.3l71.2 98.8 157.2-218c6-8.3 15.6-13.3 25.9-13.3H699c6.5 0 10.3 7.4 6.5 12.7z\"\n }\n }]\n },\n \"name\": \"check-circle\",\n \"theme\": \"filled\"\n};\nexport default CheckCircleFilled;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport CheckCircleFilledSvg from \"@ant-design/icons-svg/es/asn/CheckCircleFilled\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar CheckCircleFilled = function CheckCircleFilled(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: CheckCircleFilledSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n CheckCircleFilled.displayName = 'CheckCircleFilled';\n}\nexport default /*#__PURE__*/React.forwardRef(CheckCircleFilled);","// This icon file is generated automatically.\nvar CheckOutlined = {\n \"icon\": {\n \"tag\": \"svg\",\n \"attrs\": {\n \"viewBox\": \"64 64 896 896\",\n \"focusable\": \"false\"\n },\n \"children\": [{\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 00-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z\"\n }\n }]\n },\n \"name\": \"check\",\n \"theme\": \"outlined\"\n};\nexport default CheckOutlined;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport CheckOutlinedSvg from \"@ant-design/icons-svg/es/asn/CheckOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar CheckOutlined = function CheckOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: CheckOutlinedSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n CheckOutlined.displayName = 'CheckOutlined';\n}\nexport default /*#__PURE__*/React.forwardRef(CheckOutlined);","// This icon file is generated automatically.\nvar CloseCircleFilled = {\n \"icon\": {\n \"tag\": \"svg\",\n \"attrs\": {\n \"fill-rule\": \"evenodd\",\n \"viewBox\": \"64 64 896 896\",\n \"focusable\": \"false\"\n },\n \"children\": [{\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M512 64c247.4 0 448 200.6 448 448S759.4 960 512 960 64 759.4 64 512 264.6 64 512 64zm127.98 274.82h-.04l-.08.06L512 466.75 384.14 338.88c-.04-.05-.06-.06-.08-.06a.12.12 0 00-.07 0c-.03 0-.05.01-.09.05l-45.02 45.02a.2.2 0 00-.05.09.12.12 0 000 .07v.02a.27.27 0 00.06.06L466.75 512 338.88 639.86c-.05.04-.06.06-.06.08a.12.12 0 000 .07c0 .03.01.05.05.09l45.02 45.02a.2.2 0 00.09.05.12.12 0 00.07 0c.02 0 .04-.01.08-.05L512 557.25l127.86 127.87c.04.04.06.05.08.05a.12.12 0 00.07 0c.03 0 .05-.01.09-.05l45.02-45.02a.2.2 0 00.05-.09.12.12 0 000-.07v-.02a.27.27 0 00-.05-.06L557.25 512l127.87-127.86c.04-.04.05-.06.05-.08a.12.12 0 000-.07c0-.03-.01-.05-.05-.09l-45.02-45.02a.2.2 0 00-.09-.05.12.12 0 00-.07 0z\"\n }\n }]\n },\n \"name\": \"close-circle\",\n \"theme\": \"filled\"\n};\nexport default CloseCircleFilled;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport CloseCircleFilledSvg from \"@ant-design/icons-svg/es/asn/CloseCircleFilled\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar CloseCircleFilled = function CloseCircleFilled(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: CloseCircleFilledSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n CloseCircleFilled.displayName = 'CloseCircleFilled';\n}\nexport default /*#__PURE__*/React.forwardRef(CloseCircleFilled);","// This icon file is generated automatically.\nvar CloseOutlined = {\n \"icon\": {\n \"tag\": \"svg\",\n \"attrs\": {\n \"fill-rule\": \"evenodd\",\n \"viewBox\": \"64 64 896 896\",\n \"focusable\": \"false\"\n },\n \"children\": [{\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M799.86 166.31c.02 0 .04.02.08.06l57.69 57.7c.04.03.05.05.06.08a.12.12 0 010 .06c0 .03-.02.05-.06.09L569.93 512l287.7 287.7c.04.04.05.06.06.09a.12.12 0 010 .07c0 .02-.02.04-.06.08l-57.7 57.69c-.03.04-.05.05-.07.06a.12.12 0 01-.07 0c-.03 0-.05-.02-.09-.06L512 569.93l-287.7 287.7c-.04.04-.06.05-.09.06a.12.12 0 01-.07 0c-.02 0-.04-.02-.08-.06l-57.69-57.7c-.04-.03-.05-.05-.06-.07a.12.12 0 010-.07c0-.03.02-.05.06-.09L454.07 512l-287.7-287.7c-.04-.04-.05-.06-.06-.09a.12.12 0 010-.07c0-.02.02-.04.06-.08l57.7-57.69c.03-.04.05-.05.07-.06a.12.12 0 01.07 0c.03 0 .05.02.09.06L512 454.07l287.7-287.7c.04-.04.06-.05.09-.06a.12.12 0 01.07 0z\"\n }\n }]\n },\n \"name\": \"close\",\n \"theme\": \"outlined\"\n};\nexport default CloseOutlined;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport CloseOutlinedSvg from \"@ant-design/icons-svg/es/asn/CloseOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar CloseOutlined = function CloseOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: CloseOutlinedSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n CloseOutlined.displayName = 'CloseOutlined';\n}\nexport default /*#__PURE__*/React.forwardRef(CloseOutlined);","import { useRef, useEffect } from 'react';\nexport var defaultProps = {\n percent: 0,\n prefixCls: 'rc-progress',\n strokeColor: '#2db7f5',\n strokeLinecap: 'round',\n strokeWidth: 1,\n trailColor: '#D9D9D9',\n trailWidth: 1,\n gapPosition: 'bottom'\n};\nexport var useTransitionDuration = function useTransitionDuration() {\n var pathsRef = useRef([]);\n var prevTimeStamp = useRef(null);\n useEffect(function () {\n var now = Date.now();\n var updated = false;\n pathsRef.current.forEach(function (path) {\n if (!path) {\n return;\n }\n updated = true;\n var pathStyle = path.style;\n pathStyle.transitionDuration = '.3s, .3s, .3s, .06s';\n if (prevTimeStamp.current && now - prevTimeStamp.current < 100) {\n pathStyle.transitionDuration = '0s, 0s';\n }\n });\n if (updated) {\n prevTimeStamp.current = Date.now();\n }\n });\n return pathsRef.current;\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"className\", \"percent\", \"prefixCls\", \"strokeColor\", \"strokeLinecap\", \"strokeWidth\", \"style\", \"trailColor\", \"trailWidth\", \"transition\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useTransitionDuration, defaultProps } from './common';\nvar Line = function Line(props) {\n var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props),\n className = _defaultProps$props.className,\n percent = _defaultProps$props.percent,\n prefixCls = _defaultProps$props.prefixCls,\n strokeColor = _defaultProps$props.strokeColor,\n strokeLinecap = _defaultProps$props.strokeLinecap,\n strokeWidth = _defaultProps$props.strokeWidth,\n style = _defaultProps$props.style,\n trailColor = _defaultProps$props.trailColor,\n trailWidth = _defaultProps$props.trailWidth,\n transition = _defaultProps$props.transition,\n restProps = _objectWithoutProperties(_defaultProps$props, _excluded);\n // eslint-disable-next-line no-param-reassign\n delete restProps.gapPosition;\n var percentList = Array.isArray(percent) ? percent : [percent];\n var strokeColorList = Array.isArray(strokeColor) ? strokeColor : [strokeColor];\n var paths = useTransitionDuration();\n var center = strokeWidth / 2;\n var right = 100 - strokeWidth / 2;\n var pathString = \"M \".concat(strokeLinecap === 'round' ? center : 0, \",\").concat(center, \"\\n L \").concat(strokeLinecap === 'round' ? right : 100, \",\").concat(center);\n var viewBoxString = \"0 0 100 \".concat(strokeWidth);\n var stackPtg = 0;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n className: classNames(\"\".concat(prefixCls, \"-line\"), className),\n viewBox: viewBoxString,\n preserveAspectRatio: \"none\",\n style: style\n }, restProps), /*#__PURE__*/React.createElement(\"path\", {\n className: \"\".concat(prefixCls, \"-line-trail\"),\n d: pathString,\n strokeLinecap: strokeLinecap,\n stroke: trailColor,\n strokeWidth: trailWidth || strokeWidth,\n fillOpacity: \"0\"\n }), percentList.map(function (ptg, index) {\n var dashPercent = 1;\n switch (strokeLinecap) {\n case 'round':\n dashPercent = 1 - strokeWidth / 100;\n break;\n case 'square':\n dashPercent = 1 - strokeWidth / 2 / 100;\n break;\n default:\n dashPercent = 1;\n break;\n }\n var pathStyle = {\n strokeDasharray: \"\".concat(ptg * dashPercent, \"px, 100px\"),\n strokeDashoffset: \"-\".concat(stackPtg, \"px\"),\n transition: transition || 'stroke-dashoffset 0.3s ease 0s, stroke-dasharray .3s ease 0s, stroke 0.3s linear'\n };\n var color = strokeColorList[index] || strokeColorList[strokeColorList.length - 1];\n stackPtg += ptg;\n return /*#__PURE__*/React.createElement(\"path\", {\n key: index,\n className: \"\".concat(prefixCls, \"-line-path\"),\n d: pathString,\n strokeLinecap: strokeLinecap,\n stroke: color,\n strokeWidth: strokeWidth,\n fillOpacity: \"0\",\n ref: function ref(elem) {\n // https://reactjs.org/docs/refs-and-the-dom.html#callback-refs\n // React will call the ref callback with the DOM element when the component mounts,\n // and call it with `null` when it unmounts.\n // Refs are guaranteed to be up-to-date before componentDidMount or componentDidUpdate fires.\n paths[index] = elem;\n },\n style: pathStyle\n });\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n Line.displayName = 'Line';\n}\nexport default Line;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport canUseDom from \"rc-util/es/Dom/canUseDom\";\nvar uuid = 0;\n/** Is client side and not jsdom */\nexport var isBrowserClient = process.env.NODE_ENV !== 'test' && canUseDom();\n/** Get unique id for accessibility usage */\nfunction getUUID() {\n var retId;\n // Test never reach\n /* istanbul ignore if */\n if (isBrowserClient) {\n retId = uuid;\n uuid += 1;\n } else {\n retId = 'TEST_OR_SSR';\n }\n return retId;\n}\nexport default (function (id) {\n // Inner id for accessibility usage. Only work in client side\n var _React$useState = React.useState(),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n innerId = _React$useState2[0],\n setInnerId = _React$useState2[1];\n React.useEffect(function () {\n setInnerId(\"rc_progress_\".concat(getUUID()));\n }, []);\n return id || innerId;\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"id\", \"prefixCls\", \"steps\", \"strokeWidth\", \"trailWidth\", \"gapDegree\", \"gapPosition\", \"trailColor\", \"strokeLinecap\", \"style\", \"className\", \"strokeColor\", \"percent\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { defaultProps, useTransitionDuration } from './common';\nimport useId from './hooks/useId';\nfunction stripPercentToNumber(percent) {\n return +percent.replace('%', '');\n}\nfunction toArray(value) {\n var mergedValue = value !== null && value !== void 0 ? value : [];\n return Array.isArray(mergedValue) ? mergedValue : [mergedValue];\n}\nvar VIEW_BOX_SIZE = 100;\nvar getCircleStyle = function getCircleStyle(perimeter, perimeterWithoutGap, offset, percent, rotateDeg, gapDegree, gapPosition, strokeColor, strokeLinecap, strokeWidth) {\n var stepSpace = arguments.length > 10 && arguments[10] !== undefined ? arguments[10] : 0;\n var offsetDeg = offset / 100 * 360 * ((360 - gapDegree) / 360);\n var positionDeg = gapDegree === 0 ? 0 : {\n bottom: 0,\n top: 180,\n left: 90,\n right: -90\n }[gapPosition];\n var strokeDashoffset = (100 - percent) / 100 * perimeterWithoutGap;\n // Fix percent accuracy when strokeLinecap is round\n // https://github.com/ant-design/ant-design/issues/35009\n if (strokeLinecap === 'round' && percent !== 100) {\n strokeDashoffset += strokeWidth / 2;\n // when percent is small enough (<= 1%), keep smallest value to avoid it's disappearance\n if (strokeDashoffset >= perimeterWithoutGap) {\n strokeDashoffset = perimeterWithoutGap - 0.01;\n }\n }\n return {\n stroke: typeof strokeColor === 'string' ? strokeColor : undefined,\n strokeDasharray: \"\".concat(perimeterWithoutGap, \"px \").concat(perimeter),\n strokeDashoffset: strokeDashoffset + stepSpace,\n transform: \"rotate(\".concat(rotateDeg + offsetDeg + positionDeg, \"deg)\"),\n transformOrigin: '0 0',\n transition: 'stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s',\n fillOpacity: 0\n };\n};\nvar Circle = function Circle(props) {\n var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props),\n id = _defaultProps$props.id,\n prefixCls = _defaultProps$props.prefixCls,\n steps = _defaultProps$props.steps,\n strokeWidth = _defaultProps$props.strokeWidth,\n trailWidth = _defaultProps$props.trailWidth,\n _defaultProps$props$g = _defaultProps$props.gapDegree,\n gapDegree = _defaultProps$props$g === void 0 ? 0 : _defaultProps$props$g,\n gapPosition = _defaultProps$props.gapPosition,\n trailColor = _defaultProps$props.trailColor,\n strokeLinecap = _defaultProps$props.strokeLinecap,\n style = _defaultProps$props.style,\n className = _defaultProps$props.className,\n strokeColor = _defaultProps$props.strokeColor,\n percent = _defaultProps$props.percent,\n restProps = _objectWithoutProperties(_defaultProps$props, _excluded);\n var mergedId = useId(id);\n var gradientId = \"\".concat(mergedId, \"-gradient\");\n var radius = VIEW_BOX_SIZE / 2 - strokeWidth / 2;\n var perimeter = Math.PI * 2 * radius;\n var rotateDeg = gapDegree > 0 ? 90 + gapDegree / 2 : -90;\n var perimeterWithoutGap = perimeter * ((360 - gapDegree) / 360);\n var _ref = _typeof(steps) === 'object' ? steps : {\n count: steps,\n space: 2\n },\n stepCount = _ref.count,\n stepSpace = _ref.space;\n var circleStyle = getCircleStyle(perimeter, perimeterWithoutGap, 0, 100, rotateDeg, gapDegree, gapPosition, trailColor, strokeLinecap, strokeWidth);\n var percentList = toArray(percent);\n var strokeColorList = toArray(strokeColor);\n var gradient = strokeColorList.find(function (color) {\n return color && _typeof(color) === 'object';\n });\n var paths = useTransitionDuration();\n var getStokeList = function getStokeList() {\n var stackPtg = 0;\n return percentList.map(function (ptg, index) {\n var color = strokeColorList[index] || strokeColorList[strokeColorList.length - 1];\n var stroke = color && _typeof(color) === 'object' ? \"url(#\".concat(gradientId, \")\") : undefined;\n var circleStyleForStack = getCircleStyle(perimeter, perimeterWithoutGap, stackPtg, ptg, rotateDeg, gapDegree, gapPosition, color, strokeLinecap, strokeWidth);\n stackPtg += ptg;\n return /*#__PURE__*/React.createElement(\"circle\", {\n key: index,\n className: \"\".concat(prefixCls, \"-circle-path\"),\n r: radius,\n cx: 0,\n cy: 0,\n stroke: stroke,\n strokeLinecap: strokeLinecap,\n strokeWidth: strokeWidth,\n opacity: ptg === 0 ? 0 : 1,\n style: circleStyleForStack,\n ref: function ref(elem) {\n // https://reactjs.org/docs/refs-and-the-dom.html#callback-refs\n // React will call the ref callback with the DOM element when the component mounts,\n // and call it with `null` when it unmounts.\n // Refs are guaranteed to be up-to-date before componentDidMount or componentDidUpdate fires.\n paths[index] = elem;\n }\n });\n }).reverse();\n };\n var getStepStokeList = function getStepStokeList() {\n // only show the first percent when pass steps\n var current = Math.round(stepCount * (percentList[0] / 100));\n var stepPtg = 100 / stepCount;\n var stackPtg = 0;\n return new Array(stepCount).fill(null).map(function (_, index) {\n var color = index <= current - 1 ? strokeColorList[0] : trailColor;\n var stroke = color && _typeof(color) === 'object' ? \"url(#\".concat(gradientId, \")\") : undefined;\n var circleStyleForStack = getCircleStyle(perimeter, perimeterWithoutGap, stackPtg, stepPtg, rotateDeg, gapDegree, gapPosition, color, 'butt', strokeWidth, stepSpace);\n stackPtg += (perimeterWithoutGap - circleStyleForStack.strokeDashoffset + stepSpace) * 100 / perimeterWithoutGap;\n return /*#__PURE__*/React.createElement(\"circle\", {\n key: index,\n className: \"\".concat(prefixCls, \"-circle-path\"),\n r: radius,\n cx: 0,\n cy: 0,\n stroke: stroke\n // strokeLinecap={strokeLinecap}\n ,\n\n strokeWidth: strokeWidth,\n opacity: 1,\n style: circleStyleForStack,\n ref: function ref(elem) {\n paths[index] = elem;\n }\n });\n });\n };\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n className: classNames(\"\".concat(prefixCls, \"-circle\"), className),\n viewBox: \"\".concat(-VIEW_BOX_SIZE / 2, \" \").concat(-VIEW_BOX_SIZE / 2, \" \").concat(VIEW_BOX_SIZE, \" \").concat(VIEW_BOX_SIZE),\n style: style,\n id: id,\n role: \"presentation\"\n }, restProps), gradient && /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: gradientId,\n x1: \"100%\",\n y1: \"0%\",\n x2: \"0%\",\n y2: \"0%\"\n }, Object.keys(gradient).sort(function (a, b) {\n return stripPercentToNumber(a) - stripPercentToNumber(b);\n }).map(function (key, index) {\n return /*#__PURE__*/React.createElement(\"stop\", {\n key: index,\n offset: key,\n stopColor: gradient[key]\n });\n }))), !stepCount && /*#__PURE__*/React.createElement(\"circle\", {\n className: \"\".concat(prefixCls, \"-circle-trail\"),\n r: radius,\n cx: 0,\n cy: 0,\n stroke: trailColor,\n strokeLinecap: strokeLinecap,\n strokeWidth: trailWidth || strokeWidth,\n style: circleStyle\n }), stepCount ? getStepStokeList() : getStokeList());\n};\nif (process.env.NODE_ENV !== 'production') {\n Circle.displayName = 'Circle';\n}\nexport default Circle;","import * as React from 'react';\nvar OrderContext = /*#__PURE__*/React.createContext(null);\nexport default OrderContext;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport canUseDom from \"rc-util/es/Dom/canUseDom\";\nimport OrderContext from \"./Context\";\nvar EMPTY_LIST = [];\n\n/**\n * Will add `div` to document. Nest call will keep order\n * @param render Render DOM in document\n */\nexport default function useDom(render, debug) {\n var _React$useState = React.useState(function () {\n if (!canUseDom()) {\n return null;\n }\n var defaultEle = document.createElement('div');\n if (process.env.NODE_ENV !== 'production' && debug) {\n defaultEle.setAttribute('data-debug', debug);\n }\n return defaultEle;\n }),\n _React$useState2 = _slicedToArray(_React$useState, 1),\n ele = _React$useState2[0];\n\n // ========================== Order ==========================\n var appendedRef = React.useRef(false);\n var queueCreate = React.useContext(OrderContext);\n var _React$useState3 = React.useState(EMPTY_LIST),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n queue = _React$useState4[0],\n setQueue = _React$useState4[1];\n var mergedQueueCreate = queueCreate || (appendedRef.current ? undefined : function (appendFn) {\n setQueue(function (origin) {\n var newQueue = [appendFn].concat(_toConsumableArray(origin));\n return newQueue;\n });\n });\n\n // =========================== DOM ===========================\n function append() {\n if (!ele.parentElement) {\n document.body.appendChild(ele);\n }\n appendedRef.current = true;\n }\n function cleanup() {\n var _ele$parentElement;\n (_ele$parentElement = ele.parentElement) === null || _ele$parentElement === void 0 ? void 0 : _ele$parentElement.removeChild(ele);\n appendedRef.current = false;\n }\n useLayoutEffect(function () {\n if (render) {\n if (queueCreate) {\n queueCreate(append);\n } else {\n append();\n }\n } else {\n cleanup();\n }\n return cleanup;\n }, [render]);\n useLayoutEffect(function () {\n if (queue.length) {\n queue.forEach(function (appendFn) {\n return appendFn();\n });\n setQueue(EMPTY_LIST);\n }\n }, [queue]);\n return [ele, mergedQueueCreate];\n}","/* eslint-disable no-param-reassign */\n\nvar cached;\nexport default function getScrollBarSize(fresh) {\n if (typeof document === 'undefined') {\n return 0;\n }\n if (fresh || cached === undefined) {\n var inner = document.createElement('div');\n inner.style.width = '100%';\n inner.style.height = '200px';\n var outer = document.createElement('div');\n var outerStyle = outer.style;\n outerStyle.position = 'absolute';\n outerStyle.top = '0';\n outerStyle.left = '0';\n outerStyle.pointerEvents = 'none';\n outerStyle.visibility = 'hidden';\n outerStyle.width = '200px';\n outerStyle.height = '150px';\n outerStyle.overflow = 'hidden';\n outer.appendChild(inner);\n document.body.appendChild(outer);\n var widthContained = inner.offsetWidth;\n outer.style.overflow = 'scroll';\n var widthScroll = inner.offsetWidth;\n if (widthContained === widthScroll) {\n widthScroll = outer.clientWidth;\n }\n document.body.removeChild(outer);\n cached = widthContained - widthScroll;\n }\n return cached;\n}\nfunction ensureSize(str) {\n var match = str.match(/^(.*)px$/);\n var value = Number(match === null || match === void 0 ? void 0 : match[1]);\n return Number.isNaN(value) ? getScrollBarSize() : value;\n}\nexport function getTargetScrollBarSize(target) {\n if (typeof document === 'undefined' || !target || !(target instanceof Element)) {\n return {\n width: 0,\n height: 0\n };\n }\n var _getComputedStyle = getComputedStyle(target, '::-webkit-scrollbar'),\n width = _getComputedStyle.width,\n height = _getComputedStyle.height;\n return {\n width: ensureSize(width),\n height: ensureSize(height)\n };\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { updateCSS, removeCSS } from \"rc-util/es/Dom/dynamicCSS\";\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport { getTargetScrollBarSize } from \"rc-util/es/getScrollBarSize\";\nimport { isBodyOverflowing } from \"./util\";\nvar UNIQUE_ID = \"rc-util-locker-\".concat(Date.now());\nvar uuid = 0;\nexport default function useScrollLocker(lock) {\n var mergedLock = !!lock;\n var _React$useState = React.useState(function () {\n uuid += 1;\n return \"\".concat(UNIQUE_ID, \"_\").concat(uuid);\n }),\n _React$useState2 = _slicedToArray(_React$useState, 1),\n id = _React$useState2[0];\n useLayoutEffect(function () {\n if (mergedLock) {\n var scrollbarSize = getTargetScrollBarSize(document.body).width;\n var isOverflow = isBodyOverflowing();\n updateCSS(\"\\nhtml body {\\n overflow-y: hidden;\\n \".concat(isOverflow ? \"width: calc(100% - \".concat(scrollbarSize, \"px);\") : '', \"\\n}\"), id);\n } else {\n removeCSS(id);\n }\n return function () {\n removeCSS(id);\n };\n }, [mergedLock, id]);\n}","/**\n * Test usage export. Do not use in your production\n */\nexport function isBodyOverflowing() {\n return document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight) && window.innerWidth > document.body.offsetWidth;\n}","export var inline = false;\nexport function inlineMock(nextInline) {\n if (typeof nextInline === 'boolean') {\n inline = nextInline;\n }\n return inline;\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { createPortal } from 'react-dom';\nimport canUseDom from \"rc-util/es/Dom/canUseDom\";\nimport warning from \"rc-util/es/warning\";\nimport { supportRef, useComposeRef } from \"rc-util/es/ref\";\nimport OrderContext from \"./Context\";\nimport useDom from \"./useDom\";\nimport useScrollLocker from \"./useScrollLocker\";\nimport { inlineMock } from \"./mock\";\nvar getPortalContainer = function getPortalContainer(getContainer) {\n if (getContainer === false) {\n return false;\n }\n if (!canUseDom() || !getContainer) {\n return null;\n }\n if (typeof getContainer === 'string') {\n return document.querySelector(getContainer);\n }\n if (typeof getContainer === 'function') {\n return getContainer();\n }\n return getContainer;\n};\nvar Portal = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var open = props.open,\n autoLock = props.autoLock,\n getContainer = props.getContainer,\n debug = props.debug,\n _props$autoDestroy = props.autoDestroy,\n autoDestroy = _props$autoDestroy === void 0 ? true : _props$autoDestroy,\n children = props.children;\n var _React$useState = React.useState(open),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n shouldRender = _React$useState2[0],\n setShouldRender = _React$useState2[1];\n var mergedRender = shouldRender || open;\n\n // ========================= Warning =========================\n if (process.env.NODE_ENV !== 'production') {\n warning(canUseDom() || !open, \"Portal only work in client side. Please call 'useEffect' to show Portal instead default render in SSR.\");\n }\n\n // ====================== Should Render ======================\n React.useEffect(function () {\n if (autoDestroy || open) {\n setShouldRender(open);\n }\n }, [open, autoDestroy]);\n\n // ======================== Container ========================\n var _React$useState3 = React.useState(function () {\n return getPortalContainer(getContainer);\n }),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n innerContainer = _React$useState4[0],\n setInnerContainer = _React$useState4[1];\n React.useEffect(function () {\n var customizeContainer = getPortalContainer(getContainer);\n\n // Tell component that we check this in effect which is safe to be `null`\n setInnerContainer(customizeContainer !== null && customizeContainer !== void 0 ? customizeContainer : null);\n });\n var _useDom = useDom(mergedRender && !innerContainer, debug),\n _useDom2 = _slicedToArray(_useDom, 2),\n defaultContainer = _useDom2[0],\n queueCreate = _useDom2[1];\n var mergedContainer = innerContainer !== null && innerContainer !== void 0 ? innerContainer : defaultContainer;\n\n // ========================= Locker ==========================\n useScrollLocker(autoLock && open && canUseDom() && (mergedContainer === defaultContainer || mergedContainer === document.body));\n\n // =========================== Ref ===========================\n var childRef = null;\n if (children && supportRef(children) && ref) {\n var _ref = children;\n childRef = _ref.ref;\n }\n var mergedRef = useComposeRef(childRef, ref);\n\n // ========================= Render ==========================\n // Do not render when nothing need render\n // When innerContainer is `undefined`, it may not ready since user use ref in the same render\n if (!mergedRender || !canUseDom() || innerContainer === undefined) {\n return null;\n }\n\n // Render inline\n var renderInline = mergedContainer === false || inlineMock();\n var reffedChildren = children;\n if (ref) {\n reffedChildren = /*#__PURE__*/React.cloneElement(children, {\n ref: mergedRef\n });\n }\n return /*#__PURE__*/React.createElement(OrderContext.Provider, {\n value: queueCreate\n }, renderInline ? reffedChildren : /*#__PURE__*/createPortal(reffedChildren, mergedContainer));\n});\nif (process.env.NODE_ENV !== 'production') {\n Portal.displayName = 'Portal';\n}\nexport default Portal;","import Portal from \"./Portal\";\nimport { inlineMock } from \"./mock\";\nexport { inlineMock };\nexport default Portal;","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\n/* eslint-disable require-jsdoc, valid-jsdoc */\nvar MapShim = function () {\n if (typeof Map !== 'undefined') {\n return Map;\n }\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\n function getIndex(arr, key) {\n var result = -1;\n arr.some(function (entry, index) {\n if (entry[0] === key) {\n result = index;\n return true;\n }\n return false;\n });\n return result;\n }\n return (/** @class */function () {\n function class_1() {\n this.__entries__ = [];\n }\n Object.defineProperty(class_1.prototype, \"size\", {\n /**\r\n * @returns {boolean}\r\n */\n get: function get() {\n return this.__entries__.length;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\n class_1.prototype.get = function (key) {\n var index = getIndex(this.__entries__, key);\n var entry = this.__entries__[index];\n return entry && entry[1];\n };\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\n class_1.prototype.set = function (key, value) {\n var index = getIndex(this.__entries__, key);\n if (~index) {\n this.__entries__[index][1] = value;\n } else {\n this.__entries__.push([key, value]);\n }\n };\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\n class_1.prototype.delete = function (key) {\n var entries = this.__entries__;\n var index = getIndex(entries, key);\n if (~index) {\n entries.splice(index, 1);\n }\n };\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\n class_1.prototype.has = function (key) {\n return !!~getIndex(this.__entries__, key);\n };\n /**\r\n * @returns {void}\r\n */\n class_1.prototype.clear = function () {\n this.__entries__.splice(0);\n };\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\n class_1.prototype.forEach = function (callback, ctx) {\n if (ctx === void 0) {\n ctx = null;\n }\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\n var entry = _a[_i];\n callback.call(ctx, entry[1], entry[0]);\n }\n };\n return class_1;\n }()\n );\n}();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\nvar global$1 = function () {\n if (typeof global !== 'undefined' && global.Math === Math) {\n return global;\n }\n if (typeof self !== 'undefined' && self.Math === Math) {\n return self;\n }\n if (typeof window !== 'undefined' && window.Math === Math) {\n return window;\n }\n // eslint-disable-next-line no-new-func\n return Function('return this')();\n}();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\nvar requestAnimationFrame$1 = function () {\n if (typeof requestAnimationFrame === 'function') {\n // It's required to use a bounded function because IE sometimes throws\n // an \"Invalid calling object\" error if rAF is invoked without the global\n // object on the left hand side.\n return requestAnimationFrame.bind(global$1);\n }\n return function (callback) {\n return setTimeout(function () {\n return callback(Date.now());\n }, 1000 / 60);\n };\n}();\n\n// Defines minimum timeout before adding a trailing call.\nvar trailingTimeout = 2;\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\nfunction throttle(callback, delay) {\n var leadingCall = false,\n trailingCall = false,\n lastCallTime = 0;\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\n function resolvePending() {\n if (leadingCall) {\n leadingCall = false;\n callback();\n }\n if (trailingCall) {\n proxy();\n }\n }\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\n function timeoutCallback() {\n requestAnimationFrame$1(resolvePending);\n }\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\n function proxy() {\n var timeStamp = Date.now();\n if (leadingCall) {\n // Reject immediately following calls.\n if (timeStamp - lastCallTime < trailingTimeout) {\n return;\n }\n // Schedule new call to be in invoked when the pending one is resolved.\n // This is important for \"transitions\" which never actually start\n // immediately so there is a chance that we might miss one if change\n // happens amids the pending invocation.\n trailingCall = true;\n } else {\n leadingCall = true;\n trailingCall = false;\n setTimeout(timeoutCallback, delay);\n }\n lastCallTime = timeStamp;\n }\n return proxy;\n}\n\n// Minimum delay before invoking the update of observers.\nvar REFRESH_DELAY = 20;\n// A list of substrings of CSS properties used to find transition events that\n// might affect dimensions of observed elements.\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\n// Check if MutationObserver is available.\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\nvar ResizeObserverController = /** @class */function () {\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\n function ResizeObserverController() {\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\n this.connected_ = false;\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\n this.mutationEventsAdded_ = false;\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\n this.mutationsObserver_ = null;\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array}\r\n */\n this.observers_ = [];\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\n }\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\n ResizeObserverController.prototype.addObserver = function (observer) {\n if (!~this.observers_.indexOf(observer)) {\n this.observers_.push(observer);\n }\n // Add listeners if they haven't been added yet.\n if (!this.connected_) {\n this.connect_();\n }\n };\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\n ResizeObserverController.prototype.removeObserver = function (observer) {\n var observers = this.observers_;\n var index = observers.indexOf(observer);\n // Remove observer if it's present in registry.\n if (~index) {\n observers.splice(index, 1);\n }\n // Remove listeners if controller has no connected observers.\n if (!observers.length && this.connected_) {\n this.disconnect_();\n }\n };\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\n ResizeObserverController.prototype.refresh = function () {\n var changesDetected = this.updateObservers_();\n // Continue running updates if changes have been detected as there might\n // be future ones caused by CSS transitions.\n if (changesDetected) {\n this.refresh();\n }\n };\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\n ResizeObserverController.prototype.updateObservers_ = function () {\n // Collect observers that have active observations.\n var activeObservers = this.observers_.filter(function (observer) {\n return observer.gatherActive(), observer.hasActive();\n });\n // Deliver notifications in a separate cycle in order to avoid any\n // collisions between observers, e.g. when multiple instances of\n // ResizeObserver are tracking the same element and the callback of one\n // of them changes content dimensions of the observed target. Sometimes\n // this may result in notifications being blocked for the rest of observers.\n activeObservers.forEach(function (observer) {\n return observer.broadcastActive();\n });\n return activeObservers.length > 0;\n };\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\n ResizeObserverController.prototype.connect_ = function () {\n // Do nothing if running in a non-browser environment or if listeners\n // have been already added.\n if (!isBrowser || this.connected_) {\n return;\n }\n // Subscription to the \"Transitionend\" event is used as a workaround for\n // delayed transitions. This way it's possible to capture at least the\n // final state of an element.\n document.addEventListener('transitionend', this.onTransitionEnd_);\n window.addEventListener('resize', this.refresh);\n if (mutationObserverSupported) {\n this.mutationsObserver_ = new MutationObserver(this.refresh);\n this.mutationsObserver_.observe(document, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true\n });\n } else {\n document.addEventListener('DOMSubtreeModified', this.refresh);\n this.mutationEventsAdded_ = true;\n }\n this.connected_ = true;\n };\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\n ResizeObserverController.prototype.disconnect_ = function () {\n // Do nothing if running in a non-browser environment or if listeners\n // have been already removed.\n if (!isBrowser || !this.connected_) {\n return;\n }\n document.removeEventListener('transitionend', this.onTransitionEnd_);\n window.removeEventListener('resize', this.refresh);\n if (this.mutationsObserver_) {\n this.mutationsObserver_.disconnect();\n }\n if (this.mutationEventsAdded_) {\n document.removeEventListener('DOMSubtreeModified', this.refresh);\n }\n this.mutationsObserver_ = null;\n this.mutationEventsAdded_ = false;\n this.connected_ = false;\n };\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\n var _b = _a.propertyName,\n propertyName = _b === void 0 ? '' : _b;\n // Detect whether transition may affect dimensions of an element.\n var isReflowProperty = transitionKeys.some(function (key) {\n return !!~propertyName.indexOf(key);\n });\n if (isReflowProperty) {\n this.refresh();\n }\n };\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\n ResizeObserverController.getInstance = function () {\n if (!this.instance_) {\n this.instance_ = new ResizeObserverController();\n }\n return this.instance_;\n };\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\n ResizeObserverController.instance_ = null;\n return ResizeObserverController;\n}();\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\nvar defineConfigurable = function defineConfigurable(target, props) {\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\n var key = _a[_i];\n Object.defineProperty(target, key, {\n value: props[key],\n enumerable: false,\n writable: false,\n configurable: true\n });\n }\n return target;\n};\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\nvar getWindowOf = function getWindowOf(target) {\n // Assume that the element is an instance of Node, which means that it\n // has the \"ownerDocument\" property from which we can retrieve a\n // corresponding global object.\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\n // Return the local global object if it's not possible extract one from\n // provided element.\n return ownerGlobal || global$1;\n};\n\n// Placeholder of an empty content rectangle.\nvar emptyRect = createRectInit(0, 0, 0, 0);\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\nfunction toFloat(value) {\n return parseFloat(value) || 0;\n}\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\nfunction getBordersSize(styles) {\n var positions = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n positions[_i - 1] = arguments[_i];\n }\n return positions.reduce(function (size, position) {\n var value = styles['border-' + position + '-width'];\n return size + toFloat(value);\n }, 0);\n}\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\nfunction getPaddings(styles) {\n var positions = ['top', 'right', 'bottom', 'left'];\n var paddings = {};\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\n var position = positions_1[_i];\n var value = styles['padding-' + position];\n paddings[position] = toFloat(value);\n }\n return paddings;\n}\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\nfunction getSVGContentRect(target) {\n var bbox = target.getBBox();\n return createRectInit(0, 0, bbox.width, bbox.height);\n}\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\nfunction getHTMLElementContentRect(target) {\n // Client width & height properties can't be\n // used exclusively as they provide rounded values.\n var clientWidth = target.clientWidth,\n clientHeight = target.clientHeight;\n // By this condition we can catch all non-replaced inline, hidden and\n // detached elements. Though elements with width & height properties less\n // than 0.5 will be discarded as well.\n //\n // Without it we would need to implement separate methods for each of\n // those cases and it's not possible to perform a precise and performance\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\n // gives wrong results for elements with width & height less than 0.5.\n if (!clientWidth && !clientHeight) {\n return emptyRect;\n }\n var styles = getWindowOf(target).getComputedStyle(target);\n var paddings = getPaddings(styles);\n var horizPad = paddings.left + paddings.right;\n var vertPad = paddings.top + paddings.bottom;\n // Computed styles of width & height are being used because they are the\n // only dimensions available to JS that contain non-rounded values. It could\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\n // affected by CSS transformations let alone paddings, borders and scroll bars.\n var width = toFloat(styles.width),\n height = toFloat(styles.height);\n // Width & height include paddings and borders when the 'border-box' box\n // model is applied (except for IE).\n if (styles.boxSizing === 'border-box') {\n // Following conditions are required to handle Internet Explorer which\n // doesn't include paddings and borders to computed CSS dimensions.\n //\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\n // properties then it's either IE, and thus we don't need to subtract\n // anything, or an element merely doesn't have paddings/borders styles.\n if (Math.round(width + horizPad) !== clientWidth) {\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\n }\n if (Math.round(height + vertPad) !== clientHeight) {\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\n }\n }\n // Following steps can't be applied to the document's root element as its\n // client[Width/Height] properties represent viewport area of the window.\n // Besides, it's as well not necessary as the itself neither has\n // rendered scroll bars nor it can be clipped.\n if (!isDocumentElement(target)) {\n // In some browsers (only in Firefox, actually) CSS width & height\n // include scroll bars size which can be removed at this step as scroll\n // bars are the only difference between rounded dimensions + paddings\n // and \"client\" properties, though that is not always true in Chrome.\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\n // Chrome has a rather weird rounding of \"client\" properties.\n // E.g. for an element with content width of 314.2px it sometimes gives\n // the client width of 315px and for the width of 314.7px it may give\n // 314px. And it doesn't happen all the time. So just ignore this delta\n // as a non-relevant.\n if (Math.abs(vertScrollbar) !== 1) {\n width -= vertScrollbar;\n }\n if (Math.abs(horizScrollbar) !== 1) {\n height -= horizScrollbar;\n }\n }\n return createRectInit(paddings.left, paddings.top, width, height);\n}\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\nvar isSVGGraphicsElement = function () {\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\n // interface.\n if (typeof SVGGraphicsElement !== 'undefined') {\n return function (target) {\n return target instanceof getWindowOf(target).SVGGraphicsElement;\n };\n }\n // If it's so, then check that element is at least an instance of the\n // SVGElement and that it has the \"getBBox\" method.\n // eslint-disable-next-line no-extra-parens\n return function (target) {\n return target instanceof getWindowOf(target).SVGElement && typeof target.getBBox === 'function';\n };\n}();\n/**\r\n * Checks whether provided element is a document element ().\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\nfunction isDocumentElement(target) {\n return target === getWindowOf(target).document.documentElement;\n}\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\nfunction getContentRect(target) {\n if (!isBrowser) {\n return emptyRect;\n }\n if (isSVGGraphicsElement(target)) {\n return getSVGContentRect(target);\n }\n return getHTMLElementContentRect(target);\n}\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\nfunction createReadOnlyRect(_a) {\n var x = _a.x,\n y = _a.y,\n width = _a.width,\n height = _a.height;\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\n var rect = Object.create(Constr.prototype);\n // Rectangle's properties are not writable and non-enumerable.\n defineConfigurable(rect, {\n x: x,\n y: y,\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: height + y,\n left: x\n });\n return rect;\n}\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\nfunction createRectInit(x, y, width, height) {\n return {\n x: x,\n y: y,\n width: width,\n height: height\n };\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\nvar ResizeObservation = /** @class */function () {\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\n function ResizeObservation(target) {\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\n this.broadcastWidth = 0;\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\n this.broadcastHeight = 0;\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\n this.contentRect_ = createRectInit(0, 0, 0, 0);\n this.target = target;\n }\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\n ResizeObservation.prototype.isActive = function () {\n var rect = getContentRect(this.target);\n this.contentRect_ = rect;\n return rect.width !== this.broadcastWidth || rect.height !== this.broadcastHeight;\n };\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\n ResizeObservation.prototype.broadcastRect = function () {\n var rect = this.contentRect_;\n this.broadcastWidth = rect.width;\n this.broadcastHeight = rect.height;\n return rect;\n };\n return ResizeObservation;\n}();\nvar ResizeObserverEntry = /** @class */function () {\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\n function ResizeObserverEntry(target, rectInit) {\n var contentRect = createReadOnlyRect(rectInit);\n // According to the specification following properties are not writable\n // and are also not enumerable in the native implementation.\n //\n // Property accessors are not being used as they'd require to define a\n // private WeakMap storage which may cause memory leaks in browsers that\n // don't support this type of collections.\n defineConfigurable(this, {\n target: target,\n contentRect: contentRect\n });\n }\n return ResizeObserverEntry;\n}();\nvar ResizeObserverSPI = /** @class */function () {\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\n function ResizeObserverSPI(callback, controller, callbackCtx) {\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array}\r\n */\n this.activeObservations_ = [];\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map}\r\n */\n this.observations_ = new MapShim();\n if (typeof callback !== 'function') {\n throw new TypeError('The callback provided as parameter 1 is not a function.');\n }\n this.callback_ = callback;\n this.controller_ = controller;\n this.callbackCtx_ = callbackCtx;\n }\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\n ResizeObserverSPI.prototype.observe = function (target) {\n if (!arguments.length) {\n throw new TypeError('1 argument required, but only 0 present.');\n }\n // Do nothing if current environment doesn't have the Element interface.\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\n return;\n }\n if (!(target instanceof getWindowOf(target).Element)) {\n throw new TypeError('parameter 1 is not of type \"Element\".');\n }\n var observations = this.observations_;\n // Do nothing if element is already being observed.\n if (observations.has(target)) {\n return;\n }\n observations.set(target, new ResizeObservation(target));\n this.controller_.addObserver(this);\n // Force the update of observations.\n this.controller_.refresh();\n };\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\n ResizeObserverSPI.prototype.unobserve = function (target) {\n if (!arguments.length) {\n throw new TypeError('1 argument required, but only 0 present.');\n }\n // Do nothing if current environment doesn't have the Element interface.\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\n return;\n }\n if (!(target instanceof getWindowOf(target).Element)) {\n throw new TypeError('parameter 1 is not of type \"Element\".');\n }\n var observations = this.observations_;\n // Do nothing if element is not being observed.\n if (!observations.has(target)) {\n return;\n }\n observations.delete(target);\n if (!observations.size) {\n this.controller_.removeObserver(this);\n }\n };\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\n ResizeObserverSPI.prototype.disconnect = function () {\n this.clearActive();\n this.observations_.clear();\n this.controller_.removeObserver(this);\n };\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\n ResizeObserverSPI.prototype.gatherActive = function () {\n var _this = this;\n this.clearActive();\n this.observations_.forEach(function (observation) {\n if (observation.isActive()) {\n _this.activeObservations_.push(observation);\n }\n });\n };\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\n ResizeObserverSPI.prototype.broadcastActive = function () {\n // Do nothing if observer doesn't have active observations.\n if (!this.hasActive()) {\n return;\n }\n var ctx = this.callbackCtx_;\n // Create ResizeObserverEntry instance for every active observation.\n var entries = this.activeObservations_.map(function (observation) {\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\n });\n this.callback_.call(ctx, entries, ctx);\n this.clearActive();\n };\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\n ResizeObserverSPI.prototype.clearActive = function () {\n this.activeObservations_.splice(0);\n };\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\n ResizeObserverSPI.prototype.hasActive = function () {\n return this.activeObservations_.length > 0;\n };\n return ResizeObserverSPI;\n}();\n\n// Registry of internal observers. If WeakMap is not available use current shim\n// for the Map collection as it has all required methods and because WeakMap\n// can't be fully polyfilled anyway.\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\nvar ResizeObserver = /** @class */function () {\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\n function ResizeObserver(callback) {\n if (!(this instanceof ResizeObserver)) {\n throw new TypeError('Cannot call a class as a function.');\n }\n if (!arguments.length) {\n throw new TypeError('1 argument required, but only 0 present.');\n }\n var controller = ResizeObserverController.getInstance();\n var observer = new ResizeObserverSPI(callback, controller, this);\n observers.set(this, observer);\n }\n return ResizeObserver;\n}();\n// Expose public methods of ResizeObserver.\n['observe', 'unobserve', 'disconnect'].forEach(function (method) {\n ResizeObserver.prototype[method] = function () {\n var _a;\n return (_a = observers.get(this))[method].apply(_a, arguments);\n };\n});\nvar index = function () {\n // Export existing implementation if available.\n if (typeof global$1.ResizeObserver !== 'undefined') {\n return global$1.ResizeObserver;\n }\n return ResizeObserver;\n}();\nexport default index;","import ResizeObserver from 'resize-observer-polyfill';\n// =============================== Const ===============================\nvar elementListeners = new Map();\nfunction onResize(entities) {\n entities.forEach(function (entity) {\n var _elementListeners$get;\n var target = entity.target;\n (_elementListeners$get = elementListeners.get(target)) === null || _elementListeners$get === void 0 ? void 0 : _elementListeners$get.forEach(function (listener) {\n return listener(target);\n });\n });\n}\n// Note: ResizeObserver polyfill not support option to measure border-box resize\nvar resizeObserver = new ResizeObserver(onResize);\n// Dev env only\nexport var _el = process.env.NODE_ENV !== 'production' ? elementListeners : null; // eslint-disable-line\nexport var _rs = process.env.NODE_ENV !== 'production' ? onResize : null; // eslint-disable-line\n// ============================== Observe ==============================\nexport function observe(element, callback) {\n if (!elementListeners.has(element)) {\n elementListeners.set(element, new Set());\n resizeObserver.observe(element);\n }\n elementListeners.get(element).add(callback);\n}\nexport function unobserve(element, callback) {\n if (elementListeners.has(element)) {\n elementListeners.get(element).delete(callback);\n if (!elementListeners.get(element).size) {\n resizeObserver.unobserve(element);\n elementListeners.delete(element);\n }\n }\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport * as React from 'react';\n/**\n * Fallback to findDOMNode if origin ref do not provide any dom element\n */\nvar DomWrapper = /*#__PURE__*/function (_React$Component) {\n _inherits(DomWrapper, _React$Component);\n var _super = _createSuper(DomWrapper);\n function DomWrapper() {\n _classCallCheck(this, DomWrapper);\n return _super.apply(this, arguments);\n }\n _createClass(DomWrapper, [{\n key: \"render\",\n value: function render() {\n return this.props.children;\n }\n }]);\n return DomWrapper;\n}(React.Component);\nexport { DomWrapper as default };","import * as React from 'react';\nexport var CollectionContext = /*#__PURE__*/React.createContext(null);\n/**\n * Collect all the resize event from children ResizeObserver\n */\nexport function Collection(_ref) {\n var children = _ref.children,\n onBatchResize = _ref.onBatchResize;\n var resizeIdRef = React.useRef(0);\n var resizeInfosRef = React.useRef([]);\n var onCollectionResize = React.useContext(CollectionContext);\n var onResize = React.useCallback(function (size, element, data) {\n resizeIdRef.current += 1;\n var currentId = resizeIdRef.current;\n resizeInfosRef.current.push({\n size: size,\n element: element,\n data: data\n });\n Promise.resolve().then(function () {\n if (currentId === resizeIdRef.current) {\n onBatchResize === null || onBatchResize === void 0 ? void 0 : onBatchResize(resizeInfosRef.current);\n resizeInfosRef.current = [];\n }\n });\n // Continue bubbling if parent exist\n onCollectionResize === null || onCollectionResize === void 0 ? void 0 : onCollectionResize(size, element, data);\n }, [onBatchResize, onCollectionResize]);\n return /*#__PURE__*/React.createElement(CollectionContext.Provider, {\n value: onResize\n }, children);\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport { composeRef, supportRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nimport findDOMNode from \"rc-util/es/Dom/findDOMNode\";\nimport { observe, unobserve } from '../utils/observerUtil';\nimport DomWrapper from './DomWrapper';\nimport { CollectionContext } from '../Collection';\nfunction SingleObserver(props, ref) {\n var children = props.children,\n disabled = props.disabled;\n var elementRef = React.useRef(null);\n var wrapperRef = React.useRef(null);\n var onCollectionResize = React.useContext(CollectionContext);\n // =========================== Children ===========================\n var isRenderProps = typeof children === 'function';\n var mergedChildren = isRenderProps ? children(elementRef) : children;\n // ============================= Size =============================\n var sizeRef = React.useRef({\n width: -1,\n height: -1,\n offsetWidth: -1,\n offsetHeight: -1\n });\n // ============================= Ref ==============================\n var canRef = !isRenderProps && /*#__PURE__*/React.isValidElement(mergedChildren) && supportRef(mergedChildren);\n var originRef = canRef ? mergedChildren.ref : null;\n var mergedRef = React.useMemo(function () {\n return composeRef(originRef, elementRef);\n }, [originRef, elementRef]);\n var getDom = function getDom() {\n return findDOMNode(elementRef.current) || findDOMNode(wrapperRef.current);\n };\n React.useImperativeHandle(ref, function () {\n return getDom();\n });\n // =========================== Observe ============================\n var propsRef = React.useRef(props);\n propsRef.current = props;\n // Handler\n var onInternalResize = React.useCallback(function (target) {\n var _propsRef$current = propsRef.current,\n onResize = _propsRef$current.onResize,\n data = _propsRef$current.data;\n var _target$getBoundingCl = target.getBoundingClientRect(),\n width = _target$getBoundingCl.width,\n height = _target$getBoundingCl.height;\n var offsetWidth = target.offsetWidth,\n offsetHeight = target.offsetHeight;\n /**\n * Resize observer trigger when content size changed.\n * In most case we just care about element size,\n * let's use `boundary` instead of `contentRect` here to avoid shaking.\n */\n var fixedWidth = Math.floor(width);\n var fixedHeight = Math.floor(height);\n if (sizeRef.current.width !== fixedWidth || sizeRef.current.height !== fixedHeight || sizeRef.current.offsetWidth !== offsetWidth || sizeRef.current.offsetHeight !== offsetHeight) {\n var size = {\n width: fixedWidth,\n height: fixedHeight,\n offsetWidth: offsetWidth,\n offsetHeight: offsetHeight\n };\n sizeRef.current = size;\n // IE is strange, right?\n var mergedOffsetWidth = offsetWidth === Math.round(width) ? width : offsetWidth;\n var mergedOffsetHeight = offsetHeight === Math.round(height) ? height : offsetHeight;\n var sizeInfo = _objectSpread(_objectSpread({}, size), {}, {\n offsetWidth: mergedOffsetWidth,\n offsetHeight: mergedOffsetHeight\n });\n // Let collection know what happened\n onCollectionResize === null || onCollectionResize === void 0 ? void 0 : onCollectionResize(sizeInfo, target, data);\n if (onResize) {\n // defer the callback but not defer to next frame\n Promise.resolve().then(function () {\n onResize(sizeInfo, target);\n });\n }\n }\n }, []);\n // Dynamic observe\n React.useEffect(function () {\n var currentElement = getDom();\n if (currentElement && !disabled) {\n observe(currentElement, onInternalResize);\n }\n return function () {\n return unobserve(currentElement, onInternalResize);\n };\n }, [elementRef.current, disabled]);\n // ============================ Render ============================\n return /*#__PURE__*/React.createElement(DomWrapper, {\n ref: wrapperRef\n }, canRef ? /*#__PURE__*/React.cloneElement(mergedChildren, {\n ref: mergedRef\n }) : mergedChildren);\n}\nvar RefSingleObserver = /*#__PURE__*/React.forwardRef(SingleObserver);\nif (process.env.NODE_ENV !== 'production') {\n RefSingleObserver.displayName = 'SingleObserver';\n}\nexport default RefSingleObserver;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport toArray from \"rc-util/es/Children/toArray\";\nimport { warning } from \"rc-util/es/warning\";\nimport SingleObserver from './SingleObserver';\nimport { Collection } from './Collection';\nvar INTERNAL_PREFIX_KEY = 'rc-observer-key';\nimport { _rs } from './utils/observerUtil';\nexport { /** @private Test only for mock trigger resize event */\n_rs };\nfunction ResizeObserver(props, ref) {\n var children = props.children;\n var childNodes = typeof children === 'function' ? [children] : toArray(children);\n if (process.env.NODE_ENV !== 'production') {\n if (childNodes.length > 1) {\n warning(false, 'Find more than one child node with `children` in ResizeObserver. Please use ResizeObserver.Collection instead.');\n } else if (childNodes.length === 0) {\n warning(false, '`children` of ResizeObserver is empty. Nothing is in observe.');\n }\n }\n return childNodes.map(function (child, index) {\n var key = (child === null || child === void 0 ? void 0 : child.key) || \"\".concat(INTERNAL_PREFIX_KEY, \"-\").concat(index);\n return /*#__PURE__*/React.createElement(SingleObserver, _extends({}, props, {\n key: key,\n ref: index === 0 ? ref : undefined\n }), child);\n });\n}\nvar RefResizeObserver = /*#__PURE__*/React.forwardRef(ResizeObserver);\nif (process.env.NODE_ENV !== 'production') {\n RefResizeObserver.displayName = 'ResizeObserver';\n}\nRefResizeObserver.Collection = Collection;\nexport default RefResizeObserver;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nfunction getUseId() {\n // We need fully clone React function here to avoid webpack warning React 17 do not export `useId`\n var fullClone = _objectSpread({}, React);\n return fullClone.useId;\n}\nvar uuid = 0;\n\n/** @private Note only worked in develop env. Not work in production. */\nexport function resetUuid() {\n if (process.env.NODE_ENV !== 'production') {\n uuid = 0;\n }\n}\nexport default function useId(id) {\n // Inner id for accessibility usage. Only work in client side\n var _React$useState = React.useState('ssr-id'),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n innerId = _React$useState2[0],\n setInnerId = _React$useState2[1];\n var useOriginId = getUseId();\n var reactNativeId = useOriginId === null || useOriginId === void 0 ? void 0 : useOriginId();\n React.useEffect(function () {\n if (!useOriginId) {\n var nextId = uuid;\n uuid += 1;\n setInnerId(\"rc_unique_\".concat(nextId));\n }\n }, []);\n\n // Developer passed id is single source of truth\n if (id) {\n return id;\n }\n\n // Test env always return mock id\n if (process.env.NODE_ENV === 'test') {\n return 'test-id';\n }\n\n // Return react native id or inner id\n return reactNativeId || innerId;\n}","export default (function () {\n if (typeof navigator === 'undefined' || typeof window === 'undefined') {\n return false;\n }\n var agent = navigator.userAgent || navigator.vendor || window.opera;\n return /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(agent) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(agent === null || agent === void 0 ? void 0 : agent.substr(0, 4));\n});","import * as React from 'react';\nvar TriggerContext = /*#__PURE__*/React.createContext(null);\nexport default TriggerContext;","import * as React from 'react';\nfunction toArray(val) {\n return val ? Array.isArray(val) ? val : [val] : [];\n}\nexport default function useAction(mobile, action, showAction, hideAction) {\n return React.useMemo(function () {\n var mergedShowAction = toArray(showAction !== null && showAction !== void 0 ? showAction : action);\n var mergedHideAction = toArray(hideAction !== null && hideAction !== void 0 ? hideAction : action);\n var showActionSet = new Set(mergedShowAction);\n var hideActionSet = new Set(mergedHideAction);\n if (mobile) {\n if (showActionSet.has('hover')) {\n showActionSet.delete('hover');\n showActionSet.add('click');\n }\n if (hideActionSet.has('hover')) {\n hideActionSet.delete('hover');\n hideActionSet.add('click');\n }\n }\n return [showActionSet, hideActionSet];\n }, [mobile, action, showAction, hideAction]);\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nfunction isPointsEq() {\n var a1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var a2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var isAlignPoint = arguments.length > 2 ? arguments[2] : undefined;\n if (isAlignPoint) {\n return a1[0] === a2[0];\n }\n return a1[0] === a2[0] && a1[1] === a2[1];\n}\nexport function getAlignPopupClassName(builtinPlacements, prefixCls, align, isAlignPoint) {\n var points = align.points;\n var placements = Object.keys(builtinPlacements);\n for (var i = 0; i < placements.length; i += 1) {\n var _builtinPlacements$pl;\n var placement = placements[i];\n if (isPointsEq((_builtinPlacements$pl = builtinPlacements[placement]) === null || _builtinPlacements$pl === void 0 ? void 0 : _builtinPlacements$pl.points, points, isAlignPoint)) {\n return \"\".concat(prefixCls, \"-placement-\").concat(placement);\n }\n }\n return '';\n}\n\n/** @deprecated We should not use this if we can refactor all deps */\nexport function getMotion(prefixCls, motion, animation, transitionName) {\n if (motion) {\n return motion;\n }\n if (animation) {\n return {\n motionName: \"\".concat(prefixCls, \"-\").concat(animation)\n };\n }\n if (transitionName) {\n return {\n motionName: transitionName\n };\n }\n return null;\n}\nexport function getWin(ele) {\n return ele.ownerDocument.defaultView;\n}\n\n/**\n * Get all the scrollable parent elements of the element\n * @param ele The element to be detected\n * @param areaOnly Only return the parent which will cut visible area\n */\nexport function collectScroller(ele) {\n var scrollerList = [];\n var current = ele === null || ele === void 0 ? void 0 : ele.parentElement;\n var scrollStyle = ['hidden', 'scroll', 'clip', 'auto'];\n while (current) {\n var _getWin$getComputedSt = getWin(current).getComputedStyle(current),\n overflowX = _getWin$getComputedSt.overflowX,\n overflowY = _getWin$getComputedSt.overflowY,\n overflow = _getWin$getComputedSt.overflow;\n if ([overflowX, overflowY, overflow].some(function (o) {\n return scrollStyle.includes(o);\n })) {\n scrollerList.push(current);\n }\n current = current.parentElement;\n }\n return scrollerList;\n}\nexport function toNum(num) {\n var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n return Number.isNaN(num) ? defaultValue : num;\n}\nfunction getPxValue(val) {\n return toNum(parseFloat(val), 0);\n}\n/**\n *\n *\n * **************************************\n * * Border *\n * * ************************** *\n * * * * * *\n * * B * * S * B *\n * * o * * c * o *\n * * r * Content * r * r *\n * * d * * o * d *\n * * e * * l * e *\n * * r ******************** l * r *\n * * * Scroll * *\n * * ************************** *\n * * Border *\n * **************************************\n *\n */\n/**\n * Get visible area of element\n */\nexport function getVisibleArea(initArea, scrollerList) {\n var visibleArea = _objectSpread({}, initArea);\n (scrollerList || []).forEach(function (ele) {\n if (ele instanceof HTMLBodyElement) {\n return;\n }\n\n // Skip if static position which will not affect visible area\n var _getWin$getComputedSt2 = getWin(ele).getComputedStyle(ele),\n overflow = _getWin$getComputedSt2.overflow,\n overflowClipMargin = _getWin$getComputedSt2.overflowClipMargin,\n borderTopWidth = _getWin$getComputedSt2.borderTopWidth,\n borderBottomWidth = _getWin$getComputedSt2.borderBottomWidth,\n borderLeftWidth = _getWin$getComputedSt2.borderLeftWidth,\n borderRightWidth = _getWin$getComputedSt2.borderRightWidth;\n var eleRect = ele.getBoundingClientRect();\n var eleOutHeight = ele.offsetHeight,\n eleInnerHeight = ele.clientHeight,\n eleOutWidth = ele.offsetWidth,\n eleInnerWidth = ele.clientWidth;\n var borderTopNum = getPxValue(borderTopWidth);\n var borderBottomNum = getPxValue(borderBottomWidth);\n var borderLeftNum = getPxValue(borderLeftWidth);\n var borderRightNum = getPxValue(borderRightWidth);\n var scaleX = toNum(Math.round(eleRect.width / eleOutWidth * 1000) / 1000);\n var scaleY = toNum(Math.round(eleRect.height / eleOutHeight * 1000) / 1000);\n\n // Original visible area\n var eleScrollWidth = (eleOutWidth - eleInnerWidth - borderLeftNum - borderRightNum) * scaleX;\n var eleScrollHeight = (eleOutHeight - eleInnerHeight - borderTopNum - borderBottomNum) * scaleY;\n\n // Cut border size\n var scaledBorderTopWidth = borderTopNum * scaleY;\n var scaledBorderBottomWidth = borderBottomNum * scaleY;\n var scaledBorderLeftWidth = borderLeftNum * scaleX;\n var scaledBorderRightWidth = borderRightNum * scaleX;\n\n // Clip margin\n var clipMarginWidth = 0;\n var clipMarginHeight = 0;\n if (overflow === 'clip') {\n var clipNum = getPxValue(overflowClipMargin);\n clipMarginWidth = clipNum * scaleX;\n clipMarginHeight = clipNum * scaleY;\n }\n\n // Region\n var eleLeft = eleRect.x + scaledBorderLeftWidth - clipMarginWidth;\n var eleTop = eleRect.y + scaledBorderTopWidth - clipMarginHeight;\n var eleRight = eleLeft + eleRect.width + 2 * clipMarginWidth - scaledBorderLeftWidth - scaledBorderRightWidth - eleScrollWidth;\n var eleBottom = eleTop + eleRect.height + 2 * clipMarginHeight - scaledBorderTopWidth - scaledBorderBottomWidth - eleScrollHeight;\n visibleArea.left = Math.max(visibleArea.left, eleLeft);\n visibleArea.top = Math.max(visibleArea.top, eleTop);\n visibleArea.right = Math.min(visibleArea.right, eleRight);\n visibleArea.bottom = Math.min(visibleArea.bottom, eleBottom);\n });\n return visibleArea;\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { isDOM } from \"rc-util/es/Dom/findDOMNode\";\nimport isVisible from \"rc-util/es/Dom/isVisible\";\nimport useEvent from \"rc-util/es/hooks/useEvent\";\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport * as React from 'react';\nimport { collectScroller, getVisibleArea, getWin, toNum } from \"../util\";\nfunction getUnitOffset(size) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var offsetStr = \"\".concat(offset);\n var cells = offsetStr.match(/^(.*)\\%$/);\n if (cells) {\n return size * (parseFloat(cells[1]) / 100);\n }\n return parseFloat(offsetStr);\n}\nfunction getNumberOffset(rect, offset) {\n var _ref = offset || [],\n _ref2 = _slicedToArray(_ref, 2),\n offsetX = _ref2[0],\n offsetY = _ref2[1];\n return [getUnitOffset(rect.width, offsetX), getUnitOffset(rect.height, offsetY)];\n}\nfunction splitPoints() {\n var points = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n return [points[0], points[1]];\n}\nfunction getAlignPoint(rect, points) {\n var topBottom = points[0];\n var leftRight = points[1];\n var x;\n var y;\n\n // Top & Bottom\n if (topBottom === 't') {\n y = rect.y;\n } else if (topBottom === 'b') {\n y = rect.y + rect.height;\n } else {\n y = rect.y + rect.height / 2;\n }\n\n // Left & Right\n if (leftRight === 'l') {\n x = rect.x;\n } else if (leftRight === 'r') {\n x = rect.x + rect.width;\n } else {\n x = rect.x + rect.width / 2;\n }\n return {\n x: x,\n y: y\n };\n}\nfunction reversePoints(points, index) {\n var reverseMap = {\n t: 'b',\n b: 't',\n l: 'r',\n r: 'l'\n };\n return points.map(function (point, i) {\n if (i === index) {\n return reverseMap[point] || 'c';\n }\n return point;\n }).join('');\n}\nexport default function useAlign(open, popupEle, target, placement, builtinPlacements, popupAlign, onPopupAlign) {\n var _React$useState = React.useState({\n ready: false,\n offsetX: 0,\n offsetY: 0,\n offsetR: 0,\n offsetB: 0,\n arrowX: 0,\n arrowY: 0,\n scaleX: 1,\n scaleY: 1,\n align: builtinPlacements[placement] || {}\n }),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n offsetInfo = _React$useState2[0],\n setOffsetInfo = _React$useState2[1];\n var alignCountRef = React.useRef(0);\n var scrollerList = React.useMemo(function () {\n if (!popupEle) {\n return [];\n }\n return collectScroller(popupEle);\n }, [popupEle]);\n\n // ========================= Flip ==========================\n // We will memo flip info.\n // If size change to make flip, it will memo the flip info and use it in next align.\n var prevFlipRef = React.useRef({});\n var resetFlipCache = function resetFlipCache() {\n prevFlipRef.current = {};\n };\n if (!open) {\n resetFlipCache();\n }\n\n // ========================= Align =========================\n var onAlign = useEvent(function () {\n if (popupEle && target && open) {\n // ============== Intersection ===============\n // Get area by position. Used for check if flip area is better\n var getIntersectionVisibleArea = function getIntersectionVisibleArea(offsetX, offsetY) {\n var area = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : visibleArea;\n var l = popupRect.x + offsetX;\n var t = popupRect.y + offsetY;\n var r = l + popupWidth;\n var b = t + popupHeight;\n var visibleL = Math.max(l, area.left);\n var visibleT = Math.max(t, area.top);\n var visibleR = Math.min(r, area.right);\n var visibleB = Math.min(b, area.bottom);\n return Math.max(0, (visibleR - visibleL) * (visibleB - visibleT));\n };\n var syncNextPopupPosition = function syncNextPopupPosition() {\n nextPopupY = popupRect.y + nextOffsetY;\n nextPopupBottom = nextPopupY + popupHeight;\n nextPopupX = popupRect.x + nextOffsetX;\n nextPopupRight = nextPopupX + popupWidth;\n };\n var popupElement = popupEle;\n var originLeft = popupElement.style.left;\n var originTop = popupElement.style.top;\n var originRight = popupElement.style.right;\n var originBottom = popupElement.style.bottom;\n var doc = popupElement.ownerDocument;\n var win = getWin(popupElement);\n\n // Placement\n var placementInfo = _objectSpread(_objectSpread({}, builtinPlacements[placement]), popupAlign);\n\n // Reset first\n popupElement.style.left = '0';\n popupElement.style.top = '0';\n popupElement.style.right = 'auto';\n popupElement.style.bottom = 'auto';\n\n // Calculate align style, we should consider `transform` case\n var targetRect;\n if (Array.isArray(target)) {\n targetRect = {\n x: target[0],\n y: target[1],\n width: 0,\n height: 0\n };\n } else {\n var rect = target.getBoundingClientRect();\n targetRect = {\n x: rect.x,\n y: rect.y,\n width: rect.width,\n height: rect.height\n };\n }\n var popupRect = popupElement.getBoundingClientRect();\n var _win$getComputedStyle = win.getComputedStyle(popupElement),\n width = _win$getComputedStyle.width,\n height = _win$getComputedStyle.height;\n var _doc$documentElement = doc.documentElement,\n clientWidth = _doc$documentElement.clientWidth,\n clientHeight = _doc$documentElement.clientHeight,\n scrollWidth = _doc$documentElement.scrollWidth,\n scrollHeight = _doc$documentElement.scrollHeight,\n scrollTop = _doc$documentElement.scrollTop,\n scrollLeft = _doc$documentElement.scrollLeft;\n var popupHeight = popupRect.height;\n var popupWidth = popupRect.width;\n var targetHeight = targetRect.height;\n var targetWidth = targetRect.width;\n\n // Get bounding of visible area\n var visibleRegion = {\n left: 0,\n top: 0,\n right: clientWidth,\n bottom: clientHeight\n };\n var scrollRegion = {\n left: -scrollLeft,\n top: -scrollTop,\n right: scrollWidth - scrollLeft,\n bottom: scrollHeight - scrollTop\n };\n var htmlRegion = placementInfo.htmlRegion;\n var VISIBLE = 'visible';\n var VISIBLE_FIRST = 'visibleFirst';\n if (htmlRegion !== 'scroll' && htmlRegion !== VISIBLE_FIRST) {\n htmlRegion = VISIBLE;\n }\n var isVisibleFirst = htmlRegion === VISIBLE_FIRST;\n var scrollRegionArea = getVisibleArea(scrollRegion, scrollerList);\n var visibleRegionArea = getVisibleArea(visibleRegion, scrollerList);\n var visibleArea = htmlRegion === VISIBLE ? visibleRegionArea : scrollRegionArea;\n\n // When set to `visibleFirst`,\n // the check `adjust` logic will use `visibleRegion` for check first.\n var adjustCheckVisibleArea = isVisibleFirst ? visibleRegionArea : visibleArea;\n\n // Record right & bottom align data\n popupElement.style.left = 'auto';\n popupElement.style.top = 'auto';\n popupElement.style.right = '0';\n popupElement.style.bottom = '0';\n var popupMirrorRect = popupElement.getBoundingClientRect();\n\n // Reset back\n popupElement.style.left = originLeft;\n popupElement.style.top = originTop;\n popupElement.style.right = originRight;\n popupElement.style.bottom = originBottom;\n\n // Calculate scale\n var _scaleX = toNum(Math.round(popupWidth / parseFloat(width) * 1000) / 1000);\n var _scaleY = toNum(Math.round(popupHeight / parseFloat(height) * 1000) / 1000);\n\n // No need to align since it's not visible in view\n if (_scaleX === 0 || _scaleY === 0 || isDOM(target) && !isVisible(target)) {\n return;\n }\n\n // Offset\n var offset = placementInfo.offset,\n targetOffset = placementInfo.targetOffset;\n var _getNumberOffset = getNumberOffset(popupRect, offset),\n _getNumberOffset2 = _slicedToArray(_getNumberOffset, 2),\n popupOffsetX = _getNumberOffset2[0],\n popupOffsetY = _getNumberOffset2[1];\n var _getNumberOffset3 = getNumberOffset(targetRect, targetOffset),\n _getNumberOffset4 = _slicedToArray(_getNumberOffset3, 2),\n targetOffsetX = _getNumberOffset4[0],\n targetOffsetY = _getNumberOffset4[1];\n targetRect.x -= targetOffsetX;\n targetRect.y -= targetOffsetY;\n\n // Points\n var _ref3 = placementInfo.points || [],\n _ref4 = _slicedToArray(_ref3, 2),\n popupPoint = _ref4[0],\n targetPoint = _ref4[1];\n var targetPoints = splitPoints(targetPoint);\n var popupPoints = splitPoints(popupPoint);\n var targetAlignPoint = getAlignPoint(targetRect, targetPoints);\n var popupAlignPoint = getAlignPoint(popupRect, popupPoints);\n\n // Real align info may not same as origin one\n var nextAlignInfo = _objectSpread({}, placementInfo);\n\n // Next Offset\n var nextOffsetX = targetAlignPoint.x - popupAlignPoint.x + popupOffsetX;\n var nextOffsetY = targetAlignPoint.y - popupAlignPoint.y + popupOffsetY;\n var originIntersectionVisibleArea = getIntersectionVisibleArea(nextOffsetX, nextOffsetY);\n\n // As `visibleFirst`, we prepare this for check\n var originIntersectionRecommendArea = getIntersectionVisibleArea(nextOffsetX, nextOffsetY, visibleRegionArea);\n\n // ========================== Overflow ===========================\n var targetAlignPointTL = getAlignPoint(targetRect, ['t', 'l']);\n var popupAlignPointTL = getAlignPoint(popupRect, ['t', 'l']);\n var targetAlignPointBR = getAlignPoint(targetRect, ['b', 'r']);\n var popupAlignPointBR = getAlignPoint(popupRect, ['b', 'r']);\n var overflow = placementInfo.overflow || {};\n var adjustX = overflow.adjustX,\n adjustY = overflow.adjustY,\n shiftX = overflow.shiftX,\n shiftY = overflow.shiftY;\n var supportAdjust = function supportAdjust(val) {\n if (typeof val === 'boolean') {\n return val;\n }\n return val >= 0;\n };\n\n // Prepare position\n var nextPopupY;\n var nextPopupBottom;\n var nextPopupX;\n var nextPopupRight;\n syncNextPopupPosition();\n\n // >>>>>>>>>> Top & Bottom\n var needAdjustY = supportAdjust(adjustY);\n var sameTB = popupPoints[0] === targetPoints[0];\n\n // Bottom to Top\n if (needAdjustY && popupPoints[0] === 't' && (nextPopupBottom > adjustCheckVisibleArea.bottom || prevFlipRef.current.bt)) {\n var tmpNextOffsetY = nextOffsetY;\n if (sameTB) {\n tmpNextOffsetY -= popupHeight - targetHeight;\n } else {\n tmpNextOffsetY = targetAlignPointTL.y - popupAlignPointBR.y - popupOffsetY;\n }\n var newVisibleArea = getIntersectionVisibleArea(nextOffsetX, tmpNextOffsetY);\n var newVisibleRecommendArea = getIntersectionVisibleArea(nextOffsetX, tmpNextOffsetY, visibleRegionArea);\n if (\n // Of course use larger one\n newVisibleArea > originIntersectionVisibleArea || newVisibleArea === originIntersectionVisibleArea && (!isVisibleFirst ||\n // Choose recommend one\n newVisibleRecommendArea >= originIntersectionRecommendArea)) {\n prevFlipRef.current.bt = true;\n nextOffsetY = tmpNextOffsetY;\n popupOffsetY = -popupOffsetY;\n nextAlignInfo.points = [reversePoints(popupPoints, 0), reversePoints(targetPoints, 0)];\n } else {\n prevFlipRef.current.bt = false;\n }\n }\n\n // Top to Bottom\n if (needAdjustY && popupPoints[0] === 'b' && (nextPopupY < adjustCheckVisibleArea.top || prevFlipRef.current.tb)) {\n var _tmpNextOffsetY = nextOffsetY;\n if (sameTB) {\n _tmpNextOffsetY += popupHeight - targetHeight;\n } else {\n _tmpNextOffsetY = targetAlignPointBR.y - popupAlignPointTL.y - popupOffsetY;\n }\n var _newVisibleArea = getIntersectionVisibleArea(nextOffsetX, _tmpNextOffsetY);\n var _newVisibleRecommendArea = getIntersectionVisibleArea(nextOffsetX, _tmpNextOffsetY, visibleRegionArea);\n if (\n // Of course use larger one\n _newVisibleArea > originIntersectionVisibleArea || _newVisibleArea === originIntersectionVisibleArea && (!isVisibleFirst ||\n // Choose recommend one\n _newVisibleRecommendArea >= originIntersectionRecommendArea)) {\n prevFlipRef.current.tb = true;\n nextOffsetY = _tmpNextOffsetY;\n popupOffsetY = -popupOffsetY;\n nextAlignInfo.points = [reversePoints(popupPoints, 0), reversePoints(targetPoints, 0)];\n } else {\n prevFlipRef.current.tb = false;\n }\n }\n\n // >>>>>>>>>> Left & Right\n var needAdjustX = supportAdjust(adjustX);\n\n // >>>>> Flip\n var sameLR = popupPoints[1] === targetPoints[1];\n\n // Right to Left\n if (needAdjustX && popupPoints[1] === 'l' && (nextPopupRight > adjustCheckVisibleArea.right || prevFlipRef.current.rl)) {\n var tmpNextOffsetX = nextOffsetX;\n if (sameLR) {\n tmpNextOffsetX -= popupWidth - targetWidth;\n } else {\n tmpNextOffsetX = targetAlignPointTL.x - popupAlignPointBR.x - popupOffsetX;\n }\n var _newVisibleArea2 = getIntersectionVisibleArea(tmpNextOffsetX, nextOffsetY);\n var _newVisibleRecommendArea2 = getIntersectionVisibleArea(tmpNextOffsetX, nextOffsetY, visibleRegionArea);\n if (\n // Of course use larger one\n _newVisibleArea2 > originIntersectionVisibleArea || _newVisibleArea2 === originIntersectionVisibleArea && (!isVisibleFirst ||\n // Choose recommend one\n _newVisibleRecommendArea2 >= originIntersectionRecommendArea)) {\n prevFlipRef.current.rl = true;\n nextOffsetX = tmpNextOffsetX;\n popupOffsetX = -popupOffsetX;\n nextAlignInfo.points = [reversePoints(popupPoints, 1), reversePoints(targetPoints, 1)];\n } else {\n prevFlipRef.current.rl = false;\n }\n }\n\n // Left to Right\n if (needAdjustX && popupPoints[1] === 'r' && (nextPopupX < adjustCheckVisibleArea.left || prevFlipRef.current.lr)) {\n var _tmpNextOffsetX = nextOffsetX;\n if (sameLR) {\n _tmpNextOffsetX += popupWidth - targetWidth;\n } else {\n _tmpNextOffsetX = targetAlignPointBR.x - popupAlignPointTL.x - popupOffsetX;\n }\n var _newVisibleArea3 = getIntersectionVisibleArea(_tmpNextOffsetX, nextOffsetY);\n var _newVisibleRecommendArea3 = getIntersectionVisibleArea(_tmpNextOffsetX, nextOffsetY, visibleRegionArea);\n if (\n // Of course use larger one\n _newVisibleArea3 > originIntersectionVisibleArea || _newVisibleArea3 === originIntersectionVisibleArea && (!isVisibleFirst ||\n // Choose recommend one\n _newVisibleRecommendArea3 >= originIntersectionRecommendArea)) {\n prevFlipRef.current.lr = true;\n nextOffsetX = _tmpNextOffsetX;\n popupOffsetX = -popupOffsetX;\n nextAlignInfo.points = [reversePoints(popupPoints, 1), reversePoints(targetPoints, 1)];\n } else {\n prevFlipRef.current.lr = false;\n }\n }\n\n // ============================ Shift ============================\n syncNextPopupPosition();\n var numShiftX = shiftX === true ? 0 : shiftX;\n if (typeof numShiftX === 'number') {\n // Left\n if (nextPopupX < visibleRegionArea.left) {\n nextOffsetX -= nextPopupX - visibleRegionArea.left - popupOffsetX;\n if (targetRect.x + targetWidth < visibleRegionArea.left + numShiftX) {\n nextOffsetX += targetRect.x - visibleRegionArea.left + targetWidth - numShiftX;\n }\n }\n\n // Right\n if (nextPopupRight > visibleRegionArea.right) {\n nextOffsetX -= nextPopupRight - visibleRegionArea.right - popupOffsetX;\n if (targetRect.x > visibleRegionArea.right - numShiftX) {\n nextOffsetX += targetRect.x - visibleRegionArea.right + numShiftX;\n }\n }\n }\n var numShiftY = shiftY === true ? 0 : shiftY;\n if (typeof numShiftY === 'number') {\n // Top\n if (nextPopupY < visibleRegionArea.top) {\n nextOffsetY -= nextPopupY - visibleRegionArea.top - popupOffsetY;\n\n // When target if far away from visible area\n // Stop shift\n if (targetRect.y + targetHeight < visibleRegionArea.top + numShiftY) {\n nextOffsetY += targetRect.y - visibleRegionArea.top + targetHeight - numShiftY;\n }\n }\n\n // Bottom\n if (nextPopupBottom > visibleRegionArea.bottom) {\n nextOffsetY -= nextPopupBottom - visibleRegionArea.bottom - popupOffsetY;\n if (targetRect.y > visibleRegionArea.bottom - numShiftY) {\n nextOffsetY += targetRect.y - visibleRegionArea.bottom + numShiftY;\n }\n }\n }\n\n // ============================ Arrow ============================\n // Arrow center align\n var popupLeft = popupRect.x + nextOffsetX;\n var popupRight = popupLeft + popupWidth;\n var popupTop = popupRect.y + nextOffsetY;\n var popupBottom = popupTop + popupHeight;\n var targetLeft = targetRect.x;\n var targetRight = targetLeft + targetWidth;\n var targetTop = targetRect.y;\n var targetBottom = targetTop + targetHeight;\n var maxLeft = Math.max(popupLeft, targetLeft);\n var minRight = Math.min(popupRight, targetRight);\n var xCenter = (maxLeft + minRight) / 2;\n var nextArrowX = xCenter - popupLeft;\n var maxTop = Math.max(popupTop, targetTop);\n var minBottom = Math.min(popupBottom, targetBottom);\n var yCenter = (maxTop + minBottom) / 2;\n var nextArrowY = yCenter - popupTop;\n onPopupAlign === null || onPopupAlign === void 0 ? void 0 : onPopupAlign(popupEle, nextAlignInfo);\n\n // Additional calculate right & bottom position\n var offsetX4Right = popupMirrorRect.right - popupRect.x - (nextOffsetX + popupRect.width);\n var offsetY4Bottom = popupMirrorRect.bottom - popupRect.y - (nextOffsetY + popupRect.height);\n setOffsetInfo({\n ready: true,\n offsetX: nextOffsetX / _scaleX,\n offsetY: nextOffsetY / _scaleY,\n offsetR: offsetX4Right / _scaleX,\n offsetB: offsetY4Bottom / _scaleY,\n arrowX: nextArrowX / _scaleX,\n arrowY: nextArrowY / _scaleY,\n scaleX: _scaleX,\n scaleY: _scaleY,\n align: nextAlignInfo\n });\n }\n });\n var triggerAlign = function triggerAlign() {\n alignCountRef.current += 1;\n var id = alignCountRef.current;\n\n // Merge all align requirement into one frame\n Promise.resolve().then(function () {\n if (alignCountRef.current === id) {\n onAlign();\n }\n });\n };\n\n // Reset ready status when placement & open changed\n var resetReady = function resetReady() {\n setOffsetInfo(function (ori) {\n return _objectSpread(_objectSpread({}, ori), {}, {\n ready: false\n });\n });\n };\n useLayoutEffect(resetReady, [placement]);\n useLayoutEffect(function () {\n if (!open) {\n resetReady();\n }\n }, [open]);\n return [offsetInfo.ready, offsetInfo.offsetX, offsetInfo.offsetY, offsetInfo.offsetR, offsetInfo.offsetB, offsetInfo.arrowX, offsetInfo.arrowY, offsetInfo.scaleX, offsetInfo.scaleY, offsetInfo.align, triggerAlign];\n}","import classNames from 'classnames';\nimport * as React from 'react';\nexport default function Arrow(props) {\n var prefixCls = props.prefixCls,\n align = props.align,\n arrow = props.arrow,\n arrowPos = props.arrowPos;\n var _ref = arrow || {},\n className = _ref.className,\n content = _ref.content;\n var _arrowPos$x = arrowPos.x,\n x = _arrowPos$x === void 0 ? 0 : _arrowPos$x,\n _arrowPos$y = arrowPos.y,\n y = _arrowPos$y === void 0 ? 0 : _arrowPos$y;\n var arrowRef = React.useRef();\n\n // Skip if no align\n if (!align || !align.points) {\n return null;\n }\n var alignStyle = {\n position: 'absolute'\n };\n\n // Skip if no need to align\n if (align.autoArrow !== false) {\n var popupPoints = align.points[0];\n var targetPoints = align.points[1];\n var popupTB = popupPoints[0];\n var popupLR = popupPoints[1];\n var targetTB = targetPoints[0];\n var targetLR = targetPoints[1];\n\n // Top & Bottom\n if (popupTB === targetTB || !['t', 'b'].includes(popupTB)) {\n alignStyle.top = y;\n } else if (popupTB === 't') {\n alignStyle.top = 0;\n } else {\n alignStyle.bottom = 0;\n }\n\n // Left & Right\n if (popupLR === targetLR || !['l', 'r'].includes(popupLR)) {\n alignStyle.left = x;\n } else if (popupLR === 'l') {\n alignStyle.left = 0;\n } else {\n alignStyle.right = 0;\n }\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: arrowRef,\n className: classNames(\"\".concat(prefixCls, \"-arrow\"), className),\n style: alignStyle\n }, content);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport * as React from 'react';\nexport default function Mask(props) {\n var prefixCls = props.prefixCls,\n open = props.open,\n zIndex = props.zIndex,\n mask = props.mask,\n motion = props.motion;\n if (!mask) {\n return null;\n }\n return /*#__PURE__*/React.createElement(CSSMotion, _extends({}, motion, {\n motionAppear: true,\n visible: open,\n removeOnLeave: true\n }), function (_ref) {\n var className = _ref.className;\n return /*#__PURE__*/React.createElement(\"div\", {\n style: {\n zIndex: zIndex\n },\n className: classNames(\"\".concat(prefixCls, \"-mask\"), className)\n });\n });\n}","import * as React from 'react';\nvar PopupContent = /*#__PURE__*/React.memo(function (_ref) {\n var children = _ref.children;\n return children;\n}, function (_, next) {\n return next.cache;\n});\nif (process.env.NODE_ENV !== 'production') {\n PopupContent.displayName = 'PopupContent';\n}\nexport default PopupContent;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport ResizeObserver from 'rc-resize-observer';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport { composeRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nimport Arrow from \"./Arrow\";\nimport Mask from \"./Mask\";\nimport PopupContent from \"./PopupContent\";\nvar Popup = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var popup = props.popup,\n className = props.className,\n prefixCls = props.prefixCls,\n style = props.style,\n target = props.target,\n _onVisibleChanged = props.onVisibleChanged,\n open = props.open,\n keepDom = props.keepDom,\n onClick = props.onClick,\n mask = props.mask,\n arrow = props.arrow,\n arrowPos = props.arrowPos,\n align = props.align,\n motion = props.motion,\n maskMotion = props.maskMotion,\n forceRender = props.forceRender,\n getPopupContainer = props.getPopupContainer,\n autoDestroy = props.autoDestroy,\n Portal = props.portal,\n zIndex = props.zIndex,\n onMouseEnter = props.onMouseEnter,\n onMouseLeave = props.onMouseLeave,\n onPointerEnter = props.onPointerEnter,\n ready = props.ready,\n offsetX = props.offsetX,\n offsetY = props.offsetY,\n offsetR = props.offsetR,\n offsetB = props.offsetB,\n onAlign = props.onAlign,\n onPrepare = props.onPrepare,\n stretch = props.stretch,\n targetWidth = props.targetWidth,\n targetHeight = props.targetHeight;\n var childNode = typeof popup === 'function' ? popup() : popup;\n\n // We can not remove holder only when motion finished.\n var isNodeVisible = open || keepDom;\n\n // ======================= Container ========================\n var getPopupContainerNeedParams = (getPopupContainer === null || getPopupContainer === void 0 ? void 0 : getPopupContainer.length) > 0;\n var _React$useState = React.useState(!getPopupContainer || !getPopupContainerNeedParams),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n show = _React$useState2[0],\n setShow = _React$useState2[1];\n\n // Delay to show since `getPopupContainer` need target element\n useLayoutEffect(function () {\n if (!show && getPopupContainerNeedParams && target) {\n setShow(true);\n }\n }, [show, getPopupContainerNeedParams, target]);\n\n // ========================= Render =========================\n if (!show) {\n return null;\n }\n\n // >>>>> Offset\n var AUTO = 'auto';\n var offsetStyle = {\n left: '-1000vw',\n top: '-1000vh',\n right: AUTO,\n bottom: AUTO\n };\n\n // Set align style\n if (ready || !open) {\n var points = align.points,\n _experimental = align._experimental;\n var dynamicInset = _experimental === null || _experimental === void 0 ? void 0 : _experimental.dynamicInset;\n var alignRight = dynamicInset && points[0][1] === 'r';\n var alignBottom = dynamicInset && points[0][0] === 'b';\n if (alignRight) {\n offsetStyle.right = offsetR;\n offsetStyle.left = AUTO;\n } else {\n offsetStyle.left = offsetX;\n offsetStyle.right = AUTO;\n }\n if (alignBottom) {\n offsetStyle.bottom = offsetB;\n offsetStyle.top = AUTO;\n } else {\n offsetStyle.top = offsetY;\n offsetStyle.bottom = AUTO;\n }\n }\n\n // >>>>> Misc\n var miscStyle = {};\n if (stretch) {\n if (stretch.includes('height') && targetHeight) {\n miscStyle.height = targetHeight;\n } else if (stretch.includes('minHeight') && targetHeight) {\n miscStyle.minHeight = targetHeight;\n }\n if (stretch.includes('width') && targetWidth) {\n miscStyle.width = targetWidth;\n } else if (stretch.includes('minWidth') && targetWidth) {\n miscStyle.minWidth = targetWidth;\n }\n }\n if (!open) {\n miscStyle.pointerEvents = 'none';\n }\n return /*#__PURE__*/React.createElement(Portal, {\n open: forceRender || isNodeVisible,\n getContainer: getPopupContainer && function () {\n return getPopupContainer(target);\n },\n autoDestroy: autoDestroy\n }, /*#__PURE__*/React.createElement(Mask, {\n prefixCls: prefixCls,\n open: open,\n zIndex: zIndex,\n mask: mask,\n motion: maskMotion\n }), /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: onAlign,\n disabled: !open\n }, function (resizeObserverRef) {\n return /*#__PURE__*/React.createElement(CSSMotion, _extends({\n motionAppear: true,\n motionEnter: true,\n motionLeave: true,\n removeOnLeave: false,\n forceRender: forceRender,\n leavedClassName: \"\".concat(prefixCls, \"-hidden\")\n }, motion, {\n onAppearPrepare: onPrepare,\n onEnterPrepare: onPrepare,\n visible: open,\n onVisibleChanged: function onVisibleChanged(nextVisible) {\n var _motion$onVisibleChan;\n motion === null || motion === void 0 ? void 0 : (_motion$onVisibleChan = motion.onVisibleChanged) === null || _motion$onVisibleChan === void 0 ? void 0 : _motion$onVisibleChan.call(motion, nextVisible);\n _onVisibleChanged(nextVisible);\n }\n }), function (_ref, motionRef) {\n var motionClassName = _ref.className,\n motionStyle = _ref.style;\n var cls = classNames(prefixCls, motionClassName, className);\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: composeRef(resizeObserverRef, ref, motionRef),\n className: cls,\n style: _objectSpread(_objectSpread(_objectSpread(_objectSpread({\n '--arrow-x': \"\".concat(arrowPos.x || 0, \"px\"),\n '--arrow-y': \"\".concat(arrowPos.y || 0, \"px\")\n }, offsetStyle), miscStyle), motionStyle), {}, {\n boxSizing: 'border-box',\n zIndex: zIndex\n }, style),\n onMouseEnter: onMouseEnter,\n onMouseLeave: onMouseLeave,\n onPointerEnter: onPointerEnter,\n onClick: onClick\n }, arrow && /*#__PURE__*/React.createElement(Arrow, {\n prefixCls: prefixCls,\n arrow: arrow,\n arrowPos: arrowPos,\n align: align\n }), /*#__PURE__*/React.createElement(PopupContent, {\n cache: !open\n }, childNode));\n });\n }));\n});\nif (process.env.NODE_ENV !== 'production') {\n Popup.displayName = 'Popup';\n}\nexport default Popup;","import { fillRef, supportRef, useComposeRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nvar TriggerWrapper = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var children = props.children,\n getTriggerDOMNode = props.getTriggerDOMNode;\n var canUseRef = supportRef(children);\n\n // When use `getTriggerDOMNode`, we should do additional work to get the real dom\n var setRef = React.useCallback(function (node) {\n fillRef(ref, getTriggerDOMNode ? getTriggerDOMNode(node) : node);\n }, [getTriggerDOMNode]);\n var mergedRef = useComposeRef(setRef, children.ref);\n return canUseRef ? /*#__PURE__*/React.cloneElement(children, {\n ref: mergedRef\n }) : children;\n});\nif (process.env.NODE_ENV !== 'production') {\n TriggerWrapper.displayName = 'TriggerWrapper';\n}\nexport default TriggerWrapper;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"children\", \"action\", \"showAction\", \"hideAction\", \"popupVisible\", \"defaultPopupVisible\", \"onPopupVisibleChange\", \"afterPopupVisibleChange\", \"mouseEnterDelay\", \"mouseLeaveDelay\", \"focusDelay\", \"blurDelay\", \"mask\", \"maskClosable\", \"getPopupContainer\", \"forceRender\", \"autoDestroy\", \"destroyPopupOnHide\", \"popup\", \"popupClassName\", \"popupStyle\", \"popupPlacement\", \"builtinPlacements\", \"popupAlign\", \"zIndex\", \"stretch\", \"getPopupClassNameFromAlign\", \"alignPoint\", \"onPopupClick\", \"onPopupAlign\", \"arrow\", \"popupMotion\", \"maskMotion\", \"popupTransitionName\", \"popupAnimation\", \"maskTransitionName\", \"maskAnimation\", \"className\", \"getTriggerDOMNode\"];\nimport Portal from '@rc-component/portal';\nimport classNames from 'classnames';\nimport ResizeObserver from 'rc-resize-observer';\nimport { isDOM } from \"rc-util/es/Dom/findDOMNode\";\nimport { getShadowRoot } from \"rc-util/es/Dom/shadow\";\nimport useEvent from \"rc-util/es/hooks/useEvent\";\nimport useId from \"rc-util/es/hooks/useId\";\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport isMobile from \"rc-util/es/isMobile\";\nimport * as React from 'react';\nimport { flushSync } from 'react-dom';\nimport TriggerContext from \"./context\";\nimport useAction from \"./hooks/useAction\";\nimport useAlign from \"./hooks/useAlign\";\nimport useWatch from \"./hooks/useWatch\";\nimport useWinClick from \"./hooks/useWinClick\";\nimport Popup from \"./Popup\";\nimport TriggerWrapper from \"./TriggerWrapper\";\nimport { getAlignPopupClassName, getMotion } from \"./util\";\n\n// Removed Props List\n// Seems this can be auto\n// getDocument?: (element?: HTMLElement) => Document;\n// New version will not wrap popup with `rc-trigger-popup-content` when multiple children\nexport function generateTrigger() {\n var PortalComponent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Portal;\n var Trigger = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-trigger-popup' : _props$prefixCls,\n children = props.children,\n _props$action = props.action,\n action = _props$action === void 0 ? 'hover' : _props$action,\n showAction = props.showAction,\n hideAction = props.hideAction,\n popupVisible = props.popupVisible,\n defaultPopupVisible = props.defaultPopupVisible,\n onPopupVisibleChange = props.onPopupVisibleChange,\n afterPopupVisibleChange = props.afterPopupVisibleChange,\n mouseEnterDelay = props.mouseEnterDelay,\n _props$mouseLeaveDela = props.mouseLeaveDelay,\n mouseLeaveDelay = _props$mouseLeaveDela === void 0 ? 0.1 : _props$mouseLeaveDela,\n focusDelay = props.focusDelay,\n blurDelay = props.blurDelay,\n mask = props.mask,\n _props$maskClosable = props.maskClosable,\n maskClosable = _props$maskClosable === void 0 ? true : _props$maskClosable,\n getPopupContainer = props.getPopupContainer,\n forceRender = props.forceRender,\n autoDestroy = props.autoDestroy,\n destroyPopupOnHide = props.destroyPopupOnHide,\n popup = props.popup,\n popupClassName = props.popupClassName,\n popupStyle = props.popupStyle,\n popupPlacement = props.popupPlacement,\n _props$builtinPlaceme = props.builtinPlacements,\n builtinPlacements = _props$builtinPlaceme === void 0 ? {} : _props$builtinPlaceme,\n popupAlign = props.popupAlign,\n zIndex = props.zIndex,\n stretch = props.stretch,\n getPopupClassNameFromAlign = props.getPopupClassNameFromAlign,\n alignPoint = props.alignPoint,\n onPopupClick = props.onPopupClick,\n onPopupAlign = props.onPopupAlign,\n arrow = props.arrow,\n popupMotion = props.popupMotion,\n maskMotion = props.maskMotion,\n popupTransitionName = props.popupTransitionName,\n popupAnimation = props.popupAnimation,\n maskTransitionName = props.maskTransitionName,\n maskAnimation = props.maskAnimation,\n className = props.className,\n getTriggerDOMNode = props.getTriggerDOMNode,\n restProps = _objectWithoutProperties(props, _excluded);\n var mergedAutoDestroy = autoDestroy || destroyPopupOnHide || false;\n\n // =========================== Mobile ===========================\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n mobile = _React$useState2[0],\n setMobile = _React$useState2[1];\n useLayoutEffect(function () {\n setMobile(isMobile());\n }, []);\n\n // ========================== Context ===========================\n var subPopupElements = React.useRef({});\n var parentContext = React.useContext(TriggerContext);\n var context = React.useMemo(function () {\n return {\n registerSubPopup: function registerSubPopup(id, subPopupEle) {\n subPopupElements.current[id] = subPopupEle;\n parentContext === null || parentContext === void 0 ? void 0 : parentContext.registerSubPopup(id, subPopupEle);\n }\n };\n }, [parentContext]);\n\n // =========================== Popup ============================\n var id = useId();\n var _React$useState3 = React.useState(null),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n popupEle = _React$useState4[0],\n setPopupEle = _React$useState4[1];\n var setPopupRef = useEvent(function (node) {\n if (isDOM(node) && popupEle !== node) {\n setPopupEle(node);\n }\n parentContext === null || parentContext === void 0 ? void 0 : parentContext.registerSubPopup(id, node);\n });\n\n // =========================== Target ===========================\n // Use state to control here since `useRef` update not trigger render\n var _React$useState5 = React.useState(null),\n _React$useState6 = _slicedToArray(_React$useState5, 2),\n targetEle = _React$useState6[0],\n setTargetEle = _React$useState6[1];\n var setTargetRef = useEvent(function (node) {\n if (isDOM(node) && targetEle !== node) {\n setTargetEle(node);\n }\n });\n\n // ========================== Children ==========================\n var child = React.Children.only(children);\n var originChildProps = (child === null || child === void 0 ? void 0 : child.props) || {};\n var cloneProps = {};\n var inPopupOrChild = useEvent(function (ele) {\n var _getShadowRoot, _getShadowRoot2;\n var childDOM = targetEle;\n return (childDOM === null || childDOM === void 0 ? void 0 : childDOM.contains(ele)) || ((_getShadowRoot = getShadowRoot(childDOM)) === null || _getShadowRoot === void 0 ? void 0 : _getShadowRoot.host) === ele || ele === childDOM || (popupEle === null || popupEle === void 0 ? void 0 : popupEle.contains(ele)) || ((_getShadowRoot2 = getShadowRoot(popupEle)) === null || _getShadowRoot2 === void 0 ? void 0 : _getShadowRoot2.host) === ele || ele === popupEle || Object.values(subPopupElements.current).some(function (subPopupEle) {\n return (subPopupEle === null || subPopupEle === void 0 ? void 0 : subPopupEle.contains(ele)) || ele === subPopupEle;\n });\n });\n\n // =========================== Motion ===========================\n var mergePopupMotion = getMotion(prefixCls, popupMotion, popupAnimation, popupTransitionName);\n var mergeMaskMotion = getMotion(prefixCls, maskMotion, maskAnimation, maskTransitionName);\n\n // ============================ Open ============================\n var _React$useState7 = React.useState(defaultPopupVisible || false),\n _React$useState8 = _slicedToArray(_React$useState7, 2),\n internalOpen = _React$useState8[0],\n setInternalOpen = _React$useState8[1];\n\n // Render still use props as first priority\n var mergedOpen = popupVisible !== null && popupVisible !== void 0 ? popupVisible : internalOpen;\n\n // We use effect sync here in case `popupVisible` back to `undefined`\n var setMergedOpen = useEvent(function (nextOpen) {\n if (popupVisible === undefined) {\n setInternalOpen(nextOpen);\n }\n });\n useLayoutEffect(function () {\n setInternalOpen(popupVisible || false);\n }, [popupVisible]);\n var openRef = React.useRef(mergedOpen);\n openRef.current = mergedOpen;\n var internalTriggerOpen = useEvent(function (nextOpen) {\n // Enter or Pointer will both trigger open state change\n // We only need take one to avoid duplicated change event trigger\n flushSync(function () {\n if (mergedOpen !== nextOpen) {\n setMergedOpen(nextOpen);\n onPopupVisibleChange === null || onPopupVisibleChange === void 0 ? void 0 : onPopupVisibleChange(nextOpen);\n }\n });\n });\n\n // Trigger for delay\n var delayRef = React.useRef();\n var clearDelay = function clearDelay() {\n clearTimeout(delayRef.current);\n };\n var triggerOpen = function triggerOpen(nextOpen) {\n var delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n clearDelay();\n if (delay === 0) {\n internalTriggerOpen(nextOpen);\n } else {\n delayRef.current = setTimeout(function () {\n internalTriggerOpen(nextOpen);\n }, delay * 1000);\n }\n };\n React.useEffect(function () {\n return clearDelay;\n }, []);\n\n // ========================== Motion ============================\n var _React$useState9 = React.useState(false),\n _React$useState10 = _slicedToArray(_React$useState9, 2),\n inMotion = _React$useState10[0],\n setInMotion = _React$useState10[1];\n useLayoutEffect(function (firstMount) {\n if (!firstMount || mergedOpen) {\n setInMotion(true);\n }\n }, [mergedOpen]);\n var _React$useState11 = React.useState(null),\n _React$useState12 = _slicedToArray(_React$useState11, 2),\n motionPrepareResolve = _React$useState12[0],\n setMotionPrepareResolve = _React$useState12[1];\n\n // =========================== Align ============================\n var _React$useState13 = React.useState([0, 0]),\n _React$useState14 = _slicedToArray(_React$useState13, 2),\n mousePos = _React$useState14[0],\n setMousePos = _React$useState14[1];\n var setMousePosByEvent = function setMousePosByEvent(event) {\n setMousePos([event.clientX, event.clientY]);\n };\n var _useAlign = useAlign(mergedOpen, popupEle, alignPoint ? mousePos : targetEle, popupPlacement, builtinPlacements, popupAlign, onPopupAlign),\n _useAlign2 = _slicedToArray(_useAlign, 11),\n ready = _useAlign2[0],\n offsetX = _useAlign2[1],\n offsetY = _useAlign2[2],\n offsetR = _useAlign2[3],\n offsetB = _useAlign2[4],\n arrowX = _useAlign2[5],\n arrowY = _useAlign2[6],\n scaleX = _useAlign2[7],\n scaleY = _useAlign2[8],\n alignInfo = _useAlign2[9],\n onAlign = _useAlign2[10];\n var _useAction = useAction(mobile, action, showAction, hideAction),\n _useAction2 = _slicedToArray(_useAction, 2),\n showActions = _useAction2[0],\n hideActions = _useAction2[1];\n var clickToShow = showActions.has('click');\n var clickToHide = hideActions.has('click') || hideActions.has('contextMenu');\n var triggerAlign = useEvent(function () {\n if (!inMotion) {\n onAlign();\n }\n });\n var onScroll = function onScroll() {\n if (openRef.current && alignPoint && clickToHide) {\n triggerOpen(false);\n }\n };\n useWatch(mergedOpen, targetEle, popupEle, triggerAlign, onScroll);\n useLayoutEffect(function () {\n triggerAlign();\n }, [mousePos, popupPlacement]);\n\n // When no builtinPlacements and popupAlign changed\n useLayoutEffect(function () {\n if (mergedOpen && !(builtinPlacements !== null && builtinPlacements !== void 0 && builtinPlacements[popupPlacement])) {\n triggerAlign();\n }\n }, [JSON.stringify(popupAlign)]);\n var alignedClassName = React.useMemo(function () {\n var baseClassName = getAlignPopupClassName(builtinPlacements, prefixCls, alignInfo, alignPoint);\n return classNames(baseClassName, getPopupClassNameFromAlign === null || getPopupClassNameFromAlign === void 0 ? void 0 : getPopupClassNameFromAlign(alignInfo));\n }, [alignInfo, getPopupClassNameFromAlign, builtinPlacements, prefixCls, alignPoint]);\n React.useImperativeHandle(ref, function () {\n return {\n forceAlign: triggerAlign\n };\n });\n\n // ========================== Motion ============================\n var onVisibleChanged = function onVisibleChanged(visible) {\n setInMotion(false);\n onAlign();\n afterPopupVisibleChange === null || afterPopupVisibleChange === void 0 ? void 0 : afterPopupVisibleChange(visible);\n };\n\n // We will trigger align when motion is in prepare\n var onPrepare = function onPrepare() {\n return new Promise(function (resolve) {\n setMotionPrepareResolve(function () {\n return resolve;\n });\n });\n };\n useLayoutEffect(function () {\n if (motionPrepareResolve) {\n onAlign();\n motionPrepareResolve();\n setMotionPrepareResolve(null);\n }\n }, [motionPrepareResolve]);\n\n // ========================== Stretch ===========================\n var _React$useState15 = React.useState(0),\n _React$useState16 = _slicedToArray(_React$useState15, 2),\n targetWidth = _React$useState16[0],\n setTargetWidth = _React$useState16[1];\n var _React$useState17 = React.useState(0),\n _React$useState18 = _slicedToArray(_React$useState17, 2),\n targetHeight = _React$useState18[0],\n setTargetHeight = _React$useState18[1];\n var onTargetResize = function onTargetResize(_, ele) {\n triggerAlign();\n if (stretch) {\n var rect = ele.getBoundingClientRect();\n setTargetWidth(rect.width);\n setTargetHeight(rect.height);\n }\n };\n\n // =========================== Action ===========================\n /**\n * Util wrapper for trigger action\n */\n function wrapperAction(eventName, nextOpen, delay, preEvent) {\n cloneProps[eventName] = function (event) {\n var _originChildProps$eve;\n preEvent === null || preEvent === void 0 ? void 0 : preEvent(event);\n triggerOpen(nextOpen, delay);\n\n // Pass to origin\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n (_originChildProps$eve = originChildProps[eventName]) === null || _originChildProps$eve === void 0 ? void 0 : _originChildProps$eve.call.apply(_originChildProps$eve, [originChildProps, event].concat(args));\n };\n }\n\n // ======================= Action: Click ========================\n if (clickToShow || clickToHide) {\n cloneProps.onClick = function (event) {\n var _originChildProps$onC;\n if (openRef.current && clickToHide) {\n triggerOpen(false);\n } else if (!openRef.current && clickToShow) {\n setMousePosByEvent(event);\n triggerOpen(true);\n }\n\n // Pass to origin\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n (_originChildProps$onC = originChildProps.onClick) === null || _originChildProps$onC === void 0 ? void 0 : _originChildProps$onC.call.apply(_originChildProps$onC, [originChildProps, event].concat(args));\n };\n }\n\n // Click to hide is special action since click popup element should not hide\n useWinClick(mergedOpen, clickToHide, targetEle, popupEle, mask, maskClosable, inPopupOrChild, triggerOpen);\n\n // ======================= Action: Hover ========================\n var hoverToShow = showActions.has('hover');\n var hoverToHide = hideActions.has('hover');\n var onPopupMouseEnter;\n var onPopupMouseLeave;\n if (hoverToShow) {\n // Compatible with old browser which not support pointer event\n wrapperAction('onMouseEnter', true, mouseEnterDelay, function (event) {\n setMousePosByEvent(event);\n });\n wrapperAction('onPointerEnter', true, mouseEnterDelay, function (event) {\n setMousePosByEvent(event);\n });\n onPopupMouseEnter = function onPopupMouseEnter() {\n // Only trigger re-open when popup is visible\n if (mergedOpen || inMotion) {\n triggerOpen(true, mouseEnterDelay);\n }\n };\n\n // Align Point\n if (alignPoint) {\n cloneProps.onMouseMove = function (event) {\n var _originChildProps$onM;\n // setMousePosByEvent(event);\n (_originChildProps$onM = originChildProps.onMouseMove) === null || _originChildProps$onM === void 0 ? void 0 : _originChildProps$onM.call(originChildProps, event);\n };\n }\n }\n if (hoverToHide) {\n wrapperAction('onMouseLeave', false, mouseLeaveDelay);\n wrapperAction('onPointerLeave', false, mouseLeaveDelay);\n onPopupMouseLeave = function onPopupMouseLeave() {\n triggerOpen(false, mouseLeaveDelay);\n };\n }\n\n // ======================= Action: Focus ========================\n if (showActions.has('focus')) {\n wrapperAction('onFocus', true, focusDelay);\n }\n if (hideActions.has('focus')) {\n wrapperAction('onBlur', false, blurDelay);\n }\n\n // ==================== Action: ContextMenu =====================\n if (showActions.has('contextMenu')) {\n cloneProps.onContextMenu = function (event) {\n var _originChildProps$onC2;\n if (openRef.current && hideActions.has('contextMenu')) {\n triggerOpen(false);\n } else {\n setMousePosByEvent(event);\n triggerOpen(true);\n }\n event.preventDefault();\n\n // Pass to origin\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n (_originChildProps$onC2 = originChildProps.onContextMenu) === null || _originChildProps$onC2 === void 0 ? void 0 : _originChildProps$onC2.call.apply(_originChildProps$onC2, [originChildProps, event].concat(args));\n };\n }\n\n // ========================= ClassName ==========================\n if (className) {\n cloneProps.className = classNames(originChildProps.className, className);\n }\n\n // =========================== Render ===========================\n var mergedChildrenProps = _objectSpread(_objectSpread({}, originChildProps), cloneProps);\n\n // Pass props into cloneProps for nest usage\n var passedProps = {};\n var passedEventList = ['onContextMenu', 'onClick', 'onMouseDown', 'onTouchStart', 'onMouseEnter', 'onMouseLeave', 'onFocus', 'onBlur'];\n passedEventList.forEach(function (eventName) {\n if (restProps[eventName]) {\n passedProps[eventName] = function () {\n var _mergedChildrenProps$;\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n (_mergedChildrenProps$ = mergedChildrenProps[eventName]) === null || _mergedChildrenProps$ === void 0 ? void 0 : _mergedChildrenProps$.call.apply(_mergedChildrenProps$, [mergedChildrenProps].concat(args));\n restProps[eventName].apply(restProps, args);\n };\n }\n });\n\n // Child Node\n var triggerNode = /*#__PURE__*/React.cloneElement(child, _objectSpread(_objectSpread({}, mergedChildrenProps), passedProps));\n var arrowPos = {\n x: arrowX,\n y: arrowY\n };\n var innerArrow = arrow ? _objectSpread({}, arrow !== true ? arrow : {}) : null;\n\n // Render\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ResizeObserver, {\n disabled: !mergedOpen,\n ref: setTargetRef,\n onResize: onTargetResize\n }, /*#__PURE__*/React.createElement(TriggerWrapper, {\n getTriggerDOMNode: getTriggerDOMNode\n }, triggerNode)), /*#__PURE__*/React.createElement(TriggerContext.Provider, {\n value: context\n }, /*#__PURE__*/React.createElement(Popup, {\n portal: PortalComponent,\n ref: setPopupRef,\n prefixCls: prefixCls,\n popup: popup,\n className: classNames(popupClassName, alignedClassName),\n style: popupStyle,\n target: targetEle,\n onMouseEnter: onPopupMouseEnter,\n onMouseLeave: onPopupMouseLeave\n // https://github.com/ant-design/ant-design/issues/43924\n ,\n\n onPointerEnter: onPopupMouseEnter,\n zIndex: zIndex\n // Open\n ,\n\n open: mergedOpen,\n keepDom: inMotion\n // Click\n ,\n\n onClick: onPopupClick\n // Mask\n ,\n\n mask: mask\n // Motion\n ,\n\n motion: mergePopupMotion,\n maskMotion: mergeMaskMotion,\n onVisibleChanged: onVisibleChanged,\n onPrepare: onPrepare\n // Portal\n ,\n\n forceRender: forceRender,\n autoDestroy: mergedAutoDestroy,\n getPopupContainer: getPopupContainer\n // Arrow\n ,\n\n align: alignInfo,\n arrow: innerArrow,\n arrowPos: arrowPos\n // Align\n ,\n\n ready: ready,\n offsetX: offsetX,\n offsetY: offsetY,\n offsetR: offsetR,\n offsetB: offsetB,\n onAlign: triggerAlign\n // Stretch\n ,\n\n stretch: stretch,\n targetWidth: targetWidth / scaleX,\n targetHeight: targetHeight / scaleY\n })));\n });\n if (process.env.NODE_ENV !== 'production') {\n Trigger.displayName = 'Trigger';\n }\n return Trigger;\n}\nexport default generateTrigger(Portal);","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport { collectScroller, getWin } from \"../util\";\nexport default function useWatch(open, target, popup, onAlign, onScroll) {\n useLayoutEffect(function () {\n if (open && target && popup) {\n var notifyScroll = function notifyScroll() {\n onAlign();\n onScroll();\n };\n var targetElement = target;\n var popupElement = popup;\n var targetScrollList = collectScroller(targetElement);\n var popupScrollList = collectScroller(popupElement);\n var win = getWin(popupElement);\n var mergedList = new Set([win].concat(_toConsumableArray(targetScrollList), _toConsumableArray(popupScrollList)));\n mergedList.forEach(function (scroller) {\n scroller.addEventListener('scroll', notifyScroll, {\n passive: true\n });\n });\n win.addEventListener('resize', notifyScroll, {\n passive: true\n });\n\n // First time always do align\n onAlign();\n return function () {\n mergedList.forEach(function (scroller) {\n scroller.removeEventListener('scroll', notifyScroll);\n win.removeEventListener('resize', notifyScroll);\n });\n };\n }\n }, [open, target, popup]);\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { warning } from 'rc-util';\nimport { getShadowRoot } from \"rc-util/es/Dom/shadow\";\nimport raf from \"rc-util/es/raf\";\nimport * as React from 'react';\nimport { getWin } from \"../util\";\nexport default function useWinClick(open, clickToHide, targetEle, popupEle, mask, maskClosable, inPopupOrChild, triggerOpen) {\n var openRef = React.useRef(open);\n\n // Window click to hide should be lock to avoid trigger lock immediately\n var lockRef = React.useRef(false);\n if (openRef.current !== open) {\n lockRef.current = true;\n openRef.current = open;\n }\n React.useEffect(function () {\n var id = raf(function () {\n lockRef.current = false;\n });\n return function () {\n raf.cancel(id);\n };\n }, [open]);\n\n // Click to hide is special action since click popup element should not hide\n React.useEffect(function () {\n if (clickToHide && popupEle && (!mask || maskClosable)) {\n var genClickEvents = function genClickEvents() {\n var clickInside = false;\n\n // User may mouseDown inside and drag out of popup and mouse up\n // Record here to prevent close\n var onWindowMouseDown = function onWindowMouseDown(_ref) {\n var target = _ref.target;\n clickInside = inPopupOrChild(target);\n };\n var onWindowClick = function onWindowClick(_ref2) {\n var target = _ref2.target;\n if (!lockRef.current && openRef.current && !clickInside && !inPopupOrChild(target)) {\n triggerOpen(false);\n }\n };\n return [onWindowMouseDown, onWindowClick];\n };\n\n // Events\n var _genClickEvents = genClickEvents(),\n _genClickEvents2 = _slicedToArray(_genClickEvents, 2),\n onWinMouseDown = _genClickEvents2[0],\n onWinClick = _genClickEvents2[1];\n var _genClickEvents3 = genClickEvents(),\n _genClickEvents4 = _slicedToArray(_genClickEvents3, 2),\n onShadowMouseDown = _genClickEvents4[0],\n onShadowClick = _genClickEvents4[1];\n var win = getWin(popupEle);\n win.addEventListener('mousedown', onWinMouseDown, true);\n win.addEventListener('click', onWinClick, true);\n win.addEventListener('contextmenu', onWinClick, true);\n\n // shadow root\n var targetShadowRoot = getShadowRoot(targetEle);\n if (targetShadowRoot) {\n targetShadowRoot.addEventListener('mousedown', onShadowMouseDown, true);\n targetShadowRoot.addEventListener('click', onShadowClick, true);\n targetShadowRoot.addEventListener('contextmenu', onShadowClick, true);\n }\n\n // Warning if target and popup not in same root\n if (process.env.NODE_ENV !== 'production') {\n var _targetEle$getRootNod, _popupEle$getRootNode;\n var targetRoot = targetEle === null || targetEle === void 0 ? void 0 : (_targetEle$getRootNod = targetEle.getRootNode) === null || _targetEle$getRootNod === void 0 ? void 0 : _targetEle$getRootNod.call(targetEle);\n var popupRoot = (_popupEle$getRootNode = popupEle.getRootNode) === null || _popupEle$getRootNode === void 0 ? void 0 : _popupEle$getRootNode.call(popupEle);\n warning(targetRoot === popupRoot, \"trigger element and popup element should in same shadow root.\");\n }\n return function () {\n win.removeEventListener('mousedown', onWinMouseDown, true);\n win.removeEventListener('click', onWinClick, true);\n win.removeEventListener('contextmenu', onWinClick, true);\n if (targetShadowRoot) {\n targetShadowRoot.removeEventListener('mousedown', onShadowMouseDown, true);\n targetShadowRoot.removeEventListener('click', onShadowClick, true);\n targetShadowRoot.removeEventListener('contextmenu', onShadowClick, true);\n }\n };\n }\n }, [clickToHide, targetEle, popupEle, mask, maskClosable]);\n}","var autoAdjustOverflowTopBottom = {\n shiftX: 64,\n adjustY: 1\n};\nvar autoAdjustOverflowLeftRight = {\n adjustX: 1,\n shiftY: true\n};\nvar targetOffset = [0, 0];\nexport var placements = {\n left: {\n points: ['cr', 'cl'],\n overflow: autoAdjustOverflowLeftRight,\n offset: [-4, 0],\n targetOffset: targetOffset\n },\n right: {\n points: ['cl', 'cr'],\n overflow: autoAdjustOverflowLeftRight,\n offset: [4, 0],\n targetOffset: targetOffset\n },\n top: {\n points: ['bc', 'tc'],\n overflow: autoAdjustOverflowTopBottom,\n offset: [0, -4],\n targetOffset: targetOffset\n },\n bottom: {\n points: ['tc', 'bc'],\n overflow: autoAdjustOverflowTopBottom,\n offset: [0, 4],\n targetOffset: targetOffset\n },\n topLeft: {\n points: ['bl', 'tl'],\n overflow: autoAdjustOverflowTopBottom,\n offset: [0, -4],\n targetOffset: targetOffset\n },\n leftTop: {\n points: ['tr', 'tl'],\n overflow: autoAdjustOverflowLeftRight,\n offset: [-4, 0],\n targetOffset: targetOffset\n },\n topRight: {\n points: ['br', 'tr'],\n overflow: autoAdjustOverflowTopBottom,\n offset: [0, -4],\n targetOffset: targetOffset\n },\n rightTop: {\n points: ['tl', 'tr'],\n overflow: autoAdjustOverflowLeftRight,\n offset: [4, 0],\n targetOffset: targetOffset\n },\n bottomRight: {\n points: ['tr', 'br'],\n overflow: autoAdjustOverflowTopBottom,\n offset: [0, 4],\n targetOffset: targetOffset\n },\n rightBottom: {\n points: ['bl', 'br'],\n overflow: autoAdjustOverflowLeftRight,\n offset: [4, 0],\n targetOffset: targetOffset\n },\n bottomLeft: {\n points: ['tl', 'bl'],\n overflow: autoAdjustOverflowTopBottom,\n offset: [0, 4],\n targetOffset: targetOffset\n },\n leftBottom: {\n points: ['br', 'bl'],\n overflow: autoAdjustOverflowLeftRight,\n offset: [-4, 0],\n targetOffset: targetOffset\n }\n};\nexport default placements;","import classNames from 'classnames';\nimport * as React from 'react';\nexport default function Popup(props) {\n var children = props.children,\n prefixCls = props.prefixCls,\n id = props.id,\n overlayInnerStyle = props.overlayInnerStyle,\n className = props.className,\n style = props.style;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-content\"), className),\n style: style\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-inner\"),\n id: id,\n role: \"tooltip\",\n style: overlayInnerStyle\n }, typeof children === 'function' ? children() : children));\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"overlayClassName\", \"trigger\", \"mouseEnterDelay\", \"mouseLeaveDelay\", \"overlayStyle\", \"prefixCls\", \"children\", \"onVisibleChange\", \"afterVisibleChange\", \"transitionName\", \"animation\", \"motion\", \"placement\", \"align\", \"destroyTooltipOnHide\", \"defaultVisible\", \"getTooltipContainer\", \"overlayInnerStyle\", \"arrowContent\", \"overlay\", \"id\", \"showArrow\"];\nimport Trigger from '@rc-component/trigger';\nimport * as React from 'react';\nimport { forwardRef, useImperativeHandle, useRef } from 'react';\nimport { placements } from \"./placements\";\nimport Popup from \"./Popup\";\nvar Tooltip = function Tooltip(props, ref) {\n var overlayClassName = props.overlayClassName,\n _props$trigger = props.trigger,\n trigger = _props$trigger === void 0 ? ['hover'] : _props$trigger,\n _props$mouseEnterDela = props.mouseEnterDelay,\n mouseEnterDelay = _props$mouseEnterDela === void 0 ? 0 : _props$mouseEnterDela,\n _props$mouseLeaveDela = props.mouseLeaveDelay,\n mouseLeaveDelay = _props$mouseLeaveDela === void 0 ? 0.1 : _props$mouseLeaveDela,\n overlayStyle = props.overlayStyle,\n _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-tooltip' : _props$prefixCls,\n children = props.children,\n onVisibleChange = props.onVisibleChange,\n afterVisibleChange = props.afterVisibleChange,\n transitionName = props.transitionName,\n animation = props.animation,\n motion = props.motion,\n _props$placement = props.placement,\n placement = _props$placement === void 0 ? 'right' : _props$placement,\n _props$align = props.align,\n align = _props$align === void 0 ? {} : _props$align,\n _props$destroyTooltip = props.destroyTooltipOnHide,\n destroyTooltipOnHide = _props$destroyTooltip === void 0 ? false : _props$destroyTooltip,\n defaultVisible = props.defaultVisible,\n getTooltipContainer = props.getTooltipContainer,\n overlayInnerStyle = props.overlayInnerStyle,\n arrowContent = props.arrowContent,\n overlay = props.overlay,\n id = props.id,\n _props$showArrow = props.showArrow,\n showArrow = _props$showArrow === void 0 ? true : _props$showArrow,\n restProps = _objectWithoutProperties(props, _excluded);\n var triggerRef = useRef(null);\n useImperativeHandle(ref, function () {\n return triggerRef.current;\n });\n var extraProps = _objectSpread({}, restProps);\n if ('visible' in props) {\n extraProps.popupVisible = props.visible;\n }\n var getPopupElement = function getPopupElement() {\n return /*#__PURE__*/React.createElement(Popup, {\n key: \"content\",\n prefixCls: prefixCls,\n id: id,\n overlayInnerStyle: overlayInnerStyle\n }, overlay);\n };\n return /*#__PURE__*/React.createElement(Trigger, _extends({\n popupClassName: overlayClassName,\n prefixCls: prefixCls,\n popup: getPopupElement,\n action: trigger,\n builtinPlacements: placements,\n popupPlacement: placement,\n ref: triggerRef,\n popupAlign: align,\n getPopupContainer: getTooltipContainer,\n onPopupVisibleChange: onVisibleChange,\n afterPopupVisibleChange: afterVisibleChange,\n popupTransitionName: transitionName,\n popupAnimation: animation,\n popupMotion: motion,\n defaultPopupVisible: defaultVisible,\n autoDestroy: destroyTooltipOnHide,\n mouseLeaveDelay: mouseLeaveDelay,\n popupStyle: overlayStyle,\n mouseEnterDelay: mouseEnterDelay,\n arrow: showArrow\n }, extraProps), children);\n};\nexport default /*#__PURE__*/forwardRef(Tooltip);","import Tooltip from \"./Tooltip\";\nimport Popup from \"./Popup\";\nexport { Popup };\nexport default Tooltip;","export var roundedArrow = function roundedArrow(width, innerRadius, outerRadius, bgColor, boxShadow) {\n var unitWidth = width / 2;\n var ax = 0;\n var ay = unitWidth;\n var bx = outerRadius * 1 / Math.sqrt(2);\n var by = unitWidth - outerRadius * (1 - 1 / Math.sqrt(2));\n var cx = unitWidth - innerRadius * (1 / Math.sqrt(2));\n var cy = outerRadius * (Math.sqrt(2) - 1) + innerRadius * (1 / Math.sqrt(2));\n var dx = 2 * unitWidth - cx;\n var dy = cy;\n var ex = 2 * unitWidth - bx;\n var ey = by;\n var fx = 2 * unitWidth - ax;\n var fy = ay;\n var shadowWidth = unitWidth * Math.sqrt(2) + outerRadius * (Math.sqrt(2) - 2);\n var polygonOffset = outerRadius * (Math.sqrt(2) - 1);\n return {\n pointerEvents: 'none',\n width: width,\n height: width,\n overflow: 'hidden',\n '&::before': {\n position: 'absolute',\n bottom: 0,\n insetInlineStart: 0,\n width: width,\n height: width / 2,\n background: bgColor,\n clipPath: {\n _multi_value_: true,\n value: [\"polygon(\".concat(polygonOffset, \"px 100%, 50% \").concat(polygonOffset, \"px, \").concat(2 * unitWidth - polygonOffset, \"px 100%, \").concat(polygonOffset, \"px 100%)\"), \"path('M \".concat(ax, \" \").concat(ay, \" A \").concat(outerRadius, \" \").concat(outerRadius, \" 0 0 0 \").concat(bx, \" \").concat(by, \" L \").concat(cx, \" \").concat(cy, \" A \").concat(innerRadius, \" \").concat(innerRadius, \" 0 0 1 \").concat(dx, \" \").concat(dy, \" L \").concat(ex, \" \").concat(ey, \" A \").concat(outerRadius, \" \").concat(outerRadius, \" 0 0 0 \").concat(fx, \" \").concat(fy, \" Z')\")]\n },\n content: '\"\"'\n },\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n width: shadowWidth,\n height: shadowWidth,\n bottom: 0,\n insetInline: 0,\n margin: 'auto',\n borderRadius: {\n _skip_check_: true,\n value: \"0 0 \".concat(innerRadius, \"px 0\")\n },\n transform: 'translateY(50%) rotate(-135deg)',\n boxShadow: boxShadow,\n zIndex: 0,\n background: 'transparent'\n }\n };\n};","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { roundedArrow } from './roundedArrow';\nexport var MAX_VERTICAL_CONTENT_RADIUS = 8;\nexport function getArrowOffset(options) {\n var maxVerticalContentRadius = MAX_VERTICAL_CONTENT_RADIUS;\n var contentRadius = options.contentRadius,\n limitVerticalRadius = options.limitVerticalRadius;\n var dropdownArrowOffset = contentRadius > 12 ? contentRadius + 2 : 12;\n var dropdownArrowOffsetVertical = limitVerticalRadius ? maxVerticalContentRadius : dropdownArrowOffset;\n return {\n dropdownArrowOffset: dropdownArrowOffset,\n dropdownArrowOffsetVertical: dropdownArrowOffsetVertical\n };\n}\nfunction isInject(valid, code) {\n if (!valid) return {};\n return code;\n}\nexport default function getArrowStyle(token, options) {\n var _isInject, _isInject2, _isInject3, _isInject4;\n var componentCls = token.componentCls,\n sizePopupArrow = token.sizePopupArrow,\n borderRadiusXS = token.borderRadiusXS,\n borderRadiusOuter = token.borderRadiusOuter,\n boxShadowPopoverArrow = token.boxShadowPopoverArrow;\n var colorBg = options.colorBg,\n _options$contentRadiu = options.contentRadius,\n contentRadius = _options$contentRadiu === void 0 ? token.borderRadiusLG : _options$contentRadiu,\n limitVerticalRadius = options.limitVerticalRadius,\n _options$arrowDistanc = options.arrowDistance,\n arrowDistance = _options$arrowDistanc === void 0 ? 0 : _options$arrowDistanc,\n _options$arrowPlaceme = options.arrowPlacement,\n arrowPlacement = _options$arrowPlaceme === void 0 ? {\n left: true,\n right: true,\n top: true,\n bottom: true\n } : _options$arrowPlaceme;\n var _getArrowOffset = getArrowOffset({\n contentRadius: contentRadius,\n limitVerticalRadius: limitVerticalRadius\n }),\n dropdownArrowOffsetVertical = _getArrowOffset.dropdownArrowOffsetVertical,\n dropdownArrowOffset = _getArrowOffset.dropdownArrowOffset;\n return _defineProperty({}, componentCls, Object.assign(Object.assign(Object.assign(Object.assign(_defineProperty({}, \"\".concat(componentCls, \"-arrow\"), [Object.assign(Object.assign({\n position: 'absolute',\n zIndex: 1,\n display: 'block'\n }, roundedArrow(sizePopupArrow, borderRadiusXS, borderRadiusOuter, colorBg, boxShadowPopoverArrow)), {\n '&:before': {\n background: colorBg\n }\n })]), isInject(!!arrowPlacement.top, (_isInject = {}, _defineProperty(_isInject, [\"&-placement-top \".concat(componentCls, \"-arrow\"), \"&-placement-topLeft \".concat(componentCls, \"-arrow\"), \"&-placement-topRight \".concat(componentCls, \"-arrow\")].join(','), {\n bottom: arrowDistance,\n transform: 'translateY(100%) rotate(180deg)'\n }), _defineProperty(_isInject, \"&-placement-top \".concat(componentCls, \"-arrow\"), {\n left: {\n _skip_check_: true,\n value: '50%'\n },\n transform: 'translateX(-50%) translateY(100%) rotate(180deg)'\n }), _defineProperty(_isInject, \"&-placement-topLeft \".concat(componentCls, \"-arrow\"), {\n left: {\n _skip_check_: true,\n value: dropdownArrowOffset\n }\n }), _defineProperty(_isInject, \"&-placement-topRight \".concat(componentCls, \"-arrow\"), {\n right: {\n _skip_check_: true,\n value: dropdownArrowOffset\n }\n }), _isInject))), isInject(!!arrowPlacement.bottom, (_isInject2 = {}, _defineProperty(_isInject2, [\"&-placement-bottom \".concat(componentCls, \"-arrow\"), \"&-placement-bottomLeft \".concat(componentCls, \"-arrow\"), \"&-placement-bottomRight \".concat(componentCls, \"-arrow\")].join(','), {\n top: arrowDistance,\n transform: \"translateY(-100%)\"\n }), _defineProperty(_isInject2, \"&-placement-bottom \".concat(componentCls, \"-arrow\"), {\n left: {\n _skip_check_: true,\n value: '50%'\n },\n transform: \"translateX(-50%) translateY(-100%)\"\n }), _defineProperty(_isInject2, \"&-placement-bottomLeft \".concat(componentCls, \"-arrow\"), {\n left: {\n _skip_check_: true,\n value: dropdownArrowOffset\n }\n }), _defineProperty(_isInject2, \"&-placement-bottomRight \".concat(componentCls, \"-arrow\"), {\n right: {\n _skip_check_: true,\n value: dropdownArrowOffset\n }\n }), _isInject2))), isInject(!!arrowPlacement.left, (_isInject3 = {}, _defineProperty(_isInject3, [\"&-placement-left \".concat(componentCls, \"-arrow\"), \"&-placement-leftTop \".concat(componentCls, \"-arrow\"), \"&-placement-leftBottom \".concat(componentCls, \"-arrow\")].join(','), {\n right: {\n _skip_check_: true,\n value: arrowDistance\n },\n transform: 'translateX(100%) rotate(90deg)'\n }), _defineProperty(_isInject3, \"&-placement-left \".concat(componentCls, \"-arrow\"), {\n top: {\n _skip_check_: true,\n value: '50%'\n },\n transform: 'translateY(-50%) translateX(100%) rotate(90deg)'\n }), _defineProperty(_isInject3, \"&-placement-leftTop \".concat(componentCls, \"-arrow\"), {\n top: dropdownArrowOffsetVertical\n }), _defineProperty(_isInject3, \"&-placement-leftBottom \".concat(componentCls, \"-arrow\"), {\n bottom: dropdownArrowOffsetVertical\n }), _isInject3))), isInject(!!arrowPlacement.right, (_isInject4 = {}, _defineProperty(_isInject4, [\"&-placement-right \".concat(componentCls, \"-arrow\"), \"&-placement-rightTop \".concat(componentCls, \"-arrow\"), \"&-placement-rightBottom \".concat(componentCls, \"-arrow\")].join(','), {\n left: {\n _skip_check_: true,\n value: arrowDistance\n },\n transform: 'translateX(-100%) rotate(-90deg)'\n }), _defineProperty(_isInject4, \"&-placement-right \".concat(componentCls, \"-arrow\"), {\n top: {\n _skip_check_: true,\n value: '50%'\n },\n transform: 'translateY(-50%) translateX(-100%) rotate(-90deg)'\n }), _defineProperty(_isInject4, \"&-placement-rightTop \".concat(componentCls, \"-arrow\"), {\n top: dropdownArrowOffsetVertical\n }), _defineProperty(_isInject4, \"&-placement-rightBottom \".concat(componentCls, \"-arrow\"), {\n bottom: dropdownArrowOffsetVertical\n }), _isInject4))));\n}","import { getArrowOffset } from '../style/placementArrow';\nexport function getOverflowOptions(placement, arrowOffset, arrowWidth, autoAdjustOverflow) {\n if (autoAdjustOverflow === false) {\n return {\n adjustX: false,\n adjustY: false\n };\n }\n var overflow = autoAdjustOverflow && typeof autoAdjustOverflow === 'object' ? autoAdjustOverflow : {};\n var baseOverflow = {};\n switch (placement) {\n case 'top':\n case 'bottom':\n baseOverflow.shiftX = arrowOffset.dropdownArrowOffset * 2 + arrowWidth;\n break;\n case 'left':\n case 'right':\n baseOverflow.shiftY = arrowOffset.dropdownArrowOffsetVertical * 2 + arrowWidth;\n break;\n }\n var mergedOverflow = Object.assign(Object.assign({}, baseOverflow), overflow);\n // Support auto shift\n if (!mergedOverflow.shiftX) {\n mergedOverflow.adjustX = true;\n }\n if (!mergedOverflow.shiftY) {\n mergedOverflow.adjustY = true;\n }\n return mergedOverflow;\n}\nvar PlacementAlignMap = {\n left: {\n points: ['cr', 'cl']\n },\n right: {\n points: ['cl', 'cr']\n },\n top: {\n points: ['bc', 'tc']\n },\n bottom: {\n points: ['tc', 'bc']\n },\n topLeft: {\n points: ['bl', 'tl']\n },\n leftTop: {\n points: ['tr', 'tl']\n },\n topRight: {\n points: ['br', 'tr']\n },\n rightTop: {\n points: ['tl', 'tr']\n },\n bottomRight: {\n points: ['tr', 'br']\n },\n rightBottom: {\n points: ['bl', 'br']\n },\n bottomLeft: {\n points: ['tl', 'bl']\n },\n leftBottom: {\n points: ['br', 'bl']\n }\n};\nvar ArrowCenterPlacementAlignMap = {\n topLeft: {\n points: ['bl', 'tc']\n },\n leftTop: {\n points: ['tr', 'cl']\n },\n topRight: {\n points: ['br', 'tc']\n },\n rightTop: {\n points: ['tl', 'cr']\n },\n bottomRight: {\n points: ['tr', 'bc']\n },\n rightBottom: {\n points: ['bl', 'cr']\n },\n bottomLeft: {\n points: ['tl', 'bc']\n },\n leftBottom: {\n points: ['br', 'cl']\n }\n};\nvar DisableAutoArrowList = new Set(['topLeft', 'topRight', 'bottomLeft', 'bottomRight', 'leftTop', 'leftBottom', 'rightTop', 'rightBottom']);\nexport default function getPlacements(config) {\n var arrowWidth = config.arrowWidth,\n autoAdjustOverflow = config.autoAdjustOverflow,\n arrowPointAtCenter = config.arrowPointAtCenter,\n offset = config.offset,\n borderRadius = config.borderRadius,\n visibleFirst = config.visibleFirst;\n var halfArrowWidth = arrowWidth / 2;\n var placementMap = {};\n Object.keys(PlacementAlignMap).forEach(function (key) {\n var template = arrowPointAtCenter && ArrowCenterPlacementAlignMap[key] || PlacementAlignMap[key];\n var placementInfo = Object.assign(Object.assign({}, template), {\n offset: [0, 0]\n });\n placementMap[key] = placementInfo;\n // Disable autoArrow since design is fixed position\n if (DisableAutoArrowList.has(key)) {\n placementInfo.autoArrow = false;\n }\n // Static offset\n switch (key) {\n case 'top':\n case 'topLeft':\n case 'topRight':\n placementInfo.offset[1] = -halfArrowWidth - offset;\n break;\n case 'bottom':\n case 'bottomLeft':\n case 'bottomRight':\n placementInfo.offset[1] = halfArrowWidth + offset;\n break;\n case 'left':\n case 'leftTop':\n case 'leftBottom':\n placementInfo.offset[0] = -halfArrowWidth - offset;\n break;\n case 'right':\n case 'rightTop':\n case 'rightBottom':\n placementInfo.offset[0] = halfArrowWidth + offset;\n break;\n }\n // Dynamic offset\n var arrowOffset = getArrowOffset({\n contentRadius: borderRadius,\n limitVerticalRadius: true\n });\n if (arrowPointAtCenter) {\n switch (key) {\n case 'topLeft':\n case 'bottomLeft':\n placementInfo.offset[0] = -arrowOffset.dropdownArrowOffset - halfArrowWidth;\n break;\n case 'topRight':\n case 'bottomRight':\n placementInfo.offset[0] = arrowOffset.dropdownArrowOffset + halfArrowWidth;\n break;\n case 'leftTop':\n case 'rightTop':\n placementInfo.offset[1] = -arrowOffset.dropdownArrowOffset - halfArrowWidth;\n break;\n case 'leftBottom':\n case 'rightBottom':\n placementInfo.offset[1] = arrowOffset.dropdownArrowOffset + halfArrowWidth;\n break;\n }\n }\n // Overflow\n placementInfo.overflow = getOverflowOptions(key, arrowOffset, arrowWidth, autoAdjustOverflow);\n // VisibleFirst\n if (visibleFirst) {\n placementInfo.htmlRegion = 'visibleFirst';\n }\n });\n return placementMap;\n}","'use client';\n\n/* eslint-disable import/prefer-default-export */\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport getDesignToken from './getDesignToken';\nimport { defaultConfig, useToken as useInternalToken } from './internal';\nimport compactAlgorithm from './themes/compact';\nimport darkAlgorithm from './themes/dark';\nimport defaultAlgorithm from './themes/default';\n// ZombieJ: We export as object to user but array in internal.\n// This is used to minimize the bundle size for antd package but safe to refactor as object also.\n// Please do not export internal `useToken` directly to avoid something export unexpected.\n/** Get current context Design Token. Will be different if you are using nest theme config. */\nfunction useToken() {\n var _useInternalToken = useInternalToken(),\n _useInternalToken2 = _slicedToArray(_useInternalToken, 3),\n theme = _useInternalToken2[0],\n token = _useInternalToken2[1],\n hashId = _useInternalToken2[2];\n return {\n theme: theme,\n token: token,\n hashId: hashId\n };\n}\nexport default {\n /** @private Test Usage. Do not use in production. */\n defaultConfig: defaultConfig,\n /** Default seedToken */\n defaultSeed: defaultConfig.token,\n useToken: useToken,\n defaultAlgorithm: defaultAlgorithm,\n darkAlgorithm: darkAlgorithm,\n compactAlgorithm: compactAlgorithm,\n getDesignToken: getDesignToken\n};","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nvar initMotionCommon = function initMotionCommon(duration) {\n return {\n animationDuration: duration,\n animationFillMode: 'both'\n };\n};\n// FIXME: origin less code seems same as initMotionCommon. Maybe we can safe remove\nvar initMotionCommonLeave = function initMotionCommonLeave(duration) {\n return {\n animationDuration: duration,\n animationFillMode: 'both'\n };\n};\nexport var initMotion = function initMotion(motionCls, inKeyframes, outKeyframes, duration) {\n var _ref;\n var sameLevel = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n var sameLevelPrefix = sameLevel ? '&' : '';\n return _ref = {}, _defineProperty(_ref, \"\\n \".concat(sameLevelPrefix).concat(motionCls, \"-enter,\\n \").concat(sameLevelPrefix).concat(motionCls, \"-appear\\n \"), Object.assign(Object.assign({}, initMotionCommon(duration)), {\n animationPlayState: 'paused'\n })), _defineProperty(_ref, \"\".concat(sameLevelPrefix).concat(motionCls, \"-leave\"), Object.assign(Object.assign({}, initMotionCommonLeave(duration)), {\n animationPlayState: 'paused'\n })), _defineProperty(_ref, \"\\n \".concat(sameLevelPrefix).concat(motionCls, \"-enter\").concat(motionCls, \"-enter-active,\\n \").concat(sameLevelPrefix).concat(motionCls, \"-appear\").concat(motionCls, \"-appear-active\\n \"), {\n animationName: inKeyframes,\n animationPlayState: 'running'\n }), _defineProperty(_ref, \"\".concat(sameLevelPrefix).concat(motionCls, \"-leave\").concat(motionCls, \"-leave-active\"), {\n animationName: outKeyframes,\n animationPlayState: 'running',\n pointerEvents: 'none'\n }), _ref;\n};","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { Keyframes } from '@ant-design/cssinjs';\nimport { initMotion } from './motion';\nexport var zoomIn = new Keyframes('antZoomIn', {\n '0%': {\n transform: 'scale(0.2)',\n opacity: 0\n },\n '100%': {\n transform: 'scale(1)',\n opacity: 1\n }\n});\nexport var zoomOut = new Keyframes('antZoomOut', {\n '0%': {\n transform: 'scale(1)'\n },\n '100%': {\n transform: 'scale(0.2)',\n opacity: 0\n }\n});\nexport var zoomBigIn = new Keyframes('antZoomBigIn', {\n '0%': {\n transform: 'scale(0.8)',\n opacity: 0\n },\n '100%': {\n transform: 'scale(1)',\n opacity: 1\n }\n});\nexport var zoomBigOut = new Keyframes('antZoomBigOut', {\n '0%': {\n transform: 'scale(1)'\n },\n '100%': {\n transform: 'scale(0.8)',\n opacity: 0\n }\n});\nexport var zoomUpIn = new Keyframes('antZoomUpIn', {\n '0%': {\n transform: 'scale(0.8)',\n transformOrigin: '50% 0%',\n opacity: 0\n },\n '100%': {\n transform: 'scale(1)',\n transformOrigin: '50% 0%'\n }\n});\nexport var zoomUpOut = new Keyframes('antZoomUpOut', {\n '0%': {\n transform: 'scale(1)',\n transformOrigin: '50% 0%'\n },\n '100%': {\n transform: 'scale(0.8)',\n transformOrigin: '50% 0%',\n opacity: 0\n }\n});\nexport var zoomLeftIn = new Keyframes('antZoomLeftIn', {\n '0%': {\n transform: 'scale(0.8)',\n transformOrigin: '0% 50%',\n opacity: 0\n },\n '100%': {\n transform: 'scale(1)',\n transformOrigin: '0% 50%'\n }\n});\nexport var zoomLeftOut = new Keyframes('antZoomLeftOut', {\n '0%': {\n transform: 'scale(1)',\n transformOrigin: '0% 50%'\n },\n '100%': {\n transform: 'scale(0.8)',\n transformOrigin: '0% 50%',\n opacity: 0\n }\n});\nexport var zoomRightIn = new Keyframes('antZoomRightIn', {\n '0%': {\n transform: 'scale(0.8)',\n transformOrigin: '100% 50%',\n opacity: 0\n },\n '100%': {\n transform: 'scale(1)',\n transformOrigin: '100% 50%'\n }\n});\nexport var zoomRightOut = new Keyframes('antZoomRightOut', {\n '0%': {\n transform: 'scale(1)',\n transformOrigin: '100% 50%'\n },\n '100%': {\n transform: 'scale(0.8)',\n transformOrigin: '100% 50%',\n opacity: 0\n }\n});\nexport var zoomDownIn = new Keyframes('antZoomDownIn', {\n '0%': {\n transform: 'scale(0.8)',\n transformOrigin: '50% 100%',\n opacity: 0\n },\n '100%': {\n transform: 'scale(1)',\n transformOrigin: '50% 100%'\n }\n});\nexport var zoomDownOut = new Keyframes('antZoomDownOut', {\n '0%': {\n transform: 'scale(1)',\n transformOrigin: '50% 100%'\n },\n '100%': {\n transform: 'scale(0.8)',\n transformOrigin: '50% 100%',\n opacity: 0\n }\n});\nvar zoomMotion = {\n zoom: {\n inKeyframes: zoomIn,\n outKeyframes: zoomOut\n },\n 'zoom-big': {\n inKeyframes: zoomBigIn,\n outKeyframes: zoomBigOut\n },\n 'zoom-big-fast': {\n inKeyframes: zoomBigIn,\n outKeyframes: zoomBigOut\n },\n 'zoom-left': {\n inKeyframes: zoomLeftIn,\n outKeyframes: zoomLeftOut\n },\n 'zoom-right': {\n inKeyframes: zoomRightIn,\n outKeyframes: zoomRightOut\n },\n 'zoom-up': {\n inKeyframes: zoomUpIn,\n outKeyframes: zoomUpOut\n },\n 'zoom-down': {\n inKeyframes: zoomDownIn,\n outKeyframes: zoomDownOut\n }\n};\nexport var initZoomMotion = function initZoomMotion(token, motionName) {\n var _ref;\n var antCls = token.antCls;\n var motionCls = \"\".concat(antCls, \"-\").concat(motionName);\n var _zoomMotion$motionNam = zoomMotion[motionName],\n inKeyframes = _zoomMotion$motionNam.inKeyframes,\n outKeyframes = _zoomMotion$motionNam.outKeyframes;\n return [initMotion(motionCls, inKeyframes, outKeyframes, motionName === 'zoom-big-fast' ? token.motionDurationFast : token.motionDurationMid), (_ref = {}, _defineProperty(_ref, \"\\n \".concat(motionCls, \"-enter,\\n \").concat(motionCls, \"-appear\\n \"), {\n transform: 'scale(0)',\n opacity: 0,\n animationTimingFunction: token.motionEaseOutCirc,\n '&-prepare': {\n transform: 'none'\n }\n }), _defineProperty(_ref, \"\".concat(motionCls, \"-leave\"), {\n animationTimingFunction: token.motionEaseInOutCirc\n }), _ref)];\n};","export var PresetColors = ['blue', 'purple', 'cyan', 'green', 'magenta', 'pink', 'red', 'orange', 'yellow', 'volcano', 'geekblue', 'lime', 'gold'];","import { PresetColors } from '../interface';\nexport default function genPresetColor(token, genCss) {\n return PresetColors.reduce(function (prev, colorKey) {\n var lightColor = token[\"\".concat(colorKey, \"1\")];\n var lightBorderColor = token[\"\".concat(colorKey, \"3\")];\n var darkColor = token[\"\".concat(colorKey, \"6\")];\n var textColor = token[\"\".concat(colorKey, \"7\")];\n return Object.assign(Object.assign({}, prev), genCss(colorKey, {\n lightColor: lightColor,\n lightBorderColor: lightBorderColor,\n darkColor: darkColor,\n textColor: textColor\n }));\n }, {});\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { resetComponent } from '../../style';\nimport { initZoomMotion } from '../../style/motion';\nimport getArrowStyle, { MAX_VERTICAL_CONTENT_RADIUS } from '../../style/placementArrow';\nimport { genComponentStyleHook, genPresetColor, mergeToken } from '../../theme/internal';\nvar genTooltipStyle = function genTooltipStyle(token) {\n var _Object$assign;\n var componentCls = token.componentCls,\n tooltipMaxWidth = token.tooltipMaxWidth,\n tooltipColor = token.tooltipColor,\n tooltipBg = token.tooltipBg,\n tooltipBorderRadius = token.tooltipBorderRadius,\n zIndexPopup = token.zIndexPopup,\n controlHeight = token.controlHeight,\n boxShadowSecondary = token.boxShadowSecondary,\n paddingSM = token.paddingSM,\n paddingXS = token.paddingXS,\n tooltipRadiusOuter = token.tooltipRadiusOuter;\n return [_defineProperty({}, componentCls, Object.assign(Object.assign(Object.assign(Object.assign({}, resetComponent(token)), (_Object$assign = {\n position: 'absolute',\n zIndex: zIndexPopup,\n display: 'block',\n width: 'max-content',\n maxWidth: tooltipMaxWidth,\n visibility: 'visible',\n transformOrigin: \"var(--arrow-x, 50%) var(--arrow-y, 50%)\",\n '&-hidden': {\n display: 'none'\n },\n '--antd-arrow-background-color': tooltipBg\n }, _defineProperty(_Object$assign, \"\".concat(componentCls, \"-inner\"), {\n minWidth: controlHeight,\n minHeight: controlHeight,\n padding: \"\".concat(paddingSM / 2, \"px \").concat(paddingXS, \"px\"),\n color: tooltipColor,\n textAlign: 'start',\n textDecoration: 'none',\n wordWrap: 'break-word',\n backgroundColor: tooltipBg,\n borderRadius: tooltipBorderRadius,\n boxShadow: boxShadowSecondary,\n boxSizing: 'border-box'\n }), _defineProperty(_Object$assign, [\"&-placement-left\", \"&-placement-leftTop\", \"&-placement-leftBottom\", \"&-placement-right\", \"&-placement-rightTop\", \"&-placement-rightBottom\"].join(','), _defineProperty({}, \"\".concat(componentCls, \"-inner\"), {\n borderRadius: Math.min(tooltipBorderRadius, MAX_VERTICAL_CONTENT_RADIUS)\n })), _defineProperty(_Object$assign, \"\".concat(componentCls, \"-content\"), {\n position: 'relative'\n }), _Object$assign)), genPresetColor(token, function (colorKey, _ref) {\n var _$concat$concat;\n var darkColor = _ref.darkColor;\n return _defineProperty({}, \"&\".concat(componentCls, \"-\").concat(colorKey), (_$concat$concat = {}, _defineProperty(_$concat$concat, \"\".concat(componentCls, \"-inner\"), {\n backgroundColor: darkColor\n }), _defineProperty(_$concat$concat, \"\".concat(componentCls, \"-arrow\"), {\n '--antd-arrow-background-color': darkColor\n }), _$concat$concat));\n })), {\n // RTL\n '&-rtl': {\n direction: 'rtl'\n }\n })),\n // Arrow Style\n getArrowStyle(mergeToken(token, {\n borderRadiusOuter: tooltipRadiusOuter\n }), {\n colorBg: 'var(--antd-arrow-background-color)',\n contentRadius: tooltipBorderRadius,\n limitVerticalRadius: true\n }), // Pure Render\n _defineProperty({}, \"\".concat(componentCls, \"-pure\"), {\n position: 'relative',\n maxWidth: 'none',\n margin: token.sizePopupArrow\n })];\n};\n// ============================== Export ==============================\nexport default (function (prefixCls, injectStyle) {\n var useOriginHook = genComponentStyleHook('Tooltip', function (token) {\n // Popover use Tooltip as internal component. We do not need to handle this.\n if (injectStyle === false) {\n return [];\n }\n var borderRadius = token.borderRadius,\n colorTextLightSolid = token.colorTextLightSolid,\n colorBgDefault = token.colorBgDefault,\n borderRadiusOuter = token.borderRadiusOuter;\n var TooltipToken = mergeToken(token, {\n // default variables\n tooltipMaxWidth: 250,\n tooltipColor: colorTextLightSolid,\n tooltipBorderRadius: borderRadius,\n tooltipBg: colorBgDefault,\n tooltipRadiusOuter: borderRadiusOuter > 4 ? 4 : borderRadiusOuter\n });\n return [genTooltipStyle(TooltipToken), initZoomMotion(token, 'zoom-big-fast')];\n }, function (_ref2) {\n var zIndexPopupBase = _ref2.zIndexPopupBase,\n colorBgSpotlight = _ref2.colorBgSpotlight;\n return {\n zIndexPopup: zIndexPopupBase + 70,\n colorBgDefault: colorBgSpotlight\n };\n }, {\n resetStyle: false\n });\n return useOriginHook(prefixCls);\n});","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport { PresetColors } from '../theme/interface';\nvar inverseColors = PresetColors.map(function (color) {\n return \"\".concat(color, \"-inverse\");\n});\nexport var PresetStatusColorTypes = ['success', 'processing', 'error', 'default', 'warning'];\n/**\n * determine if the color keyword belongs to the `Ant Design` {@link PresetColors}.\n * @param color color to be judged\n * @param includeInverse whether to include reversed colors\n */\nexport function isPresetColor(color) {\n var includeInverse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n if (includeInverse) {\n return [].concat(_toConsumableArray(inverseColors), _toConsumableArray(PresetColors)).includes(color);\n }\n return PresetColors.includes(color);\n}\nexport function isPresetStatusColor(color) {\n return PresetStatusColorTypes.includes(color);\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\n/* eslint-disable import/prefer-default-export */\nimport classNames from 'classnames';\nimport { isPresetColor } from '../_util/colors';\nexport function parseColor(prefixCls, color) {\n var isInternalColor = isPresetColor(color);\n var className = classNames(_defineProperty({}, \"\".concat(prefixCls, \"-\").concat(color), color && isInternalColor));\n var overlayStyle = {};\n var arrowStyle = {};\n if (color && !isInternalColor) {\n overlayStyle.background = color;\n // @ts-ignore\n arrowStyle['--antd-arrow-background-color'] = color;\n }\n return {\n className: className,\n overlayStyle: overlayStyle,\n arrowStyle: arrowStyle\n };\n}","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport classNames from 'classnames';\nimport { Popup } from 'rc-tooltip';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport useStyle from './style';\nimport { parseColor } from './util';\n/** @private Internal Component. Do not use in your production. */\nvar PurePanel = function PurePanel(props) {\n var customizePrefixCls = props.prefixCls,\n className = props.className,\n _props$placement = props.placement,\n placement = _props$placement === void 0 ? 'top' : _props$placement,\n title = props.title,\n color = props.color,\n overlayInnerStyle = props.overlayInnerStyle;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls;\n var prefixCls = getPrefixCls('tooltip', customizePrefixCls);\n var _useStyle = useStyle(prefixCls, true),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n // Color\n var colorInfo = parseColor(prefixCls, color);\n var arrowContentStyle = colorInfo.arrowStyle;\n var formattedOverlayInnerStyle = Object.assign(Object.assign({}, overlayInnerStyle), colorInfo.overlayStyle);\n var cls = classNames(hashId, prefixCls, \"\".concat(prefixCls, \"-pure\"), \"\".concat(prefixCls, \"-placement-\").concat(placement), className, colorInfo.className);\n return wrapSSR( /*#__PURE__*/React.createElement(\"div\", {\n className: cls,\n style: arrowContentStyle\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-arrow\")\n }), /*#__PURE__*/React.createElement(Popup, Object.assign({}, props, {\n className: hashId,\n prefixCls: prefixCls,\n overlayInnerStyle: formattedOverlayInnerStyle\n }), title)));\n};\nexport default PurePanel;","'use client';\n\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport RcTooltip from 'rc-tooltip';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport * as React from 'react';\nimport { getTransitionName } from '../_util/motion';\nimport getPlacements from '../_util/placements';\nimport { cloneElement, isFragment, isValidElement } from '../_util/reactNode';\nimport warning from '../_util/warning';\nimport { ConfigContext } from '../config-provider';\nimport { NoCompactStyle } from '../space/Compact';\nimport theme from '../theme';\nimport PurePanel from './PurePanel';\nimport useStyle from './style';\nimport { parseColor } from './util';\nvar useToken = theme.useToken;\nvar splitObject = function splitObject(obj, keys) {\n var picked = {};\n var omitted = Object.assign({}, obj);\n keys.forEach(function (key) {\n if (obj && key in obj) {\n picked[key] = obj[key];\n delete omitted[key];\n }\n });\n return {\n picked: picked,\n omitted: omitted\n };\n};\n// Fix Tooltip won't hide at disabled button\n// mouse events don't trigger at disabled button in Chrome\n// https://github.com/react-component/tooltip/issues/18\nfunction getDisabledCompatibleChildren(element, prefixCls) {\n var elementType = element.type;\n if ((elementType.__ANT_BUTTON === true || element.type === 'button') && element.props.disabled || elementType.__ANT_SWITCH === true && (element.props.disabled || element.props.loading) || elementType.__ANT_RADIO === true && element.props.disabled) {\n // Pick some layout related style properties up to span\n // Prevent layout bugs like https://github.com/ant-design/ant-design/issues/5254\n var _splitObject = splitObject(element.props.style, ['position', 'left', 'right', 'top', 'bottom', 'float', 'display', 'zIndex']),\n picked = _splitObject.picked,\n omitted = _splitObject.omitted;\n var spanStyle = Object.assign(Object.assign({\n display: 'inline-block'\n }, picked), {\n cursor: 'not-allowed',\n width: element.props.block ? '100%' : undefined\n });\n var buttonStyle = Object.assign(Object.assign({}, omitted), {\n pointerEvents: 'none'\n });\n var child = cloneElement(element, {\n style: buttonStyle,\n className: null\n });\n return /*#__PURE__*/React.createElement(\"span\", {\n style: spanStyle,\n className: classNames(element.props.className, \"\".concat(prefixCls, \"-disabled-compatible-wrapper\"))\n }, child);\n }\n return element;\n}\nvar Tooltip = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _a, _b;\n var customizePrefixCls = props.prefixCls,\n openClassName = props.openClassName,\n getTooltipContainer = props.getTooltipContainer,\n overlayClassName = props.overlayClassName,\n color = props.color,\n overlayInnerStyle = props.overlayInnerStyle,\n children = props.children,\n afterOpenChange = props.afterOpenChange,\n afterVisibleChange = props.afterVisibleChange,\n destroyTooltipOnHide = props.destroyTooltipOnHide,\n _props$arrow = props.arrow,\n arrow = _props$arrow === void 0 ? true : _props$arrow,\n title = props.title,\n overlay = props.overlay,\n builtinPlacements = props.builtinPlacements,\n _props$arrowPointAtCe = props.arrowPointAtCenter,\n arrowPointAtCenter = _props$arrowPointAtCe === void 0 ? false : _props$arrowPointAtCe,\n _props$autoAdjustOver = props.autoAdjustOverflow,\n autoAdjustOverflow = _props$autoAdjustOver === void 0 ? true : _props$autoAdjustOver;\n var mergedShowArrow = !!arrow;\n var _useToken = useToken(),\n token = _useToken.token;\n var _React$useContext = React.useContext(ConfigContext),\n getContextPopupContainer = _React$useContext.getPopupContainer,\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n // ============================== Ref ===============================\n var tooltipRef = React.useRef(null);\n var forceAlign = function forceAlign() {\n var _a;\n (_a = tooltipRef.current) === null || _a === void 0 ? void 0 : _a.forceAlign();\n };\n React.useImperativeHandle(ref, function () {\n return {\n forceAlign: forceAlign,\n forcePopupAlign: function forcePopupAlign() {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Tooltip', '`forcePopupAlign` is align to `forceAlign` instead.') : void 0;\n forceAlign();\n }\n };\n });\n // ============================== Warn ==============================\n if (process.env.NODE_ENV !== 'production') {\n [['visible', 'open'], ['defaultVisible', 'defaultOpen'], ['onVisibleChange', 'onOpenChange'], ['afterVisibleChange', 'afterOpenChange'], ['arrowPointAtCenter', 'arrow={{ pointAtCenter: true }}']].forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n deprecatedName = _ref2[0],\n newName = _ref2[1];\n process.env.NODE_ENV !== \"production\" ? warning(!(deprecatedName in props), 'Tooltip', \"`\".concat(deprecatedName, \"` is deprecated, please use `\").concat(newName, \"` instead.\")) : void 0;\n });\n process.env.NODE_ENV !== \"production\" ? warning(!destroyTooltipOnHide || typeof destroyTooltipOnHide === 'boolean', 'Tooltip', '`destroyTooltipOnHide` no need config `keepParent` anymore. Please use `boolean` value directly.') : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!arrow || typeof arrow === 'boolean' || !('arrowPointAtCenter' in arrow), 'Tooltip', '`arrowPointAtCenter` in `arrow` is deprecated, please use `pointAtCenter` instead.') : void 0;\n }\n // ============================== Open ==============================\n var _useMergedState = useMergedState(false, {\n value: (_a = props.open) !== null && _a !== void 0 ? _a : props.visible,\n defaultValue: (_b = props.defaultOpen) !== null && _b !== void 0 ? _b : props.defaultVisible\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n open = _useMergedState2[0],\n setOpen = _useMergedState2[1];\n var noTitle = !title && !overlay && title !== 0; // overlay for old version compatibility\n var onOpenChange = function onOpenChange(vis) {\n var _a, _b;\n setOpen(noTitle ? false : vis);\n if (!noTitle) {\n (_a = props.onOpenChange) === null || _a === void 0 ? void 0 : _a.call(props, vis);\n (_b = props.onVisibleChange) === null || _b === void 0 ? void 0 : _b.call(props, vis);\n }\n };\n var tooltipPlacements = React.useMemo(function () {\n var _a, _b;\n var mergedArrowPointAtCenter = arrowPointAtCenter;\n if (typeof arrow === 'object') {\n mergedArrowPointAtCenter = (_b = (_a = arrow.pointAtCenter) !== null && _a !== void 0 ? _a : arrow.arrowPointAtCenter) !== null && _b !== void 0 ? _b : arrowPointAtCenter;\n }\n return builtinPlacements || getPlacements({\n arrowPointAtCenter: mergedArrowPointAtCenter,\n autoAdjustOverflow: autoAdjustOverflow,\n arrowWidth: mergedShowArrow ? token.sizePopupArrow : 0,\n borderRadius: token.borderRadius,\n offset: token.marginXXS,\n visibleFirst: true\n });\n }, [arrowPointAtCenter, arrow, builtinPlacements, token]);\n var memoOverlay = React.useMemo(function () {\n if (title === 0) {\n return title;\n }\n return overlay || title || '';\n }, [overlay, title]);\n var memoOverlayWrapper = /*#__PURE__*/React.createElement(NoCompactStyle, null, typeof memoOverlay === 'function' ? memoOverlay() : memoOverlay);\n var getPopupContainer = props.getPopupContainer,\n _props$placement = props.placement,\n placement = _props$placement === void 0 ? 'top' : _props$placement,\n _props$mouseEnterDela = props.mouseEnterDelay,\n mouseEnterDelay = _props$mouseEnterDela === void 0 ? 0.1 : _props$mouseEnterDela,\n _props$mouseLeaveDela = props.mouseLeaveDelay,\n mouseLeaveDelay = _props$mouseLeaveDela === void 0 ? 0.1 : _props$mouseLeaveDela,\n overlayStyle = props.overlayStyle,\n rootClassName = props.rootClassName,\n otherProps = __rest(props, [\"getPopupContainer\", \"placement\", \"mouseEnterDelay\", \"mouseLeaveDelay\", \"overlayStyle\", \"rootClassName\"]);\n var prefixCls = getPrefixCls('tooltip', customizePrefixCls);\n var rootPrefixCls = getPrefixCls();\n var injectFromPopover = props['data-popover-inject'];\n var tempOpen = open;\n // Hide tooltip when there is no title\n if (!('open' in props) && !('visible' in props) && noTitle) {\n tempOpen = false;\n }\n // ============================= Render =============================\n var child = getDisabledCompatibleChildren(isValidElement(children) && !isFragment(children) ? children : /*#__PURE__*/React.createElement(\"span\", null, children), prefixCls);\n var childProps = child.props;\n var childCls = !childProps.className || typeof childProps.className === 'string' ? classNames(childProps.className, openClassName || \"\".concat(prefixCls, \"-open\")) : childProps.className;\n // Style\n var _useStyle = useStyle(prefixCls, !injectFromPopover),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n // Color\n var colorInfo = parseColor(prefixCls, color);\n var arrowContentStyle = colorInfo.arrowStyle;\n var formattedOverlayInnerStyle = Object.assign(Object.assign({}, overlayInnerStyle), colorInfo.overlayStyle);\n var customOverlayClassName = classNames(overlayClassName, _defineProperty({}, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), colorInfo.className, rootClassName, hashId);\n return wrapSSR( /*#__PURE__*/React.createElement(RcTooltip, Object.assign({}, otherProps, {\n showArrow: mergedShowArrow,\n placement: placement,\n mouseEnterDelay: mouseEnterDelay,\n mouseLeaveDelay: mouseLeaveDelay,\n prefixCls: prefixCls,\n overlayClassName: customOverlayClassName,\n overlayStyle: Object.assign(Object.assign({}, arrowContentStyle), overlayStyle),\n getTooltipContainer: getPopupContainer || getTooltipContainer || getContextPopupContainer,\n ref: tooltipRef,\n builtinPlacements: tooltipPlacements,\n overlay: memoOverlayWrapper,\n visible: tempOpen,\n onVisibleChange: onOpenChange,\n afterVisibleChange: afterOpenChange !== null && afterOpenChange !== void 0 ? afterOpenChange : afterVisibleChange,\n overlayInnerStyle: formattedOverlayInnerStyle,\n arrowContent: /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-arrow-content\")\n }),\n motion: {\n motionName: getTransitionName(rootPrefixCls, 'zoom-big-fast', props.transitionName),\n motionDeadline: 1000\n },\n destroyTooltipOnHide: !!destroyTooltipOnHide\n }), tempOpen ? cloneElement(child, {\n className: childCls\n }) : child));\n});\nif (process.env.NODE_ENV !== 'production') {\n Tooltip.displayName = 'Tooltip';\n}\nTooltip._InternalPanelDoNotUseOrYouWillBeFired = PurePanel;\nexport default Tooltip;","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport { presetPrimaryColors } from '@ant-design/colors';\nimport warning from '../_util/warning';\nexport function validProgress(progress) {\n if (!progress || progress < 0) {\n return 0;\n }\n if (progress > 100) {\n return 100;\n }\n return progress;\n}\nexport function getSuccessPercent(_ref) {\n var success = _ref.success,\n successPercent = _ref.successPercent;\n var percent = successPercent;\n /** @deprecated Use `percent` instead */\n if (success && 'progress' in success) {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Progress', '`success.progress` is deprecated. Please use `success.percent` instead.') : void 0;\n percent = success.progress;\n }\n if (success && 'percent' in success) {\n percent = success.percent;\n }\n return percent;\n}\nexport var getPercentage = function getPercentage(_ref2) {\n var percent = _ref2.percent,\n success = _ref2.success,\n successPercent = _ref2.successPercent;\n var realSuccessPercent = validProgress(getSuccessPercent({\n success: success,\n successPercent: successPercent\n }));\n return [realSuccessPercent, validProgress(validProgress(percent) - realSuccessPercent)];\n};\nexport var getStrokeColor = function getStrokeColor(_ref3) {\n var _ref3$success = _ref3.success,\n success = _ref3$success === void 0 ? {} : _ref3$success,\n strokeColor = _ref3.strokeColor;\n var successColor = success.strokeColor;\n return [successColor || presetPrimaryColors.green, strokeColor || null];\n};\nexport var getSize = function getSize(size, type, extra) {\n var _a, _b, _c, _d;\n var width = -1;\n var height = -1;\n if (type === 'step') {\n var steps = extra.steps;\n var strokeWidth = extra.strokeWidth;\n if (typeof size === 'string' || typeof size === 'undefined') {\n width = size === 'small' ? 2 : 14;\n height = strokeWidth !== null && strokeWidth !== void 0 ? strokeWidth : 8;\n } else if (typeof size === 'number') {\n width = size;\n height = size;\n } else {\n var _size = _slicedToArray(size, 2);\n var _size$ = _size[0];\n width = _size$ === void 0 ? 14 : _size$;\n var _size$2 = _size[1];\n height = _size$2 === void 0 ? 8 : _size$2;\n }\n width *= steps;\n } else if (type === 'line') {\n var _strokeWidth = extra === null || extra === void 0 ? void 0 : extra.strokeWidth;\n if (typeof size === 'string' || typeof size === 'undefined') {\n height = _strokeWidth || (size === 'small' ? 6 : 8);\n } else if (typeof size === 'number') {\n width = size;\n height = size;\n } else {\n var _size2 = _slicedToArray(size, 2);\n var _size2$ = _size2[0];\n width = _size2$ === void 0 ? -1 : _size2$;\n var _size2$2 = _size2[1];\n height = _size2$2 === void 0 ? 8 : _size2$2;\n }\n } else if (type === 'circle' || type === 'dashboard') {\n if (typeof size === 'string' || typeof size === 'undefined') {\n var _ref4 = size === 'small' ? [60, 60] : [120, 120];\n var _ref5 = _slicedToArray(_ref4, 2);\n width = _ref5[0];\n height = _ref5[1];\n } else if (typeof size === 'number') {\n width = size;\n height = size;\n } else {\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Progress', 'Type \"circle\" and \"dashbord\" do not accept array as `size`, please use number or preset size instead.') : void 0;\n }\n width = (_b = (_a = size[0]) !== null && _a !== void 0 ? _a : size[1]) !== null && _b !== void 0 ? _b : 120;\n height = (_d = (_c = size[0]) !== null && _c !== void 0 ? _c : size[1]) !== null && _d !== void 0 ? _d : 120;\n }\n }\n return [width, height];\n};","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport classNames from 'classnames';\nimport { Circle as RCCircle } from 'rc-progress';\nimport * as React from 'react';\nimport Tooltip from '../tooltip';\nimport { getPercentage, getSize, getStrokeColor } from './utils';\nvar CIRCLE_MIN_STROKE_WIDTH = 3;\nvar getMinPercent = function getMinPercent(width) {\n return CIRCLE_MIN_STROKE_WIDTH / width * 100;\n};\nvar Circle = function Circle(props) {\n var prefixCls = props.prefixCls,\n _props$trailColor = props.trailColor,\n trailColor = _props$trailColor === void 0 ? null : _props$trailColor,\n _props$strokeLinecap = props.strokeLinecap,\n strokeLinecap = _props$strokeLinecap === void 0 ? 'round' : _props$strokeLinecap,\n gapPosition = props.gapPosition,\n gapDegree = props.gapDegree,\n _props$width = props.width,\n originWidth = _props$width === void 0 ? 120 : _props$width,\n type = props.type,\n children = props.children,\n success = props.success,\n _props$size = props.size,\n size = _props$size === void 0 ? originWidth : _props$size;\n var _getSize = getSize(size, 'circle'),\n _getSize2 = _slicedToArray(_getSize, 2),\n width = _getSize2[0],\n height = _getSize2[1];\n var strokeWidth = props.strokeWidth;\n if (strokeWidth === undefined) {\n strokeWidth = Math.max(getMinPercent(width), 6);\n }\n var circleStyle = {\n width: width,\n height: height,\n fontSize: width * 0.15 + 6\n };\n var realGapDegree = React.useMemo(function () {\n // Support gapDeg = 0 when type = 'dashboard'\n if (gapDegree || gapDegree === 0) {\n return gapDegree;\n }\n if (type === 'dashboard') {\n return 75;\n }\n return undefined;\n }, [gapDegree, type]);\n var gapPos = gapPosition || type === 'dashboard' && 'bottom' || undefined;\n // using className to style stroke color\n var isGradient = Object.prototype.toString.call(props.strokeColor) === '[object Object]';\n var strokeColor = getStrokeColor({\n success: success,\n strokeColor: props.strokeColor\n });\n var wrapperClassName = classNames(\"\".concat(prefixCls, \"-inner\"), _defineProperty({}, \"\".concat(prefixCls, \"-circle-gradient\"), isGradient));\n var circleContent = /*#__PURE__*/React.createElement(RCCircle, {\n percent: getPercentage(props),\n strokeWidth: strokeWidth,\n trailWidth: strokeWidth,\n strokeColor: strokeColor,\n strokeLinecap: strokeLinecap,\n trailColor: trailColor,\n prefixCls: prefixCls,\n gapDegree: realGapDegree,\n gapPosition: gapPos\n });\n return /*#__PURE__*/React.createElement(\"div\", {\n className: wrapperClassName,\n style: circleStyle\n }, width <= 20 ? /*#__PURE__*/React.createElement(Tooltip, {\n title: children\n }, /*#__PURE__*/React.createElement(\"span\", null, circleContent)) : /*#__PURE__*/React.createElement(React.Fragment, null, circleContent, children));\n};\nexport default Circle;","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { presetPrimaryColors } from '@ant-design/colors';\nimport * as React from 'react';\nimport warning from '../_util/warning';\nimport { getSize, getSuccessPercent, validProgress } from './utils';\n/**\n * @example\n * {\n * \"0%\": \"#afc163\",\n * \"75%\": \"#009900\",\n * \"50%\": \"green\", // ====> '#afc163 0%, #66FF00 25%, #00CC00 50%, #009900 75%, #ffffff 100%'\n * \"25%\": \"#66FF00\",\n * \"100%\": \"#ffffff\"\n * }\n */\nexport var sortGradient = function sortGradient(gradients) {\n var tempArr = [];\n Object.keys(gradients).forEach(function (key) {\n var formattedKey = parseFloat(key.replace(/%/g, ''));\n if (!isNaN(formattedKey)) {\n tempArr.push({\n key: formattedKey,\n value: gradients[key]\n });\n }\n });\n tempArr = tempArr.sort(function (a, b) {\n return a.key - b.key;\n });\n return tempArr.map(function (_ref) {\n var key = _ref.key,\n value = _ref.value;\n return \"\".concat(value, \" \").concat(key, \"%\");\n }).join(', ');\n};\n/**\n * Then this man came to realize the truth: Besides six pence, there is the moon. Besides bread and\n * butter, there is the bug. And... Besides women, there is the code.\n *\n * @example\n * {\n * \"0%\": \"#afc163\",\n * \"25%\": \"#66FF00\",\n * \"50%\": \"#00CC00\", // ====> linear-gradient(to right, #afc163 0%, #66FF00 25%,\n * \"75%\": \"#009900\", // #00CC00 50%, #009900 75%, #ffffff 100%)\n * \"100%\": \"#ffffff\"\n * }\n */\nexport var handleGradient = function handleGradient(strokeColor, directionConfig) {\n var _strokeColor$from = strokeColor.from,\n from = _strokeColor$from === void 0 ? presetPrimaryColors.blue : _strokeColor$from,\n _strokeColor$to = strokeColor.to,\n to = _strokeColor$to === void 0 ? presetPrimaryColors.blue : _strokeColor$to,\n _strokeColor$directio = strokeColor.direction,\n direction = _strokeColor$directio === void 0 ? directionConfig === 'rtl' ? 'to left' : 'to right' : _strokeColor$directio,\n rest = __rest(strokeColor, [\"from\", \"to\", \"direction\"]);\n if (Object.keys(rest).length !== 0) {\n var sortedGradients = sortGradient(rest);\n return {\n backgroundImage: \"linear-gradient(\".concat(direction, \", \").concat(sortedGradients, \")\")\n };\n }\n return {\n backgroundImage: \"linear-gradient(\".concat(direction, \", \").concat(from, \", \").concat(to, \")\")\n };\n};\nvar Line = function Line(props) {\n var prefixCls = props.prefixCls,\n directionConfig = props.direction,\n percent = props.percent,\n size = props.size,\n strokeWidth = props.strokeWidth,\n strokeColor = props.strokeColor,\n _props$strokeLinecap = props.strokeLinecap,\n strokeLinecap = _props$strokeLinecap === void 0 ? 'round' : _props$strokeLinecap,\n children = props.children,\n _props$trailColor = props.trailColor,\n trailColor = _props$trailColor === void 0 ? null : _props$trailColor,\n success = props.success;\n var backgroundProps = strokeColor && typeof strokeColor !== 'string' ? handleGradient(strokeColor, directionConfig) : {\n backgroundColor: strokeColor\n };\n var borderRadius = strokeLinecap === 'square' || strokeLinecap === 'butt' ? 0 : undefined;\n var trailStyle = {\n backgroundColor: trailColor || undefined,\n borderRadius: borderRadius\n };\n var mergedSize = size !== null && size !== void 0 ? size : [-1, strokeWidth || (size === 'small' ? 6 : 8)];\n var _getSize = getSize(mergedSize, 'line', {\n strokeWidth: strokeWidth\n }),\n _getSize2 = _slicedToArray(_getSize, 2),\n width = _getSize2[0],\n height = _getSize2[1];\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? warning(!('strokeWidth' in props), 'Progress', '`strokeWidth` is deprecated. Please use `size` instead.') : void 0;\n }\n var percentStyle = Object.assign({\n width: \"\".concat(validProgress(percent), \"%\"),\n height: height,\n borderRadius: borderRadius\n }, backgroundProps);\n var successPercent = getSuccessPercent(props);\n var successPercentStyle = {\n width: \"\".concat(validProgress(successPercent), \"%\"),\n height: height,\n borderRadius: borderRadius,\n backgroundColor: success === null || success === void 0 ? void 0 : success.strokeColor\n };\n var outerStyle = {\n width: width < 0 ? '100%' : width,\n height: height\n };\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-outer\"),\n style: outerStyle\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-inner\"),\n style: trailStyle\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-bg\"),\n style: percentStyle\n }), successPercent !== undefined ? /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-success-bg\"),\n style: successPercentStyle\n }) : null)), children);\n};\nexport default Line;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { getSize } from './utils';\nvar Steps = function Steps(props) {\n var size = props.size,\n steps = props.steps,\n _props$percent = props.percent,\n percent = _props$percent === void 0 ? 0 : _props$percent,\n _props$strokeWidth = props.strokeWidth,\n strokeWidth = _props$strokeWidth === void 0 ? 8 : _props$strokeWidth,\n strokeColor = props.strokeColor,\n _props$trailColor = props.trailColor,\n trailColor = _props$trailColor === void 0 ? null : _props$trailColor,\n prefixCls = props.prefixCls,\n children = props.children;\n var current = Math.round(steps * (percent / 100));\n var stepWidth = size === 'small' ? 2 : 14;\n var mergedSize = size !== null && size !== void 0 ? size : [stepWidth, strokeWidth];\n var _getSize = getSize(mergedSize, 'step', {\n steps: steps,\n strokeWidth: strokeWidth\n }),\n _getSize2 = _slicedToArray(_getSize, 2),\n width = _getSize2[0],\n height = _getSize2[1];\n var unitWidth = width / steps;\n var styledSteps = new Array(steps);\n for (var i = 0; i < steps; i++) {\n var color = Array.isArray(strokeColor) ? strokeColor[i] : strokeColor;\n styledSteps[i] = /*#__PURE__*/React.createElement(\"div\", {\n key: i,\n className: classNames(\"\".concat(prefixCls, \"-steps-item\"), _defineProperty({}, \"\".concat(prefixCls, \"-steps-item-active\"), i <= current - 1)),\n style: {\n backgroundColor: i <= current - 1 ? color : trailColor,\n width: unitWidth,\n height: height\n }\n });\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-steps-outer\")\n }, styledSteps, children);\n};\nexport default Steps;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { Keyframes } from '@ant-design/cssinjs';\nimport { resetComponent } from '../../style';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nvar genAntProgressActive = function genAntProgressActive(isRtl) {\n var direction = isRtl ? '100%' : '-100%';\n return new Keyframes(\"antProgress\".concat(isRtl ? 'RTL' : 'LTR', \"Active\"), {\n '0%': {\n transform: \"translateX(\".concat(direction, \") scaleX(0)\"),\n opacity: 0.1\n },\n '20%': {\n transform: \"translateX(\".concat(direction, \") scaleX(0)\"),\n opacity: 0.5\n },\n to: {\n transform: 'translateX(0) scaleX(1)',\n opacity: 0\n }\n });\n};\nvar genBaseStyle = function genBaseStyle(token) {\n var _$concat4, _$concat5, _Object$assign;\n var progressCls = token.componentCls,\n iconPrefixCls = token.iconCls;\n return _defineProperty({}, progressCls, Object.assign(Object.assign({}, resetComponent(token)), (_Object$assign = {\n display: 'inline-block',\n '&-rtl': {\n direction: 'rtl'\n },\n '&-line': {\n position: 'relative',\n width: '100%',\n fontSize: token.fontSize,\n marginInlineEnd: token.marginXS,\n marginBottom: token.marginXS\n }\n }, _defineProperty(_Object$assign, \"\".concat(progressCls, \"-outer\"), {\n display: 'inline-block',\n width: '100%'\n }), _defineProperty(_Object$assign, \"&\".concat(progressCls, \"-show-info\"), _defineProperty({}, \"\".concat(progressCls, \"-outer\"), {\n marginInlineEnd: \"calc(-2em - \".concat(token.marginXS, \"px)\"),\n paddingInlineEnd: \"calc(2em + \".concat(token.paddingXS, \"px)\")\n })), _defineProperty(_Object$assign, \"\".concat(progressCls, \"-inner\"), {\n position: 'relative',\n display: 'inline-block',\n width: '100%',\n overflow: 'hidden',\n verticalAlign: 'middle',\n backgroundColor: token.progressRemainingColor,\n borderRadius: token.progressLineRadius\n }), _defineProperty(_Object$assign, \"\".concat(progressCls, \"-inner:not(\").concat(progressCls, \"-circle-gradient)\"), _defineProperty({}, \"\".concat(progressCls, \"-circle-path\"), {\n stroke: token.colorInfo\n })), _defineProperty(_Object$assign, \"\".concat(progressCls, \"-success-bg, \").concat(progressCls, \"-bg\"), {\n position: 'relative',\n backgroundColor: token.colorInfo,\n borderRadius: token.progressLineRadius,\n transition: \"all \".concat(token.motionDurationSlow, \" \").concat(token.motionEaseInOutCirc)\n }), _defineProperty(_Object$assign, \"\".concat(progressCls, \"-success-bg\"), {\n position: 'absolute',\n insetBlockStart: 0,\n insetInlineStart: 0,\n backgroundColor: token.colorSuccess\n }), _defineProperty(_Object$assign, \"\".concat(progressCls, \"-text\"), _defineProperty({\n display: 'inline-block',\n width: '2em',\n marginInlineStart: token.marginXS,\n color: token.progressInfoTextColor,\n lineHeight: 1,\n whiteSpace: 'nowrap',\n textAlign: 'start',\n verticalAlign: 'middle',\n wordBreak: 'normal'\n }, iconPrefixCls, {\n fontSize: token.fontSize\n })), _defineProperty(_Object$assign, \"&\".concat(progressCls, \"-status-active\"), _defineProperty({}, \"\".concat(progressCls, \"-bg::before\"), {\n position: 'absolute',\n inset: 0,\n backgroundColor: token.colorBgContainer,\n borderRadius: token.progressLineRadius,\n opacity: 0,\n animationName: genAntProgressActive(),\n animationDuration: token.progressActiveMotionDuration,\n animationTimingFunction: token.motionEaseOutQuint,\n animationIterationCount: 'infinite',\n content: '\"\"'\n })), _defineProperty(_Object$assign, \"&\".concat(progressCls, \"-rtl\").concat(progressCls, \"-status-active\"), _defineProperty({}, \"\".concat(progressCls, \"-bg::before\"), {\n animationName: genAntProgressActive(true)\n })), _defineProperty(_Object$assign, \"&\".concat(progressCls, \"-status-exception\"), (_$concat4 = {}, _defineProperty(_$concat4, \"\".concat(progressCls, \"-bg\"), {\n backgroundColor: token.colorError\n }), _defineProperty(_$concat4, \"\".concat(progressCls, \"-text\"), {\n color: token.colorError\n }), _$concat4)), _defineProperty(_Object$assign, \"&\".concat(progressCls, \"-status-exception \").concat(progressCls, \"-inner:not(\").concat(progressCls, \"-circle-gradient)\"), _defineProperty({}, \"\".concat(progressCls, \"-circle-path\"), {\n stroke: token.colorError\n })), _defineProperty(_Object$assign, \"&\".concat(progressCls, \"-status-success\"), (_$concat5 = {}, _defineProperty(_$concat5, \"\".concat(progressCls, \"-bg\"), {\n backgroundColor: token.colorSuccess\n }), _defineProperty(_$concat5, \"\".concat(progressCls, \"-text\"), {\n color: token.colorSuccess\n }), _$concat5)), _defineProperty(_Object$assign, \"&\".concat(progressCls, \"-status-success \").concat(progressCls, \"-inner:not(\").concat(progressCls, \"-circle-gradient)\"), _defineProperty({}, \"\".concat(progressCls, \"-circle-path\"), {\n stroke: token.colorSuccess\n })), _Object$assign)));\n};\nvar genCircleStyle = function genCircleStyle(token) {\n var _progressCls, _ref2;\n var progressCls = token.componentCls,\n iconPrefixCls = token.iconCls;\n return _ref2 = {}, _defineProperty(_ref2, progressCls, (_progressCls = {}, _defineProperty(_progressCls, \"\".concat(progressCls, \"-circle-trail\"), {\n stroke: token.progressRemainingColor\n }), _defineProperty(_progressCls, \"&\".concat(progressCls, \"-circle \").concat(progressCls, \"-inner\"), {\n position: 'relative',\n lineHeight: 1,\n backgroundColor: 'transparent'\n }), _defineProperty(_progressCls, \"&\".concat(progressCls, \"-circle \").concat(progressCls, \"-text\"), _defineProperty({\n position: 'absolute',\n insetBlockStart: '50%',\n insetInlineStart: 0,\n width: '100%',\n margin: 0,\n padding: 0,\n color: token.colorText,\n lineHeight: 1,\n whiteSpace: 'normal',\n textAlign: 'center',\n transform: 'translateY(-50%)'\n }, iconPrefixCls, {\n fontSize: \"\".concat(token.fontSize / token.fontSizeSM, \"em\")\n })), _defineProperty(_progressCls, \"\".concat(progressCls, \"-circle&-status-exception\"), _defineProperty({}, \"\".concat(progressCls, \"-text\"), {\n color: token.colorError\n })), _defineProperty(_progressCls, \"\".concat(progressCls, \"-circle&-status-success\"), _defineProperty({}, \"\".concat(progressCls, \"-text\"), {\n color: token.colorSuccess\n })), _progressCls)), _defineProperty(_ref2, \"\".concat(progressCls, \"-inline-circle\"), _defineProperty({\n lineHeight: 1\n }, \"\".concat(progressCls, \"-inner\"), {\n verticalAlign: 'bottom'\n })), _ref2;\n};\nvar genStepStyle = function genStepStyle(token) {\n var progressCls = token.componentCls;\n return _defineProperty({}, progressCls, _defineProperty({}, \"\".concat(progressCls, \"-steps\"), {\n display: 'inline-block',\n '&-outer': {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center'\n },\n '&-item': {\n flexShrink: 0,\n minWidth: token.progressStepMinWidth,\n marginInlineEnd: token.progressStepMarginInlineEnd,\n backgroundColor: token.progressRemainingColor,\n transition: \"all \".concat(token.motionDurationSlow),\n '&-active': {\n backgroundColor: token.colorInfo\n }\n }\n }));\n};\nvar genSmallLine = function genSmallLine(token) {\n var progressCls = token.componentCls,\n iconPrefixCls = token.iconCls;\n return _defineProperty({}, progressCls, _defineProperty({}, \"\".concat(progressCls, \"-small&-line, \").concat(progressCls, \"-small&-line \").concat(progressCls, \"-text \").concat(iconPrefixCls), {\n fontSize: token.fontSizeSM\n }));\n};\nexport default genComponentStyleHook('Progress', function (token) {\n var progressStepMarginInlineEnd = token.marginXXS / 2;\n var progressToken = mergeToken(token, {\n progressLineRadius: 100,\n progressInfoTextColor: token.colorText,\n progressDefaultColor: token.colorInfo,\n progressRemainingColor: token.colorFillSecondary,\n progressStepMarginInlineEnd: progressStepMarginInlineEnd,\n progressStepMinWidth: progressStepMarginInlineEnd,\n progressActiveMotionDuration: '2.4s'\n });\n return [genBaseStyle(progressToken), genCircleStyle(progressToken), genStepStyle(progressToken), genSmallLine(progressToken)];\n});","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport CheckCircleFilled from \"@ant-design/icons/es/icons/CheckCircleFilled\";\nimport CheckOutlined from \"@ant-design/icons/es/icons/CheckOutlined\";\nimport CloseCircleFilled from \"@ant-design/icons/es/icons/CloseCircleFilled\";\nimport CloseOutlined from \"@ant-design/icons/es/icons/CloseOutlined\";\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport warning from '../_util/warning';\nimport { ConfigContext } from '../config-provider';\nimport Circle from './Circle';\nimport Line from './Line';\nimport Steps from './Steps';\nimport useStyle from './style';\nimport { getSize, getSuccessPercent, validProgress } from './utils';\nexport var ProgressTypes = ['line', 'circle', 'dashboard'];\nvar ProgressStatuses = ['normal', 'exception', 'active', 'success'];\nvar Progress = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _classNames;\n var customizePrefixCls = props.prefixCls,\n className = props.className,\n rootClassName = props.rootClassName,\n steps = props.steps,\n strokeColor = props.strokeColor,\n _props$percent = props.percent,\n percent = _props$percent === void 0 ? 0 : _props$percent,\n _props$size = props.size,\n size = _props$size === void 0 ? 'default' : _props$size,\n _props$showInfo = props.showInfo,\n showInfo = _props$showInfo === void 0 ? true : _props$showInfo,\n _props$type = props.type,\n type = _props$type === void 0 ? 'line' : _props$type,\n status = props.status,\n format = props.format,\n style = props.style,\n restProps = __rest(props, [\"prefixCls\", \"className\", \"rootClassName\", \"steps\", \"strokeColor\", \"percent\", \"size\", \"showInfo\", \"type\", \"status\", \"format\", \"style\"]);\n var percentNumber = React.useMemo(function () {\n var _a, _b;\n var successPercent = getSuccessPercent(props);\n return parseInt(successPercent !== undefined ? (_a = successPercent !== null && successPercent !== void 0 ? successPercent : 0) === null || _a === void 0 ? void 0 : _a.toString() : (_b = percent !== null && percent !== void 0 ? percent : 0) === null || _b === void 0 ? void 0 : _b.toString(), 10);\n }, [percent, props.success, props.successPercent]);\n var progressStatus = React.useMemo(function () {\n if (!ProgressStatuses.includes(status) && percentNumber >= 100) {\n return 'success';\n }\n return status || 'normal';\n }, [status, percentNumber]);\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction,\n progressStyle = _React$useContext.progress;\n var prefixCls = getPrefixCls('progress', customizePrefixCls);\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n var progressInfo = React.useMemo(function () {\n if (!showInfo) {\n return null;\n }\n var successPercent = getSuccessPercent(props);\n var text;\n var textFormatter = format || function (number) {\n return \"\".concat(number, \"%\");\n };\n var isLineType = type === 'line';\n if (format || progressStatus !== 'exception' && progressStatus !== 'success') {\n text = textFormatter(validProgress(percent), validProgress(successPercent));\n } else if (progressStatus === 'exception') {\n text = isLineType ? /*#__PURE__*/React.createElement(CloseCircleFilled, null) : /*#__PURE__*/React.createElement(CloseOutlined, null);\n } else if (progressStatus === 'success') {\n text = isLineType ? /*#__PURE__*/React.createElement(CheckCircleFilled, null) : /*#__PURE__*/React.createElement(CheckOutlined, null);\n }\n return /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-text\"),\n title: typeof text === 'string' ? text : undefined\n }, text);\n }, [showInfo, percent, percentNumber, progressStatus, type, prefixCls, format]);\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? warning(!('successPercent' in props), 'Progress', '`successPercent` is deprecated. Please use `success.percent` instead.') : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!('width' in props), 'Progress', '`width` is deprecated. Please use `size` instead.') : void 0;\n }\n var strokeColorNotArray = Array.isArray(strokeColor) ? strokeColor[0] : strokeColor;\n var strokeColorNotGradient = typeof strokeColor === 'string' || Array.isArray(strokeColor) ? strokeColor : undefined;\n var progress;\n // Render progress shape\n if (type === 'line') {\n progress = steps ? /*#__PURE__*/React.createElement(Steps, Object.assign({}, props, {\n strokeColor: strokeColorNotGradient,\n prefixCls: prefixCls,\n steps: steps\n }), progressInfo) : /*#__PURE__*/React.createElement(Line, Object.assign({}, props, {\n strokeColor: strokeColorNotArray,\n prefixCls: prefixCls,\n direction: direction\n }), progressInfo);\n } else if (type === 'circle' || type === 'dashboard') {\n progress = /*#__PURE__*/React.createElement(Circle, Object.assign({}, props, {\n strokeColor: strokeColorNotArray,\n prefixCls: prefixCls,\n progressStatus: progressStatus\n }), progressInfo);\n }\n var classString = classNames(prefixCls, \"\".concat(prefixCls, \"-status-\").concat(progressStatus), \"\".concat(prefixCls, \"-\").concat(type === 'dashboard' && 'circle' || steps && 'steps' || type), (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-inline-circle\"), type === 'circle' && getSize(size, 'circle')[0] <= 20), _defineProperty(_classNames, \"\".concat(prefixCls, \"-show-info\"), showInfo), _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(size), typeof size === 'string'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _classNames), progressStyle === null || progressStyle === void 0 ? void 0 : progressStyle.className, className, rootClassName, hashId);\n return wrapSSR( /*#__PURE__*/React.createElement(\"div\", Object.assign({\n ref: ref,\n style: Object.assign(Object.assign({}, progressStyle === null || progressStyle === void 0 ? void 0 : progressStyle.style), style),\n className: classString,\n role: \"progressbar\",\n \"aria-valuenow\": percentNumber\n }, omit(restProps, ['trailColor', 'strokeWidth', 'width', 'gapDegree', 'gapPosition', 'strokeLinecap', 'success', 'successPercent'])), progress));\n});\nif (process.env.NODE_ENV !== 'production') {\n Progress.displayName = 'Progress';\n}\nexport default Progress;","'use client';\n\nimport Progress from './progress';\nexport default Progress;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport DeleteOutlined from \"@ant-design/icons/es/icons/DeleteOutlined\";\nimport DownloadOutlined from \"@ant-design/icons/es/icons/DownloadOutlined\";\nimport EyeOutlined from \"@ant-design/icons/es/icons/EyeOutlined\";\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport * as React from 'react';\nimport { ConfigContext } from '../../config-provider';\nimport Progress from '../../progress';\nimport Tooltip from '../../tooltip';\nvar ListItem = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var prefixCls = _ref.prefixCls,\n className = _ref.className,\n style = _ref.style,\n locale = _ref.locale,\n listType = _ref.listType,\n file = _ref.file,\n items = _ref.items,\n progressProps = _ref.progress,\n iconRender = _ref.iconRender,\n actionIconRender = _ref.actionIconRender,\n itemRender = _ref.itemRender,\n isImgUrl = _ref.isImgUrl,\n showPreviewIcon = _ref.showPreviewIcon,\n showRemoveIcon = _ref.showRemoveIcon,\n showDownloadIcon = _ref.showDownloadIcon,\n customPreviewIcon = _ref.previewIcon,\n customRemoveIcon = _ref.removeIcon,\n customDownloadIcon = _ref.downloadIcon,\n onPreview = _ref.onPreview,\n onDownload = _ref.onDownload,\n onClose = _ref.onClose;\n var _a, _b;\n // Status: which will ignore `removed` status\n var status = file.status;\n var _React$useState = React.useState(status),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n mergedStatus = _React$useState2[0],\n setMergedStatus = _React$useState2[1];\n React.useEffect(function () {\n if (status !== 'removed') {\n setMergedStatus(status);\n }\n }, [status]);\n // Delay to show the progress bar\n var _React$useState3 = React.useState(false),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n showProgress = _React$useState4[0],\n setShowProgress = _React$useState4[1];\n React.useEffect(function () {\n var timer = setTimeout(function () {\n setShowProgress(true);\n }, 300);\n return function () {\n clearTimeout(timer);\n };\n }, []);\n var iconNode = iconRender(file);\n var icon = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-icon\")\n }, iconNode);\n if (listType === 'picture' || listType === 'picture-card' || listType === 'picture-circle') {\n if (mergedStatus === 'uploading' || !file.thumbUrl && !file.url) {\n var uploadingClassName = classNames(\"\".concat(prefixCls, \"-list-item-thumbnail\"), _defineProperty({}, \"\".concat(prefixCls, \"-list-item-file\"), mergedStatus !== 'uploading'));\n icon = /*#__PURE__*/React.createElement(\"div\", {\n className: uploadingClassName\n }, iconNode);\n } else {\n var thumbnail = (isImgUrl === null || isImgUrl === void 0 ? void 0 : isImgUrl(file)) ? /*#__PURE__*/React.createElement(\"img\", {\n src: file.thumbUrl || file.url,\n alt: file.name,\n className: \"\".concat(prefixCls, \"-list-item-image\"),\n crossOrigin: file.crossOrigin\n }) : iconNode;\n var aClassName = classNames(\"\".concat(prefixCls, \"-list-item-thumbnail\"), _defineProperty({}, \"\".concat(prefixCls, \"-list-item-file\"), isImgUrl && !isImgUrl(file)));\n icon = /*#__PURE__*/React.createElement(\"a\", {\n className: aClassName,\n onClick: function onClick(e) {\n return onPreview(file, e);\n },\n href: file.url || file.thumbUrl,\n target: \"_blank\",\n rel: \"noopener noreferrer\"\n }, thumbnail);\n }\n }\n var listItemClassName = classNames(\"\".concat(prefixCls, \"-list-item\"), \"\".concat(prefixCls, \"-list-item-\").concat(mergedStatus));\n var linkProps = typeof file.linkProps === 'string' ? JSON.parse(file.linkProps) : file.linkProps;\n var removeIcon = showRemoveIcon ? actionIconRender((typeof customRemoveIcon === 'function' ? customRemoveIcon(file) : customRemoveIcon) || /*#__PURE__*/React.createElement(DeleteOutlined, null), function () {\n return onClose(file);\n }, prefixCls, locale.removeFile) : null;\n var downloadIcon = showDownloadIcon && mergedStatus === 'done' ? actionIconRender((typeof customDownloadIcon === 'function' ? customDownloadIcon(file) : customDownloadIcon) || /*#__PURE__*/React.createElement(DownloadOutlined, null), function () {\n return onDownload(file);\n }, prefixCls, locale.downloadFile) : null;\n var downloadOrDelete = listType !== 'picture-card' && listType !== 'picture-circle' && /*#__PURE__*/React.createElement(\"span\", {\n key: \"download-delete\",\n className: classNames(\"\".concat(prefixCls, \"-list-item-actions\"), {\n picture: listType === 'picture'\n })\n }, downloadIcon, removeIcon);\n var listItemNameClass = classNames(\"\".concat(prefixCls, \"-list-item-name\"));\n var fileName = file.url ? [/*#__PURE__*/React.createElement(\"a\", Object.assign({\n key: \"view\",\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n className: listItemNameClass,\n title: file.name\n }, linkProps, {\n href: file.url,\n onClick: function onClick(e) {\n return onPreview(file, e);\n }\n }), file.name), downloadOrDelete] : [/*#__PURE__*/React.createElement(\"span\", {\n key: \"view\",\n className: listItemNameClass,\n onClick: function onClick(e) {\n return onPreview(file, e);\n },\n title: file.name\n }, file.name), downloadOrDelete];\n var previewStyle = {\n pointerEvents: 'none',\n opacity: 0.5\n };\n var previewIcon = showPreviewIcon ? /*#__PURE__*/React.createElement(\"a\", {\n href: file.url || file.thumbUrl,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n style: file.url || file.thumbUrl ? undefined : previewStyle,\n onClick: function onClick(e) {\n return onPreview(file, e);\n },\n title: locale.previewFile\n }, typeof customPreviewIcon === 'function' ? customPreviewIcon(file) : customPreviewIcon || /*#__PURE__*/React.createElement(EyeOutlined, null)) : null;\n var pictureCardActions = (listType === 'picture-card' || listType === 'picture-circle') && mergedStatus !== 'uploading' && /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-list-item-actions\")\n }, previewIcon, mergedStatus === 'done' && downloadIcon, removeIcon);\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls;\n var rootPrefixCls = getPrefixCls();\n var dom = /*#__PURE__*/React.createElement(\"div\", {\n className: listItemClassName\n }, icon, fileName, pictureCardActions, showProgress && /*#__PURE__*/React.createElement(CSSMotion, {\n motionName: \"\".concat(rootPrefixCls, \"-fade\"),\n visible: mergedStatus === 'uploading',\n motionDeadline: 2000\n }, function (_ref2) {\n var motionClassName = _ref2.className;\n // show loading icon if upload progress listener is disabled\n var loadingProgress = 'percent' in file ? /*#__PURE__*/React.createElement(Progress, Object.assign({}, progressProps, {\n type: \"line\",\n percent: file.percent,\n \"aria-label\": file['aria-label'],\n \"aria-labelledby\": file['aria-labelledby']\n })) : null;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-list-item-progress\"), motionClassName)\n }, loadingProgress);\n }));\n var message = file.response && typeof file.response === 'string' ? file.response : ((_a = file.error) === null || _a === void 0 ? void 0 : _a.statusText) || ((_b = file.error) === null || _b === void 0 ? void 0 : _b.message) || locale.uploadError;\n var item = mergedStatus === 'error' ? /*#__PURE__*/React.createElement(Tooltip, {\n title: message,\n getPopupContainer: function getPopupContainer(node) {\n return node.parentNode;\n }\n }, dom) : dom;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-list-item-container\"), className),\n style: style,\n ref: ref\n }, itemRender ? itemRender(item, file, items, {\n download: onDownload.bind(null, file),\n preview: onPreview.bind(null, file),\n remove: onClose.bind(null, file)\n }) : item);\n});\nexport default ListItem;","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport FileTwoTone from \"@ant-design/icons/es/icons/FileTwoTone\";\nimport LoadingOutlined from \"@ant-design/icons/es/icons/LoadingOutlined\";\nimport PaperClipOutlined from \"@ant-design/icons/es/icons/PaperClipOutlined\";\nimport PictureTwoTone from \"@ant-design/icons/es/icons/PictureTwoTone\";\nimport classNames from 'classnames';\nimport CSSMotion, { CSSMotionList } from 'rc-motion';\nimport * as React from 'react';\nimport useForceUpdate from '../../_util/hooks/useForceUpdate';\nimport initCollapseMotion from '../../_util/motion';\nimport { cloneElement, isValidElement } from '../../_util/reactNode';\nimport Button from '../../button';\nimport { ConfigContext } from '../../config-provider';\nimport { isImageUrl, previewImage } from '../utils';\nimport ListItem from './ListItem';\nvar InternalUploadList = function InternalUploadList(props, ref) {\n var _props$listType = props.listType,\n listType = _props$listType === void 0 ? 'text' : _props$listType,\n _props$previewFile = props.previewFile,\n previewFile = _props$previewFile === void 0 ? previewImage : _props$previewFile,\n onPreview = props.onPreview,\n onDownload = props.onDownload,\n onRemove = props.onRemove,\n locale = props.locale,\n iconRender = props.iconRender,\n _props$isImageUrl = props.isImageUrl,\n isImgUrl = _props$isImageUrl === void 0 ? isImageUrl : _props$isImageUrl,\n customizePrefixCls = props.prefixCls,\n _props$items = props.items,\n items = _props$items === void 0 ? [] : _props$items,\n _props$showPreviewIco = props.showPreviewIcon,\n showPreviewIcon = _props$showPreviewIco === void 0 ? true : _props$showPreviewIco,\n _props$showRemoveIcon = props.showRemoveIcon,\n showRemoveIcon = _props$showRemoveIcon === void 0 ? true : _props$showRemoveIcon,\n _props$showDownloadIc = props.showDownloadIcon,\n showDownloadIcon = _props$showDownloadIc === void 0 ? false : _props$showDownloadIc,\n removeIcon = props.removeIcon,\n previewIcon = props.previewIcon,\n downloadIcon = props.downloadIcon,\n _props$progress = props.progress,\n progress = _props$progress === void 0 ? {\n size: [-1, 2],\n showInfo: false\n } : _props$progress,\n appendAction = props.appendAction,\n _props$appendActionVi = props.appendActionVisible,\n appendActionVisible = _props$appendActionVi === void 0 ? true : _props$appendActionVi,\n itemRender = props.itemRender,\n disabled = props.disabled;\n var forceUpdate = useForceUpdate();\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n motionAppear = _React$useState2[0],\n setMotionAppear = _React$useState2[1];\n // ============================= Effect =============================\n React.useEffect(function () {\n if (listType !== 'picture' && listType !== 'picture-card' && listType !== 'picture-circle') {\n return;\n }\n (items || []).forEach(function (file) {\n if (typeof document === 'undefined' || typeof window === 'undefined' || !window.FileReader || !window.File || !(file.originFileObj instanceof File || file.originFileObj instanceof Blob) || file.thumbUrl !== undefined) {\n return;\n }\n file.thumbUrl = '';\n if (previewFile) {\n previewFile(file.originFileObj).then(function (previewDataUrl) {\n // Need append '' to avoid dead loop\n file.thumbUrl = previewDataUrl || '';\n forceUpdate();\n });\n }\n });\n }, [listType, items, previewFile]);\n React.useEffect(function () {\n setMotionAppear(true);\n }, []);\n // ============================= Events =============================\n var onInternalPreview = function onInternalPreview(file, e) {\n if (!onPreview) {\n return;\n }\n e === null || e === void 0 ? void 0 : e.preventDefault();\n return onPreview(file);\n };\n var onInternalDownload = function onInternalDownload(file) {\n if (typeof onDownload === 'function') {\n onDownload(file);\n } else if (file.url) {\n window.open(file.url);\n }\n };\n var onInternalClose = function onInternalClose(file) {\n onRemove === null || onRemove === void 0 ? void 0 : onRemove(file);\n };\n var internalIconRender = function internalIconRender(file) {\n if (iconRender) {\n return iconRender(file, listType);\n }\n var isLoading = file.status === 'uploading';\n var fileIcon = isImgUrl && isImgUrl(file) ? /*#__PURE__*/React.createElement(PictureTwoTone, null) : /*#__PURE__*/React.createElement(FileTwoTone, null);\n var icon = isLoading ? /*#__PURE__*/React.createElement(LoadingOutlined, null) : /*#__PURE__*/React.createElement(PaperClipOutlined, null);\n if (listType === 'picture') {\n icon = isLoading ? /*#__PURE__*/React.createElement(LoadingOutlined, null) : fileIcon;\n } else if (listType === 'picture-card' || listType === 'picture-circle') {\n icon = isLoading ? locale.uploading : fileIcon;\n }\n return icon;\n };\n var actionIconRender = function actionIconRender(customIcon, callback, prefixCls, title) {\n var btnProps = {\n type: 'text',\n size: 'small',\n title: title,\n onClick: function onClick(e) {\n callback();\n if (isValidElement(customIcon) && customIcon.props.onClick) {\n customIcon.props.onClick(e);\n }\n },\n className: \"\".concat(prefixCls, \"-list-item-action\"),\n disabled: disabled\n };\n if (isValidElement(customIcon)) {\n var btnIcon = cloneElement(customIcon, Object.assign(Object.assign({}, customIcon.props), {\n onClick: function onClick() {}\n }));\n return /*#__PURE__*/React.createElement(Button, Object.assign({}, btnProps, {\n icon: btnIcon\n }));\n }\n return /*#__PURE__*/React.createElement(Button, Object.assign({}, btnProps), /*#__PURE__*/React.createElement(\"span\", null, customIcon));\n };\n // ============================== Ref ===============================\n // Test needs\n React.useImperativeHandle(ref, function () {\n return {\n handlePreview: onInternalPreview,\n handleDownload: onInternalDownload\n };\n });\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls;\n // ============================= Render =============================\n var prefixCls = getPrefixCls('upload', customizePrefixCls);\n var rootPrefixCls = getPrefixCls();\n var listClassNames = classNames(\"\".concat(prefixCls, \"-list\"), \"\".concat(prefixCls, \"-list-\").concat(listType));\n // >>> Motion config\n var motionKeyList = _toConsumableArray(items.map(function (file) {\n return {\n key: file.uid,\n file: file\n };\n }));\n var animationDirection = listType === 'picture-card' || listType === 'picture-circle' ? 'animate-inline' : 'animate';\n // const transitionName = list.length === 0 ? '' : `${prefixCls}-${animationDirection}`;\n var motionConfig = {\n motionDeadline: 2000,\n motionName: \"\".concat(prefixCls, \"-\").concat(animationDirection),\n keys: motionKeyList,\n motionAppear: motionAppear\n };\n var listItemMotion = React.useMemo(function () {\n var motion = Object.assign({}, initCollapseMotion(rootPrefixCls));\n delete motion.onAppearEnd;\n delete motion.onEnterEnd;\n delete motion.onLeaveEnd;\n return motion;\n }, [rootPrefixCls]);\n if (listType !== 'picture-card' && listType !== 'picture-circle') {\n motionConfig = Object.assign(Object.assign({}, listItemMotion), motionConfig);\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n className: listClassNames\n }, /*#__PURE__*/React.createElement(CSSMotionList, Object.assign({}, motionConfig, {\n component: false\n }), function (_ref) {\n var key = _ref.key,\n file = _ref.file,\n motionClassName = _ref.className,\n motionStyle = _ref.style;\n return /*#__PURE__*/React.createElement(ListItem, {\n key: key,\n locale: locale,\n prefixCls: prefixCls,\n className: motionClassName,\n style: motionStyle,\n file: file,\n items: items,\n progress: progress,\n listType: listType,\n isImgUrl: isImgUrl,\n showPreviewIcon: showPreviewIcon,\n showRemoveIcon: showRemoveIcon,\n showDownloadIcon: showDownloadIcon,\n removeIcon: removeIcon,\n previewIcon: previewIcon,\n downloadIcon: downloadIcon,\n iconRender: internalIconRender,\n actionIconRender: actionIconRender,\n itemRender: itemRender,\n onPreview: onInternalPreview,\n onDownload: onInternalDownload,\n onClose: onInternalClose\n });\n }), appendAction && /*#__PURE__*/React.createElement(CSSMotion, Object.assign({}, motionConfig, {\n visible: appendActionVisible,\n forceRender: true\n }), function (_ref2) {\n var motionClassName = _ref2.className,\n motionStyle = _ref2.style;\n return cloneElement(appendAction, function (oriProps) {\n return {\n className: classNames(oriProps.className, motionClassName),\n style: Object.assign(Object.assign(Object.assign({}, motionStyle), {\n // prevent the element has hover css pseudo-class that may cause animation to end prematurely.\n pointerEvents: motionClassName ? 'none' : undefined\n }), oriProps.style)\n };\n });\n }));\n};\nvar UploadList = /*#__PURE__*/React.forwardRef(InternalUploadList);\nif (process.env.NODE_ENV !== 'production') {\n UploadList.displayName = 'UploadList';\n}\nexport default UploadList;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nvar genDraggerStyle = function genDraggerStyle(token) {\n var _$concat2;\n var componentCls = token.componentCls,\n iconCls = token.iconCls;\n return _defineProperty({}, \"\".concat(componentCls, \"-wrapper\"), _defineProperty({}, \"\".concat(componentCls, \"-drag\"), (_$concat2 = {\n position: 'relative',\n width: '100%',\n height: '100%',\n textAlign: 'center',\n background: token.colorFillAlter,\n border: \"\".concat(token.lineWidth, \"px dashed \").concat(token.colorBorder),\n borderRadius: token.borderRadiusLG,\n cursor: 'pointer',\n transition: \"border-color \".concat(token.motionDurationSlow)\n }, _defineProperty(_$concat2, componentCls, {\n padding: \"\".concat(token.padding, \"px 0\")\n }), _defineProperty(_$concat2, \"\".concat(componentCls, \"-btn\"), {\n display: 'table',\n width: '100%',\n height: '100%',\n outline: 'none'\n }), _defineProperty(_$concat2, \"\".concat(componentCls, \"-drag-container\"), {\n display: 'table-cell',\n verticalAlign: 'middle'\n }), _defineProperty(_$concat2, \"&:not(\".concat(componentCls, \"-disabled):hover\"), {\n borderColor: token.colorPrimaryHover\n }), _defineProperty(_$concat2, \"p\".concat(componentCls, \"-drag-icon\"), _defineProperty({\n marginBottom: token.margin\n }, iconCls, {\n color: token.colorPrimary,\n fontSize: token.uploadThumbnailSize\n })), _defineProperty(_$concat2, \"p\".concat(componentCls, \"-text\"), {\n margin: \"0 0 \".concat(token.marginXXS, \"px\"),\n color: token.colorTextHeading,\n fontSize: token.fontSizeLG\n }), _defineProperty(_$concat2, \"p\".concat(componentCls, \"-hint\"), {\n color: token.colorTextDescription,\n fontSize: token.fontSize\n }), _defineProperty(_$concat2, \"&\".concat(componentCls, \"-disabled\"), _defineProperty({\n cursor: 'not-allowed'\n }, \"p\".concat(componentCls, \"-drag-icon \").concat(iconCls, \",\\n p\").concat(componentCls, \"-text,\\n p\").concat(componentCls, \"-hint\\n \"), {\n color: token.colorTextDisabled\n })), _$concat2)));\n};\nexport default genDraggerStyle;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { clearFix, textEllipsis } from '../../style';\nvar genListStyle = function genListStyle(token) {\n var _actionsCls, _itemCls, _actionsCls2, _$concat, _Object$assign;\n var componentCls = token.componentCls,\n antCls = token.antCls,\n iconCls = token.iconCls,\n fontSize = token.fontSize,\n lineHeight = token.lineHeight;\n var itemCls = \"\".concat(componentCls, \"-list-item\");\n var actionsCls = \"\".concat(itemCls, \"-actions\");\n var actionCls = \"\".concat(itemCls, \"-action\");\n var listItemHeightSM = Math.round(fontSize * lineHeight);\n return _defineProperty({}, \"\".concat(componentCls, \"-wrapper\"), _defineProperty({}, \"\".concat(componentCls, \"-list\"), Object.assign(Object.assign({}, clearFix()), (_Object$assign = {\n lineHeight: token.lineHeight\n }, _defineProperty(_Object$assign, itemCls, (_itemCls = {\n position: 'relative',\n height: token.lineHeight * fontSize,\n marginTop: token.marginXS,\n fontSize: fontSize,\n display: 'flex',\n alignItems: 'center',\n transition: \"background-color \".concat(token.motionDurationSlow),\n '&:hover': {\n backgroundColor: token.controlItemBgHover\n }\n }, _defineProperty(_itemCls, \"\".concat(itemCls, \"-name\"), Object.assign(Object.assign({}, textEllipsis), {\n padding: \"0 \".concat(token.paddingXS, \"px\"),\n lineHeight: lineHeight,\n flex: 'auto',\n transition: \"all \".concat(token.motionDurationSlow)\n })), _defineProperty(_itemCls, actionsCls, (_actionsCls = {}, _defineProperty(_actionsCls, actionCls, {\n opacity: 0\n }), _defineProperty(_actionsCls, \"\".concat(actionCls).concat(antCls, \"-btn-sm\"), {\n height: listItemHeightSM,\n border: 0,\n lineHeight: 1,\n // FIXME: should not override small button\n '> span': {\n transform: 'scale(1)'\n }\n }), _defineProperty(_actionsCls, \"\\n \".concat(actionCls, \":focus,\\n &.picture \").concat(actionCls, \"\\n \"), {\n opacity: 1\n }), _defineProperty(_actionsCls, iconCls, {\n color: token.actionsColor,\n transition: \"all \".concat(token.motionDurationSlow)\n }), _defineProperty(_actionsCls, \"&:hover \".concat(iconCls), {\n color: token.colorText\n }), _actionsCls)), _defineProperty(_itemCls, \"\".concat(componentCls, \"-icon \").concat(iconCls), {\n color: token.colorTextDescription,\n fontSize: fontSize\n }), _defineProperty(_itemCls, \"\".concat(itemCls, \"-progress\"), {\n position: 'absolute',\n bottom: -token.uploadProgressOffset,\n width: '100%',\n paddingInlineStart: fontSize + token.paddingXS,\n fontSize: fontSize,\n lineHeight: 0,\n pointerEvents: 'none',\n '> div': {\n margin: 0\n }\n }), _itemCls)), _defineProperty(_Object$assign, \"\".concat(itemCls, \":hover \").concat(actionCls), {\n opacity: 1,\n color: token.colorText\n }), _defineProperty(_Object$assign, \"\".concat(itemCls, \"-error\"), (_$concat = {\n color: token.colorError\n }, _defineProperty(_$concat, \"\".concat(itemCls, \"-name, \").concat(componentCls, \"-icon \").concat(iconCls), {\n color: token.colorError\n }), _defineProperty(_$concat, actionsCls, (_actionsCls2 = {}, _defineProperty(_actionsCls2, \"\".concat(iconCls, \", \").concat(iconCls, \":hover\"), {\n color: token.colorError\n }), _defineProperty(_actionsCls2, actionCls, {\n opacity: 1\n }), _actionsCls2)), _$concat)), _defineProperty(_Object$assign, \"\".concat(componentCls, \"-list-item-container\"), {\n transition: \"opacity \".concat(token.motionDurationSlow, \", height \").concat(token.motionDurationSlow),\n // For smooth removing animation\n '&::before': {\n display: 'table',\n width: 0,\n height: 0,\n content: '\"\"'\n }\n }), _Object$assign))));\n};\nexport default genListStyle;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { Keyframes } from '@ant-design/cssinjs';\nimport { initMotion } from './motion';\nexport var fadeIn = new Keyframes('antFadeIn', {\n '0%': {\n opacity: 0\n },\n '100%': {\n opacity: 1\n }\n});\nexport var fadeOut = new Keyframes('antFadeOut', {\n '0%': {\n opacity: 1\n },\n '100%': {\n opacity: 0\n }\n});\nexport var initFadeMotion = function initFadeMotion(token) {\n var _ref;\n var sameLevel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var antCls = token.antCls;\n var motionCls = \"\".concat(antCls, \"-fade\");\n var sameLevelPrefix = sameLevel ? '&' : '';\n return [initMotion(motionCls, fadeIn, fadeOut, token.motionDurationMid, sameLevel), (_ref = {}, _defineProperty(_ref, \"\\n \".concat(sameLevelPrefix).concat(motionCls, \"-enter,\\n \").concat(sameLevelPrefix).concat(motionCls, \"-appear\\n \"), {\n opacity: 0,\n animationTimingFunction: 'linear'\n }), _defineProperty(_ref, \"\".concat(sameLevelPrefix).concat(motionCls, \"-leave\"), {\n animationTimingFunction: 'linear'\n }), _ref)];\n};","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { Keyframes } from '@ant-design/cssinjs';\nimport { initFadeMotion } from '../../style/motion';\nvar uploadAnimateInlineIn = new Keyframes('uploadAnimateInlineIn', {\n from: {\n width: 0,\n height: 0,\n margin: 0,\n padding: 0,\n opacity: 0\n }\n});\nvar uploadAnimateInlineOut = new Keyframes('uploadAnimateInlineOut', {\n to: {\n width: 0,\n height: 0,\n margin: 0,\n padding: 0,\n opacity: 0\n }\n});\n// =========================== Motion ===========================\nvar genMotionStyle = function genMotionStyle(token) {\n var _$concat;\n var componentCls = token.componentCls;\n var inlineCls = \"\".concat(componentCls, \"-animate-inline\");\n return [_defineProperty({}, \"\".concat(componentCls, \"-wrapper\"), (_$concat = {}, _defineProperty(_$concat, \"\".concat(inlineCls, \"-appear, \").concat(inlineCls, \"-enter, \").concat(inlineCls, \"-leave\"), {\n animationDuration: token.motionDurationSlow,\n animationTimingFunction: token.motionEaseInOutCirc,\n animationFillMode: 'forwards'\n }), _defineProperty(_$concat, \"\".concat(inlineCls, \"-appear, \").concat(inlineCls, \"-enter\"), {\n animationName: uploadAnimateInlineIn\n }), _defineProperty(_$concat, \"\".concat(inlineCls, \"-leave\"), {\n animationName: uploadAnimateInlineOut\n }), _$concat)), _defineProperty({}, \"\".concat(componentCls, \"-wrapper\"), initFadeMotion(token)), uploadAnimateInlineIn, uploadAnimateInlineOut];\n};\nexport default genMotionStyle;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { blue } from '@ant-design/colors';\nimport { TinyColor } from '@ctrl/tinycolor';\nimport { clearFix, textEllipsis } from '../../style';\nvar genPictureStyle = function genPictureStyle(token) {\n var _Object$assign, _itemCls, _$concat$concat, _$concat$con, _$concat3;\n var componentCls = token.componentCls,\n iconCls = token.iconCls,\n uploadThumbnailSize = token.uploadThumbnailSize,\n uploadProgressOffset = token.uploadProgressOffset;\n var listCls = \"\".concat(componentCls, \"-list\");\n var itemCls = \"\".concat(listCls, \"-item\");\n return _defineProperty({}, \"\".concat(componentCls, \"-wrapper\"), (_$concat3 = {}, _defineProperty(_$concat3, \"\\n \".concat(listCls).concat(listCls, \"-picture,\\n \").concat(listCls).concat(listCls, \"-picture-card,\\n \").concat(listCls).concat(listCls, \"-picture-circle\\n \"), (_$concat$con = {}, _defineProperty(_$concat$con, itemCls, (_itemCls = {\n position: 'relative',\n height: uploadThumbnailSize + token.lineWidth * 2 + token.paddingXS * 2,\n padding: token.paddingXS,\n border: \"\".concat(token.lineWidth, \"px \").concat(token.lineType, \" \").concat(token.colorBorder),\n borderRadius: token.borderRadiusLG,\n '&:hover': {\n background: 'transparent'\n }\n }, _defineProperty(_itemCls, \"\".concat(itemCls, \"-thumbnail\"), Object.assign(Object.assign({}, textEllipsis), (_Object$assign = {\n width: uploadThumbnailSize,\n height: uploadThumbnailSize,\n lineHeight: \"\".concat(uploadThumbnailSize + token.paddingSM, \"px\"),\n textAlign: 'center',\n flex: 'none'\n }, _defineProperty(_Object$assign, iconCls, {\n fontSize: token.fontSizeHeading2,\n color: token.colorPrimary\n }), _defineProperty(_Object$assign, \"img\", {\n display: 'block',\n width: '100%',\n height: '100%',\n overflow: 'hidden'\n }), _Object$assign))), _defineProperty(_itemCls, \"\".concat(itemCls, \"-progress\"), {\n bottom: uploadProgressOffset,\n width: \"calc(100% - \".concat(token.paddingSM * 2, \"px)\"),\n marginTop: 0,\n paddingInlineStart: uploadThumbnailSize + token.paddingXS\n }), _itemCls)), _defineProperty(_$concat$con, \"\".concat(itemCls, \"-error\"), _defineProperty({\n borderColor: token.colorError\n }, \"\".concat(itemCls, \"-thumbnail \").concat(iconCls), (_$concat$concat = {}, _defineProperty(_$concat$concat, \"svg path[fill='\".concat(blue[0], \"']\"), {\n fill: token.colorErrorBg\n }), _defineProperty(_$concat$concat, \"svg path[fill='\".concat(blue.primary, \"']\"), {\n fill: token.colorError\n }), _$concat$concat))), _defineProperty(_$concat$con, \"\".concat(itemCls, \"-uploading\"), _defineProperty({\n borderStyle: 'dashed'\n }, \"\".concat(itemCls, \"-name\"), {\n marginBottom: uploadProgressOffset\n })), _$concat$con)), _defineProperty(_$concat3, \"\".concat(listCls).concat(listCls, \"-picture-circle \").concat(itemCls), _defineProperty({}, \"&, &::before, \".concat(itemCls, \"-thumbnail\"), {\n borderRadius: '50%'\n })), _$concat3));\n};\nvar genPictureCardStyle = function genPictureCardStyle(token) {\n var _$concat$concat2, _$concat6, _$concat$concat$conca2, _Object$assign2, _ref2;\n var componentCls = token.componentCls,\n iconCls = token.iconCls,\n fontSizeLG = token.fontSizeLG,\n colorTextLightSolid = token.colorTextLightSolid;\n var listCls = \"\".concat(componentCls, \"-list\");\n var itemCls = \"\".concat(listCls, \"-item\");\n var uploadPictureCardSize = token.uploadPicCardSize;\n return _ref2 = {}, _defineProperty(_ref2, \"\\n \".concat(componentCls, \"-wrapper\").concat(componentCls, \"-picture-card-wrapper,\\n \").concat(componentCls, \"-wrapper\").concat(componentCls, \"-picture-circle-wrapper\\n \"), Object.assign(Object.assign({}, clearFix()), (_Object$assign2 = {\n display: 'inline-block',\n width: '100%'\n }, _defineProperty(_Object$assign2, \"\".concat(componentCls).concat(componentCls, \"-select\"), (_$concat$concat2 = {\n width: uploadPictureCardSize,\n height: uploadPictureCardSize,\n marginInlineEnd: token.marginXS,\n marginBottom: token.marginXS,\n textAlign: 'center',\n verticalAlign: 'top',\n backgroundColor: token.colorFillAlter,\n border: \"\".concat(token.lineWidth, \"px dashed \").concat(token.colorBorder),\n borderRadius: token.borderRadiusLG,\n cursor: 'pointer',\n transition: \"border-color \".concat(token.motionDurationSlow)\n }, _defineProperty(_$concat$concat2, \"> \".concat(componentCls), {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n height: '100%',\n textAlign: 'center'\n }), _defineProperty(_$concat$concat2, \"&:not(\".concat(componentCls, \"-disabled):hover\"), {\n borderColor: token.colorPrimary\n }), _$concat$concat2)), _defineProperty(_Object$assign2, \"\".concat(listCls).concat(listCls, \"-picture-card, \").concat(listCls).concat(listCls, \"-picture-circle\"), (_$concat$concat$conca2 = {}, _defineProperty(_$concat$concat$conca2, \"\".concat(listCls, \"-item-container\"), {\n display: 'inline-block',\n width: uploadPictureCardSize,\n height: uploadPictureCardSize,\n marginBlock: \"0 \".concat(token.marginXS, \"px\"),\n marginInline: \"0 \".concat(token.marginXS, \"px\"),\n verticalAlign: 'top'\n }), _defineProperty(_$concat$concat$conca2, '&::after', {\n display: 'none'\n }), _defineProperty(_$concat$concat$conca2, itemCls, {\n height: '100%',\n margin: 0,\n '&::before': {\n position: 'absolute',\n zIndex: 1,\n width: \"calc(100% - \".concat(token.paddingXS * 2, \"px)\"),\n height: \"calc(100% - \".concat(token.paddingXS * 2, \"px)\"),\n backgroundColor: token.colorBgMask,\n opacity: 0,\n transition: \"all \".concat(token.motionDurationSlow),\n content: '\" \"'\n }\n }), _defineProperty(_$concat$concat$conca2, \"\".concat(itemCls, \":hover\"), _defineProperty({}, \"&::before, \".concat(itemCls, \"-actions\"), {\n opacity: 1\n })), _defineProperty(_$concat$concat$conca2, \"\".concat(itemCls, \"-actions\"), _defineProperty({\n position: 'absolute',\n insetInlineStart: 0,\n zIndex: 10,\n width: '100%',\n whiteSpace: 'nowrap',\n textAlign: 'center',\n opacity: 0,\n transition: \"all \".concat(token.motionDurationSlow)\n }, \"\".concat(iconCls, \"-eye, \").concat(iconCls, \"-download, \").concat(iconCls, \"-delete\"), {\n zIndex: 10,\n width: fontSizeLG,\n margin: \"0 \".concat(token.marginXXS, \"px\"),\n fontSize: fontSizeLG,\n cursor: 'pointer',\n transition: \"all \".concat(token.motionDurationSlow),\n svg: {\n verticalAlign: 'baseline'\n }\n })), _defineProperty(_$concat$concat$conca2, \"\".concat(itemCls, \"-actions, \").concat(itemCls, \"-actions:hover\"), _defineProperty({}, \"\".concat(iconCls, \"-eye, \").concat(iconCls, \"-download, \").concat(iconCls, \"-delete\"), {\n color: new TinyColor(colorTextLightSolid).setAlpha(0.65).toRgbString(),\n '&:hover': {\n color: colorTextLightSolid\n }\n })), _defineProperty(_$concat$concat$conca2, \"\".concat(itemCls, \"-thumbnail, \").concat(itemCls, \"-thumbnail img\"), {\n position: 'static',\n display: 'block',\n width: '100%',\n height: '100%',\n objectFit: 'contain'\n }), _defineProperty(_$concat$concat$conca2, \"\".concat(itemCls, \"-name\"), {\n display: 'none',\n textAlign: 'center'\n }), _defineProperty(_$concat$concat$conca2, \"\".concat(itemCls, \"-file + \").concat(itemCls, \"-name\"), {\n position: 'absolute',\n bottom: token.margin,\n display: 'block',\n width: \"calc(100% - \".concat(token.paddingXS * 2, \"px)\")\n }), _defineProperty(_$concat$concat$conca2, \"\".concat(itemCls, \"-uploading\"), (_$concat6 = {}, _defineProperty(_$concat6, \"&\".concat(itemCls), {\n backgroundColor: token.colorFillAlter\n }), _defineProperty(_$concat6, \"&::before, \".concat(iconCls, \"-eye, \").concat(iconCls, \"-download, \").concat(iconCls, \"-delete\"), {\n display: 'none'\n }), _$concat6)), _defineProperty(_$concat$concat$conca2, \"\".concat(itemCls, \"-progress\"), {\n bottom: token.marginXL,\n width: \"calc(100% - \".concat(token.paddingXS * 2, \"px)\"),\n paddingInlineStart: 0\n }), _$concat$concat$conca2)), _Object$assign2))), _defineProperty(_ref2, \"\".concat(componentCls, \"-wrapper\").concat(componentCls, \"-picture-circle-wrapper\"), _defineProperty({}, \"\".concat(componentCls).concat(componentCls, \"-select\"), {\n borderRadius: '50%'\n })), _ref2;\n};\nexport { genPictureStyle, genPictureCardStyle };","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\n// =========================== Motion ===========================\nvar genRtlStyle = function genRtlStyle(token) {\n var componentCls = token.componentCls;\n return _defineProperty({}, \"\".concat(componentCls, \"-rtl\"), {\n direction: 'rtl'\n });\n};\nexport default genRtlStyle;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { resetComponent } from '../../style';\nimport { genCollapseMotion } from '../../style/motion';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport genDraggerStyle from './dragger';\nimport genListStyle from './list';\nimport genMotionStyle from './motion';\nimport { genPictureCardStyle, genPictureStyle } from './picture';\nimport genRtlStyle from './rtl';\nvar genBaseStyle = function genBaseStyle(token) {\n var _Object$assign;\n var componentCls = token.componentCls,\n colorTextDisabled = token.colorTextDisabled;\n return _defineProperty({}, \"\".concat(componentCls, \"-wrapper\"), Object.assign(Object.assign({}, resetComponent(token)), (_Object$assign = {}, _defineProperty(_Object$assign, componentCls, {\n outline: 0,\n \"input[type='file']\": {\n cursor: 'pointer'\n }\n }), _defineProperty(_Object$assign, \"\".concat(componentCls, \"-select\"), {\n display: 'inline-block'\n }), _defineProperty(_Object$assign, \"\".concat(componentCls, \"-disabled\"), {\n color: colorTextDisabled,\n cursor: 'not-allowed'\n }), _Object$assign)));\n};\n// ============================== Export ==============================\nexport default genComponentStyleHook('Upload', function (token) {\n var fontSizeHeading3 = token.fontSizeHeading3,\n fontSize = token.fontSize,\n lineHeight = token.lineHeight,\n lineWidth = token.lineWidth,\n controlHeightLG = token.controlHeightLG;\n var listItemHeightSM = Math.round(fontSize * lineHeight);\n var uploadToken = mergeToken(token, {\n uploadThumbnailSize: fontSizeHeading3 * 2,\n uploadProgressOffset: listItemHeightSM / 2 + lineWidth,\n uploadPicCardSize: controlHeightLG * 2.55\n });\n return [genBaseStyle(uploadToken), genDraggerStyle(uploadToken), genPictureStyle(uploadToken), genPictureCardStyle(uploadToken), genListStyle(uploadToken), genMotionStyle(uploadToken), genRtlStyle(uploadToken), genCollapseMotion(uploadToken)];\n}, function (token) {\n return {\n actionsColor: token.colorTextDescription\n };\n});","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport _regeneratorRuntime from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/regenerator/index.js\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport classNames from 'classnames';\nimport RcUpload from 'rc-upload';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport * as React from 'react';\nimport { flushSync } from 'react-dom';\nimport warning from '../_util/warning';\nimport { ConfigContext } from '../config-provider';\nimport DisabledContext from '../config-provider/DisabledContext';\nimport { useLocale } from '../locale';\nimport defaultLocale from '../locale/en_US';\nimport UploadList from './UploadList';\nimport useStyle from './style';\nimport { file2Obj, getFileItem, removeFileItem, updateFileList } from './utils';\nexport var LIST_IGNORE = \"__LIST_IGNORE_\".concat(Date.now(), \"__\");\nvar InternalUpload = function InternalUpload(props, ref) {\n var _classNames;\n var fileList = props.fileList,\n defaultFileList = props.defaultFileList,\n onRemove = props.onRemove,\n _props$showUploadList = props.showUploadList,\n showUploadList = _props$showUploadList === void 0 ? true : _props$showUploadList,\n _props$listType = props.listType,\n listType = _props$listType === void 0 ? 'text' : _props$listType,\n onPreview = props.onPreview,\n onDownload = props.onDownload,\n onChange = props.onChange,\n onDrop = props.onDrop,\n previewFile = props.previewFile,\n customDisabled = props.disabled,\n propLocale = props.locale,\n iconRender = props.iconRender,\n isImageUrl = props.isImageUrl,\n progress = props.progress,\n customizePrefixCls = props.prefixCls,\n className = props.className,\n _props$type = props.type,\n type = _props$type === void 0 ? 'select' : _props$type,\n children = props.children,\n style = props.style,\n itemRender = props.itemRender,\n maxCount = props.maxCount,\n _props$data = props.data,\n data = _props$data === void 0 ? {} : _props$data,\n _props$multiple = props.multiple,\n multiple = _props$multiple === void 0 ? false : _props$multiple,\n _props$action = props.action,\n action = _props$action === void 0 ? '' : _props$action,\n _props$accept = props.accept,\n accept = _props$accept === void 0 ? '' : _props$accept,\n _props$supportServerR = props.supportServerRender,\n supportServerRender = _props$supportServerR === void 0 ? true : _props$supportServerR;\n // ===================== Disabled =====================\n var disabled = React.useContext(DisabledContext);\n var mergedDisabled = customDisabled !== null && customDisabled !== void 0 ? customDisabled : disabled;\n var _useMergedState = useMergedState(defaultFileList || [], {\n value: fileList,\n postState: function postState(list) {\n return list !== null && list !== void 0 ? list : [];\n }\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n mergedFileList = _useMergedState2[0],\n setMergedFileList = _useMergedState2[1];\n var _React$useState = React.useState('drop'),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n dragState = _React$useState2[0],\n setDragState = _React$useState2[1];\n var upload = React.useRef(null);\n process.env.NODE_ENV !== \"production\" ? warning('fileList' in props || !('value' in props), 'Upload', '`value` is not a valid prop, do you mean `fileList`?') : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!('transformFile' in props), 'Upload', '`transformFile` is deprecated. Please use `beforeUpload` directly.') : void 0;\n // Control mode will auto fill file uid if not provided\n React.useMemo(function () {\n var timestamp = Date.now();\n (fileList || []).forEach(function (file, index) {\n if (!file.uid && !Object.isFrozen(file)) {\n file.uid = \"__AUTO__\".concat(timestamp, \"_\").concat(index, \"__\");\n }\n });\n }, [fileList]);\n var onInternalChange = function onInternalChange(file, changedFileList, event) {\n var cloneList = _toConsumableArray(changedFileList);\n var exceedMaxCount = false;\n // Cut to match count\n if (maxCount === 1) {\n cloneList = cloneList.slice(-1);\n } else if (maxCount) {\n exceedMaxCount = cloneList.length > maxCount;\n cloneList = cloneList.slice(0, maxCount);\n }\n // Prevent React18 auto batch since input[upload] trigger process at same time\n // which makes fileList closure problem\n flushSync(function () {\n setMergedFileList(cloneList);\n });\n var changeInfo = {\n file: file,\n fileList: cloneList\n };\n if (event) {\n changeInfo.event = event;\n }\n if (!exceedMaxCount ||\n // We should ignore event if current file is exceed `maxCount`\n cloneList.some(function (f) {\n return f.uid === file.uid;\n })) {\n flushSync(function () {\n onChange === null || onChange === void 0 ? void 0 : onChange(changeInfo);\n });\n }\n };\n var mergedBeforeUpload = function mergedBeforeUpload(file, fileListArgs) {\n return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {\n var beforeUpload, transformFile, parsedFile, result;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n beforeUpload = props.beforeUpload, transformFile = props.transformFile;\n parsedFile = file;\n if (!beforeUpload) {\n _context.next = 13;\n break;\n }\n _context.next = 5;\n return beforeUpload(file, fileListArgs);\n case 5:\n result = _context.sent;\n if (!(result === false)) {\n _context.next = 8;\n break;\n }\n return _context.abrupt(\"return\", false);\n case 8:\n // Hack for LIST_IGNORE, we add additional info to remove from the list\n delete file[LIST_IGNORE];\n if (!(result === LIST_IGNORE)) {\n _context.next = 12;\n break;\n }\n Object.defineProperty(file, LIST_IGNORE, {\n value: true,\n configurable: true\n });\n return _context.abrupt(\"return\", false);\n case 12:\n if (typeof result === 'object' && result) {\n parsedFile = result;\n }\n case 13:\n if (!transformFile) {\n _context.next = 17;\n break;\n }\n _context.next = 16;\n return transformFile(parsedFile);\n case 16:\n parsedFile = _context.sent;\n case 17:\n return _context.abrupt(\"return\", parsedFile);\n case 18:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n };\n var onBatchStart = function onBatchStart(batchFileInfoList) {\n // Skip file which marked as `LIST_IGNORE`, these file will not add to file list\n var filteredFileInfoList = batchFileInfoList.filter(function (info) {\n return !info.file[LIST_IGNORE];\n });\n // Nothing to do since no file need upload\n if (!filteredFileInfoList.length) {\n return;\n }\n var objectFileList = filteredFileInfoList.map(function (info) {\n return file2Obj(info.file);\n });\n // Concat new files with prev files\n var newFileList = _toConsumableArray(mergedFileList);\n objectFileList.forEach(function (fileObj) {\n // Replace file if exist\n newFileList = updateFileList(fileObj, newFileList);\n });\n objectFileList.forEach(function (fileObj, index) {\n // Repeat trigger `onChange` event for compatible\n var triggerFileObj = fileObj;\n if (!filteredFileInfoList[index].parsedFile) {\n // `beforeUpload` return false\n var originFileObj = fileObj.originFileObj;\n var clone;\n try {\n clone = new File([originFileObj], originFileObj.name, {\n type: originFileObj.type\n });\n } catch (e) {\n clone = new Blob([originFileObj], {\n type: originFileObj.type\n });\n clone.name = originFileObj.name;\n clone.lastModifiedDate = new Date();\n clone.lastModified = new Date().getTime();\n }\n clone.uid = fileObj.uid;\n triggerFileObj = clone;\n } else {\n // Inject `uploading` status\n fileObj.status = 'uploading';\n }\n onInternalChange(triggerFileObj, newFileList);\n });\n };\n var onSuccess = function onSuccess(response, file, xhr) {\n try {\n if (typeof response === 'string') {\n response = JSON.parse(response);\n }\n } catch (e) {\n /* do nothing */\n }\n // removed\n if (!getFileItem(file, mergedFileList)) {\n return;\n }\n var targetItem = file2Obj(file);\n targetItem.status = 'done';\n targetItem.percent = 100;\n targetItem.response = response;\n targetItem.xhr = xhr;\n var nextFileList = updateFileList(targetItem, mergedFileList);\n onInternalChange(targetItem, nextFileList);\n };\n var onProgress = function onProgress(e, file) {\n // removed\n if (!getFileItem(file, mergedFileList)) {\n return;\n }\n var targetItem = file2Obj(file);\n targetItem.status = 'uploading';\n targetItem.percent = e.percent;\n var nextFileList = updateFileList(targetItem, mergedFileList);\n onInternalChange(targetItem, nextFileList, e);\n };\n var onError = function onError(error, response, file) {\n // removed\n if (!getFileItem(file, mergedFileList)) {\n return;\n }\n var targetItem = file2Obj(file);\n targetItem.error = error;\n targetItem.response = response;\n targetItem.status = 'error';\n var nextFileList = updateFileList(targetItem, mergedFileList);\n onInternalChange(targetItem, nextFileList);\n };\n var handleRemove = function handleRemove(file) {\n var currentFile;\n Promise.resolve(typeof onRemove === 'function' ? onRemove(file) : onRemove).then(function (ret) {\n var _a;\n // Prevent removing file\n if (ret === false) {\n return;\n }\n var removedFileList = removeFileItem(file, mergedFileList);\n if (removedFileList) {\n currentFile = Object.assign(Object.assign({}, file), {\n status: 'removed'\n });\n mergedFileList === null || mergedFileList === void 0 ? void 0 : mergedFileList.forEach(function (item) {\n var matchKey = currentFile.uid !== undefined ? 'uid' : 'name';\n if (item[matchKey] === currentFile[matchKey] && !Object.isFrozen(item)) {\n item.status = 'removed';\n }\n });\n (_a = upload.current) === null || _a === void 0 ? void 0 : _a.abort(currentFile);\n onInternalChange(currentFile, removedFileList);\n }\n });\n };\n var onFileDrop = function onFileDrop(e) {\n setDragState(e.type);\n if (e.type === 'drop') {\n onDrop === null || onDrop === void 0 ? void 0 : onDrop(e);\n }\n };\n // Test needs\n React.useImperativeHandle(ref, function () {\n return {\n onBatchStart: onBatchStart,\n onSuccess: onSuccess,\n onProgress: onProgress,\n onError: onError,\n fileList: mergedFileList,\n upload: upload.current\n };\n });\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction,\n ctxUpload = _React$useContext.upload;\n var prefixCls = getPrefixCls('upload', customizePrefixCls);\n var rcUploadProps = Object.assign(Object.assign({\n onBatchStart: onBatchStart,\n onError: onError,\n onProgress: onProgress,\n onSuccess: onSuccess\n }, props), {\n data: data,\n multiple: multiple,\n action: action,\n accept: accept,\n supportServerRender: supportServerRender,\n prefixCls: prefixCls,\n disabled: mergedDisabled,\n beforeUpload: mergedBeforeUpload,\n onChange: undefined\n });\n delete rcUploadProps.className;\n delete rcUploadProps.style;\n // Remove id to avoid open by label when trigger is hidden\n // !children: https://github.com/ant-design/ant-design/issues/14298\n // disabled: https://github.com/ant-design/ant-design/issues/16478\n // https://github.com/ant-design/ant-design/issues/24197\n if (!children || mergedDisabled) {\n delete rcUploadProps.id;\n }\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n var _useLocale = useLocale('Upload', defaultLocale.Upload),\n _useLocale2 = _slicedToArray(_useLocale, 1),\n contextLocale = _useLocale2[0];\n var _ref = typeof showUploadList === 'boolean' ? {} : showUploadList,\n showRemoveIcon = _ref.showRemoveIcon,\n showPreviewIcon = _ref.showPreviewIcon,\n showDownloadIcon = _ref.showDownloadIcon,\n removeIcon = _ref.removeIcon,\n previewIcon = _ref.previewIcon,\n downloadIcon = _ref.downloadIcon;\n var renderUploadList = function renderUploadList(button, buttonVisible) {\n if (!showUploadList) {\n return button;\n }\n return /*#__PURE__*/React.createElement(UploadList, {\n prefixCls: prefixCls,\n listType: listType,\n items: mergedFileList,\n previewFile: previewFile,\n onPreview: onPreview,\n onDownload: onDownload,\n onRemove: handleRemove,\n showRemoveIcon: !mergedDisabled && showRemoveIcon,\n showPreviewIcon: showPreviewIcon,\n showDownloadIcon: showDownloadIcon,\n removeIcon: removeIcon,\n previewIcon: previewIcon,\n downloadIcon: downloadIcon,\n iconRender: iconRender,\n locale: Object.assign(Object.assign({}, contextLocale), propLocale),\n isImageUrl: isImageUrl,\n progress: progress,\n appendAction: button,\n appendActionVisible: buttonVisible,\n itemRender: itemRender,\n disabled: mergedDisabled\n });\n };\n var wrapperCls = classNames(\"\".concat(prefixCls, \"-wrapper\"), className, hashId, ctxUpload === null || ctxUpload === void 0 ? void 0 : ctxUpload.className, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-picture-card-wrapper\"), listType === 'picture-card'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-picture-circle-wrapper\"), listType === 'picture-circle'), _classNames));\n var mergedStyle = Object.assign(Object.assign({}, ctxUpload === null || ctxUpload === void 0 ? void 0 : ctxUpload.style), style);\n if (type === 'drag') {\n var _classNames2;\n var dragCls = classNames(hashId, prefixCls, \"\".concat(prefixCls, \"-drag\"), (_classNames2 = {}, _defineProperty(_classNames2, \"\".concat(prefixCls, \"-drag-uploading\"), mergedFileList.some(function (file) {\n return file.status === 'uploading';\n })), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-drag-hover\"), dragState === 'dragover'), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-disabled\"), mergedDisabled), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _classNames2));\n return wrapSSR( /*#__PURE__*/React.createElement(\"span\", {\n className: wrapperCls\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: dragCls,\n style: mergedStyle,\n onDrop: onFileDrop,\n onDragOver: onFileDrop,\n onDragLeave: onFileDrop\n }, /*#__PURE__*/React.createElement(RcUpload, Object.assign({}, rcUploadProps, {\n ref: upload,\n className: \"\".concat(prefixCls, \"-btn\")\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-drag-container\")\n }, children))), renderUploadList()));\n }\n var uploadButtonCls = classNames(prefixCls, \"\".concat(prefixCls, \"-select\"), _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), mergedDisabled));\n var renderUploadButton = function renderUploadButton(uploadButtonStyle) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: uploadButtonCls,\n style: uploadButtonStyle\n }, /*#__PURE__*/React.createElement(RcUpload, Object.assign({}, rcUploadProps, {\n ref: upload\n })));\n };\n var uploadButton = renderUploadButton(children ? undefined : {\n display: 'none'\n });\n if (listType === 'picture-card' || listType === 'picture-circle') {\n return wrapSSR( /*#__PURE__*/React.createElement(\"span\", {\n className: wrapperCls\n }, renderUploadList(uploadButton, !!children)));\n }\n return wrapSSR( /*#__PURE__*/React.createElement(\"span\", {\n className: wrapperCls\n }, uploadButton, renderUploadList()));\n};\nvar Upload = /*#__PURE__*/React.forwardRef(InternalUpload);\nif (process.env.NODE_ENV !== 'production') {\n Upload.displayName = 'Upload';\n}\nexport default Upload;","var __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport Upload from './Upload';\nvar Dragger = /*#__PURE__*/React.forwardRef(function (_a, ref) {\n var style = _a.style,\n height = _a.height,\n restProps = __rest(_a, [\"style\", \"height\"]);\n return /*#__PURE__*/React.createElement(Upload, Object.assign({\n ref: ref\n }, restProps, {\n type: \"drag\",\n style: Object.assign(Object.assign({}, style), {\n height: height\n })\n }));\n});\nif (process.env.NODE_ENV !== 'production') {\n Dragger.displayName = 'Dragger';\n}\nexport default Dragger;","'use client';\n\nimport Dragger from './Dragger';\nimport InternalUpload, { LIST_IGNORE } from './Upload';\nvar Upload = InternalUpload;\nUpload.Dragger = Dragger;\nUpload.LIST_IGNORE = LIST_IGNORE;\nexport default Upload;","import { createContext } from 'react';\n// ZombieJ: We export single file here since\n// ConfigProvider use this which will make loop deps\n// to import whole `rc-field-form`\nexport default /*#__PURE__*/createContext(undefined);","import defaultLocale from '../locale/en_US';\nvar runtimeLocale = Object.assign({}, defaultLocale.Modal);\nvar localeList = [];\nvar generateLocale = function generateLocale() {\n return localeList.reduce(function (merged, locale) {\n return Object.assign(Object.assign({}, merged), locale);\n }, defaultLocale.Modal);\n};\nexport function changeConfirmLocale(newLocale) {\n if (newLocale) {\n var cloneLocale = Object.assign({}, newLocale);\n localeList.push(cloneLocale);\n runtimeLocale = generateLocale();\n return function () {\n localeList = localeList.filter(function (locale) {\n return locale !== cloneLocale;\n });\n runtimeLocale = generateLocale();\n };\n }\n runtimeLocale = Object.assign({}, defaultLocale.Modal);\n}\nexport function getConfirmLocale() {\n return runtimeLocale;\n}","'use client';\n\nimport * as React from 'react';\nimport warning from '../_util/warning';\nimport { changeConfirmLocale } from '../modal/locale';\nimport LocaleContext from './context';\nexport { default as useLocale } from './useLocale';\nexport var ANT_MARK = 'internalMark';\nvar LocaleProvider = function LocaleProvider(props) {\n var _props$locale = props.locale,\n locale = _props$locale === void 0 ? {} : _props$locale,\n children = props.children,\n _ANT_MARK__ = props._ANT_MARK__;\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? warning(_ANT_MARK__ === ANT_MARK, 'LocaleProvider', '`LocaleProvider` is deprecated. Please use `locale` with `ConfigProvider` instead: http://u.ant.design/locale') : void 0;\n }\n React.useEffect(function () {\n var clearLocale = changeConfirmLocale(locale && locale.Modal);\n return clearLocale;\n }, [locale]);\n var getMemoizedContextValue = React.useMemo(function () {\n return Object.assign(Object.assign({}, locale), {\n exist: true\n });\n }, [locale]);\n return /*#__PURE__*/React.createElement(LocaleContext.Provider, {\n value: getMemoizedContextValue\n }, children);\n};\nif (process.env.NODE_ENV !== 'production') {\n LocaleProvider.displayName = 'LocaleProvider';\n}\nexport default LocaleProvider;","/* eslint-disable import/prefer-default-export, prefer-destructuring */\nimport { generate } from '@ant-design/colors';\nimport { TinyColor } from '@ctrl/tinycolor';\nimport canUseDom from \"rc-util/es/Dom/canUseDom\";\nimport { updateCSS } from \"rc-util/es/Dom/dynamicCSS\";\nimport warning from '../_util/warning';\nvar dynamicStyleMark = \"-ant-\".concat(Date.now(), \"-\").concat(Math.random());\nexport function getStyle(globalPrefixCls, theme) {\n var variables = {};\n var formatColor = function formatColor(color, updater) {\n var clone = color.clone();\n clone = (updater === null || updater === void 0 ? void 0 : updater(clone)) || clone;\n return clone.toRgbString();\n };\n var fillColor = function fillColor(colorVal, type) {\n var baseColor = new TinyColor(colorVal);\n var colorPalettes = generate(baseColor.toRgbString());\n variables[\"\".concat(type, \"-color\")] = formatColor(baseColor);\n variables[\"\".concat(type, \"-color-disabled\")] = colorPalettes[1];\n variables[\"\".concat(type, \"-color-hover\")] = colorPalettes[4];\n variables[\"\".concat(type, \"-color-active\")] = colorPalettes[6];\n variables[\"\".concat(type, \"-color-outline\")] = baseColor.clone().setAlpha(0.2).toRgbString();\n variables[\"\".concat(type, \"-color-deprecated-bg\")] = colorPalettes[0];\n variables[\"\".concat(type, \"-color-deprecated-border\")] = colorPalettes[2];\n };\n // ================ Primary Color ================\n if (theme.primaryColor) {\n fillColor(theme.primaryColor, 'primary');\n var primaryColor = new TinyColor(theme.primaryColor);\n var primaryColors = generate(primaryColor.toRgbString());\n // Legacy - We should use semantic naming standard\n primaryColors.forEach(function (color, index) {\n variables[\"primary-\".concat(index + 1)] = color;\n });\n // Deprecated\n variables['primary-color-deprecated-l-35'] = formatColor(primaryColor, function (c) {\n return c.lighten(35);\n });\n variables['primary-color-deprecated-l-20'] = formatColor(primaryColor, function (c) {\n return c.lighten(20);\n });\n variables['primary-color-deprecated-t-20'] = formatColor(primaryColor, function (c) {\n return c.tint(20);\n });\n variables['primary-color-deprecated-t-50'] = formatColor(primaryColor, function (c) {\n return c.tint(50);\n });\n variables['primary-color-deprecated-f-12'] = formatColor(primaryColor, function (c) {\n return c.setAlpha(c.getAlpha() * 0.12);\n });\n var primaryActiveColor = new TinyColor(primaryColors[0]);\n variables['primary-color-active-deprecated-f-30'] = formatColor(primaryActiveColor, function (c) {\n return c.setAlpha(c.getAlpha() * 0.3);\n });\n variables['primary-color-active-deprecated-d-02'] = formatColor(primaryActiveColor, function (c) {\n return c.darken(2);\n });\n }\n // ================ Success Color ================\n if (theme.successColor) {\n fillColor(theme.successColor, 'success');\n }\n // ================ Warning Color ================\n if (theme.warningColor) {\n fillColor(theme.warningColor, 'warning');\n }\n // ================= Error Color =================\n if (theme.errorColor) {\n fillColor(theme.errorColor, 'error');\n }\n // ================= Info Color ==================\n if (theme.infoColor) {\n fillColor(theme.infoColor, 'info');\n }\n // Convert to css variables\n var cssList = Object.keys(variables).map(function (key) {\n return \"--\".concat(globalPrefixCls, \"-\").concat(key, \": \").concat(variables[key], \";\");\n });\n return \"\\n :root {\\n \".concat(cssList.join('\\n'), \"\\n }\\n \").trim();\n}\nexport function registerTheme(globalPrefixCls, theme) {\n var style = getStyle(globalPrefixCls, theme);\n if (canUseDom()) {\n updateCSS(style, \"\".concat(dynamicStyleMark, \"-dynamic-theme\"));\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'ConfigProvider', 'SSR do not support dynamic theme with css variables.') : void 0;\n }\n}","import { useContext } from 'react';\nimport DisabledContext from '../DisabledContext';\nimport SizeContext from '../SizeContext';\nfunction useConfig() {\n var componentDisabled = useContext(DisabledContext);\n var componentSize = useContext(SizeContext);\n return {\n componentDisabled: componentDisabled,\n componentSize: componentSize\n };\n}\nexport default useConfig;","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport { Provider as MotionProvider } from 'rc-motion';\nimport * as React from 'react';\nimport { useToken } from '../theme/internal';\nexport default function MotionWrapper(props) {\n var children = props.children;\n var _useToken = useToken(),\n _useToken2 = _slicedToArray(_useToken, 2),\n token = _useToken2[1];\n var motion = token.motion;\n var needWrapMotionProviderRef = React.useRef(false);\n needWrapMotionProviderRef.current = needWrapMotionProviderRef.current || motion === false;\n if (needWrapMotionProviderRef.current) {\n return /*#__PURE__*/React.createElement(MotionProvider, {\n motion: motion\n }, children);\n }\n return children;\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport { useStyleRegister } from '@ant-design/cssinjs';\nimport { resetIcon } from '../../style';\nimport { useToken } from '../../theme/internal';\nvar useStyle = function useStyle(iconPrefixCls, csp) {\n var _useToken = useToken(),\n _useToken2 = _slicedToArray(_useToken, 2),\n theme = _useToken2[0],\n token = _useToken2[1];\n // Generate style for icons\n return useStyleRegister({\n theme: theme,\n token: token,\n hashId: '',\n path: ['ant-design-icons', iconPrefixCls],\n nonce: function nonce() {\n return csp === null || csp === void 0 ? void 0 : csp.nonce;\n }\n }, function () {\n return [_defineProperty({}, \".\".concat(iconPrefixCls), Object.assign(Object.assign({}, resetIcon()), _defineProperty({}, \".\".concat(iconPrefixCls, \" .\").concat(iconPrefixCls, \"-icon\"), {\n display: 'block'\n })))];\n });\n};\nexport default useStyle;","'use client';\n\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { createTheme } from '@ant-design/cssinjs';\nimport IconContext from \"@ant-design/icons/es/components/Context\";\nimport useMemo from \"rc-util/es/hooks/useMemo\";\nimport { merge } from \"rc-util/es/utils/set\";\nimport * as React from 'react';\nimport warning from '../_util/warning';\nimport ValidateMessagesContext from '../form/validateMessagesContext';\nimport LocaleProvider, { ANT_MARK } from '../locale';\nimport LocaleContext from '../locale/context';\nimport defaultLocale from '../locale/en_US';\nimport { DesignTokenContext } from '../theme/internal';\nimport defaultSeedToken from '../theme/themes/seed';\nimport { ConfigConsumer, ConfigContext, defaultIconPrefixCls } from './context';\nimport { registerTheme } from './cssVariables';\nimport { DisabledContextProvider } from './DisabledContext';\nimport useConfig from './hooks/useConfig';\nimport useTheme from './hooks/useTheme';\nimport MotionWrapper from './MotionWrapper';\nimport SizeContext, { SizeContextProvider } from './SizeContext';\nimport useStyle from './style';\nimport { defaultTheme } from '../theme/context';\n/**\n * Since too many feedback using static method like `Modal.confirm` not getting theme, we record the\n * theme register info here to help developer get warning info.\n */\nvar existThemeConfig = false;\nexport var warnContext = process.env.NODE_ENV !== 'production' ? function (componentName) {\n process.env.NODE_ENV !== \"production\" ? warning(!existThemeConfig, componentName, \"Static function can not consume context like dynamic theme. Please use 'App' component instead.\") : void 0;\n} : /* istanbul ignore next */\nnull;\nexport { ConfigConsumer, ConfigContext, defaultIconPrefixCls };\nexport var configConsumerProps = ['getTargetContainer', 'getPopupContainer', 'rootPrefixCls', 'getPrefixCls', 'renderEmpty', 'csp', 'autoInsertSpaceInButton', 'locale', 'pageHeader'];\n// These props is used by `useContext` directly in sub component\nvar PASSED_PROPS = ['getTargetContainer', 'getPopupContainer', 'renderEmpty', 'pageHeader', 'input', 'pagination', 'form', 'select', 'button'];\nexport var defaultPrefixCls = 'ant';\nvar globalPrefixCls;\nvar globalIconPrefixCls;\nvar globalTheme;\nfunction getGlobalPrefixCls() {\n return globalPrefixCls || defaultPrefixCls;\n}\nfunction getGlobalIconPrefixCls() {\n return globalIconPrefixCls || defaultIconPrefixCls;\n}\nfunction isLegacyTheme(theme) {\n return Object.keys(theme).some(function (key) {\n return key.endsWith('Color');\n });\n}\nvar setGlobalConfig = function setGlobalConfig(_ref) {\n var prefixCls = _ref.prefixCls,\n iconPrefixCls = _ref.iconPrefixCls,\n theme = _ref.theme;\n if (prefixCls !== undefined) {\n globalPrefixCls = prefixCls;\n }\n if (iconPrefixCls !== undefined) {\n globalIconPrefixCls = iconPrefixCls;\n }\n if (theme) {\n if (isLegacyTheme(theme)) {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'ConfigProvider', '`config` of css variable theme is not work in v5. Please use new `theme` config instead.') : void 0;\n registerTheme(getGlobalPrefixCls(), theme);\n } else {\n globalTheme = theme;\n }\n }\n};\nexport var globalConfig = function globalConfig() {\n return {\n getPrefixCls: function getPrefixCls(suffixCls, customizePrefixCls) {\n if (customizePrefixCls) {\n return customizePrefixCls;\n }\n return suffixCls ? \"\".concat(getGlobalPrefixCls(), \"-\").concat(suffixCls) : getGlobalPrefixCls();\n },\n getIconPrefixCls: getGlobalIconPrefixCls,\n getRootPrefixCls: function getRootPrefixCls() {\n // If Global prefixCls provided, use this\n if (globalPrefixCls) {\n return globalPrefixCls;\n }\n // Fallback to default prefixCls\n return getGlobalPrefixCls();\n },\n getTheme: function getTheme() {\n return globalTheme;\n }\n };\n};\nvar ProviderChildren = function ProviderChildren(props) {\n var children = props.children,\n customCsp = props.csp,\n autoInsertSpaceInButton = props.autoInsertSpaceInButton,\n alert = props.alert,\n anchor = props.anchor,\n form = props.form,\n locale = props.locale,\n componentSize = props.componentSize,\n direction = props.direction,\n space = props.space,\n virtual = props.virtual,\n dropdownMatchSelectWidth = props.dropdownMatchSelectWidth,\n popupMatchSelectWidth = props.popupMatchSelectWidth,\n popupOverflow = props.popupOverflow,\n legacyLocale = props.legacyLocale,\n parentContext = props.parentContext,\n customIconPrefixCls = props.iconPrefixCls,\n theme = props.theme,\n componentDisabled = props.componentDisabled,\n segmented = props.segmented,\n statistic = props.statistic,\n spin = props.spin,\n calendar = props.calendar,\n carousel = props.carousel,\n cascader = props.cascader,\n collapse = props.collapse,\n typography = props.typography,\n checkbox = props.checkbox,\n descriptions = props.descriptions,\n divider = props.divider,\n drawer = props.drawer,\n skeleton = props.skeleton,\n steps = props.steps,\n image = props.image,\n layout = props.layout,\n list = props.list,\n mentions = props.mentions,\n modal = props.modal,\n progress = props.progress,\n result = props.result,\n slider = props.slider,\n breadcrumb = props.breadcrumb,\n menu = props.menu,\n pagination = props.pagination,\n input = props.input,\n empty = props.empty,\n badge = props.badge,\n radio = props.radio,\n rate = props.rate,\n SWITCH = props.switch,\n transfer = props.transfer,\n avatar = props.avatar,\n message = props.message,\n tag = props.tag,\n table = props.table,\n card = props.card,\n tabs = props.tabs,\n timeline = props.timeline,\n timePicker = props.timePicker,\n upload = props.upload,\n notification = props.notification,\n tree = props.tree,\n colorPicker = props.colorPicker,\n datePicker = props.datePicker,\n wave = props.wave;\n // =================================== Warning ===================================\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? warning(dropdownMatchSelectWidth === undefined, 'ConfigProvider', '`dropdownMatchSelectWidth` is deprecated. Please use `popupMatchSelectWidth` instead.') : void 0;\n }\n // =================================== Context ===================================\n var getPrefixCls = React.useCallback(function (suffixCls, customizePrefixCls) {\n var prefixCls = props.prefixCls;\n if (customizePrefixCls) {\n return customizePrefixCls;\n }\n var mergedPrefixCls = prefixCls || parentContext.getPrefixCls('');\n return suffixCls ? \"\".concat(mergedPrefixCls, \"-\").concat(suffixCls) : mergedPrefixCls;\n }, [parentContext.getPrefixCls, props.prefixCls]);\n var iconPrefixCls = customIconPrefixCls || parentContext.iconPrefixCls || defaultIconPrefixCls;\n var shouldWrapSSR = iconPrefixCls !== parentContext.iconPrefixCls;\n var csp = customCsp || parentContext.csp;\n var wrapSSR = useStyle(iconPrefixCls, csp);\n var mergedTheme = useTheme(theme, parentContext.theme);\n if (process.env.NODE_ENV !== 'production') {\n existThemeConfig = existThemeConfig || !!mergedTheme;\n }\n var baseConfig = {\n csp: csp,\n autoInsertSpaceInButton: autoInsertSpaceInButton,\n alert: alert,\n anchor: anchor,\n locale: locale || legacyLocale,\n direction: direction,\n space: space,\n virtual: virtual,\n popupMatchSelectWidth: popupMatchSelectWidth !== null && popupMatchSelectWidth !== void 0 ? popupMatchSelectWidth : dropdownMatchSelectWidth,\n popupOverflow: popupOverflow,\n getPrefixCls: getPrefixCls,\n iconPrefixCls: iconPrefixCls,\n theme: mergedTheme,\n segmented: segmented,\n statistic: statistic,\n spin: spin,\n calendar: calendar,\n carousel: carousel,\n cascader: cascader,\n collapse: collapse,\n typography: typography,\n checkbox: checkbox,\n descriptions: descriptions,\n divider: divider,\n drawer: drawer,\n skeleton: skeleton,\n steps: steps,\n image: image,\n input: input,\n layout: layout,\n list: list,\n mentions: mentions,\n modal: modal,\n progress: progress,\n result: result,\n slider: slider,\n breadcrumb: breadcrumb,\n menu: menu,\n pagination: pagination,\n empty: empty,\n badge: badge,\n radio: radio,\n rate: rate,\n switch: SWITCH,\n transfer: transfer,\n avatar: avatar,\n message: message,\n tag: tag,\n table: table,\n card: card,\n tabs: tabs,\n timeline: timeline,\n timePicker: timePicker,\n upload: upload,\n notification: notification,\n tree: tree,\n colorPicker: colorPicker,\n datePicker: datePicker,\n wave: wave\n };\n var config = Object.assign({}, parentContext);\n Object.keys(baseConfig).forEach(function (key) {\n if (baseConfig[key] !== undefined) {\n config[key] = baseConfig[key];\n }\n });\n // Pass the props used by `useContext` directly with child component.\n // These props should merged into `config`.\n PASSED_PROPS.forEach(function (propName) {\n var propValue = props[propName];\n if (propValue) {\n config[propName] = propValue;\n }\n });\n // https://github.com/ant-design/ant-design/issues/27617\n var memoedConfig = useMemo(function () {\n return config;\n }, config, function (prevConfig, currentConfig) {\n var prevKeys = Object.keys(prevConfig);\n var currentKeys = Object.keys(currentConfig);\n return prevKeys.length !== currentKeys.length || prevKeys.some(function (key) {\n return prevConfig[key] !== currentConfig[key];\n });\n });\n var memoIconContextValue = React.useMemo(function () {\n return {\n prefixCls: iconPrefixCls,\n csp: csp\n };\n }, [iconPrefixCls, csp]);\n var childNode = shouldWrapSSR ? wrapSSR(children) : children;\n var validateMessages = React.useMemo(function () {\n var _a, _b, _c, _d;\n return merge(((_a = defaultLocale.Form) === null || _a === void 0 ? void 0 : _a.defaultValidateMessages) || {}, ((_c = (_b = memoedConfig.locale) === null || _b === void 0 ? void 0 : _b.Form) === null || _c === void 0 ? void 0 : _c.defaultValidateMessages) || {}, ((_d = memoedConfig.form) === null || _d === void 0 ? void 0 : _d.validateMessages) || {}, (form === null || form === void 0 ? void 0 : form.validateMessages) || {});\n }, [memoedConfig, form === null || form === void 0 ? void 0 : form.validateMessages]);\n if (Object.keys(validateMessages).length > 0) {\n childNode = /*#__PURE__*/React.createElement(ValidateMessagesContext.Provider, {\n value: validateMessages\n }, children);\n }\n if (locale) {\n childNode = /*#__PURE__*/React.createElement(LocaleProvider, {\n locale: locale,\n _ANT_MARK__: ANT_MARK\n }, childNode);\n }\n if (iconPrefixCls || csp) {\n childNode = /*#__PURE__*/React.createElement(IconContext.Provider, {\n value: memoIconContextValue\n }, childNode);\n }\n if (componentSize) {\n childNode = /*#__PURE__*/React.createElement(SizeContextProvider, {\n size: componentSize\n }, childNode);\n }\n // =================================== Motion ===================================\n childNode = /*#__PURE__*/React.createElement(MotionWrapper, null, childNode);\n // ================================ Dynamic theme ================================\n var memoTheme = React.useMemo(function () {\n var _a = mergedTheme || {},\n algorithm = _a.algorithm,\n token = _a.token,\n components = _a.components,\n rest = __rest(_a, [\"algorithm\", \"token\", \"components\"]);\n var themeObj = algorithm && (!Array.isArray(algorithm) || algorithm.length > 0) ? createTheme(algorithm) : defaultTheme;\n var parsedComponents = {};\n Object.entries(components || {}).forEach(function (_ref2) {\n var _ref3 = _slicedToArray(_ref2, 2),\n componentName = _ref3[0],\n componentToken = _ref3[1];\n var parsedToken = Object.assign({}, componentToken);\n if ('algorithm' in parsedToken) {\n if (parsedToken.algorithm === true) {\n parsedToken.theme = themeObj;\n } else if (Array.isArray(parsedToken.algorithm) || typeof parsedToken.algorithm === 'function') {\n parsedToken.theme = createTheme(parsedToken.algorithm);\n }\n delete parsedToken.algorithm;\n }\n parsedComponents[componentName] = parsedToken;\n });\n return Object.assign(Object.assign({}, rest), {\n theme: themeObj,\n token: Object.assign(Object.assign({}, defaultSeedToken), token),\n components: parsedComponents\n });\n }, [mergedTheme]);\n if (theme) {\n childNode = /*#__PURE__*/React.createElement(DesignTokenContext.Provider, {\n value: memoTheme\n }, childNode);\n }\n // =================================== Render ===================================\n if (componentDisabled !== undefined) {\n childNode = /*#__PURE__*/React.createElement(DisabledContextProvider, {\n disabled: componentDisabled\n }, childNode);\n }\n return /*#__PURE__*/React.createElement(ConfigContext.Provider, {\n value: memoedConfig\n }, childNode);\n};\nvar ConfigProvider = function ConfigProvider(props) {\n var context = React.useContext(ConfigContext);\n var antLocale = React.useContext(LocaleContext);\n return /*#__PURE__*/React.createElement(ProviderChildren, Object.assign({\n parentContext: context,\n legacyLocale: antLocale\n }, props));\n};\nConfigProvider.ConfigContext = ConfigContext;\nConfigProvider.SizeContext = SizeContext;\nConfigProvider.config = setGlobalConfig;\nConfigProvider.useConfig = useConfig;\nObject.defineProperty(ConfigProvider, 'SizeContext', {\n get: function get() {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'ConfigProvider', 'ConfigProvider.SizeContext is deprecated. Please use `ConfigProvider.useConfig().componentSize` instead.') : void 0;\n return SizeContext;\n }\n});\nif (process.env.NODE_ENV !== 'production') {\n ConfigProvider.displayName = 'ConfigProvider';\n}\nexport default ConfigProvider;","import useMemo from \"rc-util/es/hooks/useMemo\";\nimport isEqual from \"rc-util/es/isEqual\";\nimport { defaultConfig } from '../../theme/internal';\nexport default function useTheme(theme, parentTheme) {\n var themeConfig = theme || {};\n var parentThemeConfig = themeConfig.inherit === false || !parentTheme ? defaultConfig : parentTheme;\n return useMemo(function () {\n if (!theme) {\n return parentTheme;\n }\n // Override\n var mergedComponents = Object.assign({}, parentThemeConfig.components);\n Object.keys(theme.components || {}).forEach(function (componentName) {\n mergedComponents[componentName] = Object.assign(Object.assign({}, mergedComponents[componentName]), theme.components[componentName]);\n });\n // Base token\n return Object.assign(Object.assign(Object.assign({}, parentThemeConfig), themeConfig), {\n token: Object.assign(Object.assign({}, parentThemeConfig.token), themeConfig.token),\n components: mergedComponents\n });\n }, [themeConfig, parentThemeConfig], function (prev, next) {\n return prev.some(function (prevTheme, index) {\n var nextTheme = next[index];\n return !isEqual(prevTheme, nextTheme, true);\n });\n });\n}","// This icon file is generated automatically.\nvar ExclamationCircleFilled = {\n \"icon\": {\n \"tag\": \"svg\",\n \"attrs\": {\n \"viewBox\": \"64 64 896 896\",\n \"focusable\": \"false\"\n },\n \"children\": [{\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-32 232c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V296zm32 440a48.01 48.01 0 010-96 48.01 48.01 0 010 96z\"\n }\n }]\n },\n \"name\": \"exclamation-circle\",\n \"theme\": \"filled\"\n};\nexport default ExclamationCircleFilled;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport ExclamationCircleFilledSvg from \"@ant-design/icons-svg/es/asn/ExclamationCircleFilled\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar ExclamationCircleFilled = function ExclamationCircleFilled(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: ExclamationCircleFilledSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n ExclamationCircleFilled.displayName = 'ExclamationCircleFilled';\n}\nexport default /*#__PURE__*/React.forwardRef(ExclamationCircleFilled);","// This icon file is generated automatically.\nvar InfoCircleFilled = {\n \"icon\": {\n \"tag\": \"svg\",\n \"attrs\": {\n \"viewBox\": \"64 64 896 896\",\n \"focusable\": \"false\"\n },\n \"children\": [{\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm32 664c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V456c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272zm-32-344a48.01 48.01 0 010-96 48.01 48.01 0 010 96z\"\n }\n }]\n },\n \"name\": \"info-circle\",\n \"theme\": \"filled\"\n};\nexport default InfoCircleFilled;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport InfoCircleFilledSvg from \"@ant-design/icons-svg/es/asn/InfoCircleFilled\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar InfoCircleFilled = function InfoCircleFilled(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: InfoCircleFilledSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n InfoCircleFilled.displayName = 'InfoCircleFilled';\n}\nexport default /*#__PURE__*/React.forwardRef(InfoCircleFilled);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport classNames from 'classnames';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport * as React from 'react';\nvar Notify = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var prefixCls = props.prefixCls,\n style = props.style,\n className = props.className,\n _props$duration = props.duration,\n duration = _props$duration === void 0 ? 4.5 : _props$duration,\n eventKey = props.eventKey,\n content = props.content,\n closable = props.closable,\n _props$closeIcon = props.closeIcon,\n closeIcon = _props$closeIcon === void 0 ? 'x' : _props$closeIcon,\n divProps = props.props,\n onClick = props.onClick,\n onNoticeClose = props.onNoticeClose,\n times = props.times;\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n hovering = _React$useState2[0],\n setHovering = _React$useState2[1];\n // ======================== Close =========================\n var onInternalClose = function onInternalClose() {\n onNoticeClose(eventKey);\n };\n var onCloseKeyDown = function onCloseKeyDown(e) {\n if (e.key === 'Enter' || e.code === 'Enter' || e.keyCode === KeyCode.ENTER) {\n onInternalClose();\n }\n };\n // ======================== Effect ========================\n React.useEffect(function () {\n if (!hovering && duration > 0) {\n var timeout = setTimeout(function () {\n onInternalClose();\n }, duration * 1000);\n return function () {\n clearTimeout(timeout);\n };\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [duration, hovering, times]);\n // ======================== Render ========================\n var noticePrefixCls = \"\".concat(prefixCls, \"-notice\");\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, divProps, {\n ref: ref,\n className: classNames(noticePrefixCls, className, _defineProperty({}, \"\".concat(noticePrefixCls, \"-closable\"), closable)),\n style: style,\n onMouseEnter: function onMouseEnter() {\n setHovering(true);\n },\n onMouseLeave: function onMouseLeave() {\n setHovering(false);\n },\n onClick: onClick\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(noticePrefixCls, \"-content\")\n }, content), closable && /*#__PURE__*/React.createElement(\"a\", {\n tabIndex: 0,\n className: \"\".concat(noticePrefixCls, \"-close\"),\n onKeyDown: onCloseKeyDown,\n onClick: function onClick(e) {\n e.preventDefault();\n e.stopPropagation();\n onInternalClose();\n }\n }, closeIcon));\n});\nexport default Notify;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { createPortal } from 'react-dom';\nimport { CSSMotionList } from 'rc-motion';\nimport classNames from 'classnames';\nimport Notice from './Notice';\n// ant-notification ant-notification-topRight\nvar Notifications = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-notification' : _props$prefixCls,\n container = props.container,\n motion = props.motion,\n maxCount = props.maxCount,\n className = props.className,\n style = props.style,\n onAllRemoved = props.onAllRemoved;\n var _React$useState = React.useState([]),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n configList = _React$useState2[0],\n setConfigList = _React$useState2[1];\n // ======================== Close =========================\n var onNoticeClose = function onNoticeClose(key) {\n var _config$onClose;\n // Trigger close event\n var config = configList.find(function (item) {\n return item.key === key;\n });\n config === null || config === void 0 ? void 0 : (_config$onClose = config.onClose) === null || _config$onClose === void 0 ? void 0 : _config$onClose.call(config);\n setConfigList(function (list) {\n return list.filter(function (item) {\n return item.key !== key;\n });\n });\n };\n // ========================= Refs =========================\n React.useImperativeHandle(ref, function () {\n return {\n open: function open(config) {\n setConfigList(function (list) {\n var clone = _toConsumableArray(list);\n // Replace if exist\n var index = clone.findIndex(function (item) {\n return item.key === config.key;\n });\n var innerConfig = _objectSpread({}, config);\n if (index >= 0) {\n var _list$index;\n innerConfig.times = (((_list$index = list[index]) === null || _list$index === void 0 ? void 0 : _list$index.times) || 0) + 1;\n clone[index] = innerConfig;\n } else {\n innerConfig.times = 0;\n clone.push(innerConfig);\n }\n if (maxCount > 0 && clone.length > maxCount) {\n clone = clone.slice(-maxCount);\n }\n return clone;\n });\n },\n close: function close(key) {\n onNoticeClose(key);\n },\n destroy: function destroy() {\n setConfigList([]);\n }\n };\n });\n // ====================== Placements ======================\n var _React$useState3 = React.useState({}),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n placements = _React$useState4[0],\n setPlacements = _React$useState4[1];\n React.useEffect(function () {\n var nextPlacements = {};\n configList.forEach(function (config) {\n var _config$placement = config.placement,\n placement = _config$placement === void 0 ? 'topRight' : _config$placement;\n if (placement) {\n nextPlacements[placement] = nextPlacements[placement] || [];\n nextPlacements[placement].push(config);\n }\n });\n // Fill exist placements to avoid empty list causing remove without motion\n Object.keys(placements).forEach(function (placement) {\n nextPlacements[placement] = nextPlacements[placement] || [];\n });\n setPlacements(nextPlacements);\n }, [configList]);\n // Clean up container if all notices fade out\n var onAllNoticeRemoved = function onAllNoticeRemoved(placement) {\n setPlacements(function (originPlacements) {\n var clone = _objectSpread({}, originPlacements);\n var list = clone[placement] || [];\n if (!list.length) {\n delete clone[placement];\n }\n return clone;\n });\n };\n // Effect tell that placements is empty now\n var emptyRef = React.useRef(false);\n React.useEffect(function () {\n if (Object.keys(placements).length > 0) {\n emptyRef.current = true;\n } else if (emptyRef.current) {\n // Trigger only when from exist to empty\n onAllRemoved === null || onAllRemoved === void 0 ? void 0 : onAllRemoved();\n emptyRef.current = false;\n }\n }, [placements]);\n // ======================== Render ========================\n if (!container) {\n return null;\n }\n var placementList = Object.keys(placements);\n return /*#__PURE__*/createPortal( /*#__PURE__*/React.createElement(React.Fragment, null, placementList.map(function (placement) {\n var placementConfigList = placements[placement];\n var keys = placementConfigList.map(function (config) {\n return {\n config: config,\n key: config.key\n };\n });\n var placementMotion = typeof motion === 'function' ? motion(placement) : motion;\n return /*#__PURE__*/React.createElement(CSSMotionList, _extends({\n key: placement,\n className: classNames(prefixCls, \"\".concat(prefixCls, \"-\").concat(placement), className === null || className === void 0 ? void 0 : className(placement)),\n style: style === null || style === void 0 ? void 0 : style(placement),\n keys: keys,\n motionAppear: true\n }, placementMotion, {\n onAllRemoved: function onAllRemoved() {\n onAllNoticeRemoved(placement);\n }\n }), function (_ref, nodeRef) {\n var config = _ref.config,\n motionClassName = _ref.className,\n motionStyle = _ref.style;\n var key = config.key,\n times = config.times;\n var configClassName = config.className,\n configStyle = config.style;\n return /*#__PURE__*/React.createElement(Notice, _extends({}, config, {\n ref: nodeRef,\n prefixCls: prefixCls,\n className: classNames(motionClassName, configClassName),\n style: _objectSpread(_objectSpread({}, motionStyle), configStyle),\n times: times,\n key: key,\n eventKey: key,\n onNoticeClose: onNoticeClose\n }));\n });\n })), container);\n});\nif (process.env.NODE_ENV !== 'production') {\n Notifications.displayName = 'Notifications';\n}\nexport default Notifications;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"getContainer\", \"motion\", \"prefixCls\", \"maxCount\", \"className\", \"style\", \"onAllRemoved\"];\nimport * as React from 'react';\nimport Notifications from './Notifications';\nvar defaultGetContainer = function defaultGetContainer() {\n return document.body;\n};\nvar uniqueKey = 0;\nfunction mergeConfig() {\n var clone = {};\n for (var _len = arguments.length, objList = new Array(_len), _key = 0; _key < _len; _key++) {\n objList[_key] = arguments[_key];\n }\n objList.forEach(function (obj) {\n if (obj) {\n Object.keys(obj).forEach(function (key) {\n var val = obj[key];\n if (val !== undefined) {\n clone[key] = val;\n }\n });\n }\n });\n return clone;\n}\nexport default function useNotification() {\n var rootConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _rootConfig$getContai = rootConfig.getContainer,\n getContainer = _rootConfig$getContai === void 0 ? defaultGetContainer : _rootConfig$getContai,\n motion = rootConfig.motion,\n prefixCls = rootConfig.prefixCls,\n maxCount = rootConfig.maxCount,\n className = rootConfig.className,\n style = rootConfig.style,\n onAllRemoved = rootConfig.onAllRemoved,\n shareConfig = _objectWithoutProperties(rootConfig, _excluded);\n var _React$useState = React.useState(),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n container = _React$useState2[0],\n setContainer = _React$useState2[1];\n var notificationsRef = React.useRef();\n var contextHolder = /*#__PURE__*/React.createElement(Notifications, {\n container: container,\n ref: notificationsRef,\n prefixCls: prefixCls,\n motion: motion,\n maxCount: maxCount,\n className: className,\n style: style,\n onAllRemoved: onAllRemoved\n });\n var _React$useState3 = React.useState([]),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n taskQueue = _React$useState4[0],\n setTaskQueue = _React$useState4[1];\n // ========================= Refs =========================\n var api = React.useMemo(function () {\n return {\n open: function open(config) {\n var mergedConfig = mergeConfig(shareConfig, config);\n if (mergedConfig.key === null || mergedConfig.key === undefined) {\n mergedConfig.key = \"rc-notification-\".concat(uniqueKey);\n uniqueKey += 1;\n }\n setTaskQueue(function (queue) {\n return [].concat(_toConsumableArray(queue), [{\n type: 'open',\n config: mergedConfig\n }]);\n });\n },\n close: function close(key) {\n setTaskQueue(function (queue) {\n return [].concat(_toConsumableArray(queue), [{\n type: 'close',\n key: key\n }]);\n });\n },\n destroy: function destroy() {\n setTaskQueue(function (queue) {\n return [].concat(_toConsumableArray(queue), [{\n type: 'destroy'\n }]);\n });\n }\n };\n }, []);\n // ======================= Container ======================\n // React 18 should all in effect that we will check container in each render\n // Which means getContainer should be stable.\n React.useEffect(function () {\n setContainer(getContainer());\n });\n // ======================== Effect ========================\n React.useEffect(function () {\n // Flush task when node ready\n if (notificationsRef.current && taskQueue.length) {\n taskQueue.forEach(function (task) {\n switch (task.type) {\n case 'open':\n notificationsRef.current.open(task.config);\n break;\n case 'close':\n notificationsRef.current.close(task.key);\n break;\n case 'destroy':\n notificationsRef.current.destroy();\n break;\n }\n });\n // React 17 will mix order of effect & setState in async\n // - open: setState[0]\n // - effect[0]\n // - open: setState[1]\n // - effect setState([]) * here will clean up [0, 1] in React 17\n setTaskQueue(function (oriQueue) {\n return oriQueue.filter(function (task) {\n return !taskQueue.includes(task);\n });\n });\n }\n }, [taskQueue]);\n // ======================== Return ========================\n return [api, contextHolder];\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { Keyframes } from '@ant-design/cssinjs';\nimport { resetComponent } from '../../style';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nvar genMessageStyle = function genMessageStyle(token) {\n var _noticeStyle, _Object$assign;\n var componentCls = token.componentCls,\n iconCls = token.iconCls,\n boxShadow = token.boxShadow,\n colorText = token.colorText,\n colorSuccess = token.colorSuccess,\n colorError = token.colorError,\n colorWarning = token.colorWarning,\n colorInfo = token.colorInfo,\n fontSizeLG = token.fontSizeLG,\n motionEaseInOutCirc = token.motionEaseInOutCirc,\n motionDurationSlow = token.motionDurationSlow,\n marginXS = token.marginXS,\n paddingXS = token.paddingXS,\n borderRadiusLG = token.borderRadiusLG,\n zIndexPopup = token.zIndexPopup,\n contentPadding = token.contentPadding,\n contentBg = token.contentBg;\n var noticeCls = \"\".concat(componentCls, \"-notice\");\n var messageMoveIn = new Keyframes('MessageMoveIn', {\n '0%': {\n padding: 0,\n transform: 'translateY(-100%)',\n opacity: 0\n },\n '100%': {\n padding: paddingXS,\n transform: 'translateY(0)',\n opacity: 1\n }\n });\n var messageMoveOut = new Keyframes('MessageMoveOut', {\n '0%': {\n maxHeight: token.height,\n padding: paddingXS,\n opacity: 1\n },\n '100%': {\n maxHeight: 0,\n padding: 0,\n opacity: 0\n }\n });\n var noticeStyle = (_noticeStyle = {\n padding: paddingXS,\n textAlign: 'center'\n }, _defineProperty(_noticeStyle, \"\".concat(componentCls, \"-custom-content > \").concat(iconCls), {\n verticalAlign: 'text-bottom',\n marginInlineEnd: marginXS,\n fontSize: fontSizeLG\n }), _defineProperty(_noticeStyle, \"\".concat(noticeCls, \"-content\"), {\n display: 'inline-block',\n padding: contentPadding,\n background: contentBg,\n borderRadius: borderRadiusLG,\n boxShadow: boxShadow,\n pointerEvents: 'all'\n }), _defineProperty(_noticeStyle, \"\".concat(componentCls, \"-success > \").concat(iconCls), {\n color: colorSuccess\n }), _defineProperty(_noticeStyle, \"\".concat(componentCls, \"-error > \").concat(iconCls), {\n color: colorError\n }), _defineProperty(_noticeStyle, \"\".concat(componentCls, \"-warning > \").concat(iconCls), {\n color: colorWarning\n }), _defineProperty(_noticeStyle, \"\".concat(componentCls, \"-info > \").concat(iconCls, \",\\n \").concat(componentCls, \"-loading > \").concat(iconCls), {\n color: colorInfo\n }), _noticeStyle);\n return [// ============================ Holder ============================\n _defineProperty({}, componentCls, Object.assign(Object.assign({}, resetComponent(token)), (_Object$assign = {\n color: colorText,\n position: 'fixed',\n top: marginXS,\n width: '100%',\n pointerEvents: 'none',\n zIndex: zIndexPopup\n }, _defineProperty(_Object$assign, \"\".concat(componentCls, \"-move-up\"), {\n animationFillMode: 'forwards'\n }), _defineProperty(_Object$assign, \"\\n \".concat(componentCls, \"-move-up-appear,\\n \").concat(componentCls, \"-move-up-enter\\n \"), {\n animationName: messageMoveIn,\n animationDuration: motionDurationSlow,\n animationPlayState: 'paused',\n animationTimingFunction: motionEaseInOutCirc\n }), _defineProperty(_Object$assign, \"\\n \".concat(componentCls, \"-move-up-appear\").concat(componentCls, \"-move-up-appear-active,\\n \").concat(componentCls, \"-move-up-enter\").concat(componentCls, \"-move-up-enter-active\\n \"), {\n animationPlayState: 'running'\n }), _defineProperty(_Object$assign, \"\".concat(componentCls, \"-move-up-leave\"), {\n animationName: messageMoveOut,\n animationDuration: motionDurationSlow,\n animationPlayState: 'paused',\n animationTimingFunction: motionEaseInOutCirc\n }), _defineProperty(_Object$assign, \"\".concat(componentCls, \"-move-up-leave\").concat(componentCls, \"-move-up-leave-active\"), {\n animationPlayState: 'running'\n }), _defineProperty(_Object$assign, '&-rtl', {\n direction: 'rtl',\n span: {\n direction: 'rtl'\n }\n }), _Object$assign))), // ============================ Notice ============================\n _defineProperty({}, componentCls, _defineProperty({}, noticeCls, Object.assign({}, noticeStyle))), // ============================= Pure =============================\n _defineProperty({}, \"\".concat(componentCls, \"-notice-pure-panel\"), Object.assign(Object.assign({}, noticeStyle), {\n padding: 0,\n textAlign: 'start'\n }))];\n};\n// ============================== Export ==============================\nexport default genComponentStyleHook('Message', function (token) {\n // Gen-style functions here\n var combinedToken = mergeToken(token, {\n height: 150\n });\n return [genMessageStyle(combinedToken)];\n}, function (token) {\n return {\n zIndexPopup: token.zIndexPopupBase + 10,\n contentBg: token.colorBgElevated,\n contentPadding: \"\".concat((token.controlHeightLG - token.fontSize * token.lineHeight) / 2, \"px \").concat(token.paddingSM, \"px\")\n };\n}, {\n clientOnly: true\n});","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport CheckCircleFilled from \"@ant-design/icons/es/icons/CheckCircleFilled\";\nimport CloseCircleFilled from \"@ant-design/icons/es/icons/CloseCircleFilled\";\nimport ExclamationCircleFilled from \"@ant-design/icons/es/icons/ExclamationCircleFilled\";\nimport InfoCircleFilled from \"@ant-design/icons/es/icons/InfoCircleFilled\";\nimport LoadingOutlined from \"@ant-design/icons/es/icons/LoadingOutlined\";\nimport classNames from 'classnames';\nimport { Notice } from 'rc-notification';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport useStyle from './style';\nexport var TypeIcon = {\n info: /*#__PURE__*/React.createElement(InfoCircleFilled, null),\n success: /*#__PURE__*/React.createElement(CheckCircleFilled, null),\n error: /*#__PURE__*/React.createElement(CloseCircleFilled, null),\n warning: /*#__PURE__*/React.createElement(ExclamationCircleFilled, null),\n loading: /*#__PURE__*/React.createElement(LoadingOutlined, null)\n};\nexport var PureContent = function PureContent(_ref) {\n var prefixCls = _ref.prefixCls,\n type = _ref.type,\n icon = _ref.icon,\n children = _ref.children;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-custom-content\"), \"\".concat(prefixCls, \"-\").concat(type))\n }, icon || TypeIcon[type], /*#__PURE__*/React.createElement(\"span\", null, children));\n};\n/** @private Internal Component. Do not use in your production. */\nvar PurePanel = function PurePanel(props) {\n var staticPrefixCls = props.prefixCls,\n className = props.className,\n type = props.type,\n icon = props.icon,\n content = props.content,\n restProps = __rest(props, [\"prefixCls\", \"className\", \"type\", \"icon\", \"content\"]);\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls;\n var prefixCls = staticPrefixCls || getPrefixCls('message');\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n hashId = _useStyle2[1];\n return /*#__PURE__*/React.createElement(Notice, Object.assign({}, restProps, {\n prefixCls: prefixCls,\n className: classNames(className, hashId, \"\".concat(prefixCls, \"-notice-pure-panel\")),\n eventKey: \"pure\",\n duration: null,\n content: /*#__PURE__*/React.createElement(PureContent, {\n prefixCls: prefixCls,\n type: type,\n icon: icon\n }, content)\n }));\n};\nexport default PurePanel;","export function getMotion(prefixCls, transitionName) {\n return {\n motionName: transitionName !== null && transitionName !== void 0 ? transitionName : \"\".concat(prefixCls, \"-move-up\")\n };\n}\n/** Wrap message open with promise like function */\nexport function wrapPromiseFn(openFn) {\n var closeFn;\n var closePromise = new Promise(function (resolve) {\n closeFn = openFn(function () {\n resolve(true);\n });\n });\n var result = function result() {\n closeFn === null || closeFn === void 0 ? void 0 : closeFn();\n };\n result.then = function (filled, rejected) {\n return closePromise.then(filled, rejected);\n };\n result.promise = closePromise;\n return result;\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport CloseOutlined from \"@ant-design/icons/es/icons/CloseOutlined\";\nimport classNames from 'classnames';\nimport { useNotification as useRcNotification } from 'rc-notification';\nimport * as React from 'react';\nimport warning from '../_util/warning';\nimport { ConfigContext } from '../config-provider';\nimport { PureContent } from './PurePanel';\nimport useStyle from './style';\nimport { getMotion, wrapPromiseFn } from './util';\nvar DEFAULT_OFFSET = 8;\nvar DEFAULT_DURATION = 3;\nvar Holder = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var top = props.top,\n staticPrefixCls = props.prefixCls,\n staticGetContainer = props.getContainer,\n maxCount = props.maxCount,\n _props$duration = props.duration,\n duration = _props$duration === void 0 ? DEFAULT_DURATION : _props$duration,\n rtl = props.rtl,\n transitionName = props.transitionName,\n onAllRemoved = props.onAllRemoved;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n getPopupContainer = _React$useContext.getPopupContainer,\n message = _React$useContext.message;\n var prefixCls = staticPrefixCls || getPrefixCls('message');\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n hashId = _useStyle2[1];\n // =============================== Style ===============================\n var getStyle = function getStyle() {\n return {\n left: '50%',\n transform: 'translateX(-50%)',\n top: top !== null && top !== void 0 ? top : DEFAULT_OFFSET\n };\n };\n var getClassName = function getClassName() {\n return classNames(hashId, _defineProperty({}, \"\".concat(prefixCls, \"-rtl\"), rtl));\n };\n // ============================== Motion ===============================\n var getNotificationMotion = function getNotificationMotion() {\n return getMotion(prefixCls, transitionName);\n };\n // ============================ Close Icon =============================\n var mergedCloseIcon = /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-close-x\")\n }, /*#__PURE__*/React.createElement(CloseOutlined, {\n className: \"\".concat(prefixCls, \"-close-icon\")\n }));\n // ============================== Origin ===============================\n var _useRcNotification = useRcNotification({\n prefixCls: prefixCls,\n style: getStyle,\n className: getClassName,\n motion: getNotificationMotion,\n closable: false,\n closeIcon: mergedCloseIcon,\n duration: duration,\n getContainer: function getContainer() {\n return (staticGetContainer === null || staticGetContainer === void 0 ? void 0 : staticGetContainer()) || (getPopupContainer === null || getPopupContainer === void 0 ? void 0 : getPopupContainer()) || document.body;\n },\n maxCount: maxCount,\n onAllRemoved: onAllRemoved\n }),\n _useRcNotification2 = _slicedToArray(_useRcNotification, 2),\n api = _useRcNotification2[0],\n holder = _useRcNotification2[1];\n // ================================ Ref ================================\n React.useImperativeHandle(ref, function () {\n return Object.assign(Object.assign({}, api), {\n prefixCls: prefixCls,\n hashId: hashId,\n message: message\n });\n });\n return holder;\n});\n// ==============================================================================\n// == Hook ==\n// ==============================================================================\nvar keyIndex = 0;\nexport function useInternalMessage(messageConfig) {\n var holderRef = React.useRef(null);\n // ================================ API ================================\n var wrapAPI = React.useMemo(function () {\n // Wrap with notification content\n // >>> close\n var close = function close(key) {\n var _a;\n (_a = holderRef.current) === null || _a === void 0 ? void 0 : _a.close(key);\n };\n // >>> Open\n var open = function open(config) {\n if (!holderRef.current) {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Message', 'You are calling notice in render which will break in React 18 concurrent mode. Please trigger in effect instead.') : void 0;\n var fakeResult = function fakeResult() {};\n fakeResult.then = function () {};\n return fakeResult;\n }\n var _holderRef$current = holderRef.current,\n originOpen = _holderRef$current.open,\n prefixCls = _holderRef$current.prefixCls,\n hashId = _holderRef$current.hashId,\n message = _holderRef$current.message;\n var noticePrefixCls = \"\".concat(prefixCls, \"-notice\");\n var content = config.content,\n icon = config.icon,\n type = config.type,\n key = config.key,\n className = config.className,\n style = config.style,\n _onClose = config.onClose,\n restConfig = __rest(config, [\"content\", \"icon\", \"type\", \"key\", \"className\", \"style\", \"onClose\"]);\n var mergedKey = key;\n if (mergedKey === undefined || mergedKey === null) {\n keyIndex += 1;\n mergedKey = \"antd-message-\".concat(keyIndex);\n }\n return wrapPromiseFn(function (resolve) {\n originOpen(Object.assign(Object.assign({}, restConfig), {\n key: mergedKey,\n content: /*#__PURE__*/React.createElement(PureContent, {\n prefixCls: prefixCls,\n type: type,\n icon: icon\n }, content),\n placement: 'top',\n className: classNames(type && \"\".concat(noticePrefixCls, \"-\").concat(type), hashId, className, message === null || message === void 0 ? void 0 : message.className),\n style: Object.assign(Object.assign({}, message === null || message === void 0 ? void 0 : message.style), style),\n onClose: function onClose() {\n _onClose === null || _onClose === void 0 ? void 0 : _onClose();\n resolve();\n }\n }));\n // Return close function\n return function () {\n close(mergedKey);\n };\n });\n };\n // >>> destroy\n var destroy = function destroy(key) {\n var _a;\n if (key !== undefined) {\n close(key);\n } else {\n (_a = holderRef.current) === null || _a === void 0 ? void 0 : _a.destroy();\n }\n };\n var clone = {\n open: open,\n destroy: destroy\n };\n var keys = ['info', 'success', 'warning', 'error', 'loading'];\n keys.forEach(function (type) {\n var typeOpen = function typeOpen(jointContent, duration, onClose) {\n var config;\n if (jointContent && typeof jointContent === 'object' && 'content' in jointContent) {\n config = jointContent;\n } else {\n config = {\n content: jointContent\n };\n }\n // Params\n var mergedDuration;\n var mergedOnClose;\n if (typeof duration === 'function') {\n mergedOnClose = duration;\n } else {\n mergedDuration = duration;\n mergedOnClose = onClose;\n }\n var mergedConfig = Object.assign(Object.assign({\n onClose: mergedOnClose,\n duration: mergedDuration\n }, config), {\n type: type\n });\n return open(mergedConfig);\n };\n clone[type] = typeOpen;\n });\n return clone;\n }, []);\n // ============================== Return ===============================\n return [wrapAPI, /*#__PURE__*/React.createElement(Holder, Object.assign({\n key: \"message-holder\"\n }, messageConfig, {\n ref: holderRef\n }))];\n}\nexport default function useMessage(messageConfig) {\n return useInternalMessage(messageConfig);\n}","'use client';\n\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport { render } from \"rc-util/es/React/render\";\nimport * as React from 'react';\nimport ConfigProvider, { globalConfig, warnContext } from '../config-provider';\nimport PurePanel from './PurePanel';\nimport useMessage, { useInternalMessage } from './useMessage';\nimport { wrapPromiseFn } from './util';\nvar message = null;\nvar act = function act(callback) {\n return callback();\n};\nvar taskQueue = [];\nvar defaultGlobalConfig = {};\nfunction getGlobalContext() {\n var _defaultGlobalConfig = defaultGlobalConfig,\n globalPrefixCls = _defaultGlobalConfig.prefixCls,\n globalGetContainer = _defaultGlobalConfig.getContainer,\n duration = _defaultGlobalConfig.duration,\n rtl = _defaultGlobalConfig.rtl,\n maxCount = _defaultGlobalConfig.maxCount,\n top = _defaultGlobalConfig.top;\n var mergedPrefixCls = globalPrefixCls !== null && globalPrefixCls !== void 0 ? globalPrefixCls : globalConfig().getPrefixCls('message');\n var mergedContainer = (globalGetContainer === null || globalGetContainer === void 0 ? void 0 : globalGetContainer()) || document.body;\n return {\n prefixCls: mergedPrefixCls,\n container: mergedContainer,\n duration: duration,\n rtl: rtl,\n maxCount: maxCount,\n top: top\n };\n}\nvar GlobalHolder = /*#__PURE__*/React.forwardRef(function (_, ref) {\n var initializeMessageConfig = function initializeMessageConfig() {\n var _getGlobalContext = getGlobalContext(),\n prefixCls = _getGlobalContext.prefixCls,\n container = _getGlobalContext.container,\n maxCount = _getGlobalContext.maxCount,\n duration = _getGlobalContext.duration,\n rtl = _getGlobalContext.rtl,\n top = _getGlobalContext.top;\n return {\n prefixCls: prefixCls,\n getContainer: function getContainer() {\n return container;\n },\n maxCount: maxCount,\n duration: duration,\n rtl: rtl,\n top: top\n };\n };\n var _React$useState = React.useState(initializeMessageConfig),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n messageConfig = _React$useState2[0],\n setMessageConfig = _React$useState2[1];\n var _useInternalMessage = useInternalMessage(messageConfig),\n _useInternalMessage2 = _slicedToArray(_useInternalMessage, 2),\n api = _useInternalMessage2[0],\n holder = _useInternalMessage2[1];\n var global = globalConfig();\n var rootPrefixCls = global.getRootPrefixCls();\n var rootIconPrefixCls = global.getIconPrefixCls();\n var theme = global.getTheme();\n var sync = function sync() {\n setMessageConfig(initializeMessageConfig);\n };\n React.useEffect(sync, []);\n React.useImperativeHandle(ref, function () {\n var instance = Object.assign({}, api);\n Object.keys(instance).forEach(function (method) {\n instance[method] = function () {\n sync();\n return api[method].apply(api, arguments);\n };\n });\n return {\n instance: instance,\n sync: sync\n };\n });\n return /*#__PURE__*/React.createElement(ConfigProvider, {\n prefixCls: rootPrefixCls,\n iconPrefixCls: rootIconPrefixCls,\n theme: theme\n }, holder);\n});\nfunction flushNotice() {\n if (!message) {\n var holderFragment = document.createDocumentFragment();\n var newMessage = {\n fragment: holderFragment\n };\n message = newMessage;\n // Delay render to avoid sync issue\n act(function () {\n render( /*#__PURE__*/React.createElement(GlobalHolder, {\n ref: function ref(node) {\n var _ref = node || {},\n instance = _ref.instance,\n sync = _ref.sync;\n // React 18 test env will throw if call immediately in ref\n Promise.resolve().then(function () {\n if (!newMessage.instance && instance) {\n newMessage.instance = instance;\n newMessage.sync = sync;\n flushNotice();\n }\n });\n }\n }), holderFragment);\n });\n return;\n }\n // Notification not ready\n if (!message.instance) {\n return;\n }\n // >>> Execute task\n taskQueue.forEach(function (task) {\n var type = task.type,\n skipped = task.skipped;\n // Only `skipped` when user call notice but cancel it immediately\n // and instance not ready\n if (!skipped) {\n switch (type) {\n case 'open':\n {\n act(function () {\n var closeFn = message.instance.open(Object.assign(Object.assign({}, defaultGlobalConfig), task.config));\n closeFn === null || closeFn === void 0 ? void 0 : closeFn.then(task.resolve);\n task.setCloseFn(closeFn);\n });\n break;\n }\n case 'destroy':\n act(function () {\n message === null || message === void 0 ? void 0 : message.instance.destroy(task.key);\n });\n break;\n // Other type open\n default:\n {\n act(function () {\n var _message$instance;\n var closeFn = (_message$instance = message.instance)[type].apply(_message$instance, _toConsumableArray(task.args));\n closeFn === null || closeFn === void 0 ? void 0 : closeFn.then(task.resolve);\n task.setCloseFn(closeFn);\n });\n }\n }\n }\n });\n // Clean up\n taskQueue = [];\n}\n// ==============================================================================\n// == Export ==\n// ==============================================================================\nfunction setMessageGlobalConfig(config) {\n defaultGlobalConfig = Object.assign(Object.assign({}, defaultGlobalConfig), config);\n // Trigger sync for it\n act(function () {\n var _a;\n (_a = message === null || message === void 0 ? void 0 : message.sync) === null || _a === void 0 ? void 0 : _a.call(message);\n });\n}\nfunction open(config) {\n var result = wrapPromiseFn(function (resolve) {\n var closeFn;\n var task = {\n type: 'open',\n config: config,\n resolve: resolve,\n setCloseFn: function setCloseFn(fn) {\n closeFn = fn;\n }\n };\n taskQueue.push(task);\n return function () {\n if (closeFn) {\n act(function () {\n closeFn();\n });\n } else {\n task.skipped = true;\n }\n };\n });\n flushNotice();\n return result;\n}\nfunction typeOpen(type, args) {\n // Warning if exist theme\n if (process.env.NODE_ENV !== 'production') {\n warnContext('message');\n }\n var result = wrapPromiseFn(function (resolve) {\n var closeFn;\n var task = {\n type: type,\n args: args,\n resolve: resolve,\n setCloseFn: function setCloseFn(fn) {\n closeFn = fn;\n }\n };\n taskQueue.push(task);\n return function () {\n if (closeFn) {\n act(function () {\n closeFn();\n });\n } else {\n task.skipped = true;\n }\n };\n });\n flushNotice();\n return result;\n}\nfunction destroy(key) {\n taskQueue.push({\n type: 'destroy',\n key: key\n });\n flushNotice();\n}\nvar methods = ['success', 'info', 'warning', 'error', 'loading'];\nvar baseStaticMethods = {\n open: open,\n destroy: destroy,\n config: setMessageGlobalConfig,\n useMessage: useMessage,\n _InternalPanelDoNotUseOrYouWillBeFired: PurePanel\n};\nvar staticMethods = baseStaticMethods;\nmethods.forEach(function (type) {\n staticMethods[type] = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return typeOpen(type, args);\n };\n});\n// ==============================================================================\n// == Test ==\n// ==============================================================================\nvar noop = function noop() {};\n/** @internal Only Work in test env */\n// eslint-disable-next-line import/no-mutable-exports\nexport var actWrapper = noop;\nif (process.env.NODE_ENV === 'test') {\n actWrapper = function actWrapper(wrapper) {\n act = wrapper;\n };\n}\n/** @internal Only Work in test env */\n// eslint-disable-next-line import/no-mutable-exports\nexport var actDestroy = noop;\nif (process.env.NODE_ENV === 'test') {\n actDestroy = function actDestroy() {\n message = null;\n };\n}\nexport default staticMethods;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nvar Element = function Element(props) {\n var _classNames, _classNames2;\n var prefixCls = props.prefixCls,\n className = props.className,\n style = props.style,\n size = props.size,\n shape = props.shape;\n var sizeCls = classNames((_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-lg\"), size === 'large'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-sm\"), size === 'small'), _classNames));\n var shapeCls = classNames((_classNames2 = {}, _defineProperty(_classNames2, \"\".concat(prefixCls, \"-circle\"), shape === 'circle'), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-square\"), shape === 'square'), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-round\"), shape === 'round'), _classNames2));\n var sizeStyle = React.useMemo(function () {\n return typeof size === 'number' ? {\n width: size,\n height: size,\n lineHeight: \"\".concat(size, \"px\")\n } : {};\n }, [size]);\n return /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(prefixCls, sizeCls, shapeCls, className),\n style: Object.assign(Object.assign({}, sizeStyle), style)\n });\n};\nexport default Element;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { Keyframes } from '@ant-design/cssinjs';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nvar skeletonClsLoading = new Keyframes(\"ant-skeleton-loading\", {\n '0%': {\n backgroundPosition: '100% 50%'\n },\n '100%': {\n backgroundPosition: '0 50%'\n }\n});\nvar genSkeletonElementCommonSize = function genSkeletonElementCommonSize(size) {\n return {\n height: size,\n lineHeight: \"\".concat(size, \"px\")\n };\n};\nvar genSkeletonElementAvatarSize = function genSkeletonElementAvatarSize(size) {\n return Object.assign({\n width: size\n }, genSkeletonElementCommonSize(size));\n};\nvar genSkeletonColor = function genSkeletonColor(token) {\n return {\n background: token.skeletonLoadingBackground,\n backgroundSize: '400% 100%',\n animationName: skeletonClsLoading,\n animationDuration: token.skeletonLoadingMotionDuration,\n animationTimingFunction: 'ease',\n animationIterationCount: 'infinite'\n };\n};\nvar genSkeletonElementInputSize = function genSkeletonElementInputSize(size) {\n return Object.assign({\n width: size * 5,\n minWidth: size * 5\n }, genSkeletonElementCommonSize(size));\n};\nvar genSkeletonElementAvatar = function genSkeletonElementAvatar(token) {\n var _ref;\n var skeletonAvatarCls = token.skeletonAvatarCls,\n gradientFromColor = token.gradientFromColor,\n controlHeight = token.controlHeight,\n controlHeightLG = token.controlHeightLG,\n controlHeightSM = token.controlHeightSM;\n return _ref = {}, _defineProperty(_ref, \"\".concat(skeletonAvatarCls), Object.assign({\n display: 'inline-block',\n verticalAlign: 'top',\n background: gradientFromColor\n }, genSkeletonElementAvatarSize(controlHeight))), _defineProperty(_ref, \"\".concat(skeletonAvatarCls).concat(skeletonAvatarCls, \"-circle\"), {\n borderRadius: '50%'\n }), _defineProperty(_ref, \"\".concat(skeletonAvatarCls).concat(skeletonAvatarCls, \"-lg\"), Object.assign({}, genSkeletonElementAvatarSize(controlHeightLG))), _defineProperty(_ref, \"\".concat(skeletonAvatarCls).concat(skeletonAvatarCls, \"-sm\"), Object.assign({}, genSkeletonElementAvatarSize(controlHeightSM))), _ref;\n};\nvar genSkeletonElementInput = function genSkeletonElementInput(token) {\n var _ref2;\n var controlHeight = token.controlHeight,\n borderRadiusSM = token.borderRadiusSM,\n skeletonInputCls = token.skeletonInputCls,\n controlHeightLG = token.controlHeightLG,\n controlHeightSM = token.controlHeightSM,\n gradientFromColor = token.gradientFromColor;\n return _ref2 = {}, _defineProperty(_ref2, \"\".concat(skeletonInputCls), Object.assign({\n display: 'inline-block',\n verticalAlign: 'top',\n background: gradientFromColor,\n borderRadius: borderRadiusSM\n }, genSkeletonElementInputSize(controlHeight))), _defineProperty(_ref2, \"\".concat(skeletonInputCls, \"-lg\"), Object.assign({}, genSkeletonElementInputSize(controlHeightLG))), _defineProperty(_ref2, \"\".concat(skeletonInputCls, \"-sm\"), Object.assign({}, genSkeletonElementInputSize(controlHeightSM))), _ref2;\n};\nvar genSkeletonElementImageSize = function genSkeletonElementImageSize(size) {\n return Object.assign({\n width: size\n }, genSkeletonElementCommonSize(size));\n};\nvar genSkeletonElementImage = function genSkeletonElementImage(token) {\n var _Object$assign, _ref3;\n var skeletonImageCls = token.skeletonImageCls,\n imageSizeBase = token.imageSizeBase,\n gradientFromColor = token.gradientFromColor,\n borderRadiusSM = token.borderRadiusSM;\n return _ref3 = {}, _defineProperty(_ref3, \"\".concat(skeletonImageCls), Object.assign(Object.assign({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n verticalAlign: 'top',\n background: gradientFromColor,\n borderRadius: borderRadiusSM\n }, genSkeletonElementImageSize(imageSizeBase * 2)), (_Object$assign = {}, _defineProperty(_Object$assign, \"\".concat(skeletonImageCls, \"-path\"), {\n fill: '#bfbfbf'\n }), _defineProperty(_Object$assign, \"\".concat(skeletonImageCls, \"-svg\"), Object.assign(Object.assign({}, genSkeletonElementImageSize(imageSizeBase)), {\n maxWidth: imageSizeBase * 4,\n maxHeight: imageSizeBase * 4\n })), _defineProperty(_Object$assign, \"\".concat(skeletonImageCls, \"-svg\").concat(skeletonImageCls, \"-svg-circle\"), {\n borderRadius: '50%'\n }), _Object$assign))), _defineProperty(_ref3, \"\".concat(skeletonImageCls).concat(skeletonImageCls, \"-circle\"), {\n borderRadius: '50%'\n }), _ref3;\n};\nvar genSkeletonElementButtonShape = function genSkeletonElementButtonShape(token, size, buttonCls) {\n var _ref4;\n var skeletonButtonCls = token.skeletonButtonCls;\n return _ref4 = {}, _defineProperty(_ref4, \"\".concat(buttonCls).concat(skeletonButtonCls, \"-circle\"), {\n width: size,\n minWidth: size,\n borderRadius: '50%'\n }), _defineProperty(_ref4, \"\".concat(buttonCls).concat(skeletonButtonCls, \"-round\"), {\n borderRadius: size\n }), _ref4;\n};\nvar genSkeletonElementButtonSize = function genSkeletonElementButtonSize(size) {\n return Object.assign({\n width: size * 2,\n minWidth: size * 2\n }, genSkeletonElementCommonSize(size));\n};\nvar genSkeletonElementButton = function genSkeletonElementButton(token) {\n var borderRadiusSM = token.borderRadiusSM,\n skeletonButtonCls = token.skeletonButtonCls,\n controlHeight = token.controlHeight,\n controlHeightLG = token.controlHeightLG,\n controlHeightSM = token.controlHeightSM,\n gradientFromColor = token.gradientFromColor;\n return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(_defineProperty({}, \"\".concat(skeletonButtonCls), Object.assign({\n display: 'inline-block',\n verticalAlign: 'top',\n background: gradientFromColor,\n borderRadius: borderRadiusSM,\n width: controlHeight * 2,\n minWidth: controlHeight * 2\n }, genSkeletonElementButtonSize(controlHeight))), genSkeletonElementButtonShape(token, controlHeight, skeletonButtonCls)), _defineProperty({}, \"\".concat(skeletonButtonCls, \"-lg\"), Object.assign({}, genSkeletonElementButtonSize(controlHeightLG)))), genSkeletonElementButtonShape(token, controlHeightLG, \"\".concat(skeletonButtonCls, \"-lg\"))), _defineProperty({}, \"\".concat(skeletonButtonCls, \"-sm\"), Object.assign({}, genSkeletonElementButtonSize(controlHeightSM)))), genSkeletonElementButtonShape(token, controlHeightSM, \"\".concat(skeletonButtonCls, \"-sm\")));\n};\n// =============================== Base ===============================\nvar genBaseStyle = function genBaseStyle(token) {\n var _$concat, _$concat3, _$concat4, _$concat$concat2, _ref5;\n var componentCls = token.componentCls,\n skeletonAvatarCls = token.skeletonAvatarCls,\n skeletonTitleCls = token.skeletonTitleCls,\n skeletonParagraphCls = token.skeletonParagraphCls,\n skeletonButtonCls = token.skeletonButtonCls,\n skeletonInputCls = token.skeletonInputCls,\n skeletonImageCls = token.skeletonImageCls,\n controlHeight = token.controlHeight,\n controlHeightLG = token.controlHeightLG,\n controlHeightSM = token.controlHeightSM,\n gradientFromColor = token.gradientFromColor,\n padding = token.padding,\n marginSM = token.marginSM,\n borderRadius = token.borderRadius,\n titleHeight = token.titleHeight,\n blockRadius = token.blockRadius,\n paragraphLiHeight = token.paragraphLiHeight,\n controlHeightXS = token.controlHeightXS,\n paragraphMarginTop = token.paragraphMarginTop;\n return _ref5 = {}, _defineProperty(_ref5, \"\".concat(componentCls), (_$concat4 = {\n display: 'table',\n width: '100%'\n }, _defineProperty(_$concat4, \"\".concat(componentCls, \"-header\"), (_$concat = {\n display: 'table-cell',\n paddingInlineEnd: padding,\n verticalAlign: 'top'\n }, _defineProperty(_$concat, \"\".concat(skeletonAvatarCls), Object.assign({\n display: 'inline-block',\n verticalAlign: 'top',\n background: gradientFromColor\n }, genSkeletonElementAvatarSize(controlHeight))), _defineProperty(_$concat, \"\".concat(skeletonAvatarCls, \"-circle\"), {\n borderRadius: '50%'\n }), _defineProperty(_$concat, \"\".concat(skeletonAvatarCls, \"-lg\"), Object.assign({}, genSkeletonElementAvatarSize(controlHeightLG))), _defineProperty(_$concat, \"\".concat(skeletonAvatarCls, \"-sm\"), Object.assign({}, genSkeletonElementAvatarSize(controlHeightSM))), _$concat)), _defineProperty(_$concat4, \"\".concat(componentCls, \"-content\"), (_$concat3 = {\n display: 'table-cell',\n width: '100%',\n verticalAlign: 'top'\n }, _defineProperty(_$concat3, \"\".concat(skeletonTitleCls), _defineProperty({\n width: '100%',\n height: titleHeight,\n background: gradientFromColor,\n borderRadius: blockRadius\n }, \"+ \".concat(skeletonParagraphCls), {\n marginBlockStart: controlHeightSM\n })), _defineProperty(_$concat3, \"\".concat(skeletonParagraphCls), {\n padding: 0,\n '> li': {\n width: '100%',\n height: paragraphLiHeight,\n listStyle: 'none',\n background: gradientFromColor,\n borderRadius: blockRadius,\n '+ li': {\n marginBlockStart: controlHeightXS\n }\n }\n }), _defineProperty(_$concat3, \"\".concat(skeletonParagraphCls, \"> li:last-child:not(:first-child):not(:nth-child(2))\"), {\n width: '61%'\n }), _$concat3)), _defineProperty(_$concat4, \"&-round \".concat(componentCls, \"-content\"), _defineProperty({}, \"\".concat(skeletonTitleCls, \", \").concat(skeletonParagraphCls, \" > li\"), {\n borderRadius: borderRadius\n })), _$concat4)), _defineProperty(_ref5, \"\".concat(componentCls, \"-with-avatar \").concat(componentCls, \"-content\"), _defineProperty({}, \"\".concat(skeletonTitleCls), _defineProperty({\n marginBlockStart: marginSM\n }, \"+ \".concat(skeletonParagraphCls), {\n marginBlockStart: paragraphMarginTop\n }))), _defineProperty(_ref5, \"\".concat(componentCls).concat(componentCls, \"-element\"), Object.assign(Object.assign(Object.assign(Object.assign({\n display: 'inline-block',\n width: 'auto'\n }, genSkeletonElementButton(token)), genSkeletonElementAvatar(token)), genSkeletonElementInput(token)), genSkeletonElementImage(token))), _defineProperty(_ref5, \"\".concat(componentCls).concat(componentCls, \"-block\"), (_$concat$concat2 = {\n width: '100%'\n }, _defineProperty(_$concat$concat2, \"\".concat(skeletonButtonCls), {\n width: '100%'\n }), _defineProperty(_$concat$concat2, \"\".concat(skeletonInputCls), {\n width: '100%'\n }), _$concat$concat2)), _defineProperty(_ref5, \"\".concat(componentCls).concat(componentCls, \"-active\"), _defineProperty({}, \"\\n \".concat(skeletonTitleCls, \",\\n \").concat(skeletonParagraphCls, \" > li,\\n \").concat(skeletonAvatarCls, \",\\n \").concat(skeletonButtonCls, \",\\n \").concat(skeletonInputCls, \",\\n \").concat(skeletonImageCls, \"\\n \"), Object.assign({}, genSkeletonColor(token)))), _ref5;\n};\n// ============================== Export ==============================\nexport default genComponentStyleHook('Skeleton', function (token) {\n var componentCls = token.componentCls;\n var skeletonToken = mergeToken(token, {\n skeletonAvatarCls: \"\".concat(componentCls, \"-avatar\"),\n skeletonTitleCls: \"\".concat(componentCls, \"-title\"),\n skeletonParagraphCls: \"\".concat(componentCls, \"-paragraph\"),\n skeletonButtonCls: \"\".concat(componentCls, \"-button\"),\n skeletonInputCls: \"\".concat(componentCls, \"-input\"),\n skeletonImageCls: \"\".concat(componentCls, \"-image\"),\n imageSizeBase: token.controlHeight * 1.5,\n borderRadius: 100,\n skeletonLoadingBackground: \"linear-gradient(90deg, \".concat(token.gradientFromColor, \" 25%, \").concat(token.gradientToColor, \" 37%, \").concat(token.gradientFromColor, \" 63%)\"),\n skeletonLoadingMotionDuration: '1.4s'\n });\n return [genBaseStyle(skeletonToken)];\n}, function (token) {\n var colorFillContent = token.colorFillContent,\n colorFill = token.colorFill;\n var gradientFromColor = colorFillContent;\n var gradientToColor = colorFill;\n return {\n color: gradientFromColor,\n colorGradientEnd: gradientToColor,\n gradientFromColor: gradientFromColor,\n gradientToColor: gradientToColor,\n titleHeight: token.controlHeight / 2,\n blockRadius: token.borderRadiusSM,\n paragraphMarginTop: token.marginLG + token.marginXXS,\n paragraphLiHeight: token.controlHeight / 2\n };\n}, {\n deprecatedTokens: [['color', 'gradientFromColor'], ['colorGradientEnd', 'gradientToColor']]\n});","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport Element from './Element';\nimport useStyle from './style';\nvar SkeletonAvatar = function SkeletonAvatar(props) {\n var customizePrefixCls = props.prefixCls,\n className = props.className,\n rootClassName = props.rootClassName,\n active = props.active,\n _props$shape = props.shape,\n shape = _props$shape === void 0 ? 'circle' : _props$shape,\n _props$size = props.size,\n size = _props$size === void 0 ? 'default' : _props$size;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls;\n var prefixCls = getPrefixCls('skeleton', customizePrefixCls);\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n var otherProps = omit(props, ['prefixCls', 'className']);\n var cls = classNames(prefixCls, \"\".concat(prefixCls, \"-element\"), _defineProperty({}, \"\".concat(prefixCls, \"-active\"), active), className, rootClassName, hashId);\n return wrapSSR( /*#__PURE__*/React.createElement(\"div\", {\n className: cls\n }, /*#__PURE__*/React.createElement(Element, Object.assign({\n prefixCls: \"\".concat(prefixCls, \"-avatar\"),\n shape: shape,\n size: size\n }, otherProps))));\n};\nexport default SkeletonAvatar;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport Element from './Element';\nimport useStyle from './style';\nvar SkeletonButton = function SkeletonButton(props) {\n var _classNames;\n var customizePrefixCls = props.prefixCls,\n className = props.className,\n rootClassName = props.rootClassName,\n active = props.active,\n _props$block = props.block,\n block = _props$block === void 0 ? false : _props$block,\n _props$size = props.size,\n size = _props$size === void 0 ? 'default' : _props$size;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls;\n var prefixCls = getPrefixCls('skeleton', customizePrefixCls);\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n var otherProps = omit(props, ['prefixCls']);\n var cls = classNames(prefixCls, \"\".concat(prefixCls, \"-element\"), (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-active\"), active), _defineProperty(_classNames, \"\".concat(prefixCls, \"-block\"), block), _classNames), className, rootClassName, hashId);\n return wrapSSR( /*#__PURE__*/React.createElement(\"div\", {\n className: cls\n }, /*#__PURE__*/React.createElement(Element, Object.assign({\n prefixCls: \"\".concat(prefixCls, \"-button\"),\n size: size\n }, otherProps))));\n};\nexport default SkeletonButton;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport useStyle from './style';\nvar path = 'M365.714286 329.142857q0 45.714286-32.036571 77.677714t-77.677714 32.036571-77.677714-32.036571-32.036571-77.677714 32.036571-77.677714 77.677714-32.036571 77.677714 32.036571 32.036571 77.677714zM950.857143 548.571429l0 256-804.571429 0 0-109.714286 182.857143-182.857143 91.428571 91.428571 292.571429-292.571429zM1005.714286 146.285714l-914.285714 0q-7.460571 0-12.873143 5.412571t-5.412571 12.873143l0 694.857143q0 7.460571 5.412571 12.873143t12.873143 5.412571l914.285714 0q7.460571 0 12.873143-5.412571t5.412571-12.873143l0-694.857143q0-7.460571-5.412571-12.873143t-12.873143-5.412571zM1097.142857 164.571429l0 694.857143q0 37.741714-26.843429 64.585143t-64.585143 26.843429l-914.285714 0q-37.741714 0-64.585143-26.843429t-26.843429-64.585143l0-694.857143q0-37.741714 26.843429-64.585143t64.585143-26.843429l914.285714 0q37.741714 0 64.585143 26.843429t26.843429 64.585143z';\nvar SkeletonImage = function SkeletonImage(props) {\n var customizePrefixCls = props.prefixCls,\n className = props.className,\n rootClassName = props.rootClassName,\n style = props.style,\n active = props.active;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls;\n var prefixCls = getPrefixCls('skeleton', customizePrefixCls);\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n var cls = classNames(prefixCls, \"\".concat(prefixCls, \"-element\"), _defineProperty({}, \"\".concat(prefixCls, \"-active\"), active), className, rootClassName, hashId);\n return wrapSSR( /*#__PURE__*/React.createElement(\"div\", {\n className: cls\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-image\"), className),\n style: style\n }, /*#__PURE__*/React.createElement(\"svg\", {\n viewBox: \"0 0 1098 1024\",\n xmlns: \"http://www.w3.org/2000/svg\",\n className: \"\".concat(prefixCls, \"-image-svg\")\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: path,\n className: \"\".concat(prefixCls, \"-image-path\")\n })))));\n};\nexport default SkeletonImage;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport Element from './Element';\nimport useStyle from './style';\nvar SkeletonInput = function SkeletonInput(props) {\n var _classNames;\n var customizePrefixCls = props.prefixCls,\n className = props.className,\n rootClassName = props.rootClassName,\n active = props.active,\n block = props.block,\n _props$size = props.size,\n size = _props$size === void 0 ? 'default' : _props$size;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls;\n var prefixCls = getPrefixCls('skeleton', customizePrefixCls);\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n var otherProps = omit(props, ['prefixCls']);\n var cls = classNames(prefixCls, \"\".concat(prefixCls, \"-element\"), (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-active\"), active), _defineProperty(_classNames, \"\".concat(prefixCls, \"-block\"), block), _classNames), className, rootClassName, hashId);\n return wrapSSR( /*#__PURE__*/React.createElement(\"div\", {\n className: cls\n }, /*#__PURE__*/React.createElement(Element, Object.assign({\n prefixCls: \"\".concat(prefixCls, \"-input\"),\n size: size\n }, otherProps))));\n};\nexport default SkeletonInput;","// This icon file is generated automatically.\nvar DotChartOutlined = {\n \"icon\": {\n \"tag\": \"svg\",\n \"attrs\": {\n \"viewBox\": \"64 64 896 896\",\n \"focusable\": \"false\"\n },\n \"children\": [{\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M888 792H200V168c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h752c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM288 604a64 64 0 10128 0 64 64 0 10-128 0zm118-224a48 48 0 1096 0 48 48 0 10-96 0zm158 228a96 96 0 10192 0 96 96 0 10-192 0zm148-314a56 56 0 10112 0 56 56 0 10-112 0z\"\n }\n }]\n },\n \"name\": \"dot-chart\",\n \"theme\": \"outlined\"\n};\nexport default DotChartOutlined;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport DotChartOutlinedSvg from \"@ant-design/icons-svg/es/asn/DotChartOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar DotChartOutlined = function DotChartOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: DotChartOutlinedSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n DotChartOutlined.displayName = 'DotChartOutlined';\n}\nexport default /*#__PURE__*/React.forwardRef(DotChartOutlined);","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport DotChartOutlined from \"@ant-design/icons/es/icons/DotChartOutlined\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport useStyle from './style';\nvar SkeletonNode = function SkeletonNode(props) {\n var customizePrefixCls = props.prefixCls,\n className = props.className,\n rootClassName = props.rootClassName,\n style = props.style,\n active = props.active,\n children = props.children;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls;\n var prefixCls = getPrefixCls('skeleton', customizePrefixCls);\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n var cls = classNames(prefixCls, \"\".concat(prefixCls, \"-element\"), _defineProperty({}, \"\".concat(prefixCls, \"-active\"), active), hashId, className, rootClassName);\n var content = children !== null && children !== void 0 ? children : /*#__PURE__*/React.createElement(DotChartOutlined, null);\n return wrapSSR( /*#__PURE__*/React.createElement(\"div\", {\n className: cls\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-image\"), className),\n style: style\n }, content)));\n};\nexport default SkeletonNode;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nvar Paragraph = function Paragraph(props) {\n var getWidth = function getWidth(index) {\n var width = props.width,\n _props$rows = props.rows,\n rows = _props$rows === void 0 ? 2 : _props$rows;\n if (Array.isArray(width)) {\n return width[index];\n }\n // last paragraph\n if (rows - 1 === index) {\n return width;\n }\n return undefined;\n };\n var prefixCls = props.prefixCls,\n className = props.className,\n style = props.style,\n rows = props.rows;\n var rowList = _toConsumableArray(Array(rows)).map(function (_, index) {\n return /*#__PURE__*/(\n // eslint-disable-next-line react/no-array-index-key\n React.createElement(\"li\", {\n key: index,\n style: {\n width: getWidth(index)\n }\n })\n );\n });\n return /*#__PURE__*/React.createElement(\"ul\", {\n className: classNames(prefixCls, className),\n style: style\n }, rowList);\n};\nexport default Paragraph;","/* eslint-disable jsx-a11y/heading-has-content */\nimport classNames from 'classnames';\nimport * as React from 'react';\nvar Title = function Title(_ref) {\n var prefixCls = _ref.prefixCls,\n className = _ref.className,\n width = _ref.width,\n style = _ref.style;\n return /*#__PURE__*/React.createElement(\"h3\", {\n className: classNames(prefixCls, className),\n style: Object.assign({\n width: width\n }, style)\n });\n};\nexport default Title;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport SkeletonAvatar from './Avatar';\nimport SkeletonButton from './Button';\nimport Element from './Element';\nimport SkeletonImage from './Image';\nimport SkeletonInput from './Input';\nimport SkeletonNode from './Node';\nimport Paragraph from './Paragraph';\nimport Title from './Title';\nimport useStyle from './style';\nfunction getComponentProps(prop) {\n if (prop && typeof prop === 'object') {\n return prop;\n }\n return {};\n}\nfunction getAvatarBasicProps(hasTitle, hasParagraph) {\n if (hasTitle && !hasParagraph) {\n // Square avatar\n return {\n size: 'large',\n shape: 'square'\n };\n }\n return {\n size: 'large',\n shape: 'circle'\n };\n}\nfunction getTitleBasicProps(hasAvatar, hasParagraph) {\n if (!hasAvatar && hasParagraph) {\n return {\n width: '38%'\n };\n }\n if (hasAvatar && hasParagraph) {\n return {\n width: '50%'\n };\n }\n return {};\n}\nfunction getParagraphBasicProps(hasAvatar, hasTitle) {\n var basicProps = {};\n // Width\n if (!hasAvatar || !hasTitle) {\n basicProps.width = '61%';\n }\n // Rows\n if (!hasAvatar && hasTitle) {\n basicProps.rows = 3;\n } else {\n basicProps.rows = 2;\n }\n return basicProps;\n}\nvar Skeleton = function Skeleton(props) {\n var customizePrefixCls = props.prefixCls,\n loading = props.loading,\n className = props.className,\n rootClassName = props.rootClassName,\n style = props.style,\n children = props.children,\n _props$avatar = props.avatar,\n avatar = _props$avatar === void 0 ? false : _props$avatar,\n _props$title = props.title,\n title = _props$title === void 0 ? true : _props$title,\n _props$paragraph = props.paragraph,\n paragraph = _props$paragraph === void 0 ? true : _props$paragraph,\n active = props.active,\n round = props.round;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction,\n skeleton = _React$useContext.skeleton;\n var prefixCls = getPrefixCls('skeleton', customizePrefixCls);\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n if (loading || !('loading' in props)) {\n var _classNames;\n var hasAvatar = !!avatar;\n var hasTitle = !!title;\n var hasParagraph = !!paragraph;\n // Avatar\n var avatarNode;\n if (hasAvatar) {\n var avatarProps = Object.assign(Object.assign({\n prefixCls: \"\".concat(prefixCls, \"-avatar\")\n }, getAvatarBasicProps(hasTitle, hasParagraph)), getComponentProps(avatar));\n // We direct use SkeletonElement as avatar in skeleton internal.\n avatarNode = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-header\")\n }, /*#__PURE__*/React.createElement(Element, Object.assign({}, avatarProps)));\n }\n var contentNode;\n if (hasTitle || hasParagraph) {\n // Title\n var $title;\n if (hasTitle) {\n var titleProps = Object.assign(Object.assign({\n prefixCls: \"\".concat(prefixCls, \"-title\")\n }, getTitleBasicProps(hasAvatar, hasParagraph)), getComponentProps(title));\n $title = /*#__PURE__*/React.createElement(Title, Object.assign({}, titleProps));\n }\n // Paragraph\n var paragraphNode;\n if (hasParagraph) {\n var paragraphProps = Object.assign(Object.assign({\n prefixCls: \"\".concat(prefixCls, \"-paragraph\")\n }, getParagraphBasicProps(hasAvatar, hasTitle)), getComponentProps(paragraph));\n paragraphNode = /*#__PURE__*/React.createElement(Paragraph, Object.assign({}, paragraphProps));\n }\n contentNode = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-content\")\n }, $title, paragraphNode);\n }\n var cls = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-with-avatar\"), hasAvatar), _defineProperty(_classNames, \"\".concat(prefixCls, \"-active\"), active), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-round\"), round), _classNames), skeleton === null || skeleton === void 0 ? void 0 : skeleton.className, className, rootClassName, hashId);\n return wrapSSR( /*#__PURE__*/React.createElement(\"div\", {\n className: cls,\n style: Object.assign(Object.assign({}, skeleton === null || skeleton === void 0 ? void 0 : skeleton.style), style)\n }, avatarNode, contentNode));\n }\n return typeof children !== 'undefined' ? children : null;\n};\nSkeleton.Button = SkeletonButton;\nSkeleton.Avatar = SkeletonAvatar;\nSkeleton.Input = SkeletonInput;\nSkeleton.Image = SkeletonImage;\nSkeleton.Node = SkeletonNode;\nif (process.env.NODE_ENV !== 'production') {\n Skeleton.displayName = 'Skeleton';\n}\nexport default Skeleton;","'use client';\n\nimport Skeleton from './Skeleton';\nexport default Skeleton;","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"title\", \"titleId\"];\nimport * as React from \"react\";\nfunction ChatBubbleOvalLeftIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M12 20.25c4.97 0 9-3.694 9-8.25s-4.03-8.25-9-8.25S3 7.444 3 12c0 2.104.859 4.023 2.273 5.48.432.447.74 1.04.586 1.641a4.483 4.483 0 01-.923 1.785A5.969 5.969 0 006 21c1.282 0 2.47-.402 3.445-1.087.81.22 1.668.337 2.555.337z\"\n }));\n}\nvar ForwardRef = React.forwardRef(ChatBubbleOvalLeftIcon);\nexport default ForwardRef;","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"title\", \"titleId\"];\nimport * as React from \"react\";\nfunction HashtagIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M5.25 8.25h15m-16.5 7.5h15m-1.8-13.5l-3.9 19.5m-2.1-19.5l-3.9 19.5\"\n }));\n}\nvar ForwardRef = React.forwardRef(HashtagIcon);\nexport default ForwardRef;","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"title\", \"titleId\"];\nimport * as React from \"react\";\nfunction CalendarDaysIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z\"\n }));\n}\nvar ForwardRef = React.forwardRef(CalendarDaysIcon);\nexport default ForwardRef;","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"title\", \"titleId\"];\nimport * as React from \"react\";\nfunction TagIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M6 6h.008v.008H6V6z\"\n }));\n}\nvar ForwardRef = React.forwardRef(TagIcon);\nexport default ForwardRef;","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"title\", \"titleId\"];\nimport * as React from \"react\";\nfunction DocumentChartBarIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M19.5 14.25v-2.625a3.375 3.375 0 00-3.375-3.375h-1.5A1.125 1.125 0 0113.5 7.125v-1.5a3.375 3.375 0 00-3.375-3.375H8.25M9 16.5v.75m3-3v3M15 12v5.25m-4.5-15H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 00-9-9z\"\n }));\n}\nvar ForwardRef = React.forwardRef(DocumentChartBarIcon);\nexport default ForwardRef;","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"title\", \"titleId\"];\nimport * as React from \"react\";\nfunction ClipboardDocumentIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M8.25 7.5V6.108c0-1.135.845-2.098 1.976-2.192.373-.03.748-.057 1.123-.08M15.75 18H18a2.25 2.25 0 002.25-2.25V6.108c0-1.135-.845-2.098-1.976-2.192a48.424 48.424 0 00-1.123-.08M15.75 18.75v-1.875a3.375 3.375 0 00-3.375-3.375h-1.5a1.125 1.125 0 01-1.125-1.125v-1.5A3.375 3.375 0 006.375 7.5H5.25m11.9-3.664A2.251 2.251 0 0015 2.25h-1.5a2.251 2.251 0 00-2.15 1.586m5.8 0c.065.21.1.433.1.664v.75h-6V4.5c0-.231.035-.454.1-.664M6.75 7.5H4.875c-.621 0-1.125.504-1.125 1.125v12c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V16.5a9 9 0 00-9-9z\"\n }));\n}\nvar ForwardRef = React.forwardRef(ClipboardDocumentIcon);\nexport default ForwardRef;","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport useState from \"rc-util/es/hooks/useState\";\nimport * as React from 'react';\nimport Button from '../button';\nimport { convertLegacyProps } from '../button/button';\nfunction isThenable(thing) {\n return !!(thing && thing.then);\n}\nvar ActionButton = function ActionButton(props) {\n var type = props.type,\n children = props.children,\n prefixCls = props.prefixCls,\n buttonProps = props.buttonProps,\n close = props.close,\n autoFocus = props.autoFocus,\n emitEvent = props.emitEvent,\n isSilent = props.isSilent,\n quitOnNullishReturnValue = props.quitOnNullishReturnValue,\n actionFn = props.actionFn;\n var clickedRef = React.useRef(false);\n var buttonRef = React.useRef(null);\n var _useState = useState(false),\n _useState2 = _slicedToArray(_useState, 2),\n loading = _useState2[0],\n setLoading = _useState2[1];\n var onInternalClose = function onInternalClose() {\n close === null || close === void 0 ? void 0 : close.apply(void 0, arguments);\n };\n React.useEffect(function () {\n var timeoutId = null;\n if (autoFocus) {\n timeoutId = setTimeout(function () {\n var _a;\n (_a = buttonRef.current) === null || _a === void 0 ? void 0 : _a.focus();\n });\n }\n return function () {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n };\n }, []);\n var handlePromiseOnOk = function handlePromiseOnOk(returnValueOfOnOk) {\n if (!isThenable(returnValueOfOnOk)) {\n return;\n }\n setLoading(true);\n returnValueOfOnOk.then(function () {\n setLoading(false, true);\n onInternalClose.apply(void 0, arguments);\n clickedRef.current = false;\n }, function (e) {\n // See: https://github.com/ant-design/ant-design/issues/6183\n setLoading(false, true);\n clickedRef.current = false;\n // Do not throw if is `await` mode\n if (isSilent === null || isSilent === void 0 ? void 0 : isSilent()) {\n return;\n }\n return Promise.reject(e);\n });\n };\n var onClick = function onClick(e) {\n if (clickedRef.current) {\n return;\n }\n clickedRef.current = true;\n if (!actionFn) {\n onInternalClose();\n return;\n }\n var returnValueOfOnOk;\n if (emitEvent) {\n returnValueOfOnOk = actionFn(e);\n if (quitOnNullishReturnValue && !isThenable(returnValueOfOnOk)) {\n clickedRef.current = false;\n onInternalClose(e);\n return;\n }\n } else if (actionFn.length) {\n returnValueOfOnOk = actionFn(close);\n // https://github.com/ant-design/ant-design/issues/23358\n clickedRef.current = false;\n } else {\n returnValueOfOnOk = actionFn();\n if (!returnValueOfOnOk) {\n onInternalClose();\n return;\n }\n }\n handlePromiseOnOk(returnValueOfOnOk);\n };\n return /*#__PURE__*/React.createElement(Button, Object.assign({}, convertLegacyProps(type), {\n onClick: onClick,\n loading: loading,\n prefixCls: prefixCls\n }, buttonProps, {\n ref: buttonRef\n }), children);\n};\nexport default ActionButton;","// =============================== Motion ===============================\nexport function getMotionName(prefixCls, transitionName, animationName) {\n var motionName = transitionName;\n if (!motionName && animationName) {\n motionName = \"\".concat(prefixCls, \"-\").concat(animationName);\n }\n return motionName;\n}\n\n// =============================== Offset ===============================\nfunction getScroll(w, top) {\n var ret = w[\"page\".concat(top ? 'Y' : 'X', \"Offset\")];\n var method = \"scroll\".concat(top ? 'Top' : 'Left');\n if (typeof ret !== 'number') {\n var d = w.document;\n ret = d.documentElement[method];\n if (typeof ret !== 'number') {\n ret = d.body[method];\n }\n }\n return ret;\n}\nexport function offset(el) {\n var rect = el.getBoundingClientRect();\n var pos = {\n left: rect.left,\n top: rect.top\n };\n var doc = el.ownerDocument;\n var w = doc.defaultView || doc.parentWindow;\n pos.left += getScroll(w);\n pos.top += getScroll(w, true);\n return pos;\n}","import * as React from 'react';\nexport default /*#__PURE__*/React.memo(function (_ref) {\n var children = _ref.children;\n return children;\n}, function (_, _ref2) {\n var shouldUpdate = _ref2.shouldUpdate;\n return !shouldUpdate;\n});","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React, { useRef } from 'react';\nimport classNames from 'classnames';\nimport MemoChildren from \"./MemoChildren\";\nvar sentinelStyle = {\n width: 0,\n height: 0,\n overflow: 'hidden',\n outline: 'none'\n};\nvar Panel = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var prefixCls = props.prefixCls,\n className = props.className,\n style = props.style,\n title = props.title,\n ariaId = props.ariaId,\n footer = props.footer,\n closable = props.closable,\n closeIcon = props.closeIcon,\n onClose = props.onClose,\n children = props.children,\n bodyStyle = props.bodyStyle,\n bodyProps = props.bodyProps,\n modalRender = props.modalRender,\n onMouseDown = props.onMouseDown,\n onMouseUp = props.onMouseUp,\n holderRef = props.holderRef,\n visible = props.visible,\n forceRender = props.forceRender,\n width = props.width,\n height = props.height;\n\n // ================================= Refs =================================\n var sentinelStartRef = useRef();\n var sentinelEndRef = useRef();\n React.useImperativeHandle(ref, function () {\n return {\n focus: function focus() {\n var _sentinelStartRef$cur;\n (_sentinelStartRef$cur = sentinelStartRef.current) === null || _sentinelStartRef$cur === void 0 ? void 0 : _sentinelStartRef$cur.focus();\n },\n changeActive: function changeActive(next) {\n var _document = document,\n activeElement = _document.activeElement;\n if (next && activeElement === sentinelEndRef.current) {\n sentinelStartRef.current.focus();\n } else if (!next && activeElement === sentinelStartRef.current) {\n sentinelEndRef.current.focus();\n }\n }\n };\n });\n\n // ================================ Style =================================\n var contentStyle = {};\n if (width !== undefined) {\n contentStyle.width = width;\n }\n if (height !== undefined) {\n contentStyle.height = height;\n }\n // ================================ Render ================================\n var footerNode;\n if (footer) {\n footerNode = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-footer\")\n }, footer);\n }\n var headerNode;\n if (title) {\n headerNode = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-header\")\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-title\"),\n id: ariaId\n }, title));\n }\n var closer;\n if (closable) {\n closer = /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n onClick: onClose,\n \"aria-label\": \"Close\",\n className: \"\".concat(prefixCls, \"-close\")\n }, closeIcon || /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-close-x\")\n }));\n }\n var content = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-content\")\n }, closer, headerNode, /*#__PURE__*/React.createElement(\"div\", _extends({\n className: \"\".concat(prefixCls, \"-body\"),\n style: bodyStyle\n }, bodyProps), children), footerNode);\n return /*#__PURE__*/React.createElement(\"div\", {\n key: \"dialog-element\",\n role: \"dialog\",\n \"aria-labelledby\": title ? ariaId : null,\n \"aria-modal\": \"true\",\n ref: holderRef,\n style: _objectSpread(_objectSpread({}, style), contentStyle),\n className: classNames(prefixCls, className),\n onMouseDown: onMouseDown,\n onMouseUp: onMouseUp\n }, /*#__PURE__*/React.createElement(\"div\", {\n tabIndex: 0,\n ref: sentinelStartRef,\n style: sentinelStyle,\n \"aria-hidden\": \"true\"\n }), /*#__PURE__*/React.createElement(MemoChildren, {\n shouldUpdate: visible || forceRender\n }, modalRender ? modalRender(content) : content), /*#__PURE__*/React.createElement(\"div\", {\n tabIndex: 0,\n ref: sentinelEndRef,\n style: sentinelStyle,\n \"aria-hidden\": \"true\"\n }));\n});\nif (process.env.NODE_ENV !== 'production') {\n Panel.displayName = 'Panel';\n}\nexport default Panel;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useRef } from 'react';\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport { offset } from \"../../util\";\nimport Panel from \"./Panel\";\nvar Content = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var prefixCls = props.prefixCls,\n title = props.title,\n style = props.style,\n className = props.className,\n visible = props.visible,\n forceRender = props.forceRender,\n destroyOnClose = props.destroyOnClose,\n motionName = props.motionName,\n ariaId = props.ariaId,\n onVisibleChanged = props.onVisibleChanged,\n mousePosition = props.mousePosition;\n var dialogRef = useRef();\n\n // ============================= Style ==============================\n var _React$useState = React.useState(),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n transformOrigin = _React$useState2[0],\n setTransformOrigin = _React$useState2[1];\n var contentStyle = {};\n if (transformOrigin) {\n contentStyle.transformOrigin = transformOrigin;\n }\n function onPrepare() {\n var elementOffset = offset(dialogRef.current);\n setTransformOrigin(mousePosition ? \"\".concat(mousePosition.x - elementOffset.left, \"px \").concat(mousePosition.y - elementOffset.top, \"px\") : '');\n }\n\n // ============================= Render =============================\n return /*#__PURE__*/React.createElement(CSSMotion, {\n visible: visible,\n onVisibleChanged: onVisibleChanged,\n onAppearPrepare: onPrepare,\n onEnterPrepare: onPrepare,\n forceRender: forceRender,\n motionName: motionName,\n removeOnLeave: destroyOnClose,\n ref: dialogRef\n }, function (_ref, motionRef) {\n var motionClassName = _ref.className,\n motionStyle = _ref.style;\n return /*#__PURE__*/React.createElement(Panel, _extends({}, props, {\n ref: ref,\n title: title,\n ariaId: ariaId,\n prefixCls: prefixCls,\n holderRef: motionRef,\n style: _objectSpread(_objectSpread(_objectSpread({}, motionStyle), style), contentStyle),\n className: classNames(className, motionClassName)\n }));\n });\n});\nContent.displayName = 'Content';\nexport default Content;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nexport default function Mask(props) {\n var prefixCls = props.prefixCls,\n style = props.style,\n visible = props.visible,\n maskProps = props.maskProps,\n motionName = props.motionName;\n return /*#__PURE__*/React.createElement(CSSMotion, {\n key: \"mask\",\n visible: visible,\n motionName: motionName,\n leavedClassName: \"\".concat(prefixCls, \"-mask-hidden\")\n }, function (_ref, ref) {\n var motionClassName = _ref.className,\n motionStyle = _ref.style;\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: ref,\n style: _objectSpread(_objectSpread({}, motionStyle), style),\n className: classNames(\"\".concat(prefixCls, \"-mask\"), motionClassName)\n }, maskProps));\n });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport classNames from 'classnames';\nimport contains from \"rc-util/es/Dom/contains\";\nimport useId from \"rc-util/es/hooks/useId\";\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nimport * as React from 'react';\nimport { useEffect, useRef } from 'react';\nimport { getMotionName } from \"../util\";\nimport Content from \"./Content\";\nimport Mask from \"./Mask\";\nexport default function Dialog(props) {\n var _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-dialog' : _props$prefixCls,\n zIndex = props.zIndex,\n _props$visible = props.visible,\n visible = _props$visible === void 0 ? false : _props$visible,\n _props$keyboard = props.keyboard,\n keyboard = _props$keyboard === void 0 ? true : _props$keyboard,\n _props$focusTriggerAf = props.focusTriggerAfterClose,\n focusTriggerAfterClose = _props$focusTriggerAf === void 0 ? true : _props$focusTriggerAf,\n wrapStyle = props.wrapStyle,\n wrapClassName = props.wrapClassName,\n wrapProps = props.wrapProps,\n onClose = props.onClose,\n afterOpenChange = props.afterOpenChange,\n afterClose = props.afterClose,\n transitionName = props.transitionName,\n animation = props.animation,\n _props$closable = props.closable,\n closable = _props$closable === void 0 ? true : _props$closable,\n _props$mask = props.mask,\n mask = _props$mask === void 0 ? true : _props$mask,\n maskTransitionName = props.maskTransitionName,\n maskAnimation = props.maskAnimation,\n _props$maskClosable = props.maskClosable,\n maskClosable = _props$maskClosable === void 0 ? true : _props$maskClosable,\n maskStyle = props.maskStyle,\n maskProps = props.maskProps,\n rootClassName = props.rootClassName;\n var lastOutSideActiveElementRef = useRef();\n var wrapperRef = useRef();\n var contentRef = useRef();\n var _React$useState = React.useState(visible),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n animatedVisible = _React$useState2[0],\n setAnimatedVisible = _React$useState2[1];\n\n // ========================== Init ==========================\n var ariaId = useId();\n function saveLastOutSideActiveElementRef() {\n if (!contains(wrapperRef.current, document.activeElement)) {\n lastOutSideActiveElementRef.current = document.activeElement;\n }\n }\n function focusDialogContent() {\n if (!contains(wrapperRef.current, document.activeElement)) {\n var _contentRef$current;\n (_contentRef$current = contentRef.current) === null || _contentRef$current === void 0 ? void 0 : _contentRef$current.focus();\n }\n }\n\n // ========================= Events =========================\n function onDialogVisibleChanged(newVisible) {\n // Try to focus\n if (newVisible) {\n focusDialogContent();\n } else {\n // Clean up scroll bar & focus back\n setAnimatedVisible(false);\n if (mask && lastOutSideActiveElementRef.current && focusTriggerAfterClose) {\n try {\n lastOutSideActiveElementRef.current.focus({\n preventScroll: true\n });\n } catch (e) {\n // Do nothing\n }\n lastOutSideActiveElementRef.current = null;\n }\n\n // Trigger afterClose only when change visible from true to false\n if (animatedVisible) {\n afterClose === null || afterClose === void 0 ? void 0 : afterClose();\n }\n }\n afterOpenChange === null || afterOpenChange === void 0 ? void 0 : afterOpenChange(newVisible);\n }\n function onInternalClose(e) {\n onClose === null || onClose === void 0 ? void 0 : onClose(e);\n }\n\n // >>> Content\n var contentClickRef = useRef(false);\n var contentTimeoutRef = useRef();\n\n // We need record content click incase content popup out of dialog\n var onContentMouseDown = function onContentMouseDown() {\n clearTimeout(contentTimeoutRef.current);\n contentClickRef.current = true;\n };\n var onContentMouseUp = function onContentMouseUp() {\n contentTimeoutRef.current = setTimeout(function () {\n contentClickRef.current = false;\n });\n };\n\n // >>> Wrapper\n // Close only when element not on dialog\n var onWrapperClick = null;\n if (maskClosable) {\n onWrapperClick = function onWrapperClick(e) {\n if (contentClickRef.current) {\n contentClickRef.current = false;\n } else if (wrapperRef.current === e.target) {\n onInternalClose(e);\n }\n };\n }\n function onWrapperKeyDown(e) {\n if (keyboard && e.keyCode === KeyCode.ESC) {\n e.stopPropagation();\n onInternalClose(e);\n return;\n }\n\n // keep focus inside dialog\n if (visible) {\n if (e.keyCode === KeyCode.TAB) {\n contentRef.current.changeActive(!e.shiftKey);\n }\n }\n }\n\n // ========================= Effect =========================\n useEffect(function () {\n if (visible) {\n setAnimatedVisible(true);\n saveLastOutSideActiveElementRef();\n }\n }, [visible]);\n\n // Remove direct should also check the scroll bar update\n useEffect(function () {\n return function () {\n clearTimeout(contentTimeoutRef.current);\n };\n }, []);\n\n // ========================= Render =========================\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: classNames(\"\".concat(prefixCls, \"-root\"), rootClassName)\n }, pickAttrs(props, {\n data: true\n })), /*#__PURE__*/React.createElement(Mask, {\n prefixCls: prefixCls,\n visible: mask && visible,\n motionName: getMotionName(prefixCls, maskTransitionName, maskAnimation),\n style: _objectSpread({\n zIndex: zIndex\n }, maskStyle),\n maskProps: maskProps\n }), /*#__PURE__*/React.createElement(\"div\", _extends({\n tabIndex: -1,\n onKeyDown: onWrapperKeyDown,\n className: classNames(\"\".concat(prefixCls, \"-wrap\"), wrapClassName),\n ref: wrapperRef,\n onClick: onWrapperClick,\n style: _objectSpread(_objectSpread({\n zIndex: zIndex\n }, wrapStyle), {}, {\n display: !animatedVisible ? 'none' : null\n })\n }, wrapProps), /*#__PURE__*/React.createElement(Content, _extends({}, props, {\n onMouseDown: onContentMouseDown,\n onMouseUp: onContentMouseUp,\n ref: contentRef,\n closable: closable,\n ariaId: ariaId,\n prefixCls: prefixCls,\n visible: visible && animatedVisible,\n onClose: onInternalClose,\n onVisibleChanged: onDialogVisibleChanged,\n motionName: getMotionName(prefixCls, transitionName, animation)\n }))));\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport Portal from '@rc-component/portal';\nimport Dialog from \"./Dialog\";\n// fix issue #10656\n/*\n * getContainer remarks\n * Custom container should not be return, because in the Portal component, it will remove the\n * return container element here, if the custom container is the only child of it's component,\n * like issue #10656, It will has a conflict with removeChild method in react-dom.\n * So here should add a child (div element) to custom container.\n * */\n\nvar DialogWrap = function DialogWrap(props) {\n var visible = props.visible,\n getContainer = props.getContainer,\n forceRender = props.forceRender,\n _props$destroyOnClose = props.destroyOnClose,\n destroyOnClose = _props$destroyOnClose === void 0 ? false : _props$destroyOnClose,\n _afterClose = props.afterClose;\n var _React$useState = React.useState(visible),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n animatedVisible = _React$useState2[0],\n setAnimatedVisible = _React$useState2[1];\n React.useEffect(function () {\n if (visible) {\n setAnimatedVisible(true);\n }\n }, [visible]);\n\n // // 渲染在当前 dom 里;\n // if (getContainer === false) {\n // return (\n // 2} // 不对 body 做任何操作。。\n // />\n // );\n // }\n\n // Destroy on close will remove wrapped div\n if (!forceRender && destroyOnClose && !animatedVisible) {\n return null;\n }\n return /*#__PURE__*/React.createElement(Portal, {\n open: visible || forceRender || animatedVisible,\n autoDestroy: false,\n getContainer: getContainer,\n autoLock: visible || animatedVisible\n }, /*#__PURE__*/React.createElement(Dialog, _extends({}, props, {\n destroyOnClose: destroyOnClose,\n afterClose: function afterClose() {\n _afterClose === null || _afterClose === void 0 ? void 0 : _afterClose();\n setAnimatedVisible(false);\n }\n })));\n};\nDialogWrap.displayName = 'Dialog';\nexport default DialogWrap;","import DialogWrap from \"./DialogWrap\";\nimport Panel from \"./Dialog/Content/Panel\";\nexport { Panel };\nexport default DialogWrap;","import canUseDom from \"rc-util/es/Dom/canUseDom\";\nimport { isStyleSupport } from \"rc-util/es/Dom/styleChecker\";\nexport var canUseDocElement = function canUseDocElement() {\n return canUseDom() && window.document.documentElement;\n};\nexport { isStyleSupport };\nvar flexGapSupported;\nexport var detectFlexGapSupported = function detectFlexGapSupported() {\n if (!canUseDocElement()) {\n return false;\n }\n if (flexGapSupported !== undefined) {\n return flexGapSupported;\n }\n // create flex container with row-gap set\n var flex = document.createElement('div');\n flex.style.display = 'flex';\n flex.style.flexDirection = 'column';\n flex.style.rowGap = '1px';\n // create two, elements inside it\n flex.appendChild(document.createElement('div'));\n flex.appendChild(document.createElement('div'));\n // some browser may not repaint when remove nodes, so we need create a new layer to detect.\n var container = document.createElement('div');\n container.style.position = 'absolute';\n container.style.zIndex = '-9999';\n container.appendChild(flex);\n // append to the DOM (needed to obtain scrollHeight)\n document.body.appendChild(container);\n flexGapSupported = flex.scrollHeight === 1; // flex container should be 1px high from the row-gap\n document.body.removeChild(container);\n return flexGapSupported;\n};","import warning from \"rc-util/es/warning\";\nimport * as React from 'react';\nexport var HOOK_MARK = 'RC_FORM_INTERNAL_HOOKS';\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar warningFunc = function warningFunc() {\n warning(false, 'Can not find FormContext. Please make sure you wrap Field under Form.');\n};\nvar Context = /*#__PURE__*/React.createContext({\n getFieldValue: warningFunc,\n getFieldsValue: warningFunc,\n getFieldError: warningFunc,\n getFieldWarning: warningFunc,\n getFieldsError: warningFunc,\n isFieldsTouched: warningFunc,\n isFieldTouched: warningFunc,\n isFieldValidating: warningFunc,\n isFieldsValidating: warningFunc,\n resetFields: warningFunc,\n setFields: warningFunc,\n setFieldValue: warningFunc,\n setFieldsValue: warningFunc,\n validateFields: warningFunc,\n submit: warningFunc,\n getInternalHooks: function getInternalHooks() {\n warningFunc();\n return {\n dispatch: warningFunc,\n initEntityValue: warningFunc,\n registerField: warningFunc,\n useSubscribe: warningFunc,\n setInitialValues: warningFunc,\n destroyForm: warningFunc,\n setCallbacks: warningFunc,\n registerWatch: warningFunc,\n getFields: warningFunc,\n setValidateMessages: warningFunc,\n setPreserve: warningFunc,\n getInitialValue: warningFunc\n };\n }\n});\nexport default Context;","import * as React from 'react';\nvar ListContext = /*#__PURE__*/React.createContext(null);\nexport default ListContext;","export function toArray(value) {\n if (value === undefined || value === null) {\n return [];\n }\n return Array.isArray(value) ? value : [value];\n}\nexport function isFormInstance(form) {\n return form && !!form._init;\n}","function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n _setPrototypeOf(subClass, superClass);\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction _construct(Parent, args, Class) {\n if (_isNativeReflectConstruct()) {\n _construct = Reflect.construct.bind();\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}\nfunction _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n return _wrapNativeSuper(Class);\n}\n\n/* eslint no-console:0 */\nvar formatRegExp = /%[sdj%]/g;\nvar warning = function warning() {}; // don't print warning message when in production env or node runtime\n\nif (typeof process !== 'undefined' && process.env && process.env.NODE_ENV !== 'production' && typeof window !== 'undefined' && typeof document !== 'undefined') {\n warning = function warning(type, errors) {\n if (typeof console !== 'undefined' && console.warn && typeof ASYNC_VALIDATOR_NO_WARNING === 'undefined') {\n if (errors.every(function (e) {\n return typeof e === 'string';\n })) {\n console.warn(type, errors);\n }\n }\n };\n}\nfunction convertFieldsError(errors) {\n if (!errors || !errors.length) return null;\n var fields = {};\n errors.forEach(function (error) {\n var field = error.field;\n fields[field] = fields[field] || [];\n fields[field].push(error);\n });\n return fields;\n}\nfunction format(template) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n var i = 0;\n var len = args.length;\n if (typeof template === 'function') {\n return template.apply(null, args);\n }\n if (typeof template === 'string') {\n var str = template.replace(formatRegExp, function (x) {\n if (x === '%%') {\n return '%';\n }\n if (i >= len) {\n return x;\n }\n switch (x) {\n case '%s':\n return String(args[i++]);\n case '%d':\n return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n break;\n default:\n return x;\n }\n });\n return str;\n }\n return template;\n}\nfunction isNativeStringType(type) {\n return type === 'string' || type === 'url' || type === 'hex' || type === 'email' || type === 'date' || type === 'pattern';\n}\nfunction isEmptyValue(value, type) {\n if (value === undefined || value === null) {\n return true;\n }\n if (type === 'array' && Array.isArray(value) && !value.length) {\n return true;\n }\n if (isNativeStringType(type) && typeof value === 'string' && !value) {\n return true;\n }\n return false;\n}\nfunction asyncParallelArray(arr, func, callback) {\n var results = [];\n var total = 0;\n var arrLength = arr.length;\n function count(errors) {\n results.push.apply(results, errors || []);\n total++;\n if (total === arrLength) {\n callback(results);\n }\n }\n arr.forEach(function (a) {\n func(a, count);\n });\n}\nfunction asyncSerialArray(arr, func, callback) {\n var index = 0;\n var arrLength = arr.length;\n function next(errors) {\n if (errors && errors.length) {\n callback(errors);\n return;\n }\n var original = index;\n index = index + 1;\n if (original < arrLength) {\n func(arr[original], next);\n } else {\n callback([]);\n }\n }\n next([]);\n}\nfunction flattenObjArr(objArr) {\n var ret = [];\n Object.keys(objArr).forEach(function (k) {\n ret.push.apply(ret, objArr[k] || []);\n });\n return ret;\n}\nvar AsyncValidationError = /*#__PURE__*/function (_Error) {\n _inheritsLoose(AsyncValidationError, _Error);\n function AsyncValidationError(errors, fields) {\n var _this;\n _this = _Error.call(this, 'Async Validation Error') || this;\n _this.errors = errors;\n _this.fields = fields;\n return _this;\n }\n return AsyncValidationError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\nfunction asyncMap(objArr, option, func, callback, source) {\n if (option.first) {\n var _pending = new Promise(function (resolve, reject) {\n var next = function next(errors) {\n callback(errors);\n return errors.length ? reject(new AsyncValidationError(errors, convertFieldsError(errors))) : resolve(source);\n };\n var flattenArr = flattenObjArr(objArr);\n asyncSerialArray(flattenArr, func, next);\n });\n _pending[\"catch\"](function (e) {\n return e;\n });\n return _pending;\n }\n var firstFields = option.firstFields === true ? Object.keys(objArr) : option.firstFields || [];\n var objArrKeys = Object.keys(objArr);\n var objArrLength = objArrKeys.length;\n var total = 0;\n var results = [];\n var pending = new Promise(function (resolve, reject) {\n var next = function next(errors) {\n results.push.apply(results, errors);\n total++;\n if (total === objArrLength) {\n callback(results);\n return results.length ? reject(new AsyncValidationError(results, convertFieldsError(results))) : resolve(source);\n }\n };\n if (!objArrKeys.length) {\n callback(results);\n resolve(source);\n }\n objArrKeys.forEach(function (key) {\n var arr = objArr[key];\n if (firstFields.indexOf(key) !== -1) {\n asyncSerialArray(arr, func, next);\n } else {\n asyncParallelArray(arr, func, next);\n }\n });\n });\n pending[\"catch\"](function (e) {\n return e;\n });\n return pending;\n}\nfunction isErrorObj(obj) {\n return !!(obj && obj.message !== undefined);\n}\nfunction getValue(value, path) {\n var v = value;\n for (var i = 0; i < path.length; i++) {\n if (v == undefined) {\n return v;\n }\n v = v[path[i]];\n }\n return v;\n}\nfunction complementError(rule, source) {\n return function (oe) {\n var fieldValue;\n if (rule.fullFields) {\n fieldValue = getValue(source, rule.fullFields);\n } else {\n fieldValue = source[oe.field || rule.fullField];\n }\n if (isErrorObj(oe)) {\n oe.field = oe.field || rule.fullField;\n oe.fieldValue = fieldValue;\n return oe;\n }\n return {\n message: typeof oe === 'function' ? oe() : oe,\n fieldValue: fieldValue,\n field: oe.field || rule.fullField\n };\n };\n}\nfunction deepMerge(target, source) {\n if (source) {\n for (var s in source) {\n if (source.hasOwnProperty(s)) {\n var value = source[s];\n if (typeof value === 'object' && typeof target[s] === 'object') {\n target[s] = _extends({}, target[s], value);\n } else {\n target[s] = value;\n }\n }\n }\n }\n return target;\n}\nvar required$1 = function required(rule, value, source, errors, options, type) {\n if (rule.required && (!source.hasOwnProperty(rule.field) || isEmptyValue(value, type || rule.type))) {\n errors.push(format(options.messages.required, rule.fullField));\n }\n};\n\n/**\n * Rule for validating whitespace.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param source The source object being validated.\n * @param errors An array of errors that this rule may add\n * validation errors to.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\n\nvar whitespace = function whitespace(rule, value, source, errors, options) {\n if (/^\\s+$/.test(value) || value === '') {\n errors.push(format(options.messages.whitespace, rule.fullField));\n }\n};\n\n// https://github.com/kevva/url-regex/blob/master/index.js\nvar urlReg;\nvar getUrlRegex = function getUrlRegex() {\n if (urlReg) {\n return urlReg;\n }\n var word = '[a-fA-F\\\\d:]';\n var b = function b(options) {\n return options && options.includeBoundaries ? \"(?:(?<=\\\\s|^)(?=\" + word + \")|(?<=\" + word + \")(?=\\\\s|$))\" : '';\n };\n var v4 = '(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)){3}';\n var v6seg = '[a-fA-F\\\\d]{1,4}';\n var v6 = (\"\\n(?:\\n(?:\" + v6seg + \":){7}(?:\" + v6seg + \"|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8\\n(?:\" + v6seg + \":){6}(?:\" + v4 + \"|:\" + v6seg + \"|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4\\n(?:\" + v6seg + \":){5}(?::\" + v4 + \"|(?::\" + v6seg + \"){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4\\n(?:\" + v6seg + \":){4}(?:(?::\" + v6seg + \"){0,1}:\" + v4 + \"|(?::\" + v6seg + \"){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4\\n(?:\" + v6seg + \":){3}(?:(?::\" + v6seg + \"){0,2}:\" + v4 + \"|(?::\" + v6seg + \"){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4\\n(?:\" + v6seg + \":){2}(?:(?::\" + v6seg + \"){0,3}:\" + v4 + \"|(?::\" + v6seg + \"){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4\\n(?:\" + v6seg + \":){1}(?:(?::\" + v6seg + \"){0,4}:\" + v4 + \"|(?::\" + v6seg + \"){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4\\n(?::(?:(?::\" + v6seg + \"){0,5}:\" + v4 + \"|(?::\" + v6seg + \"){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4\\n)(?:%[0-9a-zA-Z]{1,})? // %eth0 %1\\n\").replace(/\\s*\\/\\/.*$/gm, '').replace(/\\n/g, '').trim(); // Pre-compile only the exact regexes because adding a global flag make regexes stateful\n\n var v46Exact = new RegExp(\"(?:^\" + v4 + \"$)|(?:^\" + v6 + \"$)\");\n var v4exact = new RegExp(\"^\" + v4 + \"$\");\n var v6exact = new RegExp(\"^\" + v6 + \"$\");\n var ip = function ip(options) {\n return options && options.exact ? v46Exact : new RegExp(\"(?:\" + b(options) + v4 + b(options) + \")|(?:\" + b(options) + v6 + b(options) + \")\", 'g');\n };\n ip.v4 = function (options) {\n return options && options.exact ? v4exact : new RegExp(\"\" + b(options) + v4 + b(options), 'g');\n };\n ip.v6 = function (options) {\n return options && options.exact ? v6exact : new RegExp(\"\" + b(options) + v6 + b(options), 'g');\n };\n var protocol = \"(?:(?:[a-z]+:)?//)\";\n var auth = '(?:\\\\S+(?::\\\\S*)?@)?';\n var ipv4 = ip.v4().source;\n var ipv6 = ip.v6().source;\n var host = \"(?:(?:[a-z\\\\u00a1-\\\\uffff0-9][-_]*)*[a-z\\\\u00a1-\\\\uffff0-9]+)\";\n var domain = \"(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)*\";\n var tld = \"(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,}))\";\n var port = '(?::\\\\d{2,5})?';\n var path = '(?:[/?#][^\\\\s\"]*)?';\n var regex = \"(?:\" + protocol + \"|www\\\\.)\" + auth + \"(?:localhost|\" + ipv4 + \"|\" + ipv6 + \"|\" + host + domain + tld + \")\" + port + path;\n urlReg = new RegExp(\"(?:^\" + regex + \"$)\", 'i');\n return urlReg;\n};\n\n/* eslint max-len:0 */\n\nvar pattern$2 = {\n // http://emailregex.com/\n email: /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+\\.)+[a-zA-Z\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]{2,}))$/,\n // url: new RegExp(\n // '^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\\\S+(?::\\\\S*)?@)?(?:(?:(?:[1-9]\\\\d?|1\\\\d\\\\d|2[01]\\\\d|22[0-3])(?:\\\\.(?:1?\\\\d{1,2}|2[0-4]\\\\d|25[0-5])){2}(?:\\\\.(?:[0-9]\\\\d?|1\\\\d\\\\d|2[0-4]\\\\d|25[0-4]))|(?:(?:[a-z\\\\u00a1-\\\\uffff0-9]+-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]+-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)*(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,})))|localhost)(?::\\\\d{2,5})?(?:(/|\\\\?|#)[^\\\\s]*)?$',\n // 'i',\n // ),\n hex: /^#?([a-f0-9]{6}|[a-f0-9]{3})$/i\n};\nvar types = {\n integer: function integer(value) {\n return types.number(value) && parseInt(value, 10) === value;\n },\n \"float\": function float(value) {\n return types.number(value) && !types.integer(value);\n },\n array: function array(value) {\n return Array.isArray(value);\n },\n regexp: function regexp(value) {\n if (value instanceof RegExp) {\n return true;\n }\n try {\n return !!new RegExp(value);\n } catch (e) {\n return false;\n }\n },\n date: function date(value) {\n return typeof value.getTime === 'function' && typeof value.getMonth === 'function' && typeof value.getYear === 'function' && !isNaN(value.getTime());\n },\n number: function number(value) {\n if (isNaN(value)) {\n return false;\n }\n return typeof value === 'number';\n },\n object: function object(value) {\n return typeof value === 'object' && !types.array(value);\n },\n method: function method(value) {\n return typeof value === 'function';\n },\n email: function email(value) {\n return typeof value === 'string' && value.length <= 320 && !!value.match(pattern$2.email);\n },\n url: function url(value) {\n return typeof value === 'string' && value.length <= 2048 && !!value.match(getUrlRegex());\n },\n hex: function hex(value) {\n return typeof value === 'string' && !!value.match(pattern$2.hex);\n }\n};\nvar type$1 = function type(rule, value, source, errors, options) {\n if (rule.required && value === undefined) {\n required$1(rule, value, source, errors, options);\n return;\n }\n var custom = ['integer', 'float', 'array', 'regexp', 'object', 'method', 'email', 'number', 'date', 'url', 'hex'];\n var ruleType = rule.type;\n if (custom.indexOf(ruleType) > -1) {\n if (!types[ruleType](value)) {\n errors.push(format(options.messages.types[ruleType], rule.fullField, rule.type));\n } // straight typeof check\n } else if (ruleType && typeof value !== rule.type) {\n errors.push(format(options.messages.types[ruleType], rule.fullField, rule.type));\n }\n};\nvar range = function range(rule, value, source, errors, options) {\n var len = typeof rule.len === 'number';\n var min = typeof rule.min === 'number';\n var max = typeof rule.max === 'number'; // 正则匹配码点范围从U+010000一直到U+10FFFF的文字(补充平面Supplementary Plane)\n\n var spRegexp = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n var val = value;\n var key = null;\n var num = typeof value === 'number';\n var str = typeof value === 'string';\n var arr = Array.isArray(value);\n if (num) {\n key = 'number';\n } else if (str) {\n key = 'string';\n } else if (arr) {\n key = 'array';\n } // if the value is not of a supported type for range validation\n // the validation rule rule should use the\n // type property to also test for a particular type\n\n if (!key) {\n return false;\n }\n if (arr) {\n val = value.length;\n }\n if (str) {\n // 处理码点大于U+010000的文字length属性不准确的bug,如\"𠮷𠮷𠮷\".lenght !== 3\n val = value.replace(spRegexp, '_').length;\n }\n if (len) {\n if (val !== rule.len) {\n errors.push(format(options.messages[key].len, rule.fullField, rule.len));\n }\n } else if (min && !max && val < rule.min) {\n errors.push(format(options.messages[key].min, rule.fullField, rule.min));\n } else if (max && !min && val > rule.max) {\n errors.push(format(options.messages[key].max, rule.fullField, rule.max));\n } else if (min && max && (val < rule.min || val > rule.max)) {\n errors.push(format(options.messages[key].range, rule.fullField, rule.min, rule.max));\n }\n};\nvar ENUM$1 = 'enum';\nvar enumerable$1 = function enumerable(rule, value, source, errors, options) {\n rule[ENUM$1] = Array.isArray(rule[ENUM$1]) ? rule[ENUM$1] : [];\n if (rule[ENUM$1].indexOf(value) === -1) {\n errors.push(format(options.messages[ENUM$1], rule.fullField, rule[ENUM$1].join(', ')));\n }\n};\nvar pattern$1 = function pattern(rule, value, source, errors, options) {\n if (rule.pattern) {\n if (rule.pattern instanceof RegExp) {\n // if a RegExp instance is passed, reset `lastIndex` in case its `global`\n // flag is accidentally set to `true`, which in a validation scenario\n // is not necessary and the result might be misleading\n rule.pattern.lastIndex = 0;\n if (!rule.pattern.test(value)) {\n errors.push(format(options.messages.pattern.mismatch, rule.fullField, value, rule.pattern));\n }\n } else if (typeof rule.pattern === 'string') {\n var _pattern = new RegExp(rule.pattern);\n if (!_pattern.test(value)) {\n errors.push(format(options.messages.pattern.mismatch, rule.fullField, value, rule.pattern));\n }\n }\n }\n};\nvar rules = {\n required: required$1,\n whitespace: whitespace,\n type: type$1,\n range: range,\n \"enum\": enumerable$1,\n pattern: pattern$1\n};\nvar string = function string(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n if (validate) {\n if (isEmptyValue(value, 'string') && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options, 'string');\n if (!isEmptyValue(value, 'string')) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n rules.pattern(rule, value, source, errors, options);\n if (rule.whitespace === true) {\n rules.whitespace(rule, value, source, errors, options);\n }\n }\n }\n callback(errors);\n};\nvar method = function method(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n }\n }\n callback(errors);\n};\nvar number = function number(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n if (validate) {\n if (value === '') {\n value = undefined;\n }\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n }\n }\n callback(errors);\n};\nvar _boolean = function _boolean(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n }\n }\n callback(errors);\n};\nvar regexp = function regexp(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (!isEmptyValue(value)) {\n rules.type(rule, value, source, errors, options);\n }\n }\n callback(errors);\n};\nvar integer = function integer(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n }\n }\n callback(errors);\n};\nvar floatFn = function floatFn(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n }\n }\n callback(errors);\n};\nvar array = function array(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n if (validate) {\n if ((value === undefined || value === null) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options, 'array');\n if (value !== undefined && value !== null) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n }\n }\n callback(errors);\n};\nvar object = function object(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n }\n }\n callback(errors);\n};\nvar ENUM = 'enum';\nvar enumerable = function enumerable(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (value !== undefined) {\n rules[ENUM](rule, value, source, errors, options);\n }\n }\n callback(errors);\n};\nvar pattern = function pattern(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n if (validate) {\n if (isEmptyValue(value, 'string') && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (!isEmptyValue(value, 'string')) {\n rules.pattern(rule, value, source, errors, options);\n }\n }\n callback(errors);\n};\nvar date = function date(rule, value, callback, source, options) {\n // console.log('integer rule called %j', rule);\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); // console.log('validate on %s value', value);\n\n if (validate) {\n if (isEmptyValue(value, 'date') && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (!isEmptyValue(value, 'date')) {\n var dateObject;\n if (value instanceof Date) {\n dateObject = value;\n } else {\n dateObject = new Date(value);\n }\n rules.type(rule, dateObject, source, errors, options);\n if (dateObject) {\n rules.range(rule, dateObject.getTime(), source, errors, options);\n }\n }\n }\n callback(errors);\n};\nvar required = function required(rule, value, callback, source, options) {\n var errors = [];\n var type = Array.isArray(value) ? 'array' : typeof value;\n rules.required(rule, value, source, errors, options, type);\n callback(errors);\n};\nvar type = function type(rule, value, callback, source, options) {\n var ruleType = rule.type;\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n if (validate) {\n if (isEmptyValue(value, ruleType) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options, ruleType);\n if (!isEmptyValue(value, ruleType)) {\n rules.type(rule, value, source, errors, options);\n }\n }\n callback(errors);\n};\nvar any = function any(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n }\n callback(errors);\n};\nvar validators = {\n string: string,\n method: method,\n number: number,\n \"boolean\": _boolean,\n regexp: regexp,\n integer: integer,\n \"float\": floatFn,\n array: array,\n object: object,\n \"enum\": enumerable,\n pattern: pattern,\n date: date,\n url: type,\n hex: type,\n email: type,\n required: required,\n any: any\n};\nfunction newMessages() {\n return {\n \"default\": 'Validation error on field %s',\n required: '%s is required',\n \"enum\": '%s must be one of %s',\n whitespace: '%s cannot be empty',\n date: {\n format: '%s date %s is invalid for format %s',\n parse: '%s date could not be parsed, %s is invalid ',\n invalid: '%s date %s is invalid'\n },\n types: {\n string: '%s is not a %s',\n method: '%s is not a %s (function)',\n array: '%s is not an %s',\n object: '%s is not an %s',\n number: '%s is not a %s',\n date: '%s is not a %s',\n \"boolean\": '%s is not a %s',\n integer: '%s is not an %s',\n \"float\": '%s is not a %s',\n regexp: '%s is not a valid %s',\n email: '%s is not a valid %s',\n url: '%s is not a valid %s',\n hex: '%s is not a valid %s'\n },\n string: {\n len: '%s must be exactly %s characters',\n min: '%s must be at least %s characters',\n max: '%s cannot be longer than %s characters',\n range: '%s must be between %s and %s characters'\n },\n number: {\n len: '%s must equal %s',\n min: '%s cannot be less than %s',\n max: '%s cannot be greater than %s',\n range: '%s must be between %s and %s'\n },\n array: {\n len: '%s must be exactly %s in length',\n min: '%s cannot be less than %s in length',\n max: '%s cannot be greater than %s in length',\n range: '%s must be between %s and %s in length'\n },\n pattern: {\n mismatch: '%s value %s does not match pattern %s'\n },\n clone: function clone() {\n var cloned = JSON.parse(JSON.stringify(this));\n cloned.clone = this.clone;\n return cloned;\n }\n };\n}\nvar messages = newMessages();\n\n/**\n * Encapsulates a validation schema.\n *\n * @param descriptor An object declaring validation rules\n * for this schema.\n */\n\nvar Schema = /*#__PURE__*/function () {\n // ========================= Static =========================\n // ======================== Instance ========================\n function Schema(descriptor) {\n this.rules = null;\n this._messages = messages;\n this.define(descriptor);\n }\n var _proto = Schema.prototype;\n _proto.define = function define(rules) {\n var _this = this;\n if (!rules) {\n throw new Error('Cannot configure a schema with no rules');\n }\n if (typeof rules !== 'object' || Array.isArray(rules)) {\n throw new Error('Rules must be an object');\n }\n this.rules = {};\n Object.keys(rules).forEach(function (name) {\n var item = rules[name];\n _this.rules[name] = Array.isArray(item) ? item : [item];\n });\n };\n _proto.messages = function messages(_messages) {\n if (_messages) {\n this._messages = deepMerge(newMessages(), _messages);\n }\n return this._messages;\n };\n _proto.validate = function validate(source_, o, oc) {\n var _this2 = this;\n if (o === void 0) {\n o = {};\n }\n if (oc === void 0) {\n oc = function oc() {};\n }\n var source = source_;\n var options = o;\n var callback = oc;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n if (!this.rules || Object.keys(this.rules).length === 0) {\n if (callback) {\n callback(null, source);\n }\n return Promise.resolve(source);\n }\n function complete(results) {\n var errors = [];\n var fields = {};\n function add(e) {\n if (Array.isArray(e)) {\n var _errors;\n errors = (_errors = errors).concat.apply(_errors, e);\n } else {\n errors.push(e);\n }\n }\n for (var i = 0; i < results.length; i++) {\n add(results[i]);\n }\n if (!errors.length) {\n callback(null, source);\n } else {\n fields = convertFieldsError(errors);\n callback(errors, fields);\n }\n }\n if (options.messages) {\n var messages$1 = this.messages();\n if (messages$1 === messages) {\n messages$1 = newMessages();\n }\n deepMerge(messages$1, options.messages);\n options.messages = messages$1;\n } else {\n options.messages = this.messages();\n }\n var series = {};\n var keys = options.keys || Object.keys(this.rules);\n keys.forEach(function (z) {\n var arr = _this2.rules[z];\n var value = source[z];\n arr.forEach(function (r) {\n var rule = r;\n if (typeof rule.transform === 'function') {\n if (source === source_) {\n source = _extends({}, source);\n }\n value = source[z] = rule.transform(value);\n }\n if (typeof rule === 'function') {\n rule = {\n validator: rule\n };\n } else {\n rule = _extends({}, rule);\n } // Fill validator. Skip if nothing need to validate\n\n rule.validator = _this2.getValidationMethod(rule);\n if (!rule.validator) {\n return;\n }\n rule.field = z;\n rule.fullField = rule.fullField || z;\n rule.type = _this2.getType(rule);\n series[z] = series[z] || [];\n series[z].push({\n rule: rule,\n value: value,\n source: source,\n field: z\n });\n });\n });\n var errorFields = {};\n return asyncMap(series, options, function (data, doIt) {\n var rule = data.rule;\n var deep = (rule.type === 'object' || rule.type === 'array') && (typeof rule.fields === 'object' || typeof rule.defaultField === 'object');\n deep = deep && (rule.required || !rule.required && data.value);\n rule.field = data.field;\n function addFullField(key, schema) {\n return _extends({}, schema, {\n fullField: rule.fullField + \".\" + key,\n fullFields: rule.fullFields ? [].concat(rule.fullFields, [key]) : [key]\n });\n }\n function cb(e) {\n if (e === void 0) {\n e = [];\n }\n var errorList = Array.isArray(e) ? e : [e];\n if (!options.suppressWarning && errorList.length) {\n Schema.warning('async-validator:', errorList);\n }\n if (errorList.length && rule.message !== undefined) {\n errorList = [].concat(rule.message);\n } // Fill error info\n\n var filledErrors = errorList.map(complementError(rule, source));\n if (options.first && filledErrors.length) {\n errorFields[rule.field] = 1;\n return doIt(filledErrors);\n }\n if (!deep) {\n doIt(filledErrors);\n } else {\n // if rule is required but the target object\n // does not exist fail at the rule level and don't\n // go deeper\n if (rule.required && !data.value) {\n if (rule.message !== undefined) {\n filledErrors = [].concat(rule.message).map(complementError(rule, source));\n } else if (options.error) {\n filledErrors = [options.error(rule, format(options.messages.required, rule.field))];\n }\n return doIt(filledErrors);\n }\n var fieldsSchema = {};\n if (rule.defaultField) {\n Object.keys(data.value).map(function (key) {\n fieldsSchema[key] = rule.defaultField;\n });\n }\n fieldsSchema = _extends({}, fieldsSchema, data.rule.fields);\n var paredFieldsSchema = {};\n Object.keys(fieldsSchema).forEach(function (field) {\n var fieldSchema = fieldsSchema[field];\n var fieldSchemaList = Array.isArray(fieldSchema) ? fieldSchema : [fieldSchema];\n paredFieldsSchema[field] = fieldSchemaList.map(addFullField.bind(null, field));\n });\n var schema = new Schema(paredFieldsSchema);\n schema.messages(options.messages);\n if (data.rule.options) {\n data.rule.options.messages = options.messages;\n data.rule.options.error = options.error;\n }\n schema.validate(data.value, data.rule.options || options, function (errs) {\n var finalErrors = [];\n if (filledErrors && filledErrors.length) {\n finalErrors.push.apply(finalErrors, filledErrors);\n }\n if (errs && errs.length) {\n finalErrors.push.apply(finalErrors, errs);\n }\n doIt(finalErrors.length ? finalErrors : null);\n });\n }\n }\n var res;\n if (rule.asyncValidator) {\n res = rule.asyncValidator(rule, data.value, cb, data.source, options);\n } else if (rule.validator) {\n try {\n res = rule.validator(rule, data.value, cb, data.source, options);\n } catch (error) {\n console.error == null ? void 0 : console.error(error); // rethrow to report error\n\n if (!options.suppressValidatorError) {\n setTimeout(function () {\n throw error;\n }, 0);\n }\n cb(error.message);\n }\n if (res === true) {\n cb();\n } else if (res === false) {\n cb(typeof rule.message === 'function' ? rule.message(rule.fullField || rule.field) : rule.message || (rule.fullField || rule.field) + \" fails\");\n } else if (res instanceof Array) {\n cb(res);\n } else if (res instanceof Error) {\n cb(res.message);\n }\n }\n if (res && res.then) {\n res.then(function () {\n return cb();\n }, function (e) {\n return cb(e);\n });\n }\n }, function (results) {\n complete(results);\n }, source);\n };\n _proto.getType = function getType(rule) {\n if (rule.type === undefined && rule.pattern instanceof RegExp) {\n rule.type = 'pattern';\n }\n if (typeof rule.validator !== 'function' && rule.type && !validators.hasOwnProperty(rule.type)) {\n throw new Error(format('Unknown rule type %s', rule.type));\n }\n return rule.type || 'string';\n };\n _proto.getValidationMethod = function getValidationMethod(rule) {\n if (typeof rule.validator === 'function') {\n return rule.validator;\n }\n var keys = Object.keys(rule);\n var messageIndex = keys.indexOf('message');\n if (messageIndex !== -1) {\n keys.splice(messageIndex, 1);\n }\n if (keys.length === 1 && keys[0] === 'required') {\n return validators.required;\n }\n return validators[this.getType(rule)] || undefined;\n };\n return Schema;\n}();\nSchema.register = function register(type, validator) {\n if (typeof validator !== 'function') {\n throw new Error('Cannot register a validator by type, validator is not a function');\n }\n validators[type] = validator;\n};\nSchema.warning = warning;\nSchema.messages = messages;\nSchema.validators = validators;\nexport { Schema as default };","var typeTemplate = \"'${name}' is not a valid ${type}\";\nexport var defaultValidateMessages = {\n default: \"Validation error on field '${name}'\",\n required: \"'${name}' is required\",\n enum: \"'${name}' must be one of [${enum}]\",\n whitespace: \"'${name}' cannot be empty\",\n date: {\n format: \"'${name}' is invalid for format date\",\n parse: \"'${name}' could not be parsed as date\",\n invalid: \"'${name}' is invalid date\"\n },\n types: {\n string: typeTemplate,\n method: typeTemplate,\n array: typeTemplate,\n object: typeTemplate,\n number: typeTemplate,\n date: typeTemplate,\n boolean: typeTemplate,\n integer: typeTemplate,\n float: typeTemplate,\n regexp: typeTemplate,\n email: typeTemplate,\n url: typeTemplate,\n hex: typeTemplate\n },\n string: {\n len: \"'${name}' must be exactly ${len} characters\",\n min: \"'${name}' must be at least ${min} characters\",\n max: \"'${name}' cannot be longer than ${max} characters\",\n range: \"'${name}' must be between ${min} and ${max} characters\"\n },\n number: {\n len: \"'${name}' must equal ${len}\",\n min: \"'${name}' cannot be less than ${min}\",\n max: \"'${name}' cannot be greater than ${max}\",\n range: \"'${name}' must be between ${min} and ${max}\"\n },\n array: {\n len: \"'${name}' must be exactly ${len} in length\",\n min: \"'${name}' cannot be less than ${min} in length\",\n max: \"'${name}' cannot be greater than ${max} in length\",\n range: \"'${name}' must be between ${min} and ${max} in length\"\n },\n pattern: {\n mismatch: \"'${name}' does not match pattern ${pattern}\"\n }\n};","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _regeneratorRuntime from \"@babel/runtime/helpers/esm/regeneratorRuntime\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _asyncToGenerator from \"@babel/runtime/helpers/esm/asyncToGenerator\";\nimport RawAsyncValidator from 'async-validator';\nimport * as React from 'react';\nimport warning from \"rc-util/es/warning\";\nimport { defaultValidateMessages } from './messages';\nimport { merge } from \"rc-util/es/utils/set\";\n// Remove incorrect original ts define\nvar AsyncValidator = RawAsyncValidator;\n/**\n * Replace with template.\n * `I'm ${name}` + { name: 'bamboo' } = I'm bamboo\n */\nfunction replaceMessage(template, kv) {\n return template.replace(/\\$\\{\\w+\\}/g, function (str) {\n var key = str.slice(2, -1);\n return kv[key];\n });\n}\nvar CODE_LOGIC_ERROR = 'CODE_LOGIC_ERROR';\nfunction validateRule(_x, _x2, _x3, _x4, _x5) {\n return _validateRule.apply(this, arguments);\n}\n/**\n * We use `async-validator` to validate the value.\n * But only check one value in a time to avoid namePath validate issue.\n */\nfunction _validateRule() {\n _validateRule = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(name, value, rule, options, messageVariables) {\n var cloneRule, originValidator, subRuleField, validator, messages, result, subResults, kv, fillVariableResult;\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n cloneRule = _objectSpread({}, rule); // Bug of `async-validator`\n // https://github.com/react-component/field-form/issues/316\n // https://github.com/react-component/field-form/issues/313\n delete cloneRule.ruleIndex;\n // https://github.com/ant-design/ant-design/issues/40497#issuecomment-1422282378\n AsyncValidator.warning = function () {\n return void 0;\n };\n if (cloneRule.validator) {\n originValidator = cloneRule.validator;\n cloneRule.validator = function () {\n try {\n return originValidator.apply(void 0, arguments);\n } catch (error) {\n console.error(error);\n return Promise.reject(CODE_LOGIC_ERROR);\n }\n };\n }\n // We should special handle array validate\n subRuleField = null;\n if (cloneRule && cloneRule.type === 'array' && cloneRule.defaultField) {\n subRuleField = cloneRule.defaultField;\n delete cloneRule.defaultField;\n }\n validator = new AsyncValidator(_defineProperty({}, name, [cloneRule]));\n messages = merge(defaultValidateMessages, options.validateMessages);\n validator.messages(messages);\n result = [];\n _context2.prev = 10;\n _context2.next = 13;\n return Promise.resolve(validator.validate(_defineProperty({}, name, value), _objectSpread({}, options)));\n case 13:\n _context2.next = 18;\n break;\n case 15:\n _context2.prev = 15;\n _context2.t0 = _context2[\"catch\"](10);\n if (_context2.t0.errors) {\n result = _context2.t0.errors.map(function (_ref4, index) {\n var message = _ref4.message;\n var mergedMessage = message === CODE_LOGIC_ERROR ? messages.default : message;\n return /*#__PURE__*/React.isValidElement(mergedMessage) ? /*#__PURE__*/\n // Wrap ReactNode with `key`\n React.cloneElement(mergedMessage, {\n key: \"error_\".concat(index)\n }) : mergedMessage;\n });\n }\n case 18:\n if (!(!result.length && subRuleField)) {\n _context2.next = 23;\n break;\n }\n _context2.next = 21;\n return Promise.all(value.map(function (subValue, i) {\n return validateRule(\"\".concat(name, \".\").concat(i), subValue, subRuleField, options, messageVariables);\n }));\n case 21:\n subResults = _context2.sent;\n return _context2.abrupt(\"return\", subResults.reduce(function (prev, errors) {\n return [].concat(_toConsumableArray(prev), _toConsumableArray(errors));\n }, []));\n case 23:\n // Replace message with variables\n kv = _objectSpread(_objectSpread({}, rule), {}, {\n name: name,\n enum: (rule.enum || []).join(', ')\n }, messageVariables);\n fillVariableResult = result.map(function (error) {\n if (typeof error === 'string') {\n return replaceMessage(error, kv);\n }\n return error;\n });\n return _context2.abrupt(\"return\", fillVariableResult);\n case 26:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, null, [[10, 15]]);\n }));\n return _validateRule.apply(this, arguments);\n}\nexport function validateRules(namePath, value, rules, options, validateFirst, messageVariables) {\n var name = namePath.join('.');\n // Fill rule with context\n var filledRules = rules.map(function (currentRule, ruleIndex) {\n var originValidatorFunc = currentRule.validator;\n var cloneRule = _objectSpread(_objectSpread({}, currentRule), {}, {\n ruleIndex: ruleIndex\n });\n // Replace validator if needed\n if (originValidatorFunc) {\n cloneRule.validator = function (rule, val, callback) {\n var hasPromise = false;\n // Wrap callback only accept when promise not provided\n var wrappedCallback = function wrappedCallback() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n // Wait a tick to make sure return type is a promise\n Promise.resolve().then(function () {\n warning(!hasPromise, 'Your validator function has already return a promise. `callback` will be ignored.');\n if (!hasPromise) {\n callback.apply(void 0, args);\n }\n });\n };\n // Get promise\n var promise = originValidatorFunc(rule, val, wrappedCallback);\n hasPromise = promise && typeof promise.then === 'function' && typeof promise.catch === 'function';\n /**\n * 1. Use promise as the first priority.\n * 2. If promise not exist, use callback with warning instead\n */\n warning(hasPromise, '`callback` is deprecated. Please return a promise instead.');\n if (hasPromise) {\n promise.then(function () {\n callback();\n }).catch(function (err) {\n callback(err || ' ');\n });\n }\n };\n }\n return cloneRule;\n }).sort(function (_ref, _ref2) {\n var w1 = _ref.warningOnly,\n i1 = _ref.ruleIndex;\n var w2 = _ref2.warningOnly,\n i2 = _ref2.ruleIndex;\n if (!!w1 === !!w2) {\n // Let keep origin order\n return i1 - i2;\n }\n if (w1) {\n return 1;\n }\n return -1;\n });\n // Do validate rules\n var summaryPromise;\n if (validateFirst === true) {\n // >>>>> Validate by serialization\n summaryPromise = new Promise( /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(resolve, reject) {\n var i, rule, errors;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n i = 0;\n case 1:\n if (!(i < filledRules.length)) {\n _context.next = 12;\n break;\n }\n rule = filledRules[i];\n _context.next = 5;\n return validateRule(name, value, rule, options, messageVariables);\n case 5:\n errors = _context.sent;\n if (!errors.length) {\n _context.next = 9;\n break;\n }\n reject([{\n errors: errors,\n rule: rule\n }]);\n return _context.abrupt(\"return\");\n case 9:\n i += 1;\n _context.next = 1;\n break;\n case 12:\n /* eslint-enable */\n resolve([]);\n case 13:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return function (_x6, _x7) {\n return _ref3.apply(this, arguments);\n };\n }());\n } else {\n // >>>>> Validate by parallel\n var rulePromises = filledRules.map(function (rule) {\n return validateRule(name, value, rule, options, messageVariables).then(function (errors) {\n return {\n errors: errors,\n rule: rule\n };\n });\n });\n summaryPromise = (validateFirst ? finishOnFirstFailed(rulePromises) : finishOnAllFailed(rulePromises)).then(function (errors) {\n // Always change to rejection for Field to catch\n return Promise.reject(errors);\n });\n }\n // Internal catch error to avoid console error log.\n summaryPromise.catch(function (e) {\n return e;\n });\n return summaryPromise;\n}\nfunction finishOnAllFailed(_x8) {\n return _finishOnAllFailed.apply(this, arguments);\n}\nfunction _finishOnAllFailed() {\n _finishOnAllFailed = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(rulePromises) {\n return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n return _context3.abrupt(\"return\", Promise.all(rulePromises).then(function (errorsList) {\n var _ref5;\n var errors = (_ref5 = []).concat.apply(_ref5, _toConsumableArray(errorsList));\n return errors;\n }));\n case 1:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3);\n }));\n return _finishOnAllFailed.apply(this, arguments);\n}\nfunction finishOnFirstFailed(_x9) {\n return _finishOnFirstFailed.apply(this, arguments);\n}\nfunction _finishOnFirstFailed() {\n _finishOnFirstFailed = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(rulePromises) {\n var count;\n return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n count = 0;\n return _context4.abrupt(\"return\", new Promise(function (resolve) {\n rulePromises.forEach(function (promise) {\n promise.then(function (ruleError) {\n if (ruleError.errors.length) {\n resolve([ruleError]);\n }\n count += 1;\n if (count === rulePromises.length) {\n resolve([]);\n }\n });\n });\n }));\n case 2:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4);\n }));\n return _finishOnFirstFailed.apply(this, arguments);\n}","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport getValue from \"rc-util/es/utils/get\";\nimport setValue from \"rc-util/es/utils/set\";\nimport { toArray } from './typeUtil';\nexport { getValue, setValue };\n/**\n * Convert name to internal supported format.\n * This function should keep since we still thinking if need support like `a.b.c` format.\n * 'a' => ['a']\n * 123 => [123]\n * ['a', 123] => ['a', 123]\n */\nexport function getNamePath(path) {\n return toArray(path);\n}\nexport function cloneByNamePathList(store, namePathList) {\n var newStore = {};\n namePathList.forEach(function (namePath) {\n var value = getValue(store, namePath);\n newStore = setValue(newStore, namePath, value);\n });\n return newStore;\n}\nexport function containsNamePath(namePathList, namePath) {\n return namePathList && namePathList.some(function (path) {\n return matchNamePath(path, namePath);\n });\n}\nexport function matchNamePath(namePath, changedNamePath) {\n if (!namePath || !changedNamePath || namePath.length !== changedNamePath.length) {\n return false;\n }\n return namePath.every(function (nameUnit, i) {\n return changedNamePath[i] === nameUnit;\n });\n}\nexport function isSimilar(source, target) {\n if (source === target) {\n return true;\n }\n if (!source && target || source && !target) {\n return false;\n }\n if (!source || !target || _typeof(source) !== 'object' || _typeof(target) !== 'object') {\n return false;\n }\n var sourceKeys = Object.keys(source);\n var targetKeys = Object.keys(target);\n var keys = new Set([].concat(sourceKeys, targetKeys));\n return _toConsumableArray(keys).every(function (key) {\n var sourceValue = source[key];\n var targetValue = target[key];\n if (typeof sourceValue === 'function' && typeof targetValue === 'function') {\n return true;\n }\n return sourceValue === targetValue;\n });\n}\nexport function defaultGetValueFromEvent(valuePropName) {\n var event = arguments.length <= 1 ? undefined : arguments[1];\n if (event && event.target && _typeof(event.target) === 'object' && valuePropName in event.target) {\n return event.target[valuePropName];\n }\n return event;\n}\n/**\n * Moves an array item from one position in an array to another.\n *\n * Note: This is a pure function so a new array will be returned, instead\n * of altering the array argument.\n *\n * @param array Array in which to move an item. (required)\n * @param moveIndex The index of the item to move. (required)\n * @param toIndex The index to move item at moveIndex to. (required)\n */\nexport function move(array, moveIndex, toIndex) {\n var length = array.length;\n if (moveIndex < 0 || moveIndex >= length || toIndex < 0 || toIndex >= length) {\n return array;\n }\n var item = array[moveIndex];\n var diff = moveIndex - toIndex;\n if (diff > 0) {\n // move left\n return [].concat(_toConsumableArray(array.slice(0, toIndex)), [item], _toConsumableArray(array.slice(toIndex, moveIndex)), _toConsumableArray(array.slice(moveIndex + 1, length)));\n }\n if (diff < 0) {\n // move right\n return [].concat(_toConsumableArray(array.slice(0, moveIndex)), _toConsumableArray(array.slice(moveIndex + 1, toIndex + 1)), [item], _toConsumableArray(array.slice(toIndex + 1, length)));\n }\n return array;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nvar _excluded = [\"name\"];\nimport toChildrenArray from \"rc-util/es/Children/toArray\";\nimport warning from \"rc-util/es/warning\";\nimport isEqual from \"rc-util/es/isEqual\";\nimport * as React from 'react';\nimport FieldContext, { HOOK_MARK } from './FieldContext';\nimport ListContext from './ListContext';\nimport { toArray } from './utils/typeUtil';\nimport { validateRules } from './utils/validateUtil';\nimport { containsNamePath, defaultGetValueFromEvent, getNamePath, getValue } from './utils/valueUtil';\nvar EMPTY_ERRORS = [];\nfunction requireUpdate(shouldUpdate, prev, next, prevValue, nextValue, info) {\n if (typeof shouldUpdate === 'function') {\n return shouldUpdate(prev, next, 'source' in info ? {\n source: info.source\n } : {});\n }\n return prevValue !== nextValue;\n}\n// We use Class instead of Hooks here since it will cost much code by using Hooks.\nvar Field = /*#__PURE__*/function (_React$Component) {\n _inherits(Field, _React$Component);\n var _super = _createSuper(Field);\n // ============================== Subscriptions ==============================\n function Field(props) {\n var _this;\n _classCallCheck(this, Field);\n _this = _super.call(this, props);\n // Register on init\n _this.state = {\n resetCount: 0\n };\n _this.cancelRegisterFunc = null;\n _this.mounted = false;\n /**\n * Follow state should not management in State since it will async update by React.\n * This makes first render of form can not get correct state value.\n */\n _this.touched = false;\n /**\n * Mark when touched & validated. Currently only used for `dependencies`.\n * Note that we do not think field with `initialValue` is dirty\n * but this will be by `isFieldDirty` func.\n */\n _this.dirty = false;\n _this.validatePromise = void 0;\n _this.prevValidating = void 0;\n _this.errors = EMPTY_ERRORS;\n _this.warnings = EMPTY_ERRORS;\n _this.cancelRegister = function () {\n var _this$props = _this.props,\n preserve = _this$props.preserve,\n isListField = _this$props.isListField,\n name = _this$props.name;\n if (_this.cancelRegisterFunc) {\n _this.cancelRegisterFunc(isListField, preserve, getNamePath(name));\n }\n _this.cancelRegisterFunc = null;\n };\n // ================================== Utils ==================================\n _this.getNamePath = function () {\n var _this$props2 = _this.props,\n name = _this$props2.name,\n fieldContext = _this$props2.fieldContext;\n var _fieldContext$prefixN = fieldContext.prefixName,\n prefixName = _fieldContext$prefixN === void 0 ? [] : _fieldContext$prefixN;\n return name !== undefined ? [].concat(_toConsumableArray(prefixName), _toConsumableArray(name)) : [];\n };\n _this.getRules = function () {\n var _this$props3 = _this.props,\n _this$props3$rules = _this$props3.rules,\n rules = _this$props3$rules === void 0 ? [] : _this$props3$rules,\n fieldContext = _this$props3.fieldContext;\n return rules.map(function (rule) {\n if (typeof rule === 'function') {\n return rule(fieldContext);\n }\n return rule;\n });\n };\n _this.refresh = function () {\n if (!_this.mounted) return;\n /**\n * Clean up current node.\n */\n _this.setState(function (_ref) {\n var resetCount = _ref.resetCount;\n return {\n resetCount: resetCount + 1\n };\n });\n };\n // Event should only trigger when meta changed\n _this.metaCache = null;\n _this.triggerMetaEvent = function (destroy) {\n var onMetaChange = _this.props.onMetaChange;\n if (onMetaChange) {\n var meta = _objectSpread(_objectSpread({}, _this.getMeta()), {}, {\n destroy: destroy\n });\n if (!isEqual(_this.metaCache, meta)) {\n onMetaChange(meta);\n }\n _this.metaCache = meta;\n } else {\n _this.metaCache = null;\n }\n };\n // ========================= Field Entity Interfaces =========================\n // Trigger by store update. Check if need update the component\n _this.onStoreChange = function (prevStore, namePathList, info) {\n var _this$props4 = _this.props,\n shouldUpdate = _this$props4.shouldUpdate,\n _this$props4$dependen = _this$props4.dependencies,\n dependencies = _this$props4$dependen === void 0 ? [] : _this$props4$dependen,\n onReset = _this$props4.onReset;\n var store = info.store;\n var namePath = _this.getNamePath();\n var prevValue = _this.getValue(prevStore);\n var curValue = _this.getValue(store);\n var namePathMatch = namePathList && containsNamePath(namePathList, namePath);\n // `setFieldsValue` is a quick access to update related status\n if (info.type === 'valueUpdate' && info.source === 'external' && prevValue !== curValue) {\n _this.touched = true;\n _this.dirty = true;\n _this.validatePromise = null;\n _this.errors = EMPTY_ERRORS;\n _this.warnings = EMPTY_ERRORS;\n _this.triggerMetaEvent();\n }\n switch (info.type) {\n case 'reset':\n if (!namePathList || namePathMatch) {\n // Clean up state\n _this.touched = false;\n _this.dirty = false;\n _this.validatePromise = undefined;\n _this.errors = EMPTY_ERRORS;\n _this.warnings = EMPTY_ERRORS;\n _this.triggerMetaEvent();\n onReset === null || onReset === void 0 ? void 0 : onReset();\n _this.refresh();\n return;\n }\n break;\n /**\n * In case field with `preserve = false` nest deps like:\n * - A = 1 => show B\n * - B = 1 => show C\n * - Reset A, need clean B, C\n */\n case 'remove':\n {\n if (shouldUpdate) {\n _this.reRender();\n return;\n }\n break;\n }\n case 'setField':\n {\n if (namePathMatch) {\n var data = info.data;\n if ('touched' in data) {\n _this.touched = data.touched;\n }\n if ('validating' in data && !('originRCField' in data)) {\n _this.validatePromise = data.validating ? Promise.resolve([]) : null;\n }\n if ('errors' in data) {\n _this.errors = data.errors || EMPTY_ERRORS;\n }\n if ('warnings' in data) {\n _this.warnings = data.warnings || EMPTY_ERRORS;\n }\n _this.dirty = true;\n _this.triggerMetaEvent();\n _this.reRender();\n return;\n }\n // Handle update by `setField` with `shouldUpdate`\n if (shouldUpdate && !namePath.length && requireUpdate(shouldUpdate, prevStore, store, prevValue, curValue, info)) {\n _this.reRender();\n return;\n }\n break;\n }\n case 'dependenciesUpdate':\n {\n /**\n * Trigger when marked `dependencies` updated. Related fields will all update\n */\n var dependencyList = dependencies.map(getNamePath);\n // No need for `namePathMath` check and `shouldUpdate` check, since `valueUpdate` will be\n // emitted earlier and they will work there\n // If set it may cause unnecessary twice rerendering\n if (dependencyList.some(function (dependency) {\n return containsNamePath(info.relatedFields, dependency);\n })) {\n _this.reRender();\n return;\n }\n break;\n }\n default:\n // 1. If `namePath` exists in `namePathList`, means it's related value and should update\n // For example \n // If `namePathList` is [['list']] (List value update), Field should be updated\n // If `namePathList` is [['list', 0]] (Field value update), List shouldn't be updated\n // 2.\n // 2.1 If `dependencies` is set, `name` is not set and `shouldUpdate` is not set,\n // don't use `shouldUpdate`. `dependencies` is view as a shortcut if `shouldUpdate`\n // is not provided\n // 2.2 If `shouldUpdate` provided, use customize logic to update the field\n // else to check if value changed\n if (namePathMatch || (!dependencies.length || namePath.length || shouldUpdate) && requireUpdate(shouldUpdate, prevStore, store, prevValue, curValue, info)) {\n _this.reRender();\n return;\n }\n break;\n }\n if (shouldUpdate === true) {\n _this.reRender();\n }\n };\n _this.validateRules = function (options) {\n // We should fixed namePath & value to avoid developer change then by form function\n var namePath = _this.getNamePath();\n var currentValue = _this.getValue();\n var _ref2 = options || {},\n triggerName = _ref2.triggerName,\n _ref2$validateOnly = _ref2.validateOnly,\n validateOnly = _ref2$validateOnly === void 0 ? false : _ref2$validateOnly;\n // Force change to async to avoid rule OOD under renderProps field\n var rootPromise = Promise.resolve().then(function () {\n if (!_this.mounted) {\n return [];\n }\n var _this$props5 = _this.props,\n _this$props5$validate = _this$props5.validateFirst,\n validateFirst = _this$props5$validate === void 0 ? false : _this$props5$validate,\n messageVariables = _this$props5.messageVariables;\n var filteredRules = _this.getRules();\n if (triggerName) {\n filteredRules = filteredRules.filter(function (rule) {\n return rule;\n }).filter(function (rule) {\n var validateTrigger = rule.validateTrigger;\n if (!validateTrigger) {\n return true;\n }\n var triggerList = toArray(validateTrigger);\n return triggerList.includes(triggerName);\n });\n }\n var promise = validateRules(namePath, currentValue, filteredRules, options, validateFirst, messageVariables);\n promise.catch(function (e) {\n return e;\n }).then(function () {\n var ruleErrors = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : EMPTY_ERRORS;\n if (_this.validatePromise === rootPromise) {\n var _ruleErrors$forEach;\n _this.validatePromise = null;\n // Get errors & warnings\n var nextErrors = [];\n var nextWarnings = [];\n (_ruleErrors$forEach = ruleErrors.forEach) === null || _ruleErrors$forEach === void 0 ? void 0 : _ruleErrors$forEach.call(ruleErrors, function (_ref3) {\n var warningOnly = _ref3.rule.warningOnly,\n _ref3$errors = _ref3.errors,\n errors = _ref3$errors === void 0 ? EMPTY_ERRORS : _ref3$errors;\n if (warningOnly) {\n nextWarnings.push.apply(nextWarnings, _toConsumableArray(errors));\n } else {\n nextErrors.push.apply(nextErrors, _toConsumableArray(errors));\n }\n });\n _this.errors = nextErrors;\n _this.warnings = nextWarnings;\n _this.triggerMetaEvent();\n _this.reRender();\n }\n });\n return promise;\n });\n if (validateOnly) {\n return rootPromise;\n }\n _this.validatePromise = rootPromise;\n _this.dirty = true;\n _this.errors = EMPTY_ERRORS;\n _this.warnings = EMPTY_ERRORS;\n _this.triggerMetaEvent();\n // Force trigger re-render since we need sync renderProps with new meta\n _this.reRender();\n return rootPromise;\n };\n _this.isFieldValidating = function () {\n return !!_this.validatePromise;\n };\n _this.isFieldTouched = function () {\n return _this.touched;\n };\n _this.isFieldDirty = function () {\n // Touched or validate or has initialValue\n if (_this.dirty || _this.props.initialValue !== undefined) {\n return true;\n }\n // Form set initialValue\n var fieldContext = _this.props.fieldContext;\n var _fieldContext$getInte = fieldContext.getInternalHooks(HOOK_MARK),\n getInitialValue = _fieldContext$getInte.getInitialValue;\n if (getInitialValue(_this.getNamePath()) !== undefined) {\n return true;\n }\n return false;\n };\n _this.getErrors = function () {\n return _this.errors;\n };\n _this.getWarnings = function () {\n return _this.warnings;\n };\n _this.isListField = function () {\n return _this.props.isListField;\n };\n _this.isList = function () {\n return _this.props.isList;\n };\n _this.isPreserve = function () {\n return _this.props.preserve;\n };\n // ============================= Child Component =============================\n _this.getMeta = function () {\n // Make error & validating in cache to save perf\n _this.prevValidating = _this.isFieldValidating();\n var meta = {\n touched: _this.isFieldTouched(),\n validating: _this.prevValidating,\n errors: _this.errors,\n warnings: _this.warnings,\n name: _this.getNamePath(),\n validated: _this.validatePromise === null\n };\n return meta;\n };\n // Only return validate child node. If invalidate, will do nothing about field.\n _this.getOnlyChild = function (children) {\n // Support render props\n if (typeof children === 'function') {\n var meta = _this.getMeta();\n return _objectSpread(_objectSpread({}, _this.getOnlyChild(children(_this.getControlled(), meta, _this.props.fieldContext))), {}, {\n isFunction: true\n });\n }\n // Filed element only\n var childList = toChildrenArray(children);\n if (childList.length !== 1 || ! /*#__PURE__*/React.isValidElement(childList[0])) {\n return {\n child: childList,\n isFunction: false\n };\n }\n return {\n child: childList[0],\n isFunction: false\n };\n };\n // ============================== Field Control ==============================\n _this.getValue = function (store) {\n var getFieldsValue = _this.props.fieldContext.getFieldsValue;\n var namePath = _this.getNamePath();\n return getValue(store || getFieldsValue(true), namePath);\n };\n _this.getControlled = function () {\n var childProps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _this$props6 = _this.props,\n trigger = _this$props6.trigger,\n validateTrigger = _this$props6.validateTrigger,\n getValueFromEvent = _this$props6.getValueFromEvent,\n normalize = _this$props6.normalize,\n valuePropName = _this$props6.valuePropName,\n getValueProps = _this$props6.getValueProps,\n fieldContext = _this$props6.fieldContext;\n var mergedValidateTrigger = validateTrigger !== undefined ? validateTrigger : fieldContext.validateTrigger;\n var namePath = _this.getNamePath();\n var getInternalHooks = fieldContext.getInternalHooks,\n getFieldsValue = fieldContext.getFieldsValue;\n var _getInternalHooks = getInternalHooks(HOOK_MARK),\n dispatch = _getInternalHooks.dispatch;\n var value = _this.getValue();\n var mergedGetValueProps = getValueProps || function (val) {\n return _defineProperty({}, valuePropName, val);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var originTriggerFunc = childProps[trigger];\n var control = _objectSpread(_objectSpread({}, childProps), mergedGetValueProps(value));\n // Add trigger\n control[trigger] = function () {\n // Mark as touched\n _this.touched = true;\n _this.dirty = true;\n _this.triggerMetaEvent();\n var newValue;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (getValueFromEvent) {\n newValue = getValueFromEvent.apply(void 0, args);\n } else {\n newValue = defaultGetValueFromEvent.apply(void 0, [valuePropName].concat(args));\n }\n if (normalize) {\n newValue = normalize(newValue, value, getFieldsValue(true));\n }\n dispatch({\n type: 'updateValue',\n namePath: namePath,\n value: newValue\n });\n if (originTriggerFunc) {\n originTriggerFunc.apply(void 0, args);\n }\n };\n // Add validateTrigger\n var validateTriggerList = toArray(mergedValidateTrigger || []);\n validateTriggerList.forEach(function (triggerName) {\n // Wrap additional function of component, so that we can get latest value from store\n var originTrigger = control[triggerName];\n control[triggerName] = function () {\n if (originTrigger) {\n originTrigger.apply(void 0, arguments);\n }\n // Always use latest rules\n var rules = _this.props.rules;\n if (rules && rules.length) {\n // We dispatch validate to root,\n // since it will update related data with other field with same name\n dispatch({\n type: 'validateField',\n namePath: namePath,\n triggerName: triggerName\n });\n }\n };\n });\n return control;\n };\n if (props.fieldContext) {\n var getInternalHooks = props.fieldContext.getInternalHooks;\n var _getInternalHooks2 = getInternalHooks(HOOK_MARK),\n initEntityValue = _getInternalHooks2.initEntityValue;\n initEntityValue(_assertThisInitialized(_this));\n }\n return _this;\n }\n _createClass(Field, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this$props7 = this.props,\n shouldUpdate = _this$props7.shouldUpdate,\n fieldContext = _this$props7.fieldContext;\n this.mounted = true;\n // Register on init\n if (fieldContext) {\n var getInternalHooks = fieldContext.getInternalHooks;\n var _getInternalHooks3 = getInternalHooks(HOOK_MARK),\n registerField = _getInternalHooks3.registerField;\n this.cancelRegisterFunc = registerField(this);\n }\n // One more render for component in case fields not ready\n if (shouldUpdate === true) {\n this.reRender();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.cancelRegister();\n this.triggerMetaEvent(true);\n this.mounted = false;\n }\n }, {\n key: \"reRender\",\n value: function reRender() {\n if (!this.mounted) return;\n this.forceUpdate();\n }\n }, {\n key: \"render\",\n value: function render() {\n var resetCount = this.state.resetCount;\n var children = this.props.children;\n var _this$getOnlyChild = this.getOnlyChild(children),\n child = _this$getOnlyChild.child,\n isFunction = _this$getOnlyChild.isFunction;\n // Not need to `cloneElement` since user can handle this in render function self\n var returnChildNode;\n if (isFunction) {\n returnChildNode = child;\n } else if ( /*#__PURE__*/React.isValidElement(child)) {\n returnChildNode = /*#__PURE__*/React.cloneElement(child, this.getControlled(child.props));\n } else {\n warning(!child, '`children` of Field is not validate ReactElement.');\n returnChildNode = child;\n }\n return /*#__PURE__*/React.createElement(React.Fragment, {\n key: resetCount\n }, returnChildNode);\n }\n }]);\n return Field;\n}(React.Component);\nField.contextType = FieldContext;\nField.defaultProps = {\n trigger: 'onChange',\n valuePropName: 'value'\n};\nfunction WrapperField(_ref5) {\n var name = _ref5.name,\n restProps = _objectWithoutProperties(_ref5, _excluded);\n var fieldContext = React.useContext(FieldContext);\n var listContext = React.useContext(ListContext);\n var namePath = name !== undefined ? getNamePath(name) : undefined;\n var key = 'keep';\n if (!restProps.isListField) {\n key = \"_\".concat((namePath || []).join('_'));\n }\n // Warning if it's a directly list field.\n // We can still support multiple level field preserve.\n if (process.env.NODE_ENV !== 'production' && restProps.preserve === false && restProps.isListField && namePath.length <= 1) {\n warning(false, '`preserve` should not apply on Form.List fields.');\n }\n return /*#__PURE__*/React.createElement(Field, _extends({\n key: key,\n name: namePath,\n isListField: !!listContext\n }, restProps, {\n fieldContext: fieldContext\n }));\n}\nexport default WrapperField;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport * as React from 'react';\nimport warning from \"rc-util/es/warning\";\nimport FieldContext from './FieldContext';\nimport Field from './Field';\nimport { move as _move, getNamePath } from './utils/valueUtil';\nimport ListContext from './ListContext';\nfunction List(_ref) {\n var name = _ref.name,\n initialValue = _ref.initialValue,\n children = _ref.children,\n rules = _ref.rules,\n validateTrigger = _ref.validateTrigger,\n isListField = _ref.isListField;\n var context = React.useContext(FieldContext);\n var wrapperListContext = React.useContext(ListContext);\n var keyRef = React.useRef({\n keys: [],\n id: 0\n });\n var keyManager = keyRef.current;\n var prefixName = React.useMemo(function () {\n var parentPrefixName = getNamePath(context.prefixName) || [];\n return [].concat(_toConsumableArray(parentPrefixName), _toConsumableArray(getNamePath(name)));\n }, [context.prefixName, name]);\n var fieldContext = React.useMemo(function () {\n return _objectSpread(_objectSpread({}, context), {}, {\n prefixName: prefixName\n });\n }, [context, prefixName]);\n // List context\n var listContext = React.useMemo(function () {\n return {\n getKey: function getKey(namePath) {\n var len = prefixName.length;\n var pathName = namePath[len];\n return [keyManager.keys[pathName], namePath.slice(len + 1)];\n }\n };\n }, [prefixName]);\n // User should not pass `children` as other type.\n if (typeof children !== 'function') {\n warning(false, 'Form.List only accepts function as children.');\n return null;\n }\n var shouldUpdate = function shouldUpdate(prevValue, nextValue, _ref2) {\n var source = _ref2.source;\n if (source === 'internal') {\n return false;\n }\n return prevValue !== nextValue;\n };\n return /*#__PURE__*/React.createElement(ListContext.Provider, {\n value: listContext\n }, /*#__PURE__*/React.createElement(FieldContext.Provider, {\n value: fieldContext\n }, /*#__PURE__*/React.createElement(Field, {\n name: [],\n shouldUpdate: shouldUpdate,\n rules: rules,\n validateTrigger: validateTrigger,\n initialValue: initialValue,\n isList: true,\n isListField: isListField !== null && isListField !== void 0 ? isListField : !!wrapperListContext\n }, function (_ref3, meta) {\n var _ref3$value = _ref3.value,\n value = _ref3$value === void 0 ? [] : _ref3$value,\n onChange = _ref3.onChange;\n var getFieldValue = context.getFieldValue;\n var getNewValue = function getNewValue() {\n var values = getFieldValue(prefixName || []);\n return values || [];\n };\n /**\n * Always get latest value in case user update fields by `form` api.\n */\n var operations = {\n add: function add(defaultValue, index) {\n // Mapping keys\n var newValue = getNewValue();\n if (index >= 0 && index <= newValue.length) {\n keyManager.keys = [].concat(_toConsumableArray(keyManager.keys.slice(0, index)), [keyManager.id], _toConsumableArray(keyManager.keys.slice(index)));\n onChange([].concat(_toConsumableArray(newValue.slice(0, index)), [defaultValue], _toConsumableArray(newValue.slice(index))));\n } else {\n if (process.env.NODE_ENV !== 'production' && (index < 0 || index > newValue.length)) {\n warning(false, 'The second parameter of the add function should be a valid positive number.');\n }\n keyManager.keys = [].concat(_toConsumableArray(keyManager.keys), [keyManager.id]);\n onChange([].concat(_toConsumableArray(newValue), [defaultValue]));\n }\n keyManager.id += 1;\n },\n remove: function remove(index) {\n var newValue = getNewValue();\n var indexSet = new Set(Array.isArray(index) ? index : [index]);\n if (indexSet.size <= 0) {\n return;\n }\n keyManager.keys = keyManager.keys.filter(function (_, keysIndex) {\n return !indexSet.has(keysIndex);\n });\n // Trigger store change\n onChange(newValue.filter(function (_, valueIndex) {\n return !indexSet.has(valueIndex);\n }));\n },\n move: function move(from, to) {\n if (from === to) {\n return;\n }\n var newValue = getNewValue();\n // Do not handle out of range\n if (from < 0 || from >= newValue.length || to < 0 || to >= newValue.length) {\n return;\n }\n keyManager.keys = _move(keyManager.keys, from, to);\n // Trigger store change\n onChange(_move(newValue, from, to));\n }\n };\n var listValue = value || [];\n if (!Array.isArray(listValue)) {\n listValue = [];\n if (process.env.NODE_ENV !== 'production') {\n warning(false, \"Current value of '\".concat(prefixName.join(' > '), \"' is not an array type.\"));\n }\n }\n return children(listValue.map(function (__, index) {\n var key = keyManager.keys[index];\n if (key === undefined) {\n keyManager.keys[index] = keyManager.id;\n key = keyManager.keys[index];\n keyManager.id += 1;\n }\n return {\n name: index,\n key: key,\n isListField: true\n };\n }), operations, meta);\n })));\n}\nexport default List;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar SPLIT = '__@field_split__';\n/**\n * Convert name path into string to fast the fetch speed of Map.\n */\nfunction normalize(namePath) {\n return namePath.map(function (cell) {\n return \"\".concat(_typeof(cell), \":\").concat(cell);\n })\n // Magic split\n .join(SPLIT);\n}\n/**\n * NameMap like a `Map` but accepts `string[]` as key.\n */\nvar NameMap = /*#__PURE__*/function () {\n function NameMap() {\n _classCallCheck(this, NameMap);\n this.kvs = new Map();\n }\n _createClass(NameMap, [{\n key: \"set\",\n value: function set(key, value) {\n this.kvs.set(normalize(key), value);\n }\n }, {\n key: \"get\",\n value: function get(key) {\n return this.kvs.get(normalize(key));\n }\n }, {\n key: \"update\",\n value: function update(key, updater) {\n var origin = this.get(key);\n var next = updater(origin);\n if (!next) {\n this.delete(key);\n } else {\n this.set(key, next);\n }\n }\n }, {\n key: \"delete\",\n value: function _delete(key) {\n this.kvs.delete(normalize(key));\n }\n // Since we only use this in test, let simply realize this\n }, {\n key: \"map\",\n value: function map(callback) {\n return _toConsumableArray(this.kvs.entries()).map(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n key = _ref2[0],\n value = _ref2[1];\n var cells = key.split(SPLIT);\n return callback({\n key: cells.map(function (cell) {\n var _cell$match = cell.match(/^([^:]*):(.*)$/),\n _cell$match2 = _slicedToArray(_cell$match, 3),\n type = _cell$match2[1],\n unit = _cell$match2[2];\n return type === 'number' ? Number(unit) : unit;\n }),\n value: value\n });\n });\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n var json = {};\n this.map(function (_ref3) {\n var key = _ref3.key,\n value = _ref3.value;\n json[key.join('.')] = value;\n return null;\n });\n return json;\n }\n }]);\n return NameMap;\n}();\nexport default NameMap;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nvar _excluded = [\"name\"];\nimport warning from \"rc-util/es/warning\";\nimport * as React from 'react';\nimport { HOOK_MARK } from './FieldContext';\nimport { allPromiseFinish } from './utils/asyncUtil';\nimport { merge } from \"rc-util/es/utils/set\";\nimport { defaultValidateMessages } from './utils/messages';\nimport NameMap from './utils/NameMap';\nimport { cloneByNamePathList, containsNamePath, getNamePath, getValue, matchNamePath, setValue } from './utils/valueUtil';\nexport var FormStore = /*#__PURE__*/_createClass(function FormStore(forceRootUpdate) {\n var _this = this;\n _classCallCheck(this, FormStore);\n this.formHooked = false;\n this.forceRootUpdate = void 0;\n this.subscribable = true;\n this.store = {};\n this.fieldEntities = [];\n this.initialValues = {};\n this.callbacks = {};\n this.validateMessages = null;\n this.preserve = null;\n this.lastValidatePromise = null;\n this.getForm = function () {\n return {\n getFieldValue: _this.getFieldValue,\n getFieldsValue: _this.getFieldsValue,\n getFieldError: _this.getFieldError,\n getFieldWarning: _this.getFieldWarning,\n getFieldsError: _this.getFieldsError,\n isFieldsTouched: _this.isFieldsTouched,\n isFieldTouched: _this.isFieldTouched,\n isFieldValidating: _this.isFieldValidating,\n isFieldsValidating: _this.isFieldsValidating,\n resetFields: _this.resetFields,\n setFields: _this.setFields,\n setFieldValue: _this.setFieldValue,\n setFieldsValue: _this.setFieldsValue,\n validateFields: _this.validateFields,\n submit: _this.submit,\n _init: true,\n getInternalHooks: _this.getInternalHooks\n };\n };\n // ======================== Internal Hooks ========================\n this.getInternalHooks = function (key) {\n if (key === HOOK_MARK) {\n _this.formHooked = true;\n return {\n dispatch: _this.dispatch,\n initEntityValue: _this.initEntityValue,\n registerField: _this.registerField,\n useSubscribe: _this.useSubscribe,\n setInitialValues: _this.setInitialValues,\n destroyForm: _this.destroyForm,\n setCallbacks: _this.setCallbacks,\n setValidateMessages: _this.setValidateMessages,\n getFields: _this.getFields,\n setPreserve: _this.setPreserve,\n getInitialValue: _this.getInitialValue,\n registerWatch: _this.registerWatch\n };\n }\n warning(false, '`getInternalHooks` is internal usage. Should not call directly.');\n return null;\n };\n this.useSubscribe = function (subscribable) {\n _this.subscribable = subscribable;\n };\n /**\n * Record prev Form unmount fieldEntities which config preserve false.\n * This need to be refill with initialValues instead of store value.\n */\n this.prevWithoutPreserves = null;\n /**\n * First time `setInitialValues` should update store with initial value\n */\n this.setInitialValues = function (initialValues, init) {\n _this.initialValues = initialValues || {};\n if (init) {\n var _this$prevWithoutPres;\n var nextStore = merge(initialValues, _this.store);\n // We will take consider prev form unmount fields.\n // When the field is not `preserve`, we need fill this with initialValues instead of store.\n // eslint-disable-next-line array-callback-return\n (_this$prevWithoutPres = _this.prevWithoutPreserves) === null || _this$prevWithoutPres === void 0 ? void 0 : _this$prevWithoutPres.map(function (_ref) {\n var namePath = _ref.key;\n nextStore = setValue(nextStore, namePath, getValue(initialValues, namePath));\n });\n _this.prevWithoutPreserves = null;\n _this.updateStore(nextStore);\n }\n };\n this.destroyForm = function () {\n var prevWithoutPreserves = new NameMap();\n _this.getFieldEntities(true).forEach(function (entity) {\n if (!_this.isMergedPreserve(entity.isPreserve())) {\n prevWithoutPreserves.set(entity.getNamePath(), true);\n }\n });\n _this.prevWithoutPreserves = prevWithoutPreserves;\n };\n this.getInitialValue = function (namePath) {\n var initValue = getValue(_this.initialValues, namePath);\n // Not cloneDeep when without `namePath`\n return namePath.length ? merge(initValue) : initValue;\n };\n this.setCallbacks = function (callbacks) {\n _this.callbacks = callbacks;\n };\n this.setValidateMessages = function (validateMessages) {\n _this.validateMessages = validateMessages;\n };\n this.setPreserve = function (preserve) {\n _this.preserve = preserve;\n };\n // ============================= Watch ============================\n this.watchList = [];\n this.registerWatch = function (callback) {\n _this.watchList.push(callback);\n return function () {\n _this.watchList = _this.watchList.filter(function (fn) {\n return fn !== callback;\n });\n };\n };\n this.notifyWatch = function () {\n var namePath = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n // No need to cost perf when nothing need to watch\n if (_this.watchList.length) {\n var values = _this.getFieldsValue();\n var allValues = _this.getFieldsValue(true);\n _this.watchList.forEach(function (callback) {\n callback(values, allValues, namePath);\n });\n }\n };\n // ========================== Dev Warning =========================\n this.timeoutId = null;\n this.warningUnhooked = function () {\n if (process.env.NODE_ENV !== 'production' && !_this.timeoutId && typeof window !== 'undefined') {\n _this.timeoutId = setTimeout(function () {\n _this.timeoutId = null;\n if (!_this.formHooked) {\n warning(false, 'Instance created by `useForm` is not connected to any Form element. Forget to pass `form` prop?');\n }\n });\n }\n };\n // ============================ Store =============================\n this.updateStore = function (nextStore) {\n _this.store = nextStore;\n };\n // ============================ Fields ============================\n /**\n * Get registered field entities.\n * @param pure Only return field which has a `name`. Default: false\n */\n this.getFieldEntities = function () {\n var pure = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n if (!pure) {\n return _this.fieldEntities;\n }\n return _this.fieldEntities.filter(function (field) {\n return field.getNamePath().length;\n });\n };\n this.getFieldsMap = function () {\n var pure = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var cache = new NameMap();\n _this.getFieldEntities(pure).forEach(function (field) {\n var namePath = field.getNamePath();\n cache.set(namePath, field);\n });\n return cache;\n };\n this.getFieldEntitiesForNamePathList = function (nameList) {\n if (!nameList) {\n return _this.getFieldEntities(true);\n }\n var cache = _this.getFieldsMap(true);\n return nameList.map(function (name) {\n var namePath = getNamePath(name);\n return cache.get(namePath) || {\n INVALIDATE_NAME_PATH: getNamePath(name)\n };\n });\n };\n this.getFieldsValue = function (nameList, filterFunc) {\n _this.warningUnhooked();\n // Fill args\n var mergedNameList;\n var mergedFilterFunc;\n var mergedStrict;\n if (nameList === true || Array.isArray(nameList)) {\n mergedNameList = nameList;\n mergedFilterFunc = filterFunc;\n } else if (nameList && _typeof(nameList) === 'object') {\n mergedStrict = nameList.strict;\n mergedFilterFunc = nameList.filter;\n }\n if (mergedNameList === true && !mergedFilterFunc) {\n return _this.store;\n }\n var fieldEntities = _this.getFieldEntitiesForNamePathList(Array.isArray(mergedNameList) ? mergedNameList : null);\n var filteredNameList = [];\n fieldEntities.forEach(function (entity) {\n var _entity$isListField;\n var namePath = 'INVALIDATE_NAME_PATH' in entity ? entity.INVALIDATE_NAME_PATH : entity.getNamePath();\n // Ignore when it's a list item and not specific the namePath,\n // since parent field is already take in count\n if (mergedStrict) {\n var _entity$isList;\n if ((_entity$isList = entity.isList) === null || _entity$isList === void 0 ? void 0 : _entity$isList.call(entity)) {\n return;\n }\n } else if (!mergedNameList && ((_entity$isListField = entity.isListField) === null || _entity$isListField === void 0 ? void 0 : _entity$isListField.call(entity))) {\n return;\n }\n if (!mergedFilterFunc) {\n filteredNameList.push(namePath);\n } else {\n var meta = 'getMeta' in entity ? entity.getMeta() : null;\n if (mergedFilterFunc(meta)) {\n filteredNameList.push(namePath);\n }\n }\n });\n return cloneByNamePathList(_this.store, filteredNameList.map(getNamePath));\n };\n this.getFieldValue = function (name) {\n _this.warningUnhooked();\n var namePath = getNamePath(name);\n return getValue(_this.store, namePath);\n };\n this.getFieldsError = function (nameList) {\n _this.warningUnhooked();\n var fieldEntities = _this.getFieldEntitiesForNamePathList(nameList);\n return fieldEntities.map(function (entity, index) {\n if (entity && !('INVALIDATE_NAME_PATH' in entity)) {\n return {\n name: entity.getNamePath(),\n errors: entity.getErrors(),\n warnings: entity.getWarnings()\n };\n }\n return {\n name: getNamePath(nameList[index]),\n errors: [],\n warnings: []\n };\n });\n };\n this.getFieldError = function (name) {\n _this.warningUnhooked();\n var namePath = getNamePath(name);\n var fieldError = _this.getFieldsError([namePath])[0];\n return fieldError.errors;\n };\n this.getFieldWarning = function (name) {\n _this.warningUnhooked();\n var namePath = getNamePath(name);\n var fieldError = _this.getFieldsError([namePath])[0];\n return fieldError.warnings;\n };\n this.isFieldsTouched = function () {\n _this.warningUnhooked();\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var arg0 = args[0],\n arg1 = args[1];\n var namePathList;\n var isAllFieldsTouched = false;\n if (args.length === 0) {\n namePathList = null;\n } else if (args.length === 1) {\n if (Array.isArray(arg0)) {\n namePathList = arg0.map(getNamePath);\n isAllFieldsTouched = false;\n } else {\n namePathList = null;\n isAllFieldsTouched = arg0;\n }\n } else {\n namePathList = arg0.map(getNamePath);\n isAllFieldsTouched = arg1;\n }\n var fieldEntities = _this.getFieldEntities(true);\n var isFieldTouched = function isFieldTouched(field) {\n return field.isFieldTouched();\n };\n // ===== Will get fully compare when not config namePathList =====\n if (!namePathList) {\n return isAllFieldsTouched ? fieldEntities.every(isFieldTouched) : fieldEntities.some(isFieldTouched);\n }\n // Generate a nest tree for validate\n var map = new NameMap();\n namePathList.forEach(function (shortNamePath) {\n map.set(shortNamePath, []);\n });\n fieldEntities.forEach(function (field) {\n var fieldNamePath = field.getNamePath();\n // Find matched entity and put into list\n namePathList.forEach(function (shortNamePath) {\n if (shortNamePath.every(function (nameUnit, i) {\n return fieldNamePath[i] === nameUnit;\n })) {\n map.update(shortNamePath, function (list) {\n return [].concat(_toConsumableArray(list), [field]);\n });\n }\n });\n });\n // Check if NameMap value is touched\n var isNamePathListTouched = function isNamePathListTouched(entities) {\n return entities.some(isFieldTouched);\n };\n var namePathListEntities = map.map(function (_ref2) {\n var value = _ref2.value;\n return value;\n });\n return isAllFieldsTouched ? namePathListEntities.every(isNamePathListTouched) : namePathListEntities.some(isNamePathListTouched);\n };\n this.isFieldTouched = function (name) {\n _this.warningUnhooked();\n return _this.isFieldsTouched([name]);\n };\n this.isFieldsValidating = function (nameList) {\n _this.warningUnhooked();\n var fieldEntities = _this.getFieldEntities();\n if (!nameList) {\n return fieldEntities.some(function (testField) {\n return testField.isFieldValidating();\n });\n }\n var namePathList = nameList.map(getNamePath);\n return fieldEntities.some(function (testField) {\n var fieldNamePath = testField.getNamePath();\n return containsNamePath(namePathList, fieldNamePath) && testField.isFieldValidating();\n });\n };\n this.isFieldValidating = function (name) {\n _this.warningUnhooked();\n return _this.isFieldsValidating([name]);\n };\n /**\n * Reset Field with field `initialValue` prop.\n * Can pass `entities` or `namePathList` or just nothing.\n */\n this.resetWithFieldInitialValue = function () {\n var info = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // Create cache\n var cache = new NameMap();\n var fieldEntities = _this.getFieldEntities(true);\n fieldEntities.forEach(function (field) {\n var initialValue = field.props.initialValue;\n var namePath = field.getNamePath();\n // Record only if has `initialValue`\n if (initialValue !== undefined) {\n var records = cache.get(namePath) || new Set();\n records.add({\n entity: field,\n value: initialValue\n });\n cache.set(namePath, records);\n }\n });\n // Reset\n var resetWithFields = function resetWithFields(entities) {\n entities.forEach(function (field) {\n var initialValue = field.props.initialValue;\n if (initialValue !== undefined) {\n var namePath = field.getNamePath();\n var formInitialValue = _this.getInitialValue(namePath);\n if (formInitialValue !== undefined) {\n // Warning if conflict with form initialValues and do not modify value\n warning(false, \"Form already set 'initialValues' with path '\".concat(namePath.join('.'), \"'. Field can not overwrite it.\"));\n } else {\n var records = cache.get(namePath);\n if (records && records.size > 1) {\n // Warning if multiple field set `initialValue`and do not modify value\n warning(false, \"Multiple Field with path '\".concat(namePath.join('.'), \"' set 'initialValue'. Can not decide which one to pick.\"));\n } else if (records) {\n var originValue = _this.getFieldValue(namePath);\n // Set `initialValue`\n if (!info.skipExist || originValue === undefined) {\n _this.updateStore(setValue(_this.store, namePath, _toConsumableArray(records)[0].value));\n }\n }\n }\n }\n });\n };\n var requiredFieldEntities;\n if (info.entities) {\n requiredFieldEntities = info.entities;\n } else if (info.namePathList) {\n requiredFieldEntities = [];\n info.namePathList.forEach(function (namePath) {\n var records = cache.get(namePath);\n if (records) {\n var _requiredFieldEntitie;\n (_requiredFieldEntitie = requiredFieldEntities).push.apply(_requiredFieldEntitie, _toConsumableArray(_toConsumableArray(records).map(function (r) {\n return r.entity;\n })));\n }\n });\n } else {\n requiredFieldEntities = fieldEntities;\n }\n resetWithFields(requiredFieldEntities);\n };\n this.resetFields = function (nameList) {\n _this.warningUnhooked();\n var prevStore = _this.store;\n if (!nameList) {\n _this.updateStore(merge(_this.initialValues));\n _this.resetWithFieldInitialValue();\n _this.notifyObservers(prevStore, null, {\n type: 'reset'\n });\n _this.notifyWatch();\n return;\n }\n // Reset by `nameList`\n var namePathList = nameList.map(getNamePath);\n namePathList.forEach(function (namePath) {\n var initialValue = _this.getInitialValue(namePath);\n _this.updateStore(setValue(_this.store, namePath, initialValue));\n });\n _this.resetWithFieldInitialValue({\n namePathList: namePathList\n });\n _this.notifyObservers(prevStore, namePathList, {\n type: 'reset'\n });\n _this.notifyWatch(namePathList);\n };\n this.setFields = function (fields) {\n _this.warningUnhooked();\n var prevStore = _this.store;\n var namePathList = [];\n fields.forEach(function (fieldData) {\n var name = fieldData.name,\n data = _objectWithoutProperties(fieldData, _excluded);\n var namePath = getNamePath(name);\n namePathList.push(namePath);\n // Value\n if ('value' in data) {\n _this.updateStore(setValue(_this.store, namePath, data.value));\n }\n _this.notifyObservers(prevStore, [namePath], {\n type: 'setField',\n data: fieldData\n });\n });\n _this.notifyWatch(namePathList);\n };\n this.getFields = function () {\n var entities = _this.getFieldEntities(true);\n var fields = entities.map(function (field) {\n var namePath = field.getNamePath();\n var meta = field.getMeta();\n var fieldData = _objectSpread(_objectSpread({}, meta), {}, {\n name: namePath,\n value: _this.getFieldValue(namePath)\n });\n Object.defineProperty(fieldData, 'originRCField', {\n value: true\n });\n return fieldData;\n });\n return fields;\n };\n // =========================== Observer ===========================\n /**\n * This only trigger when a field is on constructor to avoid we get initialValue too late\n */\n this.initEntityValue = function (entity) {\n var initialValue = entity.props.initialValue;\n if (initialValue !== undefined) {\n var namePath = entity.getNamePath();\n var prevValue = getValue(_this.store, namePath);\n if (prevValue === undefined) {\n _this.updateStore(setValue(_this.store, namePath, initialValue));\n }\n }\n };\n this.isMergedPreserve = function (fieldPreserve) {\n var mergedPreserve = fieldPreserve !== undefined ? fieldPreserve : _this.preserve;\n return mergedPreserve !== null && mergedPreserve !== void 0 ? mergedPreserve : true;\n };\n this.registerField = function (entity) {\n _this.fieldEntities.push(entity);\n var namePath = entity.getNamePath();\n _this.notifyWatch([namePath]);\n // Set initial values\n if (entity.props.initialValue !== undefined) {\n var prevStore = _this.store;\n _this.resetWithFieldInitialValue({\n entities: [entity],\n skipExist: true\n });\n _this.notifyObservers(prevStore, [entity.getNamePath()], {\n type: 'valueUpdate',\n source: 'internal'\n });\n }\n // un-register field callback\n return function (isListField, preserve) {\n var subNamePath = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n _this.fieldEntities = _this.fieldEntities.filter(function (item) {\n return item !== entity;\n });\n // Clean up store value if not preserve\n if (!_this.isMergedPreserve(preserve) && (!isListField || subNamePath.length > 1)) {\n var defaultValue = isListField ? undefined : _this.getInitialValue(namePath);\n if (namePath.length && _this.getFieldValue(namePath) !== defaultValue && _this.fieldEntities.every(function (field) {\n return (\n // Only reset when no namePath exist\n !matchNamePath(field.getNamePath(), namePath)\n );\n })) {\n var _prevStore = _this.store;\n _this.updateStore(setValue(_prevStore, namePath, defaultValue, true));\n // Notify that field is unmount\n _this.notifyObservers(_prevStore, [namePath], {\n type: 'remove'\n });\n // Dependencies update\n _this.triggerDependenciesUpdate(_prevStore, namePath);\n }\n }\n _this.notifyWatch([namePath]);\n };\n };\n this.dispatch = function (action) {\n switch (action.type) {\n case 'updateValue':\n {\n var namePath = action.namePath,\n value = action.value;\n _this.updateValue(namePath, value);\n break;\n }\n case 'validateField':\n {\n var _namePath = action.namePath,\n triggerName = action.triggerName;\n _this.validateFields([_namePath], {\n triggerName: triggerName\n });\n break;\n }\n default:\n // Currently we don't have other action. Do nothing.\n }\n };\n\n this.notifyObservers = function (prevStore, namePathList, info) {\n if (_this.subscribable) {\n var mergedInfo = _objectSpread(_objectSpread({}, info), {}, {\n store: _this.getFieldsValue(true)\n });\n _this.getFieldEntities().forEach(function (_ref3) {\n var onStoreChange = _ref3.onStoreChange;\n onStoreChange(prevStore, namePathList, mergedInfo);\n });\n } else {\n _this.forceRootUpdate();\n }\n };\n /**\n * Notify dependencies children with parent update\n * We need delay to trigger validate in case Field is under render props\n */\n this.triggerDependenciesUpdate = function (prevStore, namePath) {\n var childrenFields = _this.getDependencyChildrenFields(namePath);\n if (childrenFields.length) {\n _this.validateFields(childrenFields);\n }\n _this.notifyObservers(prevStore, childrenFields, {\n type: 'dependenciesUpdate',\n relatedFields: [namePath].concat(_toConsumableArray(childrenFields))\n });\n return childrenFields;\n };\n this.updateValue = function (name, value) {\n var namePath = getNamePath(name);\n var prevStore = _this.store;\n _this.updateStore(setValue(_this.store, namePath, value));\n _this.notifyObservers(prevStore, [namePath], {\n type: 'valueUpdate',\n source: 'internal'\n });\n _this.notifyWatch([namePath]);\n // Dependencies update\n var childrenFields = _this.triggerDependenciesUpdate(prevStore, namePath);\n // trigger callback function\n var onValuesChange = _this.callbacks.onValuesChange;\n if (onValuesChange) {\n var changedValues = cloneByNamePathList(_this.store, [namePath]);\n onValuesChange(changedValues, _this.getFieldsValue());\n }\n _this.triggerOnFieldsChange([namePath].concat(_toConsumableArray(childrenFields)));\n };\n // Let all child Field get update.\n this.setFieldsValue = function (store) {\n _this.warningUnhooked();\n var prevStore = _this.store;\n if (store) {\n var nextStore = merge(_this.store, store);\n _this.updateStore(nextStore);\n }\n _this.notifyObservers(prevStore, null, {\n type: 'valueUpdate',\n source: 'external'\n });\n _this.notifyWatch();\n };\n this.setFieldValue = function (name, value) {\n _this.setFields([{\n name: name,\n value: value\n }]);\n };\n this.getDependencyChildrenFields = function (rootNamePath) {\n var children = new Set();\n var childrenFields = [];\n var dependencies2fields = new NameMap();\n /**\n * Generate maps\n * Can use cache to save perf if user report performance issue with this\n */\n _this.getFieldEntities().forEach(function (field) {\n var dependencies = field.props.dependencies;\n (dependencies || []).forEach(function (dependency) {\n var dependencyNamePath = getNamePath(dependency);\n dependencies2fields.update(dependencyNamePath, function () {\n var fields = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Set();\n fields.add(field);\n return fields;\n });\n });\n });\n var fillChildren = function fillChildren(namePath) {\n var fields = dependencies2fields.get(namePath) || new Set();\n fields.forEach(function (field) {\n if (!children.has(field)) {\n children.add(field);\n var fieldNamePath = field.getNamePath();\n if (field.isFieldDirty() && fieldNamePath.length) {\n childrenFields.push(fieldNamePath);\n fillChildren(fieldNamePath);\n }\n }\n });\n };\n fillChildren(rootNamePath);\n return childrenFields;\n };\n this.triggerOnFieldsChange = function (namePathList, filedErrors) {\n var onFieldsChange = _this.callbacks.onFieldsChange;\n if (onFieldsChange) {\n var fields = _this.getFields();\n /**\n * Fill errors since `fields` may be replaced by controlled fields\n */\n if (filedErrors) {\n var cache = new NameMap();\n filedErrors.forEach(function (_ref4) {\n var name = _ref4.name,\n errors = _ref4.errors;\n cache.set(name, errors);\n });\n fields.forEach(function (field) {\n // eslint-disable-next-line no-param-reassign\n field.errors = cache.get(field.name) || field.errors;\n });\n }\n var changedFields = fields.filter(function (_ref5) {\n var fieldName = _ref5.name;\n return containsNamePath(namePathList, fieldName);\n });\n if (changedFields.length) {\n onFieldsChange(changedFields, fields);\n }\n }\n };\n // =========================== Validate ===========================\n this.validateFields = function (arg1, arg2) {\n _this.warningUnhooked();\n var nameList;\n var options;\n if (Array.isArray(arg1) || typeof arg1 === 'string' || typeof arg2 === 'string') {\n nameList = arg1;\n options = arg2;\n } else {\n options = arg1;\n }\n var provideNameList = !!nameList;\n var namePathList = provideNameList ? nameList.map(getNamePath) : [];\n // Collect result in promise list\n var promiseList = [];\n // We temp save the path which need trigger for `onFieldsChange`\n var TMP_SPLIT = String(Date.now());\n var validateNamePathList = new Set();\n _this.getFieldEntities(true).forEach(function (field) {\n var _options;\n // Add field if not provide `nameList`\n if (!provideNameList) {\n namePathList.push(field.getNamePath());\n }\n /**\n * Recursive validate if configured.\n * TODO: perf improvement @zombieJ\n */\n if (((_options = options) === null || _options === void 0 ? void 0 : _options.recursive) && provideNameList) {\n var namePath = field.getNamePath();\n if (\n // nameList[i] === undefined 说明是以 nameList 开头的\n // ['name'] -> ['name','list']\n namePath.every(function (nameUnit, i) {\n return nameList[i] === nameUnit || nameList[i] === undefined;\n })) {\n namePathList.push(namePath);\n }\n }\n // Skip if without rule\n if (!field.props.rules || !field.props.rules.length) {\n return;\n }\n var fieldNamePath = field.getNamePath();\n validateNamePathList.add(fieldNamePath.join(TMP_SPLIT));\n // Add field validate rule in to promise list\n if (!provideNameList || containsNamePath(namePathList, fieldNamePath)) {\n var promise = field.validateRules(_objectSpread({\n validateMessages: _objectSpread(_objectSpread({}, defaultValidateMessages), _this.validateMessages)\n }, options));\n // Wrap promise with field\n promiseList.push(promise.then(function () {\n return {\n name: fieldNamePath,\n errors: [],\n warnings: []\n };\n }).catch(function (ruleErrors) {\n var _ruleErrors$forEach;\n var mergedErrors = [];\n var mergedWarnings = [];\n (_ruleErrors$forEach = ruleErrors.forEach) === null || _ruleErrors$forEach === void 0 ? void 0 : _ruleErrors$forEach.call(ruleErrors, function (_ref6) {\n var warningOnly = _ref6.rule.warningOnly,\n errors = _ref6.errors;\n if (warningOnly) {\n mergedWarnings.push.apply(mergedWarnings, _toConsumableArray(errors));\n } else {\n mergedErrors.push.apply(mergedErrors, _toConsumableArray(errors));\n }\n });\n if (mergedErrors.length) {\n return Promise.reject({\n name: fieldNamePath,\n errors: mergedErrors,\n warnings: mergedWarnings\n });\n }\n return {\n name: fieldNamePath,\n errors: mergedErrors,\n warnings: mergedWarnings\n };\n }));\n }\n });\n var summaryPromise = allPromiseFinish(promiseList);\n _this.lastValidatePromise = summaryPromise;\n // Notify fields with rule that validate has finished and need update\n summaryPromise.catch(function (results) {\n return results;\n }).then(function (results) {\n var resultNamePathList = results.map(function (_ref7) {\n var name = _ref7.name;\n return name;\n });\n _this.notifyObservers(_this.store, resultNamePathList, {\n type: 'validateFinish'\n });\n _this.triggerOnFieldsChange(resultNamePathList, results);\n });\n var returnPromise = summaryPromise.then(function () {\n if (_this.lastValidatePromise === summaryPromise) {\n return Promise.resolve(_this.getFieldsValue(namePathList));\n }\n return Promise.reject([]);\n }).catch(function (results) {\n var errorList = results.filter(function (result) {\n return result && result.errors.length;\n });\n return Promise.reject({\n values: _this.getFieldsValue(namePathList),\n errorFields: errorList,\n outOfDate: _this.lastValidatePromise !== summaryPromise\n });\n });\n // Do not throw in console\n returnPromise.catch(function (e) {\n return e;\n });\n // `validating` changed. Trigger `onFieldsChange`\n var triggerNamePathList = namePathList.filter(function (namePath) {\n return validateNamePathList.has(namePath.join(TMP_SPLIT));\n });\n _this.triggerOnFieldsChange(triggerNamePathList);\n return returnPromise;\n };\n // ============================ Submit ============================\n this.submit = function () {\n _this.warningUnhooked();\n _this.validateFields().then(function (values) {\n var onFinish = _this.callbacks.onFinish;\n if (onFinish) {\n try {\n onFinish(values);\n } catch (err) {\n // Should print error if user `onFinish` callback failed\n console.error(err);\n }\n }\n }).catch(function (e) {\n var onFinishFailed = _this.callbacks.onFinishFailed;\n if (onFinishFailed) {\n onFinishFailed(e);\n }\n });\n };\n this.forceRootUpdate = forceRootUpdate;\n});\nfunction useForm(form) {\n var formRef = React.useRef();\n var _React$useState = React.useState({}),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n forceUpdate = _React$useState2[1];\n if (!formRef.current) {\n if (form) {\n formRef.current = form;\n } else {\n // Create a new FormStore if not provided\n var forceReRender = function forceReRender() {\n forceUpdate({});\n };\n var formStore = new FormStore(forceReRender);\n formRef.current = formStore.getForm();\n }\n }\n return [formRef.current];\n}\nexport default useForm;","export function allPromiseFinish(promiseList) {\n var hasError = false;\n var count = promiseList.length;\n var results = [];\n if (!promiseList.length) {\n return Promise.resolve([]);\n }\n return new Promise(function (resolve, reject) {\n promiseList.forEach(function (promise, index) {\n promise.catch(function (e) {\n hasError = true;\n return e;\n }).then(function (result) {\n count -= 1;\n results[index] = result;\n if (count > 0) {\n return;\n }\n if (hasError) {\n reject(results);\n }\n resolve(results);\n });\n });\n });\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nvar FormContext = /*#__PURE__*/React.createContext({\n triggerFormChange: function triggerFormChange() {},\n triggerFormFinish: function triggerFormFinish() {},\n registerForm: function registerForm() {},\n unregisterForm: function unregisterForm() {}\n});\nvar FormProvider = function FormProvider(_ref) {\n var validateMessages = _ref.validateMessages,\n onFormChange = _ref.onFormChange,\n onFormFinish = _ref.onFormFinish,\n children = _ref.children;\n var formContext = React.useContext(FormContext);\n var formsRef = React.useRef({});\n return /*#__PURE__*/React.createElement(FormContext.Provider, {\n value: _objectSpread(_objectSpread({}, formContext), {}, {\n validateMessages: _objectSpread(_objectSpread({}, formContext.validateMessages), validateMessages),\n // =========================================================\n // = Global Form Control =\n // =========================================================\n triggerFormChange: function triggerFormChange(name, changedFields) {\n if (onFormChange) {\n onFormChange(name, {\n changedFields: changedFields,\n forms: formsRef.current\n });\n }\n formContext.triggerFormChange(name, changedFields);\n },\n triggerFormFinish: function triggerFormFinish(name, values) {\n if (onFormFinish) {\n onFormFinish(name, {\n values: values,\n forms: formsRef.current\n });\n }\n formContext.triggerFormFinish(name, values);\n },\n registerForm: function registerForm(name, form) {\n if (name) {\n formsRef.current = _objectSpread(_objectSpread({}, formsRef.current), {}, _defineProperty({}, name, form));\n }\n formContext.registerForm(name, form);\n },\n unregisterForm: function unregisterForm(name) {\n var newForms = _objectSpread({}, formsRef.current);\n delete newForms[name];\n formsRef.current = newForms;\n formContext.unregisterForm(name);\n }\n })\n }, children);\n};\nexport { FormProvider };\nexport default FormContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"name\", \"initialValues\", \"fields\", \"form\", \"preserve\", \"children\", \"component\", \"validateMessages\", \"validateTrigger\", \"onValuesChange\", \"onFieldsChange\", \"onFinish\", \"onFinishFailed\"];\nimport * as React from 'react';\nimport useForm from './useForm';\nimport FieldContext, { HOOK_MARK } from './FieldContext';\nimport FormContext from './FormContext';\nimport { isSimilar } from './utils/valueUtil';\nimport ListContext from './ListContext';\nvar Form = function Form(_ref, ref) {\n var name = _ref.name,\n initialValues = _ref.initialValues,\n fields = _ref.fields,\n form = _ref.form,\n preserve = _ref.preserve,\n children = _ref.children,\n _ref$component = _ref.component,\n Component = _ref$component === void 0 ? 'form' : _ref$component,\n validateMessages = _ref.validateMessages,\n _ref$validateTrigger = _ref.validateTrigger,\n validateTrigger = _ref$validateTrigger === void 0 ? 'onChange' : _ref$validateTrigger,\n onValuesChange = _ref.onValuesChange,\n _onFieldsChange = _ref.onFieldsChange,\n _onFinish = _ref.onFinish,\n onFinishFailed = _ref.onFinishFailed,\n restProps = _objectWithoutProperties(_ref, _excluded);\n var formContext = React.useContext(FormContext);\n // We customize handle event since Context will makes all the consumer re-render:\n // https://reactjs.org/docs/context.html#contextprovider\n var _useForm = useForm(form),\n _useForm2 = _slicedToArray(_useForm, 1),\n formInstance = _useForm2[0];\n var _formInstance$getInte = formInstance.getInternalHooks(HOOK_MARK),\n useSubscribe = _formInstance$getInte.useSubscribe,\n setInitialValues = _formInstance$getInte.setInitialValues,\n setCallbacks = _formInstance$getInte.setCallbacks,\n setValidateMessages = _formInstance$getInte.setValidateMessages,\n setPreserve = _formInstance$getInte.setPreserve,\n destroyForm = _formInstance$getInte.destroyForm;\n // Pass ref with form instance\n React.useImperativeHandle(ref, function () {\n return formInstance;\n });\n // Register form into Context\n React.useEffect(function () {\n formContext.registerForm(name, formInstance);\n return function () {\n formContext.unregisterForm(name);\n };\n }, [formContext, formInstance, name]);\n // Pass props to store\n setValidateMessages(_objectSpread(_objectSpread({}, formContext.validateMessages), validateMessages));\n setCallbacks({\n onValuesChange: onValuesChange,\n onFieldsChange: function onFieldsChange(changedFields) {\n formContext.triggerFormChange(name, changedFields);\n if (_onFieldsChange) {\n for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n rest[_key - 1] = arguments[_key];\n }\n _onFieldsChange.apply(void 0, [changedFields].concat(rest));\n }\n },\n onFinish: function onFinish(values) {\n formContext.triggerFormFinish(name, values);\n if (_onFinish) {\n _onFinish(values);\n }\n },\n onFinishFailed: onFinishFailed\n });\n setPreserve(preserve);\n // Set initial value, init store value when first mount\n var mountRef = React.useRef(null);\n setInitialValues(initialValues, !mountRef.current);\n if (!mountRef.current) {\n mountRef.current = true;\n }\n React.useEffect(function () {\n return destroyForm;\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []);\n // Prepare children by `children` type\n var childrenNode;\n var childrenRenderProps = typeof children === 'function';\n if (childrenRenderProps) {\n var values = formInstance.getFieldsValue(true);\n childrenNode = children(values, formInstance);\n } else {\n childrenNode = children;\n }\n // Not use subscribe when using render props\n useSubscribe(!childrenRenderProps);\n // Listen if fields provided. We use ref to save prev data here to avoid additional render\n var prevFieldsRef = React.useRef();\n React.useEffect(function () {\n if (!isSimilar(prevFieldsRef.current || [], fields || [])) {\n formInstance.setFields(fields || []);\n }\n prevFieldsRef.current = fields;\n }, [fields, formInstance]);\n var formContextValue = React.useMemo(function () {\n return _objectSpread(_objectSpread({}, formInstance), {}, {\n validateTrigger: validateTrigger\n });\n }, [formInstance, validateTrigger]);\n var wrapperNode = /*#__PURE__*/React.createElement(ListContext.Provider, {\n value: null\n }, /*#__PURE__*/React.createElement(FieldContext.Provider, {\n value: formContextValue\n }, childrenNode));\n if (Component === false) {\n return wrapperNode;\n }\n return /*#__PURE__*/React.createElement(Component, _extends({}, restProps, {\n onSubmit: function onSubmit(event) {\n event.preventDefault();\n event.stopPropagation();\n formInstance.submit();\n },\n onReset: function onReset(event) {\n var _restProps$onReset;\n event.preventDefault();\n formInstance.resetFields();\n (_restProps$onReset = restProps.onReset) === null || _restProps$onReset === void 0 ? void 0 : _restProps$onReset.call(restProps, event);\n }\n }), wrapperNode);\n};\nexport default Form;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport warning from \"rc-util/es/warning\";\nimport FieldContext, { HOOK_MARK } from './FieldContext';\nimport { useState, useContext, useEffect, useRef, useMemo } from 'react';\nimport { getNamePath, getValue } from './utils/valueUtil';\nimport { isFormInstance } from './utils/typeUtil';\nexport function stringify(value) {\n try {\n return JSON.stringify(value);\n } catch (err) {\n return Math.random();\n }\n}\nvar useWatchWarning = process.env.NODE_ENV !== 'production' ? function (namePath) {\n var fullyStr = namePath.join('__RC_FIELD_FORM_SPLIT__');\n var nameStrRef = useRef(fullyStr);\n warning(nameStrRef.current === fullyStr, '`useWatch` is not support dynamic `namePath`. Please provide static instead.');\n} : function () {};\nfunction useWatch() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var _args$ = args[0],\n dependencies = _args$ === void 0 ? [] : _args$,\n _args$2 = args[1],\n _form = _args$2 === void 0 ? {} : _args$2;\n var options = isFormInstance(_form) ? {\n form: _form\n } : _form;\n var form = options.form;\n var _useState = useState(),\n _useState2 = _slicedToArray(_useState, 2),\n value = _useState2[0],\n setValue = _useState2[1];\n var valueStr = useMemo(function () {\n return stringify(value);\n }, [value]);\n var valueStrRef = useRef(valueStr);\n valueStrRef.current = valueStr;\n var fieldContext = useContext(FieldContext);\n var formInstance = form || fieldContext;\n var isValidForm = formInstance && formInstance._init;\n // Warning if not exist form instance\n if (process.env.NODE_ENV !== 'production') {\n warning(args.length === 2 ? form ? isValidForm : true : isValidForm, 'useWatch requires a form instance since it can not auto detect from context.');\n }\n var namePath = getNamePath(dependencies);\n var namePathRef = useRef(namePath);\n namePathRef.current = namePath;\n useWatchWarning(namePath);\n useEffect(function () {\n // Skip if not exist form instance\n if (!isValidForm) {\n return;\n }\n var getFieldsValue = formInstance.getFieldsValue,\n getInternalHooks = formInstance.getInternalHooks;\n var _getInternalHooks = getInternalHooks(HOOK_MARK),\n registerWatch = _getInternalHooks.registerWatch;\n var cancelRegister = registerWatch(function (values, allValues) {\n var newValue = getValue(options.preserve ? allValues : values, namePathRef.current);\n var nextValueStr = stringify(newValue);\n // Compare stringify in case it's nest object\n if (valueStrRef.current !== nextValueStr) {\n valueStrRef.current = nextValueStr;\n setValue(newValue);\n }\n });\n // TODO: We can improve this perf in future\n var initialValue = getValue(options.preserve ? getFieldsValue(true) : getFieldsValue(), namePathRef.current);\n setValue(initialValue);\n return cancelRegister;\n },\n // We do not need re-register since namePath content is the same\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [isValidForm]);\n return value;\n}\nexport default useWatch;","import * as React from 'react';\nimport Field from './Field';\nimport List from './List';\nimport useForm from './useForm';\nimport FieldForm from './Form';\nimport { FormProvider } from './FormContext';\nimport FieldContext from './FieldContext';\nimport ListContext from './ListContext';\nimport useWatch from './useWatch';\nvar InternalForm = /*#__PURE__*/React.forwardRef(FieldForm);\nvar RefForm = InternalForm;\nRefForm.FormProvider = FormProvider;\nRefForm.Field = Field;\nRefForm.List = List;\nRefForm.useForm = useForm;\nRefForm.useWatch = useWatch;\nexport { Field, List, useForm, FormProvider, FieldContext, ListContext, useWatch };\nexport default RefForm;","import { FormProvider as RcFormProvider } from 'rc-field-form';\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport { useContext, useMemo } from 'react';\nexport var FormContext = /*#__PURE__*/React.createContext({\n labelAlign: 'right',\n vertical: false,\n itemRef: function itemRef() {}\n});\nexport var NoStyleItemContext = /*#__PURE__*/React.createContext(null);\nexport var FormProvider = function FormProvider(props) {\n var providerProps = omit(props, ['prefixCls']);\n return /*#__PURE__*/React.createElement(RcFormProvider, Object.assign({}, providerProps));\n};\nexport var FormItemPrefixContext = /*#__PURE__*/React.createContext({\n prefixCls: ''\n});\nexport var FormItemInputContext = /*#__PURE__*/React.createContext({});\nexport var NoFormStyle = function NoFormStyle(_ref) {\n var children = _ref.children,\n status = _ref.status,\n override = _ref.override;\n var formItemInputContext = useContext(FormItemInputContext);\n var newFormItemInputContext = useMemo(function () {\n var newContext = Object.assign({}, formItemInputContext);\n if (override) {\n delete newContext.isFormItemInput;\n }\n if (status) {\n delete newContext.status;\n delete newContext.hasFeedback;\n delete newContext.feedbackIcon;\n }\n return newContext;\n }, [status, override, formItemInputContext]);\n return /*#__PURE__*/React.createElement(FormItemInputContext.Provider, {\n value: newFormItemInputContext\n }, children);\n};","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport CloseOutlined from \"@ant-design/icons/es/icons/CloseOutlined\";\nimport React from 'react';\nimport Button from '../button';\nimport { convertLegacyProps } from '../button/button';\nimport { DisabledContextProvider } from '../config-provider/DisabledContext';\nimport { useLocale } from '../locale';\nimport { getConfirmLocale } from './locale';\nexport function renderCloseIcon(prefixCls, closeIcon) {\n return /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-close-x\")\n }, closeIcon || /*#__PURE__*/React.createElement(CloseOutlined, {\n className: \"\".concat(prefixCls, \"-close-icon\")\n }));\n}\nexport var Footer = function Footer(props) {\n var okText = props.okText,\n _props$okType = props.okType,\n okType = _props$okType === void 0 ? 'primary' : _props$okType,\n cancelText = props.cancelText,\n confirmLoading = props.confirmLoading,\n onOk = props.onOk,\n onCancel = props.onCancel,\n okButtonProps = props.okButtonProps,\n cancelButtonProps = props.cancelButtonProps;\n var _useLocale = useLocale('Modal', getConfirmLocale()),\n _useLocale2 = _slicedToArray(_useLocale, 1),\n locale = _useLocale2[0];\n return /*#__PURE__*/React.createElement(DisabledContextProvider, {\n disabled: false\n }, /*#__PURE__*/React.createElement(Button, Object.assign({\n onClick: onCancel\n }, cancelButtonProps), cancelText || (locale === null || locale === void 0 ? void 0 : locale.cancelText)), /*#__PURE__*/React.createElement(Button, Object.assign({}, convertLegacyProps(okType), {\n loading: confirmLoading,\n onClick: onOk\n }, okButtonProps), okText || (locale === null || locale === void 0 ? void 0 : locale.okText)));\n};","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { clearFix, genFocusStyle, resetComponent } from '../../style';\nimport { initFadeMotion, initZoomMotion } from '../../style/motion';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nfunction box(position) {\n return {\n position: position,\n top: 0,\n insetInlineEnd: 0,\n bottom: 0,\n insetInlineStart: 0\n };\n}\nexport var genModalMaskStyle = function genModalMaskStyle(token) {\n var _$concat;\n var componentCls = token.componentCls,\n antCls = token.antCls;\n return [_defineProperty({}, \"\".concat(componentCls, \"-root\"), (_$concat = {}, _defineProperty(_$concat, \"\".concat(componentCls).concat(antCls, \"-zoom-enter, \").concat(componentCls).concat(antCls, \"-zoom-appear\"), {\n // reset scale avoid mousePosition bug\n transform: 'none',\n opacity: 0,\n animationDuration: token.motionDurationSlow,\n // https://github.com/ant-design/ant-design/issues/11777\n userSelect: 'none'\n }), _defineProperty(_$concat, \"\".concat(componentCls).concat(antCls, \"-zoom-leave \").concat(componentCls, \"-content\"), {\n pointerEvents: 'none'\n }), _defineProperty(_$concat, \"\".concat(componentCls, \"-mask\"), Object.assign(Object.assign({}, box('fixed')), _defineProperty({\n zIndex: token.zIndexPopupBase,\n height: '100%',\n backgroundColor: token.colorBgMask\n }, \"\".concat(componentCls, \"-hidden\"), {\n display: 'none'\n }))), _defineProperty(_$concat, \"\".concat(componentCls, \"-wrap\"), Object.assign(Object.assign({}, box('fixed')), {\n overflow: 'auto',\n outline: 0,\n WebkitOverflowScrolling: 'touch'\n })), _$concat)), _defineProperty({}, \"\".concat(componentCls, \"-root\"), initFadeMotion(token))];\n};\nvar genModalStyle = function genModalStyle(token) {\n var _mediaMaxWidth$, _$concat4, _Object$assign2, _$concat6;\n var componentCls = token.componentCls;\n return [// ======================== Root =========================\n _defineProperty({}, \"\".concat(componentCls, \"-root\"), (_$concat4 = {}, _defineProperty(_$concat4, \"\".concat(componentCls, \"-wrap\"), {\n zIndex: token.zIndexPopupBase,\n position: 'fixed',\n inset: 0,\n overflow: 'auto',\n outline: 0,\n WebkitOverflowScrolling: 'touch'\n }), _defineProperty(_$concat4, \"\".concat(componentCls, \"-wrap-rtl\"), {\n direction: 'rtl'\n }), _defineProperty(_$concat4, \"\".concat(componentCls, \"-centered\"), _defineProperty({\n textAlign: 'center',\n '&::before': {\n display: 'inline-block',\n width: 0,\n height: '100%',\n verticalAlign: 'middle',\n content: '\"\"'\n }\n }, componentCls, {\n top: 0,\n display: 'inline-block',\n paddingBottom: 0,\n textAlign: 'start',\n verticalAlign: 'middle'\n })), _defineProperty(_$concat4, \"@media (max-width: \".concat(token.screenSMMax, \")\"), (_mediaMaxWidth$ = {}, _defineProperty(_mediaMaxWidth$, componentCls, {\n maxWidth: 'calc(100vw - 16px)',\n margin: \"\".concat(token.marginXS, \" auto\")\n }), _defineProperty(_mediaMaxWidth$, \"\".concat(componentCls, \"-centered\"), _defineProperty({}, componentCls, {\n flex: 1\n })), _mediaMaxWidth$)), _$concat4)), // ======================== Modal ========================\n _defineProperty({}, componentCls, Object.assign(Object.assign({}, resetComponent(token)), (_Object$assign2 = {\n pointerEvents: 'none',\n position: 'relative',\n top: 100,\n width: 'auto',\n maxWidth: \"calc(100vw - \".concat(token.margin * 2, \"px)\"),\n margin: '0 auto',\n paddingBottom: token.paddingLG\n }, _defineProperty(_Object$assign2, \"\".concat(componentCls, \"-title\"), {\n margin: 0,\n color: token.titleColor,\n fontWeight: token.fontWeightStrong,\n fontSize: token.titleFontSize,\n lineHeight: token.titleLineHeight,\n wordWrap: 'break-word'\n }), _defineProperty(_Object$assign2, \"\".concat(componentCls, \"-content\"), {\n position: 'relative',\n backgroundColor: token.contentBg,\n backgroundClip: 'padding-box',\n border: 0,\n borderRadius: token.borderRadiusLG,\n boxShadow: token.boxShadow,\n pointerEvents: 'auto',\n padding: \"\".concat(token.paddingMD, \"px \").concat(token.paddingContentHorizontalLG, \"px\")\n }), _defineProperty(_Object$assign2, \"\".concat(componentCls, \"-close\"), Object.assign({\n position: 'absolute',\n top: (token.modalHeaderHeight - token.modalCloseBtnSize) / 2,\n insetInlineEnd: (token.modalHeaderHeight - token.modalCloseBtnSize) / 2,\n zIndex: token.zIndexPopupBase + 10,\n padding: 0,\n color: token.modalCloseIconColor,\n fontWeight: token.fontWeightStrong,\n lineHeight: 1,\n textDecoration: 'none',\n background: 'transparent',\n borderRadius: token.borderRadiusSM,\n width: token.modalCloseBtnSize,\n height: token.modalCloseBtnSize,\n border: 0,\n outline: 0,\n cursor: 'pointer',\n transition: \"color \".concat(token.motionDurationMid, \", background-color \").concat(token.motionDurationMid),\n '&-x': {\n display: 'flex',\n fontSize: token.fontSizeLG,\n fontStyle: 'normal',\n lineHeight: \"\".concat(token.modalCloseBtnSize, \"px\"),\n justifyContent: 'center',\n textTransform: 'none',\n textRendering: 'auto'\n },\n '&:hover': {\n color: token.modalIconHoverColor,\n backgroundColor: token.wireframe ? 'transparent' : token.colorFillContent,\n textDecoration: 'none'\n },\n '&:active': {\n backgroundColor: token.wireframe ? 'transparent' : token.colorFillContentHover\n }\n }, genFocusStyle(token))), _defineProperty(_Object$assign2, \"\".concat(componentCls, \"-header\"), {\n color: token.colorText,\n background: token.headerBg,\n borderRadius: \"\".concat(token.borderRadiusLG, \"px \").concat(token.borderRadiusLG, \"px 0 0\"),\n marginBottom: token.marginXS\n }), _defineProperty(_Object$assign2, \"\".concat(componentCls, \"-body\"), {\n fontSize: token.fontSize,\n lineHeight: token.lineHeight,\n wordWrap: 'break-word'\n }), _defineProperty(_Object$assign2, \"\".concat(componentCls, \"-footer\"), _defineProperty({\n textAlign: 'end',\n background: token.footerBg,\n marginTop: token.marginSM\n }, \"\".concat(token.antCls, \"-btn + \").concat(token.antCls, \"-btn:not(\").concat(token.antCls, \"-dropdown-trigger)\"), {\n marginBottom: 0,\n marginInlineStart: token.marginXS\n })), _defineProperty(_Object$assign2, \"\".concat(componentCls, \"-open\"), {\n overflow: 'hidden'\n }), _Object$assign2))), // ======================== Pure =========================\n _defineProperty({}, \"\".concat(componentCls, \"-pure-panel\"), (_$concat6 = {\n top: 'auto',\n padding: 0,\n display: 'flex',\n flexDirection: 'column'\n }, _defineProperty(_$concat6, \"\".concat(componentCls, \"-content,\\n \").concat(componentCls, \"-body,\\n \").concat(componentCls, \"-confirm-body-wrapper\"), {\n display: 'flex',\n flexDirection: 'column',\n flex: 'auto'\n }), _defineProperty(_$concat6, \"\".concat(componentCls, \"-confirm-body\"), {\n marginBottom: 'auto'\n }), _$concat6))];\n};\nvar genModalConfirmStyle = function genModalConfirmStyle(token) {\n var _$concat8, _$concat9, _confirmComponentCls, _ref6;\n var componentCls = token.componentCls;\n var confirmComponentCls = \"\".concat(componentCls, \"-confirm\");\n return _ref6 = {}, _defineProperty(_ref6, confirmComponentCls, (_confirmComponentCls = {\n '&-rtl': {\n direction: 'rtl'\n }\n }, _defineProperty(_confirmComponentCls, \"\".concat(token.antCls, \"-modal-header\"), {\n display: 'none'\n }), _defineProperty(_confirmComponentCls, \"\".concat(confirmComponentCls, \"-body-wrapper\"), Object.assign({}, clearFix())), _defineProperty(_confirmComponentCls, \"\".concat(confirmComponentCls, \"-body\"), (_$concat9 = {\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center'\n }, _defineProperty(_$concat9, \"\".concat(confirmComponentCls, \"-title\"), _defineProperty({\n flex: '0 0 100%',\n display: 'block',\n // create BFC to avoid\n // https://user-images.githubusercontent.com/507615/37702510-ba844e06-2d2d-11e8-9b67-8e19be57f445.png\n overflow: 'hidden',\n color: token.colorTextHeading,\n fontWeight: token.fontWeightStrong,\n fontSize: token.titleFontSize,\n lineHeight: token.titleLineHeight\n }, \"+ \".concat(confirmComponentCls, \"-content\"), {\n marginBlockStart: token.marginXS,\n flexBasis: '100%',\n maxWidth: \"calc(100% - \".concat(token.modalConfirmIconSize + token.marginSM, \"px)\")\n })), _defineProperty(_$concat9, \"\".concat(confirmComponentCls, \"-content\"), {\n color: token.colorText,\n fontSize: token.fontSize\n }), _defineProperty(_$concat9, \"> \".concat(token.iconCls), (_$concat8 = {\n flex: 'none',\n marginInlineEnd: token.marginSM,\n fontSize: token.modalConfirmIconSize\n }, _defineProperty(_$concat8, \"+ \".concat(confirmComponentCls, \"-title\"), {\n flex: 1\n }), _defineProperty(_$concat8, \"+ \".concat(confirmComponentCls, \"-title + \").concat(confirmComponentCls, \"-content\"), {\n marginInlineStart: token.modalConfirmIconSize + token.marginSM\n }), _$concat8)), _$concat9)), _defineProperty(_confirmComponentCls, \"\".concat(confirmComponentCls, \"-btns\"), _defineProperty({\n textAlign: 'end',\n marginTop: token.marginSM\n }, \"\".concat(token.antCls, \"-btn + \").concat(token.antCls, \"-btn\"), {\n marginBottom: 0,\n marginInlineStart: token.marginXS\n })), _confirmComponentCls)), _defineProperty(_ref6, \"\".concat(confirmComponentCls, \"-error \").concat(confirmComponentCls, \"-body > \").concat(token.iconCls), {\n color: token.colorError\n }), _defineProperty(_ref6, \"\".concat(confirmComponentCls, \"-warning \").concat(confirmComponentCls, \"-body > \").concat(token.iconCls, \",\\n \").concat(confirmComponentCls, \"-confirm \").concat(confirmComponentCls, \"-body > \").concat(token.iconCls), {\n color: token.colorWarning\n }), _defineProperty(_ref6, \"\".concat(confirmComponentCls, \"-info \").concat(confirmComponentCls, \"-body > \").concat(token.iconCls), {\n color: token.colorInfo\n }), _defineProperty(_ref6, \"\".concat(confirmComponentCls, \"-success \").concat(confirmComponentCls, \"-body > \").concat(token.iconCls), {\n color: token.colorSuccess\n }), _ref6;\n};\nvar genRTLStyle = function genRTLStyle(token) {\n var componentCls = token.componentCls;\n return _defineProperty({}, \"\".concat(componentCls, \"-root\"), _defineProperty({}, \"\".concat(componentCls, \"-wrap-rtl\"), _defineProperty({\n direction: 'rtl'\n }, \"\".concat(componentCls, \"-confirm-body\"), {\n direction: 'rtl'\n })));\n};\nvar genWireframeStyle = function genWireframeStyle(token) {\n var _componentCls, _confirmComponentCls2, _ref8;\n var componentCls = token.componentCls,\n antCls = token.antCls;\n var confirmComponentCls = \"\".concat(componentCls, \"-confirm\");\n return _ref8 = {}, _defineProperty(_ref8, componentCls, (_componentCls = {}, _defineProperty(_componentCls, \"\".concat(componentCls, \"-content\"), {\n padding: 0\n }), _defineProperty(_componentCls, \"\".concat(componentCls, \"-header\"), {\n padding: token.modalHeaderPadding,\n borderBottom: \"\".concat(token.modalHeaderBorderWidth, \"px \").concat(token.modalHeaderBorderStyle, \" \").concat(token.modalHeaderBorderColorSplit),\n marginBottom: 0\n }), _defineProperty(_componentCls, \"\".concat(componentCls, \"-body\"), {\n padding: token.modalBodyPadding\n }), _defineProperty(_componentCls, \"\".concat(componentCls, \"-footer\"), {\n padding: \"\".concat(token.modalFooterPaddingVertical, \"px \").concat(token.modalFooterPaddingHorizontal, \"px\"),\n borderTop: \"\".concat(token.modalFooterBorderWidth, \"px \").concat(token.modalFooterBorderStyle, \" \").concat(token.modalFooterBorderColorSplit),\n borderRadius: \"0 0 \".concat(token.borderRadiusLG, \"px \").concat(token.borderRadiusLG, \"px\"),\n marginTop: 0\n }), _componentCls)), _defineProperty(_ref8, confirmComponentCls, (_confirmComponentCls2 = {}, _defineProperty(_confirmComponentCls2, \"\".concat(antCls, \"-modal-body\"), {\n padding: \"\".concat(token.padding * 2, \"px \").concat(token.padding * 2, \"px \").concat(token.paddingLG, \"px\")\n }), _defineProperty(_confirmComponentCls2, \"\".concat(confirmComponentCls, \"-body\"), _defineProperty({}, \"> \".concat(token.iconCls), _defineProperty({\n marginInlineEnd: token.margin\n }, \"+ \".concat(confirmComponentCls, \"-title + \").concat(confirmComponentCls, \"-content\"), {\n marginInlineStart: token.modalConfirmIconSize + token.margin\n }))), _defineProperty(_confirmComponentCls2, \"\".concat(confirmComponentCls, \"-btns\"), {\n marginTop: token.marginLG\n }), _confirmComponentCls2)), _ref8;\n};\n// ============================== Export ==============================\nexport default genComponentStyleHook('Modal', function (token) {\n var headerPaddingVertical = token.padding;\n var headerFontSize = token.fontSizeHeading5;\n var headerLineHeight = token.lineHeightHeading5;\n var modalToken = mergeToken(token, {\n modalBodyPadding: token.paddingLG,\n modalHeaderPadding: \"\".concat(headerPaddingVertical, \"px \").concat(token.paddingLG, \"px\"),\n modalHeaderBorderWidth: token.lineWidth,\n modalHeaderBorderStyle: token.lineType,\n modalHeaderBorderColorSplit: token.colorSplit,\n modalHeaderHeight: headerLineHeight * headerFontSize + headerPaddingVertical * 2,\n modalFooterBorderColorSplit: token.colorSplit,\n modalFooterBorderStyle: token.lineType,\n modalFooterPaddingVertical: token.paddingXS,\n modalFooterPaddingHorizontal: token.padding,\n modalFooterBorderWidth: token.lineWidth,\n modalIconHoverColor: token.colorIconHover,\n modalCloseIconColor: token.colorIcon,\n modalCloseBtnSize: token.fontSize * token.lineHeight,\n modalConfirmIconSize: token.fontSize * token.lineHeight\n });\n return [genModalStyle(modalToken), genModalConfirmStyle(modalToken), genRTLStyle(modalToken), genModalMaskStyle(modalToken), token.wireframe && genWireframeStyle(modalToken), initZoomMotion(modalToken, 'zoom')];\n}, function (token) {\n return {\n footerBg: 'transparent',\n headerBg: token.colorBgElevated,\n titleLineHeight: token.lineHeightHeading5,\n titleFontSize: token.fontSizeHeading5,\n contentBg: token.colorBgElevated,\n titleColor: token.colorTextHeading\n };\n});","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport CloseOutlined from \"@ant-design/icons/es/icons/CloseOutlined\";\nimport classNames from 'classnames';\nimport Dialog from 'rc-dialog';\nimport * as React from 'react';\nimport useClosable from '../_util/hooks/useClosable';\nimport { getTransitionName } from '../_util/motion';\nimport { canUseDocElement } from '../_util/styleChecker';\nimport warning from '../_util/warning';\nimport { ConfigContext } from '../config-provider';\nimport { NoFormStyle } from '../form/context';\nimport { NoCompactStyle } from '../space/Compact';\nimport { Footer, renderCloseIcon } from './shared';\nimport useStyle from './style';\nvar mousePosition;\n// ref: https://github.com/ant-design/ant-design/issues/15795\nvar getClickPosition = function getClickPosition(e) {\n mousePosition = {\n x: e.pageX,\n y: e.pageY\n };\n // 100ms 内发生过点击事件,则从点击位置动画展示\n // 否则直接 zoom 展示\n // 这样可以兼容非点击方式展开\n setTimeout(function () {\n mousePosition = null;\n }, 100);\n};\n// 只有点击事件支持从鼠标位置动画展开\nif (canUseDocElement()) {\n document.documentElement.addEventListener('click', getClickPosition, true);\n}\nvar Modal = function Modal(props) {\n var _classNames;\n var _a;\n var _React$useContext = React.useContext(ConfigContext),\n getContextPopupContainer = _React$useContext.getPopupContainer,\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction,\n modal = _React$useContext.modal;\n var handleCancel = function handleCancel(e) {\n var onCancel = props.onCancel;\n onCancel === null || onCancel === void 0 ? void 0 : onCancel(e);\n };\n var handleOk = function handleOk(e) {\n var onOk = props.onOk;\n onOk === null || onOk === void 0 ? void 0 : onOk(e);\n };\n process.env.NODE_ENV !== \"production\" ? warning(!('visible' in props), 'Modal', \"`visible` will be removed in next major version, please use `open` instead.\") : void 0;\n var customizePrefixCls = props.prefixCls,\n className = props.className,\n rootClassName = props.rootClassName,\n open = props.open,\n wrapClassName = props.wrapClassName,\n centered = props.centered,\n getContainer = props.getContainer,\n closeIcon = props.closeIcon,\n closable = props.closable,\n _props$focusTriggerAf = props.focusTriggerAfterClose,\n focusTriggerAfterClose = _props$focusTriggerAf === void 0 ? true : _props$focusTriggerAf,\n style = props.style,\n visible = props.visible,\n _props$width = props.width,\n width = _props$width === void 0 ? 520 : _props$width,\n footer = props.footer,\n restProps = __rest(props, [\"prefixCls\", \"className\", \"rootClassName\", \"open\", \"wrapClassName\", \"centered\", \"getContainer\", \"closeIcon\", \"closable\", \"focusTriggerAfterClose\", \"style\", \"visible\", \"width\", \"footer\"]);\n var prefixCls = getPrefixCls('modal', customizePrefixCls);\n var rootPrefixCls = getPrefixCls();\n // Style\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n var wrapClassNameExtended = classNames(wrapClassName, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-centered\"), !!centered), _defineProperty(_classNames, \"\".concat(prefixCls, \"-wrap-rtl\"), direction === 'rtl'), _classNames));\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? warning(!('visible' in props), 'Modal', '`visible` is deprecated, please use `open` instead.') : void 0;\n }\n var dialogFooter = footer === undefined ? /*#__PURE__*/React.createElement(Footer, Object.assign({}, props, {\n onOk: handleOk,\n onCancel: handleCancel\n })) : footer;\n var _useClosable = useClosable(closable, closeIcon, function (icon) {\n return renderCloseIcon(prefixCls, icon);\n }, /*#__PURE__*/React.createElement(CloseOutlined, {\n className: \"\".concat(prefixCls, \"-close-icon\")\n }), true),\n _useClosable2 = _slicedToArray(_useClosable, 2),\n mergedClosable = _useClosable2[0],\n mergedCloseIcon = _useClosable2[1];\n return wrapSSR( /*#__PURE__*/React.createElement(NoCompactStyle, null, /*#__PURE__*/React.createElement(NoFormStyle, {\n status: true,\n override: true\n }, /*#__PURE__*/React.createElement(Dialog, Object.assign({\n width: width\n }, restProps, {\n getContainer: getContainer === undefined ? getContextPopupContainer : getContainer,\n prefixCls: prefixCls,\n rootClassName: classNames(hashId, rootClassName),\n wrapClassName: wrapClassNameExtended,\n footer: dialogFooter,\n visible: open !== null && open !== void 0 ? open : visible,\n mousePosition: (_a = restProps.mousePosition) !== null && _a !== void 0 ? _a : mousePosition,\n onClose: handleCancel,\n closable: mergedClosable,\n closeIcon: mergedCloseIcon,\n focusTriggerAfterClose: focusTriggerAfterClose,\n transitionName: getTransitionName(rootPrefixCls, 'zoom', props.transitionName),\n maskTransitionName: getTransitionName(rootPrefixCls, 'fade', props.maskTransitionName),\n className: classNames(hashId, className, modal === null || modal === void 0 ? void 0 : modal.className),\n style: Object.assign(Object.assign({}, modal === null || modal === void 0 ? void 0 : modal.style), style)\n })))));\n};\nexport default Modal;","import CloseOutlined from \"@ant-design/icons/es/icons/CloseOutlined\";\nimport React from 'react';\nfunction useInnerClosable(closable, closeIcon, defaultClosable) {\n if (typeof closable === 'boolean') {\n return closable;\n }\n if (closeIcon === undefined) {\n return !!defaultClosable;\n }\n return closeIcon !== false && closeIcon !== null;\n}\nexport default function useClosable(closable, closeIcon, customCloseIconRender) {\n var defaultCloseIcon = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : /*#__PURE__*/React.createElement(CloseOutlined, null);\n var defaultClosable = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n var mergedClosable = useInnerClosable(closable, closeIcon, defaultClosable);\n if (!mergedClosable) {\n return [false, null];\n }\n var mergedCloseIcon = typeof closeIcon === 'boolean' || closeIcon === undefined || closeIcon === null ? defaultCloseIcon : closeIcon;\n return [true, customCloseIconRender ? customCloseIconRender(mergedCloseIcon) : mergedCloseIcon];\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport CheckCircleFilled from \"@ant-design/icons/es/icons/CheckCircleFilled\";\nimport CloseCircleFilled from \"@ant-design/icons/es/icons/CloseCircleFilled\";\nimport ExclamationCircleFilled from \"@ant-design/icons/es/icons/ExclamationCircleFilled\";\nimport InfoCircleFilled from \"@ant-design/icons/es/icons/InfoCircleFilled\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport ActionButton from '../_util/ActionButton';\nimport { getTransitionName } from '../_util/motion';\nimport warning from '../_util/warning';\nimport ConfigProvider from '../config-provider';\nimport { useLocale } from '../locale';\nimport Dialog from './Modal';\nexport function ConfirmContent(props) {\n var icon = props.icon,\n onCancel = props.onCancel,\n onOk = props.onOk,\n _close = props.close,\n onConfirm = props.onConfirm,\n isSilent = props.isSilent,\n okText = props.okText,\n okButtonProps = props.okButtonProps,\n cancelText = props.cancelText,\n cancelButtonProps = props.cancelButtonProps,\n confirmPrefixCls = props.confirmPrefixCls,\n rootPrefixCls = props.rootPrefixCls,\n type = props.type,\n okCancel = props.okCancel,\n footer = props.footer,\n staticLocale = props.locale;\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof icon === 'string' && icon.length > 2), 'Modal', \"`icon` is using ReactNode instead of string naming in v4. Please check `\".concat(icon, \"` at https://ant.design/components/icon\")) : void 0;\n // Icon\n var mergedIcon = icon;\n // 支持传入{ icon: null }来隐藏`Modal.confirm`默认的Icon\n if (!icon && icon !== null) {\n switch (type) {\n case 'info':\n mergedIcon = /*#__PURE__*/React.createElement(InfoCircleFilled, null);\n break;\n case 'success':\n mergedIcon = /*#__PURE__*/React.createElement(CheckCircleFilled, null);\n break;\n case 'error':\n mergedIcon = /*#__PURE__*/React.createElement(CloseCircleFilled, null);\n break;\n default:\n mergedIcon = /*#__PURE__*/React.createElement(ExclamationCircleFilled, null);\n }\n }\n var okType = props.okType || 'primary';\n // 默认为 true,保持向下兼容\n var mergedOkCancel = okCancel !== null && okCancel !== void 0 ? okCancel : type === 'confirm';\n var autoFocusButton = props.autoFocusButton === null ? false : props.autoFocusButton || 'ok';\n var _useLocale = useLocale('Modal'),\n _useLocale2 = _slicedToArray(_useLocale, 1),\n locale = _useLocale2[0];\n var mergedLocale = staticLocale || locale;\n var cancelButton = mergedOkCancel && /*#__PURE__*/React.createElement(ActionButton, {\n isSilent: isSilent,\n actionFn: onCancel,\n close: function close() {\n _close === null || _close === void 0 ? void 0 : _close.apply(void 0, arguments);\n onConfirm === null || onConfirm === void 0 ? void 0 : onConfirm(false);\n },\n autoFocus: autoFocusButton === 'cancel',\n buttonProps: cancelButtonProps,\n prefixCls: \"\".concat(rootPrefixCls, \"-btn\")\n }, cancelText || (mergedLocale === null || mergedLocale === void 0 ? void 0 : mergedLocale.cancelText));\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(confirmPrefixCls, \"-body-wrapper\")\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(confirmPrefixCls, \"-body\")\n }, mergedIcon, props.title === undefined ? null : /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(confirmPrefixCls, \"-title\")\n }, props.title), /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(confirmPrefixCls, \"-content\")\n }, props.content)), footer === undefined ? /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(confirmPrefixCls, \"-btns\")\n }, cancelButton, /*#__PURE__*/React.createElement(ActionButton, {\n isSilent: isSilent,\n type: okType,\n actionFn: onOk,\n close: function close() {\n _close === null || _close === void 0 ? void 0 : _close.apply(void 0, arguments);\n onConfirm === null || onConfirm === void 0 ? void 0 : onConfirm(true);\n },\n autoFocus: autoFocusButton === 'ok',\n buttonProps: okButtonProps,\n prefixCls: \"\".concat(rootPrefixCls, \"-btn\")\n }, okText || (mergedOkCancel ? mergedLocale === null || mergedLocale === void 0 ? void 0 : mergedLocale.okText : mergedLocale === null || mergedLocale === void 0 ? void 0 : mergedLocale.justOkText))) : footer);\n}\nvar ConfirmDialog = function ConfirmDialog(props) {\n var close = props.close,\n zIndex = props.zIndex,\n afterClose = props.afterClose,\n visible = props.visible,\n open = props.open,\n keyboard = props.keyboard,\n centered = props.centered,\n getContainer = props.getContainer,\n maskStyle = props.maskStyle,\n direction = props.direction,\n prefixCls = props.prefixCls,\n wrapClassName = props.wrapClassName,\n rootPrefixCls = props.rootPrefixCls,\n iconPrefixCls = props.iconPrefixCls,\n theme = props.theme,\n bodyStyle = props.bodyStyle,\n _props$closable = props.closable,\n closable = _props$closable === void 0 ? false : _props$closable,\n closeIcon = props.closeIcon,\n modalRender = props.modalRender,\n focusTriggerAfterClose = props.focusTriggerAfterClose;\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? warning(visible === undefined, 'Modal', \"`visible` is deprecated, please use `open` instead.\") : void 0;\n }\n var confirmPrefixCls = \"\".concat(prefixCls, \"-confirm\");\n var width = props.width || 416;\n var style = props.style || {};\n var mask = props.mask === undefined ? true : props.mask;\n // 默认为 false,保持旧版默认行为\n var maskClosable = props.maskClosable === undefined ? false : props.maskClosable;\n var classString = classNames(confirmPrefixCls, \"\".concat(confirmPrefixCls, \"-\").concat(props.type), _defineProperty({}, \"\".concat(confirmPrefixCls, \"-rtl\"), direction === 'rtl'), props.className);\n return /*#__PURE__*/React.createElement(ConfigProvider, {\n prefixCls: rootPrefixCls,\n iconPrefixCls: iconPrefixCls,\n direction: direction,\n theme: theme\n }, /*#__PURE__*/React.createElement(Dialog, {\n prefixCls: prefixCls,\n className: classString,\n wrapClassName: classNames(_defineProperty({}, \"\".concat(confirmPrefixCls, \"-centered\"), !!props.centered), wrapClassName),\n onCancel: function onCancel() {\n return close === null || close === void 0 ? void 0 : close({\n triggerCancel: true\n });\n },\n open: open,\n title: \"\",\n footer: null,\n transitionName: getTransitionName(rootPrefixCls, 'zoom', props.transitionName),\n maskTransitionName: getTransitionName(rootPrefixCls, 'fade', props.maskTransitionName),\n mask: mask,\n maskClosable: maskClosable,\n maskStyle: maskStyle,\n style: style,\n bodyStyle: bodyStyle,\n width: width,\n zIndex: zIndex,\n afterClose: afterClose,\n keyboard: keyboard,\n centered: centered,\n getContainer: getContainer,\n closable: closable,\n closeIcon: closeIcon,\n modalRender: modalRender,\n focusTriggerAfterClose: focusTriggerAfterClose\n }, /*#__PURE__*/React.createElement(ConfirmContent, Object.assign({}, props, {\n confirmPrefixCls: confirmPrefixCls\n }))));\n};\nif (process.env.NODE_ENV !== 'production') {\n ConfirmDialog.displayName = 'ConfirmDialog';\n}\nexport default ConfirmDialog;","var destroyFns = [];\nexport default destroyFns;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { render as reactRender, unmount as reactUnmount } from \"rc-util/es/React/render\";\nimport * as React from 'react';\nimport warning from '../_util/warning';\nimport { globalConfig, warnContext } from '../config-provider';\nimport ConfirmDialog from './ConfirmDialog';\nimport destroyFns from './destroyFns';\nimport { getConfirmLocale } from './locale';\nvar defaultRootPrefixCls = '';\nfunction getRootPrefixCls() {\n return defaultRootPrefixCls;\n}\nexport default function confirm(config) {\n // Warning if exist theme\n if (process.env.NODE_ENV !== 'production') {\n warnContext('Modal');\n }\n var container = document.createDocumentFragment();\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n var currentConfig = Object.assign(Object.assign({}, config), {\n close: close,\n open: true\n });\n var timeoutId;\n function destroy() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var triggerCancel = args.some(function (param) {\n return param && param.triggerCancel;\n });\n if (config.onCancel && triggerCancel) {\n config.onCancel.apply(config, [function () {}].concat(_toConsumableArray(args.slice(1))));\n }\n for (var i = 0; i < destroyFns.length; i++) {\n var fn = destroyFns[i];\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n if (fn === close) {\n destroyFns.splice(i, 1);\n break;\n }\n }\n reactUnmount(container);\n }\n function render(_a) {\n var okText = _a.okText,\n cancelText = _a.cancelText,\n customizePrefixCls = _a.prefixCls,\n getContainer = _a.getContainer,\n props = __rest(_a, [\"okText\", \"cancelText\", \"prefixCls\", \"getContainer\"]);\n clearTimeout(timeoutId);\n /**\n * https://github.com/ant-design/ant-design/issues/23623\n *\n * Sync render blocks React event. Let's make this async.\n */\n timeoutId = setTimeout(function () {\n var runtimeLocale = getConfirmLocale();\n var _globalConfig = globalConfig(),\n getPrefixCls = _globalConfig.getPrefixCls,\n getIconPrefixCls = _globalConfig.getIconPrefixCls,\n getTheme = _globalConfig.getTheme;\n // because Modal.config \b set rootPrefixCls, which is different from other components\n var rootPrefixCls = getPrefixCls(undefined, getRootPrefixCls());\n var prefixCls = customizePrefixCls || \"\".concat(rootPrefixCls, \"-modal\");\n var iconPrefixCls = getIconPrefixCls();\n var theme = getTheme();\n var mergedGetContainer = getContainer;\n if (mergedGetContainer === false) {\n mergedGetContainer = undefined;\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Modal', 'Static method not support `getContainer` to be `false` since it do not have context env.') : void 0;\n }\n }\n reactRender( /*#__PURE__*/React.createElement(ConfirmDialog, Object.assign({}, props, {\n getContainer: mergedGetContainer,\n prefixCls: prefixCls,\n rootPrefixCls: rootPrefixCls,\n iconPrefixCls: iconPrefixCls,\n okText: okText,\n locale: runtimeLocale,\n theme: theme,\n cancelText: cancelText || runtimeLocale.cancelText\n })), container);\n });\n }\n function close() {\n var _this = this;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n currentConfig = Object.assign(Object.assign({}, currentConfig), {\n open: false,\n afterClose: function afterClose() {\n if (typeof config.afterClose === 'function') {\n config.afterClose();\n }\n destroy.apply(_this, args);\n }\n });\n // Legacy support\n if (currentConfig.visible) {\n delete currentConfig.visible;\n }\n render(currentConfig);\n }\n function update(configUpdate) {\n if (typeof configUpdate === 'function') {\n currentConfig = configUpdate(currentConfig);\n } else {\n currentConfig = Object.assign(Object.assign({}, currentConfig), configUpdate);\n }\n render(currentConfig);\n }\n render(currentConfig);\n destroyFns.push(close);\n return {\n destroy: close,\n update: update\n };\n}\nexport function withWarn(props) {\n return Object.assign(Object.assign({}, props), {\n type: 'warning'\n });\n}\nexport function withInfo(props) {\n return Object.assign(Object.assign({}, props), {\n type: 'info'\n });\n}\nexport function withSuccess(props) {\n return Object.assign(Object.assign({}, props), {\n type: 'success'\n });\n}\nexport function withError(props) {\n return Object.assign(Object.assign({}, props), {\n type: 'error'\n });\n}\nexport function withConfirm(props) {\n return Object.assign(Object.assign({}, props), {\n type: 'confirm'\n });\n}\nexport function modalGlobalConfig(_ref) {\n var rootPrefixCls = _ref.rootPrefixCls;\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Modal', 'Modal.config is deprecated. Please use ConfigProvider.config instead.') : void 0;\n defaultRootPrefixCls = rootPrefixCls;\n}","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport * as React from 'react';\nimport ConfigProvider, { ConfigContext } from '../config-provider';\nexport function withPureRenderTheme(Component) {\n return function PureRenderThemeComponent(props) {\n return /*#__PURE__*/React.createElement(ConfigProvider, {\n theme: {\n token: {\n motion: false,\n zIndexPopupBase: 0\n }\n }\n }, /*#__PURE__*/React.createElement(Component, Object.assign({}, props)));\n };\n}\n/* istanbul ignore next */\nexport default function genPurePanel(Component, defaultPrefixCls, getDropdownCls, postProps) {\n function PurePanel(props) {\n var customizePrefixCls = props.prefixCls,\n style = props.style;\n var holderRef = React.useRef(null);\n var _React$useState = React.useState(0),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n popupHeight = _React$useState2[0],\n setPopupHeight = _React$useState2[1];\n var _React$useState3 = React.useState(0),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n popupWidth = _React$useState4[0],\n setPopupWidth = _React$useState4[1];\n var _useMergedState = useMergedState(false, {\n value: props.open\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n open = _useMergedState2[0],\n setOpen = _useMergedState2[1];\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls;\n var prefixCls = getPrefixCls(defaultPrefixCls || 'select', customizePrefixCls);\n React.useEffect(function () {\n // We do not care about ssr\n setOpen(true);\n if (typeof ResizeObserver !== 'undefined') {\n var resizeObserver = new ResizeObserver(function (entries) {\n var element = entries[0].target;\n setPopupHeight(element.offsetHeight + 8);\n setPopupWidth(element.offsetWidth);\n });\n var interval = setInterval(function () {\n var _a;\n var dropdownCls = getDropdownCls ? \".\".concat(getDropdownCls(prefixCls)) : \".\".concat(prefixCls, \"-dropdown\");\n var popup = (_a = holderRef.current) === null || _a === void 0 ? void 0 : _a.querySelector(dropdownCls);\n if (popup) {\n clearInterval(interval);\n resizeObserver.observe(popup);\n }\n }, 10);\n return function () {\n clearInterval(interval);\n resizeObserver.disconnect();\n };\n }\n }, []);\n var mergedProps = Object.assign(Object.assign({}, props), {\n style: Object.assign(Object.assign({}, style), {\n margin: 0\n }),\n open: open,\n visible: open,\n getPopupContainer: function getPopupContainer() {\n return holderRef.current;\n }\n });\n if (postProps) {\n mergedProps = postProps(mergedProps);\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: holderRef,\n style: {\n paddingBottom: popupHeight,\n position: 'relative',\n minWidth: popupWidth\n }\n }, /*#__PURE__*/React.createElement(Component, Object.assign({}, mergedProps)));\n }\n return withPureRenderTheme(PurePanel);\n}","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\n/* eslint-disable react/jsx-no-useless-fragment */\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport { Panel } from 'rc-dialog';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport { ConfirmContent } from './ConfirmDialog';\nimport { Footer, renderCloseIcon } from './shared';\nimport useStyle from './style';\nimport { withPureRenderTheme } from '../_util/PurePanel';\nvar PurePanel = function PurePanel(props) {\n var customizePrefixCls = props.prefixCls,\n className = props.className,\n closeIcon = props.closeIcon,\n closable = props.closable,\n type = props.type,\n title = props.title,\n children = props.children,\n restProps = __rest(props, [\"prefixCls\", \"className\", \"closeIcon\", \"closable\", \"type\", \"title\", \"children\"]);\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls;\n var rootPrefixCls = getPrefixCls();\n var prefixCls = customizePrefixCls || getPrefixCls('modal');\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n hashId = _useStyle2[1];\n var confirmPrefixCls = \"\".concat(prefixCls, \"-confirm\");\n // Choose target props by confirm mark\n var additionalProps = {};\n if (type) {\n additionalProps = {\n closable: closable !== null && closable !== void 0 ? closable : false,\n title: '',\n footer: '',\n children: /*#__PURE__*/React.createElement(ConfirmContent, Object.assign({}, props, {\n confirmPrefixCls: confirmPrefixCls,\n rootPrefixCls: rootPrefixCls,\n content: children\n }))\n };\n } else {\n additionalProps = {\n closable: closable !== null && closable !== void 0 ? closable : true,\n title: title,\n footer: props.footer === undefined ? /*#__PURE__*/React.createElement(Footer, Object.assign({}, props)) : props.footer,\n children: children\n };\n }\n return /*#__PURE__*/React.createElement(Panel, Object.assign({\n prefixCls: prefixCls,\n className: classNames(hashId, \"\".concat(prefixCls, \"-pure-panel\"), type && confirmPrefixCls, type && \"\".concat(confirmPrefixCls, \"-\").concat(type), className)\n }, restProps, {\n closeIcon: renderCloseIcon(prefixCls, closeIcon),\n closable: closable\n }, additionalProps));\n};\nexport default withPureRenderTheme(PurePanel);","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { ConfigContext } from '../../config-provider';\nimport defaultLocale from '../../locale/en_US';\nimport useLocale from '../../locale/useLocale';\nimport ConfirmDialog from '../ConfirmDialog';\nvar HookModal = function HookModal(_a, ref) {\n var _b;\n var hookAfterClose = _a.afterClose,\n config = _a.config,\n restProps = __rest(_a, [\"afterClose\", \"config\"]);\n var _React$useState = React.useState(true),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n open = _React$useState2[0],\n setOpen = _React$useState2[1];\n var _React$useState3 = React.useState(config),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n innerConfig = _React$useState4[0],\n setInnerConfig = _React$useState4[1];\n var _React$useContext = React.useContext(ConfigContext),\n direction = _React$useContext.direction,\n getPrefixCls = _React$useContext.getPrefixCls;\n var prefixCls = getPrefixCls('modal');\n var rootPrefixCls = getPrefixCls();\n var afterClose = function afterClose() {\n var _a;\n hookAfterClose();\n (_a = innerConfig.afterClose) === null || _a === void 0 ? void 0 : _a.call(innerConfig);\n };\n var close = function close() {\n setOpen(false);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var triggerCancel = args.some(function (param) {\n return param && param.triggerCancel;\n });\n if (innerConfig.onCancel && triggerCancel) {\n innerConfig.onCancel.apply(innerConfig, [function () {}].concat(_toConsumableArray(args.slice(1))));\n }\n };\n React.useImperativeHandle(ref, function () {\n return {\n destroy: close,\n update: function update(newConfig) {\n setInnerConfig(function (originConfig) {\n return Object.assign(Object.assign({}, originConfig), newConfig);\n });\n }\n };\n });\n var mergedOkCancel = (_b = innerConfig.okCancel) !== null && _b !== void 0 ? _b : innerConfig.type === 'confirm';\n var _useLocale = useLocale('Modal', defaultLocale.Modal),\n _useLocale2 = _slicedToArray(_useLocale, 1),\n contextLocale = _useLocale2[0];\n return /*#__PURE__*/React.createElement(ConfirmDialog, Object.assign({\n prefixCls: prefixCls,\n rootPrefixCls: rootPrefixCls\n }, innerConfig, {\n close: close,\n open: open,\n afterClose: afterClose,\n okText: innerConfig.okText || (mergedOkCancel ? contextLocale === null || contextLocale === void 0 ? void 0 : contextLocale.okText : contextLocale === null || contextLocale === void 0 ? void 0 : contextLocale.justOkText),\n direction: innerConfig.direction || direction,\n cancelText: innerConfig.cancelText || (contextLocale === null || contextLocale === void 0 ? void 0 : contextLocale.cancelText)\n }, restProps));\n};\nexport default /*#__PURE__*/React.forwardRef(HookModal);","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport * as React from 'react';\nimport usePatchElement from '../../_util/hooks/usePatchElement';\nimport { withConfirm, withError, withInfo, withSuccess, withWarn } from '../confirm';\nimport destroyFns from '../destroyFns';\nimport HookModal from './HookModal';\nvar uuid = 0;\nvar ElementsHolder = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (_props, ref) {\n var _usePatchElement = usePatchElement(),\n _usePatchElement2 = _slicedToArray(_usePatchElement, 2),\n elements = _usePatchElement2[0],\n patchElement = _usePatchElement2[1];\n React.useImperativeHandle(ref, function () {\n return {\n patchElement: patchElement\n };\n }, []);\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return /*#__PURE__*/React.createElement(React.Fragment, null, elements);\n}));\nfunction useModal() {\n var holderRef = React.useRef(null);\n // ========================== Effect ==========================\n var _React$useState = React.useState([]),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n actionQueue = _React$useState2[0],\n setActionQueue = _React$useState2[1];\n React.useEffect(function () {\n if (actionQueue.length) {\n var cloneQueue = _toConsumableArray(actionQueue);\n cloneQueue.forEach(function (action) {\n action();\n });\n setActionQueue([]);\n }\n }, [actionQueue]);\n // =========================== Hook ===========================\n var getConfirmFunc = React.useCallback(function (withFunc) {\n return function hookConfirm(config) {\n var _a;\n uuid += 1;\n var modalRef = /*#__PURE__*/React.createRef();\n // Proxy to promise with `onClose`\n var resolvePromise;\n var promise = new Promise(function (resolve) {\n resolvePromise = resolve;\n });\n var silent = false;\n var closeFunc;\n var modal = /*#__PURE__*/React.createElement(HookModal, {\n key: \"modal-\".concat(uuid),\n config: withFunc(config),\n ref: modalRef,\n afterClose: function afterClose() {\n closeFunc === null || closeFunc === void 0 ? void 0 : closeFunc();\n },\n isSilent: function isSilent() {\n return silent;\n },\n onConfirm: function onConfirm(confirmed) {\n resolvePromise(confirmed);\n }\n });\n closeFunc = (_a = holderRef.current) === null || _a === void 0 ? void 0 : _a.patchElement(modal);\n if (closeFunc) {\n destroyFns.push(closeFunc);\n }\n var instance = {\n destroy: function destroy() {\n function destroyAction() {\n var _a;\n (_a = modalRef.current) === null || _a === void 0 ? void 0 : _a.destroy();\n }\n if (modalRef.current) {\n destroyAction();\n } else {\n setActionQueue(function (prev) {\n return [].concat(_toConsumableArray(prev), [destroyAction]);\n });\n }\n },\n update: function update(newConfig) {\n function updateAction() {\n var _a;\n (_a = modalRef.current) === null || _a === void 0 ? void 0 : _a.update(newConfig);\n }\n if (modalRef.current) {\n updateAction();\n } else {\n setActionQueue(function (prev) {\n return [].concat(_toConsumableArray(prev), [updateAction]);\n });\n }\n },\n then: function then(resolve) {\n silent = true;\n return promise.then(resolve);\n }\n };\n return instance;\n };\n }, []);\n var fns = React.useMemo(function () {\n return {\n info: getConfirmFunc(withInfo),\n success: getConfirmFunc(withSuccess),\n error: getConfirmFunc(withError),\n warning: getConfirmFunc(withWarn),\n confirm: getConfirmFunc(withConfirm)\n };\n }, []);\n return [fns, /*#__PURE__*/React.createElement(ElementsHolder, {\n key: \"modal-holder\",\n ref: holderRef\n })];\n}\nexport default useModal;","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport * as React from 'react';\nexport default function usePatchElement() {\n var _React$useState = React.useState([]),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n elements = _React$useState2[0],\n setElements = _React$useState2[1];\n var patchElement = React.useCallback(function (element) {\n // append a new element to elements (and create a new ref)\n setElements(function (originElements) {\n return [].concat(_toConsumableArray(originElements), [element]);\n });\n // return a function that removes the new element out of elements (and create a new ref)\n // it works a little like useEffect\n return function () {\n setElements(function (originElements) {\n return originElements.filter(function (ele) {\n return ele !== element;\n });\n });\n };\n }, []);\n return [elements, patchElement];\n}","'use client';\n\nimport confirm, { modalGlobalConfig, withConfirm, withError, withInfo, withSuccess, withWarn } from './confirm';\nimport destroyFns from './destroyFns';\nimport OriginModal from './Modal';\nimport PurePanel from './PurePanel';\nimport useModal from './useModal';\nfunction modalWarn(props) {\n return confirm(withWarn(props));\n}\nvar Modal = OriginModal;\nModal.useModal = useModal;\nModal.info = function infoFn(props) {\n return confirm(withInfo(props));\n};\nModal.success = function successFn(props) {\n return confirm(withSuccess(props));\n};\nModal.error = function errorFn(props) {\n return confirm(withError(props));\n};\nModal.warning = modalWarn;\nModal.warn = modalWarn;\nModal.confirm = function confirmFn(props) {\n return confirm(withConfirm(props));\n};\nModal.destroyAll = function destroyAllFn() {\n while (destroyFns.length) {\n var close = destroyFns.pop();\n if (close) {\n close();\n }\n }\n};\nModal.config = modalGlobalConfig;\nModal._InternalPanelDoNotUseOrYouWillBeFired = PurePanel;\nif (process.env.NODE_ENV !== 'production') {\n Modal.displayName = 'Modal';\n}\nexport default Modal;","import {\n CalendarDaysIcon,\n CalendarIcon,\n ChatBubbleOvalLeftIcon,\n ClipboardDocumentCheckIcon,\n ClipboardDocumentIcon,\n DocumentChartBarIcon,\n HashtagIcon,\n TagIcon,\n} from \"@heroicons/react/24/outline\";\nimport { Modal } from \"antd\";\nimport * as React from \"react\";\nimport { useState } from \"react\";\nimport { CollapseBox } from \"../../../atoms\";\nimport Icon from \"../../../icons\";\nimport { IVizConfig } from \"../../../types\";\nimport { CodeBlock } from \"../../chartview/codeblock\";\n\nconst SummaryView = ({\n summaryConfig,\n}: {\n summaryConfig: {\n vizConfig: IVizConfig;\n setVizConfig: React.Dispatch>;\n loadingSummary: any;\n };\n}) => {\n const { vizConfig, setVizConfig, loadingSummary } = summaryConfig;\n const summary = vizConfig?.summary;\n const [isModalOpen, setIsModalOpen] = useState(false);\n\n const getIcon = (dtype: string, size = 4) => {\n switch (dtype) {\n case \"string\" || \"object\":\n return (\n \n );\n case \"number\":\n return (\n \n );\n case \"date\":\n return (\n \n );\n case \"category\":\n return (\n \n );\n\n default:\n return (\n \n );\n }\n };\n\n const SamplesBox = ({ samples }: { samples: any }) => {\n const samplesView = samples.map((s: any, i: number) => {\n return (\n \n {s}\n \n );\n });\n return (\n \n
      {samplesView}
      \n
      \n );\n };\n\n const showModal = () => {\n setIsModalOpen(true);\n };\n\n const handleOk = () => {\n setIsModalOpen(false);\n };\n\n const handleCancel = () => {\n setIsModalOpen(false);\n };\n\n const columnView = summary?.fields.map((prop: any, i: number) => {\n return (\n \n
      \n {\" \"}\n \n {getIcon(prop.properties.dtype)}\n {\" \"}\n \n {\" \"}\n {prop.column}\n \n
      \n
      \n {prop.properties.dtype} |{\" \"}\n {prop.properties.semantic_type} \n
      \n
      \n {prop.properties.description}\n
      \n
      \n # Unique values: {prop.properties.num_unique_values}{\" \"}\n
      \n
      \n {prop.properties.min && \" min: \" + prop.properties.min}{\" \"}\n {prop.properties.max && \" , max: \" + prop.properties.max}{\" \"}\n {prop.properties.std && \" | std: \" + prop.properties.std.toFixed(3)}{\" \"}\n
      \n\n
      \n \n
      \n {/*
      */}\n \n );\n });\n return (\n
      \n {summary && !loadingSummary && (\n <>\n
      \n {\" \"}\n Data Summary\n
      \n\n
      \n An enriched representation of the data (with predicted semantic\n types and descriptions)\n
      \n
      \n {summary.name} \n \n {summary.dataset_description}\n \n
      \n\n \n {summary && (\n \n
      \n
      \n {columnView}\n
      \n {/* {JSON.stringify(summary, null, 2)} */}\n
      \n
      \n )}\n {!summary &&
      Upload a dataset to begin
      }\n {loadingSummary && (\n
      \n {\" \"}\n \n {\" \"}\n \n {\" \"}\n Uploading and Summarizing the data ..{\" \"}\n
      \n )}\n
      \n \n View raw summary?\n
      \n \n
      \n The dataset is summarized as the dictionary below.\n
      \n \n \n
      \n \n \n )}\n \n );\n};\nexport default SummaryView;\n","import { ArrowUpOnSquareIcon } from \"@heroicons/react/24/outline\";\nimport { message } from \"antd\";\nimport * as React from \"react\";\nimport { IVizConfig } from \"../../../types\";\nimport { fetchJSON } from \"../../../utils\";\n\nconst SamplesView = ({\n config,\n}: {\n config: {\n setLoadingSummary: any;\n resetStates: any;\n vizConfig: IVizConfig;\n setVizConfig: any;\n setError: any;\n };\n}) => {\n const serverUrl = process.env.GATSBY_API_URL;\n const { setLoadingSummary, resetStates, setVizConfig, setError, vizConfig } =\n config;\n const samples = [\n {\n name: \"stocks.csv\",\n url: \"https://raw.githubusercontent.com/vega/vega-datasets/next/data/stocks.csv\",\n },\n {\n name: \"cars.json\",\n url: \"https://raw.githubusercontent.com/vega/vega-datasets/next/data/cars.json\",\n },\n {\n name: \"wheat.json\",\n url: \"https://raw.githubusercontent.com/vega/vega-datasets/next/data/wheat.json\",\n },\n\n {\n name: \"movies.json\",\n url: \"https://raw.githubusercontent.com/vega/vega-datasets/next/data/movies.json\",\n },\n {\n name: \"seattle-weather.csv\",\n url: \"https://raw.githubusercontent.com/vega/vega-datasets/next/data/seattle-weather.csv\",\n },\n {\n name: \"sp500.csv\",\n url: \"https://raw.githubusercontent.com/vega/vega-datasets/next/data/sp500.csv\",\n },\n {\n name: \"la-riots.csv\",\n url: \"https://raw.githubusercontent.com/vega/vega-datasets/next/data/la-riots.csv\",\n },\n {\n name: \"airports.csv\",\n url: \"https://raw.githubusercontent.com/vega/vega-datasets/next/data/airports.csv\",\n },\n ];\n\n const uploadFileUrl = (fileUrl: string) => {\n const url = `${serverUrl}/summarize/url`;\n setLoadingSummary(true);\n resetStates();\n\n const payLoad = {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n url: fileUrl,\n textgen_config: vizConfig.textgen_config,\n }),\n };\n\n const onSuccess = (data: any) => {\n if (data && data.status) {\n setVizConfig({\n ...vizConfig,\n summary: data.summary,\n goal: null,\n });\n } else {\n setError({ status: false, message: data.message });\n message.error(data.message);\n }\n setLoadingSummary(false);\n };\n\n const onError = (error: any) => {\n setLoadingSummary(false);\n console.log(error);\n setError({ status: false, message: error.message });\n message.error(error + \"\");\n };\n\n fetchJSON(url, payLoad, onSuccess, onError);\n\n // const postData = {\n // method: \"POST\",\n // headers: {\n // Accept: \"application/json\",\n // \"Content-Type\": \"application/json\",\n // },\n // body: JSON.stringify({ url: fileUrl }),\n // };\n // fetch(url, postData)\n // .then(\n // (response) => response.json() // if the response is a JSON object\n // )\n // .then((data) => {\n // if (data.status) {\n // setLoadingSummary(false);\n // // let config = Object.assign({}, vizConfig);\n // // config.summary = data.summary;\n // // config.goal = null;\n // setVizConfig({\n // ...vizConfig,\n // summary: data.summary,\n // goal: null,\n // });\n // } else {\n // setError({ status: false, message: data.message });\n // message.error(data.message);\n // setLoadingSummary(false);\n // }\n // })\n // .catch(\n // (error) => {\n // setLoadingSummary(false);\n // console.log(error);\n // setError({ status: false, message: error + \"\" });\n // message.error(error + \"\");\n // } // Handle the error response object\n // );\n };\n const samplesView = samples.map((data, i) => {\n return (\n {\n uploadFileUrl(data.url);\n }}\n className=\"p-1 border-accent border px-2 rounded duration-300 hover:text-accent\"\n key={\"samplerow\" + i}\n >\n {data.name}\n \n );\n });\n\n return (\n
      \n
      \n
      \n \n Don't have\n data?\n {\" \"}\n Try any of the files below\n
      \n\n
      {samplesView}
      \n
      \n
      \n );\n};\nexport default SamplesView;\n","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"title\", \"titleId\"];\nimport * as React from \"react\";\nfunction BookmarkSquareIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M16.5 3.75V16.5L12 14.25 7.5 16.5V3.75m9 0H18A2.25 2.25 0 0120.25 6v12A2.25 2.25 0 0118 20.25H6A2.25 2.25 0 013.75 18V6A2.25 2.25 0 016 3.75h1.5m9 0h-9\"\n }));\n}\nvar ForwardRef = React.forwardRef(BookmarkSquareIcon);\nexport default ForwardRef;","import {\n ChatBubbleBottomCenterTextIcon,\n BookmarkSquareIcon,\n LightBulbIcon,\n} from \"@heroicons/react/24/outline\";\nimport { message } from \"antd\";\nimport * as React from \"react\";\nimport { Card, CollapseBox, LaunchButton } from \"../../../atoms\";\nimport Icon from \"../../../icons\";\nimport { IGoal, IVizConfig } from \"../../../types\";\nconst GoalView = ({\n config,\n}: {\n config: {\n goals: any;\n setVizConfig: any;\n vizConfig: IVizConfig;\n loadingGoals: any;\n };\n}) => {\n const { goals, setVizConfig, vizConfig, loadingGoals } = config;\n const [selectedGoal, setSelectedGoal] = React.useState(0);\n\n const goalDivWidth = 280;\n React.useEffect(() => {\n if (!vizConfig.goal) {\n setSelectedGoal(0);\n }\n }, [vizConfig.goal]);\n\n const goalsList = goals?.map((goal: IGoal, i: number) => {\n const isActive = selectedGoal === i;\n return (\n {\n setVizConfig({\n ...vizConfig,\n goal: goal,\n });\n setSelectedGoal(i);\n }}\n key={i}\n style={{ width: goalDivWidth + \"px\" }}\n className={`inline-block mb-3 bg-secondary p-2 break-inside-avoid text-sm rounded border ${\n isActive ? \" border-accent\" : \"border-transparent\"\n }`}\n >\n
      \n <>\n
      \n {\" \"}\n \n {i + 1}\n {\" \"}\n {goal.question}\n
      \n {\n <>\n
      \n {goal.visualization}\n
      \n
      {goal.rationale}
      \n \n }\n \n
      \n );\n });\n return (\n
      \n {goals && !loadingGoals && vizConfig.summary && (\n
      \n
      \n Goal Exploration\n
      \n
      \n A list of automatically generated data exploration goals\n (hypothesis) based on the data summary above.\n
      \n \n {/*
      \n {goalsList}\n
      */}\n
      \n \n {goalsList}\n
      \n
      \n \n
      \n {\n message.info(\"Feature in development\");\n }}\n >\n Story{\" \"}\n \n {\" \"}\n \n {\" \"}\n Generate a story based on these goals.{\" \"}\n \n
      \n
      \n )}\n \n );\n};\nexport default GoalView;\n","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"title\", \"titleId\"];\nimport * as React from \"react\";\nfunction Cog6ToothIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.324.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 011.37.49l1.296 2.247a1.125 1.125 0 01-.26 1.431l-1.003.827c-.293.24-.438.613-.431.992a6.759 6.759 0 010 .255c-.007.378.138.75.43.99l1.005.828c.424.35.534.954.26 1.43l-1.298 2.247a1.125 1.125 0 01-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.57 6.57 0 01-.22.128c-.331.183-.581.495-.644.869l-.213 1.28c-.09.543-.56.941-1.11.941h-2.594c-.55 0-1.02-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 01-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 01-1.369-.49l-1.297-2.247a1.125 1.125 0 01.26-1.431l1.004-.827c.292-.24.437-.613.43-.992a6.932 6.932 0 010-.255c.007-.378-.138-.75-.43-.99l-1.004-.828a1.125 1.125 0 01-.26-1.43l1.297-2.247a1.125 1.125 0 011.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.087.22-.128.332-.183.582-.495.644-.869l.214-1.281z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M15 12a3 3 0 11-6 0 3 3 0 016 0z\"\n }));\n}\nvar ForwardRef = React.forwardRef(Cog6ToothIcon);\nexport default ForwardRef;","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"title\", \"titleId\"];\nimport * as React from \"react\";\nfunction PaperAirplaneIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M6 12L3.269 3.126A59.768 59.768 0 0121.485 12 59.77 59.77 0 013.27 20.876L5.999 12zm0 0h7.5\"\n }));\n}\nvar ForwardRef = React.forwardRef(PaperAirplaneIcon);\nexport default ForwardRef;","function extendsObject() {\n var _arguments = arguments;\n var result = Object.assign({}, arguments.length <= 0 ? undefined : arguments[0]);\n var _loop = function _loop() {\n var obj = i < 0 || _arguments.length <= i ? undefined : _arguments[i];\n if (obj) {\n Object.keys(obj).forEach(function (key) {\n var val = obj[key];\n if (val !== undefined) {\n result[key] = val;\n }\n });\n }\n };\n for (var i = 1; i < arguments.length; i++) {\n _loop();\n }\n return result;\n}\nexport default extendsObject;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport React from 'react';\nimport { useToken } from '../theme/internal';\nexport var responsiveArray = ['xxl', 'xl', 'lg', 'md', 'sm', 'xs'];\nvar getResponsiveMap = function getResponsiveMap(token) {\n return {\n xs: \"(max-width: \".concat(token.screenXSMax, \"px)\"),\n sm: \"(min-width: \".concat(token.screenSM, \"px)\"),\n md: \"(min-width: \".concat(token.screenMD, \"px)\"),\n lg: \"(min-width: \".concat(token.screenLG, \"px)\"),\n xl: \"(min-width: \".concat(token.screenXL, \"px)\"),\n xxl: \"(min-width: \".concat(token.screenXXL, \"px)\")\n };\n};\n/**\n * Ensures that the breakpoints token are valid, in good order\n * For each breakpoint : screenMin <= screen <= screenMax and screenMax <= nextScreenMin\n */\nvar validateBreakpoints = function validateBreakpoints(token) {\n var indexableToken = token;\n var revBreakpoints = [].concat(responsiveArray).reverse();\n revBreakpoints.forEach(function (breakpoint, i) {\n var breakpointUpper = breakpoint.toUpperCase();\n var screenMin = \"screen\".concat(breakpointUpper, \"Min\");\n var screen = \"screen\".concat(breakpointUpper);\n if (!(indexableToken[screenMin] <= indexableToken[screen])) {\n throw new Error(\"\".concat(screenMin, \"<=\").concat(screen, \" fails : !(\").concat(indexableToken[screenMin], \"<=\").concat(indexableToken[screen], \")\"));\n }\n if (i < revBreakpoints.length - 1) {\n var screenMax = \"screen\".concat(breakpointUpper, \"Max\");\n if (!(indexableToken[screen] <= indexableToken[screenMax])) {\n throw new Error(\"\".concat(screen, \"<=\").concat(screenMax, \" fails : !(\").concat(indexableToken[screen], \"<=\").concat(indexableToken[screenMax], \")\"));\n }\n var nextBreakpointUpperMin = revBreakpoints[i + 1].toUpperCase();\n var nextScreenMin = \"screen\".concat(nextBreakpointUpperMin, \"Min\");\n if (!(indexableToken[screenMax] <= indexableToken[nextScreenMin])) {\n throw new Error(\"\".concat(screenMax, \"<=\").concat(nextScreenMin, \" fails : !(\").concat(indexableToken[screenMax], \"<=\").concat(indexableToken[nextScreenMin], \")\"));\n }\n }\n });\n return token;\n};\nexport default function useResponsiveObserver() {\n var _useToken = useToken(),\n _useToken2 = _slicedToArray(_useToken, 2),\n token = _useToken2[1];\n var responsiveMap = getResponsiveMap(validateBreakpoints(token));\n // To avoid repeat create instance, we add `useMemo` here.\n return React.useMemo(function () {\n var subscribers = new Map();\n var subUid = -1;\n var screens = {};\n return {\n matchHandlers: {},\n dispatch: function dispatch(pointMap) {\n screens = pointMap;\n subscribers.forEach(function (func) {\n return func(screens);\n });\n return subscribers.size >= 1;\n },\n subscribe: function subscribe(func) {\n if (!subscribers.size) this.register();\n subUid += 1;\n subscribers.set(subUid, func);\n func(screens);\n return subUid;\n },\n unsubscribe: function unsubscribe(paramToken) {\n subscribers.delete(paramToken);\n if (!subscribers.size) this.unregister();\n },\n unregister: function unregister() {\n var _this = this;\n Object.keys(responsiveMap).forEach(function (screen) {\n var matchMediaQuery = responsiveMap[screen];\n var handler = _this.matchHandlers[matchMediaQuery];\n handler === null || handler === void 0 ? void 0 : handler.mql.removeListener(handler === null || handler === void 0 ? void 0 : handler.listener);\n });\n subscribers.clear();\n },\n register: function register() {\n var _this2 = this;\n Object.keys(responsiveMap).forEach(function (screen) {\n var matchMediaQuery = responsiveMap[screen];\n var listener = function listener(_ref) {\n var matches = _ref.matches;\n _this2.dispatch(Object.assign(Object.assign({}, screens), _defineProperty({}, screen, matches)));\n };\n var mql = window.matchMedia(matchMediaQuery);\n mql.addListener(listener);\n _this2.matchHandlers[matchMediaQuery] = {\n mql: mql,\n listener: listener\n };\n listener(mql);\n });\n },\n responsiveMap: responsiveMap\n };\n }, [token]);\n}","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport { TinyColor } from '@ctrl/tinycolor';\nimport * as React from 'react';\nimport { useToken } from '../theme/internal';\nvar Empty = function Empty() {\n var _useToken = useToken(),\n _useToken2 = _slicedToArray(_useToken, 2),\n token = _useToken2[1];\n var bgColor = new TinyColor(token.colorBgBase);\n // Dark Theme need more dark of this\n var themeStyle = bgColor.toHsl().l < 0.5 ? {\n opacity: 0.65\n } : {};\n return /*#__PURE__*/React.createElement(\"svg\", {\n style: themeStyle,\n width: \"184\",\n height: \"152\",\n viewBox: \"0 0 184 152\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(24 31.67)\"\n }, /*#__PURE__*/React.createElement(\"ellipse\", {\n fillOpacity: \".8\",\n fill: \"#F5F5F7\",\n cx: \"67.797\",\n cy: \"106.89\",\n rx: \"67.797\",\n ry: \"12.668\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M122.034 69.674L98.109 40.229c-1.148-1.386-2.826-2.225-4.593-2.225h-51.44c-1.766 0-3.444.839-4.592 2.225L13.56 69.674v15.383h108.475V69.674z\",\n fill: \"#AEB8C2\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M101.537 86.214L80.63 61.102c-1.001-1.207-2.507-1.867-4.048-1.867H31.724c-1.54 0-3.047.66-4.048 1.867L6.769 86.214v13.792h94.768V86.214z\",\n fill: \"url(#linearGradient-1)\",\n transform: \"translate(13.56)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M33.83 0h67.933a4 4 0 0 1 4 4v93.344a4 4 0 0 1-4 4H33.83a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4z\",\n fill: \"#F5F5F7\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M42.678 9.953h50.237a2 2 0 0 1 2 2V36.91a2 2 0 0 1-2 2H42.678a2 2 0 0 1-2-2V11.953a2 2 0 0 1 2-2zM42.94 49.767h49.713a2.262 2.262 0 1 1 0 4.524H42.94a2.262 2.262 0 0 1 0-4.524zM42.94 61.53h49.713a2.262 2.262 0 1 1 0 4.525H42.94a2.262 2.262 0 0 1 0-4.525zM121.813 105.032c-.775 3.071-3.497 5.36-6.735 5.36H20.515c-3.238 0-5.96-2.29-6.734-5.36a7.309 7.309 0 0 1-.222-1.79V69.675h26.318c2.907 0 5.25 2.448 5.25 5.42v.04c0 2.971 2.37 5.37 5.277 5.37h34.785c2.907 0 5.277-2.421 5.277-5.393V75.1c0-2.972 2.343-5.426 5.25-5.426h26.318v33.569c0 .617-.077 1.216-.221 1.789z\",\n fill: \"#DCE0E6\"\n })), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M149.121 33.292l-6.83 2.65a1 1 0 0 1-1.317-1.23l1.937-6.207c-2.589-2.944-4.109-6.534-4.109-10.408C138.802 8.102 148.92 0 161.402 0 173.881 0 184 8.102 184 18.097c0 9.995-10.118 18.097-22.599 18.097-4.528 0-8.744-1.066-12.28-2.902z\",\n fill: \"#DCE0E6\"\n }), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(149.65 15.383)\",\n fill: \"#FFF\"\n }, /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: \"20.654\",\n cy: \"3.167\",\n rx: \"2.849\",\n ry: \"2.815\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.698 5.63H0L2.898.704zM9.259.704h4.985V5.63H9.259z\"\n }))));\n};\nif (process.env.NODE_ENV !== 'production') {\n Empty.displayName = 'EmptyImage';\n}\nexport default Empty;","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport { TinyColor } from '@ctrl/tinycolor';\nimport * as React from 'react';\nimport { useMemo } from 'react';\nimport { useToken } from '../theme/internal';\nvar Simple = function Simple() {\n var _useToken = useToken(),\n _useToken2 = _slicedToArray(_useToken, 2),\n token = _useToken2[1];\n var colorFill = token.colorFill,\n colorFillTertiary = token.colorFillTertiary,\n colorFillQuaternary = token.colorFillQuaternary,\n colorBgContainer = token.colorBgContainer;\n var _useMemo = useMemo(function () {\n return {\n borderColor: new TinyColor(colorFill).onBackground(colorBgContainer).toHexShortString(),\n shadowColor: new TinyColor(colorFillTertiary).onBackground(colorBgContainer).toHexShortString(),\n contentColor: new TinyColor(colorFillQuaternary).onBackground(colorBgContainer).toHexShortString()\n };\n }, [colorFill, colorFillTertiary, colorFillQuaternary, colorBgContainer]),\n borderColor = _useMemo.borderColor,\n shadowColor = _useMemo.shadowColor,\n contentColor = _useMemo.contentColor;\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: \"64\",\n height: \"41\",\n viewBox: \"0 0 64 41\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(0 1)\",\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"ellipse\", {\n fill: shadowColor,\n cx: \"32\",\n cy: \"33\",\n rx: \"32\",\n ry: \"7\"\n }), /*#__PURE__*/React.createElement(\"g\", {\n fillRule: \"nonzero\",\n stroke: borderColor\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\",\n fill: contentColor\n }))));\n};\nif (process.env.NODE_ENV !== 'production') {\n Simple.displayName = 'SimpleImage';\n}\nexport default Simple;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\n// ============================== Shared ==============================\nvar genSharedEmptyStyle = function genSharedEmptyStyle(token) {\n var _normal, _componentCls;\n var componentCls = token.componentCls,\n margin = token.margin,\n marginXS = token.marginXS,\n marginXL = token.marginXL,\n fontSize = token.fontSize,\n lineHeight = token.lineHeight;\n return _defineProperty({}, componentCls, (_componentCls = {\n marginInline: marginXS,\n fontSize: fontSize,\n lineHeight: lineHeight,\n textAlign: 'center'\n }, _defineProperty(_componentCls, \"\".concat(componentCls, \"-image\"), {\n height: token.emptyImgHeight,\n marginBottom: marginXS,\n opacity: token.opacityImage,\n img: {\n height: '100%'\n },\n svg: {\n maxWidth: '100%',\n height: '100%',\n margin: 'auto'\n }\n }), _defineProperty(_componentCls, \"\".concat(componentCls, \"-description\"), {\n color: token.colorText\n }), _defineProperty(_componentCls, \"\".concat(componentCls, \"-footer\"), {\n marginTop: margin\n }), _defineProperty(_componentCls, '&-normal', (_normal = {\n marginBlock: marginXL,\n color: token.colorTextDisabled\n }, _defineProperty(_normal, \"\".concat(componentCls, \"-description\"), {\n color: token.colorTextDisabled\n }), _defineProperty(_normal, \"\".concat(componentCls, \"-image\"), {\n height: token.emptyImgHeightMD\n }), _normal)), _defineProperty(_componentCls, '&-small', _defineProperty({\n marginBlock: marginXS,\n color: token.colorTextDisabled\n }, \"\".concat(componentCls, \"-image\"), {\n height: token.emptyImgHeightSM\n })), _componentCls));\n};\n// ============================== Export ==============================\nexport default genComponentStyleHook('Empty', function (token) {\n var componentCls = token.componentCls,\n controlHeightLG = token.controlHeightLG;\n var emptyToken = mergeToken(token, {\n emptyImgCls: \"\".concat(componentCls, \"-img\"),\n emptyImgHeight: controlHeightLG * 2.5,\n emptyImgHeightMD: controlHeightLG,\n emptyImgHeightSM: controlHeightLG * 0.875\n });\n return [genSharedEmptyStyle(emptyToken)];\n});","'use client';\n\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport { useLocale } from '../locale';\nimport DefaultEmptyImg from './empty';\nimport SimpleEmptyImg from './simple';\nimport useStyle from './style';\nvar defaultEmptyImg = /*#__PURE__*/React.createElement(DefaultEmptyImg, null);\nvar simpleEmptyImg = /*#__PURE__*/React.createElement(SimpleEmptyImg, null);\nvar Empty = function Empty(_a) {\n var _classNames;\n var className = _a.className,\n rootClassName = _a.rootClassName,\n customizePrefixCls = _a.prefixCls,\n _a$image = _a.image,\n image = _a$image === void 0 ? defaultEmptyImg : _a$image,\n description = _a.description,\n children = _a.children,\n imageStyle = _a.imageStyle,\n style = _a.style,\n restProps = __rest(_a, [\"className\", \"rootClassName\", \"prefixCls\", \"image\", \"description\", \"children\", \"imageStyle\", \"style\"]);\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction,\n empty = _React$useContext.empty;\n var prefixCls = getPrefixCls('empty', customizePrefixCls);\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n var _useLocale = useLocale('Empty'),\n _useLocale2 = _slicedToArray(_useLocale, 1),\n locale = _useLocale2[0];\n var des = typeof description !== 'undefined' ? description : locale === null || locale === void 0 ? void 0 : locale.description;\n var alt = typeof des === 'string' ? des : 'empty';\n var imageNode = null;\n if (typeof image === 'string') {\n imageNode = /*#__PURE__*/React.createElement(\"img\", {\n alt: alt,\n src: image\n });\n } else {\n imageNode = image;\n }\n return wrapSSR( /*#__PURE__*/React.createElement(\"div\", Object.assign({\n className: classNames(hashId, prefixCls, empty === null || empty === void 0 ? void 0 : empty.className, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-normal\"), image === simpleEmptyImg), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _classNames), className, rootClassName),\n style: Object.assign(Object.assign({}, empty === null || empty === void 0 ? void 0 : empty.style), style)\n }, restProps), /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-image\"),\n style: imageStyle\n }, imageNode), des && /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-description\")\n }, des), children && /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-footer\")\n }, children)));\n};\nEmpty.PRESENTED_IMAGE_DEFAULT = defaultEmptyImg;\nEmpty.PRESENTED_IMAGE_SIMPLE = simpleEmptyImg;\nif (process.env.NODE_ENV !== 'production') {\n Empty.displayName = 'Empty';\n}\nexport default Empty;","import React, { useContext } from 'react';\nimport { ConfigContext } from '.';\nimport Empty from '../empty';\nvar DefaultRenderEmpty = function DefaultRenderEmpty(props) {\n var componentName = props.componentName;\n var _useContext = useContext(ConfigContext),\n getPrefixCls = _useContext.getPrefixCls;\n var prefix = getPrefixCls('empty');\n switch (componentName) {\n case 'Table':\n case 'List':\n return /*#__PURE__*/React.createElement(Empty, {\n image: Empty.PRESENTED_IMAGE_SIMPLE\n });\n case 'Select':\n case 'TreeSelect':\n case 'Cascader':\n case 'Transfer':\n case 'Mentions':\n return /*#__PURE__*/React.createElement(Empty, {\n image: Empty.PRESENTED_IMAGE_SIMPLE,\n className: \"\".concat(prefix, \"-small\")\n });\n /* istanbul ignore next */\n default:\n // Should never hit if we take all the component into consider.\n return /*#__PURE__*/React.createElement(Empty, null);\n }\n};\nexport default DefaultRenderEmpty;","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport * as React from 'react';\nimport { detectFlexGapSupported } from '../styleChecker';\nexport default (function () {\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n flexible = _React$useState2[0],\n setFlexible = _React$useState2[1];\n React.useEffect(function () {\n setFlexible(detectFlexGapSupported());\n }, []);\n return flexible;\n});","import { createContext } from 'react';\nvar RowContext = /*#__PURE__*/createContext({});\nexport default RowContext;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\n// ============================== Row-Shared ==============================\nvar genGridRowStyle = function genGridRowStyle(token) {\n var componentCls = token.componentCls;\n return _defineProperty({}, componentCls, {\n display: 'flex',\n flexFlow: 'row wrap',\n minWidth: 0,\n '&::before, &::after': {\n display: 'flex'\n },\n '&-no-wrap': {\n flexWrap: 'nowrap'\n },\n // The origin of the X-axis\n '&-start': {\n justifyContent: 'flex-start'\n },\n // The center of the X-axis\n '&-center': {\n justifyContent: 'center'\n },\n // The opposite of the X-axis\n '&-end': {\n justifyContent: 'flex-end'\n },\n '&-space-between': {\n justifyContent: 'space-between'\n },\n '&-space-around': {\n justifyContent: 'space-around'\n },\n '&-space-evenly': {\n justifyContent: 'space-evenly'\n },\n // Align at the top\n '&-top': {\n alignItems: 'flex-start'\n },\n // Align at the center\n '&-middle': {\n alignItems: 'center'\n },\n '&-bottom': {\n alignItems: 'flex-end'\n }\n });\n};\n// ============================== Col-Shared ==============================\nvar genGridColStyle = function genGridColStyle(token) {\n var componentCls = token.componentCls;\n return _defineProperty({}, componentCls, {\n position: 'relative',\n maxWidth: '100%',\n // Prevent columns from collapsing when empty\n minHeight: 1\n });\n};\nvar genLoopGridColumnsStyle = function genLoopGridColumnsStyle(token, sizeCls) {\n var componentCls = token.componentCls,\n gridColumns = token.gridColumns;\n var gridColumnsStyle = {};\n for (var i = gridColumns; i >= 0; i--) {\n if (i === 0) {\n gridColumnsStyle[\"\".concat(componentCls).concat(sizeCls, \"-\").concat(i)] = {\n display: 'none'\n };\n gridColumnsStyle[\"\".concat(componentCls, \"-push-\").concat(i)] = {\n insetInlineStart: 'auto'\n };\n gridColumnsStyle[\"\".concat(componentCls, \"-pull-\").concat(i)] = {\n insetInlineEnd: 'auto'\n };\n gridColumnsStyle[\"\".concat(componentCls).concat(sizeCls, \"-push-\").concat(i)] = {\n insetInlineStart: 'auto'\n };\n gridColumnsStyle[\"\".concat(componentCls).concat(sizeCls, \"-pull-\").concat(i)] = {\n insetInlineEnd: 'auto'\n };\n gridColumnsStyle[\"\".concat(componentCls).concat(sizeCls, \"-offset-\").concat(i)] = {\n marginInlineStart: 0\n };\n gridColumnsStyle[\"\".concat(componentCls).concat(sizeCls, \"-order-\").concat(i)] = {\n order: 0\n };\n } else {\n gridColumnsStyle[\"\".concat(componentCls).concat(sizeCls, \"-\").concat(i)] = {\n display: 'block',\n flex: \"0 0 \".concat(i / gridColumns * 100, \"%\"),\n maxWidth: \"\".concat(i / gridColumns * 100, \"%\")\n };\n gridColumnsStyle[\"\".concat(componentCls).concat(sizeCls, \"-push-\").concat(i)] = {\n insetInlineStart: \"\".concat(i / gridColumns * 100, \"%\")\n };\n gridColumnsStyle[\"\".concat(componentCls).concat(sizeCls, \"-pull-\").concat(i)] = {\n insetInlineEnd: \"\".concat(i / gridColumns * 100, \"%\")\n };\n gridColumnsStyle[\"\".concat(componentCls).concat(sizeCls, \"-offset-\").concat(i)] = {\n marginInlineStart: \"\".concat(i / gridColumns * 100, \"%\")\n };\n gridColumnsStyle[\"\".concat(componentCls).concat(sizeCls, \"-order-\").concat(i)] = {\n order: i\n };\n }\n }\n return gridColumnsStyle;\n};\nvar genGridStyle = function genGridStyle(token, sizeCls) {\n return genLoopGridColumnsStyle(token, sizeCls);\n};\nvar genGridMediaStyle = function genGridMediaStyle(token, screenSize, sizeCls) {\n return _defineProperty({}, \"@media (min-width: \".concat(screenSize, \"px)\"), Object.assign({}, genGridStyle(token, sizeCls)));\n};\n// ============================== Export ==============================\nexport var useRowStyle = genComponentStyleHook('Grid', function (token) {\n return [genGridRowStyle(token)];\n});\nexport var useColStyle = genComponentStyleHook('Grid', function (token) {\n var gridToken = mergeToken(token, {\n gridColumns: 24 // Row is divided into 24 parts in Grid\n });\n\n var gridMediaSizesMap = {\n '-sm': gridToken.screenSMMin,\n '-md': gridToken.screenMDMin,\n '-lg': gridToken.screenLGMin,\n '-xl': gridToken.screenXLMin,\n '-xxl': gridToken.screenXXLMin\n };\n return [genGridColStyle(gridToken), genGridStyle(gridToken, ''), genGridStyle(gridToken, '-xs'), Object.keys(gridMediaSizesMap).map(function (key) {\n return genGridMediaStyle(gridToken, gridMediaSizesMap[key], key);\n }).reduce(function (pre, cur) {\n return Object.assign(Object.assign({}, pre), cur);\n }, {})];\n});","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport useFlexGapSupport from '../_util/hooks/useFlexGapSupport';\nimport useResponsiveObserver, { responsiveArray } from '../_util/responsiveObserver';\nimport RowContext from './RowContext';\nimport { useRowStyle } from './style';\nvar RowAligns = ['top', 'middle', 'bottom', 'stretch'];\nvar RowJustify = ['start', 'end', 'center', 'space-around', 'space-between', 'space-evenly'];\nfunction useMergePropByScreen(oriProp, screen) {\n var _React$useState = React.useState(typeof oriProp === 'string' ? oriProp : ''),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n prop = _React$useState2[0],\n setProp = _React$useState2[1];\n var calcMergeAlignOrJustify = function calcMergeAlignOrJustify() {\n if (typeof oriProp === 'string') {\n setProp(oriProp);\n }\n if (typeof oriProp !== 'object') {\n return;\n }\n for (var i = 0; i < responsiveArray.length; i++) {\n var breakpoint = responsiveArray[i];\n // if do not match, do nothing\n if (!screen[breakpoint]) continue;\n var curVal = oriProp[breakpoint];\n if (curVal !== undefined) {\n setProp(curVal);\n return;\n }\n }\n };\n React.useEffect(function () {\n calcMergeAlignOrJustify();\n }, [JSON.stringify(oriProp), screen]);\n return prop;\n}\nvar Row = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _classNames;\n var customizePrefixCls = props.prefixCls,\n justify = props.justify,\n align = props.align,\n className = props.className,\n style = props.style,\n children = props.children,\n _props$gutter = props.gutter,\n gutter = _props$gutter === void 0 ? 0 : _props$gutter,\n wrap = props.wrap,\n others = __rest(props, [\"prefixCls\", \"justify\", \"align\", \"className\", \"style\", \"children\", \"gutter\", \"wrap\"]);\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n var _React$useState3 = React.useState({\n xs: true,\n sm: true,\n md: true,\n lg: true,\n xl: true,\n xxl: true\n }),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n screens = _React$useState4[0],\n setScreens = _React$useState4[1];\n // to save screens info when responsiveObserve callback had been call\n var _React$useState5 = React.useState({\n xs: false,\n sm: false,\n md: false,\n lg: false,\n xl: false,\n xxl: false\n }),\n _React$useState6 = _slicedToArray(_React$useState5, 2),\n curScreens = _React$useState6[0],\n setCurScreens = _React$useState6[1];\n // ================================== calc responsive data ==================================\n var mergeAlign = useMergePropByScreen(align, curScreens);\n var mergeJustify = useMergePropByScreen(justify, curScreens);\n var supportFlexGap = useFlexGapSupport();\n var gutterRef = React.useRef(gutter);\n var responsiveObserver = useResponsiveObserver();\n // ================================== Effect ==================================\n React.useEffect(function () {\n var token = responsiveObserver.subscribe(function (screen) {\n setCurScreens(screen);\n var currentGutter = gutterRef.current || 0;\n if (!Array.isArray(currentGutter) && typeof currentGutter === 'object' || Array.isArray(currentGutter) && (typeof currentGutter[0] === 'object' || typeof currentGutter[1] === 'object')) {\n setScreens(screen);\n }\n });\n return function () {\n return responsiveObserver.unsubscribe(token);\n };\n }, []);\n // ================================== Render ==================================\n var getGutter = function getGutter() {\n var results = [undefined, undefined];\n var normalizedGutter = Array.isArray(gutter) ? gutter : [gutter, undefined];\n normalizedGutter.forEach(function (g, index) {\n if (typeof g === 'object') {\n for (var i = 0; i < responsiveArray.length; i++) {\n var breakpoint = responsiveArray[i];\n if (screens[breakpoint] && g[breakpoint] !== undefined) {\n results[index] = g[breakpoint];\n break;\n }\n }\n } else {\n results[index] = g;\n }\n });\n return results;\n };\n var prefixCls = getPrefixCls('row', customizePrefixCls);\n var _useRowStyle = useRowStyle(prefixCls),\n _useRowStyle2 = _slicedToArray(_useRowStyle, 2),\n wrapSSR = _useRowStyle2[0],\n hashId = _useRowStyle2[1];\n var gutters = getGutter();\n var classes = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-no-wrap\"), wrap === false), _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(mergeJustify), mergeJustify), _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(mergeAlign), mergeAlign), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _classNames), className, hashId);\n // Add gutter related style\n var rowStyle = {};\n var horizontalGutter = gutters[0] != null && gutters[0] > 0 ? gutters[0] / -2 : undefined;\n var verticalGutter = gutters[1] != null && gutters[1] > 0 ? gutters[1] / -2 : undefined;\n if (horizontalGutter) {\n rowStyle.marginLeft = horizontalGutter;\n rowStyle.marginRight = horizontalGutter;\n }\n if (supportFlexGap) {\n // Set gap direct if flex gap support\n var _gutters = _slicedToArray(gutters, 2);\n rowStyle.rowGap = _gutters[1];\n } else if (verticalGutter) {\n rowStyle.marginTop = verticalGutter;\n rowStyle.marginBottom = verticalGutter;\n }\n // \"gutters\" is a new array in each rendering phase, it'll make 'React.useMemo' effectless.\n // So we deconstruct \"gutters\" variable here.\n var _gutters2 = _slicedToArray(gutters, 2),\n gutterH = _gutters2[0],\n gutterV = _gutters2[1];\n var rowContext = React.useMemo(function () {\n return {\n gutter: [gutterH, gutterV],\n wrap: wrap,\n supportFlexGap: supportFlexGap\n };\n }, [gutterH, gutterV, wrap, supportFlexGap]);\n return wrapSSR( /*#__PURE__*/React.createElement(RowContext.Provider, {\n value: rowContext\n }, /*#__PURE__*/React.createElement(\"div\", Object.assign({}, others, {\n className: classes,\n style: Object.assign(Object.assign({}, rowStyle), style),\n ref: ref\n }), children)));\n});\nif (process.env.NODE_ENV !== 'production') {\n Row.displayName = 'Row';\n}\nexport default Row;","import { useRef } from 'react';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport useForceUpdate from '../../_util/hooks/useForceUpdate';\nimport useResponsiveObserver from '../../_util/responsiveObserver';\nfunction useBreakpoint() {\n var refreshOnChange = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var screensRef = useRef({});\n var forceUpdate = useForceUpdate();\n var responsiveObserver = useResponsiveObserver();\n useLayoutEffect(function () {\n var token = responsiveObserver.subscribe(function (supportScreens) {\n screensRef.current = supportScreens;\n if (refreshOnChange) {\n forceUpdate();\n }\n });\n return function () {\n return responsiveObserver.unsubscribe(token);\n };\n }, []);\n return screensRef.current;\n}\nexport default useBreakpoint;","// This icon file is generated automatically.\nvar DoubleLeftOutlined = {\n \"icon\": {\n \"tag\": \"svg\",\n \"attrs\": {\n \"viewBox\": \"64 64 896 896\",\n \"focusable\": \"false\"\n },\n \"children\": [{\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M272.9 512l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L186.8 492.3a31.99 31.99 0 000 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H532c6.7 0 10.4-7.7 6.3-12.9L272.9 512zm304 0l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L490.8 492.3a31.99 31.99 0 000 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H836c6.7 0 10.4-7.7 6.3-12.9L576.9 512z\"\n }\n }]\n },\n \"name\": \"double-left\",\n \"theme\": \"outlined\"\n};\nexport default DoubleLeftOutlined;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport DoubleLeftOutlinedSvg from \"@ant-design/icons-svg/es/asn/DoubleLeftOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar DoubleLeftOutlined = function DoubleLeftOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: DoubleLeftOutlinedSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n DoubleLeftOutlined.displayName = 'DoubleLeftOutlined';\n}\nexport default /*#__PURE__*/React.forwardRef(DoubleLeftOutlined);","// This icon file is generated automatically.\nvar DoubleRightOutlined = {\n \"icon\": {\n \"tag\": \"svg\",\n \"attrs\": {\n \"viewBox\": \"64 64 896 896\",\n \"focusable\": \"false\"\n },\n \"children\": [{\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M533.2 492.3L277.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H188c-6.7 0-10.4 7.7-6.3 12.9L447.1 512 181.7 851.1A7.98 7.98 0 00188 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5zm304 0L581.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H492c-6.7 0-10.4 7.7-6.3 12.9L751.1 512 485.7 851.1A7.98 7.98 0 00492 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5z\"\n }\n }]\n },\n \"name\": \"double-right\",\n \"theme\": \"outlined\"\n};\nexport default DoubleRightOutlined;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport DoubleRightOutlinedSvg from \"@ant-design/icons-svg/es/asn/DoubleRightOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar DoubleRightOutlined = function DoubleRightOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: DoubleRightOutlinedSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n DoubleRightOutlined.displayName = 'DoubleRightOutlined';\n}\nexport default /*#__PURE__*/React.forwardRef(DoubleRightOutlined);","// This icon file is generated automatically.\nvar LeftOutlined = {\n \"icon\": {\n \"tag\": \"svg\",\n \"attrs\": {\n \"viewBox\": \"64 64 896 896\",\n \"focusable\": \"false\"\n },\n \"children\": [{\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"\n }\n }]\n },\n \"name\": \"left\",\n \"theme\": \"outlined\"\n};\nexport default LeftOutlined;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport LeftOutlinedSvg from \"@ant-design/icons-svg/es/asn/LeftOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar LeftOutlined = function LeftOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: LeftOutlinedSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n LeftOutlined.displayName = 'LeftOutlined';\n}\nexport default /*#__PURE__*/React.forwardRef(LeftOutlined);","var KeyCode = {\n ZERO: 48,\n NINE: 57,\n NUMPAD_ZERO: 96,\n NUMPAD_NINE: 105,\n BACKSPACE: 8,\n DELETE: 46,\n ENTER: 13,\n ARROW_UP: 38,\n ARROW_DOWN: 40\n};\nexport default KeyCode;","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\n/* eslint react/prop-types: 0 */\nimport React from 'react';\nimport KEYCODE from './KeyCode';\nvar Options = /*#__PURE__*/function (_React$Component) {\n _inherits(Options, _React$Component);\n var _super = _createSuper(Options);\n function Options() {\n var _this;\n _classCallCheck(this, Options);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _this.state = {\n goInputText: ''\n };\n _this.getValidValue = function () {\n var goInputText = _this.state.goInputText;\n // eslint-disable-next-line no-restricted-globals\n return !goInputText || Number.isNaN(goInputText) ? undefined : Number(goInputText);\n };\n _this.buildOptionText = function (value) {\n return \"\".concat(value, \" \").concat(_this.props.locale.items_per_page);\n };\n _this.changeSize = function (value) {\n _this.props.changeSize(Number(value));\n };\n _this.handleChange = function (e) {\n _this.setState({\n goInputText: e.target.value\n });\n };\n _this.handleBlur = function (e) {\n var _this$props = _this.props,\n goButton = _this$props.goButton,\n quickGo = _this$props.quickGo,\n rootPrefixCls = _this$props.rootPrefixCls;\n var goInputText = _this.state.goInputText;\n if (goButton || goInputText === '') {\n return;\n }\n _this.setState({\n goInputText: ''\n });\n if (e.relatedTarget && (e.relatedTarget.className.indexOf(\"\".concat(rootPrefixCls, \"-item-link\")) >= 0 || e.relatedTarget.className.indexOf(\"\".concat(rootPrefixCls, \"-item\")) >= 0)) {\n return;\n }\n quickGo(_this.getValidValue());\n };\n _this.go = function (e) {\n var goInputText = _this.state.goInputText;\n if (goInputText === '') {\n return;\n }\n if (e.keyCode === KEYCODE.ENTER || e.type === 'click') {\n _this.setState({\n goInputText: ''\n });\n _this.props.quickGo(_this.getValidValue());\n }\n };\n return _this;\n }\n _createClass(Options, [{\n key: \"getPageSizeOptions\",\n value: function getPageSizeOptions() {\n var _this$props2 = this.props,\n pageSize = _this$props2.pageSize,\n pageSizeOptions = _this$props2.pageSizeOptions;\n if (pageSizeOptions.some(function (option) {\n return option.toString() === pageSize.toString();\n })) {\n return pageSizeOptions;\n }\n return pageSizeOptions.concat([pageSize.toString()]).sort(function (a, b) {\n // eslint-disable-next-line no-restricted-globals\n var numberA = Number.isNaN(Number(a)) ? 0 : Number(a);\n // eslint-disable-next-line no-restricted-globals\n var numberB = Number.isNaN(Number(b)) ? 0 : Number(b);\n return numberA - numberB;\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n var _this$props3 = this.props,\n pageSize = _this$props3.pageSize,\n locale = _this$props3.locale,\n rootPrefixCls = _this$props3.rootPrefixCls,\n changeSize = _this$props3.changeSize,\n quickGo = _this$props3.quickGo,\n goButton = _this$props3.goButton,\n selectComponentClass = _this$props3.selectComponentClass,\n buildOptionText = _this$props3.buildOptionText,\n selectPrefixCls = _this$props3.selectPrefixCls,\n disabled = _this$props3.disabled;\n var goInputText = this.state.goInputText;\n var prefixCls = \"\".concat(rootPrefixCls, \"-options\");\n var Select = selectComponentClass;\n var changeSelect = null;\n var goInput = null;\n var gotoButton = null;\n if (!changeSize && !quickGo) {\n return null;\n }\n var pageSizeOptions = this.getPageSizeOptions();\n if (changeSize && Select) {\n var options = pageSizeOptions.map(function (opt, i) {\n return /*#__PURE__*/React.createElement(Select.Option, {\n key: i,\n value: opt.toString()\n }, (buildOptionText || _this2.buildOptionText)(opt));\n });\n changeSelect = /*#__PURE__*/React.createElement(Select, {\n disabled: disabled,\n prefixCls: selectPrefixCls,\n showSearch: false,\n className: \"\".concat(prefixCls, \"-size-changer\"),\n optionLabelProp: \"children\",\n popupMatchSelectWidth: false,\n value: (pageSize || pageSizeOptions[0]).toString(),\n onChange: this.changeSize,\n getPopupContainer: function getPopupContainer(triggerNode) {\n return triggerNode.parentNode;\n },\n \"aria-label\": locale.page_size,\n defaultOpen: false\n }, options);\n }\n if (quickGo) {\n if (goButton) {\n gotoButton = typeof goButton === 'boolean' ? /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n onClick: this.go,\n onKeyUp: this.go,\n disabled: disabled,\n className: \"\".concat(prefixCls, \"-quick-jumper-button\")\n }, locale.jump_to_confirm) : /*#__PURE__*/React.createElement(\"span\", {\n onClick: this.go,\n onKeyUp: this.go\n }, goButton);\n }\n goInput = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-quick-jumper\")\n }, locale.jump_to, /*#__PURE__*/React.createElement(\"input\", {\n disabled: disabled,\n type: \"text\",\n value: goInputText,\n onChange: this.handleChange,\n onKeyUp: this.go,\n onBlur: this.handleBlur,\n \"aria-label\": locale.page\n }), locale.page, gotoButton);\n }\n return /*#__PURE__*/React.createElement(\"li\", {\n className: \"\".concat(prefixCls)\n }, changeSelect, goInput);\n }\n }]);\n return Options;\n}(React.Component);\nOptions.defaultProps = {\n pageSizeOptions: ['10', '20', '50', '100']\n};\nexport default Options;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n/* eslint react/prop-types: 0 */\nimport classNames from 'classnames';\nimport React from 'react';\nvar Pager = function Pager(props) {\n var _classNames;\n var rootPrefixCls = props.rootPrefixCls,\n page = props.page,\n active = props.active,\n className = props.className,\n showTitle = props.showTitle,\n onClick = props.onClick,\n onKeyPress = props.onKeyPress,\n itemRender = props.itemRender;\n var prefixCls = \"\".concat(rootPrefixCls, \"-item\");\n var cls = classNames(prefixCls, \"\".concat(prefixCls, \"-\").concat(page), (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-active\"), active), _defineProperty(_classNames, \"\".concat(prefixCls, \"-disabled\"), !page), _defineProperty(_classNames, props.className, className), _classNames));\n var handleClick = function handleClick() {\n onClick(page);\n };\n var handleKeyPress = function handleKeyPress(e) {\n onKeyPress(e, onClick, page);\n };\n return /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? page.toString() : null,\n className: cls,\n onClick: handleClick,\n onKeyPress: handleKeyPress,\n tabIndex: 0\n }, itemRender(page, 'page', /*#__PURE__*/React.createElement(\"a\", {\n rel: \"nofollow\"\n }, page)));\n};\nexport default Pager;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport classNames from 'classnames';\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nimport React, { cloneElement, isValidElement } from 'react';\nimport KEYCODE from './KeyCode';\nimport LOCALE from './locale/zh_CN';\nimport Options from './Options';\nimport Pager from './Pager';\nfunction noop() {}\nfunction isInteger(v) {\n var value = Number(v);\n return (\n // eslint-disable-next-line no-restricted-globals\n typeof value === 'number' && !Number.isNaN(value) && isFinite(value) && Math.floor(value) === value\n );\n}\nvar defaultItemRender = function defaultItemRender(page, type, element) {\n return element;\n};\nfunction calculatePage(p, state, props) {\n var pageSize = typeof p === 'undefined' ? state.pageSize : p;\n return Math.floor((props.total - 1) / pageSize) + 1;\n}\nvar Pagination = /*#__PURE__*/function (_React$Component) {\n _inherits(Pagination, _React$Component);\n var _super = _createSuper(Pagination);\n function Pagination(props) {\n var _this;\n _classCallCheck(this, Pagination);\n _this = _super.call(this, props);\n _this.paginationNode = /*#__PURE__*/React.createRef();\n _this.getJumpPrevPage = function () {\n return Math.max(1, _this.state.current - (_this.props.showLessItems ? 3 : 5));\n };\n _this.getJumpNextPage = function () {\n return Math.min(calculatePage(undefined, _this.state, _this.props), _this.state.current + (_this.props.showLessItems ? 3 : 5));\n };\n _this.getItemIcon = function (icon, label) {\n var prefixCls = _this.props.prefixCls;\n var iconNode = icon || /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n \"aria-label\": label,\n className: \"\".concat(prefixCls, \"-item-link\")\n });\n if (typeof icon === 'function') {\n iconNode = /*#__PURE__*/React.createElement(icon, _objectSpread({}, _this.props));\n }\n return iconNode;\n };\n _this.isValid = function (page) {\n var total = _this.props.total;\n return isInteger(page) && page !== _this.state.current && isInteger(total) && total > 0;\n };\n _this.shouldDisplayQuickJumper = function () {\n var _this$props = _this.props,\n showQuickJumper = _this$props.showQuickJumper,\n total = _this$props.total;\n var pageSize = _this.state.pageSize;\n if (total <= pageSize) {\n return false;\n }\n return showQuickJumper;\n };\n _this.handleKeyDown = function (e) {\n if (e.keyCode === KEYCODE.ARROW_UP || e.keyCode === KEYCODE.ARROW_DOWN) {\n e.preventDefault();\n }\n };\n _this.handleKeyUp = function (e) {\n var value = _this.getValidValue(e);\n var currentInputValue = _this.state.currentInputValue;\n if (value !== currentInputValue) {\n _this.setState({\n currentInputValue: value\n });\n }\n if (e.keyCode === KEYCODE.ENTER) {\n _this.handleChange(value);\n } else if (e.keyCode === KEYCODE.ARROW_UP) {\n _this.handleChange(value - 1);\n } else if (e.keyCode === KEYCODE.ARROW_DOWN) {\n _this.handleChange(value + 1);\n }\n };\n _this.handleBlur = function (e) {\n var value = _this.getValidValue(e);\n _this.handleChange(value);\n };\n _this.changePageSize = function (size) {\n var current = _this.state.current;\n var newCurrent = calculatePage(size, _this.state, _this.props);\n current = current > newCurrent ? newCurrent : current;\n // fix the issue:\n // Once 'total' is 0, 'current' in 'onShowSizeChange' is 0, which is not correct.\n if (newCurrent === 0) {\n // eslint-disable-next-line prefer-destructuring\n current = _this.state.current;\n }\n if (typeof size === 'number') {\n if (!('pageSize' in _this.props)) {\n _this.setState({\n pageSize: size\n });\n }\n if (!('current' in _this.props)) {\n _this.setState({\n current: current,\n currentInputValue: current\n });\n }\n }\n _this.props.onShowSizeChange(current, size);\n if ('onChange' in _this.props && _this.props.onChange) {\n _this.props.onChange(current, size);\n }\n };\n _this.handleChange = function (page) {\n var _this$props2 = _this.props,\n disabled = _this$props2.disabled,\n onChange = _this$props2.onChange;\n var _this$state = _this.state,\n pageSize = _this$state.pageSize,\n current = _this$state.current,\n currentInputValue = _this$state.currentInputValue;\n if (_this.isValid(page) && !disabled) {\n var currentPage = calculatePage(undefined, _this.state, _this.props);\n var newPage = page;\n if (page > currentPage) {\n newPage = currentPage;\n } else if (page < 1) {\n newPage = 1;\n }\n if (!('current' in _this.props)) {\n _this.setState({\n current: newPage\n });\n }\n if (newPage !== currentInputValue) {\n _this.setState({\n currentInputValue: newPage\n });\n }\n onChange(newPage, pageSize);\n return newPage;\n }\n return current;\n };\n _this.prev = function () {\n if (_this.hasPrev()) {\n _this.handleChange(_this.state.current - 1);\n }\n };\n _this.next = function () {\n if (_this.hasNext()) {\n _this.handleChange(_this.state.current + 1);\n }\n };\n _this.jumpPrev = function () {\n _this.handleChange(_this.getJumpPrevPage());\n };\n _this.jumpNext = function () {\n _this.handleChange(_this.getJumpNextPage());\n };\n _this.hasPrev = function () {\n return _this.state.current > 1;\n };\n _this.hasNext = function () {\n return _this.state.current < calculatePage(undefined, _this.state, _this.props);\n };\n _this.runIfEnter = function (event, callback) {\n if (event.key === 'Enter' || event.charCode === 13) {\n for (var _len = arguments.length, restParams = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n restParams[_key - 2] = arguments[_key];\n }\n callback.apply(void 0, restParams);\n }\n };\n _this.runIfEnterPrev = function (e) {\n _this.runIfEnter(e, _this.prev);\n };\n _this.runIfEnterNext = function (e) {\n _this.runIfEnter(e, _this.next);\n };\n _this.runIfEnterJumpPrev = function (e) {\n _this.runIfEnter(e, _this.jumpPrev);\n };\n _this.runIfEnterJumpNext = function (e) {\n _this.runIfEnter(e, _this.jumpNext);\n };\n _this.handleGoTO = function (e) {\n if (e.keyCode === KEYCODE.ENTER || e.type === 'click') {\n _this.handleChange(_this.state.currentInputValue);\n }\n };\n _this.renderPrev = function (prevPage) {\n var _this$props3 = _this.props,\n prevIcon = _this$props3.prevIcon,\n itemRender = _this$props3.itemRender;\n var prevButton = itemRender(prevPage, 'prev', _this.getItemIcon(prevIcon, 'prev page'));\n var disabled = !_this.hasPrev();\n return /*#__PURE__*/isValidElement(prevButton) ? /*#__PURE__*/cloneElement(prevButton, {\n disabled: disabled\n }) : prevButton;\n };\n _this.renderNext = function (nextPage) {\n var _this$props4 = _this.props,\n nextIcon = _this$props4.nextIcon,\n itemRender = _this$props4.itemRender;\n var nextButton = itemRender(nextPage, 'next', _this.getItemIcon(nextIcon, 'next page'));\n var disabled = !_this.hasNext();\n return /*#__PURE__*/isValidElement(nextButton) ? /*#__PURE__*/cloneElement(nextButton, {\n disabled: disabled\n }) : nextButton;\n };\n var hasOnChange = props.onChange !== noop;\n var hasCurrent = ('current' in props);\n if (hasCurrent && !hasOnChange) {\n // eslint-disable-next-line no-console\n console.warn('Warning: You provided a `current` prop to a Pagination component without an `onChange` handler. This will render a read-only component.');\n }\n var _current = props.defaultCurrent;\n if ('current' in props) {\n // eslint-disable-next-line prefer-destructuring\n _current = props.current;\n }\n var _pageSize = props.defaultPageSize;\n if ('pageSize' in props) {\n // eslint-disable-next-line prefer-destructuring\n _pageSize = props.pageSize;\n }\n _current = Math.min(_current, calculatePage(_pageSize, undefined, props));\n _this.state = {\n current: _current,\n currentInputValue: _current,\n pageSize: _pageSize\n };\n return _this;\n }\n _createClass(Pagination, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(_, prevState) {\n // When current page change, fix focused style of prev item\n // A hacky solution of https://github.com/ant-design/ant-design/issues/8948\n var prefixCls = this.props.prefixCls;\n if (prevState.current !== this.state.current && this.paginationNode.current) {\n var lastCurrentNode = this.paginationNode.current.querySelector(\".\".concat(prefixCls, \"-item-\").concat(prevState.current));\n if (lastCurrentNode && document.activeElement === lastCurrentNode) {\n var _lastCurrentNode$blur;\n lastCurrentNode === null || lastCurrentNode === void 0 ? void 0 : (_lastCurrentNode$blur = lastCurrentNode.blur) === null || _lastCurrentNode$blur === void 0 ? void 0 : _lastCurrentNode$blur.call(lastCurrentNode);\n }\n }\n }\n }, {\n key: \"getValidValue\",\n value: function getValidValue(e) {\n var inputValue = e.target.value;\n var allPages = calculatePage(undefined, this.state, this.props);\n var currentInputValue = this.state.currentInputValue;\n var value;\n if (inputValue === '') {\n value = inputValue;\n // eslint-disable-next-line no-restricted-globals\n } else if (Number.isNaN(Number(inputValue))) {\n value = currentInputValue;\n } else if (inputValue >= allPages) {\n value = allPages;\n } else {\n value = Number(inputValue);\n }\n return value;\n }\n }, {\n key: \"getShowSizeChanger\",\n value: function getShowSizeChanger() {\n var _this$props5 = this.props,\n showSizeChanger = _this$props5.showSizeChanger,\n total = _this$props5.total,\n totalBoundaryShowSizeChanger = _this$props5.totalBoundaryShowSizeChanger;\n if (typeof showSizeChanger !== 'undefined') {\n return showSizeChanger;\n }\n return total > totalBoundaryShowSizeChanger;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props6 = this.props,\n prefixCls = _this$props6.prefixCls,\n className = _this$props6.className,\n style = _this$props6.style,\n disabled = _this$props6.disabled,\n hideOnSinglePage = _this$props6.hideOnSinglePage,\n total = _this$props6.total,\n locale = _this$props6.locale,\n showQuickJumper = _this$props6.showQuickJumper,\n showLessItems = _this$props6.showLessItems,\n showTitle = _this$props6.showTitle,\n showTotal = _this$props6.showTotal,\n simple = _this$props6.simple,\n itemRender = _this$props6.itemRender,\n showPrevNextJumpers = _this$props6.showPrevNextJumpers,\n jumpPrevIcon = _this$props6.jumpPrevIcon,\n jumpNextIcon = _this$props6.jumpNextIcon,\n selectComponentClass = _this$props6.selectComponentClass,\n selectPrefixCls = _this$props6.selectPrefixCls,\n pageSizeOptions = _this$props6.pageSizeOptions;\n var _this$state2 = this.state,\n current = _this$state2.current,\n pageSize = _this$state2.pageSize,\n currentInputValue = _this$state2.currentInputValue;\n // When hideOnSinglePage is true and there is only 1 page, hide the pager\n if (hideOnSinglePage === true && total <= pageSize) {\n return null;\n }\n var allPages = calculatePage(undefined, this.state, this.props);\n var pagerList = [];\n var jumpPrev = null;\n var jumpNext = null;\n var firstPager = null;\n var lastPager = null;\n var gotoButton = null;\n var goButton = showQuickJumper && showQuickJumper.goButton;\n var pageBufferSize = showLessItems ? 1 : 2;\n var prevPage = current - 1 > 0 ? current - 1 : 0;\n var nextPage = current + 1 < allPages ? current + 1 : allPages;\n var dataOrAriaAttributeProps = pickAttrs(this.props, {\n aria: true,\n data: true\n });\n var totalText = showTotal && /*#__PURE__*/React.createElement(\"li\", {\n className: \"\".concat(prefixCls, \"-total-text\")\n }, showTotal(total, [total === 0 ? 0 : (current - 1) * pageSize + 1, current * pageSize > total ? total : current * pageSize]));\n if (simple) {\n if (goButton) {\n if (typeof goButton === 'boolean') {\n gotoButton = /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n onClick: this.handleGoTO,\n onKeyUp: this.handleGoTO\n }, locale.jump_to_confirm);\n } else {\n gotoButton = /*#__PURE__*/React.createElement(\"span\", {\n onClick: this.handleGoTO,\n onKeyUp: this.handleGoTO\n }, goButton);\n }\n gotoButton = /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? \"\".concat(locale.jump_to).concat(current, \"/\").concat(allPages) : null,\n className: \"\".concat(prefixCls, \"-simple-pager\")\n }, gotoButton);\n }\n return /*#__PURE__*/React.createElement(\"ul\", _extends({\n className: classNames(prefixCls, \"\".concat(prefixCls, \"-simple\"), _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), disabled), className),\n style: style,\n ref: this.paginationNode\n }, dataOrAriaAttributeProps), totalText, /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? locale.prev_page : null,\n onClick: this.prev,\n tabIndex: this.hasPrev() ? 0 : null,\n onKeyPress: this.runIfEnterPrev,\n className: classNames(\"\".concat(prefixCls, \"-prev\"), _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), !this.hasPrev())),\n \"aria-disabled\": !this.hasPrev()\n }, this.renderPrev(prevPage)), /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? \"\".concat(current, \"/\").concat(allPages) : null,\n className: \"\".concat(prefixCls, \"-simple-pager\")\n }, /*#__PURE__*/React.createElement(\"input\", {\n type: \"text\",\n value: currentInputValue,\n disabled: disabled,\n onKeyDown: this.handleKeyDown,\n onKeyUp: this.handleKeyUp,\n onChange: this.handleKeyUp,\n onBlur: this.handleBlur,\n size: 3\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-slash\")\n }, \"/\"), allPages), /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? locale.next_page : null,\n onClick: this.next,\n tabIndex: this.hasPrev() ? 0 : null,\n onKeyPress: this.runIfEnterNext,\n className: classNames(\"\".concat(prefixCls, \"-next\"), _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), !this.hasNext())),\n \"aria-disabled\": !this.hasNext()\n }, this.renderNext(nextPage)), gotoButton);\n }\n if (allPages <= 3 + pageBufferSize * 2) {\n var pagerProps = {\n locale: locale,\n rootPrefixCls: prefixCls,\n onClick: this.handleChange,\n onKeyPress: this.runIfEnter,\n showTitle: showTitle,\n itemRender: itemRender\n };\n if (!allPages) {\n pagerList.push( /*#__PURE__*/React.createElement(Pager, _extends({}, pagerProps, {\n key: \"noPager\",\n page: 1,\n className: \"\".concat(prefixCls, \"-item-disabled\")\n })));\n }\n for (var i = 1; i <= allPages; i += 1) {\n var active = current === i;\n pagerList.push( /*#__PURE__*/React.createElement(Pager, _extends({}, pagerProps, {\n key: i,\n page: i,\n active: active\n })));\n }\n } else {\n var prevItemTitle = showLessItems ? locale.prev_3 : locale.prev_5;\n var nextItemTitle = showLessItems ? locale.next_3 : locale.next_5;\n if (showPrevNextJumpers) {\n jumpPrev = /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? prevItemTitle : null,\n key: \"prev\",\n onClick: this.jumpPrev,\n tabIndex: 0,\n onKeyPress: this.runIfEnterJumpPrev,\n className: classNames(\"\".concat(prefixCls, \"-jump-prev\"), _defineProperty({}, \"\".concat(prefixCls, \"-jump-prev-custom-icon\"), !!jumpPrevIcon))\n }, itemRender(this.getJumpPrevPage(), 'jump-prev', this.getItemIcon(jumpPrevIcon, 'prev page')));\n jumpNext = /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? nextItemTitle : null,\n key: \"next\",\n tabIndex: 0,\n onClick: this.jumpNext,\n onKeyPress: this.runIfEnterJumpNext,\n className: classNames(\"\".concat(prefixCls, \"-jump-next\"), _defineProperty({}, \"\".concat(prefixCls, \"-jump-next-custom-icon\"), !!jumpNextIcon))\n }, itemRender(this.getJumpNextPage(), 'jump-next', this.getItemIcon(jumpNextIcon, 'next page')));\n }\n lastPager = /*#__PURE__*/React.createElement(Pager, {\n locale: locale,\n last: true,\n rootPrefixCls: prefixCls,\n onClick: this.handleChange,\n onKeyPress: this.runIfEnter,\n key: allPages,\n page: allPages,\n active: false,\n showTitle: showTitle,\n itemRender: itemRender\n });\n firstPager = /*#__PURE__*/React.createElement(Pager, {\n locale: locale,\n rootPrefixCls: prefixCls,\n onClick: this.handleChange,\n onKeyPress: this.runIfEnter,\n key: 1,\n page: 1,\n active: false,\n showTitle: showTitle,\n itemRender: itemRender\n });\n var left = Math.max(1, current - pageBufferSize);\n var right = Math.min(current + pageBufferSize, allPages);\n if (current - 1 <= pageBufferSize) {\n right = 1 + pageBufferSize * 2;\n }\n if (allPages - current <= pageBufferSize) {\n left = allPages - pageBufferSize * 2;\n }\n for (var _i = left; _i <= right; _i += 1) {\n var _active = current === _i;\n pagerList.push( /*#__PURE__*/React.createElement(Pager, {\n locale: locale,\n rootPrefixCls: prefixCls,\n onClick: this.handleChange,\n onKeyPress: this.runIfEnter,\n key: _i,\n page: _i,\n active: _active,\n showTitle: showTitle,\n itemRender: itemRender\n }));\n }\n if (current - 1 >= pageBufferSize * 2 && current !== 1 + 2) {\n pagerList[0] = /*#__PURE__*/cloneElement(pagerList[0], {\n className: \"\".concat(prefixCls, \"-item-after-jump-prev\")\n });\n pagerList.unshift(jumpPrev);\n }\n if (allPages - current >= pageBufferSize * 2 && current !== allPages - 2) {\n pagerList[pagerList.length - 1] = /*#__PURE__*/cloneElement(pagerList[pagerList.length - 1], {\n className: \"\".concat(prefixCls, \"-item-before-jump-next\")\n });\n pagerList.push(jumpNext);\n }\n if (left !== 1) {\n pagerList.unshift(firstPager);\n }\n if (right !== allPages) {\n pagerList.push(lastPager);\n }\n }\n var prevDisabled = !this.hasPrev() || !allPages;\n var nextDisabled = !this.hasNext() || !allPages;\n return /*#__PURE__*/React.createElement(\"ul\", _extends({\n className: classNames(prefixCls, className, _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), disabled)),\n style: style,\n ref: this.paginationNode\n }, dataOrAriaAttributeProps), totalText, /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? locale.prev_page : null,\n onClick: this.prev,\n tabIndex: prevDisabled ? null : 0,\n onKeyPress: this.runIfEnterPrev,\n className: classNames(\"\".concat(prefixCls, \"-prev\"), _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), prevDisabled)),\n \"aria-disabled\": prevDisabled\n }, this.renderPrev(prevPage)), pagerList, /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? locale.next_page : null,\n onClick: this.next,\n tabIndex: nextDisabled ? null : 0,\n onKeyPress: this.runIfEnterNext,\n className: classNames(\"\".concat(prefixCls, \"-next\"), _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), nextDisabled)),\n \"aria-disabled\": nextDisabled\n }, this.renderNext(nextPage)), /*#__PURE__*/React.createElement(Options, {\n disabled: disabled,\n locale: locale,\n rootPrefixCls: prefixCls,\n selectComponentClass: selectComponentClass,\n selectPrefixCls: selectPrefixCls,\n changeSize: this.getShowSizeChanger() ? this.changePageSize : null,\n current: current,\n pageSize: pageSize,\n pageSizeOptions: pageSizeOptions,\n quickGo: this.shouldDisplayQuickJumper() ? this.handleChange : null,\n goButton: goButton\n }));\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(props, prevState) {\n var newState = {};\n if ('current' in props) {\n newState.current = props.current;\n if (props.current !== prevState.current) {\n newState.currentInputValue = newState.current;\n }\n }\n if ('pageSize' in props && props.pageSize !== prevState.pageSize) {\n var current = prevState.current;\n var newCurrent = calculatePage(props.pageSize, prevState, props);\n current = current > newCurrent ? newCurrent : current;\n if (!('current' in props)) {\n newState.current = current;\n newState.currentInputValue = current;\n }\n newState.pageSize = props.pageSize;\n }\n return newState;\n }\n }]);\n return Pagination;\n}(React.Component);\nPagination.defaultProps = {\n defaultCurrent: 1,\n total: 0,\n defaultPageSize: 10,\n onChange: noop,\n className: '',\n selectPrefixCls: 'rc-select',\n prefixCls: 'rc-pagination',\n selectComponentClass: null,\n hideOnSinglePage: false,\n showPrevNextJumpers: true,\n showQuickJumper: false,\n showLessItems: false,\n showTitle: true,\n onShowSizeChange: noop,\n locale: LOCALE,\n style: {},\n itemRender: defaultItemRender,\n totalBoundaryShowSizeChanger: 50\n};\nexport default Pagination;","export default {\n // Options.jsx\n items_per_page: '条/页',\n jump_to: '跳至',\n jump_to_confirm: '确定',\n page: '页',\n // Pagination.jsx\n prev_page: '上一页',\n next_page: '下一页',\n prev_5: '向前 5 页',\n next_5: '向后 5 页',\n prev_3: '向前 3 页',\n next_3: '向后 3 页',\n page_size: '页码'\n};","/**\n * BaseSelect provide some parsed data into context.\n * You can use this hooks to get them.\n */\n\nimport * as React from 'react';\nexport var BaseSelectContext = /*#__PURE__*/React.createContext(null);\nexport default function useBaseProps() {\n return React.useContext(BaseSelectContext);\n}","import * as React from 'react';\n\n/**\n * Locker return cached mark.\n * If set to `true`, will return `true` in a short time even if set `false`.\n * If set to `false` and then set to `true`, will change to `true`.\n * And after time duration, it will back to `null` automatically.\n */\nexport default function useLock() {\n var duration = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 250;\n var lockRef = React.useRef(null);\n var timeoutRef = React.useRef(null);\n\n // Clean up\n React.useEffect(function () {\n return function () {\n window.clearTimeout(timeoutRef.current);\n };\n }, []);\n function doLock(locked) {\n if (locked || lockRef.current === null) {\n lockRef.current = locked;\n }\n window.clearTimeout(timeoutRef.current);\n timeoutRef.current = window.setTimeout(function () {\n lockRef.current = null;\n }, duration);\n }\n return [function () {\n return lockRef.current;\n }, doLock];\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"invalidate\", \"item\", \"renderItem\", \"responsive\", \"responsiveDisabled\", \"registerSize\", \"itemKey\", \"className\", \"style\", \"children\", \"display\", \"order\", \"component\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport ResizeObserver from 'rc-resize-observer';\n// Use shared variable to save bundle size\nvar UNDEFINED = undefined;\nfunction InternalItem(props, ref) {\n var prefixCls = props.prefixCls,\n invalidate = props.invalidate,\n item = props.item,\n renderItem = props.renderItem,\n responsive = props.responsive,\n responsiveDisabled = props.responsiveDisabled,\n registerSize = props.registerSize,\n itemKey = props.itemKey,\n className = props.className,\n style = props.style,\n children = props.children,\n display = props.display,\n order = props.order,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'div' : _props$component,\n restProps = _objectWithoutProperties(props, _excluded);\n var mergedHidden = responsive && !display;\n // ================================ Effect ================================\n function internalRegisterSize(width) {\n registerSize(itemKey, width);\n }\n React.useEffect(function () {\n return function () {\n internalRegisterSize(null);\n };\n }, []);\n // ================================ Render ================================\n var childNode = renderItem && item !== UNDEFINED ? renderItem(item) : children;\n var overflowStyle;\n if (!invalidate) {\n overflowStyle = {\n opacity: mergedHidden ? 0 : 1,\n height: mergedHidden ? 0 : UNDEFINED,\n overflowY: mergedHidden ? 'hidden' : UNDEFINED,\n order: responsive ? order : UNDEFINED,\n pointerEvents: mergedHidden ? 'none' : UNDEFINED,\n position: mergedHidden ? 'absolute' : UNDEFINED\n };\n }\n var overflowProps = {};\n if (mergedHidden) {\n overflowProps['aria-hidden'] = true;\n }\n var itemNode = /*#__PURE__*/React.createElement(Component, _extends({\n className: classNames(!invalidate && prefixCls, className),\n style: _objectSpread(_objectSpread({}, overflowStyle), style)\n }, overflowProps, restProps, {\n ref: ref\n }), childNode);\n if (responsive) {\n itemNode = /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: function onResize(_ref) {\n var offsetWidth = _ref.offsetWidth;\n internalRegisterSize(offsetWidth);\n },\n disabled: responsiveDisabled\n }, itemNode);\n }\n return itemNode;\n}\nvar Item = /*#__PURE__*/React.forwardRef(InternalItem);\nItem.displayName = 'Item';\nexport default Item;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport useEvent from \"rc-util/es/hooks/useEvent\";\nimport * as React from 'react';\nimport { unstable_batchedUpdates } from 'react-dom';\nimport channelUpdate from './channelUpdate';\n/**\n * Batcher for record any `useEffectState` need update.\n */\nexport function useBatcher() {\n // Updater Trigger\n var updateFuncRef = React.useRef(null);\n // Notify update\n var notifyEffectUpdate = function notifyEffectUpdate(callback) {\n if (!updateFuncRef.current) {\n updateFuncRef.current = [];\n channelUpdate(function () {\n unstable_batchedUpdates(function () {\n updateFuncRef.current.forEach(function (fn) {\n fn();\n });\n updateFuncRef.current = null;\n });\n });\n }\n updateFuncRef.current.push(callback);\n };\n return notifyEffectUpdate;\n}\n/**\n * Trigger state update by `useLayoutEffect` to save perf.\n */\nexport default function useEffectState(notifyEffectUpdate, defaultValue) {\n // Value\n var _React$useState = React.useState(defaultValue),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n stateValue = _React$useState2[0],\n setStateValue = _React$useState2[1];\n // Set State\n var setEffectVal = useEvent(function (nextValue) {\n notifyEffectUpdate(function () {\n setStateValue(nextValue);\n });\n });\n return [stateValue, setEffectVal];\n}","import raf from \"rc-util/es/raf\";\nexport default function channelUpdate(callback) {\n if (typeof MessageChannel === 'undefined') {\n raf(callback);\n } else {\n var channel = new MessageChannel();\n channel.port1.onmessage = function () {\n return callback();\n };\n channel.port2.postMessage(undefined);\n }\n}","import React from 'react';\nexport var OverflowContext = /*#__PURE__*/React.createContext(null);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"component\"],\n _excluded2 = [\"className\"],\n _excluded3 = [\"className\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport Item from './Item';\nimport { OverflowContext } from './context';\nvar InternalRawItem = function InternalRawItem(props, ref) {\n var context = React.useContext(OverflowContext);\n // Render directly when context not provided\n if (!context) {\n var _props$component = props.component,\n Component = _props$component === void 0 ? 'div' : _props$component,\n _restProps = _objectWithoutProperties(props, _excluded);\n return /*#__PURE__*/React.createElement(Component, _extends({}, _restProps, {\n ref: ref\n }));\n }\n var contextClassName = context.className,\n restContext = _objectWithoutProperties(context, _excluded2);\n var className = props.className,\n restProps = _objectWithoutProperties(props, _excluded3);\n // Do not pass context to sub item to avoid multiple measure\n return /*#__PURE__*/React.createElement(OverflowContext.Provider, {\n value: null\n }, /*#__PURE__*/React.createElement(Item, _extends({\n ref: ref,\n className: classNames(contextClassName, className)\n }, restContext, restProps)));\n};\nvar RawItem = /*#__PURE__*/React.forwardRef(InternalRawItem);\nRawItem.displayName = 'RawItem';\nexport default RawItem;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"data\", \"renderItem\", \"renderRawItem\", \"itemKey\", \"itemWidth\", \"ssr\", \"style\", \"className\", \"maxCount\", \"renderRest\", \"renderRawRest\", \"suffix\", \"component\", \"itemComponent\", \"onVisibleChange\"];\nimport * as React from 'react';\nimport { useState, useMemo, useCallback } from 'react';\nimport classNames from 'classnames';\nimport ResizeObserver from 'rc-resize-observer';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport Item from './Item';\nimport useEffectState, { useBatcher } from './hooks/useEffectState';\nimport RawItem from './RawItem';\nimport { OverflowContext } from './context';\nvar RESPONSIVE = 'responsive';\nvar INVALIDATE = 'invalidate';\nexport { OverflowContext } from './context';\nfunction defaultRenderRest(omittedItems) {\n return \"+ \".concat(omittedItems.length, \" ...\");\n}\nfunction Overflow(props, ref) {\n var _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-overflow' : _props$prefixCls,\n _props$data = props.data,\n data = _props$data === void 0 ? [] : _props$data,\n renderItem = props.renderItem,\n renderRawItem = props.renderRawItem,\n itemKey = props.itemKey,\n _props$itemWidth = props.itemWidth,\n itemWidth = _props$itemWidth === void 0 ? 10 : _props$itemWidth,\n ssr = props.ssr,\n style = props.style,\n className = props.className,\n maxCount = props.maxCount,\n renderRest = props.renderRest,\n renderRawRest = props.renderRawRest,\n suffix = props.suffix,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'div' : _props$component,\n itemComponent = props.itemComponent,\n onVisibleChange = props.onVisibleChange,\n restProps = _objectWithoutProperties(props, _excluded);\n var fullySSR = ssr === 'full';\n var notifyEffectUpdate = useBatcher();\n var _useEffectState = useEffectState(notifyEffectUpdate, null),\n _useEffectState2 = _slicedToArray(_useEffectState, 2),\n containerWidth = _useEffectState2[0],\n setContainerWidth = _useEffectState2[1];\n var mergedContainerWidth = containerWidth || 0;\n var _useEffectState3 = useEffectState(notifyEffectUpdate, new Map()),\n _useEffectState4 = _slicedToArray(_useEffectState3, 2),\n itemWidths = _useEffectState4[0],\n setItemWidths = _useEffectState4[1];\n var _useEffectState5 = useEffectState(notifyEffectUpdate, 0),\n _useEffectState6 = _slicedToArray(_useEffectState5, 2),\n prevRestWidth = _useEffectState6[0],\n setPrevRestWidth = _useEffectState6[1];\n var _useEffectState7 = useEffectState(notifyEffectUpdate, 0),\n _useEffectState8 = _slicedToArray(_useEffectState7, 2),\n restWidth = _useEffectState8[0],\n setRestWidth = _useEffectState8[1];\n var _useEffectState9 = useEffectState(notifyEffectUpdate, 0),\n _useEffectState10 = _slicedToArray(_useEffectState9, 2),\n suffixWidth = _useEffectState10[0],\n setSuffixWidth = _useEffectState10[1];\n var _useState = useState(null),\n _useState2 = _slicedToArray(_useState, 2),\n suffixFixedStart = _useState2[0],\n setSuffixFixedStart = _useState2[1];\n var _useState3 = useState(null),\n _useState4 = _slicedToArray(_useState3, 2),\n displayCount = _useState4[0],\n setDisplayCount = _useState4[1];\n var mergedDisplayCount = React.useMemo(function () {\n if (displayCount === null && fullySSR) {\n return Number.MAX_SAFE_INTEGER;\n }\n return displayCount || 0;\n }, [displayCount, containerWidth]);\n var _useState5 = useState(false),\n _useState6 = _slicedToArray(_useState5, 2),\n restReady = _useState6[0],\n setRestReady = _useState6[1];\n var itemPrefixCls = \"\".concat(prefixCls, \"-item\");\n // Always use the max width to avoid blink\n var mergedRestWidth = Math.max(prevRestWidth, restWidth);\n // ================================= Data =================================\n var isResponsive = maxCount === RESPONSIVE;\n var shouldResponsive = data.length && isResponsive;\n var invalidate = maxCount === INVALIDATE;\n /**\n * When is `responsive`, we will always render rest node to get the real width of it for calculation\n */\n var showRest = shouldResponsive || typeof maxCount === 'number' && data.length > maxCount;\n var mergedData = useMemo(function () {\n var items = data;\n if (shouldResponsive) {\n if (containerWidth === null && fullySSR) {\n items = data;\n } else {\n items = data.slice(0, Math.min(data.length, mergedContainerWidth / itemWidth));\n }\n } else if (typeof maxCount === 'number') {\n items = data.slice(0, maxCount);\n }\n return items;\n }, [data, itemWidth, containerWidth, maxCount, shouldResponsive]);\n var omittedItems = useMemo(function () {\n if (shouldResponsive) {\n return data.slice(mergedDisplayCount + 1);\n }\n return data.slice(mergedData.length);\n }, [data, mergedData, shouldResponsive, mergedDisplayCount]);\n // ================================= Item =================================\n var getKey = useCallback(function (item, index) {\n var _ref;\n if (typeof itemKey === 'function') {\n return itemKey(item);\n }\n return (_ref = itemKey && (item === null || item === void 0 ? void 0 : item[itemKey])) !== null && _ref !== void 0 ? _ref : index;\n }, [itemKey]);\n var mergedRenderItem = useCallback(renderItem || function (item) {\n return item;\n }, [renderItem]);\n function updateDisplayCount(count, suffixFixedStartVal, notReady) {\n // React 18 will sync render even when the value is same in some case.\n // We take `mergedData` as deps which may cause dead loop if it's dynamic generate.\n // ref: https://github.com/ant-design/ant-design/issues/36559\n if (displayCount === count && (suffixFixedStartVal === undefined || suffixFixedStartVal === suffixFixedStart)) {\n return;\n }\n setDisplayCount(count);\n if (!notReady) {\n setRestReady(count < data.length - 1);\n onVisibleChange === null || onVisibleChange === void 0 ? void 0 : onVisibleChange(count);\n }\n if (suffixFixedStartVal !== undefined) {\n setSuffixFixedStart(suffixFixedStartVal);\n }\n }\n // ================================= Size =================================\n function onOverflowResize(_, element) {\n setContainerWidth(element.clientWidth);\n }\n function registerSize(key, width) {\n setItemWidths(function (origin) {\n var clone = new Map(origin);\n if (width === null) {\n clone.delete(key);\n } else {\n clone.set(key, width);\n }\n return clone;\n });\n }\n function registerOverflowSize(_, width) {\n setRestWidth(width);\n setPrevRestWidth(restWidth);\n }\n function registerSuffixSize(_, width) {\n setSuffixWidth(width);\n }\n // ================================ Effect ================================\n function getItemWidth(index) {\n return itemWidths.get(getKey(mergedData[index], index));\n }\n useLayoutEffect(function () {\n if (mergedContainerWidth && typeof mergedRestWidth === 'number' && mergedData) {\n var totalWidth = suffixWidth;\n var len = mergedData.length;\n var lastIndex = len - 1;\n // When data count change to 0, reset this since not loop will reach\n if (!len) {\n updateDisplayCount(0, null);\n return;\n }\n for (var i = 0; i < len; i += 1) {\n var currentItemWidth = getItemWidth(i);\n // Fully will always render\n if (fullySSR) {\n currentItemWidth = currentItemWidth || 0;\n }\n // Break since data not ready\n if (currentItemWidth === undefined) {\n updateDisplayCount(i - 1, undefined, true);\n break;\n }\n // Find best match\n totalWidth += currentItemWidth;\n if (\n // Only one means `totalWidth` is the final width\n lastIndex === 0 && totalWidth <= mergedContainerWidth ||\n // Last two width will be the final width\n i === lastIndex - 1 && totalWidth + getItemWidth(lastIndex) <= mergedContainerWidth) {\n // Additional check if match the end\n updateDisplayCount(lastIndex, null);\n break;\n } else if (totalWidth + mergedRestWidth > mergedContainerWidth) {\n // Can not hold all the content to show rest\n updateDisplayCount(i - 1, totalWidth - currentItemWidth - suffixWidth + restWidth);\n break;\n }\n }\n if (suffix && getItemWidth(0) + suffixWidth > mergedContainerWidth) {\n setSuffixFixedStart(null);\n }\n }\n }, [mergedContainerWidth, itemWidths, restWidth, suffixWidth, getKey, mergedData]);\n // ================================ Render ================================\n var displayRest = restReady && !!omittedItems.length;\n var suffixStyle = {};\n if (suffixFixedStart !== null && shouldResponsive) {\n suffixStyle = {\n position: 'absolute',\n left: suffixFixedStart,\n top: 0\n };\n }\n var itemSharedProps = {\n prefixCls: itemPrefixCls,\n responsive: shouldResponsive,\n component: itemComponent,\n invalidate: invalidate\n };\n // >>>>> Choice render fun by `renderRawItem`\n var internalRenderItemNode = renderRawItem ? function (item, index) {\n var key = getKey(item, index);\n return /*#__PURE__*/React.createElement(OverflowContext.Provider, {\n key: key,\n value: _objectSpread(_objectSpread({}, itemSharedProps), {}, {\n order: index,\n item: item,\n itemKey: key,\n registerSize: registerSize,\n display: index <= mergedDisplayCount\n })\n }, renderRawItem(item, index));\n } : function (item, index) {\n var key = getKey(item, index);\n return /*#__PURE__*/React.createElement(Item, _extends({}, itemSharedProps, {\n order: index,\n key: key,\n item: item,\n renderItem: mergedRenderItem,\n itemKey: key,\n registerSize: registerSize,\n display: index <= mergedDisplayCount\n }));\n };\n // >>>>> Rest node\n var restNode;\n var restContextProps = {\n order: displayRest ? mergedDisplayCount : Number.MAX_SAFE_INTEGER,\n className: \"\".concat(itemPrefixCls, \"-rest\"),\n registerSize: registerOverflowSize,\n display: displayRest\n };\n if (!renderRawRest) {\n var mergedRenderRest = renderRest || defaultRenderRest;\n restNode = /*#__PURE__*/React.createElement(Item, _extends({}, itemSharedProps, restContextProps), typeof mergedRenderRest === 'function' ? mergedRenderRest(omittedItems) : mergedRenderRest);\n } else if (renderRawRest) {\n restNode = /*#__PURE__*/React.createElement(OverflowContext.Provider, {\n value: _objectSpread(_objectSpread({}, itemSharedProps), restContextProps)\n }, renderRawRest(omittedItems));\n }\n var overflowNode = /*#__PURE__*/React.createElement(Component, _extends({\n className: classNames(!invalidate && prefixCls, className),\n style: style,\n ref: ref\n }, restProps), mergedData.map(internalRenderItemNode), showRest ? restNode : null, suffix && /*#__PURE__*/React.createElement(Item, _extends({}, itemSharedProps, {\n responsive: isResponsive,\n responsiveDisabled: !shouldResponsive,\n order: mergedDisplayCount,\n className: \"\".concat(itemPrefixCls, \"-suffix\"),\n registerSize: registerSuffixSize,\n display: true,\n style: suffixStyle\n }), suffix));\n if (isResponsive) {\n overflowNode = /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: onOverflowResize,\n disabled: !shouldResponsive\n }, overflowNode);\n }\n return overflowNode;\n}\nvar ForwardOverflow = /*#__PURE__*/React.forwardRef(Overflow);\nForwardOverflow.displayName = 'Overflow';\nForwardOverflow.Item = RawItem;\nForwardOverflow.RESPONSIVE = RESPONSIVE;\nForwardOverflow.INVALIDATE = INVALIDATE;\n// Convert to generic type\nexport default ForwardOverflow;","import Overflow from './Overflow';\nexport default Overflow;","import * as React from 'react';\nimport classNames from 'classnames';\nvar TransBtn = function TransBtn(_ref) {\n var className = _ref.className,\n customizeIcon = _ref.customizeIcon,\n customizeIconProps = _ref.customizeIconProps,\n _onMouseDown = _ref.onMouseDown,\n onClick = _ref.onClick,\n children = _ref.children;\n var icon;\n if (typeof customizeIcon === 'function') {\n icon = customizeIcon(customizeIconProps);\n } else {\n icon = customizeIcon;\n }\n return /*#__PURE__*/React.createElement(\"span\", {\n className: className,\n onMouseDown: function onMouseDown(event) {\n event.preventDefault();\n if (_onMouseDown) {\n _onMouseDown(event);\n }\n },\n style: {\n userSelect: 'none',\n WebkitUserSelect: 'none'\n },\n unselectable: \"on\",\n onClick: onClick,\n \"aria-hidden\": true\n }, icon !== undefined ? icon : /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(className.split(/\\s+/).map(function (cls) {\n return \"\".concat(cls, \"-icon\");\n }))\n }, children));\n};\nexport default TransBtn;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { composeRef } from \"rc-util/es/ref\";\nimport { warning } from \"rc-util/es/warning\";\nvar Input = function Input(_ref, ref) {\n var _inputNode2, _inputNode2$props;\n var prefixCls = _ref.prefixCls,\n id = _ref.id,\n inputElement = _ref.inputElement,\n disabled = _ref.disabled,\n tabIndex = _ref.tabIndex,\n autoFocus = _ref.autoFocus,\n autoComplete = _ref.autoComplete,\n editable = _ref.editable,\n activeDescendantId = _ref.activeDescendantId,\n value = _ref.value,\n maxLength = _ref.maxLength,\n _onKeyDown = _ref.onKeyDown,\n _onMouseDown = _ref.onMouseDown,\n _onChange = _ref.onChange,\n onPaste = _ref.onPaste,\n _onCompositionStart = _ref.onCompositionStart,\n _onCompositionEnd = _ref.onCompositionEnd,\n open = _ref.open,\n attrs = _ref.attrs;\n var inputNode = inputElement || /*#__PURE__*/React.createElement(\"input\", null);\n var _inputNode = inputNode,\n originRef = _inputNode.ref,\n originProps = _inputNode.props;\n var onOriginKeyDown = originProps.onKeyDown,\n onOriginChange = originProps.onChange,\n onOriginMouseDown = originProps.onMouseDown,\n onOriginCompositionStart = originProps.onCompositionStart,\n onOriginCompositionEnd = originProps.onCompositionEnd,\n style = originProps.style;\n warning(!('maxLength' in inputNode.props), \"Passing 'maxLength' to input element directly may not work because input in BaseSelect is controlled.\");\n inputNode = /*#__PURE__*/React.cloneElement(inputNode, _objectSpread(_objectSpread(_objectSpread({\n type: 'search'\n }, originProps), {}, {\n // Override over origin props\n id: id,\n ref: composeRef(ref, originRef),\n disabled: disabled,\n tabIndex: tabIndex,\n autoComplete: autoComplete || 'off',\n autoFocus: autoFocus,\n className: classNames(\"\".concat(prefixCls, \"-selection-search-input\"), (_inputNode2 = inputNode) === null || _inputNode2 === void 0 ? void 0 : (_inputNode2$props = _inputNode2.props) === null || _inputNode2$props === void 0 ? void 0 : _inputNode2$props.className),\n role: 'combobox',\n 'aria-label': 'Search',\n 'aria-expanded': open,\n 'aria-haspopup': 'listbox',\n 'aria-owns': \"\".concat(id, \"_list\"),\n 'aria-autocomplete': 'list',\n 'aria-controls': \"\".concat(id, \"_list\"),\n 'aria-activedescendant': open ? activeDescendantId : undefined\n }, attrs), {}, {\n value: editable ? value : '',\n maxLength: maxLength,\n readOnly: !editable,\n unselectable: !editable ? 'on' : null,\n style: _objectSpread(_objectSpread({}, style), {}, {\n opacity: editable ? null : 0\n }),\n onKeyDown: function onKeyDown(event) {\n _onKeyDown(event);\n if (onOriginKeyDown) {\n onOriginKeyDown(event);\n }\n },\n onMouseDown: function onMouseDown(event) {\n _onMouseDown(event);\n if (onOriginMouseDown) {\n onOriginMouseDown(event);\n }\n },\n onChange: function onChange(event) {\n _onChange(event);\n if (onOriginChange) {\n onOriginChange(event);\n }\n },\n onCompositionStart: function onCompositionStart(event) {\n _onCompositionStart(event);\n if (onOriginCompositionStart) {\n onOriginCompositionStart(event);\n }\n },\n onCompositionEnd: function onCompositionEnd(event) {\n _onCompositionEnd(event);\n if (onOriginCompositionEnd) {\n onOriginCompositionEnd(event);\n }\n },\n onPaste: onPaste\n }));\n return inputNode;\n};\nvar RefInput = /*#__PURE__*/React.forwardRef(Input);\nRefInput.displayName = 'Input';\nexport default RefInput;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nexport function toArray(value) {\n if (Array.isArray(value)) {\n return value;\n }\n return value !== undefined ? [value] : [];\n}\nexport var isClient = typeof window !== 'undefined' && window.document && window.document.documentElement;\n\n/** Is client side and not jsdom */\nexport var isBrowserClient = process.env.NODE_ENV !== 'test' && isClient;\nexport function hasValue(value) {\n return value !== undefined && value !== null;\n}\n\n/** combo mode no value judgment function */\nexport function isComboNoValue(value) {\n return !value && value !== 0;\n}\nfunction isTitleType(title) {\n return ['string', 'number'].includes(_typeof(title));\n}\nexport function getTitle(item) {\n var title = undefined;\n if (item) {\n if (isTitleType(item.title)) {\n title = item.title.toString();\n } else if (isTitleType(item.label)) {\n title = item.label.toString();\n }\n }\n return title;\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useState } from 'react';\nimport classNames from 'classnames';\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nimport Overflow from 'rc-overflow';\nimport TransBtn from \"../TransBtn\";\nimport Input from \"./Input\";\nimport useLayoutEffect from \"../hooks/useLayoutEffect\";\nimport { getTitle } from \"../utils/commonUtil\";\nfunction itemKey(value) {\n var _value$key;\n return (_value$key = value.key) !== null && _value$key !== void 0 ? _value$key : value.value;\n}\nvar onPreventMouseDown = function onPreventMouseDown(event) {\n event.preventDefault();\n event.stopPropagation();\n};\nvar SelectSelector = function SelectSelector(props) {\n var id = props.id,\n prefixCls = props.prefixCls,\n values = props.values,\n open = props.open,\n searchValue = props.searchValue,\n autoClearSearchValue = props.autoClearSearchValue,\n inputRef = props.inputRef,\n placeholder = props.placeholder,\n disabled = props.disabled,\n mode = props.mode,\n showSearch = props.showSearch,\n autoFocus = props.autoFocus,\n autoComplete = props.autoComplete,\n activeDescendantId = props.activeDescendantId,\n tabIndex = props.tabIndex,\n removeIcon = props.removeIcon,\n maxTagCount = props.maxTagCount,\n maxTagTextLength = props.maxTagTextLength,\n _props$maxTagPlacehol = props.maxTagPlaceholder,\n maxTagPlaceholder = _props$maxTagPlacehol === void 0 ? function (omittedValues) {\n return \"+ \".concat(omittedValues.length, \" ...\");\n } : _props$maxTagPlacehol,\n tagRender = props.tagRender,\n onToggleOpen = props.onToggleOpen,\n onRemove = props.onRemove,\n onInputChange = props.onInputChange,\n onInputPaste = props.onInputPaste,\n onInputKeyDown = props.onInputKeyDown,\n onInputMouseDown = props.onInputMouseDown,\n onInputCompositionStart = props.onInputCompositionStart,\n onInputCompositionEnd = props.onInputCompositionEnd;\n var measureRef = React.useRef(null);\n var _useState = useState(0),\n _useState2 = _slicedToArray(_useState, 2),\n inputWidth = _useState2[0],\n setInputWidth = _useState2[1];\n var _useState3 = useState(false),\n _useState4 = _slicedToArray(_useState3, 2),\n focused = _useState4[0],\n setFocused = _useState4[1];\n var selectionPrefixCls = \"\".concat(prefixCls, \"-selection\");\n\n // ===================== Search ======================\n var inputValue = open || mode === \"multiple\" && autoClearSearchValue === false || mode === 'tags' ? searchValue : '';\n var inputEditable = mode === 'tags' || mode === \"multiple\" && autoClearSearchValue === false || showSearch && (open || focused);\n\n // We measure width and set to the input immediately\n useLayoutEffect(function () {\n setInputWidth(measureRef.current.scrollWidth);\n }, [inputValue]);\n\n // ===================== Render ======================\n // >>> Render Selector Node. Includes Item & Rest\n function defaultRenderSelector(item, content, itemDisabled, closable, onClose) {\n return /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(\"\".concat(selectionPrefixCls, \"-item\"), _defineProperty({}, \"\".concat(selectionPrefixCls, \"-item-disabled\"), itemDisabled)),\n title: getTitle(item)\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(selectionPrefixCls, \"-item-content\")\n }, content), closable && /*#__PURE__*/React.createElement(TransBtn, {\n className: \"\".concat(selectionPrefixCls, \"-item-remove\"),\n onMouseDown: onPreventMouseDown,\n onClick: onClose,\n customizeIcon: removeIcon\n }, \"\\xD7\"));\n }\n function customizeRenderSelector(value, content, itemDisabled, closable, onClose) {\n var onMouseDown = function onMouseDown(e) {\n onPreventMouseDown(e);\n onToggleOpen(!open);\n };\n return /*#__PURE__*/React.createElement(\"span\", {\n onMouseDown: onMouseDown\n }, tagRender({\n label: content,\n value: value,\n disabled: itemDisabled,\n closable: closable,\n onClose: onClose\n }));\n }\n function renderItem(valueItem) {\n var itemDisabled = valueItem.disabled,\n label = valueItem.label,\n value = valueItem.value;\n var closable = !disabled && !itemDisabled;\n var displayLabel = label;\n if (typeof maxTagTextLength === 'number') {\n if (typeof label === 'string' || typeof label === 'number') {\n var strLabel = String(displayLabel);\n if (strLabel.length > maxTagTextLength) {\n displayLabel = \"\".concat(strLabel.slice(0, maxTagTextLength), \"...\");\n }\n }\n }\n var onClose = function onClose(event) {\n if (event) event.stopPropagation();\n onRemove(valueItem);\n };\n return typeof tagRender === 'function' ? customizeRenderSelector(value, displayLabel, itemDisabled, closable, onClose) : defaultRenderSelector(valueItem, displayLabel, itemDisabled, closable, onClose);\n }\n function renderRest(omittedValues) {\n var content = typeof maxTagPlaceholder === 'function' ? maxTagPlaceholder(omittedValues) : maxTagPlaceholder;\n return defaultRenderSelector({\n title: content\n }, content, false);\n }\n\n // >>> Input Node\n var inputNode = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(selectionPrefixCls, \"-search\"),\n style: {\n width: inputWidth\n },\n onFocus: function onFocus() {\n setFocused(true);\n },\n onBlur: function onBlur() {\n setFocused(false);\n }\n }, /*#__PURE__*/React.createElement(Input, {\n ref: inputRef,\n open: open,\n prefixCls: prefixCls,\n id: id,\n inputElement: null,\n disabled: disabled,\n autoFocus: autoFocus,\n autoComplete: autoComplete,\n editable: inputEditable,\n activeDescendantId: activeDescendantId,\n value: inputValue,\n onKeyDown: onInputKeyDown,\n onMouseDown: onInputMouseDown,\n onChange: onInputChange,\n onPaste: onInputPaste,\n onCompositionStart: onInputCompositionStart,\n onCompositionEnd: onInputCompositionEnd,\n tabIndex: tabIndex,\n attrs: pickAttrs(props, true)\n }), /*#__PURE__*/React.createElement(\"span\", {\n ref: measureRef,\n className: \"\".concat(selectionPrefixCls, \"-search-mirror\"),\n \"aria-hidden\": true\n }, inputValue, \"\\xA0\"));\n\n // >>> Selections\n var selectionNode = /*#__PURE__*/React.createElement(Overflow, {\n prefixCls: \"\".concat(selectionPrefixCls, \"-overflow\"),\n data: values,\n renderItem: renderItem,\n renderRest: renderRest,\n suffix: inputNode,\n itemKey: itemKey,\n maxCount: maxTagCount\n });\n return /*#__PURE__*/React.createElement(React.Fragment, null, selectionNode, !values.length && !inputValue && /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(selectionPrefixCls, \"-placeholder\")\n }, placeholder));\n};\nexport default SelectSelector;","/* eslint-disable react-hooks/rules-of-hooks */\nimport * as React from 'react';\nimport { isBrowserClient } from \"../utils/commonUtil\";\n\n/**\n * Wrap `React.useLayoutEffect` which will not throw warning message in test env\n */\nexport default function useLayoutEffect(effect, deps) {\n // Never happen in test env\n if (isBrowserClient) {\n /* istanbul ignore next */\n React.useLayoutEffect(effect, deps);\n } else {\n React.useEffect(effect, deps);\n }\n}\n/* eslint-enable */","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nimport Input from \"./Input\";\nimport { getTitle } from \"../utils/commonUtil\";\nvar SingleSelector = function SingleSelector(props) {\n var inputElement = props.inputElement,\n prefixCls = props.prefixCls,\n id = props.id,\n inputRef = props.inputRef,\n disabled = props.disabled,\n autoFocus = props.autoFocus,\n autoComplete = props.autoComplete,\n activeDescendantId = props.activeDescendantId,\n mode = props.mode,\n open = props.open,\n values = props.values,\n placeholder = props.placeholder,\n tabIndex = props.tabIndex,\n showSearch = props.showSearch,\n searchValue = props.searchValue,\n activeValue = props.activeValue,\n maxLength = props.maxLength,\n onInputKeyDown = props.onInputKeyDown,\n onInputMouseDown = props.onInputMouseDown,\n onInputChange = props.onInputChange,\n onInputPaste = props.onInputPaste,\n onInputCompositionStart = props.onInputCompositionStart,\n onInputCompositionEnd = props.onInputCompositionEnd,\n title = props.title;\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n inputChanged = _React$useState2[0],\n setInputChanged = _React$useState2[1];\n var combobox = mode === 'combobox';\n var inputEditable = combobox || showSearch;\n var item = values[0];\n var inputValue = searchValue || '';\n if (combobox && activeValue && !inputChanged) {\n inputValue = activeValue;\n }\n React.useEffect(function () {\n if (combobox) {\n setInputChanged(false);\n }\n }, [combobox, activeValue]);\n\n // Not show text when closed expect combobox mode\n var hasTextInput = mode !== 'combobox' && !open && !showSearch ? false : !!inputValue;\n\n // Get title of selection item\n var selectionTitle = title === undefined ? getTitle(item) : title;\n var renderPlaceholder = function renderPlaceholder() {\n if (item) {\n return null;\n }\n var hiddenStyle = hasTextInput ? {\n visibility: 'hidden'\n } : undefined;\n return /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-selection-placeholder\"),\n style: hiddenStyle\n }, placeholder);\n };\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-selection-search\")\n }, /*#__PURE__*/React.createElement(Input, {\n ref: inputRef,\n prefixCls: prefixCls,\n id: id,\n open: open,\n inputElement: inputElement,\n disabled: disabled,\n autoFocus: autoFocus,\n autoComplete: autoComplete,\n editable: inputEditable,\n activeDescendantId: activeDescendantId,\n value: inputValue,\n onKeyDown: onInputKeyDown,\n onMouseDown: onInputMouseDown,\n onChange: function onChange(e) {\n setInputChanged(true);\n onInputChange(e);\n },\n onPaste: onInputPaste,\n onCompositionStart: onInputCompositionStart,\n onCompositionEnd: onInputCompositionEnd,\n tabIndex: tabIndex,\n attrs: pickAttrs(props, true),\n maxLength: combobox ? maxLength : undefined\n })), !combobox && item ? /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-selection-item\"),\n title: selectionTitle\n // 当 Select 已经选中选项时,还需 selection 隐藏但留在原地占位\n // https://github.com/ant-design/ant-design/issues/27688\n // https://github.com/ant-design/ant-design/issues/41530\n ,\n\n style: hasTextInput ? {\n visibility: 'hidden'\n } : undefined\n }, item.label) : null, renderPlaceholder());\n};\nexport default SingleSelector;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\n/**\n * Cursor rule:\n * 1. Only `showSearch` enabled\n * 2. Only `open` is `true`\n * 3. When typing, set `open` to `true` which hit rule of 2\n *\n * Accessibility:\n * - https://www.w3.org/TR/wai-aria-practices/examples/combobox/aria1.1pattern/listbox-combo.html\n */\n\nimport * as React from 'react';\nimport { useRef } from 'react';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport MultipleSelector from \"./MultipleSelector\";\nimport SingleSelector from \"./SingleSelector\";\nimport useLock from \"../hooks/useLock\";\nimport { isValidateOpenKey } from \"../utils/keyUtil\";\nvar Selector = function Selector(props, ref) {\n var inputRef = useRef(null);\n var compositionStatusRef = useRef(false);\n var prefixCls = props.prefixCls,\n open = props.open,\n mode = props.mode,\n showSearch = props.showSearch,\n tokenWithEnter = props.tokenWithEnter,\n autoClearSearchValue = props.autoClearSearchValue,\n onSearch = props.onSearch,\n onSearchSubmit = props.onSearchSubmit,\n onToggleOpen = props.onToggleOpen,\n onInputKeyDown = props.onInputKeyDown,\n domRef = props.domRef;\n\n // ======================= Ref =======================\n React.useImperativeHandle(ref, function () {\n return {\n focus: function focus() {\n inputRef.current.focus();\n },\n blur: function blur() {\n inputRef.current.blur();\n }\n };\n });\n\n // ====================== Input ======================\n var _useLock = useLock(0),\n _useLock2 = _slicedToArray(_useLock, 2),\n getInputMouseDown = _useLock2[0],\n setInputMouseDown = _useLock2[1];\n var onInternalInputKeyDown = function onInternalInputKeyDown(event) {\n var which = event.which;\n if (which === KeyCode.UP || which === KeyCode.DOWN) {\n event.preventDefault();\n }\n if (onInputKeyDown) {\n onInputKeyDown(event);\n }\n if (which === KeyCode.ENTER && mode === 'tags' && !compositionStatusRef.current && !open) {\n // When menu isn't open, OptionList won't trigger a value change\n // So when enter is pressed, the tag's input value should be emitted here to let selector know\n onSearchSubmit === null || onSearchSubmit === void 0 ? void 0 : onSearchSubmit(event.target.value);\n }\n if (isValidateOpenKey(which)) {\n onToggleOpen(true);\n }\n };\n\n /**\n * We can not use `findDOMNode` sine it will get warning,\n * have to use timer to check if is input element.\n */\n var onInternalInputMouseDown = function onInternalInputMouseDown() {\n setInputMouseDown(true);\n };\n\n // When paste come, ignore next onChange\n var pastedTextRef = useRef(null);\n var triggerOnSearch = function triggerOnSearch(value) {\n if (onSearch(value, true, compositionStatusRef.current) !== false) {\n onToggleOpen(true);\n }\n };\n var onInputCompositionStart = function onInputCompositionStart() {\n compositionStatusRef.current = true;\n };\n var onInputCompositionEnd = function onInputCompositionEnd(e) {\n compositionStatusRef.current = false;\n\n // Trigger search again to support `tokenSeparators` with typewriting\n if (mode !== 'combobox') {\n triggerOnSearch(e.target.value);\n }\n };\n var onInputChange = function onInputChange(event) {\n var value = event.target.value;\n\n // Pasted text should replace back to origin content\n if (tokenWithEnter && pastedTextRef.current && /[\\r\\n]/.test(pastedTextRef.current)) {\n // CRLF will be treated as a single space for input element\n var replacedText = pastedTextRef.current.replace(/[\\r\\n]+$/, '').replace(/\\r\\n/g, ' ').replace(/[\\r\\n]/g, ' ');\n value = value.replace(replacedText, pastedTextRef.current);\n }\n pastedTextRef.current = null;\n triggerOnSearch(value);\n };\n var onInputPaste = function onInputPaste(e) {\n var clipboardData = e.clipboardData;\n var value = clipboardData.getData('text');\n pastedTextRef.current = value;\n };\n var onClick = function onClick(_ref) {\n var target = _ref.target;\n if (target !== inputRef.current) {\n // Should focus input if click the selector\n var isIE = document.body.style.msTouchAction !== undefined;\n if (isIE) {\n setTimeout(function () {\n inputRef.current.focus();\n });\n } else {\n inputRef.current.focus();\n }\n }\n };\n var onMouseDown = function onMouseDown(event) {\n var inputMouseDown = getInputMouseDown();\n\n // when mode is combobox, don't prevent default behavior\n // https://github.com/ant-design/ant-design/issues/37320\n if (event.target !== inputRef.current && !inputMouseDown && mode !== 'combobox') {\n event.preventDefault();\n }\n if (mode !== 'combobox' && (!showSearch || !inputMouseDown) || !open) {\n if (open && autoClearSearchValue !== false) {\n onSearch('', true, false);\n }\n onToggleOpen();\n }\n };\n\n // ================= Inner Selector ==================\n var sharedProps = {\n inputRef: inputRef,\n onInputKeyDown: onInternalInputKeyDown,\n onInputMouseDown: onInternalInputMouseDown,\n onInputChange: onInputChange,\n onInputPaste: onInputPaste,\n onInputCompositionStart: onInputCompositionStart,\n onInputCompositionEnd: onInputCompositionEnd\n };\n var selectNode = mode === 'multiple' || mode === 'tags' ? /*#__PURE__*/React.createElement(MultipleSelector, _extends({}, props, sharedProps)) : /*#__PURE__*/React.createElement(SingleSelector, _extends({}, props, sharedProps));\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: domRef,\n className: \"\".concat(prefixCls, \"-selector\"),\n onClick: onClick,\n onMouseDown: onMouseDown\n }, selectNode);\n};\nvar ForwardSelector = /*#__PURE__*/React.forwardRef(Selector);\nForwardSelector.displayName = 'Selector';\nexport default ForwardSelector;","import KeyCode from \"rc-util/es/KeyCode\";\n\n/** keyCode Judgment function */\nexport function isValidateOpenKey(currentKeyCode) {\n return ![\n // System function button\n KeyCode.ESC, KeyCode.SHIFT, KeyCode.BACKSPACE, KeyCode.TAB, KeyCode.WIN_KEY, KeyCode.ALT, KeyCode.META, KeyCode.WIN_KEY_RIGHT, KeyCode.CTRL, KeyCode.SEMICOLON, KeyCode.EQUALS, KeyCode.CAPS_LOCK, KeyCode.CONTEXT_MENU,\n // F1-F12\n KeyCode.F1, KeyCode.F2, KeyCode.F3, KeyCode.F4, KeyCode.F5, KeyCode.F6, KeyCode.F7, KeyCode.F8, KeyCode.F9, KeyCode.F10, KeyCode.F11, KeyCode.F12].includes(currentKeyCode);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"disabled\", \"visible\", \"children\", \"popupElement\", \"containerWidth\", \"animation\", \"transitionName\", \"dropdownStyle\", \"dropdownClassName\", \"direction\", \"placement\", \"builtinPlacements\", \"dropdownMatchSelectWidth\", \"dropdownRender\", \"dropdownAlign\", \"getPopupContainer\", \"empty\", \"getTriggerDOMNode\", \"onPopupVisibleChange\", \"onPopupMouseEnter\"];\nimport Trigger from '@rc-component/trigger';\nimport classNames from 'classnames';\nimport * as React from 'react';\nvar getBuiltInPlacements = function getBuiltInPlacements(dropdownMatchSelectWidth) {\n // Enable horizontal overflow auto-adjustment when a custom dropdown width is provided\n var adjustX = dropdownMatchSelectWidth === true ? 0 : 1;\n return {\n bottomLeft: {\n points: ['tl', 'bl'],\n offset: [0, 4],\n overflow: {\n adjustX: adjustX,\n adjustY: 1\n },\n htmlRegion: 'scroll'\n },\n bottomRight: {\n points: ['tr', 'br'],\n offset: [0, 4],\n overflow: {\n adjustX: adjustX,\n adjustY: 1\n },\n htmlRegion: 'scroll'\n },\n topLeft: {\n points: ['bl', 'tl'],\n offset: [0, -4],\n overflow: {\n adjustX: adjustX,\n adjustY: 1\n },\n htmlRegion: 'scroll'\n },\n topRight: {\n points: ['br', 'tr'],\n offset: [0, -4],\n overflow: {\n adjustX: adjustX,\n adjustY: 1\n },\n htmlRegion: 'scroll'\n }\n };\n};\nvar SelectTrigger = function SelectTrigger(props, ref) {\n var prefixCls = props.prefixCls,\n disabled = props.disabled,\n visible = props.visible,\n children = props.children,\n popupElement = props.popupElement,\n containerWidth = props.containerWidth,\n animation = props.animation,\n transitionName = props.transitionName,\n dropdownStyle = props.dropdownStyle,\n dropdownClassName = props.dropdownClassName,\n _props$direction = props.direction,\n direction = _props$direction === void 0 ? 'ltr' : _props$direction,\n placement = props.placement,\n builtinPlacements = props.builtinPlacements,\n dropdownMatchSelectWidth = props.dropdownMatchSelectWidth,\n dropdownRender = props.dropdownRender,\n dropdownAlign = props.dropdownAlign,\n getPopupContainer = props.getPopupContainer,\n empty = props.empty,\n getTriggerDOMNode = props.getTriggerDOMNode,\n onPopupVisibleChange = props.onPopupVisibleChange,\n onPopupMouseEnter = props.onPopupMouseEnter,\n restProps = _objectWithoutProperties(props, _excluded);\n var dropdownPrefixCls = \"\".concat(prefixCls, \"-dropdown\");\n var popupNode = popupElement;\n if (dropdownRender) {\n popupNode = dropdownRender(popupElement);\n }\n var mergedBuiltinPlacements = React.useMemo(function () {\n return builtinPlacements || getBuiltInPlacements(dropdownMatchSelectWidth);\n }, [builtinPlacements, dropdownMatchSelectWidth]);\n\n // ===================== Motion ======================\n var mergedTransitionName = animation ? \"\".concat(dropdownPrefixCls, \"-\").concat(animation) : transitionName;\n\n // ======================= Ref =======================\n var popupRef = React.useRef(null);\n React.useImperativeHandle(ref, function () {\n return {\n getPopupElement: function getPopupElement() {\n return popupRef.current;\n }\n };\n });\n var popupStyle = _objectSpread({\n minWidth: containerWidth\n }, dropdownStyle);\n if (typeof dropdownMatchSelectWidth === 'number') {\n popupStyle.width = dropdownMatchSelectWidth;\n } else if (dropdownMatchSelectWidth) {\n popupStyle.width = containerWidth;\n }\n return /*#__PURE__*/React.createElement(Trigger, _extends({}, restProps, {\n showAction: onPopupVisibleChange ? ['click'] : [],\n hideAction: onPopupVisibleChange ? ['click'] : [],\n popupPlacement: placement || (direction === 'rtl' ? 'bottomRight' : 'bottomLeft'),\n builtinPlacements: mergedBuiltinPlacements,\n prefixCls: dropdownPrefixCls,\n popupTransitionName: mergedTransitionName,\n popup: /*#__PURE__*/React.createElement(\"div\", {\n ref: popupRef,\n onMouseEnter: onPopupMouseEnter\n }, popupNode),\n popupAlign: dropdownAlign,\n popupVisible: visible,\n getPopupContainer: getPopupContainer,\n popupClassName: classNames(dropdownClassName, _defineProperty({}, \"\".concat(dropdownPrefixCls, \"-empty\"), empty)),\n popupStyle: popupStyle,\n getTriggerDOMNode: getTriggerDOMNode,\n onPopupVisibleChange: onPopupVisibleChange\n }), children);\n};\nvar RefSelectTrigger = /*#__PURE__*/React.forwardRef(SelectTrigger);\nRefSelectTrigger.displayName = 'SelectTrigger';\nexport default RefSelectTrigger;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _toArray from \"@babel/runtime/helpers/esm/toArray\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport warning from \"rc-util/es/warning\";\nfunction getKey(data, index) {\n var key = data.key;\n var value;\n if ('value' in data) {\n value = data.value;\n }\n if (key !== null && key !== undefined) {\n return key;\n }\n if (value !== undefined) {\n return value;\n }\n return \"rc-index-key-\".concat(index);\n}\nexport function fillFieldNames(fieldNames, childrenAsData) {\n var _ref = fieldNames || {},\n label = _ref.label,\n value = _ref.value,\n options = _ref.options,\n groupLabel = _ref.groupLabel;\n var mergedLabel = label || (childrenAsData ? 'children' : 'label');\n return {\n label: mergedLabel,\n value: value || 'value',\n options: options || 'options',\n groupLabel: groupLabel || mergedLabel\n };\n}\n\n/**\n * Flat options into flatten list.\n * We use `optionOnly` here is aim to avoid user use nested option group.\n * Here is simply set `key` to the index if not provided.\n */\nexport function flattenOptions(options) {\n var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n fieldNames = _ref2.fieldNames,\n childrenAsData = _ref2.childrenAsData;\n var flattenList = [];\n var _fillFieldNames = fillFieldNames(fieldNames, false),\n fieldLabel = _fillFieldNames.label,\n fieldValue = _fillFieldNames.value,\n fieldOptions = _fillFieldNames.options,\n groupLabel = _fillFieldNames.groupLabel;\n function dig(list, isGroupOption) {\n list.forEach(function (data) {\n if (isGroupOption || !(fieldOptions in data)) {\n var value = data[fieldValue];\n\n // Option\n flattenList.push({\n key: getKey(data, flattenList.length),\n groupOption: isGroupOption,\n data: data,\n label: data[fieldLabel],\n value: value\n });\n } else {\n var grpLabel = data[groupLabel];\n if (grpLabel === undefined && childrenAsData) {\n grpLabel = data.label;\n }\n\n // Option Group\n flattenList.push({\n key: getKey(data, flattenList.length),\n group: true,\n data: data,\n label: grpLabel\n });\n dig(data[fieldOptions], true);\n }\n });\n }\n dig(options, false);\n return flattenList;\n}\n\n/**\n * Inject `props` into `option` for legacy usage\n */\nexport function injectPropsWithOption(option) {\n var newOption = _objectSpread({}, option);\n if (!('props' in newOption)) {\n Object.defineProperty(newOption, 'props', {\n get: function get() {\n warning(false, 'Return type is option instead of Option instance. Please read value directly instead of reading from `props`.');\n return newOption;\n }\n });\n }\n return newOption;\n}\nexport function getSeparatedContent(text, tokens) {\n if (!tokens || !tokens.length) {\n return null;\n }\n var match = false;\n function separate(str, _ref3) {\n var _ref4 = _toArray(_ref3),\n token = _ref4[0],\n restTokens = _ref4.slice(1);\n if (!token) {\n return [str];\n }\n var list = str.split(token);\n match = match || list.length > 1;\n return list.reduce(function (prevList, unitStr) {\n return [].concat(_toConsumableArray(prevList), _toConsumableArray(separate(unitStr, restTokens)));\n }, []).filter(function (unit) {\n return unit;\n });\n }\n var list = separate(text, tokens);\n return match ? list : null;\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"id\", \"prefixCls\", \"className\", \"showSearch\", \"tagRender\", \"direction\", \"omitDomProps\", \"displayValues\", \"onDisplayValuesChange\", \"emptyOptions\", \"notFoundContent\", \"onClear\", \"mode\", \"disabled\", \"loading\", \"getInputElement\", \"getRawInputElement\", \"open\", \"defaultOpen\", \"onDropdownVisibleChange\", \"activeValue\", \"onActiveValueChange\", \"activeDescendantId\", \"searchValue\", \"autoClearSearchValue\", \"onSearch\", \"onSearchSplit\", \"tokenSeparators\", \"allowClear\", \"suffixIcon\", \"clearIcon\", \"OptionList\", \"animation\", \"transitionName\", \"dropdownStyle\", \"dropdownClassName\", \"dropdownMatchSelectWidth\", \"dropdownRender\", \"dropdownAlign\", \"placement\", \"builtinPlacements\", \"getPopupContainer\", \"showAction\", \"onFocus\", \"onBlur\", \"onKeyUp\", \"onKeyDown\", \"onMouseDown\"];\nimport classNames from 'classnames';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport isMobile from \"rc-util/es/isMobile\";\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport { useComposeRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nimport { BaseSelectContext } from \"./hooks/useBaseProps\";\nimport useDelayReset from \"./hooks/useDelayReset\";\nimport useLock from \"./hooks/useLock\";\nimport useSelectTriggerControl from \"./hooks/useSelectTriggerControl\";\nimport Selector from \"./Selector\";\nimport SelectTrigger from \"./SelectTrigger\";\nimport TransBtn from \"./TransBtn\";\nimport { getSeparatedContent } from \"./utils/valueUtil\";\nimport { useAllowClear } from \"./hooks/useAllowClear\";\nvar DEFAULT_OMIT_PROPS = ['value', 'onChange', 'removeIcon', 'placeholder', 'autoFocus', 'maxTagCount', 'maxTagTextLength', 'maxTagPlaceholder', 'choiceTransitionName', 'onInputKeyDown', 'onPopupScroll', 'tabIndex'];\nexport function isMultiple(mode) {\n return mode === 'tags' || mode === 'multiple';\n}\nvar BaseSelect = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _customizeRawInputEle, _classNames2;\n var id = props.id,\n prefixCls = props.prefixCls,\n className = props.className,\n showSearch = props.showSearch,\n tagRender = props.tagRender,\n direction = props.direction,\n omitDomProps = props.omitDomProps,\n displayValues = props.displayValues,\n onDisplayValuesChange = props.onDisplayValuesChange,\n emptyOptions = props.emptyOptions,\n _props$notFoundConten = props.notFoundContent,\n notFoundContent = _props$notFoundConten === void 0 ? 'Not Found' : _props$notFoundConten,\n onClear = props.onClear,\n mode = props.mode,\n disabled = props.disabled,\n loading = props.loading,\n getInputElement = props.getInputElement,\n getRawInputElement = props.getRawInputElement,\n open = props.open,\n defaultOpen = props.defaultOpen,\n onDropdownVisibleChange = props.onDropdownVisibleChange,\n activeValue = props.activeValue,\n onActiveValueChange = props.onActiveValueChange,\n activeDescendantId = props.activeDescendantId,\n searchValue = props.searchValue,\n autoClearSearchValue = props.autoClearSearchValue,\n onSearch = props.onSearch,\n onSearchSplit = props.onSearchSplit,\n tokenSeparators = props.tokenSeparators,\n allowClear = props.allowClear,\n suffixIcon = props.suffixIcon,\n clearIcon = props.clearIcon,\n OptionList = props.OptionList,\n animation = props.animation,\n transitionName = props.transitionName,\n dropdownStyle = props.dropdownStyle,\n dropdownClassName = props.dropdownClassName,\n dropdownMatchSelectWidth = props.dropdownMatchSelectWidth,\n dropdownRender = props.dropdownRender,\n dropdownAlign = props.dropdownAlign,\n placement = props.placement,\n builtinPlacements = props.builtinPlacements,\n getPopupContainer = props.getPopupContainer,\n _props$showAction = props.showAction,\n showAction = _props$showAction === void 0 ? [] : _props$showAction,\n onFocus = props.onFocus,\n onBlur = props.onBlur,\n onKeyUp = props.onKeyUp,\n onKeyDown = props.onKeyDown,\n onMouseDown = props.onMouseDown,\n restProps = _objectWithoutProperties(props, _excluded);\n\n // ============================== MISC ==============================\n var multiple = isMultiple(mode);\n var mergedShowSearch = (showSearch !== undefined ? showSearch : multiple) || mode === 'combobox';\n var domProps = _objectSpread({}, restProps);\n DEFAULT_OMIT_PROPS.forEach(function (propName) {\n delete domProps[propName];\n });\n omitDomProps === null || omitDomProps === void 0 ? void 0 : omitDomProps.forEach(function (propName) {\n delete domProps[propName];\n });\n\n // ============================= Mobile =============================\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n mobile = _React$useState2[0],\n setMobile = _React$useState2[1];\n React.useEffect(function () {\n // Only update on the client side\n setMobile(isMobile());\n }, []);\n\n // ============================== Refs ==============================\n var containerRef = React.useRef(null);\n var selectorDomRef = React.useRef(null);\n var triggerRef = React.useRef(null);\n var selectorRef = React.useRef(null);\n var listRef = React.useRef(null);\n\n /** Used for component focused management */\n var _useDelayReset = useDelayReset(),\n _useDelayReset2 = _slicedToArray(_useDelayReset, 3),\n mockFocused = _useDelayReset2[0],\n setMockFocused = _useDelayReset2[1],\n cancelSetMockFocused = _useDelayReset2[2];\n\n // =========================== Imperative ===========================\n React.useImperativeHandle(ref, function () {\n var _selectorRef$current, _selectorRef$current2;\n return {\n focus: (_selectorRef$current = selectorRef.current) === null || _selectorRef$current === void 0 ? void 0 : _selectorRef$current.focus,\n blur: (_selectorRef$current2 = selectorRef.current) === null || _selectorRef$current2 === void 0 ? void 0 : _selectorRef$current2.blur,\n scrollTo: function scrollTo(arg) {\n var _listRef$current;\n return (_listRef$current = listRef.current) === null || _listRef$current === void 0 ? void 0 : _listRef$current.scrollTo(arg);\n }\n };\n });\n\n // ========================== Search Value ==========================\n var mergedSearchValue = React.useMemo(function () {\n var _displayValues$;\n if (mode !== 'combobox') {\n return searchValue;\n }\n var val = (_displayValues$ = displayValues[0]) === null || _displayValues$ === void 0 ? void 0 : _displayValues$.value;\n return typeof val === 'string' || typeof val === 'number' ? String(val) : '';\n }, [searchValue, mode, displayValues]);\n\n // ========================== Custom Input ==========================\n // Only works in `combobox`\n var customizeInputElement = mode === 'combobox' && typeof getInputElement === 'function' && getInputElement() || null;\n\n // Used for customize replacement for `rc-cascader`\n var customizeRawInputElement = typeof getRawInputElement === 'function' && getRawInputElement();\n var customizeRawInputRef = useComposeRef(selectorDomRef, customizeRawInputElement === null || customizeRawInputElement === void 0 ? void 0 : (_customizeRawInputEle = customizeRawInputElement.props) === null || _customizeRawInputEle === void 0 ? void 0 : _customizeRawInputEle.ref);\n\n // ============================== Open ==============================\n // SSR not support Portal which means we need delay `open` for the first time render\n var _React$useState3 = React.useState(false),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n rendered = _React$useState4[0],\n setRendered = _React$useState4[1];\n useLayoutEffect(function () {\n setRendered(true);\n }, []);\n var _useMergedState = useMergedState(false, {\n defaultValue: defaultOpen,\n value: open\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n innerOpen = _useMergedState2[0],\n setInnerOpen = _useMergedState2[1];\n var mergedOpen = rendered ? innerOpen : false;\n\n // Not trigger `open` in `combobox` when `notFoundContent` is empty\n var emptyListContent = !notFoundContent && emptyOptions;\n if (disabled || emptyListContent && mergedOpen && mode === 'combobox') {\n mergedOpen = false;\n }\n var triggerOpen = emptyListContent ? false : mergedOpen;\n var onToggleOpen = React.useCallback(function (newOpen) {\n var nextOpen = newOpen !== undefined ? newOpen : !mergedOpen;\n if (!disabled) {\n setInnerOpen(nextOpen);\n if (mergedOpen !== nextOpen) {\n onDropdownVisibleChange === null || onDropdownVisibleChange === void 0 ? void 0 : onDropdownVisibleChange(nextOpen);\n }\n }\n }, [disabled, mergedOpen, setInnerOpen, onDropdownVisibleChange]);\n\n // ============================= Search =============================\n var tokenWithEnter = React.useMemo(function () {\n return (tokenSeparators || []).some(function (tokenSeparator) {\n return ['\\n', '\\r\\n'].includes(tokenSeparator);\n });\n }, [tokenSeparators]);\n var onInternalSearch = function onInternalSearch(searchText, fromTyping, isCompositing) {\n var ret = true;\n var newSearchText = searchText;\n onActiveValueChange === null || onActiveValueChange === void 0 ? void 0 : onActiveValueChange(null);\n\n // Check if match the `tokenSeparators`\n var patchLabels = isCompositing ? null : getSeparatedContent(searchText, tokenSeparators);\n\n // Ignore combobox since it's not split-able\n if (mode !== 'combobox' && patchLabels) {\n newSearchText = '';\n onSearchSplit === null || onSearchSplit === void 0 ? void 0 : onSearchSplit(patchLabels);\n\n // Should close when paste finish\n onToggleOpen(false);\n\n // Tell Selector that break next actions\n ret = false;\n }\n if (onSearch && mergedSearchValue !== newSearchText) {\n onSearch(newSearchText, {\n source: fromTyping ? 'typing' : 'effect'\n });\n }\n return ret;\n };\n\n // Only triggered when menu is closed & mode is tags\n // If menu is open, OptionList will take charge\n // If mode isn't tags, press enter is not meaningful when you can't see any option\n var onInternalSearchSubmit = function onInternalSearchSubmit(searchText) {\n // prevent empty tags from appearing when you click the Enter button\n if (!searchText || !searchText.trim()) {\n return;\n }\n onSearch(searchText, {\n source: 'submit'\n });\n };\n\n // Close will clean up single mode search text\n React.useEffect(function () {\n if (!mergedOpen && !multiple && mode !== 'combobox') {\n onInternalSearch('', false, false);\n }\n }, [mergedOpen]);\n\n // ============================ Disabled ============================\n // Close dropdown & remove focus state when disabled change\n React.useEffect(function () {\n if (innerOpen && disabled) {\n setInnerOpen(false);\n }\n if (disabled) {\n setMockFocused(false);\n }\n }, [disabled]);\n\n // ============================ Keyboard ============================\n /**\n * We record input value here to check if can press to clean up by backspace\n * - null: Key is not down, this is reset by key up\n * - true: Search text is empty when first time backspace down\n * - false: Search text is not empty when first time backspace down\n */\n var _useLock = useLock(),\n _useLock2 = _slicedToArray(_useLock, 2),\n getClearLock = _useLock2[0],\n setClearLock = _useLock2[1];\n\n // KeyDown\n var onInternalKeyDown = function onInternalKeyDown(event) {\n var clearLock = getClearLock();\n var which = event.which;\n if (which === KeyCode.ENTER) {\n // Do not submit form when type in the input\n if (mode !== 'combobox') {\n event.preventDefault();\n }\n\n // We only manage open state here, close logic should handle by list component\n if (!mergedOpen) {\n onToggleOpen(true);\n }\n }\n setClearLock(!!mergedSearchValue);\n\n // Remove value by `backspace`\n if (which === KeyCode.BACKSPACE && !clearLock && multiple && !mergedSearchValue && displayValues.length) {\n var cloneDisplayValues = _toConsumableArray(displayValues);\n var removedDisplayValue = null;\n for (var i = cloneDisplayValues.length - 1; i >= 0; i -= 1) {\n var current = cloneDisplayValues[i];\n if (!current.disabled) {\n cloneDisplayValues.splice(i, 1);\n removedDisplayValue = current;\n break;\n }\n }\n if (removedDisplayValue) {\n onDisplayValuesChange(cloneDisplayValues, {\n type: 'remove',\n values: [removedDisplayValue]\n });\n }\n }\n for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n rest[_key - 1] = arguments[_key];\n }\n if (mergedOpen && listRef.current) {\n var _listRef$current2;\n (_listRef$current2 = listRef.current).onKeyDown.apply(_listRef$current2, [event].concat(rest));\n }\n onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown.apply(void 0, [event].concat(rest));\n };\n\n // KeyUp\n var onInternalKeyUp = function onInternalKeyUp(event) {\n for (var _len2 = arguments.length, rest = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n rest[_key2 - 1] = arguments[_key2];\n }\n if (mergedOpen && listRef.current) {\n var _listRef$current3;\n (_listRef$current3 = listRef.current).onKeyUp.apply(_listRef$current3, [event].concat(rest));\n }\n onKeyUp === null || onKeyUp === void 0 ? void 0 : onKeyUp.apply(void 0, [event].concat(rest));\n };\n\n // ============================ Selector ============================\n var onSelectorRemove = function onSelectorRemove(val) {\n var newValues = displayValues.filter(function (i) {\n return i !== val;\n });\n onDisplayValuesChange(newValues, {\n type: 'remove',\n values: [val]\n });\n };\n\n // ========================== Focus / Blur ==========================\n /** Record real focus status */\n var focusRef = React.useRef(false);\n var onContainerFocus = function onContainerFocus() {\n setMockFocused(true);\n if (!disabled) {\n if (onFocus && !focusRef.current) {\n onFocus.apply(void 0, arguments);\n }\n\n // `showAction` should handle `focus` if set\n if (showAction.includes('focus')) {\n onToggleOpen(true);\n }\n }\n focusRef.current = true;\n };\n var onContainerBlur = function onContainerBlur() {\n setMockFocused(false, function () {\n focusRef.current = false;\n onToggleOpen(false);\n });\n if (disabled) {\n return;\n }\n if (mergedSearchValue) {\n // `tags` mode should move `searchValue` into values\n if (mode === 'tags') {\n onSearch(mergedSearchValue, {\n source: 'submit'\n });\n } else if (mode === 'multiple') {\n // `multiple` mode only clean the search value but not trigger event\n onSearch('', {\n source: 'blur'\n });\n }\n }\n if (onBlur) {\n onBlur.apply(void 0, arguments);\n }\n };\n\n // Give focus back of Select\n var activeTimeoutIds = [];\n React.useEffect(function () {\n return function () {\n activeTimeoutIds.forEach(function (timeoutId) {\n return clearTimeout(timeoutId);\n });\n activeTimeoutIds.splice(0, activeTimeoutIds.length);\n };\n }, []);\n var onInternalMouseDown = function onInternalMouseDown(event) {\n var _triggerRef$current;\n var target = event.target;\n var popupElement = (_triggerRef$current = triggerRef.current) === null || _triggerRef$current === void 0 ? void 0 : _triggerRef$current.getPopupElement();\n\n // We should give focus back to selector if clicked item is not focusable\n if (popupElement && popupElement.contains(target)) {\n var timeoutId = setTimeout(function () {\n var index = activeTimeoutIds.indexOf(timeoutId);\n if (index !== -1) {\n activeTimeoutIds.splice(index, 1);\n }\n cancelSetMockFocused();\n if (!mobile && !popupElement.contains(document.activeElement)) {\n var _selectorRef$current3;\n (_selectorRef$current3 = selectorRef.current) === null || _selectorRef$current3 === void 0 ? void 0 : _selectorRef$current3.focus();\n }\n });\n activeTimeoutIds.push(timeoutId);\n }\n for (var _len3 = arguments.length, restArgs = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n restArgs[_key3 - 1] = arguments[_key3];\n }\n onMouseDown === null || onMouseDown === void 0 ? void 0 : onMouseDown.apply(void 0, [event].concat(restArgs));\n };\n\n // ============================ Dropdown ============================\n var _React$useState5 = React.useState(null),\n _React$useState6 = _slicedToArray(_React$useState5, 2),\n containerWidth = _React$useState6[0],\n setContainerWidth = _React$useState6[1];\n var _React$useState7 = React.useState({}),\n _React$useState8 = _slicedToArray(_React$useState7, 2),\n forceUpdate = _React$useState8[1];\n // We need force update here since popup dom is render async\n function onPopupMouseEnter() {\n forceUpdate({});\n }\n useLayoutEffect(function () {\n if (triggerOpen) {\n var _containerRef$current;\n // Guaranteed width accuracy \n var newWidth = Math.ceil((_containerRef$current = containerRef.current) === null || _containerRef$current === void 0 ? void 0 : _containerRef$current.getBoundingClientRect().width);\n if (containerWidth !== newWidth && !Number.isNaN(newWidth)) {\n setContainerWidth(newWidth);\n }\n }\n }, [triggerOpen]);\n\n // Used for raw custom input trigger\n var onTriggerVisibleChange;\n if (customizeRawInputElement) {\n onTriggerVisibleChange = function onTriggerVisibleChange(newOpen) {\n onToggleOpen(newOpen);\n };\n }\n\n // Close when click on non-select element\n useSelectTriggerControl(function () {\n var _triggerRef$current2;\n return [containerRef.current, (_triggerRef$current2 = triggerRef.current) === null || _triggerRef$current2 === void 0 ? void 0 : _triggerRef$current2.getPopupElement()];\n }, triggerOpen, onToggleOpen, !!customizeRawInputElement);\n\n // ============================ Context =============================\n var baseSelectContext = React.useMemo(function () {\n return _objectSpread(_objectSpread({}, props), {}, {\n notFoundContent: notFoundContent,\n open: mergedOpen,\n triggerOpen: triggerOpen,\n id: id,\n showSearch: mergedShowSearch,\n multiple: multiple,\n toggleOpen: onToggleOpen\n });\n }, [props, notFoundContent, triggerOpen, mergedOpen, id, mergedShowSearch, multiple, onToggleOpen]);\n\n // ==================================================================\n // == Render ==\n // ==================================================================\n\n // ============================= Arrow ==============================\n var showSuffixIcon = !!suffixIcon || loading;\n var arrowNode;\n if (showSuffixIcon) {\n arrowNode = /*#__PURE__*/React.createElement(TransBtn, {\n className: classNames(\"\".concat(prefixCls, \"-arrow\"), _defineProperty({}, \"\".concat(prefixCls, \"-arrow-loading\"), loading)),\n customizeIcon: suffixIcon,\n customizeIconProps: {\n loading: loading,\n searchValue: mergedSearchValue,\n open: mergedOpen,\n focused: mockFocused,\n showSearch: mergedShowSearch\n }\n });\n }\n\n // ============================= Clear ==============================\n var onClearMouseDown = function onClearMouseDown() {\n var _selectorRef$current4;\n onClear === null || onClear === void 0 ? void 0 : onClear();\n (_selectorRef$current4 = selectorRef.current) === null || _selectorRef$current4 === void 0 ? void 0 : _selectorRef$current4.focus();\n onDisplayValuesChange([], {\n type: 'clear',\n values: displayValues\n });\n onInternalSearch('', false, false);\n };\n var _useAllowClear = useAllowClear(prefixCls, onClearMouseDown, displayValues, allowClear, clearIcon, disabled, mergedSearchValue, mode),\n mergedAllowClear = _useAllowClear.allowClear,\n clearNode = _useAllowClear.clearIcon;\n\n // =========================== OptionList ===========================\n var optionList = /*#__PURE__*/React.createElement(OptionList, {\n ref: listRef\n });\n\n // ============================= Select =============================\n var mergedClassName = classNames(prefixCls, className, (_classNames2 = {}, _defineProperty(_classNames2, \"\".concat(prefixCls, \"-focused\"), mockFocused), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-multiple\"), multiple), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-single\"), !multiple), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-allow-clear\"), allowClear), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-show-arrow\"), showSuffixIcon), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-disabled\"), disabled), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-loading\"), loading), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-open\"), mergedOpen), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-customize-input\"), customizeInputElement), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-show-search\"), mergedShowSearch), _classNames2));\n\n // >>> Selector\n var selectorNode = /*#__PURE__*/React.createElement(SelectTrigger, {\n ref: triggerRef,\n disabled: disabled,\n prefixCls: prefixCls,\n visible: triggerOpen,\n popupElement: optionList,\n containerWidth: containerWidth,\n animation: animation,\n transitionName: transitionName,\n dropdownStyle: dropdownStyle,\n dropdownClassName: dropdownClassName,\n direction: direction,\n dropdownMatchSelectWidth: dropdownMatchSelectWidth,\n dropdownRender: dropdownRender,\n dropdownAlign: dropdownAlign,\n placement: placement,\n builtinPlacements: builtinPlacements,\n getPopupContainer: getPopupContainer,\n empty: emptyOptions,\n getTriggerDOMNode: function getTriggerDOMNode() {\n return selectorDomRef.current;\n },\n onPopupVisibleChange: onTriggerVisibleChange,\n onPopupMouseEnter: onPopupMouseEnter\n }, customizeRawInputElement ? /*#__PURE__*/React.cloneElement(customizeRawInputElement, {\n ref: customizeRawInputRef\n }) : /*#__PURE__*/React.createElement(Selector, _extends({}, props, {\n domRef: selectorDomRef,\n prefixCls: prefixCls,\n inputElement: customizeInputElement,\n ref: selectorRef,\n id: id,\n showSearch: mergedShowSearch,\n autoClearSearchValue: autoClearSearchValue,\n mode: mode,\n activeDescendantId: activeDescendantId,\n tagRender: tagRender,\n values: displayValues,\n open: mergedOpen,\n onToggleOpen: onToggleOpen,\n activeValue: activeValue,\n searchValue: mergedSearchValue,\n onSearch: onInternalSearch,\n onSearchSubmit: onInternalSearchSubmit,\n onRemove: onSelectorRemove,\n tokenWithEnter: tokenWithEnter\n })));\n\n // >>> Render\n var renderNode;\n\n // Render raw\n if (customizeRawInputElement) {\n renderNode = selectorNode;\n } else {\n renderNode = /*#__PURE__*/React.createElement(\"div\", _extends({\n className: mergedClassName\n }, domProps, {\n ref: containerRef,\n onMouseDown: onInternalMouseDown,\n onKeyDown: onInternalKeyDown,\n onKeyUp: onInternalKeyUp,\n onFocus: onContainerFocus,\n onBlur: onContainerBlur\n }), mockFocused && !mergedOpen && /*#__PURE__*/React.createElement(\"span\", {\n style: {\n width: 0,\n height: 0,\n position: 'absolute',\n overflow: 'hidden',\n opacity: 0\n },\n \"aria-live\": \"polite\"\n }, \"\".concat(displayValues.map(function (_ref) {\n var label = _ref.label,\n value = _ref.value;\n return ['number', 'string'].includes(_typeof(label)) ? label : value;\n }).join(', '))), selectorNode, arrowNode, mergedAllowClear && clearNode);\n }\n return /*#__PURE__*/React.createElement(BaseSelectContext.Provider, {\n value: baseSelectContext\n }, renderNode);\n});\n\n// Set display name for dev\nif (process.env.NODE_ENV !== 'production') {\n BaseSelect.displayName = 'BaseSelect';\n}\nexport default BaseSelect;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\n\n/**\n * Similar with `useLock`, but this hook will always execute last value.\n * When set to `true`, it will keep `true` for a short time even if `false` is set.\n */\nexport default function useDelayReset() {\n var timeout = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 10;\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n bool = _React$useState2[0],\n setBool = _React$useState2[1];\n var delayRef = React.useRef(null);\n var cancelLatest = function cancelLatest() {\n window.clearTimeout(delayRef.current);\n };\n React.useEffect(function () {\n return cancelLatest;\n }, []);\n var delaySetBool = function delaySetBool(value, callback) {\n cancelLatest();\n delayRef.current = window.setTimeout(function () {\n setBool(value);\n if (callback) {\n callback();\n }\n }, timeout);\n };\n return [bool, delaySetBool, cancelLatest];\n}","import * as React from 'react';\nexport default function useSelectTriggerControl(elements, open, triggerOpen, customizedTrigger) {\n var propsRef = React.useRef(null);\n propsRef.current = {\n open: open,\n triggerOpen: triggerOpen,\n customizedTrigger: customizedTrigger\n };\n React.useEffect(function () {\n function onGlobalMouseDown(event) {\n var _propsRef$current;\n // If trigger is customized, Trigger will take control of popupVisible\n if ((_propsRef$current = propsRef.current) !== null && _propsRef$current !== void 0 && _propsRef$current.customizedTrigger) {\n return;\n }\n var target = event.target;\n if (target.shadowRoot && event.composed) {\n target = event.composedPath()[0] || target;\n }\n if (propsRef.current.open && elements().filter(function (element) {\n return element;\n }).every(function (element) {\n return !element.contains(target) && element !== target;\n })) {\n // Should trigger close\n propsRef.current.triggerOpen(false);\n }\n }\n window.addEventListener('mousedown', onGlobalMouseDown);\n return function () {\n return window.removeEventListener('mousedown', onGlobalMouseDown);\n };\n }, []);\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport TransBtn from \"../TransBtn\";\nimport React from 'react';\nexport function useAllowClear(prefixCls, onClearMouseDown, displayValues, allowClear, clearIcon) {\n var disabled = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;\n var mergedSearchValue = arguments.length > 6 ? arguments[6] : undefined;\n var mode = arguments.length > 7 ? arguments[7] : undefined;\n var mergedClearIcon = React.useMemo(function () {\n if (_typeof(allowClear) === \"object\") {\n return allowClear.clearIcon;\n }\n if (!!clearIcon) return clearIcon;\n }, [allowClear, clearIcon]);\n var mergedAllowClear = React.useMemo(function () {\n if (!disabled && !!allowClear && (displayValues.length || mergedSearchValue) && !(mode === 'combobox' && mergedSearchValue === '')) {\n return true;\n }\n return false;\n }, [allowClear, disabled, displayValues.length, mergedSearchValue, mode]);\n return {\n allowClear: mergedAllowClear,\n clearIcon: /*#__PURE__*/React.createElement(TransBtn, {\n className: \"\".concat(prefixCls, \"-clear\"),\n onMouseDown: onClearMouseDown,\n customizeIcon: mergedClearIcon\n }, \"\\xD7\")\n };\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport { toArray } from \"../utils/commonUtil\";\nimport { injectPropsWithOption } from \"../utils/valueUtil\";\nfunction includes(test, search) {\n return toArray(test).join('').toUpperCase().includes(search);\n}\nexport default (function (options, fieldNames, searchValue, filterOption, optionFilterProp) {\n return React.useMemo(function () {\n if (!searchValue || filterOption === false) {\n return options;\n }\n var fieldOptions = fieldNames.options,\n fieldLabel = fieldNames.label,\n fieldValue = fieldNames.value;\n var filteredOptions = [];\n var customizeFilter = typeof filterOption === 'function';\n var upperSearch = searchValue.toUpperCase();\n var filterFunc = customizeFilter ? filterOption : function (_, option) {\n // Use provided `optionFilterProp`\n if (optionFilterProp) {\n return includes(option[optionFilterProp], upperSearch);\n }\n\n // Auto select `label` or `value` by option type\n if (option[fieldOptions]) {\n // hack `fieldLabel` since `OptionGroup` children is not `label`\n return includes(option[fieldLabel !== 'children' ? fieldLabel : 'label'], upperSearch);\n }\n return includes(option[fieldValue], upperSearch);\n };\n var wrapOption = customizeFilter ? function (opt) {\n return injectPropsWithOption(opt);\n } : function (opt) {\n return opt;\n };\n options.forEach(function (item) {\n // Group should check child options\n if (item[fieldOptions]) {\n // Check group first\n var matchGroup = filterFunc(searchValue, wrapOption(item));\n if (matchGroup) {\n filteredOptions.push(item);\n } else {\n // Check option\n var subOptions = item[fieldOptions].filter(function (subItem) {\n return filterFunc(searchValue, wrapOption(subItem));\n });\n if (subOptions.length) {\n filteredOptions.push(_objectSpread(_objectSpread({}, item), {}, _defineProperty({}, fieldOptions, subOptions)));\n }\n }\n return;\n }\n if (filterFunc(searchValue, wrapOption(item))) {\n filteredOptions.push(item);\n }\n });\n return filteredOptions;\n }, [options, filterOption, optionFilterProp, searchValue, fieldNames]);\n});","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport canUseDom from \"rc-util/es/Dom/canUseDom\";\nvar uuid = 0;\n\n/** Is client side and not jsdom */\nexport var isBrowserClient = process.env.NODE_ENV !== 'test' && canUseDom();\n\n/** Get unique id for accessibility usage */\nexport function getUUID() {\n var retId;\n\n // Test never reach\n /* istanbul ignore if */\n if (isBrowserClient) {\n retId = uuid;\n uuid += 1;\n } else {\n retId = 'TEST_OR_SSR';\n }\n return retId;\n}\nexport default function useId(id) {\n // Inner id for accessibility usage. Only work in client side\n var _React$useState = React.useState(),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n innerId = _React$useState2[0],\n setInnerId = _React$useState2[1];\n React.useEffect(function () {\n setInnerId(\"rc_select_\".concat(getUUID()));\n }, []);\n return id || innerId;\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"children\", \"value\"],\n _excluded2 = [\"children\"];\nimport * as React from 'react';\nimport toArray from \"rc-util/es/Children/toArray\";\nfunction convertNodeToOption(node) {\n var _ref = node,\n key = _ref.key,\n _ref$props = _ref.props,\n children = _ref$props.children,\n value = _ref$props.value,\n restProps = _objectWithoutProperties(_ref$props, _excluded);\n return _objectSpread({\n key: key,\n value: value !== undefined ? value : key,\n children: children\n }, restProps);\n}\nexport function convertChildrenToData(nodes) {\n var optionOnly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n return toArray(nodes).map(function (node, index) {\n if (! /*#__PURE__*/React.isValidElement(node) || !node.type) {\n return null;\n }\n var _ref2 = node,\n isSelectOptGroup = _ref2.type.isSelectOptGroup,\n key = _ref2.key,\n _ref2$props = _ref2.props,\n children = _ref2$props.children,\n restProps = _objectWithoutProperties(_ref2$props, _excluded2);\n if (optionOnly || !isSelectOptGroup) {\n return convertNodeToOption(node);\n }\n return _objectSpread(_objectSpread({\n key: \"__RC_SELECT_GRP__\".concat(key === null ? index : key, \"__\"),\n label: key\n }, restProps), {}, {\n options: convertChildrenToData(children)\n });\n }).filter(function (data) {\n return data;\n });\n}","import * as React from 'react';\n\n/**\n * Same as `React.useCallback` but always return a memoized function\n * but redirect to real function.\n */\nexport default function useRefFunc(callback) {\n var funcRef = React.useRef();\n funcRef.current = callback;\n var cacheFn = React.useCallback(function () {\n return funcRef.current.apply(funcRef, arguments);\n }, []);\n return cacheFn;\n}","/* istanbul ignore file */\n\n/** This is a placeholder, not real render in dom */\nvar OptGroup = function OptGroup() {\n return null;\n};\nOptGroup.isSelectOptGroup = true;\nexport default OptGroup;","/* istanbul ignore file */\n\n/** This is a placeholder, not real render in dom */\nvar Option = function Option() {\n return null;\n};\nOption.isSelectOption = true;\nexport default Option;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport ResizeObserver from 'rc-resize-observer';\nimport classNames from 'classnames';\n/**\n * Fill component to provided the scroll content real height.\n */\nvar Filler = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var height = _ref.height,\n offset = _ref.offset,\n children = _ref.children,\n prefixCls = _ref.prefixCls,\n onInnerResize = _ref.onInnerResize,\n innerProps = _ref.innerProps;\n var outerStyle = {};\n var innerStyle = {\n display: 'flex',\n flexDirection: 'column'\n };\n if (offset !== undefined) {\n outerStyle = {\n height: height,\n position: 'relative',\n overflow: 'hidden'\n };\n innerStyle = _objectSpread(_objectSpread({}, innerStyle), {}, {\n transform: \"translateY(\".concat(offset, \"px)\"),\n position: 'absolute',\n left: 0,\n right: 0,\n top: 0\n });\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n style: outerStyle\n }, /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: function onResize(_ref2) {\n var offsetHeight = _ref2.offsetHeight;\n if (offsetHeight && onInnerResize) {\n onInnerResize();\n }\n }\n }, /*#__PURE__*/React.createElement(\"div\", _extends({\n style: innerStyle,\n className: classNames(_defineProperty({}, \"\".concat(prefixCls, \"-holder-inner\"), prefixCls)),\n ref: ref\n }, innerProps), children)));\n});\nFiller.displayName = 'Filler';\nexport default Filler;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport raf from \"rc-util/es/raf\";\nvar MIN_SIZE = 20;\nfunction getPageY(e) {\n return 'touches' in e ? e.touches[0].pageY : e.pageY;\n}\nvar ScrollBar = /*#__PURE__*/function (_React$Component) {\n _inherits(ScrollBar, _React$Component);\n var _super = _createSuper(ScrollBar);\n function ScrollBar() {\n var _this;\n _classCallCheck(this, ScrollBar);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _this.moveRaf = null;\n _this.scrollbarRef = /*#__PURE__*/React.createRef();\n _this.thumbRef = /*#__PURE__*/React.createRef();\n _this.visibleTimeout = null;\n _this.state = {\n dragging: false,\n pageY: null,\n startTop: null,\n visible: false\n };\n _this.delayHidden = function () {\n clearTimeout(_this.visibleTimeout);\n _this.setState({\n visible: true\n });\n _this.visibleTimeout = setTimeout(function () {\n _this.setState({\n visible: false\n });\n }, 2000);\n };\n _this.onScrollbarTouchStart = function (e) {\n e.preventDefault();\n };\n _this.onContainerMouseDown = function (e) {\n e.stopPropagation();\n e.preventDefault();\n };\n // ======================= Clean =======================\n _this.patchEvents = function () {\n window.addEventListener('mousemove', _this.onMouseMove);\n window.addEventListener('mouseup', _this.onMouseUp);\n _this.thumbRef.current.addEventListener('touchmove', _this.onMouseMove);\n _this.thumbRef.current.addEventListener('touchend', _this.onMouseUp);\n };\n _this.removeEvents = function () {\n window.removeEventListener('mousemove', _this.onMouseMove);\n window.removeEventListener('mouseup', _this.onMouseUp);\n if (_this.thumbRef.current) {\n _this.thumbRef.current.removeEventListener('touchmove', _this.onMouseMove);\n _this.thumbRef.current.removeEventListener('touchend', _this.onMouseUp);\n }\n raf.cancel(_this.moveRaf);\n };\n // ======================= Thumb =======================\n _this.onMouseDown = function (e) {\n var onStartMove = _this.props.onStartMove;\n _this.setState({\n dragging: true,\n pageY: getPageY(e),\n startTop: _this.getTop()\n });\n onStartMove();\n _this.patchEvents();\n e.stopPropagation();\n e.preventDefault();\n };\n _this.onMouseMove = function (e) {\n var _this$state = _this.state,\n dragging = _this$state.dragging,\n pageY = _this$state.pageY,\n startTop = _this$state.startTop;\n var onScroll = _this.props.onScroll;\n raf.cancel(_this.moveRaf);\n if (dragging) {\n var offsetY = getPageY(e) - pageY;\n var newTop = startTop + offsetY;\n var enableScrollRange = _this.getEnableScrollRange();\n var enableHeightRange = _this.getEnableHeightRange();\n var ptg = enableHeightRange ? newTop / enableHeightRange : 0;\n var newScrollTop = Math.ceil(ptg * enableScrollRange);\n _this.moveRaf = raf(function () {\n onScroll(newScrollTop);\n });\n }\n };\n _this.onMouseUp = function () {\n var onStopMove = _this.props.onStopMove;\n _this.setState({\n dragging: false\n });\n onStopMove();\n _this.removeEvents();\n };\n // ===================== Calculate =====================\n _this.getSpinHeight = function () {\n var _this$props = _this.props,\n height = _this$props.height,\n count = _this$props.count;\n var baseHeight = height / count * 10;\n baseHeight = Math.max(baseHeight, MIN_SIZE);\n baseHeight = Math.min(baseHeight, height / 2);\n return Math.floor(baseHeight);\n };\n _this.getEnableScrollRange = function () {\n var _this$props2 = _this.props,\n scrollHeight = _this$props2.scrollHeight,\n height = _this$props2.height;\n return scrollHeight - height || 0;\n };\n _this.getEnableHeightRange = function () {\n var height = _this.props.height;\n var spinHeight = _this.getSpinHeight();\n return height - spinHeight || 0;\n };\n _this.getTop = function () {\n var scrollTop = _this.props.scrollTop;\n var enableScrollRange = _this.getEnableScrollRange();\n var enableHeightRange = _this.getEnableHeightRange();\n if (scrollTop === 0 || enableScrollRange === 0) {\n return 0;\n }\n var ptg = scrollTop / enableScrollRange;\n return ptg * enableHeightRange;\n };\n // Not show scrollbar when height is large than scrollHeight\n _this.showScroll = function () {\n var _this$props3 = _this.props,\n height = _this$props3.height,\n scrollHeight = _this$props3.scrollHeight;\n return scrollHeight > height;\n };\n return _this;\n }\n _createClass(ScrollBar, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.scrollbarRef.current.addEventListener('touchstart', this.onScrollbarTouchStart);\n this.thumbRef.current.addEventListener('touchstart', this.onMouseDown);\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n if (prevProps.scrollTop !== this.props.scrollTop) {\n this.delayHidden();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n var _this$scrollbarRef$cu, _this$thumbRef$curren;\n this.removeEvents();\n (_this$scrollbarRef$cu = this.scrollbarRef.current) === null || _this$scrollbarRef$cu === void 0 ? void 0 : _this$scrollbarRef$cu.removeEventListener('touchstart', this.onScrollbarTouchStart);\n (_this$thumbRef$curren = this.thumbRef.current) === null || _this$thumbRef$curren === void 0 ? void 0 : _this$thumbRef$curren.removeEventListener('touchstart', this.onMouseDown);\n clearTimeout(this.visibleTimeout);\n }\n }, {\n key: \"render\",\n value:\n // ====================== Render =======================\n function render() {\n var _this$state2 = this.state,\n dragging = _this$state2.dragging,\n visible = _this$state2.visible;\n var _this$props4 = this.props,\n prefixCls = _this$props4.prefixCls,\n direction = _this$props4.direction;\n var spinHeight = this.getSpinHeight();\n var top = this.getTop();\n var canScroll = this.showScroll();\n var mergedVisible = canScroll && visible;\n var scrollBarDirection = direction === 'rtl' ? {\n left: 0\n } : {\n right: 0\n };\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: this.scrollbarRef,\n className: classNames(\"\".concat(prefixCls, \"-scrollbar\"), _defineProperty({}, \"\".concat(prefixCls, \"-scrollbar-show\"), canScroll)),\n style: _objectSpread(_objectSpread({\n width: 8,\n top: 0,\n bottom: 0\n }, scrollBarDirection), {}, {\n position: 'absolute',\n display: mergedVisible ? null : 'none'\n }),\n onMouseDown: this.onContainerMouseDown,\n onMouseMove: this.delayHidden\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: this.thumbRef,\n className: classNames(\"\".concat(prefixCls, \"-scrollbar-thumb\"), _defineProperty({}, \"\".concat(prefixCls, \"-scrollbar-thumb-moving\"), dragging)),\n style: {\n width: '100%',\n height: spinHeight,\n top: top,\n left: 0,\n position: 'absolute',\n background: 'rgba(0, 0, 0, 0.5)',\n borderRadius: 99,\n cursor: 'pointer',\n userSelect: 'none'\n },\n onMouseDown: this.onMouseDown\n }));\n }\n }]);\n return ScrollBar;\n}(React.Component);\nexport { ScrollBar as default };","import * as React from 'react';\nexport function Item(_ref) {\n var children = _ref.children,\n setRef = _ref.setRef;\n var refFunc = React.useCallback(function (node) {\n setRef(node);\n }, []);\n return /*#__PURE__*/React.cloneElement(children, {\n ref: refFunc\n });\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\n// Firefox has low performance of map.\nvar CacheMap = /*#__PURE__*/function () {\n function CacheMap() {\n _classCallCheck(this, CacheMap);\n this.maps = void 0;\n this.maps = Object.create(null);\n }\n _createClass(CacheMap, [{\n key: \"set\",\n value: function set(key, value) {\n this.maps[key] = value;\n }\n }, {\n key: \"get\",\n value: function get(key) {\n return this.maps[key];\n }\n }]);\n return CacheMap;\n}();\nexport default CacheMap;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { findListDiffIndex } from '../utils/algorithmUtil';\nexport default function useDiffItem(data, getKey, onDiff) {\n var _React$useState = React.useState(data),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n prevData = _React$useState2[0],\n setPrevData = _React$useState2[1];\n var _React$useState3 = React.useState(null),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n diffItem = _React$useState4[0],\n setDiffItem = _React$useState4[1];\n React.useEffect(function () {\n var diff = findListDiffIndex(prevData || [], data || [], getKey);\n if ((diff === null || diff === void 0 ? void 0 : diff.index) !== undefined) {\n onDiff === null || onDiff === void 0 ? void 0 : onDiff(diff.index);\n setDiffItem(data[diff.index]);\n }\n setPrevData(data);\n }, [data]);\n return [diffItem];\n}","/**\n * Get index with specific start index one by one. e.g.\n * min: 3, max: 9, start: 6\n *\n * Return index is:\n * [0]: 6\n * [1]: 7\n * [2]: 5\n * [3]: 8\n * [4]: 4\n * [5]: 9\n * [6]: 3\n */\nexport function getIndexByStartLoc(min, max, start, index) {\n var beforeCount = start - min;\n var afterCount = max - start;\n var balanceCount = Math.min(beforeCount, afterCount) * 2;\n // Balance\n if (index <= balanceCount) {\n var stepIndex = Math.floor(index / 2);\n if (index % 2) {\n return start + stepIndex + 1;\n }\n return start - stepIndex;\n }\n // One is out of range\n if (beforeCount > afterCount) {\n return start - (index - afterCount);\n }\n return start + (index - beforeCount);\n}\n/**\n * We assume that 2 list has only 1 item diff and others keeping the order.\n * So we can use dichotomy algorithm to find changed one.\n */\nexport function findListDiffIndex(originList, targetList, getKey) {\n var originLen = originList.length;\n var targetLen = targetList.length;\n var shortList;\n var longList;\n if (originLen === 0 && targetLen === 0) {\n return null;\n }\n if (originLen < targetLen) {\n shortList = originList;\n longList = targetList;\n } else {\n shortList = targetList;\n longList = originList;\n }\n var notExistKey = {\n __EMPTY_ITEM__: true\n };\n function getItemKey(item) {\n if (item !== undefined) {\n return getKey(item);\n }\n return notExistKey;\n }\n // Loop to find diff one\n var diffIndex = null;\n var multiple = Math.abs(originLen - targetLen) !== 1;\n for (var i = 0; i < longList.length; i += 1) {\n var shortKey = getItemKey(shortList[i]);\n var longKey = getItemKey(longList[i]);\n if (shortKey !== longKey) {\n diffIndex = i;\n multiple = multiple || shortKey !== getItemKey(longList[i + 1]);\n break;\n }\n }\n return diffIndex === null ? null : {\n index: diffIndex,\n multiple: multiple\n };\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar isFF = (typeof navigator === \"undefined\" ? \"undefined\" : _typeof(navigator)) === 'object' && /Firefox/i.test(navigator.userAgent);\nexport default isFF;","import { useRef } from 'react';\nexport default (function (isScrollAtTop, isScrollAtBottom) {\n // Do lock for a wheel when scrolling\n var lockRef = useRef(false);\n var lockTimeoutRef = useRef(null);\n function lockScroll() {\n clearTimeout(lockTimeoutRef.current);\n lockRef.current = true;\n lockTimeoutRef.current = setTimeout(function () {\n lockRef.current = false;\n }, 50);\n }\n // Pass to ref since global add is in closure\n var scrollPingRef = useRef({\n top: isScrollAtTop,\n bottom: isScrollAtBottom\n });\n scrollPingRef.current.top = isScrollAtTop;\n scrollPingRef.current.bottom = isScrollAtBottom;\n return function (deltaY) {\n var smoothOffset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var originScroll =\n // Pass origin wheel when on the top\n deltaY < 0 && scrollPingRef.current.top ||\n // Pass origin wheel when on the bottom\n deltaY > 0 && scrollPingRef.current.bottom;\n if (smoothOffset && originScroll) {\n // No need lock anymore when it's smooth offset from touchMove interval\n clearTimeout(lockTimeoutRef.current);\n lockRef.current = false;\n } else if (!originScroll || lockRef.current) {\n lockScroll();\n }\n return !lockRef.current && originScroll;\n };\n});","import { useRef } from 'react';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nvar SMOOTH_PTG = 14 / 15;\nexport default function useMobileTouchMove(inVirtual, listRef, callback) {\n var touchedRef = useRef(false);\n var touchYRef = useRef(0);\n var elementRef = useRef(null);\n // Smooth scroll\n var intervalRef = useRef(null);\n /* eslint-disable prefer-const */\n var cleanUpEvents;\n var onTouchMove = function onTouchMove(e) {\n if (touchedRef.current) {\n var currentY = Math.ceil(e.touches[0].pageY);\n var offsetY = touchYRef.current - currentY;\n touchYRef.current = currentY;\n if (callback(offsetY)) {\n e.preventDefault();\n }\n // Smooth interval\n clearInterval(intervalRef.current);\n intervalRef.current = setInterval(function () {\n offsetY *= SMOOTH_PTG;\n if (!callback(offsetY, true) || Math.abs(offsetY) <= 0.1) {\n clearInterval(intervalRef.current);\n }\n }, 16);\n }\n };\n var onTouchEnd = function onTouchEnd() {\n touchedRef.current = false;\n cleanUpEvents();\n };\n var onTouchStart = function onTouchStart(e) {\n cleanUpEvents();\n if (e.touches.length === 1 && !touchedRef.current) {\n touchedRef.current = true;\n touchYRef.current = Math.ceil(e.touches[0].pageY);\n elementRef.current = e.target;\n elementRef.current.addEventListener('touchmove', onTouchMove);\n elementRef.current.addEventListener('touchend', onTouchEnd);\n }\n };\n cleanUpEvents = function cleanUpEvents() {\n if (elementRef.current) {\n elementRef.current.removeEventListener('touchmove', onTouchMove);\n elementRef.current.removeEventListener('touchend', onTouchEnd);\n }\n };\n useLayoutEffect(function () {\n if (inVirtual) {\n listRef.current.addEventListener('touchstart', onTouchStart);\n }\n return function () {\n var _listRef$current;\n (_listRef$current = listRef.current) === null || _listRef$current === void 0 ? void 0 : _listRef$current.removeEventListener('touchstart', onTouchStart);\n cleanUpEvents();\n clearInterval(intervalRef.current);\n };\n }, [inVirtual]);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"className\", \"height\", \"itemHeight\", \"fullHeight\", \"style\", \"data\", \"children\", \"itemKey\", \"virtual\", \"direction\", \"component\", \"onScroll\", \"onVisibleChange\", \"innerProps\"];\nimport * as React from 'react';\nimport { useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport Filler from './Filler';\nimport ScrollBar from './ScrollBar';\nimport useChildren from './hooks/useChildren';\nimport useHeights from './hooks/useHeights';\nimport useScrollTo from './hooks/useScrollTo';\nimport useDiffItem from './hooks/useDiffItem';\nimport useFrameWheel from './hooks/useFrameWheel';\nimport useMobileTouchMove from './hooks/useMobileTouchMove';\nimport useOriginScroll from './hooks/useOriginScroll';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nvar EMPTY_DATA = [];\nvar ScrollStyle = {\n overflowY: 'auto',\n overflowAnchor: 'none'\n};\nexport function RawList(props, ref) {\n var _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-virtual-list' : _props$prefixCls,\n className = props.className,\n height = props.height,\n itemHeight = props.itemHeight,\n _props$fullHeight = props.fullHeight,\n fullHeight = _props$fullHeight === void 0 ? true : _props$fullHeight,\n style = props.style,\n data = props.data,\n children = props.children,\n itemKey = props.itemKey,\n virtual = props.virtual,\n direction = props.direction,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'div' : _props$component,\n onScroll = props.onScroll,\n onVisibleChange = props.onVisibleChange,\n innerProps = props.innerProps,\n restProps = _objectWithoutProperties(props, _excluded);\n // ================================= MISC =================================\n var useVirtual = !!(virtual !== false && height && itemHeight);\n var inVirtual = useVirtual && data && itemHeight * data.length > height;\n var _useState = useState(0),\n _useState2 = _slicedToArray(_useState, 2),\n scrollTop = _useState2[0],\n setScrollTop = _useState2[1];\n var _useState3 = useState(false),\n _useState4 = _slicedToArray(_useState3, 2),\n scrollMoving = _useState4[0],\n setScrollMoving = _useState4[1];\n var mergedClassName = classNames(prefixCls, _defineProperty({}, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), className);\n var mergedData = data || EMPTY_DATA;\n var componentRef = useRef();\n var fillerInnerRef = useRef();\n var scrollBarRef = useRef(); // Hack on scrollbar to enable flash call\n // =============================== Item Key ===============================\n var getKey = React.useCallback(function (item) {\n if (typeof itemKey === 'function') {\n return itemKey(item);\n }\n return item === null || item === void 0 ? void 0 : item[itemKey];\n }, [itemKey]);\n var sharedConfig = {\n getKey: getKey\n };\n // ================================ Scroll ================================\n function syncScrollTop(newTop) {\n setScrollTop(function (origin) {\n var value;\n if (typeof newTop === 'function') {\n value = newTop(origin);\n } else {\n value = newTop;\n }\n var alignedTop = keepInRange(value);\n componentRef.current.scrollTop = alignedTop;\n return alignedTop;\n });\n }\n // ================================ Legacy ================================\n // Put ref here since the range is generate by follow\n var rangeRef = useRef({\n start: 0,\n end: mergedData.length\n });\n var diffItemRef = useRef();\n var _useDiffItem = useDiffItem(mergedData, getKey),\n _useDiffItem2 = _slicedToArray(_useDiffItem, 1),\n diffItem = _useDiffItem2[0];\n diffItemRef.current = diffItem;\n // ================================ Height ================================\n var _useHeights = useHeights(getKey, null, null),\n _useHeights2 = _slicedToArray(_useHeights, 4),\n setInstanceRef = _useHeights2[0],\n collectHeight = _useHeights2[1],\n heights = _useHeights2[2],\n heightUpdatedMark = _useHeights2[3];\n // ========================== Visible Calculation =========================\n var _React$useMemo = React.useMemo(function () {\n if (!useVirtual) {\n return {\n scrollHeight: undefined,\n start: 0,\n end: mergedData.length - 1,\n offset: undefined\n };\n }\n // Always use virtual scroll bar in avoid shaking\n if (!inVirtual) {\n var _fillerInnerRef$curre;\n return {\n scrollHeight: ((_fillerInnerRef$curre = fillerInnerRef.current) === null || _fillerInnerRef$curre === void 0 ? void 0 : _fillerInnerRef$curre.offsetHeight) || 0,\n start: 0,\n end: mergedData.length - 1,\n offset: undefined\n };\n }\n var itemTop = 0;\n var startIndex;\n var startOffset;\n var endIndex;\n var dataLen = mergedData.length;\n for (var i = 0; i < dataLen; i += 1) {\n var item = mergedData[i];\n var key = getKey(item);\n var cacheHeight = heights.get(key);\n var currentItemBottom = itemTop + (cacheHeight === undefined ? itemHeight : cacheHeight);\n // Check item top in the range\n if (currentItemBottom >= scrollTop && startIndex === undefined) {\n startIndex = i;\n startOffset = itemTop;\n }\n // Check item bottom in the range. We will render additional one item for motion usage\n if (currentItemBottom > scrollTop + height && endIndex === undefined) {\n endIndex = i;\n }\n itemTop = currentItemBottom;\n }\n // When scrollTop at the end but data cut to small count will reach this\n if (startIndex === undefined) {\n startIndex = 0;\n startOffset = 0;\n endIndex = Math.ceil(height / itemHeight);\n }\n if (endIndex === undefined) {\n endIndex = mergedData.length - 1;\n }\n // Give cache to improve scroll experience\n endIndex = Math.min(endIndex + 1, mergedData.length);\n return {\n scrollHeight: itemTop,\n start: startIndex,\n end: endIndex,\n offset: startOffset\n };\n }, [inVirtual, useVirtual, scrollTop, mergedData, heightUpdatedMark, height]),\n scrollHeight = _React$useMemo.scrollHeight,\n start = _React$useMemo.start,\n end = _React$useMemo.end,\n offset = _React$useMemo.offset;\n rangeRef.current.start = start;\n rangeRef.current.end = end;\n // =============================== In Range ===============================\n var maxScrollHeight = scrollHeight - height;\n var maxScrollHeightRef = useRef(maxScrollHeight);\n maxScrollHeightRef.current = maxScrollHeight;\n function keepInRange(newScrollTop) {\n var newTop = newScrollTop;\n if (!Number.isNaN(maxScrollHeightRef.current)) {\n newTop = Math.min(newTop, maxScrollHeightRef.current);\n }\n newTop = Math.max(newTop, 0);\n return newTop;\n }\n var isScrollAtTop = scrollTop <= 0;\n var isScrollAtBottom = scrollTop >= maxScrollHeight;\n var originScroll = useOriginScroll(isScrollAtTop, isScrollAtBottom);\n // ================================ Scroll ================================\n function onScrollBar(newScrollTop) {\n var newTop = newScrollTop;\n syncScrollTop(newTop);\n }\n // When data size reduce. It may trigger native scroll event back to fit scroll position\n function onFallbackScroll(e) {\n var newScrollTop = e.currentTarget.scrollTop;\n if (newScrollTop !== scrollTop) {\n syncScrollTop(newScrollTop);\n }\n // Trigger origin onScroll\n onScroll === null || onScroll === void 0 ? void 0 : onScroll(e);\n }\n // Since this added in global,should use ref to keep update\n var _useFrameWheel = useFrameWheel(useVirtual, isScrollAtTop, isScrollAtBottom, function (offsetY) {\n syncScrollTop(function (top) {\n var newTop = top + offsetY;\n return newTop;\n });\n }),\n _useFrameWheel2 = _slicedToArray(_useFrameWheel, 2),\n onRawWheel = _useFrameWheel2[0],\n onFireFoxScroll = _useFrameWheel2[1];\n // Mobile touch move\n useMobileTouchMove(useVirtual, componentRef, function (deltaY, smoothOffset) {\n if (originScroll(deltaY, smoothOffset)) {\n return false;\n }\n onRawWheel({\n preventDefault: function preventDefault() {},\n deltaY: deltaY\n });\n return true;\n });\n useLayoutEffect(function () {\n // Firefox only\n function onMozMousePixelScroll(e) {\n if (useVirtual) {\n e.preventDefault();\n }\n }\n componentRef.current.addEventListener('wheel', onRawWheel);\n componentRef.current.addEventListener('DOMMouseScroll', onFireFoxScroll);\n componentRef.current.addEventListener('MozMousePixelScroll', onMozMousePixelScroll);\n return function () {\n if (componentRef.current) {\n componentRef.current.removeEventListener('wheel', onRawWheel);\n componentRef.current.removeEventListener('DOMMouseScroll', onFireFoxScroll);\n componentRef.current.removeEventListener('MozMousePixelScroll', onMozMousePixelScroll);\n }\n };\n }, [useVirtual]);\n // ================================= Ref ==================================\n var scrollTo = useScrollTo(componentRef, mergedData, heights, itemHeight, getKey, collectHeight, syncScrollTop, function () {\n var _scrollBarRef$current;\n (_scrollBarRef$current = scrollBarRef.current) === null || _scrollBarRef$current === void 0 ? void 0 : _scrollBarRef$current.delayHidden();\n });\n React.useImperativeHandle(ref, function () {\n return {\n scrollTo: scrollTo\n };\n });\n // ================================ Effect ================================\n /** We need told outside that some list not rendered */\n useLayoutEffect(function () {\n if (onVisibleChange) {\n var renderList = mergedData.slice(start, end + 1);\n onVisibleChange(renderList, mergedData);\n }\n }, [start, end, mergedData]);\n // ================================ Render ================================\n var listChildren = useChildren(mergedData, start, end, setInstanceRef, children, sharedConfig);\n var componentStyle = null;\n if (height) {\n componentStyle = _objectSpread(_defineProperty({}, fullHeight ? 'height' : 'maxHeight', height), ScrollStyle);\n if (useVirtual) {\n componentStyle.overflowY = 'hidden';\n if (scrollMoving) {\n componentStyle.pointerEvents = 'none';\n }\n }\n }\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n style: _objectSpread(_objectSpread({}, style), {}, {\n position: 'relative'\n }),\n className: mergedClassName\n }, restProps), /*#__PURE__*/React.createElement(Component, {\n className: \"\".concat(prefixCls, \"-holder\"),\n style: componentStyle,\n ref: componentRef,\n onScroll: onFallbackScroll\n }, /*#__PURE__*/React.createElement(Filler, {\n prefixCls: prefixCls,\n height: scrollHeight,\n offset: offset,\n onInnerResize: collectHeight,\n ref: fillerInnerRef,\n innerProps: innerProps\n }, listChildren)), useVirtual && /*#__PURE__*/React.createElement(ScrollBar, {\n ref: scrollBarRef,\n prefixCls: prefixCls,\n scrollTop: scrollTop,\n height: height,\n scrollHeight: scrollHeight,\n count: mergedData.length,\n direction: direction,\n onScroll: onScrollBar,\n onStartMove: function onStartMove() {\n setScrollMoving(true);\n },\n onStopMove: function onStopMove() {\n setScrollMoving(false);\n }\n }));\n}\nvar List = /*#__PURE__*/React.forwardRef(RawList);\nList.displayName = 'List';\nexport default List;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useRef, useEffect } from 'react';\nimport findDOMNode from \"rc-util/es/Dom/findDOMNode\";\nimport raf from \"rc-util/es/raf\";\nimport CacheMap from '../utils/CacheMap';\nexport default function useHeights(getKey, onItemAdd, onItemRemove) {\n var _React$useState = React.useState(0),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n updatedMark = _React$useState2[0],\n setUpdatedMark = _React$useState2[1];\n var instanceRef = useRef(new Map());\n var heightsRef = useRef(new CacheMap());\n var collectRafRef = useRef();\n function cancelRaf() {\n raf.cancel(collectRafRef.current);\n }\n function collectHeight() {\n cancelRaf();\n collectRafRef.current = raf(function () {\n instanceRef.current.forEach(function (element, key) {\n if (element && element.offsetParent) {\n var htmlElement = findDOMNode(element);\n var offsetHeight = htmlElement.offsetHeight;\n if (heightsRef.current.get(key) !== offsetHeight) {\n heightsRef.current.set(key, htmlElement.offsetHeight);\n }\n }\n });\n // Always trigger update mark to tell parent that should re-calculate heights when resized\n setUpdatedMark(function (c) {\n return c + 1;\n });\n });\n }\n function setInstanceRef(item, instance) {\n var key = getKey(item);\n var origin = instanceRef.current.get(key);\n if (instance) {\n instanceRef.current.set(key, instance);\n collectHeight();\n } else {\n instanceRef.current.delete(key);\n }\n // Instance changed\n if (!origin !== !instance) {\n if (instance) {\n onItemAdd === null || onItemAdd === void 0 ? void 0 : onItemAdd(item);\n } else {\n onItemRemove === null || onItemRemove === void 0 ? void 0 : onItemRemove(item);\n }\n }\n }\n useEffect(function () {\n return cancelRaf;\n }, []);\n return [setInstanceRef, collectHeight, heightsRef.current, updatedMark];\n}","import { useRef } from 'react';\nimport raf from \"rc-util/es/raf\";\nimport isFF from '../utils/isFirefox';\nimport useOriginScroll from './useOriginScroll';\nexport default function useFrameWheel(inVirtual, isScrollAtTop, isScrollAtBottom, onWheelDelta) {\n var offsetRef = useRef(0);\n var nextFrameRef = useRef(null);\n // Firefox patch\n var wheelValueRef = useRef(null);\n var isMouseScrollRef = useRef(false);\n // Scroll status sync\n var originScroll = useOriginScroll(isScrollAtTop, isScrollAtBottom);\n function onWheel(event) {\n if (!inVirtual) return;\n raf.cancel(nextFrameRef.current);\n var deltaY = event.deltaY;\n offsetRef.current += deltaY;\n wheelValueRef.current = deltaY;\n // Do nothing when scroll at the edge, Skip check when is in scroll\n if (originScroll(deltaY)) return;\n // Proxy of scroll events\n if (!isFF) {\n event.preventDefault();\n }\n nextFrameRef.current = raf(function () {\n // Patch a multiple for Firefox to fix wheel number too small\n // ref: https://github.com/ant-design/ant-design/issues/26372#issuecomment-679460266\n var patchMultiple = isMouseScrollRef.current ? 10 : 1;\n onWheelDelta(offsetRef.current * patchMultiple);\n offsetRef.current = 0;\n });\n }\n // A patch for firefox\n function onFireFoxScroll(event) {\n if (!inVirtual) return;\n isMouseScrollRef.current = event.detail === wheelValueRef.current;\n }\n return [onWheel, onFireFoxScroll];\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\n/* eslint-disable no-param-reassign */\nimport * as React from 'react';\nimport raf from \"rc-util/es/raf\";\nexport default function useScrollTo(containerRef, data, heights, itemHeight, getKey, collectHeight, syncScrollTop, triggerFlash) {\n var scrollRef = React.useRef();\n return function (arg) {\n // When not argument provided, we think dev may want to show the scrollbar\n if (arg === null || arg === undefined) {\n triggerFlash();\n return;\n }\n // Normal scroll logic\n raf.cancel(scrollRef.current);\n if (typeof arg === 'number') {\n syncScrollTop(arg);\n } else if (arg && _typeof(arg) === 'object') {\n var index;\n var align = arg.align;\n if ('index' in arg) {\n index = arg.index;\n } else {\n index = data.findIndex(function (item) {\n return getKey(item) === arg.key;\n });\n }\n var _arg$offset = arg.offset,\n offset = _arg$offset === void 0 ? 0 : _arg$offset;\n // We will retry 3 times in case dynamic height shaking\n var syncScroll = function syncScroll(times, targetAlign) {\n if (times < 0 || !containerRef.current) return;\n var height = containerRef.current.clientHeight;\n var needCollectHeight = false;\n var newTargetAlign = targetAlign;\n // Go to next frame if height not exist\n if (height) {\n var mergedAlign = targetAlign || align;\n // Get top & bottom\n var stackTop = 0;\n var itemTop = 0;\n var itemBottom = 0;\n var maxLen = Math.min(data.length, index);\n for (var i = 0; i <= maxLen; i += 1) {\n var key = getKey(data[i]);\n itemTop = stackTop;\n var cacheHeight = heights.get(key);\n itemBottom = itemTop + (cacheHeight === undefined ? itemHeight : cacheHeight);\n stackTop = itemBottom;\n if (i === index && cacheHeight === undefined) {\n needCollectHeight = true;\n }\n }\n // Scroll to\n var targetTop = null;\n switch (mergedAlign) {\n case 'top':\n targetTop = itemTop - offset;\n break;\n case 'bottom':\n targetTop = itemBottom - height + offset;\n break;\n default:\n {\n var scrollTop = containerRef.current.scrollTop;\n var scrollBottom = scrollTop + height;\n if (itemTop < scrollTop) {\n newTargetAlign = 'top';\n } else if (itemBottom > scrollBottom) {\n newTargetAlign = 'bottom';\n }\n }\n }\n if (targetTop !== null && targetTop !== containerRef.current.scrollTop) {\n syncScrollTop(targetTop);\n }\n }\n // We will retry since element may not sync height as it described\n scrollRef.current = raf(function () {\n if (needCollectHeight) {\n collectHeight();\n }\n syncScroll(times - 1, newTargetAlign);\n }, 2); // Delay 2 to wait for List collect heights\n };\n\n syncScroll(3);\n }\n };\n}","import * as React from 'react';\nimport { Item } from '../Item';\nexport default function useChildren(list, startIndex, endIndex, setNodeRef, renderFunc, _ref) {\n var getKey = _ref.getKey;\n return list.slice(startIndex, endIndex + 1).map(function (item, index) {\n var eleIndex = startIndex + index;\n var node = renderFunc(item, eleIndex, {\n // style: status === 'MEASURE_START' ? { visibility: 'hidden' } : {},\n });\n var key = getKey(item);\n return /*#__PURE__*/React.createElement(Item, {\n key: key,\n setRef: function setRef(ele) {\n return setNodeRef(item, ele);\n }\n }, node);\n });\n}","import List from './List';\nexport default List;","import * as React from 'react';\n\n// Use any here since we do not get the type during compilation\n\nvar SelectContext = /*#__PURE__*/React.createContext(null);\nexport default SelectContext;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nvar _excluded = [\"disabled\", \"title\", \"children\", \"style\", \"className\"];\nimport classNames from 'classnames';\nimport useMemo from \"rc-util/es/hooks/useMemo\";\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport omit from \"rc-util/es/omit\";\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nimport List from 'rc-virtual-list';\nimport * as React from 'react';\nimport { useEffect } from 'react';\nimport useBaseProps from \"./hooks/useBaseProps\";\nimport SelectContext from \"./SelectContext\";\nimport TransBtn from \"./TransBtn\";\nimport { isPlatformMac } from \"./utils/platformUtil\";\n\n// export interface OptionListProps {\n\nfunction isTitleType(content) {\n return typeof content === 'string' || typeof content === 'number';\n}\n\n/**\n * Using virtual list of option display.\n * Will fallback to dom if use customize render.\n */\nvar OptionList = function OptionList(_, ref) {\n var _useBaseProps = useBaseProps(),\n prefixCls = _useBaseProps.prefixCls,\n id = _useBaseProps.id,\n open = _useBaseProps.open,\n multiple = _useBaseProps.multiple,\n mode = _useBaseProps.mode,\n searchValue = _useBaseProps.searchValue,\n toggleOpen = _useBaseProps.toggleOpen,\n notFoundContent = _useBaseProps.notFoundContent,\n onPopupScroll = _useBaseProps.onPopupScroll;\n var _React$useContext = React.useContext(SelectContext),\n flattenOptions = _React$useContext.flattenOptions,\n onActiveValue = _React$useContext.onActiveValue,\n defaultActiveFirstOption = _React$useContext.defaultActiveFirstOption,\n onSelect = _React$useContext.onSelect,\n menuItemSelectedIcon = _React$useContext.menuItemSelectedIcon,\n rawValues = _React$useContext.rawValues,\n fieldNames = _React$useContext.fieldNames,\n virtual = _React$useContext.virtual,\n direction = _React$useContext.direction,\n listHeight = _React$useContext.listHeight,\n listItemHeight = _React$useContext.listItemHeight;\n var itemPrefixCls = \"\".concat(prefixCls, \"-item\");\n var memoFlattenOptions = useMemo(function () {\n return flattenOptions;\n }, [open, flattenOptions], function (prev, next) {\n return next[0] && prev[1] !== next[1];\n });\n\n // =========================== List ===========================\n var listRef = React.useRef(null);\n var onListMouseDown = function onListMouseDown(event) {\n event.preventDefault();\n };\n var scrollIntoView = function scrollIntoView(args) {\n if (listRef.current) {\n listRef.current.scrollTo(typeof args === 'number' ? {\n index: args\n } : args);\n }\n };\n\n // ========================== Active ==========================\n var getEnabledActiveIndex = function getEnabledActiveIndex(index) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var len = memoFlattenOptions.length;\n for (var i = 0; i < len; i += 1) {\n var current = (index + i * offset + len) % len;\n var _memoFlattenOptions$c = memoFlattenOptions[current],\n group = _memoFlattenOptions$c.group,\n data = _memoFlattenOptions$c.data;\n if (!group && !data.disabled) {\n return current;\n }\n }\n return -1;\n };\n var _React$useState = React.useState(function () {\n return getEnabledActiveIndex(0);\n }),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n activeIndex = _React$useState2[0],\n setActiveIndex = _React$useState2[1];\n var setActive = function setActive(index) {\n var fromKeyboard = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n setActiveIndex(index);\n var info = {\n source: fromKeyboard ? 'keyboard' : 'mouse'\n };\n\n // Trigger active event\n var flattenItem = memoFlattenOptions[index];\n if (!flattenItem) {\n onActiveValue(null, -1, info);\n return;\n }\n onActiveValue(flattenItem.value, index, info);\n };\n\n // Auto active first item when list length or searchValue changed\n useEffect(function () {\n setActive(defaultActiveFirstOption !== false ? getEnabledActiveIndex(0) : -1);\n }, [memoFlattenOptions.length, searchValue]);\n\n // https://github.com/ant-design/ant-design/issues/34975\n var isSelected = React.useCallback(function (value) {\n return rawValues.has(value) && mode !== 'combobox';\n }, [mode, _toConsumableArray(rawValues).toString(), rawValues.size]);\n\n // Auto scroll to item position in single mode\n useEffect(function () {\n /**\n * React will skip `onChange` when component update.\n * `setActive` function will call root accessibility state update which makes re-render.\n * So we need to delay to let Input component trigger onChange first.\n */\n var timeoutId = setTimeout(function () {\n if (!multiple && open && rawValues.size === 1) {\n var value = Array.from(rawValues)[0];\n var index = memoFlattenOptions.findIndex(function (_ref) {\n var data = _ref.data;\n return data.value === value;\n });\n if (index !== -1) {\n setActive(index);\n scrollIntoView(index);\n }\n }\n });\n\n // Force trigger scrollbar visible when open\n if (open) {\n var _listRef$current;\n (_listRef$current = listRef.current) === null || _listRef$current === void 0 ? void 0 : _listRef$current.scrollTo(undefined);\n }\n return function () {\n return clearTimeout(timeoutId);\n };\n }, [open, searchValue, flattenOptions.length]);\n\n // ========================== Values ==========================\n var onSelectValue = function onSelectValue(value) {\n if (value !== undefined) {\n onSelect(value, {\n selected: !rawValues.has(value)\n });\n }\n\n // Single mode should always close by select\n if (!multiple) {\n toggleOpen(false);\n }\n };\n\n // ========================= Keyboard =========================\n React.useImperativeHandle(ref, function () {\n return {\n onKeyDown: function onKeyDown(event) {\n var which = event.which,\n ctrlKey = event.ctrlKey;\n switch (which) {\n // >>> Arrow keys & ctrl + n/p on Mac\n case KeyCode.N:\n case KeyCode.P:\n case KeyCode.UP:\n case KeyCode.DOWN:\n {\n var offset = 0;\n if (which === KeyCode.UP) {\n offset = -1;\n } else if (which === KeyCode.DOWN) {\n offset = 1;\n } else if (isPlatformMac() && ctrlKey) {\n if (which === KeyCode.N) {\n offset = 1;\n } else if (which === KeyCode.P) {\n offset = -1;\n }\n }\n if (offset !== 0) {\n var nextActiveIndex = getEnabledActiveIndex(activeIndex + offset, offset);\n scrollIntoView(nextActiveIndex);\n setActive(nextActiveIndex, true);\n }\n break;\n }\n\n // >>> Select\n case KeyCode.ENTER:\n {\n // value\n var item = memoFlattenOptions[activeIndex];\n if (item && !item.data.disabled) {\n onSelectValue(item.value);\n } else {\n onSelectValue(undefined);\n }\n if (open) {\n event.preventDefault();\n }\n break;\n }\n\n // >>> Close\n case KeyCode.ESC:\n {\n toggleOpen(false);\n if (open) {\n event.stopPropagation();\n }\n }\n }\n },\n onKeyUp: function onKeyUp() {},\n scrollTo: function scrollTo(index) {\n scrollIntoView(index);\n }\n };\n });\n\n // ========================== Render ==========================\n if (memoFlattenOptions.length === 0) {\n return /*#__PURE__*/React.createElement(\"div\", {\n role: \"listbox\",\n id: \"\".concat(id, \"_list\"),\n className: \"\".concat(itemPrefixCls, \"-empty\"),\n onMouseDown: onListMouseDown\n }, notFoundContent);\n }\n var omitFieldNameList = Object.keys(fieldNames).map(function (key) {\n return fieldNames[key];\n });\n var getLabel = function getLabel(item) {\n return item.label;\n };\n function getItemAriaProps(item, index) {\n var group = item.group;\n return {\n role: group ? 'presentation' : 'option',\n id: \"\".concat(id, \"_list_\").concat(index)\n };\n }\n var renderItem = function renderItem(index) {\n var item = memoFlattenOptions[index];\n if (!item) return null;\n var itemData = item.data || {};\n var value = itemData.value;\n var group = item.group;\n var attrs = pickAttrs(itemData, true);\n var mergedLabel = getLabel(item);\n return item ? /*#__PURE__*/React.createElement(\"div\", _extends({\n \"aria-label\": typeof mergedLabel === 'string' && !group ? mergedLabel : null\n }, attrs, {\n key: index\n }, getItemAriaProps(item, index), {\n \"aria-selected\": isSelected(value)\n }), value) : null;\n };\n var a11yProps = {\n role: 'listbox',\n id: \"\".concat(id, \"_list\")\n };\n return /*#__PURE__*/React.createElement(React.Fragment, null, virtual && /*#__PURE__*/React.createElement(\"div\", _extends({}, a11yProps, {\n style: {\n height: 0,\n width: 0,\n overflow: 'hidden'\n }\n }), renderItem(activeIndex - 1), renderItem(activeIndex), renderItem(activeIndex + 1)), /*#__PURE__*/React.createElement(List, {\n itemKey: \"key\",\n ref: listRef,\n data: memoFlattenOptions,\n height: listHeight,\n itemHeight: listItemHeight,\n fullHeight: false,\n onMouseDown: onListMouseDown,\n onScroll: onPopupScroll,\n virtual: virtual,\n direction: direction,\n innerProps: virtual ? null : a11yProps\n }, function (item, itemIndex) {\n var _classNames;\n var group = item.group,\n groupOption = item.groupOption,\n data = item.data,\n label = item.label,\n value = item.value;\n var key = data.key;\n\n // Group\n if (group) {\n var _data$title;\n var groupTitle = (_data$title = data.title) !== null && _data$title !== void 0 ? _data$title : isTitleType(label) ? label.toString() : undefined;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(itemPrefixCls, \"\".concat(itemPrefixCls, \"-group\")),\n title: groupTitle\n }, label !== undefined ? label : key);\n }\n var disabled = data.disabled,\n title = data.title,\n children = data.children,\n style = data.style,\n className = data.className,\n otherProps = _objectWithoutProperties(data, _excluded);\n var passedProps = omit(otherProps, omitFieldNameList);\n\n // Option\n var selected = isSelected(value);\n var optionPrefixCls = \"\".concat(itemPrefixCls, \"-option\");\n var optionClassName = classNames(itemPrefixCls, optionPrefixCls, className, (_classNames = {}, _defineProperty(_classNames, \"\".concat(optionPrefixCls, \"-grouped\"), groupOption), _defineProperty(_classNames, \"\".concat(optionPrefixCls, \"-active\"), activeIndex === itemIndex && !disabled), _defineProperty(_classNames, \"\".concat(optionPrefixCls, \"-disabled\"), disabled), _defineProperty(_classNames, \"\".concat(optionPrefixCls, \"-selected\"), selected), _classNames));\n var mergedLabel = getLabel(item);\n var iconVisible = !menuItemSelectedIcon || typeof menuItemSelectedIcon === 'function' || selected;\n\n // https://github.com/ant-design/ant-design/issues/34145\n var content = typeof mergedLabel === 'number' ? mergedLabel : mergedLabel || value;\n // https://github.com/ant-design/ant-design/issues/26717\n var optionTitle = isTitleType(content) ? content.toString() : undefined;\n if (title !== undefined) {\n optionTitle = title;\n }\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, pickAttrs(passedProps), !virtual ? getItemAriaProps(item, itemIndex) : {}, {\n \"aria-selected\": selected,\n className: optionClassName,\n title: optionTitle,\n onMouseMove: function onMouseMove() {\n if (activeIndex === itemIndex || disabled) {\n return;\n }\n setActive(itemIndex);\n },\n onClick: function onClick() {\n if (!disabled) {\n onSelectValue(value);\n }\n },\n style: style\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(optionPrefixCls, \"-content\")\n }, content), /*#__PURE__*/React.isValidElement(menuItemSelectedIcon) || selected, iconVisible && /*#__PURE__*/React.createElement(TransBtn, {\n className: \"\".concat(itemPrefixCls, \"-option-state\"),\n customizeIcon: menuItemSelectedIcon,\n customizeIconProps: {\n isSelected: selected\n }\n }, selected ? '✓' : null));\n }));\n};\nvar RefOptionList = /*#__PURE__*/React.forwardRef(OptionList);\nRefOptionList.displayName = 'OptionList';\nexport default RefOptionList;","/* istanbul ignore file */\nexport function isPlatformMac() {\n return /(mac\\sos|macintosh)/i.test(navigator.appVersion);\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport toNodeArray from \"rc-util/es/Children/toArray\";\nimport warning, { noteOnce } from \"rc-util/es/warning\";\nimport * as React from 'react';\nimport { isMultiple } from \"../BaseSelect\";\nimport { toArray } from \"./commonUtil\";\nimport { convertChildrenToData } from \"./legacyUtil\";\nfunction warningProps(props) {\n var mode = props.mode,\n options = props.options,\n children = props.children,\n backfill = props.backfill,\n allowClear = props.allowClear,\n placeholder = props.placeholder,\n getInputElement = props.getInputElement,\n showSearch = props.showSearch,\n onSearch = props.onSearch,\n defaultOpen = props.defaultOpen,\n autoFocus = props.autoFocus,\n labelInValue = props.labelInValue,\n value = props.value,\n inputValue = props.inputValue,\n optionLabelProp = props.optionLabelProp;\n var multiple = isMultiple(mode);\n var mergedShowSearch = showSearch !== undefined ? showSearch : multiple || mode === 'combobox';\n var mergedOptions = options || convertChildrenToData(children);\n\n // `tags` should not set option as disabled\n warning(mode !== 'tags' || mergedOptions.every(function (opt) {\n return !opt.disabled;\n }), 'Please avoid setting option to disabled in tags mode since user can always type text as tag.');\n\n // `combobox` & `tags` should option be `string` type\n if (mode === 'tags' || mode === 'combobox') {\n var hasNumberValue = mergedOptions.some(function (item) {\n if (item.options) {\n return item.options.some(function (opt) {\n return typeof ('value' in opt ? opt.value : opt.key) === 'number';\n });\n }\n return typeof ('value' in item ? item.value : item.key) === 'number';\n });\n warning(!hasNumberValue, '`value` of Option should not use number type when `mode` is `tags` or `combobox`.');\n }\n\n // `combobox` should not use `optionLabelProp`\n warning(mode !== 'combobox' || !optionLabelProp, '`combobox` mode not support `optionLabelProp`. Please set `value` on Option directly.');\n\n // Only `combobox` support `backfill`\n warning(mode === 'combobox' || !backfill, '`backfill` only works with `combobox` mode.');\n\n // Only `combobox` support `getInputElement`\n warning(mode === 'combobox' || !getInputElement, '`getInputElement` only work with `combobox` mode.');\n\n // Customize `getInputElement` should not use `allowClear` & `placeholder`\n noteOnce(mode !== 'combobox' || !getInputElement || !allowClear || !placeholder, 'Customize `getInputElement` should customize clear and placeholder logic instead of configuring `allowClear` and `placeholder`.');\n\n // `onSearch` should use in `combobox` or `showSearch`\n if (onSearch && !mergedShowSearch && mode !== 'combobox' && mode !== 'tags') {\n warning(false, '`onSearch` should work with `showSearch` instead of use alone.');\n }\n noteOnce(!defaultOpen || autoFocus, '`defaultOpen` makes Select open without focus which means it will not close by click outside. You can set `autoFocus` if needed.');\n if (value !== undefined && value !== null) {\n var values = toArray(value);\n warning(!labelInValue || values.every(function (val) {\n return _typeof(val) === 'object' && ('key' in val || 'value' in val);\n }), '`value` should in shape of `{ value: string | number, label?: ReactNode }` when you set `labelInValue` to `true`');\n warning(!multiple || Array.isArray(value), '`value` should be array when `mode` is `multiple` or `tags`');\n }\n\n // Syntactic sugar should use correct children type\n if (children) {\n var invalidateChildType = null;\n toNodeArray(children).some(function (node) {\n if (! /*#__PURE__*/React.isValidElement(node) || !node.type) {\n return false;\n }\n var _ref = node,\n type = _ref.type;\n if (type.isSelectOption) {\n return false;\n }\n if (type.isSelectOptGroup) {\n var allChildrenValid = toNodeArray(node.props.children).every(function (subNode) {\n if (! /*#__PURE__*/React.isValidElement(subNode) || !node.type || subNode.type.isSelectOption) {\n return true;\n }\n invalidateChildType = subNode.type;\n return false;\n });\n if (allChildrenValid) {\n return false;\n }\n return true;\n }\n invalidateChildType = type;\n return true;\n });\n if (invalidateChildType) {\n warning(false, \"`children` should be `Select.Option` or `Select.OptGroup` instead of `\".concat(invalidateChildType.displayName || invalidateChildType.name || invalidateChildType, \"`.\"));\n }\n warning(inputValue === undefined, '`inputValue` is deprecated, please use `searchValue` instead.');\n }\n}\n\n// value in Select option should not be null\n// note: OptGroup has options too\nexport function warningNullOptions(options, fieldNames) {\n if (options) {\n var recursiveOptions = function recursiveOptions(optionsList) {\n var inGroup = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n for (var i = 0; i < optionsList.length; i++) {\n var option = optionsList[i];\n if (option[fieldNames === null || fieldNames === void 0 ? void 0 : fieldNames.value] === null) {\n warning(false, '`value` in Select options should not be `null`.');\n return true;\n }\n if (!inGroup && Array.isArray(option[fieldNames === null || fieldNames === void 0 ? void 0 : fieldNames.options]) && recursiveOptions(option[fieldNames === null || fieldNames === void 0 ? void 0 : fieldNames.options], true)) {\n break;\n }\n }\n };\n recursiveOptions(options);\n }\n}\nexport default warningProps;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar _excluded = [\"id\", \"mode\", \"prefixCls\", \"backfill\", \"fieldNames\", \"inputValue\", \"searchValue\", \"onSearch\", \"autoClearSearchValue\", \"onSelect\", \"onDeselect\", \"dropdownMatchSelectWidth\", \"filterOption\", \"filterSort\", \"optionFilterProp\", \"optionLabelProp\", \"options\", \"children\", \"defaultActiveFirstOption\", \"menuItemSelectedIcon\", \"virtual\", \"direction\", \"listHeight\", \"listItemHeight\", \"value\", \"defaultValue\", \"labelInValue\", \"onChange\"];\n/**\n * To match accessibility requirement, we always provide an input in the component.\n * Other element will not set `tabIndex` to avoid `onBlur` sequence problem.\n * For focused select, we set `aria-live=\"polite\"` to update the accessibility content.\n *\n * ref:\n * - keyboard: https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/listbox_role#Keyboard_interactions\n *\n * New api:\n * - listHeight\n * - listItemHeight\n * - component\n *\n * Remove deprecated api:\n * - multiple\n * - tags\n * - combobox\n * - firstActiveValue\n * - dropdownMenuStyle\n * - openClassName (Not list in api)\n *\n * Update:\n * - `backfill` only support `combobox` mode\n * - `combobox` mode not support `labelInValue` since it's meaningless\n * - `getInputElement` only support `combobox` mode\n * - `onChange` return OptionData instead of ReactNode\n * - `filterOption` `onChange` `onSelect` accept OptionData instead of ReactNode\n * - `combobox` mode trigger `onChange` will get `undefined` if no `value` match in Option\n * - `combobox` mode not support `optionLabelProp`\n */\n\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport warning from \"rc-util/es/warning\";\nimport * as React from 'react';\nimport BaseSelect, { isMultiple } from \"./BaseSelect\";\nimport useCache from \"./hooks/useCache\";\nimport useFilterOptions from \"./hooks/useFilterOptions\";\nimport useId from \"./hooks/useId\";\nimport useOptions from \"./hooks/useOptions\";\nimport useRefFunc from \"./hooks/useRefFunc\";\nimport OptGroup from \"./OptGroup\";\nimport Option from \"./Option\";\nimport OptionList from \"./OptionList\";\nimport SelectContext from \"./SelectContext\";\nimport { hasValue, isComboNoValue, toArray } from \"./utils/commonUtil\";\nimport { fillFieldNames, flattenOptions, injectPropsWithOption } from \"./utils/valueUtil\";\nimport warningProps, { warningNullOptions } from \"./utils/warningPropsUtil\";\nvar OMIT_DOM_PROPS = ['inputValue'];\nfunction isRawValue(value) {\n return !value || _typeof(value) !== 'object';\n}\nvar Select = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var id = props.id,\n mode = props.mode,\n _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-select' : _props$prefixCls,\n backfill = props.backfill,\n fieldNames = props.fieldNames,\n inputValue = props.inputValue,\n searchValue = props.searchValue,\n onSearch = props.onSearch,\n _props$autoClearSearc = props.autoClearSearchValue,\n autoClearSearchValue = _props$autoClearSearc === void 0 ? true : _props$autoClearSearc,\n onSelect = props.onSelect,\n onDeselect = props.onDeselect,\n _props$dropdownMatchS = props.dropdownMatchSelectWidth,\n dropdownMatchSelectWidth = _props$dropdownMatchS === void 0 ? true : _props$dropdownMatchS,\n filterOption = props.filterOption,\n filterSort = props.filterSort,\n optionFilterProp = props.optionFilterProp,\n optionLabelProp = props.optionLabelProp,\n options = props.options,\n children = props.children,\n defaultActiveFirstOption = props.defaultActiveFirstOption,\n menuItemSelectedIcon = props.menuItemSelectedIcon,\n virtual = props.virtual,\n direction = props.direction,\n _props$listHeight = props.listHeight,\n listHeight = _props$listHeight === void 0 ? 200 : _props$listHeight,\n _props$listItemHeight = props.listItemHeight,\n listItemHeight = _props$listItemHeight === void 0 ? 20 : _props$listItemHeight,\n value = props.value,\n defaultValue = props.defaultValue,\n labelInValue = props.labelInValue,\n onChange = props.onChange,\n restProps = _objectWithoutProperties(props, _excluded);\n var mergedId = useId(id);\n var multiple = isMultiple(mode);\n var childrenAsData = !!(!options && children);\n var mergedFilterOption = React.useMemo(function () {\n if (filterOption === undefined && mode === 'combobox') {\n return false;\n }\n return filterOption;\n }, [filterOption, mode]);\n\n // ========================= FieldNames =========================\n var mergedFieldNames = React.useMemo(function () {\n return fillFieldNames(fieldNames, childrenAsData);\n }, /* eslint-disable react-hooks/exhaustive-deps */\n [\n // We stringify fieldNames to avoid unnecessary re-renders.\n JSON.stringify(fieldNames), childrenAsData]\n /* eslint-enable react-hooks/exhaustive-deps */);\n\n // =========================== Search ===========================\n var _useMergedState = useMergedState('', {\n value: searchValue !== undefined ? searchValue : inputValue,\n postState: function postState(search) {\n return search || '';\n }\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n mergedSearchValue = _useMergedState2[0],\n setSearchValue = _useMergedState2[1];\n\n // =========================== Option ===========================\n var parsedOptions = useOptions(options, children, mergedFieldNames, optionFilterProp, optionLabelProp);\n var valueOptions = parsedOptions.valueOptions,\n labelOptions = parsedOptions.labelOptions,\n mergedOptions = parsedOptions.options;\n\n // ========================= Wrap Value =========================\n var convert2LabelValues = React.useCallback(function (draftValues) {\n // Convert to array\n var valueList = toArray(draftValues);\n\n // Convert to labelInValue type\n return valueList.map(function (val) {\n var rawValue;\n var rawLabel;\n var rawKey;\n var rawDisabled;\n var rawTitle;\n\n // Fill label & value\n if (isRawValue(val)) {\n rawValue = val;\n } else {\n var _val$value;\n rawKey = val.key;\n rawLabel = val.label;\n rawValue = (_val$value = val.value) !== null && _val$value !== void 0 ? _val$value : rawKey;\n }\n var option = valueOptions.get(rawValue);\n if (option) {\n var _option$key;\n // Fill missing props\n if (rawLabel === undefined) rawLabel = option === null || option === void 0 ? void 0 : option[optionLabelProp || mergedFieldNames.label];\n if (rawKey === undefined) rawKey = (_option$key = option === null || option === void 0 ? void 0 : option.key) !== null && _option$key !== void 0 ? _option$key : rawValue;\n rawDisabled = option === null || option === void 0 ? void 0 : option.disabled;\n rawTitle = option === null || option === void 0 ? void 0 : option.title;\n\n // Warning if label not same as provided\n if (process.env.NODE_ENV !== 'production' && !optionLabelProp) {\n var optionLabel = option === null || option === void 0 ? void 0 : option[mergedFieldNames.label];\n if (optionLabel !== undefined && ! /*#__PURE__*/React.isValidElement(optionLabel) && ! /*#__PURE__*/React.isValidElement(rawLabel) && optionLabel !== rawLabel) {\n warning(false, '`label` of `value` is not same as `label` in Select options.');\n }\n }\n }\n return {\n label: rawLabel,\n value: rawValue,\n key: rawKey,\n disabled: rawDisabled,\n title: rawTitle\n };\n });\n }, [mergedFieldNames, optionLabelProp, valueOptions]);\n\n // =========================== Values ===========================\n var _useMergedState3 = useMergedState(defaultValue, {\n value: value\n }),\n _useMergedState4 = _slicedToArray(_useMergedState3, 2),\n internalValue = _useMergedState4[0],\n setInternalValue = _useMergedState4[1];\n\n // Merged value with LabelValueType\n var rawLabeledValues = React.useMemo(function () {\n var _values$;\n var values = convert2LabelValues(internalValue);\n\n // combobox no need save value when it's no value (exclude value equal 0)\n if (mode === 'combobox' && isComboNoValue((_values$ = values[0]) === null || _values$ === void 0 ? void 0 : _values$.value)) {\n return [];\n }\n return values;\n }, [internalValue, convert2LabelValues, mode]);\n\n // Fill label with cache to avoid option remove\n var _useCache = useCache(rawLabeledValues, valueOptions),\n _useCache2 = _slicedToArray(_useCache, 2),\n mergedValues = _useCache2[0],\n getMixedOption = _useCache2[1];\n var displayValues = React.useMemo(function () {\n // `null` need show as placeholder instead\n // https://github.com/ant-design/ant-design/issues/25057\n if (!mode && mergedValues.length === 1) {\n var firstValue = mergedValues[0];\n if (firstValue.value === null && (firstValue.label === null || firstValue.label === undefined)) {\n return [];\n }\n }\n return mergedValues.map(function (item) {\n var _item$label;\n return _objectSpread(_objectSpread({}, item), {}, {\n label: (_item$label = item.label) !== null && _item$label !== void 0 ? _item$label : item.value\n });\n });\n }, [mode, mergedValues]);\n\n /** Convert `displayValues` to raw value type set */\n var rawValues = React.useMemo(function () {\n return new Set(mergedValues.map(function (val) {\n return val.value;\n }));\n }, [mergedValues]);\n React.useEffect(function () {\n if (mode === 'combobox') {\n var _mergedValues$;\n var strValue = (_mergedValues$ = mergedValues[0]) === null || _mergedValues$ === void 0 ? void 0 : _mergedValues$.value;\n setSearchValue(hasValue(strValue) ? String(strValue) : '');\n }\n }, [mergedValues]);\n\n // ======================= Display Option =======================\n // Create a placeholder item if not exist in `options`\n var createTagOption = useRefFunc(function (val, label) {\n var _ref;\n var mergedLabel = label !== null && label !== void 0 ? label : val;\n return _ref = {}, _defineProperty(_ref, mergedFieldNames.value, val), _defineProperty(_ref, mergedFieldNames.label, mergedLabel), _ref;\n });\n\n // Fill tag as option if mode is `tags`\n var filledTagOptions = React.useMemo(function () {\n if (mode !== 'tags') {\n return mergedOptions;\n }\n\n // >>> Tag mode\n var cloneOptions = _toConsumableArray(mergedOptions);\n\n // Check if value exist in options (include new patch item)\n var existOptions = function existOptions(val) {\n return valueOptions.has(val);\n };\n\n // Fill current value as option\n _toConsumableArray(mergedValues).sort(function (a, b) {\n return a.value < b.value ? -1 : 1;\n }).forEach(function (item) {\n var val = item.value;\n if (!existOptions(val)) {\n cloneOptions.push(createTagOption(val, item.label));\n }\n });\n return cloneOptions;\n }, [createTagOption, mergedOptions, valueOptions, mergedValues, mode]);\n var filteredOptions = useFilterOptions(filledTagOptions, mergedFieldNames, mergedSearchValue, mergedFilterOption, optionFilterProp);\n\n // Fill options with search value if needed\n var filledSearchOptions = React.useMemo(function () {\n if (mode !== 'tags' || !mergedSearchValue || filteredOptions.some(function (item) {\n return item[optionFilterProp || 'value'] === mergedSearchValue;\n })) {\n return filteredOptions;\n }\n // ignore when search value equal select input value\n if (filteredOptions.some(function (item) {\n return item[mergedFieldNames.value] === mergedSearchValue;\n })) {\n return filteredOptions;\n }\n // Fill search value as option\n return [createTagOption(mergedSearchValue)].concat(_toConsumableArray(filteredOptions));\n }, [createTagOption, optionFilterProp, mode, filteredOptions, mergedSearchValue, mergedFieldNames]);\n var orderedFilteredOptions = React.useMemo(function () {\n if (!filterSort) {\n return filledSearchOptions;\n }\n return _toConsumableArray(filledSearchOptions).sort(function (a, b) {\n return filterSort(a, b);\n });\n }, [filledSearchOptions, filterSort]);\n var displayOptions = React.useMemo(function () {\n return flattenOptions(orderedFilteredOptions, {\n fieldNames: mergedFieldNames,\n childrenAsData: childrenAsData\n });\n }, [orderedFilteredOptions, mergedFieldNames, childrenAsData]);\n\n // =========================== Change ===========================\n var triggerChange = function triggerChange(values) {\n var labeledValues = convert2LabelValues(values);\n setInternalValue(labeledValues);\n if (onChange && (\n // Trigger event only when value changed\n labeledValues.length !== mergedValues.length || labeledValues.some(function (newVal, index) {\n var _mergedValues$index;\n return ((_mergedValues$index = mergedValues[index]) === null || _mergedValues$index === void 0 ? void 0 : _mergedValues$index.value) !== (newVal === null || newVal === void 0 ? void 0 : newVal.value);\n }))) {\n var returnValues = labelInValue ? labeledValues : labeledValues.map(function (v) {\n return v.value;\n });\n var returnOptions = labeledValues.map(function (v) {\n return injectPropsWithOption(getMixedOption(v.value));\n });\n onChange(\n // Value\n multiple ? returnValues : returnValues[0],\n // Option\n multiple ? returnOptions : returnOptions[0]);\n }\n };\n\n // ======================= Accessibility ========================\n var _React$useState = React.useState(null),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n activeValue = _React$useState2[0],\n setActiveValue = _React$useState2[1];\n var _React$useState3 = React.useState(0),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n accessibilityIndex = _React$useState4[0],\n setAccessibilityIndex = _React$useState4[1];\n var mergedDefaultActiveFirstOption = defaultActiveFirstOption !== undefined ? defaultActiveFirstOption : mode !== 'combobox';\n var onActiveValue = React.useCallback(function (active, index) {\n var _ref2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n _ref2$source = _ref2.source,\n source = _ref2$source === void 0 ? 'keyboard' : _ref2$source;\n setAccessibilityIndex(index);\n if (backfill && mode === 'combobox' && active !== null && source === 'keyboard') {\n setActiveValue(String(active));\n }\n }, [backfill, mode]);\n\n // ========================= OptionList =========================\n var triggerSelect = function triggerSelect(val, selected, type) {\n var getSelectEnt = function getSelectEnt() {\n var _option$key2;\n var option = getMixedOption(val);\n return [labelInValue ? {\n label: option === null || option === void 0 ? void 0 : option[mergedFieldNames.label],\n value: val,\n key: (_option$key2 = option === null || option === void 0 ? void 0 : option.key) !== null && _option$key2 !== void 0 ? _option$key2 : val\n } : val, injectPropsWithOption(option)];\n };\n if (selected && onSelect) {\n var _getSelectEnt = getSelectEnt(),\n _getSelectEnt2 = _slicedToArray(_getSelectEnt, 2),\n wrappedValue = _getSelectEnt2[0],\n _option = _getSelectEnt2[1];\n onSelect(wrappedValue, _option);\n } else if (!selected && onDeselect && type !== 'clear') {\n var _getSelectEnt3 = getSelectEnt(),\n _getSelectEnt4 = _slicedToArray(_getSelectEnt3, 2),\n _wrappedValue = _getSelectEnt4[0],\n _option2 = _getSelectEnt4[1];\n onDeselect(_wrappedValue, _option2);\n }\n };\n\n // Used for OptionList selection\n var onInternalSelect = useRefFunc(function (val, info) {\n var cloneValues;\n\n // Single mode always trigger select only with option list\n var mergedSelect = multiple ? info.selected : true;\n if (mergedSelect) {\n cloneValues = multiple ? [].concat(_toConsumableArray(mergedValues), [val]) : [val];\n } else {\n cloneValues = mergedValues.filter(function (v) {\n return v.value !== val;\n });\n }\n triggerChange(cloneValues);\n triggerSelect(val, mergedSelect);\n\n // Clean search value if single or configured\n if (mode === 'combobox') {\n // setSearchValue(String(val));\n setActiveValue('');\n } else if (!isMultiple || autoClearSearchValue) {\n setSearchValue('');\n setActiveValue('');\n }\n });\n\n // ======================= Display Change =======================\n // BaseSelect display values change\n var onDisplayValuesChange = function onDisplayValuesChange(nextValues, info) {\n triggerChange(nextValues);\n var type = info.type,\n values = info.values;\n if (type === 'remove' || type === 'clear') {\n values.forEach(function (item) {\n triggerSelect(item.value, false, type);\n });\n }\n };\n\n // =========================== Search ===========================\n var onInternalSearch = function onInternalSearch(searchText, info) {\n setSearchValue(searchText);\n setActiveValue(null);\n\n // [Submit] Tag mode should flush input\n if (info.source === 'submit') {\n var formatted = (searchText || '').trim();\n // prevent empty tags from appearing when you click the Enter button\n if (formatted) {\n var newRawValues = Array.from(new Set([].concat(_toConsumableArray(rawValues), [formatted])));\n triggerChange(newRawValues);\n triggerSelect(formatted, true);\n setSearchValue('');\n }\n return;\n }\n if (info.source !== 'blur') {\n if (mode === 'combobox') {\n triggerChange(searchText);\n }\n onSearch === null || onSearch === void 0 ? void 0 : onSearch(searchText);\n }\n };\n var onInternalSearchSplit = function onInternalSearchSplit(words) {\n var patchValues = words;\n if (mode !== 'tags') {\n patchValues = words.map(function (word) {\n var opt = labelOptions.get(word);\n return opt === null || opt === void 0 ? void 0 : opt.value;\n }).filter(function (val) {\n return val !== undefined;\n });\n }\n var newRawValues = Array.from(new Set([].concat(_toConsumableArray(rawValues), _toConsumableArray(patchValues))));\n triggerChange(newRawValues);\n newRawValues.forEach(function (newRawValue) {\n triggerSelect(newRawValue, true);\n });\n };\n\n // ========================== Context ===========================\n var selectContext = React.useMemo(function () {\n var realVirtual = virtual !== false && dropdownMatchSelectWidth !== false;\n return _objectSpread(_objectSpread({}, parsedOptions), {}, {\n flattenOptions: displayOptions,\n onActiveValue: onActiveValue,\n defaultActiveFirstOption: mergedDefaultActiveFirstOption,\n onSelect: onInternalSelect,\n menuItemSelectedIcon: menuItemSelectedIcon,\n rawValues: rawValues,\n fieldNames: mergedFieldNames,\n virtual: realVirtual,\n direction: direction,\n listHeight: listHeight,\n listItemHeight: listItemHeight,\n childrenAsData: childrenAsData\n });\n }, [parsedOptions, displayOptions, onActiveValue, mergedDefaultActiveFirstOption, onInternalSelect, menuItemSelectedIcon, rawValues, mergedFieldNames, virtual, dropdownMatchSelectWidth, listHeight, listItemHeight, childrenAsData]);\n\n // ========================== Warning ===========================\n if (process.env.NODE_ENV !== 'production') {\n warningProps(props);\n warningNullOptions(mergedOptions, mergedFieldNames);\n }\n\n // ==============================================================\n // == Render ==\n // ==============================================================\n return /*#__PURE__*/React.createElement(SelectContext.Provider, {\n value: selectContext\n }, /*#__PURE__*/React.createElement(BaseSelect, _extends({}, restProps, {\n // >>> MISC\n id: mergedId,\n prefixCls: prefixCls,\n ref: ref,\n omitDomProps: OMIT_DOM_PROPS,\n mode: mode\n // >>> Values\n ,\n\n displayValues: displayValues,\n onDisplayValuesChange: onDisplayValuesChange\n // >>> Trigger\n ,\n\n direction: direction\n // >>> Search\n ,\n\n searchValue: mergedSearchValue,\n onSearch: onInternalSearch,\n autoClearSearchValue: autoClearSearchValue,\n onSearchSplit: onInternalSearchSplit,\n dropdownMatchSelectWidth: dropdownMatchSelectWidth\n // >>> OptionList\n ,\n\n OptionList: OptionList,\n emptyOptions: !displayOptions.length\n // >>> Accessibility\n ,\n\n activeValue: activeValue,\n activeDescendantId: \"\".concat(mergedId, \"_list_\").concat(accessibilityIndex)\n })));\n});\nif (process.env.NODE_ENV !== 'production') {\n Select.displayName = 'Select';\n}\nvar TypedSelect = Select;\nTypedSelect.Option = Option;\nTypedSelect.OptGroup = OptGroup;\nexport default TypedSelect;","import * as React from 'react';\nimport { convertChildrenToData } from \"../utils/legacyUtil\";\n\n/**\n * Parse `children` to `options` if `options` is not provided.\n * Then flatten the `options`.\n */\nexport default function useOptions(options, children, fieldNames, optionFilterProp, optionLabelProp) {\n return React.useMemo(function () {\n var mergedOptions = options;\n var childrenAsData = !options;\n if (childrenAsData) {\n mergedOptions = convertChildrenToData(children);\n }\n var valueOptions = new Map();\n var labelOptions = new Map();\n var setLabelOptions = function setLabelOptions(labelOptionsMap, option, key) {\n if (key && typeof key === 'string') {\n labelOptionsMap.set(option[key], option);\n }\n };\n function dig(optionList) {\n var isChildren = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n // for loop to speed up collection speed\n for (var i = 0; i < optionList.length; i += 1) {\n var option = optionList[i];\n if (!option[fieldNames.options] || isChildren) {\n valueOptions.set(option[fieldNames.value], option);\n setLabelOptions(labelOptions, option, fieldNames.label);\n // https://github.com/ant-design/ant-design/issues/35304\n setLabelOptions(labelOptions, option, optionFilterProp);\n setLabelOptions(labelOptions, option, optionLabelProp);\n } else {\n dig(option[fieldNames.options], true);\n }\n }\n }\n dig(mergedOptions);\n return {\n options: mergedOptions,\n valueOptions: valueOptions,\n labelOptions: labelOptions\n };\n }, [options, children, fieldNames, optionFilterProp, optionLabelProp]);\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\n/**\n * Cache `value` related LabeledValue & options.\n */\nexport default (function (labeledValues, valueOptions) {\n var cacheRef = React.useRef({\n values: new Map(),\n options: new Map()\n });\n var filledLabeledValues = React.useMemo(function () {\n var _cacheRef$current = cacheRef.current,\n prevValueCache = _cacheRef$current.values,\n prevOptionCache = _cacheRef$current.options;\n\n // Fill label by cache\n var patchedValues = labeledValues.map(function (item) {\n if (item.label === undefined) {\n var _prevValueCache$get;\n return _objectSpread(_objectSpread({}, item), {}, {\n label: (_prevValueCache$get = prevValueCache.get(item.value)) === null || _prevValueCache$get === void 0 ? void 0 : _prevValueCache$get.label\n });\n }\n return item;\n });\n\n // Refresh cache\n var valueCache = new Map();\n var optionCache = new Map();\n patchedValues.forEach(function (item) {\n valueCache.set(item.value, item);\n optionCache.set(item.value, valueOptions.get(item.value) || prevOptionCache.get(item.value));\n });\n cacheRef.current.values = valueCache;\n cacheRef.current.options = optionCache;\n return patchedValues;\n }, [labeledValues, valueOptions]);\n var getOption = React.useCallback(function (val) {\n return valueOptions.get(val) || cacheRef.current.options.get(val);\n }, [valueOptions]);\n return [filledLabeledValues, getOption];\n});","import Select from \"./Select\";\nimport Option from \"./Option\";\nimport OptGroup from \"./OptGroup\";\nimport BaseSelect from \"./BaseSelect\";\nimport useBaseProps from \"./hooks/useBaseProps\";\nexport { Option, OptGroup, BaseSelect, useBaseProps };\nexport default Select;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport classNames from 'classnames';\nvar InputStatuses = ['warning', 'error', ''];\nexport function getStatusClassNames(prefixCls, status, hasFeedback) {\n var _classNames;\n return classNames((_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-status-success\"), status === 'success'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-status-warning\"), status === 'warning'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-status-error\"), status === 'error'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-status-validating\"), status === 'validating'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-has-feedback\"), hasFeedback), _classNames));\n}\nexport var getMergedStatus = function getMergedStatus(contextStatus, customStatus) {\n return customStatus || contextStatus;\n};","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { Keyframes } from '@ant-design/cssinjs';\nimport { initMotion } from './motion';\nexport var slideUpIn = new Keyframes('antSlideUpIn', {\n '0%': {\n transform: 'scaleY(0.8)',\n transformOrigin: '0% 0%',\n opacity: 0\n },\n '100%': {\n transform: 'scaleY(1)',\n transformOrigin: '0% 0%',\n opacity: 1\n }\n});\nexport var slideUpOut = new Keyframes('antSlideUpOut', {\n '0%': {\n transform: 'scaleY(1)',\n transformOrigin: '0% 0%',\n opacity: 1\n },\n '100%': {\n transform: 'scaleY(0.8)',\n transformOrigin: '0% 0%',\n opacity: 0\n }\n});\nexport var slideDownIn = new Keyframes('antSlideDownIn', {\n '0%': {\n transform: 'scaleY(0.8)',\n transformOrigin: '100% 100%',\n opacity: 0\n },\n '100%': {\n transform: 'scaleY(1)',\n transformOrigin: '100% 100%',\n opacity: 1\n }\n});\nexport var slideDownOut = new Keyframes('antSlideDownOut', {\n '0%': {\n transform: 'scaleY(1)',\n transformOrigin: '100% 100%',\n opacity: 1\n },\n '100%': {\n transform: 'scaleY(0.8)',\n transformOrigin: '100% 100%',\n opacity: 0\n }\n});\nexport var slideLeftIn = new Keyframes('antSlideLeftIn', {\n '0%': {\n transform: 'scaleX(0.8)',\n transformOrigin: '0% 0%',\n opacity: 0\n },\n '100%': {\n transform: 'scaleX(1)',\n transformOrigin: '0% 0%',\n opacity: 1\n }\n});\nexport var slideLeftOut = new Keyframes('antSlideLeftOut', {\n '0%': {\n transform: 'scaleX(1)',\n transformOrigin: '0% 0%',\n opacity: 1\n },\n '100%': {\n transform: 'scaleX(0.8)',\n transformOrigin: '0% 0%',\n opacity: 0\n }\n});\nexport var slideRightIn = new Keyframes('antSlideRightIn', {\n '0%': {\n transform: 'scaleX(0.8)',\n transformOrigin: '100% 0%',\n opacity: 0\n },\n '100%': {\n transform: 'scaleX(1)',\n transformOrigin: '100% 0%',\n opacity: 1\n }\n});\nexport var slideRightOut = new Keyframes('antSlideRightOut', {\n '0%': {\n transform: 'scaleX(1)',\n transformOrigin: '100% 0%',\n opacity: 1\n },\n '100%': {\n transform: 'scaleX(0.8)',\n transformOrigin: '100% 0%',\n opacity: 0\n }\n});\nvar slideMotion = {\n 'slide-up': {\n inKeyframes: slideUpIn,\n outKeyframes: slideUpOut\n },\n 'slide-down': {\n inKeyframes: slideDownIn,\n outKeyframes: slideDownOut\n },\n 'slide-left': {\n inKeyframes: slideLeftIn,\n outKeyframes: slideLeftOut\n },\n 'slide-right': {\n inKeyframes: slideRightIn,\n outKeyframes: slideRightOut\n }\n};\nexport var initSlideMotion = function initSlideMotion(token, motionName) {\n var _ref;\n var antCls = token.antCls;\n var motionCls = \"\".concat(antCls, \"-\").concat(motionName);\n var _slideMotion$motionNa = slideMotion[motionName],\n inKeyframes = _slideMotion$motionNa.inKeyframes,\n outKeyframes = _slideMotion$motionNa.outKeyframes;\n return [initMotion(motionCls, inKeyframes, outKeyframes, token.motionDurationMid), (_ref = {}, _defineProperty(_ref, \"\\n \".concat(motionCls, \"-enter,\\n \").concat(motionCls, \"-appear\\n \"), _defineProperty({\n transform: 'scale(0)',\n transformOrigin: '0% 0%',\n opacity: 0,\n animationTimingFunction: token.motionEaseOutQuint\n }, \"&-prepare\", {\n transform: 'scale(1)'\n })), _defineProperty(_ref, \"\".concat(motionCls, \"-leave\"), {\n animationTimingFunction: token.motionEaseInQuint\n }), _ref)];\n};","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { Keyframes } from '@ant-design/cssinjs';\nimport { initMotion } from './motion';\nexport var moveDownIn = new Keyframes('antMoveDownIn', {\n '0%': {\n transform: 'translate3d(0, 100%, 0)',\n transformOrigin: '0 0',\n opacity: 0\n },\n '100%': {\n transform: 'translate3d(0, 0, 0)',\n transformOrigin: '0 0',\n opacity: 1\n }\n});\nexport var moveDownOut = new Keyframes('antMoveDownOut', {\n '0%': {\n transform: 'translate3d(0, 0, 0)',\n transformOrigin: '0 0',\n opacity: 1\n },\n '100%': {\n transform: 'translate3d(0, 100%, 0)',\n transformOrigin: '0 0',\n opacity: 0\n }\n});\nexport var moveLeftIn = new Keyframes('antMoveLeftIn', {\n '0%': {\n transform: 'translate3d(-100%, 0, 0)',\n transformOrigin: '0 0',\n opacity: 0\n },\n '100%': {\n transform: 'translate3d(0, 0, 0)',\n transformOrigin: '0 0',\n opacity: 1\n }\n});\nexport var moveLeftOut = new Keyframes('antMoveLeftOut', {\n '0%': {\n transform: 'translate3d(0, 0, 0)',\n transformOrigin: '0 0',\n opacity: 1\n },\n '100%': {\n transform: 'translate3d(-100%, 0, 0)',\n transformOrigin: '0 0',\n opacity: 0\n }\n});\nexport var moveRightIn = new Keyframes('antMoveRightIn', {\n '0%': {\n transform: 'translate3d(100%, 0, 0)',\n transformOrigin: '0 0',\n opacity: 0\n },\n '100%': {\n transform: 'translate3d(0, 0, 0)',\n transformOrigin: '0 0',\n opacity: 1\n }\n});\nexport var moveRightOut = new Keyframes('antMoveRightOut', {\n '0%': {\n transform: 'translate3d(0, 0, 0)',\n transformOrigin: '0 0',\n opacity: 1\n },\n '100%': {\n transform: 'translate3d(100%, 0, 0)',\n transformOrigin: '0 0',\n opacity: 0\n }\n});\nexport var moveUpIn = new Keyframes('antMoveUpIn', {\n '0%': {\n transform: 'translate3d(0, -100%, 0)',\n transformOrigin: '0 0',\n opacity: 0\n },\n '100%': {\n transform: 'translate3d(0, 0, 0)',\n transformOrigin: '0 0',\n opacity: 1\n }\n});\nexport var moveUpOut = new Keyframes('antMoveUpOut', {\n '0%': {\n transform: 'translate3d(0, 0, 0)',\n transformOrigin: '0 0',\n opacity: 1\n },\n '100%': {\n transform: 'translate3d(0, -100%, 0)',\n transformOrigin: '0 0',\n opacity: 0\n }\n});\nvar moveMotion = {\n 'move-up': {\n inKeyframes: moveUpIn,\n outKeyframes: moveUpOut\n },\n 'move-down': {\n inKeyframes: moveDownIn,\n outKeyframes: moveDownOut\n },\n 'move-left': {\n inKeyframes: moveLeftIn,\n outKeyframes: moveLeftOut\n },\n 'move-right': {\n inKeyframes: moveRightIn,\n outKeyframes: moveRightOut\n }\n};\nexport var initMoveMotion = function initMoveMotion(token, motionName) {\n var _ref;\n var antCls = token.antCls;\n var motionCls = \"\".concat(antCls, \"-\").concat(motionName);\n var _moveMotion$motionNam = moveMotion[motionName],\n inKeyframes = _moveMotion$motionNam.inKeyframes,\n outKeyframes = _moveMotion$motionNam.outKeyframes;\n return [initMotion(motionCls, inKeyframes, outKeyframes, token.motionDurationMid), (_ref = {}, _defineProperty(_ref, \"\\n \".concat(motionCls, \"-enter,\\n \").concat(motionCls, \"-appear\\n \"), {\n opacity: 0,\n animationTimingFunction: token.motionEaseOutCirc\n }), _defineProperty(_ref, \"\".concat(motionCls, \"-leave\"), {\n animationTimingFunction: token.motionEaseInOutCirc\n }), _ref)];\n};","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { resetComponent, textEllipsis } from '../../style';\nimport { initMoveMotion, initSlideMotion, slideDownIn, slideDownOut, slideUpIn, slideUpOut } from '../../style/motion';\nvar genItemStyle = function genItemStyle(token) {\n var controlPaddingHorizontal = token.controlPaddingHorizontal,\n controlHeight = token.controlHeight,\n fontSize = token.fontSize,\n lineHeight = token.lineHeight;\n return {\n position: 'relative',\n display: 'block',\n minHeight: controlHeight,\n padding: \"\".concat((controlHeight - fontSize * lineHeight) / 2, \"px \").concat(controlPaddingHorizontal, \"px\"),\n color: token.colorText,\n fontWeight: 'normal',\n fontSize: fontSize,\n lineHeight: lineHeight,\n boxSizing: 'border-box'\n };\n};\nvar genSingleStyle = function genSingleStyle(token) {\n var _disabled, _option, _Object$assign;\n var antCls = token.antCls,\n componentCls = token.componentCls;\n var selectItemCls = \"\".concat(componentCls, \"-item\");\n var slideUpEnterActive = \"&\".concat(antCls, \"-slide-up-enter\").concat(antCls, \"-slide-up-enter-active\");\n var slideUpAppearActive = \"&\".concat(antCls, \"-slide-up-appear\").concat(antCls, \"-slide-up-appear-active\");\n var slideUpLeaveActive = \"&\".concat(antCls, \"-slide-up-leave\").concat(antCls, \"-slide-up-leave-active\");\n var dropdownPlacementCls = \"\".concat(componentCls, \"-dropdown-placement-\");\n return [_defineProperty({}, \"\".concat(componentCls, \"-dropdown\"), Object.assign(Object.assign({}, resetComponent(token)), (_Object$assign = {\n position: 'absolute',\n top: -9999,\n zIndex: token.zIndexPopup,\n boxSizing: 'border-box',\n padding: token.paddingXXS,\n overflow: 'hidden',\n fontSize: token.fontSize,\n // Fix select render lag of long text in chrome\n // https://github.com/ant-design/ant-design/issues/11456\n // https://github.com/ant-design/ant-design/issues/11843\n fontVariant: 'initial',\n backgroundColor: token.colorBgElevated,\n borderRadius: token.borderRadiusLG,\n outline: 'none',\n boxShadow: token.boxShadowSecondary\n }, _defineProperty(_Object$assign, \"\\n \".concat(slideUpEnterActive).concat(dropdownPlacementCls, \"bottomLeft,\\n \").concat(slideUpAppearActive).concat(dropdownPlacementCls, \"bottomLeft\\n \"), {\n animationName: slideUpIn\n }), _defineProperty(_Object$assign, \"\\n \".concat(slideUpEnterActive).concat(dropdownPlacementCls, \"topLeft,\\n \").concat(slideUpAppearActive).concat(dropdownPlacementCls, \"topLeft,\\n \").concat(slideUpEnterActive).concat(dropdownPlacementCls, \"topRight,\\n \").concat(slideUpAppearActive).concat(dropdownPlacementCls, \"topRight\\n \"), {\n animationName: slideDownIn\n }), _defineProperty(_Object$assign, \"\".concat(slideUpLeaveActive).concat(dropdownPlacementCls, \"bottomLeft\"), {\n animationName: slideUpOut\n }), _defineProperty(_Object$assign, \"\\n \".concat(slideUpLeaveActive).concat(dropdownPlacementCls, \"topLeft,\\n \").concat(slideUpLeaveActive).concat(dropdownPlacementCls, \"topRight\\n \"), {\n animationName: slideDownOut\n }), _defineProperty(_Object$assign, '&-hidden', {\n display: 'none'\n }), _defineProperty(_Object$assign, \"\".concat(selectItemCls), Object.assign(Object.assign({}, genItemStyle(token)), {\n cursor: 'pointer',\n transition: \"background \".concat(token.motionDurationSlow, \" ease\"),\n borderRadius: token.borderRadiusSM,\n // =========== Group ============\n '&-group': {\n color: token.colorTextDescription,\n fontSize: token.fontSizeSM,\n cursor: 'default'\n },\n // =========== Option ===========\n '&-option': (_option = {\n display: 'flex',\n '&-content': Object.assign({\n flex: 'auto'\n }, textEllipsis),\n '&-state': {\n flex: 'none',\n display: 'flex',\n alignItems: 'center'\n }\n }, _defineProperty(_option, \"&-active:not(\".concat(selectItemCls, \"-option-disabled)\"), {\n backgroundColor: token.controlItemBgHover\n }), _defineProperty(_option, \"&-selected:not(\".concat(selectItemCls, \"-option-disabled)\"), _defineProperty({\n color: token.colorText,\n fontWeight: token.fontWeightStrong,\n backgroundColor: token.controlItemBgActive\n }, \"\".concat(selectItemCls, \"-option-state\"), {\n color: token.colorPrimary\n })), _defineProperty(_option, '&-disabled', (_disabled = {}, _defineProperty(_disabled, \"&\".concat(selectItemCls, \"-option-selected\"), {\n backgroundColor: token.colorBgContainerDisabled\n }), _defineProperty(_disabled, \"color\", token.colorTextDisabled), _defineProperty(_disabled, \"cursor\", 'not-allowed'), _disabled)), _defineProperty(_option, '&-grouped', {\n paddingInlineStart: token.controlPaddingHorizontal * 2\n }), _option)\n })), _defineProperty(_Object$assign, '&-rtl', {\n direction: 'rtl'\n }), _Object$assign))),\n // Follow code may reuse in other components\n initSlideMotion(token, 'slide-up'), initSlideMotion(token, 'slide-down'), initMoveMotion(token, 'move-up'), initMoveMotion(token, 'move-down')];\n};\nexport default genSingleStyle;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport { resetIcon } from '../../style';\nimport { mergeToken } from '../../theme/internal';\nvar FIXED_ITEM_MARGIN = 2;\nvar getSelectItemStyle = function getSelectItemStyle(_ref) {\n var controlHeightSM = _ref.controlHeightSM,\n controlHeight = _ref.controlHeight,\n borderWidth = _ref.lineWidth;\n var selectItemDist = (controlHeight - controlHeightSM) / 2 - borderWidth;\n var selectItemMargin = Math.ceil(selectItemDist / 2);\n return [selectItemDist, selectItemMargin];\n};\nfunction genSizeStyle(token, suffix) {\n var _$concat, _Object$assign, _$concat2, _$concat3, _$concat$concat2;\n var componentCls = token.componentCls,\n iconCls = token.iconCls;\n var selectOverflowPrefixCls = \"\".concat(componentCls, \"-selection-overflow\");\n var selectItemHeight = token.controlHeightSM;\n var _getSelectItemStyle = getSelectItemStyle(token),\n _getSelectItemStyle2 = _slicedToArray(_getSelectItemStyle, 1),\n selectItemDist = _getSelectItemStyle2[0];\n var suffixCls = suffix ? \"\".concat(componentCls, \"-\").concat(suffix) : '';\n return _defineProperty({}, \"\".concat(componentCls, \"-multiple\").concat(suffixCls), (_$concat$concat2 = {\n fontSize: token.fontSize\n }, _defineProperty(_$concat$concat2, selectOverflowPrefixCls, {\n position: 'relative',\n display: 'flex',\n flex: 'auto',\n flexWrap: 'wrap',\n maxWidth: '100%',\n '&-item': {\n flex: 'none',\n alignSelf: 'center',\n maxWidth: '100%',\n display: 'inline-flex'\n }\n }), _defineProperty(_$concat$concat2, \"\".concat(componentCls, \"-selector\"), (_$concat = {\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n // Multiple is little different that horizontal is follow the vertical\n padding: \"\".concat(selectItemDist - FIXED_ITEM_MARGIN, \"px \").concat(FIXED_ITEM_MARGIN * 2, \"px\"),\n borderRadius: token.borderRadius\n }, _defineProperty(_$concat, \"\".concat(componentCls, \"-show-search&\"), {\n cursor: 'text'\n }), _defineProperty(_$concat, \"\".concat(componentCls, \"-disabled&\"), {\n background: token.colorBgContainerDisabled,\n cursor: 'not-allowed'\n }), _defineProperty(_$concat, '&:after', {\n display: 'inline-block',\n width: 0,\n margin: \"\".concat(FIXED_ITEM_MARGIN, \"px 0\"),\n lineHeight: \"\".concat(selectItemHeight, \"px\"),\n visibility: 'hidden',\n content: '\"\\\\a0\"'\n }), _$concat)), _defineProperty(_$concat$concat2, \"\\n &\".concat(componentCls, \"-show-arrow \").concat(componentCls, \"-selector,\\n &\").concat(componentCls, \"-allow-clear \").concat(componentCls, \"-selector\\n \"), {\n paddingInlineEnd: token.fontSizeIcon + token.controlPaddingHorizontal\n }), _defineProperty(_$concat$concat2, \"\".concat(componentCls, \"-selection-item\"), (_$concat2 = {\n position: 'relative',\n display: 'flex',\n flex: 'none',\n boxSizing: 'border-box',\n maxWidth: '100%',\n height: selectItemHeight,\n marginTop: FIXED_ITEM_MARGIN,\n marginBottom: FIXED_ITEM_MARGIN,\n lineHeight: \"\".concat(selectItemHeight - token.lineWidth * 2, \"px\"),\n background: token.colorFillSecondary,\n borderRadius: token.borderRadiusSM,\n cursor: 'default',\n transition: \"font-size \".concat(token.motionDurationSlow, \", line-height \").concat(token.motionDurationSlow, \", height \").concat(token.motionDurationSlow),\n userSelect: 'none',\n marginInlineEnd: FIXED_ITEM_MARGIN * 2,\n paddingInlineStart: token.paddingXS,\n paddingInlineEnd: token.paddingXS / 2\n }, _defineProperty(_$concat2, \"\".concat(componentCls, \"-disabled&\"), {\n color: token.colorTextDisabled,\n cursor: 'not-allowed'\n }), _defineProperty(_$concat2, '&-content', {\n display: 'inline-block',\n marginInlineEnd: token.paddingXS / 2,\n overflow: 'hidden',\n whiteSpace: 'pre',\n textOverflow: 'ellipsis'\n }), _defineProperty(_$concat2, '&-remove', Object.assign(Object.assign({}, resetIcon()), (_Object$assign = {\n display: 'inline-flex',\n alignItems: 'center',\n color: token.colorIcon,\n fontWeight: 'bold',\n fontSize: 10,\n lineHeight: 'inherit',\n cursor: 'pointer'\n }, _defineProperty(_Object$assign, \"> \".concat(iconCls), {\n verticalAlign: '-0.2em'\n }), _defineProperty(_Object$assign, '&:hover', {\n color: token.colorIconHover\n }), _Object$assign))), _$concat2)), _defineProperty(_$concat$concat2, \"\".concat(selectOverflowPrefixCls, \"-item + \").concat(selectOverflowPrefixCls, \"-item\"), _defineProperty({}, \"\".concat(componentCls, \"-selection-search\"), {\n marginInlineStart: 0\n })), _defineProperty(_$concat$concat2, \"\".concat(componentCls, \"-selection-search\"), (_$concat3 = {\n display: 'inline-flex',\n position: 'relative',\n maxWidth: '100%',\n marginInlineStart: token.inputPaddingHorizontalBase - selectItemDist\n }, _defineProperty(_$concat3, \"\\n &-input,\\n &-mirror\\n \", {\n height: selectItemHeight,\n fontFamily: token.fontFamily,\n lineHeight: \"\".concat(selectItemHeight, \"px\"),\n transition: \"all \".concat(token.motionDurationSlow)\n }), _defineProperty(_$concat3, '&-input', {\n width: '100%',\n minWidth: 4.1 // fix search cursor missing\n }), _defineProperty(_$concat3, '&-mirror', {\n position: 'absolute',\n top: 0,\n insetInlineStart: 0,\n insetInlineEnd: 'auto',\n zIndex: 999,\n whiteSpace: 'pre',\n visibility: 'hidden'\n }), _$concat3)), _defineProperty(_$concat$concat2, \"\".concat(componentCls, \"-selection-placeholder \"), {\n position: 'absolute',\n top: '50%',\n insetInlineStart: token.inputPaddingHorizontalBase,\n insetInlineEnd: token.inputPaddingHorizontalBase,\n transform: 'translateY(-50%)',\n transition: \"all \".concat(token.motionDurationSlow)\n }), _$concat$concat2));\n}\nvar genMultipleStyle = function genMultipleStyle(token) {\n var _$concat$concat3;\n var componentCls = token.componentCls;\n var smallToken = mergeToken(token, {\n controlHeight: token.controlHeightSM,\n controlHeightSM: token.controlHeightXS,\n borderRadius: token.borderRadiusSM,\n borderRadiusSM: token.borderRadiusXS\n });\n var largeToken = mergeToken(token, {\n fontSize: token.fontSizeLG,\n controlHeight: token.controlHeightLG,\n controlHeightSM: token.controlHeight,\n borderRadius: token.borderRadiusLG,\n borderRadiusSM: token.borderRadius\n });\n var _getSelectItemStyle3 = getSelectItemStyle(token),\n _getSelectItemStyle4 = _slicedToArray(_getSelectItemStyle3, 2),\n smSelectItemMargin = _getSelectItemStyle4[1];\n return [genSizeStyle(token),\n // ======================== Small ========================\n genSizeStyle(smallToken, 'sm'), // Padding\n _defineProperty({}, \"\".concat(componentCls, \"-multiple\").concat(componentCls, \"-sm\"), (_$concat$concat3 = {}, _defineProperty(_$concat$concat3, \"\".concat(componentCls, \"-selection-placeholder\"), {\n insetInline: token.controlPaddingHorizontalSM - token.lineWidth\n }), _defineProperty(_$concat$concat3, \"\".concat(componentCls, \"-selection-search\"), {\n marginInlineStart: smSelectItemMargin\n }), _$concat$concat3)),\n // ======================== Large ========================\n genSizeStyle(largeToken, 'lg')];\n};\nexport default genMultipleStyle;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { resetComponent } from '../../style';\nimport { mergeToken } from '../../theme/internal';\nfunction genSizeStyle(token, suffix) {\n var _Object$assign, _$concat, _$concat2, _$concat$concat;\n var componentCls = token.componentCls,\n inputPaddingHorizontalBase = token.inputPaddingHorizontalBase,\n borderRadius = token.borderRadius;\n var selectHeightWithoutBorder = token.controlHeight - token.lineWidth * 2;\n var selectionItemPadding = Math.ceil(token.fontSize * 1.25);\n var suffixCls = suffix ? \"\".concat(componentCls, \"-\").concat(suffix) : '';\n return _defineProperty({}, \"\".concat(componentCls, \"-single\").concat(suffixCls), (_$concat$concat = {\n fontSize: token.fontSize\n }, _defineProperty(_$concat$concat, \"\".concat(componentCls, \"-selector\"), Object.assign(Object.assign({}, resetComponent(token)), (_Object$assign = {\n display: 'flex',\n borderRadius: borderRadius\n }, _defineProperty(_Object$assign, \"\".concat(componentCls, \"-selection-search\"), {\n position: 'absolute',\n top: 0,\n insetInlineStart: inputPaddingHorizontalBase,\n insetInlineEnd: inputPaddingHorizontalBase,\n bottom: 0,\n '&-input': {\n width: '100%'\n }\n }), _defineProperty(_Object$assign, \"\\n \".concat(componentCls, \"-selection-item,\\n \").concat(componentCls, \"-selection-placeholder\\n \"), {\n padding: 0,\n lineHeight: \"\".concat(selectHeightWithoutBorder, \"px\"),\n transition: \"all \".concat(token.motionDurationSlow, \", visibility 0s\"),\n // Firefox inline-block position calculation is not same as Chrome & Safari. Patch this:\n '@supports (-moz-appearance: meterbar)': {\n lineHeight: \"\".concat(selectHeightWithoutBorder, \"px\")\n }\n }), _defineProperty(_Object$assign, \"\".concat(componentCls, \"-selection-item\"), {\n position: 'relative',\n userSelect: 'none'\n }), _defineProperty(_Object$assign, \"\".concat(componentCls, \"-selection-placeholder\"), {\n transition: 'none',\n pointerEvents: 'none'\n }), _defineProperty(_Object$assign, ['&:after', /* For '' value baseline align */\"\".concat(componentCls, \"-selection-item:after\"), /* For undefined value baseline align */\"\".concat(componentCls, \"-selection-placeholder:after\")].join(','), {\n display: 'inline-block',\n width: 0,\n visibility: 'hidden',\n content: '\"\\\\a0\"'\n }), _Object$assign))), _defineProperty(_$concat$concat, \"\\n &\".concat(componentCls, \"-show-arrow \").concat(componentCls, \"-selection-item,\\n &\").concat(componentCls, \"-show-arrow \").concat(componentCls, \"-selection-placeholder\\n \"), {\n paddingInlineEnd: selectionItemPadding\n }), _defineProperty(_$concat$concat, \"&\".concat(componentCls, \"-open \").concat(componentCls, \"-selection-item\"), {\n color: token.colorTextPlaceholder\n }), _defineProperty(_$concat$concat, \"&:not(\".concat(componentCls, \"-customize-input)\"), _defineProperty({}, \"\".concat(componentCls, \"-selector\"), (_$concat = {\n width: '100%',\n height: token.controlHeight,\n padding: \"0 \".concat(inputPaddingHorizontalBase, \"px\")\n }, _defineProperty(_$concat, \"\".concat(componentCls, \"-selection-search-input\"), {\n height: selectHeightWithoutBorder\n }), _defineProperty(_$concat, '&:after', {\n lineHeight: \"\".concat(selectHeightWithoutBorder, \"px\")\n }), _$concat))), _defineProperty(_$concat$concat, \"&\".concat(componentCls, \"-customize-input\"), _defineProperty({}, \"\".concat(componentCls, \"-selector\"), (_$concat2 = {\n '&:after': {\n display: 'none'\n }\n }, _defineProperty(_$concat2, \"\".concat(componentCls, \"-selection-search\"), {\n position: 'static',\n width: '100%'\n }), _defineProperty(_$concat2, \"\".concat(componentCls, \"-selection-placeholder\"), {\n position: 'absolute',\n insetInlineStart: 0,\n insetInlineEnd: 0,\n padding: \"0 \".concat(inputPaddingHorizontalBase, \"px\"),\n '&:after': {\n display: 'none'\n }\n }), _$concat2))), _$concat$concat));\n}\nexport default function genSingleStyle(token) {\n var _not$concat2;\n var componentCls = token.componentCls;\n var inputPaddingHorizontalSM = token.controlPaddingHorizontalSM - token.lineWidth;\n return [genSizeStyle(token),\n // ======================== Small ========================\n // Shared\n genSizeStyle(mergeToken(token, {\n controlHeight: token.controlHeightSM,\n borderRadius: token.borderRadiusSM\n }), 'sm'), // padding\n _defineProperty({}, \"\".concat(componentCls, \"-single\").concat(componentCls, \"-sm\"), _defineProperty({}, \"&:not(\".concat(componentCls, \"-customize-input)\"), (_not$concat2 = {}, _defineProperty(_not$concat2, \"\".concat(componentCls, \"-selection-search\"), {\n insetInlineStart: inputPaddingHorizontalSM,\n insetInlineEnd: inputPaddingHorizontalSM\n }), _defineProperty(_not$concat2, \"\".concat(componentCls, \"-selector\"), {\n padding: \"0 \".concat(inputPaddingHorizontalSM, \"px\")\n }), _defineProperty(_not$concat2, \"&\".concat(componentCls, \"-show-arrow \").concat(componentCls, \"-selection-search\"), {\n insetInlineEnd: inputPaddingHorizontalSM + token.fontSize * 1.5\n }), _defineProperty(_not$concat2, \"\\n &\".concat(componentCls, \"-show-arrow \").concat(componentCls, \"-selection-item,\\n &\").concat(componentCls, \"-show-arrow \").concat(componentCls, \"-selection-placeholder\\n \"), {\n paddingInlineEnd: token.fontSize * 1.5\n }), _not$concat2))),\n // ======================== Large ========================\n // Shared\n genSizeStyle(mergeToken(token, {\n controlHeight: token.controlHeightLG,\n fontSize: token.fontSizeLG,\n borderRadius: token.borderRadiusLG\n }), 'lg')];\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { resetComponent, resetIcon, textEllipsis } from '../../style';\nimport { genCompactItemStyle } from '../../style/compact-item';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport genDropdownStyle from './dropdown';\nimport genMultipleStyle from './multiple';\nimport genSingleStyle from './single';\n// ============================= Selector =============================\nvar genSelectorStyle = function genSelectorStyle(token) {\n var _$concat, _ref2;\n var componentCls = token.componentCls;\n return _ref2 = {\n position: 'relative',\n backgroundColor: token.colorBgContainer,\n border: \"\".concat(token.lineWidth, \"px \").concat(token.lineType, \" \").concat(token.colorBorder),\n transition: \"all \".concat(token.motionDurationMid, \" \").concat(token.motionEaseInOut),\n input: {\n cursor: 'pointer'\n }\n }, _defineProperty(_ref2, \"\".concat(componentCls, \"-show-search&\"), {\n cursor: 'text',\n input: {\n cursor: 'auto',\n color: 'inherit'\n }\n }), _defineProperty(_ref2, \"\".concat(componentCls, \"-disabled&\"), (_$concat = {\n color: token.colorTextDisabled,\n background: token.colorBgContainerDisabled,\n cursor: 'not-allowed'\n }, _defineProperty(_$concat, \"\".concat(componentCls, \"-multiple&\"), {\n background: token.colorBgContainerDisabled\n }), _defineProperty(_$concat, \"input\", {\n cursor: 'not-allowed'\n }), _$concat)), _ref2;\n};\n// ============================== Status ==============================\nvar genStatusStyle = function genStatusStyle(rootSelectCls, token) {\n var _Object$assign;\n var overwriteDefaultBorder = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var componentCls = token.componentCls,\n borderHoverColor = token.borderHoverColor,\n outlineColor = token.outlineColor,\n antCls = token.antCls;\n var overwriteStyle = overwriteDefaultBorder ? _defineProperty({}, \"\".concat(componentCls, \"-selector\"), {\n borderColor: borderHoverColor\n }) : {};\n return _defineProperty({}, rootSelectCls, _defineProperty({}, \"&:not(\".concat(componentCls, \"-disabled):not(\").concat(componentCls, \"-customize-input):not(\").concat(antCls, \"-pagination-size-changer)\"), Object.assign(Object.assign({}, overwriteStyle), (_Object$assign = {}, _defineProperty(_Object$assign, \"\".concat(componentCls, \"-focused& \").concat(componentCls, \"-selector\"), {\n borderColor: borderHoverColor,\n boxShadow: \"0 0 0 \".concat(token.controlOutlineWidth, \"px \").concat(outlineColor),\n outline: 0\n }), _defineProperty(_Object$assign, \"&:hover \".concat(componentCls, \"-selector\"), {\n borderColor: borderHoverColor\n }), _Object$assign))));\n};\n// ============================== Styles ==============================\n// /* Reset search input style */\nvar getSearchInputWithoutBorderStyle = function getSearchInputWithoutBorderStyle(token) {\n var componentCls = token.componentCls;\n return _defineProperty({}, \"\".concat(componentCls, \"-selection-search-input\"), {\n margin: 0,\n padding: 0,\n background: 'transparent',\n border: 'none',\n outline: 'none',\n appearance: 'none',\n '&::-webkit-search-cancel-button': {\n display: 'none',\n '-webkit-appearance': 'none'\n }\n });\n};\n// =============================== Base ===============================\nvar genBaseStyle = function genBaseStyle(token) {\n var _Object$assign2, _Object$assign3, _ref6;\n var componentCls = token.componentCls,\n inputPaddingHorizontalBase = token.inputPaddingHorizontalBase,\n iconCls = token.iconCls;\n return _ref6 = {}, _defineProperty(_ref6, componentCls, Object.assign(Object.assign({}, resetComponent(token)), (_Object$assign3 = {\n position: 'relative',\n display: 'inline-block',\n cursor: 'pointer'\n }, _defineProperty(_Object$assign3, \"&:not(\".concat(componentCls, \"-customize-input) \").concat(componentCls, \"-selector\"), Object.assign(Object.assign({}, genSelectorStyle(token)), getSearchInputWithoutBorderStyle(token))), _defineProperty(_Object$assign3, \"\".concat(componentCls, \"-selection-item\"), Object.assign({\n flex: 1,\n fontWeight: 'normal'\n }, textEllipsis)), _defineProperty(_Object$assign3, \"\".concat(componentCls, \"-selection-placeholder\"), Object.assign(Object.assign({}, textEllipsis), {\n flex: 1,\n color: token.colorTextPlaceholder,\n pointerEvents: 'none'\n })), _defineProperty(_Object$assign3, \"\".concat(componentCls, \"-arrow\"), Object.assign(Object.assign({}, resetIcon()), (_Object$assign2 = {\n position: 'absolute',\n top: '50%',\n insetInlineStart: 'auto',\n insetInlineEnd: inputPaddingHorizontalBase,\n height: token.fontSizeIcon,\n marginTop: -token.fontSizeIcon / 2,\n color: token.colorTextQuaternary,\n fontSize: token.fontSizeIcon,\n lineHeight: 1,\n textAlign: 'center',\n pointerEvents: 'none',\n display: 'flex',\n alignItems: 'center'\n }, _defineProperty(_Object$assign2, iconCls, _defineProperty({\n verticalAlign: 'top',\n transition: \"transform \".concat(token.motionDurationSlow),\n '> svg': {\n verticalAlign: 'top'\n }\n }, \"&:not(\".concat(componentCls, \"-suffix)\"), {\n pointerEvents: 'auto'\n })), _defineProperty(_Object$assign2, \"\".concat(componentCls, \"-disabled &\"), {\n cursor: 'not-allowed'\n }), _defineProperty(_Object$assign2, '> *:not(:last-child)', {\n marginInlineEnd: 8 // FIXME: magic\n }), _Object$assign2))), _defineProperty(_Object$assign3, \"\".concat(componentCls, \"-clear\"), {\n position: 'absolute',\n top: '50%',\n insetInlineStart: 'auto',\n insetInlineEnd: inputPaddingHorizontalBase,\n zIndex: 1,\n display: 'inline-block',\n width: token.fontSizeIcon,\n height: token.fontSizeIcon,\n marginTop: -token.fontSizeIcon / 2,\n color: token.colorTextQuaternary,\n fontSize: token.fontSizeIcon,\n fontStyle: 'normal',\n lineHeight: 1,\n textAlign: 'center',\n textTransform: 'none',\n background: token.colorBgContainer,\n cursor: 'pointer',\n opacity: 0,\n transition: \"color \".concat(token.motionDurationMid, \" ease, opacity \").concat(token.motionDurationSlow, \" ease\"),\n textRendering: 'auto',\n '&:before': {\n display: 'block'\n },\n '&:hover': {\n color: token.colorTextTertiary\n }\n }), _defineProperty(_Object$assign3, '&:hover', _defineProperty({}, \"\".concat(componentCls, \"-clear\"), {\n opacity: 1\n })), _Object$assign3))), _defineProperty(_ref6, \"\".concat(componentCls, \"-has-feedback\"), _defineProperty({}, \"\".concat(componentCls, \"-clear\"), {\n insetInlineEnd: inputPaddingHorizontalBase + token.fontSize + token.paddingXS\n })), _ref6;\n};\n// ============================== Styles ==============================\nvar genSelectStyle = function genSelectStyle(token) {\n var _componentCls;\n var componentCls = token.componentCls;\n return [_defineProperty({}, componentCls, (_componentCls = {}, _defineProperty(_componentCls, \"&-borderless \".concat(componentCls, \"-selector\"), {\n backgroundColor: \"transparent !important\",\n borderColor: \"transparent !important\",\n boxShadow: \"none !important\"\n }), _defineProperty(_componentCls, \"&\".concat(componentCls, \"-in-form-item\"), {\n width: '100%'\n }), _componentCls)),\n // =====================================================\n // == LTR ==\n // =====================================================\n // Base\n genBaseStyle(token),\n // Single\n genSingleStyle(token),\n // Multiple\n genMultipleStyle(token),\n // Dropdown\n genDropdownStyle(token), // =====================================================\n // == RTL ==\n // =====================================================\n _defineProperty({}, \"\".concat(componentCls, \"-rtl\"), {\n direction: 'rtl'\n }),\n // =====================================================\n // == Status ==\n // =====================================================\n genStatusStyle(componentCls, mergeToken(token, {\n borderHoverColor: token.colorPrimaryHover,\n outlineColor: token.controlOutline\n })), genStatusStyle(\"\".concat(componentCls, \"-status-error\"), mergeToken(token, {\n borderHoverColor: token.colorErrorHover,\n outlineColor: token.colorErrorOutline\n }), true), genStatusStyle(\"\".concat(componentCls, \"-status-warning\"), mergeToken(token, {\n borderHoverColor: token.colorWarningHover,\n outlineColor: token.colorWarningOutline\n }), true),\n // =====================================================\n // == Space Compact ==\n // =====================================================\n genCompactItemStyle(token, {\n borderElCls: \"\".concat(componentCls, \"-selector\"),\n focusElCls: \"\".concat(componentCls, \"-focused\")\n })];\n};\n// ============================== Export ==============================\nexport default genComponentStyleHook('Select', function (token, _ref) {\n var rootPrefixCls = _ref.rootPrefixCls;\n var selectToken = mergeToken(token, {\n rootPrefixCls: rootPrefixCls,\n inputPaddingHorizontalBase: token.paddingSM - 1\n });\n return [genSelectStyle(selectToken)];\n}, function (token) {\n return {\n zIndexPopup: token.zIndexPopupBase + 50\n };\n});","var getBuiltInPlacements = function getBuiltInPlacements(popupOverflow) {\n var htmlRegion = popupOverflow === 'scroll' ? 'scroll' : 'visible';\n var sharedConfig = {\n overflow: {\n adjustX: true,\n adjustY: true,\n shiftY: true\n },\n htmlRegion: htmlRegion,\n _experimental: {\n dynamicInset: true\n }\n };\n return {\n bottomLeft: Object.assign(Object.assign({}, sharedConfig), {\n points: ['tl', 'bl'],\n offset: [0, 4]\n }),\n bottomRight: Object.assign(Object.assign({}, sharedConfig), {\n points: ['tr', 'br'],\n offset: [0, 4]\n }),\n topLeft: Object.assign(Object.assign({}, sharedConfig), {\n points: ['bl', 'tl'],\n offset: [0, -4]\n }),\n topRight: Object.assign(Object.assign({}, sharedConfig), {\n points: ['br', 'tr'],\n offset: [0, -4]\n })\n };\n};\nexport default function useBuiltinPlacements(buildInPlacements, popupOverflow) {\n return buildInPlacements || getBuiltInPlacements(popupOverflow);\n}","// This icon file is generated automatically.\nvar DownOutlined = {\n \"icon\": {\n \"tag\": \"svg\",\n \"attrs\": {\n \"viewBox\": \"64 64 896 896\",\n \"focusable\": \"false\"\n },\n \"children\": [{\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"\n }\n }]\n },\n \"name\": \"down\",\n \"theme\": \"outlined\"\n};\nexport default DownOutlined;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport DownOutlinedSvg from \"@ant-design/icons-svg/es/asn/DownOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar DownOutlined = function DownOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: DownOutlinedSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n DownOutlined.displayName = 'DownOutlined';\n}\nexport default /*#__PURE__*/React.forwardRef(DownOutlined);","// This icon file is generated automatically.\nvar SearchOutlined = {\n \"icon\": {\n \"tag\": \"svg\",\n \"attrs\": {\n \"viewBox\": \"64 64 896 896\",\n \"focusable\": \"false\"\n },\n \"children\": [{\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"\n }\n }]\n },\n \"name\": \"search\",\n \"theme\": \"outlined\"\n};\nexport default SearchOutlined;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport SearchOutlinedSvg from \"@ant-design/icons-svg/es/asn/SearchOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar SearchOutlined = function SearchOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: SearchOutlinedSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n SearchOutlined.displayName = 'SearchOutlined';\n}\nexport default /*#__PURE__*/React.forwardRef(SearchOutlined);","'use client';\n\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n// TODO: 4.0 - codemod should help to change `filterOption` to support node props.\nimport classNames from 'classnames';\nimport RcSelect, { OptGroup, Option } from 'rc-select';\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport genPurePanel from '../_util/PurePanel';\nimport { getTransitionName } from '../_util/motion';\nimport { getMergedStatus, getStatusClassNames } from '../_util/statusUtils';\nimport warning from '../_util/warning';\nimport { ConfigContext } from '../config-provider';\nimport DisabledContext from '../config-provider/DisabledContext';\nimport DefaultRenderEmpty from '../config-provider/defaultRenderEmpty';\nimport useSize from '../config-provider/hooks/useSize';\nimport { FormItemInputContext } from '../form/context';\nimport { useCompactItemContext } from '../space/Compact';\nimport useStyle from './style';\nimport useBuiltinPlacements from './useBuiltinPlacements';\nimport useShowArrow from './useShowArrow';\nimport getIcons from './utils/iconUtil';\nvar SECRET_COMBOBOX_MODE_DO_NOT_USE = 'SECRET_COMBOBOX_MODE_DO_NOT_USE';\nvar InternalSelect = function InternalSelect(_a, ref) {\n var _classNames2;\n var _b;\n var customizePrefixCls = _a.prefixCls,\n _a$bordered = _a.bordered,\n bordered = _a$bordered === void 0 ? true : _a$bordered,\n className = _a.className,\n rootClassName = _a.rootClassName,\n getPopupContainer = _a.getPopupContainer,\n popupClassName = _a.popupClassName,\n dropdownClassName = _a.dropdownClassName,\n _a$listHeight = _a.listHeight,\n listHeight = _a$listHeight === void 0 ? 256 : _a$listHeight,\n placement = _a.placement,\n _a$listItemHeight = _a.listItemHeight,\n listItemHeight = _a$listItemHeight === void 0 ? 24 : _a$listItemHeight,\n customizeSize = _a.size,\n customDisabled = _a.disabled,\n notFoundContent = _a.notFoundContent,\n customStatus = _a.status,\n builtinPlacements = _a.builtinPlacements,\n dropdownMatchSelectWidth = _a.dropdownMatchSelectWidth,\n popupMatchSelectWidth = _a.popupMatchSelectWidth,\n propDirection = _a.direction,\n style = _a.style,\n allowClear = _a.allowClear,\n props = __rest(_a, [\"prefixCls\", \"bordered\", \"className\", \"rootClassName\", \"getPopupContainer\", \"popupClassName\", \"dropdownClassName\", \"listHeight\", \"placement\", \"listItemHeight\", \"size\", \"disabled\", \"notFoundContent\", \"status\", \"builtinPlacements\", \"dropdownMatchSelectWidth\", \"popupMatchSelectWidth\", \"direction\", \"style\", \"allowClear\"]);\n var _React$useContext = React.useContext(ConfigContext),\n getContextPopupContainer = _React$useContext.getPopupContainer,\n getPrefixCls = _React$useContext.getPrefixCls,\n renderEmpty = _React$useContext.renderEmpty,\n contextDirection = _React$useContext.direction,\n virtual = _React$useContext.virtual,\n contextPopupMatchSelectWidth = _React$useContext.popupMatchSelectWidth,\n popupOverflow = _React$useContext.popupOverflow,\n select = _React$useContext.select;\n var prefixCls = getPrefixCls('select', customizePrefixCls);\n var rootPrefixCls = getPrefixCls();\n var direction = propDirection !== null && propDirection !== void 0 ? propDirection : contextDirection;\n var _useCompactItemContex = useCompactItemContext(prefixCls, direction),\n compactSize = _useCompactItemContex.compactSize,\n compactItemClassnames = _useCompactItemContex.compactItemClassnames;\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n var mode = React.useMemo(function () {\n var m = props.mode;\n if (m === 'combobox') {\n return undefined;\n }\n if (m === SECRET_COMBOBOX_MODE_DO_NOT_USE) {\n return 'combobox';\n }\n return m;\n }, [props.mode]);\n var isMultiple = mode === 'multiple' || mode === 'tags';\n var showSuffixIcon = useShowArrow(props.suffixIcon, props.showArrow);\n var mergedPopupMatchSelectWidth = (_b = popupMatchSelectWidth !== null && popupMatchSelectWidth !== void 0 ? popupMatchSelectWidth : dropdownMatchSelectWidth) !== null && _b !== void 0 ? _b : contextPopupMatchSelectWidth;\n // ===================== Form Status =====================\n var _React$useContext2 = React.useContext(FormItemInputContext),\n contextStatus = _React$useContext2.status,\n hasFeedback = _React$useContext2.hasFeedback,\n isFormItemInput = _React$useContext2.isFormItemInput,\n feedbackIcon = _React$useContext2.feedbackIcon;\n var mergedStatus = getMergedStatus(contextStatus, customStatus);\n // ===================== Empty =====================\n var mergedNotFound;\n if (notFoundContent !== undefined) {\n mergedNotFound = notFoundContent;\n } else if (mode === 'combobox') {\n mergedNotFound = null;\n } else {\n mergedNotFound = (renderEmpty === null || renderEmpty === void 0 ? void 0 : renderEmpty('Select')) || /*#__PURE__*/React.createElement(DefaultRenderEmpty, {\n componentName: \"Select\"\n });\n }\n // ===================== Icons =====================\n var _getIcons = getIcons(Object.assign(Object.assign({}, props), {\n multiple: isMultiple,\n hasFeedback: hasFeedback,\n feedbackIcon: feedbackIcon,\n showSuffixIcon: showSuffixIcon,\n prefixCls: prefixCls,\n showArrow: props.showArrow,\n componentName: 'Select'\n })),\n suffixIcon = _getIcons.suffixIcon,\n itemIcon = _getIcons.itemIcon,\n removeIcon = _getIcons.removeIcon,\n clearIcon = _getIcons.clearIcon;\n var mergedAllowClear = allowClear === true ? {\n clearIcon: clearIcon\n } : allowClear;\n var selectProps = omit(props, ['suffixIcon', 'itemIcon']);\n var rcSelectRtlDropdownClassName = classNames(popupClassName || dropdownClassName, _defineProperty({}, \"\".concat(prefixCls, \"-dropdown-\").concat(direction), direction === 'rtl'), rootClassName, hashId);\n var mergedSize = useSize(function (ctx) {\n var _a;\n return (_a = customizeSize !== null && customizeSize !== void 0 ? customizeSize : compactSize) !== null && _a !== void 0 ? _a : ctx;\n });\n // ===================== Disabled =====================\n var disabled = React.useContext(DisabledContext);\n var mergedDisabled = customDisabled !== null && customDisabled !== void 0 ? customDisabled : disabled;\n var mergedClassName = classNames((_classNames2 = {}, _defineProperty(_classNames2, \"\".concat(prefixCls, \"-lg\"), mergedSize === 'large'), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-sm\"), mergedSize === 'small'), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-borderless\"), !bordered), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-in-form-item\"), isFormItemInput), _classNames2), getStatusClassNames(prefixCls, mergedStatus, hasFeedback), compactItemClassnames, select === null || select === void 0 ? void 0 : select.className, className, rootClassName, hashId);\n // ===================== Placement =====================\n var memoPlacement = React.useMemo(function () {\n if (placement !== undefined) {\n return placement;\n }\n return direction === 'rtl' ? 'bottomRight' : 'bottomLeft';\n }, [placement, direction]);\n var mergedBuiltinPlacements = useBuiltinPlacements(builtinPlacements, popupOverflow);\n // ====================== Warning ======================\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? warning(!dropdownClassName, 'Select', '`dropdownClassName` is deprecated. Please use `popupClassName` instead.') : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(dropdownMatchSelectWidth === undefined, 'Select', '`dropdownMatchSelectWidth` is deprecated. Please use `popupMatchSelectWidth` instead.') : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!('showArrow' in props), 'Select', '`showArrow` is deprecated which will be removed in next major version. It will be a default behavior, you can hide it by setting `suffixIcon` to null.') : void 0;\n }\n // ====================== Render =======================\n return wrapSSR( /*#__PURE__*/React.createElement(RcSelect, Object.assign({\n ref: ref,\n virtual: virtual,\n showSearch: select === null || select === void 0 ? void 0 : select.showSearch\n }, selectProps, {\n style: Object.assign(Object.assign({}, select === null || select === void 0 ? void 0 : select.style), style),\n dropdownMatchSelectWidth: mergedPopupMatchSelectWidth,\n builtinPlacements: mergedBuiltinPlacements,\n transitionName: getTransitionName(rootPrefixCls, 'slide-up', props.transitionName),\n listHeight: listHeight,\n listItemHeight: listItemHeight,\n mode: mode,\n prefixCls: prefixCls,\n placement: memoPlacement,\n direction: direction,\n suffixIcon: suffixIcon,\n menuItemSelectedIcon: itemIcon,\n removeIcon: removeIcon,\n allowClear: mergedAllowClear,\n notFoundContent: mergedNotFound,\n className: mergedClassName,\n getPopupContainer: getPopupContainer || getContextPopupContainer,\n dropdownClassName: rcSelectRtlDropdownClassName,\n disabled: mergedDisabled\n })));\n};\nif (process.env.NODE_ENV !== 'production') {\n InternalSelect.displayName = 'Select';\n}\nvar Select = /*#__PURE__*/React.forwardRef(InternalSelect);\n// We don't care debug panel\n/* istanbul ignore next */\nvar PurePanel = genPurePanel(Select);\nSelect.SECRET_COMBOBOX_MODE_DO_NOT_USE = SECRET_COMBOBOX_MODE_DO_NOT_USE;\nSelect.Option = Option;\nSelect.OptGroup = OptGroup;\nSelect._InternalPanelDoNotUseOrYouWillBeFired = PurePanel;\nif (process.env.NODE_ENV !== 'production') {\n Select.displayName = 'Select';\n}\nexport default Select;","/**\n * Since Select, TreeSelect, Cascader is same Select like component.\n * We just use same hook to handle this logic.\n *\n * If `suffixIcon` is not equal to `null`, always show it.\n */\nexport default function useShowArrow(suffixIcon, showArrow) {\n return showArrow !== undefined ? showArrow : suffixIcon !== null;\n}","import CheckOutlined from \"@ant-design/icons/es/icons/CheckOutlined\";\nimport CloseCircleFilled from \"@ant-design/icons/es/icons/CloseCircleFilled\";\nimport CloseOutlined from \"@ant-design/icons/es/icons/CloseOutlined\";\nimport DownOutlined from \"@ant-design/icons/es/icons/DownOutlined\";\nimport LoadingOutlined from \"@ant-design/icons/es/icons/LoadingOutlined\";\nimport SearchOutlined from \"@ant-design/icons/es/icons/SearchOutlined\";\nimport * as React from 'react';\nimport warning from '../../_util/warning';\nexport default function getIcons(_ref) {\n var suffixIcon = _ref.suffixIcon,\n clearIcon = _ref.clearIcon,\n menuItemSelectedIcon = _ref.menuItemSelectedIcon,\n removeIcon = _ref.removeIcon,\n loading = _ref.loading,\n multiple = _ref.multiple,\n hasFeedback = _ref.hasFeedback,\n prefixCls = _ref.prefixCls,\n showSuffixIcon = _ref.showSuffixIcon,\n feedbackIcon = _ref.feedbackIcon,\n showArrow = _ref.showArrow,\n componentName = _ref.componentName;\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? warning(!clearIcon, componentName, '`clearIcon` is deprecated, please use `allowClear={{ clearIcon: React.ReactNode }}` instead.') : void 0;\n }\n // Clear Icon\n var mergedClearIcon = clearIcon !== null && clearIcon !== void 0 ? clearIcon : /*#__PURE__*/React.createElement(CloseCircleFilled, null);\n // Validation Feedback Icon\n var getSuffixIconNode = function getSuffixIconNode(arrowIcon) {\n if (suffixIcon === null && !hasFeedback && !showArrow) {\n return null;\n }\n return /*#__PURE__*/React.createElement(React.Fragment, null, showSuffixIcon !== false && arrowIcon, hasFeedback && feedbackIcon);\n };\n // Arrow item icon\n var mergedSuffixIcon = null;\n if (suffixIcon !== undefined) {\n mergedSuffixIcon = getSuffixIconNode(suffixIcon);\n } else if (loading) {\n mergedSuffixIcon = getSuffixIconNode( /*#__PURE__*/React.createElement(LoadingOutlined, {\n spin: true\n }));\n } else {\n var iconCls = \"\".concat(prefixCls, \"-suffix\");\n mergedSuffixIcon = function mergedSuffixIcon(_ref2) {\n var open = _ref2.open,\n showSearch = _ref2.showSearch;\n if (open && showSearch) {\n return getSuffixIconNode( /*#__PURE__*/React.createElement(SearchOutlined, {\n className: iconCls\n }));\n }\n return getSuffixIconNode( /*#__PURE__*/React.createElement(DownOutlined, {\n className: iconCls\n }));\n };\n }\n // Checked item icon\n var mergedItemIcon = null;\n if (menuItemSelectedIcon !== undefined) {\n mergedItemIcon = menuItemSelectedIcon;\n } else if (multiple) {\n mergedItemIcon = /*#__PURE__*/React.createElement(CheckOutlined, null);\n } else {\n mergedItemIcon = null;\n }\n var mergedRemoveIcon = null;\n if (removeIcon !== undefined) {\n mergedRemoveIcon = removeIcon;\n } else {\n mergedRemoveIcon = /*#__PURE__*/React.createElement(CloseOutlined, null);\n }\n return {\n clearIcon: mergedClearIcon,\n suffixIcon: mergedSuffixIcon,\n itemIcon: mergedItemIcon,\n removeIcon: mergedRemoveIcon\n };\n}","import * as React from 'react';\nimport Select from '../select';\nvar MiniSelect = function MiniSelect(props) {\n return /*#__PURE__*/React.createElement(Select, Object.assign({}, props, {\n showSearch: true,\n size: \"small\"\n }));\n};\nvar MiddleSelect = function MiddleSelect(props) {\n return /*#__PURE__*/React.createElement(Select, Object.assign({}, props, {\n showSearch: true,\n size: \"middle\"\n }));\n};\nMiniSelect.Option = Select.Option;\nMiddleSelect.Option = Select.Option;\nexport { MiniSelect, MiddleSelect };","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { clearFix, resetComponent } from '../../style';\nimport { genCompactItemStyle } from '../../style/compact-item';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nexport var genPlaceholderStyle = function genPlaceholderStyle(color) {\n return {\n // Firefox\n '&::-moz-placeholder': {\n opacity: 1\n },\n '&::placeholder': {\n color: color,\n userSelect: 'none' // https://github.com/ant-design/ant-design/pull/32639\n },\n\n '&:placeholder-shown': {\n textOverflow: 'ellipsis'\n }\n };\n};\nexport var genHoverStyle = function genHoverStyle(token) {\n return {\n borderColor: token.inputBorderHoverColor,\n borderInlineEndWidth: token.lineWidth\n };\n};\nexport var genActiveStyle = function genActiveStyle(token) {\n return {\n borderColor: token.inputBorderHoverColor,\n boxShadow: \"0 0 0 \".concat(token.controlOutlineWidth, \"px \").concat(token.controlOutline),\n borderInlineEndWidth: token.lineWidth,\n outline: 0\n };\n};\nexport var genDisabledStyle = function genDisabledStyle(token) {\n return {\n color: token.colorTextDisabled,\n backgroundColor: token.colorBgContainerDisabled,\n borderColor: token.colorBorder,\n boxShadow: 'none',\n cursor: 'not-allowed',\n opacity: 1,\n '&:hover': Object.assign({}, genHoverStyle(mergeToken(token, {\n inputBorderHoverColor: token.colorBorder\n })))\n };\n};\nvar genInputLargeStyle = function genInputLargeStyle(token) {\n var inputPaddingVerticalLG = token.inputPaddingVerticalLG,\n fontSizeLG = token.fontSizeLG,\n lineHeightLG = token.lineHeightLG,\n borderRadiusLG = token.borderRadiusLG,\n inputPaddingHorizontalLG = token.inputPaddingHorizontalLG;\n return {\n padding: \"\".concat(inputPaddingVerticalLG, \"px \").concat(inputPaddingHorizontalLG, \"px\"),\n fontSize: fontSizeLG,\n lineHeight: lineHeightLG,\n borderRadius: borderRadiusLG\n };\n};\nexport var genInputSmallStyle = function genInputSmallStyle(token) {\n return {\n padding: \"\".concat(token.inputPaddingVerticalSM, \"px \").concat(token.controlPaddingHorizontalSM - 1, \"px\"),\n borderRadius: token.borderRadiusSM\n };\n};\nexport var genStatusStyle = function genStatusStyle(token, parentCls) {\n var _ref;\n var componentCls = token.componentCls,\n colorError = token.colorError,\n colorWarning = token.colorWarning,\n colorErrorOutline = token.colorErrorOutline,\n colorWarningOutline = token.colorWarningOutline,\n colorErrorBorderHover = token.colorErrorBorderHover,\n colorWarningBorderHover = token.colorWarningBorderHover;\n return _ref = {}, _defineProperty(_ref, \"&-status-error:not(\".concat(parentCls, \"-disabled):not(\").concat(parentCls, \"-borderless)\").concat(parentCls), _defineProperty({\n borderColor: colorError,\n '&:hover': {\n borderColor: colorErrorBorderHover\n },\n '&:focus, &-focused': Object.assign({}, genActiveStyle(mergeToken(token, {\n inputBorderActiveColor: colorError,\n inputBorderHoverColor: colorError,\n controlOutline: colorErrorOutline\n })))\n }, \"\".concat(componentCls, \"-prefix, \").concat(componentCls, \"-suffix\"), {\n color: colorError\n })), _defineProperty(_ref, \"&-status-warning:not(\".concat(parentCls, \"-disabled):not(\").concat(parentCls, \"-borderless)\").concat(parentCls), _defineProperty({\n borderColor: colorWarning,\n '&:hover': {\n borderColor: colorWarningBorderHover\n },\n '&:focus, &-focused': Object.assign({}, genActiveStyle(mergeToken(token, {\n inputBorderActiveColor: colorWarning,\n inputBorderHoverColor: colorWarning,\n controlOutline: colorWarningOutline\n })))\n }, \"\".concat(componentCls, \"-prefix, \").concat(componentCls, \"-suffix\"), {\n color: colorWarning\n })), _ref;\n};\nexport var genBasicInputStyle = function genBasicInputStyle(token) {\n return Object.assign(Object.assign({\n position: 'relative',\n display: 'inline-block',\n width: '100%',\n minWidth: 0,\n padding: \"\".concat(token.inputPaddingVertical, \"px \").concat(token.inputPaddingHorizontal, \"px\"),\n color: token.colorText,\n fontSize: token.fontSize,\n lineHeight: token.lineHeight,\n backgroundColor: token.colorBgContainer,\n backgroundImage: 'none',\n borderWidth: token.lineWidth,\n borderStyle: token.lineType,\n borderColor: token.colorBorder,\n borderRadius: token.borderRadius,\n transition: \"all \".concat(token.motionDurationMid)\n }, genPlaceholderStyle(token.colorTextPlaceholder)), {\n '&:hover': Object.assign({}, genHoverStyle(token)),\n '&:focus, &-focused': Object.assign({}, genActiveStyle(token)),\n '&-disabled, &[disabled]': Object.assign({}, genDisabledStyle(token)),\n '&-borderless': {\n '&, &:hover, &:focus, &-focused, &-disabled, &[disabled]': {\n backgroundColor: 'transparent',\n border: 'none',\n boxShadow: 'none'\n }\n },\n // Reset height for `textarea`s\n 'textarea&': {\n maxWidth: '100%',\n height: 'auto',\n minHeight: token.controlHeight,\n lineHeight: token.lineHeight,\n verticalAlign: 'bottom',\n transition: \"all \".concat(token.motionDurationSlow, \", height 0s\"),\n resize: 'vertical'\n },\n // Size\n '&-lg': Object.assign({}, genInputLargeStyle(token)),\n '&-sm': Object.assign({}, genInputSmallStyle(token)),\n // RTL\n '&-rtl': {\n direction: 'rtl'\n },\n '&-textarea-rtl': {\n direction: 'rtl'\n }\n });\n};\nexport var genInputGroupStyle = function genInputGroupStyle(token) {\n var _$concat, _addon, _$concat3, _$concat4, _$concat$concat5, _Object$assign, _ref2;\n var componentCls = token.componentCls,\n antCls = token.antCls;\n return _ref2 = {\n position: 'relative',\n display: 'table',\n width: '100%',\n borderCollapse: 'separate',\n borderSpacing: 0\n }, _defineProperty(_ref2, \"&[class*='col-']\", {\n paddingInlineEnd: token.paddingXS,\n '&:last-child': {\n paddingInlineEnd: 0\n }\n }), _defineProperty(_ref2, \"&-lg \".concat(componentCls, \", &-lg > \").concat(componentCls, \"-group-addon\"), Object.assign({}, genInputLargeStyle(token))), _defineProperty(_ref2, \"&-sm \".concat(componentCls, \", &-sm > \").concat(componentCls, \"-group-addon\"), Object.assign({}, genInputSmallStyle(token))), _defineProperty(_ref2, \"&-lg \".concat(antCls, \"-select-single \").concat(antCls, \"-select-selector\"), {\n height: token.controlHeightLG\n }), _defineProperty(_ref2, \"&-sm \".concat(antCls, \"-select-single \").concat(antCls, \"-select-selector\"), {\n height: token.controlHeightSM\n }), _defineProperty(_ref2, \"> \".concat(componentCls), {\n display: 'table-cell',\n '&:not(:first-child):not(:last-child)': {\n borderRadius: 0\n }\n }), _defineProperty(_ref2, \"\".concat(componentCls, \"-group\"), (_$concat3 = {}, _defineProperty(_$concat3, \"&-addon, &-wrap\", {\n display: 'table-cell',\n width: 1,\n whiteSpace: 'nowrap',\n verticalAlign: 'middle',\n '&:not(:first-child):not(:last-child)': {\n borderRadius: 0\n }\n }), _defineProperty(_$concat3, '&-wrap > *', {\n display: 'block !important'\n }), _defineProperty(_$concat3, '&-addon', (_addon = {\n position: 'relative',\n padding: \"0 \".concat(token.inputPaddingHorizontal, \"px\"),\n color: token.colorText,\n fontWeight: 'normal',\n fontSize: token.fontSize,\n textAlign: 'center',\n backgroundColor: token.colorFillAlter,\n border: \"\".concat(token.lineWidth, \"px \").concat(token.lineType, \" \").concat(token.colorBorder),\n borderRadius: token.borderRadius,\n transition: \"all \".concat(token.motionDurationSlow),\n lineHeight: 1\n }, _defineProperty(_addon, \"\".concat(antCls, \"-select\"), (_$concat = {\n margin: \"-\".concat(token.inputPaddingVertical + 1, \"px -\").concat(token.inputPaddingHorizontal, \"px\")\n }, _defineProperty(_$concat, \"&\".concat(antCls, \"-select-single:not(\").concat(antCls, \"-select-customize-input)\"), _defineProperty({}, \"\".concat(antCls, \"-select-selector\"), {\n backgroundColor: 'inherit',\n border: \"\".concat(token.lineWidth, \"px \").concat(token.lineType, \" transparent\"),\n boxShadow: 'none'\n })), _defineProperty(_$concat, '&-open, &-focused', _defineProperty({}, \"\".concat(antCls, \"-select-selector\"), {\n color: token.colorPrimary\n })), _$concat)), _defineProperty(_addon, \"\".concat(antCls, \"-cascader-picker\"), _defineProperty({\n margin: \"-9px -\".concat(token.inputPaddingHorizontal, \"px\"),\n backgroundColor: 'transparent'\n }, \"\".concat(antCls, \"-cascader-input\"), {\n textAlign: 'start',\n border: 0,\n boxShadow: 'none'\n })), _addon)), _defineProperty(_$concat3, '&-addon:first-child', {\n borderInlineEnd: 0\n }), _defineProperty(_$concat3, '&-addon:last-child', {\n borderInlineStart: 0\n }), _$concat3)), _defineProperty(_ref2, \"\".concat(componentCls), {\n width: '100%',\n marginBottom: 0,\n textAlign: 'inherit',\n '&:focus': {\n zIndex: 1,\n borderInlineEndWidth: 1\n },\n '&:hover': _defineProperty({\n zIndex: 1,\n borderInlineEndWidth: 1\n }, \"\".concat(componentCls, \"-search-with-button &\"), {\n zIndex: 0\n })\n }), _defineProperty(_ref2, \"> \".concat(componentCls, \":first-child, \").concat(componentCls, \"-group-addon:first-child\"), _defineProperty({\n borderStartEndRadius: 0,\n borderEndEndRadius: 0\n }, \"\".concat(antCls, \"-select \").concat(antCls, \"-select-selector\"), {\n borderStartEndRadius: 0,\n borderEndEndRadius: 0\n })), _defineProperty(_ref2, \"> \".concat(componentCls, \"-affix-wrapper\"), (_$concat4 = {}, _defineProperty(_$concat4, \"&:not(:first-child) \".concat(componentCls), {\n borderStartStartRadius: 0,\n borderEndStartRadius: 0\n }), _defineProperty(_$concat4, \"&:not(:last-child) \".concat(componentCls), {\n borderStartEndRadius: 0,\n borderEndEndRadius: 0\n }), _$concat4)), _defineProperty(_ref2, \"> \".concat(componentCls, \":last-child, \").concat(componentCls, \"-group-addon:last-child\"), _defineProperty({\n borderStartStartRadius: 0,\n borderEndStartRadius: 0\n }, \"\".concat(antCls, \"-select \").concat(antCls, \"-select-selector\"), {\n borderStartStartRadius: 0,\n borderEndStartRadius: 0\n })), _defineProperty(_ref2, \"\".concat(componentCls, \"-affix-wrapper\"), _defineProperty({\n '&:not(:last-child)': _defineProperty({\n borderStartEndRadius: 0,\n borderEndEndRadius: 0\n }, \"\".concat(componentCls, \"-search &\"), {\n borderStartStartRadius: token.borderRadius,\n borderEndStartRadius: token.borderRadius\n })\n }, \"&:not(:first-child), \".concat(componentCls, \"-search &:not(:first-child)\"), {\n borderStartStartRadius: 0,\n borderEndStartRadius: 0\n })), _defineProperty(_ref2, \"&\".concat(componentCls, \"-group-compact\"), Object.assign(Object.assign({\n display: 'block'\n }, clearFix()), (_Object$assign = {}, _defineProperty(_Object$assign, \"\".concat(componentCls, \"-group-addon, \").concat(componentCls, \"-group-wrap, > \").concat(componentCls), {\n '&:not(:first-child):not(:last-child)': {\n borderInlineEndWidth: token.lineWidth,\n '&:hover': {\n zIndex: 1\n },\n '&:focus': {\n zIndex: 1\n }\n }\n }), _defineProperty(_Object$assign, '& > *', {\n display: 'inline-block',\n float: 'none',\n verticalAlign: 'top',\n borderRadius: 0\n }), _defineProperty(_Object$assign, \"\\n & > \".concat(componentCls, \"-affix-wrapper,\\n & > \").concat(componentCls, \"-number-affix-wrapper,\\n & > \").concat(antCls, \"-picker-range\\n \"), {\n display: 'inline-flex'\n }), _defineProperty(_Object$assign, '& > *:not(:last-child)', {\n marginInlineEnd: -token.lineWidth,\n borderInlineEndWidth: token.lineWidth\n }), _defineProperty(_Object$assign, \"\".concat(componentCls), {\n float: 'none'\n }), _defineProperty(_Object$assign, \"& > \".concat(antCls, \"-select > \").concat(antCls, \"-select-selector,\\n & > \").concat(antCls, \"-select-auto-complete \").concat(componentCls, \",\\n & > \").concat(antCls, \"-cascader-picker \").concat(componentCls, \",\\n & > \").concat(componentCls, \"-group-wrapper \").concat(componentCls), {\n borderInlineEndWidth: token.lineWidth,\n borderRadius: 0,\n '&:hover': {\n zIndex: 1\n },\n '&:focus': {\n zIndex: 1\n }\n }), _defineProperty(_Object$assign, \"& > \".concat(antCls, \"-select-focused\"), {\n zIndex: 1\n }), _defineProperty(_Object$assign, \"& > \".concat(antCls, \"-select > \").concat(antCls, \"-select-arrow\"), {\n zIndex: 1 // https://github.com/ant-design/ant-design/issues/20371\n }), _defineProperty(_Object$assign, \"& > *:first-child,\\n & > \".concat(antCls, \"-select:first-child > \").concat(antCls, \"-select-selector,\\n & > \").concat(antCls, \"-select-auto-complete:first-child \").concat(componentCls, \",\\n & > \").concat(antCls, \"-cascader-picker:first-child \").concat(componentCls), {\n borderStartStartRadius: token.borderRadius,\n borderEndStartRadius: token.borderRadius\n }), _defineProperty(_Object$assign, \"& > *:last-child,\\n & > \".concat(antCls, \"-select:last-child > \").concat(antCls, \"-select-selector,\\n & > \").concat(antCls, \"-cascader-picker:last-child \").concat(componentCls, \",\\n & > \").concat(antCls, \"-cascader-picker-focused:last-child \").concat(componentCls), {\n borderInlineEndWidth: token.lineWidth,\n borderStartEndRadius: token.borderRadius,\n borderEndEndRadius: token.borderRadius\n }), _defineProperty(_Object$assign, \"& > \".concat(antCls, \"-select-auto-complete \").concat(componentCls), {\n verticalAlign: 'top'\n }), _defineProperty(_Object$assign, \"\".concat(componentCls, \"-group-wrapper + \").concat(componentCls, \"-group-wrapper\"), _defineProperty({\n marginInlineStart: -token.lineWidth\n }, \"\".concat(componentCls, \"-affix-wrapper\"), {\n borderRadius: 0\n })), _defineProperty(_Object$assign, \"\".concat(componentCls, \"-group-wrapper:not(:last-child)\"), _defineProperty({}, \"&\".concat(componentCls, \"-search > \").concat(componentCls, \"-group\"), (_$concat$concat5 = {}, _defineProperty(_$concat$concat5, \"& > \".concat(componentCls, \"-group-addon > \").concat(componentCls, \"-search-button\"), {\n borderRadius: 0\n }), _defineProperty(_$concat$concat5, \"& > \".concat(componentCls), {\n borderStartStartRadius: token.borderRadius,\n borderStartEndRadius: 0,\n borderEndEndRadius: 0,\n borderEndStartRadius: token.borderRadius\n }), _$concat$concat5))), _Object$assign))), _ref2;\n};\nvar genInputStyle = function genInputStyle(token) {\n var _typeColor;\n var componentCls = token.componentCls,\n controlHeightSM = token.controlHeightSM,\n lineWidth = token.lineWidth;\n var FIXED_CHROME_COLOR_HEIGHT = 16;\n var colorSmallPadding = (controlHeightSM - lineWidth * 2 - FIXED_CHROME_COLOR_HEIGHT) / 2;\n return _defineProperty({}, componentCls, Object.assign(Object.assign(Object.assign(Object.assign({}, resetComponent(token)), genBasicInputStyle(token)), genStatusStyle(token, componentCls)), {\n '&[type=\"color\"]': (_typeColor = {\n height: token.controlHeight\n }, _defineProperty(_typeColor, \"&\".concat(componentCls, \"-lg\"), {\n height: token.controlHeightLG\n }), _defineProperty(_typeColor, \"&\".concat(componentCls, \"-sm\"), {\n height: controlHeightSM,\n paddingTop: colorSmallPadding,\n paddingBottom: colorSmallPadding\n }), _typeColor),\n '&[type=\"search\"]::-webkit-search-cancel-button, &[type=\"search\"]::-webkit-search-decoration': {\n '-webkit-appearance': 'none'\n }\n }));\n};\nvar genAllowClearStyle = function genAllowClearStyle(token) {\n var componentCls = token.componentCls;\n return _defineProperty({}, \"\".concat(componentCls, \"-clear-icon\"), {\n margin: 0,\n color: token.colorTextQuaternary,\n fontSize: token.fontSizeIcon,\n verticalAlign: -1,\n // https://github.com/ant-design/ant-design/pull/18151\n // https://codesandbox.io/s/wizardly-sun-u10br\n cursor: 'pointer',\n transition: \"color \".concat(token.motionDurationSlow),\n '&:hover': {\n color: token.colorTextTertiary\n },\n '&:active': {\n color: token.colorText\n },\n '&-hidden': {\n visibility: 'hidden'\n },\n '&-has-suffix': {\n margin: \"0 \".concat(token.inputAffixPadding, \"px\")\n }\n });\n};\nvar genAffixStyle = function genAffixStyle(token) {\n var _Object$assign3;\n var componentCls = token.componentCls,\n inputAffixPadding = token.inputAffixPadding,\n colorTextDescription = token.colorTextDescription,\n motionDurationSlow = token.motionDurationSlow,\n colorIcon = token.colorIcon,\n colorIconHover = token.colorIconHover,\n iconCls = token.iconCls;\n return _defineProperty({}, \"\".concat(componentCls, \"-affix-wrapper\"), Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, genBasicInputStyle(token)), (_Object$assign3 = {\n display: 'inline-flex'\n }, _defineProperty(_Object$assign3, \"&:not(\".concat(componentCls, \"-affix-wrapper-disabled):hover\"), Object.assign(Object.assign({}, genHoverStyle(token)), _defineProperty({\n zIndex: 1\n }, \"\".concat(componentCls, \"-search-with-button &\"), {\n zIndex: 0\n }))), _defineProperty(_Object$assign3, '&-focused, &:focus', {\n zIndex: 1\n }), _defineProperty(_Object$assign3, '&-disabled', _defineProperty({}, \"\".concat(componentCls, \"[disabled]\"), {\n background: 'transparent'\n })), _defineProperty(_Object$assign3, \"> input\".concat(componentCls), {\n padding: 0,\n fontSize: 'inherit',\n border: 'none',\n borderRadius: 0,\n outline: 'none',\n '&::-ms-reveal': {\n display: 'none'\n },\n '&:focus': {\n boxShadow: 'none !important'\n }\n }), _defineProperty(_Object$assign3, '&::before', {\n display: 'inline-block',\n width: 0,\n visibility: 'hidden',\n content: '\"\\\\a0\"'\n }), _defineProperty(_Object$assign3, \"\".concat(componentCls), {\n '&-prefix, &-suffix': {\n display: 'flex',\n flex: 'none',\n alignItems: 'center',\n '> *:not(:last-child)': {\n marginInlineEnd: token.paddingXS\n }\n },\n '&-show-count-suffix': {\n color: colorTextDescription\n },\n '&-show-count-has-suffix': {\n marginInlineEnd: token.paddingXXS\n },\n '&-prefix': {\n marginInlineEnd: inputAffixPadding\n },\n '&-suffix': {\n marginInlineStart: inputAffixPadding\n }\n }), _Object$assign3)), genAllowClearStyle(token)), _defineProperty({}, \"\".concat(iconCls).concat(componentCls, \"-password-icon\"), {\n color: colorIcon,\n cursor: 'pointer',\n transition: \"all \".concat(motionDurationSlow),\n '&:hover': {\n color: colorIconHover\n }\n })), genStatusStyle(token, \"\".concat(componentCls, \"-affix-wrapper\"))));\n};\nvar genGroupStyle = function genGroupStyle(token) {\n var _wrapper;\n var componentCls = token.componentCls,\n colorError = token.colorError,\n colorWarning = token.colorWarning,\n borderRadiusLG = token.borderRadiusLG,\n borderRadiusSM = token.borderRadiusSM;\n return _defineProperty({}, \"\".concat(componentCls, \"-group\"), Object.assign(Object.assign(Object.assign({}, resetComponent(token)), genInputGroupStyle(token)), {\n '&-rtl': {\n direction: 'rtl'\n },\n '&-wrapper': (_wrapper = {\n display: 'inline-block',\n width: '100%',\n textAlign: 'start',\n verticalAlign: 'top',\n '&-rtl': {\n direction: 'rtl'\n },\n // Size\n '&-lg': _defineProperty({}, \"\".concat(componentCls, \"-group-addon\"), {\n borderRadius: borderRadiusLG,\n fontSize: token.fontSizeLG\n }),\n '&-sm': _defineProperty({}, \"\".concat(componentCls, \"-group-addon\"), {\n borderRadius: borderRadiusSM\n }),\n // Status\n '&-status-error': _defineProperty({}, \"\".concat(componentCls, \"-group-addon\"), {\n color: colorError,\n borderColor: colorError\n }),\n '&-status-warning': _defineProperty({}, \"\".concat(componentCls, \"-group-addon\"), {\n color: colorWarning,\n borderColor: colorWarning\n }),\n '&-disabled': _defineProperty({}, \"\".concat(componentCls, \"-group-addon\"), Object.assign({}, genDisabledStyle(token)))\n }, _defineProperty(_wrapper, \"&:not(\".concat(componentCls, \"-compact-first-item):not(\").concat(componentCls, \"-compact-last-item)\").concat(componentCls, \"-compact-item\"), _defineProperty({}, \"\".concat(componentCls, \", \").concat(componentCls, \"-group-addon\"), {\n borderRadius: 0\n })), _defineProperty(_wrapper, \"&:not(\".concat(componentCls, \"-compact-last-item)\").concat(componentCls, \"-compact-first-item\"), _defineProperty({}, \"\".concat(componentCls, \", \").concat(componentCls, \"-group-addon\"), {\n borderStartEndRadius: 0,\n borderEndEndRadius: 0\n })), _defineProperty(_wrapper, \"&:not(\".concat(componentCls, \"-compact-first-item)\").concat(componentCls, \"-compact-last-item\"), _defineProperty({}, \"\".concat(componentCls, \", \").concat(componentCls, \"-group-addon\"), {\n borderStartStartRadius: 0,\n borderEndStartRadius: 0\n })), _wrapper)\n }));\n};\nvar genSearchInputStyle = function genSearchInputStyle(token) {\n var _$concat7, _$concat10, _searchPrefixCls;\n var componentCls = token.componentCls,\n antCls = token.antCls;\n var searchPrefixCls = \"\".concat(componentCls, \"-search\");\n return _defineProperty({}, searchPrefixCls, (_searchPrefixCls = {}, _defineProperty(_searchPrefixCls, \"\".concat(componentCls), {\n '&:hover, &:focus': _defineProperty({\n borderColor: token.colorPrimaryHover\n }, \"+ \".concat(componentCls, \"-group-addon \").concat(searchPrefixCls, \"-button:not(\").concat(antCls, \"-btn-primary)\"), {\n borderInlineStartColor: token.colorPrimaryHover\n })\n }), _defineProperty(_searchPrefixCls, \"\".concat(componentCls, \"-affix-wrapper\"), {\n borderRadius: 0\n }), _defineProperty(_searchPrefixCls, \"\".concat(componentCls, \"-lg\"), {\n lineHeight: token.lineHeightLG - 0.0002\n }), _defineProperty(_searchPrefixCls, \"> \".concat(componentCls, \"-group\"), _defineProperty({}, \"> \".concat(componentCls, \"-group-addon:last-child\"), (_$concat7 = {\n insetInlineStart: -1,\n padding: 0,\n border: 0\n }, _defineProperty(_$concat7, \"\".concat(searchPrefixCls, \"-button\"), {\n paddingTop: 0,\n paddingBottom: 0,\n borderStartStartRadius: 0,\n borderStartEndRadius: token.borderRadius,\n borderEndEndRadius: token.borderRadius,\n borderEndStartRadius: 0\n }), _defineProperty(_$concat7, \"\".concat(searchPrefixCls, \"-button:not(\").concat(antCls, \"-btn-primary)\"), _defineProperty({\n color: token.colorTextDescription,\n '&:hover': {\n color: token.colorPrimaryHover\n },\n '&:active': {\n color: token.colorPrimaryActive\n }\n }, \"&\".concat(antCls, \"-btn-loading::before\"), {\n insetInlineStart: 0,\n insetInlineEnd: 0,\n insetBlockStart: 0,\n insetBlockEnd: 0\n })), _$concat7))), _defineProperty(_searchPrefixCls, \"\".concat(searchPrefixCls, \"-button\"), {\n height: token.controlHeight,\n '&:hover, &:focus': {\n zIndex: 1\n }\n }), _defineProperty(_searchPrefixCls, \"&-large \".concat(searchPrefixCls, \"-button\"), {\n height: token.controlHeightLG\n }), _defineProperty(_searchPrefixCls, \"&-small \".concat(searchPrefixCls, \"-button\"), {\n height: token.controlHeightSM\n }), _defineProperty(_searchPrefixCls, '&-rtl', {\n direction: 'rtl'\n }), _defineProperty(_searchPrefixCls, \"&\".concat(componentCls, \"-compact-item\"), (_$concat10 = {}, _defineProperty(_$concat10, \"&:not(\".concat(componentCls, \"-compact-last-item)\"), _defineProperty({}, \"\".concat(componentCls, \"-group-addon\"), _defineProperty({}, \"\".concat(componentCls, \"-search-button\"), {\n marginInlineEnd: -token.lineWidth,\n borderRadius: 0\n }))), _defineProperty(_$concat10, \"&:not(\".concat(componentCls, \"-compact-first-item)\"), _defineProperty({}, \"\".concat(componentCls, \",\").concat(componentCls, \"-affix-wrapper\"), {\n borderRadius: 0\n })), _defineProperty(_$concat10, \"> \".concat(componentCls, \"-group-addon \").concat(componentCls, \"-search-button,\\n > \").concat(componentCls, \",\\n \").concat(componentCls, \"-affix-wrapper\"), {\n '&:hover,&:focus,&:active': {\n zIndex: 2\n }\n }), _defineProperty(_$concat10, \"> \".concat(componentCls, \"-affix-wrapper-focused\"), {\n zIndex: 2\n }), _$concat10)), _searchPrefixCls));\n};\nexport function initInputToken(token) {\n // @ts-ignore\n return mergeToken(token, {\n inputAffixPadding: token.paddingXXS,\n inputPaddingVertical: Math.max(Math.round((token.controlHeight - token.fontSize * token.lineHeight) / 2 * 10) / 10 - token.lineWidth, 3),\n inputPaddingVerticalLG: Math.ceil((token.controlHeightLG - token.fontSizeLG * token.lineHeightLG) / 2 * 10) / 10 - token.lineWidth,\n inputPaddingVerticalSM: Math.max(Math.round((token.controlHeightSM - token.fontSize * token.lineHeight) / 2 * 10) / 10 - token.lineWidth, 0),\n inputPaddingHorizontal: token.paddingSM - token.lineWidth,\n inputPaddingHorizontalSM: token.paddingXS - token.lineWidth,\n inputPaddingHorizontalLG: token.controlPaddingHorizontal - token.lineWidth,\n inputBorderHoverColor: token.colorPrimaryHover,\n inputBorderActiveColor: token.colorPrimaryHover\n });\n}\nvar genTextAreaStyle = function genTextAreaStyle(token) {\n var _showCount, _$concat11, _affixWrapper$conc2, _textareaPrefixCls;\n var componentCls = token.componentCls,\n paddingLG = token.paddingLG;\n var textareaPrefixCls = \"\".concat(componentCls, \"-textarea\");\n return _defineProperty({}, textareaPrefixCls, (_textareaPrefixCls = {\n position: 'relative',\n '&-show-count': (_showCount = {}, _defineProperty(_showCount, \"> \".concat(componentCls), {\n height: '100%'\n }), _defineProperty(_showCount, \"\".concat(componentCls, \"-data-count\"), {\n position: 'absolute',\n bottom: -token.fontSize * token.lineHeight,\n insetInlineEnd: 0,\n color: token.colorTextDescription,\n whiteSpace: 'nowrap',\n pointerEvents: 'none'\n }), _showCount),\n '&-allow-clear': _defineProperty({}, \"> \".concat(componentCls), {\n paddingInlineEnd: paddingLG\n })\n }, _defineProperty(_textareaPrefixCls, \"&-affix-wrapper\".concat(textareaPrefixCls, \"-has-feedback\"), _defineProperty({}, \"\".concat(componentCls), {\n paddingInlineEnd: paddingLG\n })), _defineProperty(_textareaPrefixCls, \"&-affix-wrapper\".concat(componentCls, \"-affix-wrapper\"), (_affixWrapper$conc2 = {\n padding: 0\n }, _defineProperty(_affixWrapper$conc2, \"> textarea\".concat(componentCls), {\n fontSize: 'inherit',\n border: 'none',\n outline: 'none',\n '&:focus': {\n boxShadow: 'none !important'\n }\n }), _defineProperty(_affixWrapper$conc2, \"\".concat(componentCls, \"-suffix\"), (_$concat11 = {\n margin: 0,\n '> *:not(:last-child)': {\n marginInline: 0\n }\n }, _defineProperty(_$concat11, \"\".concat(componentCls, \"-clear-icon\"), {\n position: 'absolute',\n insetInlineEnd: token.paddingXS,\n insetBlockStart: token.paddingXS\n }), _defineProperty(_$concat11, \"\".concat(textareaPrefixCls, \"-suffix\"), {\n position: 'absolute',\n top: 0,\n insetInlineEnd: token.inputPaddingHorizontal,\n bottom: 0,\n zIndex: 1,\n display: 'inline-flex',\n alignItems: 'center',\n margin: 'auto',\n pointerEvents: 'none'\n }), _$concat11)), _affixWrapper$conc2)), _textareaPrefixCls));\n};\n// ============================== Export ==============================\nexport default genComponentStyleHook('Input', function (token) {\n var inputToken = initInputToken(token);\n return [genInputStyle(inputToken), genTextAreaStyle(inputToken), genAffixStyle(inputToken), genGroupStyle(inputToken), genSearchInputStyle(inputToken),\n // =====================================================\n // == Space Compact ==\n // =====================================================\n genCompactItemStyle(inputToken)];\n});","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { genBasicInputStyle, genInputSmallStyle, initInputToken } from '../../input/style';\nimport { genFocusOutline, genFocusStyle, resetComponent } from '../../style';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nvar genPaginationDisabledStyle = function genPaginationDisabledStyle(token) {\n var _$concat$concat, _$concat2, _ref;\n var componentCls = token.componentCls;\n return _ref = {}, _defineProperty(_ref, \"\".concat(componentCls, \"-disabled\"), {\n '&, &:hover': _defineProperty({\n cursor: 'not-allowed'\n }, \"\".concat(componentCls, \"-item-link\"), {\n color: token.colorTextDisabled,\n cursor: 'not-allowed'\n }),\n '&:focus-visible': _defineProperty({\n cursor: 'not-allowed'\n }, \"\".concat(componentCls, \"-item-link\"), {\n color: token.colorTextDisabled,\n cursor: 'not-allowed'\n })\n }), _defineProperty(_ref, \"&\".concat(componentCls, \"-disabled\"), (_$concat2 = {\n cursor: 'not-allowed'\n }, _defineProperty(_$concat2, \"\".concat(componentCls, \"-item\"), {\n cursor: 'not-allowed',\n '&:hover, &:active': {\n backgroundColor: 'transparent'\n },\n a: {\n color: token.colorTextDisabled,\n backgroundColor: 'transparent',\n border: 'none',\n cursor: 'not-allowed'\n },\n '&-active': {\n borderColor: token.colorBorder,\n backgroundColor: token.itemActiveBgDisabled,\n '&:hover, &:active': {\n backgroundColor: token.itemActiveBgDisabled\n },\n a: {\n color: token.itemActiveColorDisabled\n }\n }\n }), _defineProperty(_$concat2, \"\".concat(componentCls, \"-item-link\"), _defineProperty({\n color: token.colorTextDisabled,\n cursor: 'not-allowed',\n '&:hover, &:active': {\n backgroundColor: 'transparent'\n }\n }, \"\".concat(componentCls, \"-simple&\"), {\n backgroundColor: 'transparent',\n '&:hover, &:active': {\n backgroundColor: 'transparent'\n }\n })), _defineProperty(_$concat2, \"\".concat(componentCls, \"-simple-pager\"), {\n color: token.colorTextDisabled\n }), _defineProperty(_$concat2, \"\".concat(componentCls, \"-jump-prev, \").concat(componentCls, \"-jump-next\"), (_$concat$concat = {}, _defineProperty(_$concat$concat, \"\".concat(componentCls, \"-item-link-icon\"), {\n opacity: 0\n }), _defineProperty(_$concat$concat, \"\".concat(componentCls, \"-item-ellipsis\"), {\n opacity: 1\n }), _$concat$concat)), _$concat2)), _defineProperty(_ref, \"&\".concat(componentCls, \"-simple\"), _defineProperty({}, \"\".concat(componentCls, \"-prev, \").concat(componentCls, \"-next\"), _defineProperty({}, \"&\".concat(componentCls, \"-disabled \").concat(componentCls, \"-item-link\"), {\n '&:hover, &:active': {\n backgroundColor: 'transparent'\n }\n }))), _ref;\n};\nvar genPaginationMiniStyle = function genPaginationMiniStyle(token) {\n var _$concat$concat3, _$concat$concat5, _ref2;\n var componentCls = token.componentCls;\n return _ref2 = {}, _defineProperty(_ref2, \"&\".concat(componentCls, \"-mini \").concat(componentCls, \"-total-text, &\").concat(componentCls, \"-mini \").concat(componentCls, \"-simple-pager\"), {\n height: token.itemSizeSM,\n lineHeight: \"\".concat(token.itemSizeSM, \"px\")\n }), _defineProperty(_ref2, \"&\".concat(componentCls, \"-mini \").concat(componentCls, \"-item\"), {\n minWidth: token.itemSizeSM,\n height: token.itemSizeSM,\n margin: 0,\n lineHeight: \"\".concat(token.itemSizeSM - 2, \"px\")\n }), _defineProperty(_ref2, \"&\".concat(componentCls, \"-mini:not(\").concat(componentCls, \"-disabled) \").concat(componentCls, \"-item:not(\").concat(componentCls, \"-item-active)\"), {\n backgroundColor: 'transparent',\n borderColor: 'transparent',\n '&:hover': {\n backgroundColor: token.colorBgTextHover\n },\n '&:active': {\n backgroundColor: token.colorBgTextActive\n }\n }), _defineProperty(_ref2, \"&\".concat(componentCls, \"-mini \").concat(componentCls, \"-prev, &\").concat(componentCls, \"-mini \").concat(componentCls, \"-next\"), {\n minWidth: token.itemSizeSM,\n height: token.itemSizeSM,\n margin: 0,\n lineHeight: \"\".concat(token.itemSizeSM, \"px\")\n }), _defineProperty(_ref2, \"&\".concat(componentCls, \"-mini:not(\").concat(componentCls, \"-disabled)\"), _defineProperty({}, \"\".concat(componentCls, \"-prev, \").concat(componentCls, \"-next\"), (_$concat$concat3 = {}, _defineProperty(_$concat$concat3, \"&:hover \".concat(componentCls, \"-item-link\"), {\n backgroundColor: token.colorBgTextHover\n }), _defineProperty(_$concat$concat3, \"&:active \".concat(componentCls, \"-item-link\"), {\n backgroundColor: token.colorBgTextActive\n }), _defineProperty(_$concat$concat3, \"&\".concat(componentCls, \"-disabled:hover \").concat(componentCls, \"-item-link\"), {\n backgroundColor: 'transparent'\n }), _$concat$concat3))), _defineProperty(_ref2, \"\\n &\".concat(componentCls, \"-mini \").concat(componentCls, \"-prev \").concat(componentCls, \"-item-link,\\n &\").concat(componentCls, \"-mini \").concat(componentCls, \"-next \").concat(componentCls, \"-item-link\\n \"), {\n backgroundColor: 'transparent',\n borderColor: 'transparent',\n '&::after': {\n height: token.itemSizeSM,\n lineHeight: \"\".concat(token.itemSizeSM, \"px\")\n }\n }), _defineProperty(_ref2, \"&\".concat(componentCls, \"-mini \").concat(componentCls, \"-jump-prev, &\").concat(componentCls, \"-mini \").concat(componentCls, \"-jump-next\"), {\n height: token.itemSizeSM,\n marginInlineEnd: 0,\n lineHeight: \"\".concat(token.itemSizeSM, \"px\")\n }), _defineProperty(_ref2, \"&\".concat(componentCls, \"-mini \").concat(componentCls, \"-options\"), (_$concat$concat5 = {\n marginInlineStart: token.paginationMiniOptionsMarginInlineStart\n }, _defineProperty(_$concat$concat5, \"&-size-changer\", {\n top: token.miniOptionsSizeChangerTop\n }), _defineProperty(_$concat$concat5, \"&-quick-jumper\", {\n height: token.itemSizeSM,\n lineHeight: \"\".concat(token.itemSizeSM, \"px\"),\n input: Object.assign(Object.assign({}, genInputSmallStyle(token)), {\n width: token.paginationMiniQuickJumperInputWidth,\n height: token.controlHeightSM\n })\n }), _$concat$concat5)), _ref2;\n};\nvar genPaginationSimpleStyle = function genPaginationSimpleStyle(token) {\n var _ref3;\n var componentCls = token.componentCls;\n return _ref3 = {}, _defineProperty(_ref3, \"\\n &\".concat(componentCls, \"-simple \").concat(componentCls, \"-prev,\\n &\").concat(componentCls, \"-simple \").concat(componentCls, \"-next\\n \"), _defineProperty({\n height: token.itemSizeSM,\n lineHeight: \"\".concat(token.itemSizeSM, \"px\"),\n verticalAlign: 'top'\n }, \"\".concat(componentCls, \"-item-link\"), {\n height: token.itemSizeSM,\n backgroundColor: 'transparent',\n border: 0,\n '&:hover': {\n backgroundColor: token.colorBgTextHover\n },\n '&:active': {\n backgroundColor: token.colorBgTextActive\n },\n '&::after': {\n height: token.itemSizeSM,\n lineHeight: \"\".concat(token.itemSizeSM, \"px\")\n }\n })), _defineProperty(_ref3, \"&\".concat(componentCls, \"-simple \").concat(componentCls, \"-simple-pager\"), {\n display: 'inline-block',\n height: token.itemSizeSM,\n marginInlineEnd: token.marginXS,\n input: {\n boxSizing: 'border-box',\n height: '100%',\n marginInlineEnd: token.marginXS,\n padding: \"0 \".concat(token.paginationItemPaddingInline, \"px\"),\n textAlign: 'center',\n backgroundColor: token.itemInputBg,\n border: \"\".concat(token.lineWidth, \"px \").concat(token.lineType, \" \").concat(token.colorBorder),\n borderRadius: token.borderRadius,\n outline: 'none',\n transition: \"border-color \".concat(token.motionDurationMid),\n color: 'inherit',\n '&:hover': {\n borderColor: token.colorPrimary\n },\n '&:focus': {\n borderColor: token.colorPrimaryHover,\n boxShadow: \"\".concat(token.inputOutlineOffset, \"px 0 \").concat(token.controlOutlineWidth, \"px \").concat(token.controlOutline)\n },\n '&[disabled]': {\n color: token.colorTextDisabled,\n backgroundColor: token.colorBgContainerDisabled,\n borderColor: token.colorBorder,\n cursor: 'not-allowed'\n }\n }\n }), _ref3;\n};\nvar genPaginationJumpStyle = function genPaginationJumpStyle(token) {\n var _$concat4, _hover2, _$concat$concat7, _$concat$concat8, _ref4;\n var componentCls = token.componentCls;\n return _ref4 = {}, _defineProperty(_ref4, \"\".concat(componentCls, \"-jump-prev, \").concat(componentCls, \"-jump-next\"), (_$concat$concat7 = {\n outline: 0\n }, _defineProperty(_$concat$concat7, \"\".concat(componentCls, \"-item-container\"), (_$concat4 = {\n position: 'relative'\n }, _defineProperty(_$concat4, \"\".concat(componentCls, \"-item-link-icon\"), {\n color: token.colorPrimary,\n fontSize: token.fontSizeSM,\n opacity: 0,\n transition: \"all \".concat(token.motionDurationMid),\n '&-svg': {\n top: 0,\n insetInlineEnd: 0,\n bottom: 0,\n insetInlineStart: 0,\n margin: 'auto'\n }\n }), _defineProperty(_$concat4, \"\".concat(componentCls, \"-item-ellipsis\"), {\n position: 'absolute',\n top: 0,\n insetInlineEnd: 0,\n bottom: 0,\n insetInlineStart: 0,\n display: 'block',\n margin: 'auto',\n color: token.colorTextDisabled,\n fontFamily: 'Arial, Helvetica, sans-serif',\n letterSpacing: token.paginationEllipsisLetterSpacing,\n textAlign: 'center',\n textIndent: token.paginationEllipsisTextIndent,\n opacity: 1,\n transition: \"all \".concat(token.motionDurationMid)\n }), _$concat4)), _defineProperty(_$concat$concat7, '&:hover', (_hover2 = {}, _defineProperty(_hover2, \"\".concat(componentCls, \"-item-link-icon\"), {\n opacity: 1\n }), _defineProperty(_hover2, \"\".concat(componentCls, \"-item-ellipsis\"), {\n opacity: 0\n }), _hover2)), _$concat$concat7)), _defineProperty(_ref4, \"\\n \".concat(componentCls, \"-prev,\\n \").concat(componentCls, \"-jump-prev,\\n \").concat(componentCls, \"-jump-next\\n \"), {\n marginInlineEnd: token.marginXS\n }), _defineProperty(_ref4, \"\\n \".concat(componentCls, \"-prev,\\n \").concat(componentCls, \"-next,\\n \").concat(componentCls, \"-jump-prev,\\n \").concat(componentCls, \"-jump-next\\n \"), {\n display: 'inline-block',\n minWidth: token.itemSize,\n height: token.itemSize,\n color: token.colorText,\n fontFamily: token.fontFamily,\n lineHeight: \"\".concat(token.itemSize, \"px\"),\n textAlign: 'center',\n verticalAlign: 'middle',\n listStyle: 'none',\n borderRadius: token.borderRadius,\n cursor: 'pointer',\n transition: \"all \".concat(token.motionDurationMid)\n }), _defineProperty(_ref4, \"\".concat(componentCls, \"-prev, \").concat(componentCls, \"-next\"), (_$concat$concat8 = {\n fontFamily: 'Arial, Helvetica, sans-serif',\n outline: 0,\n button: {\n color: token.colorText,\n cursor: 'pointer',\n userSelect: 'none'\n }\n }, _defineProperty(_$concat$concat8, \"\".concat(componentCls, \"-item-link\"), {\n display: 'block',\n width: '100%',\n height: '100%',\n padding: 0,\n fontSize: token.fontSizeSM,\n textAlign: 'center',\n backgroundColor: 'transparent',\n border: \"\".concat(token.lineWidth, \"px \").concat(token.lineType, \" transparent\"),\n borderRadius: token.borderRadius,\n outline: 'none',\n transition: \"all \".concat(token.motionDurationMid)\n }), _defineProperty(_$concat$concat8, \"&:hover \".concat(componentCls, \"-item-link\"), {\n backgroundColor: token.colorBgTextHover\n }), _defineProperty(_$concat$concat8, \"&:active \".concat(componentCls, \"-item-link\"), {\n backgroundColor: token.colorBgTextActive\n }), _defineProperty(_$concat$concat8, \"&\".concat(componentCls, \"-disabled:hover\"), _defineProperty({}, \"\".concat(componentCls, \"-item-link\"), {\n backgroundColor: 'transparent'\n })), _$concat$concat8)), _defineProperty(_ref4, \"\".concat(componentCls, \"-slash\"), {\n marginInlineEnd: token.paginationSlashMarginInlineEnd,\n marginInlineStart: token.paginationSlashMarginInlineStart\n }), _defineProperty(_ref4, \"\".concat(componentCls, \"-options\"), {\n display: 'inline-block',\n marginInlineStart: token.margin,\n verticalAlign: 'middle',\n '&-size-changer.-select': {\n display: 'inline-block',\n width: 'auto'\n },\n '&-quick-jumper': {\n display: 'inline-block',\n height: token.controlHeight,\n marginInlineStart: token.marginXS,\n lineHeight: \"\".concat(token.controlHeight, \"px\"),\n verticalAlign: 'top',\n input: Object.assign(Object.assign({}, genBasicInputStyle(token)), {\n width: token.controlHeightLG * 1.25,\n height: token.controlHeight,\n boxSizing: 'border-box',\n margin: 0,\n marginInlineStart: token.marginXS,\n marginInlineEnd: token.marginXS\n })\n }\n }), _ref4;\n};\nvar genPaginationItemStyle = function genPaginationItemStyle(token) {\n var _$concat6;\n var componentCls = token.componentCls;\n return _defineProperty({}, \"\".concat(componentCls, \"-item\"), (_$concat6 = {\n display: 'inline-block',\n minWidth: token.itemSize,\n height: token.itemSize,\n marginInlineEnd: token.marginXS,\n fontFamily: token.fontFamily,\n lineHeight: \"\".concat(token.itemSize - 2, \"px\"),\n textAlign: 'center',\n verticalAlign: 'middle',\n listStyle: 'none',\n backgroundColor: 'transparent',\n border: \"\".concat(token.lineWidth, \"px \").concat(token.lineType, \" transparent\"),\n borderRadius: token.borderRadius,\n outline: 0,\n cursor: 'pointer',\n userSelect: 'none',\n a: {\n display: 'block',\n padding: \"0 \".concat(token.paginationItemPaddingInline, \"px\"),\n color: token.colorText,\n '&:hover': {\n textDecoration: 'none'\n }\n }\n }, _defineProperty(_$concat6, \"&:not(\".concat(componentCls, \"-item-active)\"), {\n '&:hover': {\n transition: \"all \".concat(token.motionDurationMid),\n backgroundColor: token.colorBgTextHover\n },\n '&:active': {\n backgroundColor: token.colorBgTextActive\n }\n }), _defineProperty(_$concat6, '&-active', {\n fontWeight: token.fontWeightStrong,\n backgroundColor: token.itemActiveBg,\n borderColor: token.colorPrimary,\n a: {\n color: token.colorPrimary\n },\n '&:hover': {\n borderColor: token.colorPrimaryHover\n },\n '&:hover a': {\n color: token.colorPrimaryHover\n }\n }), _$concat6));\n};\nvar genPaginationStyle = function genPaginationStyle(token) {\n var _Object$assign2, _ref6;\n var componentCls = token.componentCls;\n return _ref6 = {}, _defineProperty(_ref6, componentCls, Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, resetComponent(token)), _defineProperty({\n 'ul, ol': {\n margin: 0,\n padding: 0,\n listStyle: 'none'\n },\n '&::after': {\n display: 'block',\n clear: 'both',\n height: 0,\n overflow: 'hidden',\n visibility: 'hidden',\n content: '\"\"'\n }\n }, \"\".concat(componentCls, \"-total-text\"), {\n display: 'inline-block',\n height: token.itemSize,\n marginInlineEnd: token.marginXS,\n lineHeight: \"\".concat(token.itemSize - 2, \"px\"),\n verticalAlign: 'middle'\n })), genPaginationItemStyle(token)), genPaginationJumpStyle(token)), genPaginationSimpleStyle(token)), genPaginationMiniStyle(token)), genPaginationDisabledStyle(token)), (_Object$assign2 = {}, _defineProperty(_Object$assign2, \"@media only screen and (max-width: \".concat(token.screenLG, \"px)\"), _defineProperty({}, \"\".concat(componentCls, \"-item\"), {\n '&-after-jump-prev, &-before-jump-next': {\n display: 'none'\n }\n })), _defineProperty(_Object$assign2, \"@media only screen and (max-width: \".concat(token.screenSM, \"px)\"), _defineProperty({}, \"\".concat(componentCls, \"-options\"), {\n display: 'none'\n })), _Object$assign2))), _defineProperty(_ref6, \"&\".concat(token.componentCls, \"-rtl\"), {\n direction: 'rtl'\n }), _ref6;\n};\nvar genBorderedStyle = function genBorderedStyle(token) {\n var _$concat$concat9, _$concat$concat$conca, _$concat$concat11, _$concat8, _$concat$concat12, _ref7;\n var componentCls = token.componentCls;\n return _ref7 = {}, _defineProperty(_ref7, \"\".concat(componentCls).concat(componentCls, \"-disabled:not(\").concat(componentCls, \"-mini)\"), (_$concat$concat$conca = {\n '&, &:hover': _defineProperty({}, \"\".concat(componentCls, \"-item-link\"), {\n borderColor: token.colorBorder\n }),\n '&:focus-visible': _defineProperty({}, \"\".concat(componentCls, \"-item-link\"), {\n borderColor: token.colorBorder\n })\n }, _defineProperty(_$concat$concat$conca, \"\".concat(componentCls, \"-item, \").concat(componentCls, \"-item-link\"), (_$concat$concat9 = {\n backgroundColor: token.colorBgContainerDisabled,\n borderColor: token.colorBorder\n }, _defineProperty(_$concat$concat9, \"&:hover:not(\".concat(componentCls, \"-item-active)\"), {\n backgroundColor: token.colorBgContainerDisabled,\n borderColor: token.colorBorder,\n a: {\n color: token.colorTextDisabled\n }\n }), _defineProperty(_$concat$concat9, \"&\".concat(componentCls, \"-item-active\"), {\n backgroundColor: token.itemActiveBgDisabled\n }), _$concat$concat9)), _defineProperty(_$concat$concat$conca, \"\".concat(componentCls, \"-prev, \").concat(componentCls, \"-next\"), _defineProperty({\n '&:hover button': {\n backgroundColor: token.colorBgContainerDisabled,\n borderColor: token.colorBorder,\n color: token.colorTextDisabled\n }\n }, \"\".concat(componentCls, \"-item-link\"), {\n backgroundColor: token.colorBgContainerDisabled,\n borderColor: token.colorBorder\n })), _$concat$concat$conca)), _defineProperty(_ref7, \"\".concat(componentCls, \":not(\").concat(componentCls, \"-mini)\"), (_$concat$concat12 = {}, _defineProperty(_$concat$concat12, \"\".concat(componentCls, \"-prev, \").concat(componentCls, \"-next\"), (_$concat$concat11 = {\n '&:hover button': {\n borderColor: token.colorPrimaryHover,\n backgroundColor: token.itemBg\n }\n }, _defineProperty(_$concat$concat11, \"\".concat(componentCls, \"-item-link\"), {\n backgroundColor: token.itemLinkBg,\n borderColor: token.colorBorder\n }), _defineProperty(_$concat$concat11, \"&:hover \".concat(componentCls, \"-item-link\"), {\n borderColor: token.colorPrimary,\n backgroundColor: token.itemBg,\n color: token.colorPrimary\n }), _defineProperty(_$concat$concat11, \"&\".concat(componentCls, \"-disabled\"), _defineProperty({}, \"\".concat(componentCls, \"-item-link\"), {\n borderColor: token.colorBorder,\n color: token.colorTextDisabled\n })), _$concat$concat11)), _defineProperty(_$concat$concat12, \"\".concat(componentCls, \"-item\"), (_$concat8 = {\n backgroundColor: token.itemBg,\n border: \"\".concat(token.lineWidth, \"px \").concat(token.lineType, \" \").concat(token.colorBorder)\n }, _defineProperty(_$concat8, \"&:hover:not(\".concat(componentCls, \"-item-active)\"), {\n borderColor: token.colorPrimary,\n backgroundColor: token.itemBg,\n a: {\n color: token.colorPrimary\n }\n }), _defineProperty(_$concat8, '&-active', {\n borderColor: token.colorPrimary\n }), _$concat8)), _$concat$concat12)), _ref7;\n};\nvar genPaginationFocusStyle = function genPaginationFocusStyle(token) {\n var _Object$assign3, _$concat$concat14;\n var componentCls = token.componentCls;\n return _defineProperty({}, \"\".concat(componentCls, \":not(\").concat(componentCls, \"-disabled)\"), (_$concat$concat14 = {}, _defineProperty(_$concat$concat14, \"\".concat(componentCls, \"-item\"), Object.assign({}, genFocusStyle(token))), _defineProperty(_$concat$concat14, \"\".concat(componentCls, \"-jump-prev, \").concat(componentCls, \"-jump-next\"), {\n '&:focus-visible': Object.assign((_Object$assign3 = {}, _defineProperty(_Object$assign3, \"\".concat(componentCls, \"-item-link-icon\"), {\n opacity: 1\n }), _defineProperty(_Object$assign3, \"\".concat(componentCls, \"-item-ellipsis\"), {\n opacity: 0\n }), _Object$assign3), genFocusOutline(token))\n }), _defineProperty(_$concat$concat14, \"\".concat(componentCls, \"-prev, \").concat(componentCls, \"-next\"), _defineProperty({}, \"&:focus-visible \".concat(componentCls, \"-item-link\"), Object.assign({}, genFocusOutline(token)))), _$concat$concat14));\n};\n// ============================== Export ==============================\nexport default genComponentStyleHook('Pagination', function (token) {\n var paginationToken = mergeToken(token, {\n inputOutlineOffset: 0,\n paginationMiniOptionsMarginInlineStart: token.marginXXS / 2,\n paginationMiniQuickJumperInputWidth: token.controlHeightLG * 1.1,\n paginationItemPaddingInline: token.marginXXS * 1.5,\n paginationEllipsisLetterSpacing: token.marginXXS / 2,\n paginationSlashMarginInlineStart: token.marginXXS,\n paginationSlashMarginInlineEnd: token.marginSM,\n paginationEllipsisTextIndent: '0.13em' // magic for ui experience\n }, initInputToken(token));\n return [genPaginationStyle(paginationToken), genPaginationFocusStyle(paginationToken), token.wireframe && genBorderedStyle(paginationToken)];\n}, function (token) {\n return {\n itemBg: token.colorBgContainer,\n itemSize: token.controlHeight,\n itemSizeSM: token.controlHeightSM,\n itemActiveBg: token.colorBgContainer,\n itemLinkBg: token.colorBgContainer,\n itemActiveColorDisabled: token.colorTextDisabled,\n itemActiveBgDisabled: token.controlItemBgActiveDisabled,\n itemInputBg: token.colorBgContainer,\n miniOptionsSizeChangerTop: 0\n };\n});","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport DoubleLeftOutlined from \"@ant-design/icons/es/icons/DoubleLeftOutlined\";\nimport DoubleRightOutlined from \"@ant-design/icons/es/icons/DoubleRightOutlined\";\nimport LeftOutlined from \"@ant-design/icons/es/icons/LeftOutlined\";\nimport RightOutlined from \"@ant-design/icons/es/icons/RightOutlined\";\nimport classNames from 'classnames';\nimport RcPagination from 'rc-pagination';\nimport enUS from \"rc-pagination/es/locale/en_US\";\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport useSize from '../config-provider/hooks/useSize';\nimport useBreakpoint from '../grid/hooks/useBreakpoint';\nimport { useLocale } from '../locale';\nimport { MiddleSelect, MiniSelect } from './Select';\nimport useStyle from './style';\nvar Pagination = function Pagination(props) {\n var _classNames;\n var customizePrefixCls = props.prefixCls,\n customizeSelectPrefixCls = props.selectPrefixCls,\n className = props.className,\n rootClassName = props.rootClassName,\n style = props.style,\n customizeSize = props.size,\n customLocale = props.locale,\n selectComponentClass = props.selectComponentClass,\n responsive = props.responsive,\n showSizeChanger = props.showSizeChanger,\n restProps = __rest(props, [\"prefixCls\", \"selectPrefixCls\", \"className\", \"rootClassName\", \"style\", \"size\", \"locale\", \"selectComponentClass\", \"responsive\", \"showSizeChanger\"]);\n var _useBreakpoint = useBreakpoint(responsive),\n xs = _useBreakpoint.xs;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction,\n _React$useContext$pag = _React$useContext.pagination,\n pagination = _React$useContext$pag === void 0 ? {} : _React$useContext$pag;\n var prefixCls = getPrefixCls('pagination', customizePrefixCls);\n // Style\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n var mergedShowSizeChanger = showSizeChanger !== null && showSizeChanger !== void 0 ? showSizeChanger : pagination.showSizeChanger;\n var iconsProps = React.useMemo(function () {\n var ellipsis = /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-item-ellipsis\")\n }, \"\\u2022\\u2022\\u2022\");\n var prevIcon = /*#__PURE__*/React.createElement(\"button\", {\n className: \"\".concat(prefixCls, \"-item-link\"),\n type: \"button\",\n tabIndex: -1\n }, direction === 'rtl' ? /*#__PURE__*/React.createElement(RightOutlined, null) : /*#__PURE__*/React.createElement(LeftOutlined, null));\n var nextIcon = /*#__PURE__*/React.createElement(\"button\", {\n className: \"\".concat(prefixCls, \"-item-link\"),\n type: \"button\",\n tabIndex: -1\n }, direction === 'rtl' ? /*#__PURE__*/React.createElement(LeftOutlined, null) : /*#__PURE__*/React.createElement(RightOutlined, null));\n var jumpPrevIcon = /*#__PURE__*/React.createElement(\"a\", {\n className: \"\".concat(prefixCls, \"-item-link\")\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-item-container\")\n }, direction === 'rtl' ? /*#__PURE__*/React.createElement(DoubleRightOutlined, {\n className: \"\".concat(prefixCls, \"-item-link-icon\")\n }) : /*#__PURE__*/React.createElement(DoubleLeftOutlined, {\n className: \"\".concat(prefixCls, \"-item-link-icon\")\n }), ellipsis));\n var jumpNextIcon = /*#__PURE__*/React.createElement(\"a\", {\n className: \"\".concat(prefixCls, \"-item-link\")\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-item-container\")\n }, direction === 'rtl' ? /*#__PURE__*/React.createElement(DoubleLeftOutlined, {\n className: \"\".concat(prefixCls, \"-item-link-icon\")\n }) : /*#__PURE__*/React.createElement(DoubleRightOutlined, {\n className: \"\".concat(prefixCls, \"-item-link-icon\")\n }), ellipsis));\n return {\n prevIcon: prevIcon,\n nextIcon: nextIcon,\n jumpPrevIcon: jumpPrevIcon,\n jumpNextIcon: jumpNextIcon\n };\n }, [direction, prefixCls]);\n var _useLocale = useLocale('Pagination', enUS),\n _useLocale2 = _slicedToArray(_useLocale, 1),\n contextLocale = _useLocale2[0];\n var locale = Object.assign(Object.assign({}, contextLocale), customLocale);\n var mergedSize = useSize(customizeSize);\n var isSmall = mergedSize === 'small' || !!(xs && !mergedSize && responsive);\n var selectPrefixCls = getPrefixCls('select', customizeSelectPrefixCls);\n var extendedClassName = classNames((_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-mini\"), isSmall), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _classNames), pagination === null || pagination === void 0 ? void 0 : pagination.className, className, rootClassName, hashId);\n var mergedStyle = Object.assign(Object.assign({}, pagination === null || pagination === void 0 ? void 0 : pagination.style), style);\n return wrapSSR( /*#__PURE__*/React.createElement(RcPagination, Object.assign({}, iconsProps, restProps, {\n style: mergedStyle,\n prefixCls: prefixCls,\n selectPrefixCls: selectPrefixCls,\n className: extendedClassName,\n selectComponentClass: selectComponentClass || (isSmall ? MiniSelect : MiddleSelect),\n locale: locale,\n showSizeChanger: mergedShowSizeChanger\n })));\n};\nif (process.env.NODE_ENV !== 'production') {\n Pagination.displayName = 'Pagination';\n}\nexport default Pagination;","'use client';\n\nimport Pagination from './Pagination';\nexport default Pagination;","/* eslint-disable no-undefined,no-param-reassign,no-shadow */\n\n/**\n * Throttle execution of a function. Especially useful for rate limiting\n * execution of handlers on events like resize and scroll.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher)\n * are most useful.\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through,\n * as-is, to `callback` when the throttled-function is executed.\n * @param {object} [options] - An object to configure options.\n * @param {boolean} [options.noTrailing] - Optional, defaults to false. If noTrailing is true, callback will only execute every `delay` milliseconds\n * while the throttled-function is being called. If noTrailing is false or unspecified, callback will be executed\n * one final time after the last throttled-function call. (After the throttled-function has not been called for\n * `delay` milliseconds, the internal counter is reset).\n * @param {boolean} [options.noLeading] - Optional, defaults to false. If noLeading is false, the first throttled-function call will execute callback\n * immediately. If noLeading is true, the first the callback execution will be skipped. It should be noted that\n * callback will never executed if both noLeading = true and noTrailing = true.\n * @param {boolean} [options.debounceMode] - If `debounceMode` is true (at begin), schedule `clear` to execute after `delay` ms. If `debounceMode` is\n * false (at end), schedule `callback` to execute after `delay` ms.\n *\n * @returns {Function} A new, throttled, function.\n */\nfunction throttle(delay, callback, options) {\n var _ref = options || {},\n _ref$noTrailing = _ref.noTrailing,\n noTrailing = _ref$noTrailing === void 0 ? false : _ref$noTrailing,\n _ref$noLeading = _ref.noLeading,\n noLeading = _ref$noLeading === void 0 ? false : _ref$noLeading,\n _ref$debounceMode = _ref.debounceMode,\n debounceMode = _ref$debounceMode === void 0 ? undefined : _ref$debounceMode;\n /*\n * After wrapper has stopped being called, this timeout ensures that\n * `callback` is executed at the proper times in `throttle` and `end`\n * debounce modes.\n */\n\n var timeoutID;\n var cancelled = false; // Keep track of the last time `callback` was executed.\n\n var lastExec = 0; // Function to clear existing timeout\n\n function clearExistingTimeout() {\n if (timeoutID) {\n clearTimeout(timeoutID);\n }\n } // Function to cancel next exec\n\n function cancel(options) {\n var _ref2 = options || {},\n _ref2$upcomingOnly = _ref2.upcomingOnly,\n upcomingOnly = _ref2$upcomingOnly === void 0 ? false : _ref2$upcomingOnly;\n clearExistingTimeout();\n cancelled = !upcomingOnly;\n }\n /*\n * The `wrapper` function encapsulates all of the throttling / debouncing\n * functionality and when executed will limit the rate at which `callback`\n * is executed.\n */\n\n function wrapper() {\n for (var _len = arguments.length, arguments_ = new Array(_len), _key = 0; _key < _len; _key++) {\n arguments_[_key] = arguments[_key];\n }\n var self = this;\n var elapsed = Date.now() - lastExec;\n if (cancelled) {\n return;\n } // Execute `callback` and update the `lastExec` timestamp.\n\n function exec() {\n lastExec = Date.now();\n callback.apply(self, arguments_);\n }\n /*\n * If `debounceMode` is true (at begin) this is used to clear the flag\n * to allow future `callback` executions.\n */\n\n function clear() {\n timeoutID = undefined;\n }\n if (!noLeading && debounceMode && !timeoutID) {\n /*\n * Since `wrapper` is being called for the first time and\n * `debounceMode` is true (at begin), execute `callback`\n * and noLeading != true.\n */\n exec();\n }\n clearExistingTimeout();\n if (debounceMode === undefined && elapsed > delay) {\n if (noLeading) {\n /*\n * In throttle mode with noLeading, if `delay` time has\n * been exceeded, update `lastExec` and schedule `callback`\n * to execute after `delay` ms.\n */\n lastExec = Date.now();\n if (!noTrailing) {\n timeoutID = setTimeout(debounceMode ? clear : exec, delay);\n }\n } else {\n /*\n * In throttle mode without noLeading, if `delay` time has been exceeded, execute\n * `callback`.\n */\n exec();\n }\n } else if (noTrailing !== true) {\n /*\n * In trailing throttle mode, since `delay` time has not been\n * exceeded, schedule `callback` to execute `delay` ms after most\n * recent execution.\n *\n * If `debounceMode` is true (at begin), schedule `clear` to execute\n * after `delay` ms.\n *\n * If `debounceMode` is false (at end), schedule `callback` to\n * execute after `delay` ms.\n */\n timeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === undefined ? delay - elapsed : delay);\n }\n }\n wrapper.cancel = cancel; // Return the wrapper function.\n\n return wrapper;\n}\n\n/* eslint-disable no-undefined */\n/**\n * Debounce execution of a function. Debouncing, unlike throttling,\n * guarantees that a function is only executed a single time, either at the\n * very beginning of a series of calls, or at the very end.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n * to `callback` when the debounced-function is executed.\n * @param {object} [options] - An object to configure options.\n * @param {boolean} [options.atBegin] - Optional, defaults to false. If atBegin is false or unspecified, callback will only be executed `delay` milliseconds\n * after the last debounced-function call. If atBegin is true, callback will be executed only at the first debounced-function call.\n * (After the throttled-function has not been called for `delay` milliseconds, the internal counter is reset).\n *\n * @returns {Function} A new, debounced function.\n */\n\nfunction debounce(delay, callback, options) {\n var _ref = options || {},\n _ref$atBegin = _ref.atBegin,\n atBegin = _ref$atBegin === void 0 ? false : _ref$atBegin;\n return throttle(delay, callback, {\n debounceMode: atBegin !== false\n });\n}\nexport { debounce, throttle };","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { Keyframes } from '@ant-design/cssinjs';\nimport { resetComponent } from '../../style';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nvar antSpinMove = new Keyframes('antSpinMove', {\n to: {\n opacity: 1\n }\n});\nvar antRotate = new Keyframes('antRotate', {\n to: {\n transform: 'rotate(405deg)'\n }\n});\nvar genSpinStyle = function genSpinStyle(token) {\n var _sm, _lg, _div$concat, _nestedLoading, _Object$assign;\n return _defineProperty({}, \"\".concat(token.componentCls), Object.assign(Object.assign({}, resetComponent(token)), (_Object$assign = {\n position: 'absolute',\n display: 'none',\n color: token.colorPrimary,\n fontSize: 0,\n textAlign: 'center',\n verticalAlign: 'middle',\n opacity: 0,\n transition: \"transform \".concat(token.motionDurationSlow, \" \").concat(token.motionEaseInOutCirc),\n '&-spinning': {\n position: 'static',\n display: 'inline-block',\n opacity: 1\n },\n '&-nested-loading': (_nestedLoading = {\n position: 'relative'\n }, _defineProperty(_nestedLoading, \"> div > \".concat(token.componentCls), (_div$concat = {\n position: 'absolute',\n top: 0,\n insetInlineStart: 0,\n zIndex: 4,\n display: 'block',\n width: '100%',\n height: '100%',\n maxHeight: token.contentHeight\n }, _defineProperty(_div$concat, \"\".concat(token.componentCls, \"-dot\"), {\n position: 'absolute',\n top: '50%',\n insetInlineStart: '50%',\n margin: -token.spinDotSize / 2\n }), _defineProperty(_div$concat, \"\".concat(token.componentCls, \"-text\"), {\n position: 'absolute',\n top: '50%',\n width: '100%',\n paddingTop: (token.spinDotSize - token.fontSize) / 2 + 2,\n textShadow: \"0 1px 2px \".concat(token.colorBgContainer),\n fontSize: token.fontSize\n }), _defineProperty(_div$concat, \"&\".concat(token.componentCls, \"-show-text \").concat(token.componentCls, \"-dot\"), {\n marginTop: -(token.spinDotSize / 2) - 10\n }), _defineProperty(_div$concat, '&-sm', (_sm = {}, _defineProperty(_sm, \"\".concat(token.componentCls, \"-dot\"), {\n margin: -token.spinDotSizeSM / 2\n }), _defineProperty(_sm, \"\".concat(token.componentCls, \"-text\"), {\n paddingTop: (token.spinDotSizeSM - token.fontSize) / 2 + 2\n }), _defineProperty(_sm, \"&\".concat(token.componentCls, \"-show-text \").concat(token.componentCls, \"-dot\"), {\n marginTop: -(token.spinDotSizeSM / 2) - 10\n }), _sm)), _defineProperty(_div$concat, '&-lg', (_lg = {}, _defineProperty(_lg, \"\".concat(token.componentCls, \"-dot\"), {\n margin: -(token.spinDotSizeLG / 2)\n }), _defineProperty(_lg, \"\".concat(token.componentCls, \"-text\"), {\n paddingTop: (token.spinDotSizeLG - token.fontSize) / 2 + 2\n }), _defineProperty(_lg, \"&\".concat(token.componentCls, \"-show-text \").concat(token.componentCls, \"-dot\"), {\n marginTop: -(token.spinDotSizeLG / 2) - 10\n }), _lg)), _div$concat)), _defineProperty(_nestedLoading, \"\".concat(token.componentCls, \"-container\"), {\n position: 'relative',\n transition: \"opacity \".concat(token.motionDurationSlow),\n '&::after': {\n position: 'absolute',\n top: 0,\n insetInlineEnd: 0,\n bottom: 0,\n insetInlineStart: 0,\n zIndex: 10,\n width: '100%',\n height: '100%',\n background: token.colorBgContainer,\n opacity: 0,\n transition: \"all \".concat(token.motionDurationSlow),\n content: '\"\"',\n pointerEvents: 'none'\n }\n }), _defineProperty(_nestedLoading, \"\".concat(token.componentCls, \"-blur\"), _defineProperty({\n clear: 'both',\n opacity: 0.5,\n userSelect: 'none',\n pointerEvents: 'none'\n }, \"&::after\", {\n opacity: 0.4,\n pointerEvents: 'auto'\n })), _nestedLoading)\n }, _defineProperty(_Object$assign, \"&-tip\", {\n color: token.spinDotDefault\n }), _defineProperty(_Object$assign, \"\".concat(token.componentCls, \"-dot\"), {\n position: 'relative',\n display: 'inline-block',\n fontSize: token.spinDotSize,\n width: '1em',\n height: '1em',\n '&-item': {\n position: 'absolute',\n display: 'block',\n width: (token.spinDotSize - token.marginXXS / 2) / 2,\n height: (token.spinDotSize - token.marginXXS / 2) / 2,\n backgroundColor: token.colorPrimary,\n borderRadius: '100%',\n transform: 'scale(0.75)',\n transformOrigin: '50% 50%',\n opacity: 0.3,\n animationName: antSpinMove,\n animationDuration: '1s',\n animationIterationCount: 'infinite',\n animationTimingFunction: 'linear',\n animationDirection: 'alternate',\n '&:nth-child(1)': {\n top: 0,\n insetInlineStart: 0\n },\n '&:nth-child(2)': {\n top: 0,\n insetInlineEnd: 0,\n animationDelay: '0.4s'\n },\n '&:nth-child(3)': {\n insetInlineEnd: 0,\n bottom: 0,\n animationDelay: '0.8s'\n },\n '&:nth-child(4)': {\n bottom: 0,\n insetInlineStart: 0,\n animationDelay: '1.2s'\n }\n },\n '&-spin': {\n transform: 'rotate(45deg)',\n animationName: antRotate,\n animationDuration: '1.2s',\n animationIterationCount: 'infinite',\n animationTimingFunction: 'linear'\n }\n }), _defineProperty(_Object$assign, \"&-sm \".concat(token.componentCls, \"-dot\"), {\n fontSize: token.spinDotSizeSM,\n i: {\n width: (token.spinDotSizeSM - token.marginXXS / 2) / 2,\n height: (token.spinDotSizeSM - token.marginXXS / 2) / 2\n }\n }), _defineProperty(_Object$assign, \"&-lg \".concat(token.componentCls, \"-dot\"), {\n fontSize: token.spinDotSizeLG,\n i: {\n width: (token.spinDotSizeLG - token.marginXXS) / 2,\n height: (token.spinDotSizeLG - token.marginXXS) / 2\n }\n }), _defineProperty(_Object$assign, \"&\".concat(token.componentCls, \"-show-text \").concat(token.componentCls, \"-text\"), {\n display: 'block'\n }), _Object$assign)));\n};\n// ============================== Export ==============================\nexport default genComponentStyleHook('Spin', function (token) {\n var spinToken = mergeToken(token, {\n spinDotDefault: token.colorTextDescription,\n spinDotSize: token.controlHeightLG / 2,\n spinDotSizeSM: token.controlHeightLG * 0.35,\n spinDotSizeLG: token.controlHeight\n });\n return [genSpinStyle(spinToken)];\n}, {\n contentHeight: 400\n});","'use client';\n\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport { debounce } from 'throttle-debounce';\nimport { cloneElement, isValidElement } from '../_util/reactNode';\nimport warning from '../_util/warning';\nimport { ConfigContext } from '../config-provider';\nimport useStyle from './style/index';\nvar SpinSizes = ['small', 'default', 'large'];\n// Render indicator\nvar defaultIndicator = null;\nfunction renderIndicator(prefixCls, props) {\n var indicator = props.indicator;\n var dotClassName = \"\".concat(prefixCls, \"-dot\");\n // should not be render default indicator when indicator value is null\n if (indicator === null) {\n return null;\n }\n if (isValidElement(indicator)) {\n return cloneElement(indicator, {\n className: classNames(indicator.props.className, dotClassName)\n });\n }\n if (isValidElement(defaultIndicator)) {\n return cloneElement(defaultIndicator, {\n className: classNames(defaultIndicator.props.className, dotClassName)\n });\n }\n return /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(dotClassName, \"\".concat(prefixCls, \"-dot-spin\"))\n }, /*#__PURE__*/React.createElement(\"i\", {\n className: \"\".concat(prefixCls, \"-dot-item\"),\n key: 1\n }), /*#__PURE__*/React.createElement(\"i\", {\n className: \"\".concat(prefixCls, \"-dot-item\"),\n key: 2\n }), /*#__PURE__*/React.createElement(\"i\", {\n className: \"\".concat(prefixCls, \"-dot-item\"),\n key: 3\n }), /*#__PURE__*/React.createElement(\"i\", {\n className: \"\".concat(prefixCls, \"-dot-item\"),\n key: 4\n }));\n}\nfunction shouldDelay(spinning, delay) {\n return !!spinning && !!delay && !isNaN(Number(delay));\n}\nvar Spin = function Spin(props) {\n var _classNames;\n var prefixCls = props.spinPrefixCls,\n _props$spinning = props.spinning,\n customSpinning = _props$spinning === void 0 ? true : _props$spinning,\n _props$delay = props.delay,\n delay = _props$delay === void 0 ? 0 : _props$delay,\n className = props.className,\n rootClassName = props.rootClassName,\n _props$size = props.size,\n size = _props$size === void 0 ? 'default' : _props$size,\n tip = props.tip,\n wrapperClassName = props.wrapperClassName,\n style = props.style,\n children = props.children,\n hashId = props.hashId,\n restProps = __rest(props, [\"spinPrefixCls\", \"spinning\", \"delay\", \"className\", \"rootClassName\", \"size\", \"tip\", \"wrapperClassName\", \"style\", \"children\", \"hashId\"]);\n var _React$useState = React.useState(function () {\n return customSpinning && !shouldDelay(customSpinning, delay);\n }),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n spinning = _React$useState2[0],\n setSpinning = _React$useState2[1];\n React.useEffect(function () {\n if (customSpinning) {\n var showSpinning = debounce(delay, function () {\n setSpinning(true);\n });\n showSpinning();\n return function () {\n var _a;\n (_a = showSpinning === null || showSpinning === void 0 ? void 0 : showSpinning.cancel) === null || _a === void 0 ? void 0 : _a.call(showSpinning);\n };\n }\n setSpinning(false);\n }, [delay, customSpinning]);\n var isNestedPattern = React.useMemo(function () {\n return typeof children !== 'undefined';\n }, [children]);\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? warning(!tip || isNestedPattern, 'Spin', '`tip` only work in nest pattern.') : void 0;\n }\n var _React$useContext = React.useContext(ConfigContext),\n direction = _React$useContext.direction,\n spin = _React$useContext.spin;\n var spinClassName = classNames(prefixCls, spin === null || spin === void 0 ? void 0 : spin.className, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-sm\"), size === 'small'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-lg\"), size === 'large'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-spinning\"), spinning), _defineProperty(_classNames, \"\".concat(prefixCls, \"-show-text\"), !!tip), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _classNames), className, rootClassName, hashId);\n var containerClassName = classNames(\"\".concat(prefixCls, \"-container\"), _defineProperty({}, \"\".concat(prefixCls, \"-blur\"), spinning));\n // fix https://fb.me/react-unknown-prop\n var divProps = omit(restProps, ['indicator', 'prefixCls']);\n var mergedStyle = Object.assign(Object.assign({}, spin === null || spin === void 0 ? void 0 : spin.style), style);\n var spinElement = /*#__PURE__*/React.createElement(\"div\", Object.assign({}, divProps, {\n style: mergedStyle,\n className: spinClassName,\n \"aria-live\": \"polite\",\n \"aria-busy\": spinning\n }), renderIndicator(prefixCls, props), tip && isNestedPattern ? /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-text\")\n }, tip) : null);\n if (isNestedPattern) {\n return /*#__PURE__*/React.createElement(\"div\", Object.assign({}, divProps, {\n className: classNames(\"\".concat(prefixCls, \"-nested-loading\"), wrapperClassName, hashId)\n }), spinning && /*#__PURE__*/React.createElement(\"div\", {\n key: \"loading\"\n }, spinElement), /*#__PURE__*/React.createElement(\"div\", {\n className: containerClassName,\n key: \"container\"\n }, children));\n }\n return spinElement;\n};\nvar SpinFC = function SpinFC(props) {\n var customizePrefixCls = props.prefixCls;\n var _React$useContext2 = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext2.getPrefixCls;\n var spinPrefixCls = getPrefixCls('spin', customizePrefixCls);\n var _useStyle = useStyle(spinPrefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n var spinClassProps = Object.assign(Object.assign({}, props), {\n spinPrefixCls: spinPrefixCls,\n hashId: hashId\n });\n return wrapSSR( /*#__PURE__*/React.createElement(Spin, Object.assign({}, spinClassProps)));\n};\nSpinFC.setDefaultIndicator = function (indicator) {\n defaultIndicator = indicator;\n};\nif (process.env.NODE_ENV !== 'production') {\n SpinFC.displayName = 'Spin';\n}\nexport default SpinFC;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport RowContext from './RowContext';\nimport { useColStyle } from './style';\nfunction parseFlex(flex) {\n if (typeof flex === 'number') {\n return \"\".concat(flex, \" \").concat(flex, \" auto\");\n }\n if (/^\\d+(\\.\\d+)?(px|em|rem|%)$/.test(flex)) {\n return \"0 0 \".concat(flex);\n }\n return flex;\n}\nvar sizes = ['xs', 'sm', 'md', 'lg', 'xl', 'xxl'];\nvar Col = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _classNames;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n var _React$useContext2 = React.useContext(RowContext),\n gutter = _React$useContext2.gutter,\n wrap = _React$useContext2.wrap,\n supportFlexGap = _React$useContext2.supportFlexGap;\n var customizePrefixCls = props.prefixCls,\n span = props.span,\n order = props.order,\n offset = props.offset,\n push = props.push,\n pull = props.pull,\n className = props.className,\n children = props.children,\n flex = props.flex,\n style = props.style,\n others = __rest(props, [\"prefixCls\", \"span\", \"order\", \"offset\", \"push\", \"pull\", \"className\", \"children\", \"flex\", \"style\"]);\n var prefixCls = getPrefixCls('col', customizePrefixCls);\n var _useColStyle = useColStyle(prefixCls),\n _useColStyle2 = _slicedToArray(_useColStyle, 2),\n wrapSSR = _useColStyle2[0],\n hashId = _useColStyle2[1];\n var sizeClassObj = {};\n sizes.forEach(function (size) {\n var _Object$assign;\n var sizeProps = {};\n var propSize = props[size];\n if (typeof propSize === 'number') {\n sizeProps.span = propSize;\n } else if (typeof propSize === 'object') {\n sizeProps = propSize || {};\n }\n delete others[size];\n sizeClassObj = Object.assign(Object.assign({}, sizeClassObj), (_Object$assign = {}, _defineProperty(_Object$assign, \"\".concat(prefixCls, \"-\").concat(size, \"-\").concat(sizeProps.span), sizeProps.span !== undefined), _defineProperty(_Object$assign, \"\".concat(prefixCls, \"-\").concat(size, \"-order-\").concat(sizeProps.order), sizeProps.order || sizeProps.order === 0), _defineProperty(_Object$assign, \"\".concat(prefixCls, \"-\").concat(size, \"-offset-\").concat(sizeProps.offset), sizeProps.offset || sizeProps.offset === 0), _defineProperty(_Object$assign, \"\".concat(prefixCls, \"-\").concat(size, \"-push-\").concat(sizeProps.push), sizeProps.push || sizeProps.push === 0), _defineProperty(_Object$assign, \"\".concat(prefixCls, \"-\").concat(size, \"-pull-\").concat(sizeProps.pull), sizeProps.pull || sizeProps.pull === 0), _defineProperty(_Object$assign, \"\".concat(prefixCls, \"-\").concat(size, \"-flex-\").concat(sizeProps.flex), sizeProps.flex || sizeProps.flex === 'auto'), _defineProperty(_Object$assign, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _Object$assign));\n });\n var classes = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(span), span !== undefined), _defineProperty(_classNames, \"\".concat(prefixCls, \"-order-\").concat(order), order), _defineProperty(_classNames, \"\".concat(prefixCls, \"-offset-\").concat(offset), offset), _defineProperty(_classNames, \"\".concat(prefixCls, \"-push-\").concat(push), push), _defineProperty(_classNames, \"\".concat(prefixCls, \"-pull-\").concat(pull), pull), _classNames), className, sizeClassObj, hashId);\n var mergedStyle = {};\n // Horizontal gutter use padding\n if (gutter && gutter[0] > 0) {\n var horizontalGutter = gutter[0] / 2;\n mergedStyle.paddingLeft = horizontalGutter;\n mergedStyle.paddingRight = horizontalGutter;\n }\n // Vertical gutter use padding when gap not support\n if (gutter && gutter[1] > 0 && !supportFlexGap) {\n var verticalGutter = gutter[1] / 2;\n mergedStyle.paddingTop = verticalGutter;\n mergedStyle.paddingBottom = verticalGutter;\n }\n if (flex) {\n mergedStyle.flex = parseFlex(flex);\n // Hack for Firefox to avoid size issue\n // https://github.com/ant-design/ant-design/pull/20023#issuecomment-564389553\n if (wrap === false && !mergedStyle.minWidth) {\n mergedStyle.minWidth = 0;\n }\n }\n return wrapSSR( /*#__PURE__*/React.createElement(\"div\", Object.assign({}, others, {\n style: Object.assign(Object.assign({}, mergedStyle), style),\n className: classes,\n ref: ref\n }), children));\n});\nif (process.env.NODE_ENV !== 'production') {\n Col.displayName = 'Col';\n}\nexport default Col;","import React from 'react';\nexport var ListContext = /*#__PURE__*/React.createContext({});\nexport var ListConsumer = ListContext.Consumer;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport React, { Children, forwardRef, useContext } from 'react';\nimport { cloneElement } from '../_util/reactNode';\nimport { ConfigContext } from '../config-provider';\nimport { Col } from '../grid';\nimport { ListContext } from './context';\nexport var Meta = function Meta(_a) {\n var customizePrefixCls = _a.prefixCls,\n className = _a.className,\n avatar = _a.avatar,\n title = _a.title,\n description = _a.description,\n others = __rest(_a, [\"prefixCls\", \"className\", \"avatar\", \"title\", \"description\"]);\n var _useContext = useContext(ConfigContext),\n getPrefixCls = _useContext.getPrefixCls;\n var prefixCls = getPrefixCls('list', customizePrefixCls);\n var classString = classNames(\"\".concat(prefixCls, \"-item-meta\"), className);\n var content = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-item-meta-content\")\n }, title && /*#__PURE__*/React.createElement(\"h4\", {\n className: \"\".concat(prefixCls, \"-item-meta-title\")\n }, title), description && /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-item-meta-description\")\n }, description));\n return /*#__PURE__*/React.createElement(\"div\", Object.assign({}, others, {\n className: classString\n }), avatar && /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-item-meta-avatar\")\n }, avatar), (title || description) && content);\n};\nvar InternalItem = function InternalItem(_a, ref) {\n var customizePrefixCls = _a.prefixCls,\n children = _a.children,\n actions = _a.actions,\n extra = _a.extra,\n className = _a.className,\n colStyle = _a.colStyle,\n others = __rest(_a, [\"prefixCls\", \"children\", \"actions\", \"extra\", \"className\", \"colStyle\"]);\n var _useContext2 = useContext(ListContext),\n grid = _useContext2.grid,\n itemLayout = _useContext2.itemLayout;\n var _useContext3 = useContext(ConfigContext),\n getPrefixCls = _useContext3.getPrefixCls;\n var isItemContainsTextNodeAndNotSingular = function isItemContainsTextNodeAndNotSingular() {\n var result;\n Children.forEach(children, function (element) {\n if (typeof element === 'string') {\n result = true;\n }\n });\n return result && Children.count(children) > 1;\n };\n var isFlexMode = function isFlexMode() {\n if (itemLayout === 'vertical') {\n return !!extra;\n }\n return !isItemContainsTextNodeAndNotSingular();\n };\n var prefixCls = getPrefixCls('list', customizePrefixCls);\n var actionsContent = actions && actions.length > 0 && /*#__PURE__*/React.createElement(\"ul\", {\n className: \"\".concat(prefixCls, \"-item-action\"),\n key: \"actions\"\n }, actions.map(function (action, i) {\n return /*#__PURE__*/(\n // eslint-disable-next-line react/no-array-index-key\n React.createElement(\"li\", {\n key: \"\".concat(prefixCls, \"-item-action-\").concat(i)\n }, action, i !== actions.length - 1 && /*#__PURE__*/React.createElement(\"em\", {\n className: \"\".concat(prefixCls, \"-item-action-split\")\n }))\n );\n }));\n var Element = grid ? 'div' : 'li';\n var itemChildren = /*#__PURE__*/React.createElement(Element, Object.assign({}, others, !grid ? {\n ref: ref\n } : {}, {\n className: classNames(\"\".concat(prefixCls, \"-item\"), _defineProperty({}, \"\".concat(prefixCls, \"-item-no-flex\"), !isFlexMode()), className)\n }), itemLayout === 'vertical' && extra ? [/*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-item-main\"),\n key: \"content\"\n }, children, actionsContent), /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-item-extra\"),\n key: \"extra\"\n }, extra)] : [children, actionsContent, cloneElement(extra, {\n key: 'extra'\n })]);\n return grid ? /*#__PURE__*/React.createElement(Col, {\n ref: ref,\n flex: 1,\n style: colStyle\n }, itemChildren) : itemChildren;\n};\nvar Item = /*#__PURE__*/forwardRef(InternalItem);\nItem.Meta = Meta;\nexport default Item;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { resetComponent } from '../../style';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nvar genBorderedStyle = function genBorderedStyle(token) {\n var _$concat, _ref;\n var listBorderedCls = token.listBorderedCls,\n componentCls = token.componentCls,\n paddingLG = token.paddingLG,\n margin = token.margin,\n itemPaddingSM = token.itemPaddingSM,\n itemPaddingLG = token.itemPaddingLG,\n marginLG = token.marginLG,\n borderRadiusLG = token.borderRadiusLG;\n return _ref = {}, _defineProperty(_ref, \"\".concat(listBorderedCls), (_$concat = {\n border: \"\".concat(token.lineWidth, \"px \").concat(token.lineType, \" \").concat(token.colorBorder),\n borderRadius: borderRadiusLG\n }, _defineProperty(_$concat, \"\".concat(componentCls, \"-header,\").concat(componentCls, \"-footer,\").concat(componentCls, \"-item\"), {\n paddingInline: paddingLG\n }), _defineProperty(_$concat, \"\".concat(componentCls, \"-pagination\"), {\n margin: \"\".concat(margin, \"px \").concat(marginLG, \"px\")\n }), _$concat)), _defineProperty(_ref, \"\".concat(listBorderedCls).concat(componentCls, \"-sm\"), _defineProperty({}, \"\".concat(componentCls, \"-item,\").concat(componentCls, \"-header,\").concat(componentCls, \"-footer\"), {\n padding: itemPaddingSM\n })), _defineProperty(_ref, \"\".concat(listBorderedCls).concat(componentCls, \"-lg\"), _defineProperty({}, \"\".concat(componentCls, \"-item,\").concat(componentCls, \"-header,\").concat(componentCls, \"-footer\"), {\n padding: itemPaddingLG\n })), _ref;\n};\nvar genResponsiveStyle = function genResponsiveStyle(token) {\n var _mediaScreenAndM, _$concat8, _mediaScreenAndM2, _ref2;\n var componentCls = token.componentCls,\n screenSM = token.screenSM,\n screenMD = token.screenMD,\n marginLG = token.marginLG,\n marginSM = token.marginSM,\n margin = token.margin;\n return _ref2 = {}, _defineProperty(_ref2, \"@media screen and (max-width:\".concat(screenMD, \")\"), (_mediaScreenAndM = {}, _defineProperty(_mediaScreenAndM, \"\".concat(componentCls), _defineProperty({}, \"\".concat(componentCls, \"-item\"), _defineProperty({}, \"\".concat(componentCls, \"-item-action\"), {\n marginInlineStart: marginLG\n }))), _defineProperty(_mediaScreenAndM, \"\".concat(componentCls, \"-vertical\"), _defineProperty({}, \"\".concat(componentCls, \"-item\"), _defineProperty({}, \"\".concat(componentCls, \"-item-extra\"), {\n marginInlineStart: marginLG\n }))), _mediaScreenAndM)), _defineProperty(_ref2, \"@media screen and (max-width: \".concat(screenSM, \")\"), (_mediaScreenAndM2 = {}, _defineProperty(_mediaScreenAndM2, \"\".concat(componentCls), _defineProperty({}, \"\".concat(componentCls, \"-item\"), _defineProperty({\n flexWrap: 'wrap'\n }, \"\".concat(componentCls, \"-action\"), {\n marginInlineStart: marginSM\n }))), _defineProperty(_mediaScreenAndM2, \"\".concat(componentCls, \"-vertical\"), _defineProperty({}, \"\".concat(componentCls, \"-item\"), (_$concat8 = {\n flexWrap: 'wrap-reverse'\n }, _defineProperty(_$concat8, \"\".concat(componentCls, \"-item-main\"), {\n minWidth: token.contentWidth\n }), _defineProperty(_$concat8, \"\".concat(componentCls, \"-item-extra\"), {\n margin: \"auto auto \".concat(margin, \"px\")\n }), _$concat8))), _mediaScreenAndM2)), _ref2;\n};\n// =============================== Base ===============================\nvar genBaseStyle = function genBaseStyle(token) {\n var _$concat10, _$concat11, _$concat12, _Object$assign2, _$concat$concat3, _ref3;\n var componentCls = token.componentCls,\n antCls = token.antCls,\n controlHeight = token.controlHeight,\n minHeight = token.minHeight,\n paddingSM = token.paddingSM,\n marginLG = token.marginLG,\n padding = token.padding,\n itemPadding = token.itemPadding,\n colorPrimary = token.colorPrimary,\n itemPaddingSM = token.itemPaddingSM,\n itemPaddingLG = token.itemPaddingLG,\n paddingXS = token.paddingXS,\n margin = token.margin,\n colorText = token.colorText,\n colorTextDescription = token.colorTextDescription,\n motionDurationSlow = token.motionDurationSlow,\n lineWidth = token.lineWidth,\n headerBg = token.headerBg,\n footerBg = token.footerBg,\n emptyTextPadding = token.emptyTextPadding,\n metaMarginBottom = token.metaMarginBottom,\n avatarMarginRight = token.avatarMarginRight,\n titleMarginBottom = token.titleMarginBottom,\n descriptionFontSize = token.descriptionFontSize;\n var alignCls = {};\n ['start', 'center', 'end'].forEach(function (item) {\n alignCls[\"&-align-\".concat(item)] = {\n textAlign: item\n };\n });\n return _ref3 = {}, _defineProperty(_ref3, \"\".concat(componentCls), Object.assign(Object.assign({}, resetComponent(token)), (_Object$assign2 = {\n position: 'relative',\n '*': {\n outline: 'none'\n }\n }, _defineProperty(_Object$assign2, \"\".concat(componentCls, \"-header\"), {\n background: headerBg\n }), _defineProperty(_Object$assign2, \"\".concat(componentCls, \"-footer\"), {\n background: footerBg\n }), _defineProperty(_Object$assign2, \"\".concat(componentCls, \"-header, \").concat(componentCls, \"-footer\"), {\n paddingBlock: paddingSM\n }), _defineProperty(_Object$assign2, \"\".concat(componentCls, \"-pagination\"), Object.assign(Object.assign({\n marginBlockStart: marginLG\n }, alignCls), _defineProperty({}, \"\".concat(antCls, \"-pagination-options\"), {\n textAlign: 'start'\n }))), _defineProperty(_Object$assign2, \"\".concat(componentCls, \"-spin\"), {\n minHeight: minHeight,\n textAlign: 'center'\n }), _defineProperty(_Object$assign2, \"\".concat(componentCls, \"-items\"), {\n margin: 0,\n padding: 0,\n listStyle: 'none'\n }), _defineProperty(_Object$assign2, \"\".concat(componentCls, \"-item\"), (_$concat12 = {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: itemPadding,\n color: colorText\n }, _defineProperty(_$concat12, \"\".concat(componentCls, \"-item-meta\"), (_$concat10 = {\n display: 'flex',\n flex: 1,\n alignItems: 'flex-start',\n maxWidth: '100%'\n }, _defineProperty(_$concat10, \"\".concat(componentCls, \"-item-meta-avatar\"), {\n marginInlineEnd: avatarMarginRight\n }), _defineProperty(_$concat10, \"\".concat(componentCls, \"-item-meta-content\"), {\n flex: '1 0',\n width: 0,\n color: colorText\n }), _defineProperty(_$concat10, \"\".concat(componentCls, \"-item-meta-title\"), {\n margin: \"0 0 \".concat(token.marginXXS, \"px 0\"),\n color: colorText,\n fontSize: token.fontSize,\n lineHeight: token.lineHeight,\n '> a': _defineProperty({\n color: colorText,\n transition: \"all \".concat(motionDurationSlow)\n }, \"&:hover\", {\n color: colorPrimary\n })\n }), _defineProperty(_$concat10, \"\".concat(componentCls, \"-item-meta-description\"), {\n color: colorTextDescription,\n fontSize: descriptionFontSize,\n lineHeight: token.lineHeight\n }), _$concat10)), _defineProperty(_$concat12, \"\".concat(componentCls, \"-item-action\"), (_$concat11 = {\n flex: '0 0 auto',\n marginInlineStart: token.marginXXL,\n padding: 0,\n fontSize: 0,\n listStyle: 'none'\n }, _defineProperty(_$concat11, \"& > li\", _defineProperty({\n position: 'relative',\n display: 'inline-block',\n padding: \"0 \".concat(paddingXS, \"px\"),\n color: colorTextDescription,\n fontSize: token.fontSize,\n lineHeight: token.lineHeight,\n textAlign: 'center'\n }, \"&:first-child\", {\n paddingInlineStart: 0\n })), _defineProperty(_$concat11, \"\".concat(componentCls, \"-item-action-split\"), {\n position: 'absolute',\n insetBlockStart: '50%',\n insetInlineEnd: 0,\n width: lineWidth,\n height: Math.ceil(token.fontSize * token.lineHeight) - token.marginXXS * 2,\n transform: 'translateY(-50%)',\n backgroundColor: token.colorSplit\n }), _$concat11)), _$concat12)), _defineProperty(_Object$assign2, \"\".concat(componentCls, \"-empty\"), {\n padding: \"\".concat(padding, \"px 0\"),\n color: colorTextDescription,\n fontSize: token.fontSizeSM,\n textAlign: 'center'\n }), _defineProperty(_Object$assign2, \"\".concat(componentCls, \"-empty-text\"), {\n padding: emptyTextPadding,\n color: token.colorTextDisabled,\n fontSize: token.fontSize,\n textAlign: 'center'\n }), _defineProperty(_Object$assign2, \"\".concat(componentCls, \"-item-no-flex\"), {\n display: 'block'\n }), _Object$assign2))), _defineProperty(_ref3, \"\".concat(componentCls, \"-grid \").concat(antCls, \"-col > \").concat(componentCls, \"-item\"), {\n display: 'block',\n maxWidth: '100%',\n marginBlockEnd: margin,\n paddingBlock: 0,\n borderBlockEnd: 'none'\n }), _defineProperty(_ref3, \"\".concat(componentCls, \"-vertical \").concat(componentCls, \"-item\"), (_$concat$concat3 = {\n alignItems: 'initial'\n }, _defineProperty(_$concat$concat3, \"\".concat(componentCls, \"-item-main\"), {\n display: 'block',\n flex: 1\n }), _defineProperty(_$concat$concat3, \"\".concat(componentCls, \"-item-extra\"), {\n marginInlineStart: marginLG\n }), _defineProperty(_$concat$concat3, \"\".concat(componentCls, \"-item-meta\"), _defineProperty({\n marginBlockEnd: metaMarginBottom\n }, \"\".concat(componentCls, \"-item-meta-title\"), {\n marginBlockStart: 0,\n marginBlockEnd: titleMarginBottom,\n color: colorText,\n fontSize: token.fontSizeLG,\n lineHeight: token.lineHeightLG\n })), _defineProperty(_$concat$concat3, \"\".concat(componentCls, \"-item-action\"), {\n marginBlockStart: padding,\n marginInlineStart: 'auto',\n '> li': _defineProperty({\n padding: \"0 \".concat(padding, \"px\")\n }, \"&:first-child\", {\n paddingInlineStart: 0\n })\n }), _$concat$concat3)), _defineProperty(_ref3, \"\".concat(componentCls, \"-split \").concat(componentCls, \"-item\"), _defineProperty({\n borderBlockEnd: \"\".concat(token.lineWidth, \"px \").concat(token.lineType, \" \").concat(token.colorSplit)\n }, \"&:last-child\", {\n borderBlockEnd: 'none'\n })), _defineProperty(_ref3, \"\".concat(componentCls, \"-split \").concat(componentCls, \"-header\"), {\n borderBlockEnd: \"\".concat(token.lineWidth, \"px \").concat(token.lineType, \" \").concat(token.colorSplit)\n }), _defineProperty(_ref3, \"\".concat(componentCls, \"-split\").concat(componentCls, \"-empty \").concat(componentCls, \"-footer\"), {\n borderTop: \"\".concat(token.lineWidth, \"px \").concat(token.lineType, \" \").concat(token.colorSplit)\n }), _defineProperty(_ref3, \"\".concat(componentCls, \"-loading \").concat(componentCls, \"-spin-nested-loading\"), {\n minHeight: controlHeight\n }), _defineProperty(_ref3, \"\".concat(componentCls, \"-split\").concat(componentCls, \"-something-after-last-item \").concat(antCls, \"-spin-container > \").concat(componentCls, \"-items > \").concat(componentCls, \"-item:last-child\"), {\n borderBlockEnd: \"\".concat(token.lineWidth, \"px \").concat(token.lineType, \" \").concat(token.colorSplit)\n }), _defineProperty(_ref3, \"\".concat(componentCls, \"-lg \").concat(componentCls, \"-item\"), {\n padding: itemPaddingLG\n }), _defineProperty(_ref3, \"\".concat(componentCls, \"-sm \").concat(componentCls, \"-item\"), {\n padding: itemPaddingSM\n }), _defineProperty(_ref3, \"\".concat(componentCls, \":not(\").concat(componentCls, \"-vertical)\"), _defineProperty({}, \"\".concat(componentCls, \"-item-no-flex\"), _defineProperty({}, \"\".concat(componentCls, \"-item-action\"), {\n float: 'right'\n }))), _ref3;\n};\n// ============================== Export ==============================\nexport default genComponentStyleHook('List', function (token) {\n var listToken = mergeToken(token, {\n listBorderedCls: \"\".concat(token.componentCls, \"-bordered\"),\n minHeight: token.controlHeightLG\n });\n return [genBaseStyle(listToken), genBorderedStyle(listToken), genResponsiveStyle(listToken)];\n}, function (token) {\n return {\n contentWidth: 220,\n itemPadding: \"\".concat(token.paddingContentVertical, \"px 0\"),\n itemPaddingSM: \"\".concat(token.paddingContentVerticalSM, \"px \").concat(token.paddingContentHorizontal, \"px\"),\n itemPaddingLG: \"\".concat(token.paddingContentVerticalLG, \"px \").concat(token.paddingContentHorizontalLG, \"px\"),\n headerBg: 'transparent',\n footerBg: 'transparent',\n emptyTextPadding: token.padding,\n metaMarginBottom: token.padding,\n avatarMarginRight: token.padding,\n titleMarginBottom: token.paddingSM,\n descriptionFontSize: token.fontSize\n };\n});","'use client';\n\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\n// eslint-disable-next-line import/no-named-as-default\nimport * as React from 'react';\nimport extendsObject from '../_util/extendsObject';\nimport { responsiveArray } from '../_util/responsiveObserver';\nimport { ConfigContext } from '../config-provider';\nimport DefaultRenderEmpty from '../config-provider/defaultRenderEmpty';\nimport { Row } from '../grid';\nimport useBreakpoint from '../grid/hooks/useBreakpoint';\nimport Pagination from '../pagination';\nimport Spin from '../spin';\nimport Item from './Item';\n// CSSINJS\nimport { ListContext } from './context';\nimport useStyle from './style';\nfunction List(_a) {\n var _classNames;\n var _b;\n var _a$pagination = _a.pagination,\n pagination = _a$pagination === void 0 ? false : _a$pagination,\n customizePrefixCls = _a.prefixCls,\n _a$bordered = _a.bordered,\n bordered = _a$bordered === void 0 ? false : _a$bordered,\n _a$split = _a.split,\n split = _a$split === void 0 ? true : _a$split,\n className = _a.className,\n rootClassName = _a.rootClassName,\n style = _a.style,\n children = _a.children,\n itemLayout = _a.itemLayout,\n loadMore = _a.loadMore,\n grid = _a.grid,\n _a$dataSource = _a.dataSource,\n dataSource = _a$dataSource === void 0 ? [] : _a$dataSource,\n size = _a.size,\n header = _a.header,\n footer = _a.footer,\n _a$loading = _a.loading,\n loading = _a$loading === void 0 ? false : _a$loading,\n rowKey = _a.rowKey,\n renderItem = _a.renderItem,\n locale = _a.locale,\n rest = __rest(_a, [\"pagination\", \"prefixCls\", \"bordered\", \"split\", \"className\", \"rootClassName\", \"style\", \"children\", \"itemLayout\", \"loadMore\", \"grid\", \"dataSource\", \"size\", \"header\", \"footer\", \"loading\", \"rowKey\", \"renderItem\", \"locale\"]);\n var paginationObj = pagination && typeof pagination === 'object' ? pagination : {};\n var _React$useState = React.useState(paginationObj.defaultCurrent || 1),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n paginationCurrent = _React$useState2[0],\n setPaginationCurrent = _React$useState2[1];\n var _React$useState3 = React.useState(paginationObj.defaultPageSize || 10),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n paginationSize = _React$useState4[0],\n setPaginationSize = _React$useState4[1];\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n renderEmpty = _React$useContext.renderEmpty,\n direction = _React$useContext.direction,\n list = _React$useContext.list;\n var defaultPaginationProps = {\n current: 1,\n total: 0\n };\n var triggerPaginationEvent = function triggerPaginationEvent(eventName) {\n return function (page, pageSize) {\n var _a;\n setPaginationCurrent(page);\n setPaginationSize(pageSize);\n if (pagination && pagination[eventName]) {\n (_a = pagination === null || pagination === void 0 ? void 0 : pagination[eventName]) === null || _a === void 0 ? void 0 : _a.call(pagination, page, pageSize);\n }\n };\n };\n var onPaginationChange = triggerPaginationEvent('onChange');\n var onPaginationShowSizeChange = triggerPaginationEvent('onShowSizeChange');\n var renderInnerItem = function renderInnerItem(item, index) {\n if (!renderItem) return null;\n var key;\n if (typeof rowKey === 'function') {\n key = rowKey(item);\n } else if (rowKey) {\n key = item[rowKey];\n } else {\n key = item.key;\n }\n if (!key) {\n key = \"list-item-\".concat(index);\n }\n return /*#__PURE__*/React.createElement(React.Fragment, {\n key: key\n }, renderItem(item, index));\n };\n var isSomethingAfterLastItem = function isSomethingAfterLastItem() {\n return !!(loadMore || pagination || footer);\n };\n var prefixCls = getPrefixCls('list', customizePrefixCls);\n // Style\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n var loadingProp = loading;\n if (typeof loadingProp === 'boolean') {\n loadingProp = {\n spinning: loadingProp\n };\n }\n var isLoading = loadingProp && loadingProp.spinning;\n // large => lg\n // small => sm\n var sizeCls = '';\n switch (size) {\n case 'large':\n sizeCls = 'lg';\n break;\n case 'small':\n sizeCls = 'sm';\n break;\n default:\n break;\n }\n var classString = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-vertical\"), itemLayout === 'vertical'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(sizeCls), sizeCls), _defineProperty(_classNames, \"\".concat(prefixCls, \"-split\"), split), _defineProperty(_classNames, \"\".concat(prefixCls, \"-bordered\"), bordered), _defineProperty(_classNames, \"\".concat(prefixCls, \"-loading\"), isLoading), _defineProperty(_classNames, \"\".concat(prefixCls, \"-grid\"), !!grid), _defineProperty(_classNames, \"\".concat(prefixCls, \"-something-after-last-item\"), isSomethingAfterLastItem()), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _classNames), list === null || list === void 0 ? void 0 : list.className, className, rootClassName, hashId);\n var paginationProps = extendsObject(defaultPaginationProps, {\n total: dataSource.length,\n current: paginationCurrent,\n pageSize: paginationSize\n }, pagination || {});\n var largestPage = Math.ceil(paginationProps.total / paginationProps.pageSize);\n if (paginationProps.current > largestPage) {\n paginationProps.current = largestPage;\n }\n var paginationContent = pagination ? /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-pagination\"), \"\".concat(prefixCls, \"-pagination-align-\").concat((_b = paginationProps === null || paginationProps === void 0 ? void 0 : paginationProps.align) !== null && _b !== void 0 ? _b : 'end'))\n }, /*#__PURE__*/React.createElement(Pagination, Object.assign({}, paginationProps, {\n onChange: onPaginationChange,\n onShowSizeChange: onPaginationShowSizeChange\n }))) : null;\n var splitDataSource = _toConsumableArray(dataSource);\n if (pagination) {\n if (dataSource.length > (paginationProps.current - 1) * paginationProps.pageSize) {\n splitDataSource = _toConsumableArray(dataSource).splice((paginationProps.current - 1) * paginationProps.pageSize, paginationProps.pageSize);\n }\n }\n var needResponsive = Object.keys(grid || {}).some(function (key) {\n return ['xs', 'sm', 'md', 'lg', 'xl', 'xxl'].includes(key);\n });\n var screens = useBreakpoint(needResponsive);\n var currentBreakpoint = React.useMemo(function () {\n for (var i = 0; i < responsiveArray.length; i += 1) {\n var breakpoint = responsiveArray[i];\n if (screens[breakpoint]) {\n return breakpoint;\n }\n }\n return undefined;\n }, [screens]);\n var colStyle = React.useMemo(function () {\n if (!grid) {\n return undefined;\n }\n var columnCount = currentBreakpoint && grid[currentBreakpoint] ? grid[currentBreakpoint] : grid.column;\n if (columnCount) {\n return {\n width: \"\".concat(100 / columnCount, \"%\"),\n maxWidth: \"\".concat(100 / columnCount, \"%\")\n };\n }\n }, [grid === null || grid === void 0 ? void 0 : grid.column, currentBreakpoint]);\n var childrenContent = isLoading && /*#__PURE__*/React.createElement(\"div\", {\n style: {\n minHeight: 53\n }\n });\n if (splitDataSource.length > 0) {\n var items = splitDataSource.map(function (item, index) {\n return renderInnerItem(item, index);\n });\n childrenContent = grid ? /*#__PURE__*/React.createElement(Row, {\n gutter: grid.gutter\n }, React.Children.map(items, function (child) {\n return /*#__PURE__*/React.createElement(\"div\", {\n key: child === null || child === void 0 ? void 0 : child.key,\n style: colStyle\n }, child);\n })) : /*#__PURE__*/React.createElement(\"ul\", {\n className: \"\".concat(prefixCls, \"-items\")\n }, items);\n } else if (!children && !isLoading) {\n childrenContent = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-empty-text\")\n }, locale && locale.emptyText || (renderEmpty === null || renderEmpty === void 0 ? void 0 : renderEmpty('List')) || /*#__PURE__*/React.createElement(DefaultRenderEmpty, {\n componentName: \"List\"\n }));\n }\n var paginationPosition = paginationProps.position || 'bottom';\n var contextValue = React.useMemo(function () {\n return {\n grid: grid,\n itemLayout: itemLayout\n };\n }, [JSON.stringify(grid), itemLayout]);\n return wrapSSR( /*#__PURE__*/React.createElement(ListContext.Provider, {\n value: contextValue\n }, /*#__PURE__*/React.createElement(\"div\", Object.assign({\n style: Object.assign(Object.assign({}, list === null || list === void 0 ? void 0 : list.style), style),\n className: classString\n }, rest), (paginationPosition === 'top' || paginationPosition === 'both') && paginationContent, header && /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-header\")\n }, header), /*#__PURE__*/React.createElement(Spin, Object.assign({}, loadingProp), childrenContent, children), footer && /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-footer\")\n }, footer), loadMore || (paginationPosition === 'bottom' || paginationPosition === 'both') && paginationContent)));\n}\nif (process.env.NODE_ENV !== 'production') {\n List.displayName = 'List';\n}\nList.Item = Item;\nexport default List;","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"title\", \"titleId\"];\nimport * as React from \"react\";\nfunction ChatBubbleLeftEllipsisIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M8.625 9.75a.375.375 0 11-.75 0 .375.375 0 01.75 0zm0 0H8.25m4.125 0a.375.375 0 11-.75 0 .375.375 0 01.75 0zm0 0H12m4.125 0a.375.375 0 11-.75 0 .375.375 0 01.75 0zm0 0h-.375m-13.5 3.01c0 1.6 1.123 2.994 2.707 3.227 1.087.16 2.185.283 3.293.369V21l4.184-4.183a1.14 1.14 0 01.778-.332 48.294 48.294 0 005.83-.498c1.585-.233 2.708-1.626 2.708-3.228V6.741c0-1.602-1.123-2.995-2.707-3.228A48.394 48.394 0 0012 3c-2.392 0-4.744.175-7.043.513C3.373 3.746 2.25 5.14 2.25 6.741v6.018z\"\n }));\n}\nvar ForwardRef = React.forwardRef(ChatBubbleLeftEllipsisIcon);\nexport default ForwardRef;","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"title\", \"titleId\"];\nimport * as React from \"react\";\nfunction ArchiveBoxXMarkIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M20.25 7.5l-.625 10.632a2.25 2.25 0 01-2.247 2.118H6.622a2.25 2.25 0 01-2.247-2.118L3.75 7.5m6 4.125l2.25 2.25m0 0l2.25 2.25M12 13.875l2.25-2.25M12 13.875l-2.25 2.25M3.375 7.5h17.25c.621 0 1.125-.504 1.125-1.125v-1.5c0-.621-.504-1.125-1.125-1.125H3.375c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125z\"\n }));\n}\nvar ForwardRef = React.forwardRef(ArchiveBoxXMarkIcon);\nexport default ForwardRef;","// This icon file is generated automatically.\nvar EllipsisOutlined = {\n \"icon\": {\n \"tag\": \"svg\",\n \"attrs\": {\n \"viewBox\": \"64 64 896 896\",\n \"focusable\": \"false\"\n },\n \"children\": [{\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M176 511a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0z\"\n }\n }]\n },\n \"name\": \"ellipsis\",\n \"theme\": \"outlined\"\n};\nexport default EllipsisOutlined;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport EllipsisOutlinedSvg from \"@ant-design/icons-svg/es/asn/EllipsisOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar EllipsisOutlined = function EllipsisOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: EllipsisOutlinedSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n EllipsisOutlined.displayName = 'EllipsisOutlined';\n}\nexport default /*#__PURE__*/React.forwardRef(EllipsisOutlined);","// This icon file is generated automatically.\nvar PlusOutlined = {\n \"icon\": {\n \"tag\": \"svg\",\n \"attrs\": {\n \"viewBox\": \"64 64 896 896\",\n \"focusable\": \"false\"\n },\n \"children\": [{\n \"tag\": \"defs\",\n \"attrs\": {},\n \"children\": [{\n \"tag\": \"style\",\n \"attrs\": {}\n }]\n }, {\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M482 152h60q8 0 8 8v704q0 8-8 8h-60q-8 0-8-8V160q0-8 8-8z\"\n }\n }, {\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M176 474h672q8 0 8 8v60q0 8-8 8H176q-8 0-8-8v-60q0-8 8-8z\"\n }\n }]\n },\n \"name\": \"plus\",\n \"theme\": \"outlined\"\n};\nexport default PlusOutlined;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport PlusOutlinedSvg from \"@ant-design/icons-svg/es/asn/PlusOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar PlusOutlined = function PlusOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: PlusOutlinedSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n PlusOutlined.displayName = 'PlusOutlined';\n}\nexport default /*#__PURE__*/React.forwardRef(PlusOutlined);","import { createContext } from 'react';\nexport default /*#__PURE__*/createContext(null);","import * as React from 'react';\nimport classNames from 'classnames';\nvar TabPane = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var prefixCls = _ref.prefixCls,\n className = _ref.className,\n style = _ref.style,\n id = _ref.id,\n active = _ref.active,\n tabKey = _ref.tabKey,\n children = _ref.children;\n return /*#__PURE__*/React.createElement(\"div\", {\n id: id && \"\".concat(id, \"-panel-\").concat(tabKey),\n role: \"tabpanel\",\n tabIndex: active ? 0 : -1,\n \"aria-labelledby\": id && \"\".concat(id, \"-tab-\").concat(tabKey),\n \"aria-hidden\": !active,\n style: style,\n className: classNames(prefixCls, active && \"\".concat(prefixCls, \"-active\"), className),\n ref: ref\n }, children);\n});\nif (process.env.NODE_ENV !== 'production') {\n TabPane.displayName = 'TabPane';\n}\nexport default TabPane;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar _excluded = [\"key\", \"forceRender\", \"style\", \"className\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport TabContext from \"../TabContext\";\nimport TabPane from \"./TabPane\";\nexport default function TabPanelList(_ref) {\n var id = _ref.id,\n activeKey = _ref.activeKey,\n animated = _ref.animated,\n tabPosition = _ref.tabPosition,\n destroyInactiveTabPane = _ref.destroyInactiveTabPane;\n var _React$useContext = React.useContext(TabContext),\n prefixCls = _React$useContext.prefixCls,\n tabs = _React$useContext.tabs;\n var tabPaneAnimated = animated.tabPane;\n var tabPanePrefixCls = \"\".concat(prefixCls, \"-tabpane\");\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-content-holder\"))\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-content\"), \"\".concat(prefixCls, \"-content-\").concat(tabPosition), _defineProperty({}, \"\".concat(prefixCls, \"-content-animated\"), tabPaneAnimated))\n }, tabs.map(function (_ref2) {\n var key = _ref2.key,\n forceRender = _ref2.forceRender,\n paneStyle = _ref2.style,\n paneClassName = _ref2.className,\n restTabProps = _objectWithoutProperties(_ref2, _excluded);\n var active = key === activeKey;\n return /*#__PURE__*/React.createElement(CSSMotion, _extends({\n key: key,\n visible: active,\n forceRender: forceRender,\n removeOnLeave: !!destroyInactiveTabPane,\n leavedClassName: \"\".concat(tabPanePrefixCls, \"-hidden\")\n }, animated.tabPaneMotion), function (_ref3, ref) {\n var motionStyle = _ref3.style,\n motionClassName = _ref3.className;\n return /*#__PURE__*/React.createElement(TabPane, _extends({}, restTabProps, {\n prefixCls: tabPanePrefixCls,\n id: id,\n tabKey: key,\n animated: tabPaneAnimated,\n active: active,\n style: _objectSpread(_objectSpread({}, paneStyle), motionStyle),\n className: classNames(paneClassName, motionClassName),\n ref: ref\n }));\n });\n })));\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport { useMemo } from 'react';\nvar DEFAULT_SIZE = {\n width: 0,\n height: 0,\n left: 0,\n top: 0\n};\nexport default function useOffsets(tabs, tabSizes, holderScrollWidth) {\n return useMemo(function () {\n var _tabs$;\n var map = new Map();\n var lastOffset = tabSizes.get((_tabs$ = tabs[0]) === null || _tabs$ === void 0 ? void 0 : _tabs$.key) || DEFAULT_SIZE;\n var rightOffset = lastOffset.left + lastOffset.width;\n for (var i = 0; i < tabs.length; i += 1) {\n var key = tabs[i].key;\n var data = tabSizes.get(key);\n\n // Reuse last one when not exist yet\n if (!data) {\n var _tabs;\n data = tabSizes.get((_tabs = tabs[i - 1]) === null || _tabs === void 0 ? void 0 : _tabs.key) || DEFAULT_SIZE;\n }\n var entity = map.get(key) || _objectSpread({}, data);\n\n // Right\n entity.right = rightOffset - entity.left - entity.width;\n\n // Update entity\n map.set(key, entity);\n }\n return map;\n }, [tabs.map(function (tab) {\n return tab.key;\n }).join('_'), tabSizes, holderScrollWidth]);\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nexport default function useSyncState(defaultState, onChange) {\n var stateRef = React.useRef(defaultState);\n var _React$useState = React.useState({}),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n forceUpdate = _React$useState2[1];\n function setState(updater) {\n var newValue = typeof updater === 'function' ? updater(stateRef.current) : updater;\n if (newValue !== stateRef.current) {\n onChange(newValue, stateRef.current);\n }\n stateRef.current = newValue;\n forceUpdate({});\n }\n return [stateRef.current, setState];\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useState, useRef } from 'react';\nvar MIN_SWIPE_DISTANCE = 0.1;\nvar STOP_SWIPE_DISTANCE = 0.01;\nvar REFRESH_INTERVAL = 20;\nvar SPEED_OFF_MULTIPLE = Math.pow(0.995, REFRESH_INTERVAL);\n\n// ================================= Hook =================================\nexport default function useTouchMove(ref, onOffset) {\n var _useState = useState(),\n _useState2 = _slicedToArray(_useState, 2),\n touchPosition = _useState2[0],\n setTouchPosition = _useState2[1];\n var _useState3 = useState(0),\n _useState4 = _slicedToArray(_useState3, 2),\n lastTimestamp = _useState4[0],\n setLastTimestamp = _useState4[1];\n var _useState5 = useState(0),\n _useState6 = _slicedToArray(_useState5, 2),\n lastTimeDiff = _useState6[0],\n setLastTimeDiff = _useState6[1];\n var _useState7 = useState(),\n _useState8 = _slicedToArray(_useState7, 2),\n lastOffset = _useState8[0],\n setLastOffset = _useState8[1];\n var motionRef = useRef();\n\n // ========================= Events =========================\n // >>> Touch events\n function onTouchStart(e) {\n var _e$touches$ = e.touches[0],\n screenX = _e$touches$.screenX,\n screenY = _e$touches$.screenY;\n setTouchPosition({\n x: screenX,\n y: screenY\n });\n window.clearInterval(motionRef.current);\n }\n function onTouchMove(e) {\n if (!touchPosition) return;\n e.preventDefault();\n var _e$touches$2 = e.touches[0],\n screenX = _e$touches$2.screenX,\n screenY = _e$touches$2.screenY;\n setTouchPosition({\n x: screenX,\n y: screenY\n });\n var offsetX = screenX - touchPosition.x;\n var offsetY = screenY - touchPosition.y;\n onOffset(offsetX, offsetY);\n var now = Date.now();\n setLastTimestamp(now);\n setLastTimeDiff(now - lastTimestamp);\n setLastOffset({\n x: offsetX,\n y: offsetY\n });\n }\n function onTouchEnd() {\n if (!touchPosition) return;\n setTouchPosition(null);\n setLastOffset(null);\n\n // Swipe if needed\n if (lastOffset) {\n var distanceX = lastOffset.x / lastTimeDiff;\n var distanceY = lastOffset.y / lastTimeDiff;\n var absX = Math.abs(distanceX);\n var absY = Math.abs(distanceY);\n\n // Skip swipe if low distance\n if (Math.max(absX, absY) < MIN_SWIPE_DISTANCE) return;\n var currentX = distanceX;\n var currentY = distanceY;\n motionRef.current = window.setInterval(function () {\n if (Math.abs(currentX) < STOP_SWIPE_DISTANCE && Math.abs(currentY) < STOP_SWIPE_DISTANCE) {\n window.clearInterval(motionRef.current);\n return;\n }\n currentX *= SPEED_OFF_MULTIPLE;\n currentY *= SPEED_OFF_MULTIPLE;\n onOffset(currentX * REFRESH_INTERVAL, currentY * REFRESH_INTERVAL);\n }, REFRESH_INTERVAL);\n }\n }\n\n // >>> Wheel event\n var lastWheelDirectionRef = useRef();\n function onWheel(e) {\n var deltaX = e.deltaX,\n deltaY = e.deltaY;\n\n // Convert both to x & y since wheel only happened on PC\n var mixed = 0;\n var absX = Math.abs(deltaX);\n var absY = Math.abs(deltaY);\n if (absX === absY) {\n mixed = lastWheelDirectionRef.current === 'x' ? deltaX : deltaY;\n } else if (absX > absY) {\n mixed = deltaX;\n lastWheelDirectionRef.current = 'x';\n } else {\n mixed = deltaY;\n lastWheelDirectionRef.current = 'y';\n }\n if (onOffset(-mixed, -mixed)) {\n e.preventDefault();\n }\n }\n\n // ========================= Effect =========================\n var touchEventsRef = useRef(null);\n touchEventsRef.current = {\n onTouchStart: onTouchStart,\n onTouchMove: onTouchMove,\n onTouchEnd: onTouchEnd,\n onWheel: onWheel\n };\n React.useEffect(function () {\n function onProxyTouchStart(e) {\n touchEventsRef.current.onTouchStart(e);\n }\n function onProxyTouchMove(e) {\n touchEventsRef.current.onTouchMove(e);\n }\n function onProxyTouchEnd(e) {\n touchEventsRef.current.onTouchEnd(e);\n }\n function onProxyWheel(e) {\n touchEventsRef.current.onWheel(e);\n }\n document.addEventListener('touchmove', onProxyTouchMove, {\n passive: false\n });\n document.addEventListener('touchend', onProxyTouchEnd, {\n passive: false\n });\n\n // No need to clean up since element removed\n ref.current.addEventListener('touchstart', onProxyTouchStart, {\n passive: false\n });\n ref.current.addEventListener('wheel', onProxyWheel);\n return function () {\n document.removeEventListener('touchmove', onProxyTouchMove);\n document.removeEventListener('touchend', onProxyTouchEnd);\n };\n }, []);\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { useLayoutUpdateEffect } from \"rc-util/es/hooks/useLayoutEffect\";\nimport { useRef, useState } from 'react';\n\n/**\n * Help to merge callback with `useLayoutEffect`.\n * One time will only trigger once.\n */\nexport default function useUpdate(callback) {\n var _useState = useState(0),\n _useState2 = _slicedToArray(_useState, 2),\n count = _useState2[0],\n setCount = _useState2[1];\n var effectRef = useRef(0);\n var callbackRef = useRef();\n callbackRef.current = callback;\n\n // Trigger on `useLayoutEffect`\n useLayoutUpdateEffect(function () {\n var _callbackRef$current;\n (_callbackRef$current = callbackRef.current) === null || _callbackRef$current === void 0 ? void 0 : _callbackRef$current.call(callbackRef);\n }, [count]);\n\n // Trigger to update count\n return function () {\n if (effectRef.current !== count) {\n return;\n }\n effectRef.current += 1;\n setCount(effectRef.current);\n };\n}\nexport function useUpdateState(defaultState) {\n var batchRef = useRef([]);\n var _useState3 = useState({}),\n _useState4 = _slicedToArray(_useState3, 2),\n forceUpdate = _useState4[1];\n var state = useRef(typeof defaultState === 'function' ? defaultState() : defaultState);\n var flushUpdate = useUpdate(function () {\n var current = state.current;\n batchRef.current.forEach(function (callback) {\n current = callback(current);\n });\n batchRef.current = [];\n state.current = current;\n forceUpdate({});\n });\n function updater(callback) {\n batchRef.current.push(callback);\n flushUpdate();\n }\n return [state.current, updater];\n}","import { useMemo } from 'react';\nvar DEFAULT_SIZE = {\n width: 0,\n height: 0,\n left: 0,\n top: 0,\n right: 0\n};\nexport default function useVisibleRange(tabOffsets, visibleTabContentValue, transform, tabContentSizeValue, addNodeSizeValue, operationNodeSizeValue, _ref) {\n var tabs = _ref.tabs,\n tabPosition = _ref.tabPosition,\n rtl = _ref.rtl;\n var charUnit;\n var position;\n var transformSize;\n if (['top', 'bottom'].includes(tabPosition)) {\n charUnit = 'width';\n position = rtl ? 'right' : 'left';\n transformSize = Math.abs(transform);\n } else {\n charUnit = 'height';\n position = 'top';\n transformSize = -transform;\n }\n return useMemo(function () {\n if (!tabs.length) {\n return [0, 0];\n }\n var len = tabs.length;\n var endIndex = len;\n for (var i = 0; i < len; i += 1) {\n var offset = tabOffsets.get(tabs[i].key) || DEFAULT_SIZE;\n if (offset[position] + offset[charUnit] > transformSize + visibleTabContentValue) {\n endIndex = i - 1;\n break;\n }\n }\n var startIndex = 0;\n for (var _i = len - 1; _i >= 0; _i -= 1) {\n var _offset = tabOffsets.get(tabs[_i].key) || DEFAULT_SIZE;\n if (_offset[position] < transformSize) {\n startIndex = _i + 1;\n break;\n }\n }\n return startIndex >= endIndex ? [0, 0] : [startIndex, endIndex];\n }, [tabOffsets, visibleTabContentValue, tabContentSizeValue, addNodeSizeValue, operationNodeSizeValue, transformSize, tabPosition, tabs.map(function (tab) {\n return tab.key;\n }).join('_'), rtl]);\n}","/**\n * We trade Map as deps which may change with same value but different ref object.\n * We should make it as hash for deps\n * */\nexport function stringify(obj) {\n var tgt;\n if (obj instanceof Map) {\n tgt = {};\n obj.forEach(function (v, k) {\n tgt[k] = v;\n });\n } else {\n tgt = obj;\n }\n return JSON.stringify(tgt);\n}\nvar RC_TABS_DOUBLE_QUOTE = 'TABS_DQ';\nexport function genDataNodeKey(key) {\n return String(key).replace(/\"/g, RC_TABS_DOUBLE_QUOTE);\n}\nexport function getRemovable(closable, closeIcon, editable, disabled) {\n if (\n // Only editable tabs can be removed\n !editable ||\n // Tabs cannot be removed when disabled\n disabled ||\n // closable is false\n closable === false ||\n // If closable is undefined, the remove button should be hidden when closeIcon is null or false\n closable === undefined && (closeIcon === false || closeIcon === null)) {\n return false;\n }\n return true;\n}","import * as React from 'react';\nfunction AddButton(_ref, ref) {\n var prefixCls = _ref.prefixCls,\n editable = _ref.editable,\n locale = _ref.locale,\n style = _ref.style;\n if (!editable || editable.showAdd === false) {\n return null;\n }\n return /*#__PURE__*/React.createElement(\"button\", {\n ref: ref,\n type: \"button\",\n className: \"\".concat(prefixCls, \"-nav-add\"),\n style: style,\n \"aria-label\": (locale === null || locale === void 0 ? void 0 : locale.addAriaLabel) || 'Add tab',\n onClick: function onClick(event) {\n editable.onEdit('add', {\n event: event\n });\n }\n }, editable.addIcon || '+');\n}\nexport default /*#__PURE__*/React.forwardRef(AddButton);","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport * as React from 'react';\nvar ExtraContent = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var position = _ref.position,\n prefixCls = _ref.prefixCls,\n extra = _ref.extra;\n if (!extra) return null;\n var content;\n\n // Parse extra\n var assertExtra = {};\n if (_typeof(extra) === 'object' && ! /*#__PURE__*/React.isValidElement(extra)) {\n assertExtra = extra;\n } else {\n assertExtra.right = extra;\n }\n if (position === 'right') {\n content = assertExtra.right;\n }\n if (position === 'left') {\n content = assertExtra.left;\n }\n return content ? /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-extra-content\"),\n ref: ref\n }, content) : null;\n});\nif (process.env.NODE_ENV !== 'production') {\n ExtraContent.displayName = 'ExtraContent';\n}\nexport default ExtraContent;","import KeyCode from \"rc-util/es/KeyCode\";\nimport raf from \"rc-util/es/raf\";\nimport * as React from \"react\";\nvar ESC = KeyCode.ESC,\n TAB = KeyCode.TAB;\nexport default function useAccessibility(_ref) {\n var visible = _ref.visible,\n triggerRef = _ref.triggerRef,\n onVisibleChange = _ref.onVisibleChange,\n autoFocus = _ref.autoFocus,\n overlayRef = _ref.overlayRef;\n var focusMenuRef = React.useRef(false);\n var handleCloseMenuAndReturnFocus = function handleCloseMenuAndReturnFocus() {\n if (visible) {\n var _triggerRef$current, _triggerRef$current$f;\n (_triggerRef$current = triggerRef.current) === null || _triggerRef$current === void 0 ? void 0 : (_triggerRef$current$f = _triggerRef$current.focus) === null || _triggerRef$current$f === void 0 ? void 0 : _triggerRef$current$f.call(_triggerRef$current);\n onVisibleChange === null || onVisibleChange === void 0 ? void 0 : onVisibleChange(false);\n }\n };\n var focusMenu = function focusMenu() {\n var _overlayRef$current;\n if ((_overlayRef$current = overlayRef.current) !== null && _overlayRef$current !== void 0 && _overlayRef$current.focus) {\n overlayRef.current.focus();\n focusMenuRef.current = true;\n return true;\n }\n return false;\n };\n var handleKeyDown = function handleKeyDown(event) {\n switch (event.keyCode) {\n case ESC:\n handleCloseMenuAndReturnFocus();\n break;\n case TAB:\n {\n var focusResult = false;\n if (!focusMenuRef.current) {\n focusResult = focusMenu();\n }\n if (focusResult) {\n event.preventDefault();\n } else {\n handleCloseMenuAndReturnFocus();\n }\n break;\n }\n }\n };\n React.useEffect(function () {\n if (visible) {\n window.addEventListener(\"keydown\", handleKeyDown);\n if (autoFocus) {\n // FIXME: hack with raf\n raf(focusMenu, 3);\n }\n return function () {\n window.removeEventListener(\"keydown\", handleKeyDown);\n focusMenuRef.current = false;\n };\n }\n return function () {\n focusMenuRef.current = false;\n };\n }, [visible]); // eslint-disable-line react-hooks/exhaustive-deps\n}","import React, { forwardRef, useMemo } from 'react';\nimport { composeRef, supportRef } from \"rc-util/es/ref\";\nvar Overlay = /*#__PURE__*/forwardRef(function (props, ref) {\n var overlay = props.overlay,\n arrow = props.arrow,\n prefixCls = props.prefixCls;\n var overlayNode = useMemo(function () {\n var overlayElement;\n if (typeof overlay === 'function') {\n overlayElement = overlay();\n } else {\n overlayElement = overlay;\n }\n return overlayElement;\n }, [overlay]);\n var composedRef = composeRef(ref, overlayNode === null || overlayNode === void 0 ? void 0 : overlayNode.ref);\n return /*#__PURE__*/React.createElement(React.Fragment, null, arrow && /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-arrow\")\n }), /*#__PURE__*/React.cloneElement(overlayNode, {\n ref: supportRef(overlayNode) ? composedRef : undefined\n }));\n});\nexport default Overlay;","var autoAdjustOverflow = {\n adjustX: 1,\n adjustY: 1\n};\nvar targetOffset = [0, 0];\nvar placements = {\n topLeft: {\n points: ['bl', 'tl'],\n overflow: autoAdjustOverflow,\n offset: [0, -4],\n targetOffset: targetOffset\n },\n top: {\n points: ['bc', 'tc'],\n overflow: autoAdjustOverflow,\n offset: [0, -4],\n targetOffset: targetOffset\n },\n topRight: {\n points: ['br', 'tr'],\n overflow: autoAdjustOverflow,\n offset: [0, -4],\n targetOffset: targetOffset\n },\n bottomLeft: {\n points: ['tl', 'bl'],\n overflow: autoAdjustOverflow,\n offset: [0, 4],\n targetOffset: targetOffset\n },\n bottom: {\n points: ['tc', 'bc'],\n overflow: autoAdjustOverflow,\n offset: [0, 4],\n targetOffset: targetOffset\n },\n bottomRight: {\n points: ['tr', 'br'],\n overflow: autoAdjustOverflow,\n offset: [0, 4],\n targetOffset: targetOffset\n }\n};\nexport default placements;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"arrow\", \"prefixCls\", \"transitionName\", \"animation\", \"align\", \"placement\", \"placements\", \"getPopupContainer\", \"showAction\", \"hideAction\", \"overlayClassName\", \"overlayStyle\", \"visible\", \"trigger\", \"autoFocus\", \"overlay\", \"children\", \"onVisibleChange\"];\nimport Trigger from '@rc-component/trigger';\nimport classNames from 'classnames';\nimport { composeRef, supportRef } from \"rc-util/es/ref\";\nimport React from 'react';\nimport useAccessibility from \"./hooks/useAccessibility\";\nimport Overlay from \"./Overlay\";\nimport Placements from \"./placements\";\nfunction Dropdown(props, ref) {\n var _children$props;\n var _props$arrow = props.arrow,\n arrow = _props$arrow === void 0 ? false : _props$arrow,\n _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-dropdown' : _props$prefixCls,\n transitionName = props.transitionName,\n animation = props.animation,\n align = props.align,\n _props$placement = props.placement,\n placement = _props$placement === void 0 ? 'bottomLeft' : _props$placement,\n _props$placements = props.placements,\n placements = _props$placements === void 0 ? Placements : _props$placements,\n getPopupContainer = props.getPopupContainer,\n showAction = props.showAction,\n hideAction = props.hideAction,\n overlayClassName = props.overlayClassName,\n overlayStyle = props.overlayStyle,\n visible = props.visible,\n _props$trigger = props.trigger,\n trigger = _props$trigger === void 0 ? ['hover'] : _props$trigger,\n autoFocus = props.autoFocus,\n overlay = props.overlay,\n children = props.children,\n onVisibleChange = props.onVisibleChange,\n otherProps = _objectWithoutProperties(props, _excluded);\n var _React$useState = React.useState(),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n triggerVisible = _React$useState2[0],\n setTriggerVisible = _React$useState2[1];\n var mergedVisible = 'visible' in props ? visible : triggerVisible;\n var triggerRef = React.useRef(null);\n var overlayRef = React.useRef(null);\n var childRef = React.useRef(null);\n React.useImperativeHandle(ref, function () {\n return triggerRef.current;\n });\n var handleVisibleChange = function handleVisibleChange(newVisible) {\n setTriggerVisible(newVisible);\n onVisibleChange === null || onVisibleChange === void 0 ? void 0 : onVisibleChange(newVisible);\n };\n useAccessibility({\n visible: mergedVisible,\n triggerRef: childRef,\n onVisibleChange: handleVisibleChange,\n autoFocus: autoFocus,\n overlayRef: overlayRef\n });\n var onClick = function onClick(e) {\n var onOverlayClick = props.onOverlayClick;\n setTriggerVisible(false);\n if (onOverlayClick) {\n onOverlayClick(e);\n }\n };\n var getMenuElement = function getMenuElement() {\n return /*#__PURE__*/React.createElement(Overlay, {\n ref: overlayRef,\n overlay: overlay,\n prefixCls: prefixCls,\n arrow: arrow\n });\n };\n var getMenuElementOrLambda = function getMenuElementOrLambda() {\n if (typeof overlay === 'function') {\n return getMenuElement;\n }\n return getMenuElement();\n };\n var getMinOverlayWidthMatchTrigger = function getMinOverlayWidthMatchTrigger() {\n var minOverlayWidthMatchTrigger = props.minOverlayWidthMatchTrigger,\n alignPoint = props.alignPoint;\n if ('minOverlayWidthMatchTrigger' in props) {\n return minOverlayWidthMatchTrigger;\n }\n return !alignPoint;\n };\n var getOpenClassName = function getOpenClassName() {\n var openClassName = props.openClassName;\n if (openClassName !== undefined) {\n return openClassName;\n }\n return \"\".concat(prefixCls, \"-open\");\n };\n var childrenNode = /*#__PURE__*/React.cloneElement(children, {\n className: classNames((_children$props = children.props) === null || _children$props === void 0 ? void 0 : _children$props.className, mergedVisible && getOpenClassName()),\n ref: supportRef(children) ? composeRef(childRef, children.ref) : undefined\n });\n var triggerHideAction = hideAction;\n if (!triggerHideAction && trigger.indexOf('contextMenu') !== -1) {\n triggerHideAction = ['click'];\n }\n return /*#__PURE__*/React.createElement(Trigger, _extends({\n builtinPlacements: placements\n }, otherProps, {\n prefixCls: prefixCls,\n ref: triggerRef,\n popupClassName: classNames(overlayClassName, _defineProperty({}, \"\".concat(prefixCls, \"-show-arrow\"), arrow)),\n popupStyle: overlayStyle,\n action: trigger,\n showAction: showAction,\n hideAction: triggerHideAction,\n popupPlacement: placement,\n popupAlign: align,\n popupTransitionName: transitionName,\n popupAnimation: animation,\n popupVisible: mergedVisible,\n stretch: getMinOverlayWidthMatchTrigger() ? 'minWidth' : '',\n popup: getMenuElementOrLambda(),\n onPopupVisibleChange: handleVisibleChange,\n onPopupClick: onClick,\n getPopupContainer: getPopupContainer\n }), childrenNode);\n}\nexport default /*#__PURE__*/React.forwardRef(Dropdown);","import Dropdown from \"./Dropdown\";\nexport default Dropdown;","import * as React from 'react';\nexport var IdContext = /*#__PURE__*/React.createContext(null);\nexport function getMenuId(uuid, eventKey) {\n if (uuid === undefined) {\n return null;\n }\n return \"\".concat(uuid, \"-\").concat(eventKey);\n}\n\n/**\n * Get `data-menu-id`\n */\nexport function useMenuId(eventKey) {\n var id = React.useContext(IdContext);\n return getMenuId(id, eventKey);\n}","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nvar _excluded = [\"children\", \"locked\"];\nimport * as React from 'react';\nimport useMemo from \"rc-util/es/hooks/useMemo\";\nimport isEqual from \"rc-util/es/isEqual\";\nexport var MenuContext = /*#__PURE__*/React.createContext(null);\nfunction mergeProps(origin, target) {\n var clone = _objectSpread({}, origin);\n Object.keys(target).forEach(function (key) {\n var value = target[key];\n if (value !== undefined) {\n clone[key] = value;\n }\n });\n return clone;\n}\nexport default function InheritableContextProvider(_ref) {\n var children = _ref.children,\n locked = _ref.locked,\n restProps = _objectWithoutProperties(_ref, _excluded);\n var context = React.useContext(MenuContext);\n var inheritableContext = useMemo(function () {\n return mergeProps(context, restProps);\n }, [context, restProps], function (prev, next) {\n return !locked && (prev[0] !== next[0] || !isEqual(prev[1], next[1], true));\n });\n return /*#__PURE__*/React.createElement(MenuContext.Provider, {\n value: inheritableContext\n }, children);\n}","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport * as React from 'react';\nvar EmptyList = [];\n\n// ========================= Path Register =========================\n\nexport var PathRegisterContext = /*#__PURE__*/React.createContext(null);\nexport function useMeasure() {\n return React.useContext(PathRegisterContext);\n}\n\n// ========================= Path Tracker ==========================\nexport var PathTrackerContext = /*#__PURE__*/React.createContext(EmptyList);\nexport function useFullPath(eventKey) {\n var parentKeyPath = React.useContext(PathTrackerContext);\n return React.useMemo(function () {\n return eventKey !== undefined ? [].concat(_toConsumableArray(parentKeyPath), [eventKey]) : parentKeyPath;\n }, [parentKeyPath, eventKey]);\n}\n\n// =========================== Path User ===========================\n\nexport var PathUserContext = /*#__PURE__*/React.createContext(null);","import * as React from 'react';\nvar PrivateContext = /*#__PURE__*/React.createContext({});\nexport default PrivateContext;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport isVisible from \"./isVisible\";\nfunction focusable(node) {\n var includePositive = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n if (isVisible(node)) {\n var nodeName = node.nodeName.toLowerCase();\n var isFocusableElement =\n // Focusable element\n ['input', 'select', 'textarea', 'button'].includes(nodeName) ||\n // Editable element\n node.isContentEditable ||\n // Anchor with href element\n nodeName === 'a' && !!node.getAttribute('href');\n\n // Get tabIndex\n var tabIndexAttr = node.getAttribute('tabindex');\n var tabIndexNum = Number(tabIndexAttr);\n\n // Parse as number if validate\n var tabIndex = null;\n if (tabIndexAttr && !Number.isNaN(tabIndexNum)) {\n tabIndex = tabIndexNum;\n } else if (isFocusableElement && tabIndex === null) {\n tabIndex = 0;\n }\n\n // Block focusable if disabled\n if (isFocusableElement && node.disabled) {\n tabIndex = null;\n }\n return tabIndex !== null && (tabIndex >= 0 || includePositive && tabIndex < 0);\n }\n return false;\n}\nexport function getFocusNodeList(node) {\n var includePositive = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var res = _toConsumableArray(node.querySelectorAll('*')).filter(function (child) {\n return focusable(child, includePositive);\n });\n if (focusable(node, includePositive)) {\n res.unshift(node);\n }\n return res;\n}\nvar lastFocusElement = null;\n\n/** @deprecated Do not use since this may failed when used in async */\nexport function saveLastFocusNode() {\n lastFocusElement = document.activeElement;\n}\n\n/** @deprecated Do not use since this may failed when used in async */\nexport function clearLastFocusNode() {\n lastFocusElement = null;\n}\n\n/** @deprecated Do not use since this may failed when used in async */\nexport function backLastFocusNode() {\n if (lastFocusElement) {\n try {\n // 元素可能已经被移动了\n lastFocusElement.focus();\n\n /* eslint-disable no-empty */\n } catch (e) {\n // empty\n }\n /* eslint-enable no-empty */\n }\n}\n\nexport function limitTabRange(node, e) {\n if (e.keyCode === 9) {\n var tabNodeList = getFocusNodeList(node);\n var lastTabNode = tabNodeList[e.shiftKey ? 0 : tabNodeList.length - 1];\n var leavingTab = lastTabNode === document.activeElement || node === document.activeElement;\n if (leavingTab) {\n var target = tabNodeList[e.shiftKey ? tabNodeList.length - 1 : 0];\n target.focus();\n e.preventDefault();\n }\n }\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport raf from \"rc-util/es/raf\";\nimport { getFocusNodeList } from \"rc-util/es/Dom/focus\";\nimport { getMenuId } from \"../context/IdContext\";\n\n// destruct to reduce minify size\nvar LEFT = KeyCode.LEFT,\n RIGHT = KeyCode.RIGHT,\n UP = KeyCode.UP,\n DOWN = KeyCode.DOWN,\n ENTER = KeyCode.ENTER,\n ESC = KeyCode.ESC,\n HOME = KeyCode.HOME,\n END = KeyCode.END;\nvar ArrowKeys = [UP, DOWN, LEFT, RIGHT];\nfunction getOffset(mode, isRootLevel, isRtl, which) {\n var _inline, _horizontal, _vertical, _offsets;\n var prev = 'prev';\n var next = 'next';\n var children = 'children';\n var parent = 'parent';\n\n // Inline enter is special that we use unique operation\n if (mode === 'inline' && which === ENTER) {\n return {\n inlineTrigger: true\n };\n }\n var inline = (_inline = {}, _defineProperty(_inline, UP, prev), _defineProperty(_inline, DOWN, next), _inline);\n var horizontal = (_horizontal = {}, _defineProperty(_horizontal, LEFT, isRtl ? next : prev), _defineProperty(_horizontal, RIGHT, isRtl ? prev : next), _defineProperty(_horizontal, DOWN, children), _defineProperty(_horizontal, ENTER, children), _horizontal);\n var vertical = (_vertical = {}, _defineProperty(_vertical, UP, prev), _defineProperty(_vertical, DOWN, next), _defineProperty(_vertical, ENTER, children), _defineProperty(_vertical, ESC, parent), _defineProperty(_vertical, LEFT, isRtl ? children : parent), _defineProperty(_vertical, RIGHT, isRtl ? parent : children), _vertical);\n var offsets = {\n inline: inline,\n horizontal: horizontal,\n vertical: vertical,\n inlineSub: inline,\n horizontalSub: vertical,\n verticalSub: vertical\n };\n var type = (_offsets = offsets[\"\".concat(mode).concat(isRootLevel ? '' : 'Sub')]) === null || _offsets === void 0 ? void 0 : _offsets[which];\n switch (type) {\n case prev:\n return {\n offset: -1,\n sibling: true\n };\n case next:\n return {\n offset: 1,\n sibling: true\n };\n case parent:\n return {\n offset: -1,\n sibling: false\n };\n case children:\n return {\n offset: 1,\n sibling: false\n };\n default:\n return null;\n }\n}\nfunction findContainerUL(element) {\n var current = element;\n while (current) {\n if (current.getAttribute('data-menu-list')) {\n return current;\n }\n current = current.parentElement;\n }\n\n // Normally should not reach this line\n /* istanbul ignore next */\n return null;\n}\n\n/**\n * Find focused element within element set provided\n */\nfunction getFocusElement(activeElement, elements) {\n var current = activeElement || document.activeElement;\n while (current) {\n if (elements.has(current)) {\n return current;\n }\n current = current.parentElement;\n }\n return null;\n}\n\n/**\n * Get focusable elements from the element set under provided container\n */\nfunction getFocusableElements(container, elements) {\n var list = getFocusNodeList(container, true);\n return list.filter(function (ele) {\n return elements.has(ele);\n });\n}\nfunction getNextFocusElement(parentQueryContainer, elements, focusMenuElement) {\n var offset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;\n // Key on the menu item will not get validate parent container\n if (!parentQueryContainer) {\n return null;\n }\n\n // List current level menu item elements\n var sameLevelFocusableMenuElementList = getFocusableElements(parentQueryContainer, elements);\n\n // Find next focus index\n var count = sameLevelFocusableMenuElementList.length;\n var focusIndex = sameLevelFocusableMenuElementList.findIndex(function (ele) {\n return focusMenuElement === ele;\n });\n if (offset < 0) {\n if (focusIndex === -1) {\n focusIndex = count - 1;\n } else {\n focusIndex -= 1;\n }\n } else if (offset > 0) {\n focusIndex += 1;\n }\n focusIndex = (focusIndex + count) % count;\n\n // Focus menu item\n return sameLevelFocusableMenuElementList[focusIndex];\n}\nexport default function useAccessibility(mode, activeKey, isRtl, id, containerRef, getKeys, getKeyPath, triggerActiveKey, triggerAccessibilityOpen, originOnKeyDown) {\n var rafRef = React.useRef();\n var activeRef = React.useRef();\n activeRef.current = activeKey;\n var cleanRaf = function cleanRaf() {\n raf.cancel(rafRef.current);\n };\n React.useEffect(function () {\n return function () {\n cleanRaf();\n };\n }, []);\n return function (e) {\n var which = e.which;\n if ([].concat(ArrowKeys, [ENTER, ESC, HOME, END]).includes(which)) {\n // Convert key to elements\n var elements;\n var key2element;\n var element2key;\n\n // >>> Wrap as function since we use raf for some case\n var refreshElements = function refreshElements() {\n elements = new Set();\n key2element = new Map();\n element2key = new Map();\n var keys = getKeys();\n keys.forEach(function (key) {\n var element = document.querySelector(\"[data-menu-id='\".concat(getMenuId(id, key), \"']\"));\n if (element) {\n elements.add(element);\n element2key.set(element, key);\n key2element.set(key, element);\n }\n });\n return elements;\n };\n refreshElements();\n\n // First we should find current focused MenuItem/SubMenu element\n var activeElement = key2element.get(activeKey);\n var focusMenuElement = getFocusElement(activeElement, elements);\n var focusMenuKey = element2key.get(focusMenuElement);\n var offsetObj = getOffset(mode, getKeyPath(focusMenuKey, true).length === 1, isRtl, which);\n\n // Some mode do not have fully arrow operation like inline\n if (!offsetObj && which !== HOME && which !== END) {\n return;\n }\n\n // Arrow prevent default to avoid page scroll\n if (ArrowKeys.includes(which) || [HOME, END].includes(which)) {\n e.preventDefault();\n }\n var tryFocus = function tryFocus(menuElement) {\n if (menuElement) {\n var focusTargetElement = menuElement;\n\n // Focus to link instead of menu item if possible\n var link = menuElement.querySelector('a');\n if (link !== null && link !== void 0 && link.getAttribute('href')) {\n focusTargetElement = link;\n }\n var targetKey = element2key.get(menuElement);\n triggerActiveKey(targetKey);\n\n /**\n * Do not `useEffect` here since `tryFocus` may trigger async\n * which makes React sync update the `activeKey`\n * that force render before `useRef` set the next activeKey\n */\n cleanRaf();\n rafRef.current = raf(function () {\n if (activeRef.current === targetKey) {\n focusTargetElement.focus();\n }\n });\n }\n };\n if ([HOME, END].includes(which) || offsetObj.sibling || !focusMenuElement) {\n // ========================== Sibling ==========================\n // Find walkable focus menu element container\n var parentQueryContainer;\n if (!focusMenuElement || mode === 'inline') {\n parentQueryContainer = containerRef.current;\n } else {\n parentQueryContainer = findContainerUL(focusMenuElement);\n }\n\n // Get next focus element\n var targetElement;\n var focusableElements = getFocusableElements(parentQueryContainer, elements);\n if (which === HOME) {\n targetElement = focusableElements[0];\n } else if (which === END) {\n targetElement = focusableElements[focusableElements.length - 1];\n } else {\n targetElement = getNextFocusElement(parentQueryContainer, elements, focusMenuElement, offsetObj.offset);\n }\n // Focus menu item\n tryFocus(targetElement);\n\n // ======================= InlineTrigger =======================\n } else if (offsetObj.inlineTrigger) {\n // Inline trigger no need switch to sub menu item\n triggerAccessibilityOpen(focusMenuKey);\n // =========================== Level ===========================\n } else if (offsetObj.offset > 0) {\n triggerAccessibilityOpen(focusMenuKey, true);\n cleanRaf();\n rafRef.current = raf(function () {\n // Async should resync elements\n refreshElements();\n var controlId = focusMenuElement.getAttribute('aria-controls');\n var subQueryContainer = document.getElementById(controlId);\n\n // Get sub focusable menu item\n var targetElement = getNextFocusElement(subQueryContainer, elements);\n\n // Focus menu item\n tryFocus(targetElement);\n }, 5);\n } else if (offsetObj.offset < 0) {\n var keyPath = getKeyPath(focusMenuKey, true);\n var parentKey = keyPath[keyPath.length - 2];\n var parentMenuElement = key2element.get(parentKey);\n\n // Focus menu item\n triggerAccessibilityOpen(parentKey, false);\n tryFocus(parentMenuElement);\n }\n }\n\n // Pass origin key down event\n originOnKeyDown === null || originOnKeyDown === void 0 ? void 0 : originOnKeyDown(e);\n };\n}","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useRef, useCallback } from 'react';\nimport warning from \"rc-util/es/warning\";\nimport { nextSlice } from \"../utils/timeUtil\";\nvar PATH_SPLIT = '__RC_UTIL_PATH_SPLIT__';\nvar getPathStr = function getPathStr(keyPath) {\n return keyPath.join(PATH_SPLIT);\n};\nvar getPathKeys = function getPathKeys(keyPathStr) {\n return keyPathStr.split(PATH_SPLIT);\n};\nexport var OVERFLOW_KEY = 'rc-menu-more';\nexport default function useKeyRecords() {\n var _React$useState = React.useState({}),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n internalForceUpdate = _React$useState2[1];\n var key2pathRef = useRef(new Map());\n var path2keyRef = useRef(new Map());\n var _React$useState3 = React.useState([]),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n overflowKeys = _React$useState4[0],\n setOverflowKeys = _React$useState4[1];\n var updateRef = useRef(0);\n var destroyRef = useRef(false);\n var forceUpdate = function forceUpdate() {\n if (!destroyRef.current) {\n internalForceUpdate({});\n }\n };\n var registerPath = useCallback(function (key, keyPath) {\n // Warning for invalidate or duplicated `key`\n if (process.env.NODE_ENV !== 'production') {\n warning(!key2pathRef.current.has(key), \"Duplicated key '\".concat(key, \"' used in Menu by path [\").concat(keyPath.join(' > '), \"]\"));\n }\n\n // Fill map\n var connectedPath = getPathStr(keyPath);\n path2keyRef.current.set(connectedPath, key);\n key2pathRef.current.set(key, connectedPath);\n updateRef.current += 1;\n var id = updateRef.current;\n nextSlice(function () {\n if (id === updateRef.current) {\n forceUpdate();\n }\n });\n }, []);\n var unregisterPath = useCallback(function (key, keyPath) {\n var connectedPath = getPathStr(keyPath);\n path2keyRef.current.delete(connectedPath);\n key2pathRef.current.delete(key);\n }, []);\n var refreshOverflowKeys = useCallback(function (keys) {\n setOverflowKeys(keys);\n }, []);\n var getKeyPath = useCallback(function (eventKey, includeOverflow) {\n var fullPath = key2pathRef.current.get(eventKey) || '';\n var keys = getPathKeys(fullPath);\n if (includeOverflow && overflowKeys.includes(keys[0])) {\n keys.unshift(OVERFLOW_KEY);\n }\n return keys;\n }, [overflowKeys]);\n var isSubPathKey = useCallback(function (pathKeys, eventKey) {\n return pathKeys.some(function (pathKey) {\n var pathKeyList = getKeyPath(pathKey, true);\n return pathKeyList.includes(eventKey);\n });\n }, [getKeyPath]);\n var getKeys = function getKeys() {\n var keys = _toConsumableArray(key2pathRef.current.keys());\n if (overflowKeys.length) {\n keys.push(OVERFLOW_KEY);\n }\n return keys;\n };\n\n /**\n * Find current key related child path keys\n */\n var getSubPathKeys = useCallback(function (key) {\n var connectedPath = \"\".concat(key2pathRef.current.get(key)).concat(PATH_SPLIT);\n var pathKeys = new Set();\n _toConsumableArray(path2keyRef.current.keys()).forEach(function (pathKey) {\n if (pathKey.startsWith(connectedPath)) {\n pathKeys.add(path2keyRef.current.get(pathKey));\n }\n });\n return pathKeys;\n }, []);\n React.useEffect(function () {\n return function () {\n destroyRef.current = true;\n };\n }, []);\n return {\n // Register\n registerPath: registerPath,\n unregisterPath: unregisterPath,\n refreshOverflowKeys: refreshOverflowKeys,\n // Util\n isSubPathKey: isSubPathKey,\n getKeyPath: getKeyPath,\n getKeys: getKeys,\n getSubPathKeys: getSubPathKeys\n };\n}","export function nextSlice(callback) {\n /* istanbul ignore next */\n Promise.resolve().then(callback);\n}","import * as React from 'react';\n\n/**\n * Cache callback function that always return same ref instead.\n * This is used for context optimization.\n */\nexport default function useMemoCallback(func) {\n var funRef = React.useRef(func);\n funRef.current = func;\n var callback = React.useCallback(function () {\n var _funRef$current;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return (_funRef$current = funRef.current) === null || _funRef$current === void 0 ? void 0 : _funRef$current.call.apply(_funRef$current, [funRef].concat(args));\n }, []);\n return func ? callback : undefined;\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nvar uniquePrefix = Math.random().toFixed(5).toString().slice(2);\nvar internalId = 0;\nexport default function useUUID(id) {\n var _useMergedState = useMergedState(id, {\n value: id\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n uuid = _useMergedState2[0],\n setUUID = _useMergedState2[1];\n React.useEffect(function () {\n internalId += 1;\n var newId = process.env.NODE_ENV === 'test' ? 'test' : \"\".concat(uniquePrefix, \"-\").concat(internalId);\n setUUID(\"rc-menu-uuid-\".concat(newId));\n }, []);\n return uuid;\n}","import * as React from 'react';\nimport { MenuContext } from \"../context/MenuContext\";\nexport default function useActive(eventKey, disabled, onMouseEnter, onMouseLeave) {\n var _React$useContext = React.useContext(MenuContext),\n activeKey = _React$useContext.activeKey,\n onActive = _React$useContext.onActive,\n onInactive = _React$useContext.onInactive;\n var ret = {\n active: activeKey === eventKey\n };\n\n // Skip when disabled\n if (!disabled) {\n ret.onMouseEnter = function (domEvent) {\n onMouseEnter === null || onMouseEnter === void 0 ? void 0 : onMouseEnter({\n key: eventKey,\n domEvent: domEvent\n });\n onActive(eventKey);\n };\n ret.onMouseLeave = function (domEvent) {\n onMouseLeave === null || onMouseLeave === void 0 ? void 0 : onMouseLeave({\n key: eventKey,\n domEvent: domEvent\n });\n onInactive(eventKey);\n };\n }\n return ret;\n}","import * as React from 'react';\nimport { MenuContext } from \"../context/MenuContext\";\nexport default function useDirectionStyle(level) {\n var _React$useContext = React.useContext(MenuContext),\n mode = _React$useContext.mode,\n rtl = _React$useContext.rtl,\n inlineIndent = _React$useContext.inlineIndent;\n if (mode !== 'inline') {\n return null;\n }\n var len = level;\n return rtl ? {\n paddingRight: len * inlineIndent\n } : {\n paddingLeft: len * inlineIndent\n };\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nexport default function Icon(_ref) {\n var icon = _ref.icon,\n props = _ref.props,\n children = _ref.children;\n var iconNode;\n if (typeof icon === 'function') {\n iconNode = /*#__PURE__*/React.createElement(icon, _objectSpread({}, props));\n } else {\n // Compatible for origin definition\n iconNode = icon;\n }\n return iconNode || children || null;\n}","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"item\"];\nimport warning from \"rc-util/es/warning\";\n\n/**\n * `onClick` event return `info.item` which point to react node directly.\n * We should warning this since it will not work on FC.\n */\nexport function warnItemProp(_ref) {\n var item = _ref.item,\n restInfo = _objectWithoutProperties(_ref, _excluded);\n Object.defineProperty(restInfo, 'item', {\n get: function get() {\n warning(false, '`info.item` is deprecated since we will move to function component that not provides React Node instance in future.');\n return item;\n }\n });\n return restInfo;\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nvar _excluded = [\"title\", \"attribute\", \"elementRef\"],\n _excluded2 = [\"style\", \"className\", \"eventKey\", \"warnKey\", \"disabled\", \"itemIcon\", \"children\", \"role\", \"onMouseEnter\", \"onMouseLeave\", \"onClick\", \"onKeyDown\", \"onFocus\"],\n _excluded3 = [\"active\"];\nimport classNames from 'classnames';\nimport Overflow from 'rc-overflow';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport omit from \"rc-util/es/omit\";\nimport { useComposeRef } from \"rc-util/es/ref\";\nimport warning from \"rc-util/es/warning\";\nimport * as React from 'react';\nimport { useMenuId } from \"./context/IdContext\";\nimport { MenuContext } from \"./context/MenuContext\";\nimport { useFullPath, useMeasure } from \"./context/PathContext\";\nimport PrivateContext from \"./context/PrivateContext\";\nimport useActive from \"./hooks/useActive\";\nimport useDirectionStyle from \"./hooks/useDirectionStyle\";\nimport Icon from \"./Icon\";\nimport { warnItemProp } from \"./utils/warnUtil\";\n// Since Menu event provide the `info.item` which point to the MenuItem node instance.\n// We have to use class component here.\n// This should be removed from doc & api in future.\nvar LegacyMenuItem = /*#__PURE__*/function (_React$Component) {\n _inherits(LegacyMenuItem, _React$Component);\n var _super = _createSuper(LegacyMenuItem);\n function LegacyMenuItem() {\n _classCallCheck(this, LegacyMenuItem);\n return _super.apply(this, arguments);\n }\n _createClass(LegacyMenuItem, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n title = _this$props.title,\n attribute = _this$props.attribute,\n elementRef = _this$props.elementRef,\n restProps = _objectWithoutProperties(_this$props, _excluded);\n\n // Here the props are eventually passed to the DOM element.\n // React does not recognize non-standard attributes.\n // Therefore, remove the props that is not used here.\n // ref: https://github.com/ant-design/ant-design/issues/41395\n var passedProps = omit(restProps, ['eventKey', 'popupClassName', 'popupOffset', 'onTitleClick']);\n warning(!attribute, '`attribute` of Menu.Item is deprecated. Please pass attribute directly.');\n return /*#__PURE__*/React.createElement(Overflow.Item, _extends({}, attribute, {\n title: typeof title === 'string' ? title : undefined\n }, passedProps, {\n ref: elementRef\n }));\n }\n }]);\n return LegacyMenuItem;\n}(React.Component);\n/**\n * Real Menu Item component\n */\nvar InternalMenuItem = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _classNames;\n var style = props.style,\n className = props.className,\n eventKey = props.eventKey,\n warnKey = props.warnKey,\n disabled = props.disabled,\n itemIcon = props.itemIcon,\n children = props.children,\n role = props.role,\n onMouseEnter = props.onMouseEnter,\n onMouseLeave = props.onMouseLeave,\n onClick = props.onClick,\n onKeyDown = props.onKeyDown,\n onFocus = props.onFocus,\n restProps = _objectWithoutProperties(props, _excluded2);\n var domDataId = useMenuId(eventKey);\n var _React$useContext = React.useContext(MenuContext),\n prefixCls = _React$useContext.prefixCls,\n onItemClick = _React$useContext.onItemClick,\n contextDisabled = _React$useContext.disabled,\n overflowDisabled = _React$useContext.overflowDisabled,\n contextItemIcon = _React$useContext.itemIcon,\n selectedKeys = _React$useContext.selectedKeys,\n onActive = _React$useContext.onActive;\n var _React$useContext2 = React.useContext(PrivateContext),\n _internalRenderMenuItem = _React$useContext2._internalRenderMenuItem;\n var itemCls = \"\".concat(prefixCls, \"-item\");\n var legacyMenuItemRef = React.useRef();\n var elementRef = React.useRef();\n var mergedDisabled = contextDisabled || disabled;\n var mergedEleRef = useComposeRef(ref, elementRef);\n var connectedKeys = useFullPath(eventKey);\n\n // ================================ Warn ================================\n if (process.env.NODE_ENV !== 'production' && warnKey) {\n warning(false, 'MenuItem should not leave undefined `key`.');\n }\n\n // ============================= Info =============================\n var getEventInfo = function getEventInfo(e) {\n return {\n key: eventKey,\n // Note: For legacy code is reversed which not like other antd component\n keyPath: _toConsumableArray(connectedKeys).reverse(),\n item: legacyMenuItemRef.current,\n domEvent: e\n };\n };\n\n // ============================= Icon =============================\n var mergedItemIcon = itemIcon || contextItemIcon;\n\n // ============================ Active ============================\n var _useActive = useActive(eventKey, mergedDisabled, onMouseEnter, onMouseLeave),\n active = _useActive.active,\n activeProps = _objectWithoutProperties(_useActive, _excluded3);\n\n // ============================ Select ============================\n var selected = selectedKeys.includes(eventKey);\n\n // ======================== DirectionStyle ========================\n var directionStyle = useDirectionStyle(connectedKeys.length);\n\n // ============================ Events ============================\n var onInternalClick = function onInternalClick(e) {\n if (mergedDisabled) {\n return;\n }\n var info = getEventInfo(e);\n onClick === null || onClick === void 0 ? void 0 : onClick(warnItemProp(info));\n onItemClick(info);\n };\n var onInternalKeyDown = function onInternalKeyDown(e) {\n onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(e);\n if (e.which === KeyCode.ENTER) {\n var info = getEventInfo(e);\n\n // Legacy. Key will also trigger click event\n onClick === null || onClick === void 0 ? void 0 : onClick(warnItemProp(info));\n onItemClick(info);\n }\n };\n\n /**\n * Used for accessibility. Helper will focus element without key board.\n * We should manually trigger an active\n */\n var onInternalFocus = function onInternalFocus(e) {\n onActive(eventKey);\n onFocus === null || onFocus === void 0 ? void 0 : onFocus(e);\n };\n\n // ============================ Render ============================\n var optionRoleProps = {};\n if (props.role === 'option') {\n optionRoleProps['aria-selected'] = selected;\n }\n var renderNode = /*#__PURE__*/React.createElement(LegacyMenuItem, _extends({\n ref: legacyMenuItemRef,\n elementRef: mergedEleRef,\n role: role === null ? 'none' : role || 'menuitem',\n tabIndex: disabled ? null : -1,\n \"data-menu-id\": overflowDisabled && domDataId ? null : domDataId\n }, restProps, activeProps, optionRoleProps, {\n component: \"li\",\n \"aria-disabled\": disabled,\n style: _objectSpread(_objectSpread({}, directionStyle), style),\n className: classNames(itemCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(itemCls, \"-active\"), active), _defineProperty(_classNames, \"\".concat(itemCls, \"-selected\"), selected), _defineProperty(_classNames, \"\".concat(itemCls, \"-disabled\"), mergedDisabled), _classNames), className),\n onClick: onInternalClick,\n onKeyDown: onInternalKeyDown,\n onFocus: onInternalFocus\n }), children, /*#__PURE__*/React.createElement(Icon, {\n props: _objectSpread(_objectSpread({}, props), {}, {\n isSelected: selected\n }),\n icon: mergedItemIcon\n }));\n if (_internalRenderMenuItem) {\n renderNode = _internalRenderMenuItem(renderNode, props, {\n selected: selected\n });\n }\n return renderNode;\n});\nfunction MenuItem(props, ref) {\n var eventKey = props.eventKey;\n\n // ==================== Record KeyPath ====================\n var measure = useMeasure();\n var connectedKeyPath = useFullPath(eventKey);\n\n // eslint-disable-next-line consistent-return\n React.useEffect(function () {\n if (measure) {\n measure.registerPath(eventKey, connectedKeyPath);\n return function () {\n measure.unregisterPath(eventKey, connectedKeyPath);\n };\n }\n }, [connectedKeyPath]);\n if (measure) {\n return null;\n }\n\n // ======================== Render ========================\n return /*#__PURE__*/React.createElement(InternalMenuItem, _extends({}, props, {\n ref: ref\n }));\n}\nexport default /*#__PURE__*/React.forwardRef(MenuItem);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"className\", \"children\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { MenuContext } from \"../context/MenuContext\";\nvar InternalSubMenuList = function InternalSubMenuList(_ref, ref) {\n var className = _ref.className,\n children = _ref.children,\n restProps = _objectWithoutProperties(_ref, _excluded);\n var _React$useContext = React.useContext(MenuContext),\n prefixCls = _React$useContext.prefixCls,\n mode = _React$useContext.mode,\n rtl = _React$useContext.rtl;\n return /*#__PURE__*/React.createElement(\"ul\", _extends({\n className: classNames(prefixCls, rtl && \"\".concat(prefixCls, \"-rtl\"), \"\".concat(prefixCls, \"-sub\"), \"\".concat(prefixCls, \"-\").concat(mode === 'inline' ? 'inline' : 'vertical'), className),\n role: \"menu\"\n }, restProps, {\n \"data-menu-list\": true,\n ref: ref\n }), children);\n};\nvar SubMenuList = /*#__PURE__*/React.forwardRef(InternalSubMenuList);\nSubMenuList.displayName = 'SubMenuList';\nexport default SubMenuList;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport toArray from \"rc-util/es/Children/toArray\";\nimport * as React from 'react';\nexport function parseChildren(children, keyPath) {\n return toArray(children).map(function (child, index) {\n if ( /*#__PURE__*/React.isValidElement(child)) {\n var _eventKey, _child$props;\n var key = child.key;\n var eventKey = (_eventKey = (_child$props = child.props) === null || _child$props === void 0 ? void 0 : _child$props.eventKey) !== null && _eventKey !== void 0 ? _eventKey : key;\n var emptyKey = eventKey === null || eventKey === undefined;\n if (emptyKey) {\n eventKey = \"tmp_key-\".concat([].concat(_toConsumableArray(keyPath), [index]).join('-'));\n }\n var cloneProps = {\n key: eventKey,\n eventKey: eventKey\n };\n if (process.env.NODE_ENV !== 'production' && emptyKey) {\n cloneProps.warnKey = true;\n }\n return /*#__PURE__*/React.cloneElement(child, cloneProps);\n }\n return child;\n });\n}","var autoAdjustOverflow = {\n adjustX: 1,\n adjustY: 1\n};\nexport var placements = {\n topLeft: {\n points: ['bl', 'tl'],\n overflow: autoAdjustOverflow\n },\n topRight: {\n points: ['br', 'tr'],\n overflow: autoAdjustOverflow\n },\n bottomLeft: {\n points: ['tl', 'bl'],\n overflow: autoAdjustOverflow\n },\n bottomRight: {\n points: ['tr', 'br'],\n overflow: autoAdjustOverflow\n },\n leftTop: {\n points: ['tr', 'tl'],\n overflow: autoAdjustOverflow\n },\n leftBottom: {\n points: ['br', 'bl'],\n overflow: autoAdjustOverflow\n },\n rightTop: {\n points: ['tl', 'tr'],\n overflow: autoAdjustOverflow\n },\n rightBottom: {\n points: ['bl', 'br'],\n overflow: autoAdjustOverflow\n }\n};\nexport var placementsRtl = {\n topLeft: {\n points: ['bl', 'tl'],\n overflow: autoAdjustOverflow\n },\n topRight: {\n points: ['br', 'tr'],\n overflow: autoAdjustOverflow\n },\n bottomLeft: {\n points: ['tl', 'bl'],\n overflow: autoAdjustOverflow\n },\n bottomRight: {\n points: ['tr', 'br'],\n overflow: autoAdjustOverflow\n },\n rightTop: {\n points: ['tr', 'tl'],\n overflow: autoAdjustOverflow\n },\n rightBottom: {\n points: ['br', 'bl'],\n overflow: autoAdjustOverflow\n },\n leftTop: {\n points: ['tl', 'tr'],\n overflow: autoAdjustOverflow\n },\n leftBottom: {\n points: ['bl', 'br'],\n overflow: autoAdjustOverflow\n }\n};\nexport default placements;","export function getMotion(mode, motion, defaultMotions) {\n if (motion) {\n return motion;\n }\n if (defaultMotions) {\n return defaultMotions[mode] || defaultMotions.other;\n }\n return undefined;\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport Trigger from '@rc-component/trigger';\nimport classNames from 'classnames';\nimport raf from \"rc-util/es/raf\";\nimport { MenuContext } from \"../context/MenuContext\";\nimport { placements, placementsRtl } from \"../placements\";\nimport { getMotion } from \"../utils/motionUtil\";\nvar popupPlacementMap = {\n horizontal: 'bottomLeft',\n vertical: 'rightTop',\n 'vertical-left': 'rightTop',\n 'vertical-right': 'leftTop'\n};\nexport default function PopupTrigger(_ref) {\n var prefixCls = _ref.prefixCls,\n visible = _ref.visible,\n children = _ref.children,\n popup = _ref.popup,\n popupClassName = _ref.popupClassName,\n popupOffset = _ref.popupOffset,\n disabled = _ref.disabled,\n mode = _ref.mode,\n onVisibleChange = _ref.onVisibleChange;\n var _React$useContext = React.useContext(MenuContext),\n getPopupContainer = _React$useContext.getPopupContainer,\n rtl = _React$useContext.rtl,\n subMenuOpenDelay = _React$useContext.subMenuOpenDelay,\n subMenuCloseDelay = _React$useContext.subMenuCloseDelay,\n builtinPlacements = _React$useContext.builtinPlacements,\n triggerSubMenuAction = _React$useContext.triggerSubMenuAction,\n forceSubMenuRender = _React$useContext.forceSubMenuRender,\n rootClassName = _React$useContext.rootClassName,\n motion = _React$useContext.motion,\n defaultMotions = _React$useContext.defaultMotions;\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n innerVisible = _React$useState2[0],\n setInnerVisible = _React$useState2[1];\n var placement = rtl ? _objectSpread(_objectSpread({}, placementsRtl), builtinPlacements) : _objectSpread(_objectSpread({}, placements), builtinPlacements);\n var popupPlacement = popupPlacementMap[mode];\n var targetMotion = getMotion(mode, motion, defaultMotions);\n var targetMotionRef = React.useRef(targetMotion);\n if (mode !== 'inline') {\n /**\n * PopupTrigger is only used for vertical and horizontal types.\n * When collapsed is unfolded, the inline animation will destroy the vertical animation.\n */\n targetMotionRef.current = targetMotion;\n }\n var mergedMotion = _objectSpread(_objectSpread({}, targetMotionRef.current), {}, {\n leavedClassName: \"\".concat(prefixCls, \"-hidden\"),\n removeOnLeave: false,\n motionAppear: true\n });\n\n // Delay to change visible\n var visibleRef = React.useRef();\n React.useEffect(function () {\n visibleRef.current = raf(function () {\n setInnerVisible(visible);\n });\n return function () {\n raf.cancel(visibleRef.current);\n };\n }, [visible]);\n return /*#__PURE__*/React.createElement(Trigger, {\n prefixCls: prefixCls,\n popupClassName: classNames(\"\".concat(prefixCls, \"-popup\"), _defineProperty({}, \"\".concat(prefixCls, \"-rtl\"), rtl), popupClassName, rootClassName),\n stretch: mode === 'horizontal' ? 'minWidth' : null,\n getPopupContainer: getPopupContainer,\n builtinPlacements: placement,\n popupPlacement: popupPlacement,\n popupVisible: innerVisible,\n popup: popup,\n popupAlign: popupOffset && {\n offset: popupOffset\n },\n action: disabled ? [] : [triggerSubMenuAction],\n mouseEnterDelay: subMenuOpenDelay,\n mouseLeaveDelay: subMenuCloseDelay,\n onPopupVisibleChange: onVisibleChange,\n forceRender: forceSubMenuRender,\n popupMotion: mergedMotion\n }, children);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport CSSMotion from 'rc-motion';\nimport { getMotion } from \"../utils/motionUtil\";\nimport MenuContextProvider, { MenuContext } from \"../context/MenuContext\";\nimport SubMenuList from \"./SubMenuList\";\nexport default function InlineSubMenuList(_ref) {\n var id = _ref.id,\n open = _ref.open,\n keyPath = _ref.keyPath,\n children = _ref.children;\n var fixedMode = 'inline';\n var _React$useContext = React.useContext(MenuContext),\n prefixCls = _React$useContext.prefixCls,\n forceSubMenuRender = _React$useContext.forceSubMenuRender,\n motion = _React$useContext.motion,\n defaultMotions = _React$useContext.defaultMotions,\n mode = _React$useContext.mode;\n\n // Always use latest mode check\n var sameModeRef = React.useRef(false);\n sameModeRef.current = mode === fixedMode;\n\n // We record `destroy` mark here since when mode change from `inline` to others.\n // The inline list should remove when motion end.\n var _React$useState = React.useState(!sameModeRef.current),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n destroy = _React$useState2[0],\n setDestroy = _React$useState2[1];\n var mergedOpen = sameModeRef.current ? open : false;\n\n // ================================= Effect =================================\n // Reset destroy state when mode change back\n React.useEffect(function () {\n if (sameModeRef.current) {\n setDestroy(false);\n }\n }, [mode]);\n\n // ================================= Render =================================\n var mergedMotion = _objectSpread({}, getMotion(fixedMode, motion, defaultMotions));\n\n // No need appear since nest inlineCollapse changed\n if (keyPath.length > 1) {\n mergedMotion.motionAppear = false;\n }\n\n // Hide inline list when mode changed and motion end\n var originOnVisibleChanged = mergedMotion.onVisibleChanged;\n mergedMotion.onVisibleChanged = function (newVisible) {\n if (!sameModeRef.current && !newVisible) {\n setDestroy(true);\n }\n return originOnVisibleChanged === null || originOnVisibleChanged === void 0 ? void 0 : originOnVisibleChanged(newVisible);\n };\n if (destroy) {\n return null;\n }\n return /*#__PURE__*/React.createElement(MenuContextProvider, {\n mode: fixedMode,\n locked: !sameModeRef.current\n }, /*#__PURE__*/React.createElement(CSSMotion, _extends({\n visible: mergedOpen\n }, mergedMotion, {\n forceRender: forceSubMenuRender,\n removeOnLeave: false,\n leavedClassName: \"\".concat(prefixCls, \"-hidden\")\n }), function (_ref2) {\n var motionClassName = _ref2.className,\n motionStyle = _ref2.style;\n return /*#__PURE__*/React.createElement(SubMenuList, {\n id: id,\n className: motionClassName,\n style: motionStyle\n }, children);\n }));\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"style\", \"className\", \"title\", \"eventKey\", \"warnKey\", \"disabled\", \"internalPopupClose\", \"children\", \"itemIcon\", \"expandIcon\", \"popupClassName\", \"popupOffset\", \"onClick\", \"onMouseEnter\", \"onMouseLeave\", \"onTitleClick\", \"onTitleMouseEnter\", \"onTitleMouseLeave\"],\n _excluded2 = [\"active\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport Overflow from 'rc-overflow';\nimport warning from \"rc-util/es/warning\";\nimport SubMenuList from \"./SubMenuList\";\nimport { parseChildren } from \"../utils/commonUtil\";\nimport MenuContextProvider, { MenuContext } from \"../context/MenuContext\";\nimport useMemoCallback from \"../hooks/useMemoCallback\";\nimport PopupTrigger from \"./PopupTrigger\";\nimport Icon from \"../Icon\";\nimport useActive from \"../hooks/useActive\";\nimport { warnItemProp } from \"../utils/warnUtil\";\nimport useDirectionStyle from \"../hooks/useDirectionStyle\";\nimport InlineSubMenuList from \"./InlineSubMenuList\";\nimport { PathTrackerContext, PathUserContext, useFullPath, useMeasure } from \"../context/PathContext\";\nimport { useMenuId } from \"../context/IdContext\";\nimport PrivateContext from \"../context/PrivateContext\";\nvar InternalSubMenu = function InternalSubMenu(props) {\n var _classNames;\n var style = props.style,\n className = props.className,\n title = props.title,\n eventKey = props.eventKey,\n warnKey = props.warnKey,\n disabled = props.disabled,\n internalPopupClose = props.internalPopupClose,\n children = props.children,\n itemIcon = props.itemIcon,\n expandIcon = props.expandIcon,\n popupClassName = props.popupClassName,\n popupOffset = props.popupOffset,\n onClick = props.onClick,\n onMouseEnter = props.onMouseEnter,\n onMouseLeave = props.onMouseLeave,\n onTitleClick = props.onTitleClick,\n onTitleMouseEnter = props.onTitleMouseEnter,\n onTitleMouseLeave = props.onTitleMouseLeave,\n restProps = _objectWithoutProperties(props, _excluded);\n var domDataId = useMenuId(eventKey);\n var _React$useContext = React.useContext(MenuContext),\n prefixCls = _React$useContext.prefixCls,\n mode = _React$useContext.mode,\n openKeys = _React$useContext.openKeys,\n contextDisabled = _React$useContext.disabled,\n overflowDisabled = _React$useContext.overflowDisabled,\n activeKey = _React$useContext.activeKey,\n selectedKeys = _React$useContext.selectedKeys,\n contextItemIcon = _React$useContext.itemIcon,\n contextExpandIcon = _React$useContext.expandIcon,\n onItemClick = _React$useContext.onItemClick,\n onOpenChange = _React$useContext.onOpenChange,\n onActive = _React$useContext.onActive;\n var _React$useContext2 = React.useContext(PrivateContext),\n _internalRenderSubMenuItem = _React$useContext2._internalRenderSubMenuItem;\n var _React$useContext3 = React.useContext(PathUserContext),\n isSubPathKey = _React$useContext3.isSubPathKey;\n var connectedPath = useFullPath();\n var subMenuPrefixCls = \"\".concat(prefixCls, \"-submenu\");\n var mergedDisabled = contextDisabled || disabled;\n var elementRef = React.useRef();\n var popupRef = React.useRef();\n\n // ================================ Warn ================================\n if (process.env.NODE_ENV !== 'production' && warnKey) {\n warning(false, 'SubMenu should not leave undefined `key`.');\n }\n\n // ================================ Icon ================================\n var mergedItemIcon = itemIcon || contextItemIcon;\n var mergedExpandIcon = expandIcon || contextExpandIcon;\n\n // ================================ Open ================================\n var originOpen = openKeys.includes(eventKey);\n var open = !overflowDisabled && originOpen;\n\n // =============================== Select ===============================\n var childrenSelected = isSubPathKey(selectedKeys, eventKey);\n\n // =============================== Active ===============================\n var _useActive = useActive(eventKey, mergedDisabled, onTitleMouseEnter, onTitleMouseLeave),\n active = _useActive.active,\n activeProps = _objectWithoutProperties(_useActive, _excluded2);\n\n // Fallback of active check to avoid hover on menu title or disabled item\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n childrenActive = _React$useState2[0],\n setChildrenActive = _React$useState2[1];\n var triggerChildrenActive = function triggerChildrenActive(newActive) {\n if (!mergedDisabled) {\n setChildrenActive(newActive);\n }\n };\n var onInternalMouseEnter = function onInternalMouseEnter(domEvent) {\n triggerChildrenActive(true);\n onMouseEnter === null || onMouseEnter === void 0 ? void 0 : onMouseEnter({\n key: eventKey,\n domEvent: domEvent\n });\n };\n var onInternalMouseLeave = function onInternalMouseLeave(domEvent) {\n triggerChildrenActive(false);\n onMouseLeave === null || onMouseLeave === void 0 ? void 0 : onMouseLeave({\n key: eventKey,\n domEvent: domEvent\n });\n };\n var mergedActive = React.useMemo(function () {\n if (active) {\n return active;\n }\n if (mode !== 'inline') {\n return childrenActive || isSubPathKey([activeKey], eventKey);\n }\n return false;\n }, [mode, active, activeKey, childrenActive, eventKey, isSubPathKey]);\n\n // ========================== DirectionStyle ==========================\n var directionStyle = useDirectionStyle(connectedPath.length);\n\n // =============================== Events ===============================\n // >>>> Title click\n var onInternalTitleClick = function onInternalTitleClick(e) {\n // Skip if disabled\n if (mergedDisabled) {\n return;\n }\n onTitleClick === null || onTitleClick === void 0 ? void 0 : onTitleClick({\n key: eventKey,\n domEvent: e\n });\n\n // Trigger open by click when mode is `inline`\n if (mode === 'inline') {\n onOpenChange(eventKey, !originOpen);\n }\n };\n\n // >>>> Context for children click\n var onMergedItemClick = useMemoCallback(function (info) {\n onClick === null || onClick === void 0 ? void 0 : onClick(warnItemProp(info));\n onItemClick(info);\n });\n\n // >>>>> Visible change\n var onPopupVisibleChange = function onPopupVisibleChange(newVisible) {\n if (mode !== 'inline') {\n onOpenChange(eventKey, newVisible);\n }\n };\n\n /**\n * Used for accessibility. Helper will focus element without key board.\n * We should manually trigger an active\n */\n var onInternalFocus = function onInternalFocus() {\n onActive(eventKey);\n };\n\n // =============================== Render ===============================\n var popupId = domDataId && \"\".concat(domDataId, \"-popup\");\n\n // >>>>> Title\n var titleNode = /*#__PURE__*/React.createElement(\"div\", _extends({\n role: \"menuitem\",\n style: directionStyle,\n className: \"\".concat(subMenuPrefixCls, \"-title\"),\n tabIndex: mergedDisabled ? null : -1,\n ref: elementRef,\n title: typeof title === 'string' ? title : null,\n \"data-menu-id\": overflowDisabled && domDataId ? null : domDataId,\n \"aria-expanded\": open,\n \"aria-haspopup\": true,\n \"aria-controls\": popupId,\n \"aria-disabled\": mergedDisabled,\n onClick: onInternalTitleClick,\n onFocus: onInternalFocus\n }, activeProps), title, /*#__PURE__*/React.createElement(Icon, {\n icon: mode !== 'horizontal' ? mergedExpandIcon : null,\n props: _objectSpread(_objectSpread({}, props), {}, {\n isOpen: open,\n // [Legacy] Not sure why need this mark\n isSubMenu: true\n })\n }, /*#__PURE__*/React.createElement(\"i\", {\n className: \"\".concat(subMenuPrefixCls, \"-arrow\")\n })));\n\n // Cache mode if it change to `inline` which do not have popup motion\n var triggerModeRef = React.useRef(mode);\n if (mode !== 'inline' && connectedPath.length > 1) {\n triggerModeRef.current = 'vertical';\n } else {\n triggerModeRef.current = mode;\n }\n if (!overflowDisabled) {\n var triggerMode = triggerModeRef.current;\n\n // Still wrap with Trigger here since we need avoid react re-mount dom node\n // Which makes motion failed\n titleNode = /*#__PURE__*/React.createElement(PopupTrigger, {\n mode: triggerMode,\n prefixCls: subMenuPrefixCls,\n visible: !internalPopupClose && open && mode !== 'inline',\n popupClassName: popupClassName,\n popupOffset: popupOffset,\n popup: /*#__PURE__*/React.createElement(MenuContextProvider\n // Special handle of horizontal mode\n , {\n mode: triggerMode === 'horizontal' ? 'vertical' : triggerMode\n }, /*#__PURE__*/React.createElement(SubMenuList, {\n id: popupId,\n ref: popupRef\n }, children)),\n disabled: mergedDisabled,\n onVisibleChange: onPopupVisibleChange\n }, titleNode);\n }\n\n // >>>>> List node\n var listNode = /*#__PURE__*/React.createElement(Overflow.Item, _extends({\n role: \"none\"\n }, restProps, {\n component: \"li\",\n style: style,\n className: classNames(subMenuPrefixCls, \"\".concat(subMenuPrefixCls, \"-\").concat(mode), className, (_classNames = {}, _defineProperty(_classNames, \"\".concat(subMenuPrefixCls, \"-open\"), open), _defineProperty(_classNames, \"\".concat(subMenuPrefixCls, \"-active\"), mergedActive), _defineProperty(_classNames, \"\".concat(subMenuPrefixCls, \"-selected\"), childrenSelected), _defineProperty(_classNames, \"\".concat(subMenuPrefixCls, \"-disabled\"), mergedDisabled), _classNames)),\n onMouseEnter: onInternalMouseEnter,\n onMouseLeave: onInternalMouseLeave\n }), titleNode, !overflowDisabled && /*#__PURE__*/React.createElement(InlineSubMenuList, {\n id: popupId,\n open: open,\n keyPath: connectedPath\n }, children));\n if (_internalRenderSubMenuItem) {\n listNode = _internalRenderSubMenuItem(listNode, props, {\n selected: childrenSelected,\n active: mergedActive,\n open: open,\n disabled: mergedDisabled\n });\n }\n\n // >>>>> Render\n return /*#__PURE__*/React.createElement(MenuContextProvider, {\n onItemClick: onMergedItemClick,\n mode: mode === 'horizontal' ? 'vertical' : mode,\n itemIcon: mergedItemIcon,\n expandIcon: mergedExpandIcon\n }, listNode);\n};\nexport default function SubMenu(props) {\n var eventKey = props.eventKey,\n children = props.children;\n var connectedKeyPath = useFullPath(eventKey);\n var childList = parseChildren(children, connectedKeyPath);\n\n // ==================== Record KeyPath ====================\n var measure = useMeasure();\n\n // eslint-disable-next-line consistent-return\n React.useEffect(function () {\n if (measure) {\n measure.registerPath(eventKey, connectedKeyPath);\n return function () {\n measure.unregisterPath(eventKey, connectedKeyPath);\n };\n }\n }, [connectedKeyPath]);\n var renderNode;\n\n // ======================== Render ========================\n if (measure) {\n renderNode = childList;\n } else {\n renderNode = /*#__PURE__*/React.createElement(InternalSubMenu, props, childList);\n }\n return /*#__PURE__*/React.createElement(PathTrackerContext.Provider, {\n value: connectedKeyPath\n }, renderNode);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"className\", \"title\", \"eventKey\", \"children\"],\n _excluded2 = [\"children\"];\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport { MenuContext } from \"./context/MenuContext\";\nimport { useFullPath, useMeasure } from \"./context/PathContext\";\nimport { parseChildren } from \"./utils/commonUtil\";\nvar InternalMenuItemGroup = function InternalMenuItemGroup(_ref) {\n var className = _ref.className,\n title = _ref.title,\n eventKey = _ref.eventKey,\n children = _ref.children,\n restProps = _objectWithoutProperties(_ref, _excluded);\n var _React$useContext = React.useContext(MenuContext),\n prefixCls = _React$useContext.prefixCls;\n var groupPrefixCls = \"\".concat(prefixCls, \"-item-group\");\n return /*#__PURE__*/React.createElement(\"li\", _extends({\n role: \"presentation\"\n }, restProps, {\n onClick: function onClick(e) {\n return e.stopPropagation();\n },\n className: classNames(groupPrefixCls, className)\n }), /*#__PURE__*/React.createElement(\"div\", {\n role: \"presentation\",\n className: \"\".concat(groupPrefixCls, \"-title\"),\n title: typeof title === 'string' ? title : undefined\n }, title), /*#__PURE__*/React.createElement(\"ul\", {\n role: \"group\",\n className: \"\".concat(groupPrefixCls, \"-list\")\n }, children));\n};\nexport default function MenuItemGroup(_ref2) {\n var children = _ref2.children,\n props = _objectWithoutProperties(_ref2, _excluded2);\n var connectedKeyPath = useFullPath(props.eventKey);\n var childList = parseChildren(children, connectedKeyPath);\n var measure = useMeasure();\n if (measure) {\n return childList;\n }\n return /*#__PURE__*/React.createElement(InternalMenuItemGroup, omit(props, ['warnKey']), childList);\n}","import * as React from 'react';\nimport classNames from 'classnames';\nimport { MenuContext } from \"./context/MenuContext\";\nimport { useMeasure } from \"./context/PathContext\";\nexport default function Divider(_ref) {\n var className = _ref.className,\n style = _ref.style;\n var _React$useContext = React.useContext(MenuContext),\n prefixCls = _React$useContext.prefixCls;\n var measure = useMeasure();\n if (measure) {\n return null;\n }\n return /*#__PURE__*/React.createElement(\"li\", {\n className: classNames(\"\".concat(prefixCls, \"-item-divider\"), className),\n style: style\n });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar _excluded = [\"label\", \"children\", \"key\", \"type\"];\nimport * as React from 'react';\nimport MenuItemGroup from \"../MenuItemGroup\";\nimport SubMenu from \"../SubMenu\";\nimport Divider from \"../Divider\";\nimport MenuItem from \"../MenuItem\";\nimport { parseChildren } from \"./commonUtil\";\nfunction convertItemsToNodes(list) {\n return (list || []).map(function (opt, index) {\n if (opt && _typeof(opt) === 'object') {\n var _ref = opt,\n label = _ref.label,\n children = _ref.children,\n key = _ref.key,\n type = _ref.type,\n restProps = _objectWithoutProperties(_ref, _excluded);\n var mergedKey = key !== null && key !== void 0 ? key : \"tmp-\".concat(index);\n\n // MenuItemGroup & SubMenuItem\n if (children || type === 'group') {\n if (type === 'group') {\n // Group\n return /*#__PURE__*/React.createElement(MenuItemGroup, _extends({\n key: mergedKey\n }, restProps, {\n title: label\n }), convertItemsToNodes(children));\n }\n\n // Sub Menu\n return /*#__PURE__*/React.createElement(SubMenu, _extends({\n key: mergedKey\n }, restProps, {\n title: label\n }), convertItemsToNodes(children));\n }\n\n // MenuItem & Divider\n if (type === 'divider') {\n return /*#__PURE__*/React.createElement(Divider, _extends({\n key: mergedKey\n }, restProps));\n }\n return /*#__PURE__*/React.createElement(MenuItem, _extends({\n key: mergedKey\n }, restProps), label);\n }\n return null;\n }).filter(function (opt) {\n return opt;\n });\n}\nexport function parseItems(children, items, keyPath) {\n var childNodes = children;\n if (items) {\n childNodes = convertItemsToNodes(items);\n }\n return parseChildren(childNodes, keyPath);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"rootClassName\", \"style\", \"className\", \"tabIndex\", \"items\", \"children\", \"direction\", \"id\", \"mode\", \"inlineCollapsed\", \"disabled\", \"disabledOverflow\", \"subMenuOpenDelay\", \"subMenuCloseDelay\", \"forceSubMenuRender\", \"defaultOpenKeys\", \"openKeys\", \"activeKey\", \"defaultActiveFirst\", \"selectable\", \"multiple\", \"defaultSelectedKeys\", \"selectedKeys\", \"onSelect\", \"onDeselect\", \"inlineIndent\", \"motion\", \"defaultMotions\", \"triggerSubMenuAction\", \"builtinPlacements\", \"itemIcon\", \"expandIcon\", \"overflowedIndicator\", \"overflowedIndicatorPopupClassName\", \"getPopupContainer\", \"onClick\", \"onOpenChange\", \"onKeyDown\", \"openAnimation\", \"openTransitionName\", \"_internalRenderMenuItem\", \"_internalRenderSubMenuItem\"];\nimport classNames from 'classnames';\nimport Overflow from 'rc-overflow';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport warning from \"rc-util/es/warning\";\nimport * as React from 'react';\nimport { useImperativeHandle } from 'react';\nimport { flushSync } from 'react-dom';\nimport isEqual from \"rc-util/es/isEqual\";\nimport { getMenuId, IdContext } from \"./context/IdContext\";\nimport MenuContextProvider from \"./context/MenuContext\";\nimport { PathRegisterContext, PathUserContext } from \"./context/PathContext\";\nimport PrivateContext from \"./context/PrivateContext\";\nimport useAccessibility from \"./hooks/useAccessibility\";\nimport useKeyRecords, { OVERFLOW_KEY } from \"./hooks/useKeyRecords\";\nimport useMemoCallback from \"./hooks/useMemoCallback\";\nimport useUUID from \"./hooks/useUUID\";\nimport MenuItem from \"./MenuItem\";\nimport SubMenu from \"./SubMenu\";\nimport { parseItems } from \"./utils/nodeUtil\";\nimport { warnItemProp } from \"./utils/warnUtil\";\n\n/**\n * Menu modify after refactor:\n * ## Add\n * - disabled\n *\n * ## Remove\n * - openTransitionName\n * - openAnimation\n * - onDestroy\n * - siderCollapsed: Seems antd do not use this prop (Need test in antd)\n * - collapsedWidth: Seems this logic should be handle by antd Layout.Sider\n */\n\n// optimize for render\nvar EMPTY_LIST = [];\nvar Menu = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _childList$, _classNames;\n var _ref = props,\n _ref$prefixCls = _ref.prefixCls,\n prefixCls = _ref$prefixCls === void 0 ? 'rc-menu' : _ref$prefixCls,\n rootClassName = _ref.rootClassName,\n style = _ref.style,\n className = _ref.className,\n _ref$tabIndex = _ref.tabIndex,\n tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex,\n items = _ref.items,\n children = _ref.children,\n direction = _ref.direction,\n id = _ref.id,\n _ref$mode = _ref.mode,\n mode = _ref$mode === void 0 ? 'vertical' : _ref$mode,\n inlineCollapsed = _ref.inlineCollapsed,\n disabled = _ref.disabled,\n disabledOverflow = _ref.disabledOverflow,\n _ref$subMenuOpenDelay = _ref.subMenuOpenDelay,\n subMenuOpenDelay = _ref$subMenuOpenDelay === void 0 ? 0.1 : _ref$subMenuOpenDelay,\n _ref$subMenuCloseDela = _ref.subMenuCloseDelay,\n subMenuCloseDelay = _ref$subMenuCloseDela === void 0 ? 0.1 : _ref$subMenuCloseDela,\n forceSubMenuRender = _ref.forceSubMenuRender,\n defaultOpenKeys = _ref.defaultOpenKeys,\n openKeys = _ref.openKeys,\n activeKey = _ref.activeKey,\n defaultActiveFirst = _ref.defaultActiveFirst,\n _ref$selectable = _ref.selectable,\n selectable = _ref$selectable === void 0 ? true : _ref$selectable,\n _ref$multiple = _ref.multiple,\n multiple = _ref$multiple === void 0 ? false : _ref$multiple,\n defaultSelectedKeys = _ref.defaultSelectedKeys,\n selectedKeys = _ref.selectedKeys,\n onSelect = _ref.onSelect,\n onDeselect = _ref.onDeselect,\n _ref$inlineIndent = _ref.inlineIndent,\n inlineIndent = _ref$inlineIndent === void 0 ? 24 : _ref$inlineIndent,\n motion = _ref.motion,\n defaultMotions = _ref.defaultMotions,\n _ref$triggerSubMenuAc = _ref.triggerSubMenuAction,\n triggerSubMenuAction = _ref$triggerSubMenuAc === void 0 ? 'hover' : _ref$triggerSubMenuAc,\n builtinPlacements = _ref.builtinPlacements,\n itemIcon = _ref.itemIcon,\n expandIcon = _ref.expandIcon,\n _ref$overflowedIndica = _ref.overflowedIndicator,\n overflowedIndicator = _ref$overflowedIndica === void 0 ? '...' : _ref$overflowedIndica,\n overflowedIndicatorPopupClassName = _ref.overflowedIndicatorPopupClassName,\n getPopupContainer = _ref.getPopupContainer,\n onClick = _ref.onClick,\n onOpenChange = _ref.onOpenChange,\n onKeyDown = _ref.onKeyDown,\n openAnimation = _ref.openAnimation,\n openTransitionName = _ref.openTransitionName,\n _internalRenderMenuItem = _ref._internalRenderMenuItem,\n _internalRenderSubMenuItem = _ref._internalRenderSubMenuItem,\n restProps = _objectWithoutProperties(_ref, _excluded);\n var childList = React.useMemo(function () {\n return parseItems(children, items, EMPTY_LIST);\n }, [children, items]);\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n mounted = _React$useState2[0],\n setMounted = _React$useState2[1];\n var containerRef = React.useRef();\n var uuid = useUUID(id);\n var isRtl = direction === 'rtl';\n\n // ========================= Warn =========================\n if (process.env.NODE_ENV !== 'production') {\n warning(!openAnimation && !openTransitionName, '`openAnimation` and `openTransitionName` is removed. Please use `motion` or `defaultMotion` instead.');\n }\n\n // ========================= Open =========================\n var _useMergedState = useMergedState(defaultOpenKeys, {\n value: openKeys,\n postState: function postState(keys) {\n return keys || EMPTY_LIST;\n }\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n mergedOpenKeys = _useMergedState2[0],\n setMergedOpenKeys = _useMergedState2[1];\n\n // React 18 will merge mouse event which means we open key will not sync\n // ref: https://github.com/ant-design/ant-design/issues/38818\n var triggerOpenKeys = function triggerOpenKeys(keys) {\n var forceFlush = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n function doUpdate() {\n setMergedOpenKeys(keys);\n onOpenChange === null || onOpenChange === void 0 ? void 0 : onOpenChange(keys);\n }\n if (forceFlush) {\n flushSync(doUpdate);\n } else {\n doUpdate();\n }\n };\n\n // >>>>> Cache & Reset open keys when inlineCollapsed changed\n var _React$useState3 = React.useState(mergedOpenKeys),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n inlineCacheOpenKeys = _React$useState4[0],\n setInlineCacheOpenKeys = _React$useState4[1];\n var mountRef = React.useRef(false);\n\n // ========================= Mode =========================\n var _React$useMemo = React.useMemo(function () {\n if ((mode === 'inline' || mode === 'vertical') && inlineCollapsed) {\n return ['vertical', inlineCollapsed];\n }\n return [mode, false];\n }, [mode, inlineCollapsed]),\n _React$useMemo2 = _slicedToArray(_React$useMemo, 2),\n mergedMode = _React$useMemo2[0],\n mergedInlineCollapsed = _React$useMemo2[1];\n var isInlineMode = mergedMode === 'inline';\n var _React$useState5 = React.useState(mergedMode),\n _React$useState6 = _slicedToArray(_React$useState5, 2),\n internalMode = _React$useState6[0],\n setInternalMode = _React$useState6[1];\n var _React$useState7 = React.useState(mergedInlineCollapsed),\n _React$useState8 = _slicedToArray(_React$useState7, 2),\n internalInlineCollapsed = _React$useState8[0],\n setInternalInlineCollapsed = _React$useState8[1];\n React.useEffect(function () {\n setInternalMode(mergedMode);\n setInternalInlineCollapsed(mergedInlineCollapsed);\n if (!mountRef.current) {\n return;\n }\n // Synchronously update MergedOpenKeys\n if (isInlineMode) {\n setMergedOpenKeys(inlineCacheOpenKeys);\n } else {\n // Trigger open event in case its in control\n triggerOpenKeys(EMPTY_LIST);\n }\n }, [mergedMode, mergedInlineCollapsed]);\n\n // ====================== Responsive ======================\n var _React$useState9 = React.useState(0),\n _React$useState10 = _slicedToArray(_React$useState9, 2),\n lastVisibleIndex = _React$useState10[0],\n setLastVisibleIndex = _React$useState10[1];\n var allVisible = lastVisibleIndex >= childList.length - 1 || internalMode !== 'horizontal' || disabledOverflow;\n\n // Cache\n React.useEffect(function () {\n if (isInlineMode) {\n setInlineCacheOpenKeys(mergedOpenKeys);\n }\n }, [mergedOpenKeys]);\n React.useEffect(function () {\n mountRef.current = true;\n return function () {\n mountRef.current = false;\n };\n }, []);\n\n // ========================= Path =========================\n var _useKeyRecords = useKeyRecords(),\n registerPath = _useKeyRecords.registerPath,\n unregisterPath = _useKeyRecords.unregisterPath,\n refreshOverflowKeys = _useKeyRecords.refreshOverflowKeys,\n isSubPathKey = _useKeyRecords.isSubPathKey,\n getKeyPath = _useKeyRecords.getKeyPath,\n getKeys = _useKeyRecords.getKeys,\n getSubPathKeys = _useKeyRecords.getSubPathKeys;\n var registerPathContext = React.useMemo(function () {\n return {\n registerPath: registerPath,\n unregisterPath: unregisterPath\n };\n }, [registerPath, unregisterPath]);\n var pathUserContext = React.useMemo(function () {\n return {\n isSubPathKey: isSubPathKey\n };\n }, [isSubPathKey]);\n React.useEffect(function () {\n refreshOverflowKeys(allVisible ? EMPTY_LIST : childList.slice(lastVisibleIndex + 1).map(function (child) {\n return child.key;\n }));\n }, [lastVisibleIndex, allVisible]);\n\n // ======================== Active ========================\n var _useMergedState3 = useMergedState(activeKey || defaultActiveFirst && ((_childList$ = childList[0]) === null || _childList$ === void 0 ? void 0 : _childList$.key), {\n value: activeKey\n }),\n _useMergedState4 = _slicedToArray(_useMergedState3, 2),\n mergedActiveKey = _useMergedState4[0],\n setMergedActiveKey = _useMergedState4[1];\n var onActive = useMemoCallback(function (key) {\n setMergedActiveKey(key);\n });\n var onInactive = useMemoCallback(function () {\n setMergedActiveKey(undefined);\n });\n useImperativeHandle(ref, function () {\n return {\n list: containerRef.current,\n focus: function focus(options) {\n var _childList$find;\n var shouldFocusKey = mergedActiveKey !== null && mergedActiveKey !== void 0 ? mergedActiveKey : (_childList$find = childList.find(function (node) {\n return !node.props.disabled;\n })) === null || _childList$find === void 0 ? void 0 : _childList$find.key;\n if (shouldFocusKey) {\n var _containerRef$current, _containerRef$current2, _containerRef$current3;\n (_containerRef$current = containerRef.current) === null || _containerRef$current === void 0 ? void 0 : (_containerRef$current2 = _containerRef$current.querySelector(\"li[data-menu-id='\".concat(getMenuId(uuid, shouldFocusKey), \"']\"))) === null || _containerRef$current2 === void 0 ? void 0 : (_containerRef$current3 = _containerRef$current2.focus) === null || _containerRef$current3 === void 0 ? void 0 : _containerRef$current3.call(_containerRef$current2, options);\n }\n }\n };\n });\n\n // ======================== Select ========================\n // >>>>> Select keys\n var _useMergedState5 = useMergedState(defaultSelectedKeys || [], {\n value: selectedKeys,\n // Legacy convert key to array\n postState: function postState(keys) {\n if (Array.isArray(keys)) {\n return keys;\n }\n if (keys === null || keys === undefined) {\n return EMPTY_LIST;\n }\n return [keys];\n }\n }),\n _useMergedState6 = _slicedToArray(_useMergedState5, 2),\n mergedSelectKeys = _useMergedState6[0],\n setMergedSelectKeys = _useMergedState6[1];\n\n // >>>>> Trigger select\n var triggerSelection = function triggerSelection(info) {\n if (selectable) {\n // Insert or Remove\n var targetKey = info.key;\n var exist = mergedSelectKeys.includes(targetKey);\n var newSelectKeys;\n if (multiple) {\n if (exist) {\n newSelectKeys = mergedSelectKeys.filter(function (key) {\n return key !== targetKey;\n });\n } else {\n newSelectKeys = [].concat(_toConsumableArray(mergedSelectKeys), [targetKey]);\n }\n } else {\n newSelectKeys = [targetKey];\n }\n setMergedSelectKeys(newSelectKeys);\n\n // Trigger event\n var selectInfo = _objectSpread(_objectSpread({}, info), {}, {\n selectedKeys: newSelectKeys\n });\n if (exist) {\n onDeselect === null || onDeselect === void 0 ? void 0 : onDeselect(selectInfo);\n } else {\n onSelect === null || onSelect === void 0 ? void 0 : onSelect(selectInfo);\n }\n }\n\n // Whatever selectable, always close it\n if (!multiple && mergedOpenKeys.length && internalMode !== 'inline') {\n triggerOpenKeys(EMPTY_LIST);\n }\n };\n\n // ========================= Open =========================\n /**\n * Click for item. SubMenu do not have selection status\n */\n var onInternalClick = useMemoCallback(function (info) {\n onClick === null || onClick === void 0 ? void 0 : onClick(warnItemProp(info));\n triggerSelection(info);\n });\n var onInternalOpenChange = useMemoCallback(function (key, open) {\n var newOpenKeys = mergedOpenKeys.filter(function (k) {\n return k !== key;\n });\n if (open) {\n newOpenKeys.push(key);\n } else if (internalMode !== 'inline') {\n // We need find all related popup to close\n var subPathKeys = getSubPathKeys(key);\n newOpenKeys = newOpenKeys.filter(function (k) {\n return !subPathKeys.has(k);\n });\n }\n if (!isEqual(mergedOpenKeys, newOpenKeys, true)) {\n triggerOpenKeys(newOpenKeys, true);\n }\n });\n\n // ==================== Accessibility =====================\n var triggerAccessibilityOpen = function triggerAccessibilityOpen(key, open) {\n var nextOpen = open !== null && open !== void 0 ? open : !mergedOpenKeys.includes(key);\n onInternalOpenChange(key, nextOpen);\n };\n var onInternalKeyDown = useAccessibility(internalMode, mergedActiveKey, isRtl, uuid, containerRef, getKeys, getKeyPath, setMergedActiveKey, triggerAccessibilityOpen, onKeyDown);\n\n // ======================== Effect ========================\n React.useEffect(function () {\n setMounted(true);\n }, []);\n\n // ======================= Context ========================\n var privateContext = React.useMemo(function () {\n return {\n _internalRenderMenuItem: _internalRenderMenuItem,\n _internalRenderSubMenuItem: _internalRenderSubMenuItem\n };\n }, [_internalRenderMenuItem, _internalRenderSubMenuItem]);\n\n // ======================== Render ========================\n\n // >>>>> Children\n var wrappedChildList = internalMode !== 'horizontal' || disabledOverflow ? childList :\n // Need wrap for overflow dropdown that do not response for open\n childList.map(function (child, index) {\n return /*#__PURE__*/(\n // Always wrap provider to avoid sub node re-mount\n React.createElement(MenuContextProvider, {\n key: child.key,\n overflowDisabled: index > lastVisibleIndex\n }, child)\n );\n });\n\n // >>>>> Container\n var container = /*#__PURE__*/React.createElement(Overflow, _extends({\n id: id,\n ref: containerRef,\n prefixCls: \"\".concat(prefixCls, \"-overflow\"),\n component: \"ul\",\n itemComponent: MenuItem,\n className: classNames(prefixCls, \"\".concat(prefixCls, \"-root\"), \"\".concat(prefixCls, \"-\").concat(internalMode), className, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-inline-collapsed\"), internalInlineCollapsed), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), isRtl), _classNames), rootClassName),\n dir: direction,\n style: style,\n role: \"menu\",\n tabIndex: tabIndex,\n data: wrappedChildList,\n renderRawItem: function renderRawItem(node) {\n return node;\n },\n renderRawRest: function renderRawRest(omitItems) {\n // We use origin list since wrapped list use context to prevent open\n var len = omitItems.length;\n var originOmitItems = len ? childList.slice(-len) : null;\n return /*#__PURE__*/React.createElement(SubMenu, {\n eventKey: OVERFLOW_KEY,\n title: overflowedIndicator,\n disabled: allVisible,\n internalPopupClose: len === 0,\n popupClassName: overflowedIndicatorPopupClassName\n }, originOmitItems);\n },\n maxCount: internalMode !== 'horizontal' || disabledOverflow ? Overflow.INVALIDATE : Overflow.RESPONSIVE,\n ssr: \"full\",\n \"data-menu-list\": true,\n onVisibleChange: function onVisibleChange(newLastIndex) {\n setLastVisibleIndex(newLastIndex);\n },\n onKeyDown: onInternalKeyDown\n }, restProps));\n\n // >>>>> Render\n return /*#__PURE__*/React.createElement(PrivateContext.Provider, {\n value: privateContext\n }, /*#__PURE__*/React.createElement(IdContext.Provider, {\n value: uuid\n }, /*#__PURE__*/React.createElement(MenuContextProvider, {\n prefixCls: prefixCls,\n rootClassName: rootClassName,\n mode: internalMode,\n openKeys: mergedOpenKeys,\n rtl: isRtl\n // Disabled\n ,\n\n disabled: disabled\n // Motion\n ,\n\n motion: mounted ? motion : null,\n defaultMotions: mounted ? defaultMotions : null\n // Active\n ,\n\n activeKey: mergedActiveKey,\n onActive: onActive,\n onInactive: onInactive\n // Selection\n ,\n\n selectedKeys: mergedSelectKeys\n // Level\n ,\n\n inlineIndent: inlineIndent\n // Popup\n ,\n\n subMenuOpenDelay: subMenuOpenDelay,\n subMenuCloseDelay: subMenuCloseDelay,\n forceSubMenuRender: forceSubMenuRender,\n builtinPlacements: builtinPlacements,\n triggerSubMenuAction: triggerSubMenuAction,\n getPopupContainer: getPopupContainer\n // Icon\n ,\n\n itemIcon: itemIcon,\n expandIcon: expandIcon\n // Events\n ,\n\n onItemClick: onInternalClick,\n onOpenChange: onInternalOpenChange\n }, /*#__PURE__*/React.createElement(PathUserContext.Provider, {\n value: pathUserContext\n }, container), /*#__PURE__*/React.createElement(\"div\", {\n style: {\n display: 'none'\n },\n \"aria-hidden\": true\n }, /*#__PURE__*/React.createElement(PathRegisterContext.Provider, {\n value: registerPathContext\n }, childList)))));\n});\nexport default Menu;","import Menu from \"./Menu\";\nimport MenuItem from \"./MenuItem\";\nimport SubMenu from \"./SubMenu\";\nimport MenuItemGroup from \"./MenuItemGroup\";\nimport { useFullPath } from \"./context/PathContext\";\nimport Divider from \"./Divider\";\nexport { SubMenu, MenuItem as Item, MenuItem, MenuItemGroup, MenuItemGroup as ItemGroup, Divider, /** @private Only used for antd internal. Do not use in your production. */\nuseFullPath };\nvar ExportMenu = Menu;\nExportMenu.Item = MenuItem;\nExportMenu.SubMenu = SubMenu;\nExportMenu.ItemGroup = MenuItemGroup;\nExportMenu.Divider = Divider;\nexport default ExportMenu;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport classNames from 'classnames';\nimport Dropdown from 'rc-dropdown';\nimport Menu, { MenuItem } from 'rc-menu';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport AddButton from \"./AddButton\";\nimport { getRemovable } from \"../util\";\nfunction OperationNode(_ref, ref) {\n var prefixCls = _ref.prefixCls,\n id = _ref.id,\n tabs = _ref.tabs,\n locale = _ref.locale,\n mobile = _ref.mobile,\n _ref$moreIcon = _ref.moreIcon,\n moreIcon = _ref$moreIcon === void 0 ? 'More' : _ref$moreIcon,\n moreTransitionName = _ref.moreTransitionName,\n style = _ref.style,\n className = _ref.className,\n editable = _ref.editable,\n tabBarGutter = _ref.tabBarGutter,\n rtl = _ref.rtl,\n removeAriaLabel = _ref.removeAriaLabel,\n onTabClick = _ref.onTabClick,\n getPopupContainer = _ref.getPopupContainer,\n popupClassName = _ref.popupClassName;\n // ======================== Dropdown ========================\n var _useState = useState(false),\n _useState2 = _slicedToArray(_useState, 2),\n open = _useState2[0],\n setOpen = _useState2[1];\n var _useState3 = useState(null),\n _useState4 = _slicedToArray(_useState3, 2),\n selectedKey = _useState4[0],\n setSelectedKey = _useState4[1];\n var popupId = \"\".concat(id, \"-more-popup\");\n var dropdownPrefix = \"\".concat(prefixCls, \"-dropdown\");\n var selectedItemId = selectedKey !== null ? \"\".concat(popupId, \"-\").concat(selectedKey) : null;\n var dropdownAriaLabel = locale === null || locale === void 0 ? void 0 : locale.dropdownAriaLabel;\n function onRemoveTab(event, key) {\n event.preventDefault();\n event.stopPropagation();\n editable.onEdit('remove', {\n key: key,\n event: event\n });\n }\n var menu = /*#__PURE__*/React.createElement(Menu, {\n onClick: function onClick(_ref2) {\n var key = _ref2.key,\n domEvent = _ref2.domEvent;\n onTabClick(key, domEvent);\n setOpen(false);\n },\n prefixCls: \"\".concat(dropdownPrefix, \"-menu\"),\n id: popupId,\n tabIndex: -1,\n role: \"listbox\",\n \"aria-activedescendant\": selectedItemId,\n selectedKeys: [selectedKey],\n \"aria-label\": dropdownAriaLabel !== undefined ? dropdownAriaLabel : 'expanded dropdown'\n }, tabs.map(function (tab) {\n var closable = tab.closable,\n disabled = tab.disabled,\n closeIcon = tab.closeIcon,\n key = tab.key,\n label = tab.label;\n var removable = getRemovable(closable, closeIcon, editable, disabled);\n return /*#__PURE__*/React.createElement(MenuItem, {\n key: key,\n id: \"\".concat(popupId, \"-\").concat(key),\n role: \"option\",\n \"aria-controls\": id && \"\".concat(id, \"-panel-\").concat(key),\n disabled: disabled\n }, /*#__PURE__*/React.createElement(\"span\", null, label), removable && /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n \"aria-label\": removeAriaLabel || 'remove',\n tabIndex: 0,\n className: \"\".concat(dropdownPrefix, \"-menu-item-remove\"),\n onClick: function onClick(e) {\n e.stopPropagation();\n onRemoveTab(e, key);\n }\n }, closeIcon || editable.removeIcon || '×'));\n }));\n function selectOffset(offset) {\n var enabledTabs = tabs.filter(function (tab) {\n return !tab.disabled;\n });\n var selectedIndex = enabledTabs.findIndex(function (tab) {\n return tab.key === selectedKey;\n }) || 0;\n var len = enabledTabs.length;\n for (var i = 0; i < len; i += 1) {\n selectedIndex = (selectedIndex + offset + len) % len;\n var tab = enabledTabs[selectedIndex];\n if (!tab.disabled) {\n setSelectedKey(tab.key);\n return;\n }\n }\n }\n function onKeyDown(e) {\n var which = e.which;\n if (!open) {\n if ([KeyCode.DOWN, KeyCode.SPACE, KeyCode.ENTER].includes(which)) {\n setOpen(true);\n e.preventDefault();\n }\n return;\n }\n switch (which) {\n case KeyCode.UP:\n selectOffset(-1);\n e.preventDefault();\n break;\n case KeyCode.DOWN:\n selectOffset(1);\n e.preventDefault();\n break;\n case KeyCode.ESC:\n setOpen(false);\n break;\n case KeyCode.SPACE:\n case KeyCode.ENTER:\n if (selectedKey !== null) onTabClick(selectedKey, e);\n break;\n }\n }\n\n // ========================= Effect =========================\n useEffect(function () {\n // We use query element here to avoid React strict warning\n var ele = document.getElementById(selectedItemId);\n if (ele && ele.scrollIntoView) {\n ele.scrollIntoView(false);\n }\n }, [selectedKey]);\n useEffect(function () {\n if (!open) {\n setSelectedKey(null);\n }\n }, [open]);\n\n // ========================= Render =========================\n var moreStyle = _defineProperty({}, rtl ? 'marginRight' : 'marginLeft', tabBarGutter);\n if (!tabs.length) {\n moreStyle.visibility = 'hidden';\n moreStyle.order = 1;\n }\n var overlayClassName = classNames(_defineProperty({}, \"\".concat(dropdownPrefix, \"-rtl\"), rtl));\n var moreNode = mobile ? null : /*#__PURE__*/React.createElement(Dropdown, {\n prefixCls: dropdownPrefix,\n overlay: menu,\n trigger: ['hover'],\n visible: tabs.length ? open : false,\n transitionName: moreTransitionName,\n onVisibleChange: setOpen,\n overlayClassName: classNames(overlayClassName, popupClassName),\n mouseEnterDelay: 0.1,\n mouseLeaveDelay: 0.1,\n getPopupContainer: getPopupContainer\n }, /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n className: \"\".concat(prefixCls, \"-nav-more\"),\n style: moreStyle,\n tabIndex: -1,\n \"aria-hidden\": \"true\",\n \"aria-haspopup\": \"listbox\",\n \"aria-controls\": popupId,\n id: \"\".concat(id, \"-more\"),\n \"aria-expanded\": open,\n onKeyDown: onKeyDown\n }, moreIcon));\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-nav-operations\"), className),\n style: style,\n ref: ref\n }, moreNode, /*#__PURE__*/React.createElement(AddButton, {\n prefixCls: prefixCls,\n locale: locale,\n editable: editable\n }));\n}\nexport default /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(OperationNode), function (_, next) {\n return (\n // https://github.com/ant-design/ant-design/issues/32544\n // We'd better remove syntactic sugar in `rc-menu` since this has perf issue\n next.tabMoving\n );\n});","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport classNames from 'classnames';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport * as React from 'react';\nimport { genDataNodeKey, getRemovable } from \"../util\";\nfunction TabNode(_ref) {\n var _classNames;\n var prefixCls = _ref.prefixCls,\n id = _ref.id,\n active = _ref.active,\n _ref$tab = _ref.tab,\n key = _ref$tab.key,\n label = _ref$tab.label,\n disabled = _ref$tab.disabled,\n closeIcon = _ref$tab.closeIcon,\n closable = _ref.closable,\n renderWrapper = _ref.renderWrapper,\n removeAriaLabel = _ref.removeAriaLabel,\n editable = _ref.editable,\n onClick = _ref.onClick,\n onFocus = _ref.onFocus,\n style = _ref.style;\n var tabPrefix = \"\".concat(prefixCls, \"-tab\");\n var removable = getRemovable(closable, closeIcon, editable, disabled);\n function onInternalClick(e) {\n if (disabled) {\n return;\n }\n onClick(e);\n }\n function onRemoveTab(event) {\n event.preventDefault();\n event.stopPropagation();\n editable.onEdit('remove', {\n key: key,\n event: event\n });\n }\n var node = /*#__PURE__*/React.createElement(\"div\", {\n key: key\n // ref={ref}\n ,\n\n \"data-node-key\": genDataNodeKey(key),\n className: classNames(tabPrefix, (_classNames = {}, _defineProperty(_classNames, \"\".concat(tabPrefix, \"-with-remove\"), removable), _defineProperty(_classNames, \"\".concat(tabPrefix, \"-active\"), active), _defineProperty(_classNames, \"\".concat(tabPrefix, \"-disabled\"), disabled), _classNames)),\n style: style,\n onClick: onInternalClick\n }, /*#__PURE__*/React.createElement(\"div\", {\n role: \"tab\",\n \"aria-selected\": active,\n id: id && \"\".concat(id, \"-tab-\").concat(key),\n className: \"\".concat(tabPrefix, \"-btn\"),\n \"aria-controls\": id && \"\".concat(id, \"-panel-\").concat(key),\n \"aria-disabled\": disabled,\n tabIndex: disabled ? null : 0,\n onClick: function onClick(e) {\n e.stopPropagation();\n onInternalClick(e);\n },\n onKeyDown: function onKeyDown(e) {\n if ([KeyCode.SPACE, KeyCode.ENTER].includes(e.which)) {\n e.preventDefault();\n onInternalClick(e);\n }\n },\n onFocus: onFocus\n }, label), removable && /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n \"aria-label\": removeAriaLabel || 'remove',\n tabIndex: 0,\n className: \"\".concat(tabPrefix, \"-remove\"),\n onClick: function onClick(e) {\n e.stopPropagation();\n onRemoveTab(e);\n }\n }, closeIcon || editable.removeIcon || '×'));\n return renderWrapper ? renderWrapper(node) : node;\n}\nexport default TabNode;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport classNames from 'classnames';\nimport ResizeObserver from 'rc-resize-observer';\nimport useEvent from \"rc-util/es/hooks/useEvent\";\nimport raf from \"rc-util/es/raf\";\nimport { useComposeRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nimport { useEffect, useRef, useState } from 'react';\nimport useOffsets from \"../hooks/useOffsets\";\nimport useSyncState from \"../hooks/useSyncState\";\nimport useTouchMove from \"../hooks/useTouchMove\";\nimport useUpdate, { useUpdateState } from \"../hooks/useUpdate\";\nimport useVisibleRange from \"../hooks/useVisibleRange\";\nimport TabContext from \"../TabContext\";\nimport { genDataNodeKey, stringify } from \"../util\";\nimport AddButton from \"./AddButton\";\nimport ExtraContent from \"./ExtraContent\";\nimport OperationNode from \"./OperationNode\";\nimport TabNode from \"./TabNode\";\nvar getSize = function getSize(refObj) {\n var _ref = refObj.current || {},\n _ref$offsetWidth = _ref.offsetWidth,\n offsetWidth = _ref$offsetWidth === void 0 ? 0 : _ref$offsetWidth,\n _ref$offsetHeight = _ref.offsetHeight,\n offsetHeight = _ref$offsetHeight === void 0 ? 0 : _ref$offsetHeight;\n return [offsetWidth, offsetHeight];\n};\n\n/**\n * Convert `SizeInfo` to unit value. Such as [123, 456] with `top` position get `123`\n */\nvar getUnitValue = function getUnitValue(size, tabPositionTopOrBottom) {\n return size[tabPositionTopOrBottom ? 0 : 1];\n};\nfunction TabNavList(props, ref) {\n var _classNames;\n var _React$useContext = React.useContext(TabContext),\n prefixCls = _React$useContext.prefixCls,\n tabs = _React$useContext.tabs;\n var className = props.className,\n style = props.style,\n id = props.id,\n animated = props.animated,\n activeKey = props.activeKey,\n rtl = props.rtl,\n extra = props.extra,\n editable = props.editable,\n locale = props.locale,\n tabPosition = props.tabPosition,\n tabBarGutter = props.tabBarGutter,\n children = props.children,\n onTabClick = props.onTabClick,\n onTabScroll = props.onTabScroll;\n var containerRef = useRef();\n var extraLeftRef = useRef();\n var extraRightRef = useRef();\n var tabsWrapperRef = useRef();\n var tabListRef = useRef();\n var operationsRef = useRef();\n var innerAddButtonRef = useRef();\n // const [getBtnRef, removeBtnRef] = useRefs();\n\n var tabPositionTopOrBottom = tabPosition === 'top' || tabPosition === 'bottom';\n var _useSyncState = useSyncState(0, function (next, prev) {\n if (tabPositionTopOrBottom && onTabScroll) {\n onTabScroll({\n direction: next > prev ? 'left' : 'right'\n });\n }\n }),\n _useSyncState2 = _slicedToArray(_useSyncState, 2),\n transformLeft = _useSyncState2[0],\n setTransformLeft = _useSyncState2[1];\n var _useSyncState3 = useSyncState(0, function (next, prev) {\n if (!tabPositionTopOrBottom && onTabScroll) {\n onTabScroll({\n direction: next > prev ? 'top' : 'bottom'\n });\n }\n }),\n _useSyncState4 = _slicedToArray(_useSyncState3, 2),\n transformTop = _useSyncState4[0],\n setTransformTop = _useSyncState4[1];\n var _useState = useState([0, 0]),\n _useState2 = _slicedToArray(_useState, 2),\n containerExcludeExtraSize = _useState2[0],\n setContainerExcludeExtraSize = _useState2[1];\n var _useState3 = useState([0, 0]),\n _useState4 = _slicedToArray(_useState3, 2),\n tabContentSize = _useState4[0],\n setTabContentSize = _useState4[1];\n var _useState5 = useState([0, 0]),\n _useState6 = _slicedToArray(_useState5, 2),\n addSize = _useState6[0],\n setAddSize = _useState6[1];\n var _useState7 = useState([0, 0]),\n _useState8 = _slicedToArray(_useState7, 2),\n operationSize = _useState8[0],\n setOperationSize = _useState8[1];\n var _useUpdateState = useUpdateState(new Map()),\n _useUpdateState2 = _slicedToArray(_useUpdateState, 2),\n tabSizes = _useUpdateState2[0],\n setTabSizes = _useUpdateState2[1];\n var tabOffsets = useOffsets(tabs, tabSizes, tabContentSize[0]);\n\n // ========================== Unit =========================\n var containerExcludeExtraSizeValue = getUnitValue(containerExcludeExtraSize, tabPositionTopOrBottom);\n var tabContentSizeValue = getUnitValue(tabContentSize, tabPositionTopOrBottom);\n var addSizeValue = getUnitValue(addSize, tabPositionTopOrBottom);\n var operationSizeValue = getUnitValue(operationSize, tabPositionTopOrBottom);\n var needScroll = containerExcludeExtraSizeValue < tabContentSizeValue + addSizeValue;\n var visibleTabContentValue = needScroll ? containerExcludeExtraSizeValue - operationSizeValue : containerExcludeExtraSizeValue - addSizeValue;\n\n // ========================== Util =========================\n var operationsHiddenClassName = \"\".concat(prefixCls, \"-nav-operations-hidden\");\n var transformMin = 0;\n var transformMax = 0;\n if (!tabPositionTopOrBottom) {\n transformMin = Math.min(0, visibleTabContentValue - tabContentSizeValue);\n transformMax = 0;\n } else if (rtl) {\n transformMin = 0;\n transformMax = Math.max(0, tabContentSizeValue - visibleTabContentValue);\n } else {\n transformMin = Math.min(0, visibleTabContentValue - tabContentSizeValue);\n transformMax = 0;\n }\n function alignInRange(value) {\n if (value < transformMin) {\n return transformMin;\n }\n if (value > transformMax) {\n return transformMax;\n }\n return value;\n }\n\n // ========================= Mobile ========================\n var touchMovingRef = useRef();\n var _useState9 = useState(),\n _useState10 = _slicedToArray(_useState9, 2),\n lockAnimation = _useState10[0],\n setLockAnimation = _useState10[1];\n function doLockAnimation() {\n setLockAnimation(Date.now());\n }\n function clearTouchMoving() {\n window.clearTimeout(touchMovingRef.current);\n }\n useTouchMove(tabsWrapperRef, function (offsetX, offsetY) {\n function doMove(setState, offset) {\n setState(function (value) {\n var newValue = alignInRange(value + offset);\n return newValue;\n });\n }\n\n // Skip scroll if place is enough\n if (!needScroll) {\n return false;\n }\n if (tabPositionTopOrBottom) {\n doMove(setTransformLeft, offsetX);\n } else {\n doMove(setTransformTop, offsetY);\n }\n clearTouchMoving();\n doLockAnimation();\n return true;\n });\n useEffect(function () {\n clearTouchMoving();\n if (lockAnimation) {\n touchMovingRef.current = window.setTimeout(function () {\n setLockAnimation(0);\n }, 100);\n }\n return clearTouchMoving;\n }, [lockAnimation]);\n\n // ===================== Visible Range =====================\n // Render tab node & collect tab offset\n var _useVisibleRange = useVisibleRange(tabOffsets,\n // Container\n visibleTabContentValue,\n // Transform\n tabPositionTopOrBottom ? transformLeft : transformTop,\n // Tabs\n tabContentSizeValue,\n // Add\n addSizeValue,\n // Operation\n operationSizeValue, _objectSpread(_objectSpread({}, props), {}, {\n tabs: tabs\n })),\n _useVisibleRange2 = _slicedToArray(_useVisibleRange, 2),\n visibleStart = _useVisibleRange2[0],\n visibleEnd = _useVisibleRange2[1];\n\n // ========================= Scroll ========================\n var scrollToTab = useEvent(function () {\n var key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : activeKey;\n var tabOffset = tabOffsets.get(key) || {\n width: 0,\n height: 0,\n left: 0,\n right: 0,\n top: 0\n };\n if (tabPositionTopOrBottom) {\n // ============ Align with top & bottom ============\n var newTransform = transformLeft;\n\n // RTL\n if (rtl) {\n if (tabOffset.right < transformLeft) {\n newTransform = tabOffset.right;\n } else if (tabOffset.right + tabOffset.width > transformLeft + visibleTabContentValue) {\n newTransform = tabOffset.right + tabOffset.width - visibleTabContentValue;\n }\n }\n // LTR\n else if (tabOffset.left < -transformLeft) {\n newTransform = -tabOffset.left;\n } else if (tabOffset.left + tabOffset.width > -transformLeft + visibleTabContentValue) {\n newTransform = -(tabOffset.left + tabOffset.width - visibleTabContentValue);\n }\n setTransformTop(0);\n setTransformLeft(alignInRange(newTransform));\n } else {\n // ============ Align with left & right ============\n var _newTransform = transformTop;\n if (tabOffset.top < -transformTop) {\n _newTransform = -tabOffset.top;\n } else if (tabOffset.top + tabOffset.height > -transformTop + visibleTabContentValue) {\n _newTransform = -(tabOffset.top + tabOffset.height - visibleTabContentValue);\n }\n setTransformLeft(0);\n setTransformTop(alignInRange(_newTransform));\n }\n });\n\n // ========================== Tab ==========================\n var tabNodeStyle = {};\n if (tabPosition === 'top' || tabPosition === 'bottom') {\n tabNodeStyle[rtl ? 'marginRight' : 'marginLeft'] = tabBarGutter;\n } else {\n tabNodeStyle.marginTop = tabBarGutter;\n }\n var tabNodes = tabs.map(function (tab, i) {\n var key = tab.key;\n return /*#__PURE__*/React.createElement(TabNode, {\n id: id,\n prefixCls: prefixCls,\n key: key,\n tab: tab\n /* first node should not have margin left */,\n style: i === 0 ? undefined : tabNodeStyle,\n closable: tab.closable,\n editable: editable,\n active: key === activeKey,\n renderWrapper: children,\n removeAriaLabel: locale === null || locale === void 0 ? void 0 : locale.removeAriaLabel,\n onClick: function onClick(e) {\n onTabClick(key, e);\n },\n onFocus: function onFocus() {\n scrollToTab(key);\n doLockAnimation();\n if (!tabsWrapperRef.current) {\n return;\n }\n // Focus element will make scrollLeft change which we should reset back\n if (!rtl) {\n tabsWrapperRef.current.scrollLeft = 0;\n }\n tabsWrapperRef.current.scrollTop = 0;\n }\n });\n });\n\n // Update buttons records\n var updateTabSizes = function updateTabSizes() {\n return setTabSizes(function () {\n var newSizes = new Map();\n tabs.forEach(function (_ref2) {\n var _tabListRef$current;\n var key = _ref2.key;\n var btnNode = (_tabListRef$current = tabListRef.current) === null || _tabListRef$current === void 0 ? void 0 : _tabListRef$current.querySelector(\"[data-node-key=\\\"\".concat(genDataNodeKey(key), \"\\\"]\"));\n if (btnNode) {\n newSizes.set(key, {\n width: btnNode.offsetWidth,\n height: btnNode.offsetHeight,\n left: btnNode.offsetLeft,\n top: btnNode.offsetTop\n });\n }\n });\n return newSizes;\n });\n };\n useEffect(function () {\n updateTabSizes();\n }, [tabs.map(function (tab) {\n return tab.key;\n }).join('_')]);\n var onListHolderResize = useUpdate(function () {\n // Update wrapper records\n var containerSize = getSize(containerRef);\n var extraLeftSize = getSize(extraLeftRef);\n var extraRightSize = getSize(extraRightRef);\n setContainerExcludeExtraSize([containerSize[0] - extraLeftSize[0] - extraRightSize[0], containerSize[1] - extraLeftSize[1] - extraRightSize[1]]);\n var newAddSize = getSize(innerAddButtonRef);\n setAddSize(newAddSize);\n var newOperationSize = getSize(operationsRef);\n setOperationSize(newOperationSize);\n\n // Which includes add button size\n var tabContentFullSize = getSize(tabListRef);\n setTabContentSize([tabContentFullSize[0] - newAddSize[0], tabContentFullSize[1] - newAddSize[1]]);\n\n // Update buttons records\n updateTabSizes();\n });\n\n // ======================== Dropdown =======================\n var startHiddenTabs = tabs.slice(0, visibleStart);\n var endHiddenTabs = tabs.slice(visibleEnd + 1);\n var hiddenTabs = [].concat(_toConsumableArray(startHiddenTabs), _toConsumableArray(endHiddenTabs));\n\n // =================== Link & Operations ===================\n var _useState11 = useState(),\n _useState12 = _slicedToArray(_useState11, 2),\n inkStyle = _useState12[0],\n setInkStyle = _useState12[1];\n var activeTabOffset = tabOffsets.get(activeKey);\n\n // Delay set ink style to avoid remove tab blink\n var inkBarRafRef = useRef();\n function cleanInkBarRaf() {\n raf.cancel(inkBarRafRef.current);\n }\n useEffect(function () {\n var newInkStyle = {};\n if (activeTabOffset) {\n if (tabPositionTopOrBottom) {\n if (rtl) {\n newInkStyle.right = activeTabOffset.right;\n } else {\n newInkStyle.left = activeTabOffset.left;\n }\n newInkStyle.width = activeTabOffset.width;\n } else {\n newInkStyle.top = activeTabOffset.top;\n newInkStyle.height = activeTabOffset.height;\n }\n }\n cleanInkBarRaf();\n inkBarRafRef.current = raf(function () {\n setInkStyle(newInkStyle);\n });\n return cleanInkBarRaf;\n }, [activeTabOffset, tabPositionTopOrBottom, rtl]);\n\n // ========================= Effect ========================\n useEffect(function () {\n scrollToTab();\n // eslint-disable-next-line\n }, [activeKey, transformMin, transformMax, stringify(activeTabOffset), stringify(tabOffsets), tabPositionTopOrBottom]);\n\n // Should recalculate when rtl changed\n useEffect(function () {\n onListHolderResize();\n // eslint-disable-next-line\n }, [rtl]);\n\n // ========================= Render ========================\n var hasDropdown = !!hiddenTabs.length;\n var wrapPrefix = \"\".concat(prefixCls, \"-nav-wrap\");\n var pingLeft;\n var pingRight;\n var pingTop;\n var pingBottom;\n if (tabPositionTopOrBottom) {\n if (rtl) {\n pingRight = transformLeft > 0;\n pingLeft = transformLeft !== transformMax;\n } else {\n pingLeft = transformLeft < 0;\n pingRight = transformLeft !== transformMin;\n }\n } else {\n pingTop = transformTop < 0;\n pingBottom = transformTop !== transformMin;\n }\n return /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: onListHolderResize\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: useComposeRef(ref, containerRef),\n role: \"tablist\",\n className: classNames(\"\".concat(prefixCls, \"-nav\"), className),\n style: style,\n onKeyDown: function onKeyDown() {\n // No need animation when use keyboard\n doLockAnimation();\n }\n }, /*#__PURE__*/React.createElement(ExtraContent, {\n ref: extraLeftRef,\n position: \"left\",\n extra: extra,\n prefixCls: prefixCls\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(wrapPrefix, (_classNames = {}, _defineProperty(_classNames, \"\".concat(wrapPrefix, \"-ping-left\"), pingLeft), _defineProperty(_classNames, \"\".concat(wrapPrefix, \"-ping-right\"), pingRight), _defineProperty(_classNames, \"\".concat(wrapPrefix, \"-ping-top\"), pingTop), _defineProperty(_classNames, \"\".concat(wrapPrefix, \"-ping-bottom\"), pingBottom), _classNames)),\n ref: tabsWrapperRef\n }, /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: onListHolderResize\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: tabListRef,\n className: \"\".concat(prefixCls, \"-nav-list\"),\n style: {\n transform: \"translate(\".concat(transformLeft, \"px, \").concat(transformTop, \"px)\"),\n transition: lockAnimation ? 'none' : undefined\n }\n }, tabNodes, /*#__PURE__*/React.createElement(AddButton, {\n ref: innerAddButtonRef,\n prefixCls: prefixCls,\n locale: locale,\n editable: editable,\n style: _objectSpread(_objectSpread({}, tabNodes.length === 0 ? undefined : tabNodeStyle), {}, {\n visibility: hasDropdown ? 'hidden' : null\n })\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-ink-bar\"), _defineProperty({}, \"\".concat(prefixCls, \"-ink-bar-animated\"), animated.inkBar)),\n style: inkStyle\n })))), /*#__PURE__*/React.createElement(OperationNode, _extends({}, props, {\n removeAriaLabel: locale === null || locale === void 0 ? void 0 : locale.removeAriaLabel,\n ref: operationsRef,\n prefixCls: prefixCls,\n tabs: hiddenTabs,\n className: !hasDropdown && operationsHiddenClassName,\n tabMoving: !!lockAnimation\n })), /*#__PURE__*/React.createElement(ExtraContent, {\n ref: extraRightRef,\n position: \"right\",\n extra: extra,\n prefixCls: prefixCls\n })));\n /* eslint-enable */\n}\n\nexport default /*#__PURE__*/React.forwardRef(TabNavList);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"renderTabBar\"],\n _excluded2 = [\"label\", \"key\"];\n// zombieJ: To compatible with `renderTabBar` usage.\n\nimport * as React from 'react';\nimport TabNavList from '.';\nimport TabContext from \"../TabContext\";\nimport TabPane from \"../TabPanelList/TabPane\";\n// We have to create a TabNavList components.\nexport default function TabNavListWrapper(_ref) {\n var renderTabBar = _ref.renderTabBar,\n restProps = _objectWithoutProperties(_ref, _excluded);\n var _React$useContext = React.useContext(TabContext),\n tabs = _React$useContext.tabs;\n if (renderTabBar) {\n var tabNavBarProps = _objectSpread(_objectSpread({}, restProps), {}, {\n // Legacy support. We do not use this actually\n panes: tabs.map(function (_ref2) {\n var label = _ref2.label,\n key = _ref2.key,\n restTabProps = _objectWithoutProperties(_ref2, _excluded2);\n return /*#__PURE__*/React.createElement(TabPane, _extends({\n tab: label,\n key: key,\n tabKey: key\n }, restTabProps));\n })\n });\n return renderTabBar(tabNavBarProps, TabNavList);\n }\n return /*#__PURE__*/React.createElement(TabNavList, restProps);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"id\", \"prefixCls\", \"className\", \"items\", \"direction\", \"activeKey\", \"defaultActiveKey\", \"editable\", \"animated\", \"tabPosition\", \"tabBarGutter\", \"tabBarStyle\", \"tabBarExtraContent\", \"locale\", \"moreIcon\", \"moreTransitionName\", \"destroyInactiveTabPane\", \"renderTabBar\", \"onChange\", \"onTabClick\", \"onTabScroll\", \"getPopupContainer\", \"popupClassName\"];\n// Accessibility https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/Tab_Role\nimport * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport classNames from 'classnames';\nimport isMobile from \"rc-util/es/isMobile\";\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport TabPanelList from \"./TabPanelList\";\nimport TabContext from \"./TabContext\";\nimport TabNavListWrapper from \"./TabNavList/Wrapper\";\nimport useAnimateConfig from \"./hooks/useAnimateConfig\";\n\n/**\n * Should added antd:\n * - type\n *\n * Removed:\n * - onNextClick\n * - onPrevClick\n * - keyboard\n */\n\n// Used for accessibility\nvar uuid = 0;\nfunction Tabs(_ref, ref) {\n var _classNames;\n var id = _ref.id,\n _ref$prefixCls = _ref.prefixCls,\n prefixCls = _ref$prefixCls === void 0 ? 'rc-tabs' : _ref$prefixCls,\n className = _ref.className,\n items = _ref.items,\n direction = _ref.direction,\n activeKey = _ref.activeKey,\n defaultActiveKey = _ref.defaultActiveKey,\n editable = _ref.editable,\n animated = _ref.animated,\n _ref$tabPosition = _ref.tabPosition,\n tabPosition = _ref$tabPosition === void 0 ? 'top' : _ref$tabPosition,\n tabBarGutter = _ref.tabBarGutter,\n tabBarStyle = _ref.tabBarStyle,\n tabBarExtraContent = _ref.tabBarExtraContent,\n locale = _ref.locale,\n moreIcon = _ref.moreIcon,\n moreTransitionName = _ref.moreTransitionName,\n destroyInactiveTabPane = _ref.destroyInactiveTabPane,\n renderTabBar = _ref.renderTabBar,\n onChange = _ref.onChange,\n onTabClick = _ref.onTabClick,\n onTabScroll = _ref.onTabScroll,\n getPopupContainer = _ref.getPopupContainer,\n popupClassName = _ref.popupClassName,\n restProps = _objectWithoutProperties(_ref, _excluded);\n var tabs = React.useMemo(function () {\n return (items || []).filter(function (item) {\n return item && _typeof(item) === 'object' && 'key' in item;\n });\n }, [items]);\n var rtl = direction === 'rtl';\n var mergedAnimated = useAnimateConfig(animated);\n\n // ======================== Mobile ========================\n var _useState = useState(false),\n _useState2 = _slicedToArray(_useState, 2),\n mobile = _useState2[0],\n setMobile = _useState2[1];\n useEffect(function () {\n // Only update on the client side\n setMobile(isMobile());\n }, []);\n\n // ====================== Active Key ======================\n var _useMergedState = useMergedState(function () {\n var _tabs$;\n return (_tabs$ = tabs[0]) === null || _tabs$ === void 0 ? void 0 : _tabs$.key;\n }, {\n value: activeKey,\n defaultValue: defaultActiveKey\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n mergedActiveKey = _useMergedState2[0],\n setMergedActiveKey = _useMergedState2[1];\n var _useState3 = useState(function () {\n return tabs.findIndex(function (tab) {\n return tab.key === mergedActiveKey;\n });\n }),\n _useState4 = _slicedToArray(_useState3, 2),\n activeIndex = _useState4[0],\n setActiveIndex = _useState4[1];\n\n // Reset active key if not exist anymore\n useEffect(function () {\n var newActiveIndex = tabs.findIndex(function (tab) {\n return tab.key === mergedActiveKey;\n });\n if (newActiveIndex === -1) {\n var _tabs$newActiveIndex;\n newActiveIndex = Math.max(0, Math.min(activeIndex, tabs.length - 1));\n setMergedActiveKey((_tabs$newActiveIndex = tabs[newActiveIndex]) === null || _tabs$newActiveIndex === void 0 ? void 0 : _tabs$newActiveIndex.key);\n }\n setActiveIndex(newActiveIndex);\n }, [tabs.map(function (tab) {\n return tab.key;\n }).join('_'), mergedActiveKey, activeIndex]);\n\n // ===================== Accessibility ====================\n var _useMergedState3 = useMergedState(null, {\n value: id\n }),\n _useMergedState4 = _slicedToArray(_useMergedState3, 2),\n mergedId = _useMergedState4[0],\n setMergedId = _useMergedState4[1];\n\n // Async generate id to avoid ssr mapping failed\n useEffect(function () {\n if (!id) {\n setMergedId(\"rc-tabs-\".concat(process.env.NODE_ENV === 'test' ? 'test' : uuid));\n uuid += 1;\n }\n }, []);\n\n // ======================== Events ========================\n function onInternalTabClick(key, e) {\n onTabClick === null || onTabClick === void 0 ? void 0 : onTabClick(key, e);\n var isActiveChanged = key !== mergedActiveKey;\n setMergedActiveKey(key);\n if (isActiveChanged) {\n onChange === null || onChange === void 0 ? void 0 : onChange(key);\n }\n }\n\n // ======================== Render ========================\n var sharedProps = {\n id: mergedId,\n activeKey: mergedActiveKey,\n animated: mergedAnimated,\n tabPosition: tabPosition,\n rtl: rtl,\n mobile: mobile\n };\n var tabNavBar;\n var tabNavBarProps = _objectSpread(_objectSpread({}, sharedProps), {}, {\n editable: editable,\n locale: locale,\n moreIcon: moreIcon,\n moreTransitionName: moreTransitionName,\n tabBarGutter: tabBarGutter,\n onTabClick: onInternalTabClick,\n onTabScroll: onTabScroll,\n extra: tabBarExtraContent,\n style: tabBarStyle,\n panes: null,\n getPopupContainer: getPopupContainer,\n popupClassName: popupClassName\n });\n return /*#__PURE__*/React.createElement(TabContext.Provider, {\n value: {\n tabs: tabs,\n prefixCls: prefixCls\n }\n }, /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: ref,\n id: id,\n className: classNames(prefixCls, \"\".concat(prefixCls, \"-\").concat(tabPosition), (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-mobile\"), mobile), _defineProperty(_classNames, \"\".concat(prefixCls, \"-editable\"), editable), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), rtl), _classNames), className)\n }, restProps), tabNavBar, /*#__PURE__*/React.createElement(TabNavListWrapper, _extends({}, tabNavBarProps, {\n renderTabBar: renderTabBar\n })), /*#__PURE__*/React.createElement(TabPanelList, _extends({\n destroyInactiveTabPane: destroyInactiveTabPane\n }, sharedProps, {\n animated: mergedAnimated\n }))));\n}\nvar ForwardTabs = /*#__PURE__*/React.forwardRef(Tabs);\nif (process.env.NODE_ENV !== 'production') {\n ForwardTabs.displayName = 'Tabs';\n}\nexport default ForwardTabs;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport warning from \"rc-util/es/warning\";\nexport default function useAnimateConfig() {\n var animated = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n inkBar: true,\n tabPane: false\n };\n var mergedAnimated;\n if (animated === false) {\n mergedAnimated = {\n inkBar: false,\n tabPane: false\n };\n } else if (animated === true) {\n mergedAnimated = {\n inkBar: true,\n tabPane: false\n };\n } else {\n mergedAnimated = _objectSpread({\n inkBar: true\n }, _typeof(animated) === 'object' ? animated : {});\n }\n\n // Enable tabPane animation if provide motion\n if (mergedAnimated.tabPaneMotion && mergedAnimated.tabPane === undefined) {\n mergedAnimated.tabPane = true;\n }\n if (!mergedAnimated.tabPaneMotion && mergedAnimated.tabPane) {\n if (process.env.NODE_ENV !== 'production') {\n warning(false, '`animated.tabPane` is true but `animated.tabPaneMotion` is not provided. Motion will not work.');\n }\n mergedAnimated.tabPane = false;\n }\n return mergedAnimated;\n}","import Tabs from \"./Tabs\";\nexport default Tabs;","var TabPane = function TabPane() {\n return null;\n};\nif (process.env.NODE_ENV !== 'production') {\n TabPane.displayName = 'DeprecatedTabPane';\n}\nexport default TabPane;","import { getTransitionName } from '../../_util/motion';\nvar motion = {\n motionAppear: false,\n motionEnter: true,\n motionLeave: true\n};\nexport default function useAnimateConfig(prefixCls) {\n var animated = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n inkBar: true,\n tabPane: false\n };\n var mergedAnimated;\n if (animated === false) {\n mergedAnimated = {\n inkBar: false,\n tabPane: false\n };\n } else if (animated === true) {\n mergedAnimated = {\n inkBar: true,\n tabPane: true\n };\n } else {\n mergedAnimated = Object.assign({\n inkBar: true\n }, typeof animated === 'object' ? animated : {});\n }\n if (mergedAnimated.tabPane) {\n mergedAnimated.tabPaneMotion = Object.assign(Object.assign({}, motion), {\n motionName: getTransitionName(prefixCls, 'switch')\n });\n }\n return mergedAnimated;\n}","var __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport toArray from \"rc-util/es/Children/toArray\";\nimport warning from '../../_util/warning';\nfunction filter(items) {\n return items.filter(function (item) {\n return item;\n });\n}\nexport default function useLegacyItems(items, children) {\n if (items) {\n return items;\n }\n process.env.NODE_ENV !== \"production\" ? warning(!children, 'Tabs', 'Tabs.TabPane is deprecated. Please use `items` directly.') : void 0;\n var childrenItems = toArray(children).map(function (node) {\n if ( /*#__PURE__*/React.isValidElement(node)) {\n var key = node.key,\n props = node.props;\n var _a = props || {},\n tab = _a.tab,\n restProps = __rest(_a, [\"tab\"]);\n var item = Object.assign(Object.assign({\n key: String(key)\n }, restProps), {\n label: tab\n });\n return item;\n }\n return null;\n });\n return filter(childrenItems);\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { initSlideMotion } from '../../style/motion';\nvar genMotionStyle = function genMotionStyle(token) {\n var componentCls = token.componentCls,\n motionDurationSlow = token.motionDurationSlow;\n return [_defineProperty({}, componentCls, _defineProperty({}, \"\".concat(componentCls, \"-switch\"), {\n '&-appear, &-enter': {\n transition: 'none',\n '&-start': {\n opacity: 0\n },\n '&-active': {\n opacity: 1,\n transition: \"opacity \".concat(motionDurationSlow)\n }\n },\n '&-leave': {\n position: 'absolute',\n transition: 'none',\n inset: 0,\n '&-start': {\n opacity: 1\n },\n '&-active': {\n opacity: 0,\n transition: \"opacity \".concat(motionDurationSlow)\n }\n }\n })),\n // Follow code may reuse in other components\n [initSlideMotion(token, 'slide-up'), initSlideMotion(token, 'slide-down')]];\n};\nexport default genMotionStyle;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { genFocusStyle, resetComponent, textEllipsis } from '../../style';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport genMotionStyle from './motion';\nvar genCardStyle = function genCardStyle(token) {\n var _$concat$concat, _$concat$concat4, _$concat$concat5, _$concat$concat8, _$concat$concat9, _$concat5;\n var componentCls = token.componentCls,\n tabsCardPadding = token.tabsCardPadding,\n cardBg = token.cardBg,\n cardGutter = token.cardGutter,\n colorBorderSecondary = token.colorBorderSecondary,\n itemSelectedColor = token.itemSelectedColor;\n return _defineProperty({}, \"\".concat(componentCls, \"-card\"), (_$concat5 = {}, _defineProperty(_$concat5, \"> \".concat(componentCls, \"-nav, > div > \").concat(componentCls, \"-nav\"), (_$concat$concat = {}, _defineProperty(_$concat$concat, \"\".concat(componentCls, \"-tab\"), {\n margin: 0,\n padding: tabsCardPadding,\n background: cardBg,\n border: \"\".concat(token.lineWidth, \"px \").concat(token.lineType, \" \").concat(colorBorderSecondary),\n transition: \"all \".concat(token.motionDurationSlow, \" \").concat(token.motionEaseInOut)\n }), _defineProperty(_$concat$concat, \"\".concat(componentCls, \"-tab-active\"), {\n color: itemSelectedColor,\n background: token.colorBgContainer\n }), _defineProperty(_$concat$concat, \"\".concat(componentCls, \"-ink-bar\"), {\n visibility: 'hidden'\n }), _$concat$concat)), _defineProperty(_$concat5, \"&\".concat(componentCls, \"-top, &\").concat(componentCls, \"-bottom\"), _defineProperty({}, \"> \".concat(componentCls, \"-nav, > div > \").concat(componentCls, \"-nav\"), _defineProperty({}, \"\".concat(componentCls, \"-tab + \").concat(componentCls, \"-tab\"), {\n marginLeft: {\n _skip_check_: true,\n value: \"\".concat(cardGutter, \"px\")\n }\n }))), _defineProperty(_$concat5, \"&\".concat(componentCls, \"-top\"), _defineProperty({}, \"> \".concat(componentCls, \"-nav, > div > \").concat(componentCls, \"-nav\"), (_$concat$concat4 = {}, _defineProperty(_$concat$concat4, \"\".concat(componentCls, \"-tab\"), {\n borderRadius: \"\".concat(token.borderRadiusLG, \"px \").concat(token.borderRadiusLG, \"px 0 0\")\n }), _defineProperty(_$concat$concat4, \"\".concat(componentCls, \"-tab-active\"), {\n borderBottomColor: token.colorBgContainer\n }), _$concat$concat4))), _defineProperty(_$concat5, \"&\".concat(componentCls, \"-bottom\"), _defineProperty({}, \"> \".concat(componentCls, \"-nav, > div > \").concat(componentCls, \"-nav\"), (_$concat$concat5 = {}, _defineProperty(_$concat$concat5, \"\".concat(componentCls, \"-tab\"), {\n borderRadius: \"0 0 \".concat(token.borderRadiusLG, \"px \").concat(token.borderRadiusLG, \"px\")\n }), _defineProperty(_$concat$concat5, \"\".concat(componentCls, \"-tab-active\"), {\n borderTopColor: token.colorBgContainer\n }), _$concat$concat5))), _defineProperty(_$concat5, \"&\".concat(componentCls, \"-left, &\").concat(componentCls, \"-right\"), _defineProperty({}, \"> \".concat(componentCls, \"-nav, > div > \").concat(componentCls, \"-nav\"), _defineProperty({}, \"\".concat(componentCls, \"-tab + \").concat(componentCls, \"-tab\"), {\n marginTop: \"\".concat(cardGutter, \"px\")\n }))), _defineProperty(_$concat5, \"&\".concat(componentCls, \"-left\"), _defineProperty({}, \"> \".concat(componentCls, \"-nav, > div > \").concat(componentCls, \"-nav\"), (_$concat$concat8 = {}, _defineProperty(_$concat$concat8, \"\".concat(componentCls, \"-tab\"), {\n borderRadius: {\n _skip_check_: true,\n value: \"\".concat(token.borderRadiusLG, \"px 0 0 \").concat(token.borderRadiusLG, \"px\")\n }\n }), _defineProperty(_$concat$concat8, \"\".concat(componentCls, \"-tab-active\"), {\n borderRightColor: {\n _skip_check_: true,\n value: token.colorBgContainer\n }\n }), _$concat$concat8))), _defineProperty(_$concat5, \"&\".concat(componentCls, \"-right\"), _defineProperty({}, \"> \".concat(componentCls, \"-nav, > div > \").concat(componentCls, \"-nav\"), (_$concat$concat9 = {}, _defineProperty(_$concat$concat9, \"\".concat(componentCls, \"-tab\"), {\n borderRadius: {\n _skip_check_: true,\n value: \"0 \".concat(token.borderRadiusLG, \"px \").concat(token.borderRadiusLG, \"px 0\")\n }\n }), _defineProperty(_$concat$concat9, \"\".concat(componentCls, \"-tab-active\"), {\n borderLeftColor: {\n _skip_check_: true,\n value: token.colorBgContainer\n }\n }), _$concat$concat9))), _$concat5));\n};\nvar genDropdownStyle = function genDropdownStyle(token) {\n var componentCls = token.componentCls,\n itemHoverColor = token.itemHoverColor,\n dropdownEdgeChildVerticalPadding = token.dropdownEdgeChildVerticalPadding;\n return _defineProperty({}, \"\".concat(componentCls, \"-dropdown\"), Object.assign(Object.assign({}, resetComponent(token)), _defineProperty({\n position: 'absolute',\n top: -9999,\n left: {\n _skip_check_: true,\n value: -9999\n },\n zIndex: token.zIndexPopup,\n display: 'block',\n '&-hidden': {\n display: 'none'\n }\n }, \"\".concat(componentCls, \"-dropdown-menu\"), {\n maxHeight: token.tabsDropdownHeight,\n margin: 0,\n padding: \"\".concat(dropdownEdgeChildVerticalPadding, \"px 0\"),\n overflowX: 'hidden',\n overflowY: 'auto',\n textAlign: {\n _skip_check_: true,\n value: 'left'\n },\n listStyleType: 'none',\n backgroundColor: token.colorBgContainer,\n backgroundClip: 'padding-box',\n borderRadius: token.borderRadiusLG,\n outline: 'none',\n boxShadow: token.boxShadowSecondary,\n '&-item': Object.assign(Object.assign({}, textEllipsis), {\n display: 'flex',\n alignItems: 'center',\n minWidth: token.tabsDropdownWidth,\n margin: 0,\n padding: \"\".concat(token.paddingXXS, \"px \").concat(token.paddingSM, \"px\"),\n color: token.colorText,\n fontWeight: 'normal',\n fontSize: token.fontSize,\n lineHeight: token.lineHeight,\n cursor: 'pointer',\n transition: \"all \".concat(token.motionDurationSlow),\n '> span': {\n flex: 1,\n whiteSpace: 'nowrap'\n },\n '&-remove': {\n flex: 'none',\n marginLeft: {\n _skip_check_: true,\n value: token.marginSM\n },\n color: token.colorTextDescription,\n fontSize: token.fontSizeSM,\n background: 'transparent',\n border: 0,\n cursor: 'pointer',\n '&:hover': {\n color: itemHoverColor\n }\n },\n '&:hover': {\n background: token.controlItemBgHover\n },\n '&-disabled': {\n '&, &:hover': {\n color: token.colorTextDisabled,\n background: 'transparent',\n cursor: 'not-allowed'\n }\n }\n })\n })));\n};\nvar genPositionStyle = function genPositionStyle(token) {\n var _$concat6, _$concat$concat10, _$concat8, _$concat9, _$concat$concat14, _$concat10, _$concat11, _ref3;\n var componentCls = token.componentCls,\n margin = token.margin,\n colorBorderSecondary = token.colorBorderSecondary,\n horizontalMargin = token.horizontalMargin,\n verticalItemPadding = token.verticalItemPadding,\n verticalItemMargin = token.verticalItemMargin;\n return _ref3 = {}, _defineProperty(_ref3, \"\".concat(componentCls, \"-top, \").concat(componentCls, \"-bottom\"), _defineProperty({\n flexDirection: 'column'\n }, \"> \".concat(componentCls, \"-nav, > div > \").concat(componentCls, \"-nav\"), (_$concat$concat10 = {\n margin: horizontalMargin,\n '&::before': {\n position: 'absolute',\n right: {\n _skip_check_: true,\n value: 0\n },\n left: {\n _skip_check_: true,\n value: 0\n },\n borderBottom: \"\".concat(token.lineWidth, \"px \").concat(token.lineType, \" \").concat(colorBorderSecondary),\n content: \"''\"\n }\n }, _defineProperty(_$concat$concat10, \"\".concat(componentCls, \"-ink-bar\"), {\n height: token.lineWidthBold,\n '&-animated': {\n transition: \"width \".concat(token.motionDurationSlow, \", left \").concat(token.motionDurationSlow, \",\\n right \").concat(token.motionDurationSlow)\n }\n }), _defineProperty(_$concat$concat10, \"\".concat(componentCls, \"-nav-wrap\"), (_$concat6 = {\n '&::before, &::after': {\n top: 0,\n bottom: 0,\n width: token.controlHeight\n },\n '&::before': {\n left: {\n _skip_check_: true,\n value: 0\n },\n boxShadow: token.boxShadowTabsOverflowLeft\n },\n '&::after': {\n right: {\n _skip_check_: true,\n value: 0\n },\n boxShadow: token.boxShadowTabsOverflowRight\n }\n }, _defineProperty(_$concat6, \"&\".concat(componentCls, \"-nav-wrap-ping-left::before\"), {\n opacity: 1\n }), _defineProperty(_$concat6, \"&\".concat(componentCls, \"-nav-wrap-ping-right::after\"), {\n opacity: 1\n }), _$concat6)), _$concat$concat10))), _defineProperty(_ref3, \"\".concat(componentCls, \"-top\"), _defineProperty({}, \"> \".concat(componentCls, \"-nav,\\n > div > \").concat(componentCls, \"-nav\"), _defineProperty({\n '&::before': {\n bottom: 0\n }\n }, \"\".concat(componentCls, \"-ink-bar\"), {\n bottom: 0\n }))), _defineProperty(_ref3, \"\".concat(componentCls, \"-bottom\"), (_$concat8 = {}, _defineProperty(_$concat8, \"> \".concat(componentCls, \"-nav, > div > \").concat(componentCls, \"-nav\"), _defineProperty({\n order: 1,\n marginTop: \"\".concat(margin, \"px\"),\n marginBottom: 0,\n '&::before': {\n top: 0\n }\n }, \"\".concat(componentCls, \"-ink-bar\"), {\n top: 0\n })), _defineProperty(_$concat8, \"> \".concat(componentCls, \"-content-holder, > div > \").concat(componentCls, \"-content-holder\"), {\n order: 0\n }), _$concat8)), _defineProperty(_ref3, \"\".concat(componentCls, \"-left, \").concat(componentCls, \"-right\"), _defineProperty({}, \"> \".concat(componentCls, \"-nav, > div > \").concat(componentCls, \"-nav\"), (_$concat$concat14 = {\n flexDirection: 'column',\n minWidth: token.controlHeight * 1.25\n }, _defineProperty(_$concat$concat14, \"\".concat(componentCls, \"-tab\"), {\n padding: verticalItemPadding,\n textAlign: 'center'\n }), _defineProperty(_$concat$concat14, \"\".concat(componentCls, \"-tab + \").concat(componentCls, \"-tab\"), {\n margin: verticalItemMargin\n }), _defineProperty(_$concat$concat14, \"\".concat(componentCls, \"-nav-wrap\"), (_$concat9 = {\n flexDirection: 'column',\n '&::before, &::after': {\n right: {\n _skip_check_: true,\n value: 0\n },\n left: {\n _skip_check_: true,\n value: 0\n },\n height: token.controlHeight\n },\n '&::before': {\n top: 0,\n boxShadow: token.boxShadowTabsOverflowTop\n },\n '&::after': {\n bottom: 0,\n boxShadow: token.boxShadowTabsOverflowBottom\n }\n }, _defineProperty(_$concat9, \"&\".concat(componentCls, \"-nav-wrap-ping-top::before\"), {\n opacity: 1\n }), _defineProperty(_$concat9, \"&\".concat(componentCls, \"-nav-wrap-ping-bottom::after\"), {\n opacity: 1\n }), _$concat9)), _defineProperty(_$concat$concat14, \"\".concat(componentCls, \"-ink-bar\"), {\n width: token.lineWidthBold,\n '&-animated': {\n transition: \"height \".concat(token.motionDurationSlow, \", top \").concat(token.motionDurationSlow)\n }\n }), _defineProperty(_$concat$concat14, \"\".concat(componentCls, \"-nav-list, \").concat(componentCls, \"-nav-operations\"), {\n flex: '1 0 auto',\n flexDirection: 'column'\n }), _$concat$concat14))), _defineProperty(_ref3, \"\".concat(componentCls, \"-left\"), (_$concat10 = {}, _defineProperty(_$concat10, \"> \".concat(componentCls, \"-nav, > div > \").concat(componentCls, \"-nav\"), _defineProperty({}, \"\".concat(componentCls, \"-ink-bar\"), {\n right: {\n _skip_check_: true,\n value: 0\n }\n })), _defineProperty(_$concat10, \"> \".concat(componentCls, \"-content-holder, > div > \").concat(componentCls, \"-content-holder\"), _defineProperty({\n marginLeft: {\n _skip_check_: true,\n value: \"-\".concat(token.lineWidth, \"px\")\n },\n borderLeft: {\n _skip_check_: true,\n value: \"\".concat(token.lineWidth, \"px \").concat(token.lineType, \" \").concat(token.colorBorder)\n }\n }, \"> \".concat(componentCls, \"-content > \").concat(componentCls, \"-tabpane\"), {\n paddingLeft: {\n _skip_check_: true,\n value: token.paddingLG\n }\n })), _$concat10)), _defineProperty(_ref3, \"\".concat(componentCls, \"-right\"), (_$concat11 = {}, _defineProperty(_$concat11, \"> \".concat(componentCls, \"-nav, > div > \").concat(componentCls, \"-nav\"), _defineProperty({\n order: 1\n }, \"\".concat(componentCls, \"-ink-bar\"), {\n left: {\n _skip_check_: true,\n value: 0\n }\n })), _defineProperty(_$concat11, \"> \".concat(componentCls, \"-content-holder, > div > \").concat(componentCls, \"-content-holder\"), _defineProperty({\n order: 0,\n marginRight: {\n _skip_check_: true,\n value: -token.lineWidth\n },\n borderRight: {\n _skip_check_: true,\n value: \"\".concat(token.lineWidth, \"px \").concat(token.lineType, \" \").concat(token.colorBorder)\n }\n }, \"> \".concat(componentCls, \"-content > \").concat(componentCls, \"-tabpane\"), {\n paddingRight: {\n _skip_check_: true,\n value: token.paddingLG\n }\n })), _$concat11)), _ref3;\n};\nvar genSizeStyle = function genSizeStyle(token) {\n var _$concat19, _$concat22, _ref4;\n var componentCls = token.componentCls,\n cardPaddingSM = token.cardPaddingSM,\n cardPaddingLG = token.cardPaddingLG,\n horizontalItemPaddingSM = token.horizontalItemPaddingSM,\n horizontalItemPaddingLG = token.horizontalItemPaddingLG;\n return _ref4 = {}, _defineProperty(_ref4, componentCls, {\n '&-small': _defineProperty({}, \"> \".concat(componentCls, \"-nav\"), _defineProperty({}, \"\".concat(componentCls, \"-tab\"), {\n padding: horizontalItemPaddingSM,\n fontSize: token.titleFontSizeSM\n })),\n '&-large': _defineProperty({}, \"> \".concat(componentCls, \"-nav\"), _defineProperty({}, \"\".concat(componentCls, \"-tab\"), {\n padding: horizontalItemPaddingLG,\n fontSize: token.titleFontSizeLG\n }))\n }), _defineProperty(_ref4, \"\".concat(componentCls, \"-card\"), (_$concat22 = {}, _defineProperty(_$concat22, \"&\".concat(componentCls, \"-small\"), (_$concat19 = {}, _defineProperty(_$concat19, \"> \".concat(componentCls, \"-nav\"), _defineProperty({}, \"\".concat(componentCls, \"-tab\"), {\n padding: cardPaddingSM\n })), _defineProperty(_$concat19, \"&\".concat(componentCls, \"-bottom\"), _defineProperty({}, \"> \".concat(componentCls, \"-nav \").concat(componentCls, \"-tab\"), {\n borderRadius: \"0 0 \".concat(token.borderRadius, \"px \").concat(token.borderRadius, \"px\")\n })), _defineProperty(_$concat19, \"&\".concat(componentCls, \"-top\"), _defineProperty({}, \"> \".concat(componentCls, \"-nav \").concat(componentCls, \"-tab\"), {\n borderRadius: \"\".concat(token.borderRadius, \"px \").concat(token.borderRadius, \"px 0 0\")\n })), _defineProperty(_$concat19, \"&\".concat(componentCls, \"-right\"), _defineProperty({}, \"> \".concat(componentCls, \"-nav \").concat(componentCls, \"-tab\"), {\n borderRadius: {\n _skip_check_: true,\n value: \"0 \".concat(token.borderRadius, \"px \").concat(token.borderRadius, \"px 0\")\n }\n })), _defineProperty(_$concat19, \"&\".concat(componentCls, \"-left\"), _defineProperty({}, \"> \".concat(componentCls, \"-nav \").concat(componentCls, \"-tab\"), {\n borderRadius: {\n _skip_check_: true,\n value: \"\".concat(token.borderRadius, \"px 0 0 \").concat(token.borderRadius, \"px\")\n }\n })), _$concat19)), _defineProperty(_$concat22, \"&\".concat(componentCls, \"-large\"), _defineProperty({}, \"> \".concat(componentCls, \"-nav\"), _defineProperty({}, \"\".concat(componentCls, \"-tab\"), {\n padding: cardPaddingLG\n }))), _$concat22)), _ref4;\n};\nvar genTabStyle = function genTabStyle(token) {\n var _tabCls, _ref5;\n var componentCls = token.componentCls,\n itemActiveColor = token.itemActiveColor,\n itemHoverColor = token.itemHoverColor,\n iconCls = token.iconCls,\n tabsHorizontalItemMargin = token.tabsHorizontalItemMargin,\n horizontalItemPadding = token.horizontalItemPadding,\n itemSelectedColor = token.itemSelectedColor;\n var tabCls = \"\".concat(componentCls, \"-tab\");\n return _ref5 = {}, _defineProperty(_ref5, tabCls, (_tabCls = {\n position: 'relative',\n display: 'inline-flex',\n alignItems: 'center',\n padding: horizontalItemPadding,\n fontSize: token.titleFontSize,\n background: 'transparent',\n border: 0,\n outline: 'none',\n cursor: 'pointer',\n '&-btn, &-remove': Object.assign({\n '&:focus:not(:focus-visible), &:active': {\n color: itemActiveColor\n }\n }, genFocusStyle(token)),\n '&-btn': {\n outline: 'none',\n transition: 'all 0.3s'\n },\n '&-remove': {\n flex: 'none',\n marginRight: {\n _skip_check_: true,\n value: -token.marginXXS\n },\n marginLeft: {\n _skip_check_: true,\n value: token.marginXS\n },\n color: token.colorTextDescription,\n fontSize: token.fontSizeSM,\n background: 'transparent',\n border: 'none',\n outline: 'none',\n cursor: 'pointer',\n transition: \"all \".concat(token.motionDurationSlow),\n '&:hover': {\n color: token.colorTextHeading\n }\n },\n '&:hover': {\n color: itemHoverColor\n }\n }, _defineProperty(_tabCls, \"&\".concat(tabCls, \"-active \").concat(tabCls, \"-btn\"), {\n color: itemSelectedColor,\n textShadow: token.tabsActiveTextShadow\n }), _defineProperty(_tabCls, \"&\".concat(tabCls, \"-disabled\"), {\n color: token.colorTextDisabled,\n cursor: 'not-allowed'\n }), _defineProperty(_tabCls, \"&\".concat(tabCls, \"-disabled \").concat(tabCls, \"-btn, &\").concat(tabCls, \"-disabled \").concat(componentCls, \"-remove\"), {\n '&:focus, &:active': {\n color: token.colorTextDisabled\n }\n }), _defineProperty(_tabCls, \"& \".concat(tabCls, \"-remove \").concat(iconCls), {\n margin: 0\n }), _defineProperty(_tabCls, iconCls, {\n marginRight: {\n _skip_check_: true,\n value: token.marginSM\n }\n }), _tabCls)), _defineProperty(_ref5, \"\".concat(tabCls, \" + \").concat(tabCls), {\n margin: {\n _skip_check_: true,\n value: tabsHorizontalItemMargin\n }\n }), _ref5;\n};\nvar genRtlStyle = function genRtlStyle(token) {\n var _$concat24, _$concat26, _$concat27, _rtlCls, _ref6;\n var componentCls = token.componentCls,\n tabsHorizontalItemMarginRTL = token.tabsHorizontalItemMarginRTL,\n iconCls = token.iconCls,\n cardGutter = token.cardGutter;\n var rtlCls = \"\".concat(componentCls, \"-rtl\");\n return _ref6 = {}, _defineProperty(_ref6, rtlCls, (_rtlCls = {\n direction: 'rtl'\n }, _defineProperty(_rtlCls, \"\".concat(componentCls, \"-nav\"), _defineProperty({}, \"\".concat(componentCls, \"-tab\"), (_$concat24 = {\n margin: {\n _skip_check_: true,\n value: tabsHorizontalItemMarginRTL\n }\n }, _defineProperty(_$concat24, \"\".concat(componentCls, \"-tab:last-of-type\"), {\n marginLeft: {\n _skip_check_: true,\n value: 0\n }\n }), _defineProperty(_$concat24, iconCls, {\n marginRight: {\n _skip_check_: true,\n value: 0\n },\n marginLeft: {\n _skip_check_: true,\n value: \"\".concat(token.marginSM, \"px\")\n }\n }), _defineProperty(_$concat24, \"\".concat(componentCls, \"-tab-remove\"), _defineProperty({\n marginRight: {\n _skip_check_: true,\n value: \"\".concat(token.marginXS, \"px\")\n },\n marginLeft: {\n _skip_check_: true,\n value: \"-\".concat(token.marginXXS, \"px\")\n }\n }, iconCls, {\n margin: 0\n })), _$concat24))), _defineProperty(_rtlCls, \"&\".concat(componentCls, \"-left\"), (_$concat26 = {}, _defineProperty(_$concat26, \"> \".concat(componentCls, \"-nav\"), {\n order: 1\n }), _defineProperty(_$concat26, \"> \".concat(componentCls, \"-content-holder\"), {\n order: 0\n }), _$concat26)), _defineProperty(_rtlCls, \"&\".concat(componentCls, \"-right\"), (_$concat27 = {}, _defineProperty(_$concat27, \"> \".concat(componentCls, \"-nav\"), {\n order: 0\n }), _defineProperty(_$concat27, \"> \".concat(componentCls, \"-content-holder\"), {\n order: 1\n }), _$concat27)), _defineProperty(_rtlCls, \"&\".concat(componentCls, \"-card\").concat(componentCls, \"-top, &\").concat(componentCls, \"-card\").concat(componentCls, \"-bottom\"), _defineProperty({}, \"> \".concat(componentCls, \"-nav, > div > \").concat(componentCls, \"-nav\"), _defineProperty({}, \"\".concat(componentCls, \"-tab + \").concat(componentCls, \"-tab\"), {\n marginRight: {\n _skip_check_: true,\n value: cardGutter\n },\n marginLeft: {\n _skip_check_: true,\n value: 0\n }\n }))), _rtlCls)), _defineProperty(_ref6, \"\".concat(componentCls, \"-dropdown-rtl\"), {\n direction: 'rtl'\n }), _defineProperty(_ref6, \"\".concat(componentCls, \"-menu-item\"), _defineProperty({}, \"\".concat(componentCls, \"-dropdown-rtl\"), {\n textAlign: {\n _skip_check_: true,\n value: 'right'\n }\n })), _ref6;\n};\nvar genTabsStyle = function genTabsStyle(token) {\n var _$concat$concat21, _Object$assign2, _Object$assign3, _ref7;\n var componentCls = token.componentCls,\n tabsCardPadding = token.tabsCardPadding,\n cardHeight = token.cardHeight,\n cardGutter = token.cardGutter,\n itemHoverColor = token.itemHoverColor,\n itemActiveColor = token.itemActiveColor,\n colorBorderSecondary = token.colorBorderSecondary;\n return _ref7 = {}, _defineProperty(_ref7, componentCls, Object.assign(Object.assign(Object.assign(Object.assign({}, resetComponent(token)), (_Object$assign2 = {\n display: 'flex'\n }, _defineProperty(_Object$assign2, \"> \".concat(componentCls, \"-nav, > div > \").concat(componentCls, \"-nav\"), (_$concat$concat21 = {\n position: 'relative',\n display: 'flex',\n flex: 'none',\n alignItems: 'center'\n }, _defineProperty(_$concat$concat21, \"\".concat(componentCls, \"-nav-wrap\"), {\n position: 'relative',\n display: 'flex',\n flex: 'auto',\n alignSelf: 'stretch',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n transform: 'translate(0)',\n // >>>>> Ping shadow\n '&::before, &::after': {\n position: 'absolute',\n zIndex: 1,\n opacity: 0,\n transition: \"opacity \".concat(token.motionDurationSlow),\n content: \"''\",\n pointerEvents: 'none'\n }\n }), _defineProperty(_$concat$concat21, \"\".concat(componentCls, \"-nav-list\"), {\n position: 'relative',\n display: 'flex',\n transition: \"opacity \".concat(token.motionDurationSlow)\n }), _defineProperty(_$concat$concat21, \"\".concat(componentCls, \"-nav-operations\"), {\n display: 'flex',\n alignSelf: 'stretch'\n }), _defineProperty(_$concat$concat21, \"\".concat(componentCls, \"-nav-operations-hidden\"), {\n position: 'absolute',\n visibility: 'hidden',\n pointerEvents: 'none'\n }), _defineProperty(_$concat$concat21, \"\".concat(componentCls, \"-nav-more\"), {\n position: 'relative',\n padding: tabsCardPadding,\n background: 'transparent',\n border: 0,\n color: token.colorText,\n '&::after': {\n position: 'absolute',\n right: {\n _skip_check_: true,\n value: 0\n },\n bottom: 0,\n left: {\n _skip_check_: true,\n value: 0\n },\n height: token.controlHeightLG / 8,\n transform: 'translateY(100%)',\n content: \"''\"\n }\n }), _defineProperty(_$concat$concat21, \"\".concat(componentCls, \"-nav-add\"), Object.assign({\n minWidth: cardHeight,\n marginLeft: {\n _skip_check_: true,\n value: cardGutter\n },\n padding: \"0 \".concat(token.paddingXS, \"px\"),\n background: 'transparent',\n border: \"\".concat(token.lineWidth, \"px \").concat(token.lineType, \" \").concat(colorBorderSecondary),\n borderRadius: \"\".concat(token.borderRadiusLG, \"px \").concat(token.borderRadiusLG, \"px 0 0\"),\n outline: 'none',\n cursor: 'pointer',\n color: token.colorText,\n transition: \"all \".concat(token.motionDurationSlow, \" \").concat(token.motionEaseInOut),\n '&:hover': {\n color: itemHoverColor\n },\n '&:active, &:focus:not(:focus-visible)': {\n color: itemActiveColor\n }\n }, genFocusStyle(token))), _$concat$concat21)), _defineProperty(_Object$assign2, \"\".concat(componentCls, \"-extra-content\"), {\n flex: 'none'\n }), _defineProperty(_Object$assign2, \"\".concat(componentCls, \"-ink-bar\"), {\n position: 'absolute',\n background: token.inkBarColor,\n pointerEvents: 'none'\n }), _Object$assign2)), genTabStyle(token)), (_Object$assign3 = {}, _defineProperty(_Object$assign3, \"\".concat(componentCls, \"-content\"), {\n position: 'relative',\n width: '100%'\n }), _defineProperty(_Object$assign3, \"\".concat(componentCls, \"-content-holder\"), {\n flex: 'auto',\n minWidth: 0,\n minHeight: 0\n }), _defineProperty(_Object$assign3, \"\".concat(componentCls, \"-tabpane\"), {\n outline: 'none',\n '&-hidden': {\n display: 'none'\n }\n }), _Object$assign3))), _defineProperty(_ref7, \"\".concat(componentCls, \"-centered\"), _defineProperty({}, \"> \".concat(componentCls, \"-nav, > div > \").concat(componentCls, \"-nav\"), _defineProperty({}, \"\".concat(componentCls, \"-nav-wrap\"), _defineProperty({}, \"&:not([class*='\".concat(componentCls, \"-nav-wrap-ping'])\"), {\n justifyContent: 'center'\n })))), _ref7;\n};\n// ============================== Export ==============================\nexport default genComponentStyleHook('Tabs', function (token) {\n var tabsToken = mergeToken(token, {\n // `cardPadding` is empty by default, so we could calculate with dynamic `cardHeight`\n tabsCardPadding: token.cardPadding || \"\".concat((token.cardHeight - Math.round(token.fontSize * token.lineHeight)) / 2 - token.lineWidth, \"px \").concat(token.padding, \"px\"),\n dropdownEdgeChildVerticalPadding: token.paddingXXS,\n tabsActiveTextShadow: '0 0 0.25px currentcolor',\n tabsDropdownHeight: 200,\n tabsDropdownWidth: 120,\n tabsHorizontalItemMargin: \"0 0 0 \".concat(token.horizontalItemGutter, \"px\"),\n tabsHorizontalItemMarginRTL: \"0 0 0 \".concat(token.horizontalItemGutter, \"px\")\n });\n return [genSizeStyle(tabsToken), genRtlStyle(tabsToken), genPositionStyle(tabsToken), genDropdownStyle(tabsToken), genCardStyle(tabsToken), genTabsStyle(tabsToken), genMotionStyle(tabsToken)];\n}, function (token) {\n var cardHeight = token.controlHeightLG;\n return {\n zIndexPopup: token.zIndexPopupBase + 50,\n cardBg: token.colorFillAlter,\n cardHeight: cardHeight,\n // Initialize with empty string, because cardPadding will be calculated with cardHeight by default.\n cardPadding: \"\",\n cardPaddingSM: \"\".concat(token.paddingXXS * 1.5, \"px \").concat(token.padding, \"px\"),\n cardPaddingLG: \"\".concat(token.paddingXS, \"px \").concat(token.padding, \"px \").concat(token.paddingXXS * 1.5, \"px\"),\n titleFontSize: token.fontSize,\n titleFontSizeLG: token.fontSizeLG,\n titleFontSizeSM: token.fontSize,\n inkBarColor: token.colorPrimary,\n horizontalMargin: \"0 0 \".concat(token.margin, \"px 0\"),\n horizontalItemGutter: 32,\n // Initialize with empty string, because horizontalItemMargin will be calculated with horizontalItemGutter by default.\n horizontalItemMargin: \"\",\n horizontalItemMarginRTL: \"\",\n horizontalItemPadding: \"\".concat(token.paddingSM, \"px 0\"),\n horizontalItemPaddingSM: \"\".concat(token.paddingXS, \"px 0\"),\n horizontalItemPaddingLG: \"\".concat(token.padding, \"px 0\"),\n verticalItemPadding: \"\".concat(token.paddingXS, \"px \").concat(token.paddingLG, \"px\"),\n verticalItemMargin: \"\".concat(token.margin, \"px 0 0 0\"),\n itemSelectedColor: token.colorPrimary,\n itemHoverColor: token.colorPrimaryHover,\n itemActiveColor: token.colorPrimaryActive,\n cardGutter: token.marginXXS / 2\n };\n});","'use client';\n\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport CloseOutlined from \"@ant-design/icons/es/icons/CloseOutlined\";\nimport EllipsisOutlined from \"@ant-design/icons/es/icons/EllipsisOutlined\";\nimport PlusOutlined from \"@ant-design/icons/es/icons/PlusOutlined\";\nimport classNames from 'classnames';\nimport RcTabs from 'rc-tabs';\nimport * as React from 'react';\nimport warning from '../_util/warning';\nimport { ConfigContext } from '../config-provider';\nimport useSize from '../config-provider/hooks/useSize';\nimport TabPane from './TabPane';\nimport useAnimateConfig from './hooks/useAnimateConfig';\nimport useLegacyItems from './hooks/useLegacyItems';\nimport useStyle from './style';\nvar Tabs = function Tabs(props) {\n var _classNames;\n var type = props.type,\n className = props.className,\n rootClassName = props.rootClassName,\n customSize = props.size,\n _onEdit = props.onEdit,\n hideAdd = props.hideAdd,\n centered = props.centered,\n addIcon = props.addIcon,\n popupClassName = props.popupClassName,\n children = props.children,\n items = props.items,\n animated = props.animated,\n style = props.style,\n otherProps = __rest(props, [\"type\", \"className\", \"rootClassName\", \"size\", \"onEdit\", \"hideAdd\", \"centered\", \"addIcon\", \"popupClassName\", \"children\", \"items\", \"animated\", \"style\"]);\n var customizePrefixCls = otherProps.prefixCls,\n _otherProps$moreIcon = otherProps.moreIcon,\n moreIcon = _otherProps$moreIcon === void 0 ? /*#__PURE__*/React.createElement(EllipsisOutlined, null) : _otherProps$moreIcon;\n var _React$useContext = React.useContext(ConfigContext),\n direction = _React$useContext.direction,\n tabs = _React$useContext.tabs,\n getPrefixCls = _React$useContext.getPrefixCls,\n getPopupContainer = _React$useContext.getPopupContainer;\n var prefixCls = getPrefixCls('tabs', customizePrefixCls);\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n var editable;\n if (type === 'editable-card') {\n editable = {\n onEdit: function onEdit(editType, _ref) {\n var key = _ref.key,\n event = _ref.event;\n _onEdit === null || _onEdit === void 0 ? void 0 : _onEdit(editType === 'add' ? event : key, editType);\n },\n removeIcon: /*#__PURE__*/React.createElement(CloseOutlined, null),\n addIcon: addIcon || /*#__PURE__*/React.createElement(PlusOutlined, null),\n showAdd: hideAdd !== true\n };\n }\n var rootPrefixCls = getPrefixCls();\n process.env.NODE_ENV !== \"production\" ? warning(!('onPrevClick' in props) && !('onNextClick' in props), 'Tabs', '`onPrevClick` and `onNextClick` has been removed. Please use `onTabScroll` instead.') : void 0;\n var mergedItems = useLegacyItems(items, children);\n var mergedAnimated = useAnimateConfig(prefixCls, animated);\n var size = useSize(customSize);\n var mergedStyle = Object.assign(Object.assign({}, tabs === null || tabs === void 0 ? void 0 : tabs.style), style);\n return wrapSSR( /*#__PURE__*/React.createElement(RcTabs, Object.assign({\n direction: direction,\n getPopupContainer: getPopupContainer,\n moreTransitionName: \"\".concat(rootPrefixCls, \"-slide-up\")\n }, otherProps, {\n items: mergedItems,\n className: classNames((_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(size), size), _defineProperty(_classNames, \"\".concat(prefixCls, \"-card\"), ['card', 'editable-card'].includes(type)), _defineProperty(_classNames, \"\".concat(prefixCls, \"-editable-card\"), type === 'editable-card'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-centered\"), centered), _classNames), tabs === null || tabs === void 0 ? void 0 : tabs.className, className, rootClassName, hashId),\n popupClassName: classNames(popupClassName, hashId),\n style: mergedStyle,\n editable: editable,\n moreIcon: moreIcon,\n prefixCls: prefixCls,\n animated: mergedAnimated\n })));\n};\nTabs.TabPane = TabPane;\nif (process.env.NODE_ENV !== 'production') {\n Tabs.displayName = 'Tabs';\n}\nexport default Tabs;","var EMPTY = {};\nexport default function shallowEqual(a, b) {\n if (a === void 0) {\n a = EMPTY;\n }\n if (b === void 0) {\n b = EMPTY;\n }\n var aKeys = Object.keys(a);\n var bKeys = Object.keys(b);\n return a === b || aKeys.length === bKeys.length && aKeys.every(function (key) {\n return a[key] === b[key];\n });\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","/*!\n * https://github.com/Starcounter-Jack/JSON-Patch\n * (c) 2017-2022 Joachim Wester\n * MIT licensed\n */\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nexport function hasOwnProperty(obj, key) {\n return _hasOwnProperty.call(obj, key);\n}\nexport function _objectKeys(obj) {\n if (Array.isArray(obj)) {\n var keys_1 = new Array(obj.length);\n for (var k = 0; k < keys_1.length; k++) {\n keys_1[k] = \"\" + k;\n }\n return keys_1;\n }\n if (Object.keys) {\n return Object.keys(obj);\n }\n var keys = [];\n for (var i in obj) {\n if (hasOwnProperty(obj, i)) {\n keys.push(i);\n }\n }\n return keys;\n}\n;\n/**\n* Deeply clone the object.\n* https://jsperf.com/deep-copy-vs-json-stringify-json-parse/25 (recursiveDeepCopy)\n* @param {any} obj value to clone\n* @return {any} cloned obj\n*/\nexport function _deepClone(obj) {\n switch (typeof obj) {\n case \"object\":\n return JSON.parse(JSON.stringify(obj));\n //Faster than ES5 clone - http://jsperf.com/deep-cloning-of-objects/5\n case \"undefined\":\n return null;\n //this is how JSON.stringify behaves for array items\n default:\n return obj;\n //no need to clone primitives\n }\n}\n//3x faster than cached /^\\d+$/.test(str)\nexport function isInteger(str) {\n var i = 0;\n var len = str.length;\n var charCode;\n while (i < len) {\n charCode = str.charCodeAt(i);\n if (charCode >= 48 && charCode <= 57) {\n i++;\n continue;\n }\n return false;\n }\n return true;\n}\n/**\n* Escapes a json pointer path\n* @param path The raw pointer\n* @return the Escaped path\n*/\nexport function escapePathComponent(path) {\n if (path.indexOf('/') === -1 && path.indexOf('~') === -1) return path;\n return path.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n/**\n * Unescapes a json pointer path\n * @param path The escaped pointer\n * @return The unescaped path\n */\nexport function unescapePathComponent(path) {\n return path.replace(/~1/g, '/').replace(/~0/g, '~');\n}\nexport function _getPathRecursive(root, obj) {\n var found;\n for (var key in root) {\n if (hasOwnProperty(root, key)) {\n if (root[key] === obj) {\n return escapePathComponent(key) + '/';\n } else if (typeof root[key] === 'object') {\n found = _getPathRecursive(root[key], obj);\n if (found != '') {\n return escapePathComponent(key) + '/' + found;\n }\n }\n }\n }\n return '';\n}\nexport function getPath(root, obj) {\n if (root === obj) {\n return '/';\n }\n var path = _getPathRecursive(root, obj);\n if (path === '') {\n throw new Error(\"Object not found in root\");\n }\n return \"/\" + path;\n}\n/**\n* Recursively checks whether an object has any undefined values inside.\n*/\nexport function hasUndefined(obj) {\n if (obj === undefined) {\n return true;\n }\n if (obj) {\n if (Array.isArray(obj)) {\n for (var i_1 = 0, len = obj.length; i_1 < len; i_1++) {\n if (hasUndefined(obj[i_1])) {\n return true;\n }\n }\n } else if (typeof obj === \"object\") {\n var objKeys = _objectKeys(obj);\n var objKeysLength = objKeys.length;\n for (var i = 0; i < objKeysLength; i++) {\n if (hasUndefined(obj[objKeys[i]])) {\n return true;\n }\n }\n }\n }\n return false;\n}\nfunction patchErrorMessageFormatter(message, args) {\n var messageParts = [message];\n for (var key in args) {\n var value = typeof args[key] === 'object' ? JSON.stringify(args[key], null, 2) : args[key]; // pretty print\n if (typeof value !== 'undefined') {\n messageParts.push(key + \": \" + value);\n }\n }\n return messageParts.join('\\n');\n}\nvar PatchError = /** @class */function (_super) {\n __extends(PatchError, _super);\n function PatchError(message, name, index, operation, tree) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, patchErrorMessageFormatter(message, {\n name: name,\n index: index,\n operation: operation,\n tree: tree\n })) || this;\n _this.name = name;\n _this.index = index;\n _this.operation = operation;\n _this.tree = tree;\n Object.setPrototypeOf(_this, _newTarget.prototype); // restore prototype chain, see https://stackoverflow.com/a/48342359\n _this.message = patchErrorMessageFormatter(message, {\n name: name,\n index: index,\n operation: operation,\n tree: tree\n });\n return _this;\n }\n return PatchError;\n}(Error);\nexport { PatchError };","import { PatchError, _deepClone, isInteger, unescapePathComponent, hasUndefined } from './helpers.mjs';\nexport var JsonPatchError = PatchError;\nexport var deepClone = _deepClone;\n/* We use a Javascript hash to store each\n function. Each hash entry (property) uses\n the operation identifiers specified in rfc6902.\n In this way, we can map each patch operation\n to its dedicated function in efficient way.\n */\n/* The operations applicable to an object */\nvar objOps = {\n add: function add(obj, key, document) {\n obj[key] = this.value;\n return {\n newDocument: document\n };\n },\n remove: function remove(obj, key, document) {\n var removed = obj[key];\n delete obj[key];\n return {\n newDocument: document,\n removed: removed\n };\n },\n replace: function replace(obj, key, document) {\n var removed = obj[key];\n obj[key] = this.value;\n return {\n newDocument: document,\n removed: removed\n };\n },\n move: function move(obj, key, document) {\n /* in case move target overwrites an existing value,\n return the removed value, this can be taxing performance-wise,\n and is potentially unneeded */\n var removed = getValueByPointer(document, this.path);\n if (removed) {\n removed = _deepClone(removed);\n }\n var originalValue = applyOperation(document, {\n op: \"remove\",\n path: this.from\n }).removed;\n applyOperation(document, {\n op: \"add\",\n path: this.path,\n value: originalValue\n });\n return {\n newDocument: document,\n removed: removed\n };\n },\n copy: function copy(obj, key, document) {\n var valueToCopy = getValueByPointer(document, this.from);\n // enforce copy by value so further operations don't affect source (see issue #177)\n applyOperation(document, {\n op: \"add\",\n path: this.path,\n value: _deepClone(valueToCopy)\n });\n return {\n newDocument: document\n };\n },\n test: function test(obj, key, document) {\n return {\n newDocument: document,\n test: _areEquals(obj[key], this.value)\n };\n },\n _get: function _get(obj, key, document) {\n this.value = obj[key];\n return {\n newDocument: document\n };\n }\n};\n/* The operations applicable to an array. Many are the same as for the object */\nvar arrOps = {\n add: function add(arr, i, document) {\n if (isInteger(i)) {\n arr.splice(i, 0, this.value);\n } else {\n // array props\n arr[i] = this.value;\n }\n // this may be needed when using '-' in an array\n return {\n newDocument: document,\n index: i\n };\n },\n remove: function remove(arr, i, document) {\n var removedList = arr.splice(i, 1);\n return {\n newDocument: document,\n removed: removedList[0]\n };\n },\n replace: function replace(arr, i, document) {\n var removed = arr[i];\n arr[i] = this.value;\n return {\n newDocument: document,\n removed: removed\n };\n },\n move: objOps.move,\n copy: objOps.copy,\n test: objOps.test,\n _get: objOps._get\n};\n/**\n * Retrieves a value from a JSON document by a JSON pointer.\n * Returns the value.\n *\n * @param document The document to get the value from\n * @param pointer an escaped JSON pointer\n * @return The retrieved value\n */\nexport function getValueByPointer(document, pointer) {\n if (pointer == '') {\n return document;\n }\n var getOriginalDestination = {\n op: \"_get\",\n path: pointer\n };\n applyOperation(document, getOriginalDestination);\n return getOriginalDestination.value;\n}\n/**\n * Apply a single JSON Patch Operation on a JSON document.\n * Returns the {newDocument, result} of the operation.\n * It modifies the `document` and `operation` objects - it gets the values by reference.\n * If you would like to avoid touching your values, clone them:\n * `jsonpatch.applyOperation(document, jsonpatch._deepClone(operation))`.\n *\n * @param document The document to patch\n * @param operation The operation to apply\n * @param validateOperation `false` is without validation, `true` to use default jsonpatch's validation, or you can pass a `validateOperation` callback to be used for validation.\n * @param mutateDocument Whether to mutate the original document or clone it before applying\n * @param banPrototypeModifications Whether to ban modifications to `__proto__`, defaults to `true`.\n * @return `{newDocument, result}` after the operation\n */\nexport function applyOperation(document, operation, validateOperation, mutateDocument, banPrototypeModifications, index) {\n if (validateOperation === void 0) {\n validateOperation = false;\n }\n if (mutateDocument === void 0) {\n mutateDocument = true;\n }\n if (banPrototypeModifications === void 0) {\n banPrototypeModifications = true;\n }\n if (index === void 0) {\n index = 0;\n }\n if (validateOperation) {\n if (typeof validateOperation == 'function') {\n validateOperation(operation, 0, document, operation.path);\n } else {\n validator(operation, 0);\n }\n }\n /* ROOT OPERATIONS */\n if (operation.path === \"\") {\n var returnValue = {\n newDocument: document\n };\n if (operation.op === 'add') {\n returnValue.newDocument = operation.value;\n return returnValue;\n } else if (operation.op === 'replace') {\n returnValue.newDocument = operation.value;\n returnValue.removed = document; //document we removed\n return returnValue;\n } else if (operation.op === 'move' || operation.op === 'copy') {\n // it's a move or copy to root\n returnValue.newDocument = getValueByPointer(document, operation.from); // get the value by json-pointer in `from` field\n if (operation.op === 'move') {\n // report removed item\n returnValue.removed = document;\n }\n return returnValue;\n } else if (operation.op === 'test') {\n returnValue.test = _areEquals(document, operation.value);\n if (returnValue.test === false) {\n throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n }\n returnValue.newDocument = document;\n return returnValue;\n } else if (operation.op === 'remove') {\n // a remove on root\n returnValue.removed = document;\n returnValue.newDocument = null;\n return returnValue;\n } else if (operation.op === '_get') {\n operation.value = document;\n return returnValue;\n } else {\n /* bad operation */\n if (validateOperation) {\n throw new JsonPatchError('Operation `op` property is not one of operations defined in RFC-6902', 'OPERATION_OP_INVALID', index, operation, document);\n } else {\n return returnValue;\n }\n }\n } /* END ROOT OPERATIONS */else {\n if (!mutateDocument) {\n document = _deepClone(document);\n }\n var path = operation.path || \"\";\n var keys = path.split('/');\n var obj = document;\n var t = 1; //skip empty element - http://jsperf.com/to-shift-or-not-to-shift\n var len = keys.length;\n var existingPathFragment = undefined;\n var key = void 0;\n var validateFunction = void 0;\n if (typeof validateOperation == 'function') {\n validateFunction = validateOperation;\n } else {\n validateFunction = validator;\n }\n while (true) {\n key = keys[t];\n if (key && key.indexOf('~') != -1) {\n key = unescapePathComponent(key);\n }\n if (banPrototypeModifications && (key == '__proto__' || key == 'prototype' && t > 0 && keys[t - 1] == 'constructor')) {\n throw new TypeError('JSON-Patch: modifying `__proto__` or `constructor/prototype` prop is banned for security reasons, if this was on purpose, please set `banPrototypeModifications` flag false and pass it to this function. More info in fast-json-patch README');\n }\n if (validateOperation) {\n if (existingPathFragment === undefined) {\n if (obj[key] === undefined) {\n existingPathFragment = keys.slice(0, t).join('/');\n } else if (t == len - 1) {\n existingPathFragment = operation.path;\n }\n if (existingPathFragment !== undefined) {\n validateFunction(operation, 0, document, existingPathFragment);\n }\n }\n }\n t++;\n if (Array.isArray(obj)) {\n if (key === '-') {\n key = obj.length;\n } else {\n if (validateOperation && !isInteger(key)) {\n throw new JsonPatchError(\"Expected an unsigned base-10 integer value, making the new referenced value the array element with the zero-based index\", \"OPERATION_PATH_ILLEGAL_ARRAY_INDEX\", index, operation, document);\n } // only parse key when it's an integer for `arr.prop` to work\n else if (isInteger(key)) {\n key = ~~key;\n }\n }\n if (t >= len) {\n if (validateOperation && operation.op === \"add\" && key > obj.length) {\n throw new JsonPatchError(\"The specified index MUST NOT be greater than the number of elements in the array\", \"OPERATION_VALUE_OUT_OF_BOUNDS\", index, operation, document);\n }\n var returnValue = arrOps[operation.op].call(operation, obj, key, document); // Apply patch\n if (returnValue.test === false) {\n throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n }\n return returnValue;\n }\n } else {\n if (t >= len) {\n var returnValue = objOps[operation.op].call(operation, obj, key, document); // Apply patch\n if (returnValue.test === false) {\n throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n }\n return returnValue;\n }\n }\n obj = obj[key];\n // If we have more keys in the path, but the next value isn't a non-null object,\n // throw an OPERATION_PATH_UNRESOLVABLE error instead of iterating again.\n if (validateOperation && t < len && (!obj || typeof obj !== \"object\")) {\n throw new JsonPatchError('Cannot perform operation at the desired path', 'OPERATION_PATH_UNRESOLVABLE', index, operation, document);\n }\n }\n }\n}\n/**\n * Apply a full JSON Patch array on a JSON document.\n * Returns the {newDocument, result} of the patch.\n * It modifies the `document` object and `patch` - it gets the values by reference.\n * If you would like to avoid touching your values, clone them:\n * `jsonpatch.applyPatch(document, jsonpatch._deepClone(patch))`.\n *\n * @param document The document to patch\n * @param patch The patch to apply\n * @param validateOperation `false` is without validation, `true` to use default jsonpatch's validation, or you can pass a `validateOperation` callback to be used for validation.\n * @param mutateDocument Whether to mutate the original document or clone it before applying\n * @param banPrototypeModifications Whether to ban modifications to `__proto__`, defaults to `true`.\n * @return An array of `{newDocument, result}` after the patch\n */\nexport function applyPatch(document, patch, validateOperation, mutateDocument, banPrototypeModifications) {\n if (mutateDocument === void 0) {\n mutateDocument = true;\n }\n if (banPrototypeModifications === void 0) {\n banPrototypeModifications = true;\n }\n if (validateOperation) {\n if (!Array.isArray(patch)) {\n throw new JsonPatchError('Patch sequence must be an array', 'SEQUENCE_NOT_AN_ARRAY');\n }\n }\n if (!mutateDocument) {\n document = _deepClone(document);\n }\n var results = new Array(patch.length);\n for (var i = 0, length_1 = patch.length; i < length_1; i++) {\n // we don't need to pass mutateDocument argument because if it was true, we already deep cloned the object, we'll just pass `true`\n results[i] = applyOperation(document, patch[i], validateOperation, true, banPrototypeModifications, i);\n document = results[i].newDocument; // in case root was replaced\n }\n\n results.newDocument = document;\n return results;\n}\n/**\n * Apply a single JSON Patch Operation on a JSON document.\n * Returns the updated document.\n * Suitable as a reducer.\n *\n * @param document The document to patch\n * @param operation The operation to apply\n * @return The updated document\n */\nexport function applyReducer(document, operation, index) {\n var operationResult = applyOperation(document, operation);\n if (operationResult.test === false) {\n // failed test\n throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n }\n return operationResult.newDocument;\n}\n/**\n * Validates a single operation. Called from `jsonpatch.validate`. Throws `JsonPatchError` in case of an error.\n * @param {object} operation - operation object (patch)\n * @param {number} index - index of operation in the sequence\n * @param {object} [document] - object where the operation is supposed to be applied\n * @param {string} [existingPathFragment] - comes along with `document`\n */\nexport function validator(operation, index, document, existingPathFragment) {\n if (typeof operation !== 'object' || operation === null || Array.isArray(operation)) {\n throw new JsonPatchError('Operation is not an object', 'OPERATION_NOT_AN_OBJECT', index, operation, document);\n } else if (!objOps[operation.op]) {\n throw new JsonPatchError('Operation `op` property is not one of operations defined in RFC-6902', 'OPERATION_OP_INVALID', index, operation, document);\n } else if (typeof operation.path !== 'string') {\n throw new JsonPatchError('Operation `path` property is not a string', 'OPERATION_PATH_INVALID', index, operation, document);\n } else if (operation.path.indexOf('/') !== 0 && operation.path.length > 0) {\n // paths that aren't empty string should start with \"/\"\n throw new JsonPatchError('Operation `path` property must start with \"/\"', 'OPERATION_PATH_INVALID', index, operation, document);\n } else if ((operation.op === 'move' || operation.op === 'copy') && typeof operation.from !== 'string') {\n throw new JsonPatchError('Operation `from` property is not present (applicable in `move` and `copy` operations)', 'OPERATION_FROM_REQUIRED', index, operation, document);\n } else if ((operation.op === 'add' || operation.op === 'replace' || operation.op === 'test') && operation.value === undefined) {\n throw new JsonPatchError('Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)', 'OPERATION_VALUE_REQUIRED', index, operation, document);\n } else if ((operation.op === 'add' || operation.op === 'replace' || operation.op === 'test') && hasUndefined(operation.value)) {\n throw new JsonPatchError('Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)', 'OPERATION_VALUE_CANNOT_CONTAIN_UNDEFINED', index, operation, document);\n } else if (document) {\n if (operation.op == \"add\") {\n var pathLen = operation.path.split(\"/\").length;\n var existingPathLen = existingPathFragment.split(\"/\").length;\n if (pathLen !== existingPathLen + 1 && pathLen !== existingPathLen) {\n throw new JsonPatchError('Cannot perform an `add` operation at the desired path', 'OPERATION_PATH_CANNOT_ADD', index, operation, document);\n }\n } else if (operation.op === 'replace' || operation.op === 'remove' || operation.op === '_get') {\n if (operation.path !== existingPathFragment) {\n throw new JsonPatchError('Cannot perform the operation at a path that does not exist', 'OPERATION_PATH_UNRESOLVABLE', index, operation, document);\n }\n } else if (operation.op === 'move' || operation.op === 'copy') {\n var existingValue = {\n op: \"_get\",\n path: operation.from,\n value: undefined\n };\n var error = validate([existingValue], document);\n if (error && error.name === 'OPERATION_PATH_UNRESOLVABLE') {\n throw new JsonPatchError('Cannot perform the operation from a path that does not exist', 'OPERATION_FROM_UNRESOLVABLE', index, operation, document);\n }\n }\n }\n}\n/**\n * Validates a sequence of operations. If `document` parameter is provided, the sequence is additionally validated against the object document.\n * If error is encountered, returns a JsonPatchError object\n * @param sequence\n * @param document\n * @returns {JsonPatchError|undefined}\n */\nexport function validate(sequence, document, externalValidator) {\n try {\n if (!Array.isArray(sequence)) {\n throw new JsonPatchError('Patch sequence must be an array', 'SEQUENCE_NOT_AN_ARRAY');\n }\n if (document) {\n //clone document and sequence so that we can safely try applying operations\n applyPatch(_deepClone(document), _deepClone(sequence), externalValidator || true);\n } else {\n externalValidator = externalValidator || validator;\n for (var i = 0; i < sequence.length; i++) {\n externalValidator(sequence[i], i, document, undefined);\n }\n }\n } catch (e) {\n if (e instanceof JsonPatchError) {\n return e;\n } else {\n throw e;\n }\n }\n}\n// based on https://github.com/epoberezkin/fast-deep-equal\n// MIT License\n// Copyright (c) 2017 Evgeny Poberezkin\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\nexport function _areEquals(a, b) {\n if (a === b) return true;\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n var arrA = Array.isArray(a),\n arrB = Array.isArray(b),\n i,\n length,\n key;\n if (arrA && arrB) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;) if (!_areEquals(a[i], b[i])) return false;\n return true;\n }\n if (arrA != arrB) return false;\n var keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n for (i = length; i-- !== 0;) if (!b.hasOwnProperty(keys[i])) return false;\n for (i = length; i-- !== 0;) {\n key = keys[i];\n if (!_areEquals(a[key], b[key])) return false;\n }\n return true;\n }\n return a !== a && b !== b;\n}\n;","/*!\n * https://github.com/Starcounter-Jack/JSON-Patch\n * (c) 2017-2021 Joachim Wester\n * MIT license\n */\nimport { _deepClone, _objectKeys, escapePathComponent, hasOwnProperty } from './helpers.mjs';\nimport { applyPatch } from './core.mjs';\nvar beforeDict = new WeakMap();\nvar Mirror = /** @class */function () {\n function Mirror(obj) {\n this.observers = new Map();\n this.obj = obj;\n }\n return Mirror;\n}();\nvar ObserverInfo = /** @class */function () {\n function ObserverInfo(callback, observer) {\n this.callback = callback;\n this.observer = observer;\n }\n return ObserverInfo;\n}();\nfunction getMirror(obj) {\n return beforeDict.get(obj);\n}\nfunction getObserverFromMirror(mirror, callback) {\n return mirror.observers.get(callback);\n}\nfunction removeObserverFromMirror(mirror, observer) {\n mirror.observers.delete(observer.callback);\n}\n/**\n * Detach an observer from an object\n */\nexport function unobserve(root, observer) {\n observer.unobserve();\n}\n/**\n * Observes changes made to an object, which can then be retrieved using generate\n */\nexport function observe(obj, callback) {\n var patches = [];\n var observer;\n var mirror = getMirror(obj);\n if (!mirror) {\n mirror = new Mirror(obj);\n beforeDict.set(obj, mirror);\n } else {\n var observerInfo = getObserverFromMirror(mirror, callback);\n observer = observerInfo && observerInfo.observer;\n }\n if (observer) {\n return observer;\n }\n observer = {};\n mirror.value = _deepClone(obj);\n if (callback) {\n observer.callback = callback;\n observer.next = null;\n var dirtyCheck = function dirtyCheck() {\n generate(observer);\n };\n var fastCheck = function fastCheck() {\n clearTimeout(observer.next);\n observer.next = setTimeout(dirtyCheck);\n };\n if (typeof window !== 'undefined') {\n //not Node\n window.addEventListener('mouseup', fastCheck);\n window.addEventListener('keyup', fastCheck);\n window.addEventListener('mousedown', fastCheck);\n window.addEventListener('keydown', fastCheck);\n window.addEventListener('change', fastCheck);\n }\n }\n observer.patches = patches;\n observer.object = obj;\n observer.unobserve = function () {\n generate(observer);\n clearTimeout(observer.next);\n removeObserverFromMirror(mirror, observer);\n if (typeof window !== 'undefined') {\n window.removeEventListener('mouseup', fastCheck);\n window.removeEventListener('keyup', fastCheck);\n window.removeEventListener('mousedown', fastCheck);\n window.removeEventListener('keydown', fastCheck);\n window.removeEventListener('change', fastCheck);\n }\n };\n mirror.observers.set(callback, new ObserverInfo(callback, observer));\n return observer;\n}\n/**\n * Generate an array of patches from an observer\n */\nexport function generate(observer, invertible) {\n if (invertible === void 0) {\n invertible = false;\n }\n var mirror = beforeDict.get(observer.object);\n _generate(mirror.value, observer.object, observer.patches, \"\", invertible);\n if (observer.patches.length) {\n applyPatch(mirror.value, observer.patches);\n }\n var temp = observer.patches;\n if (temp.length > 0) {\n observer.patches = [];\n if (observer.callback) {\n observer.callback(temp);\n }\n }\n return temp;\n}\n// Dirty check if obj is different from mirror, generate patches and update mirror\nfunction _generate(mirror, obj, patches, path, invertible) {\n if (obj === mirror) {\n return;\n }\n if (typeof obj.toJSON === \"function\") {\n obj = obj.toJSON();\n }\n var newKeys = _objectKeys(obj);\n var oldKeys = _objectKeys(mirror);\n var changed = false;\n var deleted = false;\n //if ever \"move\" operation is implemented here, make sure this test runs OK: \"should not generate the same patch twice (move)\"\n for (var t = oldKeys.length - 1; t >= 0; t--) {\n var key = oldKeys[t];\n var oldVal = mirror[key];\n if (hasOwnProperty(obj, key) && !(obj[key] === undefined && oldVal !== undefined && Array.isArray(obj) === false)) {\n var newVal = obj[key];\n if (typeof oldVal == \"object\" && oldVal != null && typeof newVal == \"object\" && newVal != null && Array.isArray(oldVal) === Array.isArray(newVal)) {\n _generate(oldVal, newVal, patches, path + \"/\" + escapePathComponent(key), invertible);\n } else {\n if (oldVal !== newVal) {\n changed = true;\n if (invertible) {\n patches.push({\n op: \"test\",\n path: path + \"/\" + escapePathComponent(key),\n value: _deepClone(oldVal)\n });\n }\n patches.push({\n op: \"replace\",\n path: path + \"/\" + escapePathComponent(key),\n value: _deepClone(newVal)\n });\n }\n }\n } else if (Array.isArray(mirror) === Array.isArray(obj)) {\n if (invertible) {\n patches.push({\n op: \"test\",\n path: path + \"/\" + escapePathComponent(key),\n value: _deepClone(oldVal)\n });\n }\n patches.push({\n op: \"remove\",\n path: path + \"/\" + escapePathComponent(key)\n });\n deleted = true; // property has been deleted\n } else {\n if (invertible) {\n patches.push({\n op: \"test\",\n path: path,\n value: mirror\n });\n }\n patches.push({\n op: \"replace\",\n path: path,\n value: obj\n });\n changed = true;\n }\n }\n if (!deleted && newKeys.length == oldKeys.length) {\n return;\n }\n for (var t = 0; t < newKeys.length; t++) {\n var key = newKeys[t];\n if (!hasOwnProperty(mirror, key) && obj[key] !== undefined) {\n patches.push({\n op: \"add\",\n path: path + \"/\" + escapePathComponent(key),\n value: _deepClone(obj[key])\n });\n }\n }\n}\n/**\n * Create an array of patches from the differences in two objects\n */\nexport function compare(tree1, tree2, invertible) {\n if (invertible === void 0) {\n invertible = false;\n }\n var patches = [];\n _generate(tree1, tree2, patches, '', invertible);\n return patches;\n}","export * from './module/core.mjs';\nexport * from './module/duplex.mjs';\nexport { PatchError as JsonPatchError, _deepClone as deepClone, escapePathComponent, unescapePathComponent } from './module/helpers.mjs';\n\n/**\n * Default export for backwards compat\n */\n\nimport * as core from './module/core.mjs';\nimport * as duplex from './module/duplex.mjs';\nimport { PatchError as JsonPatchError, _deepClone as deepClone, escapePathComponent, unescapePathComponent } from './module/helpers.mjs';\nexport default Object.assign({}, core, duplex, {\n JsonPatchError: JsonPatchError,\n deepClone: deepClone,\n escapePathComponent: escapePathComponent,\n unescapePathComponent: unescapePathComponent\n});","function accessor(fn, fields, name) {\n fn.fields = fields || [];\n fn.fname = name;\n return fn;\n}\nfunction accessorName(fn) {\n return fn == null ? null : fn.fname;\n}\nfunction accessorFields(fn) {\n return fn == null ? null : fn.fields;\n}\nfunction getter(path) {\n return path.length === 1 ? get1(path[0]) : getN(path);\n}\nvar get1 = function get1(field) {\n return function (obj) {\n return obj[field];\n };\n};\nvar getN = function getN(path) {\n var len = path.length;\n return function (obj) {\n for (var i = 0; i < len; ++i) {\n obj = obj[path[i]];\n }\n return obj;\n };\n};\nfunction error(message) {\n throw Error(message);\n}\nfunction splitAccessPath(p) {\n var path = [],\n n = p.length;\n var q = null,\n b = 0,\n s = '',\n i,\n j,\n c;\n p = p + '';\n function push() {\n path.push(s + p.substring(i, j));\n s = '';\n i = j + 1;\n }\n for (i = j = 0; j < n; ++j) {\n c = p[j];\n if (c === '\\\\') {\n s += p.substring(i, j++);\n i = j;\n } else if (c === q) {\n push();\n q = null;\n b = -1;\n } else if (q) {\n continue;\n } else if (i === b && c === '\"') {\n i = j + 1;\n q = c;\n } else if (i === b && c === \"'\") {\n i = j + 1;\n q = c;\n } else if (c === '.' && !b) {\n if (j > i) {\n push();\n } else {\n i = j + 1;\n }\n } else if (c === '[') {\n if (j > i) push();\n b = i = j + 1;\n } else if (c === ']') {\n if (!b) error('Access path missing open bracket: ' + p);\n if (b > 0) push();\n b = 0;\n i = j + 1;\n }\n }\n if (b) error('Access path missing closing bracket: ' + p);\n if (q) error('Access path missing closing quote: ' + p);\n if (j > i) {\n j++;\n push();\n }\n return path;\n}\nfunction field(field, name, opt) {\n var path = splitAccessPath(field);\n field = path.length === 1 ? path[0] : field;\n return accessor((opt && opt.get || getter)(path), [field], name || field);\n}\nvar id = field('id');\nvar identity = accessor(function (_) {\n return _;\n}, [], 'identity');\nvar zero = accessor(function () {\n return 0;\n}, [], 'zero');\nvar one = accessor(function () {\n return 1;\n}, [], 'one');\nvar truthy = accessor(function () {\n return true;\n}, [], 'true');\nvar falsy = accessor(function () {\n return false;\n}, [], 'false');\nfunction log$1(method, level, input) {\n var args = [level].concat([].slice.call(input));\n console[method].apply(console, args); // eslint-disable-line no-console\n}\n\nvar None = 0;\nvar Error$1 = 1;\nvar Warn = 2;\nvar Info = 3;\nvar Debug = 4;\nfunction logger(_, method) {\n var handler = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : log$1;\n var _level = _ || None;\n return {\n level: function level(_) {\n if (arguments.length) {\n _level = +_;\n return this;\n } else {\n return _level;\n }\n },\n error: function error() {\n if (_level >= Error$1) handler(method || 'error', 'ERROR', arguments);\n return this;\n },\n warn: function warn() {\n if (_level >= Warn) handler(method || 'warn', 'WARN', arguments);\n return this;\n },\n info: function info() {\n if (_level >= Info) handler(method || 'log', 'INFO', arguments);\n return this;\n },\n debug: function debug() {\n if (_level >= Debug) handler(method || 'log', 'DEBUG', arguments);\n return this;\n }\n };\n}\nvar isArray = Array.isArray;\nfunction isObject(_) {\n return _ === Object(_);\n}\nvar isLegalKey = function isLegalKey(key) {\n return key !== '__proto__';\n};\nfunction mergeConfig() {\n for (var _len = arguments.length, configs = new Array(_len), _key = 0; _key < _len; _key++) {\n configs[_key] = arguments[_key];\n }\n return configs.reduce(function (out, source) {\n for (var _key2 in source) {\n if (_key2 === 'signals') {\n // for signals, we merge the signals arrays\n // source signals take precedence over\n // existing signals with the same name\n out.signals = mergeNamed(out.signals, source.signals);\n } else {\n // otherwise, merge objects subject to recursion constraints\n // for legend block, recurse for the layout entry only\n // for style block, recurse for all properties\n // otherwise, no recursion: objects overwrite, no merging\n var r = _key2 === 'legend' ? {\n layout: 1\n } : _key2 === 'style' ? true : null;\n writeConfig(out, _key2, source[_key2], r);\n }\n }\n return out;\n }, {});\n}\nfunction writeConfig(output, key, value, recurse) {\n if (!isLegalKey(key)) return;\n var k, o;\n if (isObject(value) && !isArray(value)) {\n o = isObject(output[key]) ? output[key] : output[key] = {};\n for (k in value) {\n if (recurse && (recurse === true || recurse[k])) {\n writeConfig(o, k, value[k]);\n } else if (isLegalKey(k)) {\n o[k] = value[k];\n }\n }\n } else {\n output[key] = value;\n }\n}\nfunction mergeNamed(a, b) {\n if (a == null) return b;\n var map = {},\n out = [];\n function add(_) {\n if (!map[_.name]) {\n map[_.name] = 1;\n out.push(_);\n }\n }\n b.forEach(add);\n a.forEach(add);\n return out;\n}\nfunction peek(array) {\n return array[array.length - 1];\n}\nfunction toNumber(_) {\n return _ == null || _ === '' ? null : +_;\n}\nvar exp = function exp(sign) {\n return function (x) {\n return sign * Math.exp(x);\n };\n};\nvar log = function log(sign) {\n return function (x) {\n return Math.log(sign * x);\n };\n};\nvar symlog = function symlog(c) {\n return function (x) {\n return Math.sign(x) * Math.log1p(Math.abs(x / c));\n };\n};\nvar symexp = function symexp(c) {\n return function (x) {\n return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n };\n};\nvar pow = function pow(exponent) {\n return function (x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n};\nfunction pan(domain, delta, lift, ground) {\n var d0 = lift(domain[0]),\n d1 = lift(peek(domain)),\n dd = (d1 - d0) * delta;\n return [ground(d0 - dd), ground(d1 - dd)];\n}\nfunction panLinear(domain, delta) {\n return pan(domain, delta, toNumber, identity);\n}\nfunction panLog(domain, delta) {\n var sign = Math.sign(domain[0]);\n return pan(domain, delta, log(sign), exp(sign));\n}\nfunction panPow(domain, delta, exponent) {\n return pan(domain, delta, pow(exponent), pow(1 / exponent));\n}\nfunction panSymlog(domain, delta, constant) {\n return pan(domain, delta, symlog(constant), symexp(constant));\n}\nfunction zoom(domain, anchor, scale, lift, ground) {\n var d0 = lift(domain[0]),\n d1 = lift(peek(domain)),\n da = anchor != null ? lift(anchor) : (d0 + d1) / 2;\n return [ground(da + (d0 - da) * scale), ground(da + (d1 - da) * scale)];\n}\nfunction zoomLinear(domain, anchor, scale) {\n return zoom(domain, anchor, scale, toNumber, identity);\n}\nfunction zoomLog(domain, anchor, scale) {\n var sign = Math.sign(domain[0]);\n return zoom(domain, anchor, scale, log(sign), exp(sign));\n}\nfunction zoomPow(domain, anchor, scale, exponent) {\n return zoom(domain, anchor, scale, pow(exponent), pow(1 / exponent));\n}\nfunction zoomSymlog(domain, anchor, scale, constant) {\n return zoom(domain, anchor, scale, symlog(constant), symexp(constant));\n}\nfunction quarter(date) {\n return 1 + ~~(new Date(date).getMonth() / 3);\n}\nfunction utcquarter(date) {\n return 1 + ~~(new Date(date).getUTCMonth() / 3);\n}\nfunction array(_) {\n return _ != null ? isArray(_) ? _ : [_] : [];\n}\n\n/**\n * Span-preserving range clamp. If the span of the input range is less\n * than (max - min) and an endpoint exceeds either the min or max value,\n * the range is translated such that the span is preserved and one\n * endpoint touches the boundary of the min/max range.\n * If the span exceeds (max - min), the range [min, max] is returned.\n */\nfunction clampRange(range, min, max) {\n var lo = range[0],\n hi = range[1],\n span;\n if (hi < lo) {\n span = hi;\n hi = lo;\n lo = span;\n }\n span = hi - lo;\n return span >= max - min ? [min, max] : [lo = Math.min(Math.max(lo, min), max - span), lo + span];\n}\nfunction isFunction(_) {\n return typeof _ === 'function';\n}\nvar DESCENDING = 'descending';\nfunction compare(fields, orders, opt) {\n opt = opt || {};\n orders = array(orders) || [];\n var ord = [],\n get = [],\n fmap = {},\n gen = opt.comparator || comparator;\n array(fields).forEach(function (f, i) {\n if (f == null) return;\n ord.push(orders[i] === DESCENDING ? -1 : 1);\n get.push(f = isFunction(f) ? f : field(f, null, opt));\n (accessorFields(f) || []).forEach(function (_) {\n return fmap[_] = 1;\n });\n });\n return get.length === 0 ? null : accessor(gen(get, ord), Object.keys(fmap));\n}\nvar ascending = function ascending(u, v) {\n return (u < v || u == null) && v != null ? -1 : (u > v || v == null) && u != null ? 1 : (v = v instanceof Date ? +v : v, u = u instanceof Date ? +u : u) !== u && v === v ? -1 : v !== v && u === u ? 1 : 0;\n};\nvar comparator = function comparator(fields, orders) {\n return fields.length === 1 ? compare1(fields[0], orders[0]) : compareN(fields, orders, fields.length);\n};\nvar compare1 = function compare1(field, order) {\n return function (a, b) {\n return ascending(field(a), field(b)) * order;\n };\n};\nvar compareN = function compareN(fields, orders, n) {\n orders.push(0); // pad zero for convenient lookup\n return function (a, b) {\n var f,\n c = 0,\n i = -1;\n while (c === 0 && ++i < n) {\n f = fields[i];\n c = ascending(f(a), f(b));\n }\n return c * orders[i];\n };\n};\nfunction constant(_) {\n return isFunction(_) ? _ : function () {\n return _;\n };\n}\nfunction debounce(delay, handler) {\n var tid;\n return function (e) {\n if (tid) clearTimeout(tid);\n tid = setTimeout(function () {\n return handler(e), tid = null;\n }, delay);\n };\n}\nfunction extend(_) {\n for (var x, k, i = 1, len = arguments.length; i < len; ++i) {\n x = arguments[i];\n for (k in x) {\n _[k] = x[k];\n }\n }\n return _;\n}\n\n/**\n * Return an array with minimum and maximum values, in the\n * form [min, max]. Ignores null, undefined, and NaN values.\n */\nfunction extent(array, f) {\n var i = 0,\n n,\n v,\n min,\n max;\n if (array && (n = array.length)) {\n if (f == null) {\n // find first valid value\n for (v = array[i]; i < n && (v == null || v !== v); v = array[++i]);\n min = max = v;\n\n // visit all other values\n for (; i < n; ++i) {\n v = array[i];\n // skip null/undefined; NaN will fail all comparisons\n if (v != null) {\n if (v < min) min = v;\n if (v > max) max = v;\n }\n }\n } else {\n // find first valid value\n for (v = f(array[i]); i < n && (v == null || v !== v); v = f(array[++i]));\n min = max = v;\n\n // visit all other values\n for (; i < n; ++i) {\n v = f(array[i]);\n // skip null/undefined; NaN will fail all comparisons\n if (v != null) {\n if (v < min) min = v;\n if (v > max) max = v;\n }\n }\n }\n }\n return [min, max];\n}\nfunction extentIndex(array, f) {\n var n = array.length;\n var i = -1,\n a,\n b,\n c,\n u,\n v;\n if (f == null) {\n while (++i < n) {\n b = array[i];\n if (b != null && b >= b) {\n a = c = b;\n break;\n }\n }\n if (i === n) return [-1, -1];\n u = v = i;\n while (++i < n) {\n b = array[i];\n if (b != null) {\n if (a > b) {\n a = b;\n u = i;\n }\n if (c < b) {\n c = b;\n v = i;\n }\n }\n }\n } else {\n while (++i < n) {\n b = f(array[i], i, array);\n if (b != null && b >= b) {\n a = c = b;\n break;\n }\n }\n if (i === n) return [-1, -1];\n u = v = i;\n while (++i < n) {\n b = f(array[i], i, array);\n if (b != null) {\n if (a > b) {\n a = b;\n u = i;\n }\n if (c < b) {\n c = b;\n v = i;\n }\n }\n }\n }\n return [u, v];\n}\nvar hop = Object.prototype.hasOwnProperty;\nfunction _has(object, property) {\n return hop.call(object, property);\n}\nvar NULL = {};\nfunction fastmap(input) {\n var obj = {},\n _test;\n function has$1(key) {\n return _has(obj, key) && obj[key] !== NULL;\n }\n var map = {\n size: 0,\n empty: 0,\n object: obj,\n has: has$1,\n get: function get(key) {\n return has$1(key) ? obj[key] : undefined;\n },\n set: function set(key, value) {\n if (!has$1(key)) {\n ++map.size;\n if (obj[key] === NULL) --map.empty;\n }\n obj[key] = value;\n return this;\n },\n delete: function _delete(key) {\n if (has$1(key)) {\n --map.size;\n ++map.empty;\n obj[key] = NULL;\n }\n return this;\n },\n clear: function clear() {\n map.size = map.empty = 0;\n map.object = obj = {};\n },\n test: function test(_) {\n if (arguments.length) {\n _test = _;\n return map;\n } else {\n return _test;\n }\n },\n clean: function clean() {\n var next = {};\n var size = 0;\n for (var _key3 in obj) {\n var value = obj[_key3];\n if (value !== NULL && (!_test || !_test(value))) {\n next[_key3] = value;\n ++size;\n }\n }\n map.size = size;\n map.empty = 0;\n map.object = obj = next;\n }\n };\n if (input) Object.keys(input).forEach(function (key) {\n map.set(key, input[key]);\n });\n return map;\n}\nfunction flush(range, value, threshold, left, right, center) {\n if (!threshold && threshold !== 0) return center;\n var t = +threshold;\n var a = range[0],\n b = peek(range),\n l;\n\n // swap endpoints if range is reversed\n if (b < a) {\n l = a;\n a = b;\n b = l;\n }\n\n // compare value to endpoints\n l = Math.abs(value - a);\n var r = Math.abs(b - value);\n\n // adjust if value is within threshold distance of endpoint\n return l < r && l <= t ? left : r <= t ? right : center;\n}\nfunction inherits(child, parent, members) {\n var proto = child.prototype = Object.create(parent.prototype);\n Object.defineProperty(proto, 'constructor', {\n value: child,\n writable: true,\n enumerable: true,\n configurable: true\n });\n return extend(proto, members);\n}\n\n/**\n * Predicate that returns true if the value lies within the span\n * of the given range. The left and right flags control the use\n * of inclusive (true) or exclusive (false) comparisons.\n */\nfunction inrange(value, range, left, right) {\n var r0 = range[0],\n r1 = range[range.length - 1],\n t;\n if (r0 > r1) {\n t = r0;\n r0 = r1;\n r1 = t;\n }\n left = left === undefined || left;\n right = right === undefined || right;\n return (left ? r0 <= value : r0 < value) && (right ? value <= r1 : value < r1);\n}\nfunction isBoolean(_) {\n return typeof _ === 'boolean';\n}\nfunction isDate(_) {\n return Object.prototype.toString.call(_) === '[object Date]';\n}\nfunction isIterable(_) {\n return _ && isFunction(_[Symbol.iterator]);\n}\nfunction isNumber(_) {\n return typeof _ === 'number';\n}\nfunction isRegExp(_) {\n return Object.prototype.toString.call(_) === '[object RegExp]';\n}\nfunction isString(_) {\n return typeof _ === 'string';\n}\nfunction key(fields, flat, opt) {\n if (fields) {\n fields = flat ? array(fields).map(function (f) {\n return f.replace(/\\\\(.)/g, '$1');\n }) : array(fields);\n }\n var len = fields && fields.length,\n gen = opt && opt.get || getter,\n map = function map(f) {\n return gen(flat ? [f] : splitAccessPath(f));\n };\n var fn;\n if (!len) {\n fn = function fn() {\n return '';\n };\n } else if (len === 1) {\n var get = map(fields[0]);\n fn = function fn(_) {\n return '' + get(_);\n };\n } else {\n var _get = fields.map(map);\n fn = function fn(_) {\n var s = '' + _get[0](_),\n i = 0;\n while (++i < len) s += '|' + _get[i](_);\n return s;\n };\n }\n return accessor(fn, fields, 'key');\n}\nfunction lerp(array, frac) {\n var lo = array[0],\n hi = peek(array),\n f = +frac;\n return !f ? lo : f === 1 ? hi : lo + f * (hi - lo);\n}\nvar DEFAULT_MAX_SIZE = 10000;\n\n// adapted from https://github.com/dominictarr/hashlru/ (MIT License)\nfunction lruCache(maxsize) {\n maxsize = +maxsize || DEFAULT_MAX_SIZE;\n var curr, prev, size;\n var clear = function clear() {\n curr = {};\n prev = {};\n size = 0;\n };\n var update = function update(key, value) {\n if (++size > maxsize) {\n prev = curr;\n curr = {};\n size = 1;\n }\n return curr[key] = value;\n };\n clear();\n return {\n clear: clear,\n has: function has(key) {\n return _has(curr, key) || _has(prev, key);\n },\n get: function get(key) {\n return _has(curr, key) ? curr[key] : _has(prev, key) ? update(key, prev[key]) : undefined;\n },\n set: function set(key, value) {\n return _has(curr, key) ? curr[key] = value : update(key, value);\n }\n };\n}\nfunction merge(compare, array0, array1, output) {\n var n0 = array0.length,\n n1 = array1.length;\n if (!n1) return array0;\n if (!n0) return array1;\n var merged = output || new array0.constructor(n0 + n1);\n var i0 = 0,\n i1 = 0,\n i = 0;\n for (; i0 < n0 && i1 < n1; ++i) {\n merged[i] = compare(array0[i0], array1[i1]) > 0 ? array1[i1++] : array0[i0++];\n }\n for (; i0 < n0; ++i0, ++i) {\n merged[i] = array0[i0];\n }\n for (; i1 < n1; ++i1, ++i) {\n merged[i] = array1[i1];\n }\n return merged;\n}\nfunction repeat(str, reps) {\n var s = '';\n while (--reps >= 0) s += str;\n return s;\n}\nfunction pad(str, length, padchar, align) {\n var c = padchar || ' ',\n s = str + '',\n n = length - s.length;\n return n <= 0 ? s : align === 'left' ? repeat(c, n) + s : align === 'center' ? repeat(c, ~~(n / 2)) + s + repeat(c, Math.ceil(n / 2)) : s + repeat(c, n);\n}\n\n/**\n * Return the numerical span of an array: the difference between\n * the last and first values.\n */\nfunction span(array) {\n return array && peek(array) - array[0] || 0;\n}\nfunction $(x) {\n return isArray(x) ? '[' + x.map($) + ']' : isObject(x) || isString(x) ?\n // Output valid JSON and JS source strings.\n // See http://timelessrepo.com/json-isnt-a-javascript-subset\n JSON.stringify(x).replace(\"\\u2028\", \"\\\\u2028\").replace(\"\\u2029\", \"\\\\u2029\") : x;\n}\nfunction toBoolean(_) {\n return _ == null || _ === '' ? null : !_ || _ === 'false' || _ === '0' ? false : !!_;\n}\nvar defaultParser = function defaultParser(_) {\n return isNumber(_) ? _ : isDate(_) ? _ : Date.parse(_);\n};\nfunction toDate(_, parser) {\n parser = parser || defaultParser;\n return _ == null || _ === '' ? null : parser(_);\n}\nfunction toString(_) {\n return _ == null || _ === '' ? null : _ + '';\n}\nfunction toSet(_) {\n var s = {},\n n = _.length;\n for (var i = 0; i < n; ++i) s[_[i]] = true;\n return s;\n}\nfunction truncate(str, length, align, ellipsis) {\n var e = ellipsis != null ? ellipsis : \"\\u2026\",\n s = str + '',\n n = s.length,\n l = Math.max(0, length - e.length);\n return n <= length ? s : align === 'left' ? e + s.slice(n - l) : align === 'center' ? s.slice(0, Math.ceil(l / 2)) + e + s.slice(n - ~~(l / 2)) : s.slice(0, l) + e;\n}\nfunction visitArray(array, filter, visitor) {\n if (array) {\n if (filter) {\n var n = array.length;\n for (var i = 0; i < n; ++i) {\n var t = filter(array[i]);\n if (t) visitor(t, i, array);\n }\n } else {\n array.forEach(visitor);\n }\n }\n}\nexport { Debug, Error$1 as Error, Info, None, Warn, accessor, accessorFields, accessorName, array, ascending, clampRange, compare, constant, debounce, error, extend, extent, extentIndex, falsy, fastmap, field, flush, _has as hasOwnProperty, id, identity, inherits, inrange, isArray, isBoolean, isDate, isFunction, isIterable, isNumber, isObject, isRegExp, isString, key, lerp, logger, lruCache, merge, mergeConfig, one, pad, panLinear, panLog, panPow, panSymlog, peek, quarter, repeat, span, splitAccessPath, $ as stringValue, toBoolean, toDate, toNumber, toSet, toString, truncate, truthy, utcquarter, visitArray, writeConfig, zero, zoomLinear, zoomLog, zoomPow, zoomSymlog };","var EOL = {},\n EOF = {},\n QUOTE = 34,\n NEWLINE = 10,\n RETURN = 13;\nfunction objectConverter(columns) {\n return new Function(\"d\", \"return {\" + columns.map(function (name, i) {\n return JSON.stringify(name) + \": d[\" + i + \"] || \\\"\\\"\";\n }).join(\",\") + \"}\");\n}\nfunction customConverter(columns, f) {\n var object = objectConverter(columns);\n return function (row, i) {\n return f(object(row), i, columns);\n };\n}\n\n// Compute unique columns in order of discovery.\nfunction inferColumns(rows) {\n var columnSet = Object.create(null),\n columns = [];\n rows.forEach(function (row) {\n for (var column in row) {\n if (!(column in columnSet)) {\n columns.push(columnSet[column] = column);\n }\n }\n });\n return columns;\n}\nfunction pad(value, width) {\n var s = value + \"\",\n length = s.length;\n return length < width ? new Array(width - length + 1).join(0) + s : s;\n}\nfunction formatYear(year) {\n return year < 0 ? \"-\" + pad(-year, 6) : year > 9999 ? \"+\" + pad(year, 6) : pad(year, 4);\n}\nfunction formatDate(date) {\n var hours = date.getUTCHours(),\n minutes = date.getUTCMinutes(),\n seconds = date.getUTCSeconds(),\n milliseconds = date.getUTCMilliseconds();\n return isNaN(date) ? \"Invalid Date\" : formatYear(date.getUTCFullYear(), 4) + \"-\" + pad(date.getUTCMonth() + 1, 2) + \"-\" + pad(date.getUTCDate(), 2) + (milliseconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \".\" + pad(milliseconds, 3) + \"Z\" : seconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \"Z\" : minutes || hours ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \"Z\" : \"\");\n}\nexport default function (delimiter) {\n var reFormat = new RegExp(\"[\\\"\" + delimiter + \"\\n\\r]\"),\n DELIMITER = delimiter.charCodeAt(0);\n function parse(text, f) {\n var convert,\n columns,\n rows = parseRows(text, function (row, i) {\n if (convert) return convert(row, i - 1);\n columns = row, convert = f ? customConverter(row, f) : objectConverter(row);\n });\n rows.columns = columns || [];\n return rows;\n }\n function parseRows(text, f) {\n var rows = [],\n // output rows\n N = text.length,\n I = 0,\n // current character index\n n = 0,\n // current line number\n t,\n // current token\n eof = N <= 0,\n // current token followed by EOF?\n eol = false; // current token followed by EOL?\n\n // Strip the trailing newline.\n if (text.charCodeAt(N - 1) === NEWLINE) --N;\n if (text.charCodeAt(N - 1) === RETURN) --N;\n function token() {\n if (eof) return EOF;\n if (eol) return eol = false, EOL;\n\n // Unescape quotes.\n var i,\n j = I,\n c;\n if (text.charCodeAt(j) === QUOTE) {\n while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE);\n if ((i = I) >= N) eof = true;else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true;else if (c === RETURN) {\n eol = true;\n if (text.charCodeAt(I) === NEWLINE) ++I;\n }\n return text.slice(j + 1, i - 1).replace(/\"\"/g, \"\\\"\");\n }\n\n // Find next delimiter or newline.\n while (I < N) {\n if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true;else if (c === RETURN) {\n eol = true;\n if (text.charCodeAt(I) === NEWLINE) ++I;\n } else if (c !== DELIMITER) continue;\n return text.slice(j, i);\n }\n\n // Return last token before EOF.\n return eof = true, text.slice(j, N);\n }\n while ((t = token()) !== EOF) {\n var row = [];\n while (t !== EOL && t !== EOF) row.push(t), t = token();\n if (f && (row = f(row, n++)) == null) continue;\n rows.push(row);\n }\n return rows;\n }\n function preformatBody(rows, columns) {\n return rows.map(function (row) {\n return columns.map(function (column) {\n return formatValue(row[column]);\n }).join(delimiter);\n });\n }\n function format(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return [columns.map(formatValue).join(delimiter)].concat(preformatBody(rows, columns)).join(\"\\n\");\n }\n function formatBody(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return preformatBody(rows, columns).join(\"\\n\");\n }\n function formatRows(rows) {\n return rows.map(formatRow).join(\"\\n\");\n }\n function formatRow(row) {\n return row.map(formatValue).join(delimiter);\n }\n function formatValue(value) {\n return value == null ? \"\" : value instanceof Date ? formatDate(value) : reFormat.test(value += \"\") ? \"\\\"\" + value.replace(/\"/g, \"\\\"\\\"\") + \"\\\"\" : value;\n }\n return {\n parse: parse,\n parseRows: parseRows,\n format: format,\n formatBody: formatBody,\n formatRows: formatRows,\n formatRow: formatRow,\n formatValue: formatValue\n };\n}","export default function (x) {\n return x;\n}","import reverse from \"./reverse.js\";\nimport transform from \"./transform.js\";\nexport default function (topology, o) {\n if (typeof o === \"string\") o = topology.objects[o];\n return o.type === \"GeometryCollection\" ? {\n type: \"FeatureCollection\",\n features: o.geometries.map(function (o) {\n return feature(topology, o);\n })\n } : feature(topology, o);\n}\nfunction feature(topology, o) {\n var id = o.id,\n bbox = o.bbox,\n properties = o.properties == null ? {} : o.properties,\n geometry = object(topology, o);\n return id == null && bbox == null ? {\n type: \"Feature\",\n properties: properties,\n geometry: geometry\n } : bbox == null ? {\n type: \"Feature\",\n id: id,\n properties: properties,\n geometry: geometry\n } : {\n type: \"Feature\",\n id: id,\n bbox: bbox,\n properties: properties,\n geometry: geometry\n };\n}\nexport function object(topology, o) {\n var transformPoint = transform(topology.transform),\n arcs = topology.arcs;\n function arc(i, points) {\n if (points.length) points.pop();\n for (var a = arcs[i < 0 ? ~i : i], k = 0, n = a.length; k < n; ++k) {\n points.push(transformPoint(a[k], k));\n }\n if (i < 0) reverse(points, n);\n }\n function point(p) {\n return transformPoint(p);\n }\n function line(arcs) {\n var points = [];\n for (var i = 0, n = arcs.length; i < n; ++i) arc(arcs[i], points);\n if (points.length < 2) points.push(points[0]); // This should never happen per the specification.\n return points;\n }\n function ring(arcs) {\n var points = line(arcs);\n while (points.length < 4) points.push(points[0]); // This may happen if an arc has only two points.\n return points;\n }\n function polygon(arcs) {\n return arcs.map(ring);\n }\n function geometry(o) {\n var type = o.type,\n coordinates;\n switch (type) {\n case \"GeometryCollection\":\n return {\n type: type,\n geometries: o.geometries.map(geometry)\n };\n case \"Point\":\n coordinates = point(o.coordinates);\n break;\n case \"MultiPoint\":\n coordinates = o.coordinates.map(point);\n break;\n case \"LineString\":\n coordinates = line(o.arcs);\n break;\n case \"MultiLineString\":\n coordinates = o.arcs.map(line);\n break;\n case \"Polygon\":\n coordinates = polygon(o.arcs);\n break;\n case \"MultiPolygon\":\n coordinates = o.arcs.map(polygon);\n break;\n default:\n return null;\n }\n return {\n type: type,\n coordinates: coordinates\n };\n }\n return geometry(o);\n}","import identity from \"./identity.js\";\nexport default function (transform) {\n if (transform == null) return identity;\n var x0,\n y0,\n kx = transform.scale[0],\n ky = transform.scale[1],\n dx = transform.translate[0],\n dy = transform.translate[1];\n return function (input, i) {\n if (!i) x0 = y0 = 0;\n var j = 2,\n n = input.length,\n output = new Array(n);\n output[0] = (x0 += input[0]) * kx + dx;\n output[1] = (y0 += input[1]) * ky + dy;\n while (j < n) output[j] = input[j], ++j;\n return output;\n };\n}","export default function (array, n) {\n var t,\n j = array.length,\n i = j - n;\n while (i < --j) t = array[i], array[i++] = array[j], array[j] = t;\n}","export default function (topology, arcs) {\n var stitchedArcs = {},\n fragmentByStart = {},\n fragmentByEnd = {},\n fragments = [],\n emptyIndex = -1;\n\n // Stitch empty arcs first, since they may be subsumed by other arcs.\n arcs.forEach(function (i, j) {\n var arc = topology.arcs[i < 0 ? ~i : i],\n t;\n if (arc.length < 3 && !arc[1][0] && !arc[1][1]) {\n t = arcs[++emptyIndex], arcs[emptyIndex] = i, arcs[j] = t;\n }\n });\n arcs.forEach(function (i) {\n var e = ends(i),\n start = e[0],\n end = e[1],\n f,\n g;\n if (f = fragmentByEnd[start]) {\n delete fragmentByEnd[f.end];\n f.push(i);\n f.end = end;\n if (g = fragmentByStart[end]) {\n delete fragmentByStart[g.start];\n var fg = g === f ? f : f.concat(g);\n fragmentByStart[fg.start = f.start] = fragmentByEnd[fg.end = g.end] = fg;\n } else {\n fragmentByStart[f.start] = fragmentByEnd[f.end] = f;\n }\n } else if (f = fragmentByStart[end]) {\n delete fragmentByStart[f.start];\n f.unshift(i);\n f.start = start;\n if (g = fragmentByEnd[start]) {\n delete fragmentByEnd[g.end];\n var gf = g === f ? f : g.concat(f);\n fragmentByStart[gf.start = g.start] = fragmentByEnd[gf.end = f.end] = gf;\n } else {\n fragmentByStart[f.start] = fragmentByEnd[f.end] = f;\n }\n } else {\n f = [i];\n fragmentByStart[f.start = start] = fragmentByEnd[f.end = end] = f;\n }\n });\n function ends(i) {\n var arc = topology.arcs[i < 0 ? ~i : i],\n p0 = arc[0],\n p1;\n if (topology.transform) p1 = [0, 0], arc.forEach(function (dp) {\n p1[0] += dp[0], p1[1] += dp[1];\n });else p1 = arc[arc.length - 1];\n return i < 0 ? [p1, p0] : [p0, p1];\n }\n function flush(fragmentByEnd, fragmentByStart) {\n for (var k in fragmentByEnd) {\n var f = fragmentByEnd[k];\n delete fragmentByStart[f.start];\n delete f.start;\n delete f.end;\n f.forEach(function (i) {\n stitchedArcs[i < 0 ? ~i : i] = 1;\n });\n fragments.push(f);\n }\n }\n flush(fragmentByEnd, fragmentByStart);\n flush(fragmentByStart, fragmentByEnd);\n arcs.forEach(function (i) {\n if (!stitchedArcs[i < 0 ? ~i : i]) fragments.push([i]);\n });\n return fragments;\n}","import { object } from \"./feature.js\";\nimport stitch from \"./stitch.js\";\nexport default function (topology) {\n return object(topology, meshArcs.apply(this, arguments));\n}\nexport function meshArcs(topology, object, filter) {\n var arcs, i, n;\n if (arguments.length > 1) arcs = extractArcs(topology, object, filter);else for (i = 0, arcs = new Array(n = topology.arcs.length); i < n; ++i) arcs[i] = i;\n return {\n type: \"MultiLineString\",\n arcs: stitch(topology, arcs)\n };\n}\nfunction extractArcs(topology, object, filter) {\n var arcs = [],\n geomsByArc = [],\n geom;\n function extract0(i) {\n var j = i < 0 ? ~i : i;\n (geomsByArc[j] || (geomsByArc[j] = [])).push({\n i: i,\n g: geom\n });\n }\n function extract1(arcs) {\n arcs.forEach(extract0);\n }\n function extract2(arcs) {\n arcs.forEach(extract1);\n }\n function extract3(arcs) {\n arcs.forEach(extract2);\n }\n function geometry(o) {\n switch (geom = o, o.type) {\n case \"GeometryCollection\":\n o.geometries.forEach(geometry);\n break;\n case \"LineString\":\n extract1(o.arcs);\n break;\n case \"MultiLineString\":\n case \"Polygon\":\n extract2(o.arcs);\n break;\n case \"MultiPolygon\":\n extract3(o.arcs);\n break;\n }\n }\n geometry(object);\n geomsByArc.forEach(filter == null ? function (geoms) {\n arcs.push(geoms[0].i);\n } : function (geoms) {\n if (filter(geoms[0].g, geoms[geoms.length - 1].g)) arcs.push(geoms[0].i);\n });\n return arcs;\n}","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nvar e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\nfunction tickSpec(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log10(step)),\n error = step / Math.pow(10, power),\n factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;\n var i1, i2, inc;\n if (power < 0) {\n inc = Math.pow(10, -power) / factor;\n i1 = Math.round(start * inc);\n i2 = Math.round(stop * inc);\n if (i1 / inc < start) ++i1;\n if (i2 / inc > stop) --i2;\n inc = -inc;\n } else {\n inc = Math.pow(10, power) * factor;\n i1 = Math.round(start / inc);\n i2 = Math.round(stop / inc);\n if (i1 * inc < start) ++i1;\n if (i2 * inc > stop) --i2;\n }\n if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);\n return [i1, i2, inc];\n}\nexport default function ticks(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n if (!(count > 0)) return [];\n if (start === stop) return [start];\n var reverse = stop < start,\n _ref = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count),\n _ref2 = _slicedToArray(_ref, 3),\n i1 = _ref2[0],\n i2 = _ref2[1],\n inc = _ref2[2];\n if (!(i2 >= i1)) return [];\n var n = i2 - i1 + 1,\n ticks = new Array(n);\n if (reverse) {\n if (inc < 0) for (var i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;else for (var _i = 0; _i < n; ++_i) ticks[_i] = (i2 - _i) * inc;\n } else {\n if (inc < 0) for (var _i2 = 0; _i2 < n; ++_i2) ticks[_i2] = (i1 + _i2) / -inc;else for (var _i3 = 0; _i3 < n; ++_i3) ticks[_i3] = (i1 + _i3) * inc;\n }\n return ticks;\n}\nexport function tickIncrement(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n return tickSpec(start, stop, count)[2];\n}\nexport function tickStep(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n var reverse = stop < start,\n inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);\n}","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\nFormatSpecifier.prototype.toString = function () {\n return this.fill + this.align + this.sign + this.symbol + (this.zero ? \"0\" : \"\") + (this.width === undefined ? \"\" : Math.max(1, this.width | 0)) + (this.comma ? \",\" : \"\") + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0)) + (this.trim ? \"~\" : \"\") + this.type;\n};","import { formatDecimalParts } from \"./formatDecimal.js\";\nexport var prefixExponent;\nexport default function (x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient : i > n ? coefficient + new Array(i - n + 1).join(\"0\") : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i) : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}","export default function (x) {\n return Math.abs(x = Math.round(x)) >= 1e21 ? x.toLocaleString(\"en\").replace(/,/g, \"\") : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i,\n coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient, +x.slice(i + 1)];\n}","import { formatDecimalParts } from \"./formatDecimal.js\";\nexport default function (x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}","import { formatDecimalParts } from \"./formatDecimal.js\";\nexport default function (x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1) : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\nexport default {\n \"%\": function _(x, p) {\n return (x * 100).toFixed(p);\n },\n \"b\": function b(x) {\n return Math.round(x).toString(2);\n },\n \"c\": function c(x) {\n return x + \"\";\n },\n \"d\": formatDecimal,\n \"e\": function e(x, p) {\n return x.toExponential(p);\n },\n \"f\": function f(x, p) {\n return x.toFixed(p);\n },\n \"g\": function g(x, p) {\n return x.toPrecision(p);\n },\n \"o\": function o(x) {\n return Math.round(x).toString(8);\n },\n \"p\": function p(x, _p) {\n return formatRounded(x * 100, _p);\n },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function X(x) {\n return Math.round(x).toString(16).toUpperCase();\n },\n \"x\": function x(_x) {\n return Math.round(_x).toString(16);\n }\n};","export default function (x) {\n return x;\n}","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport { prefixExponent } from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\nvar map = Array.prototype.map,\n prefixes = [\"y\", \"z\", \"a\", \"f\", \"p\", \"n\", \"µ\", \"m\", \"\", \"k\", \"M\", \"G\", \"T\", \"P\", \"E\", \"Z\", \"Y\"];\nexport default function (locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || fill === \"0\" && align === \"=\") zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6 : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision)) : Math.max(0, Math.min(20, precision));\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i,\n n,\n c;\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? sign === \"(\" ? sign : minus : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\":\n value = valuePrefix + value + valueSuffix + padding;\n break;\n case \"=\":\n value = valuePrefix + padding + value + valueSuffix;\n break;\n case \"^\":\n value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length);\n break;\n default:\n value = padding + valuePrefix + value + valueSuffix;\n break;\n }\n return numerals(value);\n }\n format.toString = function () {\n return specifier + \"\";\n };\n return format;\n }\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function (value) {\n return f(k * value) + prefix;\n };\n }\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}","import formatLocale from \"./locale.js\";\nvar locale;\nexport var format;\nexport var formatPrefix;\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}","export default function (grouping, thousands) {\n return function (value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n return t.reverse().join(thousands);\n };\n}","export default function (numerals) {\n return function (value) {\n return value.replace(/[0-9]/g, function (i) {\n return numerals[+i];\n });\n };\n}","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function (s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\":\n i0 = i1 = i;\n break;\n case \"0\":\n if (i0 === 0) i0 = i;\n i1 = i;\n break;\n default:\n if (!+s[i]) break out;\n if (i0 > 0) i0 = 0;\n break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}","var t0 = new Date(),\n t1 = new Date();\nexport function timeInterval(floori, offseti, count, field) {\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date() : new Date(+date)), date;\n }\n interval.floor = function (date) {\n return floori(date = new Date(+date)), date;\n };\n interval.ceil = function (date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n interval.round = function (date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n interval.offset = function (date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n interval.range = function (start, stop, step) {\n var range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n var previous;\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start); while (previous < start && start < stop);\n return range;\n };\n interval.filter = function (test) {\n return timeInterval(function (date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function (date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function (start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n interval.every = function (step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null : !(step > 1) ? interval : interval.filter(field ? function (d) {\n return field(d) % step === 0;\n } : function (d) {\n return interval.count(0, d) % step === 0;\n });\n };\n }\n return interval;\n}","export var durationSecond = 1000;\nexport var durationMinute = durationSecond * 60;\nexport var durationHour = durationMinute * 60;\nexport var durationDay = durationHour * 24;\nexport var durationWeek = durationDay * 7;\nexport var durationMonth = durationDay * 30;\nexport var durationYear = durationDay * 365;","import { timeInterval } from \"./interval.js\";\nimport { durationDay, durationMinute } from \"./duration.js\";\nexport var timeDay = timeInterval(function (date) {\n return date.setHours(0, 0, 0, 0);\n}, function (date, step) {\n return date.setDate(date.getDate() + step);\n}, function (start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function (date) {\n return date.getDate() - 1;\n});\nexport var timeDays = timeDay.range;\nexport var utcDay = timeInterval(function (date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function (date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function (start, end) {\n return (end - start) / durationDay;\n}, function (date) {\n return date.getUTCDate() - 1;\n});\nexport var utcDays = utcDay.range;\nexport var unixDay = timeInterval(function (date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function (date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function (start, end) {\n return (end - start) / durationDay;\n}, function (date) {\n return Math.floor(date / durationDay);\n});\nexport var unixDays = unixDay.range;","import { timeInterval } from \"./interval.js\";\nimport { durationMinute, durationWeek } from \"./duration.js\";\nfunction timeWeekday(i) {\n return timeInterval(function (date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function (date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function (start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\nexport var timeSunday = timeWeekday(0);\nexport var timeMonday = timeWeekday(1);\nexport var timeTuesday = timeWeekday(2);\nexport var timeWednesday = timeWeekday(3);\nexport var timeThursday = timeWeekday(4);\nexport var timeFriday = timeWeekday(5);\nexport var timeSaturday = timeWeekday(6);\nexport var timeSundays = timeSunday.range;\nexport var timeMondays = timeMonday.range;\nexport var timeTuesdays = timeTuesday.range;\nexport var timeWednesdays = timeWednesday.range;\nexport var timeThursdays = timeThursday.range;\nexport var timeFridays = timeFriday.range;\nexport var timeSaturdays = timeSaturday.range;\nfunction utcWeekday(i) {\n return timeInterval(function (date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function (date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function (start, end) {\n return (end - start) / durationWeek;\n });\n}\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;","import { timeInterval } from \"./interval.js\";\nexport var timeYear = timeInterval(function (date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function (date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function (start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function (date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\ntimeYear.every = function (k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval(function (date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function (date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\nexport var timeYears = timeYear.range;\nexport var utcYear = timeInterval(function (date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function (date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function (start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function (date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function (k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval(function (date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function (date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\nexport var utcYears = utcYear.range;","import { timeInterval } from \"./interval.js\";\nexport var timeMonth = timeInterval(function (date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function (date, step) {\n date.setMonth(date.getMonth() + step);\n}, function (start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function (date) {\n return date.getMonth();\n});\nexport var timeMonths = timeMonth.range;\nexport var utcMonth = timeInterval(function (date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function (date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function (start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function (date) {\n return date.getUTCMonth();\n});\nexport var utcMonths = utcMonth.range;","import { timeInterval } from \"./interval.js\";\nimport { durationHour, durationMinute, durationSecond } from \"./duration.js\";\nexport var timeHour = timeInterval(function (date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function (date, step) {\n date.setTime(+date + step * durationHour);\n}, function (start, end) {\n return (end - start) / durationHour;\n}, function (date) {\n return date.getHours();\n});\nexport var timeHours = timeHour.range;\nexport var utcHour = timeInterval(function (date) {\n date.setUTCMinutes(0, 0, 0);\n}, function (date, step) {\n date.setTime(+date + step * durationHour);\n}, function (start, end) {\n return (end - start) / durationHour;\n}, function (date) {\n return date.getUTCHours();\n});\nexport var utcHours = utcHour.range;","import { timeInterval } from \"./interval.js\";\nimport { durationMinute, durationSecond } from \"./duration.js\";\nexport var timeMinute = timeInterval(function (date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function (date, step) {\n date.setTime(+date + step * durationMinute);\n}, function (start, end) {\n return (end - start) / durationMinute;\n}, function (date) {\n return date.getMinutes();\n});\nexport var timeMinutes = timeMinute.range;\nexport var utcMinute = timeInterval(function (date) {\n date.setUTCSeconds(0, 0);\n}, function (date, step) {\n date.setTime(+date + step * durationMinute);\n}, function (start, end) {\n return (end - start) / durationMinute;\n}, function (date) {\n return date.getUTCMinutes();\n});\nexport var utcMinutes = utcMinute.range;","import { timeInterval } from \"./interval.js\";\nimport { durationSecond } from \"./duration.js\";\nexport var second = timeInterval(function (date) {\n date.setTime(date - date.getMilliseconds());\n}, function (date, step) {\n date.setTime(+date + step * durationSecond);\n}, function (start, end) {\n return (end - start) / durationSecond;\n}, function (date) {\n return date.getUTCSeconds();\n});\nexport var seconds = second.range;","import { timeInterval } from \"./interval.js\";\nexport var millisecond = timeInterval(function () {\n // noop\n}, function (date, step) {\n date.setTime(+date + step);\n}, function (start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function (k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return timeInterval(function (date) {\n date.setTime(Math.floor(date / k) * k);\n }, function (date, step) {\n date.setTime(+date + step * k);\n }, function (start, end) {\n return (end - start) / k;\n });\n};\nexport var milliseconds = millisecond.range;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nvar _defaultSpecifiers, _localGet, _localInv, _utcGet, _utcInv, _timeIntervals, _utcIntervals;\nimport { array, error, hasOwnProperty, extend, peek, toSet, constant, zero, one, span } from 'vega-util';\nimport { timeDay, timeWeek, utcDay, utcWeek, timeYear, timeMonth, timeHour, timeMinute, timeSecond, timeMillisecond, utcYear, utcMonth, utcHour, utcMinute, utcSecond, utcMillisecond } from 'd3-time';\nimport { bisector, tickStep } from 'd3-array';\nvar YEAR = 'year';\nvar QUARTER = 'quarter';\nvar MONTH = 'month';\nvar WEEK = 'week';\nvar DATE = 'date';\nvar DAY = 'day';\nvar DAYOFYEAR = 'dayofyear';\nvar HOURS = 'hours';\nvar MINUTES = 'minutes';\nvar SECONDS = 'seconds';\nvar MILLISECONDS = 'milliseconds';\nvar TIME_UNITS = [YEAR, QUARTER, MONTH, WEEK, DATE, DAY, DAYOFYEAR, HOURS, MINUTES, SECONDS, MILLISECONDS];\nvar UNITS = TIME_UNITS.reduce(function (o, u, i) {\n return o[u] = 1 + i, o;\n}, {});\nfunction timeUnits(units) {\n var u = array(units).slice(),\n m = {};\n\n // check validity\n if (!u.length) error('Missing time unit.');\n u.forEach(function (unit) {\n if (hasOwnProperty(UNITS, unit)) {\n m[unit] = 1;\n } else {\n error(\"Invalid time unit: \".concat(unit, \".\"));\n }\n });\n var numTypes = (m[WEEK] || m[DAY] ? 1 : 0) + (m[QUARTER] || m[MONTH] || m[DATE] ? 1 : 0) + (m[DAYOFYEAR] ? 1 : 0);\n if (numTypes > 1) {\n error(\"Incompatible time units: \".concat(units));\n }\n\n // ensure proper sort order\n u.sort(function (a, b) {\n return UNITS[a] - UNITS[b];\n });\n return u;\n}\nvar defaultSpecifiers = (_defaultSpecifiers = {}, _defineProperty(_defaultSpecifiers, YEAR, '%Y '), _defineProperty(_defaultSpecifiers, QUARTER, 'Q%q '), _defineProperty(_defaultSpecifiers, MONTH, '%b '), _defineProperty(_defaultSpecifiers, DATE, '%d '), _defineProperty(_defaultSpecifiers, WEEK, 'W%U '), _defineProperty(_defaultSpecifiers, DAY, '%a '), _defineProperty(_defaultSpecifiers, DAYOFYEAR, '%j '), _defineProperty(_defaultSpecifiers, HOURS, '%H:00'), _defineProperty(_defaultSpecifiers, MINUTES, '00:%M'), _defineProperty(_defaultSpecifiers, SECONDS, ':%S'), _defineProperty(_defaultSpecifiers, MILLISECONDS, '.%L'), _defineProperty(_defaultSpecifiers, \"\".concat(YEAR, \"-\").concat(MONTH), '%Y-%m '), _defineProperty(_defaultSpecifiers, \"\".concat(YEAR, \"-\").concat(MONTH, \"-\").concat(DATE), '%Y-%m-%d '), _defineProperty(_defaultSpecifiers, \"\".concat(HOURS, \"-\").concat(MINUTES), '%H:%M'), _defaultSpecifiers);\nfunction timeUnitSpecifier(units, specifiers) {\n var s = extend({}, defaultSpecifiers, specifiers),\n u = timeUnits(units),\n n = u.length;\n var fmt = '',\n start = 0,\n end,\n key;\n for (start = 0; start < n;) {\n for (end = u.length; end > start; --end) {\n key = u.slice(start, end).join('-');\n if (s[key] != null) {\n fmt += s[key];\n start = end;\n break;\n }\n }\n }\n return fmt.trim();\n}\nvar t0 = new Date();\nfunction localYear(y) {\n t0.setFullYear(y);\n t0.setMonth(0);\n t0.setDate(1);\n t0.setHours(0, 0, 0, 0);\n return t0;\n}\nfunction dayofyear(d) {\n return localDayOfYear(new Date(d));\n}\nfunction week(d) {\n return localWeekNum(new Date(d));\n}\nfunction localDayOfYear(d) {\n return timeDay.count(localYear(d.getFullYear()) - 1, d);\n}\nfunction localWeekNum(d) {\n return timeWeek.count(localYear(d.getFullYear()) - 1, d);\n}\nfunction localFirst(y) {\n return localYear(y).getDay();\n}\nfunction localDate(y, m, d, H, M, S, L) {\n if (0 <= y && y < 100) {\n var date = new Date(-1, m, d, H, M, S, L);\n date.setFullYear(y);\n return date;\n }\n return new Date(y, m, d, H, M, S, L);\n}\nfunction utcdayofyear(d) {\n return utcDayOfYear(new Date(d));\n}\nfunction utcweek(d) {\n return utcWeekNum(new Date(d));\n}\nfunction utcDayOfYear(d) {\n var y = Date.UTC(d.getUTCFullYear(), 0, 1);\n return utcDay.count(y - 1, d);\n}\nfunction utcWeekNum(d) {\n var y = Date.UTC(d.getUTCFullYear(), 0, 1);\n return utcWeek.count(y - 1, d);\n}\nfunction utcFirst(y) {\n t0.setTime(Date.UTC(y, 0, 1));\n return t0.getUTCDay();\n}\nfunction utcDate(y, m, d, H, M, S, L) {\n if (0 <= y && y < 100) {\n var date = new Date(Date.UTC(-1, m, d, H, M, S, L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(y, m, d, H, M, S, L));\n}\nfunction floor(units, step, get, inv, newDate) {\n var s = step || 1,\n b = peek(units),\n _ = function _(unit, p, key) {\n key = key || unit;\n return getUnit(get[key], inv[key], unit === b && s, p);\n };\n var t = new Date(),\n u = toSet(units),\n y = u[YEAR] ? _(YEAR) : constant(2012),\n m = u[MONTH] ? _(MONTH) : u[QUARTER] ? _(QUARTER) : zero,\n d = u[WEEK] && u[DAY] ? _(DAY, 1, WEEK + DAY) : u[WEEK] ? _(WEEK, 1) : u[DAY] ? _(DAY, 1) : u[DATE] ? _(DATE, 1) : u[DAYOFYEAR] ? _(DAYOFYEAR, 1) : one,\n H = u[HOURS] ? _(HOURS) : zero,\n M = u[MINUTES] ? _(MINUTES) : zero,\n S = u[SECONDS] ? _(SECONDS) : zero,\n L = u[MILLISECONDS] ? _(MILLISECONDS) : zero;\n return function (v) {\n t.setTime(+v);\n var year = y(t);\n return newDate(year, m(t), d(t, year), H(t), M(t), S(t), L(t));\n };\n}\nfunction getUnit(f, inv, step, phase) {\n var u = step <= 1 ? f : phase ? function (d, y) {\n return phase + step * Math.floor((f(d, y) - phase) / step);\n } : function (d, y) {\n return step * Math.floor(f(d, y) / step);\n };\n return inv ? function (d, y) {\n return inv(u(d, y), y);\n } : u;\n}\n\n// returns the day of the year based on week number, day of week,\n// and the day of the week for the first day of the year\nfunction weekday(week, day, firstDay) {\n return day + week * 7 - (firstDay + 6) % 7;\n}\n\n// -- LOCAL TIME --\n\nvar localGet = (_localGet = {}, _defineProperty(_localGet, YEAR, function (d) {\n return d.getFullYear();\n}), _defineProperty(_localGet, QUARTER, function (d) {\n return Math.floor(d.getMonth() / 3);\n}), _defineProperty(_localGet, MONTH, function (d) {\n return d.getMonth();\n}), _defineProperty(_localGet, DATE, function (d) {\n return d.getDate();\n}), _defineProperty(_localGet, HOURS, function (d) {\n return d.getHours();\n}), _defineProperty(_localGet, MINUTES, function (d) {\n return d.getMinutes();\n}), _defineProperty(_localGet, SECONDS, function (d) {\n return d.getSeconds();\n}), _defineProperty(_localGet, MILLISECONDS, function (d) {\n return d.getMilliseconds();\n}), _defineProperty(_localGet, DAYOFYEAR, function (d) {\n return localDayOfYear(d);\n}), _defineProperty(_localGet, WEEK, function (d) {\n return localWeekNum(d);\n}), _defineProperty(_localGet, WEEK + DAY, function (d, y) {\n return weekday(localWeekNum(d), d.getDay(), localFirst(y));\n}), _defineProperty(_localGet, DAY, function (d, y) {\n return weekday(1, d.getDay(), localFirst(y));\n}), _localGet);\nvar localInv = (_localInv = {}, _defineProperty(_localInv, QUARTER, function (q) {\n return 3 * q;\n}), _defineProperty(_localInv, WEEK, function (w, y) {\n return weekday(w, 0, localFirst(y));\n}), _localInv);\nfunction timeFloor(units, step) {\n return floor(units, step || 1, localGet, localInv, localDate);\n}\n\n// -- UTC TIME --\n\nvar utcGet = (_utcGet = {}, _defineProperty(_utcGet, YEAR, function (d) {\n return d.getUTCFullYear();\n}), _defineProperty(_utcGet, QUARTER, function (d) {\n return Math.floor(d.getUTCMonth() / 3);\n}), _defineProperty(_utcGet, MONTH, function (d) {\n return d.getUTCMonth();\n}), _defineProperty(_utcGet, DATE, function (d) {\n return d.getUTCDate();\n}), _defineProperty(_utcGet, HOURS, function (d) {\n return d.getUTCHours();\n}), _defineProperty(_utcGet, MINUTES, function (d) {\n return d.getUTCMinutes();\n}), _defineProperty(_utcGet, SECONDS, function (d) {\n return d.getUTCSeconds();\n}), _defineProperty(_utcGet, MILLISECONDS, function (d) {\n return d.getUTCMilliseconds();\n}), _defineProperty(_utcGet, DAYOFYEAR, function (d) {\n return utcDayOfYear(d);\n}), _defineProperty(_utcGet, WEEK, function (d) {\n return utcWeekNum(d);\n}), _defineProperty(_utcGet, DAY, function (d, y) {\n return weekday(1, d.getUTCDay(), utcFirst(y));\n}), _defineProperty(_utcGet, WEEK + DAY, function (d, y) {\n return weekday(utcWeekNum(d), d.getUTCDay(), utcFirst(y));\n}), _utcGet);\nvar utcInv = (_utcInv = {}, _defineProperty(_utcInv, QUARTER, function (q) {\n return 3 * q;\n}), _defineProperty(_utcInv, WEEK, function (w, y) {\n return weekday(w, 0, utcFirst(y));\n}), _utcInv);\nfunction utcFloor(units, step) {\n return floor(units, step || 1, utcGet, utcInv, utcDate);\n}\nvar timeIntervals = (_timeIntervals = {}, _defineProperty(_timeIntervals, YEAR, timeYear), _defineProperty(_timeIntervals, QUARTER, timeMonth.every(3)), _defineProperty(_timeIntervals, MONTH, timeMonth), _defineProperty(_timeIntervals, WEEK, timeWeek), _defineProperty(_timeIntervals, DATE, timeDay), _defineProperty(_timeIntervals, DAY, timeDay), _defineProperty(_timeIntervals, DAYOFYEAR, timeDay), _defineProperty(_timeIntervals, HOURS, timeHour), _defineProperty(_timeIntervals, MINUTES, timeMinute), _defineProperty(_timeIntervals, SECONDS, timeSecond), _defineProperty(_timeIntervals, MILLISECONDS, timeMillisecond), _timeIntervals);\nvar utcIntervals = (_utcIntervals = {}, _defineProperty(_utcIntervals, YEAR, utcYear), _defineProperty(_utcIntervals, QUARTER, utcMonth.every(3)), _defineProperty(_utcIntervals, MONTH, utcMonth), _defineProperty(_utcIntervals, WEEK, utcWeek), _defineProperty(_utcIntervals, DATE, utcDay), _defineProperty(_utcIntervals, DAY, utcDay), _defineProperty(_utcIntervals, DAYOFYEAR, utcDay), _defineProperty(_utcIntervals, HOURS, utcHour), _defineProperty(_utcIntervals, MINUTES, utcMinute), _defineProperty(_utcIntervals, SECONDS, utcSecond), _defineProperty(_utcIntervals, MILLISECONDS, utcMillisecond), _utcIntervals);\nfunction timeInterval(unit) {\n return timeIntervals[unit];\n}\nfunction utcInterval(unit) {\n return utcIntervals[unit];\n}\nfunction offset(ival, date, step) {\n return ival ? ival.offset(date, step) : undefined;\n}\nfunction timeOffset(unit, date, step) {\n return offset(timeInterval(unit), date, step);\n}\nfunction utcOffset(unit, date, step) {\n return offset(utcInterval(unit), date, step);\n}\nfunction sequence(ival, start, stop, step) {\n return ival ? ival.range(start, stop, step) : undefined;\n}\nfunction timeSequence(unit, start, stop, step) {\n return sequence(timeInterval(unit), start, stop, step);\n}\nfunction utcSequence(unit, start, stop, step) {\n return sequence(utcInterval(unit), start, stop, step);\n}\nvar durationSecond = 1000,\n durationMinute = durationSecond * 60,\n durationHour = durationMinute * 60,\n durationDay = durationHour * 24,\n durationWeek = durationDay * 7,\n durationMonth = durationDay * 30,\n durationYear = durationDay * 365;\nvar Milli = [YEAR, MONTH, DATE, HOURS, MINUTES, SECONDS, MILLISECONDS],\n Seconds = Milli.slice(0, -1),\n Minutes = Seconds.slice(0, -1),\n Hours = Minutes.slice(0, -1),\n Day = Hours.slice(0, -1),\n Week = [YEAR, WEEK],\n Month = [YEAR, MONTH],\n Year = [YEAR];\nvar intervals = [[Seconds, 1, durationSecond], [Seconds, 5, 5 * durationSecond], [Seconds, 15, 15 * durationSecond], [Seconds, 30, 30 * durationSecond], [Minutes, 1, durationMinute], [Minutes, 5, 5 * durationMinute], [Minutes, 15, 15 * durationMinute], [Minutes, 30, 30 * durationMinute], [Hours, 1, durationHour], [Hours, 3, 3 * durationHour], [Hours, 6, 6 * durationHour], [Hours, 12, 12 * durationHour], [Day, 1, durationDay], [Week, 1, durationWeek], [Month, 1, durationMonth], [Month, 3, 3 * durationMonth], [Year, 1, durationYear]];\nfunction bin(opt) {\n var ext = opt.extent,\n max = opt.maxbins || 40,\n target = Math.abs(span(ext)) / max;\n var i = bisector(function (i) {\n return i[2];\n }).right(intervals, target),\n units,\n step;\n if (i === intervals.length) {\n units = Year, step = tickStep(ext[0] / durationYear, ext[1] / durationYear, max);\n } else if (i) {\n i = intervals[target / intervals[i - 1][2] < intervals[i][2] / target ? i - 1 : i];\n units = i[0];\n step = i[1];\n } else {\n units = Milli;\n step = Math.max(tickStep(ext[0], ext[1], max), 1);\n }\n return {\n units: units,\n step: step\n };\n}\nexport { DATE, DAY, DAYOFYEAR, HOURS, MILLISECONDS, MINUTES, MONTH, QUARTER, SECONDS, TIME_UNITS, WEEK, YEAR, dayofyear, bin as timeBin, timeFloor, timeInterval, timeOffset, timeSequence, timeUnitSpecifier, timeUnits, utcFloor, utcInterval, utcOffset, utcSequence, utcdayofyear, utcweek, week };","export default function ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}","export default function descending(a, b) {\n return a == null || b == null ? NaN : b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}","import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\nexport default function bisector(f) {\n var compare1, compare2, delta;\n\n // If an accessor is specified, promote it to a comparator. In this case we\n // can test whether the search value is (self-) comparable. We can’t do this\n // for a comparator (except for specific, known comparators) because we can’t\n // tell if the comparator is symmetric, and an asymmetric comparator can’t be\n // used to test whether a single value is comparable.\n if (f.length !== 2) {\n compare1 = ascending;\n compare2 = function compare2(d, x) {\n return ascending(f(d), x);\n };\n delta = function delta(d, x) {\n return f(d) - x;\n };\n } else {\n compare1 = f === ascending || f === descending ? f : zero;\n compare2 = f;\n delta = f;\n }\n function left(a, x) {\n var lo = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var hi = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : a.length;\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n var mid = lo + hi >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n function right(a, x) {\n var lo = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var hi = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : a.length;\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n var mid = lo + hi >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n function center(a, x) {\n var lo = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var hi = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : a.length;\n var i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n return {\n left: left,\n center: center,\n right: right\n };\n}\nfunction zero() {\n return 0;\n}","import { timeDay, timeSunday, timeMonday, timeThursday, timeYear, utcDay, utcSunday, utcMonday, utcThursday, utcYear } from \"d3-time\";\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\nfunction newDate(y, m, d) {\n return {\n y: y,\n m: m,\n d: d,\n H: 0,\n M: 0,\n S: 0,\n L: 0\n };\n}\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n function newFormat(specifier, formats) {\n return function (date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n if (!(date instanceof Date)) date = new Date(+date);\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n function newParse(specifier, Z) {\n return function (string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week,\n day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || (j = parse(d, string, j)) < 0) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n return j;\n }\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n return {\n format: function format(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function () {\n return specifier;\n };\n return f;\n },\n parse: function parse(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function () {\n return specifier;\n };\n return p;\n },\n utcFormat: function utcFormat(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function () {\n return specifier;\n };\n return f;\n },\n utcParse: function utcParse(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function () {\n return specifier;\n };\n return p;\n }\n };\n}\nvar pads = {\n \"-\": \"\",\n \"_\": \" \",\n \"0\": \"0\"\n },\n numberRe = /^\\s*\\d+/,\n // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\nfunction formatLookup(names) {\n return new Map(names.map(function (name, i) {\n return [name.toLowerCase(), i];\n }));\n}\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\nfunction dISO(d) {\n var day = d.getDay();\n return day >= 4 || day === 0 ? timeThursday(d) : timeThursday.ceil(d);\n}\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = day >= 4 || day === 0 ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\")) + pad(z / 60 | 0, \"0\", 2) + pad(z % 60, \"0\", 2);\n}\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return day >= 4 || day === 0 ? utcThursday(d) : utcThursday.ceil(d);\n}\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = day >= 4 || day === 0 ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\nfunction formatUTCZone() {\n return \"+0000\";\n}\nfunction formatLiteralPercent() {\n return \"%\";\n}\nfunction formatUnixTimestamp(d) {\n return +d;\n}\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}","import formatLocale from \"./locale.js\";\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}","import { tickStep } from 'd3-array';\nimport { formatSpecifier, precisionFixed, precisionRound, precisionPrefix, format, formatPrefix, formatLocale } from 'd3-format';\nimport { SECONDS, MINUTES, HOURS, DATE, WEEK, MONTH, QUARTER, YEAR, MILLISECONDS, DAY, timeInterval, utcInterval } from 'vega-time';\nimport { isString, isObject, error, extend } from 'vega-util';\nimport { timeFormat, timeParse, utcFormat, utcParse, timeFormatLocale as timeFormatLocale$1 } from 'd3-time-format';\nfunction memoize(method) {\n var cache = {};\n return function (spec) {\n return cache[spec] || (cache[spec] = method(spec));\n };\n}\nfunction trimZeroes(numberFormat, decimalChar) {\n return function (x) {\n var str = numberFormat(x),\n dec = str.indexOf(decimalChar);\n if (dec < 0) return str;\n var idx = rightmostDigit(str, dec);\n var end = idx < str.length ? str.slice(idx) : '';\n while (--idx > dec) if (str[idx] !== '0') {\n ++idx;\n break;\n }\n return str.slice(0, idx) + end;\n };\n}\nfunction rightmostDigit(str, dec) {\n var i = str.lastIndexOf('e'),\n c;\n if (i > 0) return i;\n for (i = str.length; --i > dec;) {\n c = str.charCodeAt(i);\n if (c >= 48 && c <= 57) return i + 1; // is digit\n }\n}\n\nfunction numberLocale(locale) {\n var format = memoize(locale.format),\n formatPrefix = locale.formatPrefix;\n return {\n format: format,\n formatPrefix: formatPrefix,\n formatFloat: function formatFloat(spec) {\n var s = formatSpecifier(spec || ',');\n if (s.precision == null) {\n s.precision = 12;\n switch (s.type) {\n case '%':\n s.precision -= 2;\n break;\n case 'e':\n s.precision -= 1;\n break;\n }\n return trimZeroes(format(s),\n // number format\n format('.1f')(1)[1] // decimal point character\n );\n } else {\n return format(s);\n }\n },\n formatSpan: function formatSpan(start, stop, count, specifier) {\n specifier = formatSpecifier(specifier == null ? ',f' : specifier);\n var step = tickStep(start, stop, count),\n value = Math.max(Math.abs(start), Math.abs(stop));\n var precision;\n if (specifier.precision == null) {\n switch (specifier.type) {\n case 's':\n {\n if (!isNaN(precision = precisionPrefix(step, value))) {\n specifier.precision = precision;\n }\n return formatPrefix(specifier, value);\n }\n case '':\n case 'e':\n case 'g':\n case 'p':\n case 'r':\n {\n if (!isNaN(precision = precisionRound(step, value))) {\n specifier.precision = precision - (specifier.type === 'e');\n }\n break;\n }\n case 'f':\n case '%':\n {\n if (!isNaN(precision = precisionFixed(step))) {\n specifier.precision = precision - (specifier.type === '%') * 2;\n }\n break;\n }\n }\n }\n return format(specifier);\n }\n };\n}\nvar defaultNumberLocale;\nresetNumberFormatDefaultLocale();\nfunction resetNumberFormatDefaultLocale() {\n return defaultNumberLocale = numberLocale({\n format: format,\n formatPrefix: formatPrefix\n });\n}\nfunction numberFormatLocale(definition) {\n return numberLocale(formatLocale(definition));\n}\nfunction numberFormatDefaultLocale(definition) {\n return arguments.length ? defaultNumberLocale = numberFormatLocale(definition) : defaultNumberLocale;\n}\nfunction timeMultiFormat(format, interval, spec) {\n spec = spec || {};\n if (!isObject(spec)) {\n error(\"Invalid time multi-format specifier: \".concat(spec));\n }\n var second = interval(SECONDS),\n minute = interval(MINUTES),\n hour = interval(HOURS),\n day = interval(DATE),\n week = interval(WEEK),\n month = interval(MONTH),\n quarter = interval(QUARTER),\n year = interval(YEAR),\n L = format(spec[MILLISECONDS] || '.%L'),\n S = format(spec[SECONDS] || ':%S'),\n M = format(spec[MINUTES] || '%I:%M'),\n H = format(spec[HOURS] || '%I %p'),\n d = format(spec[DATE] || spec[DAY] || '%a %d'),\n w = format(spec[WEEK] || '%b %d'),\n m = format(spec[MONTH] || '%B'),\n q = format(spec[QUARTER] || '%B'),\n y = format(spec[YEAR] || '%Y');\n return function (date) {\n return (second(date) < date ? L : minute(date) < date ? S : hour(date) < date ? M : day(date) < date ? H : month(date) < date ? week(date) < date ? d : w : year(date) < date ? quarter(date) < date ? m : q : y)(date);\n };\n}\nfunction timeLocale(locale) {\n var _timeFormat = memoize(locale.format),\n _utcFormat = memoize(locale.utcFormat);\n return {\n timeFormat: function timeFormat(spec) {\n return isString(spec) ? _timeFormat(spec) : timeMultiFormat(_timeFormat, timeInterval, spec);\n },\n utcFormat: function utcFormat(spec) {\n return isString(spec) ? _utcFormat(spec) : timeMultiFormat(_utcFormat, utcInterval, spec);\n },\n timeParse: memoize(locale.parse),\n utcParse: memoize(locale.utcParse)\n };\n}\nvar defaultTimeLocale;\nresetTimeFormatDefaultLocale();\nfunction resetTimeFormatDefaultLocale() {\n return defaultTimeLocale = timeLocale({\n format: timeFormat,\n parse: timeParse,\n utcFormat: utcFormat,\n utcParse: utcParse\n });\n}\nfunction timeFormatLocale(definition) {\n return timeLocale(timeFormatLocale$1(definition));\n}\nfunction timeFormatDefaultLocale(definition) {\n return arguments.length ? defaultTimeLocale = timeFormatLocale(definition) : defaultTimeLocale;\n}\nvar createLocale = function createLocale(number, time) {\n return extend({}, number, time);\n};\nfunction locale(numberSpec, timeSpec) {\n var number = numberSpec ? numberFormatLocale(numberSpec) : numberFormatDefaultLocale();\n var time = timeSpec ? timeFormatLocale(timeSpec) : timeFormatDefaultLocale();\n return createLocale(number, time);\n}\nfunction defaultLocale(numberSpec, timeSpec) {\n var args = arguments.length;\n if (args && args !== 2) {\n error('defaultLocale expects either zero or two arguments.');\n }\n return args ? createLocale(numberFormatDefaultLocale(numberSpec), timeFormatDefaultLocale(timeSpec)) : createLocale(numberFormatDefaultLocale(), timeFormatDefaultLocale());\n}\nfunction resetDefaultLocale() {\n resetNumberFormatDefaultLocale();\n resetTimeFormatDefaultLocale();\n return defaultLocale();\n}\nexport { defaultLocale, locale, numberFormatDefaultLocale, numberFormatLocale, resetDefaultLocale, resetNumberFormatDefaultLocale, resetTimeFormatDefaultLocale, timeFormatDefaultLocale, timeFormatLocale };","import exponent from \"./exponent.js\";\nexport default function (step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}","import exponent from \"./exponent.js\";\nexport default function (step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}","import exponent from \"./exponent.js\";\nexport default function (step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _asyncToGenerator from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\";\nimport _regeneratorRuntime from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/regenerator/index.js\";\nimport { extend, error, stringValue, isFunction, toBoolean, toNumber, toDate, toString, identity, field, isObject, isArray, isIterable, hasOwnProperty } from 'vega-util';\nimport { dsvFormat } from 'd3-dsv';\nimport { feature, mesh } from 'topojson-client';\nimport { timeFormatDefaultLocale } from 'vega-format';\n\n// Matches absolute URLs with optional protocol\n// https://... file://... //...\nvar protocol_re = /^(data:|([A-Za-z]+:)?\\/\\/)/;\n\n// Matches allowed URIs. From https://github.com/cure53/DOMPurify/blob/master/src/regexp.js with added file://\nvar allowed_re = /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i; // eslint-disable-line no-useless-escape\nvar whitespace_re = /[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205f\\u3000]/g; // eslint-disable-line no-control-regex\n\n// Special treatment in node.js for the file: protocol\nvar fileProtocol = 'file://';\n\n/**\n * Factory for a loader constructor that provides methods for requesting\n * files from either the network or disk, and for sanitizing request URIs.\n * @param {function} fetch - The Fetch API for HTTP network requests.\n * If null or undefined, HTTP loading will be disabled.\n * @param {object} fs - The file system interface for file loading.\n * If null or undefined, local file loading will be disabled.\n * @return {function} A loader constructor with the following signature:\n * param {object} [options] - Optional default loading options to use.\n * return {object} - A new loader instance.\n */\nfunction loaderFactory(fetch, fs) {\n return function (options) {\n return {\n options: options || {},\n sanitize: sanitize,\n load: load,\n fileAccess: !!fs,\n file: fileLoader(fs),\n http: httpLoader(fetch)\n };\n };\n}\n\n/**\n * Load an external resource, typically either from the web or from the local\n * filesystem. This function uses {@link sanitize} to first sanitize the uri,\n * then calls either {@link http} (for web requests) or {@link file} (for\n * filesystem loading).\n * @param {string} uri - The resource indicator (e.g., URL or filename).\n * @param {object} [options] - Optional loading options. These options will\n * override any existing default options.\n * @return {Promise} - A promise that resolves to the loaded content.\n */\nfunction load(_x, _x2) {\n return _load.apply(this, arguments);\n}\n/**\n * URI sanitizer function.\n * @param {string} uri - The uri (url or filename) to check.\n * @param {object} options - An options hash.\n * @return {Promise} - A promise that resolves to an object containing\n * sanitized uri data, or rejects it the input uri is deemed invalid.\n * The properties of the resolved object are assumed to be\n * valid attributes for an HTML 'a' tag. The sanitized uri *must* be\n * provided by the 'href' property of the returned object.\n */\nfunction _load() {\n _load = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(uri, options) {\n var opt, url;\n return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.sanitize(uri, options);\n case 2:\n opt = _context2.sent;\n url = opt.href;\n return _context2.abrupt(\"return\", opt.localFile ? this.file(url) : this.http(url, options));\n case 5:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n return _load.apply(this, arguments);\n}\nfunction sanitize(_x3, _x4) {\n return _sanitize.apply(this, arguments);\n}\n/**\n * File system loader factory.\n * @param {object} fs - The file system interface.\n * @return {function} - A file loader with the following signature:\n * param {string} filename - The file system path to load.\n * param {string} filename - The file system path to load.\n * return {Promise} A promise that resolves to the file contents.\n */\nfunction _sanitize() {\n _sanitize = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(uri, options) {\n var fileAccess, result, isFile, loadFile, base, isAllowed, hasProtocol;\n return _regeneratorRuntime.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n options = extend({}, this.options, options);\n fileAccess = this.fileAccess, result = {\n href: null\n };\n isAllowed = allowed_re.test(uri.replace(whitespace_re, ''));\n if (uri == null || typeof uri !== 'string' || !isAllowed) {\n error('Sanitize failure, invalid URI: ' + stringValue(uri));\n }\n hasProtocol = protocol_re.test(uri); // if relative url (no protocol/host), prepend baseURL\n if ((base = options.baseURL) && !hasProtocol) {\n // Ensure that there is a slash between the baseURL (e.g. hostname) and url\n if (!uri.startsWith('/') && !base.endsWith('/')) {\n uri = '/' + uri;\n }\n uri = base + uri;\n }\n\n // should we load from file system?\n loadFile = (isFile = uri.startsWith(fileProtocol)) || options.mode === 'file' || options.mode !== 'http' && !hasProtocol && fileAccess;\n if (isFile) {\n // strip file protocol\n uri = uri.slice(fileProtocol.length);\n } else if (uri.startsWith('//')) {\n if (options.defaultProtocol === 'file') {\n // if is file, strip protocol and set loadFile flag\n uri = uri.slice(2);\n loadFile = true;\n } else {\n // if relative protocol (starts with '//'), prepend default protocol\n uri = (options.defaultProtocol || 'http') + ':' + uri;\n }\n }\n\n // set non-enumerable mode flag to indicate local file load\n Object.defineProperty(result, 'localFile', {\n value: !!loadFile\n });\n\n // set uri\n result.href = uri;\n\n // set default result target, if specified\n if (options.target) {\n result.target = options.target + '';\n }\n\n // set default result rel, if specified (#1542)\n if (options.rel) {\n result.rel = options.rel + '';\n }\n\n // provide control over cross-origin image handling (#2238)\n // https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image\n if (options.context === 'image' && options.crossOrigin) {\n result.crossOrigin = options.crossOrigin + '';\n }\n\n // return\n return _context3.abrupt(\"return\", result);\n case 14:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n return _sanitize.apply(this, arguments);\n}\nfunction fileLoader(fs) {\n return fs ? function (filename) {\n return new Promise(function (accept, reject) {\n fs.readFile(filename, function (error, data) {\n if (error) reject(error);else accept(data);\n });\n });\n } : fileReject;\n}\n\n/**\n * Default file system loader that simply rejects.\n */\nfunction fileReject() {\n return _fileReject.apply(this, arguments);\n}\n/**\n * HTTP request handler factory.\n * @param {function} fetch - The Fetch API method.\n * @return {function} - An http loader with the following signature:\n * param {string} url - The url to request.\n * param {object} options - An options hash.\n * return {Promise} - A promise that resolves to the file contents.\n */\nfunction _fileReject() {\n _fileReject = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4() {\n return _regeneratorRuntime.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n error('No file system access.');\n case 1:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4);\n }));\n return _fileReject.apply(this, arguments);\n}\nfunction httpLoader(fetch) {\n return fetch ? /*#__PURE__*/function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(url, options) {\n var opt, type, response;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n opt = extend({}, this.options.http, options);\n type = options && options.response;\n _context.next = 4;\n return fetch(url, opt);\n case 4:\n response = _context.sent;\n return _context.abrupt(\"return\", !response.ok ? error(response.status + '' + response.statusText) : isFunction(response[type]) ? response[type]() : response.text());\n case 6:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n return function (_x5, _x6) {\n return _ref.apply(this, arguments);\n };\n }() : httpReject;\n}\n\n/**\n * Default http request handler that simply rejects.\n */\nfunction httpReject() {\n return _httpReject.apply(this, arguments);\n}\nfunction _httpReject() {\n _httpReject = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5() {\n return _regeneratorRuntime.wrap(function _callee5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n error('No HTTP fetch method available.');\n case 1:\n case \"end\":\n return _context5.stop();\n }\n }, _callee5);\n }));\n return _httpReject.apply(this, arguments);\n}\nvar isValid = function isValid(_) {\n return _ != null && _ === _;\n};\nvar isBoolean = function isBoolean(_) {\n return _ === 'true' || _ === 'false' || _ === true || _ === false;\n};\nvar isDate = function isDate(_) {\n return !Number.isNaN(Date.parse(_));\n};\nvar isNumber = function isNumber(_) {\n return !Number.isNaN(+_) && !(_ instanceof Date);\n};\nvar isInteger = function isInteger(_) {\n return isNumber(_) && Number.isInteger(+_);\n};\nvar typeParsers = {\n boolean: toBoolean,\n integer: toNumber,\n number: toNumber,\n date: toDate,\n string: toString,\n unknown: identity\n};\nvar typeTests = [isBoolean, isInteger, isNumber, isDate];\nvar typeList = ['boolean', 'integer', 'number', 'date'];\nfunction inferType(values, field) {\n if (!values || !values.length) return 'unknown';\n var n = values.length,\n m = typeTests.length,\n a = typeTests.map(function (_, i) {\n return i + 1;\n });\n for (var i = 0, t = 0, j, value; i < n; ++i) {\n value = field ? values[i][field] : values[i];\n for (j = 0; j < m; ++j) {\n if (a[j] && isValid(value) && !typeTests[j](value)) {\n a[j] = 0;\n ++t;\n if (t === typeTests.length) return 'string';\n }\n }\n }\n return typeList[a.reduce(function (u, v) {\n return u === 0 ? v : u;\n }, 0) - 1];\n}\nfunction inferTypes(data, fields) {\n return fields.reduce(function (types, field) {\n types[field] = inferType(data, field);\n return types;\n }, {});\n}\nfunction delimitedFormat(delimiter) {\n var parse = function parse(data, format) {\n var delim = {\n delimiter: delimiter\n };\n return dsv(data, format ? extend(format, delim) : delim);\n };\n parse.responseType = 'text';\n return parse;\n}\nfunction dsv(data, format) {\n if (format.header) {\n data = format.header.map(stringValue).join(format.delimiter) + '\\n' + data;\n }\n return dsvFormat(format.delimiter).parse(data + '');\n}\ndsv.responseType = 'text';\nfunction isBuffer(_) {\n return typeof Buffer === 'function' && isFunction(Buffer.isBuffer) ? Buffer.isBuffer(_) : false;\n}\nfunction json(data, format) {\n var prop = format && format.property ? field(format.property) : identity;\n return isObject(data) && !isBuffer(data) ? parseJSON(prop(data), format) : prop(JSON.parse(data));\n}\njson.responseType = 'json';\nfunction parseJSON(data, format) {\n if (!isArray(data) && isIterable(data)) {\n data = _toConsumableArray(data);\n }\n return format && format.copy ? JSON.parse(JSON.stringify(data)) : data;\n}\nvar filters = {\n interior: function interior(a, b) {\n return a !== b;\n },\n exterior: function exterior(a, b) {\n return a === b;\n }\n};\nfunction topojson(data, format) {\n var method, object, property, filter;\n data = json(data, format);\n if (format && format.feature) {\n method = feature;\n property = format.feature;\n } else if (format && format.mesh) {\n method = mesh;\n property = format.mesh;\n filter = filters[format.filter];\n } else {\n error('Missing TopoJSON feature or mesh parameter.');\n }\n object = (object = data.objects[property]) ? method(data, object, filter) : error('Invalid TopoJSON object: ' + property);\n return object && object.features || [object];\n}\ntopojson.responseType = 'json';\nvar format = {\n dsv: dsv,\n csv: delimitedFormat(','),\n tsv: delimitedFormat('\\t'),\n json: json,\n topojson: topojson\n};\nfunction formats(name, reader) {\n if (arguments.length > 1) {\n format[name] = reader;\n return this;\n } else {\n return hasOwnProperty(format, name) ? format[name] : null;\n }\n}\nfunction responseType(type) {\n var f = formats(type);\n return f && f.responseType || 'text';\n}\nfunction read(data, schema, timeParser, utcParser) {\n schema = schema || {};\n var reader = formats(schema.type || 'json');\n if (!reader) error('Unknown data format type: ' + schema.type);\n data = reader(data, schema);\n if (schema.parse) parse(data, schema.parse, timeParser, utcParser);\n if (hasOwnProperty(data, 'columns')) delete data.columns;\n return data;\n}\nfunction parse(data, types, timeParser, utcParser) {\n if (!data.length) return; // early exit for empty data\n\n var locale = timeFormatDefaultLocale();\n timeParser = timeParser || locale.timeParse;\n utcParser = utcParser || locale.utcParse;\n var fields = data.columns || Object.keys(data[0]),\n datum,\n field,\n i,\n j,\n n,\n m;\n if (types === 'auto') types = inferTypes(data, fields);\n fields = Object.keys(types);\n var parsers = fields.map(function (field) {\n var type = types[field];\n var parts, pattern;\n if (type && (type.startsWith('date:') || type.startsWith('utc:'))) {\n parts = type.split(/:(.+)?/, 2); // split on first :\n pattern = parts[1];\n if (pattern[0] === '\\'' && pattern[pattern.length - 1] === '\\'' || pattern[0] === '\"' && pattern[pattern.length - 1] === '\"') {\n pattern = pattern.slice(1, -1);\n }\n var _parse = parts[0] === 'utc' ? utcParser : timeParser;\n return _parse(pattern);\n }\n if (!typeParsers[type]) {\n throw Error('Illegal format pattern: ' + field + ':' + type);\n }\n return typeParsers[type];\n });\n for (i = 0, n = data.length, m = fields.length; i < n; ++i) {\n datum = data[i];\n for (j = 0; j < m; ++j) {\n field = fields[j];\n datum[field] = parsers[j](datum[field]);\n }\n }\n}\nvar loader = loaderFactory(typeof fetch !== 'undefined' && fetch,\n// use built-in fetch API\nnull // no file system access\n);\n\nexport { format, formats, inferType, inferTypes, loader, read, responseType, typeParsers };","import _asyncToGenerator from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\";\nimport _regeneratorRuntime from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/regenerator/index.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { identity, array, isFunction, constant, isArray, id, error, truthy, debounce as _debounce, extend, visitArray, inherits, logger, Error, hasOwnProperty } from 'vega-util';\nimport { read, responseType, loader } from 'vega-loader';\nimport { defaultLocale } from 'vega-format';\nfunction UniqueList(idFunc) {\n var $ = idFunc || identity,\n list = [],\n ids = {};\n list.add = function (_) {\n var id = $(_);\n if (!ids[id]) {\n ids[id] = 1;\n list.push(_);\n }\n return list;\n };\n list.remove = function (_) {\n var id = $(_);\n if (ids[id]) {\n ids[id] = 0;\n var idx = list.indexOf(_);\n if (idx >= 0) list.splice(idx, 1);\n }\n return list;\n };\n return list;\n}\n\n/**\n * Invoke and await a potentially async callback function. If\n * an error occurs, trap it and route to Dataflow.error.\n * @param {Dataflow} df - The dataflow instance\n * @param {function} callback - A callback function to invoke\n * and then await. The dataflow will be passed as the single\n * argument to the function.\n */\nfunction asyncCallback(_x, _x2) {\n return _asyncCallback.apply(this, arguments);\n}\nfunction _asyncCallback() {\n _asyncCallback = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(df, callback) {\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n _context.prev = 0;\n _context.next = 3;\n return callback(df);\n case 3:\n _context.next = 8;\n break;\n case 5:\n _context.prev = 5;\n _context.t0 = _context[\"catch\"](0);\n df.error(_context.t0);\n case 8:\n case \"end\":\n return _context.stop();\n }\n }, _callee, null, [[0, 5]]);\n }));\n return _asyncCallback.apply(this, arguments);\n}\nvar TUPLE_ID_KEY = Symbol('vega_id');\nvar TUPLE_ID = 1;\n\n/**\n * Checks if an input value is a registered tuple.\n * @param {*} t - The value to check.\n * @return {boolean} True if the input is a tuple, false otherwise.\n */\nfunction isTuple(t) {\n return !!(t && tupleid(t));\n}\n\n/**\n * Returns the id of a tuple.\n * @param {object} t - The input tuple.\n * @return {*} the tuple id.\n */\nfunction tupleid(t) {\n return t[TUPLE_ID_KEY];\n}\n\n/**\n * Sets the id of a tuple.\n * @param {object} t - The input tuple.\n * @param {*} id - The id value to set.\n * @return {object} the input tuple.\n */\nfunction setid(t, id) {\n t[TUPLE_ID_KEY] = id;\n return t;\n}\n\n/**\n * Ingest an object or value as a data tuple.\n * If the input value is an object, an id field will be added to it. For\n * efficiency, the input object is modified directly. A copy is not made.\n * If the input value is a literal, it will be wrapped in a new object\n * instance, with the value accessible as the 'data' property.\n * @param datum - The value to ingest.\n * @return {object} The ingested data tuple.\n */\nfunction ingest$1(datum) {\n var t = datum === Object(datum) ? datum : {\n data: datum\n };\n return tupleid(t) ? t : setid(t, TUPLE_ID++);\n}\n\n/**\n * Given a source tuple, return a derived copy.\n * @param {object} t - The source tuple.\n * @return {object} The derived tuple.\n */\nfunction derive(t) {\n return rederive(t, ingest$1({}));\n}\n\n/**\n * Rederive a derived tuple by copying values from the source tuple.\n * @param {object} t - The source tuple.\n * @param {object} d - The derived tuple.\n * @return {object} The derived tuple.\n */\nfunction rederive(t, d) {\n for (var k in t) d[k] = t[k];\n return d;\n}\n\n/**\n * Replace an existing tuple with a new tuple.\n * @param {object} t - The existing data tuple.\n * @param {object} d - The new tuple that replaces the old.\n * @return {object} The new tuple.\n */\nfunction replace(t, d) {\n return setid(d, tupleid(t));\n}\n\n/**\n * Generate an augmented comparator function that provides stable\n * sorting by tuple id when the given comparator produces ties.\n * @param {function} cmp - The comparator to augment.\n * @param {function} [f] - Optional tuple accessor function.\n * @return {function} An augmented comparator function.\n */\nfunction stableCompare(cmp, f) {\n return !cmp ? null : f ? function (a, b) {\n return cmp(a, b) || tupleid(f(a)) - tupleid(f(b));\n } : function (a, b) {\n return cmp(a, b) || tupleid(a) - tupleid(b);\n };\n}\nfunction isChangeSet(v) {\n return v && v.constructor === changeset;\n}\nfunction changeset() {\n var add = [],\n // insert tuples\n rem = [],\n // remove tuples\n mod = [],\n // modify tuples\n remp = [],\n // remove by predicate\n modp = []; // modify by predicate\n var _clean = null,\n _reflow = false;\n return {\n constructor: changeset,\n insert: function insert(t) {\n var d = array(t),\n n = d.length;\n for (var i = 0; i < n; ++i) add.push(d[i]);\n return this;\n },\n remove: function remove(t) {\n var a = isFunction(t) ? remp : rem,\n d = array(t),\n n = d.length;\n for (var i = 0; i < n; ++i) a.push(d[i]);\n return this;\n },\n modify: function modify(t, field, value) {\n var m = {\n field: field,\n value: constant(value)\n };\n if (isFunction(t)) {\n m.filter = t;\n modp.push(m);\n } else {\n m.tuple = t;\n mod.push(m);\n }\n return this;\n },\n encode: function encode(t, set) {\n if (isFunction(t)) modp.push({\n filter: t,\n field: set\n });else mod.push({\n tuple: t,\n field: set\n });\n return this;\n },\n clean: function clean(value) {\n _clean = value;\n return this;\n },\n reflow: function reflow() {\n _reflow = true;\n return this;\n },\n pulse: function pulse(_pulse, tuples) {\n var cur = {},\n out = {};\n var i, n, m, f, t, id;\n\n // build lookup table of current tuples\n for (i = 0, n = tuples.length; i < n; ++i) {\n cur[tupleid(tuples[i])] = 1;\n }\n\n // process individual tuples to remove\n for (i = 0, n = rem.length; i < n; ++i) {\n t = rem[i];\n cur[tupleid(t)] = -1;\n }\n\n // process predicate-based removals\n for (i = 0, n = remp.length; i < n; ++i) {\n f = remp[i];\n tuples.forEach(function (t) {\n if (f(t)) cur[tupleid(t)] = -1;\n });\n }\n\n // process all add tuples\n for (i = 0, n = add.length; i < n; ++i) {\n t = add[i];\n id = tupleid(t);\n if (cur[id]) {\n // tuple already resides in dataset\n // if flagged for both add and remove, cancel\n cur[id] = 1;\n } else {\n // tuple does not reside in dataset, add\n _pulse.add.push(ingest$1(add[i]));\n }\n }\n\n // populate pulse rem list\n for (i = 0, n = tuples.length; i < n; ++i) {\n t = tuples[i];\n if (cur[tupleid(t)] < 0) _pulse.rem.push(t);\n }\n\n // modify helper method\n function modify(t, f, v) {\n if (v) {\n t[f] = v(t);\n } else {\n _pulse.encode = f;\n }\n if (!_reflow) out[tupleid(t)] = t;\n }\n\n // process individual tuples to modify\n for (i = 0, n = mod.length; i < n; ++i) {\n m = mod[i];\n t = m.tuple;\n f = m.field;\n id = cur[tupleid(t)];\n if (id > 0) {\n modify(t, f, m.value);\n _pulse.modifies(f);\n }\n }\n\n // process predicate-based modifications\n for (i = 0, n = modp.length; i < n; ++i) {\n m = modp[i];\n f = m.filter;\n tuples.forEach(function (t) {\n if (f(t) && cur[tupleid(t)] > 0) {\n modify(t, m.field, m.value);\n }\n });\n _pulse.modifies(m.field);\n }\n\n // upon reflow request, populate mod with all non-removed tuples\n // otherwise, populate mod with modified tuples only\n if (_reflow) {\n _pulse.mod = rem.length || remp.length ? tuples.filter(function (t) {\n return cur[tupleid(t)] > 0;\n }) : tuples.slice();\n } else {\n for (id in out) _pulse.mod.push(out[id]);\n }\n\n // set pulse garbage collection request\n if (_clean || _clean == null && (rem.length || remp.length)) {\n _pulse.clean(true);\n }\n return _pulse;\n }\n };\n}\nvar CACHE = '_:mod:_';\n\n/**\n * Hash that tracks modifications to assigned values.\n * Callers *must* use the set method to update values.\n */\nfunction Parameters() {\n Object.defineProperty(this, CACHE, {\n writable: true,\n value: {}\n });\n}\nParameters.prototype = {\n /**\n * Set a parameter value. If the parameter value changes, the parameter\n * will be recorded as modified.\n * @param {string} name - The parameter name.\n * @param {number} index - The index into an array-value parameter. Ignored if\n * the argument is undefined, null or less than zero.\n * @param {*} value - The parameter value to set.\n * @param {boolean} [force=false] - If true, records the parameter as modified\n * even if the value is unchanged.\n * @return {Parameters} - This parameter object.\n */\n set: function set(name, index, value, force) {\n var o = this,\n v = o[name],\n mod = o[CACHE];\n if (index != null && index >= 0) {\n if (v[index] !== value || force) {\n v[index] = value;\n mod[index + ':' + name] = -1;\n mod[name] = -1;\n }\n } else if (v !== value || force) {\n o[name] = value;\n mod[name] = isArray(value) ? 1 + value.length : -1;\n }\n return o;\n },\n /**\n * Tests if one or more parameters has been modified. If invoked with no\n * arguments, returns true if any parameter value has changed. If the first\n * argument is array, returns trues if any parameter name in the array has\n * changed. Otherwise, tests if the given name and optional array index has\n * changed.\n * @param {string} name - The parameter name to test.\n * @param {number} [index=undefined] - The parameter array index to test.\n * @return {boolean} - Returns true if a queried parameter was modified.\n */\n modified: function modified(name, index) {\n var mod = this[CACHE];\n if (!arguments.length) {\n for (var k in mod) {\n if (mod[k]) return true;\n }\n return false;\n } else if (isArray(name)) {\n for (var _k = 0; _k < name.length; ++_k) {\n if (mod[name[_k]]) return true;\n }\n return false;\n }\n return index != null && index >= 0 ? index + 1 < mod[name] || !!mod[index + ':' + name] : !!mod[name];\n },\n /**\n * Clears the modification records. After calling this method,\n * all parameters are considered unmodified.\n */\n clear: function clear() {\n this[CACHE] = {};\n return this;\n }\n};\nvar OP_ID = 0;\nvar PULSE = 'pulse',\n NO_PARAMS = new Parameters();\n\n// Boolean Flags\nvar SKIP$1 = 1,\n MODIFIED = 2;\n\n/**\n * An Operator is a processing node in a dataflow graph.\n * Each operator stores a value and an optional value update function.\n * Operators can accept a hash of named parameters. Parameter values can\n * either be direct (JavaScript literals, arrays, objects) or indirect\n * (other operators whose values will be pulled dynamically). Operators\n * included as parameters will have this operator added as a dependency.\n * @constructor\n * @param {*} [init] - The initial value for this operator.\n * @param {function(object, Pulse)} [update] - An update function. Upon\n * evaluation of this operator, the update function will be invoked and the\n * return value will be used as the new value of this operator.\n * @param {object} [params] - The parameters for this operator.\n * @param {boolean} [react=true] - Flag indicating if this operator should\n * listen for changes to upstream operators included as parameters.\n * @see parameters\n */\nfunction Operator(init, update, params, react) {\n this.id = ++OP_ID;\n this.value = init;\n this.stamp = -1;\n this.rank = -1;\n this.qrank = -1;\n this.flags = 0;\n if (update) {\n this._update = update;\n }\n if (params) this.parameters(params, react);\n}\nfunction flag(bit) {\n return function (state) {\n var f = this.flags;\n if (arguments.length === 0) return !!(f & bit);\n this.flags = state ? f | bit : f & ~bit;\n return this;\n };\n}\nOperator.prototype = {\n /**\n * Returns a list of target operators dependent on this operator.\n * If this list does not exist, it is created and then returned.\n * @return {UniqueList}\n */\n targets: function targets() {\n return this._targets || (this._targets = UniqueList(id));\n },\n /**\n * Sets the value of this operator.\n * @param {*} value - the value to set.\n * @return {Number} Returns 1 if the operator value has changed\n * according to strict equality, returns 0 otherwise.\n */\n set: function set(value) {\n if (this.value !== value) {\n this.value = value;\n return 1;\n } else {\n return 0;\n }\n },\n /**\n * Indicates that operator evaluation should be skipped on the next pulse.\n * This operator will still propagate incoming pulses, but its update function\n * will not be invoked. The skip flag is reset after every pulse, so calling\n * this method will affect processing of the next pulse only.\n */\n skip: flag(SKIP$1),\n /**\n * Indicates that this operator's value has been modified on its most recent\n * pulse. Normally modification is checked via strict equality; however, in\n * some cases it is more efficient to update the internal state of an object.\n * In those cases, the modified flag can be used to trigger propagation. Once\n * set, the modification flag persists across pulses until unset. The flag can\n * be used with the last timestamp to test if a modification is recent.\n */\n modified: flag(MODIFIED),\n /**\n * Sets the parameters for this operator. The parameter values are analyzed for\n * operator instances. If found, this operator will be added as a dependency\n * of the parameterizing operator. Operator values are dynamically marshalled\n * from each operator parameter prior to evaluation. If a parameter value is\n * an array, the array will also be searched for Operator instances. However,\n * the search does not recurse into sub-arrays or object properties.\n * @param {object} params - A hash of operator parameters.\n * @param {boolean} [react=true] - A flag indicating if this operator should\n * automatically update (react) when parameter values change. In other words,\n * this flag determines if the operator registers itself as a listener on\n * any upstream operators included in the parameters.\n * @param {boolean} [initonly=false] - A flag indicating if this operator\n * should calculate an update only upon its initial evaluation, then\n * deregister dependencies and suppress all future update invocations.\n * @return {Operator[]} - An array of upstream dependencies.\n */\n parameters: function parameters(params, react, initonly) {\n var _this = this;\n react = react !== false;\n var argval = this._argval = this._argval || new Parameters(),\n argops = this._argops = this._argops || [],\n deps = [];\n var name, value, n, i;\n var add = function add(name, index, value) {\n if (value instanceof Operator) {\n if (value !== _this) {\n if (react) value.targets().add(_this);\n deps.push(value);\n }\n argops.push({\n op: value,\n name: name,\n index: index\n });\n } else {\n argval.set(name, index, value);\n }\n };\n for (name in params) {\n value = params[name];\n if (name === PULSE) {\n array(value).forEach(function (op) {\n if (!(op instanceof Operator)) {\n error('Pulse parameters must be operator instances.');\n } else if (op !== _this) {\n op.targets().add(_this);\n deps.push(op);\n }\n });\n this.source = value;\n } else if (isArray(value)) {\n argval.set(name, -1, Array(n = value.length));\n for (i = 0; i < n; ++i) add(name, i, value[i]);\n } else {\n add(name, -1, value);\n }\n }\n this.marshall().clear(); // initialize values\n if (initonly) argops.initonly = true;\n return deps;\n },\n /**\n * Internal method for marshalling parameter values.\n * Visits each operator dependency to pull the latest value.\n * @return {Parameters} A Parameters object to pass to the update function.\n */\n marshall: function marshall(stamp) {\n var argval = this._argval || NO_PARAMS,\n argops = this._argops;\n var item, i, op, mod;\n if (argops) {\n var n = argops.length;\n for (i = 0; i < n; ++i) {\n item = argops[i];\n op = item.op;\n mod = op.modified() && op.stamp === stamp;\n argval.set(item.name, item.index, op.value, mod);\n }\n if (argops.initonly) {\n for (i = 0; i < n; ++i) {\n item = argops[i];\n item.op.targets().remove(this);\n }\n this._argops = null;\n this._update = null;\n }\n }\n return argval;\n },\n /**\n * Detach this operator from the dataflow.\n * Unregisters listeners on upstream dependencies.\n */\n detach: function detach() {\n var argops = this._argops;\n var i, n, item, op;\n if (argops) {\n for (i = 0, n = argops.length; i < n; ++i) {\n item = argops[i];\n op = item.op;\n if (op._targets) {\n op._targets.remove(this);\n }\n }\n }\n\n // remove references to the source and pulse object,\n // if present, to prevent memory leaks of old data.\n this.pulse = null;\n this.source = null;\n },\n /**\n * Delegate method to perform operator processing.\n * Subclasses can override this method to perform custom processing.\n * By default, it marshalls parameters and calls the update function\n * if that function is defined. If the update function does not\n * change the operator value then StopPropagation is returned.\n * If no update function is defined, this method does nothing.\n * @param {Pulse} pulse - the current dataflow pulse.\n * @return The output pulse or StopPropagation. A falsy return value\n * (including undefined) will let the input pulse pass through.\n */\n evaluate: function evaluate(pulse) {\n var update = this._update;\n if (update) {\n var params = this.marshall(pulse.stamp),\n v = update.call(this, params, pulse);\n params.clear();\n if (v !== this.value) {\n this.value = v;\n } else if (!this.modified()) {\n return pulse.StopPropagation;\n }\n }\n },\n /**\n * Run this operator for the current pulse. If this operator has already\n * been run at (or after) the pulse timestamp, returns StopPropagation.\n * Internally, this method calls {@link evaluate} to perform processing.\n * If {@link evaluate} returns a falsy value, the input pulse is returned.\n * This method should NOT be overridden, instead overrride {@link evaluate}.\n * @param {Pulse} pulse - the current dataflow pulse.\n * @return the output pulse for this operator (or StopPropagation)\n */\n run: function run(pulse) {\n if (pulse.stamp < this.stamp) return pulse.StopPropagation;\n var rv;\n if (this.skip()) {\n this.skip(false);\n rv = 0;\n } else {\n rv = this.evaluate(pulse);\n }\n return this.pulse = rv || pulse;\n }\n};\n\n/**\n * Add an operator to the dataflow graph. This function accepts a\n * variety of input argument types. The basic signature supports an\n * initial value, update function and parameters. If the first parameter\n * is an Operator instance, it will be added directly. If it is a\n * constructor for an Operator subclass, a new instance will be instantiated.\n * Otherwise, if the first parameter is a function instance, it will be used\n * as the update function and a null initial value is assumed.\n * @param {*} init - One of: the operator to add, the initial value of\n * the operator, an operator class to instantiate, or an update function.\n * @param {function} [update] - The operator update function.\n * @param {object} [params] - The operator parameters.\n * @param {boolean} [react=true] - Flag indicating if this operator should\n * listen for changes to upstream operators included as parameters.\n * @return {Operator} - The added operator.\n */\nfunction add(init, update, params, react) {\n var shift = 1,\n op;\n if (init instanceof Operator) {\n op = init;\n } else if (init && init.prototype instanceof Operator) {\n op = new init();\n } else if (isFunction(init)) {\n op = new Operator(null, init);\n } else {\n shift = 0;\n op = new Operator(init, update);\n }\n this.rank(op);\n if (shift) {\n react = params;\n params = update;\n }\n if (params) this.connect(op, op.parameters(params, react));\n this.touch(op);\n return op;\n}\n\n/**\n * Connect a target operator as a dependent of source operators.\n * If necessary, this method will rerank the target operator and its\n * dependents to ensure propagation proceeds in a topologically sorted order.\n * @param {Operator} target - The target operator.\n * @param {Array} - The source operators that should propagate\n * to the target operator.\n */\nfunction connect(target, sources) {\n var targetRank = target.rank,\n n = sources.length;\n for (var i = 0; i < n; ++i) {\n if (targetRank < sources[i].rank) {\n this.rerank(target);\n return;\n }\n }\n}\nvar STREAM_ID = 0;\n\n/**\n * Models an event stream.\n * @constructor\n * @param {function(Object, number): boolean} [filter] - Filter predicate.\n * Events pass through when truthy, events are suppressed when falsy.\n * @param {function(Object): *} [apply] - Applied to input events to produce\n * new event values.\n * @param {function(Object)} [receive] - Event callback function to invoke\n * upon receipt of a new event. Use to override standard event processing.\n */\nfunction EventStream(filter, apply, receive) {\n this.id = ++STREAM_ID;\n this.value = null;\n if (receive) this.receive = receive;\n if (filter) this._filter = filter;\n if (apply) this._apply = apply;\n}\n\n/**\n * Creates a new event stream instance with the provided\n * (optional) filter, apply and receive functions.\n * @param {function(Object, number): boolean} [filter] - Filter predicate.\n * Events pass through when truthy, events are suppressed when falsy.\n * @param {function(Object): *} [apply] - Applied to input events to produce\n * new event values.\n * @see EventStream\n */\nfunction stream(filter, apply, receive) {\n return new EventStream(filter, apply, receive);\n}\nEventStream.prototype = {\n _filter: truthy,\n _apply: identity,\n targets: function targets() {\n return this._targets || (this._targets = UniqueList(id));\n },\n consume: function consume(_) {\n if (!arguments.length) return !!this._consume;\n this._consume = !!_;\n return this;\n },\n receive: function receive(evt) {\n if (this._filter(evt)) {\n var val = this.value = this._apply(evt),\n trg = this._targets,\n n = trg ? trg.length : 0;\n for (var i = 0; i < n; ++i) trg[i].receive(val);\n if (this._consume) {\n evt.preventDefault();\n evt.stopPropagation();\n }\n }\n },\n filter: function filter(_filter) {\n var s = stream(_filter);\n this.targets().add(s);\n return s;\n },\n apply: function apply(_apply) {\n var s = stream(null, _apply);\n this.targets().add(s);\n return s;\n },\n merge: function merge() {\n var s = stream();\n this.targets().add(s);\n for (var i = 0, n = arguments.length; i < n; ++i) {\n arguments[i].targets().add(s);\n }\n return s;\n },\n throttle: function throttle(pause) {\n var t = -1;\n return this.filter(function () {\n var now = Date.now();\n if (now - t > pause) {\n t = now;\n return 1;\n } else {\n return 0;\n }\n });\n },\n debounce: function debounce(delay) {\n var s = stream();\n this.targets().add(stream(null, null, _debounce(delay, function (e) {\n var df = e.dataflow;\n s.receive(e);\n if (df && df.run) df.run();\n })));\n return s;\n },\n between: function between(a, b) {\n var active = false;\n a.targets().add(stream(null, null, function () {\n return active = true;\n }));\n b.targets().add(stream(null, null, function () {\n return active = false;\n }));\n return this.filter(function () {\n return active;\n });\n },\n detach: function detach() {\n // ensures compatibility with operators (#2753)\n // remove references to other streams and filter functions that may\n // be bound to subcontexts that need to be garbage collected.\n this._filter = truthy;\n this._targets = null;\n }\n};\n\n/**\n * Create a new event stream from an event source.\n * @param {object} source - The event source to monitor. The input must\n * support the addEventListener method.\n * @param {string} type - The event type.\n * @param {function(object): boolean} [filter] - Event filter function.\n * @param {function(object): *} [apply] - Event application function.\n * If provided, this function will be invoked and the result will be\n * used as the downstream event value.\n * @return {EventStream}\n */\nfunction events(source, type, filter, apply) {\n var df = this,\n s = stream(filter, apply),\n send = function send(e) {\n e.dataflow = df;\n try {\n s.receive(e);\n } catch (error) {\n df.error(error);\n } finally {\n df.run();\n }\n };\n var sources;\n if (typeof source === 'string' && typeof document !== 'undefined') {\n sources = document.querySelectorAll(source);\n } else {\n sources = array(source);\n }\n var n = sources.length;\n for (var i = 0; i < n; ++i) {\n sources[i].addEventListener(type, send);\n }\n return s;\n}\nfunction parse(data, format) {\n var locale = this.locale();\n return read(data, format, locale.timeParse, locale.utcParse);\n}\n\n/**\n * Ingests new data into the dataflow. First parses the data using the\n * vega-loader read method, then pulses a changeset to the target operator.\n * @param {Operator} target - The Operator to target with ingested data,\n * typically a Collect transform instance.\n * @param {*} data - The input data, prior to parsing. For JSON this may\n * be a string or an object. For CSV, TSV, etc should be a string.\n * @param {object} format - The data format description for parsing\n * loaded data. This object is passed to the vega-loader read method.\n * @returns {Dataflow}\n */\nfunction ingest(target, data, format) {\n data = this.parse(data, format);\n return this.pulse(target, this.changeset().insert(data));\n}\n\n/**\n * Request data from an external source, parse it, and return a Promise.\n * @param {string} url - The URL from which to load the data. This string\n * is passed to the vega-loader load method.\n * @param {object} [format] - The data format description for parsing\n * loaded data. This object is passed to the vega-loader read method.\n * @return {Promise} A Promise that resolves upon completion of the request.\n * The resolved object contains the following properties:\n * - data: an array of parsed data (or null upon error)\n * - status: a code for success (0), load fail (-1), or parse fail (-2)\n */\nfunction request(_x3, _x4) {\n return _request.apply(this, arguments);\n}\nfunction _request() {\n _request = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(url, format) {\n var df, status, data;\n return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n df = this;\n status = 0;\n _context2.prev = 2;\n _context2.next = 5;\n return df.loader().load(url, {\n context: 'dataflow',\n response: responseType(format && format.type)\n });\n case 5:\n data = _context2.sent;\n try {\n data = df.parse(data, format);\n } catch (err) {\n status = -2;\n df.warn('Data ingestion failed', url, err);\n }\n _context2.next = 13;\n break;\n case 9:\n _context2.prev = 9;\n _context2.t0 = _context2[\"catch\"](2);\n status = -1;\n df.warn('Loading failed', url, _context2.t0);\n case 13:\n return _context2.abrupt(\"return\", {\n data: data,\n status: status\n });\n case 14:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this, [[2, 9]]);\n }));\n return _request.apply(this, arguments);\n}\nfunction preload(_x5, _x6, _x7) {\n return _preload.apply(this, arguments);\n}\nfunction _preload() {\n _preload = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(target, url, format) {\n var df, pending, res;\n return _regeneratorRuntime.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n df = this, pending = df._pending || loadPending(df);\n pending.requests += 1;\n _context3.next = 4;\n return df.request(url, format);\n case 4:\n res = _context3.sent;\n df.pulse(target, df.changeset().remove(truthy).insert(res.data || []));\n pending.done();\n return _context3.abrupt(\"return\", res);\n case 8:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n return _preload.apply(this, arguments);\n}\nfunction loadPending(df) {\n var accept;\n var pending = new Promise(function (a) {\n return accept = a;\n });\n pending.requests = 0;\n pending.done = function () {\n if (--pending.requests === 0) {\n df._pending = null;\n accept(df);\n }\n };\n return df._pending = pending;\n}\nvar SKIP = {\n skip: true\n};\n\n/**\n * Perform operator updates in response to events. Applies an\n * update function to compute a new operator value. If the update function\n * returns a {@link ChangeSet}, the operator will be pulsed with those tuple\n * changes. Otherwise, the operator value will be updated to the return value.\n * @param {EventStream|Operator} source - The event source to react to.\n * This argument can be either an EventStream or an Operator.\n * @param {Operator|function(object):Operator} target - The operator to update.\n * This argument can either be an Operator instance or (if the source\n * argument is an EventStream), a function that accepts an event object as\n * input and returns an Operator to target.\n * @param {function(Parameters,Event): *} [update] - Optional update function\n * to compute the new operator value, or a literal value to set. Update\n * functions expect to receive a parameter object and event as arguments.\n * This function can either return a new operator value or (if the source\n * argument is an EventStream) a {@link ChangeSet} instance to pulse\n * the target operator with tuple changes.\n * @param {object} [params] - The update function parameters.\n * @param {object} [options] - Additional options hash. If not overridden,\n * updated operators will be skipped by default.\n * @param {boolean} [options.skip] - If true, the operator will\n * be skipped: it will not be evaluated, but its dependents will be.\n * @param {boolean} [options.force] - If true, the operator will\n * be re-evaluated even if its value has not changed.\n * @return {Dataflow}\n */\nfunction on(source, target, update, params, options) {\n var fn = source instanceof Operator ? onOperator : onStream;\n fn(this, source, target, update, params, options);\n return this;\n}\nfunction onStream(df, stream, target, update, params, options) {\n var opt = extend({}, options, SKIP);\n var func, op;\n if (!isFunction(target)) target = constant(target);\n if (update === undefined) {\n func = function func(e) {\n return df.touch(target(e));\n };\n } else if (isFunction(update)) {\n op = new Operator(null, update, params, false);\n func = function func(e) {\n op.evaluate(e);\n var t = target(e),\n v = op.value;\n isChangeSet(v) ? df.pulse(t, v, options) : df.update(t, v, opt);\n };\n } else {\n func = function func(e) {\n return df.update(target(e), update, opt);\n };\n }\n stream.apply(func);\n}\nfunction onOperator(df, source, target, update, params, options) {\n if (update === undefined) {\n source.targets().add(target);\n } else {\n var opt = options || {},\n op = new Operator(null, updater(target, update), params, false);\n op.modified(opt.force);\n op.rank = source.rank; // immediately follow source\n source.targets().add(op); // add dependency\n\n if (target) {\n op.skip(true); // skip first invocation\n op.value = target.value; // initialize value\n op.targets().add(target); // chain dependencies\n df.connect(target, [op]); // rerank as needed, #1672\n }\n }\n}\n\nfunction updater(target, update) {\n update = isFunction(update) ? update : constant(update);\n return target ? function (_, pulse) {\n var value = update(_, pulse);\n if (!target.skip()) {\n target.skip(value !== this.value).value = value;\n }\n return value;\n } : update;\n}\n\n/**\n * Assigns a rank to an operator. Ranks are assigned in increasing order\n * by incrementing an internal rank counter.\n * @param {Operator} op - The operator to assign a rank.\n */\nfunction rank(op) {\n op.rank = ++this._rank;\n}\n\n/**\n * Re-ranks an operator and all downstream target dependencies. This\n * is necessary when upstream dependencies of higher rank are added to\n * a target operator.\n * @param {Operator} op - The operator to re-rank.\n */\nfunction rerank(op) {\n var queue = [op];\n var cur, list, i;\n while (queue.length) {\n this.rank(cur = queue.pop());\n if (list = cur._targets) {\n for (i = list.length; --i >= 0;) {\n queue.push(cur = list[i]);\n if (cur === op) error('Cycle detected in dataflow graph.');\n }\n }\n }\n}\n\n/**\n * Sentinel value indicating pulse propagation should stop.\n */\nvar StopPropagation = {};\n\n// Pulse visit type flags\nvar ADD = 1 << 0,\n REM = 1 << 1,\n MOD = 1 << 2,\n ADD_REM = ADD | REM,\n ADD_MOD = ADD | MOD,\n ALL = ADD | REM | MOD,\n REFLOW = 1 << 3,\n SOURCE = 1 << 4,\n NO_SOURCE = 1 << 5,\n NO_FIELDS = 1 << 6;\n\n/**\n * A Pulse enables inter-operator communication during a run of the\n * dataflow graph. In addition to the current timestamp, a pulse may also\n * contain a change-set of added, removed or modified data tuples, as well as\n * a pointer to a full backing data source. Tuple change sets may not\n * be fully materialized; for example, to prevent needless array creation\n * a change set may include larger arrays and corresponding filter functions.\n * The pulse provides a {@link visit} method to enable proper and efficient\n * iteration over requested data tuples.\n *\n * In addition, each pulse can track modification flags for data tuple fields.\n * Responsible transform operators should call the {@link modifies} method to\n * indicate changes to data fields. The {@link modified} method enables\n * querying of this modification state.\n *\n * @constructor\n * @param {Dataflow} dataflow - The backing dataflow instance.\n * @param {number} stamp - The current propagation timestamp.\n * @param {string} [encode] - An optional encoding set name, which is then\n * accessible as Pulse.encode. Operators can respond to (or ignore) this\n * setting as appropriate. This parameter can be used in conjunction with\n * the Encode transform in the vega-encode module.\n */\nfunction Pulse(dataflow, stamp, encode) {\n this.dataflow = dataflow;\n this.stamp = stamp == null ? -1 : stamp;\n this.add = [];\n this.rem = [];\n this.mod = [];\n this.fields = null;\n this.encode = encode || null;\n}\nfunction _materialize(data, filter) {\n var out = [];\n visitArray(data, filter, function (_) {\n return out.push(_);\n });\n return out;\n}\nfunction filter(pulse, flags) {\n var map = {};\n pulse.visit(flags, function (t) {\n map[tupleid(t)] = 1;\n });\n return function (t) {\n return map[tupleid(t)] ? null : t;\n };\n}\nfunction addFilter(a, b) {\n return a ? function (t, i) {\n return a(t, i) && b(t, i);\n } : b;\n}\nPulse.prototype = {\n /**\n * Sentinel value indicating pulse propagation should stop.\n */\n StopPropagation: StopPropagation,\n /**\n * Boolean flag indicating ADD (added) tuples.\n */\n ADD: ADD,\n /**\n * Boolean flag indicating REM (removed) tuples.\n */\n REM: REM,\n /**\n * Boolean flag indicating MOD (modified) tuples.\n */\n MOD: MOD,\n /**\n * Boolean flag indicating ADD (added) and REM (removed) tuples.\n */\n ADD_REM: ADD_REM,\n /**\n * Boolean flag indicating ADD (added) and MOD (modified) tuples.\n */\n ADD_MOD: ADD_MOD,\n /**\n * Boolean flag indicating ADD, REM and MOD tuples.\n */\n ALL: ALL,\n /**\n * Boolean flag indicating all tuples in a data source\n * except for the ADD, REM and MOD tuples.\n */\n REFLOW: REFLOW,\n /**\n * Boolean flag indicating a 'pass-through' to a\n * backing data source, ignoring ADD, REM and MOD tuples.\n */\n SOURCE: SOURCE,\n /**\n * Boolean flag indicating that source data should be\n * suppressed when creating a forked pulse.\n */\n NO_SOURCE: NO_SOURCE,\n /**\n * Boolean flag indicating that field modifications should be\n * suppressed when creating a forked pulse.\n */\n NO_FIELDS: NO_FIELDS,\n /**\n * Creates a new pulse based on the values of this pulse.\n * The dataflow, time stamp and field modification values are copied over.\n * By default, new empty ADD, REM and MOD arrays are created.\n * @param {number} flags - Integer of boolean flags indicating which (if any)\n * tuple arrays should be copied to the new pulse. The supported flag values\n * are ADD, REM and MOD. Array references are copied directly: new array\n * instances are not created.\n * @return {Pulse} - The forked pulse instance.\n * @see init\n */\n fork: function fork(flags) {\n return new Pulse(this.dataflow).init(this, flags);\n },\n /**\n * Creates a copy of this pulse with new materialized array\n * instances for the ADD, REM, MOD, and SOURCE arrays.\n * The dataflow, time stamp and field modification values are copied over.\n * @return {Pulse} - The cloned pulse instance.\n * @see init\n */\n clone: function clone() {\n var p = this.fork(ALL);\n p.add = p.add.slice();\n p.rem = p.rem.slice();\n p.mod = p.mod.slice();\n if (p.source) p.source = p.source.slice();\n return p.materialize(ALL | SOURCE);\n },\n /**\n * Returns a pulse that adds all tuples from a backing source. This is\n * useful for cases where operators are added to a dataflow after an\n * upstream data pipeline has already been processed, ensuring that\n * new operators can observe all tuples within a stream.\n * @return {Pulse} - A pulse instance with all source tuples included\n * in the add array. If the current pulse already has all source\n * tuples in its add array, it is returned directly. If the current\n * pulse does not have a backing source, it is returned directly.\n */\n addAll: function addAll() {\n var p = this;\n var reuse = !p.source || p.add === p.rem // special case for indexed set (e.g., crossfilter)\n || !p.rem.length && p.source.length === p.add.length;\n if (reuse) {\n return p;\n } else {\n p = new Pulse(this.dataflow).init(this);\n p.add = p.source;\n p.rem = []; // new operators can ignore rem #2769\n return p;\n }\n },\n /**\n * Initialize this pulse based on the values of another pulse. This method\n * is used internally by {@link fork} to initialize a new forked tuple.\n * The dataflow, time stamp and field modification values are copied over.\n * By default, new empty ADD, REM and MOD arrays are created.\n * @param {Pulse} src - The source pulse to copy from.\n * @param {number} flags - Integer of boolean flags indicating which (if any)\n * tuple arrays should be copied to the new pulse. The supported flag values\n * are ADD, REM and MOD. Array references are copied directly: new array\n * instances are not created. By default, source data arrays are copied\n * to the new pulse. Use the NO_SOURCE flag to enforce a null source.\n * @return {Pulse} - Returns this Pulse instance.\n */\n init: function init(src, flags) {\n var p = this;\n p.stamp = src.stamp;\n p.encode = src.encode;\n if (src.fields && !(flags & NO_FIELDS)) {\n p.fields = src.fields;\n }\n if (flags & ADD) {\n p.addF = src.addF;\n p.add = src.add;\n } else {\n p.addF = null;\n p.add = [];\n }\n if (flags & REM) {\n p.remF = src.remF;\n p.rem = src.rem;\n } else {\n p.remF = null;\n p.rem = [];\n }\n if (flags & MOD) {\n p.modF = src.modF;\n p.mod = src.mod;\n } else {\n p.modF = null;\n p.mod = [];\n }\n if (flags & NO_SOURCE) {\n p.srcF = null;\n p.source = null;\n } else {\n p.srcF = src.srcF;\n p.source = src.source;\n if (src.cleans) p.cleans = src.cleans;\n }\n return p;\n },\n /**\n * Schedules a function to run after pulse propagation completes.\n * @param {function} func - The function to run.\n */\n runAfter: function runAfter(func) {\n this.dataflow.runAfter(func);\n },\n /**\n * Indicates if tuples have been added, removed or modified.\n * @param {number} [flags] - The tuple types (ADD, REM or MOD) to query.\n * Defaults to ALL, returning true if any tuple type has changed.\n * @return {boolean} - Returns true if one or more queried tuple types have\n * changed, false otherwise.\n */\n changed: function changed(flags) {\n var f = flags || ALL;\n return f & ADD && this.add.length || f & REM && this.rem.length || f & MOD && this.mod.length;\n },\n /**\n * Forces a \"reflow\" of tuple values, such that all tuples in the backing\n * source are added to the MOD set, unless already present in the ADD set.\n * @param {boolean} [fork=false] - If true, returns a forked copy of this\n * pulse, and invokes reflow on that derived pulse.\n * @return {Pulse} - The reflowed pulse instance.\n */\n reflow: function reflow(fork) {\n if (fork) return this.fork(ALL).reflow();\n var len = this.add.length,\n src = this.source && this.source.length;\n if (src && src !== len) {\n this.mod = this.source;\n if (len) this.filter(MOD, filter(this, ADD));\n }\n return this;\n },\n /**\n * Get/set metadata to pulse requesting garbage collection\n * to reclaim currently unused resources.\n */\n clean: function clean(value) {\n if (arguments.length) {\n this.cleans = !!value;\n return this;\n } else {\n return this.cleans;\n }\n },\n /**\n * Marks one or more data field names as modified to assist dependency\n * tracking and incremental processing by transform operators.\n * @param {string|Array} _ - The field(s) to mark as modified.\n * @return {Pulse} - This pulse instance.\n */\n modifies: function modifies(_) {\n var hash = this.fields || (this.fields = {});\n if (isArray(_)) {\n _.forEach(function (f) {\n return hash[f] = true;\n });\n } else {\n hash[_] = true;\n }\n return this;\n },\n /**\n * Checks if one or more data fields have been modified during this pulse\n * propagation timestamp.\n * @param {string|Array} _ - The field(s) to check for modified.\n * @param {boolean} nomod - If true, will check the modified flag even if\n * no mod tuples exist. If false (default), mod tuples must be present.\n * @return {boolean} - Returns true if any of the provided fields has been\n * marked as modified, false otherwise.\n */\n modified: function modified(_, nomod) {\n var fields = this.fields;\n return !((nomod || this.mod.length) && fields) ? false : !arguments.length ? !!fields : isArray(_) ? _.some(function (f) {\n return fields[f];\n }) : fields[_];\n },\n /**\n * Adds a filter function to one more tuple sets. Filters are applied to\n * backing tuple arrays, to determine the actual set of tuples considered\n * added, removed or modified. They can be used to delay materialization of\n * a tuple set in order to avoid expensive array copies. In addition, the\n * filter functions can serve as value transformers: unlike standard predicate\n * function (which return boolean values), Pulse filters should return the\n * actual tuple value to process. If a tuple set is already filtered, the\n * new filter function will be appended into a conjuntive ('and') query.\n * @param {number} flags - Flags indicating the tuple set(s) to filter.\n * @param {function(*):object} filter - Filter function that will be applied\n * to the tuple set array, and should return a data tuple if the value\n * should be included in the tuple set, and falsy (or null) otherwise.\n * @return {Pulse} - Returns this pulse instance.\n */\n filter: function filter(flags, _filter2) {\n var p = this;\n if (flags & ADD) p.addF = addFilter(p.addF, _filter2);\n if (flags & REM) p.remF = addFilter(p.remF, _filter2);\n if (flags & MOD) p.modF = addFilter(p.modF, _filter2);\n if (flags & SOURCE) p.srcF = addFilter(p.srcF, _filter2);\n return p;\n },\n /**\n * Materialize one or more tuple sets in this pulse. If the tuple set(s) have\n * a registered filter function, it will be applied and the tuple set(s) will\n * be replaced with materialized tuple arrays.\n * @param {number} flags - Flags indicating the tuple set(s) to materialize.\n * @return {Pulse} - Returns this pulse instance.\n */\n materialize: function materialize(flags) {\n flags = flags || ALL;\n var p = this;\n if (flags & ADD && p.addF) {\n p.add = _materialize(p.add, p.addF);\n p.addF = null;\n }\n if (flags & REM && p.remF) {\n p.rem = _materialize(p.rem, p.remF);\n p.remF = null;\n }\n if (flags & MOD && p.modF) {\n p.mod = _materialize(p.mod, p.modF);\n p.modF = null;\n }\n if (flags & SOURCE && p.srcF) {\n p.source = p.source.filter(p.srcF);\n p.srcF = null;\n }\n return p;\n },\n /**\n * Visit one or more tuple sets in this pulse.\n * @param {number} flags - Flags indicating the tuple set(s) to visit.\n * Legal values are ADD, REM, MOD and SOURCE (if a backing data source\n * has been set).\n * @param {function(object):*} - Visitor function invoked per-tuple.\n * @return {Pulse} - Returns this pulse instance.\n */\n visit: function visit(flags, visitor) {\n var p = this,\n v = visitor;\n if (flags & SOURCE) {\n visitArray(p.source, p.srcF, v);\n return p;\n }\n if (flags & ADD) visitArray(p.add, p.addF, v);\n if (flags & REM) visitArray(p.rem, p.remF, v);\n if (flags & MOD) visitArray(p.mod, p.modF, v);\n var src = p.source;\n if (flags & REFLOW && src) {\n var sum = p.add.length + p.mod.length;\n if (sum === src.length) ;else if (sum) {\n visitArray(src, filter(p, ADD_MOD), v);\n } else {\n // if no add/rem/mod tuples, visit source\n visitArray(src, p.srcF, v);\n }\n }\n return p;\n }\n};\n\n/**\n * Represents a set of multiple pulses. Used as input for operators\n * that accept multiple pulses at a time. Contained pulses are\n * accessible via the public \"pulses\" array property. This pulse doe\n * not carry added, removed or modified tuples directly. However,\n * the visit method can be used to traverse all such tuples contained\n * in sub-pulses with a timestamp matching this parent multi-pulse.\n * @constructor\n * @param {Dataflow} dataflow - The backing dataflow instance.\n * @param {number} stamp - The timestamp.\n * @param {Array} pulses - The sub-pulses for this multi-pulse.\n */\nfunction MultiPulse(dataflow, stamp, pulses, encode) {\n var p = this;\n var c = 0;\n this.dataflow = dataflow;\n this.stamp = stamp;\n this.fields = null;\n this.encode = encode || null;\n this.pulses = pulses;\n var _iterator = _createForOfIteratorHelper(pulses),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _pulse2 = _step.value;\n if (_pulse2.stamp !== stamp) continue;\n if (_pulse2.fields) {\n var hash = p.fields || (p.fields = {});\n for (var f in _pulse2.fields) {\n hash[f] = 1;\n }\n }\n if (_pulse2.changed(p.ADD)) c |= p.ADD;\n if (_pulse2.changed(p.REM)) c |= p.REM;\n if (_pulse2.changed(p.MOD)) c |= p.MOD;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n this.changes = c;\n}\ninherits(MultiPulse, Pulse, {\n /**\n * Creates a new pulse based on the values of this pulse.\n * The dataflow, time stamp and field modification values are copied over.\n * @return {Pulse}\n */\n fork: function fork(flags) {\n var p = new Pulse(this.dataflow).init(this, flags & this.NO_FIELDS);\n if (flags !== undefined) {\n if (flags & p.ADD) this.visit(p.ADD, function (t) {\n return p.add.push(t);\n });\n if (flags & p.REM) this.visit(p.REM, function (t) {\n return p.rem.push(t);\n });\n if (flags & p.MOD) this.visit(p.MOD, function (t) {\n return p.mod.push(t);\n });\n }\n return p;\n },\n changed: function changed(flags) {\n return this.changes & flags;\n },\n modified: function modified(_) {\n var p = this,\n fields = p.fields;\n return !(fields && p.changes & p.MOD) ? 0 : isArray(_) ? _.some(function (f) {\n return fields[f];\n }) : fields[_];\n },\n filter: function filter() {\n error('MultiPulse does not support filtering.');\n },\n materialize: function materialize() {\n error('MultiPulse does not support materialization.');\n },\n visit: function visit(flags, visitor) {\n var p = this,\n pulses = p.pulses,\n n = pulses.length;\n var i = 0;\n if (flags & p.SOURCE) {\n for (; i < n; ++i) {\n pulses[i].visit(flags, visitor);\n }\n } else {\n for (; i < n; ++i) {\n if (pulses[i].stamp === p.stamp) {\n pulses[i].visit(flags, visitor);\n }\n }\n }\n return p;\n }\n});\n\n/* eslint-disable require-atomic-updates */\n\n/**\n * Evaluates the dataflow and returns a Promise that resolves when pulse\n * propagation completes. This method will increment the current timestamp\n * and process all updated, pulsed and touched operators. When invoked for\n * the first time, all registered operators will be processed. This method\n * should not be invoked by third-party clients, use {@link runAsync} or\n * {@link run} instead.\n * @param {string} [encode] - The name of an encoding set to invoke during\n * propagation. This value is added to generated Pulse instances;\n * operators can then respond to (or ignore) this setting as appropriate.\n * This parameter can be used in conjunction with the Encode transform in\n * the vega-encode package.\n * @param {function} [prerun] - An optional callback function to invoke\n * immediately before dataflow evaluation commences.\n * @param {function} [postrun] - An optional callback function to invoke\n * after dataflow evaluation completes. The callback will be invoked\n * after those registered via {@link runAfter}.\n * @return {Promise} - A promise that resolves to this dataflow after\n * evaluation completes.\n */\nfunction evaluate(_x8, _x9, _x10) {\n return _evaluate.apply(this, arguments);\n}\n/**\n * Queues dataflow evaluation to run once any other queued evaluations have\n * completed and returns a Promise that resolves when the queued pulse\n * propagation completes. If provided, a callback function will be invoked\n * immediately before evaluation commences. This method will ensure a\n * separate evaluation is invoked for each time it is called.\n * @param {string} [encode] - The name of an encoding set to invoke during\n * propagation. This value is added to generated Pulse instances;\n * operators can then respond to (or ignore) this setting as appropriate.\n * This parameter can be used in conjunction with the Encode transform in\n * the vega-encode package.\n * @param {function} [prerun] - An optional callback function to invoke\n * immediately before dataflow evaluation commences.\n * @param {function} [postrun] - An optional callback function to invoke\n * after dataflow evaluation completes. The callback will be invoked\n * after those registered via {@link runAfter}.\n * @return {Promise} - A promise that resolves to this dataflow after\n * evaluation completes.\n */\nfunction _evaluate() {\n _evaluate = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4(encode, prerun, postrun) {\n var df, async, stamp, count, op, next, error, pr, i;\n return _regeneratorRuntime.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n df = this, async = []; // if the pulse value is set, this is a re-entrant call\n if (!df._pulse) {\n _context4.next = 3;\n break;\n }\n return _context4.abrupt(\"return\", reentrant(df));\n case 3:\n if (!df._pending) {\n _context4.next = 6;\n break;\n }\n _context4.next = 6;\n return df._pending;\n case 6:\n if (!prerun) {\n _context4.next = 9;\n break;\n }\n _context4.next = 9;\n return asyncCallback(df, prerun);\n case 9:\n if (df._touched.length) {\n _context4.next = 12;\n break;\n }\n df.debug('Dataflow invoked, but nothing to do.');\n return _context4.abrupt(\"return\", df);\n case 12:\n // increment timestamp clock\n stamp = ++df._clock; // set the current pulse\n df._pulse = new Pulse(df, stamp, encode);\n\n // initialize priority queue, reset touched operators\n df._touched.forEach(function (op) {\n return df._enqueue(op, true);\n });\n df._touched = UniqueList(id);\n count = 0;\n _context4.prev = 17;\n case 18:\n if (!(df._heap.size() > 0)) {\n _context4.next = 35;\n break;\n }\n // dequeue operator with highest priority\n op = df._heap.pop();\n\n // re-queue if rank changed\n if (!(op.rank !== op.qrank)) {\n _context4.next = 23;\n break;\n }\n df._enqueue(op, true);\n return _context4.abrupt(\"continue\", 18);\n case 23:\n // otherwise, evaluate the operator\n next = op.run(df._getPulse(op, encode));\n if (!next.then) {\n _context4.next = 30;\n break;\n }\n _context4.next = 27;\n return next;\n case 27:\n next = _context4.sent;\n _context4.next = 31;\n break;\n case 30:\n if (next.async) {\n // queue parallel asynchronous execution\n async.push(next.async);\n next = StopPropagation;\n }\n case 31:\n // propagate evaluation, enqueue dependent operators\n if (next !== StopPropagation) {\n if (op._targets) op._targets.forEach(function (op) {\n return df._enqueue(op);\n });\n }\n\n // increment visit counter\n ++count;\n _context4.next = 18;\n break;\n case 35:\n _context4.next = 41;\n break;\n case 37:\n _context4.prev = 37;\n _context4.t0 = _context4[\"catch\"](17);\n df._heap.clear();\n error = _context4.t0;\n case 41:\n // reset pulse map\n df._input = {};\n df._pulse = null;\n df.debug(\"Pulse \".concat(stamp, \": \").concat(count, \" operators\"));\n if (error) {\n df._postrun = [];\n df.error(error);\n }\n\n // invoke callbacks queued via runAfter\n if (!df._postrun.length) {\n _context4.next = 55;\n break;\n }\n pr = df._postrun.sort(function (a, b) {\n return b.priority - a.priority;\n });\n df._postrun = [];\n i = 0;\n case 49:\n if (!(i < pr.length)) {\n _context4.next = 55;\n break;\n }\n _context4.next = 52;\n return asyncCallback(df, pr[i].callback);\n case 52:\n ++i;\n _context4.next = 49;\n break;\n case 55:\n if (!postrun) {\n _context4.next = 58;\n break;\n }\n _context4.next = 58;\n return asyncCallback(df, postrun);\n case 58:\n // handle non-blocking asynchronous callbacks\n if (async.length) {\n Promise.all(async).then(function (cb) {\n return df.runAsync(null, function () {\n cb.forEach(function (f) {\n try {\n f(df);\n } catch (err) {\n df.error(err);\n }\n });\n });\n });\n }\n return _context4.abrupt(\"return\", df);\n case 60:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4, this, [[17, 37]]);\n }));\n return _evaluate.apply(this, arguments);\n}\nfunction runAsync(_x11, _x12, _x13) {\n return _runAsync.apply(this, arguments);\n}\n/**\n * Requests dataflow evaluation and the immediately returns this dataflow\n * instance. If there are pending data loading or other asynchronous\n * operations, the dataflow will evaluate asynchronously after this method\n * has been invoked. To track when dataflow evaluation completes, use the\n * {@link runAsync} method instead. This method will raise an error if\n * invoked while the dataflow is already in the midst of evaluation.\n * @param {string} [encode] - The name of an encoding set to invoke during\n * propagation. This value is added to generated Pulse instances;\n * operators can then respond to (or ignore) this setting as appropriate.\n * This parameter can be used in conjunction with the Encode transform in\n * the vega-encode module.\n * @param {function} [prerun] - An optional callback function to invoke\n * immediately before dataflow evaluation commences.\n * @param {function} [postrun] - An optional callback function to invoke\n * after dataflow evaluation completes. The callback will be invoked\n * after those registered via {@link runAfter}.\n * @return {Dataflow} - This dataflow instance.\n */\nfunction _runAsync() {\n _runAsync = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5(encode, prerun, postrun) {\n var _this3 = this;\n var clear;\n return _regeneratorRuntime.wrap(function _callee5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n if (!this._running) {\n _context5.next = 5;\n break;\n }\n _context5.next = 3;\n return this._running;\n case 3:\n _context5.next = 0;\n break;\n case 5:\n // run dataflow, manage running promise\n clear = function clear() {\n return _this3._running = null;\n };\n (this._running = this.evaluate(encode, prerun, postrun)).then(clear, clear);\n return _context5.abrupt(\"return\", this._running);\n case 8:\n case \"end\":\n return _context5.stop();\n }\n }, _callee5, this);\n }));\n return _runAsync.apply(this, arguments);\n}\nfunction run(encode, prerun, postrun) {\n return this._pulse ? reentrant(this) : (this.evaluate(encode, prerun, postrun), this);\n}\n\n/**\n * Schedules a callback function to be invoked after the current pulse\n * propagation completes. If no propagation is currently occurring,\n * the function is invoked immediately. Callbacks scheduled via runAfter\n * are invoked immediately upon completion of the current cycle, before\n * any request queued via runAsync. This method is primarily intended for\n * internal use. Third-party callers using runAfter to schedule a callback\n * that invokes {@link run} or {@link runAsync} should not use this method,\n * but instead use {@link runAsync} with prerun or postrun arguments.\n * @param {function(Dataflow)} callback - The callback function to run.\n * The callback will be invoked with this Dataflow instance as its\n * sole argument.\n * @param {boolean} enqueue - A boolean flag indicating that the\n * callback should be queued up to run after the next propagation\n * cycle, suppressing immediate invocation when propagation is not\n * currently occurring.\n * @param {number} [priority] - A priority value used to sort registered\n * callbacks to determine execution order. This argument is intended\n * for internal Vega use only.\n */\nfunction runAfter(callback, enqueue, priority) {\n if (this._pulse || enqueue) {\n // pulse propagation is currently running, queue to run after\n this._postrun.push({\n priority: priority || 0,\n callback: callback\n });\n } else {\n // pulse propagation already complete, invoke immediately\n try {\n callback(this);\n } catch (err) {\n this.error(err);\n }\n }\n}\n\n/**\n * Raise an error for re-entrant dataflow evaluation.\n */\nfunction reentrant(df) {\n df.error('Dataflow already running. Use runAsync() to chain invocations.');\n return df;\n}\n\n/**\n * Enqueue an operator into the priority queue for evaluation. The operator\n * will be enqueued if it has no registered pulse for the current cycle, or if\n * the force argument is true. Upon enqueue, this method also sets the\n * operator's qrank to the current rank value.\n * @param {Operator} op - The operator to enqueue.\n * @param {boolean} [force] - A flag indicating if the operator should be\n * forceably added to the queue, even if it has already been previously\n * enqueued during the current pulse propagation. This is useful when the\n * dataflow graph is dynamically modified and the operator rank changes.\n */\nfunction enqueue(op, force) {\n var q = op.stamp < this._clock;\n if (q) op.stamp = this._clock;\n if (q || force) {\n op.qrank = op.rank;\n this._heap.push(op);\n }\n}\n\n/**\n * Provide a correct pulse for evaluating an operator. If the operator has an\n * explicit source operator, we will try to pull the pulse(s) from it.\n * If there is an array of source operators, we build a multi-pulse.\n * Otherwise, we return a current pulse with correct source data.\n * If the pulse is the pulse map has an explicit target set, we use that.\n * Else if the pulse on the upstream source operator is current, we use that.\n * Else we use the pulse from the pulse map, but copy the source tuple array.\n * @param {Operator} op - The operator for which to get an input pulse.\n * @param {string} [encode] - An (optional) encoding set name with which to\n * annotate the returned pulse. See {@link run} for more information.\n */\nfunction getPulse(op, encode) {\n var s = op.source,\n stamp = this._clock;\n return s && isArray(s) ? new MultiPulse(this, stamp, s.map(function (_) {\n return _.pulse;\n }), encode) : this._input[op.id] || singlePulse(this._pulse, s && s.pulse);\n}\nfunction singlePulse(p, s) {\n if (s && s.stamp === p.stamp) {\n return s;\n }\n p = p.fork();\n if (s && s !== StopPropagation) {\n p.source = s.source;\n }\n return p;\n}\nvar NO_OPT = {\n skip: false,\n force: false\n};\n\n/**\n * Touches an operator, scheduling it to be evaluated. If invoked outside of\n * a pulse propagation, the operator will be evaluated the next time this\n * dataflow is run. If invoked in the midst of pulse propagation, the operator\n * will be queued for evaluation if and only if the operator has not yet been\n * evaluated on the current propagation timestamp.\n * @param {Operator} op - The operator to touch.\n * @param {object} [options] - Additional options hash.\n * @param {boolean} [options.skip] - If true, the operator will\n * be skipped: it will not be evaluated, but its dependents will be.\n * @return {Dataflow}\n */\nfunction touch(op, options) {\n var opt = options || NO_OPT;\n if (this._pulse) {\n // if in midst of propagation, add to priority queue\n this._enqueue(op);\n } else {\n // otherwise, queue for next propagation\n this._touched.add(op);\n }\n if (opt.skip) op.skip(true);\n return this;\n}\n\n/**\n * Updates the value of the given operator.\n * @param {Operator} op - The operator to update.\n * @param {*} value - The value to set.\n * @param {object} [options] - Additional options hash.\n * @param {boolean} [options.force] - If true, the operator will\n * be re-evaluated even if its value has not changed.\n * @param {boolean} [options.skip] - If true, the operator will\n * be skipped: it will not be evaluated, but its dependents will be.\n * @return {Dataflow}\n */\nfunction update(op, value, options) {\n var opt = options || NO_OPT;\n if (op.set(value) || opt.force) {\n this.touch(op, opt);\n }\n return this;\n}\n\n/**\n * Pulses an operator with a changeset of tuples. If invoked outside of\n * a pulse propagation, the pulse will be applied the next time this\n * dataflow is run. If invoked in the midst of pulse propagation, the pulse\n * will be added to the set of active pulses and will be applied if and\n * only if the target operator has not yet been evaluated on the current\n * propagation timestamp.\n * @param {Operator} op - The operator to pulse.\n * @param {ChangeSet} value - The tuple changeset to apply.\n * @param {object} [options] - Additional options hash.\n * @param {boolean} [options.skip] - If true, the operator will\n * be skipped: it will not be evaluated, but its dependents will be.\n * @return {Dataflow}\n */\nfunction pulse(op, changeset, options) {\n this.touch(op, options || NO_OPT);\n var p = new Pulse(this, this._clock + (this._pulse ? 0 : 1)),\n t = op.pulse && op.pulse.source || [];\n p.target = op;\n this._input[op.id] = changeset.pulse(p, t);\n return this;\n}\nfunction Heap(cmp) {\n var nodes = [];\n return {\n clear: function clear() {\n return nodes = [];\n },\n size: function size() {\n return nodes.length;\n },\n peek: function peek() {\n return nodes[0];\n },\n push: function push(x) {\n nodes.push(x);\n return siftdown(nodes, 0, nodes.length - 1, cmp);\n },\n pop: function pop() {\n var last = nodes.pop();\n var item;\n if (nodes.length) {\n item = nodes[0];\n nodes[0] = last;\n siftup(nodes, 0, cmp);\n } else {\n item = last;\n }\n return item;\n }\n };\n}\nfunction siftdown(array, start, idx, cmp) {\n var parent, pidx;\n var item = array[idx];\n while (idx > start) {\n pidx = idx - 1 >> 1;\n parent = array[pidx];\n if (cmp(item, parent) < 0) {\n array[idx] = parent;\n idx = pidx;\n continue;\n }\n break;\n }\n return array[idx] = item;\n}\nfunction siftup(array, idx, cmp) {\n var start = idx,\n end = array.length,\n item = array[idx];\n var cidx = (idx << 1) + 1,\n ridx;\n while (cidx < end) {\n ridx = cidx + 1;\n if (ridx < end && cmp(array[cidx], array[ridx]) >= 0) {\n cidx = ridx;\n }\n array[idx] = array[cidx];\n idx = cidx;\n cidx = (idx << 1) + 1;\n }\n array[idx] = item;\n return siftdown(array, start, idx, cmp);\n}\n\n/**\n * A dataflow graph for reactive processing of data streams.\n * @constructor\n */\nfunction Dataflow() {\n this.logger(logger());\n this.logLevel(Error);\n this._clock = 0;\n this._rank = 0;\n this._locale = defaultLocale();\n try {\n this._loader = loader();\n } catch (e) {\n // do nothing if loader module is unavailable\n }\n this._touched = UniqueList(id);\n this._input = {};\n this._pulse = null;\n this._heap = Heap(function (a, b) {\n return a.qrank - b.qrank;\n });\n this._postrun = [];\n}\nfunction logMethod(method) {\n return function () {\n return this._log[method].apply(this, arguments);\n };\n}\nDataflow.prototype = {\n /**\n * The current timestamp of this dataflow. This value reflects the\n * timestamp of the previous dataflow run. The dataflow is initialized\n * with a stamp value of 0. The initial run of the dataflow will have\n * a timestap of 1, and so on. This value will match the\n * {@link Pulse.stamp} property.\n * @return {number} - The current timestamp value.\n */\n stamp: function stamp() {\n return this._clock;\n },\n /**\n * Gets or sets the loader instance to use for data file loading. A\n * loader object must provide a \"load\" method for loading files and a\n * \"sanitize\" method for checking URL/filename validity. Both methods\n * should accept a URI and options hash as arguments, and return a Promise\n * that resolves to the loaded file contents (load) or a hash containing\n * sanitized URI data with the sanitized url assigned to the \"href\" property\n * (sanitize).\n * @param {object} _ - The loader instance to use.\n * @return {object|Dataflow} - If no arguments are provided, returns\n * the current loader instance. Otherwise returns this Dataflow instance.\n */\n loader: function loader(_) {\n if (arguments.length) {\n this._loader = _;\n return this;\n } else {\n return this._loader;\n }\n },\n /**\n * Gets or sets the locale instance to use for formatting and parsing\n * string values. The locale object should be provided by the\n * vega-format library, and include methods such as format, timeFormat,\n * utcFormat, timeParse, and utcParse.\n * @param {object} _ - The locale instance to use.\n * @return {object|Dataflow} - If no arguments are provided, returns\n * the current locale instance. Otherwise returns this Dataflow instance.\n */\n locale: function locale(_) {\n if (arguments.length) {\n this._locale = _;\n return this;\n } else {\n return this._locale;\n }\n },\n /**\n * Get or set the logger instance used to log messages. If no arguments are\n * provided, returns the current logger instance. Otherwise, sets the logger\n * and return this Dataflow instance. Provided loggers must support the full\n * API of logger objects generated by the vega-util logger method. Note that\n * by default the log level of the new logger will be used; use the logLevel\n * method to adjust the log level as needed.\n */\n logger: function logger(_logger) {\n if (arguments.length) {\n this._log = _logger;\n return this;\n } else {\n return this._log;\n }\n },\n /**\n * Logs an error message. By default, logged messages are written to console\n * output. The message will only be logged if the current log level is high\n * enough to permit error messages.\n */\n error: logMethod('error'),\n /**\n * Logs a warning message. By default, logged messages are written to console\n * output. The message will only be logged if the current log level is high\n * enough to permit warning messages.\n */\n warn: logMethod('warn'),\n /**\n * Logs a information message. By default, logged messages are written to\n * console output. The message will only be logged if the current log level is\n * high enough to permit information messages.\n */\n info: logMethod('info'),\n /**\n * Logs a debug message. By default, logged messages are written to console\n * output. The message will only be logged if the current log level is high\n * enough to permit debug messages.\n */\n debug: logMethod('debug'),\n /**\n * Get or set the current log level. If an argument is provided, it\n * will be used as the new log level.\n * @param {number} [level] - Should be one of None, Warn, Info\n * @return {number} - The current log level.\n */\n logLevel: logMethod('level'),\n /**\n * Empty entry threshold for garbage cleaning. Map data structures will\n * perform cleaning once the number of empty entries exceeds this value.\n */\n cleanThreshold: 1e4,\n // OPERATOR REGISTRATION\n add: add,\n connect: connect,\n rank: rank,\n rerank: rerank,\n // OPERATOR UPDATES\n pulse: pulse,\n touch: touch,\n update: update,\n changeset: changeset,\n // DATA LOADING\n ingest: ingest,\n parse: parse,\n preload: preload,\n request: request,\n // EVENT HANDLING\n events: events,\n on: on,\n // PULSE PROPAGATION\n evaluate: evaluate,\n run: run,\n runAsync: runAsync,\n runAfter: runAfter,\n _enqueue: enqueue,\n _getPulse: getPulse\n};\n\n/**\n * Abstract class for operators that process data tuples.\n * Subclasses must provide a {@link transform} method for operator processing.\n * @constructor\n * @param {*} [init] - The initial value for this operator.\n * @param {object} [params] - The parameters for this operator.\n * @param {Operator} [source] - The operator from which to receive pulses.\n */\nfunction Transform(init, params) {\n Operator.call(this, init, null, params);\n}\ninherits(Transform, Operator, {\n /**\n * Overrides {@link Operator.evaluate} for transform operators.\n * Internally, this method calls {@link evaluate} to perform processing.\n * If {@link evaluate} returns a falsy value, the input pulse is returned.\n * This method should NOT be overridden, instead overrride {@link evaluate}.\n * @param {Pulse} pulse - the current dataflow pulse.\n * @return the output pulse for this operator (or StopPropagation)\n */\n run: function run(pulse) {\n var _this2 = this;\n if (pulse.stamp < this.stamp) return pulse.StopPropagation;\n var rv;\n if (this.skip()) {\n this.skip(false);\n } else {\n rv = this.evaluate(pulse);\n }\n rv = rv || pulse;\n if (rv.then) {\n rv = rv.then(function (_) {\n return _this2.pulse = _;\n });\n } else if (rv !== pulse.StopPropagation) {\n this.pulse = rv;\n }\n return rv;\n },\n /**\n * Overrides {@link Operator.evaluate} for transform operators.\n * Marshalls parameter values and then invokes {@link transform}.\n * @param {Pulse} pulse - the current dataflow pulse.\n * @return {Pulse} The output pulse (or StopPropagation). A falsy return\n value (including undefined) will let the input pulse pass through.\n */\n evaluate: function evaluate(pulse) {\n var params = this.marshall(pulse.stamp),\n out = this.transform(params, pulse);\n params.clear();\n return out;\n },\n /**\n * Process incoming pulses.\n * Subclasses should override this method to implement transforms.\n * @param {Parameters} _ - The operator parameter values.\n * @param {Pulse} pulse - The current dataflow pulse.\n * @return {Pulse} The output pulse (or StopPropagation). A falsy return\n * value (including undefined) will let the input pulse pass through.\n */\n transform: function transform() {}\n});\nvar transforms = {};\nfunction definition(type) {\n var t = transform(type);\n return t && t.Definition || null;\n}\nfunction transform(type) {\n type = type && type.toLowerCase();\n return hasOwnProperty(transforms, type) ? transforms[type] : null;\n}\nexport { Dataflow, EventStream, MultiPulse, Operator, Parameters, Pulse, Transform, UniqueList, asyncCallback, changeset, definition, derive, ingest$1 as ingest, isChangeSet, isTuple, rederive, replace, stableCompare, transform, transforms, tupleid };","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nexport default function max(values, valueof) {\n var max;\n if (valueof === undefined) {\n var _iterator = _createForOfIteratorHelper(values),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var value = _step.value;\n if (value != null && (max < value || max === undefined && value >= value)) {\n max = value;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n } else {\n var index = -1;\n var _iterator2 = _createForOfIteratorHelper(values),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _value = _step2.value;\n if ((_value = valueof(_value, ++index, values)) != null && (max < _value || max === undefined && _value >= _value)) {\n max = _value;\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n return max;\n}","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nexport default function min(values, valueof) {\n var min;\n if (valueof === undefined) {\n var _iterator = _createForOfIteratorHelper(values),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var value = _step.value;\n if (value != null && (min > value || min === undefined && value >= value)) {\n min = value;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n } else {\n var index = -1;\n var _iterator2 = _createForOfIteratorHelper(values),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _value = _step2.value;\n if ((_value = valueof(_value, ++index, values)) != null && (min > _value || min === undefined && _value >= _value)) {\n min = _value;\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n return min;\n}","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport ascending from \"./ascending.js\";\nimport permute from \"./permute.js\";\nexport default function sort(values) {\n for (var _len = arguments.length, F = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n F[_key - 1] = arguments[_key];\n }\n if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n values = Array.from(values);\n var _F = F,\n _F2 = _slicedToArray(_F, 1),\n f = _F2[0];\n if (f && f.length !== 2 || F.length > 1) {\n var index = Uint32Array.from(values, function (d, i) {\n return i;\n });\n if (F.length > 1) {\n F = F.map(function (f) {\n return values.map(f);\n });\n index.sort(function (i, j) {\n var _iterator = _createForOfIteratorHelper(F),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _f = _step.value;\n var c = ascendingDefined(_f[i], _f[j]);\n if (c) return c;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n });\n } else {\n f = values.map(f);\n index.sort(function (i, j) {\n return ascendingDefined(f[i], f[j]);\n });\n }\n return permute(values, index);\n }\n return values.sort(compareDefined(f));\n}\nexport function compareDefined() {\n var compare = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ascending;\n if (compare === ascending) return ascendingDefined;\n if (typeof compare !== \"function\") throw new TypeError(\"compare is not a function\");\n return function (a, b) {\n var x = compare(a, b);\n if (x || x === 0) return x;\n return (compare(b, b) === 0) - (compare(a, a) === 0);\n };\n}\nexport function ascendingDefined(a, b) {\n return (a == null || !(a >= a)) - (b == null || !(b >= b)) || (a < b ? -1 : a > b ? 1 : 0);\n}","import { ascendingDefined, compareDefined } from \"./sort.js\";\n\n// Based on https://github.com/mourner/quickselect\n// ISC license, Copyright 2018 Vladimir Agafonkin.\nexport default function quickselect(array, k) {\n var left = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var right = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Infinity;\n var compare = arguments.length > 4 ? arguments[4] : undefined;\n k = Math.floor(k);\n left = Math.floor(Math.max(0, left));\n right = Math.floor(Math.min(array.length - 1, right));\n if (!(left <= k && k <= right)) return array;\n compare = compare === undefined ? ascendingDefined : compareDefined(compare);\n while (right > left) {\n if (right - left > 600) {\n var n = right - left + 1;\n var m = k - left + 1;\n var z = Math.log(n);\n var s = 0.5 * Math.exp(2 * z / 3);\n var sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n var newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n var newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n quickselect(array, k, newLeft, newRight, compare);\n }\n var t = array[k];\n var i = left;\n var j = right;\n swap(array, left, k);\n if (compare(array[right], t) > 0) swap(array, left, right);\n while (i < j) {\n swap(array, i, j), ++i, --j;\n while (compare(array[i], t) < 0) ++i;\n while (compare(array[j], t) > 0) --j;\n }\n if (compare(array[left], t) === 0) swap(array, left, j);else ++j, swap(array, j, right);\n if (j <= k) left = j + 1;\n if (k <= j) right = j - 1;\n }\n return array;\n}\nfunction swap(array, i, j) {\n var t = array[i];\n array[i] = array[j];\n array[j] = t;\n}","import _regeneratorRuntime from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/regenerator/index.js\";\nvar _marked = /*#__PURE__*/_regeneratorRuntime.mark(numbers);\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nexport default function number(x) {\n return x === null ? NaN : +x;\n}\nexport function numbers(values, valueof) {\n var _iterator, _step, value, index, _iterator2, _step2, _value;\n return _regeneratorRuntime.wrap(function numbers$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n if (!(valueof === undefined)) {\n _context.next = 21;\n break;\n }\n _iterator = _createForOfIteratorHelper(values);\n _context.prev = 2;\n _iterator.s();\n case 4:\n if ((_step = _iterator.n()).done) {\n _context.next = 11;\n break;\n }\n value = _step.value;\n if (!(value != null && (value = +value) >= value)) {\n _context.next = 9;\n break;\n }\n _context.next = 9;\n return value;\n case 9:\n _context.next = 4;\n break;\n case 11:\n _context.next = 16;\n break;\n case 13:\n _context.prev = 13;\n _context.t0 = _context[\"catch\"](2);\n _iterator.e(_context.t0);\n case 16:\n _context.prev = 16;\n _iterator.f();\n return _context.finish(16);\n case 19:\n _context.next = 40;\n break;\n case 21:\n index = -1;\n _iterator2 = _createForOfIteratorHelper(values);\n _context.prev = 23;\n _iterator2.s();\n case 25:\n if ((_step2 = _iterator2.n()).done) {\n _context.next = 32;\n break;\n }\n _value = _step2.value;\n if (!((_value = valueof(_value, ++index, values)) != null && (_value = +_value) >= _value)) {\n _context.next = 30;\n break;\n }\n _context.next = 30;\n return _value;\n case 30:\n _context.next = 25;\n break;\n case 32:\n _context.next = 37;\n break;\n case 34:\n _context.prev = 34;\n _context.t1 = _context[\"catch\"](23);\n _iterator2.e(_context.t1);\n case 37:\n _context.prev = 37;\n _iterator2.f();\n return _context.finish(37);\n case 40:\n case \"end\":\n return _context.stop();\n }\n }, _marked, null, [[2, 13, 16, 19], [23, 34, 37, 40]]);\n}","import max from \"./max.js\";\nimport maxIndex from \"./maxIndex.js\";\nimport min from \"./min.js\";\nimport minIndex from \"./minIndex.js\";\nimport quickselect from \"./quickselect.js\";\nimport number, { numbers } from \"./number.js\";\nimport { ascendingDefined } from \"./sort.js\";\nimport greatest from \"./greatest.js\";\nexport default function quantile(values, p, valueof) {\n values = Float64Array.from(numbers(values, valueof));\n if (!(n = values.length) || isNaN(p = +p)) return;\n if (p <= 0 || n < 2) return min(values);\n if (p >= 1) return max(values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = max(quickselect(values, i0).subarray(0, i0 + 1)),\n value1 = min(values.subarray(i0 + 1));\n return value0 + (value1 - value0) * (i - i0);\n}\nexport function quantileSorted(values, p) {\n var valueof = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : number;\n if (!(n = values.length) || isNaN(p = +p)) return;\n if (p <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\nexport function quantileIndex(values, p) {\n var valueof = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : number;\n if (isNaN(p = +p)) return;\n numbers = Float64Array.from(values, function (_, i) {\n return number(valueof(values[i], i, values));\n });\n if (p <= 0) return minIndex(numbers);\n if (p >= 1) return maxIndex(numbers);\n var numbers,\n index = Uint32Array.from(values, function (_, i) {\n return i;\n }),\n j = numbers.length - 1,\n i = Math.floor(j * p);\n quickselect(index, i, 0, j, function (i, j) {\n return ascendingDefined(numbers[i], numbers[j]);\n });\n i = greatest(index.subarray(0, i + 1), function (i) {\n return numbers[i];\n });\n return i >= 0 ? i : -1;\n}","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nexport default function variance(values, valueof) {\n var count = 0;\n var delta;\n var mean = 0;\n var sum = 0;\n if (valueof === undefined) {\n var _iterator = _createForOfIteratorHelper(values),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var value = _step.value;\n if (value != null && (value = +value) >= value) {\n delta = value - mean;\n mean += delta / ++count;\n sum += delta * (value - mean);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n } else {\n var index = -1;\n var _iterator2 = _createForOfIteratorHelper(values),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _value = _step2.value;\n if ((_value = valueof(_value, ++index, values)) != null && (_value = +_value) >= _value) {\n delta = _value - mean;\n mean += delta / ++count;\n sum += delta * (_value - mean);\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n if (count > 1) return sum / (count - 1);\n}","import variance from \"./variance.js\";\nexport default function deviation(values, valueof) {\n var v = variance(values, valueof);\n return v ? Math.sqrt(v) : v;\n}","import quantile, { quantileIndex } from \"./quantile.js\";\nexport default function median(values, valueof) {\n return quantile(values, 0.5, valueof);\n}\nexport function medianIndex(values, valueof) {\n return quantileIndex(values, 0.5, valueof);\n}","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport _regeneratorRuntime from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/regenerator/index.js\";\nvar _marked = /*#__PURE__*/_regeneratorRuntime.mark(numbers);\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { ascending, quantileSorted, deviation, quantile, median } from 'd3-array';\nfunction numbers(values, valueof) {\n var _iterator, _step, value, index, _iterator2, _step2, _value;\n return _regeneratorRuntime.wrap(function numbers$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n if (!(valueof == null)) {\n _context.next = 21;\n break;\n }\n _iterator = _createForOfIteratorHelper(values);\n _context.prev = 2;\n _iterator.s();\n case 4:\n if ((_step = _iterator.n()).done) {\n _context.next = 11;\n break;\n }\n value = _step.value;\n if (!(value != null && value !== '' && (value = +value) >= value)) {\n _context.next = 9;\n break;\n }\n _context.next = 9;\n return value;\n case 9:\n _context.next = 4;\n break;\n case 11:\n _context.next = 16;\n break;\n case 13:\n _context.prev = 13;\n _context.t0 = _context[\"catch\"](2);\n _iterator.e(_context.t0);\n case 16:\n _context.prev = 16;\n _iterator.f();\n return _context.finish(16);\n case 19:\n _context.next = 41;\n break;\n case 21:\n index = -1;\n _iterator2 = _createForOfIteratorHelper(values);\n _context.prev = 23;\n _iterator2.s();\n case 25:\n if ((_step2 = _iterator2.n()).done) {\n _context.next = 33;\n break;\n }\n _value = _step2.value;\n _value = valueof(_value, ++index, values);\n if (!(_value != null && _value !== '' && (_value = +_value) >= _value)) {\n _context.next = 31;\n break;\n }\n _context.next = 31;\n return _value;\n case 31:\n _context.next = 25;\n break;\n case 33:\n _context.next = 38;\n break;\n case 35:\n _context.prev = 35;\n _context.t1 = _context[\"catch\"](23);\n _iterator2.e(_context.t1);\n case 38:\n _context.prev = 38;\n _iterator2.f();\n return _context.finish(38);\n case 41:\n case \"end\":\n return _context.stop();\n }\n }, _marked, null, [[2, 13, 16, 19], [23, 35, 38, 41]]);\n}\nfunction quantiles(array, p, f) {\n var values = Float64Array.from(numbers(array, f));\n\n // don't depend on return value from typed array sort call\n // protects against undefined sort results in Safari (vega/vega-lite#4964)\n values.sort(ascending);\n return p.map(function (_) {\n return quantileSorted(values, _);\n });\n}\nfunction quartiles(array, f) {\n return quantiles(array, [0.25, 0.50, 0.75], f);\n}\n\n// Scott, D. W. (1992) Multivariate Density Estimation:\n// Theory, Practice, and Visualization. Wiley.\nfunction estimateBandwidth(array, f) {\n var n = array.length,\n d = deviation(array, f),\n q = quartiles(array, f),\n h = (q[2] - q[0]) / 1.34,\n v = Math.min(d, h) || d || Math.abs(q[0]) || 1;\n return 1.06 * v * Math.pow(n, -0.2);\n}\nfunction bin(_) {\n // determine range\n var maxb = _.maxbins || 20,\n base = _.base || 10,\n logb = Math.log(base),\n div = _.divide || [5, 2];\n var min = _.extent[0],\n max = _.extent[1],\n step,\n level,\n minstep,\n v,\n i,\n n;\n var span = _.span || max - min || Math.abs(min) || 1;\n if (_.step) {\n // if step size is explicitly given, use that\n step = _.step;\n } else if (_.steps) {\n // if provided, limit choice to acceptable step sizes\n v = span / maxb;\n for (i = 0, n = _.steps.length; i < n && _.steps[i] < v; ++i);\n step = _.steps[Math.max(0, i - 1)];\n } else {\n // else use span to determine step size\n level = Math.ceil(Math.log(maxb) / logb);\n minstep = _.minstep || 0;\n step = Math.max(minstep, Math.pow(base, Math.round(Math.log(span) / logb) - level));\n\n // increase step size if too many bins\n while (Math.ceil(span / step) > maxb) {\n step *= base;\n }\n\n // decrease step size if allowed\n for (i = 0, n = div.length; i < n; ++i) {\n v = step / div[i];\n if (v >= minstep && span / v <= maxb) step = v;\n }\n }\n\n // update precision, min and max\n v = Math.log(step);\n var precision = v >= 0 ? 0 : ~~(-v / logb) + 1,\n eps = Math.pow(base, -precision - 1);\n if (_.nice || _.nice === undefined) {\n v = Math.floor(min / step + eps) * step;\n min = min < v ? v - step : v;\n max = Math.ceil(max / step) * step;\n }\n return {\n start: min,\n stop: max === min ? min + step : max,\n step: step\n };\n}\nvar random = Math.random;\nfunction setRandom(r) {\n random = r;\n}\nfunction bootstrapCI(array, samples, alpha, f) {\n if (!array.length) return [undefined, undefined];\n var values = Float64Array.from(numbers(array, f)),\n n = values.length,\n m = samples;\n var a, i, j, mu;\n for (j = 0, mu = Array(m); j < m; ++j) {\n for (a = 0, i = 0; i < n; ++i) {\n a += values[~~(random() * n)];\n }\n mu[j] = a / n;\n }\n mu.sort(ascending);\n return [quantile(mu, alpha / 2), quantile(mu, 1 - alpha / 2)];\n}\n\n// Dot density binning for dot plot construction.\n// Based on Leland Wilkinson, Dot Plots, The American Statistician, 1999.\n// https://www.cs.uic.edu/~wilkinson/Publications/dotplots.pdf\nfunction dotbin(array, step, smooth, f) {\n f = f || function (_) {\n return _;\n };\n var n = array.length,\n v = new Float64Array(n);\n var i = 0,\n j = 1,\n a = f(array[0]),\n b = a,\n w = a + step,\n x;\n for (; j < n; ++j) {\n x = f(array[j]);\n if (x >= w) {\n b = (a + b) / 2;\n for (; i < j; ++i) v[i] = b;\n w = x + step;\n a = x;\n }\n b = x;\n }\n b = (a + b) / 2;\n for (; i < j; ++i) v[i] = b;\n return smooth ? smoothing(v, step + step / 4) : v;\n}\n\n// perform smoothing to reduce variance\n// swap points between \"adjacent\" stacks\n// Wilkinson defines adjacent as within step/4 units\nfunction smoothing(v, thresh) {\n var n = v.length;\n var a = 0,\n b = 1,\n c,\n d;\n\n // get left stack\n while (v[a] === v[b]) ++b;\n while (b < n) {\n // get right stack\n c = b + 1;\n while (v[b] === v[c]) ++c;\n\n // are stacks adjacent?\n // if so, compare sizes and swap as needed\n if (v[b] - v[b - 1] < thresh) {\n d = b + (a + c - b - b >> 1);\n while (d < b) v[d++] = v[b];\n while (d > b) v[d--] = v[a];\n }\n\n // update left stack indices\n a = b;\n b = c;\n }\n return v;\n}\nfunction lcg(seed) {\n // Random numbers using a Linear Congruential Generator with seed value\n // Uses glibc values from https://en.wikipedia.org/wiki/Linear_congruential_generator\n return function () {\n seed = (1103515245 * seed + 12345) % 2147483647;\n return seed / 2147483647;\n };\n}\nfunction integer(min, max) {\n if (max == null) {\n max = min;\n min = 0;\n }\n var a, b, d;\n var dist = {\n min: function min(_) {\n if (arguments.length) {\n a = _ || 0;\n d = b - a;\n return dist;\n } else {\n return a;\n }\n },\n max: function max(_) {\n if (arguments.length) {\n b = _ || 0;\n d = b - a;\n return dist;\n } else {\n return b;\n }\n },\n sample: function sample() {\n return a + Math.floor(d * random());\n },\n pdf: function pdf(x) {\n return x === Math.floor(x) && x >= a && x < b ? 1 / d : 0;\n },\n cdf: function cdf(x) {\n var v = Math.floor(x);\n return v < a ? 0 : v >= b ? 1 : (v - a + 1) / d;\n },\n icdf: function icdf(p) {\n return p >= 0 && p <= 1 ? a - 1 + Math.floor(p * d) : NaN;\n }\n };\n return dist.min(min).max(max);\n}\nvar SQRT2PI = Math.sqrt(2 * Math.PI);\nvar SQRT2 = Math.SQRT2;\nvar nextSample = NaN;\nfunction sampleNormal(mean, stdev) {\n mean = mean || 0;\n stdev = stdev == null ? 1 : stdev;\n var x = 0,\n y = 0,\n rds,\n c;\n if (nextSample === nextSample) {\n x = nextSample;\n nextSample = NaN;\n } else {\n do {\n x = random() * 2 - 1;\n y = random() * 2 - 1;\n rds = x * x + y * y;\n } while (rds === 0 || rds > 1);\n c = Math.sqrt(-2 * Math.log(rds) / rds); // Box-Muller transform\n x *= c;\n nextSample = y * c;\n }\n return mean + x * stdev;\n}\nfunction densityNormal(value, mean, stdev) {\n stdev = stdev == null ? 1 : stdev;\n var z = (value - (mean || 0)) / stdev;\n return Math.exp(-0.5 * z * z) / (stdev * SQRT2PI);\n}\n\n// Approximation from West (2009)\n// Better Approximations to Cumulative Normal Functions\nfunction cumulativeNormal(value, mean, stdev) {\n mean = mean || 0;\n stdev = stdev == null ? 1 : stdev;\n var z = (value - mean) / stdev,\n Z = Math.abs(z);\n var cd;\n if (Z > 37) {\n cd = 0;\n } else {\n var _exp = Math.exp(-Z * Z / 2);\n var sum;\n if (Z < 7.07106781186547) {\n sum = 3.52624965998911e-02 * Z + 0.700383064443688;\n sum = sum * Z + 6.37396220353165;\n sum = sum * Z + 33.912866078383;\n sum = sum * Z + 112.079291497871;\n sum = sum * Z + 221.213596169931;\n sum = sum * Z + 220.206867912376;\n cd = _exp * sum;\n sum = 8.83883476483184e-02 * Z + 1.75566716318264;\n sum = sum * Z + 16.064177579207;\n sum = sum * Z + 86.7807322029461;\n sum = sum * Z + 296.564248779674;\n sum = sum * Z + 637.333633378831;\n sum = sum * Z + 793.826512519948;\n sum = sum * Z + 440.413735824752;\n cd = cd / sum;\n } else {\n sum = Z + 0.65;\n sum = Z + 4 / sum;\n sum = Z + 3 / sum;\n sum = Z + 2 / sum;\n sum = Z + 1 / sum;\n cd = _exp / sum / 2.506628274631;\n }\n }\n return z > 0 ? 1 - cd : cd;\n}\n\n// Approximation of Probit function using inverse error function.\nfunction quantileNormal(p, mean, stdev) {\n if (p < 0 || p > 1) return NaN;\n return (mean || 0) + (stdev == null ? 1 : stdev) * SQRT2 * erfinv(2 * p - 1);\n}\n\n// Approximate inverse error function. Implementation from \"Approximating\n// the erfinv function\" by Mike Giles, GPU Computing Gems, volume 2, 2010.\n// Ported from Apache Commons Math, http://www.apache.org/licenses/LICENSE-2.0\nfunction erfinv(x) {\n // beware that the logarithm argument must be\n // commputed as (1.0 - x) * (1.0 + x),\n // it must NOT be simplified as 1.0 - x * x as this\n // would induce rounding errors near the boundaries +/-1\n var w = -Math.log((1 - x) * (1 + x)),\n p;\n if (w < 6.25) {\n w -= 3.125;\n p = -3.6444120640178196996e-21;\n p = -1.685059138182016589e-19 + p * w;\n p = 1.2858480715256400167e-18 + p * w;\n p = 1.115787767802518096e-17 + p * w;\n p = -1.333171662854620906e-16 + p * w;\n p = 2.0972767875968561637e-17 + p * w;\n p = 6.6376381343583238325e-15 + p * w;\n p = -4.0545662729752068639e-14 + p * w;\n p = -8.1519341976054721522e-14 + p * w;\n p = 2.6335093153082322977e-12 + p * w;\n p = -1.2975133253453532498e-11 + p * w;\n p = -5.4154120542946279317e-11 + p * w;\n p = 1.051212273321532285e-09 + p * w;\n p = -4.1126339803469836976e-09 + p * w;\n p = -2.9070369957882005086e-08 + p * w;\n p = 4.2347877827932403518e-07 + p * w;\n p = -1.3654692000834678645e-06 + p * w;\n p = -1.3882523362786468719e-05 + p * w;\n p = 0.0001867342080340571352 + p * w;\n p = -0.00074070253416626697512 + p * w;\n p = -0.0060336708714301490533 + p * w;\n p = 0.24015818242558961693 + p * w;\n p = 1.6536545626831027356 + p * w;\n } else if (w < 16.0) {\n w = Math.sqrt(w) - 3.25;\n p = 2.2137376921775787049e-09;\n p = 9.0756561938885390979e-08 + p * w;\n p = -2.7517406297064545428e-07 + p * w;\n p = 1.8239629214389227755e-08 + p * w;\n p = 1.5027403968909827627e-06 + p * w;\n p = -4.013867526981545969e-06 + p * w;\n p = 2.9234449089955446044e-06 + p * w;\n p = 1.2475304481671778723e-05 + p * w;\n p = -4.7318229009055733981e-05 + p * w;\n p = 6.8284851459573175448e-05 + p * w;\n p = 2.4031110387097893999e-05 + p * w;\n p = -0.0003550375203628474796 + p * w;\n p = 0.00095328937973738049703 + p * w;\n p = -0.0016882755560235047313 + p * w;\n p = 0.0024914420961078508066 + p * w;\n p = -0.0037512085075692412107 + p * w;\n p = 0.005370914553590063617 + p * w;\n p = 1.0052589676941592334 + p * w;\n p = 3.0838856104922207635 + p * w;\n } else if (Number.isFinite(w)) {\n w = Math.sqrt(w) - 5.0;\n p = -2.7109920616438573243e-11;\n p = -2.5556418169965252055e-10 + p * w;\n p = 1.5076572693500548083e-09 + p * w;\n p = -3.7894654401267369937e-09 + p * w;\n p = 7.6157012080783393804e-09 + p * w;\n p = -1.4960026627149240478e-08 + p * w;\n p = 2.9147953450901080826e-08 + p * w;\n p = -6.7711997758452339498e-08 + p * w;\n p = 2.2900482228026654717e-07 + p * w;\n p = -9.9298272942317002539e-07 + p * w;\n p = 4.5260625972231537039e-06 + p * w;\n p = -1.9681778105531670567e-05 + p * w;\n p = 7.5995277030017761139e-05 + p * w;\n p = -0.00021503011930044477347 + p * w;\n p = -0.00013871931833623122026 + p * w;\n p = 1.0103004648645343977 + p * w;\n p = 4.8499064014085844221 + p * w;\n } else {\n p = Infinity;\n }\n return p * x;\n}\nfunction gaussian(mean, stdev) {\n var mu, sigma;\n var dist = {\n mean: function mean(_) {\n if (arguments.length) {\n mu = _ || 0;\n return dist;\n } else {\n return mu;\n }\n },\n stdev: function stdev(_) {\n if (arguments.length) {\n sigma = _ == null ? 1 : _;\n return dist;\n } else {\n return sigma;\n }\n },\n sample: function sample() {\n return sampleNormal(mu, sigma);\n },\n pdf: function pdf(value) {\n return densityNormal(value, mu, sigma);\n },\n cdf: function cdf(value) {\n return cumulativeNormal(value, mu, sigma);\n },\n icdf: function icdf(p) {\n return quantileNormal(p, mu, sigma);\n }\n };\n return dist.mean(mean).stdev(stdev);\n}\nfunction kde(support, _bandwidth) {\n var kernel = gaussian();\n var n = 0;\n var dist = {\n data: function data(_) {\n if (arguments.length) {\n support = _;\n n = _ ? _.length : 0;\n return dist.bandwidth(_bandwidth);\n } else {\n return support;\n }\n },\n bandwidth: function bandwidth(_) {\n if (!arguments.length) return _bandwidth;\n _bandwidth = _;\n if (!_bandwidth && support) _bandwidth = estimateBandwidth(support);\n return dist;\n },\n sample: function sample() {\n return support[~~(random() * n)] + _bandwidth * kernel.sample();\n },\n pdf: function pdf(x) {\n var y = 0,\n i = 0;\n for (; i < n; ++i) {\n y += kernel.pdf((x - support[i]) / _bandwidth);\n }\n return y / _bandwidth / n;\n },\n cdf: function cdf(x) {\n var y = 0,\n i = 0;\n for (; i < n; ++i) {\n y += kernel.cdf((x - support[i]) / _bandwidth);\n }\n return y / n;\n },\n icdf: function icdf() {\n throw Error('KDE icdf not supported.');\n }\n };\n return dist.data(support);\n}\nfunction sampleLogNormal(mean, stdev) {\n mean = mean || 0;\n stdev = stdev == null ? 1 : stdev;\n return Math.exp(mean + sampleNormal() * stdev);\n}\nfunction densityLogNormal(value, mean, stdev) {\n if (value <= 0) return 0;\n mean = mean || 0;\n stdev = stdev == null ? 1 : stdev;\n var z = (Math.log(value) - mean) / stdev;\n return Math.exp(-0.5 * z * z) / (stdev * SQRT2PI * value);\n}\nfunction cumulativeLogNormal(value, mean, stdev) {\n return cumulativeNormal(Math.log(value), mean, stdev);\n}\nfunction quantileLogNormal(p, mean, stdev) {\n return Math.exp(quantileNormal(p, mean, stdev));\n}\nfunction lognormal(mean, stdev) {\n var mu, sigma;\n var dist = {\n mean: function mean(_) {\n if (arguments.length) {\n mu = _ || 0;\n return dist;\n } else {\n return mu;\n }\n },\n stdev: function stdev(_) {\n if (arguments.length) {\n sigma = _ == null ? 1 : _;\n return dist;\n } else {\n return sigma;\n }\n },\n sample: function sample() {\n return sampleLogNormal(mu, sigma);\n },\n pdf: function pdf(value) {\n return densityLogNormal(value, mu, sigma);\n },\n cdf: function cdf(value) {\n return cumulativeLogNormal(value, mu, sigma);\n },\n icdf: function icdf(p) {\n return quantileLogNormal(p, mu, sigma);\n }\n };\n return dist.mean(mean).stdev(stdev);\n}\nfunction mixture(dists, _weights) {\n var m = 0,\n w;\n function normalize(x) {\n var w = [];\n var sum = 0,\n i;\n for (i = 0; i < m; ++i) {\n sum += w[i] = x[i] == null ? 1 : +x[i];\n }\n for (i = 0; i < m; ++i) {\n w[i] /= sum;\n }\n return w;\n }\n var dist = {\n weights: function weights(_) {\n if (arguments.length) {\n w = normalize(_weights = _ || []);\n return dist;\n }\n return _weights;\n },\n distributions: function distributions(_) {\n if (arguments.length) {\n if (_) {\n m = _.length;\n dists = _;\n } else {\n m = 0;\n dists = [];\n }\n return dist.weights(_weights);\n }\n return dists;\n },\n sample: function sample() {\n var r = random();\n var d = dists[m - 1],\n v = w[0],\n i = 0;\n\n // first select distribution\n for (; i < m - 1; v += w[++i]) {\n if (r < v) {\n d = dists[i];\n break;\n }\n }\n // then sample from it\n return d.sample();\n },\n pdf: function pdf(x) {\n var p = 0,\n i = 0;\n for (; i < m; ++i) {\n p += w[i] * dists[i].pdf(x);\n }\n return p;\n },\n cdf: function cdf(x) {\n var p = 0,\n i = 0;\n for (; i < m; ++i) {\n p += w[i] * dists[i].cdf(x);\n }\n return p;\n },\n icdf: function icdf() {\n throw Error('Mixture icdf not supported.');\n }\n };\n return dist.distributions(dists).weights(_weights);\n}\nfunction sampleUniform(min, max) {\n if (max == null) {\n max = min == null ? 1 : min;\n min = 0;\n }\n return min + (max - min) * random();\n}\nfunction densityUniform(value, min, max) {\n if (max == null) {\n max = min == null ? 1 : min;\n min = 0;\n }\n return value >= min && value <= max ? 1 / (max - min) : 0;\n}\nfunction cumulativeUniform(value, min, max) {\n if (max == null) {\n max = min == null ? 1 : min;\n min = 0;\n }\n return value < min ? 0 : value > max ? 1 : (value - min) / (max - min);\n}\nfunction quantileUniform(p, min, max) {\n if (max == null) {\n max = min == null ? 1 : min;\n min = 0;\n }\n return p >= 0 && p <= 1 ? min + p * (max - min) : NaN;\n}\nfunction uniform(min, max) {\n var a, b;\n var dist = {\n min: function min(_) {\n if (arguments.length) {\n a = _ || 0;\n return dist;\n } else {\n return a;\n }\n },\n max: function max(_) {\n if (arguments.length) {\n b = _ == null ? 1 : _;\n return dist;\n } else {\n return b;\n }\n },\n sample: function sample() {\n return sampleUniform(a, b);\n },\n pdf: function pdf(value) {\n return densityUniform(value, a, b);\n },\n cdf: function cdf(value) {\n return cumulativeUniform(value, a, b);\n },\n icdf: function icdf(p) {\n return quantileUniform(p, a, b);\n }\n };\n if (max == null) {\n max = min == null ? 1 : min;\n min = 0;\n }\n return dist.min(min).max(max);\n}\nfunction constant(data, x, y) {\n var mean = 0,\n n = 0;\n var _iterator3 = _createForOfIteratorHelper(data),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var d = _step3.value;\n var val = y(d);\n if (x(d) == null || val == null || isNaN(val)) continue;\n mean += (val - mean) / ++n;\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n return {\n coef: [mean],\n predict: function predict() {\n return mean;\n },\n rSquared: 0\n };\n}\n\n// Ordinary Least Squares\nfunction ols(uX, uY, uXY, uX2) {\n var delta = uX2 - uX * uX,\n slope = Math.abs(delta) < 1e-24 ? 0 : (uXY - uX * uY) / delta,\n intercept = uY - slope * uX;\n return [intercept, slope];\n}\nfunction points(data, x, y, sort) {\n data = data.filter(function (d) {\n var u = x(d),\n v = y(d);\n return u != null && (u = +u) >= u && v != null && (v = +v) >= v;\n });\n if (sort) {\n data.sort(function (a, b) {\n return x(a) - x(b);\n });\n }\n var n = data.length,\n X = new Float64Array(n),\n Y = new Float64Array(n);\n\n // extract values, calculate means\n var i = 0,\n ux = 0,\n uy = 0,\n xv,\n yv,\n d;\n var _iterator4 = _createForOfIteratorHelper(data),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n d = _step4.value;\n X[i] = xv = +x(d);\n Y[i] = yv = +y(d);\n ++i;\n ux += (xv - ux) / i;\n uy += (yv - uy) / i;\n }\n\n // mean center the data\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n for (i = 0; i < n; ++i) {\n X[i] -= ux;\n Y[i] -= uy;\n }\n return [X, Y, ux, uy];\n}\nfunction visitPoints(data, x, y, callback) {\n var i = -1,\n u,\n v;\n var _iterator5 = _createForOfIteratorHelper(data),\n _step5;\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var d = _step5.value;\n u = x(d);\n v = y(d);\n if (u != null && (u = +u) >= u && v != null && (v = +v) >= v) {\n callback(u, v, ++i);\n }\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n}\n\n// Adapted from d3-regression by Harry Stevens\n// License: https://github.com/HarryStevens/d3-regression/blob/master/LICENSE\nfunction rSquared(data, x, y, uY, predict) {\n var SSE = 0,\n SST = 0;\n visitPoints(data, x, y, function (dx, dy) {\n var sse = dy - predict(dx),\n sst = dy - uY;\n SSE += sse * sse;\n SST += sst * sst;\n });\n return 1 - SSE / SST;\n}\n\n// Adapted from d3-regression by Harry Stevens\n// License: https://github.com/HarryStevens/d3-regression/blob/master/LICENSE\nfunction linear(data, x, y) {\n var X = 0,\n Y = 0,\n XY = 0,\n X2 = 0,\n n = 0;\n visitPoints(data, x, y, function (dx, dy) {\n ++n;\n X += (dx - X) / n;\n Y += (dy - Y) / n;\n XY += (dx * dy - XY) / n;\n X2 += (dx * dx - X2) / n;\n });\n var coef = ols(X, Y, XY, X2),\n predict = function predict(x) {\n return coef[0] + coef[1] * x;\n };\n return {\n coef: coef,\n predict: predict,\n rSquared: rSquared(data, x, y, Y, predict)\n };\n}\n\n// Adapted from d3-regression by Harry Stevens\n// License: https://github.com/HarryStevens/d3-regression/blob/master/LICENSE\nfunction log(data, x, y) {\n var X = 0,\n Y = 0,\n XY = 0,\n X2 = 0,\n n = 0;\n visitPoints(data, x, y, function (dx, dy) {\n ++n;\n dx = Math.log(dx);\n X += (dx - X) / n;\n Y += (dy - Y) / n;\n XY += (dx * dy - XY) / n;\n X2 += (dx * dx - X2) / n;\n });\n var coef = ols(X, Y, XY, X2),\n predict = function predict(x) {\n return coef[0] + coef[1] * Math.log(x);\n };\n return {\n coef: coef,\n predict: predict,\n rSquared: rSquared(data, x, y, Y, predict)\n };\n}\nfunction exp(data, x, y) {\n // eslint-disable-next-line no-unused-vars\n var _points = points(data, x, y),\n _points2 = _slicedToArray(_points, 4),\n xv = _points2[0],\n yv = _points2[1],\n ux = _points2[2],\n uy = _points2[3];\n var YL = 0,\n XY = 0,\n XYL = 0,\n X2Y = 0,\n n = 0,\n dx,\n ly,\n xy;\n visitPoints(data, x, y, function (_, dy) {\n dx = xv[n++];\n ly = Math.log(dy);\n xy = dx * dy;\n YL += (dy * ly - YL) / n;\n XY += (xy - XY) / n;\n XYL += (xy * ly - XYL) / n;\n X2Y += (dx * xy - X2Y) / n;\n });\n var _ols = ols(XY / uy, YL / uy, XYL / uy, X2Y / uy),\n _ols2 = _slicedToArray(_ols, 2),\n c0 = _ols2[0],\n c1 = _ols2[1],\n predict = function predict(x) {\n return Math.exp(c0 + c1 * (x - ux));\n };\n return {\n coef: [Math.exp(c0 - c1 * ux), c1],\n predict: predict,\n rSquared: rSquared(data, x, y, uy, predict)\n };\n}\n\n// Adapted from d3-regression by Harry Stevens\n// License: https://github.com/HarryStevens/d3-regression/blob/master/LICENSE\nfunction pow(data, x, y) {\n var X = 0,\n Y = 0,\n XY = 0,\n X2 = 0,\n YS = 0,\n n = 0;\n visitPoints(data, x, y, function (dx, dy) {\n var lx = Math.log(dx),\n ly = Math.log(dy);\n ++n;\n X += (lx - X) / n;\n Y += (ly - Y) / n;\n XY += (lx * ly - XY) / n;\n X2 += (lx * lx - X2) / n;\n YS += (dy - YS) / n;\n });\n var coef = ols(X, Y, XY, X2),\n predict = function predict(x) {\n return coef[0] * Math.pow(x, coef[1]);\n };\n coef[0] = Math.exp(coef[0]);\n return {\n coef: coef,\n predict: predict,\n rSquared: rSquared(data, x, y, YS, predict)\n };\n}\nfunction quad(data, x, y) {\n var _points3 = points(data, x, y),\n _points4 = _slicedToArray(_points3, 4),\n xv = _points4[0],\n yv = _points4[1],\n ux = _points4[2],\n uy = _points4[3],\n n = xv.length;\n var X2 = 0,\n X3 = 0,\n X4 = 0,\n XY = 0,\n X2Y = 0,\n i,\n dx,\n dy,\n x2;\n for (i = 0; i < n;) {\n dx = xv[i];\n dy = yv[i++];\n x2 = dx * dx;\n X2 += (x2 - X2) / i;\n X3 += (x2 * dx - X3) / i;\n X4 += (x2 * x2 - X4) / i;\n XY += (dx * dy - XY) / i;\n X2Y += (x2 * dy - X2Y) / i;\n }\n var X2X2 = X4 - X2 * X2,\n d = X2 * X2X2 - X3 * X3,\n a = (X2Y * X2 - XY * X3) / d,\n b = (XY * X2X2 - X2Y * X3) / d,\n c = -a * X2,\n predict = function predict(x) {\n x = x - ux;\n return a * x * x + b * x + c + uy;\n };\n\n // transform coefficients back from mean-centered space\n return {\n coef: [c - b * ux + a * ux * ux + uy, b - 2 * a * ux, a],\n predict: predict,\n rSquared: rSquared(data, x, y, uy, predict)\n };\n}\n\n// Adapted from d3-regression by Harry Stevens\n// License: https://github.com/HarryStevens/d3-regression/blob/master/LICENSE\n// ... which was adapted from regression-js by Tom Alexander\n// Source: https://github.com/Tom-Alexander/regression-js/blob/master/src/regression.js#L246\n// License: https://github.com/Tom-Alexander/regression-js/blob/master/LICENSE\nfunction poly(data, x, y, order) {\n // use more efficient methods for lower orders\n if (order === 0) return constant(data, x, y);\n if (order === 1) return linear(data, x, y);\n if (order === 2) return quad(data, x, y);\n var _points5 = points(data, x, y),\n _points6 = _slicedToArray(_points5, 4),\n xv = _points6[0],\n yv = _points6[1],\n ux = _points6[2],\n uy = _points6[3],\n n = xv.length,\n lhs = [],\n rhs = [],\n k = order + 1;\n var i, j, l, v, c;\n for (i = 0; i < k; ++i) {\n for (l = 0, v = 0; l < n; ++l) {\n v += Math.pow(xv[l], i) * yv[l];\n }\n lhs.push(v);\n c = new Float64Array(k);\n for (j = 0; j < k; ++j) {\n for (l = 0, v = 0; l < n; ++l) {\n v += Math.pow(xv[l], i + j);\n }\n c[j] = v;\n }\n rhs.push(c);\n }\n rhs.push(lhs);\n var coef = gaussianElimination(rhs),\n predict = function predict(x) {\n x -= ux;\n var y = uy + coef[0] + coef[1] * x + coef[2] * x * x;\n for (i = 3; i < k; ++i) y += coef[i] * Math.pow(x, i);\n return y;\n };\n return {\n coef: uncenter(k, coef, -ux, uy),\n predict: predict,\n rSquared: rSquared(data, x, y, uy, predict)\n };\n}\nfunction uncenter(k, a, x, y) {\n var z = Array(k);\n var i, j, v, c;\n\n // initialize to zero\n for (i = 0; i < k; ++i) z[i] = 0;\n\n // polynomial expansion\n for (i = k - 1; i >= 0; --i) {\n v = a[i];\n c = 1;\n z[i] += v;\n for (j = 1; j <= i; ++j) {\n c *= (i + 1 - j) / j; // binomial coefficent\n z[i - j] += v * Math.pow(x, j) * c;\n }\n }\n\n // bias term\n z[0] += y;\n return z;\n}\n\n// Given an array for a two-dimensional matrix and the polynomial order,\n// solve A * x = b using Gaussian elimination.\nfunction gaussianElimination(matrix) {\n var n = matrix.length - 1,\n coef = [];\n var i, j, k, r, t;\n for (i = 0; i < n; ++i) {\n r = i; // max row\n for (j = i + 1; j < n; ++j) {\n if (Math.abs(matrix[i][j]) > Math.abs(matrix[i][r])) {\n r = j;\n }\n }\n for (k = i; k < n + 1; ++k) {\n t = matrix[k][i];\n matrix[k][i] = matrix[k][r];\n matrix[k][r] = t;\n }\n for (j = i + 1; j < n; ++j) {\n for (k = n; k >= i; k--) {\n matrix[k][j] -= matrix[k][i] * matrix[i][j] / matrix[i][i];\n }\n }\n }\n for (j = n - 1; j >= 0; --j) {\n t = 0;\n for (k = j + 1; k < n; ++k) {\n t += matrix[k][j] * coef[k];\n }\n coef[j] = (matrix[n][j] - t) / matrix[j][j];\n }\n return coef;\n}\nvar maxiters = 2,\n epsilon = 1e-12;\n\n// Adapted from science.js by Jason Davies\n// Source: https://github.com/jasondavies/science.js/blob/master/src/stats/loess.js\n// License: https://github.com/jasondavies/science.js/blob/master/LICENSE\nfunction loess(data, x, y, bandwidth) {\n var _points7 = points(data, x, y, true),\n _points8 = _slicedToArray(_points7, 4),\n xv = _points8[0],\n yv = _points8[1],\n ux = _points8[2],\n uy = _points8[3],\n n = xv.length,\n bw = Math.max(2, ~~(bandwidth * n)),\n yhat = new Float64Array(n),\n residuals = new Float64Array(n),\n robustWeights = new Float64Array(n).fill(1);\n for (var iter = -1; ++iter <= maxiters;) {\n var interval = [0, bw - 1];\n for (var i = 0; i < n; ++i) {\n var dx = xv[i],\n i0 = interval[0],\n i1 = interval[1],\n edge = dx - xv[i0] > xv[i1] - dx ? i0 : i1;\n var W = 0,\n X = 0,\n Y = 0,\n XY = 0,\n X2 = 0;\n var denom = 1 / Math.abs(xv[edge] - dx || 1); // avoid singularity!\n\n for (var k = i0; k <= i1; ++k) {\n var xk = xv[k],\n yk = yv[k],\n w = tricube(Math.abs(dx - xk) * denom) * robustWeights[k],\n xkw = xk * w;\n W += w;\n X += xkw;\n Y += yk * w;\n XY += yk * xkw;\n X2 += xk * xkw;\n }\n\n // linear regression fit\n var _ols3 = ols(X / W, Y / W, XY / W, X2 / W),\n _ols4 = _slicedToArray(_ols3, 2),\n a = _ols4[0],\n b = _ols4[1];\n yhat[i] = a + b * dx;\n residuals[i] = Math.abs(yv[i] - yhat[i]);\n updateInterval(xv, i + 1, interval);\n }\n if (iter === maxiters) {\n break;\n }\n var medianResidual = median(residuals);\n if (Math.abs(medianResidual) < epsilon) break;\n for (var _i = 0, arg, _w; _i < n; ++_i) {\n arg = residuals[_i] / (6 * medianResidual);\n // default to epsilon (rather than zero) for large deviations\n // keeping weights tiny but non-zero prevents singularites\n robustWeights[_i] = arg >= 1 ? epsilon : (_w = 1 - arg * arg) * _w;\n }\n }\n return output(xv, yhat, ux, uy);\n}\n\n// weighting kernel for local regression\nfunction tricube(x) {\n return (x = 1 - x * x * x) * x * x;\n}\n\n// advance sliding window interval of nearest neighbors\nfunction updateInterval(xv, i, interval) {\n var val = xv[i];\n var left = interval[0],\n right = interval[1] + 1;\n if (right >= xv.length) return;\n\n // step right if distance to new right edge is <= distance to old left edge\n // step when distance is equal to ensure movement over duplicate x values\n while (i > left && xv[right] - val <= val - xv[left]) {\n interval[0] = ++left;\n interval[1] = right;\n ++right;\n }\n}\n\n// generate smoothed output points\n// average points with repeated x values\nfunction output(xv, yhat, ux, uy) {\n var n = xv.length,\n out = [];\n var i = 0,\n cnt = 0,\n prev = [],\n v;\n for (; i < n; ++i) {\n v = xv[i] + ux;\n if (prev[0] === v) {\n // average output values via online update\n prev[1] += (yhat[i] - prev[1]) / ++cnt;\n } else {\n // add new output point\n cnt = 0;\n prev[1] += uy;\n prev = [v, yhat[i]];\n out.push(prev);\n }\n }\n prev[1] += uy;\n return out;\n}\n\n// subdivide up to accuracy of 0.5 degrees\nvar MIN_RADIANS = 0.5 * Math.PI / 180;\n\n// Adaptively sample an interpolated function over a domain extent\nfunction sampleCurve(f, extent, minSteps, maxSteps) {\n minSteps = minSteps || 25;\n maxSteps = Math.max(minSteps, maxSteps || 200);\n var point = function point(x) {\n return [x, f(x)];\n },\n minX = extent[0],\n maxX = extent[1],\n span = maxX - minX,\n stop = span / maxSteps,\n prev = [point(minX)],\n next = [];\n if (minSteps === maxSteps) {\n // no adaptation, sample uniform grid directly and return\n for (var i = 1; i < maxSteps; ++i) {\n prev.push(point(minX + i / minSteps * span));\n }\n prev.push(point(maxX));\n return prev;\n } else {\n // sample minimum points on uniform grid\n // then move on to perform adaptive refinement\n next.push(point(maxX));\n for (var _i2 = minSteps; --_i2 > 0;) {\n next.push(point(minX + _i2 / minSteps * span));\n }\n }\n var p0 = prev[0];\n var p1 = next[next.length - 1];\n var sx = 1 / span;\n var sy = scaleY(p0[1], next);\n while (p1) {\n // midpoint for potential curve subdivision\n var pm = point((p0[0] + p1[0]) / 2);\n var dx = pm[0] - p0[0] >= stop;\n if (dx && angleDelta(p0, pm, p1, sx, sy) > MIN_RADIANS) {\n // maximum resolution has not yet been met, and\n // subdivision midpoint is sufficiently different from endpoint\n // save subdivision, push midpoint onto the visitation stack\n next.push(pm);\n } else {\n // subdivision midpoint sufficiently similar to endpoint\n // skip subdivision, store endpoint, move to next point on the stack\n p0 = p1;\n prev.push(p1);\n next.pop();\n }\n p1 = next[next.length - 1];\n }\n return prev;\n}\nfunction scaleY(init, points) {\n var ymin = init;\n var ymax = init;\n var n = points.length;\n for (var i = 0; i < n; ++i) {\n var y = points[i][1];\n if (y < ymin) ymin = y;\n if (y > ymax) ymax = y;\n }\n return 1 / (ymax - ymin);\n}\nfunction angleDelta(p, q, r, sx, sy) {\n var a0 = Math.atan2(sy * (r[1] - p[1]), sx * (r[0] - p[0])),\n a1 = Math.atan2(sy * (q[1] - p[1]), sx * (q[0] - p[0]));\n return Math.abs(a0 - a1);\n}\nexport { estimateBandwidth as bandwidthNRD, bin, bootstrapCI, cumulativeLogNormal, cumulativeNormal, cumulativeUniform, densityLogNormal, densityNormal, densityUniform, dotbin, quantileLogNormal, quantileNormal, quantileUniform, quantiles, quartiles, random, integer as randomInteger, kde as randomKDE, lcg as randomLCG, lognormal as randomLogNormal, mixture as randomMixture, gaussian as randomNormal, uniform as randomUniform, constant as regressionConstant, exp as regressionExp, linear as regressionLinear, loess as regressionLoess, log as regressionLog, poly as regressionPoly, pow as regressionPow, quad as regressionQuad, sampleCurve, sampleLogNormal, sampleNormal, sampleUniform, setRandom };","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nexport default function mean(values, valueof) {\n var count = 0;\n var sum = 0;\n if (valueof === undefined) {\n var _iterator = _createForOfIteratorHelper(values),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var value = _step.value;\n if (value != null && (value = +value) >= value) {\n ++count, sum += value;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n } else {\n var index = -1;\n var _iterator2 = _createForOfIteratorHelper(values),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _value = _step2.value;\n if ((_value = valueof(_value, ++index, values)) != null && (_value = +_value) >= _value) {\n ++count, sum += _value;\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n if (count) return sum / count;\n}","export default function range(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n while (++i < n) {\n range[i] = start + i * step;\n }\n return range;\n}","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport \"core-js/modules/es.array.flat.js\";\nimport \"core-js/modules/es.array.unscopables.flat.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { extend, identity, field, hasOwnProperty, extentIndex, inherits, array, accessorName, error, accessorFields, accessor, toNumber, merge, compare, truthy, extent, span, fastmap, isArray, key, ascending, peek, zero, constant } from 'vega-util';\nimport { tupleid, Transform, replace, ingest, stableCompare, Operator, derive, rederive } from 'vega-dataflow';\nimport { quartiles, bootstrapCI, bin, randomKDE, randomMixture, randomNormal, randomLogNormal, randomUniform, sampleCurve, dotbin, quantiles, random } from 'vega-statistics';\nimport { median, mean, min, max, range, bisector } from 'd3-array';\nimport { TIME_UNITS, utcInterval, timeInterval, timeBin, timeUnits, utcFloor, timeFloor } from 'vega-time';\nfunction multikey(f) {\n return function (x) {\n var n = f.length;\n var i = 1,\n k = String(f[0](x));\n for (; i < n; ++i) {\n k += '|' + f[i](x);\n }\n return k;\n };\n}\nfunction groupkey(fields) {\n return !fields || !fields.length ? function () {\n return '';\n } : fields.length === 1 ? fields[0] : multikey(fields);\n}\nfunction measureName(op, field, as) {\n return as || op + (!field ? '' : '_' + field);\n}\nvar noop = function noop() {};\nvar base_op = {\n init: noop,\n add: noop,\n rem: noop,\n idx: 0\n};\nvar AggregateOps = {\n values: {\n init: function init(m) {\n return m.cell.store = true;\n },\n value: function value(m) {\n return m.cell.data.values();\n },\n idx: -1\n },\n count: {\n value: function value(m) {\n return m.cell.num;\n }\n },\n __count__: {\n value: function value(m) {\n return m.missing + m.valid;\n }\n },\n missing: {\n value: function value(m) {\n return m.missing;\n }\n },\n valid: {\n value: function value(m) {\n return m.valid;\n }\n },\n sum: {\n init: function init(m) {\n return m.sum = 0;\n },\n value: function value(m) {\n return m.sum;\n },\n add: function add(m, v) {\n return m.sum += +v;\n },\n rem: function rem(m, v) {\n return m.sum -= v;\n }\n },\n product: {\n init: function init(m) {\n return m.product = 1;\n },\n value: function value(m) {\n return m.valid ? m.product : undefined;\n },\n add: function add(m, v) {\n return m.product *= v;\n },\n rem: function rem(m, v) {\n return m.product /= v;\n }\n },\n mean: {\n init: function init(m) {\n return m.mean = 0;\n },\n value: function value(m) {\n return m.valid ? m.mean : undefined;\n },\n add: function add(m, v) {\n return m.mean_d = v - m.mean, m.mean += m.mean_d / m.valid;\n },\n rem: function rem(m, v) {\n return m.mean_d = v - m.mean, m.mean -= m.valid ? m.mean_d / m.valid : m.mean;\n }\n },\n average: {\n value: function value(m) {\n return m.valid ? m.mean : undefined;\n },\n req: ['mean'],\n idx: 1\n },\n variance: {\n init: function init(m) {\n return m.dev = 0;\n },\n value: function value(m) {\n return m.valid > 1 ? m.dev / (m.valid - 1) : undefined;\n },\n add: function add(m, v) {\n return m.dev += m.mean_d * (v - m.mean);\n },\n rem: function rem(m, v) {\n return m.dev -= m.mean_d * (v - m.mean);\n },\n req: ['mean'],\n idx: 1\n },\n variancep: {\n value: function value(m) {\n return m.valid > 1 ? m.dev / m.valid : undefined;\n },\n req: ['variance'],\n idx: 2\n },\n stdev: {\n value: function value(m) {\n return m.valid > 1 ? Math.sqrt(m.dev / (m.valid - 1)) : undefined;\n },\n req: ['variance'],\n idx: 2\n },\n stdevp: {\n value: function value(m) {\n return m.valid > 1 ? Math.sqrt(m.dev / m.valid) : undefined;\n },\n req: ['variance'],\n idx: 2\n },\n stderr: {\n value: function value(m) {\n return m.valid > 1 ? Math.sqrt(m.dev / (m.valid * (m.valid - 1))) : undefined;\n },\n req: ['variance'],\n idx: 2\n },\n distinct: {\n value: function value(m) {\n return m.cell.data.distinct(m.get);\n },\n req: ['values'],\n idx: 3\n },\n ci0: {\n value: function value(m) {\n return m.cell.data.ci0(m.get);\n },\n req: ['values'],\n idx: 3\n },\n ci1: {\n value: function value(m) {\n return m.cell.data.ci1(m.get);\n },\n req: ['values'],\n idx: 3\n },\n median: {\n value: function value(m) {\n return m.cell.data.q2(m.get);\n },\n req: ['values'],\n idx: 3\n },\n q1: {\n value: function value(m) {\n return m.cell.data.q1(m.get);\n },\n req: ['values'],\n idx: 3\n },\n q3: {\n value: function value(m) {\n return m.cell.data.q3(m.get);\n },\n req: ['values'],\n idx: 3\n },\n min: {\n init: function init(m) {\n return m.min = undefined;\n },\n value: function value(m) {\n return m.min = Number.isNaN(m.min) ? m.cell.data.min(m.get) : m.min;\n },\n add: function add(m, v) {\n if (v < m.min || m.min === undefined) m.min = v;\n },\n rem: function rem(m, v) {\n if (v <= m.min) m.min = NaN;\n },\n req: ['values'],\n idx: 4\n },\n max: {\n init: function init(m) {\n return m.max = undefined;\n },\n value: function value(m) {\n return m.max = Number.isNaN(m.max) ? m.cell.data.max(m.get) : m.max;\n },\n add: function add(m, v) {\n if (v > m.max || m.max === undefined) m.max = v;\n },\n rem: function rem(m, v) {\n if (v >= m.max) m.max = NaN;\n },\n req: ['values'],\n idx: 4\n },\n argmin: {\n init: function init(m) {\n return m.argmin = undefined;\n },\n value: function value(m) {\n return m.argmin || m.cell.data.argmin(m.get);\n },\n add: function add(m, v, t) {\n if (v < m.min) m.argmin = t;\n },\n rem: function rem(m, v) {\n if (v <= m.min) m.argmin = undefined;\n },\n req: ['min', 'values'],\n idx: 3\n },\n argmax: {\n init: function init(m) {\n return m.argmax = undefined;\n },\n value: function value(m) {\n return m.argmax || m.cell.data.argmax(m.get);\n },\n add: function add(m, v, t) {\n if (v > m.max) m.argmax = t;\n },\n rem: function rem(m, v) {\n if (v >= m.max) m.argmax = undefined;\n },\n req: ['max', 'values'],\n idx: 3\n }\n};\nvar ValidAggregateOps = Object.keys(AggregateOps).filter(function (d) {\n return d !== '__count__';\n});\nfunction measure(key, value) {\n return function (out) {\n return extend({\n name: key,\n out: out || key\n }, base_op, value);\n };\n}\n[].concat(_toConsumableArray(ValidAggregateOps), ['__count__']).forEach(function (key) {\n AggregateOps[key] = measure(key, AggregateOps[key]);\n});\nfunction createMeasure(op, name) {\n return AggregateOps[op](name);\n}\nfunction compareIndex(a, b) {\n return a.idx - b.idx;\n}\nfunction resolve(agg) {\n var map = {};\n agg.forEach(function (a) {\n return map[a.name] = a;\n });\n var getreqs = function getreqs(a) {\n if (!a.req) return;\n a.req.forEach(function (key) {\n if (!map[key]) getreqs(map[key] = AggregateOps[key]());\n });\n };\n agg.forEach(getreqs);\n return Object.values(map).sort(compareIndex);\n}\nfunction init() {\n var _this = this;\n this.valid = 0;\n this.missing = 0;\n this._ops.forEach(function (op) {\n return op.init(_this);\n });\n}\nfunction add(v, t) {\n var _this2 = this;\n if (v == null || v === '') {\n ++this.missing;\n return;\n }\n if (v !== v) return;\n ++this.valid;\n this._ops.forEach(function (op) {\n return op.add(_this2, v, t);\n });\n}\nfunction rem(v, t) {\n var _this3 = this;\n if (v == null || v === '') {\n --this.missing;\n return;\n }\n if (v !== v) return;\n --this.valid;\n this._ops.forEach(function (op) {\n return op.rem(_this3, v, t);\n });\n}\nfunction set(t) {\n var _this4 = this;\n this._out.forEach(function (op) {\n return t[op.out] = op.value(_this4);\n });\n return t;\n}\nfunction compileMeasures(agg, field) {\n var get = field || identity,\n ops = resolve(agg),\n out = agg.slice().sort(compareIndex);\n function ctr(cell) {\n this._ops = ops;\n this._out = out;\n this.cell = cell;\n this.init();\n }\n ctr.prototype.init = init;\n ctr.prototype.add = add;\n ctr.prototype.rem = rem;\n ctr.prototype.set = set;\n ctr.prototype.get = get;\n ctr.fields = agg.map(function (op) {\n return op.out;\n });\n return ctr;\n}\nfunction TupleStore(key) {\n this._key = key ? field(key) : tupleid;\n this.reset();\n}\nvar prototype$1 = TupleStore.prototype;\nprototype$1.reset = function () {\n this._add = [];\n this._rem = [];\n this._ext = null;\n this._get = null;\n this._q = null;\n};\nprototype$1.add = function (v) {\n this._add.push(v);\n};\nprototype$1.rem = function (v) {\n this._rem.push(v);\n};\nprototype$1.values = function () {\n this._get = null;\n if (this._rem.length === 0) return this._add;\n var a = this._add,\n r = this._rem,\n k = this._key,\n n = a.length,\n m = r.length,\n x = Array(n - m),\n map = {};\n var i, j, v;\n\n // use unique key field to clear removed values\n for (i = 0; i < m; ++i) {\n map[k(r[i])] = 1;\n }\n for (i = 0, j = 0; i < n; ++i) {\n if (map[k(v = a[i])]) {\n map[k(v)] = 0;\n } else {\n x[j++] = v;\n }\n }\n this._rem = [];\n return this._add = x;\n};\n\n// memoizing statistics methods\n\nprototype$1.distinct = function (get) {\n var v = this.values(),\n map = {};\n var n = v.length,\n count = 0,\n s;\n while (--n >= 0) {\n s = get(v[n]) + '';\n if (!hasOwnProperty(map, s)) {\n map[s] = 1;\n ++count;\n }\n }\n return count;\n};\nprototype$1.extent = function (get) {\n if (this._get !== get || !this._ext) {\n var v = this.values(),\n i = extentIndex(v, get);\n this._ext = [v[i[0]], v[i[1]]];\n this._get = get;\n }\n return this._ext;\n};\nprototype$1.argmin = function (get) {\n return this.extent(get)[0] || {};\n};\nprototype$1.argmax = function (get) {\n return this.extent(get)[1] || {};\n};\nprototype$1.min = function (get) {\n var m = this.extent(get)[0];\n return m != null ? get(m) : undefined;\n};\nprototype$1.max = function (get) {\n var m = this.extent(get)[1];\n return m != null ? get(m) : undefined;\n};\nprototype$1.quartile = function (get) {\n if (this._get !== get || !this._q) {\n this._q = quartiles(this.values(), get);\n this._get = get;\n }\n return this._q;\n};\nprototype$1.q1 = function (get) {\n return this.quartile(get)[0];\n};\nprototype$1.q2 = function (get) {\n return this.quartile(get)[1];\n};\nprototype$1.q3 = function (get) {\n return this.quartile(get)[2];\n};\nprototype$1.ci = function (get) {\n if (this._get !== get || !this._ci) {\n this._ci = bootstrapCI(this.values(), 1000, 0.05, get);\n this._get = get;\n }\n return this._ci;\n};\nprototype$1.ci0 = function (get) {\n return this.ci(get)[0];\n};\nprototype$1.ci1 = function (get) {\n return this.ci(get)[1];\n};\n\n/**\n * Group-by aggregation operator.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array} [params.groupby] - An array of accessors to groupby.\n * @param {Array} [params.fields] - An array of accessors to aggregate.\n * @param {Array} [params.ops] - An array of strings indicating aggregation operations.\n * @param {Array} [params.as] - An array of output field names for aggregated values.\n * @param {boolean} [params.cross=false] - A flag indicating that the full\n * cross-product of groupby values should be generated, including empty cells.\n * If true, the drop parameter is ignored and empty cells are retained.\n * @param {boolean} [params.drop=true] - A flag indicating if empty cells should be removed.\n */\nfunction Aggregate(params) {\n Transform.call(this, null, params);\n this._adds = []; // array of added output tuples\n this._mods = []; // array of modified output tuples\n this._alen = 0; // number of active added tuples\n this._mlen = 0; // number of active modified tuples\n this._drop = true; // should empty aggregation cells be removed\n this._cross = false; // produce full cross-product of group-by values\n\n this._dims = []; // group-by dimension accessors\n this._dnames = []; // group-by dimension names\n\n this._measures = []; // collection of aggregation monoids\n this._countOnly = false; // flag indicating only count aggregation\n this._counts = null; // collection of count fields\n this._prev = null; // previous aggregation cells\n\n this._inputs = null; // array of dependent input tuple field names\n this._outputs = null; // array of output tuple field names\n}\n\nAggregate.Definition = {\n 'type': 'Aggregate',\n 'metadata': {\n 'generates': true,\n 'changes': true\n },\n 'params': [{\n 'name': 'groupby',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'ops',\n 'type': 'enum',\n 'array': true,\n 'values': ValidAggregateOps\n }, {\n 'name': 'fields',\n 'type': 'field',\n 'null': true,\n 'array': true\n }, {\n 'name': 'as',\n 'type': 'string',\n 'null': true,\n 'array': true\n }, {\n 'name': 'drop',\n 'type': 'boolean',\n 'default': true\n }, {\n 'name': 'cross',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'key',\n 'type': 'field'\n }]\n};\ninherits(Aggregate, Transform, {\n transform: function transform(_, pulse) {\n var _this5 = this;\n var aggr = this,\n out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n mod = _.modified();\n aggr.stamp = out.stamp;\n if (aggr.value && (mod || pulse.modified(aggr._inputs, true))) {\n aggr._prev = aggr.value;\n aggr.value = mod ? aggr.init(_) : Object.create(null);\n pulse.visit(pulse.SOURCE, function (t) {\n return aggr.add(t);\n });\n } else {\n aggr.value = aggr.value || aggr.init(_);\n pulse.visit(pulse.REM, function (t) {\n return aggr.rem(t);\n });\n pulse.visit(pulse.ADD, function (t) {\n return aggr.add(t);\n });\n }\n\n // Indicate output fields and return aggregate tuples.\n out.modifies(aggr._outputs);\n\n // Should empty cells be dropped?\n aggr._drop = _.drop !== false;\n\n // If domain cross-product requested, generate empty cells as needed\n // and ensure that empty cells are not dropped\n if (_.cross && aggr._dims.length > 1) {\n aggr._drop = false;\n aggr.cross();\n }\n if (pulse.clean() && aggr._drop) {\n out.clean(true).runAfter(function () {\n return _this5.clean();\n });\n }\n return aggr.changes(out);\n },\n cross: function cross() {\n var aggr = this,\n curr = aggr.value,\n dims = aggr._dnames,\n vals = dims.map(function () {\n return {};\n }),\n n = dims.length;\n\n // collect all group-by domain values\n function collect(cells) {\n var key, i, t, v;\n for (key in cells) {\n t = cells[key].tuple;\n for (i = 0; i < n; ++i) {\n vals[i][v = t[dims[i]]] = v;\n }\n }\n }\n collect(aggr._prev);\n collect(curr);\n\n // iterate over key cross-product, create cells as needed\n function generate(base, tuple, index) {\n var name = dims[index],\n v = vals[index++];\n for (var k in v) {\n var _key = base ? base + '|' + k : k;\n tuple[name] = v[k];\n if (index < n) generate(_key, tuple, index);else if (!curr[_key]) aggr.cell(_key, tuple);\n }\n }\n generate('', {}, 0);\n },\n init: function init(_) {\n // initialize input and output fields\n var inputs = this._inputs = [],\n outputs = this._outputs = [],\n inputMap = {};\n function inputVisit(get) {\n var fields = array(accessorFields(get)),\n n = fields.length;\n var i = 0,\n f;\n for (; i < n; ++i) {\n if (!inputMap[f = fields[i]]) {\n inputMap[f] = 1;\n inputs.push(f);\n }\n }\n }\n\n // initialize group-by dimensions\n this._dims = array(_.groupby);\n this._dnames = this._dims.map(function (d) {\n var dname = accessorName(d);\n inputVisit(d);\n outputs.push(dname);\n return dname;\n });\n this.cellkey = _.key ? _.key : groupkey(this._dims);\n\n // initialize aggregate measures\n this._countOnly = true;\n this._counts = [];\n this._measures = [];\n var fields = _.fields || [null],\n ops = _.ops || ['count'],\n as = _.as || [],\n n = fields.length,\n map = {};\n var field, op, m, mname, outname, i;\n if (n !== ops.length) {\n error('Unmatched number of fields and aggregate ops.');\n }\n for (i = 0; i < n; ++i) {\n field = fields[i];\n op = ops[i];\n if (field == null && op !== 'count') {\n error('Null aggregate field specified.');\n }\n mname = accessorName(field);\n outname = measureName(op, mname, as[i]);\n outputs.push(outname);\n if (op === 'count') {\n this._counts.push(outname);\n continue;\n }\n m = map[mname];\n if (!m) {\n inputVisit(field);\n m = map[mname] = [];\n m.field = field;\n this._measures.push(m);\n }\n if (op !== 'count') this._countOnly = false;\n m.push(createMeasure(op, outname));\n }\n this._measures = this._measures.map(function (m) {\n return compileMeasures(m, m.field);\n });\n return Object.create(null); // aggregation cells (this.value)\n },\n\n // -- Cell Management -----\n\n cellkey: groupkey(),\n cell: function cell(key, t) {\n var cell = this.value[key];\n if (!cell) {\n cell = this.value[key] = this.newcell(key, t);\n this._adds[this._alen++] = cell;\n } else if (cell.num === 0 && this._drop && cell.stamp < this.stamp) {\n cell.stamp = this.stamp;\n this._adds[this._alen++] = cell;\n } else if (cell.stamp < this.stamp) {\n cell.stamp = this.stamp;\n this._mods[this._mlen++] = cell;\n }\n return cell;\n },\n newcell: function newcell(key, t) {\n var cell = {\n key: key,\n num: 0,\n agg: null,\n tuple: this.newtuple(t, this._prev && this._prev[key]),\n stamp: this.stamp,\n store: false\n };\n if (!this._countOnly) {\n var measures = this._measures,\n n = measures.length;\n cell.agg = Array(n);\n for (var i = 0; i < n; ++i) {\n cell.agg[i] = new measures[i](cell);\n }\n }\n if (cell.store) {\n cell.data = new TupleStore();\n }\n return cell;\n },\n newtuple: function newtuple(t, p) {\n var names = this._dnames,\n dims = this._dims,\n n = dims.length,\n x = {};\n for (var i = 0; i < n; ++i) {\n x[names[i]] = dims[i](t);\n }\n return p ? replace(p.tuple, x) : ingest(x);\n },\n clean: function clean() {\n var cells = this.value;\n for (var _key2 in cells) {\n if (cells[_key2].num === 0) {\n delete cells[_key2];\n }\n }\n },\n // -- Process Tuples -----\n add: function add(t) {\n var key = this.cellkey(t),\n cell = this.cell(key, t);\n cell.num += 1;\n if (this._countOnly) return;\n if (cell.store) cell.data.add(t);\n var agg = cell.agg;\n for (var i = 0, n = agg.length; i < n; ++i) {\n agg[i].add(agg[i].get(t), t);\n }\n },\n rem: function rem(t) {\n var key = this.cellkey(t),\n cell = this.cell(key, t);\n cell.num -= 1;\n if (this._countOnly) return;\n if (cell.store) cell.data.rem(t);\n var agg = cell.agg;\n for (var i = 0, n = agg.length; i < n; ++i) {\n agg[i].rem(agg[i].get(t), t);\n }\n },\n celltuple: function celltuple(cell) {\n var tuple = cell.tuple,\n counts = this._counts;\n\n // consolidate stored values\n if (cell.store) {\n cell.data.values();\n }\n\n // update tuple properties\n for (var i = 0, n = counts.length; i < n; ++i) {\n tuple[counts[i]] = cell.num;\n }\n if (!this._countOnly) {\n var agg = cell.agg;\n for (var _i = 0, _n = agg.length; _i < _n; ++_i) {\n agg[_i].set(tuple);\n }\n }\n return tuple;\n },\n changes: function changes(out) {\n var adds = this._adds,\n mods = this._mods,\n prev = this._prev,\n drop = this._drop,\n add = out.add,\n rem = out.rem,\n mod = out.mod;\n var cell, key, i, n;\n if (prev) for (key in prev) {\n cell = prev[key];\n if (!drop || cell.num) rem.push(cell.tuple);\n }\n for (i = 0, n = this._alen; i < n; ++i) {\n add.push(this.celltuple(adds[i]));\n adds[i] = null; // for garbage collection\n }\n\n for (i = 0, n = this._mlen; i < n; ++i) {\n cell = mods[i];\n (cell.num === 0 && drop ? rem : mod).push(this.celltuple(cell));\n mods[i] = null; // for garbage collection\n }\n\n this._alen = this._mlen = 0; // reset list of active cells\n this._prev = null;\n return out;\n }\n});\n\n// epsilon bias to offset floating point error (#1737)\nvar EPSILON$1 = 1e-14;\n\n/**\n * Generates a binning function for discretizing data.\n * @constructor\n * @param {object} params - The parameters for this operator. The\n * provided values should be valid options for the {@link bin} function.\n * @param {function(object): *} params.field - The data field to bin.\n */\nfunction Bin(params) {\n Transform.call(this, null, params);\n}\nBin.Definition = {\n 'type': 'Bin',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'interval',\n 'type': 'boolean',\n 'default': true\n }, {\n 'name': 'anchor',\n 'type': 'number'\n }, {\n 'name': 'maxbins',\n 'type': 'number',\n 'default': 20\n }, {\n 'name': 'base',\n 'type': 'number',\n 'default': 10\n }, {\n 'name': 'divide',\n 'type': 'number',\n 'array': true,\n 'default': [5, 2]\n }, {\n 'name': 'extent',\n 'type': 'number',\n 'array': true,\n 'length': 2,\n 'required': true\n }, {\n 'name': 'span',\n 'type': 'number'\n }, {\n 'name': 'step',\n 'type': 'number'\n }, {\n 'name': 'steps',\n 'type': 'number',\n 'array': true\n }, {\n 'name': 'minstep',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'nice',\n 'type': 'boolean',\n 'default': true\n }, {\n 'name': 'name',\n 'type': 'string'\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': 2,\n 'default': ['bin0', 'bin1']\n }]\n};\ninherits(Bin, Transform, {\n transform: function transform(_, pulse) {\n var band = _.interval !== false,\n bins = this._bins(_),\n start = bins.start,\n step = bins.step,\n as = _.as || ['bin0', 'bin1'],\n b0 = as[0],\n b1 = as[1];\n var flag;\n if (_.modified()) {\n pulse = pulse.reflow(true);\n flag = pulse.SOURCE;\n } else {\n flag = pulse.modified(accessorFields(_.field)) ? pulse.ADD_MOD : pulse.ADD;\n }\n pulse.visit(flag, band ? function (t) {\n var v = bins(t);\n // minimum bin value (inclusive)\n t[b0] = v;\n // maximum bin value (exclusive)\n // use convoluted math for better floating point agreement\n // see https://github.com/vega/vega/issues/830\n // infinite values propagate through this formula! #2227\n t[b1] = v == null ? null : start + step * (1 + (v - start) / step);\n } : function (t) {\n return t[b0] = bins(t);\n });\n return pulse.modifies(band ? as : b0);\n },\n _bins: function _bins(_) {\n if (this.value && !_.modified()) {\n return this.value;\n }\n var field = _.field,\n bins = bin(_),\n step = bins.step;\n var start = bins.start,\n stop = start + Math.ceil((bins.stop - start) / step) * step,\n a,\n d;\n if ((a = _.anchor) != null) {\n d = a - (start + step * Math.floor((a - start) / step));\n start += d;\n stop += d;\n }\n var f = function f(t) {\n var v = toNumber(field(t));\n return v == null ? null : v < start ? -Infinity : v > stop ? +Infinity : (v = Math.max(start, Math.min(v, stop - step)), start + step * Math.floor(EPSILON$1 + (v - start) / step));\n };\n f.start = start;\n f.stop = bins.stop;\n f.step = step;\n return this.value = accessor(f, accessorFields(field), _.name || 'bin_' + accessorName(field));\n }\n});\nfunction SortedList(idFunc, source, input) {\n var $ = idFunc;\n var _data = source || [],\n _add = input || [],\n rem = {},\n cnt = 0;\n return {\n add: function add(t) {\n return _add.push(t);\n },\n remove: function remove(t) {\n return rem[$(t)] = ++cnt;\n },\n size: function size() {\n return _data.length;\n },\n data: function data(compare, resort) {\n if (cnt) {\n _data = _data.filter(function (t) {\n return !rem[$(t)];\n });\n rem = {};\n cnt = 0;\n }\n if (resort && compare) {\n _data.sort(compare);\n }\n if (_add.length) {\n _data = compare ? merge(compare, _data, _add.sort(compare)) : _data.concat(_add);\n _add = [];\n }\n return _data;\n }\n };\n}\n\n/**\n * Collects all data tuples that pass through this operator.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(*,*): number} [params.sort] - An optional\n * comparator function for additionally sorting the collected tuples.\n */\nfunction Collect(params) {\n Transform.call(this, [], params);\n}\nCollect.Definition = {\n 'type': 'Collect',\n 'metadata': {\n 'source': true\n },\n 'params': [{\n 'name': 'sort',\n 'type': 'compare'\n }]\n};\ninherits(Collect, Transform, {\n transform: function transform(_, pulse) {\n var out = pulse.fork(pulse.ALL),\n list = SortedList(tupleid, this.value, out.materialize(out.ADD).add),\n sort = _.sort,\n mod = pulse.changed() || sort && (_.modified('sort') || pulse.modified(sort.fields));\n out.visit(out.REM, list.remove);\n this.modified(mod);\n this.value = out.source = list.data(stableCompare(sort), mod);\n\n // propagate tree root if defined\n if (pulse.source && pulse.source.root) {\n this.value.root = pulse.source.root;\n }\n return out;\n }\n});\n\n/**\n * Generates a comparator function.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array} params.fields - The fields to compare.\n * @param {Array} [params.orders] - The sort orders.\n * Each entry should be one of \"ascending\" (default) or \"descending\".\n */\nfunction Compare(params) {\n Operator.call(this, null, update$5, params);\n}\ninherits(Compare, Operator);\nfunction update$5(_) {\n return this.value && !_.modified() ? this.value : compare(_.fields, _.orders);\n}\n\n/**\n * Count regexp-defined pattern occurrences in a text field.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - An accessor for the text field.\n * @param {string} [params.pattern] - RegExp string defining the text pattern.\n * @param {string} [params.case] - One of 'lower', 'upper' or null (mixed) case.\n * @param {string} [params.stopwords] - RegExp string of words to ignore.\n */\nfunction CountPattern(params) {\n Transform.call(this, null, params);\n}\nCountPattern.Definition = {\n 'type': 'CountPattern',\n 'metadata': {\n 'generates': true,\n 'changes': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'case',\n 'type': 'enum',\n 'values': ['upper', 'lower', 'mixed'],\n 'default': 'mixed'\n }, {\n 'name': 'pattern',\n 'type': 'string',\n 'default': '[\\\\w\"]+'\n }, {\n 'name': 'stopwords',\n 'type': 'string',\n 'default': ''\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': 2,\n 'default': ['text', 'count']\n }]\n};\nfunction tokenize(text, tcase, match) {\n switch (tcase) {\n case 'upper':\n text = text.toUpperCase();\n break;\n case 'lower':\n text = text.toLowerCase();\n break;\n }\n return text.match(match);\n}\ninherits(CountPattern, Transform, {\n transform: function transform(_, pulse) {\n var process = function process(update) {\n return function (tuple) {\n var tokens = tokenize(get(tuple), _.case, match) || [],\n t;\n for (var i = 0, n = tokens.length; i < n; ++i) {\n if (!stop.test(t = tokens[i])) update(t);\n }\n };\n };\n var init = this._parameterCheck(_, pulse),\n counts = this._counts,\n match = this._match,\n stop = this._stop,\n get = _.field,\n as = _.as || ['text', 'count'],\n add = process(function (t) {\n return counts[t] = 1 + (counts[t] || 0);\n }),\n rem = process(function (t) {\n return counts[t] -= 1;\n });\n if (init) {\n pulse.visit(pulse.SOURCE, add);\n } else {\n pulse.visit(pulse.ADD, add);\n pulse.visit(pulse.REM, rem);\n }\n return this._finish(pulse, as); // generate output tuples\n },\n _parameterCheck: function _parameterCheck(_, pulse) {\n var init = false;\n if (_.modified('stopwords') || !this._stop) {\n this._stop = new RegExp('^' + (_.stopwords || '') + '$', 'i');\n init = true;\n }\n if (_.modified('pattern') || !this._match) {\n this._match = new RegExp(_.pattern || '[\\\\w\\']+', 'g');\n init = true;\n }\n if (_.modified('field') || pulse.modified(_.field.fields)) {\n init = true;\n }\n if (init) this._counts = {};\n return init;\n },\n _finish: function _finish(pulse, as) {\n var counts = this._counts,\n tuples = this._tuples || (this._tuples = {}),\n text = as[0],\n count = as[1],\n out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n var w, t, c;\n for (w in counts) {\n t = tuples[w];\n c = counts[w] || 0;\n if (!t && c) {\n tuples[w] = t = ingest({});\n t[text] = w;\n t[count] = c;\n out.add.push(t);\n } else if (c === 0) {\n if (t) out.rem.push(t);\n counts[w] = null;\n tuples[w] = null;\n } else if (t[count] !== c) {\n t[count] = c;\n out.mod.push(t);\n }\n }\n return out.modifies(as);\n }\n});\n\n/**\n * Perform a cross-product of a tuple stream with itself.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object):boolean} [params.filter] - An optional filter\n * function for selectively including tuples in the cross product.\n * @param {Array} [params.as] - The names of the output fields.\n */\nfunction Cross(params) {\n Transform.call(this, null, params);\n}\nCross.Definition = {\n 'type': 'Cross',\n 'metadata': {\n 'generates': true\n },\n 'params': [{\n 'name': 'filter',\n 'type': 'expr'\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': 2,\n 'default': ['a', 'b']\n }]\n};\ninherits(Cross, Transform, {\n transform: function transform(_, pulse) {\n var out = pulse.fork(pulse.NO_SOURCE),\n as = _.as || ['a', 'b'],\n a = as[0],\n b = as[1],\n reset = !this.value || pulse.changed(pulse.ADD_REM) || _.modified('as') || _.modified('filter');\n var data = this.value;\n if (reset) {\n if (data) out.rem = data;\n data = pulse.materialize(pulse.SOURCE).source;\n out.add = this.value = cross(data, a, b, _.filter || truthy);\n } else {\n out.mod = data;\n }\n out.source = this.value;\n return out.modifies(as);\n }\n});\nfunction cross(input, a, b, filter) {\n var data = [],\n t = {},\n n = input.length,\n i = 0,\n j,\n left;\n for (; i < n; ++i) {\n t[a] = left = input[i];\n for (j = 0; j < n; ++j) {\n t[b] = input[j];\n if (filter(t)) {\n data.push(ingest(t));\n t = {};\n t[a] = left;\n }\n }\n }\n return data;\n}\nvar Distributions = {\n kde: randomKDE,\n mixture: randomMixture,\n normal: randomNormal,\n lognormal: randomLogNormal,\n uniform: randomUniform\n};\nvar DISTRIBUTIONS = 'distributions',\n FUNCTION = 'function',\n FIELD = 'field';\n\n/**\n * Parse a parameter object for a probability distribution.\n * @param {object} def - The distribution parameter object.\n * @param {function():Array} - A method for requesting\n * source data. Used for distributions (such as KDE) that\n * require sample data points. This method will only be\n * invoked if the 'from' parameter for a target data source\n * is not provided. Typically this method returns backing\n * source data for a Pulse object.\n * @return {object} - The output distribution object.\n */\nfunction parse(def, data) {\n var func = def[FUNCTION];\n if (!hasOwnProperty(Distributions, func)) {\n error('Unknown distribution function: ' + func);\n }\n var d = Distributions[func]();\n for (var name in def) {\n // if data field, extract values\n if (name === FIELD) {\n d.data((def.from || data()).map(def[name]));\n }\n\n // if distribution mixture, recurse to parse each definition\n else if (name === DISTRIBUTIONS) {\n d[name](def[name].map(function (_) {\n return parse(_, data);\n }));\n }\n\n // otherwise, simply set the parameter\n else if (typeof d[name] === FUNCTION) {\n d[name](def[name]);\n }\n }\n return d;\n}\n\n/**\n * Grid sample points for a probability density. Given a distribution and\n * a sampling extent, will generate points suitable for plotting either\n * PDF (probability density function) or CDF (cumulative distribution\n * function) curves.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {object} params.distribution - The probability distribution. This\n * is an object parameter dependent on the distribution type.\n * @param {string} [params.method='pdf'] - The distribution method to sample.\n * One of 'pdf' or 'cdf'.\n * @param {Array} [params.extent] - The [min, max] extent over which\n * to sample the distribution. This argument is required in most cases, but\n * can be omitted if the distribution (e.g., 'kde') supports a 'data' method\n * that returns numerical sample points from which the extent can be deduced.\n * @param {number} [params.minsteps=25] - The minimum number of curve samples\n * for plotting the density.\n * @param {number} [params.maxsteps=200] - The maximum number of curve samples\n * for plotting the density.\n * @param {number} [params.steps] - The exact number of curve samples for\n * plotting the density. If specified, overrides both minsteps and maxsteps\n * to set an exact number of uniform samples. Useful in conjunction with\n * a fixed extent to ensure consistent sample points for stacked densities.\n */\nfunction Density(params) {\n Transform.call(this, null, params);\n}\nvar distributions = [{\n 'key': {\n 'function': 'normal'\n },\n 'params': [{\n 'name': 'mean',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'stdev',\n 'type': 'number',\n 'default': 1\n }]\n}, {\n 'key': {\n 'function': 'lognormal'\n },\n 'params': [{\n 'name': 'mean',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'stdev',\n 'type': 'number',\n 'default': 1\n }]\n}, {\n 'key': {\n 'function': 'uniform'\n },\n 'params': [{\n 'name': 'min',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'max',\n 'type': 'number',\n 'default': 1\n }]\n}, {\n 'key': {\n 'function': 'kde'\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'from',\n 'type': 'data'\n }, {\n 'name': 'bandwidth',\n 'type': 'number',\n 'default': 0\n }]\n}];\nvar mixture = {\n 'key': {\n 'function': 'mixture'\n },\n 'params': [{\n 'name': 'distributions',\n 'type': 'param',\n 'array': true,\n 'params': distributions\n }, {\n 'name': 'weights',\n 'type': 'number',\n 'array': true\n }]\n};\nDensity.Definition = {\n 'type': 'Density',\n 'metadata': {\n 'generates': true\n },\n 'params': [{\n 'name': 'extent',\n 'type': 'number',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'steps',\n 'type': 'number'\n }, {\n 'name': 'minsteps',\n 'type': 'number',\n 'default': 25\n }, {\n 'name': 'maxsteps',\n 'type': 'number',\n 'default': 200\n }, {\n 'name': 'method',\n 'type': 'string',\n 'default': 'pdf',\n 'values': ['pdf', 'cdf']\n }, {\n 'name': 'distribution',\n 'type': 'param',\n 'params': distributions.concat(mixture)\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'default': ['value', 'density']\n }]\n};\ninherits(Density, Transform, {\n transform: function transform(_, pulse) {\n var out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n if (!this.value || pulse.changed() || _.modified()) {\n var dist = parse(_.distribution, source(pulse)),\n minsteps = _.steps || _.minsteps || 25,\n maxsteps = _.steps || _.maxsteps || 200;\n var method = _.method || 'pdf';\n if (method !== 'pdf' && method !== 'cdf') {\n error('Invalid density method: ' + method);\n }\n if (!_.extent && !dist.data) {\n error('Missing density extent parameter.');\n }\n method = dist[method];\n var as = _.as || ['value', 'density'],\n domain = _.extent || extent(dist.data()),\n values = sampleCurve(method, domain, minsteps, maxsteps).map(function (v) {\n var tuple = {};\n tuple[as[0]] = v[0];\n tuple[as[1]] = v[1];\n return ingest(tuple);\n });\n if (this.value) out.rem = this.value;\n this.value = out.add = out.source = values;\n }\n return out;\n }\n});\nfunction source(pulse) {\n return function () {\n return pulse.materialize(pulse.SOURCE).source;\n };\n}\n\n// use either provided alias or accessor field name\nfunction fieldNames(fields, as) {\n if (!fields) return null;\n return fields.map(function (f, i) {\n return as[i] || accessorName(f);\n });\n}\nfunction partition$1(data, groupby, field) {\n var groups = [],\n get = function get(f) {\n return f(t);\n };\n var map, i, n, t, k, g;\n\n // partition data points into groups\n if (groupby == null) {\n groups.push(data.map(field));\n } else {\n for (map = {}, i = 0, n = data.length; i < n; ++i) {\n t = data[i];\n k = groupby.map(get);\n g = map[k];\n if (!g) {\n map[k] = g = [];\n g.dims = k;\n groups.push(g);\n }\n g.push(field(t));\n }\n }\n return groups;\n}\nvar Output = 'bin';\n\n/**\n * Dot density binning for dot plot construction.\n * Based on Leland Wilkinson, Dot Plots, The American Statistician, 1999.\n * https://www.cs.uic.edu/~wilkinson/Publications/dotplots.pdf\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to bin.\n * @param {Array} [params.groupby] - An array of accessors to groupby.\n * @param {number} [params.step] - The step size (bin width) within which dots should be\n * stacked. Defaults to 1/30 of the extent of the data *field*.\n * @param {boolean} [params.smooth=false] - A boolean flag indicating if dot density\n * stacks should be smoothed to reduce variance.\n */\nfunction DotBin(params) {\n Transform.call(this, null, params);\n}\nDotBin.Definition = {\n 'type': 'DotBin',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'groupby',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'step',\n 'type': 'number'\n }, {\n 'name': 'smooth',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'as',\n 'type': 'string',\n 'default': Output\n }]\n};\nvar autostep = function autostep(data, field) {\n return span(extent(data, field)) / 30;\n};\ninherits(DotBin, Transform, {\n transform: function transform(_, pulse) {\n if (this.value && !(_.modified() || pulse.changed())) {\n return pulse; // early exit\n }\n\n var source = pulse.materialize(pulse.SOURCE).source,\n groups = partition$1(pulse.source, _.groupby, identity),\n smooth = _.smooth || false,\n field = _.field,\n step = _.step || autostep(source, field),\n sort = stableCompare(function (a, b) {\n return field(a) - field(b);\n }),\n as = _.as || Output,\n n = groups.length;\n\n // compute dotplot bins per group\n var min = Infinity,\n max = -Infinity,\n i = 0,\n j;\n for (; i < n; ++i) {\n var g = groups[i].sort(sort);\n j = -1;\n var _iterator = _createForOfIteratorHelper(dotbin(g, step, smooth, field)),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var v = _step.value;\n if (v < min) min = v;\n if (v > max) max = v;\n g[++j][as] = v;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n this.value = {\n start: min,\n stop: max,\n step: step\n };\n return pulse.reflow(true).modifies(as);\n }\n});\n\n/**\n * Wraps an expression function with access to external parameters.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function} params.expr - The expression function. The\n * function should accept both a datum and a parameter object.\n * This operator's value will be a new function that wraps the\n * expression function with access to this operator's parameters.\n */\nfunction Expression(params) {\n Operator.call(this, null, update$4, params);\n this.modified(true);\n}\ninherits(Expression, Operator);\nfunction update$4(_) {\n var expr = _.expr;\n return this.value && !_.modified('expr') ? this.value : accessor(function (datum) {\n return expr(datum, _);\n }, accessorFields(expr), accessorName(expr));\n}\n\n/**\n * Computes extents (min/max) for a data field.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The field over which to compute extends.\n */\nfunction Extent(params) {\n Transform.call(this, [undefined, undefined], params);\n}\nExtent.Definition = {\n 'type': 'Extent',\n 'metadata': {},\n 'params': [{\n 'name': 'field',\n 'type': 'field',\n 'required': true\n }]\n};\ninherits(Extent, Transform, {\n transform: function transform(_, pulse) {\n var extent = this.value,\n field = _.field,\n mod = pulse.changed() || pulse.modified(field.fields) || _.modified('field');\n var min = extent[0],\n max = extent[1];\n if (mod || min == null) {\n min = +Infinity;\n max = -Infinity;\n }\n pulse.visit(mod ? pulse.SOURCE : pulse.ADD, function (t) {\n var v = toNumber(field(t));\n if (v != null) {\n // NaNs will fail all comparisons!\n if (v < min) min = v;\n if (v > max) max = v;\n }\n });\n if (!Number.isFinite(min) || !Number.isFinite(max)) {\n var name = accessorName(field);\n if (name) name = \" for field \\\"\".concat(name, \"\\\"\");\n pulse.dataflow.warn(\"Infinite extent\".concat(name, \": [\").concat(min, \", \").concat(max, \"]\"));\n min = max = undefined;\n }\n this.value = [min, max];\n }\n});\n\n/**\n * Provides a bridge between a parent transform and a target subflow that\n * consumes only a subset of the tuples that pass through the parent.\n * @constructor\n * @param {Pulse} pulse - A pulse to use as the value of this operator.\n * @param {Transform} parent - The parent transform (typically a Facet instance).\n */\nfunction Subflow(pulse, parent) {\n Operator.call(this, pulse);\n this.parent = parent;\n this.count = 0;\n}\ninherits(Subflow, Operator, {\n /**\n * Routes pulses from this subflow to a target transform.\n * @param {Transform} target - A transform that receives the subflow of tuples.\n */\n connect: function connect(target) {\n this.detachSubflow = target.detachSubflow;\n this.targets().add(target);\n return target.source = this;\n },\n /**\n * Add an 'add' tuple to the subflow pulse.\n * @param {Tuple} t - The tuple being added.\n */\n add: function add(t) {\n this.count += 1;\n this.value.add.push(t);\n },\n /**\n * Add a 'rem' tuple to the subflow pulse.\n * @param {Tuple} t - The tuple being removed.\n */\n rem: function rem(t) {\n this.count -= 1;\n this.value.rem.push(t);\n },\n /**\n * Add a 'mod' tuple to the subflow pulse.\n * @param {Tuple} t - The tuple being modified.\n */\n mod: function mod(t) {\n this.value.mod.push(t);\n },\n /**\n * Re-initialize this operator's pulse value.\n * @param {Pulse} pulse - The pulse to copy from.\n * @see Pulse.init\n */\n init: function init(pulse) {\n this.value.init(pulse, pulse.NO_SOURCE);\n },\n /**\n * Evaluate this operator. This method overrides the\n * default behavior to simply return the contained pulse value.\n * @return {Pulse}\n */\n evaluate: function evaluate() {\n // assert: this.value.stamp === pulse.stamp\n return this.value;\n }\n});\n\n/**\n * Facets a dataflow into a set of subflows based on a key.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(Dataflow, string): Operator} params.subflow - A function\n * that generates a subflow of operators and returns its root operator.\n * @param {function(object): *} params.key - The key field to facet by.\n */\nfunction Facet(params) {\n Transform.call(this, {}, params);\n this._keys = fastmap(); // cache previously calculated key values\n\n // keep track of active subflows, use as targets array for listeners\n // this allows us to limit propagation to only updated subflows\n var a = this._targets = [];\n a.active = 0;\n a.forEach = function (f) {\n for (var i = 0, n = a.active; i < n; ++i) {\n f(a[i], i, a);\n }\n };\n}\ninherits(Facet, Transform, {\n activate: function activate(flow) {\n this._targets[this._targets.active++] = flow;\n },\n // parent argument provided by PreFacet subclass\n subflow: function subflow(key, flow, pulse, parent) {\n var flows = this.value;\n var sf = hasOwnProperty(flows, key) && flows[key],\n df,\n p;\n if (!sf) {\n p = parent || (p = this._group[key]) && p.tuple;\n df = pulse.dataflow;\n sf = new Subflow(pulse.fork(pulse.NO_SOURCE), this);\n df.add(sf).connect(flow(df, key, p));\n flows[key] = sf;\n this.activate(sf);\n } else if (sf.value.stamp < pulse.stamp) {\n sf.init(pulse);\n this.activate(sf);\n }\n return sf;\n },\n clean: function clean() {\n var flows = this.value;\n var detached = 0;\n for (var _key3 in flows) {\n if (flows[_key3].count === 0) {\n var detach = flows[_key3].detachSubflow;\n if (detach) detach();\n delete flows[_key3];\n ++detached;\n }\n }\n\n // remove inactive targets from the active targets array\n if (detached) {\n var active = this._targets.filter(function (sf) {\n return sf && sf.count > 0;\n });\n this.initTargets(active);\n }\n },\n initTargets: function initTargets(act) {\n var a = this._targets,\n n = a.length,\n m = act ? act.length : 0;\n var i = 0;\n for (; i < m; ++i) {\n a[i] = act[i];\n }\n for (; i < n && a[i] != null; ++i) {\n a[i] = null; // ensure old flows can be garbage collected\n }\n\n a.active = m;\n },\n transform: function transform(_, pulse) {\n var _this6 = this;\n var df = pulse.dataflow,\n key = _.key,\n flow = _.subflow,\n cache = this._keys,\n rekey = _.modified('key'),\n subflow = function subflow(key) {\n return _this6.subflow(key, flow, pulse);\n };\n this._group = _.group || {};\n this.initTargets(); // reset list of active subflows\n\n pulse.visit(pulse.REM, function (t) {\n var id = tupleid(t),\n k = cache.get(id);\n if (k !== undefined) {\n cache.delete(id);\n subflow(k).rem(t);\n }\n });\n pulse.visit(pulse.ADD, function (t) {\n var k = key(t);\n cache.set(tupleid(t), k);\n subflow(k).add(t);\n });\n if (rekey || pulse.modified(key.fields)) {\n pulse.visit(pulse.MOD, function (t) {\n var id = tupleid(t),\n k0 = cache.get(id),\n k1 = key(t);\n if (k0 === k1) {\n subflow(k1).mod(t);\n } else {\n cache.set(id, k1);\n subflow(k0).rem(t);\n subflow(k1).add(t);\n }\n });\n } else if (pulse.changed(pulse.MOD)) {\n pulse.visit(pulse.MOD, function (t) {\n subflow(cache.get(tupleid(t))).mod(t);\n });\n }\n if (rekey) {\n pulse.visit(pulse.REFLOW, function (t) {\n var id = tupleid(t),\n k0 = cache.get(id),\n k1 = key(t);\n if (k0 !== k1) {\n cache.set(id, k1);\n subflow(k0).rem(t);\n subflow(k1).add(t);\n }\n });\n }\n if (pulse.clean()) {\n df.runAfter(function () {\n _this6.clean();\n cache.clean();\n });\n } else if (cache.empty > df.cleanThreshold) {\n df.runAfter(cache.clean);\n }\n return pulse;\n }\n});\n\n/**\n * Generates one or more field accessor functions.\n * If the 'name' parameter is an array, an array of field accessors\n * will be created and the 'as' parameter will be ignored.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {string} params.name - The field name(s) to access.\n * @param {string} params.as - The accessor function name.\n */\nfunction Field(params) {\n Operator.call(this, null, update$3, params);\n}\ninherits(Field, Operator);\nfunction update$3(_) {\n return this.value && !_.modified() ? this.value : isArray(_.name) ? array(_.name).map(function (f) {\n return field(f);\n }) : field(_.name, _.as);\n}\n\n/**\n * Filters data tuples according to a predicate function.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.expr - The predicate expression function\n * that determines a tuple's filter status. Truthy values pass the filter.\n */\nfunction Filter(params) {\n Transform.call(this, fastmap(), params);\n}\nFilter.Definition = {\n 'type': 'Filter',\n 'metadata': {\n 'changes': true\n },\n 'params': [{\n 'name': 'expr',\n 'type': 'expr',\n 'required': true\n }]\n};\ninherits(Filter, Transform, {\n transform: function transform(_, pulse) {\n var df = pulse.dataflow,\n cache = this.value,\n // cache ids of filtered tuples\n output = pulse.fork(),\n add = output.add,\n rem = output.rem,\n mod = output.mod,\n test = _.expr;\n var isMod = true;\n pulse.visit(pulse.REM, function (t) {\n var id = tupleid(t);\n if (!cache.has(id)) rem.push(t);else cache.delete(id);\n });\n pulse.visit(pulse.ADD, function (t) {\n if (test(t, _)) add.push(t);else cache.set(tupleid(t), 1);\n });\n function revisit(t) {\n var id = tupleid(t),\n b = test(t, _),\n s = cache.get(id);\n if (b && s) {\n cache.delete(id);\n add.push(t);\n } else if (!b && !s) {\n cache.set(id, 1);\n rem.push(t);\n } else if (isMod && b && !s) {\n mod.push(t);\n }\n }\n pulse.visit(pulse.MOD, revisit);\n if (_.modified()) {\n isMod = false;\n pulse.visit(pulse.REFLOW, revisit);\n }\n if (cache.empty > df.cleanThreshold) df.runAfter(cache.clean);\n return output;\n }\n});\n\n/**\n * Flattens array-typed field values into new data objects.\n * If multiple fields are specified, they are treated as parallel arrays,\n * with output values included for each matching index (or null if missing).\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array} params.fields - An array of field\n * accessors for the tuple fields that should be flattened.\n * @param {string} [params.index] - Optional output field name for index\n * value. If unspecified, no index field is included in the output.\n * @param {Array} [params.as] - Output field names for flattened\n * array fields. Any unspecified fields will use the field name provided\n * by the fields accessors.\n */\nfunction Flatten(params) {\n Transform.call(this, [], params);\n}\nFlatten.Definition = {\n 'type': 'Flatten',\n 'metadata': {\n 'generates': true\n },\n 'params': [{\n 'name': 'fields',\n 'type': 'field',\n 'array': true,\n 'required': true\n }, {\n 'name': 'index',\n 'type': 'string'\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true\n }]\n};\ninherits(Flatten, Transform, {\n transform: function transform(_, pulse) {\n var out = pulse.fork(pulse.NO_SOURCE),\n fields = _.fields,\n as = fieldNames(fields, _.as || []),\n index = _.index || null,\n m = as.length;\n\n // remove any previous results\n out.rem = this.value;\n\n // generate flattened tuples\n pulse.visit(pulse.SOURCE, function (t) {\n var arrays = fields.map(function (f) {\n return f(t);\n }),\n maxlen = arrays.reduce(function (l, a) {\n return Math.max(l, a.length);\n }, 0);\n var i = 0,\n j,\n d,\n v;\n for (; i < maxlen; ++i) {\n d = derive(t);\n for (j = 0; j < m; ++j) {\n d[as[j]] = (v = arrays[j][i]) == null ? null : v;\n }\n if (index) {\n d[index] = i;\n }\n out.add.push(d);\n }\n });\n this.value = out.source = out.add;\n if (index) out.modifies(index);\n return out.modifies(as);\n }\n});\n\n/**\n * Folds one more tuple fields into multiple tuples in which the field\n * name and values are available under new 'key' and 'value' fields.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.fields - An array of field accessors\n * for the tuple fields that should be folded.\n * @param {Array} [params.as] - Output field names for folded key\n * and value fields, defaults to ['key', 'value'].\n */\nfunction Fold(params) {\n Transform.call(this, [], params);\n}\nFold.Definition = {\n 'type': 'Fold',\n 'metadata': {\n 'generates': true\n },\n 'params': [{\n 'name': 'fields',\n 'type': 'field',\n 'array': true,\n 'required': true\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': 2,\n 'default': ['key', 'value']\n }]\n};\ninherits(Fold, Transform, {\n transform: function transform(_, pulse) {\n var out = pulse.fork(pulse.NO_SOURCE),\n fields = _.fields,\n fnames = fields.map(accessorName),\n as = _.as || ['key', 'value'],\n k = as[0],\n v = as[1],\n n = fields.length;\n out.rem = this.value;\n pulse.visit(pulse.SOURCE, function (t) {\n for (var i = 0, d; i < n; ++i) {\n d = derive(t);\n d[k] = fnames[i];\n d[v] = fields[i](t);\n out.add.push(d);\n }\n });\n this.value = out.source = out.add;\n return out.modifies(as);\n }\n});\n\n/**\n * Invokes a function for each data tuple and saves the results as a new field.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.expr - The formula function to invoke for each tuple.\n * @param {string} params.as - The field name under which to save the result.\n * @param {boolean} [params.initonly=false] - If true, the formula is applied to\n * added tuples only, and does not update in response to modifications.\n */\nfunction Formula(params) {\n Transform.call(this, null, params);\n}\nFormula.Definition = {\n 'type': 'Formula',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'expr',\n 'type': 'expr',\n 'required': true\n }, {\n 'name': 'as',\n 'type': 'string',\n 'required': true\n }, {\n 'name': 'initonly',\n 'type': 'boolean'\n }]\n};\ninherits(Formula, Transform, {\n transform: function transform(_, pulse) {\n var func = _.expr,\n as = _.as,\n mod = _.modified(),\n flag = _.initonly ? pulse.ADD : mod ? pulse.SOURCE : pulse.modified(func.fields) || pulse.modified(as) ? pulse.ADD_MOD : pulse.ADD;\n if (mod) {\n // parameters updated, need to reflow\n pulse = pulse.materialize().reflow(true);\n }\n if (!_.initonly) {\n pulse.modifies(as);\n }\n return pulse.visit(flag, function (t) {\n return t[as] = func(t, _);\n });\n }\n});\n\n/**\n * Generates data tuples using a provided generator function.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(Parameters): object} params.generator - A tuple generator\n * function. This function is given the operator parameters as input.\n * Changes to any additional parameters will not trigger re-calculation\n * of previously generated tuples. Only future tuples are affected.\n * @param {number} params.size - The number of tuples to produce.\n */\nfunction Generate(params) {\n Transform.call(this, [], params);\n}\ninherits(Generate, Transform, {\n transform: function transform(_, pulse) {\n var out = pulse.fork(pulse.ALL),\n gen = _.generator;\n var data = this.value,\n num = _.size - data.length,\n add,\n rem,\n t;\n if (num > 0) {\n // need more tuples, generate and add\n for (add = []; --num >= 0;) {\n add.push(t = ingest(gen(_)));\n data.push(t);\n }\n out.add = out.add.length ? out.materialize(out.ADD).add.concat(add) : add;\n } else {\n // need fewer tuples, remove\n rem = data.slice(0, -num);\n out.rem = out.rem.length ? out.materialize(out.REM).rem.concat(rem) : rem;\n data = data.slice(-num);\n }\n out.source = this.value = data;\n return out;\n }\n});\nvar Methods = {\n value: 'value',\n median: median,\n mean: mean,\n min: min,\n max: max\n};\nvar Empty = [];\n\n/**\n * Impute missing values.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to impute.\n * @param {Array} [params.groupby] - An array of\n * accessors to determine series within which to perform imputation.\n * @param {function(object): *} params.key - An accessor for a key value.\n * Each key value should be unique within a group. New tuples will be\n * imputed for any key values that are not found within a group.\n * @param {Array<*>} [params.keyvals] - Optional array of required key\n * values. New tuples will be imputed for any key values that are not\n * found within a group. In addition, these values will be automatically\n * augmented with the key values observed in the input data.\n * @param {string} [method='value'] - The imputation method to use. One of\n * 'value', 'mean', 'median', 'max', 'min'.\n * @param {*} [value=0] - The constant value to use for imputation\n * when using method 'value'.\n */\nfunction Impute(params) {\n Transform.call(this, [], params);\n}\nImpute.Definition = {\n 'type': 'Impute',\n 'metadata': {\n 'changes': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'key',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'keyvals',\n 'array': true\n }, {\n 'name': 'groupby',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'method',\n 'type': 'enum',\n 'default': 'value',\n 'values': ['value', 'mean', 'median', 'max', 'min']\n }, {\n 'name': 'value',\n 'default': 0\n }]\n};\nfunction getValue(_) {\n var m = _.method || Methods.value,\n v;\n if (Methods[m] == null) {\n error('Unrecognized imputation method: ' + m);\n } else if (m === Methods.value) {\n v = _.value !== undefined ? _.value : 0;\n return function () {\n return v;\n };\n } else {\n return Methods[m];\n }\n}\nfunction getField(_) {\n var f = _.field;\n return function (t) {\n return t ? f(t) : NaN;\n };\n}\ninherits(Impute, Transform, {\n transform: function transform(_, pulse) {\n var out = pulse.fork(pulse.ALL),\n impute = getValue(_),\n field = getField(_),\n fName = accessorName(_.field),\n kName = accessorName(_.key),\n gNames = (_.groupby || []).map(accessorName),\n groups = partition(pulse.source, _.groupby, _.key, _.keyvals),\n curr = [],\n prev = this.value,\n m = groups.domain.length,\n group,\n value,\n gVals,\n kVal,\n g,\n i,\n j,\n l,\n n,\n t;\n for (g = 0, l = groups.length; g < l; ++g) {\n group = groups[g];\n gVals = group.values;\n value = NaN;\n\n // add tuples for missing values\n for (j = 0; j < m; ++j) {\n if (group[j] != null) continue;\n kVal = groups.domain[j];\n t = {\n _impute: true\n };\n for (i = 0, n = gVals.length; i < n; ++i) t[gNames[i]] = gVals[i];\n t[kName] = kVal;\n t[fName] = Number.isNaN(value) ? value = impute(group, field) : value;\n curr.push(ingest(t));\n }\n }\n\n // update pulse with imputed tuples\n if (curr.length) out.add = out.materialize(out.ADD).add.concat(curr);\n if (prev.length) out.rem = out.materialize(out.REM).rem.concat(prev);\n this.value = curr;\n return out;\n }\n});\nfunction partition(data, groupby, key, keyvals) {\n var get = function get(f) {\n return f(t);\n },\n groups = [],\n domain = keyvals ? keyvals.slice() : [],\n kMap = {},\n gMap = {},\n gVals,\n gKey,\n group,\n i,\n j,\n k,\n n,\n t;\n domain.forEach(function (k, i) {\n return kMap[k] = i + 1;\n });\n for (i = 0, n = data.length; i < n; ++i) {\n t = data[i];\n k = key(t);\n j = kMap[k] || (kMap[k] = domain.push(k));\n gKey = (gVals = groupby ? groupby.map(get) : Empty) + '';\n if (!(group = gMap[gKey])) {\n group = gMap[gKey] = [];\n groups.push(group);\n group.values = gVals;\n }\n group[j - 1] = t;\n }\n groups.domain = domain;\n return groups;\n}\n\n/**\n * Extend input tuples with aggregate values.\n * Calcuates aggregate values and joins them with the input stream.\n * @constructor\n */\nfunction JoinAggregate(params) {\n Aggregate.call(this, params);\n}\nJoinAggregate.Definition = {\n 'type': 'JoinAggregate',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'groupby',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'fields',\n 'type': 'field',\n 'null': true,\n 'array': true\n }, {\n 'name': 'ops',\n 'type': 'enum',\n 'array': true,\n 'values': ValidAggregateOps\n }, {\n 'name': 'as',\n 'type': 'string',\n 'null': true,\n 'array': true\n }, {\n 'name': 'key',\n 'type': 'field'\n }]\n};\ninherits(JoinAggregate, Aggregate, {\n transform: function transform(_, pulse) {\n var aggr = this,\n mod = _.modified();\n var cells;\n\n // process all input tuples to calculate aggregates\n if (aggr.value && (mod || pulse.modified(aggr._inputs, true))) {\n cells = aggr.value = mod ? aggr.init(_) : {};\n pulse.visit(pulse.SOURCE, function (t) {\n return aggr.add(t);\n });\n } else {\n cells = aggr.value = aggr.value || this.init(_);\n pulse.visit(pulse.REM, function (t) {\n return aggr.rem(t);\n });\n pulse.visit(pulse.ADD, function (t) {\n return aggr.add(t);\n });\n }\n\n // update aggregation cells\n aggr.changes();\n\n // write aggregate values to input tuples\n pulse.visit(pulse.SOURCE, function (t) {\n extend(t, cells[aggr.cellkey(t)].tuple);\n });\n return pulse.reflow(mod).modifies(this._outputs);\n },\n changes: function changes() {\n var adds = this._adds,\n mods = this._mods;\n var i, n;\n for (i = 0, n = this._alen; i < n; ++i) {\n this.celltuple(adds[i]);\n adds[i] = null; // for garbage collection\n }\n\n for (i = 0, n = this._mlen; i < n; ++i) {\n this.celltuple(mods[i]);\n mods[i] = null; // for garbage collection\n }\n\n this._alen = this._mlen = 0; // reset list of active cells\n }\n});\n\n/**\n * Compute kernel density estimates (KDE) for one or more data groups.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array} [params.groupby] - An array of accessors\n * to groupby.\n * @param {function(object): *} params.field - An accessor for the data field\n * to estimate.\n * @param {number} [params.bandwidth=0] - The KDE kernel bandwidth.\n * If zero or unspecified, the bandwidth is automatically determined.\n * @param {boolean} [params.counts=false] - A boolean flag indicating if the\n * output values should be probability estimates (false, default) or\n * smoothed counts (true).\n * @param {string} [params.cumulative=false] - A boolean flag indicating if a\n * density (false) or cumulative distribution (true) should be generated.\n * @param {Array} [params.extent] - The domain extent over which to\n * plot the density. If unspecified, the [min, max] data extent is used.\n * @param {string} [params.resolve='independent'] - Indicates how parameters for\n * multiple densities should be resolved. If \"independent\" (the default), each\n * density may have its own domain extent and dynamic number of curve sample\n * steps. If \"shared\", the KDE transform will ensure that all densities are\n * defined over a shared domain and curve steps, enabling stacking.\n * @param {number} [params.minsteps=25] - The minimum number of curve samples\n * for plotting the density.\n * @param {number} [params.maxsteps=200] - The maximum number of curve samples\n * for plotting the density.\n * @param {number} [params.steps] - The exact number of curve samples for\n * plotting the density. If specified, overrides both minsteps and maxsteps\n * to set an exact number of uniform samples. Useful in conjunction with\n * a fixed extent to ensure consistent sample points for stacked densities.\n */\nfunction KDE(params) {\n Transform.call(this, null, params);\n}\nKDE.Definition = {\n 'type': 'KDE',\n 'metadata': {\n 'generates': true\n },\n 'params': [{\n 'name': 'groupby',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'field',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'cumulative',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'counts',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'bandwidth',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'extent',\n 'type': 'number',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'resolve',\n 'type': 'enum',\n 'values': ['shared', 'independent'],\n 'default': 'independent'\n }, {\n 'name': 'steps',\n 'type': 'number'\n }, {\n 'name': 'minsteps',\n 'type': 'number',\n 'default': 25\n }, {\n 'name': 'maxsteps',\n 'type': 'number',\n 'default': 200\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'default': ['value', 'density']\n }]\n};\ninherits(KDE, Transform, {\n transform: function transform(_, pulse) {\n var out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n if (!this.value || pulse.changed() || _.modified()) {\n var _source = pulse.materialize(pulse.SOURCE).source,\n groups = partition$1(_source, _.groupby, _.field),\n names = (_.groupby || []).map(accessorName),\n bandwidth = _.bandwidth,\n method = _.cumulative ? 'cdf' : 'pdf',\n as = _.as || ['value', 'density'],\n values = [];\n var domain = _.extent,\n minsteps = _.steps || _.minsteps || 25,\n maxsteps = _.steps || _.maxsteps || 200;\n if (method !== 'pdf' && method !== 'cdf') {\n error('Invalid density method: ' + method);\n }\n if (_.resolve === 'shared') {\n if (!domain) domain = extent(_source, _.field);\n minsteps = maxsteps = _.steps || maxsteps;\n }\n groups.forEach(function (g) {\n var density = randomKDE(g, bandwidth)[method],\n scale = _.counts ? g.length : 1,\n local = domain || extent(g);\n sampleCurve(density, local, minsteps, maxsteps).forEach(function (v) {\n var t = {};\n for (var i = 0; i < names.length; ++i) {\n t[names[i]] = g.dims[i];\n }\n t[as[0]] = v[0];\n t[as[1]] = v[1] * scale;\n values.push(ingest(t));\n });\n });\n if (this.value) out.rem = this.value;\n this.value = out.add = out.source = values;\n }\n return out;\n }\n});\n\n/**\n * Generates a key function.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array} params.fields - The field name(s) for the key function.\n * @param {boolean} params.flat - A boolean flag indicating if the field names\n * should be treated as flat property names, side-stepping nested field\n * lookups normally indicated by dot or bracket notation.\n */\nfunction Key(params) {\n Operator.call(this, null, update$2, params);\n}\ninherits(Key, Operator);\nfunction update$2(_) {\n return this.value && !_.modified() ? this.value : key(_.fields, _.flat);\n}\n\n/**\n * Load and parse data from an external source. Marshalls parameter\n * values and then invokes the Dataflow request method.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {string} params.url - The URL to load from.\n * @param {object} params.format - The data format options.\n */\nfunction Load(params) {\n Transform.call(this, [], params);\n this._pending = null;\n}\ninherits(Load, Transform, {\n transform: function transform(_, pulse) {\n var _this7 = this;\n var df = pulse.dataflow;\n if (this._pending) {\n // update state and return pulse\n return output(this, pulse, this._pending);\n }\n if (stop(_)) return pulse.StopPropagation;\n if (_.values) {\n // parse and ingest values, return output pulse\n return output(this, pulse, df.parse(_.values, _.format));\n } else if (_.async) {\n // return promise for non-blocking async loading\n var p = df.request(_.url, _.format).then(function (res) {\n _this7._pending = array(res.data);\n return function (df) {\n return df.touch(_this7);\n };\n });\n return {\n async: p\n };\n } else {\n // return promise for synchronous loading\n return df.request(_.url, _.format).then(function (res) {\n return output(_this7, pulse, array(res.data));\n });\n }\n }\n});\nfunction stop(_) {\n return _.modified('async') && !(_.modified('values') || _.modified('url') || _.modified('format'));\n}\nfunction output(op, pulse, data) {\n data.forEach(ingest);\n var out = pulse.fork(pulse.NO_FIELDS & pulse.NO_SOURCE);\n out.rem = op.value;\n op.value = out.source = out.add = data;\n op._pending = null;\n if (out.rem.length) out.clean(true);\n return out;\n}\n\n/**\n * Extend tuples by joining them with values from a lookup table.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Map} params.index - The lookup table map.\n * @param {Array} params.as - Output field names for each lookup value.\n * @param {*} [params.default] - A default value to use if lookup fails.\n */\nfunction Lookup(params) {\n Transform.call(this, {}, params);\n}\nLookup.Definition = {\n 'type': 'Lookup',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'index',\n 'type': 'index',\n 'params': [{\n 'name': 'from',\n 'type': 'data',\n 'required': true\n }, {\n 'name': 'key',\n 'type': 'field',\n 'required': true\n }]\n }, {\n 'name': 'values',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'fields',\n 'type': 'field',\n 'array': true,\n 'required': true\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true\n }, {\n 'name': 'default',\n 'default': null\n }]\n};\ninherits(Lookup, Transform, {\n transform: function transform(_, pulse) {\n var keys = _.fields,\n index = _.index,\n values = _.values,\n defaultValue = _.default == null ? null : _.default,\n reset = _.modified(),\n n = keys.length;\n var flag = reset ? pulse.SOURCE : pulse.ADD,\n out = pulse,\n as = _.as,\n set,\n m,\n mods;\n if (values) {\n m = values.length;\n if (n > 1 && !as) {\n error('Multi-field lookup requires explicit \"as\" parameter.');\n }\n if (as && as.length !== n * m) {\n error('The \"as\" parameter has too few output field names.');\n }\n as = as || values.map(accessorName);\n set = function set(t) {\n for (var i = 0, k = 0, j, v; i < n; ++i) {\n v = index.get(keys[i](t));\n if (v == null) for (j = 0; j < m; ++j, ++k) t[as[k]] = defaultValue;else for (j = 0; j < m; ++j, ++k) t[as[k]] = values[j](v);\n }\n };\n } else {\n if (!as) {\n error('Missing output field names.');\n }\n set = function set(t) {\n for (var i = 0, v; i < n; ++i) {\n v = index.get(keys[i](t));\n t[as[i]] = v == null ? defaultValue : v;\n }\n };\n }\n if (reset) {\n out = pulse.reflow(true);\n } else {\n mods = keys.some(function (k) {\n return pulse.modified(k.fields);\n });\n flag |= mods ? pulse.MOD : 0;\n }\n pulse.visit(flag, set);\n return out.modifies(as);\n }\n});\n\n/**\n * Computes global min/max extents over a collection of extents.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array>} params.extents - The input extents.\n */\nfunction MultiExtent(params) {\n Operator.call(this, null, update$1, params);\n}\ninherits(MultiExtent, Operator);\nfunction update$1(_) {\n if (this.value && !_.modified()) {\n return this.value;\n }\n var ext = _.extents,\n n = ext.length;\n var min = +Infinity,\n max = -Infinity,\n i,\n e;\n for (i = 0; i < n; ++i) {\n e = ext[i];\n if (e[0] < min) min = e[0];\n if (e[1] > max) max = e[1];\n }\n return [min, max];\n}\n\n/**\n * Merge a collection of value arrays.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array>} params.values - The input value arrrays.\n */\nfunction MultiValues(params) {\n Operator.call(this, null, update, params);\n}\ninherits(MultiValues, Operator);\nfunction update(_) {\n return this.value && !_.modified() ? this.value : _.values.reduce(function (data, _) {\n return data.concat(_);\n }, []);\n}\n\n/**\n * Operator whose value is simply its parameter hash. This operator is\n * useful for enabling reactive updates to values of nested objects.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nfunction Params(params) {\n Transform.call(this, null, params);\n}\ninherits(Params, Transform, {\n transform: function transform(_, pulse) {\n this.modified(_.modified());\n this.value = _;\n return pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS); // do not pass tuples\n }\n});\n\n/**\n * Aggregate and pivot selected field values to become new fields.\n * This operator is useful to construction cross-tabulations.\n * @constructor\n * @param {Array} [params.groupby] - An array of accessors\n * to groupby. These fields act just like groupby fields of an Aggregate transform.\n * @param {function(object): *} params.field - The field to pivot on. The unique\n * values of this field become new field names in the output stream.\n * @param {function(object): *} params.value - The field to populate pivoted fields.\n * The aggregate values of this field become the values of the new pivoted fields.\n * @param {string} [params.op] - The aggregation operation for the value field,\n * applied per cell in the output stream. The default is \"sum\".\n * @param {number} [params.limit] - An optional parameter indicating the maximum\n * number of pivoted fields to generate. The pivoted field names are sorted in\n * ascending order prior to enforcing the limit.\n */\nfunction Pivot(params) {\n Aggregate.call(this, params);\n}\nPivot.Definition = {\n 'type': 'Pivot',\n 'metadata': {\n 'generates': true,\n 'changes': true\n },\n 'params': [{\n 'name': 'groupby',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'field',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'value',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'op',\n 'type': 'enum',\n 'values': ValidAggregateOps,\n 'default': 'sum'\n }, {\n 'name': 'limit',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'key',\n 'type': 'field'\n }]\n};\ninherits(Pivot, Aggregate, {\n _transform: Aggregate.prototype.transform,\n transform: function transform(_, pulse) {\n return this._transform(aggregateParams(_, pulse), pulse);\n }\n});\n\n// Shoehorn a pivot transform into an aggregate transform!\n// First collect all unique pivot field values.\n// Then generate aggregate fields for each output pivot field.\nfunction aggregateParams(_, pulse) {\n var key = _.field,\n value = _.value,\n op = (_.op === 'count' ? '__count__' : _.op) || 'sum',\n fields = accessorFields(key).concat(accessorFields(value)),\n keys = pivotKeys(key, _.limit || 0, pulse);\n\n // if data stream content changes, pivot fields may change\n // flag parameter modification to ensure re-initialization\n if (pulse.changed()) _.set('__pivot__', null, null, true);\n return {\n key: _.key,\n groupby: _.groupby,\n ops: keys.map(function () {\n return op;\n }),\n fields: keys.map(function (k) {\n return get(k, key, value, fields);\n }),\n as: keys.map(function (k) {\n return k + '';\n }),\n modified: _.modified.bind(_)\n };\n}\n\n// Generate aggregate field accessor.\n// Output NaN for non-existent values; aggregator will ignore!\nfunction get(k, key, value, fields) {\n return accessor(function (d) {\n return key(d) === k ? value(d) : NaN;\n }, fields, k + '');\n}\n\n// Collect (and optionally limit) all unique pivot values.\nfunction pivotKeys(key, limit, pulse) {\n var map = {},\n list = [];\n pulse.visit(pulse.SOURCE, function (t) {\n var k = key(t);\n if (!map[k]) {\n map[k] = 1;\n list.push(k);\n }\n });\n list.sort(ascending);\n return limit ? list.slice(0, limit) : list;\n}\n\n/**\n * Partitions pre-faceted data into tuple subflows.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(Dataflow, string): Operator} params.subflow - A function\n * that generates a subflow of operators and returns its root operator.\n * @param {function(object): Array} params.field - The field\n * accessor for an array of subflow tuple objects.\n */\nfunction PreFacet(params) {\n Facet.call(this, params);\n}\ninherits(PreFacet, Facet, {\n transform: function transform(_, pulse) {\n var _this8 = this;\n var flow = _.subflow,\n field = _.field,\n subflow = function subflow(t) {\n return _this8.subflow(tupleid(t), flow, pulse, t);\n };\n if (_.modified('field') || field && pulse.modified(accessorFields(field))) {\n error('PreFacet does not support field modification.');\n }\n this.initTargets(); // reset list of active subflows\n\n if (field) {\n pulse.visit(pulse.MOD, function (t) {\n var sf = subflow(t);\n field(t).forEach(function (_) {\n return sf.mod(_);\n });\n });\n pulse.visit(pulse.ADD, function (t) {\n var sf = subflow(t);\n field(t).forEach(function (_) {\n return sf.add(ingest(_));\n });\n });\n pulse.visit(pulse.REM, function (t) {\n var sf = subflow(t);\n field(t).forEach(function (_) {\n return sf.rem(_);\n });\n });\n } else {\n pulse.visit(pulse.MOD, function (t) {\n return subflow(t).mod(t);\n });\n pulse.visit(pulse.ADD, function (t) {\n return subflow(t).add(t);\n });\n pulse.visit(pulse.REM, function (t) {\n return subflow(t).rem(t);\n });\n }\n if (pulse.clean()) {\n pulse.runAfter(function () {\n return _this8.clean();\n });\n }\n return pulse;\n }\n});\n\n/**\n * Performs a relational projection, copying selected fields from source\n * tuples to a new set of derived tuples.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array} [params.as] - Output field names for each projected\n * field. Any unspecified fields will use the field name provided by\n * the field accessor.\n */\nfunction Project(params) {\n Transform.call(this, null, params);\n}\nProject.Definition = {\n 'type': 'Project',\n 'metadata': {\n 'generates': true,\n 'changes': true\n },\n 'params': [{\n 'name': 'fields',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'as',\n 'type': 'string',\n 'null': true,\n 'array': true\n }]\n};\ninherits(Project, Transform, {\n transform: function transform(_, pulse) {\n var out = pulse.fork(pulse.NO_SOURCE),\n fields = _.fields,\n as = fieldNames(_.fields, _.as || []),\n derive = fields ? function (s, t) {\n return project(s, t, fields, as);\n } : rederive;\n var lut;\n if (this.value) {\n lut = this.value;\n } else {\n pulse = pulse.addAll();\n lut = this.value = {};\n }\n pulse.visit(pulse.REM, function (t) {\n var id = tupleid(t);\n out.rem.push(lut[id]);\n lut[id] = null;\n });\n pulse.visit(pulse.ADD, function (t) {\n var dt = derive(t, ingest({}));\n lut[tupleid(t)] = dt;\n out.add.push(dt);\n });\n pulse.visit(pulse.MOD, function (t) {\n out.mod.push(derive(t, lut[tupleid(t)]));\n });\n return out;\n }\n});\nfunction project(s, t, fields, as) {\n for (var i = 0, n = fields.length; i < n; ++i) {\n t[as[i]] = fields[i](s);\n }\n return t;\n}\n\n/**\n * Proxy the value of another operator as a pure signal value.\n * Ensures no tuples are propagated.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {*} params.value - The value to proxy, becomes the value of this operator.\n */\nfunction Proxy(params) {\n Transform.call(this, null, params);\n}\ninherits(Proxy, Transform, {\n transform: function transform(_, pulse) {\n this.value = _.value;\n return _.modified('value') ? pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS) : pulse.StopPropagation;\n }\n});\n\n/**\n * Generates sample quantile values from an input data stream.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - An accessor for the data field\n * over which to calculate quantile values.\n * @param {Array} [params.groupby] - An array of accessors\n * to groupby.\n * @param {Array} [params.probs] - An array of probabilities in\n * the range (0, 1) for which to compute quantile values. If not specified,\n * the *step* parameter will be used.\n * @param {Array} [params.step=0.01] - A probability step size for\n * sampling quantile values. All values from one-half the step size up to\n * 1 (exclusive) will be sampled. This parameter is only used if the\n * *quantiles* parameter is not provided.\n */\nfunction Quantile(params) {\n Transform.call(this, null, params);\n}\nQuantile.Definition = {\n 'type': 'Quantile',\n 'metadata': {\n 'generates': true,\n 'changes': true\n },\n 'params': [{\n 'name': 'groupby',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'field',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'probs',\n 'type': 'number',\n 'array': true\n }, {\n 'name': 'step',\n 'type': 'number',\n 'default': 0.01\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'default': ['prob', 'value']\n }]\n};\nvar EPSILON = 1e-14;\ninherits(Quantile, Transform, {\n transform: function transform(_, pulse) {\n var out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n as = _.as || ['prob', 'value'];\n if (this.value && !_.modified() && !pulse.changed()) {\n out.source = this.value;\n return out;\n }\n var source = pulse.materialize(pulse.SOURCE).source,\n groups = partition$1(source, _.groupby, _.field),\n names = (_.groupby || []).map(accessorName),\n values = [],\n step = _.step || 0.01,\n p = _.probs || range(step / 2, 1 - EPSILON, step),\n n = p.length;\n groups.forEach(function (g) {\n var q = quantiles(g, p);\n for (var i = 0; i < n; ++i) {\n var t = {};\n for (var _i2 = 0; _i2 < names.length; ++_i2) {\n t[names[_i2]] = g.dims[_i2];\n }\n t[as[0]] = p[i];\n t[as[1]] = q[i];\n values.push(ingest(t));\n }\n });\n if (this.value) out.rem = this.value;\n this.value = out.add = out.source = values;\n return out;\n }\n});\n\n/**\n * Relays a data stream between data processing pipelines.\n * If the derive parameter is set, this transform will create derived\n * copies of observed tuples. This provides derived data streams in which\n * modifications to the tuples do not pollute an upstream data source.\n * @param {object} params - The parameters for this operator.\n * @param {number} [params.derive=false] - Boolean flag indicating if\n * the transform should make derived copies of incoming tuples.\n * @constructor\n */\nfunction Relay(params) {\n Transform.call(this, null, params);\n}\ninherits(Relay, Transform, {\n transform: function transform(_, pulse) {\n var out, lut;\n if (this.value) {\n lut = this.value;\n } else {\n out = pulse = pulse.addAll();\n lut = this.value = {};\n }\n if (_.derive) {\n out = pulse.fork(pulse.NO_SOURCE);\n pulse.visit(pulse.REM, function (t) {\n var id = tupleid(t);\n out.rem.push(lut[id]);\n lut[id] = null;\n });\n pulse.visit(pulse.ADD, function (t) {\n var dt = derive(t);\n lut[tupleid(t)] = dt;\n out.add.push(dt);\n });\n pulse.visit(pulse.MOD, function (t) {\n var dt = lut[tupleid(t)];\n for (var k in t) {\n dt[k] = t[k];\n // down stream writes may overwrite re-derived tuples\n // conservatively mark all source fields as modified\n out.modifies(k);\n }\n out.mod.push(dt);\n });\n }\n return out;\n }\n});\n\n/**\n * Samples tuples passing through this operator.\n * Uses reservoir sampling to maintain a representative sample.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {number} [params.size=1000] - The maximum number of samples.\n */\nfunction Sample(params) {\n Transform.call(this, [], params);\n this.count = 0;\n}\nSample.Definition = {\n 'type': 'Sample',\n 'metadata': {},\n 'params': [{\n 'name': 'size',\n 'type': 'number',\n 'default': 1000\n }]\n};\ninherits(Sample, Transform, {\n transform: function transform(_, pulse) {\n var out = pulse.fork(pulse.NO_SOURCE),\n mod = _.modified('size'),\n num = _.size,\n map = this.value.reduce(function (m, t) {\n return m[tupleid(t)] = 1, m;\n }, {});\n var res = this.value,\n cnt = this.count,\n cap = 0;\n\n // sample reservoir update function\n function update(t) {\n var p, idx;\n if (res.length < num) {\n res.push(t);\n } else {\n idx = ~~((cnt + 1) * random());\n if (idx < res.length && idx >= cap) {\n p = res[idx];\n if (map[tupleid(p)]) out.rem.push(p); // eviction\n res[idx] = t;\n }\n }\n ++cnt;\n }\n if (pulse.rem.length) {\n // find all tuples that should be removed, add to output\n pulse.visit(pulse.REM, function (t) {\n var id = tupleid(t);\n if (map[id]) {\n map[id] = -1;\n out.rem.push(t);\n }\n --cnt;\n });\n\n // filter removed tuples out of the sample reservoir\n res = res.filter(function (t) {\n return map[tupleid(t)] !== -1;\n });\n }\n if ((pulse.rem.length || mod) && res.length < num && pulse.source) {\n // replenish sample if backing data source is available\n cap = cnt = res.length;\n pulse.visit(pulse.SOURCE, function (t) {\n // update, but skip previously sampled tuples\n if (!map[tupleid(t)]) update(t);\n });\n cap = -1;\n }\n if (mod && res.length > num) {\n var n = res.length - num;\n for (var i = 0; i < n; ++i) {\n map[tupleid(res[i])] = -1;\n out.rem.push(res[i]);\n }\n res = res.slice(n);\n }\n if (pulse.mod.length) {\n // propagate modified tuples in the sample reservoir\n pulse.visit(pulse.MOD, function (t) {\n if (map[tupleid(t)]) out.mod.push(t);\n });\n }\n if (pulse.add.length) {\n // update sample reservoir\n pulse.visit(pulse.ADD, update);\n }\n if (pulse.add.length || cap < 0) {\n // output newly added tuples\n out.add = res.filter(function (t) {\n return !map[tupleid(t)];\n });\n }\n this.count = cnt;\n this.value = out.source = res;\n return out;\n }\n});\n\n/**\n * Generates data tuples for a specified sequence range of numbers.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {number} params.start - The first number in the sequence.\n * @param {number} params.stop - The last number (exclusive) in the sequence.\n * @param {number} [params.step=1] - The step size between numbers in the sequence.\n */\nfunction Sequence(params) {\n Transform.call(this, null, params);\n}\nSequence.Definition = {\n 'type': 'Sequence',\n 'metadata': {\n 'generates': true,\n 'changes': true\n },\n 'params': [{\n 'name': 'start',\n 'type': 'number',\n 'required': true\n }, {\n 'name': 'stop',\n 'type': 'number',\n 'required': true\n }, {\n 'name': 'step',\n 'type': 'number',\n 'default': 1\n }, {\n 'name': 'as',\n 'type': 'string',\n 'default': 'data'\n }]\n};\ninherits(Sequence, Transform, {\n transform: function transform(_, pulse) {\n if (this.value && !_.modified()) return;\n var out = pulse.materialize().fork(pulse.MOD),\n as = _.as || 'data';\n out.rem = this.value ? pulse.rem.concat(this.value) : pulse.rem;\n this.value = range(_.start, _.stop, _.step || 1).map(function (v) {\n var t = {};\n t[as] = v;\n return ingest(t);\n });\n out.add = pulse.add.concat(this.value);\n return out;\n }\n});\n\n/**\n * Propagates a new pulse without any tuples so long as the input\n * pulse contains some added, removed or modified tuples.\n * @param {object} params - The parameters for this operator.\n * @constructor\n */\nfunction Sieve(params) {\n Transform.call(this, null, params);\n this.modified(true); // always treat as modified\n}\n\ninherits(Sieve, Transform, {\n transform: function transform(_, pulse) {\n this.value = pulse.source;\n return pulse.changed() ? pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS) : pulse.StopPropagation;\n }\n});\n\n/**\n * Discretize dates to specific time units.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The data field containing date/time values.\n */\nfunction TimeUnit(params) {\n Transform.call(this, null, params);\n}\nvar OUTPUT = ['unit0', 'unit1'];\nTimeUnit.Definition = {\n 'type': 'TimeUnit',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'interval',\n 'type': 'boolean',\n 'default': true\n }, {\n 'name': 'units',\n 'type': 'enum',\n 'values': TIME_UNITS,\n 'array': true\n }, {\n 'name': 'step',\n 'type': 'number',\n 'default': 1\n }, {\n 'name': 'maxbins',\n 'type': 'number',\n 'default': 40\n }, {\n 'name': 'extent',\n 'type': 'date',\n 'array': true\n }, {\n 'name': 'timezone',\n 'type': 'enum',\n 'default': 'local',\n 'values': ['local', 'utc']\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': 2,\n 'default': OUTPUT\n }]\n};\ninherits(TimeUnit, Transform, {\n transform: function transform(_, pulse) {\n var field = _.field,\n band = _.interval !== false,\n utc = _.timezone === 'utc',\n floor = this._floor(_, pulse),\n offset = (utc ? utcInterval : timeInterval)(floor.unit).offset,\n as = _.as || OUTPUT,\n u0 = as[0],\n u1 = as[1],\n step = floor.step;\n var min = floor.start || Infinity,\n max = floor.stop || -Infinity,\n flag = pulse.ADD;\n if (_.modified() || pulse.changed(pulse.REM) || pulse.modified(accessorFields(field))) {\n pulse = pulse.reflow(true);\n flag = pulse.SOURCE;\n min = Infinity;\n max = -Infinity;\n }\n pulse.visit(flag, function (t) {\n var v = field(t);\n var a, b;\n if (v == null) {\n t[u0] = null;\n if (band) t[u1] = null;\n } else {\n t[u0] = a = b = floor(v);\n if (band) t[u1] = b = offset(a, step);\n if (a < min) min = a;\n if (b > max) max = b;\n }\n });\n floor.start = min;\n floor.stop = max;\n return pulse.modifies(band ? as : u0);\n },\n _floor: function _floor(_, pulse) {\n var utc = _.timezone === 'utc';\n\n // get parameters\n var _ref = _.units ? {\n units: _.units,\n step: _.step || 1\n } : timeBin({\n extent: _.extent || extent(pulse.materialize(pulse.SOURCE).source, _.field),\n maxbins: _.maxbins\n }),\n units = _ref.units,\n step = _ref.step;\n\n // check / standardize time units\n var tunits = timeUnits(units),\n prev = this.value || {},\n floor = (utc ? utcFloor : timeFloor)(tunits, step);\n floor.unit = peek(tunits);\n floor.units = tunits;\n floor.step = step;\n floor.start = prev.start;\n floor.stop = prev.stop;\n return this.value = floor;\n }\n});\n\n/**\n * An index that maps from unique, string-coerced, field values to tuples.\n * Assumes that the field serves as a unique key with no duplicate values.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The field accessor to index.\n */\nfunction TupleIndex(params) {\n Transform.call(this, fastmap(), params);\n}\ninherits(TupleIndex, Transform, {\n transform: function transform(_, pulse) {\n var df = pulse.dataflow,\n field = _.field,\n index = this.value,\n set = function set(t) {\n return index.set(field(t), t);\n };\n var mod = true;\n if (_.modified('field') || pulse.modified(field.fields)) {\n index.clear();\n pulse.visit(pulse.SOURCE, set);\n } else if (pulse.changed()) {\n pulse.visit(pulse.REM, function (t) {\n return index.delete(field(t));\n });\n pulse.visit(pulse.ADD, set);\n } else {\n mod = false;\n }\n this.modified(mod);\n if (index.empty > df.cleanThreshold) df.runAfter(index.clean);\n return pulse.fork();\n }\n});\n\n/**\n * Extracts an array of values. Assumes the source data has already been\n * reduced as needed (e.g., by an upstream Aggregate transform).\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The domain field to extract.\n * @param {function(*,*): number} [params.sort] - An optional\n * comparator function for sorting the values. The comparator will be\n * applied to backing tuples prior to value extraction.\n */\nfunction Values(params) {\n Transform.call(this, null, params);\n}\ninherits(Values, Transform, {\n transform: function transform(_, pulse) {\n var run = !this.value || _.modified('field') || _.modified('sort') || pulse.changed() || _.sort && pulse.modified(_.sort.fields);\n if (run) {\n this.value = (_.sort ? pulse.source.slice().sort(stableCompare(_.sort)) : pulse.source).map(_.field);\n }\n }\n});\nfunction WindowOp(op, field, param, as) {\n var fn = WindowOps[op](field, param);\n return {\n init: fn.init || zero,\n update: function update(w, t) {\n t[as] = fn.next(w);\n }\n };\n}\nvar WindowOps = {\n row_number: function row_number() {\n return {\n next: function next(w) {\n return w.index + 1;\n }\n };\n },\n rank: function rank() {\n var rank;\n return {\n init: function init() {\n return rank = 1;\n },\n next: function next(w) {\n var i = w.index,\n data = w.data;\n return i && w.compare(data[i - 1], data[i]) ? rank = i + 1 : rank;\n }\n };\n },\n dense_rank: function dense_rank() {\n var drank;\n return {\n init: function init() {\n return drank = 1;\n },\n next: function next(w) {\n var i = w.index,\n d = w.data;\n return i && w.compare(d[i - 1], d[i]) ? ++drank : drank;\n }\n };\n },\n percent_rank: function percent_rank() {\n var rank = WindowOps.rank(),\n _next = rank.next;\n return {\n init: rank.init,\n next: function next(w) {\n return (_next(w) - 1) / (w.data.length - 1);\n }\n };\n },\n cume_dist: function cume_dist() {\n var cume;\n return {\n init: function init() {\n return cume = 0;\n },\n next: function next(w) {\n var d = w.data,\n c = w.compare;\n var i = w.index;\n if (cume < i) {\n while (i + 1 < d.length && !c(d[i], d[i + 1])) ++i;\n cume = i;\n }\n return (1 + cume) / d.length;\n }\n };\n },\n ntile: function ntile(field, num) {\n num = +num;\n if (!(num > 0)) error('ntile num must be greater than zero.');\n var cume = WindowOps.cume_dist(),\n _next2 = cume.next;\n return {\n init: cume.init,\n next: function next(w) {\n return Math.ceil(num * _next2(w));\n }\n };\n },\n lag: function lag(field, offset) {\n offset = +offset || 1;\n return {\n next: function next(w) {\n var i = w.index - offset;\n return i >= 0 ? field(w.data[i]) : null;\n }\n };\n },\n lead: function lead(field, offset) {\n offset = +offset || 1;\n return {\n next: function next(w) {\n var i = w.index + offset,\n d = w.data;\n return i < d.length ? field(d[i]) : null;\n }\n };\n },\n first_value: function first_value(field) {\n return {\n next: function next(w) {\n return field(w.data[w.i0]);\n }\n };\n },\n last_value: function last_value(field) {\n return {\n next: function next(w) {\n return field(w.data[w.i1 - 1]);\n }\n };\n },\n nth_value: function nth_value(field, nth) {\n nth = +nth;\n if (!(nth > 0)) error('nth_value nth must be greater than zero.');\n return {\n next: function next(w) {\n var i = w.i0 + (nth - 1);\n return i < w.i1 ? field(w.data[i]) : null;\n }\n };\n },\n prev_value: function prev_value(field) {\n var prev;\n return {\n init: function init() {\n return prev = null;\n },\n next: function next(w) {\n var v = field(w.data[w.index]);\n return v != null ? prev = v : prev;\n }\n };\n },\n next_value: function next_value(field) {\n var v, i;\n return {\n init: function init() {\n return v = null, i = -1;\n },\n next: function next(w) {\n var d = w.data;\n return w.index <= i ? v : (i = find(field, d, w.index)) < 0 ? (i = d.length, v = null) : v = field(d[i]);\n }\n };\n }\n};\nfunction find(field, data, index) {\n for (var n = data.length; index < n; ++index) {\n var v = field(data[index]);\n if (v != null) return index;\n }\n return -1;\n}\nvar ValidWindowOps = Object.keys(WindowOps);\nfunction WindowState(_) {\n var ops = array(_.ops),\n fields = array(_.fields),\n params = array(_.params),\n as = array(_.as),\n outputs = this.outputs = [],\n windows = this.windows = [],\n inputs = {},\n map = {},\n counts = [],\n measures = [];\n var countOnly = true;\n function visitInputs(f) {\n array(accessorFields(f)).forEach(function (_) {\n return inputs[_] = 1;\n });\n }\n visitInputs(_.sort);\n ops.forEach(function (op, i) {\n var field = fields[i],\n mname = accessorName(field),\n name = measureName(op, mname, as[i]);\n visitInputs(field);\n outputs.push(name);\n\n // Window operation\n if (hasOwnProperty(WindowOps, op)) {\n windows.push(WindowOp(op, fields[i], params[i], name));\n }\n\n // Aggregate operation\n else {\n if (field == null && op !== 'count') {\n error('Null aggregate field specified.');\n }\n if (op === 'count') {\n counts.push(name);\n return;\n }\n countOnly = false;\n var m = map[mname];\n if (!m) {\n m = map[mname] = [];\n m.field = field;\n measures.push(m);\n }\n m.push(createMeasure(op, name));\n }\n });\n if (counts.length || measures.length) {\n this.cell = cell(measures, counts, countOnly);\n }\n this.inputs = Object.keys(inputs);\n}\nvar prototype = WindowState.prototype;\nprototype.init = function () {\n this.windows.forEach(function (_) {\n return _.init();\n });\n if (this.cell) this.cell.init();\n};\nprototype.update = function (w, t) {\n var cell = this.cell,\n wind = this.windows,\n data = w.data,\n m = wind && wind.length;\n var j;\n if (cell) {\n for (j = w.p0; j < w.i0; ++j) cell.rem(data[j]);\n for (j = w.p1; j < w.i1; ++j) cell.add(data[j]);\n cell.set(t);\n }\n for (j = 0; j < m; ++j) wind[j].update(w, t);\n};\nfunction cell(measures, counts, countOnly) {\n measures = measures.map(function (m) {\n return compileMeasures(m, m.field);\n });\n var cell = {\n num: 0,\n agg: null,\n store: false,\n count: counts\n };\n if (!countOnly) {\n var n = measures.length,\n a = cell.agg = Array(n),\n i = 0;\n for (; i < n; ++i) a[i] = new measures[i](cell);\n }\n if (cell.store) {\n var store = cell.data = new TupleStore();\n }\n cell.add = function (t) {\n cell.num += 1;\n if (countOnly) return;\n if (store) store.add(t);\n for (var _i3 = 0; _i3 < n; ++_i3) {\n a[_i3].add(a[_i3].get(t), t);\n }\n };\n cell.rem = function (t) {\n cell.num -= 1;\n if (countOnly) return;\n if (store) store.rem(t);\n for (var _i4 = 0; _i4 < n; ++_i4) {\n a[_i4].rem(a[_i4].get(t), t);\n }\n };\n cell.set = function (t) {\n var i, n;\n\n // consolidate stored values\n if (store) store.values();\n\n // update tuple properties\n for (i = 0, n = counts.length; i < n; ++i) t[counts[i]] = cell.num;\n if (!countOnly) for (i = 0, n = a.length; i < n; ++i) a[i].set(t);\n };\n cell.init = function () {\n cell.num = 0;\n if (store) store.reset();\n for (var _i5 = 0; _i5 < n; ++_i5) a[_i5].init();\n };\n return cell;\n}\n\n/**\n * Perform window calculations and write results to the input stream.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(*,*): number} [params.sort] - A comparator function for sorting tuples within a window.\n * @param {Array} [params.groupby] - An array of accessors by which to partition tuples into separate windows.\n * @param {Array} params.ops - An array of strings indicating window operations to perform.\n * @param {Array} [params.fields] - An array of accessors\n * for data fields to use as inputs to window operations.\n * @param {Array<*>} [params.params] - An array of parameter values for window operations.\n * @param {Array} [params.as] - An array of output field names for window operations.\n * @param {Array} [params.frame] - Window frame definition as two-element array.\n * @param {boolean} [params.ignorePeers=false] - If true, base window frame boundaries on row\n * number alone, ignoring peers with identical sort values. If false (default),\n * the window boundaries will be adjusted to include peer values.\n */\nfunction Window(params) {\n Transform.call(this, {}, params);\n this._mlen = 0;\n this._mods = [];\n}\nWindow.Definition = {\n 'type': 'Window',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'sort',\n 'type': 'compare'\n }, {\n 'name': 'groupby',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'ops',\n 'type': 'enum',\n 'array': true,\n 'values': ValidWindowOps.concat(ValidAggregateOps)\n }, {\n 'name': 'params',\n 'type': 'number',\n 'null': true,\n 'array': true\n }, {\n 'name': 'fields',\n 'type': 'field',\n 'null': true,\n 'array': true\n }, {\n 'name': 'as',\n 'type': 'string',\n 'null': true,\n 'array': true\n }, {\n 'name': 'frame',\n 'type': 'number',\n 'null': true,\n 'array': true,\n 'length': 2,\n 'default': [null, 0]\n }, {\n 'name': 'ignorePeers',\n 'type': 'boolean',\n 'default': false\n }]\n};\ninherits(Window, Transform, {\n transform: function transform(_, pulse) {\n var _this9 = this;\n this.stamp = pulse.stamp;\n var mod = _.modified(),\n cmp = stableCompare(_.sort),\n key = groupkey(_.groupby),\n group = function group(t) {\n return _this9.group(key(t));\n };\n\n // initialize window state\n var state = this.state;\n if (!state || mod) {\n state = this.state = new WindowState(_);\n }\n\n // partition input tuples\n if (mod || pulse.modified(state.inputs)) {\n this.value = {};\n pulse.visit(pulse.SOURCE, function (t) {\n return group(t).add(t);\n });\n } else {\n pulse.visit(pulse.REM, function (t) {\n return group(t).remove(t);\n });\n pulse.visit(pulse.ADD, function (t) {\n return group(t).add(t);\n });\n }\n\n // perform window calculations for each modified partition\n for (var i = 0, n = this._mlen; i < n; ++i) {\n processPartition(this._mods[i], state, cmp, _);\n }\n this._mlen = 0;\n this._mods = [];\n\n // TODO don't reflow everything?\n return pulse.reflow(mod).modifies(state.outputs);\n },\n group: function group(key) {\n var group = this.value[key];\n if (!group) {\n group = this.value[key] = SortedList(tupleid);\n group.stamp = -1;\n }\n if (group.stamp < this.stamp) {\n group.stamp = this.stamp;\n this._mods[this._mlen++] = group;\n }\n return group;\n }\n});\nfunction processPartition(list, state, cmp, _) {\n var sort = _.sort,\n range = sort && !_.ignorePeers,\n frame = _.frame || [null, 0],\n data = list.data(cmp),\n // use cmp for stable sort\n n = data.length,\n b = range ? bisector(sort) : null,\n w = {\n i0: 0,\n i1: 0,\n p0: 0,\n p1: 0,\n index: 0,\n data: data,\n compare: sort || constant(-1)\n };\n state.init();\n for (var i = 0; i < n; ++i) {\n setWindow(w, frame, i, n);\n if (range) adjustRange(w, b);\n state.update(w, data[i]);\n }\n}\nfunction setWindow(w, f, i, n) {\n w.p0 = w.i0;\n w.p1 = w.i1;\n w.i0 = f[0] == null ? 0 : Math.max(0, i - Math.abs(f[0]));\n w.i1 = f[1] == null ? n : Math.min(n, i + Math.abs(f[1]) + 1);\n w.index = i;\n}\n\n// if frame type is 'range', adjust window for peer values\nfunction adjustRange(w, bisect) {\n var r0 = w.i0,\n r1 = w.i1 - 1,\n c = w.compare,\n d = w.data,\n n = d.length - 1;\n if (r0 > 0 && !c(d[r0], d[r0 - 1])) w.i0 = bisect.left(d, d[r0]);\n if (r1 < n && !c(d[r1], d[r1 + 1])) w.i1 = bisect.right(d, d[r1]);\n}\nexport { Aggregate as aggregate, Bin as bin, Collect as collect, Compare as compare, CountPattern as countpattern, Cross as cross, Density as density, DotBin as dotbin, Expression as expression, Extent as extent, Facet as facet, Field as field, Filter as filter, Flatten as flatten, Fold as fold, Formula as formula, Generate as generate, Impute as impute, JoinAggregate as joinaggregate, KDE as kde, Key as key, Load as load, Lookup as lookup, MultiExtent as multiextent, MultiValues as multivalues, Params as params, Pivot as pivot, PreFacet as prefacet, Project as project, Proxy as proxy, Quantile as quantile, Relay as relay, Sample as sample, Sequence as sequence, Sieve as sieve, Subflow as subflow, TimeUnit as timeunit, TupleIndex as tupleindex, Values as values, Window as window };","function _point(that, x, y) {\n that._context.bezierCurveTo((2 * that._x0 + that._x1) / 3, (2 * that._y0 + that._y1) / 3, (that._x0 + 2 * that._x1) / 3, (that._y0 + 2 * that._y1) / 3, (that._x0 + 4 * that._x1 + x) / 6, (that._y0 + 4 * that._y1 + y) / 6);\n}\nexport { _point as point };\nexport function Basis(context) {\n this._context = context;\n}\nBasis.prototype = {\n areaStart: function areaStart() {\n this._line = 0;\n },\n areaEnd: function areaEnd() {\n this._line = NaN;\n },\n lineStart: function lineStart() {\n this._x0 = this._x1 = this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function lineEnd() {\n switch (this._point) {\n case 3:\n _point(this, this._x1, this._y1);\n // falls through\n case 2:\n this._context.lineTo(this._x1, this._y1);\n break;\n }\n if (this._line || this._line !== 0 && this._point === 1) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function point(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0:\n this._point = 1;\n this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y);\n break;\n case 1:\n this._point = 2;\n break;\n case 2:\n this._point = 3;\n this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6);\n // falls through\n default:\n _point(this, x, y);\n break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\nexport default function (context) {\n return new Basis(context);\n}","export default function () {}","import noop from \"../noop.js\";\nimport { point as _point } from \"./basis.js\";\nfunction BasisClosed(context) {\n this._context = context;\n}\nBasisClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function lineStart() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n this._point = 0;\n },\n lineEnd: function lineEnd() {\n switch (this._point) {\n case 1:\n {\n this._context.moveTo(this._x2, this._y2);\n this._context.closePath();\n break;\n }\n case 2:\n {\n this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n this._context.closePath();\n break;\n }\n case 3:\n {\n this.point(this._x2, this._y2);\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n break;\n }\n }\n },\n point: function point(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0:\n this._point = 1;\n this._x2 = x, this._y2 = y;\n break;\n case 1:\n this._point = 2;\n this._x3 = x, this._y3 = y;\n break;\n case 2:\n this._point = 3;\n this._x4 = x, this._y4 = y;\n this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6);\n break;\n default:\n _point(this, x, y);\n break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\nexport default function (context) {\n return new BasisClosed(context);\n}","import { point as _point } from \"./basis.js\";\nfunction BasisOpen(context) {\n this._context = context;\n}\nBasisOpen.prototype = {\n areaStart: function areaStart() {\n this._line = 0;\n },\n areaEnd: function areaEnd() {\n this._line = NaN;\n },\n lineStart: function lineStart() {\n this._x0 = this._x1 = this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function lineEnd() {\n if (this._line || this._line !== 0 && this._point === 3) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function point(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0:\n this._point = 1;\n break;\n case 1:\n this._point = 2;\n break;\n case 2:\n this._point = 3;\n var x0 = (this._x0 + 4 * this._x1 + x) / 6,\n y0 = (this._y0 + 4 * this._y1 + y) / 6;\n this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0);\n break;\n case 3:\n this._point = 4;\n // falls through\n default:\n _point(this, x, y);\n break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\nexport default function (context) {\n return new BasisOpen(context);\n}","import { Basis } from \"./basis.js\";\nfunction Bundle(context, beta) {\n this._basis = new Basis(context);\n this._beta = beta;\n}\nBundle.prototype = {\n lineStart: function lineStart() {\n this._x = [];\n this._y = [];\n this._basis.lineStart();\n },\n lineEnd: function lineEnd() {\n var x = this._x,\n y = this._y,\n j = x.length - 1;\n if (j > 0) {\n var x0 = x[0],\n y0 = y[0],\n dx = x[j] - x0,\n dy = y[j] - y0,\n i = -1,\n t;\n while (++i <= j) {\n t = i / j;\n this._basis.point(this._beta * x[i] + (1 - this._beta) * (x0 + t * dx), this._beta * y[i] + (1 - this._beta) * (y0 + t * dy));\n }\n }\n this._x = this._y = null;\n this._basis.lineEnd();\n },\n point: function point(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\nexport default (function custom(beta) {\n function bundle(context) {\n return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n }\n bundle.beta = function (beta) {\n return custom(+beta);\n };\n return bundle;\n})(0.85);","function _point(that, x, y) {\n that._context.bezierCurveTo(that._x1 + that._k * (that._x2 - that._x0), that._y1 + that._k * (that._y2 - that._y0), that._x2 + that._k * (that._x1 - x), that._y2 + that._k * (that._y1 - y), that._x2, that._y2);\n}\nexport { _point as point };\nexport function Cardinal(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\nCardinal.prototype = {\n areaStart: function areaStart() {\n this._line = 0;\n },\n areaEnd: function areaEnd() {\n this._line = NaN;\n },\n lineStart: function lineStart() {\n this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function lineEnd() {\n switch (this._point) {\n case 2:\n this._context.lineTo(this._x2, this._y2);\n break;\n case 3:\n _point(this, this._x1, this._y1);\n break;\n }\n if (this._line || this._line !== 0 && this._point === 1) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function point(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0:\n this._point = 1;\n this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y);\n break;\n case 1:\n this._point = 2;\n this._x1 = x, this._y1 = y;\n break;\n case 2:\n this._point = 3;\n // falls through\n default:\n _point(this, x, y);\n break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\nexport default (function custom(tension) {\n function cardinal(context) {\n return new Cardinal(context, tension);\n }\n cardinal.tension = function (tension) {\n return custom(+tension);\n };\n return cardinal;\n})(0);","import { point as _point } from \"./cardinal.js\";\nexport function CardinalOpen(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\nCardinalOpen.prototype = {\n areaStart: function areaStart() {\n this._line = 0;\n },\n areaEnd: function areaEnd() {\n this._line = NaN;\n },\n lineStart: function lineStart() {\n this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function lineEnd() {\n if (this._line || this._line !== 0 && this._point === 3) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function point(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0:\n this._point = 1;\n break;\n case 1:\n this._point = 2;\n break;\n case 2:\n this._point = 3;\n this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2);\n break;\n case 3:\n this._point = 4;\n // falls through\n default:\n _point(this, x, y);\n break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\nexport default (function custom(tension) {\n function cardinal(context) {\n return new CardinalOpen(context, tension);\n }\n cardinal.tension = function (tension) {\n return custom(+tension);\n };\n return cardinal;\n})(0);","import noop from \"../noop.js\";\nimport { point as _point } from \"./cardinal.js\";\nexport function CardinalClosed(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\nCardinalClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function lineStart() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._point = 0;\n },\n lineEnd: function lineEnd() {\n switch (this._point) {\n case 1:\n {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2:\n {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3:\n {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function point(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0:\n this._point = 1;\n this._x3 = x, this._y3 = y;\n break;\n case 1:\n this._point = 2;\n this._context.moveTo(this._x4 = x, this._y4 = y);\n break;\n case 2:\n this._point = 3;\n this._x5 = x, this._y5 = y;\n break;\n default:\n _point(this, x, y);\n break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\nexport default (function custom(tension) {\n function cardinal(context) {\n return new CardinalClosed(context, tension);\n }\n cardinal.tension = function (tension) {\n return custom(+tension);\n };\n return cardinal;\n})(0);","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}","import { epsilon } from \"../math.js\";\nimport { Cardinal } from \"./cardinal.js\";\nfunction _point(that, x, y) {\n var x1 = that._x1,\n y1 = that._y1,\n x2 = that._x2,\n y2 = that._y2;\n if (that._l01_a > epsilon) {\n var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n }\n if (that._l23_a > epsilon) {\n var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n }\n that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\nexport { _point as point };\nfunction CatmullRom(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\nCatmullRom.prototype = {\n areaStart: function areaStart() {\n this._line = 0;\n },\n areaEnd: function areaEnd() {\n this._line = NaN;\n },\n lineStart: function lineStart() {\n this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0;\n },\n lineEnd: function lineEnd() {\n switch (this._point) {\n case 2:\n this._context.lineTo(this._x2, this._y2);\n break;\n case 3:\n this.point(this._x2, this._y2);\n break;\n }\n if (this._line || this._line !== 0 && this._point === 1) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function point(x, y) {\n x = +x, y = +y;\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n switch (this._point) {\n case 0:\n this._point = 1;\n this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y);\n break;\n case 1:\n this._point = 2;\n break;\n case 2:\n this._point = 3;\n // falls through\n default:\n _point(this, x, y);\n break;\n }\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\nexport default (function custom(alpha) {\n function catmullRom(context) {\n return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n }\n catmullRom.alpha = function (alpha) {\n return custom(+alpha);\n };\n return catmullRom;\n})(0.5);","import { CardinalClosed } from \"./cardinalClosed.js\";\nimport noop from \"../noop.js\";\nimport { point as _point } from \"./catmullRom.js\";\nfunction CatmullRomClosed(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\nCatmullRomClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function lineStart() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0;\n },\n lineEnd: function lineEnd() {\n switch (this._point) {\n case 1:\n {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2:\n {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3:\n {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function point(x, y) {\n x = +x, y = +y;\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n switch (this._point) {\n case 0:\n this._point = 1;\n this._x3 = x, this._y3 = y;\n break;\n case 1:\n this._point = 2;\n this._context.moveTo(this._x4 = x, this._y4 = y);\n break;\n case 2:\n this._point = 3;\n this._x5 = x, this._y5 = y;\n break;\n default:\n _point(this, x, y);\n break;\n }\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\nexport default (function custom(alpha) {\n function catmullRom(context) {\n return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);\n }\n catmullRom.alpha = function (alpha) {\n return custom(+alpha);\n };\n return catmullRom;\n})(0.5);","import { CardinalOpen } from \"./cardinalOpen.js\";\nimport { point as _point } from \"./catmullRom.js\";\nfunction CatmullRomOpen(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\nCatmullRomOpen.prototype = {\n areaStart: function areaStart() {\n this._line = 0;\n },\n areaEnd: function areaEnd() {\n this._line = NaN;\n },\n lineStart: function lineStart() {\n this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0;\n },\n lineEnd: function lineEnd() {\n if (this._line || this._line !== 0 && this._point === 3) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function point(x, y) {\n x = +x, y = +y;\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n switch (this._point) {\n case 0:\n this._point = 1;\n break;\n case 1:\n this._point = 2;\n break;\n case 2:\n this._point = 3;\n this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2);\n break;\n case 3:\n this._point = 4;\n // falls through\n default:\n _point(this, x, y);\n break;\n }\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\nexport default (function custom(alpha) {\n function catmullRom(context) {\n return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);\n }\n catmullRom.alpha = function (alpha) {\n return custom(+alpha);\n };\n return catmullRom;\n})(0.5);","import _taggedTemplateLiteral from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nvar _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14;\nvar pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\nfunction append(strings) {\n this._ += strings[0];\n for (var i = 1, n = strings.length; i < n; ++i) {\n this._ += arguments[i] + strings[i];\n }\n}\nfunction appendRound(digits) {\n var d = Math.floor(digits);\n if (!(d >= 0)) throw new Error(\"invalid digits: \".concat(digits));\n if (d > 15) return append;\n var k = Math.pow(10, d);\n return function (strings) {\n this._ += strings[0];\n for (var i = 1, n = strings.length; i < n; ++i) {\n this._ += Math.round(arguments[i] * k) / k + strings[i];\n }\n };\n}\nexport var Path = /*#__PURE__*/function () {\n function Path(digits) {\n _classCallCheck(this, Path);\n this._x0 = this._y0 =\n // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n this._append = digits == null ? append : appendRound(digits);\n }\n _createClass(Path, [{\n key: \"moveTo\",\n value: function moveTo(x, y) {\n this._append(_templateObject || (_templateObject = _taggedTemplateLiteral([\"M\", \",\", \"\"])), this._x0 = this._x1 = +x, this._y0 = this._y1 = +y);\n }\n }, {\n key: \"closePath\",\n value: function closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._append(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral([\"Z\"])));\n }\n }\n }, {\n key: \"lineTo\",\n value: function lineTo(x, y) {\n this._append(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral([\"L\", \",\", \"\"])), this._x1 = +x, this._y1 = +y);\n }\n }, {\n key: \"quadraticCurveTo\",\n value: function quadraticCurveTo(x1, y1, x, y) {\n this._append(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral([\"Q\", \",\", \",\", \",\", \"\"])), +x1, +y1, this._x1 = +x, this._y1 = +y);\n }\n }, {\n key: \"bezierCurveTo\",\n value: function bezierCurveTo(x1, y1, x2, y2, x, y) {\n this._append(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral([\"C\", \",\", \",\", \",\", \",\", \",\", \"\"])), +x1, +y1, +x2, +y2, this._x1 = +x, this._y1 = +y);\n }\n }, {\n key: \"arcTo\",\n value: function arcTo(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \".concat(r));\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._append(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral([\"M\", \",\", \"\"])), this._x1 = x1, this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon)) ;\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._append(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral([\"L\", \",\", \"\"])), this._x1 = x1, this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._append(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral([\"L\", \",\", \"\"])), x1 + t01 * x01, y1 + t01 * y01);\n }\n this._append(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral([\"A\", \",\", \",0,0,\", \",\", \",\", \"\"])), r, r, +(y01 * x20 > x01 * y20), this._x1 = x1 + t21 * x21, this._y1 = y1 + t21 * y21);\n }\n }\n }, {\n key: \"arc\",\n value: function arc(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \".concat(r));\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._append(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral([\"M\", \",\", \"\"])), x0, y0);\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._append(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral([\"L\", \",\", \"\"])), x0, y0);\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._append(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral([\"A\", \",\", \",0,1,\", \",\", \",\", \"A\", \",\", \",0,1,\", \",\", \",\", \"\"])), r, r, cw, x - dx, y - dy, r, r, cw, this._x1 = x0, this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._append(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral([\"A\", \",\", \",0,\", \",\", \",\", \",\", \"\"])), r, r, +(da >= pi), cw, this._x1 = x + r * Math.cos(a1), this._y1 = y + r * Math.sin(a1));\n }\n }\n }, {\n key: \"rect\",\n value: function rect(x, y, w, h) {\n this._append(_templateObject14 || (_templateObject14 = _taggedTemplateLiteral([\"M\", \",\", \"h\", \"v\", \"h\", \"Z\"])), this._x0 = this._x1 = +x, this._y0 = this._y1 = +y, w = +w, +h, -w);\n }\n }, {\n key: \"toString\",\n value: function toString() {\n return this._;\n }\n }]);\n return Path;\n}();\nexport function path() {\n return new Path();\n}\n\n// Allow instanceof d3.path\npath.prototype = Path.prototype;\nexport function pathRound() {\n var digits = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 3;\n return new Path(+digits);\n}","function Linear(context) {\n this._context = context;\n}\nLinear.prototype = {\n areaStart: function areaStart() {\n this._line = 0;\n },\n areaEnd: function areaEnd() {\n this._line = NaN;\n },\n lineStart: function lineStart() {\n this._point = 0;\n },\n lineEnd: function lineEnd() {\n if (this._line || this._line !== 0 && this._point === 1) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function point(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0:\n this._point = 1;\n this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y);\n break;\n case 1:\n this._point = 2;\n // falls through\n default:\n this._context.lineTo(x, y);\n break;\n }\n }\n};\nexport default function (context) {\n return new Linear(context);\n}","import noop from \"../noop.js\";\nfunction LinearClosed(context) {\n this._context = context;\n}\nLinearClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function lineStart() {\n this._point = 0;\n },\n lineEnd: function lineEnd() {\n if (this._point) this._context.closePath();\n },\n point: function point(x, y) {\n x = +x, y = +y;\n if (this._point) this._context.lineTo(x, y);else this._point = 1, this._context.moveTo(x, y);\n }\n};\nexport default function (context) {\n return new LinearClosed(context);\n}","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction _point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\nfunction MonotoneX(context) {\n this._context = context;\n}\nMonotoneX.prototype = {\n areaStart: function areaStart() {\n this._line = 0;\n },\n areaEnd: function areaEnd() {\n this._line = NaN;\n },\n lineStart: function lineStart() {\n this._x0 = this._x1 = this._y0 = this._y1 = this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function lineEnd() {\n switch (this._point) {\n case 2:\n this._context.lineTo(this._x1, this._y1);\n break;\n case 3:\n _point(this, this._t0, slope2(this, this._t0));\n break;\n }\n if (this._line || this._line !== 0 && this._point === 1) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function point(x, y) {\n var t1 = NaN;\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0:\n this._point = 1;\n this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y);\n break;\n case 1:\n this._point = 2;\n break;\n case 2:\n this._point = 3;\n _point(this, slope2(this, t1 = slope3(this, x, y)), t1);\n break;\n default:\n _point(this, this._t0, t1 = slope3(this, x, y));\n break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n};\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function (x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\nfunction ReflectContext(context) {\n this._context = context;\n}\nReflectContext.prototype = {\n moveTo: function moveTo(x, y) {\n this._context.moveTo(y, x);\n },\n closePath: function closePath() {\n this._context.closePath();\n },\n lineTo: function lineTo(x, y) {\n this._context.lineTo(y, x);\n },\n bezierCurveTo: function bezierCurveTo(x1, y1, x2, y2, x, y) {\n this._context.bezierCurveTo(y1, x1, y2, x2, y, x);\n }\n};\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}","function Natural(context) {\n this._context = context;\n}\nNatural.prototype = {\n areaStart: function areaStart() {\n this._line = 0;\n },\n areaEnd: function areaEnd() {\n this._line = NaN;\n },\n lineStart: function lineStart() {\n this._x = [];\n this._y = [];\n },\n lineEnd: function lineEnd() {\n var x = this._x,\n y = this._y,\n n = x.length;\n if (n) {\n this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n if (n === 2) {\n this._context.lineTo(x[1], y[1]);\n } else {\n var px = controlPoints(x),\n py = controlPoints(y);\n for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n }\n }\n }\n if (this._line || this._line !== 0 && n === 1) this._context.closePath();\n this._line = 1 - this._line;\n this._x = this._y = null;\n },\n point: function point(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n var i,\n n = x.length - 1,\n m,\n a = new Array(n),\n b = new Array(n),\n r = new Array(n);\n a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n a[n - 1] = r[n - 1] / b[n - 1];\n for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n b[n - 1] = (x[n] + a[n - 1]) / 2;\n for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n return [a, b];\n}\nexport default function (context) {\n return new Natural(context);\n}","function Step(context, t) {\n this._context = context;\n this._t = t;\n}\nStep.prototype = {\n areaStart: function areaStart() {\n this._line = 0;\n },\n areaEnd: function areaEnd() {\n this._line = NaN;\n },\n lineStart: function lineStart() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function lineEnd() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || this._line !== 0 && this._point === 1) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function point(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0:\n this._point = 1;\n this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y);\n break;\n case 1:\n this._point = 2;\n // falls through\n default:\n {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\nexport default function (context) {\n return new Step(context, 0.5);\n}\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\nexport function stepAfter(context) {\n return new Step(context, 1);\n}","export default function (x) {\n return function constant() {\n return x;\n };\n}","export default function _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n}","import { Path } from \"d3-path\";\nexport function withPath(shape) {\n var digits = 3;\n shape.digits = function (_) {\n if (!arguments.length) return digits;\n if (_ == null) {\n digits = null;\n } else {\n var d = Math.floor(_);\n if (!(d >= 0)) throw new RangeError(\"invalid digits: \".concat(_));\n digits = d;\n }\n return shape;\n };\n return function () {\n return new Path(digits);\n };\n}","import constant from \"./constant.js\";\nimport { abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau } from \"./math.js\";\nimport { withPath } from \"./path.js\";\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0,\n y10 = y1 - y0,\n x32 = x3 - x2,\n y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\nexport default function () {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null,\n path = withPath(arc);\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = ap > epsilon && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= cw ? 1 : -1, a00 += p0, a10 -= p0;else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= cw ? 1 : -1, a01 += p1, a11 -= p1;else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle. If this\n // intersection fails, it’s probably because the arc is too small, so\n // disable the corner radius entirely.\n if (da < pi) {\n if (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10)) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n } else {\n rc0 = rc1 = 0;\n }\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n context.closePath();\n if (buffer) return context = null, buffer + \"\" || null;\n }\n arc.centroid = function () {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n arc.innerRadius = function (_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n arc.outerRadius = function (_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n arc.cornerRadius = function (_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n arc.padRadius = function (_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n arc.startAngle = function (_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n arc.endAngle = function (_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n arc.padAngle = function (_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n arc.context = function (_) {\n return arguments.length ? (context = _ == null ? null : _, arc) : context;\n };\n return arc;\n}","export var slice = Array.prototype.slice;\nexport default function (x) {\n return typeof x === \"object\" && \"length\" in x ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}","export function x(p) {\n return p[0];\n}\nexport function y(p) {\n return p[1];\n}","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport { withPath } from \"./path.js\";\nimport { x as pointX, y as pointY } from \"./point.js\";\nexport default function (x, y) {\n var defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(line);\n x = typeof x === \"function\" ? x : x === undefined ? pointX : constant(x);\n y = typeof y === \"function\" ? y : y === undefined ? pointY : constant(y);\n function line(data) {\n var i,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer;\n if (context == null) output = curve(buffer = path());\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n if (buffer) return output = null, buffer + \"\" || null;\n }\n line.x = function (_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n line.y = function (_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n line.defined = function (_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n line.curve = function (_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n line.context = function (_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n return line;\n}","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport { withPath } from \"./path.js\";\nimport { x as pointX, y as pointY } from \"./point.js\";\nexport default function (x0, y0, y1) {\n var x1 = null,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(area);\n x0 = typeof x0 === \"function\" ? x0 : x0 === undefined ? pointX : constant(+x0);\n y0 = typeof y0 === \"function\" ? y0 : y0 === undefined ? constant(0) : constant(+y0);\n y1 = typeof y1 === \"function\" ? y1 : y1 === undefined ? pointY : constant(+y1);\n function area(data) {\n var i,\n j,\n k,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n if (context == null) output = curve(buffer = path());\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n if (buffer) return output = null, buffer + \"\" || null;\n }\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n area.x = function (_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n area.x0 = function (_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n area.x1 = function (_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n area.y = function (_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n area.y0 = function (_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n area.y1 = function (_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n area.lineX0 = area.lineY0 = function () {\n return arealine().x(x0).y(y0);\n };\n area.lineY1 = function () {\n return arealine().x(x0).y(y1);\n };\n area.lineX1 = function () {\n return arealine().x(x1).y(y0);\n };\n area.defined = function (_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n area.curve = function (_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n area.context = function (_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n return area;\n}","import { min, sqrt } from \"../math.js\";\nvar sqrt3 = sqrt(3);\nexport default {\n draw: function draw(context, size) {\n var r = sqrt(size + min(size / 28, 0.75)) * 0.59436;\n var t = r / 2;\n var u = t * sqrt3;\n context.moveTo(0, r);\n context.lineTo(0, -r);\n context.moveTo(-u, -t);\n context.lineTo(u, t);\n context.moveTo(-u, t);\n context.lineTo(u, -t);\n }\n};","import { pi, sqrt, tau } from \"../math.js\";\nexport default {\n draw: function draw(context, size) {\n var r = sqrt(size / pi);\n context.moveTo(r, 0);\n context.arc(0, 0, r, 0, tau);\n }\n};","import { sin, cos, sqrt, pi, tau } from \"../math.js\";\nvar ka = 0.89081309152928522810;\nvar kr = sin(pi / 10) / sin(7 * pi / 10);\nvar kx = sin(tau / 10) * kr;\nvar ky = -cos(tau / 10) * kr;\nexport default {\n draw: function draw(context, size) {\n var r = sqrt(size * ka);\n var x = kx * r;\n var y = ky * r;\n context.moveTo(0, -r);\n context.lineTo(x, y);\n for (var i = 1; i < 5; ++i) {\n var a = tau * i / 5;\n var c = cos(a);\n var s = sin(a);\n context.lineTo(s * r, -c * r);\n context.lineTo(c * x - s * y, s * x + c * y);\n }\n context.closePath();\n }\n};","import { sqrt } from \"../math.js\";\nvar tan30 = sqrt(1 / 3);\nvar tan30_2 = tan30 * 2;\nexport default {\n draw: function draw(context, size) {\n var y = sqrt(size / tan30_2);\n var x = y * tan30;\n context.moveTo(0, -y);\n context.lineTo(x, 0);\n context.lineTo(0, y);\n context.lineTo(-x, 0);\n context.closePath();\n }\n};","import { sqrt } from \"../math.js\";\nvar sqrt3 = sqrt(3);\nexport default {\n draw: function draw(context, size) {\n var y = -sqrt(size / (sqrt3 * 3));\n context.moveTo(0, y * 2);\n context.lineTo(-sqrt3 * y, -y);\n context.lineTo(sqrt3 * y, -y);\n context.closePath();\n }\n};","import { sqrt } from \"../math.js\";\nvar sqrt3 = sqrt(3);\nexport default {\n draw: function draw(context, size) {\n var s = sqrt(size) * 0.6824;\n var t = s / 2;\n var u = s * sqrt3 / 2; // cos(Math.PI / 6)\n context.moveTo(0, -s);\n context.lineTo(u, t);\n context.lineTo(-u, t);\n context.closePath();\n }\n};","import { sqrt } from \"../math.js\";\nvar c = -0.5;\nvar s = sqrt(3) / 2;\nvar k = 1 / sqrt(12);\nvar a = (k / 2 + 1) * 3;\nexport default {\n draw: function draw(context, size) {\n var r = sqrt(size / a);\n var x0 = r / 2,\n y0 = r * k;\n var x1 = x0,\n y1 = r * k + r;\n var x2 = -x1,\n y2 = y1;\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n context.lineTo(x2, y2);\n context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n context.closePath();\n }\n};","function domCanvas(w, h) {\n if (typeof document !== 'undefined' && document.createElement) {\n var c = document.createElement('canvas');\n if (c && c.getContext) {\n c.width = w;\n c.height = h;\n return c;\n }\n }\n return null;\n}\nvar domImage = function domImage() {\n return typeof Image !== 'undefined' ? Image : null;\n};\nexport { domCanvas as canvas, domCanvas, domImage as image };","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _asyncToGenerator from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\";\nimport _regeneratorRuntime from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/regenerator/index.js\";\nimport { extend, error, stringValue, isFunction, toBoolean, toNumber, toDate, toString, identity, field, isObject, isArray, isIterable, hasOwnProperty } from 'vega-util';\nimport { dsvFormat } from 'd3-dsv';\nimport { feature, mesh } from 'topojson-client';\nimport { timeFormatDefaultLocale } from 'vega-format';\n\n// Matches absolute URLs with optional protocol\n// https://... file://... //...\nvar protocol_re = /^(data:|([A-Za-z]+:)?\\/\\/)/;\n\n// Matches allowed URIs. From https://github.com/cure53/DOMPurify/blob/master/src/regexp.js with added file://\nvar allowed_re = /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i; // eslint-disable-line no-useless-escape\nvar whitespace_re = /[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205f\\u3000]/g; // eslint-disable-line no-control-regex\n\n// Special treatment in node.js for the file: protocol\nvar fileProtocol = 'file://';\n\n/**\n * Factory for a loader constructor that provides methods for requesting\n * files from either the network or disk, and for sanitizing request URIs.\n * @param {function} fetch - The Fetch API for HTTP network requests.\n * If null or undefined, HTTP loading will be disabled.\n * @param {object} fs - The file system interface for file loading.\n * If null or undefined, local file loading will be disabled.\n * @return {function} A loader constructor with the following signature:\n * param {object} [options] - Optional default loading options to use.\n * return {object} - A new loader instance.\n */\nfunction loaderFactory(fetch, fs) {\n return function (options) {\n return {\n options: options || {},\n sanitize: sanitize,\n load: load,\n fileAccess: !!fs,\n file: fileLoader(fs),\n http: httpLoader(fetch)\n };\n };\n}\n\n/**\n * Load an external resource, typically either from the web or from the local\n * filesystem. This function uses {@link sanitize} to first sanitize the uri,\n * then calls either {@link http} (for web requests) or {@link file} (for\n * filesystem loading).\n * @param {string} uri - The resource indicator (e.g., URL or filename).\n * @param {object} [options] - Optional loading options. These options will\n * override any existing default options.\n * @return {Promise} - A promise that resolves to the loaded content.\n */\nfunction load(_x, _x2) {\n return _load.apply(this, arguments);\n}\n/**\n * URI sanitizer function.\n * @param {string} uri - The uri (url or filename) to check.\n * @param {object} options - An options hash.\n * @return {Promise} - A promise that resolves to an object containing\n * sanitized uri data, or rejects it the input uri is deemed invalid.\n * The properties of the resolved object are assumed to be\n * valid attributes for an HTML 'a' tag. The sanitized uri *must* be\n * provided by the 'href' property of the returned object.\n */\nfunction _load() {\n _load = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(uri, options) {\n var opt, url;\n return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.sanitize(uri, options);\n case 2:\n opt = _context2.sent;\n url = opt.href;\n return _context2.abrupt(\"return\", opt.localFile ? this.file(url) : this.http(url, options));\n case 5:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n return _load.apply(this, arguments);\n}\nfunction sanitize(_x3, _x4) {\n return _sanitize.apply(this, arguments);\n}\n/**\n * File system loader factory.\n * @param {object} fs - The file system interface.\n * @return {function} - A file loader with the following signature:\n * param {string} filename - The file system path to load.\n * param {string} filename - The file system path to load.\n * return {Promise} A promise that resolves to the file contents.\n */\nfunction _sanitize() {\n _sanitize = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(uri, options) {\n var fileAccess, result, isFile, loadFile, base, isAllowed, hasProtocol;\n return _regeneratorRuntime.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n options = extend({}, this.options, options);\n fileAccess = this.fileAccess, result = {\n href: null\n };\n isAllowed = allowed_re.test(uri.replace(whitespace_re, ''));\n if (uri == null || typeof uri !== 'string' || !isAllowed) {\n error('Sanitize failure, invalid URI: ' + stringValue(uri));\n }\n hasProtocol = protocol_re.test(uri); // if relative url (no protocol/host), prepend baseURL\n if ((base = options.baseURL) && !hasProtocol) {\n // Ensure that there is a slash between the baseURL (e.g. hostname) and url\n if (!uri.startsWith('/') && !base.endsWith('/')) {\n uri = '/' + uri;\n }\n uri = base + uri;\n }\n\n // should we load from file system?\n loadFile = (isFile = uri.startsWith(fileProtocol)) || options.mode === 'file' || options.mode !== 'http' && !hasProtocol && fileAccess;\n if (isFile) {\n // strip file protocol\n uri = uri.slice(fileProtocol.length);\n } else if (uri.startsWith('//')) {\n if (options.defaultProtocol === 'file') {\n // if is file, strip protocol and set loadFile flag\n uri = uri.slice(2);\n loadFile = true;\n } else {\n // if relative protocol (starts with '//'), prepend default protocol\n uri = (options.defaultProtocol || 'http') + ':' + uri;\n }\n }\n\n // set non-enumerable mode flag to indicate local file load\n Object.defineProperty(result, 'localFile', {\n value: !!loadFile\n });\n\n // set uri\n result.href = uri;\n\n // set default result target, if specified\n if (options.target) {\n result.target = options.target + '';\n }\n\n // set default result rel, if specified (#1542)\n if (options.rel) {\n result.rel = options.rel + '';\n }\n\n // provide control over cross-origin image handling (#2238)\n // https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image\n if (options.context === 'image' && options.crossOrigin) {\n result.crossOrigin = options.crossOrigin + '';\n }\n\n // return\n return _context3.abrupt(\"return\", result);\n case 14:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n return _sanitize.apply(this, arguments);\n}\nfunction fileLoader(fs) {\n return fs ? function (filename) {\n return new Promise(function (accept, reject) {\n fs.readFile(filename, function (error, data) {\n if (error) reject(error);else accept(data);\n });\n });\n } : fileReject;\n}\n\n/**\n * Default file system loader that simply rejects.\n */\nfunction fileReject() {\n return _fileReject.apply(this, arguments);\n}\n/**\n * HTTP request handler factory.\n * @param {function} fetch - The Fetch API method.\n * @return {function} - An http loader with the following signature:\n * param {string} url - The url to request.\n * param {object} options - An options hash.\n * return {Promise} - A promise that resolves to the file contents.\n */\nfunction _fileReject() {\n _fileReject = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4() {\n return _regeneratorRuntime.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n error('No file system access.');\n case 1:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4);\n }));\n return _fileReject.apply(this, arguments);\n}\nfunction httpLoader(fetch) {\n return fetch ? /*#__PURE__*/function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(url, options) {\n var opt, type, response;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n opt = extend({}, this.options.http, options);\n type = options && options.response;\n _context.next = 4;\n return fetch(url, opt);\n case 4:\n response = _context.sent;\n return _context.abrupt(\"return\", !response.ok ? error(response.status + '' + response.statusText) : isFunction(response[type]) ? response[type]() : response.text());\n case 6:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n return function (_x5, _x6) {\n return _ref.apply(this, arguments);\n };\n }() : httpReject;\n}\n\n/**\n * Default http request handler that simply rejects.\n */\nfunction httpReject() {\n return _httpReject.apply(this, arguments);\n}\nfunction _httpReject() {\n _httpReject = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5() {\n return _regeneratorRuntime.wrap(function _callee5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n error('No HTTP fetch method available.');\n case 1:\n case \"end\":\n return _context5.stop();\n }\n }, _callee5);\n }));\n return _httpReject.apply(this, arguments);\n}\nvar isValid = function isValid(_) {\n return _ != null && _ === _;\n};\nvar isBoolean = function isBoolean(_) {\n return _ === 'true' || _ === 'false' || _ === true || _ === false;\n};\nvar isDate = function isDate(_) {\n return !Number.isNaN(Date.parse(_));\n};\nvar isNumber = function isNumber(_) {\n return !Number.isNaN(+_) && !(_ instanceof Date);\n};\nvar isInteger = function isInteger(_) {\n return isNumber(_) && Number.isInteger(+_);\n};\nvar typeParsers = {\n boolean: toBoolean,\n integer: toNumber,\n number: toNumber,\n date: toDate,\n string: toString,\n unknown: identity\n};\nvar typeTests = [isBoolean, isInteger, isNumber, isDate];\nvar typeList = ['boolean', 'integer', 'number', 'date'];\nfunction inferType(values, field) {\n if (!values || !values.length) return 'unknown';\n var n = values.length,\n m = typeTests.length,\n a = typeTests.map(function (_, i) {\n return i + 1;\n });\n for (var i = 0, t = 0, j, value; i < n; ++i) {\n value = field ? values[i][field] : values[i];\n for (j = 0; j < m; ++j) {\n if (a[j] && isValid(value) && !typeTests[j](value)) {\n a[j] = 0;\n ++t;\n if (t === typeTests.length) return 'string';\n }\n }\n }\n return typeList[a.reduce(function (u, v) {\n return u === 0 ? v : u;\n }, 0) - 1];\n}\nfunction inferTypes(data, fields) {\n return fields.reduce(function (types, field) {\n types[field] = inferType(data, field);\n return types;\n }, {});\n}\nfunction delimitedFormat(delimiter) {\n var parse = function parse(data, format) {\n var delim = {\n delimiter: delimiter\n };\n return dsv(data, format ? extend(format, delim) : delim);\n };\n parse.responseType = 'text';\n return parse;\n}\nfunction dsv(data, format) {\n if (format.header) {\n data = format.header.map(stringValue).join(format.delimiter) + '\\n' + data;\n }\n return dsvFormat(format.delimiter).parse(data + '');\n}\ndsv.responseType = 'text';\nfunction isBuffer(_) {\n return typeof Buffer === 'function' && isFunction(Buffer.isBuffer) ? Buffer.isBuffer(_) : false;\n}\nfunction json(data, format) {\n var prop = format && format.property ? field(format.property) : identity;\n return isObject(data) && !isBuffer(data) ? parseJSON(prop(data), format) : prop(JSON.parse(data));\n}\njson.responseType = 'json';\nfunction parseJSON(data, format) {\n if (!isArray(data) && isIterable(data)) {\n data = _toConsumableArray(data);\n }\n return format && format.copy ? JSON.parse(JSON.stringify(data)) : data;\n}\nvar filters = {\n interior: function interior(a, b) {\n return a !== b;\n },\n exterior: function exterior(a, b) {\n return a === b;\n }\n};\nfunction topojson(data, format) {\n var method, object, property, filter;\n data = json(data, format);\n if (format && format.feature) {\n method = feature;\n property = format.feature;\n } else if (format && format.mesh) {\n method = mesh;\n property = format.mesh;\n filter = filters[format.filter];\n } else {\n error('Missing TopoJSON feature or mesh parameter.');\n }\n object = (object = data.objects[property]) ? method(data, object, filter) : error('Invalid TopoJSON object: ' + property);\n return object && object.features || [object];\n}\ntopojson.responseType = 'json';\nvar format = {\n dsv: dsv,\n csv: delimitedFormat(','),\n tsv: delimitedFormat('\\t'),\n json: json,\n topojson: topojson\n};\nfunction formats(name, reader) {\n if (arguments.length > 1) {\n format[name] = reader;\n return this;\n } else {\n return hasOwnProperty(format, name) ? format[name] : null;\n }\n}\nfunction responseType(type) {\n var f = formats(type);\n return f && f.responseType || 'text';\n}\nfunction read(data, schema, timeParser, utcParser) {\n schema = schema || {};\n var reader = formats(schema.type || 'json');\n if (!reader) error('Unknown data format type: ' + schema.type);\n data = reader(data, schema);\n if (schema.parse) parse(data, schema.parse, timeParser, utcParser);\n if (hasOwnProperty(data, 'columns')) delete data.columns;\n return data;\n}\nfunction parse(data, types, timeParser, utcParser) {\n if (!data.length) return; // early exit for empty data\n\n var locale = timeFormatDefaultLocale();\n timeParser = timeParser || locale.timeParse;\n utcParser = utcParser || locale.utcParse;\n var fields = data.columns || Object.keys(data[0]),\n datum,\n field,\n i,\n j,\n n,\n m;\n if (types === 'auto') types = inferTypes(data, fields);\n fields = Object.keys(types);\n var parsers = fields.map(function (field) {\n var type = types[field];\n var parts, pattern;\n if (type && (type.startsWith('date:') || type.startsWith('utc:'))) {\n parts = type.split(/:(.+)?/, 2); // split on first :\n pattern = parts[1];\n if (pattern[0] === '\\'' && pattern[pattern.length - 1] === '\\'' || pattern[0] === '\"' && pattern[pattern.length - 1] === '\"') {\n pattern = pattern.slice(1, -1);\n }\n var _parse = parts[0] === 'utc' ? utcParser : timeParser;\n return _parse(pattern);\n }\n if (!typeParsers[type]) {\n throw Error('Illegal format pattern: ' + field + ':' + type);\n }\n return typeParsers[type];\n });\n for (i = 0, n = data.length, m = fields.length; i < n; ++i) {\n datum = data[i];\n for (j = 0; j < m; ++j) {\n field = fields[j];\n datum[field] = parsers[j](datum[field]);\n }\n }\n}\nvar loader = loaderFactory(typeof fetch !== 'undefined' && fetch,\n// use built-in fetch API\nnull // no file system access\n);\n\nexport { format, formats, inferType, inferTypes, loader, read, responseType, typeParsers };","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport var bisectCenter = bisector(number).center;\nexport default bisectRight;","export default function (a, b) {\n return a = +a, b = +b, function (t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}","export default function number(x) {\n return +x;\n}","import { bisect } from \"d3-array\";\nimport { interpolate as interpolateValue, interpolateNumber, interpolateRound } from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\nvar unit = [0, 1];\nexport function identity(x) {\n return x;\n}\nfunction normalize(a, b) {\n return (b -= a = +a) ? function (x) {\n return (x - a) / b;\n } : constant(isNaN(b) ? NaN : 0.5);\n}\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function (x) {\n return Math.max(a, Math.min(b, x));\n };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0],\n d1 = domain[1],\n r0 = range[0],\n r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function (x) {\n return r0(d0(x));\n };\n}\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n return function (x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\nexport function copy(source, target) {\n return target.domain(source.domain()).range(source.range()).interpolate(source.interpolate()).clamp(source.clamp()).unknown(source.unknown());\n}\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n scale.invert = function (y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n scale.domain = function (_) {\n return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n };\n scale.range = function (_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n scale.rangeRound = function (_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n scale.clamp = function (_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n scale.interpolate = function (_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n scale.unknown = function (_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n return function (t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\nexport default function continuous() {\n return transformer()(identity, identity);\n}","export default function constants(x) {\n return function () {\n return x;\n };\n}","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0:\n break;\n case 1:\n this.range(domain);\n break;\n default:\n this.range(range).domain(domain);\n break;\n }\n return this;\n}\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0:\n break;\n case 1:\n {\n if (typeof domain === \"function\") this.interpolator(domain);else this.range(domain);\n break;\n }\n default:\n {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);else this.range(interpolator);\n break;\n }\n }\n return this;\n}","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\nFormatSpecifier.prototype.toString = function () {\n return this.fill + this.align + this.sign + this.symbol + (this.zero ? \"0\" : \"\") + (this.width === undefined ? \"\" : Math.max(1, this.width | 0)) + (this.comma ? \",\" : \"\") + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0)) + (this.trim ? \"~\" : \"\") + this.type;\n};","import { formatDecimalParts } from \"./formatDecimal.js\";\nexport var prefixExponent;\nexport default function (x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient : i > n ? coefficient + new Array(i - n + 1).join(\"0\") : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i) : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}","export default function (x) {\n return Math.abs(x = Math.round(x)) >= 1e21 ? x.toLocaleString(\"en\").replace(/,/g, \"\") : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i,\n coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient, +x.slice(i + 1)];\n}","import { formatDecimalParts } from \"./formatDecimal.js\";\nexport default function (x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}","import { formatDecimalParts } from \"./formatDecimal.js\";\nexport default function (x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1) : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\nexport default {\n \"%\": function _(x, p) {\n return (x * 100).toFixed(p);\n },\n \"b\": function b(x) {\n return Math.round(x).toString(2);\n },\n \"c\": function c(x) {\n return x + \"\";\n },\n \"d\": formatDecimal,\n \"e\": function e(x, p) {\n return x.toExponential(p);\n },\n \"f\": function f(x, p) {\n return x.toFixed(p);\n },\n \"g\": function g(x, p) {\n return x.toPrecision(p);\n },\n \"o\": function o(x) {\n return Math.round(x).toString(8);\n },\n \"p\": function p(x, _p) {\n return formatRounded(x * 100, _p);\n },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function X(x) {\n return Math.round(x).toString(16).toUpperCase();\n },\n \"x\": function x(_x) {\n return Math.round(_x).toString(16);\n }\n};","export default function (x) {\n return x;\n}","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport { prefixExponent } from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\nvar map = Array.prototype.map,\n prefixes = [\"y\", \"z\", \"a\", \"f\", \"p\", \"n\", \"µ\", \"m\", \"\", \"k\", \"M\", \"G\", \"T\", \"P\", \"E\", \"Z\", \"Y\"];\nexport default function (locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || fill === \"0\" && align === \"=\") zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6 : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision)) : Math.max(0, Math.min(20, precision));\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i,\n n,\n c;\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? sign === \"(\" ? sign : minus : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\":\n value = valuePrefix + value + valueSuffix + padding;\n break;\n case \"=\":\n value = valuePrefix + padding + value + valueSuffix;\n break;\n case \"^\":\n value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length);\n break;\n default:\n value = padding + valuePrefix + value + valueSuffix;\n break;\n }\n return numerals(value);\n }\n format.toString = function () {\n return specifier + \"\";\n };\n return format;\n }\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function (value) {\n return f(k * value) + prefix;\n };\n }\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}","import formatLocale from \"./locale.js\";\nvar locale;\nexport var format;\nexport var formatPrefix;\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}","export default function (grouping, thousands) {\n return function (value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n return t.reverse().join(thousands);\n };\n}","export default function (numerals) {\n return function (value) {\n return value.replace(/[0-9]/g, function (i) {\n return numerals[+i];\n });\n };\n}","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function (s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\":\n i0 = i1 = i;\n break;\n case \"0\":\n if (i0 === 0) i0 = i;\n i1 = i;\n break;\n default:\n if (!+s[i]) break out;\n if (i0 > 0) i0 = 0;\n break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}","import { tickStep } from \"d3-array\";\nimport { format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound } from \"d3-format\";\nexport default function tickFormat(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\":\n {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\":\n {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\":\n {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}","import exponent from \"./exponent.js\";\nexport default function (step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}","import exponent from \"./exponent.js\";\nexport default function (step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}","import exponent from \"./exponent.js\";\nexport default function (step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}","import { ticks, tickIncrement } from \"d3-array\";\nimport continuous, { copy } from \"./continuous.js\";\nimport { initRange } from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\nexport function linearish(scale) {\n var domain = scale.domain;\n scale.ticks = function (count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n scale.tickFormat = function (count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n scale.nice = function (count) {\n if (count == null) count = 10;\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n while (maxIter-- > 0) {\n step = tickIncrement(start, stop, count);\n if (step === prestep) {\n d[i0] = start;\n d[i1] = stop;\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n prestep = step;\n }\n return scale;\n };\n return scale;\n}\nexport default function linear() {\n var scale = continuous();\n scale.copy = function () {\n return copy(scale, linear());\n };\n initRange.apply(scale, arguments);\n return linearish(scale);\n}","export default function nice(domain, interval) {\n domain = domain.slice();\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}","import { ticks } from \"d3-array\";\nimport { format, formatSpecifier } from \"d3-format\";\nimport nice from \"./nice.js\";\nimport { copy, transformer } from \"./continuous.js\";\nimport { initRange } from \"./init.js\";\nfunction transformLog(x) {\n return Math.log(x);\n}\nfunction transformExp(x) {\n return Math.exp(x);\n}\nfunction transformLogn(x) {\n return -Math.log(-x);\n}\nfunction transformExpn(x) {\n return -Math.exp(-x);\n}\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\nfunction powp(base) {\n return base === 10 ? pow10 : base === Math.E ? Math.exp : function (x) {\n return Math.pow(base, x);\n };\n}\nfunction logp(base) {\n return base === Math.E ? Math.log : base === 10 && Math.log10 || base === 2 && Math.log2 || (base = Math.log(base), function (x) {\n return Math.log(x) / base;\n });\n}\nfunction reflect(f) {\n return function (x, k) {\n return -f(-x, k);\n };\n}\nexport function loggish(transform) {\n var scale = transform(transformLog, transformExp);\n var domain = scale.domain;\n var base = 10;\n var logs;\n var pows;\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) {\n logs = reflect(logs), pows = reflect(pows);\n transform(transformLogn, transformExpn);\n } else {\n transform(transformLog, transformExp);\n }\n return scale;\n }\n scale.base = function (_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n scale.domain = function (_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n scale.ticks = function (count) {\n var d = domain();\n var u = d[0];\n var v = d[d.length - 1];\n var r = v < u;\n if (r) {\n var _ref = [v, u];\n u = _ref[0];\n v = _ref[1];\n }\n var i = logs(u);\n var j = logs(v);\n var k;\n var t;\n var n = count == null ? 10 : +count;\n var z = [];\n if (!(base % 1) && j - i < n) {\n i = Math.floor(i), j = Math.ceil(j);\n if (u > 0) for (; i <= j; ++i) {\n for (k = 1; k < base; ++k) {\n t = i < 0 ? k / pows(-i) : k * pows(i);\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i <= j; ++i) {\n for (k = base - 1; k >= 1; --k) {\n t = i > 0 ? k / pows(-i) : k * pows(i);\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n if (z.length * 2 < n) z = ticks(u, v, n);\n } else {\n z = ticks(i, j, Math.min(j - i, n)).map(pows);\n }\n return r ? z.reverse() : z;\n };\n scale.tickFormat = function (count, specifier) {\n if (count == null) count = 10;\n if (specifier == null) specifier = base === 10 ? \"s\" : \",\";\n if (typeof specifier !== \"function\") {\n if (!(base % 1) && (specifier = formatSpecifier(specifier)).precision == null) specifier.trim = true;\n specifier = format(specifier);\n }\n if (count === Infinity) return specifier;\n var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return function (d) {\n var i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n scale.nice = function () {\n return domain(nice(domain(), {\n floor: function floor(x) {\n return pows(Math.floor(logs(x)));\n },\n ceil: function ceil(x) {\n return pows(Math.ceil(logs(x)));\n }\n }));\n };\n return scale;\n}\nexport default function log() {\n var scale = loggish(transformer()).domain([1, 10]);\n scale.copy = function () {\n return copy(scale, log()).base(scale.base());\n };\n initRange.apply(scale, arguments);\n return scale;\n}","import { linearish } from \"./linear.js\";\nimport { copy, identity, transformer } from \"./continuous.js\";\nimport { initRange } from \"./init.js\";\nfunction transformPow(exponent) {\n return function (x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n}\nfunction transformSqrt(x) {\n return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\nfunction transformSquare(x) {\n return x < 0 ? -x * x : x * x;\n}\nexport function powish(transform) {\n var scale = transform(identity, identity),\n exponent = 1;\n function rescale() {\n return exponent === 1 ? transform(identity, identity) : exponent === 0.5 ? transform(transformSqrt, transformSquare) : transform(transformPow(exponent), transformPow(1 / exponent));\n }\n scale.exponent = function (_) {\n return arguments.length ? (exponent = +_, rescale()) : exponent;\n };\n return linearish(scale);\n}\nexport default function pow() {\n var scale = powish(transformer());\n scale.copy = function () {\n return copy(scale, pow()).exponent(scale.exponent());\n };\n initRange.apply(scale, arguments);\n return scale;\n}\nexport function sqrt() {\n return pow.apply(null, arguments).exponent(0.5);\n}","import { linearish } from \"./linear.js\";\nimport { copy, transformer } from \"./continuous.js\";\nimport { initRange } from \"./init.js\";\nfunction transformSymlog(c) {\n return function (x) {\n return Math.sign(x) * Math.log1p(Math.abs(x / c));\n };\n}\nfunction transformSymexp(c) {\n return function (x) {\n return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n };\n}\nexport function symlogish(transform) {\n var c = 1,\n scale = transform(transformSymlog(c), transformSymexp(c));\n scale.constant = function (_) {\n return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n };\n return linearish(scale);\n}\nexport default function symlog() {\n var scale = symlogish(transformer());\n scale.copy = function () {\n return copy(scale, symlog()).constant(scale.constant());\n };\n return initRange.apply(scale, arguments);\n}","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport { bisector, tickStep } from \"d3-array\";\nimport { durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear } from \"./duration.js\";\nimport { millisecond } from \"./millisecond.js\";\nimport { second } from \"./second.js\";\nimport { timeMinute, utcMinute } from \"./minute.js\";\nimport { timeHour, utcHour } from \"./hour.js\";\nimport { timeDay, unixDay } from \"./day.js\";\nimport { timeSunday, utcSunday } from \"./week.js\";\nimport { timeMonth, utcMonth } from \"./month.js\";\nimport { timeYear, utcYear } from \"./year.js\";\nfunction ticker(year, month, week, day, hour, minute) {\n var tickIntervals = [[second, 1, durationSecond], [second, 5, 5 * durationSecond], [second, 15, 15 * durationSecond], [second, 30, 30 * durationSecond], [minute, 1, durationMinute], [minute, 5, 5 * durationMinute], [minute, 15, 15 * durationMinute], [minute, 30, 30 * durationMinute], [hour, 1, durationHour], [hour, 3, 3 * durationHour], [hour, 6, 6 * durationHour], [hour, 12, 12 * durationHour], [day, 1, durationDay], [day, 2, 2 * durationDay], [week, 1, durationWeek], [month, 1, durationMonth], [month, 3, 3 * durationMonth], [year, 1, durationYear]];\n function ticks(start, stop, count) {\n var reverse = stop < start;\n if (reverse) {\n var _ref = [stop, start];\n start = _ref[0];\n stop = _ref[1];\n }\n var interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n var ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n return reverse ? ticks.reverse() : ticks;\n }\n function tickInterval(start, stop, count) {\n var target = Math.abs(stop - start) / count;\n var i = bisector(function (_ref2) {\n var _ref3 = _slicedToArray(_ref2, 3),\n step = _ref3[2];\n return step;\n }).right(tickIntervals, target);\n if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n var _tickIntervals = _slicedToArray(tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i], 2),\n t = _tickIntervals[0],\n step = _tickIntervals[1];\n return t.every(step);\n }\n return [ticks, tickInterval];\n}\nvar _ticker = ticker(utcYear, utcMonth, utcSunday, unixDay, utcHour, utcMinute),\n _ticker2 = _slicedToArray(_ticker, 2),\n utcTicks = _ticker2[0],\n utcTickInterval = _ticker2[1];\nvar _ticker3 = ticker(timeYear, timeMonth, timeSunday, timeDay, timeHour, timeMinute),\n _ticker4 = _slicedToArray(_ticker3, 2),\n timeTicks = _ticker4[0],\n timeTickInterval = _ticker4[1];\nexport { utcTicks, utcTickInterval, timeTicks, timeTickInterval };","import { timeDay, timeSunday, timeMonday, timeThursday, timeYear, utcDay, utcSunday, utcMonday, utcThursday, utcYear } from \"d3-time\";\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\nfunction newDate(y, m, d) {\n return {\n y: y,\n m: m,\n d: d,\n H: 0,\n M: 0,\n S: 0,\n L: 0\n };\n}\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n function newFormat(specifier, formats) {\n return function (date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n if (!(date instanceof Date)) date = new Date(+date);\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n function newParse(specifier, Z) {\n return function (string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week,\n day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || (j = parse(d, string, j)) < 0) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n return j;\n }\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n return {\n format: function format(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function () {\n return specifier;\n };\n return f;\n },\n parse: function parse(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function () {\n return specifier;\n };\n return p;\n },\n utcFormat: function utcFormat(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function () {\n return specifier;\n };\n return f;\n },\n utcParse: function utcParse(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function () {\n return specifier;\n };\n return p;\n }\n };\n}\nvar pads = {\n \"-\": \"\",\n \"_\": \" \",\n \"0\": \"0\"\n },\n numberRe = /^\\s*\\d+/,\n // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\nfunction formatLookup(names) {\n return new Map(names.map(function (name, i) {\n return [name.toLowerCase(), i];\n }));\n}\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\nfunction dISO(d) {\n var day = d.getDay();\n return day >= 4 || day === 0 ? timeThursday(d) : timeThursday.ceil(d);\n}\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = day >= 4 || day === 0 ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\")) + pad(z / 60 | 0, \"0\", 2) + pad(z % 60, \"0\", 2);\n}\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return day >= 4 || day === 0 ? utcThursday(d) : utcThursday.ceil(d);\n}\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = day >= 4 || day === 0 ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\nfunction formatUTCZone() {\n return \"+0000\";\n}\nfunction formatLiteralPercent() {\n return \"%\";\n}\nfunction formatUnixTimestamp(d) {\n return +d;\n}\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}","import formatLocale from \"./locale.js\";\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}","import { timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeTicks, timeTickInterval } from \"d3-time\";\nimport { timeFormat } from \"d3-time-format\";\nimport continuous, { copy } from \"./continuous.js\";\nimport { initRange } from \"./init.js\";\nimport nice from \"./nice.js\";\nfunction date(t) {\n return new Date(t);\n}\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\nexport function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n var scale = continuous(),\n invert = scale.invert,\n domain = scale.domain;\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond : minute(date) < date ? formatSecond : hour(date) < date ? formatMinute : day(date) < date ? formatHour : month(date) < date ? week(date) < date ? formatDay : formatWeek : year(date) < date ? formatMonth : formatYear)(date);\n }\n scale.invert = function (y) {\n return new Date(invert(y));\n };\n scale.domain = function (_) {\n return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n };\n scale.ticks = function (interval) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n };\n scale.tickFormat = function (count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n scale.nice = function (interval) {\n var d = domain();\n if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n return interval ? domain(nice(d, interval)) : scale;\n };\n scale.copy = function () {\n return copy(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n };\n return scale;\n}\nexport default function time() {\n return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport { interpolate, interpolateRound } from \"d3-interpolate\";\nimport { identity } from \"./continuous.js\";\nimport { initInterpolator } from \"./init.js\";\nimport { linearish } from \"./linear.js\";\nimport { loggish } from \"./log.js\";\nimport { symlogish } from \"./symlog.js\";\nimport { powish } from \"./pow.js\";\nfunction transformer() {\n var x0 = 0,\n x1 = 1,\n t0,\n t1,\n k10,\n transform,\n interpolator = identity,\n clamp = false,\n unknown;\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n scale.domain = function (_) {\n var _ref;\n return arguments.length ? ((_ref = _slicedToArray(_, 2), x0 = _ref[0], x1 = _ref[1]), t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n };\n scale.clamp = function (_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n scale.interpolator = function (_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n function range(interpolate) {\n return function (_) {\n var _ref2;\n var r0, r1;\n return arguments.length ? ((_ref2 = _slicedToArray(_, 2), r0 = _ref2[0], r1 = _ref2[1]), interpolator = interpolate(r0, r1), scale) : [interpolator(0), interpolator(1)];\n };\n }\n scale.range = range(interpolate);\n scale.rangeRound = range(interpolateRound);\n scale.unknown = function (_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n return function (t) {\n transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n return scale;\n };\n}\nexport function copy(source, target) {\n return target.domain(source.domain()).interpolator(source.interpolator()).clamp(source.clamp()).unknown(source.unknown());\n}\nexport default function sequential() {\n var scale = linearish(transformer()(identity));\n scale.copy = function () {\n return copy(scale, sequential());\n };\n return initInterpolator.apply(scale, arguments);\n}\nexport function sequentialLog() {\n var scale = loggish(transformer()).domain([1, 10]);\n scale.copy = function () {\n return copy(scale, sequentialLog()).base(scale.base());\n };\n return initInterpolator.apply(scale, arguments);\n}\nexport function sequentialSymlog() {\n var scale = symlogish(transformer());\n scale.copy = function () {\n return copy(scale, sequentialSymlog()).constant(scale.constant());\n };\n return initInterpolator.apply(scale, arguments);\n}\nexport function sequentialPow() {\n var scale = powish(transformer());\n scale.copy = function () {\n return copy(scale, sequentialPow()).exponent(scale.exponent());\n };\n return initInterpolator.apply(scale, arguments);\n}\nexport function sequentialSqrt() {\n return sequentialPow.apply(null, arguments).exponent(0.5);\n}","import { default as value } from \"./value.js\";\nexport default function piecewise(interpolate, values) {\n if (values === undefined) values = interpolate, interpolate = value;\n var i = 0,\n n = values.length - 1,\n v = values[0],\n I = new Array(n < 0 ? 0 : n);\n while (i < n) I[i] = interpolate(v, v = values[++i]);\n return function (t) {\n var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n return I[i](t - i);\n };\n}","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport { interpolate, interpolateRound, piecewise } from \"d3-interpolate\";\nimport { identity } from \"./continuous.js\";\nimport { initInterpolator } from \"./init.js\";\nimport { linearish } from \"./linear.js\";\nimport { loggish } from \"./log.js\";\nimport { copy } from \"./sequential.js\";\nimport { symlogish } from \"./symlog.js\";\nimport { powish } from \"./pow.js\";\nfunction transformer() {\n var x0 = 0,\n x1 = 0.5,\n x2 = 1,\n s = 1,\n t0,\n t1,\n t2,\n k10,\n k21,\n interpolator = identity,\n transform,\n clamp = false,\n unknown;\n function scale(x) {\n return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (s * x < s * t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n scale.domain = function (_) {\n var _ref;\n return arguments.length ? ((_ref = _slicedToArray(_, 3), x0 = _ref[0], x1 = _ref[1], x2 = _ref[2]), t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), t2 = transform(x2 = +x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1, scale) : [x0, x1, x2];\n };\n scale.clamp = function (_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n scale.interpolator = function (_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n function range(interpolate) {\n return function (_) {\n var _ref2;\n var r0, r1, r2;\n return arguments.length ? ((_ref2 = _slicedToArray(_, 3), r0 = _ref2[0], r1 = _ref2[1], r2 = _ref2[2]), interpolator = piecewise(interpolate, [r0, r1, r2]), scale) : [interpolator(0), interpolator(0.5), interpolator(1)];\n };\n }\n scale.range = range(interpolate);\n scale.rangeRound = range(interpolateRound);\n scale.unknown = function (_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n return function (t) {\n transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1;\n return scale;\n };\n}\nexport default function diverging() {\n var scale = linearish(transformer()(identity));\n scale.copy = function () {\n return copy(scale, diverging());\n };\n return initInterpolator.apply(scale, arguments);\n}\nexport function divergingLog() {\n var scale = loggish(transformer()).domain([0.1, 1, 10]);\n scale.copy = function () {\n return copy(scale, divergingLog()).base(scale.base());\n };\n return initInterpolator.apply(scale, arguments);\n}\nexport function divergingSymlog() {\n var scale = symlogish(transformer());\n scale.copy = function () {\n return copy(scale, divergingSymlog()).constant(scale.constant());\n };\n return initInterpolator.apply(scale, arguments);\n}\nexport function divergingPow() {\n var scale = powish(transformer());\n scale.copy = function () {\n return copy(scale, divergingPow()).exponent(scale.exponent());\n };\n return initInterpolator.apply(scale, arguments);\n}\nexport function divergingSqrt() {\n return divergingPow.apply(null, arguments).exponent(0.5);\n}","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { ascending, bisect, quantileSorted as threshold } from \"d3-array\";\nimport { initRange } from \"./init.js\";\nexport default function quantile() {\n var domain = [],\n range = [],\n thresholds = [],\n unknown;\n function rescale() {\n var i = 0,\n n = Math.max(1, range.length);\n thresholds = new Array(n - 1);\n while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n return scale;\n }\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : range[bisect(thresholds, x)];\n }\n scale.invertExtent = function (y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : [i > 0 ? thresholds[i - 1] : domain[0], i < thresholds.length ? thresholds[i] : domain[domain.length - 1]];\n };\n scale.domain = function (_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n var _iterator = _createForOfIteratorHelper(_),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var d = _step.value;\n if (d != null && !isNaN(d = +d)) domain.push(d);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n domain.sort(ascending);\n return rescale();\n };\n scale.range = function (_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n scale.unknown = function (_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n scale.quantiles = function () {\n return thresholds.slice();\n };\n scale.copy = function () {\n return quantile().domain(domain).range(range).unknown(unknown);\n };\n return initRange.apply(scale, arguments);\n}","import superPropBase from \"./superPropBase.js\";\nexport default function _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get.bind();\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n return desc.value;\n };\n }\n return _get.apply(this, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n return object;\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct.bind();\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _assertThisInitialized from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js\";\nimport _get from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/get.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nimport _wrapNativeSuper from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nexport var InternMap = /*#__PURE__*/function (_Map) {\n _inherits(InternMap, _Map);\n var _super = _createSuper(InternMap);\n function InternMap(entries) {\n var _this;\n var key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : keyof;\n _classCallCheck(this, InternMap);\n _this = _super.call(this);\n Object.defineProperties(_assertThisInitialized(_this), {\n _intern: {\n value: new Map()\n },\n _key: {\n value: key\n }\n });\n if (entries != null) {\n var _iterator = _createForOfIteratorHelper(entries),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _step$value = _slicedToArray(_step.value, 2),\n _key2 = _step$value[0],\n value = _step$value[1];\n _this.set(_key2, value);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n return _this;\n }\n _createClass(InternMap, [{\n key: \"get\",\n value: function get(key) {\n return _get(_getPrototypeOf(InternMap.prototype), \"get\", this).call(this, intern_get(this, key));\n }\n }, {\n key: \"has\",\n value: function has(key) {\n return _get(_getPrototypeOf(InternMap.prototype), \"has\", this).call(this, intern_get(this, key));\n }\n }, {\n key: \"set\",\n value: function set(key, value) {\n return _get(_getPrototypeOf(InternMap.prototype), \"set\", this).call(this, intern_set(this, key), value);\n }\n }, {\n key: \"delete\",\n value: function _delete(key) {\n return _get(_getPrototypeOf(InternMap.prototype), \"delete\", this).call(this, intern_delete(this, key));\n }\n }]);\n return InternMap;\n}( /*#__PURE__*/_wrapNativeSuper(Map));\nexport var InternSet = /*#__PURE__*/function (_Set) {\n _inherits(InternSet, _Set);\n var _super2 = _createSuper(InternSet);\n function InternSet(values) {\n var _this2;\n var key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : keyof;\n _classCallCheck(this, InternSet);\n _this2 = _super2.call(this);\n Object.defineProperties(_assertThisInitialized(_this2), {\n _intern: {\n value: new Map()\n },\n _key: {\n value: key\n }\n });\n if (values != null) {\n var _iterator2 = _createForOfIteratorHelper(values),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var value = _step2.value;\n _this2.add(value);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n return _this2;\n }\n _createClass(InternSet, [{\n key: \"has\",\n value: function has(value) {\n return _get(_getPrototypeOf(InternSet.prototype), \"has\", this).call(this, intern_get(this, value));\n }\n }, {\n key: \"add\",\n value: function add(value) {\n return _get(_getPrototypeOf(InternSet.prototype), \"add\", this).call(this, intern_set(this, value));\n }\n }, {\n key: \"delete\",\n value: function _delete(value) {\n return _get(_getPrototypeOf(InternSet.prototype), \"delete\", this).call(this, intern_delete(this, value));\n }\n }]);\n return InternSet;\n}( /*#__PURE__*/_wrapNativeSuper(Set));\nfunction intern_get(_ref, value) {\n var _intern = _ref._intern,\n _key = _ref._key;\n var key = _key(value);\n return _intern.has(key) ? _intern.get(key) : value;\n}\nfunction intern_set(_ref2, value) {\n var _intern = _ref2._intern,\n _key = _ref2._key;\n var key = _key(value);\n if (_intern.has(key)) return _intern.get(key);\n _intern.set(key, value);\n return value;\n}\nfunction intern_delete(_ref3, value) {\n var _intern = _ref3._intern,\n _key = _ref3._key;\n var key = _key(value);\n if (_intern.has(key)) {\n value = _intern.get(key);\n _intern.delete(key);\n }\n return value;\n}\nfunction keyof(value) {\n return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { InternMap } from \"d3-array\";\nimport { initRange } from \"./init.js\";\nexport var implicit = Symbol(\"implicit\");\nexport default function ordinal() {\n var index = new InternMap(),\n domain = [],\n range = [],\n unknown = implicit;\n function scale(d) {\n var i = index.get(d);\n if (i === undefined) {\n if (unknown !== implicit) return unknown;\n index.set(d, i = domain.push(d) - 1);\n }\n return range[i % range.length];\n }\n scale.domain = function (_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new InternMap();\n var _iterator = _createForOfIteratorHelper(_),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var value = _step.value;\n if (index.has(value)) continue;\n index.set(value, domain.push(value) - 1);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return scale;\n };\n scale.range = function (_) {\n return arguments.length ? (range = Array.from(_), scale) : range.slice();\n };\n scale.unknown = function (_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n scale.copy = function () {\n return ordinal(domain, range).unknown(unknown);\n };\n initRange.apply(scale, arguments);\n return scale;\n}","export default function (range) {\n var n = range.length;\n return function (t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}","import { hue } from \"./color.js\";\nexport default function (a, b) {\n var i = hue(+a, +b);\n return function (t) {\n var x = i(t);\n return x - 360 * Math.floor(x / 360);\n };\n}","import decompose, { identity } from \"./decompose.js\";\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n var m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}","var degrees = 180 / Math.PI;\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\nexport default function (a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}","import number from \"../number.js\";\nimport { parseCss, parseSvg } from \"./parse.js\";\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({\n i: i - 4,\n x: number(xa, xb)\n }, {\n i: i - 2,\n x: number(ya, yb)\n });\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360;else if (b - a > 180) a += 360; // shortest path\n q.push({\n i: s.push(pop(s) + \"rotate(\", null, degParen) - 2,\n x: number(a, b)\n });\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({\n i: s.push(pop(s) + \"skewX(\", null, degParen) - 2,\n x: number(a, b)\n });\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({\n i: i - 4,\n x: number(xa, xb)\n }, {\n i: i - 2,\n x: number(ya, yb)\n });\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n return function (a, b) {\n var s = [],\n // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function (t) {\n var i = -1,\n n = q.length,\n o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");","var epsilon2 = 1e-12;\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\nexport default (function zoomRho(rho, rho2, rho4) {\n // p0 = [ux0, uy0, w0]\n // p1 = [ux1, uy1, w1]\n function zoom(p0, p1) {\n var ux0 = p0[0],\n uy0 = p0[1],\n w0 = p0[2],\n ux1 = p1[0],\n uy1 = p1[1],\n w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function i(t) {\n return [ux0 + t * dx, uy0 + t * dy, w0 * Math.exp(rho * t * S)];\n };\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function i(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [ux0 + u * dx, uy0 + u * dy, w0 * coshr0 / cosh(rho * s + r0)];\n };\n }\n i.duration = S * 1000 * rho / Math.SQRT2;\n return i;\n }\n zoom.rho = function (_) {\n var _1 = Math.max(1e-3, +_),\n _2 = _1 * _1,\n _4 = _2 * _2;\n return zoomRho(_1, _2, _4);\n };\n return zoom;\n})(Math.SQRT2, 2, 4);","import { hsl as colorHsl } from \"d3-color\";\nimport color, { hue } from \"./color.js\";\nfunction hsl(hue) {\n return function (start, end) {\n var h = hue((start = colorHsl(start)).h, (end = colorHsl(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function (t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n };\n}\nexport default hsl(hue);\nexport var hslLong = hsl(color);","export var radians = Math.PI / 180;\nexport var degrees = 180 / Math.PI;","import define, { extend } from \"./define.js\";\nimport { Color, rgbConvert, Rgb } from \"./color.js\";\nimport { degrees, radians } from \"./math.js\";\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nvar K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) return hcl2lab(o);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn),\n x,\n z;\n if (r === g && g === b) x = z = y;else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\nexport function gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\nexport default function lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\nexport function Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\ndefine(Lab, lab, extend(Color, {\n brighter: function brighter(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker: function darker(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb: function rgb() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new Rgb(lrgb2rgb(3.1338561 * x - 1.6168667 * y - 0.4906146 * z), lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z), lrgb2rgb(0.0719453 * x - 0.2289914 * y + 1.4052427 * z), this.opacity);\n }\n}));\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * degrees;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\nexport function lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\nexport function hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\nexport function Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\nfunction hcl2lab(o) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * radians;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\ndefine(Hcl, hcl, extend(Color, {\n brighter: function brighter(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker: function darker(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb: function rgb() {\n return hcl2lab(this).rgb();\n }\n}));","import { lab as colorLab } from \"d3-color\";\nimport color from \"./color.js\";\nexport default function lab(start, end) {\n var l = color((start = colorLab(start)).l, (end = colorLab(end)).l),\n a = color(start.a, end.a),\n b = color(start.b, end.b),\n opacity = color(start.opacity, end.opacity);\n return function (t) {\n start.l = l(t);\n start.a = a(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n}","import { hcl as colorHcl } from \"d3-color\";\nimport color, { hue } from \"./color.js\";\nfunction hcl(hue) {\n return function (start, end) {\n var h = hue((start = colorHcl(start)).h, (end = colorHcl(end)).h),\n c = color(start.c, end.c),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function (t) {\n start.h = h(t);\n start.c = c(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n };\n}\nexport default hcl(hue);\nexport var hclLong = hcl(color);","import define, { extend } from \"./define.js\";\nimport { Color, rgbConvert, Rgb, darker as _darker, brighter as _brighter } from \"./color.js\";\nimport { degrees, radians } from \"./math.js\";\nvar A = -0.14861,\n B = +1.78277,\n C = -0.29227,\n D = -0.90649,\n E = +1.97294,\n ED = E * D,\n EB = E * B,\n BC_DA = B * C - D * A;\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)),\n // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * degrees - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\nexport default function cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\nexport function Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\ndefine(Cubehelix, cubehelix, extend(Color, {\n brighter: function brighter(k) {\n k = k == null ? _brighter : Math.pow(_brighter, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function darker(k) {\n k = k == null ? _darker : Math.pow(_darker, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function rgb() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * radians,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new Rgb(255 * (l + a * (A * cosh + B * sinh)), 255 * (l + a * (C * cosh + D * sinh)), 255 * (l + a * (E * cosh)), this.opacity);\n }\n}));","import { cubehelix as colorCubehelix } from \"d3-color\";\nimport color, { hue } from \"./color.js\";\nfunction cubehelix(hue) {\n return function cubehelixGamma(y) {\n y = +y;\n function cubehelix(start, end) {\n var h = hue((start = colorCubehelix(start)).h, (end = colorCubehelix(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function (t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(Math.pow(t, y));\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n cubehelix.gamma = cubehelixGamma;\n return cubehelix;\n }(1);\n}\nexport default cubehelix(hue);\nexport var cubehelixLong = cubehelix(color);","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nvar _symbols, _formats;\nimport { toNumber, peek, toSet, array, constant, isNumber, span, isObject, isString, error, isArray } from 'vega-util';\nimport { bisectRight, range, bisect } from 'd3-array';\nimport * as $ from 'd3-scale';\nimport { scaleOrdinal, tickFormat as tickFormat$1 } from 'd3-scale';\nexport { scaleImplicit } from 'd3-scale';\nimport * as $$1 from 'd3-interpolate';\nimport { timeInterval, utcInterval } from 'vega-time';\nfunction bandSpace(count, paddingInner, paddingOuter) {\n var space = count - paddingInner + paddingOuter * 2;\n return count ? space > 0 ? space : 1 : 0;\n}\nvar Identity = 'identity';\nvar Linear = 'linear';\nvar Log = 'log';\nvar Pow = 'pow';\nvar Sqrt = 'sqrt';\nvar Symlog = 'symlog';\nvar Time = 'time';\nvar UTC = 'utc';\nvar Sequential = 'sequential';\nvar Diverging = 'diverging';\nvar Quantile = 'quantile';\nvar Quantize = 'quantize';\nvar Threshold = 'threshold';\nvar Ordinal = 'ordinal';\nvar Point = 'point';\nvar Band = 'band';\nvar BinOrdinal = 'bin-ordinal';\n\n// categories\nvar Continuous = 'continuous';\nvar Discrete = 'discrete';\nvar Discretizing = 'discretizing';\nvar Interpolating = 'interpolating';\nvar Temporal = 'temporal';\nfunction invertRange(scale) {\n return function (_) {\n var lo = _[0],\n hi = _[1],\n t;\n if (hi < lo) {\n t = lo;\n lo = hi;\n hi = t;\n }\n return [scale.invert(lo), scale.invert(hi)];\n };\n}\nfunction invertRangeExtent(scale) {\n return function (_) {\n var range = scale.range();\n var lo = _[0],\n hi = _[1],\n min = -1,\n max,\n t,\n i,\n n;\n if (hi < lo) {\n t = lo;\n lo = hi;\n hi = t;\n }\n for (i = 0, n = range.length; i < n; ++i) {\n if (range[i] >= lo && range[i] <= hi) {\n if (min < 0) min = i;\n max = i;\n }\n }\n if (min < 0) return undefined;\n lo = scale.invertExtent(range[min]);\n hi = scale.invertExtent(range[max]);\n return [lo[0] === undefined ? lo[1] : lo[0], hi[1] === undefined ? hi[0] : hi[1]];\n };\n}\nfunction band() {\n var scale = scaleOrdinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range;\n var range$1 = [0, 1],\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n delete scale.unknown;\n function rescale() {\n var n = domain().length,\n reverse = range$1[1] < range$1[0],\n stop = range$1[1 - reverse],\n space = bandSpace(n, paddingInner, paddingOuter);\n var start = range$1[reverse - 0];\n step = (stop - start) / (space || 1);\n if (round) {\n step = Math.floor(step);\n }\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) {\n start = Math.round(start);\n bandwidth = Math.round(bandwidth);\n }\n var values = range(n).map(function (i) {\n return start + step * i;\n });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n scale.domain = function (_) {\n if (arguments.length) {\n domain(_);\n return rescale();\n } else {\n return domain();\n }\n };\n scale.range = function (_) {\n if (arguments.length) {\n range$1 = [+_[0], +_[1]];\n return rescale();\n } else {\n return range$1.slice();\n }\n };\n scale.rangeRound = function (_) {\n range$1 = [+_[0], +_[1]];\n round = true;\n return rescale();\n };\n scale.bandwidth = function () {\n return bandwidth;\n };\n scale.step = function () {\n return step;\n };\n scale.round = function (_) {\n if (arguments.length) {\n round = !!_;\n return rescale();\n } else {\n return round;\n }\n };\n scale.padding = function (_) {\n if (arguments.length) {\n paddingOuter = Math.max(0, Math.min(1, _));\n paddingInner = paddingOuter;\n return rescale();\n } else {\n return paddingInner;\n }\n };\n scale.paddingInner = function (_) {\n if (arguments.length) {\n paddingInner = Math.max(0, Math.min(1, _));\n return rescale();\n } else {\n return paddingInner;\n }\n };\n scale.paddingOuter = function (_) {\n if (arguments.length) {\n paddingOuter = Math.max(0, Math.min(1, _));\n return rescale();\n } else {\n return paddingOuter;\n }\n };\n scale.align = function (_) {\n if (arguments.length) {\n align = Math.max(0, Math.min(1, _));\n return rescale();\n } else {\n return align;\n }\n };\n scale.invertRange = function (_) {\n // bail if range has null or undefined values\n if (_[0] == null || _[1] == null) return;\n var reverse = range$1[1] < range$1[0],\n values = reverse ? ordinalRange().reverse() : ordinalRange(),\n n = values.length - 1;\n var lo = +_[0],\n hi = +_[1],\n a,\n b,\n t;\n\n // bail if either range endpoint is invalid\n if (lo !== lo || hi !== hi) return;\n\n // order range inputs, bail if outside of scale range\n if (hi < lo) {\n t = lo;\n lo = hi;\n hi = t;\n }\n if (hi < values[0] || lo > range$1[1 - reverse]) return;\n\n // binary search to index into scale range\n a = Math.max(0, bisectRight(values, lo) - 1);\n b = lo === hi ? a : bisectRight(values, hi) - 1;\n\n // increment index a if lo is within padding gap\n if (lo - values[a] > bandwidth + 1e-10) ++a;\n if (reverse) {\n // map + swap\n t = a;\n a = n - b;\n b = n - t;\n }\n return a > b ? undefined : domain().slice(a, b + 1);\n };\n scale.invert = function (_) {\n var value = scale.invertRange([_, _]);\n return value ? value[0] : value;\n };\n scale.copy = function () {\n return band().domain(domain()).range(range$1).round(round).paddingInner(paddingInner).paddingOuter(paddingOuter).align(align);\n };\n return rescale();\n}\nfunction pointish(scale) {\n var copy = scale.copy;\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n scale.copy = function () {\n return pointish(copy());\n };\n return scale;\n}\nfunction point() {\n return pointish(band().paddingInner(1));\n}\nvar map = Array.prototype.map;\nfunction numbers(_) {\n return map.call(_, toNumber);\n}\nvar slice = Array.prototype.slice;\nfunction scaleBinOrdinal() {\n var domain = [],\n range = [];\n function scale(x) {\n return x == null || x !== x ? undefined : range[(bisect(domain, x) - 1) % range.length];\n }\n scale.domain = function (_) {\n if (arguments.length) {\n domain = numbers(_);\n return scale;\n } else {\n return domain.slice();\n }\n };\n scale.range = function (_) {\n if (arguments.length) {\n range = slice.call(_);\n return scale;\n } else {\n return range.slice();\n }\n };\n scale.tickFormat = function (count, specifier) {\n return tickFormat$1(domain[0], peek(domain), count == null ? 10 : count, specifier);\n };\n scale.copy = function () {\n return scaleBinOrdinal().domain(scale.domain()).range(scale.range());\n };\n return scale;\n}\n\n/** Private scale registry: should not be exported */\nvar scales = new Map();\nvar VEGA_SCALE = Symbol('vega_scale');\nfunction registerScale(scale) {\n scale[VEGA_SCALE] = true;\n return scale;\n}\n\n/**\n * Return true if object was created by a constructor from the vega-scale `scale` function.\n */\nfunction isRegisteredScale(scale) {\n return scale && scale[VEGA_SCALE] === true;\n}\n\n/**\n * Augment scales with their type and needed inverse methods.\n */\nfunction create(type, constructor, metadata) {\n var ctr = function scale() {\n var s = constructor();\n if (!s.invertRange) {\n s.invertRange = s.invert ? invertRange(s) : s.invertExtent ? invertRangeExtent(s) : undefined;\n }\n s.type = type;\n return registerScale(s);\n };\n ctr.metadata = toSet(array(metadata));\n return ctr;\n}\n\n/**\n * Registry function for adding and accessing scale constructor functions.\n * The *type* argument is a String indicating the name of the scale type.\n *\n * If the *scale* argument is not specified, this method returns the matching scale constructor in the registry, or `null` if not found.\n * If the *scale* argument is provided, it must be a scale constructor function to add to the registry under the given *type* name.\n * The *metadata* argument provides additional information to guide appropriate use of scales within Vega.\n *\n * *metadata* can be either a string or string array. The valid string values are:\n * - `\"continuous\"` - the scale is defined over a continuous-valued domain.\n * - `\"discrete\"` - the scale is defined over a discrete domain and range.\n * - `\"discretizing\"` - the scale discretizes a continuous domain to a discrete range.\n * - `\"interpolating\"` - the scale range is defined using a color interpolator.\n * - `\"log\"` - the scale performs a logarithmic transform of the continuous domain.\n * - `\"temporal\"` - the scale domain is defined over date-time values.\n */\nfunction scale(type, scale, metadata) {\n if (arguments.length > 1) {\n scales.set(type, create(type, scale, metadata));\n return this;\n } else {\n return isValidScaleType(type) ? scales.get(type) : undefined;\n }\n}\n\n// identity scale\nscale(Identity, $.scaleIdentity);\n\n// continuous scales\nscale(Linear, $.scaleLinear, Continuous);\nscale(Log, $.scaleLog, [Continuous, Log]);\nscale(Pow, $.scalePow, Continuous);\nscale(Sqrt, $.scaleSqrt, Continuous);\nscale(Symlog, $.scaleSymlog, Continuous);\nscale(Time, $.scaleTime, [Continuous, Temporal]);\nscale(UTC, $.scaleUtc, [Continuous, Temporal]);\n\n// sequential scales\nscale(Sequential, $.scaleSequential, [Continuous, Interpolating]); // backwards compat\nscale(\"\".concat(Sequential, \"-\").concat(Linear), $.scaleSequential, [Continuous, Interpolating]);\nscale(\"\".concat(Sequential, \"-\").concat(Log), $.scaleSequentialLog, [Continuous, Interpolating, Log]);\nscale(\"\".concat(Sequential, \"-\").concat(Pow), $.scaleSequentialPow, [Continuous, Interpolating]);\nscale(\"\".concat(Sequential, \"-\").concat(Sqrt), $.scaleSequentialSqrt, [Continuous, Interpolating]);\nscale(\"\".concat(Sequential, \"-\").concat(Symlog), $.scaleSequentialSymlog, [Continuous, Interpolating]);\n\n// diverging scales\nscale(\"\".concat(Diverging, \"-\").concat(Linear), $.scaleDiverging, [Continuous, Interpolating]);\nscale(\"\".concat(Diverging, \"-\").concat(Log), $.scaleDivergingLog, [Continuous, Interpolating, Log]);\nscale(\"\".concat(Diverging, \"-\").concat(Pow), $.scaleDivergingPow, [Continuous, Interpolating]);\nscale(\"\".concat(Diverging, \"-\").concat(Sqrt), $.scaleDivergingSqrt, [Continuous, Interpolating]);\nscale(\"\".concat(Diverging, \"-\").concat(Symlog), $.scaleDivergingSymlog, [Continuous, Interpolating]);\n\n// discretizing scales\nscale(Quantile, $.scaleQuantile, [Discretizing, Quantile]);\nscale(Quantize, $.scaleQuantize, Discretizing);\nscale(Threshold, $.scaleThreshold, Discretizing);\n\n// discrete scales\nscale(BinOrdinal, scaleBinOrdinal, [Discrete, Discretizing]);\nscale(Ordinal, $.scaleOrdinal, Discrete);\nscale(Band, band, Discrete);\nscale(Point, point, Discrete);\nfunction isValidScaleType(type) {\n return scales.has(type);\n}\nfunction hasType(key, type) {\n var s = scales.get(key);\n return s && s.metadata[type];\n}\nfunction isContinuous(key) {\n return hasType(key, Continuous);\n}\nfunction isDiscrete(key) {\n return hasType(key, Discrete);\n}\nfunction isDiscretizing(key) {\n return hasType(key, Discretizing);\n}\nfunction isLogarithmic(key) {\n return hasType(key, Log);\n}\nfunction isTemporal(key) {\n return hasType(key, Temporal);\n}\nfunction isInterpolating(key) {\n return hasType(key, Interpolating);\n}\nfunction isQuantile(key) {\n return hasType(key, Quantile);\n}\nvar scaleProps = ['clamp', 'base', 'constant', 'exponent'];\nfunction interpolateRange(interpolator, range) {\n var start = range[0],\n span = peek(range) - start;\n return function (i) {\n return interpolator(start + i * span);\n };\n}\nfunction interpolateColors(colors, type, gamma) {\n return $$1.piecewise(interpolate(type || 'rgb', gamma), colors);\n}\nfunction quantizeInterpolator(interpolator, count) {\n var samples = new Array(count),\n n = count + 1;\n for (var i = 0; i < count;) samples[i] = interpolator(++i / n);\n return samples;\n}\nfunction scaleCopy(scale) {\n var t = scale.type,\n s = scale.copy();\n s.type = t;\n return s;\n}\nfunction scaleFraction(scale$1, min, max) {\n var delta = max - min;\n var i, t, s;\n if (!delta || !Number.isFinite(delta)) {\n return constant(0.5);\n } else {\n i = (t = scale$1.type).indexOf('-');\n t = i < 0 ? t : t.slice(i + 1);\n s = scale(t)().domain([min, max]).range([0, 1]);\n scaleProps.forEach(function (m) {\n return scale$1[m] ? s[m](scale$1[m]()) : 0;\n });\n return s;\n }\n}\nfunction interpolate(type, gamma) {\n var interp = $$1[method(type)];\n return gamma != null && interp && interp.gamma ? interp.gamma(gamma) : interp;\n}\nfunction method(type) {\n return 'interpolate' + type.toLowerCase().split('-').map(function (s) {\n return s[0].toUpperCase() + s.slice(1);\n }).join('');\n}\nvar continuous = {\n blues: 'cfe1f2bed8eca8cee58fc1de74b2d75ba3cf4592c63181bd206fb2125ca40a4a90',\n greens: 'd3eecdc0e6baabdda594d3917bc77d60ba6c46ab5e329a512089430e7735036429',\n greys: 'e2e2e2d4d4d4c4c4c4b1b1b19d9d9d8888887575756262624d4d4d3535351e1e1e',\n oranges: 'fdd8b3fdc998fdb87bfda55efc9244f87f2cf06b18e4580bd14904b93d029f3303',\n purples: 'e2e1efd4d4e8c4c5e0b4b3d6a3a0cc928ec3827cb97566ae684ea25c3696501f8c',\n reds: 'fdc9b4fcb49afc9e80fc8767fa7051f6573fec3f2fdc2a25c81b1db21218970b13',\n blueGreen: 'd5efedc1e8e0a7ddd18bd2be70c6a958ba9144ad77319c5d2089460e7736036429',\n bluePurple: 'ccddecbad0e4a8c2dd9ab0d4919cc98d85be8b6db28a55a6873c99822287730f71',\n greenBlue: 'd3eecec5e8c3b1e1bb9bd8bb82cec269c2ca51b2cd3c9fc7288abd1675b10b60a1',\n orangeRed: 'fddcaffdcf9bfdc18afdad77fb9562f67d53ee6545e24932d32d1ebf130da70403',\n purpleBlue: 'dbdaebc8cee4b1c3de97b7d87bacd15b9fc93a90c01e7fb70b70ab056199045281',\n purpleBlueGreen: 'dbd8eac8cee4b0c3de93b7d872acd1549fc83892bb1c88a3097f8702736b016353',\n purpleRed: 'dcc9e2d3b3d7ce9eccd186c0da6bb2e14da0e23189d91e6fc61159ab07498f023a',\n redPurple: 'fccfccfcbec0faa9b8f98faff571a5ec539ddb3695c41b8aa908808d0179700174',\n yellowGreen: 'e4f4acd1eca0b9e2949ed68880c97c62bb6e47aa5e3297502083440e723b036034',\n yellowOrangeBrown: 'feeaa1fedd84fecc63feb746fca031f68921eb7215db5e0bc54c05ab3d038f3204',\n yellowOrangeRed: 'fee087fed16ffebd59fea849fd903efc7335f9522bee3423de1b20ca0b22af0225',\n blueOrange: '134b852f78b35da2cb9dcae1d2e5eff2f0ebfce0bafbbf74e8932fc5690d994a07',\n brownBlueGreen: '704108a0651ac79548e3c78af3e6c6eef1eac9e9e48ed1c74da79e187a72025147',\n purpleGreen: '5b1667834792a67fb6c9aed3e6d6e8eff0efd9efd5aedda971bb75368e490e5e29',\n purpleOrange: '4114696647968f83b7b9b4d6dadbebf3eeeafce0bafbbf74e8932fc5690d994a07',\n redBlue: '8c0d25bf363adf745ef4ae91fbdbc9f2efeed2e5ef9dcae15da2cb2f78b3134b85',\n redGrey: '8c0d25bf363adf745ef4ae91fcdccbfaf4f1e2e2e2c0c0c0969696646464343434',\n yellowGreenBlue: 'eff9bddbf1b4bde5b594d5b969c5be45b4c22c9ec02182b82163aa23479c1c3185',\n redYellowBlue: 'a50026d4322cf16e43fcac64fedd90faf8c1dcf1ecabd6e875abd04a74b4313695',\n redYellowGreen: 'a50026d4322cf16e43fcac63fedd8df9f7aed7ee8ea4d86e64bc6122964f006837',\n pinkYellowGreen: '8e0152c0267edd72adf0b3d6faddedf5f3efe1f2cab6de8780bb474f9125276419',\n spectral: '9e0142d13c4bf0704afcac63fedd8dfbf8b0e0f3a1a9dda269bda94288b55e4fa2',\n viridis: '440154470e61481a6c482575472f7d443a834144873d4e8a39568c35608d31688e2d708e2a788e27818e23888e21918d1f988b1fa08822a8842ab07f35b77943bf7154c56866cc5d7ad1518fd744a5db36bcdf27d2e21be9e51afde725',\n magma: '0000040404130b0924150e3720114b2c11603b0f704a107957157e651a80721f817f24828c29819a2e80a8327db6377ac43c75d1426fde4968e95462f1605df76f5cfa7f5efc8f65fe9f6dfeaf78febf84fece91fddea0fcedaffcfdbf',\n inferno: '0000040403130c0826170c3b240c4f330a5f420a68500d6c5d126e6b176e781c6d86216b932667a12b62ae305cbb3755c73e4cd24644dd513ae65c30ed6925f3771af8850ffb9506fca50afcb519fac62df6d645f2e661f3f484fcffa4',\n plasma: '0d088723069033059742039d5002a25d01a66a00a87801a88405a7900da49c179ea72198b12a90ba3488c33d80cb4779d35171da5a69e16462e76e5bed7953f2834cf68f44fa9a3dfca636fdb32ffec029fcce25f9dc24f5ea27f0f921',\n cividis: '00205100235800265d002961012b65042e670831690d346b11366c16396d1c3c6e213f6e26426e2c456e31476e374a6e3c4d6e42506e47536d4c566d51586e555b6e5a5e6e5e616e62646f66676f6a6a706e6d717270717573727976737c79747f7c75827f758682768985778c8877908b78938e789691789a94789e9778a19b78a59e77a9a177aea575b2a874b6ab73bbaf71c0b26fc5b66dc9b96acebd68d3c065d8c462ddc85fe2cb5ce7cf58ebd355f0d652f3da4ff7de4cfae249fce647',\n rainbow: '6e40aa883eb1a43db3bf3cafd83fa4ee4395fe4b83ff576eff6659ff7847ff8c38f3a130e2b72fcfcc36bee044aff05b8ff4576ff65b52f6673af27828ea8d1ddfa319d0b81cbecb23abd82f96e03d82e14c6edb5a5dd0664dbf6e40aa',\n sinebow: 'ff4040fc582af47218e78d0bd5a703bfbf00a7d5038de70b72f41858fc2a40ff402afc5818f4720be78d03d5a700bfbf03a7d50b8de71872f42a58fc4040ff582afc7218f48d0be7a703d5bf00bfd503a7e70b8df41872fc2a58ff4040',\n turbo: '23171b32204a3e2a71453493493eae4b49c54a53d7485ee44569ee4074f53c7ff8378af93295f72e9ff42ba9ef28b3e926bce125c5d925cdcf27d5c629dcbc2de3b232e9a738ee9d3ff39347f68950f9805afc7765fd6e70fe667cfd5e88fc5795fb51a1f84badf545b9f140c5ec3cd0e637dae034e4d931ecd12ef4c92bfac029ffb626ffad24ffa223ff9821ff8d1fff821dff771cfd6c1af76118f05616e84b14df4111d5380fcb2f0dc0260ab61f07ac1805a313029b0f00950c00910b00',\n browns: 'eedbbdecca96e9b97ae4a865dc9856d18954c7784cc0673fb85536ad44339f3632',\n tealBlues: 'bce4d89dd3d181c3cb65b3c245a2b9368fae347da0306a932c5985',\n teals: 'bbdfdfa2d4d58ac9c975bcbb61b0af4da5a43799982b8b8c1e7f7f127273006667',\n warmGreys: 'dcd4d0cec5c1c0b8b4b3aaa7a59c9998908c8b827f7e7673726866665c5a59504e',\n goldGreen: 'f4d166d5ca60b6c35c98bb597cb25760a6564b9c533f8f4f33834a257740146c36',\n goldOrange: 'f4d166f8be5cf8aa4cf5983bf3852aef701be2621fd65322c54923b142239e3a26',\n goldRed: 'f4d166f6be59f9aa51fc964ef6834bee734ae56249db5247cf4244c43141b71d3e',\n lightGreyRed: 'efe9e6e1dad7d5cbc8c8bdb9bbaea9cd967ddc7b43e15f19df4011dc000b',\n lightGreyTeal: 'e4eaead6dcddc8ced2b7c2c7a6b4bc64b0bf22a6c32295c11f85be1876bc',\n lightMulti: 'e0f1f2c4e9d0b0de9fd0e181f6e072f6c053f3993ef77440ef4a3c',\n lightOrange: 'f2e7daf7d5baf9c499fab184fa9c73f68967ef7860e8645bde515bd43d5b',\n lightTealBlue: 'e3e9e0c0dccf9aceca7abfc859afc0389fb9328dad2f7ca0276b95255988',\n darkBlue: '3232322d46681a5c930074af008cbf05a7ce25c0dd38daed50f3faffffff',\n darkGold: '3c3c3c584b37725e348c7631ae8b2bcfa424ecc31ef9de30fff184ffffff',\n darkGreen: '3a3a3a215748006f4d048942489e4276b340a6c63dd2d836ffeb2cffffaa',\n darkMulti: '3737371f5287197d8c29a86995ce3fffe800ffffff',\n darkRed: '3434347036339e3c38cc4037e75d1eec8620eeab29f0ce32ffeb2c'\n};\nvar discrete = {\n category10: '1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf',\n category20: '1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5',\n category20b: '393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6',\n category20c: '3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9',\n tableau10: '4c78a8f58518e4575672b7b254a24beeca3bb279a2ff9da69d755dbab0ac',\n tableau20: '4c78a89ecae9f58518ffbf7954a24b88d27ab79a20f2cf5b43989483bcb6e45756ff9d9879706ebab0acd67195fcbfd2b279a2d6a5c99e765fd8b5a5',\n accent: '7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666',\n dark2: '1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666',\n paired: 'a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928',\n pastel1: 'fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2',\n pastel2: 'b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc',\n set1: 'e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999',\n set2: '66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3',\n set3: '8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f'\n};\nfunction colors(palette) {\n var n = palette.length / 6 | 0,\n c = new Array(n);\n for (var i = 0; i < n;) {\n c[i] = '#' + palette.slice(i * 6, ++i * 6);\n }\n return c;\n}\nfunction apply(_, f) {\n for (var k in _) scheme(k, f(_[k]));\n}\nvar schemes = {};\napply(discrete, colors);\napply(continuous, function (_) {\n return interpolateColors(colors(_));\n});\nfunction scheme(name, scheme) {\n name = name && name.toLowerCase();\n if (arguments.length > 1) {\n schemes[name] = scheme;\n return this;\n } else {\n return schemes[name];\n }\n}\nvar SymbolLegend = 'symbol';\nvar DiscreteLegend = 'discrete';\nvar GradientLegend = 'gradient';\nvar defaultFormatter = function defaultFormatter(value) {\n return isArray(value) ? value.map(function (v) {\n return String(v);\n }) : String(value);\n};\nvar ascending = function ascending(a, b) {\n return a[1] - b[1];\n};\nvar descending = function descending(a, b) {\n return b[1] - a[1];\n};\n\n/**\n * Determine the tick count or interval function.\n * @param {Scale} scale - The scale for which to generate tick values.\n * @param {*} count - The desired tick count or interval specifier.\n * @param {number} minStep - The desired minimum step between tick values.\n * @return {*} - The tick count or interval function.\n */\nfunction tickCount(scale, count, minStep) {\n var step;\n if (isNumber(count)) {\n if (scale.bins) {\n count = Math.max(count, scale.bins.length);\n }\n if (minStep != null) {\n count = Math.min(count, Math.floor(span(scale.domain()) / minStep || 1));\n }\n }\n if (isObject(count)) {\n step = count.step;\n count = count.interval;\n }\n if (isString(count)) {\n count = scale.type === Time ? timeInterval(count) : scale.type == UTC ? utcInterval(count) : error('Only time and utc scales accept interval strings.');\n if (step) count = count.every(step);\n }\n return count;\n}\n\n/**\n * Filter a set of candidate tick values, ensuring that only tick values\n * that lie within the scale range are included.\n * @param {Scale} scale - The scale for which to generate tick values.\n * @param {Array<*>} ticks - The candidate tick values.\n * @param {*} count - The tick count or interval function.\n * @return {Array<*>} - The filtered tick values.\n */\nfunction validTicks(scale, ticks, count) {\n var range = scale.range(),\n lo = range[0],\n hi = peek(range),\n cmp = ascending;\n if (lo > hi) {\n range = hi;\n hi = lo;\n lo = range;\n cmp = descending;\n }\n lo = Math.floor(lo);\n hi = Math.ceil(hi);\n\n // filter ticks to valid values within the range\n // additionally sort ticks in range order (#2579)\n ticks = ticks.map(function (v) {\n return [v, scale(v)];\n }).filter(function (_) {\n return lo <= _[1] && _[1] <= hi;\n }).sort(cmp).map(function (_) {\n return _[0];\n });\n if (count > 0 && ticks.length > 1) {\n var endpoints = [ticks[0], peek(ticks)];\n while (ticks.length > count && ticks.length >= 3) {\n ticks = ticks.filter(function (_, i) {\n return !(i % 2);\n });\n }\n if (ticks.length < 3) {\n ticks = endpoints;\n }\n }\n return ticks;\n}\n\n/**\n * Generate tick values for the given scale and approximate tick count or\n * interval value. If the scale has a 'ticks' method, it will be used to\n * generate the ticks, with the count argument passed as a parameter. If the\n * scale lacks a 'ticks' method, the full scale domain will be returned.\n * @param {Scale} scale - The scale for which to generate tick values.\n * @param {*} [count] - The approximate number of desired ticks.\n * @return {Array<*>} - The generated tick values.\n */\nfunction tickValues(scale, count) {\n return scale.bins ? validTicks(scale, scale.bins) : scale.ticks ? scale.ticks(count) : scale.domain();\n}\n\n/**\n * Generate a label format function for a scale. If the scale has a\n * 'tickFormat' method, it will be used to generate the formatter, with the\n * count and specifier arguments passed as parameters. If the scale lacks a\n * 'tickFormat' method, the returned formatter performs simple string coercion.\n * If the input scale is a logarithmic scale and the format specifier does not\n * indicate a desired decimal precision, a special variable precision formatter\n * that automatically trims trailing zeroes will be generated.\n * @param {Scale} scale - The scale for which to generate the label formatter.\n * @param {*} [count] - The approximate number of desired ticks.\n * @param {string} [specifier] - The format specifier. Must be a legal d3\n * specifier string (see https://github.com/d3/d3-format#formatSpecifier) or\n * time multi-format specifier object.\n * @return {function(*):string} - The generated label formatter.\n */\nfunction tickFormat(locale, scale, count, specifier, formatType, noSkip) {\n var type = scale.type;\n var format = defaultFormatter;\n if (type === Time || formatType === Time) {\n format = locale.timeFormat(specifier);\n } else if (type === UTC || formatType === UTC) {\n format = locale.utcFormat(specifier);\n } else if (isLogarithmic(type)) {\n var varfmt = locale.formatFloat(specifier);\n if (noSkip || scale.bins) {\n format = varfmt;\n } else {\n var test = tickLog(scale, count, false);\n format = function format(_) {\n return test(_) ? varfmt(_) : '';\n };\n }\n } else if (scale.tickFormat) {\n // if d3 scale has tickFormat, it must be continuous\n var d = scale.domain();\n format = locale.formatSpan(d[0], d[d.length - 1], count, specifier);\n } else if (specifier) {\n format = locale.format(specifier);\n }\n return format;\n}\nfunction tickLog(scale, count, values) {\n var ticks = tickValues(scale, count),\n base = scale.base(),\n logb = Math.log(base),\n k = Math.max(1, base * count / ticks.length);\n\n // apply d3-scale's log format filter criteria\n var test = function test(d) {\n var i = d / Math.pow(base, Math.round(Math.log(d) / logb));\n if (i * base < base - 0.5) i *= base;\n return i <= k;\n };\n return values ? ticks.filter(test) : test;\n}\nvar symbols = (_symbols = {}, _defineProperty(_symbols, Quantile, 'quantiles'), _defineProperty(_symbols, Quantize, 'thresholds'), _defineProperty(_symbols, Threshold, 'domain'), _symbols);\nvar formats = (_formats = {}, _defineProperty(_formats, Quantile, 'quantiles'), _defineProperty(_formats, Quantize, 'domain'), _formats);\nfunction labelValues(scale, count) {\n return scale.bins ? binValues(scale.bins) : scale.type === Log ? tickLog(scale, count, true) : symbols[scale.type] ? thresholdValues(scale[symbols[scale.type]]()) : tickValues(scale, count);\n}\nfunction thresholdFormat(locale, scale, specifier) {\n var _ = scale[formats[scale.type]](),\n n = _.length;\n var d = n > 1 ? _[1] - _[0] : _[0],\n i;\n for (i = 1; i < n; ++i) {\n d = Math.min(d, _[i] - _[i - 1]);\n }\n\n // tickCount = 3 ticks times 10 for increased resolution\n return locale.formatSpan(0, d, 3 * 10, specifier);\n}\nfunction thresholdValues(thresholds) {\n var values = [-Infinity].concat(thresholds);\n values.max = +Infinity;\n return values;\n}\nfunction binValues(bins) {\n var values = bins.slice(0, -1);\n values.max = peek(bins);\n return values;\n}\nvar isDiscreteRange = function isDiscreteRange(scale) {\n return symbols[scale.type] || scale.bins;\n};\nfunction labelFormat(locale, scale, count, type, specifier, formatType, noSkip) {\n var format = formats[scale.type] && formatType !== Time && formatType !== UTC ? thresholdFormat(locale, scale, specifier) : tickFormat(locale, scale, count, specifier, formatType, noSkip);\n return type === SymbolLegend && isDiscreteRange(scale) ? formatRange(format) : type === DiscreteLegend ? formatDiscrete(format) : formatPoint(format);\n}\nvar formatRange = function formatRange(format) {\n return function (value, index, array) {\n var limit = get(array[index + 1], get(array.max, +Infinity)),\n lo = formatValue(value, format),\n hi = formatValue(limit, format);\n return lo && hi ? lo + \" \\u2013 \" + hi : hi ? '< ' + hi : \"\\u2265 \" + lo;\n };\n};\nvar get = function get(value, dflt) {\n return value != null ? value : dflt;\n};\nvar formatDiscrete = function formatDiscrete(format) {\n return function (value, index) {\n return index ? format(value) : null;\n };\n};\nvar formatPoint = function formatPoint(format) {\n return function (value) {\n return format(value);\n };\n};\nvar formatValue = function formatValue(value, format) {\n return Number.isFinite(value) ? format(value) : null;\n};\nfunction labelFraction(scale) {\n var domain = scale.domain(),\n count = domain.length - 1;\n var lo = +domain[0],\n hi = +peek(domain),\n span = hi - lo;\n if (scale.type === Threshold) {\n var adjust = count ? span / count : 0.1;\n lo -= adjust;\n hi += adjust;\n span = hi - lo;\n }\n return function (value) {\n return (value - lo) / span;\n };\n}\nfunction format(locale, scale, specifier, formatType) {\n var type = formatType || scale.type;\n\n // replace abbreviated time specifiers to improve screen reader experience\n if (isString(specifier) && isTemporal(type)) {\n specifier = specifier.replace(/%a/g, '%A').replace(/%b/g, '%B');\n }\n return !specifier && type === Time ? locale.timeFormat('%A, %d %B %Y, %X') : !specifier && type === UTC ? locale.utcFormat('%A, %d %B %Y, %X UTC') : labelFormat(locale, scale, 5, null, specifier, formatType, true);\n}\nfunction domainCaption(locale, scale, opt) {\n opt = opt || {};\n var max = Math.max(3, opt.maxlen || 7),\n fmt = format(locale, scale, opt.format, opt.formatType);\n\n // if scale breaks domain into bins, describe boundaries\n if (isDiscretizing(scale.type)) {\n var v = labelValues(scale).slice(1).map(fmt),\n n = v.length;\n return \"\".concat(n, \" boundar\").concat(n === 1 ? 'y' : 'ies', \": \").concat(v.join(', '));\n }\n\n // if scale domain is discrete, list values\n else if (isDiscrete(scale.type)) {\n var d = scale.domain(),\n _n = d.length,\n _v = _n > max ? d.slice(0, max - 2).map(fmt).join(', ') + ', ending with ' + d.slice(-1).map(fmt) : d.map(fmt).join(', ');\n return \"\".concat(_n, \" value\").concat(_n === 1 ? '' : 's', \": \").concat(_v);\n }\n\n // if scale domain is continuous, describe value range\n else {\n var _d = scale.domain();\n return \"values from \".concat(fmt(_d[0]), \" to \").concat(fmt(peek(_d)));\n }\n}\nexport { Band, BinOrdinal, DiscreteLegend, Diverging, GradientLegend, Identity, Linear, Log, Ordinal, Point, Pow, Quantile, Quantize, Sequential, Sqrt, SymbolLegend, Symlog, Threshold, Time, UTC, bandSpace, domainCaption, interpolate, interpolateColors, interpolateRange, isContinuous, isDiscrete, isDiscretizing, isInterpolating, isLogarithmic, isQuantile, isRegisteredScale, isTemporal, isValidScaleType, labelFormat, labelFraction, labelValues, quantizeInterpolator, registerScale, scale, scaleCopy, scaleFraction, scheme, tickCount, tickFormat, tickValues, validTicks };","export default function (interpolator, n) {\n var samples = new Array(n);\n for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n return samples;\n}","import { linearish } from \"./linear.js\";\nimport number from \"./number.js\";\nexport default function identity(domain) {\n var unknown;\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : x;\n }\n scale.invert = scale;\n scale.domain = scale.range = function (_) {\n return arguments.length ? (domain = Array.from(_, number), scale) : domain.slice();\n };\n scale.unknown = function (_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n scale.copy = function () {\n return identity(domain).unknown(unknown);\n };\n domain = arguments.length ? Array.from(domain, number) : [0, 1];\n return linearish(scale);\n}","import { utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcTicks, utcTickInterval } from \"d3-time\";\nimport { utcFormat } from \"d3-time-format\";\nimport { calendar } from \"./time.js\";\nimport { initRange } from \"./init.js\";\nexport default function utcTime() {\n return initRange.apply(calendar(utcTicks, utcTickInterval, utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport { bisect } from \"d3-array\";\nimport { linearish } from \"./linear.js\";\nimport { initRange } from \"./init.js\";\nexport default function quantize() {\n var x0 = 0,\n x1 = 1,\n n = 1,\n domain = [0.5],\n range = [0, 1],\n unknown;\n function scale(x) {\n return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n function rescale() {\n var i = -1;\n domain = new Array(n);\n while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n return scale;\n }\n scale.domain = function (_) {\n var _ref;\n return arguments.length ? ((_ref = _slicedToArray(_, 2), x0 = _ref[0], x1 = _ref[1]), x0 = +x0, x1 = +x1, rescale()) : [x0, x1];\n };\n scale.range = function (_) {\n return arguments.length ? (n = (range = Array.from(_)).length - 1, rescale()) : range.slice();\n };\n scale.invertExtent = function (y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : i < 1 ? [x0, domain[0]] : i >= n ? [domain[n - 1], x1] : [domain[i - 1], domain[i]];\n };\n scale.unknown = function (_) {\n return arguments.length ? (unknown = _, scale) : scale;\n };\n scale.thresholds = function () {\n return domain.slice();\n };\n scale.copy = function () {\n return quantize().domain([x0, x1]).range(range).unknown(unknown);\n };\n return initRange.apply(linearish(scale), arguments);\n}","import { bisect } from \"d3-array\";\nimport { initRange } from \"./init.js\";\nexport default function threshold() {\n var domain = [0.5],\n range = [0, 1],\n unknown,\n n = 1;\n function scale(x) {\n return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n scale.domain = function (_) {\n return arguments.length ? (domain = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n };\n scale.range = function (_) {\n return arguments.length ? (range = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n };\n scale.invertExtent = function (y) {\n var i = range.indexOf(y);\n return [domain[i - 1], domain[i]];\n };\n scale.unknown = function (_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n scale.copy = function () {\n return threshold().domain(domain).range(range).unknown(unknown);\n };\n return initRange.apply(scale, arguments);\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { hasOwnProperty, isFunction, inherits, truthy, lruCache, isArray, error, toSet, array, peek, extend, isNumber, isObject } from 'vega-util';\nimport { curveBasis, curveBasisClosed, curveBasisOpen, curveBundle, curveCardinal, curveCardinalOpen, curveCardinalClosed, curveCatmullRom, curveCatmullRomClosed, curveCatmullRomOpen, curveLinear, curveLinearClosed, curveMonotoneY, curveMonotoneX, curveNatural, curveStep, curveStepAfter, curveStepBefore, arc as arc$2, area as area$2, line as line$2, symbol as symbol$2 } from 'd3-shape';\nimport { path as path$3 } from 'd3-path';\nexport { path } from 'd3-path';\nimport { image as image$1, canvas } from 'vega-canvas';\nimport { loader } from 'vega-loader';\nimport { isDiscrete, domainCaption } from 'vega-scale';\nvar gradient_id = 0;\nfunction resetSVGGradientId() {\n gradient_id = 0;\n}\nvar patternPrefix = 'p_';\nfunction isGradient(value) {\n return value && value.gradient;\n}\nfunction gradientRef(g, defs, base) {\n var type = g.gradient;\n var id = g.id,\n prefix = type === 'radial' ? patternPrefix : '';\n\n // check id, assign default values as needed\n if (!id) {\n id = g.id = 'gradient_' + gradient_id++;\n if (type === 'radial') {\n g.x1 = get(g.x1, 0.5);\n g.y1 = get(g.y1, 0.5);\n g.r1 = get(g.r1, 0);\n g.x2 = get(g.x2, 0.5);\n g.y2 = get(g.y2, 0.5);\n g.r2 = get(g.r2, 0.5);\n prefix = patternPrefix;\n } else {\n g.x1 = get(g.x1, 0);\n g.y1 = get(g.y1, 0);\n g.x2 = get(g.x2, 1);\n g.y2 = get(g.y2, 0);\n }\n }\n\n // register definition\n defs[id] = g;\n\n // return url reference\n return 'url(' + (base || '') + '#' + prefix + id + ')';\n}\nfunction get(val, def) {\n return val != null ? val : def;\n}\nfunction Gradient(p0, p1) {\n var stops = [],\n gradient;\n return gradient = {\n gradient: 'linear',\n x1: p0 ? p0[0] : 0,\n y1: p0 ? p0[1] : 0,\n x2: p1 ? p1[0] : 1,\n y2: p1 ? p1[1] : 0,\n stops: stops,\n stop: function stop(offset, color) {\n stops.push({\n offset: offset,\n color: color\n });\n return gradient;\n }\n };\n}\nvar lookup = {\n 'basis': {\n curve: curveBasis\n },\n 'basis-closed': {\n curve: curveBasisClosed\n },\n 'basis-open': {\n curve: curveBasisOpen\n },\n 'bundle': {\n curve: curveBundle,\n tension: 'beta',\n value: 0.85\n },\n 'cardinal': {\n curve: curveCardinal,\n tension: 'tension',\n value: 0\n },\n 'cardinal-open': {\n curve: curveCardinalOpen,\n tension: 'tension',\n value: 0\n },\n 'cardinal-closed': {\n curve: curveCardinalClosed,\n tension: 'tension',\n value: 0\n },\n 'catmull-rom': {\n curve: curveCatmullRom,\n tension: 'alpha',\n value: 0.5\n },\n 'catmull-rom-closed': {\n curve: curveCatmullRomClosed,\n tension: 'alpha',\n value: 0.5\n },\n 'catmull-rom-open': {\n curve: curveCatmullRomOpen,\n tension: 'alpha',\n value: 0.5\n },\n 'linear': {\n curve: curveLinear\n },\n 'linear-closed': {\n curve: curveLinearClosed\n },\n 'monotone': {\n horizontal: curveMonotoneY,\n vertical: curveMonotoneX\n },\n 'natural': {\n curve: curveNatural\n },\n 'step': {\n curve: curveStep\n },\n 'step-after': {\n curve: curveStepAfter\n },\n 'step-before': {\n curve: curveStepBefore\n }\n};\nfunction curves(type, orientation, tension) {\n var entry = hasOwnProperty(lookup, type) && lookup[type],\n curve = null;\n if (entry) {\n curve = entry.curve || entry[orientation || 'vertical'];\n if (entry.tension && tension != null) {\n curve = curve[entry.tension](tension);\n }\n }\n return curve;\n}\nvar paramCounts = {\n m: 2,\n l: 2,\n h: 1,\n v: 1,\n z: 0,\n c: 6,\n s: 4,\n q: 4,\n t: 2,\n a: 7\n};\nvar commandPattern = /[mlhvzcsqta]([^mlhvzcsqta]+|$)/gi;\nvar numberPattern = /^[+-]?(([0-9]*\\.[0-9]+)|([0-9]+\\.)|([0-9]+))([eE][+-]?[0-9]+)?/;\nvar spacePattern = /^((\\s+,?\\s*)|(,\\s*))/;\nvar flagPattern = /^[01]/;\nfunction parse(path) {\n var commands = [];\n var matches = path.match(commandPattern) || [];\n matches.forEach(function (str) {\n var cmd = str[0];\n var type = cmd.toLowerCase();\n\n // parse parameters\n var paramCount = paramCounts[type];\n var params = parseParams(type, paramCount, str.slice(1).trim());\n var count = params.length;\n\n // error checking based on parameter count\n if (count < paramCount || count && count % paramCount !== 0) {\n throw Error('Invalid SVG path, incorrect parameter count');\n }\n\n // register the command\n commands.push([cmd].concat(_toConsumableArray(params.slice(0, paramCount))));\n\n // exit now if we're done, also handles zero-param 'z'\n if (count === paramCount) {\n return;\n }\n\n // handle implicit line-to\n if (type === 'm') {\n cmd = cmd === 'M' ? 'L' : 'l';\n }\n\n // repeat command when given extended param list\n for (var i = paramCount; i < count; i += paramCount) {\n commands.push([cmd].concat(_toConsumableArray(params.slice(i, i + paramCount))));\n }\n });\n return commands;\n}\nfunction parseParams(type, paramCount, segment) {\n var params = [];\n for (var index = 0; paramCount && index < segment.length;) {\n for (var i = 0; i < paramCount; ++i) {\n var pattern = type === 'a' && (i === 3 || i === 4) ? flagPattern : numberPattern;\n var match = segment.slice(index).match(pattern);\n if (match === null) {\n throw Error('Invalid SVG path, incorrect parameter type');\n }\n index += match[0].length;\n params.push(+match[0]);\n var ws = segment.slice(index).match(spacePattern);\n if (ws !== null) {\n index += ws[0].length;\n }\n }\n }\n return params;\n}\nvar DegToRad = Math.PI / 180;\nvar Epsilon = 1e-14;\nvar HalfPi = Math.PI / 2;\nvar Tau = Math.PI * 2;\nvar HalfSqrt3 = Math.sqrt(3) / 2;\nvar segmentCache = {};\nvar bezierCache = {};\nvar join = [].join;\n\n// Copied from Inkscape svgtopdf, thanks!\nfunction segments(x, y, rx, ry, large, sweep, rotateX, ox, oy) {\n var key = join.call(arguments);\n if (segmentCache[key]) {\n return segmentCache[key];\n }\n var th = rotateX * DegToRad;\n var sin_th = Math.sin(th);\n var cos_th = Math.cos(th);\n rx = Math.abs(rx);\n ry = Math.abs(ry);\n var px = cos_th * (ox - x) * 0.5 + sin_th * (oy - y) * 0.5;\n var py = cos_th * (oy - y) * 0.5 - sin_th * (ox - x) * 0.5;\n var pl = px * px / (rx * rx) + py * py / (ry * ry);\n if (pl > 1) {\n pl = Math.sqrt(pl);\n rx *= pl;\n ry *= pl;\n }\n var a00 = cos_th / rx;\n var a01 = sin_th / rx;\n var a10 = -sin_th / ry;\n var a11 = cos_th / ry;\n var x0 = a00 * ox + a01 * oy;\n var y0 = a10 * ox + a11 * oy;\n var x1 = a00 * x + a01 * y;\n var y1 = a10 * x + a11 * y;\n var d = (x1 - x0) * (x1 - x0) + (y1 - y0) * (y1 - y0);\n var sfactor_sq = 1 / d - 0.25;\n if (sfactor_sq < 0) sfactor_sq = 0;\n var sfactor = Math.sqrt(sfactor_sq);\n if (sweep == large) sfactor = -sfactor;\n var xc = 0.5 * (x0 + x1) - sfactor * (y1 - y0);\n var yc = 0.5 * (y0 + y1) + sfactor * (x1 - x0);\n var th0 = Math.atan2(y0 - yc, x0 - xc);\n var th1 = Math.atan2(y1 - yc, x1 - xc);\n var th_arc = th1 - th0;\n if (th_arc < 0 && sweep === 1) {\n th_arc += Tau;\n } else if (th_arc > 0 && sweep === 0) {\n th_arc -= Tau;\n }\n var segs = Math.ceil(Math.abs(th_arc / (HalfPi + 0.001)));\n var result = [];\n for (var i = 0; i < segs; ++i) {\n var th2 = th0 + i * th_arc / segs;\n var th3 = th0 + (i + 1) * th_arc / segs;\n result[i] = [xc, yc, th2, th3, rx, ry, sin_th, cos_th];\n }\n return segmentCache[key] = result;\n}\nfunction bezier(params) {\n var key = join.call(params);\n if (bezierCache[key]) {\n return bezierCache[key];\n }\n var cx = params[0],\n cy = params[1],\n th0 = params[2],\n th1 = params[3],\n rx = params[4],\n ry = params[5],\n sin_th = params[6],\n cos_th = params[7];\n var a00 = cos_th * rx;\n var a01 = -sin_th * ry;\n var a10 = sin_th * rx;\n var a11 = cos_th * ry;\n var cos_th0 = Math.cos(th0);\n var sin_th0 = Math.sin(th0);\n var cos_th1 = Math.cos(th1);\n var sin_th1 = Math.sin(th1);\n var th_half = 0.5 * (th1 - th0);\n var sin_th_h2 = Math.sin(th_half * 0.5);\n var t = 8 / 3 * sin_th_h2 * sin_th_h2 / Math.sin(th_half);\n var x1 = cx + cos_th0 - t * sin_th0;\n var y1 = cy + sin_th0 + t * cos_th0;\n var x3 = cx + cos_th1;\n var y3 = cy + sin_th1;\n var x2 = x3 + t * sin_th1;\n var y2 = y3 - t * cos_th1;\n return bezierCache[key] = [a00 * x1 + a01 * y1, a10 * x1 + a11 * y1, a00 * x2 + a01 * y2, a10 * x2 + a11 * y2, a00 * x3 + a01 * y3, a10 * x3 + a11 * y3];\n}\nvar temp = ['l', 0, 0, 0, 0, 0, 0, 0];\nfunction scale$1(current, sX, sY) {\n var c = temp[0] = current[0];\n if (c === 'a' || c === 'A') {\n temp[1] = sX * current[1];\n temp[2] = sY * current[2];\n temp[3] = current[3];\n temp[4] = current[4];\n temp[5] = current[5];\n temp[6] = sX * current[6];\n temp[7] = sY * current[7];\n } else if (c === 'h' || c === 'H') {\n temp[1] = sX * current[1];\n } else if (c === 'v' || c === 'V') {\n temp[1] = sY * current[1];\n } else {\n for (var i = 1, n = current.length; i < n; ++i) {\n temp[i] = (i % 2 == 1 ? sX : sY) * current[i];\n }\n }\n return temp;\n}\nfunction pathRender(context, path, l, t, sX, sY) {\n var current,\n // current instruction\n previous = null,\n x = 0,\n // current x\n y = 0,\n // current y\n controlX = 0,\n // current control point x\n controlY = 0,\n // current control point y\n tempX,\n tempY,\n tempControlX,\n tempControlY,\n anchorX = 0,\n anchorY = 0;\n if (l == null) l = 0;\n if (t == null) t = 0;\n if (sX == null) sX = 1;\n if (sY == null) sY = sX;\n if (context.beginPath) context.beginPath();\n for (var i = 0, len = path.length; i < len; ++i) {\n current = path[i];\n if (sX !== 1 || sY !== 1) {\n current = scale$1(current, sX, sY);\n }\n switch (current[0]) {\n // first letter\n\n case 'l':\n // lineto, relative\n x += current[1];\n y += current[2];\n context.lineTo(x + l, y + t);\n break;\n case 'L':\n // lineto, absolute\n x = current[1];\n y = current[2];\n context.lineTo(x + l, y + t);\n break;\n case 'h':\n // horizontal lineto, relative\n x += current[1];\n context.lineTo(x + l, y + t);\n break;\n case 'H':\n // horizontal lineto, absolute\n x = current[1];\n context.lineTo(x + l, y + t);\n break;\n case 'v':\n // vertical lineto, relative\n y += current[1];\n context.lineTo(x + l, y + t);\n break;\n case 'V':\n // verical lineto, absolute\n y = current[1];\n context.lineTo(x + l, y + t);\n break;\n case 'm':\n // moveTo, relative\n x += current[1];\n y += current[2];\n anchorX = x;\n anchorY = y;\n context.moveTo(x + l, y + t);\n break;\n case 'M':\n // moveTo, absolute\n x = current[1];\n y = current[2];\n anchorX = x;\n anchorY = y;\n context.moveTo(x + l, y + t);\n break;\n case 'c':\n // bezierCurveTo, relative\n tempX = x + current[5];\n tempY = y + current[6];\n controlX = x + current[3];\n controlY = y + current[4];\n context.bezierCurveTo(x + current[1] + l,\n // x1\n y + current[2] + t,\n // y1\n controlX + l,\n // x2\n controlY + t,\n // y2\n tempX + l, tempY + t);\n x = tempX;\n y = tempY;\n break;\n case 'C':\n // bezierCurveTo, absolute\n x = current[5];\n y = current[6];\n controlX = current[3];\n controlY = current[4];\n context.bezierCurveTo(current[1] + l, current[2] + t, controlX + l, controlY + t, x + l, y + t);\n break;\n case 's':\n // shorthand cubic bezierCurveTo, relative\n // transform to absolute x,y\n tempX = x + current[3];\n tempY = y + current[4];\n // calculate reflection of previous control points\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n context.bezierCurveTo(controlX + l, controlY + t, x + current[1] + l, y + current[2] + t, tempX + l, tempY + t);\n\n // set control point to 2nd one of this command\n // the first control point is assumed to be the reflection of\n // the second control point on the previous command relative\n // to the current point.\n controlX = x + current[1];\n controlY = y + current[2];\n x = tempX;\n y = tempY;\n break;\n case 'S':\n // shorthand cubic bezierCurveTo, absolute\n tempX = current[3];\n tempY = current[4];\n // calculate reflection of previous control points\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n context.bezierCurveTo(controlX + l, controlY + t, current[1] + l, current[2] + t, tempX + l, tempY + t);\n x = tempX;\n y = tempY;\n // set control point to 2nd one of this command\n // the first control point is assumed to be the reflection of\n // the second control point on the previous command relative\n // to the current point.\n controlX = current[1];\n controlY = current[2];\n break;\n case 'q':\n // quadraticCurveTo, relative\n // transform to absolute x,y\n tempX = x + current[3];\n tempY = y + current[4];\n controlX = x + current[1];\n controlY = y + current[2];\n context.quadraticCurveTo(controlX + l, controlY + t, tempX + l, tempY + t);\n x = tempX;\n y = tempY;\n break;\n case 'Q':\n // quadraticCurveTo, absolute\n tempX = current[3];\n tempY = current[4];\n context.quadraticCurveTo(current[1] + l, current[2] + t, tempX + l, tempY + t);\n x = tempX;\n y = tempY;\n controlX = current[1];\n controlY = current[2];\n break;\n case 't':\n // shorthand quadraticCurveTo, relative\n\n // transform to absolute x,y\n tempX = x + current[1];\n tempY = y + current[2];\n if (previous[0].match(/[QqTt]/) === null) {\n // If there is no previous command or if the previous command was not a Q, q, T or t,\n // assume the control point is coincident with the current point\n controlX = x;\n controlY = y;\n } else if (previous[0] === 't') {\n // calculate reflection of previous control points for t\n controlX = 2 * x - tempControlX;\n controlY = 2 * y - tempControlY;\n } else if (previous[0] === 'q') {\n // calculate reflection of previous control points for q\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n }\n tempControlX = controlX;\n tempControlY = controlY;\n context.quadraticCurveTo(controlX + l, controlY + t, tempX + l, tempY + t);\n x = tempX;\n y = tempY;\n controlX = x + current[1];\n controlY = y + current[2];\n break;\n case 'T':\n tempX = current[1];\n tempY = current[2];\n\n // calculate reflection of previous control points\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n context.quadraticCurveTo(controlX + l, controlY + t, tempX + l, tempY + t);\n x = tempX;\n y = tempY;\n break;\n case 'a':\n drawArc(context, x + l, y + t, [current[1], current[2], current[3], current[4], current[5], current[6] + x + l, current[7] + y + t]);\n x += current[6];\n y += current[7];\n break;\n case 'A':\n drawArc(context, x + l, y + t, [current[1], current[2], current[3], current[4], current[5], current[6] + l, current[7] + t]);\n x = current[6];\n y = current[7];\n break;\n case 'z':\n case 'Z':\n x = anchorX;\n y = anchorY;\n context.closePath();\n break;\n }\n previous = current;\n }\n}\nfunction drawArc(context, x, y, coords) {\n var seg = segments(coords[5],\n // end x\n coords[6],\n // end y\n coords[0],\n // radius x\n coords[1],\n // radius y\n coords[3],\n // large flag\n coords[4],\n // sweep flag\n coords[2],\n // rotation\n x, y);\n for (var i = 0; i < seg.length; ++i) {\n var bez = bezier(seg[i]);\n context.bezierCurveTo(bez[0], bez[1], bez[2], bez[3], bez[4], bez[5]);\n }\n}\nvar Tan30 = 0.5773502691896257;\nvar builtins = {\n 'circle': {\n draw: function draw(context, size) {\n var r = Math.sqrt(size) / 2;\n context.moveTo(r, 0);\n context.arc(0, 0, r, 0, Tau);\n }\n },\n 'cross': {\n draw: function draw(context, size) {\n var r = Math.sqrt(size) / 2,\n s = r / 2.5;\n context.moveTo(-r, -s);\n context.lineTo(-r, s);\n context.lineTo(-s, s);\n context.lineTo(-s, r);\n context.lineTo(s, r);\n context.lineTo(s, s);\n context.lineTo(r, s);\n context.lineTo(r, -s);\n context.lineTo(s, -s);\n context.lineTo(s, -r);\n context.lineTo(-s, -r);\n context.lineTo(-s, -s);\n context.closePath();\n }\n },\n 'diamond': {\n draw: function draw(context, size) {\n var r = Math.sqrt(size) / 2;\n context.moveTo(-r, 0);\n context.lineTo(0, -r);\n context.lineTo(r, 0);\n context.lineTo(0, r);\n context.closePath();\n }\n },\n 'square': {\n draw: function draw(context, size) {\n var w = Math.sqrt(size),\n x = -w / 2;\n context.rect(x, x, w, w);\n }\n },\n 'arrow': {\n draw: function draw(context, size) {\n var r = Math.sqrt(size) / 2,\n s = r / 7,\n t = r / 2.5,\n v = r / 8;\n context.moveTo(-s, r);\n context.lineTo(s, r);\n context.lineTo(s, -v);\n context.lineTo(t, -v);\n context.lineTo(0, -r);\n context.lineTo(-t, -v);\n context.lineTo(-s, -v);\n context.closePath();\n }\n },\n 'wedge': {\n draw: function draw(context, size) {\n var r = Math.sqrt(size) / 2,\n h = HalfSqrt3 * r,\n o = h - r * Tan30,\n b = r / 4;\n context.moveTo(0, -h - o);\n context.lineTo(-b, h - o);\n context.lineTo(b, h - o);\n context.closePath();\n }\n },\n 'triangle': {\n draw: function draw(context, size) {\n var r = Math.sqrt(size) / 2,\n h = HalfSqrt3 * r,\n o = h - r * Tan30;\n context.moveTo(0, -h - o);\n context.lineTo(-r, h - o);\n context.lineTo(r, h - o);\n context.closePath();\n }\n },\n 'triangle-up': {\n draw: function draw(context, size) {\n var r = Math.sqrt(size) / 2,\n h = HalfSqrt3 * r;\n context.moveTo(0, -h);\n context.lineTo(-r, h);\n context.lineTo(r, h);\n context.closePath();\n }\n },\n 'triangle-down': {\n draw: function draw(context, size) {\n var r = Math.sqrt(size) / 2,\n h = HalfSqrt3 * r;\n context.moveTo(0, h);\n context.lineTo(-r, -h);\n context.lineTo(r, -h);\n context.closePath();\n }\n },\n 'triangle-right': {\n draw: function draw(context, size) {\n var r = Math.sqrt(size) / 2,\n h = HalfSqrt3 * r;\n context.moveTo(h, 0);\n context.lineTo(-h, -r);\n context.lineTo(-h, r);\n context.closePath();\n }\n },\n 'triangle-left': {\n draw: function draw(context, size) {\n var r = Math.sqrt(size) / 2,\n h = HalfSqrt3 * r;\n context.moveTo(-h, 0);\n context.lineTo(h, -r);\n context.lineTo(h, r);\n context.closePath();\n }\n },\n 'stroke': {\n draw: function draw(context, size) {\n var r = Math.sqrt(size) / 2;\n context.moveTo(-r, 0);\n context.lineTo(r, 0);\n }\n }\n};\nfunction symbols(_) {\n return hasOwnProperty(builtins, _) ? builtins[_] : customSymbol(_);\n}\nvar custom = {};\nfunction customSymbol(path) {\n if (!hasOwnProperty(custom, path)) {\n var parsed = parse(path);\n custom[path] = {\n draw: function draw(context, size) {\n pathRender(context, parsed, 0, 0, Math.sqrt(size) / 2);\n }\n };\n }\n return custom[path];\n}\n\n// See http://spencermortensen.com/articles/bezier-circle/\nvar C = 0.448084975506; // C = 1 - c\n\nfunction rectangleX(d) {\n return d.x;\n}\nfunction rectangleY(d) {\n return d.y;\n}\nfunction rectangleWidth(d) {\n return d.width;\n}\nfunction rectangleHeight(d) {\n return d.height;\n}\nfunction number(_) {\n return typeof _ === 'function' ? _ : function () {\n return +_;\n };\n}\nfunction clamp(value, min, max) {\n return Math.max(min, Math.min(value, max));\n}\nfunction vg_rect() {\n var x = rectangleX,\n y = rectangleY,\n width = rectangleWidth,\n height = rectangleHeight,\n crTL = number(0),\n crTR = crTL,\n crBL = crTL,\n crBR = crTL,\n context = null;\n function rectangle(_, x0, y0) {\n var buffer,\n x1 = x0 != null ? x0 : +x.call(this, _),\n y1 = y0 != null ? y0 : +y.call(this, _),\n w = +width.call(this, _),\n h = +height.call(this, _),\n s = Math.min(w, h) / 2,\n tl = clamp(+crTL.call(this, _), 0, s),\n tr = clamp(+crTR.call(this, _), 0, s),\n bl = clamp(+crBL.call(this, _), 0, s),\n br = clamp(+crBR.call(this, _), 0, s);\n if (!context) context = buffer = path$3();\n if (tl <= 0 && tr <= 0 && bl <= 0 && br <= 0) {\n context.rect(x1, y1, w, h);\n } else {\n var x2 = x1 + w,\n y2 = y1 + h;\n context.moveTo(x1 + tl, y1);\n context.lineTo(x2 - tr, y1);\n context.bezierCurveTo(x2 - C * tr, y1, x2, y1 + C * tr, x2, y1 + tr);\n context.lineTo(x2, y2 - br);\n context.bezierCurveTo(x2, y2 - C * br, x2 - C * br, y2, x2 - br, y2);\n context.lineTo(x1 + bl, y2);\n context.bezierCurveTo(x1 + C * bl, y2, x1, y2 - C * bl, x1, y2 - bl);\n context.lineTo(x1, y1 + tl);\n context.bezierCurveTo(x1, y1 + C * tl, x1 + C * tl, y1, x1 + tl, y1);\n context.closePath();\n }\n if (buffer) {\n context = null;\n return buffer + '' || null;\n }\n }\n rectangle.x = function (_) {\n if (arguments.length) {\n x = number(_);\n return rectangle;\n } else {\n return x;\n }\n };\n rectangle.y = function (_) {\n if (arguments.length) {\n y = number(_);\n return rectangle;\n } else {\n return y;\n }\n };\n rectangle.width = function (_) {\n if (arguments.length) {\n width = number(_);\n return rectangle;\n } else {\n return width;\n }\n };\n rectangle.height = function (_) {\n if (arguments.length) {\n height = number(_);\n return rectangle;\n } else {\n return height;\n }\n };\n rectangle.cornerRadius = function (tl, tr, br, bl) {\n if (arguments.length) {\n crTL = number(tl);\n crTR = tr != null ? number(tr) : crTL;\n crBR = br != null ? number(br) : crTL;\n crBL = bl != null ? number(bl) : crTR;\n return rectangle;\n } else {\n return crTL;\n }\n };\n rectangle.context = function (_) {\n if (arguments.length) {\n context = _ == null ? null : _;\n return rectangle;\n } else {\n return context;\n }\n };\n return rectangle;\n}\nfunction vg_trail() {\n var x,\n y,\n size,\n defined,\n context = null,\n ready,\n x1,\n y1,\n r1;\n function point(x2, y2, w2) {\n var r2 = w2 / 2;\n if (ready) {\n var ux = y1 - y2,\n uy = x2 - x1;\n if (ux || uy) {\n // get normal vector\n var ud = Math.sqrt(ux * ux + uy * uy),\n rx = (ux /= ud) * r1,\n ry = (uy /= ud) * r1,\n t = Math.atan2(uy, ux);\n\n // draw segment\n context.moveTo(x1 - rx, y1 - ry);\n context.lineTo(x2 - ux * r2, y2 - uy * r2);\n context.arc(x2, y2, r2, t - Math.PI, t);\n context.lineTo(x1 + rx, y1 + ry);\n context.arc(x1, y1, r1, t, t + Math.PI);\n } else {\n context.arc(x2, y2, r2, 0, Tau);\n }\n context.closePath();\n } else {\n ready = 1;\n }\n x1 = x2;\n y1 = y2;\n r1 = r2;\n }\n function trail(data) {\n var i,\n n = data.length,\n d,\n defined0 = false,\n buffer;\n if (context == null) context = buffer = path$3();\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) ready = 0;\n }\n if (defined0) point(+x(d, i, data), +y(d, i, data), +size(d, i, data));\n }\n if (buffer) {\n context = null;\n return buffer + '' || null;\n }\n }\n trail.x = function (_) {\n if (arguments.length) {\n x = _;\n return trail;\n } else {\n return x;\n }\n };\n trail.y = function (_) {\n if (arguments.length) {\n y = _;\n return trail;\n } else {\n return y;\n }\n };\n trail.size = function (_) {\n if (arguments.length) {\n size = _;\n return trail;\n } else {\n return size;\n }\n };\n trail.defined = function (_) {\n if (arguments.length) {\n defined = _;\n return trail;\n } else {\n return defined;\n }\n };\n trail.context = function (_) {\n if (arguments.length) {\n if (_ == null) {\n context = null;\n } else {\n context = _;\n }\n return trail;\n } else {\n return context;\n }\n };\n return trail;\n}\nfunction value$1(a, b) {\n return a != null ? a : b;\n}\nvar x = function x(item) {\n return item.x || 0;\n },\n y = function y(item) {\n return item.y || 0;\n },\n w = function w(item) {\n return item.width || 0;\n },\n h = function h(item) {\n return item.height || 0;\n },\n xw = function xw(item) {\n return (item.x || 0) + (item.width || 0);\n },\n yh = function yh(item) {\n return (item.y || 0) + (item.height || 0);\n },\n sa = function sa(item) {\n return item.startAngle || 0;\n },\n ea = function ea(item) {\n return item.endAngle || 0;\n },\n pa = function pa(item) {\n return item.padAngle || 0;\n },\n ir = function ir(item) {\n return item.innerRadius || 0;\n },\n or = function or(item) {\n return item.outerRadius || 0;\n },\n cr = function cr(item) {\n return item.cornerRadius || 0;\n },\n tl = function tl(item) {\n return value$1(item.cornerRadiusTopLeft, item.cornerRadius) || 0;\n },\n tr = function tr(item) {\n return value$1(item.cornerRadiusTopRight, item.cornerRadius) || 0;\n },\n br = function br(item) {\n return value$1(item.cornerRadiusBottomRight, item.cornerRadius) || 0;\n },\n bl = function bl(item) {\n return value$1(item.cornerRadiusBottomLeft, item.cornerRadius) || 0;\n },\n sz = function sz(item) {\n return value$1(item.size, 64);\n },\n ts = function ts(item) {\n return item.size || 1;\n },\n def = function def(item) {\n return !(item.defined === false);\n },\n type = function type(item) {\n return symbols(item.shape || 'circle');\n };\nvar arcShape = arc$2().startAngle(sa).endAngle(ea).padAngle(pa).innerRadius(ir).outerRadius(or).cornerRadius(cr),\n areavShape = area$2().x(x).y1(y).y0(yh).defined(def),\n areahShape = area$2().y(y).x1(x).x0(xw).defined(def),\n lineShape = line$2().x(x).y(y).defined(def),\n rectShape = vg_rect().x(x).y(y).width(w).height(h).cornerRadius(tl, tr, br, bl),\n symbolShape = symbol$2().type(type).size(sz),\n trailShape = vg_trail().x(x).y(y).defined(def).size(ts);\nfunction hasCornerRadius(item) {\n return item.cornerRadius || item.cornerRadiusTopLeft || item.cornerRadiusTopRight || item.cornerRadiusBottomRight || item.cornerRadiusBottomLeft;\n}\nfunction arc$1(context, item) {\n return arcShape.context(context)(item);\n}\nfunction area$1(context, items) {\n var item = items[0],\n interp = item.interpolate || 'linear';\n return (item.orient === 'horizontal' ? areahShape : areavShape).curve(curves(interp, item.orient, item.tension)).context(context)(items);\n}\nfunction line$1(context, items) {\n var item = items[0],\n interp = item.interpolate || 'linear';\n return lineShape.curve(curves(interp, item.orient, item.tension)).context(context)(items);\n}\nfunction rectangle(context, item, x, y) {\n return rectShape.context(context)(item, x, y);\n}\nfunction shape$1(context, item) {\n return (item.mark.shape || item.shape).context(context)(item);\n}\nfunction symbol$1(context, item) {\n return symbolShape.context(context)(item);\n}\nfunction trail$1(context, items) {\n return trailShape.context(context)(items);\n}\nvar clip_id = 1;\nfunction resetSVGClipId() {\n clip_id = 1;\n}\nfunction clip$1(renderer, item, size) {\n var clip = item.clip,\n defs = renderer._defs,\n id = item.clip_id || (item.clip_id = 'clip' + clip_id++),\n c = defs.clipping[id] || (defs.clipping[id] = {\n id: id\n });\n if (isFunction(clip)) {\n c.path = clip(null);\n } else if (hasCornerRadius(size)) {\n c.path = rectangle(null, size, 0, 0);\n } else {\n c.width = size.width || 0;\n c.height = size.height || 0;\n }\n return 'url(#' + id + ')';\n}\nfunction Bounds(b) {\n this.clear();\n if (b) this.union(b);\n}\nBounds.prototype = {\n clone: function clone() {\n return new Bounds(this);\n },\n clear: function clear() {\n this.x1 = +Number.MAX_VALUE;\n this.y1 = +Number.MAX_VALUE;\n this.x2 = -Number.MAX_VALUE;\n this.y2 = -Number.MAX_VALUE;\n return this;\n },\n empty: function empty() {\n return this.x1 === +Number.MAX_VALUE && this.y1 === +Number.MAX_VALUE && this.x2 === -Number.MAX_VALUE && this.y2 === -Number.MAX_VALUE;\n },\n equals: function equals(b) {\n return this.x1 === b.x1 && this.y1 === b.y1 && this.x2 === b.x2 && this.y2 === b.y2;\n },\n set: function set(x1, y1, x2, y2) {\n if (x2 < x1) {\n this.x2 = x1;\n this.x1 = x2;\n } else {\n this.x1 = x1;\n this.x2 = x2;\n }\n if (y2 < y1) {\n this.y2 = y1;\n this.y1 = y2;\n } else {\n this.y1 = y1;\n this.y2 = y2;\n }\n return this;\n },\n add: function add(x, y) {\n if (x < this.x1) this.x1 = x;\n if (y < this.y1) this.y1 = y;\n if (x > this.x2) this.x2 = x;\n if (y > this.y2) this.y2 = y;\n return this;\n },\n expand: function expand(d) {\n this.x1 -= d;\n this.y1 -= d;\n this.x2 += d;\n this.y2 += d;\n return this;\n },\n round: function round() {\n this.x1 = Math.floor(this.x1);\n this.y1 = Math.floor(this.y1);\n this.x2 = Math.ceil(this.x2);\n this.y2 = Math.ceil(this.y2);\n return this;\n },\n scale: function scale(s) {\n this.x1 *= s;\n this.y1 *= s;\n this.x2 *= s;\n this.y2 *= s;\n return this;\n },\n translate: function translate(dx, dy) {\n this.x1 += dx;\n this.x2 += dx;\n this.y1 += dy;\n this.y2 += dy;\n return this;\n },\n rotate: function rotate(angle, x, y) {\n var p = this.rotatedPoints(angle, x, y);\n return this.clear().add(p[0], p[1]).add(p[2], p[3]).add(p[4], p[5]).add(p[6], p[7]);\n },\n rotatedPoints: function rotatedPoints(angle, x, y) {\n var x1 = this.x1,\n y1 = this.y1,\n x2 = this.x2,\n y2 = this.y2,\n cos = Math.cos(angle),\n sin = Math.sin(angle),\n cx = x - x * cos + y * sin,\n cy = y - x * sin - y * cos;\n return [cos * x1 - sin * y1 + cx, sin * x1 + cos * y1 + cy, cos * x1 - sin * y2 + cx, sin * x1 + cos * y2 + cy, cos * x2 - sin * y1 + cx, sin * x2 + cos * y1 + cy, cos * x2 - sin * y2 + cx, sin * x2 + cos * y2 + cy];\n },\n union: function union(b) {\n if (b.x1 < this.x1) this.x1 = b.x1;\n if (b.y1 < this.y1) this.y1 = b.y1;\n if (b.x2 > this.x2) this.x2 = b.x2;\n if (b.y2 > this.y2) this.y2 = b.y2;\n return this;\n },\n intersect: function intersect(b) {\n if (b.x1 > this.x1) this.x1 = b.x1;\n if (b.y1 > this.y1) this.y1 = b.y1;\n if (b.x2 < this.x2) this.x2 = b.x2;\n if (b.y2 < this.y2) this.y2 = b.y2;\n return this;\n },\n encloses: function encloses(b) {\n return b && this.x1 <= b.x1 && this.x2 >= b.x2 && this.y1 <= b.y1 && this.y2 >= b.y2;\n },\n alignsWith: function alignsWith(b) {\n return b && (this.x1 == b.x1 || this.x2 == b.x2 || this.y1 == b.y1 || this.y2 == b.y2);\n },\n intersects: function intersects(b) {\n return b && !(this.x2 < b.x1 || this.x1 > b.x2 || this.y2 < b.y1 || this.y1 > b.y2);\n },\n contains: function contains(x, y) {\n return !(x < this.x1 || x > this.x2 || y < this.y1 || y > this.y2);\n },\n width: function width() {\n return this.x2 - this.x1;\n },\n height: function height() {\n return this.y2 - this.y1;\n }\n};\nfunction Item(mark) {\n this.mark = mark;\n this.bounds = this.bounds || new Bounds();\n}\nfunction GroupItem(mark) {\n Item.call(this, mark);\n this.items = this.items || [];\n}\ninherits(GroupItem, Item);\nfunction ResourceLoader(customLoader) {\n this._pending = 0;\n this._loader = customLoader || loader();\n}\nfunction increment(loader) {\n loader._pending += 1;\n}\nfunction decrement(loader) {\n loader._pending -= 1;\n}\nResourceLoader.prototype = {\n pending: function pending() {\n return this._pending;\n },\n sanitizeURL: function sanitizeURL(uri) {\n var loader = this;\n increment(loader);\n return loader._loader.sanitize(uri, {\n context: 'href'\n }).then(function (opt) {\n decrement(loader);\n return opt;\n }).catch(function () {\n decrement(loader);\n return null;\n });\n },\n loadImage: function loadImage(uri) {\n var loader = this,\n Image = image$1();\n increment(loader);\n return loader._loader.sanitize(uri, {\n context: 'image'\n }).then(function (opt) {\n var url = opt.href;\n if (!url || !Image) throw {\n url: url\n };\n var img = new Image();\n\n // set crossOrigin only if cors is defined; empty string sets anonymous mode\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/crossOrigin\n var cors = hasOwnProperty(opt, 'crossOrigin') ? opt.crossOrigin : 'anonymous';\n if (cors != null) img.crossOrigin = cors;\n\n // attempt to load image resource\n img.onload = function () {\n return decrement(loader);\n };\n img.onerror = function () {\n return decrement(loader);\n };\n img.src = url;\n return img;\n }).catch(function (e) {\n decrement(loader);\n return {\n complete: false,\n width: 0,\n height: 0,\n src: e && e.url || ''\n };\n });\n },\n ready: function ready() {\n var loader = this;\n return new Promise(function (accept) {\n function poll(value) {\n if (!loader.pending()) accept(value);else setTimeout(function () {\n poll(true);\n }, 10);\n }\n poll(false);\n });\n }\n};\nfunction boundStroke(bounds, item, miter) {\n if (item.stroke && item.opacity !== 0 && item.strokeOpacity !== 0) {\n var sw = item.strokeWidth != null ? +item.strokeWidth : 1;\n bounds.expand(sw + (miter ? miterAdjustment(item, sw) : 0));\n }\n return bounds;\n}\nfunction miterAdjustment(item, strokeWidth) {\n // TODO: more sophisticated adjustment? Or miter support in boundContext?\n return item.strokeJoin && item.strokeJoin !== 'miter' ? 0 : strokeWidth;\n}\nvar circleThreshold = Tau - 1e-8;\nvar bounds, lx, ly, rot, ma, mb, mc, md;\nvar add = function add(x, y) {\n return bounds.add(x, y);\n};\nvar addL = function addL(x, y) {\n return add(lx = x, ly = y);\n};\nvar addX = function addX(x) {\n return add(x, bounds.y1);\n};\nvar addY = function addY(y) {\n return add(bounds.x1, y);\n};\nvar px = function px(x, y) {\n return ma * x + mc * y;\n};\nvar py = function py(x, y) {\n return mb * x + md * y;\n};\nvar addp = function addp(x, y) {\n return add(px(x, y), py(x, y));\n};\nvar addpL = function addpL(x, y) {\n return addL(px(x, y), py(x, y));\n};\nfunction boundContext(_, deg) {\n bounds = _;\n if (deg) {\n rot = deg * DegToRad;\n ma = md = Math.cos(rot);\n mb = Math.sin(rot);\n mc = -mb;\n } else {\n ma = md = 1;\n rot = mb = mc = 0;\n }\n return context$1;\n}\nvar context$1 = {\n beginPath: function beginPath() {},\n closePath: function closePath() {},\n moveTo: addpL,\n lineTo: addpL,\n rect: function rect(x, y, w, h) {\n if (rot) {\n addp(x + w, y);\n addp(x + w, y + h);\n addp(x, y + h);\n addpL(x, y);\n } else {\n add(x + w, y + h);\n addL(x, y);\n }\n },\n quadraticCurveTo: function quadraticCurveTo(x1, y1, x2, y2) {\n var px1 = px(x1, y1),\n py1 = py(x1, y1),\n px2 = px(x2, y2),\n py2 = py(x2, y2);\n quadExtrema(lx, px1, px2, addX);\n quadExtrema(ly, py1, py2, addY);\n addL(px2, py2);\n },\n bezierCurveTo: function bezierCurveTo(x1, y1, x2, y2, x3, y3) {\n var px1 = px(x1, y1),\n py1 = py(x1, y1),\n px2 = px(x2, y2),\n py2 = py(x2, y2),\n px3 = px(x3, y3),\n py3 = py(x3, y3);\n cubicExtrema(lx, px1, px2, px3, addX);\n cubicExtrema(ly, py1, py2, py3, addY);\n addL(px3, py3);\n },\n arc: function arc(cx, cy, r, sa, ea, ccw) {\n sa += rot;\n ea += rot;\n\n // store last point on path\n lx = r * Math.cos(ea) + cx;\n ly = r * Math.sin(ea) + cy;\n if (Math.abs(ea - sa) > circleThreshold) {\n // treat as full circle\n add(cx - r, cy - r);\n add(cx + r, cy + r);\n } else {\n var update = function update(a) {\n return add(r * Math.cos(a) + cx, r * Math.sin(a) + cy);\n };\n var s, i;\n\n // sample end points\n update(sa);\n update(ea);\n\n // sample interior points aligned with 90 degrees\n if (ea !== sa) {\n sa = sa % Tau;\n if (sa < 0) sa += Tau;\n ea = ea % Tau;\n if (ea < 0) ea += Tau;\n if (ea < sa) {\n ccw = !ccw; // flip direction\n s = sa;\n sa = ea;\n ea = s; // swap end-points\n }\n\n if (ccw) {\n ea -= Tau;\n s = sa - sa % HalfPi;\n for (i = 0; i < 4 && s > ea; ++i, s -= HalfPi) update(s);\n } else {\n s = sa - sa % HalfPi + HalfPi;\n for (i = 0; i < 4 && s < ea; ++i, s = s + HalfPi) update(s);\n }\n }\n }\n }\n};\nfunction quadExtrema(x0, x1, x2, cb) {\n var t = (x0 - x1) / (x0 + x2 - 2 * x1);\n if (0 < t && t < 1) cb(x0 + (x1 - x0) * t);\n}\nfunction cubicExtrema(x0, x1, x2, x3, cb) {\n var a = x3 - x0 + 3 * x1 - 3 * x2,\n b = x0 + x2 - 2 * x1,\n c = x0 - x1;\n var t0 = 0,\n t1 = 0,\n r;\n\n // solve for parameter t\n if (Math.abs(a) > Epsilon) {\n // quadratic equation\n r = b * b + c * a;\n if (r >= 0) {\n r = Math.sqrt(r);\n t0 = (-b + r) / a;\n t1 = (-b - r) / a;\n }\n } else {\n // linear equation\n t0 = 0.5 * c / b;\n }\n\n // calculate position\n if (0 < t0 && t0 < 1) cb(cubic(t0, x0, x1, x2, x3));\n if (0 < t1 && t1 < 1) cb(cubic(t1, x0, x1, x2, x3));\n}\nfunction cubic(t, x0, x1, x2, x3) {\n var s = 1 - t,\n s2 = s * s,\n t2 = t * t;\n return s2 * s * x0 + 3 * s2 * t * x1 + 3 * s * t2 * x2 + t2 * t * x3;\n}\nvar context = (context = canvas(1, 1)) ? context.getContext('2d') : null;\nvar b = new Bounds();\nfunction intersectPath(draw) {\n return function (item, brush) {\n // rely on (inaccurate) bounds intersection if no context\n if (!context) return true;\n\n // add path to offscreen graphics context\n draw(context, item);\n\n // get bounds intersection region\n b.clear().union(item.bounds).intersect(brush).round();\n var x1 = b.x1,\n y1 = b.y1,\n x2 = b.x2,\n y2 = b.y2;\n\n // iterate over intersection region\n // perform fine grained inclusion test\n for (var _y = y1; _y <= y2; ++_y) {\n for (var _x = x1; _x <= x2; ++_x) {\n if (context.isPointInPath(_x, _y)) {\n return true;\n }\n }\n }\n\n // false if no hits in intersection region\n return false;\n };\n}\nfunction intersectPoint(item, box) {\n return box.contains(item.x || 0, item.y || 0);\n}\nfunction intersectRect(item, box) {\n var x = item.x || 0,\n y = item.y || 0,\n w = item.width || 0,\n h = item.height || 0;\n return box.intersects(b.set(x, y, x + w, y + h));\n}\nfunction intersectRule(item, box) {\n var x = item.x || 0,\n y = item.y || 0,\n x2 = item.x2 != null ? item.x2 : x,\n y2 = item.y2 != null ? item.y2 : y;\n return intersectBoxLine(box, x, y, x2, y2);\n}\nfunction intersectBoxLine(box, x, y, u, v) {\n var x1 = box.x1,\n y1 = box.y1,\n x2 = box.x2,\n y2 = box.y2,\n dx = u - x,\n dy = v - y;\n var t0 = 0,\n t1 = 1,\n p,\n q,\n r,\n e;\n for (e = 0; e < 4; ++e) {\n if (e === 0) {\n p = -dx;\n q = -(x1 - x);\n }\n if (e === 1) {\n p = dx;\n q = x2 - x;\n }\n if (e === 2) {\n p = -dy;\n q = -(y1 - y);\n }\n if (e === 3) {\n p = dy;\n q = y2 - y;\n }\n if (Math.abs(p) < 1e-10 && q < 0) return false;\n r = q / p;\n if (p < 0) {\n if (r > t1) return false;else if (r > t0) t0 = r;\n } else if (p > 0) {\n if (r < t0) return false;else if (r < t1) t1 = r;\n }\n }\n return true;\n}\nfunction blend(context, item) {\n context.globalCompositeOperation = item.blend || 'source-over';\n}\nfunction value(value, dflt) {\n return value == null ? dflt : value;\n}\nfunction addStops(gradient, stops) {\n var n = stops.length;\n for (var i = 0; i < n; ++i) {\n gradient.addColorStop(stops[i].offset, stops[i].color);\n }\n return gradient;\n}\nfunction gradient(context, spec, bounds) {\n var w = bounds.width(),\n h = bounds.height();\n var gradient;\n if (spec.gradient === 'radial') {\n gradient = context.createRadialGradient(bounds.x1 + value(spec.x1, 0.5) * w, bounds.y1 + value(spec.y1, 0.5) * h, Math.max(w, h) * value(spec.r1, 0), bounds.x1 + value(spec.x2, 0.5) * w, bounds.y1 + value(spec.y2, 0.5) * h, Math.max(w, h) * value(spec.r2, 0.5));\n } else {\n // linear gradient\n var x1 = value(spec.x1, 0),\n y1 = value(spec.y1, 0),\n x2 = value(spec.x2, 1),\n y2 = value(spec.y2, 0);\n if (x1 === x2 || y1 === y2 || w === h) {\n // axis aligned: use normal gradient\n gradient = context.createLinearGradient(bounds.x1 + x1 * w, bounds.y1 + y1 * h, bounds.x1 + x2 * w, bounds.y1 + y2 * h);\n } else {\n // not axis aligned: render gradient into a pattern (#2365)\n // this allows us to use normalized bounding box coordinates\n var _image = canvas(Math.ceil(w), Math.ceil(h)),\n ictx = _image.getContext('2d');\n ictx.scale(w, h);\n ictx.fillStyle = addStops(ictx.createLinearGradient(x1, y1, x2, y2), spec.stops);\n ictx.fillRect(0, 0, w, h);\n return context.createPattern(_image, 'no-repeat');\n }\n }\n return addStops(gradient, spec.stops);\n}\nfunction color(context, item, value) {\n return isGradient(value) ? gradient(context, value, item.bounds) : value;\n}\nfunction fill(context, item, opacity) {\n opacity *= item.fillOpacity == null ? 1 : item.fillOpacity;\n if (opacity > 0) {\n context.globalAlpha = opacity;\n context.fillStyle = color(context, item, item.fill);\n return true;\n } else {\n return false;\n }\n}\nvar Empty = [];\nfunction stroke(context, item, opacity) {\n var lw = (lw = item.strokeWidth) != null ? lw : 1;\n if (lw <= 0) return false;\n opacity *= item.strokeOpacity == null ? 1 : item.strokeOpacity;\n if (opacity > 0) {\n context.globalAlpha = opacity;\n context.strokeStyle = color(context, item, item.stroke);\n context.lineWidth = lw;\n context.lineCap = item.strokeCap || 'butt';\n context.lineJoin = item.strokeJoin || 'miter';\n context.miterLimit = item.strokeMiterLimit || 10;\n if (context.setLineDash) {\n context.setLineDash(item.strokeDash || Empty);\n context.lineDashOffset = item.strokeDashOffset || 0;\n }\n return true;\n } else {\n return false;\n }\n}\nfunction compare(a, b) {\n return a.zindex - b.zindex || a.index - b.index;\n}\nfunction zorder(scene) {\n if (!scene.zdirty) return scene.zitems;\n var items = scene.items,\n output = [],\n item,\n i,\n n;\n for (i = 0, n = items.length; i < n; ++i) {\n item = items[i];\n item.index = i;\n if (item.zindex) output.push(item);\n }\n scene.zdirty = false;\n return scene.zitems = output.sort(compare);\n}\nfunction visit(scene, visitor) {\n var items = scene.items,\n i,\n n;\n if (!items || !items.length) return;\n var zitems = zorder(scene);\n if (zitems && zitems.length) {\n for (i = 0, n = items.length; i < n; ++i) {\n if (!items[i].zindex) visitor(items[i]);\n }\n items = zitems;\n }\n for (i = 0, n = items.length; i < n; ++i) {\n visitor(items[i]);\n }\n}\nfunction pickVisit(scene, visitor) {\n var items = scene.items,\n hit,\n i;\n if (!items || !items.length) return null;\n var zitems = zorder(scene);\n if (zitems && zitems.length) items = zitems;\n for (i = items.length; --i >= 0;) {\n if (hit = visitor(items[i])) return hit;\n }\n if (items === zitems) {\n for (items = scene.items, i = items.length; --i >= 0;) {\n if (!items[i].zindex) {\n if (hit = visitor(items[i])) return hit;\n }\n }\n }\n return null;\n}\nfunction drawAll(path) {\n return function (context, scene, bounds) {\n visit(scene, function (item) {\n if (!bounds || bounds.intersects(item.bounds)) {\n drawPath(path, context, item, item);\n }\n });\n };\n}\nfunction drawOne(path) {\n return function (context, scene, bounds) {\n if (scene.items.length && (!bounds || bounds.intersects(scene.bounds))) {\n drawPath(path, context, scene.items[0], scene.items);\n }\n };\n}\nfunction drawPath(path, context, item, items) {\n var opacity = item.opacity == null ? 1 : item.opacity;\n if (opacity === 0) return;\n if (path(context, items)) return;\n blend(context, item);\n if (item.fill && fill(context, item, opacity)) {\n context.fill();\n }\n if (item.stroke && stroke(context, item, opacity)) {\n context.stroke();\n }\n}\nfunction pick$1(test) {\n test = test || truthy;\n return function (context, scene, x, y, gx, gy) {\n x *= context.pixelRatio;\n y *= context.pixelRatio;\n return pickVisit(scene, function (item) {\n var b = item.bounds;\n // first hit test against bounding box\n if (b && !b.contains(gx, gy) || !b) return;\n // if in bounding box, perform more careful test\n if (test(context, item, x, y, gx, gy)) return item;\n });\n };\n}\nfunction hitPath(path, filled) {\n return function (context, o, x, y) {\n var item = Array.isArray(o) ? o[0] : o,\n fill = filled == null ? item.fill : filled,\n stroke = item.stroke && context.isPointInStroke,\n lw,\n lc;\n if (stroke) {\n lw = item.strokeWidth;\n lc = item.strokeCap;\n context.lineWidth = lw != null ? lw : 1;\n context.lineCap = lc != null ? lc : 'butt';\n }\n return path(context, o) ? false : fill && context.isPointInPath(x, y) || stroke && context.isPointInStroke(x, y);\n };\n}\nfunction pickPath(path) {\n return pick$1(hitPath(path));\n}\nfunction translate(x, y) {\n return 'translate(' + x + ',' + y + ')';\n}\nfunction rotate(a) {\n return 'rotate(' + a + ')';\n}\nfunction scale(scaleX, scaleY) {\n return 'scale(' + scaleX + ',' + scaleY + ')';\n}\nfunction translateItem(item) {\n return translate(item.x || 0, item.y || 0);\n}\nfunction rotateItem(item) {\n return translate(item.x || 0, item.y || 0) + (item.angle ? ' ' + rotate(item.angle) : '');\n}\nfunction transformItem(item) {\n return translate(item.x || 0, item.y || 0) + (item.angle ? ' ' + rotate(item.angle) : '') + (item.scaleX || item.scaleY ? ' ' + scale(item.scaleX || 1, item.scaleY || 1) : '');\n}\nfunction markItemPath(type, shape, isect) {\n function attr(emit, item) {\n emit('transform', rotateItem(item));\n emit('d', shape(null, item));\n }\n function bound(bounds, item) {\n shape(boundContext(bounds, item.angle), item);\n return boundStroke(bounds, item).translate(item.x || 0, item.y || 0);\n }\n function draw(context, item) {\n var x = item.x || 0,\n y = item.y || 0,\n a = item.angle || 0;\n context.translate(x, y);\n if (a) context.rotate(a *= DegToRad);\n context.beginPath();\n shape(context, item);\n if (a) context.rotate(-a);\n context.translate(-x, -y);\n }\n return {\n type: type,\n tag: 'path',\n nested: false,\n attr: attr,\n bound: bound,\n draw: drawAll(draw),\n pick: pickPath(draw),\n isect: isect || intersectPath(draw)\n };\n}\nvar arc = markItemPath('arc', arc$1);\nfunction pickArea(a, p) {\n var v = a[0].orient === 'horizontal' ? p[1] : p[0],\n z = a[0].orient === 'horizontal' ? 'y' : 'x',\n i = a.length,\n min = +Infinity,\n hit,\n d;\n while (--i >= 0) {\n if (a[i].defined === false) continue;\n d = Math.abs(a[i][z] - v);\n if (d < min) {\n min = d;\n hit = a[i];\n }\n }\n return hit;\n}\nfunction pickLine(a, p) {\n var t = Math.pow(a[0].strokeWidth || 1, 2),\n i = a.length,\n dx,\n dy,\n dd;\n while (--i >= 0) {\n if (a[i].defined === false) continue;\n dx = a[i].x - p[0];\n dy = a[i].y - p[1];\n dd = dx * dx + dy * dy;\n if (dd < t) return a[i];\n }\n return null;\n}\nfunction pickTrail(a, p) {\n var i = a.length,\n dx,\n dy,\n dd;\n while (--i >= 0) {\n if (a[i].defined === false) continue;\n dx = a[i].x - p[0];\n dy = a[i].y - p[1];\n dd = dx * dx + dy * dy;\n dx = a[i].size || 1;\n if (dd < dx * dx) return a[i];\n }\n return null;\n}\nfunction markMultiItemPath(type, shape, tip) {\n function attr(emit, item) {\n var items = item.mark.items;\n if (items.length) emit('d', shape(null, items));\n }\n function bound(bounds, mark) {\n var items = mark.items;\n if (items.length === 0) {\n return bounds;\n } else {\n shape(boundContext(bounds), items);\n return boundStroke(bounds, items[0]);\n }\n }\n function draw(context, items) {\n context.beginPath();\n shape(context, items);\n }\n var hit = hitPath(draw);\n function pick(context, scene, x, y, gx, gy) {\n var items = scene.items,\n b = scene.bounds;\n if (!items || !items.length || b && !b.contains(gx, gy)) {\n return null;\n }\n x *= context.pixelRatio;\n y *= context.pixelRatio;\n return hit(context, items, x, y) ? items[0] : null;\n }\n return {\n type: type,\n tag: 'path',\n nested: true,\n attr: attr,\n bound: bound,\n draw: drawOne(draw),\n pick: pick,\n isect: intersectPoint,\n tip: tip\n };\n}\nvar area = markMultiItemPath('area', area$1, pickArea);\nfunction clip(context, scene) {\n var clip = scene.clip;\n context.save();\n if (isFunction(clip)) {\n context.beginPath();\n clip(context);\n context.clip();\n } else {\n clipGroup(context, scene.group);\n }\n}\nfunction clipGroup(context, group) {\n context.beginPath();\n hasCornerRadius(group) ? rectangle(context, group, 0, 0) : context.rect(0, 0, group.width || 0, group.height || 0);\n context.clip();\n}\nfunction offset$1(item) {\n var sw = value(item.strokeWidth, 1);\n return item.strokeOffset != null ? item.strokeOffset : item.stroke && sw > 0.5 && sw < 1.5 ? 0.5 - Math.abs(sw - 1) : 0;\n}\nfunction attr$5(emit, item) {\n emit('transform', translateItem(item));\n}\nfunction emitRectangle(emit, item) {\n var off = offset$1(item);\n emit('d', rectangle(null, item, off, off));\n}\nfunction background(emit, item) {\n emit('class', 'background');\n emit('aria-hidden', true);\n emitRectangle(emit, item);\n}\nfunction foreground(emit, item) {\n emit('class', 'foreground');\n emit('aria-hidden', true);\n if (item.strokeForeground) {\n emitRectangle(emit, item);\n } else {\n emit('d', '');\n }\n}\nfunction content(emit, item, renderer) {\n var url = item.clip ? clip$1(renderer, item, item) : null;\n emit('clip-path', url);\n}\nfunction bound$5(bounds, group) {\n if (!group.clip && group.items) {\n var items = group.items,\n m = items.length;\n for (var j = 0; j < m; ++j) {\n bounds.union(items[j].bounds);\n }\n }\n if ((group.clip || group.width || group.height) && !group.noBound) {\n bounds.add(0, 0).add(group.width || 0, group.height || 0);\n }\n boundStroke(bounds, group);\n return bounds.translate(group.x || 0, group.y || 0);\n}\nfunction rectanglePath(context, group, x, y) {\n var off = offset$1(group);\n context.beginPath();\n rectangle(context, group, (x || 0) + off, (y || 0) + off);\n}\nvar hitBackground = hitPath(rectanglePath);\nvar hitForeground = hitPath(rectanglePath, false);\nvar hitCorner = hitPath(rectanglePath, true);\nfunction draw$4(context, scene, bounds) {\n var _this = this;\n visit(scene, function (group) {\n var gx = group.x || 0,\n gy = group.y || 0,\n fore = group.strokeForeground,\n opacity = group.opacity == null ? 1 : group.opacity;\n\n // draw group background\n if ((group.stroke || group.fill) && opacity) {\n rectanglePath(context, group, gx, gy);\n blend(context, group);\n if (group.fill && fill(context, group, opacity)) {\n context.fill();\n }\n if (group.stroke && !fore && stroke(context, group, opacity)) {\n context.stroke();\n }\n }\n\n // setup graphics context, set clip and bounds\n context.save();\n context.translate(gx, gy);\n if (group.clip) clipGroup(context, group);\n if (bounds) bounds.translate(-gx, -gy);\n\n // draw group contents\n visit(group, function (item) {\n _this.draw(context, item, bounds);\n });\n\n // restore graphics context\n if (bounds) bounds.translate(gx, gy);\n context.restore();\n\n // draw group foreground\n if (fore && group.stroke && opacity) {\n rectanglePath(context, group, gx, gy);\n blend(context, group);\n if (stroke(context, group, opacity)) {\n context.stroke();\n }\n }\n });\n}\nfunction pick(context, scene, x, y, gx, gy) {\n var _this2 = this;\n if (scene.bounds && !scene.bounds.contains(gx, gy) || !scene.items) {\n return null;\n }\n var cx = x * context.pixelRatio,\n cy = y * context.pixelRatio;\n return pickVisit(scene, function (group) {\n var hit, dx, dy;\n\n // first hit test bounding box\n var b = group.bounds;\n if (b && !b.contains(gx, gy)) return;\n\n // passed bounds check, test rectangular clip\n dx = group.x || 0;\n dy = group.y || 0;\n var dw = dx + (group.width || 0),\n dh = dy + (group.height || 0),\n c = group.clip;\n if (c && (gx < dx || gx > dw || gy < dy || gy > dh)) return;\n\n // adjust coordinate system\n context.save();\n context.translate(dx, dy);\n dx = gx - dx;\n dy = gy - dy;\n\n // test background for rounded corner clip\n if (c && hasCornerRadius(group) && !hitCorner(context, group, cx, cy)) {\n context.restore();\n return null;\n }\n var fore = group.strokeForeground,\n ix = scene.interactive !== false;\n\n // hit test against group foreground\n if (ix && fore && group.stroke && hitForeground(context, group, cx, cy)) {\n context.restore();\n return group;\n }\n\n // hit test against contained marks\n hit = pickVisit(group, function (mark) {\n return pickMark(mark, dx, dy) ? _this2.pick(mark, x, y, dx, dy) : null;\n });\n\n // hit test against group background\n if (!hit && ix && (group.fill || !fore && group.stroke) && hitBackground(context, group, cx, cy)) {\n hit = group;\n }\n\n // restore state and return\n context.restore();\n return hit || null;\n });\n}\nfunction pickMark(mark, x, y) {\n return (mark.interactive !== false || mark.marktype === 'group') && mark.bounds && mark.bounds.contains(x, y);\n}\nvar group = {\n type: 'group',\n tag: 'g',\n nested: false,\n attr: attr$5,\n bound: bound$5,\n draw: draw$4,\n pick: pick,\n isect: intersectRect,\n content: content,\n background: background,\n foreground: foreground\n};\nvar metadata = {\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'xmlns:xlink': 'http://www.w3.org/1999/xlink',\n 'version': '1.1'\n};\nfunction getImage(item, renderer) {\n var image = item.image;\n if (!image || item.url && item.url !== image.url) {\n image = {\n complete: false,\n width: 0,\n height: 0\n };\n renderer.loadImage(item.url).then(function (image) {\n item.image = image;\n item.image.url = item.url;\n });\n }\n return image;\n}\nfunction imageWidth(item, image) {\n return item.width != null ? item.width : !image || !image.width ? 0 : item.aspect !== false && item.height ? item.height * image.width / image.height : image.width;\n}\nfunction imageHeight(item, image) {\n return item.height != null ? item.height : !image || !image.height ? 0 : item.aspect !== false && item.width ? item.width * image.height / image.width : image.height;\n}\nfunction imageXOffset(align, w) {\n return align === 'center' ? w / 2 : align === 'right' ? w : 0;\n}\nfunction imageYOffset(baseline, h) {\n return baseline === 'middle' ? h / 2 : baseline === 'bottom' ? h : 0;\n}\nfunction attr$4(emit, item, renderer) {\n var img = getImage(item, renderer),\n w = imageWidth(item, img),\n h = imageHeight(item, img),\n x = (item.x || 0) - imageXOffset(item.align, w),\n y = (item.y || 0) - imageYOffset(item.baseline, h),\n i = !img.src && img.toDataURL ? img.toDataURL() : img.src || '';\n emit('href', i, metadata['xmlns:xlink'], 'xlink:href');\n emit('transform', translate(x, y));\n emit('width', w);\n emit('height', h);\n emit('preserveAspectRatio', item.aspect === false ? 'none' : 'xMidYMid');\n}\nfunction bound$4(bounds, item) {\n var img = item.image,\n w = imageWidth(item, img),\n h = imageHeight(item, img),\n x = (item.x || 0) - imageXOffset(item.align, w),\n y = (item.y || 0) - imageYOffset(item.baseline, h);\n return bounds.set(x, y, x + w, y + h);\n}\nfunction draw$3(context, scene, bounds) {\n var _this3 = this;\n visit(scene, function (item) {\n if (bounds && !bounds.intersects(item.bounds)) return; // bounds check\n\n var img = getImage(item, _this3);\n var w = imageWidth(item, img);\n var h = imageHeight(item, img);\n if (w === 0 || h === 0) return; // early exit\n\n var x = (item.x || 0) - imageXOffset(item.align, w),\n y = (item.y || 0) - imageYOffset(item.baseline, h),\n opacity,\n ar0,\n ar1,\n t;\n if (item.aspect !== false) {\n ar0 = img.width / img.height;\n ar1 = item.width / item.height;\n if (ar0 === ar0 && ar1 === ar1 && ar0 !== ar1) {\n if (ar1 < ar0) {\n t = w / ar0;\n y += (h - t) / 2;\n h = t;\n } else {\n t = h * ar0;\n x += (w - t) / 2;\n w = t;\n }\n }\n }\n if (img.complete || img.toDataURL) {\n blend(context, item);\n context.globalAlpha = (opacity = item.opacity) != null ? opacity : 1;\n context.imageSmoothingEnabled = item.smooth !== false;\n context.drawImage(img, x, y, w, h);\n }\n });\n}\nvar image = {\n type: 'image',\n tag: 'image',\n nested: false,\n attr: attr$4,\n bound: bound$4,\n draw: draw$3,\n pick: pick$1(),\n isect: truthy,\n // bounds check is sufficient\n get: getImage,\n xOffset: imageXOffset,\n yOffset: imageYOffset\n};\nvar line = markMultiItemPath('line', line$1, pickLine);\nfunction attr$3(emit, item) {\n var sx = item.scaleX || 1,\n sy = item.scaleY || 1;\n if (sx !== 1 || sy !== 1) {\n emit('vector-effect', 'non-scaling-stroke');\n }\n emit('transform', transformItem(item));\n emit('d', item.path);\n}\nfunction path$1(context, item) {\n var path = item.path;\n if (path == null) return true;\n var x = item.x || 0,\n y = item.y || 0,\n sx = item.scaleX || 1,\n sy = item.scaleY || 1,\n a = (item.angle || 0) * DegToRad,\n cache = item.pathCache;\n if (!cache || cache.path !== path) {\n (item.pathCache = cache = parse(path)).path = path;\n }\n if (a && context.rotate && context.translate) {\n context.translate(x, y);\n context.rotate(a);\n pathRender(context, cache, 0, 0, sx, sy);\n context.rotate(-a);\n context.translate(-x, -y);\n } else {\n pathRender(context, cache, x, y, sx, sy);\n }\n}\nfunction bound$3(bounds, item) {\n return path$1(boundContext(bounds, item.angle), item) ? bounds.set(0, 0, 0, 0) : boundStroke(bounds, item, true);\n}\nvar path$2 = {\n type: 'path',\n tag: 'path',\n nested: false,\n attr: attr$3,\n bound: bound$3,\n draw: drawAll(path$1),\n pick: pickPath(path$1),\n isect: intersectPath(path$1)\n};\nfunction attr$2(emit, item) {\n emit('d', rectangle(null, item));\n}\nfunction bound$2(bounds, item) {\n var x, y;\n return boundStroke(bounds.set(x = item.x || 0, y = item.y || 0, x + item.width || 0, y + item.height || 0), item);\n}\nfunction draw$2(context, item) {\n context.beginPath();\n rectangle(context, item);\n}\nvar rect = {\n type: 'rect',\n tag: 'path',\n nested: false,\n attr: attr$2,\n bound: bound$2,\n draw: drawAll(draw$2),\n pick: pickPath(draw$2),\n isect: intersectRect\n};\nfunction attr$1(emit, item) {\n emit('transform', translateItem(item));\n emit('x2', item.x2 != null ? item.x2 - (item.x || 0) : 0);\n emit('y2', item.y2 != null ? item.y2 - (item.y || 0) : 0);\n}\nfunction bound$1(bounds, item) {\n var x1, y1;\n return boundStroke(bounds.set(x1 = item.x || 0, y1 = item.y || 0, item.x2 != null ? item.x2 : x1, item.y2 != null ? item.y2 : y1), item);\n}\nfunction path(context, item, opacity) {\n var x1, y1, x2, y2;\n if (item.stroke && stroke(context, item, opacity)) {\n x1 = item.x || 0;\n y1 = item.y || 0;\n x2 = item.x2 != null ? item.x2 : x1;\n y2 = item.y2 != null ? item.y2 : y1;\n context.beginPath();\n context.moveTo(x1, y1);\n context.lineTo(x2, y2);\n return true;\n }\n return false;\n}\nfunction draw$1(context, scene, bounds) {\n visit(scene, function (item) {\n if (bounds && !bounds.intersects(item.bounds)) return; // bounds check\n var opacity = item.opacity == null ? 1 : item.opacity;\n if (opacity && path(context, item, opacity)) {\n blend(context, item);\n context.stroke();\n }\n });\n}\nfunction hit$1(context, item, x, y) {\n if (!context.isPointInStroke) return false;\n return path(context, item, 1) && context.isPointInStroke(x, y);\n}\nvar rule = {\n type: 'rule',\n tag: 'line',\n nested: false,\n attr: attr$1,\n bound: bound$1,\n draw: draw$1,\n pick: pick$1(hit$1),\n isect: intersectRule\n};\nvar shape = markItemPath('shape', shape$1);\nvar symbol = markItemPath('symbol', symbol$1, intersectPoint);\n\n// memoize text width measurement\nvar widthCache = lruCache();\nvar textMetrics = {\n height: fontSize,\n measureWidth: measureWidth,\n estimateWidth: estimateWidth,\n width: estimateWidth,\n canvas: useCanvas\n};\nuseCanvas(true);\nfunction useCanvas(use) {\n textMetrics.width = use && context ? measureWidth : estimateWidth;\n}\n\n// make simple estimate if no canvas is available\nfunction estimateWidth(item, text) {\n return _estimateWidth(textValue(item, text), fontSize(item));\n}\nfunction _estimateWidth(text, currentFontHeight) {\n return ~~(0.8 * text.length * currentFontHeight);\n}\n\n// measure text width if canvas is available\nfunction measureWidth(item, text) {\n return fontSize(item) <= 0 || !(text = textValue(item, text)) ? 0 : _measureWidth(text, font(item));\n}\nfunction _measureWidth(text, currentFont) {\n var key = \"(\".concat(currentFont, \") \").concat(text);\n var width = widthCache.get(key);\n if (width === undefined) {\n context.font = currentFont;\n width = context.measureText(text).width;\n widthCache.set(key, width);\n }\n return width;\n}\nfunction fontSize(item) {\n return item.fontSize != null ? +item.fontSize || 0 : 11;\n}\nfunction lineHeight(item) {\n return item.lineHeight != null ? item.lineHeight : fontSize(item) + 2;\n}\nfunction lineArray(_) {\n return isArray(_) ? _.length > 1 ? _ : _[0] : _;\n}\nfunction textLines(item) {\n return lineArray(item.lineBreak && item.text && !isArray(item.text) ? item.text.split(item.lineBreak) : item.text);\n}\nfunction multiLineOffset(item) {\n var tl = textLines(item);\n return (isArray(tl) ? tl.length - 1 : 0) * lineHeight(item);\n}\nfunction textValue(item, line) {\n var text = line == null ? '' : (line + '').trim();\n return item.limit > 0 && text.length ? truncate(item, text) : text;\n}\nfunction widthGetter(item) {\n if (textMetrics.width === measureWidth) {\n // we are using canvas\n var currentFont = font(item);\n return function (text) {\n return _measureWidth(text, currentFont);\n };\n } else {\n // we are relying on estimates\n var currentFontHeight = fontSize(item);\n return function (text) {\n return _estimateWidth(text, currentFontHeight);\n };\n }\n}\nfunction truncate(item, text) {\n var limit = +item.limit,\n width = widthGetter(item);\n if (width(text) < limit) return text;\n var ellipsis = item.ellipsis || \"\\u2026\",\n rtl = item.dir === 'rtl',\n lo = 0,\n hi = text.length,\n mid;\n limit -= width(ellipsis);\n if (rtl) {\n while (lo < hi) {\n mid = lo + hi >>> 1;\n if (width(text.slice(mid)) > limit) lo = mid + 1;else hi = mid;\n }\n return ellipsis + text.slice(lo);\n } else {\n while (lo < hi) {\n mid = 1 + (lo + hi >>> 1);\n if (width(text.slice(0, mid)) < limit) lo = mid;else hi = mid - 1;\n }\n return text.slice(0, lo) + ellipsis;\n }\n}\nfunction fontFamily(item, quote) {\n var font = item.font;\n return (quote && font ? String(font).replace(/\"/g, '\\'') : font) || 'sans-serif';\n}\nfunction font(item, quote) {\n return '' + (item.fontStyle ? item.fontStyle + ' ' : '') + (item.fontVariant ? item.fontVariant + ' ' : '') + (item.fontWeight ? item.fontWeight + ' ' : '') + fontSize(item) + 'px ' + fontFamily(item, quote);\n}\nfunction offset(item) {\n // perform our own font baseline calculation\n // why? not all browsers support SVG 1.1 'alignment-baseline' :(\n // this also ensures consistent layout across renderers\n var baseline = item.baseline,\n h = fontSize(item);\n return Math.round(baseline === 'top' ? 0.79 * h : baseline === 'middle' ? 0.30 * h : baseline === 'bottom' ? -0.21 * h : baseline === 'line-top' ? 0.29 * h + 0.5 * lineHeight(item) : baseline === 'line-bottom' ? 0.29 * h - 0.5 * lineHeight(item) : 0);\n}\nvar textAlign = {\n 'left': 'start',\n 'center': 'middle',\n 'right': 'end'\n};\nvar tempBounds = new Bounds();\nfunction anchorPoint(item) {\n var x = item.x || 0,\n y = item.y || 0,\n r = item.radius || 0,\n t;\n if (r) {\n t = (item.theta || 0) - HalfPi;\n x += r * Math.cos(t);\n y += r * Math.sin(t);\n }\n tempBounds.x1 = x;\n tempBounds.y1 = y;\n return tempBounds;\n}\nfunction attr(emit, item) {\n var dx = item.dx || 0,\n dy = (item.dy || 0) + offset(item),\n p = anchorPoint(item),\n x = p.x1,\n y = p.y1,\n a = item.angle || 0,\n t;\n emit('text-anchor', textAlign[item.align] || 'start');\n if (a) {\n t = translate(x, y) + ' ' + rotate(a);\n if (dx || dy) t += ' ' + translate(dx, dy);\n } else {\n t = translate(x + dx, y + dy);\n }\n emit('transform', t);\n}\nfunction bound(bounds, item, mode) {\n var h = textMetrics.height(item),\n a = item.align,\n p = anchorPoint(item),\n x = p.x1,\n y = p.y1,\n dx = item.dx || 0,\n dy = (item.dy || 0) + offset(item) - Math.round(0.8 * h),\n // use 4/5 offset\n tl = textLines(item),\n w;\n\n // get dimensions\n if (isArray(tl)) {\n // multi-line text\n h += lineHeight(item) * (tl.length - 1);\n w = tl.reduce(function (w, t) {\n return Math.max(w, textMetrics.width(item, t));\n }, 0);\n } else {\n // single-line text\n w = textMetrics.width(item, tl);\n }\n\n // horizontal alignment\n if (a === 'center') {\n dx -= w / 2;\n } else if (a === 'right') {\n dx -= w;\n } else ;\n bounds.set(dx += x, dy += y, dx + w, dy + h);\n if (item.angle && !mode) {\n bounds.rotate(item.angle * DegToRad, x, y);\n } else if (mode === 2) {\n return bounds.rotatedPoints(item.angle * DegToRad, x, y);\n }\n return bounds;\n}\nfunction draw(context, scene, bounds) {\n visit(scene, function (item) {\n var opacity = item.opacity == null ? 1 : item.opacity,\n p,\n x,\n y,\n i,\n lh,\n tl,\n str;\n if (bounds && !bounds.intersects(item.bounds) ||\n // bounds check\n opacity === 0 || item.fontSize <= 0 || item.text == null || item.text.length === 0) return;\n context.font = font(item);\n context.textAlign = item.align || 'left';\n p = anchorPoint(item);\n x = p.x1, y = p.y1;\n if (item.angle) {\n context.save();\n context.translate(x, y);\n context.rotate(item.angle * DegToRad);\n x = y = 0; // reset x, y\n }\n\n x += item.dx || 0;\n y += (item.dy || 0) + offset(item);\n tl = textLines(item);\n blend(context, item);\n if (isArray(tl)) {\n lh = lineHeight(item);\n for (i = 0; i < tl.length; ++i) {\n str = textValue(item, tl[i]);\n if (item.fill && fill(context, item, opacity)) {\n context.fillText(str, x, y);\n }\n if (item.stroke && stroke(context, item, opacity)) {\n context.strokeText(str, x, y);\n }\n y += lh;\n }\n } else {\n str = textValue(item, tl);\n if (item.fill && fill(context, item, opacity)) {\n context.fillText(str, x, y);\n }\n if (item.stroke && stroke(context, item, opacity)) {\n context.strokeText(str, x, y);\n }\n }\n if (item.angle) context.restore();\n });\n}\nfunction hit(context, item, x, y, gx, gy) {\n if (item.fontSize <= 0) return false;\n if (!item.angle) return true; // bounds sufficient if no rotation\n\n // project point into space of unrotated bounds\n var p = anchorPoint(item),\n ax = p.x1,\n ay = p.y1,\n b = bound(tempBounds, item, 1),\n a = -item.angle * DegToRad,\n cos = Math.cos(a),\n sin = Math.sin(a),\n px = cos * gx - sin * gy + (ax - cos * ax + sin * ay),\n py = sin * gx + cos * gy + (ay - sin * ax - cos * ay);\n return b.contains(px, py);\n}\nfunction intersectText(item, box) {\n var p = bound(tempBounds, item, 2);\n return intersectBoxLine(box, p[0], p[1], p[2], p[3]) || intersectBoxLine(box, p[0], p[1], p[4], p[5]) || intersectBoxLine(box, p[4], p[5], p[6], p[7]) || intersectBoxLine(box, p[2], p[3], p[6], p[7]);\n}\nvar text = {\n type: 'text',\n tag: 'text',\n nested: false,\n attr: attr,\n bound: bound,\n draw: draw,\n pick: pick$1(hit),\n isect: intersectText\n};\nvar trail = markMultiItemPath('trail', trail$1, pickTrail);\nvar Marks = {\n arc: arc,\n area: area,\n group: group,\n image: image,\n line: line,\n path: path$2,\n rect: rect,\n rule: rule,\n shape: shape,\n symbol: symbol,\n text: text,\n trail: trail\n};\nfunction boundItem(item, func, opt) {\n var type = Marks[item.mark.marktype],\n bound = func || type.bound;\n if (type.nested) item = item.mark;\n return bound(item.bounds || (item.bounds = new Bounds()), item, opt);\n}\nvar DUMMY = {\n mark: null\n};\nfunction boundMark(mark, bounds, opt) {\n var type = Marks[mark.marktype],\n bound = type.bound,\n items = mark.items,\n hasItems = items && items.length,\n i,\n n,\n item,\n b;\n if (type.nested) {\n if (hasItems) {\n item = items[0];\n } else {\n // no items, fake it\n DUMMY.mark = mark;\n item = DUMMY;\n }\n b = boundItem(item, bound, opt);\n bounds = bounds && bounds.union(b) || b;\n return bounds;\n }\n bounds = bounds || mark.bounds && mark.bounds.clear() || new Bounds();\n if (hasItems) {\n for (i = 0, n = items.length; i < n; ++i) {\n bounds.union(boundItem(items[i], bound, opt));\n }\n }\n return mark.bounds = bounds;\n}\nvar keys = ['marktype', 'name', 'role', 'interactive', 'clip', 'items', 'zindex', 'x', 'y', 'width', 'height', 'align', 'baseline',\n// layout\n'fill', 'fillOpacity', 'opacity', 'blend',\n// fill\n'stroke', 'strokeOpacity', 'strokeWidth', 'strokeCap',\n// stroke\n'strokeDash', 'strokeDashOffset',\n// stroke dash\n'strokeForeground', 'strokeOffset',\n// group\n'startAngle', 'endAngle', 'innerRadius', 'outerRadius',\n// arc\n'cornerRadius', 'padAngle',\n// arc, rect\n'cornerRadiusTopLeft', 'cornerRadiusTopRight',\n// rect, group\n'cornerRadiusBottomLeft', 'cornerRadiusBottomRight', 'interpolate', 'tension', 'orient', 'defined',\n// area, line\n'url', 'aspect', 'smooth',\n// image\n'path', 'scaleX', 'scaleY',\n// path\n'x2', 'y2',\n// rule\n'size', 'shape',\n// symbol\n'text', 'angle', 'theta', 'radius', 'dir', 'dx', 'dy',\n// text\n'ellipsis', 'limit', 'lineBreak', 'lineHeight', 'font', 'fontSize', 'fontWeight', 'fontStyle', 'fontVariant',\n// font\n'description', 'aria', 'ariaRole', 'ariaRoleDescription' // aria\n];\n\nfunction sceneToJSON(scene, indent) {\n return JSON.stringify(scene, keys, indent);\n}\nfunction sceneFromJSON(json) {\n var scene = typeof json === 'string' ? JSON.parse(json) : json;\n return initialize(scene);\n}\nfunction initialize(scene) {\n var type = scene.marktype,\n items = scene.items,\n parent,\n i,\n n;\n if (items) {\n for (i = 0, n = items.length; i < n; ++i) {\n parent = type ? 'mark' : 'group';\n items[i][parent] = scene;\n if (items[i].zindex) items[i][parent].zdirty = true;\n if ('group' === (type || parent)) initialize(items[i]);\n }\n }\n if (type) boundMark(scene);\n return scene;\n}\nfunction Scenegraph(scene) {\n if (arguments.length) {\n this.root = sceneFromJSON(scene);\n } else {\n this.root = createMark({\n marktype: 'group',\n name: 'root',\n role: 'frame'\n });\n this.root.items = [new GroupItem(this.root)];\n }\n}\nScenegraph.prototype = {\n toJSON: function toJSON(indent) {\n return sceneToJSON(this.root, indent || 0);\n },\n mark: function mark(markdef, group, index) {\n group = group || this.root.items[0];\n var mark = createMark(markdef, group);\n group.items[index] = mark;\n if (mark.zindex) mark.group.zdirty = true;\n return mark;\n }\n};\nfunction createMark(def, group) {\n var mark = {\n bounds: new Bounds(),\n clip: !!def.clip,\n group: group,\n interactive: def.interactive === false ? false : true,\n items: [],\n marktype: def.marktype,\n name: def.name || undefined,\n role: def.role || undefined,\n zindex: def.zindex || 0\n };\n\n // add accessibility properties if defined\n if (def.aria != null) {\n mark.aria = def.aria;\n }\n if (def.description) {\n mark.description = def.description;\n }\n return mark;\n}\n\n// create a new DOM element\nfunction domCreate(doc, tag, ns) {\n if (!doc && typeof document !== 'undefined' && document.createElement) {\n doc = document;\n }\n return doc ? ns ? doc.createElementNS(ns, tag) : doc.createElement(tag) : null;\n}\n\n// find first child element with matching tag\nfunction domFind(el, tag) {\n tag = tag.toLowerCase();\n var nodes = el.childNodes,\n i = 0,\n n = nodes.length;\n for (; i < n; ++i) if (nodes[i].tagName.toLowerCase() === tag) {\n return nodes[i];\n }\n}\n\n// retrieve child element at given index\n// create & insert if doesn't exist or if tags do not match\nfunction domChild(el, index, tag, ns) {\n var a = el.childNodes[index],\n b;\n if (!a || a.tagName.toLowerCase() !== tag.toLowerCase()) {\n b = a || null;\n a = domCreate(el.ownerDocument, tag, ns);\n el.insertBefore(a, b);\n }\n return a;\n}\n\n// remove all child elements at or above the given index\nfunction domClear(el, index) {\n var nodes = el.childNodes,\n curr = nodes.length;\n while (curr > index) el.removeChild(nodes[--curr]);\n return el;\n}\n\n// generate css class name for mark\nfunction cssClass(mark) {\n return 'mark-' + mark.marktype + (mark.role ? ' role-' + mark.role : '') + (mark.name ? ' ' + mark.name : '');\n}\nfunction point(event, el) {\n var rect = el.getBoundingClientRect();\n return [event.clientX - rect.left - (el.clientLeft || 0), event.clientY - rect.top - (el.clientTop || 0)];\n}\nfunction resolveItem(item, event, el, origin) {\n var mark = item && item.mark,\n mdef,\n p;\n if (mark && (mdef = Marks[mark.marktype]).tip) {\n p = point(event, el);\n p[0] -= origin[0];\n p[1] -= origin[1];\n while (item = item.mark.group) {\n p[0] -= item.x || 0;\n p[1] -= item.y || 0;\n }\n item = mdef.tip(mark.items, p);\n }\n return item;\n}\n\n/**\n * Create a new Handler instance.\n * @param {object} [customLoader] - Optional loader instance for\n * href URL sanitization. If not specified, a standard loader\n * instance will be generated.\n * @param {function} [customTooltip] - Optional tooltip handler\n * function for custom tooltip display.\n * @constructor\n */\nfunction Handler(customLoader, customTooltip) {\n this._active = null;\n this._handlers = {};\n this._loader = customLoader || loader();\n this._tooltip = customTooltip || defaultTooltip;\n}\n\n// The default tooltip display handler.\n// Sets the HTML title attribute on the visualization container.\nfunction defaultTooltip(handler, event, item, value) {\n handler.element().setAttribute('title', value || '');\n}\nHandler.prototype = {\n /**\n * Initialize a new Handler instance.\n * @param {DOMElement} el - The containing DOM element for the display.\n * @param {Array} origin - The origin of the display, in pixels.\n * The coordinate system will be translated to this point.\n * @param {object} [obj] - Optional context object that should serve as\n * the \"this\" context for event callbacks.\n * @return {Handler} - This handler instance.\n */\n initialize: function initialize(el, origin, obj) {\n this._el = el;\n this._obj = obj || null;\n return this.origin(origin);\n },\n /**\n * Returns the parent container element for a visualization.\n * @return {DOMElement} - The containing DOM element.\n */\n element: function element() {\n return this._el;\n },\n /**\n * Returns the scene element (e.g., canvas or SVG) of the visualization\n * Subclasses must override if the first child is not the scene element.\n * @return {DOMElement} - The scene (e.g., canvas or SVG) element.\n */\n canvas: function canvas() {\n return this._el && this._el.firstChild;\n },\n /**\n * Get / set the origin coordinates of the visualization.\n */\n origin: function origin(_origin) {\n if (arguments.length) {\n this._origin = _origin || [0, 0];\n return this;\n } else {\n return this._origin.slice();\n }\n },\n /**\n * Get / set the scenegraph root.\n */\n scene: function scene(_scene) {\n if (!arguments.length) return this._scene;\n this._scene = _scene;\n return this;\n },\n /**\n * Add an event handler. Subclasses should override this method.\n */\n on: function on() {} /*type, handler*/,\n /**\n * Remove an event handler. Subclasses should override this method.\n */\n off: function off() {} /*type, handler*/,\n /**\n * Utility method for finding the array index of an event handler.\n * @param {Array} h - An array of registered event handlers.\n * @param {string} type - The event type.\n * @param {function} handler - The event handler instance to find.\n * @return {number} - The handler's array index or -1 if not registered.\n */\n _handlerIndex: function _handlerIndex(h, type, handler) {\n for (var i = h ? h.length : 0; --i >= 0;) {\n if (h[i].type === type && (!handler || h[i].handler === handler)) {\n return i;\n }\n }\n return -1;\n },\n /**\n * Returns an array with registered event handlers.\n * @param {string} [type] - The event type to query. Any annotations\n * are ignored; for example, for the argument \"click.foo\", \".foo\" will\n * be ignored and the method returns all \"click\" handlers. If type is\n * null or unspecified, this method returns handlers for all types.\n * @return {Array} - A new array containing all registered event handlers.\n */\n handlers: function handlers(type) {\n var h = this._handlers,\n a = [];\n if (type) {\n a.push.apply(a, _toConsumableArray(h[this.eventName(type)]));\n } else {\n for (var k in h) {\n a.push.apply(a, _toConsumableArray(h[k]));\n }\n }\n return a;\n },\n /**\n * Parses an event name string to return the specific event type.\n * For example, given \"click.foo\" returns \"click\"\n * @param {string} name - The input event type string.\n * @return {string} - A string with the event type only.\n */\n eventName: function eventName(name) {\n var i = name.indexOf('.');\n return i < 0 ? name : name.slice(0, i);\n },\n /**\n * Handle hyperlink navigation in response to an item.href value.\n * @param {Event} event - The event triggering hyperlink navigation.\n * @param {Item} item - The scenegraph item.\n * @param {string} href - The URL to navigate to.\n */\n handleHref: function handleHref(event, item, href) {\n this._loader.sanitize(href, {\n context: 'href'\n }).then(function (opt) {\n var e = new MouseEvent(event.type, event),\n a = domCreate(null, 'a');\n for (var name in opt) a.setAttribute(name, opt[name]);\n a.dispatchEvent(e);\n }).catch(function () {/* do nothing */});\n },\n /**\n * Handle tooltip display in response to an item.tooltip value.\n * @param {Event} event - The event triggering tooltip display.\n * @param {Item} item - The scenegraph item.\n * @param {boolean} show - A boolean flag indicating whether\n * to show or hide a tooltip for the given item.\n */\n handleTooltip: function handleTooltip(event, item, show) {\n if (item && item.tooltip != null) {\n item = resolveItem(item, event, this.canvas(), this._origin);\n var _value = show && item && item.tooltip || null;\n this._tooltip.call(this._obj, this, event, item, _value);\n }\n },\n /**\n * Returns the size of a scenegraph item and its position relative\n * to the viewport.\n * @param {Item} item - The scenegraph item.\n * @return {object} - A bounding box object (compatible with the\n * DOMRect type) consisting of x, y, width, heigh, top, left,\n * right, and bottom properties.\n */\n getItemBoundingClientRect: function getItemBoundingClientRect(item) {\n var el = this.canvas();\n if (!el) return;\n var rect = el.getBoundingClientRect(),\n origin = this._origin,\n bounds = item.bounds,\n width = bounds.width(),\n height = bounds.height();\n var x = bounds.x1 + origin[0] + rect.left,\n y = bounds.y1 + origin[1] + rect.top;\n\n // translate coordinate for each parent group\n while (item.mark && (item = item.mark.group)) {\n x += item.x || 0;\n y += item.y || 0;\n }\n\n // return DOMRect-compatible bounding box\n return {\n x: x,\n y: y,\n width: width,\n height: height,\n left: x,\n top: y,\n right: x + width,\n bottom: y + height\n };\n }\n};\n\n/**\n * Create a new Renderer instance.\n * @param {object} [loader] - Optional loader instance for\n * image and href URL sanitization. If not specified, a\n * standard loader instance will be generated.\n * @constructor\n */\nfunction Renderer(loader) {\n this._el = null;\n this._bgcolor = null;\n this._loader = new ResourceLoader(loader);\n}\nRenderer.prototype = {\n /**\n * Initialize a new Renderer instance.\n * @param {DOMElement} el - The containing DOM element for the display.\n * @param {number} width - The coordinate width of the display, in pixels.\n * @param {number} height - The coordinate height of the display, in pixels.\n * @param {Array} origin - The origin of the display, in pixels.\n * The coordinate system will be translated to this point.\n * @param {number} [scaleFactor=1] - Optional scaleFactor by which to multiply\n * the width and height to determine the final pixel size.\n * @return {Renderer} - This renderer instance.\n */\n initialize: function initialize(el, width, height, origin, scaleFactor) {\n this._el = el;\n return this.resize(width, height, origin, scaleFactor);\n },\n /**\n * Returns the parent container element for a visualization.\n * @return {DOMElement} - The containing DOM element.\n */\n element: function element() {\n return this._el;\n },\n /**\n * Returns the scene element (e.g., canvas or SVG) of the visualization\n * Subclasses must override if the first child is not the scene element.\n * @return {DOMElement} - The scene (e.g., canvas or SVG) element.\n */\n canvas: function canvas() {\n return this._el && this._el.firstChild;\n },\n /**\n * Get / set the background color.\n */\n background: function background(bgcolor) {\n if (arguments.length === 0) return this._bgcolor;\n this._bgcolor = bgcolor;\n return this;\n },\n /**\n * Resize the display.\n * @param {number} width - The new coordinate width of the display, in pixels.\n * @param {number} height - The new coordinate height of the display, in pixels.\n * @param {Array} origin - The new origin of the display, in pixels.\n * The coordinate system will be translated to this point.\n * @param {number} [scaleFactor=1] - Optional scaleFactor by which to multiply\n * the width and height to determine the final pixel size.\n * @return {Renderer} - This renderer instance;\n */\n resize: function resize(width, height, origin, scaleFactor) {\n this._width = width;\n this._height = height;\n this._origin = origin || [0, 0];\n this._scale = scaleFactor || 1;\n return this;\n },\n /**\n * Report a dirty item whose bounds should be redrawn.\n * This base class method does nothing. Subclasses that perform\n * incremental should implement this method.\n * @param {Item} item - The dirty item whose bounds should be redrawn.\n */\n dirty: function dirty() {} /*item*/,\n /**\n * Render an input scenegraph, potentially with a set of dirty items.\n * This method will perform an immediate rendering with available resources.\n * The renderer may also need to perform image loading to perform a complete\n * render. This process can lead to asynchronous re-rendering of the scene\n * after this method returns. To receive notification when rendering is\n * complete, use the renderAsync method instead.\n * @param {object} scene - The root mark of a scenegraph to render.\n * @return {Renderer} - This renderer instance.\n */\n render: function render(scene) {\n var r = this;\n\n // bind arguments into a render call, and cache it\n // this function may be subsequently called for async redraw\n r._call = function () {\n r._render(scene);\n };\n\n // invoke the renderer\n r._call();\n\n // clear the cached call for garbage collection\n // async redraws will stash their own copy\n r._call = null;\n return r;\n },\n /**\n * Internal rendering method. Renderer subclasses should override this\n * method to actually perform rendering.\n * @param {object} scene - The root mark of a scenegraph to render.\n */\n _render: function _render() {\n // subclasses to override\n } /*scene*/,\n /**\n * Asynchronous rendering method. Similar to render, but returns a Promise\n * that resolves when all rendering is completed. Sometimes a renderer must\n * perform image loading to get a complete rendering. The returned\n * Promise will not resolve until this process completes.\n * @param {object} scene - The root mark of a scenegraph to render.\n * @return {Promise} - A Promise that resolves when rendering is complete.\n */\n renderAsync: function renderAsync(scene) {\n var r = this.render(scene);\n return this._ready ? this._ready.then(function () {\n return r;\n }) : Promise.resolve(r);\n },\n /**\n * Internal method for asynchronous resource loading.\n * Proxies method calls to the ImageLoader, and tracks loading\n * progress to invoke a re-render once complete.\n * @param {string} method - The method name to invoke on the ImageLoader.\n * @param {string} uri - The URI for the requested resource.\n * @return {Promise} - A Promise that resolves to the requested resource.\n */\n _load: function _load(method, uri) {\n var r = this,\n p = r._loader[method](uri);\n if (!r._ready) {\n // re-render the scene when loading completes\n var call = r._call;\n r._ready = r._loader.ready().then(function (redraw) {\n if (redraw) call();\n r._ready = null;\n });\n }\n return p;\n },\n /**\n * Sanitize a URL to include as a hyperlink in the rendered scene.\n * This method proxies a call to ImageLoader.sanitizeURL, but also tracks\n * image loading progress and invokes a re-render once complete.\n * @param {string} uri - The URI string to sanitize.\n * @return {Promise} - A Promise that resolves to the sanitized URL.\n */\n sanitizeURL: function sanitizeURL(uri) {\n return this._load('sanitizeURL', uri);\n },\n /**\n * Requests an image to include in the rendered scene.\n * This method proxies a call to ImageLoader.loadImage, but also tracks\n * image loading progress and invokes a re-render once complete.\n * @param {string} uri - The URI string of the image.\n * @return {Promise} - A Promise that resolves to the loaded Image.\n */\n loadImage: function loadImage(uri) {\n return this._load('loadImage', uri);\n }\n};\nvar KeyDownEvent = 'keydown';\nvar KeyPressEvent = 'keypress';\nvar KeyUpEvent = 'keyup';\nvar DragEnterEvent = 'dragenter';\nvar DragLeaveEvent = 'dragleave';\nvar DragOverEvent = 'dragover';\nvar MouseDownEvent = 'mousedown';\nvar MouseUpEvent = 'mouseup';\nvar MouseMoveEvent = 'mousemove';\nvar MouseOutEvent = 'mouseout';\nvar MouseOverEvent = 'mouseover';\nvar ClickEvent = 'click';\nvar DoubleClickEvent = 'dblclick';\nvar WheelEvent = 'wheel';\nvar MouseWheelEvent = 'mousewheel';\nvar TouchStartEvent = 'touchstart';\nvar TouchMoveEvent = 'touchmove';\nvar TouchEndEvent = 'touchend';\nvar Events = [KeyDownEvent, KeyPressEvent, KeyUpEvent, DragEnterEvent, DragLeaveEvent, DragOverEvent, MouseDownEvent, MouseUpEvent, MouseMoveEvent, MouseOutEvent, MouseOverEvent, ClickEvent, DoubleClickEvent, WheelEvent, MouseWheelEvent, TouchStartEvent, TouchMoveEvent, TouchEndEvent];\nvar TooltipShowEvent = MouseMoveEvent;\nvar TooltipHideEvent = MouseOutEvent;\nvar HrefEvent = ClickEvent;\nfunction CanvasHandler(loader, tooltip) {\n Handler.call(this, loader, tooltip);\n this._down = null;\n this._touch = null;\n this._first = true;\n this._events = {};\n}\nvar eventBundle = function eventBundle(type) {\n return type === TouchStartEvent || type === TouchMoveEvent || type === TouchEndEvent ? [TouchStartEvent, TouchMoveEvent, TouchEndEvent] : [type];\n};\n\n// lazily add listeners to the canvas as needed\nfunction eventListenerCheck(handler, type) {\n eventBundle(type).forEach(function (_) {\n return addEventListener(handler, _);\n });\n}\nfunction addEventListener(handler, type) {\n var canvas = handler.canvas();\n if (canvas && !handler._events[type]) {\n handler._events[type] = 1;\n canvas.addEventListener(type, handler[type] ? function (evt) {\n return handler[type](evt);\n } : function (evt) {\n return handler.fire(type, evt);\n });\n }\n}\nfunction move(moveEvent, overEvent, outEvent) {\n return function (evt) {\n var a = this._active,\n p = this.pickEvent(evt);\n if (p === a) {\n // active item and picked item are the same\n this.fire(moveEvent, evt); // fire move\n } else {\n // active item and picked item are different\n if (!a || !a.exit) {\n // fire out for prior active item\n // suppress if active item was removed from scene\n this.fire(outEvent, evt);\n }\n this._active = p; // set new active item\n this.fire(overEvent, evt); // fire over for new active item\n this.fire(moveEvent, evt); // fire move for new active item\n }\n };\n}\n\nfunction inactive(type) {\n return function (evt) {\n this.fire(type, evt);\n this._active = null;\n };\n}\ninherits(CanvasHandler, Handler, {\n initialize: function initialize(el, origin, obj) {\n var _this4 = this;\n this._canvas = el && domFind(el, 'canvas');\n\n // add minimal events required for proper state management\n [ClickEvent, MouseDownEvent, MouseMoveEvent, MouseOutEvent, DragLeaveEvent].forEach(function (type) {\n return eventListenerCheck(_this4, type);\n });\n return Handler.prototype.initialize.call(this, el, origin, obj);\n },\n // return the backing canvas instance\n canvas: function canvas() {\n return this._canvas;\n },\n // retrieve the current canvas context\n context: function context() {\n return this._canvas.getContext('2d');\n },\n // supported events\n events: Events,\n // to keep old versions of firefox happy\n DOMMouseScroll: function DOMMouseScroll(evt) {\n this.fire(MouseWheelEvent, evt);\n },\n mousemove: move(MouseMoveEvent, MouseOverEvent, MouseOutEvent),\n dragover: move(DragOverEvent, DragEnterEvent, DragLeaveEvent),\n mouseout: inactive(MouseOutEvent),\n dragleave: inactive(DragLeaveEvent),\n mousedown: function mousedown(evt) {\n this._down = this._active;\n this.fire(MouseDownEvent, evt);\n },\n click: function click(evt) {\n if (this._down === this._active) {\n this.fire(ClickEvent, evt);\n this._down = null;\n }\n },\n touchstart: function touchstart(evt) {\n this._touch = this.pickEvent(evt.changedTouches[0]);\n if (this._first) {\n this._active = this._touch;\n this._first = false;\n }\n this.fire(TouchStartEvent, evt, true);\n },\n touchmove: function touchmove(evt) {\n this.fire(TouchMoveEvent, evt, true);\n },\n touchend: function touchend(evt) {\n this.fire(TouchEndEvent, evt, true);\n this._touch = null;\n },\n // fire an event\n fire: function fire(type, evt, touch) {\n var a = touch ? this._touch : this._active,\n h = this._handlers[type];\n\n // set event type relative to scenegraph items\n evt.vegaType = type;\n\n // handle hyperlinks and tooltips first\n if (type === HrefEvent && a && a.href) {\n this.handleHref(evt, a, a.href);\n } else if (type === TooltipShowEvent || type === TooltipHideEvent) {\n this.handleTooltip(evt, a, type !== TooltipHideEvent);\n }\n\n // invoke all registered handlers\n if (h) {\n for (var i = 0, len = h.length; i < len; ++i) {\n h[i].handler.call(this._obj, evt, a);\n }\n }\n },\n // add an event handler\n on: function on(type, handler) {\n var name = this.eventName(type),\n h = this._handlers,\n i = this._handlerIndex(h[name], type, handler);\n if (i < 0) {\n eventListenerCheck(this, type);\n (h[name] || (h[name] = [])).push({\n type: type,\n handler: handler\n });\n }\n return this;\n },\n // remove an event handler\n off: function off(type, handler) {\n var name = this.eventName(type),\n h = this._handlers[name],\n i = this._handlerIndex(h, type, handler);\n if (i >= 0) {\n h.splice(i, 1);\n }\n return this;\n },\n pickEvent: function pickEvent(evt) {\n var p = point(evt, this._canvas),\n o = this._origin;\n return this.pick(this._scene, p[0], p[1], p[0] - o[0], p[1] - o[1]);\n },\n // find the scenegraph item at the current mouse position\n // x, y -- the absolute x, y mouse coordinates on the canvas element\n // gx, gy -- the relative coordinates within the current group\n pick: function pick(scene, x, y, gx, gy) {\n var g = this.context(),\n mark = Marks[scene.marktype];\n return mark.pick.call(this, g, scene, x, y, gx, gy);\n }\n});\nfunction devicePixelRatio() {\n return typeof window !== 'undefined' ? window.devicePixelRatio || 1 : 1;\n}\nvar pixelRatio = devicePixelRatio();\nfunction _resize(canvas, width, height, origin, scaleFactor, opt) {\n var inDOM = typeof HTMLElement !== 'undefined' && canvas instanceof HTMLElement && canvas.parentNode != null,\n context = canvas.getContext('2d'),\n ratio = inDOM ? pixelRatio : scaleFactor;\n canvas.width = width * ratio;\n canvas.height = height * ratio;\n for (var key in opt) {\n context[key] = opt[key];\n }\n if (inDOM && ratio !== 1) {\n canvas.style.width = width + 'px';\n canvas.style.height = height + 'px';\n }\n context.pixelRatio = ratio;\n context.setTransform(ratio, 0, 0, ratio, ratio * origin[0], ratio * origin[1]);\n return canvas;\n}\nfunction CanvasRenderer(loader) {\n Renderer.call(this, loader);\n this._options = {};\n this._redraw = false;\n this._dirty = new Bounds();\n this._tempb = new Bounds();\n}\nvar base$1 = Renderer.prototype;\nvar viewBounds = function viewBounds(origin, width, height) {\n return new Bounds().set(0, 0, width, height).translate(-origin[0], -origin[1]);\n};\nfunction clipToBounds(g, b, origin) {\n // expand bounds by 1 pixel, then round to pixel boundaries\n b.expand(1).round();\n\n // align to base pixel grid in case of non-integer scaling (#2425)\n if (g.pixelRatio % 1) {\n b.scale(g.pixelRatio).round().scale(1 / g.pixelRatio);\n }\n\n // to avoid artifacts translate if origin has fractional pixels\n b.translate(-(origin[0] % 1), -(origin[1] % 1));\n\n // set clip path\n g.beginPath();\n g.rect(b.x1, b.y1, b.width(), b.height());\n g.clip();\n return b;\n}\ninherits(CanvasRenderer, Renderer, {\n initialize: function initialize(el, width, height, origin, scaleFactor, options) {\n this._options = options || {};\n this._canvas = this._options.externalContext ? null : canvas(1, 1, this._options.type); // instantiate a small canvas\n\n if (el && this._canvas) {\n domClear(el, 0).appendChild(this._canvas);\n this._canvas.setAttribute('class', 'marks');\n }\n\n // this method will invoke resize to size the canvas appropriately\n return base$1.initialize.call(this, el, width, height, origin, scaleFactor);\n },\n resize: function resize(width, height, origin, scaleFactor) {\n base$1.resize.call(this, width, height, origin, scaleFactor);\n if (this._canvas) {\n // configure canvas size and transform\n _resize(this._canvas, this._width, this._height, this._origin, this._scale, this._options.context);\n } else {\n // external context needs to be scaled and positioned to origin\n var ctx = this._options.externalContext;\n if (!ctx) error('CanvasRenderer is missing a valid canvas or context');\n ctx.scale(this._scale, this._scale);\n ctx.translate(this._origin[0], this._origin[1]);\n }\n this._redraw = true;\n return this;\n },\n canvas: function canvas() {\n return this._canvas;\n },\n context: function context() {\n return this._options.externalContext || (this._canvas ? this._canvas.getContext('2d') : null);\n },\n dirty: function dirty(item) {\n var b = this._tempb.clear().union(item.bounds);\n var g = item.mark.group;\n while (g) {\n b.translate(g.x || 0, g.y || 0);\n g = g.mark.group;\n }\n this._dirty.union(b);\n },\n _render: function _render(scene) {\n var g = this.context(),\n o = this._origin,\n w = this._width,\n h = this._height,\n db = this._dirty,\n vb = viewBounds(o, w, h);\n\n // setup\n g.save();\n var b = this._redraw || db.empty() ? (this._redraw = false, vb.expand(1)) : clipToBounds(g, vb.intersect(db), o);\n this.clear(-o[0], -o[1], w, h);\n\n // render\n this.draw(g, scene, b);\n\n // takedown\n g.restore();\n db.clear();\n return this;\n },\n draw: function draw(ctx, scene, bounds) {\n var mark = Marks[scene.marktype];\n if (scene.clip) clip(ctx, scene);\n mark.draw.call(this, ctx, scene, bounds);\n if (scene.clip) ctx.restore();\n },\n clear: function clear(x, y, w, h) {\n var opt = this._options,\n g = this.context();\n if (opt.type !== 'pdf' && !opt.externalContext) {\n // calling clear rect voids vector output in pdf mode\n // and could remove external context content (#2615)\n g.clearRect(x, y, w, h);\n }\n if (this._bgcolor != null) {\n g.fillStyle = this._bgcolor;\n g.fillRect(x, y, w, h);\n }\n }\n});\nfunction SVGHandler(loader, tooltip) {\n Handler.call(this, loader, tooltip);\n var h = this;\n h._hrefHandler = listener(h, function (evt, item) {\n if (item && item.href) h.handleHref(evt, item, item.href);\n });\n h._tooltipHandler = listener(h, function (evt, item) {\n h.handleTooltip(evt, item, evt.type !== TooltipHideEvent);\n });\n}\n\n// wrap an event listener for the SVG DOM\nvar listener = function listener(context, handler) {\n return function (evt) {\n var item = evt.target.__data__;\n item = Array.isArray(item) ? item[0] : item;\n evt.vegaType = evt.type;\n handler.call(context._obj, evt, item);\n };\n};\ninherits(SVGHandler, Handler, {\n initialize: function initialize(el, origin, obj) {\n var svg = this._svg;\n if (svg) {\n svg.removeEventListener(HrefEvent, this._hrefHandler);\n svg.removeEventListener(TooltipShowEvent, this._tooltipHandler);\n svg.removeEventListener(TooltipHideEvent, this._tooltipHandler);\n }\n this._svg = svg = el && domFind(el, 'svg');\n if (svg) {\n svg.addEventListener(HrefEvent, this._hrefHandler);\n svg.addEventListener(TooltipShowEvent, this._tooltipHandler);\n svg.addEventListener(TooltipHideEvent, this._tooltipHandler);\n }\n return Handler.prototype.initialize.call(this, el, origin, obj);\n },\n canvas: function canvas() {\n return this._svg;\n },\n // add an event handler\n on: function on(type, handler) {\n var name = this.eventName(type),\n h = this._handlers,\n i = this._handlerIndex(h[name], type, handler);\n if (i < 0) {\n var _x2 = {\n type: type,\n handler: handler,\n listener: listener(this, handler)\n };\n (h[name] || (h[name] = [])).push(_x2);\n if (this._svg) {\n this._svg.addEventListener(name, _x2.listener);\n }\n }\n return this;\n },\n // remove an event handler\n off: function off(type, handler) {\n var name = this.eventName(type),\n h = this._handlers[name],\n i = this._handlerIndex(h, type, handler);\n if (i >= 0) {\n if (this._svg) {\n this._svg.removeEventListener(name, h[i].listener);\n }\n h.splice(i, 1);\n }\n return this;\n }\n});\nvar ARIA_HIDDEN = 'aria-hidden';\nvar ARIA_LABEL = 'aria-label';\nvar ARIA_ROLE = 'role';\nvar ARIA_ROLEDESCRIPTION = 'aria-roledescription';\nvar GRAPHICS_OBJECT = 'graphics-object';\nvar GRAPHICS_SYMBOL = 'graphics-symbol';\nvar bundle = function bundle(role, roledesc, label) {\n var _ref;\n return _ref = {}, _defineProperty(_ref, ARIA_ROLE, role), _defineProperty(_ref, ARIA_ROLEDESCRIPTION, roledesc), _defineProperty(_ref, ARIA_LABEL, label || undefined), _ref;\n};\n\n// these roles are covered by related roles\n// we can ignore them, no need to generate attributes\nvar AriaIgnore = toSet(['axis-domain', 'axis-grid', 'axis-label', 'axis-tick', 'axis-title', 'legend-band', 'legend-entry', 'legend-gradient', 'legend-label', 'legend-title', 'legend-symbol', 'title']);\n\n// aria attribute generators for guide roles\nvar AriaGuides = {\n 'axis': {\n desc: 'axis',\n caption: axisCaption\n },\n 'legend': {\n desc: 'legend',\n caption: legendCaption\n },\n 'title-text': {\n desc: 'title',\n caption: function caption(item) {\n return \"Title text '\".concat(titleCaption(item), \"'\");\n }\n },\n 'title-subtitle': {\n desc: 'subtitle',\n caption: function caption(item) {\n return \"Subtitle text '\".concat(titleCaption(item), \"'\");\n }\n }\n};\n\n// aria properties generated for mark item encoding channels\nvar AriaEncode = {\n ariaRole: ARIA_ROLE,\n ariaRoleDescription: ARIA_ROLEDESCRIPTION,\n description: ARIA_LABEL\n};\nfunction ariaItemAttributes(emit, item) {\n var hide = item.aria === false;\n emit(ARIA_HIDDEN, hide || undefined);\n if (hide || item.description == null) {\n for (var prop in AriaEncode) {\n emit(AriaEncode[prop], undefined);\n }\n } else {\n var _type = item.mark.marktype;\n emit(ARIA_LABEL, item.description);\n emit(ARIA_ROLE, item.ariaRole || (_type === 'group' ? GRAPHICS_OBJECT : GRAPHICS_SYMBOL));\n emit(ARIA_ROLEDESCRIPTION, item.ariaRoleDescription || \"\".concat(_type, \" mark\"));\n }\n}\nfunction ariaMarkAttributes(mark) {\n return mark.aria === false ? _defineProperty({}, ARIA_HIDDEN, true) : AriaIgnore[mark.role] ? null : AriaGuides[mark.role] ? ariaGuide(mark, AriaGuides[mark.role]) : ariaMark(mark);\n}\nfunction ariaMark(mark) {\n var type = mark.marktype;\n var recurse = type === 'group' || type === 'text' || mark.items.some(function (_) {\n return _.description != null && _.aria !== false;\n });\n return bundle(recurse ? GRAPHICS_OBJECT : GRAPHICS_SYMBOL, \"\".concat(type, \" mark container\"), mark.description);\n}\nfunction ariaGuide(mark, opt) {\n try {\n var item = mark.items[0],\n caption = opt.caption || function () {\n return '';\n };\n return bundle(opt.role || GRAPHICS_SYMBOL, opt.desc, item.description || caption(item));\n } catch (err) {\n return null;\n }\n}\nfunction titleCaption(item) {\n return array(item.text).join(' ');\n}\nfunction axisCaption(item) {\n var datum = item.datum,\n orient = item.orient,\n title = datum.title ? extractTitle(item) : null,\n ctx = item.context,\n scale = ctx.scales[datum.scale].value,\n locale = ctx.dataflow.locale(),\n type = scale.type,\n xy = orient === 'left' || orient === 'right' ? 'Y' : 'X';\n return \"\".concat(xy, \"-axis\") + (title ? \" titled '\".concat(title, \"'\") : '') + \" for a \".concat(isDiscrete(type) ? 'discrete' : type, \" scale\") + \" with \".concat(domainCaption(locale, scale, item));\n}\nfunction legendCaption(item) {\n var datum = item.datum,\n title = datum.title ? extractTitle(item) : null,\n type = \"\".concat(datum.type || '', \" legend\").trim(),\n scales = datum.scales,\n props = Object.keys(scales),\n ctx = item.context,\n scale = ctx.scales[scales[props[0]]].value,\n locale = ctx.dataflow.locale();\n return capitalize(type) + (title ? \" titled '\".concat(title, \"'\") : '') + \" for \".concat(channelCaption(props)) + \" with \".concat(domainCaption(locale, scale, item));\n}\nfunction extractTitle(item) {\n try {\n return array(peek(item.items).items[0].text).join(' ');\n } catch (err) {\n return null;\n }\n}\nfunction channelCaption(props) {\n props = props.map(function (p) {\n return p + (p === 'fill' || p === 'stroke' ? ' color' : '');\n });\n return props.length < 2 ? props[0] : props.slice(0, -1).join(', ') + ' and ' + peek(props);\n}\nfunction capitalize(s) {\n return s.length ? s[0].toUpperCase() + s.slice(1) : s;\n}\nvar innerText = function innerText(val) {\n return (val + '').replace(/&/g, '&').replace(//g, '>');\n};\nvar attrText = function attrText(val) {\n return innerText(val).replace(/\"/g, '"').replace(/\\t/g, ' ').replace(/\\n/g, ' ').replace(/\\r/g, ' ');\n};\nfunction markup() {\n var buf = '',\n outer = '',\n inner = '';\n var stack = [],\n clear = function clear() {\n return outer = inner = '';\n },\n push = function push(tag) {\n if (outer) {\n buf += \"\".concat(outer, \">\").concat(inner);\n clear();\n }\n stack.push(tag);\n },\n attr = function attr(name, value) {\n if (value != null) outer += \" \".concat(name, \"=\\\"\").concat(attrText(value), \"\\\"\");\n return m;\n },\n m = {\n open: function open(tag) {\n push(tag);\n outer = '<' + tag;\n for (var _len = arguments.length, attrs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n attrs[_key - 1] = arguments[_key];\n }\n for (var _i = 0, _attrs = attrs; _i < _attrs.length; _i++) {\n var set = _attrs[_i];\n for (var key in set) attr(key, set[key]);\n }\n return m;\n },\n close: function close() {\n var tag = stack.pop();\n if (outer) {\n buf += outer + (inner ? \">\".concat(inner, \"\") : '/>');\n } else {\n buf += \"\");\n }\n clear();\n return m;\n },\n attr: attr,\n text: function text(t) {\n return inner += innerText(t), m;\n },\n toString: function toString() {\n return buf;\n }\n };\n return m;\n}\nvar serializeXML = function serializeXML(node) {\n return _serialize(markup(), node) + '';\n};\nfunction _serialize(m, node) {\n m.open(node.tagName);\n if (node.hasAttributes()) {\n var attrs = node.attributes,\n n = attrs.length;\n for (var i = 0; i < n; ++i) {\n m.attr(attrs[i].name, attrs[i].value);\n }\n }\n if (node.hasChildNodes()) {\n var children = node.childNodes;\n var _iterator = _createForOfIteratorHelper(children),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var child = _step.value;\n child.nodeType === 3 // text node\n ? m.text(child.nodeValue) : _serialize(m, child);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n return m.close();\n}\nvar stylesAttr = {\n fill: 'fill',\n fillOpacity: 'fill-opacity',\n stroke: 'stroke',\n strokeOpacity: 'stroke-opacity',\n strokeWidth: 'stroke-width',\n strokeCap: 'stroke-linecap',\n strokeJoin: 'stroke-linejoin',\n strokeDash: 'stroke-dasharray',\n strokeDashOffset: 'stroke-dashoffset',\n strokeMiterLimit: 'stroke-miterlimit',\n opacity: 'opacity'\n};\nvar stylesCss = {\n blend: 'mix-blend-mode'\n};\n\n// ensure miter limit default is consistent with canvas (#2498)\nvar rootAttributes = {\n 'fill': 'none',\n 'stroke-miterlimit': 10\n};\nvar RootIndex = 0,\n xmlns = 'http://www.w3.org/2000/xmlns/',\n svgns = metadata.xmlns;\nfunction SVGRenderer(loader) {\n Renderer.call(this, loader);\n this._dirtyID = 0;\n this._dirty = [];\n this._svg = null;\n this._root = null;\n this._defs = null;\n}\nvar base = Renderer.prototype;\ninherits(SVGRenderer, Renderer, {\n /**\n * Initialize a new SVGRenderer instance.\n * @param {DOMElement} el - The containing DOM element for the display.\n * @param {number} width - The coordinate width of the display, in pixels.\n * @param {number} height - The coordinate height of the display, in pixels.\n * @param {Array} origin - The origin of the display, in pixels.\n * The coordinate system will be translated to this point.\n * @param {number} [scaleFactor=1] - Optional scaleFactor by which to multiply\n * the width and height to determine the final pixel size.\n * @return {SVGRenderer} - This renderer instance.\n */\n initialize: function initialize(el, width, height, origin, scaleFactor) {\n // create the svg definitions cache\n this._defs = {};\n this._clearDefs();\n if (el) {\n this._svg = domChild(el, 0, 'svg', svgns);\n this._svg.setAttributeNS(xmlns, 'xmlns', svgns);\n this._svg.setAttributeNS(xmlns, 'xmlns:xlink', metadata['xmlns:xlink']);\n this._svg.setAttribute('version', metadata['version']);\n this._svg.setAttribute('class', 'marks');\n domClear(el, 1);\n\n // set the svg root group\n this._root = domChild(this._svg, RootIndex, 'g', svgns);\n setAttributes(this._root, rootAttributes);\n\n // ensure no additional child elements\n domClear(this._svg, RootIndex + 1);\n }\n\n // set background color if defined\n this.background(this._bgcolor);\n return base.initialize.call(this, el, width, height, origin, scaleFactor);\n },\n /**\n * Get / set the background color.\n */\n background: function background(bgcolor) {\n if (arguments.length && this._svg) {\n this._svg.style.setProperty('background-color', bgcolor);\n }\n return base.background.apply(this, arguments);\n },\n /**\n * Resize the display.\n * @param {number} width - The new coordinate width of the display, in pixels.\n * @param {number} height - The new coordinate height of the display, in pixels.\n * @param {Array} origin - The new origin of the display, in pixels.\n * The coordinate system will be translated to this point.\n * @param {number} [scaleFactor=1] - Optional scaleFactor by which to multiply\n * the width and height to determine the final pixel size.\n * @return {SVGRenderer} - This renderer instance;\n */\n resize: function resize(width, height, origin, scaleFactor) {\n base.resize.call(this, width, height, origin, scaleFactor);\n if (this._svg) {\n setAttributes(this._svg, {\n width: this._width * this._scale,\n height: this._height * this._scale,\n viewBox: \"0 0 \".concat(this._width, \" \").concat(this._height)\n });\n this._root.setAttribute('transform', \"translate(\".concat(this._origin, \")\"));\n }\n this._dirty = [];\n return this;\n },\n /**\n * Returns the SVG element of the visualization.\n * @return {DOMElement} - The SVG element.\n */\n canvas: function canvas() {\n return this._svg;\n },\n /**\n * Returns an SVG text string for the rendered content,\n * or null if this renderer is currently headless.\n */\n svg: function svg() {\n var svg = this._svg,\n bg = this._bgcolor;\n if (!svg) return null;\n var node;\n if (bg) {\n svg.removeAttribute('style');\n node = domChild(svg, RootIndex, 'rect', svgns);\n setAttributes(node, {\n width: this._width,\n height: this._height,\n fill: bg\n });\n }\n var text = serializeXML(svg);\n if (bg) {\n svg.removeChild(node);\n this._svg.style.setProperty('background-color', bg);\n }\n return text;\n },\n /**\n * Internal rendering method.\n * @param {object} scene - The root mark of a scenegraph to render.\n */\n _render: function _render(scene) {\n // perform spot updates and re-render markup\n if (this._dirtyCheck()) {\n if (this._dirtyAll) this._clearDefs();\n this.mark(this._root, scene);\n domClear(this._root, 1);\n }\n this.defs();\n this._dirty = [];\n ++this._dirtyID;\n return this;\n },\n // -- Manage rendering of items marked as dirty --\n /**\n * Flag a mark item as dirty.\n * @param {Item} item - The mark item.\n */\n dirty: function dirty(item) {\n if (item.dirty !== this._dirtyID) {\n item.dirty = this._dirtyID;\n this._dirty.push(item);\n }\n },\n /**\n * Check if a mark item is considered dirty.\n * @param {Item} item - The mark item.\n */\n isDirty: function isDirty(item) {\n return this._dirtyAll || !item._svg || !item._svg.ownerSVGElement || item.dirty === this._dirtyID;\n },\n /**\n * Internal method to check dirty status and, if possible,\n * make targetted updates without a full rendering pass.\n */\n _dirtyCheck: function _dirtyCheck() {\n this._dirtyAll = true;\n var items = this._dirty;\n if (!items.length || !this._dirtyID) return true;\n var id = ++this._dirtyID;\n var item, mark, type, mdef, i, n, o;\n for (i = 0, n = items.length; i < n; ++i) {\n item = items[i];\n mark = item.mark;\n if (mark.marktype !== type) {\n // memoize mark instance lookup\n type = mark.marktype;\n mdef = Marks[type];\n }\n if (mark.zdirty && mark.dirty !== id) {\n this._dirtyAll = false;\n dirtyParents(item, id);\n mark.items.forEach(function (i) {\n i.dirty = id;\n });\n }\n if (mark.zdirty) continue; // handle in standard drawing pass\n\n if (item.exit) {\n // EXIT\n if (mdef.nested && mark.items.length) {\n // if nested mark with remaining points, update instead\n o = mark.items[0];\n if (o._svg) this._update(mdef, o._svg, o);\n } else if (item._svg) {\n // otherwise remove from DOM\n o = item._svg.parentNode;\n if (o) o.removeChild(item._svg);\n }\n item._svg = null;\n continue;\n }\n item = mdef.nested ? mark.items[0] : item;\n if (item._update === id) continue; // already visited\n\n if (!item._svg || !item._svg.ownerSVGElement) {\n // ENTER\n this._dirtyAll = false;\n dirtyParents(item, id);\n } else {\n // IN-PLACE UPDATE\n this._update(mdef, item._svg, item);\n }\n item._update = id;\n }\n return !this._dirtyAll;\n },\n // -- Construct & maintain scenegraph to SVG mapping ---\n /**\n * Render a set of mark items.\n * @param {SVGElement} el - The parent element in the SVG tree.\n * @param {object} scene - The mark parent to render.\n * @param {SVGElement} prev - The previous sibling in the SVG tree.\n */\n mark: function mark(el, scene, prev) {\n var _this5 = this;\n if (!this.isDirty(scene)) {\n return scene._svg;\n }\n var svg = this._svg,\n mdef = Marks[scene.marktype],\n events = scene.interactive === false ? 'none' : null,\n isGroup = mdef.tag === 'g';\n var parent = bind(scene, el, prev, 'g', svg);\n parent.setAttribute('class', cssClass(scene));\n\n // apply aria attributes to parent container element\n var aria = ariaMarkAttributes(scene);\n for (var key in aria) setAttribute(parent, key, aria[key]);\n if (!isGroup) {\n setAttribute(parent, 'pointer-events', events);\n }\n setAttribute(parent, 'clip-path', scene.clip ? clip$1(this, scene, scene.group) : null);\n var sibling = null,\n i = 0;\n var process = function process(item) {\n var dirty = _this5.isDirty(item),\n node = bind(item, parent, sibling, mdef.tag, svg);\n if (dirty) {\n _this5._update(mdef, node, item);\n if (isGroup) recurse(_this5, node, item);\n }\n sibling = node;\n ++i;\n };\n if (mdef.nested) {\n if (scene.items.length) process(scene.items[0]);\n } else {\n visit(scene, process);\n }\n domClear(parent, i);\n return parent;\n },\n /**\n * Update the attributes of an SVG element for a mark item.\n * @param {object} mdef - The mark definition object\n * @param {SVGElement} el - The SVG element.\n * @param {Item} item - The mark item.\n */\n _update: function _update(mdef, el, item) {\n // set dom element and values cache\n // provides access to emit method\n element = el;\n values = el.__values__;\n\n // apply aria-specific properties\n ariaItemAttributes(emit, item);\n\n // apply svg attributes\n mdef.attr(emit, item, this);\n\n // some marks need special treatment\n var extra = mark_extras[mdef.type];\n if (extra) extra.call(this, mdef, el, item);\n\n // apply svg style attributes\n // note: element state may have been modified by 'extra' method\n if (element) this.style(element, item);\n },\n /**\n * Update the presentation attributes of an SVG element for a mark item.\n * @param {SVGElement} el - The SVG element.\n * @param {Item} item - The mark item.\n */\n style: function style(el, item) {\n if (item == null) return;\n for (var prop in stylesAttr) {\n var _value2 = prop === 'font' ? fontFamily(item) : item[prop];\n if (_value2 === values[prop]) continue;\n var name = stylesAttr[prop];\n if (_value2 == null) {\n el.removeAttribute(name);\n } else {\n if (isGradient(_value2)) {\n _value2 = gradientRef(_value2, this._defs.gradient, href());\n }\n el.setAttribute(name, _value2 + '');\n }\n values[prop] = _value2;\n }\n for (var _prop in stylesCss) {\n setStyle(el, stylesCss[_prop], item[_prop]);\n }\n },\n /**\n * Render SVG defs, as needed.\n * Must be called *after* marks have been processed to ensure the\n * collected state is current and accurate.\n */\n defs: function defs() {\n var svg = this._svg,\n defs = this._defs;\n var el = defs.el,\n index = 0;\n for (var id in defs.gradient) {\n if (!el) defs.el = el = domChild(svg, RootIndex + 1, 'defs', svgns);\n index = updateGradient(el, defs.gradient[id], index);\n }\n for (var _id in defs.clipping) {\n if (!el) defs.el = el = domChild(svg, RootIndex + 1, 'defs', svgns);\n index = updateClipping(el, defs.clipping[_id], index);\n }\n\n // clean-up\n if (el) {\n index === 0 ? (svg.removeChild(el), defs.el = null) : domClear(el, index);\n }\n },\n /**\n * Clear defs caches.\n */\n _clearDefs: function _clearDefs() {\n var def = this._defs;\n def.gradient = {};\n def.clipping = {};\n }\n});\n\n// mark ancestor chain with a dirty id\nfunction dirtyParents(item, id) {\n for (; item && item.dirty !== id; item = item.mark.group) {\n item.dirty = id;\n if (item.mark && item.mark.dirty !== id) {\n item.mark.dirty = id;\n } else return;\n }\n}\n\n// update gradient definitions\nfunction updateGradient(el, grad, index) {\n var i, n, stop;\n if (grad.gradient === 'radial') {\n // SVG radial gradients automatically transform to normalized bbox\n // coordinates, in a way that is cumbersome to replicate in canvas.\n // We wrap the radial gradient in a pattern element, allowing us to\n // maintain a circular gradient that matches what canvas provides.\n var pt = domChild(el, index++, 'pattern', svgns);\n setAttributes(pt, {\n id: patternPrefix + grad.id,\n viewBox: '0,0,1,1',\n width: '100%',\n height: '100%',\n preserveAspectRatio: 'xMidYMid slice'\n });\n pt = domChild(pt, 0, 'rect', svgns);\n setAttributes(pt, {\n width: 1,\n height: 1,\n fill: \"url(\".concat(href(), \"#\").concat(grad.id, \")\")\n });\n el = domChild(el, index++, 'radialGradient', svgns);\n setAttributes(el, {\n id: grad.id,\n fx: grad.x1,\n fy: grad.y1,\n fr: grad.r1,\n cx: grad.x2,\n cy: grad.y2,\n r: grad.r2\n });\n } else {\n el = domChild(el, index++, 'linearGradient', svgns);\n setAttributes(el, {\n id: grad.id,\n x1: grad.x1,\n x2: grad.x2,\n y1: grad.y1,\n y2: grad.y2\n });\n }\n for (i = 0, n = grad.stops.length; i < n; ++i) {\n stop = domChild(el, i, 'stop', svgns);\n stop.setAttribute('offset', grad.stops[i].offset);\n stop.setAttribute('stop-color', grad.stops[i].color);\n }\n domClear(el, i);\n return index;\n}\n\n// update clipping path definitions\nfunction updateClipping(el, clip, index) {\n var mask;\n el = domChild(el, index, 'clipPath', svgns);\n el.setAttribute('id', clip.id);\n if (clip.path) {\n mask = domChild(el, 0, 'path', svgns);\n mask.setAttribute('d', clip.path);\n } else {\n mask = domChild(el, 0, 'rect', svgns);\n setAttributes(mask, {\n x: 0,\n y: 0,\n width: clip.width,\n height: clip.height\n });\n }\n domClear(el, 1);\n return index + 1;\n}\n\n// Recursively process group contents.\nfunction recurse(renderer, el, group) {\n // child 'g' element is second to last among children (path, g, path)\n // other children here are foreground and background path elements\n el = el.lastChild.previousSibling;\n var prev,\n idx = 0;\n visit(group, function (item) {\n prev = renderer.mark(el, item, prev);\n ++idx;\n });\n\n // remove any extraneous DOM elements\n domClear(el, 1 + idx);\n}\n\n// Bind a scenegraph item to an SVG DOM element.\n// Create new SVG elements as needed.\nfunction bind(item, el, sibling, tag, svg) {\n var node = item._svg,\n doc;\n\n // create a new dom node if needed\n if (!node) {\n doc = el.ownerDocument;\n node = domCreate(doc, tag, svgns);\n item._svg = node;\n if (item.mark) {\n node.__data__ = item;\n node.__values__ = {\n fill: 'default'\n };\n\n // if group, create background, content, and foreground elements\n if (tag === 'g') {\n var bg = domCreate(doc, 'path', svgns);\n node.appendChild(bg);\n bg.__data__ = item;\n var cg = domCreate(doc, 'g', svgns);\n node.appendChild(cg);\n cg.__data__ = item;\n var fg = domCreate(doc, 'path', svgns);\n node.appendChild(fg);\n fg.__data__ = item;\n fg.__values__ = {\n fill: 'default'\n };\n }\n }\n }\n\n // (re-)insert if (a) not contained in SVG or (b) sibling order has changed\n if (node.ownerSVGElement !== svg || siblingCheck(node, sibling)) {\n el.insertBefore(node, sibling ? sibling.nextSibling : el.firstChild);\n }\n return node;\n}\n\n// check if two nodes are ordered siblings\nfunction siblingCheck(node, sibling) {\n return node.parentNode && node.parentNode.childNodes.length > 1 && node.previousSibling != sibling; // treat null/undefined the same\n}\n\n// -- Set attributes & styles on SVG elements ---\n\nvar element = null,\n // temp var for current SVG element\n values = null; // temp var for current values hash\n\n// Extra configuration for certain mark types\nvar mark_extras = {\n group: function group(mdef, el, item) {\n var fg = element = el.childNodes[2];\n values = fg.__values__;\n mdef.foreground(emit, item, this);\n values = el.__values__; // use parent's values hash\n element = el.childNodes[1];\n mdef.content(emit, item, this);\n var bg = element = el.childNodes[0];\n mdef.background(emit, item, this);\n var value = item.mark.interactive === false ? 'none' : null;\n if (value !== values.events) {\n setAttribute(fg, 'pointer-events', value);\n setAttribute(bg, 'pointer-events', value);\n values.events = value;\n }\n if (item.strokeForeground && item.stroke) {\n var _fill = item.fill;\n setAttribute(fg, 'display', null);\n\n // set style of background\n this.style(bg, item);\n setAttribute(bg, 'stroke', null);\n\n // set style of foreground\n if (_fill) item.fill = null;\n values = fg.__values__;\n this.style(fg, item);\n if (_fill) item.fill = _fill;\n\n // leave element null to prevent downstream styling\n element = null;\n } else {\n // ensure foreground is ignored\n setAttribute(fg, 'display', 'none');\n }\n },\n image: function image(mdef, el, item) {\n if (item.smooth === false) {\n setStyle(el, 'image-rendering', 'optimizeSpeed');\n setStyle(el, 'image-rendering', 'pixelated');\n } else {\n setStyle(el, 'image-rendering', null);\n }\n },\n text: function text(mdef, el, item) {\n var tl = textLines(item);\n var key, value, doc, lh;\n if (isArray(tl)) {\n // multi-line text\n value = tl.map(function (_) {\n return textValue(item, _);\n });\n key = value.join('\\n'); // content cache key\n\n if (key !== values.text) {\n domClear(el, 0);\n doc = el.ownerDocument;\n lh = lineHeight(item);\n value.forEach(function (t, i) {\n var ts = domCreate(doc, 'tspan', svgns);\n ts.__data__ = item; // data binding\n ts.textContent = t;\n if (i) {\n ts.setAttribute('x', 0);\n ts.setAttribute('dy', lh);\n }\n el.appendChild(ts);\n });\n values.text = key;\n }\n } else {\n // single-line text\n value = textValue(item, tl);\n if (value !== values.text) {\n el.textContent = value;\n values.text = value;\n }\n }\n setAttribute(el, 'font-family', fontFamily(item));\n setAttribute(el, 'font-size', fontSize(item) + 'px');\n setAttribute(el, 'font-style', item.fontStyle);\n setAttribute(el, 'font-variant', item.fontVariant);\n setAttribute(el, 'font-weight', item.fontWeight);\n }\n};\nfunction emit(name, value, ns) {\n // early exit if value is unchanged\n if (value === values[name]) return;\n\n // use appropriate method given namespace (ns)\n if (ns) {\n setAttributeNS(element, name, value, ns);\n } else {\n setAttribute(element, name, value);\n }\n\n // note current value for future comparison\n values[name] = value;\n}\nfunction setStyle(el, name, value) {\n if (value !== values[name]) {\n if (value == null) {\n el.style.removeProperty(name);\n } else {\n el.style.setProperty(name, value + '');\n }\n values[name] = value;\n }\n}\nfunction setAttributes(el, attrs) {\n for (var key in attrs) {\n setAttribute(el, key, attrs[key]);\n }\n}\nfunction setAttribute(el, name, value) {\n if (value != null) {\n // if value is provided, update DOM attribute\n el.setAttribute(name, value);\n } else {\n // else remove DOM attribute\n el.removeAttribute(name);\n }\n}\nfunction setAttributeNS(el, name, value, ns) {\n if (value != null) {\n // if value is provided, update DOM attribute\n el.setAttributeNS(ns, name, value);\n } else {\n // else remove DOM attribute\n el.removeAttributeNS(ns, name);\n }\n}\nfunction href() {\n var loc;\n return typeof window === 'undefined' ? '' : (loc = window.location).hash ? loc.href.slice(0, -loc.hash.length) : loc.href;\n}\nfunction SVGStringRenderer(loader) {\n Renderer.call(this, loader);\n this._text = null;\n this._defs = {\n gradient: {},\n clipping: {}\n };\n}\ninherits(SVGStringRenderer, Renderer, {\n /**\n * Returns the rendered SVG text string,\n * or null if rendering has not yet occurred.\n */\n svg: function svg() {\n return this._text;\n },\n /**\n * Internal rendering method.\n * @param {object} scene - The root mark of a scenegraph to render.\n */\n _render: function _render(scene) {\n var m = markup();\n\n // svg tag\n m.open('svg', extend({}, metadata, {\n class: 'marks',\n width: this._width * this._scale,\n height: this._height * this._scale,\n viewBox: \"0 0 \".concat(this._width, \" \").concat(this._height)\n }));\n\n // background, if defined\n var bg = this._bgcolor;\n if (bg && bg !== 'transparent' && bg !== 'none') {\n m.open('rect', {\n width: this._width,\n height: this._height,\n fill: bg\n }).close();\n }\n\n // root content group\n m.open('g', rootAttributes, {\n transform: 'translate(' + this._origin + ')'\n });\n this.mark(m, scene);\n m.close(); // \n\n // defs\n this.defs(m);\n\n // get SVG text string\n this._text = m.close() + '';\n return this;\n },\n /**\n * Render a set of mark items.\n * @param {object} m - The markup context.\n * @param {object} scene - The mark parent to render.\n */\n mark: function mark(m, scene) {\n var _this6 = this;\n var mdef = Marks[scene.marktype],\n tag = mdef.tag,\n attrList = [ariaItemAttributes, mdef.attr];\n\n // render opening group tag\n m.open('g', {\n 'class': cssClass(scene),\n 'clip-path': scene.clip ? clip$1(this, scene, scene.group) : null\n }, ariaMarkAttributes(scene), {\n 'pointer-events': tag !== 'g' && scene.interactive === false ? 'none' : null\n });\n\n // render contained elements\n var process = function process(item) {\n var href = _this6.href(item);\n if (href) m.open('a', href);\n m.open(tag, _this6.attr(scene, item, attrList, tag !== 'g' ? tag : null));\n if (tag === 'text') {\n var _tl = textLines(item);\n if (isArray(_tl)) {\n // multi-line text\n var attrs = {\n x: 0,\n dy: lineHeight(item)\n };\n for (var i = 0; i < _tl.length; ++i) {\n m.open('tspan', i ? attrs : null).text(textValue(item, _tl[i])).close();\n }\n } else {\n // single-line text\n m.text(textValue(item, _tl));\n }\n } else if (tag === 'g') {\n var fore = item.strokeForeground,\n _fill2 = item.fill,\n _stroke = item.stroke;\n if (fore && _stroke) {\n item.stroke = null;\n }\n m.open('path', _this6.attr(scene, item, mdef.background, 'bgrect')).close();\n\n // recurse for group content\n m.open('g', _this6.attr(scene, item, mdef.content));\n visit(item, function (scene) {\n return _this6.mark(m, scene);\n });\n m.close();\n if (fore && _stroke) {\n if (_fill2) item.fill = null;\n item.stroke = _stroke;\n m.open('path', _this6.attr(scene, item, mdef.foreground, 'bgrect')).close();\n if (_fill2) item.fill = _fill2;\n } else {\n m.open('path', _this6.attr(scene, item, mdef.foreground, 'bgfore')).close();\n }\n }\n m.close(); // \n if (href) m.close(); // \n };\n\n if (mdef.nested) {\n if (scene.items && scene.items.length) process(scene.items[0]);\n } else {\n visit(scene, process);\n }\n\n // render closing group tag\n return m.close(); // \n },\n /**\n * Get href attributes for a hyperlinked mark item.\n * @param {Item} item - The mark item.\n */\n href: function href(item) {\n var _this7 = this;\n var href = item.href;\n var attr;\n if (href) {\n if (attr = this._hrefs && this._hrefs[href]) {\n return attr;\n } else {\n this.sanitizeURL(href).then(function (attr) {\n // rewrite to use xlink namespace\n attr['xlink:href'] = attr.href;\n attr.href = null;\n (_this7._hrefs || (_this7._hrefs = {}))[href] = attr;\n });\n }\n }\n return null;\n },\n /**\n * Get an object of SVG attributes for a mark item.\n * @param {object} scene - The mark parent.\n * @param {Item} item - The mark item.\n * @param {array|function} attrs - One or more attribute emitters.\n * @param {string} tag - The tag being rendered.\n */\n attr: function attr(scene, item, attrs, tag) {\n var _this8 = this;\n var object = {},\n emit = function emit(name, value, ns, prefixed) {\n object[prefixed || name] = value;\n };\n\n // apply mark specific attributes\n if (Array.isArray(attrs)) {\n attrs.forEach(function (fn) {\n return fn(emit, item, _this8);\n });\n } else {\n attrs(emit, item, this);\n }\n\n // apply style attributes\n if (tag) {\n style(object, item, scene, tag, this._defs);\n }\n return object;\n },\n /**\n * Render SVG defs, as needed.\n * Must be called *after* marks have been processed to ensure the\n * collected state is current and accurate.\n * @param {object} m - The markup context.\n */\n defs: function defs(m) {\n var gradient = this._defs.gradient,\n clipping = this._defs.clipping,\n count = Object.keys(gradient).length + Object.keys(clipping).length;\n if (count === 0) return; // nothing to do\n\n m.open('defs');\n for (var id in gradient) {\n var _def = gradient[id],\n stops = _def.stops;\n if (_def.gradient === 'radial') {\n // SVG radial gradients automatically transform to normalized bbox\n // coordinates, in a way that is cumbersome to replicate in canvas.\n // We wrap the radial gradient in a pattern element, allowing us to\n // maintain a circular gradient that matches what canvas provides.\n\n m.open('pattern', {\n id: patternPrefix + id,\n viewBox: '0,0,1,1',\n width: '100%',\n height: '100%',\n preserveAspectRatio: 'xMidYMid slice'\n });\n m.open('rect', {\n width: '1',\n height: '1',\n fill: 'url(#' + id + ')'\n }).close();\n m.close(); // \n\n m.open('radialGradient', {\n id: id,\n fx: _def.x1,\n fy: _def.y1,\n fr: _def.r1,\n cx: _def.x2,\n cy: _def.y2,\n r: _def.r2\n });\n } else {\n m.open('linearGradient', {\n id: id,\n x1: _def.x1,\n x2: _def.x2,\n y1: _def.y1,\n y2: _def.y2\n });\n }\n for (var i = 0; i < stops.length; ++i) {\n m.open('stop', {\n offset: stops[i].offset,\n 'stop-color': stops[i].color\n }).close();\n }\n m.close();\n }\n for (var _id2 in clipping) {\n var _def2 = clipping[_id2];\n m.open('clipPath', {\n id: _id2\n });\n if (_def2.path) {\n m.open('path', {\n d: _def2.path\n }).close();\n } else {\n m.open('rect', {\n x: 0,\n y: 0,\n width: _def2.width,\n height: _def2.height\n }).close();\n }\n m.close();\n }\n m.close();\n }\n});\n\n// Helper function for attr for style presentation attributes\nfunction style(s, item, scene, tag, defs) {\n var styleList;\n if (item == null) return s;\n if (tag === 'bgrect' && scene.interactive === false) {\n s['pointer-events'] = 'none';\n }\n if (tag === 'bgfore') {\n if (scene.interactive === false) {\n s['pointer-events'] = 'none';\n }\n s.display = 'none';\n if (item.fill !== null) return s;\n }\n if (tag === 'image' && item.smooth === false) {\n styleList = ['image-rendering: optimizeSpeed;', 'image-rendering: pixelated;'];\n }\n if (tag === 'text') {\n s['font-family'] = fontFamily(item);\n s['font-size'] = fontSize(item) + 'px';\n s['font-style'] = item.fontStyle;\n s['font-variant'] = item.fontVariant;\n s['font-weight'] = item.fontWeight;\n }\n for (var prop in stylesAttr) {\n var _value3 = item[prop];\n var name = stylesAttr[prop];\n if (_value3 === 'transparent' && (name === 'fill' || name === 'stroke')) ;else if (_value3 != null) {\n if (isGradient(_value3)) {\n _value3 = gradientRef(_value3, defs.gradient, '');\n }\n s[name] = _value3;\n }\n }\n for (var _prop2 in stylesCss) {\n var _value4 = item[_prop2];\n if (_value4 != null) {\n styleList = styleList || [];\n styleList.push(\"\".concat(stylesCss[_prop2], \": \").concat(_value4, \";\"));\n }\n }\n if (styleList) {\n s.style = styleList.join(' ');\n }\n return s;\n}\nvar Canvas = 'canvas';\nvar PNG = 'png';\nvar SVG = 'svg';\nvar None = 'none';\nvar RenderType = {\n Canvas: Canvas,\n PNG: PNG,\n SVG: SVG,\n None: None\n};\nvar modules = {};\nmodules[Canvas] = modules[PNG] = {\n renderer: CanvasRenderer,\n headless: CanvasRenderer,\n handler: CanvasHandler\n};\nmodules[SVG] = {\n renderer: SVGRenderer,\n headless: SVGStringRenderer,\n handler: SVGHandler\n};\nmodules[None] = {};\nfunction renderModule(name, _) {\n name = String(name || '').toLowerCase();\n if (arguments.length > 1) {\n modules[name] = _;\n return this;\n } else {\n return modules[name];\n }\n}\nfunction intersect(scene, bounds, filter) {\n var hits = [],\n // intersection results\n box = new Bounds().union(bounds),\n // defensive copy\n type = scene.marktype;\n return type ? intersectMark(scene, box, filter, hits) : type === 'group' ? intersectGroup(scene, box, filter, hits) : error('Intersect scene must be mark node or group item.');\n}\nfunction intersectMark(mark, box, filter, hits) {\n if (visitMark(mark, box, filter)) {\n var items = mark.items,\n _type2 = mark.marktype,\n n = items.length;\n var i = 0;\n if (_type2 === 'group') {\n for (; i < n; ++i) {\n intersectGroup(items[i], box, filter, hits);\n }\n } else {\n for (var test = Marks[_type2].isect; i < n; ++i) {\n var item = items[i];\n if (intersectItem(item, box, test)) hits.push(item);\n }\n }\n }\n return hits;\n}\nfunction visitMark(mark, box, filter) {\n // process if bounds intersect and if\n // (1) mark is a group mark (so we must recurse), or\n // (2) mark is interactive and passes filter\n return mark.bounds && box.intersects(mark.bounds) && (mark.marktype === 'group' || mark.interactive !== false && (!filter || filter(mark)));\n}\nfunction intersectGroup(group, box, filter, hits) {\n // test intersect against group\n // skip groups by default unless filter says otherwise\n if (filter && filter(group.mark) && intersectItem(group, box, Marks.group.isect)) {\n hits.push(group);\n }\n\n // recursively test children marks\n // translate box to group coordinate space\n var marks = group.items,\n n = marks && marks.length;\n if (n) {\n var _x3 = group.x || 0,\n _y2 = group.y || 0;\n box.translate(-_x3, -_y2);\n for (var i = 0; i < n; ++i) {\n intersectMark(marks[i], box, filter, hits);\n }\n box.translate(_x3, _y2);\n }\n return hits;\n}\nfunction intersectItem(item, box, test) {\n // test bounds enclosure, bounds intersection, then detailed test\n var bounds = item.bounds;\n return box.encloses(bounds) || box.intersects(bounds) && test(item, box);\n}\nvar clipBounds = new Bounds();\nfunction boundClip(mark) {\n var clip = mark.clip;\n if (isFunction(clip)) {\n clip(boundContext(clipBounds.clear()));\n } else if (clip) {\n clipBounds.set(0, 0, mark.group.width, mark.group.height);\n } else return;\n mark.bounds.intersect(clipBounds);\n}\nvar TOLERANCE = 1e-9;\nfunction sceneEqual(a, b, key) {\n return a === b ? true : key === 'path' ? pathEqual(a, b) : a instanceof Date && b instanceof Date ? +a === +b : isNumber(a) && isNumber(b) ? Math.abs(a - b) <= TOLERANCE : !a || !b || !isObject(a) && !isObject(b) ? a == b : objectEqual(a, b);\n}\nfunction pathEqual(a, b) {\n return sceneEqual(parse(a), parse(b));\n}\nfunction objectEqual(a, b) {\n var ka = Object.keys(a),\n kb = Object.keys(b),\n key,\n i;\n if (ka.length !== kb.length) return false;\n ka.sort();\n kb.sort();\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i]) return false;\n }\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!sceneEqual(a[key], b[key], key)) return false;\n }\n return typeof a === typeof b;\n}\nfunction resetSVGDefIds() {\n resetSVGClipId();\n resetSVGGradientId();\n}\nexport { Bounds, CanvasHandler, CanvasRenderer, Gradient, GroupItem, Handler, Item, Marks, RenderType, Renderer, ResourceLoader, SVGHandler, SVGRenderer, SVGStringRenderer, Scenegraph, boundClip, boundContext, boundItem, boundMark, boundStroke, domChild, domClear, domCreate, domFind, font, fontFamily, fontSize, intersect, intersectBoxLine, intersectPath, intersectPoint, intersectRule, lineHeight, markup, multiLineOffset, curves as pathCurves, pathEqual, parse as pathParse, vg_rect as pathRectangle, pathRender, symbols as pathSymbols, vg_trail as pathTrail, point, renderModule, resetSVGClipId, resetSVGDefIds, sceneEqual, sceneFromJSON, pickVisit as scenePickVisit, sceneToJSON, visit as sceneVisit, zorder as sceneZOrder, serializeXML, textMetrics };","import constant from \"./constant.js\";\nimport { withPath } from \"./path.js\";\nimport asterisk from \"./symbol/asterisk.js\";\nimport circle from \"./symbol/circle.js\";\nimport cross from \"./symbol/cross.js\";\nimport diamond from \"./symbol/diamond.js\";\nimport diamond2 from \"./symbol/diamond2.js\";\nimport plus from \"./symbol/plus.js\";\nimport square from \"./symbol/square.js\";\nimport square2 from \"./symbol/square2.js\";\nimport star from \"./symbol/star.js\";\nimport triangle from \"./symbol/triangle.js\";\nimport triangle2 from \"./symbol/triangle2.js\";\nimport wye from \"./symbol/wye.js\";\nimport times from \"./symbol/times.js\";\n\n// These symbols are designed to be filled.\nexport var symbolsFill = [circle, cross, diamond, square, star, triangle, wye];\n\n// These symbols are designed to be stroked (with a width of 1.5px and round caps).\nexport var symbolsStroke = [circle, plus, times, triangle2, asterisk, square2, diamond2];\nexport default function Symbol(type, size) {\n var context = null,\n path = withPath(symbol);\n type = typeof type === \"function\" ? type : constant(type || circle);\n size = typeof size === \"function\" ? size : constant(size === undefined ? 64 : +size);\n function symbol() {\n var buffer;\n if (!context) context = buffer = path();\n type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n symbol.type = function (_) {\n return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n };\n symbol.size = function (_) {\n return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n };\n symbol.context = function (_) {\n return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n };\n return symbol;\n}","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport { Transform } from 'vega-dataflow';\nimport { Marks, boundClip, GroupItem, Item, Bounds, multiLineOffset, boundStroke } from 'vega-scenegraph';\nimport { inherits, peek, isObject } from 'vega-util';\nvar Top = 'top';\nvar Left = 'left';\nvar Right = 'right';\nvar Bottom = 'bottom';\nvar TopLeft = 'top-left';\nvar TopRight = 'top-right';\nvar BottomLeft = 'bottom-left';\nvar BottomRight = 'bottom-right';\nvar Start = 'start';\nvar Middle = 'middle';\nvar End = 'end';\nvar X = 'x';\nvar Y = 'y';\nvar Group = 'group';\nvar AxisRole = 'axis';\nvar TitleRole = 'title';\nvar FrameRole = 'frame';\nvar ScopeRole = 'scope';\nvar LegendRole = 'legend';\nvar RowHeader = 'row-header';\nvar RowFooter = 'row-footer';\nvar RowTitle = 'row-title';\nvar ColHeader = 'column-header';\nvar ColFooter = 'column-footer';\nvar ColTitle = 'column-title';\nvar Padding = 'padding';\nvar Symbols = 'symbol';\nvar Fit = 'fit';\nvar FitX = 'fit-x';\nvar FitY = 'fit-y';\nvar Pad = 'pad';\nvar None = 'none';\nvar All = 'all';\nvar Each = 'each';\nvar Flush = 'flush';\nvar Column = 'column';\nvar Row = 'row';\n\n/**\n * Calculate bounding boxes for scenegraph items.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {object} params.mark - The scenegraph mark instance to bound.\n */\nfunction Bound(params) {\n Transform.call(this, null, params);\n}\ninherits(Bound, Transform, {\n transform: function transform(_, pulse) {\n var view = pulse.dataflow,\n mark = _.mark,\n type = mark.marktype,\n entry = Marks[type],\n bound = entry.bound;\n var markBounds = mark.bounds,\n rebound;\n if (entry.nested) {\n // multi-item marks have a single bounds instance\n if (mark.items.length) view.dirty(mark.items[0]);\n markBounds = boundItem(mark, bound);\n mark.items.forEach(function (item) {\n item.bounds.clear().union(markBounds);\n });\n } else if (type === Group || _.modified()) {\n // operator parameters modified -> re-bound all items\n // updates group bounds in response to modified group content\n pulse.visit(pulse.MOD, function (item) {\n return view.dirty(item);\n });\n markBounds.clear();\n mark.items.forEach(function (item) {\n return markBounds.union(boundItem(item, bound));\n });\n\n // force reflow for axes/legends/titles to propagate any layout changes\n switch (mark.role) {\n case AxisRole:\n case LegendRole:\n case TitleRole:\n pulse.reflow();\n }\n } else {\n // incrementally update bounds, re-bound mark as needed\n rebound = pulse.changed(pulse.REM);\n pulse.visit(pulse.ADD, function (item) {\n markBounds.union(boundItem(item, bound));\n });\n pulse.visit(pulse.MOD, function (item) {\n rebound = rebound || markBounds.alignsWith(item.bounds);\n view.dirty(item);\n markBounds.union(boundItem(item, bound));\n });\n if (rebound) {\n markBounds.clear();\n mark.items.forEach(function (item) {\n return markBounds.union(item.bounds);\n });\n }\n }\n\n // ensure mark bounds do not exceed any clipping region\n boundClip(mark);\n return pulse.modifies('bounds');\n }\n});\nfunction boundItem(item, bound, opt) {\n return bound(item.bounds.clear(), item, opt);\n}\nvar COUNTER_NAME = ':vega_identifier:';\n\n/**\n * Adds a unique identifier to all added tuples.\n * This transform creates a new signal that serves as an id counter.\n * As a result, the id counter is shared across all instances of this\n * transform, generating unique ids across multiple data streams. In\n * addition, this signal value can be included in a snapshot of the\n * dataflow state, enabling correct resumption of id allocation.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {string} params.as - The field name for the generated identifier.\n */\nfunction Identifier(params) {\n Transform.call(this, 0, params);\n}\nIdentifier.Definition = {\n 'type': 'Identifier',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'as',\n 'type': 'string',\n 'required': true\n }]\n};\ninherits(Identifier, Transform, {\n transform: function transform(_, pulse) {\n var counter = getCounter(pulse.dataflow),\n as = _.as;\n var id = counter.value;\n pulse.visit(pulse.ADD, function (t) {\n return t[as] = t[as] || ++id;\n });\n counter.set(this.value = id);\n return pulse;\n }\n});\nfunction getCounter(view) {\n return view._signals[COUNTER_NAME] || (view._signals[COUNTER_NAME] = view.add(0));\n}\n\n/**\n * Bind scenegraph items to a scenegraph mark instance.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {object} params.markdef - The mark definition for creating the mark.\n * This is an object of legal scenegraph mark properties which *must* include\n * the 'marktype' property.\n */\nfunction Mark(params) {\n Transform.call(this, null, params);\n}\ninherits(Mark, Transform, {\n transform: function transform(_, pulse) {\n var mark = this.value;\n\n // acquire mark on first invocation, bind context and group\n if (!mark) {\n mark = pulse.dataflow.scenegraph().mark(_.markdef, lookup$1(_), _.index);\n mark.group.context = _.context;\n if (!_.context.group) _.context.group = mark.group;\n mark.source = this.source; // point to upstream collector\n mark.clip = _.clip;\n mark.interactive = _.interactive;\n this.value = mark;\n }\n\n // initialize entering items\n var Init = mark.marktype === Group ? GroupItem : Item;\n pulse.visit(pulse.ADD, function (item) {\n return Init.call(item, mark);\n });\n\n // update clipping and/or interactive status\n if (_.modified('clip') || _.modified('interactive')) {\n mark.clip = _.clip;\n mark.interactive = !!_.interactive;\n mark.zdirty = true; // force scenegraph re-eval\n pulse.reflow();\n }\n\n // bind items array to scenegraph mark\n mark.items = pulse.source;\n return pulse;\n }\n});\nfunction lookup$1(_) {\n var g = _.groups,\n p = _.parent;\n return g && g.size === 1 ? g.get(Object.keys(g.object)[0]) : g && p ? g.lookup(p) : null;\n}\n\n/**\n * Analyze items for overlap, changing opacity to hide items with\n * overlapping bounding boxes. This transform will preserve at least\n * two items (e.g., first and last) even if overlap persists.\n * @param {object} params - The parameters for this operator.\n * @param {function(*,*): number} [params.sort] - A comparator\n * function for sorting items.\n * @param {object} [params.method] - The overlap removal method to apply.\n * One of 'parity' (default, hide every other item until there is no\n * more overlap) or 'greedy' (sequentially scan and hide and items that\n * overlap with the last visible item).\n * @param {object} [params.boundScale] - A scale whose range should be used\n * to bound the items. Items exceeding the bounds of the scale range\n * will be treated as overlapping. If null or undefined, no bounds check\n * will be applied.\n * @param {object} [params.boundOrient] - The orientation of the scale\n * (top, bottom, left, or right) used to bound items. This parameter is\n * ignored if boundScale is null or undefined.\n * @param {object} [params.boundTolerance] - The tolerance in pixels for\n * bound inclusion testing (default 1). This specifies by how many pixels\n * an item's bounds may exceed the scale range bounds and not be culled.\n * @constructor\n */\nfunction Overlap(params) {\n Transform.call(this, null, params);\n}\nvar methods = {\n parity: function parity(items) {\n return items.filter(function (item, i) {\n return i % 2 ? item.opacity = 0 : 1;\n });\n },\n greedy: function greedy(items, sep) {\n var a;\n return items.filter(function (b, i) {\n return !i || !intersect(a.bounds, b.bounds, sep) ? (a = b, 1) : b.opacity = 0;\n });\n }\n};\n\n// compute bounding box intersection\n// including padding pixels of separation\nvar intersect = function intersect(a, b, sep) {\n return sep > Math.max(b.x1 - a.x2, a.x1 - b.x2, b.y1 - a.y2, a.y1 - b.y2);\n};\nvar hasOverlap = function hasOverlap(items, pad) {\n for (var i = 1, n = items.length, a = items[0].bounds, b; i < n; a = b, ++i) {\n if (intersect(a, b = items[i].bounds, pad)) return true;\n }\n};\nvar hasBounds = function hasBounds(item) {\n var b = item.bounds;\n return b.width() > 1 && b.height() > 1;\n};\nvar boundTest = function boundTest(scale, orient, tolerance) {\n var range = scale.range(),\n b = new Bounds();\n if (orient === Top || orient === Bottom) {\n b.set(range[0], -Infinity, range[1], +Infinity);\n } else {\n b.set(-Infinity, range[0], +Infinity, range[1]);\n }\n b.expand(tolerance || 1);\n return function (item) {\n return b.encloses(item.bounds);\n };\n};\n\n// reset all items to be fully opaque\nvar reset = function reset(source) {\n source.forEach(function (item) {\n return item.opacity = 1;\n });\n return source;\n};\n\n// add all tuples to mod, fork pulse if parameters were modified\n// fork prevents cross-stream tuple pollution (e.g., pulse from scale)\nvar reflow = function reflow(pulse, _) {\n return pulse.reflow(_.modified()).modifies('opacity');\n};\ninherits(Overlap, Transform, {\n transform: function transform(_, pulse) {\n var reduce = methods[_.method] || methods.parity,\n sep = _.separation || 0;\n var source = pulse.materialize(pulse.SOURCE).source,\n items,\n test;\n if (!source || !source.length) return;\n if (!_.method) {\n // early exit if method is falsy\n if (_.modified('method')) {\n reset(source);\n pulse = reflow(pulse, _);\n }\n return pulse;\n }\n\n // skip labels with no content\n source = source.filter(hasBounds);\n\n // early exit, nothing to do\n if (!source.length) return;\n if (_.sort) {\n source = source.slice().sort(_.sort);\n }\n items = reset(source);\n pulse = reflow(pulse, _);\n if (items.length >= 3 && hasOverlap(items, sep)) {\n do {\n items = reduce(items, sep);\n } while (items.length >= 3 && hasOverlap(items, sep));\n if (items.length < 3 && !peek(source).opacity) {\n if (items.length > 1) peek(items).opacity = 0;\n peek(source).opacity = 1;\n }\n }\n if (_.boundScale && _.boundTolerance >= 0) {\n test = boundTest(_.boundScale, _.boundOrient, +_.boundTolerance);\n source.forEach(function (item) {\n if (!test(item)) item.opacity = 0;\n });\n }\n\n // re-calculate mark bounds\n var bounds = items[0].mark.bounds.clear();\n source.forEach(function (item) {\n if (item.opacity) bounds.union(item.bounds);\n });\n return pulse;\n }\n});\n\n/**\n * Queue modified scenegraph items for rendering.\n * @constructor\n */\nfunction Render(params) {\n Transform.call(this, null, params);\n}\ninherits(Render, Transform, {\n transform: function transform(_, pulse) {\n var view = pulse.dataflow;\n pulse.visit(pulse.ALL, function (item) {\n return view.dirty(item);\n });\n\n // set z-index dirty flag as needed\n if (pulse.fields && pulse.fields['zindex']) {\n var item = pulse.source && pulse.source[0];\n if (item) item.mark.zdirty = true;\n }\n }\n});\nvar tempBounds = new Bounds();\nfunction set(item, property, value) {\n return item[property] === value ? 0 : (item[property] = value, 1);\n}\nfunction isYAxis(mark) {\n var orient = mark.items[0].orient;\n return orient === Left || orient === Right;\n}\nfunction axisIndices(datum) {\n var index = +datum.grid;\n return [datum.ticks ? index++ : -1,\n // ticks index\n datum.labels ? index++ : -1,\n // labels index\n index + +datum.domain // title index\n ];\n}\n\nfunction axisLayout(view, axis, width, height) {\n var item = axis.items[0],\n datum = item.datum,\n delta = item.translate != null ? item.translate : 0.5,\n orient = item.orient,\n indices = axisIndices(datum),\n range = item.range,\n offset = item.offset,\n position = item.position,\n minExtent = item.minExtent,\n maxExtent = item.maxExtent,\n title = datum.title && item.items[indices[2]].items[0],\n titlePadding = item.titlePadding,\n bounds = item.bounds,\n dl = title && multiLineOffset(title),\n x = 0,\n y = 0,\n i,\n s;\n tempBounds.clear().union(bounds);\n bounds.clear();\n if ((i = indices[0]) > -1) bounds.union(item.items[i].bounds);\n if ((i = indices[1]) > -1) bounds.union(item.items[i].bounds);\n\n // position axis group and title\n switch (orient) {\n case Top:\n x = position || 0;\n y = -offset;\n s = Math.max(minExtent, Math.min(maxExtent, -bounds.y1));\n bounds.add(0, -s).add(range, 0);\n if (title) axisTitleLayout(view, title, s, titlePadding, dl, 0, -1, bounds);\n break;\n case Left:\n x = -offset;\n y = position || 0;\n s = Math.max(minExtent, Math.min(maxExtent, -bounds.x1));\n bounds.add(-s, 0).add(0, range);\n if (title) axisTitleLayout(view, title, s, titlePadding, dl, 1, -1, bounds);\n break;\n case Right:\n x = width + offset;\n y = position || 0;\n s = Math.max(minExtent, Math.min(maxExtent, bounds.x2));\n bounds.add(0, 0).add(s, range);\n if (title) axisTitleLayout(view, title, s, titlePadding, dl, 1, 1, bounds);\n break;\n case Bottom:\n x = position || 0;\n y = height + offset;\n s = Math.max(minExtent, Math.min(maxExtent, bounds.y2));\n bounds.add(0, 0).add(range, s);\n if (title) axisTitleLayout(view, title, s, titlePadding, 0, 0, 1, bounds);\n break;\n default:\n x = item.x;\n y = item.y;\n }\n\n // update bounds\n boundStroke(bounds.translate(x, y), item);\n if (set(item, 'x', x + delta) | set(item, 'y', y + delta)) {\n item.bounds = tempBounds;\n view.dirty(item);\n item.bounds = bounds;\n view.dirty(item);\n }\n return item.mark.bounds.clear().union(bounds);\n}\nfunction axisTitleLayout(view, title, offset, pad, dl, isYAxis, sign, bounds) {\n var b = title.bounds;\n if (title.auto) {\n var v = sign * (offset + dl + pad);\n var dx = 0,\n dy = 0;\n view.dirty(title);\n isYAxis ? dx = (title.x || 0) - (title.x = v) : dy = (title.y || 0) - (title.y = v);\n title.mark.bounds.clear().union(b.translate(-dx, -dy));\n view.dirty(title);\n }\n bounds.union(b);\n}\n\n// aggregation functions for grid margin determination\nvar min = function min(a, b) {\n return Math.floor(Math.min(a, b));\n};\nvar max = function max(a, b) {\n return Math.ceil(Math.max(a, b));\n};\nfunction gridLayoutGroups(group) {\n var _views$rowheaders, _views$rowfooters, _views$colheaders, _views$colfooters, _views$marks;\n var groups = group.items,\n n = groups.length,\n i = 0,\n mark,\n items;\n var views = {\n marks: [],\n rowheaders: [],\n rowfooters: [],\n colheaders: [],\n colfooters: [],\n rowtitle: null,\n coltitle: null\n };\n\n // layout axes, gather legends, collect bounds\n for (; i < n; ++i) {\n mark = groups[i];\n items = mark.items;\n if (mark.marktype === Group) {\n switch (mark.role) {\n case AxisRole:\n case LegendRole:\n case TitleRole:\n break;\n case RowHeader:\n (_views$rowheaders = views.rowheaders).push.apply(_views$rowheaders, _toConsumableArray(items));\n break;\n case RowFooter:\n (_views$rowfooters = views.rowfooters).push.apply(_views$rowfooters, _toConsumableArray(items));\n break;\n case ColHeader:\n (_views$colheaders = views.colheaders).push.apply(_views$colheaders, _toConsumableArray(items));\n break;\n case ColFooter:\n (_views$colfooters = views.colfooters).push.apply(_views$colfooters, _toConsumableArray(items));\n break;\n case RowTitle:\n views.rowtitle = items[0];\n break;\n case ColTitle:\n views.coltitle = items[0];\n break;\n default:\n (_views$marks = views.marks).push.apply(_views$marks, _toConsumableArray(items));\n }\n }\n }\n return views;\n}\nfunction bboxFlush(item) {\n return new Bounds().set(0, 0, item.width || 0, item.height || 0);\n}\nfunction bboxFull(item) {\n var b = item.bounds.clone();\n return b.empty() ? b.set(0, 0, 0, 0) : b.translate(-(item.x || 0), -(item.y || 0));\n}\nfunction get(opt, key, d) {\n var v = isObject(opt) ? opt[key] : opt;\n return v != null ? v : d !== undefined ? d : 0;\n}\nfunction offsetValue(v) {\n return v < 0 ? Math.ceil(-v) : 0;\n}\nfunction gridLayout(view, groups, opt) {\n var dirty = !opt.nodirty,\n bbox = opt.bounds === Flush ? bboxFlush : bboxFull,\n bounds = tempBounds.set(0, 0, 0, 0),\n alignCol = get(opt.align, Column),\n alignRow = get(opt.align, Row),\n padCol = get(opt.padding, Column),\n padRow = get(opt.padding, Row),\n ncols = opt.columns || groups.length,\n nrows = ncols <= 0 ? 1 : Math.ceil(groups.length / ncols),\n n = groups.length,\n xOffset = Array(n),\n xExtent = Array(ncols),\n xMax = 0,\n yOffset = Array(n),\n yExtent = Array(nrows),\n yMax = 0,\n dx = Array(n),\n dy = Array(n),\n boxes = Array(n),\n m,\n i,\n c,\n r,\n b,\n g,\n px,\n py,\n x,\n y,\n offset;\n for (i = 0; i < ncols; ++i) xExtent[i] = 0;\n for (i = 0; i < nrows; ++i) yExtent[i] = 0;\n\n // determine offsets for each group\n for (i = 0; i < n; ++i) {\n g = groups[i];\n b = boxes[i] = bbox(g);\n g.x = g.x || 0;\n dx[i] = 0;\n g.y = g.y || 0;\n dy[i] = 0;\n c = i % ncols;\n r = ~~(i / ncols);\n xMax = Math.max(xMax, px = Math.ceil(b.x2));\n yMax = Math.max(yMax, py = Math.ceil(b.y2));\n xExtent[c] = Math.max(xExtent[c], px);\n yExtent[r] = Math.max(yExtent[r], py);\n xOffset[i] = padCol + offsetValue(b.x1);\n yOffset[i] = padRow + offsetValue(b.y1);\n if (dirty) view.dirty(groups[i]);\n }\n\n // set initial alignment offsets\n for (i = 0; i < n; ++i) {\n if (i % ncols === 0) xOffset[i] = 0;\n if (i < ncols) yOffset[i] = 0;\n }\n\n // enforce column alignment constraints\n if (alignCol === Each) {\n for (c = 1; c < ncols; ++c) {\n for (offset = 0, i = c; i < n; i += ncols) {\n if (offset < xOffset[i]) offset = xOffset[i];\n }\n for (i = c; i < n; i += ncols) {\n xOffset[i] = offset + xExtent[c - 1];\n }\n }\n } else if (alignCol === All) {\n for (offset = 0, i = 0; i < n; ++i) {\n if (i % ncols && offset < xOffset[i]) offset = xOffset[i];\n }\n for (i = 0; i < n; ++i) {\n if (i % ncols) xOffset[i] = offset + xMax;\n }\n } else {\n for (alignCol = false, c = 1; c < ncols; ++c) {\n for (i = c; i < n; i += ncols) {\n xOffset[i] += xExtent[c - 1];\n }\n }\n }\n\n // enforce row alignment constraints\n if (alignRow === Each) {\n for (r = 1; r < nrows; ++r) {\n for (offset = 0, i = r * ncols, m = i + ncols; i < m; ++i) {\n if (offset < yOffset[i]) offset = yOffset[i];\n }\n for (i = r * ncols; i < m; ++i) {\n yOffset[i] = offset + yExtent[r - 1];\n }\n }\n } else if (alignRow === All) {\n for (offset = 0, i = ncols; i < n; ++i) {\n if (offset < yOffset[i]) offset = yOffset[i];\n }\n for (i = ncols; i < n; ++i) {\n yOffset[i] = offset + yMax;\n }\n } else {\n for (alignRow = false, r = 1; r < nrows; ++r) {\n for (i = r * ncols, m = i + ncols; i < m; ++i) {\n yOffset[i] += yExtent[r - 1];\n }\n }\n }\n\n // perform horizontal grid layout\n for (x = 0, i = 0; i < n; ++i) {\n x = xOffset[i] + (i % ncols ? x : 0);\n dx[i] += x - groups[i].x;\n }\n\n // perform vertical grid layout\n for (c = 0; c < ncols; ++c) {\n for (y = 0, i = c; i < n; i += ncols) {\n y += yOffset[i];\n dy[i] += y - groups[i].y;\n }\n }\n\n // perform horizontal centering\n if (alignCol && get(opt.center, Column) && nrows > 1) {\n for (i = 0; i < n; ++i) {\n b = alignCol === All ? xMax : xExtent[i % ncols];\n x = b - boxes[i].x2 - groups[i].x - dx[i];\n if (x > 0) dx[i] += x / 2;\n }\n }\n\n // perform vertical centering\n if (alignRow && get(opt.center, Row) && ncols !== 1) {\n for (i = 0; i < n; ++i) {\n b = alignRow === All ? yMax : yExtent[~~(i / ncols)];\n y = b - boxes[i].y2 - groups[i].y - dy[i];\n if (y > 0) dy[i] += y / 2;\n }\n }\n\n // position grid relative to anchor\n for (i = 0; i < n; ++i) {\n bounds.union(boxes[i].translate(dx[i], dy[i]));\n }\n x = get(opt.anchor, X);\n y = get(opt.anchor, Y);\n switch (get(opt.anchor, Column)) {\n case End:\n x -= bounds.width();\n break;\n case Middle:\n x -= bounds.width() / 2;\n }\n switch (get(opt.anchor, Row)) {\n case End:\n y -= bounds.height();\n break;\n case Middle:\n y -= bounds.height() / 2;\n }\n x = Math.round(x);\n y = Math.round(y);\n\n // update mark positions, bounds, dirty\n bounds.clear();\n for (i = 0; i < n; ++i) {\n groups[i].mark.bounds.clear();\n }\n for (i = 0; i < n; ++i) {\n g = groups[i];\n g.x += dx[i] += x;\n g.y += dy[i] += y;\n bounds.union(g.mark.bounds.union(g.bounds.translate(dx[i], dy[i])));\n if (dirty) view.dirty(g);\n }\n return bounds;\n}\nfunction trellisLayout(view, group, opt) {\n var views = gridLayoutGroups(group),\n groups = views.marks,\n bbox = opt.bounds === Flush ? boundFlush : boundFull,\n off = opt.offset,\n ncols = opt.columns || groups.length,\n nrows = ncols <= 0 ? 1 : Math.ceil(groups.length / ncols),\n cells = nrows * ncols,\n x,\n y,\n x2,\n y2,\n anchor,\n band,\n offset;\n\n // -- initial grid layout\n var bounds = gridLayout(view, groups, opt);\n if (bounds.empty()) bounds.set(0, 0, 0, 0); // empty grid\n\n // -- layout grid headers and footers --\n\n // perform row header layout\n if (views.rowheaders) {\n band = get(opt.headerBand, Row, null);\n x = layoutHeaders(view, views.rowheaders, groups, ncols, nrows, -get(off, 'rowHeader'), min, 0, bbox, 'x1', 0, ncols, 1, band);\n }\n\n // perform column header layout\n if (views.colheaders) {\n band = get(opt.headerBand, Column, null);\n y = layoutHeaders(view, views.colheaders, groups, ncols, ncols, -get(off, 'columnHeader'), min, 1, bbox, 'y1', 0, 1, ncols, band);\n }\n\n // perform row footer layout\n if (views.rowfooters) {\n band = get(opt.footerBand, Row, null);\n x2 = layoutHeaders(view, views.rowfooters, groups, ncols, nrows, get(off, 'rowFooter'), max, 0, bbox, 'x2', ncols - 1, ncols, 1, band);\n }\n\n // perform column footer layout\n if (views.colfooters) {\n band = get(opt.footerBand, Column, null);\n y2 = layoutHeaders(view, views.colfooters, groups, ncols, ncols, get(off, 'columnFooter'), max, 1, bbox, 'y2', cells - ncols, 1, ncols, band);\n }\n\n // perform row title layout\n if (views.rowtitle) {\n anchor = get(opt.titleAnchor, Row);\n offset = get(off, 'rowTitle');\n offset = anchor === End ? x2 + offset : x - offset;\n band = get(opt.titleBand, Row, 0.5);\n layoutTitle(view, views.rowtitle, offset, 0, bounds, band);\n }\n\n // perform column title layout\n if (views.coltitle) {\n anchor = get(opt.titleAnchor, Column);\n offset = get(off, 'columnTitle');\n offset = anchor === End ? y2 + offset : y - offset;\n band = get(opt.titleBand, Column, 0.5);\n layoutTitle(view, views.coltitle, offset, 1, bounds, band);\n }\n}\nfunction boundFlush(item, field) {\n return field === 'x1' ? item.x || 0 : field === 'y1' ? item.y || 0 : field === 'x2' ? (item.x || 0) + (item.width || 0) : field === 'y2' ? (item.y || 0) + (item.height || 0) : undefined;\n}\nfunction boundFull(item, field) {\n return item.bounds[field];\n}\nfunction layoutHeaders(view, headers, groups, ncols, limit, offset, agg, isX, bound, bf, start, stride, back, band) {\n var n = groups.length,\n init = 0,\n edge = 0,\n i,\n j,\n k,\n m,\n b,\n h,\n g,\n x,\n y;\n\n // if no groups, early exit and return 0\n if (!n) return init;\n\n // compute margin\n for (i = start; i < n; i += stride) {\n if (groups[i]) init = agg(init, bound(groups[i], bf));\n }\n\n // if no headers, return margin calculation\n if (!headers.length) return init;\n\n // check if number of headers exceeds number of rows or columns\n if (headers.length > limit) {\n view.warn('Grid headers exceed limit: ' + limit);\n headers = headers.slice(0, limit);\n }\n\n // apply offset\n init += offset;\n\n // clear mark bounds for all headers\n for (j = 0, m = headers.length; j < m; ++j) {\n view.dirty(headers[j]);\n headers[j].mark.bounds.clear();\n }\n\n // layout each header\n for (i = start, j = 0, m = headers.length; j < m; ++j, i += stride) {\n h = headers[j];\n b = h.mark.bounds;\n\n // search for nearest group to align to\n // necessary if table has empty cells\n for (k = i; k >= 0 && (g = groups[k]) == null; k -= back);\n\n // assign coordinates and update bounds\n if (isX) {\n x = band == null ? g.x : Math.round(g.bounds.x1 + band * g.bounds.width());\n y = init;\n } else {\n x = init;\n y = band == null ? g.y : Math.round(g.bounds.y1 + band * g.bounds.height());\n }\n b.union(h.bounds.translate(x - (h.x || 0), y - (h.y || 0)));\n h.x = x;\n h.y = y;\n view.dirty(h);\n\n // update current edge of layout bounds\n edge = agg(edge, b[bf]);\n }\n return edge;\n}\nfunction layoutTitle(view, g, offset, isX, bounds, band) {\n if (!g) return;\n view.dirty(g);\n\n // compute title coordinates\n var x = offset,\n y = offset;\n isX ? x = Math.round(bounds.x1 + band * bounds.width()) : y = Math.round(bounds.y1 + band * bounds.height());\n\n // assign coordinates and update bounds\n g.bounds.translate(x - (g.x || 0), y - (g.y || 0));\n g.mark.bounds.clear().union(g.bounds);\n g.x = x;\n g.y = y;\n\n // queue title for redraw\n view.dirty(g);\n}\n\n// utility for looking up legend layout configuration\nfunction lookup(config, orient) {\n var opt = config[orient] || {};\n return function (key, d) {\n return opt[key] != null ? opt[key] : config[key] != null ? config[key] : d;\n };\n}\n\n// if legends specify offset directly, use the maximum specified value\nfunction offsets(legends, value) {\n var max = -Infinity;\n legends.forEach(function (item) {\n if (item.offset != null) max = Math.max(max, item.offset);\n });\n return max > -Infinity ? max : value;\n}\nfunction legendParams(g, orient, config, xb, yb, w, h) {\n var _ = lookup(config, orient),\n offset = offsets(g, _('offset', 0)),\n anchor = _('anchor', Start),\n mult = anchor === End ? 1 : anchor === Middle ? 0.5 : 0;\n var p = {\n align: Each,\n bounds: _('bounds', Flush),\n columns: _('direction') === 'vertical' ? 1 : g.length,\n padding: _('margin', 8),\n center: _('center'),\n nodirty: true\n };\n switch (orient) {\n case Left:\n p.anchor = {\n x: Math.floor(xb.x1) - offset,\n column: End,\n y: mult * (h || xb.height() + 2 * xb.y1),\n row: anchor\n };\n break;\n case Right:\n p.anchor = {\n x: Math.ceil(xb.x2) + offset,\n y: mult * (h || xb.height() + 2 * xb.y1),\n row: anchor\n };\n break;\n case Top:\n p.anchor = {\n y: Math.floor(yb.y1) - offset,\n row: End,\n x: mult * (w || yb.width() + 2 * yb.x1),\n column: anchor\n };\n break;\n case Bottom:\n p.anchor = {\n y: Math.ceil(yb.y2) + offset,\n x: mult * (w || yb.width() + 2 * yb.x1),\n column: anchor\n };\n break;\n case TopLeft:\n p.anchor = {\n x: offset,\n y: offset\n };\n break;\n case TopRight:\n p.anchor = {\n x: w - offset,\n y: offset,\n column: End\n };\n break;\n case BottomLeft:\n p.anchor = {\n x: offset,\n y: h - offset,\n row: End\n };\n break;\n case BottomRight:\n p.anchor = {\n x: w - offset,\n y: h - offset,\n column: End,\n row: End\n };\n break;\n }\n return p;\n}\nfunction legendLayout(view, legend) {\n var item = legend.items[0],\n datum = item.datum,\n orient = item.orient,\n bounds = item.bounds,\n x = item.x,\n y = item.y,\n w,\n h;\n\n // cache current bounds for later comparison\n item._bounds ? item._bounds.clear().union(bounds) : item._bounds = bounds.clone();\n bounds.clear();\n\n // adjust legend to accommodate padding and title\n legendGroupLayout(view, item, item.items[0].items[0]);\n\n // aggregate bounds to determine size, and include origin\n bounds = legendBounds(item, bounds);\n w = 2 * item.padding;\n h = 2 * item.padding;\n if (!bounds.empty()) {\n w = Math.ceil(bounds.width() + w);\n h = Math.ceil(bounds.height() + h);\n }\n if (datum.type === Symbols) {\n legendEntryLayout(item.items[0].items[0].items[0].items);\n }\n if (orient !== None) {\n item.x = x = 0;\n item.y = y = 0;\n }\n item.width = w;\n item.height = h;\n boundStroke(bounds.set(x, y, x + w, y + h), item);\n item.mark.bounds.clear().union(bounds);\n return item;\n}\nfunction legendBounds(item, b) {\n // aggregate item bounds\n item.items.forEach(function (_) {\n return b.union(_.bounds);\n });\n\n // anchor to legend origin\n b.x1 = item.padding;\n b.y1 = item.padding;\n return b;\n}\nfunction legendGroupLayout(view, item, entry) {\n var pad = item.padding,\n ex = pad - entry.x,\n ey = pad - entry.y;\n if (!item.datum.title) {\n if (ex || ey) translate(view, entry, ex, ey);\n } else {\n var title = item.items[1].items[0],\n anchor = title.anchor,\n tpad = item.titlePadding || 0,\n tx = pad - title.x,\n ty = pad - title.y;\n switch (title.orient) {\n case Left:\n ex += Math.ceil(title.bounds.width()) + tpad;\n break;\n case Right:\n case Bottom:\n break;\n default:\n ey += title.bounds.height() + tpad;\n }\n if (ex || ey) translate(view, entry, ex, ey);\n switch (title.orient) {\n case Left:\n ty += legendTitleOffset(item, entry, title, anchor, 1, 1);\n break;\n case Right:\n tx += legendTitleOffset(item, entry, title, End, 0, 0) + tpad;\n ty += legendTitleOffset(item, entry, title, anchor, 1, 1);\n break;\n case Bottom:\n tx += legendTitleOffset(item, entry, title, anchor, 0, 0);\n ty += legendTitleOffset(item, entry, title, End, -1, 0, 1) + tpad;\n break;\n default:\n tx += legendTitleOffset(item, entry, title, anchor, 0, 0);\n }\n if (tx || ty) translate(view, title, tx, ty);\n\n // translate legend if title pushes into negative coordinates\n if ((tx = Math.round(title.bounds.x1 - pad)) < 0) {\n translate(view, entry, -tx, 0);\n translate(view, title, -tx, 0);\n }\n }\n}\nfunction legendTitleOffset(item, entry, title, anchor, y, lr, noBar) {\n var grad = item.datum.type !== 'symbol',\n vgrad = title.datum.vgrad,\n e = grad && (lr || !vgrad) && !noBar ? entry.items[0] : entry,\n s = e.bounds[y ? 'y2' : 'x2'] - item.padding,\n u = vgrad && lr ? s : 0,\n v = vgrad && lr ? 0 : s,\n o = y <= 0 ? 0 : multiLineOffset(title);\n return Math.round(anchor === Start ? u : anchor === End ? v - o : 0.5 * (s - o));\n}\nfunction translate(view, item, dx, dy) {\n item.x += dx;\n item.y += dy;\n item.bounds.translate(dx, dy);\n item.mark.bounds.translate(dx, dy);\n view.dirty(item);\n}\nfunction legendEntryLayout(entries) {\n // get max widths for each column\n var widths = entries.reduce(function (w, g) {\n w[g.column] = Math.max(g.bounds.x2 - g.x, w[g.column] || 0);\n return w;\n }, {});\n\n // set dimensions of legend entry groups\n entries.forEach(function (g) {\n g.width = widths[g.column];\n g.height = g.bounds.y2 - g.y;\n });\n}\nfunction titleLayout(view, mark, width, height, viewBounds) {\n var group = mark.items[0],\n frame = group.frame,\n orient = group.orient,\n anchor = group.anchor,\n offset = group.offset,\n padding = group.padding,\n title = group.items[0].items[0],\n subtitle = group.items[1] && group.items[1].items[0],\n end = orient === Left || orient === Right ? height : width,\n start = 0,\n x = 0,\n y = 0,\n sx = 0,\n sy = 0,\n pos;\n if (frame !== Group) {\n orient === Left ? (start = viewBounds.y2, end = viewBounds.y1) : orient === Right ? (start = viewBounds.y1, end = viewBounds.y2) : (start = viewBounds.x1, end = viewBounds.x2);\n } else if (orient === Left) {\n start = height, end = 0;\n }\n pos = anchor === Start ? start : anchor === End ? end : (start + end) / 2;\n if (subtitle && subtitle.text) {\n // position subtitle\n switch (orient) {\n case Top:\n case Bottom:\n sy = title.bounds.height() + padding;\n break;\n case Left:\n sx = title.bounds.width() + padding;\n break;\n case Right:\n sx = -title.bounds.width() - padding;\n break;\n }\n tempBounds.clear().union(subtitle.bounds);\n tempBounds.translate(sx - (subtitle.x || 0), sy - (subtitle.y || 0));\n if (set(subtitle, 'x', sx) | set(subtitle, 'y', sy)) {\n view.dirty(subtitle);\n subtitle.bounds.clear().union(tempBounds);\n subtitle.mark.bounds.clear().union(tempBounds);\n view.dirty(subtitle);\n }\n tempBounds.clear().union(subtitle.bounds);\n } else {\n tempBounds.clear();\n }\n tempBounds.union(title.bounds);\n\n // position title group\n switch (orient) {\n case Top:\n x = pos;\n y = viewBounds.y1 - tempBounds.height() - offset;\n break;\n case Left:\n x = viewBounds.x1 - tempBounds.width() - offset;\n y = pos;\n break;\n case Right:\n x = viewBounds.x2 + tempBounds.width() + offset;\n y = pos;\n break;\n case Bottom:\n x = pos;\n y = viewBounds.y2 + offset;\n break;\n default:\n x = group.x;\n y = group.y;\n }\n if (set(group, 'x', x) | set(group, 'y', y)) {\n tempBounds.translate(x, y);\n view.dirty(group);\n group.bounds.clear().union(tempBounds);\n mark.bounds.clear().union(tempBounds);\n view.dirty(group);\n }\n return group.bounds;\n}\n\n/**\n * Layout view elements such as axes and legends.\n * Also performs size adjustments.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {object} params.mark - Scenegraph mark of groups to layout.\n */\nfunction ViewLayout(params) {\n Transform.call(this, null, params);\n}\ninherits(ViewLayout, Transform, {\n transform: function transform(_, pulse) {\n var view = pulse.dataflow;\n _.mark.items.forEach(function (group) {\n if (_.layout) trellisLayout(view, group, _.layout);\n layoutGroup(view, group, _);\n });\n return shouldReflow(_.mark.group) ? pulse.reflow() : pulse;\n }\n});\nfunction shouldReflow(group) {\n // We typically should reflow if layout is invoked (#2568), as child items\n // may have resized and reflow ensures group bounds are re-calculated.\n // However, legend entries have a special exception to avoid instability.\n // For example, if a selected legend symbol gains a stroke on hover,\n // we don't want to re-position subsequent elements in the legend.\n return group && group.mark.role !== 'legend-entry';\n}\nfunction layoutGroup(view, group, _) {\n var items = group.items,\n width = Math.max(0, group.width || 0),\n height = Math.max(0, group.height || 0),\n viewBounds = new Bounds().set(0, 0, width, height),\n xBounds = viewBounds.clone(),\n yBounds = viewBounds.clone(),\n legends = [],\n title,\n mark,\n orient,\n b,\n i,\n n;\n\n // layout axes, gather legends, collect bounds\n for (i = 0, n = items.length; i < n; ++i) {\n mark = items[i];\n switch (mark.role) {\n case AxisRole:\n b = isYAxis(mark) ? xBounds : yBounds;\n b.union(axisLayout(view, mark, width, height));\n break;\n case TitleRole:\n title = mark;\n break;\n case LegendRole:\n legends.push(legendLayout(view, mark));\n break;\n case FrameRole:\n case ScopeRole:\n case RowHeader:\n case RowFooter:\n case RowTitle:\n case ColHeader:\n case ColFooter:\n case ColTitle:\n xBounds.union(mark.bounds);\n yBounds.union(mark.bounds);\n break;\n default:\n viewBounds.union(mark.bounds);\n }\n }\n\n // layout legends, adjust viewBounds\n if (legends.length) {\n // group legends by orient\n var l = {};\n legends.forEach(function (item) {\n orient = item.orient || Right;\n if (orient !== None) (l[orient] || (l[orient] = [])).push(item);\n });\n\n // perform grid layout for each orient group\n for (var _orient in l) {\n var g = l[_orient];\n gridLayout(view, g, legendParams(g, _orient, _.legends, xBounds, yBounds, width, height));\n }\n\n // update view bounds\n legends.forEach(function (item) {\n var b = item.bounds;\n if (!b.equals(item._bounds)) {\n item.bounds = item._bounds;\n view.dirty(item); // dirty previous location\n item.bounds = b;\n view.dirty(item);\n }\n if (_.autosize && (_.autosize.type === Fit || _.autosize.type === FitX || _.autosize.type === FitY)) {\n // For autosize fit, incorporate the orthogonal dimension only.\n // Legends that overrun the chart area will then be clipped;\n // otherwise the chart area gets reduced to nothing!\n switch (item.orient) {\n case Left:\n case Right:\n viewBounds.add(b.x1, 0).add(b.x2, 0);\n break;\n case Top:\n case Bottom:\n viewBounds.add(0, b.y1).add(0, b.y2);\n }\n } else {\n viewBounds.union(b);\n }\n });\n }\n\n // combine bounding boxes\n viewBounds.union(xBounds).union(yBounds);\n\n // layout title, adjust bounds\n if (title) {\n viewBounds.union(titleLayout(view, title, width, height, viewBounds));\n }\n\n // override aggregated view bounds if content is clipped\n if (group.clip) {\n viewBounds.set(0, 0, group.width || 0, group.height || 0);\n }\n\n // perform size adjustment\n viewSizeLayout(view, group, viewBounds, _);\n}\nfunction viewSizeLayout(view, group, viewBounds, _) {\n var auto = _.autosize || {},\n type = auto.type;\n if (view._autosize < 1 || !type) return;\n var viewWidth = view._width,\n viewHeight = view._height,\n width = Math.max(0, group.width || 0),\n left = Math.max(0, Math.ceil(-viewBounds.x1)),\n height = Math.max(0, group.height || 0),\n top = Math.max(0, Math.ceil(-viewBounds.y1));\n var right = Math.max(0, Math.ceil(viewBounds.x2 - width)),\n bottom = Math.max(0, Math.ceil(viewBounds.y2 - height));\n if (auto.contains === Padding) {\n var padding = view.padding();\n viewWidth -= padding.left + padding.right;\n viewHeight -= padding.top + padding.bottom;\n }\n if (type === None) {\n left = 0;\n top = 0;\n width = viewWidth;\n height = viewHeight;\n } else if (type === Fit) {\n width = Math.max(0, viewWidth - left - right);\n height = Math.max(0, viewHeight - top - bottom);\n } else if (type === FitX) {\n width = Math.max(0, viewWidth - left - right);\n viewHeight = height + top + bottom;\n } else if (type === FitY) {\n viewWidth = width + left + right;\n height = Math.max(0, viewHeight - top - bottom);\n } else if (type === Pad) {\n viewWidth = width + left + right;\n viewHeight = height + top + bottom;\n }\n view._resizeView(viewWidth, viewHeight, width, height, [left, top], auto.resize);\n}\nexport { Bound as bound, Identifier as identifier, Mark as mark, Overlap as overlap, Render as render, ViewLayout as viewlayout };","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nexport default function sum(values, valueof) {\n var sum = 0;\n if (valueof === undefined) {\n var _iterator = _createForOfIteratorHelper(values),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var value = _step.value;\n if (value = +value) {\n sum += value;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n } else {\n var index = -1;\n var _iterator2 = _createForOfIteratorHelper(values),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _value = _step2.value;\n if (_value = +valueof(_value, ++index, values)) {\n sum += _value;\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n return sum;\n}","import \"core-js/modules/es.math.hypot.js\";\nimport { Transform, ingest, tupleid, stableCompare } from 'vega-dataflow';\nimport { tickCount, tickFormat, validTicks, tickValues, SymbolLegend, labelFormat, labelValues, GradientLegend, scaleFraction, labelFraction, scale, Sequential, Linear, isContinuous, Time, UTC, Ordinal, scaleImplicit, Log, Sqrt, Pow, Symlog, isLogarithmic, BinOrdinal, isInterpolating, interpolateColors, interpolate, Band, Point, bandSpace, scheme, Threshold, Quantile, Quantize, quantizeInterpolator, interpolateRange, Diverging } from 'vega-scale';\nimport { inherits, isArray, error, fastmap, falsy, isFunction, constant, peek, one, toSet, isString, zoomLog, zoomPow, zoomSymlog, zoomLinear, stringValue } from 'vega-util';\nimport { sum, range } from 'd3-array';\nimport { interpolateRound, interpolate as interpolate$1 } from 'd3-interpolate';\n\n/**\n * Generates axis ticks for visualizing a spatial scale.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Scale} params.scale - The scale to generate ticks for.\n * @param {*} [params.count=10] - The approximate number of ticks, or\n * desired tick interval, to use.\n * @param {Array<*>} [params.values] - The exact tick values to use.\n * These must be legal domain values for the provided scale.\n * If provided, the count argument is ignored.\n * @param {function(*):string} [params.formatSpecifier] - A format specifier\n * to use in conjunction with scale.tickFormat. Legal values are\n * any valid d3 4.0 format specifier.\n * @param {function(*):string} [params.format] - The format function to use.\n * If provided, the formatSpecifier argument is ignored.\n */\nfunction AxisTicks(params) {\n Transform.call(this, null, params);\n}\ninherits(AxisTicks, Transform, {\n transform: function transform(_, pulse) {\n if (this.value && !_.modified()) {\n return pulse.StopPropagation;\n }\n var locale = pulse.dataflow.locale(),\n out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n ticks = this.value,\n scale = _.scale,\n tally = _.count == null ? _.values ? _.values.length : 10 : _.count,\n count = tickCount(scale, tally, _.minstep),\n format = _.format || tickFormat(locale, scale, count, _.formatSpecifier, _.formatType, !!_.values),\n values = _.values ? validTicks(scale, _.values, count) : tickValues(scale, count);\n if (ticks) out.rem = ticks;\n ticks = values.map(function (value, i) {\n return ingest({\n index: i / (values.length - 1 || 1),\n value: value,\n label: format(value)\n });\n });\n if (_.extra && ticks.length) {\n // add an extra tick pegged to the initial domain value\n // this is used to generate axes with 'binned' domains\n ticks.push(ingest({\n index: -1,\n extra: {\n value: ticks[0].value\n },\n label: ''\n }));\n }\n out.source = ticks;\n out.add = ticks;\n this.value = ticks;\n return out;\n }\n});\n\n/**\n * Joins a set of data elements against a set of visual items.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): object} [params.item] - An item generator function.\n * @param {function(object): *} [params.key] - The key field associating data and visual items.\n */\nfunction DataJoin(params) {\n Transform.call(this, null, params);\n}\nfunction defaultItemCreate() {\n return ingest({});\n}\nfunction newMap(key) {\n var map = fastmap().test(function (t) {\n return t.exit;\n });\n map.lookup = function (t) {\n return map.get(key(t));\n };\n return map;\n}\ninherits(DataJoin, Transform, {\n transform: function transform(_, pulse) {\n var df = pulse.dataflow,\n out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n item = _.item || defaultItemCreate,\n key = _.key || tupleid,\n map = this.value;\n\n // prevent transient (e.g., hover) requests from\n // cascading across marks derived from marks\n if (isArray(out.encode)) {\n out.encode = null;\n }\n if (map && (_.modified('key') || pulse.modified(key))) {\n error('DataJoin does not support modified key function or fields.');\n }\n if (!map) {\n pulse = pulse.addAll();\n this.value = map = newMap(key);\n }\n pulse.visit(pulse.ADD, function (t) {\n var k = key(t);\n var x = map.get(k);\n if (x) {\n if (x.exit) {\n map.empty--;\n out.add.push(x);\n } else {\n out.mod.push(x);\n }\n } else {\n x = item(t);\n map.set(k, x);\n out.add.push(x);\n }\n x.datum = t;\n x.exit = false;\n });\n pulse.visit(pulse.MOD, function (t) {\n var k = key(t),\n x = map.get(k);\n if (x) {\n x.datum = t;\n out.mod.push(x);\n }\n });\n pulse.visit(pulse.REM, function (t) {\n var k = key(t),\n x = map.get(k);\n if (t === x.datum && !x.exit) {\n out.rem.push(x);\n x.exit = true;\n ++map.empty;\n }\n });\n if (pulse.changed(pulse.ADD_MOD)) out.modifies('datum');\n if (pulse.clean() || _.clean && map.empty > df.cleanThreshold) {\n df.runAfter(map.clean);\n }\n return out;\n }\n});\n\n/**\n * Invokes encoding functions for visual items.\n * @constructor\n * @param {object} params - The parameters to the encoding functions. This\n * parameter object will be passed through to all invoked encoding functions.\n * @param {object} [params.mod=false] - Flag indicating if tuples in the input\n * mod set that are unmodified by encoders should be included in the output.\n * @param {object} param.encoders - The encoding functions\n * @param {function(object, object): boolean} [param.encoders.update] - Update encoding set\n * @param {function(object, object): boolean} [param.encoders.enter] - Enter encoding set\n * @param {function(object, object): boolean} [param.encoders.exit] - Exit encoding set\n */\nfunction Encode(params) {\n Transform.call(this, null, params);\n}\ninherits(Encode, Transform, {\n transform: function transform(_, pulse) {\n var out = pulse.fork(pulse.ADD_REM),\n fmod = _.mod || false,\n encoders = _.encoders,\n encode = pulse.encode;\n\n // if an array, the encode directive includes additional sets\n // that must be defined in order for the primary set to be invoked\n // e.g., only run the update set if the hover set is defined\n if (isArray(encode)) {\n if (out.changed() || encode.every(function (e) {\n return encoders[e];\n })) {\n encode = encode[0];\n out.encode = null; // consume targeted encode directive\n } else {\n return pulse.StopPropagation;\n }\n }\n\n // marshall encoder functions\n var reenter = encode === 'enter',\n update = encoders.update || falsy,\n enter = encoders.enter || falsy,\n exit = encoders.exit || falsy,\n set = (encode && !reenter ? encoders[encode] : update) || falsy;\n if (pulse.changed(pulse.ADD)) {\n pulse.visit(pulse.ADD, function (t) {\n enter(t, _);\n update(t, _);\n });\n out.modifies(enter.output);\n out.modifies(update.output);\n if (set !== falsy && set !== update) {\n pulse.visit(pulse.ADD, function (t) {\n set(t, _);\n });\n out.modifies(set.output);\n }\n }\n if (pulse.changed(pulse.REM) && exit !== falsy) {\n pulse.visit(pulse.REM, function (t) {\n exit(t, _);\n });\n out.modifies(exit.output);\n }\n if (reenter || set !== falsy) {\n var flag = pulse.MOD | (_.modified() ? pulse.REFLOW : 0);\n if (reenter) {\n pulse.visit(flag, function (t) {\n var mod = enter(t, _) || fmod;\n if (set(t, _) || mod) out.mod.push(t);\n });\n if (out.mod.length) out.modifies(enter.output);\n } else {\n pulse.visit(flag, function (t) {\n if (set(t, _) || fmod) out.mod.push(t);\n });\n }\n if (out.mod.length) out.modifies(set.output);\n }\n return out.changed() ? out : pulse.StopPropagation;\n }\n});\n\n/**\n * Generates legend entries for visualizing a scale.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Scale} params.scale - The scale to generate items for.\n * @param {*} [params.count=5] - The approximate number of items, or\n * desired tick interval, to use.\n * @param {*} [params.limit] - The maximum number of entries to\n * include in a symbol legend.\n * @param {Array<*>} [params.values] - The exact tick values to use.\n * These must be legal domain values for the provided scale.\n * If provided, the count argument is ignored.\n * @param {string} [params.formatSpecifier] - A format specifier\n * to use in conjunction with scale.tickFormat. Legal values are\n * any valid D3 format specifier string.\n * @param {function(*):string} [params.format] - The format function to use.\n * If provided, the formatSpecifier argument is ignored.\n */\nfunction LegendEntries(params) {\n Transform.call(this, [], params);\n}\ninherits(LegendEntries, Transform, {\n transform: function transform(_, pulse) {\n if (this.value != null && !_.modified()) {\n return pulse.StopPropagation;\n }\n var locale = pulse.dataflow.locale(),\n out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n items = this.value,\n type = _.type || SymbolLegend,\n scale = _.scale,\n limit = +_.limit,\n count = tickCount(scale, _.count == null ? 5 : _.count, _.minstep),\n lskip = !!_.values || type === SymbolLegend,\n format = _.format || labelFormat(locale, scale, count, type, _.formatSpecifier, _.formatType, lskip),\n values = _.values || labelValues(scale, count),\n domain,\n fraction,\n size,\n offset,\n ellipsis;\n if (items) out.rem = items;\n if (type === SymbolLegend) {\n if (limit && values.length > limit) {\n pulse.dataflow.warn('Symbol legend count exceeds limit, filtering items.');\n items = values.slice(0, limit - 1);\n ellipsis = true;\n } else {\n items = values;\n }\n if (isFunction(size = _.size)) {\n // if first value maps to size zero, remove from list (vega#717)\n if (!_.values && scale(items[0]) === 0) {\n items = items.slice(1);\n }\n // compute size offset for legend entries\n offset = items.reduce(function (max, value) {\n return Math.max(max, size(value, _));\n }, 0);\n } else {\n size = constant(offset = size || 8);\n }\n items = items.map(function (value, index) {\n return ingest({\n index: index,\n label: format(value, index, items),\n value: value,\n offset: offset,\n size: size(value, _)\n });\n });\n if (ellipsis) {\n ellipsis = values[items.length];\n items.push(ingest({\n index: items.length,\n label: \"\\u2026\".concat(values.length - items.length, \" entries\"),\n value: ellipsis,\n offset: offset,\n size: size(ellipsis, _)\n }));\n }\n } else if (type === GradientLegend) {\n domain = scale.domain(), fraction = scaleFraction(scale, domain[0], peek(domain));\n\n // if automatic label generation produces 2 or fewer values,\n // use the domain end points instead (fixes vega/vega#1364)\n if (values.length < 3 && !_.values && domain[0] !== peek(domain)) {\n values = [domain[0], peek(domain)];\n }\n items = values.map(function (value, index) {\n return ingest({\n index: index,\n label: format(value, index, values),\n value: value,\n perc: fraction(value)\n });\n });\n } else {\n size = values.length - 1;\n fraction = labelFraction(scale);\n items = values.map(function (value, index) {\n return ingest({\n index: index,\n label: format(value, index, values),\n value: value,\n perc: index ? fraction(value) : 0,\n perc2: index === size ? 1 : fraction(values[index + 1])\n });\n });\n }\n out.source = items;\n out.add = items;\n this.value = items;\n return out;\n }\n});\nvar sourceX = function sourceX(t) {\n return t.source.x;\n};\nvar sourceY = function sourceY(t) {\n return t.source.y;\n};\nvar targetX = function targetX(t) {\n return t.target.x;\n};\nvar targetY = function targetY(t) {\n return t.target.y;\n};\n\n/**\n * Layout paths linking source and target elements.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nfunction LinkPath(params) {\n Transform.call(this, {}, params);\n}\nLinkPath.Definition = {\n 'type': 'LinkPath',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'sourceX',\n 'type': 'field',\n 'default': 'source.x'\n }, {\n 'name': 'sourceY',\n 'type': 'field',\n 'default': 'source.y'\n }, {\n 'name': 'targetX',\n 'type': 'field',\n 'default': 'target.x'\n }, {\n 'name': 'targetY',\n 'type': 'field',\n 'default': 'target.y'\n }, {\n 'name': 'orient',\n 'type': 'enum',\n 'default': 'vertical',\n 'values': ['horizontal', 'vertical', 'radial']\n }, {\n 'name': 'shape',\n 'type': 'enum',\n 'default': 'line',\n 'values': ['line', 'arc', 'curve', 'diagonal', 'orthogonal']\n }, {\n 'name': 'require',\n 'type': 'signal'\n }, {\n 'name': 'as',\n 'type': 'string',\n 'default': 'path'\n }]\n};\ninherits(LinkPath, Transform, {\n transform: function transform(_, pulse) {\n var sx = _.sourceX || sourceX,\n sy = _.sourceY || sourceY,\n tx = _.targetX || targetX,\n ty = _.targetY || targetY,\n as = _.as || 'path',\n orient = _.orient || 'vertical',\n shape = _.shape || 'line',\n path = Paths.get(shape + '-' + orient) || Paths.get(shape);\n if (!path) {\n error('LinkPath unsupported type: ' + _.shape + (_.orient ? '-' + _.orient : ''));\n }\n pulse.visit(pulse.SOURCE, function (t) {\n t[as] = path(sx(t), sy(t), tx(t), ty(t));\n });\n return pulse.reflow(_.modified()).modifies(as);\n }\n});\nvar line = function line(sx, sy, tx, ty) {\n return 'M' + sx + ',' + sy + 'L' + tx + ',' + ty;\n};\nvar lineR = function lineR(sa, sr, ta, tr) {\n return line(sr * Math.cos(sa), sr * Math.sin(sa), tr * Math.cos(ta), tr * Math.sin(ta));\n};\nvar arc = function arc(sx, sy, tx, ty) {\n var dx = tx - sx,\n dy = ty - sy,\n rr = Math.hypot(dx, dy) / 2,\n ra = 180 * Math.atan2(dy, dx) / Math.PI;\n return 'M' + sx + ',' + sy + 'A' + rr + ',' + rr + ' ' + ra + ' 0 1' + ' ' + tx + ',' + ty;\n};\nvar arcR = function arcR(sa, sr, ta, tr) {\n return arc(sr * Math.cos(sa), sr * Math.sin(sa), tr * Math.cos(ta), tr * Math.sin(ta));\n};\nvar curve = function curve(sx, sy, tx, ty) {\n var dx = tx - sx,\n dy = ty - sy,\n ix = 0.2 * (dx + dy),\n iy = 0.2 * (dy - dx);\n return 'M' + sx + ',' + sy + 'C' + (sx + ix) + ',' + (sy + iy) + ' ' + (tx + iy) + ',' + (ty - ix) + ' ' + tx + ',' + ty;\n};\nvar curveR = function curveR(sa, sr, ta, tr) {\n return curve(sr * Math.cos(sa), sr * Math.sin(sa), tr * Math.cos(ta), tr * Math.sin(ta));\n};\nvar orthoX = function orthoX(sx, sy, tx, ty) {\n return 'M' + sx + ',' + sy + 'V' + ty + 'H' + tx;\n};\nvar orthoY = function orthoY(sx, sy, tx, ty) {\n return 'M' + sx + ',' + sy + 'H' + tx + 'V' + ty;\n};\nvar orthoR = function orthoR(sa, sr, ta, tr) {\n var sc = Math.cos(sa),\n ss = Math.sin(sa),\n tc = Math.cos(ta),\n ts = Math.sin(ta),\n sf = Math.abs(ta - sa) > Math.PI ? ta <= sa : ta > sa;\n return 'M' + sr * sc + ',' + sr * ss + 'A' + sr + ',' + sr + ' 0 0,' + (sf ? 1 : 0) + ' ' + sr * tc + ',' + sr * ts + 'L' + tr * tc + ',' + tr * ts;\n};\nvar diagonalX = function diagonalX(sx, sy, tx, ty) {\n var m = (sx + tx) / 2;\n return 'M' + sx + ',' + sy + 'C' + m + ',' + sy + ' ' + m + ',' + ty + ' ' + tx + ',' + ty;\n};\nvar diagonalY = function diagonalY(sx, sy, tx, ty) {\n var m = (sy + ty) / 2;\n return 'M' + sx + ',' + sy + 'C' + sx + ',' + m + ' ' + tx + ',' + m + ' ' + tx + ',' + ty;\n};\nvar diagonalR = function diagonalR(sa, sr, ta, tr) {\n var sc = Math.cos(sa),\n ss = Math.sin(sa),\n tc = Math.cos(ta),\n ts = Math.sin(ta),\n mr = (sr + tr) / 2;\n return 'M' + sr * sc + ',' + sr * ss + 'C' + mr * sc + ',' + mr * ss + ' ' + mr * tc + ',' + mr * ts + ' ' + tr * tc + ',' + tr * ts;\n};\nvar Paths = fastmap({\n 'line': line,\n 'line-radial': lineR,\n 'arc': arc,\n 'arc-radial': arcR,\n 'curve': curve,\n 'curve-radial': curveR,\n 'orthogonal-horizontal': orthoX,\n 'orthogonal-vertical': orthoY,\n 'orthogonal-radial': orthoR,\n 'diagonal-horizontal': diagonalX,\n 'diagonal-vertical': diagonalY,\n 'diagonal-radial': diagonalR\n});\n\n/**\n * Pie and donut chart layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to size pie segments.\n * @param {number} [params.startAngle=0] - The start angle (in radians) of the layout.\n * @param {number} [params.endAngle=2π] - The end angle (in radians) of the layout.\n * @param {boolean} [params.sort] - Boolean flag for sorting sectors by value.\n */\nfunction Pie(params) {\n Transform.call(this, null, params);\n}\nPie.Definition = {\n 'type': 'Pie',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field'\n }, {\n 'name': 'startAngle',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'endAngle',\n 'type': 'number',\n 'default': 6.283185307179586\n }, {\n 'name': 'sort',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': 2,\n 'default': ['startAngle', 'endAngle']\n }]\n};\ninherits(Pie, Transform, {\n transform: function transform(_, pulse) {\n var as = _.as || ['startAngle', 'endAngle'],\n startAngle = as[0],\n endAngle = as[1],\n field = _.field || one,\n start = _.startAngle || 0,\n stop = _.endAngle != null ? _.endAngle : 2 * Math.PI,\n data = pulse.source,\n values = data.map(field),\n n = values.length,\n a = start,\n k = (stop - start) / sum(values),\n index = range(n),\n i,\n t,\n v;\n if (_.sort) {\n index.sort(function (a, b) {\n return values[a] - values[b];\n });\n }\n for (i = 0; i < n; ++i) {\n v = values[index[i]];\n t = data[index[i]];\n t[startAngle] = a;\n t[endAngle] = a += v * k;\n }\n this.value = values;\n return pulse.reflow(_.modified()).modifies(as);\n }\n});\nvar DEFAULT_COUNT = 5;\nfunction includeZero(scale) {\n var type = scale.type;\n return !scale.bins && (type === Linear || type === Pow || type === Sqrt);\n}\nfunction includePad(type) {\n return isContinuous(type) && type !== Sequential;\n}\nvar SKIP = toSet(['set', 'modified', 'clear', 'type', 'scheme', 'schemeExtent', 'schemeCount', 'domain', 'domainMin', 'domainMid', 'domainMax', 'domainRaw', 'domainImplicit', 'nice', 'zero', 'bins', 'range', 'rangeStep', 'round', 'reverse', 'interpolate', 'interpolateGamma']);\n\n/**\n * Maintains a scale function mapping data values to visual channels.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nfunction Scale(params) {\n Transform.call(this, null, params);\n this.modified(true); // always treat as modified\n}\n\ninherits(Scale, Transform, {\n transform: function transform(_, pulse) {\n var df = pulse.dataflow,\n scale$1 = this.value,\n key = scaleKey(_);\n if (!scale$1 || key !== scale$1.type) {\n this.value = scale$1 = scale(key)();\n }\n for (key in _) if (!SKIP[key]) {\n // padding is a scale property for band/point but not others\n if (key === 'padding' && includePad(scale$1.type)) continue;\n // invoke scale property setter, raise warning if not found\n isFunction(scale$1[key]) ? scale$1[key](_[key]) : df.warn('Unsupported scale property: ' + key);\n }\n configureRange(scale$1, _, configureBins(scale$1, _, configureDomain(scale$1, _, df)));\n return pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n }\n});\nfunction scaleKey(_) {\n var t = _.type,\n d = '',\n n;\n\n // backwards compatibility pre Vega 5.\n if (t === Sequential) return Sequential + '-' + Linear;\n if (isContinuousColor(_)) {\n n = _.rawDomain ? _.rawDomain.length : _.domain ? _.domain.length + +(_.domainMid != null) : 0;\n d = n === 2 ? Sequential + '-' : n === 3 ? Diverging + '-' : '';\n }\n return (d + t || Linear).toLowerCase();\n}\nfunction isContinuousColor(_) {\n var t = _.type;\n return isContinuous(t) && t !== Time && t !== UTC && (_.scheme || _.range && _.range.length && _.range.every(isString));\n}\nfunction configureDomain(scale, _, df) {\n // check raw domain, if provided use that and exit early\n var raw = rawDomain(scale, _.domainRaw, df);\n if (raw > -1) return raw;\n var domain = _.domain,\n type = scale.type,\n zero = _.zero || _.zero === undefined && includeZero(scale),\n n,\n mid;\n if (!domain) return 0;\n\n // adjust continuous domain for minimum pixel padding\n if (includePad(type) && _.padding && domain[0] !== peek(domain)) {\n domain = padDomain(type, domain, _.range, _.padding, _.exponent, _.constant);\n }\n\n // adjust domain based on zero, min, max settings\n if (zero || _.domainMin != null || _.domainMax != null || _.domainMid != null) {\n n = (domain = domain.slice()).length - 1 || 1;\n if (zero) {\n if (domain[0] > 0) domain[0] = 0;\n if (domain[n] < 0) domain[n] = 0;\n }\n if (_.domainMin != null) domain[0] = _.domainMin;\n if (_.domainMax != null) domain[n] = _.domainMax;\n if (_.domainMid != null) {\n mid = _.domainMid;\n var i = mid > domain[n] ? n + 1 : mid < domain[0] ? 0 : n;\n if (i !== n) df.warn('Scale domainMid exceeds domain min or max.', mid);\n domain.splice(i, 0, mid);\n }\n }\n\n // set the scale domain\n scale.domain(domainCheck(type, domain, df));\n\n // if ordinal scale domain is defined, prevent implicit\n // domain construction as side-effect of scale lookup\n if (type === Ordinal) {\n scale.unknown(_.domainImplicit ? scaleImplicit : undefined);\n }\n\n // perform 'nice' adjustment as requested\n if (_.nice && scale.nice) {\n scale.nice(_.nice !== true && tickCount(scale, _.nice) || null);\n }\n\n // return the cardinality of the domain\n return domain.length;\n}\nfunction rawDomain(scale, raw, df) {\n if (raw) {\n scale.domain(domainCheck(scale.type, raw, df));\n return raw.length;\n } else {\n return -1;\n }\n}\nfunction padDomain(type, domain, range, pad, exponent, constant) {\n var span = Math.abs(peek(range) - range[0]),\n frac = span / (span - 2 * pad),\n d = type === Log ? zoomLog(domain, null, frac) : type === Sqrt ? zoomPow(domain, null, frac, 0.5) : type === Pow ? zoomPow(domain, null, frac, exponent || 1) : type === Symlog ? zoomSymlog(domain, null, frac, constant || 1) : zoomLinear(domain, null, frac);\n domain = domain.slice();\n domain[0] = d[0];\n domain[domain.length - 1] = d[1];\n return domain;\n}\nfunction domainCheck(type, domain, df) {\n if (isLogarithmic(type)) {\n // sum signs of domain values\n // if all pos or all neg, abs(sum) === domain.length\n var s = Math.abs(domain.reduce(function (s, v) {\n return s + (v < 0 ? -1 : v > 0 ? 1 : 0);\n }, 0));\n if (s !== domain.length) {\n df.warn('Log scale domain includes zero: ' + stringValue(domain));\n }\n }\n return domain;\n}\nfunction configureBins(scale, _, count) {\n var bins = _.bins;\n if (bins && !isArray(bins)) {\n // generate bin boundary array\n var domain = scale.domain(),\n lo = domain[0],\n hi = peek(domain),\n step = bins.step;\n var start = bins.start == null ? lo : bins.start,\n stop = bins.stop == null ? hi : bins.stop;\n if (!step) error('Scale bins parameter missing step property.');\n if (start < lo) start = step * Math.ceil(lo / step);\n if (stop > hi) stop = step * Math.floor(hi / step);\n bins = range(start, stop + step / 2, step);\n }\n if (bins) {\n // assign bin boundaries to scale instance\n scale.bins = bins;\n } else if (scale.bins) {\n // no current bins, remove bins if previously set\n delete scale.bins;\n }\n\n // special handling for bin-ordinal scales\n if (scale.type === BinOrdinal) {\n if (!bins) {\n // the domain specifies the bins\n scale.bins = scale.domain();\n } else if (!_.domain && !_.domainRaw) {\n // the bins specify the domain\n scale.domain(bins);\n count = bins.length;\n }\n }\n\n // return domain cardinality\n return count;\n}\nfunction configureRange(scale, _, count) {\n var type = scale.type,\n round = _.round || false,\n range = _.range;\n\n // if range step specified, calculate full range extent\n if (_.rangeStep != null) {\n range = configureRangeStep(type, _, count);\n }\n\n // else if a range scheme is defined, use that\n else if (_.scheme) {\n range = configureScheme(type, _, count);\n if (isFunction(range)) {\n if (scale.interpolator) {\n return scale.interpolator(range);\n } else {\n error(\"Scale type \".concat(type, \" does not support interpolating color schemes.\"));\n }\n }\n }\n\n // given a range array for an interpolating scale, convert to interpolator\n if (range && isInterpolating(type)) {\n return scale.interpolator(interpolateColors(flip(range, _.reverse), _.interpolate, _.interpolateGamma));\n }\n\n // configure rounding / interpolation\n if (range && _.interpolate && scale.interpolate) {\n scale.interpolate(interpolate(_.interpolate, _.interpolateGamma));\n } else if (isFunction(scale.round)) {\n scale.round(round);\n } else if (isFunction(scale.rangeRound)) {\n scale.interpolate(round ? interpolateRound : interpolate$1);\n }\n if (range) scale.range(flip(range, _.reverse));\n}\nfunction configureRangeStep(type, _, count) {\n if (type !== Band && type !== Point) {\n error('Only band and point scales support rangeStep.');\n }\n\n // calculate full range based on requested step size and padding\n var outer = (_.paddingOuter != null ? _.paddingOuter : _.padding) || 0,\n inner = type === Point ? 1 : (_.paddingInner != null ? _.paddingInner : _.padding) || 0;\n return [0, _.rangeStep * bandSpace(count, inner, outer)];\n}\nfunction configureScheme(type, _, count) {\n var extent = _.schemeExtent,\n name,\n scheme$1;\n if (isArray(_.scheme)) {\n scheme$1 = interpolateColors(_.scheme, _.interpolate, _.interpolateGamma);\n } else {\n name = _.scheme.toLowerCase();\n scheme$1 = scheme(name);\n if (!scheme$1) error(\"Unrecognized scheme name: \".concat(_.scheme));\n }\n\n // determine size for potential discrete range\n count = type === Threshold ? count + 1 : type === BinOrdinal ? count - 1 : type === Quantile || type === Quantize ? +_.schemeCount || DEFAULT_COUNT : count;\n\n // adjust and/or quantize scheme as appropriate\n return isInterpolating(type) ? adjustScheme(scheme$1, extent, _.reverse) : isFunction(scheme$1) ? quantizeInterpolator(adjustScheme(scheme$1, extent), count) : type === Ordinal ? scheme$1 : scheme$1.slice(0, count);\n}\nfunction adjustScheme(scheme, extent, reverse) {\n return isFunction(scheme) && (extent || reverse) ? interpolateRange(scheme, flip(extent || [0, 1], reverse)) : scheme;\n}\nfunction flip(array, reverse) {\n return reverse ? array.slice().reverse() : array;\n}\n\n/**\n * Sorts scenegraph items in the pulse source array.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(*,*): number} [params.sort] - A comparator\n * function for sorting tuples.\n */\nfunction SortItems(params) {\n Transform.call(this, null, params);\n}\ninherits(SortItems, Transform, {\n transform: function transform(_, pulse) {\n var mod = _.modified('sort') || pulse.changed(pulse.ADD) || pulse.modified(_.sort.fields) || pulse.modified('datum');\n if (mod) pulse.source.sort(stableCompare(_.sort));\n this.modified(mod);\n return pulse;\n }\n});\nvar Zero = 'zero',\n Center = 'center',\n Normalize = 'normalize',\n DefOutput = ['y0', 'y1'];\n\n/**\n * Stack layout for visualization elements.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to stack.\n * @param {Array} [params.groupby] - An array of accessors to groupby.\n * @param {function(object,object): number} [params.sort] - A comparator for stack sorting.\n * @param {string} [offset='zero'] - Stack baseline offset. One of 'zero', 'center', 'normalize'.\n */\nfunction Stack(params) {\n Transform.call(this, null, params);\n}\nStack.Definition = {\n 'type': 'Stack',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field'\n }, {\n 'name': 'groupby',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'sort',\n 'type': 'compare'\n }, {\n 'name': 'offset',\n 'type': 'enum',\n 'default': Zero,\n 'values': [Zero, Center, Normalize]\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': 2,\n 'default': DefOutput\n }]\n};\ninherits(Stack, Transform, {\n transform: function transform(_, pulse) {\n var as = _.as || DefOutput,\n y0 = as[0],\n y1 = as[1],\n sort = stableCompare(_.sort),\n field = _.field || one,\n stack = _.offset === Center ? stackCenter : _.offset === Normalize ? stackNormalize : stackZero,\n groups,\n i,\n n,\n max;\n\n // partition, sum, and sort the stack groups\n groups = partition(pulse.source, _.groupby, sort, field);\n\n // compute stack layouts per group\n for (i = 0, n = groups.length, max = groups.max; i < n; ++i) {\n stack(groups[i], max, field, y0, y1);\n }\n return pulse.reflow(_.modified()).modifies(as);\n }\n});\nfunction stackCenter(group, max, field, y0, y1) {\n var last = (max - group.sum) / 2,\n m = group.length,\n j = 0,\n t;\n for (; j < m; ++j) {\n t = group[j];\n t[y0] = last;\n t[y1] = last += Math.abs(field(t));\n }\n}\nfunction stackNormalize(group, max, field, y0, y1) {\n var scale = 1 / group.sum,\n last = 0,\n m = group.length,\n j = 0,\n v = 0,\n t;\n for (; j < m; ++j) {\n t = group[j];\n t[y0] = last;\n t[y1] = last = scale * (v += Math.abs(field(t)));\n }\n}\nfunction stackZero(group, max, field, y0, y1) {\n var lastPos = 0,\n lastNeg = 0,\n m = group.length,\n j = 0,\n v,\n t;\n for (; j < m; ++j) {\n t = group[j];\n v = +field(t);\n if (v < 0) {\n t[y0] = lastNeg;\n t[y1] = lastNeg += v;\n } else {\n t[y0] = lastPos;\n t[y1] = lastPos += v;\n }\n }\n}\nfunction partition(data, groupby, sort, field) {\n var groups = [],\n get = function get(f) {\n return f(t);\n },\n map,\n i,\n n,\n m,\n t,\n k,\n g,\n s,\n max;\n\n // partition data points into stack groups\n if (groupby == null) {\n groups.push(data.slice());\n } else {\n for (map = {}, i = 0, n = data.length; i < n; ++i) {\n t = data[i];\n k = groupby.map(get);\n g = map[k];\n if (!g) {\n map[k] = g = [];\n groups.push(g);\n }\n g.push(t);\n }\n }\n\n // compute sums of groups, sort groups as needed\n for (k = 0, max = 0, m = groups.length; k < m; ++k) {\n g = groups[k];\n for (i = 0, s = 0, n = g.length; i < n; ++i) {\n s += Math.abs(field(g[i]));\n }\n g.sum = s;\n if (s > max) max = s;\n if (sort) g.sort(sort);\n }\n groups.max = max;\n return groups;\n}\nexport { AxisTicks as axisticks, DataJoin as datajoin, Encode as encode, LegendEntries as legendentries, LinkPath as linkpath, Pie as pie, Scale as scale, SortItems as sortitems, Stack as stack };","export default (function (x) {\n return x;\n});","function streamGeometry(geometry, stream) {\n if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n streamGeometryType[geometry.type](geometry, stream);\n }\n}\nvar streamObjectType = {\n Feature: function Feature(object, stream) {\n streamGeometry(object.geometry, stream);\n },\n FeatureCollection: function FeatureCollection(object, stream) {\n var features = object.features,\n i = -1,\n n = features.length;\n while (++i < n) streamGeometry(features[i].geometry, stream);\n }\n};\nvar streamGeometryType = {\n Sphere: function Sphere(object, stream) {\n stream.sphere();\n },\n Point: function Point(object, stream) {\n object = object.coordinates;\n stream.point(object[0], object[1], object[2]);\n },\n MultiPoint: function MultiPoint(object, stream) {\n var coordinates = object.coordinates,\n i = -1,\n n = coordinates.length;\n while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n },\n LineString: function LineString(object, stream) {\n streamLine(object.coordinates, stream, 0);\n },\n MultiLineString: function MultiLineString(object, stream) {\n var coordinates = object.coordinates,\n i = -1,\n n = coordinates.length;\n while (++i < n) streamLine(coordinates[i], stream, 0);\n },\n Polygon: function Polygon(object, stream) {\n streamPolygon(object.coordinates, stream);\n },\n MultiPolygon: function MultiPolygon(object, stream) {\n var coordinates = object.coordinates,\n i = -1,\n n = coordinates.length;\n while (++i < n) streamPolygon(coordinates[i], stream);\n },\n GeometryCollection: function GeometryCollection(object, stream) {\n var geometries = object.geometries,\n i = -1,\n n = geometries.length;\n while (++i < n) streamGeometry(geometries[i], stream);\n }\n};\nfunction streamLine(coordinates, stream, closed) {\n var i = -1,\n n = coordinates.length - closed,\n coordinate;\n stream.lineStart();\n while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n stream.lineEnd();\n}\nfunction streamPolygon(coordinates, stream) {\n var i = -1,\n n = coordinates.length;\n stream.polygonStart();\n while (++i < n) streamLine(coordinates[i], stream, 1);\n stream.polygonEnd();\n}\nexport default function (object, stream) {\n if (object && streamObjectType.hasOwnProperty(object.type)) {\n streamObjectType[object.type](object, stream);\n } else {\n streamGeometry(object, stream);\n }\n}","import _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\n// https://github.com/python/cpython/blob/a74eea238f5baba15797e2e8b570d153bc8690a7/Modules/mathmodule.c#L1423\nexport var Adder = /*#__PURE__*/function () {\n function Adder() {\n _classCallCheck(this, Adder);\n this._partials = new Float64Array(32);\n this._n = 0;\n }\n _createClass(Adder, [{\n key: \"add\",\n value: function add(x) {\n var p = this._partials;\n var i = 0;\n for (var j = 0; j < this._n && j < 32; j++) {\n var y = p[j],\n hi = x + y,\n lo = Math.abs(x) < Math.abs(y) ? x - (hi - y) : y - (hi - x);\n if (lo) p[i++] = lo;\n x = hi;\n }\n p[i] = x;\n this._n = i + 1;\n return this;\n }\n }, {\n key: \"valueOf\",\n value: function valueOf() {\n var p = this._partials;\n var n = this._n,\n x,\n y,\n lo,\n hi = 0;\n if (n > 0) {\n hi = p[--n];\n while (n > 0) {\n x = hi;\n y = p[--n];\n hi = x + y;\n lo = y - (hi - x);\n if (lo) break;\n }\n if (n > 0 && (lo < 0 && p[n - 1] < 0 || lo > 0 && p[n - 1] > 0)) {\n y = lo * 2;\n x = hi + y;\n if (y == x - hi) hi = x;\n }\n }\n return hi;\n }\n }]);\n return Adder;\n}();\nexport function fsum(values, valueof) {\n var adder = new Adder();\n if (valueof === undefined) {\n var _iterator = _createForOfIteratorHelper(values),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var value = _step.value;\n if (value = +value) {\n adder.add(value);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n } else {\n var index = -1;\n var _iterator2 = _createForOfIteratorHelper(values),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _value = _step2.value;\n if (_value = +valueof(_value, ++index, values)) {\n adder.add(_value);\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n return +adder;\n}\nexport function fcumsum(values, valueof) {\n var adder = new Adder();\n var index = -1;\n return Float64Array.from(values, valueof === undefined ? function (v) {\n return adder.add(+v || 0);\n } : function (v) {\n return adder.add(+valueof(v, ++index, values) || 0);\n });\n}","import \"core-js/modules/es.math.hypot.js\";\nexport var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var hypot = Math.hypot;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function (x) {\n return x > 0 ? 1 : x < 0 ? -1 : 0;\n};\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\nexport function asin(x) {\n return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\nexport function haversin(x) {\n return (x = sin(x / 2)) * x;\n}","export default function noop() {}","import { Adder } from \"d3-array\";\nimport { abs } from \"../math.js\";\nimport noop from \"../noop.js\";\nvar areaSum = new Adder(),\n areaRingSum = new Adder(),\n x00,\n y00,\n x0,\n y0;\nvar areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function polygonStart() {\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function polygonEnd() {\n areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n areaSum.add(abs(areaRingSum));\n areaRingSum = new Adder();\n },\n result: function result() {\n var area = areaSum / 2;\n areaSum = new Adder();\n return area;\n }\n};\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\nfunction areaPointFirst(x, y) {\n areaStream.point = areaPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\nfunction areaPoint(x, y) {\n areaRingSum.add(y0 * x - x0 * y);\n x0 = x, y0 = y;\n}\nfunction areaRingEnd() {\n areaPoint(x00, y00);\n}\nexport default areaStream;","import noop from \"../noop.js\";\nvar x0 = Infinity,\n y0 = x0,\n x1 = -x0,\n y1 = x1;\nvar boundsStream = {\n point: boundsPoint,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop,\n result: function result() {\n var bounds = [[x0, y0], [x1, y1]];\n x1 = y1 = -(y0 = x0 = Infinity);\n return bounds;\n }\n};\nfunction boundsPoint(x, y) {\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n}\nexport default boundsStream;","import { sqrt } from \"../math.js\";\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n Y0 = 0,\n Z0 = 0,\n X1 = 0,\n Y1 = 0,\n Z1 = 0,\n X2 = 0,\n Y2 = 0,\n Z2 = 0,\n x00,\n y00,\n x0,\n y0;\nvar centroidStream = {\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function polygonStart() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function polygonEnd() {\n centroidStream.point = centroidPoint;\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n },\n result: function result() {\n var centroid = Z2 ? [X2 / Z2, Y2 / Z2] : Z1 ? [X1 / Z1, Y1 / Z1] : Z0 ? [X0 / Z0, Y0 / Z0] : [NaN, NaN];\n X0 = Y0 = Z0 = X1 = Y1 = Z1 = X2 = Y2 = Z2 = 0;\n return centroid;\n }\n};\nfunction centroidPoint(x, y) {\n X0 += x;\n Y0 += y;\n ++Z0;\n}\nfunction centroidLineStart() {\n centroidStream.point = centroidPointFirstLine;\n}\nfunction centroidPointFirstLine(x, y) {\n centroidStream.point = centroidPointLine;\n centroidPoint(x0 = x, y0 = y);\n}\nfunction centroidPointLine(x, y) {\n var dx = x - x0,\n dy = y - y0,\n z = sqrt(dx * dx + dy * dy);\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n centroidPoint(x0 = x, y0 = y);\n}\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\nfunction centroidRingStart() {\n centroidStream.point = centroidPointFirstRing;\n}\nfunction centroidRingEnd() {\n centroidPointRing(x00, y00);\n}\nfunction centroidPointFirstRing(x, y) {\n centroidStream.point = centroidPointRing;\n centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\nfunction centroidPointRing(x, y) {\n var dx = x - x0,\n dy = y - y0,\n z = sqrt(dx * dx + dy * dy);\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n z = y0 * x - x0 * y;\n X2 += z * (x0 + x);\n Y2 += z * (y0 + y);\n Z2 += z * 3;\n centroidPoint(x0 = x, y0 = y);\n}\nexport default centroidStream;","import { tau } from \"../math.js\";\nimport noop from \"../noop.js\";\nexport default function PathContext(context) {\n this._context = context;\n}\nPathContext.prototype = {\n _radius: 4.5,\n pointRadius: function pointRadius(_) {\n return this._radius = _, this;\n },\n polygonStart: function polygonStart() {\n this._line = 0;\n },\n polygonEnd: function polygonEnd() {\n this._line = NaN;\n },\n lineStart: function lineStart() {\n this._point = 0;\n },\n lineEnd: function lineEnd() {\n if (this._line === 0) this._context.closePath();\n this._point = NaN;\n },\n point: function point(x, y) {\n switch (this._point) {\n case 0:\n {\n this._context.moveTo(x, y);\n this._point = 1;\n break;\n }\n case 1:\n {\n this._context.lineTo(x, y);\n break;\n }\n default:\n {\n this._context.moveTo(x + this._radius, y);\n this._context.arc(x, y, this._radius, 0, tau);\n break;\n }\n }\n },\n result: noop\n};","import { Adder } from \"d3-array\";\nimport { sqrt } from \"../math.js\";\nimport noop from \"../noop.js\";\nvar lengthSum = new Adder(),\n lengthRing,\n x00,\n y00,\n x0,\n y0;\nvar lengthStream = {\n point: noop,\n lineStart: function lineStart() {\n lengthStream.point = lengthPointFirst;\n },\n lineEnd: function lineEnd() {\n if (lengthRing) lengthPoint(x00, y00);\n lengthStream.point = noop;\n },\n polygonStart: function polygonStart() {\n lengthRing = true;\n },\n polygonEnd: function polygonEnd() {\n lengthRing = null;\n },\n result: function result() {\n var length = +lengthSum;\n lengthSum = new Adder();\n return length;\n }\n};\nfunction lengthPointFirst(x, y) {\n lengthStream.point = lengthPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\nfunction lengthPoint(x, y) {\n x0 -= x, y0 -= y;\n lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n x0 = x, y0 = y;\n}\nexport default lengthStream;","import _taggedTemplateLiteral from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nvar _templateObject, _templateObject2, _templateObject3, _templateObject4;\n// Simple caching for constant-radius points.\nvar cacheDigits, cacheAppend, cacheRadius, cacheCircle;\nvar PathString = /*#__PURE__*/function () {\n function PathString(digits) {\n _classCallCheck(this, PathString);\n this._append = digits == null ? append : appendRound(digits);\n this._radius = 4.5;\n this._ = \"\";\n }\n _createClass(PathString, [{\n key: \"pointRadius\",\n value: function pointRadius(_) {\n this._radius = +_;\n return this;\n }\n }, {\n key: \"polygonStart\",\n value: function polygonStart() {\n this._line = 0;\n }\n }, {\n key: \"polygonEnd\",\n value: function polygonEnd() {\n this._line = NaN;\n }\n }, {\n key: \"lineStart\",\n value: function lineStart() {\n this._point = 0;\n }\n }, {\n key: \"lineEnd\",\n value: function lineEnd() {\n if (this._line === 0) this._ += \"Z\";\n this._point = NaN;\n }\n }, {\n key: \"point\",\n value: function point(x, y) {\n switch (this._point) {\n case 0:\n {\n this._append(_templateObject || (_templateObject = _taggedTemplateLiteral([\"M\", \",\", \"\"])), x, y);\n this._point = 1;\n break;\n }\n case 1:\n {\n this._append(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral([\"L\", \",\", \"\"])), x, y);\n break;\n }\n default:\n {\n this._append(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral([\"M\", \",\", \"\"])), x, y);\n if (this._radius !== cacheRadius || this._append !== cacheAppend) {\n var r = this._radius;\n var s = this._;\n this._ = \"\"; // stash the old string so we can cache the circle path fragment\n this._append(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral([\"m0,\", \"a\", \",\", \" 0 1,1 0,\", \"a\", \",\", \" 0 1,1 0,\", \"z\"])), r, r, r, -2 * r, r, r, 2 * r);\n cacheRadius = r;\n cacheAppend = this._append;\n cacheCircle = this._;\n this._ = s;\n }\n this._ += cacheCircle;\n break;\n }\n }\n }\n }, {\n key: \"result\",\n value: function result() {\n var result = this._;\n this._ = \"\";\n return result.length ? result : null;\n }\n }]);\n return PathString;\n}();\nexport { PathString as default };\nfunction append(strings) {\n var i = 1;\n this._ += strings[0];\n for (var j = strings.length; i < j; ++i) {\n this._ += arguments[i] + strings[i];\n }\n}\nfunction appendRound(digits) {\n var d = Math.floor(digits);\n if (!(d >= 0)) throw new RangeError(\"invalid digits: \".concat(digits));\n if (d > 15) return append;\n if (d !== cacheDigits) {\n var k = Math.pow(10, d);\n cacheDigits = d;\n cacheAppend = function append(strings) {\n var i = 1;\n this._ += strings[0];\n for (var j = strings.length; i < j; ++i) {\n this._ += Math.round(arguments[i] * k) / k + strings[i];\n }\n };\n }\n return cacheAppend;\n}","import identity from \"../identity.js\";\nimport stream from \"../stream.js\";\nimport pathArea from \"./area.js\";\nimport pathBounds from \"./bounds.js\";\nimport pathCentroid from \"./centroid.js\";\nimport PathContext from \"./context.js\";\nimport pathMeasure from \"./measure.js\";\nimport PathString from \"./string.js\";\nexport default function (projection, context) {\n var digits = 3,\n pointRadius = 4.5,\n projectionStream,\n contextStream;\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n stream(object, projectionStream(contextStream));\n }\n return contextStream.result();\n }\n path.area = function (object) {\n stream(object, projectionStream(pathArea));\n return pathArea.result();\n };\n path.measure = function (object) {\n stream(object, projectionStream(pathMeasure));\n return pathMeasure.result();\n };\n path.bounds = function (object) {\n stream(object, projectionStream(pathBounds));\n return pathBounds.result();\n };\n path.centroid = function (object) {\n stream(object, projectionStream(pathCentroid));\n return pathCentroid.result();\n };\n path.projection = function (_) {\n if (!arguments.length) return projection;\n projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream;\n return path;\n };\n path.context = function (_) {\n if (!arguments.length) return context;\n contextStream = _ == null ? (context = null, new PathString(digits)) : new PathContext(context = _);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return path;\n };\n path.pointRadius = function (_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n path.digits = function (_) {\n if (!arguments.length) return digits;\n if (_ == null) digits = null;else {\n var d = Math.floor(_);\n if (!(d >= 0)) throw new RangeError(\"invalid digits: \".concat(_));\n digits = d;\n }\n if (context === null) contextStream = new PathString(digits);\n return path;\n };\n return path.projection(projection).digits(digits).context(context);\n}","import noop from \"../noop.js\";\nexport default function () {\n var lines = [],\n line;\n return {\n point: function point(x, y, m) {\n line.push([x, y, m]);\n },\n lineStart: function lineStart() {\n lines.push(line = []);\n },\n lineEnd: noop,\n rejoin: function rejoin() {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n },\n result: function result() {\n var result = lines;\n lines = [];\n line = null;\n return result;\n }\n };\n}","import { abs, epsilon } from \"./math.js\";\nexport default function (a, b) {\n return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;\n}","import pointEqual from \"../pointEqual.js\";\nimport { epsilon } from \"../math.js\";\nfunction Intersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other; // another intersection\n this.e = entry; // is an entry?\n this.v = false; // visited\n this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\nexport default function (segments, compareIntersection, startInside, interpolate, stream) {\n var subject = [],\n clip = [],\n i,\n n;\n segments.forEach(function (segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n,\n p0 = segment[0],\n p1 = segment[n],\n x;\n if (pointEqual(p0, p1)) {\n if (!p0[2] && !p1[2]) {\n stream.lineStart();\n for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n stream.lineEnd();\n return;\n }\n // handle degenerate cases by moving the point\n p1[0] += 2 * epsilon;\n }\n subject.push(x = new Intersection(p0, segment, null, true));\n clip.push(x.o = new Intersection(p0, null, x, false));\n subject.push(x = new Intersection(p1, segment, null, false));\n clip.push(x.o = new Intersection(p1, null, x, true));\n });\n if (!subject.length) return;\n clip.sort(compareIntersection);\n link(subject);\n link(clip);\n for (i = 0, n = clip.length; i < n; ++i) {\n clip[i].e = startInside = !startInside;\n }\n var start = subject[0],\n points,\n point;\n while (1) {\n // Find first unvisited intersection.\n var current = start,\n isSubject = true;\n while (current.v) if ((current = current.n) === start) return;\n points = current.z;\n stream.lineStart();\n do {\n current.v = current.o.v = true;\n if (current.e) {\n if (isSubject) {\n for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.n.x, 1, stream);\n }\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.p.x, -1, stream);\n }\n current = current.p;\n }\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n } while (!current.v);\n stream.lineEnd();\n }\n}\nfunction link(array) {\n if (!(n = array.length)) return;\n var n,\n i = 0,\n a = array[0],\n b;\n while (++i < n) {\n a.n = b = array[i];\n b.p = a;\n a = b;\n }\n a.n = b = array[0];\n b.p = a;\n}","import { asin, atan2, cos, sin, sqrt } from \"./math.js\";\nexport function spherical(cartesian) {\n return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];\n}\nexport function cartesian(spherical) {\n var lambda = spherical[0],\n phi = spherical[1],\n cosPhi = cos(phi);\n return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];\n}\nexport function cartesianDot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\nexport function cartesianCross(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nexport function cartesianAddInPlace(a, b) {\n a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\nexport function cartesianScale(vector, k) {\n return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nexport function cartesianNormalizeInPlace(d) {\n var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l, d[1] /= l, d[2] /= l;\n}","import { Adder } from \"d3-array\";\nimport { cartesian, cartesianCross, cartesianNormalizeInPlace } from \"./cartesian.js\";\nimport { abs, asin, atan2, cos, epsilon, epsilon2, halfPi, pi, quarterPi, sign, sin, tau } from \"./math.js\";\nfunction longitude(point) {\n return abs(point[0]) <= pi ? point[0] : sign(point[0]) * ((abs(point[0]) + pi) % tau - pi);\n}\nexport default function (polygon, point) {\n var lambda = longitude(point),\n phi = point[1],\n sinPhi = sin(phi),\n normal = [sin(lambda), -cos(lambda), 0],\n angle = 0,\n winding = 0;\n var sum = new Adder();\n if (sinPhi === 1) phi = halfPi + epsilon;else if (sinPhi === -1) phi = -halfPi - epsilon;\n for (var i = 0, n = polygon.length; i < n; ++i) {\n if (!(m = (ring = polygon[i]).length)) continue;\n var ring,\n m,\n point0 = ring[m - 1],\n lambda0 = longitude(point0),\n phi0 = point0[1] / 2 + quarterPi,\n sinPhi0 = sin(phi0),\n cosPhi0 = cos(phi0);\n for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n var point1 = ring[j],\n lambda1 = longitude(point1),\n phi1 = point1[1] / 2 + quarterPi,\n sinPhi1 = sin(phi1),\n cosPhi1 = cos(phi1),\n delta = lambda1 - lambda0,\n sign = delta >= 0 ? 1 : -1,\n absDelta = sign * delta,\n antimeridian = absDelta > pi,\n k = sinPhi0 * sinPhi1;\n sum.add(atan2(k * sign * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta)));\n angle += antimeridian ? delta + sign * tau : delta;\n\n // Are the longitudes either side of the point’s meridian (lambda),\n // and are the latitudes smaller than the parallel (phi)?\n if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n var arc = cartesianCross(cartesian(point0), cartesian(point1));\n cartesianNormalizeInPlace(arc);\n var intersection = cartesianCross(normal, arc);\n cartesianNormalizeInPlace(intersection);\n var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);\n if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n winding += antimeridian ^ delta >= 0 ? 1 : -1;\n }\n }\n }\n }\n\n // First, determine whether the South pole is inside or outside:\n //\n // It is inside if:\n // * the polygon winds around it in a clockwise direction.\n // * the polygon does not (cumulatively) wind around it, but has a negative\n // (counter-clockwise) area.\n //\n // Second, count the (signed) number of times a segment crosses a lambda\n // from the point to the South pole. If it is zero, then the point is the\n // same side as the South pole.\n\n return (angle < -epsilon || angle < epsilon && sum < -epsilon2) ^ winding & 1;\n}","import _regeneratorRuntime from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/regenerator/index.js\";\nvar _marked = /*#__PURE__*/_regeneratorRuntime.mark(flatten);\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction flatten(arrays) {\n var _iterator, _step, array;\n return _regeneratorRuntime.wrap(function flatten$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n _iterator = _createForOfIteratorHelper(arrays);\n _context.prev = 1;\n _iterator.s();\n case 3:\n if ((_step = _iterator.n()).done) {\n _context.next = 8;\n break;\n }\n array = _step.value;\n return _context.delegateYield(array, \"t0\", 6);\n case 6:\n _context.next = 3;\n break;\n case 8:\n _context.next = 13;\n break;\n case 10:\n _context.prev = 10;\n _context.t1 = _context[\"catch\"](1);\n _iterator.e(_context.t1);\n case 13:\n _context.prev = 13;\n _iterator.f();\n return _context.finish(13);\n case 16:\n case \"end\":\n return _context.stop();\n }\n }, _marked, null, [[1, 10, 13, 16]]);\n}\nexport default function merge(arrays) {\n return Array.from(flatten(arrays));\n}","import clipBuffer from \"./buffer.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport { epsilon, halfPi } from \"../math.js\";\nimport polygonContains from \"../polygonContains.js\";\nimport { merge } from \"d3-array\";\nexport default function (pointVisible, clipLine, interpolate, start) {\n return function (sink) {\n var line = clipLine(sink),\n ringBuffer = clipBuffer(),\n ringSink = clipLine(ringBuffer),\n polygonStarted = false,\n polygon,\n segments,\n ring;\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function polygonStart() {\n clip.point = pointRing;\n clip.lineStart = ringStart;\n clip.lineEnd = ringEnd;\n segments = [];\n polygon = [];\n },\n polygonEnd: function polygonEnd() {\n clip.point = point;\n clip.lineStart = lineStart;\n clip.lineEnd = lineEnd;\n segments = merge(segments);\n var startInside = polygonContains(polygon, start);\n if (segments.length) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n clipRejoin(segments, compareIntersection, startInside, interpolate, sink);\n } else if (startInside) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n }\n if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n segments = polygon = null;\n },\n sphere: function sphere() {\n sink.polygonStart();\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n sink.polygonEnd();\n }\n };\n function point(lambda, phi) {\n if (pointVisible(lambda, phi)) sink.point(lambda, phi);\n }\n function pointLine(lambda, phi) {\n line.point(lambda, phi);\n }\n function lineStart() {\n clip.point = pointLine;\n line.lineStart();\n }\n function lineEnd() {\n clip.point = point;\n line.lineEnd();\n }\n function pointRing(lambda, phi) {\n ring.push([lambda, phi]);\n ringSink.point(lambda, phi);\n }\n function ringStart() {\n ringSink.lineStart();\n ring = [];\n }\n function ringEnd() {\n pointRing(ring[0][0], ring[0][1]);\n ringSink.lineEnd();\n var clean = ringSink.clean(),\n ringSegments = ringBuffer.result(),\n i,\n n = ringSegments.length,\n m,\n segment,\n point;\n ring.pop();\n polygon.push(ring);\n ring = null;\n if (!n) return;\n\n // No intersections.\n if (clean & 1) {\n segment = ringSegments[0];\n if ((m = segment.length - 1) > 0) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n sink.lineEnd();\n }\n return;\n }\n\n // Rejoin connected segments.\n // TODO reuse ringBuffer.rejoin()?\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n segments.push(ringSegments.filter(validSegment));\n }\n return clip;\n };\n}\nfunction validSegment(segment) {\n return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1]) - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]);\n}","import clip from \"./index.js\";\nimport { abs, atan, cos, epsilon, halfPi, pi, sin } from \"../math.js\";\nexport default clip(function () {\n return true;\n}, clipAntimeridianLine, clipAntimeridianInterpolate, [-pi, -halfPi]);\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n var lambda0 = NaN,\n phi0 = NaN,\n sign0 = NaN,\n _clean; // no intersections\n\n return {\n lineStart: function lineStart() {\n stream.lineStart();\n _clean = 1;\n },\n point: function point(lambda1, phi1) {\n var sign1 = lambda1 > 0 ? pi : -pi,\n delta = abs(lambda1 - lambda0);\n if (abs(delta - pi) < epsilon) {\n // line crosses a pole\n stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n stream.point(lambda1, phi0);\n _clean = 0;\n } else if (sign0 !== sign1 && delta >= pi) {\n // line crosses antimeridian\n if (abs(lambda0 - sign0) < epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies\n if (abs(lambda1 - sign1) < epsilon) lambda1 -= sign1 * epsilon;\n phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n _clean = 0;\n }\n stream.point(lambda0 = lambda1, phi0 = phi1);\n sign0 = sign1;\n },\n lineEnd: function lineEnd() {\n stream.lineEnd();\n lambda0 = phi0 = NaN;\n },\n clean: function clean() {\n return 2 - _clean; // if intersections, rejoin first and last segments\n }\n };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n var cosPhi0,\n cosPhi1,\n sinLambda0Lambda1 = sin(lambda0 - lambda1);\n return abs(sinLambda0Lambda1) > epsilon ? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1) - sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0)) / (cosPhi0 * cosPhi1 * sinLambda0Lambda1)) : (phi0 + phi1) / 2;\n}\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n var phi;\n if (from == null) {\n phi = direction * halfPi;\n stream.point(-pi, phi);\n stream.point(0, phi);\n stream.point(pi, phi);\n stream.point(pi, 0);\n stream.point(pi, -phi);\n stream.point(0, -phi);\n stream.point(-pi, -phi);\n stream.point(-pi, 0);\n stream.point(-pi, phi);\n } else if (abs(from[0] - to[0]) > epsilon) {\n var lambda = from[0] < to[0] ? pi : -pi;\n phi = direction * lambda / 2;\n stream.point(-lambda, phi);\n stream.point(0, phi);\n stream.point(lambda, phi);\n } else {\n stream.point(to[0], to[1]);\n }\n}","import { cartesian, cartesianNormalizeInPlace, spherical } from \"./cartesian.js\";\nimport constant from \"./constant.js\";\nimport { acos, cos, degrees, epsilon, radians, sin, tau } from \"./math.js\";\nimport { rotateRadians } from \"./rotation.js\";\n\n// Generates a circle centered at [0°, 0°], with a given radius and precision.\nexport function circleStream(stream, radius, delta, direction, t0, t1) {\n if (!delta) return;\n var cosRadius = cos(radius),\n sinRadius = sin(radius),\n step = direction * delta;\n if (t0 == null) {\n t0 = radius + direction * tau;\n t1 = radius - step / 2;\n } else {\n t0 = circleRadius(cosRadius, t0);\n t1 = circleRadius(cosRadius, t1);\n if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau;\n }\n for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]);\n stream.point(point[0], point[1]);\n }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n point = cartesian(point), point[0] -= cosRadius;\n cartesianNormalizeInPlace(point);\n var radius = acos(-point[1]);\n return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau;\n}\nexport default function () {\n var center = constant([0, 0]),\n radius = constant(90),\n precision = constant(6),\n ring,\n rotate,\n stream = {\n point: point\n };\n function point(x, y) {\n ring.push(x = rotate(x, y));\n x[0] *= degrees, x[1] *= degrees;\n }\n function circle() {\n var c = center.apply(this, arguments),\n r = radius.apply(this, arguments) * radians,\n p = precision.apply(this, arguments) * radians;\n ring = [];\n rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;\n circleStream(stream, r, p, 1);\n c = {\n type: \"Polygon\",\n coordinates: [ring]\n };\n ring = rotate = null;\n return c;\n }\n circle.center = function (_) {\n return arguments.length ? (center = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), circle) : center;\n };\n circle.radius = function (_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), circle) : radius;\n };\n circle.precision = function (_) {\n return arguments.length ? (precision = typeof _ === \"function\" ? _ : constant(+_), circle) : precision;\n };\n return circle;\n}","import { abs, epsilon } from \"../math.js\";\nimport clipBuffer from \"./buffer.js\";\nimport clipLine from \"./line.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport { merge } from \"d3-array\";\nvar clipMax = 1e9,\n clipMin = -clipMax;\n\n// TODO Use d3-polygon’s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nexport default function clipRectangle(x0, y0, x1, y1) {\n function visible(x, y) {\n return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n }\n function interpolate(from, to, direction, stream) {\n var a = 0,\n a1 = 0;\n if (from == null || (a = corner(from, direction)) !== (a1 = corner(to, direction)) || comparePoint(from, to) < 0 ^ direction > 0) {\n do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0); while ((a = (a + direction + 4) % 4) !== a1);\n } else {\n stream.point(to[0], to[1]);\n }\n }\n function corner(p, direction) {\n return abs(p[0] - x0) < epsilon ? direction > 0 ? 0 : 3 : abs(p[0] - x1) < epsilon ? direction > 0 ? 2 : 1 : abs(p[1] - y0) < epsilon ? direction > 0 ? 1 : 0 : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n }\n\n function compareIntersection(a, b) {\n return comparePoint(a.x, b.x);\n }\n function comparePoint(a, b) {\n var ca = corner(a, 1),\n cb = corner(b, 1);\n return ca !== cb ? ca - cb : ca === 0 ? b[1] - a[1] : ca === 1 ? a[0] - b[0] : ca === 2 ? a[1] - b[1] : b[0] - a[0];\n }\n return function (stream) {\n var activeStream = stream,\n bufferStream = clipBuffer(),\n segments,\n polygon,\n ring,\n x__,\n y__,\n v__,\n // first point\n x_,\n y_,\n v_,\n // previous point\n first,\n clean;\n var clipStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: polygonStart,\n polygonEnd: polygonEnd\n };\n function point(x, y) {\n if (visible(x, y)) activeStream.point(x, y);\n }\n function polygonInside() {\n var winding = 0;\n for (var i = 0, n = polygon.length; i < n; ++i) {\n for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n if (a1 <= y1) {\n if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding;\n } else {\n if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding;\n }\n }\n }\n return winding;\n }\n\n // Buffer geometry within a polygon and then clip it en masse.\n function polygonStart() {\n activeStream = bufferStream, segments = [], polygon = [], clean = true;\n }\n function polygonEnd() {\n var startInside = polygonInside(),\n cleanInside = clean && startInside,\n visible = (segments = merge(segments)).length;\n if (cleanInside || visible) {\n stream.polygonStart();\n if (cleanInside) {\n stream.lineStart();\n interpolate(null, null, 1, stream);\n stream.lineEnd();\n }\n if (visible) {\n clipRejoin(segments, compareIntersection, startInside, interpolate, stream);\n }\n stream.polygonEnd();\n }\n activeStream = stream, segments = polygon = ring = null;\n }\n function lineStart() {\n clipStream.point = linePoint;\n if (polygon) polygon.push(ring = []);\n first = true;\n v_ = false;\n x_ = y_ = NaN;\n }\n\n // TODO rather than special-case polygons, simply handle them separately.\n // Ideally, coincident intersection points should be jittered to avoid\n // clipping issues.\n function lineEnd() {\n if (segments) {\n linePoint(x__, y__);\n if (v__ && v_) bufferStream.rejoin();\n segments.push(bufferStream.result());\n }\n clipStream.point = point;\n if (v_) activeStream.lineEnd();\n }\n function linePoint(x, y) {\n var v = visible(x, y);\n if (polygon) ring.push([x, y]);\n if (first) {\n x__ = x, y__ = y, v__ = v;\n first = false;\n if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n }\n } else {\n if (v && v_) activeStream.point(x, y);else {\n var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n if (clipLine(a, b, x0, y0, x1, y1)) {\n if (!v_) {\n activeStream.lineStart();\n activeStream.point(a[0], a[1]);\n }\n activeStream.point(b[0], b[1]);\n if (!v) activeStream.lineEnd();\n clean = false;\n } else if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n clean = false;\n }\n }\n }\n x_ = x, y_ = y, v_ = v;\n }\n return clipStream;\n };\n}","export default function (a, b, x0, y0, x1, y1) {\n var ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n return true;\n}","export default function (a, b) {\n function compose(x, y) {\n return x = a(x, y), b(x[0], x[1]);\n }\n if (a.invert && b.invert) compose.invert = function (x, y) {\n return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n };\n return compose;\n}","import compose from \"./compose.js\";\nimport { abs, asin, atan2, cos, degrees, pi, radians, sin, tau } from \"./math.js\";\nfunction rotationIdentity(lambda, phi) {\n if (abs(lambda) > pi) lambda -= Math.round(lambda / tau) * tau;\n return [lambda, phi];\n}\nrotationIdentity.invert = rotationIdentity;\nexport function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n return (deltaLambda %= tau) ? deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma)) : rotationLambda(deltaLambda) : deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma) : rotationIdentity;\n}\nfunction forwardRotationLambda(deltaLambda) {\n return function (lambda, phi) {\n lambda += deltaLambda;\n if (abs(lambda) > pi) lambda -= Math.round(lambda / tau) * tau;\n return [lambda, phi];\n };\n}\nfunction rotationLambda(deltaLambda) {\n var rotation = forwardRotationLambda(deltaLambda);\n rotation.invert = forwardRotationLambda(-deltaLambda);\n return rotation;\n}\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n var cosDeltaPhi = cos(deltaPhi),\n sinDeltaPhi = sin(deltaPhi),\n cosDeltaGamma = cos(deltaGamma),\n sinDeltaGamma = sin(deltaGamma);\n function rotation(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaPhi + x * sinDeltaPhi;\n return [atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi), asin(k * cosDeltaGamma + y * sinDeltaGamma)];\n }\n rotation.invert = function (lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaGamma - y * sinDeltaGamma;\n return [atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi), asin(k * cosDeltaPhi - x * sinDeltaPhi)];\n };\n return rotation;\n}\nexport default function (rotate) {\n rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);\n function forward(coordinates) {\n coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n }\n forward.invert = function (coordinates) {\n coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n };\n return forward;\n}","export default function (methods) {\n return {\n stream: transformer(methods)\n };\n}\nexport function transformer(methods) {\n return function (stream) {\n var s = new TransformStream();\n for (var key in methods) s[key] = methods[key];\n s.stream = stream;\n return s;\n };\n}\nfunction TransformStream() {}\nTransformStream.prototype = {\n constructor: TransformStream,\n point: function point(x, y) {\n this.stream.point(x, y);\n },\n sphere: function sphere() {\n this.stream.sphere();\n },\n lineStart: function lineStart() {\n this.stream.lineStart();\n },\n lineEnd: function lineEnd() {\n this.stream.lineEnd();\n },\n polygonStart: function polygonStart() {\n this.stream.polygonStart();\n },\n polygonEnd: function polygonEnd() {\n this.stream.polygonEnd();\n }\n};","import { default as geoStream } from \"../stream.js\";\nimport boundsStream from \"../path/bounds.js\";\nfunction fit(projection, fitBounds, object) {\n var clip = projection.clipExtent && projection.clipExtent();\n projection.scale(150).translate([0, 0]);\n if (clip != null) projection.clipExtent(null);\n geoStream(object, projection.stream(boundsStream));\n fitBounds(boundsStream.result());\n if (clip != null) projection.clipExtent(clip);\n return projection;\n}\nexport function fitExtent(projection, extent, object) {\n return fit(projection, function (b) {\n var w = extent[1][0] - extent[0][0],\n h = extent[1][1] - extent[0][1],\n k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\nexport function fitSize(projection, size, object) {\n return fitExtent(projection, [[0, 0], size], object);\n}\nexport function fitWidth(projection, width, object) {\n return fit(projection, function (b) {\n var w = +width,\n k = w / (b[1][0] - b[0][0]),\n x = (w - k * (b[1][0] + b[0][0])) / 2,\n y = -k * b[0][1];\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\nexport function fitHeight(projection, height, object) {\n return fit(projection, function (b) {\n var h = +height,\n k = h / (b[1][1] - b[0][1]),\n x = -k * b[0][0],\n y = (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}","import { cartesian } from \"../cartesian.js\";\nimport { abs, asin, atan2, cos, epsilon, radians, sqrt } from \"../math.js\";\nimport { transformer } from \"../transform.js\";\nvar maxDepth = 16,\n // maximum depth of subdivision\n cosMinDistance = cos(30 * radians); // cos(minimum angular distance)\n\nexport default function (project, delta2) {\n return +delta2 ? resample(project, delta2) : resampleNone(project);\n}\nfunction resampleNone(project) {\n return transformer({\n point: function point(x, y) {\n x = project(x, y);\n this.stream.point(x[0], x[1]);\n }\n });\n}\nfunction resample(project, delta2) {\n function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n var dx = x1 - x0,\n dy = y1 - y0,\n d2 = dx * dx + dy * dy;\n if (d2 > 4 * delta2 && depth--) {\n var a = a0 + a1,\n b = b0 + b1,\n c = c0 + c1,\n m = sqrt(a * a + b * b + c * c),\n phi2 = asin(c /= m),\n lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a),\n p = project(lambda2, phi2),\n x2 = p[0],\n y2 = p[1],\n dx2 = x2 - x0,\n dy2 = y2 - y0,\n dz = dy * dx2 - dx * dy2;\n if (dz * dz / d2 > delta2 // perpendicular projected distance\n || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) {\n // angular distance\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n stream.point(x2, y2);\n resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n }\n }\n }\n return function (stream) {\n var lambda00, x00, y00, a00, b00, c00,\n // first point\n lambda0, x0, y0, a0, b0, c0; // previous point\n\n var resampleStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function polygonStart() {\n stream.polygonStart();\n resampleStream.lineStart = ringStart;\n },\n polygonEnd: function polygonEnd() {\n stream.polygonEnd();\n resampleStream.lineStart = lineStart;\n }\n };\n function point(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n }\n function lineStart() {\n x0 = NaN;\n resampleStream.point = linePoint;\n stream.lineStart();\n }\n function linePoint(lambda, phi) {\n var c = cartesian([lambda, phi]),\n p = project(lambda, phi);\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n stream.point(x0, y0);\n }\n function lineEnd() {\n resampleStream.point = point;\n stream.lineEnd();\n }\n function ringStart() {\n lineStart();\n resampleStream.point = ringPoint;\n resampleStream.lineEnd = ringEnd;\n }\n function ringPoint(lambda, phi) {\n linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n resampleStream.point = linePoint;\n }\n function ringEnd() {\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n resampleStream.lineEnd = lineEnd;\n lineEnd();\n }\n return resampleStream;\n };\n}","import clipAntimeridian from \"../clip/antimeridian.js\";\nimport clipCircle from \"../clip/circle.js\";\nimport clipRectangle from \"../clip/rectangle.js\";\nimport compose from \"../compose.js\";\nimport identity from \"../identity.js\";\nimport { cos, degrees, radians, sin, sqrt } from \"../math.js\";\nimport { rotateRadians } from \"../rotation.js\";\nimport { transformer } from \"../transform.js\";\nimport { fitExtent, fitSize, fitWidth, fitHeight } from \"./fit.js\";\nimport resample from \"./resample.js\";\nvar transformRadians = transformer({\n point: function point(x, y) {\n this.stream.point(x * radians, y * radians);\n }\n});\nfunction transformRotate(rotate) {\n return transformer({\n point: function point(x, y) {\n var r = rotate(x, y);\n return this.stream.point(r[0], r[1]);\n }\n });\n}\nfunction scaleTranslate(k, dx, dy, sx, sy) {\n function transform(x, y) {\n x *= sx;\n y *= sy;\n return [dx + k * x, dy - k * y];\n }\n transform.invert = function (x, y) {\n return [(x - dx) / k * sx, (dy - y) / k * sy];\n };\n return transform;\n}\nfunction scaleTranslateRotate(k, dx, dy, sx, sy, alpha) {\n if (!alpha) return scaleTranslate(k, dx, dy, sx, sy);\n var cosAlpha = cos(alpha),\n sinAlpha = sin(alpha),\n a = cosAlpha * k,\n b = sinAlpha * k,\n ai = cosAlpha / k,\n bi = sinAlpha / k,\n ci = (sinAlpha * dy - cosAlpha * dx) / k,\n fi = (sinAlpha * dx + cosAlpha * dy) / k;\n function transform(x, y) {\n x *= sx;\n y *= sy;\n return [a * x - b * y + dx, dy - b * x - a * y];\n }\n transform.invert = function (x, y) {\n return [sx * (ai * x - bi * y + ci), sy * (fi - bi * x - ai * y)];\n };\n return transform;\n}\nexport default function projection(project) {\n return projectionMutator(function () {\n return project;\n })();\n}\nexport function projectionMutator(projectAt) {\n var project,\n k = 150,\n // scale\n x = 480,\n y = 250,\n // translate\n lambda = 0,\n phi = 0,\n // center\n deltaLambda = 0,\n deltaPhi = 0,\n deltaGamma = 0,\n rotate,\n // pre-rotate\n alpha = 0,\n // post-rotate angle\n sx = 1,\n // reflectX\n sy = 1,\n // reflectX\n theta = null,\n preclip = clipAntimeridian,\n // pre-clip angle\n x0 = null,\n y0,\n x1,\n y1,\n postclip = identity,\n // post-clip extent\n delta2 = 0.5,\n // precision\n projectResample,\n projectTransform,\n projectRotateTransform,\n cache,\n cacheStream;\n function projection(point) {\n return projectRotateTransform(point[0] * radians, point[1] * radians);\n }\n function invert(point) {\n point = projectRotateTransform.invert(point[0], point[1]);\n return point && [point[0] * degrees, point[1] * degrees];\n }\n projection.stream = function (stream) {\n return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream)))));\n };\n projection.preclip = function (_) {\n return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip;\n };\n projection.postclip = function (_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n };\n projection.clipAngle = function (_) {\n return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees;\n };\n projection.clipExtent = function (_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n projection.scale = function (_) {\n return arguments.length ? (k = +_, recenter()) : k;\n };\n projection.translate = function (_) {\n return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n };\n projection.center = function (_) {\n return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];\n };\n projection.rotate = function (_) {\n return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];\n };\n projection.angle = function (_) {\n return arguments.length ? (alpha = _ % 360 * radians, recenter()) : alpha * degrees;\n };\n projection.reflectX = function (_) {\n return arguments.length ? (sx = _ ? -1 : 1, recenter()) : sx < 0;\n };\n projection.reflectY = function (_) {\n return arguments.length ? (sy = _ ? -1 : 1, recenter()) : sy < 0;\n };\n projection.precision = function (_) {\n return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);\n };\n projection.fitExtent = function (extent, object) {\n return fitExtent(projection, extent, object);\n };\n projection.fitSize = function (size, object) {\n return fitSize(projection, size, object);\n };\n projection.fitWidth = function (width, object) {\n return fitWidth(projection, width, object);\n };\n projection.fitHeight = function (height, object) {\n return fitHeight(projection, height, object);\n };\n function recenter() {\n var center = scaleTranslateRotate(k, 0, 0, sx, sy, alpha).apply(null, project(lambda, phi)),\n transform = scaleTranslateRotate(k, x - center[0], y - center[1], sx, sy, alpha);\n rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma);\n projectTransform = compose(project, transform);\n projectRotateTransform = compose(rotate, projectTransform);\n projectResample = resample(projectTransform, delta2);\n return reset();\n }\n function reset() {\n cache = cacheStream = null;\n return projection;\n }\n return function () {\n project = projectAt.apply(this, arguments);\n projection.invert = project.invert && invert;\n return recenter();\n };\n}","import { cartesian, cartesianAddInPlace, cartesianCross, cartesianDot, cartesianScale, spherical } from \"../cartesian.js\";\nimport { circleStream } from \"../circle.js\";\nimport { abs, cos, epsilon, pi, radians, sqrt } from \"../math.js\";\nimport pointEqual from \"../pointEqual.js\";\nimport clip from \"./index.js\";\nexport default function (radius) {\n var cr = cos(radius),\n delta = 6 * radians,\n smallRadius = cr > 0,\n notHemisphere = abs(cr) > epsilon; // TODO optimise for this common case\n\n function interpolate(from, to, direction, stream) {\n circleStream(stream, radius, delta, direction, from, to);\n }\n function visible(lambda, phi) {\n return cos(lambda) * cos(phi) > cr;\n }\n\n // Takes a line and cuts into visible segments. Return values used for polygon\n // clipping: 0 - there were intersections or the line was empty; 1 - no\n // intersections 2 - there were intersections, and the first and last segments\n // should be rejoined.\n function clipLine(stream) {\n var point0,\n // previous point\n c0,\n // code for previous point\n v0,\n // visibility of previous point\n v00,\n // visibility of first point\n _clean; // no intersections\n return {\n lineStart: function lineStart() {\n v00 = v0 = false;\n _clean = 1;\n },\n point: function point(lambda, phi) {\n var point1 = [lambda, phi],\n point2,\n v = visible(lambda, phi),\n c = smallRadius ? v ? 0 : code(lambda, phi) : v ? code(lambda + (lambda < 0 ? pi : -pi), phi) : 0;\n if (!point0 && (v00 = v0 = v)) stream.lineStart();\n if (v !== v0) {\n point2 = intersect(point0, point1);\n if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2)) point1[2] = 1;\n }\n if (v !== v0) {\n _clean = 0;\n if (v) {\n // outside going in\n stream.lineStart();\n point2 = intersect(point1, point0);\n stream.point(point2[0], point2[1]);\n } else {\n // inside going out\n point2 = intersect(point0, point1);\n stream.point(point2[0], point2[1], 2);\n stream.lineEnd();\n }\n point0 = point2;\n } else if (notHemisphere && point0 && smallRadius ^ v) {\n var t;\n // If the codes for two points are different, or are both zero,\n // and there this segment intersects with the small circle.\n if (!(c & c0) && (t = intersect(point1, point0, true))) {\n _clean = 0;\n if (smallRadius) {\n stream.lineStart();\n stream.point(t[0][0], t[0][1]);\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n } else {\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n stream.lineStart();\n stream.point(t[0][0], t[0][1], 3);\n }\n }\n }\n if (v && (!point0 || !pointEqual(point0, point1))) {\n stream.point(point1[0], point1[1]);\n }\n point0 = point1, v0 = v, c0 = c;\n },\n lineEnd: function lineEnd() {\n if (v0) stream.lineEnd();\n point0 = null;\n },\n // Rejoin first and last segments if there were intersections and the first\n // and last points were visible.\n clean: function clean() {\n return _clean | (v00 && v0) << 1;\n }\n };\n }\n\n // Intersects the great circle between a and b with the clip circle.\n function intersect(a, b, two) {\n var pa = cartesian(a),\n pb = cartesian(b);\n\n // We have two planes, n1.p = d1 and n2.p = d2.\n // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).\n var n1 = [1, 0, 0],\n // normal\n n2 = cartesianCross(pa, pb),\n n2n2 = cartesianDot(n2, n2),\n n1n2 = n2[0],\n // cartesianDot(n1, n2),\n determinant = n2n2 - n1n2 * n1n2;\n\n // Two polar points.\n if (!determinant) return !two && a;\n var c1 = cr * n2n2 / determinant,\n c2 = -cr * n1n2 / determinant,\n n1xn2 = cartesianCross(n1, n2),\n A = cartesianScale(n1, c1),\n B = cartesianScale(n2, c2);\n cartesianAddInPlace(A, B);\n\n // Solve |p(t)|^2 = 1.\n var u = n1xn2,\n w = cartesianDot(A, u),\n uu = cartesianDot(u, u),\n t2 = w * w - uu * (cartesianDot(A, A) - 1);\n if (t2 < 0) return;\n var t = sqrt(t2),\n q = cartesianScale(u, (-w - t) / uu);\n cartesianAddInPlace(q, A);\n q = spherical(q);\n if (!two) return q;\n\n // Two intersection points.\n var lambda0 = a[0],\n lambda1 = b[0],\n phi0 = a[1],\n phi1 = b[1],\n z;\n if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n var delta = lambda1 - lambda0,\n polar = abs(delta - pi) < epsilon,\n meridian = polar || delta < epsilon;\n if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n // Check that the first point is between a and b.\n if (meridian ? polar ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon ? phi0 : phi1) : phi0 <= q[1] && q[1] <= phi1 : delta > pi ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n var q1 = cartesianScale(u, (-w + t) / uu);\n cartesianAddInPlace(q1, A);\n return [q, spherical(q1)];\n }\n }\n\n // Generates a 4-bit vector representing the location of a point relative to\n // the small circle's bounding box.\n function code(lambda, phi) {\n var r = smallRadius ? radius : pi - radius,\n code = 0;\n if (lambda < -r) code |= 1; // left\n else if (lambda > r) code |= 2; // right\n if (phi < -r) code |= 4; // below\n else if (phi > r) code |= 8; // above\n return code;\n }\n return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi, radius - pi]);\n}","import { degrees, pi, radians } from \"../math.js\";\nimport { projectionMutator } from \"./index.js\";\nexport function conicProjection(projectAt) {\n var phi0 = 0,\n phi1 = pi / 3,\n m = projectionMutator(projectAt),\n p = m(phi0, phi1);\n p.parallels = function (_) {\n return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees, phi1 * degrees];\n };\n return p;\n}","import { abs, asin, atan2, cos, epsilon, pi, sign, sin, sqrt } from \"../math.js\";\nimport { conicProjection } from \"./conic.js\";\nimport { cylindricalEqualAreaRaw } from \"./cylindricalEqualArea.js\";\nexport function conicEqualAreaRaw(y0, y1) {\n var sy0 = sin(y0),\n n = (sy0 + sin(y1)) / 2;\n\n // Are the parallels symmetrical around the Equator?\n if (abs(n) < epsilon) return cylindricalEqualAreaRaw(y0);\n var c = 1 + sy0 * (2 * n - sy0),\n r0 = sqrt(c) / n;\n function project(x, y) {\n var r = sqrt(c - 2 * n * sin(y)) / n;\n return [r * sin(x *= n), r0 - r * cos(x)];\n }\n project.invert = function (x, y) {\n var r0y = r0 - y,\n l = atan2(x, abs(r0y)) * sign(r0y);\n if (r0y * n < 0) l -= pi * sign(x) * sign(r0y);\n return [l / n, asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))];\n };\n return project;\n}\nexport default function () {\n return conicProjection(conicEqualAreaRaw).scale(155.424).center([0, 33.6442]);\n}","import { asin, cos, sin } from \"../math.js\";\nexport function cylindricalEqualAreaRaw(phi0) {\n var cosPhi0 = cos(phi0);\n function forward(lambda, phi) {\n return [lambda * cosPhi0, sin(phi) / cosPhi0];\n }\n forward.invert = function (x, y) {\n return [x / cosPhi0, asin(y * cosPhi0)];\n };\n return forward;\n}","import conicEqualArea from \"./conicEqualArea.js\";\nexport default function () {\n return conicEqualArea().parallels([29.5, 45.5]).scale(1070).translate([480, 250]).rotate([96, 0]).center([-0.6, 38.7]);\n}","import { asin, atan2, cos, sin, sqrt } from \"../math.js\";\nexport function azimuthalRaw(scale) {\n return function (x, y) {\n var cx = cos(x),\n cy = cos(y),\n k = scale(cx * cy);\n if (k === Infinity) return [2, 0];\n return [k * cy * sin(x), k * sin(y)];\n };\n}\nexport function azimuthalInvert(angle) {\n return function (x, y) {\n var z = sqrt(x * x + y * y),\n c = angle(z),\n sc = sin(c),\n cc = cos(c);\n return [atan2(x * sc, z * cc), asin(z && y * sc / z)];\n };\n}","import { asin, sqrt } from \"../math.js\";\nimport { azimuthalRaw, azimuthalInvert } from \"./azimuthal.js\";\nimport projection from \"./index.js\";\nexport var azimuthalEqualAreaRaw = azimuthalRaw(function (cxcy) {\n return sqrt(2 / (1 + cxcy));\n});\nazimuthalEqualAreaRaw.invert = azimuthalInvert(function (z) {\n return 2 * asin(z / 2);\n});\nexport default function () {\n return projection(azimuthalEqualAreaRaw).scale(124.75).clipAngle(180 - 1e-3);\n}","import { acos, sin } from \"../math.js\";\nimport { azimuthalRaw, azimuthalInvert } from \"./azimuthal.js\";\nimport projection from \"./index.js\";\nexport var azimuthalEquidistantRaw = azimuthalRaw(function (c) {\n return (c = acos(c)) && c / sin(c);\n});\nazimuthalEquidistantRaw.invert = azimuthalInvert(function (z) {\n return z;\n});\nexport default function () {\n return projection(azimuthalEquidistantRaw).scale(79.4188).clipAngle(180 - 1e-3);\n}","import { atan, exp, halfPi, log, pi, tan, tau } from \"../math.js\";\nimport rotation from \"../rotation.js\";\nimport projection from \"./index.js\";\nexport function mercatorRaw(lambda, phi) {\n return [lambda, log(tan((halfPi + phi) / 2))];\n}\nmercatorRaw.invert = function (x, y) {\n return [x, 2 * atan(exp(y)) - halfPi];\n};\nexport default function () {\n return mercatorProjection(mercatorRaw).scale(961 / tau);\n}\nexport function mercatorProjection(project) {\n var m = projection(project),\n center = m.center,\n scale = m.scale,\n translate = m.translate,\n clipExtent = m.clipExtent,\n x0 = null,\n y0,\n x1,\n y1; // clip extent\n\n m.scale = function (_) {\n return arguments.length ? (scale(_), reclip()) : scale();\n };\n m.translate = function (_) {\n return arguments.length ? (translate(_), reclip()) : translate();\n };\n m.center = function (_) {\n return arguments.length ? (center(_), reclip()) : center();\n };\n m.clipExtent = function (_) {\n return arguments.length ? (_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n function reclip() {\n var k = pi * scale(),\n t = m(rotation(m.rotate()).invert([0, 0]));\n return clipExtent(x0 == null ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]] : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);\n }\n return reclip();\n}","import { abs, atan, atan2, cos, epsilon, halfPi, log, pi, pow, sign, sin, sqrt, tan } from \"../math.js\";\nimport { conicProjection } from \"./conic.js\";\nimport { mercatorRaw } from \"./mercator.js\";\nfunction tany(y) {\n return tan((halfPi + y) / 2);\n}\nexport function conicConformalRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : log(cy0 / cos(y1)) / log(tany(y1) / tany(y0)),\n f = cy0 * pow(tany(y0), n) / n;\n if (!n) return mercatorRaw;\n function project(x, y) {\n if (f > 0) {\n if (y < -halfPi + epsilon) y = -halfPi + epsilon;\n } else {\n if (y > halfPi - epsilon) y = halfPi - epsilon;\n }\n var r = f / pow(tany(y), n);\n return [r * sin(n * x), f - r * cos(n * x)];\n }\n project.invert = function (x, y) {\n var fy = f - y,\n r = sign(n) * sqrt(x * x + fy * fy),\n l = atan2(x, abs(fy)) * sign(fy);\n if (fy * n < 0) l -= pi * sign(x) * sign(fy);\n return [l / n, 2 * atan(pow(f / r, 1 / n)) - halfPi];\n };\n return project;\n}\nexport default function () {\n return conicProjection(conicConformalRaw).scale(109.5).parallels([30, 30]);\n}","import projection from \"./index.js\";\nexport function equirectangularRaw(lambda, phi) {\n return [lambda, phi];\n}\nequirectangularRaw.invert = equirectangularRaw;\nexport default function () {\n return projection(equirectangularRaw).scale(152.63);\n}","import { abs, atan2, cos, epsilon, pi, sign, sin, sqrt } from \"../math.js\";\nimport { conicProjection } from \"./conic.js\";\nimport { equirectangularRaw } from \"./equirectangular.js\";\nexport function conicEquidistantRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : (cy0 - cos(y1)) / (y1 - y0),\n g = cy0 / n + y0;\n if (abs(n) < epsilon) return equirectangularRaw;\n function project(x, y) {\n var gy = g - y,\n nx = n * x;\n return [gy * sin(nx), g - gy * cos(nx)];\n }\n project.invert = function (x, y) {\n var gy = g - y,\n l = atan2(x, abs(gy)) * sign(gy);\n if (gy * n < 0) l -= pi * sign(x) * sign(gy);\n return [l / n, g - sign(n) * sqrt(x * x + gy * gy)];\n };\n return project;\n}\nexport default function () {\n return conicProjection(conicEquidistantRaw).scale(131.154).center([0, 13.9389]);\n}","import projection from \"./index.js\";\nimport { abs, asin, cos, epsilon2, sin, sqrt } from \"../math.js\";\nvar A1 = 1.340264,\n A2 = -0.081106,\n A3 = 0.000893,\n A4 = 0.003796,\n M = sqrt(3) / 2,\n iterations = 12;\nexport function equalEarthRaw(lambda, phi) {\n var l = asin(M * sin(phi)),\n l2 = l * l,\n l6 = l2 * l2 * l2;\n return [lambda * cos(l) / (M * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))), l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2))];\n}\nequalEarthRaw.invert = function (x, y) {\n var l = y,\n l2 = l * l,\n l6 = l2 * l2 * l2;\n for (var i = 0, delta, fy, fpy; i < iterations; ++i) {\n fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y;\n fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2);\n l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2;\n if (abs(delta) < epsilon2) break;\n }\n return [M * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / cos(l), asin(sin(l) / M)];\n};\nexport default function () {\n return projection(equalEarthRaw).scale(177.158);\n}","import { atan, cos, sin } from \"../math.js\";\nimport { azimuthalInvert } from \"./azimuthal.js\";\nimport projection from \"./index.js\";\nexport function gnomonicRaw(x, y) {\n var cy = cos(y),\n k = cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\ngnomonicRaw.invert = azimuthalInvert(atan);\nexport default function () {\n return projection(gnomonicRaw).scale(144.049).clipAngle(60);\n}","import projection from \"./index.js\";\nimport { abs, epsilon } from \"../math.js\";\nexport function naturalEarth1Raw(lambda, phi) {\n var phi2 = phi * phi,\n phi4 = phi2 * phi2;\n return [lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))), phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))];\n}\nnaturalEarth1Raw.invert = function (x, y) {\n var phi = y,\n i = 25,\n delta;\n do {\n var phi2 = phi * phi,\n phi4 = phi2 * phi2;\n phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) / (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));\n } while (abs(delta) > epsilon && --i > 0);\n return [x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))), phi];\n};\nexport default function () {\n return projection(naturalEarth1Raw).scale(175.295);\n}","import { asin, cos, epsilon, sin } from \"../math.js\";\nimport { azimuthalInvert } from \"./azimuthal.js\";\nimport projection from \"./index.js\";\nexport function orthographicRaw(x, y) {\n return [cos(y) * sin(x), sin(y)];\n}\northographicRaw.invert = azimuthalInvert(asin);\nexport default function () {\n return projection(orthographicRaw).scale(249.5).clipAngle(90 + epsilon);\n}","import { atan, cos, sin } from \"../math.js\";\nimport { azimuthalInvert } from \"./azimuthal.js\";\nimport projection from \"./index.js\";\nexport function stereographicRaw(x, y) {\n var cy = cos(y),\n k = 1 + cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\nstereographicRaw.invert = azimuthalInvert(function (z) {\n return 2 * atan(z);\n});\nexport default function () {\n return projection(stereographicRaw).scale(250).clipAngle(142);\n}","import { atan, exp, halfPi, log, tan } from \"../math.js\";\nimport { mercatorProjection } from \"./mercator.js\";\nexport function transverseMercatorRaw(lambda, phi) {\n return [log(tan((halfPi + phi) / 2)), -lambda];\n}\ntransverseMercatorRaw.invert = function (x, y) {\n return [-y, 2 * atan(exp(x)) - halfPi];\n};\nexport default function () {\n var m = mercatorProjection(transverseMercatorRaw),\n center = m.center,\n rotate = m.rotate;\n m.center = function (_) {\n return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);\n };\n m.rotate = function (_) {\n return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);\n };\n return rotate([0, 0, 90]).scale(159.155);\n}","export var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var ceil = Math.ceil;\nexport var cos = Math.cos;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var log = Math.log;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var pow = Math.pow;\nexport var round = Math.round;\nexport var sign = Math.sign || function (x) {\n return x > 0 ? 1 : x < 0 ? -1 : 0;\n};\nexport var sin = Math.sin;\nexport var tan = Math.tan;\nexport var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var sqrt1_2 = Math.SQRT1_2;\nexport var sqrt2 = sqrt(2);\nexport var sqrtPi = sqrt(pi);\nexport var tau = pi * 2;\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\nexport function sinci(x) {\n return x ? x / Math.sin(x) : 1;\n}\nexport function asin(x) {\n return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\nexport function sqrt(x) {\n return x > 0 ? Math.sqrt(x) : 0;\n}\nexport function tanh(x) {\n x = exp(2 * x);\n return (x - 1) / (x + 1);\n}\nexport function sinh(x) {\n return (exp(x) - exp(-x)) / 2;\n}\nexport function cosh(x) {\n return (exp(x) + exp(-x)) / 2;\n}\nexport function arsinh(x) {\n return log(x + sqrt(x * x + 1));\n}\nexport function arcosh(x) {\n return log(x + sqrt(x * x - 1));\n}","import { geoProjection as projection } from \"d3-geo\";\nimport { abs, asin, cos, epsilon, halfPi, pi, sin, sqrt2 } from \"./math.js\";\nexport function mollweideBromleyTheta(cp, phi) {\n var cpsinPhi = cp * sin(phi),\n i = 30,\n delta;\n do phi -= delta = (phi + sin(phi) - cpsinPhi) / (1 + cos(phi)); while (abs(delta) > epsilon && --i > 0);\n return phi / 2;\n}\nexport function mollweideBromleyRaw(cx, cy, cp) {\n function forward(lambda, phi) {\n return [cx * lambda * cos(phi = mollweideBromleyTheta(cp, phi)), cy * sin(phi)];\n }\n forward.invert = function (x, y) {\n return y = asin(y / cy), [x / (cx * cos(y)), asin((2 * y + sin(2 * y)) / cp)];\n };\n return forward;\n}\nexport var mollweideRaw = mollweideBromleyRaw(sqrt2 / halfPi, sqrt2, pi);\nexport default function () {\n return projection(mollweideRaw).scale(169.529);\n}","import { geoPath, geoAlbers, geoAlbersUsa, geoAzimuthalEqualArea, geoAzimuthalEquidistant, geoConicConformal, geoConicEqualArea, geoConicEquidistant, geoEqualEarth, geoEquirectangular, geoGnomonic, geoIdentity, geoMercator, geoNaturalEarth1, geoOrthographic, geoStereographic, geoTransverseMercator } from 'd3-geo';\nimport { geoMollweide } from 'd3-geo-projection';\nimport { registerScale } from 'vega-scale';\nvar defaultPath = geoPath();\nvar projectionProperties = [\n// standard properties in d3-geo\n'clipAngle', 'clipExtent', 'scale', 'translate', 'center', 'rotate', 'parallels', 'precision', 'reflectX', 'reflectY',\n// extended properties in d3-geo-projections\n'coefficient', 'distance', 'fraction', 'lobes', 'parallel', 'radius', 'ratio', 'spacing', 'tilt'];\n\n/**\n * Augment projections with their type and a copy method.\n */\nfunction create(type, constructor) {\n return function projection() {\n var p = constructor();\n p.type = type;\n p.path = geoPath().projection(p);\n p.copy = p.copy || function () {\n var c = projection();\n projectionProperties.forEach(function (prop) {\n if (p[prop]) c[prop](p[prop]());\n });\n c.path.pointRadius(p.path.pointRadius());\n return c;\n };\n return registerScale(p);\n };\n}\nfunction projection(type, proj) {\n if (!type || typeof type !== 'string') {\n throw new Error('Projection type must be a name string.');\n }\n type = type.toLowerCase();\n if (arguments.length > 1) {\n projections[type] = create(type, proj);\n return this;\n } else {\n return projections[type] || null;\n }\n}\nfunction getProjectionPath(proj) {\n return proj && proj.path || defaultPath;\n}\nvar projections = {\n // base d3-geo projection types\n albers: geoAlbers,\n albersusa: geoAlbersUsa,\n azimuthalequalarea: geoAzimuthalEqualArea,\n azimuthalequidistant: geoAzimuthalEquidistant,\n conicconformal: geoConicConformal,\n conicequalarea: geoConicEqualArea,\n conicequidistant: geoConicEquidistant,\n equalEarth: geoEqualEarth,\n equirectangular: geoEquirectangular,\n gnomonic: geoGnomonic,\n identity: geoIdentity,\n mercator: geoMercator,\n mollweide: geoMollweide,\n naturalEarth1: geoNaturalEarth1,\n orthographic: geoOrthographic,\n stereographic: geoStereographic,\n transversemercator: geoTransverseMercator\n};\nfor (var key in projections) {\n projection(key, projections[key]);\n}\nexport { getProjectionPath, projection, projectionProperties };","import { epsilon } from \"../math.js\";\nimport albers from \"./albers.js\";\nimport conicEqualArea from \"./conicEqualArea.js\";\nimport { fitExtent, fitSize, fitWidth, fitHeight } from \"./fit.js\";\n\n// The projections must have mutually exclusive clip regions on the sphere,\n// as this will avoid emitting interleaving lines and polygons.\nfunction multiplex(streams) {\n var n = streams.length;\n return {\n point: function point(x, y) {\n var i = -1;\n while (++i < n) streams[i].point(x, y);\n },\n sphere: function sphere() {\n var i = -1;\n while (++i < n) streams[i].sphere();\n },\n lineStart: function lineStart() {\n var i = -1;\n while (++i < n) streams[i].lineStart();\n },\n lineEnd: function lineEnd() {\n var i = -1;\n while (++i < n) streams[i].lineEnd();\n },\n polygonStart: function polygonStart() {\n var i = -1;\n while (++i < n) streams[i].polygonStart();\n },\n polygonEnd: function polygonEnd() {\n var i = -1;\n while (++i < n) streams[i].polygonEnd();\n }\n };\n}\n\n// A composite projection for the United States, configured by default for\n// 960×500. The projection also works quite well at 960×600 if you change the\n// scale to 1285 and adjust the translate accordingly. The set of standard\n// parallels for each region comes from USGS, which is published here:\n// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers\nexport default function () {\n var cache,\n cacheStream,\n lower48 = albers(),\n lower48Point,\n alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]),\n alaskaPoint,\n // EPSG:3338\n hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]),\n hawaiiPoint,\n // ESRI:102007\n _point,\n pointStream = {\n point: function point(x, y) {\n _point = [x, y];\n }\n };\n function albersUsa(coordinates) {\n var x = coordinates[0],\n y = coordinates[1];\n return _point = null, (lower48Point.point(x, y), _point) || (alaskaPoint.point(x, y), _point) || (hawaiiPoint.point(x, y), _point);\n }\n albersUsa.invert = function (coordinates) {\n var k = lower48.scale(),\n t = lower48.translate(),\n x = (coordinates[0] - t[0]) / k,\n y = (coordinates[1] - t[1]) / k;\n return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii : lower48).invert(coordinates);\n };\n albersUsa.stream = function (stream) {\n return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]);\n };\n albersUsa.precision = function (_) {\n if (!arguments.length) return lower48.precision();\n lower48.precision(_), alaska.precision(_), hawaii.precision(_);\n return reset();\n };\n albersUsa.scale = function (_) {\n if (!arguments.length) return lower48.scale();\n lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_);\n return albersUsa.translate(lower48.translate());\n };\n albersUsa.translate = function (_) {\n if (!arguments.length) return lower48.translate();\n var k = lower48.scale(),\n x = +_[0],\n y = +_[1];\n lower48Point = lower48.translate(_).clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]]).stream(pointStream);\n alaskaPoint = alaska.translate([x - 0.307 * k, y + 0.201 * k]).clipExtent([[x - 0.425 * k + epsilon, y + 0.120 * k + epsilon], [x - 0.214 * k - epsilon, y + 0.234 * k - epsilon]]).stream(pointStream);\n hawaiiPoint = hawaii.translate([x - 0.205 * k, y + 0.212 * k]).clipExtent([[x - 0.214 * k + epsilon, y + 0.166 * k + epsilon], [x - 0.115 * k - epsilon, y + 0.234 * k - epsilon]]).stream(pointStream);\n return reset();\n };\n albersUsa.fitExtent = function (extent, object) {\n return fitExtent(albersUsa, extent, object);\n };\n albersUsa.fitSize = function (size, object) {\n return fitSize(albersUsa, size, object);\n };\n albersUsa.fitWidth = function (width, object) {\n return fitWidth(albersUsa, width, object);\n };\n albersUsa.fitHeight = function (height, object) {\n return fitHeight(albersUsa, height, object);\n };\n function reset() {\n cache = cacheStream = null;\n return albersUsa;\n }\n return albersUsa.scale(1070);\n}","import clipRectangle from \"../clip/rectangle.js\";\nimport identity from \"../identity.js\";\nimport { transformer } from \"../transform.js\";\nimport { fitExtent, fitSize, fitWidth, fitHeight } from \"./fit.js\";\nimport { cos, degrees, radians, sin } from \"../math.js\";\nexport default function () {\n var k = 1,\n tx = 0,\n ty = 0,\n sx = 1,\n sy = 1,\n // scale, translate and reflect\n alpha = 0,\n ca,\n sa,\n // angle\n x0 = null,\n y0,\n x1,\n y1,\n // clip extent\n kx = 1,\n ky = 1,\n transform = transformer({\n point: function point(x, y) {\n var p = projection([x, y]);\n this.stream.point(p[0], p[1]);\n }\n }),\n postclip = identity,\n cache,\n cacheStream;\n function reset() {\n kx = k * sx;\n ky = k * sy;\n cache = cacheStream = null;\n return projection;\n }\n function projection(p) {\n var x = p[0] * kx,\n y = p[1] * ky;\n if (alpha) {\n var t = y * ca - x * sa;\n x = x * ca + y * sa;\n y = t;\n }\n return [x + tx, y + ty];\n }\n projection.invert = function (p) {\n var x = p[0] - tx,\n y = p[1] - ty;\n if (alpha) {\n var t = y * ca + x * sa;\n x = x * ca - y * sa;\n y = t;\n }\n return [x / kx, y / ky];\n };\n projection.stream = function (stream) {\n return cache && cacheStream === stream ? cache : cache = transform(postclip(cacheStream = stream));\n };\n projection.postclip = function (_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n };\n projection.clipExtent = function (_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n projection.scale = function (_) {\n return arguments.length ? (k = +_, reset()) : k;\n };\n projection.translate = function (_) {\n return arguments.length ? (tx = +_[0], ty = +_[1], reset()) : [tx, ty];\n };\n projection.angle = function (_) {\n return arguments.length ? (alpha = _ % 360 * radians, sa = sin(alpha), ca = cos(alpha), reset()) : alpha * degrees;\n };\n projection.reflectX = function (_) {\n return arguments.length ? (sx = _ ? -1 : 1, reset()) : sx < 0;\n };\n projection.reflectY = function (_) {\n return arguments.length ? (sy = _ ? -1 : 1, reset()) : sy < 0;\n };\n projection.fitExtent = function (extent, object) {\n return fitExtent(projection, extent, object);\n };\n projection.fitSize = function (size, object) {\n return fitSize(projection, size, object);\n };\n projection.fitWidth = function (width, object) {\n return fitWidth(projection, width, object);\n };\n projection.fitHeight = function (height, object) {\n return fitHeight(projection, height, object);\n };\n return projection;\n}","import { range } from \"d3-array\";\nimport { abs, ceil, epsilon } from \"./math.js\";\nfunction graticuleX(y0, y1, dy) {\n var y = range(y0, y1 - epsilon, dy).concat(y1);\n return function (x) {\n return y.map(function (y) {\n return [x, y];\n });\n };\n}\nfunction graticuleY(x0, x1, dx) {\n var x = range(x0, x1 - epsilon, dx).concat(x1);\n return function (y) {\n return x.map(function (x) {\n return [x, y];\n });\n };\n}\nexport default function graticule() {\n var x1,\n x0,\n X1,\n X0,\n y1,\n y0,\n Y1,\n Y0,\n dx = 10,\n dy = dx,\n DX = 90,\n DY = 360,\n x,\n y,\n X,\n Y,\n precision = 2.5;\n function graticule() {\n return {\n type: \"MultiLineString\",\n coordinates: lines()\n };\n }\n function lines() {\n return range(ceil(X0 / DX) * DX, X1, DX).map(X).concat(range(ceil(Y0 / DY) * DY, Y1, DY).map(Y)).concat(range(ceil(x0 / dx) * dx, x1, dx).filter(function (x) {\n return abs(x % DX) > epsilon;\n }).map(x)).concat(range(ceil(y0 / dy) * dy, y1, dy).filter(function (y) {\n return abs(y % DY) > epsilon;\n }).map(y));\n }\n graticule.lines = function () {\n return lines().map(function (coordinates) {\n return {\n type: \"LineString\",\n coordinates: coordinates\n };\n });\n };\n graticule.outline = function () {\n return {\n type: \"Polygon\",\n coordinates: [X(X0).concat(Y(Y1).slice(1), X(X1).reverse().slice(1), Y(Y0).reverse().slice(1))]\n };\n };\n graticule.extent = function (_) {\n if (!arguments.length) return graticule.extentMinor();\n return graticule.extentMajor(_).extentMinor(_);\n };\n graticule.extentMajor = function (_) {\n if (!arguments.length) return [[X0, Y0], [X1, Y1]];\n X0 = +_[0][0], X1 = +_[1][0];\n Y0 = +_[0][1], Y1 = +_[1][1];\n if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n return graticule.precision(precision);\n };\n graticule.extentMinor = function (_) {\n if (!arguments.length) return [[x0, y0], [x1, y1]];\n x0 = +_[0][0], x1 = +_[1][0];\n y0 = +_[0][1], y1 = +_[1][1];\n if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n return graticule.precision(precision);\n };\n graticule.step = function (_) {\n if (!arguments.length) return graticule.stepMinor();\n return graticule.stepMajor(_).stepMinor(_);\n };\n graticule.stepMajor = function (_) {\n if (!arguments.length) return [DX, DY];\n DX = +_[0], DY = +_[1];\n return graticule;\n };\n graticule.stepMinor = function (_) {\n if (!arguments.length) return [dx, dy];\n dx = +_[0], dy = +_[1];\n return graticule;\n };\n graticule.precision = function (_) {\n if (!arguments.length) return precision;\n precision = +_;\n x = graticuleX(y0, y1, 90);\n y = graticuleY(x0, x1, precision);\n X = graticuleX(Y0, Y1, 90);\n Y = graticuleY(X0, X1, precision);\n return graticule;\n };\n return graticule.extentMajor([[-180, -90 + epsilon], [180, 90 - epsilon]]).extentMinor([[-180, -80 - epsilon], [180, 80 + epsilon]]);\n}\nexport function graticule10() {\n return graticule()();\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { Transform, rederive, ingest, replace } from 'vega-dataflow';\nimport { error, extent, inherits, identity, isArray, isFunction, isNumber, array, constant, one, accessorName, accessorFields, field, extend, toSet, zero } from 'vega-util';\nimport { tickStep, range, max, sum } from 'd3-array';\nimport { bandwidthNRD } from 'vega-statistics';\nimport { getProjectionPath, projectionProperties, projection } from 'vega-projection';\nimport { geoGraticule } from 'd3-geo';\nimport { rgb } from 'd3-color';\nimport { canvas } from 'vega-canvas';\nfunction noop() {}\nvar cases = [[], [[[1.0, 1.5], [0.5, 1.0]]], [[[1.5, 1.0], [1.0, 1.5]]], [[[1.5, 1.0], [0.5, 1.0]]], [[[1.0, 0.5], [1.5, 1.0]]], [[[1.0, 1.5], [0.5, 1.0]], [[1.0, 0.5], [1.5, 1.0]]], [[[1.0, 0.5], [1.0, 1.5]]], [[[1.0, 0.5], [0.5, 1.0]]], [[[0.5, 1.0], [1.0, 0.5]]], [[[1.0, 1.5], [1.0, 0.5]]], [[[0.5, 1.0], [1.0, 0.5]], [[1.5, 1.0], [1.0, 1.5]]], [[[1.5, 1.0], [1.0, 0.5]]], [[[0.5, 1.0], [1.5, 1.0]]], [[[1.0, 1.5], [1.5, 1.0]]], [[[0.5, 1.0], [1.0, 1.5]]], []];\n\n// Implementation adapted from d3/d3-contour. Thanks!\nfunction contours() {\n var dx = 1,\n dy = 1,\n smooth = smoothLinear;\n function contours(values, tz) {\n return tz.map(function (value) {\n return contour(values, value);\n });\n }\n\n // Accumulate, smooth contour rings, assign holes to exterior rings.\n // Based on https://github.com/mbostock/shapefile/blob/v0.6.2/shp/polygon.js\n function contour(values, value) {\n var polygons = [],\n holes = [];\n isorings(values, value, function (ring) {\n smooth(ring, values, value);\n if (area(ring) > 0) polygons.push([ring]);else holes.push(ring);\n });\n holes.forEach(function (hole) {\n for (var i = 0, n = polygons.length, polygon; i < n; ++i) {\n if (contains((polygon = polygons[i])[0], hole) !== -1) {\n polygon.push(hole);\n return;\n }\n }\n });\n return {\n type: 'MultiPolygon',\n value: value,\n coordinates: polygons\n };\n }\n\n // Marching squares with isolines stitched into rings.\n // Based on https://github.com/topojson/topojson-client/blob/v3.0.0/src/stitch.js\n function isorings(values, value, callback) {\n var fragmentByStart = new Array(),\n fragmentByEnd = new Array(),\n x,\n y,\n t0,\n t1,\n t2,\n t3;\n\n // Special case for the first row (y = -1, t2 = t3 = 0).\n x = y = -1;\n t1 = values[0] >= value;\n cases[t1 << 1].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[x + 1] >= value;\n cases[t0 | t1 << 1].forEach(stitch);\n }\n cases[t1 << 0].forEach(stitch);\n\n // General case for the intermediate rows.\n while (++y < dy - 1) {\n x = -1;\n t1 = values[y * dx + dx] >= value;\n t2 = values[y * dx] >= value;\n cases[t1 << 1 | t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[y * dx + dx + x + 1] >= value;\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t0 | t1 << 1 | t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t1 | t2 << 3].forEach(stitch);\n }\n\n // Special case for the last row (y = dy - 1, t0 = t1 = 0).\n x = -1;\n t2 = values[y * dx] >= value;\n cases[t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t2 << 3].forEach(stitch);\n function stitch(line) {\n var start = [line[0][0] + x, line[0][1] + y],\n end = [line[1][0] + x, line[1][1] + y],\n startIndex = index(start),\n endIndex = index(end),\n f,\n g;\n if (f = fragmentByEnd[startIndex]) {\n if (g = fragmentByStart[endIndex]) {\n delete fragmentByEnd[f.end];\n delete fragmentByStart[g.start];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[f.start] = fragmentByEnd[g.end] = {\n start: f.start,\n end: g.end,\n ring: f.ring.concat(g.ring)\n };\n }\n } else {\n delete fragmentByEnd[f.end];\n f.ring.push(end);\n fragmentByEnd[f.end = endIndex] = f;\n }\n } else if (f = fragmentByStart[endIndex]) {\n if (g = fragmentByEnd[startIndex]) {\n delete fragmentByStart[f.start];\n delete fragmentByEnd[g.end];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[g.start] = fragmentByEnd[f.end] = {\n start: g.start,\n end: f.end,\n ring: g.ring.concat(f.ring)\n };\n }\n } else {\n delete fragmentByStart[f.start];\n f.ring.unshift(start);\n fragmentByStart[f.start = startIndex] = f;\n }\n } else {\n fragmentByStart[startIndex] = fragmentByEnd[endIndex] = {\n start: startIndex,\n end: endIndex,\n ring: [start, end]\n };\n }\n }\n }\n function index(point) {\n return point[0] * 2 + point[1] * (dx + 1) * 4;\n }\n function smoothLinear(ring, values, value) {\n ring.forEach(function (point) {\n var x = point[0],\n y = point[1],\n xt = x | 0,\n yt = y | 0,\n v0,\n v1 = values[yt * dx + xt];\n if (x > 0 && x < dx && xt === x) {\n v0 = values[yt * dx + xt - 1];\n point[0] = x + (value - v0) / (v1 - v0) - 0.5;\n }\n if (y > 0 && y < dy && yt === y) {\n v0 = values[(yt - 1) * dx + xt];\n point[1] = y + (value - v0) / (v1 - v0) - 0.5;\n }\n });\n }\n contours.contour = contour;\n contours.size = function (_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.floor(_[0]),\n _1 = Math.floor(_[1]);\n if (!(_0 >= 0 && _1 >= 0)) error('invalid size');\n return dx = _0, dy = _1, contours;\n };\n contours.smooth = function (_) {\n return arguments.length ? (smooth = _ ? smoothLinear : noop, contours) : smooth === smoothLinear;\n };\n return contours;\n}\nfunction area(ring) {\n var i = 0,\n n = ring.length,\n area = ring[n - 1][1] * ring[0][0] - ring[n - 1][0] * ring[0][1];\n while (++i < n) area += ring[i - 1][1] * ring[i][0] - ring[i - 1][0] * ring[i][1];\n return area;\n}\nfunction contains(ring, hole) {\n var i = -1,\n n = hole.length,\n c;\n while (++i < n) if (c = ringContains(ring, hole[i])) return c;\n return 0;\n}\nfunction ringContains(ring, point) {\n var x = point[0],\n y = point[1],\n contains = -1;\n for (var i = 0, n = ring.length, j = n - 1; i < n; j = i++) {\n var pi = ring[i],\n xi = pi[0],\n yi = pi[1],\n pj = ring[j],\n xj = pj[0],\n yj = pj[1];\n if (segmentContains(pi, pj, point)) return 0;\n if (yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi) contains = -contains;\n }\n return contains;\n}\nfunction segmentContains(a, b, c) {\n var i;\n return collinear(a, b, c) && within(a[i = +(a[0] === b[0])], c[i], b[i]);\n}\nfunction collinear(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) === (c[0] - a[0]) * (b[1] - a[1]);\n}\nfunction within(p, q, r) {\n return p <= q && q <= r || r <= q && q <= p;\n}\nfunction quantize(k, nice, zero) {\n return function (values) {\n var ex = extent(values),\n start = zero ? Math.min(ex[0], 0) : ex[0],\n stop = ex[1],\n span = stop - start,\n step = nice ? tickStep(start, stop, k) : span / (k + 1);\n return range(start + step, stop, step);\n };\n}\n\n/**\n * Generate isocontours (level sets) based on input raster grid data.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} [params.field] - The field with raster grid\n * data. If unspecified, the tuple itself is interpreted as a raster grid.\n * @param {Array} [params.thresholds] - Contour threshold array. If\n * specified, the levels, nice, resolve, and zero parameters are ignored.\n * @param {number} [params.levels] - The desired number of contour levels.\n * @param {boolean} [params.nice] - Boolean flag indicating if the contour\n * threshold values should be automatically aligned to \"nice\"\n * human-friendly values. Setting this flag may cause the number of\n * thresholds to deviate from the specified levels.\n * @param {string} [params.resolve] - The method for resolving thresholds\n * across multiple input grids. If 'independent' (the default), threshold\n * calculation will be performed separately for each grid. If 'shared', a\n * single set of threshold values will be used for all input grids.\n * @param {boolean} [params.zero] - Boolean flag indicating if the contour\n * threshold values should include zero.\n * @param {boolean} [params.smooth] - Boolean flag indicating if the contour\n * polygons should be smoothed using linear interpolation. The default is\n * true. The parameter is ignored when using density estimation.\n * @param {boolean} [params.scale] - Optional numerical value by which to\n * scale the output isocontour coordinates. This parameter can be useful\n * to scale the contours to match a desired output resolution.\n * @param {string} [params.as='contour'] - The output field in which to store\n * the generated isocontour data (default 'contour').\n */\nfunction Isocontour(params) {\n Transform.call(this, null, params);\n}\nIsocontour.Definition = {\n 'type': 'Isocontour',\n 'metadata': {\n 'generates': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field'\n }, {\n 'name': 'thresholds',\n 'type': 'number',\n 'array': true\n }, {\n 'name': 'levels',\n 'type': 'number'\n }, {\n 'name': 'nice',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'resolve',\n 'type': 'enum',\n 'values': ['shared', 'independent'],\n 'default': 'independent'\n }, {\n 'name': 'zero',\n 'type': 'boolean',\n 'default': true\n }, {\n 'name': 'smooth',\n 'type': 'boolean',\n 'default': true\n }, {\n 'name': 'scale',\n 'type': 'number',\n 'expr': true\n }, {\n 'name': 'translate',\n 'type': 'number',\n 'array': true,\n 'expr': true\n }, {\n 'name': 'as',\n 'type': 'string',\n 'null': true,\n 'default': 'contour'\n }]\n};\ninherits(Isocontour, Transform, {\n transform: function transform(_, pulse) {\n if (this.value && !pulse.changed() && !_.modified()) {\n return pulse.StopPropagation;\n }\n var out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n source = pulse.materialize(pulse.SOURCE).source,\n field = _.field || identity,\n contour = contours().smooth(_.smooth !== false),\n tz = _.thresholds || levels(source, field, _),\n as = _.as === null ? null : _.as || 'contour',\n values = [];\n source.forEach(function (t) {\n var grid = field(t);\n\n // generate contour paths in GeoJSON format\n var paths = contour.size([grid.width, grid.height])(grid.values, isArray(tz) ? tz : tz(grid.values));\n\n // adjust contour path coordinates as needed\n transformPaths(paths, grid, t, _);\n\n // ingest; copy source data properties to output\n paths.forEach(function (p) {\n values.push(rederive(t, ingest(as != null ? _defineProperty({}, as, p) : p)));\n });\n });\n if (this.value) out.rem = this.value;\n this.value = out.source = out.add = values;\n return out;\n }\n});\nfunction levels(values, f, _) {\n var q = quantize(_.levels || 10, _.nice, _.zero !== false);\n return _.resolve !== 'shared' ? q : q(values.map(function (t) {\n return max(f(t).values);\n }));\n}\nfunction transformPaths(paths, grid, datum, _) {\n var s = _.scale || grid.scale,\n t = _.translate || grid.translate;\n if (isFunction(s)) s = s(datum, _);\n if (isFunction(t)) t = t(datum, _);\n if ((s === 1 || s == null) && !t) return;\n var sx = (isNumber(s) ? s : s[0]) || 1,\n sy = (isNumber(s) ? s : s[1]) || 1,\n tx = t && t[0] || 0,\n ty = t && t[1] || 0;\n paths.forEach(_transform(grid, sx, sy, tx, ty));\n}\nfunction _transform(grid, sx, sy, tx, ty) {\n var x1 = grid.x1 || 0,\n y1 = grid.y1 || 0,\n flip = sx * sy < 0;\n function transformPolygon(coordinates) {\n coordinates.forEach(transformRing);\n }\n function transformRing(coordinates) {\n if (flip) coordinates.reverse(); // maintain winding order\n coordinates.forEach(transformPoint);\n }\n function transformPoint(coordinates) {\n coordinates[0] = (coordinates[0] - x1) * sx + tx;\n coordinates[1] = (coordinates[1] - y1) * sy + ty;\n }\n return function (geometry) {\n geometry.coordinates.forEach(transformPolygon);\n return geometry;\n };\n}\nfunction radius(bw, data, f) {\n var v = bw >= 0 ? bw : bandwidthNRD(data, f);\n return Math.round((Math.sqrt(4 * v * v + 1) - 1) / 2);\n}\nfunction number(_) {\n return isFunction(_) ? _ : constant(+_);\n}\n\n// Implementation adapted from d3/d3-contour. Thanks!\nfunction density2D() {\n var x = function x(d) {\n return d[0];\n },\n y = function y(d) {\n return d[1];\n },\n weight = one,\n bandwidth = [-1, -1],\n dx = 960,\n dy = 500,\n k = 2; // log2(cellSize)\n\n function density(data, counts) {\n var rx = radius(bandwidth[0], data, x) >> k,\n // blur x-radius\n ry = radius(bandwidth[1], data, y) >> k,\n // blur y-radius\n ox = rx ? rx + 2 : 0,\n // x-offset padding for blur\n oy = ry ? ry + 2 : 0,\n // y-offset padding for blur\n n = 2 * ox + (dx >> k),\n // grid width\n m = 2 * oy + (dy >> k),\n // grid height\n values0 = new Float32Array(n * m),\n values1 = new Float32Array(n * m);\n var values = values0;\n data.forEach(function (d) {\n var xi = ox + (+x(d) >> k),\n yi = oy + (+y(d) >> k);\n if (xi >= 0 && xi < n && yi >= 0 && yi < m) {\n values0[xi + yi * n] += +weight(d);\n }\n });\n if (rx > 0 && ry > 0) {\n blurX(n, m, values0, values1, rx);\n blurY(n, m, values1, values0, ry);\n blurX(n, m, values0, values1, rx);\n blurY(n, m, values1, values0, ry);\n blurX(n, m, values0, values1, rx);\n blurY(n, m, values1, values0, ry);\n } else if (rx > 0) {\n blurX(n, m, values0, values1, rx);\n blurX(n, m, values1, values0, rx);\n blurX(n, m, values0, values1, rx);\n values = values1;\n } else if (ry > 0) {\n blurY(n, m, values0, values1, ry);\n blurY(n, m, values1, values0, ry);\n blurY(n, m, values0, values1, ry);\n values = values1;\n }\n\n // scale density estimates\n // density in points per square pixel or probability density\n var s = counts ? Math.pow(2, -2 * k) : 1 / sum(values);\n for (var i = 0, sz = n * m; i < sz; ++i) values[i] *= s;\n return {\n values: values,\n scale: 1 << k,\n width: n,\n height: m,\n x1: ox,\n y1: oy,\n x2: ox + (dx >> k),\n y2: oy + (dy >> k)\n };\n }\n density.x = function (_) {\n return arguments.length ? (x = number(_), density) : x;\n };\n density.y = function (_) {\n return arguments.length ? (y = number(_), density) : y;\n };\n density.weight = function (_) {\n return arguments.length ? (weight = number(_), density) : weight;\n };\n density.size = function (_) {\n if (!arguments.length) return [dx, dy];\n var _0 = +_[0],\n _1 = +_[1];\n if (!(_0 >= 0 && _1 >= 0)) error('invalid size');\n return dx = _0, dy = _1, density;\n };\n density.cellSize = function (_) {\n if (!arguments.length) return 1 << k;\n if (!((_ = +_) >= 1)) error('invalid cell size');\n k = Math.floor(Math.log(_) / Math.LN2);\n return density;\n };\n density.bandwidth = function (_) {\n if (!arguments.length) return bandwidth;\n _ = array(_);\n if (_.length === 1) _ = [+_[0], +_[0]];\n if (_.length !== 2) error('invalid bandwidth');\n return bandwidth = _, density;\n };\n return density;\n}\nfunction blurX(n, m, source, target, r) {\n var w = (r << 1) + 1;\n for (var j = 0; j < m; ++j) {\n for (var i = 0, sr = 0; i < n + r; ++i) {\n if (i < n) {\n sr += source[i + j * n];\n }\n if (i >= r) {\n if (i >= w) {\n sr -= source[i - w + j * n];\n }\n target[i - r + j * n] = sr / Math.min(i + 1, n - 1 + w - i, w);\n }\n }\n }\n}\nfunction blurY(n, m, source, target, r) {\n var w = (r << 1) + 1;\n for (var i = 0; i < n; ++i) {\n for (var j = 0, sr = 0; j < m + r; ++j) {\n if (j < m) {\n sr += source[i + j * n];\n }\n if (j >= r) {\n if (j >= w) {\n sr -= source[i + (j - w) * n];\n }\n target[i + (j - r) * n] = sr / Math.min(j + 1, m - 1 + w - j, w);\n }\n }\n }\n}\n\n/**\n * Perform 2D kernel-density estimation of point data.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array} params.size - The [width, height] extent (in\n * units of input pixels) over which to perform density estimation.\n * @param {function(object): number} params.x - The x-coordinate accessor.\n * @param {function(object): number} params.y - The y-coordinate accessor.\n * @param {function(object): number} [params.weight] - The weight accessor.\n * @param {Array} [params.groupby] - An array of accessors\n * to groupby.\n * @param {number} [params.cellSize] - Contour density calculation cell size.\n * This parameter determines the level of spatial approximation. For example,\n * the default value of 4 maps to 2x reductions in both x- and y- dimensions.\n * A value of 1 will result in an output raster grid whose dimensions exactly\n * matches the size parameter.\n * @param {Array} [params.bandwidth] - The KDE kernel bandwidths,\n * in pixels. The input can be a two-element array specifying separate\n * x and y bandwidths, or a single-element array specifying both. If the\n * bandwidth is unspecified or less than zero, the bandwidth will be\n * automatically determined.\n * @param {boolean} [params.counts=false] - A boolean flag indicating if the\n * output values should be probability estimates (false, default) or\n * smoothed counts (true).\n * @param {string} [params.as='grid'] - The output field in which to store\n * the generated raster grid (default 'grid').\n */\nfunction KDE2D(params) {\n Transform.call(this, null, params);\n}\nKDE2D.Definition = {\n 'type': 'KDE2D',\n 'metadata': {\n 'generates': true\n },\n 'params': [{\n 'name': 'size',\n 'type': 'number',\n 'array': true,\n 'length': 2,\n 'required': true\n }, {\n 'name': 'x',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'y',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'weight',\n 'type': 'field'\n }, {\n 'name': 'groupby',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'cellSize',\n 'type': 'number'\n }, {\n 'name': 'bandwidth',\n 'type': 'number',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'counts',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'as',\n 'type': 'string',\n 'default': 'grid'\n }]\n};\nvar PARAMS = ['x', 'y', 'weight', 'size', 'cellSize', 'bandwidth'];\nfunction params(obj, _) {\n PARAMS.forEach(function (param) {\n return _[param] != null ? obj[param](_[param]) : 0;\n });\n return obj;\n}\ninherits(KDE2D, Transform, {\n transform: function transform(_, pulse) {\n if (this.value && !pulse.changed() && !_.modified()) return pulse.StopPropagation;\n var out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n source = pulse.materialize(pulse.SOURCE).source,\n groups = partition(source, _.groupby),\n names = (_.groupby || []).map(accessorName),\n kde = params(density2D(), _),\n as = _.as || 'grid',\n values = [];\n function set(t, vals) {\n for (var i = 0; i < names.length; ++i) t[names[i]] = vals[i];\n return t;\n }\n\n // generate density raster grids\n values = groups.map(function (g) {\n return ingest(set(_defineProperty({}, as, kde(g, _.counts)), g.dims));\n });\n if (this.value) out.rem = this.value;\n this.value = out.source = out.add = values;\n return out;\n }\n});\nfunction partition(data, groupby) {\n var groups = [],\n get = function get(f) {\n return f(t);\n },\n map,\n i,\n n,\n t,\n k,\n g;\n\n // partition data points into groups\n if (groupby == null) {\n groups.push(data);\n } else {\n for (map = {}, i = 0, n = data.length; i < n; ++i) {\n t = data[i];\n k = groupby.map(get);\n g = map[k];\n if (!g) {\n map[k] = g = [];\n g.dims = k;\n groups.push(g);\n }\n g.push(t);\n }\n }\n return groups;\n}\n\n/**\n * Generate contours based on kernel-density estimation of point data.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array} params.size - The dimensions [width, height] over which to compute contours.\n * If the values parameter is provided, this must be the dimensions of the input data.\n * If density estimation is performed, this is the output view dimensions in pixels.\n * @param {Array} [params.values] - An array of numeric values representing an\n * width x height grid of values over which to compute contours. If unspecified, this\n * transform will instead attempt to compute contours for the kernel density estimate\n * using values drawn from data tuples in the input pulse.\n * @param {function(object): number} [params.x] - The pixel x-coordinate accessor for density estimation.\n * @param {function(object): number} [params.y] - The pixel y-coordinate accessor for density estimation.\n * @param {function(object): number} [params.weight] - The data point weight accessor for density estimation.\n * @param {number} [params.cellSize] - Contour density calculation cell size.\n * @param {number} [params.bandwidth] - Kernel density estimation bandwidth.\n * @param {Array} [params.thresholds] - Contour threshold array. If\n * this parameter is set, the count and nice parameters will be ignored.\n * @param {number} [params.count] - The desired number of contours.\n * @param {boolean} [params.nice] - Boolean flag indicating if the contour\n * threshold values should be automatically aligned to \"nice\"\n * human-friendly values. Setting this flag may cause the number of\n * thresholds to deviate from the specified count.\n * @param {boolean} [params.smooth] - Boolean flag indicating if the contour\n * polygons should be smoothed using linear interpolation. The default is\n * true. The parameter is ignored when using density estimation.\n */\nfunction Contour(params) {\n Transform.call(this, null, params);\n}\nContour.Definition = {\n 'type': 'Contour',\n 'metadata': {\n 'generates': true\n },\n 'params': [{\n 'name': 'size',\n 'type': 'number',\n 'array': true,\n 'length': 2,\n 'required': true\n }, {\n 'name': 'values',\n 'type': 'number',\n 'array': true\n }, {\n 'name': 'x',\n 'type': 'field'\n }, {\n 'name': 'y',\n 'type': 'field'\n }, {\n 'name': 'weight',\n 'type': 'field'\n }, {\n 'name': 'cellSize',\n 'type': 'number'\n }, {\n 'name': 'bandwidth',\n 'type': 'number'\n }, {\n 'name': 'count',\n 'type': 'number'\n }, {\n 'name': 'nice',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'thresholds',\n 'type': 'number',\n 'array': true\n }, {\n 'name': 'smooth',\n 'type': 'boolean',\n 'default': true\n }]\n};\ninherits(Contour, Transform, {\n transform: function transform(_, pulse) {\n if (this.value && !pulse.changed() && !_.modified()) {\n return pulse.StopPropagation;\n }\n var out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n contour = contours().smooth(_.smooth !== false),\n values = _.values,\n thresh = _.thresholds || quantize(_.count || 10, _.nice, !!values),\n size = _.size,\n grid,\n post;\n if (!values) {\n values = pulse.materialize(pulse.SOURCE).source;\n grid = params(density2D(), _)(values, true);\n post = _transform(grid, grid.scale || 1, grid.scale || 1, 0, 0);\n size = [grid.width, grid.height];\n values = grid.values;\n }\n thresh = isArray(thresh) ? thresh : thresh(values);\n values = contour.size(size)(values, thresh);\n if (post) values.forEach(post);\n if (this.value) out.rem = this.value;\n this.value = out.source = out.add = (values || []).map(ingest);\n return out;\n }\n});\nvar Feature = 'Feature';\nvar FeatureCollection = 'FeatureCollection';\nvar MultiPoint = 'MultiPoint';\n\n/**\n * Consolidate an array of [longitude, latitude] points or GeoJSON features\n * into a combined GeoJSON object. This transform is particularly useful for\n * combining geo data for a Projection's fit argument. The resulting GeoJSON\n * data is available as this transform's value. Input pulses are unchanged.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array} [params.fields] - A two-element array\n * of field accessors for the longitude and latitude values.\n * @param {function(object): *} params.geojson - A field accessor for\n * retrieving GeoJSON feature data.\n */\nfunction GeoJSON(params) {\n Transform.call(this, null, params);\n}\nGeoJSON.Definition = {\n 'type': 'GeoJSON',\n 'metadata': {},\n 'params': [{\n 'name': 'fields',\n 'type': 'field',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'geojson',\n 'type': 'field'\n }]\n};\ninherits(GeoJSON, Transform, {\n transform: function transform(_, pulse) {\n var features = this._features,\n points = this._points,\n fields = _.fields,\n lon = fields && fields[0],\n lat = fields && fields[1],\n geojson = _.geojson || !fields && identity,\n flag = pulse.ADD,\n mod;\n mod = _.modified() || pulse.changed(pulse.REM) || pulse.modified(accessorFields(geojson)) || lon && pulse.modified(accessorFields(lon)) || lat && pulse.modified(accessorFields(lat));\n if (!this.value || mod) {\n flag = pulse.SOURCE;\n this._features = features = [];\n this._points = points = [];\n }\n if (geojson) {\n pulse.visit(flag, function (t) {\n return features.push(geojson(t));\n });\n }\n if (lon && lat) {\n pulse.visit(flag, function (t) {\n var x = lon(t),\n y = lat(t);\n if (x != null && y != null && (x = +x) === x && (y = +y) === y) {\n points.push([x, y]);\n }\n });\n features = features.concat({\n type: Feature,\n geometry: {\n type: MultiPoint,\n coordinates: points\n }\n });\n }\n this.value = {\n type: FeatureCollection,\n features: features\n };\n }\n});\n\n/**\n * Map GeoJSON data to an SVG path string.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(number, number): *} params.projection - The cartographic\n * projection to apply.\n * @param {function(object): *} [params.field] - The field with GeoJSON data,\n * or null if the tuple itself is a GeoJSON feature.\n * @param {string} [params.as='path'] - The output field in which to store\n * the generated path data (default 'path').\n */\nfunction GeoPath(params) {\n Transform.call(this, null, params);\n}\nGeoPath.Definition = {\n 'type': 'GeoPath',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'projection',\n 'type': 'projection'\n }, {\n 'name': 'field',\n 'type': 'field'\n }, {\n 'name': 'pointRadius',\n 'type': 'number',\n 'expr': true\n }, {\n 'name': 'as',\n 'type': 'string',\n 'default': 'path'\n }]\n};\ninherits(GeoPath, Transform, {\n transform: function transform(_, pulse) {\n var out = pulse.fork(pulse.ALL),\n path = this.value,\n field = _.field || identity,\n as = _.as || 'path',\n flag = out.SOURCE;\n if (!path || _.modified()) {\n // parameters updated, reset and reflow\n this.value = path = getProjectionPath(_.projection);\n out.materialize().reflow();\n } else {\n flag = field === identity || pulse.modified(field.fields) ? out.ADD_MOD : out.ADD;\n }\n var prev = initPath(path, _.pointRadius);\n out.visit(flag, function (t) {\n return t[as] = path(field(t));\n });\n path.pointRadius(prev);\n return out.modifies(as);\n }\n});\nfunction initPath(path, pointRadius) {\n var prev = path.pointRadius();\n path.context(null);\n if (pointRadius != null) {\n path.pointRadius(pointRadius);\n }\n return prev;\n}\n\n/**\n * Geo-code a longitude/latitude point to an x/y coordinate.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(number, number): *} params.projection - The cartographic\n * projection to apply.\n * @param {Array} params.fields - A two-element array of\n * field accessors for the longitude and latitude values.\n * @param {Array} [params.as] - A two-element array of field names\n * under which to store the result. Defaults to ['x','y'].\n */\nfunction GeoPoint(params) {\n Transform.call(this, null, params);\n}\nGeoPoint.Definition = {\n 'type': 'GeoPoint',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'projection',\n 'type': 'projection',\n 'required': true\n }, {\n 'name': 'fields',\n 'type': 'field',\n 'array': true,\n 'required': true,\n 'length': 2\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': 2,\n 'default': ['x', 'y']\n }]\n};\ninherits(GeoPoint, Transform, {\n transform: function transform(_, pulse) {\n var proj = _.projection,\n lon = _.fields[0],\n lat = _.fields[1],\n as = _.as || ['x', 'y'],\n x = as[0],\n y = as[1],\n mod;\n function set(t) {\n var xy = proj([lon(t), lat(t)]);\n if (xy) {\n t[x] = xy[0];\n t[y] = xy[1];\n } else {\n t[x] = undefined;\n t[y] = undefined;\n }\n }\n if (_.modified()) {\n // parameters updated, reflow\n pulse = pulse.materialize().reflow(true).visit(pulse.SOURCE, set);\n } else {\n mod = pulse.modified(lon.fields) || pulse.modified(lat.fields);\n pulse.visit(mod ? pulse.ADD_MOD : pulse.ADD, set);\n }\n return pulse.modifies(as);\n }\n});\n\n/**\n * Annotate items with a geopath shape generator.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(number, number): *} params.projection - The cartographic\n * projection to apply.\n * @param {function(object): *} [params.field] - The field with GeoJSON data,\n * or null if the tuple itself is a GeoJSON feature.\n * @param {string} [params.as='shape'] - The output field in which to store\n * the generated path data (default 'shape').\n */\nfunction GeoShape(params) {\n Transform.call(this, null, params);\n}\nGeoShape.Definition = {\n 'type': 'GeoShape',\n 'metadata': {\n 'modifies': true,\n 'nomod': true\n },\n 'params': [{\n 'name': 'projection',\n 'type': 'projection'\n }, {\n 'name': 'field',\n 'type': 'field',\n 'default': 'datum'\n }, {\n 'name': 'pointRadius',\n 'type': 'number',\n 'expr': true\n }, {\n 'name': 'as',\n 'type': 'string',\n 'default': 'shape'\n }]\n};\ninherits(GeoShape, Transform, {\n transform: function transform(_, pulse) {\n var out = pulse.fork(pulse.ALL),\n shape = this.value,\n as = _.as || 'shape',\n flag = out.ADD;\n if (!shape || _.modified()) {\n // parameters updated, reset and reflow\n this.value = shape = shapeGenerator(getProjectionPath(_.projection), _.field || field('datum'), _.pointRadius);\n out.materialize().reflow();\n flag = out.SOURCE;\n }\n out.visit(flag, function (t) {\n return t[as] = shape;\n });\n return out.modifies(as);\n }\n});\nfunction shapeGenerator(path, field, pointRadius) {\n var shape = pointRadius == null ? function (_) {\n return path(field(_));\n } : function (_) {\n var prev = path.pointRadius(),\n value = path.pointRadius(pointRadius)(field(_));\n path.pointRadius(prev);\n return value;\n };\n shape.context = function (_) {\n path.context(_);\n return shape;\n };\n return shape;\n}\n\n/**\n * GeoJSON feature generator for creating graticules.\n * @constructor\n */\nfunction Graticule(params) {\n Transform.call(this, [], params);\n this.generator = geoGraticule();\n}\nGraticule.Definition = {\n 'type': 'Graticule',\n 'metadata': {\n 'changes': true,\n 'generates': true\n },\n 'params': [{\n 'name': 'extent',\n 'type': 'array',\n 'array': true,\n 'length': 2,\n 'content': {\n 'type': 'number',\n 'array': true,\n 'length': 2\n }\n }, {\n 'name': 'extentMajor',\n 'type': 'array',\n 'array': true,\n 'length': 2,\n 'content': {\n 'type': 'number',\n 'array': true,\n 'length': 2\n }\n }, {\n 'name': 'extentMinor',\n 'type': 'array',\n 'array': true,\n 'length': 2,\n 'content': {\n 'type': 'number',\n 'array': true,\n 'length': 2\n }\n }, {\n 'name': 'step',\n 'type': 'number',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'stepMajor',\n 'type': 'number',\n 'array': true,\n 'length': 2,\n 'default': [90, 360]\n }, {\n 'name': 'stepMinor',\n 'type': 'number',\n 'array': true,\n 'length': 2,\n 'default': [10, 10]\n }, {\n 'name': 'precision',\n 'type': 'number',\n 'default': 2.5\n }]\n};\ninherits(Graticule, Transform, {\n transform: function transform(_, pulse) {\n var src = this.value,\n gen = this.generator,\n t;\n if (!src.length || _.modified()) {\n for (var prop in _) {\n if (isFunction(gen[prop])) {\n gen[prop](_[prop]);\n }\n }\n }\n t = gen();\n if (src.length) {\n pulse.mod.push(replace(src[0], t));\n } else {\n pulse.add.push(ingest(t));\n }\n src[0] = t;\n return pulse;\n }\n});\n\n/**\n * Render a heatmap image for input raster grid data.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} [params.field] - The field with raster grid\n * data. If unspecified, the tuple itself is interpreted as a raster grid.\n * @param {string} [params.color] - A constant color value or function for\n * individual pixel color. If a function, it will be invoked with an input\n * object that includes $x, $y, $value, and $max fields for the grid.\n * @param {number} [params.opacity] - A constant opacity value or function for\n * individual pixel opacity. If a function, it will be invoked with an input\n * object that includes $x, $y, $value, and $max fields for the grid.\n * @param {string} [params.resolve] - The method for resolving maximum values\n * across multiple input grids. If 'independent' (the default), maximum\n * calculation will be performed separately for each grid. If 'shared',\n * a single global maximum will be used for all input grids.\n * @param {string} [params.as='image'] - The output field in which to store\n * the generated bitmap canvas images (default 'image').\n */\nfunction Heatmap(params) {\n Transform.call(this, null, params);\n}\nHeatmap.Definition = {\n 'type': 'heatmap',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field'\n }, {\n 'name': 'color',\n 'type': 'string',\n 'expr': true\n }, {\n 'name': 'opacity',\n 'type': 'number',\n 'expr': true\n }, {\n 'name': 'resolve',\n 'type': 'enum',\n 'values': ['shared', 'independent'],\n 'default': 'independent'\n }, {\n 'name': 'as',\n 'type': 'string',\n 'default': 'image'\n }]\n};\ninherits(Heatmap, Transform, {\n transform: function transform(_, pulse) {\n if (!pulse.changed() && !_.modified()) {\n return pulse.StopPropagation;\n }\n var source = pulse.materialize(pulse.SOURCE).source,\n shared = _.resolve === 'shared',\n field = _.field || identity,\n opacity = opacity_(_.opacity, _),\n color = color_(_.color, _),\n as = _.as || 'image',\n obj = {\n $x: 0,\n $y: 0,\n $value: 0,\n $max: shared ? max(source.map(function (t) {\n return max(field(t).values);\n })) : 0\n };\n source.forEach(function (t) {\n var v = field(t);\n\n // build proxy data object\n var o = extend({}, t, obj);\n // set maximum value if not globally shared\n if (!shared) o.$max = max(v.values || []);\n\n // generate canvas image\n // optimize color/opacity if not pixel-dependent\n t[as] = toCanvas(v, o, color.dep ? color : constant(color(o)), opacity.dep ? opacity : constant(opacity(o)));\n });\n return pulse.reflow(true).modifies(as);\n }\n});\n\n// get image color function\nfunction color_(color, _) {\n var f;\n if (isFunction(color)) {\n f = function f(obj) {\n return rgb(color(obj, _));\n };\n f.dep = dependency(color);\n } else {\n // default to mid-grey\n f = constant(rgb(color || '#888'));\n }\n return f;\n}\n\n// get image opacity function\nfunction opacity_(opacity, _) {\n var f;\n if (isFunction(opacity)) {\n f = function f(obj) {\n return opacity(obj, _);\n };\n f.dep = dependency(opacity);\n } else if (opacity) {\n f = constant(opacity);\n } else {\n // default to [0, max] opacity gradient\n f = function f(obj) {\n return obj.$value / obj.$max || 0;\n };\n f.dep = true;\n }\n return f;\n}\n\n// check if function depends on individual pixel data\nfunction dependency(f) {\n if (!isFunction(f)) return false;\n var set = toSet(accessorFields(f));\n return set.$x || set.$y || set.$value || set.$max;\n}\n\n// render raster grid to canvas\nfunction toCanvas(grid, obj, color, opacity) {\n var n = grid.width,\n m = grid.height,\n x1 = grid.x1 || 0,\n y1 = grid.y1 || 0,\n x2 = grid.x2 || n,\n y2 = grid.y2 || m,\n val = grid.values,\n value = val ? function (i) {\n return val[i];\n } : zero,\n can = canvas(x2 - x1, y2 - y1),\n ctx = can.getContext('2d'),\n img = ctx.getImageData(0, 0, x2 - x1, y2 - y1),\n pix = img.data;\n for (var j = y1, k = 0; j < y2; ++j) {\n obj.$y = j - y1;\n for (var i = x1, r = j * n; i < x2; ++i, k += 4) {\n obj.$x = i - x1;\n obj.$value = value(i + r);\n var v = color(obj);\n pix[k + 0] = v.r;\n pix[k + 1] = v.g;\n pix[k + 2] = v.b;\n pix[k + 3] = ~~(255 * opacity(obj));\n }\n }\n ctx.putImageData(img, 0, 0);\n return can;\n}\n\n/**\n * Maintains a cartographic projection.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nfunction Projection(params) {\n Transform.call(this, null, params);\n this.modified(true); // always treat as modified\n}\n\ninherits(Projection, Transform, {\n transform: function transform(_, pulse) {\n var proj = this.value;\n if (!proj || _.modified('type')) {\n this.value = proj = create(_.type);\n projectionProperties.forEach(function (prop) {\n if (_[prop] != null) set(proj, prop, _[prop]);\n });\n } else {\n projectionProperties.forEach(function (prop) {\n if (_.modified(prop)) set(proj, prop, _[prop]);\n });\n }\n if (_.pointRadius != null) proj.path.pointRadius(_.pointRadius);\n if (_.fit) fit(proj, _);\n return pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n }\n});\nfunction fit(proj, _) {\n var data = collectGeoJSON(_.fit);\n _.extent ? proj.fitExtent(_.extent, data) : _.size ? proj.fitSize(_.size, data) : 0;\n}\nfunction create(type) {\n var constructor = projection((type || 'mercator').toLowerCase());\n if (!constructor) error('Unrecognized projection type: ' + type);\n return constructor();\n}\nfunction set(proj, key, value) {\n if (isFunction(proj[key])) proj[key](value);\n}\nfunction collectGeoJSON(data) {\n data = array(data);\n return data.length === 1 ? data[0] : {\n type: FeatureCollection,\n features: data.reduce(function (a, f) {\n return a.concat(featurize(f));\n }, [])\n };\n}\nfunction featurize(f) {\n return f.type === FeatureCollection ? f.features : array(f).filter(function (d) {\n return d != null;\n }).map(function (d) {\n return d.type === Feature ? d : {\n type: Feature,\n geometry: d\n };\n });\n}\nexport { Contour as contour, GeoJSON as geojson, GeoPath as geopath, GeoPoint as geopoint, GeoShape as geoshape, Graticule as graticule, Heatmap as heatmap, Isocontour as isocontour, KDE2D as kde2d, Projection as projection };","export default function (d) {\n var x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n}\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {\n data: d\n },\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm;else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym;else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm;else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym;else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | xp >= xm));\n return parent[j] = node, parent[i] = leaf, tree;\n}\nexport function addAll(data) {\n var d,\n i,\n n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n return this;\n}","export default function (node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n}","export function defaultX(d) {\n return d[0];\n}\nexport default function (_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}","export function defaultY(d) {\n return d[1];\n}\nexport default function (_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}","import tree_add, { addAll as tree_addAll } from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, { removeAll as tree_removeAll } from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, { defaultX } from \"./x.js\";\nimport tree_y, { defaultY } from \"./y.js\";\nexport default function quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\nfunction leaf_copy(leaf) {\n var copy = {\n data: leaf.data\n },\n next = copy;\n while (leaf = leaf.next) next = next.next = {\n data: leaf.data\n };\n return copy;\n}\nvar treeProto = quadtree.prototype = Quadtree.prototype;\ntreeProto.copy = function () {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n if (!node) return copy;\n if (!node.length) return copy._root = leaf_copy(node), copy;\n nodes = [{\n source: node,\n target: copy._root = new Array(4)\n }];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({\n source: child,\n target: node.target[i] = new Array(4)\n });else node.target[i] = leaf_copy(child);\n }\n }\n }\n return copy;\n};\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;","export default function (x) {\n return function () {\n return x;\n };\n}","export default function (random) {\n return (random() - 0.5) * 1e-6;\n}","import { quadtree } from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\nfunction x(d) {\n return d.x + d.vx;\n}\nfunction y(d) {\n return d.y + d.vy;\n}\nexport default function (radius) {\n var nodes,\n radii,\n random,\n strength = 1,\n iterations = 1;\n if (typeof radius !== \"function\") radius = constant(radius == null ? 1 : +radius);\n function force() {\n var i,\n n = nodes.length,\n tree,\n node,\n xi,\n yi,\n ri,\n ri2;\n for (var k = 0; k < iterations; ++k) {\n tree = quadtree(nodes, x, y).visitAfter(prepare);\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n ri = radii[node.index], ri2 = ri * ri;\n xi = node.x + node.vx;\n yi = node.y + node.vy;\n tree.visit(apply);\n }\n }\n function apply(quad, x0, y0, x1, y1) {\n var data = quad.data,\n rj = quad.r,\n r = ri + rj;\n if (data) {\n if (data.index > node.index) {\n var x = xi - data.x - data.vx,\n y = yi - data.y - data.vy,\n l = x * x + y * y;\n if (l < r * r) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n l = (r - (l = Math.sqrt(l))) / l * strength;\n node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));\n node.vy += (y *= l) * r;\n data.vx -= x * (r = 1 - r);\n data.vy -= y * r;\n }\n }\n return;\n }\n return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r;\n }\n }\n function prepare(quad) {\n if (quad.data) return quad.r = radii[quad.data.index];\n for (var i = quad.r = 0; i < 4; ++i) {\n if (quad[i] && quad[i].r > quad.r) {\n quad.r = quad[i].r;\n }\n }\n }\n function initialize() {\n if (!nodes) return;\n var i,\n n = nodes.length,\n node;\n radii = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);\n }\n force.initialize = function (_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n force.iterations = function (_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n force.strength = function (_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n force.radius = function (_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n return force;\n}","export default function (x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0 || 1,\n node = this._root,\n parent,\n i;\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | x < x0;\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0:\n x1 = x0 + z, y1 = y0 + z;\n break;\n case 1:\n x0 = x1 - z, y1 = y0 + z;\n break;\n case 2:\n x1 = x0 + z, y0 = y1 - z;\n break;\n case 3:\n x0 = x1 - z, y0 = y1 - z;\n break;\n }\n }\n if (this._root && this._root.length) this._root = node;\n }\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n}","export default function () {\n var data = [];\n this.visit(function (node) {\n if (!node.length) do data.push(node.data); while (node = node.next);\n });\n return data;\n}","export default function (_) {\n return arguments.length ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1]) : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}","import Quad from \"./quad.js\";\nexport default function (x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n while (q = quads.pop()) {\n // Stop searching if this quadrant can’t contain a closer node.\n if (!(node = q.node) || (x1 = q.x0) > x3 || (y1 = q.y0) > y3 || (x2 = q.x1) < x0 || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n quads.push(new Quad(node[3], xm, ym, x2, y2), new Quad(node[2], x1, ym, xm, y2), new Quad(node[1], xm, y1, x2, ym), new Quad(node[0], x1, y1, xm, ym));\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | x >= xm) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n return data;\n}","export default function (d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm;else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym;else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[i + 1 & 3] || parent[i + 2 & 3] || parent[i + 3 & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return next ? previous.next = next : delete previous.next, this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3]) && node === (parent[3] || parent[2] || parent[1] || parent[0]) && !node.length) {\n if (retainer) retainer[j] = node;else this._root = node;\n }\n return this;\n}\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}","export default function () {\n return this._root;\n}","export default function () {\n var size = 0;\n this.visit(function (node) {\n if (!node.length) do ++size; while (node = node.next);\n });\n return size;\n}","import Quad from \"./quad.js\";\nexport default function (callback) {\n var quads = [],\n q,\n node = this._root,\n child,\n x0,\n y0,\n x1,\n y1;\n if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2,\n ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n }\n }\n return this;\n}","import Quad from \"./quad.js\";\nexport default function (callback) {\n var quads = [],\n next = [],\n q;\n if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child,\n x0 = q.x0,\n y0 = q.y0,\n x1 = q.x1,\n y1 = q.y1,\n xm = (x0 + x1) / 2,\n ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n}","var noop = {\n value: function value() {}\n};\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || t in _ || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\nfunction Dispatch(_) {\n this._ = _;\n}\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function (t) {\n var name = \"\",\n i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {\n type: t,\n name: name\n };\n });\n}\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function on(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n return this;\n },\n copy: function copy() {\n var copy = {},\n _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function call(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function apply(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({\n name: name,\n value: callback\n });\n return type;\n}\nexport default dispatch;","var frame = 0,\n // is an animation frame pending?\n timeout = 0,\n // is a timeout pending?\n interval = 0,\n // are any timers active?\n pokeDelay = 1000,\n // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function (f) {\n setTimeout(f, 17);\n };\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\nfunction clearNow() {\n clockNow = 0;\n}\nexport function Timer() {\n this._call = this._time = this._next = null;\n}\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function restart(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function stop() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\nexport function timer(callback, delay, time) {\n var t = new Timer();\n t.restart(callback, delay, time);\n return t;\n}\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead,\n e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\nfunction poke() {\n var now = clock.now(),\n delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\nfunction nap() {\n var t0,\n t1 = taskHead,\n t2,\n time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}","// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nvar a = 1664525;\nvar c = 1013904223;\nvar m = 4294967296; // 2^32\n\nexport default function () {\n var s = 1;\n return function () {\n return (s = (a * s + c) % m) / m;\n };\n}","import { dispatch } from \"d3-dispatch\";\nimport { timer } from \"d3-timer\";\nimport lcg from \"./lcg.js\";\nexport function x(d) {\n return d.x;\n}\nexport function y(d) {\n return d.y;\n}\nvar initialRadius = 10,\n initialAngle = Math.PI * (3 - Math.sqrt(5));\nexport default function (_nodes) {\n var simulation,\n _alpha = 1,\n _alphaMin = 0.001,\n _alphaDecay = 1 - Math.pow(_alphaMin, 1 / 300),\n _alphaTarget = 0,\n _velocityDecay = 0.6,\n forces = new Map(),\n stepper = timer(step),\n event = dispatch(\"tick\", \"end\"),\n random = lcg();\n if (_nodes == null) _nodes = [];\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (_alpha < _alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n function tick(iterations) {\n var i,\n n = _nodes.length,\n node;\n if (iterations === undefined) iterations = 1;\n for (var k = 0; k < iterations; ++k) {\n _alpha += (_alphaTarget - _alpha) * _alphaDecay;\n forces.forEach(function (force) {\n force(_alpha);\n });\n for (i = 0; i < n; ++i) {\n node = _nodes[i];\n if (node.fx == null) node.x += node.vx *= _velocityDecay;else node.x = node.fx, node.vx = 0;\n if (node.fy == null) node.y += node.vy *= _velocityDecay;else node.y = node.fy, node.vy = 0;\n }\n }\n return simulation;\n }\n function initializeNodes() {\n for (var i = 0, n = _nodes.length, node; i < n; ++i) {\n node = _nodes[i], node.index = i;\n if (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n if (isNaN(node.x) || isNaN(node.y)) {\n var radius = initialRadius * Math.sqrt(0.5 + i),\n angle = i * initialAngle;\n node.x = radius * Math.cos(angle);\n node.y = radius * Math.sin(angle);\n }\n if (isNaN(node.vx) || isNaN(node.vy)) {\n node.vx = node.vy = 0;\n }\n }\n }\n function initializeForce(force) {\n if (force.initialize) force.initialize(_nodes, random);\n return force;\n }\n initializeNodes();\n return simulation = {\n tick: tick,\n restart: function restart() {\n return stepper.restart(step), simulation;\n },\n stop: function stop() {\n return stepper.stop(), simulation;\n },\n nodes: function nodes(_) {\n return arguments.length ? (_nodes = _, initializeNodes(), forces.forEach(initializeForce), simulation) : _nodes;\n },\n alpha: function alpha(_) {\n return arguments.length ? (_alpha = +_, simulation) : _alpha;\n },\n alphaMin: function alphaMin(_) {\n return arguments.length ? (_alphaMin = +_, simulation) : _alphaMin;\n },\n alphaDecay: function alphaDecay(_) {\n return arguments.length ? (_alphaDecay = +_, simulation) : +_alphaDecay;\n },\n alphaTarget: function alphaTarget(_) {\n return arguments.length ? (_alphaTarget = +_, simulation) : _alphaTarget;\n },\n velocityDecay: function velocityDecay(_) {\n return arguments.length ? (_velocityDecay = 1 - _, simulation) : 1 - _velocityDecay;\n },\n randomSource: function randomSource(_) {\n return arguments.length ? (random = _, forces.forEach(initializeForce), simulation) : random;\n },\n force: function force(name, _) {\n return arguments.length > 1 ? (_ == null ? forces.delete(name) : forces.set(name, initializeForce(_)), simulation) : forces.get(name);\n },\n find: function find(x, y, radius) {\n var i = 0,\n n = _nodes.length,\n dx,\n dy,\n d2,\n node,\n closest;\n if (radius == null) radius = Infinity;else radius *= radius;\n for (i = 0; i < n; ++i) {\n node = _nodes[i];\n dx = x - node.x;\n dy = y - node.y;\n d2 = dx * dx + dy * dy;\n if (d2 < radius) closest = node, radius = d2;\n }\n return closest;\n },\n on: function on(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}","import constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\nfunction index(d) {\n return d.index;\n}\nfunction find(nodeById, nodeId) {\n var node = nodeById.get(nodeId);\n if (!node) throw new Error(\"node not found: \" + nodeId);\n return node;\n}\nexport default function (links) {\n var id = index,\n strength = defaultStrength,\n strengths,\n distance = constant(30),\n distances,\n nodes,\n count,\n bias,\n random,\n iterations = 1;\n if (links == null) links = [];\n function defaultStrength(link) {\n return 1 / Math.min(count[link.source.index], count[link.target.index]);\n }\n function force(alpha) {\n for (var k = 0, n = links.length; k < iterations; ++k) {\n for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n link = links[i], source = link.source, target = link.target;\n x = target.x + target.vx - source.x - source.vx || jiggle(random);\n y = target.y + target.vy - source.y - source.vy || jiggle(random);\n l = Math.sqrt(x * x + y * y);\n l = (l - distances[i]) / l * alpha * strengths[i];\n x *= l, y *= l;\n target.vx -= x * (b = bias[i]);\n target.vy -= y * b;\n source.vx += x * (b = 1 - b);\n source.vy += y * b;\n }\n }\n }\n function initialize() {\n if (!nodes) return;\n var i,\n n = nodes.length,\n m = links.length,\n nodeById = new Map(nodes.map(function (d, i) {\n return [id(d, i, nodes), d];\n })),\n link;\n for (i = 0, count = new Array(n); i < m; ++i) {\n link = links[i], link.index = i;\n if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n count[link.source.index] = (count[link.source.index] || 0) + 1;\n count[link.target.index] = (count[link.target.index] || 0) + 1;\n }\n for (i = 0, bias = new Array(m); i < m; ++i) {\n link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n }\n strengths = new Array(m), initializeStrength();\n distances = new Array(m), initializeDistance();\n }\n function initializeStrength() {\n if (!nodes) return;\n for (var i = 0, n = links.length; i < n; ++i) {\n strengths[i] = +strength(links[i], i, links);\n }\n }\n function initializeDistance() {\n if (!nodes) return;\n for (var i = 0, n = links.length; i < n; ++i) {\n distances[i] = +distance(links[i], i, links);\n }\n }\n force.initialize = function (_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n force.links = function (_) {\n return arguments.length ? (links = _, initialize(), force) : links;\n };\n force.id = function (_) {\n return arguments.length ? (id = _, force) : id;\n };\n force.iterations = function (_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n force.strength = function (_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initializeStrength(), force) : strength;\n };\n force.distance = function (_) {\n return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant(+_), initializeDistance(), force) : distance;\n };\n return force;\n}","import { Transform } from 'vega-dataflow';\nimport { inherits, array, isFunction, accessorFields, hasOwnProperty, error } from 'vega-util';\nimport { forceSimulation, forceCenter, forceCollide, forceManyBody, forceLink, forceX, forceY } from 'd3-force';\nvar ForceMap = {\n center: forceCenter,\n collide: forceCollide,\n nbody: forceManyBody,\n link: forceLink,\n x: forceX,\n y: forceY\n};\nvar Forces = 'forces',\n ForceParams = ['alpha', 'alphaMin', 'alphaTarget', 'velocityDecay', 'forces'],\n ForceConfig = ['static', 'iterations'],\n ForceOutput = ['x', 'y', 'vx', 'vy'];\n\n/**\n * Force simulation layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array} params.forces - The forces to apply.\n */\nfunction Force(params) {\n Transform.call(this, null, params);\n}\nForce.Definition = {\n 'type': 'Force',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'static',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'restart',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'iterations',\n 'type': 'number',\n 'default': 300\n }, {\n 'name': 'alpha',\n 'type': 'number',\n 'default': 1\n }, {\n 'name': 'alphaMin',\n 'type': 'number',\n 'default': 0.001\n }, {\n 'name': 'alphaTarget',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'velocityDecay',\n 'type': 'number',\n 'default': 0.4\n }, {\n 'name': 'forces',\n 'type': 'param',\n 'array': true,\n 'params': [{\n 'key': {\n 'force': 'center'\n },\n 'params': [{\n 'name': 'x',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'y',\n 'type': 'number',\n 'default': 0\n }]\n }, {\n 'key': {\n 'force': 'collide'\n },\n 'params': [{\n 'name': 'radius',\n 'type': 'number',\n 'expr': true\n }, {\n 'name': 'strength',\n 'type': 'number',\n 'default': 0.7\n }, {\n 'name': 'iterations',\n 'type': 'number',\n 'default': 1\n }]\n }, {\n 'key': {\n 'force': 'nbody'\n },\n 'params': [{\n 'name': 'strength',\n 'type': 'number',\n 'default': -30,\n 'expr': true\n }, {\n 'name': 'theta',\n 'type': 'number',\n 'default': 0.9\n }, {\n 'name': 'distanceMin',\n 'type': 'number',\n 'default': 1\n }, {\n 'name': 'distanceMax',\n 'type': 'number'\n }]\n }, {\n 'key': {\n 'force': 'link'\n },\n 'params': [{\n 'name': 'links',\n 'type': 'data'\n }, {\n 'name': 'id',\n 'type': 'field'\n }, {\n 'name': 'distance',\n 'type': 'number',\n 'default': 30,\n 'expr': true\n }, {\n 'name': 'strength',\n 'type': 'number',\n 'expr': true\n }, {\n 'name': 'iterations',\n 'type': 'number',\n 'default': 1\n }]\n }, {\n 'key': {\n 'force': 'x'\n },\n 'params': [{\n 'name': 'strength',\n 'type': 'number',\n 'default': 0.1\n }, {\n 'name': 'x',\n 'type': 'field'\n }]\n }, {\n 'key': {\n 'force': 'y'\n },\n 'params': [{\n 'name': 'strength',\n 'type': 'number',\n 'default': 0.1\n }, {\n 'name': 'y',\n 'type': 'field'\n }]\n }]\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'modify': false,\n 'default': ForceOutput\n }]\n};\ninherits(Force, Transform, {\n transform: function transform(_, pulse) {\n var sim = this.value,\n change = pulse.changed(pulse.ADD_REM),\n params = _.modified(ForceParams),\n iters = _.iterations || 300;\n\n // configure simulation\n if (!sim) {\n this.value = sim = simulation(pulse.source, _);\n sim.on('tick', rerun(pulse.dataflow, this));\n if (!_.static) {\n change = true;\n sim.tick(); // ensure we run on init\n }\n\n pulse.modifies('index');\n } else {\n if (change) {\n pulse.modifies('index');\n sim.nodes(pulse.source);\n }\n if (params || pulse.changed(pulse.MOD)) {\n setup(sim, _, 0, pulse);\n }\n }\n\n // run simulation\n if (params || change || _.modified(ForceConfig) || pulse.changed() && _.restart) {\n sim.alpha(Math.max(sim.alpha(), _.alpha || 1)).alphaDecay(1 - Math.pow(sim.alphaMin(), 1 / iters));\n if (_.static) {\n for (sim.stop(); --iters >= 0;) sim.tick();\n } else {\n if (sim.stopped()) sim.restart();\n if (!change) return pulse.StopPropagation; // defer to sim ticks\n }\n }\n\n return this.finish(_, pulse);\n },\n finish: function finish(_, pulse) {\n var dataflow = pulse.dataflow;\n\n // inspect dependencies, touch link source data\n for (var args = this._argops, j = 0, m = args.length, arg; j < m; ++j) {\n arg = args[j];\n if (arg.name !== Forces || arg.op._argval.force !== 'link') {\n continue;\n }\n for (var ops = arg.op._argops, i = 0, n = ops.length, op; i < n; ++i) {\n if (ops[i].name === 'links' && (op = ops[i].op.source)) {\n dataflow.pulse(op, dataflow.changeset().reflow());\n break;\n }\n }\n }\n\n // reflow all nodes\n return pulse.reflow(_.modified()).modifies(ForceOutput);\n }\n});\nfunction rerun(df, op) {\n return function () {\n return df.touch(op).run();\n };\n}\nfunction simulation(nodes, _) {\n var sim = forceSimulation(nodes),\n stop = sim.stop,\n restart = sim.restart;\n var stopped = false;\n sim.stopped = function () {\n return stopped;\n };\n sim.restart = function () {\n return stopped = false, restart();\n };\n sim.stop = function () {\n return stopped = true, stop();\n };\n return setup(sim, _, true).on('end', function () {\n return stopped = true;\n });\n}\nfunction setup(sim, _, init, pulse) {\n var f = array(_.forces),\n i,\n n,\n p,\n name;\n for (i = 0, n = ForceParams.length; i < n; ++i) {\n p = ForceParams[i];\n if (p !== Forces && _.modified(p)) sim[p](_[p]);\n }\n for (i = 0, n = f.length; i < n; ++i) {\n name = Forces + i;\n p = init || _.modified(Forces, i) ? getForce(f[i]) : pulse && modified(f[i], pulse) ? sim.force(name) : null;\n if (p) sim.force(name, p);\n }\n for (n = sim.numForces || 0; i < n; ++i) {\n sim.force(Forces + i, null); // remove\n }\n\n sim.numForces = f.length;\n return sim;\n}\nfunction modified(f, pulse) {\n var k, v;\n for (k in f) {\n if (isFunction(v = f[k]) && pulse.modified(accessorFields(v))) return 1;\n }\n return 0;\n}\nfunction getForce(_) {\n var f, p;\n if (!hasOwnProperty(ForceMap, _.force)) {\n error('Unrecognized force: ' + _.force);\n }\n f = ForceMap[_.force]();\n for (p in _) {\n if (isFunction(f[p])) setForceParam(f[p], _[p], _);\n }\n return f;\n}\nfunction setForceParam(f, v, _) {\n f(isFunction(v) ? function (d) {\n return v(d, _);\n } : v);\n}\nexport { Force as force };","export default function (x, y) {\n var nodes,\n strength = 1;\n if (x == null) x = 0;\n if (y == null) y = 0;\n function force() {\n var i,\n n = nodes.length,\n node,\n sx = 0,\n sy = 0;\n for (i = 0; i < n; ++i) {\n node = nodes[i], sx += node.x, sy += node.y;\n }\n for (sx = (sx / n - x) * strength, sy = (sy / n - y) * strength, i = 0; i < n; ++i) {\n node = nodes[i], node.x -= sx, node.y -= sy;\n }\n }\n force.initialize = function (_) {\n nodes = _;\n };\n force.x = function (_) {\n return arguments.length ? (x = +_, force) : x;\n };\n force.y = function (_) {\n return arguments.length ? (y = +_, force) : y;\n };\n force.strength = function (_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n return force;\n}","import { quadtree } from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\nimport { x, y } from \"./simulation.js\";\nexport default function () {\n var nodes,\n node,\n random,\n alpha,\n strength = constant(-30),\n strengths,\n distanceMin2 = 1,\n distanceMax2 = Infinity,\n theta2 = 0.81;\n function force(_) {\n var i,\n n = nodes.length,\n tree = quadtree(nodes, x, y).visitAfter(accumulate);\n for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n }\n function initialize() {\n if (!nodes) return;\n var i,\n n = nodes.length,\n node;\n strengths = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n }\n function accumulate(quad) {\n var strength = 0,\n q,\n c,\n weight = 0,\n x,\n y,\n i;\n\n // For internal nodes, accumulate forces from child quadrants.\n if (quad.length) {\n for (x = y = i = 0; i < 4; ++i) {\n if ((q = quad[i]) && (c = Math.abs(q.value))) {\n strength += q.value, weight += c, x += c * q.x, y += c * q.y;\n }\n }\n quad.x = x / weight;\n quad.y = y / weight;\n }\n\n // For leaf nodes, accumulate forces from coincident quadrants.\n else {\n q = quad;\n q.x = q.data.x;\n q.y = q.data.y;\n do strength += strengths[q.data.index]; while (q = q.next);\n }\n quad.value = strength;\n }\n function apply(quad, x1, _, x2) {\n if (!quad.value) return true;\n var x = quad.x - node.x,\n y = quad.y - node.y,\n w = x2 - x1,\n l = x * x + y * y;\n\n // Apply the Barnes-Hut approximation if possible.\n // Limit forces for very close nodes; randomize direction if coincident.\n if (w * w / theta2 < l) {\n if (l < distanceMax2) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n node.vx += x * quad.value * alpha / l;\n node.vy += y * quad.value * alpha / l;\n }\n return true;\n }\n\n // Otherwise, process points directly.\n else if (quad.length || l >= distanceMax2) return;\n\n // Limit forces for very close nodes; randomize direction if coincident.\n if (quad.data !== node || quad.next) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n }\n do if (quad.data !== node) {\n w = strengths[quad.data.index] * alpha / l;\n node.vx += x * w;\n node.vy += y * w;\n } while (quad = quad.next);\n }\n force.initialize = function (_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n force.strength = function (_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n force.distanceMin = function (_) {\n return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n };\n force.distanceMax = function (_) {\n return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n };\n force.theta = function (_) {\n return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n };\n return force;\n}","import constant from \"./constant.js\";\nexport default function (x) {\n var strength = constant(0.1),\n nodes,\n strengths,\n xz;\n if (typeof x !== \"function\") x = constant(x == null ? 0 : +x);\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha;\n }\n }\n function initialize() {\n if (!nodes) return;\n var i,\n n = nodes.length;\n strengths = new Array(n);\n xz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n force.initialize = function (_) {\n nodes = _;\n initialize();\n };\n force.strength = function (_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n force.x = function (_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : x;\n };\n return force;\n}","import constant from \"./constant.js\";\nexport default function (y) {\n var strength = constant(0.1),\n nodes,\n strengths,\n yz;\n if (typeof y !== \"function\") y = constant(y == null ? 0 : +y);\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha;\n }\n }\n function initialize() {\n if (!nodes) return;\n var i,\n n = nodes.length;\n strengths = new Array(n);\n yz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n force.initialize = function (_) {\n nodes = _;\n initialize();\n };\n force.strength = function (_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n force.y = function (_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : y;\n };\n return force;\n}","function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\nexport default function () {\n return this.eachAfter(count);\n}","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nexport default function (callback, that) {\n var index = -1;\n var _iterator = _createForOfIteratorHelper(this),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var node = _step.value;\n callback.call(that, node, ++index, this);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return this;\n}","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nexport default function (callback, that) {\n var index = -1;\n var _iterator = _createForOfIteratorHelper(this),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var node = _step.value;\n if (callback.call(that, node, ++index, this)) {\n return node;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n}","import _regeneratorRuntime from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/regenerator/index.js\";\nvar _marked = /*#__PURE__*/_regeneratorRuntime.mark(_callee);\nexport default function _callee() {\n var node, current, next, children, i, n;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n node = this, next = [node];\n case 1:\n current = next.reverse(), next = [];\n case 2:\n if (!(node = current.pop())) {\n _context.next = 8;\n break;\n }\n _context.next = 5;\n return node;\n case 5:\n if (children = node.children) {\n for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n _context.next = 2;\n break;\n case 8:\n if (next.length) {\n _context.next = 1;\n break;\n }\n case 9:\n case \"end\":\n return _context.stop();\n }\n }, _marked, this);\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_find from \"./find.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\nimport node_iterator from \"./iterator.js\";\nexport default function hierarchy(data, children) {\n if (data instanceof Map) {\n data = [undefined, data];\n if (children === undefined) children = mapChildren;\n } else if (children === undefined) {\n children = objectChildren;\n }\n var root = new Node(data),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n while (node = nodes.pop()) {\n if ((childs = children(node.data)) && (n = (childs = Array.from(childs)).length)) {\n node.children = childs;\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = childs[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n return root.eachBefore(computeHeight);\n}\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\nfunction objectChildren(d) {\n return d.children;\n}\nfunction mapChildren(d) {\n return Array.isArray(d) ? d[1] : null;\n}\nfunction copyData(node) {\n if (node.data.value !== undefined) node.value = node.data.value;\n node.data = node.data.data;\n}\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height; while ((node = node.parent) && node.height < ++height);\n}\nexport function Node(data) {\n this.data = data;\n this.depth = this.height = 0;\n this.parent = null;\n}\nNode.prototype = hierarchy.prototype = _defineProperty({\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n find: node_find,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy\n}, Symbol.iterator, node_iterator);","export function optional(f) {\n return f == null ? null : required(f);\n}\nexport function required(f) {\n if (typeof f !== \"function\") throw new Error();\n return f;\n}","export function constantZero() {\n return 0;\n}\nexport default function (x) {\n return function () {\n return x;\n };\n}","export default function (callback, that) {\n var node = this,\n nodes = [node],\n next = [],\n children,\n i,\n n,\n index = -1;\n while (node = nodes.pop()) {\n next.push(node);\n if (children = node.children) {\n for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n }\n while (node = next.pop()) {\n callback.call(that, node, ++index, this);\n }\n return this;\n}","export default function (callback, that) {\n var node = this,\n nodes = [node],\n children,\n i,\n index = -1;\n while (node = nodes.pop()) {\n callback.call(that, node, ++index, this);\n if (children = node.children) {\n for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n }\n return this;\n}","export default function (value) {\n return this.eachAfter(function (node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}","export default function (compare) {\n return this.eachBefore(function (node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}","export default function (end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}","export default function () {\n var node = this,\n nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}","export default function () {\n return Array.from(this);\n}","export default function () {\n var leaves = [];\n this.eachBefore(function (node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}","export default function () {\n var root = this,\n links = [];\n root.each(function (node) {\n if (node !== root) {\n // Don’t include the root’s parent, if any.\n links.push({\n source: node.parent,\n target: node\n });\n }\n });\n return links;\n}","// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nvar a = 1664525;\nvar c = 1013904223;\nvar m = 4294967296; // 2^32\n\nexport default function () {\n var s = 1;\n return function () {\n return (s = (a * s + c) % m) / m;\n };\n}","import { shuffle } from \"../array.js\";\nimport lcg from \"../lcg.js\";\nexport default function (circles) {\n return packEncloseRandom(circles, lcg());\n}\nexport function packEncloseRandom(circles, random) {\n var i = 0,\n n = (circles = shuffle(Array.from(circles), random)).length,\n B = [],\n p,\n e;\n while (i < n) {\n p = circles[i];\n if (e && enclosesWeak(e, p)) ++i;else e = encloseBasis(B = extendBasis(B, p)), i = 0;\n }\n return e;\n}\nfunction extendBasis(B, p) {\n var i, j;\n if (enclosesWeakAll(p, B)) return [p];\n\n // If we get here then B must have at least one element.\n for (i = 0; i < B.length; ++i) {\n if (enclosesNot(p, B[i]) && enclosesWeakAll(encloseBasis2(B[i], p), B)) {\n return [B[i], p];\n }\n }\n\n // If we get here then B must have at least two elements.\n for (i = 0; i < B.length - 1; ++i) {\n for (j = i + 1; j < B.length; ++j) {\n if (enclosesNot(encloseBasis2(B[i], B[j]), p) && enclosesNot(encloseBasis2(B[i], p), B[j]) && enclosesNot(encloseBasis2(B[j], p), B[i]) && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {\n return [B[i], B[j], p];\n }\n }\n }\n\n // If we get here then something is very wrong.\n throw new Error();\n}\nfunction enclosesNot(a, b) {\n var dr = a.r - b.r,\n dx = b.x - a.x,\n dy = b.y - a.y;\n return dr < 0 || dr * dr < dx * dx + dy * dy;\n}\nfunction enclosesWeak(a, b) {\n var dr = a.r - b.r + Math.max(a.r, b.r, 1) * 1e-9,\n dx = b.x - a.x,\n dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\nfunction enclosesWeakAll(a, B) {\n for (var i = 0; i < B.length; ++i) {\n if (!enclosesWeak(a, B[i])) {\n return false;\n }\n }\n return true;\n}\nfunction encloseBasis(B) {\n switch (B.length) {\n case 1:\n return encloseBasis1(B[0]);\n case 2:\n return encloseBasis2(B[0], B[1]);\n case 3:\n return encloseBasis3(B[0], B[1], B[2]);\n }\n}\nfunction encloseBasis1(a) {\n return {\n x: a.x,\n y: a.y,\n r: a.r\n };\n}\nfunction encloseBasis2(a, b) {\n var x1 = a.x,\n y1 = a.y,\n r1 = a.r,\n x2 = b.x,\n y2 = b.y,\n r2 = b.r,\n x21 = x2 - x1,\n y21 = y2 - y1,\n r21 = r2 - r1,\n l = Math.sqrt(x21 * x21 + y21 * y21);\n return {\n x: (x1 + x2 + x21 / l * r21) / 2,\n y: (y1 + y2 + y21 / l * r21) / 2,\n r: (l + r1 + r2) / 2\n };\n}\nfunction encloseBasis3(a, b, c) {\n var x1 = a.x,\n y1 = a.y,\n r1 = a.r,\n x2 = b.x,\n y2 = b.y,\n r2 = b.r,\n x3 = c.x,\n y3 = c.y,\n r3 = c.r,\n a2 = x1 - x2,\n a3 = x1 - x3,\n b2 = y1 - y2,\n b3 = y1 - y3,\n c2 = r2 - r1,\n c3 = r3 - r1,\n d1 = x1 * x1 + y1 * y1 - r1 * r1,\n d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,\n d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,\n ab = a3 * b2 - a2 * b3,\n xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,\n xb = (b3 * c2 - b2 * c3) / ab,\n ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,\n yb = (a2 * c3 - a3 * c2) / ab,\n A = xb * xb + yb * yb - 1,\n B = 2 * (r1 + xa * xb + ya * yb),\n C = xa * xa + ya * ya - r1 * r1,\n r = -(Math.abs(A) > 1e-6 ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);\n return {\n x: x1 + xa + xb * r,\n y: y1 + ya + yb * r,\n r: r\n };\n}","export default function (x) {\n return typeof x === \"object\" && \"length\" in x ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n\nexport function shuffle(array, random) {\n var m = array.length,\n t,\n i;\n while (m) {\n i = random() * m-- | 0;\n t = array[m];\n array[m] = array[i];\n array[i] = t;\n }\n return array;\n}","import array from \"../array.js\";\nimport lcg from \"../lcg.js\";\nimport { packEncloseRandom } from \"./enclose.js\";\nfunction place(b, a, c) {\n var dx = b.x - a.x,\n x,\n a2,\n dy = b.y - a.y,\n y,\n b2,\n d2 = dx * dx + dy * dy;\n if (d2) {\n a2 = a.r + c.r, a2 *= a2;\n b2 = b.r + c.r, b2 *= b2;\n if (a2 > b2) {\n x = (d2 + b2 - a2) / (2 * d2);\n y = Math.sqrt(Math.max(0, b2 / d2 - x * x));\n c.x = b.x - x * dx - y * dy;\n c.y = b.y - x * dy + y * dx;\n } else {\n x = (d2 + a2 - b2) / (2 * d2);\n y = Math.sqrt(Math.max(0, a2 / d2 - x * x));\n c.x = a.x + x * dx - y * dy;\n c.y = a.y + x * dy + y * dx;\n }\n } else {\n c.x = a.x + c.r;\n c.y = a.y;\n }\n}\nfunction intersects(a, b) {\n var dr = a.r + b.r - 1e-6,\n dx = b.x - a.x,\n dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\nfunction score(node) {\n var a = node._,\n b = node.next._,\n ab = a.r + b.r,\n dx = (a.x * b.r + b.x * a.r) / ab,\n dy = (a.y * b.r + b.y * a.r) / ab;\n return dx * dx + dy * dy;\n}\nfunction Node(circle) {\n this._ = circle;\n this.next = null;\n this.previous = null;\n}\nexport function packSiblingsRandom(circles, random) {\n if (!(n = (circles = array(circles)).length)) return 0;\n var a, b, c, n, aa, ca, i, j, k, sj, sk;\n\n // Place the first circle.\n a = circles[0], a.x = 0, a.y = 0;\n if (!(n > 1)) return a.r;\n\n // Place the second circle.\n b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;\n if (!(n > 2)) return a.r + b.r;\n\n // Place the third circle.\n place(b, a, c = circles[2]);\n\n // Initialize the front-chain using the first three circles a, b and c.\n a = new Node(a), b = new Node(b), c = new Node(c);\n a.next = c.previous = b;\n b.next = a.previous = c;\n c.next = b.previous = a;\n\n // Attempt to place each remaining circle…\n pack: for (i = 3; i < n; ++i) {\n place(a._, b._, c = circles[i]), c = new Node(c);\n\n // Find the closest intersecting circle on the front-chain, if any.\n // “Closeness” is determined by linear distance along the front-chain.\n // “Ahead” or “behind” is likewise determined by linear distance.\n j = b.next, k = a.previous, sj = b._.r, sk = a._.r;\n do {\n if (sj <= sk) {\n if (intersects(j._, c._)) {\n b = j, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sj += j._.r, j = j.next;\n } else {\n if (intersects(k._, c._)) {\n a = k, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sk += k._.r, k = k.previous;\n }\n } while (j !== k.next);\n\n // Success! Insert the new circle c between a and b.\n c.previous = a, c.next = b, a.next = b.previous = b = c;\n\n // Compute the new closest circle pair to the centroid.\n aa = score(a);\n while ((c = c.next) !== b) {\n if ((ca = score(c)) < aa) {\n a = c, aa = ca;\n }\n }\n b = a.next;\n }\n\n // Compute the enclosing circle of the front chain.\n a = [b._], c = b;\n while ((c = c.next) !== b) a.push(c._);\n c = packEncloseRandom(a, random);\n\n // Translate the circles to put the enclosing circle around the origin.\n for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;\n return c.r;\n}\nexport default function (circles) {\n packSiblingsRandom(circles, lcg());\n return circles;\n}","import { optional } from \"../accessors.js\";\nimport constant, { constantZero } from \"../constant.js\";\nimport lcg from \"../lcg.js\";\nimport { packSiblingsRandom } from \"./siblings.js\";\nfunction defaultRadius(d) {\n return Math.sqrt(d.value);\n}\nexport default function () {\n var radius = null,\n dx = 1,\n dy = 1,\n padding = constantZero;\n function pack(root) {\n var random = lcg();\n root.x = dx / 2, root.y = dy / 2;\n if (radius) {\n root.eachBefore(radiusLeaf(radius)).eachAfter(packChildrenRandom(padding, 0.5, random)).eachBefore(translateChild(1));\n } else {\n root.eachBefore(radiusLeaf(defaultRadius)).eachAfter(packChildrenRandom(constantZero, 1, random)).eachAfter(packChildrenRandom(padding, root.r / Math.min(dx, dy), random)).eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));\n }\n return root;\n }\n pack.radius = function (x) {\n return arguments.length ? (radius = optional(x), pack) : radius;\n };\n pack.size = function (x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];\n };\n pack.padding = function (x) {\n return arguments.length ? (padding = typeof x === \"function\" ? x : constant(+x), pack) : padding;\n };\n return pack;\n}\nfunction radiusLeaf(radius) {\n return function (node) {\n if (!node.children) {\n node.r = Math.max(0, +radius(node) || 0);\n }\n };\n}\nfunction packChildrenRandom(padding, k, random) {\n return function (node) {\n if (children = node.children) {\n var children,\n i,\n n = children.length,\n r = padding(node) * k || 0,\n e;\n if (r) for (i = 0; i < n; ++i) children[i].r += r;\n e = packSiblingsRandom(children, random);\n if (r) for (i = 0; i < n; ++i) children[i].r -= r;\n node.r = e + r;\n }\n };\n}\nfunction translateChild(k) {\n return function (node) {\n var parent = node.parent;\n node.r *= k;\n if (parent) {\n node.x = parent.x + k * node.x;\n node.y = parent.y + k * node.y;\n }\n };\n}","export default function (node) {\n node.x0 = Math.round(node.x0);\n node.y0 = Math.round(node.y0);\n node.x1 = Math.round(node.x1);\n node.y1 = Math.round(node.y1);\n}","export default function (parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (x1 - x0) / parent.value;\n while (++i < n) {\n node = nodes[i], node.y0 = y0, node.y1 = y1;\n node.x0 = x0, node.x1 = x0 += node.value * k;\n }\n}","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { optional } from \"./accessors.js\";\nimport { Node, computeHeight } from \"./hierarchy/index.js\";\nvar preroot = {\n depth: -1\n },\n ambiguous = {},\n imputed = {};\nfunction defaultId(d) {\n return d.id;\n}\nfunction defaultParentId(d) {\n return d.parentId;\n}\nexport default function () {\n var id = defaultId,\n parentId = defaultParentId,\n path;\n function stratify(data) {\n var nodes = Array.from(data),\n currentId = id,\n currentParentId = parentId,\n n,\n d,\n i,\n root,\n parent,\n node,\n nodeId,\n nodeKey,\n nodeByKey = new Map();\n if (path != null) {\n var I = nodes.map(function (d, i) {\n return normalize(path(d, i, data));\n });\n var P = I.map(parentof);\n var S = new Set(I).add(\"\");\n var _iterator = _createForOfIteratorHelper(P),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _i = _step.value;\n if (!S.has(_i)) {\n S.add(_i);\n I.push(_i);\n P.push(parentof(_i));\n nodes.push(imputed);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n currentId = function currentId(_, i) {\n return I[i];\n };\n currentParentId = function currentParentId(_, i) {\n return P[i];\n };\n }\n for (i = 0, n = nodes.length; i < n; ++i) {\n d = nodes[i], node = nodes[i] = new Node(d);\n if ((nodeId = currentId(d, i, data)) != null && (nodeId += \"\")) {\n nodeKey = node.id = nodeId;\n nodeByKey.set(nodeKey, nodeByKey.has(nodeKey) ? ambiguous : node);\n }\n if ((nodeId = currentParentId(d, i, data)) != null && (nodeId += \"\")) {\n node.parent = nodeId;\n }\n }\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (nodeId = node.parent) {\n parent = nodeByKey.get(nodeId);\n if (!parent) throw new Error(\"missing: \" + nodeId);\n if (parent === ambiguous) throw new Error(\"ambiguous: \" + nodeId);\n if (parent.children) parent.children.push(node);else parent.children = [node];\n node.parent = parent;\n } else {\n if (root) throw new Error(\"multiple roots\");\n root = node;\n }\n }\n if (!root) throw new Error(\"no root\");\n\n // When imputing internal nodes, only introduce roots if needed.\n // Then replace the imputed marker data with null.\n if (path != null) {\n while (root.data === imputed && root.children.length === 1) {\n root = root.children[0], --n;\n }\n for (var _i2 = nodes.length - 1; _i2 >= 0; --_i2) {\n node = nodes[_i2];\n if (node.data !== imputed) break;\n node.data = null;\n }\n }\n root.parent = preroot;\n root.eachBefore(function (node) {\n node.depth = node.parent.depth + 1;\n --n;\n }).eachBefore(computeHeight);\n root.parent = null;\n if (n > 0) throw new Error(\"cycle\");\n return root;\n }\n stratify.id = function (x) {\n return arguments.length ? (id = optional(x), stratify) : id;\n };\n stratify.parentId = function (x) {\n return arguments.length ? (parentId = optional(x), stratify) : parentId;\n };\n stratify.path = function (x) {\n return arguments.length ? (path = optional(x), stratify) : path;\n };\n return stratify;\n}\n\n// To normalize a path, we coerce to a string, strip the trailing slash if any\n// (as long as the trailing slash is not immediately preceded by another slash),\n// and add leading slash if missing.\nfunction normalize(path) {\n path = \"\".concat(path);\n var i = path.length;\n if (slash(path, i - 1) && !slash(path, i - 2)) path = path.slice(0, -1);\n return path[0] === \"/\" ? path : \"/\".concat(path);\n}\n\n// Walk backwards to find the first slash that is not the leading slash, e.g.:\n// \"/foo/bar\" ⇥ \"/foo\", \"/foo\" ⇥ \"/\", \"/\" ↦ \"\". (The root is special-cased\n// because the id of the root must be a truthy value.)\nfunction parentof(path) {\n var i = path.length;\n if (i < 2) return \"\";\n while (--i > 1) if (slash(path, i)) break;\n return path.slice(0, i);\n}\n\n// Slashes can be escaped; to determine whether a slash is a path delimiter, we\n// count the number of preceding backslashes escaping the forward slash: an odd\n// number indicates an escaped forward slash.\nfunction slash(path, i) {\n if (path[i] === \"/\") {\n var k = 0;\n while (i > 0 && path[--i] === \"\\\\\") ++k;\n if ((k & 1) === 0) return true;\n }\n return false;\n}","import { Node } from \"./hierarchy/index.js\";\nfunction defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\n// function radialSeparation(a, b) {\n// return (a.parent === b.parent ? 1 : 2) / a.depth;\n// }\n\n// This function is used to traverse the left contour of a subtree (or\n// subforest). It returns the successor of v on this contour. This successor is\n// either given by the leftmost child of v or by the thread of v. The function\n// returns null if and only if v is on the highest level of its subtree.\nfunction nextLeft(v) {\n var children = v.children;\n return children ? children[0] : v.t;\n}\n\n// This function works analogously to nextLeft.\nfunction nextRight(v) {\n var children = v.children;\n return children ? children[children.length - 1] : v.t;\n}\n\n// Shifts the current subtree rooted at w+. This is done by increasing\n// prelim(w+) and mod(w+) by shift.\nfunction moveSubtree(wm, wp, shift) {\n var change = shift / (wp.i - wm.i);\n wp.c -= change;\n wp.s += shift;\n wm.c += change;\n wp.z += shift;\n wp.m += shift;\n}\n\n// All other shifts, applied to the smaller subtrees between w- and w+, are\n// performed by this function. To prepare the shifts, we have to adjust\n// change(w+), shift(w+), and change(w-).\nfunction executeShifts(v) {\n var shift = 0,\n change = 0,\n children = v.children,\n i = children.length,\n w;\n while (--i >= 0) {\n w = children[i];\n w.z += shift;\n w.m += shift;\n shift += w.s + (change += w.c);\n }\n}\n\n// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise,\n// returns the specified (default) ancestor.\nfunction nextAncestor(vim, v, ancestor) {\n return vim.a.parent === v.parent ? vim.a : ancestor;\n}\nfunction TreeNode(node, i) {\n this._ = node;\n this.parent = null;\n this.children = null;\n this.A = null; // default ancestor\n this.a = this; // ancestor\n this.z = 0; // prelim\n this.m = 0; // mod\n this.c = 0; // change\n this.s = 0; // shift\n this.t = null; // thread\n this.i = i; // number\n}\n\nTreeNode.prototype = Object.create(Node.prototype);\nfunction treeRoot(root) {\n var tree = new TreeNode(root, 0),\n node,\n nodes = [tree],\n child,\n children,\n i,\n n;\n while (node = nodes.pop()) {\n if (children = node._.children) {\n node.children = new Array(n = children.length);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new TreeNode(children[i], i));\n child.parent = node;\n }\n }\n }\n (tree.parent = new TreeNode(null, 0)).children = [tree];\n return tree;\n}\n\n// Node-link tree diagram using the Reingold-Tilford \"tidy\" algorithm\nexport default function () {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = null;\n function tree(root) {\n var t = treeRoot(root);\n\n // Compute the layout using Buchheim et al.’s algorithm.\n t.eachAfter(firstWalk), t.parent.m = -t.z;\n t.eachBefore(secondWalk);\n\n // If a fixed node size is specified, scale x and y.\n if (nodeSize) root.eachBefore(sizeNode);\n\n // If a fixed tree size is specified, scale x and y based on the extent.\n // Compute the left-most, right-most, and depth-most nodes for extents.\n else {\n var left = root,\n right = root,\n bottom = root;\n root.eachBefore(function (node) {\n if (node.x < left.x) left = node;\n if (node.x > right.x) right = node;\n if (node.depth > bottom.depth) bottom = node;\n });\n var s = left === right ? 1 : separation(left, right) / 2,\n tx = s - left.x,\n kx = dx / (right.x + s + tx),\n ky = dy / (bottom.depth || 1);\n root.eachBefore(function (node) {\n node.x = (node.x + tx) * kx;\n node.y = node.depth * ky;\n });\n }\n return root;\n }\n\n // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is\n // applied recursively to the children of v, as well as the function\n // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the\n // node v is placed to the midpoint of its outermost children.\n function firstWalk(v) {\n var children = v.children,\n siblings = v.parent.children,\n w = v.i ? siblings[v.i - 1] : null;\n if (children) {\n executeShifts(v);\n var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n if (w) {\n v.z = w.z + separation(v._, w._);\n v.m = v.z - midpoint;\n } else {\n v.z = midpoint;\n }\n } else if (w) {\n v.z = w.z + separation(v._, w._);\n }\n v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n }\n\n // Computes all real x-coordinates by summing up the modifiers recursively.\n function secondWalk(v) {\n v._.x = v.z + v.parent.m;\n v.m += v.parent.m;\n }\n\n // The core of the algorithm. Here, a new subtree is combined with the\n // previous subtrees. Threads are used to traverse the inside and outside\n // contours of the left and right subtree up to the highest common level. The\n // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the\n // superscript o means outside and i means inside, the subscript - means left\n // subtree and + means right subtree. For summing up the modifiers along the\n // contour, we use respective variables si+, si-, so-, and so+. Whenever two\n // nodes of the inside contours conflict, we compute the left one of the\n // greatest uncommon ancestors using the function ANCESTOR and call MOVE\n // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.\n // Finally, we add a new thread (if necessary).\n function apportion(v, w, ancestor) {\n if (w) {\n var vip = v,\n vop = v,\n vim = w,\n vom = vip.parent.children[0],\n sip = vip.m,\n sop = vop.m,\n sim = vim.m,\n som = vom.m,\n shift;\n while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {\n vom = nextLeft(vom);\n vop = nextRight(vop);\n vop.a = v;\n shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n if (shift > 0) {\n moveSubtree(nextAncestor(vim, v, ancestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.m;\n sip += vip.m;\n som += vom.m;\n sop += vop.m;\n }\n if (vim && !nextRight(vop)) {\n vop.t = vim;\n vop.m += sim - sop;\n }\n if (vip && !nextLeft(vom)) {\n vom.t = vip;\n vom.m += sip - som;\n ancestor = v;\n }\n }\n return ancestor;\n }\n function sizeNode(node) {\n node.x *= dx;\n node.y = node.depth * dy;\n }\n tree.separation = function (x) {\n return arguments.length ? (separation = x, tree) : separation;\n };\n tree.size = function (x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : nodeSize ? null : [dx, dy];\n };\n tree.nodeSize = function (x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : nodeSize ? [dx, dy] : null;\n };\n return tree;\n}","function defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\nfunction meanX(children) {\n return children.reduce(meanXReduce, 0) / children.length;\n}\nfunction meanXReduce(x, c) {\n return x + c.x;\n}\nfunction maxY(children) {\n return 1 + children.reduce(maxYReduce, 0);\n}\nfunction maxYReduce(y, c) {\n return Math.max(y, c.y);\n}\nfunction leafLeft(node) {\n var children;\n while (children = node.children) node = children[0];\n return node;\n}\nfunction leafRight(node) {\n var children;\n while (children = node.children) node = children[children.length - 1];\n return node;\n}\nexport default function () {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = false;\n function cluster(root) {\n var previousNode,\n x = 0;\n\n // First walk, computing the initial x & y values.\n root.eachAfter(function (node) {\n var children = node.children;\n if (children) {\n node.x = meanX(children);\n node.y = maxY(children);\n } else {\n node.x = previousNode ? x += separation(node, previousNode) : 0;\n node.y = 0;\n previousNode = node;\n }\n });\n var left = leafLeft(root),\n right = leafRight(root),\n x0 = left.x - separation(left, right) / 2,\n x1 = right.x + separation(right, left) / 2;\n\n // Second walk, normalizing x & y to the desired size.\n return root.eachAfter(nodeSize ? function (node) {\n node.x = (node.x - root.x) * dx;\n node.y = (root.y - node.y) * dy;\n } : function (node) {\n node.x = (node.x - x0) / (x1 - x0) * dx;\n node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;\n });\n }\n cluster.separation = function (x) {\n return arguments.length ? (separation = x, cluster) : separation;\n };\n cluster.size = function (x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : nodeSize ? null : [dx, dy];\n };\n cluster.nodeSize = function (x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : nodeSize ? [dx, dy] : null;\n };\n return cluster;\n}","export default function (parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (y1 - y0) / parent.value;\n while (++i < n) {\n node = nodes[i], node.x0 = x0, node.x1 = x1;\n node.y0 = y0, node.y1 = y0 += node.value * k;\n }\n}","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\nexport var phi = (1 + Math.sqrt(5)) / 2;\nexport function squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n var rows = [],\n nodes = parent.children,\n row,\n nodeValue,\n i0 = 0,\n i1 = 0,\n n = nodes.length,\n dx,\n dy,\n value = parent.value,\n sumValue,\n minValue,\n maxValue,\n newRatio,\n minRatio,\n alpha,\n beta;\n while (i0 < n) {\n dx = x1 - x0, dy = y1 - y0;\n\n // Find the next non-empty node.\n do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n minValue = maxValue = sumValue;\n alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n beta = sumValue * sumValue * alpha;\n minRatio = Math.max(maxValue / beta, beta / minValue);\n\n // Keep adding nodes while the aspect ratio maintains or improves.\n for (; i1 < n; ++i1) {\n sumValue += nodeValue = nodes[i1].value;\n if (nodeValue < minValue) minValue = nodeValue;\n if (nodeValue > maxValue) maxValue = nodeValue;\n beta = sumValue * sumValue * alpha;\n newRatio = Math.max(maxValue / beta, beta / minValue);\n if (newRatio > minRatio) {\n sumValue -= nodeValue;\n break;\n }\n minRatio = newRatio;\n }\n\n // Position and record the row orientation.\n rows.push(row = {\n value: sumValue,\n dice: dx < dy,\n children: nodes.slice(i0, i1)\n });\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n value -= sumValue, i0 = i1;\n }\n return rows;\n}\nexport default (function custom(ratio) {\n function squarify(parent, x0, y0, x1, y1) {\n squarifyRatio(ratio, parent, x0, y0, x1, y1);\n }\n squarify.ratio = function (x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n return squarify;\n})(phi);","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\nimport { phi, squarifyRatio } from \"./squarify.js\";\nexport default (function custom(ratio) {\n function resquarify(parent, x0, y0, x1, y1) {\n if ((rows = parent._squarify) && rows.ratio === ratio) {\n var rows,\n row,\n nodes,\n i,\n j = -1,\n n,\n m = rows.length,\n value = parent.value;\n while (++j < m) {\n row = rows[j], nodes = row.children;\n for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += (y1 - y0) * row.value / value : y1);else treemapSlice(row, x0, y0, value ? x0 += (x1 - x0) * row.value / value : x1, y1);\n value -= row.value;\n }\n } else {\n parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1);\n rows.ratio = ratio;\n }\n }\n resquarify.ratio = function (x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n return resquarify;\n})(phi);","import { Transform, isTuple, ingest, tupleid, stableCompare } from 'vega-dataflow';\nimport { inherits, error, array, one, truthy, hasOwnProperty } from 'vega-util';\nimport { hierarchy, pack, partition, stratify, tree, cluster, treemap, treemapBinary, treemapDice, treemapSlice, treemapSliceDice, treemapSquarify, treemapResquarify } from 'd3-hierarchy';\n\n// Build lookup table mapping tuple keys to tree node instances\nfunction lookup(tree, key, filter) {\n var map = {};\n tree.each(function (node) {\n var t = node.data;\n if (filter(t)) map[key(t)] = node;\n });\n tree.lookup = map;\n return tree;\n}\n\n/**\n * Nest tuples into a tree structure, grouped by key values.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array} params.keys - The key fields to nest by, in order.\n * @param {boolean} [params.generate=false] - A boolean flag indicating if\n * non-leaf nodes generated by this transform should be included in the\n * output. The default (false) includes only the input data (leaf nodes)\n * in the data stream.\n */\nfunction Nest(params) {\n Transform.call(this, null, params);\n}\nNest.Definition = {\n 'type': 'Nest',\n 'metadata': {\n 'treesource': true,\n 'changes': true\n },\n 'params': [{\n 'name': 'keys',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'generate',\n 'type': 'boolean'\n }]\n};\nvar children = function children(n) {\n return n.values;\n};\ninherits(Nest, Transform, {\n transform: function transform(_, pulse) {\n if (!pulse.source) {\n error('Nest transform requires an upstream data source.');\n }\n var gen = _.generate,\n mod = _.modified(),\n out = pulse.clone(),\n tree = this.value;\n if (!tree || mod || pulse.changed()) {\n // collect nodes to remove\n if (tree) {\n tree.each(function (node) {\n if (node.children && isTuple(node.data)) {\n out.rem.push(node.data);\n }\n });\n }\n\n // generate new tree structure\n this.value = tree = hierarchy({\n values: array(_.keys).reduce(function (n, k) {\n n.key(k);\n return n;\n }, nest()).entries(out.source)\n }, children);\n\n // collect nodes to add\n if (gen) {\n tree.each(function (node) {\n if (node.children) {\n node = ingest(node.data);\n out.add.push(node);\n out.source.push(node);\n }\n });\n }\n\n // build lookup table\n lookup(tree, tupleid, tupleid);\n }\n out.source.root = tree;\n return out;\n }\n});\nfunction nest() {\n var keys = [],\n nest = {\n entries: function entries(array) {\n return _entries(apply(array, 0), 0);\n },\n key: function key(d) {\n return keys.push(d), nest;\n }\n };\n function apply(array, depth) {\n if (depth >= keys.length) {\n return array;\n }\n var n = array.length,\n key = keys[depth++],\n valuesByKey = {},\n result = {};\n var i = -1,\n keyValue,\n value,\n values;\n while (++i < n) {\n keyValue = key(value = array[i]) + '';\n if (values = valuesByKey[keyValue]) {\n values.push(value);\n } else {\n valuesByKey[keyValue] = [value];\n }\n }\n for (keyValue in valuesByKey) {\n result[keyValue] = apply(valuesByKey[keyValue], depth);\n }\n return result;\n }\n function _entries(map, depth) {\n if (++depth > keys.length) return map;\n var array = [];\n for (var key in map) {\n array.push({\n key: key,\n values: _entries(map[key], depth)\n });\n }\n return array;\n }\n return nest;\n}\n\n/**\n * Abstract class for tree layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nfunction HierarchyLayout(params) {\n Transform.call(this, null, params);\n}\nvar defaultSeparation = function defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n};\ninherits(HierarchyLayout, Transform, {\n transform: function transform(_, pulse) {\n if (!pulse.source || !pulse.source.root) {\n error(this.constructor.name + ' transform requires a backing tree data source.');\n }\n var layout = this.layout(_.method),\n fields = this.fields,\n root = pulse.source.root,\n as = _.as || fields;\n if (_.field) root.sum(_.field);else root.count();\n if (_.sort) root.sort(stableCompare(_.sort, function (d) {\n return d.data;\n }));\n setParams(layout, this.params, _);\n if (layout.separation) {\n layout.separation(_.separation !== false ? defaultSeparation : one);\n }\n try {\n this.value = layout(root);\n } catch (err) {\n error(err);\n }\n root.each(function (node) {\n return setFields(node, fields, as);\n });\n return pulse.reflow(_.modified()).modifies(as).modifies('leaf');\n }\n});\nfunction setParams(layout, params, _) {\n for (var p, i = 0, n = params.length; i < n; ++i) {\n p = params[i];\n if (p in _) layout[p](_[p]);\n }\n}\nfunction setFields(node, fields, as) {\n var t = node.data,\n n = fields.length - 1;\n for (var i = 0; i < n; ++i) {\n t[as[i]] = node[fields[i]];\n }\n t[as[n]] = node.children ? node.children.length : 0;\n}\nvar Output$3 = ['x', 'y', 'r', 'depth', 'children'];\n\n/**\n * Packed circle tree layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to size nodes.\n */\nfunction Pack(params) {\n HierarchyLayout.call(this, params);\n}\nPack.Definition = {\n 'type': 'Pack',\n 'metadata': {\n 'tree': true,\n 'modifies': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field'\n }, {\n 'name': 'sort',\n 'type': 'compare'\n }, {\n 'name': 'padding',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'radius',\n 'type': 'field',\n 'default': null\n }, {\n 'name': 'size',\n 'type': 'number',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': Output$3.length,\n 'default': Output$3\n }]\n};\ninherits(Pack, HierarchyLayout, {\n layout: pack,\n params: ['radius', 'size', 'padding'],\n fields: Output$3\n});\nvar Output$2 = ['x0', 'y0', 'x1', 'y1', 'depth', 'children'];\n\n/**\n * Partition tree layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to size nodes.\n */\nfunction Partition(params) {\n HierarchyLayout.call(this, params);\n}\nPartition.Definition = {\n 'type': 'Partition',\n 'metadata': {\n 'tree': true,\n 'modifies': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field'\n }, {\n 'name': 'sort',\n 'type': 'compare'\n }, {\n 'name': 'padding',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'round',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'size',\n 'type': 'number',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': Output$2.length,\n 'default': Output$2\n }]\n};\ninherits(Partition, HierarchyLayout, {\n layout: partition,\n params: ['size', 'round', 'padding'],\n fields: Output$2\n});\n\n/**\n * Stratify a collection of tuples into a tree structure based on\n * id and parent id fields.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.key - Unique key field for each tuple.\n * @param {function(object): *} params.parentKey - Field with key for parent tuple.\n */\nfunction Stratify(params) {\n Transform.call(this, null, params);\n}\nStratify.Definition = {\n 'type': 'Stratify',\n 'metadata': {\n 'treesource': true\n },\n 'params': [{\n 'name': 'key',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'parentKey',\n 'type': 'field',\n 'required': true\n }]\n};\ninherits(Stratify, Transform, {\n transform: function transform(_, pulse) {\n if (!pulse.source) {\n error('Stratify transform requires an upstream data source.');\n }\n var tree = this.value;\n var mod = _.modified(),\n out = pulse.fork(pulse.ALL).materialize(pulse.SOURCE),\n run = !tree || mod || pulse.changed(pulse.ADD_REM) || pulse.modified(_.key.fields) || pulse.modified(_.parentKey.fields);\n\n // prevent upstream source pollution\n out.source = out.source.slice();\n if (run) {\n tree = out.source.length ? lookup(stratify().id(_.key).parentId(_.parentKey)(out.source), _.key, truthy) : lookup(stratify()([{}]), _.key, _.key);\n }\n out.source.root = this.value = tree;\n return out;\n }\n});\nvar Layouts = {\n tidy: tree,\n cluster: cluster\n};\nvar Output$1 = ['x', 'y', 'depth', 'children'];\n\n/**\n * Tree layout. Depending on the method parameter, performs either\n * Reingold-Tilford 'tidy' layout or dendrogram 'cluster' layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nfunction Tree(params) {\n HierarchyLayout.call(this, params);\n}\nTree.Definition = {\n 'type': 'Tree',\n 'metadata': {\n 'tree': true,\n 'modifies': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field'\n }, {\n 'name': 'sort',\n 'type': 'compare'\n }, {\n 'name': 'method',\n 'type': 'enum',\n 'default': 'tidy',\n 'values': ['tidy', 'cluster']\n }, {\n 'name': 'size',\n 'type': 'number',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'nodeSize',\n 'type': 'number',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'separation',\n 'type': 'boolean',\n 'default': true\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': Output$1.length,\n 'default': Output$1\n }]\n};\ninherits(Tree, HierarchyLayout, {\n /**\n * Tree layout generator. Supports both 'tidy' and 'cluster' layouts.\n */\n layout: function layout(method) {\n var m = method || 'tidy';\n if (hasOwnProperty(Layouts, m)) return Layouts[m]();else error('Unrecognized Tree layout method: ' + m);\n },\n params: ['size', 'nodeSize'],\n fields: Output$1\n});\n\n/**\n * Generate tuples representing links between tree nodes.\n * The resulting tuples will contain 'source' and 'target' fields,\n * which point to parent and child node tuples, respectively.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nfunction TreeLinks(params) {\n Transform.call(this, [], params);\n}\nTreeLinks.Definition = {\n 'type': 'TreeLinks',\n 'metadata': {\n 'tree': true,\n 'generates': true,\n 'changes': true\n },\n 'params': []\n};\ninherits(TreeLinks, Transform, {\n transform: function transform(_, pulse) {\n var links = this.value,\n tree = pulse.source && pulse.source.root,\n out = pulse.fork(pulse.NO_SOURCE),\n lut = {};\n if (!tree) error('TreeLinks transform requires a tree data source.');\n if (pulse.changed(pulse.ADD_REM)) {\n // remove previous links\n out.rem = links;\n\n // build lookup table of valid tuples\n pulse.visit(pulse.SOURCE, function (t) {\n return lut[tupleid(t)] = 1;\n });\n\n // generate links for all edges incident on valid tuples\n tree.each(function (node) {\n var t = node.data,\n p = node.parent && node.parent.data;\n if (p && lut[tupleid(t)] && lut[tupleid(p)]) {\n out.add.push(ingest({\n source: p,\n target: t\n }));\n }\n });\n this.value = out.add;\n } else if (pulse.changed(pulse.MOD)) {\n // build lookup table of modified tuples\n pulse.visit(pulse.MOD, function (t) {\n return lut[tupleid(t)] = 1;\n });\n\n // gather links incident on modified tuples\n links.forEach(function (link) {\n if (lut[tupleid(link.source)] || lut[tupleid(link.target)]) {\n out.mod.push(link);\n }\n });\n }\n return out;\n }\n});\nvar Tiles = {\n binary: treemapBinary,\n dice: treemapDice,\n slice: treemapSlice,\n slicedice: treemapSliceDice,\n squarify: treemapSquarify,\n resquarify: treemapResquarify\n};\nvar Output = ['x0', 'y0', 'x1', 'y1', 'depth', 'children'];\n\n/**\n * Treemap layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to size nodes.\n */\nfunction Treemap(params) {\n HierarchyLayout.call(this, params);\n}\nTreemap.Definition = {\n 'type': 'Treemap',\n 'metadata': {\n 'tree': true,\n 'modifies': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field'\n }, {\n 'name': 'sort',\n 'type': 'compare'\n }, {\n 'name': 'method',\n 'type': 'enum',\n 'default': 'squarify',\n 'values': ['squarify', 'resquarify', 'binary', 'dice', 'slice', 'slicedice']\n }, {\n 'name': 'padding',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'paddingInner',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'paddingOuter',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'paddingTop',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'paddingRight',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'paddingBottom',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'paddingLeft',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'ratio',\n 'type': 'number',\n 'default': 1.618033988749895\n }, {\n 'name': 'round',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'size',\n 'type': 'number',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': Output.length,\n 'default': Output\n }]\n};\ninherits(Treemap, HierarchyLayout, {\n /**\n * Treemap layout generator. Adds 'method' and 'ratio' parameters\n * to configure the underlying tile method.\n */\n layout: function layout() {\n var x = treemap();\n x.ratio = function (_) {\n var t = x.tile();\n if (t.ratio) x.tile(t.ratio(_));\n };\n x.method = function (_) {\n if (hasOwnProperty(Tiles, _)) x.tile(Tiles[_]);else error('Unrecognized Treemap layout method: ' + _);\n };\n return x;\n },\n params: ['method', 'ratio', 'size', 'round', 'padding', 'paddingInner', 'paddingOuter', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft'],\n fields: Output\n});\nexport { Nest as nest, Pack as pack, Partition as partition, Stratify as stratify, Tree as tree, TreeLinks as treelinks, Treemap as treemap };","import roundNode from \"./treemap/round.js\";\nimport treemapDice from \"./treemap/dice.js\";\nexport default function () {\n var dx = 1,\n dy = 1,\n padding = 0,\n round = false;\n function partition(root) {\n var n = root.height + 1;\n root.x0 = root.y0 = padding;\n root.x1 = dx;\n root.y1 = dy / n;\n root.eachBefore(positionNode(dy, n));\n if (round) root.eachBefore(roundNode);\n return root;\n }\n function positionNode(dy, n) {\n return function (node) {\n if (node.children) {\n treemapDice(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n);\n }\n var x0 = node.x0,\n y0 = node.y0,\n x1 = node.x1 - padding,\n y1 = node.y1 - padding;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n };\n }\n partition.round = function (x) {\n return arguments.length ? (round = !!x, partition) : round;\n };\n partition.size = function (x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy];\n };\n partition.padding = function (x) {\n return arguments.length ? (padding = +x, partition) : padding;\n };\n return partition;\n}","export default function (parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n i,\n n = nodes.length,\n sum,\n sums = new Array(n + 1);\n for (sums[0] = sum = i = 0; i < n; ++i) {\n sums[i + 1] = sum += nodes[i].value;\n }\n partition(0, n, parent.value, x0, y0, x1, y1);\n function partition(i, j, value, x0, y0, x1, y1) {\n if (i >= j - 1) {\n var node = nodes[i];\n node.x0 = x0, node.y0 = y0;\n node.x1 = x1, node.y1 = y1;\n return;\n }\n var valueOffset = sums[i],\n valueTarget = value / 2 + valueOffset,\n k = i + 1,\n hi = j - 1;\n while (k < hi) {\n var mid = k + hi >>> 1;\n if (sums[mid] < valueTarget) k = mid + 1;else hi = mid;\n }\n if (valueTarget - sums[k - 1] < sums[k] - valueTarget && i + 1 < k) --k;\n var valueLeft = sums[k] - valueOffset,\n valueRight = value - valueLeft;\n if (x1 - x0 > y1 - y0) {\n var xk = value ? (x0 * valueRight + x1 * valueLeft) / value : x1;\n partition(i, k, valueLeft, x0, y0, xk, y1);\n partition(k, j, valueRight, xk, y0, x1, y1);\n } else {\n var yk = value ? (y0 * valueRight + y1 * valueLeft) / value : y1;\n partition(i, k, valueLeft, x0, y0, x1, yk);\n partition(k, j, valueRight, x0, yk, x1, y1);\n }\n }\n}","import dice from \"./dice.js\";\nimport slice from \"./slice.js\";\nexport default function (parent, x0, y0, x1, y1) {\n (parent.depth & 1 ? slice : dice)(parent, x0, y0, x1, y1);\n}","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { Marks, textMetrics } from 'vega-scenegraph';\nimport { canvas } from 'vega-canvas';\nimport { rederive, Transform } from 'vega-dataflow';\nimport { inherits, error, array, isFunction } from 'vega-util';\n\n// bit mask for getting first 2 bytes of alpha value\nvar ALPHA_MASK = 0xff000000;\nfunction baseBitmaps($, data) {\n var bitmap = $.bitmap();\n // when there is no base mark but data points are to be avoided\n (data || []).forEach(function (d) {\n return bitmap.set($(d.boundary[0]), $(d.boundary[3]));\n });\n return [bitmap, undefined];\n}\nfunction markBitmaps($, baseMark, avoidMarks, labelInside, isGroupArea) {\n // create canvas\n var width = $.width,\n height = $.height,\n border = labelInside || isGroupArea,\n context = canvas(width, height).getContext('2d'),\n baseMarkContext = canvas(width, height).getContext('2d'),\n strokeContext = border && canvas(width, height).getContext('2d');\n\n // render all marks to be avoided into canvas\n avoidMarks.forEach(function (items) {\n return draw(context, items, false);\n });\n draw(baseMarkContext, baseMark, false);\n if (border) {\n draw(strokeContext, baseMark, true);\n }\n\n // get canvas buffer, create bitmaps\n var buffer = getBuffer(context, width, height),\n baseMarkBuffer = getBuffer(baseMarkContext, width, height),\n strokeBuffer = border && getBuffer(strokeContext, width, height),\n layer1 = $.bitmap(),\n layer2 = border && $.bitmap();\n\n // populate bitmap layers\n var x, y, u, v, index, alpha, strokeAlpha, baseMarkAlpha;\n for (y = 0; y < height; ++y) {\n for (x = 0; x < width; ++x) {\n index = y * width + x;\n alpha = buffer[index] & ALPHA_MASK;\n baseMarkAlpha = baseMarkBuffer[index] & ALPHA_MASK;\n strokeAlpha = border && strokeBuffer[index] & ALPHA_MASK;\n if (alpha || strokeAlpha || baseMarkAlpha) {\n u = $(x);\n v = $(y);\n if (!isGroupArea && (alpha || baseMarkAlpha)) layer1.set(u, v); // update interior bitmap\n if (border && (alpha || strokeAlpha)) layer2.set(u, v); // update border bitmap\n }\n }\n }\n\n return [layer1, layer2];\n}\nfunction getBuffer(context, width, height) {\n return new Uint32Array(context.getImageData(0, 0, width, height).data.buffer);\n}\nfunction draw(context, items, interior) {\n if (!items.length) return;\n var type = items[0].mark.marktype;\n if (type === 'group') {\n items.forEach(function (group) {\n group.items.forEach(function (mark) {\n return draw(context, mark.items, interior);\n });\n });\n } else {\n Marks[type].draw(context, {\n items: interior ? items.map(prepare) : items\n });\n }\n}\n\n/**\n * Prepare item before drawing into canvas (setting stroke and opacity)\n * @param {object} source item to be prepared\n * @returns prepared item\n */\nfunction prepare(source) {\n var item = rederive(source, {});\n if (item.stroke && item.strokeOpacity !== 0 || item.fill && item.fillOpacity !== 0) {\n return _objectSpread(_objectSpread({}, item), {}, {\n strokeOpacity: 1,\n stroke: '#000',\n fillOpacity: 0\n });\n }\n return item;\n}\nvar DIV = 5,\n // bit shift from x, y index to bit vector array index\n MOD = 31,\n // bit mask for index lookup within a bit vector\n SIZE = 32,\n // individual bit vector size\n RIGHT0 = new Uint32Array(SIZE + 1),\n // left-anchored bit vectors, full -> 0\n RIGHT1 = new Uint32Array(SIZE + 1); // right-anchored bit vectors, 0 -> full\n\nRIGHT1[0] = 0;\nRIGHT0[0] = ~RIGHT1[0];\nfor (var i = 1; i <= SIZE; ++i) {\n RIGHT1[i] = RIGHT1[i - 1] << 1 | 1;\n RIGHT0[i] = ~RIGHT1[i];\n}\nfunction Bitmap(w, h) {\n var array = new Uint32Array(~~((w * h + SIZE) / SIZE));\n function _set(index, mask) {\n array[index] |= mask;\n }\n function _clear(index, mask) {\n array[index] &= mask;\n }\n return {\n array: array,\n get: function get(x, y) {\n var index = y * w + x;\n return array[index >>> DIV] & 1 << (index & MOD);\n },\n set: function set(x, y) {\n var index = y * w + x;\n _set(index >>> DIV, 1 << (index & MOD));\n },\n clear: function clear(x, y) {\n var index = y * w + x;\n _clear(index >>> DIV, ~(1 << (index & MOD)));\n },\n getRange: function getRange(x, y, x2, y2) {\n var r = y2,\n start,\n end,\n indexStart,\n indexEnd;\n for (; r >= y; --r) {\n start = r * w + x;\n end = r * w + x2;\n indexStart = start >>> DIV;\n indexEnd = end >>> DIV;\n if (indexStart === indexEnd) {\n if (array[indexStart] & RIGHT0[start & MOD] & RIGHT1[(end & MOD) + 1]) {\n return true;\n }\n } else {\n if (array[indexStart] & RIGHT0[start & MOD]) return true;\n if (array[indexEnd] & RIGHT1[(end & MOD) + 1]) return true;\n for (var _i = indexStart + 1; _i < indexEnd; ++_i) {\n if (array[_i]) return true;\n }\n }\n }\n return false;\n },\n setRange: function setRange(x, y, x2, y2) {\n var start, end, indexStart, indexEnd, i;\n for (; y <= y2; ++y) {\n start = y * w + x;\n end = y * w + x2;\n indexStart = start >>> DIV;\n indexEnd = end >>> DIV;\n if (indexStart === indexEnd) {\n _set(indexStart, RIGHT0[start & MOD] & RIGHT1[(end & MOD) + 1]);\n } else {\n _set(indexStart, RIGHT0[start & MOD]);\n _set(indexEnd, RIGHT1[(end & MOD) + 1]);\n for (i = indexStart + 1; i < indexEnd; ++i) _set(i, 0xffffffff);\n }\n }\n },\n clearRange: function clearRange(x, y, x2, y2) {\n var start, end, indexStart, indexEnd, i;\n for (; y <= y2; ++y) {\n start = y * w + x;\n end = y * w + x2;\n indexStart = start >>> DIV;\n indexEnd = end >>> DIV;\n if (indexStart === indexEnd) {\n _clear(indexStart, RIGHT1[start & MOD] | RIGHT0[(end & MOD) + 1]);\n } else {\n _clear(indexStart, RIGHT1[start & MOD]);\n _clear(indexEnd, RIGHT0[(end & MOD) + 1]);\n for (i = indexStart + 1; i < indexEnd; ++i) _clear(i, 0);\n }\n }\n },\n outOfBounds: function outOfBounds(x, y, x2, y2) {\n return x < 0 || y < 0 || y2 >= h || x2 >= w;\n }\n };\n}\nfunction scaler(width, height, padding) {\n var ratio = Math.max(1, Math.sqrt(width * height / 1e6)),\n w = ~~((width + 2 * padding + ratio) / ratio),\n h = ~~((height + 2 * padding + ratio) / ratio),\n scale = function scale(_) {\n return ~~((_ + padding) / ratio);\n };\n scale.invert = function (_) {\n return _ * ratio - padding;\n };\n scale.bitmap = function () {\n return Bitmap(w, h);\n };\n scale.ratio = ratio;\n scale.padding = padding;\n scale.width = width;\n scale.height = height;\n return scale;\n}\nfunction placeAreaLabelNaive($, bitmaps, avoidBaseMark, markIndex) {\n var width = $.width,\n height = $.height;\n\n // try to place a label within an input area mark\n return function (d) {\n var items = d.datum.datum.items[markIndex].items,\n // area points\n n = items.length,\n // number of points\n textHeight = d.datum.fontSize,\n // label width\n textWidth = textMetrics.width(d.datum, d.datum.text); // label height\n\n var maxAreaWidth = 0,\n x1,\n x2,\n y1,\n y2,\n x,\n y,\n areaWidth;\n\n // for each area sample point\n for (var _i2 = 0; _i2 < n; ++_i2) {\n x1 = items[_i2].x;\n y1 = items[_i2].y;\n x2 = items[_i2].x2 === undefined ? x1 : items[_i2].x2;\n y2 = items[_i2].y2 === undefined ? y1 : items[_i2].y2;\n x = (x1 + x2) / 2;\n y = (y1 + y2) / 2;\n areaWidth = Math.abs(x2 - x1 + y2 - y1);\n if (areaWidth >= maxAreaWidth) {\n maxAreaWidth = areaWidth;\n d.x = x;\n d.y = y;\n }\n }\n x = textWidth / 2;\n y = textHeight / 2;\n x1 = d.x - x;\n x2 = d.x + x;\n y1 = d.y - y;\n y2 = d.y + y;\n d.align = 'center';\n if (x1 < 0 && x2 <= width) {\n d.align = 'left';\n } else if (0 <= x1 && width < x2) {\n d.align = 'right';\n }\n d.baseline = 'middle';\n if (y1 < 0 && y2 <= height) {\n d.baseline = 'top';\n } else if (0 <= y1 && height < y2) {\n d.baseline = 'bottom';\n }\n return true;\n };\n}\nfunction outOfBounds(x, y, textWidth, textHeight, width, height) {\n var r = textWidth / 2;\n return x - r < 0 || x + r > width || y - (r = textHeight / 2) < 0 || y + r > height;\n}\nfunction collision($, x, y, textHeight, textWidth, h, bm0, bm1) {\n var w = textWidth * h / (textHeight * 2),\n x1 = $(x - w),\n x2 = $(x + w),\n y1 = $(y - (h = h / 2)),\n y2 = $(y + h);\n return bm0.outOfBounds(x1, y1, x2, y2) || bm0.getRange(x1, y1, x2, y2) || bm1 && bm1.getRange(x1, y1, x2, y2);\n}\nfunction placeAreaLabelReducedSearch($, bitmaps, avoidBaseMark, markIndex) {\n var width = $.width,\n height = $.height,\n bm0 = bitmaps[0],\n // where labels have been placed\n bm1 = bitmaps[1]; // area outlines\n\n function tryLabel(_x, _y, maxSize, textWidth, textHeight) {\n var x = $.invert(_x),\n y = $.invert(_y);\n var lo = maxSize,\n hi = height,\n mid;\n if (!outOfBounds(x, y, textWidth, textHeight, width, height) && !collision($, x, y, textHeight, textWidth, lo, bm0, bm1) && !collision($, x, y, textHeight, textWidth, textHeight, bm0, null)) {\n // if the label fits at the current sample point,\n // perform binary search to find the largest font size that fits\n while (hi - lo >= 1) {\n mid = (lo + hi) / 2;\n if (collision($, x, y, textHeight, textWidth, mid, bm0, bm1)) {\n hi = mid;\n } else {\n lo = mid;\n }\n }\n // place label if current lower bound exceeds prior max font size\n if (lo > maxSize) {\n return [x, y, lo, true];\n }\n }\n }\n\n // try to place a label within an input area mark\n return function (d) {\n var items = d.datum.datum.items[markIndex].items,\n // area points\n n = items.length,\n // number of points\n textHeight = d.datum.fontSize,\n // label width\n textWidth = textMetrics.width(d.datum, d.datum.text); // label height\n\n var maxSize = avoidBaseMark ? textHeight : 0,\n labelPlaced = false,\n labelPlaced2 = false,\n maxAreaWidth = 0,\n x1,\n x2,\n y1,\n y2,\n x,\n y,\n _x,\n _y,\n _x1,\n _xMid,\n _x2,\n _y1,\n _yMid,\n _y2,\n areaWidth,\n result,\n swapTmp;\n\n // for each area sample point\n for (var _i3 = 0; _i3 < n; ++_i3) {\n x1 = items[_i3].x;\n y1 = items[_i3].y;\n x2 = items[_i3].x2 === undefined ? x1 : items[_i3].x2;\n y2 = items[_i3].y2 === undefined ? y1 : items[_i3].y2;\n if (x1 > x2) {\n swapTmp = x1;\n x1 = x2;\n x2 = swapTmp;\n }\n if (y1 > y2) {\n swapTmp = y1;\n y1 = y2;\n y2 = swapTmp;\n }\n _x1 = $(x1);\n _x2 = $(x2);\n _xMid = ~~((_x1 + _x2) / 2);\n _y1 = $(y1);\n _y2 = $(y2);\n _yMid = ~~((_y1 + _y2) / 2);\n\n // search along the line from mid point between the 2 border to lower border\n for (_x = _xMid; _x >= _x1; --_x) {\n for (_y = _yMid; _y >= _y1; --_y) {\n result = tryLabel(_x, _y, maxSize, textWidth, textHeight);\n if (result) {\n var _result = result;\n var _result2 = _slicedToArray(_result, 4);\n d.x = _result2[0];\n d.y = _result2[1];\n maxSize = _result2[2];\n labelPlaced = _result2[3];\n }\n }\n }\n\n // search along the line from mid point between the 2 border to upper border\n for (_x = _xMid; _x <= _x2; ++_x) {\n for (_y = _yMid; _y <= _y2; ++_y) {\n result = tryLabel(_x, _y, maxSize, textWidth, textHeight);\n if (result) {\n var _result3 = result;\n var _result4 = _slicedToArray(_result3, 4);\n d.x = _result4[0];\n d.y = _result4[1];\n maxSize = _result4[2];\n labelPlaced = _result4[3];\n }\n }\n }\n\n // place label at slice center if not placed through other means\n // and if we're not avoiding overlap with other areas\n if (!labelPlaced && !avoidBaseMark) {\n // one span is zero, hence we can add\n areaWidth = Math.abs(x2 - x1 + y2 - y1);\n x = (x1 + x2) / 2;\n y = (y1 + y2) / 2;\n\n // place label if it fits and improves the max area width\n if (areaWidth >= maxAreaWidth && !outOfBounds(x, y, textWidth, textHeight, width, height) && !collision($, x, y, textHeight, textWidth, textHeight, bm0, null)) {\n maxAreaWidth = areaWidth;\n d.x = x;\n d.y = y;\n labelPlaced2 = true;\n }\n }\n }\n\n // record current label placement information, update label bitmap\n if (labelPlaced || labelPlaced2) {\n x = textWidth / 2;\n y = textHeight / 2;\n bm0.setRange($(d.x - x), $(d.y - y), $(d.x + x), $(d.y + y));\n d.align = 'center';\n d.baseline = 'middle';\n return true;\n } else {\n return false;\n }\n };\n}\n\n// pixel direction offsets for flood fill search\nvar X_DIR = [-1, -1, 1, 1];\nvar Y_DIR = [-1, 1, -1, 1];\nfunction placeAreaLabelFloodFill($, bitmaps, avoidBaseMark, markIndex) {\n var width = $.width,\n height = $.height,\n bm0 = bitmaps[0],\n // where labels have been placed\n bm1 = bitmaps[1],\n // area outlines\n bm2 = $.bitmap(); // flood-fill visitations\n\n // try to place a label within an input area mark\n return function (d) {\n var items = d.datum.datum.items[markIndex].items,\n // area points\n n = items.length,\n // number of points\n textHeight = d.datum.fontSize,\n // label width\n textWidth = textMetrics.width(d.datum, d.datum.text),\n // label height\n stack = []; // flood fill stack\n\n var maxSize = avoidBaseMark ? textHeight : 0,\n labelPlaced = false,\n labelPlaced2 = false,\n maxAreaWidth = 0,\n x1,\n x2,\n y1,\n y2,\n x,\n y,\n _x,\n _y,\n lo,\n hi,\n mid,\n areaWidth;\n\n // for each area sample point\n for (var _i4 = 0; _i4 < n; ++_i4) {\n x1 = items[_i4].x;\n y1 = items[_i4].y;\n x2 = items[_i4].x2 === undefined ? x1 : items[_i4].x2;\n y2 = items[_i4].y2 === undefined ? y1 : items[_i4].y2;\n\n // add scaled center point to stack\n stack.push([$((x1 + x2) / 2), $((y1 + y2) / 2)]);\n\n // perform flood fill, visit points\n while (stack.length) {\n // exit if point already marked\n var _stack$pop = stack.pop();\n var _stack$pop2 = _slicedToArray(_stack$pop, 2);\n _x = _stack$pop2[0];\n _y = _stack$pop2[1];\n if (bm0.get(_x, _y) || bm1.get(_x, _y) || bm2.get(_x, _y)) continue;\n\n // mark point in flood fill bitmap\n // add search points for all (in bound) directions\n bm2.set(_x, _y);\n for (var j = 0; j < 4; ++j) {\n x = _x + X_DIR[j];\n y = _y + Y_DIR[j];\n if (!bm2.outOfBounds(x, y, x, y)) stack.push([x, y]);\n }\n\n // unscale point back to x, y space\n x = $.invert(_x);\n y = $.invert(_y);\n lo = maxSize;\n hi = height; // TODO: make this bound smaller\n\n if (!outOfBounds(x, y, textWidth, textHeight, width, height) && !collision($, x, y, textHeight, textWidth, lo, bm0, bm1) && !collision($, x, y, textHeight, textWidth, textHeight, bm0, null)) {\n // if the label fits at the current sample point,\n // perform binary search to find the largest font size that fits\n while (hi - lo >= 1) {\n mid = (lo + hi) / 2;\n if (collision($, x, y, textHeight, textWidth, mid, bm0, bm1)) {\n hi = mid;\n } else {\n lo = mid;\n }\n }\n // place label if current lower bound exceeds prior max font size\n if (lo > maxSize) {\n d.x = x;\n d.y = y;\n maxSize = lo;\n labelPlaced = true;\n }\n }\n }\n\n // place label at slice center if not placed through other means\n // and if we're not avoiding overlap with other areas\n if (!labelPlaced && !avoidBaseMark) {\n // one span is zero, hence we can add\n areaWidth = Math.abs(x2 - x1 + y2 - y1);\n x = (x1 + x2) / 2;\n y = (y1 + y2) / 2;\n\n // place label if it fits and improves the max area width\n if (areaWidth >= maxAreaWidth && !outOfBounds(x, y, textWidth, textHeight, width, height) && !collision($, x, y, textHeight, textWidth, textHeight, bm0, null)) {\n maxAreaWidth = areaWidth;\n d.x = x;\n d.y = y;\n labelPlaced2 = true;\n }\n }\n }\n\n // record current label placement information, update label bitmap\n if (labelPlaced || labelPlaced2) {\n x = textWidth / 2;\n y = textHeight / 2;\n bm0.setRange($(d.x - x), $(d.y - y), $(d.x + x), $(d.y + y));\n d.align = 'center';\n d.baseline = 'middle';\n return true;\n } else {\n return false;\n }\n };\n}\nvar Aligns = ['right', 'center', 'left'],\n Baselines = ['bottom', 'middle', 'top'];\nfunction placeMarkLabel($, bitmaps, anchors, offsets) {\n var width = $.width,\n height = $.height,\n bm0 = bitmaps[0],\n bm1 = bitmaps[1],\n n = offsets.length;\n return function (d) {\n var _d$textWidth;\n var boundary = d.boundary,\n textHeight = d.datum.fontSize;\n\n // can not be placed if the mark is not visible in the graph bound\n if (boundary[2] < 0 || boundary[5] < 0 || boundary[0] > width || boundary[3] > height) {\n return false;\n }\n var textWidth = (_d$textWidth = d.textWidth) !== null && _d$textWidth !== void 0 ? _d$textWidth : 0,\n dx,\n dy,\n isInside,\n sizeFactor,\n insideFactor,\n x1,\n x2,\n y1,\n y2,\n xc,\n yc,\n _x1,\n _x2,\n _y1,\n _y2;\n\n // for each anchor and offset\n for (var _i5 = 0; _i5 < n; ++_i5) {\n dx = (anchors[_i5] & 0x3) - 1;\n dy = (anchors[_i5] >>> 0x2 & 0x3) - 1;\n isInside = dx === 0 && dy === 0 || offsets[_i5] < 0;\n sizeFactor = dx && dy ? Math.SQRT1_2 : 1;\n insideFactor = offsets[_i5] < 0 ? -1 : 1;\n x1 = boundary[1 + dx] + offsets[_i5] * dx * sizeFactor;\n yc = boundary[4 + dy] + insideFactor * textHeight * dy / 2 + offsets[_i5] * dy * sizeFactor;\n y1 = yc - textHeight / 2;\n y2 = yc + textHeight / 2;\n _x1 = $(x1);\n _y1 = $(y1);\n _y2 = $(y2);\n if (!textWidth) {\n // to avoid finding width of text label,\n if (!test(_x1, _x1, _y1, _y2, bm0, bm1, x1, x1, y1, y2, boundary, isInside)) {\n // skip this anchor/offset option if we fail to place a label with 1px width\n continue;\n } else {\n // Otherwise, find the label width\n textWidth = textMetrics.width(d.datum, d.datum.text);\n }\n }\n xc = x1 + insideFactor * textWidth * dx / 2;\n x1 = xc - textWidth / 2;\n x2 = xc + textWidth / 2;\n _x1 = $(x1);\n _x2 = $(x2);\n if (test(_x1, _x2, _y1, _y2, bm0, bm1, x1, x2, y1, y2, boundary, isInside)) {\n // place label if the position is placeable\n d.x = !dx ? xc : dx * insideFactor < 0 ? x2 : x1;\n d.y = !dy ? yc : dy * insideFactor < 0 ? y2 : y1;\n d.align = Aligns[dx * insideFactor + 1];\n d.baseline = Baselines[dy * insideFactor + 1];\n bm0.setRange(_x1, _y1, _x2, _y2);\n return true;\n }\n }\n return false;\n };\n}\n\n// Test if a label with the given dimensions can be added without overlap\nfunction test(_x1, _x2, _y1, _y2, bm0, bm1, x1, x2, y1, y2, boundary, isInside) {\n return !(bm0.outOfBounds(_x1, _y1, _x2, _y2) || (isInside && bm1 || bm0).getRange(_x1, _y1, _x2, _y2));\n}\n\n// 8-bit representation of anchors\nvar TOP = 0x0,\n MIDDLE = 0x4,\n BOTTOM = 0x8,\n LEFT = 0x0,\n CENTER = 0x1,\n RIGHT = 0x2;\n\n// Mapping from text anchor to number representation\nvar anchorCode = {\n 'top-left': TOP + LEFT,\n 'top': TOP + CENTER,\n 'top-right': TOP + RIGHT,\n 'left': MIDDLE + LEFT,\n 'middle': MIDDLE + CENTER,\n 'right': MIDDLE + RIGHT,\n 'bottom-left': BOTTOM + LEFT,\n 'bottom': BOTTOM + CENTER,\n 'bottom-right': BOTTOM + RIGHT\n};\nvar placeAreaLabel = {\n 'naive': placeAreaLabelNaive,\n 'reduced-search': placeAreaLabelReducedSearch,\n 'floodfill': placeAreaLabelFloodFill\n};\nfunction labelLayout(texts, size, compare, offset, anchor, avoidMarks, avoidBaseMark, lineAnchor, markIndex, padding, method) {\n // early exit for empty data\n if (!texts.length) return texts;\n var positions = Math.max(offset.length, anchor.length),\n offsets = getOffsets(offset, positions),\n anchors = getAnchors(anchor, positions),\n marktype = markType(texts[0].datum),\n grouptype = marktype === 'group' && texts[0].datum.items[markIndex].marktype,\n isGroupArea = grouptype === 'area',\n boundary = markBoundary(marktype, grouptype, lineAnchor, markIndex),\n infPadding = padding === null || padding === Infinity,\n isNaiveGroupArea = isGroupArea && method === 'naive';\n var maxTextWidth = -1,\n maxTextHeight = -1;\n\n // prepare text mark data for placing\n var data = texts.map(function (d) {\n var textWidth = infPadding ? textMetrics.width(d, d.text) : undefined;\n maxTextWidth = Math.max(maxTextWidth, textWidth);\n maxTextHeight = Math.max(maxTextHeight, d.fontSize);\n return {\n datum: d,\n opacity: 0,\n x: undefined,\n y: undefined,\n align: undefined,\n baseline: undefined,\n boundary: boundary(d),\n textWidth: textWidth\n };\n });\n padding = padding === null || padding === Infinity ? Math.max(maxTextWidth, maxTextHeight) + Math.max.apply(Math, _toConsumableArray(offset)) : padding;\n var $ = scaler(size[0], size[1], padding);\n var bitmaps;\n if (!isNaiveGroupArea) {\n // sort labels in priority order, if comparator is provided\n if (compare) {\n data.sort(function (a, b) {\n return compare(a.datum, b.datum);\n });\n }\n\n // flag indicating if label can be placed inside its base mark\n var labelInside = false;\n for (var _i6 = 0; _i6 < anchors.length && !labelInside; ++_i6) {\n // label inside if anchor is at center\n // label inside if offset to be inside the mark bound\n labelInside = anchors[_i6] === 0x5 || offsets[_i6] < 0;\n }\n\n // extract data information from base mark when base mark is to be avoided\n // base mark is implicitly avoided if it is a group area\n var baseMark = (marktype && avoidBaseMark || isGroupArea) && texts.map(function (d) {\n return d.datum;\n });\n\n // generate bitmaps for layout calculation\n bitmaps = avoidMarks.length || baseMark ? markBitmaps($, baseMark || [], avoidMarks, labelInside, isGroupArea) : baseBitmaps($, avoidBaseMark && data);\n }\n\n // generate label placement function\n var place = isGroupArea ? placeAreaLabel[method]($, bitmaps, avoidBaseMark, markIndex) : placeMarkLabel($, bitmaps, anchors, offsets);\n\n // place all labels\n data.forEach(function (d) {\n return d.opacity = +place(d);\n });\n return data;\n}\nfunction getOffsets(_, count) {\n var offsets = new Float64Array(count),\n n = _.length;\n for (var _i7 = 0; _i7 < n; ++_i7) offsets[_i7] = _[_i7] || 0;\n for (var _i8 = n; _i8 < count; ++_i8) offsets[_i8] = offsets[n - 1];\n return offsets;\n}\nfunction getAnchors(_, count) {\n var anchors = new Int8Array(count),\n n = _.length;\n for (var _i9 = 0; _i9 < n; ++_i9) anchors[_i9] |= anchorCode[_[_i9]];\n for (var _i10 = n; _i10 < count; ++_i10) anchors[_i10] = anchors[n - 1];\n return anchors;\n}\nfunction markType(item) {\n return item && item.mark && item.mark.marktype;\n}\n\n/**\n * Factory function for function for getting base mark boundary, depending\n * on mark and group type. When mark type is undefined, line or area: boundary\n * is the coordinate of each data point. When base mark is grouped line,\n * boundary is either at the start or end of the line depending on the\n * value of lineAnchor. Otherwise, use bounds of base mark.\n */\nfunction markBoundary(marktype, grouptype, lineAnchor, markIndex) {\n var xy = function xy(d) {\n return [d.x, d.x, d.x, d.y, d.y, d.y];\n };\n if (!marktype) {\n return xy; // no reactive geometry\n } else if (marktype === 'line' || marktype === 'area') {\n return function (d) {\n return xy(d.datum);\n };\n } else if (grouptype === 'line') {\n return function (d) {\n var items = d.datum.items[markIndex].items;\n return xy(items.length ? items[lineAnchor === 'start' ? 0 : items.length - 1] : {\n x: NaN,\n y: NaN\n });\n };\n } else {\n return function (d) {\n var b = d.datum.bounds;\n return [b.x1, (b.x1 + b.x2) / 2, b.x2, b.y1, (b.y1 + b.y2) / 2, b.y2];\n };\n }\n}\nvar Output = ['x', 'y', 'opacity', 'align', 'baseline'];\nvar Anchors = ['top-left', 'left', 'bottom-left', 'top', 'bottom', 'top-right', 'right', 'bottom-right'];\n\n/**\n * Compute text label layout to annotate marks.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array} params.size - The size of the layout, provided as a [width, height] array.\n * @param {function(*,*): number} [params.sort] - An optional\n * comparator function for sorting label data in priority order.\n * @param {Array} [params.anchor] - Label anchor points relative to the base mark bounding box.\n * The available options are 'top-left', 'left', 'bottom-left', 'top',\n * 'bottom', 'top-right', 'right', 'bottom-right', 'middle'.\n * @param {Array} [params.offset] - Label offsets (in pixels) from the base mark bounding box.\n * This parameter is parallel to the list of anchor points.\n * @param {number | null} [params.padding=0] - The amount (in pixels) that a label may exceed the layout size.\n * If this parameter is null, a label may exceed the layout size without any boundary.\n * @param {string} [params.lineAnchor='end'] - For group line mark labels only, indicates the anchor\n * position for labels. One of 'start' or 'end'.\n * @param {string} [params.markIndex=0] - For group mark labels only, an index indicating\n * which mark within the group should be labeled.\n * @param {Array} [params.avoidMarks] - A list of additional mark names for which the label\n * layout should avoid overlap.\n * @param {boolean} [params.avoidBaseMark=true] - Boolean flag indicating if labels should avoid\n * overlap with the underlying base mark being labeled.\n * @param {string} [params.method='naive'] - For area make labels only, a method for\n * place labels. One of 'naive', 'reduced-search', or 'floodfill'.\n * @param {Array} [params.as] - The output fields written by the transform.\n * The default is ['x', 'y', 'opacity', 'align', 'baseline'].\n */\nfunction Label(params) {\n Transform.call(this, null, params);\n}\nLabel.Definition = {\n type: 'Label',\n metadata: {\n modifies: true\n },\n params: [{\n name: 'size',\n type: 'number',\n array: true,\n length: 2,\n required: true\n }, {\n name: 'sort',\n type: 'compare'\n }, {\n name: 'anchor',\n type: 'string',\n array: true,\n default: Anchors\n }, {\n name: 'offset',\n type: 'number',\n array: true,\n default: [1]\n }, {\n name: 'padding',\n type: 'number',\n default: 0,\n null: true\n }, {\n name: 'lineAnchor',\n type: 'string',\n values: ['start', 'end'],\n default: 'end'\n }, {\n name: 'markIndex',\n type: 'number',\n default: 0\n }, {\n name: 'avoidBaseMark',\n type: 'boolean',\n default: true\n }, {\n name: 'avoidMarks',\n type: 'data',\n array: true\n }, {\n name: 'method',\n type: 'string',\n default: 'naive'\n }, {\n name: 'as',\n type: 'string',\n array: true,\n length: Output.length,\n default: Output\n }]\n};\ninherits(Label, Transform, {\n transform: function transform(_, pulse) {\n function modp(param) {\n var p = _[param];\n return isFunction(p) && pulse.modified(p.fields);\n }\n var mod = _.modified();\n if (!(mod || pulse.changed(pulse.ADD_REM) || modp('sort'))) return;\n if (!_.size || _.size.length !== 2) {\n error('Size parameter should be specified as a [width, height] array.');\n }\n var as = _.as || Output;\n\n // run label layout\n labelLayout(pulse.materialize(pulse.SOURCE).source || [], _.size, _.sort, array(_.offset == null ? 1 : _.offset), array(_.anchor || Anchors), _.avoidMarks || [], _.avoidBaseMark !== false, _.lineAnchor || 'end', _.markIndex || 0, _.padding === undefined ? 0 : _.padding, _.method || 'naive').forEach(function (l) {\n // write layout results to data stream\n var t = l.datum;\n t[as[0]] = l.x;\n t[as[1]] = l.y;\n t[as[2]] = l.opacity;\n t[as[3]] = l.align;\n t[as[4]] = l.baseline;\n });\n return pulse.reflow(mod).modifies(as);\n }\n});\nexport { Label as label };","import roundNode from \"./round.js\";\nimport squarify from \"./squarify.js\";\nimport { required } from \"../accessors.js\";\nimport constant, { constantZero } from \"../constant.js\";\nexport default function () {\n var tile = squarify,\n round = false,\n dx = 1,\n dy = 1,\n paddingStack = [0],\n paddingInner = constantZero,\n paddingTop = constantZero,\n paddingRight = constantZero,\n paddingBottom = constantZero,\n paddingLeft = constantZero;\n function treemap(root) {\n root.x0 = root.y0 = 0;\n root.x1 = dx;\n root.y1 = dy;\n root.eachBefore(positionNode);\n paddingStack = [0];\n if (round) root.eachBefore(roundNode);\n return root;\n }\n function positionNode(node) {\n var p = paddingStack[node.depth],\n x0 = node.x0 + p,\n y0 = node.y0 + p,\n x1 = node.x1 - p,\n y1 = node.y1 - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n if (node.children) {\n p = paddingStack[node.depth + 1] = paddingInner(node) / 2;\n x0 += paddingLeft(node) - p;\n y0 += paddingTop(node) - p;\n x1 -= paddingRight(node) - p;\n y1 -= paddingBottom(node) - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n tile(node, x0, y0, x1, y1);\n }\n }\n treemap.round = function (x) {\n return arguments.length ? (round = !!x, treemap) : round;\n };\n treemap.size = function (x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];\n };\n treemap.tile = function (x) {\n return arguments.length ? (tile = required(x), treemap) : tile;\n };\n treemap.padding = function (x) {\n return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();\n };\n treemap.paddingInner = function (x) {\n return arguments.length ? (paddingInner = typeof x === \"function\" ? x : constant(+x), treemap) : paddingInner;\n };\n treemap.paddingOuter = function (x) {\n return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();\n };\n treemap.paddingTop = function (x) {\n return arguments.length ? (paddingTop = typeof x === \"function\" ? x : constant(+x), treemap) : paddingTop;\n };\n treemap.paddingRight = function (x) {\n return arguments.length ? (paddingRight = typeof x === \"function\" ? x : constant(+x), treemap) : paddingRight;\n };\n treemap.paddingBottom = function (x) {\n return arguments.length ? (paddingBottom = typeof x === \"function\" ? x : constant(+x), treemap) : paddingBottom;\n };\n treemap.paddingLeft = function (x) {\n return arguments.length ? (paddingLeft = typeof x === \"function\" ? x : constant(+x), treemap) : paddingLeft;\n };\n return treemap;\n}","import { regressionLoess, sampleCurve, regressionConstant, regressionLinear, regressionLog, regressionExp, regressionPow, regressionQuad, regressionPoly } from 'vega-statistics';\nimport { Transform, ingest } from 'vega-dataflow';\nimport { inherits, accessorName, hasOwnProperty, error, extent } from 'vega-util';\nfunction partition(data, groupby) {\n var groups = [],\n get = function get(f) {\n return f(t);\n },\n map,\n i,\n n,\n t,\n k,\n g;\n\n // partition data points into stack groups\n if (groupby == null) {\n groups.push(data);\n } else {\n for (map = {}, i = 0, n = data.length; i < n; ++i) {\n t = data[i];\n k = groupby.map(get);\n g = map[k];\n if (!g) {\n map[k] = g = [];\n g.dims = k;\n groups.push(g);\n }\n g.push(t);\n }\n }\n return groups;\n}\n\n/**\n * Compute locally-weighted regression fits for one or more data groups.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.x - An accessor for the predictor data field.\n * @param {function(object): *} params.y - An accessor for the predicted data field.\n * @param {Array} [params.groupby] - An array of accessors to groupby.\n * @param {number} [params.bandwidth=0.3] - The loess bandwidth.\n */\nfunction Loess(params) {\n Transform.call(this, null, params);\n}\nLoess.Definition = {\n 'type': 'Loess',\n 'metadata': {\n 'generates': true\n },\n 'params': [{\n 'name': 'x',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'y',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'groupby',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'bandwidth',\n 'type': 'number',\n 'default': 0.3\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true\n }]\n};\ninherits(Loess, Transform, {\n transform: function transform(_, pulse) {\n var out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n if (!this.value || pulse.changed() || _.modified()) {\n var source = pulse.materialize(pulse.SOURCE).source,\n groups = partition(source, _.groupby),\n names = (_.groupby || []).map(accessorName),\n m = names.length,\n as = _.as || [accessorName(_.x), accessorName(_.y)],\n values = [];\n groups.forEach(function (g) {\n regressionLoess(g, _.x, _.y, _.bandwidth || 0.3).forEach(function (p) {\n var t = {};\n for (var i = 0; i < m; ++i) {\n t[names[i]] = g.dims[i];\n }\n t[as[0]] = p[0];\n t[as[1]] = p[1];\n values.push(ingest(t));\n });\n });\n if (this.value) out.rem = this.value;\n this.value = out.add = out.source = values;\n }\n return out;\n }\n});\nvar Methods = {\n constant: regressionConstant,\n linear: regressionLinear,\n log: regressionLog,\n exp: regressionExp,\n pow: regressionPow,\n quad: regressionQuad,\n poly: regressionPoly\n};\nvar degreesOfFreedom = function degreesOfFreedom(method, order) {\n return method === 'poly' ? order : method === 'quad' ? 2 : 1;\n};\n\n/**\n * Compute regression fits for one or more data groups.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.x - An accessor for the predictor data field.\n * @param {function(object): *} params.y - An accessor for the predicted data field.\n * @param {string} [params.method='linear'] - The regression method to apply.\n * @param {Array} [params.groupby] - An array of accessors to groupby.\n * @param {Array} [params.extent] - The domain extent over which to plot the regression line.\n * @param {number} [params.order=3] - The polynomial order. Only applies to the 'poly' method.\n */\nfunction Regression(params) {\n Transform.call(this, null, params);\n}\nRegression.Definition = {\n 'type': 'Regression',\n 'metadata': {\n 'generates': true\n },\n 'params': [{\n 'name': 'x',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'y',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'groupby',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'method',\n 'type': 'string',\n 'default': 'linear',\n 'values': Object.keys(Methods)\n }, {\n 'name': 'order',\n 'type': 'number',\n 'default': 3\n }, {\n 'name': 'extent',\n 'type': 'number',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'params',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true\n }]\n};\ninherits(Regression, Transform, {\n transform: function transform(_, pulse) {\n var out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n if (!this.value || pulse.changed() || _.modified()) {\n var source = pulse.materialize(pulse.SOURCE).source,\n groups = partition(source, _.groupby),\n names = (_.groupby || []).map(accessorName),\n method = _.method || 'linear',\n order = _.order == null ? 3 : _.order,\n dof = degreesOfFreedom(method, order),\n as = _.as || [accessorName(_.x), accessorName(_.y)],\n fit = Methods[method],\n values = [];\n var domain = _.extent;\n if (!hasOwnProperty(Methods, method)) {\n error('Invalid regression method: ' + method);\n }\n if (domain != null) {\n if (method === 'log' && domain[0] <= 0) {\n pulse.dataflow.warn('Ignoring extent with values <= 0 for log regression.');\n domain = null;\n }\n }\n groups.forEach(function (g) {\n var n = g.length;\n if (n <= dof) {\n pulse.dataflow.warn('Skipping regression with more parameters than data points.');\n return;\n }\n var model = fit(g, _.x, _.y, order);\n if (_.params) {\n // if parameter vectors requested return those\n values.push(ingest({\n keys: g.dims,\n coef: model.coef,\n rSquared: model.rSquared\n }));\n return;\n }\n var dom = domain || extent(g, _.x),\n add = function add(p) {\n var t = {};\n for (var i = 0; i < names.length; ++i) {\n t[names[i]] = g.dims[i];\n }\n t[as[0]] = p[0];\n t[as[1]] = p[1];\n values.push(ingest(t));\n };\n if (method === 'linear' || method === 'constant') {\n // for linear or constant regression we only need the end points\n dom.forEach(function (x) {\n return add([x, model.predict(x)]);\n });\n } else {\n // otherwise return trend line sample points\n sampleCurve(model.predict, dom, 25, 200).forEach(add);\n }\n });\n if (this.value) out.rem = this.value;\n this.value = out.add = out.source = values;\n }\n return out;\n }\n});\nexport { Loess as loess, Regression as regression };","export var epsilon = 1.1102230246251565e-16;\nexport var splitter = 134217729;\nexport var resulterrbound = (3 + 8 * epsilon) * epsilon;\n\n// fast_expansion_sum_zeroelim routine from oritinal code\nexport function sum(elen, e, flen, f, h) {\n var Q, Qnew, hh, bvirt;\n var enow = e[0];\n var fnow = f[0];\n var eindex = 0;\n var findex = 0;\n if (fnow > enow === fnow > -enow) {\n Q = enow;\n enow = e[++eindex];\n } else {\n Q = fnow;\n fnow = f[++findex];\n }\n var hindex = 0;\n if (eindex < elen && findex < flen) {\n if (fnow > enow === fnow > -enow) {\n Qnew = enow + Q;\n hh = Q - (Qnew - enow);\n enow = e[++eindex];\n } else {\n Qnew = fnow + Q;\n hh = Q - (Qnew - fnow);\n fnow = f[++findex];\n }\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n while (eindex < elen && findex < flen) {\n if (fnow > enow === fnow > -enow) {\n Qnew = Q + enow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (enow - bvirt);\n enow = e[++eindex];\n } else {\n Qnew = Q + fnow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n fnow = f[++findex];\n }\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n }\n while (eindex < elen) {\n Qnew = Q + enow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (enow - bvirt);\n enow = e[++eindex];\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n while (findex < flen) {\n Qnew = Q + fnow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n fnow = f[++findex];\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n if (Q !== 0 || hindex === 0) {\n h[hindex++] = Q;\n }\n return hindex;\n}\nexport function sum_three(alen, a, blen, b, clen, c, tmp, out) {\n return sum(sum(alen, a, blen, b, tmp), tmp, clen, c, out);\n}\n\n// scale_expansion_zeroelim routine from oritinal code\nexport function scale(elen, e, b, h) {\n var Q, sum, hh, product1, product0;\n var bvirt, c, ahi, alo, bhi, blo;\n c = splitter * b;\n bhi = c - (c - b);\n blo = b - bhi;\n var enow = e[0];\n Q = enow * b;\n c = splitter * enow;\n ahi = c - (c - enow);\n alo = enow - ahi;\n hh = alo * blo - (Q - ahi * bhi - alo * bhi - ahi * blo);\n var hindex = 0;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n for (var i = 1; i < elen; i++) {\n enow = e[i];\n product1 = enow * b;\n c = splitter * enow;\n ahi = c - (c - enow);\n alo = enow - ahi;\n product0 = alo * blo - (product1 - ahi * bhi - alo * bhi - ahi * blo);\n sum = Q + product0;\n bvirt = sum - Q;\n hh = Q - (sum - bvirt) + (product0 - bvirt);\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n Q = product1 + sum;\n hh = sum - (Q - product1);\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n if (Q !== 0 || hindex === 0) {\n h[hindex++] = Q;\n }\n return hindex;\n}\nexport function negate(elen, e) {\n for (var i = 0; i < elen; i++) e[i] = -e[i];\n return elen;\n}\nexport function estimate(elen, e) {\n var Q = e[0];\n for (var i = 1; i < elen; i++) Q += e[i];\n return Q;\n}\nexport function vec(n) {\n return new Float64Array(n);\n}","import { epsilon, splitter, resulterrbound, estimate, vec, sum } from './util.js';\nvar ccwerrboundA = (3 + 16 * epsilon) * epsilon;\nvar ccwerrboundB = (2 + 12 * epsilon) * epsilon;\nvar ccwerrboundC = (9 + 64 * epsilon) * epsilon * epsilon;\nvar B = vec(4);\nvar C1 = vec(8);\nvar C2 = vec(12);\nvar D = vec(16);\nvar u = vec(4);\nfunction orient2dadapt(ax, ay, bx, by, cx, cy, detsum) {\n var acxtail, acytail, bcxtail, bcytail;\n var bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;\n var acx = ax - cx;\n var bcx = bx - cx;\n var acy = ay - cy;\n var bcy = by - cy;\n s1 = acx * bcy;\n c = splitter * acx;\n ahi = c - (c - acx);\n alo = acx - ahi;\n c = splitter * bcy;\n bhi = c - (c - bcy);\n blo = bcy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acy * bcx;\n c = splitter * acy;\n ahi = c - (c - acy);\n alo = acy - ahi;\n c = splitter * bcx;\n bhi = c - (c - bcx);\n blo = bcx - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n B[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n B[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n B[2] = _j - (u3 - bvirt) + (_i - bvirt);\n B[3] = u3;\n var det = estimate(4, B);\n var errbound = ccwerrboundB * detsum;\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n bvirt = ax - acx;\n acxtail = ax - (acx + bvirt) + (bvirt - cx);\n bvirt = bx - bcx;\n bcxtail = bx - (bcx + bvirt) + (bvirt - cx);\n bvirt = ay - acy;\n acytail = ay - (acy + bvirt) + (bvirt - cy);\n bvirt = by - bcy;\n bcytail = by - (bcy + bvirt) + (bvirt - cy);\n if (acxtail === 0 && acytail === 0 && bcxtail === 0 && bcytail === 0) {\n return det;\n }\n errbound = ccwerrboundC * detsum + resulterrbound * Math.abs(det);\n det += acx * bcytail + bcy * acxtail - (acy * bcxtail + bcx * acytail);\n if (det >= errbound || -det >= errbound) return det;\n s1 = acxtail * bcy;\n c = splitter * acxtail;\n ahi = c - (c - acxtail);\n alo = acxtail - ahi;\n c = splitter * bcy;\n bhi = c - (c - bcy);\n blo = bcy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acytail * bcx;\n c = splitter * acytail;\n ahi = c - (c - acytail);\n alo = acytail - ahi;\n c = splitter * bcx;\n bhi = c - (c - bcx);\n blo = bcx - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n var C1len = sum(4, B, 4, u, C1);\n s1 = acx * bcytail;\n c = splitter * acx;\n ahi = c - (c - acx);\n alo = acx - ahi;\n c = splitter * bcytail;\n bhi = c - (c - bcytail);\n blo = bcytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acy * bcxtail;\n c = splitter * acy;\n ahi = c - (c - acy);\n alo = acy - ahi;\n c = splitter * bcxtail;\n bhi = c - (c - bcxtail);\n blo = bcxtail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n var C2len = sum(C1len, C1, 4, u, C2);\n s1 = acxtail * bcytail;\n c = splitter * acxtail;\n ahi = c - (c - acxtail);\n alo = acxtail - ahi;\n c = splitter * bcytail;\n bhi = c - (c - bcytail);\n blo = bcytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acytail * bcxtail;\n c = splitter * acytail;\n ahi = c - (c - acytail);\n alo = acytail - ahi;\n c = splitter * bcxtail;\n bhi = c - (c - bcxtail);\n blo = bcxtail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n var Dlen = sum(C2len, C2, 4, u, D);\n return D[Dlen - 1];\n}\nexport function orient2d(ax, ay, bx, by, cx, cy) {\n var detleft = (ay - cy) * (bx - cx);\n var detright = (ax - cx) * (by - cy);\n var det = detleft - detright;\n var detsum = Math.abs(detleft + detright);\n if (Math.abs(det) >= ccwerrboundA * detsum) return det;\n return -orient2dadapt(ax, ay, bx, by, cx, cy, detsum);\n}\nexport function orient2dfast(ax, ay, bx, by, cx, cy) {\n return (ay - cy) * (bx - cx) - (ax - cx) * (by - cy);\n}","import { epsilon, splitter, resulterrbound, estimate, vec, sum, scale } from './util.js';\nvar o3derrboundA = (7 + 56 * epsilon) * epsilon;\nvar o3derrboundB = (3 + 28 * epsilon) * epsilon;\nvar o3derrboundC = (26 + 288 * epsilon) * epsilon * epsilon;\nvar bc = vec(4);\nvar ca = vec(4);\nvar ab = vec(4);\nvar at_b = vec(4);\nvar at_c = vec(4);\nvar bt_c = vec(4);\nvar bt_a = vec(4);\nvar ct_a = vec(4);\nvar ct_b = vec(4);\nvar bct = vec(8);\nvar cat = vec(8);\nvar abt = vec(8);\nvar u = vec(4);\nvar _8 = vec(8);\nvar _8b = vec(8);\nvar _16 = vec(8);\nvar _12 = vec(12);\nvar fin = vec(192);\nvar fin2 = vec(192);\nfunction finadd(finlen, alen, a) {\n finlen = sum(finlen, fin, alen, a, fin2);\n var tmp = fin;\n fin = fin2;\n fin2 = tmp;\n return finlen;\n}\nfunction tailinit(xtail, ytail, ax, ay, bx, by, a, b) {\n var bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, t1, t0, u3, negate;\n if (xtail === 0) {\n if (ytail === 0) {\n a[0] = 0;\n b[0] = 0;\n return 1;\n } else {\n negate = -ytail;\n s1 = negate * ax;\n c = splitter * negate;\n ahi = c - (c - negate);\n alo = negate - ahi;\n c = splitter * ax;\n bhi = c - (c - ax);\n blo = ax - bhi;\n a[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n a[1] = s1;\n s1 = ytail * bx;\n c = splitter * ytail;\n ahi = c - (c - ytail);\n alo = ytail - ahi;\n c = splitter * bx;\n bhi = c - (c - bx);\n blo = bx - bhi;\n b[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n b[1] = s1;\n return 2;\n }\n } else {\n if (ytail === 0) {\n s1 = xtail * ay;\n c = splitter * xtail;\n ahi = c - (c - xtail);\n alo = xtail - ahi;\n c = splitter * ay;\n bhi = c - (c - ay);\n blo = ay - bhi;\n a[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n a[1] = s1;\n negate = -xtail;\n s1 = negate * by;\n c = splitter * negate;\n ahi = c - (c - negate);\n alo = negate - ahi;\n c = splitter * by;\n bhi = c - (c - by);\n blo = by - bhi;\n b[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n b[1] = s1;\n return 2;\n } else {\n s1 = xtail * ay;\n c = splitter * xtail;\n ahi = c - (c - xtail);\n alo = xtail - ahi;\n c = splitter * ay;\n bhi = c - (c - ay);\n blo = ay - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = ytail * ax;\n c = splitter * ytail;\n ahi = c - (c - ytail);\n alo = ytail - ahi;\n c = splitter * ax;\n bhi = c - (c - ax);\n blo = ax - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n a[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n a[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n a[2] = _j - (u3 - bvirt) + (_i - bvirt);\n a[3] = u3;\n s1 = ytail * bx;\n c = splitter * ytail;\n ahi = c - (c - ytail);\n alo = ytail - ahi;\n c = splitter * bx;\n bhi = c - (c - bx);\n blo = bx - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = xtail * by;\n c = splitter * xtail;\n ahi = c - (c - xtail);\n alo = xtail - ahi;\n c = splitter * by;\n bhi = c - (c - by);\n blo = by - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n b[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n b[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n b[2] = _j - (u3 - bvirt) + (_i - bvirt);\n b[3] = u3;\n return 4;\n }\n }\n}\nfunction tailadd(finlen, a, b, k, z) {\n var bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, u3;\n s1 = a * b;\n c = splitter * a;\n ahi = c - (c - a);\n alo = a - ahi;\n c = splitter * b;\n bhi = c - (c - b);\n blo = b - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n c = splitter * k;\n bhi = c - (c - k);\n blo = k - bhi;\n _i = s0 * k;\n c = splitter * s0;\n ahi = c - (c - s0);\n alo = s0 - ahi;\n u[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo);\n _j = s1 * k;\n c = splitter * s1;\n ahi = c - (c - s1);\n alo = s1 - ahi;\n _0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo);\n _k = _i + _0;\n bvirt = _k - _i;\n u[1] = _i - (_k - bvirt) + (_0 - bvirt);\n u3 = _j + _k;\n u[2] = _k - (u3 - _j);\n u[3] = u3;\n finlen = finadd(finlen, 4, u);\n if (z !== 0) {\n c = splitter * z;\n bhi = c - (c - z);\n blo = z - bhi;\n _i = s0 * z;\n c = splitter * s0;\n ahi = c - (c - s0);\n alo = s0 - ahi;\n u[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo);\n _j = s1 * z;\n c = splitter * s1;\n ahi = c - (c - s1);\n alo = s1 - ahi;\n _0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo);\n _k = _i + _0;\n bvirt = _k - _i;\n u[1] = _i - (_k - bvirt) + (_0 - bvirt);\n u3 = _j + _k;\n u[2] = _k - (u3 - _j);\n u[3] = u3;\n finlen = finadd(finlen, 4, u);\n }\n return finlen;\n}\nfunction orient3dadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, permanent) {\n var finlen;\n var adxtail, bdxtail, cdxtail;\n var adytail, bdytail, cdytail;\n var adztail, bdztail, cdztail;\n var bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, t1, t0, u3;\n var adx = ax - dx;\n var bdx = bx - dx;\n var cdx = cx - dx;\n var ady = ay - dy;\n var bdy = by - dy;\n var cdy = cy - dy;\n var adz = az - dz;\n var bdz = bz - dz;\n var cdz = cz - dz;\n s1 = bdx * cdy;\n c = splitter * bdx;\n ahi = c - (c - bdx);\n alo = bdx - ahi;\n c = splitter * cdy;\n bhi = c - (c - cdy);\n blo = cdy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cdx * bdy;\n c = splitter * cdx;\n ahi = c - (c - cdx);\n alo = cdx - ahi;\n c = splitter * bdy;\n bhi = c - (c - bdy);\n blo = bdy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n bc[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n bc[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n bc[2] = _j - (u3 - bvirt) + (_i - bvirt);\n bc[3] = u3;\n s1 = cdx * ady;\n c = splitter * cdx;\n ahi = c - (c - cdx);\n alo = cdx - ahi;\n c = splitter * ady;\n bhi = c - (c - ady);\n blo = ady - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = adx * cdy;\n c = splitter * adx;\n ahi = c - (c - adx);\n alo = adx - ahi;\n c = splitter * cdy;\n bhi = c - (c - cdy);\n blo = cdy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ca[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ca[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ca[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ca[3] = u3;\n s1 = adx * bdy;\n c = splitter * adx;\n ahi = c - (c - adx);\n alo = adx - ahi;\n c = splitter * bdy;\n bhi = c - (c - bdy);\n blo = bdy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bdx * ady;\n c = splitter * bdx;\n ahi = c - (c - bdx);\n alo = bdx - ahi;\n c = splitter * ady;\n bhi = c - (c - ady);\n blo = ady - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ab[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ab[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ab[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ab[3] = u3;\n finlen = sum(sum(scale(4, bc, adz, _8), _8, scale(4, ca, bdz, _8b), _8b, _16), _16, scale(4, ab, cdz, _8), _8, fin);\n var det = estimate(finlen, fin);\n var errbound = o3derrboundB * permanent;\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n bvirt = ax - adx;\n adxtail = ax - (adx + bvirt) + (bvirt - dx);\n bvirt = bx - bdx;\n bdxtail = bx - (bdx + bvirt) + (bvirt - dx);\n bvirt = cx - cdx;\n cdxtail = cx - (cdx + bvirt) + (bvirt - dx);\n bvirt = ay - ady;\n adytail = ay - (ady + bvirt) + (bvirt - dy);\n bvirt = by - bdy;\n bdytail = by - (bdy + bvirt) + (bvirt - dy);\n bvirt = cy - cdy;\n cdytail = cy - (cdy + bvirt) + (bvirt - dy);\n bvirt = az - adz;\n adztail = az - (adz + bvirt) + (bvirt - dz);\n bvirt = bz - bdz;\n bdztail = bz - (bdz + bvirt) + (bvirt - dz);\n bvirt = cz - cdz;\n cdztail = cz - (cdz + bvirt) + (bvirt - dz);\n if (adxtail === 0 && bdxtail === 0 && cdxtail === 0 && adytail === 0 && bdytail === 0 && cdytail === 0 && adztail === 0 && bdztail === 0 && cdztail === 0) {\n return det;\n }\n errbound = o3derrboundC * permanent + resulterrbound * Math.abs(det);\n det += adz * (bdx * cdytail + cdy * bdxtail - (bdy * cdxtail + cdx * bdytail)) + adztail * (bdx * cdy - bdy * cdx) + bdz * (cdx * adytail + ady * cdxtail - (cdy * adxtail + adx * cdytail)) + bdztail * (cdx * ady - cdy * adx) + cdz * (adx * bdytail + bdy * adxtail - (ady * bdxtail + bdx * adytail)) + cdztail * (adx * bdy - ady * bdx);\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n var at_len = tailinit(adxtail, adytail, bdx, bdy, cdx, cdy, at_b, at_c);\n var bt_len = tailinit(bdxtail, bdytail, cdx, cdy, adx, ady, bt_c, bt_a);\n var ct_len = tailinit(cdxtail, cdytail, adx, ady, bdx, bdy, ct_a, ct_b);\n var bctlen = sum(bt_len, bt_c, ct_len, ct_b, bct);\n finlen = finadd(finlen, scale(bctlen, bct, adz, _16), _16);\n var catlen = sum(ct_len, ct_a, at_len, at_c, cat);\n finlen = finadd(finlen, scale(catlen, cat, bdz, _16), _16);\n var abtlen = sum(at_len, at_b, bt_len, bt_a, abt);\n finlen = finadd(finlen, scale(abtlen, abt, cdz, _16), _16);\n if (adztail !== 0) {\n finlen = finadd(finlen, scale(4, bc, adztail, _12), _12);\n finlen = finadd(finlen, scale(bctlen, bct, adztail, _16), _16);\n }\n if (bdztail !== 0) {\n finlen = finadd(finlen, scale(4, ca, bdztail, _12), _12);\n finlen = finadd(finlen, scale(catlen, cat, bdztail, _16), _16);\n }\n if (cdztail !== 0) {\n finlen = finadd(finlen, scale(4, ab, cdztail, _12), _12);\n finlen = finadd(finlen, scale(abtlen, abt, cdztail, _16), _16);\n }\n if (adxtail !== 0) {\n if (bdytail !== 0) {\n finlen = tailadd(finlen, adxtail, bdytail, cdz, cdztail);\n }\n if (cdytail !== 0) {\n finlen = tailadd(finlen, -adxtail, cdytail, bdz, bdztail);\n }\n }\n if (bdxtail !== 0) {\n if (cdytail !== 0) {\n finlen = tailadd(finlen, bdxtail, cdytail, adz, adztail);\n }\n if (adytail !== 0) {\n finlen = tailadd(finlen, -bdxtail, adytail, cdz, cdztail);\n }\n }\n if (cdxtail !== 0) {\n if (adytail !== 0) {\n finlen = tailadd(finlen, cdxtail, adytail, bdz, bdztail);\n }\n if (bdytail !== 0) {\n finlen = tailadd(finlen, -cdxtail, bdytail, adz, adztail);\n }\n }\n return fin[finlen - 1];\n}\nexport function orient3d(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz) {\n var adx = ax - dx;\n var bdx = bx - dx;\n var cdx = cx - dx;\n var ady = ay - dy;\n var bdy = by - dy;\n var cdy = cy - dy;\n var adz = az - dz;\n var bdz = bz - dz;\n var cdz = cz - dz;\n var bdxcdy = bdx * cdy;\n var cdxbdy = cdx * bdy;\n var cdxady = cdx * ady;\n var adxcdy = adx * cdy;\n var adxbdy = adx * bdy;\n var bdxady = bdx * ady;\n var det = adz * (bdxcdy - cdxbdy) + bdz * (cdxady - adxcdy) + cdz * (adxbdy - bdxady);\n var permanent = (Math.abs(bdxcdy) + Math.abs(cdxbdy)) * Math.abs(adz) + (Math.abs(cdxady) + Math.abs(adxcdy)) * Math.abs(bdz) + (Math.abs(adxbdy) + Math.abs(bdxady)) * Math.abs(cdz);\n var errbound = o3derrboundA * permanent;\n if (det > errbound || -det > errbound) {\n return det;\n }\n return orient3dadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, permanent);\n}\nexport function orient3dfast(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz) {\n var adx = ax - dx;\n var bdx = bx - dx;\n var cdx = cx - dx;\n var ady = ay - dy;\n var bdy = by - dy;\n var cdy = cy - dy;\n var adz = az - dz;\n var bdz = bz - dz;\n var cdz = cz - dz;\n return adx * (bdy * cdz - bdz * cdy) + bdx * (cdy * adz - cdz * ady) + cdx * (ady * bdz - adz * bdy);\n}","import { epsilon, splitter, resulterrbound, estimate, vec, sum, sum_three, scale } from './util.js';\nvar iccerrboundA = (10 + 96 * epsilon) * epsilon;\nvar iccerrboundB = (4 + 48 * epsilon) * epsilon;\nvar iccerrboundC = (44 + 576 * epsilon) * epsilon * epsilon;\nvar bc = vec(4);\nvar ca = vec(4);\nvar ab = vec(4);\nvar aa = vec(4);\nvar bb = vec(4);\nvar cc = vec(4);\nvar u = vec(4);\nvar v = vec(4);\nvar axtbc = vec(8);\nvar aytbc = vec(8);\nvar bxtca = vec(8);\nvar bytca = vec(8);\nvar cxtab = vec(8);\nvar cytab = vec(8);\nvar abt = vec(8);\nvar bct = vec(8);\nvar cat = vec(8);\nvar abtt = vec(4);\nvar bctt = vec(4);\nvar catt = vec(4);\nvar _8 = vec(8);\nvar _16 = vec(16);\nvar _16b = vec(16);\nvar _16c = vec(16);\nvar _32 = vec(32);\nvar _32b = vec(32);\nvar _48 = vec(48);\nvar _64 = vec(64);\nvar fin = vec(1152);\nvar fin2 = vec(1152);\nfunction finadd(finlen, a, alen) {\n finlen = sum(finlen, fin, a, alen, fin2);\n var tmp = fin;\n fin = fin2;\n fin2 = tmp;\n return finlen;\n}\nfunction incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent) {\n var finlen;\n var adxtail, bdxtail, cdxtail, adytail, bdytail, cdytail;\n var axtbclen, aytbclen, bxtcalen, bytcalen, cxtablen, cytablen;\n var abtlen, bctlen, catlen;\n var abttlen, bcttlen, cattlen;\n var n1, n0;\n var bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;\n var adx = ax - dx;\n var bdx = bx - dx;\n var cdx = cx - dx;\n var ady = ay - dy;\n var bdy = by - dy;\n var cdy = cy - dy;\n s1 = bdx * cdy;\n c = splitter * bdx;\n ahi = c - (c - bdx);\n alo = bdx - ahi;\n c = splitter * cdy;\n bhi = c - (c - cdy);\n blo = cdy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cdx * bdy;\n c = splitter * cdx;\n ahi = c - (c - cdx);\n alo = cdx - ahi;\n c = splitter * bdy;\n bhi = c - (c - bdy);\n blo = bdy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n bc[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n bc[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n bc[2] = _j - (u3 - bvirt) + (_i - bvirt);\n bc[3] = u3;\n s1 = cdx * ady;\n c = splitter * cdx;\n ahi = c - (c - cdx);\n alo = cdx - ahi;\n c = splitter * ady;\n bhi = c - (c - ady);\n blo = ady - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = adx * cdy;\n c = splitter * adx;\n ahi = c - (c - adx);\n alo = adx - ahi;\n c = splitter * cdy;\n bhi = c - (c - cdy);\n blo = cdy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ca[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ca[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ca[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ca[3] = u3;\n s1 = adx * bdy;\n c = splitter * adx;\n ahi = c - (c - adx);\n alo = adx - ahi;\n c = splitter * bdy;\n bhi = c - (c - bdy);\n blo = bdy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bdx * ady;\n c = splitter * bdx;\n ahi = c - (c - bdx);\n alo = bdx - ahi;\n c = splitter * ady;\n bhi = c - (c - ady);\n blo = ady - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ab[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ab[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ab[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ab[3] = u3;\n finlen = sum(sum(sum(scale(scale(4, bc, adx, _8), _8, adx, _16), _16, scale(scale(4, bc, ady, _8), _8, ady, _16b), _16b, _32), _32, sum(scale(scale(4, ca, bdx, _8), _8, bdx, _16), _16, scale(scale(4, ca, bdy, _8), _8, bdy, _16b), _16b, _32b), _32b, _64), _64, sum(scale(scale(4, ab, cdx, _8), _8, cdx, _16), _16, scale(scale(4, ab, cdy, _8), _8, cdy, _16b), _16b, _32), _32, fin);\n var det = estimate(finlen, fin);\n var errbound = iccerrboundB * permanent;\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n bvirt = ax - adx;\n adxtail = ax - (adx + bvirt) + (bvirt - dx);\n bvirt = ay - ady;\n adytail = ay - (ady + bvirt) + (bvirt - dy);\n bvirt = bx - bdx;\n bdxtail = bx - (bdx + bvirt) + (bvirt - dx);\n bvirt = by - bdy;\n bdytail = by - (bdy + bvirt) + (bvirt - dy);\n bvirt = cx - cdx;\n cdxtail = cx - (cdx + bvirt) + (bvirt - dx);\n bvirt = cy - cdy;\n cdytail = cy - (cdy + bvirt) + (bvirt - dy);\n if (adxtail === 0 && bdxtail === 0 && cdxtail === 0 && adytail === 0 && bdytail === 0 && cdytail === 0) {\n return det;\n }\n errbound = iccerrboundC * permanent + resulterrbound * Math.abs(det);\n det += (adx * adx + ady * ady) * (bdx * cdytail + cdy * bdxtail - (bdy * cdxtail + cdx * bdytail)) + 2 * (adx * adxtail + ady * adytail) * (bdx * cdy - bdy * cdx) + ((bdx * bdx + bdy * bdy) * (cdx * adytail + ady * cdxtail - (cdy * adxtail + adx * cdytail)) + 2 * (bdx * bdxtail + bdy * bdytail) * (cdx * ady - cdy * adx)) + ((cdx * cdx + cdy * cdy) * (adx * bdytail + bdy * adxtail - (ady * bdxtail + bdx * adytail)) + 2 * (cdx * cdxtail + cdy * cdytail) * (adx * bdy - ady * bdx));\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n if (bdxtail !== 0 || bdytail !== 0 || cdxtail !== 0 || cdytail !== 0) {\n s1 = adx * adx;\n c = splitter * adx;\n ahi = c - (c - adx);\n alo = adx - ahi;\n s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo);\n t1 = ady * ady;\n c = splitter * ady;\n ahi = c - (c - ady);\n alo = ady - ahi;\n t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo);\n _i = s0 + t0;\n bvirt = _i - s0;\n aa[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n aa[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n aa[2] = _j - (u3 - bvirt) + (_i - bvirt);\n aa[3] = u3;\n }\n if (cdxtail !== 0 || cdytail !== 0 || adxtail !== 0 || adytail !== 0) {\n s1 = bdx * bdx;\n c = splitter * bdx;\n ahi = c - (c - bdx);\n alo = bdx - ahi;\n s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo);\n t1 = bdy * bdy;\n c = splitter * bdy;\n ahi = c - (c - bdy);\n alo = bdy - ahi;\n t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo);\n _i = s0 + t0;\n bvirt = _i - s0;\n bb[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n bb[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n bb[2] = _j - (u3 - bvirt) + (_i - bvirt);\n bb[3] = u3;\n }\n if (adxtail !== 0 || adytail !== 0 || bdxtail !== 0 || bdytail !== 0) {\n s1 = cdx * cdx;\n c = splitter * cdx;\n ahi = c - (c - cdx);\n alo = cdx - ahi;\n s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo);\n t1 = cdy * cdy;\n c = splitter * cdy;\n ahi = c - (c - cdy);\n alo = cdy - ahi;\n t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo);\n _i = s0 + t0;\n bvirt = _i - s0;\n cc[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n cc[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n cc[2] = _j - (u3 - bvirt) + (_i - bvirt);\n cc[3] = u3;\n }\n if (adxtail !== 0) {\n axtbclen = scale(4, bc, adxtail, axtbc);\n finlen = finadd(finlen, sum_three(scale(axtbclen, axtbc, 2 * adx, _16), _16, scale(scale(4, cc, adxtail, _8), _8, bdy, _16b), _16b, scale(scale(4, bb, adxtail, _8), _8, -cdy, _16c), _16c, _32, _48), _48);\n }\n if (adytail !== 0) {\n aytbclen = scale(4, bc, adytail, aytbc);\n finlen = finadd(finlen, sum_three(scale(aytbclen, aytbc, 2 * ady, _16), _16, scale(scale(4, bb, adytail, _8), _8, cdx, _16b), _16b, scale(scale(4, cc, adytail, _8), _8, -bdx, _16c), _16c, _32, _48), _48);\n }\n if (bdxtail !== 0) {\n bxtcalen = scale(4, ca, bdxtail, bxtca);\n finlen = finadd(finlen, sum_three(scale(bxtcalen, bxtca, 2 * bdx, _16), _16, scale(scale(4, aa, bdxtail, _8), _8, cdy, _16b), _16b, scale(scale(4, cc, bdxtail, _8), _8, -ady, _16c), _16c, _32, _48), _48);\n }\n if (bdytail !== 0) {\n bytcalen = scale(4, ca, bdytail, bytca);\n finlen = finadd(finlen, sum_three(scale(bytcalen, bytca, 2 * bdy, _16), _16, scale(scale(4, cc, bdytail, _8), _8, adx, _16b), _16b, scale(scale(4, aa, bdytail, _8), _8, -cdx, _16c), _16c, _32, _48), _48);\n }\n if (cdxtail !== 0) {\n cxtablen = scale(4, ab, cdxtail, cxtab);\n finlen = finadd(finlen, sum_three(scale(cxtablen, cxtab, 2 * cdx, _16), _16, scale(scale(4, bb, cdxtail, _8), _8, ady, _16b), _16b, scale(scale(4, aa, cdxtail, _8), _8, -bdy, _16c), _16c, _32, _48), _48);\n }\n if (cdytail !== 0) {\n cytablen = scale(4, ab, cdytail, cytab);\n finlen = finadd(finlen, sum_three(scale(cytablen, cytab, 2 * cdy, _16), _16, scale(scale(4, aa, cdytail, _8), _8, bdx, _16b), _16b, scale(scale(4, bb, cdytail, _8), _8, -adx, _16c), _16c, _32, _48), _48);\n }\n if (adxtail !== 0 || adytail !== 0) {\n if (bdxtail !== 0 || bdytail !== 0 || cdxtail !== 0 || cdytail !== 0) {\n s1 = bdxtail * cdy;\n c = splitter * bdxtail;\n ahi = c - (c - bdxtail);\n alo = bdxtail - ahi;\n c = splitter * cdy;\n bhi = c - (c - cdy);\n blo = cdy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bdx * cdytail;\n c = splitter * bdx;\n ahi = c - (c - bdx);\n alo = bdx - ahi;\n c = splitter * cdytail;\n bhi = c - (c - cdytail);\n blo = cdytail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 + t0;\n bvirt = _i - s0;\n u[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n u[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n s1 = cdxtail * -bdy;\n c = splitter * cdxtail;\n ahi = c - (c - cdxtail);\n alo = cdxtail - ahi;\n c = splitter * -bdy;\n bhi = c - (c - -bdy);\n blo = -bdy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cdx * -bdytail;\n c = splitter * cdx;\n ahi = c - (c - cdx);\n alo = cdx - ahi;\n c = splitter * -bdytail;\n bhi = c - (c - -bdytail);\n blo = -bdytail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 + t0;\n bvirt = _i - s0;\n v[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n v[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n v[2] = _j - (u3 - bvirt) + (_i - bvirt);\n v[3] = u3;\n bctlen = sum(4, u, 4, v, bct);\n s1 = bdxtail * cdytail;\n c = splitter * bdxtail;\n ahi = c - (c - bdxtail);\n alo = bdxtail - ahi;\n c = splitter * cdytail;\n bhi = c - (c - cdytail);\n blo = cdytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cdxtail * bdytail;\n c = splitter * cdxtail;\n ahi = c - (c - cdxtail);\n alo = cdxtail - ahi;\n c = splitter * bdytail;\n bhi = c - (c - bdytail);\n blo = bdytail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n bctt[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n bctt[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n bctt[2] = _j - (u3 - bvirt) + (_i - bvirt);\n bctt[3] = u3;\n bcttlen = 4;\n } else {\n bct[0] = 0;\n bctlen = 1;\n bctt[0] = 0;\n bcttlen = 1;\n }\n if (adxtail !== 0) {\n var len = scale(bctlen, bct, adxtail, _16c);\n finlen = finadd(finlen, sum(scale(axtbclen, axtbc, adxtail, _16), _16, scale(len, _16c, 2 * adx, _32), _32, _48), _48);\n var len2 = scale(bcttlen, bctt, adxtail, _8);\n finlen = finadd(finlen, sum_three(scale(len2, _8, 2 * adx, _16), _16, scale(len2, _8, adxtail, _16b), _16b, scale(len, _16c, adxtail, _32), _32, _32b, _64), _64);\n if (bdytail !== 0) {\n finlen = finadd(finlen, scale(scale(4, cc, adxtail, _8), _8, bdytail, _16), _16);\n }\n if (cdytail !== 0) {\n finlen = finadd(finlen, scale(scale(4, bb, -adxtail, _8), _8, cdytail, _16), _16);\n }\n }\n if (adytail !== 0) {\n var _len = scale(bctlen, bct, adytail, _16c);\n finlen = finadd(finlen, sum(scale(aytbclen, aytbc, adytail, _16), _16, scale(_len, _16c, 2 * ady, _32), _32, _48), _48);\n var _len2 = scale(bcttlen, bctt, adytail, _8);\n finlen = finadd(finlen, sum_three(scale(_len2, _8, 2 * ady, _16), _16, scale(_len2, _8, adytail, _16b), _16b, scale(_len, _16c, adytail, _32), _32, _32b, _64), _64);\n }\n }\n if (bdxtail !== 0 || bdytail !== 0) {\n if (cdxtail !== 0 || cdytail !== 0 || adxtail !== 0 || adytail !== 0) {\n s1 = cdxtail * ady;\n c = splitter * cdxtail;\n ahi = c - (c - cdxtail);\n alo = cdxtail - ahi;\n c = splitter * ady;\n bhi = c - (c - ady);\n blo = ady - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cdx * adytail;\n c = splitter * cdx;\n ahi = c - (c - cdx);\n alo = cdx - ahi;\n c = splitter * adytail;\n bhi = c - (c - adytail);\n blo = adytail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 + t0;\n bvirt = _i - s0;\n u[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n u[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n n1 = -cdy;\n n0 = -cdytail;\n s1 = adxtail * n1;\n c = splitter * adxtail;\n ahi = c - (c - adxtail);\n alo = adxtail - ahi;\n c = splitter * n1;\n bhi = c - (c - n1);\n blo = n1 - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = adx * n0;\n c = splitter * adx;\n ahi = c - (c - adx);\n alo = adx - ahi;\n c = splitter * n0;\n bhi = c - (c - n0);\n blo = n0 - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 + t0;\n bvirt = _i - s0;\n v[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n v[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n v[2] = _j - (u3 - bvirt) + (_i - bvirt);\n v[3] = u3;\n catlen = sum(4, u, 4, v, cat);\n s1 = cdxtail * adytail;\n c = splitter * cdxtail;\n ahi = c - (c - cdxtail);\n alo = cdxtail - ahi;\n c = splitter * adytail;\n bhi = c - (c - adytail);\n blo = adytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = adxtail * cdytail;\n c = splitter * adxtail;\n ahi = c - (c - adxtail);\n alo = adxtail - ahi;\n c = splitter * cdytail;\n bhi = c - (c - cdytail);\n blo = cdytail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n catt[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n catt[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n catt[2] = _j - (u3 - bvirt) + (_i - bvirt);\n catt[3] = u3;\n cattlen = 4;\n } else {\n cat[0] = 0;\n catlen = 1;\n catt[0] = 0;\n cattlen = 1;\n }\n if (bdxtail !== 0) {\n var _len3 = scale(catlen, cat, bdxtail, _16c);\n finlen = finadd(finlen, sum(scale(bxtcalen, bxtca, bdxtail, _16), _16, scale(_len3, _16c, 2 * bdx, _32), _32, _48), _48);\n var _len4 = scale(cattlen, catt, bdxtail, _8);\n finlen = finadd(finlen, sum_three(scale(_len4, _8, 2 * bdx, _16), _16, scale(_len4, _8, bdxtail, _16b), _16b, scale(_len3, _16c, bdxtail, _32), _32, _32b, _64), _64);\n if (cdytail !== 0) {\n finlen = finadd(finlen, scale(scale(4, aa, bdxtail, _8), _8, cdytail, _16), _16);\n }\n if (adytail !== 0) {\n finlen = finadd(finlen, scale(scale(4, cc, -bdxtail, _8), _8, adytail, _16), _16);\n }\n }\n if (bdytail !== 0) {\n var _len5 = scale(catlen, cat, bdytail, _16c);\n finlen = finadd(finlen, sum(scale(bytcalen, bytca, bdytail, _16), _16, scale(_len5, _16c, 2 * bdy, _32), _32, _48), _48);\n var _len6 = scale(cattlen, catt, bdytail, _8);\n finlen = finadd(finlen, sum_three(scale(_len6, _8, 2 * bdy, _16), _16, scale(_len6, _8, bdytail, _16b), _16b, scale(_len5, _16c, bdytail, _32), _32, _32b, _64), _64);\n }\n }\n if (cdxtail !== 0 || cdytail !== 0) {\n if (adxtail !== 0 || adytail !== 0 || bdxtail !== 0 || bdytail !== 0) {\n s1 = adxtail * bdy;\n c = splitter * adxtail;\n ahi = c - (c - adxtail);\n alo = adxtail - ahi;\n c = splitter * bdy;\n bhi = c - (c - bdy);\n blo = bdy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = adx * bdytail;\n c = splitter * adx;\n ahi = c - (c - adx);\n alo = adx - ahi;\n c = splitter * bdytail;\n bhi = c - (c - bdytail);\n blo = bdytail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 + t0;\n bvirt = _i - s0;\n u[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n u[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n n1 = -ady;\n n0 = -adytail;\n s1 = bdxtail * n1;\n c = splitter * bdxtail;\n ahi = c - (c - bdxtail);\n alo = bdxtail - ahi;\n c = splitter * n1;\n bhi = c - (c - n1);\n blo = n1 - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bdx * n0;\n c = splitter * bdx;\n ahi = c - (c - bdx);\n alo = bdx - ahi;\n c = splitter * n0;\n bhi = c - (c - n0);\n blo = n0 - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 + t0;\n bvirt = _i - s0;\n v[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n v[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n v[2] = _j - (u3 - bvirt) + (_i - bvirt);\n v[3] = u3;\n abtlen = sum(4, u, 4, v, abt);\n s1 = adxtail * bdytail;\n c = splitter * adxtail;\n ahi = c - (c - adxtail);\n alo = adxtail - ahi;\n c = splitter * bdytail;\n bhi = c - (c - bdytail);\n blo = bdytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bdxtail * adytail;\n c = splitter * bdxtail;\n ahi = c - (c - bdxtail);\n alo = bdxtail - ahi;\n c = splitter * adytail;\n bhi = c - (c - adytail);\n blo = adytail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n abtt[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n abtt[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n abtt[2] = _j - (u3 - bvirt) + (_i - bvirt);\n abtt[3] = u3;\n abttlen = 4;\n } else {\n abt[0] = 0;\n abtlen = 1;\n abtt[0] = 0;\n abttlen = 1;\n }\n if (cdxtail !== 0) {\n var _len7 = scale(abtlen, abt, cdxtail, _16c);\n finlen = finadd(finlen, sum(scale(cxtablen, cxtab, cdxtail, _16), _16, scale(_len7, _16c, 2 * cdx, _32), _32, _48), _48);\n var _len8 = scale(abttlen, abtt, cdxtail, _8);\n finlen = finadd(finlen, sum_three(scale(_len8, _8, 2 * cdx, _16), _16, scale(_len8, _8, cdxtail, _16b), _16b, scale(_len7, _16c, cdxtail, _32), _32, _32b, _64), _64);\n if (adytail !== 0) {\n finlen = finadd(finlen, scale(scale(4, bb, cdxtail, _8), _8, adytail, _16), _16);\n }\n if (bdytail !== 0) {\n finlen = finadd(finlen, scale(scale(4, aa, -cdxtail, _8), _8, bdytail, _16), _16);\n }\n }\n if (cdytail !== 0) {\n var _len9 = scale(abtlen, abt, cdytail, _16c);\n finlen = finadd(finlen, sum(scale(cytablen, cytab, cdytail, _16), _16, scale(_len9, _16c, 2 * cdy, _32), _32, _48), _48);\n var _len10 = scale(abttlen, abtt, cdytail, _8);\n finlen = finadd(finlen, sum_three(scale(_len10, _8, 2 * cdy, _16), _16, scale(_len10, _8, cdytail, _16b), _16b, scale(_len9, _16c, cdytail, _32), _32, _32b, _64), _64);\n }\n }\n return fin[finlen - 1];\n}\nexport function incircle(ax, ay, bx, by, cx, cy, dx, dy) {\n var adx = ax - dx;\n var bdx = bx - dx;\n var cdx = cx - dx;\n var ady = ay - dy;\n var bdy = by - dy;\n var cdy = cy - dy;\n var bdxcdy = bdx * cdy;\n var cdxbdy = cdx * bdy;\n var alift = adx * adx + ady * ady;\n var cdxady = cdx * ady;\n var adxcdy = adx * cdy;\n var blift = bdx * bdx + bdy * bdy;\n var adxbdy = adx * bdy;\n var bdxady = bdx * ady;\n var clift = cdx * cdx + cdy * cdy;\n var det = alift * (bdxcdy - cdxbdy) + blift * (cdxady - adxcdy) + clift * (adxbdy - bdxady);\n var permanent = (Math.abs(bdxcdy) + Math.abs(cdxbdy)) * alift + (Math.abs(cdxady) + Math.abs(adxcdy)) * blift + (Math.abs(adxbdy) + Math.abs(bdxady)) * clift;\n var errbound = iccerrboundA * permanent;\n if (det > errbound || -det > errbound) {\n return det;\n }\n return incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent);\n}\nexport function incirclefast(ax, ay, bx, by, cx, cy, dx, dy) {\n var adx = ax - dx;\n var ady = ay - dy;\n var bdx = bx - dx;\n var bdy = by - dy;\n var cdx = cx - dx;\n var cdy = cy - dy;\n var abdet = adx * bdy - bdx * ady;\n var bcdet = bdx * cdy - cdx * bdy;\n var cadet = cdx * ady - adx * cdy;\n var alift = adx * adx + ady * ady;\n var blift = bdx * bdx + bdy * bdy;\n var clift = cdx * cdx + cdy * cdy;\n return alift * bcdet + blift * cadet + clift * abdet;\n}","import { epsilon, splitter, resulterrbound, estimate, vec, sum, sum_three, scale, negate } from './util.js';\nvar isperrboundA = (16 + 224 * epsilon) * epsilon;\nvar isperrboundB = (5 + 72 * epsilon) * epsilon;\nvar isperrboundC = (71 + 1408 * epsilon) * epsilon * epsilon;\nvar ab = vec(4);\nvar bc = vec(4);\nvar cd = vec(4);\nvar de = vec(4);\nvar ea = vec(4);\nvar ac = vec(4);\nvar bd = vec(4);\nvar ce = vec(4);\nvar da = vec(4);\nvar eb = vec(4);\nvar abc = vec(24);\nvar bcd = vec(24);\nvar cde = vec(24);\nvar dea = vec(24);\nvar eab = vec(24);\nvar abd = vec(24);\nvar bce = vec(24);\nvar cda = vec(24);\nvar deb = vec(24);\nvar eac = vec(24);\nvar adet = vec(1152);\nvar bdet = vec(1152);\nvar cdet = vec(1152);\nvar ddet = vec(1152);\nvar edet = vec(1152);\nvar abdet = vec(2304);\nvar cddet = vec(2304);\nvar cdedet = vec(3456);\nvar deter = vec(5760);\nvar _8 = vec(8);\nvar _8b = vec(8);\nvar _8c = vec(8);\nvar _16 = vec(16);\nvar _24 = vec(24);\nvar _48 = vec(48);\nvar _48b = vec(48);\nvar _96 = vec(96);\nvar _192 = vec(192);\nvar _384x = vec(384);\nvar _384y = vec(384);\nvar _384z = vec(384);\nvar _768 = vec(768);\nfunction sum_three_scale(a, b, c, az, bz, cz, out) {\n return sum_three(scale(4, a, az, _8), _8, scale(4, b, bz, _8b), _8b, scale(4, c, cz, _8c), _8c, _16, out);\n}\nfunction liftexact(alen, a, blen, b, clen, c, dlen, d, x, y, z, out) {\n var len = sum(sum(alen, a, blen, b, _48), _48, negate(sum(clen, c, dlen, d, _48b), _48b), _48b, _96);\n return sum_three(scale(scale(len, _96, x, _192), _192, x, _384x), _384x, scale(scale(len, _96, y, _192), _192, y, _384y), _384y, scale(scale(len, _96, z, _192), _192, z, _384z), _384z, _768, out);\n}\nfunction insphereexact(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez) {\n var bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;\n s1 = ax * by;\n c = splitter * ax;\n ahi = c - (c - ax);\n alo = ax - ahi;\n c = splitter * by;\n bhi = c - (c - by);\n blo = by - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bx * ay;\n c = splitter * bx;\n ahi = c - (c - bx);\n alo = bx - ahi;\n c = splitter * ay;\n bhi = c - (c - ay);\n blo = ay - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ab[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ab[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ab[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ab[3] = u3;\n s1 = bx * cy;\n c = splitter * bx;\n ahi = c - (c - bx);\n alo = bx - ahi;\n c = splitter * cy;\n bhi = c - (c - cy);\n blo = cy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cx * by;\n c = splitter * cx;\n ahi = c - (c - cx);\n alo = cx - ahi;\n c = splitter * by;\n bhi = c - (c - by);\n blo = by - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n bc[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n bc[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n bc[2] = _j - (u3 - bvirt) + (_i - bvirt);\n bc[3] = u3;\n s1 = cx * dy;\n c = splitter * cx;\n ahi = c - (c - cx);\n alo = cx - ahi;\n c = splitter * dy;\n bhi = c - (c - dy);\n blo = dy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = dx * cy;\n c = splitter * dx;\n ahi = c - (c - dx);\n alo = dx - ahi;\n c = splitter * cy;\n bhi = c - (c - cy);\n blo = cy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n cd[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n cd[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n cd[2] = _j - (u3 - bvirt) + (_i - bvirt);\n cd[3] = u3;\n s1 = dx * ey;\n c = splitter * dx;\n ahi = c - (c - dx);\n alo = dx - ahi;\n c = splitter * ey;\n bhi = c - (c - ey);\n blo = ey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = ex * dy;\n c = splitter * ex;\n ahi = c - (c - ex);\n alo = ex - ahi;\n c = splitter * dy;\n bhi = c - (c - dy);\n blo = dy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n de[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n de[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n de[2] = _j - (u3 - bvirt) + (_i - bvirt);\n de[3] = u3;\n s1 = ex * ay;\n c = splitter * ex;\n ahi = c - (c - ex);\n alo = ex - ahi;\n c = splitter * ay;\n bhi = c - (c - ay);\n blo = ay - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = ax * ey;\n c = splitter * ax;\n ahi = c - (c - ax);\n alo = ax - ahi;\n c = splitter * ey;\n bhi = c - (c - ey);\n blo = ey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ea[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ea[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ea[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ea[3] = u3;\n s1 = ax * cy;\n c = splitter * ax;\n ahi = c - (c - ax);\n alo = ax - ahi;\n c = splitter * cy;\n bhi = c - (c - cy);\n blo = cy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cx * ay;\n c = splitter * cx;\n ahi = c - (c - cx);\n alo = cx - ahi;\n c = splitter * ay;\n bhi = c - (c - ay);\n blo = ay - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ac[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ac[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ac[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ac[3] = u3;\n s1 = bx * dy;\n c = splitter * bx;\n ahi = c - (c - bx);\n alo = bx - ahi;\n c = splitter * dy;\n bhi = c - (c - dy);\n blo = dy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = dx * by;\n c = splitter * dx;\n ahi = c - (c - dx);\n alo = dx - ahi;\n c = splitter * by;\n bhi = c - (c - by);\n blo = by - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n bd[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n bd[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n bd[2] = _j - (u3 - bvirt) + (_i - bvirt);\n bd[3] = u3;\n s1 = cx * ey;\n c = splitter * cx;\n ahi = c - (c - cx);\n alo = cx - ahi;\n c = splitter * ey;\n bhi = c - (c - ey);\n blo = ey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = ex * cy;\n c = splitter * ex;\n ahi = c - (c - ex);\n alo = ex - ahi;\n c = splitter * cy;\n bhi = c - (c - cy);\n blo = cy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ce[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ce[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ce[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ce[3] = u3;\n s1 = dx * ay;\n c = splitter * dx;\n ahi = c - (c - dx);\n alo = dx - ahi;\n c = splitter * ay;\n bhi = c - (c - ay);\n blo = ay - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = ax * dy;\n c = splitter * ax;\n ahi = c - (c - ax);\n alo = ax - ahi;\n c = splitter * dy;\n bhi = c - (c - dy);\n blo = dy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n da[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n da[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n da[2] = _j - (u3 - bvirt) + (_i - bvirt);\n da[3] = u3;\n s1 = ex * by;\n c = splitter * ex;\n ahi = c - (c - ex);\n alo = ex - ahi;\n c = splitter * by;\n bhi = c - (c - by);\n blo = by - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bx * ey;\n c = splitter * bx;\n ahi = c - (c - bx);\n alo = bx - ahi;\n c = splitter * ey;\n bhi = c - (c - ey);\n blo = ey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n eb[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n eb[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n eb[2] = _j - (u3 - bvirt) + (_i - bvirt);\n eb[3] = u3;\n var abclen = sum_three_scale(ab, bc, ac, cz, az, -bz, abc);\n var bcdlen = sum_three_scale(bc, cd, bd, dz, bz, -cz, bcd);\n var cdelen = sum_three_scale(cd, de, ce, ez, cz, -dz, cde);\n var dealen = sum_three_scale(de, ea, da, az, dz, -ez, dea);\n var eablen = sum_three_scale(ea, ab, eb, bz, ez, -az, eab);\n var abdlen = sum_three_scale(ab, bd, da, dz, az, bz, abd);\n var bcelen = sum_three_scale(bc, ce, eb, ez, bz, cz, bce);\n var cdalen = sum_three_scale(cd, da, ac, az, cz, dz, cda);\n var deblen = sum_three_scale(de, eb, bd, bz, dz, ez, deb);\n var eaclen = sum_three_scale(ea, ac, ce, cz, ez, az, eac);\n var deterlen = sum_three(liftexact(cdelen, cde, bcelen, bce, deblen, deb, bcdlen, bcd, ax, ay, az, adet), adet, liftexact(dealen, dea, cdalen, cda, eaclen, eac, cdelen, cde, bx, by, bz, bdet), bdet, sum_three(liftexact(eablen, eab, deblen, deb, abdlen, abd, dealen, dea, cx, cy, cz, cdet), cdet, liftexact(abclen, abc, eaclen, eac, bcelen, bce, eablen, eab, dx, dy, dz, ddet), ddet, liftexact(bcdlen, bcd, abdlen, abd, cdalen, cda, abclen, abc, ex, ey, ez, edet), edet, cddet, cdedet), cdedet, abdet, deter);\n return deter[deterlen - 1];\n}\nvar xdet = vec(96);\nvar ydet = vec(96);\nvar zdet = vec(96);\nvar fin = vec(1152);\nfunction liftadapt(a, b, c, az, bz, cz, x, y, z, out) {\n var len = sum_three_scale(a, b, c, az, bz, cz, _24);\n return sum_three(scale(scale(len, _24, x, _48), _48, x, xdet), xdet, scale(scale(len, _24, y, _48), _48, y, ydet), ydet, scale(scale(len, _24, z, _48), _48, z, zdet), zdet, _192, out);\n}\nfunction insphereadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez, permanent) {\n var ab3, bc3, cd3, da3, ac3, bd3;\n var aextail, bextail, cextail, dextail;\n var aeytail, beytail, ceytail, deytail;\n var aeztail, beztail, ceztail, deztail;\n var bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0;\n var aex = ax - ex;\n var bex = bx - ex;\n var cex = cx - ex;\n var dex = dx - ex;\n var aey = ay - ey;\n var bey = by - ey;\n var cey = cy - ey;\n var dey = dy - ey;\n var aez = az - ez;\n var bez = bz - ez;\n var cez = cz - ez;\n var dez = dz - ez;\n s1 = aex * bey;\n c = splitter * aex;\n ahi = c - (c - aex);\n alo = aex - ahi;\n c = splitter * bey;\n bhi = c - (c - bey);\n blo = bey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bex * aey;\n c = splitter * bex;\n ahi = c - (c - bex);\n alo = bex - ahi;\n c = splitter * aey;\n bhi = c - (c - aey);\n blo = aey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ab[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ab[1] = _0 - (_i + bvirt) + (bvirt - t1);\n ab3 = _j + _i;\n bvirt = ab3 - _j;\n ab[2] = _j - (ab3 - bvirt) + (_i - bvirt);\n ab[3] = ab3;\n s1 = bex * cey;\n c = splitter * bex;\n ahi = c - (c - bex);\n alo = bex - ahi;\n c = splitter * cey;\n bhi = c - (c - cey);\n blo = cey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cex * bey;\n c = splitter * cex;\n ahi = c - (c - cex);\n alo = cex - ahi;\n c = splitter * bey;\n bhi = c - (c - bey);\n blo = bey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n bc[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n bc[1] = _0 - (_i + bvirt) + (bvirt - t1);\n bc3 = _j + _i;\n bvirt = bc3 - _j;\n bc[2] = _j - (bc3 - bvirt) + (_i - bvirt);\n bc[3] = bc3;\n s1 = cex * dey;\n c = splitter * cex;\n ahi = c - (c - cex);\n alo = cex - ahi;\n c = splitter * dey;\n bhi = c - (c - dey);\n blo = dey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = dex * cey;\n c = splitter * dex;\n ahi = c - (c - dex);\n alo = dex - ahi;\n c = splitter * cey;\n bhi = c - (c - cey);\n blo = cey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n cd[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n cd[1] = _0 - (_i + bvirt) + (bvirt - t1);\n cd3 = _j + _i;\n bvirt = cd3 - _j;\n cd[2] = _j - (cd3 - bvirt) + (_i - bvirt);\n cd[3] = cd3;\n s1 = dex * aey;\n c = splitter * dex;\n ahi = c - (c - dex);\n alo = dex - ahi;\n c = splitter * aey;\n bhi = c - (c - aey);\n blo = aey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = aex * dey;\n c = splitter * aex;\n ahi = c - (c - aex);\n alo = aex - ahi;\n c = splitter * dey;\n bhi = c - (c - dey);\n blo = dey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n da[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n da[1] = _0 - (_i + bvirt) + (bvirt - t1);\n da3 = _j + _i;\n bvirt = da3 - _j;\n da[2] = _j - (da3 - bvirt) + (_i - bvirt);\n da[3] = da3;\n s1 = aex * cey;\n c = splitter * aex;\n ahi = c - (c - aex);\n alo = aex - ahi;\n c = splitter * cey;\n bhi = c - (c - cey);\n blo = cey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cex * aey;\n c = splitter * cex;\n ahi = c - (c - cex);\n alo = cex - ahi;\n c = splitter * aey;\n bhi = c - (c - aey);\n blo = aey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ac[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ac[1] = _0 - (_i + bvirt) + (bvirt - t1);\n ac3 = _j + _i;\n bvirt = ac3 - _j;\n ac[2] = _j - (ac3 - bvirt) + (_i - bvirt);\n ac[3] = ac3;\n s1 = bex * dey;\n c = splitter * bex;\n ahi = c - (c - bex);\n alo = bex - ahi;\n c = splitter * dey;\n bhi = c - (c - dey);\n blo = dey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = dex * bey;\n c = splitter * dex;\n ahi = c - (c - dex);\n alo = dex - ahi;\n c = splitter * bey;\n bhi = c - (c - bey);\n blo = bey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n bd[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n bd[1] = _0 - (_i + bvirt) + (bvirt - t1);\n bd3 = _j + _i;\n bvirt = bd3 - _j;\n bd[2] = _j - (bd3 - bvirt) + (_i - bvirt);\n bd[3] = bd3;\n var finlen = sum(sum(negate(liftadapt(bc, cd, bd, dez, bez, -cez, aex, aey, aez, adet), adet), adet, liftadapt(cd, da, ac, aez, cez, dez, bex, bey, bez, bdet), bdet, abdet), abdet, sum(negate(liftadapt(da, ab, bd, bez, dez, aez, cex, cey, cez, cdet), cdet), cdet, liftadapt(ab, bc, ac, cez, aez, -bez, dex, dey, dez, ddet), ddet, cddet), cddet, fin);\n var det = estimate(finlen, fin);\n var errbound = isperrboundB * permanent;\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n bvirt = ax - aex;\n aextail = ax - (aex + bvirt) + (bvirt - ex);\n bvirt = ay - aey;\n aeytail = ay - (aey + bvirt) + (bvirt - ey);\n bvirt = az - aez;\n aeztail = az - (aez + bvirt) + (bvirt - ez);\n bvirt = bx - bex;\n bextail = bx - (bex + bvirt) + (bvirt - ex);\n bvirt = by - bey;\n beytail = by - (bey + bvirt) + (bvirt - ey);\n bvirt = bz - bez;\n beztail = bz - (bez + bvirt) + (bvirt - ez);\n bvirt = cx - cex;\n cextail = cx - (cex + bvirt) + (bvirt - ex);\n bvirt = cy - cey;\n ceytail = cy - (cey + bvirt) + (bvirt - ey);\n bvirt = cz - cez;\n ceztail = cz - (cez + bvirt) + (bvirt - ez);\n bvirt = dx - dex;\n dextail = dx - (dex + bvirt) + (bvirt - ex);\n bvirt = dy - dey;\n deytail = dy - (dey + bvirt) + (bvirt - ey);\n bvirt = dz - dez;\n deztail = dz - (dez + bvirt) + (bvirt - ez);\n if (aextail === 0 && aeytail === 0 && aeztail === 0 && bextail === 0 && beytail === 0 && beztail === 0 && cextail === 0 && ceytail === 0 && ceztail === 0 && dextail === 0 && deytail === 0 && deztail === 0) {\n return det;\n }\n errbound = isperrboundC * permanent + resulterrbound * Math.abs(det);\n var abeps = aex * beytail + bey * aextail - (aey * bextail + bex * aeytail);\n var bceps = bex * ceytail + cey * bextail - (bey * cextail + cex * beytail);\n var cdeps = cex * deytail + dey * cextail - (cey * dextail + dex * ceytail);\n var daeps = dex * aeytail + aey * dextail - (dey * aextail + aex * deytail);\n var aceps = aex * ceytail + cey * aextail - (aey * cextail + cex * aeytail);\n var bdeps = bex * deytail + dey * bextail - (bey * dextail + dex * beytail);\n det += (bex * bex + bey * bey + bez * bez) * (cez * daeps + dez * aceps + aez * cdeps + (ceztail * da3 + deztail * ac3 + aeztail * cd3)) + (dex * dex + dey * dey + dez * dez) * (aez * bceps - bez * aceps + cez * abeps + (aeztail * bc3 - beztail * ac3 + ceztail * ab3)) - ((aex * aex + aey * aey + aez * aez) * (bez * cdeps - cez * bdeps + dez * bceps + (beztail * cd3 - ceztail * bd3 + deztail * bc3)) + (cex * cex + cey * cey + cez * cez) * (dez * abeps + aez * bdeps + bez * daeps + (deztail * ab3 + aeztail * bd3 + beztail * da3))) + 2 * ((bex * bextail + bey * beytail + bez * beztail) * (cez * da3 + dez * ac3 + aez * cd3) + (dex * dextail + dey * deytail + dez * deztail) * (aez * bc3 - bez * ac3 + cez * ab3) - ((aex * aextail + aey * aeytail + aez * aeztail) * (bez * cd3 - cez * bd3 + dez * bc3) + (cex * cextail + cey * ceytail + cez * ceztail) * (dez * ab3 + aez * bd3 + bez * da3)));\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n return insphereexact(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez);\n}\nexport function insphere(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez) {\n var aex = ax - ex;\n var bex = bx - ex;\n var cex = cx - ex;\n var dex = dx - ex;\n var aey = ay - ey;\n var bey = by - ey;\n var cey = cy - ey;\n var dey = dy - ey;\n var aez = az - ez;\n var bez = bz - ez;\n var cez = cz - ez;\n var dez = dz - ez;\n var aexbey = aex * bey;\n var bexaey = bex * aey;\n var ab = aexbey - bexaey;\n var bexcey = bex * cey;\n var cexbey = cex * bey;\n var bc = bexcey - cexbey;\n var cexdey = cex * dey;\n var dexcey = dex * cey;\n var cd = cexdey - dexcey;\n var dexaey = dex * aey;\n var aexdey = aex * dey;\n var da = dexaey - aexdey;\n var aexcey = aex * cey;\n var cexaey = cex * aey;\n var ac = aexcey - cexaey;\n var bexdey = bex * dey;\n var dexbey = dex * bey;\n var bd = bexdey - dexbey;\n var alift = aex * aex + aey * aey + aez * aez;\n var blift = bex * bex + bey * bey + bez * bez;\n var clift = cex * cex + cey * cey + cez * cez;\n var dlift = dex * dex + dey * dey + dez * dez;\n var det = clift * (dez * ab + aez * bd + bez * da) - dlift * (aez * bc - bez * ac + cez * ab) + (alift * (bez * cd - cez * bd + dez * bc) - blift * (cez * da + dez * ac + aez * cd));\n var aezplus = Math.abs(aez);\n var bezplus = Math.abs(bez);\n var cezplus = Math.abs(cez);\n var dezplus = Math.abs(dez);\n var aexbeyplus = Math.abs(aexbey) + Math.abs(bexaey);\n var bexceyplus = Math.abs(bexcey) + Math.abs(cexbey);\n var cexdeyplus = Math.abs(cexdey) + Math.abs(dexcey);\n var dexaeyplus = Math.abs(dexaey) + Math.abs(aexdey);\n var aexceyplus = Math.abs(aexcey) + Math.abs(cexaey);\n var bexdeyplus = Math.abs(bexdey) + Math.abs(dexbey);\n var permanent = (cexdeyplus * bezplus + bexdeyplus * cezplus + bexceyplus * dezplus) * alift + (dexaeyplus * cezplus + aexceyplus * dezplus + cexdeyplus * aezplus) * blift + (aexbeyplus * dezplus + bexdeyplus * aezplus + dexaeyplus * bezplus) * clift + (bexceyplus * aezplus + aexceyplus * bezplus + aexbeyplus * cezplus) * dlift;\n var errbound = isperrboundA * permanent;\n if (det > errbound || -det > errbound) {\n return det;\n }\n return -insphereadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez, permanent);\n}\nexport function inspherefast(pax, pay, paz, pbx, pby, pbz, pcx, pcy, pcz, pdx, pdy, pdz, pex, pey, pez) {\n var aex = pax - pex;\n var bex = pbx - pex;\n var cex = pcx - pex;\n var dex = pdx - pex;\n var aey = pay - pey;\n var bey = pby - pey;\n var cey = pcy - pey;\n var dey = pdy - pey;\n var aez = paz - pez;\n var bez = pbz - pez;\n var cez = pcz - pez;\n var dez = pdz - pez;\n var ab = aex * bey - bex * aey;\n var bc = bex * cey - cex * bey;\n var cd = cex * dey - dex * cey;\n var da = dex * aey - aex * dey;\n var ac = aex * cey - cex * aey;\n var bd = bex * dey - dex * bey;\n var abc = aez * bc - bez * ac + cez * ab;\n var bcd = bez * cd - cez * bd + dez * bc;\n var cda = cez * da + dez * ac + aez * cd;\n var dab = dez * ab + aez * bd + bez * da;\n var alift = aex * aex + aey * aey + aez * aez;\n var blift = bex * bex + bey * bey + bez * bez;\n var clift = cex * cex + cey * cey + cez * cez;\n var dlift = dex * dex + dey * dey + dez * dez;\n return clift * dab - dlift * abc + (alift * bcd - blift * cda);\n}","import _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nvar EPSILON = Math.pow(2, -52);\nvar EDGE_STACK = new Uint32Array(512);\nimport { orient2d } from 'robust-predicates';\nvar Delaunator = /*#__PURE__*/function () {\n function Delaunator(coords) {\n _classCallCheck(this, Delaunator);\n var n = coords.length >> 1;\n if (n > 0 && typeof coords[0] !== 'number') throw new Error('Expected coords to contain numbers.');\n this.coords = coords;\n\n // arrays that will store the triangulation graph\n var maxTriangles = Math.max(2 * n - 5, 0);\n this._triangles = new Uint32Array(maxTriangles * 3);\n this._halfedges = new Int32Array(maxTriangles * 3);\n\n // temporary arrays for tracking the edges of the advancing convex hull\n this._hashSize = Math.ceil(Math.sqrt(n));\n this._hullPrev = new Uint32Array(n); // edge to prev edge\n this._hullNext = new Uint32Array(n); // edge to next edge\n this._hullTri = new Uint32Array(n); // edge to adjacent triangle\n this._hullHash = new Int32Array(this._hashSize).fill(-1); // angular edge hash\n\n // temporary arrays for sorting points\n this._ids = new Uint32Array(n);\n this._dists = new Float64Array(n);\n this.update();\n }\n _createClass(Delaunator, [{\n key: \"update\",\n value: function update() {\n var coords = this.coords,\n hullPrev = this._hullPrev,\n hullNext = this._hullNext,\n hullTri = this._hullTri,\n hullHash = this._hullHash;\n var n = coords.length >> 1;\n\n // populate an array of point indices; calculate input data bbox\n var minX = Infinity;\n var minY = Infinity;\n var maxX = -Infinity;\n var maxY = -Infinity;\n for (var i = 0; i < n; i++) {\n var x = coords[2 * i];\n var y = coords[2 * 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 this._ids[i] = i;\n }\n var cx = (minX + maxX) / 2;\n var cy = (minY + maxY) / 2;\n var minDist = Infinity;\n var i0, i1, i2;\n\n // pick a seed point close to the center\n for (var _i = 0; _i < n; _i++) {\n var d = dist(cx, cy, coords[2 * _i], coords[2 * _i + 1]);\n if (d < minDist) {\n i0 = _i;\n minDist = d;\n }\n }\n var i0x = coords[2 * i0];\n var i0y = coords[2 * i0 + 1];\n minDist = Infinity;\n\n // find the point closest to the seed\n for (var _i2 = 0; _i2 < n; _i2++) {\n if (_i2 === i0) continue;\n var _d = dist(i0x, i0y, coords[2 * _i2], coords[2 * _i2 + 1]);\n if (_d < minDist && _d > 0) {\n i1 = _i2;\n minDist = _d;\n }\n }\n var i1x = coords[2 * i1];\n var i1y = coords[2 * i1 + 1];\n var minRadius = Infinity;\n\n // find the third point which forms the smallest circumcircle with the first two\n for (var _i3 = 0; _i3 < n; _i3++) {\n if (_i3 === i0 || _i3 === i1) continue;\n var r = circumradius(i0x, i0y, i1x, i1y, coords[2 * _i3], coords[2 * _i3 + 1]);\n if (r < minRadius) {\n i2 = _i3;\n minRadius = r;\n }\n }\n var i2x = coords[2 * i2];\n var i2y = coords[2 * i2 + 1];\n if (minRadius === Infinity) {\n // order collinear points by dx (or dy if all x are identical)\n // and return the list as a hull\n for (var _i4 = 0; _i4 < n; _i4++) {\n this._dists[_i4] = coords[2 * _i4] - coords[0] || coords[2 * _i4 + 1] - coords[1];\n }\n quicksort(this._ids, this._dists, 0, n - 1);\n var hull = new Uint32Array(n);\n var j = 0;\n for (var _i5 = 0, d0 = -Infinity; _i5 < n; _i5++) {\n var id = this._ids[_i5];\n if (this._dists[id] > d0) {\n hull[j++] = id;\n d0 = this._dists[id];\n }\n }\n this.hull = hull.subarray(0, j);\n this.triangles = new Uint32Array(0);\n this.halfedges = new Uint32Array(0);\n return;\n }\n\n // swap the order of the seed points for counter-clockwise orientation\n if (orient2d(i0x, i0y, i1x, i1y, i2x, i2y) < 0) {\n var _i6 = i1;\n var _x = i1x;\n var _y = i1y;\n i1 = i2;\n i1x = i2x;\n i1y = i2y;\n i2 = _i6;\n i2x = _x;\n i2y = _y;\n }\n var center = circumcenter(i0x, i0y, i1x, i1y, i2x, i2y);\n this._cx = center.x;\n this._cy = center.y;\n for (var _i7 = 0; _i7 < n; _i7++) {\n this._dists[_i7] = dist(coords[2 * _i7], coords[2 * _i7 + 1], center.x, center.y);\n }\n\n // sort the points by distance from the seed triangle circumcenter\n quicksort(this._ids, this._dists, 0, n - 1);\n\n // set up the seed triangle as the starting hull\n this._hullStart = i0;\n var hullSize = 3;\n hullNext[i0] = hullPrev[i2] = i1;\n hullNext[i1] = hullPrev[i0] = i2;\n hullNext[i2] = hullPrev[i1] = i0;\n hullTri[i0] = 0;\n hullTri[i1] = 1;\n hullTri[i2] = 2;\n hullHash.fill(-1);\n hullHash[this._hashKey(i0x, i0y)] = i0;\n hullHash[this._hashKey(i1x, i1y)] = i1;\n hullHash[this._hashKey(i2x, i2y)] = i2;\n this.trianglesLen = 0;\n this._addTriangle(i0, i1, i2, -1, -1, -1);\n for (var k = 0, xp, yp; k < this._ids.length; k++) {\n var _i8 = this._ids[k];\n var _x2 = coords[2 * _i8];\n var _y2 = coords[2 * _i8 + 1];\n\n // skip near-duplicate points\n if (k > 0 && Math.abs(_x2 - xp) <= EPSILON && Math.abs(_y2 - yp) <= EPSILON) continue;\n xp = _x2;\n yp = _y2;\n\n // skip seed triangle points\n if (_i8 === i0 || _i8 === i1 || _i8 === i2) continue;\n\n // find a visible edge on the convex hull using edge hash\n var start = 0;\n for (var _j = 0, key = this._hashKey(_x2, _y2); _j < this._hashSize; _j++) {\n start = hullHash[(key + _j) % this._hashSize];\n if (start !== -1 && start !== hullNext[start]) break;\n }\n start = hullPrev[start];\n var e = start,\n q = void 0;\n while (q = hullNext[e], orient2d(_x2, _y2, coords[2 * e], coords[2 * e + 1], coords[2 * q], coords[2 * q + 1]) >= 0) {\n e = q;\n if (e === start) {\n e = -1;\n break;\n }\n }\n if (e === -1) continue; // likely a near-duplicate point; skip it\n\n // add the first triangle from the point\n var t = this._addTriangle(e, _i8, hullNext[e], -1, -1, hullTri[e]);\n\n // recursively flip triangles from the point until they satisfy the Delaunay condition\n hullTri[_i8] = this._legalize(t + 2);\n hullTri[e] = t; // keep track of boundary triangles on the hull\n hullSize++;\n\n // walk forward through the hull, adding more triangles and flipping recursively\n var _n = hullNext[e];\n while (q = hullNext[_n], orient2d(_x2, _y2, coords[2 * _n], coords[2 * _n + 1], coords[2 * q], coords[2 * q + 1]) < 0) {\n t = this._addTriangle(_n, _i8, q, hullTri[_i8], -1, hullTri[_n]);\n hullTri[_i8] = this._legalize(t + 2);\n hullNext[_n] = _n; // mark as removed\n hullSize--;\n _n = q;\n }\n\n // walk backward from the other side, adding more triangles and flipping\n if (e === start) {\n while (q = hullPrev[e], orient2d(_x2, _y2, coords[2 * q], coords[2 * q + 1], coords[2 * e], coords[2 * e + 1]) < 0) {\n t = this._addTriangle(q, _i8, e, -1, hullTri[e], hullTri[q]);\n this._legalize(t + 2);\n hullTri[q] = t;\n hullNext[e] = e; // mark as removed\n hullSize--;\n e = q;\n }\n }\n\n // update the hull indices\n this._hullStart = hullPrev[_i8] = e;\n hullNext[e] = hullPrev[_n] = _i8;\n hullNext[_i8] = _n;\n\n // save the two new edges in the hash table\n hullHash[this._hashKey(_x2, _y2)] = _i8;\n hullHash[this._hashKey(coords[2 * e], coords[2 * e + 1])] = e;\n }\n this.hull = new Uint32Array(hullSize);\n for (var _i9 = 0, _e = this._hullStart; _i9 < hullSize; _i9++) {\n this.hull[_i9] = _e;\n _e = hullNext[_e];\n }\n\n // trim typed triangle mesh arrays\n this.triangles = this._triangles.subarray(0, this.trianglesLen);\n this.halfedges = this._halfedges.subarray(0, this.trianglesLen);\n }\n }, {\n key: \"_hashKey\",\n value: function _hashKey(x, y) {\n return Math.floor(pseudoAngle(x - this._cx, y - this._cy) * this._hashSize) % this._hashSize;\n }\n }, {\n key: \"_legalize\",\n value: function _legalize(a) {\n var triangles = this._triangles,\n halfedges = this._halfedges,\n coords = this.coords;\n var i = 0;\n var ar = 0;\n\n // recursion eliminated with a fixed-size stack\n while (true) {\n var b = halfedges[a];\n\n /* if the pair of triangles doesn't satisfy the Delaunay condition\n * (p1 is inside the circumcircle of [p0, pl, pr]), flip them,\n * then do the same check/flip recursively for the new pair of triangles\n *\n * pl pl\n * /||\\ / \\\n * al/ || \\bl al/ \\a\n * / || \\ / \\\n * / a||b \\ flip /___ar___\\\n * p0\\ || /p1 => p0\\---bl---/p1\n * \\ || / \\ /\n * ar\\ || /br b\\ /br\n * \\||/ \\ /\n * pr pr\n */\n var a0 = a - a % 3;\n ar = a0 + (a + 2) % 3;\n if (b === -1) {\n // convex hull edge\n if (i === 0) break;\n a = EDGE_STACK[--i];\n continue;\n }\n var b0 = b - b % 3;\n var al = a0 + (a + 1) % 3;\n var bl = b0 + (b + 2) % 3;\n var p0 = triangles[ar];\n var pr = triangles[a];\n var pl = triangles[al];\n var p1 = triangles[bl];\n var illegal = inCircle(coords[2 * p0], coords[2 * p0 + 1], coords[2 * pr], coords[2 * pr + 1], coords[2 * pl], coords[2 * pl + 1], coords[2 * p1], coords[2 * p1 + 1]);\n if (illegal) {\n triangles[a] = p1;\n triangles[b] = p0;\n var hbl = halfedges[bl];\n\n // edge swapped on the other side of the hull (rare); fix the halfedge reference\n if (hbl === -1) {\n var e = this._hullStart;\n do {\n if (this._hullTri[e] === bl) {\n this._hullTri[e] = a;\n break;\n }\n e = this._hullPrev[e];\n } while (e !== this._hullStart);\n }\n this._link(a, hbl);\n this._link(b, halfedges[ar]);\n this._link(ar, bl);\n var br = b0 + (b + 1) % 3;\n\n // don't worry about hitting the cap: it can only happen on extremely degenerate input\n if (i < EDGE_STACK.length) {\n EDGE_STACK[i++] = br;\n }\n } else {\n if (i === 0) break;\n a = EDGE_STACK[--i];\n }\n }\n return ar;\n }\n }, {\n key: \"_link\",\n value: function _link(a, b) {\n this._halfedges[a] = b;\n if (b !== -1) this._halfedges[b] = a;\n }\n\n // add a new triangle given vertex indices and adjacent half-edge ids\n }, {\n key: \"_addTriangle\",\n value: function _addTriangle(i0, i1, i2, a, b, c) {\n var t = this.trianglesLen;\n this._triangles[t] = i0;\n this._triangles[t + 1] = i1;\n this._triangles[t + 2] = i2;\n this._link(t, a);\n this._link(t + 1, b);\n this._link(t + 2, c);\n this.trianglesLen += 3;\n return t;\n }\n }], [{\n key: \"from\",\n value: function from(points) {\n var getX = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultGetX;\n var getY = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultGetY;\n var n = points.length;\n var coords = new Float64Array(n * 2);\n for (var i = 0; i < n; i++) {\n var p = points[i];\n coords[2 * i] = getX(p);\n coords[2 * i + 1] = getY(p);\n }\n return new Delaunator(coords);\n }\n }]);\n return Delaunator;\n}(); // monotonically increases with real angle, but doesn't need expensive trigonometry\nexport { Delaunator as default };\nfunction pseudoAngle(dx, dy) {\n var p = dx / (Math.abs(dx) + Math.abs(dy));\n return (dy > 0 ? 3 - p : 1 + p) / 4; // [0..1]\n}\n\nfunction dist(ax, ay, bx, by) {\n var dx = ax - bx;\n var dy = ay - by;\n return dx * dx + dy * dy;\n}\nfunction inCircle(ax, ay, bx, by, cx, cy, px, py) {\n var dx = ax - px;\n var dy = ay - py;\n var ex = bx - px;\n var ey = by - py;\n var fx = cx - px;\n var fy = cy - py;\n var ap = dx * dx + dy * dy;\n var bp = ex * ex + ey * ey;\n var cp = fx * fx + fy * fy;\n return dx * (ey * cp - bp * fy) - dy * (ex * cp - bp * fx) + ap * (ex * fy - ey * fx) < 0;\n}\nfunction circumradius(ax, ay, bx, by, cx, cy) {\n var dx = bx - ax;\n var dy = by - ay;\n var ex = cx - ax;\n var ey = cy - ay;\n var bl = dx * dx + dy * dy;\n var cl = ex * ex + ey * ey;\n var d = 0.5 / (dx * ey - dy * ex);\n var x = (ey * bl - dy * cl) * d;\n var y = (dx * cl - ex * bl) * d;\n return x * x + y * y;\n}\nfunction circumcenter(ax, ay, bx, by, cx, cy) {\n var dx = bx - ax;\n var dy = by - ay;\n var ex = cx - ax;\n var ey = cy - ay;\n var bl = dx * dx + dy * dy;\n var cl = ex * ex + ey * ey;\n var d = 0.5 / (dx * ey - dy * ex);\n var x = ax + (ey * bl - dy * cl) * d;\n var y = ay + (dx * cl - ex * bl) * d;\n return {\n x: x,\n y: y\n };\n}\nfunction quicksort(ids, dists, left, right) {\n if (right - left <= 20) {\n for (var i = left + 1; i <= right; i++) {\n var temp = ids[i];\n var tempDist = dists[temp];\n var j = i - 1;\n while (j >= left && dists[ids[j]] > tempDist) ids[j + 1] = ids[j--];\n ids[j + 1] = temp;\n }\n } else {\n var median = left + right >> 1;\n var _i10 = left + 1;\n var _j2 = right;\n swap(ids, median, _i10);\n if (dists[ids[left]] > dists[ids[right]]) swap(ids, left, right);\n if (dists[ids[_i10]] > dists[ids[right]]) swap(ids, _i10, right);\n if (dists[ids[left]] > dists[ids[_i10]]) swap(ids, left, _i10);\n var _temp = ids[_i10];\n var _tempDist = dists[_temp];\n while (true) {\n do _i10++; while (dists[ids[_i10]] < _tempDist);\n do _j2--; while (dists[ids[_j2]] > _tempDist);\n if (_j2 < _i10) break;\n swap(ids, _i10, _j2);\n }\n ids[left + 1] = ids[_j2];\n ids[_j2] = _temp;\n if (right - _i10 + 1 >= _j2 - left) {\n quicksort(ids, dists, _i10, right);\n quicksort(ids, dists, left, _j2 - 1);\n } else {\n quicksort(ids, dists, left, _j2 - 1);\n quicksort(ids, dists, _i10, right);\n }\n }\n}\nfunction swap(arr, i, j) {\n var tmp = arr[i];\n arr[i] = arr[j];\n arr[j] = tmp;\n}\nfunction defaultGetX(p) {\n return p[0];\n}\nfunction defaultGetY(p) {\n return p[1];\n}","import _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nvar epsilon = 1e-6;\nvar Path = /*#__PURE__*/function () {\n function Path() {\n _classCallCheck(this, Path);\n this._x0 = this._y0 =\n // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n }\n _createClass(Path, [{\n key: \"moveTo\",\n value: function moveTo(x, y) {\n this._ += \"M\".concat(this._x0 = this._x1 = +x, \",\").concat(this._y0 = this._y1 = +y);\n }\n }, {\n key: \"closePath\",\n value: function closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n }\n }, {\n key: \"lineTo\",\n value: function lineTo(x, y) {\n this._ += \"L\".concat(this._x1 = +x, \",\").concat(this._y1 = +y);\n }\n }, {\n key: \"arc\",\n value: function arc(x, y, r) {\n x = +x, y = +y, r = +r;\n var x0 = x + r;\n var y0 = y;\n if (r < 0) throw new Error(\"negative radius\");\n if (this._x1 === null) this._ += \"M\".concat(x0, \",\").concat(y0);else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) this._ += \"L\" + x0 + \",\" + y0;\n if (!r) return;\n this._ += \"A\".concat(r, \",\").concat(r, \",0,1,1,\").concat(x - r, \",\").concat(y, \"A\").concat(r, \",\").concat(r, \",0,1,1,\").concat(this._x1 = x0, \",\").concat(this._y1 = y0);\n }\n }, {\n key: \"rect\",\n value: function rect(x, y, w, h) {\n this._ += \"M\".concat(this._x0 = this._x1 = +x, \",\").concat(this._y0 = this._y1 = +y, \"h\").concat(+w, \"v\").concat(+h, \"h\").concat(-w, \"Z\");\n }\n }, {\n key: \"value\",\n value: function value() {\n return this._ || null;\n }\n }]);\n return Path;\n}();\nexport { Path as default };","import _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nvar Polygon = /*#__PURE__*/function () {\n function Polygon() {\n _classCallCheck(this, Polygon);\n this._ = [];\n }\n _createClass(Polygon, [{\n key: \"moveTo\",\n value: function moveTo(x, y) {\n this._.push([x, y]);\n }\n }, {\n key: \"closePath\",\n value: function closePath() {\n this._.push(this._[0].slice());\n }\n }, {\n key: \"lineTo\",\n value: function lineTo(x, y) {\n this._.push([x, y]);\n }\n }, {\n key: \"value\",\n value: function value() {\n return this._.length ? this._ : null;\n }\n }]);\n return Polygon;\n}();\nexport { Polygon as default };","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _regeneratorRuntime from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/regenerator/index.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport Path from \"./path.js\";\nimport Polygon from \"./polygon.js\";\nvar Voronoi = /*#__PURE__*/function () {\n function Voronoi(delaunay) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [0, 0, 960, 500],\n _ref2 = _slicedToArray(_ref, 4),\n xmin = _ref2[0],\n ymin = _ref2[1],\n xmax = _ref2[2],\n ymax = _ref2[3];\n _classCallCheck(this, Voronoi);\n if (!((xmax = +xmax) >= (xmin = +xmin)) || !((ymax = +ymax) >= (ymin = +ymin))) throw new Error(\"invalid bounds\");\n this.delaunay = delaunay;\n this._circumcenters = new Float64Array(delaunay.points.length * 2);\n this.vectors = new Float64Array(delaunay.points.length * 2);\n this.xmax = xmax, this.xmin = xmin;\n this.ymax = ymax, this.ymin = ymin;\n this._init();\n }\n _createClass(Voronoi, [{\n key: \"update\",\n value: function update() {\n this.delaunay.update();\n this._init();\n return this;\n }\n }, {\n key: \"_init\",\n value: function _init() {\n var _this$delaunay = this.delaunay,\n points = _this$delaunay.points,\n hull = _this$delaunay.hull,\n triangles = _this$delaunay.triangles,\n vectors = this.vectors;\n var bx, by; // lazily computed barycenter of the hull\n\n // Compute circumcenters.\n var circumcenters = this.circumcenters = this._circumcenters.subarray(0, triangles.length / 3 * 2);\n for (var i = 0, j = 0, n = triangles.length, x, y; i < n; i += 3, j += 2) {\n var t1 = triangles[i] * 2;\n var t2 = triangles[i + 1] * 2;\n var t3 = triangles[i + 2] * 2;\n var _x = points[t1];\n var _y = points[t1 + 1];\n var x2 = points[t2];\n var y2 = points[t2 + 1];\n var x3 = points[t3];\n var y3 = points[t3 + 1];\n var dx = x2 - _x;\n var dy = y2 - _y;\n var ex = x3 - _x;\n var ey = y3 - _y;\n var ab = (dx * ey - dy * ex) * 2;\n if (Math.abs(ab) < 1e-9) {\n // For a degenerate triangle, the circumcenter is at the infinity, in a\n // direction orthogonal to the halfedge and away from the “center” of\n // the diagram , defined as the hull’s barycenter.\n if (bx === undefined) {\n bx = by = 0;\n var _iterator = _createForOfIteratorHelper(hull),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _i = _step.value;\n bx += points[_i * 2], by += points[_i * 2 + 1];\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n bx /= hull.length, by /= hull.length;\n }\n var a = 1e9 * Math.sign((bx - _x) * ey - (by - _y) * ex);\n x = (_x + x3) / 2 - a * ey;\n y = (_y + y3) / 2 + a * ex;\n } else {\n var d = 1 / ab;\n var bl = dx * dx + dy * dy;\n var cl = ex * ex + ey * ey;\n x = _x + (ey * bl - dy * cl) * d;\n y = _y + (dx * cl - ex * bl) * d;\n }\n circumcenters[j] = x;\n circumcenters[j + 1] = y;\n }\n\n // Compute exterior cell rays.\n var h = hull[hull.length - 1];\n var p0,\n p1 = h * 4;\n var x0,\n x1 = points[2 * h];\n var y0,\n y1 = points[2 * h + 1];\n vectors.fill(0);\n for (var _i2 = 0; _i2 < hull.length; ++_i2) {\n h = hull[_i2];\n p0 = p1, x0 = x1, y0 = y1;\n p1 = h * 4, x1 = points[2 * h], y1 = points[2 * h + 1];\n vectors[p0 + 2] = vectors[p1] = y0 - y1;\n vectors[p0 + 3] = vectors[p1 + 1] = x1 - x0;\n }\n }\n }, {\n key: \"render\",\n value: function render(context) {\n var buffer = context == null ? context = new Path() : undefined;\n var _this$delaunay2 = this.delaunay,\n halfedges = _this$delaunay2.halfedges,\n inedges = _this$delaunay2.inedges,\n hull = _this$delaunay2.hull,\n circumcenters = this.circumcenters,\n vectors = this.vectors;\n if (hull.length <= 1) return null;\n for (var i = 0, n = halfedges.length; i < n; ++i) {\n var j = halfedges[i];\n if (j < i) continue;\n var ti = Math.floor(i / 3) * 2;\n var tj = Math.floor(j / 3) * 2;\n var xi = circumcenters[ti];\n var yi = circumcenters[ti + 1];\n var xj = circumcenters[tj];\n var yj = circumcenters[tj + 1];\n this._renderSegment(xi, yi, xj, yj, context);\n }\n var h0,\n h1 = hull[hull.length - 1];\n for (var _i3 = 0; _i3 < hull.length; ++_i3) {\n h0 = h1, h1 = hull[_i3];\n var t = Math.floor(inedges[h1] / 3) * 2;\n var x = circumcenters[t];\n var y = circumcenters[t + 1];\n var v = h0 * 4;\n var p = this._project(x, y, vectors[v + 2], vectors[v + 3]);\n if (p) this._renderSegment(x, y, p[0], p[1], context);\n }\n return buffer && buffer.value();\n }\n }, {\n key: \"renderBounds\",\n value: function renderBounds(context) {\n var buffer = context == null ? context = new Path() : undefined;\n context.rect(this.xmin, this.ymin, this.xmax - this.xmin, this.ymax - this.ymin);\n return buffer && buffer.value();\n }\n }, {\n key: \"renderCell\",\n value: function renderCell(i, context) {\n var buffer = context == null ? context = new Path() : undefined;\n var points = this._clip(i);\n if (points === null || !points.length) return;\n context.moveTo(points[0], points[1]);\n var n = points.length;\n while (points[0] === points[n - 2] && points[1] === points[n - 1] && n > 1) n -= 2;\n for (var _i4 = 2; _i4 < n; _i4 += 2) {\n if (points[_i4] !== points[_i4 - 2] || points[_i4 + 1] !== points[_i4 - 1]) context.lineTo(points[_i4], points[_i4 + 1]);\n }\n context.closePath();\n return buffer && buffer.value();\n }\n }, {\n key: \"cellPolygons\",\n value: /*#__PURE__*/_regeneratorRuntime.mark(function cellPolygons() {\n var points, i, n, cell;\n return _regeneratorRuntime.wrap(function cellPolygons$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n points = this.delaunay.points;\n i = 0, n = points.length / 2;\n case 2:\n if (!(i < n)) {\n _context.next = 11;\n break;\n }\n cell = this.cellPolygon(i);\n if (!cell) {\n _context.next = 8;\n break;\n }\n cell.index = i;\n _context.next = 8;\n return cell;\n case 8:\n ++i;\n _context.next = 2;\n break;\n case 11:\n case \"end\":\n return _context.stop();\n }\n }, cellPolygons, this);\n })\n }, {\n key: \"cellPolygon\",\n value: function cellPolygon(i) {\n var polygon = new Polygon();\n this.renderCell(i, polygon);\n return polygon.value();\n }\n }, {\n key: \"_renderSegment\",\n value: function _renderSegment(x0, y0, x1, y1, context) {\n var S;\n var c0 = this._regioncode(x0, y0);\n var c1 = this._regioncode(x1, y1);\n if (c0 === 0 && c1 === 0) {\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n } else if (S = this._clipSegment(x0, y0, x1, y1, c0, c1)) {\n context.moveTo(S[0], S[1]);\n context.lineTo(S[2], S[3]);\n }\n }\n }, {\n key: \"contains\",\n value: function contains(i, x, y) {\n if ((x = +x, x !== x) || (y = +y, y !== y)) return false;\n return this.delaunay._step(i, x, y) === i;\n }\n }, {\n key: \"neighbors\",\n value: /*#__PURE__*/_regeneratorRuntime.mark(function neighbors(i) {\n var ci, _iterator2, _step2, j, cj, ai, li, aj, lj;\n return _regeneratorRuntime.wrap(function neighbors$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n ci = this._clip(i);\n if (!ci) {\n _context2.next = 33;\n break;\n }\n _iterator2 = _createForOfIteratorHelper(this.delaunay.neighbors(i));\n _context2.prev = 3;\n _iterator2.s();\n case 5:\n if ((_step2 = _iterator2.n()).done) {\n _context2.next = 25;\n break;\n }\n j = _step2.value;\n cj = this._clip(j); // find the common edge\n if (!cj) {\n _context2.next = 23;\n break;\n }\n ai = 0, li = ci.length;\n case 10:\n if (!(ai < li)) {\n _context2.next = 23;\n break;\n }\n aj = 0, lj = cj.length;\n case 12:\n if (!(aj < lj)) {\n _context2.next = 20;\n break;\n }\n if (!(ci[ai] === cj[aj] && ci[ai + 1] === cj[aj + 1] && ci[(ai + 2) % li] === cj[(aj + lj - 2) % lj] && ci[(ai + 3) % li] === cj[(aj + lj - 1) % lj])) {\n _context2.next = 17;\n break;\n }\n _context2.next = 16;\n return j;\n case 16:\n return _context2.abrupt(\"break\", 23);\n case 17:\n aj += 2;\n _context2.next = 12;\n break;\n case 20:\n ai += 2;\n _context2.next = 10;\n break;\n case 23:\n _context2.next = 5;\n break;\n case 25:\n _context2.next = 30;\n break;\n case 27:\n _context2.prev = 27;\n _context2.t0 = _context2[\"catch\"](3);\n _iterator2.e(_context2.t0);\n case 30:\n _context2.prev = 30;\n _iterator2.f();\n return _context2.finish(30);\n case 33:\n case \"end\":\n return _context2.stop();\n }\n }, neighbors, this, [[3, 27, 30, 33]]);\n })\n }, {\n key: \"_cell\",\n value: function _cell(i) {\n var circumcenters = this.circumcenters,\n _this$delaunay3 = this.delaunay,\n inedges = _this$delaunay3.inedges,\n halfedges = _this$delaunay3.halfedges,\n triangles = _this$delaunay3.triangles;\n var e0 = inedges[i];\n if (e0 === -1) return null; // coincident point\n var points = [];\n var e = e0;\n do {\n var t = Math.floor(e / 3);\n points.push(circumcenters[t * 2], circumcenters[t * 2 + 1]);\n e = e % 3 === 2 ? e - 2 : e + 1;\n if (triangles[e] !== i) break; // bad triangulation\n e = halfedges[e];\n } while (e !== e0 && e !== -1);\n return points;\n }\n }, {\n key: \"_clip\",\n value: function _clip(i) {\n // degenerate case (1 valid point: return the box)\n if (i === 0 && this.delaunay.hull.length === 1) {\n return [this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax, this.xmin, this.ymin];\n }\n var points = this._cell(i);\n if (points === null) return null;\n var V = this.vectors;\n var v = i * 4;\n return this._simplify(V[v] || V[v + 1] ? this._clipInfinite(i, points, V[v], V[v + 1], V[v + 2], V[v + 3]) : this._clipFinite(i, points));\n }\n }, {\n key: \"_clipFinite\",\n value: function _clipFinite(i, points) {\n var n = points.length;\n var P = null;\n var x0,\n y0,\n x1 = points[n - 2],\n y1 = points[n - 1];\n var c0,\n c1 = this._regioncode(x1, y1);\n var e0,\n e1 = 0;\n for (var j = 0; j < n; j += 2) {\n x0 = x1, y0 = y1, x1 = points[j], y1 = points[j + 1];\n c0 = c1, c1 = this._regioncode(x1, y1);\n if (c0 === 0 && c1 === 0) {\n e0 = e1, e1 = 0;\n if (P) P.push(x1, y1);else P = [x1, y1];\n } else {\n var S = void 0,\n sx0 = void 0,\n sy0 = void 0,\n sx1 = void 0,\n sy1 = void 0;\n if (c0 === 0) {\n if ((S = this._clipSegment(x0, y0, x1, y1, c0, c1)) === null) continue;\n var _S = S;\n var _S2 = _slicedToArray(_S, 4);\n sx0 = _S2[0];\n sy0 = _S2[1];\n sx1 = _S2[2];\n sy1 = _S2[3];\n } else {\n if ((S = this._clipSegment(x1, y1, x0, y0, c1, c0)) === null) continue;\n var _S3 = S;\n var _S4 = _slicedToArray(_S3, 4);\n sx1 = _S4[0];\n sy1 = _S4[1];\n sx0 = _S4[2];\n sy0 = _S4[3];\n e0 = e1, e1 = this._edgecode(sx0, sy0);\n if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n if (P) P.push(sx0, sy0);else P = [sx0, sy0];\n }\n e0 = e1, e1 = this._edgecode(sx1, sy1);\n if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n if (P) P.push(sx1, sy1);else P = [sx1, sy1];\n }\n }\n if (P) {\n e0 = e1, e1 = this._edgecode(P[0], P[1]);\n if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n } else if (this.contains(i, (this.xmin + this.xmax) / 2, (this.ymin + this.ymax) / 2)) {\n return [this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax, this.xmin, this.ymin];\n }\n return P;\n }\n }, {\n key: \"_clipSegment\",\n value: function _clipSegment(x0, y0, x1, y1, c0, c1) {\n // for more robustness, always consider the segment in the same order\n var flip = c0 < c1;\n if (flip) {\n var _ref3 = [x1, y1, x0, y0, c1, c0];\n x0 = _ref3[0];\n y0 = _ref3[1];\n x1 = _ref3[2];\n y1 = _ref3[3];\n c0 = _ref3[4];\n c1 = _ref3[5];\n }\n while (true) {\n if (c0 === 0 && c1 === 0) return flip ? [x1, y1, x0, y0] : [x0, y0, x1, y1];\n if (c0 & c1) return null;\n var x = void 0,\n y = void 0,\n c = c0 || c1;\n if (c & 8) x = x0 + (x1 - x0) * (this.ymax - y0) / (y1 - y0), y = this.ymax;else if (c & 4) x = x0 + (x1 - x0) * (this.ymin - y0) / (y1 - y0), y = this.ymin;else if (c & 2) y = y0 + (y1 - y0) * (this.xmax - x0) / (x1 - x0), x = this.xmax;else y = y0 + (y1 - y0) * (this.xmin - x0) / (x1 - x0), x = this.xmin;\n if (c0) x0 = x, y0 = y, c0 = this._regioncode(x0, y0);else x1 = x, y1 = y, c1 = this._regioncode(x1, y1);\n }\n }\n }, {\n key: \"_clipInfinite\",\n value: function _clipInfinite(i, points, vx0, vy0, vxn, vyn) {\n var P = Array.from(points),\n p;\n if (p = this._project(P[0], P[1], vx0, vy0)) P.unshift(p[0], p[1]);\n if (p = this._project(P[P.length - 2], P[P.length - 1], vxn, vyn)) P.push(p[0], p[1]);\n if (P = this._clipFinite(i, P)) {\n for (var j = 0, n = P.length, c0, c1 = this._edgecode(P[n - 2], P[n - 1]); j < n; j += 2) {\n c0 = c1, c1 = this._edgecode(P[j], P[j + 1]);\n if (c0 && c1) j = this._edge(i, c0, c1, P, j), n = P.length;\n }\n } else if (this.contains(i, (this.xmin + this.xmax) / 2, (this.ymin + this.ymax) / 2)) {\n P = [this.xmin, this.ymin, this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax];\n }\n return P;\n }\n }, {\n key: \"_edge\",\n value: function _edge(i, e0, e1, P, j) {\n while (e0 !== e1) {\n var x = void 0,\n y = void 0;\n switch (e0) {\n case 5:\n e0 = 4;\n continue;\n // top-left\n case 4:\n e0 = 6, x = this.xmax, y = this.ymin;\n break;\n // top\n case 6:\n e0 = 2;\n continue;\n // top-right\n case 2:\n e0 = 10, x = this.xmax, y = this.ymax;\n break;\n // right\n case 10:\n e0 = 8;\n continue;\n // bottom-right\n case 8:\n e0 = 9, x = this.xmin, y = this.ymax;\n break;\n // bottom\n case 9:\n e0 = 1;\n continue;\n // bottom-left\n case 1:\n e0 = 5, x = this.xmin, y = this.ymin;\n break;\n // left\n }\n // Note: this implicitly checks for out of bounds: if P[j] or P[j+1] are\n // undefined, the conditional statement will be executed.\n if ((P[j] !== x || P[j + 1] !== y) && this.contains(i, x, y)) {\n P.splice(j, 0, x, y), j += 2;\n }\n }\n return j;\n }\n }, {\n key: \"_project\",\n value: function _project(x0, y0, vx, vy) {\n var t = Infinity,\n c,\n x,\n y;\n if (vy < 0) {\n // top\n if (y0 <= this.ymin) return null;\n if ((c = (this.ymin - y0) / vy) < t) y = this.ymin, x = x0 + (t = c) * vx;\n } else if (vy > 0) {\n // bottom\n if (y0 >= this.ymax) return null;\n if ((c = (this.ymax - y0) / vy) < t) y = this.ymax, x = x0 + (t = c) * vx;\n }\n if (vx > 0) {\n // right\n if (x0 >= this.xmax) return null;\n if ((c = (this.xmax - x0) / vx) < t) x = this.xmax, y = y0 + (t = c) * vy;\n } else if (vx < 0) {\n // left\n if (x0 <= this.xmin) return null;\n if ((c = (this.xmin - x0) / vx) < t) x = this.xmin, y = y0 + (t = c) * vy;\n }\n return [x, y];\n }\n }, {\n key: \"_edgecode\",\n value: function _edgecode(x, y) {\n return (x === this.xmin ? 1 : x === this.xmax ? 2 : 0) | (y === this.ymin ? 4 : y === this.ymax ? 8 : 0);\n }\n }, {\n key: \"_regioncode\",\n value: function _regioncode(x, y) {\n return (x < this.xmin ? 1 : x > this.xmax ? 2 : 0) | (y < this.ymin ? 4 : y > this.ymax ? 8 : 0);\n }\n }, {\n key: \"_simplify\",\n value: function _simplify(P) {\n if (P && P.length > 4) {\n for (var i = 0; i < P.length; i += 2) {\n var j = (i + 2) % P.length,\n k = (i + 4) % P.length;\n if (P[i] === P[j] && P[j] === P[k] || P[i + 1] === P[j + 1] && P[j + 1] === P[k + 1]) {\n P.splice(j, 2), i -= 2;\n }\n }\n if (!P.length) P = null;\n }\n return P;\n }\n }]);\n return Voronoi;\n}();\nexport { Voronoi as default };","import _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nvar _marked = /*#__PURE__*/_regeneratorRuntime.mark(flatIterable);\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport _regeneratorRuntime from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/regenerator/index.js\";\nimport \"core-js/modules/es.math.hypot.js\";\nimport Delaunator from \"delaunator\";\nimport Path from \"./path.js\";\nimport Polygon from \"./polygon.js\";\nimport Voronoi from \"./voronoi.js\";\nvar tau = 2 * Math.PI,\n pow = Math.pow;\nfunction pointX(p) {\n return p[0];\n}\nfunction pointY(p) {\n return p[1];\n}\n\n// A triangulation is collinear if all its triangles have a non-null area\nfunction collinear(d) {\n var triangles = d.triangles,\n coords = d.coords;\n for (var i = 0; i < triangles.length; i += 3) {\n var a = 2 * triangles[i],\n b = 2 * triangles[i + 1],\n c = 2 * triangles[i + 2],\n cross = (coords[c] - coords[a]) * (coords[b + 1] - coords[a + 1]) - (coords[b] - coords[a]) * (coords[c + 1] - coords[a + 1]);\n if (cross > 1e-10) return false;\n }\n return true;\n}\nfunction jitter(x, y, r) {\n return [x + Math.sin(x + y) * r, y + Math.cos(x - y) * r];\n}\nvar Delaunay = /*#__PURE__*/function () {\n function Delaunay(points) {\n _classCallCheck(this, Delaunay);\n this._delaunator = new Delaunator(points);\n this.inedges = new Int32Array(points.length / 2);\n this._hullIndex = new Int32Array(points.length / 2);\n this.points = this._delaunator.coords;\n this._init();\n }\n _createClass(Delaunay, [{\n key: \"update\",\n value: function update() {\n this._delaunator.update();\n this._init();\n return this;\n }\n }, {\n key: \"_init\",\n value: function _init() {\n var d = this._delaunator,\n points = this.points;\n\n // check for collinear\n if (d.hull && d.hull.length > 2 && collinear(d)) {\n this.collinear = Int32Array.from({\n length: points.length / 2\n }, function (_, i) {\n return i;\n }).sort(function (i, j) {\n return points[2 * i] - points[2 * j] || points[2 * i + 1] - points[2 * j + 1];\n }); // for exact neighbors\n var e = this.collinear[0],\n f = this.collinear[this.collinear.length - 1],\n bounds = [points[2 * e], points[2 * e + 1], points[2 * f], points[2 * f + 1]],\n r = 1e-8 * Math.hypot(bounds[3] - bounds[1], bounds[2] - bounds[0]);\n for (var i = 0, n = points.length / 2; i < n; ++i) {\n var p = jitter(points[2 * i], points[2 * i + 1], r);\n points[2 * i] = p[0];\n points[2 * i + 1] = p[1];\n }\n this._delaunator = new Delaunator(points);\n } else {\n delete this.collinear;\n }\n var halfedges = this.halfedges = this._delaunator.halfedges;\n var hull = this.hull = this._delaunator.hull;\n var triangles = this.triangles = this._delaunator.triangles;\n var inedges = this.inedges.fill(-1);\n var hullIndex = this._hullIndex.fill(-1);\n\n // Compute an index from each point to an (arbitrary) incoming halfedge\n // Used to give the first neighbor of each point; for this reason,\n // on the hull we give priority to exterior halfedges\n for (var _e = 0, _n = halfedges.length; _e < _n; ++_e) {\n var _p = triangles[_e % 3 === 2 ? _e - 2 : _e + 1];\n if (halfedges[_e] === -1 || inedges[_p] === -1) inedges[_p] = _e;\n }\n for (var _i = 0, _n2 = hull.length; _i < _n2; ++_i) {\n hullIndex[hull[_i]] = _i;\n }\n\n // degenerate case: 1 or 2 (distinct) points\n if (hull.length <= 2 && hull.length > 0) {\n this.triangles = new Int32Array(3).fill(-1);\n this.halfedges = new Int32Array(3).fill(-1);\n this.triangles[0] = hull[0];\n inedges[hull[0]] = 1;\n if (hull.length === 2) {\n inedges[hull[1]] = 0;\n this.triangles[1] = hull[1];\n this.triangles[2] = hull[1];\n }\n }\n }\n }, {\n key: \"voronoi\",\n value: function voronoi(bounds) {\n return new Voronoi(this, bounds);\n }\n }, {\n key: \"neighbors\",\n value: /*#__PURE__*/_regeneratorRuntime.mark(function neighbors(i) {\n var inedges, hull, _hullIndex, halfedges, triangles, collinear, l, e0, e, p0, p;\n return _regeneratorRuntime.wrap(function neighbors$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n inedges = this.inedges, hull = this.hull, _hullIndex = this._hullIndex, halfedges = this.halfedges, triangles = this.triangles, collinear = this.collinear; // degenerate case with several collinear points\n if (!collinear) {\n _context.next = 10;\n break;\n }\n l = collinear.indexOf(i);\n if (!(l > 0)) {\n _context.next = 6;\n break;\n }\n _context.next = 6;\n return collinear[l - 1];\n case 6:\n if (!(l < collinear.length - 1)) {\n _context.next = 9;\n break;\n }\n _context.next = 9;\n return collinear[l + 1];\n case 9:\n return _context.abrupt(\"return\");\n case 10:\n e0 = inedges[i];\n if (!(e0 === -1)) {\n _context.next = 13;\n break;\n }\n return _context.abrupt(\"return\");\n case 13:\n // coincident point\n e = e0, p0 = -1;\n case 14:\n _context.next = 16;\n return p0 = triangles[e];\n case 16:\n e = e % 3 === 2 ? e - 2 : e + 1;\n if (!(triangles[e] !== i)) {\n _context.next = 19;\n break;\n }\n return _context.abrupt(\"return\");\n case 19:\n // bad triangulation\n e = halfedges[e];\n if (!(e === -1)) {\n _context.next = 26;\n break;\n }\n p = hull[(_hullIndex[i] + 1) % hull.length];\n if (!(p !== p0)) {\n _context.next = 25;\n break;\n }\n _context.next = 25;\n return p;\n case 25:\n return _context.abrupt(\"return\");\n case 26:\n if (e !== e0) {\n _context.next = 14;\n break;\n }\n case 27:\n case \"end\":\n return _context.stop();\n }\n }, neighbors, this);\n })\n }, {\n key: \"find\",\n value: function find(x, y) {\n var i = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n if ((x = +x, x !== x) || (y = +y, y !== y)) return -1;\n var i0 = i;\n var c;\n while ((c = this._step(i, x, y)) >= 0 && c !== i && c !== i0) i = c;\n return c;\n }\n }, {\n key: \"_step\",\n value: function _step(i, x, y) {\n var inedges = this.inedges,\n hull = this.hull,\n _hullIndex = this._hullIndex,\n halfedges = this.halfedges,\n triangles = this.triangles,\n points = this.points;\n if (inedges[i] === -1 || !points.length) return (i + 1) % (points.length >> 1);\n var c = i;\n var dc = pow(x - points[i * 2], 2) + pow(y - points[i * 2 + 1], 2);\n var e0 = inedges[i];\n var e = e0;\n do {\n var t = triangles[e];\n var dt = pow(x - points[t * 2], 2) + pow(y - points[t * 2 + 1], 2);\n if (dt < dc) dc = dt, c = t;\n e = e % 3 === 2 ? e - 2 : e + 1;\n if (triangles[e] !== i) break; // bad triangulation\n e = halfedges[e];\n if (e === -1) {\n e = hull[(_hullIndex[i] + 1) % hull.length];\n if (e !== t) {\n if (pow(x - points[e * 2], 2) + pow(y - points[e * 2 + 1], 2) < dc) return e;\n }\n break;\n }\n } while (e !== e0);\n return c;\n }\n }, {\n key: \"render\",\n value: function render(context) {\n var buffer = context == null ? context = new Path() : undefined;\n var points = this.points,\n halfedges = this.halfedges,\n triangles = this.triangles;\n for (var i = 0, n = halfedges.length; i < n; ++i) {\n var j = halfedges[i];\n if (j < i) continue;\n var ti = triangles[i] * 2;\n var tj = triangles[j] * 2;\n context.moveTo(points[ti], points[ti + 1]);\n context.lineTo(points[tj], points[tj + 1]);\n }\n this.renderHull(context);\n return buffer && buffer.value();\n }\n }, {\n key: \"renderPoints\",\n value: function renderPoints(context, r) {\n if (r === undefined && (!context || typeof context.moveTo !== \"function\")) r = context, context = null;\n r = r == undefined ? 2 : +r;\n var buffer = context == null ? context = new Path() : undefined;\n var points = this.points;\n for (var i = 0, n = points.length; i < n; i += 2) {\n var x = points[i],\n y = points[i + 1];\n context.moveTo(x + r, y);\n context.arc(x, y, r, 0, tau);\n }\n return buffer && buffer.value();\n }\n }, {\n key: \"renderHull\",\n value: function renderHull(context) {\n var buffer = context == null ? context = new Path() : undefined;\n var hull = this.hull,\n points = this.points;\n var h = hull[0] * 2,\n n = hull.length;\n context.moveTo(points[h], points[h + 1]);\n for (var i = 1; i < n; ++i) {\n var _h = 2 * hull[i];\n context.lineTo(points[_h], points[_h + 1]);\n }\n context.closePath();\n return buffer && buffer.value();\n }\n }, {\n key: \"hullPolygon\",\n value: function hullPolygon() {\n var polygon = new Polygon();\n this.renderHull(polygon);\n return polygon.value();\n }\n }, {\n key: \"renderTriangle\",\n value: function renderTriangle(i, context) {\n var buffer = context == null ? context = new Path() : undefined;\n var points = this.points,\n triangles = this.triangles;\n var t0 = triangles[i *= 3] * 2;\n var t1 = triangles[i + 1] * 2;\n var t2 = triangles[i + 2] * 2;\n context.moveTo(points[t0], points[t0 + 1]);\n context.lineTo(points[t1], points[t1 + 1]);\n context.lineTo(points[t2], points[t2 + 1]);\n context.closePath();\n return buffer && buffer.value();\n }\n }, {\n key: \"trianglePolygons\",\n value: /*#__PURE__*/_regeneratorRuntime.mark(function trianglePolygons() {\n var triangles, i, n;\n return _regeneratorRuntime.wrap(function trianglePolygons$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n triangles = this.triangles;\n i = 0, n = triangles.length / 3;\n case 2:\n if (!(i < n)) {\n _context2.next = 8;\n break;\n }\n _context2.next = 5;\n return this.trianglePolygon(i);\n case 5:\n ++i;\n _context2.next = 2;\n break;\n case 8:\n case \"end\":\n return _context2.stop();\n }\n }, trianglePolygons, this);\n })\n }, {\n key: \"trianglePolygon\",\n value: function trianglePolygon(i) {\n var polygon = new Polygon();\n this.renderTriangle(i, polygon);\n return polygon.value();\n }\n }], [{\n key: \"from\",\n value: function from(points) {\n var fx = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : pointX;\n var fy = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : pointY;\n var that = arguments.length > 3 ? arguments[3] : undefined;\n return new Delaunay(\"length\" in points ? flatArray(points, fx, fy, that) : Float64Array.from(flatIterable(points, fx, fy, that)));\n }\n }]);\n return Delaunay;\n}();\nexport { Delaunay as default };\nfunction flatArray(points, fx, fy, that) {\n var n = points.length;\n var array = new Float64Array(n * 2);\n for (var i = 0; i < n; ++i) {\n var p = points[i];\n array[i * 2] = fx.call(that, p, i, points);\n array[i * 2 + 1] = fy.call(that, p, i, points);\n }\n return array;\n}\nfunction flatIterable(points, fx, fy, that) {\n var i, _iterator, _step2, p;\n return _regeneratorRuntime.wrap(function flatIterable$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n i = 0;\n _iterator = _createForOfIteratorHelper(points);\n _context3.prev = 2;\n _iterator.s();\n case 4:\n if ((_step2 = _iterator.n()).done) {\n _context3.next = 13;\n break;\n }\n p = _step2.value;\n _context3.next = 8;\n return fx.call(that, p, i, points);\n case 8:\n _context3.next = 10;\n return fy.call(that, p, i, points);\n case 10:\n ++i;\n case 11:\n _context3.next = 4;\n break;\n case 13:\n _context3.next = 18;\n break;\n case 15:\n _context3.prev = 15;\n _context3.t0 = _context3[\"catch\"](2);\n _iterator.e(_context3.t0);\n case 18:\n _context3.prev = 18;\n _iterator.f();\n return _context3.finish(18);\n case 21:\n case \"end\":\n return _context3.stop();\n }\n }, _marked, null, [[2, 15, 18, 21]]);\n}","import { Transform } from 'vega-dataflow';\nimport { inherits } from 'vega-util';\nimport { Delaunay } from 'd3-delaunay';\nfunction Voronoi(params) {\n Transform.call(this, null, params);\n}\nVoronoi.Definition = {\n 'type': 'Voronoi',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'x',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'y',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'size',\n 'type': 'number',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'extent',\n 'type': 'array',\n 'array': true,\n 'length': 2,\n 'default': [[-1e5, -1e5], [1e5, 1e5]],\n 'content': {\n 'type': 'number',\n 'array': true,\n 'length': 2\n }\n }, {\n 'name': 'as',\n 'type': 'string',\n 'default': 'path'\n }]\n};\nvar defaultExtent = [-1e5, -1e5, 1e5, 1e5];\ninherits(Voronoi, Transform, {\n transform: function transform(_, pulse) {\n var as = _.as || 'path',\n data = pulse.source;\n\n // nothing to do if no data\n if (!data || !data.length) return pulse;\n\n // configure and construct voronoi diagram\n var s = _.size;\n s = s ? [0, 0, s[0], s[1]] : (s = _.extent) ? [s[0][0], s[0][1], s[1][0], s[1][1]] : defaultExtent;\n var voronoi = this.value = Delaunay.from(data, _.x, _.y).voronoi(s);\n\n // map polygons to paths\n for (var i = 0, n = data.length; i < n; ++i) {\n var polygon = voronoi.cellPolygon(i);\n data[i][as] = polygon ? toPathString(polygon) : null;\n }\n return pulse.reflow(_.modified()).modifies(as);\n }\n});\n\n// suppress duplicated end point vertices\nfunction toPathString(p) {\n var x = p[0][0],\n y = p[0][1];\n var n = p.length - 1;\n for (; p[n][0] === x && p[n][1] === y; --n);\n return 'M' + p.slice(0, n + 1).join('L') + 'Z';\n}\nexport { Voronoi as voronoi };","import { canvas } from 'vega-canvas';\nimport { Transform } from 'vega-dataflow';\nimport { inherits, error, isFunction, constant, extent } from 'vega-util';\nimport { scale } from 'vega-scale';\nimport { random } from 'vega-statistics';\n\n/*\nCopyright (c) 2013, Jason Davies.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n * Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n * The name Jason Davies may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL JASON DAVIES BE LIABLE FOR ANY DIRECT, INDIRECT,\nINCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE\nOR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF\nADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\n// Word cloud layout by Jason Davies, https://www.jasondavies.com/wordcloud/\n// Algorithm due to Jonathan Feinberg, http://static.mrfeinberg.com/bv_ch03.pdf\n\nvar cloudRadians = Math.PI / 180,\n cw = 1 << 11 >> 5,\n ch = 1 << 11;\nfunction cloud() {\n var size = [256, 256],\n text,\n font,\n fontSize,\n fontStyle,\n fontWeight,\n rotate,\n padding,\n spiral = archimedeanSpiral,\n words = [],\n random = Math.random,\n cloud = {};\n cloud.layout = function () {\n var contextAndRatio = getContext(canvas()),\n board = zeroArray((size[0] >> 5) * size[1]),\n bounds = null,\n n = words.length,\n i = -1,\n tags = [],\n data = words.map(function (d) {\n return {\n text: text(d),\n font: font(d),\n style: fontStyle(d),\n weight: fontWeight(d),\n rotate: rotate(d),\n size: ~~(fontSize(d) + 1e-14),\n padding: padding(d),\n xoff: 0,\n yoff: 0,\n x1: 0,\n y1: 0,\n x0: 0,\n y0: 0,\n hasText: false,\n sprite: null,\n datum: d\n };\n }).sort(function (a, b) {\n return b.size - a.size;\n });\n while (++i < n) {\n var d = data[i];\n d.x = size[0] * (random() + .5) >> 1;\n d.y = size[1] * (random() + .5) >> 1;\n cloudSprite(contextAndRatio, d, data, i);\n if (d.hasText && place(board, d, bounds)) {\n tags.push(d);\n if (bounds) cloudBounds(bounds, d);else bounds = [{\n x: d.x + d.x0,\n y: d.y + d.y0\n }, {\n x: d.x + d.x1,\n y: d.y + d.y1\n }];\n // Temporary hack\n d.x -= size[0] >> 1;\n d.y -= size[1] >> 1;\n }\n }\n return tags;\n };\n function getContext(canvas) {\n canvas.width = canvas.height = 1;\n var ratio = Math.sqrt(canvas.getContext('2d').getImageData(0, 0, 1, 1).data.length >> 2);\n canvas.width = (cw << 5) / ratio;\n canvas.height = ch / ratio;\n var context = canvas.getContext('2d');\n context.fillStyle = context.strokeStyle = 'red';\n context.textAlign = 'center';\n return {\n context: context,\n ratio: ratio\n };\n }\n function place(board, tag, bounds) {\n var startX = tag.x,\n startY = tag.y,\n maxDelta = Math.sqrt(size[0] * size[0] + size[1] * size[1]),\n s = spiral(size),\n dt = random() < .5 ? 1 : -1,\n t = -dt,\n dxdy,\n dx,\n dy;\n while (dxdy = s(t += dt)) {\n dx = ~~dxdy[0];\n dy = ~~dxdy[1];\n if (Math.min(Math.abs(dx), Math.abs(dy)) >= maxDelta) break;\n tag.x = startX + dx;\n tag.y = startY + dy;\n if (tag.x + tag.x0 < 0 || tag.y + tag.y0 < 0 || tag.x + tag.x1 > size[0] || tag.y + tag.y1 > size[1]) continue;\n // TODO only check for collisions within current bounds.\n if (!bounds || !cloudCollide(tag, board, size[0])) {\n if (!bounds || collideRects(tag, bounds)) {\n var sprite = tag.sprite,\n w = tag.width >> 5,\n sw = size[0] >> 5,\n lx = tag.x - (w << 4),\n sx = lx & 0x7f,\n msx = 32 - sx,\n h = tag.y1 - tag.y0,\n x = (tag.y + tag.y0) * sw + (lx >> 5),\n last;\n for (var j = 0; j < h; j++) {\n last = 0;\n for (var i = 0; i <= w; i++) {\n board[x + i] |= last << msx | (i < w ? (last = sprite[j * w + i]) >>> sx : 0);\n }\n x += sw;\n }\n tag.sprite = null;\n return true;\n }\n }\n }\n return false;\n }\n cloud.words = function (_) {\n if (arguments.length) {\n words = _;\n return cloud;\n } else {\n return words;\n }\n };\n cloud.size = function (_) {\n if (arguments.length) {\n size = [+_[0], +_[1]];\n return cloud;\n } else {\n return size;\n }\n };\n cloud.font = function (_) {\n if (arguments.length) {\n font = functor(_);\n return cloud;\n } else {\n return font;\n }\n };\n cloud.fontStyle = function (_) {\n if (arguments.length) {\n fontStyle = functor(_);\n return cloud;\n } else {\n return fontStyle;\n }\n };\n cloud.fontWeight = function (_) {\n if (arguments.length) {\n fontWeight = functor(_);\n return cloud;\n } else {\n return fontWeight;\n }\n };\n cloud.rotate = function (_) {\n if (arguments.length) {\n rotate = functor(_);\n return cloud;\n } else {\n return rotate;\n }\n };\n cloud.text = function (_) {\n if (arguments.length) {\n text = functor(_);\n return cloud;\n } else {\n return text;\n }\n };\n cloud.spiral = function (_) {\n if (arguments.length) {\n spiral = spirals[_] || _;\n return cloud;\n } else {\n return spiral;\n }\n };\n cloud.fontSize = function (_) {\n if (arguments.length) {\n fontSize = functor(_);\n return cloud;\n } else {\n return fontSize;\n }\n };\n cloud.padding = function (_) {\n if (arguments.length) {\n padding = functor(_);\n return cloud;\n } else {\n return padding;\n }\n };\n cloud.random = function (_) {\n if (arguments.length) {\n random = _;\n return cloud;\n } else {\n return random;\n }\n };\n return cloud;\n}\n\n// Fetches a monochrome sprite bitmap for the specified text.\n// Load in batches for speed.\nfunction cloudSprite(contextAndRatio, d, data, di) {\n if (d.sprite) return;\n var c = contextAndRatio.context,\n ratio = contextAndRatio.ratio;\n c.clearRect(0, 0, (cw << 5) / ratio, ch / ratio);\n var x = 0,\n y = 0,\n maxh = 0,\n n = data.length,\n w,\n w32,\n h,\n i,\n j;\n --di;\n while (++di < n) {\n d = data[di];\n c.save();\n c.font = d.style + ' ' + d.weight + ' ' + ~~((d.size + 1) / ratio) + 'px ' + d.font;\n w = c.measureText(d.text + 'm').width * ratio;\n h = d.size << 1;\n if (d.rotate) {\n var sr = Math.sin(d.rotate * cloudRadians),\n cr = Math.cos(d.rotate * cloudRadians),\n wcr = w * cr,\n wsr = w * sr,\n hcr = h * cr,\n hsr = h * sr;\n w = Math.max(Math.abs(wcr + hsr), Math.abs(wcr - hsr)) + 0x1f >> 5 << 5;\n h = ~~Math.max(Math.abs(wsr + hcr), Math.abs(wsr - hcr));\n } else {\n w = w + 0x1f >> 5 << 5;\n }\n if (h > maxh) maxh = h;\n if (x + w >= cw << 5) {\n x = 0;\n y += maxh;\n maxh = 0;\n }\n if (y + h >= ch) break;\n c.translate((x + (w >> 1)) / ratio, (y + (h >> 1)) / ratio);\n if (d.rotate) c.rotate(d.rotate * cloudRadians);\n c.fillText(d.text, 0, 0);\n if (d.padding) {\n c.lineWidth = 2 * d.padding;\n c.strokeText(d.text, 0, 0);\n }\n c.restore();\n d.width = w;\n d.height = h;\n d.xoff = x;\n d.yoff = y;\n d.x1 = w >> 1;\n d.y1 = h >> 1;\n d.x0 = -d.x1;\n d.y0 = -d.y1;\n d.hasText = true;\n x += w;\n }\n var pixels = c.getImageData(0, 0, (cw << 5) / ratio, ch / ratio).data,\n sprite = [];\n while (--di >= 0) {\n d = data[di];\n if (!d.hasText) continue;\n w = d.width;\n w32 = w >> 5;\n h = d.y1 - d.y0;\n // Zero the buffer\n for (i = 0; i < h * w32; i++) sprite[i] = 0;\n x = d.xoff;\n if (x == null) return;\n y = d.yoff;\n var seen = 0,\n seenRow = -1;\n for (j = 0; j < h; j++) {\n for (i = 0; i < w; i++) {\n var k = w32 * j + (i >> 5),\n m = pixels[(y + j) * (cw << 5) + (x + i) << 2] ? 1 << 31 - i % 32 : 0;\n sprite[k] |= m;\n seen |= m;\n }\n if (seen) seenRow = j;else {\n d.y0++;\n h--;\n j--;\n y++;\n }\n }\n d.y1 = d.y0 + seenRow;\n d.sprite = sprite.slice(0, (d.y1 - d.y0) * w32);\n }\n}\n\n// Use mask-based collision detection.\nfunction cloudCollide(tag, board, sw) {\n sw >>= 5;\n var sprite = tag.sprite,\n w = tag.width >> 5,\n lx = tag.x - (w << 4),\n sx = lx & 0x7f,\n msx = 32 - sx,\n h = tag.y1 - tag.y0,\n x = (tag.y + tag.y0) * sw + (lx >> 5),\n last;\n for (var j = 0; j < h; j++) {\n last = 0;\n for (var i = 0; i <= w; i++) {\n if ((last << msx | (i < w ? (last = sprite[j * w + i]) >>> sx : 0)) & board[x + i]) return true;\n }\n x += sw;\n }\n return false;\n}\nfunction cloudBounds(bounds, d) {\n var b0 = bounds[0],\n b1 = bounds[1];\n if (d.x + d.x0 < b0.x) b0.x = d.x + d.x0;\n if (d.y + d.y0 < b0.y) b0.y = d.y + d.y0;\n if (d.x + d.x1 > b1.x) b1.x = d.x + d.x1;\n if (d.y + d.y1 > b1.y) b1.y = d.y + d.y1;\n}\nfunction collideRects(a, b) {\n return a.x + a.x1 > b[0].x && a.x + a.x0 < b[1].x && a.y + a.y1 > b[0].y && a.y + a.y0 < b[1].y;\n}\nfunction archimedeanSpiral(size) {\n var e = size[0] / size[1];\n return function (t) {\n return [e * (t *= .1) * Math.cos(t), t * Math.sin(t)];\n };\n}\nfunction rectangularSpiral(size) {\n var dy = 4,\n dx = dy * size[0] / size[1],\n x = 0,\n y = 0;\n return function (t) {\n var sign = t < 0 ? -1 : 1;\n // See triangular numbers: T_n = n * (n + 1) / 2.\n switch (Math.sqrt(1 + 4 * sign * t) - sign & 3) {\n case 0:\n x += dx;\n break;\n case 1:\n y += dy;\n break;\n case 2:\n x -= dx;\n break;\n default:\n y -= dy;\n break;\n }\n return [x, y];\n };\n}\n\n// TODO reuse arrays?\nfunction zeroArray(n) {\n var a = [],\n i = -1;\n while (++i < n) a[i] = 0;\n return a;\n}\nfunction functor(d) {\n return typeof d === 'function' ? d : function () {\n return d;\n };\n}\nvar spirals = {\n archimedean: archimedeanSpiral,\n rectangular: rectangularSpiral\n};\nvar Output = ['x', 'y', 'font', 'fontSize', 'fontStyle', 'fontWeight', 'angle'];\nvar Params = ['text', 'font', 'rotate', 'fontSize', 'fontStyle', 'fontWeight'];\nfunction Wordcloud(params) {\n Transform.call(this, cloud(), params);\n}\nWordcloud.Definition = {\n 'type': 'Wordcloud',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'size',\n 'type': 'number',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'font',\n 'type': 'string',\n 'expr': true,\n 'default': 'sans-serif'\n }, {\n 'name': 'fontStyle',\n 'type': 'string',\n 'expr': true,\n 'default': 'normal'\n }, {\n 'name': 'fontWeight',\n 'type': 'string',\n 'expr': true,\n 'default': 'normal'\n }, {\n 'name': 'fontSize',\n 'type': 'number',\n 'expr': true,\n 'default': 14\n }, {\n 'name': 'fontSizeRange',\n 'type': 'number',\n 'array': 'nullable',\n 'default': [10, 50]\n }, {\n 'name': 'rotate',\n 'type': 'number',\n 'expr': true,\n 'default': 0\n }, {\n 'name': 'text',\n 'type': 'field'\n }, {\n 'name': 'spiral',\n 'type': 'string',\n 'values': ['archimedean', 'rectangular']\n }, {\n 'name': 'padding',\n 'type': 'number',\n 'expr': true\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': 7,\n 'default': Output\n }]\n};\ninherits(Wordcloud, Transform, {\n transform: function transform(_, pulse) {\n if (_.size && !(_.size[0] && _.size[1])) {\n error('Wordcloud size dimensions must be non-zero.');\n }\n function modp(param) {\n var p = _[param];\n return isFunction(p) && pulse.modified(p.fields);\n }\n var mod = _.modified();\n if (!(mod || pulse.changed(pulse.ADD_REM) || Params.some(modp))) return;\n var data = pulse.materialize(pulse.SOURCE).source,\n layout = this.value,\n as = _.as || Output;\n var fontSize = _.fontSize || 14,\n range;\n isFunction(fontSize) ? range = _.fontSizeRange : fontSize = constant(fontSize);\n\n // create font size scaling function as needed\n if (range) {\n var fsize = fontSize,\n sizeScale = scale('sqrt')().domain(extent(data, fsize)).range(range);\n fontSize = function fontSize(x) {\n return sizeScale(fsize(x));\n };\n }\n data.forEach(function (t) {\n t[as[0]] = NaN;\n t[as[1]] = NaN;\n t[as[3]] = 0;\n });\n\n // configure layout\n var words = layout.words(data).text(_.text).size(_.size || [500, 500]).padding(_.padding || 1).spiral(_.spiral || 'archimedean').rotate(_.rotate || 0).font(_.font || 'sans-serif').fontStyle(_.fontStyle || 'normal').fontWeight(_.fontWeight || 'normal').fontSize(fontSize).random(random).layout();\n var size = layout.size(),\n dx = size[0] >> 1,\n dy = size[1] >> 1,\n n = words.length;\n for (var i = 0, w, t; i < n; ++i) {\n w = words[i];\n t = w.datum;\n t[as[0]] = w.x + dx;\n t[as[1]] = w.y + dy;\n t[as[2]] = w.font;\n t[as[3]] = w.size;\n t[as[4]] = w.style;\n t[as[5]] = w.weight;\n t[as[6]] = w.rotate;\n }\n return pulse.reflow(mod).modifies(as);\n }\n});\nexport { Wordcloud as wordcloud };","import { bisectLeft, bisectRight, permute } from 'd3-array';\nimport { Transform } from 'vega-dataflow';\nimport { inherits } from 'vega-util';\nvar array8 = function array8(n) {\n return new Uint8Array(n);\n};\nvar array16 = function array16(n) {\n return new Uint16Array(n);\n};\nvar array32 = function array32(n) {\n return new Uint32Array(n);\n};\n\n/**\n * Maintains CrossFilter state.\n */\nfunction Bitmaps() {\n var width = 8,\n _data = [],\n _seen = array32(0),\n _curr = array(0, width),\n _prev = array(0, width);\n return {\n data: function data() {\n return _data;\n },\n seen: function seen() {\n return _seen = lengthen(_seen, _data.length);\n },\n add: function add(array) {\n for (var i = 0, j = _data.length, n = array.length, t; i < n; ++i) {\n t = array[i];\n t._index = j++;\n _data.push(t);\n }\n },\n remove: function remove(num, map) {\n // map: index -> boolean (true => remove)\n var n = _data.length,\n copy = Array(n - num),\n reindex = _data; // reuse old data array for index map\n var t, i, j;\n\n // seek forward to first removal\n for (i = 0; !map[i] && i < n; ++i) {\n copy[i] = _data[i];\n reindex[i] = i;\n }\n\n // condense arrays\n for (j = i; i < n; ++i) {\n t = _data[i];\n if (!map[i]) {\n reindex[i] = j;\n _curr[j] = _curr[i];\n _prev[j] = _prev[i];\n copy[j] = t;\n t._index = j++;\n } else {\n reindex[i] = -1;\n }\n _curr[i] = 0; // clear unused bits\n }\n\n _data = copy;\n return reindex;\n },\n size: function size() {\n return _data.length;\n },\n curr: function curr() {\n return _curr;\n },\n prev: function prev() {\n return _prev;\n },\n reset: function reset(k) {\n return _prev[k] = _curr[k];\n },\n all: function all() {\n return width < 0x101 ? 0xff : width < 0x10001 ? 0xffff : 0xffffffff;\n },\n set: function set(k, one) {\n _curr[k] |= one;\n },\n clear: function clear(k, one) {\n _curr[k] &= ~one;\n },\n resize: function resize(n, m) {\n var k = _curr.length;\n if (n > k || m > width) {\n width = Math.max(m, width);\n _curr = array(n, width, _curr);\n _prev = array(n, width);\n }\n }\n };\n}\nfunction lengthen(array, length, copy) {\n if (array.length >= length) return array;\n copy = copy || new array.constructor(length);\n copy.set(array);\n return copy;\n}\nfunction array(n, m, array) {\n var copy = (m < 0x101 ? array8 : m < 0x10001 ? array16 : array32)(n);\n if (array) copy.set(array);\n return copy;\n}\nfunction Dimension(index, i, query) {\n var bit = 1 << i;\n return {\n one: bit,\n zero: ~bit,\n range: query.slice(),\n bisect: index.bisect,\n index: index.index,\n size: index.size,\n onAdd: function onAdd(added, curr) {\n var dim = this,\n range = dim.bisect(dim.range, added.value),\n idx = added.index,\n lo = range[0],\n hi = range[1],\n n1 = idx.length;\n var i;\n for (i = 0; i < lo; ++i) curr[idx[i]] |= bit;\n for (i = hi; i < n1; ++i) curr[idx[i]] |= bit;\n return dim;\n }\n };\n}\n\n/**\n * Maintains a list of values, sorted by key.\n */\nfunction SortedIndex() {\n var _index = array32(0),\n value = [],\n _size = 0;\n function insert(key, data, base) {\n if (!data.length) return [];\n var n0 = _size,\n n1 = data.length,\n addi = array32(n1);\n var addv = Array(n1),\n oldv,\n oldi,\n i;\n for (i = 0; i < n1; ++i) {\n addv[i] = key(data[i]);\n addi[i] = i;\n }\n addv = sort(addv, addi);\n if (n0) {\n oldv = value;\n oldi = _index;\n value = Array(n0 + n1);\n _index = array32(n0 + n1);\n merge(base, oldv, oldi, n0, addv, addi, n1, value, _index);\n } else {\n if (base > 0) for (i = 0; i < n1; ++i) {\n addi[i] += base;\n }\n value = addv;\n _index = addi;\n }\n _size = n0 + n1;\n return {\n index: addi,\n value: addv\n };\n }\n function remove(num, map) {\n // map: index -> remove\n var n = _size;\n var idx, i, j;\n\n // seek forward to first removal\n for (i = 0; !map[_index[i]] && i < n; ++i);\n\n // condense index and value arrays\n for (j = i; i < n; ++i) {\n if (!map[idx = _index[i]]) {\n _index[j] = idx;\n value[j] = value[i];\n ++j;\n }\n }\n _size = n - num;\n }\n function reindex(map) {\n for (var i = 0, n = _size; i < n; ++i) {\n _index[i] = map[_index[i]];\n }\n }\n function bisect(range, array) {\n var n;\n if (array) {\n n = array.length;\n } else {\n array = value;\n n = _size;\n }\n return [bisectLeft(array, range[0], 0, n), bisectRight(array, range[1], 0, n)];\n }\n return {\n insert: insert,\n remove: remove,\n bisect: bisect,\n reindex: reindex,\n index: function index() {\n return _index;\n },\n size: function size() {\n return _size;\n }\n };\n}\nfunction sort(values, index) {\n values.sort.call(index, function (a, b) {\n var x = values[a],\n y = values[b];\n return x < y ? -1 : x > y ? 1 : 0;\n });\n return permute(values, index);\n}\nfunction merge(base, value0, index0, n0, value1, index1, n1, value, index) {\n var i0 = 0,\n i1 = 0,\n i;\n for (i = 0; i0 < n0 && i1 < n1; ++i) {\n if (value0[i0] < value1[i1]) {\n value[i] = value0[i0];\n index[i] = index0[i0++];\n } else {\n value[i] = value1[i1];\n index[i] = index1[i1++] + base;\n }\n }\n for (; i0 < n0; ++i0, ++i) {\n value[i] = value0[i0];\n index[i] = index0[i0];\n }\n for (; i1 < n1; ++i1, ++i) {\n value[i] = value1[i1];\n index[i] = index1[i1] + base;\n }\n}\n\n/**\n * An indexed multi-dimensional filter.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array} params.fields - An array of dimension accessors to filter.\n * @param {Array} params.query - An array of per-dimension range queries.\n */\nfunction CrossFilter(params) {\n Transform.call(this, Bitmaps(), params);\n this._indices = null;\n this._dims = null;\n}\nCrossFilter.Definition = {\n 'type': 'CrossFilter',\n 'metadata': {},\n 'params': [{\n 'name': 'fields',\n 'type': 'field',\n 'array': true,\n 'required': true\n }, {\n 'name': 'query',\n 'type': 'array',\n 'array': true,\n 'required': true,\n 'content': {\n 'type': 'number',\n 'array': true,\n 'length': 2\n }\n }]\n};\ninherits(CrossFilter, Transform, {\n transform: function transform(_, pulse) {\n if (!this._dims) {\n return this.init(_, pulse);\n } else {\n var init = _.modified('fields') || _.fields.some(function (f) {\n return pulse.modified(f.fields);\n });\n return init ? this.reinit(_, pulse) : this.eval(_, pulse);\n }\n },\n init: function init(_, pulse) {\n var fields = _.fields,\n query = _.query,\n indices = this._indices = {},\n dims = this._dims = [],\n m = query.length;\n var i = 0,\n key,\n index;\n\n // instantiate indices and dimensions\n for (; i < m; ++i) {\n key = fields[i].fname;\n index = indices[key] || (indices[key] = SortedIndex());\n dims.push(Dimension(index, i, query[i]));\n }\n return this.eval(_, pulse);\n },\n reinit: function reinit(_, pulse) {\n var output = pulse.materialize().fork(),\n fields = _.fields,\n query = _.query,\n indices = this._indices,\n dims = this._dims,\n bits = this.value,\n curr = bits.curr(),\n prev = bits.prev(),\n all = bits.all(),\n out = output.rem = output.add,\n mod = output.mod,\n m = query.length,\n adds = {};\n var add, index, key, mods, remMap, modMap, i, n, f;\n\n // set prev to current state\n prev.set(curr);\n\n // if pulse has remove tuples, process them first\n if (pulse.rem.length) {\n remMap = this.remove(_, pulse, output);\n }\n\n // if pulse has added tuples, add them to state\n if (pulse.add.length) {\n bits.add(pulse.add);\n }\n\n // if pulse has modified tuples, create an index map\n if (pulse.mod.length) {\n modMap = {};\n for (mods = pulse.mod, i = 0, n = mods.length; i < n; ++i) {\n modMap[mods[i]._index] = 1;\n }\n }\n\n // re-initialize indices as needed, update curr bitmap\n for (i = 0; i < m; ++i) {\n f = fields[i];\n if (!dims[i] || _.modified('fields', i) || pulse.modified(f.fields)) {\n key = f.fname;\n if (!(add = adds[key])) {\n indices[key] = index = SortedIndex();\n adds[key] = add = index.insert(f, pulse.source, 0);\n }\n dims[i] = Dimension(index, i, query[i]).onAdd(add, curr);\n }\n }\n\n // visit each tuple\n // if filter state changed, push index to add/rem\n // else if in mod and passes a filter, push index to mod\n for (i = 0, n = bits.data().length; i < n; ++i) {\n if (remMap[i]) {\n // skip if removed tuple\n continue;\n } else if (prev[i] !== curr[i]) {\n // add if state changed\n out.push(i);\n } else if (modMap[i] && curr[i] !== all) {\n // otherwise, pass mods through\n mod.push(i);\n }\n }\n bits.mask = (1 << m) - 1;\n return output;\n },\n eval: function _eval(_, pulse) {\n var output = pulse.materialize().fork(),\n m = this._dims.length;\n var mask = 0;\n if (pulse.rem.length) {\n this.remove(_, pulse, output);\n mask |= (1 << m) - 1;\n }\n if (_.modified('query') && !_.modified('fields')) {\n mask |= this.update(_, pulse, output);\n }\n if (pulse.add.length) {\n this.insert(_, pulse, output);\n mask |= (1 << m) - 1;\n }\n if (pulse.mod.length) {\n this.modify(pulse, output);\n mask |= (1 << m) - 1;\n }\n this.value.mask = mask;\n return output;\n },\n insert: function insert(_, pulse, output) {\n var tuples = pulse.add,\n bits = this.value,\n dims = this._dims,\n indices = this._indices,\n fields = _.fields,\n adds = {},\n out = output.add,\n n = bits.size() + tuples.length,\n m = dims.length;\n var k = bits.size(),\n j,\n key,\n add;\n\n // resize bitmaps and add tuples as needed\n bits.resize(n, m);\n bits.add(tuples);\n var curr = bits.curr(),\n prev = bits.prev(),\n all = bits.all();\n\n // add to dimensional indices\n for (j = 0; j < m; ++j) {\n key = fields[j].fname;\n add = adds[key] || (adds[key] = indices[key].insert(fields[j], tuples, k));\n dims[j].onAdd(add, curr);\n }\n\n // set previous filters, output if passes at least one filter\n for (; k < n; ++k) {\n prev[k] = all;\n if (curr[k] !== all) out.push(k);\n }\n },\n modify: function modify(pulse, output) {\n var out = output.mod,\n bits = this.value,\n curr = bits.curr(),\n all = bits.all(),\n tuples = pulse.mod;\n var i, n, k;\n for (i = 0, n = tuples.length; i < n; ++i) {\n k = tuples[i]._index;\n if (curr[k] !== all) out.push(k);\n }\n },\n remove: function remove(_, pulse, output) {\n var indices = this._indices,\n bits = this.value,\n curr = bits.curr(),\n prev = bits.prev(),\n all = bits.all(),\n map = {},\n out = output.rem,\n tuples = pulse.rem;\n var i, n, k, f;\n\n // process tuples, output if passes at least one filter\n for (i = 0, n = tuples.length; i < n; ++i) {\n k = tuples[i]._index;\n map[k] = 1; // build index map\n prev[k] = f = curr[k];\n curr[k] = all;\n if (f !== all) out.push(k);\n }\n\n // remove from dimensional indices\n for (k in indices) {\n indices[k].remove(n, map);\n }\n this.reindex(pulse, n, map);\n return map;\n },\n // reindex filters and indices after propagation completes\n reindex: function reindex(pulse, num, map) {\n var indices = this._indices,\n bits = this.value;\n pulse.runAfter(function () {\n var indexMap = bits.remove(num, map);\n for (var key in indices) indices[key].reindex(indexMap);\n });\n },\n update: function update(_, pulse, output) {\n var dims = this._dims,\n query = _.query,\n stamp = pulse.stamp,\n m = dims.length;\n var mask = 0,\n i,\n q;\n\n // survey how many queries have changed\n output.filters = 0;\n for (q = 0; q < m; ++q) {\n if (_.modified('query', q)) {\n i = q;\n ++mask;\n }\n }\n if (mask === 1) {\n // only one query changed, use more efficient update\n mask = dims[i].one;\n this.incrementOne(dims[i], query[i], output.add, output.rem);\n } else {\n // multiple queries changed, perform full record keeping\n for (q = 0, mask = 0; q < m; ++q) {\n if (!_.modified('query', q)) continue;\n mask |= dims[q].one;\n this.incrementAll(dims[q], query[q], stamp, output.add);\n output.rem = output.add; // duplicate add/rem for downstream resolve\n }\n }\n\n return mask;\n },\n incrementAll: function incrementAll(dim, query, stamp, out) {\n var bits = this.value,\n seen = bits.seen(),\n curr = bits.curr(),\n prev = bits.prev(),\n index = dim.index(),\n old = dim.bisect(dim.range),\n range = dim.bisect(query),\n lo1 = range[0],\n hi1 = range[1],\n lo0 = old[0],\n hi0 = old[1],\n one = dim.one;\n var i, j, k;\n\n // Fast incremental update based on previous lo index.\n if (lo1 < lo0) {\n for (i = lo1, j = Math.min(lo0, hi1); i < j; ++i) {\n k = index[i];\n if (seen[k] !== stamp) {\n prev[k] = curr[k];\n seen[k] = stamp;\n out.push(k);\n }\n curr[k] ^= one;\n }\n } else if (lo1 > lo0) {\n for (i = lo0, j = Math.min(lo1, hi0); i < j; ++i) {\n k = index[i];\n if (seen[k] !== stamp) {\n prev[k] = curr[k];\n seen[k] = stamp;\n out.push(k);\n }\n curr[k] ^= one;\n }\n }\n\n // Fast incremental update based on previous hi index.\n if (hi1 > hi0) {\n for (i = Math.max(lo1, hi0), j = hi1; i < j; ++i) {\n k = index[i];\n if (seen[k] !== stamp) {\n prev[k] = curr[k];\n seen[k] = stamp;\n out.push(k);\n }\n curr[k] ^= one;\n }\n } else if (hi1 < hi0) {\n for (i = Math.max(lo0, hi1), j = hi0; i < j; ++i) {\n k = index[i];\n if (seen[k] !== stamp) {\n prev[k] = curr[k];\n seen[k] = stamp;\n out.push(k);\n }\n curr[k] ^= one;\n }\n }\n dim.range = query.slice();\n },\n incrementOne: function incrementOne(dim, query, add, rem) {\n var bits = this.value,\n curr = bits.curr(),\n index = dim.index(),\n old = dim.bisect(dim.range),\n range = dim.bisect(query),\n lo1 = range[0],\n hi1 = range[1],\n lo0 = old[0],\n hi0 = old[1],\n one = dim.one;\n var i, j, k;\n\n // Fast incremental update based on previous lo index.\n if (lo1 < lo0) {\n for (i = lo1, j = Math.min(lo0, hi1); i < j; ++i) {\n k = index[i];\n curr[k] ^= one;\n add.push(k);\n }\n } else if (lo1 > lo0) {\n for (i = lo0, j = Math.min(lo1, hi0); i < j; ++i) {\n k = index[i];\n curr[k] ^= one;\n rem.push(k);\n }\n }\n\n // Fast incremental update based on previous hi index.\n if (hi1 > hi0) {\n for (i = Math.max(lo1, hi0), j = hi1; i < j; ++i) {\n k = index[i];\n curr[k] ^= one;\n add.push(k);\n }\n } else if (hi1 < hi0) {\n for (i = Math.max(lo0, hi1), j = hi0; i < j; ++i) {\n k = index[i];\n curr[k] ^= one;\n rem.push(k);\n }\n }\n dim.range = query.slice();\n }\n});\n\n/**\n * Selectively filters tuples by resolving against a filter bitmap.\n * Useful for processing the output of a cross-filter transform.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {object} params.ignore - A bit mask indicating which filters to ignore.\n * @param {object} params.filter - The per-tuple filter bitmaps. Typically this\n * parameter value is a reference to a {@link CrossFilter} transform.\n */\nfunction ResolveFilter(params) {\n Transform.call(this, null, params);\n}\nResolveFilter.Definition = {\n 'type': 'ResolveFilter',\n 'metadata': {},\n 'params': [{\n 'name': 'ignore',\n 'type': 'number',\n 'required': true,\n 'description': 'A bit mask indicating which filters to ignore.'\n }, {\n 'name': 'filter',\n 'type': 'object',\n 'required': true,\n 'description': 'Per-tuple filter bitmaps from a CrossFilter transform.'\n }]\n};\ninherits(ResolveFilter, Transform, {\n transform: function transform(_, pulse) {\n var ignore = ~(_.ignore || 0),\n // bit mask where zeros -> dims to ignore\n bitmap = _.filter,\n mask = bitmap.mask;\n\n // exit early if no relevant filter changes\n if ((mask & ignore) === 0) return pulse.StopPropagation;\n var output = pulse.fork(pulse.ALL),\n data = bitmap.data(),\n curr = bitmap.curr(),\n prev = bitmap.prev(),\n pass = function pass(k) {\n return !(curr[k] & ignore) ? data[k] : null;\n };\n\n // propagate all mod tuples that pass the filter\n output.filter(output.MOD, pass);\n\n // determine add & rem tuples via filter functions\n // for efficiency, we do *not* populate new arrays,\n // instead we add filter functions applied downstream\n\n if (!(mask & mask - 1)) {\n // only one filter changed\n output.filter(output.ADD, pass);\n output.filter(output.REM, function (k) {\n return (curr[k] & ignore) === mask ? data[k] : null;\n });\n } else {\n // multiple filters changed\n output.filter(output.ADD, function (k) {\n var c = curr[k] & ignore,\n f = !c && c ^ prev[k] & ignore;\n return f ? data[k] : null;\n });\n output.filter(output.REM, function (k) {\n var c = curr[k] & ignore,\n f = c && !(c ^ (c ^ prev[k] & ignore));\n return f ? data[k] : null;\n });\n }\n\n // add filter to source data in case of reflow...\n return output.filter(output.SOURCE, function (t) {\n return pass(t._index);\n });\n }\n});\nexport { CrossFilter as crossfilter, ResolveFilter as resolvefilter };","export default function permute(source, keys) {\n return Array.from(keys, function (key) {\n return source[key];\n });\n}","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _asyncToGenerator from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\";\nimport _regeneratorRuntime from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/regenerator/index.js\";\nimport { extend, error, stringValue, isFunction, toBoolean, toNumber, toDate, toString, identity, field, isObject, isArray, isIterable, hasOwnProperty } from 'vega-util';\nimport { dsvFormat } from 'd3-dsv';\nimport { feature, mesh } from 'topojson-client';\nimport { timeFormatDefaultLocale } from 'vega-format';\n\n// Matches absolute URLs with optional protocol\n// https://... file://... //...\nvar protocol_re = /^(data:|([A-Za-z]+:)?\\/\\/)/;\n\n// Matches allowed URIs. From https://github.com/cure53/DOMPurify/blob/master/src/regexp.js with added file://\nvar allowed_re = /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i; // eslint-disable-line no-useless-escape\nvar whitespace_re = /[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205f\\u3000]/g; // eslint-disable-line no-control-regex\n\n// Special treatment in node.js for the file: protocol\nvar fileProtocol = 'file://';\n\n/**\n * Factory for a loader constructor that provides methods for requesting\n * files from either the network or disk, and for sanitizing request URIs.\n * @param {function} fetch - The Fetch API for HTTP network requests.\n * If null or undefined, HTTP loading will be disabled.\n * @param {object} fs - The file system interface for file loading.\n * If null or undefined, local file loading will be disabled.\n * @return {function} A loader constructor with the following signature:\n * param {object} [options] - Optional default loading options to use.\n * return {object} - A new loader instance.\n */\nfunction loaderFactory(fetch, fs) {\n return function (options) {\n return {\n options: options || {},\n sanitize: sanitize,\n load: load,\n fileAccess: !!fs,\n file: fileLoader(fs),\n http: httpLoader(fetch)\n };\n };\n}\n\n/**\n * Load an external resource, typically either from the web or from the local\n * filesystem. This function uses {@link sanitize} to first sanitize the uri,\n * then calls either {@link http} (for web requests) or {@link file} (for\n * filesystem loading).\n * @param {string} uri - The resource indicator (e.g., URL or filename).\n * @param {object} [options] - Optional loading options. These options will\n * override any existing default options.\n * @return {Promise} - A promise that resolves to the loaded content.\n */\nfunction load(_x, _x2) {\n return _load.apply(this, arguments);\n}\n/**\n * URI sanitizer function.\n * @param {string} uri - The uri (url or filename) to check.\n * @param {object} options - An options hash.\n * @return {Promise} - A promise that resolves to an object containing\n * sanitized uri data, or rejects it the input uri is deemed invalid.\n * The properties of the resolved object are assumed to be\n * valid attributes for an HTML 'a' tag. The sanitized uri *must* be\n * provided by the 'href' property of the returned object.\n */\nfunction _load() {\n _load = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(uri, options) {\n var opt, url;\n return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.sanitize(uri, options);\n case 2:\n opt = _context2.sent;\n url = opt.href;\n return _context2.abrupt(\"return\", opt.localFile ? this.file(url) : this.http(url, options));\n case 5:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n return _load.apply(this, arguments);\n}\nfunction sanitize(_x3, _x4) {\n return _sanitize.apply(this, arguments);\n}\n/**\n * File system loader factory.\n * @param {object} fs - The file system interface.\n * @return {function} - A file loader with the following signature:\n * param {string} filename - The file system path to load.\n * param {string} filename - The file system path to load.\n * return {Promise} A promise that resolves to the file contents.\n */\nfunction _sanitize() {\n _sanitize = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(uri, options) {\n var fileAccess, result, isFile, loadFile, base, isAllowed, hasProtocol;\n return _regeneratorRuntime.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n options = extend({}, this.options, options);\n fileAccess = this.fileAccess, result = {\n href: null\n };\n isAllowed = allowed_re.test(uri.replace(whitespace_re, ''));\n if (uri == null || typeof uri !== 'string' || !isAllowed) {\n error('Sanitize failure, invalid URI: ' + stringValue(uri));\n }\n hasProtocol = protocol_re.test(uri); // if relative url (no protocol/host), prepend baseURL\n if ((base = options.baseURL) && !hasProtocol) {\n // Ensure that there is a slash between the baseURL (e.g. hostname) and url\n if (!uri.startsWith('/') && !base.endsWith('/')) {\n uri = '/' + uri;\n }\n uri = base + uri;\n }\n\n // should we load from file system?\n loadFile = (isFile = uri.startsWith(fileProtocol)) || options.mode === 'file' || options.mode !== 'http' && !hasProtocol && fileAccess;\n if (isFile) {\n // strip file protocol\n uri = uri.slice(fileProtocol.length);\n } else if (uri.startsWith('//')) {\n if (options.defaultProtocol === 'file') {\n // if is file, strip protocol and set loadFile flag\n uri = uri.slice(2);\n loadFile = true;\n } else {\n // if relative protocol (starts with '//'), prepend default protocol\n uri = (options.defaultProtocol || 'http') + ':' + uri;\n }\n }\n\n // set non-enumerable mode flag to indicate local file load\n Object.defineProperty(result, 'localFile', {\n value: !!loadFile\n });\n\n // set uri\n result.href = uri;\n\n // set default result target, if specified\n if (options.target) {\n result.target = options.target + '';\n }\n\n // set default result rel, if specified (#1542)\n if (options.rel) {\n result.rel = options.rel + '';\n }\n\n // provide control over cross-origin image handling (#2238)\n // https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image\n if (options.context === 'image' && options.crossOrigin) {\n result.crossOrigin = options.crossOrigin + '';\n }\n\n // return\n return _context3.abrupt(\"return\", result);\n case 14:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n return _sanitize.apply(this, arguments);\n}\nfunction fileLoader(fs) {\n return fs ? function (filename) {\n return new Promise(function (accept, reject) {\n fs.readFile(filename, function (error, data) {\n if (error) reject(error);else accept(data);\n });\n });\n } : fileReject;\n}\n\n/**\n * Default file system loader that simply rejects.\n */\nfunction fileReject() {\n return _fileReject.apply(this, arguments);\n}\n/**\n * HTTP request handler factory.\n * @param {function} fetch - The Fetch API method.\n * @return {function} - An http loader with the following signature:\n * param {string} url - The url to request.\n * param {object} options - An options hash.\n * return {Promise} - A promise that resolves to the file contents.\n */\nfunction _fileReject() {\n _fileReject = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4() {\n return _regeneratorRuntime.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n error('No file system access.');\n case 1:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4);\n }));\n return _fileReject.apply(this, arguments);\n}\nfunction httpLoader(fetch) {\n return fetch ? /*#__PURE__*/function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(url, options) {\n var opt, type, response;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n opt = extend({}, this.options.http, options);\n type = options && options.response;\n _context.next = 4;\n return fetch(url, opt);\n case 4:\n response = _context.sent;\n return _context.abrupt(\"return\", !response.ok ? error(response.status + '' + response.statusText) : isFunction(response[type]) ? response[type]() : response.text());\n case 6:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n return function (_x5, _x6) {\n return _ref.apply(this, arguments);\n };\n }() : httpReject;\n}\n\n/**\n * Default http request handler that simply rejects.\n */\nfunction httpReject() {\n return _httpReject.apply(this, arguments);\n}\nfunction _httpReject() {\n _httpReject = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5() {\n return _regeneratorRuntime.wrap(function _callee5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n error('No HTTP fetch method available.');\n case 1:\n case \"end\":\n return _context5.stop();\n }\n }, _callee5);\n }));\n return _httpReject.apply(this, arguments);\n}\nvar isValid = function isValid(_) {\n return _ != null && _ === _;\n};\nvar isBoolean = function isBoolean(_) {\n return _ === 'true' || _ === 'false' || _ === true || _ === false;\n};\nvar isDate = function isDate(_) {\n return !Number.isNaN(Date.parse(_));\n};\nvar isNumber = function isNumber(_) {\n return !Number.isNaN(+_) && !(_ instanceof Date);\n};\nvar isInteger = function isInteger(_) {\n return isNumber(_) && Number.isInteger(+_);\n};\nvar typeParsers = {\n boolean: toBoolean,\n integer: toNumber,\n number: toNumber,\n date: toDate,\n string: toString,\n unknown: identity\n};\nvar typeTests = [isBoolean, isInteger, isNumber, isDate];\nvar typeList = ['boolean', 'integer', 'number', 'date'];\nfunction inferType(values, field) {\n if (!values || !values.length) return 'unknown';\n var n = values.length,\n m = typeTests.length,\n a = typeTests.map(function (_, i) {\n return i + 1;\n });\n for (var i = 0, t = 0, j, value; i < n; ++i) {\n value = field ? values[i][field] : values[i];\n for (j = 0; j < m; ++j) {\n if (a[j] && isValid(value) && !typeTests[j](value)) {\n a[j] = 0;\n ++t;\n if (t === typeTests.length) return 'string';\n }\n }\n }\n return typeList[a.reduce(function (u, v) {\n return u === 0 ? v : u;\n }, 0) - 1];\n}\nfunction inferTypes(data, fields) {\n return fields.reduce(function (types, field) {\n types[field] = inferType(data, field);\n return types;\n }, {});\n}\nfunction delimitedFormat(delimiter) {\n var parse = function parse(data, format) {\n var delim = {\n delimiter: delimiter\n };\n return dsv(data, format ? extend(format, delim) : delim);\n };\n parse.responseType = 'text';\n return parse;\n}\nfunction dsv(data, format) {\n if (format.header) {\n data = format.header.map(stringValue).join(format.delimiter) + '\\n' + data;\n }\n return dsvFormat(format.delimiter).parse(data + '');\n}\ndsv.responseType = 'text';\nfunction isBuffer(_) {\n return typeof Buffer === 'function' && isFunction(Buffer.isBuffer) ? Buffer.isBuffer(_) : false;\n}\nfunction json(data, format) {\n var prop = format && format.property ? field(format.property) : identity;\n return isObject(data) && !isBuffer(data) ? parseJSON(prop(data), format) : prop(JSON.parse(data));\n}\njson.responseType = 'json';\nfunction parseJSON(data, format) {\n if (!isArray(data) && isIterable(data)) {\n data = _toConsumableArray(data);\n }\n return format && format.copy ? JSON.parse(JSON.stringify(data)) : data;\n}\nvar filters = {\n interior: function interior(a, b) {\n return a !== b;\n },\n exterior: function exterior(a, b) {\n return a === b;\n }\n};\nfunction topojson(data, format) {\n var method, object, property, filter;\n data = json(data, format);\n if (format && format.feature) {\n method = feature;\n property = format.feature;\n } else if (format && format.mesh) {\n method = mesh;\n property = format.mesh;\n filter = filters[format.filter];\n } else {\n error('Missing TopoJSON feature or mesh parameter.');\n }\n object = (object = data.objects[property]) ? method(data, object, filter) : error('Invalid TopoJSON object: ' + property);\n return object && object.features || [object];\n}\ntopojson.responseType = 'json';\nvar format = {\n dsv: dsv,\n csv: delimitedFormat(','),\n tsv: delimitedFormat('\\t'),\n json: json,\n topojson: topojson\n};\nfunction formats(name, reader) {\n if (arguments.length > 1) {\n format[name] = reader;\n return this;\n } else {\n return hasOwnProperty(format, name) ? format[name] : null;\n }\n}\nfunction responseType(type) {\n var f = formats(type);\n return f && f.responseType || 'text';\n}\nfunction read(data, schema, timeParser, utcParser) {\n schema = schema || {};\n var reader = formats(schema.type || 'json');\n if (!reader) error('Unknown data format type: ' + schema.type);\n data = reader(data, schema);\n if (schema.parse) parse(data, schema.parse, timeParser, utcParser);\n if (hasOwnProperty(data, 'columns')) delete data.columns;\n return data;\n}\nfunction parse(data, types, timeParser, utcParser) {\n if (!data.length) return; // early exit for empty data\n\n var locale = timeFormatDefaultLocale();\n timeParser = timeParser || locale.timeParse;\n utcParser = utcParser || locale.utcParse;\n var fields = data.columns || Object.keys(data[0]),\n datum,\n field,\n i,\n j,\n n,\n m;\n if (types === 'auto') types = inferTypes(data, fields);\n fields = Object.keys(types);\n var parsers = fields.map(function (field) {\n var type = types[field];\n var parts, pattern;\n if (type && (type.startsWith('date:') || type.startsWith('utc:'))) {\n parts = type.split(/:(.+)?/, 2); // split on first :\n pattern = parts[1];\n if (pattern[0] === '\\'' && pattern[pattern.length - 1] === '\\'' || pattern[0] === '\"' && pattern[pattern.length - 1] === '\"') {\n pattern = pattern.slice(1, -1);\n }\n var _parse = parts[0] === 'utc' ? utcParser : timeParser;\n return _parse(pattern);\n }\n if (!typeParsers[type]) {\n throw Error('Illegal format pattern: ' + field + ':' + type);\n }\n return typeParsers[type];\n });\n for (i = 0, n = data.length, m = fields.length; i < n; ++i) {\n datum = data[i];\n for (j = 0; j < m; ++j) {\n field = fields[j];\n datum[field] = parsers[j](datum[field]);\n }\n }\n}\nvar loader = loaderFactory(typeof fetch !== 'undefined' && fetch,\n// use built-in fetch API\nnull // no file system access\n);\n\nexport { format, formats, inferType, inferTypes, loader, read, responseType, typeParsers };","import { error, toSet, isFunction, isString, hasOwnProperty } from 'vega-util';\nvar RawCode = 'RawCode';\nvar Literal = 'Literal';\nvar Property = 'Property';\nvar Identifier = 'Identifier';\nvar ArrayExpression = 'ArrayExpression';\nvar BinaryExpression = 'BinaryExpression';\nvar CallExpression = 'CallExpression';\nvar ConditionalExpression = 'ConditionalExpression';\nvar LogicalExpression = 'LogicalExpression';\nvar MemberExpression = 'MemberExpression';\nvar ObjectExpression = 'ObjectExpression';\nvar UnaryExpression = 'UnaryExpression';\nfunction ASTNode(type) {\n this.type = type;\n}\nASTNode.prototype.visit = function (visitor) {\n var c, i, n;\n if (visitor(this)) return 1;\n for (c = children(this), i = 0, n = c.length; i < n; ++i) {\n if (c[i].visit(visitor)) return 1;\n }\n};\nfunction children(node) {\n switch (node.type) {\n case ArrayExpression:\n return node.elements;\n case BinaryExpression:\n case LogicalExpression:\n return [node.left, node.right];\n case CallExpression:\n return [node.callee].concat(node.arguments);\n case ConditionalExpression:\n return [node.test, node.consequent, node.alternate];\n case MemberExpression:\n return [node.object, node.property];\n case ObjectExpression:\n return node.properties;\n case Property:\n return [node.key, node.value];\n case UnaryExpression:\n return [node.argument];\n case Identifier:\n case Literal:\n case RawCode:\n default:\n return [];\n }\n}\n\n/*\n The following expression parser is based on Esprima (http://esprima.org/).\n Original header comment and license for Esprima is included here:\n\n Copyright (C) 2013 Ariya Hidayat \n Copyright (C) 2013 Thaddee Tyl \n Copyright (C) 2013 Mathias Bynens \n Copyright (C) 2012 Ariya Hidayat \n Copyright (C) 2012 Mathias Bynens \n Copyright (C) 2012 Joost-Wim Boekesteijn \n Copyright (C) 2012 Kris Kowal \n Copyright (C) 2012 Yusuke Suzuki \n Copyright (C) 2012 Arpad Borsos \n Copyright (C) 2011 Ariya Hidayat \n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY\n DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\nvar TokenName, source, index, length, lookahead;\nvar TokenBooleanLiteral = 1,\n TokenEOF = 2,\n TokenIdentifier = 3,\n TokenKeyword = 4,\n TokenNullLiteral = 5,\n TokenNumericLiteral = 6,\n TokenPunctuator = 7,\n TokenStringLiteral = 8,\n TokenRegularExpression = 9;\nTokenName = {};\nTokenName[TokenBooleanLiteral] = 'Boolean';\nTokenName[TokenEOF] = '';\nTokenName[TokenIdentifier] = 'Identifier';\nTokenName[TokenKeyword] = 'Keyword';\nTokenName[TokenNullLiteral] = 'Null';\nTokenName[TokenNumericLiteral] = 'Numeric';\nTokenName[TokenPunctuator] = 'Punctuator';\nTokenName[TokenStringLiteral] = 'String';\nTokenName[TokenRegularExpression] = 'RegularExpression';\nvar SyntaxArrayExpression = 'ArrayExpression',\n SyntaxBinaryExpression = 'BinaryExpression',\n SyntaxCallExpression = 'CallExpression',\n SyntaxConditionalExpression = 'ConditionalExpression',\n SyntaxIdentifier = 'Identifier',\n SyntaxLiteral = 'Literal',\n SyntaxLogicalExpression = 'LogicalExpression',\n SyntaxMemberExpression = 'MemberExpression',\n SyntaxObjectExpression = 'ObjectExpression',\n SyntaxProperty = 'Property',\n SyntaxUnaryExpression = 'UnaryExpression';\n\n// Error messages should be identical to V8.\nvar MessageUnexpectedToken = 'Unexpected token %0',\n MessageUnexpectedNumber = 'Unexpected number',\n MessageUnexpectedString = 'Unexpected string',\n MessageUnexpectedIdentifier = 'Unexpected identifier',\n MessageUnexpectedReserved = 'Unexpected reserved word',\n MessageUnexpectedEOS = 'Unexpected end of input',\n MessageInvalidRegExp = 'Invalid regular expression',\n MessageUnterminatedRegExp = 'Invalid regular expression: missing /',\n MessageStrictOctalLiteral = 'Octal literals are not allowed in strict mode.',\n MessageStrictDuplicateProperty = 'Duplicate data property in object literal not allowed in strict mode';\nvar ILLEGAL = 'ILLEGAL',\n DISABLED = 'Disabled.';\n\n// See also tools/generate-unicode-regex.py.\nvar RegexNonAsciiIdentifierStart = new RegExp(\"[\\\\xAA\\\\xB5\\\\xBA\\\\xC0-\\\\xD6\\\\xD8-\\\\xF6\\\\xF8-\\\\u02C1\\\\u02C6-\\\\u02D1\\\\u02E0-\\\\u02E4\\\\u02EC\\\\u02EE\\\\u0370-\\\\u0374\\\\u0376\\\\u0377\\\\u037A-\\\\u037D\\\\u037F\\\\u0386\\\\u0388-\\\\u038A\\\\u038C\\\\u038E-\\\\u03A1\\\\u03A3-\\\\u03F5\\\\u03F7-\\\\u0481\\\\u048A-\\\\u052F\\\\u0531-\\\\u0556\\\\u0559\\\\u0561-\\\\u0587\\\\u05D0-\\\\u05EA\\\\u05F0-\\\\u05F2\\\\u0620-\\\\u064A\\\\u066E\\\\u066F\\\\u0671-\\\\u06D3\\\\u06D5\\\\u06E5\\\\u06E6\\\\u06EE\\\\u06EF\\\\u06FA-\\\\u06FC\\\\u06FF\\\\u0710\\\\u0712-\\\\u072F\\\\u074D-\\\\u07A5\\\\u07B1\\\\u07CA-\\\\u07EA\\\\u07F4\\\\u07F5\\\\u07FA\\\\u0800-\\\\u0815\\\\u081A\\\\u0824\\\\u0828\\\\u0840-\\\\u0858\\\\u08A0-\\\\u08B2\\\\u0904-\\\\u0939\\\\u093D\\\\u0950\\\\u0958-\\\\u0961\\\\u0971-\\\\u0980\\\\u0985-\\\\u098C\\\\u098F\\\\u0990\\\\u0993-\\\\u09A8\\\\u09AA-\\\\u09B0\\\\u09B2\\\\u09B6-\\\\u09B9\\\\u09BD\\\\u09CE\\\\u09DC\\\\u09DD\\\\u09DF-\\\\u09E1\\\\u09F0\\\\u09F1\\\\u0A05-\\\\u0A0A\\\\u0A0F\\\\u0A10\\\\u0A13-\\\\u0A28\\\\u0A2A-\\\\u0A30\\\\u0A32\\\\u0A33\\\\u0A35\\\\u0A36\\\\u0A38\\\\u0A39\\\\u0A59-\\\\u0A5C\\\\u0A5E\\\\u0A72-\\\\u0A74\\\\u0A85-\\\\u0A8D\\\\u0A8F-\\\\u0A91\\\\u0A93-\\\\u0AA8\\\\u0AAA-\\\\u0AB0\\\\u0AB2\\\\u0AB3\\\\u0AB5-\\\\u0AB9\\\\u0ABD\\\\u0AD0\\\\u0AE0\\\\u0AE1\\\\u0B05-\\\\u0B0C\\\\u0B0F\\\\u0B10\\\\u0B13-\\\\u0B28\\\\u0B2A-\\\\u0B30\\\\u0B32\\\\u0B33\\\\u0B35-\\\\u0B39\\\\u0B3D\\\\u0B5C\\\\u0B5D\\\\u0B5F-\\\\u0B61\\\\u0B71\\\\u0B83\\\\u0B85-\\\\u0B8A\\\\u0B8E-\\\\u0B90\\\\u0B92-\\\\u0B95\\\\u0B99\\\\u0B9A\\\\u0B9C\\\\u0B9E\\\\u0B9F\\\\u0BA3\\\\u0BA4\\\\u0BA8-\\\\u0BAA\\\\u0BAE-\\\\u0BB9\\\\u0BD0\\\\u0C05-\\\\u0C0C\\\\u0C0E-\\\\u0C10\\\\u0C12-\\\\u0C28\\\\u0C2A-\\\\u0C39\\\\u0C3D\\\\u0C58\\\\u0C59\\\\u0C60\\\\u0C61\\\\u0C85-\\\\u0C8C\\\\u0C8E-\\\\u0C90\\\\u0C92-\\\\u0CA8\\\\u0CAA-\\\\u0CB3\\\\u0CB5-\\\\u0CB9\\\\u0CBD\\\\u0CDE\\\\u0CE0\\\\u0CE1\\\\u0CF1\\\\u0CF2\\\\u0D05-\\\\u0D0C\\\\u0D0E-\\\\u0D10\\\\u0D12-\\\\u0D3A\\\\u0D3D\\\\u0D4E\\\\u0D60\\\\u0D61\\\\u0D7A-\\\\u0D7F\\\\u0D85-\\\\u0D96\\\\u0D9A-\\\\u0DB1\\\\u0DB3-\\\\u0DBB\\\\u0DBD\\\\u0DC0-\\\\u0DC6\\\\u0E01-\\\\u0E30\\\\u0E32\\\\u0E33\\\\u0E40-\\\\u0E46\\\\u0E81\\\\u0E82\\\\u0E84\\\\u0E87\\\\u0E88\\\\u0E8A\\\\u0E8D\\\\u0E94-\\\\u0E97\\\\u0E99-\\\\u0E9F\\\\u0EA1-\\\\u0EA3\\\\u0EA5\\\\u0EA7\\\\u0EAA\\\\u0EAB\\\\u0EAD-\\\\u0EB0\\\\u0EB2\\\\u0EB3\\\\u0EBD\\\\u0EC0-\\\\u0EC4\\\\u0EC6\\\\u0EDC-\\\\u0EDF\\\\u0F00\\\\u0F40-\\\\u0F47\\\\u0F49-\\\\u0F6C\\\\u0F88-\\\\u0F8C\\\\u1000-\\\\u102A\\\\u103F\\\\u1050-\\\\u1055\\\\u105A-\\\\u105D\\\\u1061\\\\u1065\\\\u1066\\\\u106E-\\\\u1070\\\\u1075-\\\\u1081\\\\u108E\\\\u10A0-\\\\u10C5\\\\u10C7\\\\u10CD\\\\u10D0-\\\\u10FA\\\\u10FC-\\\\u1248\\\\u124A-\\\\u124D\\\\u1250-\\\\u1256\\\\u1258\\\\u125A-\\\\u125D\\\\u1260-\\\\u1288\\\\u128A-\\\\u128D\\\\u1290-\\\\u12B0\\\\u12B2-\\\\u12B5\\\\u12B8-\\\\u12BE\\\\u12C0\\\\u12C2-\\\\u12C5\\\\u12C8-\\\\u12D6\\\\u12D8-\\\\u1310\\\\u1312-\\\\u1315\\\\u1318-\\\\u135A\\\\u1380-\\\\u138F\\\\u13A0-\\\\u13F4\\\\u1401-\\\\u166C\\\\u166F-\\\\u167F\\\\u1681-\\\\u169A\\\\u16A0-\\\\u16EA\\\\u16EE-\\\\u16F8\\\\u1700-\\\\u170C\\\\u170E-\\\\u1711\\\\u1720-\\\\u1731\\\\u1740-\\\\u1751\\\\u1760-\\\\u176C\\\\u176E-\\\\u1770\\\\u1780-\\\\u17B3\\\\u17D7\\\\u17DC\\\\u1820-\\\\u1877\\\\u1880-\\\\u18A8\\\\u18AA\\\\u18B0-\\\\u18F5\\\\u1900-\\\\u191E\\\\u1950-\\\\u196D\\\\u1970-\\\\u1974\\\\u1980-\\\\u19AB\\\\u19C1-\\\\u19C7\\\\u1A00-\\\\u1A16\\\\u1A20-\\\\u1A54\\\\u1AA7\\\\u1B05-\\\\u1B33\\\\u1B45-\\\\u1B4B\\\\u1B83-\\\\u1BA0\\\\u1BAE\\\\u1BAF\\\\u1BBA-\\\\u1BE5\\\\u1C00-\\\\u1C23\\\\u1C4D-\\\\u1C4F\\\\u1C5A-\\\\u1C7D\\\\u1CE9-\\\\u1CEC\\\\u1CEE-\\\\u1CF1\\\\u1CF5\\\\u1CF6\\\\u1D00-\\\\u1DBF\\\\u1E00-\\\\u1F15\\\\u1F18-\\\\u1F1D\\\\u1F20-\\\\u1F45\\\\u1F48-\\\\u1F4D\\\\u1F50-\\\\u1F57\\\\u1F59\\\\u1F5B\\\\u1F5D\\\\u1F5F-\\\\u1F7D\\\\u1F80-\\\\u1FB4\\\\u1FB6-\\\\u1FBC\\\\u1FBE\\\\u1FC2-\\\\u1FC4\\\\u1FC6-\\\\u1FCC\\\\u1FD0-\\\\u1FD3\\\\u1FD6-\\\\u1FDB\\\\u1FE0-\\\\u1FEC\\\\u1FF2-\\\\u1FF4\\\\u1FF6-\\\\u1FFC\\\\u2071\\\\u207F\\\\u2090-\\\\u209C\\\\u2102\\\\u2107\\\\u210A-\\\\u2113\\\\u2115\\\\u2119-\\\\u211D\\\\u2124\\\\u2126\\\\u2128\\\\u212A-\\\\u212D\\\\u212F-\\\\u2139\\\\u213C-\\\\u213F\\\\u2145-\\\\u2149\\\\u214E\\\\u2160-\\\\u2188\\\\u2C00-\\\\u2C2E\\\\u2C30-\\\\u2C5E\\\\u2C60-\\\\u2CE4\\\\u2CEB-\\\\u2CEE\\\\u2CF2\\\\u2CF3\\\\u2D00-\\\\u2D25\\\\u2D27\\\\u2D2D\\\\u2D30-\\\\u2D67\\\\u2D6F\\\\u2D80-\\\\u2D96\\\\u2DA0-\\\\u2DA6\\\\u2DA8-\\\\u2DAE\\\\u2DB0-\\\\u2DB6\\\\u2DB8-\\\\u2DBE\\\\u2DC0-\\\\u2DC6\\\\u2DC8-\\\\u2DCE\\\\u2DD0-\\\\u2DD6\\\\u2DD8-\\\\u2DDE\\\\u2E2F\\\\u3005-\\\\u3007\\\\u3021-\\\\u3029\\\\u3031-\\\\u3035\\\\u3038-\\\\u303C\\\\u3041-\\\\u3096\\\\u309D-\\\\u309F\\\\u30A1-\\\\u30FA\\\\u30FC-\\\\u30FF\\\\u3105-\\\\u312D\\\\u3131-\\\\u318E\\\\u31A0-\\\\u31BA\\\\u31F0-\\\\u31FF\\\\u3400-\\\\u4DB5\\\\u4E00-\\\\u9FCC\\\\uA000-\\\\uA48C\\\\uA4D0-\\\\uA4FD\\\\uA500-\\\\uA60C\\\\uA610-\\\\uA61F\\\\uA62A\\\\uA62B\\\\uA640-\\\\uA66E\\\\uA67F-\\\\uA69D\\\\uA6A0-\\\\uA6EF\\\\uA717-\\\\uA71F\\\\uA722-\\\\uA788\\\\uA78B-\\\\uA78E\\\\uA790-\\\\uA7AD\\\\uA7B0\\\\uA7B1\\\\uA7F7-\\\\uA801\\\\uA803-\\\\uA805\\\\uA807-\\\\uA80A\\\\uA80C-\\\\uA822\\\\uA840-\\\\uA873\\\\uA882-\\\\uA8B3\\\\uA8F2-\\\\uA8F7\\\\uA8FB\\\\uA90A-\\\\uA925\\\\uA930-\\\\uA946\\\\uA960-\\\\uA97C\\\\uA984-\\\\uA9B2\\\\uA9CF\\\\uA9E0-\\\\uA9E4\\\\uA9E6-\\\\uA9EF\\\\uA9FA-\\\\uA9FE\\\\uAA00-\\\\uAA28\\\\uAA40-\\\\uAA42\\\\uAA44-\\\\uAA4B\\\\uAA60-\\\\uAA76\\\\uAA7A\\\\uAA7E-\\\\uAAAF\\\\uAAB1\\\\uAAB5\\\\uAAB6\\\\uAAB9-\\\\uAABD\\\\uAAC0\\\\uAAC2\\\\uAADB-\\\\uAADD\\\\uAAE0-\\\\uAAEA\\\\uAAF2-\\\\uAAF4\\\\uAB01-\\\\uAB06\\\\uAB09-\\\\uAB0E\\\\uAB11-\\\\uAB16\\\\uAB20-\\\\uAB26\\\\uAB28-\\\\uAB2E\\\\uAB30-\\\\uAB5A\\\\uAB5C-\\\\uAB5F\\\\uAB64\\\\uAB65\\\\uABC0-\\\\uABE2\\\\uAC00-\\\\uD7A3\\\\uD7B0-\\\\uD7C6\\\\uD7CB-\\\\uD7FB\\\\uF900-\\\\uFA6D\\\\uFA70-\\\\uFAD9\\\\uFB00-\\\\uFB06\\\\uFB13-\\\\uFB17\\\\uFB1D\\\\uFB1F-\\\\uFB28\\\\uFB2A-\\\\uFB36\\\\uFB38-\\\\uFB3C\\\\uFB3E\\\\uFB40\\\\uFB41\\\\uFB43\\\\uFB44\\\\uFB46-\\\\uFBB1\\\\uFBD3-\\\\uFD3D\\\\uFD50-\\\\uFD8F\\\\uFD92-\\\\uFDC7\\\\uFDF0-\\\\uFDFB\\\\uFE70-\\\\uFE74\\\\uFE76-\\\\uFEFC\\\\uFF21-\\\\uFF3A\\\\uFF41-\\\\uFF5A\\\\uFF66-\\\\uFFBE\\\\uFFC2-\\\\uFFC7\\\\uFFCA-\\\\uFFCF\\\\uFFD2-\\\\uFFD7\\\\uFFDA-\\\\uFFDC]\"),\n // eslint-disable-next-line no-misleading-character-class\n RegexNonAsciiIdentifierPart = new RegExp(\"[\\\\xAA\\\\xB5\\\\xBA\\\\xC0-\\\\xD6\\\\xD8-\\\\xF6\\\\xF8-\\\\u02C1\\\\u02C6-\\\\u02D1\\\\u02E0-\\\\u02E4\\\\u02EC\\\\u02EE\\\\u0300-\\\\u0374\\\\u0376\\\\u0377\\\\u037A-\\\\u037D\\\\u037F\\\\u0386\\\\u0388-\\\\u038A\\\\u038C\\\\u038E-\\\\u03A1\\\\u03A3-\\\\u03F5\\\\u03F7-\\\\u0481\\\\u0483-\\\\u0487\\\\u048A-\\\\u052F\\\\u0531-\\\\u0556\\\\u0559\\\\u0561-\\\\u0587\\\\u0591-\\\\u05BD\\\\u05BF\\\\u05C1\\\\u05C2\\\\u05C4\\\\u05C5\\\\u05C7\\\\u05D0-\\\\u05EA\\\\u05F0-\\\\u05F2\\\\u0610-\\\\u061A\\\\u0620-\\\\u0669\\\\u066E-\\\\u06D3\\\\u06D5-\\\\u06DC\\\\u06DF-\\\\u06E8\\\\u06EA-\\\\u06FC\\\\u06FF\\\\u0710-\\\\u074A\\\\u074D-\\\\u07B1\\\\u07C0-\\\\u07F5\\\\u07FA\\\\u0800-\\\\u082D\\\\u0840-\\\\u085B\\\\u08A0-\\\\u08B2\\\\u08E4-\\\\u0963\\\\u0966-\\\\u096F\\\\u0971-\\\\u0983\\\\u0985-\\\\u098C\\\\u098F\\\\u0990\\\\u0993-\\\\u09A8\\\\u09AA-\\\\u09B0\\\\u09B2\\\\u09B6-\\\\u09B9\\\\u09BC-\\\\u09C4\\\\u09C7\\\\u09C8\\\\u09CB-\\\\u09CE\\\\u09D7\\\\u09DC\\\\u09DD\\\\u09DF-\\\\u09E3\\\\u09E6-\\\\u09F1\\\\u0A01-\\\\u0A03\\\\u0A05-\\\\u0A0A\\\\u0A0F\\\\u0A10\\\\u0A13-\\\\u0A28\\\\u0A2A-\\\\u0A30\\\\u0A32\\\\u0A33\\\\u0A35\\\\u0A36\\\\u0A38\\\\u0A39\\\\u0A3C\\\\u0A3E-\\\\u0A42\\\\u0A47\\\\u0A48\\\\u0A4B-\\\\u0A4D\\\\u0A51\\\\u0A59-\\\\u0A5C\\\\u0A5E\\\\u0A66-\\\\u0A75\\\\u0A81-\\\\u0A83\\\\u0A85-\\\\u0A8D\\\\u0A8F-\\\\u0A91\\\\u0A93-\\\\u0AA8\\\\u0AAA-\\\\u0AB0\\\\u0AB2\\\\u0AB3\\\\u0AB5-\\\\u0AB9\\\\u0ABC-\\\\u0AC5\\\\u0AC7-\\\\u0AC9\\\\u0ACB-\\\\u0ACD\\\\u0AD0\\\\u0AE0-\\\\u0AE3\\\\u0AE6-\\\\u0AEF\\\\u0B01-\\\\u0B03\\\\u0B05-\\\\u0B0C\\\\u0B0F\\\\u0B10\\\\u0B13-\\\\u0B28\\\\u0B2A-\\\\u0B30\\\\u0B32\\\\u0B33\\\\u0B35-\\\\u0B39\\\\u0B3C-\\\\u0B44\\\\u0B47\\\\u0B48\\\\u0B4B-\\\\u0B4D\\\\u0B56\\\\u0B57\\\\u0B5C\\\\u0B5D\\\\u0B5F-\\\\u0B63\\\\u0B66-\\\\u0B6F\\\\u0B71\\\\u0B82\\\\u0B83\\\\u0B85-\\\\u0B8A\\\\u0B8E-\\\\u0B90\\\\u0B92-\\\\u0B95\\\\u0B99\\\\u0B9A\\\\u0B9C\\\\u0B9E\\\\u0B9F\\\\u0BA3\\\\u0BA4\\\\u0BA8-\\\\u0BAA\\\\u0BAE-\\\\u0BB9\\\\u0BBE-\\\\u0BC2\\\\u0BC6-\\\\u0BC8\\\\u0BCA-\\\\u0BCD\\\\u0BD0\\\\u0BD7\\\\u0BE6-\\\\u0BEF\\\\u0C00-\\\\u0C03\\\\u0C05-\\\\u0C0C\\\\u0C0E-\\\\u0C10\\\\u0C12-\\\\u0C28\\\\u0C2A-\\\\u0C39\\\\u0C3D-\\\\u0C44\\\\u0C46-\\\\u0C48\\\\u0C4A-\\\\u0C4D\\\\u0C55\\\\u0C56\\\\u0C58\\\\u0C59\\\\u0C60-\\\\u0C63\\\\u0C66-\\\\u0C6F\\\\u0C81-\\\\u0C83\\\\u0C85-\\\\u0C8C\\\\u0C8E-\\\\u0C90\\\\u0C92-\\\\u0CA8\\\\u0CAA-\\\\u0CB3\\\\u0CB5-\\\\u0CB9\\\\u0CBC-\\\\u0CC4\\\\u0CC6-\\\\u0CC8\\\\u0CCA-\\\\u0CCD\\\\u0CD5\\\\u0CD6\\\\u0CDE\\\\u0CE0-\\\\u0CE3\\\\u0CE6-\\\\u0CEF\\\\u0CF1\\\\u0CF2\\\\u0D01-\\\\u0D03\\\\u0D05-\\\\u0D0C\\\\u0D0E-\\\\u0D10\\\\u0D12-\\\\u0D3A\\\\u0D3D-\\\\u0D44\\\\u0D46-\\\\u0D48\\\\u0D4A-\\\\u0D4E\\\\u0D57\\\\u0D60-\\\\u0D63\\\\u0D66-\\\\u0D6F\\\\u0D7A-\\\\u0D7F\\\\u0D82\\\\u0D83\\\\u0D85-\\\\u0D96\\\\u0D9A-\\\\u0DB1\\\\u0DB3-\\\\u0DBB\\\\u0DBD\\\\u0DC0-\\\\u0DC6\\\\u0DCA\\\\u0DCF-\\\\u0DD4\\\\u0DD6\\\\u0DD8-\\\\u0DDF\\\\u0DE6-\\\\u0DEF\\\\u0DF2\\\\u0DF3\\\\u0E01-\\\\u0E3A\\\\u0E40-\\\\u0E4E\\\\u0E50-\\\\u0E59\\\\u0E81\\\\u0E82\\\\u0E84\\\\u0E87\\\\u0E88\\\\u0E8A\\\\u0E8D\\\\u0E94-\\\\u0E97\\\\u0E99-\\\\u0E9F\\\\u0EA1-\\\\u0EA3\\\\u0EA5\\\\u0EA7\\\\u0EAA\\\\u0EAB\\\\u0EAD-\\\\u0EB9\\\\u0EBB-\\\\u0EBD\\\\u0EC0-\\\\u0EC4\\\\u0EC6\\\\u0EC8-\\\\u0ECD\\\\u0ED0-\\\\u0ED9\\\\u0EDC-\\\\u0EDF\\\\u0F00\\\\u0F18\\\\u0F19\\\\u0F20-\\\\u0F29\\\\u0F35\\\\u0F37\\\\u0F39\\\\u0F3E-\\\\u0F47\\\\u0F49-\\\\u0F6C\\\\u0F71-\\\\u0F84\\\\u0F86-\\\\u0F97\\\\u0F99-\\\\u0FBC\\\\u0FC6\\\\u1000-\\\\u1049\\\\u1050-\\\\u109D\\\\u10A0-\\\\u10C5\\\\u10C7\\\\u10CD\\\\u10D0-\\\\u10FA\\\\u10FC-\\\\u1248\\\\u124A-\\\\u124D\\\\u1250-\\\\u1256\\\\u1258\\\\u125A-\\\\u125D\\\\u1260-\\\\u1288\\\\u128A-\\\\u128D\\\\u1290-\\\\u12B0\\\\u12B2-\\\\u12B5\\\\u12B8-\\\\u12BE\\\\u12C0\\\\u12C2-\\\\u12C5\\\\u12C8-\\\\u12D6\\\\u12D8-\\\\u1310\\\\u1312-\\\\u1315\\\\u1318-\\\\u135A\\\\u135D-\\\\u135F\\\\u1380-\\\\u138F\\\\u13A0-\\\\u13F4\\\\u1401-\\\\u166C\\\\u166F-\\\\u167F\\\\u1681-\\\\u169A\\\\u16A0-\\\\u16EA\\\\u16EE-\\\\u16F8\\\\u1700-\\\\u170C\\\\u170E-\\\\u1714\\\\u1720-\\\\u1734\\\\u1740-\\\\u1753\\\\u1760-\\\\u176C\\\\u176E-\\\\u1770\\\\u1772\\\\u1773\\\\u1780-\\\\u17D3\\\\u17D7\\\\u17DC\\\\u17DD\\\\u17E0-\\\\u17E9\\\\u180B-\\\\u180D\\\\u1810-\\\\u1819\\\\u1820-\\\\u1877\\\\u1880-\\\\u18AA\\\\u18B0-\\\\u18F5\\\\u1900-\\\\u191E\\\\u1920-\\\\u192B\\\\u1930-\\\\u193B\\\\u1946-\\\\u196D\\\\u1970-\\\\u1974\\\\u1980-\\\\u19AB\\\\u19B0-\\\\u19C9\\\\u19D0-\\\\u19D9\\\\u1A00-\\\\u1A1B\\\\u1A20-\\\\u1A5E\\\\u1A60-\\\\u1A7C\\\\u1A7F-\\\\u1A89\\\\u1A90-\\\\u1A99\\\\u1AA7\\\\u1AB0-\\\\u1ABD\\\\u1B00-\\\\u1B4B\\\\u1B50-\\\\u1B59\\\\u1B6B-\\\\u1B73\\\\u1B80-\\\\u1BF3\\\\u1C00-\\\\u1C37\\\\u1C40-\\\\u1C49\\\\u1C4D-\\\\u1C7D\\\\u1CD0-\\\\u1CD2\\\\u1CD4-\\\\u1CF6\\\\u1CF8\\\\u1CF9\\\\u1D00-\\\\u1DF5\\\\u1DFC-\\\\u1F15\\\\u1F18-\\\\u1F1D\\\\u1F20-\\\\u1F45\\\\u1F48-\\\\u1F4D\\\\u1F50-\\\\u1F57\\\\u1F59\\\\u1F5B\\\\u1F5D\\\\u1F5F-\\\\u1F7D\\\\u1F80-\\\\u1FB4\\\\u1FB6-\\\\u1FBC\\\\u1FBE\\\\u1FC2-\\\\u1FC4\\\\u1FC6-\\\\u1FCC\\\\u1FD0-\\\\u1FD3\\\\u1FD6-\\\\u1FDB\\\\u1FE0-\\\\u1FEC\\\\u1FF2-\\\\u1FF4\\\\u1FF6-\\\\u1FFC\\\\u200C\\\\u200D\\\\u203F\\\\u2040\\\\u2054\\\\u2071\\\\u207F\\\\u2090-\\\\u209C\\\\u20D0-\\\\u20DC\\\\u20E1\\\\u20E5-\\\\u20F0\\\\u2102\\\\u2107\\\\u210A-\\\\u2113\\\\u2115\\\\u2119-\\\\u211D\\\\u2124\\\\u2126\\\\u2128\\\\u212A-\\\\u212D\\\\u212F-\\\\u2139\\\\u213C-\\\\u213F\\\\u2145-\\\\u2149\\\\u214E\\\\u2160-\\\\u2188\\\\u2C00-\\\\u2C2E\\\\u2C30-\\\\u2C5E\\\\u2C60-\\\\u2CE4\\\\u2CEB-\\\\u2CF3\\\\u2D00-\\\\u2D25\\\\u2D27\\\\u2D2D\\\\u2D30-\\\\u2D67\\\\u2D6F\\\\u2D7F-\\\\u2D96\\\\u2DA0-\\\\u2DA6\\\\u2DA8-\\\\u2DAE\\\\u2DB0-\\\\u2DB6\\\\u2DB8-\\\\u2DBE\\\\u2DC0-\\\\u2DC6\\\\u2DC8-\\\\u2DCE\\\\u2DD0-\\\\u2DD6\\\\u2DD8-\\\\u2DDE\\\\u2DE0-\\\\u2DFF\\\\u2E2F\\\\u3005-\\\\u3007\\\\u3021-\\\\u302F\\\\u3031-\\\\u3035\\\\u3038-\\\\u303C\\\\u3041-\\\\u3096\\\\u3099\\\\u309A\\\\u309D-\\\\u309F\\\\u30A1-\\\\u30FA\\\\u30FC-\\\\u30FF\\\\u3105-\\\\u312D\\\\u3131-\\\\u318E\\\\u31A0-\\\\u31BA\\\\u31F0-\\\\u31FF\\\\u3400-\\\\u4DB5\\\\u4E00-\\\\u9FCC\\\\uA000-\\\\uA48C\\\\uA4D0-\\\\uA4FD\\\\uA500-\\\\uA60C\\\\uA610-\\\\uA62B\\\\uA640-\\\\uA66F\\\\uA674-\\\\uA67D\\\\uA67F-\\\\uA69D\\\\uA69F-\\\\uA6F1\\\\uA717-\\\\uA71F\\\\uA722-\\\\uA788\\\\uA78B-\\\\uA78E\\\\uA790-\\\\uA7AD\\\\uA7B0\\\\uA7B1\\\\uA7F7-\\\\uA827\\\\uA840-\\\\uA873\\\\uA880-\\\\uA8C4\\\\uA8D0-\\\\uA8D9\\\\uA8E0-\\\\uA8F7\\\\uA8FB\\\\uA900-\\\\uA92D\\\\uA930-\\\\uA953\\\\uA960-\\\\uA97C\\\\uA980-\\\\uA9C0\\\\uA9CF-\\\\uA9D9\\\\uA9E0-\\\\uA9FE\\\\uAA00-\\\\uAA36\\\\uAA40-\\\\uAA4D\\\\uAA50-\\\\uAA59\\\\uAA60-\\\\uAA76\\\\uAA7A-\\\\uAAC2\\\\uAADB-\\\\uAADD\\\\uAAE0-\\\\uAAEF\\\\uAAF2-\\\\uAAF6\\\\uAB01-\\\\uAB06\\\\uAB09-\\\\uAB0E\\\\uAB11-\\\\uAB16\\\\uAB20-\\\\uAB26\\\\uAB28-\\\\uAB2E\\\\uAB30-\\\\uAB5A\\\\uAB5C-\\\\uAB5F\\\\uAB64\\\\uAB65\\\\uABC0-\\\\uABEA\\\\uABEC\\\\uABED\\\\uABF0-\\\\uABF9\\\\uAC00-\\\\uD7A3\\\\uD7B0-\\\\uD7C6\\\\uD7CB-\\\\uD7FB\\\\uF900-\\\\uFA6D\\\\uFA70-\\\\uFAD9\\\\uFB00-\\\\uFB06\\\\uFB13-\\\\uFB17\\\\uFB1D-\\\\uFB28\\\\uFB2A-\\\\uFB36\\\\uFB38-\\\\uFB3C\\\\uFB3E\\\\uFB40\\\\uFB41\\\\uFB43\\\\uFB44\\\\uFB46-\\\\uFBB1\\\\uFBD3-\\\\uFD3D\\\\uFD50-\\\\uFD8F\\\\uFD92-\\\\uFDC7\\\\uFDF0-\\\\uFDFB\\\\uFE00-\\\\uFE0F\\\\uFE20-\\\\uFE2D\\\\uFE33\\\\uFE34\\\\uFE4D-\\\\uFE4F\\\\uFE70-\\\\uFE74\\\\uFE76-\\\\uFEFC\\\\uFF10-\\\\uFF19\\\\uFF21-\\\\uFF3A\\\\uFF3F\\\\uFF41-\\\\uFF5A\\\\uFF66-\\\\uFFBE\\\\uFFC2-\\\\uFFC7\\\\uFFCA-\\\\uFFCF\\\\uFFD2-\\\\uFFD7\\\\uFFDA-\\\\uFFDC]\");\n\n// Ensure the condition is true, otherwise throw an error.\n// This is only to have a better contract semantic, i.e. another safety net\n// to catch a logic error. The condition shall be fulfilled in normal case.\n// Do NOT use this to enforce a certain condition on any user input.\n\nfunction assert(condition, message) {\n /* istanbul ignore next */\n if (!condition) {\n throw new Error('ASSERT: ' + message);\n }\n}\nfunction isDecimalDigit(ch) {\n return ch >= 0x30 && ch <= 0x39; // 0..9\n}\n\nfunction isHexDigit(ch) {\n return '0123456789abcdefABCDEF'.indexOf(ch) >= 0;\n}\nfunction isOctalDigit(ch) {\n return '01234567'.indexOf(ch) >= 0;\n}\n\n// 7.2 White Space\n\nfunction isWhiteSpace(ch) {\n return ch === 0x20 || ch === 0x09 || ch === 0x0B || ch === 0x0C || ch === 0xA0 || ch >= 0x1680 && [0x1680, 0x180E, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202F, 0x205F, 0x3000, 0xFEFF].indexOf(ch) >= 0;\n}\n\n// 7.3 Line Terminators\n\nfunction isLineTerminator(ch) {\n return ch === 0x0A || ch === 0x0D || ch === 0x2028 || ch === 0x2029;\n}\n\n// 7.6 Identifier Names and Identifiers\n\nfunction isIdentifierStart(ch) {\n return ch === 0x24 || ch === 0x5F ||\n // $ (dollar) and _ (underscore)\n ch >= 0x41 && ch <= 0x5A ||\n // A..Z\n ch >= 0x61 && ch <= 0x7A ||\n // a..z\n ch === 0x5C ||\n // \\ (backslash)\n ch >= 0x80 && RegexNonAsciiIdentifierStart.test(String.fromCharCode(ch));\n}\nfunction isIdentifierPart(ch) {\n return ch === 0x24 || ch === 0x5F ||\n // $ (dollar) and _ (underscore)\n ch >= 0x41 && ch <= 0x5A ||\n // A..Z\n ch >= 0x61 && ch <= 0x7A ||\n // a..z\n ch >= 0x30 && ch <= 0x39 ||\n // 0..9\n ch === 0x5C ||\n // \\ (backslash)\n ch >= 0x80 && RegexNonAsciiIdentifierPart.test(String.fromCharCode(ch));\n}\n\n// 7.6.1.1 Keywords\n\nvar keywords = {\n 'if': 1,\n 'in': 1,\n 'do': 1,\n 'var': 1,\n 'for': 1,\n 'new': 1,\n 'try': 1,\n 'let': 1,\n 'this': 1,\n 'else': 1,\n 'case': 1,\n 'void': 1,\n 'with': 1,\n 'enum': 1,\n 'while': 1,\n 'break': 1,\n 'catch': 1,\n 'throw': 1,\n 'const': 1,\n 'yield': 1,\n 'class': 1,\n 'super': 1,\n 'return': 1,\n 'typeof': 1,\n 'delete': 1,\n 'switch': 1,\n 'export': 1,\n 'import': 1,\n 'public': 1,\n 'static': 1,\n 'default': 1,\n 'finally': 1,\n 'extends': 1,\n 'package': 1,\n 'private': 1,\n 'function': 1,\n 'continue': 1,\n 'debugger': 1,\n 'interface': 1,\n 'protected': 1,\n 'instanceof': 1,\n 'implements': 1\n};\nfunction skipComment() {\n while (index < length) {\n var ch = source.charCodeAt(index);\n if (isWhiteSpace(ch) || isLineTerminator(ch)) {\n ++index;\n } else {\n break;\n }\n }\n}\nfunction scanHexEscape(prefix) {\n var i,\n len,\n ch,\n code = 0;\n len = prefix === 'u' ? 4 : 2;\n for (i = 0; i < len; ++i) {\n if (index < length && isHexDigit(source[index])) {\n ch = source[index++];\n code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase());\n } else {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n }\n return String.fromCharCode(code);\n}\nfunction scanUnicodeCodePointEscape() {\n var ch, code, cu1, cu2;\n ch = source[index];\n code = 0;\n\n // At least, one hex digit is required.\n if (ch === '}') {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n while (index < length) {\n ch = source[index++];\n if (!isHexDigit(ch)) {\n break;\n }\n code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase());\n }\n if (code > 0x10FFFF || ch !== '}') {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n\n // UTF-16 Encoding\n if (code <= 0xFFFF) {\n return String.fromCharCode(code);\n }\n cu1 = (code - 0x10000 >> 10) + 0xD800;\n cu2 = (code - 0x10000 & 1023) + 0xDC00;\n return String.fromCharCode(cu1, cu2);\n}\nfunction getEscapedIdentifier() {\n var ch, id;\n ch = source.charCodeAt(index++);\n id = String.fromCharCode(ch);\n\n // '\\u' (U+005C, U+0075) denotes an escaped character.\n if (ch === 0x5C) {\n if (source.charCodeAt(index) !== 0x75) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n ++index;\n ch = scanHexEscape('u');\n if (!ch || ch === '\\\\' || !isIdentifierStart(ch.charCodeAt(0))) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n id = ch;\n }\n while (index < length) {\n ch = source.charCodeAt(index);\n if (!isIdentifierPart(ch)) {\n break;\n }\n ++index;\n id += String.fromCharCode(ch);\n\n // '\\u' (U+005C, U+0075) denotes an escaped character.\n if (ch === 0x5C) {\n id = id.substr(0, id.length - 1);\n if (source.charCodeAt(index) !== 0x75) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n ++index;\n ch = scanHexEscape('u');\n if (!ch || ch === '\\\\' || !isIdentifierPart(ch.charCodeAt(0))) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n id += ch;\n }\n }\n return id;\n}\nfunction getIdentifier() {\n var start, ch;\n start = index++;\n while (index < length) {\n ch = source.charCodeAt(index);\n if (ch === 0x5C) {\n // Blackslash (U+005C) marks Unicode escape sequence.\n index = start;\n return getEscapedIdentifier();\n }\n if (isIdentifierPart(ch)) {\n ++index;\n } else {\n break;\n }\n }\n return source.slice(start, index);\n}\nfunction scanIdentifier() {\n var start, id, type;\n start = index;\n\n // Backslash (U+005C) starts an escaped character.\n id = source.charCodeAt(index) === 0x5C ? getEscapedIdentifier() : getIdentifier();\n\n // There is no keyword or literal with only one character.\n // Thus, it must be an identifier.\n if (id.length === 1) {\n type = TokenIdentifier;\n } else if (keywords.hasOwnProperty(id)) {\n // eslint-disable-line no-prototype-builtins\n type = TokenKeyword;\n } else if (id === 'null') {\n type = TokenNullLiteral;\n } else if (id === 'true' || id === 'false') {\n type = TokenBooleanLiteral;\n } else {\n type = TokenIdentifier;\n }\n return {\n type: type,\n value: id,\n start: start,\n end: index\n };\n}\n\n// 7.7 Punctuators\n\nfunction scanPunctuator() {\n var start = index,\n code = source.charCodeAt(index),\n code2,\n ch1 = source[index],\n ch2,\n ch3,\n ch4;\n switch (code) {\n // Check for most common single-character punctuators.\n case 0x2E: // . dot\n case 0x28: // ( open bracket\n case 0x29: // ) close bracket\n case 0x3B: // ; semicolon\n case 0x2C: // , comma\n case 0x7B: // { open curly brace\n case 0x7D: // } close curly brace\n case 0x5B: // [\n case 0x5D: // ]\n case 0x3A: // :\n case 0x3F: // ?\n case 0x7E:\n // ~\n ++index;\n return {\n type: TokenPunctuator,\n value: String.fromCharCode(code),\n start: start,\n end: index\n };\n default:\n code2 = source.charCodeAt(index + 1);\n\n // '=' (U+003D) marks an assignment or comparison operator.\n if (code2 === 0x3D) {\n switch (code) {\n case 0x2B: // +\n case 0x2D: // -\n case 0x2F: // /\n case 0x3C: // <\n case 0x3E: // >\n case 0x5E: // ^\n case 0x7C: // |\n case 0x25: // %\n case 0x26: // &\n case 0x2A:\n // *\n index += 2;\n return {\n type: TokenPunctuator,\n value: String.fromCharCode(code) + String.fromCharCode(code2),\n start: start,\n end: index\n };\n case 0x21: // !\n case 0x3D:\n // =\n index += 2;\n\n // !== and ===\n if (source.charCodeAt(index) === 0x3D) {\n ++index;\n }\n return {\n type: TokenPunctuator,\n value: source.slice(start, index),\n start: start,\n end: index\n };\n }\n }\n }\n\n // 4-character punctuator: >>>=\n\n ch4 = source.substr(index, 4);\n if (ch4 === '>>>=') {\n index += 4;\n return {\n type: TokenPunctuator,\n value: ch4,\n start: start,\n end: index\n };\n }\n\n // 3-character punctuators: === !== >>> <<= >>=\n\n ch3 = ch4.substr(0, 3);\n if (ch3 === '>>>' || ch3 === '<<=' || ch3 === '>>=') {\n index += 3;\n return {\n type: TokenPunctuator,\n value: ch3,\n start: start,\n end: index\n };\n }\n\n // Other 2-character punctuators: ++ -- << >> && ||\n ch2 = ch3.substr(0, 2);\n if (ch1 === ch2[1] && '+-<>&|'.indexOf(ch1) >= 0 || ch2 === '=>') {\n index += 2;\n return {\n type: TokenPunctuator,\n value: ch2,\n start: start,\n end: index\n };\n }\n if (ch2 === '//') {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n\n // 1-character punctuators: < > = ! + - * % & | ^ /\n\n if ('<>=!+-*%&|^/'.indexOf(ch1) >= 0) {\n ++index;\n return {\n type: TokenPunctuator,\n value: ch1,\n start: start,\n end: index\n };\n }\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n}\n\n// 7.8.3 Numeric Literals\n\nfunction scanHexLiteral(start) {\n var number = '';\n while (index < length) {\n if (!isHexDigit(source[index])) {\n break;\n }\n number += source[index++];\n }\n if (number.length === 0) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n if (isIdentifierStart(source.charCodeAt(index))) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n return {\n type: TokenNumericLiteral,\n value: parseInt('0x' + number, 16),\n start: start,\n end: index\n };\n}\nfunction scanOctalLiteral(start) {\n var number = '0' + source[index++];\n while (index < length) {\n if (!isOctalDigit(source[index])) {\n break;\n }\n number += source[index++];\n }\n if (isIdentifierStart(source.charCodeAt(index)) || isDecimalDigit(source.charCodeAt(index))) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n return {\n type: TokenNumericLiteral,\n value: parseInt(number, 8),\n octal: true,\n start: start,\n end: index\n };\n}\nfunction scanNumericLiteral() {\n var number, start, ch;\n ch = source[index];\n assert(isDecimalDigit(ch.charCodeAt(0)) || ch === '.', 'Numeric literal must start with a decimal digit or a decimal point');\n start = index;\n number = '';\n if (ch !== '.') {\n number = source[index++];\n ch = source[index];\n\n // Hex number starts with '0x'.\n // Octal number starts with '0'.\n if (number === '0') {\n if (ch === 'x' || ch === 'X') {\n ++index;\n return scanHexLiteral(start);\n }\n if (isOctalDigit(ch)) {\n return scanOctalLiteral(start);\n }\n\n // decimal number starts with '0' such as '09' is illegal.\n if (ch && isDecimalDigit(ch.charCodeAt(0))) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n }\n while (isDecimalDigit(source.charCodeAt(index))) {\n number += source[index++];\n }\n ch = source[index];\n }\n if (ch === '.') {\n number += source[index++];\n while (isDecimalDigit(source.charCodeAt(index))) {\n number += source[index++];\n }\n ch = source[index];\n }\n if (ch === 'e' || ch === 'E') {\n number += source[index++];\n ch = source[index];\n if (ch === '+' || ch === '-') {\n number += source[index++];\n }\n if (isDecimalDigit(source.charCodeAt(index))) {\n while (isDecimalDigit(source.charCodeAt(index))) {\n number += source[index++];\n }\n } else {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n }\n if (isIdentifierStart(source.charCodeAt(index))) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n return {\n type: TokenNumericLiteral,\n value: parseFloat(number),\n start: start,\n end: index\n };\n}\n\n// 7.8.4 String Literals\n\nfunction scanStringLiteral() {\n var str = '',\n quote,\n start,\n ch,\n code,\n octal = false;\n quote = source[index];\n assert(quote === '\\'' || quote === '\"', 'String literal must starts with a quote');\n start = index;\n ++index;\n while (index < length) {\n ch = source[index++];\n if (ch === quote) {\n quote = '';\n break;\n } else if (ch === '\\\\') {\n ch = source[index++];\n if (!ch || !isLineTerminator(ch.charCodeAt(0))) {\n switch (ch) {\n case 'u':\n case 'x':\n if (source[index] === '{') {\n ++index;\n str += scanUnicodeCodePointEscape();\n } else {\n str += scanHexEscape(ch);\n }\n break;\n case 'n':\n str += '\\n';\n break;\n case 'r':\n str += '\\r';\n break;\n case 't':\n str += '\\t';\n break;\n case 'b':\n str += '\\b';\n break;\n case 'f':\n str += '\\f';\n break;\n case 'v':\n str += '\\x0B';\n break;\n default:\n if (isOctalDigit(ch)) {\n code = '01234567'.indexOf(ch);\n\n // \\0 is not octal escape sequence\n if (code !== 0) {\n octal = true;\n }\n if (index < length && isOctalDigit(source[index])) {\n octal = true;\n code = code * 8 + '01234567'.indexOf(source[index++]);\n\n // 3 digits are only allowed when string starts\n // with 0, 1, 2, 3\n if ('0123'.indexOf(ch) >= 0 && index < length && isOctalDigit(source[index])) {\n code = code * 8 + '01234567'.indexOf(source[index++]);\n }\n }\n str += String.fromCharCode(code);\n } else {\n str += ch;\n }\n break;\n }\n } else {\n if (ch === '\\r' && source[index] === '\\n') {\n ++index;\n }\n }\n } else if (isLineTerminator(ch.charCodeAt(0))) {\n break;\n } else {\n str += ch;\n }\n }\n if (quote !== '') {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n return {\n type: TokenStringLiteral,\n value: str,\n octal: octal,\n start: start,\n end: index\n };\n}\nfunction testRegExp(pattern, flags) {\n var tmp = pattern;\n if (flags.indexOf('u') >= 0) {\n // Replace each astral symbol and every Unicode code point\n // escape sequence with a single ASCII symbol to avoid throwing on\n // regular expressions that are only valid in combination with the\n // `/u` flag.\n // Note: replacing with the ASCII symbol `x` might cause false\n // negatives in unlikely scenarios. For example, `[\\u{61}-b]` is a\n // perfectly valid pattern that is equivalent to `[a-b]`, but it\n // would be replaced by `[x-b]` which throws an error.\n tmp = tmp.replace(/\\\\u\\{([0-9a-fA-F]+)\\}/g, function ($0, $1) {\n if (parseInt($1, 16) <= 0x10FFFF) {\n return 'x';\n }\n throwError({}, MessageInvalidRegExp);\n }).replace(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g, 'x');\n }\n\n // First, detect invalid regular expressions.\n try {\n new RegExp(tmp);\n } catch (e) {\n throwError({}, MessageInvalidRegExp);\n }\n\n // Return a regular expression object for this pattern-flag pair, or\n // `null` in case the current environment doesn't support the flags it\n // uses.\n try {\n return new RegExp(pattern, flags);\n } catch (exception) {\n return null;\n }\n}\nfunction scanRegExpBody() {\n var ch, str, classMarker, terminated, body;\n ch = source[index];\n assert(ch === '/', 'Regular expression literal must start with a slash');\n str = source[index++];\n classMarker = false;\n terminated = false;\n while (index < length) {\n ch = source[index++];\n str += ch;\n if (ch === '\\\\') {\n ch = source[index++];\n // ECMA-262 7.8.5\n if (isLineTerminator(ch.charCodeAt(0))) {\n throwError({}, MessageUnterminatedRegExp);\n }\n str += ch;\n } else if (isLineTerminator(ch.charCodeAt(0))) {\n throwError({}, MessageUnterminatedRegExp);\n } else if (classMarker) {\n if (ch === ']') {\n classMarker = false;\n }\n } else {\n if (ch === '/') {\n terminated = true;\n break;\n } else if (ch === '[') {\n classMarker = true;\n }\n }\n }\n if (!terminated) {\n throwError({}, MessageUnterminatedRegExp);\n }\n\n // Exclude leading and trailing slash.\n body = str.substr(1, str.length - 2);\n return {\n value: body,\n literal: str\n };\n}\nfunction scanRegExpFlags() {\n var ch, str, flags;\n str = '';\n flags = '';\n while (index < length) {\n ch = source[index];\n if (!isIdentifierPart(ch.charCodeAt(0))) {\n break;\n }\n ++index;\n if (ch === '\\\\' && index < length) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n } else {\n flags += ch;\n str += ch;\n }\n }\n if (flags.search(/[^gimuy]/g) >= 0) {\n throwError({}, MessageInvalidRegExp, flags);\n }\n return {\n value: flags,\n literal: str\n };\n}\nfunction scanRegExp() {\n var start, body, flags, value;\n lookahead = null;\n skipComment();\n start = index;\n body = scanRegExpBody();\n flags = scanRegExpFlags();\n value = testRegExp(body.value, flags.value);\n return {\n literal: body.literal + flags.literal,\n value: value,\n regex: {\n pattern: body.value,\n flags: flags.value\n },\n start: start,\n end: index\n };\n}\nfunction isIdentifierName(token) {\n return token.type === TokenIdentifier || token.type === TokenKeyword || token.type === TokenBooleanLiteral || token.type === TokenNullLiteral;\n}\nfunction advance() {\n skipComment();\n if (index >= length) {\n return {\n type: TokenEOF,\n start: index,\n end: index\n };\n }\n var ch = source.charCodeAt(index);\n if (isIdentifierStart(ch)) {\n return scanIdentifier();\n }\n\n // Very common: ( and ) and ;\n if (ch === 0x28 || ch === 0x29 || ch === 0x3B) {\n return scanPunctuator();\n }\n\n // String literal starts with single quote (U+0027) or double quote (U+0022).\n if (ch === 0x27 || ch === 0x22) {\n return scanStringLiteral();\n }\n\n // Dot (.) U+002E can also start a floating-point number, hence the need\n // to check the next character.\n if (ch === 0x2E) {\n if (isDecimalDigit(source.charCodeAt(index + 1))) {\n return scanNumericLiteral();\n }\n return scanPunctuator();\n }\n if (isDecimalDigit(ch)) {\n return scanNumericLiteral();\n }\n return scanPunctuator();\n}\nfunction lex() {\n var token = lookahead;\n index = token.end;\n lookahead = advance();\n index = token.end;\n return token;\n}\nfunction peek() {\n var pos = index;\n lookahead = advance();\n index = pos;\n}\nfunction finishArrayExpression(elements) {\n var node = new ASTNode(SyntaxArrayExpression);\n node.elements = elements;\n return node;\n}\nfunction finishBinaryExpression(operator, left, right) {\n var node = new ASTNode(operator === '||' || operator === '&&' ? SyntaxLogicalExpression : SyntaxBinaryExpression);\n node.operator = operator;\n node.left = left;\n node.right = right;\n return node;\n}\nfunction finishCallExpression(callee, args) {\n var node = new ASTNode(SyntaxCallExpression);\n node.callee = callee;\n node.arguments = args;\n return node;\n}\nfunction finishConditionalExpression(test, consequent, alternate) {\n var node = new ASTNode(SyntaxConditionalExpression);\n node.test = test;\n node.consequent = consequent;\n node.alternate = alternate;\n return node;\n}\nfunction finishIdentifier(name) {\n var node = new ASTNode(SyntaxIdentifier);\n node.name = name;\n return node;\n}\nfunction finishLiteral(token) {\n var node = new ASTNode(SyntaxLiteral);\n node.value = token.value;\n node.raw = source.slice(token.start, token.end);\n if (token.regex) {\n if (node.raw === '//') {\n node.raw = '/(?:)/';\n }\n node.regex = token.regex;\n }\n return node;\n}\nfunction finishMemberExpression(accessor, object, property) {\n var node = new ASTNode(SyntaxMemberExpression);\n node.computed = accessor === '[';\n node.object = object;\n node.property = property;\n if (!node.computed) property.member = true;\n return node;\n}\nfunction finishObjectExpression(properties) {\n var node = new ASTNode(SyntaxObjectExpression);\n node.properties = properties;\n return node;\n}\nfunction finishProperty(kind, key, value) {\n var node = new ASTNode(SyntaxProperty);\n node.key = key;\n node.value = value;\n node.kind = kind;\n return node;\n}\nfunction finishUnaryExpression(operator, argument) {\n var node = new ASTNode(SyntaxUnaryExpression);\n node.operator = operator;\n node.argument = argument;\n node.prefix = true;\n return node;\n}\n\n// Throw an exception\n\nfunction throwError(token, messageFormat) {\n var error,\n args = Array.prototype.slice.call(arguments, 2),\n msg = messageFormat.replace(/%(\\d)/g, function (whole, index) {\n assert(index < args.length, 'Message reference must be in range');\n return args[index];\n });\n error = new Error(msg);\n error.index = index;\n error.description = msg;\n throw error;\n}\n\n// Throw an exception because of the token.\n\nfunction throwUnexpected(token) {\n if (token.type === TokenEOF) {\n throwError(token, MessageUnexpectedEOS);\n }\n if (token.type === TokenNumericLiteral) {\n throwError(token, MessageUnexpectedNumber);\n }\n if (token.type === TokenStringLiteral) {\n throwError(token, MessageUnexpectedString);\n }\n if (token.type === TokenIdentifier) {\n throwError(token, MessageUnexpectedIdentifier);\n }\n if (token.type === TokenKeyword) {\n throwError(token, MessageUnexpectedReserved);\n }\n\n // BooleanLiteral, NullLiteral, or Punctuator.\n throwError(token, MessageUnexpectedToken, token.value);\n}\n\n// Expect the next token to match the specified punctuator.\n// If not, an exception will be thrown.\n\nfunction expect(value) {\n var token = lex();\n if (token.type !== TokenPunctuator || token.value !== value) {\n throwUnexpected(token);\n }\n}\n\n// Return true if the next token matches the specified punctuator.\n\nfunction match(value) {\n return lookahead.type === TokenPunctuator && lookahead.value === value;\n}\n\n// Return true if the next token matches the specified keyword\n\nfunction matchKeyword(keyword) {\n return lookahead.type === TokenKeyword && lookahead.value === keyword;\n}\n\n// 11.1.4 Array Initialiser\n\nfunction parseArrayInitialiser() {\n var elements = [];\n index = lookahead.start;\n expect('[');\n while (!match(']')) {\n if (match(',')) {\n lex();\n elements.push(null);\n } else {\n elements.push(parseConditionalExpression());\n if (!match(']')) {\n expect(',');\n }\n }\n }\n lex();\n return finishArrayExpression(elements);\n}\n\n// 11.1.5 Object Initialiser\n\nfunction parseObjectPropertyKey() {\n index = lookahead.start;\n var token = lex();\n\n // Note: This function is called only from parseObjectProperty(), where\n // EOF and Punctuator tokens are already filtered out.\n\n if (token.type === TokenStringLiteral || token.type === TokenNumericLiteral) {\n if (token.octal) {\n throwError(token, MessageStrictOctalLiteral);\n }\n return finishLiteral(token);\n }\n return finishIdentifier(token.value);\n}\nfunction parseObjectProperty() {\n var token, key, id, value;\n index = lookahead.start;\n token = lookahead;\n if (token.type === TokenIdentifier) {\n id = parseObjectPropertyKey();\n expect(':');\n value = parseConditionalExpression();\n return finishProperty('init', id, value);\n }\n if (token.type === TokenEOF || token.type === TokenPunctuator) {\n throwUnexpected(token);\n } else {\n key = parseObjectPropertyKey();\n expect(':');\n value = parseConditionalExpression();\n return finishProperty('init', key, value);\n }\n}\nfunction parseObjectInitialiser() {\n var properties = [],\n property,\n name,\n key,\n map = {},\n toString = String;\n index = lookahead.start;\n expect('{');\n while (!match('}')) {\n property = parseObjectProperty();\n if (property.key.type === SyntaxIdentifier) {\n name = property.key.name;\n } else {\n name = toString(property.key.value);\n }\n key = '$' + name;\n if (Object.prototype.hasOwnProperty.call(map, key)) {\n throwError({}, MessageStrictDuplicateProperty);\n } else {\n map[key] = true;\n }\n properties.push(property);\n if (!match('}')) {\n expect(',');\n }\n }\n expect('}');\n return finishObjectExpression(properties);\n}\n\n// 11.1.6 The Grouping Operator\n\nfunction parseGroupExpression() {\n expect('(');\n var expr = parseExpression();\n expect(')');\n return expr;\n}\n\n// 11.1 Primary Expressions\n\nvar legalKeywords = {\n 'if': 1\n};\nfunction parsePrimaryExpression() {\n var type, token, expr;\n if (match('(')) {\n return parseGroupExpression();\n }\n if (match('[')) {\n return parseArrayInitialiser();\n }\n if (match('{')) {\n return parseObjectInitialiser();\n }\n type = lookahead.type;\n index = lookahead.start;\n if (type === TokenIdentifier || legalKeywords[lookahead.value]) {\n expr = finishIdentifier(lex().value);\n } else if (type === TokenStringLiteral || type === TokenNumericLiteral) {\n if (lookahead.octal) {\n throwError(lookahead, MessageStrictOctalLiteral);\n }\n expr = finishLiteral(lex());\n } else if (type === TokenKeyword) {\n throw new Error(DISABLED);\n } else if (type === TokenBooleanLiteral) {\n token = lex();\n token.value = token.value === 'true';\n expr = finishLiteral(token);\n } else if (type === TokenNullLiteral) {\n token = lex();\n token.value = null;\n expr = finishLiteral(token);\n } else if (match('/') || match('/=')) {\n expr = finishLiteral(scanRegExp());\n peek();\n } else {\n throwUnexpected(lex());\n }\n return expr;\n}\n\n// 11.2 Left-Hand-Side Expressions\n\nfunction parseArguments() {\n var args = [];\n expect('(');\n if (!match(')')) {\n while (index < length) {\n args.push(parseConditionalExpression());\n if (match(')')) {\n break;\n }\n expect(',');\n }\n }\n expect(')');\n return args;\n}\nfunction parseNonComputedProperty() {\n index = lookahead.start;\n var token = lex();\n if (!isIdentifierName(token)) {\n throwUnexpected(token);\n }\n return finishIdentifier(token.value);\n}\nfunction parseNonComputedMember() {\n expect('.');\n return parseNonComputedProperty();\n}\nfunction parseComputedMember() {\n expect('[');\n var expr = parseExpression();\n expect(']');\n return expr;\n}\nfunction parseLeftHandSideExpressionAllowCall() {\n var expr, args, property;\n expr = parsePrimaryExpression();\n for (;;) {\n if (match('.')) {\n property = parseNonComputedMember();\n expr = finishMemberExpression('.', expr, property);\n } else if (match('(')) {\n args = parseArguments();\n expr = finishCallExpression(expr, args);\n } else if (match('[')) {\n property = parseComputedMember();\n expr = finishMemberExpression('[', expr, property);\n } else {\n break;\n }\n }\n return expr;\n}\n\n// 11.3 Postfix Expressions\n\nfunction parsePostfixExpression() {\n var expr = parseLeftHandSideExpressionAllowCall();\n if (lookahead.type === TokenPunctuator) {\n if (match('++') || match('--')) {\n throw new Error(DISABLED);\n }\n }\n return expr;\n}\n\n// 11.4 Unary Operators\n\nfunction parseUnaryExpression() {\n var token, expr;\n if (lookahead.type !== TokenPunctuator && lookahead.type !== TokenKeyword) {\n expr = parsePostfixExpression();\n } else if (match('++') || match('--')) {\n throw new Error(DISABLED);\n } else if (match('+') || match('-') || match('~') || match('!')) {\n token = lex();\n expr = parseUnaryExpression();\n expr = finishUnaryExpression(token.value, expr);\n } else if (matchKeyword('delete') || matchKeyword('void') || matchKeyword('typeof')) {\n throw new Error(DISABLED);\n } else {\n expr = parsePostfixExpression();\n }\n return expr;\n}\nfunction binaryPrecedence(token) {\n var prec = 0;\n if (token.type !== TokenPunctuator && token.type !== TokenKeyword) {\n return 0;\n }\n switch (token.value) {\n case '||':\n prec = 1;\n break;\n case '&&':\n prec = 2;\n break;\n case '|':\n prec = 3;\n break;\n case '^':\n prec = 4;\n break;\n case '&':\n prec = 5;\n break;\n case '==':\n case '!=':\n case '===':\n case '!==':\n prec = 6;\n break;\n case '<':\n case '>':\n case '<=':\n case '>=':\n case 'instanceof':\n case 'in':\n prec = 7;\n break;\n case '<<':\n case '>>':\n case '>>>':\n prec = 8;\n break;\n case '+':\n case '-':\n prec = 9;\n break;\n case '*':\n case '/':\n case '%':\n prec = 11;\n break;\n }\n return prec;\n}\n\n// 11.5 Multiplicative Operators\n// 11.6 Additive Operators\n// 11.7 Bitwise Shift Operators\n// 11.8 Relational Operators\n// 11.9 Equality Operators\n// 11.10 Binary Bitwise Operators\n// 11.11 Binary Logical Operators\n\nfunction parseBinaryExpression() {\n var marker, markers, expr, token, prec, stack, right, operator, left, i;\n marker = lookahead;\n left = parseUnaryExpression();\n token = lookahead;\n prec = binaryPrecedence(token);\n if (prec === 0) {\n return left;\n }\n token.prec = prec;\n lex();\n markers = [marker, lookahead];\n right = parseUnaryExpression();\n stack = [left, token, right];\n while ((prec = binaryPrecedence(lookahead)) > 0) {\n // Reduce: make a binary expression from the three topmost entries.\n while (stack.length > 2 && prec <= stack[stack.length - 2].prec) {\n right = stack.pop();\n operator = stack.pop().value;\n left = stack.pop();\n markers.pop();\n expr = finishBinaryExpression(operator, left, right);\n stack.push(expr);\n }\n\n // Shift.\n token = lex();\n token.prec = prec;\n stack.push(token);\n markers.push(lookahead);\n expr = parseUnaryExpression();\n stack.push(expr);\n }\n\n // Final reduce to clean-up the stack.\n i = stack.length - 1;\n expr = stack[i];\n markers.pop();\n while (i > 1) {\n markers.pop();\n expr = finishBinaryExpression(stack[i - 1].value, stack[i - 2], expr);\n i -= 2;\n }\n return expr;\n}\n\n// 11.12 Conditional Operator\n\nfunction parseConditionalExpression() {\n var expr, consequent, alternate;\n expr = parseBinaryExpression();\n if (match('?')) {\n lex();\n consequent = parseConditionalExpression();\n expect(':');\n alternate = parseConditionalExpression();\n expr = finishConditionalExpression(expr, consequent, alternate);\n }\n return expr;\n}\n\n// 11.14 Comma Operator\n\nfunction parseExpression() {\n var expr = parseConditionalExpression();\n if (match(',')) {\n throw new Error(DISABLED); // no sequence expressions\n }\n\n return expr;\n}\nfunction parser(code) {\n source = code;\n index = 0;\n length = source.length;\n lookahead = null;\n peek();\n var expr = parseExpression();\n if (lookahead.type !== TokenEOF) {\n throw new Error('Unexpect token after expression.');\n }\n return expr;\n}\nvar Constants = {\n NaN: 'NaN',\n E: 'Math.E',\n LN2: 'Math.LN2',\n LN10: 'Math.LN10',\n LOG2E: 'Math.LOG2E',\n LOG10E: 'Math.LOG10E',\n PI: 'Math.PI',\n SQRT1_2: 'Math.SQRT1_2',\n SQRT2: 'Math.SQRT2',\n MIN_VALUE: 'Number.MIN_VALUE',\n MAX_VALUE: 'Number.MAX_VALUE'\n};\nfunction Functions(codegen) {\n function fncall(name, args, cast, type) {\n var obj = codegen(args[0]);\n if (cast) {\n obj = cast + '(' + obj + ')';\n if (cast.lastIndexOf('new ', 0) === 0) obj = '(' + obj + ')';\n }\n return obj + '.' + name + (type < 0 ? '' : type === 0 ? '()' : '(' + args.slice(1).map(codegen).join(',') + ')');\n }\n function fn(name, cast, type) {\n return function (args) {\n return fncall(name, args, cast, type);\n };\n }\n var DATE = 'new Date',\n STRING = 'String',\n REGEXP = 'RegExp';\n return {\n // MATH functions\n isNaN: 'Number.isNaN',\n isFinite: 'Number.isFinite',\n abs: 'Math.abs',\n acos: 'Math.acos',\n asin: 'Math.asin',\n atan: 'Math.atan',\n atan2: 'Math.atan2',\n ceil: 'Math.ceil',\n cos: 'Math.cos',\n exp: 'Math.exp',\n floor: 'Math.floor',\n hypot: 'Math.hypot',\n log: 'Math.log',\n max: 'Math.max',\n min: 'Math.min',\n pow: 'Math.pow',\n random: 'Math.random',\n round: 'Math.round',\n sin: 'Math.sin',\n sqrt: 'Math.sqrt',\n tan: 'Math.tan',\n clamp: function clamp(args) {\n if (args.length < 3) error('Missing arguments to clamp function.');\n if (args.length > 3) error('Too many arguments to clamp function.');\n var a = args.map(codegen);\n return 'Math.max(' + a[1] + ', Math.min(' + a[2] + ',' + a[0] + '))';\n },\n // DATE functions\n now: 'Date.now',\n utc: 'Date.UTC',\n datetime: DATE,\n date: fn('getDate', DATE, 0),\n day: fn('getDay', DATE, 0),\n year: fn('getFullYear', DATE, 0),\n month: fn('getMonth', DATE, 0),\n hours: fn('getHours', DATE, 0),\n minutes: fn('getMinutes', DATE, 0),\n seconds: fn('getSeconds', DATE, 0),\n milliseconds: fn('getMilliseconds', DATE, 0),\n time: fn('getTime', DATE, 0),\n timezoneoffset: fn('getTimezoneOffset', DATE, 0),\n utcdate: fn('getUTCDate', DATE, 0),\n utcday: fn('getUTCDay', DATE, 0),\n utcyear: fn('getUTCFullYear', DATE, 0),\n utcmonth: fn('getUTCMonth', DATE, 0),\n utchours: fn('getUTCHours', DATE, 0),\n utcminutes: fn('getUTCMinutes', DATE, 0),\n utcseconds: fn('getUTCSeconds', DATE, 0),\n utcmilliseconds: fn('getUTCMilliseconds', DATE, 0),\n // sequence functions\n length: fn('length', null, -1),\n // STRING functions\n parseFloat: 'parseFloat',\n parseInt: 'parseInt',\n upper: fn('toUpperCase', STRING, 0),\n lower: fn('toLowerCase', STRING, 0),\n substring: fn('substring', STRING),\n split: fn('split', STRING),\n trim: fn('trim', STRING, 0),\n // REGEXP functions\n regexp: REGEXP,\n test: fn('test', REGEXP),\n // Control Flow functions\n if: function _if(args) {\n if (args.length < 3) error('Missing arguments to if function.');\n if (args.length > 3) error('Too many arguments to if function.');\n var a = args.map(codegen);\n return '(' + a[0] + '?' + a[1] + ':' + a[2] + ')';\n }\n };\n}\nfunction stripQuotes(s) {\n var n = s && s.length - 1;\n return n && (s[0] === '\"' && s[n] === '\"' || s[0] === '\\'' && s[n] === '\\'') ? s.slice(1, -1) : s;\n}\nfunction codegen(opt) {\n opt = opt || {};\n var allowed = opt.allowed ? toSet(opt.allowed) : {},\n forbidden = opt.forbidden ? toSet(opt.forbidden) : {},\n constants = opt.constants || Constants,\n functions = (opt.functions || Functions)(visit),\n globalvar = opt.globalvar,\n fieldvar = opt.fieldvar,\n outputGlobal = isFunction(globalvar) ? globalvar : function (id) {\n return \"\".concat(globalvar, \"[\\\"\").concat(id, \"\\\"]\");\n };\n var globals = {},\n fields = {},\n memberDepth = 0;\n function visit(ast) {\n if (isString(ast)) return ast;\n var generator = Generators[ast.type];\n if (generator == null) error('Unsupported type: ' + ast.type);\n return generator(ast);\n }\n var Generators = {\n Literal: function Literal(n) {\n return n.raw;\n },\n Identifier: function Identifier(n) {\n var id = n.name;\n if (memberDepth > 0) {\n return id;\n } else if (hasOwnProperty(forbidden, id)) {\n return error('Illegal identifier: ' + id);\n } else if (hasOwnProperty(constants, id)) {\n return constants[id];\n } else if (hasOwnProperty(allowed, id)) {\n return id;\n } else {\n globals[id] = 1;\n return outputGlobal(id);\n }\n },\n MemberExpression: function MemberExpression(n) {\n var d = !n.computed,\n o = visit(n.object);\n if (d) memberDepth += 1;\n var p = visit(n.property);\n if (o === fieldvar) {\n // strip quotes to sanitize field name (#1653)\n fields[stripQuotes(p)] = 1;\n }\n if (d) memberDepth -= 1;\n return o + (d ? '.' + p : '[' + p + ']');\n },\n CallExpression: function CallExpression(n) {\n if (n.callee.type !== 'Identifier') {\n error('Illegal callee type: ' + n.callee.type);\n }\n var callee = n.callee.name,\n args = n.arguments,\n fn = hasOwnProperty(functions, callee) && functions[callee];\n if (!fn) error('Unrecognized function: ' + callee);\n return isFunction(fn) ? fn(args) : fn + '(' + args.map(visit).join(',') + ')';\n },\n ArrayExpression: function ArrayExpression(n) {\n return '[' + n.elements.map(visit).join(',') + ']';\n },\n BinaryExpression: function BinaryExpression(n) {\n return '(' + visit(n.left) + ' ' + n.operator + ' ' + visit(n.right) + ')';\n },\n UnaryExpression: function UnaryExpression(n) {\n return '(' + n.operator + visit(n.argument) + ')';\n },\n ConditionalExpression: function ConditionalExpression(n) {\n return '(' + visit(n.test) + '?' + visit(n.consequent) + ':' + visit(n.alternate) + ')';\n },\n LogicalExpression: function LogicalExpression(n) {\n return '(' + visit(n.left) + n.operator + visit(n.right) + ')';\n },\n ObjectExpression: function ObjectExpression(n) {\n return '{' + n.properties.map(visit).join(',') + '}';\n },\n Property: function Property(n) {\n memberDepth += 1;\n var k = visit(n.key);\n memberDepth -= 1;\n return k + ':' + visit(n.value);\n }\n };\n function codegen(ast) {\n var result = {\n code: visit(ast),\n globals: Object.keys(globals),\n fields: Object.keys(fields)\n };\n globals = {};\n fields = {};\n return result;\n }\n codegen.functions = functions;\n codegen.constants = constants;\n return codegen;\n}\nexport { ASTNode, ArrayExpression, BinaryExpression, CallExpression, ConditionalExpression, Identifier, Literal, LogicalExpression, MemberExpression, ObjectExpression, Property, RawCode, UnaryExpression, codegen as codegenExpression, Constants as constants, Functions as functions, parser as parseExpression };","import { Adder } from \"d3-array\";\nimport { atan2, cos, quarterPi, radians, sin, tau } from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\nexport var areaRingSum = new Adder();\n\n// hello?\n\nvar areaSum = new Adder(),\n lambda00,\n phi00,\n lambda0,\n cosPhi0,\n sinPhi0;\nexport var areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function polygonStart() {\n areaRingSum = new Adder();\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function polygonEnd() {\n var areaRing = +areaRingSum;\n areaSum.add(areaRing < 0 ? tau + areaRing : areaRing);\n this.lineStart = this.lineEnd = this.point = noop;\n },\n sphere: function sphere() {\n areaSum.add(tau);\n }\n};\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\nfunction areaRingEnd() {\n areaPoint(lambda00, phi00);\n}\nfunction areaPointFirst(lambda, phi) {\n areaStream.point = areaPoint;\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n lambda0 = lambda, cosPhi0 = cos(phi = phi / 2 + quarterPi), sinPhi0 = sin(phi);\n}\nfunction areaPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n phi = phi / 2 + quarterPi; // half the angular distance from south pole\n\n // Spherical excess E for a spherical triangle with vertices: south pole,\n // previous point, current point. Uses a formula derived from Cagnoli’s\n // theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n var dLambda = lambda - lambda0,\n sdLambda = dLambda >= 0 ? 1 : -1,\n adLambda = sdLambda * dLambda,\n cosPhi = cos(phi),\n sinPhi = sin(phi),\n k = sinPhi0 * sinPhi,\n u = cosPhi0 * cosPhi + k * cos(adLambda),\n v = k * sdLambda * sin(adLambda);\n areaRingSum.add(atan2(v, u));\n\n // Advance the previous points.\n lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\nexport default function (object) {\n areaSum = new Adder();\n stream(object, areaStream);\n return areaSum * 2;\n}","import { Adder } from \"d3-array\";\nimport { areaStream, areaRingSum } from \"./area.js\";\nimport { cartesian, cartesianCross, cartesianNormalizeInPlace, spherical } from \"./cartesian.js\";\nimport { abs, degrees, epsilon, radians } from \"./math.js\";\nimport stream from \"./stream.js\";\nvar lambda0, phi0, lambda1, phi1,\n // bounds\n lambda2,\n // previous lambda-coordinate\n lambda00, phi00,\n // first point\n p0,\n // previous 3D point\n deltaSum, ranges, range;\nvar boundsStream = {\n point: boundsPoint,\n lineStart: boundsLineStart,\n lineEnd: boundsLineEnd,\n polygonStart: function polygonStart() {\n boundsStream.point = boundsRingPoint;\n boundsStream.lineStart = boundsRingStart;\n boundsStream.lineEnd = boundsRingEnd;\n deltaSum = new Adder();\n areaStream.polygonStart();\n },\n polygonEnd: function polygonEnd() {\n areaStream.polygonEnd();\n boundsStream.point = boundsPoint;\n boundsStream.lineStart = boundsLineStart;\n boundsStream.lineEnd = boundsLineEnd;\n if (areaRingSum < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);else if (deltaSum > epsilon) phi1 = 90;else if (deltaSum < -epsilon) phi0 = -90;\n range[0] = lambda0, range[1] = lambda1;\n },\n sphere: function sphere() {\n lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n }\n};\nfunction boundsPoint(lambda, phi) {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n}\nfunction linePoint(lambda, phi) {\n var p = cartesian([lambda * radians, phi * radians]);\n if (p0) {\n var normal = cartesianCross(p0, p),\n equatorial = [normal[1], -normal[0], 0],\n inflection = cartesianCross(equatorial, normal);\n cartesianNormalizeInPlace(inflection);\n inflection = spherical(inflection);\n var delta = lambda - lambda2,\n sign = delta > 0 ? 1 : -1,\n lambdai = inflection[0] * degrees * sign,\n phii,\n antimeridian = abs(delta) > 180;\n if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = inflection[1] * degrees;\n if (phii > phi1) phi1 = phii;\n } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = -inflection[1] * degrees;\n if (phii < phi0) phi0 = phii;\n } else {\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n }\n if (antimeridian) {\n if (lambda < lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n } else {\n if (lambda1 >= lambda0) {\n if (lambda < lambda0) lambda0 = lambda;\n if (lambda > lambda1) lambda1 = lambda;\n } else {\n if (lambda > lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n }\n }\n } else {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n }\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n p0 = p, lambda2 = lambda;\n}\nfunction boundsLineStart() {\n boundsStream.point = linePoint;\n}\nfunction boundsLineEnd() {\n range[0] = lambda0, range[1] = lambda1;\n boundsStream.point = boundsPoint;\n p0 = null;\n}\nfunction boundsRingPoint(lambda, phi) {\n if (p0) {\n var delta = lambda - lambda2;\n deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n } else {\n lambda00 = lambda, phi00 = phi;\n }\n areaStream.point(lambda, phi);\n linePoint(lambda, phi);\n}\nfunction boundsRingStart() {\n areaStream.lineStart();\n}\nfunction boundsRingEnd() {\n boundsRingPoint(lambda00, phi00);\n areaStream.lineEnd();\n if (abs(deltaSum) > epsilon) lambda0 = -(lambda1 = 180);\n range[0] = lambda0, range[1] = lambda1;\n p0 = null;\n}\n\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want\n// the distance between ±180° to be 360°.\nfunction angle(lambda0, lambda1) {\n return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n}\nfunction rangeCompare(a, b) {\n return a[0] - b[0];\n}\nfunction rangeContains(range, x) {\n return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n}\nexport default function (feature) {\n var i, n, a, b, merged, deltaMax, delta;\n phi1 = lambda1 = -(lambda0 = phi0 = Infinity);\n ranges = [];\n stream(feature, boundsStream);\n\n // First, sort ranges by their minimum longitudes.\n if (n = ranges.length) {\n ranges.sort(rangeCompare);\n\n // Then, merge any ranges that overlap.\n for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {\n b = ranges[i];\n if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\n if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n } else {\n merged.push(a = b);\n }\n }\n\n // Finally, find the largest gap between the merged ranges.\n // The final bounding box will be the inverse of this gap.\n for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {\n b = merged[i];\n if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];\n }\n }\n ranges = range = null;\n return lambda0 === Infinity || phi0 === Infinity ? [[NaN, NaN], [NaN, NaN]] : [[lambda0, phi0], [lambda1, phi1]];\n}","import { Adder } from \"d3-array\";\nimport { asin, atan2, cos, degrees, epsilon, epsilon2, hypot, radians, sin, sqrt } from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\nvar W0, W1, X0, Y0, Z0, X1, Y1, Z1, X2, Y2, Z2, lambda00, phi00,\n // first point\n x0, y0, z0; // previous point\n\nvar centroidStream = {\n sphere: noop,\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function polygonStart() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function polygonEnd() {\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n }\n};\n\n// Arithmetic mean of Cartesian vectors.\nfunction centroidPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n centroidPointCartesian(cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi));\n}\nfunction centroidPointCartesian(x, y, z) {\n ++W0;\n X0 += (x - X0) / W0;\n Y0 += (y - Y0) / W0;\n Z0 += (z - Z0) / W0;\n}\nfunction centroidLineStart() {\n centroidStream.point = centroidLinePointFirst;\n}\nfunction centroidLinePointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidStream.point = centroidLinePoint;\n centroidPointCartesian(x0, y0, z0);\n}\nfunction centroidLinePoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n w = atan2(sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\n// See J. E. Brock, The Inertia Tensor for a Spherical Triangle,\n// J. Applied Mechanics 42, 239 (1975).\nfunction centroidRingStart() {\n centroidStream.point = centroidRingPointFirst;\n}\nfunction centroidRingEnd() {\n centroidRingPoint(lambda00, phi00);\n centroidStream.point = centroidPoint;\n}\nfunction centroidRingPointFirst(lambda, phi) {\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n centroidStream.point = centroidRingPoint;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidPointCartesian(x0, y0, z0);\n}\nfunction centroidRingPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n cx = y0 * z - z0 * y,\n cy = z0 * x - x0 * z,\n cz = x0 * y - y0 * x,\n m = hypot(cx, cy, cz),\n w = asin(m),\n // line weight = angle\n v = m && -w / m; // area weight multiplier\n X2.add(v * cx);\n Y2.add(v * cy);\n Z2.add(v * cz);\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\nexport default function (object) {\n W0 = W1 = X0 = Y0 = Z0 = X1 = Y1 = Z1 = 0;\n X2 = new Adder();\n Y2 = new Adder();\n Z2 = new Adder();\n stream(object, centroidStream);\n var x = +X2,\n y = +Y2,\n z = +Z2,\n m = hypot(x, y, z);\n\n // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.\n if (m < epsilon2) {\n x = X1, y = Y1, z = Z1;\n // If the feature has zero length, fall back to arithmetic mean of point vectors.\n if (W1 < epsilon) x = X0, y = Y0, z = Z0;\n m = hypot(x, y, z);\n // If the feature still has an undefined ccentroid, then return.\n if (m < epsilon2) return [NaN, NaN];\n }\n return [atan2(y, x) * degrees, asin(z / m) * degrees];\n}","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nvar _ops;\nimport { bisector, union, intersection } from 'd3-array';\nimport { field, isDate, toNumber, isArray, inrange, extend, array, error, peek, hasOwnProperty } from 'vega-util';\nimport { Literal } from 'vega-expression';\nvar Intersect = 'intersect';\nvar Union = 'union';\nvar VlMulti = 'vlMulti';\nvar VlPoint = 'vlPoint';\nvar Or = 'or';\nvar And = 'and';\nvar SelectionId = '_vgsid_';\nvar $selectionId = field(SelectionId);\nvar TYPE_ENUM = 'E',\n TYPE_RANGE_INC = 'R',\n TYPE_RANGE_EXC = 'R-E',\n TYPE_RANGE_LE = 'R-LE',\n TYPE_RANGE_RE = 'R-RE',\n UNIT_INDEX = 'index:unit';\n\n// TODO: revisit date coercion?\nfunction testPoint(datum, entry) {\n var fields = entry.fields,\n values = entry.values,\n n = fields.length,\n i = 0,\n dval,\n f;\n for (; i < n; ++i) {\n f = fields[i];\n f.getter = field.getter || field(f.field);\n dval = f.getter(datum);\n if (isDate(dval)) dval = toNumber(dval);\n if (isDate(values[i])) values[i] = toNumber(values[i]);\n if (isDate(values[i][0])) values[i] = values[i].map(toNumber);\n if (f.type === TYPE_ENUM) {\n // Enumerated fields can either specify individual values (single/multi selections)\n // or an array of values (interval selections).\n if (isArray(values[i]) ? values[i].indexOf(dval) < 0 : dval !== values[i]) {\n return false;\n }\n } else {\n if (f.type === TYPE_RANGE_INC) {\n if (!inrange(dval, values[i])) return false;\n } else if (f.type === TYPE_RANGE_RE) {\n // Discrete selection of bins test within the range [bin_start, bin_end).\n if (!inrange(dval, values[i], true, false)) return false;\n } else if (f.type === TYPE_RANGE_EXC) {\n // 'R-E'/'R-LE' included for completeness.\n if (!inrange(dval, values[i], false, false)) return false;\n } else if (f.type === TYPE_RANGE_LE) {\n if (!inrange(dval, values[i], false, true)) return false;\n }\n }\n }\n return true;\n}\n\n/**\n * Tests if a tuple is contained within an interactive selection.\n * @param {string} name - The name of the data set representing the selection.\n * Tuples in the dataset are of the form\n * {unit: string, fields: array, values: array<*>}.\n * Fielddef is of the form\n * {field: string, channel: string, type: 'E' | 'R'} where\n * 'type' identifies whether tuples in the dataset enumerate\n * values for the field, or specify a continuous range.\n * @param {object} datum - The tuple to test for inclusion.\n * @param {string} op - The set operation for combining selections.\n * One of 'intersect' or 'union' (default).\n * @return {boolean} - True if the datum is in the selection, false otherwise.\n */\nfunction selectionTest(name, datum, op) {\n var data = this.context.data[name],\n entries = data ? data.values.value : [],\n unitIdx = data ? data[UNIT_INDEX] && data[UNIT_INDEX].value : undefined,\n intersect = op === Intersect,\n n = entries.length,\n i = 0,\n entry,\n miss,\n count,\n unit,\n b;\n for (; i < n; ++i) {\n entry = entries[i];\n if (unitIdx && intersect) {\n // multi selections union within the same unit and intersect across units.\n miss = miss || {};\n count = miss[unit = entry.unit] || 0;\n\n // if we've already matched this unit, skip.\n if (count === -1) continue;\n b = testPoint(datum, entry);\n miss[unit] = b ? -1 : ++count;\n\n // if we match and there are no other units return true\n // if we've missed against all tuples in this unit return false\n if (b && unitIdx.size === 1) return true;\n if (!b && count === unitIdx.get(unit).count) return false;\n } else {\n b = testPoint(datum, entry);\n\n // if we find a miss and we do require intersection return false\n // if we find a match and we don't require intersection return true\n if (intersect ^ b) return b;\n }\n }\n\n // if intersecting and we made it here, then we saw no misses\n // if not intersecting, then we saw no matches\n // if no active selections, return false\n return n && intersect;\n}\nvar bisect = bisector($selectionId),\n bisectLeft = bisect.left,\n bisectRight = bisect.right;\nfunction selectionIdTest(name, datum, op) {\n var data = this.context.data[name],\n entries = data ? data.values.value : [],\n unitIdx = data ? data[UNIT_INDEX] && data[UNIT_INDEX].value : undefined,\n intersect = op === Intersect,\n value = $selectionId(datum),\n index = bisectLeft(entries, value);\n if (index === entries.length) return false;\n if ($selectionId(entries[index]) !== value) return false;\n if (unitIdx && intersect) {\n if (unitIdx.size === 1) return true;\n if (bisectRight(entries, value) - index < unitIdx.size) return false;\n }\n return true;\n}\n\n/**\n * Maps an array of scene graph items to an array of selection tuples.\n * @param {string} name - The name of the dataset representing the selection.\n * @param {string} base - The base object that generated tuples extend.\n *\n * @returns {array} An array of selection entries for the given unit.\n */\nfunction selectionTuples(array, base) {\n return array.map(function (x) {\n return extend(base.fields ? {\n values: base.fields.map(function (f) {\n return (f.getter || (f.getter = field(f.field)))(x.datum);\n })\n } : _defineProperty({}, SelectionId, $selectionId(x.datum)), base);\n });\n}\n\n/**\n * Resolves selection for use as a scale domain or reads via the API.\n * @param {string} name - The name of the dataset representing the selection\n * @param {string} [op='union'] - The set operation for combining selections.\n * One of 'intersect' or 'union' (default).\n * @param {boolean} isMulti - Identifies a \"multi\" selection to perform more\n * expensive resolution computation.\n * @param {boolean} vl5 - With Vega-Lite v5, \"multi\" selections are now called \"point\"\n * selections, and thus the resolved tuple should reflect this name.\n * This parameter allows us to reflect this change without triggering\n * a major version bump for Vega.\n * @returns {object} An object of selected fields and values.\n */\nfunction selectionResolve(name, op, isMulti, vl5) {\n var data = this.context.data[name],\n entries = data ? data.values.value : [],\n resolved = {},\n multiRes = {},\n types = {},\n entry,\n fields,\n values,\n unit,\n field,\n value,\n res,\n resUnit,\n type,\n union,\n n = entries.length,\n i = 0,\n j,\n m;\n\n // First union all entries within the same unit.\n for (; i < n; ++i) {\n entry = entries[i];\n unit = entry.unit;\n fields = entry.fields;\n values = entry.values;\n if (fields && values) {\n // Intentional selection stores\n for (j = 0, m = fields.length; j < m; ++j) {\n field = fields[j];\n res = resolved[field.field] || (resolved[field.field] = {});\n resUnit = res[unit] || (res[unit] = []);\n types[field.field] = type = field.type.charAt(0);\n union = ops[\"\".concat(type, \"_union\")];\n res[unit] = union(resUnit, array(values[j]));\n }\n\n // If the same multi-selection is repeated over views and projected over\n // an encoding, it may operate over different fields making it especially\n // tricky to reliably resolve it. At best, we can de-dupe identical entries\n // but doing so may be more computationally expensive than it is worth.\n // Instead, for now, we simply transform our store representation into\n // a more human-friendly one.\n if (isMulti) {\n resUnit = multiRes[unit] || (multiRes[unit] = []);\n resUnit.push(array(values).reduce(function (obj, curr, j) {\n return obj[fields[j].field] = curr, obj;\n }, {}));\n }\n } else {\n // Short circuit extensional selectionId stores which hold sorted IDs unique to each unit.\n field = SelectionId;\n value = $selectionId(entry);\n res = resolved[field] || (resolved[field] = {});\n resUnit = res[unit] || (res[unit] = []);\n resUnit.push(value);\n if (isMulti) {\n resUnit = multiRes[unit] || (multiRes[unit] = []);\n resUnit.push(_defineProperty({}, SelectionId, value));\n }\n }\n }\n\n // Then resolve fields across units as per the op.\n op = op || Union;\n if (resolved[SelectionId]) {\n resolved[SelectionId] = ops[\"\".concat(SelectionId, \"_\").concat(op)].apply(ops, _toConsumableArray(Object.values(resolved[SelectionId])));\n } else {\n Object.keys(resolved).forEach(function (field) {\n resolved[field] = Object.keys(resolved[field]).map(function (unit) {\n return resolved[field][unit];\n }).reduce(function (acc, curr) {\n return acc === undefined ? curr : ops[\"\".concat(types[field], \"_\").concat(op)](acc, curr);\n });\n });\n }\n entries = Object.keys(multiRes);\n if (isMulti && entries.length) {\n var key = vl5 ? VlPoint : VlMulti;\n resolved[key] = op === Union ? _defineProperty({}, Or, entries.reduce(function (acc, k) {\n return acc.push.apply(acc, _toConsumableArray(multiRes[k])), acc;\n }, [])) : _defineProperty({}, And, entries.map(function (k) {\n return _defineProperty({}, Or, multiRes[k]);\n }));\n }\n return resolved;\n}\nvar ops = (_ops = {}, _defineProperty(_ops, \"\".concat(SelectionId, \"_union\"), union), _defineProperty(_ops, \"\".concat(SelectionId, \"_intersect\"), intersection), _defineProperty(_ops, \"E_union\", function E_union(base, value) {\n if (!base.length) return value;\n var i = 0,\n n = value.length;\n for (; i < n; ++i) if (base.indexOf(value[i]) < 0) base.push(value[i]);\n return base;\n}), _defineProperty(_ops, \"E_intersect\", function E_intersect(base, value) {\n return !base.length ? value : base.filter(function (v) {\n return value.indexOf(v) >= 0;\n });\n}), _defineProperty(_ops, \"R_union\", function R_union(base, value) {\n var lo = toNumber(value[0]),\n hi = toNumber(value[1]);\n if (lo > hi) {\n lo = value[1];\n hi = value[0];\n }\n if (!base.length) return [lo, hi];\n if (base[0] > lo) base[0] = lo;\n if (base[1] < hi) base[1] = hi;\n return base;\n}), _defineProperty(_ops, \"R_intersect\", function R_intersect(base, value) {\n var lo = toNumber(value[0]),\n hi = toNumber(value[1]);\n if (lo > hi) {\n lo = value[1];\n hi = value[0];\n }\n if (!base.length) return [lo, hi];\n if (hi < base[0] || base[1] < lo) {\n return [];\n } else {\n if (base[0] < lo) base[0] = lo;\n if (base[1] > hi) base[1] = hi;\n }\n return base;\n}), _ops);\nvar DataPrefix = ':',\n IndexPrefix = '@';\nfunction selectionVisitor(name, args, scope, params) {\n if (args[0].type !== Literal) error('First argument to selection functions must be a string literal.');\n var data = args[0].value,\n op = args.length >= 2 && peek(args).value,\n field = 'unit',\n indexName = IndexPrefix + field,\n dataName = DataPrefix + data;\n\n // eslint-disable-next-line no-prototype-builtins\n if (op === Intersect && !hasOwnProperty(params, indexName)) {\n params[indexName] = scope.getData(data).indataRef(scope, field);\n }\n\n // eslint-disable-next-line no-prototype-builtins\n if (!hasOwnProperty(params, dataName)) {\n params[dataName] = scope.getData(data).tuplesRef();\n }\n}\nexport { selectionIdTest, selectionResolve, selectionTest, selectionTuples, selectionVisitor };","export default function ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}","export default function descending(a, b) {\n return a == null || b == null ? NaN : b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}","import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\nexport default function bisector(f) {\n var compare1, compare2, delta;\n\n // If an accessor is specified, promote it to a comparator. In this case we\n // can test whether the search value is (self-) comparable. We can’t do this\n // for a comparator (except for specific, known comparators) because we can’t\n // tell if the comparator is symmetric, and an asymmetric comparator can’t be\n // used to test whether a single value is comparable.\n if (f.length !== 2) {\n compare1 = ascending;\n compare2 = function compare2(d, x) {\n return ascending(f(d), x);\n };\n delta = function delta(d, x) {\n return f(d) - x;\n };\n } else {\n compare1 = f === ascending || f === descending ? f : zero;\n compare2 = f;\n delta = f;\n }\n function left(a, x) {\n var lo = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var hi = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : a.length;\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n var mid = lo + hi >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n function right(a, x) {\n var lo = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var hi = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : a.length;\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n var mid = lo + hi >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n function center(a, x) {\n var lo = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var hi = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : a.length;\n var i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n return {\n left: left,\n center: center,\n right: right\n };\n}\nfunction zero() {\n return 0;\n}","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { InternSet } from \"internmap\";\nexport default function union() {\n var set = new InternSet();\n for (var _len = arguments.length, others = new Array(_len), _key = 0; _key < _len; _key++) {\n others[_key] = arguments[_key];\n }\n for (var _i = 0, _others = others; _i < _others.length; _i++) {\n var other = _others[_i];\n var _iterator = _createForOfIteratorHelper(other),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var o = _step.value;\n set.add(o);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n return set;\n}","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { InternSet } from \"internmap\";\nexport default function intersection(values) {\n for (var _len = arguments.length, others = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n others[_key - 1] = arguments[_key];\n }\n values = new InternSet(values);\n others = others.map(set);\n var _iterator = _createForOfIteratorHelper(values),\n _step;\n try {\n out: for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var value = _step.value;\n var _iterator2 = _createForOfIteratorHelper(others),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var other = _step2.value;\n if (!other.has(value)) {\n values.delete(value);\n continue out;\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return values;\n}\nfunction set(values) {\n return values instanceof InternSet ? values : new InternSet(values);\n}","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport \"core-js/modules/es.math.hypot.js\";\nimport { truthy, error, hasOwnProperty, isFunction, isString, stringValue, extend, isArray, isObject, field, peek, identity, array as array$1, isBoolean, isDate, isNumber, isRegExp, toBoolean, toDate as _toDate, toNumber, toString, flush, lerp, pad, span, inrange, truncate, quarter, utcquarter, extent as _extent, clampRange, panLinear, panLog, panPow, panSymlog, zoomLinear, zoomLog, zoomPow, zoomSymlog } from 'vega-util';\nimport { Literal, codegenExpression, constants, functions, parseExpression, CallExpression } from 'vega-expression';\nimport { isRegisteredScale, bandSpace, scale as scale$1, scaleFraction } from 'vega-scale';\nimport { geoArea as geoArea$1, geoBounds as geoBounds$1, geoCentroid as geoCentroid$1 } from 'd3-geo';\nimport { rgb, lab, hcl, hsl } from 'd3-color';\nimport { isTuple } from 'vega-dataflow';\nimport { Gradient, pathRender, pathParse, Bounds, intersect as intersect$1 } from 'vega-scenegraph';\nimport { selectionVisitor, selectionTest, selectionIdTest, selectionResolve, selectionTuples } from 'vega-selections';\nimport { random as _random, cumulativeNormal, cumulativeLogNormal, cumulativeUniform, densityNormal, densityLogNormal, densityUniform, quantileNormal, quantileLogNormal, quantileUniform, sampleNormal, sampleLogNormal, sampleUniform } from 'vega-statistics';\nimport { utcOffset, utcSequence, timeOffset, timeSequence, timeUnitSpecifier, week, utcweek, dayofyear, utcdayofyear } from 'vega-time';\nimport { range as range$1 } from 'd3-array';\nfunction data(name) {\n var data = this.context.data[name];\n return data ? data.values.value : [];\n}\nfunction indata(name, field, value) {\n var index = this.context.data[name]['index:' + field],\n entry = index ? index.value.get(value) : undefined;\n return entry ? entry.count : entry;\n}\nfunction setdata(name, tuples) {\n var df = this.context.dataflow,\n data = this.context.data[name],\n input = data.input;\n df.pulse(input, df.changeset().remove(truthy).insert(tuples));\n return 1;\n}\nfunction encode(item, name, retval) {\n if (item) {\n var df = this.context.dataflow,\n target = item.mark.source;\n df.pulse(target, df.changeset().encode(item, name));\n }\n return retval !== undefined ? retval : item;\n}\nvar wrap = function wrap(method) {\n return function (value, spec) {\n var locale = this.context.dataflow.locale();\n return locale[method](spec)(value);\n };\n};\nvar format = wrap('format');\nvar timeFormat = wrap('timeFormat');\nvar utcFormat = wrap('utcFormat');\nvar timeParse = wrap('timeParse');\nvar utcParse = wrap('utcParse');\nvar dateObj = new Date(2000, 0, 1);\nfunction time(month, day, specifier) {\n if (!Number.isInteger(month) || !Number.isInteger(day)) return '';\n dateObj.setYear(2000);\n dateObj.setMonth(month);\n dateObj.setDate(day);\n return timeFormat.call(this, dateObj, specifier);\n}\nfunction monthFormat(month) {\n return time.call(this, month, 1, '%B');\n}\nfunction monthAbbrevFormat(month) {\n return time.call(this, month, 1, '%b');\n}\nfunction dayFormat(day) {\n return time.call(this, 0, 2 + day, '%A');\n}\nfunction dayAbbrevFormat(day) {\n return time.call(this, 0, 2 + day, '%a');\n}\nvar DataPrefix = ':';\nvar IndexPrefix = '@';\nvar ScalePrefix = '%';\nvar SignalPrefix = '$';\nfunction dataVisitor(name, args, scope, params) {\n if (args[0].type !== Literal) {\n error('First argument to data functions must be a string literal.');\n }\n var data = args[0].value,\n dataName = DataPrefix + data;\n if (!hasOwnProperty(dataName, params)) {\n try {\n params[dataName] = scope.getData(data).tuplesRef();\n } catch (err) {\n // if data set does not exist, there's nothing to track\n }\n }\n}\nfunction indataVisitor(name, args, scope, params) {\n if (args[0].type !== Literal) error('First argument to indata must be a string literal.');\n if (args[1].type !== Literal) error('Second argument to indata must be a string literal.');\n var data = args[0].value,\n field = args[1].value,\n indexName = IndexPrefix + field;\n if (!hasOwnProperty(indexName, params)) {\n params[indexName] = scope.getData(data).indataRef(scope, field);\n }\n}\nfunction scaleVisitor(name, args, scope, params) {\n if (args[0].type === Literal) {\n // add scale dependency\n addScaleDependency(scope, params, args[0].value);\n } else {\n // indirect scale lookup; add all scales as parameters\n for (name in scope.scales) {\n addScaleDependency(scope, params, name);\n }\n }\n}\nfunction addScaleDependency(scope, params, name) {\n var scaleName = ScalePrefix + name;\n if (!hasOwnProperty(params, scaleName)) {\n try {\n params[scaleName] = scope.scaleRef(name);\n } catch (err) {\n // TODO: error handling? warning?\n }\n }\n}\nfunction getScale(nameOrFunction, ctx) {\n if (isFunction(nameOrFunction)) {\n return nameOrFunction;\n }\n if (isString(nameOrFunction)) {\n var maybeScale = ctx.scales[nameOrFunction];\n return maybeScale && isRegisteredScale(maybeScale.value) ? maybeScale.value : undefined;\n }\n return undefined;\n}\nfunction internalScaleFunctions(codegen, fnctx, visitors) {\n // add helper method to the 'this' expression function context\n fnctx.__bandwidth = function (s) {\n return s && s.bandwidth ? s.bandwidth() : 0;\n };\n\n // register AST visitors for internal scale functions\n visitors._bandwidth = scaleVisitor;\n visitors._range = scaleVisitor;\n visitors._scale = scaleVisitor;\n\n // resolve scale reference directly to the signal hash argument\n var ref = function ref(arg) {\n return '_[' + (arg.type === Literal ? stringValue(ScalePrefix + arg.value) : stringValue(ScalePrefix) + '+' + codegen(arg)) + ']';\n };\n\n // define and return internal scale function code generators\n // these internal functions are called by mark encoders\n return {\n _bandwidth: function _bandwidth(args) {\n return \"this.__bandwidth(\".concat(ref(args[0]), \")\");\n },\n _range: function _range(args) {\n return \"\".concat(ref(args[0]), \".range()\");\n },\n _scale: function _scale(args) {\n return \"\".concat(ref(args[0]), \"(\").concat(codegen(args[1]), \")\");\n }\n };\n}\nfunction geoMethod(methodName, globalMethod) {\n return function (projection, geojson, group) {\n if (projection) {\n // projection defined, use it\n var p = getScale(projection, (group || this).context);\n return p && p.path[methodName](geojson);\n } else {\n // projection undefined, use global method\n return globalMethod(geojson);\n }\n };\n}\nvar geoArea = geoMethod('area', geoArea$1);\nvar geoBounds = geoMethod('bounds', geoBounds$1);\nvar geoCentroid = geoMethod('centroid', geoCentroid$1);\nfunction inScope(item) {\n var group = this.context.group;\n var value = false;\n if (group) while (item) {\n if (item === group) {\n value = true;\n break;\n }\n item = item.mark.group;\n }\n return value;\n}\nfunction log(df, method, args) {\n try {\n df[method].apply(df, ['EXPRESSION'].concat([].slice.call(args)));\n } catch (err) {\n df.warn(err);\n }\n return args[args.length - 1];\n}\nfunction warn() {\n return log(this.context.dataflow, 'warn', arguments);\n}\nfunction info() {\n return log(this.context.dataflow, 'info', arguments);\n}\nfunction debug() {\n return log(this.context.dataflow, 'debug', arguments);\n}\n\n// https://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\nfunction channel_luminance_value(channelValue) {\n var val = channelValue / 255;\n if (val <= 0.03928) {\n return val / 12.92;\n }\n return Math.pow((val + 0.055) / 1.055, 2.4);\n}\nfunction luminance(color) {\n var c = rgb(color),\n r = channel_luminance_value(c.r),\n g = channel_luminance_value(c.g),\n b = channel_luminance_value(c.b);\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n}\n\n// https://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef\nfunction contrast(color1, color2) {\n var lum1 = luminance(color1),\n lum2 = luminance(color2),\n lumL = Math.max(lum1, lum2),\n lumD = Math.min(lum1, lum2);\n return (lumL + 0.05) / (lumD + 0.05);\n}\nfunction merge() {\n var args = [].slice.call(arguments);\n args.unshift({});\n return extend.apply(void 0, _toConsumableArray(args));\n}\nfunction equal(a, b) {\n return a === b || a !== a && b !== b ? true : isArray(a) ? isArray(b) && a.length === b.length ? equalArray(a, b) : false : isObject(a) && isObject(b) ? equalObject(a, b) : false;\n}\nfunction equalArray(a, b) {\n for (var i = 0, n = a.length; i < n; ++i) {\n if (!equal(a[i], b[i])) return false;\n }\n return true;\n}\nfunction equalObject(a, b) {\n for (var key in a) {\n if (!equal(a[key], b[key])) return false;\n }\n return true;\n}\nfunction removePredicate(props) {\n return function (_) {\n return equalObject(props, _);\n };\n}\nfunction modify(name, insert, remove, toggle, modify, values) {\n var df = this.context.dataflow,\n data = this.context.data[name],\n input = data.input,\n stamp = df.stamp();\n var changes = data.changes,\n predicate,\n key;\n if (df._trigger === false || !(input.value.length || insert || toggle)) {\n // nothing to do!\n return 0;\n }\n if (!changes || changes.stamp < stamp) {\n data.changes = changes = df.changeset();\n changes.stamp = stamp;\n df.runAfter(function () {\n data.modified = true;\n df.pulse(input, changes).run();\n }, true, 1);\n }\n if (remove) {\n predicate = remove === true ? truthy : isArray(remove) || isTuple(remove) ? remove : removePredicate(remove);\n changes.remove(predicate);\n }\n if (insert) {\n changes.insert(insert);\n }\n if (toggle) {\n predicate = removePredicate(toggle);\n if (input.value.some(predicate)) {\n changes.remove(predicate);\n } else {\n changes.insert(toggle);\n }\n }\n if (modify) {\n for (key in values) {\n changes.modify(modify, key, values[key]);\n }\n }\n return 1;\n}\nfunction pinchDistance(event) {\n var t = event.touches,\n dx = t[0].clientX - t[1].clientX,\n dy = t[0].clientY - t[1].clientY;\n return Math.hypot(dx, dy);\n}\nfunction pinchAngle(event) {\n var t = event.touches;\n return Math.atan2(t[0].clientY - t[1].clientY, t[0].clientX - t[1].clientX);\n}\n\n// memoize accessor functions\nvar accessors = {};\nfunction pluck(data, name) {\n var accessor = accessors[name] || (accessors[name] = field(name));\n return isArray(data) ? data.map(accessor) : accessor(data);\n}\nfunction array(seq) {\n return isArray(seq) || ArrayBuffer.isView(seq) ? seq : null;\n}\nfunction sequence(seq) {\n return array(seq) || (isString(seq) ? seq : null);\n}\nfunction join(seq) {\n var _array;\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n return (_array = array(seq)).join.apply(_array, args);\n}\nfunction indexof(seq) {\n var _sequence;\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n return (_sequence = sequence(seq)).indexOf.apply(_sequence, args);\n}\nfunction lastindexof(seq) {\n var _sequence2;\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n return (_sequence2 = sequence(seq)).lastIndexOf.apply(_sequence2, args);\n}\nfunction slice(seq) {\n var _sequence3;\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n return (_sequence3 = sequence(seq)).slice.apply(_sequence3, args);\n}\nfunction replace(str, pattern, repl) {\n if (isFunction(repl)) error('Function argument passed to replace.');\n return String(str).replace(pattern, repl);\n}\nfunction reverse(seq) {\n return array(seq).slice().reverse();\n}\nfunction bandspace(count, paddingInner, paddingOuter) {\n return bandSpace(count || 0, paddingInner || 0, paddingOuter || 0);\n}\nfunction bandwidth(name, group) {\n var s = getScale(name, (group || this).context);\n return s && s.bandwidth ? s.bandwidth() : 0;\n}\nfunction copy(name, group) {\n var s = getScale(name, (group || this).context);\n return s ? s.copy() : undefined;\n}\nfunction domain(name, group) {\n var s = getScale(name, (group || this).context);\n return s ? s.domain() : [];\n}\nfunction invert(name, range, group) {\n var s = getScale(name, (group || this).context);\n return !s ? undefined : isArray(range) ? (s.invertRange || s.invert)(range) : (s.invert || s.invertExtent)(range);\n}\nfunction range(name, group) {\n var s = getScale(name, (group || this).context);\n return s && s.range ? s.range() : [];\n}\nfunction scale(name, value, group) {\n var s = getScale(name, (group || this).context);\n return s ? s(value) : undefined;\n}\nfunction scaleGradient(scale, p0, p1, count, group) {\n scale = getScale(scale, (group || this).context);\n var gradient = Gradient(p0, p1);\n var stops = scale.domain(),\n min = stops[0],\n max = peek(stops),\n fraction = identity;\n if (!(max - min)) {\n // expand scale if domain has zero span, fix #1479\n scale = (scale.interpolator ? scale$1('sequential')().interpolator(scale.interpolator()) : scale$1('linear')().interpolate(scale.interpolate()).range(scale.range())).domain([min = 0, max = 1]);\n } else {\n fraction = scaleFraction(scale, min, max);\n }\n if (scale.ticks) {\n stops = scale.ticks(+count || 15);\n if (min !== stops[0]) stops.unshift(min);\n if (max !== peek(stops)) stops.push(max);\n }\n stops.forEach(function (_) {\n return gradient.stop(fraction(_), scale(_));\n });\n return gradient;\n}\nfunction geoShape(projection, geojson, group) {\n var p = getScale(projection, (group || this).context);\n return function (context) {\n return p ? p.path.context(context)(geojson) : '';\n };\n}\nfunction pathShape(path) {\n var p = null;\n return function (context) {\n return context ? pathRender(context, p = p || pathParse(path)) : path;\n };\n}\nvar datum = function datum(d) {\n return d.data;\n};\nfunction treeNodes(name, context) {\n var tree = data.call(context, name);\n return tree.root && tree.root.lookup || {};\n}\nfunction treePath(name, source, target) {\n var nodes = treeNodes(name, this),\n s = nodes[source],\n t = nodes[target];\n return s && t ? s.path(t).map(datum) : undefined;\n}\nfunction treeAncestors(name, node) {\n var n = treeNodes(name, this)[node];\n return n ? n.ancestors().map(datum) : undefined;\n}\nvar _window = function _window() {\n return typeof window !== 'undefined' && window || null;\n};\nfunction screen() {\n var w = _window();\n return w ? w.screen : {};\n}\nfunction windowSize() {\n var w = _window();\n return w ? [w.innerWidth, w.innerHeight] : [undefined, undefined];\n}\nfunction containerSize() {\n var view = this.context.dataflow,\n el = view.container && view.container();\n return el ? [el.clientWidth, el.clientHeight] : [undefined, undefined];\n}\nfunction intersect(b, opt, group) {\n if (!b) return [];\n var _b = _slicedToArray(b, 2),\n u = _b[0],\n v = _b[1],\n box = new Bounds().set(u[0], u[1], v[0], v[1]),\n scene = group || this.context.dataflow.scenegraph().root;\n return intersect$1(scene, box, filter(opt));\n}\nfunction filter(opt) {\n var p = null;\n if (opt) {\n var types = array$1(opt.marktype),\n names = array$1(opt.markname);\n p = function p(_) {\n return (!types.length || types.some(function (t) {\n return _.marktype === t;\n })) && (!names.length || names.some(function (s) {\n return _.name === s;\n }));\n };\n }\n return p;\n}\n\n/**\n * Appends a new point to the lasso\n *\n * @param {*} lasso the lasso in pixel space\n * @param {*} x the x coordinate in pixel space\n * @param {*} y the y coordinate in pixel space\n * @param {*} minDist the minimum distance, in pixels, that thenew point needs to be apart from the last point\n * @returns a new array containing the lasso with the new point\n */\nfunction lassoAppend(lasso, x, y) {\n var minDist = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 5;\n lasso = array$1(lasso);\n var last = lasso[lasso.length - 1];\n\n // Add point to lasso if its the first point or distance to last point exceed minDist\n return last === undefined || Math.hypot(last[0] - x, last[1] - y) > minDist ? [].concat(_toConsumableArray(lasso), [[x, y]]) : lasso;\n}\n\n/**\n * Generates a svg path command which draws a lasso\n *\n * @param {*} lasso the lasso in pixel space in the form [[x,y], [x,y], ...]\n * @returns the svg path command that draws the lasso\n */\nfunction lassoPath(lasso) {\n return array$1(lasso).reduce(function (svg, _ref, i) {\n var _ref2 = _slicedToArray(_ref, 2),\n x = _ref2[0],\n y = _ref2[1];\n return svg += i == 0 ? \"M \".concat(x, \",\").concat(y, \" \") : i === lasso.length - 1 ? ' Z' : \"L \".concat(x, \",\").concat(y, \" \");\n }, '');\n}\n\n/**\n * Inverts the lasso from pixel space to an array of vega scenegraph tuples\n *\n * @param {*} data the dataset\n * @param {*} pixelLasso the lasso in pixel space, [[x,y], [x,y], ...]\n * @param {*} unit the unit where the lasso is defined\n *\n * @returns an array of vega scenegraph tuples\n */\nfunction intersectLasso(markname, pixelLasso, unit) {\n var x = unit.x,\n y = unit.y,\n mark = unit.mark;\n var bb = new Bounds().set(Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER, Number.MIN_SAFE_INTEGER, Number.MIN_SAFE_INTEGER);\n\n // Get bounding box around lasso\n var _iterator = _createForOfIteratorHelper(pixelLasso),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _step$value = _slicedToArray(_step.value, 2),\n px = _step$value[0],\n py = _step$value[1];\n if (px < bb.x1) bb.x1 = px;\n if (px > bb.x2) bb.x2 = px;\n if (py < bb.y1) bb.y1 = py;\n if (py > bb.y2) bb.y2 = py;\n }\n\n // Translate bb against unit coordinates\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n bb.translate(x, y);\n var intersection = intersect([[bb.x1, bb.y1], [bb.x2, bb.y2]], markname, mark);\n\n // Check every point against the lasso\n return intersection.filter(function (tuple) {\n return pointInPolygon(tuple.x, tuple.y, pixelLasso);\n });\n}\n\n/**\n * Performs a test if a point is inside a polygon based on the idea from\n * https://wrf.ecse.rpi.edu/Research/Short_Notes/pnpoly.html\n *\n * This method will not need the same start/end point since it wraps around the edges of the array\n *\n * @param {*} test a point to test against\n * @param {*} polygon a polygon in the form [[x,y], [x,y], ...]\n * @returns true if the point lies inside the polygon, false otherwise\n */\nfunction pointInPolygon(testx, testy, polygon) {\n var intersections = 0;\n for (var i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n var _polygon$j = _slicedToArray(polygon[j], 2),\n prevX = _polygon$j[0],\n prevY = _polygon$j[1];\n var _polygon$i = _slicedToArray(polygon[i], 2),\n x = _polygon$i[0],\n y = _polygon$i[1];\n\n // count intersections\n if (y > testy != prevY > testy && testx < (prevX - x) * (testy - y) / (prevY - y) + x) {\n intersections++;\n }\n }\n\n // point is in polygon if intersection count is odd\n return intersections & 1;\n}\n\n// Expression function context object\nvar functionContext = {\n random: function random() {\n return _random();\n },\n // override default\n cumulativeNormal: cumulativeNormal,\n cumulativeLogNormal: cumulativeLogNormal,\n cumulativeUniform: cumulativeUniform,\n densityNormal: densityNormal,\n densityLogNormal: densityLogNormal,\n densityUniform: densityUniform,\n quantileNormal: quantileNormal,\n quantileLogNormal: quantileLogNormal,\n quantileUniform: quantileUniform,\n sampleNormal: sampleNormal,\n sampleLogNormal: sampleLogNormal,\n sampleUniform: sampleUniform,\n isArray: isArray,\n isBoolean: isBoolean,\n isDate: isDate,\n isDefined: function isDefined(_) {\n return _ !== undefined;\n },\n isNumber: isNumber,\n isObject: isObject,\n isRegExp: isRegExp,\n isString: isString,\n isTuple: isTuple,\n isValid: function isValid(_) {\n return _ != null && _ === _;\n },\n toBoolean: toBoolean,\n toDate: function toDate(_) {\n return _toDate(_);\n },\n // suppress extra arguments\n toNumber: toNumber,\n toString: toString,\n indexof: indexof,\n join: join,\n lastindexof: lastindexof,\n replace: replace,\n reverse: reverse,\n slice: slice,\n flush: flush,\n lerp: lerp,\n merge: merge,\n pad: pad,\n peek: peek,\n pluck: pluck,\n span: span,\n inrange: inrange,\n truncate: truncate,\n rgb: rgb,\n lab: lab,\n hcl: hcl,\n hsl: hsl,\n luminance: luminance,\n contrast: contrast,\n sequence: range$1,\n format: format,\n utcFormat: utcFormat,\n utcParse: utcParse,\n utcOffset: utcOffset,\n utcSequence: utcSequence,\n timeFormat: timeFormat,\n timeParse: timeParse,\n timeOffset: timeOffset,\n timeSequence: timeSequence,\n timeUnitSpecifier: timeUnitSpecifier,\n monthFormat: monthFormat,\n monthAbbrevFormat: monthAbbrevFormat,\n dayFormat: dayFormat,\n dayAbbrevFormat: dayAbbrevFormat,\n quarter: quarter,\n utcquarter: utcquarter,\n week: week,\n utcweek: utcweek,\n dayofyear: dayofyear,\n utcdayofyear: utcdayofyear,\n warn: warn,\n info: info,\n debug: debug,\n extent: function extent(_) {\n return _extent(_);\n },\n // suppress extra arguments\n inScope: inScope,\n intersect: intersect,\n clampRange: clampRange,\n pinchDistance: pinchDistance,\n pinchAngle: pinchAngle,\n screen: screen,\n containerSize: containerSize,\n windowSize: windowSize,\n bandspace: bandspace,\n setdata: setdata,\n pathShape: pathShape,\n panLinear: panLinear,\n panLog: panLog,\n panPow: panPow,\n panSymlog: panSymlog,\n zoomLinear: zoomLinear,\n zoomLog: zoomLog,\n zoomPow: zoomPow,\n zoomSymlog: zoomSymlog,\n encode: encode,\n modify: modify,\n lassoAppend: lassoAppend,\n lassoPath: lassoPath,\n intersectLasso: intersectLasso\n};\nvar eventFunctions = ['view', 'item', 'group', 'xy', 'x', 'y'],\n // event functions\n eventPrefix = 'event.vega.',\n // event function prefix\n thisPrefix = 'this.',\n // function context prefix\n astVisitors = {}; // AST visitors for dependency analysis\n\n// export code generator parameters\nvar codegenParams = {\n forbidden: ['_'],\n allowed: ['datum', 'event', 'item'],\n fieldvar: 'datum',\n globalvar: function globalvar(id) {\n return \"_[\".concat(stringValue(SignalPrefix + id), \"]\");\n },\n functions: buildFunctions,\n constants: constants,\n visitors: astVisitors\n};\n\n// export code generator\nvar codeGenerator = codegenExpression(codegenParams);\n\n// Build expression function registry\nfunction buildFunctions(codegen) {\n var fn = functions(codegen);\n eventFunctions.forEach(function (name) {\n return fn[name] = eventPrefix + name;\n });\n for (var name in functionContext) {\n fn[name] = thisPrefix + name;\n }\n extend(fn, internalScaleFunctions(codegen, functionContext, astVisitors));\n return fn;\n}\n\n// Register an expression function\nfunction expressionFunction(name, fn, visitor) {\n if (arguments.length === 1) {\n return functionContext[name];\n }\n\n // register with the functionContext\n functionContext[name] = fn;\n\n // if there is an astVisitor register that, too\n if (visitor) astVisitors[name] = visitor;\n\n // if the code generator has already been initialized,\n // we need to also register the function with it\n if (codeGenerator) codeGenerator.functions[name] = thisPrefix + name;\n return this;\n}\n\n// register expression functions with ast visitors\nexpressionFunction('bandwidth', bandwidth, scaleVisitor);\nexpressionFunction('copy', copy, scaleVisitor);\nexpressionFunction('domain', domain, scaleVisitor);\nexpressionFunction('range', range, scaleVisitor);\nexpressionFunction('invert', invert, scaleVisitor);\nexpressionFunction('scale', scale, scaleVisitor);\nexpressionFunction('gradient', scaleGradient, scaleVisitor);\nexpressionFunction('geoArea', geoArea, scaleVisitor);\nexpressionFunction('geoBounds', geoBounds, scaleVisitor);\nexpressionFunction('geoCentroid', geoCentroid, scaleVisitor);\nexpressionFunction('geoShape', geoShape, scaleVisitor);\nexpressionFunction('indata', indata, indataVisitor);\nexpressionFunction('data', data, dataVisitor);\nexpressionFunction('treePath', treePath, dataVisitor);\nexpressionFunction('treeAncestors', treeAncestors, dataVisitor);\n\n// register Vega-Lite selection functions\nexpressionFunction('vlSelectionTest', selectionTest, selectionVisitor);\nexpressionFunction('vlSelectionIdTest', selectionIdTest, selectionVisitor);\nexpressionFunction('vlSelectionResolve', selectionResolve, selectionVisitor);\nexpressionFunction('vlSelectionTuples', selectionTuples);\nfunction parser(expr, scope) {\n var params = {};\n\n // parse the expression to an abstract syntax tree (ast)\n var ast;\n try {\n expr = isString(expr) ? expr : stringValue(expr) + '';\n ast = parseExpression(expr);\n } catch (err) {\n error('Expression parse error: ' + expr);\n }\n\n // analyze ast function calls for dependencies\n ast.visit(function (node) {\n if (node.type !== CallExpression) return;\n var name = node.callee.name,\n visit = codegenParams.visitors[name];\n if (visit) visit(name, node.arguments, scope, params);\n });\n\n // perform code generation\n var gen = codeGenerator(ast);\n\n // collect signal dependencies\n gen.globals.forEach(function (name) {\n var signalName = SignalPrefix + name;\n if (!hasOwnProperty(params, signalName) && scope.getSignal(name)) {\n params[signalName] = scope.signalRef(name);\n }\n });\n\n // return generated expression code and dependencies\n return {\n $expr: extend({\n code: gen.code\n }, scope.options.ast ? {\n ast: ast\n } : null),\n $fields: gen.fields,\n $params: params\n };\n}\nexport { DataPrefix, IndexPrefix, ScalePrefix, SignalPrefix, bandspace, bandwidth, codeGenerator, codegenParams, containerSize, contrast, copy, data, dataVisitor, dayAbbrevFormat, dayFormat, debug, domain, encode, expressionFunction, format, functionContext, geoArea, geoBounds, geoCentroid, geoShape, inScope, indata, indataVisitor, indexof, info, invert, join, lastindexof, luminance, merge, modify, monthAbbrevFormat, monthFormat, parser as parseExpression, pathShape, pinchAngle, pinchDistance, pluck, range, replace, reverse, scale, scaleGradient, scaleVisitor, screen, setdata, slice, timeFormat, timeParse, treeAncestors, treePath, utcFormat, utcParse, warn, windowSize };","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport { toSet, stringValue, error, isArray, isObject, hasOwnProperty, accessor, key, field, array, compare, truthy } from 'vega-util';\nimport { tupleid } from 'vega-dataflow';\n\n/**\n * Parse a serialized dataflow specification.\n */\nfunction parse(spec) {\n var ctx = this,\n operators = spec.operators || [];\n\n // parse background\n if (spec.background) {\n ctx.background = spec.background;\n }\n\n // parse event configuration\n if (spec.eventConfig) {\n ctx.eventConfig = spec.eventConfig;\n }\n\n // parse locale configuration\n if (spec.locale) {\n ctx.locale = spec.locale;\n }\n\n // parse operators\n operators.forEach(function (entry) {\n return ctx.parseOperator(entry);\n });\n\n // parse operator parameters\n operators.forEach(function (entry) {\n return ctx.parseOperatorParameters(entry);\n });\n\n // parse streams\n (spec.streams || []).forEach(function (entry) {\n return ctx.parseStream(entry);\n });\n\n // parse updates\n (spec.updates || []).forEach(function (entry) {\n return ctx.parseUpdate(entry);\n });\n return ctx.resolve();\n}\nvar Skip = toSet(['rule']),\n Swap = toSet(['group', 'image', 'rect']);\nfunction adjustSpatial(encode, marktype) {\n var code = '';\n if (Skip[marktype]) return code;\n if (encode.x2) {\n if (encode.x) {\n if (Swap[marktype]) {\n code += 'if(o.x>o.x2)$=o.x,o.x=o.x2,o.x2=$;';\n }\n code += 'o.width=o.x2-o.x;';\n } else {\n code += 'o.x=o.x2-(o.width||0);';\n }\n }\n if (encode.xc) {\n code += 'o.x=o.xc-(o.width||0)/2;';\n }\n if (encode.y2) {\n if (encode.y) {\n if (Swap[marktype]) {\n code += 'if(o.y>o.y2)$=o.y,o.y=o.y2,o.y2=$;';\n }\n code += 'o.height=o.y2-o.y;';\n } else {\n code += 'o.y=o.y2-(o.height||0);';\n }\n }\n if (encode.yc) {\n code += 'o.y=o.yc-(o.height||0)/2;';\n }\n return code;\n}\nfunction canonicalType(type) {\n return (type + '').toLowerCase();\n}\nfunction isOperator(type) {\n return canonicalType(type) === 'operator';\n}\nfunction isCollect(type) {\n return canonicalType(type) === 'collect';\n}\nfunction expression(ctx, args, code) {\n // wrap code in return statement if expression does not terminate\n if (!code.endsWith(';')) {\n code = 'return(' + code + ');';\n }\n var fn = Function.apply(void 0, _toConsumableArray(args.concat(code)));\n return ctx && ctx.functions ? fn.bind(ctx.functions) : fn;\n}\n\n// generate code for comparing a single field\nfunction _compare(u, v, lt, gt) {\n return \"((u = \".concat(u, \") < (v = \").concat(v, \") || u == null) && v != null ? \").concat(lt, \"\\n : (u > v || v == null) && u != null ? \").concat(gt, \"\\n : ((v = v instanceof Date ? +v : v), (u = u instanceof Date ? +u : u)) !== u && v === v ? \").concat(lt, \"\\n : v !== v && u === u ? \").concat(gt, \" : \");\n}\nvar expressionCodegen = {\n /**\n * Parse an expression used to update an operator value.\n */\n operator: function operator(ctx, expr) {\n return expression(ctx, ['_'], expr.code);\n },\n /**\n * Parse an expression provided as an operator parameter value.\n */\n parameter: function parameter(ctx, expr) {\n return expression(ctx, ['datum', '_'], expr.code);\n },\n /**\n * Parse an expression applied to an event stream.\n */\n event: function event(ctx, expr) {\n return expression(ctx, ['event'], expr.code);\n },\n /**\n * Parse an expression used to handle an event-driven operator update.\n */\n handler: function handler(ctx, expr) {\n var code = \"var datum=event.item&&event.item.datum;return \".concat(expr.code, \";\");\n return expression(ctx, ['_', 'event'], code);\n },\n /**\n * Parse an expression that performs visual encoding.\n */\n encode: function encode(ctx, _encode) {\n var marktype = _encode.marktype,\n channels = _encode.channels;\n var code = 'var o=item,datum=o.datum,m=0,$;';\n for (var name in channels) {\n var o = 'o[' + stringValue(name) + ']';\n code += \"$=\".concat(channels[name].code, \";if(\").concat(o, \"!==$)\").concat(o, \"=$,m=1;\");\n }\n code += adjustSpatial(channels, marktype);\n code += 'return m;';\n return expression(ctx, ['item', '_'], code);\n },\n /**\n * Optimized code generators for access and comparison.\n */\n codegen: {\n get: function get(path) {\n var ref = \"[\".concat(path.map(stringValue).join(']['), \"]\");\n var get = Function('_', \"return _\".concat(ref, \";\"));\n get.path = ref;\n return get;\n },\n comparator: function comparator(fields, orders) {\n var t;\n var map = function map(f, i) {\n var o = orders[i];\n var u, v;\n if (f.path) {\n u = \"a\".concat(f.path);\n v = \"b\".concat(f.path);\n } else {\n (t = t || {})['f' + i] = f;\n u = \"this.f\".concat(i, \"(a)\");\n v = \"this.f\".concat(i, \"(b)\");\n }\n return _compare(u, v, -o, o);\n };\n var fn = Function('a', 'b', 'var u, v; return ' + fields.map(map).join('') + '0;');\n return t ? fn.bind(t) : fn;\n }\n }\n};\n\n/**\n * Parse a dataflow operator.\n */\nfunction parseOperator(spec) {\n var ctx = this;\n if (isOperator(spec.type) || !spec.type) {\n ctx.operator(spec, spec.update ? ctx.operatorExpression(spec.update) : null);\n } else {\n ctx.transform(spec, spec.type);\n }\n}\n\n/**\n * Parse and assign operator parameters.\n */\nfunction parseOperatorParameters(spec) {\n var ctx = this;\n if (spec.params) {\n var op = ctx.get(spec.id);\n if (!op) error('Invalid operator id: ' + spec.id);\n ctx.dataflow.connect(op, op.parameters(ctx.parseParameters(spec.params), spec.react, spec.initonly));\n }\n}\n\n/**\n * Parse a set of operator parameters.\n */\nfunction parseParameters(spec, params) {\n params = params || {};\n var ctx = this;\n for (var _key in spec) {\n var value = spec[_key];\n params[_key] = isArray(value) ? value.map(function (v) {\n return parseParameter(v, ctx, params);\n }) : parseParameter(value, ctx, params);\n }\n return params;\n}\n\n/**\n * Parse a single parameter.\n */\nfunction parseParameter(spec, ctx, params) {\n if (!spec || !isObject(spec)) return spec;\n for (var i = 0, n = PARSERS.length, p; i < n; ++i) {\n p = PARSERS[i];\n if (hasOwnProperty(spec, p.key)) {\n return p.parse(spec, ctx, params);\n }\n }\n return spec;\n}\n\n/** Reference parsers. */\nvar PARSERS = [{\n key: '$ref',\n parse: getOperator\n}, {\n key: '$key',\n parse: getKey\n}, {\n key: '$expr',\n parse: getExpression\n}, {\n key: '$field',\n parse: getField\n}, {\n key: '$encode',\n parse: getEncode\n}, {\n key: '$compare',\n parse: getCompare\n}, {\n key: '$context',\n parse: getContext\n}, {\n key: '$subflow',\n parse: getSubflow\n}, {\n key: '$tupleid',\n parse: getTupleId\n}];\n\n/**\n * Resolve an operator reference.\n */\nfunction getOperator(_, ctx) {\n return ctx.get(_.$ref) || error('Operator not defined: ' + _.$ref);\n}\n\n/**\n * Resolve an expression reference.\n */\nfunction getExpression(_, ctx, params) {\n if (_.$params) {\n // parse expression parameters\n ctx.parseParameters(_.$params, params);\n }\n var k = 'e:' + _.$expr.code;\n return ctx.fn[k] || (ctx.fn[k] = accessor(ctx.parameterExpression(_.$expr), _.$fields));\n}\n\n/**\n * Resolve a key accessor reference.\n */\nfunction getKey(_, ctx) {\n var k = 'k:' + _.$key + '_' + !!_.$flat;\n return ctx.fn[k] || (ctx.fn[k] = key(_.$key, _.$flat, ctx.expr.codegen));\n}\n\n/**\n * Resolve a field accessor reference.\n */\nfunction getField(_, ctx) {\n if (!_.$field) return null;\n var k = 'f:' + _.$field + '_' + _.$name;\n return ctx.fn[k] || (ctx.fn[k] = field(_.$field, _.$name, ctx.expr.codegen));\n}\n\n/**\n * Resolve a comparator function reference.\n */\nfunction getCompare(_, ctx) {\n // As of Vega 5.5.3, $tupleid sort is no longer used.\n // Keep here for now for backwards compatibility.\n var k = 'c:' + _.$compare + '_' + _.$order,\n c = array(_.$compare).map(function (_) {\n return _ && _.$tupleid ? tupleid : _;\n });\n return ctx.fn[k] || (ctx.fn[k] = compare(c, _.$order, ctx.expr.codegen));\n}\n\n/**\n * Resolve an encode operator reference.\n */\nfunction getEncode(_, ctx) {\n var spec = _.$encode,\n encode = {};\n for (var name in spec) {\n var enc = spec[name];\n encode[name] = accessor(ctx.encodeExpression(enc.$expr), enc.$fields);\n encode[name].output = enc.$output;\n }\n return encode;\n}\n\n/**\n * Resolve a context reference.\n */\nfunction getContext(_, ctx) {\n return ctx;\n}\n\n/**\n * Resolve a recursive subflow specification.\n */\nfunction getSubflow(_, ctx) {\n var spec = _.$subflow;\n return function (dataflow, key, parent) {\n var subctx = ctx.fork().parse(spec),\n op = subctx.get(spec.operators[0].id),\n p = subctx.signals.parent;\n if (p) p.set(parent);\n op.detachSubflow = function () {\n return ctx.detach(subctx);\n };\n return op;\n };\n}\n\n/**\n * Resolve a tuple id reference.\n */\nfunction getTupleId() {\n return tupleid;\n}\n\n/**\n * Parse an event stream specification.\n */\nfunction parseStream(spec) {\n var ctx = this,\n filter = spec.filter != null ? ctx.eventExpression(spec.filter) : undefined,\n stream = spec.stream != null ? ctx.get(spec.stream) : undefined,\n args;\n if (spec.source) {\n stream = ctx.events(spec.source, spec.type, filter);\n } else if (spec.merge) {\n args = spec.merge.map(function (_) {\n return ctx.get(_);\n });\n stream = args[0].merge.apply(args[0], args.slice(1));\n }\n if (spec.between) {\n args = spec.between.map(function (_) {\n return ctx.get(_);\n });\n stream = stream.between(args[0], args[1]);\n }\n if (spec.filter) {\n stream = stream.filter(filter);\n }\n if (spec.throttle != null) {\n stream = stream.throttle(+spec.throttle);\n }\n if (spec.debounce != null) {\n stream = stream.debounce(+spec.debounce);\n }\n if (stream == null) {\n error('Invalid stream definition: ' + JSON.stringify(spec));\n }\n if (spec.consume) stream.consume(true);\n ctx.stream(spec, stream);\n}\n\n/**\n * Parse an event-driven operator update.\n */\nfunction parseUpdate(spec) {\n var ctx = this,\n srcid = isObject(srcid = spec.source) ? srcid.$ref : srcid,\n source = ctx.get(srcid),\n target = null,\n update = spec.update,\n params = undefined;\n if (!source) error('Source not defined: ' + spec.source);\n target = spec.target && spec.target.$expr ? ctx.eventExpression(spec.target.$expr) : ctx.get(spec.target);\n if (update && update.$expr) {\n if (update.$params) {\n params = ctx.parseParameters(update.$params);\n }\n update = ctx.handlerExpression(update.$expr);\n }\n ctx.update(spec, source, target, update, params);\n}\nvar SKIP = {\n skip: true\n};\nfunction getState(options) {\n var ctx = this,\n state = {};\n if (options.signals) {\n var signals = state.signals = {};\n Object.keys(ctx.signals).forEach(function (key) {\n var op = ctx.signals[key];\n if (options.signals(key, op)) {\n signals[key] = op.value;\n }\n });\n }\n if (options.data) {\n var data = state.data = {};\n Object.keys(ctx.data).forEach(function (key) {\n var dataset = ctx.data[key];\n if (options.data(key, dataset)) {\n data[key] = dataset.input.value;\n }\n });\n }\n if (ctx.subcontext && options.recurse !== false) {\n state.subcontext = ctx.subcontext.map(function (ctx) {\n return ctx.getState(options);\n });\n }\n return state;\n}\nfunction setState(state) {\n var ctx = this,\n df = ctx.dataflow,\n data = state.data,\n signals = state.signals;\n Object.keys(signals || {}).forEach(function (key) {\n df.update(ctx.signals[key], signals[key], SKIP);\n });\n Object.keys(data || {}).forEach(function (key) {\n df.pulse(ctx.data[key].input, df.changeset().remove(truthy).insert(data[key]));\n });\n (state.subcontext || []).forEach(function (substate, i) {\n var subctx = ctx.subcontext[i];\n if (subctx) subctx.setState(substate);\n });\n}\n\n/**\n * Context objects store the current parse state.\n * Enables lookup of parsed operators, event streams, accessors, etc.\n * Provides a 'fork' method for creating child contexts for subflows.\n */\nfunction context(df, transforms, functions, expr) {\n return new Context(df, transforms, functions, expr);\n}\nfunction Context(df, transforms, functions, expr) {\n this.dataflow = df;\n this.transforms = transforms;\n this.events = df.events.bind(df);\n this.expr = expr || expressionCodegen, this.signals = {};\n this.scales = {};\n this.nodes = {};\n this.data = {};\n this.fn = {};\n if (functions) {\n this.functions = Object.create(functions);\n this.functions.context = this;\n }\n}\nfunction Subcontext(ctx) {\n this.dataflow = ctx.dataflow;\n this.transforms = ctx.transforms;\n this.events = ctx.events;\n this.expr = ctx.expr;\n this.signals = Object.create(ctx.signals);\n this.scales = Object.create(ctx.scales);\n this.nodes = Object.create(ctx.nodes);\n this.data = Object.create(ctx.data);\n this.fn = Object.create(ctx.fn);\n if (ctx.functions) {\n this.functions = Object.create(ctx.functions);\n this.functions.context = this;\n }\n}\nContext.prototype = Subcontext.prototype = {\n fork: function fork() {\n var ctx = new Subcontext(this);\n (this.subcontext || (this.subcontext = [])).push(ctx);\n return ctx;\n },\n detach: function detach(ctx) {\n this.subcontext = this.subcontext.filter(function (c) {\n return c !== ctx;\n });\n\n // disconnect all nodes in the subcontext\n // wipe out targets first for better efficiency\n var keys = Object.keys(ctx.nodes);\n for (var _i = 0, _keys = keys; _i < _keys.length; _i++) {\n var _key2 = _keys[_i];\n ctx.nodes[_key2]._targets = null;\n }\n for (var _i2 = 0, _keys2 = keys; _i2 < _keys2.length; _i2++) {\n var _key3 = _keys2[_i2];\n ctx.nodes[_key3].detach();\n }\n ctx.nodes = null;\n },\n get: function get(id) {\n return this.nodes[id];\n },\n set: function set(id, node) {\n return this.nodes[id] = node;\n },\n add: function add(spec, op) {\n var ctx = this,\n df = ctx.dataflow,\n data = spec.value;\n ctx.set(spec.id, op);\n if (isCollect(spec.type) && data) {\n if (data.$ingest) {\n df.ingest(op, data.$ingest, data.$format);\n } else if (data.$request) {\n df.preload(op, data.$request, data.$format);\n } else {\n df.pulse(op, df.changeset().insert(data));\n }\n }\n if (spec.root) {\n ctx.root = op;\n }\n if (spec.parent) {\n var p = ctx.get(spec.parent.$ref);\n if (p) {\n df.connect(p, [op]);\n op.targets().add(p);\n } else {\n (ctx.unresolved = ctx.unresolved || []).push(function () {\n p = ctx.get(spec.parent.$ref);\n df.connect(p, [op]);\n op.targets().add(p);\n });\n }\n }\n if (spec.signal) {\n ctx.signals[spec.signal] = op;\n }\n if (spec.scale) {\n ctx.scales[spec.scale] = op;\n }\n if (spec.data) {\n var _loop = function _loop() {\n var data = ctx.data[name] || (ctx.data[name] = {});\n spec.data[name].forEach(function (role) {\n return data[role] = op;\n });\n };\n for (var name in spec.data) {\n _loop();\n }\n }\n },\n resolve: function resolve() {\n (this.unresolved || []).forEach(function (fn) {\n return fn();\n });\n delete this.unresolved;\n return this;\n },\n operator: function operator(spec, update) {\n this.add(spec, this.dataflow.add(spec.value, update));\n },\n transform: function transform(spec, type) {\n this.add(spec, this.dataflow.add(this.transforms[canonicalType(type)]));\n },\n stream: function stream(spec, _stream) {\n this.set(spec.id, _stream);\n },\n update: function update(spec, stream, target, _update, params) {\n this.dataflow.on(stream, target, _update, params, spec.options);\n },\n // expression parsing\n operatorExpression: function operatorExpression(expr) {\n return this.expr.operator(this, expr);\n },\n parameterExpression: function parameterExpression(expr) {\n return this.expr.parameter(this, expr);\n },\n eventExpression: function eventExpression(expr) {\n return this.expr.event(this, expr);\n },\n handlerExpression: function handlerExpression(expr) {\n return this.expr.handler(this, expr);\n },\n encodeExpression: function encodeExpression(encode) {\n return this.expr.encode(this, encode);\n },\n // parse methods\n parse: parse,\n parseOperator: parseOperator,\n parseOperatorParameters: parseOperatorParameters,\n parseParameters: parseParameters,\n parseStream: parseStream,\n parseUpdate: parseUpdate,\n // state methods\n getState: getState,\n setState: setState\n};\nexport { context };","import _asyncToGenerator from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\";\nimport _regeneratorRuntime from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/regenerator/index.js\";\nimport { isString, hasOwnProperty, error, truthy, constant, extend, array, isObject, isArray, toSet, debounce, isDate, inherits, stringValue } from 'vega-util';\nimport { changeset, isChangeSet, EventStream, transforms, Dataflow, asyncCallback } from 'vega-dataflow';\nimport { point, renderModule, CanvasHandler, RenderType, Scenegraph } from 'vega-scenegraph';\nimport { tickStep } from 'd3-array';\nimport { functionContext } from 'vega-functions';\nimport { context } from 'vega-runtime';\nimport { interval } from 'd3-timer';\nimport { locale } from 'vega-format';\n\n// initialize aria role and label attributes\nfunction initializeAria(view) {\n var el = view.container();\n if (el) {\n el.setAttribute('role', 'graphics-document');\n el.setAttribute('aria-roleDescription', 'visualization');\n ariaLabel(el, view.description());\n }\n}\n\n// update aria-label if we have a DOM container element\nfunction ariaLabel(el, desc) {\n if (el) desc == null ? el.removeAttribute('aria-label') : el.setAttribute('aria-label', desc);\n}\nfunction background(view) {\n // respond to background signal\n view.add(null, function (_) {\n view._background = _.bg;\n view._resize = 1;\n return _.bg;\n }, {\n bg: view._signals.background\n });\n}\nvar Default = 'default';\nfunction cursor(view) {\n // get cursor signal, add to dataflow if needed\n var cursor = view._signals.cursor || (view._signals.cursor = view.add({\n user: Default,\n item: null\n }));\n\n // evaluate cursor on each mousemove event\n view.on(view.events('view', 'mousemove'), cursor, function (_, event) {\n var value = cursor.value,\n user = value ? isString(value) ? value : value.user : Default,\n item = event.item && event.item.cursor || null;\n return value && user === value.user && item == value.item ? value : {\n user: user,\n item: item\n };\n });\n\n // when cursor signal updates, set visible cursor\n view.add(null, function (_) {\n var user = _.cursor,\n item = this.value;\n if (!isString(user)) {\n item = user.item;\n user = user.user;\n }\n setCursor(view, user && user !== Default ? user : item || user);\n return item;\n }, {\n cursor: cursor\n });\n}\nfunction setCursor(view, cursor) {\n var el = view.globalCursor() ? typeof document !== 'undefined' && document.body : view.container();\n if (el) {\n return cursor == null ? el.style.removeProperty('cursor') : el.style.cursor = cursor;\n }\n}\nfunction dataref(view, name) {\n var data = view._runtime.data;\n if (!hasOwnProperty(data, name)) {\n error('Unrecognized data set: ' + name);\n }\n return data[name];\n}\nfunction data(name, values) {\n return arguments.length < 2 ? dataref(this, name).values.value : change.call(this, name, changeset().remove(truthy).insert(values));\n}\nfunction change(name, changes) {\n if (!isChangeSet(changes)) {\n error('Second argument to changes must be a changeset.');\n }\n var dataset = dataref(this, name);\n dataset.modified = true;\n return this.pulse(dataset.input, changes);\n}\nfunction insert(name, _) {\n return change.call(this, name, changeset().insert(_));\n}\nfunction remove(name, _) {\n return change.call(this, name, changeset().remove(_));\n}\nfunction width(view) {\n var padding = view.padding();\n return Math.max(0, view._viewWidth + padding.left + padding.right);\n}\nfunction height(view) {\n var padding = view.padding();\n return Math.max(0, view._viewHeight + padding.top + padding.bottom);\n}\nfunction offset(view) {\n var padding = view.padding(),\n origin = view._origin;\n return [padding.left + origin[0], padding.top + origin[1]];\n}\nfunction resizeRenderer(view) {\n var origin = offset(view),\n w = width(view),\n h = height(view);\n view._renderer.background(view.background());\n view._renderer.resize(w, h, origin);\n view._handler.origin(origin);\n view._resizeListeners.forEach(function (handler) {\n try {\n handler(w, h);\n } catch (error) {\n view.error(error);\n }\n });\n}\n\n/**\n * Extend an event with additional view-specific methods.\n * Adds a new property ('vega') to an event that provides a number\n * of methods for querying information about the current interaction.\n * The vega object provides the following methods:\n * view - Returns the backing View instance.\n * item - Returns the currently active scenegraph item (if any).\n * group - Returns the currently active scenegraph group (if any).\n * This method accepts a single string-typed argument indicating the name\n * of the desired parent group. The scenegraph will be traversed from\n * the item up towards the root to search for a matching group. If no\n * argument is provided the enclosing group for the active item is\n * returned, unless the item it itself a group, in which case it is\n * returned directly.\n * xy - Returns a two-element array containing the x and y coordinates for\n * mouse or touch events. For touch events, this is based on the first\n * elements in the changedTouches array. This method accepts a single\n * argument: either an item instance or mark name that should serve as\n * the reference coordinate system. If no argument is provided the\n * top-level view coordinate system is assumed.\n * x - Returns the current x-coordinate, accepts the same arguments as xy.\n * y - Returns the current y-coordinate, accepts the same arguments as xy.\n * @param {Event} event - The input event to extend.\n * @param {Item} item - The currently active scenegraph item (if any).\n * @return {Event} - The extended input event.\n */\nfunction eventExtend(view, event, item) {\n var r = view._renderer,\n el = r && r.canvas(),\n p,\n e,\n translate;\n if (el) {\n translate = offset(view);\n e = event.changedTouches ? event.changedTouches[0] : event;\n p = point(e, el);\n p[0] -= translate[0];\n p[1] -= translate[1];\n }\n event.dataflow = view;\n event.item = item;\n event.vega = extension(view, item, p);\n return event;\n}\nfunction extension(view, item, point) {\n var itemGroup = item ? item.mark.marktype === 'group' ? item : item.mark.group : null;\n function group(name) {\n var g = itemGroup,\n i;\n if (name) for (i = item; i; i = i.mark.group) {\n if (i.mark.name === name) {\n g = i;\n break;\n }\n }\n return g && g.mark && g.mark.interactive ? g : {};\n }\n function xy(item) {\n if (!item) return point;\n if (isString(item)) item = group(item);\n var p = point.slice();\n while (item) {\n p[0] -= item.x || 0;\n p[1] -= item.y || 0;\n item = item.mark && item.mark.group;\n }\n return p;\n }\n return {\n view: constant(view),\n item: constant(item || {}),\n group: group,\n xy: xy,\n x: function x(item) {\n return xy(item)[0];\n },\n y: function y(item) {\n return xy(item)[1];\n }\n };\n}\nvar VIEW = 'view',\n TIMER = 'timer',\n WINDOW = 'window',\n NO_TRAP = {\n trap: false\n };\n\n/**\n * Initialize event handling configuration.\n * @param {object} config - The configuration settings.\n * @return {object}\n */\nfunction initializeEventConfig(config) {\n var events = extend({\n defaults: {}\n }, config);\n var unpack = function unpack(obj, keys) {\n keys.forEach(function (k) {\n if (isArray(obj[k])) obj[k] = toSet(obj[k]);\n });\n };\n unpack(events.defaults, ['prevent', 'allow']);\n unpack(events, ['view', 'window', 'selector']);\n return events;\n}\nfunction trackEventListener(view, sources, type, handler) {\n view._eventListeners.push({\n type: type,\n sources: array(sources),\n handler: handler\n });\n}\nfunction prevent(view, type) {\n var def = view._eventConfig.defaults,\n prevent = def.prevent,\n allow = def.allow;\n return prevent === false || allow === true ? false : prevent === true || allow === false ? true : prevent ? prevent[type] : allow ? !allow[type] : view.preventDefault();\n}\nfunction permit(view, key, type) {\n var rule = view._eventConfig && view._eventConfig[key];\n if (rule === false || isObject(rule) && !rule[type]) {\n view.warn(\"Blocked \".concat(key, \" \").concat(type, \" event listener.\"));\n return false;\n }\n return true;\n}\n\n/**\n * Create a new event stream from an event source.\n * @param {object} source - The event source to monitor.\n * @param {string} type - The event type.\n * @param {function(object): boolean} [filter] - Event filter function.\n * @return {EventStream}\n */\nfunction events(source, type, filter) {\n var view = this,\n s = new EventStream(filter),\n send = function send(e, item) {\n view.runAsync(null, function () {\n if (source === VIEW && prevent(view, type)) {\n e.preventDefault();\n }\n s.receive(eventExtend(view, e, item));\n });\n },\n sources;\n if (source === TIMER) {\n if (permit(view, 'timer', type)) {\n view.timer(send, type);\n }\n } else if (source === VIEW) {\n if (permit(view, 'view', type)) {\n // send traps errors, so use {trap: false} option\n view.addEventListener(type, send, NO_TRAP);\n }\n } else {\n if (source === WINDOW) {\n if (permit(view, 'window', type) && typeof window !== 'undefined') {\n sources = [window];\n }\n } else if (typeof document !== 'undefined') {\n if (permit(view, 'selector', type)) {\n sources = Array.from(document.querySelectorAll(source));\n }\n }\n if (!sources) {\n view.warn('Can not resolve event source: ' + source);\n } else {\n for (var i = 0, n = sources.length; i < n; ++i) {\n sources[i].addEventListener(type, send);\n }\n trackEventListener(view, sources, type, send);\n }\n }\n return s;\n}\nfunction itemFilter(event) {\n return event.item;\n}\nfunction markTarget(event) {\n // grab upstream collector feeding the mark operator\n return event.item.mark.source;\n}\nfunction invoke(name) {\n return function (_, event) {\n return event.vega.view().changeset().encode(event.item, name);\n };\n}\nfunction hover(hoverSet, leaveSet) {\n hoverSet = [hoverSet || 'hover'];\n leaveSet = [leaveSet || 'update', hoverSet[0]];\n\n // invoke hover set upon mouseover\n this.on(this.events('view', 'mouseover', itemFilter), markTarget, invoke(hoverSet));\n\n // invoke leave set upon mouseout\n this.on(this.events('view', 'mouseout', itemFilter), markTarget, invoke(leaveSet));\n return this;\n}\n\n/**\n * Finalize a View instance that is being removed.\n * Cancel any running timers.\n * Remove all external event listeners.\n * Remove any currently displayed tooltip.\n */\nfunction finalize() {\n var tooltip = this._tooltip,\n timers = this._timers,\n listeners = this._eventListeners,\n n,\n m,\n e;\n n = timers.length;\n while (--n >= 0) {\n timers[n].stop();\n }\n n = listeners.length;\n while (--n >= 0) {\n e = listeners[n];\n m = e.sources.length;\n while (--m >= 0) {\n e.sources[m].removeEventListener(e.type, e.handler);\n }\n }\n if (tooltip) {\n tooltip.call(this, this._handler, null, null, null);\n }\n return this;\n}\nfunction element(tag, attr, text) {\n var el = document.createElement(tag);\n for (var key in attr) el.setAttribute(key, attr[key]);\n if (text != null) el.textContent = text;\n return el;\n}\nvar BindClass = 'vega-bind',\n NameClass = 'vega-bind-name',\n RadioClass = 'vega-bind-radio';\n\n/**\n * Bind a signal to an external HTML input element. The resulting two-way\n * binding will propagate input changes to signals, and propagate signal\n * changes to the input element state. If this view instance has no parent\n * element, we assume the view is headless and no bindings are created.\n * @param {Element|string} el - The parent DOM element to which the input\n * element should be appended as a child. If string-valued, this argument\n * will be treated as a CSS selector. If null or undefined, the parent\n * element of this view will be used as the element.\n * @param {object} param - The binding parameters which specify the signal\n * to bind to, the input element type, and type-specific configuration.\n * @return {View} - This view instance.\n */\nfunction bind(view, el, binding) {\n if (!el) return;\n var param = binding.param;\n var bind = binding.state;\n if (!bind) {\n bind = binding.state = {\n elements: null,\n active: false,\n set: null,\n update: function update(value) {\n if (value != view.signal(param.signal)) {\n view.runAsync(null, function () {\n bind.source = true;\n view.signal(param.signal, value);\n });\n }\n }\n };\n if (param.debounce) {\n bind.update = debounce(param.debounce, bind.update);\n }\n }\n var create = param.input == null && param.element ? target : generate;\n create(bind, el, param, view);\n if (!bind.active) {\n view.on(view._signals[param.signal], null, function () {\n bind.source ? bind.source = false : bind.set(view.signal(param.signal));\n });\n bind.active = true;\n }\n return bind;\n}\n\n/**\n * Bind the signal to an external EventTarget.\n */\nfunction target(bind, node, param, view) {\n var type = param.event || 'input';\n var handler = function handler() {\n return bind.update(node.value);\n };\n\n // initialize signal value to external input value\n view.signal(param.signal, node.value);\n\n // listen for changes on the element\n node.addEventListener(type, handler);\n\n // register with view, so we can remove it upon finalization\n trackEventListener(view, node, type, handler);\n\n // propagate change to element\n bind.set = function (value) {\n node.value = value;\n node.dispatchEvent(event(type));\n };\n}\nfunction event(type) {\n return typeof Event !== 'undefined' ? new Event(type) : {\n type: type\n };\n}\n\n/**\n * Generate an HTML input form element and bind it to a signal.\n */\nfunction generate(bind, el, param, view) {\n var value = view.signal(param.signal);\n var div = element('div', {\n 'class': BindClass\n });\n var wrapper = param.input === 'radio' ? div : div.appendChild(element('label'));\n wrapper.appendChild(element('span', {\n 'class': NameClass\n }, param.name || param.signal));\n el.appendChild(div);\n var input = form;\n switch (param.input) {\n case 'checkbox':\n input = checkbox;\n break;\n case 'select':\n input = select;\n break;\n case 'radio':\n input = radio;\n break;\n case 'range':\n input = range;\n break;\n }\n input(bind, wrapper, param, value);\n}\n\n/**\n * Generates an arbitrary input form element.\n * The input type is controlled via user-provided parameters.\n */\nfunction form(bind, el, param, value) {\n var node = element('input');\n for (var key in param) {\n if (key !== 'signal' && key !== 'element') {\n node.setAttribute(key === 'input' ? 'type' : key, param[key]);\n }\n }\n node.setAttribute('name', param.signal);\n node.value = value;\n el.appendChild(node);\n node.addEventListener('input', function () {\n return bind.update(node.value);\n });\n bind.elements = [node];\n bind.set = function (value) {\n return node.value = value;\n };\n}\n\n/**\n * Generates a checkbox input element.\n */\nfunction checkbox(bind, el, param, value) {\n var attr = {\n type: 'checkbox',\n name: param.signal\n };\n if (value) attr.checked = true;\n var node = element('input', attr);\n el.appendChild(node);\n node.addEventListener('change', function () {\n return bind.update(node.checked);\n });\n bind.elements = [node];\n bind.set = function (value) {\n return node.checked = !!value || null;\n };\n}\n\n/**\n * Generates a selection list input element.\n */\nfunction select(bind, el, param, value) {\n var node = element('select', {\n name: param.signal\n }),\n labels = param.labels || [];\n param.options.forEach(function (option, i) {\n var attr = {\n value: option\n };\n if (valuesEqual(option, value)) attr.selected = true;\n node.appendChild(element('option', attr, (labels[i] || option) + ''));\n });\n el.appendChild(node);\n node.addEventListener('change', function () {\n bind.update(param.options[node.selectedIndex]);\n });\n bind.elements = [node];\n bind.set = function (value) {\n for (var i = 0, n = param.options.length; i < n; ++i) {\n if (valuesEqual(param.options[i], value)) {\n node.selectedIndex = i;\n return;\n }\n }\n };\n}\n\n/**\n * Generates a radio button group.\n */\nfunction radio(bind, el, param, value) {\n var group = element('span', {\n 'class': RadioClass\n }),\n labels = param.labels || [];\n el.appendChild(group);\n bind.elements = param.options.map(function (option, i) {\n var attr = {\n type: 'radio',\n name: param.signal,\n value: option\n };\n if (valuesEqual(option, value)) attr.checked = true;\n var input = element('input', attr);\n input.addEventListener('change', function () {\n return bind.update(option);\n });\n var label = element('label', {}, (labels[i] || option) + '');\n label.prepend(input);\n group.appendChild(label);\n return input;\n });\n bind.set = function (value) {\n var nodes = bind.elements,\n n = nodes.length;\n for (var i = 0; i < n; ++i) {\n if (valuesEqual(nodes[i].value, value)) nodes[i].checked = true;\n }\n };\n}\n\n/**\n * Generates a slider input element.\n */\nfunction range(bind, el, param, value) {\n value = value !== undefined ? value : (+param.max + +param.min) / 2;\n var max = param.max != null ? param.max : Math.max(100, +value) || 100,\n min = param.min || Math.min(0, max, +value) || 0,\n step = param.step || tickStep(min, max, 100);\n var node = element('input', {\n type: 'range',\n name: param.signal,\n min: min,\n max: max,\n step: step\n });\n node.value = value;\n var span = element('span', {}, +value);\n el.appendChild(node);\n el.appendChild(span);\n var update = function update() {\n span.textContent = node.value;\n bind.update(+node.value);\n };\n\n // subscribe to both input and change\n node.addEventListener('input', update);\n node.addEventListener('change', update);\n bind.elements = [node];\n bind.set = function (value) {\n node.value = value;\n span.textContent = value;\n };\n}\nfunction valuesEqual(a, b) {\n return a === b || a + '' === b + '';\n}\nfunction initializeRenderer(view, r, el, constructor, scaleFactor, opt) {\n r = r || new constructor(view.loader());\n return r.initialize(el, width(view), height(view), offset(view), scaleFactor, opt).background(view.background());\n}\nfunction trap(view, fn) {\n return !fn ? null : function () {\n try {\n fn.apply(this, arguments);\n } catch (error) {\n view.error(error);\n }\n };\n}\nfunction initializeHandler(view, prevHandler, el, constructor) {\n // instantiate scenegraph handler\n var handler = new constructor(view.loader(), trap(view, view.tooltip())).scene(view.scenegraph().root).initialize(el, offset(view), view);\n\n // transfer event handlers\n if (prevHandler) {\n prevHandler.handlers().forEach(function (h) {\n handler.on(h.type, h.handler);\n });\n }\n return handler;\n}\nfunction initialize(el, elBind) {\n var view = this,\n type = view._renderType,\n config = view._eventConfig.bind,\n module = renderModule(type);\n\n // containing dom element\n el = view._el = el ? lookup(view, el, true) : null;\n\n // initialize aria attributes\n initializeAria(view);\n\n // select appropriate renderer & handler\n if (!module) view.error('Unrecognized renderer type: ' + type);\n var Handler = module.handler || CanvasHandler,\n Renderer = el ? module.renderer : module.headless;\n\n // initialize renderer and input handler\n view._renderer = !Renderer ? null : initializeRenderer(view, view._renderer, el, Renderer);\n view._handler = initializeHandler(view, view._handler, el, Handler);\n view._redraw = true;\n\n // initialize signal bindings\n if (el && config !== 'none') {\n elBind = elBind ? view._elBind = lookup(view, elBind, true) : el.appendChild(element('form', {\n 'class': 'vega-bindings'\n }));\n view._bind.forEach(function (_) {\n if (_.param.element && config !== 'container') {\n _.element = lookup(view, _.param.element, !!_.param.input);\n }\n });\n view._bind.forEach(function (_) {\n bind(view, _.element || elBind, _);\n });\n }\n return view;\n}\nfunction lookup(view, el, clear) {\n if (typeof el === 'string') {\n if (typeof document !== 'undefined') {\n el = document.querySelector(el);\n if (!el) {\n view.error('Signal bind element not found: ' + el);\n return null;\n }\n } else {\n view.error('DOM document instance not found.');\n return null;\n }\n }\n if (el && clear) {\n try {\n el.textContent = '';\n } catch (e) {\n el = null;\n view.error(e);\n }\n }\n return el;\n}\nvar number = function number(_) {\n return +_ || 0;\n};\nvar paddingObject = function paddingObject(_) {\n return {\n top: _,\n bottom: _,\n left: _,\n right: _\n };\n};\nfunction _padding(_) {\n return isObject(_) ? {\n top: number(_.top),\n bottom: number(_.bottom),\n left: number(_.left),\n right: number(_.right)\n } : paddingObject(number(_));\n}\n\n/**\n * Render the current scene in a headless fashion.\n * This method is asynchronous, returning a Promise instance.\n * @return {Promise} - A Promise that resolves to a renderer.\n */\nfunction renderHeadless(_x, _x2, _x3, _x4) {\n return _renderHeadless.apply(this, arguments);\n}\n/**\n * Produce an image URL for the visualization. Depending on the type\n * parameter, the generated URL contains data for either a PNG or SVG image.\n * The URL can be used (for example) to download images of the visualization.\n * This method is asynchronous, returning a Promise instance.\n * @param {string} type - The image type. One of 'svg', 'png' or 'canvas'.\n * The 'canvas' and 'png' types are synonyms for a PNG image.\n * @return {Promise} - A promise that resolves to an image URL.\n */\nfunction _renderHeadless() {\n _renderHeadless = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(view, type, scaleFactor, opt) {\n var module, ctr;\n return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n module = renderModule(type), ctr = module && module.headless;\n if (!ctr) error('Unrecognized renderer type: ' + type);\n _context2.next = 4;\n return view.runAsync();\n case 4:\n return _context2.abrupt(\"return\", initializeRenderer(view, null, null, ctr, scaleFactor, opt).renderAsync(view._scenegraph.root));\n case 5:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }));\n return _renderHeadless.apply(this, arguments);\n}\nfunction renderToImageURL(_x5, _x6) {\n return _renderToImageURL.apply(this, arguments);\n}\nfunction _renderToImageURL() {\n _renderToImageURL = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(type, scaleFactor) {\n var r;\n return _regeneratorRuntime.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n if (type !== RenderType.Canvas && type !== RenderType.SVG && type !== RenderType.PNG) {\n error('Unrecognized image type: ' + type);\n }\n _context3.next = 3;\n return renderHeadless(this, type, scaleFactor);\n case 3:\n r = _context3.sent;\n return _context3.abrupt(\"return\", type === RenderType.SVG ? toBlobURL(r.svg(), 'image/svg+xml') : r.canvas().toDataURL('image/png'));\n case 5:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n return _renderToImageURL.apply(this, arguments);\n}\nfunction toBlobURL(data, mime) {\n var blob = new Blob([data], {\n type: mime\n });\n return window.URL.createObjectURL(blob);\n}\n\n/**\n * Produce a Canvas instance containing a rendered visualization.\n * This method is asynchronous, returning a Promise instance.\n * @return {Promise} - A promise that resolves to a Canvas instance.\n */\nfunction renderToCanvas(_x7, _x8) {\n return _renderToCanvas.apply(this, arguments);\n}\n/**\n * Produce a rendered SVG string of the visualization.\n * This method is asynchronous, returning a Promise instance.\n * @return {Promise} - A promise that resolves to an SVG string.\n */\nfunction _renderToCanvas() {\n _renderToCanvas = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4(scaleFactor, opt) {\n var r;\n return _regeneratorRuntime.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return renderHeadless(this, RenderType.Canvas, scaleFactor, opt);\n case 2:\n r = _context4.sent;\n return _context4.abrupt(\"return\", r.canvas());\n case 4:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4, this);\n }));\n return _renderToCanvas.apply(this, arguments);\n}\nfunction renderToSVG(_x9) {\n return _renderToSVG.apply(this, arguments);\n}\nfunction _renderToSVG() {\n _renderToSVG = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5(scaleFactor) {\n var r;\n return _regeneratorRuntime.wrap(function _callee5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n _context5.next = 2;\n return renderHeadless(this, RenderType.SVG, scaleFactor);\n case 2:\n r = _context5.sent;\n return _context5.abrupt(\"return\", r.svg());\n case 4:\n case \"end\":\n return _context5.stop();\n }\n }, _callee5, this);\n }));\n return _renderToSVG.apply(this, arguments);\n}\nfunction runtime(view, spec, expr) {\n return context(view, transforms, functionContext, expr).parse(spec);\n}\nfunction scale(name) {\n var scales = this._runtime.scales;\n if (!hasOwnProperty(scales, name)) {\n error('Unrecognized scale or projection: ' + name);\n }\n return scales[name].value;\n}\nvar Width = 'width',\n Height = 'height',\n Padding = 'padding',\n Skip = {\n skip: true\n };\nfunction viewWidth(view, width) {\n var a = view.autosize(),\n p = view.padding();\n return width - (a && a.contains === Padding ? p.left + p.right : 0);\n}\nfunction viewHeight(view, height) {\n var a = view.autosize(),\n p = view.padding();\n return height - (a && a.contains === Padding ? p.top + p.bottom : 0);\n}\nfunction initializeResize(view) {\n var s = view._signals,\n w = s[Width],\n h = s[Height],\n p = s[Padding];\n function resetSize() {\n view._autosize = view._resize = 1;\n }\n\n // respond to width signal\n view._resizeWidth = view.add(null, function (_) {\n view._width = _.size;\n view._viewWidth = viewWidth(view, _.size);\n resetSize();\n }, {\n size: w\n });\n\n // respond to height signal\n view._resizeHeight = view.add(null, function (_) {\n view._height = _.size;\n view._viewHeight = viewHeight(view, _.size);\n resetSize();\n }, {\n size: h\n });\n\n // respond to padding signal\n var resizePadding = view.add(null, resetSize, {\n pad: p\n });\n\n // set rank to run immediately after source signal\n view._resizeWidth.rank = w.rank + 1;\n view._resizeHeight.rank = h.rank + 1;\n resizePadding.rank = p.rank + 1;\n}\nfunction resizeView(viewWidth, viewHeight, width, height, origin, auto) {\n this.runAfter(function (view) {\n var rerun = 0;\n\n // reset autosize flag\n view._autosize = 0;\n\n // width value changed: update signal, skip resize op\n if (view.width() !== width) {\n rerun = 1;\n view.signal(Width, width, Skip); // set width, skip update calc\n view._resizeWidth.skip(true); // skip width resize handler\n }\n\n // height value changed: update signal, skip resize op\n if (view.height() !== height) {\n rerun = 1;\n view.signal(Height, height, Skip); // set height, skip update calc\n view._resizeHeight.skip(true); // skip height resize handler\n }\n\n // view width changed: update view property, set resize flag\n if (view._viewWidth !== viewWidth) {\n view._resize = 1;\n view._viewWidth = viewWidth;\n }\n\n // view height changed: update view property, set resize flag\n if (view._viewHeight !== viewHeight) {\n view._resize = 1;\n view._viewHeight = viewHeight;\n }\n\n // origin changed: update view property, set resize flag\n if (view._origin[0] !== origin[0] || view._origin[1] !== origin[1]) {\n view._resize = 1;\n view._origin = origin;\n }\n\n // run dataflow on width/height signal change\n if (rerun) view.run('enter');\n if (auto) view.runAfter(function (v) {\n return v.resize();\n });\n }, false, 1);\n}\n\n/**\n * Get the current view state, consisting of signal values and/or data sets.\n * @param {object} [options] - Options flags indicating which state to export.\n * If unspecified, all signals and data sets will be exported.\n * @param {function(string, Operator):boolean} [options.signals] - Optional\n * predicate function for testing if a signal should be included in the\n * exported state. If unspecified, all signals will be included, except for\n * those named 'parent' or those which refer to a Transform value.\n * @param {function(string, object):boolean} [options.data] - Optional\n * predicate function for testing if a data set's input should be included\n * in the exported state. If unspecified, all data sets that have been\n * explicitly modified will be included.\n * @param {boolean} [options.recurse=true] - Flag indicating if the exported\n * state should recursively include state from group mark sub-contexts.\n * @return {object} - An object containing the exported state values.\n */\nfunction getState(options) {\n return this._runtime.getState(options || {\n data: dataTest,\n signals: signalTest,\n recurse: true\n });\n}\nfunction dataTest(name, data) {\n return data.modified && isArray(data.input.value) && name.indexOf('_:vega:_');\n}\nfunction signalTest(name, op) {\n return !(name === 'parent' || op instanceof transforms.proxy);\n}\n\n/**\n * Sets the current view state and updates the view by invoking run.\n * @param {object} state - A state object containing signal and/or\n * data set values, following the format used by the getState method.\n * @return {View} - This view instance.\n */\nfunction setState(state) {\n this.runAsync(null, function (v) {\n v._trigger = false;\n v._runtime.setState(state);\n }, function (v) {\n v._trigger = true;\n });\n return this;\n}\nfunction timer(callback, delay) {\n function tick(elapsed) {\n callback({\n timestamp: Date.now(),\n elapsed: elapsed\n });\n }\n this._timers.push(interval(tick, delay));\n}\nfunction defaultTooltip(handler, event, item, value) {\n var el = handler.element();\n if (el) el.setAttribute('title', formatTooltip(value));\n}\nfunction formatTooltip(value) {\n return value == null ? '' : isArray(value) ? formatArray(value) : isObject(value) && !isDate(value) ? formatObject(value) : value + '';\n}\nfunction formatObject(obj) {\n return Object.keys(obj).map(function (key) {\n var v = obj[key];\n return key + ': ' + (isArray(v) ? formatArray(v) : formatValue(v));\n }).join('\\n');\n}\nfunction formatArray(value) {\n return '[' + value.map(formatValue).join(', ') + ']';\n}\nfunction formatValue(value) {\n return isArray(value) ? \"[\\u2026]\" : isObject(value) && !isDate(value) ? \"{\\u2026}\" : value;\n}\n\n/**\n * Create a new View instance from a Vega dataflow runtime specification.\n * The generated View will not immediately be ready for display. Callers\n * should also invoke the initialize method (e.g., to set the parent\n * DOM element in browser-based deployment) and then invoke the run\n * method to evaluate the dataflow graph. Rendering will automatically\n * be performed upon dataflow runs.\n * @constructor\n * @param {object} spec - The Vega dataflow runtime specification.\n */\nfunction View(spec, options) {\n var view = this;\n options = options || {};\n Dataflow.call(view);\n if (options.loader) view.loader(options.loader);\n if (options.logger) view.logger(options.logger);\n if (options.logLevel != null) view.logLevel(options.logLevel);\n if (options.locale || spec.locale) {\n var loc = extend({}, spec.locale, options.locale);\n view.locale(locale(loc.number, loc.time));\n }\n view._el = null;\n view._elBind = null;\n view._renderType = options.renderer || RenderType.Canvas;\n view._scenegraph = new Scenegraph();\n var root = view._scenegraph.root;\n\n // initialize renderer, handler and event management\n view._renderer = null;\n view._tooltip = options.tooltip || defaultTooltip, view._redraw = true;\n view._handler = new CanvasHandler().scene(root);\n view._globalCursor = false;\n view._preventDefault = false;\n view._timers = [];\n view._eventListeners = [];\n view._resizeListeners = [];\n\n // initialize event configuration\n view._eventConfig = initializeEventConfig(spec.eventConfig);\n view.globalCursor(view._eventConfig.globalCursor);\n\n // initialize dataflow graph\n var ctx = runtime(view, spec, options.expr);\n view._runtime = ctx;\n view._signals = ctx.signals;\n view._bind = (spec.bindings || []).map(function (_) {\n return {\n state: null,\n param: extend({}, _)\n };\n });\n\n // initialize scenegraph\n if (ctx.root) ctx.root.set(root);\n root.source = ctx.data.root.input;\n view.pulse(ctx.data.root.input, view.changeset().insert(root.items));\n\n // initialize view size\n view._width = view.width();\n view._height = view.height();\n view._viewWidth = viewWidth(view, view._width);\n view._viewHeight = viewHeight(view, view._height);\n view._origin = [0, 0];\n view._resize = 0;\n view._autosize = 1;\n initializeResize(view);\n\n // initialize background color\n background(view);\n\n // initialize cursor\n cursor(view);\n\n // initialize view description\n view.description(spec.description);\n\n // initialize hover proessing, if requested\n if (options.hover) view.hover();\n\n // initialize DOM container(s) and renderer\n if (options.container) view.initialize(options.container, options.bind);\n}\nfunction lookupSignal(view, name) {\n return hasOwnProperty(view._signals, name) ? view._signals[name] : error('Unrecognized signal name: ' + stringValue(name));\n}\nfunction findOperatorHandler(op, handler) {\n var h = (op._targets || []).filter(function (op) {\n return op._update && op._update.handler === handler;\n });\n return h.length ? h[0] : null;\n}\nfunction addOperatorListener(view, name, op, handler) {\n var h = findOperatorHandler(op, handler);\n if (!h) {\n h = trap(view, function () {\n return handler(name, op.value);\n });\n h.handler = handler;\n view.on(op, null, h);\n }\n return view;\n}\nfunction removeOperatorListener(view, op, handler) {\n var h = findOperatorHandler(op, handler);\n if (h) op._targets.remove(h);\n return view;\n}\ninherits(View, Dataflow, {\n // -- DATAFLOW / RENDERING ----\n evaluate: function evaluate(encode, prerun, postrun) {\n var _this = this;\n return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return Dataflow.prototype.evaluate.call(_this, encode, prerun);\n case 2:\n if (!(_this._redraw || _this._resize)) {\n _context.next = 14;\n break;\n }\n _context.prev = 3;\n if (!_this._renderer) {\n _context.next = 8;\n break;\n }\n if (_this._resize) {\n _this._resize = 0;\n resizeRenderer(_this);\n }\n _context.next = 8;\n return _this._renderer.renderAsync(_this._scenegraph.root);\n case 8:\n _this._redraw = false;\n _context.next = 14;\n break;\n case 11:\n _context.prev = 11;\n _context.t0 = _context[\"catch\"](3);\n _this.error(_context.t0);\n case 14:\n // evaluate postrun\n if (postrun) asyncCallback(_this, postrun);\n return _context.abrupt(\"return\", _this);\n case 16:\n case \"end\":\n return _context.stop();\n }\n }, _callee, null, [[3, 11]]);\n }))();\n },\n dirty: function dirty(item) {\n this._redraw = true;\n this._renderer && this._renderer.dirty(item);\n },\n // -- GET / SET ----\n description: function description(text) {\n if (arguments.length) {\n var desc = text != null ? text + '' : null;\n if (desc !== this._desc) ariaLabel(this._el, this._desc = desc);\n return this;\n }\n return this._desc;\n },\n container: function container() {\n return this._el;\n },\n scenegraph: function scenegraph() {\n return this._scenegraph;\n },\n origin: function origin() {\n return this._origin.slice();\n },\n signal: function signal(name, value, options) {\n var op = lookupSignal(this, name);\n return arguments.length === 1 ? op.value : this.update(op, value, options);\n },\n width: function width(_) {\n return arguments.length ? this.signal('width', _) : this.signal('width');\n },\n height: function height(_) {\n return arguments.length ? this.signal('height', _) : this.signal('height');\n },\n padding: function padding(_) {\n return arguments.length ? this.signal('padding', _padding(_)) : _padding(this.signal('padding'));\n },\n autosize: function autosize(_) {\n return arguments.length ? this.signal('autosize', _) : this.signal('autosize');\n },\n background: function background(_) {\n return arguments.length ? this.signal('background', _) : this.signal('background');\n },\n renderer: function renderer(type) {\n if (!arguments.length) return this._renderType;\n if (!renderModule(type)) error('Unrecognized renderer type: ' + type);\n if (type !== this._renderType) {\n this._renderType = type;\n this._resetRenderer();\n }\n return this;\n },\n tooltip: function tooltip(handler) {\n if (!arguments.length) return this._tooltip;\n if (handler !== this._tooltip) {\n this._tooltip = handler;\n this._resetRenderer();\n }\n return this;\n },\n loader: function loader(_loader) {\n if (!arguments.length) return this._loader;\n if (_loader !== this._loader) {\n Dataflow.prototype.loader.call(this, _loader);\n this._resetRenderer();\n }\n return this;\n },\n resize: function resize() {\n // set flag to perform autosize\n this._autosize = 1;\n // touch autosize signal to ensure top-level ViewLayout runs\n return this.touch(lookupSignal(this, 'autosize'));\n },\n _resetRenderer: function _resetRenderer() {\n if (this._renderer) {\n this._renderer = null;\n this.initialize(this._el, this._elBind);\n }\n },\n // -- SIZING ----\n _resizeView: resizeView,\n // -- EVENT HANDLING ----\n addEventListener: function addEventListener(type, handler, options) {\n var callback = handler;\n if (!(options && options.trap === false)) {\n // wrap callback in error handler\n callback = trap(this, handler);\n callback.raw = handler;\n }\n this._handler.on(type, callback);\n return this;\n },\n removeEventListener: function removeEventListener(type, handler) {\n var handlers = this._handler.handlers(type),\n i = handlers.length,\n h,\n t;\n\n // search registered handlers, remove if match found\n while (--i >= 0) {\n t = handlers[i].type;\n h = handlers[i].handler;\n if (type === t && (handler === h || handler === h.raw)) {\n this._handler.off(t, h);\n break;\n }\n }\n return this;\n },\n addResizeListener: function addResizeListener(handler) {\n var l = this._resizeListeners;\n if (l.indexOf(handler) < 0) {\n // add handler if it isn't already registered\n // note: error trapping handled elsewhere, so\n // no need to wrap handlers here\n l.push(handler);\n }\n return this;\n },\n removeResizeListener: function removeResizeListener(handler) {\n var l = this._resizeListeners,\n i = l.indexOf(handler);\n if (i >= 0) {\n l.splice(i, 1);\n }\n return this;\n },\n addSignalListener: function addSignalListener(name, handler) {\n return addOperatorListener(this, name, lookupSignal(this, name), handler);\n },\n removeSignalListener: function removeSignalListener(name, handler) {\n return removeOperatorListener(this, lookupSignal(this, name), handler);\n },\n addDataListener: function addDataListener(name, handler) {\n return addOperatorListener(this, name, dataref(this, name).values, handler);\n },\n removeDataListener: function removeDataListener(name, handler) {\n return removeOperatorListener(this, dataref(this, name).values, handler);\n },\n globalCursor: function globalCursor(_) {\n if (arguments.length) {\n if (this._globalCursor !== !!_) {\n var prev = setCursor(this, null); // clear previous cursor\n this._globalCursor = !!_;\n if (prev) setCursor(this, prev); // swap cursor\n }\n\n return this;\n } else {\n return this._globalCursor;\n }\n },\n preventDefault: function preventDefault(_) {\n if (arguments.length) {\n this._preventDefault = _;\n return this;\n } else {\n return this._preventDefault;\n }\n },\n timer: timer,\n events: events,\n finalize: finalize,\n hover: hover,\n // -- DATA ----\n data: data,\n change: change,\n insert: insert,\n remove: remove,\n // -- SCALES --\n scale: scale,\n // -- INITIALIZATION ----\n initialize: initialize,\n // -- HEADLESS RENDERING ----\n toImageURL: renderToImageURL,\n toCanvas: renderToCanvas,\n toSVG: renderToSVG,\n // -- SAVE / RESTORE STATE ----\n getState: getState,\n setState: setState\n});\nexport { View };","import { Timer, now } from \"./timer.js\";\nexport default function (callback, delay, time) {\n var t = new Timer(),\n total = delay;\n if (delay == null) return t.restart(callback, delay, time), t;\n t._restart = t.restart;\n t.restart = function (callback, delay, time) {\n delay = +delay, time = time == null ? now() : +time;\n t._restart(function tick(elapsed) {\n elapsed += total;\n t._restart(tick, total += delay, time);\n callback(elapsed);\n }, delay, time);\n };\n t.restart(callback, delay, time);\n return t;\n}","var VIEW = 'view',\n LBRACK = '[',\n RBRACK = ']',\n LBRACE = '{',\n RBRACE = '}',\n COLON = ':',\n COMMA = ',',\n NAME = '@',\n GT = '>',\n ILLEGAL = /[[\\]{}]/,\n DEFAULT_MARKS = {\n '*': 1,\n arc: 1,\n area: 1,\n group: 1,\n image: 1,\n line: 1,\n path: 1,\n rect: 1,\n rule: 1,\n shape: 1,\n symbol: 1,\n text: 1,\n trail: 1\n };\nvar DEFAULT_SOURCE, MARKS;\n\n/**\n * Parse an event selector string.\n * Returns an array of event stream definitions.\n */\nfunction eventSelector(selector, source, marks) {\n DEFAULT_SOURCE = source || VIEW;\n MARKS = marks || DEFAULT_MARKS;\n return parseMerge(selector.trim()).map(parseSelector);\n}\nfunction isMarkType(type) {\n return MARKS[type];\n}\nfunction find(s, i, endChar, pushChar, popChar) {\n var n = s.length;\n var count = 0,\n c;\n for (; i < n; ++i) {\n c = s[i];\n if (!count && c === endChar) return i;else if (popChar && popChar.indexOf(c) >= 0) --count;else if (pushChar && pushChar.indexOf(c) >= 0) ++count;\n }\n return i;\n}\nfunction parseMerge(s) {\n var output = [],\n n = s.length;\n var start = 0,\n i = 0;\n while (i < n) {\n i = find(s, i, COMMA, LBRACK + LBRACE, RBRACK + RBRACE);\n output.push(s.substring(start, i).trim());\n start = ++i;\n }\n if (output.length === 0) {\n throw 'Empty event selector: ' + s;\n }\n return output;\n}\nfunction parseSelector(s) {\n return s[0] === '[' ? parseBetween(s) : parseStream(s);\n}\nfunction parseBetween(s) {\n var n = s.length;\n var i = 1,\n b;\n i = find(s, i, RBRACK, LBRACK, RBRACK);\n if (i === n) {\n throw 'Empty between selector: ' + s;\n }\n b = parseMerge(s.substring(1, i));\n if (b.length !== 2) {\n throw 'Between selector must have two elements: ' + s;\n }\n s = s.slice(i + 1).trim();\n if (s[0] !== GT) {\n throw 'Expected \\'>\\' after between selector: ' + s;\n }\n b = b.map(parseSelector);\n var stream = parseSelector(s.slice(1).trim());\n if (stream.between) {\n return {\n between: b,\n stream: stream\n };\n } else {\n stream.between = b;\n }\n return stream;\n}\nfunction parseStream(s) {\n var stream = {\n source: DEFAULT_SOURCE\n },\n source = [];\n var throttle = [0, 0],\n markname = 0,\n start = 0,\n n = s.length,\n i = 0,\n j,\n filter;\n\n // extract throttle from end\n if (s[n - 1] === RBRACE) {\n i = s.lastIndexOf(LBRACE);\n if (i >= 0) {\n try {\n throttle = parseThrottle(s.substring(i + 1, n - 1));\n } catch (e) {\n throw 'Invalid throttle specification: ' + s;\n }\n s = s.slice(0, i).trim();\n n = s.length;\n } else throw 'Unmatched right brace: ' + s;\n i = 0;\n }\n if (!n) throw s;\n\n // set name flag based on first char\n if (s[0] === NAME) markname = ++i;\n\n // extract first part of multi-part stream selector\n j = find(s, i, COLON);\n if (j < n) {\n source.push(s.substring(start, j).trim());\n start = i = ++j;\n }\n\n // extract remaining part of stream selector\n i = find(s, i, LBRACK);\n if (i === n) {\n source.push(s.substring(start, n).trim());\n } else {\n source.push(s.substring(start, i).trim());\n filter = [];\n start = ++i;\n if (start === n) throw 'Unmatched left bracket: ' + s;\n }\n\n // extract filters\n while (i < n) {\n i = find(s, i, RBRACK);\n if (i === n) throw 'Unmatched left bracket: ' + s;\n filter.push(s.substring(start, i).trim());\n if (i < n - 1 && s[++i] !== LBRACK) throw 'Expected left bracket: ' + s;\n start = ++i;\n }\n\n // marshall event stream specification\n if (!(n = source.length) || ILLEGAL.test(source[n - 1])) {\n throw 'Invalid event selector: ' + s;\n }\n if (n > 1) {\n stream.type = source[1];\n if (markname) {\n stream.markname = source[0].slice(1);\n } else if (isMarkType(source[0])) {\n stream.marktype = source[0];\n } else {\n stream.source = source[0];\n }\n } else {\n stream.type = source[0];\n }\n if (stream.type.slice(-1) === '!') {\n stream.consume = true;\n stream.type = stream.type.slice(0, -1);\n }\n if (filter != null) stream.filter = filter;\n if (throttle[0]) stream.throttle = throttle[0];\n if (throttle[1]) stream.debounce = throttle[1];\n return stream;\n}\nfunction parseThrottle(s) {\n var a = s.split(COMMA);\n if (!s.length || a.length > 2) throw s;\n return a.map(function (_) {\n var x = +_;\n if (x !== x) throw s;\n return x;\n });\n}\nexport { eventSelector as parseSelector };","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { isObject, isArray, extend, hasOwnProperty, array, stringValue, peek, error, isString, splitAccessPath, mergeConfig } from 'vega-util';\nimport { parseExpression } from 'vega-functions';\nimport { parseSelector } from 'vega-event-selector';\nimport { isValidScaleType, isDiscrete, isQuantile, isContinuous, isDiscretizing } from 'vega-scale';\nimport { definition as definition$1 } from 'vega-dataflow';\nfunction parseAutosize(spec) {\n return isObject(spec) ? spec : {\n type: spec || 'pad'\n };\n}\nvar number = function number(_) {\n return +_ || 0;\n};\nvar paddingObject = function paddingObject(_) {\n return {\n top: _,\n bottom: _,\n left: _,\n right: _\n };\n};\nfunction parsePadding(spec) {\n return !isObject(spec) ? paddingObject(number(spec)) : spec.signal ? spec : {\n top: number(spec.top),\n bottom: number(spec.bottom),\n left: number(spec.left),\n right: number(spec.right)\n };\n}\nvar encoder = function encoder(_) {\n return isObject(_) && !isArray(_) ? extend({}, _) : {\n value: _\n };\n};\nfunction addEncode(object, name, value, set) {\n if (value != null) {\n var isEncoder = isObject(value) && !isArray(value) || isArray(value) && value.length && isObject(value[0]);\n\n // Always assign signal to update, even if the signal is from the enter block\n if (isEncoder) {\n object.update[name] = value;\n } else {\n object[set || 'enter'][name] = {\n value: value\n };\n }\n return 1;\n } else {\n return 0;\n }\n}\nfunction addEncoders(object, enter, update) {\n for (var name in enter) {\n addEncode(object, name, enter[name]);\n }\n for (var _name in update) {\n addEncode(object, _name, update[_name], 'update');\n }\n}\nfunction extendEncode(encode, extra, skip) {\n for (var name in extra) {\n if (skip && hasOwnProperty(skip, name)) continue;\n encode[name] = extend(encode[name] || {}, extra[name]);\n }\n return encode;\n}\nfunction has(key, encode) {\n return encode && (encode.enter && encode.enter[key] || encode.update && encode.update[key]);\n}\nvar MarkRole = 'mark';\nvar FrameRole = 'frame';\nvar ScopeRole = 'scope';\nvar AxisRole = 'axis';\nvar AxisDomainRole = 'axis-domain';\nvar AxisGridRole = 'axis-grid';\nvar AxisLabelRole = 'axis-label';\nvar AxisTickRole = 'axis-tick';\nvar AxisTitleRole = 'axis-title';\nvar LegendRole = 'legend';\nvar LegendBandRole = 'legend-band';\nvar LegendEntryRole = 'legend-entry';\nvar LegendGradientRole = 'legend-gradient';\nvar LegendLabelRole = 'legend-label';\nvar LegendSymbolRole = 'legend-symbol';\nvar LegendTitleRole = 'legend-title';\nvar TitleRole = 'title';\nvar TitleTextRole = 'title-text';\nvar TitleSubtitleRole = 'title-subtitle';\nfunction applyDefaults(encode, type, role, style, config) {\n var defaults = {},\n enter = {};\n var update, key, skip, props;\n\n // if text mark, apply global lineBreak settings (#2370)\n key = 'lineBreak';\n if (type === 'text' && config[key] != null && !has(key, encode)) {\n applyDefault(defaults, key, config[key]);\n }\n\n // ignore legend and axis roles\n if (role == 'legend' || String(role).startsWith('axis')) {\n role = null;\n }\n\n // resolve mark config\n props = role === FrameRole ? config.group : role === MarkRole ? extend({}, config.mark, config[type]) : null;\n for (key in props) {\n // do not apply defaults if relevant fields are defined\n skip = has(key, encode) || (key === 'fill' || key === 'stroke') && (has('fill', encode) || has('stroke', encode));\n if (!skip) applyDefault(defaults, key, props[key]);\n }\n\n // resolve styles, apply with increasing precedence\n array(style).forEach(function (name) {\n var props = config.style && config.style[name];\n for (var _key in props) {\n if (!has(_key, encode)) {\n applyDefault(defaults, _key, props[_key]);\n }\n }\n });\n encode = extend({}, encode); // defensive copy\n for (key in defaults) {\n props = defaults[key];\n if (props.signal) {\n (update = update || {})[key] = props;\n } else {\n enter[key] = props;\n }\n }\n encode.enter = extend(enter, encode.enter);\n if (update) encode.update = extend(update, encode.update);\n return encode;\n}\nfunction applyDefault(defaults, key, value) {\n defaults[key] = value && value.signal ? {\n signal: value.signal\n } : {\n value: value\n };\n}\nvar scaleRef = function scaleRef(scale) {\n return isString(scale) ? stringValue(scale) : scale.signal ? \"(\".concat(scale.signal, \")\") : field(scale);\n};\nfunction entry$1(enc) {\n if (enc.gradient != null) {\n return gradient(enc);\n }\n var value = enc.signal ? \"(\".concat(enc.signal, \")\") : enc.color ? color(enc.color) : enc.field != null ? field(enc.field) : enc.value !== undefined ? stringValue(enc.value) : undefined;\n if (enc.scale != null) {\n value = scale(enc, value);\n }\n if (value === undefined) {\n value = null;\n }\n if (enc.exponent != null) {\n value = \"pow(\".concat(value, \",\").concat(property(enc.exponent), \")\");\n }\n if (enc.mult != null) {\n value += \"*\".concat(property(enc.mult));\n }\n if (enc.offset != null) {\n value += \"+\".concat(property(enc.offset));\n }\n if (enc.round) {\n value = \"round(\".concat(value, \")\");\n }\n return value;\n}\nvar _color = function _color(type, x, y, z) {\n return \"(\".concat(type, \"(\").concat([x, y, z].map(entry$1).join(','), \")+'')\");\n};\nfunction color(enc) {\n return enc.c ? _color('hcl', enc.h, enc.c, enc.l) : enc.h || enc.s ? _color('hsl', enc.h, enc.s, enc.l) : enc.l || enc.a ? _color('lab', enc.l, enc.a, enc.b) : enc.r || enc.g || enc.b ? _color('rgb', enc.r, enc.g, enc.b) : null;\n}\nfunction gradient(enc) {\n // map undefined to null; expression lang does not allow undefined\n var args = [enc.start, enc.stop, enc.count].map(function (_) {\n return _ == null ? null : stringValue(_);\n });\n\n // trim null inputs from the end\n while (args.length && peek(args) == null) args.pop();\n args.unshift(scaleRef(enc.gradient));\n return \"gradient(\".concat(args.join(','), \")\");\n}\nfunction property(property) {\n return isObject(property) ? '(' + entry$1(property) + ')' : property;\n}\nfunction field(ref) {\n return resolveField(isObject(ref) ? ref : {\n datum: ref\n });\n}\nfunction resolveField(ref) {\n var object, level, field;\n if (ref.signal) {\n object = 'datum';\n field = ref.signal;\n } else if (ref.group || ref.parent) {\n level = Math.max(1, ref.level || 1);\n object = 'item';\n while (level-- > 0) {\n object += '.mark.group';\n }\n if (ref.parent) {\n field = ref.parent;\n object += '.datum';\n } else {\n field = ref.group;\n }\n } else if (ref.datum) {\n object = 'datum';\n field = ref.datum;\n } else {\n error('Invalid field reference: ' + stringValue(ref));\n }\n if (!ref.signal) {\n field = isString(field) ? splitAccessPath(field).map(stringValue).join('][') : resolveField(field);\n }\n return object + '[' + field + ']';\n}\nfunction scale(enc, value) {\n var scale = scaleRef(enc.scale);\n if (enc.range != null) {\n // pull value from scale range\n value = \"lerp(_range(\".concat(scale, \"), \").concat(+enc.range, \")\");\n } else {\n // run value through scale and/or pull scale bandwidth\n if (value !== undefined) value = \"_scale(\".concat(scale, \", \").concat(value, \")\");\n if (enc.band) {\n value = (value ? value + '+' : '') + \"_bandwidth(\".concat(scale, \")\") + (+enc.band === 1 ? '' : '*' + property(enc.band));\n if (enc.extra) {\n // include logic to handle extraneous elements\n value = \"(datum.extra ? _scale(\".concat(scale, \", datum.extra.value) : \").concat(value, \")\");\n }\n }\n if (value == null) value = '0';\n }\n return value;\n}\nfunction rule(enc) {\n var code = '';\n enc.forEach(function (rule) {\n var value = entry$1(rule);\n code += rule.test ? \"(\".concat(rule.test, \")?\").concat(value, \":\") : value;\n });\n\n // if no else clause, terminate with null (#1366)\n if (peek(code) === ':') {\n code += 'null';\n }\n return code;\n}\nfunction parseEncode(encode, type, role, style, scope, params) {\n var enc = {};\n params = params || {};\n params.encoders = {\n $encode: enc\n };\n encode = applyDefaults(encode, type, role, style, scope.config);\n for (var key in encode) {\n enc[key] = parseBlock(encode[key], type, params, scope);\n }\n return params;\n}\nfunction parseBlock(block, marktype, params, scope) {\n var channels = {},\n fields = {};\n for (var name in block) {\n if (block[name] != null) {\n // skip any null entries\n channels[name] = parse$1(expr(block[name]), scope, params, fields);\n }\n }\n return {\n $expr: {\n marktype: marktype,\n channels: channels\n },\n $fields: Object.keys(fields),\n $output: Object.keys(block)\n };\n}\nfunction expr(enc) {\n return isArray(enc) ? rule(enc) : entry$1(enc);\n}\nfunction parse$1(code, scope, params, fields) {\n var expr = parseExpression(code, scope);\n expr.$fields.forEach(function (name) {\n return fields[name] = 1;\n });\n extend(params, expr.$params);\n return expr.$expr;\n}\nvar OUTER = 'outer',\n OUTER_INVALID = ['value', 'update', 'init', 'react', 'bind'];\nfunction outerError(prefix, name) {\n error(prefix + ' for \"outer\" push: ' + stringValue(name));\n}\nfunction parseSignal(signal, scope) {\n var name = signal.name;\n if (signal.push === OUTER) {\n // signal must already be defined, raise error if not\n if (!scope.signals[name]) outerError('No prior signal definition', name);\n // signal push must not use properties reserved for standard definition\n OUTER_INVALID.forEach(function (prop) {\n if (signal[prop] !== undefined) outerError('Invalid property ', prop);\n });\n } else {\n // define a new signal in the current scope\n var op = scope.addSignal(name, signal.value);\n if (signal.react === false) op.react = false;\n if (signal.bind) scope.addBinding(name, signal.bind);\n }\n}\nfunction Entry(type, value, params, parent) {\n this.id = -1;\n this.type = type;\n this.value = value;\n this.params = params;\n if (parent) this.parent = parent;\n}\nfunction entry(type, value, params, parent) {\n return new Entry(type, value, params, parent);\n}\nfunction operator(value, params) {\n return entry('operator', value, params);\n}\n\n// -----\n\nfunction ref(op) {\n var ref = {\n $ref: op.id\n };\n // if operator not yet registered, cache ref to resolve later\n if (op.id < 0) (op.refs = op.refs || []).push(ref);\n return ref;\n}\nfunction fieldRef$1(field, name) {\n return name ? {\n $field: field,\n $name: name\n } : {\n $field: field\n };\n}\nvar keyFieldRef = fieldRef$1('key');\nfunction _compareRef(fields, orders) {\n return {\n $compare: fields,\n $order: orders\n };\n}\nfunction _keyRef(fields, flat) {\n var ref = {\n $key: fields\n };\n if (flat) ref.$flat = true;\n return ref;\n}\n\n// -----\n\nvar Ascending = 'ascending';\nvar Descending = 'descending';\nfunction sortKey(sort) {\n return !isObject(sort) ? '' : (sort.order === Descending ? '-' : '+') + aggrField(sort.op, sort.field);\n}\nfunction aggrField(op, field) {\n return (op && op.signal ? '$' + op.signal : op || '') + (op && field ? '_' : '') + (field && field.signal ? '$' + field.signal : field || '');\n}\n\n// -----\n\nvar Scope$1 = 'scope';\nvar View = 'view';\nfunction isSignal(_) {\n return _ && _.signal;\n}\nfunction isExpr$1(_) {\n return _ && _.expr;\n}\nfunction hasSignal(_) {\n if (isSignal(_)) return true;\n if (isObject(_)) for (var key in _) {\n if (hasSignal(_[key])) return true;\n }\n return false;\n}\nfunction value(specValue, defaultValue) {\n return specValue != null ? specValue : defaultValue;\n}\nfunction deref(v) {\n return v && v.signal || v;\n}\nvar Timer = 'timer';\nfunction parseStream(stream, scope) {\n var method = stream.merge ? mergeStream : stream.stream ? nestedStream : stream.type ? eventStream : error('Invalid stream specification: ' + stringValue(stream));\n return method(stream, scope);\n}\nfunction eventSource(source) {\n return source === Scope$1 ? View : source || View;\n}\nfunction mergeStream(stream, scope) {\n var list = stream.merge.map(function (s) {\n return parseStream(s, scope);\n }),\n entry = streamParameters({\n merge: list\n }, stream, scope);\n return scope.addStream(entry).id;\n}\nfunction nestedStream(stream, scope) {\n var id = parseStream(stream.stream, scope),\n entry = streamParameters({\n stream: id\n }, stream, scope);\n return scope.addStream(entry).id;\n}\nfunction eventStream(stream, scope) {\n var id;\n if (stream.type === Timer) {\n id = scope.event(Timer, stream.throttle);\n stream = {\n between: stream.between,\n filter: stream.filter\n };\n } else {\n id = scope.event(eventSource(stream.source), stream.type);\n }\n var entry = streamParameters({\n stream: id\n }, stream, scope);\n return Object.keys(entry).length === 1 ? id : scope.addStream(entry).id;\n}\nfunction streamParameters(entry, stream, scope) {\n var param = stream.between;\n if (param) {\n if (param.length !== 2) {\n error('Stream \"between\" parameter must have 2 entries: ' + stringValue(stream));\n }\n entry.between = [parseStream(param[0], scope), parseStream(param[1], scope)];\n }\n param = stream.filter ? [].concat(stream.filter) : [];\n if (stream.marktype || stream.markname || stream.markrole) {\n // add filter for mark type, name and/or role\n param.push(filterMark(stream.marktype, stream.markname, stream.markrole));\n }\n if (stream.source === Scope$1) {\n // add filter to limit events from sub-scope only\n param.push('inScope(event.item)');\n }\n if (param.length) {\n entry.filter = parseExpression('(' + param.join(')&&(') + ')', scope).$expr;\n }\n if ((param = stream.throttle) != null) {\n entry.throttle = +param;\n }\n if ((param = stream.debounce) != null) {\n entry.debounce = +param;\n }\n if (stream.consume) {\n entry.consume = true;\n }\n return entry;\n}\nfunction filterMark(type, name, role) {\n var item = 'event.item';\n return item + (type && type !== '*' ? '&&' + item + '.mark.marktype===\\'' + type + '\\'' : '') + (role ? '&&' + item + '.mark.role===\\'' + role + '\\'' : '') + (name ? '&&' + item + '.mark.name===\\'' + name + '\\'' : '');\n}\n\n// bypass expression parser for internal operator references\nvar OP_VALUE_EXPR = {\n code: '_.$value',\n ast: {\n type: 'Identifier',\n value: 'value'\n }\n};\nfunction parseUpdate(spec, scope, target) {\n var encode = spec.encode,\n entry = {\n target: target\n };\n var events = spec.events,\n update = spec.update,\n sources = [];\n if (!events) {\n error('Signal update missing events specification.');\n }\n\n // interpret as an event selector string\n if (isString(events)) {\n events = parseSelector(events, scope.isSubscope() ? Scope$1 : View);\n }\n\n // separate event streams from signal updates\n events = array(events).filter(function (s) {\n return s.signal || s.scale ? (sources.push(s), 0) : 1;\n });\n\n // merge internal operator listeners\n if (sources.length > 1) {\n sources = [mergeSources(sources)];\n }\n\n // merge event streams, include as source\n if (events.length) {\n sources.push(events.length > 1 ? {\n merge: events\n } : events[0]);\n }\n if (encode != null) {\n if (update) error('Signal encode and update are mutually exclusive.');\n update = 'encode(item(),' + stringValue(encode) + ')';\n }\n\n // resolve update value\n entry.update = isString(update) ? parseExpression(update, scope) : update.expr != null ? parseExpression(update.expr, scope) : update.value != null ? update.value : update.signal != null ? {\n $expr: OP_VALUE_EXPR,\n $params: {\n $value: scope.signalRef(update.signal)\n }\n } : error('Invalid signal update specification.');\n if (spec.force) {\n entry.options = {\n force: true\n };\n }\n sources.forEach(function (source) {\n return scope.addUpdate(extend(streamSource(source, scope), entry));\n });\n}\nfunction streamSource(stream, scope) {\n return {\n source: stream.signal ? scope.signalRef(stream.signal) : stream.scale ? scope.scaleRef(stream.scale) : parseStream(stream, scope)\n };\n}\nfunction mergeSources(sources) {\n return {\n signal: '[' + sources.map(function (s) {\n return s.scale ? 'scale(\"' + s.scale + '\")' : s.signal;\n }) + ']'\n };\n}\nfunction parseSignalUpdates(signal, scope) {\n var op = scope.getSignal(signal.name);\n var expr = signal.update;\n if (signal.init) {\n if (expr) {\n error('Signals can not include both init and update expressions.');\n } else {\n expr = signal.init;\n op.initonly = true;\n }\n }\n if (expr) {\n expr = parseExpression(expr, scope);\n op.update = expr.$expr;\n op.params = expr.$params;\n }\n if (signal.on) {\n signal.on.forEach(function (_) {\n return parseUpdate(_, scope, op.id);\n });\n }\n}\nvar transform = function transform(name) {\n return function (params, value, parent) {\n return entry(name, value, params || undefined, parent);\n };\n};\nvar Aggregate = transform('aggregate');\nvar AxisTicks = transform('axisticks');\nvar Bound = transform('bound');\nvar Collect = transform('collect');\nvar Compare = transform('compare');\nvar DataJoin = transform('datajoin');\nvar Encode = transform('encode');\nvar Expression = transform('expression');\nvar Facet = transform('facet');\nvar Field = transform('field');\nvar Key = transform('key');\nvar LegendEntries = transform('legendentries');\nvar Load = transform('load');\nvar Mark = transform('mark');\nvar MultiExtent = transform('multiextent');\nvar MultiValues = transform('multivalues');\nvar Overlap = transform('overlap');\nvar Params = transform('params');\nvar PreFacet = transform('prefacet');\nvar Projection = transform('projection');\nvar Proxy = transform('proxy');\nvar Relay = transform('relay');\nvar Render = transform('render');\nvar Scale = transform('scale');\nvar Sieve = transform('sieve');\nvar SortItems = transform('sortitems');\nvar ViewLayout = transform('viewlayout');\nvar Values = transform('values');\nvar FIELD_REF_ID = 0;\nvar MULTIDOMAIN_SORT_OPS = {\n min: 'min',\n max: 'max',\n count: 'sum'\n};\nfunction initScale(spec, scope) {\n var type = spec.type || 'linear';\n if (!isValidScaleType(type)) {\n error('Unrecognized scale type: ' + stringValue(type));\n }\n scope.addScale(spec.name, {\n type: type,\n domain: undefined\n });\n}\nfunction parseScale(spec, scope) {\n var params = scope.getScale(spec.name).params;\n var key;\n params.domain = parseScaleDomain(spec.domain, spec, scope);\n if (spec.range != null) {\n params.range = parseScaleRange(spec, scope, params);\n }\n if (spec.interpolate != null) {\n parseScaleInterpolate(spec.interpolate, params);\n }\n if (spec.nice != null) {\n params.nice = parseScaleNice(spec.nice);\n }\n if (spec.bins != null) {\n params.bins = parseScaleBins(spec.bins, scope);\n }\n for (key in spec) {\n if (hasOwnProperty(params, key) || key === 'name') continue;\n params[key] = parseLiteral(spec[key], scope);\n }\n}\nfunction parseLiteral(v, scope) {\n return !isObject(v) ? v : v.signal ? scope.signalRef(v.signal) : error('Unsupported object: ' + stringValue(v));\n}\nfunction parseArray(v, scope) {\n return v.signal ? scope.signalRef(v.signal) : v.map(function (v) {\n return parseLiteral(v, scope);\n });\n}\nfunction dataLookupError(name) {\n error('Can not find data set: ' + stringValue(name));\n}\n\n// -- SCALE DOMAIN ----\n\nfunction parseScaleDomain(domain, spec, scope) {\n if (!domain) {\n if (spec.domainMin != null || spec.domainMax != null) {\n error('No scale domain defined for domainMin/domainMax to override.');\n }\n return; // default domain\n }\n\n return domain.signal ? scope.signalRef(domain.signal) : (isArray(domain) ? explicitDomain : domain.fields ? multipleDomain : singularDomain)(domain, spec, scope);\n}\nfunction explicitDomain(domain, spec, scope) {\n return domain.map(function (v) {\n return parseLiteral(v, scope);\n });\n}\nfunction singularDomain(domain, spec, scope) {\n var data = scope.getData(domain.data);\n if (!data) dataLookupError(domain.data);\n return isDiscrete(spec.type) ? data.valuesRef(scope, domain.field, parseSort(domain.sort, false)) : isQuantile(spec.type) ? data.domainRef(scope, domain.field) : data.extentRef(scope, domain.field);\n}\nfunction multipleDomain(domain, spec, scope) {\n var data = domain.data,\n fields = domain.fields.reduce(function (dom, d) {\n d = isString(d) ? {\n data: data,\n field: d\n } : isArray(d) || d.signal ? fieldRef(d, scope) : d;\n dom.push(d);\n return dom;\n }, []);\n return (isDiscrete(spec.type) ? ordinalMultipleDomain : isQuantile(spec.type) ? quantileMultipleDomain : numericMultipleDomain)(domain, scope, fields);\n}\nfunction fieldRef(data, scope) {\n var name = '_:vega:_' + FIELD_REF_ID++,\n coll = Collect({});\n if (isArray(data)) {\n coll.value = {\n $ingest: data\n };\n } else if (data.signal) {\n var code = 'setdata(' + stringValue(name) + ',' + data.signal + ')';\n coll.params.input = scope.signalRef(code);\n }\n scope.addDataPipeline(name, [coll, Sieve({})]);\n return {\n data: name,\n field: 'data'\n };\n}\nfunction ordinalMultipleDomain(domain, scope, fields) {\n var sort = parseSort(domain.sort, true);\n var a, v;\n\n // get value counts for each domain field\n var counts = fields.map(function (f) {\n var data = scope.getData(f.data);\n if (!data) dataLookupError(f.data);\n return data.countsRef(scope, f.field, sort);\n });\n\n // aggregate the results from each domain field\n var p = {\n groupby: keyFieldRef,\n pulse: counts\n };\n if (sort) {\n a = sort.op || 'count';\n v = sort.field ? aggrField(a, sort.field) : 'count';\n p.ops = [MULTIDOMAIN_SORT_OPS[a]];\n p.fields = [scope.fieldRef(v)];\n p.as = [v];\n }\n a = scope.add(Aggregate(p));\n\n // collect aggregate output\n var c = scope.add(Collect({\n pulse: ref(a)\n }));\n\n // extract values for combined domain\n v = scope.add(Values({\n field: keyFieldRef,\n sort: scope.sortRef(sort),\n pulse: ref(c)\n }));\n return ref(v);\n}\nfunction parseSort(sort, multidomain) {\n if (sort) {\n if (!sort.field && !sort.op) {\n if (isObject(sort)) sort.field = 'key';else sort = {\n field: 'key'\n };\n } else if (!sort.field && sort.op !== 'count') {\n error('No field provided for sort aggregate op: ' + sort.op);\n } else if (multidomain && sort.field) {\n if (sort.op && !MULTIDOMAIN_SORT_OPS[sort.op]) {\n error('Multiple domain scales can not be sorted using ' + sort.op);\n }\n }\n }\n return sort;\n}\nfunction quantileMultipleDomain(domain, scope, fields) {\n // get value arrays for each domain field\n var values = fields.map(function (f) {\n var data = scope.getData(f.data);\n if (!data) dataLookupError(f.data);\n return data.domainRef(scope, f.field);\n });\n\n // combine value arrays\n return ref(scope.add(MultiValues({\n values: values\n })));\n}\nfunction numericMultipleDomain(domain, scope, fields) {\n // get extents for each domain field\n var extents = fields.map(function (f) {\n var data = scope.getData(f.data);\n if (!data) dataLookupError(f.data);\n return data.extentRef(scope, f.field);\n });\n\n // combine extents\n return ref(scope.add(MultiExtent({\n extents: extents\n })));\n}\n\n// -- SCALE BINS -----\n\nfunction parseScaleBins(v, scope) {\n return v.signal || isArray(v) ? parseArray(v, scope) : scope.objectProperty(v);\n}\n\n// -- SCALE NICE -----\n\nfunction parseScaleNice(nice) {\n return isObject(nice) ? {\n interval: parseLiteral(nice.interval),\n step: parseLiteral(nice.step)\n } : parseLiteral(nice);\n}\n\n// -- SCALE INTERPOLATION -----\n\nfunction parseScaleInterpolate(interpolate, params) {\n params.interpolate = parseLiteral(interpolate.type || interpolate);\n if (interpolate.gamma != null) {\n params.interpolateGamma = parseLiteral(interpolate.gamma);\n }\n}\n\n// -- SCALE RANGE -----\n\nfunction parseScaleRange(spec, scope, params) {\n var config = scope.config.range;\n var range = spec.range;\n if (range.signal) {\n return scope.signalRef(range.signal);\n } else if (isString(range)) {\n if (config && hasOwnProperty(config, range)) {\n spec = extend({}, spec, {\n range: config[range]\n });\n return parseScaleRange(spec, scope, params);\n } else if (range === 'width') {\n range = [0, {\n signal: 'width'\n }];\n } else if (range === 'height') {\n range = isDiscrete(spec.type) ? [0, {\n signal: 'height'\n }] : [{\n signal: 'height'\n }, 0];\n } else {\n error('Unrecognized scale range value: ' + stringValue(range));\n }\n } else if (range.scheme) {\n params.scheme = isArray(range.scheme) ? parseArray(range.scheme, scope) : parseLiteral(range.scheme, scope);\n if (range.extent) params.schemeExtent = parseArray(range.extent, scope);\n if (range.count) params.schemeCount = parseLiteral(range.count, scope);\n return;\n } else if (range.step) {\n params.rangeStep = parseLiteral(range.step, scope);\n return;\n } else if (isDiscrete(spec.type) && !isArray(range)) {\n return parseScaleDomain(range, spec, scope);\n } else if (!isArray(range)) {\n error('Unsupported range type: ' + stringValue(range));\n }\n return range.map(function (v) {\n return (isArray(v) ? parseArray : parseLiteral)(v, scope);\n });\n}\nfunction parseProjection(proj, scope) {\n var config = scope.config.projection || {},\n params = {};\n for (var name in proj) {\n if (name === 'name') continue;\n params[name] = parseParameter$1(proj[name], name, scope);\n }\n\n // apply projection defaults from config\n for (var _name2 in config) {\n if (params[_name2] == null) {\n params[_name2] = parseParameter$1(config[_name2], _name2, scope);\n }\n }\n scope.addProjection(proj.name, params);\n}\nfunction parseParameter$1(_, name, scope) {\n return isArray(_) ? _.map(function (_) {\n return parseParameter$1(_, name, scope);\n }) : !isObject(_) ? _ : _.signal ? scope.signalRef(_.signal) : name === 'fit' ? _ : error('Unsupported parameter object: ' + stringValue(_));\n}\nvar Top = 'top';\nvar Left = 'left';\nvar Right = 'right';\nvar Bottom = 'bottom';\nvar Center = 'center';\nvar Vertical = 'vertical';\nvar Start = 'start';\nvar Middle = 'middle';\nvar End = 'end';\nvar Index = 'index';\nvar Label = 'label';\nvar Offset = 'offset';\nvar Perc = 'perc';\nvar Perc2 = 'perc2';\nvar Value = 'value';\nvar GuideLabelStyle = 'guide-label';\nvar GuideTitleStyle = 'guide-title';\nvar GroupTitleStyle = 'group-title';\nvar GroupSubtitleStyle = 'group-subtitle';\nvar Symbols = 'symbol';\nvar Gradient = 'gradient';\nvar Discrete = 'discrete';\nvar Size = 'size';\nvar Shape = 'shape';\nvar Fill = 'fill';\nvar Stroke = 'stroke';\nvar StrokeWidth = 'strokeWidth';\nvar StrokeDash = 'strokeDash';\nvar Opacity = 'opacity';\n\n// Encoding channels supported by legends\n// In priority order of 'canonical' scale\nvar LegendScales = [Size, Shape, Fill, Stroke, StrokeWidth, StrokeDash, Opacity];\nvar Skip = {\n name: 1,\n style: 1,\n interactive: 1\n};\nvar zero = {\n value: 0\n};\nvar one = {\n value: 1\n};\nvar GroupMark = 'group';\nvar RectMark = 'rect';\nvar RuleMark = 'rule';\nvar SymbolMark = 'symbol';\nvar TextMark = 'text';\nfunction guideGroup(mark) {\n mark.type = GroupMark;\n mark.interactive = mark.interactive || false;\n return mark;\n}\nfunction lookup(spec, config) {\n var _ = function _(name, dflt) {\n return value(spec[name], value(config[name], dflt));\n };\n _.isVertical = function (s) {\n return Vertical === value(spec.direction, config.direction || (s ? config.symbolDirection : config.gradientDirection));\n };\n _.gradientLength = function () {\n return value(spec.gradientLength, config.gradientLength || config.gradientWidth);\n };\n _.gradientThickness = function () {\n return value(spec.gradientThickness, config.gradientThickness || config.gradientHeight);\n };\n _.entryColumns = function () {\n return value(spec.columns, value(config.columns, +_.isVertical(true)));\n };\n return _;\n}\nfunction getEncoding(name, encode) {\n var v = encode && (encode.update && encode.update[name] || encode.enter && encode.enter[name]);\n return v && v.signal ? v : v ? v.value : null;\n}\nfunction getStyle(name, scope, style) {\n var s = scope.config.style[style];\n return s && s[name];\n}\nfunction anchorExpr(s, e, m) {\n return \"item.anchor === '\".concat(Start, \"' ? \").concat(s, \" : item.anchor === '\").concat(End, \"' ? \").concat(e, \" : \").concat(m);\n}\nvar alignExpr$1 = anchorExpr(stringValue(Left), stringValue(Right), stringValue(Center));\nfunction tickBand(_) {\n var v = _('tickBand');\n var offset = _('tickOffset'),\n band,\n extra;\n if (!v) {\n // if no tick band entry, fall back on other properties\n band = _('bandPosition');\n extra = _('tickExtra');\n } else if (v.signal) {\n // if signal, augment code to interpret values\n band = {\n signal: \"(\".concat(v.signal, \") === 'extent' ? 1 : 0.5\")\n };\n extra = {\n signal: \"(\".concat(v.signal, \") === 'extent'\")\n };\n if (!isObject(offset)) {\n offset = {\n signal: \"(\".concat(v.signal, \") === 'extent' ? 0 : \").concat(offset)\n };\n }\n } else if (v === 'extent') {\n // if constant, simply set values\n band = 1;\n extra = true;\n offset = 0;\n } else {\n band = 0.5;\n extra = false;\n }\n return {\n extra: extra,\n band: band,\n offset: offset\n };\n}\nfunction extendOffset(value, offset) {\n return !offset ? value : !value ? offset : !isObject(value) ? {\n value: value,\n offset: offset\n } : Object.assign({}, value, {\n offset: extendOffset(value.offset, offset)\n });\n}\nfunction guideMark(mark, extras) {\n if (extras) {\n mark.name = extras.name;\n mark.style = extras.style || mark.style;\n mark.interactive = !!extras.interactive;\n mark.encode = extendEncode(mark.encode, extras, Skip);\n } else {\n mark.interactive = false;\n }\n return mark;\n}\nfunction legendGradient(spec, scale, config, userEncode) {\n var _ = lookup(spec, config),\n vertical = _.isVertical(),\n thickness = _.gradientThickness(),\n length = _.gradientLength();\n var enter, start, stop, width, height;\n if (vertical) {\n start = [0, 1];\n stop = [0, 0];\n width = thickness;\n height = length;\n } else {\n start = [0, 0];\n stop = [1, 0];\n width = length;\n height = thickness;\n }\n var encode = {\n enter: enter = {\n opacity: zero,\n x: zero,\n y: zero,\n width: encoder(width),\n height: encoder(height)\n },\n update: extend({}, enter, {\n opacity: one,\n fill: {\n gradient: scale,\n start: start,\n stop: stop\n }\n }),\n exit: {\n opacity: zero\n }\n };\n addEncoders(encode, {\n stroke: _('gradientStrokeColor'),\n strokeWidth: _('gradientStrokeWidth')\n }, {\n // update\n opacity: _('gradientOpacity')\n });\n return guideMark({\n type: RectMark,\n role: LegendGradientRole,\n encode: encode\n }, userEncode);\n}\nfunction legendGradientDiscrete(spec, scale, config, userEncode, dataRef) {\n var _ = lookup(spec, config),\n vertical = _.isVertical(),\n thickness = _.gradientThickness(),\n length = _.gradientLength();\n var u,\n v,\n uu,\n vv,\n adjust = '';\n vertical ? (u = 'y', uu = 'y2', v = 'x', vv = 'width', adjust = '1-') : (u = 'x', uu = 'x2', v = 'y', vv = 'height');\n var enter = {\n opacity: zero,\n fill: {\n scale: scale,\n field: Value\n }\n };\n enter[u] = {\n signal: adjust + 'datum.' + Perc,\n mult: length\n };\n enter[v] = zero;\n enter[uu] = {\n signal: adjust + 'datum.' + Perc2,\n mult: length\n };\n enter[vv] = encoder(thickness);\n var encode = {\n enter: enter,\n update: extend({}, enter, {\n opacity: one\n }),\n exit: {\n opacity: zero\n }\n };\n addEncoders(encode, {\n stroke: _('gradientStrokeColor'),\n strokeWidth: _('gradientStrokeWidth')\n }, {\n // update\n opacity: _('gradientOpacity')\n });\n return guideMark({\n type: RectMark,\n role: LegendBandRole,\n key: Value,\n from: dataRef,\n encode: encode\n }, userEncode);\n}\nvar alignExpr = \"datum.\".concat(Perc, \"<=0?\\\"\").concat(Left, \"\\\":datum.\").concat(Perc, \">=1?\\\"\").concat(Right, \"\\\":\\\"\").concat(Center, \"\\\"\"),\n baselineExpr = \"datum.\".concat(Perc, \"<=0?\\\"\").concat(Bottom, \"\\\":datum.\").concat(Perc, \">=1?\\\"\").concat(Top, \"\\\":\\\"\").concat(Middle, \"\\\"\");\nfunction legendGradientLabels(spec, config, userEncode, dataRef) {\n var _ = lookup(spec, config),\n vertical = _.isVertical(),\n thickness = encoder(_.gradientThickness()),\n length = _.gradientLength();\n var overlap = _('labelOverlap'),\n enter,\n update,\n u,\n v,\n adjust = '';\n var encode = {\n enter: enter = {\n opacity: zero\n },\n update: update = {\n opacity: one,\n text: {\n field: Label\n }\n },\n exit: {\n opacity: zero\n }\n };\n addEncoders(encode, {\n fill: _('labelColor'),\n fillOpacity: _('labelOpacity'),\n font: _('labelFont'),\n fontSize: _('labelFontSize'),\n fontStyle: _('labelFontStyle'),\n fontWeight: _('labelFontWeight'),\n limit: value(spec.labelLimit, config.gradientLabelLimit)\n });\n if (vertical) {\n enter.align = {\n value: 'left'\n };\n enter.baseline = update.baseline = {\n signal: baselineExpr\n };\n u = 'y';\n v = 'x';\n adjust = '1-';\n } else {\n enter.align = update.align = {\n signal: alignExpr\n };\n enter.baseline = {\n value: 'top'\n };\n u = 'x';\n v = 'y';\n }\n enter[u] = update[u] = {\n signal: adjust + 'datum.' + Perc,\n mult: length\n };\n enter[v] = update[v] = thickness;\n thickness.offset = value(spec.labelOffset, config.gradientLabelOffset) || 0;\n overlap = overlap ? {\n separation: _('labelSeparation'),\n method: overlap,\n order: 'datum.' + Index\n } : undefined;\n\n // type, role, style, key, dataRef, encode, extras\n return guideMark({\n type: TextMark,\n role: LegendLabelRole,\n style: GuideLabelStyle,\n key: Value,\n from: dataRef,\n encode: encode,\n overlap: overlap\n }, userEncode);\n}\n\n// userEncode is top-level, includes entries, symbols, labels\nfunction legendSymbolGroups(spec, config, userEncode, dataRef, columns) {\n var _ = lookup(spec, config),\n entries = userEncode.entries,\n interactive = !!(entries && entries.interactive),\n name = entries ? entries.name : undefined,\n height = _('clipHeight'),\n symbolOffset = _('symbolOffset'),\n valueRef = {\n data: 'value'\n },\n xSignal = \"(\".concat(columns, \") ? datum.\").concat(Offset, \" : datum.\").concat(Size),\n yEncode = height ? encoder(height) : {\n field: Size\n },\n index = \"datum.\".concat(Index),\n ncols = \"max(1, \".concat(columns, \")\");\n var encode, enter, update, nrows, sort;\n yEncode.mult = 0.5;\n\n // -- LEGEND SYMBOLS --\n encode = {\n enter: enter = {\n opacity: zero,\n x: {\n signal: xSignal,\n mult: 0.5,\n offset: symbolOffset\n },\n y: yEncode\n },\n update: update = {\n opacity: one,\n x: enter.x,\n y: enter.y\n },\n exit: {\n opacity: zero\n }\n };\n var baseFill = null,\n baseStroke = null;\n if (!spec.fill) {\n baseFill = config.symbolBaseFillColor;\n baseStroke = config.symbolBaseStrokeColor;\n }\n addEncoders(encode, {\n fill: _('symbolFillColor', baseFill),\n shape: _('symbolType'),\n size: _('symbolSize'),\n stroke: _('symbolStrokeColor', baseStroke),\n strokeDash: _('symbolDash'),\n strokeDashOffset: _('symbolDashOffset'),\n strokeWidth: _('symbolStrokeWidth')\n }, {\n // update\n opacity: _('symbolOpacity')\n });\n LegendScales.forEach(function (scale) {\n if (spec[scale]) {\n update[scale] = enter[scale] = {\n scale: spec[scale],\n field: Value\n };\n }\n });\n var symbols = guideMark({\n type: SymbolMark,\n role: LegendSymbolRole,\n key: Value,\n from: valueRef,\n clip: height ? true : undefined,\n encode: encode\n }, userEncode.symbols);\n\n // -- LEGEND LABELS --\n var labelOffset = encoder(symbolOffset);\n labelOffset.offset = _('labelOffset');\n encode = {\n enter: enter = {\n opacity: zero,\n x: {\n signal: xSignal,\n offset: labelOffset\n },\n y: yEncode\n },\n update: update = {\n opacity: one,\n text: {\n field: Label\n },\n x: enter.x,\n y: enter.y\n },\n exit: {\n opacity: zero\n }\n };\n addEncoders(encode, {\n align: _('labelAlign'),\n baseline: _('labelBaseline'),\n fill: _('labelColor'),\n fillOpacity: _('labelOpacity'),\n font: _('labelFont'),\n fontSize: _('labelFontSize'),\n fontStyle: _('labelFontStyle'),\n fontWeight: _('labelFontWeight'),\n limit: _('labelLimit')\n });\n var labels = guideMark({\n type: TextMark,\n role: LegendLabelRole,\n style: GuideLabelStyle,\n key: Value,\n from: valueRef,\n encode: encode\n }, userEncode.labels);\n\n // -- LEGEND ENTRY GROUPS --\n encode = {\n enter: {\n noBound: {\n value: !height\n },\n // ignore width/height in bounds calc\n width: zero,\n height: height ? encoder(height) : zero,\n opacity: zero\n },\n exit: {\n opacity: zero\n },\n update: update = {\n opacity: one,\n row: {\n signal: null\n },\n column: {\n signal: null\n }\n }\n };\n\n // annotate and sort groups to ensure correct ordering\n if (_.isVertical(true)) {\n nrows = \"ceil(item.mark.items.length / \".concat(ncols, \")\");\n update.row.signal = \"\".concat(index, \"%\").concat(nrows);\n update.column.signal = \"floor(\".concat(index, \" / \").concat(nrows, \")\");\n sort = {\n field: ['row', index]\n };\n } else {\n update.row.signal = \"floor(\".concat(index, \" / \").concat(ncols, \")\");\n update.column.signal = \"\".concat(index, \" % \").concat(ncols);\n sort = {\n field: index\n };\n }\n // handle zero column case (implies infinite columns)\n update.column.signal = \"(\".concat(columns, \")?\").concat(update.column.signal, \":\").concat(index);\n\n // facet legend entries into sub-groups\n dataRef = {\n facet: {\n data: dataRef,\n name: 'value',\n groupby: Index\n }\n };\n return guideGroup({\n role: ScopeRole,\n from: dataRef,\n encode: extendEncode(encode, entries, Skip),\n marks: [symbols, labels],\n name: name,\n interactive: interactive,\n sort: sort\n });\n}\nfunction legendSymbolLayout(spec, config) {\n var _ = lookup(spec, config);\n\n // layout parameters for legend entries\n return {\n align: _('gridAlign'),\n columns: _.entryColumns(),\n center: {\n row: true,\n column: false\n },\n padding: {\n row: _('rowPadding'),\n column: _('columnPadding')\n }\n };\n}\n\n// expression logic for align, anchor, angle, and baseline calculation\nvar isL = 'item.orient === \"left\"',\n isR = 'item.orient === \"right\"',\n isLR = \"(\".concat(isL, \" || \").concat(isR, \")\"),\n isVG = \"datum.vgrad && \".concat(isLR),\n baseline = anchorExpr('\"top\"', '\"bottom\"', '\"middle\"'),\n alignFlip = anchorExpr('\"right\"', '\"left\"', '\"center\"'),\n exprAlign = \"datum.vgrad && \".concat(isR, \" ? (\").concat(alignFlip, \") : (\").concat(isLR, \" && !(datum.vgrad && \").concat(isL, \")) ? \\\"left\\\" : \").concat(alignExpr$1),\n exprAnchor = \"item._anchor || (\".concat(isLR, \" ? \\\"middle\\\" : \\\"start\\\")\"),\n exprAngle = \"\".concat(isVG, \" ? (\").concat(isL, \" ? -90 : 90) : 0\"),\n exprBaseline = \"\".concat(isLR, \" ? (datum.vgrad ? (\").concat(isR, \" ? \\\"bottom\\\" : \\\"top\\\") : \").concat(baseline, \") : \\\"top\\\"\");\nfunction legendTitle(spec, config, userEncode, dataRef) {\n var _ = lookup(spec, config);\n var encode = {\n enter: {\n opacity: zero\n },\n update: {\n opacity: one,\n x: {\n field: {\n group: 'padding'\n }\n },\n y: {\n field: {\n group: 'padding'\n }\n }\n },\n exit: {\n opacity: zero\n }\n };\n addEncoders(encode, {\n orient: _('titleOrient'),\n _anchor: _('titleAnchor'),\n anchor: {\n signal: exprAnchor\n },\n angle: {\n signal: exprAngle\n },\n align: {\n signal: exprAlign\n },\n baseline: {\n signal: exprBaseline\n },\n text: spec.title,\n fill: _('titleColor'),\n fillOpacity: _('titleOpacity'),\n font: _('titleFont'),\n fontSize: _('titleFontSize'),\n fontStyle: _('titleFontStyle'),\n fontWeight: _('titleFontWeight'),\n limit: _('titleLimit'),\n lineHeight: _('titleLineHeight')\n }, {\n // require update\n align: _('titleAlign'),\n baseline: _('titleBaseline')\n });\n return guideMark({\n type: TextMark,\n role: LegendTitleRole,\n style: GuideTitleStyle,\n from: dataRef,\n encode: encode\n }, userEncode);\n}\nfunction clip(clip, scope) {\n var expr;\n if (isObject(clip)) {\n if (clip.signal) {\n expr = clip.signal;\n } else if (clip.path) {\n expr = 'pathShape(' + param(clip.path) + ')';\n } else if (clip.sphere) {\n expr = 'geoShape(' + param(clip.sphere) + ', {type: \"Sphere\"})';\n }\n }\n return expr ? scope.signalRef(expr) : !!clip;\n}\nfunction param(value) {\n return isObject(value) && value.signal ? value.signal : stringValue(value);\n}\nfunction getRole(spec) {\n var role = spec.role || '';\n return !role.indexOf('axis') || !role.indexOf('legend') || !role.indexOf('title') ? role : spec.type === GroupMark ? ScopeRole : role || MarkRole;\n}\nfunction definition(spec) {\n return {\n marktype: spec.type,\n name: spec.name || undefined,\n role: spec.role || getRole(spec),\n zindex: +spec.zindex || undefined,\n aria: spec.aria,\n description: spec.description\n };\n}\nfunction interactive(spec, scope) {\n return spec && spec.signal ? scope.signalRef(spec.signal) : spec === false ? false : true;\n}\n\n/**\n * Parse a data transform specification.\n */\nfunction parseTransform(spec, scope) {\n var def = definition$1(spec.type);\n if (!def) error('Unrecognized transform type: ' + stringValue(spec.type));\n var t = entry(def.type.toLowerCase(), null, parseParameters(def, spec, scope));\n if (spec.signal) scope.addSignal(spec.signal, scope.proxy(t));\n t.metadata = def.metadata || {};\n return t;\n}\n\n/**\n * Parse all parameters of a data transform.\n */\nfunction parseParameters(def, spec, scope) {\n var params = {},\n n = def.params.length;\n for (var i = 0; i < n; ++i) {\n var pdef = def.params[i];\n params[pdef.name] = parseParameter(pdef, spec, scope);\n }\n return params;\n}\n\n/**\n * Parse a data transform parameter.\n */\nfunction parseParameter(def, spec, scope) {\n var type = def.type,\n value = spec[def.name];\n if (type === 'index') {\n return parseIndexParameter(def, spec, scope);\n } else if (value === undefined) {\n if (def.required) {\n error('Missing required ' + stringValue(spec.type) + ' parameter: ' + stringValue(def.name));\n }\n return;\n } else if (type === 'param') {\n return parseSubParameters(def, spec, scope);\n } else if (type === 'projection') {\n return scope.projectionRef(spec[def.name]);\n }\n return def.array && !isSignal(value) ? value.map(function (v) {\n return parameterValue(def, v, scope);\n }) : parameterValue(def, value, scope);\n}\n\n/**\n * Parse a single parameter value.\n */\nfunction parameterValue(def, value, scope) {\n var type = def.type;\n if (isSignal(value)) {\n return isExpr(type) ? error('Expression references can not be signals.') : isField(type) ? scope.fieldRef(value) : isCompare(type) ? scope.compareRef(value) : scope.signalRef(value.signal);\n } else {\n var _expr = def.expr || isField(type);\n return _expr && outerExpr(value) ? scope.exprRef(value.expr, value.as) : _expr && outerField(value) ? fieldRef$1(value.field, value.as) : isExpr(type) ? parseExpression(value, scope) : isData(type) ? ref(scope.getData(value).values) : isField(type) ? fieldRef$1(value) : isCompare(type) ? scope.compareRef(value) : value;\n }\n}\n\n/**\n * Parse parameter for accessing an index of another data set.\n */\nfunction parseIndexParameter(def, spec, scope) {\n if (!isString(spec.from)) {\n error('Lookup \"from\" parameter must be a string literal.');\n }\n return scope.getData(spec.from).lookupRef(scope, spec.key);\n}\n\n/**\n * Parse a parameter that contains one or more sub-parameter objects.\n */\nfunction parseSubParameters(def, spec, scope) {\n var value = spec[def.name];\n if (def.array) {\n if (!isArray(value)) {\n // signals not allowed!\n error('Expected an array of sub-parameters. Instead: ' + stringValue(value));\n }\n return value.map(function (v) {\n return parseSubParameter(def, v, scope);\n });\n } else {\n return parseSubParameter(def, value, scope);\n }\n}\n\n/**\n * Parse a sub-parameter object.\n */\nfunction parseSubParameter(def, value, scope) {\n var n = def.params.length;\n var pdef;\n\n // loop over defs to find matching key\n for (var i = 0; i < n; ++i) {\n pdef = def.params[i];\n for (var k in pdef.key) {\n if (pdef.key[k] !== value[k]) {\n pdef = null;\n break;\n }\n }\n if (pdef) break;\n }\n // raise error if matching key not found\n if (!pdef) error('Unsupported parameter: ' + stringValue(value));\n\n // parse params, create Params transform, return ref\n var params = extend(parseParameters(pdef, value, scope), pdef.key);\n return ref(scope.add(Params(params)));\n}\n\n// -- Utilities -----\n\nvar outerExpr = function outerExpr(_) {\n return _ && _.expr;\n};\nvar outerField = function outerField(_) {\n return _ && _.field;\n};\nvar isData = function isData(_) {\n return _ === 'data';\n};\nvar isExpr = function isExpr(_) {\n return _ === 'expr';\n};\nvar isField = function isField(_) {\n return _ === 'field';\n};\nvar isCompare = function isCompare(_) {\n return _ === 'compare';\n};\nfunction parseData$1(from, group, scope) {\n var facet, key, op, dataRef, parent;\n\n // if no source data, generate singleton datum\n if (!from) {\n dataRef = ref(scope.add(Collect(null, [{}])));\n }\n\n // if faceted, process facet specification\n else if (facet = from.facet) {\n if (!group) error('Only group marks can be faceted.');\n\n // use pre-faceted source data, if available\n if (facet.field != null) {\n dataRef = parent = getDataRef(facet, scope);\n } else {\n // generate facet aggregates if no direct data specification\n if (!from.data) {\n op = parseTransform(extend({\n type: 'aggregate',\n groupby: array(facet.groupby)\n }, facet.aggregate), scope);\n op.params.key = scope.keyRef(facet.groupby);\n op.params.pulse = getDataRef(facet, scope);\n dataRef = parent = ref(scope.add(op));\n } else {\n parent = ref(scope.getData(from.data).aggregate);\n }\n key = scope.keyRef(facet.groupby, true);\n }\n }\n\n // if not yet defined, get source data reference\n if (!dataRef) {\n dataRef = getDataRef(from, scope);\n }\n return {\n key: key,\n pulse: dataRef,\n parent: parent\n };\n}\nfunction getDataRef(from, scope) {\n return from.$ref ? from : from.data && from.data.$ref ? from.data : ref(scope.getData(from.data).output);\n}\nfunction DataScope(scope, input, output, values, aggr) {\n this.scope = scope; // parent scope object\n this.input = input; // first operator in pipeline (tuple input)\n this.output = output; // last operator in pipeline (tuple output)\n this.values = values; // operator for accessing tuples (but not tuple flow)\n\n // last aggregate in transform pipeline\n this.aggregate = aggr;\n\n // lookup table of field indices\n this.index = {};\n}\nDataScope.fromEntries = function (scope, entries) {\n var n = entries.length,\n values = entries[n - 1],\n output = entries[n - 2];\n var input = entries[0],\n aggr = null,\n i = 1;\n if (input && input.type === 'load') {\n input = entries[1];\n }\n\n // add operator entries to this scope, wire up pulse chain\n scope.add(entries[0]);\n for (; i < n; ++i) {\n entries[i].params.pulse = ref(entries[i - 1]);\n scope.add(entries[i]);\n if (entries[i].type === 'aggregate') aggr = entries[i];\n }\n return new DataScope(scope, input, output, values, aggr);\n};\nfunction fieldKey(field) {\n return isString(field) ? field : null;\n}\nfunction addSortField(scope, p, sort) {\n var as = aggrField(sort.op, sort.field);\n var s;\n if (p.ops) {\n for (var i = 0, n = p.as.length; i < n; ++i) {\n if (p.as[i] === as) return;\n }\n } else {\n p.ops = ['count'];\n p.fields = [null];\n p.as = ['count'];\n }\n if (sort.op) {\n p.ops.push((s = sort.op.signal) ? scope.signalRef(s) : sort.op);\n p.fields.push(scope.fieldRef(sort.field));\n p.as.push(as);\n }\n}\nfunction cache(scope, ds, name, optype, field, counts, index) {\n var cache = ds[name] || (ds[name] = {}),\n sort = sortKey(counts);\n var k = fieldKey(field),\n v,\n op;\n if (k != null) {\n scope = ds.scope;\n k = k + (sort ? '|' + sort : '');\n v = cache[k];\n }\n if (!v) {\n var params = counts ? {\n field: keyFieldRef,\n pulse: ds.countsRef(scope, field, counts)\n } : {\n field: scope.fieldRef(field),\n pulse: ref(ds.output)\n };\n if (sort) params.sort = scope.sortRef(counts);\n op = scope.add(entry(optype, undefined, params));\n if (index) ds.index[field] = op;\n v = ref(op);\n if (k != null) cache[k] = v;\n }\n return v;\n}\nDataScope.prototype = {\n countsRef: function countsRef(scope, field, sort) {\n var ds = this,\n cache = ds.counts || (ds.counts = {}),\n k = fieldKey(field);\n var v, a, p;\n if (k != null) {\n scope = ds.scope;\n v = cache[k];\n }\n if (!v) {\n p = {\n groupby: scope.fieldRef(field, 'key'),\n pulse: ref(ds.output)\n };\n if (sort && sort.field) addSortField(scope, p, sort);\n a = scope.add(Aggregate(p));\n v = scope.add(Collect({\n pulse: ref(a)\n }));\n v = {\n agg: a,\n ref: ref(v)\n };\n if (k != null) cache[k] = v;\n } else if (sort && sort.field) {\n addSortField(scope, v.agg.params, sort);\n }\n return v.ref;\n },\n tuplesRef: function tuplesRef() {\n return ref(this.values);\n },\n extentRef: function extentRef(scope, field) {\n return cache(scope, this, 'extent', 'extent', field, false);\n },\n domainRef: function domainRef(scope, field) {\n return cache(scope, this, 'domain', 'values', field, false);\n },\n valuesRef: function valuesRef(scope, field, sort) {\n return cache(scope, this, 'vals', 'values', field, sort || true);\n },\n lookupRef: function lookupRef(scope, field) {\n return cache(scope, this, 'lookup', 'tupleindex', field, false);\n },\n indataRef: function indataRef(scope, field) {\n return cache(scope, this, 'indata', 'tupleindex', field, true, true);\n }\n};\nfunction parseFacet(spec, scope, group) {\n var facet = spec.from.facet,\n name = facet.name,\n data = getDataRef(facet, scope);\n var op;\n if (!facet.name) {\n error('Facet must have a name: ' + stringValue(facet));\n }\n if (!facet.data) {\n error('Facet must reference a data set: ' + stringValue(facet));\n }\n if (facet.field) {\n op = scope.add(PreFacet({\n field: scope.fieldRef(facet.field),\n pulse: data\n }));\n } else if (facet.groupby) {\n op = scope.add(Facet({\n key: scope.keyRef(facet.groupby),\n group: ref(scope.proxy(group.parent)),\n pulse: data\n }));\n } else {\n error('Facet must specify groupby or field: ' + stringValue(facet));\n }\n\n // initialize facet subscope\n var subscope = scope.fork(),\n source = subscope.add(Collect()),\n values = subscope.add(Sieve({\n pulse: ref(source)\n }));\n subscope.addData(name, new DataScope(subscope, source, source, values));\n subscope.addSignal('parent', null);\n\n // parse faceted subflow\n op.params.subflow = {\n $subflow: subscope.parse(spec).toRuntime()\n };\n}\nfunction parseSubflow(spec, scope, input) {\n var op = scope.add(PreFacet({\n pulse: input.pulse\n })),\n subscope = scope.fork();\n subscope.add(Sieve());\n subscope.addSignal('parent', null);\n\n // parse group mark subflow\n op.params.subflow = {\n $subflow: subscope.parse(spec).toRuntime()\n };\n}\nfunction parseTrigger(spec, scope, name) {\n var remove = spec.remove,\n insert = spec.insert,\n toggle = spec.toggle,\n modify = spec.modify,\n values = spec.values,\n op = scope.add(operator());\n var update = 'if(' + spec.trigger + ',modify(\"' + name + '\",' + [insert, remove, toggle, modify, values].map(function (_) {\n return _ == null ? 'null' : _;\n }).join(',') + '),0)';\n var expr = parseExpression(update, scope);\n op.update = expr.$expr;\n op.params = expr.$params;\n}\nfunction parseMark(spec, scope) {\n var role = getRole(spec),\n group = spec.type === GroupMark,\n facet = spec.from && spec.from.facet,\n overlap = spec.overlap;\n var layout = spec.layout || role === ScopeRole || role === FrameRole,\n ops,\n op,\n store,\n enc,\n name,\n layoutRef,\n boundRef;\n var nested = role === MarkRole || layout || facet;\n\n // resolve input data\n var input = parseData$1(spec.from, group, scope);\n\n // data join to map tuples to visual items\n op = scope.add(DataJoin({\n key: input.key || (spec.key ? fieldRef$1(spec.key) : undefined),\n pulse: input.pulse,\n clean: !group\n }));\n var joinRef = ref(op);\n\n // collect visual items\n op = store = scope.add(Collect({\n pulse: joinRef\n }));\n\n // connect visual items to scenegraph\n op = scope.add(Mark({\n markdef: definition(spec),\n interactive: interactive(spec.interactive, scope),\n clip: clip(spec.clip, scope),\n context: {\n $context: true\n },\n groups: scope.lookup(),\n parent: scope.signals.parent ? scope.signalRef('parent') : null,\n index: scope.markpath(),\n pulse: ref(op)\n }));\n var markRef = ref(op);\n\n // add visual encoders\n op = enc = scope.add(Encode(parseEncode(spec.encode, spec.type, role, spec.style, scope, {\n mod: false,\n pulse: markRef\n })));\n\n // monitor parent marks to propagate changes\n op.params.parent = scope.encode();\n\n // add post-encoding transforms, if defined\n if (spec.transform) {\n spec.transform.forEach(function (_) {\n var tx = parseTransform(_, scope),\n md = tx.metadata;\n if (md.generates || md.changes) {\n error('Mark transforms should not generate new data.');\n }\n if (!md.nomod) enc.params.mod = true; // update encode mod handling\n tx.params.pulse = ref(op);\n scope.add(op = tx);\n });\n }\n\n // if item sort specified, perform post-encoding\n if (spec.sort) {\n op = scope.add(SortItems({\n sort: scope.compareRef(spec.sort),\n pulse: ref(op)\n }));\n }\n var encodeRef = ref(op);\n\n // add view layout operator if needed\n if (facet || layout) {\n layout = scope.add(ViewLayout({\n layout: scope.objectProperty(spec.layout),\n legends: scope.legends,\n mark: markRef,\n pulse: encodeRef\n }));\n layoutRef = ref(layout);\n }\n\n // compute bounding boxes\n var bound = scope.add(Bound({\n mark: markRef,\n pulse: layoutRef || encodeRef\n }));\n boundRef = ref(bound);\n\n // if group mark, recurse to parse nested content\n if (group) {\n // juggle layout & bounds to ensure they run *after* any faceting transforms\n if (nested) {\n ops = scope.operators;\n ops.pop();\n if (layout) ops.pop();\n }\n scope.pushState(encodeRef, layoutRef || boundRef, joinRef);\n facet ? parseFacet(spec, scope, input) // explicit facet\n : nested ? parseSubflow(spec, scope, input) // standard mark group\n : scope.parse(spec); // guide group, we can avoid nested scopes\n scope.popState();\n if (nested) {\n if (layout) ops.push(layout);\n ops.push(bound);\n }\n }\n\n // if requested, add overlap removal transform\n if (overlap) {\n boundRef = parseOverlap(overlap, boundRef, scope);\n }\n\n // render / sieve items\n var render = scope.add(Render({\n pulse: boundRef\n })),\n sieve = scope.add(Sieve({\n pulse: ref(render)\n }, undefined, scope.parent()));\n\n // if mark is named, make accessible as reactive geometry\n // add trigger updates if defined\n if (spec.name != null) {\n name = spec.name;\n scope.addData(name, new DataScope(scope, store, render, sieve));\n if (spec.on) spec.on.forEach(function (on) {\n if (on.insert || on.remove || on.toggle) {\n error('Marks only support modify triggers.');\n }\n parseTrigger(on, scope, name);\n });\n }\n}\nfunction parseOverlap(overlap, source, scope) {\n var method = overlap.method,\n bound = overlap.bound,\n sep = overlap.separation;\n var params = {\n separation: isSignal(sep) ? scope.signalRef(sep.signal) : sep,\n method: isSignal(method) ? scope.signalRef(method.signal) : method,\n pulse: source\n };\n if (overlap.order) {\n params.sort = scope.compareRef({\n field: overlap.order\n });\n }\n if (bound) {\n var tol = bound.tolerance;\n params.boundTolerance = isSignal(tol) ? scope.signalRef(tol.signal) : +tol;\n params.boundScale = scope.scaleRef(bound.scale);\n params.boundOrient = bound.orient;\n }\n return ref(scope.add(Overlap(params)));\n}\nfunction parseLegend(spec, scope) {\n var config = scope.config.legend,\n encode = spec.encode || {},\n _ = lookup(spec, config),\n legendEncode = encode.legend || {},\n name = legendEncode.name || undefined,\n interactive = legendEncode.interactive,\n style = legendEncode.style,\n scales = {};\n var scale = 0,\n entryLayout,\n params,\n children;\n\n // resolve scales and 'canonical' scale name\n LegendScales.forEach(function (s) {\n return spec[s] ? (scales[s] = spec[s], scale = scale || spec[s]) : 0;\n });\n if (!scale) error('Missing valid scale for legend.');\n\n // resolve legend type (symbol, gradient, or discrete gradient)\n var type = legendType(spec, scope.scaleType(scale));\n\n // single-element data source for legend group\n var datum = {\n title: spec.title != null,\n scales: scales,\n type: type,\n vgrad: type !== 'symbol' && _.isVertical()\n };\n var dataRef = ref(scope.add(Collect(null, [datum])));\n\n // encoding properties for legend entry sub-group\n var entryEncode = {\n enter: {\n x: {\n value: 0\n },\n y: {\n value: 0\n }\n }\n };\n\n // data source for legend values\n var entryRef = ref(scope.add(LegendEntries(params = {\n type: type,\n scale: scope.scaleRef(scale),\n count: scope.objectProperty(_('tickCount')),\n limit: scope.property(_('symbolLimit')),\n values: scope.objectProperty(spec.values),\n minstep: scope.property(spec.tickMinStep),\n formatType: scope.property(spec.formatType),\n formatSpecifier: scope.property(spec.format)\n })));\n\n // continuous gradient legend\n if (type === Gradient) {\n children = [legendGradient(spec, scale, config, encode.gradient), legendGradientLabels(spec, config, encode.labels, entryRef)];\n // adjust default tick count based on the gradient length\n params.count = params.count || scope.signalRef(\"max(2,2*floor((\".concat(deref(_.gradientLength()), \")/100))\"));\n }\n\n // discrete gradient legend\n else if (type === Discrete) {\n children = [legendGradientDiscrete(spec, scale, config, encode.gradient, entryRef), legendGradientLabels(spec, config, encode.labels, entryRef)];\n }\n\n // symbol legend\n else {\n // determine legend symbol group layout\n entryLayout = legendSymbolLayout(spec, config);\n children = [legendSymbolGroups(spec, config, encode, entryRef, deref(entryLayout.columns))];\n // pass symbol size information to legend entry generator\n params.size = sizeExpression(spec, scope, children[0].marks);\n }\n\n // generate legend marks\n children = [guideGroup({\n role: LegendEntryRole,\n from: dataRef,\n encode: entryEncode,\n marks: children,\n layout: entryLayout,\n interactive: interactive\n })];\n\n // include legend title if defined\n if (datum.title) {\n children.push(legendTitle(spec, config, encode.title, dataRef));\n }\n\n // parse legend specification\n return parseMark(guideGroup({\n role: LegendRole,\n from: dataRef,\n encode: extendEncode(buildLegendEncode(_, spec, config), legendEncode, Skip),\n marks: children,\n aria: _('aria'),\n description: _('description'),\n zindex: _('zindex'),\n name: name,\n interactive: interactive,\n style: style\n }), scope);\n}\nfunction legendType(spec, scaleType) {\n var type = spec.type || Symbols;\n if (!spec.type && scaleCount(spec) === 1 && (spec.fill || spec.stroke)) {\n type = isContinuous(scaleType) ? Gradient : isDiscretizing(scaleType) ? Discrete : Symbols;\n }\n return type !== Gradient ? type : isDiscretizing(scaleType) ? Discrete : Gradient;\n}\nfunction scaleCount(spec) {\n return LegendScales.reduce(function (count, type) {\n return count + (spec[type] ? 1 : 0);\n }, 0);\n}\nfunction buildLegendEncode(_, spec, config) {\n var encode = {\n enter: {},\n update: {}\n };\n addEncoders(encode, {\n orient: _('orient'),\n offset: _('offset'),\n padding: _('padding'),\n titlePadding: _('titlePadding'),\n cornerRadius: _('cornerRadius'),\n fill: _('fillColor'),\n stroke: _('strokeColor'),\n strokeWidth: config.strokeWidth,\n strokeDash: config.strokeDash,\n x: _('legendX'),\n y: _('legendY'),\n // accessibility support\n format: spec.format,\n formatType: spec.formatType\n });\n return encode;\n}\nfunction sizeExpression(spec, scope, marks) {\n var size = deref(getChannel('size', spec, marks)),\n strokeWidth = deref(getChannel('strokeWidth', spec, marks)),\n fontSize = deref(getFontSize(marks[1].encode, scope, GuideLabelStyle));\n return parseExpression(\"max(ceil(sqrt(\".concat(size, \")+\").concat(strokeWidth, \"),\").concat(fontSize, \")\"), scope);\n}\nfunction getChannel(name, spec, marks) {\n return spec[name] ? \"scale(\\\"\".concat(spec[name], \"\\\",datum)\") : getEncoding(name, marks[0].encode);\n}\nfunction getFontSize(encode, scope, style) {\n return getEncoding('fontSize', encode) || getStyle('fontSize', scope, style);\n}\nvar angleExpr = \"item.orient===\\\"\".concat(Left, \"\\\"?-90:item.orient===\\\"\").concat(Right, \"\\\"?90:0\");\nfunction parseTitle(spec, scope) {\n spec = isString(spec) ? {\n text: spec\n } : spec;\n var _ = lookup(spec, scope.config.title),\n encode = spec.encode || {},\n userEncode = encode.group || {},\n name = userEncode.name || undefined,\n interactive = userEncode.interactive,\n style = userEncode.style,\n children = [];\n\n // single-element data source for group title\n var datum = {},\n dataRef = ref(scope.add(Collect(null, [datum])));\n\n // include title text\n children.push(buildTitle(spec, _, titleEncode(spec), dataRef));\n\n // include subtitle text\n if (spec.subtitle) {\n children.push(buildSubTitle(spec, _, encode.subtitle, dataRef));\n }\n\n // parse title specification\n return parseMark(guideGroup({\n role: TitleRole,\n from: dataRef,\n encode: groupEncode(_, userEncode),\n marks: children,\n aria: _('aria'),\n description: _('description'),\n zindex: _('zindex'),\n name: name,\n interactive: interactive,\n style: style\n }), scope);\n}\n\n// provide backwards-compatibility for title custom encode;\n// the top-level encode block has been *deprecated*.\nfunction titleEncode(spec) {\n var encode = spec.encode;\n return encode && encode.title || extend({\n name: spec.name,\n interactive: spec.interactive,\n style: spec.style\n }, encode);\n}\nfunction groupEncode(_, userEncode) {\n var encode = {\n enter: {},\n update: {}\n };\n addEncoders(encode, {\n orient: _('orient'),\n anchor: _('anchor'),\n align: {\n signal: alignExpr$1\n },\n angle: {\n signal: angleExpr\n },\n limit: _('limit'),\n frame: _('frame'),\n offset: _('offset') || 0,\n padding: _('subtitlePadding')\n });\n return extendEncode(encode, userEncode, Skip);\n}\nfunction buildTitle(spec, _, userEncode, dataRef) {\n var zero = {\n value: 0\n },\n text = spec.text,\n encode = {\n enter: {\n opacity: zero\n },\n update: {\n opacity: {\n value: 1\n }\n },\n exit: {\n opacity: zero\n }\n };\n addEncoders(encode, {\n text: text,\n align: {\n signal: 'item.mark.group.align'\n },\n angle: {\n signal: 'item.mark.group.angle'\n },\n limit: {\n signal: 'item.mark.group.limit'\n },\n baseline: 'top',\n dx: _('dx'),\n dy: _('dy'),\n fill: _('color'),\n font: _('font'),\n fontSize: _('fontSize'),\n fontStyle: _('fontStyle'),\n fontWeight: _('fontWeight'),\n lineHeight: _('lineHeight')\n }, {\n // update\n align: _('align'),\n angle: _('angle'),\n baseline: _('baseline')\n });\n return guideMark({\n type: TextMark,\n role: TitleTextRole,\n style: GroupTitleStyle,\n from: dataRef,\n encode: encode\n }, userEncode);\n}\nfunction buildSubTitle(spec, _, userEncode, dataRef) {\n var zero = {\n value: 0\n },\n text = spec.subtitle,\n encode = {\n enter: {\n opacity: zero\n },\n update: {\n opacity: {\n value: 1\n }\n },\n exit: {\n opacity: zero\n }\n };\n addEncoders(encode, {\n text: text,\n align: {\n signal: 'item.mark.group.align'\n },\n angle: {\n signal: 'item.mark.group.angle'\n },\n limit: {\n signal: 'item.mark.group.limit'\n },\n baseline: 'top',\n dx: _('dx'),\n dy: _('dy'),\n fill: _('subtitleColor'),\n font: _('subtitleFont'),\n fontSize: _('subtitleFontSize'),\n fontStyle: _('subtitleFontStyle'),\n fontWeight: _('subtitleFontWeight'),\n lineHeight: _('subtitleLineHeight')\n }, {\n // update\n align: _('align'),\n angle: _('angle'),\n baseline: _('baseline')\n });\n return guideMark({\n type: TextMark,\n role: TitleSubtitleRole,\n style: GroupSubtitleStyle,\n from: dataRef,\n encode: encode\n }, userEncode);\n}\nfunction parseData(data, scope) {\n var transforms = [];\n if (data.transform) {\n data.transform.forEach(function (tx) {\n transforms.push(parseTransform(tx, scope));\n });\n }\n if (data.on) {\n data.on.forEach(function (on) {\n parseTrigger(on, scope, data.name);\n });\n }\n scope.addDataPipeline(data.name, analyze(data, scope, transforms));\n}\n\n/**\n * Analyze a data pipeline, add needed operators.\n */\nfunction analyze(data, scope, ops) {\n var output = [];\n var source = null,\n modify = false,\n generate = false,\n upstream,\n i,\n n,\n t,\n m;\n if (data.values) {\n // hard-wired input data set\n if (isSignal(data.values) || hasSignal(data.format)) {\n // if either values is signal or format has signal, use dynamic loader\n output.push(load(scope, data));\n output.push(source = collect());\n } else {\n // otherwise, ingest upon dataflow init\n output.push(source = collect({\n $ingest: data.values,\n $format: data.format\n }));\n }\n } else if (data.url) {\n // load data from external source\n if (hasSignal(data.url) || hasSignal(data.format)) {\n // if either url or format has signal, use dynamic loader\n output.push(load(scope, data));\n output.push(source = collect());\n } else {\n // otherwise, request load upon dataflow init\n output.push(source = collect({\n $request: data.url,\n $format: data.format\n }));\n }\n } else if (data.source) {\n // derives from one or more other data sets\n source = upstream = array(data.source).map(function (d) {\n return ref(scope.getData(d).output);\n });\n output.push(null); // populate later\n }\n\n // scan data transforms, add collectors as needed\n for (i = 0, n = ops.length; i < n; ++i) {\n t = ops[i];\n m = t.metadata;\n if (!source && !m.source) {\n output.push(source = collect());\n }\n output.push(t);\n if (m.generates) generate = true;\n if (m.modifies && !generate) modify = true;\n if (m.source) source = t;else if (m.changes) source = null;\n }\n if (upstream) {\n n = upstream.length - 1;\n output[0] = Relay({\n derive: modify,\n pulse: n ? upstream : upstream[0]\n });\n if (modify || n) {\n // collect derived and multi-pulse tuples\n output.splice(1, 0, collect());\n }\n }\n if (!source) output.push(collect());\n output.push(Sieve({}));\n return output;\n}\nfunction collect(values) {\n var s = Collect({}, values);\n s.metadata = {\n source: true\n };\n return s;\n}\nfunction load(scope, data) {\n return Load({\n url: data.url ? scope.property(data.url) : undefined,\n async: data.async ? scope.property(data.async) : undefined,\n values: data.values ? scope.property(data.values) : undefined,\n format: scope.objectProperty(data.format)\n });\n}\nvar isX = function isX(orient) {\n return orient === Bottom || orient === Top;\n};\n\n// get sign coefficient based on axis orient\nvar getSign = function getSign(orient, a, b) {\n return isSignal(orient) ? ifLeftTopExpr(orient.signal, a, b) : orient === Left || orient === Top ? a : b;\n};\n\n// condition on axis x-direction\nvar ifX = function ifX(orient, a, b) {\n return isSignal(orient) ? ifXEnc(orient.signal, a, b) : isX(orient) ? a : b;\n};\n\n// condition on axis y-direction\nvar ifY = function ifY(orient, a, b) {\n return isSignal(orient) ? ifYEnc(orient.signal, a, b) : isX(orient) ? b : a;\n};\nvar ifTop = function ifTop(orient, a, b) {\n return isSignal(orient) ? ifTopExpr(orient.signal, a, b) : orient === Top ? {\n value: a\n } : {\n value: b\n };\n};\nvar ifRight = function ifRight(orient, a, b) {\n return isSignal(orient) ? ifRightExpr(orient.signal, a, b) : orient === Right ? {\n value: a\n } : {\n value: b\n };\n};\nvar ifXEnc = function ifXEnc($orient, a, b) {\n return ifEnc(\"\".concat($orient, \" === '\").concat(Top, \"' || \").concat($orient, \" === '\").concat(Bottom, \"'\"), a, b);\n};\nvar ifYEnc = function ifYEnc($orient, a, b) {\n return ifEnc(\"\".concat($orient, \" !== '\").concat(Top, \"' && \").concat($orient, \" !== '\").concat(Bottom, \"'\"), a, b);\n};\nvar ifLeftTopExpr = function ifLeftTopExpr($orient, a, b) {\n return ifExpr(\"\".concat($orient, \" === '\").concat(Left, \"' || \").concat($orient, \" === '\").concat(Top, \"'\"), a, b);\n};\nvar ifTopExpr = function ifTopExpr($orient, a, b) {\n return ifExpr(\"\".concat($orient, \" === '\").concat(Top, \"'\"), a, b);\n};\nvar ifRightExpr = function ifRightExpr($orient, a, b) {\n return ifExpr(\"\".concat($orient, \" === '\").concat(Right, \"'\"), a, b);\n};\nvar ifEnc = function ifEnc(test, a, b) {\n // ensure inputs are encoder objects (or null)\n a = a != null ? encoder(a) : a;\n b = b != null ? encoder(b) : b;\n if (isSimple(a) && isSimple(b)) {\n // if possible generate simple signal expression\n a = a ? a.signal || stringValue(a.value) : null;\n b = b ? b.signal || stringValue(b.value) : null;\n return {\n signal: \"\".concat(test, \" ? (\").concat(a, \") : (\").concat(b, \")\")\n };\n } else {\n // otherwise generate rule set\n return [extend({\n test: test\n }, a)].concat(b || []);\n }\n};\nvar isSimple = function isSimple(enc) {\n return enc == null || Object.keys(enc).length === 1;\n};\nvar ifExpr = function ifExpr(test, a, b) {\n return {\n signal: \"\".concat(test, \" ? (\").concat(toExpr(a), \") : (\").concat(toExpr(b), \")\")\n };\n};\nvar ifOrient = function ifOrient($orient, t, b, l, r) {\n return {\n signal: (l != null ? \"\".concat($orient, \" === '\").concat(Left, \"' ? (\").concat(toExpr(l), \") : \") : '') + (b != null ? \"\".concat($orient, \" === '\").concat(Bottom, \"' ? (\").concat(toExpr(b), \") : \") : '') + (r != null ? \"\".concat($orient, \" === '\").concat(Right, \"' ? (\").concat(toExpr(r), \") : \") : '') + (t != null ? \"\".concat($orient, \" === '\").concat(Top, \"' ? (\").concat(toExpr(t), \") : \") : '') + '(null)'\n };\n};\nvar toExpr = function toExpr(v) {\n return isSignal(v) ? v.signal : v == null ? null : stringValue(v);\n};\nvar mult = function mult(sign, value) {\n return value === 0 ? 0 : isSignal(sign) ? {\n signal: \"(\".concat(sign.signal, \") * \").concat(value)\n } : {\n value: sign * value\n };\n};\nvar patch = function patch(value, base) {\n var s = value.signal;\n return s && s.endsWith('(null)') ? {\n signal: s.slice(0, -6) + base.signal\n } : value;\n};\nfunction fallback(prop, config, axisConfig, style) {\n var styleProp;\n if (config && hasOwnProperty(config, prop)) {\n return config[prop];\n } else if (hasOwnProperty(axisConfig, prop)) {\n return axisConfig[prop];\n } else if (prop.startsWith('title')) {\n switch (prop) {\n case 'titleColor':\n styleProp = 'fill';\n break;\n case 'titleFont':\n case 'titleFontSize':\n case 'titleFontWeight':\n styleProp = prop[5].toLowerCase() + prop.slice(6);\n }\n return style[GuideTitleStyle][styleProp];\n } else if (prop.startsWith('label')) {\n switch (prop) {\n case 'labelColor':\n styleProp = 'fill';\n break;\n case 'labelFont':\n case 'labelFontSize':\n styleProp = prop[5].toLowerCase() + prop.slice(6);\n }\n return style[GuideLabelStyle][styleProp];\n }\n return null;\n}\nfunction keys(objects) {\n var map = {};\n var _iterator = _createForOfIteratorHelper(objects),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var obj = _step.value;\n if (!obj) continue;\n for (var key in obj) map[key] = 1;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return Object.keys(map);\n}\nfunction axisConfig(spec, scope) {\n var config = scope.config,\n style = config.style,\n axis = config.axis,\n band = scope.scaleType(spec.scale) === 'band' && config.axisBand,\n orient = spec.orient,\n xy,\n or,\n key;\n if (isSignal(orient)) {\n var xyKeys = keys([config.axisX, config.axisY]),\n orientKeys = keys([config.axisTop, config.axisBottom, config.axisLeft, config.axisRight]);\n xy = {};\n var _iterator2 = _createForOfIteratorHelper(xyKeys),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n key = _step2.value;\n xy[key] = ifX(orient, fallback(key, config.axisX, axis, style), fallback(key, config.axisY, axis, style));\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n or = {};\n var _iterator3 = _createForOfIteratorHelper(orientKeys),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n key = _step3.value;\n or[key] = ifOrient(orient.signal, fallback(key, config.axisTop, axis, style), fallback(key, config.axisBottom, axis, style), fallback(key, config.axisLeft, axis, style), fallback(key, config.axisRight, axis, style));\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n } else {\n xy = orient === Top || orient === Bottom ? config.axisX : config.axisY;\n or = config['axis' + orient[0].toUpperCase() + orient.slice(1)];\n }\n var result = xy || or || band ? extend({}, axis, xy, or, band) : axis;\n return result;\n}\nfunction axisDomain(spec, config, userEncode, dataRef) {\n var _ = lookup(spec, config),\n orient = spec.orient;\n var enter, update;\n var encode = {\n enter: enter = {\n opacity: zero\n },\n update: update = {\n opacity: one\n },\n exit: {\n opacity: zero\n }\n };\n addEncoders(encode, {\n stroke: _('domainColor'),\n strokeCap: _('domainCap'),\n strokeDash: _('domainDash'),\n strokeDashOffset: _('domainDashOffset'),\n strokeWidth: _('domainWidth'),\n strokeOpacity: _('domainOpacity')\n });\n var pos0 = position(spec, 0);\n var pos1 = position(spec, 1);\n enter.x = update.x = ifX(orient, pos0, zero);\n enter.x2 = update.x2 = ifX(orient, pos1);\n enter.y = update.y = ifY(orient, pos0, zero);\n enter.y2 = update.y2 = ifY(orient, pos1);\n return guideMark({\n type: RuleMark,\n role: AxisDomainRole,\n from: dataRef,\n encode: encode\n }, userEncode);\n}\nfunction position(spec, pos) {\n return {\n scale: spec.scale,\n range: pos\n };\n}\nfunction axisGrid(spec, config, userEncode, dataRef, band) {\n var _ = lookup(spec, config),\n orient = spec.orient,\n vscale = spec.gridScale,\n sign = getSign(orient, 1, -1),\n offset = offsetValue(spec.offset, sign);\n var enter, exit, update;\n var encode = {\n enter: enter = {\n opacity: zero\n },\n update: update = {\n opacity: one\n },\n exit: exit = {\n opacity: zero\n }\n };\n addEncoders(encode, {\n stroke: _('gridColor'),\n strokeCap: _('gridCap'),\n strokeDash: _('gridDash'),\n strokeDashOffset: _('gridDashOffset'),\n strokeOpacity: _('gridOpacity'),\n strokeWidth: _('gridWidth')\n });\n var tickPos = {\n scale: spec.scale,\n field: Value,\n band: band.band,\n extra: band.extra,\n offset: band.offset,\n round: _('tickRound')\n };\n var sz = ifX(orient, {\n signal: 'height'\n }, {\n signal: 'width'\n });\n var gridStart = vscale ? {\n scale: vscale,\n range: 0,\n mult: sign,\n offset: offset\n } : {\n value: 0,\n offset: offset\n };\n var gridEnd = vscale ? {\n scale: vscale,\n range: 1,\n mult: sign,\n offset: offset\n } : extend(sz, {\n mult: sign,\n offset: offset\n });\n enter.x = update.x = ifX(orient, tickPos, gridStart);\n enter.y = update.y = ifY(orient, tickPos, gridStart);\n enter.x2 = update.x2 = ifY(orient, gridEnd);\n enter.y2 = update.y2 = ifX(orient, gridEnd);\n exit.x = ifX(orient, tickPos);\n exit.y = ifY(orient, tickPos);\n return guideMark({\n type: RuleMark,\n role: AxisGridRole,\n key: Value,\n from: dataRef,\n encode: encode\n }, userEncode);\n}\nfunction offsetValue(offset, sign) {\n if (sign === 1) ;else if (!isObject(offset)) {\n offset = isSignal(sign) ? {\n signal: \"(\".concat(sign.signal, \") * (\").concat(offset || 0, \")\")\n } : sign * (offset || 0);\n } else {\n var _entry = offset = extend({}, offset);\n while (_entry.mult != null) {\n if (!isObject(_entry.mult)) {\n _entry.mult = isSignal(sign) // no offset if sign === 1\n ? {\n signal: \"(\".concat(_entry.mult, \") * (\").concat(sign.signal, \")\")\n } : _entry.mult * sign;\n return offset;\n } else {\n _entry = _entry.mult = extend({}, _entry.mult);\n }\n }\n _entry.mult = sign;\n }\n return offset;\n}\nfunction axisTicks(spec, config, userEncode, dataRef, size, band) {\n var _ = lookup(spec, config),\n orient = spec.orient,\n sign = getSign(orient, -1, 1);\n var enter, exit, update;\n var encode = {\n enter: enter = {\n opacity: zero\n },\n update: update = {\n opacity: one\n },\n exit: exit = {\n opacity: zero\n }\n };\n addEncoders(encode, {\n stroke: _('tickColor'),\n strokeCap: _('tickCap'),\n strokeDash: _('tickDash'),\n strokeDashOffset: _('tickDashOffset'),\n strokeOpacity: _('tickOpacity'),\n strokeWidth: _('tickWidth')\n });\n var tickSize = encoder(size);\n tickSize.mult = sign;\n var tickPos = {\n scale: spec.scale,\n field: Value,\n band: band.band,\n extra: band.extra,\n offset: band.offset,\n round: _('tickRound')\n };\n update.y = enter.y = ifX(orient, zero, tickPos);\n update.y2 = enter.y2 = ifX(orient, tickSize);\n exit.x = ifX(orient, tickPos);\n update.x = enter.x = ifY(orient, zero, tickPos);\n update.x2 = enter.x2 = ifY(orient, tickSize);\n exit.y = ifY(orient, tickPos);\n return guideMark({\n type: RuleMark,\n role: AxisTickRole,\n key: Value,\n from: dataRef,\n encode: encode\n }, userEncode);\n}\nfunction flushExpr(scale, threshold, a, b, c) {\n return {\n signal: 'flush(range(\"' + scale + '\"), ' + 'scale(\"' + scale + '\", datum.value), ' + threshold + ',' + a + ',' + b + ',' + c + ')'\n };\n}\nfunction axisLabels(spec, config, userEncode, dataRef, size, band) {\n var _ = lookup(spec, config),\n orient = spec.orient,\n scale = spec.scale,\n sign = getSign(orient, -1, 1),\n flush = deref(_('labelFlush')),\n flushOffset = deref(_('labelFlushOffset')),\n labelAlign = _('labelAlign'),\n labelBaseline = _('labelBaseline');\n var flushOn = flush === 0 || !!flush,\n update;\n var tickSize = encoder(size);\n tickSize.mult = sign;\n tickSize.offset = encoder(_('labelPadding') || 0);\n tickSize.offset.mult = sign;\n var tickPos = {\n scale: scale,\n field: Value,\n band: 0.5,\n offset: extendOffset(band.offset, _('labelOffset'))\n };\n var align = ifX(orient, flushOn ? flushExpr(scale, flush, '\"left\"', '\"right\"', '\"center\"') : {\n value: 'center'\n }, ifRight(orient, 'left', 'right'));\n var baseline = ifX(orient, ifTop(orient, 'bottom', 'top'), flushOn ? flushExpr(scale, flush, '\"top\"', '\"bottom\"', '\"middle\"') : {\n value: 'middle'\n });\n var offsetExpr = flushExpr(scale, flush, \"-(\".concat(flushOffset, \")\"), flushOffset, 0);\n flushOn = flushOn && flushOffset;\n var enter = {\n opacity: zero,\n x: ifX(orient, tickPos, tickSize),\n y: ifY(orient, tickPos, tickSize)\n };\n var encode = {\n enter: enter,\n update: update = {\n opacity: one,\n text: {\n field: Label\n },\n x: enter.x,\n y: enter.y,\n align: align,\n baseline: baseline\n },\n exit: {\n opacity: zero,\n x: enter.x,\n y: enter.y\n }\n };\n addEncoders(encode, {\n dx: !labelAlign && flushOn ? ifX(orient, offsetExpr) : null,\n dy: !labelBaseline && flushOn ? ifY(orient, offsetExpr) : null\n });\n addEncoders(encode, {\n angle: _('labelAngle'),\n fill: _('labelColor'),\n fillOpacity: _('labelOpacity'),\n font: _('labelFont'),\n fontSize: _('labelFontSize'),\n fontWeight: _('labelFontWeight'),\n fontStyle: _('labelFontStyle'),\n limit: _('labelLimit'),\n lineHeight: _('labelLineHeight')\n }, {\n align: labelAlign,\n baseline: labelBaseline\n });\n var bound = _('labelBound');\n var overlap = _('labelOverlap');\n\n // if overlap method or bound defined, request label overlap removal\n overlap = overlap || bound ? {\n separation: _('labelSeparation'),\n method: overlap,\n order: 'datum.index',\n bound: bound ? {\n scale: scale,\n orient: orient,\n tolerance: bound\n } : null\n } : undefined;\n if (update.align !== align) {\n update.align = patch(update.align, align);\n }\n if (update.baseline !== baseline) {\n update.baseline = patch(update.baseline, baseline);\n }\n return guideMark({\n type: TextMark,\n role: AxisLabelRole,\n style: GuideLabelStyle,\n key: Value,\n from: dataRef,\n encode: encode,\n overlap: overlap\n }, userEncode);\n}\nfunction axisTitle(spec, config, userEncode, dataRef) {\n var _ = lookup(spec, config),\n orient = spec.orient,\n sign = getSign(orient, -1, 1);\n var enter, update;\n var encode = {\n enter: enter = {\n opacity: zero,\n anchor: encoder(_('titleAnchor', null)),\n align: {\n signal: alignExpr$1\n }\n },\n update: update = extend({}, enter, {\n opacity: one,\n text: encoder(spec.title)\n }),\n exit: {\n opacity: zero\n }\n };\n var titlePos = {\n signal: \"lerp(range(\\\"\".concat(spec.scale, \"\\\"), \").concat(anchorExpr(0, 1, 0.5), \")\")\n };\n update.x = ifX(orient, titlePos);\n update.y = ifY(orient, titlePos);\n enter.angle = ifX(orient, zero, mult(sign, 90));\n enter.baseline = ifX(orient, ifTop(orient, Bottom, Top), {\n value: Bottom\n });\n update.angle = enter.angle;\n update.baseline = enter.baseline;\n addEncoders(encode, {\n fill: _('titleColor'),\n fillOpacity: _('titleOpacity'),\n font: _('titleFont'),\n fontSize: _('titleFontSize'),\n fontStyle: _('titleFontStyle'),\n fontWeight: _('titleFontWeight'),\n limit: _('titleLimit'),\n lineHeight: _('titleLineHeight')\n }, {\n // require update\n align: _('titleAlign'),\n angle: _('titleAngle'),\n baseline: _('titleBaseline')\n });\n autoLayout(_, orient, encode, userEncode);\n encode.update.align = patch(encode.update.align, enter.align);\n encode.update.angle = patch(encode.update.angle, enter.angle);\n encode.update.baseline = patch(encode.update.baseline, enter.baseline);\n return guideMark({\n type: TextMark,\n role: AxisTitleRole,\n style: GuideTitleStyle,\n from: dataRef,\n encode: encode\n }, userEncode);\n}\nfunction autoLayout(_, orient, encode, userEncode) {\n var auto = function auto(value, dim) {\n return value != null ? (encode.update[dim] = patch(encoder(value), encode.update[dim]), false) : !has(dim, userEncode) ? true : false;\n };\n var autoY = auto(_('titleX'), 'x'),\n autoX = auto(_('titleY'), 'y');\n encode.enter.auto = autoX === autoY ? encoder(autoX) : ifX(orient, encoder(autoX), encoder(autoY));\n}\nfunction parseAxis(spec, scope) {\n var config = axisConfig(spec, scope),\n encode = spec.encode || {},\n axisEncode = encode.axis || {},\n name = axisEncode.name || undefined,\n interactive = axisEncode.interactive,\n style = axisEncode.style,\n _ = lookup(spec, config),\n band = tickBand(_);\n\n // single-element data source for axis group\n var datum = {\n scale: spec.scale,\n ticks: !!_('ticks'),\n labels: !!_('labels'),\n grid: !!_('grid'),\n domain: !!_('domain'),\n title: spec.title != null\n };\n var dataRef = ref(scope.add(Collect({}, [datum])));\n\n // data source for axis ticks\n var ticksRef = ref(scope.add(AxisTicks({\n scale: scope.scaleRef(spec.scale),\n extra: scope.property(band.extra),\n count: scope.objectProperty(spec.tickCount),\n values: scope.objectProperty(spec.values),\n minstep: scope.property(spec.tickMinStep),\n formatType: scope.property(spec.formatType),\n formatSpecifier: scope.property(spec.format)\n })));\n\n // generate axis marks\n var children = [];\n var size;\n\n // include axis gridlines if requested\n if (datum.grid) {\n children.push(axisGrid(spec, config, encode.grid, ticksRef, band));\n }\n\n // include axis ticks if requested\n if (datum.ticks) {\n size = _('tickSize');\n children.push(axisTicks(spec, config, encode.ticks, ticksRef, size, band));\n }\n\n // include axis labels if requested\n if (datum.labels) {\n size = datum.ticks ? size : 0;\n children.push(axisLabels(spec, config, encode.labels, ticksRef, size, band));\n }\n\n // include axis domain path if requested\n if (datum.domain) {\n children.push(axisDomain(spec, config, encode.domain, dataRef));\n }\n\n // include axis title if defined\n if (datum.title) {\n children.push(axisTitle(spec, config, encode.title, dataRef));\n }\n\n // parse axis specification\n return parseMark(guideGroup({\n role: AxisRole,\n from: dataRef,\n encode: extendEncode(buildAxisEncode(_, spec), axisEncode, Skip),\n marks: children,\n aria: _('aria'),\n description: _('description'),\n zindex: _('zindex'),\n name: name,\n interactive: interactive,\n style: style\n }), scope);\n}\nfunction buildAxisEncode(_, spec) {\n var encode = {\n enter: {},\n update: {}\n };\n addEncoders(encode, {\n orient: _('orient'),\n offset: _('offset') || 0,\n position: value(spec.position, 0),\n titlePadding: _('titlePadding'),\n minExtent: _('minExtent'),\n maxExtent: _('maxExtent'),\n range: {\n signal: \"abs(span(range(\\\"\".concat(spec.scale, \"\\\")))\")\n },\n translate: _('translate'),\n // accessibility support\n format: spec.format,\n formatType: spec.formatType\n });\n return encode;\n}\nfunction parseScope(spec, scope, preprocessed) {\n var signals = array(spec.signals),\n scales = array(spec.scales);\n\n // parse signal definitions, if not already preprocessed\n if (!preprocessed) signals.forEach(function (_) {\n return parseSignal(_, scope);\n });\n\n // parse cartographic projection definitions\n array(spec.projections).forEach(function (_) {\n return parseProjection(_, scope);\n });\n\n // initialize scale references\n scales.forEach(function (_) {\n return initScale(_, scope);\n });\n\n // parse data sources\n array(spec.data).forEach(function (_) {\n return parseData(_, scope);\n });\n\n // parse scale definitions\n scales.forEach(function (_) {\n return parseScale(_, scope);\n });\n\n // parse signal updates\n (preprocessed || signals).forEach(function (_) {\n return parseSignalUpdates(_, scope);\n });\n\n // parse axis definitions\n array(spec.axes).forEach(function (_) {\n return parseAxis(_, scope);\n });\n\n // parse mark definitions\n array(spec.marks).forEach(function (_) {\n return parseMark(_, scope);\n });\n\n // parse legend definitions\n array(spec.legends).forEach(function (_) {\n return parseLegend(_, scope);\n });\n\n // parse title, if defined\n if (spec.title) parseTitle(spec.title, scope);\n\n // parse collected lambda (anonymous) expressions\n scope.parseLambdas();\n return scope;\n}\nvar rootEncode = function rootEncode(spec) {\n return extendEncode({\n enter: {\n x: {\n value: 0\n },\n y: {\n value: 0\n }\n },\n update: {\n width: {\n signal: 'width'\n },\n height: {\n signal: 'height'\n }\n }\n }, spec);\n};\nfunction parseView(spec, scope) {\n var config = scope.config;\n\n // add scenegraph root\n var root = ref(scope.root = scope.add(operator()));\n\n // parse top-level signal definitions\n var signals = collectSignals(spec, config);\n signals.forEach(function (_) {\n return parseSignal(_, scope);\n });\n\n // assign description, event, legend, and locale configuration\n scope.description = spec.description || config.description;\n scope.eventConfig = config.events;\n scope.legends = scope.objectProperty(config.legend && config.legend.layout);\n scope.locale = config.locale;\n\n // store root group item\n var input = scope.add(Collect());\n\n // encode root group item\n var encode = scope.add(Encode(parseEncode(rootEncode(spec.encode), GroupMark, FrameRole, spec.style, scope, {\n pulse: ref(input)\n })));\n\n // perform view layout\n var parent = scope.add(ViewLayout({\n layout: scope.objectProperty(spec.layout),\n legends: scope.legends,\n autosize: scope.signalRef('autosize'),\n mark: root,\n pulse: ref(encode)\n }));\n scope.operators.pop();\n\n // parse remainder of specification\n scope.pushState(ref(encode), ref(parent), null);\n parseScope(spec, scope, signals);\n scope.operators.push(parent);\n\n // bound / render / sieve root item\n var op = scope.add(Bound({\n mark: root,\n pulse: ref(parent)\n }));\n op = scope.add(Render({\n pulse: ref(op)\n }));\n op = scope.add(Sieve({\n pulse: ref(op)\n }));\n\n // track metadata for root item\n scope.addData('root', new DataScope(scope, input, input, op));\n return scope;\n}\nfunction signalObject(name, value) {\n return value && value.signal ? {\n name: name,\n update: value.signal\n } : {\n name: name,\n value: value\n };\n}\n\n/**\n * Collect top-level signals, merging values as needed. Signals\n * defined in the config signals arrays are added only if that\n * signal is not explicitly defined in the specification.\n * Built-in signals (autosize, background, padding, width, height)\n * receive special treatment. They are initialized using the\n * top-level spec property, or, if undefined in the spec, using\n * the corresponding top-level config property. If this property\n * is a signal reference object, the signal expression maps to the\n * signal 'update' property. If the spec's top-level signal array\n * contains an entry that matches a built-in signal, that entry\n * will be merged with the built-in specification, potentially\n * overwriting existing 'value' or 'update' properties.\n */\nfunction collectSignals(spec, config) {\n var _ = function _(name) {\n return value(spec[name], config[name]);\n },\n signals = [signalObject('background', _('background')), signalObject('autosize', parseAutosize(_('autosize'))), signalObject('padding', parsePadding(_('padding'))), signalObject('width', _('width') || 0), signalObject('height', _('height') || 0)],\n pre = signals.reduce(function (p, s) {\n return p[s.name] = s, p;\n }, {}),\n map = {};\n\n // add spec signal array\n array(spec.signals).forEach(function (s) {\n if (hasOwnProperty(pre, s.name)) {\n // merge if built-in signal\n s = extend(pre[s.name], s);\n } else {\n // otherwise add to signal list\n signals.push(s);\n }\n map[s.name] = s;\n });\n\n // add config signal array\n array(config.signals).forEach(function (s) {\n if (!hasOwnProperty(map, s.name) && !hasOwnProperty(pre, s.name)) {\n // add to signal list if not already defined\n signals.push(s);\n }\n });\n return signals;\n}\nfunction Scope(config, options) {\n this.config = config || {};\n this.options = options || {};\n this.bindings = [];\n this.field = {};\n this.signals = {};\n this.lambdas = {};\n this.scales = {};\n this.events = {};\n this.data = {};\n this.streams = [];\n this.updates = [];\n this.operators = [];\n this.eventConfig = null;\n this.locale = null;\n this._id = 0;\n this._subid = 0;\n this._nextsub = [0];\n this._parent = [];\n this._encode = [];\n this._lookup = [];\n this._markpath = [];\n}\nfunction Subscope(scope) {\n this.config = scope.config;\n this.options = scope.options;\n this.legends = scope.legends;\n this.field = Object.create(scope.field);\n this.signals = Object.create(scope.signals);\n this.lambdas = Object.create(scope.lambdas);\n this.scales = Object.create(scope.scales);\n this.events = Object.create(scope.events);\n this.data = Object.create(scope.data);\n this.streams = [];\n this.updates = [];\n this.operators = [];\n this._id = 0;\n this._subid = ++scope._nextsub[0];\n this._nextsub = scope._nextsub;\n this._parent = scope._parent.slice();\n this._encode = scope._encode.slice();\n this._lookup = scope._lookup.slice();\n this._markpath = scope._markpath;\n}\nScope.prototype = Subscope.prototype = {\n parse: function parse(spec) {\n return parseScope(spec, this);\n },\n fork: function fork() {\n return new Subscope(this);\n },\n isSubscope: function isSubscope() {\n return this._subid > 0;\n },\n toRuntime: function toRuntime() {\n this.finish();\n return {\n description: this.description,\n operators: this.operators,\n streams: this.streams,\n updates: this.updates,\n bindings: this.bindings,\n eventConfig: this.eventConfig,\n locale: this.locale\n };\n },\n id: function id() {\n return (this._subid ? this._subid + ':' : 0) + this._id++;\n },\n add: function add(op) {\n this.operators.push(op);\n op.id = this.id();\n // if pre-registration references exist, resolve them now\n if (op.refs) {\n op.refs.forEach(function (ref) {\n ref.$ref = op.id;\n });\n op.refs = null;\n }\n return op;\n },\n proxy: function proxy(op) {\n var vref = op instanceof Entry ? ref(op) : op;\n return this.add(Proxy({\n value: vref\n }));\n },\n addStream: function addStream(stream) {\n this.streams.push(stream);\n stream.id = this.id();\n return stream;\n },\n addUpdate: function addUpdate(update) {\n this.updates.push(update);\n return update;\n },\n // Apply metadata\n finish: function finish() {\n var name, ds;\n\n // annotate root\n if (this.root) this.root.root = true;\n\n // annotate signals\n for (name in this.signals) {\n this.signals[name].signal = name;\n }\n\n // annotate scales\n for (name in this.scales) {\n this.scales[name].scale = name;\n }\n\n // annotate data sets\n function annotate(op, name, type) {\n var data, list;\n if (op) {\n data = op.data || (op.data = {});\n list = data[name] || (data[name] = []);\n list.push(type);\n }\n }\n for (name in this.data) {\n ds = this.data[name];\n annotate(ds.input, name, 'input');\n annotate(ds.output, name, 'output');\n annotate(ds.values, name, 'values');\n for (var _field in ds.index) {\n annotate(ds.index[_field], name, 'index:' + _field);\n }\n }\n return this;\n },\n // ----\n pushState: function pushState(encode, parent, lookup) {\n this._encode.push(ref(this.add(Sieve({\n pulse: encode\n }))));\n this._parent.push(parent);\n this._lookup.push(lookup ? ref(this.proxy(lookup)) : null);\n this._markpath.push(-1);\n },\n popState: function popState() {\n this._encode.pop();\n this._parent.pop();\n this._lookup.pop();\n this._markpath.pop();\n },\n parent: function parent() {\n return peek(this._parent);\n },\n encode: function encode() {\n return peek(this._encode);\n },\n lookup: function lookup() {\n return peek(this._lookup);\n },\n markpath: function markpath() {\n var p = this._markpath;\n return ++p[p.length - 1];\n },\n // ----\n fieldRef: function fieldRef(field, name) {\n if (isString(field)) return fieldRef$1(field, name);\n if (!field.signal) {\n error('Unsupported field reference: ' + stringValue(field));\n }\n var s = field.signal;\n var f = this.field[s];\n if (!f) {\n var params = {\n name: this.signalRef(s)\n };\n if (name) params.as = name;\n this.field[s] = f = ref(this.add(Field(params)));\n }\n return f;\n },\n compareRef: function compareRef(cmp) {\n var _this = this;\n var signal = false;\n var check = function check(_) {\n return isSignal(_) ? (signal = true, _this.signalRef(_.signal)) : isExpr$1(_) ? (signal = true, _this.exprRef(_.expr)) : _;\n };\n var fields = array(cmp.field).map(check),\n orders = array(cmp.order).map(check);\n return signal ? ref(this.add(Compare({\n fields: fields,\n orders: orders\n }))) : _compareRef(fields, orders);\n },\n keyRef: function keyRef(fields, flat) {\n var signal = false;\n var check = function check(_) {\n return isSignal(_) ? (signal = true, ref(sig[_.signal])) : _;\n };\n var sig = this.signals;\n fields = array(fields).map(check);\n return signal ? ref(this.add(Key({\n fields: fields,\n flat: flat\n }))) : _keyRef(fields, flat);\n },\n sortRef: function sortRef(sort) {\n if (!sort) return sort;\n\n // including id ensures stable sorting\n var a = aggrField(sort.op, sort.field),\n o = sort.order || Ascending;\n return o.signal ? ref(this.add(Compare({\n fields: a,\n orders: this.signalRef(o.signal)\n }))) : _compareRef(a, o);\n },\n // ----\n event: function event(source, type) {\n var key = source + ':' + type;\n if (!this.events[key]) {\n var id = this.id();\n this.streams.push({\n id: id,\n source: source,\n type: type\n });\n this.events[key] = id;\n }\n return this.events[key];\n },\n // ----\n hasOwnSignal: function hasOwnSignal(name) {\n return hasOwnProperty(this.signals, name);\n },\n addSignal: function addSignal(name, value) {\n if (this.hasOwnSignal(name)) {\n error('Duplicate signal name: ' + stringValue(name));\n }\n var op = value instanceof Entry ? value : this.add(operator(value));\n return this.signals[name] = op;\n },\n getSignal: function getSignal(name) {\n if (!this.signals[name]) {\n error('Unrecognized signal name: ' + stringValue(name));\n }\n return this.signals[name];\n },\n signalRef: function signalRef(s) {\n if (this.signals[s]) {\n return ref(this.signals[s]);\n } else if (!hasOwnProperty(this.lambdas, s)) {\n this.lambdas[s] = this.add(operator(null));\n }\n return ref(this.lambdas[s]);\n },\n parseLambdas: function parseLambdas() {\n var code = Object.keys(this.lambdas);\n for (var i = 0, n = code.length; i < n; ++i) {\n var s = code[i],\n e = parseExpression(s, this),\n op = this.lambdas[s];\n op.params = e.$params;\n op.update = e.$expr;\n }\n },\n property: function property(spec) {\n return spec && spec.signal ? this.signalRef(spec.signal) : spec;\n },\n objectProperty: function objectProperty(spec) {\n return !spec || !isObject(spec) ? spec : this.signalRef(spec.signal || propertyLambda(spec));\n },\n exprRef: function exprRef(code, name) {\n var params = {\n expr: parseExpression(code, this)\n };\n if (name) params.expr.$name = name;\n return ref(this.add(Expression(params)));\n },\n addBinding: function addBinding(name, bind) {\n if (!this.bindings) {\n error('Nested signals do not support binding: ' + stringValue(name));\n }\n this.bindings.push(extend({\n signal: name\n }, bind));\n },\n // ----\n addScaleProj: function addScaleProj(name, transform) {\n if (hasOwnProperty(this.scales, name)) {\n error('Duplicate scale or projection name: ' + stringValue(name));\n }\n this.scales[name] = this.add(transform);\n },\n addScale: function addScale(name, params) {\n this.addScaleProj(name, Scale(params));\n },\n addProjection: function addProjection(name, params) {\n this.addScaleProj(name, Projection(params));\n },\n getScale: function getScale(name) {\n if (!this.scales[name]) {\n error('Unrecognized scale name: ' + stringValue(name));\n }\n return this.scales[name];\n },\n scaleRef: function scaleRef(name) {\n return ref(this.getScale(name));\n },\n scaleType: function scaleType(name) {\n return this.getScale(name).params.type;\n },\n projectionRef: function projectionRef(name) {\n return this.scaleRef(name);\n },\n projectionType: function projectionType(name) {\n return this.scaleType(name);\n },\n // ----\n addData: function addData(name, dataScope) {\n if (hasOwnProperty(this.data, name)) {\n error('Duplicate data set name: ' + stringValue(name));\n }\n return this.data[name] = dataScope;\n },\n getData: function getData(name) {\n if (!this.data[name]) {\n error('Undefined data set name: ' + stringValue(name));\n }\n return this.data[name];\n },\n addDataPipeline: function addDataPipeline(name, entries) {\n if (hasOwnProperty(this.data, name)) {\n error('Duplicate data set name: ' + stringValue(name));\n }\n return this.addData(name, DataScope.fromEntries(this, entries));\n }\n};\nfunction propertyLambda(spec) {\n return (isArray(spec) ? arrayLambda : objectLambda)(spec);\n}\nfunction arrayLambda(array) {\n var n = array.length;\n var code = '[';\n for (var i = 0; i < n; ++i) {\n var _value = array[i];\n code += (i > 0 ? ',' : '') + (isObject(_value) ? _value.signal || propertyLambda(_value) : stringValue(_value));\n }\n return code + ']';\n}\nfunction objectLambda(obj) {\n var code = '{',\n i = 0,\n key,\n value;\n for (key in obj) {\n value = obj[key];\n code += (++i > 1 ? ',' : '') + stringValue(key) + ':' + (isObject(value) ? value.signal || propertyLambda(value) : stringValue(value));\n }\n return code + '}';\n}\n\n/**\n * Standard configuration defaults for Vega specification parsing.\n * Users can provide their own (sub-)set of these default values\n * by passing in a config object to the top-level parse method.\n */\nfunction defaults() {\n var defaultFont = 'sans-serif',\n defaultSymbolSize = 30,\n defaultStrokeWidth = 2,\n defaultColor = '#4c78a8',\n black = '#000',\n gray = '#888',\n lightGray = '#ddd';\n return {\n // default visualization description\n description: 'Vega visualization',\n // default padding around visualization\n padding: 0,\n // default for automatic sizing; options: 'none', 'pad', 'fit'\n // or provide an object (e.g., {'type': 'pad', 'resize': true})\n autosize: 'pad',\n // default view background color\n // covers the entire view component\n background: null,\n // default event handling configuration\n // preventDefault for view-sourced event types except 'wheel'\n events: {\n defaults: {\n allow: ['wheel']\n }\n },\n // defaults for top-level group marks\n // accepts mark properties (fill, stroke, etc)\n // covers the data rectangle within group width/height\n group: null,\n // defaults for basic mark types\n // each subset accepts mark properties (fill, stroke, etc)\n mark: null,\n arc: {\n fill: defaultColor\n },\n area: {\n fill: defaultColor\n },\n image: null,\n line: {\n stroke: defaultColor,\n strokeWidth: defaultStrokeWidth\n },\n path: {\n stroke: defaultColor\n },\n rect: {\n fill: defaultColor\n },\n rule: {\n stroke: black\n },\n shape: {\n stroke: defaultColor\n },\n symbol: {\n fill: defaultColor,\n size: 64\n },\n text: {\n fill: black,\n font: defaultFont,\n fontSize: 11\n },\n trail: {\n fill: defaultColor,\n size: defaultStrokeWidth\n },\n // style definitions\n style: {\n // axis & legend labels\n 'guide-label': {\n fill: black,\n font: defaultFont,\n fontSize: 10\n },\n // axis & legend titles\n 'guide-title': {\n fill: black,\n font: defaultFont,\n fontSize: 11,\n fontWeight: 'bold'\n },\n // headers, including chart title\n 'group-title': {\n fill: black,\n font: defaultFont,\n fontSize: 13,\n fontWeight: 'bold'\n },\n // chart subtitle\n 'group-subtitle': {\n fill: black,\n font: defaultFont,\n fontSize: 12\n },\n // defaults for styled point marks in Vega-Lite\n point: {\n size: defaultSymbolSize,\n strokeWidth: defaultStrokeWidth,\n shape: 'circle'\n },\n circle: {\n size: defaultSymbolSize,\n strokeWidth: defaultStrokeWidth\n },\n square: {\n size: defaultSymbolSize,\n strokeWidth: defaultStrokeWidth,\n shape: 'square'\n },\n // defaults for styled group marks in Vega-Lite\n cell: {\n fill: 'transparent',\n stroke: lightGray\n },\n view: {\n fill: 'transparent'\n }\n },\n // defaults for title\n title: {\n orient: 'top',\n anchor: 'middle',\n offset: 4,\n subtitlePadding: 3\n },\n // defaults for axes\n axis: {\n minExtent: 0,\n maxExtent: 200,\n bandPosition: 0.5,\n domain: true,\n domainWidth: 1,\n domainColor: gray,\n grid: false,\n gridWidth: 1,\n gridColor: lightGray,\n labels: true,\n labelAngle: 0,\n labelLimit: 180,\n labelOffset: 0,\n labelPadding: 2,\n ticks: true,\n tickColor: gray,\n tickOffset: 0,\n tickRound: true,\n tickSize: 5,\n tickWidth: 1,\n titlePadding: 4\n },\n // correction for centering bias\n axisBand: {\n tickOffset: -0.5\n },\n // defaults for cartographic projection\n projection: {\n type: 'mercator'\n },\n // defaults for legends\n legend: {\n orient: 'right',\n padding: 0,\n gridAlign: 'each',\n columnPadding: 10,\n rowPadding: 2,\n symbolDirection: 'vertical',\n gradientDirection: 'vertical',\n gradientLength: 200,\n gradientThickness: 16,\n gradientStrokeColor: lightGray,\n gradientStrokeWidth: 0,\n gradientLabelOffset: 2,\n labelAlign: 'left',\n labelBaseline: 'middle',\n labelLimit: 160,\n labelOffset: 4,\n labelOverlap: true,\n symbolLimit: 30,\n symbolType: 'circle',\n symbolSize: 100,\n symbolOffset: 0,\n symbolStrokeWidth: 1.5,\n symbolBaseFillColor: 'transparent',\n symbolBaseStrokeColor: gray,\n titleLimit: 180,\n titleOrient: 'top',\n titlePadding: 5,\n layout: {\n offset: 18,\n direction: 'horizontal',\n left: {\n direction: 'vertical'\n },\n right: {\n direction: 'vertical'\n }\n }\n },\n // defaults for scale ranges\n range: {\n category: {\n scheme: 'tableau10'\n },\n ordinal: {\n scheme: 'blues'\n },\n heatmap: {\n scheme: 'yellowgreenblue'\n },\n ramp: {\n scheme: 'blues'\n },\n diverging: {\n scheme: 'blueorange',\n extent: [1, 0]\n },\n symbol: ['circle', 'square', 'triangle-up', 'cross', 'diamond', 'triangle-right', 'triangle-down', 'triangle-left']\n }\n };\n}\nfunction parse(spec, config, options) {\n if (!isObject(spec)) {\n error('Input Vega specification must be an object.');\n }\n config = mergeConfig(defaults(), config, spec.config);\n return parseView(spec, new Scope(config, options)).toRuntime();\n}\nexport { AxisDomainRole, AxisGridRole, AxisLabelRole, AxisRole, AxisTickRole, AxisTitleRole, DataScope, FrameRole, LegendEntryRole, LegendLabelRole, LegendRole, LegendSymbolRole, LegendTitleRole, MarkRole, Scope, ScopeRole, defaults as config, parse, parseSignal as signal, parseSignalUpdates as signalUpdates, parseStream as stream };","import { extend } from 'vega-util';\nexport * from 'vega-util';\nimport { transforms } from 'vega-dataflow';\nexport { Dataflow, EventStream, MultiPulse, Operator, Parameters, Pulse, Transform, changeset, definition, ingest, isTuple, transform, transforms, tupleid } from 'vega-dataflow';\nimport * as tx from 'vega-transforms';\nimport * as vtx from 'vega-view-transforms';\nimport * as encode from 'vega-encode';\nimport * as geo from 'vega-geo';\nimport * as force from 'vega-force';\nimport * as tree from 'vega-hierarchy';\nimport * as label from 'vega-label';\nimport * as reg from 'vega-regression';\nimport * as voronoi from 'vega-voronoi';\nimport * as wordcloud from 'vega-wordcloud';\nimport * as xf from 'vega-crossfilter';\nexport * from 'vega-statistics';\nexport * from 'vega-time';\nexport * from 'vega-loader';\nexport * from 'vega-scenegraph';\nexport { interpolate, interpolateColors, interpolateRange, quantizeInterpolator, scale, scheme } from 'vega-scale';\nexport { projection } from 'vega-projection';\nexport { View } from 'vega-view';\nexport { defaultLocale, numberFormatDefaultLocale as formatLocale, locale, resetDefaultLocale, timeFormatDefaultLocale as timeFormatLocale } from 'vega-format';\nexport { expressionFunction } from 'vega-functions';\nexport { parse } from 'vega-parser';\nexport { context as runtimeContext } from 'vega-runtime';\nexport { codegenExpression, parseExpression } from 'vega-expression';\nexport { parseSelector } from 'vega-event-selector';\nvar version = \"5.25.0\";\n\n// -- Transforms -----\nextend(transforms, tx, vtx, encode, geo, force, label, tree, reg, voronoi, wordcloud, xf);\nexport { version };","function adjustSpatial(item, encode, swap) {\n var t;\n if (encode.x2) {\n if (encode.x) {\n if (swap && item.x > item.x2) {\n t = item.x;\n item.x = item.x2;\n item.x2 = t;\n }\n item.width = item.x2 - item.x;\n } else {\n item.x = item.x2 - (item.width || 0);\n }\n }\n if (encode.xc) {\n item.x = item.xc - (item.width || 0) / 2;\n }\n if (encode.y2) {\n if (encode.y) {\n if (swap && item.y > item.y2) {\n t = item.y;\n item.y = item.y2;\n item.y2 = t;\n }\n item.height = item.y2 - item.y;\n } else {\n item.y = item.y2 - (item.height || 0);\n }\n }\n if (encode.yc) {\n item.y = item.yc - (item.height || 0) / 2;\n }\n}\nvar Constants = {\n NaN: NaN,\n E: Math.E,\n LN2: Math.LN2,\n LN10: Math.LN10,\n LOG2E: Math.LOG2E,\n LOG10E: Math.LOG10E,\n PI: Math.PI,\n SQRT1_2: Math.SQRT1_2,\n SQRT2: Math.SQRT2,\n MIN_VALUE: Number.MIN_VALUE,\n MAX_VALUE: Number.MAX_VALUE\n};\nvar Ops = {\n '*': function _(a, b) {\n return a * b;\n },\n '+': function _(a, b) {\n return a + b;\n },\n '-': function _(a, b) {\n return a - b;\n },\n '/': function _(a, b) {\n return a / b;\n },\n '%': function _(a, b) {\n return a % b;\n },\n '>': function _(a, b) {\n return a > b;\n },\n '<': function _(a, b) {\n return a < b;\n },\n '<=': function _(a, b) {\n return a <= b;\n },\n '>=': function _(a, b) {\n return a >= b;\n },\n '==': function _(a, b) {\n return a == b;\n },\n '!=': function _(a, b) {\n return a != b;\n },\n '===': function _(a, b) {\n return a === b;\n },\n '!==': function _(a, b) {\n return a !== b;\n },\n '&': function _(a, b) {\n return a & b;\n },\n '|': function _(a, b) {\n return a | b;\n },\n '^': function _(a, b) {\n return a ^ b;\n },\n '<<': function _(a, b) {\n return a << b;\n },\n '>>': function _(a, b) {\n return a >> b;\n },\n '>>>': function _(a, b) {\n return a >>> b;\n }\n};\nvar Unary = {\n '+': function _(a) {\n return +a;\n },\n '-': function _(a) {\n return -a;\n },\n '~': function _(a) {\n return ~a;\n },\n '!': function _(a) {\n return !a;\n }\n};\nvar slice = Array.prototype.slice;\nvar apply = function apply(m, args, cast) {\n var obj = cast ? cast(args[0]) : args[0];\n return obj[m].apply(obj, slice.call(args, 1));\n};\nvar datetime = function datetime(y, m, d, H, M, S, ms) {\n return new Date(y, m || 0, d != null ? d : 1, H || 0, M || 0, S || 0, ms || 0);\n};\nvar Functions = {\n // math functions\n isNaN: Number.isNaN,\n isFinite: Number.isFinite,\n abs: Math.abs,\n acos: Math.acos,\n asin: Math.asin,\n atan: Math.atan,\n atan2: Math.atan2,\n ceil: Math.ceil,\n cos: Math.cos,\n exp: Math.exp,\n floor: Math.floor,\n log: Math.log,\n max: Math.max,\n min: Math.min,\n pow: Math.pow,\n random: Math.random,\n round: Math.round,\n sin: Math.sin,\n sqrt: Math.sqrt,\n tan: Math.tan,\n clamp: function clamp(a, b, c) {\n return Math.max(b, Math.min(c, a));\n },\n // date functions\n now: Date.now,\n utc: Date.UTC,\n datetime: datetime,\n date: function date(d) {\n return new Date(d).getDate();\n },\n day: function day(d) {\n return new Date(d).getDay();\n },\n year: function year(d) {\n return new Date(d).getFullYear();\n },\n month: function month(d) {\n return new Date(d).getMonth();\n },\n hours: function hours(d) {\n return new Date(d).getHours();\n },\n minutes: function minutes(d) {\n return new Date(d).getMinutes();\n },\n seconds: function seconds(d) {\n return new Date(d).getSeconds();\n },\n milliseconds: function milliseconds(d) {\n return new Date(d).getMilliseconds();\n },\n time: function time(d) {\n return new Date(d).getTime();\n },\n timezoneoffset: function timezoneoffset(d) {\n return new Date(d).getTimezoneOffset();\n },\n utcdate: function utcdate(d) {\n return new Date(d).getUTCDate();\n },\n utcday: function utcday(d) {\n return new Date(d).getUTCDay();\n },\n utcyear: function utcyear(d) {\n return new Date(d).getUTCFullYear();\n },\n utcmonth: function utcmonth(d) {\n return new Date(d).getUTCMonth();\n },\n utchours: function utchours(d) {\n return new Date(d).getUTCHours();\n },\n utcminutes: function utcminutes(d) {\n return new Date(d).getUTCMinutes();\n },\n utcseconds: function utcseconds(d) {\n return new Date(d).getUTCSeconds();\n },\n utcmilliseconds: function utcmilliseconds(d) {\n return new Date(d).getUTCMilliseconds();\n },\n // sequence functions\n length: function length(x) {\n return x.length;\n },\n join: function join() {\n return apply('join', arguments);\n },\n indexof: function indexof() {\n return apply('indexOf', arguments);\n },\n lastindexof: function lastindexof() {\n return apply('lastIndexOf', arguments);\n },\n slice: function slice() {\n return apply('slice', arguments);\n },\n reverse: function reverse(x) {\n return x.slice().reverse();\n },\n // string functions\n parseFloat: parseFloat,\n parseInt: parseInt,\n upper: function upper(x) {\n return String(x).toUpperCase();\n },\n lower: function lower(x) {\n return String(x).toLowerCase();\n },\n substring: function substring() {\n return apply('substring', arguments, String);\n },\n split: function split() {\n return apply('split', arguments, String);\n },\n replace: function replace() {\n return apply('replace', arguments, String);\n },\n trim: function trim(x) {\n return String(x).trim();\n },\n // regexp functions\n regexp: RegExp,\n test: function test(r, t) {\n return RegExp(r).test(t);\n }\n};\nvar EventFunctions = ['view', 'item', 'group', 'xy', 'x', 'y'];\nvar DisallowedMethods = new Set([Function, eval, setTimeout, setInterval]);\nif (typeof setImmediate === 'function') DisallowedMethods.add(setImmediate);\nvar Visitors = {\n Literal: function Literal($, n) {\n return n.value;\n },\n Identifier: function Identifier($, n) {\n var id = n.name;\n return $.memberDepth > 0 ? id : id === 'datum' ? $.datum : id === 'event' ? $.event : id === 'item' ? $.item : Constants[id] || $.params['$' + id];\n },\n MemberExpression: function MemberExpression($, n) {\n var d = !n.computed,\n o = $(n.object);\n if (d) $.memberDepth += 1;\n var p = $(n.property);\n if (d) $.memberDepth -= 1;\n if (DisallowedMethods.has(o[p])) {\n // eslint-disable-next-line no-console\n console.error(\"Prevented interpretation of member \\\"\".concat(p, \"\\\" which could lead to insecure code execution\"));\n return;\n }\n return o[p];\n },\n CallExpression: function CallExpression($, n) {\n var args = n.arguments;\n var name = n.callee.name;\n\n // handle special internal functions used by encoders\n // re-route to corresponding standard function\n if (name.startsWith('_')) {\n name = name.slice(1);\n }\n\n // special case \"if\" due to conditional evaluation of branches\n return name === 'if' ? $(args[0]) ? $(args[1]) : $(args[2]) : ($.fn[name] || Functions[name]).apply($.fn, args.map($));\n },\n ArrayExpression: function ArrayExpression($, n) {\n return n.elements.map($);\n },\n BinaryExpression: function BinaryExpression($, n) {\n return Ops[n.operator]($(n.left), $(n.right));\n },\n UnaryExpression: function UnaryExpression($, n) {\n return Unary[n.operator]($(n.argument));\n },\n ConditionalExpression: function ConditionalExpression($, n) {\n return $(n.test) ? $(n.consequent) : $(n.alternate);\n },\n LogicalExpression: function LogicalExpression($, n) {\n return n.operator === '&&' ? $(n.left) && $(n.right) : $(n.left) || $(n.right);\n },\n ObjectExpression: function ObjectExpression($, n) {\n return n.properties.reduce(function (o, p) {\n $.memberDepth += 1;\n var k = $(p.key);\n $.memberDepth -= 1;\n if (DisallowedMethods.has($(p.value))) {\n // eslint-disable-next-line no-console\n console.error(\"Prevented interpretation of property \\\"\".concat(k, \"\\\" which could lead to insecure code execution\"));\n } else {\n o[k] = $(p.value);\n }\n return o;\n }, {});\n }\n};\nfunction interpret(ast, fn, params, datum, event, item) {\n var $ = function $(n) {\n return Visitors[n.type]($, n);\n };\n $.memberDepth = 0;\n $.fn = Object.create(fn);\n $.params = params;\n $.datum = datum;\n $.event = event;\n $.item = item;\n\n // route event functions to annotated vega event context\n EventFunctions.forEach(function (f) {\n return $.fn[f] = function () {\n var _event$vega;\n return (_event$vega = event.vega)[f].apply(_event$vega, arguments);\n };\n });\n return $(ast);\n}\nvar expression = {\n /**\n * Parse an expression used to update an operator value.\n */\n operator: function operator(ctx, expr) {\n var ast = expr.ast,\n fn = ctx.functions;\n return function (_) {\n return interpret(ast, fn, _);\n };\n },\n /**\n * Parse an expression provided as an operator parameter value.\n */\n parameter: function parameter(ctx, expr) {\n var ast = expr.ast,\n fn = ctx.functions;\n return function (datum, _) {\n return interpret(ast, fn, _, datum);\n };\n },\n /**\n * Parse an expression applied to an event stream.\n */\n event: function event(ctx, expr) {\n var ast = expr.ast,\n fn = ctx.functions;\n return function (event) {\n return interpret(ast, fn, undefined, undefined, event);\n };\n },\n /**\n * Parse an expression used to handle an event-driven operator update.\n */\n handler: function handler(ctx, expr) {\n var ast = expr.ast,\n fn = ctx.functions;\n return function (_, event) {\n var datum = event.item && event.item.datum;\n return interpret(ast, fn, _, datum, event);\n };\n },\n /**\n * Parse an expression that performs visual encoding.\n */\n encode: function encode(ctx, _encode) {\n var marktype = _encode.marktype,\n channels = _encode.channels,\n fn = ctx.functions,\n swap = marktype === 'group' || marktype === 'image' || marktype === 'rect';\n return function (item, _) {\n var datum = item.datum;\n var m = 0,\n v;\n for (var name in channels) {\n v = interpret(channels[name].ast, fn, _, datum, undefined, item);\n if (item[name] !== v) {\n item[name] = v;\n m = 1;\n }\n }\n if (marktype !== 'rule') {\n adjustSpatial(item, channels, swap);\n }\n return m;\n };\n }\n};\nexport { expression as expressionInterpreter };","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nexport function isLogicalOr(op) {\n return !!op.or;\n}\nexport function isLogicalAnd(op) {\n return !!op.and;\n}\nexport function isLogicalNot(op) {\n return !!op.not;\n}\nexport function forEachLeaf(op, fn) {\n if (isLogicalNot(op)) {\n forEachLeaf(op.not, fn);\n } else if (isLogicalAnd(op)) {\n var _iterator = _createForOfIteratorHelper(op.and),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var subop = _step.value;\n forEachLeaf(subop, fn);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n } else if (isLogicalOr(op)) {\n var _iterator2 = _createForOfIteratorHelper(op.or),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _subop = _step2.value;\n forEachLeaf(_subop, fn);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n } else {\n fn(op);\n }\n}\nexport function normalizeLogicalComposition(op, normalizer) {\n if (isLogicalNot(op)) {\n return {\n not: normalizeLogicalComposition(op.not, normalizer)\n };\n } else if (isLogicalAnd(op)) {\n return {\n and: op.and.map(function (o) {\n return normalizeLogicalComposition(o, normalizer);\n })\n };\n } else if (isLogicalOr(op)) {\n return {\n or: op.or.map(function (o) {\n return normalizeLogicalComposition(o, normalizer);\n })\n };\n } else {\n return normalizer(op);\n }\n}","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { default as clone_ } from 'clone';\nimport deepEqual_ from 'fast-deep-equal';\nimport stableStringify from 'fast-json-stable-stringify';\nimport { hasOwnProperty, isNumber, isString, splitAccessPath, stringValue, writeConfig } from 'vega-util';\nimport { isLogicalAnd, isLogicalNot, isLogicalOr } from './logical';\nexport var deepEqual = deepEqual_;\nexport var duplicate = clone_;\nexport function never(message) {\n throw new Error(message);\n}\n/**\n * Creates an object composed of the picked object properties.\n *\n * var object = {'a': 1, 'b': '2', 'c': 3};\n * pick(object, ['a', 'c']);\n * // → {'a': 1, 'c': 3}\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function pick(obj, props) {\n var copy = {};\n var _iterator = _createForOfIteratorHelper(props),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var prop = _step.value;\n if (hasOwnProperty(obj, prop)) {\n copy[prop] = obj[prop];\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return copy;\n}\n/**\n * The opposite of _.pick; this method creates an object composed of the own\n * and inherited enumerable string keyed properties of object that are not omitted.\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function omit(obj, props) {\n var copy = _objectSpread({}, obj);\n var _iterator2 = _createForOfIteratorHelper(props),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var prop = _step2.value;\n delete copy[prop];\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n return copy;\n}\n/**\n * Monkey patch Set so that `stringify` produces a string representation of sets.\n */\nSet.prototype['toJSON'] = function () {\n return \"Set(\".concat(_toConsumableArray(this).map(function (x) {\n return stableStringify(x);\n }).join(','), \")\");\n};\n/**\n * Converts any object to a string representation that can be consumed by humans.\n */\nexport var stringify = stableStringify;\n/**\n * Converts any object to a string of limited size, or a number.\n */\nexport function hash(a) {\n if (isNumber(a)) {\n return a;\n }\n var str = isString(a) ? a : stableStringify(a);\n // short strings can be used as hash directly, longer strings are hashed to reduce memory usage\n if (str.length < 250) {\n return str;\n }\n // from http://werxltd.com/wp/2010/05/13/javascript-implementation-of-javas-string-hashcode-method/\n var h = 0;\n for (var i = 0; i < str.length; i++) {\n var char = str.charCodeAt(i);\n h = (h << 5) - h + char;\n h = h & h; // Convert to 32bit integer\n }\n\n return h;\n}\nexport function isNullOrFalse(x) {\n return x === false || x === null;\n}\nexport function contains(array, item) {\n return array.includes(item);\n}\n/**\n * Returns true if any item returns true.\n */\nexport function some(arr, f) {\n var i = 0;\n var _iterator3 = _createForOfIteratorHelper(arr.entries()),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var _step3$value = _slicedToArray(_step3.value, 2),\n k = _step3$value[0],\n a = _step3$value[1];\n if (f(a, k, i++)) {\n return true;\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n return false;\n}\n/**\n * Returns true if all items return true.\n */\nexport function every(arr, f) {\n var i = 0;\n var _iterator4 = _createForOfIteratorHelper(arr.entries()),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var _step4$value = _slicedToArray(_step4.value, 2),\n k = _step4$value[0],\n a = _step4$value[1];\n if (!f(a, k, i++)) {\n return false;\n }\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n return true;\n}\n/**\n * recursively merges src into dest\n */\nexport function mergeDeep(dest) {\n for (var _len = arguments.length, src = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n src[_key - 1] = arguments[_key];\n }\n for (var _i = 0, _src = src; _i < _src.length; _i++) {\n var s = _src[_i];\n deepMerge_(dest, s !== null && s !== void 0 ? s : {});\n }\n return dest;\n}\nfunction deepMerge_(dest, src) {\n var _iterator5 = _createForOfIteratorHelper(keys(src)),\n _step5;\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var property = _step5.value;\n writeConfig(dest, property, src[property], true);\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n}\nexport function unique(values, f) {\n var results = [];\n var u = {};\n var v;\n var _iterator6 = _createForOfIteratorHelper(values),\n _step6;\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var val = _step6.value;\n v = f(val);\n if (v in u) {\n continue;\n }\n u[v] = 1;\n results.push(val);\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n return results;\n}\n/**\n * Returns true if the two dictionaries disagree. Applies only to defined values.\n */\nexport function isEqual(dict, other) {\n var dictKeys = keys(dict);\n var otherKeys = keys(other);\n if (dictKeys.length !== otherKeys.length) {\n return false;\n }\n var _iterator7 = _createForOfIteratorHelper(dictKeys),\n _step7;\n try {\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n var key = _step7.value;\n if (dict[key] !== other[key]) {\n return false;\n }\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n return true;\n}\nexport function setEqual(a, b) {\n if (a.size !== b.size) {\n return false;\n }\n var _iterator8 = _createForOfIteratorHelper(a),\n _step8;\n try {\n for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {\n var e = _step8.value;\n if (!b.has(e)) {\n return false;\n }\n }\n } catch (err) {\n _iterator8.e(err);\n } finally {\n _iterator8.f();\n }\n return true;\n}\nexport function hasIntersection(a, b) {\n var _iterator9 = _createForOfIteratorHelper(a),\n _step9;\n try {\n for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {\n var key = _step9.value;\n if (b.has(key)) {\n return true;\n }\n }\n } catch (err) {\n _iterator9.e(err);\n } finally {\n _iterator9.f();\n }\n return false;\n}\nexport function prefixGenerator(a) {\n var prefixes = new Set();\n var _iterator10 = _createForOfIteratorHelper(a),\n _step10;\n try {\n var _loop = function _loop() {\n var x = _step10.value;\n var splitField = splitAccessPath(x);\n // Wrap every element other than the first in `[]`\n var wrappedWithAccessors = splitField.map(function (y, i) {\n return i === 0 ? y : \"[\".concat(y, \"]\");\n });\n var computedPrefixes = wrappedWithAccessors.map(function (_, i) {\n return wrappedWithAccessors.slice(0, i + 1).join('');\n });\n var _iterator11 = _createForOfIteratorHelper(computedPrefixes),\n _step11;\n try {\n for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {\n var y = _step11.value;\n prefixes.add(y);\n }\n } catch (err) {\n _iterator11.e(err);\n } finally {\n _iterator11.f();\n }\n };\n for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {\n _loop();\n }\n } catch (err) {\n _iterator10.e(err);\n } finally {\n _iterator10.f();\n }\n return prefixes;\n}\n/**\n * Returns true if a and b have an intersection. Also return true if a or b are undefined\n * since this means we don't know what fields a node produces or depends on.\n */\nexport function fieldIntersection(a, b) {\n if (a === undefined || b === undefined) {\n return true;\n }\n return hasIntersection(prefixGenerator(a), prefixGenerator(b));\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function isEmpty(obj) {\n return keys(obj).length === 0;\n}\n// This is a stricter version of Object.keys but with better types. See https://github.com/Microsoft/TypeScript/pull/12253#issuecomment-263132208\nexport var keys = Object.keys;\nexport var vals = Object.values;\nexport var entries = Object.entries;\nexport function isBoolean(b) {\n return b === true || b === false;\n}\n/**\n * Convert a string into a valid variable name\n */\nexport function varName(s) {\n // Replace non-alphanumeric characters (anything besides a-zA-Z0-9_) with _\n var alphanumericS = s.replace(/\\W/g, '_');\n // Add _ if the string has leading numbers.\n return (s.match(/^\\d+/) ? '_' : '') + alphanumericS;\n}\nexport function logicalExpr(op, cb) {\n if (isLogicalNot(op)) {\n return \"!(\".concat(logicalExpr(op.not, cb), \")\");\n } else if (isLogicalAnd(op)) {\n return \"(\".concat(op.and.map(function (and) {\n return logicalExpr(and, cb);\n }).join(') && ('), \")\");\n } else if (isLogicalOr(op)) {\n return \"(\".concat(op.or.map(function (or) {\n return logicalExpr(or, cb);\n }).join(') || ('), \")\");\n } else {\n return cb(op);\n }\n}\n/**\n * Delete nested property of an object, and delete the ancestors of the property if they become empty.\n */\nexport function deleteNestedProperty(obj, orderedProps) {\n if (orderedProps.length === 0) {\n return true;\n }\n var prop = orderedProps.shift(); // eslint-disable-line @typescript-eslint/no-non-null-assertion\n if (prop in obj && deleteNestedProperty(obj[prop], orderedProps)) {\n delete obj[prop];\n }\n return isEmpty(obj);\n}\nexport function titleCase(s) {\n return s.charAt(0).toUpperCase() + s.substr(1);\n}\n/**\n * Converts a path to an access path with datum.\n * @param path The field name.\n * @param datum The string to use for `datum`.\n */\nexport function accessPathWithDatum(path) {\n var datum = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'datum';\n var pieces = splitAccessPath(path);\n var prefixes = [];\n for (var i = 1; i <= pieces.length; i++) {\n var prefix = \"[\".concat(pieces.slice(0, i).map(stringValue).join(']['), \"]\");\n prefixes.push(\"\".concat(datum).concat(prefix));\n }\n return prefixes.join(' && ');\n}\n/**\n * Return access with datum to the flattened field.\n *\n * @param path The field name.\n * @param datum The string to use for `datum`.\n */\nexport function flatAccessWithDatum(path) {\n var datum = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'datum';\n return \"\".concat(datum, \"[\").concat(stringValue(splitAccessPath(path).join('.')), \"]\");\n}\nfunction escapePathAccess(string) {\n return string.replace(/(\\[|\\]|\\.|'|\")/g, '\\\\$1');\n}\n/**\n * Replaces path accesses with access to non-nested field.\n * For example, `foo[\"bar\"].baz` becomes `foo\\\\.bar\\\\.baz`.\n */\nexport function replacePathInField(path) {\n return \"\".concat(splitAccessPath(path).map(escapePathAccess).join('\\\\.'));\n}\n/**\n * Replace all occurrences of a string with another string.\n *\n * @param string the string to replace in\n * @param find the string to replace\n * @param replacement the replacement\n */\nexport function replaceAll(string, find, replacement) {\n return string.replace(new RegExp(find.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&'), 'g'), replacement);\n}\n/**\n * Remove path accesses with access from field.\n * For example, `foo[\"bar\"].baz` becomes `foo.bar.baz`.\n */\nexport function removePathFromField(path) {\n return \"\".concat(splitAccessPath(path).join('.'));\n}\n/**\n * Count the depth of the path. Returns 1 for fields that are not nested.\n */\nexport function accessPathDepth(path) {\n if (!path) {\n return 0;\n }\n return splitAccessPath(path).length;\n}\n/**\n * This is a replacement for chained || for numeric properties or properties that respect null so that 0 will be included.\n */\nexport function getFirstDefined() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n for (var _i2 = 0, _args = args; _i2 < _args.length; _i2++) {\n var arg = _args[_i2];\n if (arg !== undefined) {\n return arg;\n }\n }\n return undefined;\n}\n// variable used to generate id\nvar idCounter = 42;\n/**\n * Returns a new random id every time it gets called.\n *\n * Has side effect!\n */\nexport function uniqueId(prefix) {\n var id = ++idCounter;\n return prefix ? String(prefix) + id : id;\n}\n/**\n * Resets the id counter used in uniqueId. This can be useful for testing.\n */\nexport function resetIdCounter() {\n idCounter = 42;\n}\nexport function internalField(name) {\n return isInternalField(name) ? name : \"__\".concat(name);\n}\nexport function isInternalField(name) {\n return name.startsWith('__');\n}\n/**\n * Normalize angle to be within [0,360).\n */\nexport function normalizeAngle(angle) {\n if (angle === undefined) {\n return undefined;\n }\n return (angle % 360 + 360) % 360;\n}\n/**\n * Returns whether the passed in value is a valid number.\n */\nexport function isNumeric(value) {\n if (isNumber(value)) {\n return true;\n }\n return !isNaN(value) && !isNaN(parseFloat(value));\n}","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n/*\n * Constants and utilities for encoding channels (Visual variables)\n * such as 'x', 'y', 'color'.\n */\nimport { keys } from './util';\n// Facet\nexport var ROW = 'row';\nexport var COLUMN = 'column';\nexport var FACET = 'facet';\n// Position\nexport var X = 'x';\nexport var Y = 'y';\nexport var X2 = 'x2';\nexport var Y2 = 'y2';\n// Position Offset\nexport var XOFFSET = 'xOffset';\nexport var YOFFSET = 'yOffset';\n// Arc-Position\nexport var RADIUS = 'radius';\nexport var RADIUS2 = 'radius2';\nexport var THETA = 'theta';\nexport var THETA2 = 'theta2';\n// Geo Position\nexport var LATITUDE = 'latitude';\nexport var LONGITUDE = 'longitude';\nexport var LATITUDE2 = 'latitude2';\nexport var LONGITUDE2 = 'longitude2';\n// Mark property with scale\nexport var COLOR = 'color';\nexport var FILL = 'fill';\nexport var STROKE = 'stroke';\nexport var SHAPE = 'shape';\nexport var SIZE = 'size';\nexport var ANGLE = 'angle';\nexport var OPACITY = 'opacity';\nexport var FILLOPACITY = 'fillOpacity';\nexport var STROKEOPACITY = 'strokeOpacity';\nexport var STROKEWIDTH = 'strokeWidth';\nexport var STROKEDASH = 'strokeDash';\n// Non-scale channel\nexport var TEXT = 'text';\nexport var ORDER = 'order';\nexport var DETAIL = 'detail';\nexport var KEY = 'key';\nexport var TOOLTIP = 'tooltip';\nexport var HREF = 'href';\nexport var URL = 'url';\nexport var DESCRIPTION = 'description';\nvar POSITION_CHANNEL_INDEX = {\n x: 1,\n y: 1,\n x2: 1,\n y2: 1\n};\nvar POLAR_POSITION_CHANNEL_INDEX = {\n theta: 1,\n theta2: 1,\n radius: 1,\n radius2: 1\n};\nexport function isPolarPositionChannel(c) {\n return c in POLAR_POSITION_CHANNEL_INDEX;\n}\nvar GEO_POSIITON_CHANNEL_INDEX = {\n longitude: 1,\n longitude2: 1,\n latitude: 1,\n latitude2: 1\n};\nexport function getPositionChannelFromLatLong(channel) {\n switch (channel) {\n case LATITUDE:\n return 'y';\n case LATITUDE2:\n return 'y2';\n case LONGITUDE:\n return 'x';\n case LONGITUDE2:\n return 'x2';\n }\n}\nexport function isGeoPositionChannel(c) {\n return c in GEO_POSIITON_CHANNEL_INDEX;\n}\nexport var GEOPOSITION_CHANNELS = keys(GEO_POSIITON_CHANNEL_INDEX);\nvar UNIT_CHANNEL_INDEX = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, POSITION_CHANNEL_INDEX), POLAR_POSITION_CHANNEL_INDEX), GEO_POSIITON_CHANNEL_INDEX), {}, {\n xOffset: 1,\n yOffset: 1,\n // color\n color: 1,\n fill: 1,\n stroke: 1,\n // other non-position with scale\n opacity: 1,\n fillOpacity: 1,\n strokeOpacity: 1,\n strokeWidth: 1,\n strokeDash: 1,\n size: 1,\n angle: 1,\n shape: 1,\n // channels without scales\n order: 1,\n text: 1,\n detail: 1,\n key: 1,\n tooltip: 1,\n href: 1,\n url: 1,\n description: 1\n});\nexport function isColorChannel(channel) {\n return channel === COLOR || channel === FILL || channel === STROKE;\n}\nvar FACET_CHANNEL_INDEX = {\n row: 1,\n column: 1,\n facet: 1\n};\nexport var FACET_CHANNELS = keys(FACET_CHANNEL_INDEX);\nvar CHANNEL_INDEX = _objectSpread(_objectSpread({}, UNIT_CHANNEL_INDEX), FACET_CHANNEL_INDEX);\nexport var CHANNELS = keys(CHANNEL_INDEX);\nvar _o = CHANNEL_INDEX.order,\n _d = CHANNEL_INDEX.detail,\n _tt1 = CHANNEL_INDEX.tooltip,\n SINGLE_DEF_CHANNEL_INDEX = _objectWithoutProperties(CHANNEL_INDEX, [\"order\", \"detail\", \"tooltip\"]);\nvar _r = SINGLE_DEF_CHANNEL_INDEX.row,\n _c = SINGLE_DEF_CHANNEL_INDEX.column,\n _f = SINGLE_DEF_CHANNEL_INDEX.facet,\n SINGLE_DEF_UNIT_CHANNEL_INDEX = _objectWithoutProperties(SINGLE_DEF_CHANNEL_INDEX, [\"row\", \"column\", \"facet\"]);\n/**\n * Channels that cannot have an array of channelDef.\n * model.fieldDef, getFieldDef only work for these channels.\n *\n * (The only two channels that can have an array of channelDefs are \"detail\" and \"order\".\n * Since there can be multiple fieldDefs for detail and order, getFieldDef/model.fieldDef\n * are not applicable for them. Similarly, selection projection won't work with \"detail\" and \"order\".)\n */\nexport var SINGLE_DEF_CHANNELS = keys(SINGLE_DEF_CHANNEL_INDEX);\nexport var SINGLE_DEF_UNIT_CHANNELS = keys(SINGLE_DEF_UNIT_CHANNEL_INDEX);\nexport function isSingleDefUnitChannel(str) {\n return !!SINGLE_DEF_UNIT_CHANNEL_INDEX[str];\n}\nexport function isChannel(str) {\n return !!CHANNEL_INDEX[str];\n}\nexport var SECONDARY_RANGE_CHANNEL = [X2, Y2, LATITUDE2, LONGITUDE2, THETA2, RADIUS2];\nexport function isSecondaryRangeChannel(c) {\n var main = getMainRangeChannel(c);\n return main !== c;\n}\n/**\n * Get the main channel for a range channel. E.g. `x` for `x2`.\n */\nexport function getMainRangeChannel(channel) {\n switch (channel) {\n case X2:\n return X;\n case Y2:\n return Y;\n case LATITUDE2:\n return LATITUDE;\n case LONGITUDE2:\n return LONGITUDE;\n case THETA2:\n return THETA;\n case RADIUS2:\n return RADIUS;\n }\n return channel;\n}\nexport function getVgPositionChannel(channel) {\n if (isPolarPositionChannel(channel)) {\n switch (channel) {\n case THETA:\n return 'startAngle';\n case THETA2:\n return 'endAngle';\n case RADIUS:\n return 'outerRadius';\n case RADIUS2:\n return 'innerRadius';\n }\n }\n return channel;\n}\n/**\n * Get the main channel for a range channel. E.g. `x` for `x2`.\n */\nexport function getSecondaryRangeChannel(channel) {\n switch (channel) {\n case X:\n return X2;\n case Y:\n return Y2;\n case LATITUDE:\n return LATITUDE2;\n case LONGITUDE:\n return LONGITUDE2;\n case THETA:\n return THETA2;\n case RADIUS:\n return RADIUS2;\n }\n return undefined;\n}\nexport function getSizeChannel(channel) {\n switch (channel) {\n case X:\n case X2:\n return 'width';\n case Y:\n case Y2:\n return 'height';\n }\n return undefined;\n}\n/**\n * Get the main channel for a range channel. E.g. `x` for `x2`.\n */\nexport function getOffsetChannel(channel) {\n switch (channel) {\n case X:\n return 'xOffset';\n case Y:\n return 'yOffset';\n case X2:\n return 'x2Offset';\n case Y2:\n return 'y2Offset';\n case THETA:\n return 'thetaOffset';\n case RADIUS:\n return 'radiusOffset';\n case THETA2:\n return 'theta2Offset';\n case RADIUS2:\n return 'radius2Offset';\n }\n return undefined;\n}\n/**\n * Get the main channel for a range channel. E.g. `x` for `x2`.\n */\nexport function getOffsetScaleChannel(channel) {\n switch (channel) {\n case X:\n return 'xOffset';\n case Y:\n return 'yOffset';\n }\n return undefined;\n}\nexport function getMainChannelFromOffsetChannel(channel) {\n switch (channel) {\n case 'xOffset':\n return 'x';\n case 'yOffset':\n return 'y';\n }\n}\n// CHANNELS without COLUMN, ROW\nexport var UNIT_CHANNELS = keys(UNIT_CHANNEL_INDEX);\n// NONPOSITION_CHANNELS = UNIT_CHANNELS without X, Y, X2, Y2;\nvar _x = UNIT_CHANNEL_INDEX.x,\n _y = UNIT_CHANNEL_INDEX.y,\n _x2 = UNIT_CHANNEL_INDEX.x2,\n _y2 = UNIT_CHANNEL_INDEX.y2,\n _xo = UNIT_CHANNEL_INDEX.xOffset,\n _yo = UNIT_CHANNEL_INDEX.yOffset,\n _latitude = UNIT_CHANNEL_INDEX.latitude,\n _longitude = UNIT_CHANNEL_INDEX.longitude,\n _latitude2 = UNIT_CHANNEL_INDEX.latitude2,\n _longitude2 = UNIT_CHANNEL_INDEX.longitude2,\n _theta = UNIT_CHANNEL_INDEX.theta,\n _theta2 = UNIT_CHANNEL_INDEX.theta2,\n _radius = UNIT_CHANNEL_INDEX.radius,\n _radius2 = UNIT_CHANNEL_INDEX.radius2,\n NONPOSITION_CHANNEL_INDEX = _objectWithoutProperties(UNIT_CHANNEL_INDEX, [\"x\", \"y\", \"x2\", \"y2\", \"xOffset\", \"yOffset\", \"latitude\", \"longitude\", \"latitude2\", \"longitude2\", \"theta\", \"theta2\", \"radius\", \"radius2\"]);\nexport var NONPOSITION_CHANNELS = keys(NONPOSITION_CHANNEL_INDEX);\nvar POSITION_SCALE_CHANNEL_INDEX = {\n x: 1,\n y: 1\n};\nexport var POSITION_SCALE_CHANNELS = keys(POSITION_SCALE_CHANNEL_INDEX);\nexport function isXorY(channel) {\n return channel in POSITION_SCALE_CHANNEL_INDEX;\n}\nexport var POLAR_POSITION_SCALE_CHANNEL_INDEX = {\n theta: 1,\n radius: 1\n};\nexport var POLAR_POSITION_SCALE_CHANNELS = keys(POLAR_POSITION_SCALE_CHANNEL_INDEX);\nexport function getPositionScaleChannel(sizeType) {\n return sizeType === 'width' ? X : Y;\n}\nvar OFFSET_SCALE_CHANNEL_INDEX = {\n xOffset: 1,\n yOffset: 1\n};\nexport var OFFSET_SCALE_CHANNELS = keys(OFFSET_SCALE_CHANNEL_INDEX);\nexport function isXorYOffset(channel) {\n return channel in OFFSET_SCALE_CHANNEL_INDEX;\n}\n// NON_POSITION_SCALE_CHANNEL = SCALE_CHANNELS without position / offset\nvar _t = NONPOSITION_CHANNEL_INDEX.text,\n _tt = NONPOSITION_CHANNEL_INDEX.tooltip,\n _hr = NONPOSITION_CHANNEL_INDEX.href,\n _u = NONPOSITION_CHANNEL_INDEX.url,\n _al = NONPOSITION_CHANNEL_INDEX.description,\n _dd = NONPOSITION_CHANNEL_INDEX.detail,\n _k = NONPOSITION_CHANNEL_INDEX.key,\n _oo = NONPOSITION_CHANNEL_INDEX.order,\n NONPOSITION_SCALE_CHANNEL_INDEX = _objectWithoutProperties(NONPOSITION_CHANNEL_INDEX, [\"text\", \"tooltip\", \"href\", \"url\", \"description\", \"detail\", \"key\", \"order\"]);\nexport var NONPOSITION_SCALE_CHANNELS = keys(NONPOSITION_SCALE_CHANNEL_INDEX);\nexport function isNonPositionScaleChannel(channel) {\n return !!NONPOSITION_CHANNEL_INDEX[channel];\n}\n/**\n * @returns whether Vega supports legends for a particular channel\n */\nexport function supportLegend(channel) {\n switch (channel) {\n case COLOR:\n case FILL:\n case STROKE:\n case SIZE:\n case SHAPE:\n case OPACITY:\n case STROKEWIDTH:\n case STROKEDASH:\n return true;\n case FILLOPACITY:\n case STROKEOPACITY:\n case ANGLE:\n return false;\n }\n}\n// Declare SCALE_CHANNEL_INDEX\nvar SCALE_CHANNEL_INDEX = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, POSITION_SCALE_CHANNEL_INDEX), POLAR_POSITION_SCALE_CHANNEL_INDEX), OFFSET_SCALE_CHANNEL_INDEX), NONPOSITION_SCALE_CHANNEL_INDEX);\n/** List of channels with scales */\nexport var SCALE_CHANNELS = keys(SCALE_CHANNEL_INDEX);\nexport function isScaleChannel(channel) {\n return !!SCALE_CHANNEL_INDEX[channel];\n}\n/**\n * Return whether a channel supports a particular mark type.\n * @param channel channel name\n * @param mark the mark type\n * @return whether the mark supports the channel\n */\nexport function supportMark(channel, mark) {\n return getSupportedMark(channel)[mark];\n}\nvar ALL_MARKS = {\n // all marks\n arc: 'always',\n area: 'always',\n bar: 'always',\n circle: 'always',\n geoshape: 'always',\n image: 'always',\n line: 'always',\n rule: 'always',\n point: 'always',\n rect: 'always',\n square: 'always',\n trail: 'always',\n text: 'always',\n tick: 'always'\n};\nvar _g = ALL_MARKS.geoshape,\n ALL_MARKS_EXCEPT_GEOSHAPE = _objectWithoutProperties(ALL_MARKS, [\"geoshape\"]);\n/**\n * Return a dictionary showing whether a channel supports mark type.\n * @param channel\n * @return A dictionary mapping mark types to 'always', 'binned', or undefined\n */\nfunction getSupportedMark(channel) {\n switch (channel) {\n case COLOR:\n case FILL:\n case STROKE:\n // falls through\n case DESCRIPTION:\n case DETAIL:\n case KEY:\n case TOOLTIP:\n case HREF:\n case ORDER: // TODO: revise (order might not support rect, which is not stackable?)\n case OPACITY:\n case FILLOPACITY:\n case STROKEOPACITY:\n case STROKEWIDTH:\n // falls through\n case FACET:\n case ROW: // falls through\n case COLUMN:\n return ALL_MARKS;\n case X:\n case Y:\n case XOFFSET:\n case YOFFSET:\n case LATITUDE:\n case LONGITUDE:\n // all marks except geoshape. geoshape does not use X, Y -- it uses a projection\n return ALL_MARKS_EXCEPT_GEOSHAPE;\n case X2:\n case Y2:\n case LATITUDE2:\n case LONGITUDE2:\n return {\n area: 'always',\n bar: 'always',\n image: 'always',\n rect: 'always',\n rule: 'always',\n circle: 'binned',\n point: 'binned',\n square: 'binned',\n tick: 'binned',\n line: 'binned',\n trail: 'binned'\n };\n case SIZE:\n return {\n point: 'always',\n tick: 'always',\n rule: 'always',\n circle: 'always',\n square: 'always',\n bar: 'always',\n text: 'always',\n line: 'always',\n trail: 'always'\n };\n case STROKEDASH:\n return {\n line: 'always',\n point: 'always',\n tick: 'always',\n rule: 'always',\n circle: 'always',\n square: 'always',\n bar: 'always',\n geoshape: 'always'\n };\n case SHAPE:\n return {\n point: 'always',\n geoshape: 'always'\n };\n case TEXT:\n return {\n text: 'always'\n };\n case ANGLE:\n return {\n point: 'always',\n square: 'always',\n text: 'always'\n };\n case URL:\n return {\n image: 'always'\n };\n case THETA:\n return {\n text: 'always',\n arc: 'always'\n };\n case RADIUS:\n return {\n text: 'always',\n arc: 'always'\n };\n case THETA2:\n case RADIUS2:\n return {\n arc: 'always'\n };\n }\n}\nexport function rangeType(channel) {\n switch (channel) {\n case X:\n case Y:\n case THETA:\n case RADIUS:\n case XOFFSET:\n case YOFFSET:\n case SIZE:\n case ANGLE:\n case STROKEWIDTH:\n case OPACITY:\n case FILLOPACITY:\n case STROKEOPACITY:\n // X2 and Y2 use X and Y scales, so they similarly have continuous range. [falls through]\n case X2:\n case Y2:\n case THETA2:\n case RADIUS2:\n return undefined;\n case FACET:\n case ROW:\n case COLUMN:\n case SHAPE:\n case STROKEDASH:\n // TEXT, TOOLTIP, URL, and HREF have no scale but have discrete output [falls through]\n case TEXT:\n case TOOLTIP:\n case HREF:\n case URL:\n case DESCRIPTION:\n return 'discrete';\n // Color can be either continuous or discrete, depending on scale type.\n case COLOR:\n case FILL:\n case STROKE:\n return 'flexible';\n // No scale, no range type.\n case LATITUDE:\n case LONGITUDE:\n case LATITUDE2:\n case LONGITUDE2:\n case DETAIL:\n case KEY:\n case ORDER:\n return undefined;\n }\n}","import { isString } from 'vega-util';\nimport { contains } from './util';\nvar AGGREGATE_OP_INDEX = {\n argmax: 1,\n argmin: 1,\n average: 1,\n count: 1,\n distinct: 1,\n product: 1,\n max: 1,\n mean: 1,\n median: 1,\n min: 1,\n missing: 1,\n q1: 1,\n q3: 1,\n ci0: 1,\n ci1: 1,\n stderr: 1,\n stdev: 1,\n stdevp: 1,\n sum: 1,\n valid: 1,\n values: 1,\n variance: 1,\n variancep: 1\n};\nexport var MULTIDOMAIN_SORT_OP_INDEX = {\n count: 1,\n min: 1,\n max: 1\n};\nexport function isArgminDef(a) {\n return !!a && !!a['argmin'];\n}\nexport function isArgmaxDef(a) {\n return !!a && !!a['argmax'];\n}\nexport function isAggregateOp(a) {\n return isString(a) && !!AGGREGATE_OP_INDEX[a];\n}\nexport var COUNTING_OPS = new Set(['count', 'valid', 'missing', 'distinct']);\nexport function isCountingAggregateOp(aggregate) {\n return isString(aggregate) && COUNTING_OPS.has(aggregate);\n}\nexport function isMinMaxOp(aggregate) {\n return isString(aggregate) && contains(['min', 'max'], aggregate);\n}\n/** Additive-based aggregation operations. These can be applied to stack. */\nexport var SUM_OPS = new Set(['count', 'sum', 'distinct', 'valid', 'missing']);\n/**\n * Aggregation operators that always produce values within the range [domainMin, domainMax].\n */\nexport var SHARED_DOMAIN_OPS = new Set(['mean', 'average', 'median', 'q1', 'q3', 'min', 'max']);","import { isBoolean, isObject } from 'vega-util';\nimport { COLOR, COLUMN, FILL, FILLOPACITY, OPACITY, ROW, SHAPE, SIZE, STROKE, STROKEDASH, STROKEOPACITY, STROKEWIDTH } from './channel';\nimport { normalizeBin } from './channeldef';\nimport { entries, keys, varName } from './util';\n/**\n * Create a key for the bin configuration. Not for prebinned bin.\n */\nexport function binToString(bin) {\n if (isBoolean(bin)) {\n bin = normalizeBin(bin, undefined);\n }\n return 'bin' + keys(bin).map(function (p) {\n return isParameterExtent(bin[p]) ? varName(\"_\".concat(p, \"_\").concat(entries(bin[p]))) : varName(\"_\".concat(p, \"_\").concat(bin[p]));\n }).join('');\n}\n/**\n * Vega-Lite should bin the data.\n */\nexport function isBinning(bin) {\n return bin === true || isBinParams(bin) && !bin.binned;\n}\n/**\n * The data is already binned and so Vega-Lite should not bin it again.\n */\nexport function isBinned(bin) {\n return bin === 'binned' || isBinParams(bin) && bin.binned === true;\n}\nexport function isBinParams(bin) {\n return isObject(bin);\n}\nexport function isParameterExtent(extent) {\n return extent === null || extent === void 0 ? void 0 : extent['param'];\n}\nexport function autoMaxBins(channel) {\n switch (channel) {\n case ROW:\n case COLUMN:\n case SIZE:\n case COLOR:\n case FILL:\n case STROKE:\n case STROKEWIDTH:\n case OPACITY:\n case FILLOPACITY:\n case STROKEOPACITY:\n // Facets and Size shouldn't have too many bins\n // We choose 6 like shape to simplify the rule [falls through]\n case SHAPE:\n return 6;\n // Vega's \"shape\" has 6 distinct values\n case STROKEDASH:\n return 4;\n // We only provide 5 different stroke dash values (but 4 is more effective)\n default:\n return 10;\n }\n}","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { signalRefOrValue } from './compile/common';\nimport { keys } from './util';\nexport function isExprRef(o) {\n return !!(o !== null && o !== void 0 && o.expr);\n}\nexport function replaceExprRef(index) {\n var props = keys(index || {});\n var newIndex = {};\n var _iterator = _createForOfIteratorHelper(props),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var prop = _step.value;\n newIndex[prop] = signalRefOrValue(index[prop]);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return newIndex;\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"anchor\", \"frame\", \"offset\", \"orient\", \"angle\", \"limit\", \"color\", \"subtitleColor\", \"subtitleFont\", \"subtitleFontSize\", \"subtitleFontStyle\", \"subtitleFontWeight\", \"subtitleLineHeight\", \"subtitlePadding\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { isArray, isString } from 'vega-util';\nimport { pick } from './util';\nexport function extractTitleConfig(titleConfig) {\n var anchor = titleConfig.anchor,\n frame = titleConfig.frame,\n offset = titleConfig.offset,\n orient = titleConfig.orient,\n angle = titleConfig.angle,\n limit = titleConfig.limit,\n color = titleConfig.color,\n subtitleColor = titleConfig.subtitleColor,\n subtitleFont = titleConfig.subtitleFont,\n subtitleFontSize = titleConfig.subtitleFontSize,\n subtitleFontStyle = titleConfig.subtitleFontStyle,\n subtitleFontWeight = titleConfig.subtitleFontWeight,\n subtitleLineHeight = titleConfig.subtitleLineHeight,\n subtitlePadding = titleConfig.subtitlePadding,\n rest = _objectWithoutProperties(titleConfig, _excluded);\n var titleMarkConfig = _objectSpread(_objectSpread({}, rest), color ? {\n fill: color\n } : {});\n // These are non-mark title config that need to be hardcoded\n var nonMarkTitleProperties = _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, anchor ? {\n anchor: anchor\n } : {}), frame ? {\n frame: frame\n } : {}), offset ? {\n offset: offset\n } : {}), orient ? {\n orient: orient\n } : {}), angle !== undefined ? {\n angle: angle\n } : {}), limit !== undefined ? {\n limit: limit\n } : {});\n // subtitle part can stay in config.title since header titles do not use subtitle\n var subtitle = _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, subtitleColor ? {\n subtitleColor: subtitleColor\n } : {}), subtitleFont ? {\n subtitleFont: subtitleFont\n } : {}), subtitleFontSize ? {\n subtitleFontSize: subtitleFontSize\n } : {}), subtitleFontStyle ? {\n subtitleFontStyle: subtitleFontStyle\n } : {}), subtitleFontWeight ? {\n subtitleFontWeight: subtitleFontWeight\n } : {}), subtitleLineHeight ? {\n subtitleLineHeight: subtitleLineHeight\n } : {}), subtitlePadding ? {\n subtitlePadding: subtitlePadding\n } : {});\n var subtitleMarkConfig = pick(titleConfig, ['align', 'baseline', 'dx', 'dy', 'limit']);\n return {\n titleMarkConfig: titleMarkConfig,\n subtitleMarkConfig: subtitleMarkConfig,\n nonMarkTitleProperties: nonMarkTitleProperties,\n subtitle: subtitle\n };\n}\nexport function isText(v) {\n return isString(v) || isArray(v) && isString(v[0]);\n}","import { isArray } from 'vega-util';\nimport { keys } from './util';\nexport function isSignalRef(o) {\n return !!(o !== null && o !== void 0 && o.signal);\n}\nexport function isVgRangeStep(range) {\n return !!range['step'];\n}\nexport function isDataRefUnionedDomain(domain) {\n if (!isArray(domain)) {\n return 'fields' in domain && !('data' in domain);\n }\n return false;\n}\nexport function isFieldRefUnionDomain(domain) {\n if (!isArray(domain)) {\n return 'fields' in domain && 'data' in domain;\n }\n return false;\n}\nexport function isDataRefDomain(domain) {\n if (!isArray(domain)) {\n return 'field' in domain && 'data' in domain;\n }\n return false;\n}\nvar VG_MARK_CONFIG_INDEX = {\n aria: 1,\n description: 1,\n ariaRole: 1,\n ariaRoleDescription: 1,\n blend: 1,\n opacity: 1,\n fill: 1,\n fillOpacity: 1,\n stroke: 1,\n strokeCap: 1,\n strokeWidth: 1,\n strokeOpacity: 1,\n strokeDash: 1,\n strokeDashOffset: 1,\n strokeJoin: 1,\n strokeOffset: 1,\n strokeMiterLimit: 1,\n startAngle: 1,\n endAngle: 1,\n padAngle: 1,\n innerRadius: 1,\n outerRadius: 1,\n size: 1,\n shape: 1,\n interpolate: 1,\n tension: 1,\n orient: 1,\n align: 1,\n baseline: 1,\n text: 1,\n dir: 1,\n dx: 1,\n dy: 1,\n ellipsis: 1,\n limit: 1,\n radius: 1,\n theta: 1,\n angle: 1,\n font: 1,\n fontSize: 1,\n fontWeight: 1,\n fontStyle: 1,\n lineBreak: 1,\n lineHeight: 1,\n cursor: 1,\n href: 1,\n tooltip: 1,\n cornerRadius: 1,\n cornerRadiusTopLeft: 1,\n cornerRadiusTopRight: 1,\n cornerRadiusBottomLeft: 1,\n cornerRadiusBottomRight: 1,\n aspect: 1,\n width: 1,\n height: 1,\n url: 1,\n smooth: 1\n // commented below are vg channel that do not have mark config.\n // x: 1,\n // y: 1,\n // x2: 1,\n // y2: 1,\n // xc'|'yc'\n // clip: 1,\n // path: 1,\n // url: 1,\n};\n\nexport var VG_MARK_CONFIGS = keys(VG_MARK_CONFIG_INDEX);\nexport var VG_MARK_INDEX = {\n arc: 1,\n area: 1,\n group: 1,\n image: 1,\n line: 1,\n path: 1,\n rect: 1,\n rule: 1,\n shape: 1,\n symbol: 1,\n text: 1,\n trail: 1\n};\n// Vega's cornerRadius channels.\nexport var VG_CORNERRADIUS_CHANNELS = ['cornerRadius', 'cornerRadiusTopLeft', 'cornerRadiusTopRight', 'cornerRadiusBottomLeft', 'cornerRadiusBottomRight'];","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nvar _excluded = [\"expr\"],\n _excluded2 = [\"expr\"],\n _excluded3 = [\"expr\"];\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { array, isArray, stringValue } from 'vega-util';\nimport { vgField } from '../channeldef';\nimport { isExprRef } from '../expr';\nimport { isText } from '../title';\nimport { deepEqual, getFirstDefined } from '../util';\nimport { isSignalRef } from '../vega.schema';\nexport var BIN_RANGE_DELIMITER = \" \\u2013 \";\nexport function signalOrValueRefWithCondition(val) {\n var condition = isArray(val.condition) ? val.condition.map(conditionalSignalRefOrValue) : conditionalSignalRefOrValue(val.condition);\n return _objectSpread(_objectSpread({}, signalRefOrValue(val)), {}, {\n condition: condition\n });\n}\nexport function signalRefOrValue(value) {\n if (isExprRef(value)) {\n var expr = value.expr,\n rest = _objectWithoutProperties(value, _excluded);\n return _objectSpread({\n signal: expr\n }, rest);\n }\n return value;\n}\nexport function conditionalSignalRefOrValue(value) {\n if (isExprRef(value)) {\n var expr = value.expr,\n rest = _objectWithoutProperties(value, _excluded2);\n return _objectSpread({\n signal: expr\n }, rest);\n }\n return value;\n}\nexport function signalOrValueRef(value) {\n if (isExprRef(value)) {\n var expr = value.expr,\n rest = _objectWithoutProperties(value, _excluded3);\n return _objectSpread({\n signal: expr\n }, rest);\n }\n if (isSignalRef(value)) {\n return value;\n }\n return value !== undefined ? {\n value: value\n } : undefined;\n}\nexport function exprFromSignalRefOrValue(ref) {\n if (isSignalRef(ref)) {\n return ref.signal;\n }\n return stringValue(ref);\n}\nexport function exprFromValueRefOrSignalRef(ref) {\n if (isSignalRef(ref)) {\n return ref.signal;\n }\n return stringValue(ref.value);\n}\nexport function signalOrStringValue(v) {\n if (isSignalRef(v)) {\n return v.signal;\n }\n return v == null ? null : stringValue(v);\n}\nexport function applyMarkConfig(e, model, propsList) {\n var _iterator = _createForOfIteratorHelper(propsList),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var property = _step.value;\n var value = getMarkConfig(property, model.markDef, model.config);\n if (value !== undefined) {\n e[property] = signalOrValueRef(value);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return e;\n}\nexport function getStyles(mark) {\n var _mark$style;\n return [].concat(mark.type, (_mark$style = mark.style) !== null && _mark$style !== void 0 ? _mark$style : []);\n}\nexport function getMarkPropOrConfig(channel, mark, config) {\n var opt = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var vgChannel = opt.vgChannel,\n ignoreVgConfig = opt.ignoreVgConfig;\n if (vgChannel && mark[vgChannel] !== undefined) {\n return mark[vgChannel];\n } else if (mark[channel] !== undefined) {\n return mark[channel];\n } else if (ignoreVgConfig && (!vgChannel || vgChannel === channel)) {\n return undefined;\n }\n return getMarkConfig(channel, mark, config, opt);\n}\n/**\n * Return property value from style or mark specific config property if exists.\n * Otherwise, return general mark specific config.\n */\nexport function getMarkConfig(channel, mark, config) {\n var _ref = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {},\n vgChannel = _ref.vgChannel;\n return getFirstDefined(\n // style config has highest precedence\n vgChannel ? getMarkStyleConfig(channel, mark, config.style) : undefined, getMarkStyleConfig(channel, mark, config.style),\n // then mark-specific config\n vgChannel ? config[mark.type][vgChannel] : undefined, config[mark.type][channel],\n // Need to cast because MarkDef doesn't perfectly match with AnyMarkConfig, but if the type isn't available, we'll get nothing here, which is fine\n // If there is vgChannel, skip vl channel.\n // For example, vl size for text is vg fontSize, but config.mark.size is only for point size.\n vgChannel ? config.mark[vgChannel] : config.mark[channel] // Need to cast for the same reason as above\n );\n}\n\nexport function getMarkStyleConfig(prop, mark, styleConfigIndex) {\n return getStyleConfig(prop, getStyles(mark), styleConfigIndex);\n}\nexport function getStyleConfig(p, styles, styleConfigIndex) {\n styles = array(styles);\n var value;\n var _iterator2 = _createForOfIteratorHelper(styles),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var style = _step2.value;\n var styleConfig = styleConfigIndex[style];\n if (styleConfig && styleConfig[p] !== undefined) {\n value = styleConfig[p];\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n return value;\n}\n/**\n * Return Vega sort parameters (tuple of field and order).\n */\nexport function sortParams(orderDef, fieldRefOption) {\n return array(orderDef).reduce(function (s, orderChannelDef) {\n var _orderChannelDef$sort;\n s.field.push(vgField(orderChannelDef, fieldRefOption));\n s.order.push((_orderChannelDef$sort = orderChannelDef.sort) !== null && _orderChannelDef$sort !== void 0 ? _orderChannelDef$sort : 'ascending');\n return s;\n }, {\n field: [],\n order: []\n });\n}\nexport function mergeTitleFieldDefs(f1, f2) {\n var merged = _toConsumableArray(f1);\n f2.forEach(function (fdToMerge) {\n var _iterator3 = _createForOfIteratorHelper(merged),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var fieldDef1 = _step3.value;\n // If already exists, no need to append to merged array\n if (deepEqual(fieldDef1, fdToMerge)) {\n return;\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n merged.push(fdToMerge);\n });\n return merged;\n}\nexport function mergeTitle(title1, title2) {\n if (deepEqual(title1, title2) || !title2) {\n // if titles are the same or title2 is falsy\n return title1;\n } else if (!title1) {\n // if title1 is falsy\n return title2;\n } else {\n return [].concat(_toConsumableArray(array(title1)), _toConsumableArray(array(title2))).join(', ');\n }\n}\nexport function mergeTitleComponent(v1, v2) {\n var v1Val = v1.value;\n var v2Val = v2.value;\n if (v1Val == null || v2Val === null) {\n return {\n explicit: v1.explicit,\n value: null\n };\n } else if ((isText(v1Val) || isSignalRef(v1Val)) && (isText(v2Val) || isSignalRef(v2Val))) {\n return {\n explicit: v1.explicit,\n value: mergeTitle(v1Val, v2Val)\n };\n } else if (isText(v1Val) || isSignalRef(v1Val)) {\n return {\n explicit: v1.explicit,\n value: v1Val\n };\n } else if (isText(v2Val) || isSignalRef(v2Val)) {\n return {\n explicit: v1.explicit,\n value: v2Val\n };\n } else if (!isText(v1Val) && !isSignalRef(v1Val) && !isText(v2Val) && !isSignalRef(v2Val)) {\n return {\n explicit: v1.explicit,\n value: mergeTitleFieldDefs(v1Val, v2Val)\n };\n }\n /* istanbul ignore next: Condition should not happen -- only for warning in development. */\n throw new Error('It should never reach here');\n}","import { getSizeChannel } from '../channel';\nimport { stringify } from '../util';\nexport function invalidSpec(spec) {\n return \"Invalid specification \".concat(stringify(spec), \". Make sure the specification includes at least one of the following properties: \\\"mark\\\", \\\"layer\\\", \\\"facet\\\", \\\"hconcat\\\", \\\"vconcat\\\", \\\"concat\\\", or \\\"repeat\\\".\");\n}\n// FIT\nexport var FIT_NON_SINGLE = 'Autosize \"fit\" only works for single views and layered views.';\nexport function containerSizeNonSingle(name) {\n var uName = name == 'width' ? 'Width' : 'Height';\n return \"\".concat(uName, \" \\\"container\\\" only works for single views and layered views.\");\n}\nexport function containerSizeNotCompatibleWithAutosize(name) {\n var uName = name == 'width' ? 'Width' : 'Height';\n var fitDirection = name == 'width' ? 'x' : 'y';\n return \"\".concat(uName, \" \\\"container\\\" only works well with autosize \\\"fit\\\" or \\\"fit-\").concat(fitDirection, \"\\\".\");\n}\nexport function droppingFit(channel) {\n return channel ? \"Dropping \\\"fit-\".concat(channel, \"\\\" because spec has discrete \").concat(getSizeChannel(channel), \".\") : \"Dropping \\\"fit\\\" because spec has discrete size.\";\n}\n// VIEW SIZE\nexport function unknownField(channel) {\n return \"Unknown field for \".concat(channel, \". Cannot calculate view size.\");\n}\n// SELECTION\nexport function cannotProjectOnChannelWithoutField(channel) {\n return \"Cannot project a selection on encoding channel \\\"\".concat(channel, \"\\\", which has no field.\");\n}\nexport function cannotProjectAggregate(channel, aggregate) {\n return \"Cannot project a selection on encoding channel \\\"\".concat(channel, \"\\\" as it uses an aggregate function (\\\"\").concat(aggregate, \"\\\").\");\n}\nexport function nearestNotSupportForContinuous(mark) {\n return \"The \\\"nearest\\\" transform is not supported for \".concat(mark, \" marks.\");\n}\nexport function selectionNotSupported(mark) {\n return \"Selection not supported for \".concat(mark, \" yet.\");\n}\nexport function selectionNotFound(name) {\n return \"Cannot find a selection named \\\"\".concat(name, \"\\\".\");\n}\nexport var SCALE_BINDINGS_CONTINUOUS = 'Scale bindings are currently only supported for scales with unbinned, continuous domains.';\nexport var LEGEND_BINDINGS_MUST_HAVE_PROJECTION = 'Legend bindings are only supported for selections over an individual field or encoding channel.';\nexport function cannotLookupVariableParameter(name) {\n return \"Lookups can only be performed on selection parameters. \\\"\".concat(name, \"\\\" is a variable parameter.\");\n}\nexport function noSameUnitLookup(name) {\n return \"Cannot define and lookup the \\\"\".concat(name, \"\\\" selection in the same view. \") + \"Try moving the lookup into a second, layered view?\";\n}\nexport var NEEDS_SAME_SELECTION = 'The same selection must be used to override scale domains in a layered view.';\nexport var INTERVAL_INITIALIZED_WITH_POS = 'Interval selections should be initialized using \"x\", \"y\", \"longitude\", or \"latitude\" keys.';\n// REPEAT\nexport function noSuchRepeatedValue(field) {\n return \"Unknown repeated value \\\"\".concat(field, \"\\\".\");\n}\nexport function columnsNotSupportByRowCol(type) {\n return \"The \\\"columns\\\" property cannot be used when \\\"\".concat(type, \"\\\" has nested row/column.\");\n}\n// CONCAT / REPEAT\nexport var CONCAT_CANNOT_SHARE_AXIS = 'Axes cannot be shared in concatenated or repeated views yet (https://github.com/vega/vega-lite/issues/2415).';\n// DATA\nexport function unrecognizedParse(p) {\n return \"Unrecognized parse \\\"\".concat(p, \"\\\".\");\n}\nexport function differentParse(field, local, ancestor) {\n return \"An ancestor parsed field \\\"\".concat(field, \"\\\" as \").concat(ancestor, \" but a child wants to parse the field as \").concat(local, \".\");\n}\nexport var ADD_SAME_CHILD_TWICE = 'Attempt to add the same child twice.';\n// TRANSFORMS\nexport function invalidTransformIgnored(transform) {\n return \"Ignoring an invalid transform: \".concat(stringify(transform), \".\");\n}\nexport var NO_FIELDS_NEEDS_AS = 'If \"from.fields\" is not specified, \"as\" has to be a string that specifies the key to be used for the data from the secondary source.';\n// ENCODING & FACET\nexport function customFormatTypeNotAllowed(channel) {\n return \"Config.customFormatTypes is not true, thus custom format type and format for channel \".concat(channel, \" are dropped.\");\n}\nexport function projectionOverridden(opt) {\n var parentProjection = opt.parentProjection,\n projection = opt.projection;\n return \"Layer's shared projection \".concat(stringify(parentProjection), \" is overridden by a child projection \").concat(stringify(projection), \".\");\n}\nexport var REPLACE_ANGLE_WITH_THETA = 'Arc marks uses theta channel rather than angle, replacing angle with theta.';\nexport function offsetNestedInsideContinuousPositionScaleDropped(mainChannel) {\n return \"\".concat(mainChannel, \"Offset dropped because \").concat(mainChannel, \" is continuous\");\n}\nexport function replaceOffsetWithMainChannel(mainChannel) {\n return \"There is no \".concat(mainChannel, \" encoding. Replacing \").concat(mainChannel, \"Offset encoding as \").concat(mainChannel, \".\");\n}\nexport function primitiveChannelDef(channel, type, value) {\n return \"Channel \".concat(channel, \" is a \").concat(type, \". Converted to {value: \").concat(stringify(value), \"}.\");\n}\nexport function invalidFieldType(type) {\n return \"Invalid field type \\\"\".concat(type, \"\\\".\");\n}\nexport function invalidFieldTypeForCountAggregate(type, aggregate) {\n return \"Invalid field type \\\"\".concat(type, \"\\\" for aggregate: \\\"\").concat(aggregate, \"\\\", using \\\"quantitative\\\" instead.\");\n}\nexport function invalidAggregate(aggregate) {\n return \"Invalid aggregation operator \\\"\".concat(aggregate, \"\\\".\");\n}\nexport function missingFieldType(channel, newType) {\n return \"Missing type for channel \\\"\".concat(channel, \"\\\", using \\\"\").concat(newType, \"\\\" instead.\");\n}\nexport function droppingColor(type, opt) {\n var fill = opt.fill,\n stroke = opt.stroke;\n return \"Dropping color \".concat(type, \" as the plot also has \").concat(fill && stroke ? 'fill and stroke' : fill ? 'fill' : 'stroke', \".\");\n}\nexport function relativeBandSizeNotSupported(sizeChannel) {\n return \"Position range does not support relative band size for \".concat(sizeChannel, \".\");\n}\nexport function emptyFieldDef(fieldDef, channel) {\n return \"Dropping \".concat(stringify(fieldDef), \" from channel \\\"\").concat(channel, \"\\\" since it does not contain any data field, datum, value, or signal.\");\n}\nexport var LINE_WITH_VARYING_SIZE = 'Line marks cannot encode size with a non-groupby field. You may want to use trail marks instead.';\nexport function incompatibleChannel(channel, markOrFacet, when) {\n return \"\".concat(channel, \" dropped as it is incompatible with \\\"\").concat(markOrFacet, \"\\\"\").concat(when ? \" when \".concat(when) : '', \".\");\n}\nexport function offsetEncodingScaleIgnored(channel) {\n return \"\".concat(channel, \" encoding has no scale, so specified scale is ignored.\");\n}\nexport function invalidEncodingChannel(channel) {\n return \"\".concat(channel, \"-encoding is dropped as \").concat(channel, \" is not a valid encoding channel.\");\n}\nexport function channelShouldBeDiscrete(channel) {\n return \"\".concat(channel, \" encoding should be discrete (ordinal / nominal / binned).\");\n}\nexport function channelShouldBeDiscreteOrDiscretizing(channel) {\n return \"\".concat(channel, \" encoding should be discrete (ordinal / nominal / binned) or use a discretizing scale (e.g. threshold).\");\n}\nexport function facetChannelDropped(channels) {\n return \"Facet encoding dropped as \".concat(channels.join(' and '), \" \").concat(channels.length > 1 ? 'are' : 'is', \" also specified.\");\n}\nexport function discreteChannelCannotEncode(channel, type) {\n return \"Using discrete channel \\\"\".concat(channel, \"\\\" to encode \\\"\").concat(type, \"\\\" field can be misleading as it does not encode \").concat(type === 'ordinal' ? 'order' : 'magnitude', \".\");\n}\n// MARK\nexport function rangeMarkAlignmentCannotBeExpression(align) {\n return \"The \".concat(align, \" for range marks cannot be an expression\");\n}\nexport function lineWithRange(hasX2, hasY2) {\n var channels = hasX2 && hasY2 ? 'x2 and y2' : hasX2 ? 'x2' : 'y2';\n return \"Line mark is for continuous lines and thus cannot be used with \".concat(channels, \". We will use the rule mark (line segments) instead.\");\n}\nexport function orientOverridden(original, actual) {\n return \"Specified orient \\\"\".concat(original, \"\\\" overridden with \\\"\").concat(actual, \"\\\".\");\n}\n// SCALE\nexport var CANNOT_UNION_CUSTOM_DOMAIN_WITH_FIELD_DOMAIN = 'Custom domain scale cannot be unioned with default field-based domain.';\nexport function cannotUseScalePropertyWithNonColor(prop) {\n return \"Cannot use the scale property \\\"\".concat(prop, \"\\\" with non-color channel.\");\n}\nexport function cannotUseRelativeBandSizeWithNonBandScale(scaleType) {\n return \"Cannot use the relative band size with \".concat(scaleType, \" scale.\");\n}\nexport function unaggregateDomainHasNoEffectForRawField(fieldDef) {\n return \"Using unaggregated domain with raw field has no effect (\".concat(stringify(fieldDef), \").\");\n}\nexport function unaggregateDomainWithNonSharedDomainOp(aggregate) {\n return \"Unaggregated domain not applicable for \\\"\".concat(aggregate, \"\\\" since it produces values outside the origin domain of the source data.\");\n}\nexport function unaggregatedDomainWithLogScale(fieldDef) {\n return \"Unaggregated domain is currently unsupported for log scale (\".concat(stringify(fieldDef), \").\");\n}\nexport function cannotApplySizeToNonOrientedMark(mark) {\n return \"Cannot apply size to non-oriented mark \\\"\".concat(mark, \"\\\".\");\n}\nexport function scaleTypeNotWorkWithChannel(channel, scaleType, defaultScaleType) {\n return \"Channel \\\"\".concat(channel, \"\\\" does not work with \\\"\").concat(scaleType, \"\\\" scale. We are using \\\"\").concat(defaultScaleType, \"\\\" scale instead.\");\n}\nexport function scaleTypeNotWorkWithFieldDef(scaleType, defaultScaleType) {\n return \"FieldDef does not work with \\\"\".concat(scaleType, \"\\\" scale. We are using \\\"\").concat(defaultScaleType, \"\\\" scale instead.\");\n}\nexport function scalePropertyNotWorkWithScaleType(scaleType, propName, channel) {\n return \"\".concat(channel, \"-scale's \\\"\").concat(propName, \"\\\" is dropped as it does not work with \").concat(scaleType, \" scale.\");\n}\nexport function scaleTypeNotWorkWithMark(mark, scaleType) {\n return \"Scale type \\\"\".concat(scaleType, \"\\\" does not work with mark \\\"\").concat(mark, \"\\\".\");\n}\nexport function stepDropped(channel) {\n return \"The step for \\\"\".concat(channel, \"\\\" is dropped because the \").concat(channel === 'width' ? 'x' : 'y', \" is continuous.\");\n}\nexport function mergeConflictingProperty(property, propertyOf, v1, v2) {\n return \"Conflicting \".concat(propertyOf.toString(), \" property \\\"\").concat(property.toString(), \"\\\" (\").concat(stringify(v1), \" and \").concat(stringify(v2), \"). Using \").concat(stringify(v1), \".\");\n}\nexport function mergeConflictingDomainProperty(property, propertyOf, v1, v2) {\n return \"Conflicting \".concat(propertyOf.toString(), \" property \\\"\").concat(property.toString(), \"\\\" (\").concat(stringify(v1), \" and \").concat(stringify(v2), \"). Using the union of the two domains.\");\n}\nexport function independentScaleMeansIndependentGuide(channel) {\n return \"Setting the scale to be independent for \\\"\".concat(channel, \"\\\" means we also have to set the guide (axis or legend) to be independent.\");\n}\nexport function domainSortDropped(sort) {\n return \"Dropping sort property \".concat(stringify(sort), \" as unioned domains only support boolean or op \\\"count\\\", \\\"min\\\", and \\\"max\\\".\");\n}\nexport var MORE_THAN_ONE_SORT = 'Domains that should be unioned has conflicting sort properties. Sort will be set to true.';\nexport var FACETED_INDEPENDENT_DIFFERENT_SOURCES = 'Detected faceted independent scales that union domain of multiple fields from different data sources. We will use the first field. The result view size may be incorrect.';\nexport var FACETED_INDEPENDENT_SAME_FIELDS_DIFFERENT_SOURCES = 'Detected faceted independent scales that union domain of the same fields from different source. We will assume that this is the same field from a different fork of the same data source. However, if this is not the case, the result view size may be incorrect.';\nexport var FACETED_INDEPENDENT_SAME_SOURCE = 'Detected faceted independent scales that union domain of multiple fields from the same data source. We will use the first field. The result view size may be incorrect.';\n// AXIS\nexport var INVALID_CHANNEL_FOR_AXIS = 'Invalid channel for axis.';\n// STACK\nexport function cannotStackRangedMark(channel) {\n return \"Cannot stack \\\"\".concat(channel, \"\\\" if there is already \\\"\").concat(channel, \"2\\\".\");\n}\nexport function cannotStackNonLinearScale(scaleType) {\n return \"Cannot stack non-linear scale (\".concat(scaleType, \").\");\n}\nexport function stackNonSummativeAggregate(aggregate) {\n return \"Stacking is applied even though the aggregate function is non-summative (\\\"\".concat(aggregate, \"\\\").\");\n}\n// TIMEUNIT\nexport function invalidTimeUnit(unitName, value) {\n return \"Invalid \".concat(unitName, \": \").concat(stringify(value), \".\");\n}\nexport function droppedDay(d) {\n return \"Dropping day from datetime \".concat(stringify(d), \" as day cannot be combined with other units.\");\n}\nexport function errorBarCenterAndExtentAreNotNeeded(center, extent) {\n return \"\".concat(extent ? 'extent ' : '').concat(extent && center ? 'and ' : '').concat(center ? 'center ' : '').concat(extent && center ? 'are ' : 'is ', \"not needed when data are aggregated.\");\n}\nexport function errorBarCenterIsUsedWithWrongExtent(center, extent, mark) {\n return \"\".concat(center, \" is not usually used with \").concat(extent, \" for \").concat(mark, \".\");\n}\nexport function errorBarContinuousAxisHasCustomizedAggregate(aggregate, compositeMark) {\n return \"Continuous axis should not have customized aggregation function \".concat(aggregate, \"; \").concat(compositeMark, \" already agregates the axis.\");\n}\nexport function errorBand1DNotSupport(property) {\n return \"1D error band does not support \".concat(property, \".\");\n}\n// CHANNEL\nexport function channelRequiredForBinned(channel) {\n return \"Channel \".concat(channel, \" is required for \\\"binned\\\" bin.\");\n}\nexport function channelShouldNotBeUsedForBinned(channel) {\n return \"Channel \".concat(channel, \" should not be used with \\\"binned\\\" bin.\");\n}\nexport function domainRequiredForThresholdScale(channel) {\n return \"Domain for \".concat(channel, \" is required for threshold scale.\");\n}","import _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\n/**\n * Vega-Lite's singleton logger utility.\n */\nvar __classPrivateFieldSet = this && this.__classPrivateFieldSet || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value), value;\n};\nvar __classPrivateFieldGet = this && this.__classPrivateFieldGet || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _LocalLogger_level;\nimport { Debug, Error as ErrorLevel, Info, logger, Warn } from 'vega-util';\nimport * as _message from './message';\nexport { _message as message };\n/**\n * Main (default) Vega Logger instance for Vega-Lite.\n */\nvar main = logger(Warn);\nvar current = main;\n/**\n * Logger tool for checking if the code throws correct warning.\n */\nexport var LocalLogger = /*#__PURE__*/function () {\n function LocalLogger() {\n _classCallCheck(this, LocalLogger);\n this.warns = [];\n this.infos = [];\n this.debugs = [];\n _LocalLogger_level.set(this, Warn);\n }\n _createClass(LocalLogger, [{\n key: \"level\",\n value: function level(_) {\n if (_) {\n __classPrivateFieldSet(this, _LocalLogger_level, _, \"f\");\n return this;\n }\n return __classPrivateFieldGet(this, _LocalLogger_level, \"f\");\n }\n }, {\n key: \"warn\",\n value: function warn() {\n var _this$warns;\n if (__classPrivateFieldGet(this, _LocalLogger_level, \"f\") >= Warn) (_this$warns = this.warns).push.apply(_this$warns, arguments);\n return this;\n }\n }, {\n key: \"info\",\n value: function info() {\n var _this$infos;\n if (__classPrivateFieldGet(this, _LocalLogger_level, \"f\") >= Info) (_this$infos = this.infos).push.apply(_this$infos, arguments);\n return this;\n }\n }, {\n key: \"debug\",\n value: function debug() {\n var _this$debugs;\n if (__classPrivateFieldGet(this, _LocalLogger_level, \"f\") >= Debug) (_this$debugs = this.debugs).push.apply(_this$debugs, arguments);\n return this;\n }\n }, {\n key: \"error\",\n value: function error() {\n if (__classPrivateFieldGet(this, _LocalLogger_level, \"f\") >= ErrorLevel) throw Error.apply(void 0, arguments);\n return this;\n }\n }]);\n return LocalLogger;\n}();\n_LocalLogger_level = new WeakMap();\nexport function wrap(f) {\n return function () {\n current = new LocalLogger();\n f(current);\n reset();\n };\n}\n/**\n * Set the singleton logger to be a custom logger.\n */\nexport function set(newLogger) {\n current = newLogger;\n return current;\n}\n/**\n * Reset the main logger to use the default Vega Logger.\n */\nexport function reset() {\n current = main;\n return current;\n}\nexport function error() {\n var _current;\n (_current = current).error.apply(_current, arguments);\n}\nexport function warn() {\n var _current2;\n (_current2 = current).warn.apply(_current2, arguments);\n}\nexport function info() {\n var _current3;\n (_current3 = current).info.apply(_current3, arguments);\n}\nexport function debug() {\n var _current4;\n (_current4 = current).debug.apply(_current4, arguments);\n}","import _construct from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/construct.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\n// DateTime definition object\nimport { isNumber, isObject } from 'vega-util';\nimport * as log from './log';\nimport { TIMEUNIT_PARTS } from './timeunit';\nimport { duplicate, isNumeric, keys } from './util';\nexport function isDateTime(o) {\n if (o && isObject(o)) {\n var _iterator = _createForOfIteratorHelper(TIMEUNIT_PARTS),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var part = _step.value;\n if (part in o) {\n return true;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n return false;\n}\nexport var MONTHS = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december'];\nexport var SHORT_MONTHS = MONTHS.map(function (m) {\n return m.substr(0, 3);\n});\nexport var DAYS = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];\nexport var SHORT_DAYS = DAYS.map(function (d) {\n return d.substr(0, 3);\n});\nfunction normalizeQuarter(q) {\n if (isNumeric(q)) {\n q = +q;\n }\n if (isNumber(q)) {\n if (q > 4) {\n log.warn(log.message.invalidTimeUnit('quarter', q));\n }\n // We accept 1-based quarter, so need to readjust to 0-based quarter\n return q - 1;\n } else {\n // Invalid quarter\n throw new Error(log.message.invalidTimeUnit('quarter', q));\n }\n}\nfunction normalizeMonth(m) {\n if (isNumeric(m)) {\n m = +m;\n }\n if (isNumber(m)) {\n // We accept 1-based month, so need to readjust to 0-based month\n return m - 1;\n } else {\n var lowerM = m.toLowerCase();\n var monthIndex = MONTHS.indexOf(lowerM);\n if (monthIndex !== -1) {\n return monthIndex; // 0 for january, ...\n }\n\n var shortM = lowerM.substr(0, 3);\n var shortMonthIndex = SHORT_MONTHS.indexOf(shortM);\n if (shortMonthIndex !== -1) {\n return shortMonthIndex;\n }\n // Invalid month\n throw new Error(log.message.invalidTimeUnit('month', m));\n }\n}\nfunction normalizeDay(d) {\n if (isNumeric(d)) {\n d = +d;\n }\n if (isNumber(d)) {\n // mod so that this can be both 0-based where 0 = sunday\n // and 1-based where 7=sunday\n return d % 7;\n } else {\n var lowerD = d.toLowerCase();\n var dayIndex = DAYS.indexOf(lowerD);\n if (dayIndex !== -1) {\n return dayIndex; // 0 for january, ...\n }\n\n var shortD = lowerD.substr(0, 3);\n var shortDayIndex = SHORT_DAYS.indexOf(shortD);\n if (shortDayIndex !== -1) {\n return shortDayIndex;\n }\n // Invalid day\n throw new Error(log.message.invalidTimeUnit('day', d));\n }\n}\n/**\n * @param d the date.\n * @param normalize whether to normalize quarter, month, day. This should probably be true if d is a DateTime.\n * @returns array of date time parts [year, month, day, hours, minutes, seconds, milliseconds]\n */\nfunction dateTimeParts(d, normalize) {\n var parts = [];\n if (normalize && d.day !== undefined) {\n if (keys(d).length > 1) {\n log.warn(log.message.droppedDay(d));\n d = duplicate(d);\n delete d.day;\n }\n }\n if (d.year !== undefined) {\n parts.push(d.year);\n } else {\n // Just like Vega's timeunit transform, set default year to 2012, so domain conversion will be compatible with Vega\n // Note: 2012 is a leap year (and so the date February 29 is respected) that begins on a Sunday (and so days of the week will order properly at the beginning of the year).\n parts.push(2012);\n }\n if (d.month !== undefined) {\n var month = normalize ? normalizeMonth(d.month) : d.month;\n parts.push(month);\n } else if (d.quarter !== undefined) {\n var quarter = normalize ? normalizeQuarter(d.quarter) : d.quarter;\n parts.push(isNumber(quarter) ? quarter * 3 : \"\".concat(quarter, \"*3\"));\n } else {\n parts.push(0); // months start at zero in JS\n }\n\n if (d.date !== undefined) {\n parts.push(d.date);\n } else if (d.day !== undefined) {\n // HACK: Day only works as a standalone unit\n // This is only correct because we always set year to 2006 for day\n var day = normalize ? normalizeDay(d.day) : d.day;\n parts.push(isNumber(day) ? day + 1 : \"\".concat(day, \"+1\"));\n } else {\n parts.push(1); // Date starts at 1 in JS\n }\n // Note: can't use TimeUnit enum here as importing it will create\n // circular dependency problem!\n for (var _i = 0, _arr = ['hours', 'minutes', 'seconds', 'milliseconds']; _i < _arr.length; _i++) {\n var timeUnit = _arr[_i];\n var unit = d[timeUnit];\n parts.push(typeof unit === 'undefined' ? 0 : unit);\n }\n return parts;\n}\n/**\n * Return Vega expression for a date time.\n *\n * @param d the date time.\n * @returns the Vega expression.\n */\nexport function dateTimeToExpr(d) {\n var parts = dateTimeParts(d, true);\n var string = parts.join(', ');\n if (d.utc) {\n return \"utc(\".concat(string, \")\");\n } else {\n return \"datetime(\".concat(string, \")\");\n }\n}\n/**\n * Return Vega expression for a date time expression.\n *\n * @param d the internal date time object with expression.\n * @returns the Vega expression.\n */\nexport function dateTimeExprToExpr(d) {\n var parts = dateTimeParts(d, false);\n var string = parts.join(', ');\n if (d.utc) {\n return \"utc(\".concat(string, \")\");\n } else {\n return \"datetime(\".concat(string, \")\");\n }\n}\n/**\n * @param d the date time.\n * @returns the timestamp.\n */\nexport function dateTimeToTimestamp(d) {\n var parts = dateTimeParts(d, true);\n if (d.utc) {\n return +new Date(Date.UTC.apply(Date, _toConsumableArray(parts)));\n } else {\n return +_construct(Date, _toConsumableArray(parts));\n }\n}","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nvar _excluded = [\"utc\"];\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { isObject, isString } from 'vega-util';\nimport { dateTimeExprToExpr, dateTimeToExpr } from './datetime';\nimport { accessPathWithDatum, keys, stringify, varName } from './util';\n/** Time Unit that only corresponds to only one part of Date objects. */\nexport var LOCAL_SINGLE_TIMEUNIT_INDEX = {\n year: 1,\n quarter: 1,\n month: 1,\n week: 1,\n day: 1,\n dayofyear: 1,\n date: 1,\n hours: 1,\n minutes: 1,\n seconds: 1,\n milliseconds: 1\n};\nexport var TIMEUNIT_PARTS = keys(LOCAL_SINGLE_TIMEUNIT_INDEX);\nexport function isLocalSingleTimeUnit(timeUnit) {\n return !!LOCAL_SINGLE_TIMEUNIT_INDEX[timeUnit];\n}\nexport var UTC_SINGLE_TIMEUNIT_INDEX = {\n utcyear: 1,\n utcquarter: 1,\n utcmonth: 1,\n utcweek: 1,\n utcday: 1,\n utcdayofyear: 1,\n utcdate: 1,\n utchours: 1,\n utcminutes: 1,\n utcseconds: 1,\n utcmilliseconds: 1\n};\nexport var LOCAL_MULTI_TIMEUNIT_INDEX = {\n yearquarter: 1,\n yearquartermonth: 1,\n yearmonth: 1,\n yearmonthdate: 1,\n yearmonthdatehours: 1,\n yearmonthdatehoursminutes: 1,\n yearmonthdatehoursminutesseconds: 1,\n yearweek: 1,\n yearweekday: 1,\n yearweekdayhours: 1,\n yearweekdayhoursminutes: 1,\n yearweekdayhoursminutesseconds: 1,\n yeardayofyear: 1,\n quartermonth: 1,\n monthdate: 1,\n monthdatehours: 1,\n monthdatehoursminutes: 1,\n monthdatehoursminutesseconds: 1,\n weekday: 1,\n weeksdayhours: 1,\n weekdayhoursminutes: 1,\n weekdayhoursminutesseconds: 1,\n dayhours: 1,\n dayhoursminutes: 1,\n dayhoursminutesseconds: 1,\n hoursminutes: 1,\n hoursminutesseconds: 1,\n minutesseconds: 1,\n secondsmilliseconds: 1\n};\nvar BINNED_LOCAL_TIMEUNIT_INDEX = {\n binnedyear: 1,\n binnedyearquarter: 1,\n binnedyearquartermonth: 1,\n binnedyearmonth: 1,\n binnedyearmonthdate: 1,\n binnedyearmonthdatehours: 1,\n binnedyearmonthdatehoursminutes: 1,\n binnedyearmonthdatehoursminutesseconds: 1,\n binnedyearweek: 1,\n binnedyearweekday: 1,\n binnedyearweekdayhours: 1,\n binnedyearweekdayhoursminutes: 1,\n binnedyearweekdayhoursminutesseconds: 1,\n binnedyeardayofyear: 1\n};\nvar BINNED_UTC_TIMEUNIT_INDEX = {\n binnedutcyear: 1,\n binnedutcyearquarter: 1,\n binnedutcyearquartermonth: 1,\n binnedutcyearmonth: 1,\n binnedutcyearmonthdate: 1,\n binnedutcyearmonthdatehours: 1,\n binnedutcyearmonthdatehoursminutes: 1,\n binnedutcyearmonthdatehoursminutesseconds: 1,\n binnedutcyearweek: 1,\n binnedutcyearweekday: 1,\n binnedutcyearweekdayhours: 1,\n binnedutcyearweekdayhoursminutes: 1,\n binnedutcyearweekdayhoursminutesseconds: 1,\n binnedutcyeardayofyear: 1\n};\nexport var BINNED_TIMEUNIT_INDEX = _objectSpread(_objectSpread({}, BINNED_LOCAL_TIMEUNIT_INDEX), BINNED_UTC_TIMEUNIT_INDEX);\nexport function isBinnedTimeUnit(timeUnit) {\n if (isObject(timeUnit)) {\n return timeUnit.binned;\n }\n return isBinnedTimeUnitString(timeUnit);\n}\nexport function isBinnedTimeUnitString(timeUnit) {\n return timeUnit && timeUnit.startsWith('binned');\n}\nexport var UTC_MULTI_TIMEUNIT_INDEX = {\n utcyearquarter: 1,\n utcyearquartermonth: 1,\n utcyearmonth: 1,\n utcyearmonthdate: 1,\n utcyearmonthdatehours: 1,\n utcyearmonthdatehoursminutes: 1,\n utcyearmonthdatehoursminutesseconds: 1,\n utcyearweek: 1,\n utcyearweekday: 1,\n utcyearweekdayhours: 1,\n utcyearweekdayhoursminutes: 1,\n utcyearweekdayhoursminutesseconds: 1,\n utcyeardayofyear: 1,\n utcquartermonth: 1,\n utcmonthdate: 1,\n utcmonthdatehours: 1,\n utcmonthdatehoursminutes: 1,\n utcmonthdatehoursminutesseconds: 1,\n utcweekday: 1,\n utcweeksdayhours: 1,\n utcweekdayhoursminutes: 1,\n utcweekdayhoursminutesseconds: 1,\n utcdayhours: 1,\n utcdayhoursminutes: 1,\n utcdayhoursminutesseconds: 1,\n utchoursminutes: 1,\n utchoursminutesseconds: 1,\n utcminutesseconds: 1,\n utcsecondsmilliseconds: 1\n};\nexport function isUTCTimeUnit(t) {\n return t.startsWith('utc');\n}\nexport function getLocalTimeUnitFromUTCTimeUnit(t) {\n return t.substring(3);\n}\n// In order of increasing specificity\nexport var VEGALITE_TIMEFORMAT = {\n 'year-month': '%b %Y ',\n 'year-month-date': '%b %d, %Y '\n};\nexport function getTimeUnitParts(timeUnit) {\n return TIMEUNIT_PARTS.filter(function (part) {\n return containsTimeUnit(timeUnit, part);\n });\n}\nexport function getSmallestTimeUnitPart(timeUnit) {\n var parts = getTimeUnitParts(timeUnit);\n return parts[parts.length - 1];\n}\n/** Returns true if fullTimeUnit contains the timeUnit, false otherwise. */\nexport function containsTimeUnit(fullTimeUnit, timeUnit) {\n var index = fullTimeUnit.indexOf(timeUnit);\n if (index < 0) {\n return false;\n }\n // exclude milliseconds\n if (index > 0 && timeUnit === 'seconds' && fullTimeUnit.charAt(index - 1) === 'i') {\n return false;\n }\n // exclude dayofyear\n if (fullTimeUnit.length > index + 3 && timeUnit === 'day' && fullTimeUnit.charAt(index + 3) === 'o') {\n return false;\n }\n if (index > 0 && timeUnit === 'year' && fullTimeUnit.charAt(index - 1) === 'f') {\n return false;\n }\n return true;\n}\n/**\n * Returns Vega expression for a given timeUnit and fieldRef\n */\nexport function fieldExpr(fullTimeUnit, field) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n end: false\n },\n end = _ref.end;\n var fieldRef = accessPathWithDatum(field);\n var utc = isUTCTimeUnit(fullTimeUnit) ? 'utc' : '';\n function func(timeUnit) {\n if (timeUnit === 'quarter') {\n // quarter starting at 0 (0,3,6,9).\n return \"(\".concat(utc, \"quarter(\").concat(fieldRef, \")-1)\");\n } else {\n return \"\".concat(utc).concat(timeUnit, \"(\").concat(fieldRef, \")\");\n }\n }\n var lastTimeUnit;\n var dateExpr = {};\n var _iterator = _createForOfIteratorHelper(TIMEUNIT_PARTS),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var part = _step.value;\n if (containsTimeUnit(fullTimeUnit, part)) {\n dateExpr[part] = func(part);\n lastTimeUnit = part;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n if (end) {\n dateExpr[lastTimeUnit] += '+1';\n }\n return dateTimeExprToExpr(dateExpr);\n}\nexport function timeUnitSpecifierExpression(timeUnit) {\n if (!timeUnit) {\n return undefined;\n }\n var timeUnitParts = getTimeUnitParts(timeUnit);\n return \"timeUnitSpecifier(\".concat(stringify(timeUnitParts), \", \").concat(stringify(VEGALITE_TIMEFORMAT), \")\");\n}\n/**\n * Returns the signal expression used for axis labels for a time unit.\n */\nexport function formatExpression(timeUnit, field, isUTCScale) {\n if (!timeUnit) {\n return undefined;\n }\n var expr = timeUnitSpecifierExpression(timeUnit);\n // We only use utcFormat for utc scale\n // For utc time units, the data is already converted as a part of timeUnit transform.\n // Thus, utc time units should use timeFormat to avoid shifting the time twice.\n var utc = isUTCScale || isUTCTimeUnit(timeUnit);\n return \"\".concat(utc ? 'utc' : 'time', \"Format(\").concat(field, \", \").concat(expr, \")\");\n}\nexport function normalizeTimeUnit(timeUnit) {\n if (!timeUnit) {\n return undefined;\n }\n var params;\n if (isString(timeUnit)) {\n if (isBinnedTimeUnitString(timeUnit)) {\n params = {\n unit: timeUnit.substring(6),\n binned: true\n };\n } else {\n params = {\n unit: timeUnit\n };\n }\n } else if (isObject(timeUnit)) {\n params = _objectSpread(_objectSpread({}, timeUnit), timeUnit.unit ? {\n unit: timeUnit.unit\n } : {});\n }\n if (isUTCTimeUnit(params.unit)) {\n params.utc = true;\n params.unit = getLocalTimeUnitFromUTCTimeUnit(params.unit);\n }\n return params;\n}\nexport function timeUnitToString(tu) {\n var _normalizeTimeUnit = normalizeTimeUnit(tu),\n utc = _normalizeTimeUnit.utc,\n rest = _objectWithoutProperties(_normalizeTimeUnit, _excluded);\n if (rest.unit) {\n return (utc ? 'utc' : '') + keys(rest).map(function (p) {\n return varName(\"\".concat(p === 'unit' ? '' : \"_\".concat(p, \"_\")).concat(rest[p]));\n }).join('');\n } else {\n // when maxbins is specified instead of units\n return (utc ? 'utc' : '') + 'timeunit' + keys(rest).map(function (p) {\n return varName(\"_\".concat(p, \"_\").concat(rest[p]));\n }).join('');\n }\n}\nexport function durationExpr(timeUnit) {\n var wrap = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (x) {\n return x;\n };\n var normalizedTimeUnit = normalizeTimeUnit(timeUnit);\n var smallestUnitPart = getSmallestTimeUnitPart(normalizedTimeUnit.unit);\n if (smallestUnitPart && smallestUnitPart !== 'day') {\n var startDate = {\n year: 2001,\n month: 1,\n date: 1,\n hours: 0,\n minutes: 0,\n seconds: 0,\n milliseconds: 0\n };\n var _getDateTimePartAndSt = getDateTimePartAndStep(smallestUnitPart, normalizedTimeUnit.step),\n step = _getDateTimePartAndSt.step,\n part = _getDateTimePartAndSt.part;\n var endDate = _objectSpread(_objectSpread({}, startDate), {}, _defineProperty({}, part, +startDate[part] + step));\n // Calculate timestamp duration for the smallest unit listed\n return \"\".concat(wrap(dateTimeToExpr(endDate)), \" - \").concat(wrap(dateTimeToExpr(startDate)));\n }\n return undefined;\n}\nvar DATE_PARTS = {\n year: 1,\n month: 1,\n date: 1,\n hours: 1,\n minutes: 1,\n seconds: 1,\n milliseconds: 1\n};\nexport function isDatePart(timeUnit) {\n return !!DATE_PARTS[timeUnit];\n}\nexport function getDateTimePartAndStep(timeUnit) {\n var step = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n if (isDatePart(timeUnit)) {\n return {\n part: timeUnit,\n step: step\n };\n }\n switch (timeUnit) {\n case 'day':\n case 'dayofyear':\n return {\n part: 'date',\n step: step\n };\n case 'quarter':\n return {\n part: 'month',\n step: step * 3\n };\n case 'week':\n return {\n part: 'date',\n step: step * 7\n };\n }\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { isArray } from 'vega-util';\nimport { valueExpr, vgField } from './channeldef';\nimport { fieldExpr as timeUnitFieldExpr, normalizeTimeUnit } from './timeunit';\nimport { stringify } from './util';\nimport { isSignalRef } from './vega.schema';\nexport function isSelectionPredicate(predicate) {\n return predicate === null || predicate === void 0 ? void 0 : predicate['param'];\n}\nexport function isFieldEqualPredicate(predicate) {\n return !!(predicate !== null && predicate !== void 0 && predicate.field) && predicate.equal !== undefined;\n}\nexport function isFieldLTPredicate(predicate) {\n return !!(predicate !== null && predicate !== void 0 && predicate.field) && predicate.lt !== undefined;\n}\nexport function isFieldLTEPredicate(predicate) {\n return !!(predicate !== null && predicate !== void 0 && predicate.field) && predicate.lte !== undefined;\n}\nexport function isFieldGTPredicate(predicate) {\n return !!(predicate !== null && predicate !== void 0 && predicate.field) && predicate.gt !== undefined;\n}\nexport function isFieldGTEPredicate(predicate) {\n return !!(predicate !== null && predicate !== void 0 && predicate.field) && predicate.gte !== undefined;\n}\nexport function isFieldRangePredicate(predicate) {\n if (predicate !== null && predicate !== void 0 && predicate.field) {\n if (isArray(predicate.range) && predicate.range.length === 2) {\n return true;\n } else if (isSignalRef(predicate.range)) {\n return true;\n }\n }\n return false;\n}\nexport function isFieldOneOfPredicate(predicate) {\n return !!(predicate !== null && predicate !== void 0 && predicate.field) && (isArray(predicate.oneOf) || isArray(predicate.in)) // backward compatibility\n ;\n}\n\nexport function isFieldValidPredicate(predicate) {\n return !!(predicate !== null && predicate !== void 0 && predicate.field) && predicate.valid !== undefined;\n}\nexport function isFieldPredicate(predicate) {\n return isFieldOneOfPredicate(predicate) || isFieldEqualPredicate(predicate) || isFieldRangePredicate(predicate) || isFieldLTPredicate(predicate) || isFieldGTPredicate(predicate) || isFieldLTEPredicate(predicate) || isFieldGTEPredicate(predicate);\n}\nfunction predicateValueExpr(v, timeUnit) {\n return valueExpr(v, {\n timeUnit: timeUnit,\n wrapTime: true\n });\n}\nfunction predicateValuesExpr(vals, timeUnit) {\n return vals.map(function (v) {\n return predicateValueExpr(v, timeUnit);\n });\n}\n// This method is used by Voyager. Do not change its behavior without changing Voyager.\nexport function fieldFilterExpression(predicate) {\n var useInRange = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var field = predicate.field;\n var normalizedTimeUnit = normalizeTimeUnit(predicate.timeUnit);\n var _ref = normalizedTimeUnit || {},\n unit = _ref.unit,\n binned = _ref.binned;\n var rawFieldExpr = vgField(predicate, {\n expr: 'datum'\n });\n var fieldExpr = unit ? // For timeUnit, cast into integer with time() so we can use ===, inrange, indexOf to compare values directly.\n // TODO: We calculate timeUnit on the fly here. Consider if we would like to consolidate this with timeUnit pipeline\n // TODO: support utc\n \"time(\".concat(!binned ? timeUnitFieldExpr(unit, field) : rawFieldExpr, \")\") : rawFieldExpr;\n if (isFieldEqualPredicate(predicate)) {\n return \"\".concat(fieldExpr, \"===\").concat(predicateValueExpr(predicate.equal, unit));\n } else if (isFieldLTPredicate(predicate)) {\n var upper = predicate.lt;\n return \"\".concat(fieldExpr, \"<\").concat(predicateValueExpr(upper, unit));\n } else if (isFieldGTPredicate(predicate)) {\n var lower = predicate.gt;\n return \"\".concat(fieldExpr, \">\").concat(predicateValueExpr(lower, unit));\n } else if (isFieldLTEPredicate(predicate)) {\n var _upper = predicate.lte;\n return \"\".concat(fieldExpr, \"<=\").concat(predicateValueExpr(_upper, unit));\n } else if (isFieldGTEPredicate(predicate)) {\n var _lower = predicate.gte;\n return \"\".concat(fieldExpr, \">=\").concat(predicateValueExpr(_lower, unit));\n } else if (isFieldOneOfPredicate(predicate)) {\n return \"indexof([\".concat(predicateValuesExpr(predicate.oneOf, unit).join(','), \"], \").concat(fieldExpr, \") !== -1\");\n } else if (isFieldValidPredicate(predicate)) {\n return fieldValidPredicate(fieldExpr, predicate.valid);\n } else if (isFieldRangePredicate(predicate)) {\n var range = predicate.range;\n var _lower2 = isSignalRef(range) ? {\n signal: \"\".concat(range.signal, \"[0]\")\n } : range[0];\n var _upper2 = isSignalRef(range) ? {\n signal: \"\".concat(range.signal, \"[1]\")\n } : range[1];\n if (_lower2 !== null && _upper2 !== null && useInRange) {\n return 'inrange(' + fieldExpr + ', [' + predicateValueExpr(_lower2, unit) + ', ' + predicateValueExpr(_upper2, unit) + '])';\n }\n var exprs = [];\n if (_lower2 !== null) {\n exprs.push(\"\".concat(fieldExpr, \" >= \").concat(predicateValueExpr(_lower2, unit)));\n }\n if (_upper2 !== null) {\n exprs.push(\"\".concat(fieldExpr, \" <= \").concat(predicateValueExpr(_upper2, unit)));\n }\n return exprs.length > 0 ? exprs.join(' && ') : 'true';\n }\n /* istanbul ignore next: it should never reach here */\n throw new Error(\"Invalid field predicate: \".concat(stringify(predicate)));\n}\nexport function fieldValidPredicate(fieldExpr) {\n var valid = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n if (valid) {\n return \"isValid(\".concat(fieldExpr, \") && isFinite(+\").concat(fieldExpr, \")\");\n } else {\n return \"!isValid(\".concat(fieldExpr, \") || !isFinite(+\").concat(fieldExpr, \")\");\n }\n}\nexport function normalizePredicate(f) {\n if (isFieldPredicate(f) && f.timeUnit) {\n return _objectSpread(_objectSpread({}, f), {}, {\n timeUnit: normalizeTimeUnit(f.timeUnit)\n });\n }\n return f;\n}","import { keys } from './util';\n/**\n * Data type based on level of measurement\n */\nexport var Type = {\n quantitative: 'quantitative',\n ordinal: 'ordinal',\n temporal: 'temporal',\n nominal: 'nominal',\n geojson: 'geojson'\n};\nexport function isType(t) {\n return t in Type;\n}\nexport function isContinuous(type) {\n return type === 'quantitative' || type === 'temporal';\n}\nexport function isDiscrete(type) {\n return type === 'ordinal' || type === 'nominal';\n}\nexport var QUANTITATIVE = Type.quantitative;\nexport var ORDINAL = Type.ordinal;\nexport var TEMPORAL = Type.temporal;\nexport var NOMINAL = Type.nominal;\nexport var GEOJSON = Type.geojson;\nexport var TYPES = keys(Type);\n/**\n * Get full, lowercase type name for a given type.\n * @param type\n * @return Full type name.\n */\nexport function getFullName(type) {\n if (type) {\n type = type.toLowerCase();\n switch (type) {\n case 'q':\n case QUANTITATIVE:\n return 'quantitative';\n case 't':\n case TEMPORAL:\n return 'temporal';\n case 'o':\n case ORDINAL:\n return 'ordinal';\n case 'n':\n case NOMINAL:\n return 'nominal';\n case GEOJSON:\n return 'geojson';\n }\n }\n // If we get invalid input, return undefined type.\n return undefined;\n}","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport { isObject } from 'vega';\nimport { isString } from 'vega-util';\nimport * as CHANNEL from './channel';\nimport { isColorChannel } from './channel';\nimport * as log from './log';\nimport { NOMINAL, ORDINAL, QUANTITATIVE, TEMPORAL } from './type';\nimport { contains, keys } from './util';\nexport var ScaleType = {\n // Continuous - Quantitative\n LINEAR: 'linear',\n LOG: 'log',\n POW: 'pow',\n SQRT: 'sqrt',\n SYMLOG: 'symlog',\n IDENTITY: 'identity',\n SEQUENTIAL: 'sequential',\n // Continuous - Time\n TIME: 'time',\n UTC: 'utc',\n // Discretizing scales\n QUANTILE: 'quantile',\n QUANTIZE: 'quantize',\n THRESHOLD: 'threshold',\n BIN_ORDINAL: 'bin-ordinal',\n // Discrete scales\n ORDINAL: 'ordinal',\n POINT: 'point',\n BAND: 'band'\n};\n/**\n * Index for scale categories -- only scale of the same categories can be merged together.\n * Current implementation is trying to be conservative and avoid merging scale type that might not work together\n */\nexport var SCALE_CATEGORY_INDEX = {\n linear: 'numeric',\n log: 'numeric',\n pow: 'numeric',\n sqrt: 'numeric',\n symlog: 'numeric',\n identity: 'numeric',\n sequential: 'numeric',\n time: 'time',\n utc: 'time',\n ordinal: 'ordinal',\n 'bin-ordinal': 'bin-ordinal',\n point: 'ordinal-position',\n band: 'ordinal-position',\n quantile: 'discretizing',\n quantize: 'discretizing',\n threshold: 'discretizing'\n};\nexport var SCALE_TYPES = keys(SCALE_CATEGORY_INDEX);\n/**\n * Whether the two given scale types can be merged together.\n */\nexport function scaleCompatible(scaleType1, scaleType2) {\n var scaleCategory1 = SCALE_CATEGORY_INDEX[scaleType1];\n var scaleCategory2 = SCALE_CATEGORY_INDEX[scaleType2];\n return scaleCategory1 === scaleCategory2 || scaleCategory1 === 'ordinal-position' && scaleCategory2 === 'time' || scaleCategory2 === 'ordinal-position' && scaleCategory1 === 'time';\n}\n/**\n * Index for scale precedence -- high score = higher priority for merging.\n */\nvar SCALE_PRECEDENCE_INDEX = {\n // numeric\n linear: 0,\n log: 1,\n pow: 1,\n sqrt: 1,\n symlog: 1,\n identity: 1,\n sequential: 1,\n // time\n time: 0,\n utc: 0,\n // ordinal-position -- these have higher precedence than continuous scales as they support more types of data\n point: 10,\n band: 11,\n // non grouped types\n ordinal: 0,\n 'bin-ordinal': 0,\n quantile: 0,\n quantize: 0,\n threshold: 0\n};\n/**\n * Return scale categories -- only scale of the same categories can be merged together.\n */\nexport function scaleTypePrecedence(scaleType) {\n return SCALE_PRECEDENCE_INDEX[scaleType];\n}\nexport var QUANTITATIVE_SCALES = new Set(['linear', 'log', 'pow', 'sqrt', 'symlog']);\nexport var CONTINUOUS_TO_CONTINUOUS_SCALES = new Set([].concat(_toConsumableArray(QUANTITATIVE_SCALES), ['time', 'utc']));\nexport function isQuantitative(type) {\n return QUANTITATIVE_SCALES.has(type);\n}\nexport var CONTINUOUS_TO_DISCRETE_SCALES = new Set(['quantile', 'quantize', 'threshold']);\nexport var CONTINUOUS_DOMAIN_SCALES = new Set([].concat(_toConsumableArray(CONTINUOUS_TO_CONTINUOUS_SCALES), _toConsumableArray(CONTINUOUS_TO_DISCRETE_SCALES), ['sequential', 'identity']));\nexport var DISCRETE_DOMAIN_SCALES = new Set(['ordinal', 'bin-ordinal', 'point', 'band']);\nexport var TIME_SCALE_TYPES = new Set(['time', 'utc']);\nexport function hasDiscreteDomain(type) {\n return DISCRETE_DOMAIN_SCALES.has(type);\n}\nexport function hasContinuousDomain(type) {\n return CONTINUOUS_DOMAIN_SCALES.has(type);\n}\nexport function isContinuousToContinuous(type) {\n return CONTINUOUS_TO_CONTINUOUS_SCALES.has(type);\n}\nexport function isContinuousToDiscrete(type) {\n return CONTINUOUS_TO_DISCRETE_SCALES.has(type);\n}\nexport var defaultScaleConfig = {\n pointPadding: 0.5,\n barBandPaddingInner: 0.1,\n rectBandPaddingInner: 0,\n bandWithNestedOffsetPaddingInner: 0.2,\n bandWithNestedOffsetPaddingOuter: 0.2,\n minBandSize: 2,\n minFontSize: 8,\n maxFontSize: 40,\n minOpacity: 0.3,\n maxOpacity: 0.8,\n // FIXME: revise if these *can* become ratios of width/height step\n minSize: 9,\n minStrokeWidth: 1,\n maxStrokeWidth: 4,\n quantileCount: 4,\n quantizeCount: 4,\n zero: true\n};\nexport function isExtendedScheme(scheme) {\n return !isString(scheme) && !!scheme['name'];\n}\nexport function isParameterDomain(domain) {\n return domain === null || domain === void 0 ? void 0 : domain['param'];\n}\nexport function isDomainUnionWith(domain) {\n return domain === null || domain === void 0 ? void 0 : domain['unionWith'];\n}\nexport function isFieldRange(range) {\n return isObject(range) && 'field' in range;\n}\nvar SCALE_PROPERTY_INDEX = {\n type: 1,\n domain: 1,\n domainMax: 1,\n domainMin: 1,\n domainMid: 1,\n domainRaw: 1,\n align: 1,\n range: 1,\n rangeMax: 1,\n rangeMin: 1,\n scheme: 1,\n bins: 1,\n // Other properties\n reverse: 1,\n round: 1,\n // quantitative / time\n clamp: 1,\n nice: 1,\n // quantitative\n base: 1,\n exponent: 1,\n constant: 1,\n interpolate: 1,\n zero: 1,\n // band/point\n padding: 1,\n paddingInner: 1,\n paddingOuter: 1\n};\nexport var SCALE_PROPERTIES = keys(SCALE_PROPERTY_INDEX);\nvar type = SCALE_PROPERTY_INDEX.type,\n domain = SCALE_PROPERTY_INDEX.domain,\n range = SCALE_PROPERTY_INDEX.range,\n rangeMax = SCALE_PROPERTY_INDEX.rangeMax,\n rangeMin = SCALE_PROPERTY_INDEX.rangeMin,\n scheme = SCALE_PROPERTY_INDEX.scheme,\n NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTY_INDEX = _objectWithoutProperties(SCALE_PROPERTY_INDEX, [\"type\", \"domain\", \"range\", \"rangeMax\", \"rangeMin\", \"scheme\"]);\nexport var NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTIES = keys(NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTY_INDEX);\nexport function scaleTypeSupportProperty(scaleType, propName) {\n switch (propName) {\n case 'type':\n case 'domain':\n case 'reverse':\n case 'range':\n return true;\n case 'scheme':\n case 'interpolate':\n return !['point', 'band', 'identity'].includes(scaleType);\n case 'bins':\n return !['point', 'band', 'identity', 'ordinal'].includes(scaleType);\n case 'round':\n return isContinuousToContinuous(scaleType) || scaleType === 'band' || scaleType === 'point';\n case 'padding':\n case 'rangeMin':\n case 'rangeMax':\n return isContinuousToContinuous(scaleType) || ['point', 'band'].includes(scaleType);\n case 'paddingOuter':\n case 'align':\n return ['point', 'band'].includes(scaleType);\n case 'paddingInner':\n return scaleType === 'band';\n case 'domainMax':\n case 'domainMid':\n case 'domainMin':\n case 'domainRaw':\n case 'clamp':\n return isContinuousToContinuous(scaleType);\n case 'nice':\n return isContinuousToContinuous(scaleType) || scaleType === 'quantize' || scaleType === 'threshold';\n case 'exponent':\n return scaleType === 'pow';\n case 'base':\n return scaleType === 'log';\n case 'constant':\n return scaleType === 'symlog';\n case 'zero':\n return hasContinuousDomain(scaleType) && !contains(['log', 'time', 'utc', 'threshold', 'quantile' // quantile depends on distribution so zero does not matter\n ], scaleType);\n }\n}\n/**\n * Returns undefined if the input channel supports the input scale property name\n */\nexport function channelScalePropertyIncompatability(channel, propName) {\n switch (propName) {\n case 'interpolate':\n case 'scheme':\n case 'domainMid':\n if (!isColorChannel(channel)) {\n return log.message.cannotUseScalePropertyWithNonColor(propName);\n }\n return undefined;\n case 'align':\n case 'type':\n case 'bins':\n case 'domain':\n case 'domainMax':\n case 'domainMin':\n case 'domainRaw':\n case 'range':\n case 'base':\n case 'exponent':\n case 'constant':\n case 'nice':\n case 'padding':\n case 'paddingInner':\n case 'paddingOuter':\n case 'rangeMax':\n case 'rangeMin':\n case 'reverse':\n case 'round':\n case 'clamp':\n case 'zero':\n return undefined;\n // GOOD!\n }\n}\n\nexport function scaleTypeSupportDataType(specifiedType, fieldDefType) {\n if (contains([ORDINAL, NOMINAL], fieldDefType)) {\n return specifiedType === undefined || hasDiscreteDomain(specifiedType);\n } else if (fieldDefType === TEMPORAL) {\n return contains([ScaleType.TIME, ScaleType.UTC, undefined], specifiedType);\n } else if (fieldDefType === QUANTITATIVE) {\n return isQuantitative(specifiedType) || isContinuousToDiscrete(specifiedType) || specifiedType === undefined;\n }\n return true;\n}\nexport function channelSupportScaleType(channel, scaleType) {\n var hasNestedOffsetScale = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n if (!CHANNEL.isScaleChannel(channel)) {\n return false;\n }\n switch (channel) {\n case CHANNEL.X:\n case CHANNEL.Y:\n case CHANNEL.XOFFSET:\n case CHANNEL.YOFFSET:\n case CHANNEL.THETA:\n case CHANNEL.RADIUS:\n if (isContinuousToContinuous(scaleType)) {\n return true;\n } else if (scaleType === 'band') {\n return true;\n } else if (scaleType === 'point') {\n /*\n Point scale can't be use if the position has a nested offset scale\n because if there is a nested scale, then it's band.\n */\n return !hasNestedOffsetScale;\n }\n return false;\n case CHANNEL.SIZE: // TODO: size and opacity can support ordinal with more modification\n case CHANNEL.STROKEWIDTH:\n case CHANNEL.OPACITY:\n case CHANNEL.FILLOPACITY:\n case CHANNEL.STROKEOPACITY:\n case CHANNEL.ANGLE:\n // Although it generally doesn't make sense to use band with size and opacity,\n // it can also work since we use band: 0.5 to get midpoint.\n return isContinuousToContinuous(scaleType) || isContinuousToDiscrete(scaleType) || contains(['band', 'point', 'ordinal'], scaleType);\n case CHANNEL.COLOR:\n case CHANNEL.FILL:\n case CHANNEL.STROKE:\n return scaleType !== 'band';\n // band does not make sense with color\n case CHANNEL.STROKEDASH:\n case CHANNEL.SHAPE:\n return scaleType === 'ordinal' || isContinuousToDiscrete(scaleType);\n }\n}","import { keys } from './util';\n/**\n * All types of primitive marks.\n */\nexport var Mark = {\n arc: 'arc',\n area: 'area',\n bar: 'bar',\n image: 'image',\n line: 'line',\n point: 'point',\n rect: 'rect',\n rule: 'rule',\n text: 'text',\n tick: 'tick',\n trail: 'trail',\n circle: 'circle',\n square: 'square',\n geoshape: 'geoshape'\n};\nexport var ARC = Mark.arc;\nexport var AREA = Mark.area;\nexport var BAR = Mark.bar;\nexport var IMAGE = Mark.image;\nexport var LINE = Mark.line;\nexport var POINT = Mark.point;\nexport var RECT = Mark.rect;\nexport var RULE = Mark.rule;\nexport var TEXT = Mark.text;\nexport var TICK = Mark.tick;\nexport var TRAIL = Mark.trail;\nexport var CIRCLE = Mark.circle;\nexport var SQUARE = Mark.square;\nexport var GEOSHAPE = Mark.geoshape;\nexport function isMark(m) {\n return m in Mark;\n}\nexport function isPathMark(m) {\n return ['line', 'area', 'trail'].includes(m);\n}\nexport function isRectBasedMark(m) {\n return ['rect', 'bar', 'image', 'arc' /* arc is rect/interval in polar coordinate */].includes(m);\n}\nexport var PRIMITIVE_MARKS = new Set(keys(Mark));\nexport function isMarkDef(mark) {\n return mark['type'];\n}\nexport function isPrimitiveMark(mark) {\n var markType = isMarkDef(mark) ? mark.type : mark;\n return PRIMITIVE_MARKS.has(markType);\n}\nexport var STROKE_CONFIG = ['stroke', 'strokeWidth', 'strokeDash', 'strokeDashOffset', 'strokeOpacity', 'strokeJoin', 'strokeMiterLimit'];\nexport var FILL_CONFIG = ['fill', 'fillOpacity'];\nexport var FILL_STROKE_CONFIG = [].concat(STROKE_CONFIG, FILL_CONFIG);\nvar VL_ONLY_MARK_CONFIG_INDEX = {\n color: 1,\n filled: 1,\n invalid: 1,\n order: 1,\n radius2: 1,\n theta2: 1,\n timeUnitBandSize: 1,\n timeUnitBandPosition: 1\n};\nexport var VL_ONLY_MARK_CONFIG_PROPERTIES = keys(VL_ONLY_MARK_CONFIG_INDEX);\nexport var VL_ONLY_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX = {\n area: ['line', 'point'],\n bar: ['binSpacing', 'continuousBandSize', 'discreteBandSize', 'minBandSize'],\n rect: ['binSpacing', 'continuousBandSize', 'discreteBandSize', 'minBandSize'],\n line: ['point'],\n tick: ['bandSize', 'thickness']\n};\nexport var defaultMarkConfig = {\n color: '#4c78a8',\n invalid: 'filter',\n timeUnitBandSize: 1\n};\nvar MARK_CONFIG_INDEX = {\n mark: 1,\n arc: 1,\n area: 1,\n bar: 1,\n circle: 1,\n image: 1,\n line: 1,\n point: 1,\n rect: 1,\n rule: 1,\n square: 1,\n text: 1,\n tick: 1,\n trail: 1,\n geoshape: 1\n};\nexport var MARK_CONFIGS = keys(MARK_CONFIG_INDEX);\nexport function isRelativeBandSize(o) {\n return o && o['band'] != undefined;\n}\nexport var BAR_CORNER_RADIUS_INDEX = {\n horizontal: ['cornerRadiusTopRight', 'cornerRadiusBottomRight'],\n vertical: ['cornerRadiusTopLeft', 'cornerRadiusTopRight']\n};\nvar DEFAULT_RECT_BAND_SIZE = 5;\nexport var defaultBarConfig = {\n binSpacing: 1,\n continuousBandSize: DEFAULT_RECT_BAND_SIZE,\n minBandSize: 0.25,\n timeUnitBandPosition: 0.5\n};\nexport var defaultRectConfig = {\n binSpacing: 0,\n continuousBandSize: DEFAULT_RECT_BAND_SIZE,\n minBandSize: 0.25,\n timeUnitBandPosition: 0.5\n};\nexport var defaultTickConfig = {\n thickness: 1\n};\nexport function getMarkType(m) {\n return isMarkDef(m) ? m.type : m;\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { isFunction, isString } from 'vega-util';\nimport { isCountingAggregateOp } from '../../../aggregate';\nimport { isBinned, isBinning } from '../../../bin';\nimport { getMainRangeChannel, X, X2, Y2 } from '../../../channel';\nimport { binRequiresRange, getBandPosition, isDatumDef, isFieldDef, isFieldOrDatumDef, isTypedFieldDef, isValueDef, vgField } from '../../../channeldef';\nimport { dateTimeToExpr, isDateTime } from '../../../datetime';\nimport { isExprRef } from '../../../expr';\nimport * as log from '../../../log';\nimport { isPathMark } from '../../../mark';\nimport { fieldValidPredicate } from '../../../predicate';\nimport { hasDiscreteDomain, isContinuousToContinuous } from '../../../scale';\nimport { TEMPORAL } from '../../../type';\nimport { contains, stringify } from '../../../util';\nimport { isSignalRef } from '../../../vega.schema';\nimport { getMarkPropOrConfig, signalOrValueRef } from '../../common';\nexport function midPointRefWithPositionInvalidTest(params) {\n var channel = params.channel,\n channelDef = params.channelDef,\n markDef = params.markDef,\n scale = params.scale,\n config = params.config;\n var ref = midPoint(params);\n // Wrap to check if the positional value is invalid, if so, plot the point on the min value\n if (\n // Only this for field def without counting aggregate (as count wouldn't be null)\n isFieldDef(channelDef) && !isCountingAggregateOp(channelDef.aggregate) &&\n // and only for continuous scale\n scale && isContinuousToContinuous(scale.get('type'))) {\n return wrapPositionInvalidTest({\n fieldDef: channelDef,\n channel: channel,\n markDef: markDef,\n ref: ref,\n config: config\n });\n }\n return ref;\n}\nexport function wrapPositionInvalidTest(_ref) {\n var fieldDef = _ref.fieldDef,\n channel = _ref.channel,\n markDef = _ref.markDef,\n ref = _ref.ref,\n config = _ref.config;\n if (isPathMark(markDef.type)) {\n // path mark already use defined to skip points, no need to do it here.\n return ref;\n }\n var invalid = getMarkPropOrConfig('invalid', markDef, config);\n if (invalid === null) {\n // if there is no invalid filter, don't do the invalid test\n return [fieldInvalidTestValueRef(fieldDef, channel), ref];\n }\n return ref;\n}\nexport function fieldInvalidTestValueRef(fieldDef, channel) {\n var test = fieldInvalidPredicate(fieldDef, true);\n var mainChannel = getMainRangeChannel(channel); // we can cast here as the output can't be other things.\n var zeroValueRef = mainChannel === 'y' ? {\n field: {\n group: 'height'\n }\n } :\n // x / angle / radius can all use 0\n {\n value: 0\n };\n return _objectSpread({\n test: test\n }, zeroValueRef);\n}\nexport function fieldInvalidPredicate(field) {\n var invalid = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n return fieldValidPredicate(isString(field) ? field : vgField(field, {\n expr: 'datum'\n }), !invalid);\n}\nexport function datumDefToExpr(datumDef) {\n var datum = datumDef.datum;\n if (isDateTime(datum)) {\n return dateTimeToExpr(datum);\n }\n return \"\".concat(stringify(datum));\n}\nexport function valueRefForFieldOrDatumDef(fieldDef, scaleName, opt, encode) {\n var ref = {};\n if (scaleName) {\n ref.scale = scaleName;\n }\n if (isDatumDef(fieldDef)) {\n var datum = fieldDef.datum;\n if (isDateTime(datum)) {\n ref.signal = dateTimeToExpr(datum);\n } else if (isSignalRef(datum)) {\n ref.signal = datum.signal;\n } else if (isExprRef(datum)) {\n ref.signal = datum.expr;\n } else {\n ref.value = datum;\n }\n } else {\n ref.field = vgField(fieldDef, opt);\n }\n if (encode) {\n var offset = encode.offset,\n band = encode.band;\n if (offset) {\n ref.offset = offset;\n }\n if (band) {\n ref.band = band;\n }\n }\n return ref;\n}\n/**\n * Signal that returns the middle of a bin from start and end field. Should only be used with x and y.\n */\nexport function interpolatedSignalRef(_ref2) {\n var scaleName = _ref2.scaleName,\n fieldOrDatumDef = _ref2.fieldOrDatumDef,\n fieldOrDatumDef2 = _ref2.fieldOrDatumDef2,\n offset = _ref2.offset,\n startSuffix = _ref2.startSuffix,\n _ref2$bandPosition = _ref2.bandPosition,\n bandPosition = _ref2$bandPosition === void 0 ? 0.5 : _ref2$bandPosition;\n var expr = 0 < bandPosition && bandPosition < 1 ? 'datum' : undefined;\n var start = vgField(fieldOrDatumDef, {\n expr: expr,\n suffix: startSuffix\n });\n var end = fieldOrDatumDef2 !== undefined ? vgField(fieldOrDatumDef2, {\n expr: expr\n }) : vgField(fieldOrDatumDef, {\n suffix: 'end',\n expr: expr\n });\n var ref = {};\n if (bandPosition === 0 || bandPosition === 1) {\n ref.scale = scaleName;\n var field = bandPosition === 0 ? start : end;\n ref.field = field;\n } else {\n var datum = isSignalRef(bandPosition) ? \"\".concat(bandPosition.signal, \" * \").concat(start, \" + (1-\").concat(bandPosition.signal, \") * \").concat(end) : \"\".concat(bandPosition, \" * \").concat(start, \" + \").concat(1 - bandPosition, \" * \").concat(end);\n ref.signal = \"scale(\\\"\".concat(scaleName, \"\\\", \").concat(datum, \")\");\n }\n if (offset) {\n ref.offset = offset;\n }\n return ref;\n}\nexport function binSizeExpr(_ref3) {\n var scaleName = _ref3.scaleName,\n fieldDef = _ref3.fieldDef;\n var start = vgField(fieldDef, {\n expr: 'datum'\n });\n var end = vgField(fieldDef, {\n expr: 'datum',\n suffix: 'end'\n });\n return \"abs(scale(\\\"\".concat(scaleName, \"\\\", \").concat(end, \") - scale(\\\"\").concat(scaleName, \"\\\", \").concat(start, \"))\");\n}\n/**\n * @returns {VgValueRef} Value Ref for xc / yc or mid point for other channels.\n */\nexport function midPoint(_ref4) {\n var channel = _ref4.channel,\n channelDef = _ref4.channelDef,\n channel2Def = _ref4.channel2Def,\n markDef = _ref4.markDef,\n config = _ref4.config,\n scaleName = _ref4.scaleName,\n scale = _ref4.scale,\n stack = _ref4.stack,\n offset = _ref4.offset,\n defaultRef = _ref4.defaultRef,\n bandPosition = _ref4.bandPosition;\n // TODO: datum support\n if (channelDef) {\n /* istanbul ignore else */\n if (isFieldOrDatumDef(channelDef)) {\n var _ref5, _bandPosition2;\n var scaleType = scale === null || scale === void 0 ? void 0 : scale.get('type');\n if (isTypedFieldDef(channelDef)) {\n var _bandPosition;\n (_bandPosition = bandPosition) !== null && _bandPosition !== void 0 ? _bandPosition : bandPosition = getBandPosition({\n fieldDef: channelDef,\n fieldDef2: channel2Def,\n markDef: markDef,\n config: config\n });\n var bin = channelDef.bin,\n timeUnit = channelDef.timeUnit,\n type = channelDef.type;\n if (isBinning(bin) || bandPosition && timeUnit && type === TEMPORAL) {\n // Use middle only for x an y to place marks in the center between start and end of the bin range.\n // We do not use the mid point for other channels (e.g. size) so that properties of legends and marks match.\n if (stack !== null && stack !== void 0 && stack.impute) {\n // For stack, we computed bin_mid so we can impute.\n return valueRefForFieldOrDatumDef(channelDef, scaleName, {\n binSuffix: 'mid'\n }, {\n offset: offset\n });\n }\n if (bandPosition && !hasDiscreteDomain(scaleType)) {\n // if band = 0, no need to call interpolation\n // For non-stack, we can just calculate bin mid on the fly using signal.\n return interpolatedSignalRef({\n scaleName: scaleName,\n fieldOrDatumDef: channelDef,\n bandPosition: bandPosition,\n offset: offset\n });\n }\n return valueRefForFieldOrDatumDef(channelDef, scaleName, binRequiresRange(channelDef, channel) ? {\n binSuffix: 'range'\n } : {}, {\n offset: offset\n });\n } else if (isBinned(bin)) {\n if (isFieldDef(channel2Def)) {\n return interpolatedSignalRef({\n scaleName: scaleName,\n fieldOrDatumDef: channelDef,\n fieldOrDatumDef2: channel2Def,\n bandPosition: bandPosition,\n offset: offset\n });\n } else {\n var channel2 = channel === X ? X2 : Y2;\n log.warn(log.message.channelRequiredForBinned(channel2));\n }\n }\n }\n return valueRefForFieldOrDatumDef(channelDef, scaleName, hasDiscreteDomain(scaleType) ? {\n binSuffix: 'range'\n } : {},\n // no need for bin suffix if there is no scale\n {\n offset: offset,\n // For band, to get mid point, need to offset by half of the band\n band: scaleType === 'band' ? (_ref5 = (_bandPosition2 = bandPosition) !== null && _bandPosition2 !== void 0 ? _bandPosition2 : channelDef.bandPosition) !== null && _ref5 !== void 0 ? _ref5 : 0.5 : undefined\n });\n } else if (isValueDef(channelDef)) {\n var value = channelDef.value;\n var offsetMixins = offset ? {\n offset: offset\n } : {};\n return _objectSpread(_objectSpread({}, widthHeightValueOrSignalRef(channel, value)), offsetMixins);\n }\n // If channelDef is neither field def or value def, it's a condition-only def.\n // In such case, we will use default ref.\n }\n\n if (isFunction(defaultRef)) {\n defaultRef = defaultRef();\n }\n if (defaultRef) {\n // for non-position, ref could be undefined.\n return _objectSpread(_objectSpread({}, defaultRef), offset ? {\n offset: offset\n } : {});\n }\n return defaultRef;\n}\n/**\n * Convert special \"width\" and \"height\" values in Vega-Lite into Vega value ref.\n */\nexport function widthHeightValueOrSignalRef(channel, value) {\n if (contains(['x', 'x2'], channel) && value === 'width') {\n return {\n field: {\n group: 'width'\n }\n };\n } else if (contains(['y', 'y2'], channel) && value === 'height') {\n return {\n field: {\n group: 'height'\n }\n };\n }\n return signalOrValueRef(value);\n}","import { isString } from 'vega-util';\nimport { isBinning } from '../bin';\nimport { channelDefType, isFieldDef, isFieldOrDatumDefForTimeFormat, isPositionFieldOrDatumDef, isScaleFieldDef, vgField } from '../channeldef';\nimport { fieldValidPredicate } from '../predicate';\nimport { ScaleType } from '../scale';\nimport { formatExpression, normalizeTimeUnit, timeUnitSpecifierExpression } from '../timeunit';\nimport { QUANTITATIVE } from '../type';\nimport { stringify } from '../util';\nimport { isSignalRef } from '../vega.schema';\nimport { datumDefToExpr } from './mark/encode/valueref';\nexport function isCustomFormatType(formatType) {\n return formatType && formatType !== 'number' && formatType !== 'time';\n}\nfunction customFormatExpr(formatType, field, format) {\n return \"\".concat(formatType, \"(\").concat(field).concat(format ? \", \".concat(stringify(format)) : '', \")\");\n}\nexport var BIN_RANGE_DELIMITER = \" \\u2013 \";\nexport function formatSignalRef(_ref) {\n var fieldOrDatumDef = _ref.fieldOrDatumDef,\n format = _ref.format,\n formatType = _ref.formatType,\n expr = _ref.expr,\n normalizeStack = _ref.normalizeStack,\n config = _ref.config;\n if (isCustomFormatType(formatType)) {\n return formatCustomType({\n fieldOrDatumDef: fieldOrDatumDef,\n format: format,\n formatType: formatType,\n expr: expr,\n config: config\n });\n }\n var field = fieldToFormat(fieldOrDatumDef, expr, normalizeStack);\n var type = channelDefType(fieldOrDatumDef);\n if (format === undefined && formatType === undefined && config.customFormatTypes) {\n if (type === 'quantitative') {\n if (normalizeStack && config.normalizedNumberFormatType) return formatCustomType({\n fieldOrDatumDef: fieldOrDatumDef,\n format: config.normalizedNumberFormat,\n formatType: config.normalizedNumberFormatType,\n expr: expr,\n config: config\n });\n if (config.numberFormatType) {\n return formatCustomType({\n fieldOrDatumDef: fieldOrDatumDef,\n format: config.numberFormat,\n formatType: config.numberFormatType,\n expr: expr,\n config: config\n });\n }\n }\n if (type === 'temporal' && config.timeFormatType && isFieldDef(fieldOrDatumDef) && fieldOrDatumDef.timeUnit === undefined) {\n return formatCustomType({\n fieldOrDatumDef: fieldOrDatumDef,\n format: config.timeFormat,\n formatType: config.timeFormatType,\n expr: expr,\n config: config\n });\n }\n }\n if (isFieldOrDatumDefForTimeFormat(fieldOrDatumDef)) {\n var _normalizeTimeUnit, _fieldOrDatumDef$scal;\n var signal = timeFormatExpression({\n field: field,\n timeUnit: isFieldDef(fieldOrDatumDef) ? (_normalizeTimeUnit = normalizeTimeUnit(fieldOrDatumDef.timeUnit)) === null || _normalizeTimeUnit === void 0 ? void 0 : _normalizeTimeUnit.unit : undefined,\n format: format,\n formatType: config.timeFormatType,\n rawTimeFormat: config.timeFormat,\n isUTCScale: isScaleFieldDef(fieldOrDatumDef) && ((_fieldOrDatumDef$scal = fieldOrDatumDef.scale) === null || _fieldOrDatumDef$scal === void 0 ? void 0 : _fieldOrDatumDef$scal.type) === ScaleType.UTC\n });\n return signal ? {\n signal: signal\n } : undefined;\n }\n format = numberFormat({\n type: type,\n specifiedFormat: format,\n config: config,\n normalizeStack: normalizeStack\n });\n if (isFieldDef(fieldOrDatumDef) && isBinning(fieldOrDatumDef.bin)) {\n var endField = vgField(fieldOrDatumDef, {\n expr: expr,\n binSuffix: 'end'\n });\n return {\n signal: binFormatExpression(field, endField, format, formatType, config)\n };\n } else if (format || channelDefType(fieldOrDatumDef) === 'quantitative') {\n return {\n signal: \"\".concat(formatExpr(field, format))\n };\n } else {\n return {\n signal: \"isValid(\".concat(field, \") ? \").concat(field, \" : \\\"\\\"+\").concat(field)\n };\n }\n}\nfunction fieldToFormat(fieldOrDatumDef, expr, normalizeStack) {\n if (isFieldDef(fieldOrDatumDef)) {\n if (normalizeStack) {\n return \"\".concat(vgField(fieldOrDatumDef, {\n expr: expr,\n suffix: 'end'\n }), \"-\").concat(vgField(fieldOrDatumDef, {\n expr: expr,\n suffix: 'start'\n }));\n } else {\n return vgField(fieldOrDatumDef, {\n expr: expr\n });\n }\n } else {\n return datumDefToExpr(fieldOrDatumDef);\n }\n}\nexport function formatCustomType(_ref2) {\n var _field;\n var fieldOrDatumDef = _ref2.fieldOrDatumDef,\n format = _ref2.format,\n formatType = _ref2.formatType,\n expr = _ref2.expr,\n normalizeStack = _ref2.normalizeStack,\n config = _ref2.config,\n field = _ref2.field;\n (_field = field) !== null && _field !== void 0 ? _field : field = fieldToFormat(fieldOrDatumDef, expr, normalizeStack);\n if (field !== 'datum.value' &&\n // For axis/legend, we can't correctly know the end of the bin from `datum`\n isFieldDef(fieldOrDatumDef) && isBinning(fieldOrDatumDef.bin)) {\n var endField = vgField(fieldOrDatumDef, {\n expr: expr,\n binSuffix: 'end'\n });\n return {\n signal: binFormatExpression(field, endField, format, formatType, config)\n };\n }\n return {\n signal: customFormatExpr(formatType, field, format)\n };\n}\nexport function guideFormat(fieldOrDatumDef, type, format, formatType, config, omitTimeFormatConfig // axis doesn't use config.timeFormat\n) {\n if (isString(formatType) && isCustomFormatType(formatType)) {\n return undefined; // handled in encode block\n } else if (format === undefined && formatType === undefined && config.customFormatTypes) {\n if (channelDefType(fieldOrDatumDef) === 'quantitative') {\n if (config.normalizedNumberFormatType && isPositionFieldOrDatumDef(fieldOrDatumDef) && fieldOrDatumDef.stack === 'normalize') {\n return undefined; // handled in encode block\n }\n\n if (config.numberFormatType) {\n return undefined; // handled in encode block\n }\n }\n }\n\n if (isPositionFieldOrDatumDef(fieldOrDatumDef) && fieldOrDatumDef.stack === 'normalize' && config.normalizedNumberFormat) {\n return numberFormat({\n type: 'quantitative',\n config: config,\n normalizeStack: true\n });\n }\n if (isFieldOrDatumDefForTimeFormat(fieldOrDatumDef)) {\n var _normalizeTimeUnit2;\n var timeUnit = isFieldDef(fieldOrDatumDef) ? (_normalizeTimeUnit2 = normalizeTimeUnit(fieldOrDatumDef.timeUnit)) === null || _normalizeTimeUnit2 === void 0 ? void 0 : _normalizeTimeUnit2.unit : undefined;\n if (timeUnit === undefined && config.customFormatTypes && config.timeFormatType) {\n return undefined; // hanlded in encode block\n }\n\n return timeFormat({\n specifiedFormat: format,\n timeUnit: timeUnit,\n config: config,\n omitTimeFormatConfig: omitTimeFormatConfig\n });\n }\n return numberFormat({\n type: type,\n specifiedFormat: format,\n config: config\n });\n}\nexport function guideFormatType(formatType, fieldOrDatumDef, scaleType) {\n if (formatType && (isSignalRef(formatType) || formatType === 'number' || formatType === 'time')) {\n return formatType;\n }\n if (isFieldOrDatumDefForTimeFormat(fieldOrDatumDef) && scaleType !== 'time' && scaleType !== 'utc') {\n var _normalizeTimeUnit3;\n return isFieldDef(fieldOrDatumDef) && (_normalizeTimeUnit3 = normalizeTimeUnit(fieldOrDatumDef === null || fieldOrDatumDef === void 0 ? void 0 : fieldOrDatumDef.timeUnit)) !== null && _normalizeTimeUnit3 !== void 0 && _normalizeTimeUnit3.utc ? 'utc' : 'time';\n }\n return undefined;\n}\n/**\n * Returns number format for a fieldDef.\n */\nexport function numberFormat(_ref3) {\n var type = _ref3.type,\n specifiedFormat = _ref3.specifiedFormat,\n config = _ref3.config,\n normalizeStack = _ref3.normalizeStack;\n // Specified format in axis/legend has higher precedence than fieldDef.format\n if (isString(specifiedFormat)) {\n return specifiedFormat;\n }\n if (type === QUANTITATIVE) {\n // we only apply the default if the field is quantitative\n return normalizeStack ? config.normalizedNumberFormat : config.numberFormat;\n }\n return undefined;\n}\n/**\n * Returns time format for a fieldDef for use in guides.\n */\nexport function timeFormat(_ref4) {\n var specifiedFormat = _ref4.specifiedFormat,\n timeUnit = _ref4.timeUnit,\n config = _ref4.config,\n omitTimeFormatConfig = _ref4.omitTimeFormatConfig;\n if (specifiedFormat) {\n return specifiedFormat;\n }\n if (timeUnit) {\n return {\n signal: timeUnitSpecifierExpression(timeUnit)\n };\n }\n return omitTimeFormatConfig ? undefined : config.timeFormat;\n}\nfunction formatExpr(field, format) {\n return \"format(\".concat(field, \", \\\"\").concat(format || '', \"\\\")\");\n}\nfunction binNumberFormatExpr(field, format, formatType, config) {\n var _ref5;\n if (isCustomFormatType(formatType)) {\n return customFormatExpr(formatType, field, format);\n }\n return formatExpr(field, (_ref5 = isString(format) ? format : undefined) !== null && _ref5 !== void 0 ? _ref5 : config.numberFormat);\n}\nexport function binFormatExpression(startField, endField, format, formatType, config) {\n if (format === undefined && formatType === undefined && config.customFormatTypes && config.numberFormatType) {\n return binFormatExpression(startField, endField, config.numberFormat, config.numberFormatType, config);\n }\n var start = binNumberFormatExpr(startField, format, formatType, config);\n var end = binNumberFormatExpr(endField, format, formatType, config);\n return \"\".concat(fieldValidPredicate(startField, false), \" ? \\\"null\\\" : \").concat(start, \" + \\\"\").concat(BIN_RANGE_DELIMITER, \"\\\" + \").concat(end);\n}\n/**\n * Returns the time expression used for axis/legend labels or text mark for a temporal field\n */\nexport function timeFormatExpression(_ref6) {\n var field = _ref6.field,\n timeUnit = _ref6.timeUnit,\n format = _ref6.format,\n formatType = _ref6.formatType,\n rawTimeFormat = _ref6.rawTimeFormat,\n isUTCScale = _ref6.isUTCScale;\n if (!timeUnit || format) {\n // If there is no time unit, or if user explicitly specifies format for axis/legend/text.\n if (!timeUnit && formatType) {\n return \"\".concat(formatType, \"(\").concat(field, \", '\").concat(format, \"')\");\n }\n format = isString(format) ? format : rawTimeFormat; // only use provided timeFormat if there is no timeUnit.\n return \"\".concat(isUTCScale ? 'utc' : 'time', \"Format(\").concat(field, \", '\").concat(format, \"')\");\n } else {\n return formatExpression(timeUnit, field, isUTCScale);\n }\n}","import { isArray } from 'vega-util';\nexport var DEFAULT_SORT_OP = 'min';\nvar SORT_BY_CHANNEL_INDEX = {\n x: 1,\n y: 1,\n color: 1,\n fill: 1,\n stroke: 1,\n strokeWidth: 1,\n size: 1,\n shape: 1,\n fillOpacity: 1,\n strokeOpacity: 1,\n opacity: 1,\n text: 1\n};\nexport function isSortByChannel(c) {\n return c in SORT_BY_CHANNEL_INDEX;\n}\nexport function isSortByEncoding(sort) {\n return !!(sort !== null && sort !== void 0 && sort['encoding']);\n}\nexport function isSortField(sort) {\n return sort && (sort['op'] === 'count' || !!sort['field']);\n}\nexport function isSortArray(sort) {\n return sort && isArray(sort);\n}","export function isFacetMapping(f) {\n return 'row' in f || 'column' in f;\n}\nexport function isFacetFieldDef(channelDef) {\n return !!channelDef && 'header' in channelDef;\n}\nexport function isFacetSpec(spec) {\n return 'facet' in spec;\n}","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nvar _excluded = [\"format\", \"formatType\"],\n _excluded2 = [\"format\", \"formatType\"],\n _excluded3 = [\"orient\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { isArray, isBoolean, isNumber, isString } from 'vega-util';\nimport { isAggregateOp, isArgmaxDef, isArgminDef, isCountingAggregateOp } from './aggregate';\nimport { autoMaxBins, binToString, isBinned, isBinning } from './bin';\nimport { ANGLE, COLOR, COLUMN, DESCRIPTION, DETAIL, FACET, FILL, FILLOPACITY, getSizeChannel, HREF, isScaleChannel, isSecondaryRangeChannel, isXorY, KEY, LATITUDE, LATITUDE2, LONGITUDE, LONGITUDE2, OPACITY, ORDER, RADIUS, RADIUS2, ROW, SHAPE, SIZE, STROKE, STROKEDASH, STROKEOPACITY, STROKEWIDTH, TEXT, THETA, THETA2, TOOLTIP, URL, X, X2, XOFFSET, Y, Y2, YOFFSET } from './channel';\nimport { getMarkConfig, getMarkPropOrConfig } from './compile/common';\nimport { isCustomFormatType } from './compile/format';\nimport { dateTimeToExpr, isDateTime } from './datetime';\nimport { isExprRef } from './expr';\nimport * as log from './log';\nimport { isRectBasedMark } from './mark';\nimport { hasDiscreteDomain, isContinuousToDiscrete, SCALE_CATEGORY_INDEX } from './scale';\nimport { isSortByChannel } from './sort';\nimport { isFacetFieldDef } from './spec/facet';\nimport { getTimeUnitParts, isBinnedTimeUnit, isLocalSingleTimeUnit, normalizeTimeUnit, timeUnitToString } from './timeunit';\nimport { getFullName, QUANTITATIVE } from './type';\nimport { flatAccessWithDatum, getFirstDefined, internalField, omit, removePathFromField, replacePathInField, stringify, titleCase } from './util';\nimport { isSignalRef } from './vega.schema';\nexport function isConditionalParameter(c) {\n return c['param'];\n}\nexport function isRepeatRef(field) {\n return field && !isString(field) && 'repeat' in field;\n}\nexport function toFieldDefBase(fieldDef) {\n var field = fieldDef.field,\n timeUnit = fieldDef.timeUnit,\n bin = fieldDef.bin,\n aggregate = fieldDef.aggregate;\n return _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, timeUnit ? {\n timeUnit: timeUnit\n } : {}), bin ? {\n bin: bin\n } : {}), aggregate ? {\n aggregate: aggregate\n } : {}), {}, {\n field: field\n });\n}\nexport function isSortableFieldDef(fieldDef) {\n return 'sort' in fieldDef;\n}\nexport function getBandPosition(_ref) {\n var fieldDef = _ref.fieldDef,\n fieldDef2 = _ref.fieldDef2,\n mark = _ref.markDef,\n config = _ref.config;\n if (isFieldOrDatumDef(fieldDef) && fieldDef.bandPosition !== undefined) {\n return fieldDef.bandPosition;\n }\n if (isFieldDef(fieldDef)) {\n var timeUnit = fieldDef.timeUnit,\n bin = fieldDef.bin;\n if (timeUnit && !fieldDef2) {\n return isRectBasedMark(mark.type) ? 0 : getMarkConfig('timeUnitBandPosition', mark, config);\n } else if (isBinning(bin)) {\n return 0.5;\n }\n }\n return undefined;\n}\nexport function getBandSize(_ref2) {\n var channel = _ref2.channel,\n fieldDef = _ref2.fieldDef,\n fieldDef2 = _ref2.fieldDef2,\n mark = _ref2.markDef,\n config = _ref2.config,\n scaleType = _ref2.scaleType,\n useVlSizeChannel = _ref2.useVlSizeChannel;\n var sizeChannel = getSizeChannel(channel);\n var size = getMarkPropOrConfig(useVlSizeChannel ? 'size' : sizeChannel, mark, config, {\n vgChannel: sizeChannel\n });\n if (size !== undefined) {\n return size;\n }\n if (isFieldDef(fieldDef)) {\n var timeUnit = fieldDef.timeUnit,\n bin = fieldDef.bin;\n if (timeUnit && !fieldDef2) {\n return {\n band: getMarkConfig('timeUnitBandSize', mark, config)\n };\n } else if (isBinning(bin) && !hasDiscreteDomain(scaleType)) {\n return {\n band: 1\n };\n }\n }\n if (isRectBasedMark(mark.type)) {\n var _config$mark$type3;\n if (scaleType) {\n if (hasDiscreteDomain(scaleType)) {\n var _config$mark$type;\n return ((_config$mark$type = config[mark.type]) === null || _config$mark$type === void 0 ? void 0 : _config$mark$type.discreteBandSize) || {\n band: 1\n };\n } else {\n var _config$mark$type2;\n return (_config$mark$type2 = config[mark.type]) === null || _config$mark$type2 === void 0 ? void 0 : _config$mark$type2.continuousBandSize;\n }\n }\n return (_config$mark$type3 = config[mark.type]) === null || _config$mark$type3 === void 0 ? void 0 : _config$mark$type3.discreteBandSize;\n }\n return undefined;\n}\nexport function hasBandEnd(fieldDef, fieldDef2, markDef, config) {\n if (isBinning(fieldDef.bin) || fieldDef.timeUnit && isTypedFieldDef(fieldDef) && fieldDef.type === 'temporal') {\n // Need to check bandPosition because non-rect marks (e.g., point) with timeUnit\n // doesn't have to use bandEnd if there is no bandPosition.\n return getBandPosition({\n fieldDef: fieldDef,\n fieldDef2: fieldDef2,\n markDef: markDef,\n config: config\n }) !== undefined;\n }\n return false;\n}\nexport function isOrderOnlyDef(orderDef) {\n return orderDef && !!orderDef.sort && !orderDef['field'];\n}\nexport function isConditionalDef(channelDef) {\n return channelDef && 'condition' in channelDef;\n}\n/**\n * Return if a channelDef is a ConditionalValueDef with ConditionFieldDef\n */\nexport function hasConditionalFieldDef(channelDef) {\n var condition = channelDef === null || channelDef === void 0 ? void 0 : channelDef['condition'];\n return !!condition && !isArray(condition) && isFieldDef(condition);\n}\nexport function hasConditionalFieldOrDatumDef(channelDef) {\n var condition = channelDef === null || channelDef === void 0 ? void 0 : channelDef['condition'];\n return !!condition && !isArray(condition) && isFieldOrDatumDef(condition);\n}\nexport function hasConditionalValueDef(channelDef) {\n var condition = channelDef === null || channelDef === void 0 ? void 0 : channelDef['condition'];\n return !!condition && (isArray(condition) || isValueDef(condition));\n}\nexport function isFieldDef(channelDef) {\n // TODO: we can't use field in channelDef here as it's somehow failing runtime test\n return channelDef && (!!channelDef['field'] || channelDef['aggregate'] === 'count');\n}\nexport function channelDefType(channelDef) {\n return channelDef === null || channelDef === void 0 ? void 0 : channelDef['type'];\n}\nexport function isDatumDef(channelDef) {\n return channelDef && 'datum' in channelDef;\n}\nexport function isContinuousFieldOrDatumDef(cd) {\n // TODO: make datum support DateTime object\n return isTypedFieldDef(cd) && !isDiscrete(cd) || isNumericDataDef(cd);\n}\nexport function isUnbinnedQuantitativeFieldOrDatumDef(cd) {\n // TODO: make datum support DateTime object\n return isTypedFieldDef(cd) && cd.type === 'quantitative' && !cd.bin || isNumericDataDef(cd);\n}\nexport function isNumericDataDef(cd) {\n return isDatumDef(cd) && isNumber(cd.datum);\n}\nexport function isFieldOrDatumDef(channelDef) {\n return isFieldDef(channelDef) || isDatumDef(channelDef);\n}\nexport function isTypedFieldDef(channelDef) {\n return channelDef && ('field' in channelDef || channelDef['aggregate'] === 'count') && 'type' in channelDef;\n}\nexport function isValueDef(channelDef) {\n return channelDef && 'value' in channelDef && 'value' in channelDef;\n}\nexport function isScaleFieldDef(channelDef) {\n return channelDef && ('scale' in channelDef || 'sort' in channelDef);\n}\nexport function isPositionFieldOrDatumDef(channelDef) {\n return channelDef && ('axis' in channelDef || 'stack' in channelDef || 'impute' in channelDef);\n}\nexport function isMarkPropFieldOrDatumDef(channelDef) {\n return channelDef && 'legend' in channelDef;\n}\nexport function isStringFieldOrDatumDef(channelDef) {\n return channelDef && ('format' in channelDef || 'formatType' in channelDef);\n}\nexport function toStringFieldDef(fieldDef) {\n // omit properties that don't exist in string field defs\n return omit(fieldDef, ['legend', 'axis', 'header', 'scale']);\n}\nfunction isOpFieldDef(fieldDef) {\n return 'op' in fieldDef;\n}\n/**\n * Get a Vega field reference from a Vega-Lite field def.\n */\nexport function vgField(fieldDef) {\n var opt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var field = fieldDef.field;\n var prefix = opt.prefix;\n var suffix = opt.suffix;\n var argAccessor = ''; // for accessing argmin/argmax field at the end without getting escaped\n if (isCount(fieldDef)) {\n field = internalField('count');\n } else {\n var fn;\n if (!opt.nofn) {\n if (isOpFieldDef(fieldDef)) {\n fn = fieldDef.op;\n } else {\n var bin = fieldDef.bin,\n aggregate = fieldDef.aggregate,\n timeUnit = fieldDef.timeUnit;\n if (isBinning(bin)) {\n var _opt$binSuffix, _opt$suffix;\n fn = binToString(bin);\n suffix = ((_opt$binSuffix = opt.binSuffix) !== null && _opt$binSuffix !== void 0 ? _opt$binSuffix : '') + ((_opt$suffix = opt.suffix) !== null && _opt$suffix !== void 0 ? _opt$suffix : '');\n } else if (aggregate) {\n if (isArgmaxDef(aggregate)) {\n argAccessor = \"[\\\"\".concat(field, \"\\\"]\");\n field = \"argmax_\".concat(aggregate.argmax);\n } else if (isArgminDef(aggregate)) {\n argAccessor = \"[\\\"\".concat(field, \"\\\"]\");\n field = \"argmin_\".concat(aggregate.argmin);\n } else {\n fn = String(aggregate);\n }\n } else if (timeUnit && !isBinnedTimeUnit(timeUnit)) {\n var _opt$suffix2;\n fn = timeUnitToString(timeUnit);\n suffix = (!['range', 'mid'].includes(opt.binSuffix) && opt.binSuffix || '') + ((_opt$suffix2 = opt.suffix) !== null && _opt$suffix2 !== void 0 ? _opt$suffix2 : '');\n }\n }\n }\n if (fn) {\n field = field ? \"\".concat(fn, \"_\").concat(field) : fn;\n }\n }\n if (suffix) {\n field = \"\".concat(field, \"_\").concat(suffix);\n }\n if (prefix) {\n field = \"\".concat(prefix, \"_\").concat(field);\n }\n if (opt.forAs) {\n return removePathFromField(field);\n } else if (opt.expr) {\n // Expression to access flattened field. No need to escape dots.\n return flatAccessWithDatum(field, opt.expr) + argAccessor;\n } else {\n // We flattened all fields so paths should have become dot.\n return replacePathInField(field) + argAccessor;\n }\n}\nexport function isDiscrete(def) {\n switch (def.type) {\n case 'nominal':\n case 'ordinal':\n case 'geojson':\n return true;\n case 'quantitative':\n return isFieldDef(def) && !!def.bin;\n case 'temporal':\n return false;\n }\n throw new Error(log.message.invalidFieldType(def.type));\n}\nexport function isDiscretizing(def) {\n var _def$scale;\n return isScaleFieldDef(def) && isContinuousToDiscrete((_def$scale = def.scale) === null || _def$scale === void 0 ? void 0 : _def$scale.type);\n}\nexport function isCount(fieldDef) {\n return fieldDef.aggregate === 'count';\n}\nexport function verbalTitleFormatter(fieldDef, config) {\n var field = fieldDef.field,\n bin = fieldDef.bin,\n timeUnit = fieldDef.timeUnit,\n aggregate = fieldDef.aggregate;\n if (aggregate === 'count') {\n return config.countTitle;\n } else if (isBinning(bin)) {\n return \"\".concat(field, \" (binned)\");\n } else if (timeUnit && !isBinnedTimeUnit(timeUnit)) {\n var _normalizeTimeUnit;\n var unit = (_normalizeTimeUnit = normalizeTimeUnit(timeUnit)) === null || _normalizeTimeUnit === void 0 ? void 0 : _normalizeTimeUnit.unit;\n if (unit) {\n return \"\".concat(field, \" (\").concat(getTimeUnitParts(unit).join('-'), \")\");\n }\n } else if (aggregate) {\n if (isArgmaxDef(aggregate)) {\n return \"\".concat(field, \" for max \").concat(aggregate.argmax);\n } else if (isArgminDef(aggregate)) {\n return \"\".concat(field, \" for min \").concat(aggregate.argmin);\n } else {\n return \"\".concat(titleCase(aggregate), \" of \").concat(field);\n }\n }\n return field;\n}\nexport function functionalTitleFormatter(fieldDef) {\n var aggregate = fieldDef.aggregate,\n bin = fieldDef.bin,\n timeUnit = fieldDef.timeUnit,\n field = fieldDef.field;\n if (isArgmaxDef(aggregate)) {\n return \"\".concat(field, \" for argmax(\").concat(aggregate.argmax, \")\");\n } else if (isArgminDef(aggregate)) {\n return \"\".concat(field, \" for argmin(\").concat(aggregate.argmin, \")\");\n }\n var timeUnitParams = timeUnit && !isBinnedTimeUnit(timeUnit) ? normalizeTimeUnit(timeUnit) : undefined;\n var fn = aggregate || (timeUnitParams === null || timeUnitParams === void 0 ? void 0 : timeUnitParams.unit) || (timeUnitParams === null || timeUnitParams === void 0 ? void 0 : timeUnitParams.maxbins) && 'timeunit' || isBinning(bin) && 'bin';\n if (fn) {\n return \"\".concat(fn.toUpperCase(), \"(\").concat(field, \")\");\n } else {\n return field;\n }\n}\nexport var defaultTitleFormatter = function defaultTitleFormatter(fieldDef, config) {\n switch (config.fieldTitle) {\n case 'plain':\n return fieldDef.field;\n case 'functional':\n return functionalTitleFormatter(fieldDef);\n default:\n return verbalTitleFormatter(fieldDef, config);\n }\n};\nvar titleFormatter = defaultTitleFormatter;\nexport function setTitleFormatter(formatter) {\n titleFormatter = formatter;\n}\nexport function resetTitleFormatter() {\n setTitleFormatter(defaultTitleFormatter);\n}\nexport function title(fieldOrDatumDef, config, _ref3) {\n var _getGuide;\n var allowDisabling = _ref3.allowDisabling,\n _ref3$includeDefault = _ref3.includeDefault,\n includeDefault = _ref3$includeDefault === void 0 ? true : _ref3$includeDefault;\n var guideTitle = (_getGuide = getGuide(fieldOrDatumDef)) === null || _getGuide === void 0 ? void 0 : _getGuide.title;\n if (!isFieldDef(fieldOrDatumDef)) {\n return guideTitle !== null && guideTitle !== void 0 ? guideTitle : fieldOrDatumDef.title;\n }\n var fieldDef = fieldOrDatumDef;\n var def = includeDefault ? defaultTitle(fieldDef, config) : undefined;\n if (allowDisabling) {\n return getFirstDefined(guideTitle, fieldDef.title, def);\n } else {\n var _ref4;\n return (_ref4 = guideTitle !== null && guideTitle !== void 0 ? guideTitle : fieldDef.title) !== null && _ref4 !== void 0 ? _ref4 : def;\n }\n}\nexport function getGuide(fieldDef) {\n if (isPositionFieldOrDatumDef(fieldDef) && fieldDef.axis) {\n return fieldDef.axis;\n } else if (isMarkPropFieldOrDatumDef(fieldDef) && fieldDef.legend) {\n return fieldDef.legend;\n } else if (isFacetFieldDef(fieldDef) && fieldDef.header) {\n return fieldDef.header;\n }\n return undefined;\n}\nexport function defaultTitle(fieldDef, config) {\n return titleFormatter(fieldDef, config);\n}\nexport function getFormatMixins(fieldDef) {\n if (isStringFieldOrDatumDef(fieldDef)) {\n var format = fieldDef.format,\n formatType = fieldDef.formatType;\n return {\n format: format,\n formatType: formatType\n };\n } else {\n var _getGuide2;\n var guide = (_getGuide2 = getGuide(fieldDef)) !== null && _getGuide2 !== void 0 ? _getGuide2 : {};\n var _format = guide.format,\n _formatType = guide.formatType;\n return {\n format: _format,\n formatType: _formatType\n };\n }\n}\nexport function defaultType(fieldDef, channel) {\n var _fieldDef$scale;\n switch (channel) {\n case 'latitude':\n case 'longitude':\n return 'quantitative';\n case 'row':\n case 'column':\n case 'facet':\n case 'shape':\n case 'strokeDash':\n return 'nominal';\n case 'order':\n return 'ordinal';\n }\n if (isSortableFieldDef(fieldDef) && isArray(fieldDef.sort)) {\n return 'ordinal';\n }\n var aggregate = fieldDef.aggregate,\n bin = fieldDef.bin,\n timeUnit = fieldDef.timeUnit;\n if (timeUnit) {\n return 'temporal';\n }\n if (bin || aggregate && !isArgmaxDef(aggregate) && !isArgminDef(aggregate)) {\n return 'quantitative';\n }\n if (isScaleFieldDef(fieldDef) && (_fieldDef$scale = fieldDef.scale) !== null && _fieldDef$scale !== void 0 && _fieldDef$scale.type) {\n switch (SCALE_CATEGORY_INDEX[fieldDef.scale.type]) {\n case 'numeric':\n case 'discretizing':\n return 'quantitative';\n case 'time':\n return 'temporal';\n }\n }\n return 'nominal';\n}\n/**\n * Returns the fieldDef -- either from the outer channelDef or from the condition of channelDef.\n * @param channelDef\n */\nexport function getFieldDef(channelDef) {\n if (isFieldDef(channelDef)) {\n return channelDef;\n } else if (hasConditionalFieldDef(channelDef)) {\n return channelDef.condition;\n }\n return undefined;\n}\nexport function getFieldOrDatumDef(channelDef) {\n if (isFieldOrDatumDef(channelDef)) {\n return channelDef;\n } else if (hasConditionalFieldOrDatumDef(channelDef)) {\n return channelDef.condition;\n }\n return undefined;\n}\n/**\n * Convert type to full, lowercase type, or augment the fieldDef with a default type if missing.\n */\nexport function initChannelDef(channelDef, channel, config) {\n var opt = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n if (isString(channelDef) || isNumber(channelDef) || isBoolean(channelDef)) {\n var primitiveType = isString(channelDef) ? 'string' : isNumber(channelDef) ? 'number' : 'boolean';\n log.warn(log.message.primitiveChannelDef(channel, primitiveType, channelDef));\n return {\n value: channelDef\n };\n }\n // If a fieldDef contains a field, we need type.\n if (isFieldOrDatumDef(channelDef)) {\n return initFieldOrDatumDef(channelDef, channel, config, opt);\n } else if (hasConditionalFieldOrDatumDef(channelDef)) {\n return _objectSpread(_objectSpread({}, channelDef), {}, {\n // Need to cast as normalizeFieldDef normally return FieldDef, but here we know that it is definitely Condition\n condition: initFieldOrDatumDef(channelDef.condition, channel, config, opt)\n });\n }\n return channelDef;\n}\nexport function initFieldOrDatumDef(fd, channel, config, opt) {\n if (isStringFieldOrDatumDef(fd)) {\n var format = fd.format,\n formatType = fd.formatType,\n rest = _objectWithoutProperties(fd, _excluded);\n if (isCustomFormatType(formatType) && !config.customFormatTypes) {\n log.warn(log.message.customFormatTypeNotAllowed(channel));\n return initFieldOrDatumDef(rest, channel, config, opt);\n }\n } else {\n var guideType = isPositionFieldOrDatumDef(fd) ? 'axis' : isMarkPropFieldOrDatumDef(fd) ? 'legend' : isFacetFieldDef(fd) ? 'header' : null;\n if (guideType && fd[guideType]) {\n var _fd$guideType = fd[guideType],\n _format2 = _fd$guideType.format,\n _formatType2 = _fd$guideType.formatType,\n newGuide = _objectWithoutProperties(_fd$guideType, _excluded2);\n if (isCustomFormatType(_formatType2) && !config.customFormatTypes) {\n log.warn(log.message.customFormatTypeNotAllowed(channel));\n return initFieldOrDatumDef(_objectSpread(_objectSpread({}, fd), {}, _defineProperty({}, guideType, newGuide)), channel, config, opt);\n }\n }\n }\n if (isFieldDef(fd)) {\n return initFieldDef(fd, channel, opt);\n }\n return initDatumDef(fd);\n}\nfunction initDatumDef(datumDef) {\n var type = datumDef['type'];\n if (type) {\n return datumDef;\n }\n var datum = datumDef.datum;\n type = isNumber(datum) ? 'quantitative' : isString(datum) ? 'nominal' : isDateTime(datum) ? 'temporal' : undefined;\n return _objectSpread(_objectSpread({}, datumDef), {}, {\n type: type\n });\n}\nexport function initFieldDef(fd, channel) {\n var _ref5 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n _ref5$compositeMark = _ref5.compositeMark,\n compositeMark = _ref5$compositeMark === void 0 ? false : _ref5$compositeMark;\n var aggregate = fd.aggregate,\n timeUnit = fd.timeUnit,\n bin = fd.bin,\n field = fd.field;\n var fieldDef = _objectSpread({}, fd);\n // Drop invalid aggregate\n if (!compositeMark && aggregate && !isAggregateOp(aggregate) && !isArgmaxDef(aggregate) && !isArgminDef(aggregate)) {\n log.warn(log.message.invalidAggregate(aggregate));\n delete fieldDef.aggregate;\n }\n // Normalize Time Unit\n if (timeUnit) {\n fieldDef.timeUnit = normalizeTimeUnit(timeUnit);\n }\n if (field) {\n fieldDef.field = \"\".concat(field);\n }\n // Normalize bin\n if (isBinning(bin)) {\n fieldDef.bin = normalizeBin(bin, channel);\n }\n if (isBinned(bin) && !isXorY(channel)) {\n log.warn(log.message.channelShouldNotBeUsedForBinned(channel));\n }\n // Normalize Type\n if (isTypedFieldDef(fieldDef)) {\n var type = fieldDef.type;\n var fullType = getFullName(type);\n if (type !== fullType) {\n // convert short type to full type\n fieldDef.type = fullType;\n }\n if (type !== 'quantitative') {\n if (isCountingAggregateOp(aggregate)) {\n log.warn(log.message.invalidFieldTypeForCountAggregate(type, aggregate));\n fieldDef.type = 'quantitative';\n }\n }\n } else if (!isSecondaryRangeChannel(channel)) {\n // If type is empty / invalid, then augment with default type\n var newType = defaultType(fieldDef, channel);\n fieldDef['type'] = newType;\n }\n if (isTypedFieldDef(fieldDef)) {\n var _ref6 = channelCompatibility(fieldDef, channel) || {},\n compatible = _ref6.compatible,\n warning = _ref6.warning;\n if (compatible === false) {\n log.warn(warning);\n }\n }\n if (isSortableFieldDef(fieldDef) && isString(fieldDef.sort)) {\n var sort = fieldDef.sort;\n if (isSortByChannel(sort)) {\n return _objectSpread(_objectSpread({}, fieldDef), {}, {\n sort: {\n encoding: sort\n }\n });\n }\n var sub = sort.substr(1);\n if (sort.charAt(0) === '-' && isSortByChannel(sub)) {\n return _objectSpread(_objectSpread({}, fieldDef), {}, {\n sort: {\n encoding: sub,\n order: 'descending'\n }\n });\n }\n }\n if (isFacetFieldDef(fieldDef)) {\n var header = fieldDef.header;\n if (header) {\n var orient = header.orient,\n rest = _objectWithoutProperties(header, _excluded3);\n if (orient) {\n return _objectSpread(_objectSpread({}, fieldDef), {}, {\n header: _objectSpread(_objectSpread({}, rest), {}, {\n labelOrient: header.labelOrient || orient,\n titleOrient: header.titleOrient || orient\n })\n });\n }\n }\n }\n return fieldDef;\n}\nexport function normalizeBin(bin, channel) {\n if (isBoolean(bin)) {\n return {\n maxbins: autoMaxBins(channel)\n };\n } else if (bin === 'binned') {\n return {\n binned: true\n };\n } else if (!bin.maxbins && !bin.step) {\n return _objectSpread(_objectSpread({}, bin), {}, {\n maxbins: autoMaxBins(channel)\n });\n } else {\n return bin;\n }\n}\nvar COMPATIBLE = {\n compatible: true\n};\nexport function channelCompatibility(fieldDef, channel) {\n var type = fieldDef.type;\n if (type === 'geojson' && channel !== 'shape') {\n return {\n compatible: false,\n warning: \"Channel \".concat(channel, \" should not be used with a geojson data.\")\n };\n }\n switch (channel) {\n case ROW:\n case COLUMN:\n case FACET:\n if (!isDiscrete(fieldDef)) {\n return {\n compatible: false,\n warning: log.message.channelShouldBeDiscrete(channel)\n };\n }\n return COMPATIBLE;\n case X:\n case Y:\n case XOFFSET:\n case YOFFSET:\n case COLOR:\n case FILL:\n case STROKE:\n case TEXT:\n case DETAIL:\n case KEY:\n case TOOLTIP:\n case HREF:\n case URL:\n case ANGLE:\n case THETA:\n case RADIUS:\n case DESCRIPTION:\n return COMPATIBLE;\n case LONGITUDE:\n case LONGITUDE2:\n case LATITUDE:\n case LATITUDE2:\n if (type !== QUANTITATIVE) {\n return {\n compatible: false,\n warning: \"Channel \".concat(channel, \" should be used with a quantitative field only, not \").concat(fieldDef.type, \" field.\")\n };\n }\n return COMPATIBLE;\n case OPACITY:\n case FILLOPACITY:\n case STROKEOPACITY:\n case STROKEWIDTH:\n case SIZE:\n case THETA2:\n case RADIUS2:\n case X2:\n case Y2:\n if (type === 'nominal' && !fieldDef['sort']) {\n return {\n compatible: false,\n warning: \"Channel \".concat(channel, \" should not be used with an unsorted discrete field.\")\n };\n }\n return COMPATIBLE;\n case SHAPE:\n case STROKEDASH:\n if (!isDiscrete(fieldDef) && !isDiscretizing(fieldDef)) {\n return {\n compatible: false,\n warning: log.message.channelShouldBeDiscreteOrDiscretizing(channel)\n };\n }\n return COMPATIBLE;\n case ORDER:\n if (fieldDef.type === 'nominal' && !('sort' in fieldDef)) {\n return {\n compatible: false,\n warning: \"Channel order is inappropriate for nominal field, which has no inherent order.\"\n };\n }\n return COMPATIBLE;\n }\n}\n/**\n * Check if the field def uses a time format or does not use any format but is temporal\n * (this does not cover field defs that are temporal but use a number format).\n */\nexport function isFieldOrDatumDefForTimeFormat(fieldOrDatumDef) {\n var _getFormatMixins = getFormatMixins(fieldOrDatumDef),\n formatType = _getFormatMixins.formatType;\n return formatType === 'time' || !formatType && isTimeFieldDef(fieldOrDatumDef);\n}\n/**\n * Check if field def has type `temporal`. If you want to also cover field defs that use a time format, use `isTimeFormatFieldDef`.\n */\nexport function isTimeFieldDef(def) {\n return def && (def['type'] === 'temporal' || isFieldDef(def) && !!def.timeUnit);\n}\n/**\n * Getting a value associated with a fielddef.\n * Convert the value to Vega expression if applicable (for datetime object, or string if the field def is temporal or has timeUnit)\n */\nexport function valueExpr(v, _ref7) {\n var _normalizeTimeUnit2;\n var timeUnit = _ref7.timeUnit,\n type = _ref7.type,\n wrapTime = _ref7.wrapTime,\n undefinedIfExprNotRequired = _ref7.undefinedIfExprNotRequired;\n var unit = timeUnit && ((_normalizeTimeUnit2 = normalizeTimeUnit(timeUnit)) === null || _normalizeTimeUnit2 === void 0 ? void 0 : _normalizeTimeUnit2.unit);\n var isTime = unit || type === 'temporal';\n var expr;\n if (isExprRef(v)) {\n expr = v.expr;\n } else if (isSignalRef(v)) {\n expr = v.signal;\n } else if (isDateTime(v)) {\n isTime = true;\n expr = dateTimeToExpr(v);\n } else if (isString(v) || isNumber(v)) {\n if (isTime) {\n expr = \"datetime(\".concat(stringify(v), \")\");\n if (isLocalSingleTimeUnit(unit)) {\n // for single timeUnit, we will use dateTimeToExpr to convert number/string to match the timeUnit\n if (isNumber(v) && v < 10000 || isString(v) && isNaN(Date.parse(v))) {\n expr = dateTimeToExpr(_defineProperty({}, unit, v));\n }\n }\n }\n }\n if (expr) {\n return wrapTime && isTime ? \"time(\".concat(expr, \")\") : expr;\n }\n // number or boolean or normal string\n return undefinedIfExprNotRequired ? undefined : stringify(v);\n}\n/**\n * Standardize value array -- convert each value to Vega expression if applicable\n */\nexport function valueArray(fieldOrDatumDef, values) {\n var type = fieldOrDatumDef.type;\n return values.map(function (v) {\n var timeUnit = isFieldDef(fieldOrDatumDef) && !isBinnedTimeUnit(fieldOrDatumDef.timeUnit) ? fieldOrDatumDef.timeUnit : undefined;\n var expr = valueExpr(v, {\n timeUnit: timeUnit,\n type: type,\n undefinedIfExprNotRequired: true\n });\n // return signal for the expression if we need an expression\n if (expr !== undefined) {\n return {\n signal: expr\n };\n }\n // otherwise just return the original value\n return v;\n });\n}\n/**\n * Checks whether a fieldDef for a particular channel requires a computed bin range.\n */\nexport function binRequiresRange(fieldDef, channel) {\n if (!isBinning(fieldDef.bin)) {\n console.warn('Only call this method for binned field defs.');\n return false;\n }\n // We need the range only when the user explicitly forces a binned field to be use discrete scale. In this case, bin range is used in axis and legend labels.\n // We could check whether the axis or legend exists (not disabled) but that seems overkill.\n return isScaleChannel(channel) && ['ordinal', 'nominal'].includes(fieldDef.type);\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { keys } from './util';\nexport var CONDITIONAL_AXIS_PROP_INDEX = {\n labelAlign: {\n part: 'labels',\n vgProp: 'align'\n },\n labelBaseline: {\n part: 'labels',\n vgProp: 'baseline'\n },\n labelColor: {\n part: 'labels',\n vgProp: 'fill'\n },\n labelFont: {\n part: 'labels',\n vgProp: 'font'\n },\n labelFontSize: {\n part: 'labels',\n vgProp: 'fontSize'\n },\n labelFontStyle: {\n part: 'labels',\n vgProp: 'fontStyle'\n },\n labelFontWeight: {\n part: 'labels',\n vgProp: 'fontWeight'\n },\n labelOpacity: {\n part: 'labels',\n vgProp: 'opacity'\n },\n labelOffset: null,\n labelPadding: null,\n gridColor: {\n part: 'grid',\n vgProp: 'stroke'\n },\n gridDash: {\n part: 'grid',\n vgProp: 'strokeDash'\n },\n gridDashOffset: {\n part: 'grid',\n vgProp: 'strokeDashOffset'\n },\n gridOpacity: {\n part: 'grid',\n vgProp: 'opacity'\n },\n gridWidth: {\n part: 'grid',\n vgProp: 'strokeWidth'\n },\n tickColor: {\n part: 'ticks',\n vgProp: 'stroke'\n },\n tickDash: {\n part: 'ticks',\n vgProp: 'strokeDash'\n },\n tickDashOffset: {\n part: 'ticks',\n vgProp: 'strokeDashOffset'\n },\n tickOpacity: {\n part: 'ticks',\n vgProp: 'opacity'\n },\n tickSize: null,\n tickWidth: {\n part: 'ticks',\n vgProp: 'strokeWidth'\n }\n};\nexport function isConditionalAxisValue(v) {\n return v === null || v === void 0 ? void 0 : v.condition;\n}\nexport var AXIS_PARTS = ['domain', 'grid', 'labels', 'ticks', 'title'];\n/**\n * A dictionary listing whether a certain axis property is applicable for only main axes or only grid axes.\n */\nexport var AXIS_PROPERTY_TYPE = {\n grid: 'grid',\n gridCap: 'grid',\n gridColor: 'grid',\n gridDash: 'grid',\n gridDashOffset: 'grid',\n gridOpacity: 'grid',\n gridScale: 'grid',\n gridWidth: 'grid',\n orient: 'main',\n bandPosition: 'both',\n aria: 'main',\n description: 'main',\n domain: 'main',\n domainCap: 'main',\n domainColor: 'main',\n domainDash: 'main',\n domainDashOffset: 'main',\n domainOpacity: 'main',\n domainWidth: 'main',\n format: 'main',\n formatType: 'main',\n labelAlign: 'main',\n labelAngle: 'main',\n labelBaseline: 'main',\n labelBound: 'main',\n labelColor: 'main',\n labelFlush: 'main',\n labelFlushOffset: 'main',\n labelFont: 'main',\n labelFontSize: 'main',\n labelFontStyle: 'main',\n labelFontWeight: 'main',\n labelLimit: 'main',\n labelLineHeight: 'main',\n labelOffset: 'main',\n labelOpacity: 'main',\n labelOverlap: 'main',\n labelPadding: 'main',\n labels: 'main',\n labelSeparation: 'main',\n maxExtent: 'main',\n minExtent: 'main',\n offset: 'both',\n position: 'main',\n tickCap: 'main',\n tickColor: 'main',\n tickDash: 'main',\n tickDashOffset: 'main',\n tickMinStep: 'both',\n tickOffset: 'both',\n tickOpacity: 'main',\n tickRound: 'both',\n ticks: 'main',\n tickSize: 'main',\n tickWidth: 'both',\n title: 'main',\n titleAlign: 'main',\n titleAnchor: 'main',\n titleAngle: 'main',\n titleBaseline: 'main',\n titleColor: 'main',\n titleFont: 'main',\n titleFontSize: 'main',\n titleFontStyle: 'main',\n titleFontWeight: 'main',\n titleLimit: 'main',\n titleLineHeight: 'main',\n titleOpacity: 'main',\n titlePadding: 'main',\n titleX: 'main',\n titleY: 'main',\n encode: 'both',\n scale: 'both',\n tickBand: 'both',\n tickCount: 'both',\n tickExtra: 'both',\n translate: 'both',\n values: 'both',\n zindex: 'both' // this is actually set afterward, so it doesn't matter\n};\n\nexport var COMMON_AXIS_PROPERTIES_INDEX = {\n orient: 1,\n aria: 1,\n bandPosition: 1,\n description: 1,\n domain: 1,\n domainCap: 1,\n domainColor: 1,\n domainDash: 1,\n domainDashOffset: 1,\n domainOpacity: 1,\n domainWidth: 1,\n format: 1,\n formatType: 1,\n grid: 1,\n gridCap: 1,\n gridColor: 1,\n gridDash: 1,\n gridDashOffset: 1,\n gridOpacity: 1,\n gridWidth: 1,\n labelAlign: 1,\n labelAngle: 1,\n labelBaseline: 1,\n labelBound: 1,\n labelColor: 1,\n labelFlush: 1,\n labelFlushOffset: 1,\n labelFont: 1,\n labelFontSize: 1,\n labelFontStyle: 1,\n labelFontWeight: 1,\n labelLimit: 1,\n labelLineHeight: 1,\n labelOffset: 1,\n labelOpacity: 1,\n labelOverlap: 1,\n labelPadding: 1,\n labels: 1,\n labelSeparation: 1,\n maxExtent: 1,\n minExtent: 1,\n offset: 1,\n position: 1,\n tickBand: 1,\n tickCap: 1,\n tickColor: 1,\n tickCount: 1,\n tickDash: 1,\n tickDashOffset: 1,\n tickExtra: 1,\n tickMinStep: 1,\n tickOffset: 1,\n tickOpacity: 1,\n tickRound: 1,\n ticks: 1,\n tickSize: 1,\n tickWidth: 1,\n title: 1,\n titleAlign: 1,\n titleAnchor: 1,\n titleAngle: 1,\n titleBaseline: 1,\n titleColor: 1,\n titleFont: 1,\n titleFontSize: 1,\n titleFontStyle: 1,\n titleFontWeight: 1,\n titleLimit: 1,\n titleLineHeight: 1,\n titleOpacity: 1,\n titlePadding: 1,\n titleX: 1,\n titleY: 1,\n translate: 1,\n values: 1,\n zindex: 1\n};\nvar AXIS_PROPERTIES_INDEX = _objectSpread(_objectSpread({}, COMMON_AXIS_PROPERTIES_INDEX), {}, {\n style: 1,\n labelExpr: 1,\n encoding: 1\n});\nexport function isAxisProperty(prop) {\n return !!AXIS_PROPERTIES_INDEX[prop];\n}\n// Export for dependent projects\nexport var AXIS_PROPERTIES = keys(AXIS_PROPERTIES_INDEX);\nvar AXIS_CONFIGS_INDEX = {\n axis: 1,\n axisBand: 1,\n axisBottom: 1,\n axisDiscrete: 1,\n axisLeft: 1,\n axisPoint: 1,\n axisQuantitative: 1,\n axisRight: 1,\n axisTemporal: 1,\n axisTop: 1,\n axisX: 1,\n axisXBand: 1,\n axisXDiscrete: 1,\n axisXPoint: 1,\n axisXQuantitative: 1,\n axisXTemporal: 1,\n axisY: 1,\n axisYBand: 1,\n axisYDiscrete: 1,\n axisYPoint: 1,\n axisYQuantitative: 1,\n axisYTemporal: 1\n};\nexport var AXIS_CONFIGS = keys(AXIS_CONFIGS_INDEX);","export function isUnitSpec(spec) {\n return 'mark' in spec;\n}","import _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport { getMarkType } from '../mark';\nimport { isUnitSpec } from '../spec/unit';\nexport var CompositeMarkNormalizer = /*#__PURE__*/function () {\n function CompositeMarkNormalizer(name, run) {\n _classCallCheck(this, CompositeMarkNormalizer);\n this.name = name;\n this.run = run;\n }\n _createClass(CompositeMarkNormalizer, [{\n key: \"hasMatchingType\",\n value: function hasMatchingType(spec) {\n if (isUnitSpec(spec)) {\n return getMarkType(spec.mark) === this.name;\n }\n return false;\n }\n }]);\n return CompositeMarkNormalizer;\n}();","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"field\", \"aggregate\", \"bin\", \"timeUnit\"];\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { array, isArray } from 'vega-util';\nimport { isArgmaxDef, isArgminDef } from './aggregate';\nimport { isBinned, isBinning } from './bin';\nimport { ANGLE, CHANNELS, COLOR, DESCRIPTION, DETAIL, FILL, FILLOPACITY, getMainChannelFromOffsetChannel, getOffsetScaleChannel, HREF, isChannel, isNonPositionScaleChannel, isSecondaryRangeChannel, isXorY, isXorYOffset, KEY, LATITUDE, LATITUDE2, LONGITUDE, LONGITUDE2, OPACITY, ORDER, RADIUS, RADIUS2, SHAPE, SIZE, STROKE, STROKEDASH, STROKEOPACITY, STROKEWIDTH, supportMark, TEXT, THETA, THETA2, TOOLTIP, UNIT_CHANNELS, URL, X, X2, XOFFSET, Y, Y2, YOFFSET } from './channel';\nimport { binRequiresRange, getFieldDef, getGuide, hasConditionalFieldDef, hasConditionalFieldOrDatumDef, initChannelDef, initFieldDef, isConditionalDef, isDatumDef, isFieldDef, isOrderOnlyDef, isTypedFieldDef, isValueDef, title, vgField } from './channeldef';\nimport * as log from './log';\nimport { isContinuous, isDiscrete, QUANTITATIVE, TEMPORAL } from './type';\nimport { keys, some } from './util';\nimport { isSignalRef } from './vega.schema';\nimport { isBinnedTimeUnit } from './timeunit';\nexport function channelHasField(encoding, channel) {\n var channelDef = encoding && encoding[channel];\n if (channelDef) {\n if (isArray(channelDef)) {\n return some(channelDef, function (fieldDef) {\n return !!fieldDef.field;\n });\n } else {\n return isFieldDef(channelDef) || hasConditionalFieldDef(channelDef);\n }\n }\n return false;\n}\nexport function channelHasFieldOrDatum(encoding, channel) {\n var channelDef = encoding && encoding[channel];\n if (channelDef) {\n if (isArray(channelDef)) {\n return some(channelDef, function (fieldDef) {\n return !!fieldDef.field;\n });\n } else {\n return isFieldDef(channelDef) || isDatumDef(channelDef) || hasConditionalFieldOrDatumDef(channelDef);\n }\n }\n return false;\n}\nexport function channelHasNestedOffsetScale(encoding, channel) {\n if (isXorY(channel)) {\n var fieldDef = encoding[channel];\n if ((isFieldDef(fieldDef) || isDatumDef(fieldDef)) && (isDiscrete(fieldDef.type) || isFieldDef(fieldDef) && fieldDef.timeUnit)) {\n var offsetChannel = getOffsetScaleChannel(channel);\n return channelHasFieldOrDatum(encoding, offsetChannel);\n }\n }\n return false;\n}\nexport function isAggregate(encoding) {\n return some(CHANNELS, function (channel) {\n if (channelHasField(encoding, channel)) {\n var channelDef = encoding[channel];\n if (isArray(channelDef)) {\n return some(channelDef, function (fieldDef) {\n return !!fieldDef.aggregate;\n });\n } else {\n var fieldDef = getFieldDef(channelDef);\n return fieldDef && !!fieldDef.aggregate;\n }\n }\n return false;\n });\n}\nexport function extractTransformsFromEncoding(oldEncoding, config) {\n var groupby = [];\n var bins = [];\n var timeUnits = [];\n var aggregate = [];\n var encoding = {};\n forEach(oldEncoding, function (channelDef, channel) {\n // Extract potential embedded transformations along with remaining properties\n if (isFieldDef(channelDef)) {\n var field = channelDef.field,\n aggOp = channelDef.aggregate,\n bin = channelDef.bin,\n timeUnit = channelDef.timeUnit,\n remaining = _objectWithoutProperties(channelDef, _excluded);\n if (aggOp || timeUnit || bin) {\n var guide = getGuide(channelDef);\n var isTitleDefined = guide === null || guide === void 0 ? void 0 : guide.title;\n var newField = vgField(channelDef, {\n forAs: true\n });\n var newFieldDef = _objectSpread(_objectSpread(_objectSpread({}, isTitleDefined ? [] : {\n title: title(channelDef, config, {\n allowDisabling: true\n })\n }), remaining), {}, {\n // Always overwrite field\n field: newField\n });\n if (aggOp) {\n var op;\n if (isArgmaxDef(aggOp)) {\n op = 'argmax';\n newField = vgField({\n op: 'argmax',\n field: aggOp.argmax\n }, {\n forAs: true\n });\n newFieldDef.field = \"\".concat(newField, \".\").concat(field);\n } else if (isArgminDef(aggOp)) {\n op = 'argmin';\n newField = vgField({\n op: 'argmin',\n field: aggOp.argmin\n }, {\n forAs: true\n });\n newFieldDef.field = \"\".concat(newField, \".\").concat(field);\n } else if (aggOp !== 'boxplot' && aggOp !== 'errorbar' && aggOp !== 'errorband') {\n op = aggOp;\n }\n if (op) {\n var aggregateEntry = {\n op: op,\n as: newField\n };\n if (field) {\n aggregateEntry.field = field;\n }\n aggregate.push(aggregateEntry);\n }\n } else {\n groupby.push(newField);\n if (isTypedFieldDef(channelDef) && isBinning(bin)) {\n bins.push({\n bin: bin,\n field: field,\n as: newField\n });\n // Add additional groupbys for range and end of bins\n groupby.push(vgField(channelDef, {\n binSuffix: 'end'\n }));\n if (binRequiresRange(channelDef, channel)) {\n groupby.push(vgField(channelDef, {\n binSuffix: 'range'\n }));\n }\n // Create accompanying 'x2' or 'y2' field if channel is 'x' or 'y' respectively\n if (isXorY(channel)) {\n var secondaryChannel = {\n field: \"\".concat(newField, \"_end\")\n };\n encoding[\"\".concat(channel, \"2\")] = secondaryChannel;\n }\n newFieldDef.bin = 'binned';\n if (!isSecondaryRangeChannel(channel)) {\n newFieldDef['type'] = QUANTITATIVE;\n }\n } else if (timeUnit && !isBinnedTimeUnit(timeUnit)) {\n timeUnits.push({\n timeUnit: timeUnit,\n field: field,\n as: newField\n });\n // define the format type for later compilation\n var formatType = isTypedFieldDef(channelDef) && channelDef.type !== TEMPORAL && 'time';\n if (formatType) {\n if (channel === TEXT || channel === TOOLTIP) {\n newFieldDef['formatType'] = formatType;\n } else if (isNonPositionScaleChannel(channel)) {\n newFieldDef['legend'] = _objectSpread({\n formatType: formatType\n }, newFieldDef['legend']);\n } else if (isXorY(channel)) {\n newFieldDef['axis'] = _objectSpread({\n formatType: formatType\n }, newFieldDef['axis']);\n }\n }\n }\n }\n // now the field should refer to post-transformed field instead\n encoding[channel] = newFieldDef;\n } else {\n groupby.push(field);\n encoding[channel] = oldEncoding[channel];\n }\n } else {\n // For value def / signal ref / datum def, just copy\n encoding[channel] = oldEncoding[channel];\n }\n });\n return {\n bins: bins,\n timeUnits: timeUnits,\n aggregate: aggregate,\n groupby: groupby,\n encoding: encoding\n };\n}\nexport function markChannelCompatible(encoding, channel, mark) {\n var markSupported = supportMark(channel, mark);\n if (!markSupported) {\n return false;\n } else if (markSupported === 'binned') {\n var primaryFieldDef = encoding[channel === X2 ? X : Y];\n // circle, point, square and tick only support x2/y2 when their corresponding x/y fieldDef\n // has \"binned\" data and thus need x2/y2 to specify the bin-end field.\n if (isFieldDef(primaryFieldDef) && isFieldDef(encoding[channel]) && isBinned(primaryFieldDef.bin)) {\n return true;\n } else {\n return false;\n }\n }\n return true;\n}\nexport function initEncoding(encoding, mark, filled, config) {\n var normalizedEncoding = {};\n var _iterator = _createForOfIteratorHelper(keys(encoding)),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var key = _step.value;\n if (!isChannel(key)) {\n // Drop invalid channel\n log.warn(log.message.invalidEncodingChannel(key));\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n var _iterator2 = _createForOfIteratorHelper(UNIT_CHANNELS),\n _step2;\n try {\n var _loop = function _loop() {\n var channel = _step2.value;\n if (!encoding[channel]) {\n return \"continue\";\n }\n var channelDef = encoding[channel];\n if (isXorYOffset(channel)) {\n var mainChannel = getMainChannelFromOffsetChannel(channel);\n var positionDef = normalizedEncoding[mainChannel];\n if (isFieldDef(positionDef)) {\n if (isContinuous(positionDef.type)) {\n if (isFieldDef(channelDef) && !positionDef.timeUnit) {\n // TODO: nesting continuous field instead continuous field should\n // behave like offsetting the data in data domain\n log.warn(log.message.offsetNestedInsideContinuousPositionScaleDropped(mainChannel));\n return \"continue\";\n }\n }\n } else {\n // no x/y, replace it with main channel\n channel = mainChannel;\n log.warn(log.message.replaceOffsetWithMainChannel(mainChannel));\n }\n }\n if (channel === 'angle' && mark === 'arc' && !encoding.theta) {\n log.warn(log.message.REPLACE_ANGLE_WITH_THETA);\n channel = THETA;\n }\n if (!markChannelCompatible(encoding, channel, mark)) {\n // Drop unsupported channel\n log.warn(log.message.incompatibleChannel(channel, mark));\n return \"continue\";\n }\n // Drop line's size if the field is aggregated.\n if (channel === SIZE && mark === 'line') {\n var fieldDef = getFieldDef(encoding[channel]);\n if (fieldDef !== null && fieldDef !== void 0 && fieldDef.aggregate) {\n log.warn(log.message.LINE_WITH_VARYING_SIZE);\n return \"continue\";\n }\n }\n // Drop color if either fill or stroke is specified\n if (channel === COLOR && (filled ? 'fill' in encoding : 'stroke' in encoding)) {\n log.warn(log.message.droppingColor('encoding', {\n fill: 'fill' in encoding,\n stroke: 'stroke' in encoding\n }));\n return \"continue\";\n }\n if (channel === DETAIL || channel === ORDER && !isArray(channelDef) && !isValueDef(channelDef) || channel === TOOLTIP && isArray(channelDef)) {\n if (channelDef) {\n if (channel === ORDER) {\n var def = encoding[channel];\n if (isOrderOnlyDef(def)) {\n normalizedEncoding[channel] = def;\n return \"continue\";\n }\n }\n // Array of fieldDefs for detail channel (or production rule)\n normalizedEncoding[channel] = array(channelDef).reduce(function (defs, fieldDef) {\n if (!isFieldDef(fieldDef)) {\n log.warn(log.message.emptyFieldDef(fieldDef, channel));\n } else {\n defs.push(initFieldDef(fieldDef, channel));\n }\n return defs;\n }, []);\n }\n } else {\n if (channel === TOOLTIP && channelDef === null) {\n // Preserve null so we can use it to disable tooltip\n normalizedEncoding[channel] = null;\n } else if (!isFieldDef(channelDef) && !isDatumDef(channelDef) && !isValueDef(channelDef) && !isConditionalDef(channelDef) && !isSignalRef(channelDef)) {\n log.warn(log.message.emptyFieldDef(channelDef, channel));\n return \"continue\";\n }\n normalizedEncoding[channel] = initChannelDef(channelDef, channel, config);\n }\n };\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _ret = _loop();\n if (_ret === \"continue\") continue;\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n return normalizedEncoding;\n}\n/**\n * For composite marks, we have to call initChannelDef during init so we can infer types earlier.\n */\nexport function normalizeEncoding(encoding, config) {\n var normalizedEncoding = {};\n var _iterator3 = _createForOfIteratorHelper(keys(encoding)),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var channel = _step3.value;\n var newChannelDef = initChannelDef(encoding[channel], channel, config, {\n compositeMark: true\n });\n normalizedEncoding[channel] = newChannelDef;\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n return normalizedEncoding;\n}\nexport function fieldDefs(encoding) {\n var arr = [];\n var _iterator4 = _createForOfIteratorHelper(keys(encoding)),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var channel = _step4.value;\n if (channelHasField(encoding, channel)) {\n var channelDef = encoding[channel];\n var channelDefArray = array(channelDef);\n var _iterator5 = _createForOfIteratorHelper(channelDefArray),\n _step5;\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var def = _step5.value;\n if (isFieldDef(def)) {\n arr.push(def);\n } else if (hasConditionalFieldDef(def)) {\n arr.push(def.condition);\n }\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n }\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n return arr;\n}\nexport function forEach(mapping, f, thisArg) {\n if (!mapping) {\n return;\n }\n var _iterator6 = _createForOfIteratorHelper(keys(mapping)),\n _step6;\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var channel = _step6.value;\n var el = mapping[channel];\n if (isArray(el)) {\n var _iterator7 = _createForOfIteratorHelper(el),\n _step7;\n try {\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n var channelDef = _step7.value;\n f.call(thisArg, channelDef, channel);\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n } else {\n f.call(thisArg, el, channel);\n }\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n}\nexport function reduce(mapping, f, init, thisArg) {\n if (!mapping) {\n return init;\n }\n return keys(mapping).reduce(function (r, channel) {\n var map = mapping[channel];\n if (isArray(map)) {\n return map.reduce(function (r1, channelDef) {\n return f.call(thisArg, r1, channelDef, channel);\n }, r);\n } else {\n return f.call(thisArg, r, map, channel);\n }\n }, init);\n}\n/**\n * Returns list of path grouping fields for the given encoding\n */\nexport function pathGroupingFields(mark, encoding) {\n return keys(encoding).reduce(function (details, channel) {\n switch (channel) {\n // x, y, x2, y2, lat, long, lat1, long2, order, tooltip, href, aria label, cursor should not cause lines to group\n case X:\n case Y:\n case HREF:\n case DESCRIPTION:\n case URL:\n case X2:\n case Y2:\n case XOFFSET:\n case YOFFSET:\n case THETA:\n case THETA2:\n case RADIUS:\n case RADIUS2:\n // falls through\n case LATITUDE:\n case LONGITUDE:\n case LATITUDE2:\n case LONGITUDE2:\n // TODO: case 'cursor':\n // text, shape, shouldn't be a part of line/trail/area [falls through]\n case TEXT:\n case SHAPE:\n case ANGLE:\n // falls through\n // tooltip fields should not be added to group by [falls through]\n case TOOLTIP:\n return details;\n case ORDER:\n // order should not group line / trail\n if (mark === 'line' || mark === 'trail') {\n return details;\n }\n // but order should group area for stacking (falls through)\n case DETAIL:\n case KEY:\n {\n var channelDef = encoding[channel];\n if (isArray(channelDef) || isFieldDef(channelDef)) {\n var _iterator8 = _createForOfIteratorHelper(array(channelDef)),\n _step8;\n try {\n for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {\n var fieldDef = _step8.value;\n if (!fieldDef.aggregate) {\n details.push(vgField(fieldDef, {}));\n }\n }\n } catch (err) {\n _iterator8.e(err);\n } finally {\n _iterator8.f();\n }\n }\n return details;\n }\n case SIZE:\n if (mark === 'trail') {\n // For trail, size should not group trail lines.\n return details;\n }\n // For line, size should group lines.\n // falls through\n case COLOR:\n case FILL:\n case STROKE:\n case OPACITY:\n case FILLOPACITY:\n case STROKEOPACITY:\n case STROKEDASH:\n case STROKEWIDTH:\n {\n // TODO strokeDashOffset:\n // falls through\n var _fieldDef = getFieldDef(encoding[channel]);\n if (_fieldDef && !_fieldDef.aggregate) {\n details.push(vgField(_fieldDef, {}));\n }\n return details;\n }\n }\n }, []);\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"tooltip\"],\n _excluded2 = [\"aggregate\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { isArray, isBoolean, isString } from 'vega-util';\nimport { isContinuousFieldOrDatumDef, isFieldDef, isFieldOrDatumDefForTimeFormat } from '../channeldef';\nimport { fieldDefs } from '../encoding';\nimport * as log from '../log';\nimport { isMarkDef } from '../mark';\nimport { getFirstDefined, hash, unique } from '../util';\nimport { isSignalRef } from '../vega.schema';\nimport { toStringFieldDef } from './../channeldef';\nexport function filterTooltipWithAggregatedField(oldEncoding) {\n var tooltip = oldEncoding.tooltip,\n filteredEncoding = _objectWithoutProperties(oldEncoding, _excluded);\n if (!tooltip) {\n return {\n filteredEncoding: filteredEncoding\n };\n }\n var customTooltipWithAggregatedField;\n var customTooltipWithoutAggregatedField;\n if (isArray(tooltip)) {\n var _iterator = _createForOfIteratorHelper(tooltip),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var t = _step.value;\n if (t.aggregate) {\n if (!customTooltipWithAggregatedField) {\n customTooltipWithAggregatedField = [];\n }\n customTooltipWithAggregatedField.push(t);\n } else {\n if (!customTooltipWithoutAggregatedField) {\n customTooltipWithoutAggregatedField = [];\n }\n customTooltipWithoutAggregatedField.push(t);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n if (customTooltipWithAggregatedField) {\n filteredEncoding.tooltip = customTooltipWithAggregatedField;\n }\n } else {\n if (tooltip['aggregate']) {\n filteredEncoding.tooltip = tooltip;\n } else {\n customTooltipWithoutAggregatedField = tooltip;\n }\n }\n if (isArray(customTooltipWithoutAggregatedField) && customTooltipWithoutAggregatedField.length === 1) {\n customTooltipWithoutAggregatedField = customTooltipWithoutAggregatedField[0];\n }\n return {\n customTooltipWithoutAggregatedField: customTooltipWithoutAggregatedField,\n filteredEncoding: filteredEncoding\n };\n}\nexport function getCompositeMarkTooltip(tooltipSummary, continuousAxisChannelDef, encodingWithoutContinuousAxis) {\n var withFieldName = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n if ('tooltip' in encodingWithoutContinuousAxis) {\n return {\n tooltip: encodingWithoutContinuousAxis.tooltip\n };\n }\n var fiveSummaryTooltip = tooltipSummary.map(function (_ref) {\n var fieldPrefix = _ref.fieldPrefix,\n titlePrefix = _ref.titlePrefix;\n var mainTitle = withFieldName ? \" of \".concat(getTitle(continuousAxisChannelDef)) : '';\n return {\n field: fieldPrefix + continuousAxisChannelDef.field,\n type: continuousAxisChannelDef.type,\n title: isSignalRef(titlePrefix) ? {\n signal: \"\".concat(titlePrefix, \"\\\"\").concat(escape(mainTitle), \"\\\"\")\n } : titlePrefix + mainTitle\n };\n });\n var tooltipFieldDefs = fieldDefs(encodingWithoutContinuousAxis).map(toStringFieldDef);\n return {\n tooltip: [].concat(_toConsumableArray(fiveSummaryTooltip), _toConsumableArray(unique(tooltipFieldDefs, hash)))\n };\n}\nexport function getTitle(continuousAxisChannelDef) {\n var title = continuousAxisChannelDef.title,\n field = continuousAxisChannelDef.field;\n return getFirstDefined(title, field);\n}\nexport function makeCompositeAggregatePartFactory(compositeMarkDef, continuousAxis, continuousAxisChannelDef, sharedEncoding, compositeMarkConfig) {\n var scale = continuousAxisChannelDef.scale,\n axis = continuousAxisChannelDef.axis;\n return function (_ref2) {\n var partName = _ref2.partName,\n mark = _ref2.mark,\n positionPrefix = _ref2.positionPrefix,\n _ref2$endPositionPref = _ref2.endPositionPrefix,\n endPositionPrefix = _ref2$endPositionPref === void 0 ? undefined : _ref2$endPositionPref,\n _ref2$extraEncoding = _ref2.extraEncoding,\n extraEncoding = _ref2$extraEncoding === void 0 ? {} : _ref2$extraEncoding;\n var title = getTitle(continuousAxisChannelDef);\n return partLayerMixins(compositeMarkDef, partName, compositeMarkConfig, {\n mark: mark,\n encoding: _objectSpread(_objectSpread(_objectSpread(_defineProperty({}, continuousAxis, _objectSpread(_objectSpread(_objectSpread({\n field: \"\".concat(positionPrefix, \"_\").concat(continuousAxisChannelDef.field),\n type: continuousAxisChannelDef.type\n }, title !== undefined ? {\n title: title\n } : {}), scale !== undefined ? {\n scale: scale\n } : {}), axis !== undefined ? {\n axis: axis\n } : {})), isString(endPositionPrefix) ? _defineProperty({}, \"\".concat(continuousAxis, \"2\"), {\n field: \"\".concat(endPositionPrefix, \"_\").concat(continuousAxisChannelDef.field)\n }) : {}), sharedEncoding), extraEncoding)\n });\n };\n}\nexport function partLayerMixins(markDef, part, compositeMarkConfig, partBaseSpec) {\n var clip = markDef.clip,\n color = markDef.color,\n opacity = markDef.opacity;\n var mark = markDef.type;\n if (markDef[part] || markDef[part] === undefined && compositeMarkConfig[part]) {\n return [_objectSpread(_objectSpread({}, partBaseSpec), {}, {\n mark: _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, compositeMarkConfig[part]), clip ? {\n clip: clip\n } : {}), color ? {\n color: color\n } : {}), opacity ? {\n opacity: opacity\n } : {}), isMarkDef(partBaseSpec.mark) ? partBaseSpec.mark : {\n type: partBaseSpec.mark\n }), {}, {\n style: \"\".concat(mark, \"-\").concat(String(part))\n }, isBoolean(markDef[part]) ? {} : markDef[part])\n })];\n }\n return [];\n}\nexport function compositeMarkContinuousAxis(spec, orient, compositeMark) {\n var encoding = spec.encoding;\n var continuousAxis = orient === 'vertical' ? 'y' : 'x';\n var continuousAxisChannelDef = encoding[continuousAxis]; // Safe to cast because if x is not continuous fielddef, the orient would not be horizontal.\n var continuousAxisChannelDef2 = encoding[\"\".concat(continuousAxis, \"2\")];\n var continuousAxisChannelDefError = encoding[\"\".concat(continuousAxis, \"Error\")];\n var continuousAxisChannelDefError2 = encoding[\"\".concat(continuousAxis, \"Error2\")];\n return {\n continuousAxisChannelDef: filterAggregateFromChannelDef(continuousAxisChannelDef, compositeMark),\n continuousAxisChannelDef2: filterAggregateFromChannelDef(continuousAxisChannelDef2, compositeMark),\n continuousAxisChannelDefError: filterAggregateFromChannelDef(continuousAxisChannelDefError, compositeMark),\n continuousAxisChannelDefError2: filterAggregateFromChannelDef(continuousAxisChannelDefError2, compositeMark),\n continuousAxis: continuousAxis\n };\n}\nfunction filterAggregateFromChannelDef(continuousAxisChannelDef, compositeMark) {\n if (continuousAxisChannelDef !== null && continuousAxisChannelDef !== void 0 && continuousAxisChannelDef.aggregate) {\n var aggregate = continuousAxisChannelDef.aggregate,\n continuousAxisWithoutAggregate = _objectWithoutProperties(continuousAxisChannelDef, _excluded2);\n if (aggregate !== compositeMark) {\n log.warn(log.message.errorBarContinuousAxisHasCustomizedAggregate(aggregate, compositeMark));\n }\n return continuousAxisWithoutAggregate;\n } else {\n return continuousAxisChannelDef;\n }\n}\nexport function compositeMarkOrient(spec, compositeMark) {\n var mark = spec.mark,\n encoding = spec.encoding;\n var x = encoding.x,\n y = encoding.y;\n if (isMarkDef(mark) && mark.orient) {\n return mark.orient;\n }\n if (isContinuousFieldOrDatumDef(x)) {\n // x is continuous\n if (isContinuousFieldOrDatumDef(y)) {\n // both x and y are continuous\n var xAggregate = isFieldDef(x) && x.aggregate;\n var yAggregate = isFieldDef(y) && y.aggregate;\n if (!xAggregate && yAggregate === compositeMark) {\n return 'vertical';\n } else if (!yAggregate && xAggregate === compositeMark) {\n return 'horizontal';\n } else if (xAggregate === compositeMark && yAggregate === compositeMark) {\n throw new Error('Both x and y cannot have aggregate');\n } else {\n if (isFieldOrDatumDefForTimeFormat(y) && !isFieldOrDatumDefForTimeFormat(x)) {\n // y is temporal but x is not\n return 'horizontal';\n }\n // default orientation for two continuous\n return 'vertical';\n }\n }\n return 'horizontal';\n } else if (isContinuousFieldOrDatumDef(y)) {\n // y is continuous but x is not\n return 'vertical';\n } else {\n // Neither x nor y is continuous.\n throw new Error(\"Need a valid continuous axis for \".concat(compositeMark, \"s\"));\n }\n}","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nvar _excluded = [\"mark\", \"encoding\", \"params\", \"projection\"],\n _excluded2 = [\"color\", \"size\"],\n _excluded3 = [\"tooltip\"];\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { isNumber, isObject } from 'vega-util';\nimport { getMarkPropOrConfig } from '../compile/common';\nimport { extractTransformsFromEncoding, normalizeEncoding } from '../encoding';\nimport * as log from '../log';\nimport { isMarkDef } from '../mark';\nimport { isEmpty, omit } from '../util';\nimport { CompositeMarkNormalizer } from './base';\nimport { compositeMarkContinuousAxis, compositeMarkOrient, filterTooltipWithAggregatedField, getCompositeMarkTooltip, getTitle, makeCompositeAggregatePartFactory, partLayerMixins } from './common';\nexport var BOXPLOT = 'boxplot';\nexport var BOXPLOT_PARTS = ['box', 'median', 'outliers', 'rule', 'ticks'];\nexport var boxPlotNormalizer = new CompositeMarkNormalizer(BOXPLOT, normalizeBoxPlot);\nexport function getBoxPlotType(extent) {\n if (isNumber(extent)) {\n return 'tukey';\n }\n // Ham: If we ever want to, we could add another extent syntax `{kIQR: number}` for the original [Q1-k*IQR, Q3+k*IQR] whisker and call this boxPlotType = `kIQR`. However, I'm not exposing this for now.\n return extent;\n}\nexport function normalizeBoxPlot(spec, _ref) {\n var _markDef$extent;\n var config = _ref.config;\n // Need to initEncoding first so we can infer type\n spec = _objectSpread(_objectSpread({}, spec), {}, {\n encoding: normalizeEncoding(spec.encoding, config)\n });\n var _spec = spec,\n mark = _spec.mark,\n _encoding = _spec.encoding,\n params = _spec.params,\n _p = _spec.projection,\n outerSpec = _objectWithoutProperties(_spec, _excluded);\n var markDef = isMarkDef(mark) ? mark : {\n type: mark\n };\n // TODO(https://github.com/vega/vega-lite/issues/3702): add selection support\n if (params) {\n log.warn(log.message.selectionNotSupported('boxplot'));\n }\n var extent = (_markDef$extent = markDef.extent) !== null && _markDef$extent !== void 0 ? _markDef$extent : config.boxplot.extent;\n var sizeValue = getMarkPropOrConfig('size', markDef,\n // TODO: https://github.com/vega/vega-lite/issues/6245\n config);\n var invalid = markDef.invalid;\n var boxPlotType = getBoxPlotType(extent);\n var _boxParams = boxParams(spec, extent, config),\n bins = _boxParams.bins,\n timeUnits = _boxParams.timeUnits,\n transform = _boxParams.transform,\n continuousAxisChannelDef = _boxParams.continuousAxisChannelDef,\n continuousAxis = _boxParams.continuousAxis,\n groupby = _boxParams.groupby,\n aggregate = _boxParams.aggregate,\n encodingWithoutContinuousAxis = _boxParams.encodingWithoutContinuousAxis,\n ticksOrient = _boxParams.ticksOrient,\n boxOrient = _boxParams.boxOrient,\n customTooltipWithoutAggregatedField = _boxParams.customTooltipWithoutAggregatedField;\n var color = encodingWithoutContinuousAxis.color,\n size = encodingWithoutContinuousAxis.size,\n encodingWithoutSizeColorAndContinuousAxis = _objectWithoutProperties(encodingWithoutContinuousAxis, _excluded2);\n var makeBoxPlotPart = function makeBoxPlotPart(sharedEncoding) {\n return makeCompositeAggregatePartFactory(markDef, continuousAxis, continuousAxisChannelDef, sharedEncoding, config.boxplot);\n };\n var makeBoxPlotExtent = makeBoxPlotPart(encodingWithoutSizeColorAndContinuousAxis);\n var makeBoxPlotBox = makeBoxPlotPart(encodingWithoutContinuousAxis);\n var makeBoxPlotMidTick = makeBoxPlotPart(_objectSpread(_objectSpread({}, encodingWithoutSizeColorAndContinuousAxis), size ? {\n size: size\n } : {}));\n var fiveSummaryTooltipEncoding = getCompositeMarkTooltip([{\n fieldPrefix: boxPlotType === 'min-max' ? 'upper_whisker_' : 'max_',\n titlePrefix: 'Max'\n }, {\n fieldPrefix: 'upper_box_',\n titlePrefix: 'Q3'\n }, {\n fieldPrefix: 'mid_box_',\n titlePrefix: 'Median'\n }, {\n fieldPrefix: 'lower_box_',\n titlePrefix: 'Q1'\n }, {\n fieldPrefix: boxPlotType === 'min-max' ? 'lower_whisker_' : 'min_',\n titlePrefix: 'Min'\n }], continuousAxisChannelDef, encodingWithoutContinuousAxis);\n // ## Whisker Layers\n var endTick = {\n type: 'tick',\n color: 'black',\n opacity: 1,\n orient: ticksOrient,\n invalid: invalid,\n aria: false\n };\n var whiskerTooltipEncoding = boxPlotType === 'min-max' ? fiveSummaryTooltipEncoding // for min-max, show five-summary tooltip for whisker\n :\n // for tukey / k-IQR, just show upper/lower-whisker\n getCompositeMarkTooltip([{\n fieldPrefix: 'upper_whisker_',\n titlePrefix: 'Upper Whisker'\n }, {\n fieldPrefix: 'lower_whisker_',\n titlePrefix: 'Lower Whisker'\n }], continuousAxisChannelDef, encodingWithoutContinuousAxis);\n var whiskerLayers = [].concat(_toConsumableArray(makeBoxPlotExtent({\n partName: 'rule',\n mark: {\n type: 'rule',\n invalid: invalid,\n aria: false\n },\n positionPrefix: 'lower_whisker',\n endPositionPrefix: 'lower_box',\n extraEncoding: whiskerTooltipEncoding\n })), _toConsumableArray(makeBoxPlotExtent({\n partName: 'rule',\n mark: {\n type: 'rule',\n invalid: invalid,\n aria: false\n },\n positionPrefix: 'upper_box',\n endPositionPrefix: 'upper_whisker',\n extraEncoding: whiskerTooltipEncoding\n })), _toConsumableArray(makeBoxPlotExtent({\n partName: 'ticks',\n mark: endTick,\n positionPrefix: 'lower_whisker',\n extraEncoding: whiskerTooltipEncoding\n })), _toConsumableArray(makeBoxPlotExtent({\n partName: 'ticks',\n mark: endTick,\n positionPrefix: 'upper_whisker',\n extraEncoding: whiskerTooltipEncoding\n })));\n // ## Box Layers\n // TODO: support hiding certain mark parts\n var boxLayers = [].concat(_toConsumableArray(boxPlotType !== 'tukey' ? whiskerLayers : []), _toConsumableArray(makeBoxPlotBox({\n partName: 'box',\n mark: _objectSpread(_objectSpread({\n type: 'bar'\n }, sizeValue ? {\n size: sizeValue\n } : {}), {}, {\n orient: boxOrient,\n invalid: invalid,\n ariaRoleDescription: 'box'\n }),\n positionPrefix: 'lower_box',\n endPositionPrefix: 'upper_box',\n extraEncoding: fiveSummaryTooltipEncoding\n })), _toConsumableArray(makeBoxPlotMidTick({\n partName: 'median',\n mark: _objectSpread(_objectSpread(_objectSpread({\n type: 'tick',\n invalid: invalid\n }, isObject(config.boxplot.median) && config.boxplot.median.color ? {\n color: config.boxplot.median.color\n } : {}), sizeValue ? {\n size: sizeValue\n } : {}), {}, {\n orient: ticksOrient,\n aria: false\n }),\n positionPrefix: 'mid_box',\n extraEncoding: fiveSummaryTooltipEncoding\n })));\n if (boxPlotType === 'min-max') {\n var _outerSpec$transform;\n return _objectSpread(_objectSpread({}, outerSpec), {}, {\n transform: ((_outerSpec$transform = outerSpec.transform) !== null && _outerSpec$transform !== void 0 ? _outerSpec$transform : []).concat(transform),\n layer: boxLayers\n });\n }\n // Tukey Box Plot\n var lowerBoxExpr = \"datum[\\\"lower_box_\".concat(continuousAxisChannelDef.field, \"\\\"]\");\n var upperBoxExpr = \"datum[\\\"upper_box_\".concat(continuousAxisChannelDef.field, \"\\\"]\");\n var iqrExpr = \"(\".concat(upperBoxExpr, \" - \").concat(lowerBoxExpr, \")\");\n var lowerWhiskerExpr = \"\".concat(lowerBoxExpr, \" - \").concat(extent, \" * \").concat(iqrExpr);\n var upperWhiskerExpr = \"\".concat(upperBoxExpr, \" + \").concat(extent, \" * \").concat(iqrExpr);\n var fieldExpr = \"datum[\\\"\".concat(continuousAxisChannelDef.field, \"\\\"]\");\n var joinaggregateTransform = {\n joinaggregate: boxParamsQuartiles(continuousAxisChannelDef.field),\n groupby: groupby\n };\n var filteredWhiskerSpec = {\n transform: [{\n filter: \"(\".concat(lowerWhiskerExpr, \" <= \").concat(fieldExpr, \") && (\").concat(fieldExpr, \" <= \").concat(upperWhiskerExpr, \")\")\n }, {\n aggregate: [{\n op: 'min',\n field: continuousAxisChannelDef.field,\n as: \"lower_whisker_\".concat(continuousAxisChannelDef.field)\n }, {\n op: 'max',\n field: continuousAxisChannelDef.field,\n as: \"upper_whisker_\".concat(continuousAxisChannelDef.field)\n },\n // preserve lower_box / upper_box\n {\n op: 'min',\n field: \"lower_box_\".concat(continuousAxisChannelDef.field),\n as: \"lower_box_\".concat(continuousAxisChannelDef.field)\n }, {\n op: 'max',\n field: \"upper_box_\".concat(continuousAxisChannelDef.field),\n as: \"upper_box_\".concat(continuousAxisChannelDef.field)\n }].concat(_toConsumableArray(aggregate)),\n groupby: groupby\n }],\n layer: whiskerLayers\n };\n var tooltip = encodingWithoutSizeColorAndContinuousAxis.tooltip,\n encodingWithoutSizeColorContinuousAxisAndTooltip = _objectWithoutProperties(encodingWithoutSizeColorAndContinuousAxis, _excluded3);\n var scale = continuousAxisChannelDef.scale,\n axis = continuousAxisChannelDef.axis;\n var title = getTitle(continuousAxisChannelDef);\n var axisWithoutTitle = omit(axis, ['title']);\n var outlierLayersMixins = partLayerMixins(markDef, 'outliers', config.boxplot, {\n transform: [{\n filter: \"(\".concat(fieldExpr, \" < \").concat(lowerWhiskerExpr, \") || (\").concat(fieldExpr, \" > \").concat(upperWhiskerExpr, \")\")\n }],\n mark: 'point',\n encoding: _objectSpread(_objectSpread(_objectSpread(_defineProperty({}, continuousAxis, _objectSpread(_objectSpread(_objectSpread({\n field: continuousAxisChannelDef.field,\n type: continuousAxisChannelDef.type\n }, title !== undefined ? {\n title: title\n } : {}), scale !== undefined ? {\n scale: scale\n } : {}), isEmpty(axisWithoutTitle) ? {} : {\n axis: axisWithoutTitle\n })), encodingWithoutSizeColorContinuousAxisAndTooltip), color ? {\n color: color\n } : {}), customTooltipWithoutAggregatedField ? {\n tooltip: customTooltipWithoutAggregatedField\n } : {})\n })[0];\n var filteredLayersMixins;\n var filteredLayersMixinsTransforms = [].concat(_toConsumableArray(bins), _toConsumableArray(timeUnits), [joinaggregateTransform]);\n if (outlierLayersMixins) {\n filteredLayersMixins = {\n transform: filteredLayersMixinsTransforms,\n layer: [outlierLayersMixins, filteredWhiskerSpec]\n };\n } else {\n var _filteredLayersMixins;\n filteredLayersMixins = filteredWhiskerSpec;\n (_filteredLayersMixins = filteredLayersMixins.transform).unshift.apply(_filteredLayersMixins, _toConsumableArray(filteredLayersMixinsTransforms));\n }\n return _objectSpread(_objectSpread({}, outerSpec), {}, {\n layer: [filteredLayersMixins, {\n // boxplot\n transform: transform,\n layer: boxLayers\n }]\n });\n}\nfunction boxParamsQuartiles(continousAxisField) {\n return [{\n op: 'q1',\n field: continousAxisField,\n as: \"lower_box_\".concat(continousAxisField)\n }, {\n op: 'q3',\n field: continousAxisField,\n as: \"upper_box_\".concat(continousAxisField)\n }];\n}\nfunction boxParams(spec, extent, config) {\n var orient = compositeMarkOrient(spec, BOXPLOT);\n var _compositeMarkContinu = compositeMarkContinuousAxis(spec, orient, BOXPLOT),\n continuousAxisChannelDef = _compositeMarkContinu.continuousAxisChannelDef,\n continuousAxis = _compositeMarkContinu.continuousAxis;\n var continuousFieldName = continuousAxisChannelDef.field;\n var boxPlotType = getBoxPlotType(extent);\n var boxplotSpecificAggregate = [].concat(_toConsumableArray(boxParamsQuartiles(continuousFieldName)), [{\n op: 'median',\n field: continuousFieldName,\n as: \"mid_box_\".concat(continuousFieldName)\n }, {\n op: 'min',\n field: continuousFieldName,\n as: (boxPlotType === 'min-max' ? 'lower_whisker_' : 'min_') + continuousFieldName\n }, {\n op: 'max',\n field: continuousFieldName,\n as: (boxPlotType === 'min-max' ? 'upper_whisker_' : 'max_') + continuousFieldName\n }]);\n var postAggregateCalculates = boxPlotType === 'min-max' || boxPlotType === 'tukey' ? [] : [\n // This is for the original k-IQR, which we do not expose\n {\n calculate: \"datum[\\\"upper_box_\".concat(continuousFieldName, \"\\\"] - datum[\\\"lower_box_\").concat(continuousFieldName, \"\\\"]\"),\n as: \"iqr_\".concat(continuousFieldName)\n }, {\n calculate: \"min(datum[\\\"upper_box_\".concat(continuousFieldName, \"\\\"] + datum[\\\"iqr_\").concat(continuousFieldName, \"\\\"] * \").concat(extent, \", datum[\\\"max_\").concat(continuousFieldName, \"\\\"])\"),\n as: \"upper_whisker_\".concat(continuousFieldName)\n }, {\n calculate: \"max(datum[\\\"lower_box_\".concat(continuousFieldName, \"\\\"] - datum[\\\"iqr_\").concat(continuousFieldName, \"\\\"] * \").concat(extent, \", datum[\\\"min_\").concat(continuousFieldName, \"\\\"])\"),\n as: \"lower_whisker_\".concat(continuousFieldName)\n }];\n var _spec$encoding = spec.encoding,\n oldContinuousAxisChannelDef = _spec$encoding[continuousAxis],\n oldEncodingWithoutContinuousAxis = _objectWithoutProperties(_spec$encoding, [continuousAxis].map(_toPropertyKey));\n var _filterTooltipWithAgg = filterTooltipWithAggregatedField(oldEncodingWithoutContinuousAxis),\n customTooltipWithoutAggregatedField = _filterTooltipWithAgg.customTooltipWithoutAggregatedField,\n filteredEncoding = _filterTooltipWithAgg.filteredEncoding;\n var _extractTransformsFro = extractTransformsFromEncoding(filteredEncoding, config),\n bins = _extractTransformsFro.bins,\n timeUnits = _extractTransformsFro.timeUnits,\n aggregate = _extractTransformsFro.aggregate,\n groupby = _extractTransformsFro.groupby,\n encodingWithoutContinuousAxis = _extractTransformsFro.encoding;\n var ticksOrient = orient === 'vertical' ? 'horizontal' : 'vertical';\n var boxOrient = orient;\n var transform = [].concat(_toConsumableArray(bins), _toConsumableArray(timeUnits), [{\n aggregate: [].concat(_toConsumableArray(aggregate), _toConsumableArray(boxplotSpecificAggregate)),\n groupby: groupby\n }], postAggregateCalculates);\n return {\n bins: bins,\n timeUnits: timeUnits,\n transform: transform,\n groupby: groupby,\n aggregate: aggregate,\n continuousAxisChannelDef: continuousAxisChannelDef,\n continuousAxis: continuousAxis,\n encodingWithoutContinuousAxis: encodingWithoutContinuousAxis,\n ticksOrient: ticksOrient,\n boxOrient: boxOrient,\n customTooltipWithoutAggregatedField: customTooltipWithoutAggregatedField\n };\n}","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nvar _excluded = [\"mark\", \"encoding\", \"params\", \"projection\"];\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { isContinuousFieldOrDatumDef, isFieldOrDatumDef, title } from '../channeldef';\nimport { extractTransformsFromEncoding, normalizeEncoding } from '../encoding';\nimport * as log from '../log';\nimport { isMarkDef } from '../mark';\nimport { replaceAll, titleCase } from '../util';\nimport { CompositeMarkNormalizer } from './base';\nimport { compositeMarkContinuousAxis, compositeMarkOrient, getCompositeMarkTooltip, makeCompositeAggregatePartFactory } from './common';\nexport var ERRORBAR = 'errorbar';\nexport var ERRORBAR_PARTS = ['ticks', 'rule'];\nexport var errorBarNormalizer = new CompositeMarkNormalizer(ERRORBAR, normalizeErrorBar);\nexport function normalizeErrorBar(spec, _ref) {\n var config = _ref.config;\n // Need to initEncoding first so we can infer type\n spec = _objectSpread(_objectSpread({}, spec), {}, {\n encoding: normalizeEncoding(spec.encoding, config)\n });\n var _errorBarParams = errorBarParams(spec, ERRORBAR, config),\n transform = _errorBarParams.transform,\n continuousAxisChannelDef = _errorBarParams.continuousAxisChannelDef,\n continuousAxis = _errorBarParams.continuousAxis,\n encodingWithoutContinuousAxis = _errorBarParams.encodingWithoutContinuousAxis,\n ticksOrient = _errorBarParams.ticksOrient,\n markDef = _errorBarParams.markDef,\n outerSpec = _errorBarParams.outerSpec,\n tooltipEncoding = _errorBarParams.tooltipEncoding;\n delete encodingWithoutContinuousAxis['size'];\n var makeErrorBarPart = makeCompositeAggregatePartFactory(markDef, continuousAxis, continuousAxisChannelDef, encodingWithoutContinuousAxis, config.errorbar);\n var thickness = markDef.thickness;\n var size = markDef.size;\n var tick = _objectSpread(_objectSpread({\n type: 'tick',\n orient: ticksOrient,\n aria: false\n }, thickness !== undefined ? {\n thickness: thickness\n } : {}), size !== undefined ? {\n size: size\n } : {});\n var layer = [].concat(_toConsumableArray(makeErrorBarPart({\n partName: 'ticks',\n mark: tick,\n positionPrefix: 'lower',\n extraEncoding: tooltipEncoding\n })), _toConsumableArray(makeErrorBarPart({\n partName: 'ticks',\n mark: tick,\n positionPrefix: 'upper',\n extraEncoding: tooltipEncoding\n })), _toConsumableArray(makeErrorBarPart({\n partName: 'rule',\n mark: _objectSpread({\n type: 'rule',\n ariaRoleDescription: 'errorbar'\n }, thickness !== undefined ? {\n size: thickness\n } : {}),\n positionPrefix: 'lower',\n endPositionPrefix: 'upper',\n extraEncoding: tooltipEncoding\n })));\n return _objectSpread(_objectSpread({}, outerSpec), {}, {\n transform: transform\n }, layer.length > 1 ? {\n layer: layer\n } : _objectSpread({}, layer[0]));\n}\nfunction errorBarOrientAndInputType(spec, compositeMark) {\n var encoding = spec.encoding;\n if (errorBarIsInputTypeRaw(encoding)) {\n return {\n orient: compositeMarkOrient(spec, compositeMark),\n inputType: 'raw'\n };\n }\n var isTypeAggregatedUpperLower = errorBarIsInputTypeAggregatedUpperLower(encoding);\n var isTypeAggregatedError = errorBarIsInputTypeAggregatedError(encoding);\n var x = encoding.x;\n var y = encoding.y;\n if (isTypeAggregatedUpperLower) {\n // type is aggregated-upper-lower\n if (isTypeAggregatedError) {\n throw new Error(\"\".concat(compositeMark, \" cannot be both type aggregated-upper-lower and aggregated-error\"));\n }\n var x2 = encoding.x2;\n var y2 = encoding.y2;\n if (isFieldOrDatumDef(x2) && isFieldOrDatumDef(y2)) {\n // having both x, x2 and y, y2\n throw new Error(\"\".concat(compositeMark, \" cannot have both x2 and y2\"));\n } else if (isFieldOrDatumDef(x2)) {\n if (isContinuousFieldOrDatumDef(x)) {\n // having x, x2 quantitative and field y, y2 are not specified\n return {\n orient: 'horizontal',\n inputType: 'aggregated-upper-lower'\n };\n } else {\n // having x, x2 that are not both quantitative\n throw new Error(\"Both x and x2 have to be quantitative in \".concat(compositeMark));\n }\n } else if (isFieldOrDatumDef(y2)) {\n // y2 is a FieldDef\n if (isContinuousFieldOrDatumDef(y)) {\n // having y, y2 quantitative and field x, x2 are not specified\n return {\n orient: 'vertical',\n inputType: 'aggregated-upper-lower'\n };\n } else {\n // having y, y2 that are not both quantitative\n throw new Error(\"Both y and y2 have to be quantitative in \".concat(compositeMark));\n }\n }\n throw new Error('No ranged axis');\n } else {\n // type is aggregated-error\n var xError = encoding.xError;\n var xError2 = encoding.xError2;\n var yError = encoding.yError;\n var yError2 = encoding.yError2;\n if (isFieldOrDatumDef(xError2) && !isFieldOrDatumDef(xError)) {\n // having xError2 without xError\n throw new Error(\"\".concat(compositeMark, \" cannot have xError2 without xError\"));\n }\n if (isFieldOrDatumDef(yError2) && !isFieldOrDatumDef(yError)) {\n // having yError2 without yError\n throw new Error(\"\".concat(compositeMark, \" cannot have yError2 without yError\"));\n }\n if (isFieldOrDatumDef(xError) && isFieldOrDatumDef(yError)) {\n // having both xError and yError\n throw new Error(\"\".concat(compositeMark, \" cannot have both xError and yError with both are quantiative\"));\n } else if (isFieldOrDatumDef(xError)) {\n if (isContinuousFieldOrDatumDef(x)) {\n // having x and xError that are all quantitative\n return {\n orient: 'horizontal',\n inputType: 'aggregated-error'\n };\n } else {\n // having x, xError, and xError2 that are not all quantitative\n throw new Error('All x, xError, and xError2 (if exist) have to be quantitative');\n }\n } else if (isFieldOrDatumDef(yError)) {\n if (isContinuousFieldOrDatumDef(y)) {\n // having y and yError that are all quantitative\n return {\n orient: 'vertical',\n inputType: 'aggregated-error'\n };\n } else {\n // having y, yError, and yError2 that are not all quantitative\n throw new Error('All y, yError, and yError2 (if exist) have to be quantitative');\n }\n }\n throw new Error('No ranged axis');\n }\n}\nfunction errorBarIsInputTypeRaw(encoding) {\n return (isFieldOrDatumDef(encoding.x) || isFieldOrDatumDef(encoding.y)) && !isFieldOrDatumDef(encoding.x2) && !isFieldOrDatumDef(encoding.y2) && !isFieldOrDatumDef(encoding.xError) && !isFieldOrDatumDef(encoding.xError2) && !isFieldOrDatumDef(encoding.yError) && !isFieldOrDatumDef(encoding.yError2);\n}\nfunction errorBarIsInputTypeAggregatedUpperLower(encoding) {\n return isFieldOrDatumDef(encoding.x2) || isFieldOrDatumDef(encoding.y2);\n}\nfunction errorBarIsInputTypeAggregatedError(encoding) {\n return isFieldOrDatumDef(encoding.xError) || isFieldOrDatumDef(encoding.xError2) || isFieldOrDatumDef(encoding.yError) || isFieldOrDatumDef(encoding.yError2);\n}\nexport function errorBarParams(spec, compositeMark, config) {\n var _outerSpec$transform;\n // TODO: use selection\n var mark = spec.mark,\n encoding = spec.encoding,\n params = spec.params,\n _p = spec.projection,\n outerSpec = _objectWithoutProperties(spec, _excluded);\n var markDef = isMarkDef(mark) ? mark : {\n type: mark\n };\n // TODO(https://github.com/vega/vega-lite/issues/3702): add selection support\n if (params) {\n log.warn(log.message.selectionNotSupported(compositeMark));\n }\n var _errorBarOrientAndInp = errorBarOrientAndInputType(spec, compositeMark),\n orient = _errorBarOrientAndInp.orient,\n inputType = _errorBarOrientAndInp.inputType;\n var _compositeMarkContinu = compositeMarkContinuousAxis(spec, orient, compositeMark),\n continuousAxisChannelDef = _compositeMarkContinu.continuousAxisChannelDef,\n continuousAxisChannelDef2 = _compositeMarkContinu.continuousAxisChannelDef2,\n continuousAxisChannelDefError = _compositeMarkContinu.continuousAxisChannelDefError,\n continuousAxisChannelDefError2 = _compositeMarkContinu.continuousAxisChannelDefError2,\n continuousAxis = _compositeMarkContinu.continuousAxis;\n var _errorBarAggregationA = errorBarAggregationAndCalculation(markDef, continuousAxisChannelDef, continuousAxisChannelDef2, continuousAxisChannelDefError, continuousAxisChannelDefError2, inputType, compositeMark, config),\n errorBarSpecificAggregate = _errorBarAggregationA.errorBarSpecificAggregate,\n postAggregateCalculates = _errorBarAggregationA.postAggregateCalculates,\n tooltipSummary = _errorBarAggregationA.tooltipSummary,\n tooltipTitleWithFieldName = _errorBarAggregationA.tooltipTitleWithFieldName;\n var _ref2 = continuousAxis === 'x' ? 'x2' : 'y2',\n _ref3 = continuousAxis === 'x' ? 'xError' : 'yError',\n _ref4 = continuousAxis === 'x' ? 'xError2' : 'yError2',\n oldContinuousAxisChannelDef = encoding[continuousAxis],\n oldContinuousAxisChannelDef2 = encoding[_ref2],\n oldContinuousAxisChannelDefError = encoding[_ref3],\n oldContinuousAxisChannelDefError2 = encoding[_ref4],\n oldEncodingWithoutContinuousAxis = _objectWithoutProperties(encoding, [continuousAxis, _ref2, _ref3, _ref4].map(_toPropertyKey));\n var _extractTransformsFro = extractTransformsFromEncoding(oldEncodingWithoutContinuousAxis, config),\n bins = _extractTransformsFro.bins,\n timeUnits = _extractTransformsFro.timeUnits,\n oldAggregate = _extractTransformsFro.aggregate,\n oldGroupBy = _extractTransformsFro.groupby,\n encodingWithoutContinuousAxis = _extractTransformsFro.encoding;\n var aggregate = [].concat(_toConsumableArray(oldAggregate), _toConsumableArray(errorBarSpecificAggregate));\n var groupby = inputType !== 'raw' ? [] : oldGroupBy;\n var tooltipEncoding = getCompositeMarkTooltip(tooltipSummary, continuousAxisChannelDef, encodingWithoutContinuousAxis, tooltipTitleWithFieldName);\n return {\n transform: [].concat(_toConsumableArray((_outerSpec$transform = outerSpec.transform) !== null && _outerSpec$transform !== void 0 ? _outerSpec$transform : []), _toConsumableArray(bins), _toConsumableArray(timeUnits), _toConsumableArray(aggregate.length === 0 ? [] : [{\n aggregate: aggregate,\n groupby: groupby\n }]), _toConsumableArray(postAggregateCalculates)),\n groupby: groupby,\n continuousAxisChannelDef: continuousAxisChannelDef,\n continuousAxis: continuousAxis,\n encodingWithoutContinuousAxis: encodingWithoutContinuousAxis,\n ticksOrient: orient === 'vertical' ? 'horizontal' : 'vertical',\n markDef: markDef,\n outerSpec: outerSpec,\n tooltipEncoding: tooltipEncoding\n };\n}\nfunction errorBarAggregationAndCalculation(markDef, continuousAxisChannelDef, continuousAxisChannelDef2, continuousAxisChannelDefError, continuousAxisChannelDefError2, inputType, compositeMark, config) {\n var errorBarSpecificAggregate = [];\n var postAggregateCalculates = [];\n var continuousFieldName = continuousAxisChannelDef.field;\n var tooltipSummary;\n var tooltipTitleWithFieldName = false;\n if (inputType === 'raw') {\n var center = markDef.center ? markDef.center : markDef.extent ? markDef.extent === 'iqr' ? 'median' : 'mean' : config.errorbar.center;\n var extent = markDef.extent ? markDef.extent : center === 'mean' ? 'stderr' : 'iqr';\n if (center === 'median' !== (extent === 'iqr')) {\n log.warn(log.message.errorBarCenterIsUsedWithWrongExtent(center, extent, compositeMark));\n }\n if (extent === 'stderr' || extent === 'stdev') {\n errorBarSpecificAggregate = [{\n op: extent,\n field: continuousFieldName,\n as: \"extent_\".concat(continuousFieldName)\n }, {\n op: center,\n field: continuousFieldName,\n as: \"center_\".concat(continuousFieldName)\n }];\n postAggregateCalculates = [{\n calculate: \"datum[\\\"center_\".concat(continuousFieldName, \"\\\"] + datum[\\\"extent_\").concat(continuousFieldName, \"\\\"]\"),\n as: \"upper_\".concat(continuousFieldName)\n }, {\n calculate: \"datum[\\\"center_\".concat(continuousFieldName, \"\\\"] - datum[\\\"extent_\").concat(continuousFieldName, \"\\\"]\"),\n as: \"lower_\".concat(continuousFieldName)\n }];\n tooltipSummary = [{\n fieldPrefix: 'center_',\n titlePrefix: titleCase(center)\n }, {\n fieldPrefix: 'upper_',\n titlePrefix: getTitlePrefix(center, extent, '+')\n }, {\n fieldPrefix: 'lower_',\n titlePrefix: getTitlePrefix(center, extent, '-')\n }];\n tooltipTitleWithFieldName = true;\n } else {\n var centerOp;\n var lowerExtentOp;\n var upperExtentOp;\n if (extent === 'ci') {\n centerOp = 'mean';\n lowerExtentOp = 'ci0';\n upperExtentOp = 'ci1';\n } else {\n centerOp = 'median';\n lowerExtentOp = 'q1';\n upperExtentOp = 'q3';\n }\n errorBarSpecificAggregate = [{\n op: lowerExtentOp,\n field: continuousFieldName,\n as: \"lower_\".concat(continuousFieldName)\n }, {\n op: upperExtentOp,\n field: continuousFieldName,\n as: \"upper_\".concat(continuousFieldName)\n }, {\n op: centerOp,\n field: continuousFieldName,\n as: \"center_\".concat(continuousFieldName)\n }];\n tooltipSummary = [{\n fieldPrefix: 'upper_',\n titlePrefix: title({\n field: continuousFieldName,\n aggregate: upperExtentOp,\n type: 'quantitative'\n }, config, {\n allowDisabling: false\n })\n }, {\n fieldPrefix: 'lower_',\n titlePrefix: title({\n field: continuousFieldName,\n aggregate: lowerExtentOp,\n type: 'quantitative'\n }, config, {\n allowDisabling: false\n })\n }, {\n fieldPrefix: 'center_',\n titlePrefix: title({\n field: continuousFieldName,\n aggregate: centerOp,\n type: 'quantitative'\n }, config, {\n allowDisabling: false\n })\n }];\n }\n } else {\n if (markDef.center || markDef.extent) {\n log.warn(log.message.errorBarCenterAndExtentAreNotNeeded(markDef.center, markDef.extent));\n }\n if (inputType === 'aggregated-upper-lower') {\n tooltipSummary = [];\n postAggregateCalculates = [{\n calculate: \"datum[\\\"\".concat(continuousAxisChannelDef2.field, \"\\\"]\"),\n as: \"upper_\".concat(continuousFieldName)\n }, {\n calculate: \"datum[\\\"\".concat(continuousFieldName, \"\\\"]\"),\n as: \"lower_\".concat(continuousFieldName)\n }];\n } else if (inputType === 'aggregated-error') {\n tooltipSummary = [{\n fieldPrefix: '',\n titlePrefix: continuousFieldName\n }];\n postAggregateCalculates = [{\n calculate: \"datum[\\\"\".concat(continuousFieldName, \"\\\"] + datum[\\\"\").concat(continuousAxisChannelDefError.field, \"\\\"]\"),\n as: \"upper_\".concat(continuousFieldName)\n }];\n if (continuousAxisChannelDefError2) {\n postAggregateCalculates.push({\n calculate: \"datum[\\\"\".concat(continuousFieldName, \"\\\"] + datum[\\\"\").concat(continuousAxisChannelDefError2.field, \"\\\"]\"),\n as: \"lower_\".concat(continuousFieldName)\n });\n } else {\n postAggregateCalculates.push({\n calculate: \"datum[\\\"\".concat(continuousFieldName, \"\\\"] - datum[\\\"\").concat(continuousAxisChannelDefError.field, \"\\\"]\"),\n as: \"lower_\".concat(continuousFieldName)\n });\n }\n }\n var _iterator = _createForOfIteratorHelper(postAggregateCalculates),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var postAggregateCalculate = _step.value;\n tooltipSummary.push({\n fieldPrefix: postAggregateCalculate.as.substring(0, 6),\n titlePrefix: replaceAll(replaceAll(postAggregateCalculate.calculate, 'datum[\"', ''), '\"]', '')\n });\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n return {\n postAggregateCalculates: postAggregateCalculates,\n errorBarSpecificAggregate: errorBarSpecificAggregate,\n tooltipSummary: tooltipSummary,\n tooltipTitleWithFieldName: tooltipTitleWithFieldName\n };\n}\nfunction getTitlePrefix(center, extent, operation) {\n return \"\".concat(titleCase(center), \" \").concat(operation, \" \").concat(extent);\n}","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { normalizeEncoding } from '../encoding';\nimport * as log from '../log';\nimport { CompositeMarkNormalizer } from './base';\nimport { makeCompositeAggregatePartFactory } from './common';\nimport { errorBarParams } from './errorbar';\nexport var ERRORBAND = 'errorband';\nexport var ERRORBAND_PARTS = ['band', 'borders'];\nexport var errorBandNormalizer = new CompositeMarkNormalizer(ERRORBAND, normalizeErrorBand);\nexport function normalizeErrorBand(spec, _ref) {\n var config = _ref.config;\n // Need to initEncoding first so we can infer type\n spec = _objectSpread(_objectSpread({}, spec), {}, {\n encoding: normalizeEncoding(spec.encoding, config)\n });\n var _errorBarParams = errorBarParams(spec, ERRORBAND, config),\n transform = _errorBarParams.transform,\n continuousAxisChannelDef = _errorBarParams.continuousAxisChannelDef,\n continuousAxis = _errorBarParams.continuousAxis,\n encodingWithoutContinuousAxis = _errorBarParams.encodingWithoutContinuousAxis,\n markDef = _errorBarParams.markDef,\n outerSpec = _errorBarParams.outerSpec,\n tooltipEncoding = _errorBarParams.tooltipEncoding;\n var errorBandDef = markDef;\n var makeErrorBandPart = makeCompositeAggregatePartFactory(errorBandDef, continuousAxis, continuousAxisChannelDef, encodingWithoutContinuousAxis, config.errorband);\n var is2D = spec.encoding.x !== undefined && spec.encoding.y !== undefined;\n var bandMark = {\n type: is2D ? 'area' : 'rect'\n };\n var bordersMark = {\n type: is2D ? 'line' : 'rule'\n };\n var interpolate = _objectSpread(_objectSpread({}, errorBandDef.interpolate ? {\n interpolate: errorBandDef.interpolate\n } : {}), errorBandDef.tension && errorBandDef.interpolate ? {\n tension: errorBandDef.tension\n } : {});\n if (is2D) {\n bandMark = _objectSpread(_objectSpread(_objectSpread({}, bandMark), interpolate), {}, {\n ariaRoleDescription: 'errorband'\n });\n bordersMark = _objectSpread(_objectSpread(_objectSpread({}, bordersMark), interpolate), {}, {\n aria: false\n });\n } else if (errorBandDef.interpolate) {\n log.warn(log.message.errorBand1DNotSupport('interpolate'));\n } else if (errorBandDef.tension) {\n log.warn(log.message.errorBand1DNotSupport('tension'));\n }\n return _objectSpread(_objectSpread({}, outerSpec), {}, {\n transform: transform,\n layer: [].concat(_toConsumableArray(makeErrorBandPart({\n partName: 'band',\n mark: bandMark,\n positionPrefix: 'lower',\n endPositionPrefix: 'upper',\n extraEncoding: tooltipEncoding\n })), _toConsumableArray(makeErrorBandPart({\n partName: 'borders',\n mark: bordersMark,\n positionPrefix: 'lower',\n extraEncoding: tooltipEncoding\n })), _toConsumableArray(makeErrorBandPart({\n partName: 'borders',\n mark: bordersMark,\n positionPrefix: 'upper',\n extraEncoding: tooltipEncoding\n })))\n });\n}","import { keys } from '../util';\nimport { CompositeMarkNormalizer } from './base';\nimport { BOXPLOT, BOXPLOT_PARTS, normalizeBoxPlot } from './boxplot';\nimport { ERRORBAND, ERRORBAND_PARTS, normalizeErrorBand } from './errorband';\nimport { ERRORBAR, ERRORBAR_PARTS, normalizeErrorBar } from './errorbar';\n/**\n * Registry index for all composite mark's normalizer\n */\nvar compositeMarkRegistry = {};\nexport function add(mark, run, parts) {\n var normalizer = new CompositeMarkNormalizer(mark, run);\n compositeMarkRegistry[mark] = {\n normalizer: normalizer,\n parts: parts\n };\n}\nexport function remove(mark) {\n delete compositeMarkRegistry[mark];\n}\nexport function getAllCompositeMarks() {\n return keys(compositeMarkRegistry);\n}\nadd(BOXPLOT, normalizeBoxPlot, BOXPLOT_PARTS);\nadd(ERRORBAR, normalizeErrorBar, ERRORBAR_PARTS);\nadd(ERRORBAND, normalizeErrorBand, ERRORBAND_PARTS);","export var VL_ONLY_LEGEND_CONFIG = ['gradientHorizontalMaxLength', 'gradientHorizontalMinLength', 'gradientVerticalMaxLength', 'gradientVerticalMinLength', 'unselectedOpacity'];","import { keys } from './util';\nexport var HEADER_TITLE_PROPERTIES_MAP = {\n titleAlign: 'align',\n titleAnchor: 'anchor',\n titleAngle: 'angle',\n titleBaseline: 'baseline',\n titleColor: 'color',\n titleFont: 'font',\n titleFontSize: 'fontSize',\n titleFontStyle: 'fontStyle',\n titleFontWeight: 'fontWeight',\n titleLimit: 'limit',\n titleLineHeight: 'lineHeight',\n titleOrient: 'orient',\n titlePadding: 'offset'\n};\nexport var HEADER_LABEL_PROPERTIES_MAP = {\n labelAlign: 'align',\n labelAnchor: 'anchor',\n labelAngle: 'angle',\n labelBaseline: 'baseline',\n labelColor: 'color',\n labelFont: 'font',\n labelFontSize: 'fontSize',\n labelFontStyle: 'fontStyle',\n labelFontWeight: 'fontWeight',\n labelLimit: 'limit',\n labelLineHeight: 'lineHeight',\n labelOrient: 'orient',\n labelPadding: 'offset'\n};\nexport var HEADER_TITLE_PROPERTIES = keys(HEADER_TITLE_PROPERTIES_MAP);\nexport var HEADER_LABEL_PROPERTIES = keys(HEADER_LABEL_PROPERTIES_MAP);\nvar HEADER_CONFIGS_INDEX = {\n header: 1,\n headerRow: 1,\n headerColumn: 1,\n headerFacet: 1\n};\nexport var HEADER_CONFIGS = keys(HEADER_CONFIGS_INDEX);","import { keys } from './util';\nexport var LEGEND_SCALE_CHANNELS = ['size', 'shape', 'fill', 'stroke', 'strokeDash', 'strokeWidth', 'opacity'];\nexport var defaultLegendConfig = {\n gradientHorizontalMaxLength: 200,\n gradientHorizontalMinLength: 100,\n gradientVerticalMaxLength: 200,\n gradientVerticalMinLength: 64,\n unselectedOpacity: 0.35\n};\nexport var COMMON_LEGEND_PROPERTY_INDEX = {\n aria: 1,\n clipHeight: 1,\n columnPadding: 1,\n columns: 1,\n cornerRadius: 1,\n description: 1,\n direction: 1,\n fillColor: 1,\n format: 1,\n formatType: 1,\n gradientLength: 1,\n gradientOpacity: 1,\n gradientStrokeColor: 1,\n gradientStrokeWidth: 1,\n gradientThickness: 1,\n gridAlign: 1,\n labelAlign: 1,\n labelBaseline: 1,\n labelColor: 1,\n labelFont: 1,\n labelFontSize: 1,\n labelFontStyle: 1,\n labelFontWeight: 1,\n labelLimit: 1,\n labelOffset: 1,\n labelOpacity: 1,\n labelOverlap: 1,\n labelPadding: 1,\n labelSeparation: 1,\n legendX: 1,\n legendY: 1,\n offset: 1,\n orient: 1,\n padding: 1,\n rowPadding: 1,\n strokeColor: 1,\n symbolDash: 1,\n symbolDashOffset: 1,\n symbolFillColor: 1,\n symbolLimit: 1,\n symbolOffset: 1,\n symbolOpacity: 1,\n symbolSize: 1,\n symbolStrokeColor: 1,\n symbolStrokeWidth: 1,\n symbolType: 1,\n tickCount: 1,\n tickMinStep: 1,\n title: 1,\n titleAlign: 1,\n titleAnchor: 1,\n titleBaseline: 1,\n titleColor: 1,\n titleFont: 1,\n titleFontSize: 1,\n titleFontStyle: 1,\n titleFontWeight: 1,\n titleLimit: 1,\n titleLineHeight: 1,\n titleOpacity: 1,\n titleOrient: 1,\n titlePadding: 1,\n type: 1,\n values: 1,\n zindex: 1\n};\nexport var LEGEND_PROPERTIES = keys(COMMON_LEGEND_PROPERTY_INDEX);","import { isObject } from 'vega-util';\nexport var SELECTION_ID = '_vgsid_';\nexport var defaultConfig = {\n point: {\n on: 'click',\n fields: [SELECTION_ID],\n toggle: 'event.shiftKey',\n resolve: 'global',\n clear: 'dblclick'\n },\n interval: {\n on: '[mousedown, window:mouseup] > window:mousemove!',\n encodings: ['x', 'y'],\n translate: '[mousedown, window:mouseup] > window:mousemove!',\n zoom: 'wheel!',\n mark: {\n fill: '#333',\n fillOpacity: 0.125,\n stroke: 'white'\n },\n resolve: 'global',\n clear: 'dblclick'\n }\n};\nexport function isLegendBinding(bind) {\n return bind === 'legend' || !!(bind !== null && bind !== void 0 && bind.legend);\n}\nexport function isLegendStreamBinding(bind) {\n return isLegendBinding(bind) && isObject(bind);\n}\nexport function isSelectionParameter(param) {\n return !!(param !== null && param !== void 0 && param['select']);\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"expr\", \"bind\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { isSelectionParameter } from './selection';\nexport function assembleParameterSignals(params) {\n var signals = [];\n var _iterator = _createForOfIteratorHelper(params || []),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var param = _step.value;\n // Selection parameters are handled separately via assembleSelectionTopLevelSignals\n // and assembleSignals methods registered on the Model.\n if (isSelectionParameter(param)) continue;\n var expr = param.expr,\n bind = param.bind,\n rest = _objectWithoutProperties(param, _excluded);\n if (bind && expr) {\n // Vega's InitSignal -- apply expr to \"init\"\n var signal = _objectSpread(_objectSpread({}, rest), {}, {\n bind: bind,\n init: expr\n });\n signals.push(signal);\n } else {\n var _signal = _objectSpread(_objectSpread(_objectSpread({}, rest), expr ? {\n update: expr\n } : {}), bind ? {\n bind: bind\n } : {});\n signals.push(_signal);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return signals;\n}","export function isAnyConcatSpec(spec) {\n return isVConcatSpec(spec) || isHConcatSpec(spec) || isConcatSpec(spec);\n}\nexport function isConcatSpec(spec) {\n return 'concat' in spec;\n}\nexport function isVConcatSpec(spec) {\n return 'vconcat' in spec;\n}\nexport function isHConcatSpec(spec) {\n return 'hconcat' in spec;\n}","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { isNumber, isObject } from 'vega-util';\nimport { keys } from '../util';\nimport { isConcatSpec, isVConcatSpec } from './concat';\nimport { isFacetMapping, isFacetSpec } from './facet';\nexport function getStepFor(_ref) {\n var step = _ref.step,\n offsetIsDiscrete = _ref.offsetIsDiscrete;\n if (offsetIsDiscrete) {\n var _step$for;\n return (_step$for = step.for) !== null && _step$for !== void 0 ? _step$for : 'offset';\n } else {\n return 'position';\n }\n}\nexport function isStep(size) {\n return isObject(size) && size['step'] !== undefined;\n}\nexport function isFrameMixins(o) {\n return o['view'] || o['width'] || o['height'];\n}\nexport var DEFAULT_SPACING = 20;\nvar COMPOSITION_LAYOUT_INDEX = {\n align: 1,\n bounds: 1,\n center: 1,\n columns: 1,\n spacing: 1\n};\nvar COMPOSITION_LAYOUT_PROPERTIES = keys(COMPOSITION_LAYOUT_INDEX);\nexport function extractCompositionLayout(spec, specType, config) {\n var compositionConfig = config[specType];\n var layout = {};\n // Apply config first\n var spacingConfig = compositionConfig.spacing,\n columns = compositionConfig.columns;\n if (spacingConfig !== undefined) {\n layout.spacing = spacingConfig;\n }\n if (columns !== undefined) {\n if (isFacetSpec(spec) && !isFacetMapping(spec.facet) || isConcatSpec(spec)) {\n layout.columns = columns;\n }\n }\n if (isVConcatSpec(spec)) {\n layout.columns = 1;\n }\n // Then copy properties from the spec\n var _iterator = _createForOfIteratorHelper(COMPOSITION_LAYOUT_PROPERTIES),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var prop = _step.value;\n if (spec[prop] !== undefined) {\n if (prop === 'spacing') {\n var _spacing$row, _spacing$column;\n var spacing = spec[prop];\n layout[prop] = isNumber(spacing) ? spacing : {\n row: (_spacing$row = spacing.row) !== null && _spacing$row !== void 0 ? _spacing$row : spacingConfig,\n column: (_spacing$column = spacing.column) !== null && _spacing$column !== void 0 ? _spacing$column : spacingConfig\n };\n } else {\n layout[prop] = spec[prop];\n }\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return layout;\n}","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nvar _excluded = [\"color\", \"font\", \"fontSize\", \"selection\"];\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { writeConfig } from 'vega';\nimport { isObject, mergeConfig } from 'vega-util';\nimport { AXIS_CONFIGS, isConditionalAxisValue } from './axis';\nimport { signalOrValueRefWithCondition, signalRefOrValue } from './compile/common';\nimport { getAllCompositeMarks } from './compositemark';\nimport { replaceExprRef } from './expr';\nimport { VL_ONLY_LEGEND_CONFIG } from './guide';\nimport { HEADER_CONFIGS } from './header';\nimport { defaultLegendConfig } from './legend';\nimport * as mark from './mark';\nimport { MARK_CONFIGS, PRIMITIVE_MARKS, VL_ONLY_MARK_CONFIG_PROPERTIES, VL_ONLY_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX } from './mark';\nimport { assembleParameterSignals } from './parameter';\nimport { defaultScaleConfig } from './scale';\nimport { defaultConfig as defaultSelectionConfig } from './selection';\nimport { DEFAULT_SPACING, isStep } from './spec/base';\nimport { extractTitleConfig } from './title';\nimport { duplicate, getFirstDefined, isEmpty, keys, omit } from './util';\nexport function getViewConfigContinuousSize(viewConfig, channel) {\n var _viewConfig$channel;\n return (_viewConfig$channel = viewConfig[channel]) !== null && _viewConfig$channel !== void 0 ? _viewConfig$channel : viewConfig[channel === 'width' ? 'continuousWidth' : 'continuousHeight']; // get width/height for backwards compatibility\n}\n\nexport function getViewConfigDiscreteStep(viewConfig, channel) {\n var size = getViewConfigDiscreteSize(viewConfig, channel);\n return isStep(size) ? size.step : DEFAULT_STEP;\n}\nexport function getViewConfigDiscreteSize(viewConfig, channel) {\n var _viewConfig$channel2;\n var size = (_viewConfig$channel2 = viewConfig[channel]) !== null && _viewConfig$channel2 !== void 0 ? _viewConfig$channel2 : viewConfig[channel === 'width' ? 'discreteWidth' : 'discreteHeight']; // get width/height for backwards compatibility\n return getFirstDefined(size, {\n step: viewConfig.step\n });\n}\nexport var DEFAULT_STEP = 20;\nexport var defaultViewConfig = {\n continuousWidth: 200,\n continuousHeight: 200,\n step: DEFAULT_STEP\n};\nexport function isVgScheme(rangeScheme) {\n return rangeScheme && !!rangeScheme['scheme'];\n}\nexport var defaultConfig = {\n background: 'white',\n padding: 5,\n timeFormat: '%b %d, %Y',\n countTitle: 'Count of Records',\n view: defaultViewConfig,\n mark: mark.defaultMarkConfig,\n arc: {},\n area: {},\n bar: mark.defaultBarConfig,\n circle: {},\n geoshape: {},\n image: {},\n line: {},\n point: {},\n rect: mark.defaultRectConfig,\n rule: {\n color: 'black'\n },\n square: {},\n text: {\n color: 'black'\n },\n tick: mark.defaultTickConfig,\n trail: {},\n boxplot: {\n size: 14,\n extent: 1.5,\n box: {},\n median: {\n color: 'white'\n },\n outliers: {},\n rule: {},\n ticks: null\n },\n errorbar: {\n center: 'mean',\n rule: true,\n ticks: false\n },\n errorband: {\n band: {\n opacity: 0.3\n },\n borders: false\n },\n scale: defaultScaleConfig,\n projection: {},\n legend: defaultLegendConfig,\n header: {\n titlePadding: 10,\n labelPadding: 10\n },\n headerColumn: {},\n headerRow: {},\n headerFacet: {},\n selection: defaultSelectionConfig,\n style: {},\n title: {},\n facet: {\n spacing: DEFAULT_SPACING\n },\n concat: {\n spacing: DEFAULT_SPACING\n },\n normalizedNumberFormat: '.0%'\n};\n// Tableau10 color palette, copied from `vegaScale.scheme('tableau10')`\nvar tab10 = ['#4c78a8', '#f58518', '#e45756', '#72b7b2', '#54a24b', '#eeca3b', '#b279a2', '#ff9da6', '#9d755d', '#bab0ac'];\nexport var DEFAULT_FONT_SIZE = {\n text: 11,\n guideLabel: 10,\n guideTitle: 11,\n groupTitle: 13,\n groupSubtitle: 12\n};\nexport var DEFAULT_COLOR = {\n blue: tab10[0],\n orange: tab10[1],\n red: tab10[2],\n teal: tab10[3],\n green: tab10[4],\n yellow: tab10[5],\n purple: tab10[6],\n pink: tab10[7],\n brown: tab10[8],\n gray0: '#000',\n gray1: '#111',\n gray2: '#222',\n gray3: '#333',\n gray4: '#444',\n gray5: '#555',\n gray6: '#666',\n gray7: '#777',\n gray8: '#888',\n gray9: '#999',\n gray10: '#aaa',\n gray11: '#bbb',\n gray12: '#ccc',\n gray13: '#ddd',\n gray14: '#eee',\n gray15: '#fff'\n};\nexport function colorSignalConfig() {\n var color = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return {\n signals: [{\n name: 'color',\n value: isObject(color) ? _objectSpread(_objectSpread({}, DEFAULT_COLOR), color) : DEFAULT_COLOR\n }],\n mark: {\n color: {\n signal: 'color.blue'\n }\n },\n rule: {\n color: {\n signal: 'color.gray0'\n }\n },\n text: {\n color: {\n signal: 'color.gray0'\n }\n },\n style: {\n 'guide-label': {\n fill: {\n signal: 'color.gray0'\n }\n },\n 'guide-title': {\n fill: {\n signal: 'color.gray0'\n }\n },\n 'group-title': {\n fill: {\n signal: 'color.gray0'\n }\n },\n 'group-subtitle': {\n fill: {\n signal: 'color.gray0'\n }\n },\n cell: {\n stroke: {\n signal: 'color.gray8'\n }\n }\n },\n axis: {\n domainColor: {\n signal: 'color.gray13'\n },\n gridColor: {\n signal: 'color.gray8'\n },\n tickColor: {\n signal: 'color.gray13'\n }\n },\n range: {\n category: [{\n signal: 'color.blue'\n }, {\n signal: 'color.orange'\n }, {\n signal: 'color.red'\n }, {\n signal: 'color.teal'\n }, {\n signal: 'color.green'\n }, {\n signal: 'color.yellow'\n }, {\n signal: 'color.purple'\n }, {\n signal: 'color.pink'\n }, {\n signal: 'color.brown'\n }, {\n signal: 'color.grey8'\n }]\n }\n };\n}\nexport function fontSizeSignalConfig(fontSize) {\n return {\n signals: [{\n name: 'fontSize',\n value: isObject(fontSize) ? _objectSpread(_objectSpread({}, DEFAULT_FONT_SIZE), fontSize) : DEFAULT_FONT_SIZE\n }],\n text: {\n fontSize: {\n signal: 'fontSize.text'\n }\n },\n style: {\n 'guide-label': {\n fontSize: {\n signal: 'fontSize.guideLabel'\n }\n },\n 'guide-title': {\n fontSize: {\n signal: 'fontSize.guideTitle'\n }\n },\n 'group-title': {\n fontSize: {\n signal: 'fontSize.groupTitle'\n }\n },\n 'group-subtitle': {\n fontSize: {\n signal: 'fontSize.groupSubtitle'\n }\n }\n }\n };\n}\nexport function fontConfig(font) {\n return {\n text: {\n font: font\n },\n style: {\n 'guide-label': {\n font: font\n },\n 'guide-title': {\n font: font\n },\n 'group-title': {\n font: font\n },\n 'group-subtitle': {\n font: font\n }\n }\n };\n}\nfunction getAxisConfigInternal(axisConfig) {\n var props = keys(axisConfig || {});\n var axisConfigInternal = {};\n var _iterator = _createForOfIteratorHelper(props),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var prop = _step.value;\n var val = axisConfig[prop];\n axisConfigInternal[prop] = isConditionalAxisValue(val) ? signalOrValueRefWithCondition(val) : signalRefOrValue(val);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return axisConfigInternal;\n}\nfunction getStyleConfigInternal(styleConfig) {\n var props = keys(styleConfig);\n var styleConfigInternal = {};\n var _iterator2 = _createForOfIteratorHelper(props),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var prop = _step2.value;\n // We need to cast to cheat a bit here since styleConfig can be either mark config or axis config\n styleConfigInternal[prop] = getAxisConfigInternal(styleConfig[prop]);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n return styleConfigInternal;\n}\nvar configPropsWithExpr = [].concat(_toConsumableArray(MARK_CONFIGS), _toConsumableArray(AXIS_CONFIGS), _toConsumableArray(HEADER_CONFIGS), ['background', 'padding', 'legend', 'lineBreak', 'scale', 'style', 'title', 'view']);\n/**\n * Merge specified config with default config and config for the `color` flag,\n * then replace all expressions with signals\n */\nexport function initConfig() {\n var specifiedConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var color = specifiedConfig.color,\n font = specifiedConfig.font,\n fontSize = specifiedConfig.fontSize,\n selection = specifiedConfig.selection,\n restConfig = _objectWithoutProperties(specifiedConfig, _excluded);\n var mergedConfig = mergeConfig({}, duplicate(defaultConfig), font ? fontConfig(font) : {}, color ? colorSignalConfig(color) : {}, fontSize ? fontSizeSignalConfig(fontSize) : {}, restConfig || {});\n // mergeConfig doesn't recurse and overrides object values.\n if (selection) {\n writeConfig(mergedConfig, 'selection', selection, true);\n }\n var outputConfig = omit(mergedConfig, configPropsWithExpr);\n for (var _i = 0, _arr = ['background', 'lineBreak', 'padding']; _i < _arr.length; _i++) {\n var prop = _arr[_i];\n if (mergedConfig[prop]) {\n outputConfig[prop] = signalRefOrValue(mergedConfig[prop]);\n }\n }\n var _iterator3 = _createForOfIteratorHelper(mark.MARK_CONFIGS),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var markConfigType = _step3.value;\n if (mergedConfig[markConfigType]) {\n // FIXME: outputConfig[markConfigType] expects that types are replaced recursively but replaceExprRef only replaces one level deep\n outputConfig[markConfigType] = replaceExprRef(mergedConfig[markConfigType]);\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n var _iterator4 = _createForOfIteratorHelper(AXIS_CONFIGS),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var axisConfigType = _step4.value;\n if (mergedConfig[axisConfigType]) {\n outputConfig[axisConfigType] = getAxisConfigInternal(mergedConfig[axisConfigType]);\n }\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n var _iterator5 = _createForOfIteratorHelper(HEADER_CONFIGS),\n _step5;\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var headerConfigType = _step5.value;\n if (mergedConfig[headerConfigType]) {\n outputConfig[headerConfigType] = replaceExprRef(mergedConfig[headerConfigType]);\n }\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n if (mergedConfig.legend) {\n outputConfig.legend = replaceExprRef(mergedConfig.legend);\n }\n if (mergedConfig.scale) {\n outputConfig.scale = replaceExprRef(mergedConfig.scale);\n }\n if (mergedConfig.style) {\n outputConfig.style = getStyleConfigInternal(mergedConfig.style);\n }\n if (mergedConfig.title) {\n outputConfig.title = replaceExprRef(mergedConfig.title);\n }\n if (mergedConfig.view) {\n outputConfig.view = replaceExprRef(mergedConfig.view);\n }\n return outputConfig;\n}\nvar MARK_STYLES = new Set(['view'].concat(_toConsumableArray(PRIMITIVE_MARKS)));\nvar VL_ONLY_CONFIG_PROPERTIES = ['color', 'fontSize', 'background', 'padding', 'facet', 'concat', 'numberFormat', 'numberFormatType', 'normalizedNumberFormat', 'normalizedNumberFormatType', 'timeFormat', 'countTitle', 'header', 'axisQuantitative', 'axisTemporal', 'axisDiscrete', 'axisPoint', 'axisXBand', 'axisXPoint', 'axisXDiscrete', 'axisXQuantitative', 'axisXTemporal', 'axisYBand', 'axisYPoint', 'axisYDiscrete', 'axisYQuantitative', 'axisYTemporal', 'scale', 'selection', 'overlay' // FIXME: Redesign and unhide this\n];\n\nvar VL_ONLY_ALL_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX = _objectSpread({\n view: ['continuousWidth', 'continuousHeight', 'discreteWidth', 'discreteHeight', 'step']\n}, VL_ONLY_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX);\nexport function stripAndRedirectConfig(config) {\n config = duplicate(config);\n var _iterator6 = _createForOfIteratorHelper(VL_ONLY_CONFIG_PROPERTIES),\n _step6;\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var _prop4 = _step6.value;\n delete config[_prop4];\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n if (config.axis) {\n // delete condition axis config\n for (var prop in config.axis) {\n if (isConditionalAxisValue(config.axis[prop])) {\n delete config.axis[prop];\n }\n }\n }\n if (config.legend) {\n var _iterator7 = _createForOfIteratorHelper(VL_ONLY_LEGEND_CONFIG),\n _step7;\n try {\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n var _prop = _step7.value;\n delete config.legend[_prop];\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n }\n // Remove Vega-Lite only generic mark config\n if (config.mark) {\n var _iterator8 = _createForOfIteratorHelper(VL_ONLY_MARK_CONFIG_PROPERTIES),\n _step8;\n try {\n for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {\n var _prop2 = _step8.value;\n delete config.mark[_prop2];\n }\n } catch (err) {\n _iterator8.e(err);\n } finally {\n _iterator8.f();\n }\n if (config.mark.tooltip && isObject(config.mark.tooltip)) {\n delete config.mark.tooltip;\n }\n }\n if (config.params) {\n config.signals = (config.signals || []).concat(assembleParameterSignals(config.params));\n delete config.params;\n }\n var _iterator9 = _createForOfIteratorHelper(MARK_STYLES),\n _step9;\n try {\n for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {\n var markType = _step9.value;\n // Remove Vega-Lite-only mark config\n var _iterator11 = _createForOfIteratorHelper(VL_ONLY_MARK_CONFIG_PROPERTIES),\n _step11;\n try {\n for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {\n var _prop6 = _step11.value;\n delete config[markType][_prop6];\n }\n // Remove Vega-Lite only mark-specific config\n } catch (err) {\n _iterator11.e(err);\n } finally {\n _iterator11.f();\n }\n var vlOnlyMarkSpecificConfigs = VL_ONLY_ALL_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX[markType];\n if (vlOnlyMarkSpecificConfigs) {\n var _iterator12 = _createForOfIteratorHelper(vlOnlyMarkSpecificConfigs),\n _step12;\n try {\n for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {\n var _prop5 = _step12.value;\n delete config[markType][_prop5];\n }\n } catch (err) {\n _iterator12.e(err);\n } finally {\n _iterator12.f();\n }\n }\n // Redirect mark config to config.style so that mark config only affect its own mark type\n // without affecting other marks that share the same underlying Vega marks.\n // For example, config.rect should not affect bar marks.\n redirectConfigToStyleConfig(config, markType);\n }\n } catch (err) {\n _iterator9.e(err);\n } finally {\n _iterator9.f();\n }\n var _iterator10 = _createForOfIteratorHelper(getAllCompositeMarks()),\n _step10;\n try {\n for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {\n var m = _step10.value;\n // Clean up the composite mark config as we don't need them in the output specs anymore\n delete config[m];\n }\n } catch (err) {\n _iterator10.e(err);\n } finally {\n _iterator10.f();\n }\n redirectTitleConfig(config);\n // Remove empty config objects.\n for (var _prop3 in config) {\n if (isObject(config[_prop3]) && isEmpty(config[_prop3])) {\n delete config[_prop3];\n }\n }\n return isEmpty(config) ? undefined : config;\n}\n/**\n *\n * Redirect config.title -- so that title config do not affect header labels,\n * which also uses `title` directive to implement.\n *\n * For subtitle configs in config.title, keep them in config.title as header titles never have subtitles.\n */\nfunction redirectTitleConfig(config) {\n var _extractTitleConfig = extractTitleConfig(config.title),\n titleMarkConfig = _extractTitleConfig.titleMarkConfig,\n subtitleMarkConfig = _extractTitleConfig.subtitleMarkConfig,\n subtitle = _extractTitleConfig.subtitle;\n // set config.style if title/subtitleMarkConfig is not an empty object\n if (!isEmpty(titleMarkConfig)) {\n config.style['group-title'] = _objectSpread(_objectSpread({}, config.style['group-title']), titleMarkConfig);\n }\n if (!isEmpty(subtitleMarkConfig)) {\n config.style['group-subtitle'] = _objectSpread(_objectSpread({}, config.style['group-subtitle']), subtitleMarkConfig);\n }\n // subtitle part can stay in config.title since header titles do not use subtitle\n if (!isEmpty(subtitle)) {\n config.title = subtitle;\n } else {\n delete config.title;\n }\n}\nfunction redirectConfigToStyleConfig(config, prop,\n// string = composite mark\ntoProp, compositeMarkPart) {\n var _toProp;\n var propConfig = compositeMarkPart ? config[prop][compositeMarkPart] : config[prop];\n if (prop === 'view') {\n toProp = 'cell'; // View's default style is \"cell\"\n }\n\n var style = _objectSpread(_objectSpread({}, propConfig), config.style[(_toProp = toProp) !== null && _toProp !== void 0 ? _toProp : prop]);\n // set config.style if it is not an empty object\n if (!isEmpty(style)) {\n var _toProp2;\n config.style[(_toProp2 = toProp) !== null && _toProp2 !== void 0 ? _toProp2 : prop] = style;\n }\n if (!compositeMarkPart) {\n // For composite mark, so don't delete the whole config yet as we have to do multiple redirections.\n delete config[prop];\n }\n}","export function isLayerSpec(spec) {\n return 'layer' in spec;\n}","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nvar _excluded = [\"concat\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport * as log from '../log';\nimport { isConcatSpec, isHConcatSpec, isVConcatSpec } from './concat';\nimport { isFacetSpec } from './facet';\nimport { isLayerSpec } from './layer';\nimport { isRepeatSpec } from './repeat';\nimport { isUnitSpec } from './unit';\nexport var SpecMapper = /*#__PURE__*/function () {\n function SpecMapper() {\n _classCallCheck(this, SpecMapper);\n }\n _createClass(SpecMapper, [{\n key: \"map\",\n value: function map(spec, params) {\n if (isFacetSpec(spec)) {\n return this.mapFacet(spec, params);\n } else if (isRepeatSpec(spec)) {\n return this.mapRepeat(spec, params);\n } else if (isHConcatSpec(spec)) {\n return this.mapHConcat(spec, params);\n } else if (isVConcatSpec(spec)) {\n return this.mapVConcat(spec, params);\n } else if (isConcatSpec(spec)) {\n return this.mapConcat(spec, params);\n } else {\n return this.mapLayerOrUnit(spec, params);\n }\n }\n }, {\n key: \"mapLayerOrUnit\",\n value: function mapLayerOrUnit(spec, params) {\n if (isLayerSpec(spec)) {\n return this.mapLayer(spec, params);\n } else if (isUnitSpec(spec)) {\n return this.mapUnit(spec, params);\n }\n throw new Error(log.message.invalidSpec(spec));\n }\n }, {\n key: \"mapLayer\",\n value: function mapLayer(spec, params) {\n var _this = this;\n return _objectSpread(_objectSpread({}, spec), {}, {\n layer: spec.layer.map(function (subspec) {\n return _this.mapLayerOrUnit(subspec, params);\n })\n });\n }\n }, {\n key: \"mapHConcat\",\n value: function mapHConcat(spec, params) {\n var _this2 = this;\n return _objectSpread(_objectSpread({}, spec), {}, {\n hconcat: spec.hconcat.map(function (subspec) {\n return _this2.map(subspec, params);\n })\n });\n }\n }, {\n key: \"mapVConcat\",\n value: function mapVConcat(spec, params) {\n var _this3 = this;\n return _objectSpread(_objectSpread({}, spec), {}, {\n vconcat: spec.vconcat.map(function (subspec) {\n return _this3.map(subspec, params);\n })\n });\n }\n }, {\n key: \"mapConcat\",\n value: function mapConcat(spec, params) {\n var _this4 = this;\n var concat = spec.concat,\n rest = _objectWithoutProperties(spec, _excluded);\n return _objectSpread(_objectSpread({}, rest), {}, {\n concat: concat.map(function (subspec) {\n return _this4.map(subspec, params);\n })\n });\n }\n }, {\n key: \"mapFacet\",\n value: function mapFacet(spec, params) {\n return _objectSpread(_objectSpread({}, spec), {}, {\n // TODO: remove \"any\" once we support all facet listed in https://github.com/vega/vega-lite/issues/2760\n spec: this.map(spec.spec, params)\n });\n }\n }, {\n key: \"mapRepeat\",\n value: function mapRepeat(spec, params) {\n return _objectSpread(_objectSpread({}, spec), {}, {\n // as any is required here since TS cannot infer that the output type satisfies the input type\n spec: this.map(spec.spec, params)\n });\n }\n }]);\n return SpecMapper;\n}();","import { isArray } from 'vega-util';\nexport function isRepeatSpec(spec) {\n return 'repeat' in spec;\n}\nexport function isLayerRepeatSpec(spec) {\n return !isArray(spec.repeat) && spec.repeat['layer'];\n}","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { array, isBoolean } from 'vega-util';\nimport { SUM_OPS } from './aggregate';\nimport { getSecondaryRangeChannel, NONPOSITION_CHANNELS } from './channel';\nimport { channelDefType, getFieldDef, isFieldDef, isFieldOrDatumDef, vgField } from './channeldef';\nimport { channelHasField, isAggregate } from './encoding';\nimport * as log from './log';\nimport { ARC, AREA, BAR, CIRCLE, isMarkDef, isPathMark, LINE, POINT, RULE, SQUARE, TEXT, TICK } from './mark';\nimport { ScaleType } from './scale';\nvar STACK_OFFSET_INDEX = {\n zero: 1,\n center: 1,\n normalize: 1\n};\nexport function isStackOffset(s) {\n return s in STACK_OFFSET_INDEX;\n}\nexport var STACKABLE_MARKS = new Set([ARC, BAR, AREA, RULE, POINT, CIRCLE, SQUARE, LINE, TEXT, TICK]);\nexport var STACK_BY_DEFAULT_MARKS = new Set([BAR, AREA, ARC]);\nfunction isUnbinnedQuantitative(channelDef) {\n return isFieldDef(channelDef) && channelDefType(channelDef) === 'quantitative' && !channelDef.bin;\n}\nfunction potentialStackedChannel(encoding, x, _ref) {\n var orient = _ref.orient,\n mark = _ref.type;\n var y = x === 'x' ? 'y' : 'radius';\n var isCartesian = x === 'x';\n var xDef = encoding[x];\n var yDef = encoding[y];\n if (isFieldDef(xDef) && isFieldDef(yDef)) {\n if (isUnbinnedQuantitative(xDef) && isUnbinnedQuantitative(yDef)) {\n if (xDef.stack) {\n return x;\n } else if (yDef.stack) {\n return y;\n }\n var xAggregate = isFieldDef(xDef) && !!xDef.aggregate;\n var yAggregate = isFieldDef(yDef) && !!yDef.aggregate;\n // if there is no explicit stacking, only apply stack if there is only one aggregate for x or y\n if (xAggregate !== yAggregate) {\n return xAggregate ? x : y;\n }\n if (isCartesian && ['bar', 'area'].includes(mark)) {\n if (orient === 'vertical') {\n return y;\n } else if (orient === 'horizontal') {\n return x;\n }\n }\n } else if (isUnbinnedQuantitative(xDef)) {\n return x;\n } else if (isUnbinnedQuantitative(yDef)) {\n return y;\n }\n } else if (isUnbinnedQuantitative(xDef)) {\n return x;\n } else if (isUnbinnedQuantitative(yDef)) {\n return y;\n }\n return undefined;\n}\nfunction getDimensionChannel(channel) {\n switch (channel) {\n case 'x':\n return 'y';\n case 'y':\n return 'x';\n case 'theta':\n return 'radius';\n case 'radius':\n return 'theta';\n }\n}\nexport function stack(m, encoding) {\n var _stackedFieldDef$scal, _stackedFieldDef$scal2;\n var markDef = isMarkDef(m) ? m : {\n type: m\n };\n var mark = markDef.type;\n // Should have stackable mark\n if (!STACKABLE_MARKS.has(mark)) {\n return null;\n }\n // Run potential stacked twice, one for Cartesian and another for Polar,\n // so text marks can be stacked in any of the coordinates.\n // Note: The logic here is not perfectly correct. If we want to support stacked dot plots where each dot is a pie chart with label, we have to change the stack logic here to separate Cartesian stacking for polar stacking.\n // However, since we probably never want to do that, let's just note the limitation here.\n var fieldChannel = potentialStackedChannel(encoding, 'x', markDef) || potentialStackedChannel(encoding, 'theta', markDef);\n if (!fieldChannel) {\n return null;\n }\n var stackedFieldDef = encoding[fieldChannel];\n var stackedField = isFieldDef(stackedFieldDef) ? vgField(stackedFieldDef, {}) : undefined;\n var dimensionChannel = getDimensionChannel(fieldChannel);\n var groupbyChannels = [];\n var groupbyFields = new Set();\n if (encoding[dimensionChannel]) {\n var dimensionDef = encoding[dimensionChannel];\n var dimensionField = isFieldDef(dimensionDef) ? vgField(dimensionDef, {}) : undefined;\n if (dimensionField && dimensionField !== stackedField) {\n // avoid grouping by the stacked field\n groupbyChannels.push(dimensionChannel);\n groupbyFields.add(dimensionField);\n }\n var dimensionOffsetChannel = dimensionChannel === 'x' ? 'xOffset' : 'yOffset';\n var dimensionOffsetDef = encoding[dimensionOffsetChannel];\n var dimensionOffsetField = isFieldDef(dimensionOffsetDef) ? vgField(dimensionOffsetDef, {}) : undefined;\n if (dimensionOffsetField && dimensionOffsetField !== stackedField) {\n // avoid grouping by the stacked field\n groupbyChannels.push(dimensionOffsetChannel);\n groupbyFields.add(dimensionOffsetField);\n }\n }\n // If the dimension has offset, don't stack anymore\n // Should have grouping level of detail that is different from the dimension field\n var stackBy = NONPOSITION_CHANNELS.reduce(function (sc, channel) {\n // Ignore tooltip in stackBy (https://github.com/vega/vega-lite/issues/4001)\n if (channel !== 'tooltip' && channelHasField(encoding, channel)) {\n var channelDef = encoding[channel];\n var _iterator = _createForOfIteratorHelper(array(channelDef)),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var cDef = _step.value;\n var fieldDef = getFieldDef(cDef);\n if (fieldDef.aggregate) {\n continue;\n }\n // Check whether the channel's field is identical to x/y's field or if the channel is a repeat\n var f = vgField(fieldDef, {});\n if (\n // if fielddef is a repeat, just include it in the stack by\n !f ||\n // otherwise, the field must be different from the groupBy fields.\n !groupbyFields.has(f)) {\n sc.push({\n channel: channel,\n fieldDef: fieldDef\n });\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n return sc;\n }, []);\n // Automatically determine offset\n var offset;\n if (stackedFieldDef.stack !== undefined) {\n if (isBoolean(stackedFieldDef.stack)) {\n offset = stackedFieldDef.stack ? 'zero' : null;\n } else {\n offset = stackedFieldDef.stack;\n }\n } else if (STACK_BY_DEFAULT_MARKS.has(mark)) {\n offset = 'zero';\n }\n if (!offset || !isStackOffset(offset)) {\n return null;\n }\n if (isAggregate(encoding) && stackBy.length === 0) {\n return null;\n }\n // warn when stacking non-linear\n if (stackedFieldDef !== null && stackedFieldDef !== void 0 && (_stackedFieldDef$scal = stackedFieldDef.scale) !== null && _stackedFieldDef$scal !== void 0 && _stackedFieldDef$scal.type && (stackedFieldDef === null || stackedFieldDef === void 0 || (_stackedFieldDef$scal2 = stackedFieldDef.scale) === null || _stackedFieldDef$scal2 === void 0 ? void 0 : _stackedFieldDef$scal2.type) !== ScaleType.LINEAR) {\n if (stackedFieldDef !== null && stackedFieldDef !== void 0 && stackedFieldDef.stack) {\n log.warn(log.message.cannotStackNonLinearScale(stackedFieldDef.scale.type));\n }\n return null;\n }\n // Check if it is a ranged mark\n if (isFieldOrDatumDef(encoding[getSecondaryRangeChannel(fieldChannel)])) {\n if (stackedFieldDef.stack !== undefined) {\n log.warn(log.message.cannotStackRangedMark(fieldChannel));\n }\n return null;\n }\n // Warn if stacking non-summative aggregate\n if (isFieldDef(stackedFieldDef) && stackedFieldDef.aggregate && !SUM_OPS.has(stackedFieldDef.aggregate)) {\n log.warn(log.message.stackNonSummativeAggregate(stackedFieldDef.aggregate));\n }\n return {\n groupbyChannels: groupbyChannels,\n groupbyFields: groupbyFields,\n fieldChannel: fieldChannel,\n impute: stackedFieldDef.impute === null ? false : isPathMark(mark),\n stackBy: stackBy,\n offset: offset\n };\n}","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { isBinned, isBinning } from '../../bin';\nimport { isFieldDef, isNumericDataDef, isUnbinnedQuantitativeFieldOrDatumDef, isTypedFieldDef } from '../../channeldef';\nimport { isAggregate } from '../../encoding';\nimport { replaceExprRef } from '../../expr';\nimport * as log from '../../log';\nimport { AREA, BAR, BAR_CORNER_RADIUS_INDEX as BAR_CORNER_RADIUS_END_INDEX, CIRCLE, IMAGE, LINE, POINT, RECT, RULE, SQUARE, TEXT, TICK } from '../../mark';\nimport { QUANTITATIVE, TEMPORAL } from '../../type';\nimport { contains, getFirstDefined } from '../../util';\nimport { getMarkConfig, getMarkPropOrConfig } from '../common';\nexport function initMarkdef(originalMarkDef, encoding, config) {\n // FIXME: markDef expects that exprRefs are replaced recursively but replaceExprRef only replaces the top level\n var markDef = replaceExprRef(originalMarkDef);\n // set orient, which can be overridden by rules as sometimes the specified orient is invalid.\n var specifiedOrient = getMarkPropOrConfig('orient', markDef, config);\n markDef.orient = orient(markDef.type, encoding, specifiedOrient);\n if (specifiedOrient !== undefined && specifiedOrient !== markDef.orient) {\n log.warn(log.message.orientOverridden(markDef.orient, specifiedOrient));\n }\n if (markDef.type === 'bar' && markDef.orient) {\n var cornerRadiusEnd = getMarkPropOrConfig('cornerRadiusEnd', markDef, config);\n if (cornerRadiusEnd !== undefined) {\n var newProps = markDef.orient === 'horizontal' && encoding.x2 || markDef.orient === 'vertical' && encoding.y2 ? ['cornerRadius'] : BAR_CORNER_RADIUS_END_INDEX[markDef.orient];\n var _iterator = _createForOfIteratorHelper(newProps),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var newProp = _step.value;\n markDef[newProp] = cornerRadiusEnd;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n if (markDef.cornerRadiusEnd !== undefined) {\n delete markDef.cornerRadiusEnd; // no need to keep the original cap cornerRadius\n }\n }\n }\n // set opacity and filled if not specified in mark config\n var specifiedOpacity = getMarkPropOrConfig('opacity', markDef, config);\n if (specifiedOpacity === undefined) {\n markDef.opacity = opacity(markDef.type, encoding);\n }\n // set cursor, which should be pointer if href channel is present unless otherwise specified\n var specifiedCursor = getMarkPropOrConfig('cursor', markDef, config);\n if (specifiedCursor === undefined) {\n markDef.cursor = cursor(markDef, encoding, config);\n }\n return markDef;\n}\nfunction cursor(markDef, encoding, config) {\n if (encoding.href || markDef.href || getMarkPropOrConfig('href', markDef, config)) {\n return 'pointer';\n }\n return markDef.cursor;\n}\nfunction opacity(mark, encoding) {\n if (contains([POINT, TICK, CIRCLE, SQUARE], mark)) {\n // point-based marks\n if (!isAggregate(encoding)) {\n return 0.7;\n }\n }\n return undefined;\n}\nexport function defaultFilled(markDef, config, _ref) {\n var graticule = _ref.graticule;\n if (graticule) {\n return false;\n }\n var filledConfig = getMarkConfig('filled', markDef, config);\n var mark = markDef.type;\n return getFirstDefined(filledConfig, mark !== POINT && mark !== LINE && mark !== RULE);\n}\nfunction orient(mark, encoding, specifiedOrient) {\n switch (mark) {\n case POINT:\n case CIRCLE:\n case SQUARE:\n case TEXT:\n case RECT:\n case IMAGE:\n // orient is meaningless for these marks.\n return undefined;\n }\n var x = encoding.x,\n y = encoding.y,\n x2 = encoding.x2,\n y2 = encoding.y2;\n switch (mark) {\n case BAR:\n if (isFieldDef(x) && (isBinned(x.bin) || isFieldDef(y) && y.aggregate && !x.aggregate)) {\n return 'vertical';\n }\n if (isFieldDef(y) && (isBinned(y.bin) || isFieldDef(x) && x.aggregate && !y.aggregate)) {\n return 'horizontal';\n }\n if (y2 || x2) {\n // Ranged bar does not always have clear orientation, so we allow overriding\n if (specifiedOrient) {\n return specifiedOrient;\n }\n // If y is range and x is non-range, non-bin Q\n if (!x2) {\n if (isFieldDef(x) && x.type === QUANTITATIVE && !isBinning(x.bin) || isNumericDataDef(x)) {\n if (isFieldDef(y) && isBinned(y.bin)) {\n return 'horizontal';\n }\n }\n return 'vertical';\n }\n // If x is range and y is non-range, non-bin Q\n if (!y2) {\n if (isFieldDef(y) && y.type === QUANTITATIVE && !isBinning(y.bin) || isNumericDataDef(y)) {\n if (isFieldDef(x) && isBinned(x.bin)) {\n return 'vertical';\n }\n }\n return 'horizontal';\n }\n }\n // falls through\n case RULE:\n // return undefined for line segment rule and bar with both axis ranged\n // we have to ignore the case that the data are already binned\n if (x2 && !(isFieldDef(x) && isBinned(x.bin)) && y2 && !(isFieldDef(y) && isBinned(y.bin))) {\n return undefined;\n }\n // falls through\n case AREA:\n // If there are range for both x and y, y (vertical) has higher precedence.\n if (y2) {\n if (isFieldDef(y) && isBinned(y.bin)) {\n return 'horizontal';\n } else {\n return 'vertical';\n }\n } else if (x2) {\n if (isFieldDef(x) && isBinned(x.bin)) {\n return 'vertical';\n } else {\n return 'horizontal';\n }\n } else if (mark === RULE) {\n if (x && !y) {\n return 'vertical';\n } else if (y && !x) {\n return 'horizontal';\n }\n }\n // falls through\n case LINE:\n case TICK:\n {\n var xIsMeasure = isUnbinnedQuantitativeFieldOrDatumDef(x);\n var yIsMeasure = isUnbinnedQuantitativeFieldOrDatumDef(y);\n if (specifiedOrient) {\n return specifiedOrient;\n } else if (xIsMeasure && !yIsMeasure) {\n // Tick is opposite to bar, line, area\n return mark !== 'tick' ? 'horizontal' : 'vertical';\n } else if (!xIsMeasure && yIsMeasure) {\n // Tick is opposite to bar, line, area\n return mark !== 'tick' ? 'vertical' : 'horizontal';\n } else if (xIsMeasure && yIsMeasure) {\n return 'vertical';\n } else {\n var xIsTemporal = isTypedFieldDef(x) && x.type === TEMPORAL;\n var yIsTemporal = isTypedFieldDef(y) && y.type === TEMPORAL;\n // x: T, y: N --> vertical tick\n if (xIsTemporal && !yIsTemporal) {\n return 'vertical';\n } else if (!xIsTemporal && yIsTemporal) {\n return 'horizontal';\n }\n }\n return undefined;\n }\n }\n return 'vertical';\n}","import _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"point\", \"line\"],\n _excluded2 = [\"params\", \"projection\", \"mark\", \"name\", \"encoding\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { isObject } from 'vega-util';\nimport { normalizeEncoding } from '../encoding';\nimport { isMarkDef } from '../mark';\nimport { isUnitSpec } from '../spec/unit';\nimport { stack } from '../stack';\nimport { keys, omit, pick } from '../util';\nimport { initMarkdef } from '../compile/mark/init';\nfunction dropLineAndPoint(markDef) {\n var _point = markDef.point,\n _line = markDef.line,\n mark = _objectWithoutProperties(markDef, _excluded);\n return keys(mark).length > 1 ? mark : mark.type;\n}\nfunction dropLineAndPointFromConfig(config) {\n for (var _i = 0, _arr = ['line', 'area', 'rule', 'trail']; _i < _arr.length; _i++) {\n var mark = _arr[_i];\n if (config[mark]) {\n config = _objectSpread(_objectSpread({}, config), {}, _defineProperty({}, mark, omit(config[mark], ['point', 'line'])));\n }\n }\n return config;\n}\nfunction getPointOverlay(markDef) {\n var markConfig = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var encoding = arguments.length > 2 ? arguments[2] : undefined;\n if (markDef.point === 'transparent') {\n return {\n opacity: 0\n };\n } else if (markDef.point) {\n // truthy : true or object\n return isObject(markDef.point) ? markDef.point : {};\n } else if (markDef.point !== undefined) {\n // false or null\n return null;\n } else {\n // undefined (not disabled)\n if (markConfig.point || encoding.shape) {\n // enable point overlay if config[mark].point is truthy or if encoding.shape is provided\n return isObject(markConfig.point) ? markConfig.point : {};\n }\n // markDef.point is defined as falsy\n return undefined;\n }\n}\nfunction getLineOverlay(markDef) {\n var markConfig = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (markDef.line) {\n // true or object\n return markDef.line === true ? {} : markDef.line;\n } else if (markDef.line !== undefined) {\n // false or null\n return null;\n } else {\n // undefined (not disabled)\n if (markConfig.line) {\n // enable line overlay if config[mark].line is truthy\n return markConfig.line === true ? {} : markConfig.line;\n }\n // markDef.point is defined as falsy\n return undefined;\n }\n}\nexport var PathOverlayNormalizer = /*#__PURE__*/function () {\n function PathOverlayNormalizer() {\n _classCallCheck(this, PathOverlayNormalizer);\n this.name = 'path-overlay';\n }\n _createClass(PathOverlayNormalizer, [{\n key: \"hasMatchingType\",\n value: function hasMatchingType(spec, config) {\n if (isUnitSpec(spec)) {\n var mark = spec.mark,\n encoding = spec.encoding;\n var markDef = isMarkDef(mark) ? mark : {\n type: mark\n };\n switch (markDef.type) {\n case 'line':\n case 'rule':\n case 'trail':\n return !!getPointOverlay(markDef, config[markDef.type], encoding);\n case 'area':\n return (\n // false / null are also included as we want to remove the properties\n !!getPointOverlay(markDef, config[markDef.type], encoding) || !!getLineOverlay(markDef, config[markDef.type])\n );\n }\n }\n return false;\n }\n }, {\n key: \"run\",\n value: function run(spec, normParams, normalize) {\n var config = normParams.config;\n var params = spec.params,\n projection = spec.projection,\n mark = spec.mark,\n name = spec.name,\n e = spec.encoding,\n outerSpec = _objectWithoutProperties(spec, _excluded2);\n // Need to call normalizeEncoding because we need the inferred types to correctly determine stack\n var encoding = normalizeEncoding(e, config);\n var markDef = isMarkDef(mark) ? mark : {\n type: mark\n };\n var pointOverlay = getPointOverlay(markDef, config[markDef.type], encoding);\n var lineOverlay = markDef.type === 'area' && getLineOverlay(markDef, config[markDef.type]);\n var layer = [_objectSpread(_objectSpread({\n name: name\n }, params ? {\n params: params\n } : {}), {}, {\n mark: dropLineAndPoint(_objectSpread(_objectSpread({}, markDef.type === 'area' && markDef.opacity === undefined && markDef.fillOpacity === undefined ? {\n opacity: 0.7\n } : {}), markDef)),\n // drop shape from encoding as this might be used to trigger point overlay\n encoding: omit(encoding, ['shape'])\n })];\n // FIXME: determine rules for applying selections.\n // Need to copy stack config to overlayed layer\n // FIXME: normalizer shouldn't call `initMarkdef`, a method from an init phase.\n var stackProps = stack(initMarkdef(markDef, encoding, config), encoding);\n var overlayEncoding = encoding;\n if (stackProps) {\n var stackFieldChannel = stackProps.fieldChannel,\n offset = stackProps.offset;\n overlayEncoding = _objectSpread(_objectSpread({}, encoding), {}, _defineProperty({}, stackFieldChannel, _objectSpread(_objectSpread({}, encoding[stackFieldChannel]), offset ? {\n stack: offset\n } : {})));\n }\n // overlay line layer should be on the edge of area but passing y2/x2 makes\n // it as \"rule\" mark so that it draws unwanted vertical/horizontal lines.\n // point overlay also should not have y2/x2 as it does not support.\n overlayEncoding = omit(overlayEncoding, ['y2', 'x2']);\n if (lineOverlay) {\n layer.push(_objectSpread(_objectSpread({}, projection ? {\n projection: projection\n } : {}), {}, {\n mark: _objectSpread(_objectSpread({\n type: 'line'\n }, pick(markDef, ['clip', 'interpolate', 'tension', 'tooltip'])), lineOverlay),\n encoding: overlayEncoding\n }));\n }\n if (pointOverlay) {\n layer.push(_objectSpread(_objectSpread({}, projection ? {\n projection: projection\n } : {}), {}, {\n mark: _objectSpread(_objectSpread({\n type: 'point',\n opacity: 1,\n filled: true\n }, pick(markDef, ['clip', 'tooltip'])), pointOverlay),\n encoding: overlayEncoding\n }));\n }\n return normalize(_objectSpread(_objectSpread({}, outerSpec), {}, {\n layer: layer\n }), _objectSpread(_objectSpread({}, normParams), {}, {\n config: dropLineAndPointFromConfig(config)\n }));\n }\n }]);\n return PathOverlayNormalizer;\n}();","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nvar _excluded = [\"condition\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { hasOwnProperty, isArray } from 'vega-util';\nimport { hasConditionalFieldOrDatumDef, isConditionalDef, isFieldDef, isFieldOrDatumDef, isRepeatRef, isSortableFieldDef } from '../channeldef';\nimport * as log from '../log';\nimport { isSortField } from '../sort';\nimport { isFacetMapping } from '../spec/facet';\nexport function replaceRepeaterInFacet(facet, repeater) {\n if (!repeater) {\n return facet;\n }\n if (isFacetMapping(facet)) {\n return replaceRepeaterInMapping(facet, repeater);\n }\n return replaceRepeaterInFieldDef(facet, repeater);\n}\nexport function replaceRepeaterInEncoding(encoding, repeater) {\n if (!repeater) {\n return encoding;\n }\n return replaceRepeaterInMapping(encoding, repeater);\n}\n/**\n * Replaces repeated value and returns if the repeated value is valid.\n */\nfunction replaceRepeatInProp(prop, o, repeater) {\n var val = o[prop];\n if (isRepeatRef(val)) {\n if (val.repeat in repeater) {\n return _objectSpread(_objectSpread({}, o), {}, _defineProperty({}, prop, repeater[val.repeat]));\n } else {\n log.warn(log.message.noSuchRepeatedValue(val.repeat));\n return undefined;\n }\n }\n return o;\n}\n/**\n * Replace repeater values in a field def with the concrete field name.\n */\nfunction replaceRepeaterInFieldDef(fieldDef, repeater) {\n fieldDef = replaceRepeatInProp('field', fieldDef, repeater);\n if (fieldDef === undefined) {\n // the field def should be ignored\n return undefined;\n } else if (fieldDef === null) {\n return null;\n }\n if (isSortableFieldDef(fieldDef) && isSortField(fieldDef.sort)) {\n var sort = replaceRepeatInProp('field', fieldDef.sort, repeater);\n fieldDef = _objectSpread(_objectSpread({}, fieldDef), sort ? {\n sort: sort\n } : {});\n }\n return fieldDef;\n}\nfunction replaceRepeaterInFieldOrDatumDef(def, repeater) {\n if (isFieldDef(def)) {\n return replaceRepeaterInFieldDef(def, repeater);\n } else {\n var datumDef = replaceRepeatInProp('datum', def, repeater);\n if (datumDef !== def && !datumDef.type) {\n datumDef.type = 'nominal';\n }\n return datumDef;\n }\n}\nfunction replaceRepeaterInChannelDef(channelDef, repeater) {\n if (isFieldOrDatumDef(channelDef)) {\n var fd = replaceRepeaterInFieldOrDatumDef(channelDef, repeater);\n if (fd) {\n return fd;\n } else if (isConditionalDef(channelDef)) {\n return {\n condition: channelDef.condition\n };\n }\n } else {\n if (hasConditionalFieldOrDatumDef(channelDef)) {\n var _fd = replaceRepeaterInFieldOrDatumDef(channelDef.condition, repeater);\n if (_fd) {\n return _objectSpread(_objectSpread({}, channelDef), {}, {\n condition: _fd\n });\n } else {\n var condition = channelDef.condition,\n channelDefWithoutCondition = _objectWithoutProperties(channelDef, _excluded);\n return channelDefWithoutCondition;\n }\n }\n return channelDef;\n }\n return undefined;\n}\nfunction replaceRepeaterInMapping(mapping, repeater) {\n var out = {};\n for (var channel in mapping) {\n if (hasOwnProperty(mapping, channel)) {\n var channelDef = mapping[channel];\n if (isArray(channelDef)) {\n // array cannot have condition\n out[channel] = channelDef // somehow we need to cast it here\n .map(function (cd) {\n return replaceRepeaterInChannelDef(cd, repeater);\n }).filter(function (cd) {\n return cd;\n });\n } else {\n var cd = replaceRepeaterInChannelDef(channelDef, repeater);\n if (cd !== undefined) {\n out[channel] = cd;\n }\n }\n }\n }\n return out;\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { isObject } from 'vega-util';\nimport { isBinned } from '../bin';\nimport { getMainRangeChannel, SECONDARY_RANGE_CHANNEL } from '../channel';\nimport { isDatumDef, isFieldDef } from '../channeldef';\nimport * as log from '../log';\nimport { isMarkDef } from '../mark';\nimport { isUnitSpec } from '../spec/unit';\nexport var RuleForRangedLineNormalizer = /*#__PURE__*/function () {\n function RuleForRangedLineNormalizer() {\n _classCallCheck(this, RuleForRangedLineNormalizer);\n this.name = 'RuleForRangedLine';\n }\n _createClass(RuleForRangedLineNormalizer, [{\n key: \"hasMatchingType\",\n value: function hasMatchingType(spec) {\n if (isUnitSpec(spec)) {\n var encoding = spec.encoding,\n mark = spec.mark;\n if (mark === 'line' || isMarkDef(mark) && mark.type === 'line') {\n var _iterator = _createForOfIteratorHelper(SECONDARY_RANGE_CHANNEL),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var channel = _step.value;\n var mainChannel = getMainRangeChannel(channel);\n var mainChannelDef = encoding[mainChannel];\n if (encoding[channel]) {\n if (isFieldDef(mainChannelDef) && !isBinned(mainChannelDef.bin) || isDatumDef(mainChannelDef)) {\n return true;\n }\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n }\n return false;\n }\n }, {\n key: \"run\",\n value: function run(spec, params, normalize) {\n var encoding = spec.encoding,\n mark = spec.mark;\n log.warn(log.message.lineWithRange(!!encoding.x2, !!encoding.y2));\n return normalize(_objectSpread(_objectSpread({}, spec), {}, {\n mark: isObject(mark) ? _objectSpread(_objectSpread({}, mark), {}, {\n type: 'rule'\n }) : 'rule'\n }), params);\n }\n }]);\n return RuleForRangedLineNormalizer;\n}();","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _get from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/get.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nvar _excluded = [\"repeat\", \"spec\"],\n _excluded2 = [\"repeat\", \"spec\", \"data\"],\n _excluded3 = [\"row\", \"column\", \"facet\"],\n _excluded4 = [\"mark\", \"width\", \"projection\", \"height\", \"view\", \"params\", \"encoding\"],\n _excluded5 = [\"align\", \"center\", \"spacing\", \"columns\"],\n _excluded6 = [\"align\", \"center\", \"spacing\", \"columns\"],\n _excluded7 = [\"parentEncoding\", \"parentProjection\"],\n _excluded8 = [\"encoding\", \"projection\"];\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { isArray } from 'vega-util';\nimport { COLUMN, FACET, ROW } from '../channel';\nimport { hasConditionalFieldOrDatumDef, isFieldOrDatumDef, isValueDef } from '../channeldef';\nimport { boxPlotNormalizer } from '../compositemark/boxplot';\nimport { errorBandNormalizer } from '../compositemark/errorband';\nimport { errorBarNormalizer } from '../compositemark/errorbar';\nimport { channelHasField } from '../encoding';\nimport * as log from '../log';\nimport { isFacetMapping } from '../spec/facet';\nimport { SpecMapper } from '../spec/map';\nimport { isLayerRepeatSpec } from '../spec/repeat';\nimport { isUnitSpec } from '../spec/unit';\nimport { isEmpty, keys, omit, varName } from '../util';\nimport { isSignalRef } from '../vega.schema';\nimport { PathOverlayNormalizer } from './pathoverlay';\nimport { replaceRepeaterInEncoding, replaceRepeaterInFacet } from './repeater';\nimport { RuleForRangedLineNormalizer } from './ruleforrangedline';\nexport var CoreNormalizer = /*#__PURE__*/function (_SpecMapper) {\n _inherits(CoreNormalizer, _SpecMapper);\n var _super = _createSuper(CoreNormalizer);\n function CoreNormalizer() {\n var _this;\n _classCallCheck(this, CoreNormalizer);\n _this = _super.apply(this, arguments);\n _this.nonFacetUnitNormalizers = [boxPlotNormalizer, errorBarNormalizer, errorBandNormalizer, new PathOverlayNormalizer(), new RuleForRangedLineNormalizer()];\n return _this;\n }\n _createClass(CoreNormalizer, [{\n key: \"map\",\n value: function map(spec, params) {\n // Special handling for a faceted unit spec as it can return a facet spec, not just a layer or unit spec like a normal unit spec.\n if (isUnitSpec(spec)) {\n var hasRow = channelHasField(spec.encoding, ROW);\n var hasColumn = channelHasField(spec.encoding, COLUMN);\n var hasFacet = channelHasField(spec.encoding, FACET);\n if (hasRow || hasColumn || hasFacet) {\n return this.mapFacetedUnit(spec, params);\n }\n }\n return _get(_getPrototypeOf(CoreNormalizer.prototype), \"map\", this).call(this, spec, params);\n }\n // This is for normalizing non-facet unit\n }, {\n key: \"mapUnit\",\n value: function mapUnit(spec, params) {\n var parentEncoding = params.parentEncoding,\n parentProjection = params.parentProjection;\n var encoding = replaceRepeaterInEncoding(spec.encoding, params.repeater);\n var specWithReplacedEncoding = _objectSpread(_objectSpread(_objectSpread({}, spec), spec.name ? {\n name: [params.repeaterPrefix, spec.name].filter(function (n) {\n return n;\n }).join('_')\n } : {}), encoding ? {\n encoding: encoding\n } : {});\n if (parentEncoding || parentProjection) {\n return this.mapUnitWithParentEncodingOrProjection(specWithReplacedEncoding, params);\n }\n var normalizeLayerOrUnit = this.mapLayerOrUnit.bind(this);\n var _iterator = _createForOfIteratorHelper(this.nonFacetUnitNormalizers),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var unitNormalizer = _step.value;\n if (unitNormalizer.hasMatchingType(specWithReplacedEncoding, params.config)) {\n return unitNormalizer.run(specWithReplacedEncoding, params, normalizeLayerOrUnit);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return specWithReplacedEncoding;\n }\n }, {\n key: \"mapRepeat\",\n value: function mapRepeat(spec, params) {\n if (isLayerRepeatSpec(spec)) {\n return this.mapLayerRepeat(spec, params);\n } else {\n return this.mapNonLayerRepeat(spec, params);\n }\n }\n }, {\n key: \"mapLayerRepeat\",\n value: function mapLayerRepeat(spec, params) {\n var _this2 = this;\n var repeat = spec.repeat,\n childSpec = spec.spec,\n rest = _objectWithoutProperties(spec, _excluded);\n var row = repeat.row,\n column = repeat.column,\n layer = repeat.layer;\n var _params$repeater = params.repeater,\n repeater = _params$repeater === void 0 ? {} : _params$repeater,\n _params$repeaterPrefi = params.repeaterPrefix,\n repeaterPrefix = _params$repeaterPrefi === void 0 ? '' : _params$repeaterPrefi;\n if (row || column) {\n return this.mapRepeat(_objectSpread(_objectSpread({}, spec), {}, {\n repeat: _objectSpread(_objectSpread({}, row ? {\n row: row\n } : {}), column ? {\n column: column\n } : {}),\n spec: {\n repeat: {\n layer: layer\n },\n spec: childSpec\n }\n }), params);\n } else {\n return _objectSpread(_objectSpread({}, rest), {}, {\n layer: layer.map(function (layerValue) {\n var childRepeater = _objectSpread(_objectSpread({}, repeater), {}, {\n layer: layerValue\n });\n var childName = \"\".concat((childSpec.name ? \"\".concat(childSpec.name, \"_\") : '') + repeaterPrefix, \"child__layer_\").concat(varName(layerValue));\n var child = _this2.mapLayerOrUnit(childSpec, _objectSpread(_objectSpread({}, params), {}, {\n repeater: childRepeater,\n repeaterPrefix: childName\n }));\n child.name = childName;\n return child;\n })\n });\n }\n }\n }, {\n key: \"mapNonLayerRepeat\",\n value: function mapNonLayerRepeat(spec, params) {\n var _childSpec$data;\n var _spec = spec,\n repeat = _spec.repeat,\n childSpec = _spec.spec,\n data = _spec.data,\n remainingProperties = _objectWithoutProperties(_spec, _excluded2);\n if (!isArray(repeat) && spec.columns) {\n // is repeat with row/column\n spec = omit(spec, ['columns']);\n log.warn(log.message.columnsNotSupportByRowCol('repeat'));\n }\n var concat = [];\n var _params$repeater2 = params.repeater,\n repeater = _params$repeater2 === void 0 ? {} : _params$repeater2,\n _params$repeaterPrefi2 = params.repeaterPrefix,\n repeaterPrefix = _params$repeaterPrefi2 === void 0 ? '' : _params$repeaterPrefi2;\n var row = !isArray(repeat) && repeat.row || [repeater ? repeater.row : null];\n var column = !isArray(repeat) && repeat.column || [repeater ? repeater.column : null];\n var repeatValues = isArray(repeat) && repeat || [repeater ? repeater.repeat : null];\n // cross product\n var _iterator2 = _createForOfIteratorHelper(repeatValues),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var repeatValue = _step2.value;\n var _iterator3 = _createForOfIteratorHelper(row),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var rowValue = _step3.value;\n var _iterator4 = _createForOfIteratorHelper(column),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var columnValue = _step4.value;\n var childRepeater = {\n repeat: repeatValue,\n row: rowValue,\n column: columnValue,\n layer: repeater.layer\n };\n var childName = (childSpec.name ? \"\".concat(childSpec.name, \"_\") : '') + repeaterPrefix + 'child__' + (isArray(repeat) ? \"\".concat(varName(repeatValue)) : (repeat.row ? \"row_\".concat(varName(rowValue)) : '') + (repeat.column ? \"column_\".concat(varName(columnValue)) : ''));\n var child = this.map(childSpec, _objectSpread(_objectSpread({}, params), {}, {\n repeater: childRepeater,\n repeaterPrefix: childName\n }));\n child.name = childName;\n // we move data up\n concat.push(omit(child, ['data']));\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n var columns = isArray(repeat) ? spec.columns : repeat.column ? repeat.column.length : 1;\n return _objectSpread(_objectSpread({\n data: (_childSpec$data = childSpec.data) !== null && _childSpec$data !== void 0 ? _childSpec$data : data,\n align: 'all'\n }, remainingProperties), {}, {\n columns: columns,\n concat: concat\n });\n }\n }, {\n key: \"mapFacet\",\n value: function mapFacet(spec, params) {\n var _spec2 = spec,\n facet = _spec2.facet;\n if (isFacetMapping(facet) && spec.columns) {\n // is facet with row/column\n spec = omit(spec, ['columns']);\n log.warn(log.message.columnsNotSupportByRowCol('facet'));\n }\n return _get(_getPrototypeOf(CoreNormalizer.prototype), \"mapFacet\", this).call(this, spec, params);\n }\n }, {\n key: \"mapUnitWithParentEncodingOrProjection\",\n value: function mapUnitWithParentEncodingOrProjection(spec, params) {\n var encoding = spec.encoding,\n projection = spec.projection;\n var parentEncoding = params.parentEncoding,\n parentProjection = params.parentProjection,\n config = params.config;\n var mergedProjection = mergeProjection({\n parentProjection: parentProjection,\n projection: projection\n });\n var mergedEncoding = mergeEncoding({\n parentEncoding: parentEncoding,\n encoding: replaceRepeaterInEncoding(encoding, params.repeater)\n });\n return this.mapUnit(_objectSpread(_objectSpread(_objectSpread({}, spec), mergedProjection ? {\n projection: mergedProjection\n } : {}), mergedEncoding ? {\n encoding: mergedEncoding\n } : {}), {\n config: config\n });\n }\n }, {\n key: \"mapFacetedUnit\",\n value: function mapFacetedUnit(spec, normParams) {\n // New encoding in the inside spec should not contain row / column\n // as row/column should be moved to facet\n var _spec$encoding = spec.encoding,\n row = _spec$encoding.row,\n column = _spec$encoding.column,\n facet = _spec$encoding.facet,\n encoding = _objectWithoutProperties(_spec$encoding, _excluded3);\n // Mark and encoding should be moved into the inner spec\n var mark = spec.mark,\n width = spec.width,\n projection = spec.projection,\n height = spec.height,\n view = spec.view,\n params = spec.params,\n _ = spec.encoding,\n outerSpec = _objectWithoutProperties(spec, _excluded4);\n var _this$getFacetMapping = this.getFacetMappingAndLayout({\n row: row,\n column: column,\n facet: facet\n }, normParams),\n facetMapping = _this$getFacetMapping.facetMapping,\n layout = _this$getFacetMapping.layout;\n var newEncoding = replaceRepeaterInEncoding(encoding, normParams.repeater);\n return this.mapFacet(_objectSpread(_objectSpread(_objectSpread({}, outerSpec), layout), {}, {\n // row / column has higher precedence than facet\n facet: facetMapping,\n spec: _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, width ? {\n width: width\n } : {}), height ? {\n height: height\n } : {}), view ? {\n view: view\n } : {}), projection ? {\n projection: projection\n } : {}), {}, {\n mark: mark,\n encoding: newEncoding\n }, params ? {\n params: params\n } : {})\n }), normParams);\n }\n }, {\n key: \"getFacetMappingAndLayout\",\n value: function getFacetMappingAndLayout(facets, params) {\n var row = facets.row,\n column = facets.column,\n facet = facets.facet;\n if (row || column) {\n if (facet) {\n log.warn(log.message.facetChannelDropped([].concat(_toConsumableArray(row ? [ROW] : []), _toConsumableArray(column ? [COLUMN] : []))));\n }\n var facetMapping = {};\n var layout = {};\n for (var _i = 0, _arr = [ROW, COLUMN]; _i < _arr.length; _i++) {\n var channel = _arr[_i];\n var def = facets[channel];\n if (def) {\n var align = def.align,\n center = def.center,\n spacing = def.spacing,\n columns = def.columns,\n defWithoutLayout = _objectWithoutProperties(def, _excluded5);\n facetMapping[channel] = defWithoutLayout;\n for (var _i2 = 0, _arr2 = ['align', 'center', 'spacing']; _i2 < _arr2.length; _i2++) {\n var prop = _arr2[_i2];\n if (def[prop] !== undefined) {\n var _layout$prop;\n (_layout$prop = layout[prop]) !== null && _layout$prop !== void 0 ? _layout$prop : layout[prop] = {};\n layout[prop][channel] = def[prop];\n }\n }\n }\n }\n return {\n facetMapping: facetMapping,\n layout: layout\n };\n } else {\n var _align = facet.align,\n _center = facet.center,\n _spacing = facet.spacing,\n _columns = facet.columns,\n _facetMapping = _objectWithoutProperties(facet, _excluded6);\n return {\n facetMapping: replaceRepeaterInFacet(_facetMapping, params.repeater),\n layout: _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, _align ? {\n align: _align\n } : {}), _center ? {\n center: _center\n } : {}), _spacing ? {\n spacing: _spacing\n } : {}), _columns ? {\n columns: _columns\n } : {})\n };\n }\n }\n }, {\n key: \"mapLayer\",\n value: function mapLayer(spec, _ref) {\n var parentEncoding = _ref.parentEncoding,\n parentProjection = _ref.parentProjection,\n otherParams = _objectWithoutProperties(_ref, _excluded7);\n // Special handling for extended layer spec\n var encoding = spec.encoding,\n projection = spec.projection,\n rest = _objectWithoutProperties(spec, _excluded8);\n var params = _objectSpread(_objectSpread({}, otherParams), {}, {\n parentEncoding: mergeEncoding({\n parentEncoding: parentEncoding,\n encoding: encoding,\n layer: true\n }),\n parentProjection: mergeProjection({\n parentProjection: parentProjection,\n projection: projection\n })\n });\n return _get(_getPrototypeOf(CoreNormalizer.prototype), \"mapLayer\", this).call(this, _objectSpread(_objectSpread({}, rest), spec.name ? {\n name: [params.repeaterPrefix, spec.name].filter(function (n) {\n return n;\n }).join('_')\n } : {}), params);\n }\n }]);\n return CoreNormalizer;\n}(SpecMapper);\nfunction mergeEncoding(_ref2) {\n var parentEncoding = _ref2.parentEncoding,\n _ref2$encoding = _ref2.encoding,\n encoding = _ref2$encoding === void 0 ? {} : _ref2$encoding,\n layer = _ref2.layer;\n var merged = {};\n if (parentEncoding) {\n var channels = new Set([].concat(_toConsumableArray(keys(parentEncoding)), _toConsumableArray(keys(encoding))));\n var _iterator5 = _createForOfIteratorHelper(channels),\n _step5;\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var channel = _step5.value;\n var channelDef = encoding[channel];\n var parentChannelDef = parentEncoding[channel];\n if (isFieldOrDatumDef(channelDef)) {\n // Field/Datum Def can inherit properties from its parent\n // Note that parentChannelDef doesn't have to be a field/datum def if the channelDef is already one.\n var mergedChannelDef = _objectSpread(_objectSpread({}, parentChannelDef), channelDef);\n merged[channel] = mergedChannelDef;\n } else if (hasConditionalFieldOrDatumDef(channelDef)) {\n merged[channel] = _objectSpread(_objectSpread({}, channelDef), {}, {\n condition: _objectSpread(_objectSpread({}, parentChannelDef), channelDef.condition)\n });\n } else if (channelDef || channelDef === null) {\n merged[channel] = channelDef;\n } else if (layer || isValueDef(parentChannelDef) || isSignalRef(parentChannelDef) || isFieldOrDatumDef(parentChannelDef) || isArray(parentChannelDef)) {\n merged[channel] = parentChannelDef;\n }\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n } else {\n merged = encoding;\n }\n return !merged || isEmpty(merged) ? undefined : merged;\n}\nfunction mergeProjection(opt) {\n var parentProjection = opt.parentProjection,\n projection = opt.projection;\n if (parentProjection && projection) {\n log.warn(log.message.projectionOverridden({\n parentProjection: parentProjection,\n projection: projection\n }));\n }\n return projection !== null && projection !== void 0 ? projection : parentProjection;\n}","import { normalizeLogicalComposition } from './logical';\nimport { normalizePredicate } from './predicate';\nexport function isFilter(t) {\n return 'filter' in t;\n}\nexport function isImputeSequence(t) {\n return (t === null || t === void 0 ? void 0 : t['stop']) !== undefined;\n}\nexport function isLookup(t) {\n return 'lookup' in t;\n}\nexport function isLookupData(from) {\n return 'data' in from;\n}\nexport function isLookupSelection(from) {\n return 'param' in from;\n}\nexport function isPivot(t) {\n return 'pivot' in t;\n}\nexport function isDensity(t) {\n return 'density' in t;\n}\nexport function isQuantile(t) {\n return 'quantile' in t;\n}\nexport function isRegression(t) {\n return 'regression' in t;\n}\nexport function isLoess(t) {\n return 'loess' in t;\n}\nexport function isSample(t) {\n return 'sample' in t;\n}\nexport function isWindow(t) {\n return 'window' in t;\n}\nexport function isJoinAggregate(t) {\n return 'joinaggregate' in t;\n}\nexport function isFlatten(t) {\n return 'flatten' in t;\n}\nexport function isCalculate(t) {\n return 'calculate' in t;\n}\nexport function isBin(t) {\n return 'bin' in t;\n}\nexport function isImpute(t) {\n return 'impute' in t;\n}\nexport function isTimeUnit(t) {\n return 'timeUnit' in t;\n}\nexport function isAggregate(t) {\n return 'aggregate' in t;\n}\nexport function isStack(t) {\n return 'stack' in t;\n}\nexport function isFold(t) {\n return 'fold' in t;\n}\nexport function isExtent(t) {\n return 'extent' in t && !('density' in t);\n}\nexport function normalizeTransform(transform) {\n return transform.map(function (t) {\n if (isFilter(t)) {\n return {\n filter: normalizeLogicalComposition(t.filter, normalizePredicate)\n };\n }\n return t;\n });\n}","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _get from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/get.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nvar _excluded = [\"selection\"],\n _excluded2 = [\"init\", \"bind\", \"empty\"],\n _excluded3 = [\"transform\"],\n _excluded4 = [\"selection\"],\n _excluded5 = [\"selection\"],\n _excluded6 = [\"selection\", \"param\", \"test\"],\n _excluded7 = [\"selection\", \"param\", \"test\"],\n _excluded8 = [\"selection\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { isArray } from 'vega';\nimport { isBinParams } from '../bin';\nimport { isConditionalDef, isFieldDef, isScaleFieldDef } from '../channeldef';\nimport { normalizeLogicalComposition } from '../logical';\nimport { SpecMapper } from '../spec/map';\nimport { isBin, isFilter, isLookup } from '../transform';\nimport { duplicate, entries, vals } from '../util';\nexport var SelectionCompatibilityNormalizer = /*#__PURE__*/function (_SpecMapper) {\n _inherits(SelectionCompatibilityNormalizer, _SpecMapper);\n var _super = _createSuper(SelectionCompatibilityNormalizer);\n function SelectionCompatibilityNormalizer() {\n _classCallCheck(this, SelectionCompatibilityNormalizer);\n return _super.apply(this, arguments);\n }\n _createClass(SelectionCompatibilityNormalizer, [{\n key: \"map\",\n value: function map(spec, normParams) {\n var _normParams$emptySele, _normParams$selection;\n (_normParams$emptySele = normParams.emptySelections) !== null && _normParams$emptySele !== void 0 ? _normParams$emptySele : normParams.emptySelections = {};\n (_normParams$selection = normParams.selectionPredicates) !== null && _normParams$selection !== void 0 ? _normParams$selection : normParams.selectionPredicates = {};\n spec = normalizeTransforms(spec, normParams);\n return _get(_getPrototypeOf(SelectionCompatibilityNormalizer.prototype), \"map\", this).call(this, spec, normParams);\n }\n }, {\n key: \"mapLayerOrUnit\",\n value: function mapLayerOrUnit(spec, normParams) {\n spec = normalizeTransforms(spec, normParams);\n if (spec.encoding) {\n var encoding = {};\n var _iterator = _createForOfIteratorHelper(entries(spec.encoding)),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _step$value = _slicedToArray(_step.value, 2),\n channel = _step$value[0],\n enc = _step$value[1];\n encoding[channel] = normalizeChannelDef(enc, normParams);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n spec = _objectSpread(_objectSpread({}, spec), {}, {\n encoding: encoding\n });\n }\n return _get(_getPrototypeOf(SelectionCompatibilityNormalizer.prototype), \"mapLayerOrUnit\", this).call(this, spec, normParams);\n }\n }, {\n key: \"mapUnit\",\n value: function mapUnit(spec, normParams) {\n var selection = spec.selection,\n rest = _objectWithoutProperties(spec, _excluded);\n if (selection) {\n return _objectSpread(_objectSpread({}, rest), {}, {\n params: entries(selection).map(function (_ref) {\n var _normParams$selection2;\n var _ref2 = _slicedToArray(_ref, 2),\n name = _ref2[0],\n selDef = _ref2[1];\n var value = selDef.init,\n bind = selDef.bind,\n empty = selDef.empty,\n select = _objectWithoutProperties(selDef, _excluded2);\n if (select.type === 'single') {\n select.type = 'point';\n select.toggle = false;\n } else if (select.type === 'multi') {\n select.type = 'point';\n }\n // Propagate emptiness forwards and backwards\n normParams.emptySelections[name] = empty !== 'none';\n var _iterator2 = _createForOfIteratorHelper(vals((_normParams$selection2 = normParams.selectionPredicates[name]) !== null && _normParams$selection2 !== void 0 ? _normParams$selection2 : {})),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var pred = _step2.value;\n pred.empty = empty !== 'none';\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n return {\n name: name,\n value: value,\n select: select,\n bind: bind\n };\n })\n });\n }\n return spec;\n }\n }]);\n return SelectionCompatibilityNormalizer;\n}(SpecMapper);\nfunction normalizeTransforms(spec, normParams) {\n var tx = spec.transform,\n rest = _objectWithoutProperties(spec, _excluded3);\n if (tx) {\n var transform = tx.map(function (t) {\n if (isFilter(t)) {\n return {\n filter: normalizePredicate(t, normParams)\n };\n } else if (isBin(t) && isBinParams(t.bin)) {\n return _objectSpread(_objectSpread({}, t), {}, {\n bin: normalizeBinExtent(t.bin)\n });\n } else if (isLookup(t)) {\n var _t$from = t.from,\n param = _t$from.selection,\n from = _objectWithoutProperties(_t$from, _excluded4);\n return param ? _objectSpread(_objectSpread({}, t), {}, {\n from: _objectSpread({\n param: param\n }, from)\n }) : t;\n }\n return t;\n });\n return _objectSpread(_objectSpread({}, rest), {}, {\n transform: transform\n });\n }\n return spec;\n}\nfunction normalizeChannelDef(obj, normParams) {\n var _enc$scale;\n var enc = duplicate(obj);\n if (isFieldDef(enc) && isBinParams(enc.bin)) {\n enc.bin = normalizeBinExtent(enc.bin);\n }\n if (isScaleFieldDef(enc) && (_enc$scale = enc.scale) !== null && _enc$scale !== void 0 && (_enc$scale = _enc$scale.domain) !== null && _enc$scale !== void 0 && _enc$scale.selection) {\n var _enc$scale$domain = enc.scale.domain,\n param = _enc$scale$domain.selection,\n domain = _objectWithoutProperties(_enc$scale$domain, _excluded5);\n enc.scale.domain = _objectSpread(_objectSpread({}, domain), param ? {\n param: param\n } : {});\n }\n if (isConditionalDef(enc)) {\n if (isArray(enc.condition)) {\n enc.condition = enc.condition.map(function (c) {\n var selection = c.selection,\n param = c.param,\n test = c.test,\n cond = _objectWithoutProperties(c, _excluded6);\n return param ? c : _objectSpread(_objectSpread({}, cond), {}, {\n test: normalizePredicate(c, normParams)\n });\n });\n } else {\n var _normalizeChannelDef = normalizeChannelDef(enc.condition, normParams),\n selection = _normalizeChannelDef.selection,\n _param = _normalizeChannelDef.param,\n test = _normalizeChannelDef.test,\n cond = _objectWithoutProperties(_normalizeChannelDef, _excluded7);\n enc.condition = _param ? enc.condition : _objectSpread(_objectSpread({}, cond), {}, {\n test: normalizePredicate(enc.condition, normParams)\n });\n }\n }\n return enc;\n}\nfunction normalizeBinExtent(bin) {\n var ext = bin.extent;\n if (ext !== null && ext !== void 0 && ext.selection) {\n var param = ext.selection,\n rest = _objectWithoutProperties(ext, _excluded8);\n return _objectSpread(_objectSpread({}, bin), {}, {\n extent: _objectSpread(_objectSpread({}, rest), {}, {\n param: param\n })\n });\n }\n return bin;\n}\nfunction normalizePredicate(op, normParams) {\n // Normalize old compositions of selection names (e.g., selection: {and: [\"one\", \"two\"]})\n var normalizeSelectionComposition = function normalizeSelectionComposition(o) {\n return normalizeLogicalComposition(o, function (param) {\n var _normParams$emptySele2, _a$param;\n var _a;\n var empty = (_normParams$emptySele2 = normParams.emptySelections[param]) !== null && _normParams$emptySele2 !== void 0 ? _normParams$emptySele2 : true;\n var pred = {\n param: param,\n empty: empty\n };\n (_a$param = (_a = normParams.selectionPredicates)[param]) !== null && _a$param !== void 0 ? _a$param : _a[param] = [];\n normParams.selectionPredicates[param].push(pred);\n return pred;\n });\n };\n return op.selection ? normalizeSelectionComposition(op.selection) : normalizeLogicalComposition(op.test || op.filter, function (o) {\n return o.selection ? normalizeSelectionComposition(o.selection) : o;\n });\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _get from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/get.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { isArray, isString } from 'vega';\nimport { isSelectionParameter } from '../selection';\nimport { isUnitSpec } from '../spec';\nimport { SpecMapper } from '../spec/map';\nexport var TopLevelSelectionsNormalizer = /*#__PURE__*/function (_SpecMapper) {\n _inherits(TopLevelSelectionsNormalizer, _SpecMapper);\n var _super = _createSuper(TopLevelSelectionsNormalizer);\n function TopLevelSelectionsNormalizer() {\n _classCallCheck(this, TopLevelSelectionsNormalizer);\n return _super.apply(this, arguments);\n }\n _createClass(TopLevelSelectionsNormalizer, [{\n key: \"map\",\n value: function map(spec, normParams) {\n var _normParams$selection;\n var selections = (_normParams$selection = normParams.selections) !== null && _normParams$selection !== void 0 ? _normParams$selection : [];\n if (spec.params && !isUnitSpec(spec)) {\n var params = [];\n var _iterator = _createForOfIteratorHelper(spec.params),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var param = _step.value;\n if (isSelectionParameter(param)) {\n selections.push(param);\n } else {\n params.push(param);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n spec.params = params;\n }\n normParams.selections = selections;\n return _get(_getPrototypeOf(TopLevelSelectionsNormalizer.prototype), \"map\", this).call(this, spec, normParams);\n }\n }, {\n key: \"mapUnit\",\n value: function mapUnit(spec, normParams) {\n var _normParams$path;\n var selections = normParams.selections;\n if (!selections || !selections.length) return spec;\n var path = ((_normParams$path = normParams.path) !== null && _normParams$path !== void 0 ? _normParams$path : []).concat(spec.name);\n var params = [];\n var _iterator2 = _createForOfIteratorHelper(selections),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var selection = _step2.value;\n // By default, apply selections to all unit views.\n if (!selection.views || !selection.views.length) {\n params.push(selection);\n } else {\n var _iterator3 = _createForOfIteratorHelper(selection.views),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var view = _step3.value;\n // view is either a specific unit name, or a partial path through the spec tree.\n if (isString(view) && (view === spec.name || path.includes(view)) || isArray(view) &&\n // logic for backwards compatibility with view paths before we had unique names\n // @ts-ignore\n view.map(function (v) {\n return path.indexOf(v);\n }).every(function (v, i, arr) {\n return v !== -1 && (i === 0 || v > arr[i - 1]);\n })) {\n params.push(selection);\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n if (params.length) spec.params = params;\n return spec;\n }\n }]);\n return TopLevelSelectionsNormalizer;\n}(SpecMapper);\nvar _loop = function _loop() {\n var method = _arr[_i];\n var proto = TopLevelSelectionsNormalizer.prototype[method];\n TopLevelSelectionsNormalizer.prototype[method] = function (spec, params) {\n return proto.call(this, spec, addSpecNameToParams(spec, params));\n };\n};\nfor (var _i = 0, _arr = ['mapFacet', 'mapRepeat', 'mapHConcat', 'mapVConcat', 'mapLayer']; _i < _arr.length; _i++) {\n _loop();\n}\nfunction addSpecNameToParams(spec, params) {\n var _params$path;\n return spec.name ? _objectSpread(_objectSpread({}, params), {}, {\n path: ((_params$path = params.path) !== null && _params$path !== void 0 ? _params$path : []).concat(spec.name)\n }) : params;\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { isString } from 'vega-util';\nimport { initConfig } from '../config';\nimport * as log from '../log';\nimport { isLayerSpec, isUnitSpec } from '../spec';\nimport { deepEqual } from '../util';\nimport { CoreNormalizer } from './core';\nimport { SelectionCompatibilityNormalizer } from './selectioncompat';\nimport { TopLevelSelectionsNormalizer } from './toplevelselection';\nexport function normalize(spec, config) {\n if (config === undefined) {\n config = initConfig(spec.config);\n }\n var normalizedSpec = normalizeGenericSpec(spec, config);\n var width = spec.width,\n height = spec.height;\n var autosize = normalizeAutoSize(normalizedSpec, {\n width: width,\n height: height,\n autosize: spec.autosize\n }, config);\n return _objectSpread(_objectSpread({}, normalizedSpec), autosize ? {\n autosize: autosize\n } : {});\n}\nvar coreNormalizer = new CoreNormalizer();\nvar selectionCompatNormalizer = new SelectionCompatibilityNormalizer();\nvar topLevelSelectionNormalizer = new TopLevelSelectionsNormalizer();\n/**\n * Decompose extended unit specs into composition of pure unit specs.\n * And push top-level selection definitions down to unit specs.\n */\nfunction normalizeGenericSpec(spec) {\n var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var normParams = {\n config: config\n };\n return topLevelSelectionNormalizer.map(coreNormalizer.map(selectionCompatNormalizer.map(spec, normParams), normParams), normParams);\n}\nfunction _normalizeAutoSize(autosize) {\n return isString(autosize) ? {\n type: autosize\n } : autosize !== null && autosize !== void 0 ? autosize : {};\n}\n/**\n * Normalize autosize and deal with width or height == \"container\".\n */\nexport function normalizeAutoSize(spec, sizeInfo, config) {\n var width = sizeInfo.width,\n height = sizeInfo.height;\n var isFitCompatible = isUnitSpec(spec) || isLayerSpec(spec);\n var autosizeDefault = {};\n if (!isFitCompatible) {\n // If spec is not compatible with autosize == \"fit\", discard width/height == container\n if (width == 'container') {\n log.warn(log.message.containerSizeNonSingle('width'));\n width = undefined;\n }\n if (height == 'container') {\n log.warn(log.message.containerSizeNonSingle('height'));\n height = undefined;\n }\n } else {\n // Default autosize parameters to fit when width/height is \"container\"\n if (width == 'container' && height == 'container') {\n autosizeDefault.type = 'fit';\n autosizeDefault.contains = 'padding';\n } else if (width == 'container') {\n autosizeDefault.type = 'fit-x';\n autosizeDefault.contains = 'padding';\n } else if (height == 'container') {\n autosizeDefault.type = 'fit-y';\n autosizeDefault.contains = 'padding';\n }\n }\n var autosize = _objectSpread(_objectSpread(_objectSpread({\n type: 'pad'\n }, autosizeDefault), config ? _normalizeAutoSize(config.autosize) : {}), _normalizeAutoSize(spec.autosize));\n if (autosize.type === 'fit' && !isFitCompatible) {\n log.warn(log.message.FIT_NON_SINGLE);\n autosize.type = 'pad';\n }\n if (width == 'container' && !(autosize.type == 'fit' || autosize.type == 'fit-x')) {\n log.warn(log.message.containerSizeNotCompatibleWithAutosize('width'));\n }\n if (height == 'container' && !(autosize.type == 'fit' || autosize.type == 'fit-y')) {\n log.warn(log.message.containerSizeNotCompatibleWithAutosize('height'));\n }\n // Delete autosize property if it's Vega's default\n if (deepEqual(autosize, {\n type: 'pad'\n })) {\n return undefined;\n }\n return autosize;\n}","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { getPositionScaleChannel } from '../channel';\nimport { signalRefOrValue } from '../compile/common';\nexport function isFitType(autoSizeType) {\n return autoSizeType === 'fit' || autoSizeType === 'fit-x' || autoSizeType === 'fit-y';\n}\nexport function getFitType(sizeType) {\n return sizeType ? \"fit-\".concat(getPositionScaleChannel(sizeType)) : 'fit';\n}\nvar TOP_LEVEL_PROPERTIES = ['background', 'padding'\n// We do not include \"autosize\" here as it is supported by only unit and layer specs and thus need to be normalized\n];\n\nexport function extractTopLevelProperties(t, includeParams) {\n var o = {};\n var _iterator = _createForOfIteratorHelper(TOP_LEVEL_PROPERTIES),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var p = _step.value;\n if (t && t[p] !== undefined) {\n o[p] = signalRefOrValue(t[p]);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n if (includeParams) {\n o.params = t.params;\n }\n return o;\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport * as log from '../log';\nimport { deepEqual, duplicate, getFirstDefined, keys } from '../util';\n/**\n * Generic class for storing properties that are explicitly specified\n * and implicitly determined by the compiler.\n * This is important for scale/axis/legend merging as\n * we want to prioritize properties that users explicitly specified.\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport var Split = /*#__PURE__*/function () {\n function Split() {\n var explicit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var implicit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _classCallCheck(this, Split);\n this.explicit = explicit;\n this.implicit = implicit;\n }\n _createClass(Split, [{\n key: \"clone\",\n value: function clone() {\n return new Split(duplicate(this.explicit), duplicate(this.implicit));\n }\n }, {\n key: \"combine\",\n value: function combine() {\n return _objectSpread(_objectSpread({}, this.explicit), this.implicit);\n }\n }, {\n key: \"get\",\n value: function get(key) {\n // Explicit has higher precedence\n return getFirstDefined(this.explicit[key], this.implicit[key]);\n }\n }, {\n key: \"getWithExplicit\",\n value: function getWithExplicit(key) {\n // Explicit has higher precedence\n if (this.explicit[key] !== undefined) {\n return {\n explicit: true,\n value: this.explicit[key]\n };\n } else if (this.implicit[key] !== undefined) {\n return {\n explicit: false,\n value: this.implicit[key]\n };\n }\n return {\n explicit: false,\n value: undefined\n };\n }\n }, {\n key: \"setWithExplicit\",\n value: function setWithExplicit(key, _ref) {\n var value = _ref.value,\n explicit = _ref.explicit;\n if (value !== undefined) {\n this.set(key, value, explicit);\n }\n }\n }, {\n key: \"set\",\n value: function set(key, value, explicit) {\n delete this[explicit ? 'implicit' : 'explicit'][key];\n this[explicit ? 'explicit' : 'implicit'][key] = value;\n return this;\n }\n }, {\n key: \"copyKeyFromSplit\",\n value: function copyKeyFromSplit(key, _ref2) {\n var explicit = _ref2.explicit,\n implicit = _ref2.implicit;\n // Explicit has higher precedence\n if (explicit[key] !== undefined) {\n this.set(key, explicit[key], true);\n } else if (implicit[key] !== undefined) {\n this.set(key, implicit[key], false);\n }\n }\n }, {\n key: \"copyKeyFromObject\",\n value: function copyKeyFromObject(key, s) {\n // Explicit has higher precedence\n if (s[key] !== undefined) {\n this.set(key, s[key], true);\n }\n }\n /**\n * Merge split object into this split object. Properties from the other split\n * overwrite properties from this split.\n */\n }, {\n key: \"copyAll\",\n value: function copyAll(other) {\n var _iterator = _createForOfIteratorHelper(keys(other.combine())),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var key = _step.value;\n var val = other.getWithExplicit(key);\n this.setWithExplicit(key, val);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n }]);\n return Split;\n}();\nexport function makeExplicit(value) {\n return {\n explicit: true,\n value: value\n };\n}\nexport function makeImplicit(value) {\n return {\n explicit: false,\n value: value\n };\n}\nexport function tieBreakByComparing(compare) {\n return function (v1, v2, property, propertyOf) {\n var diff = compare(v1.value, v2.value);\n if (diff > 0) {\n return v1;\n } else if (diff < 0) {\n return v2;\n }\n return defaultTieBreaker(v1, v2, property, propertyOf);\n };\n}\nexport function defaultTieBreaker(v1, v2, property, propertyOf) {\n if (v1.explicit && v2.explicit) {\n log.warn(log.message.mergeConflictingProperty(property, propertyOf, v1.value, v2.value));\n }\n // If equal score, prefer v1.\n return v1;\n}\nexport function mergeValuesWithExplicit(v1, v2, property, propertyOf) {\n var tieBreaker = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : defaultTieBreaker;\n if (v1 === undefined || v1.value === undefined) {\n // For first run\n return v2;\n }\n if (v1.explicit && !v2.explicit) {\n return v1;\n } else if (v2.explicit && !v1.explicit) {\n return v2;\n } else if (deepEqual(v1.value, v2.value)) {\n return v1;\n } else {\n return tieBreaker(v1, v2, property, propertyOf);\n }\n}","import _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _get from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/get.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { Split } from '../split';\n/**\n * Class to track interesting properties (see https://15721.courses.cs.cmu.edu/spring2016/papers/graefe-ieee1995.pdf)\n * about how fields have been parsed or whether they have been derived in a transform. We use this to not parse the\n * same field again (or differently).\n */\nexport var AncestorParse = /*#__PURE__*/function (_Split) {\n _inherits(AncestorParse, _Split);\n var _super = _createSuper(AncestorParse);\n function AncestorParse() {\n var _this;\n var explicit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var implicit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var parseNothing = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n _classCallCheck(this, AncestorParse);\n _this = _super.call(this, explicit, implicit);\n _this.explicit = explicit;\n _this.implicit = implicit;\n _this.parseNothing = parseNothing;\n return _this;\n }\n _createClass(AncestorParse, [{\n key: \"clone\",\n value: function clone() {\n var clone = _get(_getPrototypeOf(AncestorParse.prototype), \"clone\", this).call(this);\n clone.parseNothing = this.parseNothing;\n return clone;\n }\n }]);\n return AncestorParse;\n}(Split);","export function isUrlData(data) {\n return 'url' in data;\n}\nexport function isInlineData(data) {\n return 'values' in data;\n}\nexport function isNamedData(data) {\n return 'name' in data && !isUrlData(data) && !isInlineData(data) && !isGenerator(data);\n}\nexport function isGenerator(data) {\n return data && (isSequenceGenerator(data) || isSphereGenerator(data) || isGraticuleGenerator(data));\n}\nexport function isSequenceGenerator(data) {\n return 'sequence' in data;\n}\nexport function isSphereGenerator(data) {\n return 'sphere' in data;\n}\nexport function isGraticuleGenerator(data) {\n return 'graticule' in data;\n}\nexport var DataSourceType;\n(function (DataSourceType) {\n DataSourceType[DataSourceType[\"Raw\"] = 0] = \"Raw\";\n DataSourceType[DataSourceType[\"Main\"] = 1] = \"Main\";\n DataSourceType[DataSourceType[\"Row\"] = 2] = \"Row\";\n DataSourceType[DataSourceType[\"Column\"] = 3] = \"Column\";\n DataSourceType[DataSourceType[\"Lookup\"] = 4] = \"Lookup\";\n})(DataSourceType || (DataSourceType = {}));","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"signals\", \"hasLegend\", \"index\"];\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { parseSelector } from 'vega-event-selector';\nimport { identity, isArray, stringValue } from 'vega-util';\nimport { MODIFY, STORE, unitName, VL_SELECTION_RESOLVE, TUPLE, selectionCompilers } from '.';\nimport { dateTimeToExpr, isDateTime, dateTimeToTimestamp } from '../../datetime';\nimport { hasContinuousDomain } from '../../scale';\nimport { SELECTION_ID } from '../../selection';\nimport { keys, replacePathInField, stringify, vals } from '../../util';\nimport { isUnitModel } from '../model';\nimport { parseSelectionExtent } from './parse';\nexport function assembleProjection(proj) {\n var signals = proj.signals,\n hasLegend = proj.hasLegend,\n index = proj.index,\n rest = _objectWithoutProperties(proj, _excluded);\n rest.field = replacePathInField(rest.field);\n return rest;\n}\nexport function assembleInit(init) {\n var isExpr = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var wrap = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : identity;\n if (isArray(init)) {\n var assembled = init.map(function (v) {\n return assembleInit(v, isExpr, wrap);\n });\n return isExpr ? \"[\".concat(assembled.join(', '), \"]\") : assembled;\n } else if (isDateTime(init)) {\n if (isExpr) {\n return wrap(dateTimeToExpr(init));\n } else {\n return wrap(dateTimeToTimestamp(init));\n }\n }\n return isExpr ? wrap(stringify(init)) : init;\n}\nexport function assembleUnitSelectionSignals(model, signals) {\n var _model$component$sele;\n var _iterator = _createForOfIteratorHelper(vals((_model$component$sele = model.component.selection) !== null && _model$component$sele !== void 0 ? _model$component$sele : {})),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var selCmpt = _step.value;\n var name = selCmpt.name;\n var modifyExpr = \"\".concat(name).concat(TUPLE, \", \").concat(selCmpt.resolve === 'global' ? 'true' : \"{unit: \".concat(unitName(model), \"}\"));\n var _iterator2 = _createForOfIteratorHelper(selectionCompilers),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var c = _step2.value;\n if (!c.defined(selCmpt)) continue;\n if (c.signals) signals = c.signals(model, selCmpt, signals);\n if (c.modifyExpr) modifyExpr = c.modifyExpr(model, selCmpt, modifyExpr);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n signals.push({\n name: name + MODIFY,\n on: [{\n events: {\n signal: selCmpt.name + TUPLE\n },\n update: \"modify(\".concat(stringValue(selCmpt.name + STORE), \", \").concat(modifyExpr, \")\")\n }]\n });\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return cleanupEmptyOnArray(signals);\n}\nexport function assembleFacetSignals(model, signals) {\n if (model.component.selection && keys(model.component.selection).length) {\n var name = stringValue(model.getName('cell'));\n signals.unshift({\n name: 'facet',\n value: {},\n on: [{\n events: parseSelector('mousemove', 'scope'),\n update: \"isTuple(facet) ? facet : group(\".concat(name, \").datum\")\n }]\n });\n }\n return cleanupEmptyOnArray(signals);\n}\nexport function assembleTopLevelSignals(model, signals) {\n var _model$component$sele2;\n var hasSelections = false;\n var _iterator3 = _createForOfIteratorHelper(vals((_model$component$sele2 = model.component.selection) !== null && _model$component$sele2 !== void 0 ? _model$component$sele2 : {})),\n _step3;\n try {\n var _loop = function _loop() {\n var selCmpt = _step3.value;\n var name = selCmpt.name;\n var store = stringValue(name + STORE);\n var hasSg = signals.filter(function (s) {\n return s.name === name;\n });\n if (hasSg.length === 0) {\n var resolve = selCmpt.resolve === 'global' ? 'union' : selCmpt.resolve;\n var isPoint = selCmpt.type === 'point' ? ', true, true)' : ')';\n signals.push({\n name: selCmpt.name,\n update: \"\".concat(VL_SELECTION_RESOLVE, \"(\").concat(store, \", \").concat(stringValue(resolve)).concat(isPoint)\n });\n }\n hasSelections = true;\n var _iterator4 = _createForOfIteratorHelper(selectionCompilers),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var c = _step4.value;\n if (c.defined(selCmpt) && c.topLevelSignals) {\n signals = c.topLevelSignals(model, selCmpt, signals);\n }\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n };\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n _loop();\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n if (hasSelections) {\n var hasUnit = signals.filter(function (s) {\n return s.name === 'unit';\n });\n if (hasUnit.length === 0) {\n signals.unshift({\n name: 'unit',\n value: {},\n on: [{\n events: 'mousemove',\n update: 'isTuple(group()) ? group() : unit'\n }]\n });\n }\n }\n return cleanupEmptyOnArray(signals);\n}\nexport function assembleUnitSelectionData(model, data) {\n var _model$component$sele3;\n var dataCopy = _toConsumableArray(data);\n var unit = unitName(model, {\n escape: false\n });\n var _iterator5 = _createForOfIteratorHelper(vals((_model$component$sele3 = model.component.selection) !== null && _model$component$sele3 !== void 0 ? _model$component$sele3 : {})),\n _step5;\n try {\n var _loop2 = function _loop2() {\n var selCmpt = _step5.value;\n var store = {\n name: selCmpt.name + STORE\n };\n if (selCmpt.project.hasSelectionId) {\n store.transform = [{\n type: 'collect',\n sort: {\n field: SELECTION_ID\n }\n }];\n }\n if (selCmpt.init) {\n var fields = selCmpt.project.items.map(assembleProjection);\n store.values = selCmpt.project.hasSelectionId ? selCmpt.init.map(function (i) {\n return _defineProperty({\n unit: unit\n }, SELECTION_ID, assembleInit(i, false)[0]);\n }) : selCmpt.init.map(function (i) {\n return {\n unit: unit,\n fields: fields,\n values: assembleInit(i, false)\n };\n });\n }\n var contains = dataCopy.filter(function (d) {\n return d.name === selCmpt.name + STORE;\n });\n if (!contains.length) {\n dataCopy.push(store);\n }\n };\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n _loop2();\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n return dataCopy;\n}\nexport function assembleUnitSelectionMarks(model, marks) {\n var _model$component$sele4;\n var _iterator6 = _createForOfIteratorHelper(vals((_model$component$sele4 = model.component.selection) !== null && _model$component$sele4 !== void 0 ? _model$component$sele4 : {})),\n _step6;\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var selCmpt = _step6.value;\n var _iterator7 = _createForOfIteratorHelper(selectionCompilers),\n _step7;\n try {\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n var c = _step7.value;\n if (c.defined(selCmpt) && c.marks) {\n marks = c.marks(model, selCmpt, marks);\n }\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n return marks;\n}\nexport function assembleLayerSelectionMarks(model, marks) {\n var _iterator8 = _createForOfIteratorHelper(model.children),\n _step8;\n try {\n for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {\n var child = _step8.value;\n if (isUnitModel(child)) {\n marks = assembleUnitSelectionMarks(child, marks);\n }\n }\n } catch (err) {\n _iterator8.e(err);\n } finally {\n _iterator8.f();\n }\n return marks;\n}\nexport function assembleSelectionScaleDomain(model, extent, scaleCmpt, domain) {\n var parsedExtent = parseSelectionExtent(model, extent.param, extent);\n return {\n signal: hasContinuousDomain(scaleCmpt.get('type')) && isArray(domain) && domain[0] > domain[1] ? \"isValid(\".concat(parsedExtent, \") && reverse(\").concat(parsedExtent, \")\") : parsedExtent\n };\n}\nfunction cleanupEmptyOnArray(signals) {\n return signals.map(function (s) {\n if (s.on && !s.on.length) delete s.on;\n return s;\n });\n}","import _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport * as log from '../../log';\nimport { uniqueId } from '../../util';\n/**\n * A node in the dataflow tree.\n */\nexport var DataFlowNode = /*#__PURE__*/function () {\n function DataFlowNode(parent, debugName) {\n _classCallCheck(this, DataFlowNode);\n this.debugName = debugName;\n this._children = [];\n this._parent = null;\n if (parent) {\n this.parent = parent;\n }\n }\n /**\n * Clone this node with a deep copy but don't clone links to children or parents.\n */\n _createClass(DataFlowNode, [{\n key: \"clone\",\n value: function clone() {\n throw new Error('Cannot clone node');\n }\n }, {\n key: \"parent\",\n get: function get() {\n return this._parent;\n }\n /**\n * Set the parent of the node and also add this node to the parent's children.\n */,\n set: function set(parent) {\n this._parent = parent;\n if (parent) {\n parent.addChild(this);\n }\n }\n }, {\n key: \"children\",\n get: function get() {\n return this._children;\n }\n }, {\n key: \"numChildren\",\n value: function numChildren() {\n return this._children.length;\n }\n }, {\n key: \"addChild\",\n value: function addChild(child, loc) {\n // do not add the same child twice\n if (this._children.includes(child)) {\n log.warn(log.message.ADD_SAME_CHILD_TWICE);\n return;\n }\n if (loc !== undefined) {\n this._children.splice(loc, 0, child);\n } else {\n this._children.push(child);\n }\n }\n }, {\n key: \"removeChild\",\n value: function removeChild(oldChild) {\n var loc = this._children.indexOf(oldChild);\n this._children.splice(loc, 1);\n return loc;\n }\n /**\n * Remove node from the dataflow.\n */\n }, {\n key: \"remove\",\n value: function remove() {\n var loc = this._parent.removeChild(this);\n var _iterator = _createForOfIteratorHelper(this._children),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var child = _step.value;\n // do not use the set method because we want to insert at a particular location\n child._parent = this._parent;\n this._parent.addChild(child, loc++);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n /**\n * Insert another node as a parent of this node.\n */\n }, {\n key: \"insertAsParentOf\",\n value: function insertAsParentOf(other) {\n var parent = other.parent;\n parent.removeChild(this);\n this.parent = parent;\n other.parent = this;\n }\n }, {\n key: \"swapWithParent\",\n value: function swapWithParent() {\n var parent = this._parent;\n var newParent = parent.parent;\n // reconnect the children\n var _iterator2 = _createForOfIteratorHelper(this._children),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var child = _step2.value;\n child.parent = parent;\n }\n // remove old links\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n this._children = []; // equivalent to removing every child link one by one\n parent.removeChild(this);\n var loc = parent.parent.removeChild(parent);\n // swap two nodes but maintain order in children\n this._parent = newParent;\n newParent.addChild(this, loc);\n parent.parent = this;\n }\n }]);\n return DataFlowNode;\n}();\nexport var OutputNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(OutputNode, _DataFlowNode);\n var _super = _createSuper(OutputNode);\n /**\n * @param source The name of the source. Will change in assemble.\n * @param type The type of the output node.\n * @param refCounts A global ref counter map.\n */\n function OutputNode(parent, source, type, refCounts) {\n var _this;\n _classCallCheck(this, OutputNode);\n _this = _super.call(this, parent, source);\n _this.type = type;\n _this.refCounts = refCounts;\n _this._source = _this._name = source;\n if (_this.refCounts && !(_this._name in _this.refCounts)) {\n _this.refCounts[_this._name] = 0;\n }\n return _this;\n }\n _createClass(OutputNode, [{\n key: \"clone\",\n value: function clone() {\n var cloneObj = new this.constructor();\n cloneObj.debugName = \"clone_\".concat(this.debugName);\n cloneObj._source = this._source;\n cloneObj._name = \"clone_\".concat(this._name);\n cloneObj.type = this.type;\n cloneObj.refCounts = this.refCounts;\n cloneObj.refCounts[cloneObj._name] = 0;\n return cloneObj;\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n return new Set();\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return new Set();\n }\n }, {\n key: \"hash\",\n value: function hash() {\n if (this._hash === undefined) {\n this._hash = \"Output \".concat(uniqueId());\n }\n return this._hash;\n }\n /**\n * Request the datasource name and increase the ref counter.\n *\n * During the parsing phase, this will return the simple name such as 'main' or 'raw'.\n * It is crucial to request the name from an output node to mark it as a required node.\n * If nobody ever requests the name, this datasource will not be instantiated in the assemble phase.\n *\n * In the assemble phase, this will return the correct name.\n */\n }, {\n key: \"getSource\",\n value: function getSource() {\n this.refCounts[this._name]++;\n return this._source;\n }\n }, {\n key: \"isRequired\",\n value: function isRequired() {\n return !!this.refCounts[this._name];\n }\n }, {\n key: \"setSource\",\n value: function setSource(source) {\n this._source = source;\n }\n }]);\n return OutputNode;\n}(DataFlowNode);","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nvar _excluded = [\"unit\", \"utc\"],\n _excluded2 = [\"timeUnit\"];\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { vgField } from '../../channeldef';\nimport { getDateTimePartAndStep, getSmallestTimeUnitPart, getTimeUnitParts, isBinnedTimeUnit, normalizeTimeUnit } from '../../timeunit';\nimport { duplicate, entries, hash as _hash, isEmpty, replacePathInField, vals } from '../../util';\nimport { isUnitModel } from '../model';\nimport { DataFlowNode } from './dataflow';\nimport { isRectBasedMark } from '../../mark';\nfunction isTimeUnitTransformComponent(timeUnitComponent) {\n return timeUnitComponent.as !== undefined;\n}\nfunction offsetAs(field) {\n return \"\".concat(field, \"_end\");\n}\nexport var TimeUnitNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(TimeUnitNode, _DataFlowNode);\n var _super = _createSuper(TimeUnitNode);\n function TimeUnitNode(parent, formula) {\n var _this;\n _classCallCheck(this, TimeUnitNode);\n _this = _super.call(this, parent);\n _this.formula = formula;\n return _this;\n }\n _createClass(TimeUnitNode, [{\n key: \"clone\",\n value: function clone() {\n return new TimeUnitNode(null, duplicate(this.formula));\n }\n }, {\n key: \"merge\",\n value:\n /**\n * Merge together TimeUnitNodes assigning the children of `other` to `this`\n * and removing `other`.\n */\n function merge(other) {\n this.formula = _objectSpread({}, this.formula);\n // if the same hash happen twice, merge\n for (var key in other.formula) {\n if (!this.formula[key]) {\n // copy if it's not a duplicate\n this.formula[key] = other.formula[key];\n }\n }\n var _iterator = _createForOfIteratorHelper(other.children),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var child = _step.value;\n other.removeChild(child);\n child.parent = this;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n other.remove();\n }\n /**\n * Remove time units coming from the other node.\n */\n }, {\n key: \"removeFormulas\",\n value: function removeFormulas(fields) {\n var newFormula = {};\n var _iterator2 = _createForOfIteratorHelper(entries(this.formula)),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _step2$value = _slicedToArray(_step2.value, 2),\n key = _step2$value[0],\n timeUnitComponent = _step2$value[1];\n var fieldAs = isTimeUnitTransformComponent(timeUnitComponent) ? timeUnitComponent.as : \"\".concat(timeUnitComponent.field, \"_end\");\n if (!fields.has(fieldAs)) {\n newFormula[key] = timeUnitComponent;\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n this.formula = newFormula;\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return new Set(vals(this.formula).map(function (f) {\n return isTimeUnitTransformComponent(f) ? f.as : offsetAs(f.field);\n }));\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n return new Set(vals(this.formula).map(function (f) {\n return f.field;\n }));\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return \"TimeUnit \".concat(_hash(this.formula));\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n var transforms = [];\n var _iterator3 = _createForOfIteratorHelper(vals(this.formula)),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var f = _step3.value;\n if (isTimeUnitTransformComponent(f)) {\n var field = f.field,\n as = f.as,\n timeUnit = f.timeUnit;\n var _normalizeTimeUnit = normalizeTimeUnit(timeUnit),\n unit = _normalizeTimeUnit.unit,\n utc = _normalizeTimeUnit.utc,\n params = _objectWithoutProperties(_normalizeTimeUnit, _excluded);\n transforms.push(_objectSpread(_objectSpread(_objectSpread(_objectSpread({\n field: replacePathInField(field),\n type: 'timeunit'\n }, unit ? {\n units: getTimeUnitParts(unit)\n } : {}), utc ? {\n timezone: 'utc'\n } : {}), params), {}, {\n as: [as, \"\".concat(as, \"_end\")]\n }));\n } else if (f) {\n var _field = f.field,\n _timeUnit = f.timeUnit;\n var smallestUnit = getSmallestTimeUnitPart(_timeUnit === null || _timeUnit === void 0 ? void 0 : _timeUnit.unit);\n var _getDateTimePartAndSt = getDateTimePartAndStep(smallestUnit, _timeUnit.step),\n part = _getDateTimePartAndSt.part,\n step = _getDateTimePartAndSt.step;\n transforms.push({\n type: 'formula',\n expr: \"timeOffset('\".concat(part, \"', datum['\").concat(_field, \"'], \").concat(step, \")\"),\n as: offsetAs(_field)\n });\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n return transforms;\n }\n }], [{\n key: \"makeFromEncoding\",\n value: function makeFromEncoding(parent, model) {\n var formula = model.reduceFieldDef(function (timeUnitComponent, fieldDef) {\n var field = fieldDef.field,\n timeUnit = fieldDef.timeUnit;\n if (timeUnit) {\n var component;\n if (isBinnedTimeUnit(timeUnit)) {\n // For binned time unit, only produce end if the mark is a rect-based mark (rect, bar, image, arc), which needs \"range\".\n if (isUnitModel(model)) {\n var mark = model.mark;\n if (isRectBasedMark(mark) || !!fieldDef.bandPosition) {\n component = {\n timeUnit: normalizeTimeUnit(timeUnit),\n field: field\n };\n }\n }\n } else {\n component = {\n as: vgField(fieldDef, {\n forAs: true\n }),\n field: field,\n timeUnit: timeUnit\n };\n }\n if (component) {\n timeUnitComponent[_hash(component)] = component;\n }\n }\n return timeUnitComponent;\n }, {});\n if (isEmpty(formula)) {\n return null;\n }\n return new TimeUnitNode(parent, formula);\n }\n }, {\n key: \"makeFromTransform\",\n value: function makeFromTransform(parent, t) {\n var _t = _objectSpread({}, t),\n timeUnit = _t.timeUnit,\n other = _objectWithoutProperties(_t, _excluded2);\n var normalizedTimeUnit = normalizeTimeUnit(timeUnit);\n var component = _objectSpread(_objectSpread({}, other), {}, {\n timeUnit: normalizedTimeUnit\n });\n return new TimeUnitNode(parent, _defineProperty({}, _hash(component), component));\n }\n }]);\n return TimeUnitNode;\n}(DataFlowNode);","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { array, isObject } from 'vega-util';\nimport { getPositionChannelFromLatLong, isGeoPositionChannel, isScaleChannel, isSingleDefUnitChannel } from '../../channel';\nimport * as log from '../../log';\nimport { hasContinuousDomain } from '../../scale';\nimport { SELECTION_ID } from '../../selection';\nimport { hash, keys, varName, isEmpty } from '../../util';\nimport { TimeUnitNode } from '../data/timeunit';\nimport { assembleProjection } from './assemble';\nimport { isBinnedTimeUnit } from '../../timeunit';\nexport var TUPLE_FIELDS = '_tuple_fields';\nexport var SelectionProjectionComponent = /*#__PURE__*/_createClass(function SelectionProjectionComponent() {\n _classCallCheck(this, SelectionProjectionComponent);\n for (var _len = arguments.length, items = new Array(_len), _key = 0; _key < _len; _key++) {\n items[_key] = arguments[_key];\n }\n this.items = items;\n this.hasChannel = {};\n this.hasField = {};\n this.hasSelectionId = false;\n});\nvar project = {\n defined: function defined() {\n return true; // This transform handles its own defaults, so always run parse.\n },\n\n parse: function parse(model, selCmpt, selDef) {\n var _selCmpt$project, _encodings, _fields2;\n var name = selCmpt.name;\n var proj = (_selCmpt$project = selCmpt.project) !== null && _selCmpt$project !== void 0 ? _selCmpt$project : selCmpt.project = new SelectionProjectionComponent();\n var parsed = {};\n var timeUnits = {};\n var signals = new Set();\n var signalName = function signalName(p, range) {\n var suffix = range === 'visual' ? p.channel : p.field;\n var sg = varName(\"\".concat(name, \"_\").concat(suffix));\n for (var counter = 1; signals.has(sg); counter++) {\n sg = varName(\"\".concat(name, \"_\").concat(suffix, \"_\").concat(counter));\n }\n signals.add(sg);\n return _defineProperty({}, range, sg);\n };\n var type = selCmpt.type;\n var cfg = model.config.selection[type];\n var init = selDef.value !== undefined ? array(selDef.value) : null;\n // If no explicit projection (either fields or encodings) is specified, set some defaults.\n // If an initial value is set, try to infer projections.\n var _ref2 = isObject(selDef.select) ? selDef.select : {},\n fields = _ref2.fields,\n encodings = _ref2.encodings;\n if (!fields && !encodings && init) {\n var _iterator = _createForOfIteratorHelper(init),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var initVal = _step.value;\n // initVal may be a scalar value to smoothen varParam -> pointSelection gradient.\n if (!isObject(initVal)) {\n continue;\n }\n var _iterator2 = _createForOfIteratorHelper(keys(initVal)),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var key = _step2.value;\n if (isSingleDefUnitChannel(key)) {\n (encodings || (encodings = [])).push(key);\n } else {\n if (type === 'interval') {\n log.warn(log.message.INTERVAL_INITIALIZED_WITH_POS);\n encodings = cfg.encodings;\n } else {\n var _fields;\n ((_fields = fields) !== null && _fields !== void 0 ? _fields : fields = []).push(key);\n }\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n // If no initial value is specified, use the default configuration.\n // We break this out as a separate if block (instead of an else condition)\n // to account for unprojected point selections that have scalar initial values\n if (!fields && !encodings) {\n encodings = cfg.encodings;\n if ('fields' in cfg) {\n fields = cfg.fields;\n }\n }\n var _iterator3 = _createForOfIteratorHelper((_encodings = encodings) !== null && _encodings !== void 0 ? _encodings : []),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var channel = _step3.value;\n var fieldDef = model.fieldDef(channel);\n if (fieldDef) {\n var field = fieldDef.field;\n if (fieldDef.aggregate) {\n log.warn(log.message.cannotProjectAggregate(channel, fieldDef.aggregate));\n continue;\n } else if (!field) {\n log.warn(log.message.cannotProjectOnChannelWithoutField(channel));\n continue;\n }\n if (fieldDef.timeUnit && !isBinnedTimeUnit(fieldDef.timeUnit)) {\n field = model.vgField(channel);\n // Construct TimeUnitComponents which will be combined into a\n // TimeUnitNode. This node may need to be inserted into the\n // dataflow if the selection is used across views that do not\n // have these time units defined.\n var component = {\n timeUnit: fieldDef.timeUnit,\n as: field,\n field: fieldDef.field\n };\n timeUnits[hash(component)] = component;\n }\n // Prevent duplicate projections on the same field.\n // TODO: what if the same field is bound to multiple channels (e.g., SPLOM diag).\n if (!parsed[field]) {\n // Determine whether the tuple will store enumerated or ranged values.\n // Interval selections store ranges for continuous scales, and enumerations otherwise.\n // Single/multi selections store ranges for binned fields, and enumerations otherwise.\n var tplType = type === 'interval' && isScaleChannel(channel) && hasContinuousDomain(model.getScaleComponent(channel).get('type')) ? 'R' : fieldDef.bin ? 'R-RE' : 'E';\n var p = {\n field: field,\n channel: channel,\n type: tplType,\n index: proj.items.length\n };\n p.signals = _objectSpread(_objectSpread({}, signalName(p, 'data')), signalName(p, 'visual'));\n proj.items.push(parsed[field] = p);\n proj.hasField[field] = parsed[field];\n proj.hasSelectionId = proj.hasSelectionId || field === SELECTION_ID;\n if (isGeoPositionChannel(channel)) {\n p.geoChannel = channel;\n p.channel = getPositionChannelFromLatLong(channel);\n proj.hasChannel[p.channel] = parsed[field];\n } else {\n proj.hasChannel[channel] = parsed[field];\n }\n }\n } else {\n log.warn(log.message.cannotProjectOnChannelWithoutField(channel));\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n var _iterator4 = _createForOfIteratorHelper((_fields2 = fields) !== null && _fields2 !== void 0 ? _fields2 : []),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var _field = _step4.value;\n if (proj.hasField[_field]) continue;\n var _p = {\n type: 'E',\n field: _field,\n index: proj.items.length\n };\n _p.signals = _objectSpread({}, signalName(_p, 'data'));\n proj.items.push(_p);\n proj.hasField[_field] = _p;\n proj.hasSelectionId = proj.hasSelectionId || _field === SELECTION_ID;\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n if (init) {\n selCmpt.init = init.map(function (v) {\n // Selections can be initialized either with a full object that maps projections to values\n // or scalar values to smoothen the abstraction gradient from variable params to point selections.\n return proj.items.map(function (p) {\n return isObject(v) ? v[p.geoChannel || p.channel] !== undefined ? v[p.geoChannel || p.channel] : v[p.field] : v;\n });\n });\n }\n if (!isEmpty(timeUnits)) {\n proj.timeUnit = new TimeUnitNode(null, timeUnits);\n }\n },\n signals: function signals(model, selCmpt, allSignals) {\n var name = selCmpt.name + TUPLE_FIELDS;\n var hasSignal = allSignals.filter(function (s) {\n return s.name === name;\n });\n return hasSignal.length > 0 || selCmpt.project.hasSelectionId ? allSignals : allSignals.concat({\n name: name,\n value: selCmpt.project.items.map(assembleProjection)\n });\n }\n};\nexport default project;","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { stringValue } from 'vega-util';\nimport { VL_SELECTION_RESOLVE } from '.';\nimport { isScaleChannel } from '../../channel';\nimport * as log from '../../log';\nimport { hasContinuousDomain } from '../../scale';\nimport { isLayerModel } from '../model';\nimport { replacePathInField } from '../../util';\nvar scaleBindings = {\n defined: function defined(selCmpt) {\n return selCmpt.type === 'interval' && selCmpt.resolve === 'global' && selCmpt.bind && selCmpt.bind === 'scales';\n },\n parse: function parse(model, selCmpt) {\n var bound = selCmpt.scales = [];\n var _iterator = _createForOfIteratorHelper(selCmpt.project.items),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var proj = _step.value;\n var channel = proj.channel;\n if (!isScaleChannel(channel)) {\n continue;\n }\n var scale = model.getScaleComponent(channel);\n var scaleType = scale ? scale.get('type') : undefined;\n if (!scale || !hasContinuousDomain(scaleType)) {\n log.warn(log.message.SCALE_BINDINGS_CONTINUOUS);\n continue;\n }\n scale.set('selectionExtent', {\n param: selCmpt.name,\n field: proj.field\n }, true);\n bound.push(proj);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n },\n topLevelSignals: function topLevelSignals(model, selCmpt, signals) {\n var bound = selCmpt.scales.filter(function (proj) {\n return signals.filter(function (s) {\n return s.name === proj.signals.data;\n }).length === 0;\n });\n // Top-level signals are only needed for multiview displays and if this\n // view's top-level signals haven't already been generated.\n if (!model.parent || isTopLevelLayer(model) || bound.length === 0) {\n return signals;\n }\n // vlSelectionResolve does not account for the behavior of bound scales in\n // multiview displays. Each unit view adds a tuple to the store, but the\n // state of the selection is the unit selection most recently updated. This\n // state is captured by the top-level signals that we insert and \"push\n // outer\" to from within the units. We need to reassemble this state into\n // the top-level named signal, except no single selCmpt has a global view.\n var namedSg = signals.filter(function (s) {\n return s.name === selCmpt.name;\n })[0];\n var update = namedSg.update;\n if (update.indexOf(VL_SELECTION_RESOLVE) >= 0) {\n namedSg.update = \"{\".concat(bound.map(function (proj) {\n return \"\".concat(stringValue(replacePathInField(proj.field)), \": \").concat(proj.signals.data);\n }).join(', '), \"}\");\n } else {\n var _iterator2 = _createForOfIteratorHelper(bound),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var proj = _step2.value;\n var mapping = \"\".concat(stringValue(replacePathInField(proj.field)), \": \").concat(proj.signals.data);\n if (!update.includes(mapping)) {\n update = \"\".concat(update.substring(0, update.length - 1), \", \").concat(mapping, \"}\");\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n namedSg.update = update;\n }\n return signals.concat(bound.map(function (proj) {\n return {\n name: proj.signals.data\n };\n }));\n },\n signals: function signals(model, selCmpt, _signals) {\n // Nested signals need only push to top-level signals with multiview displays.\n if (model.parent && !isTopLevelLayer(model)) {\n var _iterator3 = _createForOfIteratorHelper(selCmpt.scales),\n _step3;\n try {\n var _loop = function _loop() {\n var proj = _step3.value;\n var signal = _signals.filter(function (s) {\n return s.name === proj.signals.data;\n })[0];\n signal.push = 'outer';\n delete signal.value;\n delete signal.update;\n };\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n _loop();\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n }\n return _signals;\n }\n};\nexport default scaleBindings;\nexport function domain(model, channel) {\n var scale = stringValue(model.scaleName(channel));\n return \"domain(\".concat(scale, \")\");\n}\nfunction isTopLevelLayer(model) {\n var _model$parent$parent;\n return model.parent && isLayerModel(model.parent) && ((_model$parent$parent = !model.parent.parent) !== null && _model$parent$parent !== void 0 ? _model$parent$parent : isTopLevelLayer(model.parent.parent));\n}","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nvar _excluded = [\"fill\", \"fillOpacity\", \"cursor\"];\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { isObject } from 'vega';\nimport { array, stringValue } from 'vega-util';\nimport { STORE, TUPLE, unitName } from '.';\nimport { LATITUDE, LONGITUDE, X, Y } from '../../channel';\nimport { warn } from '../../log';\nimport { hasContinuousDomain } from '../../scale';\nimport { SELECTION_ID } from '../../selection';\nimport { keys, vals } from '../../util';\nimport { isUnitModel } from '../model';\nimport { assembleInit } from './assemble';\nimport { TUPLE_FIELDS } from './project';\nimport scales from './scales';\nexport var BRUSH = '_brush';\nexport var SCALE_TRIGGER = '_scale_trigger';\nexport var GEO_INIT_TICK = 'geo_interval_init_tick'; // Workaround for https://github.com/vega/vega/issues/3481\nvar INIT = '_init';\nvar CENTER = '_center';\nvar interval = {\n defined: function defined(selCmpt) {\n return selCmpt.type === 'interval';\n },\n parse: function parse(model, selCmpt, selDef) {\n var _a;\n if (model.hasProjection) {\n var def = _objectSpread({}, isObject(selDef.select) ? selDef.select : {});\n def.fields = [SELECTION_ID];\n if (!def.encodings) {\n // Remap default x/y projection\n def.encodings = selDef.value ? keys(selDef.value) : [LONGITUDE, LATITUDE];\n }\n selDef.select = _objectSpread({\n type: 'interval'\n }, def);\n }\n if (selCmpt.translate && !scales.defined(selCmpt)) {\n var filterExpr = \"!event.item || event.item.mark.name !== \".concat(stringValue(selCmpt.name + BRUSH));\n var _iterator = _createForOfIteratorHelper(selCmpt.events),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _a$filter;\n var evt = _step.value;\n if (!evt.between) {\n warn(\"\".concat(evt, \" is not an ordered event stream for interval selections.\"));\n continue;\n }\n var filters = array((_a$filter = (_a = evt.between[0]).filter) !== null && _a$filter !== void 0 ? _a$filter : _a.filter = []);\n if (filters.indexOf(filterExpr) < 0) {\n filters.push(filterExpr);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n },\n signals: function signals(model, selCmpt, _signals) {\n var name = selCmpt.name;\n var tupleSg = name + TUPLE;\n var channels = vals(selCmpt.project.hasChannel).filter(function (p) {\n return p.channel === X || p.channel === Y;\n });\n var init = selCmpt.init ? selCmpt.init[0] : null;\n _signals.push.apply(_signals, _toConsumableArray(channels.reduce(function (arr, proj) {\n return arr.concat(channelSignals(model, selCmpt, proj, init && init[proj.index]));\n }, [])));\n if (!model.hasProjection) {\n // Proxy scale reactions to ensure that an infinite loop doesn't occur\n // when an interval selection filter touches the scale.\n if (!scales.defined(selCmpt)) {\n var triggerSg = name + SCALE_TRIGGER;\n var scaleTriggers = channels.map(function (proj) {\n var channel = proj.channel;\n var _proj$signals = proj.signals,\n dname = _proj$signals.data,\n vname = _proj$signals.visual;\n var scaleName = stringValue(model.scaleName(channel));\n var scaleType = model.getScaleComponent(channel).get('type');\n var toNum = hasContinuousDomain(scaleType) ? '+' : '';\n return \"(!isArray(\".concat(dname, \") || \") + \"(\".concat(toNum, \"invert(\").concat(scaleName, \", \").concat(vname, \")[0] === \").concat(toNum).concat(dname, \"[0] && \") + \"\".concat(toNum, \"invert(\").concat(scaleName, \", \").concat(vname, \")[1] === \").concat(toNum).concat(dname, \"[1]))\");\n });\n if (scaleTriggers.length) {\n _signals.push({\n name: triggerSg,\n value: {},\n on: [{\n events: channels.map(function (proj) {\n return {\n scale: model.scaleName(proj.channel)\n };\n }),\n update: scaleTriggers.join(' && ') + \" ? \".concat(triggerSg, \" : {}\")\n }]\n });\n }\n }\n // Only add an interval to the store if it has valid data extents. Data extents\n // are set to null if pixel extents are equal to account for intervals over\n // ordinal/nominal domains which, when inverted, will still produce a valid datum.\n var dataSignals = channels.map(function (proj) {\n return proj.signals.data;\n });\n var update = \"unit: \".concat(unitName(model), \", fields: \").concat(name + TUPLE_FIELDS, \", values\");\n return _signals.concat(_objectSpread(_objectSpread({\n name: tupleSg\n }, init ? {\n init: \"{\".concat(update, \": \").concat(assembleInit(init), \"}\")\n } : {}), dataSignals.length ? {\n on: [{\n events: [{\n signal: dataSignals.join(' || ')\n }],\n update: \"\".concat(dataSignals.join(' && '), \" ? {\").concat(update, \": [\").concat(dataSignals, \"]} : null\")\n }]\n } : {}));\n } else {\n var projection = stringValue(model.projectionName());\n var centerSg = model.projectionName() + CENTER;\n var _selCmpt$project$hasC = selCmpt.project.hasChannel,\n x = _selCmpt$project$hasC.x,\n y = _selCmpt$project$hasC.y;\n var xvname = x && x.signals.visual;\n var yvname = y && y.signals.visual;\n var xinit = x ? init && init[x.index] : \"\".concat(centerSg, \"[0]\");\n var yinit = y ? init && init[y.index] : \"\".concat(centerSg, \"[1]\");\n var sizeSg = function sizeSg(layout) {\n return model.getSizeSignalRef(layout).signal;\n };\n var bbox = \"[\" + \"[\".concat(xvname ? xvname + '[0]' : '0', \", \").concat(yvname ? yvname + '[0]' : '0', \"],\") + \"[\".concat(xvname ? xvname + '[1]' : sizeSg('width'), \", \") + \"\".concat(yvname ? yvname + '[1]' : sizeSg('height'), \"]\") + \"]\";\n if (init) {\n _signals.unshift({\n name: name + INIT,\n init: \"[scale(\".concat(projection, \", [\").concat(x ? xinit[0] : xinit, \", \").concat(y ? yinit[0] : yinit, \"]), \") + \"scale(\".concat(projection, \", [\").concat(x ? xinit[1] : xinit, \", \").concat(y ? yinit[1] : yinit, \"])]\")\n });\n if (!x || !y) {\n // If initializing a uni-dimensional brush, use the center of the view to determine the other coord\n var hasCenterSg = _signals.find(function (s) {\n return s.name === centerSg;\n });\n if (!hasCenterSg) {\n _signals.unshift({\n name: centerSg,\n update: \"invert(\".concat(projection, \", [\").concat(sizeSg('width'), \"/2, \").concat(sizeSg('height'), \"/2])\")\n });\n }\n }\n }\n var intersect = \"intersect(\".concat(bbox, \", {markname: \").concat(stringValue(model.getName('marks')), \"}, unit.mark)\");\n var base = \"{unit: \".concat(unitName(model), \"}\");\n var _update = \"vlSelectionTuples(\".concat(intersect, \", \").concat(base, \")\");\n var visualSignals = channels.map(function (proj) {\n return proj.signals.visual;\n });\n return _signals.concat({\n name: tupleSg,\n on: [{\n events: [].concat(_toConsumableArray(visualSignals.length ? [{\n signal: visualSignals.join(' || ')\n }] : []), _toConsumableArray(init ? [{\n signal: GEO_INIT_TICK\n }] : [])),\n update: _update\n }]\n });\n }\n },\n topLevelSignals: function topLevelSignals(model, selCmpt, signals) {\n if (isUnitModel(model) && model.hasProjection && selCmpt.init) {\n // Workaround for https://github.com/vega/vega/issues/3481\n // The scenegraph isn't populated on the first pulse. So we use a timer signal\n // to re-pulse the dataflow as soon as possible. We return an object to ensure\n // this only occurs once.\n var hasTick = signals.filter(function (s) {\n return s.name === GEO_INIT_TICK;\n });\n if (!hasTick.length) {\n signals.unshift({\n name: GEO_INIT_TICK,\n value: null,\n on: [{\n events: 'timer{1}',\n update: \"\".concat(GEO_INIT_TICK, \" === null ? {} : \").concat(GEO_INIT_TICK)\n }]\n });\n }\n }\n return signals;\n },\n marks: function marks(model, selCmpt, _marks) {\n var name = selCmpt.name;\n var _selCmpt$project$hasC2 = selCmpt.project.hasChannel,\n x = _selCmpt$project$hasC2.x,\n y = _selCmpt$project$hasC2.y;\n var xvname = x === null || x === void 0 ? void 0 : x.signals.visual;\n var yvname = y === null || y === void 0 ? void 0 : y.signals.visual;\n var store = \"data(\".concat(stringValue(selCmpt.name + STORE), \")\");\n // Do not add a brush if we're binding to scales\n // or we don't have a valid interval projection\n if (scales.defined(selCmpt) || !x && !y) {\n return _marks;\n }\n var update = {\n x: x !== undefined ? {\n signal: \"\".concat(xvname, \"[0]\")\n } : {\n value: 0\n },\n y: y !== undefined ? {\n signal: \"\".concat(yvname, \"[0]\")\n } : {\n value: 0\n },\n x2: x !== undefined ? {\n signal: \"\".concat(xvname, \"[1]\")\n } : {\n field: {\n group: 'width'\n }\n },\n y2: y !== undefined ? {\n signal: \"\".concat(yvname, \"[1]\")\n } : {\n field: {\n group: 'height'\n }\n }\n };\n // If the selection is resolved to global, only a single interval is in\n // the store. Wrap brush mark's encodings with a production rule to test\n // this based on the `unit` property. Hide the brush mark if it corresponds\n // to a unit different from the one in the store.\n if (selCmpt.resolve === 'global') {\n var _iterator2 = _createForOfIteratorHelper(keys(update)),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var key = _step2.value;\n update[key] = [_objectSpread({\n test: \"\".concat(store, \".length && \").concat(store, \"[0].unit === \").concat(unitName(model))\n }, update[key]), {\n value: 0\n }];\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n // Two brush marks ensure that fill colors and other aesthetic choices do\n // not interefere with the core marks, but that the brushed region can still\n // be interacted with (e.g., dragging it around).\n var _selCmpt$mark = selCmpt.mark,\n fill = _selCmpt$mark.fill,\n fillOpacity = _selCmpt$mark.fillOpacity,\n cursor = _selCmpt$mark.cursor,\n stroke = _objectWithoutProperties(_selCmpt$mark, _excluded);\n var vgStroke = keys(stroke).reduce(function (def, k) {\n def[k] = [{\n test: [x !== undefined && \"\".concat(xvname, \"[0] !== \").concat(xvname, \"[1]\"), y !== undefined && \"\".concat(yvname, \"[0] !== \").concat(yvname, \"[1]\")].filter(function (t) {\n return t;\n }).join(' && '),\n value: stroke[k]\n }, {\n value: null\n }];\n return def;\n }, {});\n return [{\n name: \"\".concat(name + BRUSH, \"_bg\"),\n type: 'rect',\n clip: true,\n encode: {\n enter: {\n fill: {\n value: fill\n },\n fillOpacity: {\n value: fillOpacity\n }\n },\n update: update\n }\n }].concat(_toConsumableArray(_marks), [{\n name: name + BRUSH,\n type: 'rect',\n clip: true,\n encode: {\n enter: _objectSpread(_objectSpread({}, cursor ? {\n cursor: {\n value: cursor\n }\n } : {}), {}, {\n fill: {\n value: 'transparent'\n }\n }),\n update: _objectSpread(_objectSpread({}, update), vgStroke)\n }\n }]);\n }\n};\nexport default interval;\n/**\n * Returns the visual and data signals for an interval selection.\n */\nfunction channelSignals(model, selCmpt, proj, init) {\n var scaledInterval = !model.hasProjection;\n var channel = proj.channel;\n var vname = proj.signals.visual;\n var scaleName = stringValue(scaledInterval ? model.scaleName(channel) : model.projectionName());\n var scaled = function scaled(str) {\n return \"scale(\".concat(scaleName, \", \").concat(str, \")\");\n };\n var size = model.getSizeSignalRef(channel === X ? 'width' : 'height').signal;\n var coord = \"\".concat(channel, \"(unit)\");\n var von = selCmpt.events.reduce(function (def, evt) {\n return [].concat(_toConsumableArray(def), [{\n events: evt.between[0],\n update: \"[\".concat(coord, \", \").concat(coord, \"]\")\n }, {\n events: evt,\n update: \"[\".concat(vname, \"[0], clamp(\").concat(coord, \", 0, \").concat(size, \")]\")\n } // Brush End\n ]);\n }, []);\n if (scaledInterval) {\n var dname = proj.signals.data;\n var hasScales = scales.defined(selCmpt);\n var scale = model.getScaleComponent(channel);\n var scaleType = scale ? scale.get('type') : undefined;\n var vinit = init ? {\n init: assembleInit(init, true, scaled)\n } : {\n value: []\n };\n // React to pan/zooms of continuous scales. Non-continuous scales\n // (band, point) cannot be pan/zoomed and any other changes\n // to their domains (e.g., filtering) should clear the brushes.\n von.push({\n events: {\n signal: selCmpt.name + SCALE_TRIGGER\n },\n update: hasContinuousDomain(scaleType) ? \"[\".concat(scaled(\"\".concat(dname, \"[0]\")), \", \").concat(scaled(\"\".concat(dname, \"[1]\")), \"]\") : \"[0, 0]\"\n });\n return hasScales ? [{\n name: dname,\n on: []\n }] : [_objectSpread(_objectSpread({\n name: vname\n }, vinit), {}, {\n on: von\n }), _objectSpread(_objectSpread({\n name: dname\n }, init ? {\n init: assembleInit(init)\n } : {}), {}, {\n on: [{\n events: {\n signal: vname\n },\n update: \"\".concat(vname, \"[0] === \").concat(vname, \"[1] ? null : invert(\").concat(scaleName, \", \").concat(vname, \")\")\n }]\n })];\n } else {\n var initIdx = channel === X ? 0 : 1;\n var initSg = selCmpt.name + INIT;\n var _vinit = init ? {\n init: \"[\".concat(initSg, \"[0][\").concat(initIdx, \"], \").concat(initSg, \"[1][\").concat(initIdx, \"]]\")\n } : {\n value: []\n };\n return [_objectSpread(_objectSpread({\n name: vname\n }, _vinit), {}, {\n on: von\n })];\n }\n}","import { stringValue } from 'vega-util';\nimport { TUPLE, unitName } from '.';\nimport { SELECTION_ID } from '../../selection';\nimport { vals } from '../../util';\nimport { BRUSH } from './interval';\nimport { TUPLE_FIELDS } from './project';\nvar point = {\n defined: function defined(selCmpt) {\n return selCmpt.type === 'point';\n },\n signals: function signals(model, selCmpt, _signals) {\n var _model$component$sele;\n var name = selCmpt.name;\n var fieldsSg = name + TUPLE_FIELDS;\n var project = selCmpt.project;\n var datum = '(item().isVoronoi ? datum.datum : datum)';\n // Only add a discrete selection to the store if a datum is present _and_\n // the interaction isn't occurring on a group mark. This guards against\n // polluting interactive state with invalid values in faceted displays\n // as the group marks are also data-driven. We force the update to account\n // for constant null states but varying toggles (e.g., shift-click in\n // whitespace followed by a click in whitespace; the store should only\n // be cleared on the second click).\n var brushes = vals((_model$component$sele = model.component.selection) !== null && _model$component$sele !== void 0 ? _model$component$sele : {}).reduce(function (acc, cmpt) {\n return cmpt.type === 'interval' ? acc.concat(cmpt.name + BRUSH) : acc;\n }, []).map(function (b) {\n return \"indexof(item().mark.name, '\".concat(b, \"') < 0\");\n }).join(' && ');\n var test = \"datum && item().mark.marktype !== 'group' && indexof(item().mark.role, 'legend') < 0\".concat(brushes ? \" && \".concat(brushes) : '');\n var update = \"unit: \".concat(unitName(model), \", \");\n if (selCmpt.project.hasSelectionId) {\n update += \"\".concat(SELECTION_ID, \": \").concat(datum, \"[\").concat(stringValue(SELECTION_ID), \"]\");\n } else {\n var values = project.items.map(function (p) {\n var fieldDef = model.fieldDef(p.channel);\n // Binned fields should capture extents, for a range test against the raw field.\n return fieldDef !== null && fieldDef !== void 0 && fieldDef.bin ? \"[\".concat(datum, \"[\").concat(stringValue(model.vgField(p.channel, {})), \"], \") + \"\".concat(datum, \"[\").concat(stringValue(model.vgField(p.channel, {\n binSuffix: 'end'\n })), \"]]\") : \"\".concat(datum, \"[\").concat(stringValue(p.field), \"]\");\n }).join(', ');\n update += \"fields: \".concat(fieldsSg, \", values: [\").concat(values, \"]\");\n }\n var events = selCmpt.events;\n return _signals.concat([{\n name: name + TUPLE,\n on: events ? [{\n events: events,\n update: \"\".concat(test, \" ? {\").concat(update, \"} : null\"),\n force: true\n }] : []\n }]);\n }\n};\nexport default point;","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { array } from 'vega-util';\nimport { isConditionalDef, isConditionalParameter } from '../../../channeldef';\nimport { expression } from '../../predicate';\nimport { parseSelectionPredicate } from '../../selection/parse';\n/**\n * Return a mixin that includes a Vega production rule for a Vega-Lite conditional channel definition\n * or a simple mixin if channel def has no condition.\n */\nexport function wrapCondition(model, channelDef, vgChannel, refFn) {\n var condition = isConditionalDef(channelDef) && channelDef.condition;\n var valueRef = refFn(channelDef);\n if (condition) {\n var conditions = array(condition);\n var vgConditions = conditions.map(function (c) {\n var conditionValueRef = refFn(c);\n if (isConditionalParameter(c)) {\n var param = c.param,\n empty = c.empty;\n var test = parseSelectionPredicate(model, {\n param: param,\n empty: empty\n });\n return _objectSpread({\n test: test\n }, conditionValueRef);\n } else {\n var _test = expression(model, c.test); // FIXME: remove casting once TS is no longer dumb about it\n return _objectSpread({\n test: _test\n }, conditionValueRef);\n }\n });\n return _defineProperty({}, vgChannel, [].concat(_toConsumableArray(vgConditions), _toConsumableArray(valueRef !== undefined ? [valueRef] : [])));\n } else {\n return valueRef !== undefined ? _defineProperty({}, vgChannel, valueRef) : {};\n }\n}","import { getFormatMixins, isFieldOrDatumDef, isValueDef } from '../../../channeldef';\nimport { signalOrValueRef } from '../../common';\nimport { formatSignalRef } from '../../format';\nimport { wrapCondition } from './conditional';\nexport function text(model) {\n var channel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'text';\n var channelDef = model.encoding[channel];\n return wrapCondition(model, channelDef, channel, function (cDef) {\n return textRef(cDef, model.config);\n });\n}\nexport function textRef(channelDef, config) {\n var expr = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'datum';\n // text\n if (channelDef) {\n if (isValueDef(channelDef)) {\n return signalOrValueRef(channelDef.value);\n }\n if (isFieldOrDatumDef(channelDef)) {\n var _getFormatMixins = getFormatMixins(channelDef),\n format = _getFormatMixins.format,\n formatType = _getFormatMixins.formatType;\n return formatSignalRef({\n fieldOrDatumDef: channelDef,\n format: format,\n formatType: formatType,\n expr: expr,\n config: config\n });\n }\n }\n return undefined;\n}","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport \"core-js/modules/esnext.string.replace-all.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { array, isArray, isObject, isString } from 'vega-util';\nimport { isBinned } from '../../../bin';\nimport { getMainRangeChannel, isXorY, THETA, RADIUS } from '../../../channel';\nimport { defaultTitle, getFieldDef, getFormatMixins, hasConditionalFieldDef, isFieldDef, isTypedFieldDef, vgField } from '../../../channeldef';\nimport { forEach } from '../../../encoding';\nimport { entries } from '../../../util';\nimport { isSignalRef } from '../../../vega.schema';\nimport { getMarkPropOrConfig } from '../../common';\nimport { binFormatExpression, formatSignalRef } from '../../format';\nimport { wrapCondition } from './conditional';\nimport { textRef } from './text';\nexport function tooltip(model) {\n var opt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var encoding = model.encoding,\n markDef = model.markDef,\n config = model.config,\n stack = model.stack;\n var channelDef = encoding.tooltip;\n if (isArray(channelDef)) {\n return {\n tooltip: tooltipRefForEncoding({\n tooltip: channelDef\n }, stack, config, opt)\n };\n } else {\n var datum = opt.reactiveGeom ? 'datum.datum' : 'datum';\n return wrapCondition(model, channelDef, 'tooltip', function (cDef) {\n // use valueRef based on channelDef first\n var tooltipRefFromChannelDef = textRef(cDef, config, datum);\n if (tooltipRefFromChannelDef) {\n return tooltipRefFromChannelDef;\n }\n if (cDef === null) {\n // Allow using encoding.tooltip = null to disable tooltip\n return undefined;\n }\n var markTooltip = getMarkPropOrConfig('tooltip', markDef, config);\n if (markTooltip === true) {\n markTooltip = {\n content: 'encoding'\n };\n }\n if (isString(markTooltip)) {\n return {\n value: markTooltip\n };\n } else if (isObject(markTooltip)) {\n // `tooltip` is `{fields: 'encodings' | 'fields'}`\n if (isSignalRef(markTooltip)) {\n return markTooltip;\n } else if (markTooltip.content === 'encoding') {\n return tooltipRefForEncoding(encoding, stack, config, opt);\n } else {\n return {\n signal: datum\n };\n }\n }\n return undefined;\n });\n }\n}\nexport function tooltipData(encoding, stack, config) {\n var _ref = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {},\n reactiveGeom = _ref.reactiveGeom;\n var formatConfig = _objectSpread(_objectSpread({}, config), config.tooltipFormat);\n var toSkip = {};\n var expr = reactiveGeom ? 'datum.datum' : 'datum';\n var tuples = [];\n function add(fDef, channel) {\n var _value;\n var mainChannel = getMainRangeChannel(channel);\n var fieldDef = isTypedFieldDef(fDef) ? fDef : _objectSpread(_objectSpread({}, fDef), {}, {\n type: encoding[mainChannel].type // for secondary field def, copy type from main channel\n });\n\n var title = fieldDef.title || defaultTitle(fieldDef, formatConfig);\n var key = array(title).join(', ').replaceAll(/\"/g, '\\\\\"');\n var value;\n if (isXorY(channel)) {\n var channel2 = channel === 'x' ? 'x2' : 'y2';\n var fieldDef2 = getFieldDef(encoding[channel2]);\n if (isBinned(fieldDef.bin) && fieldDef2) {\n var startField = vgField(fieldDef, {\n expr: expr\n });\n var endField = vgField(fieldDef2, {\n expr: expr\n });\n var _getFormatMixins = getFormatMixins(fieldDef),\n format = _getFormatMixins.format,\n formatType = _getFormatMixins.formatType;\n value = binFormatExpression(startField, endField, format, formatType, formatConfig);\n toSkip[channel2] = true;\n }\n }\n if ((isXorY(channel) || channel === THETA || channel === RADIUS) && stack && stack.fieldChannel === channel && stack.offset === 'normalize') {\n var _getFormatMixins2 = getFormatMixins(fieldDef),\n _format = _getFormatMixins2.format,\n _formatType = _getFormatMixins2.formatType;\n value = formatSignalRef({\n fieldOrDatumDef: fieldDef,\n format: _format,\n formatType: _formatType,\n expr: expr,\n config: formatConfig,\n normalizeStack: true\n }).signal;\n }\n (_value = value) !== null && _value !== void 0 ? _value : value = textRef(fieldDef, formatConfig, expr).signal;\n tuples.push({\n channel: channel,\n key: key,\n value: value\n });\n }\n forEach(encoding, function (channelDef, channel) {\n if (isFieldDef(channelDef)) {\n add(channelDef, channel);\n } else if (hasConditionalFieldDef(channelDef)) {\n add(channelDef.condition, channel);\n }\n });\n var out = {};\n for (var _i = 0, _tuples = tuples; _i < _tuples.length; _i++) {\n var _tuples$_i = _tuples[_i],\n channel = _tuples$_i.channel,\n key = _tuples$_i.key,\n value = _tuples$_i.value;\n if (!toSkip[channel] && !out[key]) {\n out[key] = value;\n }\n }\n return out;\n}\nexport function tooltipRefForEncoding(encoding, stack, config) {\n var _ref2 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {},\n reactiveGeom = _ref2.reactiveGeom;\n var data = tooltipData(encoding, stack, config, {\n reactiveGeom: reactiveGeom\n });\n var keyValues = entries(data).map(function (_ref3) {\n var _ref4 = _slicedToArray(_ref3, 2),\n key = _ref4[0],\n value = _ref4[1];\n return \"\\\"\".concat(key, \"\\\": \").concat(value);\n });\n return keyValues.length > 0 ? {\n signal: \"{\".concat(keyValues.join(', '), \"}\")\n } : undefined;\n}","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { entries, isEmpty } from '../../../util';\nimport { getMarkPropOrConfig, signalOrValueRef } from '../../common';\nimport { VG_MARK_INDEX } from './../../../vega.schema';\nimport { wrapCondition } from './conditional';\nimport { textRef } from './text';\nimport { tooltipData } from './tooltip';\nexport function aria(model) {\n var markDef = model.markDef,\n config = model.config;\n var enableAria = getMarkPropOrConfig('aria', markDef, config);\n // We can ignore other aria properties if ariaHidden is true.\n if (enableAria === false) {\n // getMarkGroups sets aria to false already so we don't have to set it in the encode block\n return {};\n }\n return _objectSpread(_objectSpread(_objectSpread({}, enableAria ? {\n aria: enableAria\n } : {}), ariaRoleDescription(model)), description(model));\n}\nfunction ariaRoleDescription(model) {\n var mark = model.mark,\n markDef = model.markDef,\n config = model.config;\n if (config.aria === false) {\n return {};\n }\n var ariaRoleDesc = getMarkPropOrConfig('ariaRoleDescription', markDef, config);\n if (ariaRoleDesc != null) {\n return {\n ariaRoleDescription: {\n value: ariaRoleDesc\n }\n };\n }\n return mark in VG_MARK_INDEX ? {} : {\n ariaRoleDescription: {\n value: mark\n }\n };\n}\nexport function description(model) {\n var encoding = model.encoding,\n markDef = model.markDef,\n config = model.config,\n stack = model.stack;\n var channelDef = encoding.description;\n if (channelDef) {\n return wrapCondition(model, channelDef, 'description', function (cDef) {\n return textRef(cDef, model.config);\n });\n }\n // Use default from mark def or config if defined.\n // Functions in encode usually just return undefined but since we are defining a default below, we need to check the default here.\n var descriptionValue = getMarkPropOrConfig('description', markDef, config);\n if (descriptionValue != null) {\n return {\n description: signalOrValueRef(descriptionValue)\n };\n }\n if (config.aria === false) {\n return {};\n }\n var data = tooltipData(encoding, stack, config);\n if (isEmpty(data)) {\n return undefined;\n }\n return {\n description: {\n signal: entries(data).map(function (_ref, index) {\n var _ref2 = _slicedToArray(_ref, 2),\n key = _ref2[0],\n value = _ref2[1];\n return \"\\\"\".concat(index > 0 ? '; ' : '').concat(key, \": \\\" + (\").concat(value, \")\");\n }).join(' + ')\n }\n };\n}","import { getMarkPropOrConfig, signalOrValueRef } from '../../common';\nimport { wrapCondition } from './conditional';\nimport * as ref from './valueref';\n/**\n * Return encode for non-positional channels with scales. (Text doesn't have scale.)\n */\nexport function nonPosition(channel, model) {\n var opt = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var markDef = model.markDef,\n encoding = model.encoding,\n config = model.config;\n var vgChannel = opt.vgChannel;\n var defaultRef = opt.defaultRef,\n defaultValue = opt.defaultValue;\n if (defaultRef === undefined) {\n var _defaultValue;\n // prettier-ignore\n (_defaultValue = defaultValue) !== null && _defaultValue !== void 0 ? _defaultValue : defaultValue = getMarkPropOrConfig(channel, markDef, config, {\n vgChannel: vgChannel,\n ignoreVgConfig: true\n });\n if (defaultValue !== undefined) {\n defaultRef = signalOrValueRef(defaultValue);\n }\n }\n var channelDef = encoding[channel];\n return wrapCondition(model, channelDef, vgChannel !== null && vgChannel !== void 0 ? vgChannel : channel, function (cDef) {\n return ref.midPoint({\n channel: channel,\n channelDef: cDef,\n markDef: markDef,\n config: config,\n scaleName: model.scaleName(channel),\n scale: model.getScaleComponent(channel),\n stack: null,\n defaultRef: defaultRef\n });\n });\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport * as log from '../../../log';\nimport { contains } from '../../../util';\nimport { getMarkPropOrConfig, signalOrValueRef } from '../../common';\nimport { nonPosition } from './nonposition';\nexport function color(model) {\n var _opt$filled, _ref, _getMarkPropOrConfig, _getMarkPropOrConfig2;\n var opt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n filled: undefined\n };\n var markDef = model.markDef,\n encoding = model.encoding,\n config = model.config;\n var markType = markDef.type;\n // Allow filled to be overridden (for trail's \"filled\")\n var filled = (_opt$filled = opt.filled) !== null && _opt$filled !== void 0 ? _opt$filled : getMarkPropOrConfig('filled', markDef, config);\n var transparentIfNeeded = contains(['bar', 'point', 'circle', 'square', 'geoshape'], markType) ? 'transparent' : undefined;\n var defaultFill = (_ref = (_getMarkPropOrConfig = getMarkPropOrConfig(filled === true ? 'color' : undefined, markDef, config, {\n vgChannel: 'fill'\n })) !== null && _getMarkPropOrConfig !== void 0 ? _getMarkPropOrConfig :\n // need to add this manually as getMarkConfig normally drops config.mark[channel] if vgChannel is specified\n config.mark[filled === true && 'color']) !== null && _ref !== void 0 ? _ref :\n // If there is no fill, always fill symbols, bar, geoshape\n // with transparent fills https://github.com/vega/vega-lite/issues/1316\n transparentIfNeeded;\n var defaultStroke = (_getMarkPropOrConfig2 = getMarkPropOrConfig(filled === false ? 'color' : undefined, markDef, config, {\n vgChannel: 'stroke'\n })) !== null && _getMarkPropOrConfig2 !== void 0 ? _getMarkPropOrConfig2 :\n // need to add this manually as getMarkConfig normally drops config.mark[channel] if vgChannel is specified\n config.mark[filled === false && 'color'];\n var colorVgChannel = filled ? 'fill' : 'stroke';\n var fillStrokeMarkDefAndConfig = _objectSpread(_objectSpread({}, defaultFill ? {\n fill: signalOrValueRef(defaultFill)\n } : {}), defaultStroke ? {\n stroke: signalOrValueRef(defaultStroke)\n } : {});\n if (markDef.color && (filled ? markDef.fill : markDef.stroke)) {\n log.warn(log.message.droppingColor('property', {\n fill: 'fill' in markDef,\n stroke: 'stroke' in markDef\n }));\n }\n return _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, fillStrokeMarkDefAndConfig), nonPosition('color', model, {\n vgChannel: colorVgChannel,\n defaultValue: filled ? defaultFill : defaultStroke\n })), nonPosition('fill', model, {\n // if there is encoding.fill, include default fill just in case we have conditional-only fill encoding\n defaultValue: encoding.fill ? defaultFill : undefined\n })), nonPosition('stroke', model, {\n // if there is encoding.stroke, include default fill just in case we have conditional-only stroke encoding\n defaultValue: encoding.stroke ? defaultStroke : undefined\n }));\n}","import { signalOrValueRef } from '../../common';\nimport { midPoint } from './valueref';\nexport function positionOffset(_ref) {\n var baseChannel = _ref.channel,\n markDef = _ref.markDef,\n _ref$encoding = _ref.encoding,\n encoding = _ref$encoding === void 0 ? {} : _ref$encoding,\n model = _ref.model,\n bandPosition = _ref.bandPosition;\n var channel = \"\".concat(baseChannel, \"Offset\"); // Need to cast as the type can't be inferred automatically\n var defaultValue = markDef[channel];\n var channelDef = encoding[channel];\n if ((channel === 'xOffset' || channel === 'yOffset') && channelDef) {\n var ref = midPoint({\n channel: channel,\n channelDef: channelDef,\n markDef: markDef,\n config: model === null || model === void 0 ? void 0 : model.config,\n scaleName: model.scaleName(channel),\n scale: model.getScaleComponent(channel),\n stack: null,\n defaultRef: signalOrValueRef(defaultValue),\n bandPosition: bandPosition\n });\n return {\n offsetType: 'encoding',\n offset: ref\n };\n }\n var markDefOffsetValue = markDef[channel];\n if (markDefOffsetValue) {\n return {\n offsetType: 'visual',\n offset: markDefOffsetValue\n };\n }\n return {};\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { getMainRangeChannel, getSecondaryRangeChannel, getSizeChannel, getVgPositionChannel, isXorY } from '../../../channel';\nimport { isFieldDef, isFieldOrDatumDef } from '../../../channeldef';\nimport { ScaleType } from '../../../scale';\nimport { contains } from '../../../util';\nimport { getMarkPropOrConfig } from '../../common';\nimport { positionOffset } from './offset';\nimport * as ref from './valueref';\n/**\n * Return encode for point (non-band) position channels.\n */\nexport function pointPosition(channel, model, _ref) {\n var defaultPos = _ref.defaultPos,\n vgChannel = _ref.vgChannel;\n var encoding = model.encoding,\n markDef = model.markDef,\n config = model.config,\n stack = model.stack;\n var channelDef = encoding[channel];\n var channel2Def = encoding[getSecondaryRangeChannel(channel)];\n var scaleName = model.scaleName(channel);\n var scale = model.getScaleComponent(channel);\n var _positionOffset = positionOffset({\n channel: channel,\n markDef: markDef,\n encoding: encoding,\n model: model,\n bandPosition: 0.5\n }),\n offset = _positionOffset.offset,\n offsetType = _positionOffset.offsetType;\n // Get default position or position from mark def\n var defaultRef = pointPositionDefaultRef({\n model: model,\n defaultPos: defaultPos,\n channel: channel,\n scaleName: scaleName,\n scale: scale\n });\n var valueRef = !channelDef && isXorY(channel) && (encoding.latitude || encoding.longitude) ?\n // use geopoint output if there are lat/long and there is no point position overriding lat/long.\n {\n field: model.getName(channel)\n } : positionRef({\n channel: channel,\n channelDef: channelDef,\n channel2Def: channel2Def,\n markDef: markDef,\n config: config,\n scaleName: scaleName,\n scale: scale,\n stack: stack,\n offset: offset,\n defaultRef: defaultRef,\n bandPosition: offsetType === 'encoding' ? 0 : undefined\n });\n return valueRef ? _defineProperty({}, vgChannel || channel, valueRef) : undefined;\n}\n// TODO: we need to find a way to refactor these so that scaleName is a part of scale\n// but that's complicated. For now, this is a huge step moving forward.\n/**\n * @return Vega ValueRef for normal x- or y-position without projection\n */\nexport function positionRef(params) {\n var channel = params.channel,\n channelDef = params.channelDef,\n scaleName = params.scaleName,\n stack = params.stack,\n offset = params.offset,\n markDef = params.markDef;\n // This isn't a part of midPoint because we use midPoint for non-position too\n if (isFieldOrDatumDef(channelDef) && stack && channel === stack.fieldChannel) {\n if (isFieldDef(channelDef)) {\n var bandPosition = channelDef.bandPosition;\n if (bandPosition === undefined && markDef.type === 'text' && (channel === 'radius' || channel === 'theta')) {\n // theta and radius of text mark should use bandPosition = 0.5 by default\n // so that labels for arc marks are centered automatically\n bandPosition = 0.5;\n }\n if (bandPosition !== undefined) {\n return ref.interpolatedSignalRef({\n scaleName: scaleName,\n fieldOrDatumDef: channelDef,\n startSuffix: 'start',\n bandPosition: bandPosition,\n offset: offset\n });\n }\n }\n // x or y use stack_end so that stacked line's point mark use stack_end too.\n return ref.valueRefForFieldOrDatumDef(channelDef, scaleName, {\n suffix: 'end'\n }, {\n offset: offset\n });\n }\n return ref.midPointRefWithPositionInvalidTest(params);\n}\nexport function pointPositionDefaultRef(_ref3) {\n var model = _ref3.model,\n defaultPos = _ref3.defaultPos,\n channel = _ref3.channel,\n scaleName = _ref3.scaleName,\n scale = _ref3.scale;\n var markDef = model.markDef,\n config = model.config;\n return function () {\n var mainChannel = getMainRangeChannel(channel);\n var vgChannel = getVgPositionChannel(channel);\n var definedValueOrConfig = getMarkPropOrConfig(channel, markDef, config, {\n vgChannel: vgChannel\n });\n if (definedValueOrConfig !== undefined) {\n return ref.widthHeightValueOrSignalRef(channel, definedValueOrConfig);\n }\n switch (defaultPos) {\n case 'zeroOrMin':\n case 'zeroOrMax':\n if (scaleName) {\n var scaleType = scale.get('type');\n if (contains([ScaleType.LOG, ScaleType.TIME, ScaleType.UTC], scaleType)) {\n // Log scales cannot have zero.\n // Zero in time scale is arbitrary, and does not affect ratio.\n // (Time is an interval level of measurement, not ratio).\n // See https://en.wikipedia.org/wiki/Level_of_measurement for more info.\n } else {\n if (scale.domainDefinitelyIncludesZero()) {\n return {\n scale: scaleName,\n value: 0\n };\n }\n }\n }\n if (defaultPos === 'zeroOrMin') {\n return mainChannel === 'y' ? {\n field: {\n group: 'height'\n }\n } : {\n value: 0\n };\n } else {\n // zeroOrMax\n switch (mainChannel) {\n case 'radius':\n // max of radius is min(width, height) / 2\n return {\n signal: \"min(\".concat(model.width.signal, \",\").concat(model.height.signal, \")/2\")\n };\n case 'theta':\n return {\n signal: '2*PI'\n };\n case 'x':\n return {\n field: {\n group: 'width'\n }\n };\n case 'y':\n return {\n value: 0\n };\n }\n }\n break;\n case 'mid':\n {\n var sizeRef = model[getSizeChannel(channel)];\n return _objectSpread(_objectSpread({}, sizeRef), {}, {\n mult: 0.5\n });\n }\n }\n // defaultPos === null\n return undefined;\n };\n}","import { getVgPositionChannel } from '../../../channel';\nimport * as log from '../../../log';\nimport { isSignalRef } from '../../../vega.schema';\nimport { getMarkPropOrConfig } from '../../common';\nvar ALIGNED_X_CHANNEL = {\n left: 'x',\n center: 'xc',\n right: 'x2'\n};\nvar BASELINED_Y_CHANNEL = {\n top: 'y',\n middle: 'yc',\n bottom: 'y2'\n};\nexport function vgAlignedPositionChannel(channel, markDef, config) {\n var defaultAlign = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'middle';\n if (channel === 'radius' || channel === 'theta') {\n return getVgPositionChannel(channel);\n }\n var alignChannel = channel === 'x' ? 'align' : 'baseline';\n var align = getMarkPropOrConfig(alignChannel, markDef, config);\n var alignExcludingSignal;\n if (isSignalRef(align)) {\n log.warn(log.message.rangeMarkAlignmentCannotBeExpression(alignChannel));\n alignExcludingSignal = undefined;\n } else {\n alignExcludingSignal = align;\n }\n if (channel === 'x') {\n return ALIGNED_X_CHANNEL[alignExcludingSignal || (defaultAlign === 'top' ? 'left' : 'center')];\n } else {\n return BASELINED_Y_CHANNEL[alignExcludingSignal || defaultAlign];\n }\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { getMainRangeChannel, getSecondaryRangeChannel, getSizeChannel, getVgPositionChannel } from '../../../channel';\nimport { isFieldOrDatumDef } from '../../../channeldef';\nimport * as log from '../../../log';\nimport { isRelativeBandSize } from '../../../mark';\nimport { getMarkStyleConfig } from '../../common';\nimport { positionOffset } from './offset';\nimport { vgAlignedPositionChannel } from './position-align';\nimport { pointPosition, pointPositionDefaultRef } from './position-point';\nimport * as ref from './valueref';\n/**\n * Utility for area/rule position, which can be either point or range.\n * (One of the axes should be point and the other should be range.)\n */\nexport function pointOrRangePosition(channel, model, _ref) {\n var defaultPos = _ref.defaultPos,\n defaultPos2 = _ref.defaultPos2,\n range = _ref.range;\n if (range) {\n return rangePosition(channel, model, {\n defaultPos: defaultPos,\n defaultPos2: defaultPos2\n });\n }\n return pointPosition(channel, model, {\n defaultPos: defaultPos\n });\n}\nexport function rangePosition(channel, model, _ref2) {\n var defaultPos = _ref2.defaultPos,\n defaultPos2 = _ref2.defaultPos2;\n var markDef = model.markDef,\n config = model.config;\n var channel2 = getSecondaryRangeChannel(channel);\n var sizeChannel = getSizeChannel(channel);\n var pos2Mixins = pointPosition2OrSize(model, defaultPos2, channel2);\n var vgChannel = pos2Mixins[sizeChannel] ?\n // If there is width/height, we need to position the marks based on the alignment.\n vgAlignedPositionChannel(channel, markDef, config) :\n // Otherwise, make sure to apply to the right Vg Channel (for arc mark)\n getVgPositionChannel(channel);\n return _objectSpread(_objectSpread({}, pointPosition(channel, model, {\n defaultPos: defaultPos,\n vgChannel: vgChannel\n })), pos2Mixins);\n}\n/**\n * Return encode for x2, y2.\n * If channel is not specified, return one channel based on orientation.\n */\nfunction pointPosition2OrSize(model, defaultPos, channel) {\n var _position2orSize;\n var encoding = model.encoding,\n mark = model.mark,\n markDef = model.markDef,\n stack = model.stack,\n config = model.config;\n var baseChannel = getMainRangeChannel(channel);\n var sizeChannel = getSizeChannel(channel);\n var vgChannel = getVgPositionChannel(channel);\n var channelDef = encoding[baseChannel];\n var scaleName = model.scaleName(baseChannel);\n var scale = model.getScaleComponent(baseChannel);\n var _ref3 = channel in encoding || channel in markDef ? positionOffset({\n channel: channel,\n markDef: markDef,\n encoding: encoding,\n model: model\n }) : positionOffset({\n channel: baseChannel,\n markDef: markDef,\n encoding: encoding,\n model: model\n }),\n offset = _ref3.offset;\n if (!channelDef && (channel === 'x2' || channel === 'y2') && (encoding.latitude || encoding.longitude)) {\n var vgSizeChannel = getSizeChannel(channel);\n var size = model.markDef[vgSizeChannel];\n if (size != null) {\n return _defineProperty({}, vgSizeChannel, {\n value: size\n });\n } else {\n return _defineProperty({}, vgChannel, {\n field: model.getName(channel)\n });\n }\n }\n var valueRef = position2Ref({\n channel: channel,\n channelDef: channelDef,\n channel2Def: encoding[channel],\n markDef: markDef,\n config: config,\n scaleName: scaleName,\n scale: scale,\n stack: stack,\n offset: offset,\n defaultRef: undefined\n });\n if (valueRef !== undefined) {\n return _defineProperty({}, vgChannel, valueRef);\n }\n // TODO: check width/height encoding here once we add them\n // no x2/y2 encoding, then try to read x2/y2 or width/height based on precedence:\n // markDef > config.style > mark-specific config (config[mark]) > general mark config (config.mark)\n return position2orSize(channel, markDef) || position2orSize(channel, (_position2orSize = {}, _defineProperty(_position2orSize, channel, getMarkStyleConfig(channel, markDef, config.style)), _defineProperty(_position2orSize, sizeChannel, getMarkStyleConfig(sizeChannel, markDef, config.style)), _position2orSize)) || position2orSize(channel, config[mark]) || position2orSize(channel, config.mark) || _defineProperty({}, vgChannel, pointPositionDefaultRef({\n model: model,\n defaultPos: defaultPos,\n channel: channel,\n scaleName: scaleName,\n scale: scale\n })());\n}\nexport function position2Ref(_ref8) {\n var channel = _ref8.channel,\n channelDef = _ref8.channelDef,\n channel2Def = _ref8.channel2Def,\n markDef = _ref8.markDef,\n config = _ref8.config,\n scaleName = _ref8.scaleName,\n scale = _ref8.scale,\n stack = _ref8.stack,\n offset = _ref8.offset,\n defaultRef = _ref8.defaultRef;\n if (isFieldOrDatumDef(channelDef) && stack &&\n // If fieldChannel is X and channel is X2 (or Y and Y2)\n channel.charAt(0) === stack.fieldChannel.charAt(0)) {\n return ref.valueRefForFieldOrDatumDef(channelDef, scaleName, {\n suffix: 'start'\n }, {\n offset: offset\n });\n }\n return ref.midPointRefWithPositionInvalidTest({\n channel: channel,\n channelDef: channel2Def,\n scaleName: scaleName,\n scale: scale,\n stack: stack,\n markDef: markDef,\n config: config,\n offset: offset,\n defaultRef: defaultRef\n });\n}\nfunction position2orSize(channel, markDef) {\n var sizeChannel = getSizeChannel(channel);\n var vgChannel = getVgPositionChannel(channel);\n if (markDef[vgChannel] !== undefined) {\n return _defineProperty({}, vgChannel, ref.widthHeightValueOrSignalRef(channel, markDef[vgChannel]));\n } else if (markDef[channel] !== undefined) {\n return _defineProperty({}, vgChannel, ref.widthHeightValueOrSignalRef(channel, markDef[channel]));\n } else if (markDef[sizeChannel]) {\n var dimensionSize = markDef[sizeChannel];\n if (isRelativeBandSize(dimensionSize)) {\n log.warn(log.message.relativeBandSizeNotSupported(sizeChannel));\n } else {\n return _defineProperty({}, sizeChannel, ref.widthHeightValueOrSignalRef(channel, dimensionSize));\n }\n }\n return undefined;\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { isArray, isNumber } from 'vega-util';\nimport { isBinned, isBinning, isBinParams } from '../../../bin';\nimport { getOffsetChannel, getSecondaryRangeChannel, getSizeChannel, getVgPositionChannel, isPolarPositionChannel, isXorY } from '../../../channel';\nimport { getBandSize, isFieldDef, isFieldOrDatumDef, vgField } from '../../../channeldef';\nimport { getViewConfigDiscreteStep } from '../../../config';\nimport * as log from '../../../log';\nimport { isRelativeBandSize } from '../../../mark';\nimport { hasDiscreteDomain } from '../../../scale';\nimport { isSignalRef, isVgRangeStep } from '../../../vega.schema';\nimport { getMarkConfig, getMarkPropOrConfig, signalOrStringValue, signalOrValueRef } from '../../common';\nimport { nonPosition } from './nonposition';\nimport { positionOffset } from './offset';\nimport { vgAlignedPositionChannel } from './position-align';\nimport { pointPositionDefaultRef } from './position-point';\nimport { rangePosition } from './position-range';\nimport * as ref from './valueref';\nimport { getOffsetScaleChannel } from '../../../channel';\nimport { getFirstDefined } from '../../../util';\nexport function rectPosition(model, channel) {\n var _ref, _encoding$sizeChannel;\n var config = model.config,\n encoding = model.encoding,\n markDef = model.markDef;\n var mark = markDef.type;\n var channel2 = getSecondaryRangeChannel(channel);\n var sizeChannel = getSizeChannel(channel);\n var channelDef = encoding[channel];\n var channelDef2 = encoding[channel2];\n var scale = model.getScaleComponent(channel);\n var scaleType = scale ? scale.get('type') : undefined;\n var orient = markDef.orient;\n var hasSizeDef = (_ref = (_encoding$sizeChannel = encoding[sizeChannel]) !== null && _encoding$sizeChannel !== void 0 ? _encoding$sizeChannel : encoding.size) !== null && _ref !== void 0 ? _ref : getMarkPropOrConfig('size', markDef, config, {\n vgChannel: sizeChannel\n });\n var offsetScaleChannel = getOffsetChannel(channel);\n var isBarBand = mark === 'bar' && (channel === 'x' ? orient === 'vertical' : orient === 'horizontal');\n // x, x2, and width -- we must specify two of these in all conditions\n if (isFieldDef(channelDef) && (isBinning(channelDef.bin) || isBinned(channelDef.bin) || channelDef.timeUnit && !channelDef2) && !(hasSizeDef && !isRelativeBandSize(hasSizeDef)) && !encoding[offsetScaleChannel] && !hasDiscreteDomain(scaleType)) {\n return rectBinPosition({\n fieldDef: channelDef,\n fieldDef2: channelDef2,\n channel: channel,\n model: model\n });\n } else if ((isFieldOrDatumDef(channelDef) && hasDiscreteDomain(scaleType) || isBarBand) && !channelDef2) {\n return positionAndSize(channelDef, channel, model);\n } else {\n return rangePosition(channel, model, {\n defaultPos: 'zeroOrMax',\n defaultPos2: 'zeroOrMin'\n });\n }\n}\nfunction defaultSizeRef(sizeChannel, scaleName, scale, config, bandSize, hasFieldDef, mark) {\n if (isRelativeBandSize(bandSize)) {\n if (scale) {\n var scaleType = scale.get('type');\n if (scaleType === 'band') {\n var bandWidth = \"bandwidth('\".concat(scaleName, \"')\");\n if (bandSize.band !== 1) {\n bandWidth = \"\".concat(bandSize.band, \" * \").concat(bandWidth);\n }\n var minBandSize = getMarkConfig('minBandSize', {\n type: mark\n }, config);\n return {\n signal: minBandSize ? \"max(\".concat(signalOrStringValue(minBandSize), \", \").concat(bandWidth, \")\") : bandWidth\n };\n } else if (bandSize.band !== 1) {\n log.warn(log.message.cannotUseRelativeBandSizeWithNonBandScale(scaleType));\n bandSize = undefined;\n }\n } else {\n return {\n mult: bandSize.band,\n field: {\n group: sizeChannel\n }\n };\n }\n } else if (isSignalRef(bandSize)) {\n return bandSize;\n } else if (bandSize) {\n return {\n value: bandSize\n };\n }\n // no valid band size\n if (scale) {\n var scaleRange = scale.get('range');\n if (isVgRangeStep(scaleRange) && isNumber(scaleRange.step)) {\n return {\n value: scaleRange.step - 2\n };\n }\n }\n if (!hasFieldDef) {\n var _config$scale = config.scale,\n bandPaddingInner = _config$scale.bandPaddingInner,\n barBandPaddingInner = _config$scale.barBandPaddingInner,\n rectBandPaddingInner = _config$scale.rectBandPaddingInner;\n var padding = getFirstDefined(bandPaddingInner, mark === 'bar' ? barBandPaddingInner : rectBandPaddingInner); // this part is like paddingInner in scale.ts\n if (isSignalRef(padding)) {\n return {\n signal: \"(1 - (\".concat(padding.signal, \")) * \").concat(sizeChannel)\n };\n } else if (isNumber(padding)) {\n return {\n signal: \"\".concat(1 - padding, \" * \").concat(sizeChannel)\n };\n }\n }\n var defaultStep = getViewConfigDiscreteStep(config.view, sizeChannel);\n return {\n value: defaultStep - 2\n };\n}\n/**\n * Output position encoding and its size encoding for continuous, point, and band scales.\n */\nfunction positionAndSize(fieldDef, channel, model) {\n var markDef = model.markDef,\n encoding = model.encoding,\n config = model.config,\n stack = model.stack;\n var orient = markDef.orient;\n var scaleName = model.scaleName(channel);\n var scale = model.getScaleComponent(channel);\n var vgSizeChannel = getSizeChannel(channel);\n var channel2 = getSecondaryRangeChannel(channel);\n var offsetScaleChannel = getOffsetChannel(channel);\n var offsetScaleName = model.scaleName(offsetScaleChannel);\n var offsetScale = model.getScaleComponent(getOffsetScaleChannel(channel));\n // use \"size\" channel for bars, if there is orient and the channel matches the right orientation\n var useVlSizeChannel = orient === 'horizontal' && channel === 'y' || orient === 'vertical' && channel === 'x';\n // Use size encoding / mark property / config if it exists\n var sizeMixins;\n if (encoding.size || markDef.size) {\n if (useVlSizeChannel) {\n sizeMixins = nonPosition('size', model, {\n vgChannel: vgSizeChannel,\n defaultRef: signalOrValueRef(markDef.size)\n });\n } else {\n log.warn(log.message.cannotApplySizeToNonOrientedMark(markDef.type));\n }\n }\n var hasSizeFromMarkOrEncoding = !!sizeMixins;\n // Otherwise, apply default value\n var bandSize = getBandSize({\n channel: channel,\n fieldDef: fieldDef,\n markDef: markDef,\n config: config,\n scaleType: scale === null || scale === void 0 ? void 0 : scale.get('type'),\n useVlSizeChannel: useVlSizeChannel\n });\n sizeMixins = sizeMixins || _defineProperty({}, vgSizeChannel, defaultSizeRef(vgSizeChannel, offsetScaleName || scaleName, offsetScale || scale, config, bandSize, !!fieldDef, markDef.type));\n /*\n Band scales with size value and all point scales, use xc/yc + band=0.5\n Otherwise (band scales that has size based on a band ref), use x/y with position band = (1 - size_band) / 2.\n In this case, size_band is the band specified in the x/y-encoding.\n By default band is 1, so `(1 - band) / 2` = 0.\n If band is 0.6, the the x/y position in such case should be `(1 - band) / 2` = 0.2\n */\n var defaultBandAlign = (scale === null || scale === void 0 ? void 0 : scale.get('type')) === 'band' && isRelativeBandSize(bandSize) && !hasSizeFromMarkOrEncoding ? 'top' : 'middle';\n var vgChannel = vgAlignedPositionChannel(channel, markDef, config, defaultBandAlign);\n var center = vgChannel === 'xc' || vgChannel === 'yc';\n var _positionOffset = positionOffset({\n channel: channel,\n markDef: markDef,\n encoding: encoding,\n model: model,\n bandPosition: center ? 0.5 : 0\n }),\n offset = _positionOffset.offset,\n offsetType = _positionOffset.offsetType;\n var posRef = ref.midPointRefWithPositionInvalidTest({\n channel: channel,\n channelDef: fieldDef,\n markDef: markDef,\n config: config,\n scaleName: scaleName,\n scale: scale,\n stack: stack,\n offset: offset,\n defaultRef: pointPositionDefaultRef({\n model: model,\n defaultPos: 'mid',\n channel: channel,\n scaleName: scaleName,\n scale: scale\n }),\n bandPosition: center ? offsetType === 'encoding' ? 0 : 0.5 : isSignalRef(bandSize) ? {\n signal: \"(1-\".concat(bandSize, \")/2\")\n } : isRelativeBandSize(bandSize) ? (1 - bandSize.band) / 2 : 0\n });\n if (vgSizeChannel) {\n return _objectSpread(_defineProperty({}, vgChannel, posRef), sizeMixins);\n } else {\n var _ref3;\n // otherwise, we must simulate size by setting position2 = position + size\n // (for theta/radius since Vega doesn't have thetaWidth/radiusWidth)\n var vgChannel2 = getVgPositionChannel(channel2);\n var sizeRef = sizeMixins[vgSizeChannel];\n var sizeOffset = offset ? _objectSpread(_objectSpread({}, sizeRef), {}, {\n offset: offset\n }) : sizeRef;\n return _ref3 = {}, _defineProperty(_ref3, vgChannel, posRef), _defineProperty(_ref3, vgChannel2, isArray(posRef) ? [posRef[0], _objectSpread(_objectSpread({}, posRef[1]), {}, {\n offset: sizeOffset\n })] : _objectSpread(_objectSpread({}, posRef), {}, {\n offset: sizeOffset\n })), _ref3;\n }\n}\nfunction getBinSpacing(channel, spacing, reverse, translate, offset, minBandSize, bandSizeExpr) {\n if (isPolarPositionChannel(channel)) {\n return 0;\n }\n var isEnd = channel === 'x' || channel === 'y2';\n var spacingOffset = isEnd ? -spacing / 2 : spacing / 2;\n if (isSignalRef(reverse) || isSignalRef(offset) || isSignalRef(translate) || minBandSize) {\n var reverseExpr = signalOrStringValue(reverse);\n var offsetExpr = signalOrStringValue(offset);\n var translateExpr = signalOrStringValue(translate);\n var minBandSizeExpr = signalOrStringValue(minBandSize);\n var sign = isEnd ? '' : '-';\n var spacingAndSizeOffset = minBandSize ? \"(\".concat(bandSizeExpr, \" < \").concat(minBandSizeExpr, \" ? \").concat(sign, \"0.5 * (\").concat(minBandSizeExpr, \" - (\").concat(bandSizeExpr, \")) : \").concat(spacingOffset, \")\") : spacingOffset;\n var t = translateExpr ? \"\".concat(translateExpr, \" + \") : '';\n var r = reverseExpr ? \"(\".concat(reverseExpr, \" ? -1 : 1) * \") : '';\n var o = offsetExpr ? \"(\".concat(offsetExpr, \" + \").concat(spacingAndSizeOffset, \")\") : spacingAndSizeOffset;\n return {\n signal: t + r + o\n };\n } else {\n offset = offset || 0;\n return translate + (reverse ? -offset - spacingOffset : +offset + spacingOffset);\n }\n}\nfunction rectBinPosition(_ref4) {\n var _model$component$axes, _axis$get, _getMarkPropOrConfig;\n var fieldDef = _ref4.fieldDef,\n fieldDef2 = _ref4.fieldDef2,\n channel = _ref4.channel,\n model = _ref4.model;\n var config = model.config,\n markDef = model.markDef,\n encoding = model.encoding;\n var scale = model.getScaleComponent(channel);\n var scaleName = model.scaleName(channel);\n var scaleType = scale ? scale.get('type') : undefined;\n var reverse = scale.get('reverse');\n var bandSize = getBandSize({\n channel: channel,\n fieldDef: fieldDef,\n markDef: markDef,\n config: config,\n scaleType: scaleType\n });\n var axis = (_model$component$axes = model.component.axes[channel]) === null || _model$component$axes === void 0 ? void 0 : _model$component$axes[0];\n var axisTranslate = (_axis$get = axis === null || axis === void 0 ? void 0 : axis.get('translate')) !== null && _axis$get !== void 0 ? _axis$get : 0.5; // vega default is 0.5\n var spacing = isXorY(channel) ? (_getMarkPropOrConfig = getMarkPropOrConfig('binSpacing', markDef, config)) !== null && _getMarkPropOrConfig !== void 0 ? _getMarkPropOrConfig : 0 : 0;\n var channel2 = getSecondaryRangeChannel(channel);\n var vgChannel = getVgPositionChannel(channel);\n var vgChannel2 = getVgPositionChannel(channel2);\n var minBandSize = getMarkConfig('minBandSize', markDef, config);\n var _positionOffset2 = positionOffset({\n channel: channel,\n markDef: markDef,\n encoding: encoding,\n model: model,\n bandPosition: 0\n }),\n offset = _positionOffset2.offset;\n var _positionOffset3 = positionOffset({\n channel: channel2,\n markDef: markDef,\n encoding: encoding,\n model: model,\n bandPosition: 0\n }),\n offset2 = _positionOffset3.offset;\n var bandSizeExpr = ref.binSizeExpr({\n fieldDef: fieldDef,\n scaleName: scaleName\n });\n var binSpacingOffset = getBinSpacing(channel, spacing, reverse, axisTranslate, offset, minBandSize, bandSizeExpr);\n var binSpacingOffset2 = getBinSpacing(channel2, spacing, reverse, axisTranslate, offset2 !== null && offset2 !== void 0 ? offset2 : offset, minBandSize, bandSizeExpr);\n var bandPosition = isSignalRef(bandSize) ? {\n signal: \"(1-\".concat(bandSize.signal, \")/2\")\n } : isRelativeBandSize(bandSize) ? (1 - bandSize.band) / 2 : 0.5;\n if (isBinning(fieldDef.bin) || fieldDef.timeUnit) {\n var _ref5;\n return _ref5 = {}, _defineProperty(_ref5, vgChannel2, rectBinRef({\n fieldDef: fieldDef,\n scaleName: scaleName,\n bandPosition: bandPosition,\n offset: binSpacingOffset2\n })), _defineProperty(_ref5, vgChannel, rectBinRef({\n fieldDef: fieldDef,\n scaleName: scaleName,\n bandPosition: isSignalRef(bandPosition) ? {\n signal: \"1-\".concat(bandPosition.signal)\n } : 1 - bandPosition,\n offset: binSpacingOffset\n })), _ref5;\n } else if (isBinned(fieldDef.bin)) {\n var startRef = ref.valueRefForFieldOrDatumDef(fieldDef, scaleName, {}, {\n offset: binSpacingOffset2\n });\n if (isFieldDef(fieldDef2)) {\n var _ref6;\n return _ref6 = {}, _defineProperty(_ref6, vgChannel2, startRef), _defineProperty(_ref6, vgChannel, ref.valueRefForFieldOrDatumDef(fieldDef2, scaleName, {}, {\n offset: binSpacingOffset\n })), _ref6;\n } else if (isBinParams(fieldDef.bin) && fieldDef.bin.step) {\n var _ref7;\n return _ref7 = {}, _defineProperty(_ref7, vgChannel2, startRef), _defineProperty(_ref7, vgChannel, {\n signal: \"scale(\\\"\".concat(scaleName, \"\\\", \").concat(vgField(fieldDef, {\n expr: 'datum'\n }), \" + \").concat(fieldDef.bin.step, \")\"),\n offset: binSpacingOffset\n }), _ref7;\n }\n }\n log.warn(log.message.channelRequiredForBinned(channel2));\n return undefined;\n}\n/**\n * Value Ref for binned fields\n */\nexport function rectBinRef(_ref8) {\n var fieldDef = _ref8.fieldDef,\n scaleName = _ref8.scaleName,\n bandPosition = _ref8.bandPosition,\n offset = _ref8.offset;\n return ref.interpolatedSignalRef({\n scaleName: scaleName,\n fieldOrDatumDef: fieldDef,\n bandPosition: bandPosition,\n offset: offset\n });\n}","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { array } from 'vega-util';\nimport { SCALE_CHANNELS } from '../../../channel';\nimport { isPathMark } from '../../../mark';\nimport { hasContinuousDomain } from '../../../scale';\nimport { keys } from '../../../util';\nimport { VG_MARK_CONFIGS } from '../../../vega.schema';\nimport { getMarkPropOrConfig, signalOrValueRef } from '../../common';\nimport { aria } from './aria';\nimport { color } from './color';\nimport { nonPosition } from './nonposition';\nimport { text } from './text';\nimport { tooltip } from './tooltip';\nimport { fieldInvalidPredicate } from './valueref';\nimport { zindex } from './zindex';\nexport { color } from './color';\nexport { wrapCondition } from './conditional';\nexport { nonPosition } from './nonposition';\nexport { pointPosition } from './position-point';\nexport { pointOrRangePosition, rangePosition } from './position-range';\nexport { rectPosition } from './position-rect';\nexport { text } from './text';\nexport { tooltip } from './tooltip';\nvar ALWAYS_IGNORE = new Set(['aria', 'width', 'height']);\nexport function baseEncodeEntry(model, ignore) {\n var _ref = ignore.color === 'include' ? color(model) : {},\n _ref$fill = _ref.fill,\n fill = _ref$fill === void 0 ? undefined : _ref$fill,\n _ref$stroke = _ref.stroke,\n stroke = _ref$stroke === void 0 ? undefined : _ref$stroke;\n return _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, markDefProperties(model.markDef, ignore)), wrapAllFieldsInvalid(model, 'fill', fill)), wrapAllFieldsInvalid(model, 'stroke', stroke)), nonPosition('opacity', model)), nonPosition('fillOpacity', model)), nonPosition('strokeOpacity', model)), nonPosition('strokeWidth', model)), nonPosition('strokeDash', model)), zindex(model)), tooltip(model)), text(model, 'href')), aria(model));\n}\n// TODO: mark VgValueRef[] as readonly after https://github.com/vega/vega/pull/1987\nfunction wrapAllFieldsInvalid(model, channel, valueRef) {\n var config = model.config,\n mark = model.mark,\n markDef = model.markDef;\n var invalid = getMarkPropOrConfig('invalid', markDef, config);\n if (invalid === 'hide' && valueRef && !isPathMark(mark)) {\n // For non-path marks, we have to exclude invalid values (null and NaN) for scales with continuous domains.\n // For path marks, we will use \"defined\" property and skip these values instead.\n var test = allFieldsInvalidPredicate(model, {\n invalid: true,\n channels: SCALE_CHANNELS\n });\n if (test) {\n return _defineProperty({}, channel, [\n // prepend the invalid case\n // TODO: support custom value\n {\n test: test,\n value: null\n }].concat(_toConsumableArray(array(valueRef))));\n }\n }\n return valueRef ? _defineProperty({}, channel, valueRef) : {};\n}\nfunction markDefProperties(mark, ignore) {\n return VG_MARK_CONFIGS.reduce(function (m, prop) {\n if (!ALWAYS_IGNORE.has(prop) && mark[prop] !== undefined && ignore[prop] !== 'ignore') {\n m[prop] = signalOrValueRef(mark[prop]);\n }\n return m;\n }, {});\n}\nfunction allFieldsInvalidPredicate(model, _ref4) {\n var _ref4$invalid = _ref4.invalid,\n invalid = _ref4$invalid === void 0 ? false : _ref4$invalid,\n channels = _ref4.channels;\n var filterIndex = channels.reduce(function (aggregator, channel) {\n var scaleComponent = model.getScaleComponent(channel);\n if (scaleComponent) {\n var scaleType = scaleComponent.get('type');\n var field = model.vgField(channel, {\n expr: 'datum'\n });\n // While discrete domain scales can handle invalid values, continuous scales can't.\n if (field && hasContinuousDomain(scaleType)) {\n aggregator[field] = true;\n }\n }\n return aggregator;\n }, {});\n var fields = keys(filterIndex);\n if (fields.length > 0) {\n var op = invalid ? '||' : '&&';\n return fields.map(function (field) {\n return fieldInvalidPredicate(field, invalid);\n }).join(\" \".concat(op, \" \"));\n }\n return undefined;\n}","import { isValueDef } from '../../../channeldef';\nimport { isPathMark } from '../../../mark';\nimport { signalOrValueRef } from '../../common';\nimport { wrapCondition } from './conditional';\nexport function zindex(model) {\n var encoding = model.encoding,\n mark = model.mark;\n var order = encoding.order;\n if (!isPathMark(mark) && isValueDef(order)) {\n return wrapCondition(model, order, 'zindex', function (cd) {\n return signalOrValueRef(cd.value);\n });\n }\n return {};\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { POSITION_SCALE_CHANNELS } from '../../../channel';\nimport { hasContinuousDomain } from '../../../scale';\nimport { keys } from '../../../util';\nimport { getMarkPropOrConfig, signalOrValueRef } from '../../common';\nimport { fieldInvalidPredicate } from './valueref';\nexport function defined(model) {\n var config = model.config,\n markDef = model.markDef;\n var invalid = getMarkPropOrConfig('invalid', markDef, config);\n if (invalid) {\n var signal = allFieldsInvalidPredicate(model, {\n channels: POSITION_SCALE_CHANNELS\n });\n if (signal) {\n return {\n defined: {\n signal: signal\n }\n };\n }\n }\n return {};\n}\nfunction allFieldsInvalidPredicate(model, _ref) {\n var _ref$invalid = _ref.invalid,\n invalid = _ref$invalid === void 0 ? false : _ref$invalid,\n channels = _ref.channels;\n var filterIndex = channels.reduce(function (aggregator, channel) {\n var scaleComponent = model.getScaleComponent(channel);\n if (scaleComponent) {\n var _model$stack;\n var scaleType = scaleComponent.get('type');\n var field = model.vgField(channel, {\n expr: 'datum',\n binSuffix: (_model$stack = model.stack) !== null && _model$stack !== void 0 && _model$stack.impute ? 'mid' : undefined\n });\n // While discrete domain scales can handle invalid values, continuous scales can't.\n if (field && hasContinuousDomain(scaleType)) {\n aggregator[field] = true;\n }\n }\n return aggregator;\n }, {});\n var fields = keys(filterIndex);\n if (fields.length > 0) {\n var op = invalid ? '||' : '&&';\n return fields.map(function (field) {\n return fieldInvalidPredicate(field, invalid);\n }).join(\" \".concat(op, \" \"));\n }\n return undefined;\n}\nexport function valueIfDefined(prop, value) {\n if (value !== undefined) {\n return _defineProperty({}, prop, signalOrValueRef(value));\n }\n return undefined;\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport * as log from '../../log';\nimport { isPathMark } from '../../mark';\nimport { tooltip } from '../mark/encode';\nvar VORONOI = 'voronoi';\nvar nearest = {\n defined: function defined(selCmpt) {\n return selCmpt.type === 'point' && selCmpt.nearest;\n },\n parse: function parse(model, selCmpt) {\n // Scope selection events to the voronoi mark to prevent capturing\n // events that occur on the group mark (https://github.com/vega/vega/issues/2112).\n if (selCmpt.events) {\n var _iterator = _createForOfIteratorHelper(selCmpt.events),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var s = _step.value;\n s.markname = model.getName(VORONOI);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n },\n marks: function marks(model, selCmpt, _marks) {\n var _selCmpt$project$hasC = selCmpt.project.hasChannel,\n x = _selCmpt$project$hasC.x,\n y = _selCmpt$project$hasC.y;\n var markType = model.mark;\n if (isPathMark(markType)) {\n log.warn(log.message.nearestNotSupportForContinuous(markType));\n return _marks;\n }\n var cellDef = {\n name: model.getName(VORONOI),\n type: 'path',\n interactive: true,\n from: {\n data: model.getName('marks')\n },\n encode: {\n update: _objectSpread({\n fill: {\n value: 'transparent'\n },\n strokeWidth: {\n value: 0.35\n },\n stroke: {\n value: 'transparent'\n },\n isVoronoi: {\n value: true\n }\n }, tooltip(model, {\n reactiveGeom: true\n }))\n },\n transform: [{\n type: 'voronoi',\n x: {\n expr: x || !y ? 'datum.datum.x || 0' : '0'\n },\n y: {\n expr: y || !x ? 'datum.datum.y || 0' : '0'\n },\n size: [model.getSizeSignalRef('width'), model.getSizeSignalRef('height')]\n }]\n };\n var index = 0;\n var exists = false;\n _marks.forEach(function (mark, i) {\n var _mark$name;\n var name = (_mark$name = mark.name) !== null && _mark$name !== void 0 ? _mark$name : '';\n if (name === model.component.mark[0].name) {\n index = i;\n } else if (name.indexOf(VORONOI) >= 0) {\n exists = true;\n }\n });\n if (!exists) {\n _marks.splice(index + 1, 0, cellDef);\n }\n return _marks;\n }\n};\nexport default nearest;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { stringValue } from 'vega-util';\nimport { disableDirectManipulation, TUPLE } from '.';\nimport { varName } from '../../util';\nimport { assembleInit } from './assemble';\nimport nearest from './nearest';\nimport { TUPLE_FIELDS } from './project';\nimport { isLegendBinding } from '../../selection';\nvar inputBindings = {\n defined: function defined(selCmpt) {\n return selCmpt.type === 'point' && selCmpt.resolve === 'global' && selCmpt.bind && selCmpt.bind !== 'scales' && !isLegendBinding(selCmpt.bind);\n },\n parse: function parse(model, selCmpt, selDef) {\n return disableDirectManipulation(selCmpt, selDef);\n },\n topLevelSignals: function topLevelSignals(model, selCmpt, signals) {\n var name = selCmpt.name;\n var proj = selCmpt.project;\n var bind = selCmpt.bind;\n var init = selCmpt.init && selCmpt.init[0]; // Can only exist on single selections (one initial value).\n var datum = nearest.defined(selCmpt) ? '(item().isVoronoi ? datum.datum : datum)' : 'datum';\n proj.items.forEach(function (p, i) {\n var sgname = varName(\"\".concat(name, \"_\").concat(p.field));\n var hasSignal = signals.filter(function (s) {\n return s.name === sgname;\n });\n if (!hasSignal.length) {\n var _ref, _bind$p$field;\n signals.unshift(_objectSpread(_objectSpread({\n name: sgname\n }, init ? {\n init: assembleInit(init[i])\n } : {\n value: null\n }), {}, {\n on: selCmpt.events ? [{\n events: selCmpt.events,\n update: \"datum && item().mark.marktype !== 'group' ? \".concat(datum, \"[\").concat(stringValue(p.field), \"] : null\")\n }] : [],\n bind: (_ref = (_bind$p$field = bind[p.field]) !== null && _bind$p$field !== void 0 ? _bind$p$field : bind[p.channel]) !== null && _ref !== void 0 ? _ref : bind\n }));\n }\n });\n return signals;\n },\n signals: function signals(model, selCmpt, _signals) {\n var name = selCmpt.name;\n var proj = selCmpt.project;\n var signal = _signals.filter(function (s) {\n return s.name === name + TUPLE;\n })[0];\n var fields = name + TUPLE_FIELDS;\n var values = proj.items.map(function (p) {\n return varName(\"\".concat(name, \"_\").concat(p.field));\n });\n var valid = values.map(function (v) {\n return \"\".concat(v, \" !== null\");\n }).join(' && ');\n if (values.length) {\n signal.update = \"\".concat(valid, \" ? {fields: \").concat(fields, \", values: [\").concat(values.join(', '), \"]} : null\");\n }\n delete signal.value;\n delete signal.on;\n return _signals;\n }\n};\nexport default inputBindings;","import { TUPLE, unitName } from '.';\nexport var TOGGLE = '_toggle';\nvar toggle = {\n defined: function defined(selCmpt) {\n return selCmpt.type === 'point' && !!selCmpt.toggle;\n },\n signals: function signals(model, selCmpt, _signals) {\n return _signals.concat({\n name: selCmpt.name + TOGGLE,\n value: false,\n on: [{\n events: selCmpt.events,\n update: selCmpt.toggle\n }]\n });\n },\n modifyExpr: function modifyExpr(model, selCmpt) {\n var tpl = selCmpt.name + TUPLE;\n var signal = selCmpt.name + TOGGLE;\n return \"\".concat(signal, \" ? null : \").concat(tpl, \", \") + (selCmpt.resolve === 'global' ? \"\".concat(signal, \" ? null : true, \") : \"\".concat(signal, \" ? null : {unit: \").concat(unitName(model), \"}, \")) + \"\".concat(signal, \" ? \").concat(tpl, \" : null\");\n }\n};\nexport default toggle;","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { parseSelector } from 'vega-event-selector';\nimport { isString } from 'vega-util';\nimport { TUPLE } from '.';\nimport { varName } from '../../util';\nimport inputBindings from './inputs';\nimport toggle, { TOGGLE } from './toggle';\nvar clear = {\n defined: function defined(selCmpt) {\n return selCmpt.clear !== undefined && selCmpt.clear !== false;\n },\n parse: function parse(model, selCmpt) {\n if (selCmpt.clear) {\n selCmpt.clear = isString(selCmpt.clear) ? parseSelector(selCmpt.clear, 'view') : selCmpt.clear;\n }\n },\n topLevelSignals: function topLevelSignals(model, selCmpt, signals) {\n if (inputBindings.defined(selCmpt)) {\n var _iterator = _createForOfIteratorHelper(selCmpt.project.items),\n _step;\n try {\n var _loop = function _loop() {\n var proj = _step.value;\n var idx = signals.findIndex(function (n) {\n return n.name === varName(\"\".concat(selCmpt.name, \"_\").concat(proj.field));\n });\n if (idx !== -1) {\n signals[idx].on.push({\n events: selCmpt.clear,\n update: 'null'\n });\n }\n };\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n _loop();\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n return signals;\n },\n signals: function signals(model, selCmpt, _signals) {\n function addClear(idx, update) {\n if (idx !== -1 && _signals[idx].on) {\n _signals[idx].on.push({\n events: selCmpt.clear,\n update: update\n });\n }\n }\n // Be as minimalist as possible when adding clear triggers to minimize dataflow execution.\n if (selCmpt.type === 'interval') {\n var _iterator2 = _createForOfIteratorHelper(selCmpt.project.items),\n _step2;\n try {\n var _loop2 = function _loop2() {\n var proj = _step2.value;\n var vIdx = _signals.findIndex(function (n) {\n return n.name === proj.signals.visual;\n });\n addClear(vIdx, '[0, 0]');\n if (vIdx === -1) {\n var dIdx = _signals.findIndex(function (n) {\n return n.name === proj.signals.data;\n });\n addClear(dIdx, 'null');\n }\n };\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n _loop2();\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n } else {\n var tIdx = _signals.findIndex(function (n) {\n return n.name === selCmpt.name + TUPLE;\n });\n addClear(tIdx, 'null');\n if (toggle.defined(selCmpt)) {\n tIdx = _signals.findIndex(function (n) {\n return n.name === selCmpt.name + TOGGLE;\n });\n addClear(tIdx, 'false');\n }\n }\n return _signals;\n }\n};\nexport default clear;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { isObject } from 'vega';\nimport { parseSelector } from 'vega-event-selector';\nimport { array, isString } from 'vega-util';\nimport { disableDirectManipulation, TUPLE } from '.';\nimport * as log from '../../log';\nimport { isLegendBinding, isLegendStreamBinding, SELECTION_ID } from '../../selection';\nimport { duplicate, vals, varName } from '../../util';\nimport { TUPLE_FIELDS } from './project';\nimport { TOGGLE } from './toggle';\nvar legendBindings = {\n defined: function defined(selCmpt) {\n var spec = selCmpt.resolve === 'global' && selCmpt.bind && isLegendBinding(selCmpt.bind);\n var projLen = selCmpt.project.items.length === 1 && selCmpt.project.items[0].field !== SELECTION_ID;\n if (spec && !projLen) {\n log.warn(log.message.LEGEND_BINDINGS_MUST_HAVE_PROJECTION);\n }\n return spec && projLen;\n },\n parse: function parse(model, selCmpt, selDef) {\n // Allow legend items to be toggleable by default even though direct manipulation is disabled.\n var selDef_ = duplicate(selDef);\n selDef_.select = isString(selDef_.select) ? {\n type: selDef_.select,\n toggle: selCmpt.toggle\n } : _objectSpread(_objectSpread({}, selDef_.select), {}, {\n toggle: selCmpt.toggle\n });\n disableDirectManipulation(selCmpt, selDef_);\n if (isObject(selDef.select) && (selDef.select.on || selDef.select.clear)) {\n var legendFilter = 'event.item && indexof(event.item.mark.role, \"legend\") < 0';\n var _iterator = _createForOfIteratorHelper(selCmpt.events),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _evt$filter;\n var _evt = _step.value;\n _evt.filter = array((_evt$filter = _evt.filter) !== null && _evt$filter !== void 0 ? _evt$filter : []);\n if (!_evt.filter.includes(legendFilter)) {\n _evt.filter.push(legendFilter);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n var evt = isLegendStreamBinding(selCmpt.bind) ? selCmpt.bind.legend : 'click';\n var stream = isString(evt) ? parseSelector(evt, 'view') : array(evt);\n selCmpt.bind = {\n legend: {\n merge: stream\n }\n };\n },\n topLevelSignals: function topLevelSignals(model, selCmpt, signals) {\n var selName = selCmpt.name;\n var stream = isLegendStreamBinding(selCmpt.bind) && selCmpt.bind.legend;\n var markName = function markName(name) {\n return function (s) {\n var ds = duplicate(s);\n ds.markname = name;\n return ds;\n };\n };\n var _iterator2 = _createForOfIteratorHelper(selCmpt.project.items),\n _step2;\n try {\n var _loop = function _loop() {\n var proj = _step2.value;\n if (!proj.hasLegend) return \"continue\";\n var prefix = \"\".concat(varName(proj.field), \"_legend\");\n var sgName = \"\".concat(selName, \"_\").concat(prefix);\n var hasSignal = signals.filter(function (s) {\n return s.name === sgName;\n });\n if (hasSignal.length === 0) {\n var events = stream.merge.map(markName(\"\".concat(prefix, \"_symbols\"))).concat(stream.merge.map(markName(\"\".concat(prefix, \"_labels\")))).concat(stream.merge.map(markName(\"\".concat(prefix, \"_entries\"))));\n signals.unshift(_objectSpread(_objectSpread({\n name: sgName\n }, !selCmpt.init ? {\n value: null\n } : {}), {}, {\n on: [\n // Legend entries do not store values, so we need to walk the scenegraph to the symbol datum.\n {\n events: events,\n update: 'isDefined(datum.value) ? datum.value : item().items[0].items[0].datum.value',\n force: true\n }, {\n events: stream.merge,\n update: \"!event.item || !datum ? null : \".concat(sgName),\n force: true\n }]\n }));\n }\n };\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _ret = _loop();\n if (_ret === \"continue\") continue;\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n return signals;\n },\n signals: function signals(model, selCmpt, _signals) {\n var name = selCmpt.name;\n var proj = selCmpt.project;\n var tuple = _signals.find(function (s) {\n return s.name === name + TUPLE;\n });\n var fields = name + TUPLE_FIELDS;\n var values = proj.items.filter(function (p) {\n return p.hasLegend;\n }).map(function (p) {\n return varName(\"\".concat(name, \"_\").concat(varName(p.field), \"_legend\"));\n });\n var valid = values.map(function (v) {\n return \"\".concat(v, \" !== null\");\n }).join(' && ');\n var update = \"\".concat(valid, \" ? {fields: \").concat(fields, \", values: [\").concat(values.join(', '), \"]} : null\");\n if (selCmpt.events && values.length > 0) {\n tuple.on.push({\n events: values.map(function (signal) {\n return {\n signal: signal\n };\n }),\n update: update\n });\n } else if (values.length > 0) {\n tuple.update = update;\n delete tuple.value;\n delete tuple.on;\n }\n var toggle = _signals.find(function (s) {\n return s.name === name + TOGGLE;\n });\n var events = isLegendStreamBinding(selCmpt.bind) && selCmpt.bind.legend;\n if (toggle) {\n if (!selCmpt.events) toggle.on[0].events = events;else toggle.on.push(_objectSpread(_objectSpread({}, toggle.on[0]), {}, {\n events: events\n }));\n }\n return _signals;\n }\n};\nexport default legendBindings;\nexport function parseInteractiveLegend(model, channel, legendCmpt) {\n var _model$fieldDef, _model$component$sele;\n var field = (_model$fieldDef = model.fieldDef(channel)) === null || _model$fieldDef === void 0 ? void 0 : _model$fieldDef.field;\n var _iterator3 = _createForOfIteratorHelper(vals((_model$component$sele = model.component.selection) !== null && _model$component$sele !== void 0 ? _model$component$sele : {})),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var _selCmpt$project$hasF;\n var selCmpt = _step3.value;\n var proj = (_selCmpt$project$hasF = selCmpt.project.hasField[field]) !== null && _selCmpt$project$hasF !== void 0 ? _selCmpt$project$hasF : selCmpt.project.hasChannel[channel];\n if (proj && legendBindings.defined(selCmpt)) {\n var _legendCmpt$get;\n var legendSelections = (_legendCmpt$get = legendCmpt.get('selections')) !== null && _legendCmpt$get !== void 0 ? _legendCmpt$get : [];\n legendSelections.push(selCmpt.name);\n legendCmpt.set('selections', legendSelections, false);\n proj.hasLegend = true;\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n}","import { parseSelector } from 'vega-event-selector';\nimport { X, Y } from '../../channel';\nimport { BRUSH as INTERVAL_BRUSH } from './interval';\nimport scalesCompiler, { domain } from './scales';\nvar ANCHOR = '_translate_anchor';\nvar DELTA = '_translate_delta';\nvar translate = {\n defined: function defined(selCmpt) {\n return selCmpt.type === 'interval' && selCmpt.translate;\n },\n signals: function signals(model, selCmpt, _signals) {\n var name = selCmpt.name;\n var boundScales = scalesCompiler.defined(selCmpt);\n var anchor = name + ANCHOR;\n var _selCmpt$project$hasC = selCmpt.project.hasChannel,\n x = _selCmpt$project$hasC.x,\n y = _selCmpt$project$hasC.y;\n var events = parseSelector(selCmpt.translate, 'scope');\n if (!boundScales) {\n events = events.map(function (e) {\n return e.between[0].markname = name + INTERVAL_BRUSH, e;\n });\n }\n _signals.push({\n name: anchor,\n value: {},\n on: [{\n events: events.map(function (e) {\n return e.between[0];\n }),\n update: '{x: x(unit), y: y(unit)' + (x !== undefined ? \", extent_x: \".concat(boundScales ? domain(model, X) : \"slice(\".concat(x.signals.visual, \")\")) : '') + (y !== undefined ? \", extent_y: \".concat(boundScales ? domain(model, Y) : \"slice(\".concat(y.signals.visual, \")\")) : '') + '}'\n }]\n }, {\n name: name + DELTA,\n value: {},\n on: [{\n events: events,\n update: \"{x: \".concat(anchor, \".x - x(unit), y: \").concat(anchor, \".y - y(unit)}\")\n }]\n });\n if (x !== undefined) {\n onDelta(model, selCmpt, x, 'width', _signals);\n }\n if (y !== undefined) {\n onDelta(model, selCmpt, y, 'height', _signals);\n }\n return _signals;\n }\n};\nexport default translate;\nfunction onDelta(model, selCmpt, proj, size, signals) {\n var _scaleCmpt$get, _scaleCmpt$get2;\n var name = selCmpt.name;\n var anchor = name + ANCHOR;\n var delta = name + DELTA;\n var channel = proj.channel;\n var boundScales = scalesCompiler.defined(selCmpt);\n var signal = signals.filter(function (s) {\n return s.name === proj.signals[boundScales ? 'data' : 'visual'];\n })[0];\n var sizeSg = model.getSizeSignalRef(size).signal;\n var scaleCmpt = model.getScaleComponent(channel);\n var scaleType = scaleCmpt && scaleCmpt.get('type');\n var reversed = scaleCmpt && scaleCmpt.get('reverse'); // scale parsing sets this flag for fieldDef.sort\n var sign = !boundScales ? '' : channel === X ? reversed ? '' : '-' : reversed ? '-' : '';\n var extent = \"\".concat(anchor, \".extent_\").concat(channel);\n var offset = \"\".concat(sign).concat(delta, \".\").concat(channel, \" / \").concat(boundScales ? \"\".concat(sizeSg) : \"span(\".concat(extent, \")\"));\n var panFn = !boundScales || !scaleCmpt ? 'panLinear' : scaleType === 'log' ? 'panLog' : scaleType === 'symlog' ? 'panSymlog' : scaleType === 'pow' ? 'panPow' : 'panLinear';\n var arg = !boundScales ? '' : scaleType === 'pow' ? \", \".concat((_scaleCmpt$get = scaleCmpt.get('exponent')) !== null && _scaleCmpt$get !== void 0 ? _scaleCmpt$get : 1) : scaleType === 'symlog' ? \", \".concat((_scaleCmpt$get2 = scaleCmpt.get('constant')) !== null && _scaleCmpt$get2 !== void 0 ? _scaleCmpt$get2 : 1) : '';\n var update = \"\".concat(panFn, \"(\").concat(extent, \", \").concat(offset).concat(arg, \")\");\n signal.on.push({\n events: {\n signal: delta\n },\n update: boundScales ? update : \"clampRange(\".concat(update, \", 0, \").concat(sizeSg, \")\")\n });\n}","import { parseSelector } from 'vega-event-selector';\nimport { stringValue } from 'vega-util';\nimport { X, Y } from '../../channel';\nimport { BRUSH as INTERVAL_BRUSH } from './interval';\nimport { default as scalesCompiler, domain } from './scales';\nvar ANCHOR = '_zoom_anchor';\nvar DELTA = '_zoom_delta';\nvar zoom = {\n defined: function defined(selCmpt) {\n return selCmpt.type === 'interval' && selCmpt.zoom;\n },\n signals: function signals(model, selCmpt, _signals) {\n var name = selCmpt.name;\n var boundScales = scalesCompiler.defined(selCmpt);\n var delta = name + DELTA;\n var _selCmpt$project$hasC = selCmpt.project.hasChannel,\n x = _selCmpt$project$hasC.x,\n y = _selCmpt$project$hasC.y;\n var sx = stringValue(model.scaleName(X));\n var sy = stringValue(model.scaleName(Y));\n var events = parseSelector(selCmpt.zoom, 'scope');\n if (!boundScales) {\n events = events.map(function (e) {\n return e.markname = name + INTERVAL_BRUSH, e;\n });\n }\n _signals.push({\n name: name + ANCHOR,\n on: [{\n events: events,\n update: !boundScales ? \"{x: x(unit), y: y(unit)}\" : '{' + [sx ? \"x: invert(\".concat(sx, \", x(unit))\") : '', sy ? \"y: invert(\".concat(sy, \", y(unit))\") : ''].filter(function (expr) {\n return expr;\n }).join(', ') + '}'\n }]\n }, {\n name: delta,\n on: [{\n events: events,\n force: true,\n update: 'pow(1.001, event.deltaY * pow(16, event.deltaMode))'\n }]\n });\n if (x !== undefined) {\n onDelta(model, selCmpt, x, 'width', _signals);\n }\n if (y !== undefined) {\n onDelta(model, selCmpt, y, 'height', _signals);\n }\n return _signals;\n }\n};\nexport default zoom;\nfunction onDelta(model, selCmpt, proj, size, signals) {\n var _scaleCmpt$get, _scaleCmpt$get2;\n var name = selCmpt.name;\n var channel = proj.channel;\n var boundScales = scalesCompiler.defined(selCmpt);\n var signal = signals.filter(function (s) {\n return s.name === proj.signals[boundScales ? 'data' : 'visual'];\n })[0];\n var sizeSg = model.getSizeSignalRef(size).signal;\n var scaleCmpt = model.getScaleComponent(channel);\n var scaleType = scaleCmpt && scaleCmpt.get('type');\n var base = boundScales ? domain(model, channel) : signal.name;\n var delta = name + DELTA;\n var anchor = \"\".concat(name).concat(ANCHOR, \".\").concat(channel);\n var zoomFn = !boundScales || !scaleCmpt ? 'zoomLinear' : scaleType === 'log' ? 'zoomLog' : scaleType === 'symlog' ? 'zoomSymlog' : scaleType === 'pow' ? 'zoomPow' : 'zoomLinear';\n var arg = !boundScales ? '' : scaleType === 'pow' ? \", \".concat((_scaleCmpt$get = scaleCmpt.get('exponent')) !== null && _scaleCmpt$get !== void 0 ? _scaleCmpt$get : 1) : scaleType === 'symlog' ? \", \".concat((_scaleCmpt$get2 = scaleCmpt.get('constant')) !== null && _scaleCmpt$get2 !== void 0 ? _scaleCmpt$get2 : 1) : '';\n var update = \"\".concat(zoomFn, \"(\").concat(base, \", \").concat(anchor, \", \").concat(delta).concat(arg, \")\");\n signal.on.push({\n events: {\n signal: delta\n },\n update: boundScales ? update : \"clampRange(\".concat(update, \", 0, \").concat(sizeSg, \")\")\n });\n}","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { isString } from 'vega';\nimport { stringValue } from 'vega-util';\nimport { FACET_CHANNELS } from '../../channel';\nimport { vals } from '../../util';\nimport { isFacetModel } from '../model';\nimport interval from './interval';\nimport point from './point';\nimport clear from './clear';\nimport inputs from './inputs';\nimport nearest from './nearest';\nimport project from './project';\nimport scales from './scales';\nimport legends from './legends';\nimport toggle from './toggle';\nimport translate from './translate';\nimport zoom from './zoom';\nexport var STORE = '_store';\nexport var TUPLE = '_tuple';\nexport var MODIFY = '_modify';\nexport var SELECTION_DOMAIN = '_selection_domain_';\nexport var VL_SELECTION_RESOLVE = 'vlSelectionResolve';\n// Order matters for parsing and assembly.\nexport var selectionCompilers = [point, interval, project, toggle,\n// Bindings may disable direct manipulation.\ninputs, scales, legends, clear, translate, zoom, nearest];\nfunction getFacetModel(model) {\n var parent = model.parent;\n while (parent) {\n if (isFacetModel(parent)) break;\n parent = parent.parent;\n }\n return parent;\n}\nexport function unitName(model) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n escape: true\n },\n escape = _ref.escape;\n var name = escape ? stringValue(model.name) : model.name;\n var facetModel = getFacetModel(model);\n if (facetModel) {\n var facet = facetModel.facet;\n var _iterator = _createForOfIteratorHelper(FACET_CHANNELS),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var channel = _step.value;\n if (facet[channel]) {\n name += \" + '__facet_\".concat(channel, \"_' + (facet[\").concat(stringValue(facetModel.vgField(channel)), \"])\");\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n return name;\n}\nexport function requiresSelectionId(model) {\n var _model$component$sele;\n return vals((_model$component$sele = model.component.selection) !== null && _model$component$sele !== void 0 ? _model$component$sele : {}).reduce(function (identifier, selCmpt) {\n return identifier || selCmpt.project.hasSelectionId;\n }, false);\n}\n// Binding a point selection to query widgets or legends disables default direct manipulation interaction.\n// A user can choose to re-enable it by explicitly specifying triggering input events.\nexport function disableDirectManipulation(selCmpt, selDef) {\n if (isString(selDef.select) || !selDef.select.on) delete selCmpt.events;\n if (isString(selDef.select) || !selDef.select.clear) delete selCmpt.clear;\n if (isString(selDef.select) || !selDef.select.toggle) delete selCmpt.toggle;\n}","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport { parseExpression } from 'vega-expression';\nfunction getName(node) {\n var name = [];\n if (node.type === 'Identifier') {\n return [node.name];\n }\n if (node.type === 'Literal') {\n return [node.value];\n }\n if (node.type === 'MemberExpression') {\n name.push.apply(name, _toConsumableArray(getName(node.object)));\n name.push.apply(name, _toConsumableArray(getName(node.property)));\n }\n return name;\n}\nfunction startsWithDatum(node) {\n if (node.object.type === 'MemberExpression') {\n return startsWithDatum(node.object);\n }\n return node.object.name === 'datum';\n}\nexport function getDependentFields(expression) {\n var ast = parseExpression(expression);\n var dependents = new Set();\n // visit is missing in types https://github.com/vega/vega/issues/3298\n ast.visit(function (node) {\n if (node.type === 'MemberExpression' && startsWithDatum(node)) {\n dependents.add(getName(node).slice(1).join('.'));\n }\n });\n return dependents;\n}","import _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _assertThisInitialized from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { duplicate } from '../../util';\nimport { expression } from '../predicate';\nimport { DataFlowNode } from './dataflow';\nimport { getDependentFields } from './expressions';\nexport var FilterNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(FilterNode, _DataFlowNode);\n var _super = _createSuper(FilterNode);\n function FilterNode(parent, model, filter) {\n var _this;\n _classCallCheck(this, FilterNode);\n _this = _super.call(this, parent);\n _this.model = model;\n _this.filter = filter;\n // TODO: refactor this to not take a node and\n // then add a static function makeFromOperand and make the constructor take only an expression\n _this.expr = expression(_this.model, _this.filter, _assertThisInitialized(_this));\n _this._dependentFields = getDependentFields(_this.expr);\n return _this;\n }\n _createClass(FilterNode, [{\n key: \"clone\",\n value: function clone() {\n return new FilterNode(null, this.model, duplicate(this.filter));\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n return this._dependentFields;\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return new Set(); // filter does not produce any new fields\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n return {\n type: 'filter',\n expr: this.expr\n };\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return \"Filter \".concat(this.expr);\n }\n }]);\n return FilterNode;\n}(DataFlowNode);","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { parseSelector } from 'vega-event-selector';\nimport { array, isObject, isString, stringValue } from 'vega-util';\nimport { selectionCompilers, STORE } from '.';\nimport { warn } from '../../log';\nimport { duplicate, entries, replacePathInField, varName } from '../../util';\nimport { OutputNode } from '../data/dataflow';\nimport { FilterNode } from '../data/filter';\nimport { DataSourceType } from '../../data';\nexport function parseUnitSelection(model, selDefs) {\n var selCmpts = {};\n var selectionConfig = model.config.selection;\n if (!selDefs || !selDefs.length) return selCmpts;\n var _iterator = _createForOfIteratorHelper(selDefs),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var def = _step.value;\n var name = varName(def.name);\n var selDef = def.select;\n var type = isString(selDef) ? selDef : selDef.type;\n var defaults = isObject(selDef) ? duplicate(selDef) : {\n type: type\n };\n // Set default values from config if a property hasn't been specified,\n // or if it is true. E.g., \"translate\": true should use the default\n // event handlers for translate. However, true may be a valid value for\n // a property (e.g., \"nearest\": true).\n var cfg = selectionConfig[type];\n for (var key in cfg) {\n // Project transform applies its defaults.\n if (key === 'fields' || key === 'encodings') {\n continue;\n }\n if (key === 'mark') {\n defaults[key] = _objectSpread(_objectSpread({}, cfg[key]), defaults[key]);\n }\n if (defaults[key] === undefined || defaults[key] === true) {\n var _cfg$key;\n defaults[key] = duplicate((_cfg$key = cfg[key]) !== null && _cfg$key !== void 0 ? _cfg$key : defaults[key]);\n }\n }\n var selCmpt = selCmpts[name] = _objectSpread(_objectSpread({}, defaults), {}, {\n name: name,\n type: type,\n init: def.value,\n bind: def.bind,\n events: isString(defaults.on) ? parseSelector(defaults.on, 'scope') : array(duplicate(defaults.on))\n });\n var def_ = duplicate(def); // defensive copy to prevent compilers from causing side effects\n var _iterator2 = _createForOfIteratorHelper(selectionCompilers),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var c = _step2.value;\n if (c.defined(selCmpt) && c.parse) {\n c.parse(model, selCmpt, def_);\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return selCmpts;\n}\nexport function parseSelectionPredicate(model, pred, dfnode) {\n var datum = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'datum';\n var name = isString(pred) ? pred : pred.param;\n var vname = varName(name);\n var store = stringValue(vname + STORE);\n var selCmpt;\n try {\n selCmpt = model.getSelectionComponent(vname, name);\n } catch (e) {\n // If a selection isn't found, treat as a variable parameter and coerce to boolean.\n return \"!!\".concat(vname);\n }\n if (selCmpt.project.timeUnit) {\n var child = dfnode !== null && dfnode !== void 0 ? dfnode : model.component.data.raw;\n var tunode = selCmpt.project.timeUnit.clone();\n if (child.parent) {\n tunode.insertAsParentOf(child);\n } else {\n child.parent = tunode;\n }\n }\n var fn = selCmpt.project.hasSelectionId ? 'vlSelectionIdTest(' : 'vlSelectionTest(';\n var resolve = selCmpt.resolve === 'global' ? ')' : \", \".concat(stringValue(selCmpt.resolve), \")\");\n var test = \"\".concat(fn).concat(store, \", \").concat(datum).concat(resolve);\n var length = \"length(data(\".concat(store, \"))\");\n return pred.empty === false ? \"\".concat(length, \" && \").concat(test) : \"!\".concat(length, \" || \").concat(test);\n}\nexport function parseSelectionExtent(model, name, extent) {\n var vname = varName(name);\n var encoding = extent['encoding'];\n var field = extent['field'];\n var selCmpt;\n try {\n selCmpt = model.getSelectionComponent(vname, name);\n } catch (e) {\n // If a selection isn't found, treat it as a variable parameter.\n return vname;\n }\n if (!encoding && !field) {\n field = selCmpt.project.items[0].field;\n if (selCmpt.project.items.length > 1) {\n warn('A \"field\" or \"encoding\" must be specified when using a selection as a scale domain. ' + \"Using \\\"field\\\": \".concat(stringValue(field), \".\"));\n }\n } else if (encoding && !field) {\n var encodings = selCmpt.project.items.filter(function (p) {\n return p.channel === encoding;\n });\n if (!encodings.length || encodings.length > 1) {\n field = selCmpt.project.items[0].field;\n warn((!encodings.length ? 'No ' : 'Multiple ') + \"matching \".concat(stringValue(encoding), \" encoding found for selection \").concat(stringValue(extent.param), \". \") + \"Using \\\"field\\\": \".concat(stringValue(field), \".\"));\n } else {\n field = encodings[0].field;\n }\n }\n return \"\".concat(selCmpt.name, \"[\").concat(stringValue(replacePathInField(field)), \"]\");\n}\nexport function materializeSelections(model, main) {\n var _model$component$sele;\n var _iterator3 = _createForOfIteratorHelper(entries((_model$component$sele = model.component.selection) !== null && _model$component$sele !== void 0 ? _model$component$sele : {})),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var _step3$value = _slicedToArray(_step3.value, 2),\n selection = _step3$value[0],\n selCmpt = _step3$value[1];\n var lookupName = model.getName(\"lookup_\".concat(selection));\n model.component.data.outputNodes[lookupName] = selCmpt.materialized = new OutputNode(new FilterNode(main, model, {\n param: selection\n }), lookupName, DataSourceType.Lookup, model.component.data.outputNodeRefCounts);\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n}","import { isString } from 'vega-util';\nimport { fieldFilterExpression, isSelectionPredicate } from '../predicate';\nimport { logicalExpr } from '../util';\nimport { parseSelectionPredicate } from './selection/parse';\n/**\n * Converts a predicate into an expression.\n */\n// model is only used for selection filters.\nexport function expression(model, filterOp, node) {\n return logicalExpr(filterOp, function (predicate) {\n if (isString(predicate)) {\n return predicate;\n } else if (isSelectionPredicate(predicate)) {\n return parseSelectionPredicate(model, predicate, node);\n } else {\n // Filter Object\n return fieldFilterExpression(predicate);\n }\n });\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"disable\", \"orient\", \"scale\", \"labelExpr\", \"title\", \"zindex\"],\n _excluded2 = [\"condition\"],\n _excluded3 = [\"test\"],\n _excluded4 = [\"test\"];\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { array, isArray } from 'vega-util';\nimport { AXIS_PARTS, AXIS_PROPERTY_TYPE, CONDITIONAL_AXIS_PROP_INDEX, isConditionalAxisValue } from '../../axis';\nimport { POSITION_SCALE_CHANNELS } from '../../channel';\nimport { defaultTitle } from '../../channeldef';\nimport { isText } from '../../title';\nimport { contains, getFirstDefined, isEmpty, replaceAll } from '../../util';\nimport { isSignalRef } from '../../vega.schema';\nimport { exprFromValueRefOrSignalRef } from '../common';\nimport { expression } from '../predicate';\nfunction assembleTitle(title, config) {\n if (!title) {\n return undefined;\n }\n if (isArray(title) && !isText(title)) {\n return title.map(function (fieldDef) {\n return defaultTitle(fieldDef, config);\n }).join(', ');\n }\n return title;\n}\nfunction setAxisEncode(axis, part, vgProp, vgRef) {\n var _axis$encode, _a$part, _b$update;\n var _a, _b;\n (_axis$encode = axis.encode) !== null && _axis$encode !== void 0 ? _axis$encode : axis.encode = {};\n (_a$part = (_a = axis.encode)[part]) !== null && _a$part !== void 0 ? _a$part : _a[part] = {};\n (_b$update = (_b = axis.encode[part]).update) !== null && _b$update !== void 0 ? _b$update : _b.update = {};\n // TODO: remove as any after https://github.com/prisma/nexus-prisma/issues/291\n axis.encode[part].update[vgProp] = vgRef;\n}\nexport function assembleAxis(axisCmpt, kind, config) {\n var opt = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n header: false\n };\n var _axisCmpt$combine = axisCmpt.combine(),\n disable = _axisCmpt$combine.disable,\n orient = _axisCmpt$combine.orient,\n scale = _axisCmpt$combine.scale,\n labelExpr = _axisCmpt$combine.labelExpr,\n title = _axisCmpt$combine.title,\n zindex = _axisCmpt$combine.zindex,\n axis = _objectWithoutProperties(_axisCmpt$combine, _excluded);\n if (disable) {\n return undefined;\n }\n for (var prop in axis) {\n var propType = AXIS_PROPERTY_TYPE[prop];\n var propValue = axis[prop];\n if (propType && propType !== kind && propType !== 'both') {\n // Remove properties that are not valid for this kind of axis\n delete axis[prop];\n } else if (isConditionalAxisValue(propValue)) {\n // deal with conditional axis value\n var condition = propValue.condition,\n valueOrSignalRef = _objectWithoutProperties(propValue, _excluded2);\n var conditions = array(condition);\n var propIndex = CONDITIONAL_AXIS_PROP_INDEX[prop];\n if (propIndex) {\n var vgProp = propIndex.vgProp,\n part = propIndex.part;\n // If there is a corresponding Vega property for the channel,\n // use Vega's custom axis encoding and delete the original axis property to avoid conflicts\n var vgRef = [].concat(_toConsumableArray(conditions.map(function (c) {\n var test = c.test,\n valueOrSignalCRef = _objectWithoutProperties(c, _excluded3);\n return _objectSpread({\n test: expression(null, test)\n }, valueOrSignalCRef);\n })), [valueOrSignalRef]);\n setAxisEncode(axis, part, vgProp, vgRef);\n delete axis[prop];\n } else if (propIndex === null) {\n // If propIndex is null, this means we support conditional axis property by converting the condition to signal instead.\n var signalRef = {\n signal: conditions.map(function (c) {\n var test = c.test,\n valueOrSignalCRef = _objectWithoutProperties(c, _excluded4);\n return \"\".concat(expression(null, test), \" ? \").concat(exprFromValueRefOrSignalRef(valueOrSignalCRef), \" : \");\n }).join('') + exprFromValueRefOrSignalRef(valueOrSignalRef)\n };\n axis[prop] = signalRef;\n }\n } else if (isSignalRef(propValue)) {\n var _propIndex = CONDITIONAL_AXIS_PROP_INDEX[prop];\n if (_propIndex) {\n var _vgProp = _propIndex.vgProp,\n _part = _propIndex.part;\n setAxisEncode(axis, _part, _vgProp, propValue);\n delete axis[prop];\n } // else do nothing since the property already supports signal\n }\n // Do not pass labelAlign/Baseline = null to Vega since it won't pass the schema\n // Note that we need to use null so the default labelAlign is preserved.\n if (contains(['labelAlign', 'labelBaseline'], prop) && axis[prop] === null) {\n delete axis[prop];\n }\n }\n if (kind === 'grid') {\n if (!axis.grid) {\n return undefined;\n }\n // Remove unnecessary encode block\n if (axis.encode) {\n // Only need to keep encode block for grid\n var grid = axis.encode.grid;\n axis.encode = _objectSpread({}, grid ? {\n grid: grid\n } : {});\n if (isEmpty(axis.encode)) {\n delete axis.encode;\n }\n }\n return _objectSpread(_objectSpread({\n scale: scale,\n orient: orient\n }, axis), {}, {\n domain: false,\n labels: false,\n aria: false,\n // Always set min/maxExtent to 0 to ensure that `config.axis*.minExtent` and `config.axis*.maxExtent`\n // would not affect gridAxis\n maxExtent: 0,\n minExtent: 0,\n ticks: false,\n zindex: getFirstDefined(zindex, 0) // put grid behind marks by default\n });\n } else {\n // kind === 'main'\n if (!opt.header && axisCmpt.mainExtracted) {\n // if mainExtracted has been extracted to a separate facet\n return undefined;\n }\n if (labelExpr !== undefined) {\n var _axis$encode2;\n var expr = labelExpr;\n if ((_axis$encode2 = axis.encode) !== null && _axis$encode2 !== void 0 && (_axis$encode2 = _axis$encode2.labels) !== null && _axis$encode2 !== void 0 && _axis$encode2.update && isSignalRef(axis.encode.labels.update.text)) {\n expr = replaceAll(labelExpr, 'datum.label', axis.encode.labels.update.text.signal);\n }\n setAxisEncode(axis, 'labels', 'text', {\n signal: expr\n });\n }\n if (axis.labelAlign === null) {\n delete axis.labelAlign;\n }\n // Remove unnecessary encode block\n if (axis.encode) {\n var _iterator = _createForOfIteratorHelper(AXIS_PARTS),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _part2 = _step.value;\n if (!axisCmpt.hasAxisPart(_part2)) {\n delete axis.encode[_part2];\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n if (isEmpty(axis.encode)) {\n delete axis.encode;\n }\n }\n var titleString = assembleTitle(title, config);\n return _objectSpread(_objectSpread(_objectSpread(_objectSpread({\n scale: scale,\n orient: orient,\n grid: false\n }, titleString ? {\n title: titleString\n } : {}), axis), config.aria === false ? {\n aria: false\n } : {}), {}, {\n zindex: getFirstDefined(zindex, 0) // put axis line above marks by default\n });\n }\n}\n/**\n * Add axis signals so grid line works correctly\n * (Fix https://github.com/vega/vega-lite/issues/4226)\n */\nexport function assembleAxisSignals(model) {\n var axes = model.component.axes;\n var signals = [];\n var _iterator2 = _createForOfIteratorHelper(POSITION_SCALE_CHANNELS),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var channel = _step2.value;\n if (axes[channel]) {\n var _iterator3 = _createForOfIteratorHelper(axes[channel]),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var axis = _step3.value;\n if (!axis.get('disable') && !axis.get('gridScale')) {\n // If there is x-axis but no y-scale for gridScale, need to set height/width so x-axis can draw the grid with the right height. Same for y-axis and width.\n var sizeType = channel === 'x' ? 'height' : 'width';\n var update = model.getSizeSignalRef(sizeType).signal;\n if (sizeType !== update) {\n signals.push({\n name: sizeType,\n update: update\n });\n }\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n return signals;\n}\nexport function assembleAxes(axisComponents, config) {\n var _axisComponents$x = axisComponents.x,\n x = _axisComponents$x === void 0 ? [] : _axisComponents$x,\n _axisComponents$y = axisComponents.y,\n y = _axisComponents$y === void 0 ? [] : _axisComponents$y;\n return [].concat(_toConsumableArray(x.map(function (a) {\n return assembleAxis(a, 'grid', config);\n })), _toConsumableArray(y.map(function (a) {\n return assembleAxis(a, 'grid', config);\n })), _toConsumableArray(x.map(function (a) {\n return assembleAxis(a, 'main', config);\n })), _toConsumableArray(y.map(function (a) {\n return assembleAxis(a, 'main', config);\n }))).filter(function (a) {\n return a;\n }); // filter undefined\n}","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { array } from 'vega-util';\nimport { isQuantitative } from '../../scale';\nimport { keys, titleCase } from '../../util';\nimport { isSignalRef } from '../../vega.schema';\nimport { getStyleConfig, signalOrStringValue } from '../common';\nfunction getAxisConfigFromConfigTypes(configTypes, config, channel, orient) {\n // TODO: add special casing to add conditional value based on orient signal\n return Object.assign.apply(null, [{}].concat(_toConsumableArray(configTypes.map(function (configType) {\n if (configType === 'axisOrient') {\n var orient1 = channel === 'x' ? 'bottom' : 'left';\n var orientConfig1 = config[channel === 'x' ? 'axisBottom' : 'axisLeft'] || {};\n var orientConfig2 = config[channel === 'x' ? 'axisTop' : 'axisRight'] || {};\n var props = new Set([].concat(_toConsumableArray(keys(orientConfig1)), _toConsumableArray(keys(orientConfig2))));\n var conditionalOrientAxisConfig = {};\n var _iterator = _createForOfIteratorHelper(props.values()),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var prop = _step.value;\n conditionalOrientAxisConfig[prop] = {\n // orient is surely signal in this case\n signal: \"\".concat(orient['signal'], \" === \\\"\").concat(orient1, \"\\\" ? \").concat(signalOrStringValue(orientConfig1[prop]), \" : \").concat(signalOrStringValue(orientConfig2[prop]))\n };\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return conditionalOrientAxisConfig;\n }\n return config[configType];\n }))));\n}\nexport function getAxisConfigs(channel, scaleType, orient, config) {\n var typeBasedConfigTypes = scaleType === 'band' ? ['axisDiscrete', 'axisBand'] : scaleType === 'point' ? ['axisDiscrete', 'axisPoint'] : isQuantitative(scaleType) ? ['axisQuantitative'] : scaleType === 'time' || scaleType === 'utc' ? ['axisTemporal'] : [];\n var axisChannel = channel === 'x' ? 'axisX' : 'axisY';\n var axisOrient = isSignalRef(orient) ? 'axisOrient' : \"axis\".concat(titleCase(orient)); // axisTop, axisBottom, ...\n var vlOnlyConfigTypes = [].concat(typeBasedConfigTypes, _toConsumableArray(typeBasedConfigTypes.map(function (c) {\n return axisChannel + c.substr(4);\n })));\n var vgConfigTypes = ['axis', axisOrient, axisChannel];\n return {\n vlOnlyAxisConfig: getAxisConfigFromConfigTypes(vlOnlyConfigTypes, config, channel, orient),\n vgAxisConfig: getAxisConfigFromConfigTypes(vgConfigTypes, config, channel, orient),\n axisConfigStyle: getAxisConfigStyle([].concat(vgConfigTypes, _toConsumableArray(vlOnlyConfigTypes)), config)\n };\n}\nexport function getAxisConfigStyle(axisConfigTypes, config) {\n var toMerge = [{}];\n var _iterator2 = _createForOfIteratorHelper(axisConfigTypes),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _config$configType;\n var configType = _step2.value;\n // TODO: add special casing to add conditional value based on orient signal\n var style = (_config$configType = config[configType]) === null || _config$configType === void 0 ? void 0 : _config$configType.style;\n if (style) {\n style = array(style);\n var _iterator3 = _createForOfIteratorHelper(style),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var s = _step3.value;\n toMerge.push(config.style[s]);\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n return Object.assign.apply(null, toMerge);\n}\nexport function getAxisConfig(property, styleConfigIndex, style) {\n var axisConfigs = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var styleConfig = getStyleConfig(property, style, styleConfigIndex);\n if (styleConfig !== undefined) {\n return {\n configFrom: 'style',\n configValue: styleConfig\n };\n }\n for (var _i = 0, _arr = ['vlOnlyAxisConfig', 'vgAxisConfig', 'axisConfigStyle']; _i < _arr.length; _i++) {\n var _axisConfigs$configFr;\n var configFrom = _arr[_i];\n if (((_axisConfigs$configFr = axisConfigs[configFrom]) === null || _axisConfigs$configFr === void 0 ? void 0 : _axisConfigs$configFr[property]) !== undefined) {\n return {\n configFrom: configFrom,\n configValue: axisConfigs[configFrom][property]\n };\n }\n }\n return {};\n}","import { isArray, isObject } from 'vega-util';\nimport { isBinned, isBinning } from '../../bin';\nimport { X } from '../../channel';\nimport { isDiscrete, isFieldDef, toFieldDefBase, valueArray } from '../../channeldef';\nimport { hasDiscreteDomain } from '../../scale';\nimport { durationExpr, normalizeTimeUnit } from '../../timeunit';\nimport { NOMINAL, ORDINAL } from '../../type';\nimport { contains, normalizeAngle } from '../../util';\nimport { isSignalRef } from '../../vega.schema';\nimport { mergeTitle, mergeTitleFieldDefs } from '../common';\nimport { getAxisConfig } from './config';\nexport var axisRules = {\n scale: function scale(_ref) {\n var model = _ref.model,\n channel = _ref.channel;\n return model.scaleName(channel);\n },\n format: function format(_ref2) {\n var _format = _ref2.format;\n return _format;\n },\n formatType: function formatType(_ref3) {\n var _formatType = _ref3.formatType;\n return _formatType;\n },\n grid: function grid(_ref4) {\n var _axis$grid;\n var fieldOrDatumDef = _ref4.fieldOrDatumDef,\n axis = _ref4.axis,\n scaleType = _ref4.scaleType;\n return (_axis$grid = axis.grid) !== null && _axis$grid !== void 0 ? _axis$grid : defaultGrid(scaleType, fieldOrDatumDef);\n },\n gridScale: function gridScale(_ref5) {\n var model = _ref5.model,\n channel = _ref5.channel;\n return _gridScale(model, channel);\n },\n labelAlign: function labelAlign(_ref6) {\n var axis = _ref6.axis,\n labelAngle = _ref6.labelAngle,\n orient = _ref6.orient,\n channel = _ref6.channel;\n return axis.labelAlign || defaultLabelAlign(labelAngle, orient, channel);\n },\n labelAngle: function labelAngle(_ref7) {\n var _labelAngle = _ref7.labelAngle;\n return _labelAngle;\n },\n labelBaseline: function labelBaseline(_ref8) {\n var axis = _ref8.axis,\n labelAngle = _ref8.labelAngle,\n orient = _ref8.orient,\n channel = _ref8.channel;\n return axis.labelBaseline || defaultLabelBaseline(labelAngle, orient, channel);\n },\n labelFlush: function labelFlush(_ref9) {\n var _axis$labelFlush;\n var axis = _ref9.axis,\n fieldOrDatumDef = _ref9.fieldOrDatumDef,\n channel = _ref9.channel;\n return (_axis$labelFlush = axis.labelFlush) !== null && _axis$labelFlush !== void 0 ? _axis$labelFlush : defaultLabelFlush(fieldOrDatumDef.type, channel);\n },\n labelOverlap: function labelOverlap(_ref10) {\n var _axis$labelOverlap;\n var axis = _ref10.axis,\n fieldOrDatumDef = _ref10.fieldOrDatumDef,\n scaleType = _ref10.scaleType;\n return (_axis$labelOverlap = axis.labelOverlap) !== null && _axis$labelOverlap !== void 0 ? _axis$labelOverlap : defaultLabelOverlap(fieldOrDatumDef.type, scaleType, isFieldDef(fieldOrDatumDef) && !!fieldOrDatumDef.timeUnit, isFieldDef(fieldOrDatumDef) ? fieldOrDatumDef.sort : undefined);\n },\n // we already calculate orient in parse\n orient: function orient(_ref11) {\n var _orient = _ref11.orient;\n return _orient;\n },\n tickCount: function tickCount(_ref12) {\n var _axis$tickCount;\n var channel = _ref12.channel,\n model = _ref12.model,\n axis = _ref12.axis,\n fieldOrDatumDef = _ref12.fieldOrDatumDef,\n scaleType = _ref12.scaleType;\n var sizeType = channel === 'x' ? 'width' : channel === 'y' ? 'height' : undefined;\n var size = sizeType ? model.getSizeSignalRef(sizeType) : undefined;\n return (_axis$tickCount = axis.tickCount) !== null && _axis$tickCount !== void 0 ? _axis$tickCount : defaultTickCount({\n fieldOrDatumDef: fieldOrDatumDef,\n scaleType: scaleType,\n size: size,\n values: axis.values\n });\n },\n tickMinStep: defaultTickMinStep,\n title: function title(_ref13) {\n var axis = _ref13.axis,\n model = _ref13.model,\n channel = _ref13.channel;\n if (axis.title !== undefined) {\n return axis.title;\n }\n var fieldDefTitle = getFieldDefTitle(model, channel);\n if (fieldDefTitle !== undefined) {\n return fieldDefTitle;\n }\n var fieldDef = model.typedFieldDef(channel);\n var channel2 = channel === 'x' ? 'x2' : 'y2';\n var fieldDef2 = model.fieldDef(channel2);\n // If title not specified, store base parts of fieldDef (and fieldDef2 if exists)\n return mergeTitleFieldDefs(fieldDef ? [toFieldDefBase(fieldDef)] : [], isFieldDef(fieldDef2) ? [toFieldDefBase(fieldDef2)] : []);\n },\n values: function values(_ref14) {\n var axis = _ref14.axis,\n fieldOrDatumDef = _ref14.fieldOrDatumDef;\n return _values(axis, fieldOrDatumDef);\n },\n zindex: function zindex(_ref15) {\n var _axis$zindex;\n var axis = _ref15.axis,\n fieldOrDatumDef = _ref15.fieldOrDatumDef,\n mark = _ref15.mark;\n return (_axis$zindex = axis.zindex) !== null && _axis$zindex !== void 0 ? _axis$zindex : defaultZindex(mark, fieldOrDatumDef);\n }\n};\n// TODO: we need to refactor this method after we take care of config refactoring\n/**\n * Default rules for whether to show a grid should be shown for a channel.\n * If `grid` is unspecified, the default value is `true` for ordinal scales that are not binned\n */\nexport function defaultGrid(scaleType, fieldDef) {\n return !hasDiscreteDomain(scaleType) && isFieldDef(fieldDef) && !isBinning(fieldDef === null || fieldDef === void 0 ? void 0 : fieldDef.bin) && !isBinned(fieldDef === null || fieldDef === void 0 ? void 0 : fieldDef.bin);\n}\nfunction _gridScale(model, channel) {\n var gridChannel = channel === 'x' ? 'y' : 'x';\n if (model.getScaleComponent(gridChannel)) {\n return model.scaleName(gridChannel);\n }\n return undefined;\n}\nexport { _gridScale as gridScale };\nexport function getLabelAngle(fieldOrDatumDef, axis, channel, styleConfig, axisConfigs) {\n var labelAngle = axis === null || axis === void 0 ? void 0 : axis.labelAngle;\n // try axis value\n if (labelAngle !== undefined) {\n return isSignalRef(labelAngle) ? labelAngle : normalizeAngle(labelAngle);\n } else {\n // try axis config value\n var _getAxisConfig = getAxisConfig('labelAngle', styleConfig, axis === null || axis === void 0 ? void 0 : axis.style, axisConfigs),\n angle = _getAxisConfig.configValue;\n if (angle !== undefined) {\n return normalizeAngle(angle);\n } else {\n // get default value\n if (channel === X && contains([NOMINAL, ORDINAL], fieldOrDatumDef.type) && !(isFieldDef(fieldOrDatumDef) && fieldOrDatumDef.timeUnit)) {\n return 270;\n }\n // no default\n return undefined;\n }\n }\n}\nexport function normalizeAngleExpr(angle) {\n return \"(((\".concat(angle.signal, \" % 360) + 360) % 360)\");\n}\nexport function defaultLabelBaseline(angle, orient, channel, alwaysIncludeMiddle) {\n if (angle !== undefined) {\n if (channel === 'x') {\n if (isSignalRef(angle)) {\n var a = normalizeAngleExpr(angle);\n var orientIsTop = isSignalRef(orient) ? \"(\".concat(orient.signal, \" === \\\"top\\\")\") : orient === 'top';\n return {\n signal: \"(45 < \".concat(a, \" && \").concat(a, \" < 135) || (225 < \").concat(a, \" && \").concat(a, \" < 315) ? \\\"middle\\\" :\") + \"(\".concat(a, \" <= 45 || 315 <= \").concat(a, \") === \").concat(orientIsTop, \" ? \\\"bottom\\\" : \\\"top\\\"\")\n };\n }\n if (45 < angle && angle < 135 || 225 < angle && angle < 315) {\n return 'middle';\n }\n if (isSignalRef(orient)) {\n var op = angle <= 45 || 315 <= angle ? '===' : '!==';\n return {\n signal: \"\".concat(orient.signal, \" \").concat(op, \" \\\"top\\\" ? \\\"bottom\\\" : \\\"top\\\"\")\n };\n }\n return (angle <= 45 || 315 <= angle) === (orient === 'top') ? 'bottom' : 'top';\n } else {\n if (isSignalRef(angle)) {\n var _a = normalizeAngleExpr(angle);\n var orientIsLeft = isSignalRef(orient) ? \"(\".concat(orient.signal, \" === \\\"left\\\")\") : orient === 'left';\n var middle = alwaysIncludeMiddle ? '\"middle\"' : 'null';\n return {\n signal: \"\".concat(_a, \" <= 45 || 315 <= \").concat(_a, \" || (135 <= \").concat(_a, \" && \").concat(_a, \" <= 225) ? \").concat(middle, \" : (45 <= \").concat(_a, \" && \").concat(_a, \" <= 135) === \").concat(orientIsLeft, \" ? \\\"top\\\" : \\\"bottom\\\"\")\n };\n }\n if (angle <= 45 || 315 <= angle || 135 <= angle && angle <= 225) {\n return alwaysIncludeMiddle ? 'middle' : null;\n }\n if (isSignalRef(orient)) {\n var _op = 45 <= angle && angle <= 135 ? '===' : '!==';\n return {\n signal: \"\".concat(orient.signal, \" \").concat(_op, \" \\\"left\\\" ? \\\"top\\\" : \\\"bottom\\\"\")\n };\n }\n return (45 <= angle && angle <= 135) === (orient === 'left') ? 'top' : 'bottom';\n }\n }\n return undefined;\n}\nexport function defaultLabelAlign(angle, orient, channel) {\n if (angle === undefined) {\n return undefined;\n }\n var isX = channel === 'x';\n var startAngle = isX ? 0 : 90;\n var mainOrient = isX ? 'bottom' : 'left';\n if (isSignalRef(angle)) {\n var a = normalizeAngleExpr(angle);\n var orientIsMain = isSignalRef(orient) ? \"(\".concat(orient.signal, \" === \\\"\").concat(mainOrient, \"\\\")\") : orient === mainOrient;\n return {\n signal: \"(\".concat(startAngle ? \"(\".concat(a, \" + 90)\") : a, \" % 180 === 0) ? \").concat(isX ? null : '\"center\"', \" :\") + \"(\".concat(startAngle, \" < \").concat(a, \" && \").concat(a, \" < \").concat(180 + startAngle, \") === \").concat(orientIsMain, \" ? \\\"left\\\" : \\\"right\\\"\")\n };\n }\n if ((angle + startAngle) % 180 === 0) {\n // For bottom, use default label align so label flush still works\n return isX ? null : 'center';\n }\n if (isSignalRef(orient)) {\n var op = startAngle < angle && angle < 180 + startAngle ? '===' : '!==';\n var _orientIsMain = \"\".concat(orient.signal, \" \").concat(op, \" \\\"\").concat(mainOrient, \"\\\"\");\n return {\n signal: \"\".concat(_orientIsMain, \" ? \\\"left\\\" : \\\"right\\\"\")\n };\n }\n if ((startAngle < angle && angle < 180 + startAngle) === (orient === mainOrient)) {\n return 'left';\n }\n return 'right';\n}\nexport function defaultLabelFlush(type, channel) {\n if (channel === 'x' && contains(['quantitative', 'temporal'], type)) {\n return true;\n }\n return undefined;\n}\nexport function defaultLabelOverlap(type, scaleType, hasTimeUnit, sort) {\n // do not prevent overlap for nominal data because there is no way to infer what the missing labels are\n if (hasTimeUnit && !isObject(sort) || type !== 'nominal' && type !== 'ordinal') {\n if (scaleType === 'log' || scaleType === 'symlog') {\n return 'greedy';\n }\n return true;\n }\n return undefined;\n}\nexport function defaultOrient(channel) {\n return channel === 'x' ? 'bottom' : 'left';\n}\nexport function defaultTickCount(_ref16) {\n var fieldOrDatumDef = _ref16.fieldOrDatumDef,\n scaleType = _ref16.scaleType,\n size = _ref16.size,\n vals = _ref16.values;\n if (!vals && !hasDiscreteDomain(scaleType) && scaleType !== 'log') {\n if (isFieldDef(fieldOrDatumDef)) {\n var _normalizeTimeUnit;\n if (isBinning(fieldOrDatumDef.bin)) {\n // for binned data, we don't want more ticks than maxbins\n return {\n signal: \"ceil(\".concat(size.signal, \"/10)\")\n };\n }\n if (fieldOrDatumDef.timeUnit && contains(['month', 'hours', 'day', 'quarter'], (_normalizeTimeUnit = normalizeTimeUnit(fieldOrDatumDef.timeUnit)) === null || _normalizeTimeUnit === void 0 ? void 0 : _normalizeTimeUnit.unit)) {\n return undefined;\n }\n }\n return {\n signal: \"ceil(\".concat(size.signal, \"/40)\")\n };\n }\n return undefined;\n}\nexport function defaultTickMinStep(_ref17) {\n var format = _ref17.format,\n fieldOrDatumDef = _ref17.fieldOrDatumDef;\n if (format === 'd') {\n return 1;\n }\n if (isFieldDef(fieldOrDatumDef)) {\n var timeUnit = fieldOrDatumDef.timeUnit;\n if (timeUnit) {\n var signal = durationExpr(timeUnit);\n if (signal) {\n return {\n signal: signal\n };\n }\n }\n }\n return undefined;\n}\nexport function getFieldDefTitle(model, channel) {\n var channel2 = channel === 'x' ? 'x2' : 'y2';\n var fieldDef = model.fieldDef(channel);\n var fieldDef2 = model.fieldDef(channel2);\n var title1 = fieldDef ? fieldDef.title : undefined;\n var title2 = fieldDef2 ? fieldDef2.title : undefined;\n if (title1 && title2) {\n return mergeTitle(title1, title2);\n } else if (title1) {\n return title1;\n } else if (title2) {\n return title2;\n } else if (title1 !== undefined) {\n // falsy value to disable config\n return title1;\n } else if (title2 !== undefined) {\n // falsy value to disable config\n return title2;\n }\n return undefined;\n}\nfunction _values(axis, fieldOrDatumDef) {\n var vals = axis.values;\n if (isArray(vals)) {\n return valueArray(fieldOrDatumDef, vals);\n } else if (isSignalRef(vals)) {\n return vals;\n }\n return undefined;\n}\nexport { _values as values };\nexport function defaultZindex(mark, fieldDef) {\n if (mark === 'rect' && isDiscrete(fieldDef)) {\n return 1;\n }\n return 0;\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { isScaleFieldDef, vgField } from '../../channeldef';\nimport { fieldFilterExpression } from '../../predicate';\nimport { isSortArray } from '../../sort';\nimport { duplicate, hash as _hash } from '../../util';\nimport { DataFlowNode } from './dataflow';\nimport { getDependentFields } from './expressions';\nexport var CalculateNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(CalculateNode, _DataFlowNode);\n var _super = _createSuper(CalculateNode);\n function CalculateNode(parent, transform) {\n var _this;\n _classCallCheck(this, CalculateNode);\n _this = _super.call(this, parent);\n _this.transform = transform;\n _this._dependentFields = getDependentFields(_this.transform.calculate);\n return _this;\n }\n _createClass(CalculateNode, [{\n key: \"clone\",\n value: function clone() {\n return new CalculateNode(null, duplicate(this.transform));\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return new Set([this.transform.as]);\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n return this._dependentFields;\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n return {\n type: 'formula',\n expr: this.transform.calculate,\n as: this.transform.as\n };\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return \"Calculate \".concat(_hash(this.transform));\n }\n }], [{\n key: \"parseAllForSortIndex\",\n value: function parseAllForSortIndex(parent, model) {\n // get all the encoding with sort fields from model\n model.forEachFieldDef(function (fieldDef, channel) {\n if (!isScaleFieldDef(fieldDef)) {\n return;\n }\n if (isSortArray(fieldDef.sort)) {\n var field = fieldDef.field,\n timeUnit = fieldDef.timeUnit;\n var sort = fieldDef.sort;\n // generate `datum[\"a\"] === val0 ? 0 : datum[\"a\"] === val1 ? 1 : ... : n` via FieldEqualPredicate\n var calculate = sort.map(function (sortValue, i) {\n return \"\".concat(fieldFilterExpression({\n field: field,\n timeUnit: timeUnit,\n equal: sortValue\n }), \" ? \").concat(i, \" : \");\n }).join('') + sort.length;\n parent = new CalculateNode(parent, {\n calculate: calculate,\n as: sortArrayIndexField(fieldDef, channel, {\n forAs: true\n })\n });\n }\n });\n return parent;\n }\n }]);\n return CalculateNode;\n}(DataFlowNode);\nexport function sortArrayIndexField(fieldDef, channel, opt) {\n return vgField(fieldDef, _objectSpread({\n prefix: channel,\n suffix: 'sort_index'\n }, opt !== null && opt !== void 0 ? opt : {}));\n}","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { contains, getFirstDefined } from '../../util';\n/**\n * Get header channel, which can be different from facet channel when orient is specified or when the facet channel is facet.\n */\nexport function getHeaderChannel(channel, orient) {\n if (contains(['top', 'bottom'], orient)) {\n return 'column';\n } else if (contains(['left', 'right'], orient)) {\n return 'row';\n }\n return channel === 'row' ? 'row' : 'column';\n}\nexport function getHeaderProperty(prop, header, config, channel) {\n var headerSpecificConfig = channel === 'row' ? config.headerRow : channel === 'column' ? config.headerColumn : config.headerFacet;\n return getFirstDefined((header || {})[prop], headerSpecificConfig[prop], config.header[prop]);\n}\nexport function getHeaderProperties(properties, header, config, channel) {\n var props = {};\n var _iterator = _createForOfIteratorHelper(properties),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var prop = _step.value;\n var value = getHeaderProperty(prop, header || {}, config, channel);\n if (value !== undefined) {\n props[prop] = value;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return props;\n}","export var HEADER_CHANNELS = ['row', 'column'];\nexport var HEADER_TYPES = ['header', 'footer'];","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n/**\n * Utility for generating row / column headers\n */\nimport { isArray } from 'vega-util';\nimport { FACET_CHANNELS } from '../../channel';\nimport { vgField } from '../../channeldef';\nimport { HEADER_LABEL_PROPERTIES, HEADER_LABEL_PROPERTIES_MAP, HEADER_TITLE_PROPERTIES, HEADER_TITLE_PROPERTIES_MAP } from '../../header';\nimport { isSortField } from '../../sort';\nimport { isFacetMapping } from '../../spec/facet';\nimport { contains, isEmpty, normalizeAngle, replaceAll } from '../../util';\nimport { defaultLabelAlign, defaultLabelBaseline } from '../axis/properties';\nimport { sortArrayIndexField } from '../data/calculate';\nimport { formatSignalRef } from '../format';\nimport { isFacetModel } from '../model';\nimport { getHeaderChannel, getHeaderProperties, getHeaderProperty } from './common';\nimport { HEADER_TYPES } from './component';\n// TODO: rename to assembleHeaderTitleGroup\nexport function assembleTitleGroup(model, channel) {\n var title = model.component.layoutHeaders[channel].title;\n var config = model.config ? model.config : undefined;\n var facetFieldDef = model.component.layoutHeaders[channel].facetFieldDef ? model.component.layoutHeaders[channel].facetFieldDef : undefined;\n var _getHeaderProperties = getHeaderProperties(['titleAnchor', 'titleAngle', 'titleOrient'], facetFieldDef.header, config, channel),\n titleAnchor = _getHeaderProperties.titleAnchor,\n ta = _getHeaderProperties.titleAngle,\n titleOrient = _getHeaderProperties.titleOrient;\n var headerChannel = getHeaderChannel(channel, titleOrient);\n var titleAngle = normalizeAngle(ta);\n return {\n name: \"\".concat(channel, \"-title\"),\n type: 'group',\n role: \"\".concat(headerChannel, \"-title\"),\n title: _objectSpread(_objectSpread(_objectSpread(_objectSpread({\n text: title\n }, channel === 'row' ? {\n orient: 'left'\n } : {}), {}, {\n style: 'guide-title'\n }, defaultHeaderGuideBaseline(titleAngle, headerChannel)), defaultHeaderGuideAlign(headerChannel, titleAngle, titleAnchor)), assembleHeaderProperties(config, facetFieldDef, channel, HEADER_TITLE_PROPERTIES, HEADER_TITLE_PROPERTIES_MAP))\n };\n}\nexport function defaultHeaderGuideAlign(headerChannel, angle) {\n var anchor = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'middle';\n switch (anchor) {\n case 'start':\n return {\n align: 'left'\n };\n case 'end':\n return {\n align: 'right'\n };\n }\n var align = defaultLabelAlign(angle, headerChannel === 'row' ? 'left' : 'top', headerChannel === 'row' ? 'y' : 'x');\n return align ? {\n align: align\n } : {};\n}\nexport function defaultHeaderGuideBaseline(angle, channel) {\n var baseline = defaultLabelBaseline(angle, channel === 'row' ? 'left' : 'top', channel === 'row' ? 'y' : 'x', true);\n return baseline ? {\n baseline: baseline\n } : {};\n}\nexport function assembleHeaderGroups(model, channel) {\n var layoutHeader = model.component.layoutHeaders[channel];\n var groups = [];\n var _iterator = _createForOfIteratorHelper(HEADER_TYPES),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var headerType = _step.value;\n if (layoutHeader[headerType]) {\n var _iterator2 = _createForOfIteratorHelper(layoutHeader[headerType]),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var headerComponent = _step2.value;\n var group = assembleHeaderGroup(model, channel, headerType, layoutHeader, headerComponent);\n if (group != null) {\n groups.push(group);\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return groups;\n}\nfunction getSort(facetFieldDef, channel) {\n var sort = facetFieldDef.sort;\n if (isSortField(sort)) {\n var _sort$order;\n return {\n field: vgField(sort, {\n expr: 'datum'\n }),\n order: (_sort$order = sort.order) !== null && _sort$order !== void 0 ? _sort$order : 'ascending'\n };\n } else if (isArray(sort)) {\n return {\n field: sortArrayIndexField(facetFieldDef, channel, {\n expr: 'datum'\n }),\n order: 'ascending'\n };\n } else {\n return {\n field: vgField(facetFieldDef, {\n expr: 'datum'\n }),\n order: sort !== null && sort !== void 0 ? sort : 'ascending'\n };\n }\n}\nexport function assembleLabelTitle(facetFieldDef, channel, config) {\n var _getHeaderProperties2 = getHeaderProperties(['format', 'formatType', 'labelAngle', 'labelAnchor', 'labelOrient', 'labelExpr'], facetFieldDef.header, config, channel),\n format = _getHeaderProperties2.format,\n formatType = _getHeaderProperties2.formatType,\n labelAngle = _getHeaderProperties2.labelAngle,\n labelAnchor = _getHeaderProperties2.labelAnchor,\n labelOrient = _getHeaderProperties2.labelOrient,\n labelExpr = _getHeaderProperties2.labelExpr;\n var titleTextExpr = formatSignalRef({\n fieldOrDatumDef: facetFieldDef,\n format: format,\n formatType: formatType,\n expr: 'parent',\n config: config\n }).signal;\n var headerChannel = getHeaderChannel(channel, labelOrient);\n return _objectSpread(_objectSpread(_objectSpread(_objectSpread({\n text: {\n signal: labelExpr ? replaceAll(replaceAll(labelExpr, 'datum.label', titleTextExpr), 'datum.value', vgField(facetFieldDef, {\n expr: 'parent'\n })) : titleTextExpr\n }\n }, channel === 'row' ? {\n orient: 'left'\n } : {}), {}, {\n style: 'guide-label',\n frame: 'group'\n }, defaultHeaderGuideBaseline(labelAngle, headerChannel)), defaultHeaderGuideAlign(headerChannel, labelAngle, labelAnchor)), assembleHeaderProperties(config, facetFieldDef, channel, HEADER_LABEL_PROPERTIES, HEADER_LABEL_PROPERTIES_MAP));\n}\nexport function assembleHeaderGroup(model, channel, headerType, layoutHeader, headerComponent) {\n if (headerComponent) {\n var title = null;\n var facetFieldDef = layoutHeader.facetFieldDef;\n var config = model.config ? model.config : undefined;\n if (facetFieldDef && headerComponent.labels) {\n var _getHeaderProperties3 = getHeaderProperties(['labelOrient'], facetFieldDef.header, config, channel),\n labelOrient = _getHeaderProperties3.labelOrient;\n // Include label title in the header if orient aligns with the channel\n if (channel === 'row' && !contains(['top', 'bottom'], labelOrient) || channel === 'column' && !contains(['left', 'right'], labelOrient)) {\n title = assembleLabelTitle(facetFieldDef, channel, config);\n }\n }\n var isFacetWithoutRowCol = isFacetModel(model) && !isFacetMapping(model.facet);\n var axes = headerComponent.axes;\n var hasAxes = (axes === null || axes === void 0 ? void 0 : axes.length) > 0;\n if (title || hasAxes) {\n var sizeChannel = channel === 'row' ? 'height' : 'width';\n return _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({\n name: model.getName(\"\".concat(channel, \"_\").concat(headerType)),\n type: 'group',\n role: \"\".concat(channel, \"-\").concat(headerType)\n }, layoutHeader.facetFieldDef ? {\n from: {\n data: model.getName(\"\".concat(channel, \"_domain\"))\n },\n sort: getSort(facetFieldDef, channel)\n } : {}), hasAxes && isFacetWithoutRowCol ? {\n from: {\n data: model.getName(\"facet_domain_\".concat(channel))\n }\n } : {}), title ? {\n title: title\n } : {}), headerComponent.sizeSignal ? {\n encode: {\n update: _defineProperty({}, sizeChannel, headerComponent.sizeSignal)\n }\n } : {}), hasAxes ? {\n axes: axes\n } : {});\n }\n }\n return null;\n}\nvar LAYOUT_TITLE_BAND = {\n column: {\n start: 0,\n end: 1\n },\n row: {\n start: 1,\n end: 0\n }\n};\nexport function getLayoutTitleBand(titleAnchor, headerChannel) {\n return LAYOUT_TITLE_BAND[headerChannel][titleAnchor];\n}\nexport function assembleLayoutTitleBand(headerComponentIndex, config) {\n var titleBand = {};\n var _iterator3 = _createForOfIteratorHelper(FACET_CHANNELS),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var channel = _step3.value;\n var headerComponent = headerComponentIndex[channel];\n if (headerComponent !== null && headerComponent !== void 0 && headerComponent.facetFieldDef) {\n var _getHeaderProperties4 = getHeaderProperties(['titleAnchor', 'titleOrient'], headerComponent.facetFieldDef.header, config, channel),\n titleAnchor = _getHeaderProperties4.titleAnchor,\n titleOrient = _getHeaderProperties4.titleOrient;\n var headerChannel = getHeaderChannel(channel, titleOrient);\n var band = getLayoutTitleBand(titleAnchor, headerChannel);\n if (band !== undefined) {\n titleBand[headerChannel] = band;\n }\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n return isEmpty(titleBand) ? undefined : titleBand;\n}\nexport function assembleHeaderProperties(config, facetFieldDef, channel, properties, propertiesMap) {\n var props = {};\n var _iterator4 = _createForOfIteratorHelper(properties),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var prop = _step4.value;\n if (!propertiesMap[prop]) {\n continue;\n }\n var value = getHeaderProperty(prop, facetFieldDef === null || facetFieldDef === void 0 ? void 0 : facetFieldDef.header, config, channel);\n if (value !== undefined) {\n props[propertiesMap[prop]] = value;\n }\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n return props;\n}","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport { getViewConfigContinuousSize } from '../../config';\nimport { hasDiscreteDomain } from '../../scale';\nimport { getFirstDefined } from '../../util';\nimport { isSignalRef, isVgRangeStep } from '../../vega.schema';\nimport { signalOrStringValue } from '../common';\nimport { isFacetModel } from '../model';\nexport function assembleLayoutSignals(model) {\n return [].concat(_toConsumableArray(sizeSignals(model, 'width')), _toConsumableArray(sizeSignals(model, 'height')), _toConsumableArray(sizeSignals(model, 'childWidth')), _toConsumableArray(sizeSignals(model, 'childHeight')));\n}\nexport function sizeSignals(model, sizeType) {\n var channel = sizeType === 'width' ? 'x' : 'y';\n var size = model.component.layoutSize.get(sizeType);\n if (!size || size === 'merged') {\n return [];\n }\n // Read size signal name from name map, just in case it is the top-level size signal that got renamed.\n var name = model.getSizeSignalRef(sizeType).signal;\n if (size === 'step') {\n var scaleComponent = model.getScaleComponent(channel);\n if (scaleComponent) {\n var type = scaleComponent.get('type');\n var range = scaleComponent.get('range');\n if (hasDiscreteDomain(type) && isVgRangeStep(range)) {\n var scaleName = model.scaleName(channel);\n if (isFacetModel(model.parent)) {\n // If parent is facet and this is an independent scale, return only signal signal\n // as the width/height will be calculated using the cardinality from\n // facet's aggregate rather than reading from scale domain\n var parentResolve = model.parent.component.resolve;\n if (parentResolve.scale[channel] === 'independent') {\n return [stepSignal(scaleName, range)];\n }\n }\n return [stepSignal(scaleName, range), {\n name: name,\n update: sizeExpr(scaleName, scaleComponent, \"domain('\".concat(scaleName, \"').length\"))\n }];\n }\n }\n /* istanbul ignore next: Condition should not happen -- only for warning in development. */\n throw new Error('layout size is step although width/height is not step.');\n } else if (size == 'container') {\n var isWidth = name.endsWith('width');\n var expr = isWidth ? 'containerSize()[0]' : 'containerSize()[1]';\n var defaultValue = getViewConfigContinuousSize(model.config.view, isWidth ? 'width' : 'height');\n var safeExpr = \"isFinite(\".concat(expr, \") ? \").concat(expr, \" : \").concat(defaultValue);\n return [{\n name: name,\n init: safeExpr,\n on: [{\n update: safeExpr,\n events: 'window:resize'\n }]\n }];\n } else {\n return [{\n name: name,\n value: size\n }];\n }\n}\nfunction stepSignal(scaleName, range) {\n var name = \"\".concat(scaleName, \"_step\");\n if (isSignalRef(range.step)) {\n return {\n name: name,\n update: range.step.signal\n };\n } else {\n return {\n name: name,\n value: range.step\n };\n }\n}\nexport function sizeExpr(scaleName, scaleComponent, cardinality) {\n var type = scaleComponent.get('type');\n var padding = scaleComponent.get('padding');\n var paddingOuter = getFirstDefined(scaleComponent.get('paddingOuter'), padding);\n var paddingInner = scaleComponent.get('paddingInner');\n paddingInner = type === 'band' ?\n // only band has real paddingInner\n paddingInner !== undefined ? paddingInner : padding :\n // For point, as calculated in https://github.com/vega/vega-scale/blob/master/src/band.js#L128,\n // it's equivalent to have paddingInner = 1 since there is only n-1 steps between n points.\n 1;\n return \"bandspace(\".concat(cardinality, \", \").concat(signalOrStringValue(paddingInner), \", \").concat(signalOrStringValue(paddingOuter), \") * \").concat(scaleName, \"_step\");\n}","export function getSizeTypeFromLayoutSizeType(layoutSizeType) {\n return layoutSizeType === 'childWidth' ? 'width' : layoutSizeType === 'childHeight' ? 'height' : layoutSizeType;\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { keys } from '../util';\nimport { signalOrValueRef } from './common';\nimport { wrapCondition } from './mark/encode';\nexport function guideEncodeEntry(encoding, model) {\n return keys(encoding).reduce(function (encode, channel) {\n var valueDef = encoding[channel];\n return _objectSpread(_objectSpread({}, encode), wrapCondition(model, valueDef, channel, function (def) {\n return signalOrValueRef(def.value);\n }));\n }, {});\n}","import { isXorY } from '../channel';\nimport * as log from '../log';\nimport { isConcatModel, isFacetModel, isLayerModel } from './model';\nexport function defaultScaleResolve(channel, model) {\n if (isFacetModel(model)) {\n return channel === 'theta' ? 'independent' : 'shared';\n } else if (isLayerModel(model)) {\n return 'shared';\n } else if (isConcatModel(model)) {\n return isXorY(channel) || channel === 'theta' || channel === 'radius' ? 'independent' : 'shared';\n }\n /* istanbul ignore next: should never reach here. */\n throw new Error('invalid model type for resolve');\n}\nexport function parseGuideResolve(resolve, channel) {\n var channelScaleResolve = resolve.scale[channel];\n var guide = isXorY(channel) ? 'axis' : 'legend';\n if (channelScaleResolve === 'independent') {\n if (resolve[guide][channel] === 'shared') {\n log.warn(log.message.independentScaleMeansIndependentGuide(channel));\n }\n return 'independent';\n }\n return resolve[guide][channel] || 'shared';\n}","import _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { COMMON_LEGEND_PROPERTY_INDEX } from '../../legend';\nimport { keys } from '../../util';\nimport { Split } from '../split';\nvar LEGEND_COMPONENT_PROPERTY_INDEX = _objectSpread(_objectSpread({}, COMMON_LEGEND_PROPERTY_INDEX), {}, {\n disable: 1,\n labelExpr: 1,\n selections: 1,\n // channel scales\n opacity: 1,\n shape: 1,\n stroke: 1,\n fill: 1,\n size: 1,\n strokeWidth: 1,\n strokeDash: 1,\n // encode\n encode: 1\n});\nexport var LEGEND_COMPONENT_PROPERTIES = keys(LEGEND_COMPONENT_PROPERTY_INDEX);\nexport var LegendComponent = /*#__PURE__*/function (_Split) {\n _inherits(LegendComponent, _Split);\n var _super = _createSuper(LegendComponent);\n function LegendComponent() {\n _classCallCheck(this, LegendComponent);\n return _super.apply(this, arguments);\n }\n return _createClass(LegendComponent);\n}(Split);","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { array, isArray, stringValue } from 'vega-util';\nimport { COLOR, OPACITY } from '../../channel';\nimport { hasConditionalValueDef, isFieldDef, isValueDef } from '../../channeldef';\nimport { FILL_STROKE_CONFIG } from '../../mark';\nimport { getFirstDefined, isEmpty, varName } from '../../util';\nimport { applyMarkConfig, signalOrValueRef } from '../common';\nimport { formatCustomType, isCustomFormatType } from '../format';\nimport * as mixins from '../mark/encode';\nimport { STORE } from '../selection';\nexport var legendEncodeRules = {\n symbols: symbols,\n gradient: gradient,\n labels: labels,\n entries: entries\n};\nexport function symbols(symbolsSpec, _ref) {\n var _legendCmpt$get, _legendCmpt$get2, _legendCmpt$get3, _getMaxValue;\n var fieldOrDatumDef = _ref.fieldOrDatumDef,\n model = _ref.model,\n channel = _ref.channel,\n legendCmpt = _ref.legendCmpt,\n legendType = _ref.legendType;\n if (legendType !== 'symbol') {\n return undefined;\n }\n var markDef = model.markDef,\n encoding = model.encoding,\n config = model.config,\n mark = model.mark;\n var filled = markDef.filled && mark !== 'trail';\n var out = _objectSpread(_objectSpread({}, applyMarkConfig({}, model, FILL_STROKE_CONFIG)), mixins.color(model, {\n filled: filled\n })); // FIXME: remove this when VgEncodeEntry is compatible with SymbolEncodeEntry\n var symbolOpacity = (_legendCmpt$get = legendCmpt.get('symbolOpacity')) !== null && _legendCmpt$get !== void 0 ? _legendCmpt$get : config.legend.symbolOpacity;\n var symbolFillColor = (_legendCmpt$get2 = legendCmpt.get('symbolFillColor')) !== null && _legendCmpt$get2 !== void 0 ? _legendCmpt$get2 : config.legend.symbolFillColor;\n var symbolStrokeColor = (_legendCmpt$get3 = legendCmpt.get('symbolStrokeColor')) !== null && _legendCmpt$get3 !== void 0 ? _legendCmpt$get3 : config.legend.symbolStrokeColor;\n var opacity = symbolOpacity === undefined ? (_getMaxValue = getMaxValue(encoding.opacity)) !== null && _getMaxValue !== void 0 ? _getMaxValue : markDef.opacity : undefined;\n if (out.fill) {\n // for fill legend, we don't want any fill in symbol\n if (channel === 'fill' || filled && channel === COLOR) {\n delete out.fill;\n } else {\n if (out.fill['field']) {\n // For others, set fill to some opaque value (or nothing if a color is already set)\n if (symbolFillColor) {\n delete out.fill;\n } else {\n var _config$legend$symbol;\n out.fill = signalOrValueRef((_config$legend$symbol = config.legend.symbolBaseFillColor) !== null && _config$legend$symbol !== void 0 ? _config$legend$symbol : 'black');\n out.fillOpacity = signalOrValueRef(opacity !== null && opacity !== void 0 ? opacity : 1);\n }\n } else if (isArray(out.fill)) {\n var _ref2, _getFirstConditionVal, _encoding$fill;\n var fill = (_ref2 = (_getFirstConditionVal = getFirstConditionValue((_encoding$fill = encoding.fill) !== null && _encoding$fill !== void 0 ? _encoding$fill : encoding.color)) !== null && _getFirstConditionVal !== void 0 ? _getFirstConditionVal : markDef.fill) !== null && _ref2 !== void 0 ? _ref2 : filled && markDef.color;\n if (fill) {\n out.fill = signalOrValueRef(fill);\n }\n }\n }\n }\n if (out.stroke) {\n if (channel === 'stroke' || !filled && channel === COLOR) {\n delete out.stroke;\n } else {\n if (out.stroke['field'] || symbolStrokeColor) {\n // For others, remove stroke field\n delete out.stroke;\n } else if (isArray(out.stroke)) {\n var stroke = getFirstDefined(getFirstConditionValue(encoding.stroke || encoding.color), markDef.stroke, filled ? markDef.color : undefined);\n if (stroke) {\n out.stroke = {\n value: stroke\n };\n }\n }\n }\n }\n if (channel !== OPACITY) {\n var condition = isFieldDef(fieldOrDatumDef) && selectedCondition(model, legendCmpt, fieldOrDatumDef);\n if (condition) {\n out.opacity = [_objectSpread({\n test: condition\n }, signalOrValueRef(opacity !== null && opacity !== void 0 ? opacity : 1)), signalOrValueRef(config.legend.unselectedOpacity)];\n } else if (opacity) {\n out.opacity = signalOrValueRef(opacity);\n }\n }\n out = _objectSpread(_objectSpread({}, out), symbolsSpec);\n return isEmpty(out) ? undefined : out;\n}\nexport function gradient(gradientSpec, _ref3) {\n var _legendCmpt$get4;\n var model = _ref3.model,\n legendType = _ref3.legendType,\n legendCmpt = _ref3.legendCmpt;\n if (legendType !== 'gradient') {\n return undefined;\n }\n var config = model.config,\n markDef = model.markDef,\n encoding = model.encoding;\n var out = {};\n var gradientOpacity = (_legendCmpt$get4 = legendCmpt.get('gradientOpacity')) !== null && _legendCmpt$get4 !== void 0 ? _legendCmpt$get4 : config.legend.gradientOpacity;\n var opacity = gradientOpacity === undefined ? getMaxValue(encoding.opacity) || markDef.opacity : undefined;\n if (opacity) {\n // only apply opacity if it is neither zero or undefined\n out.opacity = signalOrValueRef(opacity);\n }\n out = _objectSpread(_objectSpread({}, out), gradientSpec);\n return isEmpty(out) ? undefined : out;\n}\nexport function labels(specifiedlabelsSpec, _ref4) {\n var fieldOrDatumDef = _ref4.fieldOrDatumDef,\n model = _ref4.model,\n channel = _ref4.channel,\n legendCmpt = _ref4.legendCmpt;\n var legend = model.legend(channel) || {};\n var config = model.config;\n var condition = isFieldDef(fieldOrDatumDef) ? selectedCondition(model, legendCmpt, fieldOrDatumDef) : undefined;\n var opacity = condition ? [{\n test: condition,\n value: 1\n }, {\n value: config.legend.unselectedOpacity\n }] : undefined;\n var format = legend.format,\n formatType = legend.formatType;\n var text = undefined;\n if (isCustomFormatType(formatType)) {\n text = formatCustomType({\n fieldOrDatumDef: fieldOrDatumDef,\n field: 'datum.value',\n format: format,\n formatType: formatType,\n config: config\n });\n } else if (format === undefined && formatType === undefined && config.customFormatTypes) {\n if (fieldOrDatumDef.type === 'quantitative' && config.numberFormatType) {\n text = formatCustomType({\n fieldOrDatumDef: fieldOrDatumDef,\n field: 'datum.value',\n format: config.numberFormat,\n formatType: config.numberFormatType,\n config: config\n });\n } else if (fieldOrDatumDef.type === 'temporal' && config.timeFormatType && isFieldDef(fieldOrDatumDef) && fieldOrDatumDef.timeUnit === undefined) {\n text = formatCustomType({\n fieldOrDatumDef: fieldOrDatumDef,\n field: 'datum.value',\n format: config.timeFormat,\n formatType: config.timeFormatType,\n config: config\n });\n }\n }\n var labelsSpec = _objectSpread(_objectSpread(_objectSpread({}, opacity ? {\n opacity: opacity\n } : {}), text ? {\n text: text\n } : {}), specifiedlabelsSpec);\n return isEmpty(labelsSpec) ? undefined : labelsSpec;\n}\nexport function entries(entriesSpec, _ref5) {\n var legendCmpt = _ref5.legendCmpt;\n var selections = legendCmpt.get('selections');\n return selections !== null && selections !== void 0 && selections.length ? _objectSpread(_objectSpread({}, entriesSpec), {}, {\n fill: {\n value: 'transparent'\n }\n }) : entriesSpec;\n}\nfunction getMaxValue(channelDef) {\n return getConditionValue(channelDef, function (v, conditionalDef) {\n return Math.max(v, conditionalDef.value);\n });\n}\nexport function getFirstConditionValue(channelDef) {\n return getConditionValue(channelDef, function (v, conditionalDef) {\n return getFirstDefined(v, conditionalDef.value);\n });\n}\nfunction getConditionValue(channelDef, reducer) {\n if (hasConditionalValueDef(channelDef)) {\n return array(channelDef.condition).reduce(reducer, channelDef.value);\n } else if (isValueDef(channelDef)) {\n return channelDef.value;\n }\n return undefined;\n}\nfunction selectedCondition(model, legendCmpt, fieldDef) {\n var selections = legendCmpt.get('selections');\n if (!(selections !== null && selections !== void 0 && selections.length)) return undefined;\n var field = stringValue(fieldDef.field);\n return selections.map(function (name) {\n var store = stringValue(varName(name) + STORE);\n return \"(!length(data(\".concat(store, \")) || (\").concat(name, \"[\").concat(field, \"] && indexof(\").concat(name, \"[\").concat(field, \"], datum.value) >= 0))\");\n }).join(' || ');\n}","import { isArray } from 'vega-util';\nimport { isColorChannel } from '../../channel';\nimport { title as fieldDefTitle, valueArray } from '../../channeldef';\nimport { isContinuousToContinuous } from '../../scale';\nimport { contains, getFirstDefined } from '../../util';\nimport { isSignalRef } from '../../vega.schema';\nimport { guideFormat, guideFormatType } from '../format';\nimport { getFirstConditionValue } from './encode';\nexport var legendRules = {\n direction: function direction(_ref) {\n var _direction = _ref.direction;\n return _direction;\n },\n format: function format(_ref2) {\n var fieldOrDatumDef = _ref2.fieldOrDatumDef,\n legend = _ref2.legend,\n config = _ref2.config;\n var format = legend.format,\n formatType = legend.formatType;\n return guideFormat(fieldOrDatumDef, fieldOrDatumDef.type, format, formatType, config, false);\n },\n formatType: function formatType(_ref3) {\n var legend = _ref3.legend,\n fieldOrDatumDef = _ref3.fieldOrDatumDef,\n scaleType = _ref3.scaleType;\n var formatType = legend.formatType;\n return guideFormatType(formatType, fieldOrDatumDef, scaleType);\n },\n gradientLength: function gradientLength(params) {\n var _ref4, _legend$gradientLengt;\n var legend = params.legend,\n legendConfig = params.legendConfig;\n return (_ref4 = (_legend$gradientLengt = legend.gradientLength) !== null && _legend$gradientLengt !== void 0 ? _legend$gradientLengt : legendConfig.gradientLength) !== null && _ref4 !== void 0 ? _ref4 : defaultGradientLength(params);\n },\n labelOverlap: function labelOverlap(_ref5) {\n var _ref6, _legend$labelOverlap;\n var legend = _ref5.legend,\n legendConfig = _ref5.legendConfig,\n scaleType = _ref5.scaleType;\n return (_ref6 = (_legend$labelOverlap = legend.labelOverlap) !== null && _legend$labelOverlap !== void 0 ? _legend$labelOverlap : legendConfig.labelOverlap) !== null && _ref6 !== void 0 ? _ref6 : defaultLabelOverlap(scaleType);\n },\n symbolType: function symbolType(_ref7) {\n var _legend$symbolType;\n var legend = _ref7.legend,\n markDef = _ref7.markDef,\n channel = _ref7.channel,\n encoding = _ref7.encoding;\n return (_legend$symbolType = legend.symbolType) !== null && _legend$symbolType !== void 0 ? _legend$symbolType : defaultSymbolType(markDef.type, channel, encoding.shape, markDef.shape);\n },\n title: function title(_ref8) {\n var fieldOrDatumDef = _ref8.fieldOrDatumDef,\n config = _ref8.config;\n return fieldDefTitle(fieldOrDatumDef, config, {\n allowDisabling: true\n });\n },\n type: function type(_ref9) {\n var legendType = _ref9.legendType,\n scaleType = _ref9.scaleType,\n channel = _ref9.channel;\n if (isColorChannel(channel) && isContinuousToContinuous(scaleType)) {\n if (legendType === 'gradient') {\n return undefined;\n }\n } else if (legendType === 'symbol') {\n return undefined;\n }\n return legendType;\n },\n values: function values(_ref10) {\n var fieldOrDatumDef = _ref10.fieldOrDatumDef,\n legend = _ref10.legend;\n return _values(legend, fieldOrDatumDef);\n }\n};\nfunction _values(legend, fieldOrDatumDef) {\n var vals = legend.values;\n if (isArray(vals)) {\n return valueArray(fieldOrDatumDef, vals);\n } else if (isSignalRef(vals)) {\n return vals;\n }\n return undefined;\n}\nexport { _values as values };\nexport function defaultSymbolType(mark, channel, shapeChannelDef, markShape) {\n if (channel !== 'shape') {\n var _getFirstConditionVal;\n // use the value from the shape encoding or the mark config if they exist\n var shape = (_getFirstConditionVal = getFirstConditionValue(shapeChannelDef)) !== null && _getFirstConditionVal !== void 0 ? _getFirstConditionVal : markShape;\n if (shape) {\n return shape;\n }\n }\n switch (mark) {\n case 'bar':\n case 'rect':\n case 'image':\n case 'square':\n return 'square';\n case 'line':\n case 'trail':\n case 'rule':\n return 'stroke';\n case 'arc':\n case 'point':\n case 'circle':\n case 'tick':\n case 'geoshape':\n case 'area':\n case 'text':\n return 'circle';\n }\n}\nexport function clipHeight(legendType) {\n if (legendType === 'gradient') {\n return 20;\n }\n return undefined;\n}\nexport function getLegendType(params) {\n var legend = params.legend;\n return getFirstDefined(legend.type, defaultType(params));\n}\nexport function defaultType(_ref11) {\n var channel = _ref11.channel,\n timeUnit = _ref11.timeUnit,\n scaleType = _ref11.scaleType;\n // Following the logic in https://github.com/vega/vega-parser/blob/master/src/parsers/legend.js\n if (isColorChannel(channel)) {\n if (contains(['quarter', 'month', 'day'], timeUnit)) {\n return 'symbol';\n }\n if (isContinuousToContinuous(scaleType)) {\n return 'gradient';\n }\n }\n return 'symbol';\n}\nexport function getDirection(_ref12) {\n var _ref13, _legend$direction;\n var legendConfig = _ref12.legendConfig,\n legendType = _ref12.legendType,\n orient = _ref12.orient,\n legend = _ref12.legend;\n return (_ref13 = (_legend$direction = legend.direction) !== null && _legend$direction !== void 0 ? _legend$direction : legendConfig[legendType ? 'gradientDirection' : 'symbolDirection']) !== null && _ref13 !== void 0 ? _ref13 : defaultDirection(orient, legendType);\n}\nexport function defaultDirection(orient, legendType) {\n switch (orient) {\n case 'top':\n case 'bottom':\n return 'horizontal';\n case 'left':\n case 'right':\n case 'none':\n case undefined:\n // undefined = \"right\" in Vega\n return undefined;\n // vertical is Vega's default\n default:\n // top-left / ...\n // For inner legend, uses compact layout like Tableau\n return legendType === 'gradient' ? 'horizontal' : undefined;\n }\n}\nexport function defaultGradientLength(_ref14) {\n var legendConfig = _ref14.legendConfig,\n model = _ref14.model,\n direction = _ref14.direction,\n orient = _ref14.orient,\n scaleType = _ref14.scaleType;\n var gradientHorizontalMaxLength = legendConfig.gradientHorizontalMaxLength,\n gradientHorizontalMinLength = legendConfig.gradientHorizontalMinLength,\n gradientVerticalMaxLength = legendConfig.gradientVerticalMaxLength,\n gradientVerticalMinLength = legendConfig.gradientVerticalMinLength;\n if (isContinuousToContinuous(scaleType)) {\n if (direction === 'horizontal') {\n if (orient === 'top' || orient === 'bottom') {\n return gradientLengthSignal(model, 'width', gradientHorizontalMinLength, gradientHorizontalMaxLength);\n } else {\n return gradientHorizontalMinLength;\n }\n } else {\n // vertical / undefined (Vega uses vertical by default)\n return gradientLengthSignal(model, 'height', gradientVerticalMinLength, gradientVerticalMaxLength);\n }\n }\n return undefined;\n}\nfunction gradientLengthSignal(model, sizeType, min, max) {\n var sizeSignal = model.getSizeSignalRef(sizeType).signal;\n return {\n signal: \"clamp(\".concat(sizeSignal, \", \").concat(min, \", \").concat(max, \")\")\n };\n}\nexport function defaultLabelOverlap(scaleType) {\n if (contains(['quantile', 'threshold', 'log', 'symlog'], scaleType)) {\n return 'greedy';\n }\n return undefined;\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { COLOR, SHAPE } from '../../channel';\nimport { getFieldOrDatumDef, isFieldDef } from '../../channeldef';\nimport { LEGEND_SCALE_CHANNELS } from '../../legend';\nimport { normalizeTimeUnit } from '../../timeunit';\nimport { GEOJSON } from '../../type';\nimport { deleteNestedProperty, isEmpty, keys, varName } from '../../util';\nimport { mergeTitleComponent } from '../common';\nimport { guideEncodeEntry } from '../guide';\nimport { isUnitModel } from '../model';\nimport { parseGuideResolve } from '../resolve';\nimport { parseInteractiveLegend } from '../selection/legends';\nimport { defaultTieBreaker, makeImplicit, mergeValuesWithExplicit } from '../split';\nimport { LegendComponent, LEGEND_COMPONENT_PROPERTIES } from './component';\nimport { legendEncodeRules } from './encode';\nimport { getDirection, getLegendType, legendRules } from './properties';\nexport function parseLegend(model) {\n var legendComponent = isUnitModel(model) ? parseUnitLegend(model) : parseNonUnitLegend(model);\n model.component.legends = legendComponent;\n return legendComponent;\n}\nfunction parseUnitLegend(model) {\n var encoding = model.encoding;\n var legendComponent = {};\n for (var _i = 0, _arr = [COLOR].concat(_toConsumableArray(LEGEND_SCALE_CHANNELS)); _i < _arr.length; _i++) {\n var channel = _arr[_i];\n var def = getFieldOrDatumDef(encoding[channel]);\n if (!def || !model.getScaleComponent(channel)) {\n continue;\n }\n if (channel === SHAPE && isFieldDef(def) && def.type === GEOJSON) {\n continue;\n }\n legendComponent[channel] = parseLegendForChannel(model, channel);\n }\n return legendComponent;\n}\nfunction getLegendDefWithScale(model, channel) {\n var scale = model.scaleName(channel);\n if (model.mark === 'trail') {\n if (channel === 'color') {\n // trail is a filled mark, but its default symbolType (\"stroke\") should use \"stroke\"\n return {\n stroke: scale\n };\n } else if (channel === 'size') {\n return {\n strokeWidth: scale\n };\n }\n }\n if (channel === 'color') {\n return model.markDef.filled ? {\n fill: scale\n } : {\n stroke: scale\n };\n }\n return _defineProperty({}, channel, scale);\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction isExplicit(value, property, legend, fieldDef) {\n switch (property) {\n case 'disable':\n return legend !== undefined;\n // if axis is specified or null/false, then its enable/disable state is explicit\n case 'values':\n // specified legend.values is already respected, but may get transformed.\n return !!(legend !== null && legend !== void 0 && legend.values);\n case 'title':\n // title can be explicit if fieldDef.title is set\n if (property === 'title' && value === (fieldDef === null || fieldDef === void 0 ? void 0 : fieldDef.title)) {\n return true;\n }\n }\n // Otherwise, things are explicit if the returned value matches the specified property\n return value === (legend || {})[property];\n}\nexport function parseLegendForChannel(model, channel) {\n var _normalizeTimeUnit, _legend$encoding, _legend;\n var legend = model.legend(channel);\n var markDef = model.markDef,\n encoding = model.encoding,\n config = model.config;\n var legendConfig = config.legend;\n var legendCmpt = new LegendComponent({}, getLegendDefWithScale(model, channel));\n parseInteractiveLegend(model, channel, legendCmpt);\n var disable = legend !== undefined ? !legend : legendConfig.disable;\n legendCmpt.set('disable', disable, legend !== undefined);\n if (disable) {\n return legendCmpt;\n }\n legend = legend || {};\n var scaleType = model.getScaleComponent(channel).get('type');\n var fieldOrDatumDef = getFieldOrDatumDef(encoding[channel]);\n var timeUnit = isFieldDef(fieldOrDatumDef) ? (_normalizeTimeUnit = normalizeTimeUnit(fieldOrDatumDef.timeUnit)) === null || _normalizeTimeUnit === void 0 ? void 0 : _normalizeTimeUnit.unit : undefined;\n var orient = legend.orient || config.legend.orient || 'right';\n var legendType = getLegendType({\n legend: legend,\n channel: channel,\n timeUnit: timeUnit,\n scaleType: scaleType\n });\n var direction = getDirection({\n legend: legend,\n legendType: legendType,\n orient: orient,\n legendConfig: legendConfig\n });\n var ruleParams = {\n legend: legend,\n channel: channel,\n model: model,\n markDef: markDef,\n encoding: encoding,\n fieldOrDatumDef: fieldOrDatumDef,\n legendConfig: legendConfig,\n config: config,\n scaleType: scaleType,\n orient: orient,\n legendType: legendType,\n direction: direction\n };\n var _iterator = _createForOfIteratorHelper(LEGEND_COMPONENT_PROPERTIES),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var property = _step.value;\n if (legendType === 'gradient' && property.startsWith('symbol') || legendType === 'symbol' && property.startsWith('gradient')) {\n continue;\n }\n var _value = property in legendRules ? legendRules[property](ruleParams) : legend[property];\n if (_value !== undefined) {\n var explicit = isExplicit(_value, property, legend, model.fieldDef(channel));\n if (explicit || config.legend[property] === undefined) {\n legendCmpt.set(property, _value, explicit);\n }\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n var legendEncoding = (_legend$encoding = (_legend = legend) === null || _legend === void 0 ? void 0 : _legend.encoding) !== null && _legend$encoding !== void 0 ? _legend$encoding : {};\n var selections = legendCmpt.get('selections');\n var legendEncode = {};\n var legendEncodeParams = {\n fieldOrDatumDef: fieldOrDatumDef,\n model: model,\n channel: channel,\n legendCmpt: legendCmpt,\n legendType: legendType\n };\n for (var _i2 = 0, _arr2 = ['labels', 'legend', 'title', 'symbols', 'gradient', 'entries']; _i2 < _arr2.length; _i2++) {\n var _legendEncoding$part;\n var part = _arr2[_i2];\n var legendEncodingPart = guideEncodeEntry((_legendEncoding$part = legendEncoding[part]) !== null && _legendEncoding$part !== void 0 ? _legendEncoding$part : {}, model);\n var value = part in legendEncodeRules ? legendEncodeRules[part](legendEncodingPart, legendEncodeParams) // apply rule\n : legendEncodingPart; // no rule -- just default values\n if (value !== undefined && !isEmpty(value)) {\n legendEncode[part] = _objectSpread(_objectSpread(_objectSpread({}, selections !== null && selections !== void 0 && selections.length && isFieldDef(fieldOrDatumDef) ? {\n name: \"\".concat(varName(fieldOrDatumDef.field), \"_legend_\").concat(part)\n } : {}), selections !== null && selections !== void 0 && selections.length ? {\n interactive: !!selections\n } : {}), {}, {\n update: value\n });\n }\n }\n if (!isEmpty(legendEncode)) {\n var _legend2;\n legendCmpt.set('encode', legendEncode, !!((_legend2 = legend) !== null && _legend2 !== void 0 && _legend2.encoding));\n }\n return legendCmpt;\n}\nfunction parseNonUnitLegend(model) {\n var _model$component = model.component,\n legends = _model$component.legends,\n resolve = _model$component.resolve;\n var _iterator2 = _createForOfIteratorHelper(model.children),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var child = _step2.value;\n parseLegend(child);\n var _iterator4 = _createForOfIteratorHelper(keys(child.component.legends)),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var channel = _step4.value;\n resolve.legend[channel] = parseGuideResolve(model.component.resolve, channel);\n if (resolve.legend[channel] === 'shared') {\n // If the resolve says shared (and has not been overridden)\n // We will try to merge and see if there is a conflict\n legends[channel] = mergeLegendComponent(legends[channel], child.component.legends[channel]);\n if (!legends[channel]) {\n // If merge returns nothing, there is a conflict so we cannot make the legend shared.\n // Thus, mark legend as independent and remove the legend component.\n resolve.legend[channel] = 'independent';\n delete legends[channel];\n }\n }\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n var _iterator3 = _createForOfIteratorHelper(keys(legends)),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var _channel = _step3.value;\n var _iterator5 = _createForOfIteratorHelper(model.children),\n _step5;\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var _child = _step5.value;\n if (!_child.component.legends[_channel]) {\n // skip if the child does not have a particular legend\n continue;\n }\n if (resolve.legend[_channel] === 'shared') {\n // After merging shared legend, make sure to remove legend from child\n delete _child.component.legends[_channel];\n }\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n return legends;\n}\nexport function mergeLegendComponent(mergedLegend, childLegend) {\n if (!mergedLegend) {\n return childLegend.clone();\n }\n var mergedOrient = mergedLegend.getWithExplicit('orient');\n var childOrient = childLegend.getWithExplicit('orient');\n if (mergedOrient.explicit && childOrient.explicit && mergedOrient.value !== childOrient.value) {\n // TODO: throw warning if resolve is explicit (We don't have info about explicit/implicit resolve yet.)\n // Cannot merge due to inconsistent orient\n return undefined;\n }\n var typeMerged = false;\n // Otherwise, let's merge\n var _iterator6 = _createForOfIteratorHelper(LEGEND_COMPONENT_PROPERTIES),\n _step6;\n try {\n var _loop = function _loop() {\n var prop = _step6.value;\n var mergedValueWithExplicit = mergeValuesWithExplicit(mergedLegend.getWithExplicit(prop), childLegend.getWithExplicit(prop), prop, 'legend',\n // Tie breaker function\n function (v1, v2) {\n switch (prop) {\n case 'symbolType':\n return mergeSymbolType(v1, v2);\n case 'title':\n return mergeTitleComponent(v1, v2);\n case 'type':\n // There are only two types. If we have different types, then prefer symbol over gradient.\n typeMerged = true;\n return makeImplicit('symbol');\n }\n return defaultTieBreaker(v1, v2, prop, 'legend');\n });\n mergedLegend.setWithExplicit(prop, mergedValueWithExplicit);\n };\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n _loop();\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n if (typeMerged) {\n var _mergedLegend$implici, _mergedLegend$explici;\n if ((_mergedLegend$implici = mergedLegend.implicit) !== null && _mergedLegend$implici !== void 0 && (_mergedLegend$implici = _mergedLegend$implici.encode) !== null && _mergedLegend$implici !== void 0 && _mergedLegend$implici.gradient) {\n deleteNestedProperty(mergedLegend.implicit, ['encode', 'gradient']);\n }\n if ((_mergedLegend$explici = mergedLegend.explicit) !== null && _mergedLegend$explici !== void 0 && (_mergedLegend$explici = _mergedLegend$explici.encode) !== null && _mergedLegend$explici !== void 0 && _mergedLegend$explici.gradient) {\n deleteNestedProperty(mergedLegend.explicit, ['encode', 'gradient']);\n }\n }\n return mergedLegend;\n}\nfunction mergeSymbolType(st1, st2) {\n if (st2.value === 'circle') {\n // prefer \"circle\" over \"stroke\"\n return st2;\n }\n return st1;\n}","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"disable\", \"labelExpr\", \"selections\"];\nimport \"core-js/modules/es.array.flat.js\";\nimport \"core-js/modules/es.array.unscopables.flat.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { LEGEND_SCALE_CHANNELS } from '../../legend';\nimport { keys, replaceAll, stringify, vals } from '../../util';\nimport { isSignalRef } from '../../vega.schema';\nimport { mergeLegendComponent } from './parse';\nfunction setLegendEncode(legend, part, vgProp, vgRef) {\n var _legend$encode, _a$part, _b$update;\n var _a, _b;\n (_legend$encode = legend.encode) !== null && _legend$encode !== void 0 ? _legend$encode : legend.encode = {};\n (_a$part = (_a = legend.encode)[part]) !== null && _a$part !== void 0 ? _a$part : _a[part] = {};\n (_b$update = (_b = legend.encode[part]).update) !== null && _b$update !== void 0 ? _b$update : _b.update = {};\n // TODO: remove as any after https://github.com/prisma/nexus-prisma/issues/291\n legend.encode[part].update[vgProp] = vgRef;\n}\nexport function assembleLegends(model) {\n var legendComponentIndex = model.component.legends;\n var legendByDomain = {};\n var _iterator = _createForOfIteratorHelper(keys(legendComponentIndex)),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var channel = _step.value;\n var scaleComponent = model.getScaleComponent(channel);\n var domainHash = stringify(scaleComponent.get('domains'));\n if (legendByDomain[domainHash]) {\n var _iterator2 = _createForOfIteratorHelper(legendByDomain[domainHash]),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var mergedLegendComponent = _step2.value;\n var merged = mergeLegendComponent(mergedLegendComponent, legendComponentIndex[channel]);\n if (!merged) {\n // If cannot merge, need to add this legend separately\n legendByDomain[domainHash].push(legendComponentIndex[channel]);\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n } else {\n legendByDomain[domainHash] = [legendComponentIndex[channel].clone()];\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n var legends = vals(legendByDomain).flat().map(function (l) {\n return assembleLegend(l, model.config);\n }).filter(function (l) {\n return l !== undefined;\n });\n return legends;\n}\nexport function assembleLegend(legendCmpt, config) {\n var _legend$encode2;\n var _legendCmpt$combine = legendCmpt.combine(),\n disable = _legendCmpt$combine.disable,\n labelExpr = _legendCmpt$combine.labelExpr,\n selections = _legendCmpt$combine.selections,\n legend = _objectWithoutProperties(_legendCmpt$combine, _excluded);\n if (disable) {\n return undefined;\n }\n if (config.aria === false && legend.aria == undefined) {\n legend.aria = false;\n }\n if ((_legend$encode2 = legend.encode) !== null && _legend$encode2 !== void 0 && _legend$encode2.symbols) {\n var out = legend.encode.symbols.update;\n if (out.fill && out.fill['value'] !== 'transparent' && !out.stroke && !legend.stroke) {\n // For non color channel's legend, we need to override symbol stroke config from Vega config if stroke channel is not used.\n out.stroke = {\n value: 'transparent'\n };\n }\n // Remove properties that the legend is encoding.\n var _iterator3 = _createForOfIteratorHelper(LEGEND_SCALE_CHANNELS),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var property = _step3.value;\n if (legend[property]) {\n delete out[property];\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n }\n if (!legend.title) {\n // title schema doesn't include null, ''\n delete legend.title;\n }\n if (labelExpr !== undefined) {\n var _legend$encode3;\n var expr = labelExpr;\n if ((_legend$encode3 = legend.encode) !== null && _legend$encode3 !== void 0 && (_legend$encode3 = _legend$encode3.labels) !== null && _legend$encode3 !== void 0 && _legend$encode3.update && isSignalRef(legend.encode.labels.update.text)) {\n expr = replaceAll(labelExpr, 'datum.label', legend.encode.labels.update.text.signal);\n }\n setLegendEncode(legend, 'labels', 'text', {\n signal: expr\n });\n }\n return legend;\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { contains } from '../../util';\nimport { isSignalRef } from '../../vega.schema';\nimport { isConcatModel, isLayerModel } from '../model';\nexport function assembleProjections(model) {\n if (isLayerModel(model) || isConcatModel(model)) {\n return assembleProjectionsForModelAndChildren(model);\n } else {\n return assembleProjectionForModel(model);\n }\n}\nexport function assembleProjectionsForModelAndChildren(model) {\n return model.children.reduce(function (projections, child) {\n return projections.concat(child.assembleProjections());\n }, assembleProjectionForModel(model));\n}\nexport function assembleProjectionForModel(model) {\n var component = model.component.projection;\n if (!component || component.merged) {\n return [];\n }\n var projection = component.combine();\n var name = projection.name; // we need to extract name so that it is always present in the output and pass TS type validation\n if (!component.data) {\n // generate custom projection, no automatic fitting\n return [_objectSpread(_objectSpread({\n name: name\n }, {\n translate: {\n signal: '[width / 2, height / 2]'\n }\n }), projection)];\n } else {\n // generate projection that uses extent fitting\n var size = {\n signal: \"[\".concat(component.size.map(function (ref) {\n return ref.signal;\n }).join(', '), \"]\")\n };\n var fits = component.data.reduce(function (sources, data) {\n var source = isSignalRef(data) ? data.signal : \"data('\".concat(model.lookupDataSource(data), \"')\");\n if (!contains(sources, source)) {\n // build a unique list of sources\n sources.push(source);\n }\n return sources;\n }, []);\n if (fits.length <= 0) {\n throw new Error(\"Projection's fit didn't find any data sources\");\n }\n return [_objectSpread({\n name: name,\n size: size,\n fit: {\n signal: fits.length > 1 ? \"[\".concat(fits.join(', '), \"]\") : fits[0]\n }\n }, projection)];\n }\n}","export var PROJECTION_PROPERTIES = ['type', 'clipAngle', 'clipExtent', 'center', 'rotate', 'precision', 'reflectX', 'reflectY', 'coefficient', 'distance', 'fraction', 'lobes', 'parallel', 'radius', 'ratio', 'spacing', 'tilt'];","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { Split } from '../split';\nexport var ProjectionComponent = /*#__PURE__*/function (_Split) {\n _inherits(ProjectionComponent, _Split);\n var _super = _createSuper(ProjectionComponent);\n function ProjectionComponent(name, specifiedProjection, size, data) {\n var _this;\n _classCallCheck(this, ProjectionComponent);\n _this = _super.call(this, _objectSpread({}, specifiedProjection),\n // all explicit properties of projection\n {\n name: name\n } // name as initial implicit property\n );\n\n _this.specifiedProjection = specifiedProjection;\n _this.size = size;\n _this.data = data;\n _this.merged = false;\n return _this;\n }\n /**\n * Whether the projection parameters should fit provided data.\n */\n _createClass(ProjectionComponent, [{\n key: \"isFit\",\n get: function get() {\n return !!this.data;\n }\n }]);\n return ProjectionComponent;\n}(Split);","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { hasOwnProperty } from 'vega-util';\nimport { LATITUDE, LATITUDE2, LONGITUDE, LONGITUDE2, SHAPE } from '../../channel';\nimport { getFieldOrDatumDef } from '../../channeldef';\nimport { DataSourceType } from '../../data';\nimport { replaceExprRef } from '../../expr';\nimport { PROJECTION_PROPERTIES } from '../../projection';\nimport { GEOJSON } from '../../type';\nimport { deepEqual, duplicate, every } from '../../util';\nimport { isUnitModel } from '../model';\nimport { ProjectionComponent } from './component';\nexport function parseProjection(model) {\n model.component.projection = isUnitModel(model) ? parseUnitProjection(model) : parseNonUnitProjections(model);\n}\nfunction parseUnitProjection(model) {\n if (model.hasProjection) {\n var _replaceExprRef;\n var proj = replaceExprRef(model.specifiedProjection);\n var fit = !(proj && (proj.scale != null || proj.translate != null));\n var size = fit ? [model.getSizeSignalRef('width'), model.getSizeSignalRef('height')] : undefined;\n var data = fit ? gatherFitData(model) : undefined;\n var projComp = new ProjectionComponent(model.projectionName(true), _objectSpread(_objectSpread({}, (_replaceExprRef = replaceExprRef(model.config.projection)) !== null && _replaceExprRef !== void 0 ? _replaceExprRef : {}), proj !== null && proj !== void 0 ? proj : {}), size, data);\n if (!projComp.get('type')) {\n projComp.set('type', 'equalEarth', false);\n }\n return projComp;\n }\n return undefined;\n}\nfunction gatherFitData(model) {\n var data = [];\n var encoding = model.encoding;\n for (var _i = 0, _arr = [[LONGITUDE, LATITUDE], [LONGITUDE2, LATITUDE2]]; _i < _arr.length; _i++) {\n var posssiblePair = _arr[_i];\n if (getFieldOrDatumDef(encoding[posssiblePair[0]]) || getFieldOrDatumDef(encoding[posssiblePair[1]])) {\n data.push({\n signal: model.getName(\"geojson_\".concat(data.length))\n });\n }\n }\n if (model.channelHasField(SHAPE) && model.typedFieldDef(SHAPE).type === GEOJSON) {\n data.push({\n signal: model.getName(\"geojson_\".concat(data.length))\n });\n }\n if (data.length === 0) {\n // main source is geojson, so we can just use that\n data.push(model.requestDataName(DataSourceType.Main));\n }\n return data;\n}\nfunction mergeIfNoConflict(first, second) {\n var allPropertiesShared = every(PROJECTION_PROPERTIES, function (prop) {\n // neither has the property\n if (!hasOwnProperty(first.explicit, prop) && !hasOwnProperty(second.explicit, prop)) {\n return true;\n }\n // both have property and an equal value for property\n if (hasOwnProperty(first.explicit, prop) && hasOwnProperty(second.explicit, prop) &&\n // some properties might be signals or objects and require hashing for comparison\n deepEqual(first.get(prop), second.get(prop))) {\n return true;\n }\n return false;\n });\n var size = deepEqual(first.size, second.size);\n if (size) {\n if (allPropertiesShared) {\n return first;\n } else if (deepEqual(first.explicit, {})) {\n return second;\n } else if (deepEqual(second.explicit, {})) {\n return first;\n }\n }\n // if all properties don't match, let each unit spec have its own projection\n return null;\n}\nfunction parseNonUnitProjections(model) {\n if (model.children.length === 0) {\n return undefined;\n }\n var nonUnitProjection;\n // parse all children first\n var _iterator = _createForOfIteratorHelper(model.children),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _child = _step.value;\n parseProjection(_child);\n }\n // analyze parsed projections, attempt to merge\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n var mergable = every(model.children, function (child) {\n var projection = child.component.projection;\n if (!projection) {\n // child layer does not use a projection\n return true;\n } else if (!nonUnitProjection) {\n // cached 'projection' is null, cache this one\n nonUnitProjection = projection;\n return true;\n } else {\n var merge = mergeIfNoConflict(nonUnitProjection, projection);\n if (merge) {\n nonUnitProjection = merge;\n }\n return !!merge;\n }\n });\n // if cached one and all other children share the same projection,\n if (nonUnitProjection && mergable) {\n // so we can elevate it to the layer level\n var name = model.projectionName(true);\n var modelProjection = new ProjectionComponent(name, nonUnitProjection.specifiedProjection, nonUnitProjection.size, duplicate(nonUnitProjection.data));\n // rename and assign all others as merged\n var _iterator2 = _createForOfIteratorHelper(model.children),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var child = _step2.value;\n var projection = child.component.projection;\n if (projection) {\n if (projection.isFit) {\n var _modelProjection$data;\n (_modelProjection$data = modelProjection.data).push.apply(_modelProjection$data, _toConsumableArray(child.component.projection.data));\n }\n child.renameProjection(projection.get('name'), name);\n projection.merged = true;\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n return modelProjection;\n }\n return undefined;\n}","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nimport _toArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toArray.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nvar _excluded = [\"extent\"];\nimport \"core-js/modules/es.array.flat.js\";\nimport \"core-js/modules/es.array.unscopables.flat.js\";\nimport \"core-js/modules/es.array.flat-map.js\";\nimport \"core-js/modules/es.array.unscopables.flat-map.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { isString } from 'vega-util';\nimport { binToString, isBinning, isParameterExtent } from '../../bin';\nimport { binRequiresRange, isTypedFieldDef, normalizeBin, vgField } from '../../channeldef';\nimport { duplicate, hash as _hash, isEmpty, keys, replacePathInField, unique, vals } from '../../util';\nimport { binFormatExpression } from '../format';\nimport { isUnitModel } from '../model';\nimport { parseSelectionExtent } from '../selection/parse';\nimport { DataFlowNode } from './dataflow';\nfunction rangeFormula(model, fieldDef, channel, config) {\n if (binRequiresRange(fieldDef, channel)) {\n var _ref, _model$axis;\n // read format from axis or legend, if there is no format then use config.numberFormat\n var guide = isUnitModel(model) ? (_ref = (_model$axis = model.axis(channel)) !== null && _model$axis !== void 0 ? _model$axis : model.legend(channel)) !== null && _ref !== void 0 ? _ref : {} : {};\n var startField = vgField(fieldDef, {\n expr: 'datum'\n });\n var endField = vgField(fieldDef, {\n expr: 'datum',\n binSuffix: 'end'\n });\n return {\n formulaAs: vgField(fieldDef, {\n binSuffix: 'range',\n forAs: true\n }),\n formula: binFormatExpression(startField, endField, guide.format, guide.formatType, config)\n };\n }\n return {};\n}\nfunction binKey(bin, field) {\n return \"\".concat(binToString(bin), \"_\").concat(field);\n}\nfunction getSignalsFromModel(model, key) {\n return {\n signal: model.getName(\"\".concat(key, \"_bins\")),\n extentSignal: model.getName(\"\".concat(key, \"_extent\"))\n };\n}\nexport function getBinSignalName(model, field, bin) {\n var _normalizeBin;\n var normalizedBin = (_normalizeBin = normalizeBin(bin, undefined)) !== null && _normalizeBin !== void 0 ? _normalizeBin : {};\n var key = binKey(normalizedBin, field);\n return model.getName(\"\".concat(key, \"_bins\"));\n}\nfunction isBinTransform(t) {\n return 'as' in t;\n}\nfunction createBinComponent(t, bin, model) {\n var as;\n var span;\n if (isBinTransform(t)) {\n as = isString(t.as) ? [t.as, \"\".concat(t.as, \"_end\")] : [t.as[0], t.as[1]];\n } else {\n as = [vgField(t, {\n forAs: true\n }), vgField(t, {\n binSuffix: 'end',\n forAs: true\n })];\n }\n var normalizedBin = _objectSpread({}, normalizeBin(bin, undefined));\n var key = binKey(normalizedBin, t.field);\n var _getSignalsFromModel = getSignalsFromModel(model, key),\n signal = _getSignalsFromModel.signal,\n extentSignal = _getSignalsFromModel.extentSignal;\n if (isParameterExtent(normalizedBin.extent)) {\n var ext = normalizedBin.extent;\n span = parseSelectionExtent(model, ext.param, ext);\n delete normalizedBin.extent; // Vega-Lite selection extent map to Vega's span property.\n }\n\n var binComponent = _objectSpread(_objectSpread(_objectSpread({\n bin: normalizedBin,\n field: t.field,\n as: [as]\n }, signal ? {\n signal: signal\n } : {}), extentSignal ? {\n extentSignal: extentSignal\n } : {}), span ? {\n span: span\n } : {});\n return {\n key: key,\n binComponent: binComponent\n };\n}\nexport var BinNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(BinNode, _DataFlowNode);\n var _super = _createSuper(BinNode);\n function BinNode(parent, bins) {\n var _this;\n _classCallCheck(this, BinNode);\n _this = _super.call(this, parent);\n _this.bins = bins;\n return _this;\n }\n _createClass(BinNode, [{\n key: \"clone\",\n value: function clone() {\n return new BinNode(null, duplicate(this.bins));\n }\n }, {\n key: \"merge\",\n value:\n /**\n * Merge bin nodes. This method either integrates the bin config from the other node\n * or if this node already has a bin config, renames the corresponding signal in the model.\n */\n function merge(other, renameSignal) {\n var _iterator = _createForOfIteratorHelper(keys(other.bins)),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var key = _step.value;\n if (key in this.bins) {\n renameSignal(other.bins[key].signal, this.bins[key].signal);\n // Ensure that we don't have duplicate names for signal pairs\n this.bins[key].as = unique([].concat(_toConsumableArray(this.bins[key].as), _toConsumableArray(other.bins[key].as)), _hash);\n } else {\n this.bins[key] = other.bins[key];\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n var _iterator2 = _createForOfIteratorHelper(other.children),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var child = _step2.value;\n other.removeChild(child);\n child.parent = this;\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n other.remove();\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return new Set(vals(this.bins).map(function (c) {\n return c.as;\n }).flat(2));\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n return new Set(vals(this.bins).map(function (c) {\n return c.field;\n }));\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return \"Bin \".concat(_hash(this.bins));\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n return vals(this.bins).flatMap(function (bin) {\n var transform = [];\n var _bin$as = _toArray(bin.as),\n binAs = _bin$as[0],\n remainingAs = _bin$as.slice(1);\n var _bin$bin = bin.bin,\n extent = _bin$bin.extent,\n params = _objectWithoutProperties(_bin$bin, _excluded);\n var binTrans = _objectSpread(_objectSpread(_objectSpread({\n type: 'bin',\n field: replacePathInField(bin.field),\n as: binAs,\n signal: bin.signal\n }, !isParameterExtent(extent) ? {\n extent: extent\n } : {\n extent: null\n }), bin.span ? {\n span: {\n signal: \"span(\".concat(bin.span, \")\")\n }\n } : {}), params);\n if (!extent && bin.extentSignal) {\n transform.push({\n type: 'extent',\n field: replacePathInField(bin.field),\n signal: bin.extentSignal\n });\n binTrans.extent = {\n signal: bin.extentSignal\n };\n }\n transform.push(binTrans);\n var _iterator3 = _createForOfIteratorHelper(remainingAs),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var as = _step3.value;\n for (var i = 0; i < 2; i++) {\n transform.push({\n type: 'formula',\n expr: vgField({\n field: binAs[i]\n }, {\n expr: 'datum'\n }),\n as: as[i]\n });\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n if (bin.formula) {\n transform.push({\n type: 'formula',\n expr: bin.formula,\n as: bin.formulaAs\n });\n }\n return transform;\n });\n }\n }], [{\n key: \"makeFromEncoding\",\n value: function makeFromEncoding(parent, model) {\n var bins = model.reduceFieldDef(function (binComponentIndex, fieldDef, channel) {\n if (isTypedFieldDef(fieldDef) && isBinning(fieldDef.bin)) {\n var _createBinComponent = createBinComponent(fieldDef, fieldDef.bin, model),\n key = _createBinComponent.key,\n binComponent = _createBinComponent.binComponent;\n binComponentIndex[key] = _objectSpread(_objectSpread(_objectSpread({}, binComponent), binComponentIndex[key]), rangeFormula(model, fieldDef, channel, model.config));\n }\n return binComponentIndex;\n }, {});\n if (isEmpty(bins)) {\n return null;\n }\n return new BinNode(parent, bins);\n }\n /**\n * Creates a bin node from BinTransform.\n * The optional parameter should provide\n */\n }, {\n key: \"makeFromTransform\",\n value: function makeFromTransform(parent, t, model) {\n var _createBinComponent2 = createBinComponent(t, t.bin, model),\n key = _createBinComponent2.key,\n binComponent = _createBinComponent2.binComponent;\n return new BinNode(parent, _defineProperty({}, key, binComponent));\n }\n }]);\n return BinNode;\n}(DataFlowNode);","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}","import _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { isArgmaxDef, isArgminDef } from '../../aggregate';\nimport { getPositionChannelFromLatLong, getSecondaryRangeChannel, isGeoPositionChannel, isScaleChannel } from '../../channel';\nimport { binRequiresRange, hasBandEnd, isScaleFieldDef, isTypedFieldDef, vgField } from '../../channeldef';\nimport * as log from '../../log';\nimport { isFieldRange } from '../../scale';\nimport { duplicate, hash as _hash, keys, replacePathInField, setEqual } from '../../util';\nimport { isUnitModel } from '../model';\nimport { DataFlowNode } from './dataflow';\nfunction addDimension(dims, channel, fieldDef, model) {\n var _fieldDef$scale;\n var channelDef2 = isUnitModel(model) ? model.encoding[getSecondaryRangeChannel(channel)] : undefined;\n if (isTypedFieldDef(fieldDef) && isUnitModel(model) && hasBandEnd(fieldDef, channelDef2, model.markDef, model.config)) {\n dims.add(vgField(fieldDef, {}));\n dims.add(vgField(fieldDef, {\n suffix: 'end'\n }));\n if (fieldDef.bin && binRequiresRange(fieldDef, channel)) {\n dims.add(vgField(fieldDef, {\n binSuffix: 'range'\n }));\n }\n } else if (isGeoPositionChannel(channel)) {\n var posChannel = getPositionChannelFromLatLong(channel);\n dims.add(model.getName(posChannel));\n } else {\n dims.add(vgField(fieldDef));\n }\n if (isScaleFieldDef(fieldDef) && isFieldRange((_fieldDef$scale = fieldDef.scale) === null || _fieldDef$scale === void 0 ? void 0 : _fieldDef$scale.range)) {\n dims.add(fieldDef.scale.range.field);\n }\n return dims;\n}\nfunction mergeMeasures(parentMeasures, childMeasures) {\n var _iterator = _createForOfIteratorHelper(keys(childMeasures)),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var field = _step.value;\n // when we merge a measure, we either have to add an aggregation operator or even a new field\n var ops = childMeasures[field];\n var _iterator2 = _createForOfIteratorHelper(keys(ops)),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var op = _step2.value;\n if (field in parentMeasures) {\n var _parentMeasures$field;\n // add operator to existing measure field\n parentMeasures[field][op] = new Set([].concat(_toConsumableArray((_parentMeasures$field = parentMeasures[field][op]) !== null && _parentMeasures$field !== void 0 ? _parentMeasures$field : []), _toConsumableArray(ops[op])));\n } else {\n parentMeasures[field] = _defineProperty({}, op, ops[op]);\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n}\nexport var AggregateNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(AggregateNode, _DataFlowNode);\n var _super = _createSuper(AggregateNode);\n /**\n * @param dimensions string set for dimensions\n * @param measures dictionary mapping field name => dict of aggregation functions and names to use\n */\n function AggregateNode(parent, dimensions, measures) {\n var _this;\n _classCallCheck(this, AggregateNode);\n _this = _super.call(this, parent);\n _this.dimensions = dimensions;\n _this.measures = measures;\n return _this;\n }\n _createClass(AggregateNode, [{\n key: \"clone\",\n value: function clone() {\n return new AggregateNode(null, new Set(this.dimensions), duplicate(this.measures));\n }\n }, {\n key: \"groupBy\",\n get: function get() {\n return this.dimensions;\n }\n }, {\n key: \"merge\",\n value: function merge(other) {\n if (setEqual(this.dimensions, other.dimensions)) {\n mergeMeasures(this.measures, other.measures);\n return true;\n }\n log.debug('different dimensions, cannot merge');\n return false;\n }\n }, {\n key: \"addDimensions\",\n value: function addDimensions(fields) {\n fields.forEach(this.dimensions.add, this.dimensions);\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n return new Set([].concat(_toConsumableArray(this.dimensions), _toConsumableArray(keys(this.measures))));\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n var out = new Set();\n var _iterator3 = _createForOfIteratorHelper(keys(this.measures)),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var field = _step3.value;\n var _iterator4 = _createForOfIteratorHelper(keys(this.measures[field])),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var op = _step4.value;\n var m = this.measures[field][op];\n if (m.size === 0) {\n out.add(\"\".concat(op, \"_\").concat(field));\n } else {\n m.forEach(out.add, out);\n }\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n return out;\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return \"Aggregate \".concat(_hash({\n dimensions: this.dimensions,\n measures: this.measures\n }));\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n var ops = [];\n var fields = [];\n var as = [];\n var _iterator5 = _createForOfIteratorHelper(keys(this.measures)),\n _step5;\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var field = _step5.value;\n var _iterator6 = _createForOfIteratorHelper(keys(this.measures[field])),\n _step6;\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var op = _step6.value;\n var _iterator7 = _createForOfIteratorHelper(this.measures[field][op]),\n _step7;\n try {\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n var alias = _step7.value;\n as.push(alias);\n ops.push(op);\n fields.push(field === '*' ? null : replacePathInField(field));\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n var result = {\n type: 'aggregate',\n groupby: _toConsumableArray(this.dimensions).map(replacePathInField),\n ops: ops,\n fields: fields,\n as: as\n };\n return result;\n }\n }], [{\n key: \"makeFromEncoding\",\n value: function makeFromEncoding(parent, model) {\n var isAggregate = false;\n model.forEachFieldDef(function (fd) {\n if (fd.aggregate) {\n isAggregate = true;\n }\n });\n var meas = {};\n var dims = new Set();\n if (!isAggregate) {\n // no need to create this node if the model has no aggregation\n return null;\n }\n model.forEachFieldDef(function (fieldDef, channel) {\n var aggregate = fieldDef.aggregate,\n field = fieldDef.field;\n if (aggregate) {\n if (aggregate === 'count') {\n var _meas$;\n (_meas$ = meas['*']) !== null && _meas$ !== void 0 ? _meas$ : meas['*'] = {};\n meas['*']['count'] = new Set([vgField(fieldDef, {\n forAs: true\n })]);\n } else {\n if (isArgminDef(aggregate) || isArgmaxDef(aggregate)) {\n var _meas$argField;\n var op = isArgminDef(aggregate) ? 'argmin' : 'argmax';\n var argField = aggregate[op];\n (_meas$argField = meas[argField]) !== null && _meas$argField !== void 0 ? _meas$argField : meas[argField] = {};\n meas[argField][op] = new Set([vgField({\n op: op,\n field: argField\n }, {\n forAs: true\n })]);\n } else {\n var _meas$field;\n (_meas$field = meas[field]) !== null && _meas$field !== void 0 ? _meas$field : meas[field] = {};\n meas[field][aggregate] = new Set([vgField(fieldDef, {\n forAs: true\n })]);\n }\n // For scale channel with domain === 'unaggregated', add min/max so we can use their union as unaggregated domain\n if (isScaleChannel(channel) && model.scaleDomain(channel) === 'unaggregated') {\n var _meas$field2;\n (_meas$field2 = meas[field]) !== null && _meas$field2 !== void 0 ? _meas$field2 : meas[field] = {};\n meas[field]['min'] = new Set([vgField({\n field: field,\n aggregate: 'min'\n }, {\n forAs: true\n })]);\n meas[field]['max'] = new Set([vgField({\n field: field,\n aggregate: 'max'\n }, {\n forAs: true\n })]);\n }\n }\n } else {\n addDimension(dims, channel, fieldDef, model);\n }\n });\n if (dims.size + keys(meas).length === 0) {\n return null;\n }\n return new AggregateNode(parent, dims, meas);\n }\n }, {\n key: \"makeFromTransform\",\n value: function makeFromTransform(parent, t) {\n var _t$groupby;\n var dims = new Set();\n var meas = {};\n var _iterator8 = _createForOfIteratorHelper(t.aggregate),\n _step8;\n try {\n for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {\n var s = _step8.value;\n var op = s.op,\n field = s.field,\n as = s.as;\n if (op) {\n if (op === 'count') {\n var _meas$2;\n (_meas$2 = meas['*']) !== null && _meas$2 !== void 0 ? _meas$2 : meas['*'] = {};\n meas['*']['count'] = new Set([as ? as : vgField(s, {\n forAs: true\n })]);\n } else {\n var _meas$field3;\n (_meas$field3 = meas[field]) !== null && _meas$field3 !== void 0 ? _meas$field3 : meas[field] = {};\n meas[field][op] = new Set([as ? as : vgField(s, {\n forAs: true\n })]);\n }\n }\n }\n } catch (err) {\n _iterator8.e(err);\n } finally {\n _iterator8.f();\n }\n var _iterator9 = _createForOfIteratorHelper((_t$groupby = t.groupby) !== null && _t$groupby !== void 0 ? _t$groupby : []),\n _step9;\n try {\n for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {\n var _s = _step9.value;\n dims.add(_s);\n }\n } catch (err) {\n _iterator9.e(err);\n } finally {\n _iterator9.f();\n }\n if (dims.size + keys(meas).length === 0) {\n return null;\n }\n return new AggregateNode(parent, dims, meas);\n }\n }]);\n return AggregateNode;\n}(DataFlowNode);","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { isArray } from 'vega-util';\nimport { isBinning } from '../../bin';\nimport { COLUMN, FACET_CHANNELS, POSITION_SCALE_CHANNELS, ROW } from '../../channel';\nimport { vgField } from '../../channeldef';\nimport * as log from '../../log';\nimport { hasDiscreteDomain } from '../../scale';\nimport { DEFAULT_SORT_OP, isSortField } from '../../sort';\nimport { hash as _hash } from '../../util';\nimport { isVgRangeStep } from '../../vega.schema';\nimport { HEADER_CHANNELS, HEADER_TYPES } from '../header/component';\nimport { assembleDomain, getFieldFromDomain } from '../scale/domain';\nimport { sortArrayIndexField } from './calculate';\nimport { DataFlowNode } from './dataflow';\n/**\n * A node that helps us track what fields we are faceting by.\n */\nexport var FacetNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(FacetNode, _DataFlowNode);\n var _super = _createSuper(FacetNode);\n /**\n * @param model The facet model.\n * @param name The name that this facet source will have.\n * @param data The source data for this facet data.\n */\n function FacetNode(parent, model, name, data) {\n var _this;\n _classCallCheck(this, FacetNode);\n _this = _super.call(this, parent);\n _this.model = model;\n _this.name = name;\n _this.data = data;\n var _iterator = _createForOfIteratorHelper(FACET_CHANNELS),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var channel = _step.value;\n var fieldDef = model.facet[channel];\n if (fieldDef) {\n var bin = fieldDef.bin,\n sort = fieldDef.sort;\n _this[channel] = _objectSpread({\n name: model.getName(\"\".concat(channel, \"_domain\")),\n fields: [vgField(fieldDef)].concat(_toConsumableArray(isBinning(bin) ? [vgField(fieldDef, {\n binSuffix: 'end'\n })] : []))\n }, isSortField(sort) ? {\n sortField: sort\n } : isArray(sort) ? {\n sortIndexField: sortArrayIndexField(fieldDef, channel)\n } : {});\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n _this.childModel = model.child;\n return _this;\n }\n _createClass(FacetNode, [{\n key: \"hash\",\n value: function hash() {\n var out = \"Facet\";\n var _iterator2 = _createForOfIteratorHelper(FACET_CHANNELS),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var channel = _step2.value;\n if (this[channel]) {\n out += \" \".concat(channel.charAt(0), \":\").concat(_hash(this[channel]));\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n return out;\n }\n }, {\n key: \"fields\",\n get: function get() {\n var f = [];\n var _iterator3 = _createForOfIteratorHelper(FACET_CHANNELS),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var _this$channel;\n var channel = _step3.value;\n if ((_this$channel = this[channel]) !== null && _this$channel !== void 0 && _this$channel.fields) {\n f.push.apply(f, _toConsumableArray(this[channel].fields));\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n return f;\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n var depFields = new Set(this.fields);\n var _iterator4 = _createForOfIteratorHelper(FACET_CHANNELS),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var channel = _step4.value;\n if (this[channel]) {\n if (this[channel].sortField) {\n depFields.add(this[channel].sortField.field);\n }\n if (this[channel].sortIndexField) {\n depFields.add(this[channel].sortIndexField);\n }\n }\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n return depFields;\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return new Set(); // facet does not produce any new fields\n }\n /**\n * The name to reference this source is its name.\n */\n }, {\n key: \"getSource\",\n value: function getSource() {\n return this.name;\n }\n }, {\n key: \"getChildIndependentFieldsWithStep\",\n value: function getChildIndependentFieldsWithStep() {\n var childIndependentFieldsWithStep = {};\n var _iterator5 = _createForOfIteratorHelper(POSITION_SCALE_CHANNELS),\n _step5;\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var channel = _step5.value;\n var childScaleComponent = this.childModel.component.scales[channel];\n if (childScaleComponent && !childScaleComponent.merged) {\n // independent scale\n var type = childScaleComponent.get('type');\n var range = childScaleComponent.get('range');\n if (hasDiscreteDomain(type) && isVgRangeStep(range)) {\n var domain = assembleDomain(this.childModel, channel);\n var field = getFieldFromDomain(domain);\n if (field) {\n childIndependentFieldsWithStep[channel] = field;\n } else {\n log.warn(log.message.unknownField(channel));\n }\n }\n }\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n return childIndependentFieldsWithStep;\n }\n }, {\n key: \"assembleRowColumnHeaderData\",\n value: function assembleRowColumnHeaderData(channel, crossedDataName, childIndependentFieldsWithStep) {\n var childChannel = {\n row: 'y',\n column: 'x',\n facet: undefined\n }[channel];\n var fields = [];\n var ops = [];\n var as = [];\n if (childChannel && childIndependentFieldsWithStep && childIndependentFieldsWithStep[childChannel]) {\n if (crossedDataName) {\n // If there is a crossed data, calculate max\n fields.push(\"distinct_\".concat(childIndependentFieldsWithStep[childChannel]));\n ops.push('max');\n } else {\n // If there is no crossed data, just calculate distinct\n fields.push(childIndependentFieldsWithStep[childChannel]);\n ops.push('distinct');\n }\n // Although it is technically a max, just name it distinct so it's easier to refer to it\n as.push(\"distinct_\".concat(childIndependentFieldsWithStep[childChannel]));\n }\n var _this$channel2 = this[channel],\n sortField = _this$channel2.sortField,\n sortIndexField = _this$channel2.sortIndexField;\n if (sortField) {\n var _sortField$op = sortField.op,\n op = _sortField$op === void 0 ? DEFAULT_SORT_OP : _sortField$op,\n field = sortField.field;\n fields.push(field);\n ops.push(op);\n as.push(vgField(sortField, {\n forAs: true\n }));\n } else if (sortIndexField) {\n fields.push(sortIndexField);\n ops.push('max');\n as.push(sortIndexField);\n }\n return {\n name: this[channel].name,\n // Use data from the crossed one if it exist\n source: crossedDataName !== null && crossedDataName !== void 0 ? crossedDataName : this.data,\n transform: [_objectSpread({\n type: 'aggregate',\n groupby: this[channel].fields\n }, fields.length ? {\n fields: fields,\n ops: ops,\n as: as\n } : {})]\n };\n }\n }, {\n key: \"assembleFacetHeaderData\",\n value: function assembleFacetHeaderData(childIndependentFieldsWithStep) {\n var columns = this.model.layout.columns;\n var layoutHeaders = this.model.component.layoutHeaders;\n var data = [];\n var hasSharedAxis = {};\n var _iterator6 = _createForOfIteratorHelper(HEADER_CHANNELS),\n _step6;\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var headerChannel = _step6.value;\n var _iterator7 = _createForOfIteratorHelper(HEADER_TYPES),\n _step7;\n try {\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n var _ref;\n var headerType = _step7.value;\n var headers = (_ref = layoutHeaders[headerChannel] && layoutHeaders[headerChannel][headerType]) !== null && _ref !== void 0 ? _ref : [];\n var _iterator8 = _createForOfIteratorHelper(headers),\n _step8;\n try {\n for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {\n var _header$axes;\n var header = _step8.value;\n if (((_header$axes = header.axes) === null || _header$axes === void 0 ? void 0 : _header$axes.length) > 0) {\n hasSharedAxis[headerChannel] = true;\n break;\n }\n }\n } catch (err) {\n _iterator8.e(err);\n } finally {\n _iterator8.f();\n }\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n if (hasSharedAxis[headerChannel]) {\n var cardinality = \"length(data(\\\"\".concat(this.facet.name, \"\\\"))\");\n var stop = headerChannel === 'row' ? columns ? {\n signal: \"ceil(\".concat(cardinality, \" / \").concat(columns, \")\")\n } : 1 : columns ? {\n signal: \"min(\".concat(cardinality, \", \").concat(columns, \")\")\n } : {\n signal: cardinality\n };\n data.push({\n name: \"\".concat(this.facet.name, \"_\").concat(headerChannel),\n transform: [{\n type: 'sequence',\n start: 0,\n stop: stop\n }]\n });\n }\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n var row = hasSharedAxis.row,\n column = hasSharedAxis.column;\n if (row || column) {\n data.unshift(this.assembleRowColumnHeaderData('facet', null, childIndependentFieldsWithStep));\n }\n return data;\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n var data = [];\n var crossedDataName = null;\n var childIndependentFieldsWithStep = this.getChildIndependentFieldsWithStep();\n var column = this.column,\n row = this.row,\n facet = this.facet;\n if (column && row && (childIndependentFieldsWithStep.x || childIndependentFieldsWithStep.y)) {\n var _childIndependentFiel, _childIndependentFiel2;\n // Need to create a cross dataset to correctly calculate cardinality\n crossedDataName = \"cross_\".concat(this.column.name, \"_\").concat(this.row.name);\n var fields = [].concat((_childIndependentFiel = childIndependentFieldsWithStep.x) !== null && _childIndependentFiel !== void 0 ? _childIndependentFiel : [], (_childIndependentFiel2 = childIndependentFieldsWithStep.y) !== null && _childIndependentFiel2 !== void 0 ? _childIndependentFiel2 : []);\n var ops = fields.map(function () {\n return 'distinct';\n });\n data.push({\n name: crossedDataName,\n source: this.data,\n transform: [{\n type: 'aggregate',\n groupby: this.fields,\n fields: fields,\n ops: ops\n }]\n });\n }\n for (var _i = 0, _arr = [COLUMN, ROW]; _i < _arr.length; _i++) {\n var channel = _arr[_i];\n if (this[channel]) {\n data.push(this.assembleRowColumnHeaderData(channel, crossedDataName, childIndependentFieldsWithStep));\n }\n }\n if (facet) {\n var facetData = this.assembleFacetHeaderData(childIndependentFieldsWithStep);\n if (facetData) {\n data.push.apply(data, _toConsumableArray(facetData));\n }\n }\n return data;\n }\n }]);\n return FacetNode;\n}(DataFlowNode);","import _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { isNumber, isString } from 'vega-util';\nimport { isMinMaxOp } from '../../aggregate';\nimport { getMainRangeChannel } from '../../channel';\nimport { isFieldDef, isFieldOrDatumDefForTimeFormat, isScaleFieldDef, isTypedFieldDef } from '../../channeldef';\nimport { isGenerator } from '../../data';\nimport { isDateTime } from '../../datetime';\nimport * as log from '../../log';\nimport { forEachLeaf } from '../../logical';\nimport { isPathMark } from '../../mark';\nimport { isFieldEqualPredicate, isFieldGTEPredicate, isFieldGTPredicate, isFieldLTEPredicate, isFieldLTPredicate, isFieldOneOfPredicate, isFieldPredicate, isFieldRangePredicate } from '../../predicate';\nimport { isSortField } from '../../sort';\nimport { accessPathDepth, accessPathWithDatum, duplicate, hash as _hash, keys, removePathFromField } from '../../util';\nimport { signalRefOrValue } from '../common';\nimport { isFacetModel, isUnitModel } from '../model';\nimport { Split } from '../split';\nimport { DataFlowNode } from './dataflow';\n/**\n * Remove quotes from a string.\n */\nfunction unquote(pattern) {\n if (pattern.startsWith(\"'\") && pattern.endsWith(\"'\") || pattern.startsWith('\"') && pattern.endsWith('\"')) {\n return pattern.slice(1, -1);\n }\n return pattern;\n}\n/**\n * @param field The field.\n * @param parse What to parse the field as.\n */\nfunction parseExpression(field, parse) {\n var f = accessPathWithDatum(field);\n if (parse === 'number') {\n return \"toNumber(\".concat(f, \")\");\n } else if (parse === 'boolean') {\n return \"toBoolean(\".concat(f, \")\");\n } else if (parse === 'string') {\n return \"toString(\".concat(f, \")\");\n } else if (parse === 'date') {\n return \"toDate(\".concat(f, \")\");\n } else if (parse === 'flatten') {\n return f;\n } else if (parse.startsWith('date:')) {\n var specifier = unquote(parse.slice(5, parse.length));\n return \"timeParse(\".concat(f, \",'\").concat(specifier, \"')\");\n } else if (parse.startsWith('utc:')) {\n var _specifier = unquote(parse.slice(4, parse.length));\n return \"utcParse(\".concat(f, \",'\").concat(_specifier, \"')\");\n } else {\n log.warn(log.message.unrecognizedParse(parse));\n return null;\n }\n}\nexport function getImplicitFromFilterTransform(transform) {\n var implicit = {};\n forEachLeaf(transform.filter, function (filter) {\n if (isFieldPredicate(filter)) {\n // Automatically add a parse node for filters with filter objects\n var val = null;\n // For EqualFilter, just use the equal property.\n // For RangeFilter and OneOfFilter, all array members should have\n // the same type, so we only use the first one.\n if (isFieldEqualPredicate(filter)) {\n val = signalRefOrValue(filter.equal);\n } else if (isFieldLTEPredicate(filter)) {\n val = signalRefOrValue(filter.lte);\n } else if (isFieldLTPredicate(filter)) {\n val = signalRefOrValue(filter.lt);\n } else if (isFieldGTPredicate(filter)) {\n val = signalRefOrValue(filter.gt);\n } else if (isFieldGTEPredicate(filter)) {\n val = signalRefOrValue(filter.gte);\n } else if (isFieldRangePredicate(filter)) {\n val = filter.range[0];\n } else if (isFieldOneOfPredicate(filter)) {\n var _filter$oneOf;\n val = ((_filter$oneOf = filter.oneOf) !== null && _filter$oneOf !== void 0 ? _filter$oneOf : filter['in'])[0];\n } // else -- for filter expression, we can't infer anything\n if (val) {\n if (isDateTime(val)) {\n implicit[filter.field] = 'date';\n } else if (isNumber(val)) {\n implicit[filter.field] = 'number';\n } else if (isString(val)) {\n implicit[filter.field] = 'string';\n }\n }\n if (filter.timeUnit) {\n implicit[filter.field] = 'date';\n }\n }\n });\n return implicit;\n}\n/**\n * Creates a parse node for implicit parsing from a model and updates ancestorParse.\n */\nexport function getImplicitFromEncoding(model) {\n var implicit = {};\n function add(fieldDef) {\n if (isFieldOrDatumDefForTimeFormat(fieldDef)) {\n implicit[fieldDef.field] = 'date';\n } else if (fieldDef.type === 'quantitative' && isMinMaxOp(fieldDef.aggregate) // we need to parse numbers to support correct min and max\n ) {\n implicit[fieldDef.field] = 'number';\n } else if (accessPathDepth(fieldDef.field) > 1) {\n // For non-date/non-number (strings and booleans), derive a flattened field for a referenced nested field.\n // (Parsing numbers / dates already flattens numeric and temporal fields.)\n if (!(fieldDef.field in implicit)) {\n implicit[fieldDef.field] = 'flatten';\n }\n } else if (isScaleFieldDef(fieldDef) && isSortField(fieldDef.sort) && accessPathDepth(fieldDef.sort.field) > 1) {\n // Flatten fields that we sort by but that are not otherwise flattened.\n if (!(fieldDef.sort.field in implicit)) {\n implicit[fieldDef.sort.field] = 'flatten';\n }\n }\n }\n if (isUnitModel(model) || isFacetModel(model)) {\n // Parse encoded fields\n model.forEachFieldDef(function (fieldDef, channel) {\n if (isTypedFieldDef(fieldDef)) {\n add(fieldDef);\n } else {\n var mainChannel = getMainRangeChannel(channel);\n var mainFieldDef = model.fieldDef(mainChannel);\n add(_objectSpread(_objectSpread({}, fieldDef), {}, {\n type: mainFieldDef.type\n }));\n }\n });\n }\n // Parse quantitative dimension fields of path marks as numbers so that we sort them correctly.\n if (isUnitModel(model)) {\n var mark = model.mark,\n markDef = model.markDef,\n encoding = model.encoding;\n if (isPathMark(mark) &&\n // No need to sort by dimension if we have a connected scatterplot (order channel is present)\n !model.encoding.order) {\n var dimensionChannel = markDef.orient === 'horizontal' ? 'y' : 'x';\n var dimensionChannelDef = encoding[dimensionChannel];\n if (isFieldDef(dimensionChannelDef) && dimensionChannelDef.type === 'quantitative' && !(dimensionChannelDef.field in implicit)) {\n implicit[dimensionChannelDef.field] = 'number';\n }\n }\n }\n return implicit;\n}\n/**\n * Creates a parse node for implicit parsing from a model and updates ancestorParse.\n */\nexport function getImplicitFromSelection(model) {\n var implicit = {};\n if (isUnitModel(model) && model.component.selection) {\n var _iterator = _createForOfIteratorHelper(keys(model.component.selection)),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var name = _step.value;\n var selCmpt = model.component.selection[name];\n var _iterator2 = _createForOfIteratorHelper(selCmpt.project.items),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var proj = _step2.value;\n if (!proj.channel && accessPathDepth(proj.field) > 1) {\n implicit[proj.field] = 'flatten';\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n return implicit;\n}\nexport var ParseNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(ParseNode, _DataFlowNode);\n var _super = _createSuper(ParseNode);\n function ParseNode(parent, parse) {\n var _this;\n _classCallCheck(this, ParseNode);\n _this = _super.call(this, parent);\n _this._parse = parse;\n return _this;\n }\n _createClass(ParseNode, [{\n key: \"clone\",\n value: function clone() {\n return new ParseNode(null, duplicate(this._parse));\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return \"Parse \".concat(_hash(this._parse));\n }\n /**\n * Creates a parse node from a data.format.parse and updates ancestorParse.\n */\n }, {\n key: \"parse\",\n get: function get() {\n return this._parse;\n }\n }, {\n key: \"merge\",\n value: function merge(other) {\n this._parse = _objectSpread(_objectSpread({}, this._parse), other.parse);\n other.remove();\n }\n /**\n * Assemble an object for Vega's format.parse property.\n */\n }, {\n key: \"assembleFormatParse\",\n value: function assembleFormatParse() {\n var formatParse = {};\n var _iterator3 = _createForOfIteratorHelper(keys(this._parse)),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var field = _step3.value;\n var p = this._parse[field];\n if (accessPathDepth(field) === 1) {\n formatParse[field] = p;\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n return formatParse;\n }\n // format parse depends and produces all fields in its parse\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return new Set(keys(this._parse));\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n return new Set(keys(this._parse));\n }\n }, {\n key: \"assembleTransforms\",\n value: function assembleTransforms() {\n var _this2 = this;\n var onlyNested = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n return keys(this._parse).filter(function (field) {\n return onlyNested ? accessPathDepth(field) > 1 : true;\n }).map(function (field) {\n var expr = parseExpression(field, _this2._parse[field]);\n if (!expr) {\n return null;\n }\n var formula = {\n type: 'formula',\n expr: expr,\n as: removePathFromField(field) // Vega output is always flattened\n };\n\n return formula;\n }).filter(function (t) {\n return t !== null;\n });\n }\n }], [{\n key: \"makeExplicit\",\n value: function makeExplicit(parent, model, ancestorParse) {\n var _data$format;\n // Custom parse\n var explicit = {};\n var data = model.data;\n if (!isGenerator(data) && data !== null && data !== void 0 && (_data$format = data.format) !== null && _data$format !== void 0 && _data$format.parse) {\n explicit = data.format.parse;\n }\n return this.makeWithAncestors(parent, explicit, {}, ancestorParse);\n }\n /**\n * Creates a parse node from \"explicit\" parse and \"implicit\" parse and updates ancestorParse.\n */\n }, {\n key: \"makeWithAncestors\",\n value: function makeWithAncestors(parent, explicit, implicit, ancestorParse) {\n // We should not parse what has already been parsed in a parent (explicitly or implicitly) or what has been derived (maked as \"derived\"). We also don't need to flatten a field that has already been parsed.\n var _iterator4 = _createForOfIteratorHelper(keys(implicit)),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var field = _step4.value;\n var parsedAs = ancestorParse.getWithExplicit(field);\n if (parsedAs.value !== undefined) {\n // We always ignore derived fields even if they are implicitly defined because we expect users to create the right types.\n if (parsedAs.explicit || parsedAs.value === implicit[field] || parsedAs.value === 'derived' || implicit[field] === 'flatten') {\n delete implicit[field];\n } else {\n log.warn(log.message.differentParse(field, implicit[field], parsedAs.value));\n }\n }\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n var _iterator5 = _createForOfIteratorHelper(keys(explicit)),\n _step5;\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var _field = _step5.value;\n var _parsedAs = ancestorParse.get(_field);\n if (_parsedAs !== undefined) {\n // Don't parse a field again if it has been parsed with the same type already.\n if (_parsedAs === explicit[_field]) {\n delete explicit[_field];\n } else {\n log.warn(log.message.differentParse(_field, explicit[_field], _parsedAs));\n }\n }\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n var parse = new Split(explicit, implicit);\n // add the format parse from this model so that children don't parse the same field again\n ancestorParse.copyAll(parse);\n // copy only non-null parses\n var p = {};\n var _iterator6 = _createForOfIteratorHelper(keys(parse.combine())),\n _step6;\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var key = _step6.value;\n var val = parse.get(key);\n if (val !== null) {\n p[key] = val;\n }\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n if (keys(p).length === 0 || ancestorParse.parseNothing) {\n return null;\n }\n return new ParseNode(parent, p);\n }\n }]);\n return ParseNode;\n}(DataFlowNode);","import _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { SELECTION_ID } from '../../selection';\nimport { DataFlowNode } from './dataflow';\nexport var IdentifierNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(IdentifierNode, _DataFlowNode);\n var _super = _createSuper(IdentifierNode);\n function IdentifierNode(parent) {\n _classCallCheck(this, IdentifierNode);\n return _super.call(this, parent);\n }\n _createClass(IdentifierNode, [{\n key: \"clone\",\n value: function clone() {\n return new IdentifierNode(null);\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n return new Set();\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return new Set([SELECTION_ID]);\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return 'Identifier';\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n return {\n type: 'identifier',\n as: SELECTION_ID\n };\n }\n }]);\n return IdentifierNode;\n}(DataFlowNode);","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { hash as _hash } from '../../util';\nimport { DataFlowNode } from './dataflow';\nexport var GraticuleNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(GraticuleNode, _DataFlowNode);\n var _super = _createSuper(GraticuleNode);\n function GraticuleNode(parent, params) {\n var _this;\n _classCallCheck(this, GraticuleNode);\n _this = _super.call(this, parent);\n _this.params = params;\n return _this;\n }\n _createClass(GraticuleNode, [{\n key: \"clone\",\n value: function clone() {\n return new GraticuleNode(null, this.params);\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n return new Set();\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return undefined; // there should never be a node before graticule\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return \"Graticule \".concat(_hash(this.params));\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n return _objectSpread({\n type: 'graticule'\n }, this.params === true ? {} : this.params);\n }\n }]);\n return GraticuleNode;\n}(DataFlowNode);","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { hash as _hash } from '../../util';\nimport { DataFlowNode } from './dataflow';\nexport var SequenceNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(SequenceNode, _DataFlowNode);\n var _super = _createSuper(SequenceNode);\n function SequenceNode(parent, params) {\n var _this;\n _classCallCheck(this, SequenceNode);\n _this = _super.call(this, parent);\n _this.params = params;\n return _this;\n }\n _createClass(SequenceNode, [{\n key: \"clone\",\n value: function clone() {\n return new SequenceNode(null, this.params);\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n return new Set();\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n var _this$params$as;\n return new Set([(_this$params$as = this.params.as) !== null && _this$params$as !== void 0 ? _this$params$as : 'data']);\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return \"Hash \".concat(_hash(this.params));\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n return _objectSpread({\n type: 'sequence'\n }, this.params);\n }\n }]);\n return SequenceNode;\n}(DataFlowNode);","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { isGenerator, isInlineData, isNamedData, isSphereGenerator, isUrlData } from '../../data';\nimport { contains, isEmpty, omit } from '../../util';\nimport { DataFlowNode } from './dataflow';\nexport var SourceNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(SourceNode, _DataFlowNode);\n var _super = _createSuper(SourceNode);\n function SourceNode(data) {\n var _data;\n var _this;\n _classCallCheck(this, SourceNode);\n _this = _super.call(this, null); // source cannot have parent\n (_data = data) !== null && _data !== void 0 ? _data : data = {\n name: 'source'\n };\n var format;\n if (!isGenerator(data)) {\n format = data.format ? _objectSpread({}, omit(data.format, ['parse'])) : {};\n }\n if (isInlineData(data)) {\n _this._data = {\n values: data.values\n };\n } else if (isUrlData(data)) {\n _this._data = {\n url: data.url\n };\n if (!format.type) {\n // Extract extension from URL using snippet from\n // http://stackoverflow.com/questions/680929/how-to-extract-extension-from-filename-string-in-javascript\n var defaultExtension = /(?:\\.([^.]+))?$/.exec(data.url)[1];\n if (!contains(['json', 'csv', 'tsv', 'dsv', 'topojson'], defaultExtension)) {\n defaultExtension = 'json';\n }\n // defaultExtension has type string but we ensure that it is DataFormatType above\n format.type = defaultExtension;\n }\n } else if (isSphereGenerator(data)) {\n // hardwire GeoJSON sphere data into output specification\n _this._data = {\n values: [{\n type: 'Sphere'\n }]\n };\n } else if (isNamedData(data) || isGenerator(data)) {\n _this._data = {};\n }\n // set flag to check if generator\n _this._generator = isGenerator(data);\n // any dataset can be named\n if (data.name) {\n _this._name = data.name;\n }\n if (format && !isEmpty(format)) {\n _this._data.format = format;\n }\n return _this;\n }\n _createClass(SourceNode, [{\n key: \"dependentFields\",\n value: function dependentFields() {\n return new Set();\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return undefined; // we don't know what this source produces\n }\n }, {\n key: \"data\",\n get: function get() {\n return this._data;\n }\n }, {\n key: \"hasName\",\n value: function hasName() {\n return !!this._name;\n }\n }, {\n key: \"isGenerator\",\n get: function get() {\n return this._generator;\n }\n }, {\n key: \"dataName\",\n get: function get() {\n return this._name;\n },\n set: function set(name) {\n this._name = name;\n }\n }, {\n key: \"parent\",\n set: function set(parent) {\n throw new Error('Source nodes have to be roots.');\n }\n }, {\n key: \"remove\",\n value: function remove() {\n throw new Error('Source nodes are roots and cannot be removed.');\n }\n }, {\n key: \"hash\",\n value: function hash() {\n throw new Error('Cannot hash sources');\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n return _objectSpread(_objectSpread({\n name: this._name\n }, this._data), {}, {\n transform: []\n });\n }\n }]);\n return SourceNode;\n}(DataFlowNode);","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nvar __classPrivateFieldSet = this && this.__classPrivateFieldSet || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value), value;\n};\nvar __classPrivateFieldGet = this && this.__classPrivateFieldGet || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Optimizer_modified;\nimport { GraticuleNode } from './graticule';\nimport { SequenceNode } from './sequence';\nimport { SourceNode } from './source';\n/**\n * Whether this dataflow node is the source of the dataflow that produces data i.e. a source or a generator.\n */\nexport function isDataSourceNode(node) {\n return node instanceof SourceNode || node instanceof GraticuleNode || node instanceof SequenceNode;\n}\n/**\n * Abstract base class for Dataflow optimizers.\n * Contains only mutation handling logic. Subclasses need to implement iteration logic.\n */\nexport var Optimizer = /*#__PURE__*/function () {\n function Optimizer() {\n _classCallCheck(this, Optimizer);\n _Optimizer_modified.set(this, void 0);\n __classPrivateFieldSet(this, _Optimizer_modified, false, \"f\");\n }\n // Once true, #modified is never set to false\n _createClass(Optimizer, [{\n key: \"setModified\",\n value: function setModified() {\n __classPrivateFieldSet(this, _Optimizer_modified, true, \"f\");\n }\n }, {\n key: \"modifiedFlag\",\n get: function get() {\n return __classPrivateFieldGet(this, _Optimizer_modified, \"f\");\n }\n }]);\n return Optimizer;\n}();\n_Optimizer_modified = new WeakMap();\n/**\n * Starts from a node and runs the optimization function (the \"run\" method) upwards to the root,\n * depending on the continue and modified flag values returned by the optimization function.\n */\nexport var BottomUpOptimizer = /*#__PURE__*/function (_Optimizer) {\n _inherits(BottomUpOptimizer, _Optimizer);\n var _super = _createSuper(BottomUpOptimizer);\n function BottomUpOptimizer() {\n _classCallCheck(this, BottomUpOptimizer);\n return _super.apply(this, arguments);\n }\n _createClass(BottomUpOptimizer, [{\n key: \"getNodeDepths\",\n value:\n /**\n * Compute a map of node depths that we can use to determine a topological sort order.\n */\n function getNodeDepths(node, depth, depths) {\n depths.set(node, depth);\n var _iterator = _createForOfIteratorHelper(node.children),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var child = _step.value;\n this.getNodeDepths(child, depth + 1, depths);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return depths;\n }\n /**\n * Run the optimizer on all nodes starting from the leaves.\n */\n }, {\n key: \"optimize\",\n value: function optimize(node) {\n var depths = this.getNodeDepths(node, 0, new Map());\n var topologicalSort = _toConsumableArray(depths.entries()).sort(function (a, b) {\n return b[1] - a[1];\n });\n var _iterator2 = _createForOfIteratorHelper(topologicalSort),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var tuple = _step2.value;\n this.run(tuple[0]);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n return this.modifiedFlag;\n }\n }]);\n return BottomUpOptimizer;\n}(Optimizer);\n/**\n * The optimizer function (the \"run\" method), is invoked on the given node and then continues recursively.\n */\nexport var TopDownOptimizer = /*#__PURE__*/function (_Optimizer2) {\n _inherits(TopDownOptimizer, _Optimizer2);\n var _super2 = _createSuper(TopDownOptimizer);\n function TopDownOptimizer() {\n _classCallCheck(this, TopDownOptimizer);\n return _super2.apply(this, arguments);\n }\n _createClass(TopDownOptimizer, [{\n key: \"optimize\",\n value:\n /**\n * Run the optimizer depth first on all nodes starting from the roots.\n */\n function optimize(node) {\n this.run(node);\n var _iterator3 = _createForOfIteratorHelper(node.children),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var child = _step3.value;\n this.optimize(child);\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n return this.modifiedFlag;\n }\n }]);\n return TopDownOptimizer;\n}(Optimizer);","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { fieldIntersection, hash, hasIntersection, isEmpty, keys, some } from '../../util';\nimport { requiresSelectionId } from '../selection';\nimport { AggregateNode } from './aggregate';\nimport { BinNode } from './bin';\nimport { OutputNode } from './dataflow';\nimport { FacetNode } from './facet';\nimport { FilterNode } from './filter';\nimport { ParseNode } from './formatparse';\nimport { IdentifierNode } from './identifier';\nimport { BottomUpOptimizer, isDataSourceNode, Optimizer, TopDownOptimizer } from './optimizer';\nimport { SourceNode } from './source';\nimport { TimeUnitNode } from './timeunit';\n/**\n * Merge identical nodes at forks by comparing hashes.\n *\n * Does not need to iterate from leaves so we implement this with recursion as it's a bit simpler.\n */\nexport var MergeIdenticalNodes = /*#__PURE__*/function (_TopDownOptimizer) {\n _inherits(MergeIdenticalNodes, _TopDownOptimizer);\n var _super = _createSuper(MergeIdenticalNodes);\n function MergeIdenticalNodes() {\n _classCallCheck(this, MergeIdenticalNodes);\n return _super.apply(this, arguments);\n }\n _createClass(MergeIdenticalNodes, [{\n key: \"mergeNodes\",\n value: function mergeNodes(parent, nodes) {\n var mergedNode = nodes.shift();\n var _iterator = _createForOfIteratorHelper(nodes),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var node = _step.value;\n parent.removeChild(node);\n node.parent = mergedNode;\n node.remove();\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n }, {\n key: \"run\",\n value: function run(node) {\n var hashes = node.children.map(function (x) {\n return x.hash();\n });\n var buckets = {};\n for (var i = 0; i < hashes.length; i++) {\n if (buckets[hashes[i]] === undefined) {\n buckets[hashes[i]] = [node.children[i]];\n } else {\n buckets[hashes[i]].push(node.children[i]);\n }\n }\n var _iterator2 = _createForOfIteratorHelper(keys(buckets)),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var k = _step2.value;\n if (buckets[k].length > 1) {\n this.setModified();\n this.mergeNodes(node, buckets[k]);\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n }]);\n return MergeIdenticalNodes;\n}(TopDownOptimizer);\n/**\n * Optimizer that removes identifier nodes that are not needed for selections.\n */\nexport var RemoveUnnecessaryIdentifierNodes = /*#__PURE__*/function (_TopDownOptimizer2) {\n _inherits(RemoveUnnecessaryIdentifierNodes, _TopDownOptimizer2);\n var _super2 = _createSuper(RemoveUnnecessaryIdentifierNodes);\n function RemoveUnnecessaryIdentifierNodes(model) {\n var _this;\n _classCallCheck(this, RemoveUnnecessaryIdentifierNodes);\n _this = _super2.call(this);\n _this.requiresSelectionId = model && requiresSelectionId(model);\n return _this;\n }\n _createClass(RemoveUnnecessaryIdentifierNodes, [{\n key: \"run\",\n value: function run(node) {\n if (node instanceof IdentifierNode) {\n // Only preserve IdentifierNodes if we have default discrete selections\n // in our model tree, and if the nodes come after tuple producing nodes.\n if (!(this.requiresSelectionId && (isDataSourceNode(node.parent) || node.parent instanceof AggregateNode || node.parent instanceof ParseNode))) {\n this.setModified();\n node.remove();\n }\n }\n }\n }]);\n return RemoveUnnecessaryIdentifierNodes;\n}(TopDownOptimizer);\n/**\n * Removes duplicate time unit nodes (as determined by the name of the output field) that may be generated due to\n * selections projected over time units. Only keeps the first time unit in any branch.\n *\n * This optimizer is a custom top down optimizer that keep track of produced fields in a branch.\n */\nexport var RemoveDuplicateTimeUnits = /*#__PURE__*/function (_Optimizer) {\n _inherits(RemoveDuplicateTimeUnits, _Optimizer);\n var _super3 = _createSuper(RemoveDuplicateTimeUnits);\n function RemoveDuplicateTimeUnits() {\n _classCallCheck(this, RemoveDuplicateTimeUnits);\n return _super3.apply(this, arguments);\n }\n _createClass(RemoveDuplicateTimeUnits, [{\n key: \"optimize\",\n value: function optimize(node) {\n this.run(node, new Set());\n return this.modifiedFlag;\n }\n }, {\n key: \"run\",\n value: function run(node, timeUnitFields) {\n var producedFields = new Set();\n if (node instanceof TimeUnitNode) {\n producedFields = node.producedFields();\n if (hasIntersection(producedFields, timeUnitFields)) {\n this.setModified();\n node.removeFormulas(timeUnitFields);\n if (node.producedFields.length === 0) {\n node.remove();\n }\n }\n }\n var _iterator3 = _createForOfIteratorHelper(node.children),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var child = _step3.value;\n this.run(child, new Set([].concat(_toConsumableArray(timeUnitFields), _toConsumableArray(producedFields))));\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n }\n }]);\n return RemoveDuplicateTimeUnits;\n}(Optimizer);\n/**\n * Remove output nodes that are not required.\n */\nexport var RemoveUnnecessaryOutputNodes = /*#__PURE__*/function (_TopDownOptimizer3) {\n _inherits(RemoveUnnecessaryOutputNodes, _TopDownOptimizer3);\n var _super4 = _createSuper(RemoveUnnecessaryOutputNodes);\n function RemoveUnnecessaryOutputNodes() {\n _classCallCheck(this, RemoveUnnecessaryOutputNodes);\n return _super4.call(this);\n }\n _createClass(RemoveUnnecessaryOutputNodes, [{\n key: \"run\",\n value: function run(node) {\n if (node instanceof OutputNode && !node.isRequired()) {\n this.setModified();\n node.remove();\n }\n }\n }]);\n return RemoveUnnecessaryOutputNodes;\n}(TopDownOptimizer);\n/**\n * Move parse nodes up to forks and merges them if possible.\n */\nexport var MoveParseUp = /*#__PURE__*/function (_BottomUpOptimizer) {\n _inherits(MoveParseUp, _BottomUpOptimizer);\n var _super5 = _createSuper(MoveParseUp);\n function MoveParseUp() {\n _classCallCheck(this, MoveParseUp);\n return _super5.apply(this, arguments);\n }\n _createClass(MoveParseUp, [{\n key: \"run\",\n value: function run(node) {\n if (isDataSourceNode(node)) {\n return;\n }\n if (node.numChildren() > 1) {\n // Don't move parse further up but continue with parent.\n return;\n }\n var _iterator4 = _createForOfIteratorHelper(node.children),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var child = _step4.value;\n if (child instanceof ParseNode) {\n if (node instanceof ParseNode) {\n this.setModified();\n node.merge(child);\n } else {\n // Don't swap with nodes that produce something that the parse node depends on (e.g. lookup).\n if (fieldIntersection(node.producedFields(), child.dependentFields())) {\n continue;\n }\n this.setModified();\n child.swapWithParent();\n }\n }\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n return;\n }\n }]);\n return MoveParseUp;\n}(BottomUpOptimizer);\n/**\n * Inserts an intermediate ParseNode containing all non-conflicting parse fields and removes the empty ParseNodes.\n *\n * We assume that dependent paths that do not have a parse node can be just merged.\n */\nexport var MergeParse = /*#__PURE__*/function (_BottomUpOptimizer2) {\n _inherits(MergeParse, _BottomUpOptimizer2);\n var _super6 = _createSuper(MergeParse);\n function MergeParse() {\n _classCallCheck(this, MergeParse);\n return _super6.apply(this, arguments);\n }\n _createClass(MergeParse, [{\n key: \"run\",\n value: function run(node) {\n var originalChildren = _toConsumableArray(node.children);\n var parseChildren = node.children.filter(function (child) {\n return child instanceof ParseNode;\n });\n if (node.numChildren() > 1 && parseChildren.length >= 1) {\n var commonParse = {};\n var conflictingParse = new Set();\n var _iterator5 = _createForOfIteratorHelper(parseChildren),\n _step5;\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var parseNode = _step5.value;\n var parse = parseNode.parse;\n var _iterator9 = _createForOfIteratorHelper(keys(parse)),\n _step9;\n try {\n for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {\n var k = _step9.value;\n if (!(k in commonParse)) {\n commonParse[k] = parse[k];\n } else if (commonParse[k] !== parse[k]) {\n conflictingParse.add(k);\n }\n }\n } catch (err) {\n _iterator9.e(err);\n } finally {\n _iterator9.f();\n }\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n var _iterator6 = _createForOfIteratorHelper(conflictingParse),\n _step6;\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var field = _step6.value;\n delete commonParse[field];\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n if (!isEmpty(commonParse)) {\n this.setModified();\n var mergedParseNode = new ParseNode(node, commonParse);\n var _iterator7 = _createForOfIteratorHelper(originalChildren),\n _step7;\n try {\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n var childNode = _step7.value;\n if (childNode instanceof ParseNode) {\n var _iterator8 = _createForOfIteratorHelper(keys(commonParse)),\n _step8;\n try {\n for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {\n var key = _step8.value;\n delete childNode.parse[key];\n }\n } catch (err) {\n _iterator8.e(err);\n } finally {\n _iterator8.f();\n }\n }\n node.removeChild(childNode);\n childNode.parent = mergedParseNode;\n // remove empty parse nodes\n if (childNode instanceof ParseNode && keys(childNode.parse).length === 0) {\n childNode.remove();\n }\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n }\n }\n }\n }]);\n return MergeParse;\n}(BottomUpOptimizer);\n/**\n * Repeatedly remove leaf nodes that are not output or facet nodes.\n * The reason is that we don't need subtrees that don't have any output nodes.\n * Facet nodes are needed for the row or column domains.\n */\nexport var RemoveUnusedSubtrees = /*#__PURE__*/function (_BottomUpOptimizer3) {\n _inherits(RemoveUnusedSubtrees, _BottomUpOptimizer3);\n var _super7 = _createSuper(RemoveUnusedSubtrees);\n function RemoveUnusedSubtrees() {\n _classCallCheck(this, RemoveUnusedSubtrees);\n return _super7.apply(this, arguments);\n }\n _createClass(RemoveUnusedSubtrees, [{\n key: \"run\",\n value: function run(node) {\n if (node instanceof OutputNode || node.numChildren() > 0 || node instanceof FacetNode) {\n // no need to continue with parent because it is output node or will have children (there was a fork)\n } else if (node instanceof SourceNode) {\n // ignore empty unused sources as they will be removed in optimizationDataflowHelper\n } else {\n this.setModified();\n node.remove();\n }\n }\n }]);\n return RemoveUnusedSubtrees;\n}(BottomUpOptimizer);\n/**\n * Merge adjacent time unit nodes.\n */\nexport var MergeTimeUnits = /*#__PURE__*/function (_BottomUpOptimizer4) {\n _inherits(MergeTimeUnits, _BottomUpOptimizer4);\n var _super8 = _createSuper(MergeTimeUnits);\n function MergeTimeUnits() {\n _classCallCheck(this, MergeTimeUnits);\n return _super8.apply(this, arguments);\n }\n _createClass(MergeTimeUnits, [{\n key: \"run\",\n value: function run(node) {\n var timeUnitChildren = node.children.filter(function (x) {\n return x instanceof TimeUnitNode;\n });\n var combination = timeUnitChildren.pop();\n var _iterator10 = _createForOfIteratorHelper(timeUnitChildren),\n _step10;\n try {\n for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {\n var timeUnit = _step10.value;\n this.setModified();\n combination.merge(timeUnit);\n }\n } catch (err) {\n _iterator10.e(err);\n } finally {\n _iterator10.f();\n }\n }\n }]);\n return MergeTimeUnits;\n}(BottomUpOptimizer);\nexport var MergeAggregates = /*#__PURE__*/function (_BottomUpOptimizer5) {\n _inherits(MergeAggregates, _BottomUpOptimizer5);\n var _super9 = _createSuper(MergeAggregates);\n function MergeAggregates() {\n _classCallCheck(this, MergeAggregates);\n return _super9.apply(this, arguments);\n }\n _createClass(MergeAggregates, [{\n key: \"run\",\n value: function run(node) {\n var aggChildren = node.children.filter(function (child) {\n return child instanceof AggregateNode;\n });\n // Object which we'll use to map the fields which an aggregate is grouped by to\n // the set of aggregates with that grouping. This is useful as only aggregates\n // with the same group by can be merged\n var groupedAggregates = {};\n // Build groupedAggregates\n var _iterator11 = _createForOfIteratorHelper(aggChildren),\n _step11;\n try {\n for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {\n var agg = _step11.value;\n var groupBys = hash(agg.groupBy);\n if (!(groupBys in groupedAggregates)) {\n groupedAggregates[groupBys] = [];\n }\n groupedAggregates[groupBys].push(agg);\n }\n // Merge aggregateNodes with same key in groupedAggregates\n } catch (err) {\n _iterator11.e(err);\n } finally {\n _iterator11.f();\n }\n var _iterator12 = _createForOfIteratorHelper(keys(groupedAggregates)),\n _step12;\n try {\n for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {\n var group = _step12.value;\n var mergeableAggs = groupedAggregates[group];\n if (mergeableAggs.length > 1) {\n var mergedAggs = mergeableAggs.pop();\n var _iterator13 = _createForOfIteratorHelper(mergeableAggs),\n _step13;\n try {\n for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {\n var _agg = _step13.value;\n if (mergedAggs.merge(_agg)) {\n node.removeChild(_agg);\n _agg.parent = mergedAggs;\n _agg.remove();\n this.setModified();\n }\n }\n } catch (err) {\n _iterator13.e(err);\n } finally {\n _iterator13.f();\n }\n }\n }\n } catch (err) {\n _iterator12.e(err);\n } finally {\n _iterator12.f();\n }\n }\n }]);\n return MergeAggregates;\n}(BottomUpOptimizer);\n/**\n * Merge bin nodes and move them up through forks. Stop at filters, parse, identifier as we want them to stay before the bin node.\n */\nexport var MergeBins = /*#__PURE__*/function (_BottomUpOptimizer6) {\n _inherits(MergeBins, _BottomUpOptimizer6);\n var _super10 = _createSuper(MergeBins);\n function MergeBins(model) {\n var _this2;\n _classCallCheck(this, MergeBins);\n _this2 = _super10.call(this);\n _this2.model = model;\n return _this2;\n }\n _createClass(MergeBins, [{\n key: \"run\",\n value: function run(node) {\n var moveBinsUp = !(isDataSourceNode(node) || node instanceof FilterNode || node instanceof ParseNode || node instanceof IdentifierNode);\n var promotableBins = [];\n var remainingBins = [];\n var _iterator14 = _createForOfIteratorHelper(node.children),\n _step14;\n try {\n for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) {\n var child = _step14.value;\n if (child instanceof BinNode) {\n if (moveBinsUp && !fieldIntersection(node.producedFields(), child.dependentFields())) {\n promotableBins.push(child);\n } else {\n remainingBins.push(child);\n }\n }\n }\n } catch (err) {\n _iterator14.e(err);\n } finally {\n _iterator14.f();\n }\n if (promotableBins.length > 0) {\n var promotedBin = promotableBins.pop();\n var _iterator15 = _createForOfIteratorHelper(promotableBins),\n _step15;\n try {\n for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) {\n var bin = _step15.value;\n promotedBin.merge(bin, this.model.renameSignal.bind(this.model));\n }\n } catch (err) {\n _iterator15.e(err);\n } finally {\n _iterator15.f();\n }\n this.setModified();\n if (node instanceof BinNode) {\n node.merge(promotedBin, this.model.renameSignal.bind(this.model));\n } else {\n promotedBin.swapWithParent();\n }\n }\n if (remainingBins.length > 1) {\n var remainingBin = remainingBins.pop();\n var _iterator16 = _createForOfIteratorHelper(remainingBins),\n _step16;\n try {\n for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) {\n var _bin = _step16.value;\n remainingBin.merge(_bin, this.model.renameSignal.bind(this.model));\n }\n } catch (err) {\n _iterator16.e(err);\n } finally {\n _iterator16.f();\n }\n this.setModified();\n }\n }\n }]);\n return MergeBins;\n}(BottomUpOptimizer);\n/**\n * This optimizer takes output nodes that are at a fork and moves them before the fork.\n *\n * The algorithm iterates over the children and tries to find the last output node in a chain of output nodes.\n * It then moves all output nodes before that main output node. All other children (and the children of the output nodes)\n * are inserted after the main output node.\n */\nexport var MergeOutputs = /*#__PURE__*/function (_BottomUpOptimizer7) {\n _inherits(MergeOutputs, _BottomUpOptimizer7);\n var _super11 = _createSuper(MergeOutputs);\n function MergeOutputs() {\n _classCallCheck(this, MergeOutputs);\n return _super11.apply(this, arguments);\n }\n _createClass(MergeOutputs, [{\n key: \"run\",\n value: function run(node) {\n var children = _toConsumableArray(node.children);\n var hasOutputChild = some(children, function (child) {\n return child instanceof OutputNode;\n });\n if (!hasOutputChild || node.numChildren() <= 1) {\n return;\n }\n var otherChildren = [];\n // The output node we will connect all other nodes to.\n // Output nodes will be added before the new node, other nodes after.\n var mainOutput;\n var _iterator17 = _createForOfIteratorHelper(children),\n _step17;\n try {\n for (_iterator17.s(); !(_step17 = _iterator17.n()).done;) {\n var _child = _step17.value;\n if (_child instanceof OutputNode) {\n var lastOutput = _child;\n while (lastOutput.numChildren() === 1) {\n var _lastOutput$children = _slicedToArray(lastOutput.children, 1),\n theChild = _lastOutput$children[0];\n if (theChild instanceof OutputNode) {\n lastOutput = theChild;\n } else {\n break;\n }\n }\n otherChildren.push.apply(otherChildren, _toConsumableArray(lastOutput.children));\n if (mainOutput) {\n // Move the output nodes before the mainOutput. We do this by setting\n // the parent of the first not to the parent of the main output and\n // the main output's parent to the last output.\n // note: the child is the first output\n node.removeChild(_child);\n _child.parent = mainOutput.parent;\n mainOutput.parent.removeChild(mainOutput);\n mainOutput.parent = lastOutput;\n this.setModified();\n } else {\n mainOutput = lastOutput;\n }\n } else {\n otherChildren.push(_child);\n }\n }\n } catch (err) {\n _iterator17.e(err);\n } finally {\n _iterator17.f();\n }\n if (otherChildren.length) {\n this.setModified();\n var _iterator18 = _createForOfIteratorHelper(otherChildren),\n _step18;\n try {\n for (_iterator18.s(); !(_step18 = _iterator18.n()).done;) {\n var child = _step18.value;\n child.parent.removeChild(child);\n child.parent = mainOutput;\n }\n } catch (err) {\n _iterator18.e(err);\n } finally {\n _iterator18.f();\n }\n }\n }\n }]);\n return MergeOutputs;\n}(BottomUpOptimizer);","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { vgField } from '../../channeldef';\nimport { duplicate, hash as _hash } from '../../util';\nimport { unique } from '../../util';\nimport { DataFlowNode } from './dataflow';\n/**\n * A class for the join aggregate transform nodes.\n */\nexport var JoinAggregateTransformNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(JoinAggregateTransformNode, _DataFlowNode);\n var _super = _createSuper(JoinAggregateTransformNode);\n function JoinAggregateTransformNode(parent, transform) {\n var _this;\n _classCallCheck(this, JoinAggregateTransformNode);\n _this = _super.call(this, parent);\n _this.transform = transform;\n return _this;\n }\n _createClass(JoinAggregateTransformNode, [{\n key: \"clone\",\n value: function clone() {\n return new JoinAggregateTransformNode(null, duplicate(this.transform));\n }\n }, {\n key: \"addDimensions\",\n value: function addDimensions(fields) {\n this.transform.groupby = unique(this.transform.groupby.concat(fields), function (d) {\n return d;\n });\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n var out = new Set();\n if (this.transform.groupby) {\n this.transform.groupby.forEach(out.add, out);\n }\n this.transform.joinaggregate.map(function (w) {\n return w.field;\n }).filter(function (f) {\n return f !== undefined;\n }).forEach(out.add, out);\n return out;\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return new Set(this.transform.joinaggregate.map(this.getDefaultName));\n }\n }, {\n key: \"getDefaultName\",\n value: function getDefaultName(joinAggregateFieldDef) {\n var _joinAggregateFieldDe;\n return (_joinAggregateFieldDe = joinAggregateFieldDef.as) !== null && _joinAggregateFieldDe !== void 0 ? _joinAggregateFieldDe : vgField(joinAggregateFieldDef);\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return \"JoinAggregateTransform \".concat(_hash(this.transform));\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n var fields = [];\n var ops = [];\n var as = [];\n var _iterator = _createForOfIteratorHelper(this.transform.joinaggregate),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var joinaggregate = _step.value;\n ops.push(joinaggregate.op);\n as.push(this.getDefaultName(joinaggregate));\n fields.push(joinaggregate.field === undefined ? null : joinaggregate.field);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n var groupby = this.transform.groupby;\n return _objectSpread({\n type: 'joinaggregate',\n as: as,\n ops: ops,\n fields: fields\n }, groupby !== undefined ? {\n groupby: groupby\n } : {});\n }\n }]);\n return JoinAggregateTransformNode;\n}(DataFlowNode);","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport \"core-js/modules/es.array.flat.js\";\nimport \"core-js/modules/es.array.unscopables.flat.js\";\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { isArray, isString } from 'vega-util';\nimport { getFieldDef, isFieldDef, isOrderOnlyDef, vgField } from '../../channeldef';\nimport { duplicate, getFirstDefined, hash as _hash } from '../../util';\nimport { sortParams } from '../common';\nimport { DataFlowNode } from './dataflow';\nfunction getStackByFields(model) {\n return model.stack.stackBy.reduce(function (fields, by) {\n var fieldDef = by.fieldDef;\n var _field = vgField(fieldDef);\n if (_field) {\n fields.push(_field);\n }\n return fields;\n }, []);\n}\nfunction isValidAsArray(as) {\n return isArray(as) && as.every(function (s) {\n return isString(s);\n }) && as.length > 1;\n}\nexport var StackNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(StackNode, _DataFlowNode);\n var _super = _createSuper(StackNode);\n function StackNode(parent, stack) {\n var _this;\n _classCallCheck(this, StackNode);\n _this = _super.call(this, parent);\n _this._stack = stack;\n return _this;\n }\n _createClass(StackNode, [{\n key: \"clone\",\n value: function clone() {\n return new StackNode(null, duplicate(this._stack));\n }\n }, {\n key: \"stack\",\n get: function get() {\n return this._stack;\n }\n }, {\n key: \"addDimensions\",\n value: function addDimensions(fields) {\n var _this$_stack$facetby;\n (_this$_stack$facetby = this._stack.facetby).push.apply(_this$_stack$facetby, _toConsumableArray(fields));\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n var out = new Set();\n out.add(this._stack.stackField);\n this.getGroupbyFields().forEach(out.add, out);\n this._stack.facetby.forEach(out.add, out);\n this._stack.sort.field.forEach(out.add, out);\n return out;\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return new Set(this._stack.as);\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return \"Stack \".concat(_hash(this._stack));\n }\n }, {\n key: \"getGroupbyFields\",\n value: function getGroupbyFields() {\n var _this$_stack = this._stack,\n dimensionFieldDefs = _this$_stack.dimensionFieldDefs,\n impute = _this$_stack.impute,\n groupby = _this$_stack.groupby;\n if (dimensionFieldDefs.length > 0) {\n return dimensionFieldDefs.map(function (dimensionFieldDef) {\n if (dimensionFieldDef.bin) {\n if (impute) {\n // For binned group by field with impute, we calculate bin_mid\n // as we cannot impute two fields simultaneously\n return [vgField(dimensionFieldDef, {\n binSuffix: 'mid'\n })];\n }\n return [\n // For binned group by field without impute, we need both bin (start) and bin_end\n vgField(dimensionFieldDef, {}), vgField(dimensionFieldDef, {\n binSuffix: 'end'\n })];\n }\n return [vgField(dimensionFieldDef)];\n }).flat();\n }\n return groupby !== null && groupby !== void 0 ? groupby : [];\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n var transform = [];\n var _this$_stack2 = this._stack,\n facetby = _this$_stack2.facetby,\n dimensionFieldDefs = _this$_stack2.dimensionFieldDefs,\n field = _this$_stack2.stackField,\n stackby = _this$_stack2.stackby,\n sort = _this$_stack2.sort,\n offset = _this$_stack2.offset,\n impute = _this$_stack2.impute,\n as = _this$_stack2.as;\n // Impute\n if (impute) {\n var _iterator = _createForOfIteratorHelper(dimensionFieldDefs),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var dimensionFieldDef = _step.value;\n var _dimensionFieldDef$ba = dimensionFieldDef.bandPosition,\n bandPosition = _dimensionFieldDef$ba === void 0 ? 0.5 : _dimensionFieldDef$ba,\n bin = dimensionFieldDef.bin;\n if (bin) {\n // As we can only impute one field at a time, we need to calculate\n // mid point for a binned field\n var binStart = vgField(dimensionFieldDef, {\n expr: 'datum'\n });\n var binEnd = vgField(dimensionFieldDef, {\n expr: 'datum',\n binSuffix: 'end'\n });\n transform.push({\n type: 'formula',\n expr: \"\".concat(bandPosition, \"*\").concat(binStart, \"+\").concat(1 - bandPosition, \"*\").concat(binEnd),\n as: vgField(dimensionFieldDef, {\n binSuffix: 'mid',\n forAs: true\n })\n });\n }\n transform.push({\n type: 'impute',\n field: field,\n groupby: [].concat(_toConsumableArray(stackby), _toConsumableArray(facetby)),\n key: vgField(dimensionFieldDef, {\n binSuffix: 'mid'\n }),\n method: 'value',\n value: 0\n });\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n // Stack\n transform.push({\n type: 'stack',\n groupby: [].concat(_toConsumableArray(this.getGroupbyFields()), _toConsumableArray(facetby)),\n field: field,\n sort: sort,\n as: as,\n offset: offset\n });\n return transform;\n }\n }], [{\n key: \"makeFromTransform\",\n value: function makeFromTransform(parent, stackTransform) {\n var stack = stackTransform.stack,\n groupby = stackTransform.groupby,\n as = stackTransform.as,\n _stackTransform$offse = stackTransform.offset,\n offset = _stackTransform$offse === void 0 ? 'zero' : _stackTransform$offse;\n var sortFields = [];\n var sortOrder = [];\n if (stackTransform.sort !== undefined) {\n var _iterator2 = _createForOfIteratorHelper(stackTransform.sort),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var sortField = _step2.value;\n sortFields.push(sortField.field);\n sortOrder.push(getFirstDefined(sortField.order, 'ascending'));\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n var sort = {\n field: sortFields,\n order: sortOrder\n };\n var normalizedAs;\n if (isValidAsArray(as)) {\n normalizedAs = as;\n } else if (isString(as)) {\n normalizedAs = [as, \"\".concat(as, \"_end\")];\n } else {\n normalizedAs = [\"\".concat(stackTransform.stack, \"_start\"), \"\".concat(stackTransform.stack, \"_end\")];\n }\n return new StackNode(parent, {\n dimensionFieldDefs: [],\n stackField: stack,\n groupby: groupby,\n offset: offset,\n sort: sort,\n facetby: [],\n as: normalizedAs\n });\n }\n }, {\n key: \"makeFromEncoding\",\n value: function makeFromEncoding(parent, model) {\n var stackProperties = model.stack;\n var encoding = model.encoding;\n if (!stackProperties) {\n return null;\n }\n var groupbyChannels = stackProperties.groupbyChannels,\n fieldChannel = stackProperties.fieldChannel,\n offset = stackProperties.offset,\n impute = stackProperties.impute;\n var dimensionFieldDefs = groupbyChannels.map(function (groupbyChannel) {\n var cDef = encoding[groupbyChannel];\n return getFieldDef(cDef);\n }).filter(function (def) {\n return !!def;\n });\n var stackby = getStackByFields(model);\n var orderDef = model.encoding.order;\n var sort;\n if (isArray(orderDef) || isFieldDef(orderDef)) {\n sort = sortParams(orderDef);\n } else {\n var sortOrder = isOrderOnlyDef(orderDef) ? orderDef.sort : fieldChannel === 'y' ? 'descending' : 'ascending';\n // default = descending by stackFields\n // FIXME is the default here correct for binned fields?\n sort = stackby.reduce(function (s, field) {\n s.field.push(field);\n s.order.push(sortOrder);\n return s;\n }, {\n field: [],\n order: []\n });\n }\n return new StackNode(parent, {\n dimensionFieldDefs: dimensionFieldDefs,\n stackField: model.vgField(fieldChannel),\n facetby: [],\n stackby: stackby,\n sort: sort,\n offset: offset,\n impute: impute,\n as: [model.vgField(fieldChannel, {\n suffix: 'start',\n forAs: true\n }), model.vgField(fieldChannel, {\n suffix: 'end',\n forAs: true\n })]\n });\n }\n }]);\n return StackNode;\n}(DataFlowNode);","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { isAggregateOp } from '../../aggregate';\nimport { vgField } from '../../channeldef';\nimport { duplicate, hash as _hash } from '../../util';\nimport { unique } from '../../util';\nimport { DataFlowNode } from './dataflow';\n/**\n * A class for the window transform nodes\n */\nexport var WindowTransformNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(WindowTransformNode, _DataFlowNode);\n var _super = _createSuper(WindowTransformNode);\n function WindowTransformNode(parent, transform) {\n var _this;\n _classCallCheck(this, WindowTransformNode);\n _this = _super.call(this, parent);\n _this.transform = transform;\n return _this;\n }\n _createClass(WindowTransformNode, [{\n key: \"clone\",\n value: function clone() {\n return new WindowTransformNode(null, duplicate(this.transform));\n }\n }, {\n key: \"addDimensions\",\n value: function addDimensions(fields) {\n this.transform.groupby = unique(this.transform.groupby.concat(fields), function (d) {\n return d;\n });\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n var _this$transform$group, _this$transform$sort;\n var out = new Set();\n ((_this$transform$group = this.transform.groupby) !== null && _this$transform$group !== void 0 ? _this$transform$group : []).forEach(out.add, out);\n ((_this$transform$sort = this.transform.sort) !== null && _this$transform$sort !== void 0 ? _this$transform$sort : []).forEach(function (m) {\n return out.add(m.field);\n });\n this.transform.window.map(function (w) {\n return w.field;\n }).filter(function (f) {\n return f !== undefined;\n }).forEach(out.add, out);\n return out;\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return new Set(this.transform.window.map(this.getDefaultName));\n }\n }, {\n key: \"getDefaultName\",\n value: function getDefaultName(windowFieldDef) {\n var _windowFieldDef$as;\n return (_windowFieldDef$as = windowFieldDef.as) !== null && _windowFieldDef$as !== void 0 ? _windowFieldDef$as : vgField(windowFieldDef);\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return \"WindowTransform \".concat(_hash(this.transform));\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n var fields = [];\n var ops = [];\n var as = [];\n var params = [];\n var _iterator = _createForOfIteratorHelper(this.transform.window),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var window = _step.value;\n ops.push(window.op);\n as.push(this.getDefaultName(window));\n params.push(window.param === undefined ? null : window.param);\n fields.push(window.field === undefined ? null : window.field);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n var frame = this.transform.frame;\n var groupby = this.transform.groupby;\n if (frame && frame[0] === null && frame[1] === null && ops.every(function (o) {\n return isAggregateOp(o);\n })) {\n // when the window does not rely on any particular window ops or frame, switch to a simpler and more efficient joinaggregate\n return _objectSpread({\n type: 'joinaggregate',\n as: as,\n ops: ops,\n fields: fields\n }, groupby !== undefined ? {\n groupby: groupby\n } : {});\n }\n var sortFields = [];\n var sortOrder = [];\n if (this.transform.sort !== undefined) {\n var _iterator2 = _createForOfIteratorHelper(this.transform.sort),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _sortField$order;\n var sortField = _step2.value;\n sortFields.push(sortField.field);\n sortOrder.push((_sortField$order = sortField.order) !== null && _sortField$order !== void 0 ? _sortField$order : 'ascending');\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n var sort = {\n field: sortFields,\n order: sortOrder\n };\n var ignorePeers = this.transform.ignorePeers;\n return _objectSpread(_objectSpread(_objectSpread({\n type: 'window',\n params: params,\n as: as,\n ops: ops,\n fields: fields,\n sort: sort\n }, ignorePeers !== undefined ? {\n ignorePeers: ignorePeers\n } : {}), groupby !== undefined ? {\n groupby: groupby\n } : {}), frame !== undefined ? {\n frame: frame\n } : {});\n }\n }]);\n return WindowTransformNode;\n}(DataFlowNode);","import \"core-js/modules/es.array.flat-map.js\";\nimport \"core-js/modules/es.array.unscopables.flat-map.js\";\nimport \"core-js/modules/es.array.flat.js\";\nimport \"core-js/modules/es.array.unscopables.flat.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { DataSourceType } from '../../data';\nimport { AggregateNode } from './aggregate';\nimport { OutputNode } from './dataflow';\nimport { FacetNode } from './facet';\nimport { JoinAggregateTransformNode } from './joinaggregate';\nimport { FACET_SCALE_PREFIX } from './optimize';\nimport { StackNode } from './stack';\nimport { WindowTransformNode } from './window';\n/**\n * Clones the subtree and ignores output nodes except for the leaves, which are renamed.\n */\nfunction cloneSubtree(facet) {\n function clone(node) {\n if (!(node instanceof FacetNode)) {\n var copy = node.clone();\n if (copy instanceof OutputNode) {\n var newName = FACET_SCALE_PREFIX + copy.getSource();\n copy.setSource(newName);\n facet.model.component.data.outputNodes[newName] = copy;\n } else if (copy instanceof AggregateNode || copy instanceof StackNode || copy instanceof WindowTransformNode || copy instanceof JoinAggregateTransformNode) {\n copy.addDimensions(facet.fields);\n }\n var _iterator = _createForOfIteratorHelper(node.children.flatMap(clone)),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var n = _step.value;\n n.parent = copy;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return [copy];\n }\n return node.children.flatMap(clone);\n }\n return clone;\n}\n/**\n * Move facet nodes down to the next fork or output node. Also pull the main output with the facet node.\n * After moving down the facet node, make a copy of the subtree and make it a child of the main output.\n */\nexport function moveFacetDown(node) {\n if (node instanceof FacetNode) {\n if (node.numChildren() === 1 && !(node.children[0] instanceof OutputNode)) {\n // move down until we hit a fork or output node\n var child = node.children[0];\n if (child instanceof AggregateNode || child instanceof StackNode || child instanceof WindowTransformNode || child instanceof JoinAggregateTransformNode) {\n child.addDimensions(node.fields);\n }\n child.swapWithParent();\n moveFacetDown(node);\n } else {\n // move main to facet\n var facetMain = node.model.component.data.main;\n moveMainDownToFacet(facetMain);\n // replicate the subtree and place it before the facet's main node\n var cloner = cloneSubtree(node);\n var copy = node.children.map(cloner).flat();\n var _iterator2 = _createForOfIteratorHelper(copy),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var c = _step2.value;\n c.parent = facetMain;\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n } else {\n node.children.map(moveFacetDown);\n }\n}\nfunction moveMainDownToFacet(node) {\n if (node instanceof OutputNode && node.type === DataSourceType.Main) {\n if (node.numChildren() === 1) {\n var child = node.children[0];\n if (!(child instanceof FacetNode)) {\n child.swapWithParent();\n moveMainDownToFacet(node);\n }\n }\n }\n}","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport * as log from '../../log';\nimport * as optimizers from './optimizers';\nimport { moveFacetDown } from './subtree';\nexport var FACET_SCALE_PREFIX = 'scale_';\nexport var MAX_OPTIMIZATION_RUNS = 5;\n/**\n * Iterates over a dataflow graph and checks whether all links are consistent.\n */\nexport function checkLinks(nodes) {\n var _iterator = _createForOfIteratorHelper(nodes),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var node = _step.value;\n var _iterator2 = _createForOfIteratorHelper(node.children),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var child = _step2.value;\n if (child.parent !== node) {\n // log.error('Dataflow graph is inconsistent.', node, child);\n return false;\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n if (!checkLinks(node.children)) {\n return false;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return true;\n}\n/**\n * Run the specified optimizer on the provided nodes.\n *\n * @param optimizer The optimizer instance to run.\n * @param nodes A set of nodes to optimize.\n */\nfunction runOptimizer(optimizer, nodes) {\n var modified = false;\n var _iterator3 = _createForOfIteratorHelper(nodes),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var node = _step3.value;\n modified = optimizer.optimize(node) || modified;\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n return modified;\n}\nfunction optimizationDataflowHelper(dataComponent, model, firstPass) {\n var roots = dataComponent.sources;\n var modified = false;\n modified = runOptimizer(new optimizers.RemoveUnnecessaryOutputNodes(), roots) || modified;\n modified = runOptimizer(new optimizers.RemoveUnnecessaryIdentifierNodes(model), roots) || modified;\n // remove source nodes that don't have any children because they also don't have output nodes\n roots = roots.filter(function (r) {\n return r.numChildren() > 0;\n });\n modified = runOptimizer(new optimizers.RemoveUnusedSubtrees(), roots) || modified;\n roots = roots.filter(function (r) {\n return r.numChildren() > 0;\n });\n if (!firstPass) {\n // Only run these optimizations after the optimizer has moved down the facet node.\n // With this change, we can be more aggressive in the optimizations.\n modified = runOptimizer(new optimizers.MoveParseUp(), roots) || modified;\n modified = runOptimizer(new optimizers.MergeBins(model), roots) || modified;\n modified = runOptimizer(new optimizers.RemoveDuplicateTimeUnits(), roots) || modified;\n modified = runOptimizer(new optimizers.MergeParse(), roots) || modified;\n modified = runOptimizer(new optimizers.MergeAggregates(), roots) || modified;\n modified = runOptimizer(new optimizers.MergeTimeUnits(), roots) || modified;\n modified = runOptimizer(new optimizers.MergeIdenticalNodes(), roots) || modified;\n modified = runOptimizer(new optimizers.MergeOutputs(), roots) || modified;\n }\n dataComponent.sources = roots;\n return modified;\n}\n/**\n * Optimizes the dataflow of the passed in data component.\n */\nexport function optimizeDataflow(data, model) {\n // check before optimizations\n checkLinks(data.sources);\n var firstPassCounter = 0;\n var secondPassCounter = 0;\n for (var i = 0; i < MAX_OPTIMIZATION_RUNS; i++) {\n if (!optimizationDataflowHelper(data, model, true)) {\n break;\n }\n firstPassCounter++;\n }\n // move facets down and make a copy of the subtree so that we can have scales at the top level\n data.sources.map(moveFacetDown);\n for (var _i = 0; _i < MAX_OPTIMIZATION_RUNS; _i++) {\n if (!optimizationDataflowHelper(data, model, false)) {\n break;\n }\n secondPassCounter++;\n }\n // check after optimizations\n checkLinks(data.sources);\n if (Math.max(firstPassCounter, secondPassCounter) === MAX_OPTIMIZATION_RUNS) {\n log.warn(\"Maximum optimization runs(\".concat(MAX_OPTIMIZATION_RUNS, \") reached.\"));\n }\n}","import _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\n/**\n * A class that behaves like a SignalRef but lazily generates the signal.\n * The provided generator function should use `Model.getSignalName` to use the correct signal name.\n */\nexport var SignalRefWrapper = /*#__PURE__*/function () {\n function SignalRefWrapper(exprGenerator) {\n _classCallCheck(this, SignalRefWrapper);\n Object.defineProperty(this, 'signal', {\n enumerable: true,\n get: exprGenerator\n });\n }\n _createClass(SignalRefWrapper, null, [{\n key: \"fromName\",\n value: function fromName(rename, signalName) {\n return new SignalRefWrapper(function () {\n return rename(signalName);\n });\n }\n }]);\n return SignalRefWrapper;\n}();","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nvar _excluded = [\"sort\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { isObject, isString } from 'vega-util';\nimport { isAggregateOp, isArgmaxDef, isArgminDef, MULTIDOMAIN_SORT_OP_INDEX as UNIONDOMAIN_SORT_OP_INDEX, SHARED_DOMAIN_OPS } from '../../aggregate';\nimport { isBinning, isBinParams, isParameterExtent } from '../../bin';\nimport { getSecondaryRangeChannel, isScaleChannel } from '../../channel';\nimport { binRequiresRange, getFieldOrDatumDef, hasBandEnd, isDatumDef, isFieldDef, valueExpr, vgField } from '../../channeldef';\nimport { DataSourceType } from '../../data';\nimport * as log from '../../log';\nimport { hasDiscreteDomain, isDomainUnionWith, isParameterDomain } from '../../scale';\nimport { DEFAULT_SORT_OP, isSortArray, isSortByEncoding, isSortField } from '../../sort';\nimport { normalizeTimeUnit } from '../../timeunit';\nimport * as util from '../../util';\nimport { isDataRefDomain, isDataRefUnionedDomain, isFieldRefUnionDomain, isSignalRef } from '../../vega.schema';\nimport { getBinSignalName } from '../data/bin';\nimport { sortArrayIndexField } from '../data/calculate';\nimport { FACET_SCALE_PREFIX } from '../data/optimize';\nimport { isFacetModel, isUnitModel } from '../model';\nimport { SignalRefWrapper } from '../signal';\nimport { makeExplicit, makeImplicit, mergeValuesWithExplicit } from '../split';\nexport function parseScaleDomain(model) {\n if (isUnitModel(model)) {\n parseUnitScaleDomain(model);\n } else {\n parseNonUnitScaleDomain(model);\n }\n}\nfunction parseUnitScaleDomain(model) {\n var localScaleComponents = model.component.scales;\n var _iterator = _createForOfIteratorHelper(util.keys(localScaleComponents)),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var channel = _step.value;\n var domains = parseDomainForChannel(model, channel);\n var localScaleCmpt = localScaleComponents[channel];\n localScaleCmpt.setWithExplicit('domains', domains);\n parseSelectionDomain(model, channel);\n if (model.component.data.isFaceted) {\n // get resolve from closest facet parent as this decides whether we need to refer to cloned subtree or not\n var facetParent = model;\n while (!isFacetModel(facetParent) && facetParent.parent) {\n facetParent = facetParent.parent;\n }\n var resolve = facetParent.component.resolve.scale[channel];\n if (resolve === 'shared') {\n var _iterator2 = _createForOfIteratorHelper(domains.value),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var domain = _step2.value;\n // Replace the scale domain with data output from a cloned subtree after the facet.\n if (isDataRefDomain(domain)) {\n // use data from cloned subtree (which is the same as data but with a prefix added once)\n domain.data = FACET_SCALE_PREFIX + domain.data.replace(FACET_SCALE_PREFIX, '');\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n}\nfunction parseNonUnitScaleDomain(model) {\n var _iterator3 = _createForOfIteratorHelper(model.children),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var child = _step3.value;\n parseScaleDomain(child);\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n var localScaleComponents = model.component.scales;\n var _iterator4 = _createForOfIteratorHelper(util.keys(localScaleComponents)),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var channel = _step4.value;\n var domains = void 0;\n var selectionExtent = null;\n var _iterator5 = _createForOfIteratorHelper(model.children),\n _step5;\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var _child = _step5.value;\n var childComponent = _child.component.scales[channel];\n if (childComponent) {\n if (domains === undefined) {\n domains = childComponent.getWithExplicit('domains');\n } else {\n domains = mergeValuesWithExplicit(domains, childComponent.getWithExplicit('domains'), 'domains', 'scale', domainsTieBreaker);\n }\n var se = childComponent.get('selectionExtent');\n if (selectionExtent && se && selectionExtent.param !== se.param) {\n log.warn(log.message.NEEDS_SAME_SELECTION);\n }\n selectionExtent = se;\n }\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n localScaleComponents[channel].setWithExplicit('domains', domains);\n if (selectionExtent) {\n localScaleComponents[channel].set('selectionExtent', selectionExtent, true);\n }\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n}\n/**\n * Remove unaggregated domain if it is not applicable\n * Add unaggregated domain if domain is not specified and config.scale.useUnaggregatedDomain is true.\n */\nfunction normalizeUnaggregatedDomain(domain, fieldDef, scaleType, scaleConfig) {\n if (domain === 'unaggregated') {\n var _canUseUnaggregatedDo = canUseUnaggregatedDomain(fieldDef, scaleType),\n valid = _canUseUnaggregatedDo.valid,\n reason = _canUseUnaggregatedDo.reason;\n if (!valid) {\n log.warn(reason);\n return undefined;\n }\n } else if (domain === undefined && scaleConfig.useUnaggregatedDomain) {\n // Apply config if domain is not specified.\n var _canUseUnaggregatedDo2 = canUseUnaggregatedDomain(fieldDef, scaleType),\n _valid = _canUseUnaggregatedDo2.valid;\n if (_valid) {\n return 'unaggregated';\n }\n }\n return domain;\n}\nexport function parseDomainForChannel(model, channel) {\n var scaleType = model.getScaleComponent(channel).get('type');\n var encoding = model.encoding;\n var domain = normalizeUnaggregatedDomain(model.scaleDomain(channel), model.typedFieldDef(channel), scaleType, model.config.scale);\n if (domain !== model.scaleDomain(channel)) {\n model.specifiedScales[channel] = _objectSpread(_objectSpread({}, model.specifiedScales[channel]), {}, {\n domain: domain\n });\n }\n // If channel is either X or Y then union them with X2 & Y2 if they exist\n if (channel === 'x' && getFieldOrDatumDef(encoding.x2)) {\n if (getFieldOrDatumDef(encoding.x)) {\n return mergeValuesWithExplicit(parseSingleChannelDomain(scaleType, domain, model, 'x'), parseSingleChannelDomain(scaleType, domain, model, 'x2'), 'domain', 'scale', domainsTieBreaker);\n } else {\n return parseSingleChannelDomain(scaleType, domain, model, 'x2');\n }\n } else if (channel === 'y' && getFieldOrDatumDef(encoding.y2)) {\n if (getFieldOrDatumDef(encoding.y)) {\n return mergeValuesWithExplicit(parseSingleChannelDomain(scaleType, domain, model, 'y'), parseSingleChannelDomain(scaleType, domain, model, 'y2'), 'domain', 'scale', domainsTieBreaker);\n } else {\n return parseSingleChannelDomain(scaleType, domain, model, 'y2');\n }\n }\n return parseSingleChannelDomain(scaleType, domain, model, channel);\n}\nfunction mapDomainToDataSignal(domain, type, timeUnit) {\n return domain.map(function (v) {\n var data = valueExpr(v, {\n timeUnit: timeUnit,\n type: type\n });\n return {\n signal: \"{data: \".concat(data, \"}\")\n };\n });\n}\nfunction convertDomainIfItIsDateTime(domain, type, timeUnit) {\n var _normalizeTimeUnit;\n // explicit value\n var normalizedTimeUnit = (_normalizeTimeUnit = normalizeTimeUnit(timeUnit)) === null || _normalizeTimeUnit === void 0 ? void 0 : _normalizeTimeUnit.unit;\n if (type === 'temporal' || normalizedTimeUnit) {\n return mapDomainToDataSignal(domain, type, normalizedTimeUnit);\n }\n return [domain]; // Date time won't make sense\n}\n\nfunction parseSingleChannelDomain(scaleType, domain, model, channel) {\n var encoding = model.encoding;\n var fieldOrDatumDef = getFieldOrDatumDef(encoding[channel]);\n var type = fieldOrDatumDef.type;\n var timeUnit = fieldOrDatumDef['timeUnit'];\n if (isDomainUnionWith(domain)) {\n var defaultDomain = parseSingleChannelDomain(scaleType, undefined, model, channel);\n var unionWith = convertDomainIfItIsDateTime(domain.unionWith, type, timeUnit);\n return makeExplicit([].concat(_toConsumableArray(unionWith), _toConsumableArray(defaultDomain.value)));\n } else if (isSignalRef(domain)) {\n return makeExplicit([domain]);\n } else if (domain && domain !== 'unaggregated' && !isParameterDomain(domain)) {\n return makeExplicit(convertDomainIfItIsDateTime(domain, type, timeUnit));\n }\n var stack = model.stack;\n if (stack && channel === stack.fieldChannel) {\n if (stack.offset === 'normalize') {\n return makeImplicit([[0, 1]]);\n }\n var data = model.requestDataName(DataSourceType.Main);\n return makeImplicit([{\n data: data,\n field: model.vgField(channel, {\n suffix: 'start'\n })\n }, {\n data: data,\n field: model.vgField(channel, {\n suffix: 'end'\n })\n }]);\n }\n var sort = isScaleChannel(channel) && isFieldDef(fieldOrDatumDef) ? domainSort(model, channel, scaleType) : undefined;\n if (isDatumDef(fieldOrDatumDef)) {\n var d = convertDomainIfItIsDateTime([fieldOrDatumDef.datum], type, timeUnit);\n return makeImplicit(d);\n }\n var fieldDef = fieldOrDatumDef; // now we can be sure it's a fieldDef\n if (domain === 'unaggregated') {\n var _data = model.requestDataName(DataSourceType.Main);\n var field = fieldOrDatumDef.field;\n return makeImplicit([{\n data: _data,\n field: vgField({\n field: field,\n aggregate: 'min'\n })\n }, {\n data: _data,\n field: vgField({\n field: field,\n aggregate: 'max'\n })\n }]);\n } else if (isBinning(fieldDef.bin)) {\n if (hasDiscreteDomain(scaleType)) {\n if (scaleType === 'bin-ordinal') {\n // we can omit the domain as it is inferred from the `bins` property\n return makeImplicit([]);\n }\n // ordinal bin scale takes domain from bin_range, ordered by bin start\n // This is useful for both axis-based scale (x/y) and legend-based scale (other channels).\n return makeImplicit([{\n // If sort by aggregation of a specified sort field, we need to use RAW table,\n // so we can aggregate values for the scale independently from the main aggregation.\n data: util.isBoolean(sort) ? model.requestDataName(DataSourceType.Main) : model.requestDataName(DataSourceType.Raw),\n // Use range if we added it and the scale does not support computing a range as a signal.\n field: model.vgField(channel, binRequiresRange(fieldDef, channel) ? {\n binSuffix: 'range'\n } : {}),\n // we have to use a sort object if sort = true to make the sort correct by bin start\n sort: sort === true || !isObject(sort) ? {\n field: model.vgField(channel, {}),\n op: 'min' // min or max doesn't matter since we sort by the start of the bin range\n } : sort\n }]);\n } else {\n // continuous scales\n var bin = fieldDef.bin;\n if (isBinning(bin)) {\n var binSignal = getBinSignalName(model, fieldDef.field, bin);\n return makeImplicit([new SignalRefWrapper(function () {\n var signal = model.getSignalName(binSignal);\n return \"[\".concat(signal, \".start, \").concat(signal, \".stop]\");\n })]);\n } else {\n return makeImplicit([{\n data: model.requestDataName(DataSourceType.Main),\n field: model.vgField(channel, {})\n }]);\n }\n }\n } else if (fieldDef.timeUnit && util.contains(['time', 'utc'], scaleType) && hasBandEnd(fieldDef, isUnitModel(model) ? model.encoding[getSecondaryRangeChannel(channel)] : undefined, model.markDef, model.config)) {\n var _data2 = model.requestDataName(DataSourceType.Main);\n return makeImplicit([{\n data: _data2,\n field: model.vgField(channel)\n }, {\n data: _data2,\n field: model.vgField(channel, {\n suffix: 'end'\n })\n }]);\n } else if (sort) {\n return makeImplicit([{\n // If sort by aggregation of a specified sort field, we need to use RAW table,\n // so we can aggregate values for the scale independently from the main aggregation.\n data: util.isBoolean(sort) ? model.requestDataName(DataSourceType.Main) : model.requestDataName(DataSourceType.Raw),\n field: model.vgField(channel),\n sort: sort\n }]);\n } else {\n return makeImplicit([{\n data: model.requestDataName(DataSourceType.Main),\n field: model.vgField(channel)\n }]);\n }\n}\nfunction normalizeSortField(sort, isStackedMeasure) {\n var op = sort.op,\n field = sort.field,\n order = sort.order;\n return _objectSpread(_objectSpread({\n // Apply default op\n op: op !== null && op !== void 0 ? op : isStackedMeasure ? 'sum' : DEFAULT_SORT_OP\n }, field ? {\n field: util.replacePathInField(field)\n } : {}), order ? {\n order: order\n } : {});\n}\nfunction parseSelectionDomain(model, channel) {\n var _model$fieldDef;\n var scale = model.component.scales[channel];\n var spec = model.specifiedScales[channel].domain;\n var bin = (_model$fieldDef = model.fieldDef(channel)) === null || _model$fieldDef === void 0 ? void 0 : _model$fieldDef.bin;\n var domain = isParameterDomain(spec) && spec;\n var extent = isBinParams(bin) && isParameterExtent(bin.extent) && bin.extent;\n if (domain || extent) {\n // As scale parsing occurs before selection parsing, we cannot set\n // domainRaw directly. So instead, we store the selectionExtent on\n // the scale component, and then add domainRaw during scale assembly.\n scale.set('selectionExtent', domain !== null && domain !== void 0 ? domain : extent, true);\n }\n}\nexport function domainSort(model, channel, scaleType) {\n if (!hasDiscreteDomain(scaleType)) {\n return undefined;\n }\n // save to cast as the only exception is the geojson type for shape, which would not generate a scale\n var fieldDef = model.fieldDef(channel);\n var sort = fieldDef.sort;\n // if the sort is specified with array, use the derived sort index field\n if (isSortArray(sort)) {\n return {\n op: 'min',\n field: sortArrayIndexField(fieldDef, channel),\n order: 'ascending'\n };\n }\n var stack = model.stack;\n var stackDimensions = stack ? new Set([].concat(_toConsumableArray(stack.groupbyFields), _toConsumableArray(stack.stackBy.map(function (s) {\n return s.fieldDef.field;\n })))) : undefined;\n // Sorted based on an aggregate calculation over a specified sort field (only for ordinal scale)\n if (isSortField(sort)) {\n var isStackedMeasure = stack && !stackDimensions.has(sort.field);\n return normalizeSortField(sort, isStackedMeasure);\n } else if (isSortByEncoding(sort)) {\n var encoding = sort.encoding,\n order = sort.order;\n var fieldDefToSortBy = model.fieldDef(encoding);\n var aggregate = fieldDefToSortBy.aggregate,\n field = fieldDefToSortBy.field;\n var _isStackedMeasure = stack && !stackDimensions.has(field);\n if (isArgminDef(aggregate) || isArgmaxDef(aggregate)) {\n return normalizeSortField({\n field: vgField(fieldDefToSortBy),\n order: order\n }, _isStackedMeasure);\n } else if (isAggregateOp(aggregate) || !aggregate) {\n return normalizeSortField({\n op: aggregate,\n field: field,\n order: order\n }, _isStackedMeasure);\n }\n } else if (sort === 'descending') {\n return {\n op: 'min',\n field: model.vgField(channel),\n order: 'descending'\n };\n } else if (util.contains(['ascending', undefined /* default =ascending*/], sort)) {\n return true;\n }\n // sort == null\n return undefined;\n}\n/**\n * Determine if a scale can use unaggregated domain.\n * @return {Boolean} Returns true if all of the following conditions apply:\n * 1. `scale.domain` is `unaggregated`\n * 2. Aggregation function is not `count` or `sum`\n * 3. The scale is quantitative or time scale.\n */\nexport function canUseUnaggregatedDomain(fieldDef, scaleType) {\n var aggregate = fieldDef.aggregate,\n type = fieldDef.type;\n if (!aggregate) {\n return {\n valid: false,\n reason: log.message.unaggregateDomainHasNoEffectForRawField(fieldDef)\n };\n }\n if (isString(aggregate) && !SHARED_DOMAIN_OPS.has(aggregate)) {\n return {\n valid: false,\n reason: log.message.unaggregateDomainWithNonSharedDomainOp(aggregate)\n };\n }\n if (type === 'quantitative') {\n if (scaleType === 'log') {\n return {\n valid: false,\n reason: log.message.unaggregatedDomainWithLogScale(fieldDef)\n };\n }\n }\n return {\n valid: true\n };\n}\n/**\n * Tie breaker for mergeValuesWithExplicit for domains. We concat the specified values.\n */\nfunction domainsTieBreaker(v1, v2, property, propertyOf) {\n if (v1.explicit && v2.explicit) {\n log.warn(log.message.mergeConflictingDomainProperty(property, propertyOf, v1.value, v2.value));\n }\n // If equal score, concat the domains so that we union them later.\n return {\n explicit: v1.explicit,\n value: [].concat(_toConsumableArray(v1.value), _toConsumableArray(v2.value))\n };\n}\n/**\n * Converts an array of domains to a single Vega scale domain.\n */\nexport function mergeDomains(domains) {\n var uniqueDomains = util.unique(domains.map(function (domain) {\n // ignore sort property when computing the unique domains\n if (isDataRefDomain(domain)) {\n var _s = domain.sort,\n domainWithoutSort = _objectWithoutProperties(domain, _excluded);\n return domainWithoutSort;\n }\n return domain;\n }), util.hash);\n var sorts = util.unique(domains.map(function (d) {\n if (isDataRefDomain(d)) {\n var s = d.sort;\n if (s !== undefined && !util.isBoolean(s)) {\n if ('op' in s && s.op === 'count') {\n // let's make sure that if op is count, we don't use a field\n delete s.field;\n }\n if (s.order === 'ascending') {\n // drop order: ascending as it is the default\n delete s.order;\n }\n }\n return s;\n }\n return undefined;\n }).filter(function (s) {\n return s !== undefined;\n }), util.hash);\n if (uniqueDomains.length === 0) {\n return undefined;\n } else if (uniqueDomains.length === 1) {\n var domain = domains[0];\n if (isDataRefDomain(domain) && sorts.length > 0) {\n var _sort = sorts[0];\n if (sorts.length > 1) {\n log.warn(log.message.MORE_THAN_ONE_SORT);\n // Get sorts with non-default ops\n var filteredSorts = sorts.filter(function (s) {\n return isObject(s) && 'op' in s && s.op !== 'min';\n });\n if (sorts.every(function (s) {\n return isObject(s) && 'op' in s;\n }) && filteredSorts.length === 1) {\n _sort = filteredSorts[0];\n } else {\n _sort = true;\n }\n } else {\n // Simplify domain sort by removing field and op when the field is the same as the domain field.\n if (isObject(_sort) && 'field' in _sort) {\n var sortField = _sort.field;\n if (domain.field === sortField) {\n _sort = _sort.order ? {\n order: _sort.order\n } : true;\n }\n }\n }\n return _objectSpread(_objectSpread({}, domain), {}, {\n sort: _sort\n });\n }\n return domain;\n }\n // only keep sort properties that work with unioned domains\n var unionDomainSorts = util.unique(sorts.map(function (s) {\n if (util.isBoolean(s) || !('op' in s) || isString(s.op) && s.op in UNIONDOMAIN_SORT_OP_INDEX) {\n return s;\n }\n log.warn(log.message.domainSortDropped(s));\n return true;\n }), util.hash);\n var sort;\n if (unionDomainSorts.length === 1) {\n sort = unionDomainSorts[0];\n } else if (unionDomainSorts.length > 1) {\n log.warn(log.message.MORE_THAN_ONE_SORT);\n sort = true;\n }\n var allData = util.unique(domains.map(function (d) {\n if (isDataRefDomain(d)) {\n return d.data;\n }\n return null;\n }), function (x) {\n return x;\n });\n if (allData.length === 1 && allData[0] !== null) {\n // create a union domain of different fields with a single data source\n var _domain = _objectSpread({\n data: allData[0],\n fields: uniqueDomains.map(function (d) {\n return d.field;\n })\n }, sort ? {\n sort: sort\n } : {});\n return _domain;\n }\n return _objectSpread({\n fields: uniqueDomains\n }, sort ? {\n sort: sort\n } : {});\n}\n/**\n * Return a field if a scale uses a single field.\n * Return `undefined` otherwise.\n */\nexport function getFieldFromDomain(domain) {\n if (isDataRefDomain(domain) && isString(domain.field)) {\n return domain.field;\n } else if (isDataRefUnionedDomain(domain)) {\n var field;\n var _iterator6 = _createForOfIteratorHelper(domain.fields),\n _step6;\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var nonUnionDomain = _step6.value;\n if (isDataRefDomain(nonUnionDomain) && isString(nonUnionDomain.field)) {\n if (!field) {\n field = nonUnionDomain.field;\n } else if (field !== nonUnionDomain.field) {\n log.warn(log.message.FACETED_INDEPENDENT_DIFFERENT_SOURCES);\n return field;\n }\n }\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n log.warn(log.message.FACETED_INDEPENDENT_SAME_FIELDS_DIFFERENT_SOURCES);\n return field;\n } else if (isFieldRefUnionDomain(domain)) {\n log.warn(log.message.FACETED_INDEPENDENT_SAME_SOURCE);\n var _field = domain.fields[0];\n return isString(_field) ? _field : undefined;\n }\n return undefined;\n}\nexport function assembleDomain(model, channel) {\n var scaleComponent = model.component.scales[channel];\n var domains = scaleComponent.get('domains').map(function (domain) {\n // Correct references to data as the original domain's data was determined\n // in parseScale, which happens before parseData. Thus the original data\n // reference can be incorrect.\n if (isDataRefDomain(domain)) {\n domain.data = model.lookupDataSource(domain.data);\n }\n return domain;\n });\n // domains is an array that has to be merged into a single vega domain\n return mergeDomains(domains);\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"name\", \"type\", \"selectionExtent\", \"domains\", \"range\", \"reverse\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { isObject } from 'vega-util';\nimport { isXorY } from '../../channel';\nimport { keys } from '../../util';\nimport { isDataRefDomain, isVgRangeStep } from '../../vega.schema';\nimport { isConcatModel, isLayerModel } from '../model';\nimport { assembleSelectionScaleDomain } from '../selection/assemble';\nimport { assembleDomain } from './domain';\nexport function assembleScales(model) {\n if (isLayerModel(model) || isConcatModel(model)) {\n // For concat and layer, include scales of children too\n return model.children.reduce(function (scales, child) {\n return scales.concat(assembleScales(child));\n }, assembleScalesForModel(model));\n } else {\n // For facet, child scales would not be included in the parent's scope.\n // For unit, there is no child.\n return assembleScalesForModel(model);\n }\n}\nexport function assembleScalesForModel(model) {\n return keys(model.component.scales).reduce(function (scales, channel) {\n var scaleComponent = model.component.scales[channel];\n if (scaleComponent.merged) {\n // Skipped merged scales\n return scales;\n }\n var scale = scaleComponent.combine();\n var name = scale.name,\n type = scale.type,\n selectionExtent = scale.selectionExtent,\n _d = scale.domains,\n _r = scale.range,\n reverse = scale.reverse,\n otherScaleProps = _objectWithoutProperties(scale, _excluded);\n var range = assembleScaleRange(scale.range, name, channel, model);\n var domain = assembleDomain(model, channel);\n var domainRaw = selectionExtent ? assembleSelectionScaleDomain(model, selectionExtent, scaleComponent, domain) : null;\n scales.push(_objectSpread(_objectSpread(_objectSpread(_objectSpread({\n name: name,\n type: type\n }, domain ? {\n domain: domain\n } : {}), domainRaw ? {\n domainRaw: domainRaw\n } : {}), {}, {\n range: range\n }, reverse !== undefined ? {\n reverse: reverse\n } : {}), otherScaleProps));\n return scales;\n }, []);\n}\nexport function assembleScaleRange(scaleRange, scaleName, channel, model) {\n // add signals to x/y range\n if (isXorY(channel)) {\n if (isVgRangeStep(scaleRange)) {\n // For width/height step, use a signal created in layout assemble instead of a constant step.\n return {\n step: {\n signal: \"\".concat(scaleName, \"_step\")\n }\n };\n }\n } else if (isObject(scaleRange) && isDataRefDomain(scaleRange)) {\n return _objectSpread(_objectSpread({}, scaleRange), {}, {\n data: model.lookupDataSource(scaleRange.data)\n });\n }\n return scaleRange;\n}","import _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { isArray } from 'vega-util';\nimport { some } from '../../util';\nimport { Split } from '../split';\nexport var ScaleComponent = /*#__PURE__*/function (_Split) {\n _inherits(ScaleComponent, _Split);\n var _super = _createSuper(ScaleComponent);\n function ScaleComponent(name, typeWithExplicit) {\n var _this;\n _classCallCheck(this, ScaleComponent);\n _this = _super.call(this, {},\n // no initial explicit property\n {\n name: name\n } // name as initial implicit property\n );\n\n _this.merged = false;\n _this.setWithExplicit('type', typeWithExplicit);\n return _this;\n }\n /**\n * Whether the scale definitely includes zero in the domain\n */\n _createClass(ScaleComponent, [{\n key: \"domainDefinitelyIncludesZero\",\n value: function domainDefinitelyIncludesZero() {\n if (this.get('zero') !== false) {\n return true;\n }\n return some(this.get('domains'), function (d) {\n return isArray(d) && d.length === 2 && d[0] <= 0 && d[1] >= 0;\n });\n }\n }]);\n return ScaleComponent;\n}(Split);","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { isArray, isNumber, isObject } from 'vega-util';\nimport { isBinning } from '../../bin';\nimport { ANGLE, COLOR, FILL, FILLOPACITY, getOffsetScaleChannel, getSizeChannel, isXorY, isXorYOffset, OPACITY, RADIUS, SCALE_CHANNELS, SHAPE, SIZE, STROKE, STROKEDASH, STROKEOPACITY, STROKEWIDTH, THETA, X, XOFFSET, Y, YOFFSET } from '../../channel';\nimport { getFieldOrDatumDef, isFieldDef, isFieldOrDatumDef } from '../../channeldef';\nimport { getViewConfigDiscreteSize, getViewConfigDiscreteStep } from '../../config';\nimport { DataSourceType } from '../../data';\nimport { channelHasFieldOrDatum } from '../../encoding';\nimport * as log from '../../log';\nimport { channelScalePropertyIncompatability, hasContinuousDomain, hasDiscreteDomain, isContinuousToDiscrete, isExtendedScheme, scaleTypeSupportProperty } from '../../scale';\nimport { getStepFor, isStep } from '../../spec/base';\nimport { isDiscrete } from '../../type';\nimport * as util from '../../util';\nimport { isSignalRef } from '../../vega.schema';\nimport { exprFromSignalRefOrValue, signalOrStringValue } from '../common';\nimport { getBinSignalName } from '../data/bin';\nimport { SignalRefWrapper } from '../signal';\nimport { makeExplicit, makeImplicit } from '../split';\nimport { durationExpr } from '../../timeunit';\nexport var RANGE_PROPERTIES = ['range', 'scheme'];\nexport function parseUnitScaleRange(model) {\n var localScaleComponents = model.component.scales;\n // use SCALE_CHANNELS instead of scales[channel] to ensure that x, y come first!\n var _iterator = _createForOfIteratorHelper(SCALE_CHANNELS),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var channel = _step.value;\n var localScaleCmpt = localScaleComponents[channel];\n if (!localScaleCmpt) {\n continue;\n }\n var rangeWithExplicit = parseRangeForChannel(channel, model);\n localScaleCmpt.setWithExplicit('range', rangeWithExplicit);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n}\nfunction getBinStepSignal(model, channel) {\n var fieldDef = model.fieldDef(channel);\n if (fieldDef !== null && fieldDef !== void 0 && fieldDef.bin) {\n var bin = fieldDef.bin,\n field = fieldDef.field;\n var sizeType = getSizeChannel(channel);\n var sizeSignal = model.getName(sizeType);\n if (isObject(bin) && bin.binned && bin.step !== undefined) {\n return new SignalRefWrapper(function () {\n var scaleName = model.scaleName(channel);\n var binCount = \"(domain(\\\"\".concat(scaleName, \"\\\")[1] - domain(\\\"\").concat(scaleName, \"\\\")[0]) / \").concat(bin.step);\n return \"\".concat(model.getSignalName(sizeSignal), \" / (\").concat(binCount, \")\");\n });\n } else if (isBinning(bin)) {\n var binSignal = getBinSignalName(model, field, bin);\n // TODO: extract this to be range step signal\n return new SignalRefWrapper(function () {\n var updatedName = model.getSignalName(binSignal);\n var binCount = \"(\".concat(updatedName, \".stop - \").concat(updatedName, \".start) / \").concat(updatedName, \".step\");\n return \"\".concat(model.getSignalName(sizeSignal), \" / (\").concat(binCount, \")\");\n });\n }\n }\n return undefined;\n}\n/**\n * Return mixins that includes one of the Vega range types (explicit range, range.step, range.scheme).\n */\nexport function parseRangeForChannel(channel, model) {\n var specifiedScale = model.specifiedScales[channel];\n var size = model.size;\n var mergedScaleCmpt = model.getScaleComponent(channel);\n var scaleType = mergedScaleCmpt.get('type');\n // Check if any of the range properties is specified.\n // If so, check if it is compatible and make sure that we only output one of the properties\n var _iterator2 = _createForOfIteratorHelper(RANGE_PROPERTIES),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var property = _step2.value;\n if (specifiedScale[property] !== undefined) {\n var supportedByScaleType = scaleTypeSupportProperty(scaleType, property);\n var channelIncompatability = channelScalePropertyIncompatability(channel, property);\n if (!supportedByScaleType) {\n log.warn(log.message.scalePropertyNotWorkWithScaleType(scaleType, property, channel));\n } else if (channelIncompatability) {\n // channel\n log.warn(channelIncompatability);\n } else {\n switch (property) {\n case 'range':\n {\n var range = specifiedScale.range;\n if (isArray(range)) {\n if (isXorY(channel)) {\n return makeExplicit(range.map(function (v) {\n if (v === 'width' || v === 'height') {\n // get signal for width/height\n // Just like default range logic below, we use SignalRefWrapper to account for potential merges and renames.\n var sizeSignal = model.getName(v);\n var getSignalName = model.getSignalName.bind(model);\n return SignalRefWrapper.fromName(getSignalName, sizeSignal);\n }\n return v;\n }));\n }\n } else if (isObject(range)) {\n return makeExplicit({\n data: model.requestDataName(DataSourceType.Main),\n field: range.field,\n sort: {\n op: 'min',\n field: model.vgField(channel)\n }\n });\n }\n return makeExplicit(range);\n }\n case 'scheme':\n return makeExplicit(parseScheme(specifiedScale[property]));\n }\n }\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n var sizeChannel = channel === X || channel === 'xOffset' ? 'width' : 'height';\n var sizeValue = size[sizeChannel];\n if (isStep(sizeValue)) {\n if (isXorY(channel)) {\n if (hasDiscreteDomain(scaleType)) {\n var step = getPositionStep(sizeValue, model, channel);\n // Need to be explicit so layer with step wins over layer without step\n if (step) {\n return makeExplicit({\n step: step\n });\n }\n } else {\n log.warn(log.message.stepDropped(sizeChannel));\n }\n } else if (isXorYOffset(channel)) {\n var positionChannel = channel === XOFFSET ? 'x' : 'y';\n var positionScaleCmpt = model.getScaleComponent(positionChannel);\n var positionScaleType = positionScaleCmpt.get('type');\n if (positionScaleType === 'band') {\n var _step3 = getOffsetStep(sizeValue, scaleType);\n if (_step3) {\n return makeExplicit(_step3);\n }\n }\n }\n }\n var rangeMin = specifiedScale.rangeMin,\n rangeMax = specifiedScale.rangeMax;\n var d = defaultRange(channel, model);\n if ((rangeMin !== undefined || rangeMax !== undefined) &&\n // it's ok to check just rangeMin's compatibility since rangeMin/rangeMax are the same\n scaleTypeSupportProperty(scaleType, 'rangeMin') && isArray(d) && d.length === 2) {\n return makeExplicit([rangeMin !== null && rangeMin !== void 0 ? rangeMin : d[0], rangeMax !== null && rangeMax !== void 0 ? rangeMax : d[1]]);\n }\n return makeImplicit(d);\n}\nfunction parseScheme(scheme) {\n if (isExtendedScheme(scheme)) {\n return _objectSpread({\n scheme: scheme.name\n }, util.omit(scheme, ['name']));\n }\n return {\n scheme: scheme\n };\n}\nfunction defaultRange(channel, model) {\n var size = model.size,\n config = model.config,\n mark = model.mark,\n encoding = model.encoding;\n var getSignalName = model.getSignalName.bind(model);\n var _getFieldOrDatumDef = getFieldOrDatumDef(encoding[channel]),\n type = _getFieldOrDatumDef.type;\n var mergedScaleCmpt = model.getScaleComponent(channel);\n var scaleType = mergedScaleCmpt.get('type');\n var _model$specifiedScale = model.specifiedScales[channel],\n domain = _model$specifiedScale.domain,\n domainMid = _model$specifiedScale.domainMid;\n switch (channel) {\n case X:\n case Y:\n {\n // If there is no explicit width/height for discrete x/y scales\n if (util.contains(['point', 'band'], scaleType)) {\n var positionSize = getDiscretePositionSize(channel, size, config.view);\n if (isStep(positionSize)) {\n var step = getPositionStep(positionSize, model, channel);\n return {\n step: step\n };\n }\n }\n // If step is null, use zero to width or height.\n // Note that we use SignalRefWrapper to account for potential merges and renames.\n var sizeType = getSizeChannel(channel);\n var sizeSignal = model.getName(sizeType);\n if (channel === Y && hasContinuousDomain(scaleType)) {\n // For y continuous scale, we have to start from the height as the bottom part has the max value.\n return [SignalRefWrapper.fromName(getSignalName, sizeSignal), 0];\n } else {\n return [0, SignalRefWrapper.fromName(getSignalName, sizeSignal)];\n }\n }\n case XOFFSET:\n case YOFFSET:\n return getOffsetRange(channel, model, scaleType);\n case SIZE:\n {\n // TODO: support custom rangeMin, rangeMax\n var zero = model.component.scales[channel].get('zero');\n var rangeMin = sizeRangeMin(mark, zero, config);\n var rangeMax = sizeRangeMax(mark, size, model, config);\n if (isContinuousToDiscrete(scaleType)) {\n return interpolateRange(rangeMin, rangeMax, defaultContinuousToDiscreteCount(scaleType, config, domain, channel));\n } else {\n return [rangeMin, rangeMax];\n }\n }\n case THETA:\n return [0, Math.PI * 2];\n case ANGLE:\n // TODO: add config.scale.min/maxAngleDegree (for point and text) and config.scale.min/maxAngleRadian (for arc) once we add arc marks.\n // (It's weird to add just config.scale.min/maxAngleDegree for now)\n return [0, 360];\n case RADIUS:\n {\n // max radius = half od min(width,height)\n return [0, new SignalRefWrapper(function () {\n var w = model.getSignalName('width');\n var h = model.getSignalName('height');\n return \"min(\".concat(w, \",\").concat(h, \")/2\");\n })];\n }\n case STROKEWIDTH:\n // TODO: support custom rangeMin, rangeMax\n return [config.scale.minStrokeWidth, config.scale.maxStrokeWidth];\n case STROKEDASH:\n return [\n // TODO: add this to Vega's config.range?\n [1, 0], [4, 2], [2, 1], [1, 1], [1, 2, 4, 2]];\n case SHAPE:\n return 'symbol';\n case COLOR:\n case FILL:\n case STROKE:\n if (scaleType === 'ordinal') {\n // Only nominal data uses ordinal scale by default\n return type === 'nominal' ? 'category' : 'ordinal';\n } else {\n if (domainMid !== undefined) {\n return 'diverging';\n } else {\n return mark === 'rect' || mark === 'geoshape' ? 'heatmap' : 'ramp';\n }\n }\n case OPACITY:\n case FILLOPACITY:\n case STROKEOPACITY:\n // TODO: support custom rangeMin, rangeMax\n return [config.scale.minOpacity, config.scale.maxOpacity];\n }\n}\nfunction getPositionStep(step, model, channel) {\n var encoding = model.encoding;\n var mergedScaleCmpt = model.getScaleComponent(channel);\n var offsetChannel = getOffsetScaleChannel(channel);\n var offsetDef = encoding[offsetChannel];\n var stepFor = getStepFor({\n step: step,\n offsetIsDiscrete: isFieldOrDatumDef(offsetDef) && isDiscrete(offsetDef.type)\n });\n if (stepFor === 'offset' && channelHasFieldOrDatum(encoding, offsetChannel)) {\n var _mergedScaleCmpt$get;\n var offsetScaleCmpt = model.getScaleComponent(offsetChannel);\n var offsetScaleName = model.scaleName(offsetChannel);\n var stepCount = \"domain('\".concat(offsetScaleName, \"').length\");\n if (offsetScaleCmpt.get('type') === 'band') {\n var _ref, _offsetScaleCmpt$get, _ref2, _offsetScaleCmpt$get2;\n var offsetPaddingInner = (_ref = (_offsetScaleCmpt$get = offsetScaleCmpt.get('paddingInner')) !== null && _offsetScaleCmpt$get !== void 0 ? _offsetScaleCmpt$get : offsetScaleCmpt.get('padding')) !== null && _ref !== void 0 ? _ref : 0;\n var offsetPaddingOuter = (_ref2 = (_offsetScaleCmpt$get2 = offsetScaleCmpt.get('paddingOuter')) !== null && _offsetScaleCmpt$get2 !== void 0 ? _offsetScaleCmpt$get2 : offsetScaleCmpt.get('padding')) !== null && _ref2 !== void 0 ? _ref2 : 0;\n stepCount = \"bandspace(\".concat(stepCount, \", \").concat(offsetPaddingInner, \", \").concat(offsetPaddingOuter, \")\");\n }\n var paddingInner = (_mergedScaleCmpt$get = mergedScaleCmpt.get('paddingInner')) !== null && _mergedScaleCmpt$get !== void 0 ? _mergedScaleCmpt$get : mergedScaleCmpt.get('padding');\n return {\n signal: \"\".concat(step.step, \" * \").concat(stepCount, \" / (1-\").concat(exprFromSignalRefOrValue(paddingInner), \")\")\n };\n } else {\n return step.step;\n }\n}\nfunction getOffsetStep(step, offsetScaleType) {\n var stepFor = getStepFor({\n step: step,\n offsetIsDiscrete: hasDiscreteDomain(offsetScaleType)\n });\n if (stepFor === 'offset') {\n return {\n step: step.step\n };\n }\n return undefined;\n}\nfunction getOffsetRange(channel, model, offsetScaleType) {\n var positionChannel = channel === XOFFSET ? 'x' : 'y';\n var positionScaleCmpt = model.getScaleComponent(positionChannel);\n var positionScaleType = positionScaleCmpt.get('type');\n var positionScaleName = model.scaleName(positionChannel);\n if (positionScaleType === 'band') {\n var size = getDiscretePositionSize(positionChannel, model.size, model.config.view);\n if (isStep(size)) {\n // step is for offset\n var step = getOffsetStep(size, offsetScaleType);\n if (step) {\n return step;\n }\n }\n // otherwise use the position\n return [0, {\n signal: \"bandwidth('\".concat(positionScaleName, \"')\")\n }];\n } else {\n // continuous scale\n var positionDef = model.encoding[positionChannel];\n if (isFieldDef(positionDef) && positionDef.timeUnit) {\n var duration = durationExpr(positionDef.timeUnit, function (expr) {\n return \"scale('\".concat(positionScaleName, \"', \").concat(expr, \")\");\n });\n var padding = model.config.scale.bandWithNestedOffsetPaddingInner;\n if (padding) {\n var startRatio = isSignalRef(padding) ? \"\".concat(padding.signal, \"/2\") : \"\".concat(padding / 2);\n var endRatio = isSignalRef(padding) ? \"(1 - \".concat(padding.signal, \"/2)\") : \"\".concat(1 - padding / 2);\n return [{\n signal: \"\".concat(startRatio, \" * (\").concat(duration, \")\")\n }, {\n signal: \"\".concat(endRatio, \" * (\").concat(duration, \")\")\n }];\n }\n return [0, {\n signal: duration\n }];\n }\n return util.never(\"Cannot use \".concat(channel, \" scale if \").concat(positionChannel, \" scale is not discrete.\"));\n }\n}\nfunction getDiscretePositionSize(channel, size, viewConfig) {\n var sizeChannel = channel === X ? 'width' : 'height';\n var sizeValue = size[sizeChannel];\n if (sizeValue) {\n return sizeValue;\n }\n return getViewConfigDiscreteSize(viewConfig, sizeChannel);\n}\nexport function defaultContinuousToDiscreteCount(scaleType, config, domain, channel) {\n switch (scaleType) {\n case 'quantile':\n return config.scale.quantileCount;\n case 'quantize':\n return config.scale.quantizeCount;\n case 'threshold':\n if (domain !== undefined && isArray(domain)) {\n return domain.length + 1;\n } else {\n log.warn(log.message.domainRequiredForThresholdScale(channel));\n // default threshold boundaries for threshold scale since domain has cardinality of 2\n return 3;\n }\n }\n}\n/**\n * Returns the linear interpolation of the range according to the cardinality\n *\n * @param rangeMin start of the range\n * @param rangeMax end of the range\n * @param cardinality number of values in the output range\n */\nexport function interpolateRange(rangeMin, rangeMax, cardinality) {\n // always return a signal since it's better to compute the sequence in Vega later\n var f = function f() {\n var rMax = signalOrStringValue(rangeMax);\n var rMin = signalOrStringValue(rangeMin);\n var step = \"(\".concat(rMax, \" - \").concat(rMin, \") / (\").concat(cardinality, \" - 1)\");\n return \"sequence(\".concat(rMin, \", \").concat(rMax, \" + \").concat(step, \", \").concat(step, \")\");\n };\n if (isSignalRef(rangeMax)) {\n return new SignalRefWrapper(f);\n } else {\n return {\n signal: f()\n };\n }\n}\nfunction sizeRangeMin(mark, zero, config) {\n if (zero) {\n if (isSignalRef(zero)) {\n return {\n signal: \"\".concat(zero.signal, \" ? 0 : \").concat(sizeRangeMin(mark, false, config))\n };\n } else {\n return 0;\n }\n }\n switch (mark) {\n case 'bar':\n case 'tick':\n return config.scale.minBandSize;\n case 'line':\n case 'trail':\n case 'rule':\n return config.scale.minStrokeWidth;\n case 'text':\n return config.scale.minFontSize;\n case 'point':\n case 'square':\n case 'circle':\n return config.scale.minSize;\n }\n /* istanbul ignore next: should never reach here */\n // sizeRangeMin not implemented for the mark\n throw new Error(log.message.incompatibleChannel('size', mark));\n}\nexport var MAX_SIZE_RANGE_STEP_RATIO = 0.95;\nfunction sizeRangeMax(mark, size, model, config) {\n var xyStepSignals = {\n x: getBinStepSignal(model, 'x'),\n y: getBinStepSignal(model, 'y')\n };\n switch (mark) {\n case 'bar':\n case 'tick':\n {\n if (config.scale.maxBandSize !== undefined) {\n return config.scale.maxBandSize;\n }\n var min = minXYStep(size, xyStepSignals, config.view);\n if (isNumber(min)) {\n return min - 1;\n } else {\n return new SignalRefWrapper(function () {\n return \"\".concat(min.signal, \" - 1\");\n });\n }\n }\n case 'line':\n case 'trail':\n case 'rule':\n return config.scale.maxStrokeWidth;\n case 'text':\n return config.scale.maxFontSize;\n case 'point':\n case 'square':\n case 'circle':\n {\n if (config.scale.maxSize) {\n return config.scale.maxSize;\n }\n var pointStep = minXYStep(size, xyStepSignals, config.view);\n if (isNumber(pointStep)) {\n return Math.pow(MAX_SIZE_RANGE_STEP_RATIO * pointStep, 2);\n } else {\n return new SignalRefWrapper(function () {\n return \"pow(\".concat(MAX_SIZE_RANGE_STEP_RATIO, \" * \").concat(pointStep.signal, \", 2)\");\n });\n }\n }\n }\n /* istanbul ignore next: should never reach here */\n // sizeRangeMax not implemented for the mark\n throw new Error(log.message.incompatibleChannel('size', mark));\n}\n/**\n * @returns {number} Range step of x or y or minimum between the two if both are ordinal scale.\n */\nfunction minXYStep(size, xyStepSignals, viewConfig) {\n var widthStep = isStep(size.width) ? size.width.step : getViewConfigDiscreteStep(viewConfig, 'width');\n var heightStep = isStep(size.height) ? size.height.step : getViewConfigDiscreteStep(viewConfig, 'height');\n if (xyStepSignals.x || xyStepSignals.y) {\n return new SignalRefWrapper(function () {\n var exprs = [xyStepSignals.x ? xyStepSignals.x.signal : widthStep, xyStepSignals.y ? xyStepSignals.y.signal : heightStep];\n return \"min(\".concat(exprs.join(', '), \")\");\n });\n }\n return Math.min(widthStep, heightStep);\n}","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { isArray } from 'vega-util';\nimport { isBinned, isBinning, isBinParams } from '../../bin';\nimport { COLOR, FILL, getSecondaryRangeChannel, isXorY, isXorYOffset, POLAR_POSITION_SCALE_CHANNELS, POSITION_SCALE_CHANNELS, STROKE } from '../../channel';\nimport { getFieldDef, getFieldOrDatumDef, isFieldDef, valueExpr } from '../../channeldef';\nimport { isDateTime } from '../../datetime';\nimport { channelHasNestedOffsetScale } from '../../encoding';\nimport * as log from '../../log';\nimport { channelScalePropertyIncompatability, hasContinuousDomain, isContinuousToContinuous, isContinuousToDiscrete, ScaleType, scaleTypeSupportProperty } from '../../scale';\nimport * as util from '../../util';\nimport { contains, getFirstDefined, keys } from '../../util';\nimport { isSignalRef } from '../../vega.schema';\nimport { getBinSignalName } from '../data/bin';\nimport { isUnitModel } from '../model';\nimport { SignalRefWrapper } from '../signal';\nimport { mergeValuesWithExplicit, tieBreakByComparing } from '../split';\nimport { parseUnitScaleRange } from './range';\nexport function parseScaleProperty(model, property) {\n if (isUnitModel(model)) {\n parseUnitScaleProperty(model, property);\n } else {\n parseNonUnitScaleProperty(model, property);\n }\n}\nfunction parseUnitScaleProperty(model, property) {\n var localScaleComponents = model.component.scales;\n var config = model.config,\n encoding = model.encoding,\n markDef = model.markDef,\n specifiedScales = model.specifiedScales;\n var _iterator = _createForOfIteratorHelper(keys(localScaleComponents)),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var channel = _step.value;\n var specifiedScale = specifiedScales[channel];\n var localScaleCmpt = localScaleComponents[channel];\n var mergedScaleCmpt = model.getScaleComponent(channel);\n var fieldOrDatumDef = getFieldOrDatumDef(encoding[channel]);\n var specifiedValue = specifiedScale[property];\n var scaleType = mergedScaleCmpt.get('type');\n var scalePadding = mergedScaleCmpt.get('padding');\n var scalePaddingInner = mergedScaleCmpt.get('paddingInner');\n var supportedByScaleType = scaleTypeSupportProperty(scaleType, property);\n var channelIncompatability = channelScalePropertyIncompatability(channel, property);\n if (specifiedValue !== undefined) {\n // If there is a specified value, check if it is compatible with scale type and channel\n if (!supportedByScaleType) {\n log.warn(log.message.scalePropertyNotWorkWithScaleType(scaleType, property, channel));\n } else if (channelIncompatability) {\n // channel\n log.warn(channelIncompatability);\n }\n }\n if (supportedByScaleType && channelIncompatability === undefined) {\n if (specifiedValue !== undefined) {\n var timeUnit = fieldOrDatumDef['timeUnit'];\n var type = fieldOrDatumDef.type;\n switch (property) {\n // domainMax/Min to signal if the value is a datetime object\n case 'domainMax':\n case 'domainMin':\n if (isDateTime(specifiedScale[property]) || type === 'temporal' || timeUnit) {\n localScaleCmpt.set(property, {\n signal: valueExpr(specifiedScale[property], {\n type: type,\n timeUnit: timeUnit\n })\n }, true);\n } else {\n localScaleCmpt.set(property, specifiedScale[property], true);\n }\n break;\n default:\n localScaleCmpt.copyKeyFromObject(property, specifiedScale);\n }\n } else {\n var value = property in scaleRules ? scaleRules[property]({\n model: model,\n channel: channel,\n fieldOrDatumDef: fieldOrDatumDef,\n scaleType: scaleType,\n scalePadding: scalePadding,\n scalePaddingInner: scalePaddingInner,\n domain: specifiedScale.domain,\n domainMin: specifiedScale.domainMin,\n domainMax: specifiedScale.domainMax,\n markDef: markDef,\n config: config,\n hasNestedOffsetScale: channelHasNestedOffsetScale(encoding, channel),\n hasSecondaryRangeChannel: !!encoding[getSecondaryRangeChannel(channel)]\n }) : config.scale[property];\n if (value !== undefined) {\n localScaleCmpt.set(property, value, false);\n }\n }\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n}\nexport var scaleRules = {\n bins: function bins(_ref) {\n var model = _ref.model,\n fieldOrDatumDef = _ref.fieldOrDatumDef;\n return isFieldDef(fieldOrDatumDef) ? _bins(model, fieldOrDatumDef) : undefined;\n },\n interpolate: function interpolate(_ref2) {\n var channel = _ref2.channel,\n fieldOrDatumDef = _ref2.fieldOrDatumDef;\n return _interpolate(channel, fieldOrDatumDef.type);\n },\n nice: function nice(_ref3) {\n var scaleType = _ref3.scaleType,\n channel = _ref3.channel,\n domain = _ref3.domain,\n domainMin = _ref3.domainMin,\n domainMax = _ref3.domainMax,\n fieldOrDatumDef = _ref3.fieldOrDatumDef;\n return _nice(scaleType, channel, domain, domainMin, domainMax, fieldOrDatumDef);\n },\n padding: function padding(_ref4) {\n var channel = _ref4.channel,\n scaleType = _ref4.scaleType,\n fieldOrDatumDef = _ref4.fieldOrDatumDef,\n markDef = _ref4.markDef,\n config = _ref4.config;\n return _padding(channel, scaleType, config.scale, fieldOrDatumDef, markDef, config.bar);\n },\n paddingInner: function paddingInner(_ref5) {\n var scalePadding = _ref5.scalePadding,\n channel = _ref5.channel,\n markDef = _ref5.markDef,\n scaleType = _ref5.scaleType,\n config = _ref5.config,\n hasNestedOffsetScale = _ref5.hasNestedOffsetScale;\n return _paddingInner(scalePadding, channel, markDef.type, scaleType, config.scale, hasNestedOffsetScale);\n },\n paddingOuter: function paddingOuter(_ref6) {\n var scalePadding = _ref6.scalePadding,\n channel = _ref6.channel,\n scaleType = _ref6.scaleType,\n scalePaddingInner = _ref6.scalePaddingInner,\n config = _ref6.config,\n hasNestedOffsetScale = _ref6.hasNestedOffsetScale;\n return _paddingOuter(scalePadding, channel, scaleType, scalePaddingInner, config.scale, hasNestedOffsetScale);\n },\n reverse: function reverse(_ref7) {\n var fieldOrDatumDef = _ref7.fieldOrDatumDef,\n scaleType = _ref7.scaleType,\n channel = _ref7.channel,\n config = _ref7.config;\n var sort = isFieldDef(fieldOrDatumDef) ? fieldOrDatumDef.sort : undefined;\n return _reverse(scaleType, sort, channel, config.scale);\n },\n zero: function zero(_ref8) {\n var channel = _ref8.channel,\n fieldOrDatumDef = _ref8.fieldOrDatumDef,\n domain = _ref8.domain,\n markDef = _ref8.markDef,\n scaleType = _ref8.scaleType,\n config = _ref8.config,\n hasSecondaryRangeChannel = _ref8.hasSecondaryRangeChannel;\n return _zero(channel, fieldOrDatumDef, domain, markDef, scaleType, config.scale, hasSecondaryRangeChannel);\n }\n};\n// This method is here rather than in range.ts to avoid circular dependency.\nexport function parseScaleRange(model) {\n if (isUnitModel(model)) {\n parseUnitScaleRange(model);\n } else {\n parseNonUnitScaleProperty(model, 'range');\n }\n}\nexport function parseNonUnitScaleProperty(model, property) {\n var localScaleComponents = model.component.scales;\n var _iterator2 = _createForOfIteratorHelper(model.children),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var child = _step2.value;\n if (property === 'range') {\n parseScaleRange(child);\n } else {\n parseScaleProperty(child, property);\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n var _iterator3 = _createForOfIteratorHelper(keys(localScaleComponents)),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var channel = _step3.value;\n var valueWithExplicit = void 0;\n var _iterator4 = _createForOfIteratorHelper(model.children),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var _child = _step4.value;\n var childComponent = _child.component.scales[channel];\n if (childComponent) {\n var childValueWithExplicit = childComponent.getWithExplicit(property);\n valueWithExplicit = mergeValuesWithExplicit(valueWithExplicit, childValueWithExplicit, property, 'scale', tieBreakByComparing(function (v1, v2) {\n switch (property) {\n case 'range':\n // For step, prefer larger step\n if (v1.step && v2.step) {\n return v1.step - v2.step;\n }\n return 0;\n // TODO: precedence rule for other properties\n }\n\n return 0;\n }));\n }\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n localScaleComponents[channel].setWithExplicit(property, valueWithExplicit);\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n}\nfunction _bins(model, fieldDef) {\n var bin = fieldDef.bin;\n if (isBinning(bin)) {\n var binSignal = getBinSignalName(model, fieldDef.field, bin);\n return new SignalRefWrapper(function () {\n return model.getSignalName(binSignal);\n });\n } else if (isBinned(bin) && isBinParams(bin) && bin.step !== undefined) {\n // start and stop will be determined from the scale domain\n return {\n step: bin.step\n };\n }\n return undefined;\n}\nexport { _bins as bins };\nfunction _interpolate(channel, type) {\n if (contains([COLOR, FILL, STROKE], channel) && type !== 'nominal') {\n return 'hcl';\n }\n return undefined;\n}\nexport { _interpolate as interpolate };\nfunction _nice(scaleType, channel, specifiedDomain, domainMin, domainMax, fieldOrDatumDef) {\n var _getFieldDef;\n if ((_getFieldDef = getFieldDef(fieldOrDatumDef)) !== null && _getFieldDef !== void 0 && _getFieldDef.bin || isArray(specifiedDomain) || domainMax != null || domainMin != null || util.contains([ScaleType.TIME, ScaleType.UTC], scaleType)) {\n return undefined;\n }\n return isXorY(channel) ? true : undefined;\n}\nexport { _nice as nice };\nfunction _padding(channel, scaleType, scaleConfig, fieldOrDatumDef, markDef, barConfig) {\n if (isXorY(channel)) {\n if (isContinuousToContinuous(scaleType)) {\n if (scaleConfig.continuousPadding !== undefined) {\n return scaleConfig.continuousPadding;\n }\n var type = markDef.type,\n orient = markDef.orient;\n if (type === 'bar' && !(isFieldDef(fieldOrDatumDef) && (fieldOrDatumDef.bin || fieldOrDatumDef.timeUnit))) {\n if (orient === 'vertical' && channel === 'x' || orient === 'horizontal' && channel === 'y') {\n return barConfig.continuousBandSize;\n }\n }\n }\n if (scaleType === ScaleType.POINT) {\n return scaleConfig.pointPadding;\n }\n }\n return undefined;\n}\nexport { _padding as padding };\nfunction _paddingInner(paddingValue, channel, mark, scaleType, scaleConfig) {\n var hasNestedOffsetScale = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;\n if (paddingValue !== undefined) {\n // If user has already manually specified \"padding\", no need to add default paddingInner.\n return undefined;\n }\n if (isXorY(channel)) {\n // Padding is only set for X and Y by default.\n // Basically it doesn't make sense to add padding for color and size.\n // paddingOuter would only be called if it's a band scale, just return the default for bandScale.\n var bandPaddingInner = scaleConfig.bandPaddingInner,\n barBandPaddingInner = scaleConfig.barBandPaddingInner,\n rectBandPaddingInner = scaleConfig.rectBandPaddingInner,\n bandWithNestedOffsetPaddingInner = scaleConfig.bandWithNestedOffsetPaddingInner;\n if (hasNestedOffsetScale) {\n return bandWithNestedOffsetPaddingInner;\n }\n return getFirstDefined(bandPaddingInner, mark === 'bar' ? barBandPaddingInner : rectBandPaddingInner);\n } else if (isXorYOffset(channel)) {\n if (scaleType === ScaleType.BAND) {\n return scaleConfig.offsetBandPaddingInner;\n }\n }\n return undefined;\n}\nexport { _paddingInner as paddingInner };\nfunction _paddingOuter(paddingValue, channel, scaleType, paddingInnerValue, scaleConfig) {\n var hasNestedOffsetScale = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;\n if (paddingValue !== undefined) {\n // If user has already manually specified \"padding\", no need to add default paddingOuter.\n return undefined;\n }\n if (isXorY(channel)) {\n var bandPaddingOuter = scaleConfig.bandPaddingOuter,\n bandWithNestedOffsetPaddingOuter = scaleConfig.bandWithNestedOffsetPaddingOuter;\n if (hasNestedOffsetScale) {\n return bandWithNestedOffsetPaddingOuter;\n }\n // Padding is only set for X and Y by default.\n // Basically it doesn't make sense to add padding for color and size.\n if (scaleType === ScaleType.BAND) {\n return getFirstDefined(bandPaddingOuter,\n /* By default, paddingOuter is paddingInner / 2. The reason is that\n size (width/height) = step * (cardinality - paddingInner + 2 * paddingOuter).\n and we want the width/height to be integer by default.\n Note that step (by default) and cardinality are integers.) */\n isSignalRef(paddingInnerValue) ? {\n signal: \"\".concat(paddingInnerValue.signal, \"/2\")\n } : paddingInnerValue / 2);\n }\n } else if (isXorYOffset(channel)) {\n if (scaleType === ScaleType.POINT) {\n return 0.5; // so the point positions align with centers of band scales.\n } else if (scaleType === ScaleType.BAND) {\n return scaleConfig.offsetBandPaddingOuter;\n }\n }\n return undefined;\n}\nexport { _paddingOuter as paddingOuter };\nfunction _reverse(scaleType, sort, channel, scaleConfig) {\n if (channel === 'x' && scaleConfig.xReverse !== undefined) {\n if (hasContinuousDomain(scaleType) && sort === 'descending') {\n if (isSignalRef(scaleConfig.xReverse)) {\n return {\n signal: \"!\".concat(scaleConfig.xReverse.signal)\n };\n } else {\n return !scaleConfig.xReverse;\n }\n }\n return scaleConfig.xReverse;\n }\n if (hasContinuousDomain(scaleType) && sort === 'descending') {\n // For continuous domain scales, Vega does not support domain sort.\n // Thus, we reverse range instead if sort is descending\n return true;\n }\n return undefined;\n}\nexport { _reverse as reverse };\nfunction _zero(channel, fieldDef, specifiedDomain, markDef, scaleType, scaleConfig, hasSecondaryRangeChannel) {\n // If users explicitly provide a domain, we should not augment zero as that will be unexpected.\n var hasCustomDomain = !!specifiedDomain && specifiedDomain !== 'unaggregated';\n if (hasCustomDomain) {\n if (hasContinuousDomain(scaleType)) {\n if (isArray(specifiedDomain)) {\n var first = specifiedDomain[0];\n var last = specifiedDomain[specifiedDomain.length - 1];\n if (first <= 0 && last >= 0) {\n // if the domain includes zero, make zero remains true\n return true;\n }\n }\n return false;\n }\n }\n // If there is no custom domain, return configZero value (=`true` as default) only for the following cases:\n // 1) using quantitative field with size\n // While this can be either ratio or interval fields, our assumption is that\n // ratio are more common. However, if the scaleType is discretizing scale, we want to return\n // false so that range doesn't start at zero\n if (channel === 'size' && fieldDef.type === 'quantitative' && !isContinuousToDiscrete(scaleType)) {\n return true;\n }\n // 2) non-binned, quantitative x-scale or y-scale\n // (For binning, we should not include zero by default because binning are calculated without zero.)\n // (For area/bar charts with ratio scale chart, we should always include zero.)\n if (!(isFieldDef(fieldDef) && fieldDef.bin) && util.contains([].concat(_toConsumableArray(POSITION_SCALE_CHANNELS), _toConsumableArray(POLAR_POSITION_SCALE_CHANNELS)), channel)) {\n var orient = markDef.orient,\n type = markDef.type;\n if (contains(['bar', 'area', 'line', 'trail'], type)) {\n if (orient === 'horizontal' && channel === 'y' || orient === 'vertical' && channel === 'x') {\n return false;\n }\n }\n if (contains(['bar', 'area'], type) && !hasSecondaryRangeChannel) {\n return true;\n }\n return scaleConfig === null || scaleConfig === void 0 ? void 0 : scaleConfig.zero;\n }\n return false;\n}\nexport { _zero as zero };","import { isBinning } from '../../bin';\nimport { getSizeChannel, isColorChannel, isScaleChannel, isXorY, isXorYOffset, rangeType } from '../../channel';\nimport { isFieldDef, isPositionFieldOrDatumDef } from '../../channeldef';\nimport * as log from '../../log';\nimport { isRelativeBandSize } from '../../mark';\nimport { channelSupportScaleType, scaleTypeSupportDataType } from '../../scale';\nimport { normalizeTimeUnit } from '../../timeunit';\nimport * as util from '../../util';\nimport { POLAR_POSITION_SCALE_CHANNEL_INDEX } from './../../channel';\n/**\n * Determine if there is a specified scale type and if it is appropriate,\n * or determine default type if type is unspecified or inappropriate.\n */\n// NOTE: CompassQL uses this method.\nexport function scaleType(specifiedScale, channel, fieldDef, mark) {\n var hasNestedOffsetScale = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n var defaultScaleType = defaultType(channel, fieldDef, mark, hasNestedOffsetScale);\n var type = specifiedScale.type;\n if (!isScaleChannel(channel)) {\n // There is no scale for these channels\n return null;\n }\n if (type !== undefined) {\n // Check if explicitly specified scale type is supported by the channel\n if (!channelSupportScaleType(channel, type)) {\n log.warn(log.message.scaleTypeNotWorkWithChannel(channel, type, defaultScaleType));\n return defaultScaleType;\n }\n // Check if explicitly specified scale type is supported by the data type\n if (isFieldDef(fieldDef) && !scaleTypeSupportDataType(type, fieldDef.type)) {\n log.warn(log.message.scaleTypeNotWorkWithFieldDef(type, defaultScaleType));\n return defaultScaleType;\n }\n return type;\n }\n return defaultScaleType;\n}\n/**\n * Determine appropriate default scale type.\n */\n// NOTE: Voyager uses this method.\nfunction defaultType(channel, fieldDef, mark, hasNestedOffsetScale) {\n switch (fieldDef.type) {\n case 'nominal':\n case 'ordinal':\n {\n var _fieldDef$axis;\n if (isColorChannel(channel) || rangeType(channel) === 'discrete') {\n if (channel === 'shape' && fieldDef.type === 'ordinal') {\n log.warn(log.message.discreteChannelCannotEncode(channel, 'ordinal'));\n }\n return 'ordinal';\n }\n if (isXorY(channel) || isXorYOffset(channel)) {\n if (util.contains(['rect', 'bar', 'image', 'rule'], mark.type)) {\n // The rect/bar mark should fit into a band.\n // For rule, using band scale to make rule align with axis ticks better https://github.com/vega/vega-lite/issues/3429\n return 'band';\n }\n if (hasNestedOffsetScale) {\n // If there is a nested offset scale, then there is a \"band\" for the span of the nested scale.\n return 'band';\n }\n } else if (mark.type === 'arc' && channel in POLAR_POSITION_SCALE_CHANNEL_INDEX) {\n return 'band';\n }\n var dimensionSize = mark[getSizeChannel(channel)];\n if (isRelativeBandSize(dimensionSize)) {\n return 'band';\n }\n if (isPositionFieldOrDatumDef(fieldDef) && (_fieldDef$axis = fieldDef.axis) !== null && _fieldDef$axis !== void 0 && _fieldDef$axis.tickBand) {\n return 'band';\n }\n // Otherwise, use ordinal point scale so we can easily get center positions of the marks.\n return 'point';\n }\n case 'temporal':\n if (isColorChannel(channel)) {\n return 'time';\n } else if (rangeType(channel) === 'discrete') {\n log.warn(log.message.discreteChannelCannotEncode(channel, 'temporal'));\n // TODO: consider using quantize (equivalent to binning) once we have it\n return 'ordinal';\n } else if (isFieldDef(fieldDef) && fieldDef.timeUnit && normalizeTimeUnit(fieldDef.timeUnit).utc) {\n return 'utc';\n }\n return 'time';\n case 'quantitative':\n if (isColorChannel(channel)) {\n if (isFieldDef(fieldDef) && isBinning(fieldDef.bin)) {\n return 'bin-ordinal';\n }\n return 'linear';\n } else if (rangeType(channel) === 'discrete') {\n log.warn(log.message.discreteChannelCannotEncode(channel, 'quantitative'));\n // TODO: consider using quantize (equivalent to binning) once we have it\n return 'ordinal';\n }\n return 'linear';\n case 'geojson':\n return undefined;\n }\n /* istanbul ignore next: should never reach this */\n throw new Error(log.message.invalidFieldType(fieldDef.type));\n}","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { getMainChannelFromOffsetChannel, isXorYOffset, SCALE_CHANNELS, SHAPE } from '../../channel';\nimport { getFieldOrDatumDef } from '../../channeldef';\nimport { channelHasNestedOffsetScale } from '../../encoding';\nimport * as log from '../../log';\nimport { GEOSHAPE } from '../../mark';\nimport { NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTIES, scaleCompatible, scaleTypePrecedence } from '../../scale';\nimport { GEOJSON } from '../../type';\nimport { keys } from '../../util';\nimport { isUnitModel } from '../model';\nimport { defaultScaleResolve } from '../resolve';\nimport { mergeValuesWithExplicit, tieBreakByComparing } from '../split';\nimport { ScaleComponent } from './component';\nimport { parseScaleDomain } from './domain';\nimport { parseScaleProperty, parseScaleRange } from './properties';\nimport { scaleType } from './type';\nexport function parseScales(model) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n ignoreRange = _ref.ignoreRange;\n parseScaleCore(model);\n parseScaleDomain(model);\n var _iterator = _createForOfIteratorHelper(NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTIES),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var prop = _step.value;\n parseScaleProperty(model, prop);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n if (!ignoreRange) {\n // range depends on zero\n parseScaleRange(model);\n }\n}\nexport function parseScaleCore(model) {\n if (isUnitModel(model)) {\n model.component.scales = parseUnitScaleCore(model);\n } else {\n model.component.scales = parseNonUnitScaleCore(model);\n }\n}\n/**\n * Parse scales for all channels of a model.\n */\nfunction parseUnitScaleCore(model) {\n var encoding = model.encoding,\n mark = model.mark,\n markDef = model.markDef;\n var scaleComponents = {};\n var _iterator2 = _createForOfIteratorHelper(SCALE_CHANNELS),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var channel = _step2.value;\n var fieldOrDatumDef = getFieldOrDatumDef(encoding[channel]); // must be typed def to have scale\n // Don't generate scale for shape of geoshape\n if (fieldOrDatumDef && mark === GEOSHAPE && channel === SHAPE && fieldOrDatumDef.type === GEOJSON) {\n continue;\n }\n var specifiedScale = fieldOrDatumDef && fieldOrDatumDef['scale'];\n if (isXorYOffset(channel)) {\n var mainChannel = getMainChannelFromOffsetChannel(channel);\n if (!channelHasNestedOffsetScale(encoding, mainChannel)) {\n // Don't generate scale when the offset encoding shouldn't yield a nested scale\n if (specifiedScale) {\n log.warn(log.message.offsetEncodingScaleIgnored(channel));\n }\n continue;\n }\n }\n if (fieldOrDatumDef && specifiedScale !== null && specifiedScale !== false) {\n var _specifiedScale;\n (_specifiedScale = specifiedScale) !== null && _specifiedScale !== void 0 ? _specifiedScale : specifiedScale = {};\n var hasNestedOffsetScale = channelHasNestedOffsetScale(encoding, channel);\n var sType = scaleType(specifiedScale, channel, fieldOrDatumDef, markDef, hasNestedOffsetScale);\n scaleComponents[channel] = new ScaleComponent(model.scaleName(\"\".concat(channel), true), {\n value: sType,\n explicit: specifiedScale.type === sType\n });\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n return scaleComponents;\n}\nvar scaleTypeTieBreaker = tieBreakByComparing(function (st1, st2) {\n return scaleTypePrecedence(st1) - scaleTypePrecedence(st2);\n});\nfunction parseNonUnitScaleCore(model) {\n var _a;\n var scaleComponents = model.component.scales = {};\n var scaleTypeWithExplicitIndex = {};\n var resolve = model.component.resolve;\n // Parse each child scale and determine if a particular channel can be merged.\n var _iterator3 = _createForOfIteratorHelper(model.children),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var child = _step3.value;\n parseScaleCore(child);\n // Instead of always merging right away -- check if it is compatible to merge first!\n var _iterator5 = _createForOfIteratorHelper(keys(child.component.scales)),\n _step5;\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var _a$channel;\n var channel = _step5.value;\n // if resolve is undefined, set default first\n (_a$channel = (_a = resolve.scale)[channel]) !== null && _a$channel !== void 0 ? _a$channel : _a[channel] = defaultScaleResolve(channel, model);\n if (resolve.scale[channel] === 'shared') {\n var explicitScaleType = scaleTypeWithExplicitIndex[channel];\n var childScaleType = child.component.scales[channel].getWithExplicit('type');\n if (explicitScaleType) {\n if (scaleCompatible(explicitScaleType.value, childScaleType.value)) {\n // merge scale component if type are compatible\n scaleTypeWithExplicitIndex[channel] = mergeValuesWithExplicit(explicitScaleType, childScaleType, 'type', 'scale', scaleTypeTieBreaker);\n } else {\n // Otherwise, update conflicting channel to be independent\n resolve.scale[channel] = 'independent';\n // Remove from the index so they don't get merged\n delete scaleTypeWithExplicitIndex[channel];\n }\n } else {\n scaleTypeWithExplicitIndex[channel] = childScaleType;\n }\n }\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n }\n // Merge each channel listed in the index\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n var _iterator4 = _createForOfIteratorHelper(keys(scaleTypeWithExplicitIndex)),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var _channel = _step4.value;\n // Create new merged scale component\n var name = model.scaleName(_channel, true);\n var typeWithExplicit = scaleTypeWithExplicitIndex[_channel];\n scaleComponents[_channel] = new ScaleComponent(name, typeWithExplicit);\n // rename each child and mark them as merged\n var _iterator6 = _createForOfIteratorHelper(model.children),\n _step6;\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var _child = _step6.value;\n var childScale = _child.component.scales[_channel];\n if (childScale) {\n _child.renameScale(childScale.get('name'), name);\n childScale.merged = true;\n }\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n return scaleComponents;\n}","import _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nimport _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nvar _excluded = [\"style\"],\n _excluded2 = [\"spacing\"],\n _excluded3 = [\"encoding\"];\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { FACET_CHANNELS, getPositionScaleChannel, isChannel, isScaleChannel } from '../channel';\nimport { getFieldDef, vgField as _vgField } from '../channeldef';\nimport { DataSourceType } from '../data';\nimport { forEach, reduce } from '../encoding';\nimport { replaceExprRef } from '../expr';\nimport * as log from '../log';\nimport { hasDiscreteDomain } from '../scale';\nimport { isFacetSpec } from '../spec';\nimport { extractCompositionLayout } from '../spec/base';\nimport { extractTitleConfig, isText } from '../title';\nimport { normalizeTransform } from '../transform';\nimport { contains, duplicate, isEmpty, keys, varName } from '../util';\nimport { isVgRangeStep } from '../vega.schema';\nimport { assembleAxes as _assembleAxes } from './axis/assemble';\nimport { signalOrValueRef } from './common';\nimport { assembleHeaderGroups, assembleLayoutTitleBand, assembleTitleGroup } from './header/assemble';\nimport { HEADER_CHANNELS } from './header/component';\nimport { sizeExpr } from './layoutsize/assemble';\nimport { getSizeTypeFromLayoutSizeType } from './layoutsize/component';\nimport { assembleLegends as _assembleLegends } from './legend/assemble';\nimport { parseLegend } from './legend/parse';\nimport { assembleProjections as _assembleProjections } from './projection/assemble';\nimport { parseProjection as _parseProjection } from './projection/parse';\nimport { assembleScales } from './scale/assemble';\nimport { assembleDomain, getFieldFromDomain } from './scale/domain';\nimport { parseScales } from './scale/parse';\nimport { Split } from './split';\nexport var NameMap = /*#__PURE__*/function () {\n function NameMap() {\n _classCallCheck(this, NameMap);\n this.nameMap = {};\n }\n _createClass(NameMap, [{\n key: \"rename\",\n value: function rename(oldName, newName) {\n this.nameMap[oldName] = newName;\n }\n }, {\n key: \"has\",\n value: function has(name) {\n return this.nameMap[name] !== undefined;\n }\n }, {\n key: \"get\",\n value: function get(name) {\n // If the name appears in the _nameMap, we need to read its new name.\n // We have to loop over the dict just in case the new name also gets renamed.\n while (this.nameMap[name] && name !== this.nameMap[name]) {\n name = this.nameMap[name];\n }\n return name;\n }\n }]);\n return NameMap;\n}();\n/*\n We use type guards instead of `instanceof` as `instanceof` makes\n different parts of the compiler depend on the actual implementation of\n the model classes, which in turn depend on different parts of the compiler.\n Thus, `instanceof` leads to circular dependency problems.\n\n On the other hand, type guards only make different parts of the compiler\n depend on the type of the model classes, but not the actual implementation.\n*/\nexport function isUnitModel(model) {\n return (model === null || model === void 0 ? void 0 : model.type) === 'unit';\n}\nexport function isFacetModel(model) {\n return (model === null || model === void 0 ? void 0 : model.type) === 'facet';\n}\nexport function isConcatModel(model) {\n return (model === null || model === void 0 ? void 0 : model.type) === 'concat';\n}\nexport function isLayerModel(model) {\n return (model === null || model === void 0 ? void 0 : model.type) === 'layer';\n}\nexport var Model = /*#__PURE__*/function () {\n function Model(spec, type, parent, parentGivenName, config, resolve, view) {\n var _this = this,\n _spec$name,\n _spec$transform;\n _classCallCheck(this, Model);\n this.type = type;\n this.parent = parent;\n this.config = config;\n /**\n * Corrects the data references in marks after assemble.\n */\n this.correctDataNames = function (mark) {\n var _mark$from, _mark$from2;\n // TODO: make this correct\n // for normal data references\n if ((_mark$from = mark.from) !== null && _mark$from !== void 0 && _mark$from.data) {\n mark.from.data = _this.lookupDataSource(mark.from.data);\n }\n // for access to facet data\n if ((_mark$from2 = mark.from) !== null && _mark$from2 !== void 0 && (_mark$from2 = _mark$from2.facet) !== null && _mark$from2 !== void 0 && _mark$from2.data) {\n mark.from.facet.data = _this.lookupDataSource(mark.from.facet.data);\n }\n return mark;\n };\n this.parent = parent;\n this.config = config;\n this.view = replaceExprRef(view);\n // If name is not provided, always use parent's givenName to avoid name conflicts.\n this.name = (_spec$name = spec.name) !== null && _spec$name !== void 0 ? _spec$name : parentGivenName;\n this.title = isText(spec.title) ? {\n text: spec.title\n } : spec.title ? replaceExprRef(spec.title) : undefined;\n // Shared name maps\n this.scaleNameMap = parent ? parent.scaleNameMap : new NameMap();\n this.projectionNameMap = parent ? parent.projectionNameMap : new NameMap();\n this.signalNameMap = parent ? parent.signalNameMap : new NameMap();\n this.data = spec.data;\n this.description = spec.description;\n this.transforms = normalizeTransform((_spec$transform = spec.transform) !== null && _spec$transform !== void 0 ? _spec$transform : []);\n this.layout = type === 'layer' || type === 'unit' ? {} : extractCompositionLayout(spec, type, config);\n this.component = {\n data: {\n sources: parent ? parent.component.data.sources : [],\n outputNodes: parent ? parent.component.data.outputNodes : {},\n outputNodeRefCounts: parent ? parent.component.data.outputNodeRefCounts : {},\n // data is faceted if the spec is a facet spec or the parent has faceted data and data is undefined\n isFaceted: isFacetSpec(spec) || (parent === null || parent === void 0 ? void 0 : parent.component.data.isFaceted) && spec.data === undefined\n },\n layoutSize: new Split(),\n layoutHeaders: {\n row: {},\n column: {},\n facet: {}\n },\n mark: null,\n resolve: _objectSpread({\n scale: {},\n axis: {},\n legend: {}\n }, resolve ? duplicate(resolve) : {}),\n selection: null,\n scales: null,\n projection: null,\n axes: {},\n legends: {}\n };\n }\n _createClass(Model, [{\n key: \"width\",\n get: function get() {\n return this.getSizeSignalRef('width');\n }\n }, {\n key: \"height\",\n get: function get() {\n return this.getSizeSignalRef('height');\n }\n }, {\n key: \"parse\",\n value: function parse() {\n this.parseScale();\n this.parseLayoutSize(); // depends on scale\n this.renameTopLevelLayoutSizeSignal();\n this.parseSelections();\n this.parseProjection();\n this.parseData(); // (pathorder) depends on markDef; selection filters depend on parsed selections; depends on projection because some transforms require the finalized projection name.\n this.parseAxesAndHeaders(); // depends on scale and layout size\n this.parseLegends(); // depends on scale, markDef\n this.parseMarkGroup(); // depends on data name, scale, layout size, axisGroup, and children's scale, axis, legend and mark.\n }\n }, {\n key: \"parseScale\",\n value: function parseScale() {\n parseScales(this);\n }\n }, {\n key: \"parseProjection\",\n value: function parseProjection() {\n _parseProjection(this);\n }\n /**\n * Rename top-level spec's size to be just width / height, ignoring model name.\n * This essentially merges the top-level spec's width/height signals with the width/height signals\n * to help us reduce redundant signals declaration.\n */\n }, {\n key: \"renameTopLevelLayoutSizeSignal\",\n value: function renameTopLevelLayoutSizeSignal() {\n if (this.getName('width') !== 'width') {\n this.renameSignal(this.getName('width'), 'width');\n }\n if (this.getName('height') !== 'height') {\n this.renameSignal(this.getName('height'), 'height');\n }\n }\n }, {\n key: \"parseLegends\",\n value: function parseLegends() {\n parseLegend(this);\n }\n }, {\n key: \"assembleEncodeFromView\",\n value: function assembleEncodeFromView(view) {\n // Exclude \"style\"\n var _ = view.style,\n baseView = _objectWithoutProperties(view, _excluded);\n var e = {};\n var _iterator = _createForOfIteratorHelper(keys(baseView)),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var property = _step.value;\n var value = baseView[property];\n if (value !== undefined) {\n e[property] = signalOrValueRef(value);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return e;\n }\n }, {\n key: \"assembleGroupEncodeEntry\",\n value: function assembleGroupEncodeEntry(isTopLevel) {\n var encodeEntry = {};\n if (this.view) {\n encodeEntry = this.assembleEncodeFromView(this.view);\n }\n if (!isTopLevel) {\n // Descriptions are already added to the top-level description so we only need to add them to the inner views.\n if (this.description) {\n encodeEntry['description'] = signalOrValueRef(this.description);\n }\n // For top-level spec, we can set the global width and height signal to adjust the group size.\n // For other child specs, we have to manually set width and height in the encode entry.\n if (this.type === 'unit' || this.type === 'layer') {\n var _encodeEntry;\n return _objectSpread({\n width: this.getSizeSignalRef('width'),\n height: this.getSizeSignalRef('height')\n }, (_encodeEntry = encodeEntry) !== null && _encodeEntry !== void 0 ? _encodeEntry : {});\n }\n }\n return isEmpty(encodeEntry) ? undefined : encodeEntry;\n }\n }, {\n key: \"assembleLayout\",\n value: function assembleLayout() {\n if (!this.layout) {\n return undefined;\n }\n var _this$layout = this.layout,\n spacing = _this$layout.spacing,\n layout = _objectWithoutProperties(_this$layout, _excluded2);\n var component = this.component,\n config = this.config;\n var titleBand = assembleLayoutTitleBand(component.layoutHeaders, config);\n return _objectSpread(_objectSpread(_objectSpread({\n padding: spacing\n }, this.assembleDefaultLayout()), layout), titleBand ? {\n titleBand: titleBand\n } : {});\n }\n }, {\n key: \"assembleDefaultLayout\",\n value: function assembleDefaultLayout() {\n return {};\n }\n }, {\n key: \"assembleHeaderMarks\",\n value: function assembleHeaderMarks() {\n var layoutHeaders = this.component.layoutHeaders;\n var headerMarks = [];\n var _iterator2 = _createForOfIteratorHelper(FACET_CHANNELS),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var channel = _step2.value;\n if (layoutHeaders[channel].title) {\n headerMarks.push(assembleTitleGroup(this, channel));\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n var _iterator3 = _createForOfIteratorHelper(HEADER_CHANNELS),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var _channel = _step3.value;\n headerMarks = headerMarks.concat(assembleHeaderGroups(this, _channel));\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n return headerMarks;\n }\n }, {\n key: \"assembleAxes\",\n value: function assembleAxes() {\n return _assembleAxes(this.component.axes, this.config);\n }\n }, {\n key: \"assembleLegends\",\n value: function assembleLegends() {\n return _assembleLegends(this);\n }\n }, {\n key: \"assembleProjections\",\n value: function assembleProjections() {\n return _assembleProjections(this);\n }\n }, {\n key: \"assembleTitle\",\n value: function assembleTitle() {\n var _this$title;\n var _ref = (_this$title = this.title) !== null && _this$title !== void 0 ? _this$title : {},\n encoding = _ref.encoding,\n titleNoEncoding = _objectWithoutProperties(_ref, _excluded3);\n var title = _objectSpread(_objectSpread(_objectSpread({}, extractTitleConfig(this.config.title).nonMarkTitleProperties), titleNoEncoding), encoding ? {\n encode: {\n update: encoding\n }\n } : {});\n if (title.text) {\n if (contains(['unit', 'layer'], this.type)) {\n // Unit/Layer\n if (contains(['middle', undefined], title.anchor)) {\n var _title$frame;\n (_title$frame = title.frame) !== null && _title$frame !== void 0 ? _title$frame : title.frame = 'group';\n }\n } else {\n var _title$anchor;\n // composition with Vega layout\n // Set title = \"start\" by default for composition as \"middle\" does not look nice\n // https://github.com/vega/vega/issues/960#issuecomment-471360328\n (_title$anchor = title.anchor) !== null && _title$anchor !== void 0 ? _title$anchor : title.anchor = 'start';\n }\n return isEmpty(title) ? undefined : title;\n }\n return undefined;\n }\n /**\n * Assemble the mark group for this model. We accept optional `signals` so that we can include concat top-level signals with the top-level model's local signals.\n */\n }, {\n key: \"assembleGroup\",\n value: function assembleGroup() {\n var signals = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var group = {};\n signals = signals.concat(this.assembleSignals());\n if (signals.length > 0) {\n group.signals = signals;\n }\n var layout = this.assembleLayout();\n if (layout) {\n group.layout = layout;\n }\n group.marks = [].concat(this.assembleHeaderMarks(), this.assembleMarks());\n // Only include scales if this spec is top-level or if parent is facet.\n // (Otherwise, it will be merged with upper-level's scope.)\n var scales = !this.parent || isFacetModel(this.parent) ? assembleScales(this) : [];\n if (scales.length > 0) {\n group.scales = scales;\n }\n var axes = this.assembleAxes();\n if (axes.length > 0) {\n group.axes = axes;\n }\n var legends = this.assembleLegends();\n if (legends.length > 0) {\n group.legends = legends;\n }\n return group;\n }\n }, {\n key: \"getName\",\n value: function getName(text) {\n return varName((this.name ? \"\".concat(this.name, \"_\") : '') + text);\n }\n }, {\n key: \"getDataName\",\n value: function getDataName(type) {\n return this.getName(DataSourceType[type].toLowerCase());\n }\n /**\n * Request a data source name for the given data source type and mark that data source as required.\n * This method should be called in parse, so that all used data source can be correctly instantiated in assembleData().\n * You can lookup the correct dataset name in assemble with `lookupDataSource`.\n */\n }, {\n key: \"requestDataName\",\n value: function requestDataName(name) {\n var fullName = this.getDataName(name);\n // Increase ref count. This is critical because otherwise we won't create a data source.\n // We also increase the ref counts on OutputNode.getSource() calls.\n var refCounts = this.component.data.outputNodeRefCounts;\n refCounts[fullName] = (refCounts[fullName] || 0) + 1;\n return fullName;\n }\n }, {\n key: \"getSizeSignalRef\",\n value: function getSizeSignalRef(layoutSizeType) {\n if (isFacetModel(this.parent)) {\n var sizeType = getSizeTypeFromLayoutSizeType(layoutSizeType);\n var channel = getPositionScaleChannel(sizeType);\n var scaleComponent = this.component.scales[channel];\n if (scaleComponent && !scaleComponent.merged) {\n // independent scale\n var type = scaleComponent.get('type');\n var range = scaleComponent.get('range');\n if (hasDiscreteDomain(type) && isVgRangeStep(range)) {\n var scaleName = scaleComponent.get('name');\n var domain = assembleDomain(this, channel);\n var field = getFieldFromDomain(domain);\n if (field) {\n var fieldRef = _vgField({\n aggregate: 'distinct',\n field: field\n }, {\n expr: 'datum'\n });\n return {\n signal: sizeExpr(scaleName, scaleComponent, fieldRef)\n };\n } else {\n log.warn(log.message.unknownField(channel));\n return null;\n }\n }\n }\n }\n return {\n signal: this.signalNameMap.get(this.getName(layoutSizeType))\n };\n }\n /**\n * Lookup the name of the datasource for an output node. You probably want to call this in assemble.\n */\n }, {\n key: \"lookupDataSource\",\n value: function lookupDataSource(name) {\n var node = this.component.data.outputNodes[name];\n if (!node) {\n // Name not found in map so let's just return what we got.\n // This can happen if we already have the correct name.\n return name;\n }\n return node.getSource();\n }\n }, {\n key: \"getSignalName\",\n value: function getSignalName(oldSignalName) {\n return this.signalNameMap.get(oldSignalName);\n }\n }, {\n key: \"renameSignal\",\n value: function renameSignal(oldName, newName) {\n this.signalNameMap.rename(oldName, newName);\n }\n }, {\n key: \"renameScale\",\n value: function renameScale(oldName, newName) {\n this.scaleNameMap.rename(oldName, newName);\n }\n }, {\n key: \"renameProjection\",\n value: function renameProjection(oldName, newName) {\n this.projectionNameMap.rename(oldName, newName);\n }\n /**\n * @return scale name for a given channel after the scale has been parsed and named.\n */\n }, {\n key: \"scaleName\",\n value: function scaleName(originalScaleName, parse) {\n if (parse) {\n // During the parse phase always return a value\n // No need to refer to rename map because a scale can't be renamed\n // before it has the original name.\n return this.getName(originalScaleName);\n }\n // If there is a scale for the channel, it should either\n // be in the scale component or exist in the name map\n if (\n // If there is a scale for the channel, there should be a local scale component for it\n isChannel(originalScaleName) && isScaleChannel(originalScaleName) && this.component.scales[originalScaleName] ||\n // in the scale name map (the scale get merged by its parent)\n this.scaleNameMap.has(this.getName(originalScaleName))) {\n return this.scaleNameMap.get(this.getName(originalScaleName));\n }\n return undefined;\n }\n /**\n * @return projection name after the projection has been parsed and named.\n */\n }, {\n key: \"projectionName\",\n value: function projectionName(parse) {\n if (parse) {\n // During the parse phase always return a value\n // No need to refer to rename map because a projection can't be renamed\n // before it has the original name.\n return this.getName('projection');\n }\n if (this.component.projection && !this.component.projection.merged || this.projectionNameMap.has(this.getName('projection'))) {\n return this.projectionNameMap.get(this.getName('projection'));\n }\n return undefined;\n }\n /**\n * Traverse a model's hierarchy to get the scale component for a particular channel.\n */\n }, {\n key: \"getScaleComponent\",\n value: function getScaleComponent(channel) {\n /* istanbul ignore next: This is warning for debugging test */\n if (!this.component.scales) {\n throw new Error('getScaleComponent cannot be called before parseScale(). Make sure you have called parseScale or use parseUnitModelWithScale().');\n }\n var localScaleComponent = this.component.scales[channel];\n if (localScaleComponent && !localScaleComponent.merged) {\n return localScaleComponent;\n }\n return this.parent ? this.parent.getScaleComponent(channel) : undefined;\n }\n /**\n * Traverse a model's hierarchy to get a particular selection component.\n */\n }, {\n key: \"getSelectionComponent\",\n value: function getSelectionComponent(variableName, origName) {\n var sel = this.component.selection[variableName];\n if (!sel && this.parent) {\n sel = this.parent.getSelectionComponent(variableName, origName);\n }\n if (!sel) {\n throw new Error(log.message.selectionNotFound(origName));\n }\n return sel;\n }\n /**\n * Returns true if the model has a signalRef for an axis orient.\n */\n }, {\n key: \"hasAxisOrientSignalRef\",\n value: function hasAxisOrientSignalRef() {\n var _this$component$axes$, _this$component$axes$2;\n return ((_this$component$axes$ = this.component.axes.x) === null || _this$component$axes$ === void 0 ? void 0 : _this$component$axes$.some(function (a) {\n return a.hasOrientSignalRef();\n })) || ((_this$component$axes$2 = this.component.axes.y) === null || _this$component$axes$2 === void 0 ? void 0 : _this$component$axes$2.some(function (a) {\n return a.hasOrientSignalRef();\n }));\n }\n }]);\n return Model;\n}();\n/** Abstract class for UnitModel and FacetModel. Both of which can contain fieldDefs as a part of its own specification. */\nexport var ModelWithField = /*#__PURE__*/function (_Model) {\n _inherits(ModelWithField, _Model);\n var _super = _createSuper(ModelWithField);\n function ModelWithField() {\n _classCallCheck(this, ModelWithField);\n return _super.apply(this, arguments);\n }\n _createClass(ModelWithField, [{\n key: \"vgField\",\n value: /** Get \"field\" reference for Vega */\n function vgField(channel) {\n var opt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var fieldDef = this.fieldDef(channel);\n if (!fieldDef) {\n return undefined;\n }\n return _vgField(fieldDef, opt);\n }\n }, {\n key: \"reduceFieldDef\",\n value: function reduceFieldDef(f, init) {\n return reduce(this.getMapping(), function (acc, cd, c) {\n var fieldDef = getFieldDef(cd);\n if (fieldDef) {\n return f(acc, fieldDef, c);\n }\n return acc;\n }, init);\n }\n }, {\n key: \"forEachFieldDef\",\n value: function forEachFieldDef(f, t) {\n forEach(this.getMapping(), function (cd, c) {\n var fieldDef = getFieldDef(cd);\n if (fieldDef) {\n f(fieldDef, c);\n }\n }, t);\n }\n }]);\n return ModelWithField;\n}(Model);","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nvar _excluded = [\"density\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { duplicate, hash as _hash } from '../../util';\nimport { DataFlowNode } from './dataflow';\n/**\n * A class for density transform nodes\n */\nexport var DensityTransformNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(DensityTransformNode, _DataFlowNode);\n var _super = _createSuper(DensityTransformNode);\n function DensityTransformNode(parent, transform) {\n var _this$transform$as, _specifiedAs$, _specifiedAs$2;\n var _this;\n _classCallCheck(this, DensityTransformNode);\n _this = _super.call(this, parent);\n _this.transform = transform;\n _this.transform = duplicate(transform); // duplicate to prevent side effects\n var specifiedAs = (_this$transform$as = _this.transform.as) !== null && _this$transform$as !== void 0 ? _this$transform$as : [undefined, undefined];\n _this.transform.as = [(_specifiedAs$ = specifiedAs[0]) !== null && _specifiedAs$ !== void 0 ? _specifiedAs$ : 'value', (_specifiedAs$2 = specifiedAs[1]) !== null && _specifiedAs$2 !== void 0 ? _specifiedAs$2 : 'density'];\n // set steps when we are grouping so that we get consitent sampling points for imputing and grouping\n if (transform.groupby && transform.minsteps == null && transform.maxsteps == null && transform.steps == null) {\n _this.transform.steps = 200;\n }\n return _this;\n }\n _createClass(DensityTransformNode, [{\n key: \"clone\",\n value: function clone() {\n return new DensityTransformNode(null, duplicate(this.transform));\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n var _this$transform$group;\n return new Set([this.transform.density].concat(_toConsumableArray((_this$transform$group = this.transform.groupby) !== null && _this$transform$group !== void 0 ? _this$transform$group : [])));\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return new Set(this.transform.as);\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return \"DensityTransform \".concat(_hash(this.transform));\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n var _this$transform = this.transform,\n density = _this$transform.density,\n rest = _objectWithoutProperties(_this$transform, _excluded);\n var result = _objectSpread({\n type: 'kde',\n field: density\n }, rest);\n return result;\n }\n }]);\n return DensityTransformNode;\n}(DataFlowNode);","import _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { duplicate, hash as _hash } from '../../util';\nimport { DataFlowNode } from './dataflow';\n/**\n * A class for flatten transform nodes\n */\nexport var ExtentTransformNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(ExtentTransformNode, _DataFlowNode);\n var _super = _createSuper(ExtentTransformNode);\n function ExtentTransformNode(parent, transform) {\n var _this;\n _classCallCheck(this, ExtentTransformNode);\n _this = _super.call(this, parent);\n _this.transform = transform;\n _this.transform = duplicate(transform);\n return _this;\n }\n _createClass(ExtentTransformNode, [{\n key: \"clone\",\n value: function clone() {\n return new ExtentTransformNode(null, duplicate(this.transform));\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n return new Set([this.transform.extent]);\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return new Set([]);\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return \"ExtentTransform \".concat(_hash(this.transform));\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n var _this$transform = this.transform,\n extent = _this$transform.extent,\n param = _this$transform.param;\n var result = {\n type: 'extent',\n field: extent,\n signal: param\n };\n return result;\n }\n }]);\n return ExtentTransformNode;\n}(DataFlowNode);","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { isScaleChannel } from '../../channel';\nimport { vgField as fieldRef } from '../../channeldef';\nimport { isPathMark } from '../../mark';\nimport { hasContinuousDomain } from '../../scale';\nimport { hash as _hash, keys } from '../../util';\nimport { getMarkPropOrConfig } from '../common';\nimport { DataFlowNode } from './dataflow';\nexport var FilterInvalidNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(FilterInvalidNode, _DataFlowNode);\n var _super = _createSuper(FilterInvalidNode);\n function FilterInvalidNode(parent, filter) {\n var _this;\n _classCallCheck(this, FilterInvalidNode);\n _this = _super.call(this, parent);\n _this.filter = filter;\n return _this;\n }\n _createClass(FilterInvalidNode, [{\n key: \"clone\",\n value: function clone() {\n return new FilterInvalidNode(null, _objectSpread({}, this.filter));\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n return new Set(keys(this.filter));\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return new Set(); // filter does not produce any new fields\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return \"FilterInvalid \".concat(_hash(this.filter));\n }\n /**\n * Create the VgTransforms for each of the filtered fields.\n */\n }, {\n key: \"assemble\",\n value: function assemble() {\n var _this2 = this;\n var filters = keys(this.filter).reduce(function (vegaFilters, field) {\n var fieldDef = _this2.filter[field];\n var ref = fieldRef(fieldDef, {\n expr: 'datum'\n });\n if (fieldDef !== null) {\n if (fieldDef.type === 'temporal') {\n vegaFilters.push(\"(isDate(\".concat(ref, \") || (isValid(\").concat(ref, \") && isFinite(+\").concat(ref, \")))\"));\n } else if (fieldDef.type === 'quantitative') {\n vegaFilters.push(\"isValid(\".concat(ref, \")\"));\n vegaFilters.push(\"isFinite(+\".concat(ref, \")\"));\n } else {\n // should never get here\n }\n }\n return vegaFilters;\n }, []);\n return filters.length > 0 ? {\n type: 'filter',\n expr: filters.join(' && ')\n } : null;\n }\n }], [{\n key: \"make\",\n value: function make(parent, model) {\n var config = model.config,\n mark = model.mark,\n markDef = model.markDef;\n var invalid = getMarkPropOrConfig('invalid', markDef, config);\n if (invalid !== 'filter') {\n return null;\n }\n var filter = model.reduceFieldDef(function (aggregator, fieldDef, channel) {\n var scaleComponent = isScaleChannel(channel) && model.getScaleComponent(channel);\n if (scaleComponent) {\n var scaleType = scaleComponent.get('type');\n // While discrete domain scales can handle invalid values, continuous scales can't.\n // Thus, for non-path marks, we have to filter null for scales with continuous domains.\n // (For path marks, we will use \"defined\" property and skip these values instead.)\n if (hasContinuousDomain(scaleType) && fieldDef.aggregate !== 'count' && !isPathMark(mark)) {\n aggregator[fieldDef.field] = fieldDef; // we know that the fieldDef is a typed field def\n }\n }\n\n return aggregator;\n }, {});\n if (!keys(filter).length) {\n return null;\n }\n return new FilterInvalidNode(parent, filter);\n }\n }]);\n return FilterInvalidNode;\n}(DataFlowNode);","import _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { duplicate, hash as _hash } from '../../util';\nimport { DataFlowNode } from './dataflow';\n/**\n * A class for flatten transform nodes\n */\nexport var FlattenTransformNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(FlattenTransformNode, _DataFlowNode);\n var _super = _createSuper(FlattenTransformNode);\n function FlattenTransformNode(parent, transform) {\n var _this;\n _classCallCheck(this, FlattenTransformNode);\n _this = _super.call(this, parent);\n _this.transform = transform;\n _this.transform = duplicate(transform); // duplicate to prevent side effects\n var _this$transform = _this.transform,\n flatten = _this$transform.flatten,\n _this$transform$as = _this$transform.as,\n as = _this$transform$as === void 0 ? [] : _this$transform$as;\n _this.transform.as = flatten.map(function (f, i) {\n var _as$i;\n return (_as$i = as[i]) !== null && _as$i !== void 0 ? _as$i : f;\n });\n return _this;\n }\n _createClass(FlattenTransformNode, [{\n key: \"clone\",\n value: function clone() {\n return new FlattenTransformNode(this.parent, duplicate(this.transform));\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n return new Set(this.transform.flatten);\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return new Set(this.transform.as);\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return \"FlattenTransform \".concat(_hash(this.transform));\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n var _this$transform2 = this.transform,\n fields = _this$transform2.flatten,\n as = _this$transform2.as;\n var result = {\n type: 'flatten',\n fields: fields,\n as: as\n };\n return result;\n }\n }]);\n return FlattenTransformNode;\n}(DataFlowNode);","import _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { duplicate, hash as _hash } from '../../util';\nimport { DataFlowNode } from './dataflow';\n/**\n * A class for flatten transform nodes\n */\nexport var FoldTransformNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(FoldTransformNode, _DataFlowNode);\n var _super = _createSuper(FoldTransformNode);\n function FoldTransformNode(parent, transform) {\n var _this$transform$as, _specifiedAs$, _specifiedAs$2;\n var _this;\n _classCallCheck(this, FoldTransformNode);\n _this = _super.call(this, parent);\n _this.transform = transform;\n _this.transform = duplicate(transform); // duplicate to prevent side effects\n var specifiedAs = (_this$transform$as = _this.transform.as) !== null && _this$transform$as !== void 0 ? _this$transform$as : [undefined, undefined];\n _this.transform.as = [(_specifiedAs$ = specifiedAs[0]) !== null && _specifiedAs$ !== void 0 ? _specifiedAs$ : 'key', (_specifiedAs$2 = specifiedAs[1]) !== null && _specifiedAs$2 !== void 0 ? _specifiedAs$2 : 'value'];\n return _this;\n }\n _createClass(FoldTransformNode, [{\n key: \"clone\",\n value: function clone() {\n return new FoldTransformNode(null, duplicate(this.transform));\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n return new Set(this.transform.fold);\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return new Set(this.transform.as);\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return \"FoldTransform \".concat(_hash(this.transform));\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n var _this$transform = this.transform,\n fold = _this$transform.fold,\n as = _this$transform.as;\n var result = {\n type: 'fold',\n fields: fold,\n as: as\n };\n return result;\n }\n }]);\n return FoldTransformNode;\n}(DataFlowNode);","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { isString } from 'vega-util';\nimport { LATITUDE, LATITUDE2, LONGITUDE, LONGITUDE2, SHAPE } from '../../channel';\nimport { getFieldOrDatumDef, isDatumDef, isFieldDef, isValueDef } from '../../channeldef';\nimport { GEOJSON } from '../../type';\nimport { duplicate, hash as _hash } from '../../util';\nimport { DataFlowNode } from './dataflow';\nexport var GeoJSONNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(GeoJSONNode, _DataFlowNode);\n var _super = _createSuper(GeoJSONNode);\n function GeoJSONNode(parent, fields, geojson, signal) {\n var _this;\n _classCallCheck(this, GeoJSONNode);\n _this = _super.call(this, parent);\n _this.fields = fields;\n _this.geojson = geojson;\n _this.signal = signal;\n return _this;\n }\n _createClass(GeoJSONNode, [{\n key: \"clone\",\n value: function clone() {\n return new GeoJSONNode(null, duplicate(this.fields), this.geojson, this.signal);\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n var _this$fields;\n var fields = ((_this$fields = this.fields) !== null && _this$fields !== void 0 ? _this$fields : []).filter(isString);\n return new Set([].concat(_toConsumableArray(this.geojson ? [this.geojson] : []), _toConsumableArray(fields)));\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return new Set();\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return \"GeoJSON \".concat(this.geojson, \" \").concat(this.signal, \" \").concat(_hash(this.fields));\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n return [].concat(_toConsumableArray(this.geojson ? [{\n type: 'filter',\n expr: \"isValid(datum[\\\"\".concat(this.geojson, \"\\\"])\")\n }] : []), [_objectSpread(_objectSpread(_objectSpread({\n type: 'geojson'\n }, this.fields ? {\n fields: this.fields\n } : {}), this.geojson ? {\n geojson: this.geojson\n } : {}), {}, {\n signal: this.signal\n })]);\n }\n }], [{\n key: \"parseAll\",\n value: function parseAll(parent, model) {\n if (model.component.projection && !model.component.projection.isFit) {\n return parent;\n }\n var geoJsonCounter = 0;\n for (var _i = 0, _arr = [[LONGITUDE, LATITUDE], [LONGITUDE2, LATITUDE2]]; _i < _arr.length; _i++) {\n var coordinates = _arr[_i];\n var pair = coordinates.map(function (channel) {\n var def = getFieldOrDatumDef(model.encoding[channel]);\n return isFieldDef(def) ? def.field : isDatumDef(def) ? {\n expr: \"\".concat(def.datum)\n } : isValueDef(def) ? {\n expr: \"\".concat(def['value'])\n } : undefined;\n });\n if (pair[0] || pair[1]) {\n parent = new GeoJSONNode(parent, pair, null, model.getName(\"geojson_\".concat(geoJsonCounter++)));\n }\n }\n if (model.channelHasField(SHAPE)) {\n var fieldDef = model.typedFieldDef(SHAPE);\n if (fieldDef.type === GEOJSON) {\n parent = new GeoJSONNode(parent, null, fieldDef.field, model.getName(\"geojson_\".concat(geoJsonCounter++)));\n }\n }\n return parent;\n }\n }]);\n return GeoJSONNode;\n}(DataFlowNode);","import _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { isString } from 'vega-util';\nimport { LATITUDE, LATITUDE2, LONGITUDE, LONGITUDE2 } from '../../channel';\nimport { getFieldOrDatumDef, isDatumDef, isFieldDef, isValueDef } from '../../channeldef';\nimport { duplicate, hash as _hash } from '../../util';\nimport { DataFlowNode } from './dataflow';\nexport var GeoPointNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(GeoPointNode, _DataFlowNode);\n var _super = _createSuper(GeoPointNode);\n function GeoPointNode(parent, projection, fields, as) {\n var _this;\n _classCallCheck(this, GeoPointNode);\n _this = _super.call(this, parent);\n _this.projection = projection;\n _this.fields = fields;\n _this.as = as;\n return _this;\n }\n _createClass(GeoPointNode, [{\n key: \"clone\",\n value: function clone() {\n return new GeoPointNode(null, this.projection, duplicate(this.fields), duplicate(this.as));\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n return new Set(this.fields.filter(isString));\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return new Set(this.as);\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return \"Geopoint \".concat(this.projection, \" \").concat(_hash(this.fields), \" \").concat(_hash(this.as));\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n return {\n type: 'geopoint',\n projection: this.projection,\n fields: this.fields,\n as: this.as\n };\n }\n }], [{\n key: \"parseAll\",\n value: function parseAll(parent, model) {\n if (!model.projectionName()) {\n return parent;\n }\n for (var _i = 0, _arr = [[LONGITUDE, LATITUDE], [LONGITUDE2, LATITUDE2]]; _i < _arr.length; _i++) {\n var coordinates = _arr[_i];\n var pair = coordinates.map(function (channel) {\n var def = getFieldOrDatumDef(model.encoding[channel]);\n return isFieldDef(def) ? def.field : isDatumDef(def) ? {\n expr: \"\".concat(def.datum)\n } : isValueDef(def) ? {\n expr: \"\".concat(def['value'])\n } : undefined;\n });\n var suffix = coordinates[0] === LONGITUDE2 ? '2' : '';\n if (pair[0] || pair[1]) {\n parent = new GeoPointNode(parent, model.projectionName(), pair, [model.getName(\"x\".concat(suffix)), model.getName(\"y\".concat(suffix))]);\n }\n }\n return parent;\n }\n }]);\n return GeoPointNode;\n}(DataFlowNode);","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { isFieldDef } from '../../channeldef';\nimport { pathGroupingFields } from '../../encoding';\nimport { isImputeSequence } from '../../transform';\nimport { duplicate, hash as _hash } from '../../util';\nimport { DataFlowNode } from './dataflow';\nexport var ImputeNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(ImputeNode, _DataFlowNode);\n var _super = _createSuper(ImputeNode);\n function ImputeNode(parent, transform) {\n var _this;\n _classCallCheck(this, ImputeNode);\n _this = _super.call(this, parent);\n _this.transform = transform;\n return _this;\n }\n _createClass(ImputeNode, [{\n key: \"clone\",\n value: function clone() {\n return new ImputeNode(null, duplicate(this.transform));\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n var _this$transform$group;\n return new Set([this.transform.impute, this.transform.key].concat(_toConsumableArray((_this$transform$group = this.transform.groupby) !== null && _this$transform$group !== void 0 ? _this$transform$group : [])));\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return new Set([this.transform.impute]);\n }\n }, {\n key: \"processSequence\",\n value: function processSequence(keyvals) {\n var _keyvals$start = keyvals.start,\n start = _keyvals$start === void 0 ? 0 : _keyvals$start,\n stop = keyvals.stop,\n step = keyvals.step;\n var result = [start, stop].concat(_toConsumableArray(step ? [step] : [])).join(',');\n return {\n signal: \"sequence(\".concat(result, \")\")\n };\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return \"Impute \".concat(_hash(this.transform));\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n var _this$transform = this.transform,\n impute = _this$transform.impute,\n key = _this$transform.key,\n keyvals = _this$transform.keyvals,\n method = _this$transform.method,\n groupby = _this$transform.groupby,\n value = _this$transform.value,\n _this$transform$frame = _this$transform.frame,\n frame = _this$transform$frame === void 0 ? [null, null] : _this$transform$frame;\n var imputeTransform = _objectSpread(_objectSpread(_objectSpread({\n type: 'impute',\n field: impute,\n key: key\n }, keyvals ? {\n keyvals: isImputeSequence(keyvals) ? this.processSequence(keyvals) : keyvals\n } : {}), {}, {\n method: 'value'\n }, groupby ? {\n groupby: groupby\n } : {}), {}, {\n value: !method || method === 'value' ? value : null\n });\n if (method && method !== 'value') {\n var deriveNewField = _objectSpread({\n type: 'window',\n as: [\"imputed_\".concat(impute, \"_value\")],\n ops: [method],\n fields: [impute],\n frame: frame,\n ignorePeers: false\n }, groupby ? {\n groupby: groupby\n } : {});\n var replaceOriginal = {\n type: 'formula',\n expr: \"datum.\".concat(impute, \" === null ? datum.imputed_\").concat(impute, \"_value : datum.\").concat(impute),\n as: impute\n };\n return [imputeTransform, deriveNewField, replaceOriginal];\n } else {\n return [imputeTransform];\n }\n }\n }], [{\n key: \"makeFromTransform\",\n value: function makeFromTransform(parent, imputeTransform) {\n return new ImputeNode(parent, imputeTransform);\n }\n }, {\n key: \"makeFromEncoding\",\n value: function makeFromEncoding(parent, model) {\n var encoding = model.encoding;\n var xDef = encoding.x;\n var yDef = encoding.y;\n if (isFieldDef(xDef) && isFieldDef(yDef)) {\n var imputedChannel = xDef.impute ? xDef : yDef.impute ? yDef : undefined;\n if (imputedChannel === undefined) {\n return undefined;\n }\n var keyChannel = xDef.impute ? yDef : yDef.impute ? xDef : undefined;\n var _imputedChannel$imput = imputedChannel.impute,\n method = _imputedChannel$imput.method,\n value = _imputedChannel$imput.value,\n frame = _imputedChannel$imput.frame,\n keyvals = _imputedChannel$imput.keyvals;\n var groupbyFields = pathGroupingFields(model.mark, encoding);\n return new ImputeNode(parent, _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({\n impute: imputedChannel.field,\n key: keyChannel.field\n }, method ? {\n method: method\n } : {}), value !== undefined ? {\n value: value\n } : {}), frame ? {\n frame: frame\n } : {}), keyvals !== undefined ? {\n keyvals: keyvals\n } : {}), groupbyFields.length ? {\n groupby: groupbyFields\n } : {}));\n }\n return null;\n }\n }]);\n return ImputeNode;\n}(DataFlowNode);","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nvar _excluded = [\"loess\", \"on\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { duplicate, hash as _hash } from '../../util';\nimport { DataFlowNode } from './dataflow';\n/**\n * A class for loess transform nodes\n */\nexport var LoessTransformNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(LoessTransformNode, _DataFlowNode);\n var _super = _createSuper(LoessTransformNode);\n function LoessTransformNode(parent, transform) {\n var _this$transform$as, _specifiedAs$, _specifiedAs$2;\n var _this;\n _classCallCheck(this, LoessTransformNode);\n _this = _super.call(this, parent);\n _this.transform = transform;\n _this.transform = duplicate(transform); // duplicate to prevent side effects\n var specifiedAs = (_this$transform$as = _this.transform.as) !== null && _this$transform$as !== void 0 ? _this$transform$as : [undefined, undefined];\n _this.transform.as = [(_specifiedAs$ = specifiedAs[0]) !== null && _specifiedAs$ !== void 0 ? _specifiedAs$ : transform.on, (_specifiedAs$2 = specifiedAs[1]) !== null && _specifiedAs$2 !== void 0 ? _specifiedAs$2 : transform.loess];\n return _this;\n }\n _createClass(LoessTransformNode, [{\n key: \"clone\",\n value: function clone() {\n return new LoessTransformNode(null, duplicate(this.transform));\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n var _this$transform$group;\n return new Set([this.transform.loess, this.transform.on].concat(_toConsumableArray((_this$transform$group = this.transform.groupby) !== null && _this$transform$group !== void 0 ? _this$transform$group : [])));\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return new Set(this.transform.as);\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return \"LoessTransform \".concat(_hash(this.transform));\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n var _this$transform = this.transform,\n loess = _this$transform.loess,\n on = _this$transform.on,\n rest = _objectWithoutProperties(_this$transform, _excluded);\n var result = _objectSpread({\n type: 'loess',\n x: on,\n y: loess\n }, rest);\n return result;\n }\n }]);\n return LoessTransformNode;\n}(DataFlowNode);","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { array, isString } from 'vega-util';\nimport * as log from '../../log';\nimport { isLookupData, isLookupSelection } from '../../transform';\nimport { duplicate, hash as _hash, varName } from '../../util';\nimport { DataFlowNode, OutputNode } from './dataflow';\nimport { findSource } from './parse';\nimport { SourceNode } from './source';\nimport { DataSourceType } from '../../data';\nexport var LookupNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(LookupNode, _DataFlowNode);\n var _super = _createSuper(LookupNode);\n function LookupNode(parent, transform, secondary) {\n var _this;\n _classCallCheck(this, LookupNode);\n _this = _super.call(this, parent);\n _this.transform = transform;\n _this.secondary = secondary;\n return _this;\n }\n _createClass(LookupNode, [{\n key: \"clone\",\n value: function clone() {\n return new LookupNode(null, duplicate(this.transform), this.secondary);\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n return new Set([this.transform.lookup]);\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return new Set(this.transform.as ? array(this.transform.as) : this.transform.from.fields);\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return \"Lookup \".concat(_hash({\n transform: this.transform,\n secondary: this.secondary\n }));\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n var foreign;\n if (this.transform.from.fields) {\n // lookup a few fields and add create a flat output\n foreign = _objectSpread({\n values: this.transform.from.fields\n }, this.transform.as ? {\n as: array(this.transform.as)\n } : {});\n } else {\n // lookup full record and nest it\n var asName = this.transform.as;\n if (!isString(asName)) {\n log.warn(log.message.NO_FIELDS_NEEDS_AS);\n asName = '_lookup';\n }\n foreign = {\n as: [asName]\n };\n }\n return _objectSpread(_objectSpread({\n type: 'lookup',\n from: this.secondary,\n key: this.transform.from.key,\n fields: [this.transform.lookup]\n }, foreign), this.transform.default ? {\n default: this.transform.default\n } : {});\n }\n }], [{\n key: \"make\",\n value: function make(parent, model, transform, counter) {\n var sources = model.component.data.sources;\n var _transform = transform,\n from = _transform.from;\n var fromOutputNode = null;\n if (isLookupData(from)) {\n var fromSource = findSource(from.data, sources);\n if (!fromSource) {\n fromSource = new SourceNode(from.data);\n sources.push(fromSource);\n }\n var fromOutputName = model.getName(\"lookup_\".concat(counter));\n fromOutputNode = new OutputNode(fromSource, fromOutputName, DataSourceType.Lookup, model.component.data.outputNodeRefCounts);\n model.component.data.outputNodes[fromOutputName] = fromOutputNode;\n } else if (isLookupSelection(from)) {\n var selName = from.param;\n transform = _objectSpread({\n as: selName\n }, transform);\n var selCmpt;\n try {\n selCmpt = model.getSelectionComponent(varName(selName), selName);\n } catch (e) {\n throw new Error(log.message.cannotLookupVariableParameter(selName));\n }\n fromOutputNode = selCmpt.materialized;\n if (!fromOutputNode) {\n throw new Error(log.message.noSameUnitLookup(selName));\n }\n }\n return new LookupNode(parent, transform, fromOutputNode.getSource());\n }\n }]);\n return LookupNode;\n}(DataFlowNode);","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nvar _excluded = [\"quantile\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { duplicate, hash as _hash } from '../../util';\nimport { DataFlowNode } from './dataflow';\n/**\n * A class for quantile transform nodes\n */\nexport var QuantileTransformNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(QuantileTransformNode, _DataFlowNode);\n var _super = _createSuper(QuantileTransformNode);\n function QuantileTransformNode(parent, transform) {\n var _this$transform$as, _specifiedAs$, _specifiedAs$2;\n var _this;\n _classCallCheck(this, QuantileTransformNode);\n _this = _super.call(this, parent);\n _this.transform = transform;\n _this.transform = duplicate(transform); // duplicate to prevent side effects\n var specifiedAs = (_this$transform$as = _this.transform.as) !== null && _this$transform$as !== void 0 ? _this$transform$as : [undefined, undefined];\n _this.transform.as = [(_specifiedAs$ = specifiedAs[0]) !== null && _specifiedAs$ !== void 0 ? _specifiedAs$ : 'prob', (_specifiedAs$2 = specifiedAs[1]) !== null && _specifiedAs$2 !== void 0 ? _specifiedAs$2 : 'value'];\n return _this;\n }\n _createClass(QuantileTransformNode, [{\n key: \"clone\",\n value: function clone() {\n return new QuantileTransformNode(null, duplicate(this.transform));\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n var _this$transform$group;\n return new Set([this.transform.quantile].concat(_toConsumableArray((_this$transform$group = this.transform.groupby) !== null && _this$transform$group !== void 0 ? _this$transform$group : [])));\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return new Set(this.transform.as);\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return \"QuantileTransform \".concat(_hash(this.transform));\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n var _this$transform = this.transform,\n quantile = _this$transform.quantile,\n rest = _objectWithoutProperties(_this$transform, _excluded);\n var result = _objectSpread({\n type: 'quantile',\n field: quantile\n }, rest);\n return result;\n }\n }]);\n return QuantileTransformNode;\n}(DataFlowNode);","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nvar _excluded = [\"regression\", \"on\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { duplicate, hash as _hash } from '../../util';\nimport { DataFlowNode } from './dataflow';\n/**\n * A class for regression transform nodes\n */\nexport var RegressionTransformNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(RegressionTransformNode, _DataFlowNode);\n var _super = _createSuper(RegressionTransformNode);\n function RegressionTransformNode(parent, transform) {\n var _this$transform$as, _specifiedAs$, _specifiedAs$2;\n var _this;\n _classCallCheck(this, RegressionTransformNode);\n _this = _super.call(this, parent);\n _this.transform = transform;\n _this.transform = duplicate(transform); // duplicate to prevent side effects\n var specifiedAs = (_this$transform$as = _this.transform.as) !== null && _this$transform$as !== void 0 ? _this$transform$as : [undefined, undefined];\n _this.transform.as = [(_specifiedAs$ = specifiedAs[0]) !== null && _specifiedAs$ !== void 0 ? _specifiedAs$ : transform.on, (_specifiedAs$2 = specifiedAs[1]) !== null && _specifiedAs$2 !== void 0 ? _specifiedAs$2 : transform.regression];\n return _this;\n }\n _createClass(RegressionTransformNode, [{\n key: \"clone\",\n value: function clone() {\n return new RegressionTransformNode(null, duplicate(this.transform));\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n var _this$transform$group;\n return new Set([this.transform.regression, this.transform.on].concat(_toConsumableArray((_this$transform$group = this.transform.groupby) !== null && _this$transform$group !== void 0 ? _this$transform$group : [])));\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return new Set(this.transform.as);\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return \"RegressionTransform \".concat(_hash(this.transform));\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n var _this$transform = this.transform,\n regression = _this$transform.regression,\n on = _this$transform.on,\n rest = _objectWithoutProperties(_this$transform, _excluded);\n var result = _objectSpread({\n type: 'regression',\n x: on,\n y: regression\n }, rest);\n return result;\n }\n }]);\n return RegressionTransformNode;\n}(DataFlowNode);","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { duplicate, hash as _hash, unique } from '../../util';\nimport { DataFlowNode } from './dataflow';\n/**\n * A class for pivot transform nodes.\n */\nexport var PivotTransformNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(PivotTransformNode, _DataFlowNode);\n var _super = _createSuper(PivotTransformNode);\n function PivotTransformNode(parent, transform) {\n var _this;\n _classCallCheck(this, PivotTransformNode);\n _this = _super.call(this, parent);\n _this.transform = transform;\n return _this;\n }\n _createClass(PivotTransformNode, [{\n key: \"clone\",\n value: function clone() {\n return new PivotTransformNode(null, duplicate(this.transform));\n }\n }, {\n key: \"addDimensions\",\n value: function addDimensions(fields) {\n var _this$transform$group;\n this.transform.groupby = unique(((_this$transform$group = this.transform.groupby) !== null && _this$transform$group !== void 0 ? _this$transform$group : []).concat(fields), function (d) {\n return d;\n });\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return undefined; // return undefined so that potentially everything can depend on the pivot\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n var _this$transform$group2;\n return new Set([this.transform.pivot, this.transform.value].concat(_toConsumableArray((_this$transform$group2 = this.transform.groupby) !== null && _this$transform$group2 !== void 0 ? _this$transform$group2 : [])));\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return \"PivotTransform \".concat(_hash(this.transform));\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n var _this$transform = this.transform,\n pivot = _this$transform.pivot,\n value = _this$transform.value,\n groupby = _this$transform.groupby,\n limit = _this$transform.limit,\n op = _this$transform.op;\n return _objectSpread(_objectSpread(_objectSpread({\n type: 'pivot',\n field: pivot,\n value: value\n }, limit !== undefined ? {\n limit: limit\n } : {}), op !== undefined ? {\n op: op\n } : {}), groupby !== undefined ? {\n groupby: groupby\n } : {});\n }\n }]);\n return PivotTransformNode;\n}(DataFlowNode);","import _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { duplicate, hash as _hash } from '../../util';\nimport { DataFlowNode } from './dataflow';\n/**\n * A class for the sample transform nodes\n */\nexport var SampleTransformNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(SampleTransformNode, _DataFlowNode);\n var _super = _createSuper(SampleTransformNode);\n function SampleTransformNode(parent, transform) {\n var _this;\n _classCallCheck(this, SampleTransformNode);\n _this = _super.call(this, parent);\n _this.transform = transform;\n return _this;\n }\n _createClass(SampleTransformNode, [{\n key: \"clone\",\n value: function clone() {\n return new SampleTransformNode(null, duplicate(this.transform));\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n return new Set();\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return new Set();\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return \"SampleTransform \".concat(_hash(this.transform));\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n return {\n type: 'sample',\n size: this.transform.sample\n };\n }\n }]);\n return SampleTransformNode;\n}(DataFlowNode);","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { isUrlData } from '../../data';\nimport { AggregateNode } from './aggregate';\nimport { BinNode } from './bin';\nimport { CalculateNode } from './calculate';\nimport { OutputNode } from './dataflow';\nimport { DensityTransformNode } from './density';\nimport { ExtentTransformNode } from './extent';\nimport { FacetNode } from './facet';\nimport { FilterNode } from './filter';\nimport { FilterInvalidNode } from './filterinvalid';\nimport { FlattenTransformNode } from './flatten';\nimport { FoldTransformNode } from './fold';\nimport { ParseNode } from './formatparse';\nimport { GeoJSONNode } from './geojson';\nimport { GeoPointNode } from './geopoint';\nimport { GraticuleNode } from './graticule';\nimport { IdentifierNode } from './identifier';\nimport { ImputeNode } from './impute';\nimport { JoinAggregateTransformNode } from './joinaggregate';\nimport { LoessTransformNode } from './loess';\nimport { LookupNode } from './lookup';\nimport { QuantileTransformNode } from './quantile';\nimport { RegressionTransformNode } from './regression';\nimport { PivotTransformNode } from './pivot';\nimport { SampleTransformNode } from './sample';\nimport { SequenceNode } from './sequence';\nimport { SourceNode } from './source';\nimport { StackNode } from './stack';\nimport { TimeUnitNode } from './timeunit';\nimport { WindowTransformNode } from './window';\nfunction makeWalkTree(data) {\n // to name datasources\n var datasetIndex = 0;\n /**\n * Recursively walk down the tree.\n */\n function walkTree(node, dataSource) {\n if (node instanceof SourceNode) {\n // If the source is a named data source or a data source with values, we need\n // to put it in a different data source. Otherwise, Vega may override the data.\n if (!node.isGenerator && !isUrlData(node.data)) {\n data.push(dataSource);\n var newData = {\n name: null,\n source: dataSource.name,\n transform: []\n };\n dataSource = newData;\n }\n }\n if (node instanceof ParseNode) {\n if (node.parent instanceof SourceNode && !dataSource.source) {\n var _dataSource$format, _dataSource$transform;\n // If node's parent is a root source and the data source does not refer to another data source, use normal format parse\n dataSource.format = _objectSpread(_objectSpread({}, (_dataSource$format = dataSource.format) !== null && _dataSource$format !== void 0 ? _dataSource$format : {}), {}, {\n parse: node.assembleFormatParse()\n });\n // add calculates for all nested fields\n (_dataSource$transform = dataSource.transform).push.apply(_dataSource$transform, _toConsumableArray(node.assembleTransforms(true)));\n } else {\n var _dataSource$transform2;\n // Otherwise use Vega expression to parse\n (_dataSource$transform2 = dataSource.transform).push.apply(_dataSource$transform2, _toConsumableArray(node.assembleTransforms()));\n }\n }\n if (node instanceof FacetNode) {\n if (!dataSource.name) {\n dataSource.name = \"data_\".concat(datasetIndex++);\n }\n if (!dataSource.source || dataSource.transform.length > 0) {\n data.push(dataSource);\n node.data = dataSource.name;\n } else {\n node.data = dataSource.source;\n }\n data.push.apply(data, _toConsumableArray(node.assemble()));\n // break here because the rest of the tree has to be taken care of by the facet.\n return;\n }\n if (node instanceof GraticuleNode || node instanceof SequenceNode || node instanceof FilterInvalidNode || node instanceof FilterNode || node instanceof CalculateNode || node instanceof GeoPointNode || node instanceof AggregateNode || node instanceof LookupNode || node instanceof WindowTransformNode || node instanceof JoinAggregateTransformNode || node instanceof FoldTransformNode || node instanceof FlattenTransformNode || node instanceof DensityTransformNode || node instanceof LoessTransformNode || node instanceof QuantileTransformNode || node instanceof RegressionTransformNode || node instanceof IdentifierNode || node instanceof SampleTransformNode || node instanceof PivotTransformNode || node instanceof ExtentTransformNode) {\n dataSource.transform.push(node.assemble());\n }\n if (node instanceof BinNode || node instanceof TimeUnitNode || node instanceof ImputeNode || node instanceof StackNode || node instanceof GeoJSONNode) {\n var _dataSource$transform3;\n (_dataSource$transform3 = dataSource.transform).push.apply(_dataSource$transform3, _toConsumableArray(node.assemble()));\n }\n if (node instanceof OutputNode) {\n if (dataSource.source && dataSource.transform.length === 0) {\n node.setSource(dataSource.source);\n } else if (node.parent instanceof OutputNode) {\n // Note that an output node may be required but we still do not assemble a\n // separate data source for it.\n node.setSource(dataSource.name);\n } else {\n if (!dataSource.name) {\n dataSource.name = \"data_\".concat(datasetIndex++);\n }\n // Here we set the name of the datasource we generated. From now on\n // other assemblers can use it.\n node.setSource(dataSource.name);\n // if this node has more than one child, we will add a datasource automatically\n if (node.numChildren() === 1) {\n data.push(dataSource);\n var _newData = {\n name: null,\n source: dataSource.name,\n transform: []\n };\n dataSource = _newData;\n }\n }\n }\n switch (node.numChildren()) {\n case 0:\n // done\n if (node instanceof OutputNode && (!dataSource.source || dataSource.transform.length > 0)) {\n // do not push empty datasources that are simply references\n data.push(dataSource);\n }\n break;\n case 1:\n walkTree(node.children[0], dataSource);\n break;\n default:\n {\n if (!dataSource.name) {\n dataSource.name = \"data_\".concat(datasetIndex++);\n }\n var source = dataSource.name;\n if (!dataSource.source || dataSource.transform.length > 0) {\n data.push(dataSource);\n } else {\n source = dataSource.source;\n }\n var _iterator = _createForOfIteratorHelper(node.children),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var child = _step.value;\n var _newData2 = {\n name: null,\n source: source,\n transform: []\n };\n walkTree(child, _newData2);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n break;\n }\n }\n }\n return walkTree;\n}\n/**\n * Assemble data sources that are derived from faceted data.\n */\nexport function assembleFacetData(root) {\n var data = [];\n var walkTree = makeWalkTree(data);\n var _iterator2 = _createForOfIteratorHelper(root.children),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var child = _step2.value;\n walkTree(child, {\n source: root.name,\n name: null,\n transform: []\n });\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n return data;\n}\n/**\n * Create Vega data array from a given compiled model and append all of them to the given array\n *\n * @param model\n * @param data array\n * @return modified data array\n */\nexport function assembleRootData(dataComponent, datasets) {\n var data = [];\n // dataComponent.sources.forEach(debug);\n // draw(dataComponent.sources);\n var walkTree = makeWalkTree(data);\n var sourceIndex = 0;\n var _iterator3 = _createForOfIteratorHelper(dataComponent.sources),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var root = _step3.value;\n // assign a name if the source does not have a name yet\n if (!root.hasName()) {\n root.dataName = \"source_\".concat(sourceIndex++);\n }\n var newData = root.assemble();\n walkTree(root, newData);\n }\n // remove empty transform arrays for cleaner output\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n for (var _i = 0, _data = data; _i < _data.length; _i++) {\n var d = _data[_i];\n if (d.transform.length === 0) {\n delete d.transform;\n }\n }\n // move sources without transforms (the ones that are potentially used in lookups) to the beginning\n var whereTo = 0;\n var _iterator4 = _createForOfIteratorHelper(data.entries()),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var _d3$transform;\n var _step4$value = _slicedToArray(_step4.value, 2),\n i = _step4$value[0],\n _d3 = _step4$value[1];\n if (((_d3$transform = _d3.transform) !== null && _d3$transform !== void 0 ? _d3$transform : []).length === 0 && !_d3.source) {\n data.splice(whereTo++, 0, data.splice(i, 1)[0]);\n }\n }\n // now fix the from references in lookup transforms\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n for (var _i2 = 0, _data2 = data; _i2 < _data2.length; _i2++) {\n var _d$transform;\n var _d = _data2[_i2];\n var _iterator5 = _createForOfIteratorHelper((_d$transform = _d.transform) !== null && _d$transform !== void 0 ? _d$transform : []),\n _step5;\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var t = _step5.value;\n if (t.type === 'lookup') {\n t.from = dataComponent.outputNodes[t.from].getSource();\n }\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n }\n // inline values for datasets that are in the datastore\n for (var _i3 = 0, _data3 = data; _i3 < _data3.length; _i3++) {\n var _d2 = _data3[_i3];\n if (_d2.name in datasets) {\n _d2.values = datasets[_d2.name];\n }\n }\n return data;\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { isArray } from 'vega-util';\nimport { FACET_CHANNELS } from '../../channel';\nimport { title as fieldDefTitle } from '../../channeldef';\nimport { contains, getFirstDefined } from '../../util';\nimport { isSignalRef } from '../../vega.schema';\nimport { assembleAxis } from '../axis/assemble';\nimport { parseGuideResolve } from '../resolve';\nimport { getHeaderProperty } from './common';\nexport function getHeaderType(orient) {\n if (orient === 'top' || orient === 'left' || isSignalRef(orient)) {\n // we always use header for orient signal since we can't dynamically make header becomes footer\n return 'header';\n }\n return 'footer';\n}\nexport function parseFacetHeaders(model) {\n var _iterator = _createForOfIteratorHelper(FACET_CHANNELS),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var channel = _step.value;\n parseFacetHeader(model, channel);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n mergeChildAxis(model, 'x');\n mergeChildAxis(model, 'y');\n}\nfunction parseFacetHeader(model, channel) {\n var facet = model.facet,\n config = model.config,\n child = model.child,\n component = model.component;\n if (model.channelHasField(channel)) {\n var _fieldDef$header;\n var fieldDef = facet[channel];\n var titleConfig = getHeaderProperty('title', null, config, channel);\n var title = fieldDefTitle(fieldDef, config, {\n allowDisabling: true,\n includeDefault: titleConfig === undefined || !!titleConfig\n });\n if (child.component.layoutHeaders[channel].title) {\n // TODO: better handle multiline titles\n title = isArray(title) ? title.join(', ') : title;\n // merge title with child to produce \"Title / Subtitle / Sub-subtitle\"\n title += \" / \".concat(child.component.layoutHeaders[channel].title);\n child.component.layoutHeaders[channel].title = null;\n }\n var labelOrient = getHeaderProperty('labelOrient', fieldDef.header, config, channel);\n var labels = fieldDef.header !== null ? getFirstDefined((_fieldDef$header = fieldDef.header) === null || _fieldDef$header === void 0 ? void 0 : _fieldDef$header.labels, config.header.labels, true) : false;\n var headerType = contains(['bottom', 'right'], labelOrient) ? 'footer' : 'header';\n component.layoutHeaders[channel] = _defineProperty({\n title: fieldDef.header !== null ? title : null,\n facetFieldDef: fieldDef\n }, headerType, channel === 'facet' ? [] : [makeHeaderComponent(model, channel, labels)]);\n }\n}\nfunction makeHeaderComponent(model, channel, labels) {\n var sizeType = channel === 'row' ? 'height' : 'width';\n return {\n labels: labels,\n sizeSignal: model.child.component.layoutSize.get(sizeType) ? model.child.getSizeSignalRef(sizeType) : undefined,\n axes: []\n };\n}\nfunction mergeChildAxis(model, channel) {\n var child = model.child;\n if (child.component.axes[channel]) {\n var _model$component = model.component,\n layoutHeaders = _model$component.layoutHeaders,\n resolve = _model$component.resolve;\n resolve.axis[channel] = parseGuideResolve(resolve, channel);\n if (resolve.axis[channel] === 'shared') {\n // For shared axis, move the axes to facet's header or footer\n var headerChannel = channel === 'x' ? 'column' : 'row';\n var layoutHeader = layoutHeaders[headerChannel];\n var _iterator2 = _createForOfIteratorHelper(child.component.axes[channel]),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _layoutHeader$headerT;\n var axisComponent = _step2.value;\n var headerType = getHeaderType(axisComponent.get('orient'));\n (_layoutHeader$headerT = layoutHeader[headerType]) !== null && _layoutHeader$headerT !== void 0 ? _layoutHeader$headerT : layoutHeader[headerType] = [makeHeaderComponent(model, headerChannel, false)];\n // FIXME: assemble shouldn't be called here, but we do it this way so we only extract the main part of the axes\n var mainAxis = assembleAxis(axisComponent, 'main', model.config, {\n header: true\n });\n if (mainAxis) {\n // LayoutHeader no longer keep track of property precedence, thus let's combine.\n layoutHeader[headerType][0].axes.push(mainAxis);\n }\n axisComponent.mainExtracted = true;\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n } else {\n // Otherwise do nothing for independent axes\n }\n }\n}","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { getPositionScaleChannel, getSizeChannel, POSITION_SCALE_CHANNELS } from '../../channel';\nimport { getViewConfigContinuousSize, getViewConfigDiscreteSize } from '../../config';\nimport { hasDiscreteDomain } from '../../scale';\nimport { isStep } from '../../spec/base';\nimport { isVgRangeStep } from '../../vega.schema';\nimport { defaultScaleResolve } from '../resolve';\nimport { mergeValuesWithExplicit } from '../split';\nimport { getSizeTypeFromLayoutSizeType } from './component';\nexport function parseLayerLayoutSize(model) {\n parseChildrenLayoutSize(model);\n parseNonUnitLayoutSizeForChannel(model, 'width');\n parseNonUnitLayoutSizeForChannel(model, 'height');\n}\nexport function parseConcatLayoutSize(model) {\n parseChildrenLayoutSize(model);\n // for columns === 1 (vconcat), we can completely merge width. Otherwise, we can treat merged width as childWidth.\n var widthType = model.layout.columns === 1 ? 'width' : 'childWidth';\n // for columns === undefined (hconcat), we can completely merge height. Otherwise, we can treat merged height as childHeight.\n var heightType = model.layout.columns === undefined ? 'height' : 'childHeight';\n parseNonUnitLayoutSizeForChannel(model, widthType);\n parseNonUnitLayoutSizeForChannel(model, heightType);\n}\nexport function parseChildrenLayoutSize(model) {\n var _iterator = _createForOfIteratorHelper(model.children),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var child = _step.value;\n child.parseLayoutSize();\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n}\n/**\n * Merge child layout size (width or height).\n */\nfunction parseNonUnitLayoutSizeForChannel(model, layoutSizeType) {\n /*\n * For concat, the parent width or height might not be the same as the children's shared height.\n * For example, hconcat's subviews may share width, but the shared width is not the hconcat view's width.\n *\n * layoutSizeType represents the output of the view (could be childWidth/childHeight/width/height)\n * while the sizeType represents the properties of the child.\n */\n var sizeType = getSizeTypeFromLayoutSizeType(layoutSizeType);\n var channel = getPositionScaleChannel(sizeType);\n var resolve = model.component.resolve;\n var layoutSizeCmpt = model.component.layoutSize;\n var mergedSize;\n // Try to merge layout size\n var _iterator2 = _createForOfIteratorHelper(model.children),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _resolve$scale$channe;\n var _child = _step2.value;\n var childSize = _child.component.layoutSize.getWithExplicit(sizeType);\n var scaleResolve = (_resolve$scale$channe = resolve.scale[channel]) !== null && _resolve$scale$channe !== void 0 ? _resolve$scale$channe : defaultScaleResolve(channel, model);\n if (scaleResolve === 'independent' && childSize.value === 'step') {\n // Do not merge independent scales with range-step as their size depends\n // on the scale domains, which can be different between scales.\n mergedSize = undefined;\n break;\n }\n if (mergedSize) {\n if (scaleResolve === 'independent' && mergedSize.value !== childSize.value) {\n // For independent scale, only merge if all the sizes are the same.\n // If the values are different, abandon the merge!\n mergedSize = undefined;\n break;\n }\n mergedSize = mergeValuesWithExplicit(mergedSize, childSize, sizeType, '');\n } else {\n mergedSize = childSize;\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n if (mergedSize) {\n // If merged, rename size and set size of all children.\n var _iterator3 = _createForOfIteratorHelper(model.children),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var child = _step3.value;\n model.renameSignal(child.getName(sizeType), model.getName(layoutSizeType));\n child.component.layoutSize.set(sizeType, 'merged', false);\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n layoutSizeCmpt.setWithExplicit(layoutSizeType, mergedSize);\n } else {\n layoutSizeCmpt.setWithExplicit(layoutSizeType, {\n explicit: false,\n value: undefined\n });\n }\n}\nexport function parseUnitLayoutSize(model) {\n var size = model.size,\n component = model.component;\n var _iterator4 = _createForOfIteratorHelper(POSITION_SCALE_CHANNELS),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var channel = _step4.value;\n var sizeType = getSizeChannel(channel);\n if (size[sizeType]) {\n var specifiedSize = size[sizeType];\n component.layoutSize.set(sizeType, isStep(specifiedSize) ? 'step' : specifiedSize, true);\n } else {\n var defaultSize = defaultUnitSize(model, sizeType);\n component.layoutSize.set(sizeType, defaultSize, false);\n }\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n}\nfunction defaultUnitSize(model, sizeType) {\n var channel = sizeType === 'width' ? 'x' : 'y';\n var config = model.config;\n var scaleComponent = model.getScaleComponent(channel);\n if (scaleComponent) {\n var scaleType = scaleComponent.get('type');\n var range = scaleComponent.get('range');\n if (hasDiscreteDomain(scaleType)) {\n var size = getViewConfigDiscreteSize(config.view, sizeType);\n if (isVgRangeStep(range) || isStep(size)) {\n // For discrete domain with range.step, use dynamic width/height\n return 'step';\n } else {\n return size;\n }\n } else {\n return getViewConfigContinuousSize(config.view, sizeType);\n }\n } else if (model.hasProjection || model.mark === 'arc') {\n // arc should use continuous size by default otherwise the pie is extremely small\n return getViewConfigContinuousSize(config.view, sizeType);\n } else {\n var _size = getViewConfigDiscreteSize(config.view, sizeType);\n return isStep(_size) ? _size.step : _size;\n }\n}","import _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _assertThisInitialized from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js\";\nimport _get from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/get.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport \"core-js/modules/es.array.flat.js\";\nimport \"core-js/modules/es.array.unscopables.flat.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { isArray } from 'vega-util';\nimport { isBinning } from '../bin';\nimport { COLUMN, FACET_CHANNELS, POSITION_SCALE_CHANNELS, ROW } from '../channel';\nimport { initFieldDef, vgField } from '../channeldef';\nimport { replaceExprRef } from '../expr';\nimport * as log from '../log';\nimport { hasDiscreteDomain } from '../scale';\nimport { DEFAULT_SORT_OP, isSortField } from '../sort';\nimport { isFacetMapping } from '../spec/facet';\nimport { keys } from '../util';\nimport { isVgRangeStep } from '../vega.schema';\nimport { buildModel } from './buildmodel';\nimport { assembleFacetData } from './data/assemble';\nimport { sortArrayIndexField } from './data/calculate';\nimport { parseData as _parseData } from './data/parse';\nimport { assembleLabelTitle as _assembleLabelTitle } from './header/assemble';\nimport { getHeaderChannel, getHeaderProperty } from './header/common';\nimport { HEADER_CHANNELS, HEADER_TYPES } from './header/component';\nimport { parseFacetHeaders } from './header/parse';\nimport { parseChildrenLayoutSize } from './layoutsize/parse';\nimport { ModelWithField } from './model';\nimport { assembleDomain, getFieldFromDomain } from './scale/domain';\nimport { assembleFacetSignals } from './selection/assemble';\nexport function facetSortFieldName(fieldDef, sort, opt) {\n return vgField(sort, _objectSpread({\n suffix: \"by_\".concat(vgField(fieldDef))\n }, opt !== null && opt !== void 0 ? opt : {}));\n}\nexport var FacetModel = /*#__PURE__*/function (_ModelWithField) {\n _inherits(FacetModel, _ModelWithField);\n var _super = _createSuper(FacetModel);\n function FacetModel(spec, parent, parentGivenName, config) {\n var _this;\n _classCallCheck(this, FacetModel);\n _this = _super.call(this, spec, 'facet', parent, parentGivenName, config, spec.resolve);\n _this.child = buildModel(spec.spec, _assertThisInitialized(_this), _this.getName('child'), undefined, config);\n _this.children = [_this.child];\n _this.facet = _this.initFacet(spec.facet);\n return _this;\n }\n _createClass(FacetModel, [{\n key: \"initFacet\",\n value: function initFacet(facet) {\n // clone to prevent side effect to the original spec\n if (!isFacetMapping(facet)) {\n return {\n facet: this.initFacetFieldDef(facet, 'facet')\n };\n }\n var channels = keys(facet);\n var normalizedFacet = {};\n var _iterator = _createForOfIteratorHelper(channels),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var channel = _step.value;\n if (![ROW, COLUMN].includes(channel)) {\n // Drop unsupported channel\n log.warn(log.message.incompatibleChannel(channel, 'facet'));\n break;\n }\n var fieldDef = facet[channel];\n if (fieldDef.field === undefined) {\n log.warn(log.message.emptyFieldDef(fieldDef, channel));\n break;\n }\n normalizedFacet[channel] = this.initFacetFieldDef(fieldDef, channel);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return normalizedFacet;\n }\n }, {\n key: \"initFacetFieldDef\",\n value: function initFacetFieldDef(fieldDef, channel) {\n // Cast because we call initFieldDef, which assumes general FieldDef.\n // However, FacetFieldDef is a bit more constrained than the general FieldDef\n var facetFieldDef = initFieldDef(fieldDef, channel);\n if (facetFieldDef.header) {\n facetFieldDef.header = replaceExprRef(facetFieldDef.header);\n } else if (facetFieldDef.header === null) {\n facetFieldDef.header = null;\n }\n return facetFieldDef;\n }\n }, {\n key: \"channelHasField\",\n value: function channelHasField(channel) {\n return !!this.facet[channel];\n }\n }, {\n key: \"fieldDef\",\n value: function fieldDef(channel) {\n return this.facet[channel];\n }\n }, {\n key: \"parseData\",\n value: function parseData() {\n this.component.data = _parseData(this);\n this.child.parseData();\n }\n }, {\n key: \"parseLayoutSize\",\n value: function parseLayoutSize() {\n parseChildrenLayoutSize(this);\n }\n }, {\n key: \"parseSelections\",\n value: function parseSelections() {\n // As a facet has a single child, the selection components are the same.\n // The child maintains its selections to assemble signals, which remain\n // within its unit.\n this.child.parseSelections();\n this.component.selection = this.child.component.selection;\n }\n }, {\n key: \"parseMarkGroup\",\n value: function parseMarkGroup() {\n this.child.parseMarkGroup();\n }\n }, {\n key: \"parseAxesAndHeaders\",\n value: function parseAxesAndHeaders() {\n this.child.parseAxesAndHeaders();\n parseFacetHeaders(this);\n }\n }, {\n key: \"assembleSelectionTopLevelSignals\",\n value: function assembleSelectionTopLevelSignals(signals) {\n return this.child.assembleSelectionTopLevelSignals(signals);\n }\n }, {\n key: \"assembleSignals\",\n value: function assembleSignals() {\n this.child.assembleSignals();\n return [];\n }\n }, {\n key: \"assembleSelectionData\",\n value: function assembleSelectionData(data) {\n return this.child.assembleSelectionData(data);\n }\n }, {\n key: \"getHeaderLayoutMixins\",\n value: function getHeaderLayoutMixins() {\n var layoutMixins = {};\n var _iterator2 = _createForOfIteratorHelper(FACET_CHANNELS),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var channel = _step2.value;\n var _iterator3 = _createForOfIteratorHelper(HEADER_TYPES),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var headerType = _step3.value;\n var layoutHeaderComponent = this.component.layoutHeaders[channel];\n var headerComponent = layoutHeaderComponent[headerType];\n var facetFieldDef = layoutHeaderComponent.facetFieldDef;\n if (facetFieldDef) {\n var titleOrient = getHeaderProperty('titleOrient', facetFieldDef.header, this.config, channel);\n if (['right', 'bottom'].includes(titleOrient)) {\n var _layoutMixins$titleAn;\n var headerChannel = getHeaderChannel(channel, titleOrient);\n (_layoutMixins$titleAn = layoutMixins.titleAnchor) !== null && _layoutMixins$titleAn !== void 0 ? _layoutMixins$titleAn : layoutMixins.titleAnchor = {};\n layoutMixins.titleAnchor[headerChannel] = 'end';\n }\n }\n if (headerComponent !== null && headerComponent !== void 0 && headerComponent[0]) {\n // set header/footerBand\n var sizeType = channel === 'row' ? 'height' : 'width';\n var bandType = headerType === 'header' ? 'headerBand' : 'footerBand';\n if (channel !== 'facet' && !this.child.component.layoutSize.get(sizeType)) {\n var _layoutMixins$bandTyp;\n // If facet child does not have size signal, then apply headerBand\n (_layoutMixins$bandTyp = layoutMixins[bandType]) !== null && _layoutMixins$bandTyp !== void 0 ? _layoutMixins$bandTyp : layoutMixins[bandType] = {};\n layoutMixins[bandType][channel] = 0.5;\n }\n if (layoutHeaderComponent.title) {\n var _layoutMixins$offset;\n (_layoutMixins$offset = layoutMixins.offset) !== null && _layoutMixins$offset !== void 0 ? _layoutMixins$offset : layoutMixins.offset = {};\n layoutMixins.offset[channel === 'row' ? 'rowTitle' : 'columnTitle'] = 10;\n }\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n return layoutMixins;\n }\n }, {\n key: \"assembleDefaultLayout\",\n value: function assembleDefaultLayout() {\n var _this$facet = this.facet,\n column = _this$facet.column,\n row = _this$facet.row;\n var columns = column ? this.columnDistinctSignal() : row ? 1 : undefined;\n var align = 'all';\n // Do not align the cells if the scale corresponding to the direction is indepent.\n // We always align when we facet into both row and column.\n if (!row && this.component.resolve.scale.x === 'independent') {\n align = 'none';\n } else if (!column && this.component.resolve.scale.y === 'independent') {\n align = 'none';\n }\n return _objectSpread(_objectSpread(_objectSpread({}, this.getHeaderLayoutMixins()), columns ? {\n columns: columns\n } : {}), {}, {\n bounds: 'full',\n align: align\n });\n }\n }, {\n key: \"assembleLayoutSignals\",\n value: function assembleLayoutSignals() {\n // FIXME(https://github.com/vega/vega-lite/issues/1193): this can be incorrect if we have independent scales.\n return this.child.assembleLayoutSignals();\n }\n }, {\n key: \"columnDistinctSignal\",\n value: function columnDistinctSignal() {\n if (this.parent && this.parent instanceof FacetModel) {\n // For nested facet, we will add columns to group mark instead\n // See discussion in https://github.com/vega/vega/issues/952\n // and https://github.com/vega/vega-view/releases/tag/v1.2.6\n return undefined;\n } else {\n // In facetNode.assemble(), the name is always this.getName('column') + '_layout'.\n var facetLayoutDataName = this.getName('column_domain');\n return {\n signal: \"length(data('\".concat(facetLayoutDataName, \"'))\")\n };\n }\n }\n }, {\n key: \"assembleGroupStyle\",\n value: function assembleGroupStyle() {\n return undefined;\n }\n }, {\n key: \"assembleGroup\",\n value: function assembleGroup(signals) {\n if (this.parent && this.parent instanceof FacetModel) {\n // Provide number of columns for layout.\n // See discussion in https://github.com/vega/vega/issues/952\n // and https://github.com/vega/vega-view/releases/tag/v1.2.6\n return _objectSpread(_objectSpread({}, this.channelHasField('column') ? {\n encode: {\n update: {\n // TODO(https://github.com/vega/vega-lite/issues/2759):\n // Correct the signal for facet of concat of facet_column\n columns: {\n field: vgField(this.facet.column, {\n prefix: 'distinct'\n })\n }\n }\n }\n } : {}), _get(_getPrototypeOf(FacetModel.prototype), \"assembleGroup\", this).call(this, signals));\n }\n return _get(_getPrototypeOf(FacetModel.prototype), \"assembleGroup\", this).call(this, signals);\n }\n /**\n * Aggregate cardinality for calculating size\n */\n }, {\n key: \"getCardinalityAggregateForChild\",\n value: function getCardinalityAggregateForChild() {\n var fields = [];\n var ops = [];\n var as = [];\n if (this.child instanceof FacetModel) {\n if (this.child.channelHasField('column')) {\n var field = vgField(this.child.facet.column);\n fields.push(field);\n ops.push('distinct');\n as.push(\"distinct_\".concat(field));\n }\n } else {\n var _iterator4 = _createForOfIteratorHelper(POSITION_SCALE_CHANNELS),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var channel = _step4.value;\n var childScaleComponent = this.child.component.scales[channel];\n if (childScaleComponent && !childScaleComponent.merged) {\n var type = childScaleComponent.get('type');\n var range = childScaleComponent.get('range');\n if (hasDiscreteDomain(type) && isVgRangeStep(range)) {\n var domain = assembleDomain(this.child, channel);\n var _field = getFieldFromDomain(domain);\n if (_field) {\n fields.push(_field);\n ops.push('distinct');\n as.push(\"distinct_\".concat(_field));\n } else {\n log.warn(log.message.unknownField(channel));\n }\n }\n }\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n }\n return {\n fields: fields,\n ops: ops,\n as: as\n };\n }\n }, {\n key: \"assembleFacet\",\n value: function assembleFacet() {\n var _this$component$data$ = this.component.data.facetRoot,\n name = _this$component$data$.name,\n data = _this$component$data$.data;\n var _this$facet2 = this.facet,\n row = _this$facet2.row,\n column = _this$facet2.column;\n var _this$getCardinalityA = this.getCardinalityAggregateForChild(),\n fields = _this$getCardinalityA.fields,\n ops = _this$getCardinalityA.ops,\n as = _this$getCardinalityA.as;\n var groupby = [];\n var _iterator5 = _createForOfIteratorHelper(FACET_CHANNELS),\n _step5;\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var channel = _step5.value;\n var fieldDef = this.facet[channel];\n if (fieldDef) {\n groupby.push(vgField(fieldDef));\n var bin = fieldDef.bin,\n sort = fieldDef.sort;\n if (isBinning(bin)) {\n groupby.push(vgField(fieldDef, {\n binSuffix: 'end'\n }));\n }\n if (isSortField(sort)) {\n var field = sort.field,\n _sort$op = sort.op,\n op = _sort$op === void 0 ? DEFAULT_SORT_OP : _sort$op;\n var outputName = facetSortFieldName(fieldDef, sort);\n if (row && column) {\n // For crossed facet, use pre-calculate field as it requires a different groupby\n // For each calculated field, apply max and assign them to the same name as\n // all values of the same group should be the same anyway.\n fields.push(outputName);\n ops.push('max');\n as.push(outputName);\n } else {\n fields.push(field);\n ops.push(op);\n as.push(outputName);\n }\n } else if (isArray(sort)) {\n var _outputName = sortArrayIndexField(fieldDef, channel);\n fields.push(_outputName);\n ops.push('max');\n as.push(_outputName);\n }\n }\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n var cross = !!row && !!column;\n return _objectSpread({\n name: name,\n data: data,\n groupby: groupby\n }, cross || fields.length > 0 ? {\n aggregate: _objectSpread(_objectSpread({}, cross ? {\n cross: cross\n } : {}), fields.length ? {\n fields: fields,\n ops: ops,\n as: as\n } : {})\n } : {});\n }\n }, {\n key: \"facetSortFields\",\n value: function facetSortFields(channel) {\n var facet = this.facet;\n var fieldDef = facet[channel];\n if (fieldDef) {\n if (isSortField(fieldDef.sort)) {\n return [facetSortFieldName(fieldDef, fieldDef.sort, {\n expr: 'datum'\n })];\n } else if (isArray(fieldDef.sort)) {\n return [sortArrayIndexField(fieldDef, channel, {\n expr: 'datum'\n })];\n }\n return [vgField(fieldDef, {\n expr: 'datum'\n })];\n }\n return [];\n }\n }, {\n key: \"facetSortOrder\",\n value: function facetSortOrder(channel) {\n var facet = this.facet;\n var fieldDef = facet[channel];\n if (fieldDef) {\n var sort = fieldDef.sort;\n var order = (isSortField(sort) ? sort.order : !isArray(sort) && sort) || 'ascending';\n return [order];\n }\n return [];\n }\n }, {\n key: \"assembleLabelTitle\",\n value: function assembleLabelTitle() {\n var facet = this.facet,\n config = this.config;\n if (facet.facet) {\n // Facet always uses title to display labels\n return _assembleLabelTitle(facet.facet, 'facet', config);\n }\n var ORTHOGONAL_ORIENT = {\n row: ['top', 'bottom'],\n column: ['left', 'right']\n };\n var _iterator6 = _createForOfIteratorHelper(HEADER_CHANNELS),\n _step6;\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var channel = _step6.value;\n if (facet[channel]) {\n var _facet$channel;\n var labelOrient = getHeaderProperty('labelOrient', (_facet$channel = facet[channel]) === null || _facet$channel === void 0 ? void 0 : _facet$channel.header, config, channel);\n if (ORTHOGONAL_ORIENT[channel].includes(labelOrient)) {\n // Row/Column with orthogonal labelOrient must use title to display labels\n return _assembleLabelTitle(facet[channel], channel, config);\n }\n }\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n return undefined;\n }\n }, {\n key: \"assembleMarks\",\n value: function assembleMarks() {\n var _this2 = this;\n var child = this.child;\n // If we facet by two dimensions, we need to add a cross operator to the aggregation\n // so that we create all groups\n var facetRoot = this.component.data.facetRoot;\n var data = assembleFacetData(facetRoot);\n var encodeEntry = child.assembleGroupEncodeEntry(false);\n var title = this.assembleLabelTitle() || child.assembleTitle();\n var style = child.assembleGroupStyle();\n var markGroup = _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({\n name: this.getName('cell'),\n type: 'group'\n }, title ? {\n title: title\n } : {}), style ? {\n style: style\n } : {}), {}, {\n from: {\n facet: this.assembleFacet()\n },\n // TODO: move this to after data\n sort: {\n field: FACET_CHANNELS.map(function (c) {\n return _this2.facetSortFields(c);\n }).flat(),\n order: FACET_CHANNELS.map(function (c) {\n return _this2.facetSortOrder(c);\n }).flat()\n }\n }, data.length > 0 ? {\n data: data\n } : {}), encodeEntry ? {\n encode: {\n update: encodeEntry\n }\n } : {}), child.assembleGroup(assembleFacetSignals(this, [])));\n return [markGroup];\n }\n }, {\n key: \"getMapping\",\n value: function getMapping() {\n return this.facet;\n }\n }]);\n return FacetModel;\n}(ModelWithField);","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { AncestorParse } from '.';\nimport { isGenerator, isGraticuleGenerator, isInlineData, isNamedData, isSequenceGenerator, isUrlData, DataSourceType } from '../../data';\nimport * as log from '../../log';\nimport { isAggregate, isBin, isCalculate, isDensity, isExtent, isFilter, isFlatten, isFold, isImpute, isJoinAggregate, isLoess, isLookup, isPivot, isQuantile, isRegression, isSample, isStack, isTimeUnit, isWindow } from '../../transform';\nimport { deepEqual, mergeDeep } from '../../util';\nimport { isFacetModel, isLayerModel, isUnitModel } from '../model';\nimport { requiresSelectionId } from '../selection';\nimport { materializeSelections } from '../selection/parse';\nimport { AggregateNode } from './aggregate';\nimport { BinNode } from './bin';\nimport { CalculateNode } from './calculate';\nimport { OutputNode } from './dataflow';\nimport { DensityTransformNode } from './density';\nimport { ExtentTransformNode } from './extent';\nimport { FacetNode } from './facet';\nimport { FilterNode } from './filter';\nimport { FilterInvalidNode } from './filterinvalid';\nimport { FlattenTransformNode } from './flatten';\nimport { FoldTransformNode } from './fold';\nimport { getImplicitFromEncoding, getImplicitFromFilterTransform, getImplicitFromSelection, ParseNode } from './formatparse';\nimport { GeoJSONNode } from './geojson';\nimport { GeoPointNode } from './geopoint';\nimport { GraticuleNode } from './graticule';\nimport { IdentifierNode } from './identifier';\nimport { ImputeNode } from './impute';\nimport { JoinAggregateTransformNode } from './joinaggregate';\nimport { makeJoinAggregateFromFacet } from './joinaggregatefacet';\nimport { LoessTransformNode } from './loess';\nimport { LookupNode } from './lookup';\nimport { PivotTransformNode } from './pivot';\nimport { QuantileTransformNode } from './quantile';\nimport { RegressionTransformNode } from './regression';\nimport { SampleTransformNode } from './sample';\nimport { SequenceNode } from './sequence';\nimport { SourceNode } from './source';\nimport { StackNode } from './stack';\nimport { TimeUnitNode } from './timeunit';\nimport { WindowTransformNode } from './window';\nexport function findSource(data, sources) {\n var _iterator = _createForOfIteratorHelper(sources),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _data$format, _otherData$format, _data$format2, _otherData$format2;\n var other = _step.value;\n var otherData = other.data;\n // if both datasets have a name defined, we cannot merge\n if (data.name && other.hasName() && data.name !== other.dataName) {\n continue;\n }\n var formatMesh = (_data$format = data['format']) === null || _data$format === void 0 ? void 0 : _data$format.mesh;\n var otherFeature = (_otherData$format = otherData.format) === null || _otherData$format === void 0 ? void 0 : _otherData$format.feature;\n // feature and mesh are mutually exclusive\n if (formatMesh && otherFeature) {\n continue;\n }\n // we have to extract the same feature or mesh\n var formatFeature = (_data$format2 = data['format']) === null || _data$format2 === void 0 ? void 0 : _data$format2.feature;\n if ((formatFeature || otherFeature) && formatFeature !== otherFeature) {\n continue;\n }\n var otherMesh = (_otherData$format2 = otherData.format) === null || _otherData$format2 === void 0 ? void 0 : _otherData$format2.mesh;\n if ((formatMesh || otherMesh) && formatMesh !== otherMesh) {\n continue;\n }\n if (isInlineData(data) && isInlineData(otherData)) {\n if (deepEqual(data.values, otherData.values)) {\n return other;\n }\n } else if (isUrlData(data) && isUrlData(otherData)) {\n if (data.url === otherData.url) {\n return other;\n }\n } else if (isNamedData(data)) {\n if (data.name === other.dataName) {\n return other;\n }\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return null;\n}\nfunction parseRoot(model, sources) {\n if (model.data || !model.parent) {\n // if the model defines a data source or is the root, create a source node\n if (model.data === null) {\n // data: null means we should ignore the parent's data so we just create a new data source\n var source = new SourceNode({\n values: []\n });\n sources.push(source);\n return source;\n }\n var existingSource = findSource(model.data, sources);\n if (existingSource) {\n if (!isGenerator(model.data)) {\n existingSource.data.format = mergeDeep({}, model.data.format, existingSource.data.format);\n }\n // if the new source has a name but the existing one does not, we can set it\n if (!existingSource.hasName() && model.data.name) {\n existingSource.dataName = model.data.name;\n }\n return existingSource;\n } else {\n var _source = new SourceNode(model.data);\n sources.push(_source);\n return _source;\n }\n } else {\n // If we don't have a source defined (overriding parent's data), use the parent's facet root or main.\n return model.parent.component.data.facetRoot ? model.parent.component.data.facetRoot : model.parent.component.data.main;\n }\n}\n/**\n * Parses a transform array into a chain of connected dataflow nodes.\n */\nexport function parseTransformArray(head, model, ancestorParse) {\n var lookupCounter = 0;\n var _iterator2 = _createForOfIteratorHelper(model.transforms),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var t = _step2.value;\n var derivedType = undefined;\n var transformNode = void 0;\n if (isCalculate(t)) {\n transformNode = head = new CalculateNode(head, t);\n derivedType = 'derived';\n } else if (isFilter(t)) {\n var _ParseNode$makeWithAn;\n var implicit = getImplicitFromFilterTransform(t);\n transformNode = head = (_ParseNode$makeWithAn = ParseNode.makeWithAncestors(head, {}, implicit, ancestorParse)) !== null && _ParseNode$makeWithAn !== void 0 ? _ParseNode$makeWithAn : head;\n head = new FilterNode(head, model, t.filter);\n } else if (isBin(t)) {\n transformNode = head = BinNode.makeFromTransform(head, t, model);\n derivedType = 'number';\n } else if (isTimeUnit(t)) {\n derivedType = 'date';\n var parsedAs = ancestorParse.getWithExplicit(t.field);\n // Create parse node because the input to time unit is always date.\n if (parsedAs.value === undefined) {\n head = new ParseNode(head, _defineProperty({}, t.field, derivedType));\n ancestorParse.set(t.field, derivedType, false);\n }\n transformNode = head = TimeUnitNode.makeFromTransform(head, t);\n } else if (isAggregate(t)) {\n transformNode = head = AggregateNode.makeFromTransform(head, t);\n derivedType = 'number';\n if (requiresSelectionId(model)) {\n head = new IdentifierNode(head);\n }\n } else if (isLookup(t)) {\n transformNode = head = LookupNode.make(head, model, t, lookupCounter++);\n derivedType = 'derived';\n } else if (isWindow(t)) {\n transformNode = head = new WindowTransformNode(head, t);\n derivedType = 'number';\n } else if (isJoinAggregate(t)) {\n transformNode = head = new JoinAggregateTransformNode(head, t);\n derivedType = 'number';\n } else if (isStack(t)) {\n transformNode = head = StackNode.makeFromTransform(head, t);\n derivedType = 'derived';\n } else if (isFold(t)) {\n transformNode = head = new FoldTransformNode(head, t);\n derivedType = 'derived';\n } else if (isExtent(t)) {\n transformNode = head = new ExtentTransformNode(head, t);\n derivedType = 'derived';\n } else if (isFlatten(t)) {\n transformNode = head = new FlattenTransformNode(head, t);\n derivedType = 'derived';\n } else if (isPivot(t)) {\n transformNode = head = new PivotTransformNode(head, t);\n derivedType = 'derived';\n } else if (isSample(t)) {\n head = new SampleTransformNode(head, t);\n } else if (isImpute(t)) {\n transformNode = head = ImputeNode.makeFromTransform(head, t);\n derivedType = 'derived';\n } else if (isDensity(t)) {\n transformNode = head = new DensityTransformNode(head, t);\n derivedType = 'derived';\n } else if (isQuantile(t)) {\n transformNode = head = new QuantileTransformNode(head, t);\n derivedType = 'derived';\n } else if (isRegression(t)) {\n transformNode = head = new RegressionTransformNode(head, t);\n derivedType = 'derived';\n } else if (isLoess(t)) {\n transformNode = head = new LoessTransformNode(head, t);\n derivedType = 'derived';\n } else {\n log.warn(log.message.invalidTransformIgnored(t));\n continue;\n }\n if (transformNode && derivedType !== undefined) {\n var _transformNode$produc;\n var _iterator3 = _createForOfIteratorHelper((_transformNode$produc = transformNode.producedFields()) !== null && _transformNode$produc !== void 0 ? _transformNode$produc : []),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var field = _step3.value;\n ancestorParse.set(field, derivedType, false);\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n return head;\n}\n/*\nDescription of the dataflow (http://asciiflow.com/):\n +--------+\n | Source |\n +---+----+\n |\n v\n FormatParse\n (explicit)\n |\n v\n Transforms\n(Filter, Calculate, Binning, TimeUnit, Aggregate, Window, ...)\n |\n v\n FormatParse\n (implicit)\n |\n v\n Binning (in `encoding`)\n |\n v\n Timeunit (in `encoding`)\n |\n v\nFormula From Sort Array\n |\n v\n +--+--+\n | Raw |\n +-----+\n |\n v\n Aggregate (in `encoding`)\n |\n v\n Stack (in `encoding`)\n |\n v\n Invalid Filter\n |\n v\n +----------+\n | Main |\n +----------+\n |\n v\n +-------+\n | Facet |----> \"column\", \"column-layout\", and \"row\"\n +-------+\n |\n v\n ...Child data...\n*/\nexport function parseData(model) {\n var _data$format3, _ParseNode$makeExplic, _ParseNode$makeWithAn2;\n var head = parseRoot(model, model.component.data.sources);\n var _model$component$data = model.component.data,\n outputNodes = _model$component$data.outputNodes,\n outputNodeRefCounts = _model$component$data.outputNodeRefCounts;\n var data = model.data;\n var newData = data && (isGenerator(data) || isUrlData(data) || isInlineData(data));\n var ancestorParse = !newData && model.parent ? model.parent.component.data.ancestorParse.clone() : new AncestorParse();\n if (isGenerator(data)) {\n // insert generator transform\n if (isSequenceGenerator(data)) {\n head = new SequenceNode(head, data.sequence);\n } else if (isGraticuleGenerator(data)) {\n head = new GraticuleNode(head, data.graticule);\n }\n // no parsing necessary for generator\n ancestorParse.parseNothing = true;\n } else if ((data === null || data === void 0 || (_data$format3 = data.format) === null || _data$format3 === void 0 ? void 0 : _data$format3.parse) === null) {\n // format.parse: null means disable parsing\n ancestorParse.parseNothing = true;\n }\n head = (_ParseNode$makeExplic = ParseNode.makeExplicit(head, model, ancestorParse)) !== null && _ParseNode$makeExplic !== void 0 ? _ParseNode$makeExplic : head;\n // Default discrete selections require an identifer transform to\n // uniquely identify data points. Add this transform at the head of\n // the pipeline such that the identifier field is available for all\n // subsequent datasets. During optimization, we will remove this\n // transform if it proves to be unnecessary. Additional identifier\n // transforms will be necessary when new tuples are constructed\n // (e.g., post-aggregation).\n head = new IdentifierNode(head);\n // HACK: This is equivalent for merging bin extent for union scale.\n // FIXME(https://github.com/vega/vega-lite/issues/2270): Correctly merge extent / bin node for shared bin scale\n var parentIsLayer = model.parent && isLayerModel(model.parent);\n if (isUnitModel(model) || isFacetModel(model)) {\n if (parentIsLayer) {\n var _BinNode$makeFromEnco;\n head = (_BinNode$makeFromEnco = BinNode.makeFromEncoding(head, model)) !== null && _BinNode$makeFromEnco !== void 0 ? _BinNode$makeFromEnco : head;\n }\n }\n if (model.transforms.length > 0) {\n head = parseTransformArray(head, model, ancestorParse);\n }\n // create parse nodes for fields that need to be parsed (or flattened) implicitly\n var implicitSelection = getImplicitFromSelection(model);\n var implicitEncoding = getImplicitFromEncoding(model);\n head = (_ParseNode$makeWithAn2 = ParseNode.makeWithAncestors(head, {}, _objectSpread(_objectSpread({}, implicitSelection), implicitEncoding), ancestorParse)) !== null && _ParseNode$makeWithAn2 !== void 0 ? _ParseNode$makeWithAn2 : head;\n if (isUnitModel(model)) {\n head = GeoJSONNode.parseAll(head, model);\n head = GeoPointNode.parseAll(head, model);\n }\n if (isUnitModel(model) || isFacetModel(model)) {\n var _TimeUnitNode$makeFro;\n if (!parentIsLayer) {\n var _BinNode$makeFromEnco2;\n head = (_BinNode$makeFromEnco2 = BinNode.makeFromEncoding(head, model)) !== null && _BinNode$makeFromEnco2 !== void 0 ? _BinNode$makeFromEnco2 : head;\n }\n head = (_TimeUnitNode$makeFro = TimeUnitNode.makeFromEncoding(head, model)) !== null && _TimeUnitNode$makeFro !== void 0 ? _TimeUnitNode$makeFro : head;\n head = CalculateNode.parseAllForSortIndex(head, model);\n }\n // add an output node pre aggregation\n var rawName = model.getDataName(DataSourceType.Raw);\n var raw = new OutputNode(head, rawName, DataSourceType.Raw, outputNodeRefCounts);\n outputNodes[rawName] = raw;\n head = raw;\n if (isUnitModel(model)) {\n var _ImputeNode$makeFromE, _StackNode$makeFromEn;\n var agg = AggregateNode.makeFromEncoding(head, model);\n if (agg) {\n head = agg;\n if (requiresSelectionId(model)) {\n head = new IdentifierNode(head);\n }\n }\n head = (_ImputeNode$makeFromE = ImputeNode.makeFromEncoding(head, model)) !== null && _ImputeNode$makeFromE !== void 0 ? _ImputeNode$makeFromE : head;\n head = (_StackNode$makeFromEn = StackNode.makeFromEncoding(head, model)) !== null && _StackNode$makeFromEn !== void 0 ? _StackNode$makeFromEn : head;\n }\n if (isUnitModel(model)) {\n var _FilterInvalidNode$ma;\n head = (_FilterInvalidNode$ma = FilterInvalidNode.make(head, model)) !== null && _FilterInvalidNode$ma !== void 0 ? _FilterInvalidNode$ma : head;\n }\n // output node for marks\n var mainName = model.getDataName(DataSourceType.Main);\n var main = new OutputNode(head, mainName, DataSourceType.Main, outputNodeRefCounts);\n outputNodes[mainName] = main;\n head = main;\n if (isUnitModel(model)) {\n materializeSelections(model, main);\n }\n // add facet marker\n var facetRoot = null;\n if (isFacetModel(model)) {\n var _makeJoinAggregateFro;\n var facetName = model.getName('facet');\n // Derive new aggregate for facet's sort field\n // augment data source with new fields for crossed facet\n head = (_makeJoinAggregateFro = makeJoinAggregateFromFacet(head, model.facet)) !== null && _makeJoinAggregateFro !== void 0 ? _makeJoinAggregateFro : head;\n facetRoot = new FacetNode(head, model, facetName, main.getSource());\n outputNodes[facetName] = facetRoot;\n }\n return _objectSpread(_objectSpread({}, model.component.data), {}, {\n outputNodes: outputNodes,\n outputNodeRefCounts: outputNodeRefCounts,\n raw: raw,\n main: main,\n facetRoot: facetRoot,\n ancestorParse: ancestorParse\n });\n}","import { vgField } from '../../channeldef';\nimport { DEFAULT_SORT_OP, isSortField } from '../../sort';\nimport { facetSortFieldName } from '../facet';\nimport { JoinAggregateTransformNode } from './joinaggregate';\nexport function makeJoinAggregateFromFacet(parent, facet) {\n var row = facet.row,\n column = facet.column;\n if (row && column) {\n var newParent = null;\n // only need to make one for crossed facet\n for (var _i = 0, _arr = [row, column]; _i < _arr.length; _i++) {\n var fieldDef = _arr[_i];\n if (isSortField(fieldDef.sort)) {\n var _fieldDef$sort = fieldDef.sort,\n field = _fieldDef$sort.field,\n _fieldDef$sort$op = _fieldDef$sort.op,\n op = _fieldDef$sort$op === void 0 ? DEFAULT_SORT_OP : _fieldDef$sort$op;\n parent = newParent = new JoinAggregateTransformNode(parent, {\n joinaggregate: [{\n op: op,\n field: field,\n as: facetSortFieldName(fieldDef, fieldDef.sort, {\n forAs: true\n })\n }],\n groupby: [vgField(fieldDef)]\n });\n }\n }\n return newParent;\n }\n return null;\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _assertThisInitialized from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport * as log from '../log';\nimport { isHConcatSpec, isVConcatSpec } from '../spec';\nimport { keys } from '../util';\nimport { buildModel } from './buildmodel';\nimport { parseData as _parseData } from './data/parse';\nimport { assembleLayoutSignals as _assembleLayoutSignals } from './layoutsize/assemble';\nimport { parseConcatLayoutSize } from './layoutsize/parse';\nimport { Model } from './model';\nexport var ConcatModel = /*#__PURE__*/function (_Model) {\n _inherits(ConcatModel, _Model);\n var _super = _createSuper(ConcatModel);\n function ConcatModel(spec, parent, parentGivenName, config) {\n var _spec$resolve, _spec$resolve2;\n var _this;\n _classCallCheck(this, ConcatModel);\n _this = _super.call(this, spec, 'concat', parent, parentGivenName, config, spec.resolve);\n if (((_spec$resolve = spec.resolve) === null || _spec$resolve === void 0 || (_spec$resolve = _spec$resolve.axis) === null || _spec$resolve === void 0 ? void 0 : _spec$resolve.x) === 'shared' || ((_spec$resolve2 = spec.resolve) === null || _spec$resolve2 === void 0 || (_spec$resolve2 = _spec$resolve2.axis) === null || _spec$resolve2 === void 0 ? void 0 : _spec$resolve2.y) === 'shared') {\n log.warn(log.message.CONCAT_CANNOT_SHARE_AXIS);\n }\n _this.children = _this.getChildren(spec).map(function (child, i) {\n return buildModel(child, _assertThisInitialized(_this), _this.getName(\"concat_\".concat(i)), undefined, config);\n });\n return _this;\n }\n _createClass(ConcatModel, [{\n key: \"parseData\",\n value: function parseData() {\n this.component.data = _parseData(this);\n var _iterator = _createForOfIteratorHelper(this.children),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var child = _step.value;\n child.parseData();\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n }, {\n key: \"parseSelections\",\n value: function parseSelections() {\n // Merge selections up the hierarchy so that they may be referenced\n // across unit specs. Persist their definitions within each child\n // to assemble signals which remain within output Vega unit groups.\n this.component.selection = {};\n var _iterator2 = _createForOfIteratorHelper(this.children),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var child = _step2.value;\n child.parseSelections();\n var _iterator3 = _createForOfIteratorHelper(keys(child.component.selection)),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var key = _step3.value;\n this.component.selection[key] = child.component.selection[key];\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n }, {\n key: \"parseMarkGroup\",\n value: function parseMarkGroup() {\n var _iterator4 = _createForOfIteratorHelper(this.children),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var child = _step4.value;\n child.parseMarkGroup();\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n }\n }, {\n key: \"parseAxesAndHeaders\",\n value: function parseAxesAndHeaders() {\n var _iterator5 = _createForOfIteratorHelper(this.children),\n _step5;\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var child = _step5.value;\n child.parseAxesAndHeaders();\n }\n // TODO(#2415): support shared axes\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n }\n }, {\n key: \"getChildren\",\n value: function getChildren(spec) {\n if (isVConcatSpec(spec)) {\n return spec.vconcat;\n } else if (isHConcatSpec(spec)) {\n return spec.hconcat;\n }\n return spec.concat;\n }\n }, {\n key: \"parseLayoutSize\",\n value: function parseLayoutSize() {\n parseConcatLayoutSize(this);\n }\n }, {\n key: \"parseAxisGroup\",\n value: function parseAxisGroup() {\n return null;\n }\n }, {\n key: \"assembleSelectionTopLevelSignals\",\n value: function assembleSelectionTopLevelSignals(signals) {\n return this.children.reduce(function (sg, child) {\n return child.assembleSelectionTopLevelSignals(sg);\n }, signals);\n }\n }, {\n key: \"assembleSignals\",\n value: function assembleSignals() {\n this.children.forEach(function (child) {\n return child.assembleSignals();\n });\n return [];\n }\n }, {\n key: \"assembleLayoutSignals\",\n value: function assembleLayoutSignals() {\n var layoutSignals = _assembleLayoutSignals(this);\n var _iterator6 = _createForOfIteratorHelper(this.children),\n _step6;\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var child = _step6.value;\n layoutSignals.push.apply(layoutSignals, _toConsumableArray(child.assembleLayoutSignals()));\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n return layoutSignals;\n }\n }, {\n key: \"assembleSelectionData\",\n value: function assembleSelectionData(data) {\n return this.children.reduce(function (db, child) {\n return child.assembleSelectionData(db);\n }, data);\n }\n }, {\n key: \"assembleMarks\",\n value: function assembleMarks() {\n // only children have marks\n return this.children.map(function (child) {\n var title = child.assembleTitle();\n var style = child.assembleGroupStyle();\n var encodeEntry = child.assembleGroupEncodeEntry(false);\n return _objectSpread(_objectSpread(_objectSpread(_objectSpread({\n type: 'group',\n name: child.getName('group')\n }, title ? {\n title: title\n } : {}), style ? {\n style: style\n } : {}), encodeEntry ? {\n encode: {\n update: encodeEntry\n }\n } : {}), child.assembleGroup());\n });\n }\n }, {\n key: \"assembleGroupStyle\",\n value: function assembleGroupStyle() {\n return undefined;\n }\n }, {\n key: \"assembleDefaultLayout\",\n value: function assembleDefaultLayout() {\n var columns = this.layout.columns;\n return _objectSpread(_objectSpread({}, columns != null ? {\n columns: columns\n } : {}), {}, {\n bounds: 'full',\n // Use align each so it can work with multiple plots with different size\n align: 'each'\n });\n }\n }]);\n return ConcatModel;\n}(Model);","import _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { COMMON_AXIS_PROPERTIES_INDEX } from '../../axis';\nimport { duplicate, keys } from '../../util';\nimport { isSignalRef } from '../../vega.schema';\nimport { Split } from '../split';\nfunction isFalseOrNull(v) {\n return v === false || v === null;\n}\nvar AXIS_COMPONENT_PROPERTIES_INDEX = _objectSpread(_objectSpread({\n disable: 1,\n gridScale: 1,\n scale: 1\n}, COMMON_AXIS_PROPERTIES_INDEX), {}, {\n labelExpr: 1,\n encode: 1\n});\nexport var AXIS_COMPONENT_PROPERTIES = keys(AXIS_COMPONENT_PROPERTIES_INDEX);\nexport var AxisComponent = /*#__PURE__*/function (_Split) {\n _inherits(AxisComponent, _Split);\n var _super = _createSuper(AxisComponent);\n function AxisComponent() {\n var _this;\n var explicit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var implicit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var mainExtracted = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n _classCallCheck(this, AxisComponent);\n _this = _super.call(this);\n _this.explicit = explicit;\n _this.implicit = implicit;\n _this.mainExtracted = mainExtracted;\n return _this;\n }\n _createClass(AxisComponent, [{\n key: \"clone\",\n value: function clone() {\n return new AxisComponent(duplicate(this.explicit), duplicate(this.implicit), this.mainExtracted);\n }\n }, {\n key: \"hasAxisPart\",\n value: function hasAxisPart(part) {\n // FIXME(https://github.com/vega/vega-lite/issues/2552) this method can be wrong if users use a Vega theme.\n if (part === 'axis') {\n // always has the axis container part\n return true;\n }\n if (part === 'grid' || part === 'title') {\n return !!this.get(part);\n }\n // Other parts are enabled by default, so they should not be false or null.\n return !isFalseOrNull(this.get(part));\n }\n }, {\n key: \"hasOrientSignalRef\",\n value: function hasOrientSignalRef() {\n return isSignalRef(this.explicit.orient);\n }\n }]);\n return AxisComponent;\n}(Split);","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { getSecondaryRangeChannel } from '../../channel';\nimport { channelDefType, getFieldOrDatumDef, isFieldDef, isPositionFieldOrDatumDef } from '../../channeldef';\nimport { formatCustomType, isCustomFormatType } from '../format';\nexport function labels(model, channel, specifiedLabelsSpec) {\n var _getFieldOrDatumDef;\n var encoding = model.encoding,\n config = model.config;\n var fieldOrDatumDef = (_getFieldOrDatumDef = getFieldOrDatumDef(encoding[channel])) !== null && _getFieldOrDatumDef !== void 0 ? _getFieldOrDatumDef : getFieldOrDatumDef(encoding[getSecondaryRangeChannel(channel)]);\n var axis = model.axis(channel) || {};\n var format = axis.format,\n formatType = axis.formatType;\n if (isCustomFormatType(formatType)) {\n return _objectSpread({\n text: formatCustomType({\n fieldOrDatumDef: fieldOrDatumDef,\n field: 'datum.value',\n format: format,\n formatType: formatType,\n config: config\n })\n }, specifiedLabelsSpec);\n } else if (format === undefined && formatType === undefined && config.customFormatTypes) {\n if (channelDefType(fieldOrDatumDef) === 'quantitative') {\n if (isPositionFieldOrDatumDef(fieldOrDatumDef) && fieldOrDatumDef.stack === 'normalize' && config.normalizedNumberFormatType) {\n return _objectSpread({\n text: formatCustomType({\n fieldOrDatumDef: fieldOrDatumDef,\n field: 'datum.value',\n format: config.normalizedNumberFormat,\n formatType: config.normalizedNumberFormatType,\n config: config\n })\n }, specifiedLabelsSpec);\n } else if (config.numberFormatType) {\n return _objectSpread({\n text: formatCustomType({\n fieldOrDatumDef: fieldOrDatumDef,\n field: 'datum.value',\n format: config.numberFormat,\n formatType: config.numberFormatType,\n config: config\n })\n }, specifiedLabelsSpec);\n }\n }\n if (channelDefType(fieldOrDatumDef) === 'temporal' && config.timeFormatType && isFieldDef(fieldOrDatumDef) && !fieldOrDatumDef.timeUnit) {\n return _objectSpread({\n text: formatCustomType({\n fieldOrDatumDef: fieldOrDatumDef,\n field: 'datum.value',\n format: config.timeFormat,\n formatType: config.timeFormatType,\n config: config\n })\n }, specifiedLabelsSpec);\n }\n }\n return specifiedLabelsSpec;\n}","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { AXIS_PARTS, isAxisProperty, isConditionalAxisValue } from '../../axis';\nimport { POSITION_SCALE_CHANNELS } from '../../channel';\nimport { getFieldOrDatumDef } from '../../channeldef';\nimport { getFirstDefined, isEmpty, keys, normalizeAngle } from '../../util';\nimport { isSignalRef } from '../../vega.schema';\nimport { mergeTitleComponent } from '../common';\nimport { guideEncodeEntry } from '../guide';\nimport { parseGuideResolve } from '../resolve';\nimport { defaultTieBreaker, mergeValuesWithExplicit } from '../split';\nimport { AxisComponent, AXIS_COMPONENT_PROPERTIES } from './component';\nimport { getAxisConfig, getAxisConfigs } from './config';\nimport * as encode from './encode';\nimport { axisRules, defaultOrient, getFieldDefTitle, getLabelAngle } from './properties';\nimport { guideFormat, guideFormatType } from '../format';\nexport function parseUnitAxes(model) {\n return POSITION_SCALE_CHANNELS.reduce(function (axis, channel) {\n if (model.component.scales[channel]) {\n axis[channel] = [parseAxis(channel, model)];\n }\n return axis;\n }, {});\n}\nvar OPPOSITE_ORIENT = {\n bottom: 'top',\n top: 'bottom',\n left: 'right',\n right: 'left'\n};\nexport function parseLayerAxes(model) {\n var _model$component = model.component,\n axes = _model$component.axes,\n resolve = _model$component.resolve;\n var axisCount = {\n top: 0,\n bottom: 0,\n right: 0,\n left: 0\n };\n var _iterator = _createForOfIteratorHelper(model.children),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var child = _step.value;\n child.parseAxesAndHeaders();\n var _iterator3 = _createForOfIteratorHelper(keys(child.component.axes)),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var channel = _step3.value;\n resolve.axis[channel] = parseGuideResolve(model.component.resolve, channel);\n if (resolve.axis[channel] === 'shared') {\n // If the resolve says shared (and has not been overridden)\n // We will try to merge and see if there is a conflict\n axes[channel] = mergeAxisComponents(axes[channel], child.component.axes[channel]);\n if (!axes[channel]) {\n // If merge returns nothing, there is a conflict so we cannot make the axis shared.\n // Thus, mark axis as independent and remove the axis component.\n resolve.axis[channel] = 'independent';\n delete axes[channel];\n }\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n }\n // Move axes to layer's axis component and merge shared axes\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n var _iterator2 = _createForOfIteratorHelper(POSITION_SCALE_CHANNELS),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _channel = _step2.value;\n var _iterator4 = _createForOfIteratorHelper(model.children),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var _child = _step4.value;\n if (!_child.component.axes[_channel]) {\n // skip if the child does not have a particular axis\n continue;\n }\n if (resolve.axis[_channel] === 'independent') {\n var _axes$_channel;\n // If axes are independent, concat the axisComponent array.\n axes[_channel] = ((_axes$_channel = axes[_channel]) !== null && _axes$_channel !== void 0 ? _axes$_channel : []).concat(_child.component.axes[_channel]);\n // Automatically adjust orient\n var _iterator6 = _createForOfIteratorHelper(_child.component.axes[_channel]),\n _step6;\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var axisComponent = _step6.value;\n var _axisComponent$getWit = axisComponent.getWithExplicit('orient'),\n orient = _axisComponent$getWit.value,\n explicit = _axisComponent$getWit.explicit;\n if (isSignalRef(orient)) {\n continue;\n }\n if (axisCount[orient] > 0 && !explicit) {\n // Change axis orient if the number do not match\n var oppositeOrient = OPPOSITE_ORIENT[orient];\n if (axisCount[orient] > axisCount[oppositeOrient]) {\n axisComponent.set('orient', oppositeOrient, false);\n }\n }\n axisCount[orient]++;\n // TODO(https://github.com/vega/vega-lite/issues/2634): automatically add extra offset?\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n }\n // After merging, make sure to remove axes from child\n delete _child.component.axes[_channel];\n }\n // Show gridlines for first axis only for dual-axis chart\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n if (resolve.axis[_channel] === 'independent' && axes[_channel] && axes[_channel].length > 1) {\n var _iterator5 = _createForOfIteratorHelper((axes[_channel] || []).entries()),\n _step5;\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var _step5$value = _slicedToArray(_step5.value, 2),\n index = _step5$value[0],\n axisCmpt = _step5$value[1];\n if (index > 0 && !!axisCmpt.get('grid') && !axisCmpt.explicit.grid) {\n axisCmpt.implicit.grid = false;\n }\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n}\nfunction mergeAxisComponents(mergedAxisCmpts, childAxisCmpts) {\n if (mergedAxisCmpts) {\n // FIXME: this is a bit wrong once we support multiple axes\n if (mergedAxisCmpts.length !== childAxisCmpts.length) {\n return undefined; // Cannot merge axis component with different number of axes.\n }\n\n var length = mergedAxisCmpts.length;\n for (var i = 0; i < length; i++) {\n var merged = mergedAxisCmpts[i];\n var child = childAxisCmpts[i];\n if (!!merged !== !!child) {\n return undefined;\n } else if (merged && child) {\n var mergedOrient = merged.getWithExplicit('orient');\n var childOrient = child.getWithExplicit('orient');\n if (mergedOrient.explicit && childOrient.explicit && mergedOrient.value !== childOrient.value) {\n // TODO: throw warning if resolve is explicit (We don't have info about explicit/implicit resolve yet.)\n // Cannot merge due to inconsistent orient\n return undefined;\n } else {\n mergedAxisCmpts[i] = mergeAxisComponent(merged, child);\n }\n }\n }\n } else {\n // For first one, return a copy of the child\n return childAxisCmpts.map(function (axisComponent) {\n return axisComponent.clone();\n });\n }\n return mergedAxisCmpts;\n}\nfunction mergeAxisComponent(merged, child) {\n var _iterator7 = _createForOfIteratorHelper(AXIS_COMPONENT_PROPERTIES),\n _step7;\n try {\n var _loop = function _loop() {\n var prop = _step7.value;\n var mergedValueWithExplicit = mergeValuesWithExplicit(merged.getWithExplicit(prop), child.getWithExplicit(prop), prop, 'axis',\n // Tie breaker function\n function (v1, v2) {\n switch (prop) {\n case 'title':\n return mergeTitleComponent(v1, v2);\n case 'gridScale':\n return {\n explicit: v1.explicit,\n value: getFirstDefined(v1.value, v2.value)\n };\n }\n return defaultTieBreaker(v1, v2, prop, 'axis');\n });\n merged.setWithExplicit(prop, mergedValueWithExplicit);\n };\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n _loop();\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n return merged;\n}\nfunction isExplicit(value, property, axis, model, channel) {\n if (property === 'disable') {\n return axis !== undefined; // if axis is specified or null/false, then its enable/disable state is explicit\n }\n\n axis = axis || {};\n switch (property) {\n case 'titleAngle':\n case 'labelAngle':\n return value === (isSignalRef(axis.labelAngle) ? axis.labelAngle : normalizeAngle(axis.labelAngle));\n case 'values':\n return !!axis.values;\n // specified axis.values is already respected, but may get transformed.\n case 'encode':\n // both VL axis.encoding and axis.labelAngle affect VG axis.encode\n return !!axis.encoding || !!axis.labelAngle;\n case 'title':\n // title can be explicit if fieldDef.title is set\n if (value === getFieldDefTitle(model, channel)) {\n return true;\n }\n }\n // Otherwise, things are explicit if the returned value matches the specified property\n return value === axis[property];\n}\n/**\n * Properties to always include values from config\n */\nvar propsToAlwaysIncludeConfig = new Set(['grid', 'translate',\n// the rest are not axis configs in Vega, but are in VL, so we need to set too.\n'format', 'formatType', 'orient', 'labelExpr', 'tickCount', 'position', 'tickMinStep']);\nfunction parseAxis(channel, model) {\n var _axis, _config, _config$axis, _axis2, _axis$encoding;\n var axis = model.axis(channel);\n var axisComponent = new AxisComponent();\n var fieldOrDatumDef = getFieldOrDatumDef(model.encoding[channel]);\n var mark = model.mark,\n config = model.config;\n var orient = ((_axis = axis) === null || _axis === void 0 ? void 0 : _axis.orient) || ((_config = config[channel === 'x' ? 'axisX' : 'axisY']) === null || _config === void 0 ? void 0 : _config.orient) || ((_config$axis = config.axis) === null || _config$axis === void 0 ? void 0 : _config$axis.orient) || defaultOrient(channel);\n var scaleType = model.getScaleComponent(channel).get('type');\n var axisConfigs = getAxisConfigs(channel, scaleType, orient, model.config);\n var disable = axis !== undefined ? !axis : getAxisConfig('disable', config.style, (_axis2 = axis) === null || _axis2 === void 0 ? void 0 : _axis2.style, axisConfigs).configValue;\n axisComponent.set('disable', disable, axis !== undefined);\n if (disable) {\n return axisComponent;\n }\n axis = axis || {};\n var labelAngle = getLabelAngle(fieldOrDatumDef, axis, channel, config.style, axisConfigs);\n var formatType = guideFormatType(axis.formatType, fieldOrDatumDef, scaleType);\n var format = guideFormat(fieldOrDatumDef, fieldOrDatumDef.type, axis.format, axis.formatType, config, true);\n var ruleParams = {\n fieldOrDatumDef: fieldOrDatumDef,\n axis: axis,\n channel: channel,\n model: model,\n scaleType: scaleType,\n orient: orient,\n labelAngle: labelAngle,\n format: format,\n formatType: formatType,\n mark: mark,\n config: config\n };\n // 1.2. Add properties\n var _iterator8 = _createForOfIteratorHelper(AXIS_COMPONENT_PROPERTIES),\n _step8;\n try {\n for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {\n var property = _step8.value;\n var value = property in axisRules ? axisRules[property](ruleParams) : isAxisProperty(property) ? axis[property] : undefined;\n var hasValue = value !== undefined;\n var explicit = isExplicit(value, property, axis, model, channel);\n if (hasValue && explicit) {\n axisComponent.set(property, value, explicit);\n } else {\n var _ref = isAxisProperty(property) && property !== 'values' ? getAxisConfig(property, config.style, axis.style, axisConfigs) : {},\n _ref$configValue = _ref.configValue,\n configValue = _ref$configValue === void 0 ? undefined : _ref$configValue,\n _ref$configFrom = _ref.configFrom,\n configFrom = _ref$configFrom === void 0 ? undefined : _ref$configFrom;\n var hasConfigValue = configValue !== undefined;\n if (hasValue && !hasConfigValue) {\n // only set property if it is explicitly set or has no config value (otherwise we will accidentally override config)\n axisComponent.set(property, value, explicit);\n } else if (\n // Cases need implicit values\n // 1. Axis config that aren't available in Vega\n !(configFrom === 'vgAxisConfig') ||\n // 2. Certain properties are always included (see `propsToAlwaysIncludeConfig`'s declaration for more details)\n propsToAlwaysIncludeConfig.has(property) && hasConfigValue ||\n // 3. Conditional axis values and signals\n isConditionalAxisValue(configValue) || isSignalRef(configValue)) {\n // If a config is specified and is conditional, copy conditional value from axis config\n axisComponent.set(property, configValue, false);\n }\n }\n }\n // 2) Add guide encode definition groups\n } catch (err) {\n _iterator8.e(err);\n } finally {\n _iterator8.f();\n }\n var axisEncoding = (_axis$encoding = axis.encoding) !== null && _axis$encoding !== void 0 ? _axis$encoding : {};\n var axisEncode = AXIS_PARTS.reduce(function (e, part) {\n var _axisEncoding$part;\n if (!axisComponent.hasAxisPart(part)) {\n // No need to create encode for a disabled part.\n return e;\n }\n var axisEncodingPart = guideEncodeEntry((_axisEncoding$part = axisEncoding[part]) !== null && _axisEncoding$part !== void 0 ? _axisEncoding$part : {}, model);\n var value = part === 'labels' ? encode.labels(model, channel, axisEncodingPart) : axisEncodingPart;\n if (value !== undefined && !isEmpty(value)) {\n e[part] = {\n update: value\n };\n }\n return e;\n }, {});\n // FIXME: By having encode as one property, we won't have fine grained encode merging.\n if (!isEmpty(axisEncode)) {\n axisComponent.set('encode', axisEncode, !!axis.encoding || axis.labelAngle !== undefined);\n }\n return axisComponent;\n}","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { getSizeChannel, POSITION_SCALE_CHANNELS } from '../../channel';\nimport { isContinuousFieldOrDatumDef } from '../../channeldef';\nimport * as log from '../../log';\nimport { isStep } from '../../spec/base';\nexport function initLayoutSize(_ref) {\n var encoding = _ref.encoding,\n size = _ref.size;\n var _iterator = _createForOfIteratorHelper(POSITION_SCALE_CHANNELS),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var channel = _step.value;\n var sizeType = getSizeChannel(channel);\n if (isStep(size[sizeType])) {\n if (isContinuousFieldOrDatumDef(encoding[channel])) {\n delete size[sizeType];\n log.warn(log.message.stepDropped(sizeType));\n }\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return size;\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport * as encode from './encode';\nexport var arc = {\n vgMark: 'arc',\n encodeEntry: function encodeEntry(model) {\n return _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, encode.baseEncodeEntry(model, {\n align: 'ignore',\n baseline: 'ignore',\n color: 'include',\n size: 'ignore',\n orient: 'ignore',\n theta: 'ignore'\n })), encode.pointPosition('x', model, {\n defaultPos: 'mid'\n })), encode.pointPosition('y', model, {\n defaultPos: 'mid'\n })), encode.rectPosition(model, 'radius')), encode.rectPosition(model, 'theta'));\n }\n};","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport * as encode from './encode';\nexport var area = {\n vgMark: 'area',\n encodeEntry: function encodeEntry(model) {\n return _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, encode.baseEncodeEntry(model, {\n align: 'ignore',\n baseline: 'ignore',\n color: 'include',\n orient: 'include',\n size: 'ignore',\n theta: 'ignore'\n })), encode.pointOrRangePosition('x', model, {\n defaultPos: 'zeroOrMin',\n defaultPos2: 'zeroOrMin',\n range: model.markDef.orient === 'horizontal'\n })), encode.pointOrRangePosition('y', model, {\n defaultPos: 'zeroOrMin',\n defaultPos2: 'zeroOrMin',\n range: model.markDef.orient === 'vertical'\n })), encode.defined(model));\n }\n};","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport * as encode from './encode';\nexport var bar = {\n vgMark: 'rect',\n encodeEntry: function encodeEntry(model) {\n return _objectSpread(_objectSpread(_objectSpread({}, encode.baseEncodeEntry(model, {\n align: 'ignore',\n baseline: 'ignore',\n color: 'include',\n orient: 'ignore',\n size: 'ignore',\n theta: 'ignore'\n })), encode.rectPosition(model, 'x')), encode.rectPosition(model, 'y'));\n }\n};","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { isFieldDef, vgField } from '../../channeldef';\nimport { GEOJSON } from '../../type';\nimport * as encode from './encode';\nexport var geoshape = {\n vgMark: 'shape',\n encodeEntry: function encodeEntry(model) {\n return _objectSpread({}, encode.baseEncodeEntry(model, {\n align: 'ignore',\n baseline: 'ignore',\n color: 'include',\n size: 'ignore',\n orient: 'ignore',\n theta: 'ignore'\n }));\n },\n postEncodingTransform: function postEncodingTransform(model) {\n var encoding = model.encoding;\n var shapeDef = encoding.shape;\n var transform = _objectSpread({\n type: 'geoshape',\n projection: model.projectionName()\n }, shapeDef && isFieldDef(shapeDef) && shapeDef.type === GEOJSON ? {\n field: vgField(shapeDef, {\n expr: 'datum'\n })\n } : {});\n return [transform];\n }\n};","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport * as encode from './encode';\nexport var image = {\n vgMark: 'image',\n encodeEntry: function encodeEntry(model) {\n return _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, encode.baseEncodeEntry(model, {\n align: 'ignore',\n baseline: 'ignore',\n color: 'ignore',\n orient: 'ignore',\n size: 'ignore',\n theta: 'ignore'\n })), encode.rectPosition(model, 'x')), encode.rectPosition(model, 'y')), encode.text(model, 'url'));\n }\n};","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport * as encode from './encode';\nexport var line = {\n vgMark: 'line',\n encodeEntry: function encodeEntry(model) {\n return _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, encode.baseEncodeEntry(model, {\n align: 'ignore',\n baseline: 'ignore',\n color: 'include',\n size: 'ignore',\n orient: 'ignore',\n theta: 'ignore'\n })), encode.pointPosition('x', model, {\n defaultPos: 'mid'\n })), encode.pointPosition('y', model, {\n defaultPos: 'mid'\n })), encode.nonPosition('size', model, {\n vgChannel: 'strokeWidth' // VL's line size is strokeWidth\n })), encode.defined(model));\n }\n};\nexport var trail = {\n vgMark: 'trail',\n encodeEntry: function encodeEntry(model) {\n return _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, encode.baseEncodeEntry(model, {\n align: 'ignore',\n baseline: 'ignore',\n color: 'include',\n size: 'include',\n orient: 'ignore',\n theta: 'ignore'\n })), encode.pointPosition('x', model, {\n defaultPos: 'mid'\n })), encode.pointPosition('y', model, {\n defaultPos: 'mid'\n })), encode.nonPosition('size', model)), encode.defined(model));\n }\n};","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport * as encode from './encode';\nfunction _encodeEntry(model, fixedShape) {\n var config = model.config;\n return _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, encode.baseEncodeEntry(model, {\n align: 'ignore',\n baseline: 'ignore',\n color: 'include',\n size: 'include',\n orient: 'ignore',\n theta: 'ignore'\n })), encode.pointPosition('x', model, {\n defaultPos: 'mid'\n })), encode.pointPosition('y', model, {\n defaultPos: 'mid'\n })), encode.nonPosition('size', model)), encode.nonPosition('angle', model)), shapeMixins(model, config, fixedShape));\n}\nexport function shapeMixins(model, config, fixedShape) {\n if (fixedShape) {\n return {\n shape: {\n value: fixedShape\n }\n };\n }\n return encode.nonPosition('shape', model);\n}\nexport var point = {\n vgMark: 'symbol',\n encodeEntry: function encodeEntry(model) {\n return _encodeEntry(model);\n }\n};\nexport var circle = {\n vgMark: 'symbol',\n encodeEntry: function encodeEntry(model) {\n return _encodeEntry(model, 'circle');\n }\n};\nexport var square = {\n vgMark: 'symbol',\n encodeEntry: function encodeEntry(model) {\n return _encodeEntry(model, 'square');\n }\n};","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport * as encode from './encode';\nexport var rect = {\n vgMark: 'rect',\n encodeEntry: function encodeEntry(model) {\n return _objectSpread(_objectSpread(_objectSpread({}, encode.baseEncodeEntry(model, {\n align: 'ignore',\n baseline: 'ignore',\n color: 'include',\n orient: 'ignore',\n size: 'ignore',\n theta: 'ignore'\n })), encode.rectPosition(model, 'x')), encode.rectPosition(model, 'y'));\n }\n};","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport * as encode from './encode';\nexport var rule = {\n vgMark: 'rule',\n encodeEntry: function encodeEntry(model) {\n var markDef = model.markDef;\n var orient = markDef.orient;\n if (!model.encoding.x && !model.encoding.y && !model.encoding.latitude && !model.encoding.longitude) {\n // Show nothing if we have none of x, y, lat, and long.\n return {};\n }\n return _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, encode.baseEncodeEntry(model, {\n align: 'ignore',\n baseline: 'ignore',\n color: 'include',\n orient: 'ignore',\n size: 'ignore',\n theta: 'ignore'\n })), encode.pointOrRangePosition('x', model, {\n defaultPos: orient === 'horizontal' ? 'zeroOrMax' : 'mid',\n defaultPos2: 'zeroOrMin',\n range: orient !== 'vertical' // include x2 for horizontal or line segment rule\n })), encode.pointOrRangePosition('y', model, {\n defaultPos: orient === 'vertical' ? 'zeroOrMax' : 'mid',\n defaultPos2: 'zeroOrMin',\n range: orient !== 'horizontal' // include y2 for vertical or line segment rule\n })), encode.nonPosition('size', model, {\n vgChannel: 'strokeWidth' // VL's rule size is strokeWidth\n }));\n }\n};","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { getMarkPropOrConfig } from '../common';\nimport * as encode from './encode';\nexport var text = {\n vgMark: 'text',\n encodeEntry: function encodeEntry(model) {\n var config = model.config,\n encoding = model.encoding;\n return _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, encode.baseEncodeEntry(model, {\n align: 'include',\n baseline: 'include',\n color: 'include',\n size: 'ignore',\n orient: 'ignore',\n theta: 'include'\n })), encode.pointPosition('x', model, {\n defaultPos: 'mid'\n })), encode.pointPosition('y', model, {\n defaultPos: 'mid'\n })), encode.text(model)), encode.nonPosition('size', model, {\n vgChannel: 'fontSize' // VL's text size is fontSize\n })), encode.nonPosition('angle', model)), encode.valueIfDefined('align', align(model.markDef, encoding, config))), encode.valueIfDefined('baseline', baseline(model.markDef, encoding, config))), encode.pointPosition('radius', model, {\n defaultPos: null\n })), encode.pointPosition('theta', model, {\n defaultPos: null\n }));\n }\n};\nfunction align(markDef, encoding, config) {\n var a = getMarkPropOrConfig('align', markDef, config);\n if (a === undefined) {\n return 'center';\n }\n // If there is a config, Vega-parser will process this already.\n return undefined;\n}\nfunction baseline(markDef, encoding, config) {\n var b = getMarkPropOrConfig('baseline', markDef, config);\n if (b === undefined) {\n return 'middle';\n }\n // If there is a config, Vega-parser will process this already.\n return undefined;\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { isNumber } from 'vega-util';\nimport { getViewConfigDiscreteStep } from '../../config';\nimport { isVgRangeStep } from '../../vega.schema';\nimport { getMarkPropOrConfig, signalOrValueRef } from '../common';\nimport * as encode from './encode';\nexport var tick = {\n vgMark: 'rect',\n encodeEntry: function encodeEntry(model) {\n var config = model.config,\n markDef = model.markDef;\n var orient = markDef.orient;\n var vgSizeChannel = orient === 'horizontal' ? 'width' : 'height';\n var vgThicknessChannel = orient === 'horizontal' ? 'height' : 'width';\n return _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, encode.baseEncodeEntry(model, {\n align: 'ignore',\n baseline: 'ignore',\n color: 'include',\n orient: 'ignore',\n size: 'ignore',\n theta: 'ignore'\n })), encode.pointPosition('x', model, {\n defaultPos: 'mid',\n vgChannel: 'xc'\n })), encode.pointPosition('y', model, {\n defaultPos: 'mid',\n vgChannel: 'yc'\n })), encode.nonPosition('size', model, {\n defaultValue: defaultSize(model),\n vgChannel: vgSizeChannel\n })), {}, _defineProperty({}, vgThicknessChannel, signalOrValueRef(getMarkPropOrConfig('thickness', markDef, config))));\n }\n};\nfunction defaultSize(model) {\n var _getMarkPropOrConfig;\n var config = model.config,\n markDef = model.markDef;\n var orient = markDef.orient;\n var vgSizeChannel = orient === 'horizontal' ? 'width' : 'height';\n var scale = model.getScaleComponent(orient === 'horizontal' ? 'x' : 'y');\n var markPropOrConfig = (_getMarkPropOrConfig = getMarkPropOrConfig('size', markDef, config, {\n vgChannel: vgSizeChannel\n })) !== null && _getMarkPropOrConfig !== void 0 ? _getMarkPropOrConfig : config.tick.bandSize;\n if (markPropOrConfig !== undefined) {\n return markPropOrConfig;\n } else {\n var scaleRange = scale ? scale.get('range') : undefined;\n if (scaleRange && isVgRangeStep(scaleRange) && isNumber(scaleRange.step)) {\n return scaleRange.step * 3 / 4;\n }\n var defaultViewStep = getViewConfigDiscreteStep(config.view, vgSizeChannel);\n return defaultViewStep * 3 / 4;\n }\n}","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { isArray } from 'vega-util';\nimport { isFieldDef, isValueDef, vgField } from '../../channeldef';\nimport { DataSourceType } from '../../data';\nimport { isAggregate, pathGroupingFields } from '../../encoding';\nimport { AREA, BAR, isPathMark, LINE, TRAIL } from '../../mark';\nimport { isSortByEncoding, isSortField } from '../../sort';\nimport { contains, getFirstDefined, isNullOrFalse, keys, omit, pick } from '../../util';\nimport { VG_CORNERRADIUS_CHANNELS } from '../../vega.schema';\nimport { getMarkConfig, getMarkPropOrConfig, getStyles, signalOrValueRef, sortParams } from '../common';\nimport { arc } from './arc';\nimport { area } from './area';\nimport { bar } from './bar';\nimport { geoshape } from './geoshape';\nimport { image } from './image';\nimport { line, trail } from './line';\nimport { circle, point, square } from './point';\nimport { rect } from './rect';\nimport { rule } from './rule';\nimport { text } from './text';\nimport { tick } from './tick';\nvar markCompiler = {\n arc: arc,\n area: area,\n bar: bar,\n circle: circle,\n geoshape: geoshape,\n image: image,\n line: line,\n point: point,\n rect: rect,\n rule: rule,\n square: square,\n text: text,\n tick: tick,\n trail: trail\n};\nexport function parseMarkGroups(model) {\n if (contains([LINE, AREA, TRAIL], model.mark)) {\n var details = pathGroupingFields(model.mark, model.encoding);\n if (details.length > 0) {\n return getPathGroups(model, details);\n }\n // otherwise use standard mark groups\n } else if (model.mark === BAR) {\n var hasCornerRadius = VG_CORNERRADIUS_CHANNELS.some(function (prop) {\n return getMarkPropOrConfig(prop, model.markDef, model.config);\n });\n if (model.stack && !model.fieldDef('size') && hasCornerRadius) {\n return getGroupsForStackedBarWithCornerRadius(model);\n }\n }\n return getMarkGroup(model);\n}\nvar FACETED_PATH_PREFIX = 'faceted_path_';\nfunction getPathGroups(model, details) {\n // TODO: for non-stacked plot, map order to zindex. (Maybe rename order for layer to zindex?)\n return [{\n name: model.getName('pathgroup'),\n type: 'group',\n from: {\n facet: {\n name: FACETED_PATH_PREFIX + model.requestDataName(DataSourceType.Main),\n data: model.requestDataName(DataSourceType.Main),\n groupby: details\n }\n },\n encode: {\n update: {\n width: {\n field: {\n group: 'width'\n }\n },\n height: {\n field: {\n group: 'height'\n }\n }\n }\n },\n // With subfacet for line/area group, need to use faceted data from above.\n marks: getMarkGroup(model, {\n fromPrefix: FACETED_PATH_PREFIX\n })\n }];\n}\nvar STACK_GROUP_PREFIX = 'stack_group_';\n/**\n * We need to put stacked bars into groups in order to enable cornerRadius for stacks.\n * If stack is used and the model doesn't have size encoding, we put the mark into groups,\n * and apply cornerRadius properties at the group.\n */\nfunction getGroupsForStackedBarWithCornerRadius(model) {\n var _model$stack$groupbyC;\n // Generate the mark\n var _getMarkGroup = getMarkGroup(model, {\n fromPrefix: STACK_GROUP_PREFIX\n }),\n _getMarkGroup2 = _slicedToArray(_getMarkGroup, 1),\n mark = _getMarkGroup2[0];\n // Get the scale for the stacked field\n var fieldScale = model.scaleName(model.stack.fieldChannel);\n var stackField = function stackField() {\n var opt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return model.vgField(model.stack.fieldChannel, opt);\n };\n // Find the min/max of the pixel value on the stacked direction\n var stackFieldGroup = function stackFieldGroup(func, expr) {\n var vgFieldMinMax = [stackField({\n prefix: 'min',\n suffix: 'start',\n expr: expr\n }), stackField({\n prefix: 'max',\n suffix: 'start',\n expr: expr\n }), stackField({\n prefix: 'min',\n suffix: 'end',\n expr: expr\n }), stackField({\n prefix: 'max',\n suffix: 'end',\n expr: expr\n })];\n return \"\".concat(func, \"(\").concat(vgFieldMinMax.map(function (field) {\n return \"scale('\".concat(fieldScale, \"',\").concat(field, \")\");\n }).join(','), \")\");\n };\n var groupUpdate;\n var innerGroupUpdate;\n // Build the encoding for group and an inner group\n if (model.stack.fieldChannel === 'x') {\n // Move cornerRadius, y/yc/y2/height properties to group\n // Group x/x2 should be the min/max of the marks within\n groupUpdate = _objectSpread(_objectSpread({}, pick(mark.encode.update, ['y', 'yc', 'y2', 'height'].concat(_toConsumableArray(VG_CORNERRADIUS_CHANNELS)))), {}, {\n x: {\n signal: stackFieldGroup('min', 'datum')\n },\n x2: {\n signal: stackFieldGroup('max', 'datum')\n },\n clip: {\n value: true\n }\n });\n // Inner group should revert the x translation, and pass height through\n innerGroupUpdate = {\n x: {\n field: {\n group: 'x'\n },\n mult: -1\n },\n height: {\n field: {\n group: 'height'\n }\n }\n };\n // The marks should use the same height as group, without y/yc/y2 properties (because it's already done by group)\n // This is why size encoding is not supported yet\n mark.encode.update = _objectSpread(_objectSpread({}, omit(mark.encode.update, ['y', 'yc', 'y2'])), {}, {\n height: {\n field: {\n group: 'height'\n }\n }\n });\n } else {\n groupUpdate = _objectSpread(_objectSpread({}, pick(mark.encode.update, ['x', 'xc', 'x2', 'width'])), {}, {\n y: {\n signal: stackFieldGroup('min', 'datum')\n },\n y2: {\n signal: stackFieldGroup('max', 'datum')\n },\n clip: {\n value: true\n }\n });\n innerGroupUpdate = {\n y: {\n field: {\n group: 'y'\n },\n mult: -1\n },\n width: {\n field: {\n group: 'width'\n }\n }\n };\n mark.encode.update = _objectSpread(_objectSpread({}, omit(mark.encode.update, ['x', 'xc', 'x2'])), {}, {\n width: {\n field: {\n group: 'width'\n }\n }\n });\n }\n // Deal with cornerRadius properties\n var _iterator = _createForOfIteratorHelper(VG_CORNERRADIUS_CHANNELS),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var key = _step.value;\n var configValue = getMarkConfig(key, model.markDef, model.config);\n // Move from mark to group\n if (mark.encode.update[key]) {\n groupUpdate[key] = mark.encode.update[key];\n delete mark.encode.update[key];\n } else if (configValue) {\n groupUpdate[key] = signalOrValueRef(configValue);\n }\n // Overwrite any cornerRadius on mark set by config --- they are already moved to the group\n if (configValue) {\n mark.encode.update[key] = {\n value: 0\n };\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n var groupby = [];\n if (((_model$stack$groupbyC = model.stack.groupbyChannels) === null || _model$stack$groupbyC === void 0 ? void 0 : _model$stack$groupbyC.length) > 0) {\n var _iterator2 = _createForOfIteratorHelper(model.stack.groupbyChannels),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var groupbyChannel = _step2.value;\n // For bin and time unit, we have to add bin/timeunit -end channels.\n var groupByField = model.fieldDef(groupbyChannel);\n var field = vgField(groupByField);\n if (field) {\n groupby.push(field);\n }\n if (groupByField !== null && groupByField !== void 0 && groupByField.bin || groupByField !== null && groupByField !== void 0 && groupByField.timeUnit) {\n groupby.push(vgField(groupByField, {\n binSuffix: 'end'\n }));\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n var strokeProperties = ['stroke', 'strokeWidth', 'strokeJoin', 'strokeCap', 'strokeDash', 'strokeDashOffset', 'strokeMiterLimit', 'strokeOpacity'];\n // Generate stroke properties for the group\n groupUpdate = strokeProperties.reduce(function (encode, prop) {\n if (mark.encode.update[prop]) {\n return _objectSpread(_objectSpread({}, encode), {}, _defineProperty({}, prop, mark.encode.update[prop]));\n } else {\n var configValue = getMarkConfig(prop, model.markDef, model.config);\n if (configValue !== undefined) {\n return _objectSpread(_objectSpread({}, encode), {}, _defineProperty({}, prop, signalOrValueRef(configValue)));\n } else {\n return encode;\n }\n }\n }, groupUpdate);\n // Apply strokeForeground and strokeOffset if stroke is used\n if (groupUpdate.stroke) {\n groupUpdate.strokeForeground = {\n value: true\n };\n groupUpdate.strokeOffset = {\n value: 0\n };\n }\n return [{\n type: 'group',\n from: {\n facet: {\n data: model.requestDataName(DataSourceType.Main),\n name: STACK_GROUP_PREFIX + model.requestDataName(DataSourceType.Main),\n groupby: groupby,\n aggregate: {\n fields: [stackField({\n suffix: 'start'\n }), stackField({\n suffix: 'start'\n }), stackField({\n suffix: 'end'\n }), stackField({\n suffix: 'end'\n })],\n ops: ['min', 'max', 'min', 'max']\n }\n }\n },\n encode: {\n update: groupUpdate\n },\n marks: [{\n type: 'group',\n encode: {\n update: innerGroupUpdate\n },\n marks: [mark]\n }]\n }];\n}\nexport function getSort(model) {\n var encoding = model.encoding,\n stack = model.stack,\n mark = model.mark,\n markDef = model.markDef,\n config = model.config;\n var order = encoding.order;\n if (!isArray(order) && isValueDef(order) && isNullOrFalse(order.value) || !order && isNullOrFalse(getMarkPropOrConfig('order', markDef, config))) {\n return undefined;\n } else if ((isArray(order) || isFieldDef(order)) && !stack) {\n // Sort by the order field if it is specified and the field is not stacked. (For stacked field, order specify stack order.)\n return sortParams(order, {\n expr: 'datum'\n });\n } else if (isPathMark(mark)) {\n // For both line and area, we sort values based on dimension by default\n var dimensionChannel = markDef.orient === 'horizontal' ? 'y' : 'x';\n var dimensionChannelDef = encoding[dimensionChannel];\n if (isFieldDef(dimensionChannelDef)) {\n var s = dimensionChannelDef.sort;\n if (isArray(s)) {\n return {\n field: vgField(dimensionChannelDef, {\n prefix: dimensionChannel,\n suffix: 'sort_index',\n expr: 'datum'\n })\n };\n } else if (isSortField(s)) {\n return {\n field: vgField({\n // FIXME: this op might not already exist?\n // FIXME: what if dimensionChannel (x or y) contains custom domain?\n aggregate: isAggregate(model.encoding) ? s.op : undefined,\n field: s.field\n }, {\n expr: 'datum'\n })\n };\n } else if (isSortByEncoding(s)) {\n var fieldDefToSort = model.fieldDef(s.encoding);\n return {\n field: vgField(fieldDefToSort, {\n expr: 'datum'\n }),\n order: s.order\n };\n } else if (s === null) {\n return undefined;\n } else {\n var _model$stack;\n return {\n field: vgField(dimensionChannelDef, {\n // For stack with imputation, we only have bin_mid\n binSuffix: (_model$stack = model.stack) !== null && _model$stack !== void 0 && _model$stack.impute ? 'mid' : undefined,\n expr: 'datum'\n })\n };\n }\n }\n return undefined;\n }\n return undefined;\n}\nfunction getMarkGroup(model) {\n var opt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n fromPrefix: ''\n };\n var mark = model.mark,\n markDef = model.markDef,\n encoding = model.encoding,\n config = model.config;\n var clip = getFirstDefined(markDef.clip, scaleClip(model), projectionClip(model));\n var style = getStyles(markDef);\n var key = encoding.key;\n var sort = getSort(model);\n var interactive = interactiveFlag(model);\n var aria = getMarkPropOrConfig('aria', markDef, config);\n var postEncodingTransform = markCompiler[mark].postEncodingTransform ? markCompiler[mark].postEncodingTransform(model) : null;\n return [_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({\n name: model.getName('marks'),\n type: markCompiler[mark].vgMark\n }, clip ? {\n clip: true\n } : {}), style ? {\n style: style\n } : {}), key ? {\n key: key.field\n } : {}), sort ? {\n sort: sort\n } : {}), interactive ? interactive : {}), aria === false ? {\n aria: aria\n } : {}), {}, {\n from: {\n data: opt.fromPrefix + model.requestDataName(DataSourceType.Main)\n },\n encode: {\n update: markCompiler[mark].encodeEntry(model)\n }\n }, postEncodingTransform ? {\n transform: postEncodingTransform\n } : {})];\n}\n/**\n * If scales are bound to interval selections, we want to automatically clip\n * marks to account for panning/zooming interactions. We identify bound scales\n * by the selectionExtent property, which gets added during scale parsing.\n */\nfunction scaleClip(model) {\n var xScale = model.getScaleComponent('x');\n var yScale = model.getScaleComponent('y');\n return xScale !== null && xScale !== void 0 && xScale.get('selectionExtent') || yScale !== null && yScale !== void 0 && yScale.get('selectionExtent') ? true : undefined;\n}\n/**\n * If we use a custom projection with auto-fitting to the geodata extent,\n * we need to clip to ensure the chart size doesn't explode.\n */\nfunction projectionClip(model) {\n var projection = model.component.projection;\n return projection && !projection.isFit ? true : undefined;\n}\n/**\n * Only output interactive flags if we have selections defined somewhere in our model hierarchy.\n */\nfunction interactiveFlag(model) {\n if (!model.component.selection) return null;\n var unitCount = keys(model.component.selection).length;\n var parentCount = unitCount;\n var parent = model.parent;\n while (parent && parentCount === 0) {\n parentCount = keys(parent.component.selection).length;\n parent = parent.parent;\n }\n return parentCount ? {\n interactive: unitCount > 0 || model.mark === 'geoshape' || !!model.encoding.tooltip\n } : null;\n}","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { isArray } from 'vega-util';\nimport { isConditionalAxisValue } from '../axis';\nimport { GEOPOSITION_CHANNELS, NONPOSITION_SCALE_CHANNELS, POSITION_SCALE_CHANNELS, SCALE_CHANNELS, supportLegend, X, Y } from '../channel';\nimport { getFieldDef, getFieldOrDatumDef, isFieldOrDatumDef, isTypedFieldDef } from '../channeldef';\nimport { isGraticuleGenerator } from '../data';\nimport * as vlEncoding from '../encoding';\nimport { initEncoding } from '../encoding';\nimport { replaceExprRef } from '../expr';\nimport { GEOSHAPE, isMarkDef } from '../mark';\nimport { isSelectionParameter } from '../selection';\nimport { isFrameMixins } from '../spec/base';\nimport { stack } from '../stack';\nimport { keys } from '../util';\nimport { assembleAxisSignals } from './axis/assemble';\nimport { parseUnitAxes } from './axis/parse';\nimport { signalOrValueRefWithCondition, signalRefOrValue } from './common';\nimport { parseData as _parseData } from './data/parse';\nimport { assembleLayoutSignals as _assembleLayoutSignals } from './layoutsize/assemble';\nimport { initLayoutSize } from './layoutsize/init';\nimport { parseUnitLayoutSize } from './layoutsize/parse';\nimport { defaultFilled, initMarkdef } from './mark/init';\nimport { parseMarkGroups } from './mark/mark';\nimport { isLayerModel, ModelWithField } from './model';\nimport { assembleTopLevelSignals, assembleUnitSelectionData, assembleUnitSelectionMarks, assembleUnitSelectionSignals } from './selection/assemble';\nimport { parseUnitSelection } from './selection/parse';\n/**\n * Internal model of Vega-Lite specification for the compiler.\n */\nexport var UnitModel = /*#__PURE__*/function (_ModelWithField) {\n _inherits(UnitModel, _ModelWithField);\n var _super = _createSuper(UnitModel);\n function UnitModel(spec, parent, parentGivenName) {\n var _spec$params;\n var _this;\n var parentGivenSize = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var config = arguments.length > 4 ? arguments[4] : undefined;\n _classCallCheck(this, UnitModel);\n _this = _super.call(this, spec, 'unit', parent, parentGivenName, config, undefined, isFrameMixins(spec) ? spec.view : undefined);\n _this.specifiedScales = {};\n _this.specifiedAxes = {};\n _this.specifiedLegends = {};\n _this.specifiedProjection = {};\n _this.selection = [];\n _this.children = [];\n var markDef = isMarkDef(spec.mark) ? _objectSpread({}, spec.mark) : {\n type: spec.mark\n };\n var mark = markDef.type;\n // Need to init filled before other mark properties because encoding depends on filled but other mark properties depend on types inside encoding\n if (markDef.filled === undefined) {\n markDef.filled = defaultFilled(markDef, config, {\n graticule: spec.data && isGraticuleGenerator(spec.data)\n });\n }\n var encoding = _this.encoding = initEncoding(spec.encoding || {}, mark, markDef.filled, config);\n _this.markDef = initMarkdef(markDef, encoding, config);\n _this.size = initLayoutSize({\n encoding: encoding,\n size: isFrameMixins(spec) ? _objectSpread(_objectSpread(_objectSpread({}, parentGivenSize), spec.width ? {\n width: spec.width\n } : {}), spec.height ? {\n height: spec.height\n } : {}) : parentGivenSize\n });\n // calculate stack properties\n _this.stack = stack(_this.markDef, encoding);\n _this.specifiedScales = _this.initScales(mark, encoding);\n _this.specifiedAxes = _this.initAxes(encoding);\n _this.specifiedLegends = _this.initLegends(encoding);\n _this.specifiedProjection = spec.projection;\n // Selections will be initialized upon parse.\n _this.selection = ((_spec$params = spec.params) !== null && _spec$params !== void 0 ? _spec$params : []).filter(function (p) {\n return isSelectionParameter(p);\n });\n return _this;\n }\n _createClass(UnitModel, [{\n key: \"hasProjection\",\n get: function get() {\n var encoding = this.encoding;\n var isGeoShapeMark = this.mark === GEOSHAPE;\n var hasGeoPosition = encoding && GEOPOSITION_CHANNELS.some(function (channel) {\n return isFieldOrDatumDef(encoding[channel]);\n });\n return isGeoShapeMark || hasGeoPosition;\n }\n /**\n * Return specified Vega-Lite scale domain for a particular channel\n * @param channel\n */\n }, {\n key: \"scaleDomain\",\n value: function scaleDomain(channel) {\n var scale = this.specifiedScales[channel];\n return scale ? scale.domain : undefined;\n }\n }, {\n key: \"axis\",\n value: function axis(channel) {\n return this.specifiedAxes[channel];\n }\n }, {\n key: \"legend\",\n value: function legend(channel) {\n return this.specifiedLegends[channel];\n }\n }, {\n key: \"initScales\",\n value: function initScales(mark, encoding) {\n var _this2 = this;\n return SCALE_CHANNELS.reduce(function (scales, channel) {\n var fieldOrDatumDef = getFieldOrDatumDef(encoding[channel]);\n if (fieldOrDatumDef) {\n var _fieldOrDatumDef$scal;\n scales[channel] = _this2.initScale((_fieldOrDatumDef$scal = fieldOrDatumDef.scale) !== null && _fieldOrDatumDef$scal !== void 0 ? _fieldOrDatumDef$scal : {});\n }\n return scales;\n }, {});\n }\n }, {\n key: \"initScale\",\n value: function initScale(scale) {\n var domain = scale.domain,\n range = scale.range;\n // TODO: we could simplify this function if we had a recursive replace function\n var scaleInternal = replaceExprRef(scale);\n if (isArray(domain)) {\n scaleInternal.domain = domain.map(signalRefOrValue);\n }\n if (isArray(range)) {\n scaleInternal.range = range.map(signalRefOrValue);\n }\n return scaleInternal;\n }\n }, {\n key: \"initAxes\",\n value: function initAxes(encoding) {\n var _this3 = this;\n return POSITION_SCALE_CHANNELS.reduce(function (_axis, channel) {\n // Position Axis\n // TODO: handle ConditionFieldDef\n var channelDef = encoding[channel];\n if (isFieldOrDatumDef(channelDef) || channel === X && isFieldOrDatumDef(encoding.x2) || channel === Y && isFieldOrDatumDef(encoding.y2)) {\n var axisSpec = isFieldOrDatumDef(channelDef) ? channelDef.axis : undefined;\n _axis[channel] = axisSpec ? _this3.initAxis(_objectSpread({}, axisSpec)) // convert truthy value to object\n : axisSpec;\n }\n return _axis;\n }, {});\n }\n }, {\n key: \"initAxis\",\n value: function initAxis(axis) {\n var props = keys(axis);\n var axisInternal = {};\n var _iterator = _createForOfIteratorHelper(props),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var prop = _step.value;\n var val = axis[prop];\n axisInternal[prop] = isConditionalAxisValue(val) ? signalOrValueRefWithCondition(val) : signalRefOrValue(val);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return axisInternal;\n }\n }, {\n key: \"initLegends\",\n value: function initLegends(encoding) {\n return NONPOSITION_SCALE_CHANNELS.reduce(function (_legend, channel) {\n var fieldOrDatumDef = getFieldOrDatumDef(encoding[channel]);\n if (fieldOrDatumDef && supportLegend(channel)) {\n var legend = fieldOrDatumDef.legend;\n _legend[channel] = legend ? replaceExprRef(legend) // convert truthy value to object\n : legend;\n }\n return _legend;\n }, {});\n }\n }, {\n key: \"parseData\",\n value: function parseData() {\n this.component.data = _parseData(this);\n }\n }, {\n key: \"parseLayoutSize\",\n value: function parseLayoutSize() {\n parseUnitLayoutSize(this);\n }\n }, {\n key: \"parseSelections\",\n value: function parseSelections() {\n this.component.selection = parseUnitSelection(this, this.selection);\n }\n }, {\n key: \"parseMarkGroup\",\n value: function parseMarkGroup() {\n this.component.mark = parseMarkGroups(this);\n }\n }, {\n key: \"parseAxesAndHeaders\",\n value: function parseAxesAndHeaders() {\n this.component.axes = parseUnitAxes(this);\n }\n }, {\n key: \"assembleSelectionTopLevelSignals\",\n value: function assembleSelectionTopLevelSignals(signals) {\n return assembleTopLevelSignals(this, signals);\n }\n }, {\n key: \"assembleSignals\",\n value: function assembleSignals() {\n return [].concat(_toConsumableArray(assembleAxisSignals(this)), _toConsumableArray(assembleUnitSelectionSignals(this, [])));\n }\n }, {\n key: \"assembleSelectionData\",\n value: function assembleSelectionData(data) {\n return assembleUnitSelectionData(this, data);\n }\n }, {\n key: \"assembleLayout\",\n value: function assembleLayout() {\n return null;\n }\n }, {\n key: \"assembleLayoutSignals\",\n value: function assembleLayoutSignals() {\n return _assembleLayoutSignals(this);\n }\n }, {\n key: \"assembleMarks\",\n value: function assembleMarks() {\n var _this$component$mark;\n var marks = (_this$component$mark = this.component.mark) !== null && _this$component$mark !== void 0 ? _this$component$mark : [];\n // If this unit is part of a layer, selections should augment\n // all in concert rather than each unit individually. This\n // ensures correct interleaving of clipping and brushed marks.\n if (!this.parent || !isLayerModel(this.parent)) {\n marks = assembleUnitSelectionMarks(this, marks);\n }\n return marks.map(this.correctDataNames);\n }\n }, {\n key: \"assembleGroupStyle\",\n value: function assembleGroupStyle() {\n var _ref = this.view || {},\n style = _ref.style;\n if (style !== undefined) {\n return style;\n }\n if (this.encoding.x || this.encoding.y) {\n return 'cell';\n } else {\n return 'view';\n }\n }\n }, {\n key: \"getMapping\",\n value: function getMapping() {\n return this.encoding;\n }\n }, {\n key: \"mark\",\n get: function get() {\n return this.markDef.type;\n }\n }, {\n key: \"channelHasField\",\n value: function channelHasField(channel) {\n return vlEncoding.channelHasField(this.encoding, channel);\n }\n }, {\n key: \"fieldDef\",\n value: function fieldDef(channel) {\n var channelDef = this.encoding[channel];\n return getFieldDef(channelDef);\n }\n }, {\n key: \"typedFieldDef\",\n value: function typedFieldDef(channel) {\n var fieldDef = this.fieldDef(channel);\n if (isTypedFieldDef(fieldDef)) {\n return fieldDef;\n }\n return null;\n }\n }]);\n return UnitModel;\n}(ModelWithField);","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _assertThisInitialized from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js\";\nimport _get from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/get.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nimport \"core-js/modules/es.array.flat-map.js\";\nimport \"core-js/modules/es.array.unscopables.flat-map.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { array } from 'vega-util';\nimport * as log from '../log';\nimport { isLayerSpec, isUnitSpec } from '../spec';\nimport { keys } from '../util';\nimport { assembleAxisSignals } from './axis/assemble';\nimport { parseLayerAxes } from './axis/parse';\nimport { parseData as _parseData } from './data/parse';\nimport { assembleLayoutSignals as _assembleLayoutSignals } from './layoutsize/assemble';\nimport { parseLayerLayoutSize } from './layoutsize/parse';\nimport { assembleLegends as _assembleLegends } from './legend/assemble';\nimport { Model } from './model';\nimport { assembleLayerSelectionMarks } from './selection/assemble';\nimport { UnitModel } from './unit';\nexport var LayerModel = /*#__PURE__*/function (_Model) {\n _inherits(LayerModel, _Model);\n var _super = _createSuper(LayerModel);\n function LayerModel(spec, parent, parentGivenName, parentGivenSize, config) {\n var _this;\n _classCallCheck(this, LayerModel);\n _this = _super.call(this, spec, 'layer', parent, parentGivenName, config, spec.resolve, spec.view);\n var layoutSize = _objectSpread(_objectSpread(_objectSpread({}, parentGivenSize), spec.width ? {\n width: spec.width\n } : {}), spec.height ? {\n height: spec.height\n } : {});\n _this.children = spec.layer.map(function (layer, i) {\n if (isLayerSpec(layer)) {\n return new LayerModel(layer, _assertThisInitialized(_this), _this.getName(\"layer_\".concat(i)), layoutSize, config);\n } else if (isUnitSpec(layer)) {\n return new UnitModel(layer, _assertThisInitialized(_this), _this.getName(\"layer_\".concat(i)), layoutSize, config);\n }\n throw new Error(log.message.invalidSpec(layer));\n });\n return _this;\n }\n _createClass(LayerModel, [{\n key: \"parseData\",\n value: function parseData() {\n this.component.data = _parseData(this);\n var _iterator = _createForOfIteratorHelper(this.children),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var child = _step.value;\n child.parseData();\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n }, {\n key: \"parseLayoutSize\",\n value: function parseLayoutSize() {\n parseLayerLayoutSize(this);\n }\n }, {\n key: \"parseSelections\",\n value: function parseSelections() {\n // Merge selections up the hierarchy so that they may be referenced\n // across unit specs. Persist their definitions within each child\n // to assemble signals which remain within output Vega unit groups.\n this.component.selection = {};\n var _iterator2 = _createForOfIteratorHelper(this.children),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var child = _step2.value;\n child.parseSelections();\n var _iterator3 = _createForOfIteratorHelper(keys(child.component.selection)),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var key = _step3.value;\n this.component.selection[key] = child.component.selection[key];\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n }, {\n key: \"parseMarkGroup\",\n value: function parseMarkGroup() {\n var _iterator4 = _createForOfIteratorHelper(this.children),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var child = _step4.value;\n child.parseMarkGroup();\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n }\n }, {\n key: \"parseAxesAndHeaders\",\n value: function parseAxesAndHeaders() {\n parseLayerAxes(this);\n }\n }, {\n key: \"assembleSelectionTopLevelSignals\",\n value: function assembleSelectionTopLevelSignals(signals) {\n return this.children.reduce(function (sg, child) {\n return child.assembleSelectionTopLevelSignals(sg);\n }, signals);\n }\n // TODO: Support same named selections across children.\n }, {\n key: \"assembleSignals\",\n value: function assembleSignals() {\n return this.children.reduce(function (signals, child) {\n return signals.concat(child.assembleSignals());\n }, assembleAxisSignals(this));\n }\n }, {\n key: \"assembleLayoutSignals\",\n value: function assembleLayoutSignals() {\n return this.children.reduce(function (signals, child) {\n return signals.concat(child.assembleLayoutSignals());\n }, _assembleLayoutSignals(this));\n }\n }, {\n key: \"assembleSelectionData\",\n value: function assembleSelectionData(data) {\n return this.children.reduce(function (db, child) {\n return child.assembleSelectionData(db);\n }, data);\n }\n }, {\n key: \"assembleGroupStyle\",\n value: function assembleGroupStyle() {\n var uniqueStyles = new Set();\n var _iterator5 = _createForOfIteratorHelper(this.children),\n _step5;\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var child = _step5.value;\n var _iterator6 = _createForOfIteratorHelper(array(child.assembleGroupStyle())),\n _step6;\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var style = _step6.value;\n uniqueStyles.add(style);\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n var styles = Array.from(uniqueStyles);\n return styles.length > 1 ? styles : styles.length === 1 ? styles[0] : undefined;\n }\n }, {\n key: \"assembleTitle\",\n value: function assembleTitle() {\n var title = _get(_getPrototypeOf(LayerModel.prototype), \"assembleTitle\", this).call(this);\n if (title) {\n return title;\n }\n // If title does not provide layer, look into children\n var _iterator7 = _createForOfIteratorHelper(this.children),\n _step7;\n try {\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n var child = _step7.value;\n title = child.assembleTitle();\n if (title) {\n return title;\n }\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n return undefined;\n }\n }, {\n key: \"assembleLayout\",\n value: function assembleLayout() {\n return null;\n }\n }, {\n key: \"assembleMarks\",\n value: function assembleMarks() {\n return assembleLayerSelectionMarks(this, this.children.flatMap(function (child) {\n return child.assembleMarks();\n }));\n }\n }, {\n key: \"assembleLegends\",\n value: function assembleLegends() {\n return this.children.reduce(function (legends, child) {\n return legends.concat(child.assembleLegends());\n }, _assembleLegends(this));\n }\n }]);\n return LayerModel;\n}(Model);","import * as log from '../log';\nimport { isAnyConcatSpec, isFacetSpec, isLayerSpec, isUnitSpec } from '../spec';\nimport { ConcatModel } from './concat';\nimport { FacetModel } from './facet';\nimport { LayerModel } from './layer';\nimport { UnitModel } from './unit';\nexport function buildModel(spec, parent, parentGivenName, unitSize, config) {\n if (isFacetSpec(spec)) {\n return new FacetModel(spec, parent, parentGivenName, config);\n } else if (isLayerSpec(spec)) {\n return new LayerModel(spec, parent, parentGivenName, unitSize, config);\n } else if (isUnitSpec(spec)) {\n return new UnitModel(spec, parent, parentGivenName, unitSize, config);\n } else if (isAnyConcatSpec(spec)) {\n return new ConcatModel(spec, parent, parentGivenName, config);\n }\n throw new Error(log.message.invalidSpec(spec));\n}","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nvar _excluded = [\"params\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { isString, mergeConfig } from 'vega-util';\nimport { getPositionScaleChannel } from '../channel';\nimport * as vlFieldDef from '../channeldef';\nimport { initConfig, stripAndRedirectConfig } from '../config';\nimport * as log from '../log';\nimport { normalize } from '../normalize';\nimport { assembleParameterSignals } from '../parameter';\nimport { extractTopLevelProperties, getFitType, isFitType } from '../spec/toplevel';\nimport { keys } from '../util';\nimport { buildModel } from './buildmodel';\nimport { assembleRootData } from './data/assemble';\nimport { optimizeDataflow } from './data/optimize';\n/**\n * Vega-Lite's main function, for compiling Vega-Lite spec into Vega spec.\n *\n * At a high-level, we make the following transformations in different phases:\n *\n * Input spec\n * |\n * | (Normalization)\n * v\n * Normalized Spec (Row/Column channels in single-view specs becomes faceted specs, composite marks becomes layered specs.)\n * |\n * | (Build Model)\n * v\n * A model tree of the spec\n * |\n * | (Parse)\n * v\n * A model tree with parsed components (intermediate structure of visualization primitives in a format that can be easily merged)\n * |\n * | (Optimize)\n * v\n * A model tree with parsed components with the data component optimized\n * |\n * | (Assemble)\n * v\n * Vega spec\n *\n * @param inputSpec The Vega-Lite specification.\n * @param opt Optional arguments passed to the Vega-Lite compiler.\n * @returns An object containing the compiled Vega spec and normalized Vega-Lite spec.\n */\nexport function compile(inputSpec) {\n var opt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // 0. Augment opt with default opts\n if (opt.logger) {\n // set the singleton logger to the provided logger\n log.set(opt.logger);\n }\n if (opt.fieldTitle) {\n // set the singleton field title formatter\n vlFieldDef.setTitleFormatter(opt.fieldTitle);\n }\n try {\n // 1. Initialize config by deep merging default config with the config provided via option and the input spec.\n var config = initConfig(mergeConfig(opt.config, inputSpec.config));\n // 2. Normalize: Convert input spec -> normalized spec\n // - Decompose all extended unit specs into composition of unit spec. For example, a box plot get expanded into multiple layers of bars, ticks, and rules. The shorthand row/column channel is also expanded to a facet spec.\n // - Normalize autosize and width or height spec\n var spec = normalize(inputSpec, config);\n // 3. Build Model: normalized spec -> Model (a tree structure)\n // This phases instantiates the models with default config by doing a top-down traversal. This allows us to pass properties that child models derive from their parents via their constructors.\n // See the abstract `Model` class and its children (UnitModel, LayerModel, FacetModel, ConcatModel) for different types of models.\n var model = buildModel(spec, null, '', undefined, config);\n // 4 Parse: Model --> Model with components\n // Note that components = intermediate representations that are equivalent to Vega specs.\n // We need these intermediate representation because we need to merge many visualization \"components\" like projections, scales, axes, and legends.\n // We will later convert these components into actual Vega specs in the assemble phase.\n // In this phase, we do a bottom-up traversal over the whole tree to\n // parse for each type of components once (e.g., data, layout, mark, scale).\n // By doing bottom-up traversal, we start parsing components of unit specs and\n // then merge child components of parent composite specs.\n //\n // Please see inside model.parse() for order of different components parsed.\n model.parse();\n // drawDataflow(model.component.data.sources);\n // 5. Optimize the dataflow. This will modify the data component of the model.\n optimizeDataflow(model.component.data, model);\n // drawDataflow(model.component.data.sources);\n // 6. Assemble: convert model components --> Vega Spec.\n var vgSpec = assembleTopLevelModel(model, getTopLevelProperties(inputSpec, spec.autosize, config, model), inputSpec.datasets, inputSpec.usermeta);\n return {\n spec: vgSpec,\n normalized: spec\n };\n } finally {\n // Reset the singleton logger if a logger is provided\n if (opt.logger) {\n log.reset();\n }\n // Reset the singleton field title formatter if provided\n if (opt.fieldTitle) {\n vlFieldDef.resetTitleFormatter();\n }\n }\n}\nfunction getTopLevelProperties(inputSpec, autosize, config, model) {\n var width = model.component.layoutSize.get('width');\n var height = model.component.layoutSize.get('height');\n if (autosize === undefined) {\n autosize = {\n type: 'pad'\n };\n if (model.hasAxisOrientSignalRef()) {\n autosize.resize = true;\n }\n } else if (isString(autosize)) {\n autosize = {\n type: autosize\n };\n }\n if (width && height && isFitType(autosize.type)) {\n if (width === 'step' && height === 'step') {\n log.warn(log.message.droppingFit());\n autosize.type = 'pad';\n } else if (width === 'step' || height === 'step') {\n // effectively XOR, because else if\n // get step dimension\n var sizeType = width === 'step' ? 'width' : 'height';\n // log that we're dropping fit for respective channel\n log.warn(log.message.droppingFit(getPositionScaleChannel(sizeType)));\n // setting type to inverse fit (so if we dropped fit-x, type is now fit-y)\n var inverseSizeType = sizeType === 'width' ? 'height' : 'width';\n autosize.type = getFitType(inverseSizeType);\n }\n }\n return _objectSpread(_objectSpread(_objectSpread({}, keys(autosize).length === 1 && autosize.type ? autosize.type === 'pad' ? {} : {\n autosize: autosize.type\n } : {\n autosize: autosize\n }), extractTopLevelProperties(config, false)), extractTopLevelProperties(inputSpec, true));\n}\n/*\n * Assemble the top-level model to a Vega spec.\n *\n * Note: this couldn't be `model.assemble()` since the top-level model\n * needs some special treatment to generate top-level properties.\n */\nfunction assembleTopLevelModel(model, topLevelProperties) {\n var datasets = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var usermeta = arguments.length > 3 ? arguments[3] : undefined;\n // Config with Vega-Lite only config removed.\n var vgConfig = model.config ? stripAndRedirectConfig(model.config) : undefined;\n var data = [].concat(model.assembleSelectionData([]),\n // only assemble data in the root\n assembleRootData(model.component.data, datasets));\n var projections = model.assembleProjections();\n var title = model.assembleTitle();\n var style = model.assembleGroupStyle();\n var encodeEntry = model.assembleGroupEncodeEntry(true);\n var layoutSignals = model.assembleLayoutSignals();\n // move width and height signals with values to top level\n layoutSignals = layoutSignals.filter(function (signal) {\n if ((signal.name === 'width' || signal.name === 'height') && signal.value !== undefined) {\n topLevelProperties[signal.name] = +signal.value;\n return false;\n }\n return true;\n });\n var params = topLevelProperties.params,\n otherTopLevelProps = _objectWithoutProperties(topLevelProperties, _excluded);\n return _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({\n $schema: 'https://vega.github.io/schema/vega/v5.json'\n }, model.description ? {\n description: model.description\n } : {}), otherTopLevelProps), title ? {\n title: title\n } : {}), style ? {\n style: style\n } : {}), encodeEntry ? {\n encode: {\n update: encodeEntry\n }\n } : {}), {}, {\n data: data\n }, projections.length > 0 ? {\n projections: projections\n } : {}), model.assembleGroup([].concat(_toConsumableArray(layoutSignals), _toConsumableArray(model.assembleSelectionTopLevelSignals([])), _toConsumableArray(assembleParameterSignals(params))))), vgConfig ? {\n config: vgConfig\n } : {}), usermeta ? {\n usermeta: usermeta\n } : {});\n}","import pkg from '../package.json';\nexport var version = pkg.version;\nexport { compile } from './compile/compile';\nexport { normalize } from './normalize';\nexport * from './util';","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nfunction e(e) {\n var _exec$slice = /schema\\/([\\w-]+)\\/([\\w\\.\\-]+)\\.json$/g.exec(e).slice(1, 3),\n _exec$slice2 = _slicedToArray(_exec$slice, 2),\n n = _exec$slice2[0],\n r = _exec$slice2[1];\n return {\n library: n,\n version: r\n };\n}\nexport default e;","var name = \"vega-themes\";\nvar version$1 = \"2.14.0\";\nvar description = \"Themes for stylized Vega and Vega-Lite visualizations.\";\nvar keywords = [\"vega\", \"vega-lite\", \"themes\", \"style\"];\nvar license = \"BSD-3-Clause\";\nvar author = {\n name: \"UW Interactive Data Lab\",\n url: \"https://idl.cs.washington.edu\"\n};\nvar contributors = [{\n name: \"Emily Gu\",\n url: \"https://github.com/emilygu\"\n}, {\n name: \"Arvind Satyanarayan\",\n url: \"http://arvindsatya.com\"\n}, {\n name: \"Jeffrey Heer\",\n url: \"https://idl.cs.washington.edu\"\n}, {\n name: \"Dominik Moritz\",\n url: \"https://www.domoritz.de\"\n}];\nvar main = \"build/vega-themes.js\";\nvar module = \"build/vega-themes.module.js\";\nvar unpkg = \"build/vega-themes.min.js\";\nvar jsdelivr = \"build/vega-themes.min.js\";\nvar types = \"build/vega-themes.module.d.ts\";\nvar repository = {\n type: \"git\",\n url: \"https://github.com/vega/vega-themes.git\"\n};\nvar files = [\"src\", \"build\"];\nvar scripts = {\n prebuild: \"yarn clean\",\n build: \"rollup -c\",\n clean: \"rimraf build && rimraf examples/build\",\n \"copy:data\": \"rsync -r node_modules/vega-datasets/data/* examples/data\",\n \"copy:build\": \"rsync -r build/* examples/build\",\n \"deploy:gh\": \"yarn build && mkdir -p examples/build && rsync -r build/* examples/build && gh-pages -d examples\",\n preversion: \"yarn lint\",\n serve: \"browser-sync start -s -f build examples --serveStatic examples\",\n start: \"yarn build && concurrently --kill-others -n Server,Rollup 'yarn serve' 'rollup -c -w'\",\n format: \"eslint . --fix\",\n lint: \"eslint .\",\n release: \"release-it\"\n};\nvar devDependencies = {\n \"@babel/core\": \"^7.22.9\",\n \"@babel/plugin-proposal-async-generator-functions\": \"^7.20.7\",\n \"@babel/plugin-proposal-json-strings\": \"^7.18.6\",\n \"@babel/plugin-proposal-object-rest-spread\": \"^7.20.7\",\n \"@babel/plugin-proposal-optional-catch-binding\": \"^7.18.6\",\n \"@babel/plugin-transform-runtime\": \"^7.22.9\",\n \"@babel/preset-env\": \"^7.22.9\",\n \"@babel/preset-typescript\": \"^7.22.5\",\n \"@release-it/conventional-changelog\": \"^7.0.0\",\n \"@rollup/plugin-json\": \"^6.0.0\",\n \"@rollup/plugin-node-resolve\": \"^15.1.0\",\n \"@rollup/plugin-terser\": \"^0.4.3\",\n \"@typescript-eslint/eslint-plugin\": \"^6.0.0\",\n \"@typescript-eslint/parser\": \"^6.0.0\",\n \"browser-sync\": \"^2.29.3\",\n concurrently: \"^8.2.0\",\n eslint: \"^8.45.0\",\n \"eslint-config-prettier\": \"^8.8.0\",\n \"eslint-plugin-prettier\": \"^5.0.0\",\n \"gh-pages\": \"^5.0.0\",\n prettier: \"^3.0.0\",\n \"release-it\": \"^16.1.0\",\n rollup: \"^3.26.2\",\n \"rollup-plugin-bundle-size\": \"^1.0.3\",\n \"rollup-plugin-ts\": \"^3.2.0\",\n typescript: \"^5.1.6\",\n vega: \"^5.25.0\",\n \"vega-lite\": \"^5.9.3\"\n};\nvar peerDependencies = {\n vega: \"*\",\n \"vega-lite\": \"*\"\n};\nvar dependencies = {};\nvar pkg = {\n name: name,\n version: version$1,\n description: description,\n keywords: keywords,\n license: license,\n author: author,\n contributors: contributors,\n main: main,\n module: module,\n unpkg: unpkg,\n jsdelivr: jsdelivr,\n types: types,\n repository: repository,\n files: files,\n scripts: scripts,\n devDependencies: devDependencies,\n peerDependencies: peerDependencies,\n dependencies: dependencies\n};\nvar lightColor = '#fff';\nvar medColor = '#888';\nvar darkTheme = {\n background: '#333',\n view: {\n stroke: medColor\n },\n title: {\n color: lightColor,\n subtitleColor: lightColor\n },\n style: {\n 'guide-label': {\n fill: lightColor\n },\n 'guide-title': {\n fill: lightColor\n }\n },\n axis: {\n domainColor: lightColor,\n gridColor: medColor,\n tickColor: lightColor\n }\n};\nvar markColor$7 = '#4572a7';\nvar excelTheme = {\n background: '#fff',\n arc: {\n fill: markColor$7\n },\n area: {\n fill: markColor$7\n },\n line: {\n stroke: markColor$7,\n strokeWidth: 2\n },\n path: {\n stroke: markColor$7\n },\n rect: {\n fill: markColor$7\n },\n shape: {\n stroke: markColor$7\n },\n symbol: {\n fill: markColor$7,\n strokeWidth: 1.5,\n size: 50\n },\n axis: {\n bandPosition: 0.5,\n grid: true,\n gridColor: '#000000',\n gridOpacity: 1,\n gridWidth: 0.5,\n labelPadding: 10,\n tickSize: 5,\n tickWidth: 0.5\n },\n axisBand: {\n grid: false,\n tickExtra: true\n },\n legend: {\n labelBaseline: 'middle',\n labelFontSize: 11,\n symbolSize: 50,\n symbolType: 'square'\n },\n range: {\n category: ['#4572a7', '#aa4643', '#8aa453', '#71598e', '#4598ae', '#d98445', '#94aace', '#d09393', '#b9cc98', '#a99cbc']\n }\n};\nvar markColor$6 = '#30a2da';\nvar axisColor$2 = '#cbcbcb';\nvar guideLabelColor = '#999';\nvar guideTitleColor = '#333';\nvar backgroundColor$2 = '#f0f0f0';\nvar blackTitle = '#333';\nvar fiveThirtyEightTheme = {\n arc: {\n fill: markColor$6\n },\n area: {\n fill: markColor$6\n },\n axis: {\n domainColor: axisColor$2,\n grid: true,\n gridColor: axisColor$2,\n gridWidth: 1,\n labelColor: guideLabelColor,\n labelFontSize: 10,\n titleColor: guideTitleColor,\n tickColor: axisColor$2,\n tickSize: 10,\n titleFontSize: 14,\n titlePadding: 10,\n labelPadding: 4\n },\n axisBand: {\n grid: false\n },\n background: backgroundColor$2,\n group: {\n fill: backgroundColor$2\n },\n legend: {\n labelColor: blackTitle,\n labelFontSize: 11,\n padding: 1,\n symbolSize: 30,\n symbolType: 'square',\n titleColor: blackTitle,\n titleFontSize: 14,\n titlePadding: 10\n },\n line: {\n stroke: markColor$6,\n strokeWidth: 2\n },\n path: {\n stroke: markColor$6,\n strokeWidth: 0.5\n },\n rect: {\n fill: markColor$6\n },\n range: {\n category: ['#30a2da', '#fc4f30', '#e5ae38', '#6d904f', '#8b8b8b', '#b96db8', '#ff9e27', '#56cc60', '#52d2ca', '#52689e', '#545454', '#9fe4f8'],\n diverging: ['#cc0020', '#e77866', '#f6e7e1', '#d6e8ed', '#91bfd9', '#1d78b5'],\n heatmap: ['#d6e8ed', '#cee0e5', '#91bfd9', '#549cc6', '#1d78b5']\n },\n point: {\n filled: true,\n shape: 'circle'\n },\n shape: {\n stroke: markColor$6\n },\n bar: {\n binSpacing: 2,\n fill: markColor$6,\n stroke: null\n },\n title: {\n anchor: 'start',\n fontSize: 24,\n fontWeight: 600,\n offset: 20\n }\n};\nvar markColor$5 = '#000';\nvar ggplot2Theme = {\n group: {\n fill: '#e5e5e5'\n },\n arc: {\n fill: markColor$5\n },\n area: {\n fill: markColor$5\n },\n line: {\n stroke: markColor$5\n },\n path: {\n stroke: markColor$5\n },\n rect: {\n fill: markColor$5\n },\n shape: {\n stroke: markColor$5\n },\n symbol: {\n fill: markColor$5,\n size: 40\n },\n axis: {\n domain: false,\n grid: true,\n gridColor: '#FFFFFF',\n gridOpacity: 1,\n labelColor: '#7F7F7F',\n labelPadding: 4,\n tickColor: '#7F7F7F',\n tickSize: 5.67,\n titleFontSize: 16,\n titleFontWeight: 'normal'\n },\n legend: {\n labelBaseline: 'middle',\n labelFontSize: 11,\n symbolSize: 40\n },\n range: {\n category: ['#000000', '#7F7F7F', '#1A1A1A', '#999999', '#333333', '#B0B0B0', '#4D4D4D', '#C9C9C9', '#666666', '#DCDCDC']\n }\n};\nvar headlineFontSize = 22;\nvar headlineFontWeight = 'normal';\nvar labelFont$1 = 'Benton Gothic, sans-serif';\nvar labelFontSize = 11.5;\nvar labelFontWeight = 'normal';\nvar markColor$4 = '#82c6df';\n// const markHighlight = '#006d8f';\n// const markDemocrat = '#5789b8';\n// const markRepublican = '#d94f54';\nvar titleFont = 'Benton Gothic Bold, sans-serif';\nvar titleFontWeight = 'normal';\nvar titleFontSize$1 = 13;\nvar colorSchemes$1 = {\n 'category-6': ['#ec8431', '#829eb1', '#c89d29', '#3580b1', '#adc839', '#ab7fb4'],\n 'fire-7': ['#fbf2c7', '#f9e39c', '#f8d36e', '#f4bb6a', '#e68a4f', '#d15a40', '#ab4232'],\n 'fireandice-6': ['#e68a4f', '#f4bb6a', '#f9e39c', '#dadfe2', '#a6b7c6', '#849eae'],\n 'ice-7': ['#edefee', '#dadfe2', '#c4ccd2', '#a6b7c6', '#849eae', '#607785', '#47525d']\n};\nvar latimesTheme = {\n background: '#ffffff',\n title: {\n anchor: 'start',\n color: '#000000',\n font: titleFont,\n fontSize: headlineFontSize,\n fontWeight: headlineFontWeight\n },\n arc: {\n fill: markColor$4\n },\n area: {\n fill: markColor$4\n },\n line: {\n stroke: markColor$4,\n strokeWidth: 2\n },\n path: {\n stroke: markColor$4\n },\n rect: {\n fill: markColor$4\n },\n shape: {\n stroke: markColor$4\n },\n symbol: {\n fill: markColor$4,\n size: 30\n },\n axis: {\n labelFont: labelFont$1,\n labelFontSize: labelFontSize,\n labelFontWeight: labelFontWeight,\n titleFont: titleFont,\n titleFontSize: titleFontSize$1,\n titleFontWeight: titleFontWeight\n },\n axisX: {\n labelAngle: 0,\n labelPadding: 4,\n tickSize: 3\n },\n axisY: {\n labelBaseline: 'middle',\n maxExtent: 45,\n minExtent: 45,\n tickSize: 2,\n titleAlign: 'left',\n titleAngle: 0,\n titleX: -45,\n titleY: -11\n },\n legend: {\n labelFont: labelFont$1,\n labelFontSize: labelFontSize,\n symbolType: 'square',\n titleFont: titleFont,\n titleFontSize: titleFontSize$1,\n titleFontWeight: titleFontWeight\n },\n range: {\n category: colorSchemes$1['category-6'],\n diverging: colorSchemes$1['fireandice-6'],\n heatmap: colorSchemes$1['fire-7'],\n ordinal: colorSchemes$1['fire-7'],\n ramp: colorSchemes$1['fire-7']\n }\n};\nvar markColor$3 = '#ab5787';\nvar axisColor$1 = '#979797';\nvar quartzTheme = {\n background: '#f9f9f9',\n arc: {\n fill: markColor$3\n },\n area: {\n fill: markColor$3\n },\n line: {\n stroke: markColor$3\n },\n path: {\n stroke: markColor$3\n },\n rect: {\n fill: markColor$3\n },\n shape: {\n stroke: markColor$3\n },\n symbol: {\n fill: markColor$3,\n size: 30\n },\n axis: {\n domainColor: axisColor$1,\n domainWidth: 0.5,\n gridWidth: 0.2,\n labelColor: axisColor$1,\n tickColor: axisColor$1,\n tickWidth: 0.2,\n titleColor: axisColor$1\n },\n axisBand: {\n grid: false\n },\n axisX: {\n grid: true,\n tickSize: 10\n },\n axisY: {\n domain: false,\n grid: true,\n tickSize: 0\n },\n legend: {\n labelFontSize: 11,\n padding: 1,\n symbolSize: 30,\n symbolType: 'square'\n },\n range: {\n category: ['#ab5787', '#51b2e5', '#703c5c', '#168dd9', '#d190b6', '#00609f', '#d365ba', '#154866', '#666666', '#c4c4c4']\n }\n};\nvar markColor$2 = '#3e5c69';\nvar voxTheme = {\n background: '#fff',\n arc: {\n fill: markColor$2\n },\n area: {\n fill: markColor$2\n },\n line: {\n stroke: markColor$2\n },\n path: {\n stroke: markColor$2\n },\n rect: {\n fill: markColor$2\n },\n shape: {\n stroke: markColor$2\n },\n symbol: {\n fill: markColor$2\n },\n axis: {\n domainWidth: 0.5,\n grid: true,\n labelPadding: 2,\n tickSize: 5,\n tickWidth: 0.5,\n titleFontWeight: 'normal'\n },\n axisBand: {\n grid: false\n },\n axisX: {\n gridWidth: 0.2\n },\n axisY: {\n gridDash: [3],\n gridWidth: 0.4\n },\n legend: {\n labelFontSize: 11,\n padding: 1,\n symbolType: 'square'\n },\n range: {\n category: ['#3e5c69', '#6793a6', '#182429', '#0570b0', '#3690c0', '#74a9cf', '#a6bddb', '#e2ddf2']\n }\n};\nvar markColor$1 = '#1696d2';\nvar axisColor = '#000000';\nvar backgroundColor$1 = '#FFFFFF';\nvar font = 'Lato';\nvar labelFont = 'Lato';\nvar sourceFont = 'Lato';\nvar gridColor$1 = '#DEDDDD';\nvar titleFontSize = 18;\nvar colorSchemes = {\n 'main-colors': ['#1696d2', '#d2d2d2', '#000000', '#fdbf11', '#ec008b', '#55b748', '#5c5859', '#db2b27'],\n 'shades-blue': ['#CFE8F3', '#A2D4EC', '#73BFE2', '#46ABDB', '#1696D2', '#12719E', '#0A4C6A', '#062635'],\n 'shades-gray': ['#F5F5F5', '#ECECEC', '#E3E3E3', '#DCDBDB', '#D2D2D2', '#9D9D9D', '#696969', '#353535'],\n 'shades-yellow': ['#FFF2CF', '#FCE39E', '#FDD870', '#FCCB41', '#FDBF11', '#E88E2D', '#CA5800', '#843215'],\n 'shades-magenta': ['#F5CBDF', '#EB99C2', '#E46AA7', '#E54096', '#EC008B', '#AF1F6B', '#761548', '#351123'],\n 'shades-green': ['#DCEDD9', '#BCDEB4', '#98CF90', '#78C26D', '#55B748', '#408941', '#2C5C2D', '#1A2E19'],\n 'shades-black': ['#D5D5D4', '#ADABAC', '#848081', '#5C5859', '#332D2F', '#262223', '#1A1717', '#0E0C0D'],\n 'shades-red': ['#F8D5D4', '#F1AAA9', '#E9807D', '#E25552', '#DB2B27', '#A4201D', '#6E1614', '#370B0A'],\n 'one-group': ['#1696d2', '#000000'],\n 'two-groups-cat-1': ['#1696d2', '#000000'],\n 'two-groups-cat-2': ['#1696d2', '#fdbf11'],\n 'two-groups-cat-3': ['#1696d2', '#db2b27'],\n 'two-groups-seq': ['#a2d4ec', '#1696d2'],\n 'three-groups-cat': ['#1696d2', '#fdbf11', '#000000'],\n 'three-groups-seq': ['#a2d4ec', '#1696d2', '#0a4c6a'],\n 'four-groups-cat-1': ['#000000', '#d2d2d2', '#fdbf11', '#1696d2'],\n 'four-groups-cat-2': ['#1696d2', '#ec0008b', '#fdbf11', '#5c5859'],\n 'four-groups-seq': ['#cfe8f3', '#73bf42', '#1696d2', '#0a4c6a'],\n 'five-groups-cat-1': ['#1696d2', '#fdbf11', '#d2d2d2', '#ec008b', '#000000'],\n 'five-groups-cat-2': ['#1696d2', '#0a4c6a', '#d2d2d2', '#fdbf11', '#332d2f'],\n 'five-groups-seq': ['#cfe8f3', '#73bf42', '#1696d2', '#0a4c6a', '#000000'],\n 'six-groups-cat-1': ['#1696d2', '#ec008b', '#fdbf11', '#000000', '#d2d2d2', '#55b748'],\n 'six-groups-cat-2': ['#1696d2', '#d2d2d2', '#ec008b', '#fdbf11', '#332d2f', '#0a4c6a'],\n 'six-groups-seq': ['#cfe8f3', '#a2d4ec', '#73bfe2', '#46abdb', '#1696d2', '#12719e'],\n 'diverging-colors': ['#ca5800', '#fdbf11', '#fdd870', '#fff2cf', '#cfe8f3', '#73bfe2', '#1696d2', '#0a4c6a']\n};\nvar urbanInstituteTheme = {\n background: backgroundColor$1,\n title: {\n anchor: 'start',\n fontSize: titleFontSize,\n font: font\n },\n axisX: {\n domain: true,\n domainColor: axisColor,\n domainWidth: 1,\n grid: false,\n labelFontSize: 12,\n labelFont: labelFont,\n labelAngle: 0,\n tickColor: axisColor,\n tickSize: 5,\n titleFontSize: 12,\n titlePadding: 10,\n titleFont: font\n },\n axisY: {\n domain: false,\n domainWidth: 1,\n grid: true,\n gridColor: gridColor$1,\n gridWidth: 1,\n labelFontSize: 12,\n labelFont: labelFont,\n labelPadding: 8,\n ticks: false,\n titleFontSize: 12,\n titlePadding: 10,\n titleFont: font,\n titleAngle: 0,\n titleY: -10,\n titleX: 18\n },\n legend: {\n labelFontSize: 12,\n labelFont: labelFont,\n symbolSize: 100,\n titleFontSize: 12,\n titlePadding: 10,\n titleFont: font,\n orient: 'right',\n offset: 10\n },\n view: {\n stroke: 'transparent'\n },\n range: {\n category: colorSchemes['six-groups-cat-1'],\n diverging: colorSchemes['diverging-colors'],\n heatmap: colorSchemes['diverging-colors'],\n ordinal: colorSchemes['six-groups-seq'],\n ramp: colorSchemes['shades-blue']\n },\n area: {\n fill: markColor$1\n },\n rect: {\n fill: markColor$1\n },\n line: {\n color: markColor$1,\n stroke: markColor$1,\n strokeWidth: 5\n },\n trail: {\n color: markColor$1,\n stroke: markColor$1,\n strokeWidth: 0,\n size: 1\n },\n path: {\n stroke: markColor$1,\n strokeWidth: 0.5\n },\n point: {\n filled: true\n },\n text: {\n font: sourceFont,\n color: markColor$1,\n fontSize: 11,\n align: 'center',\n fontWeight: 400,\n size: 11\n },\n style: {\n bar: {\n fill: markColor$1,\n stroke: null\n }\n },\n arc: {\n fill: markColor$1\n },\n shape: {\n stroke: markColor$1\n },\n symbol: {\n fill: markColor$1,\n size: 30\n }\n};\n\n/**\n * Copyright 2020 Google LLC.\n *\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file or at\n * https://developers.google.com/open-source/licenses/bsd\n */\n\nvar markColor = '#3366CC';\nvar gridColor = '#ccc';\nvar defaultFont$1 = 'Arial, sans-serif';\nvar googlechartsTheme = {\n arc: {\n fill: markColor\n },\n area: {\n fill: markColor\n },\n path: {\n stroke: markColor\n },\n rect: {\n fill: markColor\n },\n shape: {\n stroke: markColor\n },\n symbol: {\n stroke: markColor\n },\n circle: {\n fill: markColor\n },\n background: '#fff',\n padding: {\n top: 10,\n right: 10,\n bottom: 10,\n left: 10\n },\n style: {\n 'guide-label': {\n font: defaultFont$1,\n fontSize: 12\n },\n 'guide-title': {\n font: defaultFont$1,\n fontSize: 12\n },\n 'group-title': {\n font: defaultFont$1,\n fontSize: 12\n }\n },\n title: {\n font: defaultFont$1,\n fontSize: 14,\n fontWeight: 'bold',\n dy: -3,\n anchor: 'start'\n },\n axis: {\n gridColor: gridColor,\n tickColor: gridColor,\n domain: false,\n grid: true\n },\n range: {\n category: ['#4285F4', '#DB4437', '#F4B400', '#0F9D58', '#AB47BC', '#00ACC1', '#FF7043', '#9E9D24', '#5C6BC0', '#F06292', '#00796B', '#C2185B'],\n heatmap: ['#c6dafc', '#5e97f6', '#2a56c6']\n }\n};\nvar ptToPx = function ptToPx(value) {\n return value * (1 / 3 + 1);\n};\nvar fontSmallPx = ptToPx(9);\nvar legendFontPx = ptToPx(10);\nvar fontLargePx = ptToPx(12);\nvar fontStandard = 'Segoe UI';\nvar fontTitle = 'wf_standard-font, helvetica, arial, sans-serif';\nvar firstLevelElementColor = '#252423';\nvar secondLevelElementColor = '#605E5C';\nvar backgroundColor = 'transparent';\nvar backgroundSecondaryColor = '#C8C6C4';\nvar paletteColor1 = '#118DFF';\nvar paletteColor2 = '#12239E';\nvar paletteColor3 = '#E66C37';\nvar paletteColor4 = '#6B007B';\nvar paletteColor5 = '#E044A7';\nvar paletteColor6 = '#744EC2';\nvar paletteColor7 = '#D9B300';\nvar paletteColor8 = '#D64550';\nvar divergentColorMax = paletteColor1;\nvar divergentColorMin = '#DEEFFF';\nvar divergentPalette = [divergentColorMin, divergentColorMax];\nvar ordinalPalette = [divergentColorMin, '#c7e4ff', '#b0d9ff', '#9aceff', '#83c3ff', '#6cb9ff', '#55aeff', '#3fa3ff', '#2898ff', divergentColorMax];\nvar powerbiTheme = {\n view: {\n stroke: backgroundColor\n },\n background: backgroundColor,\n font: fontStandard,\n header: {\n titleFont: fontTitle,\n titleFontSize: fontLargePx,\n titleColor: firstLevelElementColor,\n labelFont: fontStandard,\n labelFontSize: legendFontPx,\n labelColor: secondLevelElementColor\n },\n axis: {\n ticks: false,\n grid: false,\n domain: false,\n labelColor: secondLevelElementColor,\n labelFontSize: fontSmallPx,\n titleFont: fontTitle,\n titleColor: firstLevelElementColor,\n titleFontSize: fontLargePx,\n titleFontWeight: 'normal'\n },\n axisQuantitative: {\n tickCount: 3,\n grid: true,\n gridColor: backgroundSecondaryColor,\n gridDash: [1, 5],\n labelFlush: false\n },\n axisBand: {\n tickExtra: true\n },\n axisX: {\n labelPadding: 5\n },\n axisY: {\n labelPadding: 10\n },\n bar: {\n fill: paletteColor1\n },\n line: {\n stroke: paletteColor1,\n strokeWidth: 3,\n strokeCap: 'round',\n strokeJoin: 'round'\n },\n text: {\n font: fontStandard,\n fontSize: fontSmallPx,\n fill: secondLevelElementColor\n },\n arc: {\n fill: paletteColor1\n },\n area: {\n fill: paletteColor1,\n line: true,\n opacity: 0.6\n },\n path: {\n stroke: paletteColor1\n },\n rect: {\n fill: paletteColor1\n },\n point: {\n fill: paletteColor1,\n filled: true,\n size: 75\n },\n shape: {\n stroke: paletteColor1\n },\n symbol: {\n fill: paletteColor1,\n strokeWidth: 1.5,\n size: 50\n },\n legend: {\n titleFont: fontStandard,\n titleFontWeight: 'bold',\n titleColor: secondLevelElementColor,\n labelFont: fontStandard,\n labelFontSize: legendFontPx,\n labelColor: secondLevelElementColor,\n symbolType: 'circle',\n symbolSize: 75\n },\n range: {\n category: [paletteColor1, paletteColor2, paletteColor3, paletteColor4, paletteColor5, paletteColor6, paletteColor7, paletteColor8],\n diverging: divergentPalette,\n heatmap: divergentPalette,\n ordinal: ordinalPalette\n }\n};\nvar defaultFont = 'IBM Plex Sans,system-ui,-apple-system,BlinkMacSystemFont,\".sfnstext-regular\",sans-serif';\nvar fontWeight = 400;\nvar darkCategories = ['#8a3ffc', '#33b1ff', '#007d79', '#ff7eb6', '#fa4d56', '#fff1f1', '#6fdc8c', '#4589ff', '#d12771', '#d2a106', '#08bdba', '#bae6ff', '#ba4e00', '#d4bbff'];\nvar lightCategories = ['#6929c4', '#1192e8', '#005d5d', '#9f1853', '#fa4d56', '#570408', '#198038', '#002d9c', '#ee538b', '#b28600', '#009d9a', '#012749', '#8a3800', '#a56eff'];\nfunction genCarbonConfig(_ref) {\n var type = _ref.type,\n background = _ref.background;\n var viewbg = type === 'dark' ? '#161616' : '#ffffff';\n var textColor = type === 'dark' ? '#f4f4f4' : '#161616';\n var category = type === 'dark' ? darkCategories : lightCategories;\n var markColor = type === 'dark' ? '#d4bbff' : '#6929c4';\n return {\n background: background,\n arc: {\n fill: markColor\n },\n area: {\n fill: markColor\n },\n path: {\n stroke: markColor\n },\n rect: {\n fill: markColor\n },\n shape: {\n stroke: markColor\n },\n symbol: {\n stroke: markColor\n },\n circle: {\n fill: markColor\n },\n view: {\n fill: viewbg,\n stroke: viewbg\n },\n group: {\n fill: viewbg\n },\n title: {\n color: textColor,\n anchor: 'start',\n dy: -15,\n fontSize: 16,\n font: defaultFont,\n fontWeight: 600\n },\n axis: {\n labelColor: textColor,\n labelFontSize: 12,\n grid: true,\n gridColor: '#525252',\n titleColor: textColor,\n labelAngle: 0\n },\n style: {\n 'guide-label': {\n font: defaultFont,\n fill: textColor,\n fontWeight: fontWeight\n },\n 'guide-title': {\n font: defaultFont,\n fill: textColor,\n fontWeight: fontWeight\n }\n },\n range: {\n category: category,\n diverging: ['#750e13', '#a2191f', '#da1e28', '#fa4d56', '#ff8389', '#ffb3b8', '#ffd7d9', '#fff1f1', '#e5f6ff', '#bae6ff', '#82cfff', '#33b1ff', '#1192e8', '#0072c3', '#00539a', '#003a6d'],\n heatmap: ['#f6f2ff', '#e8daff', '#d4bbff', '#be95ff', '#a56eff', '#8a3ffc', '#6929c4', '#491d8b', '#31135e', '#1c0f30']\n }\n };\n}\nvar carbonwhite = genCarbonConfig({\n type: 'light',\n background: '#ffffff'\n});\nvar carbong10 = genCarbonConfig({\n type: 'light',\n background: '#f4f4f4'\n});\nvar carbong90 = genCarbonConfig({\n type: 'dark',\n background: '#262626'\n});\nvar carbong100 = genCarbonConfig({\n type: 'dark',\n background: '#161616'\n});\nvar version = pkg.version;\nexport { carbong10, carbong100, carbong90, carbonwhite, darkTheme as dark, excelTheme as excel, fiveThirtyEightTheme as fivethirtyeight, ggplot2Theme as ggplot2, googlechartsTheme as googlecharts, latimesTheme as latimes, powerbiTheme as powerbi, quartzTheme as quartz, urbanInstituteTheme as urbaninstitute, version, voxTheme as vox };","import _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { isArray, isString, isObject } from 'vega-util';\nvar name = \"vega-tooltip\";\nvar version$1 = \"0.32.0\";\nvar description = \"A tooltip plugin for Vega-Lite and Vega visualizations.\";\nvar keywords = [\"vega-lite\", \"vega\", \"tooltip\"];\nvar repository = {\n type: \"git\",\n url: \"https://github.com/vega/vega-tooltip.git\"\n};\nvar author = {\n name: \"UW Interactive Data Lab\",\n url: \"https://idl.cs.washington.edu\"\n};\nvar collaborators = [\"Dominik Moritz\", \"Sira Horradarn\", \"Zening Qu\", \"Kanit Wongsuphasawat\", \"Yuri Astrakhan\", \"Jeffrey Heer\"];\nvar license = \"BSD-3-Clause\";\nvar bugs = {\n url: \"https://github.com/vega/vega-tooltip/issues\"\n};\nvar homepage = \"https://github.com/vega/vega-tooltip#readme\";\nvar main = \"build/vega-tooltip.js\";\nvar module = \"build/vega-tooltip.module.js\";\nvar unpkg = \"build/vega-tooltip.min.js\";\nvar jsdelivr = \"build/vega-tooltip.min.js\";\nvar types = \"build/vega-tooltip.module.d.ts\";\nvar files = [\"src\", \"build\", \"types\"];\nvar scripts = {\n prebuild: \"yarn clean && yarn build:style\",\n build: \"rollup -c\",\n \"build:style\": \"./build-style.sh\",\n clean: \"rimraf build && rimraf src/style.ts\",\n \"copy:data\": \"rsync -r node_modules/vega-datasets/data/* examples/data\",\n \"copy:build\": \"rsync -r build/* examples/build\",\n \"deploy:gh\": \"yarn build && yarn copy:build && gh-pages -d examples && yarn clean\",\n prepublishOnly: \"yarn clean && yarn build\",\n preversion: \"yarn lint && yarn test\",\n serve: \"browser-sync start -s -f build examples --serveStatic examples\",\n start: \"yarn build && concurrently --kill-others -n Server,Rollup 'yarn serve' 'rollup -c -w'\",\n pretest: \"yarn build:style\",\n test: \"jest\",\n \"test:inspect\": \"node --inspect-brk ./node_modules/.bin/jest --runInBand\",\n prepare: \"yarn copy:data\",\n prettierbase: \"prettier '*.{css,scss,html}'\",\n format: \"eslint . --fix && yarn prettierbase --write\",\n lint: \"eslint . && yarn prettierbase --check\",\n release: \"release-it\"\n};\nvar devDependencies = {\n \"@babel/core\": \"^7.21.4\",\n \"@babel/plugin-transform-runtime\": \"^7.21.4\",\n \"@babel/preset-env\": \"^7.21.4\",\n \"@babel/preset-typescript\": \"^7.21.4\",\n \"@release-it/conventional-changelog\": \"^5.1.1\",\n \"@rollup/plugin-json\": \"^6.0.0\",\n \"@rollup/plugin-node-resolve\": \"^15.0.2\",\n \"@rollup/plugin-terser\": \"^0.4.1\",\n \"@types/jest\": \"^29.5.1\",\n \"@typescript-eslint/eslint-plugin\": \"^5.59.0\",\n \"@typescript-eslint/parser\": \"^5.59.0\",\n \"browser-sync\": \"^2.29.1\",\n concurrently: \"^8.0.1\",\n eslint: \"^8.38.0\",\n \"eslint-config-prettier\": \"^8.8.0\",\n \"eslint-plugin-jest\": \"^27.2.1\",\n \"eslint-plugin-prettier\": \"^4.2.1\",\n \"gh-pages\": \"^5.0.0\",\n jest: \"^29.5.0\",\n \"jest-environment-jsdom\": \"^29.5.0\",\n path: \"^0.12.7\",\n prettier: \"^2.8.7\",\n \"release-it\": \"^15.10.1\",\n rollup: \"^3.20.6\",\n \"rollup-plugin-bundle-size\": \"^1.0.3\",\n \"rollup-plugin-ts\": \"^3.2.0\",\n sass: \"^1.62.0\",\n typescript: \"~5.0.4\",\n \"vega-datasets\": \"^2.7.0\",\n \"vega-typings\": \"^0.24.0\"\n};\nvar dependencies = {\n \"vega-util\": \"^1.17.1\"\n};\nvar pkg = {\n name: name,\n version: version$1,\n description: description,\n keywords: keywords,\n repository: repository,\n author: author,\n collaborators: collaborators,\n license: license,\n bugs: bugs,\n homepage: homepage,\n main: main,\n module: module,\n unpkg: unpkg,\n jsdelivr: jsdelivr,\n types: types,\n files: files,\n scripts: scripts,\n devDependencies: devDependencies,\n dependencies: dependencies\n};\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\nfunction _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\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 return obj;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nvar _excluded = [\"title\", \"image\"];\n\n/**\n * Format the value to be shown in the tooltip.\n *\n * @param value The value to show in the tooltip.\n * @param valueToHtml Function to convert a single cell value to an HTML string\n */\nfunction formatValue(value, valueToHtml, maxDepth) {\n if (isArray(value)) {\n return \"[\".concat(value.map(function (v) {\n return valueToHtml(isString(v) ? v : stringify(v, maxDepth));\n }).join(', '), \"]\");\n }\n if (isObject(value)) {\n var content = '';\n var _ref = value,\n title = _ref.title,\n image = _ref.image,\n rest = _objectWithoutProperties(_ref, _excluded);\n if (title) {\n content += \"

      \".concat(valueToHtml(title), \"

      \");\n }\n if (image) {\n content += \"\");\n }\n var keys = Object.keys(rest);\n if (keys.length > 0) {\n content += '';\n var _iterator = _createForOfIteratorHelper(keys),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var key = _step.value;\n var val = rest[key];\n\n // ignore undefined properties\n if (val === undefined) {\n continue;\n }\n if (isObject(val)) {\n val = stringify(val, maxDepth);\n }\n content += \"\");\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n content += \"
      \".concat(valueToHtml(key), \":\").concat(valueToHtml(val), \"
      \";\n }\n return content || '{}'; // show empty object if there are no properties\n }\n\n return valueToHtml(value);\n}\nfunction replacer(maxDepth) {\n var stack = [];\n return function (key, value) {\n if (typeof value !== 'object' || value === null) {\n return value;\n }\n var pos = stack.indexOf(this) + 1;\n stack.length = pos;\n if (stack.length > maxDepth) {\n return '[Object]';\n }\n if (stack.indexOf(value) >= 0) {\n return '[Circular]';\n }\n stack.push(value);\n return value;\n };\n}\n\n/**\n * Stringify any JS object to valid JSON\n */\nfunction stringify(obj, maxDepth) {\n return JSON.stringify(obj, replacer(maxDepth));\n}\n\n// generated with build-style.sh\nvar defaultStyle = \"#vg-tooltip-element {\\n visibility: hidden;\\n padding: 8px;\\n position: fixed;\\n z-index: 1000;\\n font-family: sans-serif;\\n font-size: 11px;\\n border-radius: 3px;\\n box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.1);\\n /* The default theme is the light theme. */\\n background-color: rgba(255, 255, 255, 0.95);\\n border: 1px solid #d9d9d9;\\n color: black;\\n}\\n#vg-tooltip-element.visible {\\n visibility: visible;\\n}\\n#vg-tooltip-element h2 {\\n margin-top: 0;\\n margin-bottom: 10px;\\n font-size: 13px;\\n}\\n#vg-tooltip-element table {\\n border-spacing: 0;\\n}\\n#vg-tooltip-element table tr {\\n border: none;\\n}\\n#vg-tooltip-element table tr td {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n padding-top: 2px;\\n padding-bottom: 2px;\\n}\\n#vg-tooltip-element table tr td.key {\\n color: #808080;\\n max-width: 150px;\\n text-align: right;\\n padding-right: 4px;\\n}\\n#vg-tooltip-element table tr td.value {\\n display: block;\\n max-width: 300px;\\n max-height: 7em;\\n text-align: left;\\n}\\n#vg-tooltip-element.dark-theme {\\n background-color: rgba(32, 32, 32, 0.9);\\n border: 1px solid #f5f5f5;\\n color: white;\\n}\\n#vg-tooltip-element.dark-theme td.key {\\n color: #bfbfbf;\\n}\\n\";\nvar EL_ID = 'vg-tooltip-element';\nvar DEFAULT_OPTIONS = {\n /**\n * X offset.\n */\n offsetX: 10,\n /**\n * Y offset.\n */\n offsetY: 10,\n /**\n * ID of the tooltip element.\n */\n id: EL_ID,\n /**\n * ID of the tooltip CSS style.\n */\n styleId: 'vega-tooltip-style',\n /**\n * The name of the theme. You can use the CSS class called [THEME]-theme to style the tooltips.\n *\n * There are two predefined themes: \"light\" (default) and \"dark\".\n */\n theme: 'light',\n /**\n * Do not use the default styles provided by Vega Tooltip. If you enable this option, you need to use your own styles. It is not necessary to disable the default style when using a custom theme.\n */\n disableDefaultStyle: false,\n /**\n * HTML sanitizer function that removes dangerous HTML to prevent XSS.\n *\n * This should be a function from string to string. You may replace it with a formatter such as a markdown formatter.\n */\n sanitize: escapeHTML,\n /**\n * The maximum recursion depth when printing objects in the tooltip.\n */\n maxDepth: 2,\n /**\n * A function to customize the rendered HTML of the tooltip.\n * @param value A value string, or object of value strings keyed by field\n * @param sanitize The `sanitize` function from `options.sanitize`\n * @returns {string} The returned string will become the `innerHTML` of the tooltip element\n */\n formatTooltip: formatValue\n};\n/**\n * Escape special HTML characters.\n *\n * @param value A value to convert to string and HTML-escape.\n */\nfunction escapeHTML(value) {\n return String(value).replace(/&/g, '&').replace(/ window.innerWidth) {\n x = +event.clientX - offsetX - tooltipBox.width;\n }\n var y = event.clientY + offsetY;\n if (y + tooltipBox.height > window.innerHeight) {\n y = +event.clientY - offsetY - tooltipBox.height;\n }\n return {\n x: x,\n y: y\n };\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\n\n/**\n * The tooltip handler class.\n */\nvar Handler = /*#__PURE__*/function () {\n /**\n * The handler function. We bind this to this function in the constructor.\n */\n\n /**\n * Complete tooltip options.\n */\n\n /**\n * The tooltip html element.\n */\n\n /**\n * Create the tooltip handler and initialize the element and style.\n *\n * @param options Tooltip Options\n */\n function Handler(options) {\n _classCallCheck(this, Handler);\n this.options = _objectSpread(_objectSpread({}, DEFAULT_OPTIONS), options);\n var elementId = this.options.id;\n this.el = null;\n\n // bind this to call\n this.call = this.tooltipHandler.bind(this);\n\n // prepend a default stylesheet for tooltips to the head\n if (!this.options.disableDefaultStyle && !document.getElementById(this.options.styleId)) {\n var style = document.createElement('style');\n style.setAttribute('id', this.options.styleId);\n style.innerHTML = createDefaultStyle(elementId);\n var head = document.head;\n if (head.childNodes.length > 0) {\n head.insertBefore(style, head.childNodes[0]);\n } else {\n head.appendChild(style);\n }\n }\n }\n\n /**\n * The tooltip handler function.\n */\n _createClass(Handler, [{\n key: \"tooltipHandler\",\n value: function tooltipHandler(handler, event, item, value) {\n // console.log(handler, event, item, value);\n\n // append a div element that we use as a tooltip unless it already exists\n this.el = document.getElementById(this.options.id);\n if (!this.el) {\n var _document$fullscreenE;\n this.el = document.createElement('div');\n this.el.setAttribute('id', this.options.id);\n this.el.classList.add('vg-tooltip');\n var tooltipContainer = (_document$fullscreenE = document.fullscreenElement) !== null && _document$fullscreenE !== void 0 ? _document$fullscreenE : document.body;\n tooltipContainer.appendChild(this.el);\n }\n\n // hide tooltip for null, undefined, or empty string values\n if (value == null || value === '') {\n this.el.classList.remove('visible', \"\".concat(this.options.theme, \"-theme\"));\n return;\n }\n\n // set the tooltip content\n this.el.innerHTML = this.options.formatTooltip(value, this.options.sanitize, this.options.maxDepth);\n\n // make the tooltip visible\n this.el.classList.add('visible', \"\".concat(this.options.theme, \"-theme\"));\n var _calculatePosition = calculatePosition(event, this.el.getBoundingClientRect(), this.options.offsetX, this.options.offsetY),\n x = _calculatePosition.x,\n y = _calculatePosition.y;\n this.el.style.top = \"\".concat(y, \"px\");\n this.el.style.left = \"\".concat(x, \"px\");\n }\n }]);\n return Handler;\n}();\nvar version = pkg.version;\n\n/**\n * Create a tooltip handler and register it with the provided view.\n *\n * @param view The Vega view.\n * @param opt Tooltip options.\n */\nfunction index(view, opt) {\n var handler = new Handler(opt);\n view.tooltip(handler.call).run();\n return handler;\n}\nexport { DEFAULT_OPTIONS, Handler, calculatePosition, createDefaultStyle, index as default, escapeHTML, formatValue, replacer, stringify, version };","import _asyncToGenerator from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nvar _w$vl;\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport _regeneratorRuntime from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/regenerator/index.js\";\nimport { applyPatch } from 'fast-json-patch';\nimport stringify from 'json-stringify-pretty-compact';\nimport * as vegaImport from 'vega';\nimport { writeConfig, isString, mergeConfig, isBoolean, isObject } from 'vega';\nimport { expressionInterpreter } from 'vega-interpreter';\nimport * as vegaLiteImport from 'vega-lite';\nimport schemaParser from 'vega-schema-url-parser';\nimport * as themes from 'vega-themes';\nimport { Handler } from 'vega-tooltip';\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\nfunction _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\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 return obj;\n}\nfunction getDefaultExportFromCjs(x) {\n return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\nvar iterator;\nvar hasRequiredIterator;\nfunction requireIterator() {\n if (hasRequiredIterator) return iterator;\n hasRequiredIterator = 1;\n iterator = function iterator(Yallist) {\n Yallist.prototype[Symbol.iterator] = /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {\n var walker;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n walker = this.head;\n case 1:\n if (!walker) {\n _context.next = 7;\n break;\n }\n _context.next = 4;\n return walker.value;\n case 4:\n walker = walker.next;\n _context.next = 1;\n break;\n case 7:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n });\n };\n return iterator;\n}\nvar yallist = Yallist$1;\nYallist$1.Node = Node;\nYallist$1.create = Yallist$1;\nfunction Yallist$1(list) {\n var self = this;\n if (!(self instanceof Yallist$1)) {\n self = new Yallist$1();\n }\n self.tail = null;\n self.head = null;\n self.length = 0;\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item);\n });\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i]);\n }\n }\n return self;\n}\nYallist$1.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list');\n }\n var next = node.next;\n var prev = node.prev;\n if (next) {\n next.prev = prev;\n }\n if (prev) {\n prev.next = next;\n }\n if (node === this.head) {\n this.head = next;\n }\n if (node === this.tail) {\n this.tail = prev;\n }\n node.list.length--;\n node.next = null;\n node.prev = null;\n node.list = null;\n return next;\n};\nYallist$1.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return;\n }\n if (node.list) {\n node.list.removeNode(node);\n }\n var head = this.head;\n node.list = this;\n node.next = head;\n if (head) {\n head.prev = node;\n }\n this.head = node;\n if (!this.tail) {\n this.tail = node;\n }\n this.length++;\n};\nYallist$1.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return;\n }\n if (node.list) {\n node.list.removeNode(node);\n }\n var tail = this.tail;\n node.list = this;\n node.prev = tail;\n if (tail) {\n tail.next = node;\n }\n this.tail = node;\n if (!this.head) {\n this.head = node;\n }\n this.length++;\n};\nYallist$1.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i]);\n }\n return this.length;\n};\nYallist$1.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i]);\n }\n return this.length;\n};\nYallist$1.prototype.pop = function () {\n if (!this.tail) {\n return undefined;\n }\n var res = this.tail.value;\n this.tail = this.tail.prev;\n if (this.tail) {\n this.tail.next = null;\n } else {\n this.head = null;\n }\n this.length--;\n return res;\n};\nYallist$1.prototype.shift = function () {\n if (!this.head) {\n return undefined;\n }\n var res = this.head.value;\n this.head = this.head.next;\n if (this.head) {\n this.head.prev = null;\n } else {\n this.tail = null;\n }\n this.length--;\n return res;\n};\nYallist$1.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this;\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this);\n walker = walker.next;\n }\n};\nYallist$1.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this;\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this);\n walker = walker.prev;\n }\n};\nYallist$1.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next;\n }\n if (i === n && walker !== null) {\n return walker.value;\n }\n};\nYallist$1.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev;\n }\n if (i === n && walker !== null) {\n return walker.value;\n }\n};\nYallist$1.prototype.map = function (fn, thisp) {\n thisp = thisp || this;\n var res = new Yallist$1();\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this));\n walker = walker.next;\n }\n return res;\n};\nYallist$1.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this;\n var res = new Yallist$1();\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this));\n walker = walker.prev;\n }\n return res;\n};\nYallist$1.prototype.reduce = function (fn, initial) {\n var acc;\n var walker = this.head;\n if (arguments.length > 1) {\n acc = initial;\n } else if (this.head) {\n walker = this.head.next;\n acc = this.head.value;\n } else {\n throw new TypeError('Reduce of empty list with no initial value');\n }\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i);\n walker = walker.next;\n }\n return acc;\n};\nYallist$1.prototype.reduceReverse = function (fn, initial) {\n var acc;\n var walker = this.tail;\n if (arguments.length > 1) {\n acc = initial;\n } else if (this.tail) {\n walker = this.tail.prev;\n acc = this.tail.value;\n } else {\n throw new TypeError('Reduce of empty list with no initial value');\n }\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i);\n walker = walker.prev;\n }\n return acc;\n};\nYallist$1.prototype.toArray = function () {\n var arr = new Array(this.length);\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value;\n walker = walker.next;\n }\n return arr;\n};\nYallist$1.prototype.toArrayReverse = function () {\n var arr = new Array(this.length);\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value;\n walker = walker.prev;\n }\n return arr;\n};\nYallist$1.prototype.slice = function (from, to) {\n to = to || this.length;\n if (to < 0) {\n to += this.length;\n }\n from = from || 0;\n if (from < 0) {\n from += this.length;\n }\n var ret = new Yallist$1();\n if (to < from || to < 0) {\n return ret;\n }\n if (from < 0) {\n from = 0;\n }\n if (to > this.length) {\n to = this.length;\n }\n for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next;\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value);\n }\n return ret;\n};\nYallist$1.prototype.sliceReverse = function (from, to) {\n to = to || this.length;\n if (to < 0) {\n to += this.length;\n }\n from = from || 0;\n if (from < 0) {\n from += this.length;\n }\n var ret = new Yallist$1();\n if (to < from || to < 0) {\n return ret;\n }\n if (from < 0) {\n from = 0;\n }\n if (to > this.length) {\n to = this.length;\n }\n for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev;\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value);\n }\n return ret;\n};\nYallist$1.prototype.splice = function (start, deleteCount) {\n if (start > this.length) {\n start = this.length - 1;\n }\n if (start < 0) {\n start = this.length + start;\n }\n for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n walker = walker.next;\n }\n var ret = [];\n for (var i = 0; walker && i < deleteCount; i++) {\n ret.push(walker.value);\n walker = this.removeNode(walker);\n }\n if (walker === null) {\n walker = this.tail;\n }\n if (walker !== this.head && walker !== this.tail) {\n walker = walker.prev;\n }\n for (var i = 0; i < (arguments.length <= 2 ? 0 : arguments.length - 2); i++) {\n walker = insert(this, walker, i + 2 < 2 || arguments.length <= i + 2 ? undefined : arguments[i + 2]);\n }\n return ret;\n};\nYallist$1.prototype.reverse = function () {\n var head = this.head;\n var tail = this.tail;\n for (var walker = head; walker !== null; walker = walker.prev) {\n var p = walker.prev;\n walker.prev = walker.next;\n walker.next = p;\n }\n this.head = tail;\n this.tail = head;\n return this;\n};\nfunction insert(self, node, value) {\n var inserted = node === self.head ? new Node(value, null, node, self) : new Node(value, node, node.next, self);\n if (inserted.next === null) {\n self.tail = inserted;\n }\n if (inserted.prev === null) {\n self.head = inserted;\n }\n self.length++;\n return inserted;\n}\nfunction push(self, item) {\n self.tail = new Node(item, self.tail, null, self);\n if (!self.head) {\n self.head = self.tail;\n }\n self.length++;\n}\nfunction unshift(self, item) {\n self.head = new Node(item, null, self.head, self);\n if (!self.tail) {\n self.tail = self.head;\n }\n self.length++;\n}\nfunction Node(value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list);\n }\n this.list = list;\n this.value = value;\n if (prev) {\n prev.next = this;\n this.prev = prev;\n } else {\n this.prev = null;\n }\n if (next) {\n next.prev = this;\n this.next = next;\n } else {\n this.next = null;\n }\n}\ntry {\n // add if support for Symbol.iterator is present\n requireIterator()(Yallist$1);\n} catch (er) {}\n\n// A linked list to keep track of recently-used-ness\nvar Yallist = yallist;\nvar MAX = Symbol('max');\nvar LENGTH = Symbol('length');\nvar LENGTH_CALCULATOR = Symbol('lengthCalculator');\nvar ALLOW_STALE = Symbol('allowStale');\nvar MAX_AGE = Symbol('maxAge');\nvar DISPOSE = Symbol('dispose');\nvar NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet');\nvar LRU_LIST = Symbol('lruList');\nvar CACHE = Symbol('cache');\nvar UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet');\nvar naiveLength = function naiveLength() {\n return 1;\n};\n\n// lruList is a yallist where the head is the youngest\n// item, and the tail is the oldest. the list contains the Hit\n// objects as the entries.\n// Each Hit object has a reference to its Yallist.Node. This\n// never changes.\n//\n// cache is a Map (or PseudoMap) that matches the keys to\n// the Yallist.Node object.\nvar LRUCache = /*#__PURE__*/function () {\n function LRUCache(options) {\n _classCallCheck(this, LRUCache);\n if (typeof options === 'number') options = {\n max: options\n };\n if (!options) options = {};\n if (options.max && (typeof options.max !== 'number' || options.max < 0)) throw new TypeError('max must be a non-negative number');\n // Kind of weird to have a default max of Infinity, but oh well.\n this[MAX] = options.max || Infinity;\n var lc = options.length || naiveLength;\n this[LENGTH_CALCULATOR] = typeof lc !== 'function' ? naiveLength : lc;\n this[ALLOW_STALE] = options.stale || false;\n if (options.maxAge && typeof options.maxAge !== 'number') throw new TypeError('maxAge must be a number');\n this[MAX_AGE] = options.maxAge || 0;\n this[DISPOSE] = options.dispose;\n this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false;\n this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false;\n this.reset();\n }\n\n // resize the cache when the max changes.\n _createClass(LRUCache, [{\n key: \"max\",\n get: function get() {\n return this[MAX];\n },\n set: function set(mL) {\n if (typeof mL !== 'number' || mL < 0) throw new TypeError('max must be a non-negative number');\n this[MAX] = mL || Infinity;\n trim(this);\n }\n }, {\n key: \"allowStale\",\n get: function get() {\n return this[ALLOW_STALE];\n },\n set: function set(allowStale) {\n this[ALLOW_STALE] = !!allowStale;\n }\n }, {\n key: \"maxAge\",\n get: function get() {\n return this[MAX_AGE];\n }\n\n // resize the cache when the lengthCalculator changes.\n ,\n set: function set(mA) {\n if (typeof mA !== 'number') throw new TypeError('maxAge must be a non-negative number');\n this[MAX_AGE] = mA;\n trim(this);\n }\n }, {\n key: \"lengthCalculator\",\n get: function get() {\n return this[LENGTH_CALCULATOR];\n },\n set: function set(lC) {\n var _this = this;\n if (typeof lC !== 'function') lC = naiveLength;\n if (lC !== this[LENGTH_CALCULATOR]) {\n this[LENGTH_CALCULATOR] = lC;\n this[LENGTH] = 0;\n this[LRU_LIST].forEach(function (hit) {\n hit.length = _this[LENGTH_CALCULATOR](hit.value, hit.key);\n _this[LENGTH] += hit.length;\n });\n }\n trim(this);\n }\n }, {\n key: \"length\",\n get: function get() {\n return this[LENGTH];\n }\n }, {\n key: \"itemCount\",\n get: function get() {\n return this[LRU_LIST].length;\n }\n }, {\n key: \"rforEach\",\n value: function rforEach(fn, thisp) {\n thisp = thisp || this;\n for (var walker = this[LRU_LIST].tail; walker !== null;) {\n var prev = walker.prev;\n forEachStep(this, fn, walker, thisp);\n walker = prev;\n }\n }\n }, {\n key: \"forEach\",\n value: function forEach(fn, thisp) {\n thisp = thisp || this;\n for (var walker = this[LRU_LIST].head; walker !== null;) {\n var next = walker.next;\n forEachStep(this, fn, walker, thisp);\n walker = next;\n }\n }\n }, {\n key: \"keys\",\n value: function keys() {\n return this[LRU_LIST].toArray().map(function (k) {\n return k.key;\n });\n }\n }, {\n key: \"values\",\n value: function values() {\n return this[LRU_LIST].toArray().map(function (k) {\n return k.value;\n });\n }\n }, {\n key: \"reset\",\n value: function reset() {\n var _this2 = this;\n if (this[DISPOSE] && this[LRU_LIST] && this[LRU_LIST].length) {\n this[LRU_LIST].forEach(function (hit) {\n return _this2[DISPOSE](hit.key, hit.value);\n });\n }\n this[CACHE] = new Map(); // hash of items by key\n this[LRU_LIST] = new Yallist(); // list of items in order of use recency\n this[LENGTH] = 0; // length of items in the list\n }\n }, {\n key: \"dump\",\n value: function dump() {\n var _this3 = this;\n return this[LRU_LIST].map(function (hit) {\n return isStale(_this3, hit) ? false : {\n k: hit.key,\n v: hit.value,\n e: hit.now + (hit.maxAge || 0)\n };\n }).toArray().filter(function (h) {\n return h;\n });\n }\n }, {\n key: \"dumpLru\",\n value: function dumpLru() {\n return this[LRU_LIST];\n }\n }, {\n key: \"set\",\n value: function set(key, value, maxAge) {\n maxAge = maxAge || this[MAX_AGE];\n if (maxAge && typeof maxAge !== 'number') throw new TypeError('maxAge must be a number');\n var now = maxAge ? Date.now() : 0;\n var len = this[LENGTH_CALCULATOR](value, key);\n if (this[CACHE].has(key)) {\n if (len > this[MAX]) {\n _del(this, this[CACHE].get(key));\n return false;\n }\n var node = this[CACHE].get(key);\n var item = node.value;\n\n // dispose of the old one before overwriting\n // split out into 2 ifs for better coverage tracking\n if (this[DISPOSE]) {\n if (!this[NO_DISPOSE_ON_SET]) this[DISPOSE](key, item.value);\n }\n item.now = now;\n item.maxAge = maxAge;\n item.value = value;\n this[LENGTH] += len - item.length;\n item.length = len;\n this.get(key);\n trim(this);\n return true;\n }\n var hit = new Entry(key, value, len, now, maxAge);\n\n // oversized objects fall out of cache automatically.\n if (hit.length > this[MAX]) {\n if (this[DISPOSE]) this[DISPOSE](key, value);\n return false;\n }\n this[LENGTH] += hit.length;\n this[LRU_LIST].unshift(hit);\n this[CACHE].set(key, this[LRU_LIST].head);\n trim(this);\n return true;\n }\n }, {\n key: \"has\",\n value: function has(key) {\n if (!this[CACHE].has(key)) return false;\n var hit = this[CACHE].get(key).value;\n return !isStale(this, hit);\n }\n }, {\n key: \"get\",\n value: function get(key) {\n return _get(this, key, true);\n }\n }, {\n key: \"peek\",\n value: function peek(key) {\n return _get(this, key, false);\n }\n }, {\n key: \"pop\",\n value: function pop() {\n var node = this[LRU_LIST].tail;\n if (!node) return null;\n _del(this, node);\n return node.value;\n }\n }, {\n key: \"del\",\n value: function del(key) {\n _del(this, this[CACHE].get(key));\n }\n }, {\n key: \"load\",\n value: function load(arr) {\n // reset the cache\n this.reset();\n var now = Date.now();\n // A previous serialized cache has the most recent items first\n for (var l = arr.length - 1; l >= 0; l--) {\n var hit = arr[l];\n var expiresAt = hit.e || 0;\n if (expiresAt === 0)\n // the item was created without expiration in a non aged cache\n this.set(hit.k, hit.v);else {\n var maxAge = expiresAt - now;\n // dont add already expired items\n if (maxAge > 0) {\n this.set(hit.k, hit.v, maxAge);\n }\n }\n }\n }\n }, {\n key: \"prune\",\n value: function prune() {\n var _this4 = this;\n this[CACHE].forEach(function (value, key) {\n return _get(_this4, key, false);\n });\n }\n }]);\n return LRUCache;\n}();\nvar _get = function _get(self, key, doUse) {\n var node = self[CACHE].get(key);\n if (node) {\n var hit = node.value;\n if (isStale(self, hit)) {\n _del(self, node);\n if (!self[ALLOW_STALE]) return undefined;\n } else {\n if (doUse) {\n if (self[UPDATE_AGE_ON_GET]) node.value.now = Date.now();\n self[LRU_LIST].unshiftNode(node);\n }\n }\n return hit.value;\n }\n};\nvar isStale = function isStale(self, hit) {\n if (!hit || !hit.maxAge && !self[MAX_AGE]) return false;\n var diff = Date.now() - hit.now;\n return hit.maxAge ? diff > hit.maxAge : self[MAX_AGE] && diff > self[MAX_AGE];\n};\nvar trim = function trim(self) {\n if (self[LENGTH] > self[MAX]) {\n for (var walker = self[LRU_LIST].tail; self[LENGTH] > self[MAX] && walker !== null;) {\n // We know that we're about to delete this one, and also\n // what the next least recently used key will be, so just\n // go ahead and set it now.\n var prev = walker.prev;\n _del(self, walker);\n walker = prev;\n }\n }\n};\nvar _del = function _del(self, node) {\n if (node) {\n var hit = node.value;\n if (self[DISPOSE]) self[DISPOSE](hit.key, hit.value);\n self[LENGTH] -= hit.length;\n self[CACHE].delete(hit.key);\n self[LRU_LIST].removeNode(node);\n }\n};\nvar Entry = /*#__PURE__*/_createClass(function Entry(key, value, length, now, maxAge) {\n _classCallCheck(this, Entry);\n this.key = key;\n this.value = value;\n this.length = length;\n this.now = now;\n this.maxAge = maxAge || 0;\n});\nvar forEachStep = function forEachStep(self, fn, node, thisp) {\n var hit = node.value;\n if (isStale(self, hit)) {\n _del(self, node);\n if (!self[ALLOW_STALE]) hit = undefined;\n }\n if (hit) fn.call(thisp, hit.value, hit.key, self);\n};\nvar lruCache = LRUCache;\n\n// parse out just the options we care about\nvar looseOption = Object.freeze({\n loose: true\n});\nvar emptyOpts = Object.freeze({});\nvar parseOptions$1 = function parseOptions$1(options) {\n if (!options) {\n return emptyOpts;\n }\n if (typeof options !== 'object') {\n return looseOption;\n }\n return options;\n};\nvar parseOptions_1 = parseOptions$1;\nvar re$1 = {\n exports: {}\n};\n\n// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nvar SEMVER_SPEC_VERSION = '2.0.0';\nvar MAX_LENGTH$1 = 256;\nvar MAX_SAFE_INTEGER$1 = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */9007199254740991;\n\n// Max safe segment length for coercion.\nvar MAX_SAFE_COMPONENT_LENGTH = 16;\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nvar MAX_SAFE_BUILD_LENGTH = MAX_LENGTH$1 - 6;\nvar RELEASE_TYPES = ['major', 'premajor', 'minor', 'preminor', 'patch', 'prepatch', 'prerelease'];\nvar constants = {\n MAX_LENGTH: MAX_LENGTH$1,\n MAX_SAFE_COMPONENT_LENGTH: MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH: MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER: MAX_SAFE_INTEGER$1,\n RELEASE_TYPES: RELEASE_TYPES,\n SEMVER_SPEC_VERSION: SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 1,\n FLAG_LOOSE: 2\n};\nvar debug$1 = typeof process === 'object' && process.env && process.env.NODE_DEBUG && /\\bsemver\\b/i.test(process.env.NODE_DEBUG) ? function () {\n var _console;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return (_console = console).error.apply(_console, ['SEMVER'].concat(args));\n} : function () {};\nvar debug_1 = debug$1;\n(function (module, exports) {\n var MAX_SAFE_COMPONENT_LENGTH = constants.MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH = constants.MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH = constants.MAX_LENGTH;\n var debug = debug_1;\n exports = module.exports = {};\n\n // The actual regexps go on exports.re\n var re = exports.re = [];\n var safeRe = exports.safeRe = [];\n var src = exports.src = [];\n var t = exports.t = {};\n var R = 0;\n var LETTERDASHNUMBER = '[a-zA-Z0-9-]';\n\n // Replace some greedy regex tokens to prevent regex dos issues. These regex are\n // used internally via the safeRe object since all inputs in this library get\n // normalized first to trim and collapse all extra whitespace. The original\n // regexes are exported for userland consumption and lower level usage. A\n // future breaking change could export the safer regex only with a note that\n // all input should have extra whitespace removed.\n var safeRegexReplacements = [['\\\\s', 1], ['\\\\d', MAX_LENGTH], [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH]];\n var makeSafeRegex = function makeSafeRegex(value) {\n for (var _i = 0, _safeRegexReplacement = safeRegexReplacements; _i < _safeRegexReplacement.length; _i++) {\n var _safeRegexReplacement2 = _slicedToArray(_safeRegexReplacement[_i], 2),\n token = _safeRegexReplacement2[0],\n max = _safeRegexReplacement2[1];\n value = value.split(\"\".concat(token, \"*\")).join(\"\".concat(token, \"{0,\").concat(max, \"}\")).split(\"\".concat(token, \"+\")).join(\"\".concat(token, \"{1,\").concat(max, \"}\"));\n }\n return value;\n };\n var createToken = function createToken(name, value, isGlobal) {\n var safe = makeSafeRegex(value);\n var index = R++;\n debug(name, index, value);\n t[name] = index;\n src[index] = value;\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined);\n safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined);\n };\n\n // The following Regular Expressions can be used for tokenizing,\n // validating, and parsing SemVer version strings.\n\n // ## Numeric Identifier\n // A single `0`, or a non-zero digit followed by zero or more digits.\n\n createToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*');\n createToken('NUMERICIDENTIFIERLOOSE', '\\\\d+');\n\n // ## Non-numeric Identifier\n // Zero or more digits, followed by a letter or hyphen, and then zero or\n // more letters, digits, or hyphens.\n\n createToken('NONNUMERICIDENTIFIER', \"\\\\d*[a-zA-Z-]\".concat(LETTERDASHNUMBER, \"*\"));\n\n // ## Main Version\n // Three dot-separated numeric identifiers.\n\n createToken('MAINVERSION', \"(\".concat(src[t.NUMERICIDENTIFIER], \")\\\\.\") + \"(\".concat(src[t.NUMERICIDENTIFIER], \")\\\\.\") + \"(\".concat(src[t.NUMERICIDENTIFIER], \")\"));\n createToken('MAINVERSIONLOOSE', \"(\".concat(src[t.NUMERICIDENTIFIERLOOSE], \")\\\\.\") + \"(\".concat(src[t.NUMERICIDENTIFIERLOOSE], \")\\\\.\") + \"(\".concat(src[t.NUMERICIDENTIFIERLOOSE], \")\"));\n\n // ## Pre-release Version Identifier\n // A numeric identifier, or a non-numeric identifier.\n\n createToken('PRERELEASEIDENTIFIER', \"(?:\".concat(src[t.NUMERICIDENTIFIER], \"|\").concat(src[t.NONNUMERICIDENTIFIER], \")\"));\n createToken('PRERELEASEIDENTIFIERLOOSE', \"(?:\".concat(src[t.NUMERICIDENTIFIERLOOSE], \"|\").concat(src[t.NONNUMERICIDENTIFIER], \")\"));\n\n // ## Pre-release Version\n // Hyphen, followed by one or more dot-separated pre-release version\n // identifiers.\n\n createToken('PRERELEASE', \"(?:-(\".concat(src[t.PRERELEASEIDENTIFIER], \"(?:\\\\.\").concat(src[t.PRERELEASEIDENTIFIER], \")*))\"));\n createToken('PRERELEASELOOSE', \"(?:-?(\".concat(src[t.PRERELEASEIDENTIFIERLOOSE], \"(?:\\\\.\").concat(src[t.PRERELEASEIDENTIFIERLOOSE], \")*))\"));\n\n // ## Build Metadata Identifier\n // Any combination of digits, letters, or hyphens.\n\n createToken('BUILDIDENTIFIER', \"\".concat(LETTERDASHNUMBER, \"+\"));\n\n // ## Build Metadata\n // Plus sign, followed by one or more period-separated build metadata\n // identifiers.\n\n createToken('BUILD', \"(?:\\\\+(\".concat(src[t.BUILDIDENTIFIER], \"(?:\\\\.\").concat(src[t.BUILDIDENTIFIER], \")*))\"));\n\n // ## Full Version String\n // A main version, followed optionally by a pre-release version and\n // build metadata.\n\n // Note that the only major, minor, patch, and pre-release sections of\n // the version string are capturing groups. The build metadata is not a\n // capturing group, because it should not ever be used in version\n // comparison.\n\n createToken('FULLPLAIN', \"v?\".concat(src[t.MAINVERSION]).concat(src[t.PRERELEASE], \"?\").concat(src[t.BUILD], \"?\"));\n createToken('FULL', \"^\".concat(src[t.FULLPLAIN], \"$\"));\n\n // like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n // also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n // common in the npm registry.\n createToken('LOOSEPLAIN', \"[v=\\\\s]*\".concat(src[t.MAINVERSIONLOOSE]).concat(src[t.PRERELEASELOOSE], \"?\").concat(src[t.BUILD], \"?\"));\n createToken('LOOSE', \"^\".concat(src[t.LOOSEPLAIN], \"$\"));\n createToken('GTLT', '((?:<|>)?=?)');\n\n // Something like \"2.*\" or \"1.2.x\".\n // Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n // Only the first item is strictly required.\n createToken('XRANGEIDENTIFIERLOOSE', \"\".concat(src[t.NUMERICIDENTIFIERLOOSE], \"|x|X|\\\\*\"));\n createToken('XRANGEIDENTIFIER', \"\".concat(src[t.NUMERICIDENTIFIER], \"|x|X|\\\\*\"));\n createToken('XRANGEPLAIN', \"[v=\\\\s]*(\".concat(src[t.XRANGEIDENTIFIER], \")\") + \"(?:\\\\.(\".concat(src[t.XRANGEIDENTIFIER], \")\") + \"(?:\\\\.(\".concat(src[t.XRANGEIDENTIFIER], \")\") + \"(?:\".concat(src[t.PRERELEASE], \")?\").concat(src[t.BUILD], \"?\") + \")?)?\");\n createToken('XRANGEPLAINLOOSE', \"[v=\\\\s]*(\".concat(src[t.XRANGEIDENTIFIERLOOSE], \")\") + \"(?:\\\\.(\".concat(src[t.XRANGEIDENTIFIERLOOSE], \")\") + \"(?:\\\\.(\".concat(src[t.XRANGEIDENTIFIERLOOSE], \")\") + \"(?:\".concat(src[t.PRERELEASELOOSE], \")?\").concat(src[t.BUILD], \"?\") + \")?)?\");\n createToken('XRANGE', \"^\".concat(src[t.GTLT], \"\\\\s*\").concat(src[t.XRANGEPLAIN], \"$\"));\n createToken('XRANGELOOSE', \"^\".concat(src[t.GTLT], \"\\\\s*\").concat(src[t.XRANGEPLAINLOOSE], \"$\"));\n\n // Coercion.\n // Extract anything that could conceivably be a part of a valid semver\n createToken('COERCE', \"\".concat('(^|[^\\\\d])' + '(\\\\d{1,').concat(MAX_SAFE_COMPONENT_LENGTH, \"})\") + \"(?:\\\\.(\\\\d{1,\".concat(MAX_SAFE_COMPONENT_LENGTH, \"}))?\") + \"(?:\\\\.(\\\\d{1,\".concat(MAX_SAFE_COMPONENT_LENGTH, \"}))?\") + \"(?:$|[^\\\\d])\");\n createToken('COERCERTL', src[t.COERCE], true);\n\n // Tilde ranges.\n // Meaning is \"reasonably at or greater than\"\n createToken('LONETILDE', '(?:~>?)');\n createToken('TILDETRIM', \"(\\\\s*)\".concat(src[t.LONETILDE], \"\\\\s+\"), true);\n exports.tildeTrimReplace = '$1~';\n createToken('TILDE', \"^\".concat(src[t.LONETILDE]).concat(src[t.XRANGEPLAIN], \"$\"));\n createToken('TILDELOOSE', \"^\".concat(src[t.LONETILDE]).concat(src[t.XRANGEPLAINLOOSE], \"$\"));\n\n // Caret ranges.\n // Meaning is \"at least and backwards compatible with\"\n createToken('LONECARET', '(?:\\\\^)');\n createToken('CARETTRIM', \"(\\\\s*)\".concat(src[t.LONECARET], \"\\\\s+\"), true);\n exports.caretTrimReplace = '$1^';\n createToken('CARET', \"^\".concat(src[t.LONECARET]).concat(src[t.XRANGEPLAIN], \"$\"));\n createToken('CARETLOOSE', \"^\".concat(src[t.LONECARET]).concat(src[t.XRANGEPLAINLOOSE], \"$\"));\n\n // A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\n createToken('COMPARATORLOOSE', \"^\".concat(src[t.GTLT], \"\\\\s*(\").concat(src[t.LOOSEPLAIN], \")$|^$\"));\n createToken('COMPARATOR', \"^\".concat(src[t.GTLT], \"\\\\s*(\").concat(src[t.FULLPLAIN], \")$|^$\"));\n\n // An expression to strip any whitespace between the gtlt and the thing\n // it modifies, so that `> 1.2.3` ==> `>1.2.3`\n createToken('COMPARATORTRIM', \"(\\\\s*)\".concat(src[t.GTLT], \"\\\\s*(\").concat(src[t.LOOSEPLAIN], \"|\").concat(src[t.XRANGEPLAIN], \")\"), true);\n exports.comparatorTrimReplace = '$1$2$3';\n\n // Something like `1.2.3 - 1.2.4`\n // Note that these all use the loose form, because they'll be\n // checked against either the strict or loose comparator form\n // later.\n createToken('HYPHENRANGE', \"^\\\\s*(\".concat(src[t.XRANGEPLAIN], \")\") + \"\\\\s+-\\\\s+\" + \"(\".concat(src[t.XRANGEPLAIN], \")\") + \"\\\\s*$\");\n createToken('HYPHENRANGELOOSE', \"^\\\\s*(\".concat(src[t.XRANGEPLAINLOOSE], \")\") + \"\\\\s+-\\\\s+\" + \"(\".concat(src[t.XRANGEPLAINLOOSE], \")\") + \"\\\\s*$\");\n\n // Star ranges basically just allow anything at all.\n createToken('STAR', '(<|>)?=?\\\\s*\\\\*');\n // >=0.0.0 is like a star\n createToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$');\n createToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$');\n})(re$1, re$1.exports);\nvar reExports = re$1.exports;\nvar numeric = /^[0-9]+$/;\nvar compareIdentifiers$1 = function compareIdentifiers$1(a, b) {\n var anum = numeric.test(a);\n var bnum = numeric.test(b);\n if (anum && bnum) {\n a = +a;\n b = +b;\n }\n return a === b ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a < b ? -1 : 1;\n};\nvar rcompareIdentifiers = function rcompareIdentifiers(a, b) {\n return compareIdentifiers$1(b, a);\n};\nvar identifiers = {\n compareIdentifiers: compareIdentifiers$1,\n rcompareIdentifiers: rcompareIdentifiers\n};\nvar debug = debug_1;\nvar MAX_LENGTH = constants.MAX_LENGTH,\n MAX_SAFE_INTEGER = constants.MAX_SAFE_INTEGER;\nvar re = reExports.safeRe,\n t = reExports.t;\nvar parseOptions = parseOptions_1;\nvar compareIdentifiers = identifiers.compareIdentifiers;\nvar SemVer$1 = /*#__PURE__*/function () {\n function SemVer(version, options) {\n _classCallCheck(this, SemVer);\n options = parseOptions(options);\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose && version.includePrerelease === !!options.includePrerelease) {\n return version;\n } else {\n version = version.version;\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(\"Invalid version. Must be a string. Got type \\\"\".concat(typeof version, \"\\\".\"));\n }\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\"version is longer than \".concat(MAX_LENGTH, \" characters\"));\n }\n debug('SemVer', version, options);\n this.options = options;\n this.loose = !!options.loose;\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease;\n var m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]);\n if (!m) {\n throw new TypeError(\"Invalid Version: \".concat(version));\n }\n this.raw = version;\n\n // these are actually numbers\n this.major = +m[1];\n this.minor = +m[2];\n this.patch = +m[3];\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version');\n }\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version');\n }\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version');\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = [];\n } else {\n this.prerelease = m[4].split('.').map(function (id) {\n if (/^[0-9]+$/.test(id)) {\n var num = +id;\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num;\n }\n }\n return id;\n });\n }\n this.build = m[5] ? m[5].split('.') : [];\n this.format();\n }\n _createClass(SemVer, [{\n key: \"format\",\n value: function format() {\n this.version = \"\".concat(this.major, \".\").concat(this.minor, \".\").concat(this.patch);\n if (this.prerelease.length) {\n this.version += \"-\".concat(this.prerelease.join('.'));\n }\n return this.version;\n }\n }, {\n key: \"toString\",\n value: function toString() {\n return this.version;\n }\n }, {\n key: \"compare\",\n value: function compare(other) {\n debug('SemVer.compare', this.version, this.options, other);\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0;\n }\n other = new SemVer(other, this.options);\n }\n if (other.version === this.version) {\n return 0;\n }\n return this.compareMain(other) || this.comparePre(other);\n }\n }, {\n key: \"compareMain\",\n value: function compareMain(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch);\n }\n }, {\n key: \"comparePre\",\n value: function comparePre(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1;\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1;\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0;\n }\n var i = 0;\n do {\n var a = this.prerelease[i];\n var b = other.prerelease[i];\n debug('prerelease compare', i, a, b);\n if (a === undefined && b === undefined) {\n return 0;\n } else if (b === undefined) {\n return 1;\n } else if (a === undefined) {\n return -1;\n } else if (a === b) {\n continue;\n } else {\n return compareIdentifiers(a, b);\n }\n } while (++i);\n }\n }, {\n key: \"compareBuild\",\n value: function compareBuild(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n var i = 0;\n do {\n var a = this.build[i];\n var b = other.build[i];\n debug('prerelease compare', i, a, b);\n if (a === undefined && b === undefined) {\n return 0;\n } else if (b === undefined) {\n return 1;\n } else if (a === undefined) {\n return -1;\n } else if (a === b) {\n continue;\n } else {\n return compareIdentifiers(a, b);\n }\n } while (++i);\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n }, {\n key: \"inc\",\n value: function inc(release, identifier, identifierBase) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor = 0;\n this.major++;\n this.inc('pre', identifier, identifierBase);\n break;\n case 'preminor':\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor++;\n this.inc('pre', identifier, identifierBase);\n break;\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0;\n this.inc('patch', identifier, identifierBase);\n this.inc('pre', identifier, identifierBase);\n break;\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier, identifierBase);\n }\n this.inc('pre', identifier, identifierBase);\n break;\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {\n this.major++;\n }\n this.minor = 0;\n this.patch = 0;\n this.prerelease = [];\n break;\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++;\n }\n this.patch = 0;\n this.prerelease = [];\n break;\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++;\n }\n this.prerelease = [];\n break;\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre':\n {\n var base = Number(identifierBase) ? 1 : 0;\n if (!identifier && identifierBase === false) {\n throw new Error('invalid increment argument: identifier is empty');\n }\n if (this.prerelease.length === 0) {\n this.prerelease = [base];\n } else {\n var i = this.prerelease.length;\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++;\n i = -2;\n }\n }\n if (i === -1) {\n // didn't increment anything\n if (identifier === this.prerelease.join('.') && identifierBase === false) {\n throw new Error('invalid increment argument: identifier already exists');\n }\n this.prerelease.push(base);\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n var prerelease = [identifier, base];\n if (identifierBase === false) {\n prerelease = [identifier];\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease;\n }\n } else {\n this.prerelease = prerelease;\n }\n }\n break;\n }\n default:\n throw new Error(\"invalid increment argument: \".concat(release));\n }\n this.raw = this.format();\n if (this.build.length) {\n this.raw += \"+\".concat(this.build.join('.'));\n }\n return this;\n }\n }]);\n return SemVer;\n}();\nvar semver = SemVer$1;\nvar SemVer = semver;\nvar compare$6 = function compare$6(a, b, loose) {\n return new SemVer(a, loose).compare(new SemVer(b, loose));\n};\nvar compare_1 = compare$6;\nvar compare$5 = compare_1;\nvar eq$1 = function eq$1(a, b, loose) {\n return compare$5(a, b, loose) === 0;\n};\nvar eq_1 = eq$1;\nvar compare$4 = compare_1;\nvar neq$1 = function neq$1(a, b, loose) {\n return compare$4(a, b, loose) !== 0;\n};\nvar neq_1 = neq$1;\nvar compare$3 = compare_1;\nvar gt$1 = function gt$1(a, b, loose) {\n return compare$3(a, b, loose) > 0;\n};\nvar gt_1 = gt$1;\nvar compare$2 = compare_1;\nvar gte$1 = function gte$1(a, b, loose) {\n return compare$2(a, b, loose) >= 0;\n};\nvar gte_1 = gte$1;\nvar compare$1 = compare_1;\nvar lt$1 = function lt$1(a, b, loose) {\n return compare$1(a, b, loose) < 0;\n};\nvar lt_1 = lt$1;\nvar compare = compare_1;\nvar lte$1 = function lte$1(a, b, loose) {\n return compare(a, b, loose) <= 0;\n};\nvar lte_1 = lte$1;\nvar eq = eq_1;\nvar neq = neq_1;\nvar gt = gt_1;\nvar gte = gte_1;\nvar lt = lt_1;\nvar lte = lte_1;\nvar cmp = function cmp(a, op, b, loose) {\n switch (op) {\n case '===':\n if (typeof a === 'object') {\n a = a.version;\n }\n if (typeof b === 'object') {\n b = b.version;\n }\n return a === b;\n case '!==':\n if (typeof a === 'object') {\n a = a.version;\n }\n if (typeof b === 'object') {\n b = b.version;\n }\n return a !== b;\n case '':\n case '=':\n case '==':\n return eq(a, b, loose);\n case '!=':\n return neq(a, b, loose);\n case '>':\n return gt(a, b, loose);\n case '>=':\n return gte(a, b, loose);\n case '<':\n return lt(a, b, loose);\n case '<=':\n return lte(a, b, loose);\n default:\n throw new TypeError(\"Invalid operator: \".concat(op));\n }\n};\nvar cmp_1 = cmp;\nvar comparator;\nvar hasRequiredComparator;\nfunction requireComparator() {\n if (hasRequiredComparator) return comparator;\n hasRequiredComparator = 1;\n var ANY = Symbol('SemVer ANY');\n // hoisted class for cyclic dependency\n var Comparator = /*#__PURE__*/function () {\n function Comparator(comp, options) {\n _classCallCheck(this, Comparator);\n options = parseOptions(options);\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp;\n } else {\n comp = comp.value;\n }\n }\n comp = comp.trim().split(/\\s+/).join(' ');\n debug('comparator', comp, options);\n this.options = options;\n this.loose = !!options.loose;\n this.parse(comp);\n if (this.semver === ANY) {\n this.value = '';\n } else {\n this.value = this.operator + this.semver.version;\n }\n debug('comp', this);\n }\n _createClass(Comparator, [{\n key: \"parse\",\n value: function parse(comp) {\n var r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR];\n var m = comp.match(r);\n if (!m) {\n throw new TypeError(\"Invalid comparator: \".concat(comp));\n }\n this.operator = m[1] !== undefined ? m[1] : '';\n if (this.operator === '=') {\n this.operator = '';\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY;\n } else {\n this.semver = new SemVer(m[2], this.options.loose);\n }\n }\n }, {\n key: \"toString\",\n value: function toString() {\n return this.value;\n }\n }, {\n key: \"test\",\n value: function test(version) {\n debug('Comparator.test', version, this.options.loose);\n if (this.semver === ANY || version === ANY) {\n return true;\n }\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options);\n } catch (er) {\n return false;\n }\n }\n return cmp(version, this.operator, this.semver, this.options);\n }\n }, {\n key: \"intersects\",\n value: function intersects(comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required');\n }\n if (this.operator === '') {\n if (this.value === '') {\n return true;\n }\n return new Range(comp.value, options).test(this.value);\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true;\n }\n return new Range(this.value, options).test(comp.semver);\n }\n options = parseOptions(options);\n\n // Special cases where nothing can possibly be lower\n if (options.includePrerelease && (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n return false;\n }\n if (!options.includePrerelease && (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n return false;\n }\n\n // Same direction increasing (> or >=)\n if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n return true;\n }\n // Same direction decreasing (< or <=)\n if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n return true;\n }\n // same SemVer and both sides are inclusive (<= or >=)\n if (this.semver.version === comp.semver.version && this.operator.includes('=') && comp.operator.includes('=')) {\n return true;\n }\n // opposite directions less than\n if (cmp(this.semver, '<', comp.semver, options) && this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n return true;\n }\n // opposite directions greater than\n if (cmp(this.semver, '>', comp.semver, options) && this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n return true;\n }\n return false;\n }\n }], [{\n key: \"ANY\",\n get: function get() {\n return ANY;\n }\n }]);\n return Comparator;\n }();\n comparator = Comparator;\n var parseOptions = parseOptions_1;\n var re = reExports.safeRe,\n t = reExports.t;\n var cmp = cmp_1;\n var debug = debug_1;\n var SemVer = semver;\n var Range = requireRange();\n return comparator;\n}\nvar range;\nvar hasRequiredRange;\nfunction requireRange() {\n if (hasRequiredRange) return range;\n hasRequiredRange = 1;\n // hoisted class for cyclic dependency\n var Range = /*#__PURE__*/function () {\n function Range(range, options) {\n var _this5 = this;\n _classCallCheck(this, Range);\n options = parseOptions(options);\n if (range instanceof Range) {\n if (range.loose === !!options.loose && range.includePrerelease === !!options.includePrerelease) {\n return range;\n } else {\n return new Range(range.raw, options);\n }\n }\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value;\n this.set = [[range]];\n this.format();\n return this;\n }\n this.options = options;\n this.loose = !!options.loose;\n this.includePrerelease = !!options.includePrerelease;\n\n // First reduce all whitespace as much as possible so we do not have to rely\n // on potentially slow regexes like \\s*. This is then stored and used for\n // future error messages as well.\n this.raw = range.trim().split(/\\s+/).join(' ');\n\n // First, split on ||\n this.set = this.raw.split('||')\n // map the range to a 2d array of comparators\n .map(function (r) {\n return _this5.parseRange(r.trim());\n })\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(function (c) {\n return c.length;\n });\n if (!this.set.length) {\n throw new TypeError(\"Invalid SemVer Range: \".concat(this.raw));\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n var first = this.set[0];\n this.set = this.set.filter(function (c) {\n return !isNullSet(c[0]);\n });\n if (this.set.length === 0) {\n this.set = [first];\n } else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n var _iterator = _createForOfIteratorHelper(this.set),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var c = _step.value;\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c];\n break;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n }\n this.format();\n }\n _createClass(Range, [{\n key: \"format\",\n value: function format() {\n this.range = this.set.map(function (comps) {\n return comps.join(' ').trim();\n }).join('||').trim();\n return this.range;\n }\n }, {\n key: \"toString\",\n value: function toString() {\n return this.range;\n }\n }, {\n key: \"parseRange\",\n value: function parseRange(range) {\n var _this6 = this;\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n var memoOpts = (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) | (this.options.loose && FLAG_LOOSE);\n var memoKey = memoOpts + ':' + range;\n var cached = cache.get(memoKey);\n if (cached) {\n return cached;\n }\n var loose = this.options.loose;\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n var hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE];\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease));\n debug('hyphen replace', range);\n\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace);\n debug('comparator trim', range);\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace);\n debug('tilde trim', range);\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace);\n debug('caret trim', range);\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n var rangeList = range.split(' ').map(function (comp) {\n return parseComparator(comp, _this6.options);\n }).join(' ').split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(function (comp) {\n return replaceGTE0(comp, _this6.options);\n });\n if (loose) {\n // in loose mode, throw out any that are not valid comparators\n rangeList = rangeList.filter(function (comp) {\n debug('loose invalid filter', comp, _this6.options);\n return !!comp.match(re[t.COMPARATORLOOSE]);\n });\n }\n debug('range list', rangeList);\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n var rangeMap = new Map();\n var comparators = rangeList.map(function (comp) {\n return new Comparator(comp, _this6.options);\n });\n var _iterator2 = _createForOfIteratorHelper(comparators),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var comp = _step2.value;\n if (isNullSet(comp)) {\n return [comp];\n }\n rangeMap.set(comp.value, comp);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n if (rangeMap.size > 1 && rangeMap.has('')) {\n rangeMap.delete('');\n }\n var result = _toConsumableArray(rangeMap.values());\n cache.set(memoKey, result);\n return result;\n }\n }, {\n key: \"intersects\",\n value: function intersects(range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required');\n }\n return this.set.some(function (thisComparators) {\n return isSatisfiable(thisComparators, options) && range.set.some(function (rangeComparators) {\n return isSatisfiable(rangeComparators, options) && thisComparators.every(function (thisComparator) {\n return rangeComparators.every(function (rangeComparator) {\n return thisComparator.intersects(rangeComparator, options);\n });\n });\n });\n });\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n }, {\n key: \"test\",\n value: function test(version) {\n if (!version) {\n return false;\n }\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options);\n } catch (er) {\n return false;\n }\n }\n for (var i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true;\n }\n }\n return false;\n }\n }]);\n return Range;\n }();\n range = Range;\n var LRU = lruCache;\n var cache = new LRU({\n max: 1000\n });\n var parseOptions = parseOptions_1;\n var Comparator = requireComparator();\n var debug = debug_1;\n var SemVer = semver;\n var re = reExports.safeRe,\n t = reExports.t,\n comparatorTrimReplace = reExports.comparatorTrimReplace,\n tildeTrimReplace = reExports.tildeTrimReplace,\n caretTrimReplace = reExports.caretTrimReplace;\n var FLAG_INCLUDE_PRERELEASE = constants.FLAG_INCLUDE_PRERELEASE,\n FLAG_LOOSE = constants.FLAG_LOOSE;\n var isNullSet = function isNullSet(c) {\n return c.value === '<0.0.0-0';\n };\n var isAny = function isAny(c) {\n return c.value === '';\n };\n\n // take a set of comparators and determine whether there\n // exists a version which can satisfy it\n var isSatisfiable = function isSatisfiable(comparators, options) {\n var result = true;\n var remainingComparators = comparators.slice();\n var testComparator = remainingComparators.pop();\n while (result && remainingComparators.length) {\n result = remainingComparators.every(function (otherComparator) {\n return testComparator.intersects(otherComparator, options);\n });\n testComparator = remainingComparators.pop();\n }\n return result;\n };\n\n // comprised of xranges, tildes, stars, and gtlt's at this point.\n // already replaced the hyphen ranges\n // turn into a set of JUST comparators.\n var parseComparator = function parseComparator(comp, options) {\n debug('comp', comp, options);\n comp = replaceCarets(comp, options);\n debug('caret', comp);\n comp = replaceTildes(comp, options);\n debug('tildes', comp);\n comp = replaceXRanges(comp, options);\n debug('xrange', comp);\n comp = replaceStars(comp, options);\n debug('stars', comp);\n return comp;\n };\n var isX = function isX(id) {\n return !id || id.toLowerCase() === 'x' || id === '*';\n };\n\n // ~, ~> --> * (any, kinda silly)\n // ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n // ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n // ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n // ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n // ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n // ~0.0.1 --> >=0.0.1 <0.1.0-0\n var replaceTildes = function replaceTildes(comp, options) {\n return comp.trim().split(/\\s+/).map(function (c) {\n return replaceTilde(c, options);\n }).join(' ');\n };\n var replaceTilde = function replaceTilde(comp, options) {\n var r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE];\n return comp.replace(r, function (_, M, m, p, pr) {\n debug('tilde', comp, _, M, m, p, pr);\n var ret;\n if (isX(M)) {\n ret = '';\n } else if (isX(m)) {\n ret = \">=\".concat(M, \".0.0 <\").concat(+M + 1, \".0.0-0\");\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = \">=\".concat(M, \".\").concat(m, \".0 <\").concat(M, \".\").concat(+m + 1, \".0-0\");\n } else if (pr) {\n debug('replaceTilde pr', pr);\n ret = \">=\".concat(M, \".\").concat(m, \".\").concat(p, \"-\").concat(pr, \" <\").concat(M, \".\").concat(+m + 1, \".0-0\");\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = \">=\".concat(M, \".\").concat(m, \".\").concat(p, \" <\").concat(M, \".\").concat(+m + 1, \".0-0\");\n }\n debug('tilde return', ret);\n return ret;\n });\n };\n\n // ^ --> * (any, kinda silly)\n // ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n // ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n // ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n // ^1.2.3 --> >=1.2.3 <2.0.0-0\n // ^1.2.0 --> >=1.2.0 <2.0.0-0\n // ^0.0.1 --> >=0.0.1 <0.0.2-0\n // ^0.1.0 --> >=0.1.0 <0.2.0-0\n var replaceCarets = function replaceCarets(comp, options) {\n return comp.trim().split(/\\s+/).map(function (c) {\n return replaceCaret(c, options);\n }).join(' ');\n };\n var replaceCaret = function replaceCaret(comp, options) {\n debug('caret', comp, options);\n var r = options.loose ? re[t.CARETLOOSE] : re[t.CARET];\n var z = options.includePrerelease ? '-0' : '';\n return comp.replace(r, function (_, M, m, p, pr) {\n debug('caret', comp, _, M, m, p, pr);\n var ret;\n if (isX(M)) {\n ret = '';\n } else if (isX(m)) {\n ret = \">=\".concat(M, \".0.0\").concat(z, \" <\").concat(+M + 1, \".0.0-0\");\n } else if (isX(p)) {\n if (M === '0') {\n ret = \">=\".concat(M, \".\").concat(m, \".0\").concat(z, \" <\").concat(M, \".\").concat(+m + 1, \".0-0\");\n } else {\n ret = \">=\".concat(M, \".\").concat(m, \".0\").concat(z, \" <\").concat(+M + 1, \".0.0-0\");\n }\n } else if (pr) {\n debug('replaceCaret pr', pr);\n if (M === '0') {\n if (m === '0') {\n ret = \">=\".concat(M, \".\").concat(m, \".\").concat(p, \"-\").concat(pr, \" <\").concat(M, \".\").concat(m, \".\").concat(+p + 1, \"-0\");\n } else {\n ret = \">=\".concat(M, \".\").concat(m, \".\").concat(p, \"-\").concat(pr, \" <\").concat(M, \".\").concat(+m + 1, \".0-0\");\n }\n } else {\n ret = \">=\".concat(M, \".\").concat(m, \".\").concat(p, \"-\").concat(pr, \" <\").concat(+M + 1, \".0.0-0\");\n }\n } else {\n debug('no pr');\n if (M === '0') {\n if (m === '0') {\n ret = \">=\".concat(M, \".\").concat(m, \".\").concat(p).concat(z, \" <\").concat(M, \".\").concat(m, \".\").concat(+p + 1, \"-0\");\n } else {\n ret = \">=\".concat(M, \".\").concat(m, \".\").concat(p).concat(z, \" <\").concat(M, \".\").concat(+m + 1, \".0-0\");\n }\n } else {\n ret = \">=\".concat(M, \".\").concat(m, \".\").concat(p, \" <\").concat(+M + 1, \".0.0-0\");\n }\n }\n debug('caret return', ret);\n return ret;\n });\n };\n var replaceXRanges = function replaceXRanges(comp, options) {\n debug('replaceXRanges', comp, options);\n return comp.split(/\\s+/).map(function (c) {\n return replaceXRange(c, options);\n }).join(' ');\n };\n var replaceXRange = function replaceXRange(comp, options) {\n comp = comp.trim();\n var r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE];\n return comp.replace(r, function (ret, gtlt, M, m, p, pr) {\n debug('xRange', comp, ret, gtlt, M, m, p, pr);\n var xM = isX(M);\n var xm = xM || isX(m);\n var xp = xm || isX(p);\n var anyX = xp;\n if (gtlt === '=' && anyX) {\n gtlt = '';\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : '';\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0';\n } else {\n // nothing is forbidden\n ret = '*';\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0;\n }\n p = 0;\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>=';\n if (xm) {\n M = +M + 1;\n m = 0;\n p = 0;\n } else {\n m = +m + 1;\n p = 0;\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<';\n if (xm) {\n M = +M + 1;\n } else {\n m = +m + 1;\n }\n }\n if (gtlt === '<') {\n pr = '-0';\n }\n ret = \"\".concat(gtlt + M, \".\").concat(m, \".\").concat(p).concat(pr);\n } else if (xm) {\n ret = \">=\".concat(M, \".0.0\").concat(pr, \" <\").concat(+M + 1, \".0.0-0\");\n } else if (xp) {\n ret = \">=\".concat(M, \".\").concat(m, \".0\").concat(pr, \" <\").concat(M, \".\").concat(+m + 1, \".0-0\");\n }\n debug('xRange return', ret);\n return ret;\n });\n };\n\n // Because * is AND-ed with everything else in the comparator,\n // and '' means \"any version\", just remove the *s entirely.\n var replaceStars = function replaceStars(comp, options) {\n debug('replaceStars', comp, options);\n // Looseness is ignored here. star is always as loose as it gets!\n return comp.trim().replace(re[t.STAR], '');\n };\n var replaceGTE0 = function replaceGTE0(comp, options) {\n debug('replaceGTE0', comp, options);\n return comp.trim().replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '');\n };\n\n // This function is passed to string.replace(re[t.HYPHENRANGE])\n // M, m, patch, prerelease, build\n // 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n // 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n // 1.2 - 3.4 => >=1.2.0 <3.5.0-0\n var hyphenReplace = function hyphenReplace(incPr) {\n return function ($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr, tb) {\n if (isX(fM)) {\n from = '';\n } else if (isX(fm)) {\n from = \">=\".concat(fM, \".0.0\").concat(incPr ? '-0' : '');\n } else if (isX(fp)) {\n from = \">=\".concat(fM, \".\").concat(fm, \".0\").concat(incPr ? '-0' : '');\n } else if (fpr) {\n from = \">=\".concat(from);\n } else {\n from = \">=\".concat(from).concat(incPr ? '-0' : '');\n }\n if (isX(tM)) {\n to = '';\n } else if (isX(tm)) {\n to = \"<\".concat(+tM + 1, \".0.0-0\");\n } else if (isX(tp)) {\n to = \"<\".concat(tM, \".\").concat(+tm + 1, \".0-0\");\n } else if (tpr) {\n to = \"<=\".concat(tM, \".\").concat(tm, \".\").concat(tp, \"-\").concat(tpr);\n } else if (incPr) {\n to = \"<\".concat(tM, \".\").concat(tm, \".\").concat(+tp + 1, \"-0\");\n } else {\n to = \"<=\".concat(to);\n }\n return \"\".concat(from, \" \").concat(to).trim();\n };\n };\n var testSet = function testSet(set, version, options) {\n for (var i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false;\n }\n }\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (var _i2 = 0; _i2 < set.length; _i2++) {\n debug(set[_i2].semver);\n if (set[_i2].semver === Comparator.ANY) {\n continue;\n }\n if (set[_i2].semver.prerelease.length > 0) {\n var allowed = set[_i2].semver;\n if (allowed.major === version.major && allowed.minor === version.minor && allowed.patch === version.patch) {\n return true;\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false;\n }\n return true;\n };\n return range;\n}\nvar Range = requireRange();\nvar satisfies = function satisfies(version, range, options) {\n try {\n range = new Range(range, options);\n } catch (er) {\n return false;\n }\n return range.test(version);\n};\nvar satisfies_1 = satisfies;\nvar satisfies$1 = /*@__PURE__*/getDefaultExportFromCjs(satisfies_1);\n\n/**\n * Open editor url in a new window, and pass a message.\n */\nfunction post(window, url, data) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n var editor = window.open(url);\n var wait = 10000;\n var step = 250;\n var _URL = new URL(url),\n origin = _URL.origin;\n // eslint-disable-next-line no-bitwise\n var count = ~~(wait / step);\n function listen(evt) {\n if (evt.source === editor) {\n count = 0;\n window.removeEventListener('message', listen, false);\n }\n }\n window.addEventListener('message', listen, false);\n\n // send message\n // periodically resend until ack received or timeout\n function send() {\n if (count <= 0) {\n return;\n }\n editor.postMessage(data, origin);\n setTimeout(send, step);\n count -= 1;\n }\n setTimeout(send, step);\n}\n\n// generated with build-style.sh\nvar embedStyle = \".vega-embed {\\n position: relative;\\n display: inline-block;\\n box-sizing: border-box;\\n}\\n.vega-embed.has-actions {\\n padding-right: 38px;\\n}\\n.vega-embed details:not([open]) > :not(summary) {\\n display: none !important;\\n}\\n.vega-embed summary {\\n list-style: none;\\n position: absolute;\\n top: 0;\\n right: 0;\\n padding: 6px;\\n z-index: 1000;\\n background: white;\\n box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.1);\\n color: #1b1e23;\\n border: 1px solid #aaa;\\n border-radius: 999px;\\n opacity: 0.2;\\n transition: opacity 0.4s ease-in;\\n cursor: pointer;\\n line-height: 0px;\\n}\\n.vega-embed summary::-webkit-details-marker {\\n display: none;\\n}\\n.vega-embed summary:active {\\n box-shadow: #aaa 0px 0px 0px 1px inset;\\n}\\n.vega-embed summary svg {\\n width: 14px;\\n height: 14px;\\n}\\n.vega-embed details[open] summary {\\n opacity: 0.7;\\n}\\n.vega-embed:hover summary, .vega-embed:focus-within summary {\\n opacity: 1 !important;\\n transition: opacity 0.2s ease;\\n}\\n.vega-embed .vega-actions {\\n position: absolute;\\n z-index: 1001;\\n top: 35px;\\n right: -9px;\\n display: flex;\\n flex-direction: column;\\n padding-bottom: 8px;\\n padding-top: 8px;\\n border-radius: 4px;\\n box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.2);\\n border: 1px solid #d9d9d9;\\n background: white;\\n animation-duration: 0.15s;\\n animation-name: scale-in;\\n animation-timing-function: cubic-bezier(0.2, 0, 0.13, 1.5);\\n text-align: left;\\n}\\n.vega-embed .vega-actions a {\\n padding: 8px 16px;\\n font-family: sans-serif;\\n font-size: 14px;\\n font-weight: 600;\\n white-space: nowrap;\\n color: #434a56;\\n text-decoration: none;\\n}\\n.vega-embed .vega-actions a:hover, .vega-embed .vega-actions a:focus {\\n background-color: #f7f7f9;\\n color: black;\\n}\\n.vega-embed .vega-actions::before, .vega-embed .vega-actions::after {\\n content: \\\"\\\";\\n display: inline-block;\\n position: absolute;\\n}\\n.vega-embed .vega-actions::before {\\n left: auto;\\n right: 14px;\\n top: -16px;\\n border: 8px solid rgba(0, 0, 0, 0);\\n border-bottom-color: #d9d9d9;\\n}\\n.vega-embed .vega-actions::after {\\n left: auto;\\n right: 15px;\\n top: -14px;\\n border: 7px solid rgba(0, 0, 0, 0);\\n border-bottom-color: #fff;\\n}\\n.vega-embed .chart-wrapper.fit-x {\\n width: 100%;\\n}\\n.vega-embed .chart-wrapper.fit-y {\\n height: 100%;\\n}\\n\\n.vega-embed-wrapper {\\n max-width: 100%;\\n overflow: auto;\\n padding-right: 14px;\\n}\\n\\n@keyframes scale-in {\\n from {\\n opacity: 0;\\n transform: scale(0.6);\\n }\\n to {\\n opacity: 1;\\n transform: scale(1);\\n }\\n}\\n\";\nfunction mergeDeep(dest) {\n for (var _len2 = arguments.length, src = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n src[_key2 - 1] = arguments[_key2];\n }\n for (var _i3 = 0, _src = src; _i3 < _src.length; _i3++) {\n var s = _src[_i3];\n deepMerge_(dest, s);\n }\n return dest;\n}\nfunction deepMerge_(dest, src) {\n for (var _i4 = 0, _Object$keys = Object.keys(src); _i4 < _Object$keys.length; _i4++) {\n var property = _Object$keys[_i4];\n writeConfig(dest, property, src[property], true);\n }\n}\nvar name = \"vega-embed\";\nvar version$1 = \"6.22.2\";\nvar description = \"Publish Vega visualizations as embedded web components.\";\nvar keywords = [\"vega\", \"data\", \"visualization\", \"component\", \"embed\"];\nvar repository = {\n type: \"git\",\n url: \"http://github.com/vega/vega-embed.git\"\n};\nvar author = {\n name: \"UW Interactive Data Lab\",\n url: \"http://idl.cs.washington.edu\"\n};\nvar contributors = [{\n name: \"Dominik Moritz\",\n url: \"https://www.domoritz.de\"\n}];\nvar bugs = {\n url: \"https://github.com/vega/vega-embed/issues\"\n};\nvar homepage = \"https://github.com/vega/vega-embed#readme\";\nvar license = \"BSD-3-Clause\";\nvar main = \"build/vega-embed.js\";\nvar module = \"build/vega-embed.module.js\";\nvar unpkg = \"build/vega-embed.min.js\";\nvar jsdelivr = \"build/vega-embed.min.js\";\nvar types = \"build/vega-embed.module.d.ts\";\nvar files = [\"src\", \"build\", \"patches\"];\nvar devDependencies = {\n \"@babel/core\": \"^7.22.9\",\n \"@babel/plugin-proposal-async-generator-functions\": \"^7.20.7\",\n \"@babel/plugin-proposal-json-strings\": \"^7.18.6\",\n \"@babel/plugin-proposal-object-rest-spread\": \"^7.20.7\",\n \"@babel/plugin-proposal-optional-catch-binding\": \"^7.18.6\",\n \"@babel/plugin-transform-runtime\": \"^7.22.9\",\n \"@babel/preset-env\": \"^7.22.9\",\n \"@babel/preset-typescript\": \"^7.22.5\",\n \"@release-it/conventional-changelog\": \"^7.0.0\",\n \"@rollup/plugin-commonjs\": \"25.0.3\",\n \"@rollup/plugin-json\": \"^6.0.0\",\n \"@rollup/plugin-node-resolve\": \"^15.1.0\",\n \"@rollup/plugin-terser\": \"^0.4.3\",\n \"@types/semver\": \"^7.5.0\",\n \"@typescript-eslint/eslint-plugin\": \"^6.2.0\",\n \"@typescript-eslint/parser\": \"^6.2.0\",\n \"browser-sync\": \"^2.29.3\",\n concurrently: \"^8.2.0\",\n \"del-cli\": \"^5.0.0\",\n eslint: \"^8.46.0\",\n \"eslint-config-prettier\": \"^8.9.0\",\n \"eslint-plugin-jest\": \"^27.2.3\",\n \"eslint-plugin-prettier\": \"^5.0.0\",\n jest: \"^29.6.2\",\n \"jest-canvas-mock\": \"^2.5.2\",\n \"jest-environment-jsdom\": \"^29.6.2\",\n \"patch-package\": \"^8.0.0\",\n \"postinstall-postinstall\": \"^2.1.0\",\n prettier: \"^3.0.0\",\n \"release-it\": \"^16.1.3\",\n rollup: \"3.27.0\",\n \"rollup-plugin-bundle-size\": \"^1.0.3\",\n \"rollup-plugin-ts\": \"^3.2.0\",\n sass: \"^1.64.1\",\n typescript: \"^5.1.6\",\n vega: \"^5.22.1\",\n \"vega-lite\": \"^5.2.0\"\n};\nvar peerDependencies = {\n vega: \"^5.21.0\",\n \"vega-lite\": \"*\"\n};\nvar dependencies = {\n \"fast-json-patch\": \"^3.1.1\",\n \"json-stringify-pretty-compact\": \"^3.0.0\",\n semver: \"^7.5.4\",\n tslib: \"^2.6.1\",\n \"vega-interpreter\": \"^1.0.5\",\n \"vega-schema-url-parser\": \"^2.2.0\",\n \"vega-themes\": \"^2.14.0\",\n \"vega-tooltip\": \"^0.32.0\"\n};\nvar bundledDependencies = [\"yallist\"];\nvar scripts = {\n prebuild: \"yarn clean && yarn build:style\",\n build: \"rollup -c\",\n \"build:style\": \"./build-style.sh\",\n clean: \"del-cli build src/style.ts\",\n prepublishOnly: \"yarn clean && yarn build\",\n preversion: \"yarn lint && yarn test\",\n serve: \"browser-sync start --directory -s -f build *.html\",\n start: \"yarn build && concurrently --kill-others -n Server,Rollup 'yarn serve' 'rollup -c -w'\",\n pretest: \"yarn build:style\",\n test: \"jest\",\n \"test:inspect\": \"node --inspect-brk ./node_modules/.bin/jest --runInBand\",\n prettierbase: \"prettier '*.{css,scss,html}'\",\n format: \"eslint . --fix && yarn prettierbase --write\",\n lint: \"eslint . && yarn prettierbase --check\",\n release: \"release-it\"\n};\nvar pkg = {\n name: name,\n version: version$1,\n description: description,\n keywords: keywords,\n repository: repository,\n author: author,\n contributors: contributors,\n bugs: bugs,\n homepage: homepage,\n license: license,\n main: main,\n module: module,\n unpkg: unpkg,\n jsdelivr: jsdelivr,\n types: types,\n files: files,\n devDependencies: devDependencies,\n peerDependencies: peerDependencies,\n dependencies: dependencies,\n bundledDependencies: bundledDependencies,\n scripts: scripts\n};\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nvar version = pkg.version;\nvar vega = vegaImport;\nvar _vegaLite = vegaLiteImport;\n\n// For backwards compatibility with Vega-Lite before v4.\nvar w = typeof window !== 'undefined' ? window : undefined;\nif (_vegaLite === undefined && w !== null && w !== void 0 && (_w$vl = w.vl) !== null && _w$vl !== void 0 && _w$vl.compile) {\n _vegaLite = w.vl;\n}\nvar DEFAULT_ACTIONS = {\n export: {\n svg: true,\n png: true\n },\n source: true,\n compiled: true,\n editor: true\n};\nvar I18N = {\n CLICK_TO_VIEW_ACTIONS: 'Click to view actions',\n COMPILED_ACTION: 'View Compiled Vega',\n EDITOR_ACTION: 'Open in Vega Editor',\n PNG_ACTION: 'Save as PNG',\n SOURCE_ACTION: 'View Source',\n SVG_ACTION: 'Save as SVG'\n};\nvar NAMES = {\n vega: 'Vega',\n 'vega-lite': 'Vega-Lite'\n};\nvar VERSION = {\n vega: vega.version,\n 'vega-lite': _vegaLite ? _vegaLite.version : 'not available'\n};\nvar PREPROCESSOR = {\n vega: function vega(vgSpec) {\n return vgSpec;\n },\n 'vega-lite': function vegaLite(vlSpec, config) {\n return _vegaLite.compile(vlSpec, {\n config: config\n }).spec;\n }\n};\nvar SVG_CIRCLES = \"\\n\\n \\n \\n \\n\";\nvar CHART_WRAPPER_CLASS = 'chart-wrapper';\nfunction isTooltipHandler(h) {\n return typeof h === 'function';\n}\nfunction viewSource(source, sourceHeader, sourceFooter, mode) {\n var header = \"\".concat(sourceHeader, \"
      \");\n  var footer = \"
      \".concat(sourceFooter, \"\");\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n var win = window.open('');\n win.document.write(header + source + footer);\n win.document.title = \"\".concat(NAMES[mode], \" JSON Source\");\n}\n\n/**\n * Try to guess the type of spec.\n *\n * @param spec Vega or Vega-Lite spec.\n */\nfunction guessMode(spec, providedMode) {\n // Decide mode\n if (spec.$schema) {\n var parsed = schemaParser(spec.$schema);\n if (providedMode && providedMode !== parsed.library) {\n var _NAMES$providedMode;\n console.warn(\"The given visualization spec is written in \".concat(NAMES[parsed.library], \", but mode argument sets \").concat((_NAMES$providedMode = NAMES[providedMode]) !== null && _NAMES$providedMode !== void 0 ? _NAMES$providedMode : providedMode, \".\"));\n }\n var mode = parsed.library;\n if (!satisfies$1(VERSION[mode], \"^\".concat(parsed.version.slice(1)))) {\n console.warn(\"The input spec uses \".concat(NAMES[mode], \" \").concat(parsed.version, \", but the current version of \").concat(NAMES[mode], \" is v\").concat(VERSION[mode], \".\"));\n }\n return mode;\n }\n\n // try to guess from the provided spec\n if ('mark' in spec || 'encoding' in spec || 'layer' in spec || 'hconcat' in spec || 'vconcat' in spec || 'facet' in spec || 'repeat' in spec) {\n return 'vega-lite';\n }\n if ('marks' in spec || 'signals' in spec || 'scales' in spec || 'axes' in spec) {\n return 'vega';\n }\n return providedMode !== null && providedMode !== void 0 ? providedMode : 'vega';\n}\nfunction isLoader(o) {\n return !!(o && 'load' in o);\n}\nfunction createLoader(opts) {\n return isLoader(opts) ? opts : vega.loader(opts);\n}\nfunction embedOptionsFromUsermeta(parsedSpec) {\n var _parsedSpec$usermeta$, _parsedSpec$usermeta;\n var opts = (_parsedSpec$usermeta$ = (_parsedSpec$usermeta = parsedSpec.usermeta) === null || _parsedSpec$usermeta === void 0 ? void 0 : _parsedSpec$usermeta.embedOptions) !== null && _parsedSpec$usermeta$ !== void 0 ? _parsedSpec$usermeta$ : {};\n if (isString(opts.defaultStyle)) {\n // we don't allow styles set via usermeta since it would allow injection of logic (we set the style via innerHTML)\n opts.defaultStyle = false;\n }\n return opts;\n}\n\n/**\n * Embed a Vega visualization component in a web page. This function returns a promise.\n *\n * @param el DOM element in which to place component (DOM node or CSS selector).\n * @param spec String : A URL string from which to load the Vega specification.\n * Object : The Vega/Vega-Lite specification as a parsed JSON object.\n * @param opts A JavaScript object containing options for embedding.\n */\nfunction embed(_x, _x2) {\n return _embed2.apply(this, arguments);\n}\nfunction _embed2() {\n _embed2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(el, spec) {\n var _parsedOpts$config, _usermetaOpts$config;\n var opts,\n parsedSpec,\n loader,\n loadedEmbedOptions,\n usermetaLoader,\n _opts$loader,\n usermetaOpts,\n parsedOpts,\n mergedOpts,\n _args = arguments;\n return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n opts = _args.length > 2 && _args[2] !== undefined ? _args[2] : {};\n if (!isString(spec)) {\n _context2.next = 10;\n break;\n }\n loader = createLoader(opts.loader);\n _context2.t0 = JSON;\n _context2.next = 6;\n return loader.load(spec);\n case 6:\n _context2.t1 = _context2.sent;\n parsedSpec = _context2.t0.parse.call(_context2.t0, _context2.t1);\n _context2.next = 11;\n break;\n case 10:\n parsedSpec = spec;\n case 11:\n loadedEmbedOptions = embedOptionsFromUsermeta(parsedSpec);\n usermetaLoader = loadedEmbedOptions.loader; // either create the loader for the first time or create a new loader if the spec has new loader options\n if (!loader || usermetaLoader) {\n loader = createLoader((_opts$loader = opts.loader) !== null && _opts$loader !== void 0 ? _opts$loader : usermetaLoader);\n }\n _context2.next = 16;\n return loadOpts(loadedEmbedOptions, loader);\n case 16:\n usermetaOpts = _context2.sent;\n _context2.next = 19;\n return loadOpts(opts, loader);\n case 19:\n parsedOpts = _context2.sent;\n mergedOpts = _objectSpread(_objectSpread({}, mergeDeep(parsedOpts, usermetaOpts)), {}, {\n config: mergeConfig((_parsedOpts$config = parsedOpts.config) !== null && _parsedOpts$config !== void 0 ? _parsedOpts$config : {}, (_usermetaOpts$config = usermetaOpts.config) !== null && _usermetaOpts$config !== void 0 ? _usermetaOpts$config : {})\n });\n _context2.next = 23;\n return _embed(el, parsedSpec, mergedOpts, loader);\n case 23:\n return _context2.abrupt(\"return\", _context2.sent);\n case 24:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }));\n return _embed2.apply(this, arguments);\n}\nfunction loadOpts(_x3, _x4) {\n return _loadOpts.apply(this, arguments);\n}\nfunction _loadOpts() {\n _loadOpts = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(opt, loader) {\n var _opt$config;\n var config, patch;\n return _regeneratorRuntime.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n if (!isString(opt.config)) {\n _context3.next = 8;\n break;\n }\n _context3.t1 = JSON;\n _context3.next = 4;\n return loader.load(opt.config);\n case 4:\n _context3.t2 = _context3.sent;\n _context3.t0 = _context3.t1.parse.call(_context3.t1, _context3.t2);\n _context3.next = 9;\n break;\n case 8:\n _context3.t0 = (_opt$config = opt.config) !== null && _opt$config !== void 0 ? _opt$config : {};\n case 9:\n config = _context3.t0;\n if (!isString(opt.patch)) {\n _context3.next = 18;\n break;\n }\n _context3.t4 = JSON;\n _context3.next = 14;\n return loader.load(opt.patch);\n case 14:\n _context3.t5 = _context3.sent;\n _context3.t3 = _context3.t4.parse.call(_context3.t4, _context3.t5);\n _context3.next = 19;\n break;\n case 18:\n _context3.t3 = opt.patch;\n case 19:\n patch = _context3.t3;\n return _context3.abrupt(\"return\", _objectSpread(_objectSpread(_objectSpread({}, opt), patch ? {\n patch: patch\n } : {}), config ? {\n config: config\n } : {}));\n case 21:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3);\n }));\n return _loadOpts.apply(this, arguments);\n}\nfunction getRoot(el) {\n var _document$head;\n var possibleRoot = el.getRootNode ? el.getRootNode() : document;\n return possibleRoot instanceof ShadowRoot ? {\n root: possibleRoot,\n rootContainer: possibleRoot\n } : {\n root: document,\n rootContainer: (_document$head = document.head) !== null && _document$head !== void 0 ? _document$head : document.body\n };\n}\nfunction _embed(_x5, _x6) {\n return _embed3.apply(this, arguments);\n}\nfunction _embed3() {\n _embed3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5(el, spec) {\n var _opts$config, _opts$actions, _opts$renderer, _opts$logLevel, _opts$downloadFileNam, _ref, _vega$expressionInter;\n var opts,\n loader,\n config,\n actions,\n i18n,\n renderer,\n logLevel,\n downloadFileName,\n element,\n ID,\n _getRoot,\n root,\n rootContainer,\n style,\n mode,\n vgSpec,\n parsed,\n container,\n chartWrapper,\n patch,\n _name,\n expressionFunction,\n ast,\n runtime,\n view,\n handler,\n hover,\n _ref2,\n hoverSet,\n updateSet,\n documentClickHandler,\n wrapper,\n details,\n summary,\n ctrl,\n _loop,\n _i5,\n _arr,\n viewSourceLink,\n compileLink,\n _opts$editorUrl,\n editorUrl,\n editorLink,\n finalize,\n _args5 = arguments;\n return _regeneratorRuntime.wrap(function _callee5$(_context6) {\n while (1) switch (_context6.prev = _context6.next) {\n case 0:\n finalize = function _finalize() {\n if (documentClickHandler) {\n document.removeEventListener('click', documentClickHandler);\n }\n view.finalize();\n };\n opts = _args5.length > 2 && _args5[2] !== undefined ? _args5[2] : {};\n loader = _args5.length > 3 ? _args5[3] : undefined;\n config = opts.theme ? mergeConfig(themes[opts.theme], (_opts$config = opts.config) !== null && _opts$config !== void 0 ? _opts$config : {}) : opts.config;\n actions = isBoolean(opts.actions) ? opts.actions : mergeDeep({}, DEFAULT_ACTIONS, (_opts$actions = opts.actions) !== null && _opts$actions !== void 0 ? _opts$actions : {});\n i18n = _objectSpread(_objectSpread({}, I18N), opts.i18n);\n renderer = (_opts$renderer = opts.renderer) !== null && _opts$renderer !== void 0 ? _opts$renderer : 'canvas';\n logLevel = (_opts$logLevel = opts.logLevel) !== null && _opts$logLevel !== void 0 ? _opts$logLevel : vega.Warn;\n downloadFileName = (_opts$downloadFileNam = opts.downloadFileName) !== null && _opts$downloadFileNam !== void 0 ? _opts$downloadFileNam : 'visualization';\n element = typeof el === 'string' ? document.querySelector(el) : el;\n if (element) {\n _context6.next = 12;\n break;\n }\n throw new Error(\"\".concat(el, \" does not exist\"));\n case 12:\n if (opts.defaultStyle !== false) {\n ID = 'vega-embed-style';\n _getRoot = getRoot(element), root = _getRoot.root, rootContainer = _getRoot.rootContainer;\n if (!root.getElementById(ID)) {\n style = document.createElement('style');\n style.id = ID;\n style.innerHTML = opts.defaultStyle === undefined || opts.defaultStyle === true ? embedStyle.toString() : opts.defaultStyle;\n rootContainer.appendChild(style);\n }\n }\n mode = guessMode(spec, opts.mode);\n vgSpec = PREPROCESSOR[mode](spec, config);\n if (mode === 'vega-lite') {\n if (vgSpec.$schema) {\n parsed = schemaParser(vgSpec.$schema);\n if (!satisfies$1(VERSION.vega, \"^\".concat(parsed.version.slice(1)))) {\n console.warn(\"The compiled spec uses Vega \".concat(parsed.version, \", but current version is v\").concat(VERSION.vega, \".\"));\n }\n }\n }\n element.classList.add('vega-embed');\n if (actions) {\n element.classList.add('has-actions');\n }\n element.innerHTML = ''; // clear container\n container = element;\n if (actions) {\n chartWrapper = document.createElement('div');\n chartWrapper.classList.add(CHART_WRAPPER_CLASS);\n element.appendChild(chartWrapper);\n container = chartWrapper;\n }\n patch = opts.patch;\n if (patch) {\n vgSpec = patch instanceof Function ? patch(vgSpec) : applyPatch(vgSpec, patch, true, false).newDocument;\n }\n\n // Set locale. Note that this is a global setting.\n if (opts.formatLocale) {\n vega.formatLocale(opts.formatLocale);\n }\n if (opts.timeFormatLocale) {\n vega.timeFormatLocale(opts.timeFormatLocale);\n }\n\n // Set custom expression functions\n if (opts.expressionFunctions) {\n for (_name in opts.expressionFunctions) {\n expressionFunction = opts.expressionFunctions[_name];\n if ('fn' in expressionFunction) {\n vega.expressionFunction(_name, expressionFunction.fn, expressionFunction['visitor']);\n } else if (expressionFunction instanceof Function) {\n vega.expressionFunction(_name, expressionFunction);\n }\n }\n }\n ast = opts.ast; // Do not apply the config to Vega when we have already applied it to Vega-Lite.\n // This call may throw an Error if parsing fails.\n runtime = vega.parse(vgSpec, mode === 'vega-lite' ? {} : config, {\n ast: ast\n });\n view = new (opts.viewClass || vega.View)(runtime, _objectSpread({\n loader: loader,\n logLevel: logLevel,\n renderer: renderer\n }, ast ? {\n expr: (_ref = (_vega$expressionInter = vega.expressionInterpreter) !== null && _vega$expressionInter !== void 0 ? _vega$expressionInter : opts.expr) !== null && _ref !== void 0 ? _ref : expressionInterpreter\n } : {}));\n view.addSignalListener('autosize', function (_, autosize) {\n var type = autosize.type;\n if (type == 'fit-x') {\n container.classList.add('fit-x');\n container.classList.remove('fit-y');\n } else if (type == 'fit-y') {\n container.classList.remove('fit-x');\n container.classList.add('fit-y');\n } else if (type == 'fit') {\n container.classList.add('fit-x', 'fit-y');\n } else {\n container.classList.remove('fit-x', 'fit-y');\n }\n });\n if (opts.tooltip !== false) {\n handler = isTooltipHandler(opts.tooltip) ? opts.tooltip :\n // user provided boolean true or tooltip options\n new Handler(opts.tooltip === true ? {} : opts.tooltip).call;\n view.tooltip(handler);\n }\n hover = opts.hover;\n if (hover === undefined) {\n hover = mode === 'vega';\n }\n if (hover) {\n _ref2 = typeof hover === 'boolean' ? {} : hover, hoverSet = _ref2.hoverSet, updateSet = _ref2.updateSet;\n view.hover(hoverSet, updateSet);\n }\n if (opts) {\n if (opts.width != null) {\n view.width(opts.width);\n }\n if (opts.height != null) {\n view.height(opts.height);\n }\n if (opts.padding != null) {\n view.padding(opts.padding);\n }\n }\n _context6.next = 37;\n return view.initialize(container, opts.bind).runAsync();\n case 37:\n if (!(actions !== false)) {\n _context6.next = 54;\n break;\n }\n wrapper = element;\n if (opts.defaultStyle !== false) {\n details = document.createElement('details');\n details.title = i18n.CLICK_TO_VIEW_ACTIONS;\n element.append(details);\n wrapper = details;\n summary = document.createElement('summary');\n summary.innerHTML = SVG_CIRCLES;\n details.append(summary);\n documentClickHandler = function documentClickHandler(ev) {\n if (!details.contains(ev.target)) {\n details.removeAttribute('open');\n }\n };\n document.addEventListener('click', documentClickHandler);\n }\n ctrl = document.createElement('div');\n wrapper.append(ctrl);\n ctrl.classList.add('vega-actions');\n\n // add 'Export' action\n if (!(actions === true || actions.export !== false)) {\n _context6.next = 51;\n break;\n }\n _loop = /*#__PURE__*/_regeneratorRuntime.mark(function _loop() {\n var ext, i18nExportAction, exportLink, scaleFactor;\n return _regeneratorRuntime.wrap(function _loop$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n ext = _arr[_i5];\n if (actions === true || actions.export === true || actions.export[ext]) {\n i18nExportAction = i18n[\"\".concat(ext.toUpperCase(), \"_ACTION\")];\n exportLink = document.createElement('a');\n scaleFactor = isObject(opts.scaleFactor) ? opts.scaleFactor[ext] : opts.scaleFactor;\n exportLink.text = i18nExportAction;\n exportLink.href = '#';\n exportLink.target = '_blank';\n exportLink.download = \"\".concat(downloadFileName, \".\").concat(ext);\n // add link on mousedown so that it's correct when the click happens\n exportLink.addEventListener('mousedown', /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4(e) {\n var url;\n return _regeneratorRuntime.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n e.preventDefault();\n _context4.next = 3;\n return view.toImageURL(ext, scaleFactor);\n case 3:\n url = _context4.sent;\n this.href = url;\n case 5:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4, this);\n }));\n return function (_x7) {\n return _ref3.apply(this, arguments);\n };\n }());\n ctrl.append(exportLink);\n }\n case 2:\n case \"end\":\n return _context5.stop();\n }\n }, _loop);\n });\n _i5 = 0, _arr = ['svg', 'png'];\n case 46:\n if (!(_i5 < _arr.length)) {\n _context6.next = 51;\n break;\n }\n return _context6.delegateYield(_loop(), \"t0\", 48);\n case 48:\n _i5++;\n _context6.next = 46;\n break;\n case 51:\n // add 'View Source' action\n if (actions === true || actions.source !== false) {\n viewSourceLink = document.createElement('a');\n viewSourceLink.text = i18n.SOURCE_ACTION;\n viewSourceLink.href = '#';\n viewSourceLink.addEventListener('click', function (e) {\n var _opts$sourceHeader, _opts$sourceFooter;\n viewSource(stringify(spec), (_opts$sourceHeader = opts.sourceHeader) !== null && _opts$sourceHeader !== void 0 ? _opts$sourceHeader : '', (_opts$sourceFooter = opts.sourceFooter) !== null && _opts$sourceFooter !== void 0 ? _opts$sourceFooter : '', mode);\n e.preventDefault();\n });\n ctrl.append(viewSourceLink);\n }\n\n // add 'View Compiled' action\n if (mode === 'vega-lite' && (actions === true || actions.compiled !== false)) {\n compileLink = document.createElement('a');\n compileLink.text = i18n.COMPILED_ACTION;\n compileLink.href = '#';\n compileLink.addEventListener('click', function (e) {\n var _opts$sourceHeader2, _opts$sourceFooter2;\n viewSource(stringify(vgSpec), (_opts$sourceHeader2 = opts.sourceHeader) !== null && _opts$sourceHeader2 !== void 0 ? _opts$sourceHeader2 : '', (_opts$sourceFooter2 = opts.sourceFooter) !== null && _opts$sourceFooter2 !== void 0 ? _opts$sourceFooter2 : '', 'vega');\n e.preventDefault();\n });\n ctrl.append(compileLink);\n }\n\n // add 'Open in Vega Editor' action\n if (actions === true || actions.editor !== false) {\n editorUrl = (_opts$editorUrl = opts.editorUrl) !== null && _opts$editorUrl !== void 0 ? _opts$editorUrl : 'https://vega.github.io/editor/';\n editorLink = document.createElement('a');\n editorLink.text = i18n.EDITOR_ACTION;\n editorLink.href = '#';\n editorLink.addEventListener('click', function (e) {\n post(window, editorUrl, {\n config: config,\n mode: mode,\n renderer: renderer,\n spec: stringify(spec)\n });\n e.preventDefault();\n });\n ctrl.append(editorLink);\n }\n case 54:\n return _context6.abrupt(\"return\", {\n view: view,\n spec: spec,\n vgSpec: vgSpec,\n finalize: finalize,\n embedOptions: opts\n });\n case 55:\n case \"end\":\n return _context6.stop();\n }\n }, _callee5);\n }));\n return _embed3.apply(this, arguments);\n}\nexport { DEFAULT_ACTIONS, embed as default, guessMode, vega, _vegaLite as vegaLite, version };","import updateSingleDatasetInView from './updateSingleDatasetInView';\nexport default function updateMultipleDatasetsInView(view, data) {\n Object.keys(data).forEach(function (name) {\n updateSingleDatasetInView(view, name, data[name]);\n });\n}","import { vega } from 'vega-embed';\nimport isFunction from './isFunction';\nexport default function updateSingleDatasetInView(view, name, value) {\n if (value) {\n if (isFunction(value)) {\n value(view.data(name));\n } else {\n view.change(name, vega.changeset().remove(function () {\n return true;\n }).insert(value));\n }\n }\n}","export default function isFunction(functionToCheck) {\n var getType = {};\n return !!functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}","export default function getUniqueFieldNames(objects) {\n var fields = new Set();\n objects.forEach(function (o) {\n Object.keys(o).forEach(function (field) {\n fields.add(field);\n });\n });\n return fields;\n}","// eslint-disable-next-line import/prefer-default-export\nexport var NOOP = function NOOP() {};","export default function addSignalListenersToView(view, signalListeners) {\n var signalNames = Object.keys(signalListeners);\n signalNames.forEach(function (signalName) {\n try {\n view.addSignalListener(signalName, signalListeners[signalName]);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.warn('Cannot add invalid signal listener.', error);\n }\n });\n return signalNames.length > 0;\n}","export default function removeSignalListenersFromView(view, signalListeners) {\n var signalNames = Object.keys(signalListeners);\n signalNames.forEach(function (signalName) {\n try {\n view.removeSignalListener(signalName, signalListeners[signalName]);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.warn('Cannot remove invalid signal listener.', error);\n }\n });\n return signalNames.length > 0;\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nexport default function combineSpecWithDimension(props) {\n var spec = props.spec,\n width = props.width,\n height = props.height;\n if (typeof width !== 'undefined' && typeof height !== 'undefined') {\n return _objectSpread(_objectSpread({}, spec), {}, {\n width: width,\n height: height\n });\n }\n if (typeof width !== 'undefined') {\n return _objectSpread(_objectSpread({}, spec), {}, {\n width: width\n });\n }\n if (typeof height !== 'undefined') {\n return _objectSpread(_objectSpread({}, spec), {}, {\n height: height\n });\n }\n return spec;\n}","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _assertThisInitialized from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nvar _excluded = [\"spec\", \"onNewView\", \"signalListeners\", \"width\", \"height\"];\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport _pt from \"prop-types\";\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 return obj;\n}\nimport React from 'react';\nimport vegaEmbed from 'vega-embed';\nimport shallowEqual from './utils/shallowEqual';\nimport getUniqueFieldNames from './utils/getUniqueFieldNames';\nimport { NOOP } from './constants';\nimport addSignalListenersToView from './utils/addSignalListenersToView';\nimport computeSpecChanges from './utils/computeSpecChanges';\nimport removeSignalListenersFromView from './utils/removeSignalListenersFromView';\nimport combineSpecWithDimension from './utils/combineSpecWithDimension';\nvar VegaEmbed = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(VegaEmbed, _React$PureComponent);\n var _super = _createSuper(VegaEmbed);\n function VegaEmbed() {\n var _this;\n _classCallCheck(this, VegaEmbed);\n _this = _super.apply(this, arguments);\n _defineProperty(_assertThisInitialized(_this), \"containerRef\", /*#__PURE__*/React.createRef());\n _defineProperty(_assertThisInitialized(_this), \"resultPromise\", void 0);\n _defineProperty(_assertThisInitialized(_this), \"handleError\", function (error) {\n var _this$props$onError = _this.props.onError,\n onError = _this$props$onError === void 0 ? NOOP : _this$props$onError;\n onError(error, _this.containerRef.current); // eslint-disable-next-line no-console\n\n console.warn(error);\n return undefined;\n });\n _defineProperty(_assertThisInitialized(_this), \"modifyView\", function (action) {\n if (_this.resultPromise) {\n _this.resultPromise.then(function (result) {\n if (result) {\n action(result.view);\n }\n return true;\n }).catch(_this.handleError);\n }\n });\n return _this;\n }\n _createClass(VegaEmbed, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.createView();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var _this2 = this;\n var fieldSet = getUniqueFieldNames([this.props, prevProps]);\n fieldSet.delete('className');\n fieldSet.delete('signalListeners');\n fieldSet.delete('spec');\n fieldSet.delete('style');\n fieldSet.delete('width');\n fieldSet.delete('height'); // Only create a new view if necessary\n\n if (Array.from(fieldSet).some(function (f) {\n return _this2.props[f] !== prevProps[f];\n })) {\n this.clearView();\n this.createView();\n } else {\n var specChanges = computeSpecChanges(combineSpecWithDimension(this.props), combineSpecWithDimension(prevProps));\n var newSignalListeners = this.props.signalListeners;\n var oldSignalListeners = prevProps.signalListeners;\n if (specChanges) {\n if (specChanges.isExpensive) {\n this.clearView();\n this.createView();\n } else {\n var areSignalListenersChanged = !shallowEqual(newSignalListeners, oldSignalListeners);\n this.modifyView(function (view) {\n if (specChanges.width !== false) {\n view.width(specChanges.width);\n }\n if (specChanges.height !== false) {\n view.height(specChanges.height);\n }\n if (areSignalListenersChanged) {\n if (oldSignalListeners) {\n removeSignalListenersFromView(view, oldSignalListeners);\n }\n if (newSignalListeners) {\n addSignalListenersToView(view, newSignalListeners);\n }\n }\n view.run();\n });\n }\n } else if (!shallowEqual(newSignalListeners, oldSignalListeners)) {\n this.modifyView(function (view) {\n if (oldSignalListeners) {\n removeSignalListenersFromView(view, oldSignalListeners);\n }\n if (newSignalListeners) {\n addSignalListenersToView(view, newSignalListeners);\n }\n view.run();\n });\n }\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.clearView();\n }\n }, {\n key: \"createView\",\n value: function createView() {\n var _this$props = this.props,\n spec = _this$props.spec,\n onNewView = _this$props.onNewView,\n _this$props$signalLis = _this$props.signalListeners,\n signalListeners = _this$props$signalLis === void 0 ? {} : _this$props$signalLis,\n width = _this$props.width,\n height = _this$props.height,\n options = _objectWithoutProperties(_this$props, _excluded);\n if (this.containerRef.current) {\n var finalSpec = combineSpecWithDimension(this.props);\n this.resultPromise = vegaEmbed(this.containerRef.current, finalSpec, options).then(function (result) {\n if (result) {\n var view = result.view;\n if (addSignalListenersToView(view, signalListeners)) {\n view.run();\n }\n }\n return result;\n }).catch(this.handleError);\n if (onNewView) {\n this.modifyView(onNewView);\n }\n }\n }\n }, {\n key: \"clearView\",\n value: function clearView() {\n if (this.resultPromise) {\n this.resultPromise.then(function (result) {\n if (result) {\n result.finalize();\n }\n }).catch(this.handleError);\n }\n this.resultPromise = undefined;\n return this;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n className = _this$props2.className,\n style = _this$props2.style; // Create the container Vega draws inside\n\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: this.containerRef,\n className: className,\n style: style\n });\n }\n }]);\n return VegaEmbed;\n}(React.PureComponent);\nexport { VegaEmbed as default };\n_defineProperty(VegaEmbed, \"propTypes\", {\n className: _pt.string,\n onError: _pt.func\n});","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport equal from 'fast-deep-equal';\nimport getUniqueFieldNames from './getUniqueFieldNames';\nexport default function computeSpecChanges(newSpec, oldSpec) {\n if (newSpec === oldSpec) return false;\n var changes = {\n width: false,\n height: false,\n isExpensive: false\n };\n var fieldNames = getUniqueFieldNames([newSpec, oldSpec]);\n if (fieldNames.has('width') && (!('width' in newSpec) || !('width' in oldSpec) || newSpec.width !== oldSpec.width)) {\n if ('width' in newSpec && typeof newSpec.width === 'number') {\n changes.width = newSpec.width;\n } else {\n changes.isExpensive = true;\n }\n }\n if (fieldNames.has('height') && (!('height' in newSpec) || !('height' in oldSpec) || newSpec.height !== oldSpec.height)) {\n if ('height' in newSpec && typeof newSpec.height === 'number') {\n changes.height = newSpec.height;\n } else {\n changes.isExpensive = true;\n }\n } // Delete cheap fields\n\n fieldNames.delete('width');\n fieldNames.delete('height');\n if (_toConsumableArray(fieldNames).some(function (field) {\n return !(field in newSpec) || !(field in oldSpec) || !equal(newSpec[field], oldSpec[field]);\n })) {\n changes.isExpensive = true;\n }\n return changes.width !== false || changes.height !== false || changes.isExpensive ? changes : false;\n}","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _assertThisInitialized from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nvar _excluded = [\"data\"];\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\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 return obj;\n}\nimport React from 'react';\nimport shallowEqual from './utils/shallowEqual';\nimport updateMultipleDatasetsInView from './utils/updateMultipleDatasetsInView';\nimport VegaEmbed from './VegaEmbed';\nimport { NOOP } from './constants';\nvar EMPTY = {};\nvar Vega = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(Vega, _React$PureComponent);\n var _super = _createSuper(Vega);\n function Vega() {\n var _this;\n _classCallCheck(this, Vega);\n _this = _super.apply(this, arguments);\n _defineProperty(_assertThisInitialized(_this), \"vegaEmbed\", /*#__PURE__*/React.createRef());\n _defineProperty(_assertThisInitialized(_this), \"handleNewView\", function (view) {\n _this.update();\n var _this$props$onNewView = _this.props.onNewView,\n onNewView = _this$props$onNewView === void 0 ? NOOP : _this$props$onNewView;\n onNewView(view);\n });\n return _this;\n }\n _createClass(Vega, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.update();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n if (!shallowEqual(this.props.data, prevProps.data)) {\n this.update();\n }\n }\n }, {\n key: \"update\",\n value: function update() {\n var data = this.props.data;\n if (this.vegaEmbed.current && data && Object.keys(data).length > 0) {\n this.vegaEmbed.current.modifyView(function (view) {\n updateMultipleDatasetsInView(view, data);\n view.resize().run();\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n data = _this$props.data,\n restProps = _objectWithoutProperties(_this$props, _excluded);\n return /*#__PURE__*/React.createElement(VegaEmbed, _extends({\n ref: this.vegaEmbed\n }, restProps, {\n onNewView: this.handleNewView\n }));\n }\n }]);\n return Vega;\n}(React.PureComponent);\nexport { Vega as default };\n_defineProperty(Vega, \"defaultProps\", {\n data: EMPTY\n});","import {\n ArchiveBoxXMarkIcon,\n ChartBarIcon,\n ExclamationTriangleIcon,\n InformationCircleIcon,\n} from \"@heroicons/react/24/outline\";\nimport { message, Modal } from \"antd\";\nimport * as React from \"react\";\nimport { IGoal } from \"../../types\";\nimport ChartView from \"./chartview\";\n\nconst ChartRasterView = ({\n raster,\n library,\n goal,\n}: {\n raster: string | null;\n library: string | null | undefined;\n goal: IGoal | null;\n}) => {\n const [isModalOpen, setIsModalOpen] = React.useState(false);\n const showModal = () => {\n setIsModalOpen(true);\n };\n\n const handleOk = () => {\n setIsModalOpen(false);\n };\n\n const handleCancel = () => {\n setIsModalOpen(false);\n };\n\n return (\n
      \n {raster && (\n
      \n \n
      \n )}\n {!raster && (\n
      \n {\" \"}\n {\" \"}\n No visualization image generated.\n
      \n )}\n\n \n {library} Chart\n \n }\n open={isModalOpen}\n onOk={handleOk}\n onCancel={handleCancel}\n width={800}\n >\n
      {goal?.question}
      \n
      {goal?.rationale}
      \n \n \n
      \n );\n};\n\nexport default ChartRasterView;\n","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"title\", \"titleId\"];\nimport * as React from \"react\";\nfunction CodeBracketIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M17.25 6.75L22.5 12l-5.25 5.25m-10.5 0L1.5 12l5.25-5.25m7.5-3l-4.5 16.5\"\n }));\n}\nvar ForwardRef = React.forwardRef(CodeBracketIcon);\nexport default ForwardRef;","import {\n ChartPieIcon,\n CodeBracketIcon,\n DocumentChartBarIcon,\n ExclamationTriangleIcon,\n} from \"@heroicons/react/24/outline\";\nimport { Tabs } from \"antd\";\nimport * as React from \"react\";\nimport { Vega } from \"react-vega\";\nimport { CodeBlock } from \"./codeblock\";\nimport VegaVizView from \"./chartview\";\n\nconst CodeView = ({ spec, code, error, status }: any) => {\n // delete spec.datasets;\n\n const tabs = [];\n if (spec !== null) {\n tabs.push({\n label: (\n
      \n {\" \"}\n Vega-Lite Spec\n
      \n ),\n key: \"1\",\n children: (\n
      \n \n
      \n ),\n });\n }\n tabs.push({\n label: (\n
      \n {\" \"}\n Python Code\n
      \n ),\n key: \"2\",\n children: (\n
      \n \n
      \n ),\n });\n\n if (status === false && error) {\n tabs.push({\n label: (\n
      \n {\" \"}\n {\" \"}\n Error\n
      \n ),\n key: \"3\",\n children: (\n
      \n
      Error Message
      \n \n
      Traceback
      \n \n
      \n ),\n });\n }\n\n return (\n
      \n {}} items={tabs} />\n
      \n );\n};\nexport default CodeView;\n","import * as React from \"react\";\nimport { ChatBubbleOvalLeftEllipsisIcon } from \"@heroicons/react/24/outline\";\nimport { IStatus, IVizConfig } from \"../../types\";\nimport { Skeleton, message } from \"antd\";\nimport { fetchJSON, scrollToElement } from \"../../utils\";\nimport { LoadBox } from \"../../atoms\";\nimport { CodeBlock } from \"./codeblock\";\n\nconst ChartExplainer = ({\n vizData,\n vizConfig,\n}: {\n vizData: any;\n vizConfig: IVizConfig;\n}) => {\n const [loading, setLoading] = React.useState(false);\n const [error, setError] = React.useState(null);\n const [explanations, setExplanations] = React.useState([]);\n const serverUrl = process.env.GATSBY_API_URL;\n\n const explanationsDivRef = React.useRef(null);\n\n React.useEffect(() => {\n setExplanations([]);\n }, [vizData]);\n\n const fetchExplanation = () => {\n setError(null);\n setLoading(true);\n setExplanations([]);\n setTimeout(() => {\n scrollToElement(explanationsDivRef);\n }, 600);\n\n const payLoad = {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n code: vizData.code,\n library: vizConfig.library,\n textgen_config: vizConfig.textgen_config,\n }),\n };\n // console.log(config.goal);\n\n const onSuccess = (data: any) => {\n if (data && data.status) {\n // setVizspecs(data.charts);\n console.log(\"Explanation data\", data);\n setExplanations(data.explanations);\n message.success(data.message);\n setTimeout(() => {\n scrollToElement(explanationsDivRef);\n }, 400);\n } else {\n message.error(data.message);\n setError(data);\n }\n setLoading(false);\n };\n const onError = (err: any) => {\n message.error(err.message);\n setLoading(false);\n setError(err);\n };\n fetchJSON(`${serverUrl}/visualize/explain`, payLoad, onSuccess, onError);\n };\n\n const explanationsView = explanations?.map((exp, i) => {\n const isAccessibility = exp.section === \"accessibility\";\n return (\n
      \n
      {exp.section}
      \n
      \n
      \n {exp.explanation}\n {/*
      {exp.rationale}
      */}\n
      \n {!isAccessibility && (\n
      \n \n
      \n )}\n
      \n
      \n );\n });\n return (\n
      \n fetchExplanation()}\n role={\"button\"}\n className={`px-5 bg-accent duration-300 hover:brightness-110 text-white inline-block rounded p-2 ${\n loading ? \"opacity-50 pointer-events-none\" : \"\"\n } `}\n >\n {!loading && (\n \n )}\n {loading && } Explain the\n chart.\n
      \n\n {/* {loading && (\n \n {\" \"}\n loading explanations\n \n )} */}\n\n {loading && (\n
      \n \n \n
      \n )}\n\n
      \n {explanationsView}\n
      \n \n );\n};\nexport default ChartExplainer;\n","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"title\", \"titleId\"];\nimport * as React from \"react\";\nfunction StarIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M10.788 3.21c.448-1.077 1.976-1.077 2.424 0l2.082 5.007 5.404.433c1.164.093 1.636 1.545.749 2.305l-4.117 3.527 1.257 5.273c.271 1.136-.964 2.033-1.96 1.425L12 18.354 7.373 21.18c-.996.608-2.231-.29-1.96-1.425l1.257-5.273-4.117-3.527c-.887-.76-.415-2.212.749-2.305l5.404-.433 2.082-5.006z\",\n clipRule: \"evenodd\"\n }));\n}\nvar ForwardRef = React.forwardRef(StarIcon);\nexport default ForwardRef;","/**\n * view 中三层 group 分层 key\n */\nexport var LAYER;\n(function (LAYER) {\n /** 前景层 */\n LAYER[\"FORE\"] = \"fore\";\n /** 中间层 */\n LAYER[\"MID\"] = \"mid\";\n /** 背景层 */\n LAYER[\"BG\"] = \"bg\";\n})(LAYER || (LAYER = {}));\n/**\n * 组件在画布的布局方位 12 方位\n */\nexport var DIRECTION;\n(function (DIRECTION) {\n DIRECTION[\"TOP\"] = \"top\";\n DIRECTION[\"TOP_LEFT\"] = \"top-left\";\n DIRECTION[\"TOP_RIGHT\"] = \"top-right\";\n DIRECTION[\"RIGHT\"] = \"right\";\n DIRECTION[\"RIGHT_TOP\"] = \"right-top\";\n DIRECTION[\"RIGHT_BOTTOM\"] = \"right-bottom\";\n DIRECTION[\"LEFT\"] = \"left\";\n DIRECTION[\"LEFT_TOP\"] = \"left-top\";\n DIRECTION[\"LEFT_BOTTOM\"] = \"left-bottom\";\n DIRECTION[\"BOTTOM\"] = \"bottom\";\n DIRECTION[\"BOTTOM_LEFT\"] = \"bottom-left\";\n DIRECTION[\"BOTTOM_RIGHT\"] = \"bottom-right\";\n DIRECTION[\"RADIUS\"] = \"radius\";\n DIRECTION[\"CIRCLE\"] = \"circle\";\n // no direction information\n DIRECTION[\"NONE\"] = \"none\";\n})(DIRECTION || (DIRECTION = {}));\n/**\n * 组件的类型,可能会影响到布局算法\n */\nexport var COMPONENT_TYPE;\n(function (COMPONENT_TYPE) {\n /** axis 组件 */\n COMPONENT_TYPE[\"AXIS\"] = \"axis\";\n /** grid 组件 */\n COMPONENT_TYPE[\"GRID\"] = \"grid\";\n /** legend 组件 */\n COMPONENT_TYPE[\"LEGEND\"] = \"legend\";\n /** tooltip 组件 */\n COMPONENT_TYPE[\"TOOLTIP\"] = \"tooltip\";\n /** annotation 组件 */\n COMPONENT_TYPE[\"ANNOTATION\"] = \"annotation\";\n /** 缩略轴组件 */\n COMPONENT_TYPE[\"SLIDER\"] = \"slider\";\n /** 滚动条组件 */\n COMPONENT_TYPE[\"SCROLLBAR\"] = \"scrollbar\";\n /** 其他组件,自定义组件 */\n COMPONENT_TYPE[\"OTHER\"] = \"other\";\n})(COMPONENT_TYPE || (COMPONENT_TYPE = {}));\n/**\n * 三层 group 的 z index\n */\nexport var GROUP_Z_INDEX = {\n FORE: 3,\n MID: 2,\n BG: 1\n};\n/**\n * View 的生命周期阶段(和 3.x 的生命周期略有不同)\n * 我们需要先确定在那写场景需要用到生命周期,如果只是为了在生命周期插入一下什么组件之类的,那么在现有架构就是不需要的\n */\nexport var VIEW_LIFE_CIRCLE;\n(function (VIEW_LIFE_CIRCLE) {\n VIEW_LIFE_CIRCLE[\"BEFORE_RENDER\"] = \"beforerender\";\n VIEW_LIFE_CIRCLE[\"AFTER_RENDER\"] = \"afterrender\";\n VIEW_LIFE_CIRCLE[\"BEFORE_PAINT\"] = \"beforepaint\";\n VIEW_LIFE_CIRCLE[\"AFTER_PAINT\"] = \"afterpaint\";\n VIEW_LIFE_CIRCLE[\"BEFORE_CHANGE_DATA\"] = \"beforechangedata\";\n VIEW_LIFE_CIRCLE[\"AFTER_CHANGE_DATA\"] = \"afterchangedata\";\n VIEW_LIFE_CIRCLE[\"BEFORE_CLEAR\"] = \"beforeclear\";\n VIEW_LIFE_CIRCLE[\"AFTER_CLEAR\"] = \"afterclear\";\n VIEW_LIFE_CIRCLE[\"BEFORE_DESTROY\"] = \"beforedestroy\";\n VIEW_LIFE_CIRCLE[\"BEFORE_CHANGE_SIZE\"] = \"beforechangesize\";\n VIEW_LIFE_CIRCLE[\"AFTER_CHANGE_SIZE\"] = \"afterchangesize\";\n})(VIEW_LIFE_CIRCLE || (VIEW_LIFE_CIRCLE = {}));\n/**\n * geometry 的生命周期\n */\nexport var GEOMETRY_LIFE_CIRCLE;\n(function (GEOMETRY_LIFE_CIRCLE) {\n GEOMETRY_LIFE_CIRCLE[\"BEFORE_DRAW_ANIMATE\"] = \"beforeanimate\";\n GEOMETRY_LIFE_CIRCLE[\"AFTER_DRAW_ANIMATE\"] = \"afteranimate\";\n GEOMETRY_LIFE_CIRCLE[\"BEFORE_RENDER_LABEL\"] = \"beforerenderlabel\";\n GEOMETRY_LIFE_CIRCLE[\"AFTER_RENDER_LABEL\"] = \"afterrenderlabel\";\n})(GEOMETRY_LIFE_CIRCLE || (GEOMETRY_LIFE_CIRCLE = {}));\n/**\n * 绘图区的事件列表\n */\nexport var PLOT_EVENTS;\n(function (PLOT_EVENTS) {\n // mouse 事件\n PLOT_EVENTS[\"MOUSE_ENTER\"] = \"plot:mouseenter\";\n PLOT_EVENTS[\"MOUSE_DOWN\"] = \"plot:mousedown\";\n PLOT_EVENTS[\"MOUSE_MOVE\"] = \"plot:mousemove\";\n PLOT_EVENTS[\"MOUSE_UP\"] = \"plot:mouseup\";\n PLOT_EVENTS[\"MOUSE_LEAVE\"] = \"plot:mouseleave\";\n // 移动端事件\n PLOT_EVENTS[\"TOUCH_START\"] = \"plot:touchstart\";\n PLOT_EVENTS[\"TOUCH_MOVE\"] = \"plot:touchmove\";\n PLOT_EVENTS[\"TOUCH_END\"] = \"plot:touchend\";\n PLOT_EVENTS[\"TOUCH_CANCEL\"] = \"plot:touchcancel\";\n // click 事件\n PLOT_EVENTS[\"CLICK\"] = \"plot:click\";\n PLOT_EVENTS[\"DBLCLICK\"] = \"plot:dblclick\";\n PLOT_EVENTS[\"CONTEXTMENU\"] = \"plot:contextmenu\";\n PLOT_EVENTS[\"LEAVE\"] = \"plot:leave\";\n PLOT_EVENTS[\"ENTER\"] = \"plot:enter\";\n})(PLOT_EVENTS || (PLOT_EVENTS = {}));\n/**\n * Element 图形交互状态\n */\nexport var ELEMENT_STATE;\n(function (ELEMENT_STATE) {\n ELEMENT_STATE[\"ACTIVE\"] = \"active\";\n ELEMENT_STATE[\"INACTIVE\"] = \"inactive\";\n ELEMENT_STATE[\"SELECTED\"] = \"selected\";\n ELEMENT_STATE[\"DEFAULT\"] = \"default\";\n})(ELEMENT_STATE || (ELEMENT_STATE = {}));\n/** 参与分组的图形属性名 */\nexport var GROUP_ATTRS = ['color', 'shape', 'size'];\n/** 存储原始数据的字段名 */\nexport var FIELD_ORIGIN = '_origin';\n/** 最小的图表宽度 */\nexport var MIN_CHART_WIDTH = 1;\n/** 最小的图表高度 */\nexport var MIN_CHART_HEIGHT = 1;\n/** 辅助组件占图表的尺寸的最大比例:如图表上方的图例最多占图表高度的25% */\nexport var COMPONENT_MAX_VIEW_PERCENTAGE = 0.25;","/**\n * 创建DOM 节点\n * @param {String} str Dom 字符串\n * @return {HTMLElement} DOM 节点\n */\nvar TABLE;\nvar TABLE_TR;\nvar FRAGMENT_REG;\nvar CONTAINERS;\nfunction initConstants() {\n TABLE = document.createElement('table');\n TABLE_TR = document.createElement('tr');\n FRAGMENT_REG = /^\\s*<(\\w+|!)[^>]*>/;\n CONTAINERS = {\n tr: document.createElement('tbody'),\n tbody: TABLE,\n thead: TABLE,\n tfoot: TABLE,\n td: TABLE_TR,\n th: TABLE_TR,\n '*': document.createElement('div')\n };\n}\nexport default function createDom(str) {\n if (!TABLE) {\n initConstants();\n }\n var name = FRAGMENT_REG.test(str) && RegExp.$1;\n if (!name || !(name in CONTAINERS)) {\n name = '*';\n }\n var container = CONTAINERS[name];\n str = typeof str === 'string' ? str.replace(/(^\\s*)|(\\s*$)/g, '') : str;\n container.innerHTML = '' + str;\n var dom = container.childNodes[0];\n if (dom && container.contains(dom)) {\n container.removeChild(dom);\n }\n return dom;\n}","var ENGINES = {};\n/**\n * 通过名字获取渲染 engine\n * @param name 渲染引擎名字\n * @returns G engine\n */\nexport function getEngine(name) {\n var G = ENGINES[name];\n if (!G) {\n throw new Error(\"G engine '\".concat(name, \"' is not exist, please register it at first.\"));\n }\n return G;\n}\n/**\n * 注册渲染引擎\n * @param name\n * @param engine\n */\nexport function registerEngine(name, engine) {\n ENGINES[name] = engine;\n}","export default function modifyCSS(dom, css) {\n if (dom) {\n for (var key in css) {\n if (css.hasOwnProperty(key)) {\n dom.style[key] = css[key];\n }\n }\n }\n return dom;\n}","import { MIN_CHART_HEIGHT, MIN_CHART_WIDTH } from '../constant';\n/**\n * get the element's bounding size\n * @param ele dom element\n * @returns the element width and height\n */\nfunction getElementSize(ele) {\n var style = getComputedStyle(ele);\n return {\n width: (ele.clientWidth || parseInt(style.width, 10)) - parseInt(style.paddingLeft, 10) - parseInt(style.paddingRight, 10),\n height: (ele.clientHeight || parseInt(style.height, 10)) - parseInt(style.paddingTop, 10) - parseInt(style.paddingBottom, 10)\n };\n}\n/**\n * is value a valid number\n * @param v the input value\n * @returns whether it is a number\n */\nfunction isNumber(v) {\n return typeof v === 'number' && !isNaN(v);\n}\n/**\n * @ignore\n * calculate the chart size\n * @param ele DOM element\n * @param autoFit should auto fit\n * @param width chart width which is set by user\n * @param height chart height which is set by user\n * @returns the chart width and height\n */\nexport function getChartSize(ele, autoFit, width, height) {\n var w = width;\n var h = height;\n if (autoFit) {\n var size = getElementSize(ele);\n w = size.width ? size.width : w;\n h = size.height ? size.height : h;\n }\n return {\n width: Math.max(isNumber(w) ? w : MIN_CHART_WIDTH, MIN_CHART_WIDTH),\n height: Math.max(isNumber(h) ? h : MIN_CHART_HEIGHT, MIN_CHART_HEIGHT)\n };\n}\n/**\n * @ignore\n * remove html element from its parent\n * @param dom\n */\nexport function removeDom(dom) {\n var parent = dom.parentNode;\n if (parent) {\n parent.removeChild(dom);\n }\n}\n/** @ignore */\nexport { createDom, modifyCSS } from '@antv/dom-util';","import { __extends } from \"tslib\";\nimport EE from '@antv/event-emitter';\n/**\n * G2 Chart、View、Geometry 以及 Element 等的基类,提供事件以及一些通用的方法。\n */\nvar Base = /** @class */function (_super) {\n __extends(Base, _super);\n function Base(cfg) {\n var _this = _super.call(this) || this;\n /** 标识对象是否已销毁 */\n _this.destroyed = false;\n var _a = cfg.visible,\n visible = _a === void 0 ? true : _a;\n _this.visible = visible;\n return _this;\n }\n /**\n * 显示。\n */\n Base.prototype.show = function () {\n var visible = this.visible;\n if (!visible) {\n this.changeVisible(true);\n }\n };\n /**\n * 隐藏。\n */\n Base.prototype.hide = function () {\n var visible = this.visible;\n if (visible) {\n this.changeVisible(false);\n }\n };\n /**\n * 销毁。\n */\n Base.prototype.destroy = function () {\n this.off();\n this.destroyed = true;\n };\n /**\n * 显示或者隐藏。\n * @param visible\n * @returns\n */\n Base.prototype.changeVisible = function (visible) {\n if (this.visible === visible) {\n return;\n }\n this.visible = visible;\n };\n return Base;\n}(EE);\nexport default Base;","import * as _ from '@antv/util';\nimport { DEFAULT_Y } from '../constant';\nvar Adjust = /** @class */function () {\n function Adjust(cfg) {\n var xField = cfg.xField,\n yField = cfg.yField,\n _a = cfg.adjustNames,\n adjustNames = _a === void 0 ? ['x', 'y'] : _a,\n dimValuesMap = cfg.dimValuesMap;\n this.adjustNames = adjustNames;\n this.xField = xField;\n this.yField = yField;\n this.dimValuesMap = dimValuesMap;\n }\n /**\n * 查看维度是否是 adjust 字段\n * @param dim\n */\n Adjust.prototype.isAdjust = function (dim) {\n return this.adjustNames.indexOf(dim) >= 0;\n };\n Adjust.prototype.getAdjustRange = function (dim, dimValue, values) {\n var yField = this.yField;\n var index = values.indexOf(dimValue);\n var length = values.length;\n var pre;\n var next;\n // 没有 y 字段,但是需要根据 y 调整\n if (!yField && this.isAdjust('y')) {\n pre = 0;\n next = 1;\n } else if (length > 1) {\n // 如果以其开头,则取之,否则取他前面一个\n pre = values[index === 0 ? 0 : index - 1];\n // 如果以其结尾,则取之,否则取他后面一个\n next = values[index === length - 1 ? length - 1 : index + 1];\n if (index !== 0) {\n pre += (dimValue - pre) / 2;\n } else {\n pre -= (next - dimValue) / 2;\n }\n if (index !== length - 1) {\n next -= (next - dimValue) / 2;\n } else {\n next += (dimValue - values[length - 2]) / 2;\n }\n } else {\n pre = dimValue === 0 ? 0 : dimValue - 0.5;\n next = dimValue === 0 ? 1 : dimValue + 0.5;\n }\n return {\n pre: pre,\n next: next\n };\n };\n Adjust.prototype.adjustData = function (groupedDataArray, mergedData) {\n var _this = this;\n // 所有调整维度的值数组\n var dimValuesMap = this.getDimValues(mergedData);\n // 按照每一个分组来进行调整\n _.each(groupedDataArray, function (dataArray, index) {\n // 遍历所有数据集合\n // 每个分组中,分别按照不同的 dim 进行调整\n _.each(dimValuesMap, function (values, dim) {\n // 根据不同的度量分别调整位置\n _this.adjustDim(dim, values, dataArray, index);\n });\n });\n };\n /**\n * 对数据进行分组adjustData\n * @param data 数据\n * @param dim 分组的字段\n * @return 分组结果\n */\n Adjust.prototype.groupData = function (data, dim) {\n // 补齐数据空数据为默认值\n _.each(data, function (record) {\n if (record[dim] === undefined) {\n record[dim] = DEFAULT_Y;\n }\n });\n // 按照 dim 维度分组\n return _.groupBy(data, dim);\n };\n /** @override */\n Adjust.prototype.adjustDim = function (dim, values, data, index) {};\n /**\n * 获取可调整度量对应的值\n * @param mergedData 数据\n * @return 值的映射\n */\n Adjust.prototype.getDimValues = function (mergedData) {\n var _a = this,\n xField = _a.xField,\n yField = _a.yField;\n var dimValuesMap = _.assign({}, this.dimValuesMap);\n // 所有的维度\n var dims = [];\n if (xField && this.isAdjust('x')) {\n dims.push(xField);\n }\n if (yField && this.isAdjust('y')) {\n dims.push(yField);\n }\n dims.forEach(function (dim) {\n if (dimValuesMap && dimValuesMap[dim]) {\n return;\n }\n // 在每个维度上,所有的值\n dimValuesMap[dim] = _.valuesOfKey(mergedData, dim).sort(function (v1, v2) {\n return v1 - v2;\n });\n });\n // 只有一维的情况下,同时调整 y,赋予默认值\n if (!yField && this.isAdjust('y')) {\n var dim = 'y';\n dimValuesMap[dim] = [DEFAULT_Y, 1]; // 默认分布在 y 轴的 0 与 1 之间\n }\n\n return dimValuesMap;\n };\n return Adjust;\n}();\nexport default Adjust;","export var DEFAULT_Y = 0; // 默认的 y 的值\n// 偏移之后,间距\nexport var MARGIN_RATIO = 1 / 2;\nexport var DODGE_RATIO = 1 / 2;\n// 散点分开之后,距离边界的距离\nexport var GAP = 0.05;","import Adjust from './adjusts/adjust';\nvar ADJUST_MAP = {};\n/**\n * 根据类型获取 Adjust 类\n * @param type\n */\nvar getAdjust = function getAdjust(type) {\n return ADJUST_MAP[type.toLowerCase()];\n};\n/**\n * 注册自定义 Adjust\n * @param type\n * @param ctor\n */\nvar registerAdjust = function registerAdjust(type, ctor) {\n // 注册的时候,需要校验 type 重名,不区分大小写\n if (getAdjust(type)) {\n throw new Error(\"Adjust type '\" + type + \"' existed.\");\n }\n // 存储到 map 中\n ADJUST_MAP[type.toLowerCase()] = ctor;\n};\nexport { getAdjust, registerAdjust, Adjust };\nexport * from './interface';","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\n/* global Reflect, Promise */\n\nvar _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return _extendStatics(d, b);\n};\nexport function __extends(d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\nvar _assign = function __assign() {\n _assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return _assign.apply(this, arguments);\n};\nexport { _assign as __assign };\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n}\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\nexport function __param(paramIndex, decorator) {\n return function (target, key) {\n decorator(target, key, paramIndex);\n };\n}\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\nexport function __generator(thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\nexport function __createBinding(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}\nexport function __exportStar(m, exports) {\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function next() {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n}\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n}\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j];\n return r;\n}\n;\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []),\n i,\n q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i;\n function verb(n) {\n if (g[n]) i[n] = function (v) {\n return new Promise(function (a, b) {\n q.push([n, v, a, b]) > 1 || resume(n, v);\n });\n };\n }\n function resume(n, v) {\n try {\n step(g[n](v));\n } catch (e) {\n settle(q[0][3], e);\n }\n }\n function step(r) {\n r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);\n }\n function fulfill(value) {\n resume(\"next\", value);\n }\n function reject(value) {\n resume(\"throw\", value);\n }\n function settle(f, v) {\n if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]);\n }\n}\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) {\n throw e;\n }), verb(\"return\"), i[Symbol.iterator] = function () {\n return this;\n }, i;\n function verb(n, f) {\n i[n] = o[n] ? function (v) {\n return (p = !p) ? {\n value: __await(o[n](v)),\n done: n === \"return\"\n } : f ? f(v) : v;\n } : f;\n }\n}\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator],\n i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i);\n function verb(n) {\n i[n] = o[n] && function (v) {\n return new Promise(function (resolve, reject) {\n v = o[n](v), settle(resolve, reject, v.done, v.value);\n });\n };\n }\n function settle(resolve, reject, d, v) {\n Promise.resolve(v).then(function (v) {\n resolve({\n value: v,\n done: d\n });\n }, reject);\n }\n}\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n return cooked;\n}\n;\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result.default = mod;\n return result;\n}\nexport function __importDefault(mod) {\n return mod && mod.__esModule ? mod : {\n default: mod\n };\n}\nexport function __classPrivateFieldGet(receiver, privateMap) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to get private field on non-instance\");\n }\n return privateMap.get(receiver);\n}\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to set private field on non-instance\");\n }\n privateMap.set(receiver, value);\n return value;\n}","import { __extends } from \"tslib\";\nimport * as _ from '@antv/util';\nimport { DODGE_RATIO, MARGIN_RATIO } from '../constant';\nimport Adjust from './adjust';\nvar Dodge = /** @class */function (_super) {\n __extends(Dodge, _super);\n function Dodge(cfg) {\n var _this = _super.call(this, cfg) || this;\n _this.cacheMap = {};\n _this.adjustDataArray = [];\n _this.mergeData = [];\n var _a = cfg.marginRatio,\n marginRatio = _a === void 0 ? MARGIN_RATIO : _a,\n _b = cfg.dodgeRatio,\n dodgeRatio = _b === void 0 ? DODGE_RATIO : _b,\n dodgeBy = cfg.dodgeBy,\n intervalPadding = cfg.intervalPadding,\n dodgePadding = cfg.dodgePadding,\n xDimensionLength = cfg.xDimensionLength,\n groupNum = cfg.groupNum,\n defaultSize = cfg.defaultSize,\n maxColumnWidth = cfg.maxColumnWidth,\n minColumnWidth = cfg.minColumnWidth,\n columnWidthRatio = cfg.columnWidthRatio,\n customOffset = cfg.customOffset;\n _this.marginRatio = marginRatio;\n _this.dodgeRatio = dodgeRatio;\n _this.dodgeBy = dodgeBy;\n _this.intervalPadding = intervalPadding;\n _this.dodgePadding = dodgePadding;\n _this.xDimensionLegenth = xDimensionLength;\n _this.groupNum = groupNum;\n _this.defaultSize = defaultSize;\n _this.maxColumnWidth = maxColumnWidth;\n _this.minColumnWidth = minColumnWidth;\n _this.columnWidthRatio = columnWidthRatio;\n _this.customOffset = customOffset;\n return _this;\n }\n Dodge.prototype.process = function (groupDataArray) {\n var groupedDataArray = _.clone(groupDataArray);\n // 将数据数组展开一层\n var mergeData = _.flatten(groupedDataArray);\n var dodgeBy = this.dodgeBy;\n // 如果指定了分组 dim 的字段\n var adjustDataArray = dodgeBy ? _.group(mergeData, dodgeBy) : groupedDataArray;\n this.cacheMap = {};\n this.adjustDataArray = adjustDataArray;\n this.mergeData = mergeData;\n this.adjustData(adjustDataArray, mergeData);\n this.adjustDataArray = [];\n this.mergeData = [];\n return groupedDataArray;\n };\n Dodge.prototype.adjustDim = function (dim, values, data, frameIndex) {\n var _this = this;\n var customOffset = this.customOffset;\n var map = this.getDistribution(dim);\n var groupData = this.groupData(data, dim); // 根据值分组\n _.each(groupData, function (group, key) {\n var range;\n // xField 中只有一个值,不需要做 dodge\n if (values.length === 1) {\n range = {\n pre: values[0] - 1,\n next: values[0] + 1\n };\n } else {\n // 如果有多个,则需要获取调整的范围\n range = _this.getAdjustRange(dim, parseFloat(key), values);\n }\n _.each(group, function (d) {\n var value = d[dim];\n var valueArr = map[value];\n var valIndex = valueArr.indexOf(frameIndex);\n if (!_.isNil(customOffset)) {\n var pre = range.pre,\n next = range.next;\n d[dim] = _.isFunction(customOffset) ? customOffset(d, range) : (pre + next) / 2 + customOffset;\n } else {\n d[dim] = _this.getDodgeOffset(range, valIndex, valueArr.length);\n }\n });\n });\n return [];\n };\n Dodge.prototype.getDodgeOffset = function (range, idx, len) {\n var _a = this,\n dodgeRatio = _a.dodgeRatio,\n marginRatio = _a.marginRatio,\n intervalPadding = _a.intervalPadding,\n dodgePadding = _a.dodgePadding;\n var pre = range.pre,\n next = range.next;\n var tickLength = next - pre;\n var position;\n // 分多种输入情况\n if (!_.isNil(intervalPadding) && _.isNil(dodgePadding) && intervalPadding >= 0) {\n // 仅配置intervalPadding\n var offset = this.getIntervalOnlyOffset(len, idx);\n position = pre + offset;\n } else if (!_.isNil(dodgePadding) && _.isNil(intervalPadding) && dodgePadding >= 0) {\n // 仅配置dodgePadding\n var offset = this.getDodgeOnlyOffset(len, idx);\n position = pre + offset;\n } else if (!_.isNil(intervalPadding) && !_.isNil(dodgePadding) && intervalPadding >= 0 && dodgePadding >= 0) {\n // 同时配置intervalPadding和dodgePadding\n var offset = this.getIntervalAndDodgeOffset(len, idx);\n position = pre + offset;\n } else {\n // 默认情况\n var width = tickLength * dodgeRatio / len;\n var margin = marginRatio * width;\n var offset = 1 / 2 * (tickLength - len * width - (len - 1) * margin) + ((idx + 1) * width + idx * margin) - 1 / 2 * width - 1 / 2 * tickLength;\n position = (pre + next) / 2 + offset;\n }\n return position;\n };\n Dodge.prototype.getIntervalOnlyOffset = function (len, idx) {\n var _a = this,\n defaultSize = _a.defaultSize,\n intervalPadding = _a.intervalPadding,\n xDimensionLegenth = _a.xDimensionLegenth,\n groupNum = _a.groupNum,\n dodgeRatio = _a.dodgeRatio,\n maxColumnWidth = _a.maxColumnWidth,\n minColumnWidth = _a.minColumnWidth,\n columnWidthRatio = _a.columnWidthRatio;\n var normalizedIntervalPadding = intervalPadding / xDimensionLegenth;\n var normalizedDodgePadding = (1 - (groupNum - 1) * normalizedIntervalPadding) / groupNum * dodgeRatio / (len - 1);\n var geomWidth = ((1 - normalizedIntervalPadding * (groupNum - 1)) / groupNum - normalizedDodgePadding * (len - 1)) / len;\n // 根据columnWidthRatio/defaultSize/maxColumnWidth/minColumnWidth调整宽度\n geomWidth = !_.isNil(columnWidthRatio) ? 1 / groupNum / len * columnWidthRatio : geomWidth;\n if (!_.isNil(maxColumnWidth)) {\n var normalizedMaxWidht = maxColumnWidth / xDimensionLegenth;\n geomWidth = Math.min(geomWidth, normalizedMaxWidht);\n }\n if (!_.isNil(minColumnWidth)) {\n var normalizedMinWidht = minColumnWidth / xDimensionLegenth;\n geomWidth = Math.max(geomWidth, normalizedMinWidht);\n }\n geomWidth = defaultSize ? defaultSize / xDimensionLegenth : geomWidth;\n // 调整组内间隔\n normalizedDodgePadding = ((1 - (groupNum - 1) * normalizedIntervalPadding) / groupNum - len * geomWidth) / (len - 1);\n var offset = ((1 / 2 + idx) * geomWidth + idx * normalizedDodgePadding + 1 / 2 * normalizedIntervalPadding) * groupNum - normalizedIntervalPadding / 2;\n return offset;\n };\n Dodge.prototype.getDodgeOnlyOffset = function (len, idx) {\n var _a = this,\n defaultSize = _a.defaultSize,\n dodgePadding = _a.dodgePadding,\n xDimensionLegenth = _a.xDimensionLegenth,\n groupNum = _a.groupNum,\n marginRatio = _a.marginRatio,\n maxColumnWidth = _a.maxColumnWidth,\n minColumnWidth = _a.minColumnWidth,\n columnWidthRatio = _a.columnWidthRatio;\n var normalizedDodgePadding = dodgePadding / xDimensionLegenth;\n var normalizedIntervalPadding = 1 * marginRatio / (groupNum - 1);\n var geomWidth = ((1 - normalizedIntervalPadding * (groupNum - 1)) / groupNum - normalizedDodgePadding * (len - 1)) / len;\n // 根据columnWidthRatio/defaultSize/maxColumnWidth/minColumnWidth调整宽度\n geomWidth = columnWidthRatio ? 1 / groupNum / len * columnWidthRatio : geomWidth;\n if (!_.isNil(maxColumnWidth)) {\n var normalizedMaxWidht = maxColumnWidth / xDimensionLegenth;\n geomWidth = Math.min(geomWidth, normalizedMaxWidht);\n }\n if (!_.isNil(minColumnWidth)) {\n var normalizedMinWidht = minColumnWidth / xDimensionLegenth;\n geomWidth = Math.max(geomWidth, normalizedMinWidht);\n }\n geomWidth = defaultSize ? defaultSize / xDimensionLegenth : geomWidth;\n // 调整组间距\n normalizedIntervalPadding = (1 - (geomWidth * len + normalizedDodgePadding * (len - 1)) * groupNum) / (groupNum - 1);\n var offset = ((1 / 2 + idx) * geomWidth + idx * normalizedDodgePadding + 1 / 2 * normalizedIntervalPadding) * groupNum - normalizedIntervalPadding / 2;\n return offset;\n };\n Dodge.prototype.getIntervalAndDodgeOffset = function (len, idx) {\n var _a = this,\n intervalPadding = _a.intervalPadding,\n dodgePadding = _a.dodgePadding,\n xDimensionLegenth = _a.xDimensionLegenth,\n groupNum = _a.groupNum;\n var normalizedIntervalPadding = intervalPadding / xDimensionLegenth;\n var normalizedDodgePadding = dodgePadding / xDimensionLegenth;\n var geomWidth = ((1 - normalizedIntervalPadding * (groupNum - 1)) / groupNum - normalizedDodgePadding * (len - 1)) / len;\n var offset = ((1 / 2 + idx) * geomWidth + idx * normalizedDodgePadding + 1 / 2 * normalizedIntervalPadding) * groupNum - normalizedIntervalPadding / 2;\n return offset;\n };\n Dodge.prototype.getDistribution = function (dim) {\n var groupedDataArray = this.adjustDataArray;\n var cacheMap = this.cacheMap;\n var map = cacheMap[dim];\n if (!map) {\n map = {};\n _.each(groupedDataArray, function (data, index) {\n var values = _.valuesOfKey(data, dim);\n if (!values.length) {\n values.push(0);\n }\n _.each(values, function (val) {\n if (!map[val]) {\n map[val] = [];\n }\n map[val].push(index);\n });\n });\n cacheMap[dim] = map;\n }\n return map;\n };\n return Dodge;\n}(Adjust);\nexport default Dodge;","import { __extends } from \"tslib\";\nimport * as _ from '@antv/util';\nimport { GAP } from '../constant';\nimport Adjust from './adjust';\nfunction randomNumber(min, max) {\n return (max - min) * Math.random() + min;\n}\nvar Jitter = /** @class */function (_super) {\n __extends(Jitter, _super);\n function Jitter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Jitter.prototype.process = function (groupDataArray) {\n var groupedDataArray = _.clone(groupDataArray);\n // 之前分组之后的数据,然后有合并回去(和分组前可以理解成是一样的)\n var mergeData = _.flatten(groupedDataArray);\n // 返回值\n this.adjustData(groupedDataArray, mergeData);\n return groupedDataArray;\n };\n /**\n * 当前数据分组(index)中,按照维度 dim 进行 jitter 调整\n * @param dim\n * @param values\n * @param dataArray\n */\n Jitter.prototype.adjustDim = function (dim, values, dataArray) {\n var _this = this;\n // 在每一个分组中,将数据再按照 dim 分组,用于散列\n var groupDataArray = this.groupData(dataArray, dim);\n return _.each(groupDataArray, function (data, dimValue) {\n return _this.adjustGroup(data, dim, parseFloat(dimValue), values);\n });\n };\n // 随机出来的字段值\n Jitter.prototype.getAdjustOffset = function (range) {\n var pre = range.pre,\n next = range.next;\n // 随机的范围\n var margin = (next - pre) * GAP;\n return randomNumber(pre + margin, next - margin);\n };\n // adjust group data\n Jitter.prototype.adjustGroup = function (group, dim, dimValue, values) {\n var _this = this;\n // 调整范围\n var range = this.getAdjustRange(dim, dimValue, values);\n _.each(group, function (data) {\n data[dim] = _this.getAdjustOffset(range); // 获取调整的位置\n });\n\n return group;\n };\n return Jitter;\n}(Adjust);\nexport default Jitter;","import { __assign, __extends } from \"tslib\";\nimport * as _ from '@antv/util';\nimport Adjust from './adjust';\nvar Cache = _.Cache;\nvar Stack = /** @class */function (_super) {\n __extends(Stack, _super);\n function Stack(cfg) {\n var _this = _super.call(this, cfg) || this;\n var _a = cfg.adjustNames,\n adjustNames = _a === void 0 ? ['y'] : _a,\n _b = cfg.height,\n height = _b === void 0 ? NaN : _b,\n _c = cfg.size,\n size = _c === void 0 ? 10 : _c,\n _d = cfg.reverseOrder,\n reverseOrder = _d === void 0 ? false : _d;\n _this.adjustNames = adjustNames;\n _this.height = height;\n _this.size = size;\n _this.reverseOrder = reverseOrder;\n return _this;\n }\n /**\n * 方法入参是经过数据分组、数据数字化之后的二维数组\n * @param groupDataArray 分组之后的数据\n */\n Stack.prototype.process = function (groupDataArray) {\n var _a = this,\n yField = _a.yField,\n reverseOrder = _a.reverseOrder;\n // 如果有指定 y 字段,那么按照 y 字段来 stack\n // 否则,按照高度均分\n var d = yField ? this.processStack(groupDataArray) : this.processOneDimStack(groupDataArray);\n return reverseOrder ? this.reverse(d) : d;\n };\n Stack.prototype.reverse = function (groupedDataArray) {\n return groupedDataArray.slice(0).reverse();\n };\n Stack.prototype.processStack = function (groupDataArray) {\n var _a = this,\n xField = _a.xField,\n yField = _a.yField,\n reverseOrder = _a.reverseOrder;\n // 层叠顺序翻转\n var groupedDataArray = reverseOrder ? this.reverse(groupDataArray) : groupDataArray;\n // 用来缓存,正数和负数的堆叠问题\n var positive = new Cache();\n var negative = new Cache();\n return groupedDataArray.map(function (dataArray) {\n return dataArray.map(function (data) {\n var _a;\n var x = _.get(data, xField, 0);\n var y = _.get(data, [yField]);\n var xKey = x.toString();\n // todo 是否应该取 _origin?因为 y 可能取到的值不正确,比如先 symmetric,再 stack!\n y = _.isArray(y) ? y[1] : y;\n if (!_.isNil(y)) {\n var cache = y >= 0 ? positive : negative;\n if (!cache.has(xKey)) {\n cache.set(xKey, 0);\n }\n var xValue = cache.get(xKey);\n var newXValue = y + xValue;\n // 存起来\n cache.set(xKey, newXValue);\n return __assign(__assign({}, data), (_a = {}, _a[yField] = [xValue, newXValue], _a));\n }\n // 没有修改,则直接返回\n return data;\n });\n });\n };\n Stack.prototype.processOneDimStack = function (groupDataArray) {\n var _this = this;\n var _a = this,\n xField = _a.xField,\n height = _a.height,\n reverseOrder = _a.reverseOrder;\n var yField = 'y';\n // 如果层叠的顺序翻转\n var groupedDataArray = reverseOrder ? this.reverse(groupDataArray) : groupDataArray;\n // 缓存累加数据\n var cache = new Cache();\n return groupedDataArray.map(function (dataArray) {\n return dataArray.map(function (data) {\n var _a;\n var size = _this.size;\n var xValue = data[xField];\n // todo 没有看到这个 stack 计算原理\n var stackHeight = size * 2 / height;\n if (!cache.has(xValue)) {\n cache.set(xValue, stackHeight / 2); // 初始值大小\n }\n\n var stackValue = cache.get(xValue);\n // 增加一层 stackHeight\n cache.set(xValue, stackValue + stackHeight);\n return __assign(__assign({}, data), (_a = {}, _a[yField] = stackValue, _a));\n });\n });\n };\n return Stack;\n}(Adjust);\nexport default Stack;","import { __assign, __extends } from \"tslib\";\nimport * as _ from '@antv/util';\nimport Adjust from './adjust';\nvar Symmetric = /** @class */function (_super) {\n __extends(Symmetric, _super);\n function Symmetric() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Symmetric.prototype.process = function (groupDataArray) {\n var mergeData = _.flatten(groupDataArray);\n var _a = this,\n xField = _a.xField,\n yField = _a.yField;\n // 每个 x 值对应的 最大值\n var cache = this.getXValuesMaxMap(mergeData);\n // 所有数据的最大的值\n var max = Math.max.apply(Math, Object.keys(cache).map(function (key) {\n return cache[key];\n }));\n return _.map(groupDataArray, function (dataArray) {\n return _.map(dataArray, function (data) {\n var _a, _b;\n var yValue = data[yField];\n var xValue = data[xField];\n // 数组处理逻辑\n if (_.isArray(yValue)) {\n var off_1 = (max - cache[xValue]) / 2;\n return __assign(__assign({}, data), (_a = {}, _a[yField] = _.map(yValue, function (y) {\n return off_1 + y;\n }), _a));\n }\n // 非数组处理逻辑\n var offset = (max - yValue) / 2;\n return __assign(__assign({}, data), (_b = {}, _b[yField] = [offset, yValue + offset], _b));\n });\n });\n };\n // 获取每个 x 对应的最大的值\n Symmetric.prototype.getXValuesMaxMap = function (mergeData) {\n var _this = this;\n var _a = this,\n xField = _a.xField,\n yField = _a.yField;\n // 根据 xField 的值进行分组\n var groupDataArray = _.groupBy(mergeData, function (data) {\n return data[xField];\n });\n // 获取每个 xField 值中的最大值\n return _.mapValues(groupDataArray, function (dataArray) {\n return _this.getDimMaxValue(dataArray, yField);\n });\n };\n Symmetric.prototype.getDimMaxValue = function (mergeData, dim) {\n // 所有的 value 值\n var dimValues = _.map(mergeData, function (data) {\n return _.get(data, dim, []);\n });\n // 将数组打平(dim value 有可能是数组,比如 stack 之后的)\n var flattenValues = _.flatten(dimValues);\n // 求出数组的最大值\n return Math.max.apply(Math, flattenValues);\n };\n return Symmetric;\n}(Adjust);\nexport default Symmetric;","import { getAdjust, registerAdjust } from './factory';\nimport Adjust from './adjusts/adjust';\nimport Dodge from './adjusts/dodge';\nimport Jitter from './adjusts/jitter';\nimport Stack from './adjusts/stack';\nimport Symmetric from './adjusts/symmetric';\n// 注册内置的 adjust\nregisterAdjust('Dodge', Dodge);\nregisterAdjust('Jitter', Jitter);\nregisterAdjust('Stack', Stack);\nregisterAdjust('Symmetric', Symmetric);\n// 最终暴露给外部的方法\nexport { getAdjust, registerAdjust, Adjust };\nexport * from './interface';","import { isArray, isNil, isString } from '@antv/util';\n// todo 这个到底目的是什么?\nvar toScaleString = function toScaleString(scale, value) {\n if (isString(value)) {\n return value;\n }\n return scale.invert(scale.scale(value));\n};\n/**\n * 所有视觉通道属性的基类\n * @class Base\n */\nvar Attribute = /** @class */function () {\n function Attribute(cfg) {\n this.names = [];\n this.scales = [];\n this.linear = false;\n this.values = [];\n this.callback = function () {\n return [];\n };\n // 解析配置\n this._parseCfg(cfg);\n }\n /**\n * 映射的值组成的数组\n * @param params 对应 scale 顺序的值传入\n */\n Attribute.prototype.mapping = function () {\n var _this = this;\n var params = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n params[_i] = arguments[_i];\n }\n var values = params.map(function (param, idx) {\n return _this._toOriginParam(param, _this.scales[idx]);\n });\n return this.callback.apply(this, values);\n };\n /**\n * 如果进行线性映射,返回对应的映射值\n * @param percent\n */\n Attribute.prototype.getLinearValue = function (percent) {\n // 分段数量\n var steps = this.values.length - 1;\n var step = Math.floor(steps * percent);\n var leftPercent = steps * percent - step;\n // todo 不懂这个逻辑\n var start = this.values[step];\n var end = step === steps ? start : this.values[step + 1];\n // 线性方程\n return start + (end - start) * leftPercent;\n };\n /**\n * 根据度量获取属性名\n */\n Attribute.prototype.getNames = function () {\n var scales = this.scales;\n var names = this.names;\n var length = Math.min(scales.length, names.length);\n var rst = [];\n for (var i = 0; i < length; i += 1) {\n rst.push(names[i]);\n }\n return rst;\n };\n /**\n * 获取所有的维度名\n */\n Attribute.prototype.getFields = function () {\n return this.scales.map(function (scale) {\n return scale.field;\n });\n };\n /**\n * 根据名称获取度量\n * @param name\n */\n Attribute.prototype.getScale = function (name) {\n return this.scales[this.names.indexOf(name)];\n };\n /**\n * 默认的回调函数(用户没有自定义 callback,或者用户自定义 callback 返回空的时候,使用 values 映射)\n * @param params\n */\n Attribute.prototype.defaultCallback = function () {\n var _this = this;\n var params = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n params[_i] = arguments[_i];\n }\n // 没有 params 的情况,是指没有指定 fields,直接返回配置的 values 常量\n if (params.length === 0) {\n return this.values;\n }\n return params.map(function (param, idx) {\n var scale = _this.scales[idx];\n return scale.type === 'identity' ? scale.values[0] : _this._getAttributeValue(scale, param);\n });\n };\n // 解析配置\n Attribute.prototype._parseCfg = function (cfg) {\n var _this = this;\n var _a = cfg.type,\n type = _a === void 0 ? 'base' : _a,\n _b = cfg.names,\n names = _b === void 0 ? [] : _b,\n _c = cfg.scales,\n scales = _c === void 0 ? [] : _c,\n _d = cfg.values,\n values = _d === void 0 ? [] : _d,\n callback = cfg.callback;\n this.type = type;\n this.scales = scales;\n this.values = values;\n this.names = names;\n // 构造 callback 方法\n this.callback = function () {\n var params = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n params[_i] = arguments[_i];\n }\n /**\n * 当用户设置的 callback 返回 null 时, 应该返回默认 callback 中的值\n */\n if (callback) {\n // 使用用户返回的值处理\n var ret = callback.apply(void 0, params);\n if (!isNil(ret)) {\n return [ret];\n }\n }\n // 没有 callback 或者用户 callback 返回值为空,则使用默认的逻辑处理\n return _this.defaultCallback.apply(_this, params);\n };\n };\n // 获取属性值,将值映射到视觉通道\n Attribute.prototype._getAttributeValue = function (scale, value) {\n // 如果是非线性的字段,直接从 values 中取值即可\n if (scale.isCategory && !this.linear) {\n // 离散 scale 变换成索引\n var idx = scale.translate(value);\n return this.values[idx % this.values.length];\n }\n // 线性则使用线性值\n var percent = scale.scale(value);\n return this.getLinearValue(percent);\n };\n /**\n * 通过 scale 拿到数据对应的原始的参数\n * @param param\n * @param scale\n * @private\n */\n Attribute.prototype._toOriginParam = function (param, scale) {\n // 是线性,直接返回\n // 非线性,使用 scale 变换\n return !scale.isLinear ? isArray(param) ? param.map(function (p) {\n return toScaleString(scale, p);\n }) : toScaleString(scale, param) : param;\n };\n return Attribute;\n}();\nexport default Attribute;","import { map, memoize, isString, each } from '@antv/util';\nvar RGB_REG = /rgba?\\(([\\s.,0-9]+)\\)/;\nvar regexLG = /^l\\s*\\(\\s*([\\d.]+)\\s*\\)\\s*(.*)/i;\nvar regexRG = /^r\\s*\\(\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*\\)\\s*(.*)/i;\nvar regexColorStop = /[\\d.]+:(#[^\\s]+|[^\\)]+\\))/gi;\nvar isGradientColor = function isGradientColor(val) {\n return /^[r,R,L,l]{1}[\\s]*\\(/.test(val);\n};\n// 创建辅助 tag 取颜色\nvar createTmp = function createTmp() {\n var i = document.createElement('i');\n i.title = 'Web Colour Picker';\n i.style.display = 'none';\n document.body.appendChild(i);\n return i;\n};\n// 获取颜色之间的插值\nvar getValue = function getValue(start, end, percent, index) {\n return start[index] + (end[index] - start[index]) * percent;\n};\n// 数组转换成颜色\nfunction arr2rgb(arr) {\n return \"#\" + toHex(arr[0]) + toHex(arr[1]) + toHex(arr[2]);\n}\n// rgb 颜色转换成数组\nvar rgb2arr = function rgb2arr(str) {\n return [parseInt(str.substr(1, 2), 16), parseInt(str.substr(3, 2), 16), parseInt(str.substr(5, 2), 16)];\n};\n// 将数值从 0-255 转换成16进制字符串\nvar toHex = function toHex(value) {\n var x16Value = Math.round(value).toString(16);\n return x16Value.length === 1 ? \"0\" + x16Value : x16Value;\n};\n// 计算颜色\nvar calColor = function calColor(points, percent) {\n var fixedPercent = isNaN(Number(percent)) || percent < 0 ? 0 : percent > 1 ? 1 : Number(percent);\n var steps = points.length - 1;\n var step = Math.floor(steps * fixedPercent);\n var left = steps * fixedPercent - step;\n var start = points[step];\n var end = step === steps ? start : points[step + 1];\n return arr2rgb([getValue(start, end, left, 0), getValue(start, end, left, 1), getValue(start, end, left, 2)]);\n};\n// 用于给 toRGB 的缓存(使用 memoize 方法替换)\n// const colorCache = {};\nvar iEl;\n/**\n * 将颜色转换到 rgb 的格式\n * @param {color} color 颜色\n * @return 将颜色转换到 '#ffffff' 的格式\n */\nvar toRGB = function toRGB(color) {\n // 如果已经是 rgb的格式\n if (color[0] === '#' && color.length === 7) {\n return color;\n }\n if (!iEl) {\n // 防止防止在页头报错\n iEl = createTmp();\n }\n iEl.style.color = color;\n var rst = document.defaultView.getComputedStyle(iEl, '').getPropertyValue('color');\n var matches = RGB_REG.exec(rst);\n var cArray = matches[1].split(/\\s*,\\s*/).map(function (s) {\n return Number(s);\n });\n rst = arr2rgb(cArray);\n return rst;\n};\n/**\n * 获取渐变函数\n * @param colors 多个颜色\n * @return 颜色值\n */\nvar gradient = function gradient(colors) {\n var colorArray = isString(colors) ? colors.split('-') : colors;\n var points = map(colorArray, function (color) {\n return rgb2arr(color.indexOf('#') === -1 ? toRGB(color) : color);\n });\n // 返回一个函数\n return function (percent) {\n return calColor(points, percent);\n };\n};\nvar toCSSGradient = function toCSSGradient(gradientColor) {\n if (isGradientColor(gradientColor)) {\n var cssColor_1;\n var steps = void 0;\n if (gradientColor[0] === 'l') {\n // 线性渐变\n var arr = regexLG.exec(gradientColor);\n var angle = +arr[1] + 90; // css 和 g 的渐变起始角度不同\n steps = arr[2];\n cssColor_1 = \"linear-gradient(\" + angle + \"deg, \";\n } else if (gradientColor[0] === 'r') {\n // 径向渐变\n cssColor_1 = 'radial-gradient(';\n var arr = regexRG.exec(gradientColor);\n steps = arr[4];\n }\n var colorStops_1 = steps.match(regexColorStop);\n each(colorStops_1, function (item, index) {\n var itemArr = item.split(':');\n cssColor_1 += itemArr[1] + \" \" + itemArr[0] * 100 + \"%\";\n if (index !== colorStops_1.length - 1) {\n cssColor_1 += ', ';\n }\n });\n cssColor_1 += ')';\n return cssColor_1;\n }\n return gradientColor;\n};\nexport default {\n rgb2arr: rgb2arr,\n gradient: gradient,\n toRGB: memoize(toRGB),\n toCSSGradient: toCSSGradient\n};","import { __extends } from \"tslib\";\nimport colorUtil from '@antv/color-util';\nimport { isString } from '@antv/util';\nimport Attribute from './base';\nvar Color = /** @class */function (_super) {\n __extends(Color, _super);\n function Color(cfg) {\n var _this = _super.call(this, cfg) || this;\n _this.type = 'color';\n _this.names = ['color'];\n if (isString(_this.values)) {\n _this.linear = true;\n }\n _this.gradient = colorUtil.gradient(_this.values);\n return _this;\n }\n /**\n * @override\n */\n Color.prototype.getLinearValue = function (percent) {\n return this.gradient(percent);\n };\n return Color;\n}(Attribute);\nexport default Color;","import { __extends } from \"tslib\";\nimport Attribute from './base';\nvar Opacity = /** @class */function (_super) {\n __extends(Opacity, _super);\n function Opacity(cfg) {\n var _this = _super.call(this, cfg) || this;\n _this.type = 'opacity';\n _this.names = ['opacity'];\n return _this;\n }\n return Opacity;\n}(Attribute);\nexport default Opacity;","import { __extends } from \"tslib\";\nimport { isArray, isNil } from '@antv/util';\nimport Attribute from './base';\nvar Position = /** @class */function (_super) {\n __extends(Position, _super);\n function Position(cfg) {\n var _this = _super.call(this, cfg) || this;\n _this.names = ['x', 'y'];\n _this.type = 'position';\n return _this;\n }\n Position.prototype.mapping = function (x, y) {\n var _a = this.scales,\n scaleX = _a[0],\n scaleY = _a[1];\n if (isNil(x) || isNil(y)) {\n return [];\n }\n return [isArray(x) ? x.map(function (xi) {\n return scaleX.scale(xi);\n }) : scaleX.scale(x), isArray(y) ? y.map(function (yi) {\n return scaleY.scale(yi);\n }) : scaleY.scale(y)];\n };\n return Position;\n}(Attribute);\nexport default Position;","import { __extends } from \"tslib\";\nimport Attribute from './base';\nvar Shape = /** @class */function (_super) {\n __extends(Shape, _super);\n function Shape(cfg) {\n var _this = _super.call(this, cfg) || this;\n _this.type = 'shape';\n _this.names = ['shape'];\n return _this;\n }\n /**\n * @override\n */\n Shape.prototype.getLinearValue = function (percent) {\n var idx = Math.round((this.values.length - 1) * percent);\n return this.values[idx];\n };\n return Shape;\n}(Attribute);\nexport default Shape;","import { __extends } from \"tslib\";\nimport Attribute from './base';\nvar Size = /** @class */function (_super) {\n __extends(Size, _super);\n function Size(cfg) {\n var _this = _super.call(this, cfg) || this;\n _this.type = 'size';\n _this.names = ['size'];\n return _this;\n }\n return Size;\n}(Attribute);\nexport default Size;","var methodCache = {};\n/**\n * 获取计算 ticks 的方法\n * @param key 键值\n * @returns 计算 ticks 的方法\n */\nexport function getTickMethod(key) {\n return methodCache[key];\n}\n/**\n * 注册计算 ticks 的方法\n * @param key 键值\n * @param method 方法\n */\nexport function registerTickMethod(key, method) {\n methodCache[key] = method;\n}","import { assign, isEmpty, isFunction, isNil, isNumber, isObject, isString, map } from '@antv/util';\nimport { getTickMethod } from './tick-method/register';\nvar Scale = /** @class */function () {\n function Scale(cfg) {\n /**\n * 度量的类型\n */\n this.type = 'base';\n /**\n * 是否分类类型的度量\n */\n this.isCategory = false;\n /**\n * 是否线性度量,有linear, time 度量\n */\n this.isLinear = false;\n /**\n * 是否连续类型的度量,linear,time,log, pow, quantile, quantize 都支持\n */\n this.isContinuous = false;\n /**\n * 是否是常量的度量,传入和传出一致\n */\n this.isIdentity = false;\n this.values = [];\n this.range = [0, 1];\n this.ticks = [];\n this.__cfg__ = cfg;\n this.initCfg();\n this.init();\n }\n // 对于原始值的必要转换,如分类、时间字段需转换成数值,用transform/map命名可能更好\n Scale.prototype.translate = function (v) {\n return v;\n };\n /** 重新初始化 */\n Scale.prototype.change = function (cfg) {\n // 覆盖配置项,而不替代\n assign(this.__cfg__, cfg);\n this.init();\n };\n Scale.prototype.clone = function () {\n return this.constructor(this.__cfg__);\n };\n /** 获取坐标轴需要的ticks */\n Scale.prototype.getTicks = function () {\n var _this = this;\n return map(this.ticks, function (tick, idx) {\n if (isObject(tick)) {\n // 仅当符合Tick类型时才有意义\n return tick;\n }\n return {\n text: _this.getText(tick, idx),\n tickValue: tick,\n value: _this.scale(tick)\n };\n });\n };\n /** 获取Tick的格式化结果 */\n Scale.prototype.getText = function (value, key) {\n var formatter = this.formatter;\n var res = formatter ? formatter(value, key) : value;\n if (isNil(res) || !isFunction(res.toString)) {\n return '';\n }\n return res.toString();\n };\n // 获取配置项中的值,当前 scale 上的值可能会被修改\n Scale.prototype.getConfig = function (key) {\n return this.__cfg__[key];\n };\n // scale初始化\n Scale.prototype.init = function () {\n assign(this, this.__cfg__);\n this.setDomain();\n if (isEmpty(this.getConfig('ticks'))) {\n this.ticks = this.calculateTicks();\n }\n };\n // 子类上覆盖某些属性,不能直接在类上声明,否则会被覆盖\n Scale.prototype.initCfg = function () {};\n Scale.prototype.setDomain = function () {};\n Scale.prototype.calculateTicks = function () {\n var tickMethod = this.tickMethod;\n var ticks = [];\n if (isString(tickMethod)) {\n var method = getTickMethod(tickMethod);\n if (!method) {\n throw new Error('There is no method to to calculate ticks!');\n }\n ticks = method(this);\n } else if (isFunction(tickMethod)) {\n ticks = tickMethod(this);\n }\n return ticks;\n };\n // range 的最小值\n Scale.prototype.rangeMin = function () {\n return this.range[0];\n };\n // range 的最大值\n Scale.prototype.rangeMax = function () {\n return this.range[1];\n };\n /** 定义域转 0~1 */\n Scale.prototype.calcPercent = function (value, min, max) {\n if (isNumber(value)) {\n return (value - min) / (max - min);\n }\n return NaN;\n };\n /** 0~1转定义域 */\n Scale.prototype.calcValue = function (percent, min, max) {\n return min + percent * (max - min);\n };\n return Scale;\n}();\nexport default Scale;","import { __extends, __spreadArrays } from \"tslib\";\nimport { isNil, isNumber } from '@antv/util';\nimport Base from '../base';\n/**\n * 分类度量\n * @class\n */\nvar Category = /** @class */function (_super) {\n __extends(Category, _super);\n function Category() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'cat';\n _this.isCategory = true;\n return _this;\n }\n Category.prototype.buildIndexMap = function () {\n if (!this.translateIndexMap) {\n this.translateIndexMap = new Map();\n // 重新构建缓存\n for (var i = 0; i < this.values.length; i++) {\n this.translateIndexMap.set(this.values[i], i);\n }\n }\n };\n Category.prototype.translate = function (value) {\n // 按需构建 map\n this.buildIndexMap();\n // 找得到\n var idx = this.translateIndexMap.get(value);\n if (idx === undefined) {\n idx = isNumber(value) ? value : NaN;\n }\n return idx;\n };\n Category.prototype.scale = function (value) {\n var order = this.translate(value);\n // 分类数据允许 0.5 范围内调整\n // if (order < this.min - 0.5 || order > this.max + 0.5) {\n // return NaN;\n // }\n var percent = this.calcPercent(order, this.min, this.max);\n return this.calcValue(percent, this.rangeMin(), this.rangeMax());\n };\n Category.prototype.invert = function (scaledValue) {\n var domainRange = this.max - this.min;\n var percent = this.calcPercent(scaledValue, this.rangeMin(), this.rangeMax());\n var idx = Math.round(domainRange * percent) + this.min;\n if (idx < this.min || idx > this.max) {\n return NaN;\n }\n return this.values[idx];\n };\n Category.prototype.getText = function (value) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var v = value;\n // value为index\n if (isNumber(value) && !this.values.includes(value)) {\n v = this.values[v];\n }\n return _super.prototype.getText.apply(this, __spreadArrays([v], args));\n };\n // 复写属性\n Category.prototype.initCfg = function () {\n this.tickMethod = 'cat';\n };\n // 设置 min, max\n Category.prototype.setDomain = function () {\n // 用户有可能设置 min\n if (isNil(this.getConfig('min'))) {\n this.min = 0;\n }\n if (isNil(this.getConfig('max'))) {\n var size = this.values.length;\n this.max = size > 1 ? size - 1 : size;\n }\n // scale.init 的时候清除缓存\n if (this.translateIndexMap) {\n this.translateIndexMap = undefined;\n }\n };\n return Category;\n}(Base);\nexport default Category;","var token = /d{1,4}|M{1,4}|YY(?:YY)?|S{1,3}|Do|ZZ|Z|([HhMsDm])\\1?|[aA]|\"[^\"]*\"|'[^']*'/g;\nvar twoDigitsOptional = \"\\\\d\\\\d?\";\nvar twoDigits = \"\\\\d\\\\d\";\nvar threeDigits = \"\\\\d{3}\";\nvar fourDigits = \"\\\\d{4}\";\nvar word = \"[^\\\\s]+\";\nvar literal = /\\[([^]*?)\\]/gm;\nfunction shorten(arr, sLen) {\n var newArr = [];\n for (var i = 0, len = arr.length; i < len; i++) {\n newArr.push(arr[i].substr(0, sLen));\n }\n return newArr;\n}\nvar monthUpdate = function monthUpdate(arrName) {\n return function (v, i18n) {\n var lowerCaseArr = i18n[arrName].map(function (v) {\n return v.toLowerCase();\n });\n var index = lowerCaseArr.indexOf(v.toLowerCase());\n if (index > -1) {\n return index;\n }\n return null;\n };\n};\nfunction assign(origObj) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n var obj = args_1[_a];\n for (var key in obj) {\n // @ts-ignore ex\n origObj[key] = obj[key];\n }\n }\n return origObj;\n}\nvar dayNames = [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"];\nvar monthNames = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"];\nvar monthNamesShort = shorten(monthNames, 3);\nvar dayNamesShort = shorten(dayNames, 3);\nvar defaultI18n = {\n dayNamesShort: dayNamesShort,\n dayNames: dayNames,\n monthNamesShort: monthNamesShort,\n monthNames: monthNames,\n amPm: [\"am\", \"pm\"],\n DoFn: function DoFn(dayOfMonth) {\n return dayOfMonth + [\"th\", \"st\", \"nd\", \"rd\"][dayOfMonth % 10 > 3 ? 0 : (dayOfMonth - dayOfMonth % 10 !== 10 ? 1 : 0) * dayOfMonth % 10];\n }\n};\nvar globalI18n = assign({}, defaultI18n);\nvar setGlobalDateI18n = function setGlobalDateI18n(i18n) {\n return globalI18n = assign(globalI18n, i18n);\n};\nvar regexEscape = function regexEscape(str) {\n return str.replace(/[|\\\\{()[^$+*?.-]/g, \"\\\\$&\");\n};\nvar pad = function pad(val, len) {\n if (len === void 0) {\n len = 2;\n }\n val = String(val);\n while (val.length < len) {\n val = \"0\" + val;\n }\n return val;\n};\nvar formatFlags = {\n D: function D(dateObj) {\n return String(dateObj.getDate());\n },\n DD: function DD(dateObj) {\n return pad(dateObj.getDate());\n },\n Do: function Do(dateObj, i18n) {\n return i18n.DoFn(dateObj.getDate());\n },\n d: function d(dateObj) {\n return String(dateObj.getDay());\n },\n dd: function dd(dateObj) {\n return pad(dateObj.getDay());\n },\n ddd: function ddd(dateObj, i18n) {\n return i18n.dayNamesShort[dateObj.getDay()];\n },\n dddd: function dddd(dateObj, i18n) {\n return i18n.dayNames[dateObj.getDay()];\n },\n M: function M(dateObj) {\n return String(dateObj.getMonth() + 1);\n },\n MM: function MM(dateObj) {\n return pad(dateObj.getMonth() + 1);\n },\n MMM: function MMM(dateObj, i18n) {\n return i18n.monthNamesShort[dateObj.getMonth()];\n },\n MMMM: function MMMM(dateObj, i18n) {\n return i18n.monthNames[dateObj.getMonth()];\n },\n YY: function YY(dateObj) {\n return pad(String(dateObj.getFullYear()), 4).substr(2);\n },\n YYYY: function YYYY(dateObj) {\n return pad(dateObj.getFullYear(), 4);\n },\n h: function h(dateObj) {\n return String(dateObj.getHours() % 12 || 12);\n },\n hh: function hh(dateObj) {\n return pad(dateObj.getHours() % 12 || 12);\n },\n H: function H(dateObj) {\n return String(dateObj.getHours());\n },\n HH: function HH(dateObj) {\n return pad(dateObj.getHours());\n },\n m: function m(dateObj) {\n return String(dateObj.getMinutes());\n },\n mm: function mm(dateObj) {\n return pad(dateObj.getMinutes());\n },\n s: function s(dateObj) {\n return String(dateObj.getSeconds());\n },\n ss: function ss(dateObj) {\n return pad(dateObj.getSeconds());\n },\n S: function S(dateObj) {\n return String(Math.round(dateObj.getMilliseconds() / 100));\n },\n SS: function SS(dateObj) {\n return pad(Math.round(dateObj.getMilliseconds() / 10), 2);\n },\n SSS: function SSS(dateObj) {\n return pad(dateObj.getMilliseconds(), 3);\n },\n a: function a(dateObj, i18n) {\n return dateObj.getHours() < 12 ? i18n.amPm[0] : i18n.amPm[1];\n },\n A: function A(dateObj, i18n) {\n return dateObj.getHours() < 12 ? i18n.amPm[0].toUpperCase() : i18n.amPm[1].toUpperCase();\n },\n ZZ: function ZZ(dateObj) {\n var offset = dateObj.getTimezoneOffset();\n return (offset > 0 ? \"-\" : \"+\") + pad(Math.floor(Math.abs(offset) / 60) * 100 + Math.abs(offset) % 60, 4);\n },\n Z: function Z(dateObj) {\n var offset = dateObj.getTimezoneOffset();\n return (offset > 0 ? \"-\" : \"+\") + pad(Math.floor(Math.abs(offset) / 60), 2) + \":\" + pad(Math.abs(offset) % 60, 2);\n }\n};\nvar monthParse = function monthParse(v) {\n return +v - 1;\n};\nvar emptyDigits = [null, twoDigitsOptional];\nvar emptyWord = [null, word];\nvar amPm = [\"isPm\", word, function (v, i18n) {\n var val = v.toLowerCase();\n if (val === i18n.amPm[0]) {\n return 0;\n } else if (val === i18n.amPm[1]) {\n return 1;\n }\n return null;\n}];\nvar timezoneOffset = [\"timezoneOffset\", \"[^\\\\s]*?[\\\\+\\\\-]\\\\d\\\\d:?\\\\d\\\\d|[^\\\\s]*?Z?\", function (v) {\n var parts = (v + \"\").match(/([+-]|\\d\\d)/gi);\n if (parts) {\n var minutes = +parts[1] * 60 + parseInt(parts[2], 10);\n return parts[0] === \"+\" ? minutes : -minutes;\n }\n return 0;\n}];\nvar parseFlags = {\n D: [\"day\", twoDigitsOptional],\n DD: [\"day\", twoDigits],\n Do: [\"day\", twoDigitsOptional + word, function (v) {\n return parseInt(v, 10);\n }],\n M: [\"month\", twoDigitsOptional, monthParse],\n MM: [\"month\", twoDigits, monthParse],\n YY: [\"year\", twoDigits, function (v) {\n var now = new Date();\n var cent = +(\"\" + now.getFullYear()).substr(0, 2);\n return +(\"\" + (+v > 68 ? cent - 1 : cent) + v);\n }],\n h: [\"hour\", twoDigitsOptional, undefined, \"isPm\"],\n hh: [\"hour\", twoDigits, undefined, \"isPm\"],\n H: [\"hour\", twoDigitsOptional],\n HH: [\"hour\", twoDigits],\n m: [\"minute\", twoDigitsOptional],\n mm: [\"minute\", twoDigits],\n s: [\"second\", twoDigitsOptional],\n ss: [\"second\", twoDigits],\n YYYY: [\"year\", fourDigits],\n S: [\"millisecond\", \"\\\\d\", function (v) {\n return +v * 100;\n }],\n SS: [\"millisecond\", twoDigits, function (v) {\n return +v * 10;\n }],\n SSS: [\"millisecond\", threeDigits],\n d: emptyDigits,\n dd: emptyDigits,\n ddd: emptyWord,\n dddd: emptyWord,\n MMM: [\"month\", word, monthUpdate(\"monthNamesShort\")],\n MMMM: [\"month\", word, monthUpdate(\"monthNames\")],\n a: amPm,\n A: amPm,\n ZZ: timezoneOffset,\n Z: timezoneOffset\n};\n// Some common format strings\nvar globalMasks = {\n default: \"ddd MMM DD YYYY HH:mm:ss\",\n shortDate: \"M/D/YY\",\n mediumDate: \"MMM D, YYYY\",\n longDate: \"MMMM D, YYYY\",\n fullDate: \"dddd, MMMM D, YYYY\",\n isoDate: \"YYYY-MM-DD\",\n isoDateTime: \"YYYY-MM-DDTHH:mm:ssZ\",\n shortTime: \"HH:mm\",\n mediumTime: \"HH:mm:ss\",\n longTime: \"HH:mm:ss.SSS\"\n};\nvar setGlobalDateMasks = function setGlobalDateMasks(masks) {\n return assign(globalMasks, masks);\n};\n/***\n * Format a date\n * @method format\n * @param {Date|number} dateObj\n * @param {string} mask Format of the date, i.e. 'mm-dd-yy' or 'shortDate'\n * @returns {string} Formatted date string\n */\nvar format = function format(dateObj, mask, i18n) {\n if (mask === void 0) {\n mask = globalMasks[\"default\"];\n }\n if (i18n === void 0) {\n i18n = {};\n }\n if (typeof dateObj === \"number\") {\n dateObj = new Date(dateObj);\n }\n if (Object.prototype.toString.call(dateObj) !== \"[object Date]\" || isNaN(dateObj.getTime())) {\n throw new Error(\"Invalid Date pass to format\");\n }\n mask = globalMasks[mask] || mask;\n var literals = [];\n // Make literals inactive by replacing them with @@@\n mask = mask.replace(literal, function ($0, $1) {\n literals.push($1);\n return \"@@@\";\n });\n var combinedI18nSettings = assign(assign({}, globalI18n), i18n);\n // Apply formatting rules\n mask = mask.replace(token, function ($0) {\n return formatFlags[$0](dateObj, combinedI18nSettings);\n });\n // Inline literal values back into the formatted value\n return mask.replace(/@@@/g, function () {\n return literals.shift();\n });\n};\n/**\n * Parse a date string into a Javascript Date object /\n * @method parse\n * @param {string} dateStr Date string\n * @param {string} format Date parse format\n * @param {i18n} I18nSettingsOptional Full or subset of I18N settings\n * @returns {Date|null} Returns Date object. Returns null what date string is invalid or doesn't match format\n */\nfunction parse(dateStr, format, i18n) {\n if (i18n === void 0) {\n i18n = {};\n }\n if (typeof format !== \"string\") {\n throw new Error(\"Invalid format in fecha parse\");\n }\n // Check to see if the format is actually a mask\n format = globalMasks[format] || format;\n // Avoid regular expression denial of service, fail early for really long strings\n // https://www.owasp.org/index.php/Regular_expression_Denial_of_Service_-_ReDoS\n if (dateStr.length > 1000) {\n return null;\n }\n // Default to the beginning of the year.\n var today = new Date();\n var dateInfo = {\n year: today.getFullYear(),\n month: 0,\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n isPm: null,\n timezoneOffset: null\n };\n var parseInfo = [];\n var literals = [];\n // Replace all the literals with @@@. Hopefully a string that won't exist in the format\n var newFormat = format.replace(literal, function ($0, $1) {\n literals.push(regexEscape($1));\n return \"@@@\";\n });\n var specifiedFields = {};\n var requiredFields = {};\n // Change every token that we find into the correct regex\n newFormat = regexEscape(newFormat).replace(token, function ($0) {\n var info = parseFlags[$0];\n var field = info[0],\n regex = info[1],\n requiredField = info[3];\n // Check if the person has specified the same field twice. This will lead to confusing results.\n if (specifiedFields[field]) {\n throw new Error(\"Invalid format. \" + field + \" specified twice in format\");\n }\n specifiedFields[field] = true;\n // Check if there are any required fields. For instance, 12 hour time requires AM/PM specified\n if (requiredField) {\n requiredFields[requiredField] = true;\n }\n parseInfo.push(info);\n return \"(\" + regex + \")\";\n });\n // Check all the required fields are present\n Object.keys(requiredFields).forEach(function (field) {\n if (!specifiedFields[field]) {\n throw new Error(\"Invalid format. \" + field + \" is required in specified format\");\n }\n });\n // Add back all the literals after\n newFormat = newFormat.replace(/@@@/g, function () {\n return literals.shift();\n });\n // Check if the date string matches the format. If it doesn't return null\n var matches = dateStr.match(new RegExp(newFormat, \"i\"));\n if (!matches) {\n return null;\n }\n var combinedI18nSettings = assign(assign({}, globalI18n), i18n);\n // For each match, call the parser function for that date part\n for (var i = 1; i < matches.length; i++) {\n var _a = parseInfo[i - 1],\n field = _a[0],\n parser = _a[2];\n var value = parser ? parser(matches[i], combinedI18nSettings) : +matches[i];\n // If the parser can't make sense of the value, return null\n if (value == null) {\n return null;\n }\n dateInfo[field] = value;\n }\n if (dateInfo.isPm === 1 && dateInfo.hour != null && +dateInfo.hour !== 12) {\n dateInfo.hour = +dateInfo.hour + 12;\n } else if (dateInfo.isPm === 0 && +dateInfo.hour === 12) {\n dateInfo.hour = 0;\n }\n var dateTZ;\n if (dateInfo.timezoneOffset == null) {\n dateTZ = new Date(dateInfo.year, dateInfo.month, dateInfo.day, dateInfo.hour, dateInfo.minute, dateInfo.second, dateInfo.millisecond);\n var validateFields = [[\"month\", \"getMonth\"], [\"day\", \"getDate\"], [\"hour\", \"getHours\"], [\"minute\", \"getMinutes\"], [\"second\", \"getSeconds\"]];\n for (var i = 0, len = validateFields.length; i < len; i++) {\n // Check to make sure the date field is within the allowed range. Javascript dates allows values\n // outside the allowed range. If the values don't match the value was invalid\n if (specifiedFields[validateFields[i][0]] && dateInfo[validateFields[i][0]] !== dateTZ[validateFields[i][1]]()) {\n return null;\n }\n }\n } else {\n dateTZ = new Date(Date.UTC(dateInfo.year, dateInfo.month, dateInfo.day, dateInfo.hour, dateInfo.minute - dateInfo.timezoneOffset, dateInfo.second, dateInfo.millisecond));\n // We can't validate dates in another timezone unfortunately. Do a basic check instead\n if (dateInfo.month > 11 || dateInfo.month < 0 || dateInfo.day > 31 || dateInfo.day < 1 || dateInfo.hour > 23 || dateInfo.hour < 0 || dateInfo.minute > 59 || dateInfo.minute < 0 || dateInfo.second > 59 || dateInfo.second < 0) {\n return null;\n }\n }\n // Don't allow invalid dates\n return dateTZ;\n}\nvar fecha = {\n format: format,\n parse: parse,\n defaultI18n: defaultI18n,\n setGlobalDateI18n: setGlobalDateI18n,\n setGlobalDateMasks: setGlobalDateMasks\n};\nexport default fecha;\nexport { assign, format, parse, defaultI18n, setGlobalDateI18n, setGlobalDateMasks };","import { isDate, isString, last } from '@antv/util';\nimport fecha from 'fecha';\nimport * as fecha1 from 'fecha';\nimport bisector from './bisector';\nvar FORMAT_METHOD = 'format';\nexport function timeFormat(time, mask) {\n var method = fecha1[FORMAT_METHOD] || fecha[FORMAT_METHOD];\n return method(time, mask);\n}\n/**\n * 转换成时间戳\n * @param value 时间值\n */\nexport function toTimeStamp(value) {\n if (isString(value)) {\n if (value.indexOf('T') > 0) {\n value = new Date(value).getTime();\n } else {\n // new Date('2010/01/10') 和 new Date('2010-01-10') 的差别在于:\n // 如果仅有年月日时,前者是带有时区的: Fri Jan 10 2020 02:40:13 GMT+0800 (中国标准时间)\n // 后者会格式化成 Sun Jan 10 2010 08:00:00 GMT+0800 (中国标准时间)\n value = new Date(value.replace(/-/gi, '/')).getTime();\n }\n }\n if (isDate(value)) {\n value = value.getTime();\n }\n return value;\n}\nvar SECOND = 1000;\nvar MINUTE = 60 * SECOND;\nvar HOUR = 60 * MINUTE;\nvar DAY = 24 * HOUR;\nvar MONTH = DAY * 31;\nvar YEAR = DAY * 365;\nexport { SECOND, MINUTE, HOUR, DAY, MONTH, YEAR };\nvar intervals = [['HH:mm:ss', SECOND], ['HH:mm:ss', SECOND * 10], ['HH:mm:ss', SECOND * 30], ['HH:mm', MINUTE], ['HH:mm', MINUTE * 10], ['HH:mm', MINUTE * 30], ['HH', HOUR], ['HH', HOUR * 6], ['HH', HOUR * 12], ['YYYY-MM-DD', DAY], ['YYYY-MM-DD', DAY * 4], ['YYYY-WW', DAY * 7], ['YYYY-MM', MONTH], ['YYYY-MM', MONTH * 4], ['YYYY-MM', MONTH * 6], ['YYYY', DAY * 380]];\nexport function getTickInterval(min, max, tickCount) {\n var target = (max - min) / tickCount;\n var idx = bisector(function (o) {\n return o[1];\n })(intervals, target) - 1;\n var interval = intervals[idx];\n if (idx < 0) {\n interval = intervals[0];\n } else if (idx >= intervals.length) {\n interval = last(intervals);\n }\n return interval;\n}","import { isNil } from '@antv/util';\n/**\n * 二分右侧查找\n * https://github.com/d3/d3-array/blob/master/src/bisector.js\n */\nexport default function (getter) {\n /**\n * x: 目标值\n * lo: 起始位置\n * hi: 结束位置\n */\n return function (a, x, _lo, _hi) {\n var lo = isNil(_lo) ? 0 : _lo;\n var hi = isNil(_hi) ? a.length : _hi;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (getter(a[mid]) > x) {\n hi = mid;\n } else {\n lo = mid + 1;\n }\n }\n return lo;\n };\n}","import { __extends } from \"tslib\";\nimport { each, isNumber } from '@antv/util';\nimport { timeFormat, toTimeStamp } from '../util/time';\nimport Category from './base';\n/**\n * 时间分类度量\n * @class\n */\nvar TimeCat = /** @class */function (_super) {\n __extends(TimeCat, _super);\n function TimeCat() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'timeCat';\n return _this;\n }\n /**\n * @override\n */\n TimeCat.prototype.translate = function (value) {\n value = toTimeStamp(value);\n var index = this.values.indexOf(value);\n if (index === -1) {\n if (isNumber(value) && value < this.values.length) {\n index = value;\n } else {\n index = NaN;\n }\n }\n return index;\n };\n /**\n * 由于时间类型数据需要转换一下,所以复写 getText\n * @override\n */\n TimeCat.prototype.getText = function (value, tickIndex) {\n var index = this.translate(value);\n if (index > -1) {\n var result = this.values[index];\n var formatter = this.formatter;\n result = formatter ? formatter(result, tickIndex) : timeFormat(result, this.mask);\n return result;\n }\n return value;\n };\n TimeCat.prototype.initCfg = function () {\n this.tickMethod = 'time-cat';\n this.mask = 'YYYY-MM-DD';\n this.tickCount = 7; // 一般时间数据会显示 7, 14, 30 天的数字\n };\n\n TimeCat.prototype.setDomain = function () {\n var values = this.values;\n // 针对时间分类类型,会将时间统一转换为时间戳\n each(values, function (v, i) {\n values[i] = toTimeStamp(v);\n });\n values.sort(function (v1, v2) {\n return v1 - v2;\n });\n _super.prototype.setDomain.call(this);\n };\n return TimeCat;\n}(Category);\nexport default TimeCat;","import { __extends } from \"tslib\";\nimport { filter, getRange, head, isNil, last } from '@antv/util';\nimport Base from '../base';\n/**\n * 连续度量的基类\n * @class\n */\nvar Continuous = /** @class */function (_super) {\n __extends(Continuous, _super);\n function Continuous() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.isContinuous = true;\n return _this;\n }\n Continuous.prototype.scale = function (value) {\n if (isNil(value)) {\n return NaN;\n }\n var rangeMin = this.rangeMin();\n var rangeMax = this.rangeMax();\n var max = this.max;\n var min = this.min;\n if (max === min) {\n return rangeMin;\n }\n var percent = this.getScalePercent(value);\n return rangeMin + percent * (rangeMax - rangeMin);\n };\n Continuous.prototype.init = function () {\n _super.prototype.init.call(this);\n // init 完成后保证 min, max 包含 ticks 的范围\n var ticks = this.ticks;\n var firstTick = head(ticks);\n var lastTick = last(ticks);\n if (firstTick < this.min) {\n this.min = firstTick;\n }\n if (lastTick > this.max) {\n this.max = lastTick;\n }\n // strict-limit 方式\n if (!isNil(this.minLimit)) {\n this.min = firstTick;\n }\n if (!isNil(this.maxLimit)) {\n this.max = lastTick;\n }\n };\n Continuous.prototype.setDomain = function () {\n var _a = getRange(this.values),\n min = _a.min,\n max = _a.max;\n if (isNil(this.min)) {\n this.min = min;\n }\n if (isNil(this.max)) {\n this.max = max;\n }\n if (this.min > this.max) {\n this.min = min;\n this.max = max;\n }\n };\n Continuous.prototype.calculateTicks = function () {\n var _this = this;\n var ticks = _super.prototype.calculateTicks.call(this);\n if (!this.nice) {\n ticks = filter(ticks, function (tick) {\n return tick >= _this.min && tick <= _this.max;\n });\n }\n return ticks;\n };\n // 计算原始值值占的百分比\n Continuous.prototype.getScalePercent = function (value) {\n var max = this.max;\n var min = this.min;\n return (value - min) / (max - min);\n };\n Continuous.prototype.getInvertPercent = function (value) {\n return (value - this.rangeMin()) / (this.rangeMax() - this.rangeMin());\n };\n return Continuous;\n}(Base);\nexport default Continuous;","import { __extends } from \"tslib\";\nimport Continuous from './base';\n/**\n * 线性度量\n * @class\n */\nvar Linear = /** @class */function (_super) {\n __extends(Linear, _super);\n function Linear() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'linear';\n _this.isLinear = true;\n return _this;\n }\n Linear.prototype.invert = function (value) {\n var percent = this.getInvertPercent(value);\n return this.min + percent * (this.max - this.min);\n };\n Linear.prototype.initCfg = function () {\n this.tickMethod = 'wilkinson-extended';\n this.nice = false;\n };\n return Linear;\n}(Continuous);\nexport default Linear;","import { each, isNil } from '@antv/util';\n// 求以a为次幂,结果为b的基数,如 x^^a = b;求x\n// 虽然数学上 b 不支持负数,但是这里需要支持 负数\nexport function calBase(a, b) {\n var e = Math.E;\n var value;\n if (b >= 0) {\n value = Math.pow(e, Math.log(b) / a); // 使用换底公式求底\n } else {\n value = Math.pow(e, Math.log(-b) / a) * -1; // 使用换底公式求底\n }\n\n return value;\n}\nexport function log(a, b) {\n if (a === 1) {\n return 1;\n }\n return Math.log(b) / Math.log(a);\n}\nexport function getLogPositiveMin(values, base, max) {\n if (isNil(max)) {\n max = Math.max.apply(null, values);\n }\n var positiveMin = max;\n each(values, function (value) {\n if (value > 0 && value < positiveMin) {\n positiveMin = value;\n }\n });\n if (positiveMin === max) {\n positiveMin = max / base;\n }\n if (positiveMin > 1) {\n positiveMin = 1;\n }\n return positiveMin;\n}\nfunction digitLength(num) {\n // Get digit length of e\n var eSplit = num.toString().split(/[eE]/);\n var len = (eSplit[0].split('.')[1] || '').length - +(eSplit[1] || 0);\n return len > 0 ? len : 0;\n}\n/**\n * 高精度加法,解决 0.1 + 0.2 !== 0.3 的经典问题\n *\n * @param num1 加数\n * @param num2 被加数\n * @return {number} 返回值\n */\nexport function precisionAdd(num1, num2) {\n var num1Digits = digitLength(num1);\n var num2Digits = digitLength(num2);\n var baseNum = Math.pow(10, Math.max(num1Digits, num2Digits));\n return (num1 * baseNum + num2 * baseNum) / baseNum;\n}","import { __extends } from \"tslib\";\nimport { getLogPositiveMin, log } from '../util/math';\nimport Continuous from './base';\n/**\n * Log 度量,处理非均匀分布\n */\nvar Log = /** @class */function (_super) {\n __extends(Log, _super);\n function Log() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'log';\n return _this;\n }\n /**\n * @override\n */\n Log.prototype.invert = function (value) {\n var base = this.base;\n var max = log(base, this.max);\n var rangeMin = this.rangeMin();\n var range = this.rangeMax() - rangeMin;\n var min;\n var positiveMin = this.positiveMin;\n if (positiveMin) {\n if (value === 0) {\n return 0;\n }\n min = log(base, positiveMin / base);\n var appendPercent = 1 / (max - min) * range; // 0 到 positiveMin的占比\n if (value < appendPercent) {\n // 落到 0 - positiveMin 之间\n return value / appendPercent * positiveMin;\n }\n } else {\n min = log(base, this.min);\n }\n var percent = (value - rangeMin) / range;\n var tmp = percent * (max - min) + min;\n return Math.pow(base, tmp);\n };\n Log.prototype.initCfg = function () {\n this.tickMethod = 'log';\n this.base = 10;\n this.tickCount = 6;\n this.nice = true;\n };\n // 设置\n Log.prototype.setDomain = function () {\n _super.prototype.setDomain.call(this);\n var min = this.min;\n if (min < 0) {\n throw new Error('When you use log scale, the minimum value must be greater than zero!');\n }\n if (min === 0) {\n this.positiveMin = getLogPositiveMin(this.values, this.base, this.max);\n }\n };\n // 根据当前值获取占比\n Log.prototype.getScalePercent = function (value) {\n var max = this.max;\n var min = this.min;\n if (max === min) {\n return 0;\n }\n // 如果值小于等于0,则按照0处理\n if (value <= 0) {\n return 0;\n }\n var base = this.base;\n var positiveMin = this.positiveMin;\n // 如果min == 0, 则根据比0大的最小值,计算比例关系。这个最小值作为坐标轴上的第二个tick,第一个是0但是不显示\n if (positiveMin) {\n min = positiveMin * 1 / base;\n }\n var percent;\n // 如果数值小于次小值,那么就计算 value / 次小值 占整体的比例\n if (value < positiveMin) {\n percent = value / positiveMin / (log(base, max) - log(base, min));\n } else {\n percent = (log(base, value) - log(base, min)) / (log(base, max) - log(base, min));\n }\n return percent;\n };\n return Log;\n}(Continuous);\nexport default Log;","import { __extends } from \"tslib\";\nimport { calBase } from '../util/math';\nimport Continuous from './base';\n/**\n * Pow 度量,处理非均匀分布\n */\nvar Pow = /** @class */function (_super) {\n __extends(Pow, _super);\n function Pow() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'pow';\n return _this;\n }\n /**\n * @override\n */\n Pow.prototype.invert = function (value) {\n var percent = this.getInvertPercent(value);\n var exponent = this.exponent;\n var max = calBase(exponent, this.max);\n var min = calBase(exponent, this.min);\n var tmp = percent * (max - min) + min;\n var factor = tmp >= 0 ? 1 : -1;\n return Math.pow(tmp, exponent) * factor;\n };\n Pow.prototype.initCfg = function () {\n this.tickMethod = 'pow';\n this.exponent = 2;\n this.tickCount = 5;\n this.nice = true;\n };\n // 获取度量计算时,value占的定义域百分比\n Pow.prototype.getScalePercent = function (value) {\n var max = this.max;\n var min = this.min;\n if (max === min) {\n return 0;\n }\n var exponent = this.exponent;\n var percent = (calBase(exponent, value) - calBase(exponent, min)) / (calBase(exponent, max) - calBase(exponent, min));\n return percent;\n };\n return Pow;\n}(Continuous);\nexport default Pow;","import { __extends } from \"tslib\";\nimport { each, isDate, isNil, isNumber, isString } from '@antv/util';\nimport { timeFormat, toTimeStamp } from '../util/time';\nimport Linear from './linear';\n/**\n * 时间度量\n * @class\n */\nvar Time = /** @class */function (_super) {\n __extends(Time, _super);\n function Time() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'time';\n return _this;\n }\n /**\n * @override\n */\n Time.prototype.getText = function (value, index) {\n var numberValue = this.translate(value);\n var formatter = this.formatter;\n return formatter ? formatter(numberValue, index) : timeFormat(numberValue, this.mask);\n };\n /**\n * @override\n */\n Time.prototype.scale = function (value) {\n var v = value;\n if (isString(v) || isDate(v)) {\n v = this.translate(v);\n }\n return _super.prototype.scale.call(this, v);\n };\n /**\n * 将时间转换成数字\n * @override\n */\n Time.prototype.translate = function (v) {\n return toTimeStamp(v);\n };\n Time.prototype.initCfg = function () {\n this.tickMethod = 'time-pretty';\n this.mask = 'YYYY-MM-DD';\n this.tickCount = 7;\n this.nice = false;\n };\n Time.prototype.setDomain = function () {\n var values = this.values;\n // 是否设置了 min, max,而不是直接取 this.min, this.max\n var minConfig = this.getConfig('min');\n var maxConfig = this.getConfig('max');\n // 如果设置了 min,max 则转换成时间戳\n if (!isNil(minConfig) || !isNumber(minConfig)) {\n this.min = this.translate(this.min);\n }\n if (!isNil(maxConfig) || !isNumber(maxConfig)) {\n this.max = this.translate(this.max);\n }\n // 没有设置 min, max 时\n if (values && values.length) {\n // 重新计算最大最小值\n var timeStamps_1 = [];\n var min_1 = Infinity; // 最小值\n var secondMin_1 = min_1; // 次小值\n var max_1 = 0;\n // 使用一个循环,计算min,max,secondMin\n each(values, function (v) {\n var timeStamp = toTimeStamp(v);\n if (isNaN(timeStamp)) {\n throw new TypeError(\"Invalid Time: \" + v + \" in time scale!\");\n }\n if (min_1 > timeStamp) {\n secondMin_1 = min_1;\n min_1 = timeStamp;\n } else if (secondMin_1 > timeStamp) {\n secondMin_1 = timeStamp;\n }\n if (max_1 < timeStamp) {\n max_1 = timeStamp;\n }\n timeStamps_1.push(timeStamp);\n });\n // 存在多个值时,设置最小间距\n if (values.length > 1) {\n this.minTickInterval = secondMin_1 - min_1;\n }\n if (isNil(minConfig)) {\n this.min = min_1;\n }\n if (isNil(maxConfig)) {\n this.max = max_1;\n }\n }\n };\n return Time;\n}(Linear);\nexport default Time;","import { __extends } from \"tslib\";\nimport { each, head, last } from '@antv/util';\nimport Continuous from './base';\n/**\n * 分段度量\n */\nvar Quantize = /** @class */function (_super) {\n __extends(Quantize, _super);\n function Quantize() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'quantize';\n return _this;\n }\n Quantize.prototype.invert = function (value) {\n var ticks = this.ticks;\n var length = ticks.length;\n var percent = this.getInvertPercent(value);\n var minIndex = Math.floor(percent * (length - 1));\n // 最后一个\n if (minIndex >= length - 1) {\n return last(ticks);\n }\n // 超出左边界, 则取第一个\n if (minIndex < 0) {\n return head(ticks);\n }\n var minTick = ticks[minIndex];\n var nextTick = ticks[minIndex + 1];\n // 比当前值小的 tick 在度量上的占比\n var minIndexPercent = minIndex / (length - 1);\n var maxIndexPercent = (minIndex + 1) / (length - 1);\n return minTick + (percent - minIndexPercent) / (maxIndexPercent - minIndexPercent) * (nextTick - minTick);\n };\n Quantize.prototype.initCfg = function () {\n this.tickMethod = 'r-pretty';\n this.tickCount = 5;\n this.nice = true;\n };\n Quantize.prototype.calculateTicks = function () {\n var ticks = _super.prototype.calculateTicks.call(this);\n if (!this.nice) {\n // 如果 nice = false ,补充 min, max\n if (last(ticks) !== this.max) {\n ticks.push(this.max);\n }\n if (head(ticks) !== this.min) {\n ticks.unshift(this.min);\n }\n }\n return ticks;\n };\n // 计算当前值在刻度中的占比\n Quantize.prototype.getScalePercent = function (value) {\n var ticks = this.ticks;\n // 超出左边界\n if (value < head(ticks)) {\n return 0;\n }\n // 超出右边界\n if (value > last(ticks)) {\n return 1;\n }\n var minIndex = 0;\n each(ticks, function (tick, index) {\n if (value >= tick) {\n minIndex = index;\n } else {\n return false;\n }\n });\n return minIndex / (ticks.length - 1);\n };\n return Quantize;\n}(Continuous);\nexport default Quantize;","import { __extends } from \"tslib\";\nimport Quantize from './quantize';\nvar Quantile = /** @class */function (_super) {\n __extends(Quantile, _super);\n function Quantile() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'quantile';\n return _this;\n }\n Quantile.prototype.initCfg = function () {\n this.tickMethod = 'quantile';\n this.tickCount = 5;\n this.nice = true;\n };\n return Quantile;\n}(Quantize);\nexport default Quantile;","import Scale from './base';\nvar map = {};\nfunction getClass(key) {\n return map[key];\n}\nfunction registerClass(key, cls) {\n if (getClass(key)) {\n throw new Error(\"type '\" + key + \"' existed.\");\n }\n map[key] = cls;\n}\nexport { Scale, getClass as getScale, registerClass as registerScale };","import { __extends } from \"tslib\";\nimport { isNumber } from '@antv/util';\nimport Base from '../base';\n/**\n * identity scale原则上是定义域和值域一致,scale/invert方法也是一致的\n * 参考R的实现:https://github.com/r-lib/scales/blob/master/R/pal-identity.r\n * 参考d3的实现(做了下转型):https://github.com/d3/d3-scale/blob/master/src/identity.js\n */\nvar Identity = /** @class */function (_super) {\n __extends(Identity, _super);\n function Identity() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'identity';\n _this.isIdentity = true;\n return _this;\n }\n Identity.prototype.calculateTicks = function () {\n return this.values;\n };\n Identity.prototype.scale = function (value) {\n // 如果传入的值不等于 identity 的值,则直接返回,用于一维图时的 dodge\n if (this.values[0] !== value && isNumber(value)) {\n return value;\n }\n return this.range[0];\n };\n Identity.prototype.invert = function (value) {\n var range = this.range;\n if (value < range[0] || value > range[1]) {\n return NaN;\n }\n return this.values[0];\n };\n return Identity;\n}(Base);\nexport default Identity;","import { filter, isNil, isNumber, last } from '@antv/util';\n/**\n * 计算分类 ticks\n * @param cfg 度量的配置项\n * @returns 计算后的 ticks\n */\nexport default function calculateCatTicks(cfg) {\n var values = cfg.values,\n tickInterval = cfg.tickInterval,\n tickCount = cfg.tickCount,\n showLast = cfg.showLast;\n if (isNumber(tickInterval)) {\n var ticks_1 = filter(values, function (__, i) {\n return i % tickInterval === 0;\n });\n var lastValue = last(values);\n if (showLast && last(ticks_1) !== lastValue) {\n ticks_1.push(lastValue);\n }\n return ticks_1;\n }\n var len = values.length;\n var min = cfg.min,\n max = cfg.max;\n if (isNil(min)) {\n min = 0;\n }\n if (isNil(max)) {\n max = values.length - 1;\n }\n if (!isNumber(tickCount) || tickCount >= len) return values.slice(min, max + 1);\n if (tickCount <= 0 || max <= 0) return [];\n var interval = tickCount === 1 ? len : Math.floor(len / (tickCount - 1));\n var ticks = [];\n var idx = min;\n for (var i = 0; i < tickCount; i++) {\n if (idx >= max) break;\n idx = Math.min(min + i * interval, max);\n if (i === tickCount - 1 && showLast) ticks.push(values[max]);else ticks.push(values[idx]);\n }\n return ticks;\n}","export default function d3Linear(cfg) {\n var min = cfg.min,\n max = cfg.max,\n nice = cfg.nice,\n tickCount = cfg.tickCount;\n var linear = new D3Linear();\n linear.domain([min, max]);\n if (nice) {\n linear.nice(tickCount);\n }\n return linear.ticks(tickCount);\n}\nvar DEFAULT_COUNT = 5;\nvar e10 = Math.sqrt(50);\nvar e5 = Math.sqrt(10);\nvar e2 = Math.sqrt(2);\n// https://github.com/d3/d3-scale\nvar D3Linear = /** @class */function () {\n function D3Linear() {\n this._domain = [0, 1];\n }\n D3Linear.prototype.domain = function (domain) {\n if (domain) {\n this._domain = Array.from(domain, Number);\n return this;\n }\n return this._domain.slice();\n };\n D3Linear.prototype.nice = function (count) {\n var _a, _b;\n if (count === void 0) {\n count = DEFAULT_COUNT;\n }\n var d = this._domain.slice();\n var i0 = 0;\n var i1 = this._domain.length - 1;\n var start = this._domain[i0];\n var stop = this._domain[i1];\n var step;\n if (stop < start) {\n _a = [stop, start], start = _a[0], stop = _a[1];\n _b = [i1, i0], i0 = _b[0], i1 = _b[1];\n }\n step = tickIncrement(start, stop, count);\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n this.domain(d);\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n this.domain(d);\n }\n return this;\n };\n D3Linear.prototype.ticks = function (count) {\n if (count === void 0) {\n count = DEFAULT_COUNT;\n }\n return d3ArrayTicks(this._domain[0], this._domain[this._domain.length - 1], count || DEFAULT_COUNT);\n };\n return D3Linear;\n}();\nexport { D3Linear };\nfunction d3ArrayTicks(start, stop, count) {\n var reverse;\n var i = -1;\n var n;\n var ticks;\n var step;\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) {\n return [start];\n }\n // tslint:disable-next-line\n if (reverse = stop < start) {\n n = start, start = stop, stop = n;\n }\n // tslint:disable-next-line\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) {\n return [];\n }\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) {\n ticks[i] = (start + i) * step;\n }\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) {\n ticks[i] = (start - i) / step;\n }\n }\n if (reverse) {\n ticks.reverse();\n }\n return ticks;\n}\nfunction tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count);\n var power = Math.floor(Math.log(step) / Math.LN10);\n var error = step / Math.pow(10, power);\n return power >= 0 ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power) : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}","import { fixedBase } from '@antv/util';\nfunction snapMultiple(v, base, snapType) {\n var div;\n if (snapType === 'ceil') {\n div = Math.ceil(v / base);\n } else if (snapType === 'floor') {\n div = Math.floor(v / base);\n } else {\n div = Math.round(v / base);\n }\n return div * base;\n}\nexport default function intervalTicks(min, max, interval) {\n // 变成 interval 的倍数\n var minTick = snapMultiple(min, interval, 'floor');\n var maxTick = snapMultiple(max, interval, 'ceil');\n // 统一小数位数\n minTick = fixedBase(minTick, interval);\n maxTick = fixedBase(maxTick, interval);\n var ticks = [];\n // https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Errors/Invalid_array_length\n var availableInterval = Math.max((maxTick - minTick) / (Math.pow(2, 12) - 1), interval);\n for (var i = minTick; i <= maxTick; i = i + availableInterval) {\n var tickValue = fixedBase(i, availableInterval); // 防止浮点数加法出现问题\n ticks.push(tickValue);\n }\n return {\n min: minTick,\n max: maxTick,\n ticks: ticks\n };\n}","import { isNil } from '@antv/util';\n/**\n * 按照给定的 minLimit/maxLimit/tickCount 均匀计算出刻度 ticks\n *\n * @param cfg Scale 配置项\n * @return ticks\n */\nexport default function strictLimit(cfg, defaultMin, defaultMax) {\n var _a;\n var minLimit = cfg.minLimit,\n maxLimit = cfg.maxLimit,\n min = cfg.min,\n max = cfg.max,\n _b = cfg.tickCount,\n tickCount = _b === void 0 ? 5 : _b;\n var tickMin = isNil(minLimit) ? isNil(defaultMin) ? min : defaultMin : minLimit;\n var tickMax = isNil(maxLimit) ? isNil(defaultMax) ? max : defaultMax : maxLimit;\n if (tickMin > tickMax) {\n _a = [tickMin, tickMax], tickMax = _a[0], tickMin = _a[1];\n }\n if (tickCount <= 2) {\n return [tickMin, tickMax];\n }\n var step = (tickMax - tickMin) / (tickCount - 1);\n var ticks = [];\n for (var i = 0; i < tickCount; i++) {\n ticks.push(tickMin + step * i);\n }\n return ticks;\n}","// 为了解决 js 运算的精度问题\nexport function prettyNumber(n) {\n return Math.abs(n) < 1e-15 ? n : parseFloat(n.toFixed(15));\n}","import { head, indexOf, size, last } from '@antv/util';\nimport { prettyNumber } from './pretty-number';\nexport var DEFAULT_Q = [1, 5, 2, 2.5, 4, 3];\nexport var ALL_Q = [1, 5, 2, 2.5, 4, 3, 1.5, 7, 6, 8, 9];\nvar eps = Number.EPSILON * 100;\nfunction mod(n, m) {\n return (n % m + m) % m;\n}\nfunction round(n) {\n return Math.round(n * 1e12) / 1e12;\n}\nfunction simplicity(q, Q, j, lmin, lmax, lstep) {\n var n = size(Q);\n var i = indexOf(Q, q);\n var v = 0;\n var m = mod(lmin, lstep);\n if ((m < eps || lstep - m < eps) && lmin <= 0 && lmax >= 0) {\n v = 1;\n }\n return 1 - i / (n - 1) - j + v;\n}\nfunction simplicityMax(q, Q, j) {\n var n = size(Q);\n var i = indexOf(Q, q);\n var v = 1;\n return 1 - i / (n - 1) - j + v;\n}\nfunction density(k, m, dMin, dMax, lMin, lMax) {\n var r = (k - 1) / (lMax - lMin);\n var rt = (m - 1) / (Math.max(lMax, dMax) - Math.min(dMin, lMin));\n return 2 - Math.max(r / rt, rt / r);\n}\nfunction densityMax(k, m) {\n if (k >= m) {\n return 2 - (k - 1) / (m - 1);\n }\n return 1;\n}\nfunction coverage(dMin, dMax, lMin, lMax) {\n var range = dMax - dMin;\n return 1 - 0.5 * (Math.pow(dMax - lMax, 2) + Math.pow(dMin - lMin, 2)) / Math.pow(0.1 * range, 2);\n}\nfunction coverageMax(dMin, dMax, span) {\n var range = dMax - dMin;\n if (span > range) {\n var half = (span - range) / 2;\n return 1 - Math.pow(half, 2) / Math.pow(0.1 * range, 2);\n }\n return 1;\n}\nfunction legibility() {\n return 1;\n}\n/**\n * An Extension of Wilkinson's Algorithm for Position Tick Labels on Axes\n * https://www.yuque.com/preview/yuque/0/2019/pdf/185317/1546999150858-45c3b9c2-4e86-4223-bf1a-8a732e8195ed.pdf\n * @param dMin 最小值\n * @param dMax 最大值\n * @param m tick个数\n * @param onlyLoose 是否允许扩展min、max,不绝对强制,例如[3, 97]\n * @param Q nice numbers集合\n * @param w 四个优化组件的权重\n */\nexport default function extended(dMin, dMax, n, onlyLoose, Q, w) {\n if (n === void 0) {\n n = 5;\n }\n if (onlyLoose === void 0) {\n onlyLoose = true;\n }\n if (Q === void 0) {\n Q = DEFAULT_Q;\n }\n if (w === void 0) {\n w = [0.25, 0.2, 0.5, 0.05];\n }\n // 处理小于 0 和小数的 tickCount\n var m = n < 0 ? 0 : Math.round(n);\n // nan 也会导致异常\n if (Number.isNaN(dMin) || Number.isNaN(dMax) || typeof dMin !== 'number' || typeof dMax !== 'number' || !m) {\n return {\n min: 0,\n max: 0,\n ticks: []\n };\n }\n // js 极大值极小值问题,差值小于 1e-15 会导致计算出错\n if (dMax - dMin < 1e-15 || m === 1) {\n return {\n min: dMin,\n max: dMax,\n ticks: [dMin]\n };\n }\n // js 超大值问题\n if (dMax - dMin > 1e148) {\n var count = n || 5;\n var step_1 = (dMax - dMin) / count;\n return {\n min: dMin,\n max: dMax,\n ticks: Array(count).fill(null).map(function (_, idx) {\n return prettyNumber(dMin + step_1 * idx);\n })\n };\n }\n var best = {\n score: -2,\n lmin: 0,\n lmax: 0,\n lstep: 0\n };\n var j = 1;\n while (j < Infinity) {\n for (var i = 0; i < Q.length; i += 1) {\n var q = Q[i];\n var sm = simplicityMax(q, Q, j);\n if (w[0] * sm + w[1] + w[2] + w[3] < best.score) {\n j = Infinity;\n break;\n }\n var k = 2;\n while (k < Infinity) {\n var dm = densityMax(k, m);\n if (w[0] * sm + w[1] + w[2] * dm + w[3] < best.score) {\n break;\n }\n var delta = (dMax - dMin) / (k + 1) / j / q;\n var z = Math.ceil(Math.log10(delta));\n while (z < Infinity) {\n var step = j * q * Math.pow(10, z);\n var cm = coverageMax(dMin, dMax, step * (k - 1));\n if (w[0] * sm + w[1] * cm + w[2] * dm + w[3] < best.score) {\n break;\n }\n var minStart = Math.floor(dMax / step) * j - (k - 1) * j;\n var maxStart = Math.ceil(dMin / step) * j;\n if (minStart <= maxStart) {\n var count = maxStart - minStart;\n for (var i_1 = 0; i_1 <= count; i_1 += 1) {\n var start = minStart + i_1;\n var lMin = start * (step / j);\n var lMax = lMin + step * (k - 1);\n var lStep = step;\n var s = simplicity(q, Q, j, lMin, lMax, lStep);\n var c = coverage(dMin, dMax, lMin, lMax);\n var g = density(k, m, dMin, dMax, lMin, lMax);\n var l = legibility();\n var score = w[0] * s + w[1] * c + w[2] * g + w[3] * l;\n if (score > best.score && (!onlyLoose || lMin <= dMin && lMax >= dMax)) {\n best.lmin = lMin;\n best.lmax = lMax;\n best.lstep = lStep;\n best.score = score;\n }\n }\n }\n z += 1;\n }\n k += 1;\n }\n }\n j += 1;\n }\n // 处理精度问题,保证这三个数没有精度问题\n var lmax = prettyNumber(best.lmax);\n var lmin = prettyNumber(best.lmin);\n var lstep = prettyNumber(best.lstep);\n // 加 round 是为处理 extended(0.94, 1, 5)\n // 保证生成的 tickCount 没有精度问题\n var tickCount = Math.floor(round((lmax - lmin) / lstep)) + 1;\n var ticks = new Array(tickCount);\n // 少用乘法:防止出现 -1.2 + 1.2 * 3 = 2.3999999999999995 的情况\n ticks[0] = prettyNumber(lmin);\n for (var i = 1; i < tickCount; i++) {\n ticks[i] = prettyNumber(ticks[i - 1] + lstep);\n }\n return {\n min: Math.min(dMin, head(ticks)),\n max: Math.max(dMax, last(ticks)),\n ticks: ticks\n };\n}","import { prettyNumber } from './pretty-number';\nexport default function pretty(min, max, m) {\n if (m === void 0) {\n m = 5;\n }\n if (min === max) {\n return {\n max: max,\n min: min,\n ticks: [min]\n };\n }\n var n = m < 0 ? 0 : Math.round(m);\n if (n === 0) return {\n max: max,\n min: min,\n ticks: []\n };\n /*\n R pretty:\n https://svn.r-project.org/R/trunk/src/appl/pretty.c\n https://www.rdocumentation.org/packages/base/versions/3.5.2/topics/pretty\n */\n var h = 1.5; // high.u.bias\n var h5 = 0.5 + 1.5 * h; // u5.bias\n // 反正我也不会调参,跳过所有判断步骤\n var d = max - min;\n var c = d / n;\n // 当d非常小的时候触发,但似乎没什么用\n // const min_n = Math.floor(n / 3);\n // const shrink_sml = Math.pow(2, 5);\n // if (Math.log10(d) < -2) {\n // c = (_.max([ Math.abs(max), Math.abs(min) ]) * shrink_sml) / min_n;\n // }\n var base = Math.pow(10, Math.floor(Math.log10(c)));\n var unit = base;\n if (2 * base - c < h * (c - unit)) {\n unit = 2 * base;\n if (5 * base - c < h5 * (c - unit)) {\n unit = 5 * base;\n if (10 * base - c < h * (c - unit)) {\n unit = 10 * base;\n }\n }\n }\n var nu = Math.ceil(max / unit);\n var ns = Math.floor(min / unit);\n var hi = Math.max(nu * unit, max);\n var lo = Math.min(ns * unit, min);\n var size = Math.floor((hi - lo) / unit) + 1;\n var ticks = new Array(size);\n for (var i = 0; i < size; i++) {\n ticks[i] = prettyNumber(lo + i * unit);\n }\n return {\n min: lo,\n max: hi,\n ticks: ticks\n };\n}","/**\n * 计算几分位 https://github.com/simple-statistics/simple-statistics/blob/master/src/quantile_sorted.js\n * @param x 数组\n * @param p 百分比\n */\nfunction quantileSorted(x, p) {\n var idx = x.length * p;\n /*if (x.length === 0) { // 当前场景这些条件不可能命中\n throw new Error('quantile requires at least one value.');\n } else if (p < 0 || p > 1) {\n throw new Error('quantiles must be between 0 and 1');\n } else */\n if (p === 1) {\n // If p is 1, directly return the last element\n return x[x.length - 1];\n } else if (p === 0) {\n // If p is 0, directly return the first element\n return x[0];\n } else if (idx % 1 !== 0) {\n // If p is not integer, return the next element in array\n return x[Math.ceil(idx) - 1];\n } else if (x.length % 2 === 0) {\n // If the list has even-length, we'll take the average of this number\n // and the next value, if there is one\n return (x[idx - 1] + x[idx]) / 2;\n } else {\n // Finally, in the simple case of an integer value\n // with an odd-length list, return the x value at the index.\n return x[idx];\n }\n}\nexport default function calculateTicks(cfg) {\n var tickCount = cfg.tickCount,\n values = cfg.values;\n if (!values || !values.length) {\n return [];\n }\n var sorted = values.slice().sort(function (a, b) {\n return a - b;\n });\n var ticks = [];\n for (var i = 0; i < tickCount; i++) {\n var p = i / (tickCount - 1);\n ticks.push(quantileSorted(sorted, p));\n }\n return ticks;\n}","import { DAY, HOUR, MINUTE, MONTH, SECOND, YEAR } from '../util/time';\nfunction getYear(date) {\n return new Date(date).getFullYear();\n}\nfunction createYear(year) {\n return new Date(year, 0, 1).getTime();\n}\nfunction getMonth(date) {\n return new Date(date).getMonth();\n}\nfunction diffMonth(min, max) {\n var minYear = getYear(min);\n var maxYear = getYear(max);\n var minMonth = getMonth(min);\n var maxMonth = getMonth(max);\n return (maxYear - minYear) * 12 + (maxMonth - minMonth) % 12;\n}\nfunction creatMonth(year, month) {\n return new Date(year, month, 1).getTime();\n}\nfunction diffDay(min, max) {\n return Math.ceil((max - min) / DAY);\n}\nfunction diffHour(min, max) {\n return Math.ceil((max - min) / HOUR);\n}\nfunction diffMinus(min, max) {\n return Math.ceil((max - min) / (60 * 1000));\n}\n/**\n * 计算 time 的 ticks,对 month, year 进行 pretty 处理\n * @param cfg 度量的配置项\n * @returns 计算后的 ticks\n */\nexport default function timePretty(cfg) {\n var min = cfg.min,\n max = cfg.max,\n minTickInterval = cfg.minTickInterval,\n tickCount = cfg.tickCount;\n var tickInterval = cfg.tickInterval;\n var ticks = [];\n // 指定 tickInterval 后 tickCount 不生效,需要重新计算\n if (!tickInterval) {\n tickInterval = (max - min) / tickCount;\n // 如果设置了最小间距,则使用最小间距\n if (minTickInterval && tickInterval < minTickInterval) {\n tickInterval = minTickInterval;\n }\n }\n tickInterval = Math.max(Math.floor((max - min) / (Math.pow(2, 12) - 1)), tickInterval);\n var minYear = getYear(min);\n // 如果间距大于 1 年,则将开始日期从整年开始\n if (tickInterval > YEAR) {\n var maxYear = getYear(max);\n var yearInterval = Math.ceil(tickInterval / YEAR);\n for (var i = minYear; i <= maxYear + yearInterval; i = i + yearInterval) {\n ticks.push(createYear(i));\n }\n } else if (tickInterval > MONTH) {\n // 大于月时\n var monthInterval = Math.ceil(tickInterval / MONTH);\n var mmMoth = getMonth(min);\n var dMonths = diffMonth(min, max);\n for (var i = 0; i <= dMonths + monthInterval; i = i + monthInterval) {\n ticks.push(creatMonth(minYear, i + mmMoth));\n }\n } else if (tickInterval > DAY) {\n // 大于天\n var date = new Date(min);\n var year = date.getFullYear();\n var month = date.getMonth();\n var mday = date.getDate();\n var day = Math.ceil(tickInterval / DAY);\n var ddays = diffDay(min, max);\n for (var i = 0; i < ddays + day; i = i + day) {\n ticks.push(new Date(year, month, mday + i).getTime());\n }\n } else if (tickInterval > HOUR) {\n // 大于小时\n var date = new Date(min);\n var year = date.getFullYear();\n var month = date.getMonth();\n var day = date.getDate();\n var hour = date.getHours();\n var hours = Math.ceil(tickInterval / HOUR);\n var dHours = diffHour(min, max);\n for (var i = 0; i <= dHours + hours; i = i + hours) {\n ticks.push(new Date(year, month, day, hour + i).getTime());\n }\n } else if (tickInterval > MINUTE) {\n // 大于分钟\n var dMinus = diffMinus(min, max);\n var minutes = Math.ceil(tickInterval / MINUTE);\n for (var i = 0; i <= dMinus + minutes; i = i + minutes) {\n ticks.push(min + i * MINUTE);\n }\n } else {\n // 小于分钟\n var interval = tickInterval;\n if (interval < SECOND) {\n interval = SECOND;\n }\n var minSecond = Math.floor(min / SECOND) * SECOND;\n var dSeconds = Math.ceil((max - min) / SECOND);\n var seconds = Math.ceil(interval / SECOND);\n for (var i = 0; i < dSeconds + seconds; i = i + seconds) {\n ticks.push(minSecond + i * SECOND);\n }\n }\n // 最好是能从算法能解决这个问题,但是如果指定了 tickInterval,计算 ticks,也只能这么算,所以\n // 打印警告提示\n if (ticks.length >= 512) {\n console.warn(\"Notice: current ticks length(\" + ticks.length + \") >= 512, may cause performance issues, even out of memory. Because of the configure \\\"tickInterval\\\"(in milliseconds, current is \" + tickInterval + \") is too small, increase the value to solve the problem!\");\n }\n return ticks;\n}","import cat from './cat';\nimport d3Linear from './d3-linear';\nimport linear from './linear';\nimport log from './log';\nimport pow from './pow';\nimport quantile from './quantile';\nimport rPretty from './r-prettry';\nimport { getTickMethod, registerTickMethod } from './register';\nimport time from './time';\nimport timeCat from './time-cat';\nimport timePretty from './time-pretty';\nregisterTickMethod('cat', cat);\nregisterTickMethod('time-cat', timeCat);\nregisterTickMethod('wilkinson-extended', linear);\nregisterTickMethod('r-pretty', rPretty);\nregisterTickMethod('time', time);\nregisterTickMethod('time-pretty', timePretty);\nregisterTickMethod('log', log);\nregisterTickMethod('pow', pow);\nregisterTickMethod('quantile', quantile);\nregisterTickMethod('d3-linear', d3Linear);\nexport { getTickMethod, registerTickMethod };","import { __assign } from \"tslib\";\nimport catTicks from './cat';\n/**\n * 计算时间分类的 ticks, 保头,保尾\n * @param cfg 度量的配置项\n * @returns 计算后的 ticks\n */\nexport default function timeCat(cfg) {\n // 默认保留最后一条\n var ticks = catTicks(__assign({\n showLast: true\n }, cfg));\n return ticks;\n}","import { head, isNil, last } from '@antv/util';\nimport extended from '../util/extended';\nimport interval from '../util/interval';\nimport strictLimit from '../util/strict-limit';\n/**\n * 计算线性的 ticks,使用 wilkinson extended 方法\n * @param cfg 度量的配置项\n * @returns 计算后的 ticks\n */\nexport default function linear(cfg) {\n var min = cfg.min,\n max = cfg.max,\n tickCount = cfg.tickCount,\n nice = cfg.nice,\n tickInterval = cfg.tickInterval,\n minLimit = cfg.minLimit,\n maxLimit = cfg.maxLimit;\n var ticks = extended(min, max, tickCount, nice).ticks;\n if (!isNil(minLimit) || !isNil(maxLimit)) {\n return strictLimit(cfg, head(ticks), last(ticks));\n }\n if (tickInterval) {\n return interval(min, max, tickInterval).ticks;\n }\n return ticks;\n}","import { head, isNil, last } from '@antv/util';\nimport interval from '../util/interval';\nimport pretty from '../util/pretty';\nimport strictLimit from '../util/strict-limit';\n/**\n * 计算线性的 ticks,使用 R's pretty 方法\n * @param cfg 度量的配置项\n * @returns 计算后的 ticks\n */\nexport default function linearPretty(cfg) {\n var min = cfg.min,\n max = cfg.max,\n tickCount = cfg.tickCount,\n tickInterval = cfg.tickInterval,\n minLimit = cfg.minLimit,\n maxLimit = cfg.maxLimit;\n var ticks = pretty(min, max, tickCount).ticks;\n if (!isNil(minLimit) || !isNil(maxLimit)) {\n return strictLimit(cfg, head(ticks), last(ticks));\n }\n if (tickInterval) {\n return interval(min, max, tickInterval).ticks;\n }\n return ticks;\n}","import { getTickInterval } from '../util/time';\nexport default function calculateTimeTicks(cfg) {\n var min = cfg.min,\n max = cfg.max,\n minTickInterval = cfg.minTickInterval;\n var tickInterval = cfg.tickInterval;\n var tickCount = cfg.tickCount;\n // 指定 tickInterval 后 tickCount 不生效,需要重新计算\n if (tickInterval) {\n tickCount = Math.ceil((max - min) / tickInterval);\n } else {\n tickInterval = getTickInterval(min, max, tickCount)[1];\n var count = (max - min) / tickInterval;\n var ratio = count / tickCount;\n if (ratio > 1) {\n tickInterval = tickInterval * Math.ceil(ratio);\n }\n // 如果设置了最小间距,则使用最小间距\n if (minTickInterval && tickInterval < minTickInterval) {\n tickInterval = minTickInterval;\n }\n }\n tickInterval = Math.max(Math.floor((max - min) / (Math.pow(2, 12) - 1)), tickInterval);\n var ticks = [];\n for (var i = min; i < max + tickInterval; i += tickInterval) {\n ticks.push(i);\n }\n return ticks;\n}","import { getLogPositiveMin, log } from '../util/math';\n/**\n * 计算 log 的 ticks,考虑 min = 0 的场景\n * @param cfg 度量的配置项\n * @returns 计算后的 ticks\n */\nexport default function calculateLogTicks(cfg) {\n var base = cfg.base,\n tickCount = cfg.tickCount,\n min = cfg.min,\n max = cfg.max,\n values = cfg.values;\n var minTick;\n var maxTick = log(base, max);\n if (min > 0) {\n minTick = Math.floor(log(base, min));\n } else {\n var positiveMin = getLogPositiveMin(values, base, max);\n minTick = Math.floor(log(base, positiveMin));\n }\n var count = maxTick - minTick;\n var avg = Math.ceil(count / tickCount);\n var ticks = [];\n for (var i = minTick; i < maxTick + avg; i = i + avg) {\n ticks.push(Math.pow(base, i));\n }\n if (min <= 0) {\n // 最小值 <= 0 时显示 0\n ticks.unshift(0);\n }\n return ticks;\n}","import { calBase } from '../util/math';\nimport pretty from '../util/pretty';\n/**\n * 计算 Pow 的 ticks\n * @param cfg 度量的配置项\n * @returns 计算后的 ticks\n */\nexport default function calculatePowTicks(cfg) {\n var exponent = cfg.exponent,\n tickCount = cfg.tickCount;\n var max = Math.ceil(calBase(exponent, cfg.max));\n var min = Math.floor(calBase(exponent, cfg.min));\n var ticks = pretty(min, max, tickCount).ticks;\n return ticks.map(function (tick) {\n var factor = tick >= 0 ? 1 : -1;\n return Math.pow(tick, exponent) * factor;\n });\n}","import { head, isNil, last } from '@antv/util';\nimport d3Linear from '../util/d3-linear';\nimport interval from '../util/interval';\nimport strictLimit from '../util/strict-limit';\nexport default function d3LinearTickMethod(cfg) {\n var min = cfg.min,\n max = cfg.max,\n tickInterval = cfg.tickInterval,\n minLimit = cfg.minLimit,\n maxLimit = cfg.maxLimit;\n var ticks = d3Linear(cfg);\n if (!isNil(minLimit) || !isNil(maxLimit)) {\n return strictLimit(cfg, head(ticks), last(ticks));\n }\n if (tickInterval) {\n return interval(min, max, tickInterval).ticks;\n }\n return ticks;\n}","import Scale from './base';\nimport Category from './category/base';\nimport TimeCat from './category/time';\nimport Linear from './continuous/linear';\nimport Log from './continuous/log';\nimport Pow from './continuous/pow';\nimport Time from './continuous/time';\nimport Quantize from './continuous/quantize';\nimport Quantile from './continuous/quantile';\nimport { getScale, registerScale } from './factory';\nimport Identity from './identity/index';\nimport { getTickMethod, registerTickMethod } from './tick-method/index';\nregisterScale('cat', Category);\nregisterScale('category', Category);\nregisterScale('identity', Identity);\nregisterScale('linear', Linear);\nregisterScale('log', Log);\nregisterScale('pow', Pow);\nregisterScale('time', Time);\nregisterScale('timeCat', TimeCat);\nregisterScale('quantize', Quantize);\nregisterScale('quantile', Quantile);\nexport { Category, Identity, Linear, Log, Pow, Time, TimeCat, Quantile, Quantize, Scale, getScale, registerScale, getTickMethod, registerTickMethod };","import Attribute from './attributes/base';\n// 所有的 attribute map\nvar ATTRIBUTE_MAP = {};\n/**\n * 通过类型获得 Attribute 类\n * @param type\n */\nvar getAttribute = function getAttribute(type) {\n return ATTRIBUTE_MAP[type.toLowerCase()];\n};\nvar registerAttribute = function registerAttribute(type, ctor) {\n // 注册的时候,需要校验 type 重名,不区分大小写\n if (getAttribute(type)) {\n throw new Error(\"Attribute type '\".concat(type, \"' existed.\"));\n }\n // 存储到 map 中\n ATTRIBUTE_MAP[type.toLowerCase()] = ctor;\n};\nexport { getAttribute, registerAttribute, Attribute };\nexport * from './interface';","import Attribute from './attributes/base';\nimport Color from './attributes/color';\nimport Opacity from './attributes/opacity';\nimport Position from './attributes/position';\nimport Shape from './attributes/shape';\nimport Size from './attributes/size';\nimport { getAttribute, registerAttribute } from './factory';\nregisterAttribute('Color', Color);\nregisterAttribute('Opacity', Opacity);\nregisterAttribute('Position', Position);\nregisterAttribute('Shape', Shape);\nregisterAttribute('Size', Size);\nexport { registerAttribute, getAttribute, Attribute,\n// 以下 export 是为了兼容,理论上是不需要的\nColor, Opacity, Position, Shape, Size };\nexport * from './interface';","import \"core-js/modules/es.math.hypot.js\";\nimport * as glMatrix from \"./common.js\";\n/**\n * 3 Dimensional Vector\n * @module vec3\n */\n\n/**\n * Creates a new, empty vec3\n *\n * @returns {vec3} a new 3D vector\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(3);\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n }\n return out;\n}\n/**\n * Creates a new vec3 initialized with values from an existing vector\n *\n * @param {ReadonlyVec3} a vector to clone\n * @returns {vec3} a new 3D vector\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(3);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\n/**\n * Calculates the length of a vec3\n *\n * @param {ReadonlyVec3} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport function length(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return Math.hypot(x, y, z);\n}\n/**\n * Creates a new vec3 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @returns {vec3} a new 3D vector\n */\n\nexport function fromValues(x, y, z) {\n var out = new glMatrix.ARRAY_TYPE(3);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n/**\n * Copy the values from one vec3 to another\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the source vector\n * @returns {vec3} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\n/**\n * Set the components of a vec3 to the given values\n *\n * @param {vec3} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @returns {vec3} out\n */\n\nexport function set(out, x, y, z) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n/**\n * Adds two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n return out;\n}\n/**\n * Multiplies two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n return out;\n}\n/**\n * Divides two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n return out;\n}\n/**\n * Math.ceil the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to ceil\n * @returns {vec3} out\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n return out;\n}\n/**\n * Math.floor the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to floor\n * @returns {vec3} out\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n return out;\n}\n/**\n * Returns the minimum of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n return out;\n}\n/**\n * Returns the maximum of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n return out;\n}\n/**\n * Math.round the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to round\n * @returns {vec3} out\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n out[2] = Math.round(a[2]);\n return out;\n}\n/**\n * Scales a vec3 by a scalar number\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec3} out\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n return out;\n}\n/**\n * Adds two vec3's after scaling the second operand by a scalar value\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec3} out\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n return out;\n}\n/**\n * Calculates the euclidian distance between two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} distance between a and b\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return Math.hypot(x, y, z);\n}\n/**\n * Calculates the squared euclidian distance between two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return x * x + y * y + z * z;\n}\n/**\n * Calculates the squared length of a vec3\n *\n * @param {ReadonlyVec3} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nexport function squaredLength(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return x * x + y * y + z * z;\n}\n/**\n * Negates the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to negate\n * @returns {vec3} out\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n return out;\n}\n/**\n * Returns the inverse of the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to invert\n * @returns {vec3} out\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n return out;\n}\n/**\n * Normalize a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to normalize\n * @returns {vec3} out\n */\n\nexport function normalize(out, a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var len = x * x + y * y + z * z;\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n }\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n out[2] = a[2] * len;\n return out;\n}\n/**\n * Calculates the dot product of two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n/**\n * Computes the cross product of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function cross(out, a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2];\n var bx = b[0],\n by = b[1],\n bz = b[2];\n out[0] = ay * bz - az * by;\n out[1] = az * bx - ax * bz;\n out[2] = ax * by - ay * bx;\n return out;\n}\n/**\n * Performs a linear interpolation between two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n return out;\n}\n/**\n * Performs a hermite interpolation with two control points\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {ReadonlyVec3} c the third operand\n * @param {ReadonlyVec3} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nexport function hermite(out, a, b, c, d, t) {\n var factorTimes2 = t * t;\n var factor1 = factorTimes2 * (2 * t - 3) + 1;\n var factor2 = factorTimes2 * (t - 2) + t;\n var factor3 = factorTimes2 * (t - 1);\n var factor4 = factorTimes2 * (3 - 2 * t);\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\n/**\n * Performs a bezier interpolation with two control points\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {ReadonlyVec3} c the third operand\n * @param {ReadonlyVec3} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nexport function bezier(out, a, b, c, d, t) {\n var inverseFactor = 1 - t;\n var inverseFactorTimesTwo = inverseFactor * inverseFactor;\n var factorTimes2 = t * t;\n var factor1 = inverseFactorTimesTwo * inverseFactor;\n var factor2 = 3 * t * inverseFactorTimesTwo;\n var factor3 = 3 * factorTimes2 * inverseFactor;\n var factor4 = factorTimes2 * t;\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec3} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec3} out\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0;\n var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n var z = glMatrix.RANDOM() * 2.0 - 1.0;\n var zScale = Math.sqrt(1.0 - z * z) * scale;\n out[0] = Math.cos(r) * zScale;\n out[1] = Math.sin(r) * zScale;\n out[2] = z * scale;\n return out;\n}\n/**\n * Transforms the vec3 with a mat4.\n * 4th vector component is implicitly '1'\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec3} out\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2];\n var w = m[3] * x + m[7] * y + m[11] * z + m[15];\n w = w || 1.0;\n out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w;\n out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w;\n out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w;\n return out;\n}\n/**\n * Transforms the vec3 with a mat3.\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyMat3} m the 3x3 matrix to transform with\n * @returns {vec3} out\n */\n\nexport function transformMat3(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2];\n out[0] = x * m[0] + y * m[3] + z * m[6];\n out[1] = x * m[1] + y * m[4] + z * m[7];\n out[2] = x * m[2] + y * m[5] + z * m[8];\n return out;\n}\n/**\n * Transforms the vec3 with a quat\n * Can also be used for dual quaternions. (Multiply it with the real part)\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyQuat} q quaternion to transform with\n * @returns {vec3} out\n */\n\nexport function transformQuat(out, a, q) {\n // benchmarks: https://jsperf.com/quaternion-transform-vec3-implementations-fixed\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3];\n var x = a[0],\n y = a[1],\n z = a[2]; // var qvec = [qx, qy, qz];\n // var uv = vec3.cross([], qvec, a);\n\n var uvx = qy * z - qz * y,\n uvy = qz * x - qx * z,\n uvz = qx * y - qy * x; // var uuv = vec3.cross([], qvec, uv);\n\n var uuvx = qy * uvz - qz * uvy,\n uuvy = qz * uvx - qx * uvz,\n uuvz = qx * uvy - qy * uvx; // vec3.scale(uv, uv, 2 * w);\n\n var w2 = qw * 2;\n uvx *= w2;\n uvy *= w2;\n uvz *= w2; // vec3.scale(uuv, uuv, 2);\n\n uuvx *= 2;\n uuvy *= 2;\n uuvz *= 2; // return vec3.add(out, a, vec3.add(out, uv, uuv));\n\n out[0] = x + uvx + uuvx;\n out[1] = y + uvy + uuvy;\n out[2] = z + uvz + uuvz;\n return out;\n}\n/**\n * Rotate a 3D vector around the x-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nexport function rotateX(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[0];\n r[1] = p[1] * Math.cos(rad) - p[2] * Math.sin(rad);\n r[2] = p[1] * Math.sin(rad) + p[2] * Math.cos(rad); //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\n * Rotate a 3D vector around the y-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nexport function rotateY(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[2] * Math.sin(rad) + p[0] * Math.cos(rad);\n r[1] = p[1];\n r[2] = p[2] * Math.cos(rad) - p[0] * Math.sin(rad); //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\n * Rotate a 3D vector around the z-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nexport function rotateZ(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[0] * Math.cos(rad) - p[1] * Math.sin(rad);\n r[1] = p[0] * Math.sin(rad) + p[1] * Math.cos(rad);\n r[2] = p[2]; //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\n * Get the angle between two 3D vectors\n * @param {ReadonlyVec3} a The first operand\n * @param {ReadonlyVec3} b The second operand\n * @returns {Number} The angle in radians\n */\n\nexport function angle(a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2],\n bx = b[0],\n by = b[1],\n bz = b[2],\n mag1 = Math.sqrt(ax * ax + ay * ay + az * az),\n mag2 = Math.sqrt(bx * bx + by * by + bz * bz),\n mag = mag1 * mag2,\n cosine = mag && dot(a, b) / mag;\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n/**\n * Set the components of a vec3 to zero\n *\n * @param {vec3} out the receiving vector\n * @returns {vec3} out\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec3} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n return \"vec3(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \")\";\n}\n/**\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec3} a The first vector.\n * @param {ReadonlyVec3} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec3} a The first vector.\n * @param {ReadonlyVec3} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2));\n}\n/**\n * Alias for {@link vec3.subtract}\n * @function\n */\n\nexport var sub = subtract;\n/**\n * Alias for {@link vec3.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link vec3.divide}\n * @function\n */\n\nexport var div = divide;\n/**\n * Alias for {@link vec3.distance}\n * @function\n */\n\nexport var dist = distance;\n/**\n * Alias for {@link vec3.squaredDistance}\n * @function\n */\n\nexport var sqrDist = squaredDistance;\n/**\n * Alias for {@link vec3.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Alias for {@link vec3.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec3s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec3. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec3s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n if (!stride) {\n stride = 3;\n }\n if (!offset) {\n offset = 0;\n }\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n }\n return a;\n };\n}();","import { __spreadArray } from \"tslib\";\nimport { ext, mat3, vec3 } from '@antv/matrix-util';\nimport { assign } from '@antv/util';\n/**\n * Coordinate Base Class\n */\nvar Coordinate = /** @class */function () {\n function Coordinate(cfg) {\n // 自身属性\n this.type = 'coordinate';\n this.isRect = false;\n this.isHelix = false;\n this.isPolar = false;\n this.isReflectX = false;\n this.isReflectY = false;\n var start = cfg.start,\n end = cfg.end,\n _a = cfg.matrix,\n matrix = _a === void 0 ? [1, 0, 0, 0, 1, 0, 0, 0, 1] : _a,\n _b = cfg.isTransposed,\n isTransposed = _b === void 0 ? false : _b;\n this.start = start;\n this.end = end;\n this.matrix = matrix;\n this.originalMatrix = __spreadArray([], matrix); // 去除引用\n this.isTransposed = isTransposed;\n }\n /**\n * 初始化流程\n */\n Coordinate.prototype.initial = function () {\n // center、width、height\n this.center = {\n x: (this.start.x + this.end.x) / 2,\n y: (this.start.y + this.end.y) / 2\n };\n this.width = Math.abs(this.end.x - this.start.x);\n this.height = Math.abs(this.end.y - this.start.y);\n };\n /**\n * 更新配置\n * @param cfg\n */\n Coordinate.prototype.update = function (cfg) {\n assign(this, cfg);\n this.initial();\n };\n Coordinate.prototype.convertDim = function (percent, dim) {\n var _a;\n var _b = this[dim],\n start = _b.start,\n end = _b.end;\n // 交换\n if (this.isReflect(dim)) {\n _a = [end, start], start = _a[0], end = _a[1];\n }\n return start + percent * (end - start);\n };\n Coordinate.prototype.invertDim = function (value, dim) {\n var _a;\n var _b = this[dim],\n start = _b.start,\n end = _b.end;\n // 交换\n if (this.isReflect(dim)) {\n _a = [end, start], start = _a[0], end = _a[1];\n }\n return (value - start) / (end - start);\n };\n /**\n * 将坐标点进行矩阵变换\n * @param x 对应 x 轴画布坐标\n * @param y 对应 y 轴画布坐标\n * @param tag 默认为 0,可取值 0, 1\n * @return 返回变换后的三阶向量 [x, y, z]\n */\n Coordinate.prototype.applyMatrix = function (x, y, tag) {\n if (tag === void 0) {\n tag = 0;\n }\n var matrix = this.matrix;\n var vector = [x, y, tag];\n vec3.transformMat3(vector, vector, matrix);\n return vector;\n };\n /**\n * 将坐标点进行矩阵逆变换\n * @param x 对应 x 轴画布坐标\n * @param y 对应 y 轴画布坐标\n * @param tag 默认为 0,可取值 0, 1\n * @return 返回矩阵逆变换后的三阶向量 [x, y, z]\n */\n Coordinate.prototype.invertMatrix = function (x, y, tag) {\n if (tag === void 0) {\n tag = 0;\n }\n var matrix = this.matrix;\n var inverted = mat3.invert([0, 0, 0, 0, 0, 0, 0, 0, 0], matrix);\n var vector = [x, y, tag];\n if (inverted) {\n // 如果为空则不进行矩阵变化,防止报错\n vec3.transformMat3(vector, vector, inverted);\n }\n return vector;\n };\n /**\n * 将归一化的坐标点数据转换为画布坐标,并根据坐标系当前矩阵进行变换\n * @param point 归一化的坐标点\n * @return 返回进行矩阵变换后的画布坐标\n */\n Coordinate.prototype.convert = function (point) {\n var _a = this.convertPoint(point),\n x = _a.x,\n y = _a.y;\n var vector = this.applyMatrix(x, y, 1);\n return {\n x: vector[0],\n y: vector[1]\n };\n };\n /**\n * 将进行过矩阵变换画布坐标转换为归一化坐标\n * @param point 画布坐标\n * @return 返回归一化的坐标点\n */\n Coordinate.prototype.invert = function (point) {\n var vector = this.invertMatrix(point.x, point.y, 1);\n return this.invertPoint({\n x: vector[0],\n y: vector[1]\n });\n };\n /**\n * 坐标系旋转变换\n * @param radian 旋转弧度\n * @return 返回坐标系对象\n */\n Coordinate.prototype.rotate = function (radian) {\n var matrix = this.matrix;\n var center = this.center;\n ext.leftTranslate(matrix, matrix, [-center.x, -center.y]);\n ext.leftRotate(matrix, matrix, radian);\n ext.leftTranslate(matrix, matrix, [center.x, center.y]);\n return this;\n };\n /**\n * 坐标系反射变换\n * @param dim 反射维度\n * @return 返回坐标系对象\n */\n Coordinate.prototype.reflect = function (dim) {\n if (dim === 'x') {\n this.isReflectX = !this.isReflectX;\n } else {\n this.isReflectY = !this.isReflectY;\n }\n return this;\n };\n /**\n * 坐标系比例变换\n * @param s1 x 方向缩放比例\n * @param s2 y 方向缩放比例\n * @return 返回坐标系对象\n */\n Coordinate.prototype.scale = function (s1, s2) {\n var matrix = this.matrix;\n var center = this.center;\n ext.leftTranslate(matrix, matrix, [-center.x, -center.y]);\n ext.leftScale(matrix, matrix, [s1, s2]);\n ext.leftTranslate(matrix, matrix, [center.x, center.y]);\n return this;\n };\n /**\n * 坐标系平移变换\n * @param x x 方向平移像素\n * @param y y 方向平移像素\n * @return 返回坐标系对象\n */\n Coordinate.prototype.translate = function (x, y) {\n var matrix = this.matrix;\n ext.leftTranslate(matrix, matrix, [x, y]);\n return this;\n };\n /**\n * 将坐标系 x y 两个轴进行转置\n * @return 返回坐标系对象\n */\n Coordinate.prototype.transpose = function () {\n this.isTransposed = !this.isTransposed;\n return this;\n };\n Coordinate.prototype.getCenter = function () {\n return this.center;\n };\n Coordinate.prototype.getWidth = function () {\n return this.width;\n };\n Coordinate.prototype.getHeight = function () {\n return this.height;\n };\n Coordinate.prototype.getRadius = function () {\n return this.radius;\n };\n /**\n * whether has reflect\n * @param dim\n */\n Coordinate.prototype.isReflect = function (dim) {\n return dim === 'x' ? this.isReflectX : this.isReflectY;\n };\n /**\n * 重置 matrix\n * @param matrix 如果传入,则使用,否则使用构造函数中传入的默认 matrix\n */\n Coordinate.prototype.resetMatrix = function (matrix) {\n // 去除引用关系\n this.matrix = matrix ? matrix : __spreadArray([], this.originalMatrix);\n };\n return Coordinate;\n}();\nexport default Coordinate;","import { __extends } from \"tslib\";\nimport Coordinate from './base';\n/**\n * 笛卡尔坐标系\n * https://www.zhihu.com/question/20665303\n */\nvar Cartesian = /** @class */function (_super) {\n __extends(Cartesian, _super);\n function Cartesian(cfg) {\n var _this = _super.call(this, cfg) || this;\n _this.isRect = true;\n _this.type = 'cartesian';\n _this.initial();\n return _this;\n }\n Cartesian.prototype.initial = function () {\n _super.prototype.initial.call(this);\n var start = this.start;\n var end = this.end;\n this.x = {\n start: start.x,\n end: end.x\n };\n this.y = {\n start: start.y,\n end: end.y\n };\n };\n Cartesian.prototype.convertPoint = function (point) {\n var _a;\n var x = point.x,\n y = point.y;\n // 交换\n if (this.isTransposed) {\n _a = [y, x], x = _a[0], y = _a[1];\n }\n return {\n x: this.convertDim(x, 'x'),\n y: this.convertDim(y, 'y')\n };\n };\n Cartesian.prototype.invertPoint = function (point) {\n var _a;\n var x = this.invertDim(point.x, 'x');\n var y = this.invertDim(point.y, 'y');\n if (this.isTransposed) {\n _a = [y, x], x = _a[0], y = _a[1];\n }\n return {\n x: x,\n y: y\n };\n };\n return Cartesian;\n}(Coordinate);\nexport default Cartesian;","import { __extends } from \"tslib\";\nimport { ext, vec2 } from '@antv/matrix-util';\nimport { isNumberEqual } from '@antv/util';\nimport Coordinate from './base';\n/**\n * 螺旋坐标系\n */\nvar Helix = /** @class */function (_super) {\n __extends(Helix, _super);\n function Helix(cfg) {\n var _this = _super.call(this, cfg) || this;\n _this.isHelix = true;\n _this.type = 'helix';\n var _a = cfg.startAngle,\n startAngle = _a === void 0 ? 1.25 * Math.PI : _a,\n _b = cfg.endAngle,\n endAngle = _b === void 0 ? 7.25 * Math.PI : _b,\n _c = cfg.innerRadius,\n innerRadius = _c === void 0 ? 0 : _c,\n radius = cfg.radius;\n _this.startAngle = startAngle;\n _this.endAngle = endAngle;\n _this.innerRadius = innerRadius;\n _this.radius = radius;\n _this.initial();\n return _this;\n }\n Helix.prototype.initial = function () {\n _super.prototype.initial.call(this);\n var index = (this.endAngle - this.startAngle) / (2 * Math.PI) + 1; // 螺线圈数\n var maxRadius = Math.min(this.width, this.height) / 2;\n if (this.radius && this.radius >= 0 && this.radius <= 1) {\n maxRadius = maxRadius * this.radius;\n }\n this.d = Math.floor(maxRadius * (1 - this.innerRadius) / index);\n this.a = this.d / (Math.PI * 2); // 螺线系数\n this.x = {\n start: this.startAngle,\n end: this.endAngle\n };\n this.y = {\n start: this.innerRadius * maxRadius,\n end: this.innerRadius * maxRadius + this.d * 0.99\n };\n };\n /**\n * 将百分比数据变成屏幕坐标\n * @param point 归一化的点坐标\n * @return 返回对应的屏幕坐标\n */\n Helix.prototype.convertPoint = function (point) {\n var _a;\n var x = point.x,\n y = point.y;\n if (this.isTransposed) {\n _a = [y, x], x = _a[0], y = _a[1];\n }\n var thi = this.convertDim(x, 'x');\n var r = this.a * thi;\n var newY = this.convertDim(y, 'y');\n return {\n x: this.center.x + Math.cos(thi) * (r + newY),\n y: this.center.y + Math.sin(thi) * (r + newY)\n };\n };\n /**\n * 将屏幕坐标点还原成百分比数据\n * @param point 屏幕坐标\n * @return 返回对应的归一化后的数据\n */\n Helix.prototype.invertPoint = function (point) {\n var _a;\n var d = this.d + this.y.start;\n var v = vec2.subtract([0, 0], [point.x, point.y], [this.center.x, this.center.y]);\n var thi = ext.angleTo(v, [1, 0], true);\n var rMin = thi * this.a; // 坐标与原点的连线在第一圈上的交点,最小r值\n if (vec2.length(v) < rMin) {\n // 坐标与原点的连线不可能小于最小r值,但不排除因小数计算产生的略小于rMin的情况\n rMin = vec2.length(v);\n }\n var index = Math.floor((vec2.length(v) - rMin) / d); // 当前点位于第index圈\n thi = 2 * index * Math.PI + thi;\n var r = this.a * thi;\n var newY = vec2.length(v) - r;\n newY = isNumberEqual(newY, 0) ? 0 : newY;\n var x = this.invertDim(thi, 'x');\n var y = this.invertDim(newY, 'y');\n x = isNumberEqual(x, 0) ? 0 : x;\n y = isNumberEqual(y, 0) ? 0 : y;\n if (this.isTransposed) {\n _a = [y, x], x = _a[0], y = _a[1];\n }\n return {\n x: x,\n y: y\n };\n };\n return Helix;\n}(Coordinate);\nexport default Helix;","import { __extends } from \"tslib\";\nimport { ext, vec2, vec3 } from '@antv/matrix-util';\nimport { isNumberEqual } from '@antv/util';\nimport Coordinate from './base';\nvar Polar = /** @class */function (_super) {\n __extends(Polar, _super);\n function Polar(cfg) {\n var _this = _super.call(this, cfg) || this;\n _this.isPolar = true;\n _this.type = 'polar';\n var _a = cfg.startAngle,\n startAngle = _a === void 0 ? -Math.PI / 2 : _a,\n _b = cfg.endAngle,\n endAngle = _b === void 0 ? Math.PI * 3 / 2 : _b,\n _c = cfg.innerRadius,\n innerRadius = _c === void 0 ? 0 : _c,\n radius = cfg.radius;\n _this.startAngle = startAngle;\n _this.endAngle = endAngle;\n _this.innerRadius = innerRadius;\n _this.radius = radius;\n _this.initial();\n return _this;\n }\n Polar.prototype.initial = function () {\n _super.prototype.initial.call(this);\n while (this.endAngle < this.startAngle) {\n this.endAngle += Math.PI * 2;\n }\n var oneBox = this.getOneBox();\n var oneWidth = oneBox.maxX - oneBox.minX;\n var oneHeight = oneBox.maxY - oneBox.minY;\n var left = Math.abs(oneBox.minX) / oneWidth;\n var top = Math.abs(oneBox.minY) / oneHeight;\n var maxRadius;\n if (this.height / oneHeight > this.width / oneWidth) {\n // width 为主\n maxRadius = this.width / oneWidth;\n this.circleCenter = {\n x: this.center.x - (0.5 - left) * this.width,\n y: this.center.y - (0.5 - top) * maxRadius * oneHeight\n };\n } else {\n // height 为主\n maxRadius = this.height / oneHeight;\n this.circleCenter = {\n x: this.center.x - (0.5 - left) * maxRadius * oneWidth,\n y: this.center.y - (0.5 - top) * this.height\n };\n }\n this.polarRadius = this.radius;\n if (!this.radius) {\n this.polarRadius = maxRadius;\n } else if (this.radius > 0 && this.radius <= 1) {\n this.polarRadius = maxRadius * this.radius;\n } else if (this.radius <= 0 || this.radius > maxRadius) {\n this.polarRadius = maxRadius;\n }\n this.x = {\n start: this.startAngle,\n end: this.endAngle\n };\n this.y = {\n start: this.innerRadius * this.polarRadius,\n end: this.polarRadius\n };\n };\n Polar.prototype.getRadius = function () {\n return this.polarRadius;\n };\n Polar.prototype.convertPoint = function (point) {\n var _a;\n var center = this.getCenter();\n var x = point.x,\n y = point.y;\n if (this.isTransposed) {\n _a = [y, x], x = _a[0], y = _a[1];\n }\n x = this.convertDim(x, 'x');\n y = this.convertDim(y, 'y');\n return {\n x: center.x + Math.cos(x) * y,\n y: center.y + Math.sin(x) * y\n };\n };\n Polar.prototype.invertPoint = function (point) {\n var _a;\n var center = this.getCenter();\n var vPoint = [point.x - center.x, point.y - center.y];\n var _b = this,\n startAngle = _b.startAngle,\n endAngle = _b.endAngle;\n if (this.isReflect('x')) {\n _a = [endAngle, startAngle], startAngle = _a[0], endAngle = _a[1];\n }\n var m = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n ext.leftRotate(m, m, startAngle);\n var vStart3 = [1, 0, 0];\n vec3.transformMat3(vStart3, vStart3, m);\n var vStart2 = [vStart3[0], vStart3[1]];\n var angle = ext.angleTo(vStart2, vPoint, endAngle < startAngle);\n if (isNumberEqual(angle, Math.PI * 2)) {\n angle = 0;\n }\n var radius = vec2.length(vPoint);\n var xPercent = angle / (endAngle - startAngle);\n xPercent = endAngle - startAngle > 0 ? xPercent : -xPercent;\n var yPercent = this.invertDim(radius, 'y');\n var rst = {\n x: 0,\n y: 0\n };\n rst.x = this.isTransposed ? yPercent : xPercent;\n rst.y = this.isTransposed ? xPercent : yPercent;\n return rst;\n };\n Polar.prototype.getCenter = function () {\n return this.circleCenter;\n };\n Polar.prototype.getOneBox = function () {\n var startAngle = this.startAngle;\n var endAngle = this.endAngle;\n if (Math.abs(endAngle - startAngle) >= Math.PI * 2) {\n return {\n minX: -1,\n maxX: 1,\n minY: -1,\n maxY: 1\n };\n }\n var xs = [0, Math.cos(startAngle), Math.cos(endAngle)];\n var ys = [0, Math.sin(startAngle), Math.sin(endAngle)];\n for (var i = Math.min(startAngle, endAngle); i < Math.max(startAngle, endAngle); i += Math.PI / 18) {\n xs.push(Math.cos(i));\n ys.push(Math.sin(i));\n }\n return {\n minX: Math.min.apply(Math, xs),\n maxX: Math.max.apply(Math, xs),\n minY: Math.min.apply(Math, ys),\n maxY: Math.max.apply(Math, ys)\n };\n };\n return Polar;\n}(Coordinate);\nexport default Polar;","// 所有的 Coordinate map\nvar COORDINATE_MAP = {};\n/**\n * 通过类型获得 coordinate 类\n * @param type\n */\nexport var getCoordinate = function getCoordinate(type) {\n return COORDINATE_MAP[type.toLowerCase()];\n};\n/**\n * 注册 coordinate 类\n * @param type\n * @param ctor\n */\nexport var registerCoordinate = function registerCoordinate(type, ctor) {\n // 存储到 map 中\n COORDINATE_MAP[type.toLowerCase()] = ctor;\n};\nexport * from './interface';","import { Event as GraphEvent } from '@antv/g-base';\n/**\n *\n * @param group 分组\n * @param eventName 事件名\n * @param eventObject 事件对象\n */\nexport function propagationDelegate(group, eventName, eventObject) {\n var event = new GraphEvent(eventName, eventObject);\n event.target = group;\n event.propagationPath.push(group); // 从当前 group 开始触发 delegation\n group.emitDelegation(eventName, event);\n var parent = group.getParent();\n // 执行冒泡\n while (parent) {\n // 委托事件要先触发\n parent.emitDelegation(eventName, event);\n event.propagationPath.push(parent);\n parent = parent.getParent();\n }\n}","import Coordinate from './coord/base';\nimport Cartesian from './coord/cartesian';\nimport Helix from './coord/helix';\nimport Polar from './coord/polar';\nimport { getCoordinate, registerCoordinate } from './factory';\nregisterCoordinate('rect', Cartesian);\nregisterCoordinate('cartesian', Cartesian);\nregisterCoordinate('polar', Polar);\nregisterCoordinate('helix', Helix);\nexport { getCoordinate, registerCoordinate, Coordinate };","import { ext, vec2, vec3 } from '@antv/matrix-util';\nvar identityMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\nexport function getMatrixByAngle(point, angle, matrix) {\n if (matrix === void 0) {\n matrix = identityMatrix;\n }\n if (!angle) {\n // 角度为 0 或者 null 时返回 null\n return null;\n }\n var m = ext.transform(matrix, [['t', -point.x, -point.y], ['r', angle], ['t', point.x, point.y]]);\n return m;\n}\nexport function getMatrixByTranslate(point, currentMatrix) {\n if (!point.x && !point.y) {\n // 0,0 或者 nan 的情况下返回 null\n return null;\n }\n return ext.transform(currentMatrix || identityMatrix, [['t', point.x, point.y]]);\n}\n// 从矩阵获取旋转的角度\nexport function getAngleByMatrix(matrix) {\n var xVector = [1, 0, 0];\n var out = [0, 0, 0];\n vec3.transformMat3(out, xVector, matrix);\n return Math.atan2(out[1], out[0]);\n}\n// 矩阵 * 向量\nfunction multiplyVec2(matrix, v) {\n var out = [0, 0];\n vec2.transformMat3(out, v, matrix);\n return out;\n}\nexport function applyMatrix2BBox(matrix, bbox) {\n var topLeft = multiplyVec2(matrix, [bbox.minX, bbox.minY]);\n var topRight = multiplyVec2(matrix, [bbox.maxX, bbox.minY]);\n var bottomLeft = multiplyVec2(matrix, [bbox.minX, bbox.maxY]);\n var bottomRight = multiplyVec2(matrix, [bbox.maxX, bbox.maxY]);\n var minX = Math.min(topLeft[0], topRight[0], bottomLeft[0], bottomRight[0]);\n var maxX = Math.max(topLeft[0], topRight[0], bottomLeft[0], bottomRight[0]);\n var minY = Math.min(topLeft[1], topRight[1], bottomLeft[1], bottomRight[1]);\n var maxY = Math.max(topLeft[1], topRight[1], bottomLeft[1], bottomRight[1]);\n return {\n x: minX,\n y: minY,\n minX: minX,\n minY: minY,\n maxX: maxX,\n maxY: maxY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nexport function applyRotate(shape, rotate, x, y) {\n if (rotate) {\n var matrix = getMatrixByAngle({\n x: x,\n y: y\n }, rotate, shape.getMatrix());\n shape.setMatrix(matrix);\n }\n}\nexport function applyTranslate(shape, x, y) {\n var translateMatrix = getMatrixByTranslate({\n x: x,\n y: y\n });\n shape.attr('matrix', translateMatrix);\n}","import { each, isArray, isNil, isNumber } from '@antv/util';\nexport function formatPadding(padding) {\n var top = 0;\n var left = 0;\n var right = 0;\n var bottom = 0;\n if (isNumber(padding)) {\n top = left = right = bottom = padding;\n } else if (isArray(padding)) {\n top = padding[0];\n right = !isNil(padding[1]) ? padding[1] : padding[0];\n bottom = !isNil(padding[2]) ? padding[2] : padding[0];\n left = !isNil(padding[3]) ? padding[3] : right;\n }\n return [top, right, bottom, left];\n}\nexport function clearDom(container) {\n var children = container.childNodes;\n var length = children.length;\n for (var i = length - 1; i >= 0; i--) {\n container.removeChild(children[i]);\n }\n}\nexport function hasClass(elements, cName) {\n return !!elements.className.match(new RegExp(\"(\\\\s|^)\" + cName + \"(\\\\s|$)\"));\n}\nexport function regionToBBox(region) {\n var start = region.start,\n end = region.end;\n var minX = Math.min(start.x, end.x);\n var minY = Math.min(start.y, end.y);\n var maxX = Math.max(start.x, end.x);\n var maxY = Math.max(start.y, end.y);\n return {\n x: minX,\n y: minY,\n minX: minX,\n minY: minY,\n maxX: maxX,\n maxY: maxY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nexport function pointsToBBox(points) {\n var xs = points.map(function (point) {\n return point.x;\n });\n var ys = points.map(function (point) {\n return point.y;\n });\n var minX = Math.min.apply(Math, xs);\n var minY = Math.min.apply(Math, ys);\n var maxX = Math.max.apply(Math, xs);\n var maxY = Math.max.apply(Math, ys);\n return {\n x: minX,\n y: minY,\n minX: minX,\n minY: minY,\n maxX: maxX,\n maxY: maxY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nexport function createBBox(x, y, width, height) {\n var maxX = x + width;\n var maxY = y + height;\n return {\n x: x,\n y: y,\n width: width,\n height: height,\n minX: x,\n minY: y,\n // 非常奇葩的 js 特性\n // Infinity + Infinity = Infinity\n // Infinity - Infinity = NaN\n // fixed https://github.com/antvis/G2Plot/issues/1243\n maxX: isNaN(maxX) ? 0 : maxX,\n maxY: isNaN(maxY) ? 0 : maxY\n };\n}\nexport function getValueByPercent(min, max, percent) {\n return (1 - percent) * min + max * percent;\n}\nexport function getCirclePoint(center, radius, angle) {\n return {\n x: center.x + Math.cos(angle) * radius,\n y: center.y + Math.sin(angle) * radius\n };\n}\nexport function distance(p1, p2) {\n var dx = p2.x - p1.x;\n var dy = p2.y - p1.y;\n return Math.sqrt(dx * dx + dy * dy);\n}\nexport var wait = function wait(interval) {\n return new Promise(function (resolve) {\n setTimeout(resolve, interval);\n });\n};\n/**\n * 判断两个数值 是否接近\n * - 解决精度问题(由于无法确定精度上限,根据具体场景可传入 精度 参数)\n */\nexport var near = function near(x, y, e) {\n if (e === void 0) {\n e = Math.pow(Number.EPSILON, 0.5);\n }\n return [x, y].includes(Infinity) ? Math.abs(x) === Math.abs(y) : Math.abs(x - y) < e;\n};\nexport function intersectBBox(box1, box2) {\n var minX = Math.max(box1.minX, box2.minX);\n var minY = Math.max(box1.minY, box2.minY);\n var maxX = Math.min(box1.maxX, box2.maxX);\n var maxY = Math.min(box1.maxY, box2.maxY);\n return createBBox(minX, minY, maxX - minX, maxY - minY);\n}\nexport function mergeBBox(box1, box2) {\n var minX = Math.min(box1.minX, box2.minX);\n var minY = Math.min(box1.minY, box2.minY);\n var maxX = Math.max(box1.maxX, box2.maxX);\n var maxY = Math.max(box1.maxY, box2.maxY);\n return createBBox(minX, minY, maxX - minX, maxY - minY);\n}\nexport function getBBoxWithClip(element) {\n var clipShape = element.getClip();\n var clipBBox = clipShape && clipShape.getBBox();\n var bbox;\n if (!element.isGroup()) {\n // 如果是普通的图形\n bbox = element.getBBox();\n } else {\n var minX_1 = Infinity;\n var maxX_1 = -Infinity;\n var minY_1 = Infinity;\n var maxY_1 = -Infinity;\n var children = element.getChildren();\n if (children.length > 0) {\n each(children, function (child) {\n if (child.get('visible')) {\n // 如果分组没有子元素,则直接跳过\n if (child.isGroup() && child.get('children').length === 0) {\n return true;\n }\n var box = getBBoxWithClip(child);\n // 计算 4 个顶点\n var leftTop = child.applyToMatrix([box.minX, box.minY, 1]);\n var leftBottom = child.applyToMatrix([box.minX, box.maxY, 1]);\n var rightTop = child.applyToMatrix([box.maxX, box.minY, 1]);\n var rightBottom = child.applyToMatrix([box.maxX, box.maxY, 1]);\n // 从中取最小的范围\n var boxMinX = Math.min(leftTop[0], leftBottom[0], rightTop[0], rightBottom[0]);\n var boxMaxX = Math.max(leftTop[0], leftBottom[0], rightTop[0], rightBottom[0]);\n var boxMinY = Math.min(leftTop[1], leftBottom[1], rightTop[1], rightBottom[1]);\n var boxMaxY = Math.max(leftTop[1], leftBottom[1], rightTop[1], rightBottom[1]);\n if (boxMinX < minX_1) {\n minX_1 = boxMinX;\n }\n if (boxMaxX > maxX_1) {\n maxX_1 = boxMaxX;\n }\n if (boxMinY < minY_1) {\n minY_1 = boxMinY;\n }\n if (boxMaxY > maxY_1) {\n maxY_1 = boxMaxY;\n }\n }\n });\n } else {\n minX_1 = 0;\n maxX_1 = 0;\n minY_1 = 0;\n maxY_1 = 0;\n }\n bbox = createBBox(minX_1, minY_1, maxX_1 - minX_1, maxY_1 - minY_1);\n }\n if (clipBBox) {\n return intersectBBox(bbox, clipBBox);\n } else {\n return bbox;\n }\n}\nexport function updateClip(element, newElement) {\n if (!element.getClip() && !newElement.getClip()) {\n // 两者都没有 clip\n return;\n }\n var newClipShape = newElement.getClip();\n if (!newClipShape) {\n // 新的 element 没有 clip\n element.setClip(null); // 移除 clip\n return;\n }\n var clipCfg = {\n type: newClipShape.get('type'),\n attrs: newClipShape.attr()\n };\n element.setClip(clipCfg);\n}\nexport function toPx(number) {\n return number + \"px\";\n}\nexport function getTextPoint(start, end, position, offset) {\n var lineLength = distance(start, end);\n var offsetPercent = offset / lineLength; // 计算间距同线的比例,用于计算最终的位置\n var percent = 0;\n if (position === 'start') {\n percent = 0 - offsetPercent;\n } else if (position === 'end') {\n percent = 1 + offsetPercent;\n }\n return {\n x: getValueByPercent(start.x, end.x, percent),\n y: getValueByPercent(start.y, end.y, percent)\n };\n}","import { __assign, __extends } from \"tslib\";\nimport { Base } from '@antv/g-base';\nimport { deepMix, each, hasKey, isObject } from '@antv/util';\nvar LOCATION_FIELD_MAP = {\n none: [],\n point: ['x', 'y'],\n region: ['start', 'end'],\n points: ['points'],\n circle: ['center', 'radius', 'startAngle', 'endAngle']\n};\nvar Component = /** @class */function (_super) {\n __extends(Component, _super);\n function Component(cfg) {\n var _this = _super.call(this, cfg) || this;\n _this.initCfg();\n return _this;\n }\n /**\n * @protected\n * 默认的配置项\n * @returns {object} 默认的配置项\n */\n Component.prototype.getDefaultCfg = function () {\n return {\n id: '',\n name: '',\n type: '',\n locationType: 'none',\n offsetX: 0,\n offsetY: 0,\n animate: false,\n capture: true,\n updateAutoRender: false,\n animateOption: {\n appear: null,\n update: {\n duration: 400,\n easing: 'easeQuadInOut'\n },\n enter: {\n duration: 400,\n easing: 'easeQuadInOut'\n },\n leave: {\n duration: 350,\n easing: 'easeQuadIn'\n }\n },\n events: null,\n defaultCfg: {},\n visible: true\n };\n };\n /**\n * 清理组件的内容,一般配合 render 使用\n * @example\n * axis.clear();\n * axis.render();\n */\n Component.prototype.clear = function () {};\n /**\n * 更新组件\n * @param {object} cfg 更新属性\n */\n Component.prototype.update = function (cfg) {\n var _this = this;\n var defaultCfg = this.get('defaultCfg') || {};\n each(cfg, function (value, name) {\n var originCfg = _this.get(name);\n var newCfg = value;\n if (originCfg !== value) {\n // 判断两者是否相等,主要是进行 null 的判定\n if (isObject(value) && defaultCfg[name]) {\n // 新设置的属性与默认值进行合并\n newCfg = deepMix({}, defaultCfg[name], value);\n }\n _this.set(name, newCfg);\n }\n });\n this.updateInner(cfg);\n this.afterUpdate(cfg);\n };\n // 更新内部\n Component.prototype.updateInner = function (cfg) {};\n Component.prototype.afterUpdate = function (cfg) {\n // 更新时考虑显示、隐藏\n if (hasKey(cfg, 'visible')) {\n if (cfg.visible) {\n this.show();\n } else {\n this.hide();\n }\n }\n // 更新时考虑capture\n if (hasKey(cfg, 'capture')) {\n this.setCapture(cfg.capture);\n }\n };\n Component.prototype.getLayoutBBox = function () {\n return this.getBBox(); // 默认返回 getBBox,不同的组件内部单独实现\n };\n\n Component.prototype.getLocationType = function () {\n return this.get('locationType');\n };\n Component.prototype.getOffset = function () {\n return {\n offsetX: this.get('offsetX'),\n offsetY: this.get('offsetY')\n };\n };\n // 默认使用 update\n Component.prototype.setOffset = function (offsetX, offsetY) {\n this.update({\n offsetX: offsetX,\n offsetY: offsetY\n });\n };\n Component.prototype.setLocation = function (cfg) {\n var location = __assign({}, cfg);\n this.update(location);\n };\n // 实现 ILocation 接口的 getLocation\n Component.prototype.getLocation = function () {\n var _this = this;\n var location = {};\n var locationType = this.get('locationType');\n var fields = LOCATION_FIELD_MAP[locationType];\n each(fields, function (field) {\n location[field] = _this.get(field);\n });\n return location;\n };\n Component.prototype.isList = function () {\n return false;\n };\n Component.prototype.isSlider = function () {\n return false;\n };\n /**\n * @protected\n * 初始化,用于具体的组件继承\n */\n Component.prototype.init = function () {};\n // 将组件默认的配置项设置合并到传入的配置项\n Component.prototype.initCfg = function () {\n var _this = this;\n var defaultCfg = this.get('defaultCfg');\n each(defaultCfg, function (value, name) {\n var cfg = _this.get(name);\n if (isObject(cfg)) {\n var newCfg = deepMix({}, value, cfg);\n _this.set(name, newCfg);\n }\n });\n };\n return Component;\n}(Base);\nexport default Component;","import { __assign, __extends, __rest } from \"tslib\";\nimport { difference, each, isNil, keys, mix, pick } from '@antv/util';\nimport { propagationDelegate } from '../util/event';\nimport { applyMatrix2BBox, getMatrixByTranslate } from '../util/matrix';\nimport { getBBoxWithClip, updateClip } from '../util/util';\nimport Component from './component';\nvar STATUS_UPDATE = 'update_status';\nvar COPY_PROPERTIES = ['visible', 'tip', 'delegateObject']; // 更新对象时需要复制的属性\nvar COPY_PROPERTIES_EXCLUDES = ['container', 'group', 'shapesMap', 'isRegister', 'isUpdating', 'destroyed']; // 更新子组件时排除的属性\nvar GroupComponent = /** @class */function (_super) {\n __extends(GroupComponent, _super);\n function GroupComponent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n GroupComponent.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n container: null,\n /**\n * @private\n * 缓存图形的 Map\n */\n shapesMap: {},\n group: null,\n capture: true,\n /**\n * @private 组件或者图形是否允许注册\n * @type {false}\n */\n isRegister: false,\n /**\n * @private 是否正在更新\n * @type {false}\n */\n isUpdating: false,\n /**\n * @private\n * 是否初始状态,一旦 render,update 后,这个状态就变成 false, clear 后恢复\n */\n isInit: true\n });\n };\n GroupComponent.prototype.remove = function () {\n this.clear();\n var group = this.get('group');\n group.remove();\n };\n GroupComponent.prototype.clear = function () {\n var group = this.get('group');\n group.clear();\n this.set('shapesMap', {});\n this.clearOffScreenCache();\n this.set('isInit', true);\n };\n GroupComponent.prototype.getChildComponentById = function (id) {\n var group = this.getElementById(id);\n var inst = group && group.get('component');\n return inst;\n };\n GroupComponent.prototype.getElementById = function (id) {\n return this.get('shapesMap')[id];\n };\n GroupComponent.prototype.getElementByLocalId = function (localId) {\n var id = this.getElementId(localId);\n return this.getElementById(id);\n };\n GroupComponent.prototype.getElementsByName = function (name) {\n var rst = [];\n each(this.get('shapesMap'), function (elem) {\n if (elem.get('name') === name) {\n rst.push(elem);\n }\n });\n return rst;\n };\n GroupComponent.prototype.getContainer = function () {\n return this.get('container');\n };\n GroupComponent.prototype.updateInner = function (cfg) {\n // this.updateInner();\n // this.set('isUpdating', false);\n this.offScreenRender();\n if (this.get('updateAutoRender')) {\n this.render();\n }\n };\n GroupComponent.prototype.render = function () {\n var offScreenGroup = this.get('offScreenGroup');\n if (!offScreenGroup) {\n offScreenGroup = this.offScreenRender();\n }\n var group = this.get('group');\n this.updateElements(offScreenGroup, group);\n this.deleteElements();\n this.applyOffset();\n if (!this.get('eventInitted')) {\n this.initEvent();\n this.set('eventInitted', true);\n }\n this.set('isInit', false);\n };\n GroupComponent.prototype.show = function () {\n var group = this.get('group');\n group.show();\n this.set('visible', true);\n };\n GroupComponent.prototype.hide = function () {\n var group = this.get('group');\n group.hide();\n this.set('visible', false);\n };\n GroupComponent.prototype.setCapture = function (capture) {\n var group = this.get('group');\n group.set('capture', capture);\n this.set('capture', capture);\n };\n GroupComponent.prototype.destroy = function () {\n this.removeEvent();\n this.remove();\n _super.prototype.destroy.call(this);\n };\n GroupComponent.prototype.getBBox = function () {\n return this.get('group').getCanvasBBox();\n };\n GroupComponent.prototype.getLayoutBBox = function () {\n var group = this.get('group');\n // 防止被 clear 了,offScreenBBox 不存在\n var bbox = this.getInnerLayoutBBox();\n var matrix = group.getTotalMatrix();\n if (matrix) {\n bbox = applyMatrix2BBox(matrix, bbox);\n }\n return bbox; // 默认返回 getBBox,不同的组件内部单独实现\n };\n // 复写 on, off, emit 透传到 group\n GroupComponent.prototype.on = function (evt, callback, once) {\n var group = this.get('group');\n group.on(evt, callback, once);\n return this;\n };\n GroupComponent.prototype.off = function (evt, callback) {\n var group = this.get('group');\n group && group.off(evt, callback);\n return this;\n };\n GroupComponent.prototype.emit = function (eventName, eventObject) {\n var group = this.get('group');\n group.emit(eventName, eventObject);\n };\n GroupComponent.prototype.init = function () {\n _super.prototype.init.call(this);\n if (!this.get('group')) {\n this.initGroup();\n }\n this.offScreenRender(); // 绘制离屏 group\n };\n // 获取组件内部布局占的包围盒\n GroupComponent.prototype.getInnerLayoutBBox = function () {\n return this.get('offScreenBBox') || this.get('group').getBBox();\n };\n // 抛出委托对象\n GroupComponent.prototype.delegateEmit = function (eventName, eventObject) {\n var group = this.get('group');\n eventObject.target = group;\n group.emit(eventName, eventObject);\n propagationDelegate(group, eventName, eventObject);\n };\n // 创建离屏的 group ,不添加在 canvas 中\n GroupComponent.prototype.createOffScreenGroup = function () {\n var group = this.get('group');\n var GroupClass = group.getGroupBase(); // 获取分组的构造函数\n var newGroup = new GroupClass({\n delegateObject: this.getDelegateObject()\n });\n return newGroup;\n };\n // 应用 offset\n GroupComponent.prototype.applyOffset = function () {\n var offsetX = this.get('offsetX');\n var offsetY = this.get('offsetY');\n this.moveElementTo(this.get('group'), {\n x: offsetX,\n y: offsetY\n });\n };\n GroupComponent.prototype.initGroup = function () {\n var container = this.get('container');\n this.set('group', container.addGroup({\n id: this.get('id'),\n name: this.get('name'),\n capture: this.get('capture'),\n visible: this.get('visible'),\n isComponent: true,\n component: this,\n delegateObject: this.getDelegateObject()\n }));\n };\n // 离屏渲染\n GroupComponent.prototype.offScreenRender = function () {\n this.clearOffScreenCache();\n var offScreenGroup = this.createOffScreenGroup();\n this.renderInner(offScreenGroup);\n this.set('offScreenGroup', offScreenGroup);\n // 包含包围盒的 bbox\n this.set('offScreenBBox', getBBoxWithClip(offScreenGroup));\n return offScreenGroup;\n };\n /**\n * @protected\n * 在组件上添加分组,主要解决 isReigeter 的问题\n * @param {IGroup} parent 父元素\n * @param {object} cfg 分组的配置项\n */\n GroupComponent.prototype.addGroup = function (parent, cfg) {\n this.appendDelegateObject(parent, cfg);\n var group = parent.addGroup(cfg);\n if (this.get('isRegister')) {\n this.registerElement(group);\n }\n return group;\n };\n /**\n * @protected\n * 在组件上添加图形,主要解决 isReigeter 的问题\n * @param {IGroup} parent 父元素\n * @param {object} cfg 分组的配置项\n */\n GroupComponent.prototype.addShape = function (parent, cfg) {\n this.appendDelegateObject(parent, cfg);\n var shape = parent.addShape(cfg);\n if (this.get('isRegister')) {\n this.registerElement(shape);\n }\n return shape;\n };\n /**\n * 在组件上添加子组件\n *\n * @param parent 父元素\n * @param cfg 子组件配置项\n */\n GroupComponent.prototype.addComponent = function (parent, cfg) {\n var id = cfg.id,\n Ctor = cfg.component,\n restCfg = __rest(cfg, [\"id\", \"component\"]);\n // @ts-ignore\n var inst = new Ctor(__assign(__assign({}, restCfg), {\n id: id,\n container: parent,\n updateAutoRender: this.get('updateAutoRender')\n }));\n inst.init();\n inst.render();\n if (this.get('isRegister')) {\n this.registerElement(inst.get('group'));\n }\n return inst;\n };\n GroupComponent.prototype.initEvent = function () {};\n GroupComponent.prototype.removeEvent = function () {\n var group = this.get('group');\n group.off();\n };\n GroupComponent.prototype.getElementId = function (localId) {\n var id = this.get('id'); // 组件的 Id\n var name = this.get('name'); // 组件的名称\n return id + \"-\" + name + \"-\" + localId;\n };\n GroupComponent.prototype.registerElement = function (element) {\n var id = element.get('id');\n this.get('shapesMap')[id] = element;\n };\n GroupComponent.prototype.unregisterElement = function (element) {\n var id = element.get('id');\n delete this.get('shapesMap')[id];\n };\n // 移动元素\n GroupComponent.prototype.moveElementTo = function (element, point) {\n var matrix = getMatrixByTranslate(point);\n element.attr('matrix', matrix);\n };\n /**\n * 图形元素新出现时的动画,默认图形从透明度 0 到当前透明度\n * @protected\n * @param {string} elmentName 图形元素名称\n * @param {IElement} newElement 新的图形元素\n * @param {object} animateCfg 动画的配置项\n */\n GroupComponent.prototype.addAnimation = function (elmentName, newElement, animateCfg) {\n // 缓存透明度\n var originOpacity = newElement.attr('opacity');\n if (isNil(originOpacity)) {\n originOpacity = 1;\n }\n newElement.attr('opacity', 0);\n newElement.animate({\n opacity: originOpacity\n }, animateCfg);\n };\n /**\n * 图形元素新出现时的动画,默认图形从透明度 0 到当前透明度\n * @protected\n * @param {string} elmentName 图形元素名称\n * @param {IElement} originElement 要删除的图形元素\n * @param {object} animateCfg 动画的配置项\n */\n GroupComponent.prototype.removeAnimation = function (elementName, originElement, animateCfg) {\n originElement.animate({\n opacity: 0\n }, animateCfg);\n };\n /**\n * 图形元素的更新动画\n * @param {string} elmentName 图形元素名称\n * @param {IElement} originElement 现有的图形元素\n * @param {object} newAttrs 新的图形元素\n * @param {object} animateCfg 动画的配置项\n */\n GroupComponent.prototype.updateAnimation = function (elementName, originElement, newAttrs, animateCfg) {\n originElement.animate(newAttrs, animateCfg);\n };\n // 更新组件的图形\n GroupComponent.prototype.updateElements = function (newGroup, originGroup) {\n var _this = this;\n var animate = this.get('animate');\n var animateOption = this.get('animateOption');\n var children = newGroup.getChildren().slice(0); // 创建一个新数组,防止添加到 originGroup 时, children 变动\n var preElement; // 前面已经匹配到的图形元素,用于\n each(children, function (element) {\n var elementId = element.get('id');\n var originElement = _this.getElementById(elementId);\n var elementName = element.get('name');\n if (originElement) {\n if (element.get('isComponent')) {\n // 嵌套子组件更新\n var childComponent = element.get('component');\n var origChildComponent = originElement.get('component');\n var newCfg = pick(childComponent.cfg, difference(keys(childComponent.cfg), COPY_PROPERTIES_EXCLUDES));\n origChildComponent.update(newCfg);\n originElement.set(STATUS_UPDATE, 'update');\n } else {\n var replaceAttrs = _this.getReplaceAttrs(originElement, element);\n // 更新\n if (animate && animateOption.update) {\n // 没有动画\n _this.updateAnimation(elementName, originElement, replaceAttrs, animateOption.update);\n } else {\n // originElement.attrs = replaceAttrs; // 直接替换\n originElement.attr(replaceAttrs);\n }\n // 如果是分组,则继续执行\n if (element.isGroup()) {\n _this.updateElements(element, originElement);\n }\n // 复制属性\n each(COPY_PROPERTIES, function (name) {\n originElement.set(name, element.get(name));\n });\n updateClip(originElement, element);\n preElement = originElement;\n // 执行完更新后设置状态位为更新\n originElement.set(STATUS_UPDATE, 'update');\n }\n } else {\n // 没有对应的图形,则插入当前图形\n originGroup.add(element); // 应该在 group 加个 insertAt 的方法\n var siblings = originGroup.getChildren(); // 兄弟节点\n siblings.splice(siblings.length - 1, 1); // 先从数组中移除,然后放到合适的位置\n if (preElement) {\n // 前面已经有更新的图形或者插入的图形,则在这个图形后面插入\n var index = siblings.indexOf(preElement);\n siblings.splice(index + 1, 0, element); // 在已经更新的图形元素后面插入\n } else {\n siblings.unshift(element);\n }\n _this.registerElement(element); // 注册节点\n element.set(STATUS_UPDATE, 'add'); // 执行完更新后设置状态位为添加\n if (element.get('isComponent')) {\n // 直接新增子组件container属性,实例不变\n var childComponent = element.get('component');\n childComponent.set('container', originGroup);\n } else if (element.isGroup()) {\n // 如果元素是新增加的元素,则遍历注册所有的子节点\n _this.registerNewGroup(element);\n }\n preElement = element;\n if (animate) {\n var animateCfg = _this.get('isInit') ? animateOption.appear : animateOption.enter;\n if (animateCfg) {\n _this.addAnimation(elementName, element, animateCfg);\n }\n }\n }\n });\n };\n GroupComponent.prototype.clearUpdateStatus = function (group) {\n var children = group.getChildren();\n each(children, function (el) {\n el.set(STATUS_UPDATE, null); // 清理掉更新状态\n });\n };\n // 清理离屏缓存\n GroupComponent.prototype.clearOffScreenCache = function () {\n var offScreenGroup = this.get('offScreenGroup');\n if (offScreenGroup) {\n // 销毁原先的离线 Group\n offScreenGroup.destroy();\n }\n this.set('offScreenGroup', null);\n this.set('offScreenBBox', null);\n };\n // private updateInner() {\n // const group = this.get('group');\n // const newGroup = this.createOffScreenGroup();\n // this.renderInner(newGroup);\n // this.applyOffset();\n // this.updateElements(newGroup, group);\n // this.deleteElements();\n // newGroup.destroy(); // 销毁虚拟分组\n // }\n // 获取发生委托时的对象,在事件中抛出\n GroupComponent.prototype.getDelegateObject = function () {\n var _a;\n var name = this.get('name');\n var delegateObject = (_a = {}, _a[name] = this, _a.component = this, _a);\n return delegateObject;\n };\n // 附加委托信息,用于事件\n GroupComponent.prototype.appendDelegateObject = function (parent, cfg) {\n var parentObject = parent.get('delegateObject');\n if (!cfg.delegateObject) {\n cfg.delegateObject = {};\n }\n mix(cfg.delegateObject, parentObject); // 将父元素上的委托信息复制到自身\n };\n // 获取需要替换的属性,如果原先图形元素存在,而新图形不存在,则设置 undefined\n GroupComponent.prototype.getReplaceAttrs = function (originElement, newElement) {\n var originAttrs = originElement.attr();\n var newAttrs = newElement.attr();\n each(originAttrs, function (v, k) {\n if (newAttrs[k] === undefined) {\n newAttrs[k] = undefined;\n }\n });\n return newAttrs;\n };\n GroupComponent.prototype.registerNewGroup = function (group) {\n var _this = this;\n var children = group.getChildren();\n each(children, function (element) {\n _this.registerElement(element); // 注册节点\n element.set(STATUS_UPDATE, 'add'); // 执行完更新后设置状态位为添加\n if (element.isGroup()) {\n _this.registerNewGroup(element);\n }\n });\n };\n // 移除多余的元素\n GroupComponent.prototype.deleteElements = function () {\n var _this = this;\n var shapesMap = this.get('shapesMap');\n var deleteArray = [];\n // 遍历获取需要删除的图形元素\n each(shapesMap, function (element, id) {\n if (!element.get(STATUS_UPDATE) || element.destroyed) {\n deleteArray.push([id, element]);\n } else {\n element.set(STATUS_UPDATE, null); // 清理掉更新状态\n }\n });\n\n var animate = this.get('animate');\n var animateOption = this.get('animateOption');\n // 删除图形元素\n each(deleteArray, function (item) {\n var id = item[0],\n element = item[1];\n if (!element.destroyed) {\n var elementName = element.get('name');\n if (animate && animateOption.leave) {\n // 需要动画结束时移除图形\n var callbackAnimCfg = mix({\n callback: function callback() {\n _this.removeElement(element);\n }\n }, animateOption.leave);\n _this.removeAnimation(elementName, element, callbackAnimCfg);\n } else {\n _this.removeElement(element);\n }\n }\n delete shapesMap[id]; // 从缓存中移除\n });\n };\n\n GroupComponent.prototype.removeElement = function (element) {\n if (element.get('isGroup')) {\n var component = element.get('component');\n if (component) {\n component.destroy();\n }\n }\n element.remove();\n };\n return GroupComponent;\n}(Component);\nexport default GroupComponent;","var ELLIPSIS_CODE = \"\\u2026\";\n/** 获取字符串长度 */\nexport function strLen(str) {\n var len = 0;\n for (var i = 0; i < str.length; i++) {\n len += charAtLength(str, i);\n }\n return len;\n}\n/** 是否属于ASCII编码范畴 */\nexport function charAtLength(str, i) {\n if (str.charCodeAt(i) > 0 && str.charCodeAt(i) < 128) {\n return 1;\n } else {\n return 2;\n }\n}\n/** 文本省略 */\nexport function ellipsisString(str, reseveLength, position) {\n if (position === void 0) {\n position = 'tail';\n }\n var count = str.length;\n var rst = '';\n if (position === 'tail') {\n for (var i = 0, index = 0; i < reseveLength;) {\n var charLength = charAtLength(str, index);\n if (i + charLength <= reseveLength) {\n rst += str[index];\n i += charAtLength(str, index);\n index++;\n } else {\n break;\n }\n }\n rst += ELLIPSIS_CODE;\n } else if (position === 'head') {\n for (var i = 0, index = count - 1; i < reseveLength;) {\n var charLength = charAtLength(str, index);\n if (i + charLength <= reseveLength) {\n rst += str[index];\n i += charAtLength(str, index);\n index--;\n } else {\n break;\n }\n }\n rst = ELLIPSIS_CODE + rst;\n } else {\n var startStr = '';\n var endStr = '';\n for (var i = 0, startIndex = 0, endIndex = count - 1; i < reseveLength;) {\n var startCodeLen = charAtLength(str, startIndex);\n var hasAdd = false; // 设置标志位,防止头尾都没有附加字符\n if (startCodeLen + i <= reseveLength) {\n startStr += str[startIndex];\n startIndex++;\n i += startCodeLen;\n hasAdd = true;\n }\n var endCodeLen = charAtLength(str, endIndex);\n if (endCodeLen + i <= reseveLength) {\n endStr = str[endIndex] + endStr;\n i += endCodeLen;\n endIndex--;\n hasAdd = true;\n }\n if (!hasAdd) {\n // 如果都没有增加字符,说明都不适合则中断\n break;\n }\n }\n rst = startStr + ELLIPSIS_CODE + endStr;\n }\n return rst;\n}","import { each, isNil, getEllipsisText, pick } from '@antv/util';\nimport { ellipsisString, strLen } from './text';\nvar ELLIPSIS_CODE = \"\\u2026\";\nvar ELLIPSIS_CODE_LENGTH = 2; // 省略号的长度\n/** 大数据量阈值 */\nvar OPTIMIZE_THRESHOLD = 400;\n/**\n * 针对大数据量做优化的 getMaxLabelWidth,做法不是直接去比较每一个 label 的最大宽度\n * 而是先通过比较每个 label 每个的字符串的长度,这里区分了下中英文字符\n * 最终是去字符串最“长”的那个 label 的宽度。\n * @param labels\n */\nfunction getMaxLabelWidthOptimized(labels) {\n var texts = labels.map(function (label) {\n var text = label.attr('text');\n return isNil(text) ? '' : \"\" + text;\n });\n var maxLen = 0;\n var maxIdx = 0;\n for (var i = 0; i < texts.length; i += 1) {\n var len = 0;\n for (var j = 0; j <= texts[i].length; j += 1) {\n var code = texts[i].charCodeAt(j);\n if (code >= 19968 && code <= 40869) {\n len += 2;\n } else {\n len += 1;\n }\n }\n if (len > maxLen) {\n maxLen = len;\n maxIdx = i;\n }\n }\n return labels[maxIdx].getBBox().width;\n}\n/** 获取最长的 label */\nexport function getMaxLabelWidth(labels) {\n if (labels.length > OPTIMIZE_THRESHOLD) {\n return getMaxLabelWidthOptimized(labels);\n }\n var max = 0;\n each(labels, function (label) {\n var bbox = label.getBBox();\n var width = bbox.width;\n if (max < width) {\n max = width;\n }\n });\n return max;\n}\n/** 获取label长度 */\nexport function getLabelLength(isVertical, label) {\n var bbox = label.getCanvasBBox();\n return isVertical ? bbox.width : bbox.height;\n}\n/* label长度是否超过约束值 */\nexport function testLabel(label, limitLength) {\n return label.getBBox().width < limitLength;\n}\n/** 处理 text shape 的自动省略 */\nexport function ellipsisLabel(isVertical, label, limitLength, position) {\n var _a;\n if (position === void 0) {\n position = 'tail';\n }\n var text = (_a = label.attr('text')) !== null && _a !== void 0 ? _a : ''; // 避免出现null、undefined\n if (position === 'tail') {\n // component 里的缩略处理做得很糟糕,文字长度测算完全不准确\n // 这里暂时只对 tail 做处理\n var font = pick(label.attr(), ['fontSize', 'fontFamily', 'fontWeight', 'fontStyle', 'fontVariant']);\n var ellipsisText = getEllipsisText(text, limitLength, font, '…');\n if (text !== ellipsisText) {\n label.attr('text', ellipsisText);\n label.set('tip', text);\n return true;\n }\n label.set('tip', null);\n return false;\n }\n var labelLength = getLabelLength(isVertical, label);\n var codeLength = strLen(text);\n var ellipsisFlag = false;\n if (limitLength < labelLength) {\n var reserveLength = Math.floor(limitLength / labelLength * codeLength) - ELLIPSIS_CODE_LENGTH; // 计算出来的应该保存的长度\n var newText = void 0;\n if (reserveLength >= 0) {\n newText = ellipsisString(text, reserveLength, position);\n } else {\n newText = ELLIPSIS_CODE;\n }\n if (newText) {\n label.attr('text', newText);\n ellipsisFlag = true;\n }\n }\n if (ellipsisFlag) {\n label.set('tip', text);\n } else {\n label.set('tip', null);\n }\n return ellipsisFlag;\n}","import { __assign } from \"tslib\";\nimport { get } from '@antv/util';\nimport { ellipsisLabel } from './label';\nimport { applyRotate, applyTranslate } from './matrix';\nimport { formatPadding } from './util';\nexport function renderTag(container, tagCfg) {\n var x = tagCfg.x,\n y = tagCfg.y,\n content = tagCfg.content,\n style = tagCfg.style,\n id = tagCfg.id,\n name = tagCfg.name,\n rotate = tagCfg.rotate,\n maxLength = tagCfg.maxLength,\n autoEllipsis = tagCfg.autoEllipsis,\n isVertical = tagCfg.isVertical,\n ellipsisPosition = tagCfg.ellipsisPosition,\n background = tagCfg.background;\n var tagGroup = container.addGroup({\n id: id + \"-group\",\n name: name + \"-group\",\n attrs: {\n x: x,\n y: y\n }\n });\n // Text shape\n var text = tagGroup.addShape({\n type: 'text',\n id: id,\n name: name,\n attrs: __assign({\n x: 0,\n y: 0,\n text: content\n }, style)\n });\n // maxLength 应包含 background 中的 padding 值\n var padding = formatPadding(get(background, 'padding', 0));\n if (maxLength && autoEllipsis) {\n var maxTextLength = maxLength - (padding[1] + padding[3]);\n // 超出自动省略\n ellipsisLabel(!isVertical, text, maxTextLength, ellipsisPosition);\n }\n if (background) {\n // 渲染文本背景\n var backgroundStyle = get(background, 'style', {});\n var _a = text.getCanvasBBox(),\n minX = _a.minX,\n minY = _a.minY,\n width = _a.width,\n height = _a.height;\n var tagBg = tagGroup.addShape('rect', {\n id: id + \"-bg\",\n name: id + \"-bg\",\n attrs: __assign({\n x: minX - padding[3],\n y: minY - padding[0],\n width: width + padding[1] + padding[3],\n height: height + padding[0] + padding[2]\n }, backgroundStyle)\n });\n tagBg.toBack();\n }\n applyTranslate(tagGroup, x, y);\n applyRotate(tagGroup, rotate, x, y);\n}","export default {\n fontFamily: \"\\n BlinkMacSystemFont, \\\"Segoe UI\\\", Roboto,\\\"Helvetica Neue\\\",\\n Helvetica, \\\"PingFang SC\\\", \\\"Hiragino Sans GB\\\", \\\"Microsoft YaHei\\\",\\n SimSun, \\\"sans-serif\\\"\",\n textColor: '#2C3542',\n activeTextColor: '#333333',\n uncheckedColor: '#D8D8D8',\n lineColor: '#416180',\n regionColor: '#CCD7EB',\n verticalAxisRotate: -Math.PI / 4,\n horizontalAxisRotate: Math.PI / 4,\n // descriptionIcon theme\n descriptionIconStroke: '#fff',\n descriptionIconFill: 'rgba(58, 73, 101, .25)'\n};","import { __assign, __extends } from \"tslib\";\nimport { isNumber, isString } from '@antv/util';\nimport GroupComponent from '../abstract/group-component';\nimport { renderTag } from '../util/graphic';\nimport Theme from '../util/theme';\nimport { getValueByPercent } from '../util/util';\nvar LineAnnotation = /** @class */function (_super) {\n __extends(LineAnnotation, _super);\n function LineAnnotation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @protected\n * 默认的配置项\n * @returns {object} 默认的配置项\n */\n LineAnnotation.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n name: 'annotation',\n type: 'line',\n locationType: 'region',\n start: null,\n end: null,\n style: {},\n text: null,\n defaultCfg: {\n style: {\n fill: Theme.textColor,\n fontSize: 12,\n textAlign: 'center',\n textBaseline: 'bottom',\n fontFamily: Theme.fontFamily\n },\n text: {\n position: 'center',\n autoRotate: true,\n content: null,\n offsetX: 0,\n offsetY: 0,\n style: {\n stroke: Theme.lineColor,\n lineWidth: 1\n }\n }\n }\n });\n };\n LineAnnotation.prototype.renderInner = function (group) {\n this.renderLine(group);\n if (this.get('text')) {\n this.renderLabel(group);\n }\n };\n // 绘制线\n LineAnnotation.prototype.renderLine = function (group) {\n var start = this.get('start');\n var end = this.get('end');\n var style = this.get('style');\n this.addShape(group, {\n type: 'line',\n id: this.getElementId('line'),\n name: 'annotation-line',\n attrs: __assign({\n x1: start.x,\n y1: start.y,\n x2: end.x,\n y2: end.y\n }, style)\n });\n };\n // 获取 label 的位置\n LineAnnotation.prototype.getLabelPoint = function (start, end, position) {\n var percent;\n if (position === 'start') {\n percent = 0;\n } else if (position === 'center') {\n percent = 0.5;\n } else if (isString(position) && position.indexOf('%') !== -1) {\n percent = parseInt(position, 10) / 100;\n } else if (isNumber(position)) {\n percent = position;\n } else {\n percent = 1;\n }\n if (percent > 1 || percent < 0) {\n percent = 1;\n }\n return {\n x: getValueByPercent(start.x, end.x, percent),\n y: getValueByPercent(start.y, end.y, percent)\n };\n };\n // 绘制 label\n LineAnnotation.prototype.renderLabel = function (group) {\n var text = this.get('text');\n var start = this.get('start');\n var end = this.get('end');\n var position = text.position,\n content = text.content,\n style = text.style,\n offsetX = text.offsetX,\n offsetY = text.offsetY,\n autoRotate = text.autoRotate,\n maxLength = text.maxLength,\n autoEllipsis = text.autoEllipsis,\n ellipsisPosition = text.ellipsisPosition,\n background = text.background,\n _a = text.isVertical,\n isVertical = _a === void 0 ? false : _a;\n var point = this.getLabelPoint(start, end, position);\n var x = point.x + offsetX;\n var y = point.y + offsetY;\n var cfg = {\n id: this.getElementId('line-text'),\n name: 'annotation-line-text',\n x: x,\n y: y,\n content: content,\n style: style,\n maxLength: maxLength,\n autoEllipsis: autoEllipsis,\n ellipsisPosition: ellipsisPosition,\n background: background,\n isVertical: isVertical\n };\n // 如果自动旋转\n if (autoRotate) {\n var vector = [end.x - start.x, end.y - start.y];\n cfg.rotate = Math.atan2(vector[1], vector[0]);\n }\n renderTag(group, cfg);\n };\n return LineAnnotation;\n}(GroupComponent);\nexport default LineAnnotation;","import { __assign, __extends } from \"tslib\";\nimport GroupComponent from '../abstract/group-component';\nimport { renderTag } from '../util/graphic';\nimport { applyRotate, applyTranslate } from '../util/matrix';\nimport Theme from '../util/theme';\nvar TextAnnotation = /** @class */function (_super) {\n __extends(TextAnnotation, _super);\n function TextAnnotation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @protected\n * 默认的配置项\n * @returns {object} 默认的配置项\n */\n TextAnnotation.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n name: 'annotation',\n type: 'text',\n locationType: 'point',\n x: 0,\n y: 0,\n content: '',\n rotate: null,\n style: {},\n background: null,\n maxLength: null,\n autoEllipsis: true,\n isVertical: false,\n ellipsisPosition: 'tail',\n defaultCfg: {\n style: {\n fill: Theme.textColor,\n fontSize: 12,\n textAlign: 'center',\n textBaseline: 'middle',\n fontFamily: Theme.fontFamily\n }\n }\n });\n };\n // 复写 setLocation 方法,不需要重新创建 text\n TextAnnotation.prototype.setLocation = function (location) {\n this.set('x', location.x);\n this.set('y', location.y);\n this.resetLocation();\n };\n TextAnnotation.prototype.renderInner = function (group) {\n var _a = this.getLocation(),\n x = _a.x,\n y = _a.y;\n var content = this.get('content');\n var style = this.get('style');\n var id = this.getElementId('text');\n var name = this.get('name') + \"-text\";\n var maxLength = this.get('maxLength');\n var autoEllipsis = this.get('autoEllipsis');\n var isVertical = this.get('isVertical');\n var ellipsisPosition = this.get('ellipsisPosition');\n var background = this.get('background');\n var rotate = this.get('rotate');\n var cfg = {\n id: id,\n name: name,\n x: x,\n y: y,\n content: content,\n style: style,\n maxLength: maxLength,\n autoEllipsis: autoEllipsis,\n isVertical: isVertical,\n ellipsisPosition: ellipsisPosition,\n background: background,\n rotate: rotate\n };\n renderTag(group, cfg);\n };\n TextAnnotation.prototype.resetLocation = function () {\n var textGroup = this.getElementByLocalId('text-group');\n if (textGroup) {\n var _a = this.getLocation(),\n x = _a.x,\n y = _a.y;\n var rotate = this.get('rotate');\n applyTranslate(textGroup, x, y);\n applyRotate(textGroup, rotate, x, y);\n }\n };\n return TextAnnotation;\n}(GroupComponent);\nexport default TextAnnotation;","import { __assign, __extends } from \"tslib\";\nimport GroupComponent from '../abstract/group-component';\nimport { getCirclePoint } from '../util/util';\nvar ArcAnnotation = /** @class */function (_super) {\n __extends(ArcAnnotation, _super);\n function ArcAnnotation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @protected\n * 默认的配置项\n * @returns {object} 默认的配置项\n */\n ArcAnnotation.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n name: 'annotation',\n type: 'arc',\n locationType: 'circle',\n center: null,\n radius: 100,\n startAngle: -Math.PI / 2,\n endAngle: Math.PI * 3 / 2,\n style: {\n stroke: '#999',\n lineWidth: 1\n }\n });\n };\n ArcAnnotation.prototype.renderInner = function (group) {\n this.renderArc(group);\n };\n ArcAnnotation.prototype.getArcPath = function () {\n var _a = this.getLocation(),\n center = _a.center,\n radius = _a.radius,\n startAngle = _a.startAngle,\n endAngle = _a.endAngle;\n var startPoint = getCirclePoint(center, radius, startAngle);\n var endPoint = getCirclePoint(center, radius, endAngle);\n var largeFlag = endAngle - startAngle > Math.PI ? 1 : 0;\n var path = [['M', startPoint.x, startPoint.y]];\n if (endAngle - startAngle === Math.PI * 2) {\n // 整个圆是分割成两个圆\n var middlePoint = getCirclePoint(center, radius, startAngle + Math.PI);\n path.push(['A', radius, radius, 0, largeFlag, 1, middlePoint.x, middlePoint.y]);\n path.push(['A', radius, radius, 0, largeFlag, 1, endPoint.x, endPoint.y]);\n } else {\n path.push(['A', radius, radius, 0, largeFlag, 1, endPoint.x, endPoint.y]);\n }\n return path;\n };\n // 绘制 arc\n ArcAnnotation.prototype.renderArc = function (group) {\n // 也可以 通过 get('center') 类似的方式逐个获取\n var path = this.getArcPath();\n var style = this.get('style');\n this.addShape(group, {\n type: 'path',\n id: this.getElementId('arc'),\n name: 'annotation-arc',\n attrs: __assign({\n path: path\n }, style)\n });\n };\n return ArcAnnotation;\n}(GroupComponent);\nexport default ArcAnnotation;","import { __assign, __extends } from \"tslib\";\nimport GroupComponent from '../abstract/group-component';\nimport Theme from '../util/theme';\nimport { regionToBBox } from '../util/util';\nvar RegionAnnotation = /** @class */function (_super) {\n __extends(RegionAnnotation, _super);\n function RegionAnnotation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @protected\n * 默认的配置项\n * @returns {object} 默认的配置项\n */\n RegionAnnotation.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n name: 'annotation',\n type: 'region',\n locationType: 'region',\n start: null,\n end: null,\n style: {},\n defaultCfg: {\n style: {\n lineWidth: 0,\n fill: Theme.regionColor,\n opacity: 0.4\n }\n }\n });\n };\n RegionAnnotation.prototype.renderInner = function (group) {\n this.renderRegion(group);\n };\n RegionAnnotation.prototype.renderRegion = function (group) {\n var start = this.get('start');\n var end = this.get('end');\n var style = this.get('style');\n var bbox = regionToBBox({\n start: start,\n end: end\n });\n this.addShape(group, {\n type: 'rect',\n id: this.getElementId('region'),\n name: 'annotation-region',\n attrs: __assign({\n x: bbox.x,\n y: bbox.y,\n width: bbox.width,\n height: bbox.height\n }, style)\n });\n };\n return RegionAnnotation;\n}(GroupComponent);\nexport default RegionAnnotation;","import { __assign, __extends } from \"tslib\";\nimport GroupComponent from '../abstract/group-component';\nimport { regionToBBox } from '../util/util';\nvar ImageAnnotation = /** @class */function (_super) {\n __extends(ImageAnnotation, _super);\n function ImageAnnotation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @protected\n * 默认的配置项\n * @returns {object} 默认的配置项\n */\n ImageAnnotation.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n name: 'annotation',\n type: 'image',\n locationType: 'region',\n start: null,\n end: null,\n src: null,\n style: {}\n });\n };\n ImageAnnotation.prototype.renderInner = function (group) {\n this.renderImage(group);\n };\n ImageAnnotation.prototype.getImageAttrs = function () {\n var start = this.get('start');\n var end = this.get('end');\n var style = this.get('style');\n var bbox = regionToBBox({\n start: start,\n end: end\n });\n var src = this.get('src');\n return __assign({\n x: bbox.x,\n y: bbox.y,\n img: src,\n width: bbox.width,\n height: bbox.height\n }, style);\n };\n // 绘制图片\n ImageAnnotation.prototype.renderImage = function (group) {\n this.addShape(group, {\n type: 'image',\n id: this.getElementId('image'),\n name: 'annotation-image',\n attrs: this.getImageAttrs()\n });\n };\n return ImageAnnotation;\n}(GroupComponent);\nexport default ImageAnnotation;","import { __assign, __extends, __rest } from \"tslib\";\nimport { get } from '@antv/util';\nimport GroupComponent from '../abstract/group-component';\nimport { renderTag } from '../util/graphic';\nimport { applyTranslate } from '../util/matrix';\nimport Theme from '../util/theme';\nvar DataMarkerAnnotation = /** @class */function (_super) {\n __extends(DataMarkerAnnotation, _super);\n function DataMarkerAnnotation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * 默认的配置项\n * @returns {object} 默认的配置项\n */\n DataMarkerAnnotation.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n name: 'annotation',\n type: 'dataMarker',\n locationType: 'point',\n x: 0,\n y: 0,\n point: {},\n line: {},\n text: {},\n direction: 'upward',\n autoAdjust: true,\n coordinateBBox: null,\n defaultCfg: {\n point: {\n display: true,\n style: {\n r: 3,\n fill: '#FFFFFF',\n stroke: '#1890FF',\n lineWidth: 2\n }\n },\n line: {\n display: true,\n length: 20,\n style: {\n stroke: Theme.lineColor,\n lineWidth: 1\n }\n },\n text: {\n content: '',\n display: true,\n style: {\n fill: Theme.textColor,\n opacity: 0.65,\n fontSize: 12,\n textAlign: 'start',\n fontFamily: Theme.fontFamily\n }\n }\n }\n });\n };\n DataMarkerAnnotation.prototype.renderInner = function (group) {\n if (get(this.get('line'), 'display')) {\n this.renderLine(group);\n }\n if (get(this.get('text'), 'display')) {\n this.renderText(group);\n }\n if (get(this.get('point'), 'display')) {\n this.renderPoint(group);\n }\n if (this.get('autoAdjust')) {\n this.autoAdjust(group);\n }\n };\n DataMarkerAnnotation.prototype.applyOffset = function () {\n this.moveElementTo(this.get('group'), {\n x: this.get('x') + this.get('offsetX'),\n y: this.get('y') + this.get('offsetY')\n });\n };\n DataMarkerAnnotation.prototype.renderPoint = function (group) {\n var point = this.getShapeAttrs().point;\n this.addShape(group, {\n type: 'circle',\n id: this.getElementId('point'),\n name: 'annotation-point',\n attrs: point\n });\n };\n DataMarkerAnnotation.prototype.renderLine = function (group) {\n var line = this.getShapeAttrs().line;\n this.addShape(group, {\n type: 'path',\n id: this.getElementId('line'),\n name: 'annotation-line',\n attrs: line\n });\n };\n DataMarkerAnnotation.prototype.renderText = function (group) {\n var textAttrs = this.getShapeAttrs().text;\n var x = textAttrs.x,\n y = textAttrs.y,\n text = textAttrs.text,\n style = __rest(textAttrs, [\"x\", \"y\", \"text\"]);\n var _a = this.get('text'),\n background = _a.background,\n maxLength = _a.maxLength,\n autoEllipsis = _a.autoEllipsis,\n isVertival = _a.isVertival,\n ellipsisPosition = _a.ellipsisPosition;\n var tagCfg = {\n x: x,\n y: y,\n id: this.getElementId('text'),\n name: 'annotation-text',\n content: text,\n style: style,\n background: background,\n maxLength: maxLength,\n autoEllipsis: autoEllipsis,\n isVertival: isVertival,\n ellipsisPosition: ellipsisPosition\n };\n renderTag(group, tagCfg);\n };\n DataMarkerAnnotation.prototype.autoAdjust = function (group) {\n var direction = this.get('direction');\n var x = this.get('x');\n var y = this.get('y');\n var lineLength = get(this.get('line'), 'length', 0);\n var coordinateBBox = this.get('coordinateBBox');\n var _a = group.getBBox(),\n minX = _a.minX,\n maxX = _a.maxX,\n minY = _a.minY,\n maxY = _a.maxY;\n var textGroup = group.findById(this.getElementId('text-group'));\n var textShape = group.findById(this.getElementId('text'));\n var lineShape = group.findById(this.getElementId('line'));\n if (!coordinateBBox) {\n return;\n }\n if (textGroup) {\n var translateX = textGroup.attr('x'),\n translateY = textGroup.attr('y');\n var _b = textShape.getCanvasBBox(),\n width = _b.width,\n height = _b.height;\n var xFactor = 0,\n yFactor = 0;\n if (x + minX <= coordinateBBox.minX) {\n // 左侧超出\n if (direction === 'leftward') {\n xFactor = 1;\n } else {\n var overflow = coordinateBBox.minX - (x + minX);\n translateX = textGroup.attr('x') + overflow;\n }\n } else if (x + maxX >= coordinateBBox.maxX) {\n // 右侧超出\n if (direction === 'rightward') {\n xFactor = -1;\n } else {\n var overflow = x + maxX - coordinateBBox.maxX;\n translateX = textGroup.attr('x') - overflow;\n }\n }\n if (!!xFactor) {\n if (lineShape) {\n lineShape.attr('path', [['M', 0, 0], ['L', lineLength * xFactor, 0]]);\n }\n translateX = (lineLength + 2 + width) * xFactor;\n }\n if (y + minY <= coordinateBBox.minY) {\n // 上方超出\n if (direction === 'upward') {\n yFactor = 1;\n } else {\n var overflow = coordinateBBox.minY - (y + minY);\n translateY = textGroup.attr('y') + overflow;\n }\n } else if (y + maxY >= coordinateBBox.maxY) {\n // 下方超出\n if (direction === 'downward') {\n yFactor = -1;\n } else {\n var overflow = y + maxY - coordinateBBox.maxY;\n translateY = textGroup.attr('y') - overflow;\n }\n }\n if (!!yFactor) {\n if (lineShape) {\n lineShape.attr('path', [['M', 0, 0], ['L', 0, lineLength * yFactor]]);\n }\n translateY = (lineLength + 2 + height) * yFactor;\n }\n if (translateX !== textGroup.attr('x') || translateY !== textGroup.attr('y')) applyTranslate(textGroup, translateX, translateY);\n }\n };\n DataMarkerAnnotation.prototype.getShapeAttrs = function () {\n var lineDisplay = get(this.get('line'), 'display');\n var pointStyle = get(this.get('point'), 'style', {});\n var lineStyle = get(this.get('line'), 'style', {});\n var textStyle = get(this.get('text'), 'style', {});\n var direction = this.get('direction');\n var lineLength = lineDisplay ? get(this.get('line'), 'length', 0) : 0;\n var xFactor = 0,\n yFactor = 0;\n var textBaseline = 'top',\n textAlign = 'start';\n switch (direction) {\n case 'upward':\n yFactor = -1;\n textBaseline = 'bottom';\n break;\n case 'downward':\n yFactor = 1;\n textBaseline = 'top';\n break;\n case 'leftward':\n xFactor = -1;\n textAlign = 'end';\n break;\n case 'rightward':\n xFactor = 1;\n textAlign = 'start';\n break;\n }\n return {\n point: __assign({\n x: 0,\n y: 0\n }, pointStyle),\n line: __assign({\n path: [['M', 0, 0], ['L', lineLength * xFactor, lineLength * yFactor]]\n }, lineStyle),\n text: __assign({\n x: (lineLength + 2) * xFactor,\n y: (lineLength + 2) * yFactor,\n text: get(this.get('text'), 'content', ''),\n textBaseline: textBaseline,\n textAlign: textAlign\n }, textStyle)\n };\n };\n return DataMarkerAnnotation;\n}(GroupComponent);\nexport default DataMarkerAnnotation;","import { __assign, __extends } from \"tslib\";\nimport { get } from '@antv/util';\nimport GroupComponent from '../abstract/group-component';\nimport Theme from '../util/theme';\nimport { pointsToBBox } from '../util/util';\nimport { renderTag } from '../util/graphic';\nvar DataRegionAnnotation = /** @class */function (_super) {\n __extends(DataRegionAnnotation, _super);\n function DataRegionAnnotation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * 默认的配置项\n * @returns {object} 默认的配置项\n */\n DataRegionAnnotation.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n name: 'annotation',\n type: 'dataRegion',\n locationType: 'points',\n points: [],\n lineLength: 0,\n region: {},\n text: {},\n defaultCfg: {\n region: {\n style: {\n lineWidth: 0,\n fill: Theme.regionColor,\n opacity: 0.4\n }\n },\n text: {\n content: '',\n style: {\n textAlign: 'center',\n textBaseline: 'bottom',\n fontSize: 12,\n fill: Theme.textColor,\n fontFamily: Theme.fontFamily\n }\n }\n }\n });\n };\n DataRegionAnnotation.prototype.renderInner = function (group) {\n var regionStyle = get(this.get('region'), 'style', {});\n var textStyle = get(this.get('text'), 'style', {});\n var lineLength = this.get('lineLength') || 0;\n var points = this.get('points');\n if (!points.length) {\n return;\n }\n var bbox = pointsToBBox(points);\n // render region\n var path = [];\n path.push(['M', points[0].x, bbox.minY - lineLength]);\n points.forEach(function (point) {\n path.push(['L', point.x, point.y]);\n });\n path.push(['L', points[points.length - 1].x, points[points.length - 1].y - lineLength]);\n this.addShape(group, {\n type: 'path',\n id: this.getElementId('region'),\n name: 'annotation-region',\n attrs: __assign({\n path: path\n }, regionStyle)\n });\n // render text\n var textCfg = __assign({\n id: this.getElementId('text'),\n name: 'annotation-text',\n x: (bbox.minX + bbox.maxX) / 2,\n y: bbox.minY - lineLength\n }, this.get('text'));\n renderTag(group, textCfg);\n };\n return DataRegionAnnotation;\n}(GroupComponent);\nexport default DataRegionAnnotation;","import { __assign, __extends } from \"tslib\";\nimport { clone, each } from '@antv/util';\nimport GroupComponent from '../abstract/group-component';\nimport { regionToBBox } from '../util/util';\nvar RegionFilterAnnotation = /** @class */function (_super) {\n __extends(RegionFilterAnnotation, _super);\n function RegionFilterAnnotation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * 默认的配置项\n * @returns {object} 默认的配置项\n */\n RegionFilterAnnotation.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n name: 'annotation',\n type: 'regionFilter',\n locationType: 'region',\n start: null,\n end: null,\n color: null,\n shape: []\n });\n };\n RegionFilterAnnotation.prototype.renderInner = function (group) {\n var _this = this;\n var start = this.get('start');\n var end = this.get('end');\n // 1. add region layer\n var layer = this.addGroup(group, {\n id: this.getElementId('region-filter'),\n capture: false\n });\n // 2. clone shape & color it\n each(this.get('shapes'), function (shape, shapeIdx) {\n var type = shape.get('type');\n var attrs = clone(shape.attr());\n _this.adjustShapeAttrs(attrs);\n _this.addShape(layer, {\n id: _this.getElementId(\"shape-\" + type + \"-\" + shapeIdx),\n capture: false,\n type: type,\n attrs: attrs\n });\n });\n // 3. clip\n var clipBBox = regionToBBox({\n start: start,\n end: end\n });\n layer.setClip({\n type: 'rect',\n attrs: {\n x: clipBBox.minX,\n y: clipBBox.minY,\n width: clipBBox.width,\n height: clipBBox.height\n }\n });\n };\n RegionFilterAnnotation.prototype.adjustShapeAttrs = function (attr) {\n var color = this.get('color');\n if (attr.fill) {\n attr.fill = attr.fillStyle = color;\n }\n attr.stroke = attr.strokeStyle = color;\n };\n return RegionFilterAnnotation;\n}(GroupComponent);\nexport default RegionFilterAnnotation;","import { __assign, __extends } from \"tslib\";\nimport { isFunction, noop } from '@antv/util';\nimport GroupComponent from '../abstract/group-component';\nvar ShapeAnnotation = /** @class */function (_super) {\n __extends(ShapeAnnotation, _super);\n function ShapeAnnotation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ShapeAnnotation.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n name: 'annotation',\n type: 'shape',\n draw: noop\n });\n };\n ShapeAnnotation.prototype.renderInner = function (group) {\n var render = this.get('render');\n if (isFunction(render)) {\n render(group);\n }\n };\n return ShapeAnnotation;\n}(GroupComponent);\nexport default ShapeAnnotation;","/**\n * 获取样式\n * @param {Object} dom DOM节点\n * @param {String} name 样式名\n * @param {Any} defaultValue 默认值\n * @return {String} 属性值\n */\nexport default function getStyle(dom, name, defaultValue) {\n var v;\n try {\n v = window.getComputedStyle ? window.getComputedStyle(dom, null)[name] : dom.style[name]; // 一般不会走到这个逻辑,dom.style 获取的是标签 style 属性,也不准确\n } catch (e) {\n // do nothing\n } finally {\n v = v === undefined ? defaultValue : v;\n }\n return v;\n}","import getStyle from './get-style';\nimport getWidth from './get-width';\nexport default function getOuterWidth(el, defaultValue) {\n var width = getWidth(el, defaultValue);\n var bLeft = parseFloat(getStyle(el, 'borderLeftWidth')) || 0;\n var pLeft = parseFloat(getStyle(el, 'paddingLeft')) || 0;\n var pRight = parseFloat(getStyle(el, 'paddingRight')) || 0;\n var bRight = parseFloat(getStyle(el, 'borderRightWidth')) || 0;\n var mRight = parseFloat(getStyle(el, 'marginRight')) || 0;\n var mLeft = parseFloat(getStyle(el, 'marginLeft')) || 0;\n return width + bLeft + bRight + pLeft + pRight + mLeft + mRight;\n}","import getStyle from './get-style';\nexport default function getHeight(el, defaultValue) {\n var width = getStyle(el, 'width', defaultValue);\n if (width === 'auto') {\n width = el.offsetWidth;\n }\n return parseFloat(width);\n}","import getStyle from './get-style';\nimport getHeight from './get-height';\nexport default function getOuterHeight(el, defaultValue) {\n var height = getHeight(el, defaultValue);\n var bTop = parseFloat(getStyle(el, 'borderTopWidth')) || 0;\n var pTop = parseFloat(getStyle(el, 'paddingTop')) || 0;\n var pBottom = parseFloat(getStyle(el, 'paddingBottom')) || 0;\n var bBottom = parseFloat(getStyle(el, 'borderBottomWidth')) || 0;\n var mTop = parseFloat(getStyle(el, 'marginTop')) || 0;\n var mBottom = parseFloat(getStyle(el, 'marginBottom')) || 0;\n return height + bTop + bBottom + pTop + pBottom + mTop + mBottom;\n}","import getStyle from './get-style';\nexport default function getHeight(el, defaultValue) {\n var height = getStyle(el, 'height', defaultValue);\n if (height === 'auto') {\n height = el.offsetHeight;\n }\n return parseFloat(height);\n}","import { __assign, __extends } from \"tslib\";\nimport { createDom, modifyCSS } from '@antv/dom-util';\nimport { isNil, isString, deepMix, each, hasKey } from '@antv/util';\nimport { clearDom, createBBox, hasClass } from '../util/util';\nimport Component from './component';\nvar HtmlComponent = /** @class */function (_super) {\n __extends(HtmlComponent, _super);\n function HtmlComponent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n HtmlComponent.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n container: null,\n containerTpl: '
      ',\n updateAutoRender: true,\n containerClassName: '',\n parent: null\n });\n };\n HtmlComponent.prototype.getContainer = function () {\n return this.get('container');\n };\n /**\n * 显示组件\n */\n HtmlComponent.prototype.show = function () {\n var container = this.get('container');\n container.style.display = '';\n this.set('visible', true);\n };\n /**\n * 隐藏组件\n */\n HtmlComponent.prototype.hide = function () {\n var container = this.get('container');\n container.style.display = 'none';\n this.set('visible', false);\n };\n /**\n * 是否允许捕捉事件\n * @param capture 事件捕捉\n */\n HtmlComponent.prototype.setCapture = function (capture) {\n var container = this.getContainer();\n var value = capture ? 'auto' : 'none';\n container.style.pointerEvents = value;\n this.set('capture', capture);\n };\n HtmlComponent.prototype.getBBox = function () {\n var container = this.getContainer();\n var x = parseFloat(container.style.left) || 0;\n var y = parseFloat(container.style.top) || 0;\n return createBBox(x, y, container.clientWidth, container.clientHeight);\n };\n HtmlComponent.prototype.clear = function () {\n var container = this.get('container');\n clearDom(container);\n };\n HtmlComponent.prototype.destroy = function () {\n this.removeEvent();\n this.removeDom();\n _super.prototype.destroy.call(this);\n };\n /**\n * 复写 init,主要是初始化 DOM 和事件\n */\n HtmlComponent.prototype.init = function () {\n _super.prototype.init.call(this);\n this.initContainer();\n this.initDom();\n this.resetStyles(); // 初始化样式\n this.applyStyles(); // 应用样式\n this.initEvent();\n this.initCapture();\n this.initVisible();\n };\n HtmlComponent.prototype.initCapture = function () {\n this.setCapture(this.get('capture'));\n };\n HtmlComponent.prototype.initVisible = function () {\n if (!this.get('visible')) {\n // 设置初始显示状态\n this.hide();\n } else {\n this.show();\n }\n };\n HtmlComponent.prototype.initDom = function () {};\n HtmlComponent.prototype.initContainer = function () {\n var container = this.get('container');\n if (isNil(container)) {\n // 未指定 container 则创建\n container = this.createDom();\n var parent_1 = this.get('parent');\n if (isString(parent_1)) {\n parent_1 = document.getElementById(parent_1);\n this.set('parent', parent_1);\n }\n parent_1.appendChild(container);\n if (this.get('containerId')) {\n container.setAttribute('id', this.get('containerId'));\n }\n this.set('container', container);\n } else if (isString(container)) {\n // 用户传入的 id, 作为 container\n container = document.getElementById(container);\n this.set('container', container);\n } // else container 是 DOM\n if (!this.get('parent')) {\n this.set('parent', container.parentNode);\n }\n };\n // 样式需要进行合并,不能单纯的替换,否则使用非常不方便\n HtmlComponent.prototype.resetStyles = function () {\n var style = this.get('domStyles');\n var defaultStyles = this.get('defaultStyles');\n if (!style) {\n style = defaultStyles;\n } else {\n style = deepMix({}, defaultStyles, style);\n }\n this.set('domStyles', style);\n };\n // 应用所有的样式\n HtmlComponent.prototype.applyStyles = function () {\n var domStyles = this.get('domStyles');\n if (!domStyles) {\n return;\n }\n var container = this.getContainer();\n this.applyChildrenStyles(container, domStyles);\n var containerClassName = this.get('containerClassName');\n if (containerClassName && hasClass(container, containerClassName)) {\n var containerCss = domStyles[containerClassName];\n modifyCSS(container, containerCss);\n }\n };\n HtmlComponent.prototype.applyChildrenStyles = function (element, styles) {\n each(styles, function (style, name) {\n var elements = element.getElementsByClassName(name);\n each(elements, function (el) {\n modifyCSS(el, style);\n });\n });\n };\n // 应用到单个 DOM\n HtmlComponent.prototype.applyStyle = function (cssName, dom) {\n var domStyles = this.get('domStyles');\n modifyCSS(dom, domStyles[cssName]);\n };\n /**\n * @protected\n */\n HtmlComponent.prototype.createDom = function () {\n var containerTpl = this.get('containerTpl');\n return createDom(containerTpl);\n };\n /**\n * @protected\n * 初始化事件\n */\n HtmlComponent.prototype.initEvent = function () {};\n /**\n * @protected\n * 清理 DOM\n */\n HtmlComponent.prototype.removeDom = function () {\n var container = this.get('container');\n // 节点不一定有parentNode\n container && container.parentNode && container.parentNode.removeChild(container);\n };\n /**\n * @protected\n * 清理事件\n */\n HtmlComponent.prototype.removeEvent = function () {};\n HtmlComponent.prototype.updateInner = function (cfg) {\n // 更新样式\n if (hasKey(cfg, 'domStyles')) {\n this.resetStyles();\n this.applyStyles();\n }\n // 只要属性发生变化,都调整一些位置\n this.resetPosition();\n };\n HtmlComponent.prototype.resetPosition = function () {};\n ;\n return HtmlComponent;\n}(Component);\nexport default HtmlComponent;","import { __assign, __extends } from \"tslib\";\nimport { createDom, getOuterHeight, getOuterWidth, modifyCSS } from '@antv/dom-util';\nimport { isElement, isFunction, isNumber, isString } from '@antv/util';\nimport HtmlComponent from '../abstract/html-component';\nimport { clearDom } from '../util/util';\nvar HtmlAnnotation = /** @class */function (_super) {\n __extends(HtmlAnnotation, _super);\n function HtmlAnnotation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n HtmlAnnotation.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n name: 'annotation',\n type: 'html',\n locationType: 'point',\n x: 0,\n y: 0,\n containerTpl: \"
      \",\n alignX: 'left',\n alignY: 'top',\n html: '',\n zIndex: 7\n });\n };\n HtmlAnnotation.prototype.render = function () {\n var container = this.getContainer();\n var html = this.get('html');\n clearDom(container);\n var rst = isFunction(html) ? html(container) : html;\n if (isElement(rst)) {\n container.appendChild(rst);\n } else if (isString(rst) || isNumber(rst)) {\n var dom = createDom(\"\" + rst);\n if (dom) {\n container.appendChild(dom);\n }\n }\n this.resetPosition();\n };\n HtmlAnnotation.prototype.resetPosition = function () {\n var container = this.getContainer();\n var _a = this.getLocation(),\n x = _a.x,\n y = _a.y;\n var alignX = this.get('alignX');\n var alignY = this.get('alignY');\n var offsetX = this.get('offsetX');\n var offsetY = this.get('offsetY');\n var domWidth = getOuterWidth(container);\n var domHeight = getOuterHeight(container);\n var position = {\n x: x,\n y: y\n };\n if (alignX === 'middle') {\n position.x -= Math.round(domWidth / 2);\n } else if (alignX === 'right') {\n position.x -= Math.round(domWidth);\n }\n if (alignY === 'middle') {\n position.y -= Math.round(domHeight / 2);\n } else if (alignY === 'bottom') {\n position.y -= Math.round(domHeight);\n }\n if (offsetX) {\n position.x += offsetX;\n }\n if (offsetY) {\n position.y += offsetY;\n }\n modifyCSS(container, {\n position: 'absolute',\n left: position.x + \"px\",\n top: position.y + \"px\",\n zIndex: this.get('zIndex')\n });\n };\n return HtmlAnnotation;\n}(HtmlComponent);\nexport default HtmlAnnotation;","import { each, mix } from '@antv/util';\n// 获取多个状态量的合并值\nexport function getStatesStyle(item, elementName, stateStyles) {\n var styleName = elementName + \"Style\"; // activeStyle\n var styles = null;\n each(stateStyles, function (v, state) {\n if (item[state] && v[styleName]) {\n if (!styles) {\n styles = {};\n }\n mix(styles, v[styleName]); // 合并样式\n }\n });\n\n return styles;\n}","import { __assign, __extends } from \"tslib\";\nimport { ext } from '@antv/matrix-util';\nimport { each, filter, get, isFunction, isNil, isNumberEqual, mix, size } from '@antv/util';\nimport GroupComponent from '../abstract/group-component';\nimport { getMatrixByAngle } from '../util/matrix';\nimport { getStatesStyle } from '../util/state';\nimport Theme from '../util/theme';\nvar AxisBase = /** @class */function (_super) {\n __extends(AxisBase, _super);\n function AxisBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AxisBase.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n name: 'axis',\n ticks: [],\n line: {},\n tickLine: {},\n subTickLine: null,\n title: null,\n /**\n * 文本标签的配置项\n */\n label: {},\n /**\n * 垂直于坐标轴方向的因子,决定文本、title、tickLine 在坐标轴的哪一侧\n */\n verticalFactor: 1,\n // 垂直方向限制的长度,对文本自适应有很大影响\n verticalLimitLength: null,\n overlapOrder: ['autoRotate', 'autoEllipsis', 'autoHide'],\n tickStates: {},\n optimize: {},\n defaultCfg: {\n line: {\n // @type {Attrs} 坐标轴线的图形属性,如果设置成null,则不显示轴线\n style: {\n lineWidth: 1,\n stroke: Theme.lineColor\n }\n },\n tickLine: {\n // @type {Attrs} 标注坐标线的图形属性\n style: {\n lineWidth: 1,\n stroke: Theme.lineColor\n },\n alignTick: true,\n length: 5,\n displayWithLabel: true\n },\n subTickLine: {\n // @type {Attrs} 标注坐标线的图形属性\n style: {\n lineWidth: 1,\n stroke: Theme.lineColor\n },\n count: 4,\n length: 2\n },\n label: {\n autoRotate: true,\n autoHide: false,\n autoEllipsis: false,\n style: {\n fontSize: 12,\n fill: Theme.textColor,\n fontFamily: Theme.fontFamily,\n fontWeight: 'normal'\n },\n offset: 10,\n offsetX: 0,\n offsetY: 0\n },\n title: {\n autoRotate: true,\n spacing: 5,\n position: 'center',\n style: {\n fontSize: 12,\n fill: Theme.textColor,\n textBaseline: 'middle',\n fontFamily: Theme.fontFamily,\n textAlign: 'center'\n },\n iconStyle: {\n fill: Theme.descriptionIconFill,\n stroke: Theme.descriptionIconStroke\n },\n description: ''\n },\n tickStates: {\n active: {\n labelStyle: {\n fontWeight: 500\n },\n tickLineStyle: {\n lineWidth: 2\n }\n },\n inactive: {\n labelStyle: {\n fill: Theme.uncheckedColor\n }\n }\n },\n // 针对大数据量进行优化配置\n optimize: {\n enable: true,\n threshold: 400\n }\n },\n theme: {}\n });\n };\n /**\n * 绘制组件\n */\n AxisBase.prototype.renderInner = function (group) {\n if (this.get('line')) {\n this.drawLine(group);\n }\n // drawTicks 包括 drawLabels 和 drawTickLines\n this.drawTicks(group);\n if (this.get('title')) {\n this.drawTitle(group);\n }\n };\n // 实现 IList 接口\n AxisBase.prototype.isList = function () {\n return true;\n };\n /**\n * 获取图例项\n * @return {ListItem[]} 列表项集合\n */\n AxisBase.prototype.getItems = function () {\n return this.get('ticks');\n };\n /**\n * 设置列表项\n * @param {ListItem[]} items 列表项集合\n */\n AxisBase.prototype.setItems = function (items) {\n this.update({\n ticks: items\n });\n };\n /**\n * 更新列表项\n * @param {ListItem} item 列表项\n * @param {object} cfg 列表项\n */\n AxisBase.prototype.updateItem = function (item, cfg) {\n mix(item, cfg);\n this.clear(); // 由于单个图例项变化,会引起全局变化,所以全部更新\n this.render();\n };\n /**\n * 清空列表\n */\n AxisBase.prototype.clearItems = function () {\n var itemGroup = this.getElementByLocalId('label-group');\n itemGroup && itemGroup.clear();\n };\n /**\n * 设置列表项的状态\n * @param {ListItem} item 列表项\n * @param {string} state 状态名\n * @param {boolean} value 状态值, true, false\n */\n AxisBase.prototype.setItemState = function (item, state, value) {\n item[state] = value;\n this.updateTickStates(item); // 应用状态样式\n };\n /**\n * 是否存在指定的状态\n * @param {ListItem} item 列表项\n * @param {boolean} state 状态名\n */\n AxisBase.prototype.hasState = function (item, state) {\n return !!item[state];\n };\n AxisBase.prototype.getItemStates = function (item) {\n var tickStates = this.get('tickStates');\n var rst = [];\n each(tickStates, function (v, k) {\n if (item[k]) {\n // item.selected\n rst.push(k);\n }\n });\n return rst;\n };\n /**\n * 清楚所有列表项的状态\n * @param {string} state 状态值\n */\n AxisBase.prototype.clearItemsState = function (state) {\n var _this = this;\n var items = this.getItemsByState(state);\n each(items, function (item) {\n _this.setItemState(item, state, false);\n });\n };\n /**\n * 根据状态获取图例项\n * @param {string} state [description]\n * @return {ListItem[]} [description]\n */\n AxisBase.prototype.getItemsByState = function (state) {\n var _this = this;\n var items = this.getItems();\n return filter(items, function (item) {\n return _this.hasState(item, state);\n });\n };\n AxisBase.prototype.getSidePoint = function (point, offset) {\n var self = this;\n var vector = self.getSideVector(offset, point);\n return {\n x: point.x + vector[0],\n y: point.y + vector[1]\n };\n };\n AxisBase.prototype.getTextAnchor = function (vector) {\n var align;\n if (isNumberEqual(vector[0], 0)) {\n align = 'center';\n } else if (vector[0] > 0) {\n align = 'start';\n } else if (vector[0] < 0) {\n align = 'end';\n }\n return align;\n };\n AxisBase.prototype.getTextBaseline = function (vector) {\n var base;\n if (isNumberEqual(vector[1], 0)) {\n base = 'middle';\n } else if (vector[1] > 0) {\n base = 'top';\n } else if (vector[1] < 0) {\n base = 'bottom';\n }\n return base;\n };\n AxisBase.prototype.processOverlap = function (labelGroup) {};\n // 绘制坐标轴线\n AxisBase.prototype.drawLine = function (group) {\n var path = this.getLinePath();\n var line = this.get('line'); // line 的判空在调用 drawLine 之前,不在这里判定\n this.addShape(group, {\n type: 'path',\n id: this.getElementId('line'),\n name: 'axis-line',\n attrs: mix({\n path: path\n }, line.style)\n });\n };\n AxisBase.prototype.getTickLineItems = function (ticks) {\n var _this = this;\n var tickLineItems = [];\n var tickLine = this.get('tickLine');\n var alignTick = tickLine.alignTick;\n var tickLineLength = tickLine.length;\n var tickSegment = 1;\n var tickCount = ticks.length;\n if (tickCount >= 2) {\n tickSegment = ticks[1].value - ticks[0].value;\n }\n each(ticks, function (tick) {\n var point = tick.point;\n if (!alignTick) {\n // tickLine 不同 tick 对齐时需要调整 point\n point = _this.getTickPoint(tick.value - tickSegment / 2);\n }\n var endPoint = _this.getSidePoint(point, tickLineLength);\n tickLineItems.push({\n startPoint: point,\n tickValue: tick.value,\n endPoint: endPoint,\n tickId: tick.id,\n id: \"tickline-\" + tick.id\n });\n });\n // 如果 tickLine 不居中对齐,则需要在最后面补充一个 tickLine\n // if (!alignTick && tickCount > 0) {\n // const tick = ticks[tickCount - 1];\n // const point = this.getTickPoint(tick.value + tickSegment / 2);\n // }\n return tickLineItems;\n };\n AxisBase.prototype.getSubTickLineItems = function (tickLineItems) {\n var subTickLineItems = [];\n var subTickLine = this.get('subTickLine');\n var subCount = subTickLine.count;\n var tickLineCount = tickLineItems.length;\n // 刻度线的数量大于 2 时,才绘制子刻度\n if (tickLineCount >= 2) {\n for (var i = 0; i < tickLineCount - 1; i++) {\n var pre = tickLineItems[i];\n var next = tickLineItems[i + 1];\n for (var j = 0; j < subCount; j++) {\n var percent = (j + 1) / (subCount + 1);\n var tickValue = (1 - percent) * pre.tickValue + percent * next.tickValue;\n var point = this.getTickPoint(tickValue);\n var endPoint = this.getSidePoint(point, subTickLine.length);\n subTickLineItems.push({\n startPoint: point,\n endPoint: endPoint,\n tickValue: tickValue,\n id: \"sub-\" + pre.id + \"-\" + j\n });\n }\n }\n }\n return subTickLineItems;\n };\n AxisBase.prototype.getTickLineAttrs = function (tickItem, type, index, tickItems) {\n var style = this.get(type).style;\n // 保持和 grid 相同的数据结构\n var item = {\n points: [tickItem.startPoint, tickItem.endPoint]\n };\n var defaultTickLineStyle = get(this.get('theme'), ['tickLine', 'style'], {});\n style = isFunction(style) ? mix({}, defaultTickLineStyle, style(item, index, tickItems)) : style;\n var startPoint = tickItem.startPoint,\n endPoint = tickItem.endPoint;\n return __assign({\n x1: startPoint.x,\n y1: startPoint.y,\n x2: endPoint.x,\n y2: endPoint.y\n }, style);\n };\n // 绘制坐标轴刻度线\n AxisBase.prototype.drawTick = function (tickItem, tickLineGroup, type, index, tickItems) {\n this.addShape(tickLineGroup, {\n type: 'line',\n id: this.getElementId(tickItem.id),\n name: \"axis-\" + type,\n attrs: this.getTickLineAttrs(tickItem, type, index, tickItems)\n });\n };\n // 绘制坐标轴刻度线,包括子刻度线\n AxisBase.prototype.drawTickLines = function (group) {\n var _this = this;\n var ticks = this.get('ticks');\n var subTickLine = this.get('subTickLine');\n var tickLineItems = this.getTickLineItems(ticks);\n var tickLineGroup = this.addGroup(group, {\n name: 'axis-tickline-group',\n id: this.getElementId('tickline-group')\n });\n var tickCfg = this.get('tickLine');\n each(tickLineItems, function (item, index) {\n if (tickCfg.displayWithLabel) {\n // 如果跟随 label 显示,则检测是否存在对应的 label\n var labelId = _this.getElementId(\"label-\" + item.tickId);\n if (group.findById(labelId)) {\n _this.drawTick(item, tickLineGroup, 'tickLine', index, tickLineItems);\n }\n } else {\n _this.drawTick(item, tickLineGroup, 'tickLine', index, tickLineItems);\n }\n });\n if (subTickLine) {\n var subTickLineItems_1 = this.getSubTickLineItems(tickLineItems);\n each(subTickLineItems_1, function (item, index) {\n _this.drawTick(item, tickLineGroup, 'subTickLine', index, subTickLineItems_1);\n });\n }\n };\n // 预处理 ticks 确定位置和补充 id\n AxisBase.prototype.processTicks = function () {\n var _this = this;\n var ticks = this.get('ticks');\n each(ticks, function (tick) {\n tick.point = _this.getTickPoint(tick.value);\n // 补充 tick 的 id,为动画和更新做准备\n if (isNil(tick.id)) {\n // 默认使用 tick.name 作为id\n tick.id = tick.name;\n }\n });\n };\n // 绘制 ticks 包括文本和 tickLine\n AxisBase.prototype.drawTicks = function (group) {\n var _this = this;\n this.optimizeTicks();\n this.processTicks();\n if (this.get('label')) {\n this.drawLabels(group);\n }\n if (this.get('tickLine')) {\n this.drawTickLines(group);\n }\n var ticks = this.get('ticks');\n each(ticks, function (tick) {\n _this.applyTickStates(tick, group);\n });\n };\n /**\n * 根据 optimize 配置对 ticks 进行抽样,对抽样过后的 ticks 才进行真实的渲染\n */\n AxisBase.prototype.optimizeTicks = function () {\n var optimize = this.get('optimize');\n var ticks = this.get('ticks');\n if (optimize && optimize.enable && optimize.threshold > 0) {\n var len = size(ticks);\n if (len > optimize.threshold) {\n var page_1 = Math.ceil(len / optimize.threshold);\n var optimizedTicks = ticks.filter(function (tick, idx) {\n return idx % page_1 === 0;\n });\n this.set('ticks', optimizedTicks);\n this.set('originalTicks', ticks);\n }\n }\n };\n // 获取 label 的配置项\n AxisBase.prototype.getLabelAttrs = function (tick, index, ticks) {\n var labelCfg = this.get('label');\n var offset = labelCfg.offset,\n offsetX = labelCfg.offsetX,\n offsetY = labelCfg.offsetY,\n rotate = labelCfg.rotate,\n formatter = labelCfg.formatter;\n var point = this.getSidePoint(tick.point, offset);\n var vector = this.getSideVector(offset, point);\n var text = formatter ? formatter(tick.name, tick, index) : tick.name;\n var style = labelCfg.style;\n style = isFunction(style) ? get(this.get('theme'), ['label', 'style'], {}) : style;\n var attrs = mix({\n x: point.x + offsetX,\n y: point.y + offsetY,\n text: text,\n textAlign: this.getTextAnchor(vector),\n textBaseline: this.getTextBaseline(vector)\n }, style);\n if (rotate) {\n attrs.matrix = getMatrixByAngle(point, rotate);\n }\n return attrs;\n };\n // 绘制文本\n AxisBase.prototype.drawLabels = function (group) {\n var _this = this;\n var ticks = this.get('ticks');\n var labelGroup = this.addGroup(group, {\n name: 'axis-label-group',\n id: this.getElementId('label-group')\n });\n each(ticks, function (tick, index) {\n _this.addShape(labelGroup, {\n type: 'text',\n name: 'axis-label',\n id: _this.getElementId(\"label-\" + tick.id),\n attrs: _this.getLabelAttrs(tick, index, ticks),\n delegateObject: {\n tick: tick,\n item: tick,\n index: index\n }\n });\n });\n this.processOverlap(labelGroup);\n // 处理完后再进行 style 回调处理\n var labels = labelGroup.getChildren();\n var defaultLabelStyle = get(this.get('theme'), ['label', 'style'], {});\n var _a = this.get('label'),\n style = _a.style,\n formatter = _a.formatter;\n if (isFunction(style)) {\n var afterProcessTicks_1 = labels.map(function (label) {\n return get(label.get('delegateObject'), 'tick');\n });\n each(labels, function (label, index) {\n var tick = label.get('delegateObject').tick;\n var text = formatter ? formatter(tick.name, tick, index) : tick.name;\n var newStyle = mix({}, defaultLabelStyle, style(text, index, afterProcessTicks_1));\n label.attr(newStyle);\n });\n }\n };\n // 标题的属性\n AxisBase.prototype.getTitleAttrs = function () {\n var titleCfg = this.get('title');\n var style = titleCfg.style,\n position = titleCfg.position,\n offset = titleCfg.offset,\n _a = titleCfg.spacing,\n spacing = _a === void 0 ? 0 : _a,\n autoRotate = titleCfg.autoRotate;\n var titleHeight = style.fontSize;\n var percent = 0.5;\n if (position === 'start') {\n percent = 0;\n } else if (position === 'end') {\n percent = 1;\n }\n var point = this.getTickPoint(percent); // 标题对应的坐标轴上的点\n // 如果没有指定 titleOffset 也没有渲染 label,这里需要自动计算 offset\n var titlePoint = this.getSidePoint(point, offset || spacing + titleHeight / 2); // 标题的点\n var attrs = mix({\n x: titlePoint.x,\n y: titlePoint.y,\n text: titleCfg.text\n }, style);\n var rotate = titleCfg.rotate; // rotate 是角度值\n var angle = rotate;\n if (isNil(rotate) && autoRotate) {\n // 用户没有设定旋转角度,同时设置自动旋转\n var vector = this.getAxisVector(point);\n var v1 = [1, 0]; // 水平方向的向量\n angle = ext.angleTo(vector, v1, true);\n }\n if (angle) {\n var matrix = getMatrixByAngle(titlePoint, angle);\n attrs.matrix = matrix;\n }\n return attrs;\n };\n // 绘制标题\n AxisBase.prototype.drawTitle = function (group) {\n var _a;\n var titleAttrs = this.getTitleAttrs();\n var titleShape = this.addShape(group, {\n type: 'text',\n id: this.getElementId('title'),\n name: 'axis-title',\n attrs: titleAttrs\n });\n // description字段存在时,显示icon\n if ((_a = this.get('title')) === null || _a === void 0 ? void 0 : _a.description) {\n this.drawDescriptionIcon(group, titleShape, titleAttrs.matrix);\n }\n };\n AxisBase.prototype.drawDescriptionIcon = function (group, titleShape, matrix) {\n var descriptionShape = this.addGroup(group, {\n name: 'axis-description',\n id: this.getElementById('description')\n });\n var _a = titleShape.getBBox(),\n maxX = _a.maxX,\n maxY = _a.maxY,\n height = _a.height;\n var iconStyle = this.get('title').iconStyle;\n var spacing = 4; // 设置icon与文本之间距离\n var r = height / 2;\n var lineWidth = r / 6;\n var startX = maxX + spacing;\n var startY = maxY - height / 2;\n // 绘制 information icon 路径\n // 外圆环path\n var _b = [startX + r, startY - r],\n x0 = _b[0],\n y0 = _b[1];\n var _c = [x0 + r, y0 + r],\n x1 = _c[0],\n y1 = _c[1];\n var _d = [x0, y1 + r],\n x2 = _d[0],\n y2 = _d[1];\n var _e = [startX, y0 + r],\n x3 = _e[0],\n y3 = _e[1];\n // i path\n var _f = [startX + r, startY - height / 4],\n x4 = _f[0],\n y4 = _f[1];\n var _g = [x4, y4 + lineWidth],\n x5 = _g[0],\n y5 = _g[1];\n var _h = [x5, y5 + lineWidth],\n x6 = _h[0],\n y6 = _h[1];\n var _j = [x6, y6 + r * 3 / 4],\n x7 = _j[0],\n y7 = _j[1];\n this.addShape(descriptionShape, {\n type: 'path',\n id: this.getElementId('title-description-icon'),\n name: 'axis-title-description-icon',\n attrs: __assign({\n path: [['M', x0, y0], ['A', r, r, 0, 0, 1, x1, y1], ['A', r, r, 0, 0, 1, x2, y2], ['A', r, r, 0, 0, 1, x3, y3], ['A', r, r, 0, 0, 1, x0, y0], ['M', x4, y4], ['L', x5, y5], ['M', x6, y6], ['L', x7, y7]],\n lineWidth: lineWidth,\n matrix: matrix\n }, iconStyle)\n });\n // 点击热区,设置透明矩形\n this.addShape(descriptionShape, {\n type: 'rect',\n id: this.getElementId('title-description-rect'),\n name: 'axis-title-description-rect',\n attrs: {\n x: startX,\n y: startY - height / 2,\n width: height,\n height: height,\n stroke: '#000',\n fill: '#000',\n opacity: 0,\n matrix: matrix,\n cursor: 'pointer'\n }\n });\n };\n AxisBase.prototype.applyTickStates = function (tick, group) {\n var states = this.getItemStates(tick);\n if (states.length) {\n var tickStates = this.get('tickStates');\n // 分别更新 label 和 tickLine\n var labelId = this.getElementId(\"label-\" + tick.id);\n var labelShape = group.findById(labelId);\n if (labelShape) {\n var labelStateStyle = getStatesStyle(tick, 'label', tickStates);\n labelStateStyle && labelShape.attr(labelStateStyle);\n }\n var tickLineId = this.getElementId(\"tickline-\" + tick.id);\n var tickLineShape = group.findById(tickLineId);\n if (tickLineShape) {\n var tickLineStateStyle = getStatesStyle(tick, 'tickLine', tickStates);\n tickLineStateStyle && tickLineShape.attr(tickLineStateStyle);\n }\n }\n };\n AxisBase.prototype.updateTickStates = function (tick) {\n var states = this.getItemStates(tick);\n var tickStates = this.get('tickStates');\n var labelCfg = this.get('label');\n var labelShape = this.getElementByLocalId(\"label-\" + tick.id);\n var tickLineCfg = this.get('tickLine');\n var tickLineShape = this.getElementByLocalId(\"tickline-\" + tick.id);\n if (states.length) {\n if (labelShape) {\n var labelStateStyle = getStatesStyle(tick, 'label', tickStates);\n labelStateStyle && labelShape.attr(labelStateStyle);\n }\n if (tickLineShape) {\n var tickLineStateStyle = getStatesStyle(tick, 'tickLine', tickStates);\n tickLineStateStyle && tickLineShape.attr(tickLineStateStyle);\n }\n } else {\n if (labelShape) {\n labelShape.attr(labelCfg.style);\n }\n if (tickLineShape) {\n tickLineShape.attr(tickLineCfg.style);\n }\n }\n };\n return AxisBase;\n}(GroupComponent);\nexport default AxisBase;","import { each } from '@antv/util';\nimport { ellipsisLabel } from '../../util/label';\nfunction ellipseLabels(isVertical, labelGroup, limitLength, position) {\n var children = labelGroup.getChildren();\n var ellipsisFlag = false;\n each(children, function (label) {\n var rst = ellipsisLabel(isVertical, label, limitLength, position);\n ellipsisFlag = ellipsisFlag || rst;\n });\n return ellipsisFlag;\n}\nexport function getDefault() {\n return ellipsisTail;\n}\nexport function ellipsisHead(isVertical, labelGroup, limitLength) {\n return ellipseLabels(isVertical, labelGroup, limitLength, 'head');\n}\nexport function ellipsisTail(isVertical, labelGroup, limitLength) {\n return ellipseLabels(isVertical, labelGroup, limitLength, 'tail');\n}\nexport function ellipsisMiddle(isVertical, labelGroup, limitLength) {\n return ellipseLabels(isVertical, labelGroup, limitLength, 'middle');\n}","import { getMaxLabelWidth } from '../../util/label';\nimport { getAngleByMatrix } from '../../util/matrix';\nimport { near } from '../../util/util';\n// 文本是否旋转\nfunction isRotate(label) {\n var matrix = label.attr('matrix');\n return matrix && matrix[0] !== 1; // 仅在这个场景下判定\n}\n\nfunction getRotateAngle(label) {\n var angle = isRotate(label) ? getAngleByMatrix(label.attr('matrix')) : 0;\n return angle % 360;\n}\n// autohide 不再考虑超出限制\n// function isOutLimit(isVertical: boolean, label: IElement, limitLength: number) {\n// if (!limitLength) {\n// // 如果没限制 limitLength 则直接返回 false\n// return false;\n// }\n// const canvasBBox = label.getCanvasBBox();\n// let isOut = false;\n// if (isVertical) {\n// isOut = canvasBBox.width > limitLength;\n// } else {\n// isOut = canvasBBox.height > limitLength;\n// }\n// return isOut;\n// }\n// 是否重叠\nfunction isOverlap(isVertical, first, second, minGap) {\n var overlap = false;\n var angle = getRotateAngle(first);\n var distance = isVertical ? Math.abs(second.attr('y') - first.attr('y')) : Math.abs(second.attr('x') - first.attr('x'));\n var prevBBox = (isVertical ? second.attr('y') > first.attr('y') : second.attr('x') > first.attr('x')) ? first.getBBox() : second.getBBox();\n if (isVertical) {\n var ratio = Math.abs(Math.cos(angle));\n if (near(ratio, 0, Math.PI / 180)) {\n overlap = prevBBox.width + minGap > distance;\n } else {\n overlap = prevBBox.height / ratio + minGap > distance;\n }\n } else {\n var ratio = Math.abs(Math.sin(angle));\n if (near(ratio, 0, Math.PI / 180)) {\n overlap = prevBBox.width + minGap > distance;\n } else {\n overlap = prevBBox.height / ratio + minGap > distance;\n }\n }\n return overlap;\n}\n// 保留第一个或者最后一个\nfunction reserveOne(isVertical, labelsGroup, reversed, autoHideCfg) {\n var minGap = (autoHideCfg === null || autoHideCfg === void 0 ? void 0 : autoHideCfg.minGap) || 0;\n var labels = labelsGroup.getChildren().slice() // 复制数组\n .filter(function (item) {\n return item.get('visible');\n });\n if (!labels.length) {\n return false;\n }\n var hasHide = false;\n if (reversed) {\n // 翻转\n labels.reverse();\n }\n var count = labels.length;\n var first = labels[0];\n var prev = first;\n for (var i = 1; i < count; i++) {\n var label = labels[i];\n var curBBox = label.getBBox();\n // 不再考虑超出限制,而仅仅根据是否重叠进行隐藏 isOutLimit(isVertical, label, limitLength) ||\n var isHide = isOverlap(isVertical, prev, label, minGap);\n if (isHide) {\n label.hide();\n hasHide = true;\n } else {\n prev = label;\n }\n }\n return hasHide;\n}\n// 均匀抽样隐藏标签,注意这里假设 label/tick 是均匀的\nfunction parityHide(isVertical, labelsGroup, autoHideCfg) {\n var minGap = (autoHideCfg === null || autoHideCfg === void 0 ? void 0 : autoHideCfg.minGap) || 0;\n var labels = labelsGroup.getChildren().slice(); // 复制数组\n if (labels.length < 2) {\n // 如果数量小于 2 则直接返回,等于 2 时可能也会重合\n return false;\n }\n var hasHide = false;\n var first = labels[0];\n var firstBBox = first.getBBox();\n var second = labels[1];\n var count = labels.length;\n var angle = getRotateAngle(first);\n var distance = isVertical ? Math.abs(second.attr('y') - first.attr('y')) : Math.abs(second.attr('x') - first.attr('x'));\n var interval = 0; // 不重叠的坐标文本间距个数\n if (isVertical) {\n // 垂直的坐标轴计算垂直方向的间距\n var ratio = Math.abs(Math.cos(angle));\n if (near(ratio, 0, Math.PI / 180)) {\n var maxWidth = getMaxLabelWidth(labels);\n interval = (maxWidth + minGap) / distance;\n } else {\n interval = (firstBBox.height / ratio + minGap) / distance;\n }\n } else {\n // 水平坐标轴\n var ratio = Math.abs(Math.sin(angle));\n if (near(ratio, 0, Math.PI / 180)) {\n var maxWidth = getMaxLabelWidth(labels);\n interval = (maxWidth + minGap) / distance;\n } else {\n interval = (firstBBox.height / ratio + minGap) / distance;\n }\n }\n // interval > 1 时需要对 label 进行隐藏\n if (interval > 1) {\n interval = Math.ceil(interval);\n for (var i = 0; i < count; i++) {\n if (i % interval !== 0) {\n // 仅保留被整除的 label\n labels[i].hide();\n hasHide = true;\n }\n }\n }\n return hasHide;\n}\nexport function getDefault() {\n return equidistance;\n}\n/**\n * 保证首个 label 可见,即使超过 limitLength 也不隐藏\n * @param {boolean} isVertical 是否垂直\n * @param {IGroup} labelsGroup label 的分组\n * @param {number} limitLength 另一个方向的长度限制,autoHide 不关心\n * @param {AxisLabelAutoHideCfg} autoHideCfg autoHide overlap 的可选配置参数\n */\nexport function reserveFirst(isVertical, labelsGroup, limitLength, autoHideCfg) {\n return reserveOne(isVertical, labelsGroup, false, autoHideCfg);\n}\n/**\n * 保证最后一个 label 可见,即使超过 limitLength 也不隐藏\n * @param {boolean} isVertical 是否垂直\n * @param {IGroup} labelsGroup label 的分组\n * @param {number} limitLength 另一个方向的长度限制,autoHide 不关心\n * @param {AxisLabelAutoHideCfg} autoHideCfg autoHide overlap 的可选配置参数\n */\nexport function reserveLast(isVertical, labelsGroup, limitLength, autoHideCfg) {\n return reserveOne(isVertical, labelsGroup, true, autoHideCfg);\n}\n/**\n * 保证第一个最后一个 label 可见,即使超过 limitLength 也不隐藏\n * @param {boolean} isVertical 是否垂直\n * @param {IGroup} labelsGroup label 的分组\n * @param {number} limitLength 另一个方向的长度限制,autoHide 不关心\n * @param {AxisLabelAutoHideCfg} autoHideCfg autoHide overlap 的可选配置参数\n */\nexport function reserveBoth(isVertical, labelsGroup, limitLength, autoHideCfg) {\n var minGap = (autoHideCfg === null || autoHideCfg === void 0 ? void 0 : autoHideCfg.minGap) || 0;\n var labels = labelsGroup.getChildren().slice(); // 复制数组\n if (labels.length <= 2) {\n // 如果数量小于或等于 2 则直接返回\n return false;\n }\n var hasHide = false;\n var count = labels.length;\n var first = labels[0];\n var last = labels[count - 1];\n var preLabel = first;\n // 按照先保存第一个的逻辑循环一遍,最后一个不参与循环\n for (var i = 1; i < count - 1; i++) {\n var label = labels[i];\n var curBBox = label.getBBox();\n // 废弃 isOutLimit(isVertical, label, limitLength) ||\n var isHide = isOverlap(isVertical, preLabel, label, minGap);\n if (isHide) {\n label.hide();\n hasHide = true;\n } else {\n preLabel = label;\n }\n }\n var overlap = isOverlap(isVertical, preLabel, last, minGap);\n if (overlap) {\n // 发生冲突,则隐藏前一个保留后一个\n preLabel.hide();\n hasHide = true;\n }\n return hasHide;\n}\n/**\n * 保证 label 均匀显示 和 不出现重叠,主要解决文本层叠的问题,对于 limitLength 不处理\n * @param {boolean} isVertical 是否垂直\n * @param {IGroup} labelsGroup label 的分组\n * @param {number} limitLength 另一个方向的长度限制,autoHide 不关心\n * @param {AxisLabelAutoHideCfg} autoHideCfg autoHide overlap 的可选配置参数\n */\nexport function equidistance(isVertical, labelsGroup, limitLength, autoHideCfg) {\n var hasHide = parityHide(isVertical, labelsGroup, autoHideCfg);\n // 处理 timeCat 类型的 tick,在均匀的基础上,再次检查出现重叠的进行隐藏\n if (reserveOne(isVertical, labelsGroup, false)) {\n hasHide = true;\n }\n return hasHide;\n}\n/**\n * 同 equidistance, 首先会保证 labels 均匀显示,然后会保留首尾\n * @param isVertical\n * @param labelsGroup\n * @param {number} limitLength 另一个方向的长度限制,autoHide 不关心\n * @param {AxisLabelAutoHideCfg} autoHideCfg autoHide overlap 的可选配置参数\n */\nexport function equidistanceWithReverseBoth(isVertical, labelsGroup, limitLength, autoHideCfg) {\n var labels = labelsGroup.getChildren().slice(); // 复制数组\n var hasHide = parityHide(isVertical, labelsGroup, autoHideCfg);\n if (labels.length > 2) {\n var first = labels[0];\n var last = labels[labels.length - 1];\n // 如果第一个被隐藏了\n if (!first.get('visible')) {\n first.show();\n if (reserveOne(isVertical, labelsGroup, false, autoHideCfg)) {\n hasHide = true;\n }\n }\n // 如果最后一个被隐藏了\n if (!last.get('visible')) {\n last.show();\n if (reserveOne(isVertical, labelsGroup, true, autoHideCfg)) {\n hasHide = true;\n }\n }\n }\n return hasHide;\n}","import { each, isNumber } from '@antv/util';\nimport { getMaxLabelWidth } from '../../util/label';\nimport { getMatrixByAngle } from '../../util/matrix';\nimport Theme from '../../util/theme';\n// 统一设置文本的角度\nfunction setLabelsAngle(labels, angle) {\n each(labels, function (label) {\n var x = label.attr('x');\n var y = label.attr('y');\n var matrix = getMatrixByAngle({\n x: x,\n y: y\n }, angle);\n label.attr('matrix', matrix);\n });\n}\n// 旋转文本\nfunction labelRotate(isVertical, labelsGroup, limitLength, getAngle) {\n var labels = labelsGroup.getChildren();\n if (!labels.length) {\n return false;\n }\n if (!isVertical && labels.length < 2) {\n // 水平时至少有两个时才旋转\n return false;\n }\n var maxWidth = getMaxLabelWidth(labels);\n var isOverlap = false;\n if (isVertical) {\n // limitLength 为 0 或者 null 时不生效\n isOverlap = !!limitLength && maxWidth > limitLength;\n } else {\n // 同 limitLength 无关\n var tickWidth = Math.abs(labels[1].attr('x') - labels[0].attr('x'));\n isOverlap = maxWidth > tickWidth;\n }\n if (isOverlap) {\n var angle = getAngle(limitLength, maxWidth);\n setLabelsAngle(labels, angle);\n }\n return isOverlap;\n}\nexport function getDefault() {\n return fixedAngle;\n}\n/**\n * 固定角度旋转文本\n * @param {boolean} isVertical 是否垂直方向\n * @param {IGroup} labelsGroup 文本的 group\n * @param {number} limitLength 限定长度\n * @param {number} customRotate 自定义旋转角度\n * @return {boolean} 是否发生了旋转\n */\nexport function fixedAngle(isVertical, labelsGroup, limitLength, customRotate) {\n return labelRotate(isVertical, labelsGroup, limitLength, function () {\n if (isNumber(customRotate)) {\n return customRotate;\n }\n return isVertical ? Theme.verticalAxisRotate : Theme.horizontalAxisRotate;\n });\n}\n/**\n * 非固定角度旋转文本\n * @param {boolean} isVertical 是否垂直方向\n * @param {IGroup} labelsGroup 文本的 group\n * @param {number} limitLength 限定长度\n * @return {boolean} 是否发生了旋转\n */\nexport function unfixedAngle(isVertical, labelsGroup, limitLength) {\n return labelRotate(isVertical, labelsGroup, limitLength, function (length, maxWidth) {\n if (!length) {\n // 如果没有设置 limitLength,则使用固定的角度旋转\n return isVertical ? Theme.verticalAxisRotate : Theme.horizontalAxisRotate;\n }\n if (isVertical) {\n // 垂直时不需要判定 limitLength > maxWidth ,因为此时不会 overlap\n return -Math.acos(length / maxWidth);\n } else {\n var angle = 0;\n if (length > maxWidth) {\n // 需要判定,asin 的参数 -1, 1\n angle = Math.PI / 4;\n } else {\n angle = Math.asin(length / maxWidth);\n if (angle > Math.PI / 4) {\n // 大于 Math.PI / 4 时没意义\n angle = Math.PI / 4;\n }\n }\n return angle;\n }\n });\n}","import { __assign, __extends } from \"tslib\";\nimport { vec2 } from '@antv/matrix-util';\nimport { each, isFunction, isNil, isNumberEqual, isObject } from '@antv/util';\nimport AxisBase from './base';\nimport * as OverlapUtil from './overlap';\nvar Line = /** @class */function (_super) {\n __extends(Line, _super);\n function Line() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Line.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n type: 'line',\n locationType: 'region',\n /**\n * 起始点, x, y\n * @type {object}\n */\n start: null,\n /**\n * 结束点, x, y\n * @type {object}\n */\n end: null\n });\n };\n // 获取坐标轴线的 path\n Line.prototype.getLinePath = function () {\n var start = this.get('start');\n var end = this.get('end');\n var path = [];\n path.push(['M', start.x, start.y]);\n path.push(['L', end.x, end.y]);\n return path;\n };\n // 重新计算 layout bbox,考虑到 line 不显示\n Line.prototype.getInnerLayoutBBox = function () {\n var start = this.get('start');\n var end = this.get('end');\n var bbox = _super.prototype.getInnerLayoutBBox.call(this);\n var minX = Math.min(start.x, end.x, bbox.x);\n var minY = Math.min(start.y, end.y, bbox.y);\n var maxX = Math.max(start.x, end.x, bbox.maxX);\n var maxY = Math.max(start.y, end.y, bbox.maxY);\n return {\n x: minX,\n y: minY,\n minX: minX,\n minY: minY,\n maxX: maxX,\n maxY: maxY,\n width: maxX - minX,\n height: maxY - minY\n };\n };\n Line.prototype.isVertical = function () {\n var start = this.get('start');\n var end = this.get('end');\n return isNumberEqual(start.x, end.x);\n };\n Line.prototype.isHorizontal = function () {\n var start = this.get('start');\n var end = this.get('end');\n return isNumberEqual(start.y, end.y);\n };\n Line.prototype.getTickPoint = function (tickValue) {\n var self = this;\n var start = self.get('start');\n var end = self.get('end');\n var regionX = end.x - start.x;\n var regionY = end.y - start.y;\n return {\n x: start.x + regionX * tickValue,\n y: start.y + regionY * tickValue\n };\n };\n // 直线坐标轴下任一点的向量方向都相同\n Line.prototype.getSideVector = function (offset) {\n var axisVector = this.getAxisVector();\n var normal = vec2.normalize([0, 0], axisVector);\n var factor = this.get('verticalFactor');\n var verticalVector = [normal[1], normal[0] * -1]; // 垂直方向,逆时针方向\n return vec2.scale([0, 0], verticalVector, offset * factor);\n };\n // 获取坐标轴的向量\n Line.prototype.getAxisVector = function () {\n var start = this.get('start');\n var end = this.get('end');\n return [end.x - start.x, end.y - start.y];\n };\n Line.prototype.processOverlap = function (labelGroup) {\n var _this = this;\n var isVertical = this.isVertical();\n var isHorizontal = this.isHorizontal();\n // 非垂直,或者非水平时不处理遮挡问题\n if (!isVertical && !isHorizontal) {\n return;\n }\n var labelCfg = this.get('label');\n var titleCfg = this.get('title');\n var verticalLimitLength = this.get('verticalLimitLength');\n var labelOffset = labelCfg.offset;\n var limitLength = verticalLimitLength;\n var titleHeight = 0;\n var titleSpacing = 0;\n if (titleCfg) {\n titleHeight = titleCfg.style.fontSize;\n titleSpacing = titleCfg.spacing;\n }\n if (limitLength) {\n limitLength = limitLength - labelOffset - titleSpacing - titleHeight;\n }\n var overlapOrder = this.get('overlapOrder');\n each(overlapOrder, function (name) {\n if (labelCfg[name] && _this.canProcessOverlap(name)) {\n _this.autoProcessOverlap(name, labelCfg[name], labelGroup, limitLength);\n }\n });\n if (titleCfg) {\n if (isNil(titleCfg.offset)) {\n // 调整 title 的 offset\n var bbox = labelGroup.getCanvasBBox();\n var length_1 = isVertical ? bbox.width : bbox.height;\n // 如果用户没有设置 offset,则自动计算\n titleCfg.offset = labelOffset + length_1 + titleSpacing + titleHeight / 2;\n }\n }\n };\n /**\n * 是否可以执行某一 overlap\n * @param name\n */\n Line.prototype.canProcessOverlap = function (name) {\n var labelCfg = this.get('label');\n // 对 autoRotate,如果配置了旋转角度,直接进行固定角度旋转\n if (name === 'autoRotate') {\n return isNil(labelCfg.rotate);\n }\n // 默认所有 overlap 都可执行\n return true;\n };\n Line.prototype.autoProcessOverlap = function (name, value, labelGroup, limitLength) {\n var _this = this;\n var isVertical = this.isVertical();\n var hasAdjusted = false;\n var util = OverlapUtil[name];\n if (value === true) {\n var labelCfg = this.get('label');\n // true 形式的配置:使用 overlap 默认的的处理方法进行处理\n hasAdjusted = util.getDefault()(isVertical, labelGroup, limitLength);\n } else if (isFunction(value)) {\n // 回调函数形式的配置: 用户可以传入回调函数\n hasAdjusted = value(isVertical, labelGroup, limitLength);\n } else if (isObject(value)) {\n // object 形式的配置方式:包括 处理方法 type, 和可选参数配置 cfg\n var overlapCfg = value;\n if (util[overlapCfg.type]) {\n hasAdjusted = util[overlapCfg.type](isVertical, labelGroup, limitLength, overlapCfg.cfg);\n }\n } else if (util[value]) {\n // 字符串类型的配置:按照名称执行 overlap 处理方法\n hasAdjusted = util[value](isVertical, labelGroup, limitLength);\n }\n if (name === 'autoRotate') {\n // 文本旋转后,文本的对齐方式可能就不合适了\n if (hasAdjusted) {\n var labels = labelGroup.getChildren();\n var verticalFactor_1 = this.get('verticalFactor');\n each(labels, function (label) {\n var textAlign = label.attr('textAlign');\n if (textAlign === 'center') {\n // 居中的文本需要调整旋转度\n var newAlign = verticalFactor_1 > 0 ? 'end' : 'start';\n label.attr('textAlign', newAlign);\n }\n });\n }\n } else if (name === 'autoHide') {\n var children = labelGroup.getChildren().slice(0); // 复制数组,删除时不会出错\n each(children, function (label) {\n if (!label.get('visible')) {\n if (_this.get('isRegister')) {\n // 已经注册过了,则删除\n _this.unregisterElement(label);\n }\n label.remove(); // 防止 label 数量太多,所以统一删除\n }\n });\n }\n };\n\n return Line;\n}(AxisBase);\nexport default Line;","var _a;\nimport Theme from '../util/theme';\n// tooltip 相关 dom 的 css 类名\nimport * as CssConst from './css-const';\nexport default (_a = {},\n// css style for tooltip\n_a[\"\" + CssConst.CONTAINER_CLASS] = {\n position: 'relative'\n}, _a[\"\" + CssConst.CROSSHAIR_LINE] = {\n position: 'absolute',\n backgroundColor: 'rgba(0, 0, 0, 0.25)'\n}, _a[\"\" + CssConst.CROSSHAIR_TEXT] = {\n position: 'absolute',\n color: Theme.textColor,\n fontFamily: Theme.fontFamily\n}, _a);","import { __assign, __extends } from \"tslib\";\nimport { each, isNil, isFunction, isObject } from '@antv/util';\nimport { vec2 } from '@antv/matrix-util';\nimport AxisBase from './base';\nimport * as OverlapUtil from './overlap';\nvar Circle = /** @class */function (_super) {\n __extends(Circle, _super);\n function Circle() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Circle.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n type: 'circle',\n locationType: 'circle',\n center: null,\n radius: null,\n startAngle: -Math.PI / 2,\n endAngle: Math.PI * 3 / 2\n });\n };\n Circle.prototype.getLinePath = function () {\n var center = this.get('center');\n var x = center.x;\n var y = center.y;\n var rx = this.get('radius');\n var ry = rx;\n var startAngle = this.get('startAngle');\n var endAngle = this.get('endAngle');\n var path = [];\n if (Math.abs(endAngle - startAngle) === Math.PI * 2) {\n path = [['M', x, y - ry], ['A', rx, ry, 0, 1, 1, x, y + ry], ['A', rx, ry, 0, 1, 1, x, y - ry], ['Z']];\n } else {\n var startPoint = this.getCirclePoint(startAngle);\n var endPoint = this.getCirclePoint(endAngle);\n var large = Math.abs(endAngle - startAngle) > Math.PI ? 1 : 0;\n var sweep = startAngle > endAngle ? 0 : 1;\n path = [['M', x, y], ['L', startPoint.x, startPoint.y], ['A', rx, ry, 0, large, sweep, endPoint.x, endPoint.y], ['L', x, y]];\n }\n return path;\n };\n Circle.prototype.getTickPoint = function (tickValue) {\n var startAngle = this.get('startAngle');\n var endAngle = this.get('endAngle');\n var angle = startAngle + (endAngle - startAngle) * tickValue;\n return this.getCirclePoint(angle);\n };\n // 获取垂直于坐标轴的向量\n Circle.prototype.getSideVector = function (offset, point) {\n var center = this.get('center');\n var vector = [point.x - center.x, point.y - center.y];\n var factor = this.get('verticalFactor');\n var vecLen = vec2.length(vector);\n vec2.scale(vector, vector, factor * offset / vecLen);\n return vector;\n };\n // 获取沿坐标轴方向的向量\n Circle.prototype.getAxisVector = function (point) {\n var center = this.get('center');\n var vector = [point.x - center.x, point.y - center.y];\n return [vector[1], -1 * vector[0]]; // 获取顺时针方向的向量\n };\n // 根据圆心和半径获取点\n Circle.prototype.getCirclePoint = function (angle, radius) {\n var center = this.get('center');\n radius = radius || this.get('radius');\n return {\n x: center.x + Math.cos(angle) * radius,\n y: center.y + Math.sin(angle) * radius\n };\n };\n /**\n * 是否可以执行某一 overlap\n * @param name\n */\n Circle.prototype.canProcessOverlap = function (name) {\n var labelCfg = this.get('label');\n // 对 autoRotate,如果配置了旋转角度,直接进行固定角度旋转\n if (name === 'autoRotate') {\n return isNil(labelCfg.rotate);\n }\n // 默认所有 overlap 都可执行\n return true;\n };\n Circle.prototype.processOverlap = function (labelGroup) {\n var _this = this;\n var labelCfg = this.get('label');\n var titleCfg = this.get('title');\n var verticalLimitLength = this.get('verticalLimitLength');\n var labelOffset = labelCfg.offset;\n var limitLength = verticalLimitLength;\n var titleHeight = 0;\n var titleSpacing = 0;\n if (titleCfg) {\n titleHeight = titleCfg.style.fontSize;\n titleSpacing = titleCfg.spacing;\n }\n if (limitLength) {\n limitLength = limitLength - labelOffset - titleSpacing - titleHeight;\n }\n var overlapOrder = this.get('overlapOrder');\n each(overlapOrder, function (name) {\n if (labelCfg[name] && _this.canProcessOverlap(name)) {\n _this.autoProcessOverlap(name, labelCfg[name], labelGroup, limitLength);\n }\n });\n if (titleCfg) {\n if (isNil(titleCfg.offset)) {\n // 调整 title 的 offset\n var length_1 = labelGroup.getCanvasBBox().height;\n // 如果用户没有设置 offset,则自动计算\n titleCfg.offset = labelOffset + length_1 + titleSpacing + titleHeight / 2;\n }\n }\n };\n Circle.prototype.autoProcessOverlap = function (name, value, labelGroup, limitLength) {\n var _this = this;\n var hasAdjusted = false;\n var util = OverlapUtil[name];\n if (limitLength > 0) {\n if (value === true) {\n // true 形式的配置:使用 overlap 默认的的处理方法进行处理\n hasAdjusted = util.getDefault()(false, labelGroup, limitLength);\n } else if (isFunction(value)) {\n // 回调函数形式的配置: 用户可以传入回调函数\n hasAdjusted = value(false, labelGroup, limitLength);\n } else if (isObject(value)) {\n // object 形式的配置方式:包括 处理方法 type, 和可选参数配置 cfg\n var overlapCfg = value;\n if (util[overlapCfg.type]) {\n hasAdjusted = util[overlapCfg.type](false, labelGroup, limitLength, overlapCfg.cfg);\n }\n } else if (util[value]) {\n // 字符串类型的配置:按照名称执行 overlap 处理方法\n hasAdjusted = util[value](false, labelGroup, limitLength);\n }\n }\n if (name === 'autoRotate') {\n // 文本旋转后,文本的对齐方式可能就不合适了\n if (hasAdjusted) {\n var labels = labelGroup.getChildren();\n var verticalFactor_1 = this.get('verticalFactor');\n each(labels, function (label) {\n var textAlign = label.attr('textAlign');\n if (textAlign === 'center') {\n // 居中的文本需要调整旋转度\n var newAlign = verticalFactor_1 > 0 ? 'end' : 'start';\n label.attr('textAlign', newAlign);\n }\n });\n }\n } else if (name === 'autoHide') {\n var children = labelGroup.getChildren().slice(0); // 复制数组,删除时不会出错\n each(children, function (label) {\n if (!label.get('visible')) {\n if (_this.get('isRegister')) {\n // 已经注册过了,则删除\n _this.unregisterElement(label);\n }\n label.remove(); // 防止 label 数量太多,所以统一删除\n }\n });\n }\n };\n\n return Circle;\n}(AxisBase);\nexport default Circle;","import { __assign, __extends } from \"tslib\";\nimport { isNil } from '@antv/util';\nimport GroupComponent from '../abstract/group-component';\nimport { getMatrixByAngle } from '../util/matrix';\nimport Theme from '../util/theme';\nimport { formatPadding } from '../util/util';\nvar CrosshairBase = /** @class */function (_super) {\n __extends(CrosshairBase, _super);\n function CrosshairBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n CrosshairBase.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n name: 'crosshair',\n type: 'base',\n line: {},\n text: null,\n textBackground: {},\n capture: false,\n defaultCfg: {\n line: {\n style: {\n lineWidth: 1,\n stroke: Theme.lineColor\n }\n },\n text: {\n position: 'start',\n offset: 10,\n autoRotate: false,\n content: null,\n style: {\n fill: Theme.textColor,\n textAlign: 'center',\n textBaseline: 'middle',\n fontFamily: Theme.fontFamily\n }\n },\n textBackground: {\n padding: 5,\n style: {\n stroke: Theme.lineColor\n }\n }\n }\n });\n };\n CrosshairBase.prototype.renderInner = function (group) {\n if (this.get('line')) {\n this.renderLine(group);\n }\n if (this.get('text')) {\n this.renderText(group);\n this.renderBackground(group);\n }\n };\n CrosshairBase.prototype.renderText = function (group) {\n var text = this.get('text');\n var style = text.style,\n autoRotate = text.autoRotate,\n content = text.content;\n if (!isNil(content)) {\n var textPoint = this.getTextPoint();\n var matrix = null;\n if (autoRotate) {\n var angle = this.getRotateAngle();\n matrix = getMatrixByAngle(textPoint, angle);\n }\n this.addShape(group, {\n type: 'text',\n name: 'crosshair-text',\n id: this.getElementId('text'),\n attrs: __assign(__assign(__assign({}, textPoint), {\n text: content,\n matrix: matrix\n }), style)\n });\n }\n };\n CrosshairBase.prototype.renderLine = function (group) {\n var path = this.getLinePath();\n var line = this.get('line');\n var style = line.style;\n this.addShape(group, {\n type: 'path',\n name: 'crosshair-line',\n id: this.getElementId('line'),\n attrs: __assign({\n path: path\n }, style)\n });\n };\n // 绘制文本的背景\n CrosshairBase.prototype.renderBackground = function (group) {\n var textId = this.getElementId('text');\n var textShape = group.findById(textId); // 查找文本\n var textBackground = this.get('textBackground');\n if (textBackground && textShape) {\n var textBBox = textShape.getBBox();\n var padding = formatPadding(textBackground.padding); // 用户传入的 padding 格式不定\n var style = textBackground.style;\n var backgroundShape = this.addShape(group, {\n type: 'rect',\n name: 'crosshair-text-background',\n id: this.getElementId('text-background'),\n attrs: __assign({\n x: textBBox.x - padding[3],\n y: textBBox.y - padding[0],\n width: textBBox.width + padding[1] + padding[3],\n height: textBBox.height + padding[0] + padding[2],\n matrix: textShape.attr('matrix')\n }, style)\n });\n backgroundShape.toBack();\n }\n };\n return CrosshairBase;\n}(GroupComponent);\nexport default CrosshairBase;","import { __assign, __extends } from \"tslib\";\nimport { getTextPoint } from '../util/util';\nimport CrosshairBase from './base';\nvar LineCrosshair = /** @class */function (_super) {\n __extends(LineCrosshair, _super);\n function LineCrosshair() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n LineCrosshair.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n type: 'line',\n locationType: 'region',\n start: null,\n end: null\n });\n };\n // 直线的文本需要同直线垂直\n LineCrosshair.prototype.getRotateAngle = function () {\n var _a = this.getLocation(),\n start = _a.start,\n end = _a.end;\n var position = this.get('text').position;\n var angle = Math.atan2(end.y - start.y, end.x - start.x);\n var tangentAngle = position === 'start' ? angle - Math.PI / 2 : angle + Math.PI / 2;\n return tangentAngle;\n };\n LineCrosshair.prototype.getTextPoint = function () {\n var _a = this.getLocation(),\n start = _a.start,\n end = _a.end;\n var _b = this.get('text'),\n position = _b.position,\n offset = _b.offset;\n return getTextPoint(start, end, position, offset);\n };\n LineCrosshair.prototype.getLinePath = function () {\n var _a = this.getLocation(),\n start = _a.start,\n end = _a.end;\n return [['M', start.x, start.y], ['L', end.x, end.y]];\n };\n return LineCrosshair;\n}(CrosshairBase);\nexport default LineCrosshair;","import { __assign, __extends } from \"tslib\";\nimport { getCirclePoint } from '../util/util';\nimport CrosshairBase from './base';\nvar LineCrosshair = /** @class */function (_super) {\n __extends(LineCrosshair, _super);\n function LineCrosshair() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n LineCrosshair.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n type: 'circle',\n locationType: 'circle',\n center: null,\n radius: 100,\n startAngle: -Math.PI / 2,\n endAngle: Math.PI * 3 / 2\n });\n };\n LineCrosshair.prototype.getRotateAngle = function () {\n var _a = this.getLocation(),\n startAngle = _a.startAngle,\n endAngle = _a.endAngle;\n var position = this.get('text').position;\n var tangentAngle = position === 'start' ? startAngle + Math.PI / 2 : endAngle - Math.PI / 2;\n return tangentAngle;\n };\n LineCrosshair.prototype.getTextPoint = function () {\n var text = this.get('text');\n var position = text.position,\n offset = text.offset;\n var _a = this.getLocation(),\n center = _a.center,\n radius = _a.radius,\n startAngle = _a.startAngle,\n endAngle = _a.endAngle;\n var angle = position === 'start' ? startAngle : endAngle;\n var tangentAngle = this.getRotateAngle() - Math.PI;\n var point = getCirclePoint(center, radius, angle);\n // 这个地方其实应该求切线向量然后在乘以 offset,但是太啰嗦了,直接给出结果\n // const tangent = [Math.cos(tangentAngle), Math.sin(tangentAngle)];\n // const offsetVector = vec2.scale([], tangent, offset);\n var offsetX = Math.cos(tangentAngle) * offset;\n var offsetY = Math.sin(tangentAngle) * offset;\n return {\n x: point.x + offsetX,\n y: point.y + offsetY\n };\n };\n LineCrosshair.prototype.getLinePath = function () {\n var _a = this.getLocation(),\n center = _a.center,\n radius = _a.radius,\n startAngle = _a.startAngle,\n endAngle = _a.endAngle;\n var path = null;\n if (endAngle - startAngle === Math.PI * 2) {\n // 整圆\n var x = center.x,\n y = center.y;\n path = [['M', x, y - radius], ['A', radius, radius, 0, 1, 1, x, y + radius], ['A', radius, radius, 0, 1, 1, x, y - radius], ['Z']];\n } else {\n var startPoint = getCirclePoint(center, radius, startAngle);\n var endPoint = getCirclePoint(center, radius, endAngle);\n var large = Math.abs(endAngle - startAngle) > Math.PI ? 1 : 0;\n var sweep = startAngle > endAngle ? 0 : 1;\n path = [['M', startPoint.x, startPoint.y], ['A', radius, radius, 0, large, sweep, endPoint.x, endPoint.y]];\n }\n return path;\n };\n return LineCrosshair;\n}(CrosshairBase);\nexport default LineCrosshair;","export var CONTAINER_CLASS = 'g2-crosshair';\nexport var CROSSHAIR_LINE = CONTAINER_CLASS + \"-line\";\nexport var CROSSHAIR_TEXT = CONTAINER_CLASS + \"-text\";","import { __assign, __extends } from \"tslib\";\nimport { createDom, modifyCSS } from '@antv/dom-util';\nimport { substitute, hasKey } from '@antv/util';\nimport { toPx, getTextPoint } from '../util/util';\nimport HtmlComponent from '../abstract/html-component';\nimport * as CssConst from './css-const';\nimport HtmlTheme from './html-theme';\nvar HtmlCrosshair = /** @class */function (_super) {\n __extends(HtmlCrosshair, _super);\n function HtmlCrosshair() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n HtmlCrosshair.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n name: 'crosshair',\n type: 'html',\n locationType: 'region',\n start: {\n x: 0,\n y: 0\n },\n end: {\n x: 0,\n y: 0\n },\n capture: false,\n text: null,\n containerTpl: \"
      \",\n crosshairTpl: \"
      \",\n textTpl: \"{content}\",\n domStyles: null,\n containerClassName: CssConst.CONTAINER_CLASS,\n defaultStyles: HtmlTheme,\n defaultCfg: {\n text: {\n position: 'start',\n content: null,\n align: 'center',\n offset: 10\n }\n }\n });\n };\n HtmlCrosshair.prototype.render = function () {\n this.resetText();\n this.resetPosition();\n };\n // 绘制 crosshair\n HtmlCrosshair.prototype.initCrossHair = function () {\n var container = this.getContainer();\n var crosshairTpl = this.get('crosshairTpl');\n var crosshairEl = createDom(crosshairTpl);\n container.appendChild(crosshairEl);\n this.applyStyle(CssConst.CROSSHAIR_LINE, crosshairEl);\n this.set('crosshairEl', crosshairEl);\n };\n // 获取文本的位置\n HtmlCrosshair.prototype.getTextPoint = function () {\n var _a = this.getLocation(),\n start = _a.start,\n end = _a.end;\n var _b = this.get('text'),\n position = _b.position,\n offset = _b.offset;\n return getTextPoint(start, end, position, offset);\n };\n // 设置 text\n HtmlCrosshair.prototype.resetText = function () {\n var text = this.get('text');\n var textEl = this.get('textEl');\n if (text) {\n var content = text.content;\n if (!textEl) {\n var container = this.getContainer();\n var textTpl = substitute(this.get('textTpl'), text);\n textEl = createDom(textTpl);\n container.appendChild(textEl);\n this.applyStyle(CssConst.CROSSHAIR_TEXT, textEl);\n this.set('textEl', textEl);\n }\n textEl.innerHTML = content;\n } else if (textEl) {\n textEl.remove();\n }\n };\n // 是否垂直\n HtmlCrosshair.prototype.isVertical = function (start, end) {\n return start.x === end.x;\n };\n // 重新调整位置\n HtmlCrosshair.prototype.resetPosition = function () {\n var crosshairEl = this.get('crosshairEl');\n if (!crosshairEl) {\n this.initCrossHair();\n crosshairEl = this.get('crosshairEl');\n }\n var start = this.get('start');\n var end = this.get('end');\n var minX = Math.min(start.x, end.x);\n var minY = Math.min(start.y, end.y);\n if (this.isVertical(start, end)) {\n modifyCSS(crosshairEl, {\n width: '1px',\n height: toPx(Math.abs(end.y - start.y))\n });\n } else {\n modifyCSS(crosshairEl, {\n height: '1px',\n width: toPx(Math.abs(end.x - start.x))\n });\n }\n modifyCSS(crosshairEl, {\n top: toPx(minY),\n left: toPx(minX)\n });\n this.alignText();\n };\n HtmlCrosshair.prototype.alignText = function () {\n // 重新设置 text 位置\n var textEl = this.get('textEl');\n if (textEl) {\n var align = this.get('text').align;\n var clientWidth = textEl.clientWidth;\n var point = this.getTextPoint();\n switch (align) {\n case 'center':\n point.x = point.x - clientWidth / 2;\n break;\n case 'right':\n point.x = point.x - clientWidth;\n case 'left':\n break;\n }\n modifyCSS(textEl, {\n top: toPx(point.y),\n left: toPx(point.x)\n });\n }\n };\n HtmlCrosshair.prototype.updateInner = function (cfg) {\n if (hasKey(cfg, 'text')) {\n this.resetText();\n }\n _super.prototype.updateInner.call(this, cfg);\n };\n return HtmlCrosshair;\n}(HtmlComponent);\nexport default HtmlCrosshair;","import { __assign, __extends } from \"tslib\";\nimport { each, isString, mix, isFunction } from '@antv/util';\nimport GroupComponent from '../abstract/group-component';\nimport Theme from '../util/theme';\nvar GridBase = /** @class */function (_super) {\n __extends(GridBase, _super);\n function GridBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n GridBase.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n name: 'grid',\n line: {},\n alternateColor: null,\n capture: false,\n items: [],\n closed: false,\n defaultCfg: {\n line: {\n type: 'line',\n style: {\n lineWidth: 1,\n stroke: Theme.lineColor\n }\n }\n }\n });\n };\n /**\n * 获取栅格线的类型\n * @return {string} 栅格线类型\n */\n GridBase.prototype.getLineType = function () {\n var line = this.get('line') || this.get('defaultCfg').line;\n return line.type;\n };\n GridBase.prototype.renderInner = function (group) {\n this.drawGrid(group);\n };\n GridBase.prototype.getAlternatePath = function (prePoints, points) {\n var regionPath = this.getGridPath(prePoints);\n var reversePoints = points.slice(0).reverse();\n var nextPath = this.getGridPath(reversePoints, true);\n var closed = this.get('closed');\n if (closed) {\n regionPath = regionPath.concat(nextPath);\n } else {\n nextPath[0][0] = 'L'; // 更新第一个节点\n regionPath = regionPath.concat(nextPath);\n regionPath.push(['Z']);\n }\n return regionPath;\n };\n // 获取路径的配置项\n GridBase.prototype.getPathStyle = function () {\n return this.get('line').style;\n };\n // 绘制栅格\n GridBase.prototype.drawGrid = function (group) {\n var _this = this;\n var line = this.get('line');\n var items = this.get('items');\n var alternateColor = this.get('alternateColor');\n var preItem = null;\n each(items, function (item, index) {\n var id = item.id || index;\n // 绘制栅格线\n if (line) {\n var style = _this.getPathStyle();\n style = isFunction(style) ? style(item, index, items) : style;\n var lineId = _this.getElementId(\"line-\" + id);\n var gridPath = _this.getGridPath(item.points);\n _this.addShape(group, {\n type: 'path',\n name: 'grid-line',\n id: lineId,\n attrs: mix({\n path: gridPath\n }, style)\n });\n }\n // 如果存在 alternateColor 则绘制矩形\n // 从第二个栅格线开始绘制\n if (alternateColor && index > 0) {\n var regionId = _this.getElementId(\"region-\" + id);\n var isEven = index % 2 === 0;\n if (isString(alternateColor)) {\n // 如果颜色是单值,则是仅绘制偶数时的区域\n if (isEven) {\n _this.drawAlternateRegion(regionId, group, preItem.points, item.points, alternateColor);\n }\n } else {\n var color = isEven ? alternateColor[1] : alternateColor[0];\n _this.drawAlternateRegion(regionId, group, preItem.points, item.points, color);\n }\n }\n preItem = item;\n });\n };\n // 绘制栅格线间的间隔\n GridBase.prototype.drawAlternateRegion = function (id, group, prePoints, points, color) {\n var regionPath = this.getAlternatePath(prePoints, points);\n this.addShape(group, {\n type: 'path',\n id: id,\n name: 'grid-region',\n attrs: {\n path: regionPath,\n fill: color\n }\n });\n };\n return GridBase;\n}(GroupComponent);\nexport default GridBase;","import { __assign, __extends } from \"tslib\";\nimport { each } from '@antv/util';\nimport GridBase from './base';\nfunction distance(x1, y1, x2, y2) {\n var dx = x2 - x1;\n var dy = y2 - y1;\n return Math.sqrt(dx * dx + dy * dy);\n}\nvar Circle = /** @class */function (_super) {\n __extends(Circle, _super);\n function Circle() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Circle.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n type: 'circle',\n /**\n * 中心点\n * @type {object}\n */\n center: null,\n /**\n * 栅格线是否封闭\n * @type {true}\n */\n closed: true\n });\n };\n Circle.prototype.getGridPath = function (points, reversed) {\n var lineType = this.getLineType();\n var closed = this.get('closed');\n var path = [];\n if (points.length) {\n // 防止出错\n if (lineType === 'circle') {\n var center = this.get('center');\n var firstPoint = points[0];\n var radius_1 = distance(center.x, center.y, firstPoint.x, firstPoint.y);\n var sweepFlag_1 = reversed ? 0 : 1; // 顺时针还是逆时针\n if (closed) {\n // 封闭时,绘制整个圆\n path.push(['M', center.x, center.y - radius_1]);\n path.push(['A', radius_1, radius_1, 0, 0, sweepFlag_1, center.x, center.y + radius_1]);\n path.push(['A', radius_1, radius_1, 0, 0, sweepFlag_1, center.x, center.y - radius_1]);\n path.push(['Z']);\n } else {\n each(points, function (point, index) {\n if (index === 0) {\n path.push(['M', point.x, point.y]);\n } else {\n path.push(['A', radius_1, radius_1, 0, 0, sweepFlag_1, point.x, point.y]);\n }\n });\n }\n } else {\n each(points, function (point, index) {\n if (index === 0) {\n path.push(['M', point.x, point.y]);\n } else {\n path.push(['L', point.x, point.y]);\n }\n });\n if (closed) {\n path.push(['Z']);\n }\n }\n }\n return path;\n };\n return Circle;\n}(GridBase);\nexport default Circle;","var _a;\nimport Theme from '../util/theme';\n// tooltip 相关 dom 的 css 类名\nimport * as CssConst from './css-const';\nexport default (_a = {},\n// css style for tooltip\n_a[\"\" + CssConst.CONTAINER_CLASS] = {\n position: 'absolute',\n visibility: 'visible',\n // @2018-07-25 by blue.lb 这里去掉浮动,火狐上存在样式错位\n // whiteSpace: 'nowrap',\n zIndex: 8,\n transition: 'visibility 0.2s cubic-bezier(0.23, 1, 0.32, 1), ' + 'left 0.4s cubic-bezier(0.23, 1, 0.32, 1), ' + 'top 0.4s cubic-bezier(0.23, 1, 0.32, 1)',\n backgroundColor: 'rgba(255, 255, 255, 0.9)',\n boxShadow: '0px 0px 10px #aeaeae',\n borderRadius: '3px',\n color: 'rgb(87, 87, 87)',\n fontSize: '12px',\n fontFamily: Theme.fontFamily,\n lineHeight: '20px',\n padding: '10px 10px 6px 10px'\n}, _a[\"\" + CssConst.TITLE_CLASS] = {\n marginBottom: '4px'\n}, _a[\"\" + CssConst.LIST_CLASS] = {\n margin: '0px',\n listStyleType: 'none',\n padding: '0px'\n}, _a[\"\" + CssConst.LIST_ITEM_CLASS] = {\n listStyleType: 'none',\n marginBottom: '4px'\n}, _a[\"\" + CssConst.MARKER_CLASS] = {\n width: '8px',\n height: '8px',\n borderRadius: '50%',\n display: 'inline-block',\n marginRight: '8px'\n}, _a[\"\" + CssConst.VALUE_CLASS] = {\n display: 'inline-block',\n float: 'right',\n marginLeft: '30px'\n}, _a[\"\" + CssConst.CROSSHAIR_X] = {\n position: 'absolute',\n width: '1px',\n backgroundColor: 'rgba(0, 0, 0, 0.25)'\n}, _a[\"\" + CssConst.CROSSHAIR_Y] = {\n position: 'absolute',\n height: '1px',\n backgroundColor: 'rgba(0, 0, 0, 0.25)'\n}, _a);","import { __assign, __extends } from \"tslib\";\nimport { each } from '@antv/util';\nimport GridBase from './base';\nvar Line = /** @class */function (_super) {\n __extends(Line, _super);\n function Line() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Line.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n type: 'line'\n });\n };\n Line.prototype.getGridPath = function (points) {\n var path = [];\n each(points, function (point, index) {\n if (index === 0) {\n path.push(['M', point.x, point.y]);\n } else {\n path.push(['L', point.x, point.y]);\n }\n });\n return path;\n };\n return Line;\n}(GridBase);\nexport default Line;","import { __assign, __extends } from \"tslib\";\nimport GroupComponent from '../abstract/group-component';\nimport { createBBox, formatPadding } from '../util/util';\nvar LegendBase = /** @class */function (_super) {\n __extends(LegendBase, _super);\n function LegendBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n LegendBase.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n name: 'legend',\n /**\n * 布局方式: horizontal,vertical\n * @type {String}\n */\n layout: 'horizontal',\n locationType: 'point',\n x: 0,\n y: 0,\n offsetX: 0,\n offsetY: 0,\n title: null,\n background: null\n });\n };\n LegendBase.prototype.getLayoutBBox = function () {\n var bbox = _super.prototype.getLayoutBBox.call(this);\n var maxWidth = this.get('maxWidth');\n var maxHeight = this.get('maxHeight');\n var width = bbox.width,\n height = bbox.height;\n if (maxWidth) {\n width = Math.min(width, maxWidth);\n }\n if (maxHeight) {\n height = Math.min(height, maxHeight);\n }\n return createBBox(bbox.minX, bbox.minY, width, height);\n };\n LegendBase.prototype.setLocation = function (cfg) {\n this.set('x', cfg.x);\n this.set('y', cfg.y);\n this.resetLocation();\n };\n LegendBase.prototype.resetLocation = function () {\n var x = this.get('x');\n var y = this.get('y');\n var offsetX = this.get('offsetX');\n var offsetY = this.get('offsetY');\n this.moveElementTo(this.get('group'), {\n x: x + offsetX,\n y: y + offsetY\n });\n };\n LegendBase.prototype.applyOffset = function () {\n this.resetLocation();\n };\n // 获取当前绘制的点\n LegendBase.prototype.getDrawPoint = function () {\n return this.get('currentPoint');\n };\n LegendBase.prototype.setDrawPoint = function (point) {\n return this.set('currentPoint', point);\n };\n // 复写父类定义的绘制方法\n LegendBase.prototype.renderInner = function (group) {\n this.resetDraw();\n if (this.get('title')) {\n this.drawTitle(group);\n }\n this.drawLegendContent(group);\n if (this.get('background')) {\n this.drawBackground(group);\n }\n // this.resetLocation(); // 在顶层已经在处理偏移时一起处理了\n };\n // 绘制背景\n LegendBase.prototype.drawBackground = function (group) {\n var background = this.get('background');\n var bbox = group.getBBox();\n var padding = formatPadding(background.padding);\n var attrs = __assign({\n // 背景从 (0,0) 开始绘制\n x: 0,\n y: 0,\n width: bbox.width + padding[1] + padding[3],\n height: bbox.height + padding[0] + padding[2]\n }, background.style);\n var backgroundShape = this.addShape(group, {\n type: 'rect',\n id: this.getElementId('background'),\n name: 'legend-background',\n attrs: attrs\n });\n backgroundShape.toBack();\n };\n // 绘制标题,标题在图例项的上面\n LegendBase.prototype.drawTitle = function (group) {\n var currentPoint = this.get('currentPoint');\n var titleCfg = this.get('title');\n var spacing = titleCfg.spacing,\n style = titleCfg.style,\n text = titleCfg.text;\n var shape = this.addShape(group, {\n type: 'text',\n id: this.getElementId('title'),\n name: 'legend-title',\n attrs: __assign({\n text: text,\n x: currentPoint.x,\n y: currentPoint.y\n }, style)\n });\n var bbox = shape.getBBox();\n // 标题单独在一行\n this.set('currentPoint', {\n x: currentPoint.x,\n y: bbox.maxY + spacing\n });\n };\n // 重置绘制时开始的位置,如果绘制边框,考虑边框的 padding\n LegendBase.prototype.resetDraw = function () {\n var background = this.get('background');\n var currentPoint = {\n x: 0,\n y: 0\n };\n if (background) {\n var padding = formatPadding(background.padding);\n currentPoint.x = padding[3]; // 左边 padding\n currentPoint.y = padding[0]; // 上面 padding\n }\n\n this.set('currentPoint', currentPoint); // 设置绘制的初始位置\n };\n\n return LegendBase;\n}(GroupComponent);\nexport default LegendBase;","import { __assign, __extends, __rest } from \"tslib\";\nimport { clamp, deepMix, each, filter, get, mix, isNumber, isFunction } from '@antv/util';\nimport { ellipsisLabel } from '../util/label';\nimport { getMatrixByAngle, getMatrixByTranslate } from '../util/matrix';\nimport { getStatesStyle } from '../util/state';\nimport Theme from '../util/theme';\nimport LegendBase from './base';\n/**\n * 分页器 默认配置\n */\nvar DEFAULT_PAGE_NAVIGATOR = {\n marker: {\n style: {\n inactiveFill: '#000',\n inactiveOpacity: 0.45,\n fill: '#000',\n opacity: 1,\n size: 12\n }\n },\n text: {\n style: {\n fill: '#ccc',\n fontSize: 12\n }\n }\n};\n// 默认 文本style\nvar textStyle = {\n fill: Theme.textColor,\n fontSize: 12,\n textAlign: 'start',\n textBaseline: 'middle',\n fontFamily: Theme.fontFamily,\n fontWeight: 'normal',\n lineHeight: 12\n};\nvar RIGHT_ARROW_NAME = 'navigation-arrow-right';\nvar LEFT_ARROW_NAME = 'navigation-arrow-left';\nvar ROTATE_MAP = {\n right: 90 * Math.PI / 180,\n left: (360 - 90) * Math.PI / 180,\n up: 0,\n down: 180 * Math.PI / 180\n};\nvar Category = /** @class */function (_super) {\n __extends(Category, _super);\n function Category() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.currentPageIndex = 1;\n _this.totalPagesCnt = 1;\n _this.pageWidth = 0;\n _this.pageHeight = 0;\n _this.startX = 0;\n _this.startY = 0;\n _this.onNavigationBack = function () {\n var itemGroup = _this.getElementByLocalId('item-group');\n if (_this.currentPageIndex > 1) {\n _this.currentPageIndex -= 1;\n _this.updateNavigation();\n var matrix = _this.getCurrentNavigationMatrix();\n if (_this.get('animate')) {\n itemGroup.animate({\n matrix: matrix\n }, 100);\n } else {\n itemGroup.attr({\n matrix: matrix\n });\n }\n }\n };\n _this.onNavigationAfter = function () {\n var itemGroup = _this.getElementByLocalId('item-group');\n if (_this.currentPageIndex < _this.totalPagesCnt) {\n _this.currentPageIndex += 1;\n _this.updateNavigation();\n var matrix = _this.getCurrentNavigationMatrix();\n if (_this.get('animate')) {\n itemGroup.animate({\n matrix: matrix\n }, 100);\n } else {\n itemGroup.attr({\n matrix: matrix\n });\n }\n }\n };\n return _this;\n }\n Category.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n name: 'legend',\n type: 'category',\n itemSpacing: 24,\n itemMarginBottom: 8,\n maxItemWidth: null,\n itemWidth: null,\n itemHeight: null,\n itemName: {},\n itemValue: null,\n maxWidth: null,\n maxHeight: null,\n marker: {},\n radio: null,\n items: [],\n itemStates: {},\n itemBackground: {},\n pageNavigator: {},\n defaultCfg: {\n title: {\n spacing: 5,\n style: {\n fill: Theme.textColor,\n fontSize: 12,\n textAlign: 'start',\n textBaseline: 'top'\n }\n },\n background: {\n padding: 5,\n style: {\n stroke: Theme.lineColor\n }\n },\n itemBackground: {\n style: {\n opacity: 0,\n fill: '#fff'\n }\n },\n pageNavigator: DEFAULT_PAGE_NAVIGATOR,\n itemName: {\n spacing: 16,\n style: textStyle\n },\n marker: {\n spacing: 8,\n style: {\n r: 6,\n symbol: 'circle'\n }\n },\n itemValue: {\n alignRight: false,\n formatter: null,\n style: textStyle,\n spacing: 6\n },\n itemStates: {\n active: {\n nameStyle: {\n opacity: 0.8\n }\n },\n unchecked: {\n nameStyle: {\n fill: Theme.uncheckedColor\n },\n markerStyle: {\n fill: Theme.uncheckedColor,\n stroke: Theme.uncheckedColor\n }\n },\n inactive: {\n nameStyle: {\n fill: Theme.uncheckedColor\n },\n markerStyle: {\n opacity: 0.2\n }\n }\n }\n }\n });\n };\n // 实现 IList 接口\n Category.prototype.isList = function () {\n return true;\n };\n /**\n * 获取图例项\n * @return {ListItem[]} 列表项集合\n */\n Category.prototype.getItems = function () {\n return this.get('items');\n };\n /**\n * 设置列表项\n * @param {ListItem[]} items 列表项集合\n */\n Category.prototype.setItems = function (items) {\n this.update({\n items: items\n });\n };\n /**\n * 更新列表项\n * @param {ListItem} item 列表项\n * @param {object} cfg 列表项\n */\n Category.prototype.updateItem = function (item, cfg) {\n mix(item, cfg);\n this.clear(); // 由于单个图例项变化,会引起全局变化,所以全部更新\n this.render();\n };\n /**\n * 清空列表\n */\n Category.prototype.clearItems = function () {\n var itemGroup = this.getElementByLocalId('item-group');\n itemGroup && itemGroup.clear();\n };\n /**\n * 设置列表项的状态\n * @param {ListItem} item 列表项\n * @param {string} state 状态名\n * @param {boolean} value 状态值, true, false\n */\n Category.prototype.setItemState = function (item, state, value) {\n item[state] = value;\n var itemElement = this.getElementByLocalId(\"item-\" + item.id);\n if (itemElement) {\n var items = this.getItems();\n var index = items.indexOf(item);\n var offsetGroup = this.createOffScreenGroup(); // 离屏的 group\n var newElement = this.drawItem(item, index, this.getItemHeight(), offsetGroup);\n this.updateElements(newElement, itemElement); // 更新整个分组\n this.clearUpdateStatus(itemElement); // 清理更新状态,防止出现 bug\n }\n };\n /**\n * 是否存在指定的状态\n * @param {ListItem} item 列表项\n * @param {boolean} state 状态名\n */\n Category.prototype.hasState = function (item, state) {\n return !!item[state];\n };\n Category.prototype.getItemStates = function (item) {\n var itemStates = this.get('itemStates');\n var rst = [];\n each(itemStates, function (v, k) {\n if (item[k]) {\n // item.selected\n rst.push(k);\n }\n });\n return rst;\n };\n /**\n * 清楚所有列表项的状态\n * @param {string} state 状态值\n */\n Category.prototype.clearItemsState = function (state) {\n var _this = this;\n var items = this.getItemsByState(state);\n each(items, function (item) {\n _this.setItemState(item, state, false);\n });\n };\n /**\n * 根据状态获取图例项\n * @param {string} state [description]\n * @return {ListItem[]} [description]\n */\n Category.prototype.getItemsByState = function (state) {\n var _this = this;\n var items = this.getItems();\n return filter(items, function (item) {\n return _this.hasState(item, state);\n });\n };\n // 绘制 legend 的选项\n Category.prototype.drawLegendContent = function (group) {\n this.processItems();\n this.drawItems(group);\n };\n // 防止未设置 id\n Category.prototype.processItems = function () {\n var items = this.get('items');\n each(items, function (item) {\n if (!item.id) {\n // 如果没有设置 id,默认使用 name\n item.id = item.name;\n }\n });\n };\n // 绘制所有的图例选项\n Category.prototype.drawItems = function (group) {\n var _this = this;\n var itemContainerGroup = this.addGroup(group, {\n id: this.getElementId('item-container-group'),\n name: 'legend-item-container-group'\n });\n var itemGroup = this.addGroup(itemContainerGroup, {\n id: this.getElementId('item-group'),\n name: 'legend-item-group'\n });\n var itemHeight = this.getItemHeight();\n var itemWidth = this.get('itemWidth');\n var itemSpacing = this.get('itemSpacing');\n var itemMarginBottom = this.get('itemMarginBottom');\n var currentPoint = this.get('currentPoint');\n var startX = currentPoint.x;\n var startY = currentPoint.y;\n var layout = this.get('layout');\n var items = this.get('items');\n var wrapped = false;\n var pageWidth = 0;\n var maxWidth = this.get('maxWidth'); // 最大宽度,会导致 layout : 'horizontal' 时自动换行\n var maxHeight = this.get('maxHeight'); // 最大高度,会导致出现分页\n // 暂时不考虑分页\n each(items, function (item, index) {\n var subGroup = _this.drawItem(item, index, itemHeight, itemGroup);\n var bbox = subGroup.getBBox();\n var width = itemWidth || bbox.width;\n if (width > pageWidth) {\n pageWidth = width;\n }\n if (layout === 'horizontal') {\n // 如果水平布局\n if (maxWidth && maxWidth < currentPoint.x + width - startX) {\n // 检测是否换行\n wrapped = true;\n currentPoint.x = startX;\n currentPoint.y += itemHeight + itemMarginBottom;\n }\n _this.moveElementTo(subGroup, currentPoint);\n currentPoint.x += width + itemSpacing;\n } else {\n // 如果垂直布局\n if (maxHeight && maxHeight < currentPoint.y + itemHeight + itemMarginBottom - startY) {\n // 换行\n wrapped = true;\n currentPoint.x += pageWidth + itemSpacing;\n currentPoint.y = startY;\n pageWidth = 0;\n }\n _this.moveElementTo(subGroup, currentPoint);\n currentPoint.y += itemHeight + itemMarginBottom; // itemSpacing 仅影响水平间距\n }\n });\n\n if (wrapped && this.get('flipPage')) {\n this.pageHeight = 0;\n this.pageWidth = 0;\n this.totalPagesCnt = 1;\n this.startX = startX;\n this.startY = startY;\n this.adjustNavigation(group, itemGroup);\n }\n };\n // 获取图例项的高度,如果未定义,则按照 name 的高度计算\n Category.prototype.getItemHeight = function () {\n var itemHeight = this.get('itemHeight');\n if (!itemHeight) {\n var style_1 = (this.get('itemName') || {}).style;\n if (isFunction(style_1)) {\n var items_1 = this.getItems();\n items_1.forEach(function (item, index) {\n var fontSize = __assign(__assign({}, textStyle), style_1(item, index, items_1)).fontSize;\n if (itemHeight < fontSize) {\n itemHeight = fontSize;\n }\n });\n } else if (style_1) {\n itemHeight = style_1.fontSize;\n }\n }\n return itemHeight;\n };\n // 绘制 marker\n Category.prototype.drawMarker = function (container, markerCfg, item, itemHeight) {\n var markerAttrs = __assign(__assign(__assign({\n x: 0,\n y: itemHeight / 2\n }, markerCfg.style), {\n symbol: get(item.marker, 'symbol', 'circle')\n }), get(item.marker, 'style', {}));\n var shape = this.addShape(container, {\n type: 'marker',\n id: this.getElementId(\"item-\" + item.id + \"-marker\"),\n name: 'legend-item-marker',\n attrs: markerAttrs\n });\n var bbox = shape.getBBox();\n shape.attr('x', bbox.width / 2); // marker 需要左对齐,所以不能占用左侧的空间\n var _a = shape.attr(),\n stroke = _a.stroke,\n fill = _a.fill;\n if (stroke) {\n shape.set('isStroke', true);\n }\n if (fill) {\n shape.set('isFill', true);\n }\n return shape;\n };\n // 绘制文本\n Category.prototype.drawItemText = function (container, textName, cfg, item, itemHeight, xPosition, index) {\n var formatter = cfg.formatter;\n var style = cfg.style;\n var attrs = __assign(__assign({\n x: xPosition,\n y: itemHeight / 2,\n text: formatter ? formatter(item[textName], item, index) : item[textName]\n }, textStyle), isFunction(style) ? style(item, index, this.getItems()) : style);\n return this.addShape(container, {\n type: 'text',\n id: this.getElementId(\"item-\" + item.id + \"-\" + textName),\n name: \"legend-item-\" + textName,\n attrs: attrs\n });\n };\n Category.prototype.drawRadio = function (container, radioCfg, item, itemHeight, x) {\n var _a, _b;\n var style = radioCfg.style || {};\n // 以用户设置的 r 为主\n var r = (_a = style.r) !== null && _a !== void 0 ? _a : itemHeight / 2;\n var lineWidth = r * 3.6 / 8;\n var _c = [x + r, itemHeight / 2 - r],\n x0 = _c[0],\n y0 = _c[1];\n var _d = [x0 + r, y0 + r],\n x1 = _d[0],\n y1 = _d[1];\n var _e = [x0, y1 + r],\n x2 = _e[0],\n y2 = _e[1];\n var _f = [x, y0 + r],\n x3 = _f[0],\n y3 = _f[1];\n var showRadio = item.showRadio;\n var attrs = __assign(__assign({\n path: [['M', x0, y0], ['A', r, r, 0, 0, 1, x1, y1], ['L', x1 - lineWidth, y1], ['L', x1, y1], ['A', r, r, 0, 0, 1, x2, y2], ['L', x2, y2 - lineWidth], ['L', x2, y2], ['A', r, r, 0, 0, 1, x3, y3], ['L', x3 + lineWidth, y3], ['L', x3, y3], ['A', r, r, 0, 0, 1, x0, y0], ['L', x0, y0 + lineWidth]],\n stroke: '#000000',\n fill: '#ffffff'\n }, style), {\n opacity: showRadio ? (_b = style === null || style === void 0 ? void 0 : style.opacity) !== null && _b !== void 0 ? _b : 0.45 : 0\n });\n var radioShape = this.addShape(container, {\n type: 'path',\n id: this.getElementId(\"item-\" + item.id + \"-radio\"),\n name: 'legend-item-radio',\n attrs: attrs\n });\n radioShape.set('tip', radioCfg.tip);\n return radioShape;\n };\n // 绘制图例项\n Category.prototype.drawItem = function (item, index, itemHeight, itemGroup) {\n var groupId = \"item-\" + item.id;\n // 设置单独的 Group 用于 setClip\n var subContainer = this.addGroup(itemGroup, {\n name: 'legend-item-container',\n id: this.getElementId(\"item-container-\" + groupId),\n delegateObject: {\n item: item,\n index: index\n }\n });\n var subGroup = this.addGroup(subContainer, {\n name: 'legend-item',\n id: this.getElementId(groupId),\n delegateObject: {\n item: item,\n index: index\n }\n });\n var marker = this.get('marker');\n var itemName = this.get('itemName');\n var itemValue = this.get('itemValue');\n var itemBackground = this.get('itemBackground');\n var radio = this.get('radio');\n var itemWidth = this.getLimitItemWidth();\n var curX = 0; // 记录当前 x 的位置\n if (marker) {\n var markerShape = this.drawMarker(subGroup, marker, item, itemHeight);\n var spacing = marker.spacing;\n var itemMarkerSpacing = get(item, ['marker', 'spacing']);\n if (isNumber(itemMarkerSpacing)) {\n // 如果 item 有配置 marker.spacing,采用 item 的配置\n spacing = itemMarkerSpacing;\n }\n curX = markerShape.getBBox().maxX + spacing;\n }\n if (itemName) {\n var nameShape = this.drawItemText(subGroup, 'name', itemName, item, itemHeight, curX, index);\n if (itemWidth) {\n // 设置了 item 的最大宽度限制,并且超出了,进行省略处理\n ellipsisLabel(true, nameShape, clamp(itemWidth - curX, 0, itemWidth));\n }\n curX = nameShape.getBBox().maxX + itemName.spacing;\n }\n if (itemValue) {\n var valueShape = this.drawItemText(subGroup, 'value', itemValue, item, itemHeight, curX, index);\n if (itemWidth) {\n if (itemValue.alignRight) {\n valueShape.attr({\n textAlign: 'right',\n x: itemWidth\n });\n ellipsisLabel(true, valueShape, clamp(itemWidth - curX, 0, itemWidth), 'head');\n } else {\n ellipsisLabel(true, valueShape, clamp(itemWidth - curX, 0, itemWidth));\n }\n }\n curX = valueShape.getBBox().maxX + itemValue.spacing;\n }\n if (radio) {\n this.drawRadio(subGroup, radio, item, itemHeight, curX);\n }\n // 添加透明的背景,便于拾取和包围盒计算\n if (itemBackground) {\n var bbox = subGroup.getBBox();\n var backShape = this.addShape(subGroup, {\n type: 'rect',\n name: 'legend-item-background',\n id: this.getElementId(groupId + \"-background\"),\n attrs: __assign({\n x: 0,\n y: 0,\n width: bbox.width,\n height: itemHeight\n }, itemBackground.style)\n });\n backShape.toBack();\n }\n this.applyItemStates(item, subGroup);\n return subGroup;\n };\n // 加上分页器并重新排序 items\n Category.prototype.adjustNavigation = function (container, itemGroup) {\n var _this = this;\n var startX = this.startX;\n var startY = this.startY;\n var layout = this.get('layout');\n var subGroups = itemGroup.findAll(function (item) {\n return item.get('name') === 'legend-item';\n });\n var maxWidth = this.get('maxWidth');\n var maxHeight = this.get('maxHeight');\n var itemWidth = this.get('itemWidth');\n var itemSpacing = this.get('itemSpacing');\n var itemHeight = this.getItemHeight();\n var pageNavigator = deepMix({}, DEFAULT_PAGE_NAVIGATOR, this.get('pageNavigator'));\n var navigation = this.drawNavigation(container, layout, '00/00', pageNavigator);\n var navigationBBox = navigation.getBBox();\n var currentPoint = {\n x: startX,\n y: startY\n };\n var pages = 1;\n var widthLimit = 0;\n var pageWidth = 0;\n var maxItemWidth = 0;\n var itemMarginBottom = this.get('itemMarginBottom');\n /** 判断当前 item 是否溢出当前页。是的话,需要换行 */\n function shouldWrap(item, currentPoint) {\n var bbox = item.getBBox();\n var width = itemWidth || bbox.width;\n var newItemXPos = currentPoint.x + width + itemSpacing + navigationBBox.width;\n return newItemXPos > maxWidth;\n }\n if (layout === 'horizontal') {\n var maxRow = this.get('maxRow') || 1;\n var maxRowHeight_1 = itemHeight + (maxRow === 1 ? 0 : itemMarginBottom);\n // 分页器一直靠右上角\n var navigationX_1 = maxWidth - itemSpacing - navigationBBox.width - navigationBBox.minX; // 理论上不需要减 navigationBBox.minX\n this.pageHeight = maxRowHeight_1 * maxRow;\n this.pageWidth = navigationX_1;\n each(subGroups, function (item) {\n var bbox = item.getBBox();\n var width = itemWidth || bbox.width;\n if (widthLimit && widthLimit < currentPoint.x + width + itemSpacing || shouldWrap(item, currentPoint)) {\n if (pages === 1) {\n widthLimit = currentPoint.x + itemSpacing;\n _this.moveElementTo(navigation, {\n x: navigationX_1,\n y: currentPoint.y + itemHeight / 2 - navigationBBox.height / 2 - navigationBBox.minY\n });\n }\n pages += 1;\n currentPoint.x = startX;\n currentPoint.y += maxRowHeight_1;\n }\n _this.moveElementTo(item, currentPoint);\n item.getParent().setClip({\n type: 'rect',\n attrs: {\n x: currentPoint.x,\n y: currentPoint.y,\n width: width + itemSpacing,\n height: itemHeight\n }\n });\n currentPoint.x += width + itemSpacing;\n });\n } else {\n each(subGroups, function (item) {\n var bbox = item.getBBox();\n if (bbox.width > pageWidth) {\n pageWidth = bbox.width;\n }\n });\n maxItemWidth = pageWidth;\n pageWidth += itemSpacing;\n if (maxWidth) {\n // maxWidth 限制加上\n pageWidth = Math.min(maxWidth, pageWidth);\n maxItemWidth = Math.min(maxWidth, maxItemWidth);\n }\n this.pageWidth = pageWidth;\n this.pageHeight = maxHeight - Math.max(navigationBBox.height, itemHeight + itemMarginBottom);\n var cntPerPage_1 = Math.floor(this.pageHeight / (itemHeight + itemMarginBottom));\n each(subGroups, function (item, index) {\n if (index !== 0 && index % cntPerPage_1 === 0) {\n pages += 1;\n currentPoint.x += pageWidth;\n currentPoint.y = startY;\n }\n _this.moveElementTo(item, currentPoint);\n item.getParent().setClip({\n type: 'rect',\n attrs: {\n x: currentPoint.x,\n y: currentPoint.y,\n width: pageWidth,\n height: itemHeight\n }\n });\n currentPoint.y += itemHeight + itemMarginBottom;\n });\n this.totalPagesCnt = pages;\n this.moveElementTo(navigation, {\n x: startX + maxItemWidth / 2 - navigationBBox.width / 2 - navigationBBox.minX,\n y: maxHeight - navigationBBox.height - navigationBBox.minY\n });\n }\n if (this.pageHeight && this.pageWidth) {\n // 为了使固定的 clip 生效,clip 设置在 itemContainerGroup 上,itemGroup 需要在翻页时会设置 matrix\n itemGroup.getParent().setClip({\n type: 'rect',\n attrs: {\n x: this.startX,\n y: this.startY,\n width: this.pageWidth,\n height: this.pageHeight\n }\n });\n }\n // 重新计算 totalPagesCnt\n if (layout === 'horizontal' && this.get('maxRow')) {\n this.totalPagesCnt = Math.ceil(pages / this.get('maxRow'));\n } else {\n this.totalPagesCnt = pages;\n }\n if (this.currentPageIndex > this.totalPagesCnt) {\n this.currentPageIndex = 1;\n }\n this.updateNavigation(navigation);\n // update initial matrix\n itemGroup.attr('matrix', this.getCurrentNavigationMatrix());\n };\n /**\n * 绘制分页器\n */\n Category.prototype.drawNavigation = function (group, layout, text, styleCfg) {\n var currentPoint = {\n x: 0,\n y: 0\n };\n var subGroup = this.addGroup(group, {\n id: this.getElementId('navigation-group'),\n name: 'legend-navigation'\n });\n var _a = get(styleCfg.marker, 'style', {}),\n _b = _a.size,\n size = _b === void 0 ? 12 : _b,\n arrowStyle = __rest(_a, [\"size\"]);\n var leftArrow = this.drawArrow(subGroup, currentPoint, LEFT_ARROW_NAME, layout === 'horizontal' ? 'up' : 'left', size, arrowStyle);\n leftArrow.on('click', this.onNavigationBack);\n var leftArrowBBox = leftArrow.getBBox();\n currentPoint.x += leftArrowBBox.width + 2;\n var textShape = this.addShape(subGroup, {\n type: 'text',\n id: this.getElementId('navigation-text'),\n name: 'navigation-text',\n attrs: __assign({\n x: currentPoint.x,\n y: currentPoint.y + size / 2,\n text: text,\n textBaseline: 'middle'\n }, get(styleCfg.text, 'style'))\n });\n var textBBox = textShape.getBBox();\n currentPoint.x += textBBox.width + 2;\n var rightArrow = this.drawArrow(subGroup, currentPoint, RIGHT_ARROW_NAME, layout === 'horizontal' ? 'down' : 'right', size, arrowStyle);\n rightArrow.on('click', this.onNavigationAfter);\n return subGroup;\n };\n Category.prototype.updateNavigation = function (navigation) {\n var pageNavigator = deepMix({}, DEFAULT_PAGE_NAVIGATOR, this.get('pageNavigator'));\n var _a = pageNavigator.marker.style,\n fill = _a.fill,\n opacity = _a.opacity,\n inactiveFill = _a.inactiveFill,\n inactiveOpacity = _a.inactiveOpacity;\n var text = this.currentPageIndex + \"/\" + this.totalPagesCnt;\n var textShape = navigation ? navigation.getChildren()[1] : this.getElementByLocalId('navigation-text');\n var leftArrow = navigation ? navigation.findById(this.getElementId(LEFT_ARROW_NAME)) : this.getElementByLocalId(LEFT_ARROW_NAME);\n var rightArrow = navigation ? navigation.findById(this.getElementId(RIGHT_ARROW_NAME)) : this.getElementByLocalId(RIGHT_ARROW_NAME);\n textShape.attr('text', text);\n // 更新 left-arrow marker\n leftArrow.attr('opacity', this.currentPageIndex === 1 ? inactiveOpacity : opacity);\n leftArrow.attr('fill', this.currentPageIndex === 1 ? inactiveFill : fill);\n leftArrow.attr('cursor', this.currentPageIndex === 1 ? 'not-allowed' : 'pointer');\n // 更新 right-arrow marker\n rightArrow.attr('opacity', this.currentPageIndex === this.totalPagesCnt ? inactiveOpacity : opacity);\n rightArrow.attr('fill', this.currentPageIndex === this.totalPagesCnt ? inactiveFill : fill);\n rightArrow.attr('cursor', this.currentPageIndex === this.totalPagesCnt ? 'not-allowed' : 'pointer');\n // 更新位置\n var cursorX = leftArrow.getBBox().maxX + 2;\n textShape.attr('x', cursorX);\n cursorX += textShape.getBBox().width + 2;\n this.updateArrowPath(rightArrow, {\n x: cursorX,\n y: 0\n });\n };\n Category.prototype.drawArrow = function (group, currentPoint, name, direction, size, style) {\n var x = currentPoint.x,\n y = currentPoint.y;\n var shape = this.addShape(group, {\n type: 'path',\n id: this.getElementId(name),\n name: name,\n attrs: __assign({\n size: size,\n direction: direction,\n path: [['M', x + size / 2, y], ['L', x, y + size], ['L', x + size, y + size], ['Z']],\n cursor: 'pointer'\n }, style)\n });\n shape.attr('matrix', getMatrixByAngle({\n x: x + size / 2,\n y: y + size / 2\n }, ROTATE_MAP[direction]));\n return shape;\n };\n /**\n * 更新分页器 arrow 组件\n */\n Category.prototype.updateArrowPath = function (arrow, point) {\n var x = point.x,\n y = point.y;\n var _a = arrow.attr(),\n size = _a.size,\n direction = _a.direction;\n var matrix = getMatrixByAngle({\n x: x + size / 2,\n y: y + size / 2\n }, ROTATE_MAP[direction]);\n arrow.attr('path', [['M', x + size / 2, y], ['L', x, y + size], ['L', x + size, y + size], ['Z']]);\n arrow.attr('matrix', matrix);\n };\n Category.prototype.getCurrentNavigationMatrix = function () {\n var _a = this,\n currentPageIndex = _a.currentPageIndex,\n pageWidth = _a.pageWidth,\n pageHeight = _a.pageHeight;\n var layout = this.get('layout');\n var translate = layout === 'horizontal' ? {\n x: 0,\n y: pageHeight * (1 - currentPageIndex)\n } : {\n x: pageWidth * (1 - currentPageIndex),\n y: 0\n };\n return getMatrixByTranslate(translate);\n };\n // 附加状态对应的样式\n Category.prototype.applyItemStates = function (item, subGroup) {\n var states = this.getItemStates(item);\n var hasStates = states.length > 0;\n if (hasStates) {\n var children = subGroup.getChildren();\n var itemStates_1 = this.get('itemStates');\n each(children, function (element) {\n var name = element.get('name');\n var elName = name.split('-')[2]; // marker, name, value\n var statesStyle = getStatesStyle(item, elName, itemStates_1);\n if (statesStyle) {\n element.attr(statesStyle);\n if (elName === 'marker' && !(element.get('isStroke') && element.get('isFill'))) {\n // 如果 marker 是单填充或者单描边的话,就不要额外添加 stroke 或这 fill 属性,否则会影响 unchecked 后的显示\n if (element.get('isStroke')) {\n element.attr('fill', null);\n }\n if (element.get('isFill')) {\n element.attr('stroke', null);\n }\n }\n }\n });\n }\n };\n // 获取 itemWidth 的最终设置\n Category.prototype.getLimitItemWidth = function () {\n var itemWidth = this.get('itemWidth');\n var maxItemWidth = this.get('maxItemWidth');\n if (maxItemWidth) {\n // 设置了最大宽度\n if (itemWidth) {\n maxItemWidth = itemWidth <= maxItemWidth ? itemWidth : maxItemWidth;\n }\n } else if (itemWidth) {\n maxItemWidth = itemWidth;\n }\n return maxItemWidth;\n };\n return Category;\n}(LegendBase);\nexport default Category;","import { __assign, __extends, __spreadArrays } from \"tslib\";\nimport { clone, isFunction, mix, upperFirst } from '@antv/util';\nimport Theme from '../util/theme';\nimport { getValueByPercent } from '../util/util';\nimport LegendBase from './base';\nvar HANDLER_HEIGHT_RATIO = 1.4;\nvar HANDLER_TRIANGLE_RATIO = 0.4;\nvar ContinueLegend = /** @class */function (_super) {\n __extends(ContinueLegend, _super);\n function ContinueLegend() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ContinueLegend.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n type: 'continue',\n min: 0,\n max: 100,\n value: null,\n colors: [],\n track: {},\n rail: {},\n label: {},\n handler: {},\n slidable: true,\n tip: null,\n step: null,\n maxWidth: null,\n maxHeight: null,\n defaultCfg: {\n label: {\n align: 'rail',\n spacing: 5,\n formatter: null,\n style: {\n fontSize: 12,\n fill: Theme.textColor,\n textBaseline: 'middle',\n fontFamily: Theme.fontFamily\n }\n },\n handler: {\n size: 10,\n style: {\n fill: '#fff',\n stroke: '#333'\n }\n },\n track: {},\n rail: {\n type: 'color',\n size: 20,\n defaultLength: 100,\n style: {\n fill: '#DCDEE2'\n }\n },\n title: {\n spacing: 5,\n style: {\n fill: Theme.textColor,\n fontSize: 12,\n textAlign: 'start',\n textBaseline: 'top'\n }\n }\n }\n });\n };\n ContinueLegend.prototype.isSlider = function () {\n return true;\n };\n // 实现 IList 接口\n ContinueLegend.prototype.getValue = function () {\n return this.getCurrentValue();\n };\n ContinueLegend.prototype.getRange = function () {\n return {\n min: this.get('min'),\n max: this.get('max')\n };\n };\n // 改变 range\n ContinueLegend.prototype.setRange = function (min, max) {\n this.update({\n min: min,\n max: max\n });\n };\n ContinueLegend.prototype.setValue = function (value) {\n var originValue = this.getValue();\n this.set('value', value);\n var group = this.get('group');\n this.resetTrackClip();\n if (this.get('slidable')) {\n this.resetHandlers(group);\n }\n this.delegateEmit('valuechanged', {\n originValue: originValue,\n value: value\n });\n };\n ContinueLegend.prototype.initEvent = function () {\n var group = this.get('group');\n this.bindSliderEvent(group);\n this.bindRailEvent(group);\n this.bindTrackEvent(group);\n };\n ContinueLegend.prototype.drawLegendContent = function (group) {\n this.drawRail(group);\n this.drawLabels(group);\n this.fixedElements(group); // 调整各个图形位置,适应宽高的限制\n this.resetTrack(group);\n this.resetTrackClip(group);\n if (this.get('slidable')) {\n this.resetHandlers(group);\n }\n };\n ContinueLegend.prototype.bindSliderEvent = function (group) {\n this.bindHandlersEvent(group);\n };\n ContinueLegend.prototype.bindHandlersEvent = function (group) {\n var _this = this;\n group.on('legend-handler-min:drag', function (ev) {\n var minValue = _this.getValueByCanvasPoint(ev.x, ev.y);\n var currentValue = _this.getCurrentValue();\n var maxValue = currentValue[1];\n if (maxValue < minValue) {\n // 如果小于最小值,则调整最小值\n maxValue = minValue;\n }\n _this.setValue([minValue, maxValue]);\n });\n group.on('legend-handler-max:drag', function (ev) {\n var maxValue = _this.getValueByCanvasPoint(ev.x, ev.y);\n var currentValue = _this.getCurrentValue();\n var minValue = currentValue[0];\n if (minValue > maxValue) {\n // 如果小于最小值,则调整最小值\n minValue = maxValue;\n }\n _this.setValue([minValue, maxValue]);\n });\n };\n ContinueLegend.prototype.bindRailEvent = function (group) {};\n ContinueLegend.prototype.bindTrackEvent = function (group) {\n var _this = this;\n var prePoint = null;\n group.on('legend-track:dragstart', function (ev) {\n prePoint = {\n x: ev.x,\n y: ev.y\n };\n });\n group.on('legend-track:drag', function (ev) {\n if (!prePoint) {\n return;\n }\n var preValue = _this.getValueByCanvasPoint(prePoint.x, prePoint.y);\n var curValue = _this.getValueByCanvasPoint(ev.x, ev.y);\n var currentValue = _this.getCurrentValue();\n var curDiff = currentValue[1] - currentValue[0];\n var range = _this.getRange();\n var dValue = curValue - preValue;\n if (dValue < 0) {\n // 减小, 同时未出边界\n if (currentValue[0] + dValue > range.min) {\n _this.setValue([currentValue[0] + dValue, currentValue[1] + dValue]);\n } else {\n _this.setValue([range.min, range.min + curDiff]);\n }\n // && ||\n } else if (dValue > 0) {\n if (dValue > 0 && currentValue[1] + dValue < range.max) {\n _this.setValue([currentValue[0] + dValue, currentValue[1] + dValue]);\n } else {\n _this.setValue([range.max - curDiff, range.max]);\n }\n }\n prePoint = {\n x: ev.x,\n y: ev.y\n };\n });\n group.on('legend-track:dragend', function (ev) {\n prePoint = null;\n });\n };\n ContinueLegend.prototype.drawLabels = function (group) {\n this.drawLabel('min', group);\n this.drawLabel('max', group);\n };\n ContinueLegend.prototype.drawLabel = function (name, group) {\n var labelCfg = this.get('label');\n var style = labelCfg.style;\n var labelAlign = labelCfg.align;\n var labelFormatter = labelCfg.formatter;\n var value = this.get(name);\n var alignAttrs = this.getLabelAlignAttrs(name, labelAlign);\n var localId = \"label-\" + name;\n this.addShape(group, {\n type: 'text',\n id: this.getElementId(localId),\n name: \"legend-label-\" + name,\n attrs: __assign(__assign({\n x: 0,\n y: 0,\n text: isFunction(labelFormatter) ? labelFormatter(value) : value\n }, style), alignAttrs)\n });\n };\n // 获取文本的对齐方式,为了自适应真实操碎了心\n ContinueLegend.prototype.getLabelAlignAttrs = function (name, align) {\n var isVertical = this.isVertical();\n var textAlign = 'center';\n var textBaseline = 'middle';\n if (isVertical) {\n // 垂直布局的所有的文本都左对齐\n textAlign = 'start';\n if (align !== 'rail') {\n if (name === 'min') {\n textBaseline = 'top';\n } else {\n textBaseline = 'bottom';\n }\n } else {\n textBaseline = 'top';\n }\n } else {\n if (align !== 'rail') {\n textBaseline = 'top';\n if (name === 'min') {\n textAlign = 'start';\n } else {\n textAlign = 'end';\n }\n } else {\n textAlign = 'start';\n textBaseline = 'middle';\n }\n }\n return {\n textAlign: textAlign,\n textBaseline: textBaseline\n };\n };\n ContinueLegend.prototype.getRailPath = function (x, y, w, h) {\n var railCfg = this.get('rail');\n var size = railCfg.size,\n defaultLength = railCfg.defaultLength,\n type = railCfg.type;\n var isVertical = this.isVertical();\n var length = defaultLength;\n var width = w;\n var height = h;\n if (!width) {\n width = isVertical ? size : length;\n }\n if (!height) {\n height = isVertical ? length : size;\n }\n var path = [];\n if (type === 'color') {\n path.push(['M', x, y]);\n path.push(['L', x + width, y]);\n path.push(['L', x + width, y + height]);\n path.push(['L', x, y + height]);\n path.push(['Z']);\n } else {\n path.push(['M', x + width, y]);\n path.push(['L', x + width, y + height]);\n path.push(['L', x, y + height]);\n path.push(['Z']);\n }\n return path;\n };\n ContinueLegend.prototype.drawRail = function (group) {\n var railCfg = this.get('rail');\n var style = railCfg.style;\n this.addShape(group, {\n type: 'path',\n id: this.getElementId('rail'),\n name: 'legend-rail',\n attrs: __assign({\n path: this.getRailPath(0, 0)\n }, style)\n });\n };\n // 将传入的颜色转换成渐变色\n ContinueLegend.prototype.getTrackColor = function (colors) {\n var count = colors.length;\n if (!count) {\n return null;\n }\n if (count === 1) {\n return colors[0];\n }\n var color; // 最终形态 l(0) 0:colors[0] 0.5:colors[1] 1:colors[2];\n if (this.isVertical()) {\n // 根据方向设置渐变方向\n color = 'l(90)';\n } else {\n color = 'l(0)';\n }\n for (var i = 0; i < count; i++) {\n var percent = i / (count - 1);\n color += \" \" + percent + \":\" + colors[i];\n }\n return color;\n };\n ContinueLegend.prototype.getTrackPath = function (group) {\n var railShape = this.getRailShape(group);\n var path = railShape.attr('path');\n return clone(path);\n };\n ContinueLegend.prototype.getClipTrackAttrs = function (group) {\n var value = this.getCurrentValue();\n var min = value[0],\n max = value[1];\n var railBBox = this.getRailBBox(group);\n var startPoint = this.getPointByValue(min, group);\n var endPoint = this.getPointByValue(max, group);\n var isVertical = this.isVertical();\n var x;\n var y;\n var width;\n var height;\n if (isVertical) {\n x = railBBox.minX;\n y = startPoint.y;\n width = railBBox.width;\n height = endPoint.y - startPoint.y;\n } else {\n x = startPoint.x;\n y = railBBox.minY;\n width = endPoint.x - startPoint.x;\n height = railBBox.height;\n }\n return {\n x: x,\n y: y,\n width: width,\n height: height\n };\n };\n // 获取 track 的属性,由 path 和 颜色构成\n ContinueLegend.prototype.getTrackAttrs = function (group) {\n var trackCfg = this.get('track');\n var colors = this.get('colors');\n var path = this.getTrackPath(group);\n return mix({\n path: path,\n fill: this.getTrackColor(colors)\n }, trackCfg.style);\n };\n ContinueLegend.prototype.resetTrackClip = function (group) {\n var container = group || this.get('group');\n var trackId = this.getElementId('track');\n var trackShape = container.findById(trackId);\n var clipShape = trackShape.getClip();\n var attrs = this.getClipTrackAttrs(group);\n if (!clipShape) {\n trackShape.setClip({\n type: 'rect',\n attrs: attrs\n });\n } else {\n clipShape.attr(attrs);\n }\n };\n ContinueLegend.prototype.resetTrack = function (group) {\n var trackId = this.getElementId('track');\n var trackShape = group.findById(trackId);\n var trackAttrs = this.getTrackAttrs(group);\n if (trackShape) {\n trackShape.attr(trackAttrs);\n } else {\n this.addShape(group, {\n type: 'path',\n id: trackId,\n draggable: this.get('slidable'),\n name: 'legend-track',\n attrs: trackAttrs\n });\n }\n };\n ContinueLegend.prototype.getPointByValue = function (value, group) {\n var _a = this.getRange(),\n min = _a.min,\n max = _a.max;\n var percent = (value - min) / (max - min);\n var bbox = this.getRailBBox(group);\n var isVertcal = this.isVertical();\n var point = {\n x: 0,\n y: 0\n };\n if (isVertcal) {\n point.x = bbox.minX + bbox.width / 2;\n point.y = getValueByPercent(bbox.minY, bbox.maxY, percent);\n } else {\n point.x = getValueByPercent(bbox.minX, bbox.maxX, percent);\n point.y = bbox.minY + bbox.height / 2;\n }\n return point;\n };\n ContinueLegend.prototype.getRailShape = function (group) {\n var container = group || this.get('group');\n return container.findById(this.getElementId('rail'));\n };\n // 获取滑轨的宽高信息\n ContinueLegend.prototype.getRailBBox = function (group) {\n var railShape = this.getRailShape(group);\n var bbox = railShape.getBBox();\n return bbox;\n };\n ContinueLegend.prototype.getRailCanvasBBox = function () {\n var container = this.get('group');\n var railShape = container.findById(this.getElementId('rail'));\n var bbox = railShape.getCanvasBBox();\n return bbox;\n };\n // 是否垂直\n ContinueLegend.prototype.isVertical = function () {\n return this.get('layout') === 'vertical';\n };\n // 用于交互时\n ContinueLegend.prototype.getValueByCanvasPoint = function (x, y) {\n var _a = this.getRange(),\n min = _a.min,\n max = _a.max;\n var bbox = this.getRailCanvasBBox(); // 因为 x, y 是画布坐标\n var isVertcal = this.isVertical();\n var step = this.get('step');\n var percent;\n if (isVertcal) {\n // 垂直时计算 y\n percent = (y - bbox.minY) / bbox.height;\n } else {\n // 水平时计算 x\n percent = (x - bbox.minX) / bbox.width;\n }\n var value = getValueByPercent(min, max, percent);\n if (step) {\n var count = Math.round((value - min) / step);\n value = min + count * step; // 移动到最近的\n }\n\n if (value > max) {\n value = max;\n }\n if (value < min) {\n value = min;\n }\n return value;\n };\n // 当前选中的范围\n ContinueLegend.prototype.getCurrentValue = function () {\n var value = this.get('value');\n if (!value) {\n var values = this.get('values');\n if (!values) {\n return [this.get('min'), this.get('max')];\n }\n // 如果没有定义,取最大范围 最小值 为 values 中的最小值, 如果最小值 超过了 定义的最大值 则 做限制 最大值 反之\n return [Math.max(Math.min.apply(Math, __spreadArrays(values, [this.get('max')])), this.get('min')), Math.min(Math.max.apply(Math, __spreadArrays(values, [this.get('min')])), this.get('max'))];\n }\n return value;\n };\n // 重置滑块 handler\n ContinueLegend.prototype.resetHandlers = function (group) {\n var currentValue = this.getCurrentValue();\n var min = currentValue[0],\n max = currentValue[1];\n this.resetHandler(group, 'min', min);\n this.resetHandler(group, 'max', max);\n };\n // 获取滑块的 path\n ContinueLegend.prototype.getHandlerPath = function (handlerCfg, point) {\n var isVertical = this.isVertical();\n var path = [];\n var width = handlerCfg.size;\n var x = point.x,\n y = point.y;\n var height = width * HANDLER_HEIGHT_RATIO;\n var halfWidth = width / 2;\n var oneSixthWidth = width / 6;\n if (isVertical) {\n /**\n * 竖直情况下的滑块 handler,左侧顶点是 x,y\n * /----|\n * -- |\n * -- |\n * \\----|\n */\n var triangleX = x + height * HANDLER_TRIANGLE_RATIO;\n path.push(['M', x, y]);\n path.push(['L', triangleX, y + halfWidth]);\n path.push(['L', x + height, y + halfWidth]);\n path.push(['L', x + height, y - halfWidth]);\n path.push(['L', triangleX, y - halfWidth]);\n path.push(['Z']);\n // 绘制两条横线\n path.push(['M', triangleX, y + oneSixthWidth]);\n path.push(['L', x + height - 2, y + oneSixthWidth]);\n path.push(['M', triangleX, y - oneSixthWidth]);\n path.push(['L', x + height - 2, y - oneSixthWidth]);\n } else {\n /**\n * 水平情况下的滑块,上面顶点处是 x,y\n * / \\\n * | | | |\n * | | | |\n * -----\n */\n var triangleY = y + height * HANDLER_TRIANGLE_RATIO;\n path.push(['M', x, y]);\n path.push(['L', x - halfWidth, triangleY]);\n path.push(['L', x - halfWidth, y + height]);\n path.push(['L', x + halfWidth, y + height]);\n path.push(['L', x + halfWidth, triangleY]);\n path.push(['Z']);\n // 绘制两条竖线\n path.push(['M', x - oneSixthWidth, triangleY]);\n path.push(['L', x - oneSixthWidth, y + height - 2]);\n path.push(['M', x + oneSixthWidth, triangleY]);\n path.push(['L', x + oneSixthWidth, y + height - 2]);\n }\n return path;\n };\n // 调整 handler 的位置,如果未存在则绘制\n ContinueLegend.prototype.resetHandler = function (group, name, value) {\n var point = this.getPointByValue(value, group);\n var handlerCfg = this.get('handler');\n var path = this.getHandlerPath(handlerCfg, point);\n var id = this.getElementId(\"handler-\" + name);\n var handlerShape = group.findById(id);\n var isVertical = this.isVertical();\n if (handlerShape) {\n handlerShape.attr('path', path);\n } else {\n this.addShape(group, {\n type: 'path',\n name: \"legend-handler-\" + name,\n draggable: true,\n id: id,\n attrs: __assign(__assign({\n path: path\n }, handlerCfg.style), {\n cursor: isVertical ? 'ns-resize' : 'ew-resize'\n })\n });\n }\n };\n // 当设置了 maxWidth, maxHeight 时调整 rail 的宽度,\n // 文本的位置\n ContinueLegend.prototype.fixedElements = function (group) {\n var railShape = group.findById(this.getElementId('rail'));\n var minLabel = group.findById(this.getElementId('label-min'));\n var maxLabel = group.findById(this.getElementId('label-max'));\n var startPoint = this.getDrawPoint();\n if (this.isVertical()) {\n // 横向布局\n this.fixedVertail(minLabel, maxLabel, railShape, startPoint);\n } else {\n // 水平布局\n this.fixedHorizontal(minLabel, maxLabel, railShape, startPoint);\n }\n };\n ContinueLegend.prototype.fitRailLength = function (minLabelBBox, maxLabelBBox, railBBox, railShape) {\n var isVertical = this.isVertical();\n var lengthField = isVertical ? 'height' : 'width';\n var labelCfg = this.get('label');\n var labelAlign = labelCfg.align;\n var spacing = labelCfg.spacing;\n var maxLength = this.get(\"max\" + upperFirst(lengthField)); // get('maxWidth')\n if (maxLength) {\n var elementsLength = labelAlign === 'rail' ? railBBox[lengthField] + minLabelBBox[lengthField] + maxLabelBBox[lengthField] + spacing * 2 : railBBox[lengthField];\n var diff = elementsLength - maxLength;\n if (diff > 0) {\n // 大于限制的长度\n this.changeRailLength(railShape, lengthField, railBBox[lengthField] - diff);\n }\n }\n };\n ContinueLegend.prototype.changeRailLength = function (railShape, lengthField, length) {\n var bbox = railShape.getBBox();\n var path;\n if (lengthField === 'height') {\n path = this.getRailPath(bbox.x, bbox.y, bbox.width, length);\n } else {\n path = this.getRailPath(bbox.x, bbox.y, length, bbox.height);\n }\n railShape.attr('path', path);\n };\n ContinueLegend.prototype.changeRailPosition = function (railShape, x, y) {\n var bbox = railShape.getBBox();\n var path = this.getRailPath(x, y, bbox.width, bbox.height);\n railShape.attr('path', path);\n };\n ContinueLegend.prototype.fixedHorizontal = function (minLabel, maxLabel, railShape, startPoint) {\n var labelCfg = this.get('label');\n var labelAlign = labelCfg.align;\n var spacing = labelCfg.spacing;\n var railBBox = railShape.getBBox();\n var minLabelBBox = minLabel.getBBox();\n var maxLabelBBox = maxLabel.getBBox();\n var railHeight = railBBox.height; // 取 rail 的高度,作为高度\n this.fitRailLength(minLabelBBox, maxLabelBBox, railBBox, railShape);\n railBBox = railShape.getBBox();\n if (labelAlign === 'rail') {\n // 沿着 rail 方向\n minLabel.attr({\n x: startPoint.x,\n y: startPoint.y + railHeight / 2\n });\n this.changeRailPosition(railShape, startPoint.x + minLabelBBox.width + spacing, startPoint.y);\n maxLabel.attr({\n x: startPoint.x + minLabelBBox.width + railBBox.width + spacing * 2,\n y: startPoint.y + railHeight / 2\n });\n } else if (labelAlign === 'top') {\n minLabel.attr({\n x: startPoint.x,\n y: startPoint.y\n });\n maxLabel.attr({\n x: startPoint.x + railBBox.width,\n y: startPoint.y\n });\n this.changeRailPosition(railShape, startPoint.x, startPoint.y + minLabelBBox.height + spacing);\n } else {\n this.changeRailPosition(railShape, startPoint.x, startPoint.y);\n minLabel.attr({\n x: startPoint.x,\n y: startPoint.y + railBBox.height + spacing\n });\n maxLabel.attr({\n x: startPoint.x + railBBox.width,\n y: startPoint.y + railBBox.height + spacing\n });\n }\n };\n ContinueLegend.prototype.fixedVertail = function (minLabel, maxLabel, railShape, startPoint) {\n var labelCfg = this.get('label');\n var labelAlign = labelCfg.align;\n var spacing = labelCfg.spacing;\n var railBBox = railShape.getBBox();\n var minLabelBBox = minLabel.getBBox();\n var maxLabelBBox = maxLabel.getBBox();\n this.fitRailLength(minLabelBBox, maxLabelBBox, railBBox, railShape);\n railBBox = railShape.getBBox();\n if (labelAlign === 'rail') {\n // 沿着 rail 方向\n minLabel.attr({\n x: startPoint.x,\n y: startPoint.y\n });\n this.changeRailPosition(railShape, startPoint.x, startPoint.y + minLabelBBox.height + spacing);\n maxLabel.attr({\n x: startPoint.x,\n y: startPoint.y + minLabelBBox.height + railBBox.height + spacing * 2\n });\n } else if (labelAlign === 'right') {\n minLabel.attr({\n x: startPoint.x + railBBox.width + spacing,\n y: startPoint.y\n });\n this.changeRailPosition(railShape, startPoint.x, startPoint.y);\n maxLabel.attr({\n x: startPoint.x + railBBox.width + spacing,\n y: startPoint.y + railBBox.height\n });\n } else {\n // left\n var maxLabelWidth = Math.max(minLabelBBox.width, maxLabelBBox.width);\n minLabel.attr({\n x: startPoint.x,\n y: startPoint.y\n });\n this.changeRailPosition(railShape, startPoint.x + maxLabelWidth + spacing, startPoint.y);\n maxLabel.attr({\n x: startPoint.x,\n y: startPoint.y + railBBox.height\n });\n }\n };\n return ContinueLegend;\n}(LegendBase);\nexport default ContinueLegend;","export var CONTAINER_CLASS = 'g2-tooltip';\nexport var TITLE_CLASS = 'g2-tooltip-title';\nexport var LIST_CLASS = 'g2-tooltip-list';\nexport var LIST_ITEM_CLASS = 'g2-tooltip-list-item';\nexport var MARKER_CLASS = 'g2-tooltip-marker';\nexport var VALUE_CLASS = 'g2-tooltip-value';\nexport var NAME_CLASS = 'g2-tooltip-name';\nexport var CROSSHAIR_X = 'g2-tooltip-crosshair-x';\nexport var CROSSHAIR_Y = 'g2-tooltip-crosshair-y';","import { __assign, __extends } from \"tslib\";\nimport colorUtil from '@antv/color-util';\nimport { createDom, modifyCSS } from '@antv/dom-util';\nimport { each, hasKey, isElement, substitute } from '@antv/util';\nimport HtmlComponent from '../abstract/html-component';\nimport { clearDom, regionToBBox, toPx } from '../util/util';\nimport * as CssConst from './css-const';\nimport TooltipTheme from './html-theme';\nimport { getAlignPoint } from '../util/align';\nfunction hasOneKey(obj, keys) {\n var result = false;\n each(keys, function (key) {\n if (hasKey(obj, key)) {\n result = true;\n return false;\n }\n });\n return result;\n}\nvar Tooltip = /** @class */function (_super) {\n __extends(Tooltip, _super);\n function Tooltip() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Tooltip.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n name: 'tooltip',\n type: 'html',\n x: 0,\n y: 0,\n items: [],\n customContent: null,\n containerTpl: \"
        \",\n itemTpl: \"
      • \\n \\n {name}:\\n {value}\\n
      • \",\n xCrosshairTpl: \"
        \",\n yCrosshairTpl: \"
        \",\n title: null,\n showTitle: true,\n /**\n * tooltip 限制的区域\n * @type {Region}\n */\n region: null,\n // crosshair 的限制区域\n crosshairsRegion: null,\n containerClassName: CssConst.CONTAINER_CLASS,\n // x, y, xy\n crosshairs: null,\n offset: 10,\n position: 'right',\n domStyles: null,\n defaultStyles: TooltipTheme\n });\n };\n // tooltip 渲染时,渲染 title,items 和 corosshairs\n Tooltip.prototype.render = function () {\n if (this.get('customContent')) {\n this.renderCustomContent();\n } else {\n this.resetTitle();\n this.renderItems();\n }\n // 绘制完成后,再定位\n this.resetPosition();\n };\n // 复写清空函数,因为有模板的存在,所以默认的写法不合适\n Tooltip.prototype.clear = function () {\n // 由于 crosshair 没有在 container 内,所以需要单独清理\n this.clearCrosshairs();\n this.setTitle(''); // 清空标题\n this.clearItemDoms();\n };\n Tooltip.prototype.show = function () {\n var container = this.getContainer();\n if (!container || this.destroyed) {\n // 防止容器不存在或者被销毁时报错\n return;\n }\n this.set('visible', true);\n modifyCSS(container, {\n visibility: 'visible'\n });\n this.setCrossHairsVisible(true);\n };\n Tooltip.prototype.hide = function () {\n var container = this.getContainer();\n // relative: https://github.com/antvis/g2/issues/1221\n if (!container || this.destroyed) {\n return;\n }\n this.set('visible', false);\n modifyCSS(container, {\n visibility: 'hidden'\n });\n this.setCrossHairsVisible(false);\n };\n // 实现 IPointLocation 的接口\n Tooltip.prototype.getLocation = function () {\n return {\n x: this.get('x'),\n y: this.get('y')\n };\n };\n // 实现 IPointLocation 的接口\n Tooltip.prototype.setLocation = function (point) {\n this.set('x', point.x);\n this.set('y', point.y);\n this.resetPosition();\n };\n Tooltip.prototype.setCrossHairsVisible = function (visible) {\n var display = visible ? '' : 'none';\n var xCrosshairDom = this.get('xCrosshairDom');\n var yCrosshairDom = this.get('yCrosshairDom');\n xCrosshairDom && modifyCSS(xCrosshairDom, {\n display: display\n });\n yCrosshairDom && modifyCSS(yCrosshairDom, {\n display: display\n });\n };\n // 如有 customContent 则根据 customContent 设置 container\n Tooltip.prototype.initContainer = function () {\n _super.prototype.initContainer.call(this);\n if (this.get('customContent')) {\n if (this.get('container')) {\n this.get('container').remove();\n }\n var container = this.getHtmlContentNode();\n this.get('parent').appendChild(container);\n this.set('container', container);\n this.resetStyles();\n this.applyStyles();\n }\n };\n // 更新属性的同时,可能会引起 DOM 的变化,这里对可能引起 DOM 变化的场景做了处理\n Tooltip.prototype.updateInner = function (cfg) {\n if (this.get('customContent')) {\n this.renderCustomContent();\n } else {\n // 更新标题\n if (hasOneKey(cfg, ['title', 'showTitle'])) {\n this.resetTitle();\n }\n // 更新内容\n if (hasKey(cfg, 'items')) {\n this.renderItems();\n }\n }\n _super.prototype.updateInner.call(this, cfg);\n };\n Tooltip.prototype.initDom = function () {\n this.cacheDoms();\n };\n // 清理 DOM\n Tooltip.prototype.removeDom = function () {\n _super.prototype.removeDom.call(this);\n this.clearCrosshairs();\n };\n // 调整位置\n Tooltip.prototype.resetPosition = function () {\n var x = this.get('x');\n var y = this.get('y');\n var offset = this.get('offset');\n var _a = this.getOffset(),\n offsetX = _a.offsetX,\n offsetY = _a.offsetY;\n var position = this.get('position');\n var region = this.get('region');\n var container = this.getContainer();\n var bbox = this.getBBox();\n var width = bbox.width,\n height = bbox.height;\n var limitBox;\n if (region) {\n // 不限制位置\n limitBox = regionToBBox(region);\n }\n var point = getAlignPoint(x, y, offset, width, height, position, limitBox);\n modifyCSS(container, {\n left: toPx(point.x + offsetX),\n top: toPx(point.y + offsetY)\n });\n this.resetCrosshairs();\n };\n // 根据 customContent 渲染\n Tooltip.prototype.renderCustomContent = function () {\n var node = this.getHtmlContentNode();\n var parent = this.get('parent');\n var curContainer = this.get('container');\n if (curContainer && curContainer.parentNode === parent) {\n parent.replaceChild(node, curContainer);\n } else {\n parent.appendChild(node);\n }\n this.set('container', node);\n this.resetStyles();\n this.applyStyles();\n };\n Tooltip.prototype.getHtmlContentNode = function () {\n var node;\n var customContent = this.get('customContent');\n if (customContent) {\n var elem = customContent(this.get('title'), this.get('items'));\n if (isElement(elem)) {\n node = elem;\n } else {\n node = createDom(elem);\n }\n }\n return node;\n };\n // 缓存模板设置的各种 DOM\n Tooltip.prototype.cacheDoms = function () {\n var container = this.getContainer();\n var titleDom = container.getElementsByClassName(CssConst.TITLE_CLASS)[0];\n var listDom = container.getElementsByClassName(CssConst.LIST_CLASS)[0];\n this.set('titleDom', titleDom);\n this.set('listDom', listDom);\n };\n // 重置 title\n Tooltip.prototype.resetTitle = function () {\n var title = this.get('title');\n var showTitle = this.get('showTitle');\n if (showTitle && title) {\n this.setTitle(title);\n } else {\n this.setTitle('');\n }\n };\n // 设置 title 文本\n Tooltip.prototype.setTitle = function (text) {\n var titleDom = this.get('titleDom');\n if (titleDom) {\n titleDom.innerText = text;\n }\n };\n // 终止 crosshair\n Tooltip.prototype.resetCrosshairs = function () {\n var crosshairsRegion = this.get('crosshairsRegion');\n var crosshairs = this.get('crosshairs');\n if (!crosshairsRegion || !crosshairs) {\n // 不显示 crosshair,都移除,没有设定 region 也都移除掉\n this.clearCrosshairs();\n } else {\n var crosshairBox = regionToBBox(crosshairsRegion);\n var xCrosshairDom = this.get('xCrosshairDom');\n var yCrosshairDom = this.get('yCrosshairDom');\n if (crosshairs === 'x') {\n this.resetCrosshair('x', crosshairBox);\n // 仅显示 x 的 crosshair,y 移除\n if (yCrosshairDom) {\n yCrosshairDom.remove();\n this.set('yCrosshairDom', null);\n }\n } else if (crosshairs === 'y') {\n this.resetCrosshair('y', crosshairBox);\n // 仅显示 y 的 crosshair,x 移除\n if (xCrosshairDom) {\n xCrosshairDom.remove();\n this.set('xCrosshairDom', null);\n }\n } else {\n this.resetCrosshair('x', crosshairBox);\n this.resetCrosshair('y', crosshairBox);\n }\n this.setCrossHairsVisible(this.get('visible'));\n }\n };\n // 设定 crosshair 的位置,需要区分 x,y\n Tooltip.prototype.resetCrosshair = function (name, bbox) {\n var croshairDom = this.checkCrosshair(name);\n var value = this.get(name);\n if (name === 'x') {\n modifyCSS(croshairDom, {\n left: toPx(value),\n top: toPx(bbox.y),\n height: toPx(bbox.height)\n });\n } else {\n modifyCSS(croshairDom, {\n top: toPx(value),\n left: toPx(bbox.x),\n width: toPx(bbox.width)\n });\n }\n };\n // 如果 crosshair 对应的 dom 不存在,则创建\n Tooltip.prototype.checkCrosshair = function (name) {\n var domName = name + \"CrosshairDom\";\n var tplName = name + \"CrosshairTpl\";\n var constName = \"CROSSHAIR_\" + name.toUpperCase();\n var styleName = CssConst[constName];\n var croshairDom = this.get(domName);\n var parent = this.get('parent');\n if (!croshairDom) {\n croshairDom = createDom(this.get(tplName)); // 创建\n this.applyStyle(styleName, croshairDom); // 设置初始样式\n parent.appendChild(croshairDom); // 添加到跟 tooltip 同级的目录下\n this.set(domName, croshairDom);\n }\n return croshairDom;\n };\n Tooltip.prototype.renderItems = function () {\n this.clearItemDoms();\n var items = this.get('items');\n var itemTpl = this.get('itemTpl');\n var listDom = this.get('listDom');\n if (listDom) {\n each(items, function (item) {\n var color = colorUtil.toCSSGradient(item.color);\n var substituteObj = __assign(__assign({}, item), {\n color: color\n });\n var domStr = substitute(itemTpl, substituteObj);\n var itemDom = createDom(domStr);\n listDom.appendChild(itemDom);\n });\n this.applyChildrenStyles(listDom, this.get('domStyles'));\n }\n };\n Tooltip.prototype.clearItemDoms = function () {\n if (this.get('listDom')) {\n clearDom(this.get('listDom'));\n }\n };\n Tooltip.prototype.clearCrosshairs = function () {\n var xCrosshairDom = this.get('xCrosshairDom');\n var yCrosshairDom = this.get('yCrosshairDom');\n xCrosshairDom && xCrosshairDom.remove();\n yCrosshairDom && yCrosshairDom.remove();\n this.set('xCrosshairDom', null);\n this.set('yCrosshairDom', null);\n };\n return Tooltip;\n}(HtmlComponent);\nexport default Tooltip;","// 检测各边是否超出\nexport function getOutSides(x, y, width, height, limitBox) {\n var hits = {\n left: x < limitBox.x,\n right: x + width > limitBox.x + limitBox.width,\n top: y < limitBox.y,\n bottom: y + height > limitBox.y + limitBox.height\n };\n return hits;\n}\nexport function getPointByPosition(x, y, offset, width, height, position) {\n var px = x;\n var py = y;\n switch (position) {\n case 'left':\n // left center\n px = x - width - offset;\n py = y - height / 2;\n break;\n case 'right':\n px = x + offset;\n py = y - height / 2;\n break;\n case 'top':\n px = x - width / 2;\n py = y - height - offset;\n break;\n case 'bottom':\n // bottom\n px = x - width / 2;\n py = y + offset;\n break;\n default:\n // auto, 在 top-right\n px = x + offset;\n py = y - height - offset;\n break;\n }\n return {\n x: px,\n y: py\n };\n}\nexport function getAlignPoint(x, y, offset, width, height, position, limitBox) {\n var point = getPointByPosition(x, y, offset, width, height, position);\n if (limitBox) {\n var outSides = getOutSides(point.x, point.y, width, height, limitBox);\n if (position === 'auto') {\n // 如果是 auto,默认 tooltip 在右上角,仅需要判定右侧和上测冲突即可\n if (outSides.right) {\n point.x = Math.max(0, x - width - offset);\n }\n if (outSides.top) {\n point.y = Math.max(0, y - height - offset);\n }\n } else if (position === 'top' || position === 'bottom') {\n if (outSides.left) {\n // 左侧躲避\n point.x = limitBox.x;\n }\n if (outSides.right) {\n // 右侧躲避\n point.x = limitBox.x + limitBox.width - width;\n }\n if (position === 'top' && outSides.top) {\n // 如果上面对齐检测上面,不检测下面\n point.y = y + offset;\n }\n if (position === 'bottom' && outSides.bottom) {\n point.y = y - height - offset;\n }\n } else {\n // 检测左右位置\n if (outSides.top) {\n point.y = limitBox.y;\n }\n if (outSides.bottom) {\n point.y = limitBox.y + limitBox.height - height;\n }\n if (position === 'left' && outSides.left) {\n point.x = x + offset;\n }\n if (position === 'right' && outSides.right) {\n point.x = x - width - offset;\n }\n }\n }\n return point;\n}","export var BACKGROUND_STYLE = {\n // fill: 'red',\n opacity: 0\n};\nexport var LINE_STYLE = {\n stroke: '#C5C5C5',\n strokeOpacity: 0.85\n};\nexport var AREA_STYLE = {\n fill: '#CACED4',\n opacity: 0.85\n};","import { __spreadArrays } from \"tslib\";\nimport { catmullRom2Bezier } from '@antv/path-util';\nimport { Category, Linear } from '@antv/scale';\nimport { each, head, isEqual, map } from '@antv/util';\n/**\n * 点数组转 path\n * @param points\n */\nfunction pointsToPath(points) {\n return map(points, function (p, idx) {\n var command = idx === 0 ? 'M' : 'L';\n var x = p[0],\n y = p[1];\n return [command, x, y];\n });\n}\n/**\n * 将点连接成路径 path\n * @param points\n */\nexport function getLinePath(points) {\n return pointsToPath(points);\n}\n/**\n * 将点连成平滑的曲线\n * @param points\n */\nexport function getSmoothLinePath(points) {\n if (points.length <= 2) {\n // 两点以内直接绘制成路径\n return getLinePath(points);\n }\n var data = [];\n each(points, function (p) {\n // 当前点和上一个点一样的时候,忽略掉\n if (!isEqual(p, data.slice(data.length - 2))) {\n data.push(p[0], p[1]);\n }\n });\n // const constraint = [ // 范围\n // [ 0, 0 ],\n // [ 1, 1 ],\n // ];\n var path = catmullRom2Bezier(data, false);\n var _a = head(points),\n x = _a[0],\n y = _a[1];\n path.unshift(['M', x, y]);\n return path;\n}\n/**\n * 将数据转成 path,利用 scale 的归一化能力\n * @param data\n * @param width\n * @param height\n * @param smooth\n */\nexport function dataToPath(data, width, height, smooth) {\n if (smooth === void 0) {\n smooth = true;\n }\n // 利用 scale 来获取 y 上的映射\n var y = new Linear({\n values: data\n });\n var x = new Category({\n values: map(data, function (v, idx) {\n return idx;\n })\n });\n var points = map(data, function (v, idx) {\n return [x.scale(idx) * width, height - y.scale(v) * height];\n });\n return smooth ? getSmoothLinePath(points) : getLinePath(points);\n}\n/**\n * 获得 area 面积的横向连接线的 px 位置\n * @param data\n * @param width\n * @param height\n */\nexport function getAreaLineY(data, height) {\n var y = new Linear({\n values: data\n });\n // 当曲线全部为负数时,取最大值,当曲线全部为正数时,取最小值,当曲线有正有负,则取零点\n var lineY = y.max < 0 ? y.max : Math.max(0, y.min);\n return height - y.scale(lineY) * height;\n}\n/**\n * 线 path 转 area path\n * @param path\n * @param width\n * @param height\n */\nexport function linePathToAreaPath(path, width, height, data) {\n var areaPath = __spreadArrays(path);\n var lineYPx = getAreaLineY(data, height);\n areaPath.push(['L', width, lineYPx]);\n areaPath.push(['L', 0, lineYPx]);\n areaPath.push(['Z']);\n return areaPath;\n}","import { __assign, __extends } from \"tslib\";\nimport GroupComponent from '../abstract/group-component';\nimport { AREA_STYLE, BACKGROUND_STYLE, LINE_STYLE } from './constant';\nimport { dataToPath, linePathToAreaPath } from './path';\nvar Trend = /** @class */function (_super) {\n __extends(Trend, _super);\n function Trend() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Trend.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n name: 'trend',\n x: 0,\n y: 0,\n width: 200,\n height: 16,\n smooth: true,\n isArea: false,\n data: [],\n backgroundStyle: BACKGROUND_STYLE,\n lineStyle: LINE_STYLE,\n areaStyle: AREA_STYLE\n });\n };\n Trend.prototype.renderInner = function (group) {\n var _a = this.cfg,\n width = _a.width,\n height = _a.height,\n data = _a.data,\n smooth = _a.smooth,\n isArea = _a.isArea,\n backgroundStyle = _a.backgroundStyle,\n lineStyle = _a.lineStyle,\n areaStyle = _a.areaStyle;\n // 背景\n this.addShape(group, {\n id: this.getElementId('background'),\n type: 'rect',\n attrs: __assign({\n x: 0,\n y: 0,\n width: width,\n height: height\n }, backgroundStyle)\n });\n var path = dataToPath(data, width, height, smooth);\n // 线\n this.addShape(group, {\n id: this.getElementId('line'),\n type: 'path',\n attrs: __assign({\n path: path\n }, lineStyle)\n });\n // area\n // 在 path 的基础上,增加两个坐标点\n if (isArea) {\n var areaPath = linePathToAreaPath(path, width, height, data);\n this.addShape(group, {\n id: this.getElementId('area'),\n type: 'path',\n attrs: __assign({\n path: areaPath\n }, areaStyle)\n });\n }\n };\n Trend.prototype.applyOffset = function () {\n var _a = this.cfg,\n x = _a.x,\n y = _a.y;\n // 统一移动到对应的位置\n this.moveElementTo(this.get('group'), {\n x: x,\n y: y\n });\n };\n return Trend;\n}(GroupComponent);\nexport { Trend };\nexport default Trend;","import { __assign, __extends } from \"tslib\";\nimport GroupComponent from '../abstract/group-component';\nexport var DEFAULT_HANDLER_STYLE = {\n fill: '#F7F7F7',\n stroke: '#BFBFBF',\n radius: 2,\n opacity: 1,\n cursor: 'ew-resize',\n // 高亮的颜色\n highLightFill: '#FFF'\n};\nvar Handler = /** @class */function (_super) {\n __extends(Handler, _super);\n function Handler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Handler.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n name: 'handler',\n x: 0,\n y: 0,\n width: 10,\n height: 24,\n style: DEFAULT_HANDLER_STYLE\n });\n };\n Handler.prototype.renderInner = function (group) {\n var _a = this.cfg,\n width = _a.width,\n height = _a.height,\n style = _a.style;\n var fill = style.fill,\n stroke = style.stroke,\n radius = style.radius,\n opacity = style.opacity,\n cursor = style.cursor;\n // 按钮框框\n this.addShape(group, {\n type: 'rect',\n id: this.getElementId('background'),\n attrs: {\n x: 0,\n y: 0,\n width: width,\n height: height,\n fill: fill,\n stroke: stroke,\n radius: radius,\n opacity: opacity,\n cursor: cursor\n }\n });\n // 两根竖线\n var x1 = 1 / 3 * width;\n var x2 = 2 / 3 * width;\n var y1 = 1 / 4 * height;\n var y2 = 3 / 4 * height;\n this.addShape(group, {\n id: this.getElementId('line-left'),\n type: 'line',\n attrs: {\n x1: x1,\n y1: y1,\n x2: x1,\n y2: y2,\n stroke: stroke,\n cursor: cursor\n }\n });\n this.addShape(group, {\n id: this.getElementId('line-right'),\n type: 'line',\n attrs: {\n x1: x2,\n y1: y1,\n x2: x2,\n y2: y2,\n stroke: stroke,\n cursor: cursor\n }\n });\n };\n Handler.prototype.applyOffset = function () {\n this.moveElementTo(this.get('group'), {\n x: this.get('x'),\n y: this.get('y')\n });\n };\n Handler.prototype.initEvent = function () {\n this.bindEvents();\n };\n Handler.prototype.bindEvents = function () {\n var _this = this;\n this.get('group').on('mouseenter', function () {\n var highLightFill = _this.get('style').highLightFill;\n _this.getElementByLocalId('background').attr('fill', highLightFill);\n _this.draw();\n });\n this.get('group').on('mouseleave', function () {\n var fill = _this.get('style').fill;\n _this.getElementByLocalId('background').attr('fill', fill);\n _this.draw();\n });\n };\n Handler.prototype.draw = function () {\n var canvas = this.get('container').get('canvas');\n if (canvas) {\n canvas.draw();\n }\n };\n return Handler;\n}(GroupComponent);\nexport { Handler };\nexport default Handler;","/**\n * 一些默认的样式配置\n */\nexport var BACKGROUND_STYLE = {\n fill: '#416180',\n opacity: 0.05\n};\nexport var FOREGROUND_STYLE = {\n fill: '#5B8FF9',\n opacity: 0.15,\n cursor: 'move'\n};\nexport var DEFAULT_HANDLER_WIDTH = 10;\nexport var HANDLER_STYLE = {\n width: DEFAULT_HANDLER_WIDTH,\n height: 24\n};\nexport var TEXT_STYLE = {\n textBaseline: 'middle',\n fill: '#000',\n opacity: 0.45\n};\nexport var SLIDER_CHANGE = 'sliderchange';","import { __assign, __extends } from \"tslib\";\nimport { clamp, deepMix, each, get, isArray, isNil, size } from '@antv/util';\nimport GroupComponent from '../abstract/group-component';\nimport { Trend } from '../trend/trend';\nimport { DEFAULT_HANDLER_STYLE, Handler } from './handler';\nimport { BACKGROUND_STYLE, DEFAULT_HANDLER_WIDTH, FOREGROUND_STYLE, HANDLER_STYLE, SLIDER_CHANGE, TEXT_STYLE } from './constant';\nvar Slider = /** @class */function (_super) {\n __extends(Slider, _super);\n function Slider() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.onMouseDown = function (target) {\n return function (e) {\n _this.currentTarget = target;\n // 取出原生事件\n var event = e.originalEvent;\n // 2. 存储当前点击位置\n event.stopPropagation();\n event.preventDefault();\n // 兼容移动端获取数据\n _this.prevX = get(event, 'touches.0.pageX', event.pageX);\n _this.prevY = get(event, 'touches.0.pageY', event.pageY);\n // 3. 开始滑动的时候,绑定 move 和 up 事件\n var containerDOM = _this.getContainerDOM();\n containerDOM.addEventListener('mousemove', _this.onMouseMove);\n containerDOM.addEventListener('mouseup', _this.onMouseUp);\n containerDOM.addEventListener('mouseleave', _this.onMouseUp);\n // 移动端事件\n containerDOM.addEventListener('touchmove', _this.onMouseMove);\n containerDOM.addEventListener('touchend', _this.onMouseUp);\n containerDOM.addEventListener('touchcancel', _this.onMouseUp);\n };\n };\n _this.onMouseMove = function (event) {\n var width = _this.cfg.width;\n var originValue = [_this.get('start'), _this.get('end')];\n // 滑动过程中,计算偏移,更新滑块,然后 emit 数据出去\n event.stopPropagation();\n event.preventDefault();\n var x = get(event, 'touches.0.pageX', event.pageX);\n var y = get(event, 'touches.0.pageY', event.pageY);\n // 横向的 slider 只处理 x\n var offsetX = x - _this.prevX;\n var offsetXRange = _this.adjustOffsetRange(offsetX / width);\n // 更新 start end range 范围\n _this.updateStartEnd(offsetXRange);\n // 更新 ui\n _this.updateUI(_this.getElementByLocalId('foreground'), _this.getElementByLocalId('minText'), _this.getElementByLocalId('maxText'));\n _this.prevX = x;\n _this.prevY = y;\n _this.draw();\n // 因为存储的 start、end 可能不一定是按大小存储的,所以排序一下,对外是 end >= start\n _this.emit(SLIDER_CHANGE, [_this.get('start'), _this.get('end')].sort());\n _this.delegateEmit('valuechanged', {\n originValue: originValue,\n value: [_this.get('start'), _this.get('end')]\n });\n };\n _this.onMouseUp = function () {\n // 结束之后,取消绑定的事件\n if (_this.currentTarget) {\n _this.currentTarget = undefined;\n }\n var containerDOM = _this.getContainerDOM();\n if (containerDOM) {\n containerDOM.removeEventListener('mousemove', _this.onMouseMove);\n containerDOM.removeEventListener('mouseup', _this.onMouseUp);\n // 防止滑动到 canvas 外部之后,状态丢失\n containerDOM.removeEventListener('mouseleave', _this.onMouseUp);\n // 移动端事件\n containerDOM.removeEventListener('touchmove', _this.onMouseMove);\n containerDOM.removeEventListener('touchend', _this.onMouseUp);\n containerDOM.removeEventListener('touchcancel', _this.onMouseUp);\n }\n };\n return _this;\n }\n Slider.prototype.setRange = function (min, max) {\n this.set('minLimit', min);\n this.set('maxLimit', max);\n var oldStart = this.get('start');\n var oldEnd = this.get('end');\n var newStart = clamp(oldStart, min, max);\n var newEnd = clamp(oldEnd, min, max);\n if (!this.get('isInit') && (oldStart !== newStart || oldEnd !== newEnd)) {\n this.setValue([newStart, newEnd]);\n }\n };\n Slider.prototype.getRange = function () {\n return {\n min: this.get('minLimit') || 0,\n max: this.get('maxLimit') || 1\n };\n };\n Slider.prototype.setValue = function (value) {\n var range = this.getRange();\n if (isArray(value) && value.length === 2) {\n var originValue = [this.get('start'), this.get('end')];\n this.update({\n start: clamp(value[0], range.min, range.max),\n end: clamp(value[1], range.min, range.max)\n });\n if (!this.get('updateAutoRender')) {\n this.render();\n }\n this.delegateEmit('valuechanged', {\n originValue: originValue,\n value: value\n });\n }\n };\n Slider.prototype.getValue = function () {\n return [this.get('start'), this.get('end')];\n };\n Slider.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n name: 'slider',\n x: 0,\n y: 0,\n width: 100,\n height: 16,\n backgroundStyle: {},\n foregroundStyle: {},\n handlerStyle: {},\n textStyle: {},\n defaultCfg: {\n backgroundStyle: BACKGROUND_STYLE,\n foregroundStyle: FOREGROUND_STYLE,\n handlerStyle: HANDLER_STYLE,\n textStyle: TEXT_STYLE\n }\n });\n };\n Slider.prototype.update = function (cfg) {\n var start = cfg.start,\n end = cfg.end;\n var validCfg = __assign({}, cfg);\n if (!isNil(start)) {\n validCfg.start = clamp(start, 0, 1);\n }\n if (!isNil(end)) {\n validCfg.end = clamp(end, 0, 1);\n }\n _super.prototype.update.call(this, validCfg);\n this.minHandler = this.getChildComponentById(this.getElementId('minHandler'));\n this.maxHandler = this.getChildComponentById(this.getElementId('maxHandler'));\n this.trend = this.getChildComponentById(this.getElementId('trend'));\n };\n Slider.prototype.init = function () {\n this.set('start', clamp(this.get('start'), 0, 1));\n this.set('end', clamp(this.get('end'), 0, 1));\n _super.prototype.init.call(this);\n };\n Slider.prototype.render = function () {\n _super.prototype.render.call(this);\n this.updateUI(this.getElementByLocalId('foreground'), this.getElementByLocalId('minText'), this.getElementByLocalId('maxText'));\n };\n Slider.prototype.renderInner = function (group) {\n var _a = this.cfg,\n start = _a.start,\n end = _a.end,\n width = _a.width,\n height = _a.height,\n _b = _a.trendCfg,\n trendCfg = _b === void 0 ? {} : _b,\n minText = _a.minText,\n maxText = _a.maxText,\n _c = _a.backgroundStyle,\n backgroundStyle = _c === void 0 ? {} : _c,\n _d = _a.foregroundStyle,\n foregroundStyle = _d === void 0 ? {} : _d,\n _e = _a.textStyle,\n textStyle = _e === void 0 ? {} : _e;\n var handlerStyle = deepMix({}, DEFAULT_HANDLER_STYLE, this.cfg.handlerStyle);\n var min = start * width;\n var max = end * width;\n // 趋势图数据\n if (size(get(trendCfg, 'data'))) {\n this.trend = this.addComponent(group, __assign({\n component: Trend,\n id: this.getElementId('trend'),\n x: 0,\n y: 0,\n width: width,\n height: height\n }, trendCfg));\n }\n // 1. 背景\n this.addShape(group, {\n id: this.getElementId('background'),\n type: 'rect',\n attrs: __assign({\n x: 0,\n y: 0,\n width: width,\n height: height\n }, backgroundStyle)\n });\n // 2. 左右文字\n var minTextShape = this.addShape(group, {\n id: this.getElementId('minText'),\n type: 'text',\n attrs: __assign({\n // x: 0,\n y: height / 2,\n textAlign: 'right',\n text: minText,\n silent: false\n }, textStyle)\n });\n var maxTextShape = this.addShape(group, {\n id: this.getElementId('maxText'),\n type: 'text',\n attrs: __assign({\n // x: 0,\n y: height / 2,\n textAlign: 'left',\n text: maxText,\n silent: false\n }, textStyle)\n });\n // 3. 前景 选中背景框\n var foregroundShape = this.addShape(group, {\n id: this.getElementId('foreground'),\n name: 'foreground',\n type: 'rect',\n attrs: __assign({\n // x: 0,\n y: 0,\n // width: 0,\n height: height\n }, foregroundStyle)\n });\n // 滑块相关的大小信息\n var handlerWidth = get(handlerStyle, 'width', DEFAULT_HANDLER_WIDTH);\n var handlerHeight = get(handlerStyle, 'height', 24);\n // 4. 左右滑块\n this.minHandler = this.addComponent(group, {\n component: Handler,\n id: this.getElementId('minHandler'),\n name: 'handler-min',\n x: 0,\n y: (height - handlerHeight) / 2,\n width: handlerWidth,\n height: handlerHeight,\n cursor: 'ew-resize',\n style: handlerStyle\n });\n this.maxHandler = this.addComponent(group, {\n component: Handler,\n id: this.getElementId('maxHandler'),\n name: 'handler-max',\n x: 0,\n y: (height - handlerHeight) / 2,\n width: handlerWidth,\n height: handlerHeight,\n cursor: 'ew-resize',\n style: handlerStyle\n });\n };\n Slider.prototype.applyOffset = function () {\n this.moveElementTo(this.get('group'), {\n x: this.get('x'),\n y: this.get('y')\n });\n };\n Slider.prototype.initEvent = function () {\n this.bindEvents();\n };\n Slider.prototype.updateUI = function (foregroundShape, minTextShape, maxTextShape) {\n var _a = this.cfg,\n start = _a.start,\n end = _a.end,\n width = _a.width,\n minText = _a.minText,\n maxText = _a.maxText,\n handlerStyle = _a.handlerStyle,\n height = _a.height;\n var min = start * width;\n var max = end * width;\n if (this.trend) {\n this.trend.update({\n width: width,\n height: height\n });\n if (!this.get('updateAutoRender')) {\n this.trend.render();\n }\n }\n // 1. foreground\n foregroundShape.attr('x', min);\n foregroundShape.attr('width', max - min);\n // 滑块相关的大小信息\n var handlerWidth = get(handlerStyle, 'width', DEFAULT_HANDLER_WIDTH);\n // 设置文本\n minTextShape.attr('text', minText);\n maxTextShape.attr('text', maxText);\n var _b = this._dodgeText([min, max], minTextShape, maxTextShape),\n minAttrs = _b[0],\n maxAttrs = _b[1];\n // 2. 左侧滑块和文字位置\n if (this.minHandler) {\n this.minHandler.update({\n x: min - handlerWidth / 2\n });\n if (!this.get('updateAutoRender')) {\n this.minHandler.render();\n }\n }\n each(minAttrs, function (v, k) {\n return minTextShape.attr(k, v);\n });\n // 3. 右侧滑块和文字位置\n if (this.maxHandler) {\n this.maxHandler.update({\n x: max - handlerWidth / 2\n });\n if (!this.get('updateAutoRender')) {\n this.maxHandler.render();\n }\n }\n each(maxAttrs, function (v, k) {\n return maxTextShape.attr(k, v);\n });\n };\n Slider.prototype.bindEvents = function () {\n var group = this.get('group');\n group.on('handler-min:mousedown', this.onMouseDown('minHandler'));\n group.on('handler-min:touchstart', this.onMouseDown('minHandler'));\n // 2. 右滑块的滑动\n group.on('handler-max:mousedown', this.onMouseDown('maxHandler'));\n group.on('handler-max:touchstart', this.onMouseDown('maxHandler'));\n // 3. 前景选中区域\n var foreground = group.findById(this.getElementId('foreground'));\n foreground.on('mousedown', this.onMouseDown('foreground'));\n foreground.on('touchstart', this.onMouseDown('foreground'));\n };\n /**\n * 调整 offsetRange,因为一些范围的限制\n * @param offsetRange\n */\n Slider.prototype.adjustOffsetRange = function (offsetRange) {\n var _a = this.cfg,\n start = _a.start,\n end = _a.end;\n // 针对不同的滑动组件,处理的方式不同\n switch (this.currentTarget) {\n case 'minHandler':\n {\n var min = 0 - start;\n var max = 1 - start;\n return Math.min(max, Math.max(min, offsetRange));\n }\n case 'maxHandler':\n {\n var min = 0 - end;\n var max = 1 - end;\n return Math.min(max, Math.max(min, offsetRange));\n }\n case 'foreground':\n {\n var min = 0 - start;\n var max = 1 - end;\n return Math.min(max, Math.max(min, offsetRange));\n }\n }\n };\n Slider.prototype.updateStartEnd = function (offsetRange) {\n var _a = this.cfg,\n start = _a.start,\n end = _a.end;\n // 操作不同的组件,反馈不一样\n switch (this.currentTarget) {\n case 'minHandler':\n start += offsetRange;\n break;\n case 'maxHandler':\n end += offsetRange;\n break;\n case 'foreground':\n start += offsetRange;\n end += offsetRange;\n break;\n }\n this.set('start', start);\n this.set('end', end);\n };\n /**\n * 调整 text 的位置,自动躲避\n * 根据位置,调整返回新的位置\n * @param range\n */\n Slider.prototype._dodgeText = function (range, minTextShape, maxTextShape) {\n var _a, _b;\n var _c = this.cfg,\n handlerStyle = _c.handlerStyle,\n width = _c.width;\n var PADDING = 2;\n var handlerWidth = get(handlerStyle, 'width', DEFAULT_HANDLER_WIDTH);\n var min = range[0],\n max = range[1];\n var sorted = false;\n // 如果交换了位置,则对应的 min max 也交互\n if (min > max) {\n _a = [max, min], min = _a[0], max = _a[1];\n _b = [maxTextShape, minTextShape], minTextShape = _b[0], maxTextShape = _b[1];\n sorted = true;\n }\n // 避让规则,优先显示在两侧,只有显示不下的时候,才显示在中间\n var minBBox = minTextShape.getBBox();\n var maxBBox = maxTextShape.getBBox();\n var minAttrs = minBBox.width > min - PADDING ? {\n x: min + handlerWidth / 2 + PADDING,\n textAlign: 'left'\n } : {\n x: min - handlerWidth / 2 - PADDING,\n textAlign: 'right'\n };\n var maxAttrs = maxBBox.width > width - max - PADDING ? {\n x: max - handlerWidth / 2 - PADDING,\n textAlign: 'right'\n } : {\n x: max + handlerWidth / 2 + PADDING,\n textAlign: 'left'\n };\n return !sorted ? [minAttrs, maxAttrs] : [maxAttrs, minAttrs];\n };\n Slider.prototype.draw = function () {\n var container = this.get('container');\n var canvas = container && container.get('canvas');\n if (canvas) {\n canvas.draw();\n }\n };\n Slider.prototype.getContainerDOM = function () {\n var container = this.get('container');\n var canvas = container && container.get('canvas');\n return canvas && canvas.get('container');\n };\n return Slider;\n}(GroupComponent);\nexport { Slider };\nexport default Slider;","export default function addEventListener(target, eventType, callback) {\n if (target) {\n if (typeof target.addEventListener === 'function') {\n target.addEventListener(eventType, callback, false);\n return {\n remove: function remove() {\n target.removeEventListener(eventType, callback, false);\n }\n };\n // @ts-ignore\n }\n\n if (typeof target.attachEvent === 'function') {\n // @ts-ignore\n target.attachEvent('on' + eventType, callback);\n return {\n remove: function remove() {\n // @ts-ignore\n target.detachEvent('on' + eventType, callback);\n }\n };\n }\n }\n}","import { __assign, __extends } from \"tslib\";\nimport { addEventListener } from '@antv/dom-util';\nimport { clamp, deepMix, get, noop } from '@antv/util';\nimport GroupComponent from '../abstract/group-component';\nvar DEFAULT_STYLE = {\n trackColor: 'rgba(0,0,0,0)',\n thumbColor: 'rgba(0,0,0,0.15)',\n size: 8,\n lineCap: 'round'\n};\nexport var DEFAULT_THEME = {\n // 默认样式\n default: DEFAULT_STYLE,\n // 鼠标 hover 的样式\n hover: {\n thumbColor: 'rgba(0,0,0,0.2)'\n }\n};\nvar Scrollbar = /** @class */function (_super) {\n __extends(Scrollbar, _super);\n function Scrollbar() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.clearEvents = noop;\n _this.onStartEvent = function (isMobile) {\n return function (e) {\n _this.isMobile = isMobile;\n e.originalEvent.preventDefault();\n var clientX = isMobile ? get(e.originalEvent, 'touches.0.clientX') : e.clientX;\n var clientY = isMobile ? get(e.originalEvent, 'touches.0.clientY') : e.clientY;\n // 将开始的点记录下来\n _this.startPos = _this.cfg.isHorizontal ? clientX : clientY;\n _this.bindLaterEvent();\n };\n };\n _this.bindLaterEvent = function () {\n var containerDOM = _this.getContainerDOM();\n var events = [];\n if (_this.isMobile) {\n events = [addEventListener(containerDOM, 'touchmove', _this.onMouseMove), addEventListener(containerDOM, 'touchend', _this.onMouseUp), addEventListener(containerDOM, 'touchcancel', _this.onMouseUp)];\n } else {\n events = [addEventListener(containerDOM, 'mousemove', _this.onMouseMove), addEventListener(containerDOM, 'mouseup', _this.onMouseUp),\n // 为了保证划出 canvas containerDom 时还没触发 mouseup\n addEventListener(containerDOM, 'mouseleave', _this.onMouseUp)];\n }\n _this.clearEvents = function () {\n events.forEach(function (e) {\n e.remove();\n });\n };\n };\n // 拖拽滑块的事件回调\n // 这里是 dom 原生事件,绑定在 dom 元素上的\n _this.onMouseMove = function (e) {\n var _a = _this.cfg,\n isHorizontal = _a.isHorizontal,\n thumbOffset = _a.thumbOffset;\n e.preventDefault();\n var clientX = _this.isMobile ? get(e, 'touches.0.clientX') : e.clientX;\n var clientY = _this.isMobile ? get(e, 'touches.0.clientY') : e.clientY;\n // 鼠标松开的位置\n var endPos = isHorizontal ? clientX : clientY;\n // 滑块需要移动的距离, 由于这里是对滑块监听,所以移动的距离就是 diffDis, 如果监听对象是 container dom,则需要算比例\n var diff = endPos - _this.startPos;\n // 更新 _startPos\n _this.startPos = endPos;\n _this.updateThumbOffset(thumbOffset + diff);\n };\n _this.onMouseUp = function (e) {\n e.preventDefault();\n _this.clearEvents();\n };\n // 点击滑道的事件回调,移动滑块位置\n _this.onTrackClick = function (e) {\n var _a = _this.cfg,\n isHorizontal = _a.isHorizontal,\n x = _a.x,\n y = _a.y,\n thumbLen = _a.thumbLen;\n var containerDOM = _this.getContainerDOM();\n var rect = containerDOM.getBoundingClientRect();\n var clientX = e.clientX,\n clientY = e.clientY;\n var offset = isHorizontal ? clientX - rect.left - x - thumbLen / 2 : clientY - rect.top - y - thumbLen / 2;\n var newOffset = _this.validateRange(offset);\n _this.updateThumbOffset(newOffset);\n };\n _this.onThumbMouseOver = function () {\n var thumbColor = _this.cfg.theme.hover.thumbColor;\n _this.getElementByLocalId('thumb').attr('stroke', thumbColor);\n _this.draw();\n };\n _this.onThumbMouseOut = function () {\n var thumbColor = _this.cfg.theme.default.thumbColor;\n _this.getElementByLocalId('thumb').attr('stroke', thumbColor);\n _this.draw();\n };\n return _this;\n }\n Scrollbar.prototype.setRange = function (min, max) {\n this.set('minLimit', min);\n this.set('maxLimit', max);\n var curValue = this.getValue();\n var newValue = clamp(curValue, min, max);\n if (curValue !== newValue && !this.get('isInit')) {\n this.setValue(newValue);\n }\n };\n Scrollbar.prototype.getRange = function () {\n var min = this.get('minLimit') || 0;\n var max = this.get('maxLimit') || 1;\n return {\n min: min,\n max: max\n };\n };\n Scrollbar.prototype.setValue = function (value) {\n var range = this.getRange();\n var originalValue = this.getValue();\n this.update({\n thumbOffset: (this.get('trackLen') - this.get('thumbLen')) * clamp(value, range.min, range.max)\n });\n this.delegateEmit('valuechange', {\n originalValue: originalValue,\n value: this.getValue()\n });\n };\n Scrollbar.prototype.getValue = function () {\n return clamp(this.get('thumbOffset') / (this.get('trackLen') - this.get('thumbLen')), 0, 1);\n };\n Scrollbar.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n name: 'scrollbar',\n isHorizontal: true,\n minThumbLen: 20,\n thumbOffset: 0,\n theme: DEFAULT_THEME\n });\n };\n Scrollbar.prototype.renderInner = function (group) {\n this.renderTrackShape(group);\n this.renderThumbShape(group);\n };\n Scrollbar.prototype.applyOffset = function () {\n this.moveElementTo(this.get('group'), {\n x: this.get('x'),\n y: this.get('y')\n });\n };\n Scrollbar.prototype.initEvent = function () {\n this.bindEvents();\n };\n // 创建滑道的 shape\n Scrollbar.prototype.renderTrackShape = function (group) {\n var _a = this.cfg,\n trackLen = _a.trackLen,\n _b = _a.theme,\n theme = _b === void 0 ? {\n default: {}\n } : _b;\n var _c = deepMix({}, DEFAULT_THEME, theme).default,\n lineCap = _c.lineCap,\n trackColor = _c.trackColor,\n themeSize = _c.size;\n var size = get(this.cfg, 'size', themeSize);\n var attrs = this.get('isHorizontal') ? {\n x1: 0 + size / 2,\n y1: size / 2,\n x2: trackLen - size / 2,\n y2: size / 2,\n lineWidth: size,\n stroke: trackColor,\n lineCap: lineCap\n } : {\n x1: size / 2,\n y1: 0 + size / 2,\n x2: size / 2,\n y2: trackLen - size / 2,\n lineWidth: size,\n stroke: trackColor,\n lineCap: lineCap\n };\n return this.addShape(group, {\n id: this.getElementId('track'),\n name: 'track',\n type: 'line',\n attrs: attrs\n });\n };\n // 创建滑块的 shape\n Scrollbar.prototype.renderThumbShape = function (group) {\n var _a = this.cfg,\n thumbOffset = _a.thumbOffset,\n thumbLen = _a.thumbLen,\n theme = _a.theme;\n var _b = deepMix({}, DEFAULT_THEME, theme).default,\n themeSize = _b.size,\n lineCap = _b.lineCap,\n thumbColor = _b.thumbColor;\n var size = get(this.cfg, 'size', themeSize);\n var attrs = this.get('isHorizontal') ? {\n x1: thumbOffset + size / 2,\n y1: size / 2,\n x2: thumbOffset + thumbLen - size / 2,\n y2: size / 2,\n lineWidth: size,\n stroke: thumbColor,\n lineCap: lineCap,\n cursor: 'default'\n } : {\n x1: size / 2,\n y1: thumbOffset + size / 2,\n x2: size / 2,\n y2: thumbOffset + thumbLen - size / 2,\n lineWidth: size,\n stroke: thumbColor,\n lineCap: lineCap,\n cursor: 'default'\n };\n return this.addShape(group, {\n id: this.getElementId('thumb'),\n name: 'thumb',\n type: 'line',\n attrs: attrs\n });\n };\n Scrollbar.prototype.bindEvents = function () {\n var group = this.get('group');\n group.on('mousedown', this.onStartEvent(false));\n group.on('mouseup', this.onMouseUp);\n group.on('touchstart', this.onStartEvent(true));\n group.on('touchend', this.onMouseUp);\n var trackShape = group.findById(this.getElementId('track'));\n trackShape.on('click', this.onTrackClick);\n var thumbShape = group.findById(this.getElementId('thumb'));\n thumbShape.on('mouseover', this.onThumbMouseOver);\n thumbShape.on('mouseout', this.onThumbMouseOut);\n };\n Scrollbar.prototype.getContainerDOM = function () {\n var container = this.get('container');\n var canvas = container && container.get('canvas');\n return canvas && canvas.get('container');\n };\n Scrollbar.prototype.validateRange = function (offset) {\n var _a = this.cfg,\n thumbLen = _a.thumbLen,\n trackLen = _a.trackLen;\n var newOffset = offset;\n if (offset + thumbLen > trackLen) {\n newOffset = trackLen - thumbLen;\n } else if (offset + thumbLen < thumbLen) {\n newOffset = 0;\n }\n return newOffset;\n };\n Scrollbar.prototype.draw = function () {\n var container = this.get('container');\n var canvas = container && container.get('canvas');\n if (canvas) {\n canvas.draw();\n }\n };\n Scrollbar.prototype.updateThumbOffset = function (offset) {\n var _a = this.cfg,\n thumbOffset = _a.thumbOffset,\n isHorizontal = _a.isHorizontal,\n thumbLen = _a.thumbLen,\n size = _a.size;\n var newOffset = this.validateRange(offset);\n if (newOffset === thumbOffset) {\n // 如果更新后的 offset 与原值相同,则不改变\n return;\n }\n var thumbShape = this.getElementByLocalId('thumb');\n if (isHorizontal) {\n thumbShape.attr({\n x1: newOffset + size / 2,\n x2: newOffset + thumbLen - size / 2\n });\n } else {\n thumbShape.attr({\n y1: newOffset + size / 2,\n y2: newOffset + thumbLen - size / 2\n });\n }\n this.emitOffsetChange(newOffset);\n };\n Scrollbar.prototype.emitOffsetChange = function (offset) {\n var _a = this.cfg,\n originalValue = _a.thumbOffset,\n trackLen = _a.trackLen,\n thumbLen = _a.thumbLen;\n this.cfg.thumbOffset = offset;\n // 发送事件\n this.emit('scrollchange', {\n thumbOffset: offset,\n ratio: clamp(offset / (trackLen - thumbLen), 0, 1)\n });\n this.delegateEmit('valuechange', {\n originalValue: originalValue,\n value: offset\n });\n };\n return Scrollbar;\n}(GroupComponent);\nexport { Scrollbar };","/* 依赖的模块,在这里统一引入,方便打包优化 */\n// G\nexport { Event, AbstractGroup, AbstractShape } from '@antv/g-base';\n// adjust\nexport { registerAdjust, getAdjust, Adjust } from '@antv/adjust';\n// attr\nexport { getAttribute, Attribute } from '@antv/attr';\nexport { Color } from '@antv/attr';\n// coordinate\nexport { getCoordinate, registerCoordinate, Coordinate } from '@antv/coord';\n// scale\nexport { getScale, registerScale, Scale } from '@antv/scale';\n// component\nimport { Annotation, Axis, Component, Crosshair, Grid, GroupComponent, HtmlComponent, Legend, Slider, Tooltip, Scrollbar } from '@antv/component';\nexport { HtmlComponent, GroupComponent, Component, Crosshair };\nexport { Annotation };\n// axis\nvar LineAxis = Axis.Line,\n CircleAxis = Axis.Circle;\nexport { LineAxis, CircleAxis };\n// grid\nvar LineGrid = Grid.Line,\n CircleGrid = Grid.Circle;\nexport { LineGrid, CircleGrid };\n// legend\nvar CategoryLegend = Legend.Category,\n ContinuousLegend = Legend.Continuous;\nexport { CategoryLegend, ContinuousLegend };\n// Tooltip\nvar HtmlTooltip = Tooltip.Html;\nexport { HtmlTooltip };\n// Slider\nexport { Slider };\n// Scrollbar\nexport { Scrollbar };","import { each, isEmpty, isNumber, isNumberEqual, max, min } from '@antv/util';\n// 获取图形的包围盒\nfunction getPointsBox(points) {\n if (isEmpty(points)) {\n return null;\n }\n var minX = points[0].x;\n var maxX = points[0].x;\n var minY = points[0].y;\n var maxY = points[0].y;\n each(points, function (point) {\n minX = minX > point.x ? point.x : minX;\n maxX = maxX < point.x ? point.x : maxX;\n minY = minY > point.y ? point.y : minY;\n maxY = maxY < point.y ? point.y : maxY;\n });\n return {\n minX: minX,\n maxX: maxX,\n minY: minY,\n maxY: maxY,\n centerX: (minX + maxX) / 2,\n centerY: (minY + maxY) / 2\n };\n}\nfunction uniqueValues(array) {\n return Array.from(new Set(array)).length === 1;\n}\nfunction mid(array) {\n return (min(array) + max(array)) / 2;\n}\n/**\n * @ignore\n * 根据弧度计算极坐标系下的坐标点\n * @param centerX\n * @param centerY\n * @param radius\n * @param angleInRadian\n * @returns\n */\nexport function polarToCartesian(centerX, centerY, radius, angleInRadian) {\n return {\n x: centerX + radius * Math.cos(angleInRadian),\n y: centerY + radius * Math.sin(angleInRadian)\n };\n}\n/**\n * @ignore\n * 根据起始角度计算绘制扇形的 path\n * @param centerX\n * @param centerY\n * @param radius\n * @param startAngleInRadian\n * @param endAngleInRadian\n * @returns\n */\nexport function getSectorPath(centerX, centerY, radius, startAngleInRadian, endAngleInRadian, innerRadius) {\n if (innerRadius === void 0) {\n innerRadius = 0;\n }\n var start = polarToCartesian(centerX, centerY, radius, startAngleInRadian);\n var end = polarToCartesian(centerX, centerY, radius, endAngleInRadian);\n var innerStart = polarToCartesian(centerX, centerY, innerRadius, startAngleInRadian);\n var innerEnd = polarToCartesian(centerX, centerY, innerRadius, endAngleInRadian);\n if (endAngleInRadian - startAngleInRadian === Math.PI * 2) {\n // 整个圆是分割成两个圆\n var middlePoint = polarToCartesian(centerX, centerY, radius, startAngleInRadian + Math.PI);\n var innerMiddlePoint = polarToCartesian(centerX, centerY, innerRadius, startAngleInRadian + Math.PI);\n var circlePathCommands = [['M', start.x, start.y], ['A', radius, radius, 0, 1, 1, middlePoint.x, middlePoint.y], ['A', radius, radius, 0, 1, 1, end.x, end.y], ['M', innerStart.x, innerStart.y]];\n if (innerRadius) {\n circlePathCommands.push(['A', innerRadius, innerRadius, 0, 1, 0, innerMiddlePoint.x, innerMiddlePoint.y]);\n circlePathCommands.push(['A', innerRadius, innerRadius, 0, 1, 0, innerEnd.x, innerEnd.y]);\n }\n circlePathCommands.push(['M', start.x, start.y]);\n circlePathCommands.push(['Z']);\n return circlePathCommands;\n }\n var arcSweep = endAngleInRadian - startAngleInRadian <= Math.PI ? 0 : 1;\n var sectorPathCommands = [['M', start.x, start.y], ['A', radius, radius, 0, arcSweep, 1, end.x, end.y], ['L', innerEnd.x, innerEnd.y]];\n if (innerRadius) {\n sectorPathCommands.push(['A', innerRadius, innerRadius, 0, arcSweep, 0, innerStart.x, innerStart.y]);\n }\n sectorPathCommands.push(['L', start.x, start.y]);\n sectorPathCommands.push(['Z']);\n return sectorPathCommands;\n}\n/**\n * @ignore\n * Gets arc path\n * @param centerX\n * @param centerY\n * @param radius\n * @param startAngleInRadian\n * @param endAngleInRadian\n * @returns\n */\nexport function getArcPath(centerX, centerY, radius, startAngleInRadian, endAngleInRadian) {\n var start = polarToCartesian(centerX, centerY, radius, startAngleInRadian);\n var end = polarToCartesian(centerX, centerY, radius, endAngleInRadian);\n if (isNumberEqual(endAngleInRadian - startAngleInRadian, Math.PI * 2)) {\n var middlePoint = polarToCartesian(centerX, centerY, radius, startAngleInRadian + Math.PI);\n return [['M', start.x, start.y], ['A', radius, radius, 0, 1, 1, middlePoint.x, middlePoint.y], ['A', radius, radius, 0, 1, 1, start.x, start.y], ['A', radius, radius, 0, 1, 0, middlePoint.x, middlePoint.y], ['A', radius, radius, 0, 1, 0, start.x, start.y], ['Z']];\n }\n var arcSweep = endAngleInRadian - startAngleInRadian <= Math.PI ? 0 : 1;\n return [['M', start.x, start.y], ['A', radius, radius, 0, arcSweep, 1, end.x, end.y]];\n}\n/**\n * @ignore\n * 从数据模型中的 points 换算角度\n * @param shapeModel\n * @param coordinate\n * @returns\n */\nexport function getAngle(shapeModel, coordinate) {\n var points = shapeModel.points;\n var box = getPointsBox(points);\n var endAngle;\n var startAngle;\n var coordStartAngle = coordinate.startAngle,\n coordEndAngle = coordinate.endAngle;\n var diffAngle = coordEndAngle - coordStartAngle;\n if (coordinate.isTransposed) {\n endAngle = box.maxY * diffAngle;\n startAngle = box.minY * diffAngle;\n } else {\n endAngle = box.maxX * diffAngle;\n startAngle = box.minX * diffAngle;\n }\n endAngle += coordStartAngle;\n startAngle += coordStartAngle;\n return {\n startAngle: startAngle,\n endAngle: endAngle\n };\n}\n/**\n * @ignore\n * 计算多边形重心: https://en.wikipedia.org/wiki/Centroid#Of_a_polygon\n */\nexport function getPolygonCentroid(xs, ys) {\n if (isNumber(xs) && isNumber(ys)) {\n // 普通色块图,xs 和 ys 是数值\n return [xs, ys];\n }\n xs = xs;\n ys = ys;\n // 当这个 polygon 的点在一条线上的时候\n // 也就是说 xs 里面的值都相同,比如:[1, 1, 1, 1]\n // 或者说 ys 里面的值都相同,比如:[0, 0, 0, 0]\n // 下面计算得到的 k = 0\n // 导致返回的值是 [NaN, NaN]\n // 所以这里做相应的处理\n if (uniqueValues(xs) || uniqueValues(ys)) return [mid(xs), mid(ys)];\n var i = -1;\n var x = 0;\n var y = 0;\n var former;\n var current = xs.length - 1;\n var diff;\n var k = 0;\n while (++i < xs.length) {\n former = current;\n current = i;\n k += diff = xs[former] * ys[current] - xs[current] * ys[former];\n x += (xs[former] + xs[current]) * diff;\n y += (ys[former] + ys[current]) * diff;\n }\n k *= 3;\n return [x / k, y / k];\n}\n/**\n * @ignore\n * 获取需要替换的属性,如果原先图形元素存在,而新图形不存在,则设置 undefined\n */\nexport function getReplaceAttrs(sourceShape, targetShape) {\n var originAttrs = sourceShape.attr();\n var newAttrs = targetShape.attr();\n each(originAttrs, function (v, k) {\n if (newAttrs[k] === undefined) {\n newAttrs[k] = undefined;\n }\n });\n return newAttrs;\n}","import { __values } from \"tslib\";\nimport { isArray, isString } from '@antv/util';\n/**\n * @ignore\n * Determines whether between is\n * @param value\n * @param start\n * @param end\n * @returns true if between\n */\nexport function isBetween(value, start, end) {\n var min = Math.min(start, end);\n var max = Math.max(start, end);\n return value >= min && value <= max;\n}\n/**\n * @ignore\n * pads the current string/array with a given value (repeated, if needed) so that the resulting reaches a given length.\n * The padding is applied from the end of the current value.\n *\n * @param source\n * @param targetLength\n * @param padValue\n * @returns\n */\nexport function padEnd(source, targetLength, padValue) {\n if (isString(source)) {\n return source.padEnd(targetLength, padValue);\n } else if (isArray(source)) {\n var sourceLength = source.length;\n if (sourceLength < targetLength) {\n var diff = targetLength - sourceLength;\n for (var i = 0; i < diff; i++) {\n source.push(padValue);\n }\n }\n }\n return source;\n}\n/**\n * @ignore\n * omit keys of an object.\n * @param obj\n * @param keys\n */\nexport function omit(obj, keys) {\n if (typeof obj === 'object') {\n keys.forEach(function (key) {\n delete obj[key];\n });\n }\n return obj;\n}\n/**\n * @ignore\n * @param sourceArray\n * @param targetArray\n * @param map\n */\nexport function uniq(sourceArray, targetArray, map) {\n var e_1, _a;\n if (targetArray === void 0) {\n targetArray = [];\n }\n if (map === void 0) {\n map = new Map();\n }\n try {\n for (var sourceArray_1 = __values(sourceArray), sourceArray_1_1 = sourceArray_1.next(); !sourceArray_1_1.done; sourceArray_1_1 = sourceArray_1.next()) {\n var source = sourceArray_1_1.value;\n if (!map.has(source)) {\n targetArray.push(source);\n map.set(source, true);\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (sourceArray_1_1 && !sourceArray_1_1.done && (_a = sourceArray_1.return)) _a.call(sourceArray_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n return targetArray;\n}","import { __read } from \"tslib\";\nimport { each } from '@antv/util';\nimport { DIRECTION } from '../constant';\n/**\n * 用于包围盒计算。\n */\nvar BBox = /** @class */function () {\n function BBox(x, y, width, height) {\n if (x === void 0) {\n x = 0;\n }\n if (y === void 0) {\n y = 0;\n }\n if (width === void 0) {\n width = 0;\n }\n if (height === void 0) {\n height = 0;\n }\n this.x = x;\n this.y = y;\n this.height = height;\n this.width = width;\n }\n BBox.fromRange = function (minX, minY, maxX, maxY) {\n return new BBox(minX, minY, maxX - minX, maxY - minY);\n };\n BBox.fromObject = function (bbox) {\n return new BBox(bbox.minX, bbox.minY, bbox.width, bbox.height);\n };\n Object.defineProperty(BBox.prototype, \"minX\", {\n get: function get() {\n return this.x;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BBox.prototype, \"maxX\", {\n get: function get() {\n return this.x + this.width;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BBox.prototype, \"minY\", {\n get: function get() {\n return this.y;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BBox.prototype, \"maxY\", {\n get: function get() {\n return this.y + this.height;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BBox.prototype, \"tl\", {\n get: function get() {\n return {\n x: this.x,\n y: this.y\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BBox.prototype, \"tr\", {\n get: function get() {\n return {\n x: this.maxX,\n y: this.y\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BBox.prototype, \"bl\", {\n get: function get() {\n return {\n x: this.x,\n y: this.maxY\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BBox.prototype, \"br\", {\n get: function get() {\n return {\n x: this.maxX,\n y: this.maxY\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BBox.prototype, \"top\", {\n get: function get() {\n return {\n x: this.x + this.width / 2,\n y: this.minY\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BBox.prototype, \"right\", {\n get: function get() {\n return {\n x: this.maxX,\n y: this.y + this.height / 2\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BBox.prototype, \"bottom\", {\n get: function get() {\n return {\n x: this.x + this.width / 2,\n y: this.maxY\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BBox.prototype, \"left\", {\n get: function get() {\n return {\n x: this.minX,\n y: this.y + this.height / 2\n };\n },\n enumerable: false,\n configurable: true\n });\n // end 计算属性\n /**\n * 包围盒是否相等\n * @param {BBox} bbox 包围盒\n * @returns 包围盒是否相等\n */\n BBox.prototype.isEqual = function (bbox) {\n return this.x === bbox.x && this.y === bbox.y && this.width === bbox.width && this.height === bbox.height;\n };\n /**\n * 是否包含了另一个包围盒\n * @param child\n */\n BBox.prototype.contains = function (child) {\n return child.minX >= this.minX && child.maxX <= this.maxX && child.minY >= this.minY && child.maxY <= this.maxY;\n };\n /**\n * 克隆包围盒\n * @returns 包围盒\n */\n BBox.prototype.clone = function () {\n return new BBox(this.x, this.y, this.width, this.height);\n };\n /**\n * 取并集\n * @param subBBox\n */\n BBox.prototype.add = function () {\n var subBBox = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n subBBox[_i] = arguments[_i];\n }\n var bbox = this.clone();\n each(subBBox, function (b) {\n bbox.x = Math.min(b.x, bbox.x);\n bbox.y = Math.min(b.y, bbox.y);\n bbox.width = Math.max(b.maxX, bbox.maxX) - bbox.x;\n bbox.height = Math.max(b.maxY, bbox.maxY) - bbox.y;\n });\n return bbox;\n };\n /**\n * 取交集\n * @param subBBox\n */\n BBox.prototype.merge = function () {\n var subBBox = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n subBBox[_i] = arguments[_i];\n }\n var bbox = this.clone();\n each(subBBox, function (b) {\n bbox.x = Math.max(b.x, bbox.x);\n bbox.y = Math.max(b.y, bbox.y);\n bbox.width = Math.min(b.maxX, bbox.maxX) - bbox.x;\n bbox.height = Math.min(b.maxY, bbox.maxY) - bbox.y;\n });\n return bbox;\n };\n /**\n * bbox 剪裁\n * @param subBBox\n * @param direction\n */\n BBox.prototype.cut = function (subBBox, direction) {\n var width = subBBox.width;\n var height = subBBox.height;\n switch (direction) {\n case DIRECTION.TOP:\n case DIRECTION.TOP_LEFT:\n case DIRECTION.TOP_RIGHT:\n return BBox.fromRange(this.minX, this.minY + height, this.maxX, this.maxY);\n case DIRECTION.RIGHT:\n case DIRECTION.RIGHT_TOP:\n case DIRECTION.RIGHT_BOTTOM:\n return BBox.fromRange(this.minX, this.minY, this.maxX - width, this.maxY);\n case DIRECTION.BOTTOM:\n case DIRECTION.BOTTOM_LEFT:\n case DIRECTION.BOTTOM_RIGHT:\n return BBox.fromRange(this.minX, this.minY, this.maxX, this.maxY - height);\n case DIRECTION.LEFT:\n case DIRECTION.LEFT_TOP:\n case DIRECTION.LEFT_BOTTOM:\n return BBox.fromRange(this.minX + width, this.minY, this.maxX, this.maxY);\n default:\n // 其他情况不裁剪,原样返回\n return this;\n }\n };\n /**\n * 收缩形成新的\n * @param gap\n */\n BBox.prototype.shrink = function (gap) {\n var _a = __read(gap, 4),\n top = _a[0],\n right = _a[1],\n bottom = _a[2],\n left = _a[3];\n return new BBox(this.x + left, this.y + top, this.width - left - right, this.height - top - bottom);\n };\n /**\n * 扩张形成新的\n * @param gap\n */\n BBox.prototype.expand = function (gap) {\n var _a = __read(gap, 4),\n top = _a[0],\n right = _a[1],\n bottom = _a[2],\n left = _a[3];\n return new BBox(this.x - left, this.y - top, this.width + left + right, this.height + top + bottom);\n };\n /**\n * get the gap of two bbox, if not exceed, then 0\n * @param bbox\n * @returns [top, right, bottom, left]\n */\n BBox.prototype.exceed = function (bbox) {\n return [Math.max(-this.minY + bbox.minY, 0), Math.max(this.maxX - bbox.maxX, 0), Math.max(this.maxY - bbox.maxY, 0), Math.max(-this.minX + bbox.minX, 0)];\n };\n /**\n * 是否碰撞\n * @param bbox\n */\n BBox.prototype.collide = function (bbox) {\n return this.minX < bbox.maxX && this.maxX > bbox.minX && this.minY < bbox.maxY && this.maxY > bbox.minY;\n };\n /**\n * 获取包围盒大小\n * @returns 包围盒大小\n */\n BBox.prototype.size = function () {\n return this.width * this.height;\n };\n /**\n * 点是否在 bbox 中\n * @param p\n */\n BBox.prototype.isPointIn = function (p) {\n return p.x >= this.minX && p.x <= this.maxX && p.y >= this.minY && p.y <= this.maxY;\n };\n return BBox;\n}();\nexport { BBox };\n/**\n * 从一个 bbox 的 region 获取 bbox\n * @param bbox\n * @param region\n */\nexport var getRegionBBox = function getRegionBBox(bbox, region) {\n var start = region.start,\n end = region.end;\n return new BBox(bbox.x + bbox.width * start.x, bbox.y + bbox.height * start.y, bbox.width * Math.abs(end.x - start.x), bbox.height * Math.abs(end.y - start.y));\n};\n/**\n * 将 bbox 转换成 points\n * @param bbox\n */\nexport function toPoints(bbox) {\n return [[bbox.minX, bbox.minY], [bbox.maxX, bbox.minY], [bbox.maxX, bbox.maxY], [bbox.minX, bbox.maxY]];\n}","import { getSectorPath } from './graphics';\nimport { isBetween } from './helper';\nimport { BBox } from './bbox';\n/**\n * @ignore\n * Gets x dimension length\n * @param coordinate\n * @returns x dimension length\n */\nexport function getXDimensionLength(coordinate) {\n if (coordinate.isPolar && !coordinate.isTransposed) {\n // 极坐标系下 width 为弧长\n return (coordinate.endAngle - coordinate.startAngle) * coordinate.getRadius();\n }\n // 直角坐标系\n var start = coordinate.convert({\n x: 0,\n y: 0\n });\n var end = coordinate.convert({\n x: 1,\n y: 0\n });\n // 坐标系有可能发生 transpose 等变换,所有通过两点之间的距离进行计算\n return Math.sqrt(Math.pow(end.x - start.x, 2) + Math.pow(end.y - start.y, 2));\n}\n/**\n * @ignore\n * Determines whether full circle is\n * @param coordinate\n * @returns true if full circle\n */\nexport function isFullCircle(coordinate) {\n if (coordinate.isPolar) {\n var startAngle = coordinate.startAngle,\n endAngle = coordinate.endAngle;\n return endAngle - startAngle === Math.PI * 2;\n }\n return false;\n}\n/**\n * @ignore\n * 获取当前点到坐标系圆心的距离\n * @param coordinate 坐标系\n * @param point 当前点\n * @returns distance to center\n */\nexport function getDistanceToCenter(coordinate, point) {\n var center = coordinate.getCenter();\n return Math.sqrt(Math.pow(point.x - center.x, 2) + Math.pow(point.y - center.y, 2));\n}\n/**\n * @ignore\n * 坐标点是否在坐标系中\n * @param coordinate\n * @param point\n */\nexport function isPointInCoordinate(coordinate, point) {\n var result = false;\n if (coordinate) {\n if (coordinate.type === 'theta') {\n var start = coordinate.start,\n end = coordinate.end;\n result = isBetween(point.x, start.x, end.x) && isBetween(point.y, start.y, end.y);\n } else {\n var invertPoint = coordinate.invert(point);\n result = isBetween(invertPoint.x, 0, 1) && isBetween(invertPoint.y, 0, 1);\n }\n }\n return result;\n}\n/**\n * @ignore\n * 获取点到圆心的连线与水平方向的夹角\n */\nexport function getAngleByPoint(coordinate, point) {\n var center = coordinate.getCenter();\n return Math.atan2(point.y - center.y, point.x - center.x);\n}\n/**\n * @ignore\n * 获取同坐标系范围相同的剪切区域\n * @param coordinate\n * @returns\n */\nexport function getCoordinateClipCfg(coordinate, margin) {\n if (margin === void 0) {\n margin = 0;\n }\n var start = coordinate.start,\n end = coordinate.end;\n var width = coordinate.getWidth();\n var height = coordinate.getHeight();\n if (coordinate.isPolar) {\n var startAngle_1 = coordinate.startAngle,\n endAngle_1 = coordinate.endAngle;\n var center_1 = coordinate.getCenter();\n var radius_1 = coordinate.getRadius();\n return {\n type: 'path',\n startState: {\n path: getSectorPath(center_1.x, center_1.y, radius_1 + margin, startAngle_1, startAngle_1)\n },\n endState: function endState(ratio) {\n var diff = (endAngle_1 - startAngle_1) * ratio + startAngle_1;\n var path = getSectorPath(center_1.x, center_1.y, radius_1 + margin, startAngle_1, diff);\n return {\n path: path\n };\n },\n attrs: {\n path: getSectorPath(center_1.x, center_1.y, radius_1 + margin, startAngle_1, endAngle_1)\n }\n };\n }\n var endState;\n if (coordinate.isTransposed) {\n endState = {\n height: height + margin * 2\n };\n } else {\n endState = {\n width: width + margin * 2\n };\n }\n return {\n type: 'rect',\n startState: {\n x: start.x - margin,\n y: end.y - margin,\n width: coordinate.isTransposed ? width + margin * 2 : 0,\n height: coordinate.isTransposed ? 0 : height + margin * 2\n },\n endState: endState,\n attrs: {\n x: start.x - margin,\n y: end.y - margin,\n width: width + margin * 2,\n height: height + margin * 2\n }\n };\n}\n/**\n * 获取坐标系范围的 BBox\n * @param coordinate\n * @param margin\n */\nexport function getCoordinateBBox(coordinate, margin) {\n if (margin === void 0) {\n margin = 0;\n }\n var start = coordinate.start,\n end = coordinate.end;\n var width = coordinate.getWidth();\n var height = coordinate.getHeight();\n var minX = Math.min(start.x, end.x);\n var minY = Math.min(start.y, end.y);\n return BBox.fromRange(minX - margin, minY - margin, minX + width + margin, minY + height + margin);\n}","import { __assign, __read, __spreadArray } from \"tslib\";\nimport { firstValue, get, isEmpty, isNil, isNumber, isString, valuesOfKey } from '@antv/util';\nimport { GROUP_ATTRS } from '../constant';\nimport { getScale } from '../dependents';\nimport { isFullCircle } from './coordinate';\nvar dateRegex = /^(?:(?!0000)[0-9]{4}([-/.]+)(?:(?:0?[1-9]|1[0-2])\\1(?:0?[1-9]|1[0-9]|2[0-8])|(?:0?[13-9]|1[0-2])\\1(?:29|30)|(?:0?[13578]|1[02])\\1(?:31))|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)([-/.]+)0?2\\2(?:29))(\\s+([01]|([01][0-9]|2[0-3])):([0-9]|[0-5][0-9]):([0-9]|[0-5][0-9]))?$/;\n/**\n * 获取字段对应数据的类型\n * @param field 数据字段名\n * @param data 数据源\n * @returns default type 返回对应的数据类型\n */\nfunction getDefaultType(value) {\n var type = 'linear';\n if (dateRegex.test(value)) {\n type = 'timeCat';\n } else if (isString(value)) {\n type = 'cat';\n }\n return type;\n}\n/**\n * using the scale type if user specified, otherwise infer the type\n */\nexport function inferScaleType(scale, scaleDef, attrType, geometryType) {\n if (scaleDef === void 0) {\n scaleDef = {};\n }\n if (scaleDef.type) return scaleDef.type;\n // identity scale 直接返回\n // geometry 类型有: edge,heatmap,interval,line,path,point,polygon,schema,voilin等;理论上,interval 下,可以用 linear scale 作为分组字段\n if (scale.type !== 'identity' && GROUP_ATTRS.includes(attrType) && ['interval'].includes(geometryType)) {\n return 'cat';\n }\n return scale.isCategory ? 'cat' : scale.type;\n}\n/**\n * @ignore\n * 为指定的 `field` 字段数据创建 scale\n * @param field 字段名\n * @param [data] 数据集,可为空\n * @param [scaleDef] 列定义,可为空\n * @returns scale 返回创建的 Scale 实例\n */\nexport function createScaleByField(field, data, scaleDef) {\n var validData = data || [];\n if (isNumber(field) || isNil(firstValue(validData, field)) && isEmpty(scaleDef)) {\n var Identity = getScale('identity');\n return new Identity({\n field: field.toString(),\n values: [field]\n });\n }\n var values = valuesOfKey(validData, field);\n // 如果已经定义过这个度量 (fix-later 单纯从数据中,推断 scale type 是不精确的)\n var type = get(scaleDef, 'type', getDefaultType(values[0]));\n var ScaleCtor = getScale(type);\n return new ScaleCtor(__assign({\n field: field,\n values: values\n }, scaleDef));\n}\n/**\n * @ignore\n * 同步 scale\n * @todo 是否可以通过 scale.update() 方法进行更新\n * @param scale 需要同步的 scale 实例\n * @param newScale 同步源 Scale\n */\nexport function syncScale(scale, newScale) {\n if (scale.type !== 'identity' && newScale.type !== 'identity') {\n var obj = {};\n for (var k in newScale) {\n if (Object.prototype.hasOwnProperty.call(newScale, k)) {\n obj[k] = newScale[k];\n }\n }\n scale.change(obj);\n }\n}\n/**\n * @ignore\n * get the scale name, if alias exist, return alias, or else field\n * @param scale\n * @returns the name of field\n */\nexport function getName(scale) {\n return scale.alias || scale.field;\n}\n/**\n * 根据 scale values 和 coordinate 获取分类默认 range\n * @param scale 需要获取的 scale 实例\n * @param coordinate coordinate 实例\n * @param theme theme\n */\nexport function getDefaultCategoryScaleRange(scale, coordinate, theme) {\n var values = scale.values;\n var count = values.length;\n var range;\n if (count === 1) {\n range = [0.5, 1]; // 只有一个分类时,防止计算出现 [0.5,0.5] 的状态\n } else {\n var widthRatio = 1;\n var offset = 0;\n if (isFullCircle(coordinate)) {\n if (!coordinate.isTransposed) {\n range = [0, 1 - 1 / count];\n } else {\n widthRatio = get(theme, 'widthRatio.multiplePie', 1 / 1.3);\n offset = 1 / count * widthRatio;\n range = [offset / 2, 1 - offset / 2];\n }\n } else {\n offset = 1 / count / 2; // 两边留下分类空间的一半\n range = [offset, 1 - offset]; // 坐标轴最前面和最后面留下空白防止绘制柱状图时\n }\n }\n\n return range;\n}\n/**\n * @function y轴scale的max\n * @param {yScale}\n */\nexport function getMaxScale(scale) {\n // 过滤values[]中 NaN/undefined/null 等\n var values = scale.values.filter(function (item) {\n return !isNil(item) && !isNaN(item);\n });\n return Math.max.apply(Math, __spreadArray(__spreadArray([], __read(values), false), [isNil(scale.max) ? -Infinity : scale.max], false));\n}","import { deepMix, get, isBoolean } from '@antv/util';\nimport { DIRECTION } from '../constant';\nimport { getName } from './scale';\nimport { vec2 } from '@antv/matrix-util';\n/**\n * @ignore\n * get axis relative region ( 0 ~ 1) by direction when coordinate is rect\n * @param direction\n * @returns axis coordinate region\n */\nexport function getLineAxisRelativeRegion(direction) {\n var start;\n var end;\n switch (direction) {\n case DIRECTION.TOP:\n start = {\n x: 0,\n y: 1\n };\n end = {\n x: 1,\n y: 1\n };\n break;\n case DIRECTION.RIGHT:\n start = {\n x: 1,\n y: 0\n };\n end = {\n x: 1,\n y: 1\n };\n break;\n case DIRECTION.BOTTOM:\n start = {\n x: 0,\n y: 0\n };\n end = {\n x: 1,\n y: 0\n };\n break;\n case DIRECTION.LEFT:\n start = {\n x: 0,\n y: 0\n };\n end = {\n x: 0,\n y: 1\n };\n break;\n default:\n start = end = {\n x: 0,\n y: 0\n };\n }\n return {\n start: start,\n end: end\n };\n}\n/**\n * @ignore\n * get axis relative region ( 0 ~ 1) by direction when coordinate is polar\n * @param coordinate\n * @returns axis coordinate region\n */\nexport function getCircleAxisRelativeRegion(coordinate) {\n var start;\n var end;\n if (coordinate.isTransposed) {\n start = {\n x: 0,\n y: 0\n };\n end = {\n x: 1,\n y: 0\n };\n } else {\n start = {\n x: 0,\n y: 0\n };\n end = {\n x: 0,\n y: 1\n };\n }\n return {\n start: start,\n end: end\n };\n}\n/**\n * @ignore\n * get the axis region from coordinate\n * @param coordinate\n * @param direction\n * @returns the axis region (start point, end point)\n */\nexport function getAxisRegion(coordinate, direction) {\n var region = {\n start: {\n x: 0,\n y: 0\n },\n end: {\n x: 0,\n y: 0\n }\n };\n if (coordinate.isRect) {\n region = getLineAxisRelativeRegion(direction);\n } else if (coordinate.isPolar) {\n region = getCircleAxisRelativeRegion(coordinate);\n }\n var start = region.start,\n end = region.end;\n return {\n start: coordinate.convert(start),\n end: coordinate.convert(end)\n };\n}\n/**\n * @ignore\n * get axis factor\n * @param coordinate\n * @param direction\n * @returns factor\n */\nexport function getAxisFactor(coordinate, direction) {\n // rect coordinate, by direction\n if (coordinate.isRect) {\n return coordinate.isTransposed ? [DIRECTION.RIGHT, DIRECTION.BOTTOM].includes(direction) ? 1 : -1 : [DIRECTION.BOTTOM, DIRECTION.RIGHT].includes(direction) ? -1 : 1;\n }\n // polar y axis, by angle\n if (coordinate.isPolar) {\n var startAngle = coordinate.x.start;\n return startAngle < 0 ? -1 : 1;\n }\n return 1;\n}\n/**\n * @ignore\n * whether the axis isVertical\n * @param region\n * @returns isVertical\n */\nexport function isVertical(region) {\n var start = region.start,\n end = region.end;\n return start.x === end.x;\n}\n/**\n * @ignore\n * get factor by region (real position)\n * @param region\n * @param center\n * @returns factor\n */\nexport function getAxisFactorByRegion(region, center) {\n var start = region.start,\n end = region.end;\n var isAxisVertical = isVertical(region);\n // 垂直\n if (isAxisVertical) {\n // 左方,从下到上、右方,从上到下\n if ((start.y - end.y) * (center.x - start.x) > 0) {\n return 1;\n } else {\n return -1;\n }\n } else {\n // 下方,从左到右、上方,从右到做\n if ((end.x - start.x) * (start.y - center.y) > 0) {\n return -1;\n } else {\n return 1;\n }\n }\n}\n/**\n * @ignore\n * get the axis cfg from theme, will mix the common cfg of legend theme\n *\n * @param theme view theme object\n * @param direction axis direction\n * @returns axis theme cfg\n */\nexport function getAxisThemeCfg(theme, direction) {\n var axisTheme = get(theme, ['components', 'axis'], {});\n return deepMix({}, get(axisTheme, ['common'], {}), deepMix({}, get(axisTheme, [direction], {})));\n}\n/**\n * get the options of axis title,mix the cfg from theme, avoid common themeCfg not work\n * @param theme\n * @param direction\n * @param axisOptions\n * @returns axis title options\n */\nexport function getAxisTitleOptions(theme, direction, axisOptions) {\n var axisTheme = get(theme, ['components', 'axis'], {});\n return deepMix({}, get(axisTheme, ['common', 'title'], {}), deepMix({}, get(axisTheme, [direction, 'title'], {})), axisOptions);\n}\n/**\n * @ignore\n * get circle axis center and radius\n * @param coordinate\n */\nexport function getCircleAxisCenterRadius(coordinate) {\n // @ts-ignore\n var x = coordinate.x,\n y = coordinate.y,\n center = coordinate.circleCenter;\n var isReflectY = y.start > y.end;\n var start = coordinate.isTransposed ? coordinate.convert({\n x: isReflectY ? 0 : 1,\n y: 0\n }) : coordinate.convert({\n x: 0,\n y: isReflectY ? 0 : 1\n });\n var startVector = [start.x - center.x, start.y - center.y];\n var normalVector = [1, 0];\n var startAngle = start.y > center.y ? vec2.angle(startVector, normalVector) : vec2.angle(startVector, normalVector) * -1;\n var endAngle = startAngle + (x.end - x.start);\n var radius = Math.sqrt(Math.pow(start.x - center.x, 2) + Math.pow(start.y - center.y, 2));\n return {\n center: center,\n radius: radius,\n startAngle: startAngle,\n endAngle: endAngle\n };\n}\n/**\n * @ignore\n * 从配置中获取单个字段的 axis 配置\n * @param axes\n * @param field\n * @returns the axis option of field\n */\nexport function getAxisOption(axes, field) {\n if (isBoolean(axes)) {\n return axes === false ? false : {};\n }\n return get(axes, [field]);\n}\n/**\n * @ignore\n * 如果配置了 position,则使用配置\n * @param axisOption\n * @param def\n */\nexport function getAxisDirection(axisOption, def) {\n return get(axisOption, 'position', def);\n}\n/**\n * 获取 axis 的 title 文本\n * @param scale\n * @param axisOption\n */\nexport function getAxisTitleText(scale, axisOption) {\n return get(axisOption, ['title', 'text'], getName(scale));\n}","import { __read } from \"tslib\";\nimport { deepMix, each, every, get, isNil, isNumber } from '@antv/util';\nimport { LAYER } from '../constant';\nimport { getAxisOption } from '../util/axis';\n/**\n * facet 基类\n * - 定义生命周期,方便自定义 facet\n * - 提供基础的生命流程方法\n *\n * 生命周期:\n *\n * 初始化 init\n * 1. 初始化容器\n * 2. 数据分面,生成分面布局信息\n *\n * 渲染阶段 render\n * 1. view 创建\n * 2. title\n * 3. axis\n *\n * 清除阶段 clear\n * 1. 清除 view\n *\n * 销毁阶段 destroy\n * 1. clear\n * 2. 清除事件\n * 3. 清除 group\n */\nvar Facet = /** @class */function () {\n function Facet(view, cfg) {\n /** 是否销毁 */\n this.destroyed = false;\n /** 分面之后的所有分面数据结构 */\n this.facets = [];\n this.view = view;\n this.cfg = deepMix({}, this.getDefaultCfg(), cfg);\n }\n /**\n * 初始化过程\n */\n Facet.prototype.init = function () {\n // 初始化容器\n if (!this.container) {\n this.container = this.createContainer();\n }\n // 生成分面布局信息\n var data = this.view.getData();\n this.facets = this.generateFacets(data);\n };\n /**\n * 渲染分面,由上层 view 调用。包括:\n * - 分面 view\n * - 轴\n * - title\n *\n * 子类可以复写,添加一些其他组件,比如滚动条等\n */\n Facet.prototype.render = function () {\n this.renderViews();\n };\n /**\n * 更新 facet\n */\n Facet.prototype.update = function () {\n // 其实不用做任何事情,因为 facet 最终生成的 View 和 Geometry 都在父 view 的更新中处理了\n };\n /**\n * 清空,clear 之后如果还需要使用,需要重新调用 init 初始化过程\n * 一般在数据有变更的时候调用,重新进行数据的分面逻辑\n */\n Facet.prototype.clear = function () {\n this.clearFacetViews();\n };\n /**\n * 销毁\n */\n Facet.prototype.destroy = function () {\n this.clear();\n if (this.container) {\n this.container.remove(true);\n this.container = undefined;\n }\n this.destroyed = true;\n this.view = undefined;\n this.facets = [];\n };\n /**\n * 根据 facet 生成 view,可以给上层自定义使用\n * @param facet\n */\n Facet.prototype.facetToView = function (facet) {\n var region = facet.region,\n data = facet.data,\n _a = facet.padding,\n padding = _a === void 0 ? this.cfg.padding : _a;\n var view = this.view.createView({\n region: region,\n padding: padding\n });\n // 设置分面的数据\n view.data(data || []);\n facet.view = view;\n // 前置钩子\n this.beforeEachView(view, facet);\n var eachView = this.cfg.eachView;\n if (eachView) {\n eachView(view, facet);\n }\n // 后置钩子\n this.afterEachView(view, facet);\n return view;\n };\n // 创建容器\n Facet.prototype.createContainer = function () {\n var foregroundGroup = this.view.getLayer(LAYER.FORE);\n return foregroundGroup.addGroup();\n };\n /**\n * 初始化 view\n */\n Facet.prototype.renderViews = function () {\n this.createFacetViews();\n };\n /**\n * 创建 分面 view\n */\n Facet.prototype.createFacetViews = function () {\n var _this = this;\n // 使用分面数据 创建分面 view\n return this.facets.map(function (facet) {\n return _this.facetToView(facet);\n });\n };\n /**\n * 从 view 中清除 facetView\n */\n Facet.prototype.clearFacetViews = function () {\n var _this = this;\n // 从 view 中移除分面 view\n each(this.facets, function (facet) {\n if (facet.view) {\n _this.view.removeView(facet.view);\n facet.view = undefined;\n }\n });\n };\n /**\n * 解析 spacing\n */\n Facet.prototype.parseSpacing = function () {\n /**\n * @example\n *\n * // 仅使用百分比或像素值\n * // 横向间隔为 10%,纵向间隔为 10%\n * ['10%', '10%']\n * // 横向间隔为 10px,纵向间隔为 10px\n * [10, 10]\n *\n * // 同时使用百分比和像素值\n * ['10%', 10]\n * // 横向间隔为 10%,纵向间隔为 10px\n */\n var _a = this.view.viewBBox,\n width = _a.width,\n height = _a.height;\n var spacing = this.cfg.spacing;\n return spacing.map(function (s, idx) {\n if (isNumber(s)) return s / (idx === 0 ? width : height);else return parseFloat(s) / 100;\n });\n };\n // 其他一些提供给子类使用的方法\n /**\n * 获取这个字段对应的所有值,数组\n * @protected\n * @param data 数据\n * @param field 字段名\n * @return 字段对应的值\n */\n Facet.prototype.getFieldValues = function (data, field) {\n var rst = [];\n var cache = {};\n // 去重、去除 Nil 值\n each(data, function (d) {\n var value = d[field];\n if (!isNil(value) && !cache[value]) {\n rst.push(value);\n cache[value] = true;\n }\n });\n return rst;\n };\n /**\n * 获得每个分面的 region,平分区域\n * @param rows row 总数\n * @param cols col 总数\n * @param xIndex x 方向 index\n * @param yIndex y 方向 index\n */\n Facet.prototype.getRegion = function (rows, cols, xIndex, yIndex) {\n var _a = __read(this.parseSpacing(), 2),\n xSpacing = _a[0],\n ySpacing = _a[1];\n // 每两个分面区域横向间隔xSPacing, 纵向间隔ySpacing\n // 每个分面区域的横纵占比\n /**\n * ratio * num + spacing * (num - 1) = 1\n * => ratio = (1 - (spacing * (num - 1))) / num\n * = (1 + spacing) / num - spacing\n *\n * num 对应 cols/rows\n * spacing 对应 xSpacing/ySpacing\n */\n var xRatio = (1 + xSpacing) / (cols === 0 ? 1 : cols) - xSpacing;\n var yRatio = (1 + ySpacing) / (rows === 0 ? 1 : rows) - ySpacing;\n // 得到第 index 个分面区域百分比位置\n var start = {\n x: (xRatio + xSpacing) * xIndex,\n y: (yRatio + ySpacing) * yIndex\n };\n var end = {\n x: start.x + xRatio,\n y: start.y + yRatio\n };\n return {\n start: start,\n end: end\n };\n };\n Facet.prototype.getDefaultCfg = function () {\n return {\n eachView: undefined,\n showTitle: true,\n spacing: [0, 0],\n padding: 10,\n fields: []\n };\n };\n /**\n * 默认的 title 样式,因为有的分面是 title,有的分面配置是 columnTitle、rowTitle\n */\n Facet.prototype.getDefaultTitleCfg = function () {\n // @ts-ignore\n var fontFamily = this.view.getTheme().fontFamily;\n return {\n style: {\n fontSize: 14,\n fill: '#666',\n fontFamily: fontFamily\n }\n };\n };\n /**\n * 处理 axis 的默认配置\n * @param view\n * @param facet\n */\n Facet.prototype.processAxis = function (view, facet) {\n var options = view.getOptions();\n var coordinateOption = options.coordinate;\n var geometries = view.geometries;\n var coordinateType = get(coordinateOption, 'type', 'rect');\n if (coordinateType === 'rect' && geometries.length) {\n if (isNil(options.axes)) {\n // @ts-ignore\n options.axes = {};\n }\n var axes = options.axes;\n var _a = __read(geometries[0].getXYFields(), 2),\n x = _a[0],\n y = _a[1];\n var xOption = getAxisOption(axes, x);\n var yOption = getAxisOption(axes, y);\n if (xOption !== false) {\n options.axes[x] = this.getXAxisOption(x, axes, xOption, facet);\n }\n if (yOption !== false) {\n options.axes[y] = this.getYAxisOption(y, axes, yOption, facet);\n }\n }\n };\n /**\n * 获取分面数据\n * @param conditions\n */\n Facet.prototype.getFacetDataFilter = function (conditions) {\n return function (datum) {\n // 过滤出全部满足条件的数据\n return every(conditions, function (condition) {\n var field = condition.field,\n value = condition.value;\n if (!isNil(value) && field) {\n return datum[field] === value;\n }\n return true;\n });\n };\n };\n return Facet;\n}();\nexport { Facet };","import { lowerCase } from '@antv/util';\nexport { Facet } from './facet';\n/**\n * 所有的 Facet 类\n */\nvar Facets = {};\n/**\n * 根据 type 获取 facet 类\n * @param type 分面类型\n */\nexport var getFacet = function getFacet(type) {\n return Facets[lowerCase(type)];\n};\n/**\n * 注册一个 Facet 类\n * @param type 分面类型\n * @param ctor 分面类\n */\nexport var registerFacet = function registerFacet(type, ctor) {\n Facets[lowerCase(type)] = ctor;\n};","import { assign } from '@antv/util';\n/**\n * Action 的基类\n */\nvar Action = /** @class */function () {\n function Action(context, cfg) {\n this.context = context;\n this.cfg = cfg;\n context.addAction(this);\n }\n /**\n * 设置配置项传入的值\n * @param cfg\n */\n Action.prototype.applyCfg = function (cfg) {\n assign(this, cfg);\n };\n /**\n * Inits action,提供给子类用于继承\n */\n Action.prototype.init = function () {\n this.applyCfg(this.cfg);\n };\n /**\n * Destroys action\n */\n Action.prototype.destroy = function () {\n // 移除 action\n this.context.removeAction(this);\n // 清空\n this.context = null;\n };\n return Action;\n}();\nexport default Action;","import { __extends } from \"tslib\";\nimport Action from './base';\n/** 回调函数构建的 Action */\nvar CallbackAction = /** @class */function (_super) {\n __extends(CallbackAction, _super);\n function CallbackAction() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * 执行\n */\n CallbackAction.prototype.execute = function () {\n if (this.callback) {\n this.callback(this.context);\n }\n };\n /**\n * 销毁\n */\n CallbackAction.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.callback = null;\n };\n return CallbackAction;\n}(Action);\nexport default CallbackAction;","import CallbackAction from './callback';\nimport { get } from '@antv/util';\n// Action 类的缓存\nvar ActionCache = {};\n/**\n * 根据名称获取 Action 实例\n * @param actionName - action 的名称\n * @param context 上下文\n * @returns Action 实例\n */\nexport function createAction(actionName, context) {\n var actionOption = ActionCache[actionName];\n var action = null;\n if (actionOption) {\n var ActionClass = actionOption.ActionClass,\n cfg = actionOption.cfg;\n action = new ActionClass(context, cfg);\n action.name = actionName;\n action.init();\n }\n return action;\n}\n/**\n * 根据 action 的 name 获取定义的类\n * @param actionName action 的 name\n */\nexport function getActionClass(actionName) {\n var actionOption = ActionCache[actionName];\n return get(actionOption, 'ActionClass');\n}\n/**\n * 注册 Action\n * @param actionName - action 的名称\n * @param ActionClass - 继承自 action 的类\n */\nexport function registerAction(actionName, ActionClass, cfg) {\n ActionCache[actionName] = {\n ActionClass: ActionClass,\n cfg: cfg\n };\n}\n/**\n * 取消注册 Action\n * @param actionName action 名称\n */\nexport function unregisterAction(actionName) {\n delete ActionCache[actionName];\n}\n/**\n * 根据回调函数获取 Action 实例\n * @param callback - action 的回调函数\n * @param context 上下文\n * @returns Action 实例\n */\nexport function createCallbackAction(callback, context) {\n var action = new CallbackAction(context);\n action.callback = callback;\n action.name = 'callback';\n return action;\n}","import { __read } from \"tslib\";\nimport { vec2 } from '@antv/matrix-util';\nimport { each } from '@antv/util';\nimport { getDistanceToCenter } from '../../../util/coordinate';\nfunction _points2path(points, isInCircle) {\n var path = [];\n if (points.length) {\n path.push(['M', points[0].x, points[0].y]);\n for (var i = 1, length_1 = points.length; i < length_1; i += 1) {\n var item = points[i];\n path.push(['L', item.x, item.y]);\n }\n if (isInCircle) {\n path.push(['Z']);\n }\n }\n return path;\n}\nfunction _convertArr(arr, coord) {\n var tmp = [arr[0]];\n for (var i = 1, len = arr.length; i < len; i = i + 2) {\n var point = coord.convert({\n x: arr[i],\n y: arr[i + 1]\n });\n tmp.push(point.x, point.y);\n }\n return tmp;\n}\nfunction _convertArcPath(path, coord) {\n var isTransposed = coord.isTransposed;\n var r = path[1];\n var x = path[6];\n var y = path[7];\n var point = coord.convert({\n x: x,\n y: y\n });\n var direction = isTransposed ? 0 : 1;\n return ['A', r, r, 0, 0, direction, point.x, point.y];\n}\nfunction _convertPolarPath(pre, cur, coord) {\n var isTransposed = coord.isTransposed,\n startAngle = coord.startAngle,\n endAngle = coord.endAngle;\n var prePoint = pre[0].toLowerCase() === 'a' ? {\n x: pre[6],\n y: pre[7]\n } : {\n x: pre[1],\n y: pre[2]\n };\n var curPoint = {\n x: cur[1],\n y: cur[2]\n };\n var rst = [];\n var xDim = isTransposed ? 'y' : 'x';\n var angleRange = Math.abs(curPoint[xDim] - prePoint[xDim]) * (endAngle - startAngle);\n var direction = curPoint[xDim] >= prePoint[xDim] ? 1 : 0; // 圆弧的方向\n var flag = angleRange > Math.PI ? 1 : 0; // 大弧还是小弧标志位\n var convertPoint = coord.convert(curPoint);\n var r = getDistanceToCenter(coord, convertPoint);\n if (r >= 0.5) {\n // 小于1像素的圆在图像上无法识别\n if (angleRange === Math.PI * 2) {\n var middlePoint = {\n x: (curPoint.x + prePoint.x) / 2,\n y: (curPoint.y + prePoint.y) / 2\n };\n var middleConvertPoint = coord.convert(middlePoint);\n rst.push(['A', r, r, 0, flag, direction, middleConvertPoint.x, middleConvertPoint.y]);\n rst.push(['A', r, r, 0, flag, direction, convertPoint.x, convertPoint.y]);\n } else {\n rst.push(['A', r, r, 0, flag, direction, convertPoint.x, convertPoint.y]);\n }\n }\n return rst;\n}\n// 当存在整体的圆时,去除圆前面和后面的线,防止出现直线穿过整个圆的情形\nfunction _filterFullCirleLine(path) {\n each(path, function (subPath, index) {\n var cur = subPath;\n if (cur[0].toLowerCase() === 'a') {\n var pre = path[index - 1];\n var next = path[index + 1];\n if (next && next[0].toLowerCase() === 'a') {\n if (pre && pre[0].toLowerCase() === 'l') {\n pre[0] = 'M';\n }\n } else if (pre && pre[0].toLowerCase() === 'a') {\n if (next && next[0].toLowerCase() === 'l') {\n next[0] = 'M';\n }\n }\n }\n });\n}\n/**\n * @ignore\n * 计算光滑的贝塞尔曲线\n */\nexport var smoothBezier = function smoothBezier(points, smooth, isLoop, constraint) {\n var _a;\n var cps = [];\n var hasConstraint = !!constraint;\n var prevPoint;\n var nextPoint;\n var min;\n var max;\n var nextCp0;\n var cp1;\n var cp0;\n if (hasConstraint) {\n _a = __read(constraint, 2), min = _a[0], max = _a[1];\n for (var i = 0, l = points.length; i < l; i++) {\n var point = points[i];\n min = vec2.min([0, 0], min, point);\n max = vec2.max([0, 0], max, point);\n }\n }\n for (var i = 0, len = points.length; i < len; i++) {\n var point = points[i];\n if (i === 0 && !isLoop) {\n cp0 = point;\n } else if (i === len - 1 && !isLoop) {\n cp1 = point;\n cps.push(cp0);\n cps.push(cp1);\n } else {\n prevPoint = points[isLoop ? i ? i - 1 : len - 1 : i - 1];\n nextPoint = points[isLoop ? (i + 1) % len : i + 1];\n var v = [0, 0];\n v = vec2.sub(v, nextPoint, prevPoint);\n v = vec2.scale(v, v, smooth);\n var d0 = vec2.distance(point, prevPoint);\n var d1 = vec2.distance(point, nextPoint);\n var sum = d0 + d1;\n if (sum !== 0) {\n d0 /= sum;\n d1 /= sum;\n }\n var v1 = vec2.scale([0, 0], v, -d0);\n var v2 = vec2.scale([0, 0], v, d1);\n cp1 = vec2.add([0, 0], point, v1);\n nextCp0 = vec2.add([0, 0], point, v2);\n // 下一个控制点必须在这个点和下一个点之间\n nextCp0 = vec2.min([0, 0], nextCp0, vec2.max([0, 0], nextPoint, point));\n nextCp0 = vec2.max([0, 0], nextCp0, vec2.min([0, 0], nextPoint, point));\n // 重新计算 cp1 的值\n v1 = vec2.sub([0, 0], nextCp0, point);\n v1 = vec2.scale([0, 0], v1, -d0 / d1);\n cp1 = vec2.add([0, 0], point, v1);\n // 上一个控制点必须要在上一个点和这一个点之间\n cp1 = vec2.min([0, 0], cp1, vec2.max([0, 0], prevPoint, point));\n cp1 = vec2.max([0, 0], cp1, vec2.min([0, 0], prevPoint, point));\n // 重新计算 nextCp0 的值\n v2 = vec2.sub([0, 0], point, cp1);\n v2 = vec2.scale([0, 0], v2, d1 / d0);\n nextCp0 = vec2.add([0, 0], point, v2);\n if (hasConstraint) {\n cp1 = vec2.max([0, 0], cp1, min);\n cp1 = vec2.min([0, 0], cp1, max);\n nextCp0 = vec2.max([0, 0], nextCp0, min);\n nextCp0 = vec2.min([0, 0], nextCp0, max);\n }\n cps.push(cp0);\n cps.push(cp1);\n cp0 = nextCp0;\n }\n }\n if (isLoop) {\n cps.push(cps.shift());\n }\n return cps;\n};\n/**\n * @ignore\n * 贝塞尔曲线\n */\nexport function catmullRom2bezier(crp, z, constraint) {\n var isLoop = !!z;\n var pointList = [];\n for (var i = 0, l = crp.length; i < l; i += 2) {\n pointList.push([crp[i], crp[i + 1]]);\n }\n var controlPointList = smoothBezier(pointList, 0.4, isLoop, constraint);\n var len = pointList.length;\n var d1 = [];\n var cp1;\n var cp2;\n var p;\n for (var i = 0; i < len - 1; i++) {\n cp1 = controlPointList[i * 2];\n cp2 = controlPointList[i * 2 + 1];\n p = pointList[i + 1];\n d1.push(['C', cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1]]);\n }\n if (isLoop) {\n cp1 = controlPointList[len];\n cp2 = controlPointList[len + 1];\n p = pointList[0];\n d1.push(['C', cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1]]);\n }\n return d1;\n}\n/**\n * @ignore\n * 将点连接成路径 path\n */\nexport function getLinePath(points, isInCircle) {\n return _points2path(points, isInCircle);\n}\n/**\n * @ignore\n * 根据关键点获取限定了范围的平滑线\n */\nexport function getSplinePath(points, isInCircle, constaint) {\n var data = [];\n var first = points[0];\n var prePoint = null;\n if (points.length <= 2) {\n // 两点以内直接绘制成路径\n return getLinePath(points, isInCircle);\n }\n for (var i = 0, len = points.length; i < len; i++) {\n var point = points[i];\n if (!prePoint || !(prePoint.x === point.x && prePoint.y === point.y)) {\n data.push(point.x);\n data.push(point.y);\n prePoint = point;\n }\n }\n var constraint = constaint || [\n // 范围\n [0, 0], [1, 1]];\n var splinePath = catmullRom2bezier(data, isInCircle, constraint);\n splinePath.unshift(['M', first.x, first.y]);\n return splinePath;\n}\n/**\n * @ignore\n * 将归一化后的路径数据转换成坐标\n */\nexport function convertNormalPath(coord, path) {\n var tmp = [];\n each(path, function (subPath) {\n var action = subPath[0];\n switch (action.toLowerCase()) {\n case 'm':\n case 'l':\n case 'c':\n tmp.push(_convertArr(subPath, coord));\n break;\n case 'a':\n tmp.push(_convertArcPath(subPath, coord));\n break;\n case 'z':\n default:\n tmp.push(subPath);\n break;\n }\n });\n return tmp;\n}\n/**\n * @ignore\n * 将路径转换为极坐标下的真实路径\n */\nexport function convertPolarPath(coord, path) {\n var tmp = [];\n var pre;\n var cur;\n var transposed;\n var equals;\n each(path, function (subPath, index) {\n var action = subPath[0];\n switch (action.toLowerCase()) {\n case 'm':\n case 'c':\n case 'q':\n tmp.push(_convertArr(subPath, coord));\n break;\n case 'l':\n pre = path[index - 1];\n cur = subPath;\n transposed = coord.isTransposed;\n // 是否半径相同,转换成圆弧\n equals = transposed ? pre[pre.length - 2] === cur[1] : pre[pre.length - 1] === cur[2];\n if (equals) {\n tmp = tmp.concat(_convertPolarPath(pre, cur, coord));\n } else {\n // y 不相等,所以直接转换\n tmp.push(_convertArr(subPath, coord));\n }\n break;\n case 'a':\n tmp.push(_convertArcPath(subPath, coord));\n break;\n case 'z':\n default:\n tmp.push(subPath);\n break;\n }\n });\n _filterFullCirleLine(tmp); // 过滤多余的直线\n return tmp;\n}","import \"core-js/modules/es.array.flat-map.js\";\nimport \"core-js/modules/es.array.unscopables.flat-map.js\";\nimport { each, isArray } from '@antv/util';\nimport { catmullRom2bezier, getLinePath } from '../../geometry/shape/util/path';\nimport { toPoints } from '../../util/bbox';\nimport { isPolygonsIntersect } from '@antv/path-util';\nfunction getMaskBBox(context, tolerance) {\n var event = context.event;\n var maskShape = event.target;\n return getMaskBBoxByShape(maskShape, tolerance);\n}\n/**\n * 如果 mask BBox 过小则不返回\n */\nfunction isValidMaskBBox(maskShape, tolerance) {\n var maskBBox = maskShape.getCanvasBBox();\n var width = maskBBox.width,\n height = maskBBox.height;\n return width > 0 && height > 0 && (width >= tolerance || height >= tolerance);\n}\n/**\n * 通过 maskShape 获取 mask 的 canvasBBox\n * @param maskShape\n * @param tolerance\n * @returns\n */\nfunction getMaskBBoxByShape(maskShape, tolerance) {\n var maskBBox = maskShape.getCanvasBBox();\n return isValidMaskBBox(maskShape, tolerance) ? maskBBox : null;\n}\n/**\n * 获取 multiple 模式下 mask 的 canvasBBox 数组\n * @param context 上下文\n * @param tolerance box 宽高小于则不返回\n * @returns\n */\nfunction getMultiMaskBBoxList(context, tolerance) {\n var maskShapes = context.event.maskShapes;\n return maskShapes.map(function (maskShape) {\n return getMaskBBoxByShape(maskShape, tolerance);\n }).filter(function (bBox) {\n return !!bBox;\n });\n}\nfunction getMaskPath(context, tolerance) {\n var event = context.event;\n var maskShape = event.target;\n return getMaskPathByMaskShape(maskShape, tolerance);\n}\n/**\n * 通过 maskShape 获取 mask path\n * @param maskShape\n * @param tolerance box 宽高小于则不返回\n * @returns\n */\nfunction getMaskPathByMaskShape(maskShape, tolerance) {\n return isValidMaskBBox(maskShape, tolerance) ? maskShape.attr('path') : null;\n}\n/**\n * 获取 multiple 模式下 mask path 数组\n * @param context 上下文\n * @param tolerance box 宽高小于则不返回\n * @returns\n */\nfunction getMultiMaskPathList(context, tolerance) {\n var maskShapes = context.event.maskShapes;\n return maskShapes.map(function (maskShape) {\n return getMaskPathByMaskShape(maskShape, tolerance);\n });\n}\n/**\n * 获取当前事件相关的图表元素\n * @param context 交互的上下文\n * @ignore\n */\nexport function getCurrentElement(context) {\n var event = context.event;\n var element;\n var target = event.target;\n if (target) {\n element = target.get('element');\n }\n return element;\n}\n/**\n * 获取委托对象\n * @param context 上下文\n * @ignore\n */\nexport function getDelegationObject(context) {\n var event = context.event;\n var target = event.target;\n var delegateObject;\n if (target) {\n delegateObject = target.get('delegateObject');\n }\n return delegateObject;\n}\nexport function isElementChange(context) {\n var event = context.event.gEvent;\n // 在同一个 element 内部移动,label 和 shape 之间\n if (event && event.fromShape && event.toShape && event.fromShape.get('element') === event.toShape.get('element')) {\n return false;\n }\n return true;\n}\n/**\n * 是否是列表组件\n * @param delegateObject 委托对象\n * @ignore\n */\nexport function isList(delegateObject) {\n return delegateObject && delegateObject.component && delegateObject.component.isList();\n}\n/**\n * 是否是滑块组件\n * @param delegateObject 委托对象\n * @ignore\n */\nexport function isSlider(delegateObject) {\n return delegateObject && delegateObject.component && delegateObject.component.isSlider();\n}\n/**\n * 是否由 mask 触发\n * @param context 上下文\n * @ignore\n */\nexport function isMask(context) {\n var event = context.event;\n var target = event.target;\n return target && (target === null || target === void 0 ? void 0 : target.get('name')) === 'mask' || isMultipleMask(context);\n}\n/**\n * 是否由 multiple mask 触发\n * @param context\n * @returns\n */\nexport function isMultipleMask(context) {\n var _a;\n return ((_a = context.event.target) === null || _a === void 0 ? void 0 : _a.get('name')) === 'multi-mask';\n}\n/**\n * 获取被遮挡的 elements\n * @param context 上下文\n * @ignore\n */\nexport function getMaskedElements(context, tolerance) {\n var target = context.event.target;\n // multiple 模式下\n if (isMultipleMask(context)) {\n return getMultiMaskedElements(context, tolerance);\n }\n // 正常模式下\n if (target.get('type') === 'path') {\n var maskPath = getMaskPath(context, tolerance);\n if (!maskPath) {\n return;\n }\n return getElementsByPath(context.view, maskPath);\n }\n var maskBBox = getMaskBBox(context, tolerance);\n // 如果 bbox 过小则不返回\n if (!maskBBox) {\n return null;\n }\n return getIntersectElements(context.view, maskBBox);\n}\n/**\n * 获取 multiple 模式下被 mask 遮挡的 elements\n * @param context 上下文\n * @returns\n */\nfunction getMultiMaskedElements(context, tolerance) {\n var target = context.event.target;\n if (target.get('type') === 'path') {\n var maskPathList = getMultiMaskPathList(context, tolerance);\n if (maskPathList.length > 0) {\n return maskPathList.flatMap(function (maskPath) {\n return getElementsByPath(context.view, maskPath);\n });\n }\n return null;\n }\n var maskBBoxList = getMultiMaskBBoxList(context, tolerance);\n if (maskBBoxList.length > 0) {\n return maskBBoxList.flatMap(function (maskBBox) {\n return getIntersectElements(context.view, maskBBox);\n });\n }\n return null;\n}\n/**\n * @ignore\n */\nexport function getSiblingMaskElements(context, sibling, tolerance) {\n // multiple 模式下\n if (isMultipleMask(context)) {\n return getSiblingMultiMaskedElements(context, sibling, tolerance);\n }\n // 正常模式下\n var maskBBox = getMaskBBox(context, tolerance);\n // 如果 bbox 过小则不返回\n if (!maskBBox) {\n return null;\n }\n return getSiblingMaskElementsByBBox(maskBBox, context, sibling);\n}\n/**\n * 通过 mashBBox 获取 sibling 模式下被 mask 遮挡的 elements\n * @param maskBBox\n * @param context 上下文\n * @param sibling sibling view\n * @returns\n */\nfunction getSiblingMaskElementsByBBox(maskBBox, context, sibling) {\n var view = context.view;\n var start = getSiblingPoint(view, sibling, {\n x: maskBBox.x,\n y: maskBBox.y\n });\n var end = getSiblingPoint(view, sibling, {\n x: maskBBox.maxX,\n y: maskBBox.maxY\n });\n var box = {\n minX: start.x,\n minY: start.y,\n maxX: end.x,\n maxY: end.y\n };\n return getIntersectElements(sibling, box);\n}\n/**\n * 获取 sibling 模式下被 multiple mask 遮挡的 elements\n * @param context 上下文\n * @param sibling sibling view\n * @param tolerance box 宽高小于则不返回\n * @returns\n */\nfunction getSiblingMultiMaskedElements(context, sibling, tolerance) {\n var maskBBoxList = getMultiMaskBBoxList(context, tolerance);\n if (maskBBoxList.length > 0) {\n return maskBBoxList.flatMap(function (maskBBox) {\n return getSiblingMaskElementsByBBox(maskBBox, context, sibling);\n });\n }\n return null;\n}\n/**\n * 获取所有的图表元素\n * @param view View/Chart\n * @ignore\n */\nexport function getElements(view) {\n var geometries = view.geometries;\n var rst = [];\n each(geometries, function (geom) {\n var elements = geom.elements;\n rst = rst.concat(elements);\n });\n if (view.views && view.views.length) {\n each(view.views, function (subView) {\n rst = rst.concat(getElements(subView));\n });\n }\n return rst;\n}\n/**\n * 获取所有的图表元素\n * @param view View/Chart\n * @param field 字段名\n * @param value 字段值\n * @ignore\n */\nexport function getElementsByField(view, field, value) {\n var elements = getElements(view);\n return elements.filter(function (el) {\n return getElementValue(el, field) === value;\n });\n}\n/**\n * 根据状态名获取图表元素\n * @param view View/Chart\n * @param stateName 状态名\n * @ignore\n */\nexport function getElementsByState(view, stateName) {\n var geometries = view.geometries;\n var rst = [];\n each(geometries, function (geom) {\n var elements = geom.getElementsBy(function (el) {\n return el.hasState(stateName);\n });\n rst = rst.concat(elements);\n });\n return rst;\n}\n/**\n * 获取图表元素对应字段的值\n * @param element 图表元素\n * @param field 字段名\n * @ignore\n */\nexport function getElementValue(element, field) {\n var model = element.getModel();\n var record = model.data;\n var value;\n if (isArray(record)) {\n value = record[0][field];\n } else {\n value = record[field];\n }\n return value;\n}\n/**\n * 两个包围盒是否相交\n * @param box1 包围盒1\n * @param box2 包围盒2\n * @ignore\n */\nexport function intersectRect(box1, box2) {\n return !(box2.minX > box1.maxX || box2.maxX < box1.minX || box2.minY > box1.maxY || box2.maxY < box1.minY);\n}\n/**\n * 获取包围盒内的图表元素\n * @param view View/Chart\n * @param box 包围盒\n * @ignore\n */\nexport function getIntersectElements(view, box) {\n var elements = getElements(view);\n var rst = [];\n each(elements, function (el) {\n var shape = el.shape;\n var shapeBBox = shape.getCanvasBBox();\n if (intersectRect(box, shapeBBox)) {\n rst.push(el);\n }\n });\n return rst;\n}\nfunction pathToPoints(path) {\n var points = [];\n each(path, function (seg) {\n var command = seg[0];\n if (command !== 'A') {\n for (var i = 1; i < seg.length; i = i + 2) {\n points.push([seg[i], seg[i + 1]]);\n }\n } else {\n var length_1 = seg.length;\n points.push([seg[length_1 - 2], seg[length_1 - 1]]);\n }\n });\n return points;\n}\n/**\n * 获取包围盒内的图表元素\n * @param view View/Chart\n * @param path 路径\n * @ignore\n */\nexport function getElementsByPath(view, path) {\n var elements = getElements(view);\n var points = pathToPoints(path);\n var rst = elements.filter(function (el) {\n var shape = el.shape;\n var shapePoints;\n if (shape.get('type') === 'path') {\n shapePoints = pathToPoints(shape.attr('path'));\n } else {\n var shapeBBox = shape.getCanvasBBox();\n shapePoints = toPoints(shapeBBox);\n }\n return isPolygonsIntersect(points, shapePoints);\n });\n return rst;\n}\n/**\n * 获取当前 View 的所有组件\n * @param view View/Chart\n * @ignore\n */\nexport function getComponents(view) {\n return view.getComponents().map(function (co) {\n return co.component;\n });\n}\n/** @ignore */\nexport function distance(p1, p2) {\n var dx = p2.x - p1.x;\n var dy = p2.y - p1.y;\n return Math.sqrt(dx * dx + dy * dy);\n}\n/** @ignore */\nexport function getSpline(points, z) {\n if (points.length <= 2) {\n return getLinePath(points, false);\n }\n var first = points[0];\n var arr = [];\n each(points, function (point) {\n arr.push(point.x);\n arr.push(point.y);\n });\n var path = catmullRom2bezier(arr, z, null);\n path.unshift(['M', first.x, first.y]);\n return path;\n}\n/**\n * 检测点是否在包围盒内\n * @param box 包围盒\n * @param point 点\n * @ignore\n */\nexport function isInBox(box, point) {\n return box.x <= point.x && box.maxX >= point.x && box.y <= point.y && box.maxY > point.y;\n}\n/**\n * 获取同 view 同一级的 views\n * @param view 当前 view\n * @returns 同一级的 views\n * @ignore\n */\nexport function getSilbings(view) {\n var parent = view.parent;\n var siblings = null;\n if (parent) {\n siblings = parent.views.filter(function (sub) {\n return sub !== view;\n });\n }\n return siblings;\n}\nfunction point2Normalize(view, point) {\n var coord = view.getCoordinate();\n return coord.invert(point);\n}\n/**\n * 将 view 上的一点转换成另一个 view 的点\n * @param view 当前的 view\n * @param sibling 同一层级的 view\n * @param point 指定点\n * @ignore\n */\nexport function getSiblingPoint(view, sibling, point) {\n var normalPoint = point2Normalize(view, point);\n return sibling.getCoordinate().convert(normalPoint);\n}\n/**\n * 是否在记录中,临时因为所有的 view 中的数据不是引用,而使用的方法\n * 不同 view 上对数据的引用不相等,导致无法直接用 includes\n * 假设 x, y 值相等时是同一条数据,这个假设不完全正确,而改成 isEqual 则成本太高\n * 后面改成同一个引用时可以修改回来\n * @param records\n * @param record\n * @param xFiled\n * @param yField\n * @returns\n * @ignore\n */\nexport function isInRecords(records, record, xFiled, yField) {\n var isIn = false;\n each(records, function (r) {\n if (r[xFiled] === record[xFiled] && r[yField] === record[yField]) {\n isIn = true;\n return false;\n }\n });\n return isIn;\n}\n// 级联获取 field 对应的 scale,如果 view 上没有,遍历子 view\nexport function getScaleByField(view, field) {\n var scale = view.getScaleByField(field);\n if (!scale && view.views) {\n each(view.views, function (subView) {\n scale = getScaleByField(subView, field);\n if (scale) {\n return false; // 终止循环\n }\n });\n }\n\n return scale;\n}","import { each, get } from '@antv/util';\nimport { getComponents, isInBox } from './action/util';\n/**\n * 交互的上下文\n */\nvar Context = /** @class */function () {\n function Context(view) {\n /** 当前所有的 Action */\n this.actions = [];\n /** 当前事件对象 */\n this.event = null;\n this.cacheMap = {};\n this.view = view;\n }\n /**\n * 缓存信息\n * @param params 缓存的字段\n * - 如果一个字段则获取缓存\n * - 两个字段则设置缓存\n */\n Context.prototype.cache = function () {\n var params = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n params[_i] = arguments[_i];\n }\n if (params.length === 1) {\n return this.cacheMap[params[0]];\n } else if (params.length === 2) {\n this.cacheMap[params[0]] = params[1];\n }\n };\n /**\n * 获取 Action\n * @param name Action 的名称\n */\n Context.prototype.getAction = function (name) {\n return this.actions.find(function (action) {\n return action.name === name;\n });\n };\n /**\n * 获取 Action\n * @param action Action 对象\n */\n Context.prototype.addAction = function (action) {\n this.actions.push(action);\n };\n /**\n * 移除 Action\n * @param action Action 对象\n */\n Context.prototype.removeAction = function (action) {\n var actions = this.actions;\n var index = this.actions.indexOf(action);\n if (index >= 0) {\n actions.splice(index, 1);\n }\n };\n /**\n * 获取当前的点\n */\n Context.prototype.getCurrentPoint = function () {\n var event = this.event;\n if (event) {\n if (event.target instanceof HTMLElement) {\n var canvas = this.view.getCanvas();\n var point = canvas.getPointByClient(event.clientX, event.clientY);\n return point;\n } else {\n return {\n x: event.x,\n y: event.y\n };\n }\n }\n return null;\n };\n /**\n * 获取当前 shape\n * @returns current shape\n */\n Context.prototype.getCurrentShape = function () {\n return get(this.event, ['gEvent', 'shape']);\n };\n /**\n * 当前的触发是否在 View 内\n */\n Context.prototype.isInPlot = function () {\n var point = this.getCurrentPoint();\n if (point) {\n return this.view.isPointInPlot(point);\n }\n return false;\n };\n /**\n * 是否在指定的图形内\n * @param name shape 的 name\n */\n Context.prototype.isInShape = function (name) {\n var shape = this.getCurrentShape(); // 不再考虑在 shape 的 parent 内的情况\n if (shape) {\n return shape.get('name') === name;\n }\n return false;\n };\n /**\n * 当前的触发是组件内部\n * @param name 组件名,可以为空\n */\n Context.prototype.isInComponent = function (name) {\n var components = getComponents(this.view);\n var point = this.getCurrentPoint();\n if (point) {\n return !!components.find(function (component) {\n var bbox = component.getBBox();\n if (name) {\n return component.get('name') === name && isInBox(bbox, point);\n } else {\n return isInBox(bbox, point);\n }\n });\n }\n return false;\n };\n /**\n * 销毁\n */\n Context.prototype.destroy = function () {\n // 先销毁 action 再清空,一边遍历,一边删除,所以数组需要更新引用\n each(this.actions.slice(), function (action) {\n action.destroy();\n });\n this.view = null;\n this.event = null;\n this.actions = null;\n this.cacheMap = null;\n };\n return Context;\n}();\nexport default Context;","/**\n * 交互的基类。\n */\nvar Interaction = /** @class */function () {\n function Interaction(view, cfg) {\n this.view = view;\n this.cfg = cfg;\n }\n /**\n * 初始化。\n */\n Interaction.prototype.init = function () {\n this.initEvents();\n };\n /**\n * 绑定事件\n */\n Interaction.prototype.initEvents = function () {};\n /**\n * 销毁事件\n */\n Interaction.prototype.clearEvents = function () {};\n /**\n * 销毁。\n */\n Interaction.prototype.destroy = function () {\n this.clearEvents();\n };\n return Interaction;\n}();\nexport default Interaction;","import { __extends } from \"tslib\";\nimport { each, isArray, isFunction, isString, debounce, throttle } from '@antv/util';\nimport { createAction, createCallbackAction } from './action/register';\nimport InteractionContext from './context';\nimport Interaction from './interaction';\n// 将字符串转换成 action\nexport function parseAction(actionStr, context, arg) {\n var arr = actionStr.split(':');\n var actionName = arr[0];\n // 如果已经初始化过 action ,则直接引用之前的 action\n var action = context.getAction(actionName) || createAction(actionName, context);\n if (!action) {\n throw new Error(\"There is no action named \".concat(actionName));\n }\n var methodName = arr[1];\n return {\n action: action,\n methodName: methodName,\n arg: arg\n };\n}\n// 执行 Action\nfunction executeAction(actionObject) {\n var action = actionObject.action,\n methodName = actionObject.methodName,\n arg = actionObject.arg;\n if (action[methodName]) {\n action[methodName](arg);\n } else {\n throw new Error(\"Action(\".concat(action.name, \") doesn't have a method called \").concat(methodName));\n }\n}\nvar STEP_NAMES = {\n START: 'start',\n SHOW_ENABLE: 'showEnable',\n END: 'end',\n ROLLBACK: 'rollback',\n PROCESSING: 'processing'\n};\n/**\n * 支持语法的交互类\n */\nvar GrammarInteraction = /** @class */function (_super) {\n __extends(GrammarInteraction, _super);\n function GrammarInteraction(view, steps) {\n var _this = _super.call(this, view, steps) || this;\n _this.callbackCaches = {};\n // 某个触发和反馈在本环节是否执行或\n _this.emitCaches = {};\n _this.steps = steps;\n return _this;\n }\n /**\n * 初始化\n */\n GrammarInteraction.prototype.init = function () {\n this.initContext();\n _super.prototype.init.call(this);\n };\n /**\n * 清理资源\n */\n GrammarInteraction.prototype.destroy = function () {\n _super.prototype.destroy.call(this); // 先清理事件\n this.steps = null;\n if (this.context) {\n this.context.destroy();\n this.context = null;\n }\n this.callbackCaches = null;\n this.view = null;\n };\n /**\n * 绑定事件\n */\n GrammarInteraction.prototype.initEvents = function () {\n var _this = this;\n each(this.steps, function (stepArr, stepName) {\n each(stepArr, function (step) {\n var callback = _this.getActionCallback(stepName, step);\n if (callback) {\n // 如果存在 callback,才绑定,有时候会出现无 callback 的情况\n _this.bindEvent(step.trigger, callback);\n }\n });\n });\n };\n /**\n * 清理绑定的事件\n */\n GrammarInteraction.prototype.clearEvents = function () {\n var _this = this;\n each(this.steps, function (stepArr, stepName) {\n each(stepArr, function (step) {\n var callback = _this.getActionCallback(stepName, step);\n if (callback) {\n _this.offEvent(step.trigger, callback);\n }\n });\n });\n };\n // 初始化上下文,并初始化 action\n GrammarInteraction.prototype.initContext = function () {\n var view = this.view;\n var context = new InteractionContext(view);\n this.context = context;\n var steps = this.steps;\n // 生成具体的 Action\n each(steps, function (subSteps) {\n each(subSteps, function (step) {\n if (isFunction(step.action)) {\n // 如果传入回调函数,则直接生成 CallbackAction\n step.actionObject = {\n action: createCallbackAction(step.action, context),\n methodName: 'execute'\n };\n } else if (isString(step.action)) {\n // 如果是字符串\n step.actionObject = parseAction(step.action, context, step.arg);\n } else if (isArray(step.action)) {\n // 如果是数组\n var actionArr = step.action;\n var argArr_1 = isArray(step.arg) ? step.arg : [step.arg];\n step.actionObject = [];\n each(actionArr, function (actionStr, idx) {\n step.actionObject.push(parseAction(actionStr, context, argArr_1[idx]));\n });\n }\n // 如果 action 既不是字符串,也不是函数,则不会生成 actionObject\n });\n });\n };\n // 是否允许指定阶段名称执行\n GrammarInteraction.prototype.isAllowStep = function (stepName) {\n var currentStepName = this.currentStepName;\n var steps = this.steps;\n // 相同的阶段允许同时执行\n if (currentStepName === stepName) {\n return true;\n }\n if (stepName === STEP_NAMES.SHOW_ENABLE) {\n // 示能在整个过程中都可用\n return true;\n }\n if (stepName === STEP_NAMES.PROCESSING) {\n // 只有当前是 start 时,才允许 processing\n return currentStepName === STEP_NAMES.START;\n }\n if (stepName === STEP_NAMES.START) {\n // 如果当前是 processing,则无法 start,必须等待 end 后才能执行\n return currentStepName !== STEP_NAMES.PROCESSING;\n }\n if (stepName === STEP_NAMES.END) {\n return currentStepName === STEP_NAMES.PROCESSING || currentStepName === STEP_NAMES.START;\n }\n if (stepName === STEP_NAMES.ROLLBACK) {\n if (steps[STEP_NAMES.END]) {\n // 如果定义了 end, 只有 end 时才允许回滚\n return currentStepName === STEP_NAMES.END;\n } else if (currentStepName === STEP_NAMES.START) {\n // 如果未定义 end, 则判断是否是开始\n return true;\n }\n }\n return false;\n };\n // 具体的指定阶段是否允许执行\n GrammarInteraction.prototype.isAllowExecute = function (stepName, step) {\n if (this.isAllowStep(stepName)) {\n var key = this.getKey(stepName, step);\n // 如果是在本环节内仅允许触发一次,同时已经触发过,则不允许再触发\n if (step.once && this.emitCaches[key]) {\n return false;\n }\n // 如果是允许的阶段,则验证 isEnable 方法\n if (step.isEnable) {\n return step.isEnable(this.context);\n }\n return true; // 如果没有 isEnable 则允许执行\n }\n\n return false;\n };\n GrammarInteraction.prototype.enterStep = function (stepName) {\n this.currentStepName = stepName;\n this.emitCaches = {}; // 清除所有本环节触发的缓存\n };\n // 执行完某个触发和反馈(子环节)\n GrammarInteraction.prototype.afterExecute = function (stepName, step) {\n // show enable 不计入正常的流程,其他情况则设置当前的 step\n if (stepName !== STEP_NAMES.SHOW_ENABLE && this.currentStepName !== stepName) {\n this.enterStep(stepName);\n }\n var key = this.getKey(stepName, step);\n // 一旦执行,则缓存标记为,一直保持到跳出改环节\n this.emitCaches[key] = true;\n };\n // 获取某个环节的唯一的键值\n GrammarInteraction.prototype.getKey = function (stepName, step) {\n return stepName + step.trigger + step.action;\n };\n // 获取 step 的回调函数,如果已经生成,则直接返回,如果未生成,则创建\n GrammarInteraction.prototype.getActionCallback = function (stepName, step) {\n var _this = this;\n var context = this.context;\n var callbackCaches = this.callbackCaches;\n var actionObject = step.actionObject;\n if (step.action && actionObject) {\n var key = this.getKey(stepName, step);\n if (!callbackCaches[key]) {\n // 动态生成执行的方法,执行对应 action 的名称\n var actionCallback = function actionCallback(event) {\n context.event = event; // 保证检测时的 event\n if (_this.isAllowExecute(stepName, step)) {\n // 如果是数组时,则依次执行\n if (isArray(actionObject)) {\n each(actionObject, function (obj) {\n context.event = event; // 可能触发新的事件,保证执行前的 context.event 是正确的\n executeAction(obj);\n });\n } else {\n context.event = event; // 保证执行前的 context.event 是正确的\n executeAction(actionObject);\n }\n _this.afterExecute(stepName, step);\n if (step.callback) {\n context.event = event; // 保证执行前的 context.event 是正确的\n step.callback(context);\n }\n } else {\n // 如果未通过验证,则事件不要绑定在上面\n context.event = null;\n }\n };\n // 如果设置了 debounce\n if (step.debounce) {\n callbackCaches[key] = debounce(actionCallback, step.debounce.wait, step.debounce.immediate);\n } else if (step.throttle) {\n // 设置 throttle\n callbackCaches[key] = throttle(actionCallback, step.throttle.wait, {\n leading: step.throttle.leading,\n trailing: step.throttle.trailing\n });\n } else {\n // 直接设置\n callbackCaches[key] = actionCallback;\n }\n }\n return callbackCaches[key];\n }\n return null;\n };\n GrammarInteraction.prototype.bindEvent = function (eventName, callback) {\n var nameArr = eventName.split(':');\n if (nameArr[0] === 'window') {\n window.addEventListener(nameArr[1], callback);\n } else if (nameArr[0] === 'document') {\n document.addEventListener(nameArr[1], callback);\n } else {\n this.view.on(eventName, callback);\n }\n };\n GrammarInteraction.prototype.offEvent = function (eventName, callback) {\n var nameArr = eventName.split(':');\n if (nameArr[0] === 'window') {\n window.removeEventListener(nameArr[1], callback);\n } else if (nameArr[0] === 'document') {\n document.removeEventListener(nameArr[1], callback);\n } else {\n this.view.off(eventName, callback);\n }\n };\n return GrammarInteraction;\n}(Interaction);\nexport default GrammarInteraction;","import { clone, isPlainObject, lowerCase, mix } from '@antv/util';\nimport GrammarInteraction from './grammar-interaction';\nvar Interactions = {};\n/**\n * 根据交互行为名字获取对应的交互类\n * @param name 交互名字\n * @returns 交互类\n */\nexport function getInteraction(name) {\n return Interactions[lowerCase(name)];\n}\n/**\n * 注册交互行为\n * @param name 交互行为名字\n * @param interaction 交互类\n */\nexport function registerInteraction(name, interaction) {\n Interactions[lowerCase(name)] = interaction;\n}\n/**\n * 创建交互实例\n * @param name 交互名\n * @param view 交互应用的 View 实例\n * @param cfg 交互行为配置\n */\nexport function createInteraction(name, view, cfg) {\n var interaciton = getInteraction(name);\n if (!interaciton) {\n return null;\n }\n if (isPlainObject(interaciton)) {\n // 如果不 clone 则会多个 interaction 实例共享 step 的定义\n var steps = mix(clone(interaciton), cfg);\n return new GrammarInteraction(view, steps);\n } else {\n var cls = interaciton;\n return new cls(view, cfg);\n }\n}\nexport { default as Interaction } from './interaction';\nexport { Action, registerAction, getActionClass } from './action';","import { __assign } from \"tslib\";\nimport { TOOLTIP_CSS_CONST } from '@antv/component';\nimport { ext } from '@antv/matrix-util';\nimport { deepMix } from '@antv/util';\nimport { getAngle } from '../../util/graphics';\n/**\n * 根据样式表创建 axis 组件主题样式\n * @param styleSheet\n */\nfunction createAxisStyles(styleSheet) {\n return {\n title: {\n autoRotate: true,\n position: 'center',\n spacing: styleSheet.axisTitleSpacing,\n style: {\n fill: styleSheet.axisTitleTextFillColor,\n fontSize: styleSheet.axisTitleTextFontSize,\n lineHeight: styleSheet.axisTitleTextLineHeight,\n textBaseline: 'middle',\n fontFamily: styleSheet.fontFamily\n },\n iconStyle: {\n fill: styleSheet.axisDescriptionIconFillColor\n }\n },\n label: {\n autoRotate: false,\n autoEllipsis: false,\n autoHide: {\n type: 'equidistance',\n cfg: {\n minGap: 6\n }\n },\n offset: styleSheet.axisLabelOffset,\n style: {\n fill: styleSheet.axisLabelFillColor,\n fontSize: styleSheet.axisLabelFontSize,\n lineHeight: styleSheet.axisLabelLineHeight,\n fontFamily: styleSheet.fontFamily\n }\n },\n line: {\n style: {\n lineWidth: styleSheet.axisLineBorder,\n stroke: styleSheet.axisLineBorderColor\n }\n },\n grid: {\n line: {\n type: 'line',\n style: {\n stroke: styleSheet.axisGridBorderColor,\n lineWidth: styleSheet.axisGridBorder,\n lineDash: styleSheet.axisGridLineDash\n }\n },\n alignTick: true,\n animate: true\n },\n tickLine: {\n style: {\n lineWidth: styleSheet.axisTickLineBorder,\n stroke: styleSheet.axisTickLineBorderColor\n },\n alignTick: true,\n length: styleSheet.axisTickLineLength\n },\n subTickLine: null,\n animate: true\n };\n}\n/**\n *\n * @param styleSheet\n */\n// export function\n/**\n * 根据样式表创建 legend 组件主题样式\n * @param styleSheet\n */\nfunction createLegendStyles(styleSheet) {\n return {\n title: null,\n marker: {\n symbol: 'circle',\n spacing: styleSheet.legendMarkerSpacing,\n style: {\n r: styleSheet.legendCircleMarkerSize,\n fill: styleSheet.legendMarkerColor\n }\n },\n itemName: {\n spacing: 5,\n style: {\n fill: styleSheet.legendItemNameFillColor,\n fontFamily: styleSheet.fontFamily,\n fontSize: styleSheet.legendItemNameFontSize,\n lineHeight: styleSheet.legendItemNameLineHeight,\n fontWeight: styleSheet.legendItemNameFontWeight,\n textAlign: 'start',\n textBaseline: 'middle'\n }\n },\n itemStates: {\n active: {\n nameStyle: {\n opacity: 0.8\n }\n },\n unchecked: {\n nameStyle: {\n fill: '#D8D8D8'\n },\n markerStyle: {\n fill: '#D8D8D8',\n stroke: '#D8D8D8'\n }\n },\n inactive: {\n nameStyle: {\n fill: '#D8D8D8'\n },\n markerStyle: {\n opacity: 0.2\n }\n }\n },\n flipPage: true,\n pageNavigator: {\n marker: {\n style: {\n size: styleSheet.legendPageNavigatorMarkerSize,\n inactiveFill: styleSheet.legendPageNavigatorMarkerInactiveFillColor,\n inactiveOpacity: styleSheet.legendPageNavigatorMarkerInactiveFillOpacity,\n fill: styleSheet.legendPageNavigatorMarkerFillColor,\n opacity: styleSheet.legendPageNavigatorMarkerFillOpacity\n }\n },\n text: {\n style: {\n fill: styleSheet.legendPageNavigatorTextFillColor,\n fontSize: styleSheet.legendPageNavigatorTextFontSize\n }\n }\n },\n animate: false,\n maxItemWidth: 200,\n itemSpacing: styleSheet.legendItemSpacing,\n itemMarginBottom: styleSheet.legendItemMarginBottom,\n padding: styleSheet.legendPadding // 图例组件自己的外边距\n };\n}\n/**\n * 根据主题样式表生成主题结构\n * @param styleSheet 主题样式表\n */\nexport function createThemeByStyleSheet(styleSheet) {\n var _a;\n var shapeStyles = {\n point: {\n default: {\n fill: styleSheet.pointFillColor,\n r: styleSheet.pointSize,\n stroke: styleSheet.pointBorderColor,\n lineWidth: styleSheet.pointBorder,\n fillOpacity: styleSheet.pointFillOpacity\n },\n active: {\n stroke: styleSheet.pointActiveBorderColor,\n lineWidth: styleSheet.pointActiveBorder\n },\n selected: {\n stroke: styleSheet.pointSelectedBorderColor,\n lineWidth: styleSheet.pointSelectedBorder\n },\n inactive: {\n fillOpacity: styleSheet.pointInactiveFillOpacity,\n strokeOpacity: styleSheet.pointInactiveBorderOpacity\n }\n },\n hollowPoint: {\n default: {\n fill: styleSheet.hollowPointFillColor,\n lineWidth: styleSheet.hollowPointBorder,\n stroke: styleSheet.hollowPointBorderColor,\n strokeOpacity: styleSheet.hollowPointBorderOpacity,\n r: styleSheet.hollowPointSize\n },\n active: {\n stroke: styleSheet.hollowPointActiveBorderColor,\n strokeOpacity: styleSheet.hollowPointActiveBorderOpacity\n },\n selected: {\n lineWidth: styleSheet.hollowPointSelectedBorder,\n stroke: styleSheet.hollowPointSelectedBorderColor,\n strokeOpacity: styleSheet.hollowPointSelectedBorderOpacity\n },\n inactive: {\n strokeOpacity: styleSheet.hollowPointInactiveBorderOpacity\n }\n },\n area: {\n default: {\n fill: styleSheet.areaFillColor,\n fillOpacity: styleSheet.areaFillOpacity,\n stroke: null\n },\n active: {\n fillOpacity: styleSheet.areaActiveFillOpacity\n },\n selected: {\n fillOpacity: styleSheet.areaSelectedFillOpacity\n },\n inactive: {\n fillOpacity: styleSheet.areaInactiveFillOpacity\n }\n },\n hollowArea: {\n default: {\n fill: null,\n stroke: styleSheet.hollowAreaBorderColor,\n lineWidth: styleSheet.hollowAreaBorder,\n strokeOpacity: styleSheet.hollowAreaBorderOpacity\n },\n active: {\n fill: null,\n lineWidth: styleSheet.hollowAreaActiveBorder\n },\n selected: {\n fill: null,\n lineWidth: styleSheet.hollowAreaSelectedBorder\n },\n inactive: {\n strokeOpacity: styleSheet.hollowAreaInactiveBorderOpacity\n }\n },\n interval: {\n default: {\n fill: styleSheet.intervalFillColor,\n fillOpacity: styleSheet.intervalFillOpacity\n },\n active: {\n stroke: styleSheet.intervalActiveBorderColor,\n lineWidth: styleSheet.intervalActiveBorder\n },\n selected: {\n stroke: styleSheet.intervalSelectedBorderColor,\n lineWidth: styleSheet.intervalSelectedBorder\n },\n inactive: {\n fillOpacity: styleSheet.intervalInactiveFillOpacity,\n strokeOpacity: styleSheet.intervalInactiveBorderOpacity\n }\n },\n hollowInterval: {\n default: {\n fill: styleSheet.hollowIntervalFillColor,\n stroke: styleSheet.hollowIntervalBorderColor,\n lineWidth: styleSheet.hollowIntervalBorder,\n strokeOpacity: styleSheet.hollowIntervalBorderOpacity\n },\n active: {\n stroke: styleSheet.hollowIntervalActiveBorderColor,\n lineWidth: styleSheet.hollowIntervalActiveBorder,\n strokeOpacity: styleSheet.hollowIntervalActiveBorderOpacity\n },\n selected: {\n stroke: styleSheet.hollowIntervalSelectedBorderColor,\n lineWidth: styleSheet.hollowIntervalSelectedBorder,\n strokeOpacity: styleSheet.hollowIntervalSelectedBorderOpacity\n },\n inactive: {\n stroke: styleSheet.hollowIntervalInactiveBorderColor,\n lineWidth: styleSheet.hollowIntervalInactiveBorder,\n strokeOpacity: styleSheet.hollowIntervalInactiveBorderOpacity\n }\n },\n line: {\n default: {\n stroke: styleSheet.lineBorderColor,\n lineWidth: styleSheet.lineBorder,\n strokeOpacity: styleSheet.lineBorderOpacity,\n fill: null,\n lineAppendWidth: 10,\n lineCap: 'round',\n lineJoin: 'round'\n },\n active: {\n lineWidth: styleSheet.lineActiveBorder\n },\n selected: {\n lineWidth: styleSheet.lineSelectedBorder\n },\n inactive: {\n strokeOpacity: styleSheet.lineInactiveBorderOpacity\n }\n }\n };\n var axisStyles = createAxisStyles(styleSheet);\n var legendStyles = createLegendStyles(styleSheet);\n return {\n background: styleSheet.backgroundColor,\n defaultColor: styleSheet.brandColor,\n subColor: styleSheet.subColor,\n semanticRed: styleSheet.paletteSemanticRed,\n semanticGreen: styleSheet.paletteSemanticGreen,\n padding: 'auto',\n fontFamily: styleSheet.fontFamily,\n // 兼容Theme配置\n /** 一般柱状图宽度占比,geometry中已添加默认值,为了geometry配置生效默认值为null */\n columnWidthRatio: 1 / 2,\n /** 柱状图最大宽度 */\n maxColumnWidth: null,\n /** 柱状图最小宽度 */\n minColumnWidth: null,\n /** 玫瑰图占比 */\n roseWidthRatio: 0.9999999,\n /** 多层饼图/环图占比 */\n multiplePieWidthRatio: 1 / 1.3,\n colors10: styleSheet.paletteQualitative10,\n colors20: styleSheet.paletteQualitative20,\n sequenceColors: styleSheet.paletteSequence,\n shapes: {\n point: ['hollow-circle', 'hollow-square', 'hollow-bowtie', 'hollow-diamond', 'hollow-hexagon', 'hollow-triangle', 'hollow-triangle-down', 'circle', 'square', 'bowtie', 'diamond', 'hexagon', 'triangle', 'triangle-down', 'cross', 'tick', 'plus', 'hyphen', 'line'],\n line: ['line', 'dash', 'dot', 'smooth'],\n area: ['area', 'smooth', 'line', 'smooth-line'],\n interval: ['rect', 'hollow-rect', 'line', 'tick']\n },\n sizes: [1, 10],\n geometries: {\n interval: {\n rect: {\n default: {\n style: shapeStyles.interval.default\n },\n active: {\n style: shapeStyles.interval.active\n },\n inactive: {\n style: shapeStyles.interval.inactive\n },\n selected: {\n style: function style(element) {\n var coordinate = element.geometry.coordinate;\n if (coordinate.isPolar && coordinate.isTransposed) {\n var _a = getAngle(element.getModel(), coordinate),\n startAngle = _a.startAngle,\n endAngle = _a.endAngle;\n var middleAngle = (startAngle + endAngle) / 2;\n var r = 7.5;\n var x = r * Math.cos(middleAngle);\n var y = r * Math.sin(middleAngle);\n return {\n matrix: ext.transform(null, [['t', x, y]])\n };\n }\n return shapeStyles.interval.selected;\n }\n }\n },\n 'hollow-rect': {\n default: {\n style: shapeStyles.hollowInterval.default\n },\n active: {\n style: shapeStyles.hollowInterval.active\n },\n inactive: {\n style: shapeStyles.hollowInterval.inactive\n },\n selected: {\n style: shapeStyles.hollowInterval.selected\n }\n },\n line: {\n default: {\n style: shapeStyles.hollowInterval.default\n },\n active: {\n style: shapeStyles.hollowInterval.active\n },\n inactive: {\n style: shapeStyles.hollowInterval.inactive\n },\n selected: {\n style: shapeStyles.hollowInterval.selected\n }\n },\n tick: {\n default: {\n style: shapeStyles.hollowInterval.default\n },\n active: {\n style: shapeStyles.hollowInterval.active\n },\n inactive: {\n style: shapeStyles.hollowInterval.inactive\n },\n selected: {\n style: shapeStyles.hollowInterval.selected\n }\n },\n funnel: {\n default: {\n style: shapeStyles.interval.default\n },\n active: {\n style: shapeStyles.interval.active\n },\n inactive: {\n style: shapeStyles.interval.inactive\n },\n selected: {\n style: shapeStyles.interval.selected\n }\n },\n pyramid: {\n default: {\n style: shapeStyles.interval.default\n },\n active: {\n style: shapeStyles.interval.active\n },\n inactive: {\n style: shapeStyles.interval.inactive\n },\n selected: {\n style: shapeStyles.interval.selected\n }\n }\n },\n line: {\n line: {\n default: {\n style: shapeStyles.line.default\n },\n active: {\n style: shapeStyles.line.active\n },\n inactive: {\n style: shapeStyles.line.inactive\n },\n selected: {\n style: shapeStyles.line.selected\n }\n },\n dot: {\n default: {\n style: __assign(__assign({}, shapeStyles.line.default), {\n lineCap: null,\n lineDash: [1, 1]\n })\n },\n active: {\n style: __assign(__assign({}, shapeStyles.line.active), {\n lineCap: null,\n lineDash: [1, 1]\n })\n },\n inactive: {\n style: __assign(__assign({}, shapeStyles.line.inactive), {\n lineCap: null,\n lineDash: [1, 1]\n })\n },\n selected: {\n style: __assign(__assign({}, shapeStyles.line.selected), {\n lineCap: null,\n lineDash: [1, 1]\n })\n }\n },\n dash: {\n default: {\n style: __assign(__assign({}, shapeStyles.line.default), {\n lineCap: null,\n lineDash: [5.5, 1]\n })\n },\n active: {\n style: __assign(__assign({}, shapeStyles.line.active), {\n lineCap: null,\n lineDash: [5.5, 1]\n })\n },\n inactive: {\n style: __assign(__assign({}, shapeStyles.line.inactive), {\n lineCap: null,\n lineDash: [5.5, 1]\n })\n },\n selected: {\n style: __assign(__assign({}, shapeStyles.line.selected), {\n lineCap: null,\n lineDash: [5.5, 1]\n })\n }\n },\n smooth: {\n default: {\n style: shapeStyles.line.default\n },\n active: {\n style: shapeStyles.line.active\n },\n inactive: {\n style: shapeStyles.line.inactive\n },\n selected: {\n style: shapeStyles.line.selected\n }\n },\n hv: {\n default: {\n style: shapeStyles.line.default\n },\n active: {\n style: shapeStyles.line.active\n },\n inactive: {\n style: shapeStyles.line.inactive\n },\n selected: {\n style: shapeStyles.line.selected\n }\n },\n vh: {\n default: {\n style: shapeStyles.line.default\n },\n active: {\n style: shapeStyles.line.active\n },\n inactive: {\n style: shapeStyles.line.inactive\n },\n selected: {\n style: shapeStyles.line.selected\n }\n },\n hvh: {\n default: {\n style: shapeStyles.line.default\n },\n active: {\n style: shapeStyles.line.active\n },\n inactive: {\n style: shapeStyles.line.inactive\n },\n selected: {\n style: shapeStyles.line.selected\n }\n },\n vhv: {\n default: {\n style: shapeStyles.line.default\n },\n active: {\n style: shapeStyles.line.active\n },\n inactive: {\n style: shapeStyles.line.inactive\n },\n selected: {\n style: shapeStyles.line.selected\n }\n }\n },\n polygon: {\n polygon: {\n default: {\n style: shapeStyles.interval.default\n },\n active: {\n style: shapeStyles.interval.active\n },\n inactive: {\n style: shapeStyles.interval.inactive\n },\n selected: {\n style: shapeStyles.interval.selected\n }\n }\n },\n point: {\n circle: {\n default: {\n style: shapeStyles.point.default\n },\n active: {\n style: shapeStyles.point.active\n },\n inactive: {\n style: shapeStyles.point.inactive\n },\n selected: {\n style: shapeStyles.point.selected\n }\n },\n square: {\n default: {\n style: shapeStyles.point.default\n },\n active: {\n style: shapeStyles.point.active\n },\n inactive: {\n style: shapeStyles.point.inactive\n },\n selected: {\n style: shapeStyles.point.selected\n }\n },\n bowtie: {\n default: {\n style: shapeStyles.point.default\n },\n active: {\n style: shapeStyles.point.active\n },\n inactive: {\n style: shapeStyles.point.inactive\n },\n selected: {\n style: shapeStyles.point.selected\n }\n },\n diamond: {\n default: {\n style: shapeStyles.point.default\n },\n active: {\n style: shapeStyles.point.active\n },\n inactive: {\n style: shapeStyles.point.inactive\n },\n selected: {\n style: shapeStyles.point.selected\n }\n },\n hexagon: {\n default: {\n style: shapeStyles.point.default\n },\n active: {\n style: shapeStyles.point.active\n },\n inactive: {\n style: shapeStyles.point.inactive\n },\n selected: {\n style: shapeStyles.point.selected\n }\n },\n triangle: {\n default: {\n style: shapeStyles.point.default\n },\n active: {\n style: shapeStyles.point.active\n },\n inactive: {\n style: shapeStyles.point.inactive\n },\n selected: {\n style: shapeStyles.point.selected\n }\n },\n 'triangle-down': {\n default: {\n style: shapeStyles.point.default\n },\n active: {\n style: shapeStyles.point.active\n },\n inactive: {\n style: shapeStyles.point.inactive\n },\n selected: {\n style: shapeStyles.point.selected\n }\n },\n 'hollow-circle': {\n default: {\n style: shapeStyles.hollowPoint.default\n },\n active: {\n style: shapeStyles.hollowPoint.active\n },\n inactive: {\n style: shapeStyles.hollowPoint.inactive\n },\n selected: {\n style: shapeStyles.hollowPoint.selected\n }\n },\n 'hollow-square': {\n default: {\n style: shapeStyles.hollowPoint.default\n },\n active: {\n style: shapeStyles.hollowPoint.active\n },\n inactive: {\n style: shapeStyles.hollowPoint.inactive\n },\n selected: {\n style: shapeStyles.hollowPoint.selected\n }\n },\n 'hollow-bowtie': {\n default: {\n style: shapeStyles.hollowPoint.default\n },\n active: {\n style: shapeStyles.hollowPoint.active\n },\n inactive: {\n style: shapeStyles.hollowPoint.inactive\n },\n selected: {\n style: shapeStyles.hollowPoint.selected\n }\n },\n 'hollow-diamond': {\n default: {\n style: shapeStyles.hollowPoint.default\n },\n active: {\n style: shapeStyles.hollowPoint.active\n },\n inactive: {\n style: shapeStyles.hollowPoint.inactive\n },\n selected: {\n style: shapeStyles.hollowPoint.selected\n }\n },\n 'hollow-hexagon': {\n default: {\n style: shapeStyles.hollowPoint.default\n },\n active: {\n style: shapeStyles.hollowPoint.active\n },\n inactive: {\n style: shapeStyles.hollowPoint.inactive\n },\n selected: {\n style: shapeStyles.hollowPoint.selected\n }\n },\n 'hollow-triangle': {\n default: {\n style: shapeStyles.hollowPoint.default\n },\n active: {\n style: shapeStyles.hollowPoint.active\n },\n inactive: {\n style: shapeStyles.hollowPoint.inactive\n },\n selected: {\n style: shapeStyles.hollowPoint.selected\n }\n },\n 'hollow-triangle-down': {\n default: {\n style: shapeStyles.hollowPoint.default\n },\n active: {\n style: shapeStyles.hollowPoint.active\n },\n inactive: {\n style: shapeStyles.hollowPoint.inactive\n },\n selected: {\n style: shapeStyles.hollowPoint.selected\n }\n },\n cross: {\n default: {\n style: shapeStyles.hollowPoint.default\n },\n active: {\n style: shapeStyles.hollowPoint.active\n },\n inactive: {\n style: shapeStyles.hollowPoint.inactive\n },\n selected: {\n style: shapeStyles.hollowPoint.selected\n }\n },\n tick: {\n default: {\n style: shapeStyles.hollowPoint.default\n },\n active: {\n style: shapeStyles.hollowPoint.active\n },\n inactive: {\n style: shapeStyles.hollowPoint.inactive\n },\n selected: {\n style: shapeStyles.hollowPoint.selected\n }\n },\n plus: {\n default: {\n style: shapeStyles.hollowPoint.default\n },\n active: {\n style: shapeStyles.hollowPoint.active\n },\n inactive: {\n style: shapeStyles.hollowPoint.inactive\n },\n selected: {\n style: shapeStyles.hollowPoint.selected\n }\n },\n hyphen: {\n default: {\n style: shapeStyles.hollowPoint.default\n },\n active: {\n style: shapeStyles.hollowPoint.active\n },\n inactive: {\n style: shapeStyles.hollowPoint.inactive\n },\n selected: {\n style: shapeStyles.hollowPoint.selected\n }\n },\n line: {\n default: {\n style: shapeStyles.hollowPoint.default\n },\n active: {\n style: shapeStyles.hollowPoint.active\n },\n inactive: {\n style: shapeStyles.hollowPoint.inactive\n },\n selected: {\n style: shapeStyles.hollowPoint.selected\n }\n }\n },\n area: {\n area: {\n default: {\n style: shapeStyles.area.default\n },\n active: {\n style: shapeStyles.area.active\n },\n inactive: {\n style: shapeStyles.area.inactive\n },\n selected: {\n style: shapeStyles.area.selected\n }\n },\n smooth: {\n default: {\n style: shapeStyles.area.default\n },\n active: {\n style: shapeStyles.area.active\n },\n inactive: {\n style: shapeStyles.area.inactive\n },\n selected: {\n style: shapeStyles.area.selected\n }\n },\n line: {\n default: {\n style: shapeStyles.hollowArea.default\n },\n active: {\n style: shapeStyles.hollowArea.active\n },\n inactive: {\n style: shapeStyles.hollowArea.inactive\n },\n selected: {\n style: shapeStyles.hollowArea.selected\n }\n },\n 'smooth-line': {\n default: {\n style: shapeStyles.hollowArea.default\n },\n active: {\n style: shapeStyles.hollowArea.active\n },\n inactive: {\n style: shapeStyles.hollowArea.inactive\n },\n selected: {\n style: shapeStyles.hollowArea.selected\n }\n }\n },\n schema: {\n candle: {\n default: {\n style: shapeStyles.hollowInterval.default\n },\n active: {\n style: shapeStyles.hollowInterval.active\n },\n inactive: {\n style: shapeStyles.hollowInterval.inactive\n },\n selected: {\n style: shapeStyles.hollowInterval.selected\n }\n },\n box: {\n default: {\n style: shapeStyles.hollowInterval.default\n },\n active: {\n style: shapeStyles.hollowInterval.active\n },\n inactive: {\n style: shapeStyles.hollowInterval.inactive\n },\n selected: {\n style: shapeStyles.hollowInterval.selected\n }\n }\n },\n edge: {\n line: {\n default: {\n style: shapeStyles.line.default\n },\n active: {\n style: shapeStyles.line.active\n },\n inactive: {\n style: shapeStyles.line.inactive\n },\n selected: {\n style: shapeStyles.line.selected\n }\n },\n vhv: {\n default: {\n style: shapeStyles.line.default\n },\n active: {\n style: shapeStyles.line.active\n },\n inactive: {\n style: shapeStyles.line.inactive\n },\n selected: {\n style: shapeStyles.line.selected\n }\n },\n smooth: {\n default: {\n style: shapeStyles.line.default\n },\n active: {\n style: shapeStyles.line.active\n },\n inactive: {\n style: shapeStyles.line.inactive\n },\n selected: {\n style: shapeStyles.line.selected\n }\n },\n arc: {\n default: {\n style: shapeStyles.line.default\n },\n active: {\n style: shapeStyles.line.active\n },\n inactive: {\n style: shapeStyles.line.inactive\n },\n selected: {\n style: shapeStyles.line.selected\n }\n }\n },\n violin: {\n violin: {\n default: {\n style: shapeStyles.line.default\n },\n active: {\n style: shapeStyles.line.active\n },\n inactive: {\n style: shapeStyles.line.inactive\n },\n selected: {\n style: shapeStyles.line.selected\n }\n },\n smooth: {\n default: {\n style: shapeStyles.line.default\n },\n active: {\n style: shapeStyles.line.active\n },\n inactive: {\n style: shapeStyles.line.inactive\n },\n selected: {\n style: shapeStyles.line.selected\n }\n },\n hollow: {\n default: {\n style: shapeStyles.hollowArea.default\n },\n active: {\n style: shapeStyles.hollowArea.active\n },\n inactive: {\n style: shapeStyles.hollowArea.inactive\n },\n selected: {\n style: shapeStyles.hollowArea.selected\n }\n },\n 'hollow-smooth': {\n default: {\n style: shapeStyles.hollowArea.default\n },\n active: {\n style: shapeStyles.hollowArea.active\n },\n inactive: {\n style: shapeStyles.hollowArea.inactive\n },\n selected: {\n style: shapeStyles.hollowArea.selected\n }\n }\n }\n },\n components: {\n axis: {\n common: axisStyles,\n top: {\n position: 'top',\n grid: null,\n title: null,\n verticalLimitLength: 1 / 2\n },\n bottom: {\n position: 'bottom',\n grid: null,\n title: null,\n verticalLimitLength: 1 / 2\n },\n left: {\n position: 'left',\n title: null,\n line: null,\n tickLine: null,\n verticalLimitLength: 1 / 3\n },\n right: {\n position: 'right',\n title: null,\n line: null,\n tickLine: null,\n verticalLimitLength: 1 / 3\n },\n circle: {\n title: null,\n grid: deepMix({}, axisStyles.grid, {\n line: {\n type: 'line'\n }\n })\n },\n radius: {\n title: null,\n grid: deepMix({}, axisStyles.grid, {\n line: {\n type: 'circle'\n }\n })\n }\n },\n legend: {\n common: legendStyles,\n right: {\n layout: 'vertical',\n padding: styleSheet.legendVerticalPadding\n },\n left: {\n layout: 'vertical',\n padding: styleSheet.legendVerticalPadding\n },\n top: {\n layout: 'horizontal',\n padding: styleSheet.legendHorizontalPadding\n },\n bottom: {\n layout: 'horizontal',\n padding: styleSheet.legendHorizontalPadding\n },\n continuous: {\n title: null,\n background: null,\n track: {},\n rail: {\n type: 'color',\n size: styleSheet.sliderRailHeight,\n defaultLength: styleSheet.sliderRailWidth,\n style: {\n fill: styleSheet.sliderRailFillColor,\n stroke: styleSheet.sliderRailBorderColor,\n lineWidth: styleSheet.sliderRailBorder\n }\n },\n label: {\n align: 'rail',\n spacing: 4,\n formatter: null,\n style: {\n fill: styleSheet.sliderLabelTextFillColor,\n fontSize: styleSheet.sliderLabelTextFontSize,\n lineHeight: styleSheet.sliderLabelTextLineHeight,\n textBaseline: 'middle',\n fontFamily: styleSheet.fontFamily\n }\n },\n handler: {\n size: styleSheet.sliderHandlerWidth,\n style: {\n fill: styleSheet.sliderHandlerFillColor,\n stroke: styleSheet.sliderHandlerBorderColor\n }\n },\n slidable: true,\n padding: legendStyles.padding\n }\n },\n tooltip: {\n showContent: true,\n follow: true,\n showCrosshairs: false,\n showMarkers: true,\n shared: false,\n enterable: false,\n position: 'auto',\n marker: {\n symbol: 'circle',\n stroke: '#fff',\n shadowBlur: 10,\n shadowOffsetX: 0,\n shadowOffsetY: 0,\n shadowColor: 'rgba(0,0,0,0.09)',\n lineWidth: 2,\n r: 4\n },\n crosshairs: {\n line: {\n style: {\n stroke: styleSheet.tooltipCrosshairsBorderColor,\n lineWidth: styleSheet.tooltipCrosshairsBorder\n }\n },\n text: null,\n textBackground: {\n padding: 2,\n style: {\n fill: 'rgba(0, 0, 0, 0.25)',\n lineWidth: 0,\n stroke: null\n }\n },\n follow: false\n },\n // tooltip dom 样式\n domStyles: (_a = {}, _a[\"\".concat(TOOLTIP_CSS_CONST.CONTAINER_CLASS)] = {\n position: 'absolute',\n visibility: 'hidden',\n zIndex: 8,\n transition: 'left 0.4s cubic-bezier(0.23, 1, 0.32, 1) 0s, top 0.4s cubic-bezier(0.23, 1, 0.32, 1) 0s',\n backgroundColor: styleSheet.tooltipContainerFillColor,\n opacity: styleSheet.tooltipContainerFillOpacity,\n boxShadow: styleSheet.tooltipContainerShadow,\n borderRadius: \"\".concat(styleSheet.tooltipContainerBorderRadius, \"px\"),\n color: styleSheet.tooltipTextFillColor,\n fontSize: \"\".concat(styleSheet.tooltipTextFontSize, \"px\"),\n fontFamily: styleSheet.fontFamily,\n lineHeight: \"\".concat(styleSheet.tooltipTextLineHeight, \"px\"),\n padding: '0 12px 0 12px'\n }, _a[\"\".concat(TOOLTIP_CSS_CONST.TITLE_CLASS)] = {\n marginBottom: '12px',\n marginTop: '12px'\n }, _a[\"\".concat(TOOLTIP_CSS_CONST.LIST_CLASS)] = {\n margin: 0,\n listStyleType: 'none',\n padding: 0\n }, _a[\"\".concat(TOOLTIP_CSS_CONST.LIST_ITEM_CLASS)] = {\n listStyleType: 'none',\n padding: 0,\n marginBottom: '12px',\n marginTop: '12px',\n marginLeft: 0,\n marginRight: 0\n }, _a[\"\".concat(TOOLTIP_CSS_CONST.MARKER_CLASS)] = {\n width: '8px',\n height: '8px',\n borderRadius: '50%',\n display: 'inline-block',\n marginRight: '8px'\n }, _a[\"\".concat(TOOLTIP_CSS_CONST.VALUE_CLASS)] = {\n display: 'inline-block',\n float: 'right',\n marginLeft: '30px'\n }, _a)\n },\n annotation: {\n arc: {\n style: {\n stroke: styleSheet.annotationArcBorderColor,\n lineWidth: styleSheet.annotationArcBorder\n },\n animate: true\n },\n line: {\n style: {\n stroke: styleSheet.annotationLineBorderColor,\n lineDash: styleSheet.annotationLineDash,\n lineWidth: styleSheet.annotationLineBorder\n },\n text: {\n position: 'start',\n autoRotate: true,\n style: {\n fill: styleSheet.annotationTextFillColor,\n stroke: styleSheet.annotationTextBorderColor,\n lineWidth: styleSheet.annotationTextBorder,\n fontSize: styleSheet.annotationTextFontSize,\n textAlign: 'start',\n fontFamily: styleSheet.fontFamily,\n textBaseline: 'bottom'\n }\n },\n animate: true\n },\n text: {\n style: {\n fill: styleSheet.annotationTextFillColor,\n stroke: styleSheet.annotationTextBorderColor,\n lineWidth: styleSheet.annotationTextBorder,\n fontSize: styleSheet.annotationTextFontSize,\n textBaseline: 'middle',\n textAlign: 'start',\n fontFamily: styleSheet.fontFamily\n },\n animate: true\n },\n region: {\n top: false,\n style: {\n lineWidth: styleSheet.annotationRegionBorder,\n stroke: styleSheet.annotationRegionBorderColor,\n fill: styleSheet.annotationRegionFillColor,\n fillOpacity: styleSheet.annotationRegionFillOpacity\n },\n animate: true\n },\n image: {\n top: false,\n animate: true\n },\n dataMarker: {\n top: true,\n point: {\n style: {\n r: 3,\n stroke: styleSheet.brandColor,\n lineWidth: 2\n }\n },\n line: {\n style: {\n stroke: styleSheet.annotationLineBorderColor,\n lineWidth: styleSheet.annotationLineBorder\n },\n length: styleSheet.annotationDataMarkerLineLength\n },\n text: {\n style: {\n textAlign: 'start',\n fill: styleSheet.annotationTextFillColor,\n stroke: styleSheet.annotationTextBorderColor,\n lineWidth: styleSheet.annotationTextBorder,\n fontSize: styleSheet.annotationTextFontSize,\n fontFamily: styleSheet.fontFamily\n }\n },\n direction: 'upward',\n autoAdjust: true,\n animate: true\n },\n dataRegion: {\n style: {\n region: {\n fill: styleSheet.annotationRegionFillColor,\n fillOpacity: styleSheet.annotationRegionFillOpacity\n },\n text: {\n textAlign: 'center',\n textBaseline: 'bottom',\n fill: styleSheet.annotationTextFillColor,\n stroke: styleSheet.annotationTextBorderColor,\n lineWidth: styleSheet.annotationTextBorder,\n fontSize: styleSheet.annotationTextFontSize,\n fontFamily: styleSheet.fontFamily\n }\n },\n animate: true\n }\n },\n slider: {\n common: {\n padding: [8, 8, 8, 8],\n backgroundStyle: {\n fill: styleSheet.cSliderBackgroundFillColor,\n opacity: styleSheet.cSliderBackgroundFillOpacity\n },\n foregroundStyle: {\n fill: styleSheet.cSliderForegroundFillColor,\n opacity: styleSheet.cSliderForegroundFillOpacity\n },\n handlerStyle: {\n width: styleSheet.cSliderHandlerWidth,\n height: styleSheet.cSliderHandlerHeight,\n fill: styleSheet.cSliderHandlerFillColor,\n opacity: styleSheet.cSliderHandlerFillOpacity,\n stroke: styleSheet.cSliderHandlerBorderColor,\n lineWidth: styleSheet.cSliderHandlerBorder,\n radius: styleSheet.cSliderHandlerBorderRadius,\n // 高亮的颜色\n highLightFill: styleSheet.cSliderHandlerHighlightFillColor\n },\n textStyle: {\n fill: styleSheet.cSliderTextFillColor,\n opacity: styleSheet.cSliderTextFillOpacity,\n fontSize: styleSheet.cSliderTextFontSize,\n lineHeight: styleSheet.cSliderTextLineHeight,\n fontWeight: styleSheet.cSliderTextFontWeight,\n stroke: styleSheet.cSliderTextBorderColor,\n lineWidth: styleSheet.cSliderTextBorder\n }\n }\n },\n scrollbar: {\n common: {\n padding: [8, 8, 8, 8]\n },\n default: {\n style: {\n trackColor: styleSheet.scrollbarTrackFillColor,\n thumbColor: styleSheet.scrollbarThumbFillColor\n }\n },\n hover: {\n style: {\n thumbColor: styleSheet.scrollbarThumbHighlightFillColor\n }\n }\n }\n },\n labels: {\n offset: 12,\n style: {\n fill: styleSheet.labelFillColor,\n fontSize: styleSheet.labelFontSize,\n fontFamily: styleSheet.fontFamily,\n stroke: styleSheet.labelBorderColor,\n lineWidth: styleSheet.labelBorder\n },\n fillColorDark: styleSheet.labelFillColorDark,\n fillColorLight: styleSheet.labelFillColorLight,\n autoRotate: true\n },\n innerLabels: {\n style: {\n fill: styleSheet.innerLabelFillColor,\n fontSize: styleSheet.innerLabelFontSize,\n fontFamily: styleSheet.fontFamily,\n stroke: styleSheet.innerLabelBorderColor,\n lineWidth: styleSheet.innerLabelBorder\n },\n autoRotate: true\n },\n overflowLabels: {\n style: {\n fill: styleSheet.overflowLabelFillColor,\n fontSize: styleSheet.overflowLabelFontSize,\n fontFamily: styleSheet.fontFamily,\n stroke: styleSheet.overflowLabelBorderColor,\n lineWidth: styleSheet.overflowLabelBorder\n }\n },\n pieLabels: {\n labelHeight: 14,\n offset: 10,\n labelLine: {\n style: {\n lineWidth: styleSheet.labelLineBorder\n }\n },\n autoRotate: true\n }\n };\n}","import { __assign } from \"tslib\";\nvar BLACK_COLORS = {\n 100: '#000',\n 95: '#0D0D0D',\n 85: '#262626',\n 65: '#595959',\n 45: '#8C8C8C',\n 25: '#BFBFBF',\n 15: '#D9D9D9',\n 6: '#F0F0F0'\n};\nvar WHITE_COLORS = {\n 100: '#FFFFFF',\n 95: '#F2F2F2',\n 85: '#D9D9D9',\n 65: '#A6A6A6',\n 45: '#737373',\n 25: '#404040',\n 15: '#262626',\n 6: '#0F0F0F'\n};\nvar QUALITATIVE_10 = ['#5B8FF9', '#5AD8A6', '#5D7092', '#F6BD16', '#6F5EF9', '#6DC8EC', '#945FB9', '#FF9845', '#1E9493', '#FF99C3'];\nvar QUALITATIVE_20 = ['#5B8FF9', '#CDDDFD', '#5AD8A6', '#CDF3E4', '#5D7092', '#CED4DE', '#F6BD16', '#FCEBB9', '#6F5EF9', '#D3CEFD', '#6DC8EC', '#D3EEF9', '#945FB9', '#DECFEA', '#FF9845', '#FFE0C7', '#1E9493', '#BBDEDE', '#FF99C3', '#FFE0ED'];\n/** 单色顺序色板 */\nvar SINGLE_SEQUENCE = ['#B8E1FF', '#9AC5FF', '#7DAAFF', '#5B8FF9', '#3D76DD', '#085EC0', '#0047A5', '#00318A', '#001D70'];\nexport var createLightStyleSheet = function createLightStyleSheet(cfg) {\n if (cfg === void 0) {\n cfg = {};\n }\n var _a = cfg.paletteQualitative10,\n paletteQualitative10 = _a === void 0 ? QUALITATIVE_10 : _a,\n _b = cfg.paletteQualitative20,\n paletteQualitative20 = _b === void 0 ? QUALITATIVE_20 : _b;\n var _c = cfg.brandColor,\n brandColor = _c === void 0 ? paletteQualitative10[0] : _c;\n var token = {\n /** 图表背景色 */\n backgroundColor: 'transparent',\n /** 主题色 */\n brandColor: brandColor,\n /** 图表辅助色 */\n subColor: 'rgba(0,0,0,0.05)',\n /** 分类色板 1,在数据量小于等于 10 时使用 */\n paletteQualitative10: paletteQualitative10,\n /** 分类色板 2,在数据量大于 10 时使用 */\n paletteQualitative20: paletteQualitative20,\n /** 语义色 */\n paletteSemanticRed: '#F4664A',\n /** 语义色 */\n paletteSemanticGreen: '#30BF78',\n /** 语义色 */\n paletteSemanticYellow: '#FAAD14',\n /** (单色)顺序色板 */\n paletteSequence: SINGLE_SEQUENCE,\n /** 字体 */\n fontFamily: \"\\\"Segoe UI\\\", Roboto, \\\"Helvetica Neue\\\", Arial,\\n \\\"Noto Sans\\\", sans-serif, \\\"Apple Color Emoji\\\", \\\"Segoe UI Emoji\\\", \\\"Segoe UI Symbol\\\",\\n \\\"Noto Color Emoji\\\"\",\n // -------------------- 坐标轴 --------------------\n /** 坐标轴线颜色 */\n axisLineBorderColor: BLACK_COLORS[25],\n /** 坐标轴线粗细 */\n axisLineBorder: 1,\n /** 坐标轴线 lineDash 设置 */\n axisLineDash: null,\n /** 坐标轴标题颜色 */\n axisTitleTextFillColor: BLACK_COLORS[65],\n /** 坐标轴标题文本字体大小 */\n axisTitleTextFontSize: 12,\n /** 坐标轴标题文本行高 */\n axisTitleTextLineHeight: 12,\n /** 坐标轴标题文本字体粗细 */\n axisTitleTextFontWeight: 'normal',\n /** 坐标轴标题距离坐标轴文本的间距 */\n axisTitleSpacing: 12,\n /** 坐标轴标题详细说明icon颜色 */\n axisDescriptionIconFillColor: WHITE_COLORS[85],\n /** 坐标轴刻度线颜色 */\n axisTickLineBorderColor: BLACK_COLORS[25],\n /** 坐标轴刻度线长度 */\n axisTickLineLength: 4,\n /** 坐标轴刻度线粗细 */\n axisTickLineBorder: 1,\n /** 坐标轴次刻度线颜色 */\n axisSubTickLineBorderColor: BLACK_COLORS[15],\n /** 坐标轴次刻度线长度 */\n axisSubTickLineLength: 2,\n /** 坐标轴次刻度线粗细 */\n axisSubTickLineBorder: 1,\n /** 坐标轴刻度文本颜色 */\n axisLabelFillColor: BLACK_COLORS[45],\n /** 坐标轴刻度文本字体大小 */\n axisLabelFontSize: 12,\n /** 坐标轴刻度文本行高 */\n axisLabelLineHeight: 12,\n /** 坐标轴刻度文本字体粗细 */\n axisLabelFontWeight: 'normal',\n /** 坐标轴刻度文本距离坐标轴线的间距 */\n axisLabelOffset: 8,\n /** 坐标轴网格线颜色 */\n axisGridBorderColor: BLACK_COLORS[15],\n /** 坐标轴网格线粗细 */\n axisGridBorder: 1,\n /** 坐标轴网格线虚线设置 */\n axisGridLineDash: null,\n // -------------------- 图例 --------------------\n /** 图例标题颜色 */\n legendTitleTextFillColor: BLACK_COLORS[45],\n /** 图例标题文本字体大小 */\n legendTitleTextFontSize: 12,\n /** 图例标题文本行高 */\n legendTitleTextLineHeight: 21,\n /** 图例标题文本字体粗细 */\n legendTitleTextFontWeight: 'normal',\n /** 图例 marker 颜色 */\n legendMarkerColor: brandColor,\n /** 图例 marker 距离图例文本的间距 */\n legendMarkerSpacing: 8,\n /** 图例 marker 默认半径大小 */\n legendMarkerSize: 4,\n /** 图例 'circle' marker 半径 */\n legendCircleMarkerSize: 4,\n /** 图例 'square' marker 半径 */\n legendSquareMarkerSize: 4,\n /** 图例 'line' marker 半径 */\n legendLineMarkerSize: 5,\n /** 图例项文本颜色 */\n legendItemNameFillColor: BLACK_COLORS[65],\n /** 图例项文本字体大小 */\n legendItemNameFontSize: 12,\n /** 图例项文本行高 */\n legendItemNameLineHeight: 12,\n /** 图例项粗细 */\n legendItemNameFontWeight: 'normal',\n /** 图例项之间的水平间距 */\n legendItemSpacing: 24,\n /** 图例项垂直方向的间隔 */\n legendItemMarginBottom: 12,\n /** 图例与图表绘图区域的偏移距离 */\n legendPadding: [8, 8, 8, 8],\n /** 水平布局的图例与绘图区域偏移距离 */\n legendHorizontalPadding: [8, 0, 8, 0],\n /** 垂直布局的图例与绘图区域偏移距离 */\n legendVerticalPadding: [0, 8, 0, 8],\n // 图例分页器\n /** 图例分页器 marker 大小 */\n legendPageNavigatorMarkerSize: 12,\n /** 图例分页器 marker 非激活状态填充色 */\n legendPageNavigatorMarkerInactiveFillColor: BLACK_COLORS[100],\n /** 图例分页器 marker 非激活状态填充色透明度 */\n legendPageNavigatorMarkerInactiveFillOpacity: 0.45,\n /** 图例分页器 marker 填充色 */\n legendPageNavigatorMarkerFillColor: BLACK_COLORS[100],\n /** 图例分页器 marker 填充色透明度 */\n legendPageNavigatorMarkerFillOpacity: 1,\n /** 图例分页器文本颜色 */\n legendPageNavigatorTextFillColor: BLACK_COLORS[45],\n /** 图例分页器文本字体大小 */\n legendPageNavigatorTextFontSize: 12,\n /** 连续图例滑块填充色 */\n sliderRailFillColor: BLACK_COLORS[15],\n /** 连续图例滑块边框粗细 */\n sliderRailBorder: 0,\n /** 连续图例滑块边框颜色 */\n sliderRailBorderColor: null,\n /** 连续图例滑块宽度 */\n sliderRailWidth: 100,\n /** 连续图例滑块高度 */\n sliderRailHeight: 12,\n /** 连续图例文本颜色 */\n sliderLabelTextFillColor: BLACK_COLORS[45],\n /** 连续图例文本字体大小 */\n sliderLabelTextFontSize: 12,\n /** 连续图例文本行高 */\n sliderLabelTextLineHeight: 12,\n /** 连续图例文本字体粗细 */\n sliderLabelTextFontWeight: 'normal',\n /** 连续图例滑块颜色 */\n sliderHandlerFillColor: BLACK_COLORS[6],\n /** 连续图例滑块宽度 */\n sliderHandlerWidth: 10,\n /** 连续图例滑块高度 */\n sliderHandlerHeight: 14,\n /** 连续图例滑块边框粗细 */\n sliderHandlerBorder: 1,\n /** 连续图例滑块边框颜色 */\n sliderHandlerBorderColor: BLACK_COLORS[25],\n // -------------------- Annotation,图形标注 --------------------\n /** arc 图形标注描边颜色 */\n annotationArcBorderColor: BLACK_COLORS[15],\n /** arc 图形标注粗细 */\n annotationArcBorder: 1,\n /** line 图形标注颜色 */\n annotationLineBorderColor: BLACK_COLORS[25],\n /** line 图形标注粗细 */\n annotationLineBorder: 1,\n /** lube 图形标注的虚线间隔 */\n annotationLineDash: null,\n /** text 图形标注文本颜色 */\n annotationTextFillColor: BLACK_COLORS[65],\n /** text 图形标注文本字体大小 */\n annotationTextFontSize: 12,\n /** text 图形标注文本行高 */\n annotationTextLineHeight: 12,\n /** text 图形标注文本字体粗细 */\n annotationTextFontWeight: 'normal',\n /** text 图形标注文本边框颜色 */\n annotationTextBorderColor: null,\n /** text 图形标注文本边框粗细 */\n annotationTextBorder: 0,\n /** region 图形标注填充颜色 */\n annotationRegionFillColor: BLACK_COLORS[100],\n /** region 图形标注填充颜色透明色 */\n annotationRegionFillOpacity: 0.06,\n /** region 图形标注描边粗细 */\n annotationRegionBorder: 0,\n /** region 图形标注描边颜色 */\n annotationRegionBorderColor: null,\n /** dataMarker 图形标注线的长度 */\n annotationDataMarkerLineLength: 16,\n // -------------------- Tooltip --------------------\n /** tooltip crosshairs 辅助线颜色 */\n tooltipCrosshairsBorderColor: BLACK_COLORS[25],\n /** tooltip crosshairs 辅助线粗细 */\n tooltipCrosshairsBorder: 1,\n /** tooltip crosshairs 辅助线虚线间隔 */\n tooltipCrosshairsLineDash: null,\n /** tooltip 内容框背景色 */\n tooltipContainerFillColor: 'rgb(255, 255, 255)',\n tooltipContainerFillOpacity: 0.95,\n /** tooltip 内容框阴影 */\n tooltipContainerShadow: '0px 0px 10px #aeaeae',\n /** tooltip 内容框圆角 */\n tooltipContainerBorderRadius: 3,\n /** tooltip 文本颜色 */\n tooltipTextFillColor: BLACK_COLORS[65],\n /** tooltip 文本字体大小 */\n tooltipTextFontSize: 12,\n /** tooltip 文本行高 */\n tooltipTextLineHeight: 12,\n /** tooltip 文本字体粗细 */\n tooltipTextFontWeight: 'bold',\n // -------------------- Geometry labels --------------------\n /** Geometry label 文本颜色 */\n labelFillColor: BLACK_COLORS[65],\n labelFillColorDark: '#2c3542',\n labelFillColorLight: '#ffffff',\n /** Geometry label 文本字体大小 */\n labelFontSize: 12,\n /** Geometry label 文本行高 */\n labelLineHeight: 12,\n /** Geometry label 文本字体粗细 */\n labelFontWeight: 'normal',\n /** Geometry label 文本描边颜色 */\n labelBorderColor: null,\n /** Geometry label 文本描边粗细 */\n labelBorder: 0,\n /** Geometry innerLabel 文本颜色 */\n innerLabelFillColor: WHITE_COLORS[100],\n /** Geometry innerLabel 文本字体大小 */\n innerLabelFontSize: 12,\n /** Geometry innerLabel 文本行高 */\n innerLabelLineHeight: 12,\n /** Geometry innerLabel 文本字体粗细 */\n innerLabelFontWeight: 'normal',\n /** Geometry innerLabel 文本描边颜色 */\n innerLabelBorderColor: null,\n /** Geometry innerLabel 文本描边粗细 */\n innerLabelBorder: 0,\n /** Geometry overflowLabel 文本颜色 */\n overflowLabelFillColor: BLACK_COLORS[65],\n /** Geometry overflowLabel 文本字体大小 */\n overflowLabelFontSize: 12,\n /** Geometry overflowLabel 文本行高 */\n overflowLabelLineHeight: 12,\n /** Geometry overflowLabel 文本字体粗细 */\n overflowLabelFontWeight: 'normal',\n /** Geometry overflowLabel 文本描边颜色 */\n overflowLabelBorderColor: WHITE_COLORS[100],\n /** Geometry overflowLabel 文本描边粗细 */\n overflowLabelBorder: 1,\n /** Geometry label 文本连接线粗细 */\n labelLineBorder: 1,\n /** Geometry label 文本连接线颜色 */\n labelLineBorderColor: BLACK_COLORS[25],\n // -------------------- Slider 组件样式--------------------\n /** slider 滑道高度 */\n cSliderRailHieght: 16,\n /** slider 滑道背景色 */\n cSliderBackgroundFillColor: '#416180',\n /** slider 滑道背景色透明度 */\n cSliderBackgroundFillOpacity: 0.05,\n /** slider 滑道前景色 */\n cSliderForegroundFillColor: '#5B8FF9',\n /** slider 滑道前景色透明度 */\n cSliderForegroundFillOpacity: 0.15,\n // slider handlerStyle 手柄样式\n /** slider 手柄高度 */\n cSliderHandlerHeight: 24,\n /** Slider 手柄宽度 */\n cSliderHandlerWidth: 10,\n /** Slider 手柄背景色 */\n cSliderHandlerFillColor: '#F7F7F7',\n /** Slider 手柄背景色透明度 */\n cSliderHandlerFillOpacity: 1,\n /** Slider 手柄高亮背景色 */\n cSliderHandlerHighlightFillColor: '#FFF',\n /** Slider 手柄边框色 */\n cSliderHandlerBorderColor: '#BFBFBF',\n /** Slider 手柄边框粗细 */\n cSliderHandlerBorder: 1,\n /** Slider 手柄边框圆角 */\n cSliderHandlerBorderRadius: 2,\n // slider textStyle 字体标签样式\n /** Slider 字体标签颜色 */\n cSliderTextFillColor: '#000',\n /** Slider 字体标签透明度 */\n cSliderTextFillOpacity: 0.45,\n /** Slider 字体标签大小 */\n cSliderTextFontSize: 12,\n /** Slider 字体标签行高 */\n cSliderTextLineHeight: 12,\n /** Slider 字体标签字重 */\n cSliderTextFontWeight: 'normal',\n /** Slider 字体标签描边色 */\n cSliderTextBorderColor: null,\n /** Slider 字体标签描边粗细 */\n cSliderTextBorder: 0,\n // -------------------- Scrollbar 组件样式--------------------\n /** 滚动条 滚道填充色 */\n scrollbarTrackFillColor: 'rgba(0,0,0,0)',\n /** 滚动条 滑块填充色 */\n scrollbarThumbFillColor: 'rgba(0,0,0,0.15)',\n /** 滚动条 滑块高亮填充色 */\n scrollbarThumbHighlightFillColor: 'rgba(0,0,0,0.2)',\n // -------------------- Geometry 图形样式--------------------\n /** 点图填充颜色 */\n pointFillColor: brandColor,\n /** 点图填充颜色透明度 */\n pointFillOpacity: 0.95,\n /** 点图大小 */\n pointSize: 4,\n /** 点图描边粗细 */\n pointBorder: 1,\n /** 点图描边颜色 */\n pointBorderColor: WHITE_COLORS[100],\n /** 点图描边透明度 */\n pointBorderOpacity: 1,\n /** 点图 active 状态下描边颜色 */\n pointActiveBorderColor: BLACK_COLORS[100],\n /** 点图 selected 状态下描边粗细 */\n pointSelectedBorder: 2,\n /** 点图 selected 状态下描边颜色 */\n pointSelectedBorderColor: BLACK_COLORS[100],\n /** 点图 inactive 状态下填充颜色透明度 */\n pointInactiveFillOpacity: 0.3,\n /** 点图 inactive 状态下描边透明度 */\n pointInactiveBorderOpacity: 0.3,\n /** 空心点图大小 */\n hollowPointSize: 4,\n /** 空心点图描边粗细 */\n hollowPointBorder: 1,\n /** 空心点图描边颜色 */\n hollowPointBorderColor: brandColor,\n /** 空心点图描边透明度 */\n hollowPointBorderOpacity: 0.95,\n hollowPointFillColor: WHITE_COLORS[100],\n /** 空心点图 active 状态下描边粗细 */\n hollowPointActiveBorder: 1,\n /** 空心点图 active 状态下描边颜色 */\n hollowPointActiveBorderColor: BLACK_COLORS[100],\n /** 空心点图 active 状态下描边透明度 */\n hollowPointActiveBorderOpacity: 1,\n /** 空心点图 selected 状态下描边粗细 */\n hollowPointSelectedBorder: 2,\n /** 空心点图 selected 状态下描边颜色 */\n hollowPointSelectedBorderColor: BLACK_COLORS[100],\n /** 空心点图 selected 状态下描边透明度 */\n hollowPointSelectedBorderOpacity: 1,\n /** 空心点图 inactive 状态下描边透明度 */\n hollowPointInactiveBorderOpacity: 0.3,\n /** 线图粗细 */\n lineBorder: 2,\n /** 线图颜色 */\n lineBorderColor: brandColor,\n /** 线图透明度 */\n lineBorderOpacity: 1,\n /** 线图 Active 状态下粗细 */\n lineActiveBorder: 3,\n /** 线图 selected 状态下粗细 */\n lineSelectedBorder: 3,\n /** 线图 inactive 状态下透明度 */\n lineInactiveBorderOpacity: 0.3,\n /** area 填充颜色 */\n areaFillColor: brandColor,\n /** area 填充透明度 */\n areaFillOpacity: 0.25,\n /** area 在 active 状态下的填充透明度 */\n areaActiveFillColor: brandColor,\n areaActiveFillOpacity: 0.5,\n /** area 在 selected 状态下的填充透明度 */\n areaSelectedFillColor: brandColor,\n areaSelectedFillOpacity: 0.5,\n /** area inactive 状态下填充透明度 */\n areaInactiveFillOpacity: 0.3,\n /** hollowArea 颜色 */\n hollowAreaBorderColor: brandColor,\n /** hollowArea 边框粗细 */\n hollowAreaBorder: 2,\n /** hollowArea 边框透明度 */\n hollowAreaBorderOpacity: 1,\n /** hollowArea active 状态下的边框粗细 */\n hollowAreaActiveBorder: 3,\n hollowAreaActiveBorderColor: BLACK_COLORS[100],\n /** hollowArea selected 状态下的边框粗细 */\n hollowAreaSelectedBorder: 3,\n hollowAreaSelectedBorderColor: BLACK_COLORS[100],\n /** hollowArea inactive 状态下的边框透明度 */\n hollowAreaInactiveBorderOpacity: 0.3,\n /** interval 填充颜色 */\n intervalFillColor: brandColor,\n /** interval 填充透明度 */\n intervalFillOpacity: 0.95,\n /** interval active 状态下边框粗细 */\n intervalActiveBorder: 1,\n /** interval active 状态下边框颜色 */\n intervalActiveBorderColor: BLACK_COLORS[100],\n intervalActiveBorderOpacity: 1,\n /** interval selected 状态下边框粗细 */\n intervalSelectedBorder: 2,\n /** interval selected 状态下边框颜色 */\n intervalSelectedBorderColor: BLACK_COLORS[100],\n /** interval selected 状态下边框透明度 */\n intervalSelectedBorderOpacity: 1,\n /** interval inactive 状态下边框透明度 */\n intervalInactiveBorderOpacity: 0.3,\n /** interval inactive 状态下填充透明度 */\n intervalInactiveFillOpacity: 0.3,\n /** interval 边框粗细 */\n hollowIntervalBorder: 2,\n /** hollowInterval 边框颜色 */\n hollowIntervalBorderColor: brandColor,\n /** hollowInterval 边框透明度 */\n hollowIntervalBorderOpacity: 1,\n hollowIntervalFillColor: WHITE_COLORS[100],\n /** hollowInterval active 状态下边框粗细 */\n hollowIntervalActiveBorder: 2,\n /** hollowInterval active 状态下边框颜色 */\n hollowIntervalActiveBorderColor: BLACK_COLORS[100],\n /** hollowInterval selected 状态下边框粗细 */\n hollowIntervalSelectedBorder: 3,\n /** hollowInterval selected 状态下边框颜色 */\n hollowIntervalSelectedBorderColor: BLACK_COLORS[100],\n /** hollowInterval selected 状态下边框透明度 */\n hollowIntervalSelectedBorderOpacity: 1,\n /** hollowInterval inactive 状态下边框透明度 */\n hollowIntervalInactiveBorderOpacity: 0.3\n };\n return __assign(__assign({}, token), cfg);\n};\nexport var antvLight = createLightStyleSheet();","import { __rest } from \"tslib\";\nimport { deepMix } from '@antv/util';\nimport { createThemeByStyleSheet } from './create-by-style-sheet';\nimport { createLightStyleSheet } from '../style-sheet/light';\nexport function createTheme(themeCfg) {\n var _a = themeCfg.styleSheet,\n styleSheetCfg = _a === void 0 ? {} : _a,\n themeObject = __rest(themeCfg, [\"styleSheet\"]);\n // ① 创建样式表 (默认创建 light 的样式表)\n var styleSheet = createLightStyleSheet(styleSheetCfg);\n // ② 创建主题\n return deepMix({}, createThemeByStyleSheet(styleSheet), themeObject);\n}","import { get, lowerCase } from '@antv/util';\nimport { createTheme } from './util';\nvar defaultTheme = createTheme({});\n// 所有已经存在的主题\nvar Themes = {\n default: defaultTheme\n};\n/**\n * 获取主题配置信息。\n * @param theme 主题名\n */\nexport function getTheme(theme) {\n return get(Themes, lowerCase(theme), Themes.default);\n}\n/**\n * 注册新的主题配置信息。\n * @param theme 主题名。\n * @param value 具体的主题配置。\n */\nexport function registerTheme(theme, value) {\n Themes[lowerCase(theme)] = createTheme(value);\n}","import { __assign, __read, __spreadArray, __values } from \"tslib\";\nimport { contains, filter, find, isArray, isEmpty, isFunction, isNil, isNumberEqual, isObject, memoize, get, values } from '@antv/util';\nimport { FIELD_ORIGIN, GROUP_ATTRS } from '../constant';\nimport { getName, inferScaleType } from './scale';\nfunction snapEqual(v1, v2, scale) {\n var value1 = scale.translate(v1);\n var value2 = scale.translate(v2);\n return isNumberEqual(value1, value2);\n}\nfunction getXValueByPoint(point, geometry) {\n var coordinate = geometry.coordinate;\n var xScale = geometry.getXScale();\n var range = xScale.range;\n var rangeMax = range[range.length - 1];\n var rangeMin = range[0];\n var invertPoint = coordinate.invert(point);\n var xValue = invertPoint.x;\n if (coordinate.isPolar && xValue > (1 + rangeMax) / 2) {\n xValue = rangeMin; // 极坐标下,scale 的 range 被做过特殊处理\n }\n\n return xScale.translate(xScale.invert(xValue));\n}\nfunction filterYValue(data, point, geometry) {\n var coordinate = geometry.coordinate;\n var yScale = geometry.getYScale();\n var yField = yScale.field;\n var invertPoint = coordinate.invert(point);\n var yValue = yScale.invert(invertPoint.y);\n var result = find(data, function (obj) {\n var originData = obj[FIELD_ORIGIN];\n return originData[yField][0] <= yValue && originData[yField][1] >= yValue;\n });\n return result || data[data.length - 1];\n}\nvar getXDistance = memoize(function (scale) {\n if (scale.isCategory) {\n return 1;\n }\n var scaleValues = scale.values; // values 是无序的\n var length = scaleValues.length;\n var min = scale.translate(scaleValues[0]);\n var max = min;\n for (var index = 0; index < length; index++) {\n var value = scaleValues[index];\n // 时间类型需要 translate\n var numericValue = scale.translate(value);\n if (numericValue < min) {\n min = numericValue;\n }\n if (numericValue > max) {\n max = numericValue;\n }\n }\n return (max - min) / (length - 1);\n});\n/**\n * 获得 tooltip 的 title\n * @param originData\n * @param geometry\n * @param title\n */\nfunction getTooltipTitle(originData, geometry, title) {\n var positionAttr = geometry.getAttribute('position');\n var fields = positionAttr.getFields();\n var scales = geometry.scales;\n var titleField = isFunction(title) || !title ? fields[0] : title;\n var titleScale = scales[titleField];\n // 如果创建了该字段对应的 scale,则通过 scale.getText() 方式取值,因为用户可能对数据进行了格式化\n // 如果没有对应的 scale,则从原始数据中取值,如果原始数据中仍不存在,则直接放回 title 值\n var tooltipTitle = titleScale ? titleScale.getText(originData[titleField]) : originData[titleField] || titleField;\n return isFunction(title) ? title(tooltipTitle, originData) : tooltipTitle;\n}\nfunction getAttributesForLegend(geometry) {\n var attributes = values(geometry.attributes);\n return filter(attributes, function (attribute) {\n return contains(GROUP_ATTRS, attribute.type);\n });\n}\nfunction getTooltipValueScale(geometry) {\n var e_1, _a;\n var attributes = getAttributesForLegend(geometry);\n var scale;\n try {\n for (var attributes_1 = __values(attributes), attributes_1_1 = attributes_1.next(); !attributes_1_1.done; attributes_1_1 = attributes_1.next()) {\n var attribute = attributes_1_1.value;\n var tmpScale = attribute.getScale(attribute.type);\n if (tmpScale && tmpScale.isLinear) {\n var tmpScaleDef = get(geometry.scaleDefs, tmpScale.field);\n var inferedScaleType = inferScaleType(tmpScale, tmpScaleDef, attribute.type, geometry.type);\n if (inferedScaleType !== 'cat') {\n // 如果指定字段是非 position 的,同时是连续的\n scale = tmpScale;\n break;\n }\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (attributes_1_1 && !attributes_1_1.done && (_a = attributes_1.return)) _a.call(attributes_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n var xScale = geometry.getXScale();\n var yScale = geometry.getYScale();\n return scale || yScale || xScale;\n}\nfunction getTooltipValue(originData, valueScale) {\n var field = valueScale.field;\n var value = originData[field];\n if (isArray(value)) {\n var texts = value.map(function (eachValue) {\n return valueScale.getText(eachValue);\n });\n return texts.join('-');\n }\n return valueScale.getText(value);\n}\n// 根据原始数据获取 tooltip item 中 name 值\nfunction getTooltipName(originData, geometry) {\n var nameScale;\n var groupScales = geometry.getGroupScales();\n if (groupScales.length) {\n // 如果存在分组类型,取第一个分组类型\n nameScale = groupScales[0];\n }\n if (nameScale) {\n var field = nameScale.field;\n return nameScale.getText(originData[field]);\n }\n var valueScale = getTooltipValueScale(geometry);\n return getName(valueScale);\n}\n/**\n * @ignore\n * Finds data from geometry by point\n * @param point canvas point\n * @param data an item of geometry.dataArray\n * @param geometry\n * @returns\n */\nexport function findDataByPoint(point, data, geometry) {\n if (data.length === 0) {\n return null;\n }\n var geometryType = geometry.type;\n var xScale = geometry.getXScale();\n var yScale = geometry.getYScale();\n var xField = xScale.field;\n var yField = yScale.field;\n var rst = null;\n // 热力图采用最小逼近策略查找 point 击中的数据\n if (geometryType === 'heatmap' || geometryType === 'point') {\n // 将 point 画布坐标转换为原始数据值\n var coordinate = geometry.coordinate;\n var invertPoint = coordinate.invert(point); // 转换成归一化的数据\n var x = xScale.invert(invertPoint.x); // 转换为原始值\n var y = yScale.invert(invertPoint.y); // 转换为原始值\n var min = Infinity;\n for (var index = 0; index < data.length; index++) {\n var obj = data[index];\n var originData = obj[FIELD_ORIGIN];\n var range = Math.pow(originData[xField] - x, 2) + Math.pow(originData[yField] - y, 2);\n if (range < min) {\n min = range;\n rst = obj;\n }\n }\n return rst;\n }\n // 其他 Geometry 类型按照 x 字段数据进行查找\n var first = data[0];\n var last = data[data.length - 1];\n var xValue = getXValueByPoint(point, geometry);\n var firstXValue = first[FIELD_ORIGIN][xField];\n var firstYValue = first[FIELD_ORIGIN][yField];\n var lastXValue = last[FIELD_ORIGIN][xField];\n var isYArray = yScale.isLinear && isArray(firstYValue); // 考虑 x 维度相同,y 是数组区间的情况\n // 如果 x 的值是数组\n if (isArray(firstXValue)) {\n for (var index = 0; index < data.length; index++) {\n var record = data[index];\n var originData = record[FIELD_ORIGIN];\n // xValue 在 originData[xField] 的数值区间内\n if (xScale.translate(originData[xField][0]) <= xValue && xScale.translate(originData[xField][1]) >= xValue) {\n if (isYArray) {\n // 层叠直方图场景,x 和 y 都是数组区间\n if (!isArray(rst)) {\n rst = [];\n }\n rst.push(record);\n } else {\n rst = record;\n break;\n }\n }\n }\n if (isArray(rst)) {\n rst = filterYValue(rst, point, geometry);\n }\n } else {\n var next = void 0;\n if (!xScale.isLinear && xScale.type !== 'timeCat') {\n // x 轴对应的数据为非线性以及非时间类型的数据采用遍历查找\n for (var index = 0; index < data.length; index++) {\n var record = data[index];\n var originData = record[FIELD_ORIGIN];\n if (snapEqual(originData[xField], xValue, xScale)) {\n if (isYArray) {\n if (!isArray(rst)) {\n rst = [];\n }\n rst.push(record);\n } else {\n rst = record;\n break;\n }\n } else if (xScale.translate(originData[xField]) <= xValue) {\n last = record;\n next = data[index + 1];\n }\n }\n if (isArray(rst)) {\n rst = filterYValue(rst, point, geometry);\n }\n } else {\n // x 轴对应的数据为线性以及时间类型,进行二分查找,性能更好\n if ((xValue > xScale.translate(lastXValue) || xValue < xScale.translate(firstXValue)) && (xValue > xScale.max || xValue < xScale.min)) {\n // 不在数据范围内\n return null;\n }\n var firstIdx = 0;\n var lastIdx = data.length - 1;\n var middleIdx = void 0;\n while (firstIdx <= lastIdx) {\n middleIdx = Math.floor((firstIdx + lastIdx) / 2);\n var item = data[middleIdx][FIELD_ORIGIN][xField];\n if (snapEqual(item, xValue, xScale)) {\n return data[middleIdx];\n }\n if (xScale.translate(item) <= xScale.translate(xValue)) {\n firstIdx = middleIdx + 1;\n last = data[middleIdx];\n next = data[middleIdx + 1];\n } else {\n if (lastIdx === 0) {\n last = data[0];\n }\n lastIdx = middleIdx - 1;\n }\n }\n }\n if (last && next) {\n // 计算最逼近的\n if (Math.abs(xScale.translate(last[FIELD_ORIGIN][xField]) - xValue) > Math.abs(xScale.translate(next[FIELD_ORIGIN][xField]) - xValue)) {\n last = next;\n }\n }\n }\n var distance = getXDistance(geometry.getXScale()); // 每个分类间的平均间距\n if (!rst && Math.abs(xScale.translate(last[FIELD_ORIGIN][xField]) - xValue) <= distance / 2) {\n rst = last;\n }\n return rst;\n}\n/**\n * @ignore\n * Gets tooltip items\n * @param data\n * @param geometry\n * @param [title]\n * @returns\n */\nexport function getTooltipItems(data, geometry, title, showNil) {\n var e_2, _a;\n if (title === void 0) {\n title = '';\n }\n if (showNil === void 0) {\n showNil = false;\n }\n var originData = data[FIELD_ORIGIN];\n var tooltipTitle = getTooltipTitle(originData, geometry, title);\n var tooltipOption = geometry.tooltipOption;\n var defaultColor = geometry.theme.defaultColor;\n var items = [];\n var name;\n var value;\n function addItem(itemName, itemValue) {\n if (showNil || !isNil(itemValue) && itemValue !== '') {\n // 值为 null的时候,忽视\n var item = {\n title: tooltipTitle,\n data: originData,\n mappingData: data,\n name: itemName,\n value: itemValue,\n color: data.color || defaultColor,\n marker: true\n };\n items.push(item);\n }\n }\n if (isObject(tooltipOption)) {\n var fields = tooltipOption.fields,\n callback = tooltipOption.callback;\n if (callback) {\n // 用户定义了回调函数\n var callbackParams = fields.map(function (field) {\n return data[FIELD_ORIGIN][field];\n });\n var cfg = callback.apply(void 0, __spreadArray([], __read(callbackParams), false));\n var itemCfg = __assign({\n data: data[FIELD_ORIGIN],\n mappingData: data,\n title: tooltipTitle,\n color: data.color || defaultColor,\n marker: true\n }, cfg);\n items.push(itemCfg);\n } else {\n var scales = geometry.scales;\n try {\n for (var fields_1 = __values(fields), fields_1_1 = fields_1.next(); !fields_1_1.done; fields_1_1 = fields_1.next()) {\n var field = fields_1_1.value;\n if (!isNil(originData[field])) {\n // 字段数据为null, undefined 时不显示\n var scale = scales[field];\n name = getName(scale);\n value = scale.getText(originData[field]);\n addItem(name, value);\n }\n }\n } catch (e_2_1) {\n e_2 = {\n error: e_2_1\n };\n } finally {\n try {\n if (fields_1_1 && !fields_1_1.done && (_a = fields_1.return)) _a.call(fields_1);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n }\n } else {\n var valueScale = getTooltipValueScale(geometry);\n // 字段数据为null ,undefined时不显示\n value = getTooltipValue(originData, valueScale);\n name = getTooltipName(originData, geometry);\n addItem(name, value);\n }\n return items;\n}\nfunction getTooltipItemsByFindData(geometry, point, title, tooltipCfg) {\n var e_3, _a;\n var showNil = tooltipCfg.showNil;\n var result = [];\n var dataArray = geometry.dataArray;\n if (!isEmpty(dataArray)) {\n geometry.sort(dataArray); // 先进行排序,便于 tooltip 查找\n try {\n for (var dataArray_1 = __values(dataArray), dataArray_1_1 = dataArray_1.next(); !dataArray_1_1.done; dataArray_1_1 = dataArray_1.next()) {\n var data = dataArray_1_1.value;\n var record = findDataByPoint(point, data, geometry);\n if (record) {\n var elementId = geometry.getElementId(record);\n var element = geometry.elementsMap[elementId];\n if (geometry.type === 'heatmap' || element.visible) {\n // Heatmap 没有 Element\n // 如果图形元素隐藏了,怎不再 tooltip 上展示相关数据\n var items = getTooltipItems(record, geometry, title, showNil);\n if (items.length) {\n result.push(items);\n }\n }\n }\n }\n } catch (e_3_1) {\n e_3 = {\n error: e_3_1\n };\n } finally {\n try {\n if (dataArray_1_1 && !dataArray_1_1.done && (_a = dataArray_1.return)) _a.call(dataArray_1);\n } finally {\n if (e_3) throw e_3.error;\n }\n }\n }\n return result;\n}\nfunction getTooltipItemsByHitShape(geometry, point, title, tooltipCfg) {\n var showNil = tooltipCfg.showNil;\n var result = [];\n var container = geometry.container;\n var shape = container.getShape(point.x, point.y);\n if (shape && shape.get('visible') && shape.get('origin')) {\n var mappingData = shape.get('origin').mappingData;\n var items = getTooltipItems(mappingData, geometry, title, showNil);\n if (items.length) {\n result.push(items);\n }\n }\n return result;\n}\n/**\n * 不进行递归查找\n */\nexport function findItemsFromView(view, point, tooltipCfg) {\n var e_4, _a;\n var result = [];\n // 先从 view 本身查找\n var geometries = view.geometries;\n var shared = tooltipCfg.shared,\n title = tooltipCfg.title,\n reversed = tooltipCfg.reversed;\n try {\n for (var geometries_1 = __values(geometries), geometries_1_1 = geometries_1.next(); !geometries_1_1.done; geometries_1_1 = geometries_1.next()) {\n var geometry = geometries_1_1.value;\n if (geometry.visible && geometry.tooltipOption !== false) {\n // geometry 可见同时未关闭 tooltip\n var geometryType = geometry.type;\n var tooltipItems = void 0;\n if (['point', 'edge', 'polygon'].includes(geometryType)) {\n // 始终通过图形拾取\n tooltipItems = getTooltipItemsByHitShape(geometry, point, title, tooltipCfg);\n } else if (['area', 'line', 'path', 'heatmap'].includes(geometryType)) {\n // 如果是 'area', 'line', 'path',始终通过数据查找方法查找 tooltip\n tooltipItems = getTooltipItemsByFindData(geometry, point, title, tooltipCfg);\n } else {\n if (shared !== false) {\n tooltipItems = getTooltipItemsByFindData(geometry, point, title, tooltipCfg);\n } else {\n tooltipItems = getTooltipItemsByHitShape(geometry, point, title, tooltipCfg);\n }\n }\n if (tooltipItems.length) {\n if (reversed) {\n tooltipItems.reverse();\n }\n // geometry 有可能会有多个 item,因为用户可以设置 geometry.tooltip('x*y*z')\n result.push(tooltipItems);\n }\n }\n }\n } catch (e_4_1) {\n e_4 = {\n error: e_4_1\n };\n } finally {\n try {\n if (geometries_1_1 && !geometries_1_1.done && (_a = geometries_1.return)) _a.call(geometries_1);\n } finally {\n if (e_4) throw e_4.error;\n }\n }\n return result;\n}\nexport function findItemsFromViewRecurisive(view, point, tooltipCfg) {\n var e_5, _a;\n var result = findItemsFromView(view, point, tooltipCfg);\n try {\n // 递归查找,并合并结果\n for (var _b = __values(view.views), _c = _b.next(); !_c.done; _c = _b.next()) {\n var childView = _c.value;\n result = result.concat(findItemsFromView(childView, point, tooltipCfg));\n }\n } catch (e_5_1) {\n e_5 = {\n error: e_5_1\n };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_5) throw e_5.error;\n }\n }\n return result;\n}","import { __read, __spreadArray } from \"tslib\";\nimport { isArray, isNumber } from '@antv/util';\n/**\n * @ignore\n * 是否是自动 padding\n * @param padding\n */\nexport function isAutoPadding(padding) {\n return !isNumber(padding) && !isArray(padding);\n}\n/**\n * @ignore\n * padding 的解析逻辑\n * @param padding\n * @return [ top, right, bottom, left ]\n */\nexport function parsePadding(padding) {\n if (padding === void 0) {\n padding = 0;\n }\n var paddingArray = isArray(padding) ? padding : [padding];\n switch (paddingArray.length) {\n case 0:\n paddingArray = [0, 0, 0, 0];\n break;\n case 1:\n paddingArray = new Array(4).fill(paddingArray[0]);\n break;\n case 2:\n paddingArray = __spreadArray(__spreadArray([], __read(paddingArray), false), __read(paddingArray), false);\n break;\n case 3:\n paddingArray = __spreadArray(__spreadArray([], __read(paddingArray), false), [paddingArray[1]], false);\n break;\n default:\n // 其他情况,只去四个\n paddingArray = paddingArray.slice(0, 4);\n break;\n }\n return paddingArray;\n}","var LOAD_COMPONENT_CONTROLLERS = {};\n/**\n * 全局注册组件。\n * @param name 组件名称\n * @param plugin 注册的组件类\n * @returns void\n */\nexport function registerComponentController(name, plugin) {\n LOAD_COMPONENT_CONTROLLERS[name] = plugin;\n}\n/**\n * 删除全局组件。\n * @param name 组件名\n * @returns void\n */\nexport function unregisterComponentController(name) {\n delete LOAD_COMPONENT_CONTROLLERS[name];\n}\n/**\n * 获取以注册的组件名。\n * @returns string[] 返回已注册的组件名称\n */\nexport function getComponentControllerNames() {\n return Object.keys(LOAD_COMPONENT_CONTROLLERS);\n}\n/**\n * 根据组件名获取组件类。\n * @param name 组件名\n * @returns 返回组件类\n */\nexport function getComponentController(name) {\n return LOAD_COMPONENT_CONTROLLERS[name];\n}","import { __assign, __read, __spreadArray } from \"tslib\";\nimport { each, isNil, some } from '@antv/util';\nimport { getCoordinate } from '../../dependents';\n/**\n * coordinate controller,职责:\n * 1. 创建实例\n * 2. 暂存配置\n */\nvar CoordinateController = /** @class */function () {\n function CoordinateController(option) {\n // 设置默认值,并存储配置\n this.option = this.wrapperOption(option);\n }\n /**\n * 更新配置\n * @param option\n */\n CoordinateController.prototype.update = function (option) {\n this.option = this.wrapperOption(option);\n return this;\n };\n /**\n * 是否存在某一个 action\n * @param actionName\n */\n CoordinateController.prototype.hasAction = function (actionName) {\n var actions = this.option.actions;\n return some(actions, function (action) {\n return action[0] === actionName;\n });\n };\n /**\n * 创建坐标系对象\n * @param start 起始位置\n * @param end 结束位置\n * @return 坐标系实例\n */\n CoordinateController.prototype.create = function (start, end) {\n var _a = this.option,\n type = _a.type,\n cfg = _a.cfg;\n var isTheta = type === 'theta';\n // 1. 起始位置\n var props = __assign({\n start: start,\n end: end\n }, cfg);\n // 2. 创建实例\n var C = getCoordinate(isTheta ? 'polar' : type);\n this.coordinate = new C(props);\n // @ts-ignore FIXME coordinate 包问题导致 type 不正确\n this.coordinate.type = type;\n // 3. 添加默认 action\n if (isTheta) {\n // 不存在 transpose,为其自动设置一个 action\n if (!this.hasAction('transpose')) {\n this.transpose();\n }\n }\n // 4. 执行 action\n this.execActions();\n return this.coordinate;\n };\n /**\n * 更新坐标系对象\n * @param start 起始位置\n * @param end 结束位置\n * @return 坐标系实例\n */\n CoordinateController.prototype.adjust = function (start, end) {\n this.coordinate.update({\n start: start,\n end: end\n });\n // 更新坐标系大小的时候,需要:\n // 1. 重置 matrix\n // 2. 重新执行作用于 matrix 的 action\n this.coordinate.resetMatrix();\n this.execActions(['scale', 'rotate', 'translate']);\n return this.coordinate;\n };\n /**\n * 旋转弧度\n * @param angle\n */\n CoordinateController.prototype.rotate = function (angle) {\n this.option.actions.push(['rotate', angle]);\n return this;\n };\n /**\n * 镜像\n * @param dim\n */\n CoordinateController.prototype.reflect = function (dim) {\n this.option.actions.push(['reflect', dim]);\n return this;\n };\n /**\n * scale\n * @param sx\n * @param sy\n */\n CoordinateController.prototype.scale = function (sx, sy) {\n this.option.actions.push(['scale', sx, sy]);\n return this;\n };\n /**\n * 对角变换\n */\n CoordinateController.prototype.transpose = function () {\n this.option.actions.push(['transpose']);\n return this;\n };\n /**\n * 获取配置\n */\n CoordinateController.prototype.getOption = function () {\n return this.option;\n };\n /**\n * 获得 coordinate 实例\n */\n CoordinateController.prototype.getCoordinate = function () {\n return this.coordinate;\n };\n /**\n * 包装配置的默认值\n * @param option\n */\n CoordinateController.prototype.wrapperOption = function (option) {\n return __assign({\n type: 'rect',\n actions: [],\n cfg: {}\n }, option);\n };\n /**\n * coordinate 实例执行 actions\n * @params includeActions 如果没有指定,则执行全部,否则,执行指定的 action\n */\n CoordinateController.prototype.execActions = function (includeActions) {\n var _this = this;\n var actions = this.option.actions;\n each(actions, function (action) {\n var _a;\n var _b = __read(action),\n actionName = _b[0],\n args = _b.slice(1);\n var shouldExec = isNil(includeActions) ? true : includeActions.includes(actionName);\n if (shouldExec) {\n (_a = _this.coordinate)[actionName].apply(_a, __spreadArray([], __read(args), false));\n }\n });\n };\n return CoordinateController;\n}();\nexport default CoordinateController;","import { Event as GEvent } from '../dependents';\n/**\n * @todo Whether it can(or necessary to) keep consistent with the structure of G.Event or directly use the structure of G.Event\n * G2 事件的事件包装类,基于 G.Event\n */\nvar Event = /** @class */function () {\n function Event(view, gEvent, data) {\n this.view = view;\n this.gEvent = gEvent;\n this.data = data;\n this.type = gEvent.type;\n }\n /**\n * 非交互产生的事件\n * @param view\n * @param type\n * @param data\n */\n Event.fromData = function (view, type, data) {\n return new Event(view, new GEvent(type, {}), data);\n };\n Object.defineProperty(Event.prototype, \"target\", {\n // below props are proxy props of G.event convenient\n /** the real trigger shape of the event */\n get: function get() {\n // @todo G 中事件定义为 object 不正确,这里先 ignore\n // @ts-ignore\n return this.gEvent.target;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Event.prototype, \"event\", {\n /** 获取对应的 dom 原生时间 */\n get: function get() {\n return this.gEvent.originalEvent;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Event.prototype, \"x\", {\n /** x 画布坐标 */\n get: function get() {\n return this.gEvent.x;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Event.prototype, \"y\", {\n /** y 画布坐标 */\n get: function get() {\n return this.gEvent.y;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Event.prototype, \"clientX\", {\n /** x 窗口坐标 */\n get: function get() {\n return this.gEvent.clientX;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Event.prototype, \"clientY\", {\n /** y 窗口坐标 */\n get: function get() {\n return this.gEvent.clientY;\n },\n enumerable: false,\n configurable: true\n });\n // end for proxy events\n /**\n * event string\n * @returns string\n */\n Event.prototype.toString = function () {\n return \"[Event (type=\".concat(this.type, \")]\");\n };\n /**\n * clone a new event with same attributes\n * @returns [[Event]]\n */\n Event.prototype.clone = function () {\n return new Event(this.view, this.gEvent, this.data);\n };\n return Event;\n}();\nexport default Event;","/**\n * @ignore\n * G2 默认提供的 layout 函数\n * 内置布局函数处理的逻辑:\n *\n * 1. 如果 padding = 'auto',那么自动根据组件的 direction 来计算 padding 数组\n * 2. 根据 padding 和 direction 去分配对应方向的 padding 数值\n * 3. 移动组件位置\n *\n * 前面 1,2 步骤在 view 中已经做掉了。对于组件响应式布局,可以尝试使用约束布局的方式去求解位置信息。\n * @param view\n */\nexport default function defaultLayout(view) {\n var axis = view.getController('axis');\n var legend = view.getController('legend');\n var annotation = view.getController('annotation');\n var slider = view.getController('slider');\n var scrollbar = view.getController('scrollbar');\n // 根据最新的 coordinate 重新布局组件\n [axis, slider, scrollbar, legend, annotation].forEach(function (controller) {\n if (controller) {\n controller.layout();\n }\n });\n}","/**\n * view 中缓存 scale 的类\n */\nimport { deepMix, each, get, isNumber, last } from '@antv/util';\nimport { createScaleByField, syncScale, getDefaultCategoryScaleRange } from '../../util/scale';\n/** @ignore */\nvar ScalePool = /** @class */function () {\n function ScalePool() {\n /** 所有的 scales */\n this.scales = new Map();\n /** 需要同步的 scale 分组, key: scaleKeyArray */\n this.syncScales = new Map();\n }\n /**\n * 创建 scale\n * @param field\n * @param data\n * @param scaleDef\n * @param key\n */\n ScalePool.prototype.createScale = function (field, data, scaleDef, key) {\n var finalScaleDef = scaleDef;\n var cacheScaleMeta = this.getScaleMeta(key);\n if (data.length === 0 && cacheScaleMeta) {\n // 在更新过程中数据变为空,同时 key 对应的 scale 已存在则保持 scale 同类型\n var cacheScale = cacheScaleMeta.scale;\n var cacheScaleDef = {\n type: cacheScale.type\n };\n if (cacheScale.isCategory) {\n // 如果是分类类型,保持 values\n cacheScaleDef.values = cacheScale.values;\n }\n finalScaleDef = deepMix(cacheScaleDef, cacheScaleMeta.scaleDef, scaleDef);\n }\n var scale = createScaleByField(field, data, finalScaleDef);\n // 缓存起来\n this.cacheScale(scale, scaleDef, key);\n return scale;\n };\n /**\n * 同步 scale\n */\n ScalePool.prototype.sync = function (coordinate, theme) {\n var _this = this;\n // 对于 syncScales 中每一个 syncKey 下面的 scale 数组进行同步处理\n this.syncScales.forEach(function (scaleKeys, syncKey) {\n // min, max, values, ranges\n var min = Number.MAX_SAFE_INTEGER;\n var max = Number.MIN_SAFE_INTEGER;\n var values = [];\n // 1. 遍历求得最大最小值,values 等\n each(scaleKeys, function (key) {\n var scale = _this.getScale(key);\n max = isNumber(scale.max) ? Math.max(max, scale.max) : max;\n min = isNumber(scale.min) ? Math.min(min, scale.min) : min;\n // 去重\n each(scale.values, function (v) {\n if (!values.includes(v)) {\n values.push(v);\n }\n });\n });\n // 2. 同步\n each(scaleKeys, function (key) {\n var scale = _this.getScale(key);\n if (scale.isContinuous) {\n scale.change({\n min: min,\n max: max,\n values: values\n });\n } else if (scale.isCategory) {\n var range = scale.range;\n var cacheScaleMeta = _this.getScaleMeta(key);\n // 存在 value 值,且用户没有配置 range 配置 to fix https://github.com/antvis/G2/issues/2996\n if (values && !get(cacheScaleMeta, ['scaleDef', 'range'])) {\n // 更新 range\n range = getDefaultCategoryScaleRange(deepMix({}, scale, {\n values: values\n }), coordinate, theme);\n }\n scale.change({\n values: values,\n range: range\n });\n }\n });\n });\n };\n /**\n * 缓存一个 scale\n * @param scale\n * @param scaleDef\n * @param key\n */\n ScalePool.prototype.cacheScale = function (scale, scaleDef, key) {\n // 1. 缓存到 scales\n var sm = this.getScaleMeta(key);\n // 存在则更新,同时检测类型是否一致\n if (sm && sm.scale.type === scale.type) {\n syncScale(sm.scale, scale);\n sm.scaleDef = scaleDef;\n // 更新 scaleDef\n } else {\n sm = {\n key: key,\n scale: scale,\n scaleDef: scaleDef\n };\n this.scales.set(key, sm);\n }\n // 2. 缓存到 syncScales,构造 Record 数据结构\n var syncKey = this.getSyncKey(sm);\n sm.syncKey = syncKey; // 设置 sync 同步的 key\n // 因为存在更新 scale 机制,所以在缓存之前,先从原 syncScales 中去除 sync 的缓存引用\n this.removeFromSyncScales(key);\n // 存在 sync 标记才进行 sync\n if (syncKey) {\n // 不存在这个 syncKey,则创建一个空数组\n var scaleKeys = this.syncScales.get(syncKey);\n if (!scaleKeys) {\n scaleKeys = [];\n this.syncScales.set(syncKey, scaleKeys);\n }\n scaleKeys.push(key);\n }\n };\n /**\n * 通过 key 获取 scale\n * @param key\n */\n ScalePool.prototype.getScale = function (key) {\n var scaleMeta = this.getScaleMeta(key);\n if (!scaleMeta) {\n var field = last(key.split('-'));\n var scaleKeys = this.syncScales.get(field);\n if (scaleKeys && scaleKeys.length) {\n scaleMeta = this.getScaleMeta(scaleKeys[0]);\n }\n }\n return scaleMeta && scaleMeta.scale;\n };\n /**\n * 在 view 销毁的时候,删除 scale 实例,防止内存泄露\n * @param key\n */\n ScalePool.prototype.deleteScale = function (key) {\n var scaleMeta = this.getScaleMeta(key);\n if (scaleMeta) {\n var syncKey = scaleMeta.syncKey;\n var scaleKeys = this.syncScales.get(syncKey);\n // 移除同步的关系\n if (scaleKeys && scaleKeys.length) {\n var idx = scaleKeys.indexOf(key);\n if (idx !== -1) {\n scaleKeys.splice(idx, 1);\n }\n }\n }\n // 删除 scale 实例\n this.scales.delete(key);\n };\n /**\n * 清空\n */\n ScalePool.prototype.clear = function () {\n this.scales.clear();\n this.syncScales.clear();\n };\n /**\n * 删除 sync scale 引用\n * @param key\n */\n ScalePool.prototype.removeFromSyncScales = function (key) {\n var _this = this;\n this.syncScales.forEach(function (scaleKeys, syncKey) {\n var idx = scaleKeys.indexOf(key);\n if (idx !== -1) {\n scaleKeys.splice(idx, 1);\n // 删除空数组值\n if (scaleKeys.length === 0) {\n _this.syncScales.delete(syncKey);\n }\n return false; // 跳出循环\n }\n });\n };\n /**\n * get sync key\n * @param sm\n */\n ScalePool.prototype.getSyncKey = function (sm) {\n var scale = sm.scale,\n scaleDef = sm.scaleDef;\n var field = scale.field;\n var sync = get(scaleDef, ['sync']);\n // 如果 sync = true,则直接使用字段名作为 syncKey\n return sync === true ? field : sync === false ? undefined : sync;\n };\n /**\n * 通过 key 获取 scale\n * @param key\n */\n ScalePool.prototype.getScaleMeta = function (key) {\n return this.scales.get(key);\n };\n return ScalePool;\n}();\nexport { ScalePool };","import { __read, __spreadArray } from \"tslib\";\nimport { DIRECTION } from '../../constant';\n/** @ignore */\nvar PaddingCal = /** @class */function () {\n /**\n * 初始的 padding 数据\n * @param top\n * @param right\n * @param bottom\n * @param left\n */\n function PaddingCal(top, right, bottom, left) {\n if (top === void 0) {\n top = 0;\n }\n if (right === void 0) {\n right = 0;\n }\n if (bottom === void 0) {\n bottom = 0;\n }\n if (left === void 0) {\n left = 0;\n }\n this.top = top;\n this.right = right;\n this.bottom = bottom;\n this.left = left;\n }\n /**\n * 使用静态方法创建一个\n * @param top\n * @param right\n * @param bottom\n * @param left\n */\n PaddingCal.instance = function (top, right, bottom, left) {\n if (top === void 0) {\n top = 0;\n }\n if (right === void 0) {\n right = 0;\n }\n if (bottom === void 0) {\n bottom = 0;\n }\n if (left === void 0) {\n left = 0;\n }\n return new PaddingCal(top, right, bottom, left);\n };\n /**\n * 取最大区间\n * @param padding\n */\n PaddingCal.prototype.max = function (padding) {\n var _a = __read(padding, 4),\n top = _a[0],\n right = _a[1],\n bottom = _a[2],\n left = _a[3];\n this.top = Math.max(this.top, top);\n this.right = Math.max(this.right, right);\n this.bottom = Math.max(this.bottom, bottom);\n this.left = Math.max(this.left, left);\n return this;\n };\n /**\n * 四周增加 padding\n * @param padding\n */\n PaddingCal.prototype.shrink = function (padding) {\n var _a = __read(padding, 4),\n top = _a[0],\n right = _a[1],\n bottom = _a[2],\n left = _a[3];\n this.top += top;\n this.right += right;\n this.bottom += bottom;\n this.left += left;\n return this;\n };\n /**\n * 在某一个方向增加 padding\n * @param bbox\n * @param direction\n */\n PaddingCal.prototype.inc = function (bbox, direction) {\n var width = bbox.width,\n height = bbox.height;\n switch (direction) {\n case DIRECTION.TOP:\n case DIRECTION.TOP_LEFT:\n case DIRECTION.TOP_RIGHT:\n this.top += height;\n break;\n case DIRECTION.RIGHT:\n case DIRECTION.RIGHT_TOP:\n case DIRECTION.RIGHT_BOTTOM:\n this.right += width;\n break;\n case DIRECTION.BOTTOM:\n case DIRECTION.BOTTOM_LEFT:\n case DIRECTION.BOTTOM_RIGHT:\n this.bottom += height;\n break;\n case DIRECTION.LEFT:\n case DIRECTION.LEFT_TOP:\n case DIRECTION.LEFT_BOTTOM:\n this.left += width;\n break;\n default:\n break;\n }\n return this;\n };\n /**\n * 获得最终的 padding\n */\n PaddingCal.prototype.getPadding = function () {\n return [this.top, this.right, this.bottom, this.left];\n };\n /**\n * clone 一个 padding cal\n */\n PaddingCal.prototype.clone = function () {\n return new (PaddingCal.bind.apply(PaddingCal, __spreadArray([void 0], __read(this.getPadding()), false)))();\n };\n return PaddingCal;\n}();\nexport { PaddingCal };","import { __read, __spreadArray } from \"tslib\";\nimport { each } from '@antv/util';\nimport { COMPONENT_TYPE } from '../../constant';\nimport { BBox } from '../../util/bbox';\nimport { isAutoPadding, parsePadding } from '../../util/padding';\nimport { PaddingCal } from './padding-cal';\n/**\n * @ignore\n * 根据 view 中的组件,计算实际的 padding 数值\n * @param view\n */\nexport function calculatePadding(view) {\n var padding = view.padding;\n // 如果不是 auto padding,那么直接解析之后返回\n if (!isAutoPadding(padding)) {\n return new (PaddingCal.bind.apply(PaddingCal, __spreadArray([void 0], __read(parsePadding(padding)), false)))();\n }\n // 是 auto padding,根据组件的情况,来计算 padding\n var viewBBox = view.viewBBox;\n var paddingCal = new PaddingCal();\n var axisComponents = [];\n var paddingComponents = [];\n var otherComponents = [];\n each(view.getComponents(), function (co) {\n var type = co.type;\n if (type === COMPONENT_TYPE.AXIS) {\n axisComponents.push(co);\n } else if ([COMPONENT_TYPE.LEGEND, COMPONENT_TYPE.SLIDER, COMPONENT_TYPE.SCROLLBAR].includes(type)) {\n paddingComponents.push(co);\n } else if (type !== COMPONENT_TYPE.GRID && type !== COMPONENT_TYPE.TOOLTIP) {\n otherComponents.push(co);\n }\n });\n // 进行坐标轴布局,应该是取 padding 的并集,而不是进行相加\n each(axisComponents, function (co) {\n var component = co.component;\n var bboxObject = component.getLayoutBBox();\n var componentBBox = new BBox(bboxObject.x, bboxObject.y, bboxObject.width, bboxObject.height);\n var exceed = componentBBox.exceed(viewBBox);\n // 在对组件分组之后,先对 axis 进行处理,然后取最大的超出即可。\n paddingCal.max(exceed);\n });\n // 有 padding 的组件布局\n each(paddingComponents, function (co) {\n var component = co.component,\n direction = co.direction;\n var bboxObject = component.getLayoutBBox();\n var componentPadding = component.get('padding');\n var componentBBox = new BBox(bboxObject.x, bboxObject.y, bboxObject.width, bboxObject.height).expand(componentPadding);\n // 按照方向计算 padding\n paddingCal.inc(componentBBox, direction);\n });\n // 其他组件布局\n each(otherComponents, function (co) {\n var component = co.component,\n direction = co.direction;\n var bboxObject = component.getLayoutBBox();\n var componentBBox = new BBox(bboxObject.x, bboxObject.y, bboxObject.width, bboxObject.height);\n // 按照方向计算 padding\n paddingCal.inc(componentBBox, direction);\n });\n return paddingCal;\n}","/**\n * 默认的 syncViewPadding 逻辑\n * @param chart\n * @param views\n * @param PC: PaddingCalCtor\n */\nexport function defaultSyncViewPadding(chart, views, PC) {\n var syncPadding = PC.instance();\n // 所有的 view 的 autoPadding 指向同一个引用\n views.forEach(function (v) {\n v.autoPadding = syncPadding.max(v.autoPadding.getPadding());\n });\n}","import { __assign, __extends, __read, __rest, __spreadArray } from \"tslib\";\nimport { clone, deepMix, each, filter, find, flatten, get, isBoolean, isFunction, isNil, isObject, isString, isUndefined, mix, remove, set, size, uniqueId, isEqual, isPlainObject, reduce } from '@antv/util';\nimport { GROUP_Z_INDEX, LAYER, PLOT_EVENTS, VIEW_LIFE_CIRCLE } from '../constant';\nimport Base from '../base';\nimport { getFacet } from '../facet';\nimport { createInteraction } from '../interaction';\nimport { getTheme } from '../theme';\nimport { BBox } from '../util/bbox';\nimport { getCoordinateClipCfg, isPointInCoordinate } from '../util/coordinate';\nimport { uniq } from '../util/helper';\nimport { findDataByPoint } from '../util/tooltip';\nimport { parsePadding } from '../util/padding';\nimport { getDefaultCategoryScaleRange } from '../util/scale';\nimport { createTheme } from '../theme/util';\nimport { getComponentController, getComponentControllerNames } from './controller';\nimport CoordinateController from './controller/coordinate';\nimport Event from './event';\nimport defaultLayout from './layout';\nimport { ScalePool } from './util/scale-pool';\nimport { PaddingCal } from './layout/padding-cal';\nimport { calculatePadding } from './layout/auto';\nimport { defaultSyncViewPadding } from './util/sync-view-padding';\n/**\n * G2 视图 View 类\n */\nvar View = /** @class */function (_super) {\n __extends(View, _super);\n function View(props) {\n var _this = _super.call(this, {\n visible: props.visible\n }) || this;\n /** 所有的子 view。 */\n _this.views = [];\n /** 所有的 geometry 实例。 */\n _this.geometries = [];\n /** 所有的组件 controllers。 */\n _this.controllers = [];\n /** 所有的 Interaction 实例。 */\n _this.interactions = {};\n /** 是否对超出坐标系范围的 Geometry 进行剪切 */\n _this.limitInPlot = false;\n // 配置信息存储\n _this.options = {\n data: [],\n animate: true // 默认开启动画\n }; // 初始化为空\n /** 配置开启的组件插件,默认为全局配置的组件。 */\n _this.usedControllers = getComponentControllerNames();\n /** 所有的 scales */\n _this.scalePool = new ScalePool();\n /** 布局函数 */\n _this.layoutFunc = defaultLayout;\n /** 当前鼠标是否在 plot 内(CoordinateBBox) */\n _this.isPreMouseInPlot = false;\n /** 默认标识位,用于判定数据是否更新 */\n _this.isDataChanged = false;\n /** 用于判断坐标系范围是否发生变化的标志位 */\n _this.isCoordinateChanged = false;\n /** 从当前这个 view 创建的 scale key */\n _this.createdScaleKeys = new Map();\n _this.onCanvasEvent = function (evt) {\n var name = evt.name;\n if (!name.includes(':')) {\n // 非委托事件\n var e = _this.createViewEvent(evt);\n // 处理 plot 事件\n _this.doPlotEvent(e);\n _this.emit(name, e);\n }\n };\n /**\n * 触发事件之后\n * @param evt\n */\n _this.onDelegateEvents = function (evt) {\n // 阻止继续冒泡,防止重复事件触发\n // evt.preventDefault();\n var name = evt.name;\n if (!name.includes(':')) {\n return;\n }\n // 事件在 view 嵌套中冒泡(暂不提供阻止冒泡的机制)\n var e = _this.createViewEvent(evt);\n // 包含有基本事件、组合事件\n _this.emit(name, e);\n // const currentTarget = evt.currentTarget as IShape;\n // const inheritNames = currentTarget.get('inheritNames');\n // if (evt.delegateObject || inheritNames) {\n // const events = this.getEvents();\n // each(inheritNames, (subName) => {\n // const eventName = `${subName}:${type}`;\n // if (events[eventName]) {\n // this.emit(eventName, e);\n // }\n // });\n // }\n };\n\n var _a = props.id,\n id = _a === void 0 ? uniqueId('view') : _a,\n parent = props.parent,\n canvas = props.canvas,\n backgroundGroup = props.backgroundGroup,\n middleGroup = props.middleGroup,\n foregroundGroup = props.foregroundGroup,\n _b = props.region,\n region = _b === void 0 ? {\n start: {\n x: 0,\n y: 0\n },\n end: {\n x: 1,\n y: 1\n }\n } : _b,\n padding = props.padding,\n appendPadding = props.appendPadding,\n theme = props.theme,\n options = props.options,\n limitInPlot = props.limitInPlot,\n syncViewPadding = props.syncViewPadding;\n _this.parent = parent;\n _this.canvas = canvas;\n _this.backgroundGroup = backgroundGroup;\n _this.middleGroup = middleGroup;\n _this.foregroundGroup = foregroundGroup;\n _this.region = region;\n _this.padding = padding;\n _this.appendPadding = appendPadding;\n // 接受父 view 传入的参数\n _this.options = __assign(__assign({}, _this.options), options);\n _this.limitInPlot = limitInPlot;\n _this.id = id;\n _this.syncViewPadding = syncViewPadding;\n // 初始化 theme\n _this.themeObject = isObject(theme) ? deepMix({}, getTheme('default'), createTheme(theme)) : getTheme(theme);\n _this.init();\n return _this;\n }\n /**\n * 设置 layout 布局函数\n * @param layout 布局函数\n * @returns void\n */\n View.prototype.setLayout = function (layout) {\n this.layoutFunc = layout;\n };\n /**\n * 生命周期:初始化\n * @returns voids\n */\n View.prototype.init = function () {\n // 计算画布的 viewBBox\n this.calculateViewBBox();\n // 事件委托机制\n this.initEvents();\n // 初始化组件 controller\n this.initComponentController();\n this.initOptions();\n };\n /**\n * 生命周期:渲染流程,渲染过程需要处理数据更新的情况。\n * render 函数仅仅会处理 view 和子 view。\n * @param isUpdate 是否触发更新流程。\n * @param params render 事件参数\n */\n View.prototype.render = function (isUpdate, payload) {\n if (isUpdate === void 0) {\n isUpdate = false;\n }\n this.emit(VIEW_LIFE_CIRCLE.BEFORE_RENDER, Event.fromData(this, VIEW_LIFE_CIRCLE.BEFORE_RENDER, payload));\n // 递归渲染\n this.paint(isUpdate);\n this.emit(VIEW_LIFE_CIRCLE.AFTER_RENDER, Event.fromData(this, VIEW_LIFE_CIRCLE.AFTER_RENDER, payload));\n if (this.visible === false) {\n // 用户在初始化的时候声明 visible: false\n this.changeVisible(false);\n }\n };\n /**\n * 生命周期:清空图表上所有的绘制内容,但是不销毁图表,chart 仍可使用。\n * @returns void\n */\n View.prototype.clear = function () {\n var _this = this;\n this.emit(VIEW_LIFE_CIRCLE.BEFORE_CLEAR);\n // 1. 清空缓存和计算数据\n this.filteredData = [];\n this.coordinateInstance = undefined;\n this.isDataChanged = false; // 复位\n this.isCoordinateChanged = false; // 复位\n // 2. 清空 geometries\n var geometries = this.geometries;\n for (var i = 0; i < geometries.length; i++) {\n geometries[i].clear();\n // view 中使用 geometry 的时候,还需要清空它的容器,不然下一次 chart.geometry() 的时候,又创建了一个,导致泄露, #2799。\n geometries[i].container.remove(true);\n geometries[i].labelsContainer.remove(true);\n }\n this.geometries = [];\n // 3. 清空 controllers\n var controllers = this.controllers;\n for (var i = 0; i < controllers.length; i++) {\n if (controllers[i].name === 'annotation') {\n // 需要清空配置项\n controllers[i].clear(true);\n } else {\n controllers[i].clear();\n }\n }\n // 4. 删除 scale 缓存\n this.createdScaleKeys.forEach(function (v, k) {\n _this.getRootView().scalePool.deleteScale(k);\n });\n this.createdScaleKeys.clear();\n // 递归处理子 view\n var views = this.views;\n for (var i = 0; i < views.length; i++) {\n views[i].clear();\n }\n this.emit(VIEW_LIFE_CIRCLE.AFTER_CLEAR);\n };\n /**\n * 生命周期:销毁,完全无法使用。\n * @returns void\n */\n View.prototype.destroy = function () {\n // 销毁前事件,销毁之后已经没有意义了,所以不抛出事件\n this.emit(VIEW_LIFE_CIRCLE.BEFORE_DESTROY);\n var interactions = this.interactions;\n // 销毁 interactions\n each(interactions, function (interaction) {\n if (interaction) {\n // 有可能已经销毁,设置了 undefined\n interaction.destroy();\n }\n });\n this.clear();\n // 销毁 controller 中的组件\n var controllers = this.controllers;\n for (var i = 0, len = controllers.length; i < len; i++) {\n var controller = controllers[i];\n controller.destroy();\n }\n this.backgroundGroup.remove(true);\n this.middleGroup.remove(true);\n this.foregroundGroup.remove(true);\n _super.prototype.destroy.call(this);\n };\n /* end 生命周期函数 */\n /**\n * 显示或者隐藏整个 view。\n * @param visible 是否可见\n * @returns View\n */\n View.prototype.changeVisible = function (visible) {\n _super.prototype.changeVisible.call(this, visible);\n var geometries = this.geometries;\n for (var i = 0, len = geometries.length; i < len; i++) {\n var geometry = geometries[i];\n geometry.changeVisible(visible);\n }\n var controllers = this.controllers;\n for (var i = 0, len = controllers.length; i < len; i++) {\n var controller = controllers[i];\n controller.changeVisible(visible);\n }\n this.foregroundGroup.set('visible', visible);\n this.middleGroup.set('visible', visible);\n this.backgroundGroup.set('visible', visible);\n // group.set('visible', visible) 不会触发自动刷新\n this.getCanvas().draw();\n return this;\n };\n /**\n * 装载数据源。\n *\n * ```ts\n * view.data([{ city: '杭州', sale: 100 }, { city: '上海', sale: 110 } ]);\n * ```\n *\n * @param data 数据源,json 数组。\n * @returns View\n */\n View.prototype.data = function (data) {\n set(this.options, 'data', data);\n this.isDataChanged = true;\n return this;\n };\n /**\n * @deprecated\n * This method will be removed at G2 V4.1. Replaced by {@link #data(data)}\n */\n View.prototype.source = function (data) {\n console.warn('This method will be removed at G2 V4.1. Please use chart.data() instead.');\n return this.data(data);\n };\n /**\n * 设置数据筛选规则。\n *\n * ```ts\n * view.filter('city', (value: any, datum: Datum) => value !== '杭州');\n *\n * // 删除 'city' 字段对应的筛选规则。\n * view.filter('city', null);\n * ```\n *\n * @param field 数据字段\n * @param condition 筛选规则\n * @returns View\n */\n View.prototype.filter = function (field, condition) {\n if (isFunction(condition)) {\n set(this.options, ['filters', field], condition);\n return this;\n }\n // condition 为空,则表示删除过滤条件\n if (!condition && get(this.options, ['filters', field])) {\n delete this.options.filters[field];\n }\n return this;\n };\n View.prototype.axis = function (field, axisOption) {\n if (isBoolean(field)) {\n set(this.options, ['axes'], field);\n } else {\n set(this.options, ['axes', field], axisOption);\n }\n return this;\n };\n View.prototype.legend = function (field, legendOption) {\n if (isBoolean(field)) {\n set(this.options, ['legends'], field);\n } else if (isString(field)) {\n set(this.options, ['legends', field], legendOption);\n if (isPlainObject(legendOption) && (legendOption === null || legendOption === void 0 ? void 0 : legendOption.selected)) {\n set(this.options, ['filters', field], function (name) {\n var _a;\n return (_a = legendOption === null || legendOption === void 0 ? void 0 : legendOption.selected[name]) !== null && _a !== void 0 ? _a : true;\n });\n }\n } else {\n // 设置全局的 legend 配置\n set(this.options, ['legends'], field);\n }\n return this;\n };\n View.prototype.scale = function (field, scaleOption) {\n var _this = this;\n if (isString(field)) {\n set(this.options, ['scales', field], scaleOption);\n } else if (isObject(field)) {\n each(field, function (v, k) {\n set(_this.options, ['scales', k], v);\n });\n }\n return this;\n };\n /**\n * tooltip 提示信息配置。\n *\n * ```ts\n * view.tooltip(false); // 关闭 tooltip\n *\n * view.tooltip({\n * shared: true\n * });\n * ```\n *\n * @param cfg Tooltip 配置,更详细的配置项参考:https://github.com/antvis/component#tooltip\n * @returns View\n */\n View.prototype.tooltip = function (cfg) {\n set(this.options, 'tooltip', cfg);\n return this;\n };\n /**\n * 辅助标记配置。\n *\n * ```ts\n * view.annotation().line({\n * start: ['min', 85],\n * end: ['max', 85],\n * style: {\n * stroke: '#595959',\n * lineWidth: 1,\n * lineDash: [3, 3],\n * },\n * });\n * ```\n * 更详细的配置项:https://github.com/antvis/component#annotation\n * @returns [[Annotation]]\n */\n View.prototype.annotation = function () {\n return this.getController('annotation');\n };\n /**\n * @deprecated\n * This method will be removed at G2 V4.1. Replaced by {@link #guide()}\n */\n View.prototype.guide = function () {\n console.warn('This method will be removed at G2 V4.1. Please use chart.annotation() instead.');\n return this.annotation();\n };\n View.prototype.coordinate = function (type, coordinateCfg) {\n // 提供语法糖,使用更简单\n if (isString(type)) {\n set(this.options, 'coordinate', {\n type: type,\n cfg: coordinateCfg\n });\n } else {\n set(this.options, 'coordinate', type);\n }\n // 更新 coordinate 配置\n this.coordinateController.update(this.options.coordinate);\n return this.coordinateController;\n };\n /**\n * @deprecated\n * This method will be removed at G2 V4.1. Replaced by {@link #coordinate()}\n */\n View.prototype.coord = function (type, coordinateCfg) {\n console.warn('This method will be removed at G2 V4.1. Please use chart.coordinate() instead.');\n // @ts-ignore\n return this.coordinate(type, coordinateCfg);\n };\n /**\n * view 分面绘制。\n *\n * ```ts\n * view.facet('rect', {\n * rowField: 'province',\n * columnField: 'category',\n * eachView: (innerView: View, facet?: FacetData) => {\n * innerView.line().position('city*sale');\n * },\n * });\n * ```\n *\n * @param type 分面类型\n * @param cfg 分面配置, [[FacetCfgMap]]\n * @returns View\n */\n View.prototype.facet = function (type, cfg) {\n // 先销毁掉之前的分面\n if (this.facetInstance) {\n this.facetInstance.destroy();\n }\n // 创建新的分面\n var Ctor = getFacet(type);\n if (!Ctor) {\n throw new Error(\"facet '\".concat(type, \"' is not exist!\"));\n }\n this.facetInstance = new Ctor(this, __assign(__assign({}, cfg), {\n type: type\n }));\n return this;\n };\n /*\n * 开启或者关闭动画。\n *\n * ```ts\n * view.animate(false);\n * ```\n *\n * @param status 动画状态,true 表示开始,false 表示关闭\n * @returns View\n */\n View.prototype.animate = function (status) {\n set(this.options, 'animate', status);\n return this;\n };\n /**\n * 更新配置项,用于配置项式声明。\n * @param options 配置项\n */\n View.prototype.updateOptions = function (options) {\n this.clear(); // 清空\n mix(this.options, options);\n // 需要把已存在的 view 销毁,否则会重复创建\n // 目前针对配置项还没有特别好的 view 更新机制,为了不影响主流流程,所以在这里直接销毁\n this.views.forEach(function (view) {\n return view.destroy();\n });\n this.views = [];\n this.initOptions();\n // 初始化坐标系大小,保证 padding 计算正确\n this.coordinateBBox = this.viewBBox;\n return this;\n };\n /**\n * 往 `view.options` 属性中存储配置项。\n * @param name 属性名称\n * @param opt 属性值\n * @returns view\n */\n View.prototype.option = function (name, opt) {\n // 对于内置的 option,避免覆盖。\n // name 在原型上,说明可能是内置 API,存在 option 被覆盖的风险,不处理\n if (View.prototype[name]) {\n throw new Error(\"Can't use built in variable name \\\"\".concat(name, \"\\\", please change another one.\"));\n }\n // 存入到 option 中\n set(this.options, name, opt);\n return this;\n };\n /**\n * 设置主题。\n *\n * ```ts\n * view.theme('dark'); // 'dark' 需要事先通过 `registerTheme()` 接口注册完成\n *\n * view.theme({ defaultColor: 'red' });\n * ```\n *\n * @param theme 主题名或者主题配置\n * @returns View\n */\n View.prototype.theme = function (theme) {\n this.themeObject = isObject(theme) ? deepMix({}, this.themeObject, createTheme(theme)) : getTheme(theme);\n return this;\n };\n /* end 一系列传入配置的 API */\n /**\n * Call the interaction based on the interaction name\n *\n * ```ts\n * view.interaction('my-interaction', { extra: 'hello world' });\n * ```\n * 详细文档可以参考:https://g2.antv.vision/zh/docs/api/general/interaction\n * @param name interaction name\n * @param cfg interaction config\n * @returns\n */\n View.prototype.interaction = function (name, cfg) {\n var existInteraction = this.interactions[name];\n // 存在则先销毁已有的\n if (existInteraction) {\n existInteraction.destroy();\n }\n // 新建交互实例\n var interaction = createInteraction(name, this, cfg);\n if (interaction) {\n interaction.init();\n this.interactions[name] = interaction;\n }\n return this;\n };\n /**\n * 移除当前 View 的 interaction\n * ```ts\n * view.removeInteraction('my-interaction');\n * ```\n * @param name interaction name\n */\n View.prototype.removeInteraction = function (name) {\n var existInteraction = this.interactions[name];\n // 存在则先销毁已有的\n if (existInteraction) {\n existInteraction.destroy();\n this.interactions[name] = undefined;\n }\n };\n /**\n * 修改数据,数据更新逻辑,数据更新仅仅影响当前这一层的 view\n *\n * ```ts\n * view.changeData([{ city: '北京', sale: '200' }]);\n * ```\n *\n * @param data\n * @returns void\n */\n View.prototype.changeData = function (data) {\n this.isDataChanged = true;\n this.emit(VIEW_LIFE_CIRCLE.BEFORE_CHANGE_DATA, Event.fromData(this, VIEW_LIFE_CIRCLE.BEFORE_CHANGE_DATA, null));\n // 1. 保存数据\n this.data(data);\n // 2. 渲染\n this.paint(true);\n // 3. 遍历子 view 进行 change data\n var views = this.views;\n for (var i = 0, len = views.length; i < len; i++) {\n var view = views[i];\n // FIXME 子 view 有自己的数据的情况,该如何处理?\n view.changeData(data);\n }\n this.emit(VIEW_LIFE_CIRCLE.AFTER_CHANGE_DATA, Event.fromData(this, VIEW_LIFE_CIRCLE.AFTER_CHANGE_DATA, null));\n };\n /* View 管理相关的 API */\n /**\n * 创建子 view\n *\n * ```ts\n * const innerView = view.createView({\n * start: { x: 0, y: 0 },\n * end: { x: 0.5, y: 0.5 },\n * padding: 8,\n * });\n * ```\n *\n * @param cfg\n * @returns View\n */\n View.prototype.createView = function (cfg) {\n // 将会在 4.1 版本中移除递归嵌套 view,仅仅只允许 chart - view 两层。\n // 这个 API 理论上用户量不多,所以暂时不发大版本,所以先暂时打一个 warning。\n if (this.parent && this.parent.parent) {\n // 存在 3 层 结构了\n console.warn('The view nesting recursive feature will be removed at G2 V4.1. Please avoid to use it.');\n }\n // 子 view 共享 options 配置数据\n var sharedOptions = {\n data: this.options.data,\n scales: clone(this.options.scales),\n axes: clone(this.options.axes),\n coordinate: clone(this.coordinateController.getOption()),\n tooltip: clone(this.options.tooltip),\n legends: clone(this.options.legends),\n animate: this.options.animate,\n visible: this.visible\n };\n var v = new View(__assign(__assign({\n parent: this,\n canvas: this.canvas,\n // 子 view 共用三层 group\n backgroundGroup: this.backgroundGroup.addGroup({\n zIndex: GROUP_Z_INDEX.BG\n }),\n middleGroup: this.middleGroup.addGroup({\n zIndex: GROUP_Z_INDEX.MID\n }),\n foregroundGroup: this.foregroundGroup.addGroup({\n zIndex: GROUP_Z_INDEX.FORE\n }),\n theme: this.themeObject,\n padding: this.padding\n }, cfg), {\n options: __assign(__assign({}, sharedOptions), get(cfg, 'options', {}))\n }));\n this.views.push(v);\n return v;\n };\n /**\n * @deprecated\n * This method will be removed at G2 V4.1. Replaced by {@link #createView()}\n */\n View.prototype.view = function (cfg) {\n console.warn('This method will be removed at G2 V4.1. Please use chart.createView() instead.');\n return this.createView(cfg);\n };\n /**\n * 删除一个子 view\n * @param view\n * @return removedView\n */\n View.prototype.removeView = function (view) {\n var removedView = remove(this.views, function (v) {\n return v === view;\n })[0];\n if (removedView) {\n removedView.destroy();\n }\n return removedView;\n };\n /* end View 管理相关的 API */\n // 一些 get 方法\n /**\n * 获取当前坐标系实例。\n * @returns [[Coordinate]]\n */\n View.prototype.getCoordinate = function () {\n return this.coordinateInstance;\n };\n /**\n * 获取当前 view 的主题配置。\n * @returns themeObject\n */\n View.prototype.getTheme = function () {\n return this.themeObject;\n };\n /**\n * 获得 x 轴字段的 scale 实例。\n * @returns view 中 Geometry 对于的 x scale\n */\n View.prototype.getXScale = function () {\n // 拿第一个 Geometry 的 X scale\n // 隐藏逻辑:一个 view 中的 Geometry 必须 x 字段一致\n var g = this.geometries[0];\n return g ? g.getXScale() : null;\n };\n /**\n * 获取 y 轴字段的 scales 实例。\n * @returns view 中 Geometry 对于的 y scale 数组\n */\n View.prototype.getYScales = function () {\n // 拿到所有的 Geometry 的 Y scale,然后去重\n var tmpMap = {};\n var yScales = [];\n this.geometries.forEach(function (g) {\n var yScale = g.getYScale();\n var field = yScale.field;\n if (!tmpMap[field]) {\n tmpMap[field] = true;\n yScales.push(yScale);\n }\n });\n return yScales;\n };\n /**\n * 获取 x 轴或者 y 轴对应的所有 scale 实例。\n * @param dimType x | y\n * @returns x 轴或者 y 轴对应的所有 scale 实例。\n */\n View.prototype.getScalesByDim = function (dimType) {\n var geometries = this.geometries;\n var scales = {};\n for (var i = 0, len = geometries.length; i < len; i++) {\n var geometry = geometries[i];\n var scale = dimType === 'x' ? geometry.getXScale() : geometry.getYScale();\n if (scale && !scales[scale.field]) {\n scales[scale.field] = scale;\n }\n }\n return scales;\n };\n /**\n * 根据字段名去获取 scale 实例。\n * @param field 数据字段名称\n * @param key id\n */\n View.prototype.getScale = function (field, key) {\n var defaultKey = key ? key : this.getScaleKey(field);\n // 调用根节点 view 的方法获取\n return this.getRootView().scalePool.getScale(defaultKey);\n };\n /**\n * @deprecated\n * This method will be removed at G2 V4.1. Please use `getScale`.\n */\n View.prototype.getScaleByField = function (field, key) {\n return this.getScale(field, key);\n };\n /**\n * 返回所有配置信息。\n * @returns 所有的 view API 配置。\n */\n View.prototype.getOptions = function () {\n return this.options;\n };\n /**\n * 获取 view 的数据(过滤后的数据)。\n * @returns 处理过滤器之后的数据。\n */\n View.prototype.getData = function () {\n return this.filteredData;\n };\n /**\n * 获取原始数据\n * @returns 传入 G2 的原始数据\n */\n View.prototype.getOriginalData = function () {\n return this.options.data;\n };\n /**\n * 获取布局后的边距 padding\n * @returns\n */\n View.prototype.getPadding = function () {\n return this.autoPadding.getPadding();\n };\n /**\n * 获取当前 view 有的 geometries\n * @returns\n */\n View.prototype.getGeometries = function () {\n return this.geometries;\n };\n /**\n * 获取 view 中的所有 geome\n */\n View.prototype.getElements = function () {\n return reduce(this.geometries, function (elements, geometry) {\n return elements.concat(geometry.getElements());\n }, []);\n };\n /**\n * 根据一定的规则查找 Geometry 的 Elements。\n *\n * ```typescript\n * getElementsBy((element) => {\n * const data = element.getData();\n *\n * return data.a === 'a';\n * });\n * ```\n *\n * @param condition 定义查找规则的回调函数。\n * @returns\n */\n View.prototype.getElementsBy = function (condition) {\n return this.getElements().filter(function (el) {\n return condition(el);\n });\n };\n /**\n * 获得绘制的层级 group。\n * @param layer 层级名称。\n * @returns 对应层级的 Group。\n */\n View.prototype.getLayer = function (layer) {\n return layer === LAYER.BG ? this.backgroundGroup : layer === LAYER.MID ? this.middleGroup : layer === LAYER.FORE ? this.foregroundGroup : this.foregroundGroup;\n };\n /**\n * 对外暴露方法,判断一个点是否在绘图区域(即坐标系范围)内部。\n * @param point 坐标点\n */\n View.prototype.isPointInPlot = function (point) {\n return isPointInCoordinate(this.getCoordinate(), point);\n };\n /**\n * 获得所有的 legend 对应的 attribute 实例。\n * @returns 维度字段的 Attribute 数组\n */\n View.prototype.getLegendAttributes = function () {\n return flatten(this.geometries.map(function (g) {\n return g.getGroupAttributes();\n }));\n };\n /**\n * 获取所有的分组字段的 scale 实例。\n * @returns 获得分组字段的 scale 实例数组。\n */\n View.prototype.getGroupScales = function () {\n // 拿到所有的 Geometry 的 分组字段 scale,然后打平去重\n var scales = this.geometries.map(function (g) {\n return g.getGroupScales();\n });\n return uniq(flatten(scales));\n };\n /**\n * 获取 G.Canvas 实例。\n * @returns G.Canvas 画布实例。\n */\n View.prototype.getCanvas = function () {\n return this.getRootView().canvas;\n };\n /**\n * 获得根节点 view。\n */\n View.prototype.getRootView = function () {\n var v = this;\n while (true) {\n if (v.parent) {\n v = v.parent;\n continue;\n }\n break;\n }\n return v;\n };\n /**\n * 获取该数据在可视化后,对应的画布坐标点。\n * @param data 原始数据记录\n * @returns 对应的画布坐标点\n */\n View.prototype.getXY = function (data) {\n var coordinate = this.getCoordinate();\n var xScales = this.getScalesByDim('x');\n var yScales = this.getScalesByDim('y');\n var x;\n var y;\n each(data, function (value, key) {\n if (xScales[key]) {\n x = xScales[key].scale(value);\n }\n if (yScales[key]) {\n y = yScales[key].scale(value);\n }\n });\n if (!isNil(x) && !isNil(y)) {\n return coordinate.convert({\n x: x,\n y: y\n });\n }\n };\n /**\n * 获取 name 对应的 controller 实例\n * @param name\n */\n View.prototype.getController = function (name) {\n return find(this.controllers, function (c) {\n return c.name === name;\n });\n };\n /**\n * 显示 point 坐标点对应的 tooltip。\n * @param point 画布坐标点\n * @returns View\n */\n View.prototype.showTooltip = function (point) {\n var tooltip = this.getController('tooltip');\n if (tooltip) {\n tooltip.showTooltip(point);\n }\n return this;\n };\n /**\n * 隐藏 tooltip。\n * @returns View\n */\n View.prototype.hideTooltip = function () {\n var tooltip = this.getController('tooltip');\n if (tooltip) {\n tooltip.hideTooltip();\n }\n return this;\n };\n /**\n * 将 tooltip 锁定到当前位置不能移动。\n * @returns View\n */\n View.prototype.lockTooltip = function () {\n var tooltip = this.getController('tooltip');\n if (tooltip) {\n tooltip.lockTooltip();\n }\n return this;\n };\n /**\n * 将 tooltip 锁定解除。\n * @returns View\n */\n View.prototype.unlockTooltip = function () {\n var tooltip = this.getController('tooltip');\n if (tooltip) {\n tooltip.unlockTooltip();\n }\n return this;\n };\n /**\n * 是否锁定 tooltip。\n * @returns 是否锁定\n */\n View.prototype.isTooltipLocked = function () {\n var tooltip = this.getController('tooltip');\n return tooltip && tooltip.isTooltipLocked();\n };\n /**\n * 获取当前 point 对应的 tooltip 数据项。\n * @param point 坐标点\n * @returns tooltip 数据项\n */\n View.prototype.getTooltipItems = function (point) {\n var tooltip = this.getController('tooltip');\n return tooltip ? tooltip.getTooltipItems(point) : [];\n };\n /**\n * 获取逼近的点的数据集合\n * @param point 当前坐标点\n * @returns 数据\n */\n View.prototype.getSnapRecords = function (point) {\n var geometries = this.geometries;\n var rst = [];\n for (var i = 0, len = geometries.length; i < len; i++) {\n var geom = geometries[i];\n var dataArray = geom.dataArray;\n geom.sort(dataArray); // 先进行排序,便于 tooltip 查找\n var record = void 0;\n for (var j = 0, dataLen = dataArray.length; j < dataLen; j++) {\n var data = dataArray[j];\n record = findDataByPoint(point, data, geom);\n if (record) {\n rst.push(record);\n }\n }\n }\n // 同样递归处理子 views\n var views = this.views;\n for (var i = 0, len = views.length; i < len; i++) {\n var view = views[i];\n var snapRecords = view.getSnapRecords(point);\n rst = rst.concat(snapRecords);\n }\n return rst;\n };\n /**\n * 获取所有的 pure component 组件,用于布局。\n */\n View.prototype.getComponents = function () {\n var components = [];\n var controllers = this.controllers;\n for (var i = 0, len = controllers.length; i < len; i++) {\n var controller = controllers[i];\n components = components.concat(controller.getComponents());\n }\n return components;\n };\n /**\n * 将 data 数据进行过滤。\n * @param data\n * @returns 过滤之后的数据\n */\n View.prototype.filterData = function (data) {\n var filters = this.options.filters;\n // 不存在 filters,则不需要进行数据过滤\n if (size(filters) === 0) {\n return data;\n }\n // 存在过滤器,则逐个执行过滤,过滤器之间是 与 的关系\n return filter(data, function (datum, idx) {\n // 所有的 filter 字段\n var fields = Object.keys(filters);\n // 所有的条件都通过,才算通过\n return fields.every(function (field) {\n var condition = filters[field];\n // condition 返回 true,则保留\n return condition(datum[field], datum, idx);\n });\n });\n };\n /**\n * 对某一个字段进行过滤\n * @param field\n * @param data\n */\n View.prototype.filterFieldData = function (field, data) {\n var filters = this.options.filters;\n var condition = get(filters, field);\n if (isUndefined(condition)) {\n return data;\n }\n return data.filter(function (datum, idx) {\n return condition(datum[field], datum, idx);\n });\n };\n /**\n * 调整 coordinate 的坐标范围。\n */\n View.prototype.adjustCoordinate = function () {\n var _a = this.getCoordinate(),\n curStart = _a.start,\n curEnd = _a.end;\n var start = this.coordinateBBox.bl;\n var end = this.coordinateBBox.tr;\n // 在 defaultLayoutFn 中只会在 coordinateBBox 发生变化的时候会调用 adjustCoordinate(),所以不用担心被置位\n if (isEqual(curStart, start) && isEqual(curEnd, end)) {\n this.isCoordinateChanged = false;\n // 如果大小没有变化则不更新\n return;\n }\n this.isCoordinateChanged = true;\n this.coordinateInstance = this.coordinateController.adjust(start, end);\n };\n View.prototype.paint = function (isUpdate) {\n this.renderDataRecursive(isUpdate);\n // 处理 sync scale 的逻辑\n this.syncScale();\n this.emit(VIEW_LIFE_CIRCLE.BEFORE_PAINT);\n // 初始化图形、组件位置,计算 padding\n this.renderPaddingRecursive(isUpdate);\n // 布局图形、组件\n this.renderLayoutRecursive(isUpdate);\n // 背景色 shape\n this.renderBackgroundStyleShape();\n // 最终的绘制 render\n this.renderPaintRecursive(isUpdate);\n this.emit(VIEW_LIFE_CIRCLE.AFTER_PAINT);\n this.isDataChanged = false; // 渲染完毕复位\n };\n /**\n * 渲染背景样式的 shape。\n * 放到 view 中创建的原因是让使用 view 绘制图形的时候,也能够处理背景色\n */\n View.prototype.renderBackgroundStyleShape = function () {\n // 只有根节点才处理\n if (this.parent) {\n return;\n }\n var background = get(this.themeObject, 'background');\n // 配置了背景色\n if (background) {\n // 1. 不存在则创建\n if (!this.backgroundStyleRectShape) {\n this.backgroundStyleRectShape = this.backgroundGroup.addShape('rect', {\n attrs: {},\n zIndex: -1,\n // 背景色 shape 不设置事件捕获\n capture: false\n });\n this.backgroundStyleRectShape.toBack();\n }\n // 2. 有了 shape 之后设置背景,位置(更新的时候)\n var _a = this.viewBBox,\n x = _a.x,\n y = _a.y,\n width = _a.width,\n height = _a.height;\n this.backgroundStyleRectShape.attr({\n fill: background,\n x: x,\n y: y,\n width: width,\n height: height\n });\n } else {\n // 没有配置背景色\n if (this.backgroundStyleRectShape) {\n this.backgroundStyleRectShape.remove(true);\n this.backgroundStyleRectShape = undefined;\n }\n }\n };\n /**\n * 递归计算每个 view 的 padding 值,coordinateBBox 和 coordinateInstance\n * @param isUpdate\n */\n View.prototype.renderPaddingRecursive = function (isUpdate) {\n // 1. 子 view 大小相对 coordinateBBox,changeSize 的时候需要重新计算\n this.calculateViewBBox();\n // 2. 更新 coordinate\n this.adjustCoordinate();\n // 3. 初始化组件 component\n this.initComponents(isUpdate);\n // 4. 布局计算每隔 view 的 padding 值\n // 4.1. 自动加 auto padding -> absolute padding,并且增加 appendPadding\n this.autoPadding = calculatePadding(this).shrink(parsePadding(this.appendPadding));\n // 4.2. 计算出新的 coordinateBBox,更新 Coordinate\n // 这里必须保留,原因是后面子 view 的 viewBBox 或根据 parent 的 coordinateBBox\n this.coordinateBBox = this.viewBBox.shrink(this.autoPadding.getPadding());\n this.adjustCoordinate();\n // 刷新 tooltip (tooltip crosshairs 依赖 coordinate 位置)\n var tooltipController = this.controllers.find(function (c) {\n return c.name === 'tooltip';\n });\n tooltipController.update();\n // 同样递归处理子 views\n var views = this.views;\n for (var i = 0, len = views.length; i < len; i++) {\n var view = views[i];\n view.renderPaddingRecursive(isUpdate);\n }\n };\n /**\n * 递归处理 view 的布局,最终是计算各个 view 的 coordinateBBox 和 coordinateInstance\n * @param isUpdate\n */\n View.prototype.renderLayoutRecursive = function (isUpdate) {\n // 1. 同步子 view padding\n // 根据配置获取 padding\n var syncViewPaddingFn = this.syncViewPadding === true ? defaultSyncViewPadding : isFunction(this.syncViewPadding) ? this.syncViewPadding : undefined;\n if (syncViewPaddingFn) {\n syncViewPaddingFn(this, this.views, PaddingCal);\n // 同步 padding 之后,更新 coordinate\n this.views.forEach(function (v) {\n v.coordinateBBox = v.viewBBox.shrink(v.autoPadding.getPadding());\n v.adjustCoordinate();\n });\n }\n // 3. 将 view 中的组件按照 view padding 移动到对应的位置\n this.doLayout();\n // 同样递归处理子 views\n var views = this.views;\n for (var i = 0, len = views.length; i < len; i++) {\n var view = views[i];\n view.renderLayoutRecursive(isUpdate);\n }\n };\n /**\n * 最终递归绘制组件和图形\n * @param isUpdate\n */\n View.prototype.renderPaintRecursive = function (isUpdate) {\n var middleGroup = this.middleGroup;\n if (this.limitInPlot) {\n var _a = getCoordinateClipCfg(this.coordinateInstance),\n type = _a.type,\n attrs = _a.attrs;\n middleGroup.setClip({\n type: type,\n attrs: attrs\n });\n } else {\n // 清除已有的 clip\n middleGroup.setClip(undefined);\n }\n // 1. 渲染几何标记\n this.paintGeometries(isUpdate);\n // 2. 绘制组件\n this.renderComponents(isUpdate);\n // 同样递归处理子 views\n var views = this.views;\n for (var i = 0, len = views.length; i < len; i++) {\n var view = views[i];\n view.renderPaintRecursive(isUpdate);\n }\n };\n // end Get 方法\n /**\n * 创建 scale,递归到顶层 view 去创建和缓存 scale\n * @param field\n * @param data\n * @param scaleDef\n * @param key\n */\n View.prototype.createScale = function (field, data, scaleDef, key) {\n // 1. 合并 field 对应的 scaleDef,合并原则是底层覆盖顶层(就近原则)\n var currentScaleDef = get(this.options.scales, [field]);\n var mergedScaleDef = __assign(__assign({}, currentScaleDef), scaleDef);\n // 2. 是否存在父 view,在则递归,否则创建\n if (this.parent) {\n return this.parent.createScale(field, data, mergedScaleDef, key);\n }\n // 3. 在根节点 view 通过 scalePool 创建\n return this.scalePool.createScale(field, data, mergedScaleDef, key);\n };\n /**\n * 递归渲染中的数据处理\n * @param isUpdate\n */\n View.prototype.renderDataRecursive = function (isUpdate) {\n // 1. 处理数据\n this.doFilterData();\n // 2. 创建实例\n this.createCoordinate();\n // 3. 初始化 Geometry\n this.initGeometries(isUpdate);\n // 4. 处理分面逻辑,最终都是生成子 view 和 geometry\n this.renderFacet(isUpdate);\n // 同样递归处理子 views\n var views = this.views;\n for (var i = 0, len = views.length; i < len; i++) {\n var view = views[i];\n view.renderDataRecursive(isUpdate);\n }\n };\n /**\n * 计算 region,计算实际的像素范围坐标\n * @private\n */\n View.prototype.calculateViewBBox = function () {\n var x;\n var y;\n var width;\n var height;\n if (this.parent) {\n var bbox = this.parent.coordinateBBox;\n // 存在 parent, 那么就是通过父容器大小计算\n x = bbox.x;\n y = bbox.y;\n width = bbox.width;\n height = bbox.height;\n } else {\n // 顶层容器,从 canvas 中取值 宽高\n x = 0;\n y = 0;\n width = this.canvas.get('width');\n height = this.canvas.get('height');\n }\n var _a = this.region,\n start = _a.start,\n end = _a.end;\n // 根据 region 计算当前 view 的 bbox 大小。\n var viewBBox = new BBox(x + width * start.x, y + height * start.y, width * (end.x - start.x), height * (end.y - start.y));\n if (!this.viewBBox || !this.viewBBox.isEqual(viewBBox)) {\n // viewBBox 发生变化的时候进行更新\n this.viewBBox = new BBox(x + width * start.x, y + height * start.y, width * (end.x - start.x), height * (end.y - start.y));\n }\n // 初始的 coordinate bbox 大小\n this.coordinateBBox = this.viewBBox;\n };\n /**\n * 初始化事件机制:G 4.0 底层内置支持 name:event 的机制,那么只要所有组件都有自己的 name 即可。\n *\n * G2 的事件只是获取事件委托,然后在 view 嵌套结构中,形成事件冒泡机制。\n * 当前 view 只委托自己 view 中的 Component 和 Geometry 事件,并向上冒泡\n * @private\n */\n View.prototype.initEvents = function () {\n // 三层 group 中的 shape 事件都会通过 G 冒泡上来的\n this.foregroundGroup.on('*', this.onDelegateEvents);\n this.middleGroup.on('*', this.onDelegateEvents);\n this.backgroundGroup.on('*', this.onDelegateEvents);\n this.canvas.on('*', this.onCanvasEvent);\n };\n /**\n * 初始化插件\n */\n View.prototype.initComponentController = function () {\n var usedControllers = this.usedControllers;\n for (var i = 0, len = usedControllers.length; i < len; i++) {\n var controllerName = usedControllers[i];\n var Ctor = getComponentController(controllerName);\n if (Ctor) {\n this.controllers.push(new Ctor(this));\n }\n }\n };\n View.prototype.createViewEvent = function (evt) {\n var shape = evt.shape,\n name = evt.name;\n var data = shape ? shape.get('origin') : null;\n // 事件在 view 嵌套中冒泡(暂不提供阻止冒泡的机制)\n var e = new Event(this, evt, data);\n e.type = name;\n return e;\n };\n /**\n * 处理 PLOT_EVENTS\n * plot event 需要处理所有的基础事件,并判断是否在画布中,然后再决定是否要 emit。\n * 对于 mouseenter、mouseleave 比较特殊,需要做一下数学比较。\n * @param e\n */\n View.prototype.doPlotEvent = function (e) {\n var type = e.type,\n x = e.x,\n y = e.y;\n var point = {\n x: x,\n y: y\n };\n var ALL_EVENTS = ['mousedown', 'mouseup', 'mousemove', 'mouseleave', 'mousewheel', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'click', 'dblclick', 'contextmenu'];\n if (ALL_EVENTS.includes(type)) {\n var currentInPlot = this.isPointInPlot(point);\n var newEvent = e.clone();\n if (currentInPlot) {\n var TYPE = \"plot:\".concat(type); // 组合 plot 事件\n newEvent.type = TYPE;\n this.emit(TYPE, newEvent);\n if (type === 'mouseleave' || type === 'touchend') {\n // 在plot 内部却离开画布\n this.isPreMouseInPlot = false;\n }\n }\n // 对于 mouseenter, mouseleave 的计算处理\n if (type === 'mousemove' || type === 'touchmove') {\n if (this.isPreMouseInPlot && !currentInPlot) {\n if (type === 'mousemove') {\n newEvent.type = PLOT_EVENTS.MOUSE_LEAVE;\n this.emit(PLOT_EVENTS.MOUSE_LEAVE, newEvent);\n }\n newEvent.type = PLOT_EVENTS.LEAVE;\n this.emit(PLOT_EVENTS.LEAVE, newEvent);\n } else if (!this.isPreMouseInPlot && currentInPlot) {\n if (type === 'mousemove') {\n newEvent.type = PLOT_EVENTS.MOUSE_ENTER;\n this.emit(PLOT_EVENTS.MOUSE_ENTER, newEvent);\n }\n newEvent.type = PLOT_EVENTS.ENTER;\n this.emit(PLOT_EVENTS.ENTER, newEvent);\n }\n // 赋新的状态值\n this.isPreMouseInPlot = currentInPlot;\n } else if (type === 'mouseleave' || type === 'touchend') {\n // 可能不在 currentInPlot 中\n if (this.isPreMouseInPlot) {\n if (type === 'mouseleave') {\n newEvent.type = PLOT_EVENTS.MOUSE_LEAVE;\n this.emit(PLOT_EVENTS.MOUSE_LEAVE, newEvent);\n }\n newEvent.type = PLOT_EVENTS.LEAVE;\n this.emit(PLOT_EVENTS.LEAVE, newEvent);\n this.isPreMouseInPlot = false;\n }\n }\n }\n };\n // view 生命周期 —— 渲染流程\n /**\n * 处理筛选器,筛选数据\n * @private\n */\n View.prototype.doFilterData = function () {\n var data = this.options.data;\n this.filteredData = this.filterData(data);\n };\n /**\n * 初始化 Geometries\n * @private\n */\n View.prototype.initGeometries = function (isUpdate) {\n // 初始化图形的之前,先创建 / 更新 scales\n this.createOrUpdateScales();\n // 实例化 Geometry,然后 view 将所有的 scale 管理起来\n var coordinate = this.getCoordinate();\n var scaleDefs = get(this.options, 'scales', {});\n var geometries = this.geometries;\n for (var i = 0, len = geometries.length; i < len; i++) {\n var geometry = geometries[i];\n // 保持 scales 引用不要变化\n geometry.scales = this.getGeometryScales();\n var cfg = {\n coordinate: coordinate,\n scaleDefs: scaleDefs,\n data: this.filteredData,\n theme: this.themeObject,\n isDataChanged: this.isDataChanged,\n isCoordinateChanged: this.isCoordinateChanged\n };\n if (isUpdate) {\n // 数据发生更新\n geometry.update(cfg);\n } else {\n geometry.init(cfg);\n }\n }\n // Geometry 初始化之后,生成了 scale,然后进行调整 scale 配置\n this.adjustScales();\n };\n /**\n * 根据 Geometry 的所有字段创建 scales\n * 如果存在,则更新,不存在则创建\n */\n View.prototype.createOrUpdateScales = function () {\n var fields = this.getScaleFields();\n var groupedFields = this.getGroupedFields();\n var _a = this.getOptions(),\n data = _a.data,\n _b = _a.scales,\n scales = _b === void 0 ? {} : _b;\n var filteredData = this.filteredData;\n for (var i = 0, len = fields.length; i < len; i++) {\n var field = fields[i];\n var scaleDef = scales[field];\n // 调用方法,递归去创建\n var key = this.getScaleKey(field);\n this.createScale(field,\n // 分组字段的 scale 使用未过滤的数据创建\n groupedFields.includes(field) ? data : filteredData, scaleDef, key);\n // 缓存从当前 view 创建的 scale key\n this.createdScaleKeys.set(key, true);\n }\n };\n /**\n * 处理 scale 同步逻辑\n */\n View.prototype.syncScale = function () {\n // 最终调用 root view 的\n this.getRootView().scalePool.sync(this.getCoordinate(), this.theme);\n };\n /**\n * 获得 Geometry 中的 scale 对象\n */\n View.prototype.getGeometryScales = function () {\n var fields = this.getScaleFields();\n var scales = {};\n for (var i = 0; i < fields.length; i++) {\n var field = fields[i];\n scales[field] = this.getScaleByField(field);\n }\n return scales;\n };\n View.prototype.getScaleFields = function () {\n var fields = [];\n var tmpMap = new Map();\n var geometries = this.geometries;\n for (var i = 0; i < geometries.length; i++) {\n var geometry = geometries[i];\n var geometryScales = geometry.getScaleFields();\n uniq(geometryScales, fields, tmpMap);\n }\n return fields;\n };\n View.prototype.getGroupedFields = function () {\n var fields = [];\n var tmpMap = new Map();\n var geometries = this.geometries;\n for (var i = 0; i < geometries.length; i++) {\n var geometry = geometries[i];\n var groupFields = geometry.getGroupFields();\n uniq(groupFields, fields, tmpMap);\n }\n return fields;\n };\n /**\n * 调整 scale 配置\n * @private\n */\n View.prototype.adjustScales = function () {\n // 调整目前包括:\n // 分类 scale,调整 range 范围\n this.adjustCategoryScaleRange();\n };\n /**\n * 调整分类 scale 的 range,防止超出坐标系外面\n * @private\n */\n View.prototype.adjustCategoryScaleRange = function () {\n var _this = this;\n var xyScales = __spreadArray([this.getXScale()], __read(this.getYScales()), false).filter(function (e) {\n return !!e;\n });\n var coordinate = this.getCoordinate();\n var scaleOptions = this.options.scales;\n each(xyScales, function (scale) {\n var field = scale.field,\n values = scale.values,\n isCategory = scale.isCategory,\n isIdentity = scale.isIdentity;\n // 分类或者 identity 的 scale 才进行处理\n if (isCategory || isIdentity) {\n // 存在 value 值,且用户没有配置 range 配置\n if (values && !get(scaleOptions, [field, 'range'])) {\n // 更新 range\n scale.range = getDefaultCategoryScaleRange(scale, coordinate, _this.theme);\n }\n }\n });\n };\n /**\n * 根据 options 配置、Geometry 字段配置,自动生成 components\n * @param isUpdate 是否是更新\n * @private\n */\n View.prototype.initComponents = function (isUpdate) {\n // 先全部清空,然后 render\n var controllers = this.controllers;\n for (var i = 0; i < controllers.length; i++) {\n var controller = controllers[i];\n // 更新则走更新逻辑;否则清空载重绘\n if (isUpdate) {\n controller.update();\n } else {\n controller.clear();\n controller.render();\n }\n }\n };\n View.prototype.doLayout = function () {\n this.layoutFunc(this);\n };\n /**\n * 创建坐标系\n * @private\n */\n View.prototype.createCoordinate = function () {\n var start = this.coordinateBBox.bl;\n var end = this.coordinateBBox.tr;\n this.coordinateInstance = this.coordinateController.create(start, end);\n };\n /**\n * 根据 options 配置自动渲染 geometry\n * @private\n */\n View.prototype.paintGeometries = function (isUpdate) {\n var doAnimation = this.options.animate;\n // geometry 的 paint 阶段\n var coordinate = this.getCoordinate();\n var canvasRegion = {\n x: this.viewBBox.x,\n y: this.viewBBox.y,\n minX: this.viewBBox.minX,\n minY: this.viewBBox.minY,\n maxX: this.viewBBox.maxX,\n maxY: this.viewBBox.maxY,\n width: this.viewBBox.width,\n height: this.viewBBox.height\n };\n var geometries = this.geometries;\n for (var i = 0; i < geometries.length; i++) {\n var geometry = geometries[i];\n geometry.coordinate = coordinate;\n geometry.canvasRegion = canvasRegion;\n if (!doAnimation) {\n // 如果 view 不执行动画,那么 view 下所有的 geometry 都不执行动画\n geometry.animate(false);\n }\n geometry.paint(isUpdate);\n }\n };\n /**\n * 最后的绘制组件\n * @param isUpdate\n */\n View.prototype.renderComponents = function (isUpdate) {\n var components = this.getComponents();\n // 先全部清空,然后 render\n for (var i = 0; i < components.length; i++) {\n var co = components[i];\n co.component.render();\n }\n };\n /**\n * 渲染分面,会在其中进行数据分面,然后进行子 view 创建\n * @param isUpdate\n */\n View.prototype.renderFacet = function (isUpdate) {\n if (this.facetInstance) {\n if (isUpdate) {\n this.facetInstance.update();\n } else {\n this.facetInstance.clear();\n // 计算分面数据\n this.facetInstance.init();\n // 渲染组件和 views\n this.facetInstance.render();\n }\n }\n };\n View.prototype.initOptions = function () {\n var _this = this;\n var _a = this.options,\n _b = _a.geometries,\n geometries = _b === void 0 ? [] : _b,\n _c = _a.interactions,\n interactions = _c === void 0 ? [] : _c,\n _d = _a.views,\n views = _d === void 0 ? [] : _d,\n _e = _a.annotations,\n annotations = _e === void 0 ? [] : _e,\n coordinate = _a.coordinate,\n events = _a.events,\n facets = _a.facets;\n // 设置坐标系\n if (this.coordinateController) {\n // 更新 coordinate controller\n coordinate && this.coordinateController.update(coordinate);\n } else {\n // 创建 coordinate controller\n this.coordinateController = new CoordinateController(coordinate);\n }\n // 创建 geometry 实例\n for (var i = 0; i < geometries.length; i++) {\n var geometryOption = geometries[i];\n this.createGeometry(geometryOption);\n }\n // 创建 interactions 实例\n for (var j = 0; j < interactions.length; j++) {\n var interactionOption = interactions[j];\n var type = interactionOption.type,\n cfg = interactionOption.cfg;\n this.interaction(type, cfg);\n }\n // 创建 view 实例\n for (var k = 0; k < views.length; k++) {\n var viewOption = views[k];\n this.createView(viewOption);\n }\n // 设置 annotation\n var annotationComponent = this.getController('annotation');\n for (var l = 0; l < annotations.length; l++) {\n var annotationOption = annotations[l];\n annotationComponent.annotation(annotationOption);\n }\n // 设置 events\n if (events) {\n each(events, function (eventCallback, eventName) {\n _this.on(eventName, eventCallback);\n });\n }\n if (facets) {\n each(facets, function (facet) {\n var type = facet.type,\n rest = __rest(facet, [\"type\"]);\n _this.facet(type, rest);\n });\n }\n };\n View.prototype.createGeometry = function (geometryOption) {\n var type = geometryOption.type,\n _a = geometryOption.cfg,\n cfg = _a === void 0 ? {} : _a;\n if (this[type]) {\n var geometry_1 = this[type](cfg);\n each(geometryOption, function (v, k) {\n if (isFunction(geometry_1[k])) {\n geometry_1[k](v);\n }\n });\n }\n };\n /**\n * scale key 的创建方式\n * @param field\n */\n View.prototype.getScaleKey = function (field) {\n return \"\".concat(this.id, \"-\").concat(field);\n };\n return View;\n}(Base);\nexport { View };\n/**\n * 注册 geometry 组件\n * @param name\n * @param Ctor\n * @returns Geometry\n */\nexport function registerGeometry(name, Ctor) {\n // 语法糖,在 view API 上增加原型方法\n View.prototype[name.toLowerCase()] = function (cfg) {\n if (cfg === void 0) {\n cfg = {};\n }\n var props = __assign({\n /** 图形容器 */\n container: this.middleGroup.addGroup(),\n labelsContainer: this.foregroundGroup.addGroup()\n }, cfg);\n var geometry = new Ctor(props);\n this.geometries.push(geometry);\n return geometry;\n };\n}\nexport default View;","import { __assign, __extends } from \"tslib\";\nimport { debounce, each, isString } from '@antv/util';\nimport { GROUP_Z_INDEX, VIEW_LIFE_CIRCLE } from '../constant';\nimport { getEngine } from '../engine';\nimport { createDom, getChartSize, removeDom, modifyCSS } from '../util/dom';\nimport View from './view';\n/**\n * Chart 类,是使用 G2 进行绘图的入口。\n */\nvar Chart = /** @class */function (_super) {\n __extends(Chart, _super);\n // @ts-ignore\n function Chart(props) {\n var _this = this;\n var container = props.container,\n width = props.width,\n height = props.height,\n _a = props.autoFit,\n autoFit = _a === void 0 ? false : _a,\n padding = props.padding,\n appendPadding = props.appendPadding,\n _b = props.renderer,\n renderer = _b === void 0 ? 'canvas' : _b,\n pixelRatio = props.pixelRatio,\n _c = props.localRefresh,\n localRefresh = _c === void 0 ? true : _c,\n _d = props.visible,\n visible = _d === void 0 ? true : _d,\n _e = props.supportCSSTransform,\n supportCSSTransform = _e === void 0 ? false : _e,\n _f = props.defaultInteractions,\n defaultInteractions = _f === void 0 ? ['tooltip', 'legend-filter', 'legend-active', 'continuous-filter', 'ellipsis-text', 'axis-description'] : _f,\n options = props.options,\n limitInPlot = props.limitInPlot,\n theme = props.theme,\n syncViewPadding = props.syncViewPadding;\n var ele = isString(container) ? document.getElementById(container) : container;\n // 生成内部正式绘制的 div 元素\n var wrapperElement = createDom('
        ');\n ele.appendChild(wrapperElement);\n // if autoFit, use the container size, to avoid the graph render twice.\n var size = getChartSize(ele, autoFit, width, height);\n var G = getEngine(renderer);\n var canvas = new G.Canvas(__assign({\n container: wrapperElement,\n pixelRatio: pixelRatio,\n localRefresh: localRefresh,\n supportCSSTransform: supportCSSTransform\n }, size));\n // 调用 view 的创建\n _this = _super.call(this, {\n parent: null,\n canvas: canvas,\n // create 3 group layers for views.\n backgroundGroup: canvas.addGroup({\n zIndex: GROUP_Z_INDEX.BG\n }),\n middleGroup: canvas.addGroup({\n zIndex: GROUP_Z_INDEX.MID\n }),\n foregroundGroup: canvas.addGroup({\n zIndex: GROUP_Z_INDEX.FORE\n }),\n padding: padding,\n appendPadding: appendPadding,\n visible: visible,\n options: options,\n limitInPlot: limitInPlot,\n theme: theme,\n syncViewPadding: syncViewPadding\n }) || this;\n /**\n * when container size changed, change chart size props, and re-render.\n */\n _this.onResize = debounce(function () {\n _this.forceFit();\n }, 300);\n _this.ele = ele;\n _this.canvas = canvas;\n _this.width = size.width;\n _this.height = size.height;\n _this.autoFit = autoFit;\n _this.localRefresh = localRefresh;\n _this.renderer = renderer;\n _this.wrapperElement = wrapperElement;\n // 自适应大小\n _this.updateCanvasStyle();\n _this.bindAutoFit();\n _this.initDefaultInteractions(defaultInteractions);\n return _this;\n }\n Chart.prototype.initDefaultInteractions = function (interactions) {\n var _this = this;\n each(interactions, function (interaction) {\n _this.interaction(interaction);\n });\n };\n /**\n * 设置 WAI-ARIA 无障碍标签。如何根据图形语法自动生成 arial 内容?\n * @param ariaOption\n */\n Chart.prototype.aria = function (ariaOption) {\n var ATTR = 'aria-label';\n if (ariaOption === false) {\n this.ele.removeAttribute(ATTR);\n } else {\n this.ele.setAttribute(ATTR, ariaOption.label);\n }\n };\n /**\n * 改变图表大小,同时重新渲染。\n * @param width 图表宽度\n * @param height 图表高度\n * @returns\n */\n Chart.prototype.changeSize = function (width, height) {\n // 如果宽高一致,那么 changeSize 不执行任何操作\n if (this.width === width && this.height === height) {\n return this;\n }\n this.emit(VIEW_LIFE_CIRCLE.BEFORE_CHANGE_SIZE);\n this.width = width;\n this.height = height;\n this.canvas.changeSize(width, height);\n // 重新渲染\n this.render(true);\n this.emit(VIEW_LIFE_CIRCLE.AFTER_CHANGE_SIZE);\n return this;\n };\n /**\n * 清空图表,同时清除掉 aria 配置\n */\n Chart.prototype.clear = function () {\n _super.prototype.clear.call(this);\n this.aria(false);\n };\n /**\n * 销毁图表,同时解绑事件,销毁创建的 G.Canvas 实例。\n * @returns void\n */\n Chart.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.unbindAutoFit();\n this.canvas.destroy();\n removeDom(this.wrapperElement);\n this.wrapperElement = null;\n };\n /**\n * 显示或隐藏图表\n * @param visible 是否可见,true 表示显示,false 表示隐藏\n * @returns\n */\n Chart.prototype.changeVisible = function (visible) {\n _super.prototype.changeVisible.call(this, visible); // 需要更新 visible 变量\n this.wrapperElement.style.display = visible ? '' : 'none';\n return this;\n };\n /**\n * 自动根据容器大小 resize 画布\n */\n Chart.prototype.forceFit = function () {\n // skip if already destroyed\n if (!this.destroyed) {\n // 注意第二参数用 true,意思是即时 autoFit = false,forceFit() 调用之后一样是适配容器\n var _a = getChartSize(this.ele, true, this.width, this.height),\n width = _a.width,\n height = _a.height;\n this.changeSize(width, height);\n }\n };\n Chart.prototype.updateCanvasStyle = function () {\n modifyCSS(this.canvas.get('el'), {\n display: 'inline-block',\n verticalAlign: 'middle'\n });\n };\n Chart.prototype.bindAutoFit = function () {\n if (this.autoFit) {\n window.addEventListener('resize', this.onResize);\n }\n };\n Chart.prototype.unbindAutoFit = function () {\n if (this.autoFit) {\n window.removeEventListener('resize', this.onResize);\n }\n };\n return Chart;\n}(View);\nexport default Chart;","import { each } from '@antv/util';\n/**\n * Component Controller 规范需要定义的基类\n * 1. 规范的 option 输入\n * 2. 统一的信息获取 API\n * 3. 明确定义的组件事件(名称、数据)\n */\nvar Controller = /** @class */function () {\n function Controller(view) {\n /** 是否可见 */\n this.visible = true;\n /** 所有的 component */\n this.components = [];\n this.view = view;\n }\n /**\n * clear\n * @param includeOption 是否清空 option 配置项(used in annotation)\n */\n Controller.prototype.clear = function (includeOption) {\n // destroy all components\n each(this.components, function (co) {\n co.component.destroy();\n });\n // clear all component instance\n this.components = [];\n };\n /**\n * destroy the component\n */\n Controller.prototype.destroy = function () {\n this.clear();\n };\n /**\n * get all components\n * @returns components array\n */\n Controller.prototype.getComponents = function () {\n return this.components;\n };\n /**\n * change visibility of component\n * @param visible\n */\n Controller.prototype.changeVisible = function (visible) {\n if (this.visible === visible) {\n return;\n }\n this.components.forEach(function (co) {\n if (visible) {\n co.component.show();\n } else {\n co.component.hide();\n }\n });\n this.visible = visible;\n };\n return Controller;\n}();\nexport { Controller };","import { __assign, __extends, __values } from \"tslib\";\nimport { deepMix, find, get, isEqual, isFunction, mix, isString, isBoolean, flatten, isArray } from '@antv/util';\nimport { Crosshair, HtmlTooltip } from '../../dependents';\nimport { getAngleByPoint, getDistanceToCenter, getCoordinateClipCfg } from '../../util/coordinate';\nimport { polarToCartesian } from '../../util/graphics';\nimport { findItemsFromView } from '../../util/tooltip';\nimport { BBox } from '../../util/bbox';\nimport { Controller } from './base';\nimport Event from '../event';\n// Filter duplicates, use `name`, `color`, `value` and `title` property values as condition\nfunction uniq(items) {\n var uniqItems = [];\n var _loop_1 = function _loop_1(index) {\n var item = items[index];\n var result = find(uniqItems, function (subItem) {\n return subItem.color === item.color && subItem.name === item.name && subItem.value === item.value && subItem.title === item.title;\n });\n if (!result) {\n uniqItems.push(item);\n }\n };\n for (var index = 0; index < items.length; index++) {\n _loop_1(index);\n }\n return uniqItems;\n}\n/** @ignore */\nvar Tooltip = /** @class */function (_super) {\n __extends(Tooltip, _super);\n function Tooltip() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.isLocked = false;\n return _this;\n }\n Object.defineProperty(Tooltip.prototype, \"name\", {\n get: function get() {\n return 'tooltip';\n },\n enumerable: false,\n configurable: true\n });\n Tooltip.prototype.init = function () {};\n Tooltip.prototype.isVisible = function () {\n var option = this.view.getOptions().tooltip;\n return option !== false;\n };\n Tooltip.prototype.render = function () {};\n /**\n * Shows tooltip\n * @param point\n */\n Tooltip.prototype.showTooltip = function (point) {\n this.point = point;\n if (!this.isVisible()) {\n // 如果设置 tooltip(false) 则始终不显示\n return;\n }\n var view = this.view;\n var items = this.getTooltipItems(point);\n if (!items.length) {\n // 无内容则不展示,同时 tooltip 需要隐藏\n this.hideTooltip();\n return;\n }\n var title = this.getTitle(items);\n var dataPoint = {\n x: items[0].x,\n y: items[0].y\n }; // 数据点位置\n view.emit('tooltip:show', Event.fromData(view, 'tooltip:show', __assign({\n items: items,\n title: title\n }, point)));\n var cfg = this.getTooltipCfg();\n var follow = cfg.follow,\n showMarkers = cfg.showMarkers,\n showCrosshairs = cfg.showCrosshairs,\n showContent = cfg.showContent,\n marker = cfg.marker;\n var lastItems = this.items;\n var lastTitle = this.title;\n if (!isEqual(lastTitle, title) || !isEqual(lastItems, items)) {\n // 内容发生变化了更新 tooltip\n view.emit('tooltip:change', Event.fromData(view, 'tooltip:change', __assign({\n items: items,\n title: title\n }, point)));\n if (isFunction(showContent) ? showContent(items) : showContent) {\n // 展示 tooltip 内容框才渲染 tooltip\n if (!this.tooltip) {\n // 延迟生成\n this.renderTooltip();\n }\n this.tooltip.update(mix({}, cfg, {\n items: this.getItemsAfterProcess(items),\n title: title\n }, follow ? point : {}));\n this.tooltip.show();\n }\n if (showMarkers) {\n // 展示 tooltipMarkers,tooltipMarkers 跟随数据\n this.renderTooltipMarkers(items, marker);\n }\n } else {\n // 内容未发生变化,则更新位置\n if (this.tooltip && follow) {\n this.tooltip.update(point);\n this.tooltip.show(); // tooltip 有可能被隐藏,需要保证显示状态\n }\n\n if (this.tooltipMarkersGroup) {\n this.tooltipMarkersGroup.show();\n }\n }\n this.items = items;\n this.title = title;\n if (showCrosshairs) {\n // 展示 tooltip 辅助线\n var isCrosshairsFollowCursor = get(cfg, ['crosshairs', 'follow'], false); // 辅助线是否要跟随鼠标\n this.renderCrosshairs(isCrosshairsFollowCursor ? point : dataPoint, cfg);\n }\n };\n Tooltip.prototype.hideTooltip = function () {\n var follow = this.getTooltipCfg().follow;\n if (!follow) {\n this.point = null;\n return;\n }\n // hide the tooltipMarkers\n var tooltipMarkersGroup = this.tooltipMarkersGroup;\n if (tooltipMarkersGroup) {\n tooltipMarkersGroup.hide();\n }\n // hide crosshairs\n var xCrosshair = this.xCrosshair;\n var yCrosshair = this.yCrosshair;\n if (xCrosshair) {\n xCrosshair.hide();\n }\n if (yCrosshair) {\n yCrosshair.hide();\n }\n var tooltip = this.tooltip;\n if (tooltip) {\n tooltip.hide();\n }\n this.view.emit('tooltip:hide', Event.fromData(this.view, 'tooltip:hide', {}));\n this.point = null;\n };\n /**\n * lockTooltip\n */\n Tooltip.prototype.lockTooltip = function () {\n this.isLocked = true;\n if (this.tooltip) {\n // tooltip contianer 可捕获事件\n this.tooltip.setCapture(true);\n }\n };\n /**\n * unlockTooltip\n */\n Tooltip.prototype.unlockTooltip = function () {\n this.isLocked = false;\n var cfg = this.getTooltipCfg();\n if (this.tooltip) {\n // 重置 capture 属性\n this.tooltip.setCapture(cfg.capture);\n }\n };\n /**\n * isTooltipLocked\n */\n Tooltip.prototype.isTooltipLocked = function () {\n return this.isLocked;\n };\n Tooltip.prototype.clear = function () {\n var _a = this,\n tooltip = _a.tooltip,\n xCrosshair = _a.xCrosshair,\n yCrosshair = _a.yCrosshair,\n tooltipMarkersGroup = _a.tooltipMarkersGroup;\n if (tooltip) {\n tooltip.hide();\n tooltip.clear();\n }\n if (xCrosshair) {\n xCrosshair.clear();\n }\n if (yCrosshair) {\n yCrosshair.clear();\n }\n if (tooltipMarkersGroup) {\n tooltipMarkersGroup.clear();\n }\n // 如果 customContent 不为空,就重新生成 tooltip\n if (tooltip === null || tooltip === void 0 ? void 0 : tooltip.get('customContent')) {\n this.tooltip.destroy();\n this.tooltip = null;\n }\n // title 和 items 需要清空, 否则 tooltip 内容会出现置空的情况\n // 即:需要走进 !isEqual(lastTitle, title) || !isEqual(lastItems, items) 的逻辑,更新 tooltip 的内容\n this.title = null;\n this.items = null;\n };\n Tooltip.prototype.destroy = function () {\n if (this.tooltip) {\n this.tooltip.destroy();\n }\n if (this.xCrosshair) {\n this.xCrosshair.destroy();\n }\n if (this.yCrosshair) {\n this.yCrosshair.destroy();\n }\n if (this.guideGroup) {\n this.guideGroup.remove(true);\n }\n this.reset();\n };\n Tooltip.prototype.reset = function () {\n this.items = null;\n this.title = null;\n this.tooltipMarkersGroup = null;\n this.tooltipCrosshairsGroup = null;\n this.xCrosshair = null;\n this.yCrosshair = null;\n this.tooltip = null;\n this.guideGroup = null;\n this.isLocked = false;\n this.point = null;\n };\n Tooltip.prototype.changeVisible = function (visible) {\n if (this.visible === visible) {\n return;\n }\n var _a = this,\n tooltip = _a.tooltip,\n tooltipMarkersGroup = _a.tooltipMarkersGroup,\n xCrosshair = _a.xCrosshair,\n yCrosshair = _a.yCrosshair;\n if (visible) {\n if (tooltip) {\n tooltip.show();\n }\n if (tooltipMarkersGroup) {\n tooltipMarkersGroup.show();\n }\n if (xCrosshair) {\n xCrosshair.show();\n }\n if (yCrosshair) {\n yCrosshair.show();\n }\n } else {\n if (tooltip) {\n tooltip.hide();\n }\n if (tooltipMarkersGroup) {\n tooltipMarkersGroup.hide();\n }\n if (xCrosshair) {\n xCrosshair.hide();\n }\n if (yCrosshair) {\n yCrosshair.hide();\n }\n }\n this.visible = visible;\n };\n Tooltip.prototype.getTooltipItems = function (point) {\n var e_1, _a, e_2, _b, e_3, _c;\n var items = this.findItemsFromView(this.view, point);\n if (items.length) {\n // 三层\n items = flatten(items);\n try {\n for (var items_1 = __values(items), items_1_1 = items_1.next(); !items_1_1.done; items_1_1 = items_1.next()) {\n var itemArr = items_1_1.value;\n try {\n for (var itemArr_1 = (e_2 = void 0, __values(itemArr)), itemArr_1_1 = itemArr_1.next(); !itemArr_1_1.done; itemArr_1_1 = itemArr_1.next()) {\n var item = itemArr_1_1.value;\n var _d = item.mappingData,\n x = _d.x,\n y = _d.y;\n item.x = isArray(x) ? x[x.length - 1] : x;\n item.y = isArray(y) ? y[y.length - 1] : y;\n }\n } catch (e_2_1) {\n e_2 = {\n error: e_2_1\n };\n } finally {\n try {\n if (itemArr_1_1 && !itemArr_1_1.done && (_b = itemArr_1.return)) _b.call(itemArr_1);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (items_1_1 && !items_1_1.done && (_a = items_1.return)) _a.call(items_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n var shared = this.getTooltipCfg().shared;\n // shared: false 代表只显示当前拾取到的 shape 的数据,但是一个 view 会有多个 Geometry,所以有可能会拾取到多个 shape\n if (shared === false && items.length > 1) {\n var snapItem = items[0];\n var min = Math.abs(point.y - snapItem[0].y);\n try {\n for (var items_2 = __values(items), items_2_1 = items_2.next(); !items_2_1.done; items_2_1 = items_2.next()) {\n var aItem = items_2_1.value;\n var yDistance = Math.abs(point.y - aItem[0].y);\n if (yDistance <= min) {\n snapItem = aItem;\n min = yDistance;\n }\n }\n } catch (e_3_1) {\n e_3 = {\n error: e_3_1\n };\n } finally {\n try {\n if (items_2_1 && !items_2_1.done && (_c = items_2.return)) _c.call(items_2);\n } finally {\n if (e_3) throw e_3.error;\n }\n }\n items = [snapItem];\n }\n return uniq(flatten(items));\n }\n return [];\n };\n Tooltip.prototype.layout = function () {};\n Tooltip.prototype.update = function () {\n if (this.point) {\n this.showTooltip(this.point);\n }\n if (this.tooltip) {\n // #2279 修复resize之后tooltip越界的问题\n // 确保tooltip已经创建的情况下\n var canvas = this.view.getCanvas();\n // TODO 逍为 tooltip 的区域不应该是 canvas,而应该是整个 特别是在图比较小的时候\n // 更新 region\n this.tooltip.set('region', {\n start: {\n x: 0,\n y: 0\n },\n end: {\n x: canvas.get('width'),\n y: canvas.get('height')\n }\n });\n }\n };\n /**\n * 当前鼠标点是在 enter tooltip 中\n * @param point\n */\n Tooltip.prototype.isCursorEntered = function (point) {\n // 是可捕获的,并且点在 tooltip dom 上\n if (this.tooltip) {\n var el = this.tooltip.getContainer();\n var capture = this.tooltip.get('capture');\n if (el && capture) {\n var _a = el.getBoundingClientRect(),\n x = _a.x,\n y = _a.y,\n width = _a.width,\n height = _a.height;\n return new BBox(x, y, width, height).isPointIn(point);\n }\n }\n return false;\n };\n // 获取 tooltip 配置,因为用户可能会通过 view.tooltip() 重新配置 tooltip,所以就不做缓存,每次直接读取\n Tooltip.prototype.getTooltipCfg = function () {\n var view = this.view;\n var option = view.getOptions().tooltip;\n var processOption = this.processCustomContent(option);\n var theme = view.getTheme();\n var defaultCfg = get(theme, ['components', 'tooltip'], {});\n var enterable = get(processOption, 'enterable', defaultCfg.enterable);\n return deepMix({}, defaultCfg, processOption, {\n capture: enterable || this.isLocked ? true : false\n });\n };\n // process customContent\n Tooltip.prototype.processCustomContent = function (option) {\n if (isBoolean(option) || !get(option, 'customContent')) {\n return option;\n }\n var currentCustomContent = option.customContent;\n var customContent = function customContent(title, items) {\n var content = currentCustomContent(title, items) || '';\n return isString(content) ? '
        ' + content + '
        ' : content;\n };\n return __assign(__assign({}, option), {\n customContent: customContent\n });\n };\n Tooltip.prototype.getTitle = function (items) {\n var title = items[0].title || items[0].name;\n this.title = title;\n return title;\n };\n Tooltip.prototype.renderTooltip = function () {\n var canvas = this.view.getCanvas();\n var region = {\n start: {\n x: 0,\n y: 0\n },\n end: {\n x: canvas.get('width'),\n y: canvas.get('height')\n }\n };\n var cfg = this.getTooltipCfg();\n var tooltip = new HtmlTooltip(__assign(__assign({\n parent: canvas.get('el').parentNode,\n region: region\n }, cfg), {\n visible: false,\n crosshairs: null\n }));\n tooltip.init();\n this.tooltip = tooltip;\n };\n Tooltip.prototype.renderTooltipMarkers = function (items, marker) {\n var e_4, _a;\n var tooltipMarkersGroup = this.getTooltipMarkersGroup();\n var rootView = this.view.getRootView();\n var limitInPlot = rootView.limitInPlot;\n try {\n for (var items_3 = __values(items), items_3_1 = items_3.next(); !items_3_1.done; items_3_1 = items_3.next()) {\n var item = items_3_1.value;\n var x = item.x,\n y = item.y;\n // 有裁剪就剪切\n if (limitInPlot || (tooltipMarkersGroup === null || tooltipMarkersGroup === void 0 ? void 0 : tooltipMarkersGroup.getClip())) {\n var _b = getCoordinateClipCfg(rootView.getCoordinate()),\n type = _b.type,\n attrs_1 = _b.attrs;\n tooltipMarkersGroup === null || tooltipMarkersGroup === void 0 ? void 0 : tooltipMarkersGroup.setClip({\n type: type,\n attrs: attrs_1\n });\n } else {\n // 清除已有的 clip\n tooltipMarkersGroup === null || tooltipMarkersGroup === void 0 ? void 0 : tooltipMarkersGroup.setClip(undefined);\n }\n var theme = this.view.getTheme();\n var markerDefaultCfg = get(theme, ['components', 'tooltip', 'marker'], {});\n var attrs = __assign(__assign({\n fill: item.color,\n symbol: 'circle',\n shadowColor: item.color\n }, isFunction(marker) ? __assign(__assign({}, markerDefaultCfg), marker(item)) : marker), {\n x: x,\n y: y\n });\n tooltipMarkersGroup.addShape('marker', {\n attrs: attrs\n });\n }\n } catch (e_4_1) {\n e_4 = {\n error: e_4_1\n };\n } finally {\n try {\n if (items_3_1 && !items_3_1.done && (_a = items_3.return)) _a.call(items_3);\n } finally {\n if (e_4) throw e_4.error;\n }\n }\n };\n Tooltip.prototype.renderCrosshairs = function (point, cfg) {\n var crosshairsType = get(cfg, ['crosshairs', 'type'], 'x'); // 默认展示 x 轴上的辅助线\n if (crosshairsType === 'x') {\n if (this.yCrosshair) {\n this.yCrosshair.hide();\n }\n this.renderXCrosshairs(point, cfg);\n } else if (crosshairsType === 'y') {\n if (this.xCrosshair) {\n this.xCrosshair.hide();\n }\n this.renderYCrosshairs(point, cfg);\n } else if (crosshairsType === 'xy') {\n this.renderXCrosshairs(point, cfg);\n this.renderYCrosshairs(point, cfg);\n }\n };\n // 渲染 x 轴上的 tooltip 辅助线\n Tooltip.prototype.renderXCrosshairs = function (point, tooltipCfg) {\n var coordinate = this.getViewWithGeometry(this.view).getCoordinate();\n var start;\n var end;\n if (coordinate.isRect) {\n if (coordinate.isTransposed) {\n start = {\n x: coordinate.start.x,\n y: point.y\n };\n end = {\n x: coordinate.end.x,\n y: point.y\n };\n } else {\n start = {\n x: point.x,\n y: coordinate.end.y\n };\n end = {\n x: point.x,\n y: coordinate.start.y\n };\n }\n } else {\n // 极坐标下 x 轴上的 crosshairs 表现为半径\n var angle = getAngleByPoint(coordinate, point);\n var center = coordinate.getCenter();\n var radius = coordinate.getRadius();\n end = polarToCartesian(center.x, center.y, radius, angle);\n start = center;\n }\n var cfg = deepMix({\n start: start,\n end: end,\n container: this.getTooltipCrosshairsGroup()\n }, get(tooltipCfg, 'crosshairs', {}), this.getCrosshairsText('x', point, tooltipCfg));\n delete cfg.type; // 与 Crosshairs 组件的 type 冲突故删除\n var xCrosshair = this.xCrosshair;\n if (xCrosshair) {\n xCrosshair.update(cfg);\n } else {\n xCrosshair = new Crosshair.Line(cfg);\n xCrosshair.init();\n }\n xCrosshair.render();\n xCrosshair.show();\n this.xCrosshair = xCrosshair;\n };\n // 渲染 y 轴上的辅助线\n Tooltip.prototype.renderYCrosshairs = function (point, tooltipCfg) {\n var coordinate = this.getViewWithGeometry(this.view).getCoordinate();\n var cfg;\n var type;\n if (coordinate.isRect) {\n var start = void 0;\n var end = void 0;\n if (coordinate.isTransposed) {\n start = {\n x: point.x,\n y: coordinate.end.y\n };\n end = {\n x: point.x,\n y: coordinate.start.y\n };\n } else {\n start = {\n x: coordinate.start.x,\n y: point.y\n };\n end = {\n x: coordinate.end.x,\n y: point.y\n };\n }\n cfg = {\n start: start,\n end: end\n };\n type = 'Line';\n } else {\n // 极坐标下 y 轴上的 crosshairs 表现为圆弧\n cfg = {\n center: coordinate.getCenter(),\n // @ts-ignore\n radius: getDistanceToCenter(coordinate, point),\n startAngle: coordinate.startAngle,\n endAngle: coordinate.endAngle\n };\n type = 'Circle';\n }\n cfg = deepMix({\n container: this.getTooltipCrosshairsGroup()\n }, cfg, get(tooltipCfg, 'crosshairs', {}), this.getCrosshairsText('y', point, tooltipCfg));\n delete cfg.type; // 与 Crosshairs 组件的 type 冲突故删除\n var yCrosshair = this.yCrosshair;\n if (yCrosshair) {\n // 如果坐标系发生直角坐标系与极坐标的切换操作\n if (coordinate.isRect && yCrosshair.get('type') === 'circle' || !coordinate.isRect && yCrosshair.get('type') === 'line') {\n yCrosshair = new Crosshair[type](cfg);\n yCrosshair.init();\n } else {\n yCrosshair.update(cfg);\n }\n } else {\n yCrosshair = new Crosshair[type](cfg);\n yCrosshair.init();\n }\n yCrosshair.render();\n yCrosshair.show();\n this.yCrosshair = yCrosshair;\n };\n Tooltip.prototype.getCrosshairsText = function (type, point, tooltipCfg) {\n var textCfg = get(tooltipCfg, ['crosshairs', 'text']);\n var follow = get(tooltipCfg, ['crosshairs', 'follow']);\n var items = this.items;\n if (textCfg) {\n var view = this.getViewWithGeometry(this.view);\n // 需要展示文本\n var firstItem = items[0];\n var xScale = view.getXScale();\n var yScale = view.getYScales()[0];\n var xValue = void 0;\n var yValue = void 0;\n if (follow) {\n // 如果需要跟随鼠标移动,就需要将当前鼠标坐标点转换为对应的数值\n var invertPoint = this.view.getCoordinate().invert(point);\n xValue = xScale.invert(invertPoint.x); // 转换为原始值\n yValue = yScale.invert(invertPoint.y); // 转换为原始值\n } else {\n xValue = firstItem.data[xScale.field];\n yValue = firstItem.data[yScale.field];\n }\n var content = type === 'x' ? xValue : yValue;\n if (isFunction(textCfg)) {\n textCfg = textCfg(type, content, items, point);\n } else {\n textCfg.content = content;\n }\n return {\n text: textCfg\n };\n }\n };\n // 获取存储 tooltipMarkers 和 crosshairs 的容器\n Tooltip.prototype.getGuideGroup = function () {\n if (!this.guideGroup) {\n var foregroundGroup = this.view.foregroundGroup;\n this.guideGroup = foregroundGroup.addGroup({\n name: 'tooltipGuide',\n capture: false\n });\n }\n return this.guideGroup;\n };\n // 获取 tooltipMarkers 存储的容器\n Tooltip.prototype.getTooltipMarkersGroup = function () {\n var tooltipMarkersGroup = this.tooltipMarkersGroup;\n if (tooltipMarkersGroup && !tooltipMarkersGroup.destroyed) {\n tooltipMarkersGroup.clear();\n tooltipMarkersGroup.show();\n } else {\n tooltipMarkersGroup = this.getGuideGroup().addGroup({\n name: 'tooltipMarkersGroup'\n });\n tooltipMarkersGroup.toFront();\n this.tooltipMarkersGroup = tooltipMarkersGroup;\n }\n return tooltipMarkersGroup;\n };\n // 获取 tooltip crosshairs 存储的容器\n Tooltip.prototype.getTooltipCrosshairsGroup = function () {\n var tooltipCrosshairsGroup = this.tooltipCrosshairsGroup;\n if (!tooltipCrosshairsGroup) {\n tooltipCrosshairsGroup = this.getGuideGroup().addGroup({\n name: 'tooltipCrosshairsGroup',\n capture: false\n });\n tooltipCrosshairsGroup.toBack();\n this.tooltipCrosshairsGroup = tooltipCrosshairsGroup;\n }\n return tooltipCrosshairsGroup;\n };\n Tooltip.prototype.findItemsFromView = function (view, point) {\n var e_5, _a;\n if (view.getOptions().tooltip === false) {\n // 如果 view 关闭了 tooltip\n return [];\n }\n var tooltipCfg = this.getTooltipCfg();\n var result = findItemsFromView(view, point, tooltipCfg);\n try {\n // 递归查找,并合并结果\n for (var _b = __values(view.views), _c = _b.next(); !_c.done; _c = _b.next()) {\n var childView = _c.value;\n result = result.concat(this.findItemsFromView(childView, point));\n }\n } catch (e_5_1) {\n e_5 = {\n error: e_5_1\n };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_5) throw e_5.error;\n }\n }\n return result;\n };\n // FIXME: hack 方法\n // 因为 tooltip 的交互是挂载在 Chart 上,所以当chart 上没有绘制 Geometry 的时候,就查找不到数据,并且绘图区域同子 View 的区域不同\n Tooltip.prototype.getViewWithGeometry = function (view) {\n var _this = this;\n if (view.geometries.length) {\n return view;\n }\n return find(view.views, function (childView) {\n return _this.getViewWithGeometry(childView);\n });\n };\n /**\n * 根据用户配置的 items 配置,来进行用户自定义的处理,并返回最终的 items\n * 默认不做任何处理\n */\n Tooltip.prototype.getItemsAfterProcess = function (originalItems) {\n var customItems = this.getTooltipCfg().customItems;\n var fn = customItems ? customItems : function (v) {\n return v;\n };\n return fn(originalItems);\n };\n return Tooltip;\n}(Controller);\nexport default Tooltip;","var ANIMATIONS_MAP = {};\n/**\n * 根据名称获取对应的动画执行函数\n * @param type 动画函数名称\n */\nexport function getAnimation(type) {\n return ANIMATIONS_MAP[type.toLowerCase()];\n}\n/**\n * 注册动画执行函数\n * @param type 动画执行函数名称\n * @param animation 动画执行函数\n */\nexport function registerAnimation(type, animation) {\n ANIMATIONS_MAP[type.toLowerCase()] = animation;\n}","import { __assign } from \"tslib\";\nimport { deepMix, get, isFunction } from '@antv/util';\nimport { FIELD_ORIGIN } from '../constant';\nimport { getAnimation } from './animation';\n// 默认的动画参数配置\nexport var DEFAULT_ANIMATE_CFG = {\n appear: {\n duration: 450,\n easing: 'easeQuadOut'\n },\n update: {\n duration: 400,\n easing: 'easeQuadInOut'\n },\n enter: {\n duration: 400,\n easing: 'easeQuadInOut'\n },\n leave: {\n duration: 350,\n easing: 'easeQuadIn'\n } // 更新时销毁动画配置\n};\n// 各个 Geometry 默认的动画执行函数\nvar GEOMETRY_ANIMATE_CFG = {\n interval: function interval(coordinate) {\n return {\n enter: {\n animation: coordinate.isRect ? coordinate.isTransposed ? 'scale-in-x' : 'scale-in-y' : 'fade-in'\n },\n update: {\n animation: coordinate.isPolar && coordinate.isTransposed ? 'sector-path-update' : null\n },\n leave: {\n animation: 'fade-out'\n }\n };\n },\n line: {\n enter: {\n animation: 'fade-in'\n },\n leave: {\n animation: 'fade-out'\n }\n },\n path: {\n enter: {\n animation: 'fade-in'\n },\n leave: {\n animation: 'fade-out'\n }\n },\n point: {\n appear: {\n animation: 'zoom-in'\n },\n enter: {\n animation: 'zoom-in'\n },\n leave: {\n animation: 'zoom-out'\n }\n },\n area: {\n enter: {\n animation: 'fade-in'\n },\n leave: {\n animation: 'fade-out'\n }\n },\n polygon: {\n enter: {\n animation: 'fade-in'\n },\n leave: {\n animation: 'fade-out'\n }\n },\n schema: {\n enter: {\n animation: 'fade-in'\n },\n leave: {\n animation: 'fade-out'\n }\n },\n edge: {\n enter: {\n animation: 'fade-in'\n },\n leave: {\n animation: 'fade-out'\n }\n },\n label: {\n appear: {\n animation: 'fade-in',\n delay: 450\n },\n enter: {\n animation: 'fade-in'\n },\n update: {\n animation: 'position-update'\n },\n leave: {\n animation: 'fade-out'\n }\n }\n};\n// 各个 Geometry 默认的群组出场动画\nvar GEOMETRY_GROUP_APPEAR_ANIMATION = {\n line: function line() {\n return {\n animation: 'wave-in'\n };\n },\n area: function area() {\n return {\n animation: 'wave-in'\n };\n },\n path: function path() {\n return {\n animation: 'fade-in'\n };\n },\n interval: function interval(coordinate) {\n var animation;\n if (coordinate.isRect) {\n animation = coordinate.isTransposed ? 'grow-in-x' : 'grow-in-y';\n } else {\n animation = 'grow-in-xy';\n if (coordinate.isPolar && coordinate.isTransposed) {\n // pie chart\n animation = 'wave-in';\n }\n }\n return {\n animation: animation\n };\n },\n schema: function schema(coordinate) {\n var animation;\n if (coordinate.isRect) {\n animation = coordinate.isTransposed ? 'grow-in-x' : 'grow-in-y';\n } else {\n animation = 'grow-in-xy';\n }\n return {\n animation: animation\n };\n },\n polygon: function polygon() {\n return {\n animation: 'fade-in',\n duration: 500\n };\n },\n edge: function edge() {\n return {\n animation: 'fade-in'\n };\n }\n};\n// 解析用户的动画配置\nfunction parseAnimateConfig(animateCfg, data) {\n return {\n delay: isFunction(animateCfg.delay) ? animateCfg.delay(data) : animateCfg.delay,\n easing: isFunction(animateCfg.easing) ? animateCfg.easing(data) : animateCfg.easing,\n duration: isFunction(animateCfg.duration) ? animateCfg.duration(data) : animateCfg.duration,\n callback: animateCfg.callback,\n repeat: animateCfg.repeat\n };\n}\n/**\n * @ignore\n * 获取 elementName 对应的动画配置,当声明了 `animateType`,则返回 `animateType` 对应的动画配置\n * @param elementName 元素名称\n * @param coordinate 做表弟类型\n * @param animateType 可选,动画类型\n */\nexport function getDefaultAnimateCfg(elementName, coordinate, animateType) {\n var animateCfg = GEOMETRY_ANIMATE_CFG[elementName];\n if (animateCfg) {\n if (isFunction(animateCfg)) {\n animateCfg = animateCfg(coordinate);\n }\n animateCfg = deepMix({}, DEFAULT_ANIMATE_CFG, animateCfg);\n if (animateType) {\n return animateCfg[animateType];\n }\n }\n return animateCfg;\n}\n/**\n * @ignore\n * 工具函数\n * 根据用户传入的配置为 shape 执行动画\n * @param shape 执行动画的图形元素\n * @param animateCfg 动画配置\n * @param cfg 额外的信息\n */\nexport function doAnimate(shape, animateCfg, cfg) {\n var data = get(shape.get('origin'), 'data', FIELD_ORIGIN);\n var animation = animateCfg.animation; // 获取动画执行函数\n var parsedAnimateCfg = parseAnimateConfig(animateCfg, data);\n if (animation) {\n // 用户声明了动画执行函数\n var animateFunction = getAnimation(animation);\n if (animateFunction) {\n animateFunction(shape, parsedAnimateCfg, cfg);\n }\n } else {\n // 没有声明,则根据 toAttrs 做差值动画\n shape.animate(cfg.toAttrs, parsedAnimateCfg);\n }\n}\n/**\n * @ignore\n * 执行 Geometry 群组入场动画\n * @param container 执行群组动画的图形元素\n * @param animateCfg 动画配置\n * @param geometryType geometry 类型\n * @param coordinate 坐标系对象\n * @param minYPoint y 轴最小值对应的画布坐标点\n */\nexport function doGroupAppearAnimate(container, animateCfg, geometryType, coordinate, minYPoint) {\n if (GEOMETRY_GROUP_APPEAR_ANIMATION[geometryType]) {\n var defaultCfg = GEOMETRY_GROUP_APPEAR_ANIMATION[geometryType](coordinate);\n var animation = getAnimation(get(defaultCfg, 'animation', ''));\n if (animation) {\n var cfg = __assign(__assign(__assign({}, DEFAULT_ANIMATE_CFG.appear), defaultCfg), animateCfg);\n container.stopAnimate(); // 先结束当前 container 动画\n animation(container, cfg, {\n coordinate: coordinate,\n minYPoint: minYPoint,\n toAttrs: null\n });\n }\n }\n}","/**\n * Name of Background Shape\n */\nexport var BACKGROUND_SHAPE = 'element-background';","import { __assign, __extends } from \"tslib\";\nimport { deepMix, each, get, isArray, isEmpty, isEqual, isFunction, isString } from '@antv/util';\n// 暂未发包\n// @ts-ignore\nimport { propagationDelegate } from '@antv/component';\nimport { doAnimate } from '../../animate';\nimport Base from '../../base';\nimport { getReplaceAttrs } from '../../util/graphics';\nimport { GEOMETRY_LIFE_CIRCLE } from '../../constant';\nimport { BACKGROUND_SHAPE } from '../shape/constant';\n/**\n * Element 图形元素。\n * 定义:在 G2 中,我们会将数据通过图形语法映射成不同的图形,比如点图,数据集中的每条数据会对应一个点,柱状图每条数据对应一个柱子,线图则是一组数据对应一条折线,Element 即一条/一组数据对应的图形元素,它代表一条数据或者一个数据集,在图形层面,它可以是单个 Shape 也可以是多个 Shape,我们称之为图形元素。\n */\nvar Element = /** @class */function (_super) {\n __extends(Element, _super);\n function Element(cfg) {\n var _this = _super.call(this, cfg) || this;\n /** 保存 shape 对应的 label */\n _this.labelShape = [];\n // 存储当前开启的状态\n _this.states = [];\n var shapeFactory = cfg.shapeFactory,\n container = cfg.container,\n offscreenGroup = cfg.offscreenGroup,\n elementIndex = cfg.elementIndex,\n _a = cfg.visible,\n visible = _a === void 0 ? true : _a;\n _this.shapeFactory = shapeFactory;\n _this.container = container;\n _this.offscreenGroup = offscreenGroup;\n _this.visible = visible;\n _this.elementIndex = elementIndex;\n return _this;\n }\n /**\n * 绘制图形。\n * @param model 绘制数据。\n * @param isUpdate 可选,是否是更新发生后的绘制。\n */\n Element.prototype.draw = function (model, isUpdate) {\n if (isUpdate === void 0) {\n isUpdate = false;\n }\n this.model = model;\n this.data = model.data; // 存储原始数据\n this.shapeType = this.getShapeType(model);\n // 绘制图形\n this.drawShape(model, isUpdate);\n if (this.visible === false) {\n // 用户在初始化的时候声明 visible: false\n this.changeVisible(false);\n }\n };\n /**\n * 更新图形。\n * @param model 更新的绘制数据。\n */\n Element.prototype.update = function (model) {\n var _a = this,\n shapeFactory = _a.shapeFactory,\n shape = _a.shape;\n if (!shape) {\n return;\n }\n // 更新数据\n this.model = model;\n this.data = model.data;\n this.shapeType = this.getShapeType(model);\n // step 1: 更新 shape 携带的信息\n this.setShapeInfo(shape, model);\n // step 2: 使用虚拟 Group 重新绘制 shape,然后更新当前 shape\n var offscreenGroup = this.getOffscreenGroup();\n var newShape = shapeFactory.drawShape(this.shapeType, model, offscreenGroup);\n // @ts-ignore\n newShape.cfg.data = this.data;\n // @ts-ignore\n newShape.cfg.origin = model;\n // label 需要使用\n newShape.cfg.element = this;\n // step 3: 同步 shape 样式\n this.syncShapeStyle(shape, newShape, this.getStates(), this.getAnimateCfg('update'));\n };\n /**\n * 销毁 element 实例。\n */\n Element.prototype.destroy = function () {\n var _a = this,\n shapeFactory = _a.shapeFactory,\n shape = _a.shape;\n if (shape) {\n var animateCfg = this.getAnimateCfg('leave');\n if (animateCfg) {\n // 指定了动画配置则执行销毁动画\n doAnimate(shape, animateCfg, {\n coordinate: shapeFactory.coordinate,\n toAttrs: __assign({}, shape.attr())\n });\n } else {\n // 否则直接销毁\n shape.remove(true);\n }\n }\n // reset\n this.states = [];\n this.shapeFactory = undefined;\n this.container = undefined;\n this.shape = undefined;\n this.animate = undefined;\n this.geometry = undefined;\n this.labelShape = [];\n this.model = undefined;\n this.data = undefined;\n this.offscreenGroup = undefined;\n this.statesStyle = undefined;\n _super.prototype.destroy.call(this);\n };\n /**\n * 显示或者隐藏 element。\n * @param visible 是否可见。\n */\n Element.prototype.changeVisible = function (visible) {\n _super.prototype.changeVisible.call(this, visible);\n if (visible) {\n if (this.shape) {\n this.shape.show();\n }\n if (this.labelShape) {\n this.labelShape.forEach(function (label) {\n label.show();\n });\n }\n } else {\n if (this.shape) {\n this.shape.hide();\n }\n if (this.labelShape) {\n this.labelShape.forEach(function (label) {\n label.hide();\n });\n }\n }\n };\n /**\n * 设置 Element 的状态。\n *\n * 目前 Element 开放三种状态:\n * 1. active\n * 2. selected\n * 3. inactive\n *\n * 这三种状态相互独立,可以进行叠加。\n *\n * 这三种状态的样式可在 [[Theme]] 主题中或者通过 `geometry.state()` 接口进行配置。\n *\n * ```ts\n * // 激活 active 状态\n * setState('active', true);\n * ```\n *\n * @param stateName 状态名\n * @param stateStatus 是否开启状态\n */\n Element.prototype.setState = function (stateName, stateStatus) {\n var _a = this,\n states = _a.states,\n shapeFactory = _a.shapeFactory,\n model = _a.model,\n shape = _a.shape,\n shapeType = _a.shapeType;\n var index = states.indexOf(stateName);\n if (stateStatus) {\n // 开启状态\n if (index > -1) {\n // 该状态已经开启,则返回\n return;\n }\n states.push(stateName);\n if (stateName === 'active' || stateName === 'selected') {\n shape === null || shape === void 0 ? void 0 : shape.toFront();\n }\n } else {\n if (index === -1) {\n // 关闭状态,但是状态未设置过\n return;\n }\n states.splice(index, 1);\n if (stateName === 'active' || stateName === 'selected') {\n var _b = this.geometry,\n sortZIndex = _b.sortZIndex,\n zIndexReversed = _b.zIndexReversed;\n var idx = zIndexReversed ? this.geometry.elements.length - this.elementIndex : this.elementIndex;\n sortZIndex ? shape.setZIndex(idx) : shape.set('zIndex', idx);\n }\n }\n // 使用虚拟 group 重新绘制 shape,然后对这个 shape 应用状态样式后,更新当前 shape。\n var offscreenShape = shapeFactory.drawShape(shapeType, model, this.getOffscreenGroup());\n if (states.length) {\n // 应用当前状态\n this.syncShapeStyle(shape, offscreenShape, states, null);\n } else {\n // 如果没有状态,则需要恢复至原始状态\n this.syncShapeStyle(shape, offscreenShape, ['reset'], null);\n }\n offscreenShape.remove(true); // 销毁,减少内存占用\n var eventObject = {\n state: stateName,\n stateStatus: stateStatus,\n element: this,\n target: this.container\n };\n this.container.emit('statechange', eventObject);\n // @ts-ignore\n propagationDelegate(this.shape, 'statechange', eventObject);\n };\n /**\n * 清空状量态,恢复至初始状态。\n */\n Element.prototype.clearStates = function () {\n var _this = this;\n var states = this.states;\n each(states, function (state) {\n _this.setState(state, false);\n });\n this.states = [];\n };\n /**\n * 查询当前 Element 上是否已设置 `stateName` 对应的状态。\n * @param stateName 状态名称。\n * @returns true 表示存在,false 表示不存在。\n */\n Element.prototype.hasState = function (stateName) {\n return this.states.includes(stateName);\n };\n /**\n * 获取当前 Element 上所有的状态。\n * @returns 当前 Element 上所有的状态数组。\n */\n Element.prototype.getStates = function () {\n return this.states;\n };\n /**\n * 获取 Element 对应的原始数据。\n * @returns 原始数据。\n */\n Element.prototype.getData = function () {\n return this.data;\n };\n /**\n * 获取 Element 对应的图形绘制数据。\n * @returns 图形绘制数据。\n */\n Element.prototype.getModel = function () {\n return this.model;\n };\n /**\n * 返回 Element 元素整体的 bbox,包含文本及文本连线(有的话)。\n * @returns 整体包围盒。\n */\n Element.prototype.getBBox = function () {\n var _a = this,\n shape = _a.shape,\n labelShape = _a.labelShape;\n var bbox = {\n x: 0,\n y: 0,\n minX: 0,\n minY: 0,\n maxX: 0,\n maxY: 0,\n width: 0,\n height: 0\n };\n if (shape) {\n bbox = shape.getCanvasBBox();\n }\n if (labelShape) {\n labelShape.forEach(function (label) {\n var labelBBox = label.getCanvasBBox();\n bbox.x = Math.min(labelBBox.x, bbox.x);\n bbox.y = Math.min(labelBBox.y, bbox.y);\n bbox.minX = Math.min(labelBBox.minX, bbox.minX);\n bbox.minY = Math.min(labelBBox.minY, bbox.minY);\n bbox.maxX = Math.max(labelBBox.maxX, bbox.maxX);\n bbox.maxY = Math.max(labelBBox.maxY, bbox.maxY);\n });\n }\n bbox.width = bbox.maxX - bbox.minX;\n bbox.height = bbox.maxY - bbox.minY;\n return bbox;\n };\n Element.prototype.getStatesStyle = function () {\n if (!this.statesStyle) {\n var _a = this,\n shapeType = _a.shapeType,\n geometry = _a.geometry,\n shapeFactory = _a.shapeFactory;\n var stateOption = geometry.stateOption;\n var defaultShapeType = shapeFactory.defaultShapeType;\n var stateTheme = shapeFactory.theme[shapeType] || shapeFactory.theme[defaultShapeType];\n this.statesStyle = deepMix({}, stateTheme, stateOption);\n }\n return this.statesStyle;\n };\n // 从主题中获取对应状态量的样式\n Element.prototype.getStateStyle = function (stateName, shapeKey) {\n var statesStyle = this.getStatesStyle();\n var stateCfg = get(statesStyle, [stateName, 'style'], {});\n var shapeStyle = stateCfg[shapeKey] || stateCfg;\n if (isFunction(shapeStyle)) {\n return shapeStyle(this);\n }\n return shapeStyle;\n };\n // 获取动画配置\n Element.prototype.getAnimateCfg = function (animateType) {\n var _this = this;\n var animate = this.animate;\n if (animate) {\n var cfg_1 = animate[animateType];\n if (cfg_1) {\n // 增加动画的回调函数,如果外部传入了,则先执行外部,然后发射 geometry 的 animate 事件\n return __assign(__assign({}, cfg_1), {\n callback: function callback() {\n var _a;\n isFunction(cfg_1.callback) && cfg_1.callback();\n (_a = _this.geometry) === null || _a === void 0 ? void 0 : _a.emit(GEOMETRY_LIFE_CIRCLE.AFTER_DRAW_ANIMATE);\n }\n });\n }\n return cfg_1;\n }\n return null;\n };\n // 绘制图形\n Element.prototype.drawShape = function (model, isUpdate) {\n var _a;\n if (isUpdate === void 0) {\n isUpdate = false;\n }\n var _b = this,\n shapeFactory = _b.shapeFactory,\n container = _b.container,\n shapeType = _b.shapeType;\n // 自定义 shape 有可能返回空 shape\n this.shape = shapeFactory.drawShape(shapeType, model, container);\n if (this.shape) {\n this.setShapeInfo(this.shape, model); // 存储绘图数据\n // @ts-ignore\n var name_1 = this.shape.cfg.name;\n // 附加 element 的 name, name 现在支持数组了,很好用了\n if (!name_1) {\n // 这个地方如果用户添加了 name, 则附加 name ,否则就添加自己的 name\n // @ts-ignore\n this.shape.cfg.name = ['element', this.shapeFactory.geometryType];\n } else if (isString(name_1)) {\n // @ts-ignore\n this.shape.cfg.name = ['element', name_1];\n }\n // 执行入场动画\n var animateType = isUpdate ? 'enter' : 'appear';\n var animateCfg = this.getAnimateCfg(animateType);\n if (animateCfg) {\n // 开始执行动画的生命周期\n (_a = this.geometry) === null || _a === void 0 ? void 0 : _a.emit(GEOMETRY_LIFE_CIRCLE.BEFORE_DRAW_ANIMATE);\n doAnimate(this.shape, animateCfg, {\n coordinate: shapeFactory.coordinate,\n toAttrs: __assign({}, this.shape.attr())\n });\n }\n }\n };\n // 获取虚拟 Group\n Element.prototype.getOffscreenGroup = function () {\n if (!this.offscreenGroup) {\n var GroupCtor = this.container.getGroupBase(); // 获取分组的构造函数\n this.offscreenGroup = new GroupCtor({});\n }\n return this.offscreenGroup;\n };\n // 设置 shape 上需要携带的信息\n Element.prototype.setShapeInfo = function (shape, data) {\n var _this = this;\n // @ts-ignore\n shape.cfg.origin = data;\n // @ts-ignore\n shape.cfg.element = this;\n if (shape.isGroup()) {\n var children = shape.get('children');\n children.forEach(function (child) {\n _this.setShapeInfo(child, data);\n });\n }\n };\n // 更新当前 shape 的样式\n Element.prototype.syncShapeStyle = function (sourceShape, targetShape, states, animateCfg, index) {\n var _this = this;\n var _a;\n if (states === void 0) {\n states = [];\n }\n if (index === void 0) {\n index = 0;\n }\n if (!sourceShape || !targetShape) {\n return;\n }\n // 所有的 shape 都需要同步 clip\n var clip = sourceShape.get('clipShape');\n var newClip = targetShape.get('clipShape');\n this.syncShapeStyle(clip, newClip, states, animateCfg);\n if (sourceShape.isGroup()) {\n var children = sourceShape.get('children');\n var newChildren = targetShape.get('children');\n for (var i = 0; i < children.length; i++) {\n this.syncShapeStyle(children[i], newChildren[i], states, animateCfg, index + i);\n }\n } else {\n if (!isEmpty(states) && !isEqual(states, ['reset'])) {\n var name_2 = sourceShape.get('name');\n if (isArray(name_2)) {\n // 会附加 element 的 name\n name_2 = name_2[1];\n }\n each(states, function (state) {\n // background shape 不进行状态样式设置\n if (targetShape.get('name') !== BACKGROUND_SHAPE) {\n var style = _this.getStateStyle(state, name_2 || index); // 如果用户没有设置 name,则默认根据索引值\n targetShape.attr(style);\n }\n });\n }\n var newAttrs = getReplaceAttrs(sourceShape, targetShape);\n if (this.animate) {\n if (animateCfg) {\n (_a = this.geometry) === null || _a === void 0 ? void 0 : _a.emit(GEOMETRY_LIFE_CIRCLE.BEFORE_DRAW_ANIMATE);\n // 需要进行动画\n doAnimate(sourceShape, animateCfg, {\n coordinate: this.shapeFactory.coordinate,\n toAttrs: newAttrs,\n shapeModel: this.model\n });\n } else if (!isEmpty(states)) {\n sourceShape.stopAnimate();\n sourceShape.animate(newAttrs, {\n duration: 300\n });\n } else {\n sourceShape.attr(newAttrs);\n }\n } else {\n sourceShape.attr(newAttrs);\n }\n }\n };\n Element.prototype.getShapeType = function (model) {\n var shape = get(model, 'shape');\n return isArray(shape) ? shape[0] : shape;\n };\n return Element;\n}(Base);\nexport default Element;","var GEOMETRY_LABELS_MAP = {};\nvar GEOMETRY_LABELS_LAYOUT_MAP = {};\n/**\n * 获取 `type` 对应的 [[GeometryLabel]] 类\n * @param type\n * @returns\n */\nexport function getGeometryLabel(type) {\n return GEOMETRY_LABELS_MAP[type.toLowerCase()];\n}\n/**\n * 注册定义的 GeometryLabel 类\n * @param type GeometryLabel 类型名称\n * @param ctor GeometryLabel 类\n */\nexport function registerGeometryLabel(type, ctor) {\n GEOMETRY_LABELS_MAP[type.toLowerCase()] = ctor;\n}\n/**\n * 获取 `type` 对应的 [[GeometryLabelsLayoutFn]] label 布局函数\n * @param type 布局函数名称\n * @returns\n */\nexport function getGeometryLabelLayout(type) {\n return GEOMETRY_LABELS_LAYOUT_MAP[type.toLowerCase()];\n}\n/**\n * 注册定义的 label 布局函数\n * @param type label 布局函数名称\n * @param layoutFn label 布局函数\n */\nexport function registerGeometryLabelLayout(type, layoutFn) {\n GEOMETRY_LABELS_LAYOUT_MAP[type.toLowerCase()] = layoutFn;\n}","import { __assign } from \"tslib\";\nimport { parsePathString } from '@antv/path-util';\nimport { deepMix, get, upperFirst } from '@antv/util';\nimport { convertNormalPath, convertPolarPath } from './util/path';\n/** ShapeFactory 基类 */\nvar ShapeFactoryBase = {\n /** 坐标系对象 */\n coordinate: null,\n /** 默认绘制的 Shape 类型 */\n defaultShapeType: null,\n /** 主题样式 */\n theme: null,\n /**\n * 获取 shape 绘制需要的关键点\n * @param shapeType shape 类型\n * @param shapePoint 每条数据映射后的坐标点以及 size 数值\n * @returns 图形关键点信息\n */\n getShapePoints: function getShapePoints(shapeType, shapePoint) {\n var shape = this.getShape(shapeType);\n if (shape.getPoints) {\n return shape.getPoints(shapePoint);\n }\n return this.getDefaultPoints(shapePoint);\n },\n /**\n * 根据 shape 类型获取具体的 shape 实例\n * @param shapeType string shape 的类型\n * @returns\n */\n getShape: function getShape(shapeType) {\n var shape = this[shapeType] || this[this.defaultShapeType];\n shape.coordinate = this.coordinate;\n return shape;\n },\n /**\n * 获取 shape 的默认关键点\n * @override\n */\n getDefaultPoints: function getDefaultPoints() {\n return [];\n },\n /**\n * 获取 shape 的默认绘制样式 (内置的 shapeFactory 均有注册默认样式)\n */\n getDefaultStyle: function getDefaultStyle(geometryTheme) {\n return get(geometryTheme, [this.defaultShapeType, 'default', 'style'], {});\n },\n /**\n * 获取 shape 对应的缩略图配置信息。\n * @param shapeType shape 类型\n * @param color 颜色\n * @param isInPolar 是否在极坐标系下\n * @returns 返回缩略图 marker 配置。\n */\n getMarker: function getMarker(shapeType, markerCfg) {\n var shape = this.getShape(shapeType);\n if (!shape.getMarker) {\n var defaultShapeType = this.defaultShapeType;\n shape = this.getShape(defaultShapeType);\n }\n var theme = this.theme;\n var shapeStyle = get(theme, [shapeType, 'default'], {});\n var markerStyle = shape.getMarker(markerCfg);\n return deepMix({}, shapeStyle, markerStyle);\n },\n /**\n * 绘制 shape\n * @override\n * @param shapeType 绘制的 shape 类型\n * @param cfg 绘制 shape 需要的信息\n * @param element Element 实例\n * @returns\n */\n drawShape: function drawShape(shapeType, cfg, container) {\n var shape = this.getShape(shapeType);\n return shape.draw(cfg, container);\n }\n};\n/** Shape 基类 */\nvar ShapeBase = {\n /** 坐标系对象 */\n coordinate: null,\n /**\n * 将归一化的 path 转换成坐标系下的 path\n * @param path 归一化的路径\n * @returns\n */\n parsePath: function parsePath(path) {\n var coordinate = this.coordinate;\n var parsedPath = parsePathString(path);\n if (coordinate.isPolar) {\n parsedPath = convertPolarPath(coordinate, parsedPath);\n } else {\n parsedPath = convertNormalPath(coordinate, parsedPath);\n }\n return parsedPath;\n },\n /**\n * 将归一化的坐标转换成画布坐标\n * @param point 归一化的坐标点数据\n * @returns\n */\n parsePoint: function parsePoint(point) {\n var coordinate = this.coordinate;\n return coordinate.convert(point);\n },\n /**\n * 0~1 points 转 画布 points\n * @param points 节点集合\n * @returns\n */\n parsePoints: function parsePoints(points) {\n var coordinate = this.coordinate;\n return points.map(function (point) {\n return coordinate.convert(point);\n });\n },\n /**\n * 绘制 shape\n * @override\n */\n draw: function draw(cfg, container) {}\n};\nvar ShapeFactoryMap = {};\n/**\n * 注册 ShapeFactory。\n * @param factoryName ShapeFactory 名称,对应 Geometry 几何标记名称。\n * @param cfg 注册 ShapeFactory 需要覆写定义的属性。\n * @returns 返回 ShapeFactory 对象。\n */\nexport function registerShapeFactory(factoryName, cfg) {\n var className = upperFirst(factoryName);\n var geomObj = __assign(__assign(__assign({}, ShapeFactoryBase), cfg), {\n geometryType: factoryName\n });\n ShapeFactoryMap[className] = geomObj;\n return geomObj;\n}\n/**\n * 注册 Shape。\n * @param factoryName 对应的 ShapeFactory 名称。\n * @param shapeType 注册的 shape 名称。\n * @param cfg 注册 Shape 需要覆写定义的属性。\n * @returns shape 返回注册的 shape 对象。\n */\nexport function registerShape(factoryName, shapeType, cfg) {\n var className = upperFirst(factoryName);\n var factory = ShapeFactoryMap[className];\n var shapeObj = __assign(__assign({}, ShapeBase), cfg);\n factory[shapeType] = shapeObj;\n return shapeObj;\n}\n/**\n * 获取 factoryName 对应的 shapeFactory\n * @param factoryName\n * @returns shape factory\n */\nexport function getShapeFactory(factoryName) {\n var className = upperFirst(factoryName);\n return ShapeFactoryMap[className];\n}","import { isEqual, some } from '@antv/util';\n/**\n * @ignore\n * Determines whether model is change\n * @param currentModel\n * @param preModel\n * @returns\n */\nexport function isModelChange(currentModel, preModel) {\n return some(['color', 'shape', 'size', 'x', 'y', 'isInCircle', 'data', 'style', 'defaultStyle', 'points', 'mappingData'], function (key) {\n return !isEqual(currentModel[key], preModel[key]);\n });\n}","import { isArray } from '@antv/util';\n/** @ignore */\nexport function parseFields(field) {\n if (isArray(field)) {\n return field;\n }\n return field.split('*');\n}","/**\n * 对比当前元素和之前的元素,返回 added, updated, removed\n * @param keyItem 之前的元素的,按照 key-item 的 object 的形式存储\n * @param keys 现在的元素,按照 array 的形式存储\n * @returns 由 added, updated, removed array 构成的 object\n */\nexport function diff(keyItem, keys) {\n var added = [];\n var updated = [];\n var removed = [];\n var keyIncluded = new Map();\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (keyItem[key]) updated.push(key);else added.push(key);\n keyIncluded.set(key, true);\n }\n Object.keys(keyItem).forEach(function (key) {\n if (!keyIncluded.has(key)) removed.push(key);\n });\n return {\n added: added,\n updated: updated,\n removed: removed\n };\n}","import { __assign, __awaiter, __extends, __generator, __read, __spreadArray, __values } from \"tslib\";\nimport { getAdjust as getAdjustClass } from '@antv/adjust';\nimport { getAttribute as getAttributeClass } from '@antv/attr';\nimport { clone, deepMix, each, flatten, get, isArray, isEmpty, isEqual, isFunction, isNil, isNumber, isObject, isPlainObject, isString, set } from '@antv/util';\nimport { doGroupAppearAnimate, getDefaultAnimateCfg } from '../animate';\nimport Base from '../base';\nimport { FIELD_ORIGIN, GEOMETRY_LIFE_CIRCLE, GROUP_ATTRS } from '../constant';\nimport { uniq } from '../util/helper';\nimport Element from './element';\nimport { getGeometryLabel } from './label';\nimport { getShapeFactory } from './shape/base';\nimport { group } from './util/group-data';\nimport { isModelChange } from './util/is-model-change';\nimport { parseFields } from './util/parse-fields';\nimport { diff } from './util/diff';\nimport { inferScaleType } from '../util/scale';\nimport { getXDimensionLength } from '../util/coordinate';\n/**\n * Geometry 几何标记基类,主要负责数据到图形属性的映射以及绘制逻辑。\n */\nvar Geometry = /** @class */function (_super) {\n __extends(Geometry, _super);\n /**\n * 创建 Geometry 实例。\n * @param cfg\n */\n function Geometry(cfg) {\n var _this = _super.call(this, cfg) || this;\n /** Geometry 几何标记类型。 */\n _this.type = 'base';\n // 内部产生的属性\n /** Attribute map */\n _this.attributes = {};\n /** Element map */\n _this.elements = [];\n /** 使用 key-value 结构存储 Element,key 为每个 Element 实例对应的唯一 ID */\n _this.elementsMap = {};\n /** animate 配置项 */\n _this.animateOption = true;\n /** 图形属性映射配置 */\n _this.attributeOption = {};\n /** 存储上一次渲染时的 element 映射表,用于更新逻辑 */\n _this.lastElementsMap = {};\n /** 是否生成多个点来绘制图形。 */\n _this.generatePoints = false;\n /** 存储发生图形属性映射前的数据 */\n _this.beforeMappingData = null;\n _this.adjusts = {};\n _this.idFields = [];\n _this.hasSorted = false;\n _this.isCoordinateChanged = false;\n var container = cfg.container,\n labelsContainer = cfg.labelsContainer,\n coordinate = cfg.coordinate,\n data = cfg.data,\n _a = cfg.sortable,\n sortable = _a === void 0 ? false : _a,\n _b = cfg.visible,\n visible = _b === void 0 ? true : _b,\n theme = cfg.theme,\n _c = cfg.scales,\n scales = _c === void 0 ? {} : _c,\n _d = cfg.scaleDefs,\n scaleDefs = _d === void 0 ? {} : _d,\n // 柱状图间隔与宽度相关配置\n intervalPadding = cfg.intervalPadding,\n dodgePadding = cfg.dodgePadding,\n maxColumnWidth = cfg.maxColumnWidth,\n minColumnWidth = cfg.minColumnWidth,\n columnWidthRatio = cfg.columnWidthRatio,\n roseWidthRatio = cfg.roseWidthRatio,\n multiplePieWidthRatio = cfg.multiplePieWidthRatio,\n zIndexReversed = cfg.zIndexReversed,\n sortZIndex = cfg.sortZIndex,\n useDeferredLabel = cfg.useDeferredLabel;\n _this.container = container;\n _this.labelsContainer = labelsContainer;\n _this.coordinate = coordinate;\n _this.data = data;\n _this.sortable = sortable;\n _this.visible = visible;\n _this.userTheme = theme;\n _this.scales = scales;\n _this.scaleDefs = scaleDefs;\n // 柱状图间隔与宽度相关配置\n _this.intervalPadding = intervalPadding;\n _this.dodgePadding = dodgePadding;\n _this.maxColumnWidth = maxColumnWidth;\n _this.minColumnWidth = minColumnWidth;\n _this.columnWidthRatio = columnWidthRatio;\n _this.roseWidthRatio = roseWidthRatio;\n _this.multiplePieWidthRatio = multiplePieWidthRatio;\n _this.zIndexReversed = zIndexReversed;\n _this.sortZIndex = sortZIndex;\n _this.useDeferredLabel = useDeferredLabel ? typeof useDeferredLabel === 'number' ? useDeferredLabel : Infinity : null;\n return _this;\n }\n /**\n * 配置 position 通道映射规则。\n *\n * @example\n * ```typescript\n * // 数据结构: [{ x: 'A', y: 10, color: 'red' }]\n * geometry.position('x*y');\n * geometry.position([ 'x', 'y' ]);\n * geometry.position({\n * fields: [ 'x', 'y' ],\n * });\n * ```\n *\n * @param cfg 映射规则\n * @returns\n */\n Geometry.prototype.position = function (cfg) {\n var positionCfg = cfg;\n if (!isPlainObject(cfg)) {\n // 字符串字段或者数组字段\n positionCfg = {\n fields: parseFields(cfg)\n };\n }\n var fields = get(positionCfg, 'fields');\n if (fields.length === 1) {\n // 默认填充一维 1*xx\n fields.unshift('1');\n set(positionCfg, 'fields', fields);\n }\n set(this.attributeOption, 'position', positionCfg);\n return this;\n };\n Geometry.prototype.color = function (field, cfg) {\n this.createAttrOption('color', field, cfg);\n return this;\n };\n Geometry.prototype.shape = function (field, cfg) {\n this.createAttrOption('shape', field, cfg);\n return this;\n };\n Geometry.prototype.size = function (field, cfg) {\n this.createAttrOption('size', field, cfg);\n return this;\n };\n /**\n * 设置数据调整方式。G2 目前内置了四种类型:\n * 1. dodge\n * 2. stack\n * 3. symmetric\n * 4. jitter\n *\n *\n * **Tip**\n * + 对于 'dodge' 类型,可以额外进行如下属性的配置:\n * ```typescript\n * geometry.adjust('dodge', {\n * marginRatio: 0, // 取 0 到 1 范围的值(相对于每个柱子宽度),用于控制一个分组中柱子之间的间距\n * dodgeBy: 'x', // 该属性只对 'dodge' 类型生效,声明以哪个数据字段为分组依据\n * });\n * ```\n *\n * + 对于 'stack' 类型,可以额外进行如下属性的配置:\n * ```typescript\n * geometry.adjust('stack', {\n * reverseOrder: false, // 用于控制是否对数据进行反序操作\n * });\n * ```\n *\n * @example\n * ```typescript\n * geometry.adjust('stack');\n *\n * geometry.adjust({\n * type: 'stack',\n * reverseOrder: false,\n * });\n *\n * // 组合使用 adjust\n * geometry.adjust([ 'stack', 'dodge' ]);\n *\n * geometry.adjust([\n * { type: 'stack' },\n * { type: 'dodge', dodgeBy: 'x' },\n * ]);\n * ```\n *\n * @param adjustCfg 数据调整配置\n * @returns\n */\n Geometry.prototype.adjust = function (adjustCfg) {\n var adjusts = adjustCfg;\n if (isString(adjustCfg) || isPlainObject(adjustCfg)) {\n adjusts = [adjustCfg];\n }\n each(adjusts, function (adjust, index) {\n if (!isObject(adjust)) {\n adjusts[index] = {\n type: adjust\n };\n }\n });\n this.adjustOption = adjusts;\n return this;\n };\n Geometry.prototype.style = function (field, styleFunc) {\n if (isString(field)) {\n var fields = parseFields(field);\n this.styleOption = {\n fields: fields,\n callback: styleFunc\n };\n } else {\n var _a = field,\n fields = _a.fields,\n callback = _a.callback,\n cfg = _a.cfg;\n if (fields || callback || cfg) {\n this.styleOption = field;\n } else {\n this.styleOption = {\n cfg: field\n };\n }\n }\n return this;\n };\n Geometry.prototype.tooltip = function (field, cfg) {\n if (isString(field)) {\n var fields = parseFields(field);\n this.tooltipOption = {\n fields: fields,\n callback: cfg\n };\n } else {\n this.tooltipOption = field;\n }\n return this;\n };\n /**\n * Geometry 动画配置。\n *\n * + `animate(false)` 关闭动画\n * + `animate(true)` 开启动画,默认开启。\n *\n * 我们将动画分为四个场景:\n * 1. appear: 图表第一次加载时的入场动画;\n * 2. enter: 图表绘制完成,发生更新后,产生的新图形的进场动画;\n * 3. update: 图表绘制完成,数据发生变更后,有状态变更的图形的更新动画;\n * 4. leave: 图表绘制完成,数据发生变更后,被销毁图形的销毁动画。\n *\n * @example\n * ```typescript\n * animate({\n * enter: {\n * duration: 1000, // enter 动画执行时间\n * },\n * leave: false, // 关闭 leave 销毁动画\n * });\n * ```\n *\n * @param cfg 动画配置\n * @returns\n */\n Geometry.prototype.animate = function (cfg) {\n this.animateOption = cfg;\n return this;\n };\n Geometry.prototype.label = function (field, secondParam, thirdParam) {\n if (isString(field)) {\n var labelOption = {};\n var fields = parseFields(field);\n labelOption.fields = fields;\n if (isFunction(secondParam)) {\n labelOption.callback = secondParam;\n } else if (isPlainObject(secondParam)) {\n labelOption.cfg = secondParam;\n }\n if (thirdParam) {\n labelOption.cfg = thirdParam;\n }\n this.labelOption = labelOption;\n } else {\n this.labelOption = field;\n }\n return this;\n };\n /**\n * 设置状态对应的样式。\n *\n * @example\n * ```ts\n * chart.interval().state({\n * selected: {\n * animate: { duration: 100, easing: 'easeLinear' },\n * style: {\n * lineWidth: 2,\n * stroke: '#000',\n * },\n * },\n * });\n * ```\n *\n * 如果图形 shape 是由多个 shape 组成,即为一个 G.Group 对象,那么针对 group 中的每个 shape,我们需要使用下列方式进行状态样式设置:\n * 如果我们为 group 中的每个 shape 设置了 'name' 属性(shape.set('name', 'xx')),则以 'name' 作为 key,否则默认以索引值(即 shape 的 添加顺序)为 key。\n *\n * ```ts\n * chart.interval().shape('groupShape').state({\n * selected: {\n * style: {\n * 0: { lineWidth: 2 },\n * 1: { fillOpacity: 1 },\n * }\n * }\n * });\n * ```\n *\n * @param cfg 状态样式\n */\n Geometry.prototype.state = function (cfg) {\n this.stateOption = cfg;\n return this;\n };\n /**\n * 用于向 shape 中传入自定义的数据。目前可能仅仅可能用于在自定义 shape 的时候,像自定义 shape 中传入自定义的数据,方便实现自定义 shape 的配置能力。\n *\n * @example\n * ```ts\n * chart.interval().customInfo({ yourData: 'hello, g2!' });\n * ```\n *\n * 然后在自定义 shape 的时候,可以拿到这个信息。\n *\n * ```ts\n * registerShape('interval', 'your-shape', {\n * draw(shapeInfo, container) {\n * const { customInfo } = shapeInfo;\n * console.log(customInfo); // will log { yourData: 'hello, g2!' }.\n * }\n * });\n * ```\n *\n * @param cfg\n */\n Geometry.prototype.customInfo = function (cfg) {\n this.customOption = cfg;\n return this;\n };\n /**\n * 初始化 Geomtry 实例:\n * 创建 [[Attribute]] and [[Scale]] 实例,进行数据处理,包括分组、数值化以及数据调整。\n */\n Geometry.prototype.init = function (cfg) {\n if (cfg === void 0) {\n cfg = {};\n }\n this.setCfg(cfg);\n this.initAttributes(); // 创建图形属性\n // 数据加工:分组 -> 数字化 -> adjust\n this.processData(this.data);\n // 调整 scale\n this.adjustScale();\n };\n /**\n * Geometry 更新。\n * @param [cfg] 更新的配置\n */\n Geometry.prototype.update = function (cfg) {\n if (cfg === void 0) {\n cfg = {};\n }\n var data = cfg.data,\n isDataChanged = cfg.isDataChanged,\n isCoordinateChanged = cfg.isCoordinateChanged;\n var _a = this,\n attributeOption = _a.attributeOption,\n lastAttributeOption = _a.lastAttributeOption;\n if (!isEqual(attributeOption, lastAttributeOption)) {\n // 映射发生改变,则重新创建图形属性\n this.init(cfg);\n } else if (data && (isDataChanged || !isEqual(data, this.data))) {\n // 数据发生变化\n this.setCfg(cfg);\n this.initAttributes(); // 创建图形属性\n this.processData(data); // 数据加工:分组 -> 数字化 -> adjust\n } else {\n // 有可能 coordinate 变化\n this.setCfg(cfg);\n }\n // 调整 scale\n this.adjustScale();\n this.isCoordinateChanged = isCoordinateChanged;\n };\n /**\n * 将原始数据映射至图形空间,同时创建图形对象。\n */\n Geometry.prototype.paint = function (isUpdate) {\n var _this = this;\n if (isUpdate === void 0) {\n isUpdate = false;\n }\n if (this.animateOption) {\n this.animateOption = deepMix({}, getDefaultAnimateCfg(this.type, this.coordinate), this.animateOption);\n }\n this.defaultSize = undefined;\n this.elementsMap = {};\n this.elements = [];\n var offscreenGroup = this.getOffscreenGroup();\n offscreenGroup.clear();\n var beforeMappingData = this.beforeMappingData;\n var dataArray = this.beforeMapping(beforeMappingData);\n this.dataArray = new Array(dataArray.length);\n for (var i = 0; i < dataArray.length; i++) {\n var data = dataArray[i];\n this.dataArray[i] = this.mapping(data);\n }\n this.updateElements(this.dataArray, isUpdate);\n this.lastElementsMap = this.elementsMap;\n if (this.canDoGroupAnimation(isUpdate)) {\n // 如果用户没有配置 appear.animation,就默认走整体动画\n var container = this.container;\n var type = this.type;\n var coordinate = this.coordinate;\n var animateCfg = get(this.animateOption, 'appear');\n var yScale = this.getYScale();\n var yMinPoint = coordinate.convert({\n x: 0,\n y: yScale.scale(this.getYMinValue())\n });\n doGroupAppearAnimate(container, animateCfg, type, coordinate, yMinPoint);\n }\n // 添加 label\n if (this.labelOption) {\n var deferred = this.useDeferredLabel;\n var callback = function () {\n return _this.renderLabels(flatten(_this.dataArray), isUpdate);\n }.bind(this);\n if (typeof deferred === 'number') {\n // Use `requestIdleCallback` to render labels in idle time (like react fiber)\n var timeout = typeof deferred === 'number' && deferred !== Infinity ? deferred : 0;\n if (!window.requestIdleCallback) {\n setTimeout(callback, timeout);\n } else {\n var options = timeout && timeout !== Infinity ? {\n timeout: timeout\n } : undefined;\n window.requestIdleCallback(callback, options);\n }\n } else {\n callback();\n }\n }\n // 缓存,用于更新\n this.lastAttributeOption = __assign({}, this.attributeOption);\n if (this.visible === false) {\n // 用户在初始化的时候声明 visible: false\n this.changeVisible(false);\n }\n };\n /**\n * 清空当前 Geometry,配置项仍保留,但是内部创建的对象全部清空。\n * @override\n */\n Geometry.prototype.clear = function () {\n var _a = this,\n container = _a.container,\n geometryLabel = _a.geometryLabel,\n offscreenGroup = _a.offscreenGroup;\n if (container) {\n container.clear();\n }\n if (geometryLabel) {\n geometryLabel.clear();\n }\n if (offscreenGroup) {\n offscreenGroup.clear();\n }\n // 属性恢复至出厂状态\n this.scaleDefs = undefined;\n this.attributes = {};\n this.scales = {};\n this.elementsMap = {};\n this.lastElementsMap = {};\n this.elements = [];\n this.adjusts = {};\n this.dataArray = null;\n this.beforeMappingData = null;\n this.lastAttributeOption = undefined;\n this.defaultSize = undefined;\n this.idFields = [];\n this.groupScales = undefined;\n this.hasSorted = false;\n this.isCoordinateChanged = false;\n };\n /**\n * 销毁 Geometry 实例。\n */\n Geometry.prototype.destroy = function () {\n this.clear();\n var container = this.container;\n container.remove(true);\n if (this.offscreenGroup) {\n this.offscreenGroup.remove(true);\n this.offscreenGroup = null;\n }\n if (this.geometryLabel) {\n this.geometryLabel.destroy();\n this.geometryLabel = null;\n }\n this.theme = undefined;\n this.shapeFactory = undefined;\n _super.prototype.destroy.call(this);\n };\n /**\n * 获取决定分组的图形属性对应的 scale 实例。\n * @returns\n */\n Geometry.prototype.getGroupScales = function () {\n return this.groupScales;\n };\n /**\n * 根据名字获取图形属性实例。\n */\n Geometry.prototype.getAttribute = function (name) {\n return this.attributes[name];\n };\n /** 获取 x 轴对应的 scale 实例。 */\n Geometry.prototype.getXScale = function () {\n return this.getAttribute('position').scales[0];\n };\n /** 获取 y 轴对应的 scale 实例。 */\n Geometry.prototype.getYScale = function () {\n return this.getAttribute('position').scales[1];\n };\n /**\n * 获取决定分组的图形属性实例。\n */\n Geometry.prototype.getGroupAttributes = function () {\n var rst = [];\n each(this.attributes, function (attr) {\n if (GROUP_ATTRS.includes(attr.type)) {\n rst.push(attr);\n }\n });\n return rst;\n };\n /** 获取图形属性默认的映射值。 */\n Geometry.prototype.getDefaultValue = function (attrName) {\n var value;\n var attr = this.getAttribute(attrName);\n if (attr && isEmpty(attr.scales)) {\n // 获取映射至常量的值\n value = attr.values[0];\n }\n return value;\n };\n /**\n * 获取该数据发生图形映射后对应的 Attribute 图形空间数据。\n * @param attr Attribute 图形属性实例。\n * @param obj 需要进行映射的原始数据。\n * @returns\n */\n Geometry.prototype.getAttributeValues = function (attr, obj) {\n var params = [];\n var scales = attr.scales;\n for (var index = 0, length_1 = scales.length; index < length_1; index++) {\n var scale = scales[index];\n var field = scale.field;\n if (scale.isIdentity) {\n params.push(scale.values);\n } else {\n params.push(obj[field]);\n }\n }\n return attr.mapping.apply(attr, __spreadArray([], __read(params), false));\n };\n /**\n * 获取对应的 adjust 实例\n * @param adjustType\n * @returns\n */\n Geometry.prototype.getAdjust = function (adjustType) {\n return this.adjusts[adjustType];\n };\n /**\n * 获得 coordinate 实例\n * @returns\n */\n Geometry.prototype.getCoordinate = function () {\n return this.coordinate;\n };\n Geometry.prototype.getData = function () {\n return this.data;\n };\n /**\n * 获取 shape 对应的 marker 样式。\n * @param shapeName shape 具体名字\n * @param cfg marker 信息\n * @returns\n */\n Geometry.prototype.getShapeMarker = function (shapeName, cfg) {\n var shapeFactory = this.getShapeFactory();\n return shapeFactory.getMarker(shapeName, cfg);\n };\n /**\n * 根据一定的规则查找 Geometry 的 Elements。\n *\n * ```typescript\n * getElementsBy((element) => {\n * const data = element.getData();\n *\n * return data.a === 'a';\n * });\n * ```\n *\n * @param condition 定义查找规则的回调函数。\n * @returns\n */\n Geometry.prototype.getElementsBy = function (condition) {\n return this.elements.filter(function (element) {\n return condition(element);\n });\n };\n /**\n * 获取 Geometry 的所有 Elements。\n *\n * ```typescript\n * getElements();\n * ```\n */\n Geometry.prototype.getElements = function () {\n return this.elements;\n };\n /**\n * 获取数据对应的唯一 id。\n * @param data Element 对应的绘制数据\n * @returns\n */\n Geometry.prototype.getElementId = function (data) {\n data = isArray(data) ? data[0] : data;\n var originData = data[FIELD_ORIGIN];\n // 如果用户声明了使用哪些字段作为 id 值\n if (this.idFields.length) {\n var elementId = originData[this.idFields[0]];\n for (var index = 1; index < this.idFields.length; index++) {\n elementId += '-' + originData[this.idFields[index]];\n }\n return elementId;\n }\n var type = this.type;\n var xScale = this.getXScale();\n var yScale = this.getYScale();\n var xField = xScale.field || 'x';\n var yField = yScale.field || 'y';\n var yVal = originData[yField];\n var xVal;\n if (xScale.type === 'identity') {\n xVal = xScale.values[0];\n } else {\n xVal = originData[xField];\n }\n var id;\n if (type === 'interval' || type === 'schema') {\n id = \"\".concat(xVal);\n } else if (type === 'line' || type === 'area' || type === 'path') {\n id = type;\n } else {\n id = \"\".concat(xVal, \"-\").concat(yVal);\n }\n var groupScales = this.groupScales;\n for (var index = 0, length_2 = groupScales.length; index < length_2; index++) {\n var groupScale = groupScales[index];\n var field = groupScale.field;\n id = \"\".concat(id, \"-\").concat(originData[field]);\n }\n // 用户在进行 dodge 类型的 adjust 调整的时候设置了 dodgeBy 属性\n var dodgeAdjust = this.getAdjust('dodge');\n if (dodgeAdjust) {\n var dodgeBy = dodgeAdjust.dodgeBy;\n if (dodgeBy) {\n id = \"\".concat(id, \"-\").concat(originData[dodgeBy]);\n }\n }\n if (this.getAdjust('jitter')) {\n id = \"\".concat(id, \"-\").concat(data.x, \"-\").concat(data.y);\n }\n return id;\n };\n /**\n * 获取所有需要创建 scale 的字段名称。\n */\n Geometry.prototype.getScaleFields = function () {\n var fields = [];\n var tmpMap = new Map();\n var _a = this,\n attributeOption = _a.attributeOption,\n labelOption = _a.labelOption,\n tooltipOption = _a.tooltipOption;\n // 获取图形属性上的 fields\n for (var attributeType in attributeOption) {\n if (attributeOption.hasOwnProperty(attributeType)) {\n var eachOpt = attributeOption[attributeType];\n if (eachOpt.fields) {\n uniq(eachOpt.fields, fields, tmpMap);\n } else if (eachOpt.values) {\n // 考虑 size(10), shape('circle') 等场景\n uniq(eachOpt.values, fields, tmpMap);\n }\n }\n }\n // 获取 label 上的字段\n if (labelOption && labelOption.fields) {\n uniq(labelOption.fields, fields, tmpMap);\n }\n // 获取 tooltip 上的字段\n if (isObject(tooltipOption) && tooltipOption.fields) {\n uniq(tooltipOption.fields, fields, tmpMap);\n }\n return fields;\n };\n /**\n * 显示或者隐藏 geometry。\n * @param visible\n */\n Geometry.prototype.changeVisible = function (visible) {\n _super.prototype.changeVisible.call(this, visible);\n var elements = this.elements;\n for (var index = 0, length_3 = elements.length; index < length_3; index++) {\n var element = elements[index];\n element.changeVisible(visible);\n }\n if (visible) {\n if (this.container) {\n this.container.show();\n }\n if (this.labelsContainer) {\n this.labelsContainer.show();\n }\n } else {\n if (this.container) {\n this.container.hide();\n }\n if (this.labelsContainer) {\n this.labelsContainer.hide();\n }\n }\n };\n /**\n * 获得所有的字段\n */\n Geometry.prototype.getFields = function () {\n var uniqMap = new Map();\n var fields = [];\n Object.values(this.attributeOption).forEach(function (cfg) {\n var fs = (cfg === null || cfg === void 0 ? void 0 : cfg.fields) || [];\n fs.forEach(function (f) {\n if (!uniqMap.has(f)) {\n fields.push(f);\n }\n uniqMap.set(f, true);\n });\n }, []);\n return fields;\n };\n /**\n * 获取当前配置中的所有分组 & 分类的字段。\n * @return fields string[]\n */\n Geometry.prototype.getGroupFields = function () {\n var groupFields = [];\n var tmpMap = new Map(); // 用于去重过滤\n for (var index = 0, length_4 = GROUP_ATTRS.length; index < length_4; index++) {\n var attributeName = GROUP_ATTRS[index];\n var cfg = this.attributeOption[attributeName];\n if (cfg && cfg.fields) {\n uniq(cfg.fields, groupFields, tmpMap);\n }\n }\n return groupFields;\n };\n /**\n * 获得图形的 x y 字段。\n */\n Geometry.prototype.getXYFields = function () {\n var _a = __read(this.attributeOption.position.fields, 2),\n x = _a[0],\n y = _a[1];\n return [x, y];\n };\n /**\n * x 字段\n * @returns\n */\n Geometry.prototype.getXField = function () {\n return get(this.getXYFields(), [0]);\n };\n /**\n * y 字段\n * @returns\n */\n Geometry.prototype.getYField = function () {\n return get(this.getXYFields(), [1]);\n };\n /**\n * 获取该 Geometry 下所有生成的 shapes。\n * @returns shapes\n */\n Geometry.prototype.getShapes = function () {\n return this.elements.map(function (element) {\n return element.shape;\n });\n };\n /**\n * 获取虚拟 Group。\n * @returns\n */\n Geometry.prototype.getOffscreenGroup = function () {\n if (!this.offscreenGroup) {\n var GroupCtor = this.container.getGroupBase(); // 获取分组的构造函数\n this.offscreenGroup = new GroupCtor({});\n }\n return this.offscreenGroup;\n };\n // 对数据进行排序\n Geometry.prototype.sort = function (mappingArray) {\n if (!this.hasSorted) {\n // 未发生过排序\n var xScale_1 = this.getXScale();\n var xField_1 = xScale_1.field;\n for (var index = 0; index < mappingArray.length; index++) {\n var itemArr = mappingArray[index];\n itemArr.sort(function (obj1, obj2) {\n return xScale_1.translate(obj1[FIELD_ORIGIN][xField_1]) - xScale_1.translate(obj2[FIELD_ORIGIN][xField_1]);\n });\n }\n }\n this.hasSorted = true;\n };\n /**\n * 调整度量范围。主要针对发生层叠以及一些特殊需求的 Geometry,比如 Interval 下的柱状图 Y 轴默认从 0 开始。\n */\n Geometry.prototype.adjustScale = function () {\n var yScale = this.getYScale();\n // 如果数据发生过 stack adjust,需要调整下 yScale 的数据范围\n if (yScale && this.getAdjust('stack')) {\n this.updateStackRange(yScale, this.beforeMappingData);\n }\n };\n /**\n * 获取当前 Geometry 对应的 Shape 工厂实例。\n */\n Geometry.prototype.getShapeFactory = function () {\n var shapeType = this.shapeType;\n if (!getShapeFactory(shapeType)) {\n return;\n }\n if (!this.shapeFactory) {\n this.shapeFactory = clone(getShapeFactory(shapeType)); // 防止多个 view 共享一个 shapeFactory 实例,导致 coordinate 被篡改\n }\n // 因为这里缓存了 shapeFactory,但是外部可能会变更 coordinate,导致无法重新设置到 shapeFactory 中\n this.shapeFactory.coordinate = this.coordinate;\n // theme 原因同上\n this.shapeFactory.theme = this.theme.geometries[shapeType] || {};\n return this.shapeFactory;\n };\n /**\n * 获取每个 Shape 对应的关键点数据。\n * @param obj 经过分组 -> 数字化 -> adjust 调整后的数据记录\n * @returns\n */\n Geometry.prototype.createShapePointsCfg = function (obj) {\n var xScale = this.getXScale();\n var yScale = this.getYScale();\n var x = this.normalizeValues(obj[xScale.field], xScale);\n var y; // 存在没有 y 的情况\n if (yScale) {\n y = this.normalizeValues(obj[yScale.field], yScale);\n } else {\n y = obj.y ? obj.y : 0.1;\n }\n return {\n x: x,\n y: y,\n y0: yScale ? yScale.scale(this.getYMinValue()) : undefined\n };\n };\n /**\n * 创建 Element 实例。\n * @param mappingDatum Element 对应的绘制数据\n * @param [isUpdate] 是否处于更新阶段\n * @returns element 返回创建的 Element 实例\n */\n Geometry.prototype.createElement = function (mappingDatum, index, isUpdate) {\n if (isUpdate === void 0) {\n isUpdate = false;\n }\n var container = this.container;\n var shapeCfg = this.getDrawCfg(mappingDatum); // 获取绘制图形的配置信息\n var shapeFactory = this.getShapeFactory();\n var element = new Element({\n shapeFactory: shapeFactory,\n container: container,\n offscreenGroup: this.getOffscreenGroup(),\n elementIndex: index\n });\n element.animate = this.animateOption;\n element.geometry = this;\n element.draw(shapeCfg, isUpdate); // 绘制\n return element;\n };\n /**\n * 获取每条数据对应的图形绘制数据。\n * @param mappingDatum 映射后的数据\n * @returns draw cfg\n */\n Geometry.prototype.getDrawCfg = function (mappingDatum) {\n var originData = mappingDatum[FIELD_ORIGIN]; // 原始数据\n var cfg = {\n mappingData: mappingDatum,\n data: originData,\n x: mappingDatum.x,\n y: mappingDatum.y,\n color: mappingDatum.color,\n size: mappingDatum.size,\n isInCircle: this.coordinate.isPolar,\n customInfo: this.customOption\n };\n var shapeName = mappingDatum.shape;\n if (!shapeName && this.getShapeFactory()) {\n shapeName = this.getShapeFactory().defaultShapeType;\n }\n cfg.shape = shapeName;\n // 获取默认样式\n var theme = this.theme.geometries[this.shapeType];\n cfg.defaultStyle = get(theme, [shapeName, 'default'], {}).style;\n if (!cfg.defaultStyle && this.getShapeFactory()) {\n cfg.defaultStyle = this.getShapeFactory().getDefaultStyle(theme);\n }\n var styleOption = this.styleOption;\n if (styleOption) {\n cfg.style = this.getStyleCfg(styleOption, originData);\n }\n if (this.generatePoints) {\n cfg.points = mappingDatum.points;\n cfg.nextPoints = mappingDatum.nextPoints;\n }\n return cfg;\n };\n Geometry.prototype.updateElements = function (mappingDataArray, isUpdate) {\n var e_1, _a, e_2, _b, e_3, _c;\n if (isUpdate === void 0) {\n isUpdate = false;\n }\n var keyDatum = new Map();\n var keys = [];\n // 用来保持 diff 元素之后 added, updated 的相对顺序\n var keyIndex = new Map();\n var index = 0;\n // 获得更新数据所有的 keys\n // 将更新的数据用 key 索引\n for (var i = 0; i < mappingDataArray.length; i++) {\n var mappingData = mappingDataArray[i];\n for (var j = 0; j < mappingData.length; j++) {\n var mappingDatum = mappingData[j];\n var key = this.getElementId(mappingDatum);\n var finalKey = keyDatum.has(key) ? \"\".concat(key, \"-\").concat(i, \"-\").concat(j) : key;\n keys.push(finalKey);\n keyDatum.set(finalKey, mappingDatum);\n keyIndex.set(finalKey, index);\n index++;\n }\n }\n this.elements = new Array(index);\n var _d = diff(this.lastElementsMap, keys),\n added = _d.added,\n updated = _d.updated,\n removed = _d.removed;\n try {\n // 新建 element\n for (var added_1 = __values(added), added_1_1 = added_1.next(); !added_1_1.done; added_1_1 = added_1.next()) {\n var key = added_1_1.value;\n var mappingDatum = keyDatum.get(key);\n var i = keyIndex.get(key);\n var element = this.createElement(mappingDatum, i, isUpdate);\n this.elements[i] = element;\n this.elementsMap[key] = element;\n if (element.shape) {\n element.shape.set('zIndex', this.zIndexReversed ? this.elements.length - i : i);\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (added_1_1 && !added_1_1.done && (_a = added_1.return)) _a.call(added_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n try {\n // 更新 element\n for (var updated_1 = __values(updated), updated_1_1 = updated_1.next(); !updated_1_1.done; updated_1_1 = updated_1.next()) {\n var key = updated_1_1.value;\n var element = this.lastElementsMap[key];\n var mappingDatum = keyDatum.get(key);\n var currentShapeCfg = this.getDrawCfg(mappingDatum);\n var preShapeCfg = element.getModel();\n var i = keyIndex.get(key);\n if (this.isCoordinateChanged || isModelChange(currentShapeCfg, preShapeCfg)) {\n element.animate = this.animateOption;\n // 通过绘制数据的变更来判断是否需要更新,因为用户有可能会修改图形属性映射\n element.update(currentShapeCfg); // 更新对应的 element\n }\n\n this.elements[i] = element;\n this.elementsMap[key] = element;\n if (element.shape) {\n element.shape.set('zIndex', this.zIndexReversed ? this.elements.length - i : i);\n }\n }\n } catch (e_2_1) {\n e_2 = {\n error: e_2_1\n };\n } finally {\n try {\n if (updated_1_1 && !updated_1_1.done && (_b = updated_1.return)) _b.call(updated_1);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n // 全部 setZIndex 之后,再执行 sort\n if (this.container) {\n this.container.sort();\n }\n try {\n // 销毁被删除的 elements\n for (var removed_1 = __values(removed), removed_1_1 = removed_1.next(); !removed_1_1.done; removed_1_1 = removed_1.next()) {\n var key = removed_1_1.value;\n var element = this.lastElementsMap[key];\n // 更新动画配置,用户有可能在更新之前有对动画进行配置操作\n element.animate = this.animateOption;\n element.destroy();\n }\n } catch (e_3_1) {\n e_3 = {\n error: e_3_1\n };\n } finally {\n try {\n if (removed_1_1 && !removed_1_1.done && (_c = removed_1.return)) _c.call(removed_1);\n } finally {\n if (e_3) throw e_3.error;\n }\n }\n };\n /**\n * 获取渲染的 label 类型。\n */\n Geometry.prototype.getLabelType = function () {\n var _a = this,\n labelOption = _a.labelOption,\n coordinate = _a.coordinate,\n type = _a.type;\n var coordinateType = coordinate.type,\n isTransposed = coordinate.isTransposed;\n var labelType = get(labelOption, ['cfg', 'type']);\n if (!labelType) {\n // 用户未定义,则进行默认的逻辑\n if (coordinateType === 'polar') {\n // 极坐标下使用通用的极坐标文本,转置则使用饼图\n labelType = isTransposed ? 'pie' : 'polar';\n } else if (coordinateType === 'theta') {\n // theta 坐标系下使用饼图文本\n labelType = 'pie';\n } else if (type === 'interval' || type === 'polygon') {\n labelType = 'interval';\n } else {\n labelType = 'base';\n }\n }\n return labelType;\n };\n /**\n * 获取 Y 轴上的最小值。\n */\n Geometry.prototype.getYMinValue = function () {\n var yScale = this.getYScale();\n var min = yScale.min,\n max = yScale.max;\n var value;\n if (min >= 0) {\n value = min;\n } else if (max <= 0) {\n // 当值全位于负区间时,需要保证 ymin 在区域内,不可为 0\n value = max;\n } else {\n value = 0;\n }\n return value;\n };\n // 创建图形属性相关的配置项\n Geometry.prototype.createAttrOption = function (attrName, field, cfg) {\n if (isNil(field) || isObject(field)) {\n if (isObject(field) && isEqual(Object.keys(field), ['values'])) {\n // shape({ values: [ 'funnel' ] })\n set(this.attributeOption, attrName, {\n fields: field.values\n });\n } else {\n set(this.attributeOption, attrName, field);\n }\n } else {\n var attrCfg = {};\n if (isNumber(field)) {\n // size(3)\n attrCfg.values = [field];\n } else {\n attrCfg.fields = parseFields(field);\n }\n if (cfg) {\n if (isFunction(cfg)) {\n attrCfg.callback = cfg;\n } else {\n attrCfg.values = cfg;\n }\n }\n set(this.attributeOption, attrName, attrCfg);\n }\n };\n Geometry.prototype.initAttributes = function () {\n var _this = this;\n var _a = this,\n attributes = _a.attributes,\n attributeOption = _a.attributeOption,\n theme = _a.theme,\n shapeType = _a.shapeType;\n this.groupScales = [];\n var tmpMap = {};\n var _loop_1 = function _loop_1(attrType) {\n if (attributeOption.hasOwnProperty(attrType)) {\n var option = attributeOption[attrType];\n if (!option) {\n return {\n value: void 0\n };\n }\n var attrCfg = __assign({}, option);\n var callback = attrCfg.callback,\n values = attrCfg.values,\n _b = attrCfg.fields,\n fields = _b === void 0 ? [] : _b;\n // 获取每一个字段对应的 scale\n var scales = fields.map(function (field) {\n var scale = _this.scales[field];\n if (!tmpMap[field] && GROUP_ATTRS.includes(attrType)) {\n var inferedScaleType = inferScaleType(scale, get(_this.scaleDefs, field), attrType, _this.type);\n if (inferedScaleType === 'cat') {\n _this.groupScales.push(scale);\n tmpMap[field] = true;\n }\n }\n return scale;\n });\n attrCfg.scales = scales;\n if (attrType !== 'position' && scales.length === 1 && scales[0].type === 'identity') {\n // 用户在图形通道上声明了常量字段 color('red'), size(5)\n attrCfg.values = scales[0].values;\n } else if (!callback && !values) {\n // 用户没有指定任何规则,则使用默认的映射规则\n if (attrType === 'size') {\n attrCfg.values = theme.sizes;\n } else if (attrType === 'shape') {\n attrCfg.values = theme.shapes[shapeType] || [];\n } else if (attrType === 'color') {\n if (scales.length) {\n // 根据数值个数使用对应的色板\n attrCfg.values = scales[0].values.length <= 10 ? theme.colors10 : theme.colors20;\n } else {\n attrCfg.values = theme.colors10;\n }\n }\n }\n var AttributeCtor = getAttributeClass(attrType);\n attributes[attrType] = new AttributeCtor(attrCfg);\n }\n };\n // 遍历每一个 attrOption,各自创建 Attribute 实例\n for (var attrType in attributeOption) {\n var state_1 = _loop_1(attrType);\n if (typeof state_1 === \"object\") return state_1.value;\n }\n };\n // 处理数据:分组 -> 数字化 -> adjust 调整\n Geometry.prototype.processData = function (data) {\n var e_4, _a;\n this.hasSorted = false;\n var scales = this.getAttribute('position').scales;\n var categoryScales = scales.filter(function (scale) {\n return scale.isCategory;\n });\n var groupedArray = this.groupData(data); // 数据分组\n var beforeAdjust = [];\n for (var i = 0, len = groupedArray.length; i < len; i++) {\n var subData = groupedArray[i];\n var arr = [];\n for (var j = 0, subLen = subData.length; j < subLen; j++) {\n var originData = subData[j];\n var item = {};\n // tslint:disable-next-line: forin\n for (var k in originData) {\n item[k] = originData[k];\n }\n item[FIELD_ORIGIN] = originData;\n try {\n // 将分类数据翻译成数据, 仅对位置相关的度量进行数字化处理\n for (var categoryScales_1 = (e_4 = void 0, __values(categoryScales)), categoryScales_1_1 = categoryScales_1.next(); !categoryScales_1_1.done; categoryScales_1_1 = categoryScales_1.next()) {\n var scale = categoryScales_1_1.value;\n var field = scale.field;\n item[field] = scale.translate(item[field]);\n }\n } catch (e_4_1) {\n e_4 = {\n error: e_4_1\n };\n } finally {\n try {\n if (categoryScales_1_1 && !categoryScales_1_1.done && (_a = categoryScales_1.return)) _a.call(categoryScales_1);\n } finally {\n if (e_4) throw e_4.error;\n }\n }\n arr.push(item);\n }\n beforeAdjust.push(arr);\n }\n var dataArray = this.adjustData(beforeAdjust); // 进行 adjust 数据调整\n this.beforeMappingData = dataArray;\n return dataArray;\n };\n // 调整数据\n Geometry.prototype.adjustData = function (dataArray) {\n var adjustOption = this.adjustOption;\n var _a = this,\n intervalPadding = _a.intervalPadding,\n dodgePadding = _a.dodgePadding,\n theme = _a.theme;\n // 兼容theme配置\n var maxColumnWidth = this.maxColumnWidth || theme.maxColumnWidth;\n var minColumnWidth = this.minColumnWidth || theme.minColumnWidth;\n var columnWidthRatio = this.columnWidthRatio || theme.columnWidthRatio;\n var result = dataArray;\n if (adjustOption) {\n var xScale_2 = this.getXScale();\n var yScale = this.getYScale();\n var xField = xScale_2.field;\n var yField = yScale ? yScale.field : null;\n var xDimensionLength = getXDimensionLength(this.coordinate);\n var groupNum = xScale_2.values.length;\n // 传入size计算相关参数,默认宽度、最大最小宽度约束\n var sizeAttr = this.getAttribute('size');\n var defaultSize = void 0;\n if (sizeAttr) {\n defaultSize = sizeAttr.values[0];\n }\n for (var i = 0, len = adjustOption.length; i < len; i++) {\n var adjust = adjustOption[i];\n var adjustCfg = __assign({\n xField: xField,\n yField: yField,\n intervalPadding: intervalPadding,\n dodgePadding: dodgePadding,\n xDimensionLength: xDimensionLength,\n groupNum: groupNum,\n defaultSize: defaultSize,\n maxColumnWidth: maxColumnWidth,\n minColumnWidth: minColumnWidth,\n columnWidthRatio: columnWidthRatio\n }, adjust);\n var type = adjust.type;\n if (type === 'dodge') {\n var adjustNames = [];\n if (xScale_2.isCategory || xScale_2.type === 'identity') {\n adjustNames.push('x');\n } else if (!yScale) {\n adjustNames.push('y');\n } else {\n throw new Error('dodge is not support linear attribute, please use category attribute!');\n }\n adjustCfg.adjustNames = adjustNames;\n // 每个分组内每条柱子的宽度占比,用户不可指定,用户需要通过 columnWidthRatio 指定\n // 兼容theme配置\n adjustCfg.dodgeRatio = columnWidthRatio;\n } else if (type === 'stack') {\n var coordinate = this.coordinate;\n if (!yScale) {\n // 一维的情况下获取高度和默认size\n adjustCfg.height = coordinate.getHeight();\n var size = this.getDefaultValue('size') || 3;\n adjustCfg.size = size;\n }\n // 不进行 transpose 时,用户又没有设置这个参数时,默认从上向下\n if (!coordinate.isTransposed && isNil(adjustCfg.reverseOrder)) {\n adjustCfg.reverseOrder = true;\n }\n }\n var adjustCtor = getAdjustClass(type);\n adjustCfg.dimValuesMap = {};\n //生成dimValuesMap\n if (xScale_2 && xScale_2.values) {\n adjustCfg.dimValuesMap[xScale_2.field] = xScale_2.values.map(function (v) {\n return xScale_2.translate(v);\n });\n }\n var adjustInstance = new adjustCtor(adjustCfg);\n result = adjustInstance.process(result);\n this.adjusts[type] = adjustInstance;\n }\n }\n return result;\n };\n // 对数据进行分组\n Geometry.prototype.groupData = function (data) {\n var groupScales = this.getGroupScales();\n var scaleDefs = this.scaleDefs;\n var appendConditions = {};\n var groupFields = [];\n for (var index = 0; index < groupScales.length; index++) {\n var scale = groupScales[index];\n var field = scale.field;\n groupFields.push(field);\n if (get(scaleDefs, [field, 'values'])) {\n // 用户通过 view.scale() 接口指定了 values 属性\n appendConditions[field] = scaleDefs[field].values;\n }\n }\n return group(data, groupFields, appendConditions);\n };\n // 更新发生层叠后的数据对应的度量范围\n Geometry.prototype.updateStackRange = function (scale, dataArray) {\n var mergeArray = flatten(dataArray);\n var field = scale.field;\n var min = scale.min;\n var max = scale.max;\n for (var index = 0; index < mergeArray.length; index++) {\n var obj = mergeArray[index];\n var tmpMin = Math.min.apply(null, obj[field]);\n var tmpMax = Math.max.apply(null, obj[field]);\n if (tmpMin < min) {\n min = tmpMin;\n }\n if (tmpMax > max) {\n max = tmpMax;\n }\n }\n var scaleDefs = this.scaleDefs;\n var cfg = {};\n if (min < scale.min && !get(scaleDefs, [field, 'min'])) {\n // 用户如果在列定义中定义了 min,则以用户定义的为准\n cfg.min = min;\n }\n if (max > scale.max && !get(scaleDefs, [field, 'max'])) {\n // 用户如果在列定义中定义了 max\n cfg.max = max;\n }\n scale.change(cfg);\n };\n // 将数据映射至图形空间前的操作:排序以及关键点的生成\n Geometry.prototype.beforeMapping = function (beforeMappingData) {\n // 当初加 clone 是因为 points 的引用关系,导致更新失败,可是现在貌似复现不出来了,所以暂时不进行 clone\n // const source = clone(beforeMappingData);\n var source = beforeMappingData;\n if (this.sortable) {\n this.sort(source);\n }\n if (this.generatePoints) {\n // 需要生成关键点\n for (var index = 0, length_5 = source.length; index < length_5; index++) {\n var currentData = source[index];\n this.generateShapePoints(currentData);\n var nextData = source[index + 1];\n if (nextData) {\n this.generateShapePoints(nextData);\n currentData[0].nextPoints = nextData[0].points;\n }\n }\n }\n return source;\n };\n // 生成 shape 的关键点\n Geometry.prototype.generateShapePoints = function (data) {\n var shapeFactory = this.getShapeFactory();\n var shapeAttr = this.getAttribute('shape');\n for (var index = 0; index < data.length; index++) {\n var obj = data[index];\n var cfg = this.createShapePointsCfg(obj);\n var shape = shapeAttr ? this.getAttributeValues(shapeAttr, obj) : null;\n var points = shapeFactory.getShapePoints(shape, cfg);\n obj.points = points;\n }\n };\n // 将数据归一化\n Geometry.prototype.normalizeValues = function (values, scale) {\n var rst = [];\n if (isArray(values)) {\n for (var index = 0; index < values.length; index++) {\n var value = values[index];\n rst.push(scale.scale(value));\n }\n } else {\n rst = scale.scale(values);\n }\n return rst;\n };\n // 将数据映射至图形空间\n Geometry.prototype.mapping = function (data) {\n var attributes = this.attributes;\n var mappingData = [];\n for (var index = 0; index < data.length; index++) {\n var record = data[index];\n var newRecord = {\n _origin: record[FIELD_ORIGIN],\n points: record.points,\n nextPoints: record.nextPoints\n };\n for (var k in attributes) {\n if (attributes.hasOwnProperty(k)) {\n var attr = attributes[k];\n var names = attr.names;\n var values = this.getAttributeValues(attr, record);\n if (names.length > 1) {\n // position 之类的生成多个字段的属性\n for (var j = 0; j < values.length; j += 1) {\n var val = values[j];\n var name_1 = names[j];\n newRecord[name_1] = isArray(val) && val.length === 1 ? val[0] : val; // 只有一个值时返回第一个属性值\n }\n } else {\n // values.length === 1 的判断是以下情况,获取用户设置的图形属性值\n // shape('a', ['dot', 'dash']), color('a', ['red', 'yellow'])\n newRecord[names[0]] = values.length === 1 ? values[0] : values;\n }\n }\n }\n this.convertPoint(newRecord); // 将 x、y 转换成画布坐标\n mappingData.push(newRecord);\n }\n return mappingData;\n };\n // 将归一化的坐标值转换成画布坐标\n Geometry.prototype.convertPoint = function (mappingRecord) {\n var x = mappingRecord.x,\n y = mappingRecord.y;\n var rstX;\n var rstY;\n var obj;\n var coordinate = this.coordinate;\n if (isArray(x) && isArray(y)) {\n rstX = [];\n rstY = [];\n for (var i = 0, j = 0, xLen = x.length, yLen = y.length; i < xLen && j < yLen; i += 1, j += 1) {\n obj = coordinate.convert({\n x: x[i],\n y: y[j]\n });\n rstX.push(obj.x);\n rstY.push(obj.y);\n }\n } else if (isArray(y)) {\n rstY = [];\n for (var index = 0; index < y.length; index++) {\n var yVal = y[index];\n obj = coordinate.convert({\n x: x,\n y: yVal\n });\n if (rstX && rstX !== obj.x) {\n if (!isArray(rstX)) {\n rstX = [rstX];\n }\n rstX.push(obj.x);\n } else {\n rstX = obj.x;\n }\n rstY.push(obj.y);\n }\n } else if (isArray(x)) {\n rstX = [];\n for (var index = 0; index < x.length; index++) {\n var xVal = x[index];\n obj = coordinate.convert({\n x: xVal,\n y: y\n });\n if (rstY && rstY !== obj.y) {\n if (!isArray(rstY)) {\n rstY = [rstY];\n }\n rstY.push(obj.y);\n } else {\n rstY = obj.y;\n }\n rstX.push(obj.x);\n }\n } else {\n var point = coordinate.convert({\n x: x,\n y: y\n });\n rstX = point.x;\n rstY = point.y;\n }\n mappingRecord.x = rstX;\n mappingRecord.y = rstY;\n };\n // 获取 style 配置\n Geometry.prototype.getStyleCfg = function (styleOption, originData) {\n var _a = styleOption.fields,\n fields = _a === void 0 ? [] : _a,\n callback = styleOption.callback,\n cfg = styleOption.cfg;\n if (cfg) {\n // 用户直接配置样式属性\n return cfg;\n }\n var params = fields.map(function (field) {\n return originData[field];\n });\n return callback.apply(void 0, __spreadArray([], __read(params), false));\n };\n Geometry.prototype.setCfg = function (cfg) {\n var _this = this;\n var coordinate = cfg.coordinate,\n data = cfg.data,\n theme = cfg.theme,\n scaleDefs = cfg.scaleDefs;\n if (coordinate) {\n this.coordinate = coordinate;\n }\n if (data) {\n this.data = data;\n }\n if (scaleDefs) {\n this.scaleDefs = scaleDefs;\n this.idFields = [];\n each(scaleDefs, function (scaleDef, field) {\n if (scaleDef && scaleDef.key) {\n _this.idFields.push(field);\n }\n });\n }\n if (theme) {\n this.theme = this.userTheme ? deepMix({}, theme, this.userTheme) : theme; // 支持 geometry 层级的主题设置\n }\n };\n\n Geometry.prototype.renderLabels = function (mappingArray, isUpdate) {\n if (isUpdate === void 0) {\n isUpdate = false;\n }\n return __awaiter(this, void 0, void 0, function () {\n var geometryLabel, labelType, GeometryLabelsCtor, labelsMap, elementLabels, _a, _b, _c, element, labels;\n var e_5, _d;\n var _this = this;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n geometryLabel = this.geometryLabel;\n this.emit(GEOMETRY_LIFE_CIRCLE.BEFORE_RENDER_LABEL);\n if (!geometryLabel) {\n labelType = this.getLabelType();\n GeometryLabelsCtor = getGeometryLabel(labelType);\n geometryLabel = new GeometryLabelsCtor(this);\n this.geometryLabel = geometryLabel;\n }\n return [4 /*yield*/, geometryLabel.render(mappingArray, isUpdate)];\n case 1:\n _e.sent();\n labelsMap = geometryLabel.labelsRenderer.shapesMap;\n elementLabels = new Map();\n each(labelsMap, function (labelGroup, labelGroupId) {\n var labelChildren = labelGroup.getChildren() || [];\n for (var j = 0; j < labelChildren.length; j++) {\n var labelShape = labelChildren[j];\n var element = _this.elementsMap[labelShape.get('elementId') || labelGroupId.split(' ')[0]];\n if (element) {\n labelShape.cfg.name = ['element', 'label'];\n labelShape.cfg.element = element;\n var labels = elementLabels.get(element) || new Set();\n labels.add(labelGroup);\n elementLabels.set(element, labels);\n }\n }\n });\n try {\n for (_a = __values(elementLabels.entries()), _b = _a.next(); !_b.done; _b = _a.next()) {\n _c = __read(_b.value, 2), element = _c[0], labels = _c[1];\n element.labelShape = __spreadArray([], __read(labels), false);\n }\n } catch (e_5_1) {\n e_5 = {\n error: e_5_1\n };\n } finally {\n try {\n if (_b && !_b.done && (_d = _a.return)) _d.call(_a);\n } finally {\n if (e_5) throw e_5.error;\n }\n }\n this.emit(GEOMETRY_LIFE_CIRCLE.AFTER_RENDER_LABEL);\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * 是否需要进行群组入场动画\n * 规则:\n * 1. 如果发生更新,则不进行\n * 2. 如果用户关闭 geometry 动画,则不进行\n * 3. 如果用户关闭了 appear 动画,则不进行\n * 4. 如果用户配置了 appear.animation,则不进行\n */\n Geometry.prototype.canDoGroupAnimation = function (isUpdate) {\n return !isUpdate && this.animateOption && (get(this.animateOption, 'appear') === undefined || get(this.animateOption, 'appear') && get(this.animateOption, ['appear', 'animation']) === undefined);\n };\n return Geometry;\n}(Base);\nexport default Geometry;","import { __values } from \"tslib\";\nimport { groupToMap } from '@antv/util';\n/** @ignore */\nexport function group(data, fields, appendConditions) {\n var e_1, _a;\n if (appendConditions === void 0) {\n appendConditions = {};\n }\n if (!fields) {\n return [data];\n }\n var groups = groupToMap(data, fields);\n var array = [];\n if (fields.length === 1 && appendConditions[fields[0]]) {\n var values = appendConditions[fields[0]];\n try {\n for (var values_1 = __values(values), values_1_1 = values_1.next(); !values_1_1.done; values_1_1 = values_1.next()) {\n var value = values_1_1.value;\n var arr = groups[\"_\".concat(value)];\n if (arr) {\n // 可能存在用户设置 values ,但是数据中没有对应的字段,则这时候 arr 就为 null\n array.push(arr);\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (values_1_1 && !values_1_1.done && (_a = values_1.return)) _a.call(values_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n } else {\n for (var k in groups) {\n if (groups.hasOwnProperty(k)) {\n var eachGroup = groups[k];\n array.push(eachGroup);\n }\n }\n }\n return array;\n}","import { ext } from '@antv/matrix-util';\nvar transform = ext.transform;\nexport { transform };\n/**\n * 对元素进行平移操作。\n * @param element 进行变换的元素\n * @param x x 方向位移\n * @param y y 方向位移\n */\nexport function translate(element, x, y) {\n var matrix = transform(element.getMatrix(), [['t', x, y]]);\n element.setMatrix(matrix);\n}\n/**\n * 获取元素旋转矩阵 (以元素的左上角为旋转点)\n * @param element 进行变换的元素\n * @param rotateRadian 旋转弧度\n */\nexport function getRotateMatrix(element, rotateRadian) {\n var _a = element.attr(),\n x = _a.x,\n y = _a.y;\n var matrix = transform(element.getMatrix(), [['t', -x, -y], ['r', rotateRadian], ['t', x, y]]);\n return matrix;\n}\n/**\n * 对元素进行旋转操作。\n * @param element 进行变换的元素\n * @param rotateRadian 旋转弧度\n */\nexport function rotate(element, rotateRadian) {\n var matrix = getRotateMatrix(element, rotateRadian);\n element.setMatrix(matrix);\n}\n/**\n * 获取元矩阵。\n * @returns identity matrix\n */\nexport function getIdentityMatrix() {\n return [1, 0, 0, 0, 1, 0, 0, 0, 1];\n}\n/**\n * 围绕图形中心点进行缩放\n * @param element 进行缩放的图形元素\n * @param ratio 缩放比例\n */\nexport function zoom(element, ratio) {\n var bbox = element.getBBox();\n var x = (bbox.minX + bbox.maxX) / 2;\n var y = (bbox.minY + bbox.maxY) / 2;\n element.applyToMatrix([x, y, 1]);\n var matrix = transform(element.getMatrix(), [['t', -x, -y], ['s', ratio, ratio], ['t', x, y]]);\n element.setMatrix(matrix);\n}","/**\n * @file utils of label\n */\nimport { isNil, isNumber, some } from '@antv/util';\nimport { rotate } from '../../../util/transform';\n/**\n * 查找 Label Group 中的文本 shape 对象\n * @param label\n */\nexport function findLabelTextShape(label) {\n return label.find(function (el) {\n return el.get('type') === 'text';\n });\n}\n/**\n * 获取标签背景信息: box (无旋转) + rotation (旋转角度)\n */\nexport function getLabelBackgroundInfo(labelGroup, labelItem, padding) {\n if (padding === void 0) {\n padding = [0, 0, 0, 0];\n }\n var content = labelGroup && labelGroup.getChildren()[0];\n if (content) {\n var labelShape = content.clone();\n // revert rotate\n if (labelItem === null || labelItem === void 0 ? void 0 : labelItem.rotate) {\n rotate(labelShape, -labelItem.rotate);\n }\n // use `getCanvasBBox`, because if Shape is been translated, `getBBox` is not the actual box position\n var _a = labelShape.getCanvasBBox(),\n x = _a.x,\n y = _a.y,\n width = _a.width,\n height = _a.height;\n labelShape.destroy();\n var boxPadding = padding;\n if (isNil(boxPadding)) {\n boxPadding = [2, 2, 2, 2];\n } else if (isNumber(boxPadding)) {\n boxPadding = new Array(4).fill(boxPadding);\n }\n return {\n x: x - boxPadding[3],\n y: y - boxPadding[0],\n width: width + boxPadding[1] + boxPadding[3],\n height: height + boxPadding[0] + boxPadding[2],\n rotation: (labelItem === null || labelItem === void 0 ? void 0 : labelItem.rotate) || 0\n };\n }\n return {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n rotation: 0\n };\n}\n/**\n * 计算两个矩形之间的堆叠区域面积\n */\nexport function getOverlapArea(a, b, margin) {\n if (margin === void 0) {\n margin = 0;\n }\n var xOverlap = Math.max(0, Math.min(a.x + a.width + margin, b.x + b.width + margin) - Math.max(a.x - margin, b.x - margin));\n var yOverlap = Math.max(0, Math.min(a.y + a.height + margin, b.y + b.height + margin) - Math.max(a.y - margin, b.y - margin));\n return xOverlap * yOverlap;\n}\n/** 检测是否和已布局的堆叠 */\nexport function checkShapeOverlap(cur, dones) {\n var box = cur.getBBox();\n return some(dones, function (done) {\n var target = done.getBBox();\n return getOverlapArea(box, target, 2) > 0;\n });\n}","import { each, get } from '@antv/util';\nimport { doAnimate } from '../animate';\nimport { getReplaceAttrs } from '../util/graphics';\n/**\n * @desc 更新 label (目前没有根据 id 索引,还是会存在一点小问题的,只能根据 idx 索引)\n * @done shape 属性更新\n * @done shape delete\n * @done shape append\n *\n * @param fromShape old labelShape\n * @param toShape new labelShape\n * @param cfg\n */\nexport function updateLabel(fromShape, toShape, cfg) {\n var data = cfg.data,\n origin = cfg.origin,\n animateCfg = cfg.animateCfg,\n coordinate = cfg.coordinate;\n var updateAnimateCfg = get(animateCfg, 'update');\n fromShape.set('data', data);\n fromShape.set('origin', origin);\n fromShape.set('animateCfg', animateCfg);\n fromShape.set('coordinate', coordinate);\n fromShape.set('visible', toShape.get('visible'));\n (fromShape.getChildren() || []).forEach(function (fromChild, idx) {\n var toChild = toShape.getChildByIndex(idx);\n if (!toChild) {\n fromShape.removeChild(fromChild);\n fromChild.remove(true);\n } else {\n fromChild.set('data', data);\n fromChild.set('origin', origin);\n fromChild.set('animateCfg', animateCfg);\n fromChild.set('coordinate', coordinate);\n var newAttrs = getReplaceAttrs(fromChild, toChild);\n if (updateAnimateCfg) {\n doAnimate(fromChild, updateAnimateCfg, {\n toAttrs: newAttrs,\n coordinate: coordinate\n });\n } else {\n fromChild.attr(newAttrs);\n }\n if (toChild.isGroup()) {\n updateLabel(fromChild, toChild, cfg);\n }\n }\n });\n // append\n each(toShape.getChildren(), function (child, idx) {\n if (idx >= fromShape.getCount()) {\n if (!child.destroyed) {\n fromShape.add(child);\n }\n }\n });\n}","import { __assign, __awaiter, __generator, __rest, __values } from \"tslib\";\nimport { deepMix, each, get, isArray, isNull } from '@antv/util';\nimport { doAnimate } from '../animate';\nimport { getGeometryLabelLayout } from '../geometry/label';\nimport { getLabelBackgroundInfo } from '../geometry/label/util';\nimport { polarToCartesian } from '../util/graphics';\nimport { rotate, translate } from '../util/transform';\nimport { FIELD_ORIGIN } from '../constant';\nimport { updateLabel } from './update-label';\n/**\n * Geometry labels 渲染组件\n */\nvar Labels = /** @class */function () {\n function Labels(cfg) {\n /** 存储当前 shape 的映射表,键值为 shape id */\n this.shapesMap = {};\n var layout = cfg.layout,\n container = cfg.container;\n this.layout = layout;\n this.container = container;\n }\n /**\n * 渲染文本\n */\n Labels.prototype.render = function (items, shapes, isUpdate) {\n if (isUpdate === void 0) {\n isUpdate = false;\n }\n return __awaiter(this, void 0, void 0, function () {\n var shapesMap, offscreenGroup, items_1, items_1_1, item, lastShapesMap;\n var e_1, _a;\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n shapesMap = {};\n offscreenGroup = this.createOffscreenGroup();\n if (!items.length) return [3 /*break*/, 2];\n try {\n // 如果 items 空的话就不进行绘制调整操作\n // step 1: 在虚拟 group 中创建 shapes\n for (items_1 = __values(items), items_1_1 = items_1.next(); !items_1_1.done; items_1_1 = items_1.next()) {\n item = items_1_1.value;\n if (item) {\n shapesMap[item.id] = this.renderLabel(item, offscreenGroup);\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (items_1_1 && !items_1_1.done && (_a = items_1.return)) _a.call(items_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n // [todo] Move layout into Worker.\n // step 2: 根据布局,调整 labels\n return [4 /*yield*/, this.doLayout(items, shapes, shapesMap)];\n case 1:\n // [todo] Move layout into Worker.\n // step 2: 根据布局,调整 labels\n _b.sent();\n // step 3.1: 绘制 labelLine\n this.renderLabelLine(items, shapesMap);\n // step 3.2: 绘制 labelBackground\n this.renderLabelBackground(items, shapesMap);\n // step 4: 根据用户设置的偏移量调整 label\n this.adjustLabel(items, shapesMap);\n _b.label = 2;\n case 2:\n lastShapesMap = this.shapesMap;\n each(shapesMap, function (shape, id) {\n if (shape.destroyed) {\n // label 在布局调整环节被删除了(doLayout)\n delete shapesMap[id];\n } else {\n if (lastShapesMap[id]) {\n // 图形发生更新\n var data = shape.get('data');\n var origin_1 = shape.get('origin');\n var coordinate = shape.get('coordinate');\n var currentAnimateCfg = shape.get('animateCfg');\n var currentShape = lastShapesMap[id]; // 已经在渲染树上的 shape\n updateLabel(currentShape, shapesMap[id], {\n data: data,\n origin: origin_1,\n animateCfg: currentAnimateCfg,\n coordinate: coordinate\n });\n shapesMap[id] = currentShape; // 保存引用\n } else {\n // 新生成的 shape\n // If container has been destroyed, no need to render labels.\n if (_this.container.destroyed) return;\n _this.container.add(shape);\n var animateCfg = get(shape.get('animateCfg'), isUpdate ? 'enter' : 'appear');\n if (animateCfg) {\n doAnimate(shape, animateCfg, {\n toAttrs: __assign({}, shape.attr()),\n coordinate: shape.get('coordinate')\n });\n }\n }\n delete lastShapesMap[id];\n }\n });\n // 移除\n each(lastShapesMap, function (deleteShape) {\n var animateCfg = get(deleteShape.get('animateCfg'), 'leave');\n if (animateCfg) {\n doAnimate(deleteShape, animateCfg, {\n toAttrs: null,\n coordinate: deleteShape.get('coordinate')\n });\n } else {\n deleteShape.remove(true); // 移除\n }\n });\n\n this.shapesMap = shapesMap;\n offscreenGroup.destroy();\n return [2 /*return*/];\n }\n });\n });\n };\n /** 清除当前 labels */\n Labels.prototype.clear = function () {\n this.container.clear();\n this.shapesMap = {};\n };\n /** 销毁 */\n Labels.prototype.destroy = function () {\n this.container.destroy();\n this.shapesMap = null;\n };\n Labels.prototype.renderLabel = function (cfg, container) {\n var id = cfg.id,\n elementId = cfg.elementId,\n data = cfg.data,\n mappingData = cfg.mappingData,\n coordinate = cfg.coordinate,\n animate = cfg.animate,\n content = cfg.content,\n capture = cfg.capture;\n var shapeAppendCfg = {\n id: id,\n elementId: elementId,\n capture: capture,\n data: data,\n origin: __assign(__assign({}, mappingData), {\n data: mappingData[FIELD_ORIGIN]\n }),\n coordinate: coordinate\n };\n var labelGroup = container.addGroup(__assign({\n name: 'label',\n // 如果 this.animate === false 或者 cfg.animate === false/null 则不进行动画,否则进行动画配置的合并\n animateCfg: this.animate === false || animate === null || animate === false ? false : deepMix({}, this.animate, animate)\n }, shapeAppendCfg));\n var labelShape;\n if (content.isGroup && content.isGroup() || content.isShape && content.isShape()) {\n // 如果 content 是 Group 或者 Shape,根据 textAlign 调整位置后,直接将其加入 labelGroup\n var _a = content.getCanvasBBox(),\n width = _a.width,\n height = _a.height;\n var textAlign = get(cfg, 'textAlign', 'left');\n var x = cfg.x;\n var y = cfg.y - height / 2;\n if (textAlign === 'center') {\n x = x - width / 2;\n } else if (textAlign === 'right' || textAlign === 'end') {\n x = x - width;\n }\n translate(content, x, y); // 将 label 平移至 x, y 指定的位置\n labelShape = content;\n labelGroup.add(content);\n } else {\n var fill = get(cfg, ['style', 'fill']);\n labelShape = labelGroup.addShape('text', __assign({\n attrs: __assign(__assign({\n x: cfg.x,\n y: cfg.y,\n textAlign: cfg.textAlign,\n textBaseline: get(cfg, 'textBaseline', 'middle'),\n text: cfg.content\n }, cfg.style), {\n fill: isNull(fill) ? cfg.color : fill\n })\n }, shapeAppendCfg));\n }\n if (cfg.rotate) {\n rotate(labelShape, cfg.rotate);\n }\n return labelGroup;\n };\n // 根据type对label布局\n Labels.prototype.doLayout = function (items, shapes, shapesMap) {\n return __awaiter(this, void 0, void 0, function () {\n var layouts;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.layout) return [3 /*break*/, 2];\n layouts = isArray(this.layout) ? this.layout : [this.layout];\n return [4 /*yield*/, Promise.all(layouts.map(function (layout) {\n var layoutFn = getGeometryLabelLayout(get(layout, 'type', ''));\n if (!layoutFn) return;\n var labelShapes = [];\n var geometryShapes = [];\n each(shapesMap, function (labelShape, id) {\n labelShapes.push(labelShape);\n geometryShapes.push(shapes[labelShape.get('elementId')]);\n });\n // [todo] Refactor more layout into Worker.\n return layoutFn(items, labelShapes, geometryShapes, _this.region, layout.cfg);\n }))];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2:\n return [2 /*return*/];\n }\n });\n });\n };\n\n Labels.prototype.renderLabelLine = function (labelItems, shapesMap) {\n each(labelItems, function (labelItem) {\n var coordinate = get(labelItem, 'coordinate');\n if (!labelItem || !coordinate) {\n return;\n }\n var center = coordinate.getCenter();\n var radius = coordinate.getRadius();\n if (!labelItem.labelLine) {\n // labelLine: null | false,关闭 label 对应的 labelLine\n return;\n }\n var labelLineCfg = get(labelItem, 'labelLine', {});\n var id = labelItem.id;\n var path = labelLineCfg.path;\n if (!path) {\n var start = polarToCartesian(center.x, center.y, radius, labelItem.angle);\n path = [['M', start.x, start.y], ['L', labelItem.x, labelItem.y]];\n }\n var labelGroup = shapesMap[id];\n if (!labelGroup.destroyed) {\n labelGroup.addShape('path', {\n capture: false,\n attrs: __assign({\n path: path,\n stroke: labelItem.color ? labelItem.color : get(labelItem, ['style', 'fill'], '#000'),\n fill: null\n }, labelLineCfg.style),\n id: id,\n origin: labelItem.mappingData,\n data: labelItem.data,\n coordinate: labelItem.coordinate\n });\n }\n });\n };\n /**\n * 绘制标签背景\n * @param labelItems\n */\n Labels.prototype.renderLabelBackground = function (labelItems, shapesMap) {\n each(labelItems, function (labelItem) {\n var coordinate = get(labelItem, 'coordinate');\n var background = get(labelItem, 'background');\n if (!background || !coordinate) {\n return;\n }\n var id = labelItem.id;\n var labelGroup = shapesMap[id];\n if (!labelGroup.destroyed) {\n var labelContentShape = labelGroup.getChildren()[0];\n if (labelContentShape) {\n var _a = getLabelBackgroundInfo(labelGroup, labelItem, background.padding),\n rotation = _a.rotation,\n box = __rest(_a, [\"rotation\"]);\n var backgroundShape = labelGroup.addShape('rect', {\n attrs: __assign(__assign({}, box), background.style || {}),\n id: id,\n origin: labelItem.mappingData,\n data: labelItem.data,\n coordinate: labelItem.coordinate\n });\n backgroundShape.setZIndex(-1);\n if (rotation) {\n var matrix = labelContentShape.getMatrix();\n backgroundShape.setMatrix(matrix);\n }\n }\n }\n });\n };\n Labels.prototype.createOffscreenGroup = function () {\n var container = this.container;\n var GroupClass = container.getGroupBase(); // 获取分组的构造函数\n var newGroup = new GroupClass({});\n return newGroup;\n };\n Labels.prototype.adjustLabel = function (items, shapesMap) {\n each(items, function (item) {\n if (item) {\n var id = item.id;\n var labelGroup = shapesMap[id];\n if (!labelGroup.destroyed) {\n // fix: 如果说开发者的 label content 是一个 group,此处的偏移无法对 整个 content group 生效;场景类似 饼图 spider label 是一个含 2 个 textShape 的 gorup\n var labelShapes = labelGroup.findAll(function (ele) {\n return ele.get('type') !== 'path';\n });\n each(labelShapes, function (labelShape) {\n if (labelShape) {\n if (item.offsetX) {\n labelShape.attr('x', labelShape.attr('x') + item.offsetX);\n }\n if (item.offsetY) {\n labelShape.attr('y', labelShape.attr('y') + item.offsetY);\n }\n }\n });\n }\n }\n });\n };\n return Labels;\n}();\nexport default Labels;","import { __assign, __awaiter, __generator, __read, __spreadArray } from \"tslib\";\nimport { deepMix, each, get, isArray, isFunction, isNil, isNumber, isUndefined } from '@antv/util';\nimport { FIELD_ORIGIN } from '../../constant';\nimport { getDefaultAnimateCfg } from '../../animate';\nimport { getPolygonCentroid } from '../../util/graphics';\nimport Labels from '../../component/labels';\nfunction avg(arr) {\n var sum = 0;\n each(arr, function (value) {\n sum += value;\n });\n return sum / arr.length;\n}\n/**\n * Geometry Label 基类,用于生成 Geometry 下所有 label 的配置项信息\n */\nvar GeometryLabel = /** @class */function () {\n function GeometryLabel(geometry) {\n this.geometry = geometry;\n }\n GeometryLabel.prototype.getLabelItems = function (mapppingArray) {\n var _this = this;\n var items = [];\n var labelCfgs = this.getLabelCfgs(mapppingArray);\n // 获取 label 相关的 x,y 的值,获取具体的 x, y,防止存在数组\n each(mapppingArray, function (mappingData, index) {\n var labelCfg = labelCfgs[index];\n if (!labelCfg || isNil(mappingData.x) || isNil(mappingData.y)) {\n items.push(null);\n return;\n }\n var labelContent = !isArray(labelCfg.content) ? [labelCfg.content] : labelCfg.content;\n labelCfg.content = labelContent;\n var total = labelContent.length;\n each(labelContent, function (content, subIndex) {\n if (isNil(content) || content === '') {\n items.push(null);\n return;\n }\n var item = __assign(__assign({}, labelCfg), _this.getLabelPoint(labelCfg, mappingData, subIndex));\n if (!item.textAlign) {\n item.textAlign = _this.getLabelAlign(item, subIndex, total);\n }\n if (item.offset <= 0) {\n item.labelLine = null;\n }\n items.push(item);\n });\n });\n return items;\n };\n GeometryLabel.prototype.render = function (mappingArray, isUpdate) {\n if (isUpdate === void 0) {\n isUpdate = false;\n }\n return __awaiter(this, void 0, void 0, function () {\n var labelItems, labelsRenderer, shapes;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n labelItems = this.getLabelItems(mappingArray);\n labelsRenderer = this.getLabelsRenderer();\n shapes = this.getGeometryShapes();\n // 渲染文本\n return [4 /*yield*/, labelsRenderer.render(labelItems, shapes, isUpdate)];\n case 1:\n // 渲染文本\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n\n GeometryLabel.prototype.clear = function () {\n var labelsRenderer = this.labelsRenderer;\n if (labelsRenderer) {\n labelsRenderer.clear();\n }\n };\n GeometryLabel.prototype.destroy = function () {\n var labelsRenderer = this.labelsRenderer;\n if (labelsRenderer) {\n labelsRenderer.destroy();\n }\n this.labelsRenderer = null;\n };\n // geometry 更新之后,对应的 Coordinate 也会更新,为了获取到最新鲜的 Coordinate,故使用方法获取\n GeometryLabel.prototype.getCoordinate = function () {\n return this.geometry.coordinate;\n };\n /**\n * 获取 label 的默认配置\n */\n GeometryLabel.prototype.getDefaultLabelCfg = function (offset, position) {\n var geometry = this.geometry;\n var type = geometry.type,\n theme = geometry.theme;\n if (type === 'polygon' || type === 'interval' && position === 'middle' || offset < 0 && !['line', 'point', 'path'].includes(type)) {\n // polygon 或者 (interval 且 middle) 或者 offset 小于 0 时,文本展示在图形内部,将其颜色设置为 白色\n return get(theme, 'innerLabels', {});\n }\n return get(theme, 'labels', {});\n };\n /**\n * 获取当前 label 的最终配置\n * @param labelCfg\n */\n GeometryLabel.prototype.getThemedLabelCfg = function (labelCfg) {\n var geometry = this.geometry;\n var defaultLabelCfg = this.getDefaultLabelCfg();\n var type = geometry.type,\n theme = geometry.theme;\n var themedLabelCfg;\n if (type === 'polygon' || labelCfg.offset < 0 && !['line', 'point', 'path'].includes(type)) {\n // polygon 或者 offset 小于 0 时,文本展示在图形内部,将其颜色设置为 白色\n themedLabelCfg = deepMix({}, defaultLabelCfg, theme.innerLabels, labelCfg);\n } else {\n themedLabelCfg = deepMix({}, defaultLabelCfg, theme.labels, labelCfg);\n }\n return themedLabelCfg;\n };\n /**\n * 设置 label 位置\n * @param labelPointCfg\n * @param mappingData\n * @param index\n * @param position\n */\n GeometryLabel.prototype.setLabelPosition = function (labelPointCfg, mappingData, index, position) {};\n /**\n * @desc 获取 label offset\n */\n GeometryLabel.prototype.getLabelOffset = function (offset) {\n var coordinate = this.getCoordinate();\n var vector = this.getOffsetVector(offset);\n return coordinate.isTransposed ? vector[0] : vector[1];\n };\n /**\n * 获取每个 label 的偏移量 (矢量)\n * @param labelCfg\n * @param index\n * @param total\n * @return {Point} offsetPoint\n */\n GeometryLabel.prototype.getLabelOffsetPoint = function (labelCfg, index, total) {\n var offset = labelCfg.offset;\n var coordinate = this.getCoordinate();\n var transposed = coordinate.isTransposed;\n var dim = transposed ? 'x' : 'y';\n var factor = transposed ? 1 : -1; // y 方向上越大,像素的坐标越小,所以transposed时将系数变成\n var offsetPoint = {\n x: 0,\n y: 0\n };\n if (index > 0 || total === 1) {\n // 判断是否小于0\n offsetPoint[dim] = offset * factor;\n } else {\n offsetPoint[dim] = offset * factor * -1;\n }\n return offsetPoint;\n };\n /**\n * 获取每个 label 的位置\n * @param labelCfg\n * @param mappingData\n * @param index\n * @returns label point\n */\n GeometryLabel.prototype.getLabelPoint = function (labelCfg, mappingData, index) {\n var coordinate = this.getCoordinate();\n var total = labelCfg.content.length;\n function getDimValue(value, idx, isAvg) {\n if (isAvg === void 0) {\n isAvg = false;\n }\n var v = value;\n if (isArray(v)) {\n if (labelCfg.content.length === 1) {\n if (isAvg) {\n v = avg(v);\n } else {\n // 如果仅一个 label,多个 y, 取最后一个 y\n if (v.length <= 2) {\n v = v[value.length - 1];\n } else {\n v = avg(v);\n }\n }\n } else {\n v = v[idx];\n }\n }\n return v;\n }\n var label = {\n content: labelCfg.content[index],\n x: 0,\n y: 0,\n start: {\n x: 0,\n y: 0\n },\n color: '#fff'\n };\n var shape = isArray(mappingData.shape) ? mappingData.shape[0] : mappingData.shape;\n var isFunnel = shape === 'funnel' || shape === 'pyramid';\n // 多边形场景,多用于地图\n if (this.geometry.type === 'polygon') {\n var centroid = getPolygonCentroid(mappingData.x, mappingData.y);\n label.x = centroid[0];\n label.y = centroid[1];\n } else if (this.geometry.type === 'interval' && !isFunnel) {\n // 对直方图的label X 方向的位置居中\n label.x = getDimValue(mappingData.x, index, true);\n label.y = getDimValue(mappingData.y, index);\n } else {\n label.x = getDimValue(mappingData.x, index);\n label.y = getDimValue(mappingData.y, index);\n }\n // 处理漏斗图文本位置\n if (isFunnel) {\n var nextPoints = get(mappingData, 'nextPoints');\n var points = get(mappingData, 'points');\n if (nextPoints) {\n // 非漏斗图底部\n var point1 = coordinate.convert(points[1]);\n var point2 = coordinate.convert(nextPoints[1]);\n label.x = (point1.x + point2.x) / 2;\n label.y = (point1.y + point2.y) / 2;\n } else if (shape === 'pyramid') {\n var point1 = coordinate.convert(points[1]);\n var point2 = coordinate.convert(points[2]);\n label.x = (point1.x + point2.x) / 2;\n label.y = (point1.y + point2.y) / 2;\n }\n }\n if (labelCfg.position) {\n // 如果 label 支持 position 属性\n this.setLabelPosition(label, mappingData, index, labelCfg.position);\n }\n var offsetPoint = this.getLabelOffsetPoint(labelCfg, index, total);\n label.start = {\n x: label.x,\n y: label.y\n };\n label.x += offsetPoint.x;\n label.y += offsetPoint.y;\n label.color = mappingData.color;\n return label;\n };\n /**\n * 获取文本的对齐方式\n * @param item\n * @param index\n * @param total\n * @returns\n */\n GeometryLabel.prototype.getLabelAlign = function (item, index, total) {\n var align = 'center';\n var coordinate = this.getCoordinate();\n if (coordinate.isTransposed) {\n var offset = item.offset;\n if (offset < 0) {\n align = 'right';\n } else if (offset === 0) {\n align = 'center';\n } else {\n align = 'left';\n }\n if (total > 1 && index === 0) {\n if (align === 'right') {\n align = 'left';\n } else if (align === 'left') {\n align = 'right';\n }\n }\n }\n return align;\n };\n /**\n * 获取每一个 label 的唯一 id\n * @param mappingData label 对应的图形的绘制数据\n */\n GeometryLabel.prototype.getLabelId = function (mappingData) {\n var geometry = this.geometry;\n var type = geometry.type;\n var xScale = geometry.getXScale();\n var yScale = geometry.getYScale();\n var origin = mappingData[FIELD_ORIGIN]; // 原始数据\n var labelId = geometry.getElementId(mappingData);\n if (type === 'line' || type === 'area') {\n // 折线图以及区域图,一条线会对应一组数据,即多个 labels,为了区分这些 labels,需要在 line id 的前提下加上 x 字段值\n labelId += \" \".concat(origin[xScale.field]);\n } else if (type === 'path') {\n // path 路径图,无序,有可能存在相同 x 不同 y 的情况,需要通过 x y 来确定唯一 id\n labelId += \" \".concat(origin[xScale.field], \"-\").concat(origin[yScale.field]);\n }\n return labelId;\n };\n // 获取 labels 组件\n GeometryLabel.prototype.getLabelsRenderer = function () {\n var _a = this.geometry,\n labelsContainer = _a.labelsContainer,\n labelOption = _a.labelOption,\n canvasRegion = _a.canvasRegion,\n animateOption = _a.animateOption;\n var coordinate = this.geometry.coordinate;\n var labelsRenderer = this.labelsRenderer;\n if (!labelsRenderer) {\n labelsRenderer = new Labels({\n container: labelsContainer,\n layout: get(labelOption, ['cfg', 'layout'], {\n type: this.defaultLayout\n })\n });\n this.labelsRenderer = labelsRenderer;\n }\n labelsRenderer.region = canvasRegion;\n // 设置动画配置,如果 geometry 的动画关闭了,那么 label 的动画也会关闭\n labelsRenderer.animate = animateOption ? getDefaultAnimateCfg('label', coordinate) : false;\n return labelsRenderer;\n };\n GeometryLabel.prototype.getLabelCfgs = function (mapppingArray) {\n var _this = this;\n var geometry = this.geometry;\n var labelOption = geometry.labelOption,\n scales = geometry.scales,\n coordinate = geometry.coordinate;\n var _a = labelOption,\n fields = _a.fields,\n callback = _a.callback,\n cfg = _a.cfg;\n var labelScales = fields.map(function (field) {\n return scales[field];\n });\n var labelCfgs = [];\n each(mapppingArray, function (mappingData, index) {\n var origin = mappingData[FIELD_ORIGIN]; // 原始数据\n var originText = _this.getLabelText(origin, labelScales);\n var callbackCfg;\n if (callback) {\n // 当同时配置了 callback 和 cfg 时,以 callback 为准\n var originValues = fields.map(function (field) {\n return origin[field];\n });\n callbackCfg = callback.apply(void 0, __spreadArray([], __read(originValues), false));\n if (isNil(callbackCfg)) {\n labelCfgs.push(null);\n return;\n }\n }\n var labelCfg = __assign(__assign({\n id: _this.getLabelId(mappingData),\n elementId: _this.geometry.getElementId(mappingData),\n data: origin,\n // 存储原始数据\n mappingData: mappingData,\n // 存储映射后的数据,\n coordinate: coordinate\n }, cfg), callbackCfg);\n if (isFunction(labelCfg.position)) {\n labelCfg.position = labelCfg.position(origin, mappingData, index);\n }\n var offset = _this.getLabelOffset(labelCfg.offset || 0);\n // defaultCfg 需要判断 innerLabels & labels\n var defaultLabelCfg = _this.getDefaultLabelCfg(offset, labelCfg.position);\n // labelCfg priority: defaultCfg < cfg < callbackCfg\n labelCfg = deepMix({}, defaultLabelCfg, labelCfg);\n // 获取最终的 offset\n labelCfg.offset = _this.getLabelOffset(labelCfg.offset || 0);\n var content = labelCfg.content;\n if (isFunction(content)) {\n labelCfg.content = content(origin, mappingData, index);\n } else if (isUndefined(content)) {\n // 用户未配置 content,则默认为映射的第一个字段的值\n labelCfg.content = originText[0];\n }\n labelCfgs.push(labelCfg);\n });\n return labelCfgs;\n };\n GeometryLabel.prototype.getLabelText = function (origin, scales) {\n var labelTexts = [];\n each(scales, function (scale) {\n var value = origin[scale.field];\n if (isArray(value)) {\n value = value.map(function (subVal) {\n return scale.getText(subVal);\n });\n } else {\n value = scale.getText(value);\n }\n if (isNil(value) || value === '') {\n labelTexts.push(null);\n } else {\n labelTexts.push(value);\n }\n });\n return labelTexts;\n };\n GeometryLabel.prototype.getOffsetVector = function (offset) {\n if (offset === void 0) {\n offset = 0;\n }\n var coordinate = this.getCoordinate();\n var actualOffset = 0;\n if (isNumber(offset)) {\n actualOffset = offset;\n }\n // 如果 x,y 翻转,则偏移 x,否则偏移 y\n return coordinate.isTransposed ? coordinate.applyMatrix(actualOffset, 0) : coordinate.applyMatrix(0, actualOffset);\n };\n GeometryLabel.prototype.getGeometryShapes = function () {\n var geometry = this.geometry;\n var shapes = {};\n each(geometry.elementsMap, function (element, id) {\n shapes[id] = element.shape;\n });\n // 因为有可能 shape 还在进行动画,导致 shape.getBBox() 获取到的值不是最终态,所以需要从 offscreenGroup 获取\n each(geometry.getOffscreenGroup().getChildren(), function (child) {\n var id = geometry.getElementId(child.get('origin').mappingData);\n shapes[id] = child;\n });\n return shapes;\n };\n return GeometryLabel;\n}();\nexport default GeometryLabel;","import { __read, __spreadArray } from \"tslib\";\n/**\n * @ignore\n * get the mapping value by attribute, if mapping value is nil, return def\n * @param attr\n * @param value\n * @param def\n * @returns get mapping value\n */\nexport function getMappingValue(attr, value, def) {\n if (!attr) {\n return def;\n }\n var r;\n // 多参数映射,阻止程序报错\n if (attr.callback && attr.callback.length > 1) {\n var restArgs = Array(attr.callback.length - 1).fill('');\n r = attr.mapping.apply(attr, __spreadArray([value], __read(restArgs), false)).join('');\n } else {\n r = attr.mapping(value).join('');\n }\n return r || def;\n}","/** @ignore */\nexport var MarkerSymbols = {\n hexagon: function hexagon(x, y, r) {\n var diffX = r / 2 * Math.sqrt(3);\n return [['M', x, y - r], ['L', x + diffX, y - r / 2], ['L', x + diffX, y + r / 2], ['L', x, y + r], ['L', x - diffX, y + r / 2], ['L', x - diffX, y - r / 2], ['Z']];\n },\n bowtie: function bowtie(x, y, r) {\n var diffY = r - 1.5;\n return [['M', x - r, y - diffY], ['L', x + r, y + diffY], ['L', x + r, y - diffY], ['L', x - r, y + diffY], ['Z']];\n },\n cross: function cross(x, y, r) {\n return [['M', x - r, y - r], ['L', x + r, y + r], ['M', x + r, y - r], ['L', x - r, y + r]];\n },\n tick: function tick(x, y, r) {\n return [['M', x - r / 2, y - r], ['L', x + r / 2, y - r], ['M', x, y - r], ['L', x, y + r], ['M', x - r / 2, y + r], ['L', x + r / 2, y + r]];\n },\n plus: function plus(x, y, r) {\n return [['M', x - r, y], ['L', x + r, y], ['M', x, y - r], ['L', x, y + r]];\n },\n hyphen: function hyphen(x, y, r) {\n return [['M', x - r, y], ['L', x + r, y]];\n },\n line: function line(x, y, r) {\n return [['M', x, y - r], ['L', x, y + r]];\n }\n};","import { __assign } from \"tslib\";\nimport { deepMix, isString, each, get, isFunction } from '@antv/util';\nimport { DIRECTION } from '../constant';\nimport { getMappingValue } from './attr';\nimport { omit } from './helper';\nimport { MarkerSymbols } from './marker';\n/** 线条形 marker symbol */\nvar STROKES_SYMBOLS = ['line', 'cross', 'tick', 'plus', 'hyphen'];\n/**\n * 处理用户配置的 marker style\n * @param markerStyle\n * @param userMarker.style\n * @returns {ShapeAttrs} newStyle\n */\nfunction handleUserMarkerStyle(markerStyle, style) {\n if (isFunction(style)) {\n return style(markerStyle);\n }\n return deepMix({}, markerStyle, style);\n}\n/**\n * 根据 marker 是否为线条形 symbol, 来调整下样式\n * @param symbol\n * @param style\n * @param color\n */\nfunction adpatorMarkerStyle(marker, color) {\n var symbol = marker.symbol;\n if (isString(symbol) && STROKES_SYMBOLS.indexOf(symbol) !== -1) {\n var markerStyle = get(marker, 'style', {});\n var lineWidth = get(markerStyle, 'lineWidth', 1);\n var stroke = markerStyle.stroke || markerStyle.fill || color;\n marker.style = deepMix({}, marker.style, {\n lineWidth: lineWidth,\n stroke: stroke,\n fill: null\n });\n }\n}\n/**\n * 设置 marker 的 symbol,将 字符串的 symbol 转换为真正的绘制命令\n * @param marker\n */\nfunction setMarkerSymbol(marker) {\n var symbol = marker.symbol;\n if (isString(symbol) && MarkerSymbols[symbol]) {\n marker.symbol = MarkerSymbols[symbol];\n }\n}\n/**\n * @ignore\n * get the legend layout from direction\n * @param direction\n * @returns layout 'horizontal' | 'vertical'\n */\nexport function getLegendLayout(direction) {\n return direction.startsWith(DIRECTION.LEFT) || direction.startsWith(DIRECTION.RIGHT) ? 'vertical' : 'horizontal';\n}\n/**\n * @ignore\n * get the legend items\n * @param view\n * @param geometry\n * @param attr\n * @param themeMarker\n * @param markerCfg\n * @returns legend items\n */\nexport function getLegendItems(view, geometry, attr, themeMarker, userMarker) {\n var scale = attr.getScale(attr.type);\n if (scale.isCategory) {\n var field_1 = scale.field;\n var colorAttr_1 = geometry.getAttribute('color');\n var shapeAttr_1 = geometry.getAttribute('shape');\n var defaultColor_1 = view.getTheme().defaultColor;\n var isInPolar_1 = geometry.coordinate.isPolar;\n return scale.getTicks().map(function (tick, index) {\n var _a;\n var text = tick.text,\n scaleValue = tick.value;\n var name = text;\n var value = scale.invert(scaleValue);\n // 通过过滤图例项的数据,来看是否 unchecked\n var unchecked = view.filterFieldData(field_1, [(_a = {}, _a[field_1] = value, _a)]).length === 0;\n each(view.views, function (subView) {\n var _a;\n if (!subView.filterFieldData(field_1, [(_a = {}, _a[field_1] = value, _a)]).length) {\n unchecked = true;\n }\n });\n // @ts-ignore\n var color = getMappingValue(colorAttr_1, value, defaultColor_1);\n var shape = getMappingValue(shapeAttr_1, value, 'point');\n var marker = geometry.getShapeMarker(shape, {\n color: color,\n isInPolar: isInPolar_1\n });\n var markerCfg = userMarker;\n if (isFunction(markerCfg)) {\n markerCfg = markerCfg(name, index, __assign({\n name: name,\n value: value\n }, deepMix({}, themeMarker, marker)));\n }\n // the marker configure order should be ensure\n marker = deepMix({}, themeMarker, marker, omit(__assign({}, markerCfg), ['style']));\n adpatorMarkerStyle(marker, color);\n if (markerCfg && markerCfg.style) {\n // handle user's style settings\n marker.style = handleUserMarkerStyle(marker.style, markerCfg.style);\n }\n setMarkerSymbol(marker);\n return {\n id: value,\n name: name,\n value: value,\n marker: marker,\n unchecked: unchecked\n };\n });\n }\n return [];\n}\n/**\n *\n * @ignore\n * custom legend 的 items 获取\n * @param themeMarker\n * @param userMarker\n * @param customItems\n */\nexport function getCustomLegendItems(themeMarker, userMarker, customItems) {\n // 如果有自定义的 item,那么就直接使用,并合并主题的 marker 配置\n return customItems.map(function (item, index) {\n var markerCfg = userMarker;\n if (isFunction(markerCfg)) {\n markerCfg = markerCfg(item.name, index, deepMix({}, themeMarker, item));\n }\n var itemMarker = isFunction(item.marker) ? item.marker(item.name, index, deepMix({}, themeMarker, item)) : item.marker;\n var marker = deepMix({}, themeMarker, markerCfg, itemMarker);\n setMarkerSymbol(marker);\n item.marker = marker;\n return item;\n });\n}\n/**\n * get the legend cfg from theme, will mix the common cfg of legend theme\n *\n * @param theme view theme object\n * @param direction legend direction\n * @returns legend theme cfg\n */\nexport function getLegendThemeCfg(theme, direction) {\n var legendTheme = get(theme, ['components', 'legend'], {});\n return deepMix({}, get(legendTheme, ['common'], {}), deepMix({}, get(legendTheme, [direction], {})));\n}","import { isArray } from '@antv/util';\nimport { getSplinePath } from './path';\nfunction isValueEmpty(value) {\n if (value) {\n return false;\n }\n return value === null || value === undefined || isNaN(value);\n}\nfunction isYNil(point) {\n if (isArray(point)) {\n // 特殊处理 area 的关键点数据,其关键点结构为 [{x: 0, y: 1}, {x: 0, y: 2}]\n return isValueEmpty(point[1].y);\n }\n var value = point.y;\n return isArray(value) ? isValueEmpty(value[0]) : isValueEmpty(value);\n}\n/**\n * @ignore\n * 分割数据,用于处理在一组点数据中,y 对应的数值存在 null/undefined/NaN 的情况\n * 应用于折线图、区域图以及路径图\n *\n * ```typescript\n * // return [[{x: 1, y: 2}, {x: 3, y: 3}]]\n * getPathPoints([{x: 1, y: 2}, {x: 2, y: null}, {x: 3, y: 3}], true);\n * // return [[{x: 1, y: 2}], [{x: 3, y: 3}]]\n * getPathPoints([{x: 1, y: 2}, {x: 2, y: null}, {x: 3, y: 3}], false);\n * // return [[[{ x: 1, y: 10 }, { x: 2, y: 2 }], [{ x: 9, y: 34 }, { x: 1, y: 1 }]]]\n * getPathPoints([\n * [{ x: 1, y: 10 }, { x: 2, y: 2 }],\n * [{ x: 4, y: 2 }, { x: 8, y: NaN }],\n * [{ x: 9, y: 34 }, { x: 1, y: 1 }],\n * ], true);\n * ```\n *\n * @param points 要进行处理点集合\n * @param connectNulls 是否连接空值数据\n * @param showSinglePoint 是否展示孤立点\n * @returns 返回处理后的点集合\n */\nexport function getPathPoints(points, connectNulls, showSinglePoint) {\n if (connectNulls === void 0) {\n connectNulls = false;\n }\n if (showSinglePoint === void 0) {\n showSinglePoint = true;\n }\n if (!points.length || points.length === 1 && !showSinglePoint) {\n // 空或者只有一个点并配置不展示时\n return [];\n }\n if (connectNulls) {\n // 即 y 值为空的场景\n var filtered = [];\n for (var i = 0, len = points.length; i < len; i++) {\n var point = points[i];\n if (!isYNil(point)) {\n filtered.push(point);\n }\n }\n return [filtered];\n }\n var result = [];\n var tmp = [];\n for (var i = 0, len = points.length; i < len; i++) {\n var point = points[i];\n if (isYNil(point)) {\n if (tmp.length) {\n if (!(tmp.length === 1 && !showSinglePoint)) {\n // 如果前段数据只有一个字段并且不需要展示时则不加入\n result.push(tmp);\n }\n tmp = [];\n }\n } else {\n tmp.push(point);\n }\n }\n if (tmp.length) {\n result.push(tmp);\n }\n return result;\n}\n/**\n * 获取小提琴图的边界 path\n * @param points\n * @returns\n */\nexport function getViolinPath(points) {\n var path = [];\n for (var i = 0; i < points.length; i++) {\n var point = points[i];\n if (point) {\n var action = i === 0 ? 'M' : 'L';\n path.push([action, point.x, point.y]);\n }\n }\n var first = points[0];\n if (first) {\n path.push(['L', first.x, first.y]);\n path.push(['z']);\n }\n return path;\n}\n/**\n * 获取小提琴图 平滑的边界 path\n * @param points\n * @returns\n */\nexport function getSmoothViolinPath(points) {\n var half = points.length / 2;\n var leftPoints = [];\n var rightPoints = [];\n for (var i = 0; i < points.length; i++) {\n if (i < half) {\n leftPoints.push(points[i]);\n } else {\n rightPoints.push(points[i]);\n }\n }\n var leftPath = getSplinePath(leftPoints, false);\n var rightPath = getSplinePath(rightPoints, false);\n if (rightPoints.length) {\n leftPath.push(['L', rightPoints[0].x, rightPoints[0].y]);\n }\n rightPath.shift();\n var path = leftPath.concat(rightPath);\n if (leftPoints.length) {\n path.push(['L', leftPoints[0].x, leftPoints[0].y]);\n }\n path.push(['z']);\n return path;\n}","import { __assign } from \"tslib\";\nimport { deepMix, isNil, get } from '@antv/util';\n/**\n * @ignore\n * 获取 Shape 的图形属性\n * @param cfg\n * @param isStroke 是否需要描边\n * @param isFill 是否需要填充\n * @param [sizeName] 可选,表示图形大小的属性,lineWidth 或者 r\n * @returns\n */\nexport function getStyle(cfg, isStroke, isFill, sizeName) {\n if (sizeName === void 0) {\n sizeName = '';\n }\n var _a = cfg.style,\n style = _a === void 0 ? {} : _a,\n defaultStyle = cfg.defaultStyle,\n color = cfg.color,\n size = cfg.size;\n var attrs = __assign(__assign({}, defaultStyle), style);\n if (color) {\n if (isStroke) {\n if (!style.stroke) {\n // 如果用户在 style() 中配置了 stroke,则以用户配置的为准\n attrs.stroke = color;\n }\n }\n if (isFill) {\n if (!style.fill) {\n // 如果用户在 style() 中配置了 fill\n attrs.fill = color;\n }\n }\n }\n if (sizeName && isNil(style[sizeName]) && !isNil(size)) {\n // 如果用户在 style() 中配置了 lineWidth 或者 r 属性\n attrs[sizeName] = size;\n }\n return attrs;\n}\n/**\n * 获取 矩形背景 的样式\n * @param cfg\n */\nexport function getBackgroundRectStyle(cfg) {\n return deepMix({}, {\n // 默认背景色,copy from active-region\n fill: '#CCD6EC',\n fillOpacity: 0.3\n }, get(cfg, ['background', 'style']));\n}","import { isArray } from '@antv/util';\n/**\n * @ignore\n * 拆分点数据\n * @example\n * // result: [{x: 20, y: 20}, {x: 20, y: 30}]\n * splitPoints({x: 20,y: [20, 30]});\n * @example\n * // result: [{x: 20, y: 20}, {x: 30, y: 30}]\n * splitPoints({x: [20, 30],y: [20, 30]});\n * @param obj\n */\nexport function splitPoints(obj) {\n // y 有可能是数组,对应原始数据中 y 为一个区间数据,如 [19, 30],为了统一也将 x 转换为数组\n var x = obj.x;\n var y = isArray(obj.y) ? obj.y : [obj.y];\n return y.map(function (eachY, index) {\n return {\n x: isArray(x) ? x[index] : x,\n y: eachY\n };\n });\n}","var LineSymbols = {\n line: function line(x, y, r) {\n return [['M', x - r, y], ['L', x + r, y]];\n },\n dot: function dot(x, y, r) {\n return [['M', x - r, y], ['L', x + r, y]];\n },\n dash: function dash(x, y, r) {\n return [['M', x - r, y], ['L', x + r, y]];\n },\n smooth: function smooth(x, y, r) {\n return [['M', x - r, y], ['A', r / 2, r / 2, 0, 1, 1, x, y], ['A', r / 2, r / 2, 0, 1, 0, x + r, y]];\n },\n hv: function hv(x, y, r) {\n return [['M', x - r - 1, y - 2.5], ['L', x, y - 2.5], ['L', x, y + 2.5], ['L', x + r + 1, y + 2.5]];\n },\n vh: function vh(x, y, r) {\n return [['M', x - r - 1, y + 2.5], ['L', x, y + 2.5], ['L', x, y - 2.5], ['L', x + r + 1, y - 2.5]];\n },\n hvh: function hvh(x, y, r) {\n return [['M', x - (r + 1), y + 2.5], ['L', x - r / 2, y + 2.5], ['L', x - r / 2, y - 2.5], ['L', x + r / 2, y - 2.5], ['L', x + r / 2, y + 2.5], ['L', x + r + 1, y + 2.5]];\n },\n vhv: function vhv(x, y) {\n // 宽 13px,高 8px\n return [['M', x - 5, y + 2.5], ['L', x - 5, y], ['L', x, y], ['L', x, y - 3], ['L', x, y + 3], ['L', x + 6.5, y + 3]];\n }\n};\n/**\n * Gets line marker\n * @ignore\n * @param markerCfg\n * @param shapeType\n * @returns 返回 Line 的 marker 配置\n */\nexport function getLineMarker(markerCfg, shapeType) {\n var color = markerCfg.color;\n return {\n symbol: LineSymbols[shapeType],\n style: {\n lineWidth: 2,\n r: 6,\n stroke: color\n }\n };\n}","import { each, isArray } from '@antv/util';\nimport { registerShape, registerShapeFactory } from '../base';\nimport { getPathPoints } from '../util/get-path-points';\nimport { getStyle } from '../util/get-style';\nimport { getLinePath, getSplinePath } from '../util/path';\nimport { splitPoints } from '../util/split-points';\nimport { getLineMarker } from './util';\nfunction getShapeAttrs(cfg, smooth, constraint) {\n var isStack = cfg.isStack,\n connectNulls = cfg.connectNulls,\n isInCircle = cfg.isInCircle,\n showSinglePoint = cfg.showSinglePoint;\n var shapeAttrs = getStyle(cfg, true, false, 'lineWidth');\n var points = getPathPoints(cfg.points, connectNulls, showSinglePoint); // 根据 connectNulls 值处理 points\n var path = [];\n for (var i = 0, len = points.length; i < len; i++) {\n var eachLinePoints = points[i];\n path = path.concat(getPath(eachLinePoints, isInCircle, isStack, smooth, constraint, shapeAttrs));\n }\n shapeAttrs.path = path;\n return shapeAttrs;\n}\n// 单条 path\nfunction getSinglePath(points, isInCircle, smooth, constraint, style) {\n if (points.length === 1) {\n // 只有一个点时\n return [['M', points[0].x, points[0].y - style.lineWidth / 2], ['L', points[0].x, points[0].y], ['L', points[0].x, points[0].y + style.lineWidth / 2]];\n }\n var path;\n if (!smooth) {\n path = getLinePath(points, false);\n if (isInCircle) {\n path.push(['Z']);\n }\n } else {\n // 直角坐标系下绘制曲线时限制最大值、最小值\n if (isInCircle && points.length) {\n points.push({\n x: points[0].x,\n y: points[0].y\n });\n }\n path = getSplinePath(points, false, constraint);\n }\n return path;\n}\nfunction getRangePath(points, isInCircle, isStack, smooth, constraint, style) {\n var topPoints = [];\n var bottomPoints = [];\n each(points, function (point) {\n var result = splitPoints(point);\n topPoints.push(result[1]); // 上边\n bottomPoints.push(result[0]); // 底边\n });\n\n var topPath = getSinglePath(topPoints, isInCircle, smooth, constraint, style);\n var bottomPath = getSinglePath(bottomPoints, isInCircle, smooth, constraint, style);\n if (isStack) {\n return topPath;\n }\n return topPath.concat(bottomPath);\n}\n/**\n * 获取折线图 path\n */\nexport function getPath(points, isInCircle, isStack, smooth, constraint, style) {\n if (points.length) {\n var first = points[0];\n return isArray(first.y) ? getRangePath(points, isInCircle, isStack, smooth, constraint, style) : getSinglePath(points, isInCircle, smooth, constraint, style);\n }\n return [];\n}\nvar LineShapeFactory = registerShapeFactory('line', {\n defaultShapeType: 'line'\n});\n// 这里因为代码公用,所以直接全部注册\n// 'line' 默认折线;'dot' 点线 ···;'dash' 断线 - - -\neach(['line', 'dot', 'dash', 'smooth'], function (shapeType) {\n registerShape('line', shapeType, {\n draw: function draw(cfg, container) {\n var smooth = shapeType === 'smooth';\n var constraint;\n if (smooth) {\n var _a = this.coordinate,\n start = _a.start,\n end = _a.end;\n constraint = [[start.x, end.y], [end.x, start.y]];\n }\n var attrs = getShapeAttrs(cfg, smooth, constraint);\n var shape = container.addShape({\n type: 'path',\n attrs: attrs,\n name: 'line',\n capture: !smooth\n });\n return shape;\n },\n getMarker: function getMarker(markerCfg) {\n return getLineMarker(markerCfg, shapeType);\n }\n });\n});\nexport default LineShapeFactory;","/* G2 的一个壳子,不包含 Geometry,由开发者自己定义和引入 */\nexport var VERSION = '4.2.10';\n// 核心基类导出\nexport { Chart, View, Event } from './chart'; // Chart, View 类\nexport { Controller as ComponentController } from './chart/controller/base'; // G2 组件基类\nexport { default as TooltipController } from './chart/controller/tooltip'; // G2 tooltip 组件基类\nexport { default as Geometry } from './geometry/base'; // Geometry 基类\nexport { default as Element } from './geometry/element'; // Element 类\nexport { default as GeometryLabel } from './geometry/label/base'; // Geometry Label 基类\nexport { Interaction, Action } from './interaction'; // Interaction, Action 基类\nexport { Facet } from './facet'; // Facet 基类\nexport { default as InteractionAction } from './interaction/action/base'; // Interaction Action 基类\n// 注册 ComponentController\nexport { registerComponentController } from './chart';\n// 注册 Geometry\nexport { registerGeometry } from './chart';\n// 注册 Geometry Shape\nexport { registerShape, registerShapeFactory, getShapeFactory } from './geometry/shape/base';\n// 注册 Geometry label 以及 Geometry Label 布局函数\nexport { registerGeometryLabel, registerGeometryLabelLayout, getGeometryLabel, getGeometryLabelLayout } from './geometry/label';\n// 注册 interaction\nexport { getInteraction, registerInteraction, registerAction, getActionClass } from './interaction';\n// 注册 facet\nexport { getFacet, registerFacet } from './facet';\n// 注册主题\nexport { getTheme, registerTheme } from './theme';\n// G engine 管理相关\nexport { registerEngine, getEngine } from './engine';\n// 注册动画函数\nexport { registerAnimation, getAnimation } from './animate/animation';\nexport { LAYER, DIRECTION } from './constant';\n// 因为 typescript 部分版本不支持 export * as 语法。\nimport * as Types from './interface';\nexport { Coordinate, Scale } from './dependents';\n// 一些工具方法导出\nimport { getMappingValue } from './util/attr';\nimport { getLegendItems } from './util/legend';\nimport { getAngle, getSectorPath, polarToCartesian } from './util/graphics';\nimport { rotate, transform, translate, zoom } from './util/transform';\nimport { getTooltipItems } from './util/tooltip';\nimport { getDelegationObject } from './interaction/action/util';\nimport { getPathPoints } from './geometry/shape/util/get-path-points';\nimport { getPath } from './geometry/shape/line';\nexport var Util = {\n getLegendItems: getLegendItems,\n translate: translate,\n rotate: rotate,\n zoom: zoom,\n transform: transform,\n getAngle: getAngle,\n getSectorPath: getSectorPath,\n polarToCartesian: polarToCartesian,\n getDelegationObject: getDelegationObject,\n getTooltipItems: getTooltipItems,\n getMappingValue: getMappingValue,\n // shape 的一些操作方法\n getPath: getPath,\n getPathPoints: getPathPoints\n};","import { __assign } from \"tslib\";\nvar WHITE_COLORS = {\n 100: '#000',\n 95: '#0D0D0D',\n 85: '#262626',\n 65: '#595959',\n 45: '#8C8C8C',\n 25: '#BFBFBF',\n 15: '#D9D9D9',\n 6: '#F0F0F0'\n};\nvar BLACK_COLORS = {\n 100: '#FFFFFF',\n 95: '#F2F2F2',\n 85: '#D9D9D9',\n 65: '#A6A6A6',\n 45: '#737373',\n 25: '#404040',\n 15: '#262626',\n 6: '#0F0F0F'\n};\nvar QUALITATIVE_10 = ['#5B8FF9', '#5AD8A6', '#5D7092', '#F6BD16', '#E86452', '#6DC8EC', '#945FB9', '#FF9845', '#1E9493', '#FF99C3'];\nvar QUALITATIVE_20 = ['#5B8FF9', '#CDDDFD', '#5AD8A6', '#CDF3E4', '#5D7092', '#CED4DE', '#F6BD16', '#FCEBB9', '#E86452', '#F8D0CB', '#6DC8EC', '#D3EEF9', '#945FB9', '#DECFEA', '#FF9845', '#FFE0C7', '#1E9493', '#BBDEDE', '#FF99C3', '#FFE0ED'];\n/** 单色顺序色板 */\nvar SINGLE_SEQUENCE = ['#B8E1FF', '#9AC5FF', '#7DAAFF', '#5B8FF9', '#3D76DD', '#085EC0', '#0047A5', '#00318A', '#001D70'];\nexport var createDarkStyleSheet = function createDarkStyleSheet(cfg) {\n if (cfg === void 0) {\n cfg = {};\n }\n var _a = cfg.paletteQualitative10,\n paletteQualitative10 = _a === void 0 ? QUALITATIVE_10 : _a,\n _b = cfg.paletteQualitative20,\n paletteQualitative20 = _b === void 0 ? QUALITATIVE_20 : _b;\n var _c = cfg.brandColor,\n brandColor = _c === void 0 ? paletteQualitative10[0] : _c;\n var token = {\n /** 图表背景色 */\n backgroundColor: '#141414',\n /** 主题色 */\n brandColor: brandColor,\n /** 图表辅助色 */\n subColor: 'rgba(255,255,255,0.05)',\n /** 分类色板 1,在数据量小于等于 10 时使用 */\n paletteQualitative10: paletteQualitative10,\n /** 分类色板 2,在数据量大于 10 时使用 */\n paletteQualitative20: paletteQualitative20,\n /** 语义色 */\n paletteSemanticRed: '#F4664A',\n /** 语义色 */\n paletteSemanticGreen: '#30BF78',\n /** 语义色 */\n paletteSemanticYellow: '#FAAD14',\n /** (单色)顺序色板 */\n paletteSequence: SINGLE_SEQUENCE,\n /** 字体 */\n fontFamily: \"\\\"Segoe UI\\\", Roboto, \\\"Helvetica Neue\\\", Arial,\\n \\\"Noto Sans\\\", sans-serif, \\\"Apple Color Emoji\\\", \\\"Segoe UI Emoji\\\", \\\"Segoe UI Symbol\\\",\\n \\\"Noto Color Emoji\\\"\",\n // -------------------- 坐标轴 --------------------\n /** 坐标轴线颜色 */\n axisLineBorderColor: BLACK_COLORS[25],\n /** 坐标轴线粗细 */\n axisLineBorder: 1,\n /** 坐标轴线 lineDash 设置 */\n axisLineDash: null,\n /** 坐标轴标题颜色 */\n axisTitleTextFillColor: BLACK_COLORS[65],\n /** 坐标轴标题文本字体大小 */\n axisTitleTextFontSize: 12,\n /** 坐标轴标题文本行高 */\n axisTitleTextLineHeight: 12,\n /** 坐标轴标题文本字体粗细 */\n axisTitleTextFontWeight: 'normal',\n /** 坐标轴标题距离坐标轴文本的间距 */\n axisTitleSpacing: 12,\n /** 坐标轴标题详细说明icon颜色 */\n axisDescriptionIconFillColor: WHITE_COLORS[85],\n /** 坐标轴刻度线颜色 */\n axisTickLineBorderColor: BLACK_COLORS[25],\n /** 坐标轴刻度线长度 */\n axisTickLineLength: 4,\n /** 坐标轴刻度线粗细 */\n axisTickLineBorder: 1,\n /** 坐标轴次刻度线颜色 */\n axisSubTickLineBorderColor: BLACK_COLORS[15],\n /** 坐标轴次刻度线长度 */\n axisSubTickLineLength: 2,\n /** 坐标轴次刻度线粗细 */\n axisSubTickLineBorder: 1,\n /** 坐标轴刻度文本颜色 */\n axisLabelFillColor: BLACK_COLORS[45],\n /** 坐标轴刻度文本字体大小 */\n axisLabelFontSize: 12,\n /** 坐标轴刻度文本行高 */\n axisLabelLineHeight: 12,\n /** 坐标轴刻度文本字体粗细 */\n axisLabelFontWeight: 'normal',\n /** 坐标轴刻度文本距离坐标轴线的间距 */\n axisLabelOffset: 8,\n /** 坐标轴网格线颜色 */\n axisGridBorderColor: BLACK_COLORS[15],\n /** 坐标轴网格线粗细 */\n axisGridBorder: 1,\n /** 坐标轴网格线虚线设置 */\n axisGridLineDash: null,\n // -------------------- 图例 --------------------\n /** 图例标题颜色 */\n legendTitleTextFillColor: BLACK_COLORS[45],\n /** 图例标题文本字体大小 */\n legendTitleTextFontSize: 12,\n /** 图例标题文本行高 */\n legendTitleTextLineHeight: 21,\n /** 图例标题文本字体粗细 */\n legendTitleTextFontWeight: 'normal',\n /** 图例 marker 颜色 */\n legendMarkerColor: QUALITATIVE_10[0],\n /** 图例 marker 距离图例文本的间距 */\n legendMarkerSpacing: 8,\n /** 图例 marker 默认半径大小 */\n legendMarkerSize: 4,\n /** 图例 'circle' marker 半径 */\n legendCircleMarkerSize: 4,\n /** 图例 'square' marker 半径 */\n legendSquareMarkerSize: 4,\n /** 图例 'line' marker 半径 */\n legendLineMarkerSize: 5,\n /** 图例项文本颜色 */\n legendItemNameFillColor: BLACK_COLORS[65],\n /** 图例项文本字体大小 */\n legendItemNameFontSize: 12,\n /** 图例项文本行高 */\n legendItemNameLineHeight: 12,\n /** 图例项粗细 */\n legendItemNameFontWeight: 'normal',\n /** 图例项之间的水平间距 */\n legendItemSpacing: 24,\n /** 图例项垂直方向的间隔 */\n legendItemMarginBottom: 12,\n /** 图例与图表绘图区域的偏移距离 */\n legendSpacing: 16,\n /** 图例与图表绘图区域的偏移距离 */\n legendPadding: [8, 8, 8, 8],\n /** 水平布局的图例与绘图区域偏移距离 */\n legendHorizontalPadding: [8, 0, 8, 0],\n /** 垂直布局的图例与绘图区域偏移距离 */\n legendVerticalPadding: [0, 8, 0, 8],\n // 图例分页器\n /** 图例分页器 marker 大小 */\n legendPageNavigatorMarkerSize: 12,\n /** 图例分页器 marker 填充色 */\n legendPageNavigatorMarkerInactiveFillColor: BLACK_COLORS[45],\n /** 图例分页器 marker 填充色透明度 */\n legendPageNavigatorMarkerInactiveFillOpacity: 0.45,\n /** 图例分页器 marker 激活状态填充色 */\n legendPageNavigatorMarkerFillColor: BLACK_COLORS[45],\n /** 图例分页器 marker 激活状态填充色透明度 */\n legendPageNavigatorMarkerFillOpacity: 1,\n /** 图例分页器文本颜色 */\n legendPageNavigatorTextFillColor: BLACK_COLORS[65],\n /** 图例分页器文本字体大小 */\n legendPageNavigatorTextFontSize: 12,\n /** 连续图例滑块填充色 */\n sliderRailFillColor: BLACK_COLORS[15],\n /** 连续图例滑块边框粗细 */\n sliderRailBorder: 0,\n /** 连续图例滑块边框颜色 */\n sliderRailBorderColor: null,\n /** 连续图例滑块宽度 */\n sliderRailWidth: 100,\n /** 连续图例滑块高度 */\n sliderRailHeight: 12,\n /** 连续图例文本颜色 */\n sliderLabelTextFillColor: BLACK_COLORS[45],\n /** 连续图例文本字体大小 */\n sliderLabelTextFontSize: 12,\n /** 连续图例文本行高 */\n sliderLabelTextLineHeight: 12,\n /** 连续图例文本字体粗细 */\n sliderLabelTextFontWeight: 'normal',\n /** 连续图例滑块颜色 */\n sliderHandlerFillColor: WHITE_COLORS[6],\n /** 连续图例滑块宽度 */\n sliderHandlerWidth: 10,\n /** 连续图例滑块高度 */\n sliderHandlerHeight: 14,\n /** 连续图例滑块边框粗细 */\n sliderHandlerBorder: 1,\n /** 连续图例滑块边框颜色 */\n sliderHandlerBorderColor: WHITE_COLORS[25],\n // -------------------- Annotation,图形标注 --------------------\n /** arc 图形标注描边颜色 */\n annotationArcBorderColor: BLACK_COLORS[15],\n /** arc 图形标注粗细 */\n annotationArcBorder: 1,\n /** line 图形标注颜色 */\n annotationLineBorderColor: BLACK_COLORS[25],\n /** line 图形标注粗细 */\n annotationLineBorder: 1,\n /** lube 图形标注的虚线间隔 */\n annotationLineDash: null,\n /** text 图形标注文本颜色 */\n annotationTextFillColor: BLACK_COLORS[65],\n /** text 图形标注文本字体大小 */\n annotationTextFontSize: 12,\n /** text 图形标注文本行高 */\n annotationTextLineHeight: 12,\n /** text 图形标注文本字体粗细 */\n annotationTextFontWeight: 'normal',\n /** text 图形标注文本边框颜色 */\n annotationTextBorderColor: null,\n /** text 图形标注文本边框粗细 */\n annotationTextBorder: 0,\n /** region 图形标注填充颜色 */\n annotationRegionFillColor: BLACK_COLORS[100],\n /** region 图形标注填充颜色透明色 */\n annotationRegionFillOpacity: 0.06,\n /** region 图形标注描边粗细 */\n annotationRegionBorder: 0,\n /** region 图形标注描边颜色 */\n annotationRegionBorderColor: null,\n /** dataMarker 图形标注线的长度 */\n annotationDataMarkerLineLength: 16,\n // -------------------- Tooltip --------------------\n /** tooltip crosshairs 辅助线颜色 */\n tooltipCrosshairsBorderColor: BLACK_COLORS[25],\n /** tooltip crosshairs 辅助线粗细 */\n tooltipCrosshairsBorder: 1,\n /** tooltip crosshairs 辅助线虚线间隔 */\n tooltipCrosshairsLineDash: null,\n /** tooltip 内容框背景色 */\n tooltipContainerFillColor: '#1f1f1f',\n tooltipContainerFillOpacity: 0.95,\n /** tooltip 内容框阴影 */\n tooltipContainerShadow: '0px 2px 4px rgba(0,0,0,.5)',\n /** tooltip 内容框圆角 */\n tooltipContainerBorderRadius: 3,\n /** tooltip 文本颜色 */\n tooltipTextFillColor: BLACK_COLORS[65],\n /** tooltip 文本字体大小 */\n tooltipTextFontSize: 12,\n /** tooltip 文本行高 */\n tooltipTextLineHeight: 12,\n /** tooltip 文本字体粗细 */\n tooltipTextFontWeight: 'bold',\n // -------------------- Geometry labels --------------------\n /** Geometry label 文本颜色 */\n labelFillColor: BLACK_COLORS[65],\n labelFillColorDark: '#2c3542',\n labelFillColorLight: '#ffffff',\n /** Geometry label 文本字体大小 */\n labelFontSize: 12,\n /** Geometry label 文本行高 */\n labelLineHeight: 12,\n /** Geometry label 文本字体粗细 */\n labelFontWeight: 'normal',\n /** Geometry label 文本描边颜色 */\n labelBorderColor: null,\n /** Geometry label 文本描边粗细 */\n labelBorder: 0,\n /** Geometry innerLabel 文本颜色 */\n innerLabelFillColor: WHITE_COLORS[100],\n /** Geometry innerLabel 文本字体大小 */\n innerLabelFontSize: 12,\n /** Geometry innerLabel 文本行高 */\n innerLabelLineHeight: 12,\n /** Geometry innerLabel 文本字体粗细 */\n innerLabelFontWeight: 'normal',\n /** Geometry innerLabel 文本描边颜色 */\n innerLabelBorderColor: null,\n /** Geometry innerLabel 文本描边粗细 */\n innerLabelBorder: 0,\n /** Geometry label 文本颜色 */\n overflowLabelFillColor: BLACK_COLORS[65],\n overflowLabelFillColorDark: '#2c3542',\n overflowLabelFillColorLight: '#ffffff',\n /** Geometry label 文本字体大小 */\n overflowLabelFontSize: 12,\n /** Geometry label 文本行高 */\n overflowLabelLineHeight: 12,\n /** Geometry label 文本字体粗细 */\n overflowLabelFontWeight: 'normal',\n /** Geometry label 文本描边颜色 */\n overflowLabelBorderColor: WHITE_COLORS[100],\n /** Geometry label 文本描边粗细 */\n overflowLabelBorder: 1,\n /** Geometry label 文本连接线粗细 */\n labelLineBorder: 1,\n /** Geometry label 文本连接线颜色 */\n labelLineBorderColor: BLACK_COLORS[25],\n // -------------------- Slider 组件样式--------------------\n /** slider 滑道高度 */\n cSliderRailHieght: 16,\n /** slider 滑道背景色 */\n cSliderBackgroundFillColor: '#416180',\n /** slider 滑道背景色透明度 */\n cSliderBackgroundFillOpacity: 0.05,\n /** slider 滑道前景色 */\n cSliderForegroundFillColor: '#5B8FF9',\n /** slider 滑道前景色透明度 */\n cSliderForegroundFillOpacity: 0.15,\n // slider handlerStyle 手柄样式\n /** slider 手柄高度 */\n cSliderHandlerHeight: 24,\n /** Slider 手柄宽度 */\n cSliderHandlerWidth: 10,\n /** Slider 手柄背景色 */\n cSliderHandlerFillColor: '#F7F7F7',\n /** Slider 手柄背景色透明度 */\n cSliderHandlerFillOpacity: 1,\n /** Slider 手柄高亮背景色 */\n cSliderHandlerHighlightFillColor: '#FFF',\n /** Slider 手柄边框色 */\n cSliderHandlerBorderColor: '#BFBFBF',\n /** Slider 手柄边框粗细 */\n cSliderHandlerBorder: 1,\n /** Slider 手柄边框圆角 */\n cSliderHandlerBorderRadius: 2,\n // slider textStyle 字体标签样式\n /** Slider 字体标签颜色 */\n cSliderTextFillColor: '#fff',\n /** Slider 字体标签透明度 */\n cSliderTextFillOpacity: 0.45,\n /** Slider 字体标签大小 */\n cSliderTextFontSize: 12,\n /** Slider 字体标签行高 */\n cSliderTextLineHeight: 12,\n /** Slider 字体标签字重 */\n cSliderTextFontWeight: 'normal',\n /** Slider 字体标签描边色 */\n cSliderTextBorderColor: null,\n /** Slider 字体标签描边粗细 */\n cSliderTextBorder: 0,\n // -------------------- Scrollbar 组件样式--------------------\n /** 滚动条 滚道填充色 */\n scrollbarTrackFillColor: 'rgba(255,255,255,0.65)',\n /** 滚动条 滑块填充色 */\n scrollbarThumbFillColor: 'rgba(0,0,0,0.35)',\n /** 滚动条 滑块高亮填充色 */\n scrollbarThumbHighlightFillColor: 'rgba(0,0,0,0.45)',\n // -------------------- Geometry 图形样式--------------------\n /** 点图填充颜色 */\n pointFillColor: QUALITATIVE_10[0],\n /** 点图填充颜色透明度 */\n pointFillOpacity: 0.95,\n /** 点图大小 */\n pointSize: 4,\n /** 点图描边粗细 */\n pointBorder: 1,\n /** 点图描边颜色 */\n pointBorderColor: WHITE_COLORS[100],\n /** 点图描边透明度 */\n pointBorderOpacity: 1,\n /** 点图 active 状态下描边颜色 */\n pointActiveBorderColor: BLACK_COLORS[100],\n /** 点图 selected 状态下描边粗细 */\n pointSelectedBorder: 2,\n /** 点图 selected 状态下描边颜色 */\n pointSelectedBorderColor: BLACK_COLORS[100],\n /** 点图 inactive 状态下填充颜色透明度 */\n pointInactiveFillOpacity: 0.3,\n /** 点图 inactive 状态下描边透明度 */\n pointInactiveBorderOpacity: 0.3,\n /** 空心点图大小 */\n hollowPointSize: 4,\n /** 空心点图描边粗细 */\n hollowPointBorder: 1,\n /** 空心点图描边颜色 */\n hollowPointBorderColor: QUALITATIVE_10[0],\n /** 空心点图描边透明度 */\n hollowPointBorderOpacity: 0.95,\n hollowPointFillColor: WHITE_COLORS[100],\n /** 空心点图 active 状态下描边粗细 */\n hollowPointActiveBorder: 1,\n /** 空心点图 active 状态下描边颜色 */\n hollowPointActiveBorderColor: BLACK_COLORS[100],\n /** 空心点图 active 状态下描边透明度 */\n hollowPointActiveBorderOpacity: 1,\n /** 空心点图 selected 状态下描边粗细 */\n hollowPointSelectedBorder: 2,\n /** 空心点图 selected 状态下描边颜色 */\n hollowPointSelectedBorderColor: BLACK_COLORS[100],\n /** 空心点图 selected 状态下描边透明度 */\n hollowPointSelectedBorderOpacity: 1,\n /** 空心点图 inactive 状态下描边透明度 */\n hollowPointInactiveBorderOpacity: 0.3,\n /** 线图粗细 */\n lineBorder: 2,\n /** 线图颜色 */\n lineBorderColor: QUALITATIVE_10[0],\n /** 线图透明度 */\n lineBorderOpacity: 1,\n /** 线图 Active 状态下粗细 */\n lineActiveBorder: 3,\n /** 线图 selected 状态下粗细 */\n lineSelectedBorder: 3,\n /** 线图 inactive 状态下透明度 */\n lineInactiveBorderOpacity: 0.3,\n /** area 填充颜色 */\n areaFillColor: QUALITATIVE_10[0],\n /** area 填充透明度 */\n areaFillOpacity: 0.25,\n /** area 在 active 状态下的填充透明度 */\n areaActiveFillColor: QUALITATIVE_10[0],\n areaActiveFillOpacity: 0.5,\n /** area 在 selected 状态下的填充透明度 */\n areaSelectedFillColor: QUALITATIVE_10[0],\n areaSelectedFillOpacity: 0.5,\n /** area inactive 状态下填充透明度 */\n areaInactiveFillOpacity: 0.3,\n /** hollowArea 颜色 */\n hollowAreaBorderColor: QUALITATIVE_10[0],\n /** hollowArea 边框粗细 */\n hollowAreaBorder: 2,\n /** hollowArea 边框透明度 */\n hollowAreaBorderOpacity: 1,\n /** hollowArea active 状态下的边框粗细 */\n hollowAreaActiveBorder: 3,\n hollowAreaActiveBorderColor: BLACK_COLORS[100],\n /** hollowArea selected 状态下的边框粗细 */\n hollowAreaSelectedBorder: 3,\n hollowAreaSelectedBorderColor: BLACK_COLORS[100],\n /** hollowArea inactive 状态下的边框透明度 */\n hollowAreaInactiveBorderOpacity: 0.3,\n /** interval 填充颜色 */\n intervalFillColor: QUALITATIVE_10[0],\n /** interval 填充透明度 */\n intervalFillOpacity: 0.95,\n /** interval active 状态下边框粗细 */\n intervalActiveBorder: 1,\n /** interval active 状态下边框颜色 */\n intervalActiveBorderColor: BLACK_COLORS[100],\n intervalActiveBorderOpacity: 1,\n /** interval selected 状态下边框粗细 */\n intervalSelectedBorder: 2,\n /** interval selected 状态下边框颜色 */\n intervalSelectedBorderColor: BLACK_COLORS[100],\n /** interval selected 状态下边框透明度 */\n intervalSelectedBorderOpacity: 1,\n /** interval inactive 状态下边框透明度 */\n intervalInactiveBorderOpacity: 0.3,\n /** interval inactive 状态下填充透明度 */\n intervalInactiveFillOpacity: 0.3,\n /** interval 边框粗细 */\n hollowIntervalBorder: 2,\n /** hollowInterval 边框颜色 */\n hollowIntervalBorderColor: QUALITATIVE_10[0],\n /** hollowInterval 边框透明度 */\n hollowIntervalBorderOpacity: 1,\n hollowIntervalFillColor: WHITE_COLORS[100],\n /** hollowInterval active 状态下边框粗细 */\n hollowIntervalActiveBorder: 2,\n /** hollowInterval active 状态下边框颜色 */\n hollowIntervalActiveBorderColor: BLACK_COLORS[100],\n /** hollowInterval selected 状态下边框粗细 */\n hollowIntervalSelectedBorder: 3,\n /** hollowInterval selected 状态下边框颜色 */\n hollowIntervalSelectedBorderColor: BLACK_COLORS[100],\n /** hollowInterval selected 状态下边框透明度 */\n hollowIntervalSelectedBorderOpacity: 1,\n /** hollowInterval inactive 状态下边框透明度 */\n hollowIntervalInactiveBorderOpacity: 0.3\n };\n return __assign(__assign({}, token), cfg);\n};\nexport var antvDark = createDarkStyleSheet();","export function getPixelRatio() {\n return window ? window.devicePixelRatio : 1;\n}\n/**\n * 两点之间的距离\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n */\nexport function distance(x1, y1, x2, y2) {\n var dx = x1 - x2;\n var dy = y1 - y2;\n return Math.sqrt(dx * dx + dy * dy);\n}\n/**\n * 是否在包围盒内\n * @param {number} minX 包围盒开始的点 x\n * @param {number} minY 包围盒开始的点 y\n * @param {number} width 宽度\n * @param {number} height 高度\n * @param {[type]} x 检测点的 x\n * @param {[type]} y 监测点的 y\n */\nexport function inBox(minX, minY, width, height, x, y) {\n return x >= minX && x <= minX + width && y >= minY && y <= minY + height;\n}\nexport function intersectRect(box1, box2) {\n return !(box2.minX > box1.maxX || box2.maxX < box1.minX || box2.minY > box1.maxY || box2.maxY < box1.minY);\n}\n// 合并两个区域\nexport function mergeRegion(region1, region2) {\n if (!region1 || !region2) {\n return region1 || region2;\n }\n return {\n minX: Math.min(region1.minX, region2.minX),\n minY: Math.min(region1.minY, region2.minY),\n maxX: Math.max(region1.maxX, region2.maxX),\n maxY: Math.max(region1.maxY, region2.maxY)\n };\n}\n/**\n * 判断两个点是否重合,点坐标的格式为 [x, y]\n * @param {Array} point1 第一个点\n * @param {Array} point2 第二个点\n */\nexport function isSamePoint(point1, point2) {\n return point1[0] === point2[0] && point1[1] === point2[1];\n}\nexport { isNil, isString, isFunction, isArray, each, toRadian, mod, isNumberEqual, requestAnimationFrame, clearAnimationFrame } from '@antv/util';","import { isString, each, isArray } from './util';\nvar regexLG = /^l\\s*\\(\\s*([\\d.]+)\\s*\\)\\s*(.*)/i;\nvar regexRG = /^r\\s*\\(\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*\\)\\s*(.*)/i;\nvar regexPR = /^p\\s*\\(\\s*([axyn])\\s*\\)\\s*(.*)/i;\nvar regexColorStop = /[\\d.]+:(#[^\\s]+|[^\\)]+\\))/gi;\nfunction addStop(steps, gradient) {\n var arr = steps.match(regexColorStop);\n each(arr, function (item) {\n var itemArr = item.split(':');\n gradient.addColorStop(itemArr[0], itemArr[1]);\n });\n}\n/**\n * 将边和填充设置的颜色转换成线性渐变对象\n * @param {CanvasRenderingContext2D} context canvas 上下文\n * @param {IElement} element 图形元素\n * @param {string} gradientStr 颜色\n * @returns {any} 渐变对象\n */\nexport function parseLineGradient(context, element, gradientStr) {\n var arr = regexLG.exec(gradientStr);\n var angle = parseFloat(arr[1]) % 360 * (Math.PI / 180);\n var steps = arr[2];\n var box = element.getBBox();\n var start;\n var end;\n if (angle >= 0 && angle < 1 / 2 * Math.PI) {\n start = {\n x: box.minX,\n y: box.minY\n };\n end = {\n x: box.maxX,\n y: box.maxY\n };\n } else if (1 / 2 * Math.PI <= angle && angle < Math.PI) {\n start = {\n x: box.maxX,\n y: box.minY\n };\n end = {\n x: box.minX,\n y: box.maxY\n };\n } else if (Math.PI <= angle && angle < 3 / 2 * Math.PI) {\n start = {\n x: box.maxX,\n y: box.maxY\n };\n end = {\n x: box.minX,\n y: box.minY\n };\n } else {\n start = {\n x: box.minX,\n y: box.maxY\n };\n end = {\n x: box.maxX,\n y: box.minY\n };\n }\n var tanTheta = Math.tan(angle);\n var tanTheta2 = tanTheta * tanTheta;\n var x = (end.x - start.x + tanTheta * (end.y - start.y)) / (tanTheta2 + 1) + start.x;\n var y = tanTheta * (end.x - start.x + tanTheta * (end.y - start.y)) / (tanTheta2 + 1) + start.y;\n var gradient = context.createLinearGradient(start.x, start.y, x, y);\n addStop(steps, gradient);\n return gradient;\n}\n/**\n * 将边和填充设置的颜色转换成圆形渐变对象\n * @param {CanvasRenderingContext2D} context canvas 上下文\n * @param {IElement} element 图形元素\n * @param {string} gradientStr 颜色\n * @returns {any} 渐变对象\n */\nexport function parseRadialGradient(context, element, gradientStr) {\n var arr = regexRG.exec(gradientStr);\n var fx = parseFloat(arr[1]);\n var fy = parseFloat(arr[2]);\n var fr = parseFloat(arr[3]);\n var steps = arr[4];\n // 环半径为0时,默认无渐变,取渐变序列的最后一个颜色\n if (fr === 0) {\n var colors = steps.match(regexColorStop);\n return colors[colors.length - 1].split(':')[1];\n }\n var box = element.getBBox();\n var width = box.maxX - box.minX;\n var height = box.maxY - box.minY;\n var r = Math.sqrt(width * width + height * height) / 2;\n var gradient = context.createRadialGradient(box.minX + width * fx, box.minY + height * fy, 0, box.minX + width / 2, box.minY + height / 2, fr * r);\n addStop(steps, gradient);\n return gradient;\n}\n/**\n * 边和填充设置的颜色转换成 pattern\n * @param {CanvasRenderingContext2D} context canvas 上下文\n * @param {IElement} element 图形元素\n * @param {string} patternStr 生成 pattern 的字符串\n */\nexport function parsePattern(context, element, patternStr) {\n // 在转换过程中进行了缓存\n if (element.get('patternSource') && element.get('patternSource') === patternStr) {\n return element.get('pattern');\n }\n var pattern;\n var img;\n var arr = regexPR.exec(patternStr);\n var repeat = arr[1];\n var source = arr[2];\n // Function to be called when pattern loads\n function onload() {\n // Create pattern\n pattern = context.createPattern(img, repeat);\n element.set('pattern', pattern); // be a cache\n element.set('patternSource', patternStr);\n }\n switch (repeat) {\n case 'a':\n repeat = 'repeat';\n break;\n case 'x':\n repeat = 'repeat-x';\n break;\n case 'y':\n repeat = 'repeat-y';\n break;\n case 'n':\n repeat = 'no-repeat';\n break;\n default:\n repeat = 'no-repeat';\n }\n img = new Image();\n // If source URL is not a data URL\n if (!source.match(/^data:/i)) {\n // Set crossOrigin for this image\n img.crossOrigin = 'Anonymous';\n }\n img.src = source;\n if (img.complete) {\n onload();\n } else {\n img.onload = onload;\n // Fix onload() bug in IE9\n img.src = img.src;\n }\n return pattern;\n}\nexport function parseStyle(context, element, color) {\n var bbox = element.getBBox();\n if (isNaN(bbox.x) || isNaN(bbox.y) || isNaN(bbox.width) || isNaN(bbox.height)) {\n return color;\n }\n if (isString(color)) {\n if (color[1] === '(' || color[2] === '(') {\n if (color[0] === 'l') {\n // regexLG.test(color)\n return parseLineGradient(context, element, color);\n }\n if (color[0] === 'r') {\n // regexRG.test(color)\n return parseRadialGradient(context, element, color);\n }\n if (color[0] === 'p') {\n // regexPR.test(color)\n return parsePattern(context, element, color);\n }\n }\n return color;\n }\n if (color instanceof CanvasPattern) {\n return color;\n }\n}\nexport function parseRadius(radius) {\n var r1 = 0;\n var r2 = 0;\n var r3 = 0;\n var r4 = 0;\n if (isArray(radius)) {\n if (radius.length === 1) {\n r1 = r2 = r3 = r4 = radius[0];\n } else if (radius.length === 2) {\n r1 = r3 = radius[0];\n r2 = r4 = radius[1];\n } else if (radius.length === 3) {\n r1 = radius[0];\n r2 = r4 = radius[1];\n r3 = radius[2];\n } else {\n r1 = radius[0];\n r2 = radius[1];\n r3 = radius[2];\n r4 = radius[3];\n }\n } else {\n r1 = r2 = r3 = r4 = radius;\n }\n return [r1, r2, r3, r4];\n}","import { mod, toRadian, isSamePoint } from './util';\n// 向量长度\nfunction vMag(v) {\n return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\n}\n// u.v/|u||v|,计算夹角的余弦值\nfunction vRatio(u, v) {\n // 当存在一个向量的长度为 0 时,夹角也为 0,即夹角的余弦值为 1\n return vMag(u) * vMag(v) ? (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v)) : 1;\n}\n// 向量角度\nfunction vAngle(u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vRatio(u, v));\n}\n// A 0:rx 1:ry 2:x-axis-rotation 3:large-arc-flag 4:sweep-flag 5: x 6: y\nexport default function getArcParams(startPoint, params) {\n var rx = params[1];\n var ry = params[2];\n var xRotation = mod(toRadian(params[3]), Math.PI * 2);\n var arcFlag = params[4];\n var sweepFlag = params[5];\n // 弧形起点坐标\n var x1 = startPoint[0];\n var y1 = startPoint[1];\n // 弧形终点坐标\n var x2 = params[6];\n var y2 = params[7];\n var xp = Math.cos(xRotation) * (x1 - x2) / 2.0 + Math.sin(xRotation) * (y1 - y2) / 2.0;\n var yp = -1 * Math.sin(xRotation) * (x1 - x2) / 2.0 + Math.cos(xRotation) * (y1 - y2) / 2.0;\n var lambda = xp * xp / (rx * rx) + yp * yp / (ry * ry);\n if (lambda > 1) {\n rx *= Math.sqrt(lambda);\n ry *= Math.sqrt(lambda);\n }\n var diff = rx * rx * (yp * yp) + ry * ry * (xp * xp);\n var f = diff ? Math.sqrt((rx * rx * (ry * ry) - diff) / diff) : 1;\n if (arcFlag === sweepFlag) {\n f *= -1;\n }\n if (isNaN(f)) {\n f = 0;\n }\n // 旋转前的起点坐标,且当长半轴和短半轴的长度为 0 时,坐标按 (0, 0) 处理\n var cxp = ry ? f * rx * yp / ry : 0;\n var cyp = rx ? f * -ry * xp / rx : 0;\n // 椭圆圆心坐标\n var cx = (x1 + x2) / 2.0 + Math.cos(xRotation) * cxp - Math.sin(xRotation) * cyp;\n var cy = (y1 + y2) / 2.0 + Math.sin(xRotation) * cxp + Math.cos(xRotation) * cyp;\n // 起始点的单位向量\n var u = [(xp - cxp) / rx, (yp - cyp) / ry];\n // 终止点的单位向量\n var v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry];\n // 计算起始点和圆心的连线,与 x 轴正方向的夹角\n var theta = vAngle([1, 0], u);\n // 计算圆弧起始点和终止点与椭圆圆心连线的夹角\n var dTheta = vAngle(u, v);\n if (vRatio(u, v) <= -1) {\n dTheta = Math.PI;\n }\n if (vRatio(u, v) >= 1) {\n dTheta = 0;\n }\n if (sweepFlag === 0 && dTheta > 0) {\n dTheta = dTheta - 2 * Math.PI;\n }\n if (sweepFlag === 1 && dTheta < 0) {\n dTheta = dTheta + 2 * Math.PI;\n }\n return {\n cx: cx,\n cy: cy,\n // 弧形的起点和终点相同时,长轴和短轴的长度按 0 处理\n rx: isSamePoint(startPoint, [x2, y2]) ? 0 : rx,\n ry: isSamePoint(startPoint, [x2, y2]) ? 0 : ry,\n startAngle: theta,\n endAngle: theta + dTheta,\n xRotation: xRotation,\n arcFlag: arcFlag,\n sweepFlag: sweepFlag\n };\n}","import { __assign, __rest } from \"tslib\";\nimport { Path } from '../shape';\nvar sin = Math.sin,\n cos = Math.cos,\n atan2 = Math.atan2,\n PI = Math.PI;\nfunction _addDefaultArrow(shape, attrs, x1, y1, x2, y2, isStart) {\n var stroke = attrs.stroke,\n lineWidth = attrs.lineWidth;\n var x = x1 - x2;\n var y = y1 - y2;\n var rad = atan2(y, x);\n var arrowShape = new Path({\n type: 'path',\n canvas: shape.get('canvas'),\n isArrowShape: true,\n attrs: {\n // 默认箭头的边长为 10,夹角为 60 度\n path: \"M\" + 10 * cos(PI / 6) + \",\" + 10 * sin(PI / 6) + \" L0,0 L\" + 10 * cos(PI / 6) + \",-\" + 10 * sin(PI / 6),\n // 使用 shape stroke 值\n stroke: stroke,\n lineWidth: lineWidth\n }\n });\n arrowShape.translate(x2, y2);\n arrowShape.rotateAtPoint(x2, y2, rad);\n shape.set(isStart ? 'startArrowShape' : 'endArrowShape', arrowShape);\n}\n/**\n * 箭头 path 的设置要求\n * 1. 箭头顶点坐标需要为 (0, 0)\n * 2. 箭头夹角的中心分割线需要与 X 轴正方向对齐\n */\nfunction _addCustomizedArrow(shape, attrs, x1, y1, x2, y2, isStart) {\n var startArrow = attrs.startArrow,\n endArrow = attrs.endArrow,\n stroke = attrs.stroke,\n lineWidth = attrs.lineWidth;\n var arrowAttrs = isStart ? startArrow : endArrow;\n var d = arrowAttrs.d,\n arrowFill = arrowAttrs.fill,\n arrowStroke = arrowAttrs.stroke,\n arrowLineWidth = arrowAttrs.lineWidth,\n restAttrs = __rest(arrowAttrs, [\"d\", \"fill\", \"stroke\", \"lineWidth\"]);\n var x = x1 - x2;\n var y = y1 - y2;\n var rad = atan2(y, x);\n if (d) {\n x2 = x2 - cos(rad) * d;\n y2 = y2 - sin(rad) * d;\n }\n var arrowShape = new Path({\n type: 'path',\n canvas: shape.get('canvas'),\n isArrowShape: true,\n attrs: __assign(__assign({}, restAttrs), {\n // 支持单独设置箭头的 stroke 和 lineWidth,若为空则使用 shape 的值\n stroke: arrowStroke || stroke,\n lineWidth: arrowLineWidth || lineWidth,\n // 箭头是否填充需要手动设置,不会继承自 shape 的值\n fill: arrowFill\n })\n });\n arrowShape.translate(x2, y2);\n arrowShape.rotateAtPoint(x2, y2, rad);\n shape.set(isStart ? 'startArrowShape' : 'endArrowShape', arrowShape);\n}\n/**\n * 如果自定义箭头并且有 d 需要做偏移,如果直接画,线条会超出箭头尖端,因此需要根据箭头偏移 d, 返回线需要缩短的距离\n * |----------------\n * |<|--------------\n * |\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 箭头作用点 x\n * @param {number} y2 箭头作用点 y\n * @param {number} d 箭头沿线条方向的偏移距离\n * @return {{dx: number, dy: number}} 返回线条偏移距离\n */\nexport function getShortenOffset(x1, y1, x2, y2, d) {\n var rad = atan2(y2 - y1, x2 - x1);\n return {\n dx: cos(rad) * d,\n dy: sin(rad) * d\n };\n}\n/**\n * 绘制起始箭头\n * @param {IShape} shape 图形\n * @param {ShapeAttrs} attrs shape 的绘图属性\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 箭头作用点 x\n * @param {number} y2 箭头作用点 y\n */\nexport function addStartArrow(shape, attrs, x1, y1, x2, y2) {\n if (typeof attrs.startArrow === 'object') {\n _addCustomizedArrow(shape, attrs, x1, y1, x2, y2, true);\n } else if (attrs.startArrow) {\n _addDefaultArrow(shape, attrs, x1, y1, x2, y2, true);\n } else {\n shape.set('startArrowShape', null);\n }\n}\n/**\n * 绘制结束箭头\n * @param {IShape} shape 图形\n * @param {ShapeAttrs} attrs shape 的绘图属性\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 箭头作用点 x\n * @param {number} y2 箭头作用点 y\n */\nexport function addEndArrow(shape, attrs, x1, y1, x2, y2) {\n if (typeof attrs.endArrow === 'object') {\n _addCustomizedArrow(shape, attrs, x1, y1, x2, y2, false);\n } else if (attrs.endArrow) {\n _addDefaultArrow(shape, attrs, x1, y1, x2, y2, false);\n } else {\n shape.set('startArrowShape', null);\n }\n}","import { each, isArray, max, min } from '@antv/util';\nimport { parseStyle } from './parse';\nimport getArcParams from './arc-params';\nimport { mergeRegion, intersectRect } from './util';\nimport * as ArrowUtil from '../util/arrow';\nvar SHAPE_ATTRS_MAP = {\n fill: 'fillStyle',\n stroke: 'strokeStyle',\n opacity: 'globalAlpha'\n};\nexport function applyAttrsToContext(context, element) {\n var attrs = element.attr();\n for (var k in attrs) {\n var v = attrs[k];\n // 转换一下不与 canvas 兼容的属性名\n var name_1 = SHAPE_ATTRS_MAP[k] ? SHAPE_ATTRS_MAP[k] : k;\n if (name_1 === 'matrix' && v) {\n // 设置矩阵\n context.transform(v[0], v[1], v[3], v[4], v[6], v[7]);\n } else if (name_1 === 'lineDash' && context.setLineDash) {\n // 设置虚线,只支持数组形式,非数组形式不做任何操作\n isArray(v) && context.setLineDash(v);\n } else {\n if (name_1 === 'strokeStyle' || name_1 === 'fillStyle') {\n // 如果存在渐变、pattern 这个开销有些大\n // 可以考虑缓存机制,通过 hasUpdate 来避免一些运算\n v = parseStyle(context, element, v);\n } else if (name_1 === 'globalAlpha') {\n // opacity 效果可以叠加,子元素的 opacity 需要与父元素 opacity 相乘\n v = v * context.globalAlpha;\n }\n context[name_1] = v;\n }\n }\n}\nexport function drawChildren(context, children, region) {\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n if (child.cfg.visible) {\n child.draw(context, region);\n } else {\n child.skipDraw();\n }\n }\n}\n// 这个地方的逻辑比较复杂,简单画了一张图:https://www.yuque.com/antv/ou292n/pcgt5g#OW1QE\nexport function checkRefresh(canvas, children, region) {\n var refreshElements = canvas.get('refreshElements');\n // 先遍历需要刷新的元素,将这些元素的父元素也设置 refresh\n each(refreshElements, function (el) {\n if (el !== canvas) {\n var parent_1 = el.cfg.parent;\n while (parent_1 && parent_1 !== canvas && !parent_1.cfg.refresh) {\n parent_1.cfg.refresh = true;\n parent_1 = parent_1.cfg.parent;\n }\n }\n });\n if (refreshElements[0] === canvas) {\n setChildrenRefresh(children, region);\n } else {\n // 检查所有子元素是否可以刷新\n checkChildrenRefresh(children, region);\n }\n}\n// 检查所有的子元素是否应该更新\nexport function checkChildrenRefresh(children, region) {\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n if (child.cfg.visible) {\n // 先判断 hasChanged,因为它的优先级判断应该高于 refresh\n if (child.cfg.hasChanged) {\n // 如果节点发生了 change,则需要级联设置子元素的 refresh\n child.cfg.refresh = true;\n if (child.isGroup()) {\n setChildrenRefresh(child.cfg.children, region);\n }\n } else if (child.cfg.refresh) {\n // 如果当前图形/分组 refresh = true,说明其子节点存在 changed\n if (child.isGroup()) {\n checkChildrenRefresh(child.cfg.children, region);\n }\n } else {\n // 这个分支说明此次局部刷新,所有的节点和父元素没有发生变化,仅需要检查包围盒(缓存)是否相交即可\n var refresh = checkElementRefresh(child, region);\n child.cfg.refresh = refresh;\n if (refresh && child.isGroup()) {\n // 如果需要刷新,说明子元素也需要刷新,继续进行判定\n checkChildrenRefresh(child.cfg.children, region);\n }\n }\n }\n }\n}\n// 由于对改变的图形放入 refreshElements 时做了优化,判定父元素 changed 时不加入\n// 那么有可能会出现 elements 都为空,所以最终 group\nexport function clearChanged(elements) {\n for (var i = 0; i < elements.length; i++) {\n var el = elements[i];\n el.cfg.hasChanged = false;\n // 级联清理\n if (el.isGroup() && !el.destroyed) {\n clearChanged(el.cfg.children);\n }\n }\n}\n// 当某个父元素发生改变时,调用这个方法级联设置 refresh\nfunction setChildrenRefresh(children, region) {\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n if (!child.cfg.visible) {\n continue;\n }\n // let refresh = true;\n // 获取缓存的 bbox,如果这个 bbox 还存在则说明父元素不是矩阵发生了改变\n // const bbox = child.cfg.canvasBBox;\n // if (bbox) {\n // // 如果这时候\n // refresh = intersectRect(bbox, region);\n // }\n child.cfg.refresh = true;\n // 如果需要刷新当前节点,所有的子元素设置 refresh\n if (child.isGroup()) {\n setChildrenRefresh(child.get('children'), region);\n }\n }\n}\nfunction checkElementRefresh(shape, region) {\n var bbox = shape.cfg.cacheCanvasBBox;\n var isAllow = shape.cfg.isInView && bbox && intersectRect(bbox, region);\n return isAllow;\n}\n// 绘制 path\nexport function drawPath(shape, context, attrs, arcParamsCache) {\n var path = attrs.path,\n startArrow = attrs.startArrow,\n endArrow = attrs.endArrow;\n if (!path) {\n return;\n }\n var currentPoint = [0, 0]; // 当前图形\n var startMovePoint = [0, 0]; // 开始 M 的点,可能会有多个\n var distance = {\n dx: 0,\n dy: 0\n };\n context.beginPath();\n for (var i = 0; i < path.length; i++) {\n var params = path[i];\n var command = params[0];\n if (i === 0 && startArrow && startArrow.d) {\n var tangent = shape.getStartTangent();\n distance = ArrowUtil.getShortenOffset(tangent[0][0], tangent[0][1], tangent[1][0], tangent[1][1], startArrow.d);\n } else if (i === path.length - 2 && path[i + 1][0] === 'Z' && endArrow && endArrow.d) {\n // 为了防止结尾为 Z 的 segment 缩短不起效,需要取最后两个 segment 特殊处理\n var lastPath = path[i + 1];\n if (lastPath[0] === 'Z') {\n var tangent = shape.getEndTangent();\n distance = ArrowUtil.getShortenOffset(tangent[0][0], tangent[0][1], tangent[1][0], tangent[1][1], endArrow.d);\n }\n } else if (i === path.length - 1 && endArrow && endArrow.d) {\n if (path[0] !== 'Z') {\n var tangent = shape.getEndTangent();\n distance = ArrowUtil.getShortenOffset(tangent[0][0], tangent[0][1], tangent[1][0], tangent[1][1], endArrow.d);\n }\n }\n var dx = distance.dx,\n dy = distance.dy;\n // V,H,S,T 都在前面被转换成标准形式\n switch (command) {\n case 'M':\n context.moveTo(params[1] - dx, params[2] - dy);\n startMovePoint = [params[1], params[2]];\n break;\n case 'L':\n context.lineTo(params[1] - dx, params[2] - dy);\n break;\n case 'Q':\n context.quadraticCurveTo(params[1], params[2], params[3] - dx, params[4] - dy);\n break;\n case 'C':\n context.bezierCurveTo(params[1], params[2], params[3], params[4], params[5] - dx, params[6] - dy);\n break;\n case 'A':\n {\n var arcParams = void 0;\n // 为了加速绘制,可以提供参数的缓存,各个图形自己缓存\n if (arcParamsCache) {\n arcParams = arcParamsCache[i];\n if (!arcParams) {\n arcParams = getArcParams(currentPoint, params);\n arcParamsCache[i] = arcParams;\n }\n } else {\n arcParams = getArcParams(currentPoint, params);\n }\n var cx = arcParams.cx,\n cy = arcParams.cy,\n rx = arcParams.rx,\n ry = arcParams.ry,\n startAngle = arcParams.startAngle,\n endAngle = arcParams.endAngle,\n xRotation = arcParams.xRotation,\n sweepFlag = arcParams.sweepFlag;\n // 直接使用椭圆的 api\n if (context.ellipse) {\n context.ellipse(cx, cy, rx, ry, xRotation, startAngle, endAngle, 1 - sweepFlag);\n } else {\n var r = rx > ry ? rx : ry;\n var scaleX = rx > ry ? 1 : rx / ry;\n var scaleY = rx > ry ? ry / rx : 1;\n context.translate(cx, cy);\n context.rotate(xRotation);\n context.scale(scaleX, scaleY);\n context.arc(0, 0, r, startAngle, endAngle, 1 - sweepFlag);\n context.scale(1 / scaleX, 1 / scaleY);\n context.rotate(-xRotation);\n context.translate(-cx, -cy);\n }\n break;\n }\n case 'Z':\n context.closePath();\n break;\n default:\n break;\n }\n // 有了 Z 后,当前节点从开始 M 的点开始\n if (command === 'Z') {\n currentPoint = startMovePoint;\n } else {\n var len = params.length;\n currentPoint = [params[len - 2], params[len - 1]];\n }\n }\n}\n// 刷新图形元素(Shape 或者 Group)\nexport function refreshElement(element, changeType) {\n var canvas = element.get('canvas');\n // 只有存在于 canvas 上时生效\n if (canvas) {\n if (changeType === 'remove') {\n // 一旦 remove,则无法在 element 上拿到包围盒\n // destroy 后所有属性都拿不到,所以需要暂存一下\n // 这是一段 hack 的代码\n element._cacheCanvasBBox = element.get('cacheCanvasBBox');\n }\n // 防止反复刷新\n if (!element.get('hasChanged')) {\n // 但是始终要标记为 hasChanged,便于后面进行局部渲染\n element.set('hasChanged', true);\n // 本来只有局部渲染模式下,才需要记录更新的元素队列\n // if (canvas.get('localRefresh')) {\n // canvas.refreshElement(element, changeType, canvas);\n // }\n // 但对于 https://github.com/antvis/g/issues/422 的场景,全局渲染的模式下也需要记录更新的元素队列\n // 如果当前元素的父元素发生了改变,可以不放入队列,这句话大概能够提升 15% 的初次渲染性能\n if (!(element.cfg.parent && element.cfg.parent.get('hasChanged'))) {\n canvas.refreshElement(element, changeType, canvas);\n if (canvas.get('autoDraw')) {\n canvas.draw();\n }\n }\n }\n }\n}\nexport function getRefreshRegion(element) {\n var region;\n if (!element.destroyed) {\n var cacheBox = element.get('cacheCanvasBBox');\n var validCache = cacheBox && !!(cacheBox.width && cacheBox.height);\n var bbox = element.getCanvasBBox();\n var validBBox = bbox && !!(bbox.width && bbox.height);\n // 是否是有效 bbox 判定,一些 NaN 或者 宽高为 0 的情况过滤掉\n if (validCache && validBBox) {\n region = mergeRegion(cacheBox, bbox);\n } else if (validCache) {\n region = cacheBox;\n } else if (validBBox) {\n region = bbox;\n }\n } else {\n // 因为元素已经销毁所以无法获取到缓存的包围盒\n region = element['_cacheCanvasBBox'];\n }\n return region;\n}\nexport function getMergedRegion(elements) {\n if (!elements.length) {\n return null;\n }\n var minXArr = [];\n var minYArr = [];\n var maxXArr = [];\n var maxYArr = [];\n each(elements, function (el) {\n var region = getRefreshRegion(el);\n if (region) {\n minXArr.push(region.minX);\n minYArr.push(region.minY);\n maxXArr.push(region.maxX);\n maxYArr.push(region.maxY);\n }\n });\n return {\n minX: min(minXArr),\n minY: min(minYArr),\n maxX: max(maxXArr),\n maxY: max(maxYArr)\n };\n}\nexport function mergeView(region, viewRegion) {\n if (!region || !viewRegion) {\n return null;\n }\n // 不相交,则直接返回 null\n if (!intersectRect(region, viewRegion)) {\n return null;\n }\n return {\n minX: Math.max(region.minX, viewRegion.minX),\n minY: Math.max(region.minY, viewRegion.minY),\n maxX: Math.min(region.maxX, viewRegion.maxX),\n maxY: Math.min(region.maxY, viewRegion.maxY)\n };\n}","import { __extends } from \"tslib\";\nimport { AbstractGroup } from '@antv/g-base';\nimport * as Shape from './shape';\nimport { applyAttrsToContext, drawChildren, refreshElement } from './util/draw';\nimport { each, max, min } from '@antv/util';\nimport { intersectRect } from './util/util';\nvar Group = /** @class */function (_super) {\n __extends(Group, _super);\n function Group() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n Group.prototype.onCanvasChange = function (changeType) {\n refreshElement(this, changeType);\n };\n Group.prototype.getShapeBase = function () {\n return Shape;\n };\n Group.prototype.getGroupBase = function () {\n return Group;\n };\n // 同 shape 中的方法重复了\n Group.prototype._applyClip = function (context, clip) {\n if (clip) {\n context.save();\n // 将 clip 的属性挂载到 context 上\n applyAttrsToContext(context, clip);\n // 绘制 clip 路径\n clip.createPath(context);\n context.restore();\n // 裁剪\n context.clip();\n clip._afterDraw();\n }\n };\n // 这个方法以前直接使用的 getCanvasBBox,由于 group 上没有缓存,所以每次重新计算,导致性能开销比较大\n // 大概能够节省全局渲染 15-20% 的性能,如果不在这里加缓存优化后 10W 个节点无法达到 5-6 ms,大概能够 30-40ms\n Group.prototype.cacheCanvasBBox = function () {\n var children = this.cfg.children;\n var xArr = [];\n var yArr = [];\n each(children, function (child) {\n var bbox = child.cfg.cacheCanvasBBox;\n // isInview 的判定是一旦图形或者分组渲染就要计算是否在视图内,\n // 这个判定 10W 个图形下差不多能够节省 5-6 ms 的开销\n if (bbox && child.cfg.isInView) {\n xArr.push(bbox.minX, bbox.maxX);\n yArr.push(bbox.minY, bbox.maxY);\n }\n });\n var bbox = null;\n if (xArr.length) {\n var minX = min(xArr);\n var maxX = max(xArr);\n var minY = min(yArr);\n var maxY = max(yArr);\n bbox = {\n minX: minX,\n minY: minY,\n x: minX,\n y: minY,\n maxX: maxX,\n maxY: maxY,\n width: maxX - minX,\n height: maxY - minY\n };\n var canvas = this.cfg.canvas;\n if (canvas) {\n var viewRange = canvas.getViewRange();\n // 如果这个地方判定 isInView == false 设置 bbox 为 false 的话,拾取的性能会更高\n // 但是目前 10W 图形的拾取在 2-5ms 内,这个优化意义不大,可以后期观察再看\n this.set('isInView', intersectRect(bbox, viewRange));\n }\n } else {\n this.set('isInView', false);\n }\n this.set('cacheCanvasBBox', bbox);\n };\n Group.prototype.draw = function (context, region) {\n var children = this.cfg.children;\n var allowDraw = region ? this.cfg.refresh : true; // 局部刷新需要判定\n // 这个地方需要判定,在 G6 的场景每个 group 都有 transform 的场景下性能会开销非常大\n // 通过 refresh 的判定,可以不刷新没有发生过变化的分组,不在视窗内的分组等等\n // 如果想进一步提升局部渲染性能,可以进一步优化 refresh 的判定,依然有潜力\n if (children.length && allowDraw) {\n context.save();\n // group 上的矩阵和属性也会应用到上下文上\n // 先将 attrs 应用到上下文中,再设置 clip。因为 clip 应该被当前元素的 matrix 所影响\n applyAttrsToContext(context, this);\n this._applyClip(context, this.getClip());\n drawChildren(context, children, region);\n context.restore();\n this.cacheCanvasBBox();\n }\n // 这里的成本比较大,如果不绘制则不再\n // this.set('cacheCanvasBBox', this.getCanvasBBox());\n this.cfg.refresh = null;\n // 绘制后,消除更新标记\n this.set('hasChanged', false);\n };\n // 绘制时被跳过,一般发生在分组隐藏时\n Group.prototype.skipDraw = function () {\n this.set('cacheCanvasBBox', null);\n this.set('hasChanged', false);\n };\n return Group;\n}(AbstractGroup);\nexport default Group;","import { __assign, __extends } from \"tslib\";\nimport { AbstractShape } from '@antv/g-base';\nimport { isNil, intersectRect } from '../util/util';\nimport { applyAttrsToContext, refreshElement } from '../util/draw';\nimport { getBBoxMethod } from '@antv/g-base';\nimport * as Shape from './index';\nimport Group from '../group';\nvar ShapeBase = /** @class */function (_super) {\n __extends(ShapeBase, _super);\n function ShapeBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ShapeBase.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n // 设置默认值\n return __assign(__assign({}, attrs), {\n lineWidth: 1,\n lineAppendWidth: 0,\n strokeOpacity: 1,\n fillOpacity: 1\n });\n };\n ShapeBase.prototype.getShapeBase = function () {\n return Shape;\n };\n ShapeBase.prototype.getGroupBase = function () {\n return Group;\n };\n /**\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n ShapeBase.prototype.onCanvasChange = function (changeType) {\n refreshElement(this, changeType);\n };\n ShapeBase.prototype.calculateBBox = function () {\n var type = this.get('type');\n var lineWidth = this.getHitLineWidth();\n // const attrs = this.attr();\n var bboxMethod = getBBoxMethod(type);\n var box = bboxMethod(this);\n var halfLineWidth = lineWidth / 2;\n var minX = box.x - halfLineWidth;\n var minY = box.y - halfLineWidth;\n var maxX = box.x + box.width + halfLineWidth;\n var maxY = box.y + box.height + halfLineWidth;\n return {\n x: minX,\n minX: minX,\n y: minY,\n minY: minY,\n width: box.width + lineWidth,\n height: box.height + lineWidth,\n maxX: maxX,\n maxY: maxY\n };\n };\n ShapeBase.prototype.isFill = function () {\n return !!this.attrs['fill'] || this.isClipShape();\n };\n ShapeBase.prototype.isStroke = function () {\n return !!this.attrs['stroke'];\n };\n // 同 shape 中的方法重复了\n ShapeBase.prototype._applyClip = function (context, clip) {\n if (clip) {\n context.save();\n // 将 clip 的属性挂载到 context 上\n applyAttrsToContext(context, clip);\n // 绘制 clip 路径\n clip.createPath(context);\n context.restore();\n // 裁剪\n context.clip();\n clip._afterDraw();\n }\n };\n // 绘制图形时需要考虑 region 限制\n ShapeBase.prototype.draw = function (context, region) {\n var clip = this.cfg.clipShape;\n // 如果指定了 region,同时不允许刷新时,直接返回\n if (region) {\n if (this.cfg.refresh === false) {\n // this._afterDraw();\n this.set('hasChanged', false);\n return;\n }\n // 是否相交需要考虑 clip 的包围盒\n var bbox = this.getCanvasBBox();\n if (!intersectRect(region, bbox)) {\n // 图形的包围盒与重绘区域不相交时,也需要清除标记\n this.set('hasChanged', false);\n // 存在多种情形需要更新 cacheCanvasBBox 和 isInview 的判定\n // 1. 之前图形在视窗内,但是现在不再视窗内\n // 2. 如果当前的图形以及父元素都没有发生过变化,refresh = false 不会走到这里,所以这里的图形都是父元素发生变化,但是没有在视图内的元素\n if (this.cfg.isInView) {\n this._afterDraw();\n }\n return;\n }\n }\n context.save();\n // 先将 attrs 应用到上下文中,再设置 clip。因为 clip 应该被当前元素的 matrix 所影响\n applyAttrsToContext(context, this);\n this._applyClip(context, clip);\n this.drawPath(context);\n context.restore();\n this._afterDraw();\n };\n ShapeBase.prototype.getCanvasViewBox = function () {\n var canvas = this.cfg.canvas;\n if (canvas) {\n // @ts-ignore\n return canvas.getViewRange();\n }\n return null;\n };\n ShapeBase.prototype.cacheCanvasBBox = function () {\n var canvasBBox = this.getCanvasViewBox();\n // 绘制的时候缓存包围盒\n if (canvasBBox) {\n var bbox = this.getCanvasBBox();\n var isInView = intersectRect(bbox, canvasBBox);\n this.set('isInView', isInView);\n // 不再视窗内 cacheCanvasBBox 设置成 null,会提升局部渲染的性能,\n // 因为在局部渲染影响的包围盒计算时不考虑这个图形的包围盒\n // 父元素 cacheCanvasBBox 计算的时候也不计算\n if (isInView) {\n this.set('cacheCanvasBBox', bbox);\n } else {\n this.set('cacheCanvasBBox', null);\n }\n }\n };\n ShapeBase.prototype._afterDraw = function () {\n this.cacheCanvasBBox();\n // 绘制后消除标记\n this.set('hasChanged', false);\n this.set('refresh', null);\n };\n ShapeBase.prototype.skipDraw = function () {\n this.set('cacheCanvasBBox', null);\n this.set('isInView', null);\n this.set('hasChanged', false);\n };\n /**\n * 绘制图形的路径\n * @param {CanvasRenderingContext2D} context 上下文\n */\n ShapeBase.prototype.drawPath = function (context) {\n this.createPath(context);\n this.strokeAndFill(context);\n this.afterDrawPath(context);\n };\n /**\n * @protected\n * 填充图形\n * @param {CanvasRenderingContext2D} context context 上下文\n */\n ShapeBase.prototype.fill = function (context) {\n context.fill();\n };\n /**\n * @protected\n * 绘制图形边框\n * @param {CanvasRenderingContext2D} context context 上下文\n */\n ShapeBase.prototype.stroke = function (context) {\n context.stroke();\n };\n // 绘制或者填充\n ShapeBase.prototype.strokeAndFill = function (context) {\n var _a = this.attrs,\n lineWidth = _a.lineWidth,\n opacity = _a.opacity,\n strokeOpacity = _a.strokeOpacity,\n fillOpacity = _a.fillOpacity;\n if (this.isFill()) {\n if (!isNil(fillOpacity) && fillOpacity !== 1) {\n context.globalAlpha = fillOpacity;\n this.fill(context);\n context.globalAlpha = opacity;\n } else {\n this.fill(context);\n }\n }\n if (this.isStroke()) {\n if (lineWidth > 0) {\n if (!isNil(strokeOpacity) && strokeOpacity !== 1) {\n context.globalAlpha = strokeOpacity;\n }\n this.stroke(context);\n }\n }\n this.afterDrawPath(context);\n };\n /**\n * @protected\n * 绘制图形的路径\n * @param {CanvasRenderingContext2D} context 上下文\n */\n ShapeBase.prototype.createPath = function (context) {};\n /**\n * 绘制完成 path 后的操作\n * @param {CanvasRenderingContext2D} context 上下文\n */\n ShapeBase.prototype.afterDrawPath = function (context) {};\n ShapeBase.prototype.isInShape = function (refX, refY) {\n // return HitUtil.isHitShape(this, refX, refY);\n var isStroke = this.isStroke();\n var isFill = this.isFill();\n var lineWidth = this.getHitLineWidth();\n return this.isInStrokeOrPath(refX, refY, isStroke, isFill, lineWidth);\n };\n // 之所以不拆成 isInStroke 和 isInPath 在于两者存在一些共同的计算\n ShapeBase.prototype.isInStrokeOrPath = function (x, y, isStroke, isFill, lineWidth) {\n return false;\n };\n /**\n * 获取线拾取的宽度\n * @returns {number} 线的拾取宽度\n */\n ShapeBase.prototype.getHitLineWidth = function () {\n if (!this.isStroke()) {\n return 0;\n }\n var attrs = this.attrs;\n return attrs['lineWidth'] + attrs['lineAppendWidth'];\n };\n return ShapeBase;\n}(AbstractShape);\nexport default ShapeBase;","/**\n * @fileoverview 圆\n * @author dxq613@gmail.com\n */\nimport { __assign, __extends } from \"tslib\";\nimport ShapeBase from './base';\nimport { distance } from '../util/util';\nvar Circle = /** @class */function (_super) {\n __extends(Circle, _super);\n function Circle() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Circle.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return __assign(__assign({}, attrs), {\n x: 0,\n y: 0,\n r: 0\n });\n };\n Circle.prototype.isInStrokeOrPath = function (x, y, isStroke, isFill, lineWidth) {\n var attrs = this.attr();\n var cx = attrs.x;\n var cy = attrs.y;\n var r = attrs.r;\n var halfLineWidth = lineWidth / 2;\n var absDistance = distance(cx, cy, x, y);\n // 直接用距离,如果同时存在边和填充时,可以减少两次计算\n if (isFill && isStroke) {\n return absDistance <= r + halfLineWidth;\n }\n if (isFill) {\n return absDistance <= r;\n }\n if (isStroke) {\n return absDistance >= r - halfLineWidth && absDistance <= r + halfLineWidth;\n }\n return false;\n };\n Circle.prototype.createPath = function (context) {\n var attrs = this.attr();\n var cx = attrs.x;\n var cy = attrs.y;\n var r = attrs.r;\n context.beginPath();\n context.arc(cx, cy, r, 0, Math.PI * 2, false);\n context.closePath();\n };\n return Circle;\n}(ShapeBase);\nexport default Circle;","/**\n * @fileoverview 椭圆\n * @author dxq613@gmail.com\n */\nimport { __assign, __extends } from \"tslib\";\nimport ShapeBase from './base';\n// 根据椭圆公式计算 x*x/rx*rx + y*y/ry*ry;\nfunction ellipseDistance(squareX, squareY, rx, ry) {\n return squareX / (rx * rx) + squareY / (ry * ry);\n}\nvar Ellipse = /** @class */function (_super) {\n __extends(Ellipse, _super);\n function Ellipse() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Ellipse.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return __assign(__assign({}, attrs), {\n x: 0,\n y: 0,\n rx: 0,\n ry: 0\n });\n };\n Ellipse.prototype.isInStrokeOrPath = function (x, y, isStroke, isFill, lineWidth) {\n var attrs = this.attr();\n var halfLineWith = lineWidth / 2;\n var cx = attrs.x;\n var cy = attrs.y;\n var rx = attrs.rx,\n ry = attrs.ry;\n var squareX = (x - cx) * (x - cx);\n var squareY = (y - cy) * (y - cy);\n // 使用椭圆的公式: x*x/rx*rx + y*y/ry*ry = 1;\n if (isFill && isStroke) {\n return ellipseDistance(squareX, squareY, rx + halfLineWith, ry + halfLineWith) <= 1;\n }\n if (isFill) {\n return ellipseDistance(squareX, squareY, rx, ry) <= 1;\n }\n if (isStroke) {\n return ellipseDistance(squareX, squareY, rx - halfLineWith, ry - halfLineWith) >= 1 && ellipseDistance(squareX, squareY, rx + halfLineWith, ry + halfLineWith) <= 1;\n }\n return false;\n };\n Ellipse.prototype.createPath = function (context) {\n var attrs = this.attr();\n var cx = attrs.x;\n var cy = attrs.y;\n var rx = attrs.rx;\n var ry = attrs.ry;\n context.beginPath();\n // 兼容逻辑\n if (context.ellipse) {\n context.ellipse(cx, cy, rx, ry, 0, 0, Math.PI * 2, false);\n } else {\n // 如果不支持,则使用圆来绘制,进行变形\n var r = rx > ry ? rx : ry;\n var scaleX = rx > ry ? 1 : rx / ry;\n var scaleY = rx > ry ? ry / rx : 1;\n context.save();\n context.translate(cx, cy);\n context.scale(scaleX, scaleY);\n context.arc(0, 0, r, 0, Math.PI * 2);\n context.restore();\n context.closePath();\n }\n };\n return Ellipse;\n}(ShapeBase);\nexport default Ellipse;","/**\n * @fileoverview 图片\n * @author dxq613@gmail.com\n */\nimport { __assign, __extends } from \"tslib\";\nimport ShapeBase from './base';\nimport { isString, isNil } from '../util/util';\nfunction isCanvas(dom) {\n return dom instanceof HTMLElement && isString(dom.nodeName) && dom.nodeName.toUpperCase() === 'CANVAS';\n}\nvar ImageShape = /** @class */function (_super) {\n __extends(ImageShape, _super);\n function ImageShape() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ImageShape.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return __assign(__assign({}, attrs), {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n });\n };\n ImageShape.prototype.initAttrs = function (attrs) {\n this._setImage(attrs.img);\n };\n // image 不计算 stroke\n ImageShape.prototype.isStroke = function () {\n return false;\n };\n // 仅仅使用包围盒检测来进行拾取\n // 所以不需要复写 isInStrokeOrPath 的方法\n ImageShape.prototype.isOnlyHitBox = function () {\n return true;\n };\n ImageShape.prototype._afterLoading = function () {\n if (this.get('toDraw') === true) {\n var canvas = this.get('canvas');\n if (canvas) {\n // 这段应该改成局部渲染\n canvas.draw();\n } else {\n // 这种方式如果发生遮挡会出现问题\n this.createPath(this.get('context'));\n }\n }\n };\n ImageShape.prototype._setImage = function (img) {\n var _this = this;\n var attrs = this.attrs;\n if (isString(img)) {\n var image_1 = new Image();\n image_1.onload = function () {\n // 图片未加载完,则已经被销毁\n if (_this.destroyed) {\n return false;\n }\n // 缓存原始地址,可以做对比,防止重复加载图片\n // 如果考虑到在加载过程中可能替换 img 属性,则情况更加复杂\n // this.set('imgSrc', img);\n // 这里会循环调用 _setImage 方法,但不会再走这个分支\n _this.attr('img', image_1);\n _this.set('loading', false);\n _this._afterLoading();\n var callback = _this.get('callback');\n if (callback) {\n callback.call(_this);\n }\n };\n // 设置跨域\n image_1.crossOrigin = 'Anonymous';\n image_1.src = img;\n // loading 过程中不绘制\n this.set('loading', true);\n } else if (img instanceof Image) {\n // 如果是一个 image 对象,则设置宽高\n if (!attrs.width) {\n attrs.width = img.width;\n }\n if (!attrs.height) {\n attrs.height = img.height;\n }\n } else if (isCanvas(img)) {\n // 如果设置了 canvas 对象\n if (!attrs.width) {\n attrs.width = Number(img.getAttribute('width'));\n }\n if (!attrs.height) {\n attrs.height, Number(img.getAttribute('height'));\n }\n }\n };\n ImageShape.prototype.onAttrChange = function (name, value, originValue) {\n _super.prototype.onAttrChange.call(this, name, value, originValue);\n // 如果加载的已经是当前图片,则不再处理\n if (name === 'img') {\n // 可以加缓冲,&& this.get('imgSrc') !== value\n this._setImage(value);\n }\n };\n ImageShape.prototype.createPath = function (context) {\n // 正在加载则不绘制\n if (this.get('loading')) {\n this.set('toDraw', true); // 加载完成后绘制\n this.set('context', context);\n return;\n }\n var attrs = this.attr();\n var x = attrs.x,\n y = attrs.y,\n width = attrs.width,\n height = attrs.height,\n sx = attrs.sx,\n sy = attrs.sy,\n swidth = attrs.swidth,\n sheight = attrs.sheight;\n var img = attrs.img;\n if (img instanceof Image || isCanvas(img)) {\n if (!isNil(sx) && !isNil(sy) && !isNil(swidth) && !isNil(sheight)) {\n context.drawImage(img, sx, sy, swidth, sheight, x, y, width, height);\n } else {\n context.drawImage(img, x, y, width, height);\n }\n }\n };\n return ImageShape;\n}(ShapeBase);\nexport default ImageShape;","import { Line as LineUtil } from '@antv/g-math';\nexport default function inLine(x1, y1, x2, y2, lineWidth, x, y) {\n var minX = Math.min(x1, x2);\n var maxX = Math.max(x1, x2);\n var minY = Math.min(y1, y2);\n var maxY = Math.max(y1, y2);\n var halfWidth = lineWidth / 2;\n // 因为目前的方案是计算点到直线的距离,而有可能会在延长线上,所以要先判断是否在包围盒内\n // 这种方案会在水平或者竖直的情况下载线的延长线上有半 lineWidth 的误差\n if (!(x >= minX - halfWidth && x <= maxX + halfWidth && y >= minY - halfWidth && y <= maxY + halfWidth)) {\n return false;\n }\n // 因为已经计算了包围盒,所以仅需要计算到直线的距离即可,可以显著提升性能\n return LineUtil.pointToLine(x1, y1, x2, y2, x, y) <= lineWidth / 2;\n}","import { __assign, __extends } from \"tslib\";\n/**\n * @fileoverview 线\n * @author dxq613@gmail.com\n */\nimport { Line as LineUtil } from '@antv/g-math';\nimport ShapeBase from './base';\nimport inLine from '../util/in-stroke/line';\nimport * as ArrowUtil from '../util/arrow';\nvar Line = /** @class */function (_super) {\n __extends(Line, _super);\n function Line() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Line.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return __assign(__assign({}, attrs), {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 0,\n startArrow: false,\n endArrow: false\n });\n };\n Line.prototype.initAttrs = function (attrs) {\n this.setArrow();\n };\n // 更新属性时,检测是否更改了箭头\n Line.prototype.onAttrChange = function (name, value, originValue) {\n _super.prototype.onAttrChange.call(this, name, value, originValue);\n // 由于箭头的绘制依赖于 line 的诸多 attrs,因此这里不再对每个 attr 进行判断,attr 每次变化都会影响箭头的更新\n this.setArrow();\n };\n Line.prototype.setArrow = function () {\n var attrs = this.attr();\n var x1 = attrs.x1,\n y1 = attrs.y1,\n x2 = attrs.x2,\n y2 = attrs.y2,\n startArrow = attrs.startArrow,\n endArrow = attrs.endArrow;\n if (startArrow) {\n ArrowUtil.addStartArrow(this, attrs, x2, y2, x1, y1);\n }\n if (endArrow) {\n ArrowUtil.addEndArrow(this, attrs, x1, y1, x2, y2);\n }\n };\n Line.prototype.isInStrokeOrPath = function (x, y, isStroke, isFill, lineWidth) {\n if (!isStroke || !lineWidth) {\n return false;\n }\n var _a = this.attr(),\n x1 = _a.x1,\n y1 = _a.y1,\n x2 = _a.x2,\n y2 = _a.y2;\n return inLine(x1, y1, x2, y2, lineWidth, x, y);\n };\n Line.prototype.createPath = function (context) {\n var attrs = this.attr();\n var x1 = attrs.x1,\n y1 = attrs.y1,\n x2 = attrs.x2,\n y2 = attrs.y2,\n startArrow = attrs.startArrow,\n endArrow = attrs.endArrow;\n var startArrowDistance = {\n dx: 0,\n dy: 0\n };\n var endArrowDistance = {\n dx: 0,\n dy: 0\n };\n if (startArrow && startArrow.d) {\n startArrowDistance = ArrowUtil.getShortenOffset(x1, y1, x2, y2, attrs.startArrow.d);\n }\n if (endArrow && endArrow.d) {\n endArrowDistance = ArrowUtil.getShortenOffset(x1, y1, x2, y2, attrs.endArrow.d);\n }\n context.beginPath();\n // 如果自定义箭头,线条相应缩进\n context.moveTo(x1 + startArrowDistance.dx, y1 + startArrowDistance.dy);\n context.lineTo(x2 - endArrowDistance.dx, y2 - endArrowDistance.dy);\n };\n Line.prototype.afterDrawPath = function (context) {\n var startArrowShape = this.get('startArrowShape');\n var endArrowShape = this.get('endArrowShape');\n if (startArrowShape) {\n startArrowShape.draw(context);\n }\n if (endArrowShape) {\n endArrowShape.draw(context);\n }\n };\n /**\n * Get length of line\n * @return {number} length\n */\n Line.prototype.getTotalLength = function () {\n var _a = this.attr(),\n x1 = _a.x1,\n y1 = _a.y1,\n x2 = _a.x2,\n y2 = _a.y2;\n return LineUtil.length(x1, y1, x2, y2);\n };\n /**\n * Get point according to ratio\n * @param {number} ratio\n * @return {Point} point\n */\n Line.prototype.getPoint = function (ratio) {\n var _a = this.attr(),\n x1 = _a.x1,\n y1 = _a.y1,\n x2 = _a.x2,\n y2 = _a.y2;\n return LineUtil.pointAt(x1, y1, x2, y2, ratio);\n };\n return Line;\n}(ShapeBase);\nexport default Line;","/**\n * @fileoverview Marker\n * @author dxq613@gmail.com\n */\nimport { __extends } from \"tslib\";\nimport { isNil } from '@antv/util';\nimport { path2Absolute } from '@antv/path-util';\nimport ShapeBase from './base';\nimport { isFunction } from '../util/util';\nimport { drawPath } from '../util/draw';\nvar Symbols = {\n // 圆\n circle: function circle(x, y, r) {\n return [['M', x - r, y], ['A', r, r, 0, 1, 0, x + r, y], ['A', r, r, 0, 1, 0, x - r, y]];\n },\n // 正方形\n square: function square(x, y, r) {\n return [['M', x - r, y - r], ['L', x + r, y - r], ['L', x + r, y + r], ['L', x - r, y + r], ['Z']];\n },\n // 菱形\n diamond: function diamond(x, y, r) {\n return [['M', x - r, y], ['L', x, y - r], ['L', x + r, y], ['L', x, y + r], ['Z']];\n },\n // 三角形\n triangle: function triangle(x, y, r) {\n var diffY = r * Math.sin(1 / 3 * Math.PI);\n return [['M', x - r, y + diffY], ['L', x, y - diffY], ['L', x + r, y + diffY], ['Z']];\n },\n // 倒三角形\n 'triangle-down': function triangleDown(x, y, r) {\n var diffY = r * Math.sin(1 / 3 * Math.PI);\n return [['M', x - r, y - diffY], ['L', x + r, y - diffY], ['L', x, y + diffY], ['Z']];\n }\n};\nvar Marker = /** @class */function (_super) {\n __extends(Marker, _super);\n function Marker() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Marker.prototype.initAttrs = function (attrs) {\n this._resetParamsCache();\n };\n // 重置绘制 path 存储的缓存\n Marker.prototype._resetParamsCache = function () {\n // 为了加速 path 的绘制、拾取和计算,这个地方可以缓存很多东西\n // 这些缓存都是第一次需要时计算和存储,虽然增加了复杂度,但是频繁调用的方法,性能有很大提升\n this.set('paramsCache', {}); // 清理缓存\n };\n // 更新属性时,检测是否更改了 path\n Marker.prototype.onAttrChange = function (name, value, originValue) {\n _super.prototype.onAttrChange.call(this, name, value, originValue);\n if (['symbol', 'x', 'y', 'r', 'radius'].indexOf(name) !== -1) {\n // path 相关属性更改时,清理缓存\n this._resetParamsCache();\n }\n };\n // 仅仅使用包围盒检测来进行拾取\n // 所以不需要复写 isInStrokeOrPath 的方法\n Marker.prototype.isOnlyHitBox = function () {\n return true;\n };\n Marker.prototype._getR = function (attrs) {\n // 兼容 r 和 radius 两种写法,推荐使用 r\n return isNil(attrs.r) ? attrs.radius : attrs.r;\n };\n Marker.prototype._getPath = function () {\n var attrs = this.attr();\n var x = attrs.x,\n y = attrs.y;\n var symbol = attrs.symbol || 'circle';\n var r = this._getR(attrs);\n var method;\n var path;\n if (isFunction(symbol)) {\n method = symbol;\n path = method(x, y, r);\n // 将 path 转成绝对路径\n path = path2Absolute(path);\n } else {\n // 内置 symbol 的 path 都是绝对路径,直接绘制即可,不需要对 path 进行特殊处理\n method = Marker.Symbols[symbol];\n if (!method) {\n console.warn(symbol + \" marker is not supported.\");\n return null;\n }\n path = method(x, y, r);\n }\n return path;\n };\n Marker.prototype.createPath = function (context) {\n var path = this._getPath();\n var paramsCache = this.get('paramsCache');\n drawPath(this, context, {\n path: path\n }, paramsCache);\n };\n Marker.Symbols = Symbols;\n return Marker;\n}(ShapeBase);\nexport default Marker;","import { getOffScreenContext } from '@antv/g-base';\nexport default function isPointInPath(shape, x, y) {\n var ctx = getOffScreenContext();\n shape.createPath(ctx);\n return ctx.isPointInPath(x, y);\n}","/**\n * @fileoverview 判断点是否在多边形内\n * @author dxq613@gmail.com\n */\n// 多边形的射线检测,参考:https://blog.csdn.net/WilliamSun0122/article/details/77994526\nvar tolerance = 1e-6;\n// 三态函数,判断两个double在eps精度下的大小关系\nfunction dcmp(x) {\n if (Math.abs(x) < tolerance) {\n return 0;\n }\n return x < 0 ? -1 : 1;\n}\n// 判断点Q是否在p1和p2的线段上\nfunction onSegment(p1, p2, q) {\n if ((q[0] - p1[0]) * (p2[1] - p1[1]) === (p2[0] - p1[0]) * (q[1] - p1[1]) && Math.min(p1[0], p2[0]) <= q[0] && q[0] <= Math.max(p1[0], p2[0]) && Math.min(p1[1], p2[1]) <= q[1] && q[1] <= Math.max(p1[1], p2[1])) {\n return true;\n }\n return false;\n}\n// 判断点P在多边形内-射线法\nexport default function isInPolygon(points, x, y) {\n var isHit = false;\n var n = points.length;\n if (n <= 2) {\n // svg 中点小于 3 个时,不显示,也无法被拾取\n return false;\n }\n for (var i = 0; i < n; i++) {\n var p1 = points[i];\n var p2 = points[(i + 1) % n];\n if (onSegment(p1, p2, [x, y])) {\n // 点在多边形一条边上\n return true;\n }\n // 前一个判断min(p1[1],p2[1]) 0 !== dcmp(p2[1] - y) > 0 && dcmp(x - (y - p1[1]) * (p1[0] - p2[0]) / (p1[1] - p2[1]) - p1[0]) < 0) {\n isHit = !isHit;\n }\n }\n return isHit;\n}","import { distance } from '../util';\nexport default function arc(cx, cy, r, startAngle, endAngle, lineWidth, x, y) {\n var angle = (Math.atan2(y - cy, x - cx) + Math.PI * 2) % (Math.PI * 2); // 转换到 0 - 2 * Math.PI 之间\n if (angle < startAngle || angle > endAngle) {\n return false;\n }\n var point = {\n x: cx + r * Math.cos(angle),\n y: cy + r * Math.sin(angle)\n };\n return distance(point.x, point.y, x, y) <= lineWidth / 2;\n}","import { __assign } from \"tslib\";\n/**\n * @fileoverview path 的一些工具\n * @author dxq613@gmail.com\n */\nimport { PathUtil } from '@antv/g-base';\nimport { Quad as QuadUtil } from '@antv/g-math';\nimport { Cubic as CubicUtil } from '@antv/g-math';\nimport { ext } from '@antv/matrix-util';\nimport * as vec3 from 'gl-matrix/vec3';\nimport { inBox } from './util';\nimport inLine from './in-stroke/line';\nimport inArc from './in-stroke/arc';\nvar transform = ext.transform;\nfunction hasArc(path) {\n var hasArc = false;\n var count = path.length;\n for (var i = 0; i < count; i++) {\n var params = path[i];\n var cmd = params[0];\n if (cmd === 'C' || cmd === 'A' || cmd === 'Q') {\n hasArc = true;\n break;\n }\n }\n return hasArc;\n}\nfunction isPointInStroke(segments, lineWidth, x, y, length) {\n var isHit = false;\n var halfWidth = lineWidth / 2;\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n var currentPoint = segment.currentPoint,\n params = segment.params,\n prePoint = segment.prePoint,\n box = segment.box;\n // 如果在前面已经生成过包围盒,直接按照包围盒计算\n if (box && !inBox(box.x - halfWidth, box.y - halfWidth, box.width + lineWidth, box.height + lineWidth, x, y)) {\n continue;\n }\n switch (segment.command) {\n // L 和 Z 都是直线, M 不进行拾取\n case 'L':\n case 'Z':\n isHit = inLine(prePoint[0], prePoint[1], currentPoint[0], currentPoint[1], lineWidth, x, y);\n break;\n case 'Q':\n var qDistance = QuadUtil.pointDistance(prePoint[0], prePoint[1], params[1], params[2], params[3], params[4], x, y);\n isHit = qDistance <= lineWidth / 2;\n break;\n case 'C':\n var cDistance = CubicUtil.pointDistance(prePoint[0],\n // 上一段结束位置, 即 C 的起始点\n prePoint[1], params[1],\n // 'C' 的参数,1、2 为第一个控制点,3、4 为第二个控制点,5、6 为结束点\n params[2], params[3], params[4], params[5], params[6], x, y, length);\n isHit = cDistance <= lineWidth / 2;\n break;\n case 'A':\n // 计算点到椭圆圆弧的距离,暂时使用近似算法,后面可以改成切割法求最近距离\n var arcParams = segment.arcParams;\n var cx = arcParams.cx,\n cy = arcParams.cy,\n rx = arcParams.rx,\n ry = arcParams.ry,\n startAngle = arcParams.startAngle,\n endAngle = arcParams.endAngle,\n xRotation = arcParams.xRotation;\n var p = [x, y, 1];\n var r = rx > ry ? rx : ry;\n var scaleX = rx > ry ? 1 : rx / ry;\n var scaleY = rx > ry ? ry / rx : 1;\n var m = transform(null, [['t', -cx, -cy], ['r', -xRotation], ['s', 1 / scaleX, 1 / scaleY]]);\n vec3.transformMat3(p, p, m);\n isHit = inArc(0, 0, r, startAngle, endAngle, lineWidth, p[0], p[1]);\n break;\n default:\n break;\n }\n if (isHit) {\n break;\n }\n }\n return isHit;\n}\n/**\n * 提取出内部的闭合多边形和非闭合的多边形,假设 path 不存在圆弧\n * @param {Array} path 路径\n * @returns {Array} 点的集合\n */\nfunction extractPolygons(path) {\n var count = path.length;\n var polygons = [];\n var polylines = [];\n var points = []; // 防止第一个命令不是 'M'\n for (var i = 0; i < count; i++) {\n var params = path[i];\n var cmd = params[0];\n if (cmd === 'M') {\n // 遇到 'M' 判定是否是新数组,新数组中没有点\n if (points.length) {\n // 如果存在点,则说明没有遇到 'Z',开始了一个新的多边形\n polylines.push(points);\n points = []; // 创建新的点\n }\n\n points.push([params[1], params[2]]);\n } else if (cmd === 'Z') {\n if (points.length) {\n // 存在点\n polygons.push(points);\n points = []; // 开始新的点集合\n }\n // 如果不存在点,同时 'Z',则说明是错误,不处理\n } else {\n points.push([params[1], params[2]]);\n }\n }\n // 说明 points 未放入 polygons 或者 polyline\n // 仅当只有一个 M,没有 Z 时会发生这种情况\n if (points.length > 0) {\n polylines.push(points);\n }\n return {\n polygons: polygons,\n polylines: polylines\n };\n}\nexport default __assign({\n hasArc: hasArc,\n extractPolygons: extractPolygons,\n isPointInStroke: isPointInStroke\n}, PathUtil);","import { __assign, __extends } from \"tslib\";\nimport { Cubic as CubicUtil } from '@antv/g-math';\nimport { each, isNil } from '@antv/util';\nimport ShapeBase from './base';\nimport { path2Absolute, path2Segments } from '@antv/path-util';\nimport { drawPath } from '../util/draw';\nimport isPointInPath from '../util/in-path/point-in-path';\nimport isInPolygon from '../util/in-path/polygon';\nimport PathUtil from '../util/path';\nimport * as ArrowUtil from '../util/arrow';\n// 是否在多个多边形内部\nfunction isInPolygons(polygons, x, y) {\n var isHit = false;\n for (var i = 0; i < polygons.length; i++) {\n var points = polygons[i];\n isHit = isInPolygon(points, x, y);\n if (isHit) {\n break;\n }\n }\n return isHit;\n}\nvar Path = /** @class */function (_super) {\n __extends(Path, _super);\n function Path() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Path.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return __assign(__assign({}, attrs), {\n startArrow: false,\n endArrow: false\n });\n };\n Path.prototype.initAttrs = function (attrs) {\n this._setPathArr(attrs.path);\n this.setArrow();\n };\n // 更新属性时,检测是否更改了 path\n Path.prototype.onAttrChange = function (name, value, originValue) {\n _super.prototype.onAttrChange.call(this, name, value, originValue);\n if (name === 'path') {\n this._setPathArr(value);\n }\n // 由于箭头的绘制依赖于 line 的诸多 attrs,因此这里不再对每个 attr 进行判断,attr 每次变化都会影响箭头的更新\n this.setArrow();\n };\n // 将 path 转换成绝对路径\n Path.prototype._setPathArr = function (path) {\n // 转换 path 的格式\n this.attrs.path = path2Absolute(path);\n var hasArc = PathUtil.hasArc(path);\n // 为了加速 path 的绘制、拾取和计算,这个地方可以缓存很多东西\n // 这些缓存都是第一次需要时计算和存储,虽然增加了复杂度,但是频繁调用的方法,性能有很大提升\n this.set('hasArc', hasArc);\n this.set('paramsCache', {}); // 清理缓存\n this.set('segments', null); // 延迟生成 path,在动画场景下可能不会有拾取\n this.set('curve', null);\n this.set('tCache', null);\n this.set('totalLength', null);\n };\n Path.prototype.getSegments = function () {\n var segments = this.get('segements');\n if (!segments) {\n segments = path2Segments(this.attr('path'));\n this.set('segments', segments);\n }\n return segments;\n };\n Path.prototype.setArrow = function () {\n var attrs = this.attr();\n var startArrow = attrs.startArrow,\n endArrow = attrs.endArrow;\n if (startArrow) {\n var tangent = this.getStartTangent();\n ArrowUtil.addStartArrow(this, attrs, tangent[0][0], tangent[0][1], tangent[1][0], tangent[1][1]);\n }\n if (endArrow) {\n var tangent = this.getEndTangent();\n ArrowUtil.addEndArrow(this, attrs, tangent[0][0], tangent[0][1], tangent[1][0], tangent[1][1]);\n }\n };\n Path.prototype.isInStrokeOrPath = function (x, y, isStroke, isFill, lineWidth) {\n var segments = this.getSegments();\n var hasArc = this.get('hasArc');\n var isHit = false;\n if (isStroke) {\n var length_1 = this.getTotalLength();\n isHit = PathUtil.isPointInStroke(segments, lineWidth, x, y, length_1);\n }\n if (!isHit && isFill) {\n if (hasArc) {\n // 存在曲线时,暂时使用 canvas 的 api 计算,后续可以进行多边形切割\n isHit = isPointInPath(this, x, y);\n } else {\n var path = this.attr('path');\n var extractResutl = PathUtil.extractPolygons(path);\n // 提取出来的多边形包含闭合的和非闭合的,在这里统一按照多边形处理\n isHit = isInPolygons(extractResutl.polygons, x, y) || isInPolygons(extractResutl.polylines, x, y);\n }\n }\n return isHit;\n };\n Path.prototype.createPath = function (context) {\n var attrs = this.attr();\n var paramsCache = this.get('paramsCache'); // 由于计算圆弧的参数成本很大,所以要缓存\n drawPath(this, context, attrs, paramsCache);\n };\n Path.prototype.afterDrawPath = function (context) {\n var startArrowShape = this.get('startArrowShape');\n var endArrowShape = this.get('endArrowShape');\n if (startArrowShape) {\n startArrowShape.draw(context);\n }\n if (endArrowShape) {\n endArrowShape.draw(context);\n }\n };\n /**\n * Get total length of path\n * @return {number} length\n */\n Path.prototype.getTotalLength = function () {\n var totalLength = this.get('totalLength');\n if (!isNil(totalLength)) {\n return totalLength;\n }\n this._calculateCurve();\n this._setTcache();\n return this.get('totalLength');\n };\n /**\n * Get point according to ratio\n * @param {number} ratio\n * @return {Point} point\n */\n Path.prototype.getPoint = function (ratio) {\n var tCache = this.get('tCache');\n if (!tCache) {\n this._calculateCurve();\n this._setTcache();\n tCache = this.get('tCache');\n }\n var subt;\n var index;\n var curve = this.get('curve');\n if (!tCache || tCache.length === 0) {\n if (curve) {\n return {\n x: curve[0][1],\n y: curve[0][2]\n };\n }\n return null;\n }\n each(tCache, function (v, i) {\n if (ratio >= v[0] && ratio <= v[1]) {\n subt = (ratio - v[0]) / (v[1] - v[0]);\n index = i;\n }\n });\n var seg = curve[index];\n if (isNil(seg) || isNil(index)) {\n return null;\n }\n var l = seg.length;\n var nextSeg = curve[index + 1];\n return CubicUtil.pointAt(seg[l - 2], seg[l - 1], nextSeg[1], nextSeg[2], nextSeg[3], nextSeg[4], nextSeg[5], nextSeg[6], subt);\n };\n Path.prototype._calculateCurve = function () {\n var path = this.attr().path;\n this.set('curve', PathUtil.pathToCurve(path));\n };\n Path.prototype._setTcache = function () {\n var totalLength = 0;\n var tempLength = 0;\n // 每段 curve 对应起止点的长度比例列表,形如: [[0, 0.25], [0.25, 0.6]. [0.6, 0.9], [0.9, 1]]\n var tCache = [];\n var segmentT;\n var segmentL;\n var segmentN;\n var l;\n var curve = this.get('curve');\n if (!curve) {\n return;\n }\n each(curve, function (segment, i) {\n segmentN = curve[i + 1];\n l = segment.length;\n if (segmentN) {\n totalLength += CubicUtil.length(segment[l - 2], segment[l - 1], segmentN[1], segmentN[2], segmentN[3], segmentN[4], segmentN[5], segmentN[6]) || 0;\n }\n });\n this.set('totalLength', totalLength);\n if (totalLength === 0) {\n this.set('tCache', []);\n return;\n }\n each(curve, function (segment, i) {\n segmentN = curve[i + 1];\n l = segment.length;\n if (segmentN) {\n segmentT = [];\n segmentT[0] = tempLength / totalLength;\n segmentL = CubicUtil.length(segment[l - 2], segment[l - 1], segmentN[1], segmentN[2], segmentN[3], segmentN[4], segmentN[5], segmentN[6]);\n // 当 path 不连续时,segmentL 可能为空,为空时需要作为 0 处理\n tempLength += segmentL || 0;\n segmentT[1] = tempLength / totalLength;\n tCache.push(segmentT);\n }\n });\n this.set('tCache', tCache);\n };\n /**\n * Get start tangent vector\n * @return {Array}\n */\n Path.prototype.getStartTangent = function () {\n var segments = this.getSegments();\n var result;\n if (segments.length > 1) {\n var startPoint = segments[0].currentPoint;\n var endPoint = segments[1].currentPoint;\n var tangent = segments[1].startTangent;\n result = [];\n if (tangent) {\n result.push([startPoint[0] - tangent[0], startPoint[1] - tangent[1]]);\n result.push([startPoint[0], startPoint[1]]);\n } else {\n result.push([endPoint[0], endPoint[1]]);\n result.push([startPoint[0], startPoint[1]]);\n }\n }\n return result;\n };\n /**\n * Get end tangent vector\n * @return {Array}\n */\n Path.prototype.getEndTangent = function () {\n var segments = this.getSegments();\n var length = segments.length;\n var result;\n if (length > 1) {\n var startPoint = segments[length - 2].currentPoint;\n var endPoint = segments[length - 1].currentPoint;\n var tangent = segments[length - 1].endTangent;\n result = [];\n if (tangent) {\n result.push([endPoint[0] - tangent[0], endPoint[1] - tangent[1]]);\n result.push([endPoint[0], endPoint[1]]);\n } else {\n result.push([startPoint[0], startPoint[1]]);\n result.push([endPoint[0], endPoint[1]]);\n }\n }\n return result;\n };\n return Path;\n}(ShapeBase);\nexport default Path;","import inLine from './line';\nexport default function inPolyline(points, lineWidth, x, y, isClose) {\n var count = points.length;\n if (count < 2) {\n return false;\n }\n for (var i = 0; i < count - 1; i++) {\n var x1 = points[i][0];\n var y1 = points[i][1];\n var x2 = points[i + 1][0];\n var y2 = points[i + 1][1];\n if (inLine(x1, y1, x2, y2, lineWidth, x, y)) {\n return true;\n }\n }\n // 如果封闭,则计算起始点和结束点的边\n if (isClose) {\n var first = points[0];\n var last = points[count - 1];\n if (inLine(first[0], first[1], last[0], last[1], lineWidth, x, y)) {\n return true;\n }\n }\n return false;\n}","/**\n * @fileoverview 多边形\n * @author dxq613@gmail.com\n */\nimport { __extends } from \"tslib\";\nimport ShapeBase from './base';\nimport inPolyline from '../util/in-stroke/polyline';\nimport isInPolygon from '../util/in-path/polygon';\nvar Polygon = /** @class */function (_super) {\n __extends(Polygon, _super);\n function Polygon() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Polygon.prototype.isInStrokeOrPath = function (x, y, isStroke, isFill, lineWidth) {\n var points = this.attr().points;\n var isHit = false;\n if (isStroke) {\n isHit = inPolyline(points, lineWidth, x, y, true);\n }\n if (!isHit && isFill) {\n isHit = isInPolygon(points, x, y); // isPointInPath(shape, x, y);\n }\n\n return isHit;\n };\n Polygon.prototype.createPath = function (context) {\n var attrs = this.attr();\n var points = attrs.points;\n if (points.length < 2) {\n return;\n }\n context.beginPath();\n for (var i = 0; i < points.length; i++) {\n var point = points[i];\n if (i === 0) {\n context.moveTo(point[0], point[1]);\n } else {\n context.lineTo(point[0], point[1]);\n }\n }\n context.closePath();\n };\n return Polygon;\n}(ShapeBase);\nexport default Polygon;","import { __assign, __extends } from \"tslib\";\nimport { Line as LineUtil } from '@antv/g-math';\nimport { Polyline as PolylineUtil } from '@antv/g-math';\nimport { each, isNil } from '@antv/util';\nimport ShapeBase from './base';\nimport inPolyline from '../util/in-stroke/polyline';\nimport * as ArrowUtil from '../util/arrow';\nvar PolyLine = /** @class */function (_super) {\n __extends(PolyLine, _super);\n function PolyLine() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PolyLine.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return __assign(__assign({}, attrs), {\n startArrow: false,\n endArrow: false\n });\n };\n PolyLine.prototype.initAttrs = function (attrs) {\n this.setArrow();\n };\n // 更新属性时,检测是否更改了 points\n PolyLine.prototype.onAttrChange = function (name, value, originValue) {\n _super.prototype.onAttrChange.call(this, name, value, originValue);\n this.setArrow();\n if (['points'].indexOf(name) !== -1) {\n this._resetCache();\n }\n };\n PolyLine.prototype._resetCache = function () {\n this.set('totalLength', null);\n this.set('tCache', null);\n };\n PolyLine.prototype.setArrow = function () {\n var attrs = this.attr();\n var _a = this.attrs,\n points = _a.points,\n startArrow = _a.startArrow,\n endArrow = _a.endArrow;\n var length = points.length;\n var x1 = points[0][0];\n var y1 = points[0][1];\n var x2 = points[length - 1][0];\n var y2 = points[length - 1][1];\n if (startArrow) {\n ArrowUtil.addStartArrow(this, attrs, points[1][0], points[1][1], x1, y1);\n }\n if (endArrow) {\n ArrowUtil.addEndArrow(this, attrs, points[length - 2][0], points[length - 2][1], x2, y2);\n }\n };\n // 不允许 fill\n PolyLine.prototype.isFill = function () {\n return false;\n };\n PolyLine.prototype.isInStrokeOrPath = function (x, y, isStroke, isFill, lineWidth) {\n // 没有设置 stroke 不能被拾取, 没有线宽不能被拾取\n if (!isStroke || !lineWidth) {\n return false;\n }\n var points = this.attr().points;\n return inPolyline(points, lineWidth, x, y, false);\n };\n // 始终填充\n PolyLine.prototype.isStroke = function () {\n return true;\n };\n PolyLine.prototype.createPath = function (context) {\n var _a = this.attr(),\n points = _a.points,\n startArrow = _a.startArrow,\n endArrow = _a.endArrow;\n var length = points.length;\n if (points.length < 2) {\n return;\n }\n var x1 = points[0][0];\n var y1 = points[0][1];\n var x2 = points[length - 1][0];\n var y2 = points[length - 1][1];\n // 如果定义了箭头,并且是自定义箭头,线条相应缩进\n if (startArrow && startArrow.d) {\n var distance = ArrowUtil.getShortenOffset(x1, y1, points[1][0], points[1][1], startArrow.d);\n x1 += distance.dx;\n y1 += distance.dy;\n }\n if (endArrow && endArrow.d) {\n var distance = ArrowUtil.getShortenOffset(points[length - 2][0], points[length - 2][1], x2, y2, endArrow.d);\n x2 -= distance.dx;\n y2 -= distance.dy;\n }\n context.beginPath();\n context.moveTo(x1, y1);\n for (var i = 0; i < length - 1; i++) {\n var point = points[i];\n context.lineTo(point[0], point[1]);\n }\n context.lineTo(x2, y2);\n };\n PolyLine.prototype.afterDrawPath = function (context) {\n var startArrowShape = this.get('startArrowShape');\n var endArrowShape = this.get('endArrowShape');\n if (startArrowShape) {\n startArrowShape.draw(context);\n }\n if (endArrowShape) {\n endArrowShape.draw(context);\n }\n };\n /**\n * Get length of polyline\n * @return {number} length\n */\n PolyLine.prototype.getTotalLength = function () {\n var points = this.attr().points;\n // get totalLength from cache\n var totalLength = this.get('totalLength');\n if (!isNil(totalLength)) {\n return totalLength;\n }\n this.set('totalLength', PolylineUtil.length(points));\n return this.get('totalLength');\n };\n /**\n * Get point according to ratio\n * @param {number} ratio\n * @return {Point} point\n */\n PolyLine.prototype.getPoint = function (ratio) {\n var points = this.attr().points;\n // get tCache from cache\n var tCache = this.get('tCache');\n if (!tCache) {\n this._setTcache();\n tCache = this.get('tCache');\n }\n var subt;\n var index;\n each(tCache, function (v, i) {\n if (ratio >= v[0] && ratio <= v[1]) {\n subt = (ratio - v[0]) / (v[1] - v[0]);\n index = i;\n }\n });\n return LineUtil.pointAt(points[index][0], points[index][1], points[index + 1][0], points[index + 1][1], subt);\n };\n PolyLine.prototype._setTcache = function () {\n var points = this.attr().points;\n if (!points || points.length === 0) {\n return;\n }\n var totalLength = this.getTotalLength();\n if (totalLength <= 0) {\n return;\n }\n var tempLength = 0;\n var tCache = [];\n var segmentT;\n var segmentL;\n each(points, function (p, i) {\n if (points[i + 1]) {\n segmentT = [];\n segmentT[0] = tempLength / totalLength;\n segmentL = LineUtil.length(p[0], p[1], points[i + 1][0], points[i + 1][1]);\n tempLength += segmentL;\n segmentT[1] = tempLength / totalLength;\n tCache.push(segmentT);\n }\n });\n this.set('tCache', tCache);\n };\n /**\n * Get start tangent vector\n * @return {Array}\n */\n PolyLine.prototype.getStartTangent = function () {\n var points = this.attr().points;\n var result = [];\n result.push([points[1][0], points[1][1]]);\n result.push([points[0][0], points[0][1]]);\n return result;\n };\n /**\n * Get end tangent vector\n * @return {Array}\n */\n PolyLine.prototype.getEndTangent = function () {\n var points = this.attr().points;\n var l = points.length - 1;\n var result = [];\n result.push([points[l - 1][0], points[l - 1][1]]);\n result.push([points[l][0], points[l][1]]);\n return result;\n };\n return PolyLine;\n}(ShapeBase);\nexport default PolyLine;","/**\n * @fileoverview 矩形\n * @author dxq613@gmail.com\n */\nimport { __assign, __extends } from \"tslib\";\nimport ShapeBase from './base';\nimport { parseRadius } from '../util/parse';\nimport { inBox } from '../util/util';\nimport inRect from '../util/in-stroke/rect';\nimport inRectWithRadius from '../util/in-stroke/rect-radius';\nimport isPointInPath from '../util/in-path/point-in-path';\nvar Rect = /** @class */function (_super) {\n __extends(Rect, _super);\n function Rect() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Rect.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return __assign(__assign({}, attrs), {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n radius: 0\n });\n };\n Rect.prototype.isInStrokeOrPath = function (x, y, isStroke, isFill, lineWidth) {\n var attrs = this.attr();\n var minX = attrs.x;\n var minY = attrs.y;\n var width = attrs.width;\n var height = attrs.height;\n var radius = attrs.radius;\n // 无圆角时的策略\n if (!radius) {\n var halfWidth = lineWidth / 2;\n // 同时填充和带有边框\n if (isFill && isStroke) {\n return inBox(minX - halfWidth, minY - halfWidth, width + halfWidth, height + halfWidth, x, y);\n }\n // 仅填充\n if (isFill) {\n return inBox(minX, minY, width, height, x, y);\n }\n if (isStroke) {\n return inRect(minX, minY, width, height, lineWidth, x, y);\n }\n } else {\n var isHit = false;\n if (isStroke) {\n isHit = inRectWithRadius(minX, minY, width, height, radius, lineWidth, x, y);\n }\n // 仅填充时带有圆角的矩形直接通过图形拾取\n // 以后可以改成纯数学的近似拾取,将圆弧切割成多边形\n if (!isHit && isFill) {\n isHit = isPointInPath(this, x, y);\n }\n return isHit;\n }\n };\n Rect.prototype.createPath = function (context) {\n var attrs = this.attr();\n var x = attrs.x;\n var y = attrs.y;\n var width = attrs.width;\n var height = attrs.height;\n var radius = attrs.radius;\n context.beginPath();\n if (radius === 0) {\n // 改成原生的rect方法\n context.rect(x, y, width, height);\n } else {\n var _a = parseRadius(radius),\n r1 = _a[0],\n r2 = _a[1],\n r3 = _a[2],\n r4 = _a[3];\n context.moveTo(x + r1, y);\n context.lineTo(x + width - r2, y);\n r2 !== 0 && context.arc(x + width - r2, y + r2, r2, -Math.PI / 2, 0);\n context.lineTo(x + width, y + height - r3);\n r3 !== 0 && context.arc(x + width - r3, y + height - r3, r3, 0, Math.PI / 2);\n context.lineTo(x + r4, y + height);\n r4 !== 0 && context.arc(x + r4, y + height - r4, r4, Math.PI / 2, Math.PI);\n context.lineTo(x, y + r1);\n r1 !== 0 && context.arc(x + r1, y + r1, r1, Math.PI, Math.PI * 1.5);\n context.closePath();\n }\n };\n return Rect;\n}(ShapeBase);\nexport default Rect;","import inLine from './line';\nimport inArc from './arc';\nexport default function rectWithRadius(minX, minY, width, height, radius, lineWidth, x, y) {\n var halfWidth = lineWidth / 2;\n return inLine(minX + radius, minY, minX + width - radius, minY, lineWidth, x, y) || inLine(minX + width, minY + radius, minX + width, minY + height - radius, lineWidth, x, y) || inLine(minX + width - radius, minY + height, minX + radius, minY + height, lineWidth, x, y) || inLine(minX, minY + height - radius, minX, minY + radius, lineWidth, x, y) || inArc(minX + width - radius, minY + radius, radius, 1.5 * Math.PI, 2 * Math.PI, lineWidth, x, y) || inArc(minX + width - radius, minY + height - radius, radius, 0, 0.5 * Math.PI, lineWidth, x, y) || inArc(minX + radius, minY + height - radius, radius, 0.5 * Math.PI, Math.PI, lineWidth, x, y) || inArc(minX + radius, minY + radius, radius, Math.PI, 1.5 * Math.PI, lineWidth, x, y);\n}","import { inBox } from '../util';\nexport default function inRect(minX, minY, width, height, lineWidth, x, y) {\n var halfWidth = lineWidth / 2;\n // 将四个边看做矩形来检测,比边的检测算法要快\n return inBox(minX - halfWidth, minY - halfWidth, width, lineWidth, x, y) ||\n // 上边\n inBox(minX + width - halfWidth, minY - halfWidth, lineWidth, height, x, y) ||\n // 右边\n inBox(minX + halfWidth, minY + height - halfWidth, width, lineWidth, x, y) ||\n // 下边\n inBox(minX - halfWidth, minY + halfWidth, lineWidth, height, x, y); // 左边\n}","/**\n * @fileoverview 文本\n * @author dxq613@gmail.com\n */\nimport { __assign, __extends } from \"tslib\";\nimport ShapeBase from './base';\nimport { isNil, isString, each } from '../util/util';\nimport { getTextHeight, assembleFont } from '@antv/g-base';\nvar Text = /** @class */function (_super) {\n __extends(Text, _super);\n function Text() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // 默认文本属性\n Text.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return __assign(__assign({}, attrs), {\n x: 0,\n y: 0,\n text: null,\n fontSize: 12,\n fontFamily: 'sans-serif',\n fontStyle: 'normal',\n fontWeight: 'normal',\n fontVariant: 'normal',\n textAlign: 'start',\n textBaseline: 'bottom'\n });\n };\n // 仅仅使用包围盒检测来进行拾取\n Text.prototype.isOnlyHitBox = function () {\n return true;\n };\n // 初始化时组合 font,同时判断 text 是否换行\n Text.prototype.initAttrs = function (attrs) {\n this._assembleFont();\n if (attrs.text) {\n this._setText(attrs.text);\n }\n };\n // 组装字体\n Text.prototype._assembleFont = function () {\n var attrs = this.attrs;\n attrs.font = assembleFont(attrs);\n };\n // 如果文本换行,则缓存数组\n Text.prototype._setText = function (text) {\n var textArr = null;\n if (isString(text) && text.indexOf('\\n') !== -1) {\n textArr = text.split('\\n');\n }\n this.set('textArr', textArr);\n };\n // 更新属性时,检测是否更改了 font、text\n Text.prototype.onAttrChange = function (name, value, originValue) {\n _super.prototype.onAttrChange.call(this, name, value, originValue);\n if (name.startsWith('font')) {\n this._assembleFont();\n }\n if (name === 'text') {\n this._setText(value);\n }\n };\n // 这个方法在 text 时没有可以做的事情,如果要支持文字背景时可以考虑\n // createPath(context) {\n // }\n // 如果文本多行,需要获取文本间距\n Text.prototype._getSpaceingY = function () {\n var attrs = this.attrs;\n var lineHeight = attrs.lineHeight;\n var fontSize = attrs.fontSize * 1;\n return lineHeight ? lineHeight - fontSize : fontSize * 0.14;\n };\n // 绘制文本,考虑多行的场景\n Text.prototype._drawTextArr = function (context, textArr, isFill) {\n var attrs = this.attrs;\n var textBaseline = attrs.textBaseline;\n var x = attrs.x;\n var y = attrs.y;\n var fontSize = attrs.fontSize * 1;\n var spaceingY = this._getSpaceingY();\n var height = getTextHeight(attrs.text, attrs.fontSize, attrs.lineHeight);\n var subY;\n each(textArr, function (subText, index) {\n subY = y + index * (spaceingY + fontSize) - height + fontSize; // bottom;\n if (textBaseline === 'middle') subY += height - fontSize - (height - fontSize) / 2;\n if (textBaseline === 'top') subY += height - fontSize;\n if (!isNil(subText)) {\n if (isFill) {\n context.fillText(subText, x, subY);\n } else {\n context.strokeText(subText, x, subY);\n }\n }\n });\n };\n // 绘制文本,同时考虑填充和绘制边框\n Text.prototype._drawText = function (context, isFill) {\n var attrs = this.attr();\n var x = attrs.x;\n var y = attrs.y;\n var textArr = this.get('textArr');\n if (textArr) {\n this._drawTextArr(context, textArr, isFill);\n } else {\n var text = attrs.text;\n if (!isNil(text)) {\n if (isFill) {\n context.fillText(text, x, y);\n } else {\n context.strokeText(text, x, y);\n }\n }\n }\n };\n // 复写绘制和填充的逻辑:对于文本,应该先绘制边框,再进行填充\n Text.prototype.strokeAndFill = function (context) {\n var _a = this.attrs,\n lineWidth = _a.lineWidth,\n opacity = _a.opacity,\n strokeOpacity = _a.strokeOpacity,\n fillOpacity = _a.fillOpacity;\n if (this.isStroke()) {\n if (lineWidth > 0) {\n if (!isNil(strokeOpacity) && strokeOpacity !== 1) {\n context.globalAlpha = opacity;\n }\n this.stroke(context);\n }\n }\n if (this.isFill()) {\n if (!isNil(fillOpacity) && fillOpacity !== 1) {\n context.globalAlpha = fillOpacity;\n this.fill(context);\n context.globalAlpha = opacity;\n } else {\n this.fill(context);\n }\n }\n this.afterDrawPath(context);\n };\n // 复写填充逻辑\n Text.prototype.fill = function (context) {\n this._drawText(context, true);\n };\n // 复写绘制边框的逻辑\n Text.prototype.stroke = function (context) {\n this._drawText(context, false);\n };\n return Text;\n}(ShapeBase);\nexport default Text;","import { isAllowCapture, multiplyVec2, invert } from '@antv/g-base';\nfunction invertFromMatrix(v, matrix) {\n if (matrix) {\n var invertMatrix = invert(matrix);\n return multiplyVec2(invertMatrix, v);\n }\n return v;\n}\nfunction getRefXY(element, x, y) {\n // @ts-ignore\n var totalMatrix = element.getTotalMatrix();\n if (totalMatrix) {\n var _a = invertFromMatrix([x, y, 1], totalMatrix),\n refX = _a[0],\n refY = _a[1];\n return [refX, refY];\n }\n return [x, y];\n}\n// 拾取前的检测,只有通过检测才能继续拾取\nfunction preTest(element, x, y) {\n // @ts-ignore\n if (element.isCanvas && element.isCanvas()) {\n return true;\n }\n // 不允许被拾取,则返回 null\n // @ts-ignore\n if (!isAllowCapture(element) || element.cfg.isInView === false) {\n return false;\n }\n if (element.cfg.clipShape) {\n // 如果存在 clip\n var _a = getRefXY(element, x, y),\n refX = _a[0],\n refY = _a[1];\n if (element.isClipped(refX, refY)) {\n return false;\n }\n }\n // @ts-ignore ,这个地方调用过于频繁\n var bbox = element.cfg.cacheCanvasBBox || element.getCanvasBBox();\n // 如果没有缓存 bbox,则说明不可见\n // 注释掉的这段可能会加速拾取,上面的语句改写成 const bbox = element.cfg.cacheCanvasBBox;\n // 这时候的拾取假设图形/分组在上一次绘制都在视窗内,但是上面已经判定了 isInView 所以意义不大\n // 现在还调用 element.getCanvasBBox(); 一个很大的原因是便于单元测试\n // if (!bbox) {\n // return false;\n // }\n if (!(x >= bbox.minX && x <= bbox.maxX && y >= bbox.minY && y <= bbox.maxY)) {\n return false;\n }\n return true;\n}\n// 这个方法复写了 g-base 的 getShape\nexport function getShape(container, x, y) {\n // 没有通过检测,则返回 null\n if (!preTest(container, x, y)) {\n return null;\n }\n var shape = null;\n var children = container.getChildren();\n var count = children.length;\n for (var i = count - 1; i >= 0; i--) {\n var child = children[i];\n if (child.isGroup()) {\n shape = getShape(child, x, y);\n } else if (preTest(child, x, y)) {\n var curShape = child;\n var _a = getRefXY(child, x, y),\n refX = _a[0],\n refY = _a[1];\n // @ts-ignore\n if (curShape.isInShape(refX, refY)) {\n shape = child;\n }\n }\n if (shape) {\n break;\n }\n }\n return shape;\n}","import { __extends } from \"tslib\";\nimport { AbstractCanvas } from '@antv/g-base';\nimport { getShape } from './util/hit';\nimport * as Shape from './shape';\nimport Group from './group';\nimport { each, getPixelRatio, requestAnimationFrame, clearAnimationFrame } from './util/util';\nimport { applyAttrsToContext, drawChildren, getMergedRegion, mergeView, checkRefresh, clearChanged } from './util/draw';\nvar Canvas = /** @class */function (_super) {\n __extends(Canvas, _super);\n function Canvas() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Canvas.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n // 设置渲染引擎为 canvas,只读属性\n cfg['renderer'] = 'canvas';\n // 是否自动绘制,不需要用户调用 draw 方法\n cfg['autoDraw'] = true;\n // 是否允许局部刷新图表\n cfg['localRefresh'] = true;\n cfg['refreshElements'] = [];\n // 是否在视图内自动裁剪\n cfg['clipView'] = true;\n // 是否使用快速拾取的方案,默认为 false,上层可以打开\n cfg['quickHit'] = false;\n return cfg;\n };\n /**\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n Canvas.prototype.onCanvasChange = function (changeType) {\n /**\n * 触发画布更新的三种 changeType\n * 1. attr: 修改画布的绘图属性\n * 2. sort: 画布排序,图形的层次会发生变化\n * 3. changeSize: 改变画布大小\n */\n if (changeType === 'attr' || changeType === 'sort' || changeType === 'changeSize') {\n this.set('refreshElements', [this]);\n this.draw();\n }\n };\n Canvas.prototype.getShapeBase = function () {\n return Shape;\n };\n Canvas.prototype.getGroupBase = function () {\n return Group;\n };\n /**\n * 获取屏幕像素比\n */\n Canvas.prototype.getPixelRatio = function () {\n var pixelRatio = this.get('pixelRatio') || getPixelRatio();\n // 不足 1 的取 1,超出 1 的取整\n return pixelRatio >= 1 ? Math.ceil(pixelRatio) : 1;\n };\n Canvas.prototype.getViewRange = function () {\n return {\n minX: 0,\n minY: 0,\n maxX: this.cfg.width,\n maxY: this.cfg.height\n };\n };\n // 复写基类的方法生成标签\n Canvas.prototype.createDom = function () {\n var element = document.createElement('canvas');\n var context = element.getContext('2d');\n // 缓存 context 对象\n this.set('context', context);\n return element;\n };\n Canvas.prototype.setDOMSize = function (width, height) {\n _super.prototype.setDOMSize.call(this, width, height);\n var context = this.get('context');\n var el = this.get('el');\n var pixelRatio = this.getPixelRatio();\n el.width = pixelRatio * width;\n el.height = pixelRatio * height;\n // 设置 canvas 元素的宽度和高度,会重置缩放,因此 context.scale 需要在每次设置宽、高后调用\n if (pixelRatio > 1) {\n context.scale(pixelRatio, pixelRatio);\n }\n };\n // 复写基类方法\n Canvas.prototype.clear = function () {\n _super.prototype.clear.call(this);\n this._clearFrame(); // 需要清理掉延迟绘制的帧\n var context = this.get('context');\n var element = this.get('el');\n context.clearRect(0, 0, element.width, element.height);\n };\n Canvas.prototype.getShape = function (x, y) {\n var shape;\n if (this.get('quickHit')) {\n shape = getShape(this, x, y);\n } else {\n shape = _super.prototype.getShape.call(this, x, y, null);\n }\n return shape;\n };\n // 对绘制区域边缘取整,避免浮点数问题\n Canvas.prototype._getRefreshRegion = function () {\n var elements = this.get('refreshElements');\n var viewRegion = this.getViewRange();\n var region;\n // 如果是当前画布整体发生了变化,则直接重绘整个画布\n if (elements.length && elements[0] === this) {\n region = viewRegion;\n } else {\n region = getMergedRegion(elements);\n if (region) {\n region.minX = Math.floor(region.minX);\n region.minY = Math.floor(region.minY);\n region.maxX = Math.ceil(region.maxX);\n region.maxY = Math.ceil(region.maxY);\n region.maxY += 1; // 在很多环境下字体的高低会不一致,附加一像素,避免残影\n var clipView = this.get('clipView');\n // 自动裁剪不在 view 内的区域\n if (clipView) {\n region = mergeView(region, viewRegion);\n }\n }\n }\n return region;\n };\n /**\n * 刷新图形元素,这里仅仅是放入队列,下次绘制时进行绘制\n * @param {IElement} element 图形元素\n */\n Canvas.prototype.refreshElement = function (element) {\n var refreshElements = this.get('refreshElements');\n refreshElements.push(element);\n // if (this.get('autoDraw')) {\n // this._startDraw();\n // }\n };\n // 清理还在进行的绘制\n Canvas.prototype._clearFrame = function () {\n var drawFrame = this.get('drawFrame');\n if (drawFrame) {\n // 如果全部渲染时,存在局部渲染,则抛弃掉局部渲染\n clearAnimationFrame(drawFrame);\n this.set('drawFrame', null);\n this.set('refreshElements', []);\n }\n };\n // 手工调用绘制接口\n Canvas.prototype.draw = function () {\n var drawFrame = this.get('drawFrame');\n if (this.get('autoDraw') && drawFrame) {\n return;\n }\n this._startDraw();\n };\n // 绘制所有图形\n Canvas.prototype._drawAll = function () {\n var context = this.get('context');\n var element = this.get('el');\n var children = this.getChildren();\n context.clearRect(0, 0, element.width, element.height);\n applyAttrsToContext(context, this);\n drawChildren(context, children);\n // 对于 https://github.com/antvis/g/issues/422 的场景,全局渲染的模式下也会记录更新的元素队列,因此全局渲染完后也需要置空\n this.set('refreshElements', []);\n };\n // 绘制局部\n Canvas.prototype._drawRegion = function () {\n var context = this.get('context');\n var refreshElements = this.get('refreshElements');\n var children = this.getChildren();\n var region = this._getRefreshRegion();\n // 需要注意可能没有 region 的场景\n // 一般发生在设置了 localRefresh ,在没有图形发生变化的情况下,用户调用了 draw\n if (region) {\n // 清理指定区域\n context.clearRect(region.minX, region.minY, region.maxX - region.minX, region.maxY - region.minY);\n // 保存上下文,设置 clip\n context.save();\n context.beginPath();\n context.rect(region.minX, region.minY, region.maxX - region.minX, region.maxY - region.minY);\n context.clip();\n applyAttrsToContext(context, this);\n // 确认更新的元素,这个优化可以提升 10 倍左右的性能,10W 个带有 group 的节点,局部渲染会从 90ms 下降到 5-6 ms\n checkRefresh(this, children, region);\n // 绘制子元素\n drawChildren(context, children, region);\n context.restore();\n } else if (refreshElements.length) {\n // 防止发生改变的 elements 没有 region 的场景,这会发生在多个情况下\n // 1. 空的 group\n // 2. 所有 elements 没有在绘图区域\n // 3. group 下面的 elements 隐藏掉\n // 如果不进行清理 hasChanged 的状态会不正确\n clearChanged(refreshElements);\n }\n each(refreshElements, function (element) {\n if (element.get('hasChanged')) {\n // 在视窗外的 Group 元素会加入到更新队列里,但实际却没有执行 draw() 逻辑,也就没有清除 hasChanged 标记\n // 即已经重绘完、但 hasChanged 标记没有清除的元素,需要统一清除掉。主要是 Group 存在问题,具体原因待排查\n element.set('hasChanged', false);\n }\n });\n this.set('refreshElements', []);\n };\n // 触发绘制\n Canvas.prototype._startDraw = function () {\n var _this = this;\n var drawFrame = this.get('drawFrame');\n if (!drawFrame) {\n drawFrame = requestAnimationFrame(function () {\n if (_this.get('localRefresh')) {\n _this._drawRegion();\n } else {\n _this._drawAll();\n }\n _this.set('drawFrame', null);\n });\n this.set('drawFrame', drawFrame);\n }\n };\n Canvas.prototype.skipDraw = function () {};\n Canvas.prototype.removeDom = function () {\n var el = this.get('el');\n // 需要清理 canvas 画布内容,否则ios下 创建的canvas垃圾未回收,导致Total canvas memory use exceeds问题\n // 相关问题列表\n // https://stackoverflow.com/questions/52532614/total-canvas-memory-use-exceeds-the-maximum-limit-safari-12\n // https://github.com/openlayers/openlayers/issues/9291\n el.width = 0;\n el.height = 0;\n el.parentNode.removeChild(el);\n };\n return Canvas;\n}(AbstractCanvas);\nexport default Canvas;","import * as Shape from './shape';\nexport * from '@antv/g-base';\nexport { default as Canvas } from './canvas';\nexport { default as Group } from './group';\nexport { Shape };\nexport { default as getArcParams } from './util/arc-params';\nexport var version = '0.5.12';","export var SHAPE_TO_TAGS = {\n rect: 'path',\n circle: 'circle',\n line: 'line',\n path: 'path',\n marker: 'path',\n text: 'text',\n polyline: 'polyline',\n polygon: 'polygon',\n image: 'image',\n ellipse: 'ellipse',\n dom: 'foreignObject'\n};\nexport var SVG_ATTR_MAP = {\n opacity: 'opacity',\n fillStyle: 'fill',\n fill: 'fill',\n fillOpacity: 'fill-opacity',\n strokeStyle: 'stroke',\n strokeOpacity: 'stroke-opacity',\n stroke: 'stroke',\n x: 'x',\n y: 'y',\n r: 'r',\n rx: 'rx',\n ry: 'ry',\n width: 'width',\n height: 'height',\n x1: 'x1',\n x2: 'x2',\n y1: 'y1',\n y2: 'y2',\n lineCap: 'stroke-linecap',\n lineJoin: 'stroke-linejoin',\n lineWidth: 'stroke-width',\n lineDash: 'stroke-dasharray',\n lineDashOffset: 'stroke-dashoffset',\n miterLimit: 'stroke-miterlimit',\n font: 'font',\n fontSize: 'font-size',\n fontStyle: 'font-style',\n fontVariant: 'font-variant',\n fontWeight: 'font-weight',\n fontFamily: 'font-family',\n startArrow: 'marker-start',\n endArrow: 'marker-end',\n path: 'd',\n class: 'class',\n id: 'id',\n style: 'style',\n preserveAspectRatio: 'preserveAspectRatio'\n};\nexport var EVENTS = ['click', 'mousedown', 'mouseup', 'dblclick', 'contextmenu', 'mouseenter', 'mouseleave', 'mouseover', 'mouseout', 'mousemove', 'wheel'];","import { toArray } from '@antv/util';\nimport { SHAPE_TO_TAGS } from '../constant';\n/**\n * 创建并返回图形的 svg 元素\n * @param type svg类型\n */\nexport function createSVGElement(type) {\n return document.createElementNS('http://www.w3.org/2000/svg', type);\n}\n/**\n * 创建并返回图形的 dom 元素\n * @param {IShape} shape 图形\n * @return {SVGElement}\n */\nexport function createDom(shape) {\n var type = SHAPE_TO_TAGS[shape.type];\n var parent = shape.getParent();\n if (!type) {\n throw new Error(\"the type \" + shape.type + \" is not supported by svg\");\n }\n var element = createSVGElement(type);\n if (shape.get('id')) {\n element.id = shape.get('id');\n }\n shape.set('el', element);\n shape.set('attrs', {});\n // 对于 defs 下的 dom 节点,parent 为空,通过 context 统一挂载到 defs 节点下\n if (parent) {\n var parentNode = parent.get('el');\n if (parentNode) {\n parentNode.appendChild(element);\n } else {\n // parentNode maybe null for group\n parentNode = parent.createDom();\n parent.set('el', parentNode);\n parentNode.appendChild(element);\n }\n }\n return element;\n}\n/**\n * 对 dom 元素进行排序\n * @param {IElement} element 元素\n * @param {sorter} function 排序函数\n */\nexport function sortDom(element, sorter) {\n var el = element.get('el');\n var childList = toArray(el.children).sort(sorter);\n // create empty fragment\n var fragment = document.createDocumentFragment();\n childList.forEach(function (child) {\n fragment.appendChild(child);\n });\n el.appendChild(fragment);\n}\n/**\n * 将 dom 元素移动到父元素下的指定位置\n * @param {SVGElement} element dom 元素\n * @param {number} targetIndex 目标位置(从 0 开始)\n */\nexport function moveTo(element, targetIndex) {\n var parentNode = element.parentNode;\n var siblings = Array.from(parentNode.childNodes).filter(\n // 要求为元素节点,且不能为 defs 节点\n function (node) {\n return node.nodeType === 1 && node.nodeName.toLowerCase() !== 'defs';\n });\n // 获取目标节点\n var target = siblings[targetIndex];\n var currentIndex = siblings.indexOf(element);\n // 如果目标节点存在\n if (target) {\n // 当前索引 > 目标索引,直接插入到目标节点之前即可\n if (currentIndex > targetIndex) {\n parentNode.insertBefore(element, target);\n } else if (currentIndex < targetIndex) {\n // 当前索引 < 目标索引\n // 获取目标节点的下一个节点\n var targetNext = siblings[targetIndex + 1];\n // 如果目标节点的下一个节点存在,插入到该节点之前\n if (targetNext) {\n parentNode.insertBefore(element, targetNext);\n } else {\n // 如果该节点不存在,则追加到末尾\n parentNode.appendChild(element);\n }\n }\n } else {\n parentNode.appendChild(element);\n }\n}","import { createDom } from './dom';\nexport function setShadow(model, context) {\n var el = model.cfg.el;\n var attrs = model.attr();\n var cfg = {\n dx: attrs.shadowOffsetX,\n dy: attrs.shadowOffsetY,\n blur: attrs.shadowBlur,\n color: attrs.shadowColor\n };\n if (!cfg.dx && !cfg.dy && !cfg.blur && !cfg.color) {\n el.removeAttribute('filter');\n } else {\n var id = context.find('filter', cfg);\n if (!id) {\n id = context.addShadow(cfg);\n }\n el.setAttribute('filter', \"url(#\" + id + \")\");\n }\n}\nexport function setTransform(model) {\n var matrix = model.attr().matrix;\n if (matrix) {\n var el = model.cfg.el;\n var transform = [];\n for (var i = 0; i < 9; i += 3) {\n transform.push(matrix[i] + \",\" + matrix[i + 1]);\n }\n transform = transform.join(',');\n if (transform.indexOf('NaN') === -1) {\n el.setAttribute('transform', \"matrix(\" + transform + \")\");\n } else {\n console.warn('invalid matrix:', matrix);\n }\n }\n}\nexport function setClip(model, context) {\n var clip = model.getClip();\n var el = model.get('el');\n if (!clip) {\n el.removeAttribute('clip-path');\n } else if (clip && !el.hasAttribute('clip-path')) {\n createDom(clip);\n clip.createPath(context);\n var id = context.addClip(clip);\n el.setAttribute('clip-path', \"url(#\" + id + \")\");\n }\n}","import { setTransform, setClip } from './svg';\nimport { sortDom, moveTo } from './dom';\nexport function drawChildren(context, children) {\n children.forEach(function (child) {\n child.draw(context);\n });\n}\n/**\n * 更新元素,包括 group 和 shape\n * @param {IElement} element SVG 元素\n * @param {ChangeType} changeType 更新类型\n */\nexport function refreshElement(element, changeType) {\n // 对于还没有挂载到画布下的元素,canvas 可能为空\n var canvas = element.get('canvas');\n // 只有挂载到画布下,才对元素进行实际渲染\n if (canvas && canvas.get('autoDraw')) {\n var context = canvas.get('context');\n var parent_1 = element.getParent();\n var parentChildren = parent_1 ? parent_1.getChildren() : [canvas];\n var el = element.get('el');\n if (changeType === 'remove') {\n var isClipShape = element.get('isClipShape');\n // 对于 clip,不仅需要将 clipShape 对于的 SVG 元素删除,还需要将上层的 clipPath 元素也删除\n if (isClipShape) {\n var clipPathEl = el && el.parentNode;\n var defsEl = clipPathEl && clipPathEl.parentNode;\n if (clipPathEl && defsEl) {\n defsEl.removeChild(clipPathEl);\n }\n } else if (el && el.parentNode) {\n el.parentNode.removeChild(el);\n }\n } else if (changeType === 'show') {\n el.setAttribute('visibility', 'visible');\n } else if (changeType === 'hide') {\n el.setAttribute('visibility', 'hidden');\n } else if (changeType === 'zIndex') {\n moveTo(el, parentChildren.indexOf(element));\n } else if (changeType === 'sort') {\n var children_1 = element.get('children');\n if (children_1 && children_1.length) {\n sortDom(element, function (a, b) {\n return children_1.indexOf(a) - children_1.indexOf(b) ? 1 : 0;\n });\n }\n } else if (changeType === 'clear') {\n // el maybe null for group\n if (el) {\n el.innerHTML = '';\n }\n } else if (changeType === 'matrix') {\n setTransform(element);\n } else if (changeType === 'clip') {\n setClip(element, context);\n } else if (changeType === 'attr') {\n // 已在 afterAttrsChange 进行了处理,此处 do nothing\n } else if (changeType === 'add') {\n element.draw(context);\n }\n }\n}","import { __extends } from \"tslib\";\nimport { AbstractGroup } from '@antv/g-base';\nimport { each } from '@antv/util';\nimport * as Shape from './shape';\nimport { drawChildren, refreshElement } from './util/draw';\nimport { setClip, setTransform } from './util/svg';\nimport { SVG_ATTR_MAP } from './constant';\nimport { createSVGElement } from './util/dom';\nvar Group = /** @class */function (_super) {\n __extends(Group, _super);\n function Group() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // SVG 中分组对应实体标签 \n Group.prototype.isEntityGroup = function () {\n return true;\n };\n Group.prototype.createDom = function () {\n var element = createSVGElement('g');\n this.set('el', element);\n var parent = this.getParent();\n if (parent) {\n var parentNode = parent.get('el');\n if (parentNode) {\n parentNode.appendChild(element);\n } else {\n // parentNode maybe null for group\n parentNode = parent.createDom();\n parent.set('el', parentNode);\n parentNode.appendChild(element);\n }\n }\n return element;\n };\n // 覆盖基类的 afterAttrsChange 方法\n Group.prototype.afterAttrsChange = function (targetAttrs) {\n _super.prototype.afterAttrsChange.call(this, targetAttrs);\n var canvas = this.get('canvas');\n // 只有挂载到画布下,才对元素进行实际渲染\n if (canvas && canvas.get('autoDraw')) {\n var context = canvas.get('context');\n this.createPath(context, targetAttrs);\n }\n };\n /**\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n Group.prototype.onCanvasChange = function (changeType) {\n refreshElement(this, changeType);\n };\n Group.prototype.getShapeBase = function () {\n return Shape;\n };\n Group.prototype.getGroupBase = function () {\n return Group;\n };\n Group.prototype.draw = function (context) {\n var children = this.getChildren();\n var el = this.get('el');\n if (this.get('destroyed')) {\n if (el) {\n el.parentNode.removeChild(el);\n }\n } else {\n if (!el) {\n this.createDom();\n }\n setClip(this, context);\n this.createPath(context);\n if (children.length) {\n drawChildren(context, children);\n }\n }\n };\n /**\n * 绘制分组的路径\n * @param {Defs} context 上下文\n * @param {ShapeAttrs} targetAttrs 渲染的目标属性\n */\n Group.prototype.createPath = function (context, targetAttrs) {\n var attrs = this.attr();\n var el = this.get('el');\n each(targetAttrs || attrs, function (value, attr) {\n if (SVG_ATTR_MAP[attr]) {\n el.setAttribute(SVG_ATTR_MAP[attr], value);\n }\n });\n setTransform(this);\n };\n return Group;\n}(AbstractGroup);\nexport default Group;","import { __assign, __extends } from \"tslib\";\nimport { AbstractShape } from '@antv/g-base';\nimport { setShadow, setTransform, setClip } from '../util/svg';\nimport { createDom } from '../util/dom';\nimport { refreshElement } from '../util/draw';\nimport { SVG_ATTR_MAP } from '../constant';\nimport * as Shape from './index';\nimport Group from '../group';\nimport { getBBoxMethod } from '@antv/g-base';\nvar ShapeBase = /** @class */function (_super) {\n __extends(ShapeBase, _super);\n function ShapeBase() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'svg';\n _this.canFill = false;\n _this.canStroke = false;\n return _this;\n }\n ShapeBase.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n // 设置默认值\n return __assign(__assign({}, attrs), {\n lineWidth: 1,\n lineAppendWidth: 0,\n strokeOpacity: 1,\n fillOpacity: 1\n });\n };\n // 覆盖基类的 afterAttrsChange 方法\n ShapeBase.prototype.afterAttrsChange = function (targetAttrs) {\n _super.prototype.afterAttrsChange.call(this, targetAttrs);\n var canvas = this.get('canvas');\n // 只有挂载到画布下,才对元素进行实际渲染\n if (canvas && canvas.get('autoDraw')) {\n var context = canvas.get('context');\n this.draw(context, targetAttrs);\n }\n };\n ShapeBase.prototype.getShapeBase = function () {\n return Shape;\n };\n ShapeBase.prototype.getGroupBase = function () {\n return Group;\n };\n /**\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n ShapeBase.prototype.onCanvasChange = function (changeType) {\n refreshElement(this, changeType);\n };\n ShapeBase.prototype.calculateBBox = function () {\n var el = this.get('el');\n var bbox = null;\n // 包围盒计算依赖于绘制,如果还没有生成对应的 Dom 元素,则包围盒的长宽均为 0\n if (el) {\n bbox = el.getBBox();\n } else {\n var bboxMethod = getBBoxMethod(this.get('type'));\n if (bboxMethod) {\n bbox = bboxMethod(this);\n }\n }\n if (bbox) {\n var x = bbox.x,\n y = bbox.y,\n width = bbox.width,\n height = bbox.height;\n var lineWidth = this.getHitLineWidth();\n var halfWidth = lineWidth / 2;\n var minX = x - halfWidth;\n var minY = y - halfWidth;\n var maxX = x + width + halfWidth;\n var maxY = y + height + halfWidth;\n return {\n x: minX,\n y: minY,\n minX: minX,\n minY: minY,\n maxX: maxX,\n maxY: maxY,\n width: width + lineWidth,\n height: height + lineWidth\n };\n }\n return {\n x: 0,\n y: 0,\n minX: 0,\n minY: 0,\n maxX: 0,\n maxY: 0,\n width: 0,\n height: 0\n };\n };\n ShapeBase.prototype.isFill = function () {\n var _a = this.attr(),\n fill = _a.fill,\n fillStyle = _a.fillStyle;\n return (fill || fillStyle || this.isClipShape()) && this.canFill;\n };\n ShapeBase.prototype.isStroke = function () {\n var _a = this.attr(),\n stroke = _a.stroke,\n strokeStyle = _a.strokeStyle;\n return (stroke || strokeStyle) && this.canStroke;\n };\n ShapeBase.prototype.draw = function (context, targetAttrs) {\n var el = this.get('el');\n if (this.get('destroyed')) {\n if (el) {\n el.parentNode.removeChild(el);\n }\n } else {\n if (!el) {\n createDom(this);\n }\n setClip(this, context);\n this.createPath(context, targetAttrs);\n this.shadow(context, targetAttrs);\n this.strokeAndFill(context, targetAttrs);\n this.transform(targetAttrs);\n }\n };\n /**\n * @protected\n * 绘制图形的路径\n * @param {Defs} context 上下文\n * @param {ShapeAttrs} targetAttrs 渲染的目标属性\n */\n ShapeBase.prototype.createPath = function (context, targetAttrs) {};\n // stroke and fill\n ShapeBase.prototype.strokeAndFill = function (context, targetAttrs) {\n var attrs = targetAttrs || this.attr();\n var fill = attrs.fill,\n fillStyle = attrs.fillStyle,\n stroke = attrs.stroke,\n strokeStyle = attrs.strokeStyle,\n fillOpacity = attrs.fillOpacity,\n strokeOpacity = attrs.strokeOpacity,\n lineWidth = attrs.lineWidth;\n var el = this.get('el');\n if (this.canFill) {\n // 初次渲染和更新渲染的逻辑有所不同: 初次渲染值为空时,需要设置为 none,否则就会是黑色,而更新渲染则不需要\n if (!targetAttrs) {\n this._setColor(context, 'fill', fill || fillStyle);\n } else if ('fill' in attrs) {\n this._setColor(context, 'fill', fill);\n } else if ('fillStyle' in attrs) {\n // compatible with fillStyle\n this._setColor(context, 'fill', fillStyle);\n }\n if (fillOpacity) {\n el.setAttribute(SVG_ATTR_MAP['fillOpacity'], fillOpacity);\n }\n }\n if (this.canStroke && lineWidth > 0) {\n if (!targetAttrs) {\n this._setColor(context, 'stroke', stroke || strokeStyle);\n } else if ('stroke' in attrs) {\n this._setColor(context, 'stroke', stroke);\n } else if ('strokeStyle' in attrs) {\n // compatible with strokeStyle\n this._setColor(context, 'stroke', strokeStyle);\n }\n if (strokeOpacity) {\n el.setAttribute(SVG_ATTR_MAP['strokeOpacity'], strokeOpacity);\n }\n if (lineWidth) {\n el.setAttribute(SVG_ATTR_MAP['lineWidth'], lineWidth);\n }\n }\n };\n ShapeBase.prototype._setColor = function (context, attr, value) {\n var el = this.get('el');\n if (!value) {\n // need to set `none` to avoid default value\n el.setAttribute(SVG_ATTR_MAP[attr], 'none');\n return;\n }\n value = value.trim();\n if (/^[r,R,L,l]{1}[\\s]*\\(/.test(value)) {\n var id = context.find('gradient', value);\n if (!id) {\n id = context.addGradient(value);\n }\n el.setAttribute(SVG_ATTR_MAP[attr], \"url(#\" + id + \")\");\n } else if (/^[p,P]{1}[\\s]*\\(/.test(value)) {\n var id = context.find('pattern', value);\n if (!id) {\n id = context.addPattern(value);\n }\n el.setAttribute(SVG_ATTR_MAP[attr], \"url(#\" + id + \")\");\n } else {\n el.setAttribute(SVG_ATTR_MAP[attr], value);\n }\n };\n ShapeBase.prototype.shadow = function (context, targetAttrs) {\n var attrs = this.attr();\n var _a = targetAttrs || attrs,\n shadowOffsetX = _a.shadowOffsetX,\n shadowOffsetY = _a.shadowOffsetY,\n shadowBlur = _a.shadowBlur,\n shadowColor = _a.shadowColor;\n if (shadowOffsetX || shadowOffsetY || shadowBlur || shadowColor) {\n setShadow(this, context);\n }\n };\n ShapeBase.prototype.transform = function (targetAttrs) {\n var attrs = this.attr();\n var matrix = (targetAttrs || attrs).matrix;\n if (matrix) {\n setTransform(this);\n }\n };\n ShapeBase.prototype.isInShape = function (refX, refY) {\n return this.isPointInPath(refX, refY);\n };\n ShapeBase.prototype.isPointInPath = function (refX, refY) {\n var el = this.get('el');\n var canvas = this.get('canvas');\n var bbox = canvas.get('el').getBoundingClientRect();\n var clientX = refX + bbox.left;\n var clientY = refY + bbox.top;\n var element = document.elementFromPoint(clientX, clientY);\n if (element && element.isEqualNode(el)) {\n return true;\n }\n return false;\n };\n /**\n * 获取线拾取的宽度\n * @returns {number} 线的拾取宽度\n */\n ShapeBase.prototype.getHitLineWidth = function () {\n var _a = this.attrs,\n lineWidth = _a.lineWidth,\n lineAppendWidth = _a.lineAppendWidth;\n if (this.isStroke()) {\n return lineWidth + lineAppendWidth;\n }\n return 0;\n };\n return ShapeBase;\n}(AbstractShape);\nexport default ShapeBase;","/**\n * @fileoverview circle\n * @author dengfuping_develop@163.com\n */\nimport { __assign, __extends } from \"tslib\";\nimport { each } from '@antv/util';\nimport { SVG_ATTR_MAP } from '../constant';\nimport ShapeBase from './base';\nvar Circle = /** @class */function (_super) {\n __extends(Circle, _super);\n function Circle() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'circle';\n _this.canFill = true;\n _this.canStroke = true;\n return _this;\n }\n Circle.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return __assign(__assign({}, attrs), {\n x: 0,\n y: 0,\n r: 0\n });\n };\n Circle.prototype.createPath = function (context, targetAttrs) {\n var attrs = this.attr();\n var el = this.get('el');\n each(targetAttrs || attrs, function (value, attr) {\n // 圆和椭圆的点坐标属性不是 x, y,而是 cx, cy\n if (attr === 'x' || attr === 'y') {\n el.setAttribute(\"c\" + attr, value);\n } else if (SVG_ATTR_MAP[attr]) {\n el.setAttribute(SVG_ATTR_MAP[attr], value);\n }\n });\n };\n return Circle;\n}(ShapeBase);\nexport default Circle;","/**\n * @fileoverview dom\n * @author dengfuping_develop@163.com\n */\nimport { __extends } from \"tslib\";\nimport { each } from '@antv/util';\nimport { SVG_ATTR_MAP } from '../constant';\nimport ShapeBase from './base';\nvar Dom = /** @class */function (_super) {\n __extends(Dom, _super);\n function Dom() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'dom';\n _this.canFill = false;\n _this.canStroke = false;\n return _this;\n }\n Dom.prototype.createPath = function (context, targetAttrs) {\n var attrs = this.attr();\n var el = this.get('el');\n each(targetAttrs || attrs, function (value, attr) {\n if (SVG_ATTR_MAP[attr]) {\n el.setAttribute(SVG_ATTR_MAP[attr], value);\n }\n });\n if (typeof attrs['html'] === 'function') {\n var element = attrs['html'].call(this, attrs);\n if (element instanceof Element || element instanceof HTMLDocument) {\n var children = el.childNodes;\n for (var i = children.length - 1; i >= 0; i--) {\n el.removeChild(children[i]);\n }\n el.appendChild(element); // append to el if it's an element\n } else {\n el.innerHTML = element; // set innerHTML\n }\n } else {\n el.innerHTML = attrs['html']; // set innerHTML\n }\n };\n\n return Dom;\n}(ShapeBase);\nexport default Dom;","/**\n * @fileoverview ellipse\n * @author dengfuping_develop@163.com\n */\nimport { __assign, __extends } from \"tslib\";\nimport { each } from '@antv/util';\nimport { SVG_ATTR_MAP } from '../constant';\nimport ShapeBase from './base';\nvar Ellipse = /** @class */function (_super) {\n __extends(Ellipse, _super);\n function Ellipse() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'ellipse';\n _this.canFill = true;\n _this.canStroke = true;\n return _this;\n }\n Ellipse.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return __assign(__assign({}, attrs), {\n x: 0,\n y: 0,\n rx: 0,\n ry: 0\n });\n };\n Ellipse.prototype.createPath = function (context, targetAttrs) {\n var attrs = this.attr();\n var el = this.get('el');\n each(targetAttrs || attrs, function (value, attr) {\n // 圆和椭圆的点坐标属性不是 x, y,而是 cx, cy\n if (attr === 'x' || attr === 'y') {\n el.setAttribute(\"c\" + attr, value);\n } else if (SVG_ATTR_MAP[attr]) {\n el.setAttribute(SVG_ATTR_MAP[attr], value);\n }\n });\n };\n return Ellipse;\n}(ShapeBase);\nexport default Ellipse;","/**\n * @fileoverview image\n * @author dengfuping_develop@163.com\n */\nimport { __assign, __extends } from \"tslib\";\nimport { each, isString } from '@antv/util';\nimport { SVG_ATTR_MAP } from '../constant';\nimport ShapeBase from './base';\nvar Image = /** @class */function (_super) {\n __extends(Image, _super);\n function Image() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'image';\n _this.canFill = false;\n _this.canStroke = false;\n return _this;\n }\n Image.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return __assign(__assign({}, attrs), {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n });\n };\n Image.prototype.createPath = function (context, targetAttrs) {\n var _this = this;\n var attrs = this.attr();\n var el = this.get('el');\n each(targetAttrs || attrs, function (value, attr) {\n if (attr === 'img') {\n _this._setImage(attrs.img);\n } else if (SVG_ATTR_MAP[attr]) {\n el.setAttribute(SVG_ATTR_MAP[attr], value);\n }\n });\n };\n Image.prototype.setAttr = function (name, value) {\n this.attrs[name] = value;\n if (name === 'img') {\n this._setImage(value);\n }\n };\n Image.prototype._setImage = function (img) {\n var attrs = this.attr();\n var el = this.get('el');\n if (isString(img)) {\n el.setAttribute('href', img);\n } else if (img instanceof window.Image) {\n if (!attrs.width) {\n el.setAttribute('width', img.width);\n this.attr('width', img.width);\n }\n if (!attrs.height) {\n el.setAttribute('height', img.height);\n this.attr('height', img.height);\n }\n el.setAttribute('href', img.src);\n } else if (img instanceof HTMLElement && isString(img.nodeName) && img.nodeName.toUpperCase() === 'CANVAS') {\n // @ts-ignore\n el.setAttribute('href', img.toDataURL());\n } else if (img instanceof ImageData) {\n var canvas = document.createElement('canvas');\n canvas.setAttribute('width', \"\" + img.width);\n canvas.setAttribute('height', \"\" + img.height);\n canvas.getContext('2d').putImageData(img, 0, 0);\n if (!attrs.width) {\n el.setAttribute('width', \"\" + img.width);\n this.attr('width', img.width);\n }\n if (!attrs.height) {\n el.setAttribute('height', \"\" + img.height);\n this.attr('height', img.height);\n }\n el.setAttribute('href', canvas.toDataURL());\n }\n };\n return Image;\n}(ShapeBase);\nexport default Image;","import { __assign, __extends } from \"tslib\";\n/**\n * @fileoverview line\n * @author dengfuping_develop@163.com\n */\nimport { Line as LineUtil } from '@antv/g-math';\nimport { each, isObject } from '@antv/util';\nimport { SVG_ATTR_MAP } from '../constant';\nimport ShapeBase from './base';\nvar Line = /** @class */function (_super) {\n __extends(Line, _super);\n function Line() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'line';\n _this.canFill = false;\n _this.canStroke = true;\n return _this;\n }\n Line.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return __assign(__assign({}, attrs), {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 0,\n startArrow: false,\n endArrow: false\n });\n };\n Line.prototype.createPath = function (context, targetAttrs) {\n var attrs = this.attr();\n var el = this.get('el');\n each(targetAttrs || attrs, function (value, attr) {\n if (attr === 'startArrow' || attr === 'endArrow') {\n if (value) {\n var id = isObject(value) ? context.addArrow(attrs, SVG_ATTR_MAP[attr]) : context.getDefaultArrow(attrs, SVG_ATTR_MAP[attr]);\n el.setAttribute(SVG_ATTR_MAP[attr], \"url(#\" + id + \")\");\n } else {\n el.removeAttribute(SVG_ATTR_MAP[attr]);\n }\n } else if (SVG_ATTR_MAP[attr]) {\n el.setAttribute(SVG_ATTR_MAP[attr], value);\n }\n });\n };\n /**\n * Use math calculation to get length of line\n * @return {number} length\n */\n Line.prototype.getTotalLength = function () {\n var _a = this.attr(),\n x1 = _a.x1,\n y1 = _a.y1,\n x2 = _a.x2,\n y2 = _a.y2;\n return LineUtil.length(x1, y1, x2, y2);\n };\n /**\n * Use math calculation to get point according to ratio as same sa Canvas version\n * @param {number} ratio\n * @return {Point} point\n */\n Line.prototype.getPoint = function (ratio) {\n var _a = this.attr(),\n x1 = _a.x1,\n y1 = _a.y1,\n x2 = _a.x2,\n y2 = _a.y2;\n return LineUtil.pointAt(x1, y1, x2, y2, ratio);\n };\n return Line;\n}(ShapeBase);\nexport default Line;","var Symbols = {\n // 圆\n circle: function circle(x, y, r) {\n return [['M', x, y], ['m', -r, 0], ['a', r, r, 0, 1, 0, r * 2, 0], ['a', r, r, 0, 1, 0, -r * 2, 0]];\n },\n // 正方形\n square: function square(x, y, r) {\n return [['M', x - r, y - r], ['L', x + r, y - r], ['L', x + r, y + r], ['L', x - r, y + r], ['Z']];\n },\n // 菱形\n diamond: function diamond(x, y, r) {\n return [['M', x - r, y], ['L', x, y - r], ['L', x + r, y], ['L', x, y + r], ['Z']];\n },\n // 三角形\n triangle: function triangle(x, y, r) {\n var diffY = r * Math.sin(1 / 3 * Math.PI);\n return [['M', x - r, y + diffY], ['L', x, y - diffY], ['L', x + r, y + diffY], ['z']];\n },\n // 倒三角形\n triangleDown: function triangleDown(x, y, r) {\n var diffY = r * Math.sin(1 / 3 * Math.PI);\n return [['M', x - r, y - diffY], ['L', x + r, y - diffY], ['L', x, y + diffY], ['Z']];\n }\n};\nexport default {\n get: function get(type) {\n return Symbols[type];\n },\n register: function register(type, func) {\n Symbols[type] = func;\n },\n remove: function remove(type) {\n delete Symbols[type];\n },\n getAll: function getAll() {\n return Symbols;\n }\n};","/**\n * @fileoverview marker\n * @author dengfuping_develop@163.com\n */\nimport { __extends } from \"tslib\";\nimport { isArray, isFunction } from '@antv/util';\nimport ShapeBase from '../base';\nimport symbolsFactory from './symbols';\nvar Marker = /** @class */function (_super) {\n __extends(Marker, _super);\n function Marker() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'marker';\n _this.canFill = true;\n _this.canStroke = true;\n return _this;\n }\n Marker.prototype.createPath = function (context) {\n var el = this.get('el');\n el.setAttribute('d', this._assembleMarker());\n };\n Marker.prototype._assembleMarker = function () {\n var d = this._getPath();\n if (isArray(d)) {\n return d.map(function (path) {\n return path.join(' ');\n }).join('');\n }\n return d;\n };\n Marker.prototype._getPath = function () {\n var attrs = this.attr();\n var x = attrs.x,\n y = attrs.y;\n // 兼容 r 和 radius 两种写法,推荐使用 r\n var r = attrs.r || attrs.radius;\n var symbol = attrs.symbol || 'circle';\n var method;\n if (isFunction(symbol)) {\n method = symbol;\n } else {\n method = symbolsFactory.get(symbol);\n }\n if (!method) {\n console.warn(method + \" symbol is not exist.\");\n return null;\n }\n return method(x, y, r);\n };\n // 作为其静态属性\n Marker.symbolsFactory = symbolsFactory;\n return Marker;\n}(ShapeBase);\nexport default Marker;","import { __assign, __extends } from \"tslib\";\nimport { each, isArray, isObject } from '@antv/util';\nimport { SVG_ATTR_MAP } from '../constant';\nimport ShapeBase from './base';\nvar Path = /** @class */function (_super) {\n __extends(Path, _super);\n function Path() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'path';\n _this.canFill = true;\n _this.canStroke = true;\n return _this;\n }\n Path.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return __assign(__assign({}, attrs), {\n startArrow: false,\n endArrow: false\n });\n };\n Path.prototype.createPath = function (context, targetAttrs) {\n var _this = this;\n var attrs = this.attr();\n var el = this.get('el');\n each(targetAttrs || attrs, function (value, attr) {\n if (attr === 'path' && isArray(value)) {\n el.setAttribute('d', _this._formatPath(value));\n } else if (attr === 'startArrow' || attr === 'endArrow') {\n if (value) {\n var id = isObject(value) ? context.addArrow(attrs, SVG_ATTR_MAP[attr]) : context.getDefaultArrow(attrs, SVG_ATTR_MAP[attr]);\n el.setAttribute(SVG_ATTR_MAP[attr], \"url(#\" + id + \")\");\n } else {\n el.removeAttribute(SVG_ATTR_MAP[attr]);\n }\n } else if (SVG_ATTR_MAP[attr]) {\n el.setAttribute(SVG_ATTR_MAP[attr], value);\n }\n });\n };\n Path.prototype._formatPath = function (value) {\n var newValue = value.map(function (path) {\n return path.join(' ');\n }).join('');\n if (~newValue.indexOf('NaN')) {\n return '';\n }\n return newValue;\n };\n /**\n * Get total length of path\n * 尽管通过浏览器的 SVGPathElement.getTotalLength() 接口获取的 path 长度,\n * 与 Canvas 版本通过数学计算的方式得到的长度有一些细微差异,但最大误差在个位数像素,精度上可以能接受\n * @return {number} length\n */\n Path.prototype.getTotalLength = function () {\n var el = this.get('el');\n return el ? el.getTotalLength() : null;\n };\n /**\n * Get point according to ratio\n * @param {number} ratio\n * @return {Point} point\n */\n Path.prototype.getPoint = function (ratio) {\n var el = this.get('el');\n var totalLength = this.getTotalLength();\n // @see https://github.com/antvis/g/issues/634\n if (totalLength === 0) {\n return null;\n }\n var point = el ? el.getPointAtLength(ratio * totalLength) : null;\n return point ? {\n x: point.x,\n y: point.y\n } : null;\n };\n return Path;\n}(ShapeBase);\nexport default Path;","import { __extends } from \"tslib\";\n/**\n * @fileoverview polygon\n * @author dengfuping_develop@163.com\n */\nimport { each, isArray } from '@antv/util';\nimport { SVG_ATTR_MAP } from '../constant';\nimport ShapeBase from './base';\nvar Polygon = /** @class */function (_super) {\n __extends(Polygon, _super);\n function Polygon() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'polygon';\n _this.canFill = true;\n _this.canStroke = true;\n return _this;\n }\n Polygon.prototype.createPath = function (context, targetAttrs) {\n var attrs = this.attr();\n var el = this.get('el');\n each(targetAttrs || attrs, function (value, attr) {\n if (attr === 'points' && isArray(value) && value.length >= 2) {\n el.setAttribute('points', value.map(function (point) {\n return point[0] + \",\" + point[1];\n }).join(' '));\n } else if (SVG_ATTR_MAP[attr]) {\n el.setAttribute(SVG_ATTR_MAP[attr], value);\n }\n });\n };\n return Polygon;\n}(ShapeBase);\nexport default Polygon;","import { __assign, __extends } from \"tslib\";\nimport { Polyline as PolylineUtil } from '@antv/g-math';\nimport { Line as LineUtil } from '@antv/g-math';\nimport { each, isArray, isNil } from '@antv/util';\nimport { SVG_ATTR_MAP } from '../constant';\nimport ShapeBase from './base';\nvar Polyline = /** @class */function (_super) {\n __extends(Polyline, _super);\n function Polyline() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'polyline';\n _this.canFill = true;\n _this.canStroke = true;\n return _this;\n }\n Polyline.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return __assign(__assign({}, attrs), {\n startArrow: false,\n endArrow: false\n });\n };\n // 更新属性时,检测是否更改了 points\n Polyline.prototype.onAttrChange = function (name, value, originValue) {\n _super.prototype.onAttrChange.call(this, name, value, originValue);\n if (['points'].indexOf(name) !== -1) {\n this._resetCache();\n }\n };\n Polyline.prototype._resetCache = function () {\n this.set('totalLength', null);\n this.set('tCache', null);\n };\n Polyline.prototype.createPath = function (context, targetAttrs) {\n var attrs = this.attr();\n var el = this.get('el');\n each(targetAttrs || attrs, function (value, attr) {\n if (attr === 'points' && isArray(value) && value.length >= 2) {\n el.setAttribute('points', value.map(function (point) {\n return point[0] + \",\" + point[1];\n }).join(' '));\n } else if (SVG_ATTR_MAP[attr]) {\n el.setAttribute(SVG_ATTR_MAP[attr], value);\n }\n });\n };\n /**\n * Get length of polyline\n * @return {number} length\n */\n Polyline.prototype.getTotalLength = function () {\n var points = this.attr().points;\n // get totalLength from cache\n var totalLength = this.get('totalLength');\n if (!isNil(totalLength)) {\n return totalLength;\n }\n this.set('totalLength', PolylineUtil.length(points));\n return this.get('totalLength');\n };\n /**\n * Get point according to ratio\n * @param {number} ratio\n * @return {Point} point\n */\n Polyline.prototype.getPoint = function (ratio) {\n var points = this.attr().points;\n // get tCache from cache\n var tCache = this.get('tCache');\n if (!tCache) {\n this._setTcache();\n tCache = this.get('tCache');\n }\n var subt;\n var index;\n each(tCache, function (v, i) {\n if (ratio >= v[0] && ratio <= v[1]) {\n subt = (ratio - v[0]) / (v[1] - v[0]);\n index = i;\n }\n });\n return LineUtil.pointAt(points[index][0], points[index][1], points[index + 1][0], points[index + 1][1], subt);\n };\n Polyline.prototype._setTcache = function () {\n var points = this.attr().points;\n if (!points || points.length === 0) {\n return;\n }\n var totalLength = this.getTotalLength();\n if (totalLength <= 0) {\n return;\n }\n var tempLength = 0;\n var tCache = [];\n var segmentT;\n var segmentL;\n each(points, function (p, i) {\n if (points[i + 1]) {\n segmentT = [];\n segmentT[0] = tempLength / totalLength;\n segmentL = LineUtil.length(p[0], p[1], points[i + 1][0], points[i + 1][1]);\n tempLength += segmentL;\n segmentT[1] = tempLength / totalLength;\n tCache.push(segmentT);\n }\n });\n this.set('tCache', tCache);\n };\n /**\n * Get start tangent vector\n * @return {Array}\n */\n Polyline.prototype.getStartTangent = function () {\n var points = this.attr().points;\n var result = [];\n result.push([points[1][0], points[1][1]]);\n result.push([points[0][0], points[0][1]]);\n return result;\n };\n /**\n * Get end tangent vector\n * @return {Array}\n */\n Polyline.prototype.getEndTangent = function () {\n var points = this.attr().points;\n var l = points.length - 1;\n var result = [];\n result.push([points[l - 1][0], points[l - 1][1]]);\n result.push([points[l][0], points[l][1]]);\n return result;\n };\n return Polyline;\n}(ShapeBase);\nexport default Polyline;","/**\n * @fileoverview rect\n * @author dengfuping_develop@163.com\n */\nimport { __assign, __extends } from \"tslib\";\nimport { each, isArray } from '@antv/util';\nimport ShapeBase from './base';\nimport { SVG_ATTR_MAP } from '../constant';\nimport { parseRadius } from '../util/format';\nvar Rect = /** @class */function (_super) {\n __extends(Rect, _super);\n function Rect() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'rect';\n _this.canFill = true;\n _this.canStroke = true;\n return _this;\n }\n Rect.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return __assign(__assign({}, attrs), {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n radius: 0\n });\n };\n Rect.prototype.createPath = function (context, targetAttrs) {\n var _this = this;\n var attrs = this.attr();\n var el = this.get('el');\n // 加上状态量,用来标记 path 是否已组装\n var completed = false;\n // 和组装 path 相关的绘图属性\n var pathRelatedAttrs = ['x', 'y', 'width', 'height', 'radius'];\n each(targetAttrs || attrs, function (value, attr) {\n if (pathRelatedAttrs.indexOf(attr) !== -1 && !completed) {\n el.setAttribute('d', _this._assembleRect(attrs));\n completed = true;\n } else if (pathRelatedAttrs.indexOf(attr) === -1 && SVG_ATTR_MAP[attr]) {\n el.setAttribute(SVG_ATTR_MAP[attr], value);\n }\n });\n };\n Rect.prototype._assembleRect = function (attrs) {\n var x = attrs.x;\n var y = attrs.y;\n var w = attrs.width;\n var h = attrs.height;\n var radius = attrs.radius;\n if (!radius) {\n return \"M \" + x + \",\" + y + \" l \" + w + \",0 l 0,\" + h + \" l\" + -w + \" 0 z\";\n }\n var r = parseRadius(radius);\n if (isArray(radius)) {\n if (radius.length === 1) {\n r.r1 = r.r2 = r.r3 = r.r4 = radius[0];\n } else if (radius.length === 2) {\n r.r1 = r.r3 = radius[0];\n r.r2 = r.r4 = radius[1];\n } else if (radius.length === 3) {\n r.r1 = radius[0];\n r.r2 = r.r4 = radius[1];\n r.r3 = radius[2];\n } else {\n r.r1 = radius[0];\n r.r2 = radius[1];\n r.r3 = radius[2];\n r.r4 = radius[3];\n }\n } else {\n r.r1 = r.r2 = r.r3 = r.r4 = radius;\n }\n var d = [[\"M \" + (x + r.r1) + \",\" + y], [\"l \" + (w - r.r1 - r.r2) + \",0\"], [\"a \" + r.r2 + \",\" + r.r2 + \",0,0,1,\" + r.r2 + \",\" + r.r2], [\"l 0,\" + (h - r.r2 - r.r3)], [\"a \" + r.r3 + \",\" + r.r3 + \",0,0,1,\" + -r.r3 + \",\" + r.r3], [\"l \" + (r.r3 + r.r4 - w) + \",0\"], [\"a \" + r.r4 + \",\" + r.r4 + \",0,0,1,\" + -r.r4 + \",\" + -r.r4], [\"l 0,\" + (r.r4 + r.r1 - h)], [\"a \" + r.r1 + \",\" + r.r1 + \",0,0,1,\" + r.r1 + \",\" + -r.r1], ['z']];\n return d.join(' ');\n };\n return Rect;\n}(ShapeBase);\nexport default Rect;","import { each, isArray, isString } from '@antv/util';\nvar regexTags = /[MLHVQTCSAZ]([^MLHVQTCSAZ]*)/gi;\nvar regexDot = /[^\\s,]+/gi;\nexport function parseRadius(radius) {\n var r1 = 0;\n var r2 = 0;\n var r3 = 0;\n var r4 = 0;\n if (isArray(radius)) {\n if (radius.length === 1) {\n r1 = r2 = r3 = r4 = radius[0];\n } else if (radius.length === 2) {\n r1 = r3 = radius[0];\n r2 = r4 = radius[1];\n } else if (radius.length === 3) {\n r1 = radius[0];\n r2 = r4 = radius[1];\n r3 = radius[2];\n } else {\n r1 = radius[0];\n r2 = radius[1];\n r3 = radius[2];\n r4 = radius[3];\n }\n } else {\n r1 = r2 = r3 = r4 = radius;\n }\n return {\n r1: r1,\n r2: r2,\n r3: r3,\n r4: r4\n };\n}\nexport function parsePath(path) {\n path = path || [];\n if (isArray(path)) {\n return path;\n }\n if (isString(path)) {\n path = path.match(regexTags);\n each(path, function (item, index) {\n item = item.match(regexDot);\n if (item[0].length > 1) {\n var tag = item[0].charAt(0);\n item.splice(1, 0, item[0].substr(1));\n item[0] = tag;\n }\n each(item, function (sub, i) {\n if (!isNaN(sub)) {\n item[i] = +sub;\n }\n });\n path[index] = item;\n });\n return path;\n }\n}","/**\n * @fileoverview text\n * @author dengfuping_develop@163.com\n */\nimport { __assign, __extends } from \"tslib\";\nimport { each } from '@antv/util';\nimport { detect } from 'detect-browser';\nimport { setTransform } from '../util/svg';\nimport { SVG_ATTR_MAP } from '../constant';\nimport ShapeBase from './base';\nvar LETTER_SPACING = 0.3;\nvar BASELINE_MAP = {\n top: 'before-edge',\n middle: 'central',\n bottom: 'after-edge',\n alphabetic: 'baseline',\n hanging: 'hanging'\n};\n// for FireFox\nvar BASELINE_MAP_FOR_FIREFOX = {\n top: 'text-before-edge',\n middle: 'central',\n bottom: 'text-after-edge',\n alphabetic: 'alphabetic',\n hanging: 'hanging'\n};\nvar ANCHOR_MAP = {\n left: 'left',\n start: 'left',\n center: 'middle',\n right: 'end',\n end: 'end'\n};\nvar Text = /** @class */function (_super) {\n __extends(Text, _super);\n function Text() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'text';\n _this.canFill = true;\n _this.canStroke = true;\n return _this;\n }\n Text.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return __assign(__assign({}, attrs), {\n x: 0,\n y: 0,\n text: null,\n fontSize: 12,\n fontFamily: 'sans-serif',\n fontStyle: 'normal',\n fontWeight: 'normal',\n fontVariant: 'normal',\n textAlign: 'start',\n textBaseline: 'bottom'\n });\n };\n Text.prototype.createPath = function (context, targetAttrs) {\n var _this = this;\n var attrs = this.attr();\n var el = this.get('el');\n this._setFont();\n each(targetAttrs || attrs, function (value, attr) {\n if (attr === 'text') {\n _this._setText(\"\" + value);\n } else if (attr === 'matrix' && value) {\n setTransform(_this);\n } else if (SVG_ATTR_MAP[attr]) {\n el.setAttribute(SVG_ATTR_MAP[attr], value);\n }\n });\n el.setAttribute('paint-order', 'stroke');\n el.setAttribute('style', 'stroke-linecap:butt; stroke-linejoin:miter;');\n };\n Text.prototype._setFont = function () {\n var el = this.get('el');\n var _a = this.attr(),\n textBaseline = _a.textBaseline,\n textAlign = _a.textAlign;\n var browser = detect();\n if (browser && browser.name === 'firefox') {\n // compatible with FireFox browser, ref: https://github.com/antvis/g/issues/119\n el.setAttribute('dominant-baseline', BASELINE_MAP_FOR_FIREFOX[textBaseline] || 'alphabetic');\n } else {\n el.setAttribute('alignment-baseline', BASELINE_MAP[textBaseline] || 'baseline');\n }\n el.setAttribute('text-anchor', ANCHOR_MAP[textAlign] || 'left');\n };\n Text.prototype._setText = function (text) {\n var el = this.get('el');\n var _a = this.attr(),\n x = _a.x,\n _b = _a.textBaseline,\n baseline = _b === void 0 ? 'bottom' : _b;\n if (!text) {\n el.innerHTML = '';\n } else if (~text.indexOf('\\n')) {\n var textArr = text.split('\\n');\n var textLen_1 = textArr.length - 1;\n var arr_1 = '';\n each(textArr, function (segment, i) {\n if (i === 0) {\n if (baseline === 'alphabetic') {\n arr_1 += \"\" + segment + \"\";\n } else if (baseline === 'top') {\n arr_1 += \"\" + segment + \"\";\n } else if (baseline === 'middle') {\n arr_1 += \"\" + segment + \"\";\n } else if (baseline === 'bottom') {\n arr_1 += \"\" + segment + \"\";\n } else if (baseline === 'hanging') {\n arr_1 += \"\" + segment + \"\";\n }\n } else {\n arr_1 += \"\" + segment + \"\";\n }\n });\n el.innerHTML = arr_1;\n } else {\n el.innerHTML = text;\n }\n };\n return Text;\n}(ShapeBase);\nexport default Text;","/**\n * @fileoverview gradient\n * @author dengfuping_develop@163.com\n */\nimport { each, mod, toRadian, uniqueId } from '@antv/util';\nimport { createSVGElement } from '../util/dom';\nvar regexLG = /^l\\s*\\(\\s*([\\d.]+)\\s*\\)\\s*(.*)/i;\nvar regexRG = /^r\\s*\\(\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*\\)\\s*(.*)/i;\nvar regexColorStop = /[\\d.]+:(#[^\\s]+|[^)]+\\))/gi;\nfunction addStop(steps) {\n var arr = steps.match(regexColorStop);\n if (!arr) {\n return '';\n }\n var stops = '';\n arr.sort(function (a, b) {\n a = a.split(':');\n b = b.split(':');\n return Number(a[0]) - Number(b[0]);\n });\n each(arr, function (item) {\n item = item.split(':');\n stops += \"\";\n });\n return stops;\n}\nfunction parseLineGradient(color, el) {\n var arr = regexLG.exec(color);\n var angle = mod(toRadian(parseFloat(arr[1])), Math.PI * 2);\n var steps = arr[2];\n var start;\n var end;\n if (angle >= 0 && angle < 0.5 * Math.PI) {\n start = {\n x: 0,\n y: 0\n };\n end = {\n x: 1,\n y: 1\n };\n } else if (0.5 * Math.PI <= angle && angle < Math.PI) {\n start = {\n x: 1,\n y: 0\n };\n end = {\n x: 0,\n y: 1\n };\n } else if (Math.PI <= angle && angle < 1.5 * Math.PI) {\n start = {\n x: 1,\n y: 1\n };\n end = {\n x: 0,\n y: 0\n };\n } else {\n start = {\n x: 0,\n y: 1\n };\n end = {\n x: 1,\n y: 0\n };\n }\n var tanTheta = Math.tan(angle);\n var tanTheta2 = tanTheta * tanTheta;\n var x = (end.x - start.x + tanTheta * (end.y - start.y)) / (tanTheta2 + 1) + start.x;\n var y = tanTheta * (end.x - start.x + tanTheta * (end.y - start.y)) / (tanTheta2 + 1) + start.y;\n el.setAttribute('x1', start.x);\n el.setAttribute('y1', start.y);\n el.setAttribute('x2', x);\n el.setAttribute('y2', y);\n el.innerHTML = addStop(steps);\n}\nfunction parseRadialGradient(color, self) {\n var arr = regexRG.exec(color);\n var cx = parseFloat(arr[1]);\n var cy = parseFloat(arr[2]);\n var r = parseFloat(arr[3]);\n var steps = arr[4];\n self.setAttribute('cx', cx);\n self.setAttribute('cy', cy);\n self.setAttribute('r', r);\n self.innerHTML = addStop(steps);\n}\nvar Gradient = /** @class */function () {\n function Gradient(cfg) {\n this.cfg = {};\n var el = null;\n var id = uniqueId('gradient_');\n if (cfg.toLowerCase()[0] === 'l') {\n el = createSVGElement('linearGradient');\n parseLineGradient(cfg, el);\n } else {\n el = createSVGElement('radialGradient');\n parseRadialGradient(cfg, el);\n }\n el.setAttribute('id', id);\n this.el = el;\n this.id = id;\n this.cfg = cfg;\n return this;\n }\n Gradient.prototype.match = function (type, attr) {\n return this.cfg === attr;\n };\n return Gradient;\n}();\nexport default Gradient;","/**\n * @fileoverview shadow\n * @author dengfuping_develop@163.com\n */\nimport { each, uniqueId } from '@antv/util';\nimport { createSVGElement } from '../util/dom';\nvar ATTR_MAP = {\n shadowColor: 'color',\n shadowOpacity: 'opacity',\n shadowBlur: 'blur',\n shadowOffsetX: 'dx',\n shadowOffsetY: 'dy'\n};\nvar SHADOW_DIMENSION = {\n x: '-40%',\n y: '-40%',\n width: '200%',\n height: '200%'\n};\nvar Shadow = /** @class */function () {\n function Shadow(cfg) {\n this.type = 'filter';\n this.cfg = {};\n this.type = 'filter';\n var el = createSVGElement('filter');\n // expand the filter region to fill in shadows\n each(SHADOW_DIMENSION, function (v, k) {\n el.setAttribute(k, v);\n });\n this.el = el;\n this.id = uniqueId('filter_');\n this.el.id = this.id;\n this.cfg = cfg;\n this._parseShadow(cfg, el);\n return this;\n }\n Shadow.prototype.match = function (type, cfg) {\n if (this.type !== type) {\n return false;\n }\n var flag = true;\n var config = this.cfg;\n each(Object.keys(config), function (attr) {\n if (config[attr] !== cfg[attr]) {\n flag = false;\n return false;\n }\n });\n return flag;\n };\n Shadow.prototype.update = function (name, value) {\n var config = this.cfg;\n config[ATTR_MAP[name]] = value;\n this._parseShadow(config, this.el);\n return this;\n };\n Shadow.prototype._parseShadow = function (config, el) {\n var child = \"\";\n el.innerHTML = child;\n };\n return Shadow;\n}();\nexport default Shadow;","/**\n * @fileoverview arrow\n * @author dengfuping_develop@163.com\n */\nimport { isArray, uniqueId } from '@antv/util';\nimport { createSVGElement } from '../util/dom';\nvar Arrow = /** @class */function () {\n function Arrow(attrs, type) {\n this.cfg = {};\n var el = createSVGElement('marker');\n var id = uniqueId('marker_');\n el.setAttribute('id', id);\n var shape = createSVGElement('path');\n shape.setAttribute('stroke', attrs.stroke || 'none');\n shape.setAttribute('fill', attrs.fill || 'none');\n el.appendChild(shape);\n el.setAttribute('overflow', 'visible');\n el.setAttribute('orient', 'auto-start-reverse');\n this.el = el;\n this.child = shape;\n this.id = id;\n var cfg = attrs[type === 'marker-start' ? 'startArrow' : 'endArrow'];\n this.stroke = attrs.stroke || '#000';\n if (cfg === true) {\n this._setDefaultPath(type, shape);\n } else {\n this.cfg = cfg; // when arrow config exists\n this._setMarker(attrs.lineWidth, shape);\n }\n return this;\n }\n Arrow.prototype.match = function () {\n return false;\n };\n Arrow.prototype._setDefaultPath = function (type, el) {\n var parent = this.el;\n // 默认箭头的边长为 10,夹角为 60 度\n el.setAttribute('d', \"M0,0 L\" + 10 * Math.cos(Math.PI / 6) + \",5 L0,10\");\n parent.setAttribute('refX', \"\" + 10 * Math.cos(Math.PI / 6));\n parent.setAttribute('refY', \"\" + 5);\n };\n Arrow.prototype._setMarker = function (r, el) {\n var parent = this.el;\n var path = this.cfg.path;\n var d = this.cfg.d;\n if (isArray(path)) {\n path = path.map(function (segment) {\n return segment.join(' ');\n }).join('');\n }\n el.setAttribute('d', path);\n parent.appendChild(el);\n if (d) {\n parent.setAttribute('refX', \"\" + d / r);\n }\n };\n Arrow.prototype.update = function (fill) {\n var child = this.child;\n if (child.attr) {\n child.attr('fill', fill);\n } else {\n child.setAttribute('fill', fill);\n }\n };\n return Arrow;\n}();\nexport default Arrow;","/**\n * @fileoverview clip\n * @author dengfuping_develop@163.com\n */\nimport { uniqueId } from '@antv/util';\nimport { createSVGElement } from '../util/dom';\nvar Clip = /** @class */function () {\n function Clip(cfg) {\n this.type = 'clip';\n this.cfg = {};\n var el = createSVGElement('clipPath');\n this.el = el;\n this.id = uniqueId('clip_');\n el.id = this.id;\n var shapeEl = cfg.cfg.el;\n el.appendChild(shapeEl);\n this.cfg = cfg;\n return this;\n }\n Clip.prototype.match = function () {\n return false;\n };\n Clip.prototype.remove = function () {\n var el = this.el;\n el.parentNode.removeChild(el);\n };\n return Clip;\n}();\nexport default Clip;","/**\n * @fileoverview pattern\n * @author dengfuping_develop@163.com\n */\nimport { uniqueId } from '@antv/util';\nimport { createSVGElement } from '../util/dom';\nvar regexPR = /^p\\s*\\(\\s*([axyn])\\s*\\)\\s*(.*)/i;\nvar Pattern = /** @class */function () {\n function Pattern(cfg) {\n this.cfg = {};\n var el = createSVGElement('pattern');\n el.setAttribute('patternUnits', 'userSpaceOnUse');\n var child = createSVGElement('image');\n el.appendChild(child);\n var id = uniqueId('pattern_');\n el.id = id;\n this.el = el;\n this.id = id;\n this.cfg = cfg;\n var arr = regexPR.exec(cfg);\n var source = arr[2];\n child.setAttribute('href', source);\n var img = new Image();\n if (!source.match(/^data:/i)) {\n img.crossOrigin = 'Anonymous';\n }\n img.src = source;\n function onload() {\n el.setAttribute('width', \"\" + img.width);\n el.setAttribute('height', \"\" + img.height);\n }\n if (img.complete) {\n onload();\n } else {\n img.onload = onload;\n // Fix onload() bug in IE9\n img.src = img.src;\n }\n return this;\n }\n Pattern.prototype.match = function (type, attr) {\n return this.cfg === attr;\n };\n return Pattern;\n}();\nexport default Pattern;","/**\n * @fileoverview defs\n * @author dengfuping_develop@163.com\n */\nimport { uniqueId } from '@antv/util';\nimport Gradient from './gradient';\nimport Shadow from './shadow';\nimport Arrow from './arrow';\nimport Clip from './clip';\nimport Pattern from './pattern';\nimport { createSVGElement } from '../util/dom';\nvar Defs = /** @class */function () {\n function Defs(canvas) {\n var el = createSVGElement('defs');\n var id = uniqueId('defs_');\n el.id = id;\n canvas.appendChild(el);\n this.children = [];\n this.defaultArrow = {};\n this.el = el;\n this.canvas = canvas;\n }\n Defs.prototype.find = function (type, attr) {\n var children = this.children;\n var result = null;\n for (var i = 0; i < children.length; i++) {\n if (children[i].match(type, attr)) {\n result = children[i].id;\n break;\n }\n }\n return result;\n };\n Defs.prototype.findById = function (id) {\n var children = this.children;\n var flag = null;\n for (var i = 0; i < children.length; i++) {\n if (children[i].id === id) {\n flag = children[i];\n break;\n }\n }\n return flag;\n };\n Defs.prototype.add = function (item) {\n this.children.push(item);\n item.canvas = this.canvas;\n item.parent = this;\n };\n Defs.prototype.getDefaultArrow = function (attrs, name) {\n var stroke = attrs.stroke || attrs.strokeStyle;\n if (this.defaultArrow[stroke]) {\n return this.defaultArrow[stroke].id;\n }\n var arrow = new Arrow(attrs, name);\n this.defaultArrow[stroke] = arrow;\n this.el.appendChild(arrow.el);\n this.add(arrow);\n return arrow.id;\n };\n Defs.prototype.addGradient = function (cfg) {\n var gradient = new Gradient(cfg);\n this.el.appendChild(gradient.el);\n this.add(gradient);\n return gradient.id;\n };\n Defs.prototype.addArrow = function (attrs, name) {\n var arrow = new Arrow(attrs, name);\n this.el.appendChild(arrow.el);\n this.add(arrow);\n return arrow.id;\n };\n Defs.prototype.addShadow = function (cfg) {\n var shadow = new Shadow(cfg);\n this.el.appendChild(shadow.el);\n this.add(shadow);\n return shadow.id;\n };\n Defs.prototype.addPattern = function (cfg) {\n var pattern = new Pattern(cfg);\n this.el.appendChild(pattern.el);\n this.add(pattern);\n return pattern.id;\n };\n Defs.prototype.addClip = function (cfg) {\n var clip = new Clip(cfg);\n this.el.appendChild(clip.el);\n this.add(clip);\n return clip.id;\n };\n return Defs;\n}();\nexport default Defs;","import { __assign, __extends } from \"tslib\";\nimport { AbstractCanvas } from '@antv/g-base';\nimport { SHAPE_TO_TAGS } from './constant';\nimport { drawChildren } from './util/draw';\nimport { setTransform, setClip } from './util/svg';\nimport { sortDom, createSVGElement } from './util/dom';\nimport * as Shape from './shape';\nimport Group from './group';\nimport Defs from './defs';\nvar Canvas = /** @class */function (_super) {\n __extends(Canvas, _super);\n function Canvas(cfg) {\n return _super.call(this, __assign(__assign({}, cfg), {\n autoDraw: true,\n // 设置渲染引擎为 canvas,只读属性\n renderer: 'svg'\n })) || this;\n }\n Canvas.prototype.getShapeBase = function () {\n return Shape;\n };\n Canvas.prototype.getGroupBase = function () {\n return Group;\n };\n // 覆盖 Container 中通过遍历的方式获取 shape 对象的逻辑,直接走 SVG 的 dom 拾取即可\n Canvas.prototype.getShape = function (x, y, ev) {\n var target = ev.target || ev.srcElement;\n if (!SHAPE_TO_TAGS[target.tagName]) {\n var parent_1 = target.parentNode;\n while (parent_1 && !SHAPE_TO_TAGS[parent_1.tagName]) {\n parent_1 = parent_1.parentNode;\n }\n target = parent_1;\n }\n return this.find(function (child) {\n return child.get('el') === target;\n });\n };\n // 复写基类的方法生成标签\n Canvas.prototype.createDom = function () {\n var element = createSVGElement('svg');\n var context = new Defs(element);\n element.setAttribute('width', \"\" + this.get('width'));\n element.setAttribute('height', \"\" + this.get('height'));\n // 缓存 context 对象\n this.set('context', context);\n return element;\n };\n /**\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n Canvas.prototype.onCanvasChange = function (changeType) {\n var context = this.get('context');\n var el = this.get('el');\n if (changeType === 'sort') {\n var children_1 = this.get('children');\n if (children_1 && children_1.length) {\n sortDom(this, function (a, b) {\n return children_1.indexOf(a) - children_1.indexOf(b) ? 1 : 0;\n });\n }\n } else if (changeType === 'clear') {\n // el maybe null for canvas\n if (el) {\n // 清空 SVG 元素\n el.innerHTML = '';\n var defsEl = context.el;\n // 清空 defs 元素\n defsEl.innerHTML = '';\n // 将清空后的 defs 元素挂载到 el 下\n el.appendChild(defsEl);\n }\n } else if (changeType === 'matrix') {\n setTransform(this);\n } else if (changeType === 'clip') {\n setClip(this, context);\n } else if (changeType === 'changeSize') {\n el.setAttribute('width', \"\" + this.get('width'));\n el.setAttribute('height', \"\" + this.get('height'));\n }\n };\n // 复写基类的 draw 方法\n Canvas.prototype.draw = function () {\n var context = this.get('context');\n var children = this.getChildren();\n setClip(this, context);\n if (children.length) {\n drawChildren(context, children);\n }\n };\n return Canvas;\n}(AbstractCanvas);\nexport default Canvas;","import * as Shape from './shape';\nexport * from '@antv/g-base';\nexport { default as Canvas } from './canvas';\nexport { default as Group } from './group';\nexport { Shape };\nexport var version = '0.5.6';","import { __extends, __values } from \"tslib\";\nimport { FIELD_ORIGIN } from '../constant';\nimport Geometry from './base';\nimport Element from './element';\n/** 引入对应的 ShapeFactory */\nimport './shape/line';\nimport { isModelChange } from './util/is-model-change';\nimport { diff } from './util/diff';\n/**\n * Path 几何标记。\n * 用于绘制路径图等。\n */\nvar Path = /** @class */function (_super) {\n __extends(Path, _super);\n function Path(cfg) {\n var _this = _super.call(this, cfg) || this;\n _this.type = 'path';\n _this.shapeType = 'line';\n var _a = cfg.connectNulls,\n connectNulls = _a === void 0 ? false : _a,\n _b = cfg.showSinglePoint,\n showSinglePoint = _b === void 0 ? true : _b;\n _this.connectNulls = connectNulls;\n _this.showSinglePoint = showSinglePoint;\n return _this;\n }\n /**\n * 创建所有的 Element 实例,对于 Path、Line、Area,一组数据对应一个 Element。\n * @param mappingData\n * @param [isUpdate]\n * @returns elements\n */\n Path.prototype.updateElements = function (mappingDataArray, isUpdate) {\n var e_1, _a, e_2, _b, e_3, _c;\n if (isUpdate === void 0) {\n isUpdate = false;\n }\n // Path 的每个 element 对应一组数据\n var keyData = new Map();\n var keyIndex = new Map();\n var keys = [];\n var index = 0;\n for (var i = 0; i < mappingDataArray.length; i++) {\n var mappingData = mappingDataArray[i];\n var key = this.getElementId(mappingData);\n keys.push(key);\n keyData.set(key, mappingData);\n keyIndex.set(key, index);\n index++;\n }\n this.elements = new Array(index);\n var _d = diff(this.lastElementsMap, keys),\n added = _d.added,\n updated = _d.updated,\n removed = _d.removed;\n try {\n for (var added_1 = __values(added), added_1_1 = added_1.next(); !added_1_1.done; added_1_1 = added_1.next()) {\n var key = added_1_1.value;\n var mappingData = keyData.get(key);\n var shapeFactory = this.getShapeFactory();\n var shapeCfg = this.getShapeInfo(mappingData);\n var i = keyIndex.get(key);\n var element = new Element({\n shapeFactory: shapeFactory,\n container: this.container,\n offscreenGroup: this.getOffscreenGroup(),\n elementIndex: i\n });\n element.geometry = this;\n element.animate = this.animateOption;\n element.draw(shapeCfg, isUpdate); // 绘制 shape\n this.elementsMap[key] = element;\n this.elements[i] = element;\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (added_1_1 && !added_1_1.done && (_a = added_1.return)) _a.call(added_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n try {\n for (var updated_1 = __values(updated), updated_1_1 = updated_1.next(); !updated_1_1.done; updated_1_1 = updated_1.next()) {\n var key = updated_1_1.value;\n var mappingData = keyData.get(key);\n var element = this.lastElementsMap[key];\n var i = keyIndex.get(key);\n var shapeCfg = this.getShapeInfo(mappingData);\n var preShapeCfg = element.getModel();\n if (this.isCoordinateChanged || isModelChange(preShapeCfg, shapeCfg)) {\n element.animate = this.animateOption;\n // 通过绘制数据的变更来判断是否需要更新,因为用户有可能会修改图形属性映射\n element.update(shapeCfg); // 更新对应的 element\n }\n\n this.elementsMap[key] = element;\n this.elements[i] = element;\n }\n } catch (e_2_1) {\n e_2 = {\n error: e_2_1\n };\n } finally {\n try {\n if (updated_1_1 && !updated_1_1.done && (_b = updated_1.return)) _b.call(updated_1);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n try {\n for (var removed_1 = __values(removed), removed_1_1 = removed_1.next(); !removed_1_1.done; removed_1_1 = removed_1.next()) {\n var key = removed_1_1.value;\n var element = this.lastElementsMap[key];\n // 更新动画配置,用户有可能在更新之前有对动画进行配置操作\n element.animate = this.animateOption;\n element.destroy();\n }\n } catch (e_3_1) {\n e_3 = {\n error: e_3_1\n };\n } finally {\n try {\n if (removed_1_1 && !removed_1_1.done && (_c = removed_1.return)) _c.call(removed_1);\n } finally {\n if (e_3) throw e_3.error;\n }\n }\n };\n /**\n * 获取组成一条线(一组数据)的所有点以及数据\n * @param mappingData 映射后的数组\n */\n Path.prototype.getPointsAndData = function (mappingData) {\n var points = [];\n var data = [];\n for (var i = 0, len = mappingData.length; i < len; i++) {\n var obj = mappingData[i];\n points.push({\n x: obj.x,\n y: obj.y\n });\n data.push(obj[FIELD_ORIGIN]);\n }\n return {\n points: points,\n data: data\n };\n };\n Path.prototype.getShapeInfo = function (mappingData) {\n var shapeCfg = this.getDrawCfg(mappingData[0]);\n var _a = this.getPointsAndData(mappingData),\n points = _a.points,\n data = _a.data;\n shapeCfg.mappingData = mappingData;\n shapeCfg.data = data;\n shapeCfg.isStack = !!this.getAdjust('stack');\n shapeCfg.points = points;\n shapeCfg.connectNulls = this.connectNulls;\n shapeCfg.showSinglePoint = this.showSinglePoint;\n return shapeCfg;\n };\n return Path;\n}(Geometry);\nexport default Path;","import { each } from '@antv/util';\nimport { getPathPoints } from '../util/get-path-points';\nimport { getStyle } from '../util/get-style';\nimport { getLinePath, getSplinePath } from '../util/path';\nfunction getPath(points, isInCircle, smooth, registeredShape, constraint) {\n var path = [];\n if (points.length) {\n var topLinePoints_1 = []; // area 区域上部分\n var bottomLinePoints_1 = []; // area 区域下部分\n for (var i = 0, len = points.length; i < len; i++) {\n var point = points[i];\n topLinePoints_1.push(point[1]);\n bottomLinePoints_1.push(point[0]);\n }\n bottomLinePoints_1 = bottomLinePoints_1.reverse();\n each([topLinePoints_1, bottomLinePoints_1], function (pointsData, index) {\n var subPath = [];\n var parsedPoints = registeredShape.parsePoints(pointsData);\n var p1 = parsedPoints[0];\n if (topLinePoints_1.length === 1 && bottomLinePoints_1.length === 1) {\n // 都只有一个点,绘制一条竖线\n subPath = index === 0 ? [['M', p1.x - 0.5, p1.y], ['L', p1.x + 0.5, p1.y]] : [['L', p1.x + 0.5, p1.y], ['L', p1.x - 0.5, p1.y]];\n } else {\n if (isInCircle) {\n parsedPoints.push({\n x: p1.x,\n y: p1.y\n });\n }\n if (smooth) {\n subPath = getSplinePath(parsedPoints, false, constraint);\n } else {\n subPath = getLinePath(parsedPoints, false);\n }\n if (index > 0) {\n subPath[0][0] = 'L';\n }\n }\n path = path.concat(subPath);\n });\n path.push(['Z']);\n }\n return path;\n}\n/**\n * @ignore\n * Gets shape attrs\n * @param cfg\n * @param isStroke\n * @param smooth\n * @param registeredShape\n * @param [constraint]\n * @returns\n */\nexport function getShapeAttrs(cfg, isStroke, smooth, registeredShape, constraint) {\n var attrs = getStyle(cfg, isStroke, !isStroke, 'lineWidth');\n var connectNulls = cfg.connectNulls,\n isInCircle = cfg.isInCircle,\n points = cfg.points,\n showSinglePoint = cfg.showSinglePoint;\n var pathPoints = getPathPoints(points, connectNulls, showSinglePoint); // 根据 connectNulls 配置获取图形关键点\n var path = [];\n for (var i = 0, len = pathPoints.length; i < len; i++) {\n var eachPoints = pathPoints[i];\n path = path.concat(getPath(eachPoints, isInCircle, smooth, registeredShape, constraint));\n }\n attrs.path = path;\n return attrs;\n}\n/**\n * @ignore\n * Gets constraint\n * @param coordinate\n * @returns constraint\n */\nexport function getConstraint(coordinate) {\n var start = coordinate.start,\n end = coordinate.end;\n return [[start.x, end.y], [end.x, start.y]];\n}","import { isArray } from '@antv/util';\nimport { registerShape, registerShapeFactory } from '../base';\nimport { getShapeAttrs } from './util';\nvar AreaShapeFactory = registerShapeFactory('area', {\n defaultShapeType: 'area',\n getDefaultPoints: function getDefaultPoints(pointInfo) {\n // area 基本标记的绘制需要获取上下两边的顶点\n var x = pointInfo.x,\n y0 = pointInfo.y0;\n var y = isArray(pointInfo.y) ? pointInfo.y : [y0, pointInfo.y];\n return y.map(function (yItem) {\n return {\n x: x,\n y: yItem\n };\n });\n }\n});\n// Area 几何标记默认的 shape:填充的区域图\nregisterShape('area', 'area', {\n draw: function draw(cfg, container) {\n var attrs = getShapeAttrs(cfg, false, false, this);\n var shape = container.addShape({\n type: 'path',\n attrs: attrs,\n name: 'area'\n });\n return shape;\n },\n getMarker: function getMarker(markerCfg) {\n var color = markerCfg.color;\n return {\n symbol: function symbol(x, y, r) {\n if (r === void 0) {\n r = 5.5;\n }\n return [['M', x - r, y - 4], ['L', x + r, y - 4], ['L', x + r, y + 4], ['L', x - r, y + 4], ['Z']];\n },\n style: {\n r: 5,\n fill: color,\n fillOpacity: 1\n }\n };\n }\n});\nexport default AreaShapeFactory;","import { __extends } from \"tslib\";\nimport { FIELD_ORIGIN } from '../constant';\nimport Path from './path';\nimport './shape/area';\n/**\n * Area 几何标记类。\n * 常用于绘制面积图。\n */\nvar Area = /** @class */function (_super) {\n __extends(Area, _super);\n function Area(cfg) {\n var _this = _super.call(this, cfg) || this;\n _this.type = 'area';\n _this.shapeType = 'area';\n /** 生成图形关键点 */\n _this.generatePoints = true;\n /**\n * 面积图是否从 0 基准线开始填充。\n * 1. 默认值为 `true`,表现如下:\n * ![image](https://gw.alipayobjects.com/zos/rmsportal/ZQqwUCczalrKqGgagOVp.png)\n * 2. 当值为 `false` 时,表现如下:\n * ![image](https://gw.alipayobjects.com/zos/rmsportal/yPswkaXvUpCYOdhocGwB.png)\n */\n _this.startOnZero = true;\n var _a = cfg.startOnZero,\n startOnZero = _a === void 0 ? true : _a,\n _b = cfg.sortable,\n sortable = _b === void 0 ? false : _b,\n _c = cfg.showSinglePoint,\n showSinglePoint = _c === void 0 ? false : _c;\n _this.startOnZero = startOnZero; // 默认为 true\n _this.sortable = sortable; // 关闭默认的 X 轴数据排序\n _this.showSinglePoint = showSinglePoint;\n return _this;\n }\n /**\n * 获取图形绘制的关键点以及数据\n * @param mappingData 映射后的数据\n */\n Area.prototype.getPointsAndData = function (mappingData) {\n var points = [];\n var data = [];\n for (var i = 0, len = mappingData.length; i < len; i++) {\n var obj = mappingData[i];\n points.push(obj.points);\n data.push(obj[FIELD_ORIGIN]);\n }\n return {\n points: points,\n data: data\n };\n };\n /**\n * 获取 Y 轴上的最小值\n * @returns y 字段最小值\n */\n Area.prototype.getYMinValue = function () {\n if (this.startOnZero) {\n return _super.prototype.getYMinValue.call(this);\n }\n var yScale = this.getYScale();\n return yScale.min;\n };\n return Area;\n}(Path);\nexport default Area;","import { __assign } from \"tslib\";\nimport { registerShape, registerShapeFactory } from '../base';\nimport { getStyle } from '../util/get-style';\nimport { getLinePath } from '../util/path';\nimport { splitPoints } from '../util/split-points';\nvar EdgeShapeFactory = registerShapeFactory('edge', {\n defaultShapeType: 'line',\n getDefaultPoints: function getDefaultPoints(pointInfo) {\n return splitPoints(pointInfo);\n }\n});\nregisterShape('edge', 'line', {\n draw: function draw(cfg, container) {\n var style = getStyle(cfg, true, false, 'lineWidth');\n var path = getLinePath(this.parsePoints(cfg.points), this.coordinate.isPolar);\n return container.addShape('path', {\n attrs: __assign(__assign({}, style), {\n path: path\n })\n });\n },\n getMarker: function getMarker(markerCfg) {\n return {\n symbol: 'circle',\n style: {\n r: 4.5,\n fill: markerCfg.color\n }\n };\n }\n});\nexport default EdgeShapeFactory;","import { __extends } from \"tslib\";\nimport Geometry from './base';\nimport './shape/edge';\n/**\n * Edge 几何标记,用于绘制关系图中的**边**图形,如:\n * 1. 流程图\n * 2. 树\n * 3. 弧长连接图\n * 4. 和弦图\n * 5. 桑基图\n */\nvar Edge = /** @class */function (_super) {\n __extends(Edge, _super);\n function Edge() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'edge';\n _this.shapeType = 'edge';\n _this.generatePoints = true;\n return _this;\n }\n return Edge;\n}(Geometry);\nexport default Edge;","import { __assign, __extends, __values } from \"tslib\";\nimport ColorUtil from '@antv/color-util';\nimport { get, isNumber } from '@antv/util';\nimport { FIELD_ORIGIN } from '../constant';\nimport Geometry from './base';\n/**\n * 用于绘制热力图。\n */\nvar Heatmap = /** @class */function (_super) {\n __extends(Heatmap, _super);\n function Heatmap() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'heatmap';\n _this.paletteCache = {};\n return _this;\n }\n Heatmap.prototype.updateElements = function (mappingDataArray, isUpdate) {\n if (isUpdate === void 0) {\n isUpdate = false;\n }\n for (var i = 0; i < mappingDataArray.length; i++) {\n var mappingData = mappingDataArray[i];\n var range = this.prepareRange(mappingData);\n var radius = this.prepareSize();\n var blur_1 = get(this.styleOption, ['cfg', 'shadowBlur']);\n if (!isNumber(blur_1)) {\n blur_1 = radius / 2;\n }\n this.prepareGreyScaleBlurredCircle(radius, blur_1);\n this.drawWithRange(mappingData, range, radius, blur_1);\n }\n };\n /** 热力图暂时不支持 callback 回调(文档需要说明下) */\n Heatmap.prototype.color = function (field, cfg) {\n this.createAttrOption('color', field, typeof cfg !== 'function' ? cfg : '');\n return this;\n };\n /**\n * clear\n */\n Heatmap.prototype.clear = function () {\n _super.prototype.clear.call(this);\n this.clearShadowCanvasCtx();\n this.paletteCache = {};\n };\n Heatmap.prototype.prepareRange = function (data) {\n var colorAttr = this.getAttribute('color');\n var colorField = colorAttr.getFields()[0];\n var min = Infinity;\n var max = -Infinity;\n data.forEach(function (row) {\n var value = row[FIELD_ORIGIN][colorField];\n if (value > max) {\n max = value;\n }\n if (value < min) {\n min = value;\n }\n });\n if (min === max) {\n min = max - 1;\n }\n return [min, max];\n };\n Heatmap.prototype.prepareSize = function () {\n var radius = this.getDefaultValue('size');\n if (!isNumber(radius)) {\n radius = this.getDefaultSize();\n }\n return radius;\n };\n Heatmap.prototype.prepareGreyScaleBlurredCircle = function (radius, blur) {\n var grayScaleBlurredCanvas = this.getGrayScaleBlurredCanvas();\n var r2 = radius + blur;\n var ctx = grayScaleBlurredCanvas.getContext('2d');\n grayScaleBlurredCanvas.width = grayScaleBlurredCanvas.height = r2 * 2;\n ctx.clearRect(0, 0, grayScaleBlurredCanvas.width, grayScaleBlurredCanvas.height);\n ctx.shadowOffsetX = ctx.shadowOffsetY = r2 * 2;\n ctx.shadowBlur = blur;\n ctx.shadowColor = 'black';\n ctx.beginPath();\n ctx.arc(-r2, -r2, radius, 0, Math.PI * 2, true);\n ctx.closePath();\n ctx.fill();\n };\n Heatmap.prototype.drawWithRange = function (data, range, radius, blur) {\n var e_1, _a;\n // canvas size\n var _b = this.coordinate,\n start = _b.start,\n end = _b.end;\n var width = this.coordinate.getWidth();\n var height = this.coordinate.getHeight();\n // value, range, etc\n var colorAttr = this.getAttribute('color');\n var valueField = colorAttr.getFields()[0];\n // prepare shadow canvas context\n this.clearShadowCanvasCtx();\n var ctx = this.getShadowCanvasCtx();\n // filter data\n if (range) {\n data = data.filter(function (row) {\n return row[FIELD_ORIGIN][valueField] <= range[1] && row[FIELD_ORIGIN][valueField] >= range[0];\n });\n }\n // step1. draw points with shadow\n var scale = this.scales[valueField];\n try {\n for (var data_1 = __values(data), data_1_1 = data_1.next(); !data_1_1.done; data_1_1 = data_1.next()) {\n var obj = data_1_1.value;\n var _c = this.getDrawCfg(obj),\n x = _c.x,\n y = _c.y;\n var alpha = scale.scale(obj[FIELD_ORIGIN][valueField]);\n this.drawGrayScaleBlurredCircle(x - start.x, y - end.y, radius + blur, alpha, ctx);\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (data_1_1 && !data_1_1.done && (_a = data_1.return)) _a.call(data_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n // step2. convert pixels\n var colored = ctx.getImageData(0, 0, width, height);\n this.clearShadowCanvasCtx();\n this.colorize(colored);\n ctx.putImageData(colored, 0, 0);\n var imageShape = this.getImageShape();\n imageShape.attr('x', start.x);\n imageShape.attr('y', end.y);\n imageShape.attr('width', width);\n imageShape.attr('height', height);\n imageShape.attr('img', ctx.canvas);\n imageShape.set('origin', this.getShapeInfo(data)); // 存储绘图信息数据\n };\n\n Heatmap.prototype.getDefaultSize = function () {\n var position = this.getAttribute('position');\n var coordinate = this.coordinate;\n return Math.min(coordinate.getWidth() / (position.scales[0].ticks.length * 4), coordinate.getHeight() / (position.scales[1].ticks.length * 4));\n };\n Heatmap.prototype.clearShadowCanvasCtx = function () {\n var ctx = this.getShadowCanvasCtx();\n ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);\n };\n Heatmap.prototype.getShadowCanvasCtx = function () {\n var canvas = this.shadowCanvas;\n if (!canvas) {\n canvas = document.createElement('canvas');\n this.shadowCanvas = canvas;\n }\n canvas.width = this.coordinate.getWidth();\n canvas.height = this.coordinate.getHeight();\n return canvas.getContext('2d');\n };\n Heatmap.prototype.getGrayScaleBlurredCanvas = function () {\n if (!this.grayScaleBlurredCanvas) {\n this.grayScaleBlurredCanvas = document.createElement('canvas');\n }\n return this.grayScaleBlurredCanvas;\n };\n Heatmap.prototype.drawGrayScaleBlurredCircle = function (x, y, r, alpha, ctx) {\n var grayScaleBlurredCanvas = this.getGrayScaleBlurredCanvas();\n ctx.globalAlpha = alpha;\n ctx.drawImage(grayScaleBlurredCanvas, x - r, y - r);\n };\n Heatmap.prototype.colorize = function (img) {\n var colorAttr = this.getAttribute('color');\n var pixels = img.data;\n var paletteCache = this.paletteCache;\n for (var i = 3; i < pixels.length; i += 4) {\n var alpha = pixels[i]; // get gradient color from opacity value\n if (isNumber(alpha)) {\n var palette = paletteCache[alpha] ? paletteCache[alpha] : ColorUtil.rgb2arr(colorAttr.gradient(alpha / 256));\n pixels[i - 3] = palette[0];\n pixels[i - 2] = palette[1];\n pixels[i - 1] = palette[2];\n pixels[i] = alpha;\n }\n }\n };\n Heatmap.prototype.getImageShape = function () {\n var imageShape = this.imageShape;\n if (imageShape) {\n return imageShape;\n }\n var container = this.container;\n imageShape = container.addShape({\n type: 'image',\n attrs: {}\n });\n this.imageShape = imageShape;\n return imageShape;\n };\n Heatmap.prototype.getShapeInfo = function (mappingData) {\n var shapeCfg = this.getDrawCfg(mappingData[0]);\n var data = mappingData.map(function (obj) {\n return obj[FIELD_ORIGIN];\n });\n return __assign(__assign({}, shapeCfg), {\n mappingData: mappingData,\n data: data\n });\n };\n return Heatmap;\n}(Geometry);\nexport default Heatmap;","import { __read, __spreadArray } from \"tslib\";\nimport { isArray, isNil, get } from '@antv/util';\nimport { getAngle, getSectorPath } from '../../../util/graphics';\n/**\n * @ignore\n * 根据数据点生成矩形的四个关键点\n * @param pointInfo 数据点信息\n * @param [isPyramid] 是否为尖底漏斗图\n * @returns rect points 返回矩形四个顶点信息\n */\nexport function getRectPoints(pointInfo) {\n var _a, _b;\n var x = pointInfo.x,\n y = pointInfo.y,\n y0 = pointInfo.y0,\n size = pointInfo.size;\n // 有 4 种情况,\n // 1. x, y 都不是数组\n // 2. y是数组,x不是\n // 3. x是数组,y不是\n // 4. x, y 都是数组\n var yMin;\n var yMax;\n if (isArray(y)) {\n _a = __read(y, 2), yMin = _a[0], yMax = _a[1];\n } else {\n yMin = y0;\n yMax = y;\n }\n var xMin;\n var xMax;\n if (isArray(x)) {\n _b = __read(x, 2), xMin = _b[0], xMax = _b[1];\n } else {\n xMin = x - size / 2;\n xMax = x + size / 2;\n }\n var points = [{\n x: xMin,\n y: yMin\n }, {\n x: xMin,\n y: yMax\n }];\n // 矩形的四个关键点,结构如下(左下角顺时针连接)\n // 1 ---- 2\n // | |\n // 0 ---- 3\n points.push({\n x: xMax,\n y: yMax\n }, {\n x: xMax,\n y: yMin\n });\n return points;\n}\n/**\n * @ignore\n * 根据矩形关键点绘制 path\n * @param points 关键点数组\n * @param isClosed path 是否需要闭合\n * @returns 返回矩形的 path\n */\nexport function getRectPath(points, isClosed) {\n if (isClosed === void 0) {\n isClosed = true;\n }\n var path = [];\n var firstPoint = points[0];\n path.push(['M', firstPoint.x, firstPoint.y]);\n for (var i = 1, len = points.length; i < len; i++) {\n path.push(['L', points[i].x, points[i].y]);\n }\n // 对于 shape=\"line\" path 不应该闭合,否则会造成 lineCap 绘图属性失效\n if (isClosed) {\n path.push(['L', firstPoint.x, firstPoint.y]); // 需要闭合\n path.push(['z']);\n }\n return path;\n}\n/**\n * 处理 rect path 的 radius\n * @returns 返回矩形 path 的四个角的 arc 半径\n */\nexport function parseRadius(radius, minLength) {\n var r1 = 0;\n var r2 = 0;\n var r3 = 0;\n var r4 = 0;\n if (isArray(radius)) {\n if (radius.length === 1) {\n r1 = r2 = r3 = r4 = radius[0];\n } else if (radius.length === 2) {\n r1 = r3 = radius[0];\n r2 = r4 = radius[1];\n } else if (radius.length === 3) {\n r1 = radius[0];\n r2 = r4 = radius[1];\n r3 = radius[2];\n } else {\n r1 = radius[0];\n r2 = radius[1];\n r3 = radius[2];\n r4 = radius[3];\n }\n } else {\n r1 = r2 = r3 = r4 = radius;\n }\n // 处理 边界值\n if (r1 + r2 > minLength) {\n r1 = r1 ? minLength / (1 + r2 / r1) : 0;\n r2 = minLength - r1;\n }\n if (r3 + r4 > minLength) {\n r3 = r3 ? minLength / (1 + r4 / r3) : 0;\n r4 = minLength - r3;\n }\n return [r1 || 0, r2 || 0, r3 || 0, r4 || 0];\n}\n/**\n * 获取 interval 矩形背景的 path\n * @param cfg 关键点的信息\n * @param points 已转化为画布坐标的 4 个关键点\n * @param coordinate 坐标系\n * @returns 返回矩形背景的 path\n */\nexport function getBackgroundRectPath(cfg, points, coordinate) {\n var path = [];\n if (coordinate.isRect) {\n var p0 = coordinate.isTransposed ? {\n x: coordinate.start.x,\n y: points[0].y\n } : {\n x: points[0].x,\n y: coordinate.start.y\n };\n var p1 = coordinate.isTransposed ? {\n x: coordinate.end.x,\n y: points[2].y\n } : {\n x: points[3].x,\n y: coordinate.end.y\n };\n // corner radius of background shape works only in 笛卡尔坐标系\n var radius = get(cfg, ['background', 'style', 'radius']);\n if (radius) {\n var width = coordinate.isTransposed ? Math.abs(points[0].y - points[2].y) : points[2].x - points[1].x;\n var height = coordinate.isTransposed ? coordinate.getWidth() : coordinate.getHeight();\n var _a = __read(parseRadius(radius, Math.min(width, height)), 4),\n r1 = _a[0],\n r2 = _a[1],\n r3 = _a[2],\n r4 = _a[3];\n // 同时存在 坐标系是否发生转置 和 y 镜像的时候\n var isReflectYTransposed_1 = coordinate.isTransposed && coordinate.isReflect('y');\n var bump = isReflectYTransposed_1 ? 0 : 1;\n var opposite = function opposite(r) {\n return isReflectYTransposed_1 ? -r : r;\n };\n path.push(['M', p0.x, p1.y + opposite(r1)]);\n r1 !== 0 && path.push(['A', r1, r1, 0, 0, bump, p0.x + r1, p1.y]);\n path.push(['L', p1.x - r2, p1.y]);\n r2 !== 0 && path.push(['A', r2, r2, 0, 0, bump, p1.x, p1.y + opposite(r2)]);\n path.push(['L', p1.x, p0.y - opposite(r3)]);\n r3 !== 0 && path.push(['A', r3, r3, 0, 0, bump, p1.x - r3, p0.y]);\n path.push(['L', p0.x + r4, p0.y]);\n r4 !== 0 && path.push(['A', r4, r4, 0, 0, bump, p0.x, p0.y - opposite(r4)]);\n } else {\n path.push(['M', p0.x, p0.y]);\n path.push(['L', p1.x, p0.y]);\n path.push(['L', p1.x, p1.y]);\n path.push(['L', p0.x, p1.y]);\n path.push(['L', p0.x, p0.y]);\n }\n path.push(['z']);\n }\n if (coordinate.isPolar) {\n var center = coordinate.getCenter();\n var _b = getAngle(cfg, coordinate),\n startAngle = _b.startAngle,\n endAngle = _b.endAngle;\n if (coordinate.type !== 'theta' && !coordinate.isTransposed) {\n // 获取扇形 path\n path = getSectorPath(center.x, center.y, coordinate.getRadius(), startAngle, endAngle);\n } else {\n var pow = function pow(v) {\n return Math.pow(v, 2);\n };\n var r1 = Math.sqrt(pow(center.x - points[0].x) + pow(center.y - points[0].y));\n var r2 = Math.sqrt(pow(center.x - points[2].x) + pow(center.y - points[2].y));\n // 获取扇形 path(其实是一个圆环,从 coordinate 的起始角度到结束角度)\n path = getSectorPath(center.x, center.y, r1, coordinate.startAngle, coordinate.endAngle, r2);\n }\n }\n return path;\n}\n/**\n * @ignore\n * 根据矩形关键点绘制 path\n * @param points 关键点数组\n * @param lineCap 'round'圆角样式\n * @param coor 坐标\n * @returns 返回矩形的 path\n */\nexport function getIntervalRectPath(points, lineCap, coor) {\n var width = coor.getWidth();\n var height = coor.getHeight();\n var isRect = coor.type === 'rect';\n var path = [];\n var r = (points[2].x - points[1].x) / 2;\n var ry = coor.isTransposed ? r * height / width : r * width / height;\n if (lineCap === 'round') {\n if (isRect) {\n path.push(['M', points[0].x, points[0].y + ry]);\n path.push(['L', points[1].x, points[1].y - ry]);\n path.push(['A', r, r, 0, 0, 1, points[2].x, points[2].y - ry]);\n path.push(['L', points[3].x, points[3].y + ry]);\n path.push(['A', r, r, 0, 0, 1, points[0].x, points[0].y + ry]);\n } else {\n path.push(['M', points[0].x, points[0].y]);\n path.push(['L', points[1].x, points[1].y]);\n path.push(['A', r, r, 0, 0, 1, points[2].x, points[2].y]);\n path.push(['L', points[3].x, points[3].y]);\n path.push(['A', r, r, 0, 0, 1, points[0].x, points[0].y]);\n }\n path.push(['z']);\n } else {\n path = getRectPath(points);\n }\n return path;\n}\n/**\n * @ignore\n * 根据 funnel 关键点绘制漏斗图的 path\n * @param points 图形关键点信息\n * @param nextPoints 下一个数据的图形关键点信息\n * @param isPyramid 是否为尖底漏斗图\n * @returns 返回漏斗图的图形 path\n */\nexport function getFunnelPath(points, nextPoints, isPyramid) {\n var path = [];\n if (!isNil(nextPoints)) {\n path.push(['M', points[0].x, points[0].y], ['L', points[1].x, points[1].y], ['L', nextPoints[1].x, nextPoints[1].y], ['L', nextPoints[0].x, nextPoints[0].y], ['Z']);\n } else if (isPyramid) {\n // 金字塔最底部\n path.push(['M', points[0].x, points[0].y], ['L', points[1].x, points[1].y], ['L', (points[2].x + points[3].x) / 2, (points[2].y + points[3].y) / 2], ['Z']);\n } else {\n // 漏斗图最底部\n path.push(['M', points[0].x, points[0].y], ['L', points[1].x, points[1].y], ['L', points[2].x, points[2].y], ['L', points[3].x, points[3].y], ['Z']);\n }\n return path;\n}\n/**\n * 交换两个对象\n */\nfunction swap(p0, p1) {\n return [p1, p0];\n}\n/**\n * 获取 倒角 矩形\n * - 目前只适用于笛卡尔坐标系下\n */\nexport function getRectWithCornerRadius(points, coordinate, radius) {\n var _a, _b, _c, _d, _e, _f, _g;\n // 获取 四个关键点\n var _h = __read(__spreadArray([], __read(points), false), 4),\n p0 = _h[0],\n p1 = _h[1],\n p2 = _h[2],\n p3 = _h[3];\n var _j = __read(typeof radius === 'number' ? Array(4).fill(radius) : radius, 4),\n r1 = _j[0],\n r2 = _j[1],\n r3 = _j[2],\n r4 = _j[3];\n if (coordinate.isTransposed) {\n _a = __read(swap(p1, p3), 2), p1 = _a[0], p3 = _a[1];\n }\n /**\n * 存在镜像\n */\n if (coordinate.isReflect('y')) {\n _b = __read(swap(p0, p1), 2), p0 = _b[0], p1 = _b[1];\n _c = __read(swap(p2, p3), 2), p2 = _c[0], p3 = _c[1];\n }\n if (coordinate.isReflect('x')) {\n _d = __read(swap(p0, p3), 2), p0 = _d[0], p3 = _d[1];\n _e = __read(swap(p1, p2), 2), p1 = _e[0], p2 = _e[1];\n }\n var path = [];\n /**\n * p1 → p2\n * ↑ ↓\n * p0 ← p3\n *\n * 负数的情况,关键点会变成下面的形式\n *\n * p0 ← p3 p2 ← p1\n * ↓ ↑ ↓ ↑\n * p1 → p2 --> (转置下) p3 → p0\n */\n var abs = function abs(v) {\n return Math.abs(v);\n };\n _f = __read(parseRadius([r1, r2, r3, r4], Math.min(abs(p3.x - p0.x), abs(p1.y - p0.y))).map(function (d) {\n return abs(d);\n }), 4), r1 = _f[0], r2 = _f[1], r3 = _f[2], r4 = _f[3];\n if (coordinate.isTransposed) {\n _g = __read([r4, r1, r2, r3], 4), r1 = _g[0], r2 = _g[1], r3 = _g[2], r4 = _g[3];\n }\n if (p0.y < p1.y /** 负数情况 */) {\n path.push(['M', p3.x, p3.y + r3]);\n r3 !== 0 && path.push(['A', r3, r3, 0, 0, 0, p3.x - r3, p3.y]);\n path.push(['L', p0.x + r4, p0.y]);\n r4 !== 0 && path.push(['A', r4, r4, 0, 0, 0, p0.x, p0.y + r4]);\n path.push(['L', p1.x, p1.y - r1]);\n r1 !== 0 && path.push(['A', r1, r1, 0, 0, 0 /** 逆时针 */, p1.x + r1, p1.y]);\n path.push(['L', p2.x - r2, p2.y]);\n r2 !== 0 && path.push(['A', r2, r2, 0, 0, 0, p2.x, p2.y - r2]);\n path.push(['L', p3.x, p3.y + r3]);\n path.push(['z']);\n } else if (p3.x < p0.x) {\n path.push(['M', p2.x + r2, p2.y]);\n r2 !== 0 && path.push(['A', r2, r2, 0, 0, 0, p2.x, p2.y + r2]);\n path.push(['L', p3.x, p3.y - r3]);\n r3 !== 0 && path.push(['A', r3, r3, 0, 0, 0, p3.x + r3, p3.y]);\n path.push(['L', p0.x - r4, p0.y]);\n r4 !== 0 && path.push(['A', r4, r4, 0, 0, 0, p0.x, p0.y - r4]);\n path.push(['L', p1.x, p1.y + r1]);\n r1 !== 0 && path.push(['A', r1, r1, 0, 0, 0, p1.x - r1, p1.y]);\n path.push(['L', p2.x + r2, p2.y]);\n path.push(['z']);\n } else {\n path.push(['M', p1.x, p1.y + r1]);\n r1 !== 0 && path.push(['A', r1, r1, 0, 0, 1, p1.x + r1, p1.y]);\n path.push(['L', p2.x - r2, p2.y]);\n r2 !== 0 && path.push(['A', r2, r2, 0, 0, 1, p2.x, p2.y + r2]);\n path.push(['L', p3.x, p3.y - r3]);\n r3 !== 0 && path.push(['A', r3, r3, 0, 0, 1, p3.x - r3, p3.y]);\n path.push(['L', p0.x + r4, p0.y]);\n r4 !== 0 && path.push(['A', r4, r4, 0, 0, 1, p0.x, p0.y - r4]);\n path.push(['L', p1.x, p1.y + r1]);\n path.push(['z']);\n }\n return path;\n}","import { __assign } from \"tslib\";\nimport { registerShape, registerShapeFactory } from '../base';\nimport { BACKGROUND_SHAPE } from '../constant';\nimport { getBackgroundRectStyle, getStyle } from '../util/get-style';\nimport { getBackgroundRectPath, getIntervalRectPath, getRectPoints, getRectWithCornerRadius } from './util';\n/** Interval 的 shape 工厂 */\nvar IntervalShapeFactory = registerShapeFactory('interval', {\n defaultShapeType: 'rect',\n getDefaultPoints: function getDefaultPoints(pointInfo) {\n return getRectPoints(pointInfo);\n }\n});\n/** Inerval 默认 shape,填充的矩形 */\nregisterShape('interval', 'rect', {\n draw: function draw(cfg, container) {\n var style = getStyle(cfg, false, true);\n var group = container;\n var backgroundCfg = cfg === null || cfg === void 0 ? void 0 : cfg.background;\n if (backgroundCfg) {\n group = container.addGroup({\n name: 'interval-group'\n });\n var backgroundStyle = getBackgroundRectStyle(cfg);\n var backgroundPath = getBackgroundRectPath(cfg, this.parsePoints(cfg.points), this.coordinate);\n group.addShape('path', {\n attrs: __assign(__assign({}, backgroundStyle), {\n path: backgroundPath\n }),\n capture: false,\n zIndex: -1,\n name: BACKGROUND_SHAPE\n });\n }\n var path;\n if (style.radius && this.coordinate.isRect) {\n path = getRectWithCornerRadius(this.parsePoints(cfg.points), this.coordinate, style.radius);\n } else {\n path = this.parsePath(getIntervalRectPath(cfg.points, style.lineCap, this.coordinate));\n }\n var shape = group.addShape('path', {\n attrs: __assign(__assign({}, style), {\n path: path\n }),\n name: 'interval'\n });\n return backgroundCfg ? group : shape;\n },\n getMarker: function getMarker(markerCfg) {\n var color = markerCfg.color,\n isInPolar = markerCfg.isInPolar;\n if (isInPolar) {\n return {\n symbol: 'circle',\n style: {\n r: 4.5,\n fill: color\n }\n };\n }\n return {\n symbol: 'square',\n style: {\n r: 4,\n fill: color\n }\n };\n }\n});\nexport default IntervalShapeFactory;","import { flatten, isString, valuesOfKey, isNil } from '@antv/util';\nimport { getXDimensionLength } from '../../util/coordinate';\n// 已经排序后的数据查找距离最小的\nfunction findMinDistance(arr, scale) {\n var count = arr.length;\n var sourceArr = arr;\n if (isString(sourceArr[0])) {\n // 日期类型的 values 经常上文本类型,所以需要转换一下\n sourceArr = arr.map(function (v) {\n return scale.translate(v);\n });\n }\n var distance = sourceArr[1] - sourceArr[0];\n for (var i = 2; i < count; i++) {\n var tmp = sourceArr[i] - sourceArr[i - 1];\n if (distance > tmp) {\n distance = tmp;\n }\n }\n return distance;\n}\nfunction getDodgeCount(dataArray, dodgeBy) {\n if (dodgeBy) {\n var mergeData = flatten(dataArray);\n var values = valuesOfKey(mergeData, dodgeBy);\n return values.length;\n }\n return dataArray.length;\n}\n/** @ignore */\nexport function getDefaultSize(geometry) {\n var theme = geometry.theme;\n var coordinate = geometry.coordinate;\n var xScale = geometry.getXScale();\n var xValues = xScale.values;\n var dataArray = geometry.beforeMappingData;\n var count = xValues.length;\n var xDimensionLength = getXDimensionLength(geometry.coordinate);\n // 获取柱宽相关配置项\n var intervalPadding = geometry.intervalPadding,\n dodgePadding = geometry.dodgePadding;\n // 兼容theme配置\n var maxColumnWidth = geometry.maxColumnWidth || theme.maxColumnWidth;\n var minColumnWidth = geometry.minColumnWidth || theme.minColumnWidth;\n var columnWidthRatio = geometry.columnWidthRatio || theme.columnWidthRatio;\n var multiplePieWidthRatio = geometry.multiplePieWidthRatio || theme.multiplePieWidthRatio;\n var roseWidthRatio = geometry.roseWidthRatio || theme.roseWidthRatio;\n // 线性情况下count值\n if (xScale.isLinear && xValues.length > 1) {\n // Linear 类型用户有可能设置了 min, max 范围所以需要根据数据最小区间计算 count\n xValues.sort();\n var interval = findMinDistance(xValues, xScale);\n count = (xScale.max - xScale.min) / interval;\n if (xValues.length > count) {\n count = xValues.length;\n }\n }\n var range = xScale.range;\n var normalizedSize = 1 / count;\n var wr = 1;\n if (coordinate.isPolar) {\n // 极坐标场景\n if (coordinate.isTransposed && count > 1) {\n // 极坐标下多层环图\n wr = multiplePieWidthRatio;\n } else {\n wr = roseWidthRatio;\n }\n } else {\n // 非极坐标场景\n if (xScale.isLinear) {\n normalizedSize *= range[1] - range[0];\n }\n wr = columnWidthRatio;\n }\n // 基础柱状图\n if (!isNil(intervalPadding) && intervalPadding >= 0) {\n // 配置组间距情况\n var normalizedIntervalPadding = intervalPadding / xDimensionLength;\n normalizedSize = (1 - (count - 1) * normalizedIntervalPadding) / count;\n } else {\n // 默认情况\n normalizedSize *= wr;\n }\n // 分组柱状图\n if (geometry.getAdjust('dodge')) {\n var dodgeAdjust = geometry.getAdjust('dodge');\n var dodgeBy = dodgeAdjust.dodgeBy;\n var dodgeCount = getDodgeCount(dataArray, dodgeBy);\n if (!isNil(dodgePadding) && dodgePadding >= 0) {\n // 仅配置组内间距情况\n var normalizedDodgePadding = dodgePadding / xDimensionLength;\n normalizedSize = (normalizedSize - normalizedDodgePadding * (dodgeCount - 1)) / dodgeCount;\n } else if (!isNil(intervalPadding) && intervalPadding >= 0) {\n // 设置组间距但未设置组内间距情况,避免组间距过小导致图形重叠,需乘以wr\n normalizedSize *= wr;\n normalizedSize = normalizedSize / dodgeCount;\n } else {\n // 组间距和组内间距均未配置\n normalizedSize = normalizedSize / dodgeCount;\n }\n normalizedSize = normalizedSize >= 0 ? normalizedSize : 0;\n }\n // 最大和最小限制\n if (!isNil(maxColumnWidth) && maxColumnWidth >= 0) {\n var normalizedMaxColumnWidth = maxColumnWidth / xDimensionLength;\n if (normalizedSize > normalizedMaxColumnWidth) {\n normalizedSize = normalizedMaxColumnWidth;\n }\n }\n // \bminColumnWidth可能设置为0\n if (!isNil(minColumnWidth) && minColumnWidth >= 0) {\n var normalizedMinColumnWidth = minColumnWidth / xDimensionLength;\n if (normalizedSize < normalizedMinColumnWidth) {\n normalizedSize = normalizedMinColumnWidth;\n }\n }\n return normalizedSize;\n}","import { __extends } from \"tslib\";\nimport { get } from '@antv/util';\nimport { getXDimensionLength } from '../util/coordinate';\nimport Geometry from './base';\n/** 引入对应的 ShapeFactory */\nimport './shape/interval';\nimport { getDefaultSize } from './util/shape-size';\nimport { getMaxScale } from '../util/scale';\n/**\n * Interval 几何标记。\n * 用于绘制柱状图、饼图、条形图、玫瑰图等。\n */\nvar Interval = /** @class */function (_super) {\n __extends(Interval, _super);\n function Interval(cfg) {\n var _this = _super.call(this, cfg) || this;\n _this.type = 'interval';\n _this.shapeType = 'interval';\n _this.generatePoints = true;\n var background = cfg.background;\n _this.background = background;\n return _this;\n }\n /**\n * 获取每条数据的 Shape 绘制信息\n * @param obj 经过分组 -> 数字化 -> adjust 调整后的数据记录\n * @returns\n */\n Interval.prototype.createShapePointsCfg = function (obj) {\n var cfg = _super.prototype.createShapePointsCfg.call(this, obj);\n // 计算每个 shape 的 size\n var size;\n var sizeAttr = this.getAttribute('size');\n if (sizeAttr) {\n size = this.getAttributeValues(sizeAttr, obj)[0];\n // 归一化\n var coordinate = this.coordinate;\n var coordinateWidth = getXDimensionLength(coordinate);\n size = size / coordinateWidth;\n } else {\n if (!this.defaultSize) {\n this.defaultSize = getDefaultSize(this);\n }\n size = this.defaultSize;\n }\n cfg.size = size;\n return cfg;\n };\n /**\n * 调整 y 轴的 scale 范围。\n * 对于 Y 轴为数值轴柱状图,默认从 0 开始 生长。\n */\n Interval.prototype.adjustScale = function () {\n _super.prototype.adjustScale.call(this);\n var yScale = this.getYScale();\n // 特殊逻辑:饼图需要填充满整个空间\n if (this.coordinate.type === 'theta') {\n yScale.change({\n nice: false,\n min: 0,\n // 发生过 stack 调整,yScale 的 max 被调整过,this.updateStackRange()\n max: getMaxScale(yScale)\n });\n } else {\n // 柱状图数值轴默认从 0 开始\n var scaleDefs = this.scaleDefs;\n var field = yScale.field,\n min = yScale.min,\n max = yScale.max,\n type = yScale.type;\n if (type !== 'time') {\n // time 类型不做调整\n // 柱状图的 Y 轴要从 0 开始生长,但是如果用户设置了则以用户的为准\n if (min > 0 && !get(scaleDefs, [field, 'min'])) {\n yScale.change({\n min: 0\n });\n }\n // 柱当柱状图全为负值时也需要从 0 开始生长,但是如果用户设置了则以用户的为准\n if (max <= 0 && !get(scaleDefs, [field, 'max'])) {\n yScale.change({\n max: 0\n });\n }\n }\n }\n };\n /**\n * @override\n */\n Interval.prototype.getDrawCfg = function (mappingData) {\n var shapeCfg = _super.prototype.getDrawCfg.call(this, mappingData);\n shapeCfg.background = this.background;\n return shapeCfg;\n };\n return Interval;\n}(Geometry);\nexport default Interval;","import { __extends } from \"tslib\";\nimport Path from './path';\n/** 引入 Path 对应的 ShapeFactory */\nimport './shape/line';\n/**\n * Line 几何标记。\n * 常用于折线图的绘制。\n */\nvar Line = /** @class */function (_super) {\n __extends(Line, _super);\n function Line(cfg) {\n var _this = _super.call(this, cfg) || this;\n _this.type = 'line';\n var _a = cfg.sortable,\n sortable = _a === void 0 ? false : _a; // 关闭默认的 X 轴数据排序\n _this.sortable = sortable;\n return _this;\n }\n return Line;\n}(Path);\nexport default Line;","import { __assign, __values } from \"tslib\";\nimport { MarkerSymbols } from '../../../util/marker';\nimport { getStyle } from '../util/get-style';\nexport var SHAPES = ['circle', 'square', 'bowtie', 'diamond', 'hexagon', 'triangle', 'triangle-down'];\nexport var HOLLOW_SHAPES = ['cross', 'tick', 'plus', 'hyphen', 'line'];\n/**\n * @ignore\n * Draws points\n * @param shape\n * @param cfg\n * @param container\n * @param shapeName\n * @param isStroke\n * @returns points\n */\nexport function drawPoints(shape, cfg, container, shapeName, isStroke) {\n var e_1, _a;\n var style = getStyle(cfg, isStroke, !isStroke, 'r');\n var points = shape.parsePoints(cfg.points);\n var pointPosition = points[0];\n if (cfg.isStack) {\n pointPosition = points[1];\n } else if (points.length > 1) {\n var group = container.addGroup();\n try {\n for (var points_1 = __values(points), points_1_1 = points_1.next(); !points_1_1.done; points_1_1 = points_1.next()) {\n var point = points_1_1.value;\n group.addShape({\n type: 'marker',\n attrs: __assign(__assign(__assign({}, style), {\n symbol: MarkerSymbols[shapeName] || shapeName\n }), point)\n });\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (points_1_1 && !points_1_1.done && (_a = points_1.return)) _a.call(points_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n return group;\n }\n return container.addShape({\n type: 'marker',\n attrs: __assign(__assign(__assign({}, style), {\n symbol: MarkerSymbols[shapeName] || shapeName\n }), pointPosition)\n });\n}","import { each } from '@antv/util';\nimport { MarkerSymbols } from '../../../util/marker';\nimport { registerShape, registerShapeFactory } from '../base';\nimport { splitPoints } from '../util/split-points';\nimport { drawPoints, SHAPES } from './util';\nvar PointShapeFactory = registerShapeFactory('point', {\n defaultShapeType: 'hollow-circle',\n getDefaultPoints: function getDefaultPoints(pointInfo) {\n return splitPoints(pointInfo);\n }\n});\neach(SHAPES, function (shapeName) {\n // 添加该 shape 对应的 hollow-shape\n registerShape('point', \"hollow-\".concat(shapeName), {\n draw: function draw(cfg, container) {\n return drawPoints(this, cfg, container, shapeName, true);\n },\n getMarker: function getMarker(markerCfg) {\n var color = markerCfg.color;\n return {\n symbol: MarkerSymbols[shapeName] || shapeName,\n style: {\n r: 4.5,\n stroke: color,\n fill: null\n }\n };\n }\n });\n});\nexport default PointShapeFactory;","import { __assign, __extends } from \"tslib\";\nimport Geometry from './base';\n/** 引入 Point 对应的 ShapeFactory */\nimport './shape/point';\n/**\n * Point 几何标记。\n * 常用于绘制点图。\n */\nvar Point = /** @class */function (_super) {\n __extends(Point, _super);\n function Point() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'point';\n _this.shapeType = 'point';\n _this.generatePoints = true;\n return _this;\n }\n /**\n * 获取一个点的绘制信息。\n * @param mappingDatum\n * @returns draw cfg\n */\n Point.prototype.getDrawCfg = function (mappingDatum) {\n var shapeCfg = _super.prototype.getDrawCfg.call(this, mappingDatum);\n return __assign(__assign({}, shapeCfg), {\n isStack: !!this.getAdjust('stack')\n });\n };\n return Point;\n}(Geometry);\nexport default Point;","import { __assign } from \"tslib\";\nimport { each, isEmpty, isEqual, last } from '@antv/util';\nimport { registerShape, registerShapeFactory } from '../base';\nimport { getStyle } from '../util/get-style';\nfunction getPath(points) {\n var flag = points[0];\n var i = 1;\n var path = [['M', flag.x, flag.y]];\n while (i < points.length) {\n var c = points[i];\n if (c.x !== points[i - 1].x || c.y !== points[i - 1].y) {\n path.push(['L', c.x, c.y]);\n if (c.x === flag.x && c.y === flag.y && i < points.length - 1) {\n flag = points[i + 1];\n path.push(['Z']);\n path.push(['M', flag.x, flag.y]);\n i++;\n }\n }\n i++;\n }\n if (!isEqual(last(path), flag)) {\n path.push(['L', flag.x, flag.y]);\n }\n path.push(['Z']);\n return path;\n}\nvar PolygonShapeFactory = registerShapeFactory('polygon', {\n defaultShapeType: 'polygon',\n getDefaultPoints: function getDefaultPoints(pointInfo) {\n var points = [];\n each(pointInfo.x, function (subX, index) {\n var subY = pointInfo.y[index];\n points.push({\n x: subX,\n y: subY\n });\n });\n return points;\n }\n});\nregisterShape('polygon', 'polygon', {\n draw: function draw(cfg, container) {\n if (!isEmpty(cfg.points)) {\n var shapeAttrs = getStyle(cfg, true, true);\n var path = this.parsePath(getPath(cfg.points));\n return container.addShape('path', {\n attrs: __assign(__assign({}, shapeAttrs), {\n path: path\n }),\n name: 'polygon'\n });\n }\n },\n getMarker: function getMarker(markerCfg) {\n var color = markerCfg.color;\n return {\n symbol: 'square',\n style: {\n r: 4,\n fill: color\n }\n };\n }\n});\nexport default PolygonShapeFactory;","import { __extends } from \"tslib\";\nimport { isArray } from '@antv/util';\nimport Geometry from './base';\n/** 引入 Path 对应的 ShapeFactory */\nimport './shape/polygon';\n/**\n * Polygon 几何标记。\n * 常用于绘制色块图、日历图等。\n */\nvar Polygon = /** @class */function (_super) {\n __extends(Polygon, _super);\n function Polygon() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'polygon';\n _this.shapeType = 'polygon';\n _this.generatePoints = true;\n return _this;\n }\n /**\n * 获取 Shape 的关键点数据。\n * @param obj\n * @returns\n */\n Polygon.prototype.createShapePointsCfg = function (obj) {\n var cfg = _super.prototype.createShapePointsCfg.call(this, obj);\n var x = cfg.x;\n var y = cfg.y;\n var temp;\n // x y 都是数组时,不做处理\n if (!(isArray(x) && isArray(y))) {\n var xScale = this.getXScale();\n var yScale = this.getYScale();\n var xCount = xScale.values.length;\n var yCount = yScale.values.length;\n var xOffset = 0.5 * 1 / xCount;\n var yOffset = 0.5 * 1 / yCount;\n if (xScale.isCategory && yScale.isCategory) {\n // 如果x,y都是分类\n x = [x - xOffset, x - xOffset, x + xOffset, x + xOffset];\n y = [y - yOffset, y + yOffset, y + yOffset, y - yOffset];\n } else if (isArray(x)) {\n // x 是数组\n temp = x;\n x = [temp[0], temp[0], temp[1], temp[1]];\n y = [y - yOffset / 2, y + yOffset / 2, y + yOffset / 2, y - yOffset / 2];\n } else if (isArray(y)) {\n // y 是数组\n temp = y;\n y = [temp[0], temp[1], temp[1], temp[0]];\n x = [x - xOffset / 2, x - xOffset / 2, x + xOffset / 2, x + xOffset / 2];\n }\n cfg.x = x;\n cfg.y = y;\n }\n return cfg;\n };\n return Polygon;\n}(Geometry);\nexport default Polygon;","import { __extends } from \"tslib\";\nimport { getXDimensionLength } from '../util/coordinate';\nimport Geometry from './base';\n/** 引入对应的 ShapeFactory */\nimport './shape/schema';\nimport { getDefaultSize } from './util/shape-size';\n/**\n * Schema 几何标记,用于一些自定义图形的绘制,比如箱型图、股票图等。\n */\nvar Schema = /** @class */function (_super) {\n __extends(Schema, _super);\n function Schema() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'schema';\n _this.shapeType = 'schema';\n _this.generatePoints = true;\n return _this;\n }\n /**\n * 获取 Shape 的关键点数据。\n * @param record\n * @returns\n */\n Schema.prototype.createShapePointsCfg = function (record) {\n var cfg = _super.prototype.createShapePointsCfg.call(this, record);\n // 计算每个 shape 的 size\n var size;\n var sizeAttr = this.getAttribute('size');\n if (sizeAttr) {\n size = this.getAttributeValues(sizeAttr, record)[0];\n // 归一化\n var coordinate = this.coordinate;\n var coordinateWidth = getXDimensionLength(coordinate);\n size = size / coordinateWidth;\n } else {\n if (!this.defaultSize) {\n this.defaultSize = getDefaultSize(this);\n }\n size = this.defaultSize;\n }\n cfg.size = size;\n return cfg;\n };\n return Schema;\n}(Geometry);\nexport default Schema;","import { registerShapeFactory } from '../base';\nvar SchemaShapeFactory = registerShapeFactory('schema', {\n defaultShapeType: '' // 'schema' is for some custom shapes, so will not specify defaultShapeType\n});\n\nexport default SchemaShapeFactory;","import { __assign } from \"tslib\";\nimport { each, max, map, isArray } from '@antv/util';\nimport { registerShape, registerShapeFactory } from '../base';\nimport { getViolinPath } from '../util/get-path-points';\nimport { getStyle } from '../util/get-style';\nfunction normalizeSize(arr) {\n if (!isArray(arr)) {\n return [];\n }\n var maxValue = max(arr);\n return map(arr, function (num) {\n return num / maxValue;\n });\n}\nvar ViolinShapeFactory = registerShapeFactory('violin', {\n defaultShapeType: 'violin',\n getDefaultPoints: function getDefaultPoints(pointInfo) {\n var radius = pointInfo.size / 2;\n var points = [];\n var sizeArr = normalizeSize(pointInfo._size);\n each(pointInfo.y, function (y, index) {\n var offset = sizeArr[index] * radius;\n var isMin = index === 0;\n var isMax = index === pointInfo.y.length - 1;\n points.push({\n isMin: isMin,\n isMax: isMax,\n x: pointInfo.x - offset,\n y: y\n });\n points.unshift({\n isMin: isMin,\n isMax: isMax,\n x: pointInfo.x + offset,\n y: y\n });\n });\n return points;\n }\n});\nregisterShape('violin', 'violin', {\n draw: function draw(cfg, container) {\n var shapeAttrs = getStyle(cfg, true, true);\n var path = this.parsePath(getViolinPath(cfg.points));\n return container.addShape('path', {\n attrs: __assign(__assign({}, shapeAttrs), {\n path: path\n }),\n name: 'violin'\n });\n },\n getMarker: function getMarker(markerCfg) {\n var color = markerCfg.color;\n return {\n symbol: 'circle',\n style: {\n r: 4,\n fill: color\n }\n };\n }\n});\nexport default ViolinShapeFactory;","import { __extends } from \"tslib\";\nimport { get } from '@antv/util';\nimport { FIELD_ORIGIN } from '../constant';\nimport { getXDimensionLength } from '../util/coordinate';\nimport { getDefaultSize } from './util/shape-size';\nimport Geometry from './base';\n/** 引入 Path 对应的 ShapeFactory */\nimport './shape/violin';\n/**\n * Violin 几何标记。\n * 用于绘制小提琴图。\n */\nvar Violin = /** @class */function (_super) {\n __extends(Violin, _super);\n function Violin() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'violin';\n _this.shapeType = 'violin';\n _this.generatePoints = true;\n return _this;\n }\n /**\n * 获取 Shape 的关键点数据。\n * @param record\n * @returns\n */\n Violin.prototype.createShapePointsCfg = function (record) {\n var cfg = _super.prototype.createShapePointsCfg.call(this, record);\n // 计算每个 shape 的 size\n var size;\n var sizeAttr = this.getAttribute('size');\n if (sizeAttr) {\n size = this.getAttributeValues(sizeAttr, record)[0];\n // 归一化\n var coordinate = this.coordinate;\n var coordinateWidth = getXDimensionLength(coordinate);\n size = size / coordinateWidth;\n } else {\n if (!this.defaultSize) {\n this.defaultSize = getDefaultSize(this);\n }\n size = this.defaultSize;\n }\n cfg.size = size;\n cfg._size = get(record[FIELD_ORIGIN], [this._sizeField]);\n return cfg;\n };\n /**\n * @override\n */\n Violin.prototype.initAttributes = function () {\n var attributeOption = this.attributeOption;\n var sizeField = attributeOption.size ? attributeOption.size.fields[0] : this._sizeField ? this._sizeField : 'size';\n this._sizeField = sizeField;\n // fixme 干啥要删掉\n delete attributeOption.size;\n _super.prototype.initAttributes.call(this);\n };\n return Violin;\n}(Geometry);\nexport default Violin;","import { each } from '@antv/util';\n/**\n * @ignore\n * Gets cpath\n * @param from\n * @param to\n * @returns\n */\nexport function getCPath(from, to) {\n return ['C', from.x * 1 / 2 + to.x * 1 / 2, from.y, from.x * 1 / 2 + to.x * 1 / 2, to.y, to.x, to.y];\n}\n/**\n * @ignore\n * Gets qpath\n * @param to\n * @param center\n * @returns\n */\nexport function getQPath(to, center) {\n var points = [];\n points.push({\n x: center.x,\n y: center.y\n });\n points.push(to);\n var sub = ['Q'];\n each(points, function (point) {\n sub.push(point.x, point.y);\n });\n return sub;\n}","import { registerShape } from '../base';\nimport { getShapeAttrs } from './util';\n/**\n * 描边但不填充的区域图\n */\nregisterShape('area', 'line', {\n draw: function draw(cfg, container) {\n var attrs = getShapeAttrs(cfg, true, false, this);\n var shape = container.addShape({\n type: 'path',\n attrs: attrs,\n name: 'area'\n });\n return shape;\n },\n getMarker: function getMarker(markerCfg) {\n var color = markerCfg.color;\n return {\n symbol: function symbol(x, y, r) {\n if (r === void 0) {\n r = 5.5;\n }\n return [['M', x - r, y - 4], ['L', x + r, y - 4], ['L', x + r, y + 4], ['L', x - r, y + 4], ['Z']];\n },\n style: {\n r: 5,\n stroke: color,\n fill: null\n }\n };\n }\n});","import { registerShape } from '../base';\nimport { getConstraint, getShapeAttrs } from './util';\n/**\n * 填充的平滑曲面图\n */\nregisterShape('area', 'smooth', {\n draw: function draw(cfg, container) {\n var coordinate = this.coordinate;\n var attrs = getShapeAttrs(cfg, false, true, this, getConstraint(coordinate));\n var shape = container.addShape({\n type: 'path',\n attrs: attrs,\n name: 'area'\n });\n return shape;\n },\n getMarker: function getMarker(markerCfg) {\n var color = markerCfg.color;\n return {\n symbol: function symbol(x, y, r) {\n if (r === void 0) {\n r = 5.5;\n }\n return [['M', x - r, y - 4], ['L', x + r, y - 4], ['L', x + r, y + 4], ['L', x - r, y + 4], ['Z']];\n },\n style: {\n r: 5,\n fill: color,\n fillOpacity: 1\n }\n };\n }\n});","import { registerShape } from '../base';\nimport { getConstraint, getShapeAttrs } from './util';\n/** 描边的平滑曲面图 */\nregisterShape('area', 'smooth-line', {\n draw: function draw(cfg, container) {\n var coordinate = this.coordinate;\n var attrs = getShapeAttrs(cfg, true, true, this, getConstraint(coordinate));\n var shape = container.addShape({\n type: 'path',\n attrs: attrs,\n name: 'area'\n });\n return shape;\n },\n getMarker: function getMarker(markerCfg) {\n var color = markerCfg.color;\n return {\n symbol: function symbol(x, y, r) {\n if (r === void 0) {\n r = 5.5;\n }\n return [['M', x - r, y - 4], ['L', x + r, y - 4], ['L', x + r, y + 4], ['L', x - r, y + 4], ['Z']];\n },\n style: {\n r: 5,\n stroke: color,\n fill: null\n }\n };\n }\n});","import { __assign } from \"tslib\";\nimport { getArcPath } from '../../../util/graphics';\nimport { registerShape } from '../base';\nimport { getStyle } from '../util/get-style';\nimport { getCPath, getQPath } from './util';\nfunction getArcShapePath(from, to, center) {\n var sub = getQPath(to, center);\n var path = [['M', from.x, from.y]];\n path.push(sub);\n return path;\n}\nfunction getArcShapeWeightPath(points, center) {\n var arc1 = getQPath(points[1], center);\n var arc2 = getQPath(points[3], center);\n var path = [['M', points[0].x, points[0].y]];\n path.push(arc2);\n path.push(['L', points[3].x, points[3].y]);\n path.push(['L', points[2].x, points[2].y]);\n path.push(arc1);\n path.push(['L', points[1].x, points[1].y]);\n path.push(['L', points[0].x, points[0].y]);\n path.push(['Z']);\n return path;\n}\n// 弧线包括笛卡尔坐标系下的半圆弧线、极坐标系下以圆心为控制点的二阶曲线、笛卡尔坐标系下带权重的三阶曲线、极坐标系下带权重的以圆心为控制点的二阶曲线\nregisterShape('edge', 'arc', {\n draw: function draw(cfg, container) {\n var style = getStyle(cfg, true, false, 'lineWidth');\n var points = cfg.points;\n var type = points.length > 2 ? 'weight' : 'normal';\n var path;\n if (cfg.isInCircle) {\n var center = {\n x: 0,\n y: 1\n };\n if (type === 'normal') {\n path = getArcShapePath(points[0], points[1], center);\n } else {\n style.fill = style.stroke;\n path = getArcShapeWeightPath(points, center);\n }\n path = this.parsePath(path);\n return container.addShape('path', {\n attrs: __assign(__assign({}, style), {\n path: path\n })\n });\n } else {\n if (type === 'normal') {\n points = this.parsePoints(points);\n path = getArcPath((points[1].x + points[0].x) / 2, points[0].y, Math.abs(points[1].x - points[0].x) / 2, Math.PI, Math.PI * 2);\n return container.addShape('path', {\n attrs: __assign(__assign({}, style), {\n path: path\n })\n });\n } else {\n var c1 = getCPath(points[1], points[3]);\n var c2 = getCPath(points[2], points[0]);\n path = [['M', points[0].x, points[0].y], ['L', points[1].x, points[1].y], c1, ['L', points[3].x, points[3].y], ['L', points[2].x, points[2].y], c2, ['Z']];\n path = this.parsePath(path);\n style.fill = style.stroke;\n return container.addShape('path', {\n attrs: __assign(__assign({}, style), {\n path: path\n })\n });\n }\n }\n },\n getMarker: function getMarker(markerCfg) {\n return {\n symbol: 'circle',\n style: {\n r: 4.5,\n fill: markerCfg.color\n }\n };\n }\n});","import { __assign } from \"tslib\";\nimport { registerShape } from '../base';\nimport { getStyle } from '../util/get-style';\nimport { getCPath } from './util';\nfunction getSmoothPath(from, to) {\n var sub = getCPath(from, to);\n var path = [['M', from.x, from.y]];\n path.push(sub);\n return path;\n}\nregisterShape('edge', 'smooth', {\n draw: function draw(cfg, container) {\n var style = getStyle(cfg, true, false, 'lineWidth');\n var points = cfg.points;\n var path = this.parsePath(getSmoothPath(points[0], points[1]));\n return container.addShape('path', {\n attrs: __assign(__assign({}, style), {\n path: path\n })\n });\n },\n getMarker: function getMarker(markerCfg) {\n return {\n symbol: 'circle',\n style: {\n r: 4.5,\n fill: markerCfg.color\n }\n };\n }\n});","import { __assign } from \"tslib\";\nimport { each } from '@antv/util';\nimport { registerShape } from '../base';\nimport { getStyle } from '../util/get-style';\nvar CORNER_PERCENT = 1 / 3;\nfunction getVHVPath(from, to) {\n var points = [];\n points.push({\n x: from.x,\n y: from.y * (1 - CORNER_PERCENT) + to.y * CORNER_PERCENT\n });\n points.push({\n x: to.x,\n y: from.y * (1 - CORNER_PERCENT) + to.y * CORNER_PERCENT\n });\n points.push(to);\n var path = [['M', from.x, from.y]];\n each(points, function (point) {\n path.push(['L', point.x, point.y]);\n });\n return path;\n}\nregisterShape('edge', 'vhv', {\n draw: function draw(cfg, container) {\n var style = getStyle(cfg, true, false, 'lineWidth');\n var points = cfg.points;\n var path = this.parsePath(getVHVPath(points[0], points[1]));\n return container.addShape('path', {\n attrs: __assign(__assign({}, style), {\n path: path\n })\n });\n },\n getMarker: function getMarker(markerCfg) {\n return {\n symbol: 'circle',\n style: {\n r: 4.5,\n fill: markerCfg.color\n }\n };\n }\n});","import { __assign } from \"tslib\";\nimport { registerShape } from '../base';\nimport { getStyle } from '../util/get-style';\nimport { getFunnelPath, getRectPoints } from './util';\n/** 漏斗图 */\nregisterShape('interval', 'funnel', {\n getPoints: function getPoints(shapePoint) {\n shapePoint.size = shapePoint.size * 2; // 漏斗图的 size 是柱状图的两倍\n return getRectPoints(shapePoint);\n },\n draw: function draw(cfg, container) {\n var style = getStyle(cfg, false, true);\n var path = this.parsePath(getFunnelPath(cfg.points, cfg.nextPoints, false));\n var shape = container.addShape('path', {\n attrs: __assign(__assign({}, style), {\n path: path\n }),\n name: 'interval'\n });\n return shape;\n },\n getMarker: function getMarker(markerCfg) {\n var color = markerCfg.color;\n return {\n symbol: 'square',\n style: {\n r: 4,\n fill: color\n }\n };\n }\n});","import { __assign } from \"tslib\";\nimport { registerShape } from '../base';\nimport { BACKGROUND_SHAPE } from '../constant';\nimport { getBackgroundRectStyle, getStyle } from '../util/get-style';\nimport { getBackgroundRectPath, getRectPath } from './util';\n/** 描边柱状图 */\nregisterShape('interval', 'hollow-rect', {\n draw: function draw(cfg, container) {\n var style = getStyle(cfg, true, false);\n var group = container;\n var backgroundCfg = cfg === null || cfg === void 0 ? void 0 : cfg.background;\n if (backgroundCfg) {\n group = container.addGroup();\n var backgroundStyle = getBackgroundRectStyle(cfg);\n var backgroundPath = getBackgroundRectPath(cfg, this.parsePoints(cfg.points), this.coordinate);\n group.addShape('path', {\n attrs: __assign(__assign({}, backgroundStyle), {\n path: backgroundPath\n }),\n capture: false,\n zIndex: -1,\n name: BACKGROUND_SHAPE\n });\n }\n var path = this.parsePath(getRectPath(cfg.points));\n var shape = group.addShape('path', {\n attrs: __assign(__assign({}, style), {\n path: path\n }),\n name: 'interval'\n });\n return backgroundCfg ? group : shape;\n },\n getMarker: function getMarker(markerCfg) {\n var color = markerCfg.color,\n isInPolar = markerCfg.isInPolar;\n if (isInPolar) {\n return {\n symbol: 'circle',\n style: {\n r: 4.5,\n stroke: color,\n fill: null\n }\n };\n }\n return {\n symbol: 'square',\n style: {\n r: 4,\n stroke: color,\n fill: null\n }\n };\n }\n});","import { __assign } from \"tslib\";\nimport { isArray } from '@antv/util';\nimport { registerShape } from '../base';\nimport { getStyle } from '../util/get-style';\nimport { getRectPath } from './util';\nimport { omit } from '../../../util/helper';\n// 根据数据点生成 Line 的两个关键点\nfunction getLinePoints(pointInfo) {\n var x = pointInfo.x,\n y = pointInfo.y,\n y0 = pointInfo.y0;\n if (isArray(y)) {\n return y.map(function (yItem, idx) {\n return {\n x: isArray(x) ? x[idx] : x,\n y: yItem\n };\n });\n }\n // 起始点从 y0 开始\n return [{\n x: x,\n y: y0\n }, {\n x: x,\n y: y\n }];\n}\nregisterShape('interval', 'line', {\n getPoints: function getPoints(shapePoint) {\n return getLinePoints(shapePoint);\n },\n draw: function draw(cfg, container) {\n var style = getStyle(cfg, true, false, 'lineWidth');\n var newStyle = omit(__assign({}, style), ['fill']);\n var path = this.parsePath(getRectPath(cfg.points, false));\n var shape = container.addShape('path', {\n attrs: __assign(__assign({}, newStyle), {\n path: path\n }),\n name: 'interval'\n });\n return shape;\n },\n getMarker: function getMarker(markerCfg) {\n var color = markerCfg.color;\n return {\n symbol: function symbol(x, y, r) {\n return [['M', x, y - r], ['L', x, y + r]];\n },\n style: {\n r: 5,\n stroke: color\n }\n };\n }\n});","import { __assign } from \"tslib\";\nimport { registerShape } from '../base';\nimport { getStyle } from '../util/get-style';\nimport { getFunnelPath, getRectPoints } from './util';\n/** 金字塔图,尖底漏斗图 */\nregisterShape('interval', 'pyramid', {\n getPoints: function getPoints(shapePoint) {\n shapePoint.size = shapePoint.size * 2; // 漏斗图的 size 是柱状图的两倍\n return getRectPoints(shapePoint);\n },\n draw: function draw(cfg, container) {\n var style = getStyle(cfg, false, true);\n var path = this.parsePath(getFunnelPath(cfg.points, cfg.nextPoints, true));\n var shape = container.addShape('path', {\n attrs: __assign(__assign({}, style), {\n path: path\n }),\n name: 'interval'\n });\n return shape;\n },\n getMarker: function getMarker(markerCfg) {\n var color = markerCfg.color;\n return {\n symbol: 'square',\n style: {\n r: 4,\n fill: color\n }\n };\n }\n});","import { __assign, __read } from \"tslib\";\nimport { isArray } from '@antv/util';\nimport { registerShape } from '../base';\nimport { getStyle } from '../util/get-style';\n// 根据数据点生成 tick shape 的 6 个关键点\nfunction getTickPoints(pointInfo) {\n var _a;\n var x = pointInfo.x,\n y = pointInfo.y,\n y0 = pointInfo.y0,\n size = pointInfo.size;\n var yMin;\n var yMax;\n if (isArray(y)) {\n _a = __read(y, 2), yMin = _a[0], yMax = _a[1];\n } else {\n yMin = y0;\n yMax = y;\n }\n var xMax = x + size / 2;\n var xMin = x - size / 2;\n // tick 关键点顺序\n // 4 - 1 - 5\n // |\n // 2 - 0 - 3\n return [{\n x: x,\n y: yMin\n }, {\n x: x,\n y: yMax\n }, {\n x: xMin,\n y: yMin\n }, {\n x: xMax,\n y: yMin\n }, {\n x: xMin,\n y: yMax\n }, {\n x: xMax,\n y: yMax\n }];\n}\n// 根据 tick 关键点绘制 path\nfunction getTickPath(points) {\n return [['M', points[0].x, points[0].y], ['L', points[1].x, points[1].y], ['M', points[2].x, points[2].y], ['L', points[3].x, points[3].y], ['M', points[4].x, points[4].y], ['L', points[5].x, points[5].y]];\n}\n/** I 形状柱状图,常用于 error bar chart */\nregisterShape('interval', 'tick', {\n getPoints: function getPoints(shapePoint) {\n return getTickPoints(shapePoint);\n },\n draw: function draw(cfg, container) {\n var style = getStyle(cfg, true, false);\n var path = this.parsePath(getTickPath(cfg.points));\n var shape = container.addShape('path', {\n attrs: __assign(__assign({}, style), {\n path: path\n }),\n name: 'interval'\n });\n return shape;\n },\n getMarker: function getMarker(markerCfg) {\n var color = markerCfg.color;\n return {\n symbol: function symbol(x, y, r) {\n return [['M', x - r / 2, y - r], ['L', x + r / 2, y - r], ['M', x, y - r], ['L', x, y + r], ['M', x - r / 2, y + r], ['L', x + r / 2, y + r]];\n },\n style: {\n r: 5,\n stroke: color\n }\n };\n }\n});","import { __assign } from \"tslib\";\nimport { each } from '@antv/util';\nimport { registerShape } from '../base';\nimport { getPathPoints } from '../util/get-path-points';\nimport { getStyle } from '../util/get-style';\nimport { getLineMarker } from './util';\nvar interpolateCallback = function interpolateCallback(point, nextPoint, shapeType) {\n var x = point.x;\n var y = point.y;\n var nextX = nextPoint.x;\n var nextY = nextPoint.y;\n var result;\n switch (shapeType) {\n case 'hv':\n result = [{\n x: nextX,\n y: y\n }];\n break;\n case 'vh':\n result = [{\n x: x,\n y: nextY\n }];\n break;\n case 'hvh':\n var middleX = (nextX + x) / 2;\n result = [{\n x: middleX,\n y: y\n }, {\n x: middleX,\n y: nextY\n }];\n break;\n case 'vhv':\n var middleY = (y + nextY) / 2;\n result = [{\n x: x,\n y: middleY\n }, {\n x: nextX,\n y: middleY\n }];\n break;\n default:\n break;\n }\n return result;\n};\nfunction getInterpolatePoints(points, shapeType) {\n var result = [];\n each(points, function (point, index) {\n var nextPoint = points[index + 1];\n result.push(point);\n if (nextPoint) {\n var interpolatePoint = interpolateCallback(point, nextPoint, shapeType);\n result = result.concat(interpolatePoint);\n }\n });\n return result;\n}\n// 插值的图形path,不考虑null\nfunction getInterpolatePath(points) {\n return points.map(function (point, index) {\n return index === 0 ? ['M', point.x, point.y] : ['L', point.x, point.y];\n });\n}\n// 插值的图形\nfunction getInterpolateShapeAttrs(cfg, shapeType) {\n var points = getPathPoints(cfg.points, cfg.connectNulls, cfg.showSinglePoint); // 根据 connectNulls 值处理 points\n var path = [];\n each(points, function (eachLinePoints) {\n var interpolatePoints = getInterpolatePoints(eachLinePoints, shapeType);\n path = path.concat(getInterpolatePath(interpolatePoints));\n });\n return __assign(__assign({}, getStyle(cfg, true, false, 'lineWidth')), {\n path: path\n });\n}\n// step line\neach(['hv', 'vh', 'hvh', 'vhv'], function (shapeType) {\n registerShape('line', shapeType, {\n draw: function draw(cfg, container) {\n var attrs = getInterpolateShapeAttrs(cfg, shapeType);\n var shape = container.addShape({\n type: 'path',\n attrs: attrs,\n name: 'line'\n });\n return shape;\n },\n getMarker: function getMarker(markerCfg) {\n return getLineMarker(markerCfg, shapeType);\n }\n });\n});","import { __assign } from \"tslib\";\nimport { isArray, isNil } from '@antv/util';\nimport { registerShape } from '../base';\nimport { getStyle } from '../util/get-style';\nfunction parseValue(value) {\n var array = !isArray(value) ? [value] : value;\n var min = array[0]; // 最小值\n var max = array[array.length - 1]; // 最大值\n var min1 = array.length > 1 ? array[1] : min;\n var max1 = array.length > 3 ? array[3] : max;\n var median = array.length > 2 ? array[2] : min1;\n return {\n min: min,\n max: max,\n min1: min1,\n max1: max1,\n median: median\n };\n}\nfunction getBoxPoints(x, y, size) {\n var halfSize = size / 2;\n var pointsArray;\n if (isArray(y)) {\n // 2维\n var _a = parseValue(y),\n min = _a.min,\n max = _a.max,\n median = _a.median,\n min1 = _a.min1,\n max1 = _a.max1;\n var minX = x - halfSize;\n var maxX = x + halfSize;\n pointsArray = [[minX, max], [maxX, max], [x, max], [x, max1], [minX, min1], [minX, max1], [maxX, max1], [maxX, min1], [x, min1], [x, min], [minX, min], [maxX, min], [minX, median], [maxX, median]];\n } else {\n // 只有一个维度\n y = isNil(y) ? 0.5 : y;\n var _b = parseValue(x),\n min = _b.min,\n max = _b.max,\n median = _b.median,\n min1 = _b.min1,\n max1 = _b.max1;\n var minY = y - halfSize;\n var maxY = y + halfSize;\n pointsArray = [[min, minY], [min, maxY], [min, y], [min1, y], [min1, minY], [min1, maxY], [max1, maxY], [max1, minY], [max1, y], [max, y], [max, minY], [max, maxY], [median, minY], [median, maxY]];\n }\n return pointsArray.map(function (arr) {\n return {\n x: arr[0],\n y: arr[1]\n };\n });\n}\nfunction getBoxPath(points) {\n return [['M', points[0].x, points[0].y], ['L', points[1].x, points[1].y], ['M', points[2].x, points[2].y], ['L', points[3].x, points[3].y], ['M', points[4].x, points[4].y], ['L', points[5].x, points[5].y], ['L', points[6].x, points[6].y], ['L', points[7].x, points[7].y], ['L', points[4].x, points[4].y], ['Z'], ['M', points[8].x, points[8].y], ['L', points[9].x, points[9].y], ['M', points[10].x, points[10].y], ['L', points[11].x, points[11].y], ['M', points[12].x, points[12].y], ['L', points[13].x, points[13].y]];\n}\n// box shape\nregisterShape('schema', 'box', {\n getPoints: function getPoints(shapePoint) {\n var x = shapePoint.x,\n y = shapePoint.y,\n size = shapePoint.size;\n return getBoxPoints(x, y, size);\n },\n draw: function draw(cfg, container) {\n var style = getStyle(cfg, true, false);\n var path = this.parsePath(getBoxPath(cfg.points));\n var shape = container.addShape('path', {\n attrs: __assign(__assign({}, style), {\n path: path,\n name: 'schema'\n })\n });\n return shape;\n },\n getMarker: function getMarker(markerCfg) {\n var color = markerCfg.color;\n return {\n symbol: function symbol(x, y, r) {\n var yValues = [y - 6, y - 3, y, y + 3, y + 6];\n var points = getBoxPoints(x, yValues, r);\n return [['M', points[0].x + 1, points[0].y], ['L', points[1].x - 1, points[1].y], ['M', points[2].x, points[2].y], ['L', points[3].x, points[3].y], ['M', points[4].x, points[4].y], ['L', points[5].x, points[5].y], ['L', points[6].x, points[6].y], ['L', points[7].x, points[7].y], ['L', points[4].x, points[4].y], ['Z'], ['M', points[8].x, points[8].y], ['L', points[9].x, points[9].y], ['M', points[10].x + 1, points[10].y], ['L', points[11].x - 1, points[11].y], ['M', points[12].x, points[12].y], ['L', points[13].x, points[13].y]];\n },\n style: {\n r: 6,\n lineWidth: 1,\n stroke: color\n }\n };\n }\n});","import { __assign } from \"tslib\";\nimport { isArray } from '@antv/util';\nimport { padEnd } from '../../../util/helper';\nimport { registerShape } from '../base';\nimport { getStyle } from '../util/get-style';\nfunction getCandleYValues(value) {\n var array = !isArray(value) ? [value] : value;\n // 从大到小排序\n var sorted = array.sort(function (a, b) {\n return b - a;\n });\n return padEnd(sorted, 4, sorted[sorted.length - 1]);\n}\n// get candle shape's key points\nfunction getCandlePoints(x, y, size) {\n var yValues = getCandleYValues(y);\n return [{\n x: x,\n y: yValues[0]\n }, {\n x: x,\n y: yValues[1]\n }, {\n x: x - size / 2,\n y: yValues[2]\n }, {\n x: x - size / 2,\n y: yValues[1]\n }, {\n x: x + size / 2,\n y: yValues[1]\n }, {\n x: x + size / 2,\n y: yValues[2]\n }, {\n x: x,\n y: yValues[2]\n }, {\n x: x,\n y: yValues[3]\n }];\n}\nfunction getCandlePath(points) {\n return [['M', points[0].x, points[0].y], ['L', points[1].x, points[1].y], ['M', points[2].x, points[2].y], ['L', points[3].x, points[3].y], ['L', points[4].x, points[4].y], ['L', points[5].x, points[5].y], ['Z'], ['M', points[6].x, points[6].y], ['L', points[7].x, points[7].y]];\n}\n// k line shape\nregisterShape('schema', 'candle', {\n getPoints: function getPoints(shapePoint) {\n var x = shapePoint.x,\n y = shapePoint.y,\n size = shapePoint.size;\n return getCandlePoints(x, y, size);\n },\n draw: function draw(cfg, container) {\n var style = getStyle(cfg, true, true);\n var path = this.parsePath(getCandlePath(cfg.points));\n var shape = container.addShape('path', {\n attrs: __assign(__assign({}, style), {\n path: path,\n name: 'schema'\n })\n });\n return shape;\n },\n getMarker: function getMarker(markerCfg) {\n var color = markerCfg.color;\n return {\n symbol: function symbol(x, y, r) {\n var yValues = [y + 7.5, y + 3, y - 3, y - 7.5];\n var points = getCandlePoints(x, yValues, r);\n return [['M', points[0].x, points[0].y], ['L', points[1].x, points[1].y], ['M', points[2].x, points[2].y], ['L', points[3].x, points[3].y], ['L', points[4].x, points[4].y], ['L', points[5].x, points[5].y], ['Z'], ['M', points[6].x, points[6].y], ['L', points[7].x, points[7].y]];\n },\n style: {\n lineWidth: 1,\n stroke: color,\n fill: color,\n r: 6\n }\n };\n }\n});","import { __assign } from \"tslib\";\nimport { isEmpty, clamp } from '@antv/util';\nimport { registerShape } from '../base';\nimport { getStyle } from '../util/get-style';\nfunction getRectAttrs(points, size) {\n var width = Math.abs(points[0].x - points[2].x);\n var height = Math.abs(points[0].y - points[2].y);\n var len = Math.min(width, height);\n if (size) {\n len = clamp(size, 0, Math.min(width, height));\n }\n len = len / 2;\n var centerX = (points[0].x + points[2].x) / 2;\n var centerY = (points[0].y + points[2].y) / 2;\n return {\n x: centerX - len,\n y: centerY - len,\n width: len * 2,\n height: len * 2\n };\n}\nregisterShape('polygon', 'square', {\n draw: function draw(cfg, container) {\n if (!isEmpty(cfg.points)) {\n var shapeAttrs = getStyle(cfg, true, true);\n var points = this.parsePoints(cfg.points); // 转换为画布坐标\n return container.addShape('rect', {\n attrs: __assign(__assign({}, shapeAttrs), getRectAttrs(points, cfg.size)),\n name: 'polygon'\n });\n }\n },\n getMarker: function getMarker(markerCfg) {\n var color = markerCfg.color;\n return {\n symbol: 'square',\n style: {\n r: 4,\n fill: color\n }\n };\n }\n});","import { each } from '@antv/util';\nimport { MarkerSymbols } from '../../../util/marker';\nimport { registerShape } from '../base';\nimport { drawPoints, HOLLOW_SHAPES } from './util';\n// 添加 hollowShape\neach(HOLLOW_SHAPES, function (shapeName) {\n registerShape('point', shapeName, {\n draw: function draw(cfg, container) {\n return drawPoints(this, cfg, container, shapeName, true);\n },\n getMarker: function getMarker(markerCfg) {\n var color = markerCfg.color;\n return {\n symbol: MarkerSymbols[shapeName],\n style: {\n r: 4.5,\n stroke: color,\n fill: null\n }\n };\n }\n });\n});","import { __values } from \"tslib\";\nimport { registerShape } from '../base';\nimport { getStyle } from '../util/get-style';\nregisterShape('point', 'image', {\n draw: function draw(cfg, container) {\n var e_1, _a;\n var size = getStyle(cfg, false, false, 'r').r;\n var points = this.parsePoints(cfg.points);\n var pointPosition = points[0];\n if (cfg.isStack) {\n pointPosition = points[1];\n } else if (points.length > 1) {\n var group = container.addGroup();\n try {\n for (var points_1 = __values(points), points_1_1 = points_1.next(); !points_1_1.done; points_1_1 = points_1.next()) {\n var point = points_1_1.value;\n group.addShape('image', {\n attrs: {\n x: point.x - size / 2,\n y: point.y - size,\n width: size,\n height: size,\n img: cfg.shape[1]\n }\n });\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (points_1_1 && !points_1_1.done && (_a = points_1.return)) _a.call(points_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n return group;\n }\n return container.addShape('image', {\n attrs: {\n x: pointPosition.x - size / 2,\n y: pointPosition.y - size,\n width: size,\n height: size,\n img: cfg.shape[1]\n }\n });\n },\n getMarker: function getMarker(markerCfg) {\n var color = markerCfg.color;\n return {\n symbol: 'circle',\n style: {\n r: 4.5,\n fill: color\n }\n };\n }\n});","import { each } from '@antv/util';\nimport { MarkerSymbols } from '../../../util/marker';\nimport { registerShape } from '../base';\nimport { drawPoints, SHAPES } from './util';\n// 所有的 SHAPES 都注册一下\neach(SHAPES, function (shapeName) {\n registerShape('point', shapeName, {\n draw: function draw(cfg, container) {\n return drawPoints(this, cfg, container, shapeName, false);\n },\n getMarker: function getMarker(markerCfg) {\n var color = markerCfg.color;\n return {\n symbol: MarkerSymbols[shapeName] || shapeName,\n style: {\n r: 4.5,\n fill: color\n }\n };\n }\n });\n});","import { __assign } from \"tslib\";\nimport { registerShape } from '../base';\nimport { getSmoothViolinPath } from '../util/get-path-points';\nimport { getStyle } from '../util/get-style';\n/**\n * 平滑边界的小提琴图\n */\nregisterShape('violin', 'smooth', {\n draw: function draw(cfg, container) {\n var attrs = getStyle(cfg, true, true);\n var path = this.parsePath(getSmoothViolinPath(cfg.points));\n return container.addShape('path', {\n attrs: __assign(__assign({}, attrs), {\n path: path\n })\n });\n },\n getMarker: function getMarker(markerCfg) {\n var color = markerCfg.color;\n return {\n symbol: 'circle',\n style: {\n stroke: null,\n r: 4,\n fill: color\n }\n };\n }\n});","import { __assign } from \"tslib\";\nimport { registerShape } from '../base';\nimport { getSmoothViolinPath, getViolinPath } from '../util/get-path-points';\nimport { getStyle } from '../util/get-style';\n/**\n * 空心小提琴图\n */\nregisterShape('violin', 'hollow', {\n draw: function draw(cfg, container) {\n var attrs = getStyle(cfg, true, false);\n var path = this.parsePath(getViolinPath(cfg.points));\n return container.addShape('path', {\n attrs: __assign(__assign({}, attrs), {\n path: path\n })\n });\n },\n getMarker: function getMarker(markerCfg) {\n var color = markerCfg.color;\n return {\n symbol: 'circle',\n style: {\n r: 4,\n fill: null,\n stroke: color\n }\n };\n }\n});\n/**\n * 平滑边界的空心小提琴图\n */\nregisterShape('violin', 'hollow-smooth', {\n draw: function draw(cfg, container) {\n var attrs = getStyle(cfg, true, false);\n var path = this.parsePath(getSmoothViolinPath(cfg.points));\n return container.addShape('path', {\n attrs: __assign(__assign({}, attrs), {\n path: path\n })\n });\n },\n getMarker: function getMarker(markerCfg) {\n var color = markerCfg.color;\n return {\n symbol: 'circle',\n style: {\n r: 4,\n fill: null,\n stroke: color\n }\n };\n }\n});","import { __assign, __extends } from \"tslib\";\nimport { get, deepMix, isArray } from '@antv/util';\nimport GeometryLabel from './base';\n/**\n * 柱状图 label\n */\nvar IntervalLabel = /** @class */function (_super) {\n __extends(IntervalLabel, _super);\n function IntervalLabel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * 获取 interval label 的方向,取决于 value 的值是正还是负\n * @param labelCfg\n */\n IntervalLabel.prototype.getLabelValueDir = function (mappingData) {\n // points 中的 x/y 和 transpose 无关\n var dim = 'y';\n var points = mappingData.points;\n return points[0][dim] <= points[2][dim] ? 1 : -1;\n };\n /**\n * 重载:根据 interval 值的正负来调整 label 偏移量\n * @param labelCfg\n * @param index\n * @param total\n */\n IntervalLabel.prototype.getLabelOffsetPoint = function (labelCfg, index, total, position) {\n var _a;\n var point = _super.prototype.getLabelOffsetPoint.call(this, labelCfg, index, total);\n var coordinate = this.getCoordinate();\n var transposed = coordinate.isTransposed;\n var dim = transposed ? 'x' : 'y';\n var dir = this.getLabelValueDir(labelCfg.mappingData);\n point = __assign(__assign({}, point), (_a = {}, _a[dim] = point[dim] * dir, _a));\n if (coordinate.isReflect('x')) {\n point = __assign(__assign({}, point), {\n x: point.x * -1\n });\n }\n if (coordinate.isReflect('y')) {\n point = __assign(__assign({}, point), {\n y: point.y * -1\n });\n }\n return point;\n };\n /**\n * 重载:定制 interval label 的默认主题配置\n * @param labelCfg\n */\n IntervalLabel.prototype.getThemedLabelCfg = function (labelCfg) {\n var geometry = this.geometry;\n var defaultLabelCfg = this.getDefaultLabelCfg();\n var theme = geometry.theme;\n // 如果 interval label position 设置为 middle,则将主题中的 offset 覆盖为 0\n return deepMix({}, defaultLabelCfg, theme.labels, labelCfg.position === 'middle' ? {\n offset: 0\n } : {}, labelCfg);\n };\n IntervalLabel.prototype.setLabelPosition = function (labelPointCfg, mappingData, index, position) {\n var coordinate = this.getCoordinate();\n var transposed = coordinate.isTransposed;\n var shapePoints = mappingData.points;\n var point0 = coordinate.convert(shapePoints[0]);\n var point2 = coordinate.convert(shapePoints[2]);\n var dir = this.getLabelValueDir(mappingData);\n var top;\n var right;\n var bottom;\n var left;\n var shape = isArray(mappingData.shape) ? mappingData.shape[0] : mappingData.shape;\n if (shape === 'funnel' || shape === 'pyramid') {\n // 处理漏斗图\n var nextPoints = get(mappingData, 'nextPoints');\n var points = get(mappingData, 'points');\n if (nextPoints) {\n // 非漏斗图底部\n var p0 = coordinate.convert(points[0]);\n var p1 = coordinate.convert(points[1]);\n var nextP0 = coordinate.convert(nextPoints[0]);\n var nextP1 = coordinate.convert(nextPoints[1]);\n // TODO: 使用包围盒的计算方法\n if (transposed) {\n top = Math.min(nextP0.y, p0.y);\n bottom = Math.max(nextP0.y, p0.y);\n right = (p1.x + nextP1.x) / 2;\n left = (p0.x + nextP0.x) / 2;\n } else {\n top = Math.min((p1.y + nextP1.y) / 2, (p0.y + nextP0.y) / 2);\n bottom = Math.max((p1.y + nextP1.y) / 2, (p0.y + nextP0.y) / 2);\n right = nextP1.x;\n left = p0.x;\n }\n } else {\n top = Math.min(point2.y, point0.y);\n bottom = Math.max(point2.y, point0.y);\n right = point2.x;\n left = point0.x;\n }\n } else {\n top = Math.min(point2.y, point0.y);\n bottom = Math.max(point2.y, point0.y);\n right = point2.x;\n left = point0.x;\n }\n switch (position) {\n case 'right':\n labelPointCfg.x = right;\n labelPointCfg.y = (top + bottom) / 2;\n labelPointCfg.textAlign = get(labelPointCfg, 'textAlign', dir > 0 ? 'left' : 'right');\n break;\n case 'left':\n labelPointCfg.x = left;\n labelPointCfg.y = (top + bottom) / 2;\n labelPointCfg.textAlign = get(labelPointCfg, 'textAlign', dir > 0 ? 'left' : 'right');\n break;\n case 'bottom':\n if (transposed) {\n labelPointCfg.x = (right + left) / 2;\n }\n labelPointCfg.y = bottom;\n labelPointCfg.textAlign = get(labelPointCfg, 'textAlign', 'center');\n labelPointCfg.textBaseline = get(labelPointCfg, 'textBaseline', dir > 0 ? 'bottom' : 'top');\n break;\n case 'middle':\n if (transposed) {\n labelPointCfg.x = (right + left) / 2;\n }\n labelPointCfg.y = (top + bottom) / 2;\n labelPointCfg.textAlign = get(labelPointCfg, 'textAlign', 'center');\n labelPointCfg.textBaseline = get(labelPointCfg, 'textBaseline', 'middle');\n break;\n case 'top':\n if (transposed) {\n labelPointCfg.x = (right + left) / 2;\n }\n labelPointCfg.y = top;\n labelPointCfg.textAlign = get(labelPointCfg, 'textAlign', 'center');\n labelPointCfg.textBaseline = get(labelPointCfg, 'textBaseline', dir > 0 ? 'bottom' : 'top');\n break;\n default:\n break;\n }\n };\n return IntervalLabel;\n}(GeometryLabel);\nexport default IntervalLabel;","import { __assign, __extends } from \"tslib\";\nimport { each, get, isArray, map, isNumber, isString } from '@antv/util';\nimport { getDistanceToCenter } from '../../util/coordinate';\nimport { getAngleByPoint } from '../../util/coordinate';\nimport GeometryLabel from './base';\nvar HALF_PI = Math.PI / 2;\n/**\n * 极坐标下的图形 label\n */\nvar PolarLabel = /** @class */function (_super) {\n __extends(PolarLabel, _super);\n function PolarLabel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @override\n * @desc 获取 label offset\n * polar & theta coordinate support「string」type, should transform to 「number」\n */\n PolarLabel.prototype.getLabelOffset = function (offset) {\n var coordinate = this.getCoordinate();\n var actualOffset = 0;\n if (isNumber(offset)) {\n actualOffset = offset;\n } else if (isString(offset) && offset.indexOf('%') !== -1) {\n var r = coordinate.getRadius();\n if (coordinate.innerRadius > 0) {\n r = r * (1 - coordinate.innerRadius);\n }\n actualOffset = parseFloat(offset) * 0.01 * r;\n }\n return actualOffset;\n };\n /**\n * @override\n * 获取 labelItems, 增加切片 percent\n * @param mapppingArray\n */\n PolarLabel.prototype.getLabelItems = function (mapppingArray) {\n var items = _super.prototype.getLabelItems.call(this, mapppingArray);\n var yScale = this.geometry.getYScale();\n return map(items, function (item) {\n if (item && yScale) {\n var percent = yScale.scale(get(item.data, yScale.field));\n return __assign(__assign({}, item), {\n percent: percent\n });\n }\n return item;\n });\n };\n /**\n * @override\n * 获取文本的对齐方式\n * @param point\n */\n PolarLabel.prototype.getLabelAlign = function (point) {\n var coordinate = this.getCoordinate();\n var align;\n if (point.labelEmit) {\n align = point.angle <= Math.PI / 2 && point.angle >= -Math.PI / 2 ? 'left' : 'right';\n } else if (!coordinate.isTransposed) {\n align = 'center';\n } else {\n var center = coordinate.getCenter();\n var offset = point.offset;\n if (Math.abs(point.x - center.x) < 1) {\n align = 'center';\n } else if (point.angle > Math.PI || point.angle <= 0) {\n align = offset > 0 ? 'left' : 'right';\n } else {\n align = offset > 0 ? 'right' : 'left';\n }\n }\n return align;\n };\n /**\n * @override\n * 获取 label 的位置\n * @param labelCfg\n * @param mappingData\n * @param index\n */\n PolarLabel.prototype.getLabelPoint = function (labelCfg, mappingData, index) {\n var factor = 1;\n var arcPoint;\n var content = labelCfg.content[index];\n if (this.isToMiddle(mappingData)) {\n arcPoint = this.getMiddlePoint(mappingData.points);\n } else {\n if (labelCfg.content.length === 1 && index === 0) {\n index = 1;\n } else if (index === 0) {\n factor = -1;\n }\n arcPoint = this.getArcPoint(mappingData, index);\n }\n var offset = labelCfg.offset * factor;\n var middleAngle = this.getPointAngle(arcPoint);\n var isLabelEmit = labelCfg.labelEmit;\n var labelPositionCfg = this.getCirclePoint(middleAngle, offset, arcPoint, isLabelEmit);\n if (labelPositionCfg.r === 0) {\n // 如果文本位置位于圆心,则不展示\n labelPositionCfg.content = '';\n } else {\n labelPositionCfg.content = content;\n labelPositionCfg.angle = middleAngle;\n labelPositionCfg.color = mappingData.color;\n }\n labelPositionCfg.rotate = labelCfg.autoRotate ? this.getLabelRotate(middleAngle, offset, isLabelEmit) : labelCfg.rotate;\n labelPositionCfg.start = {\n x: arcPoint.x,\n y: arcPoint.y\n };\n return labelPositionCfg;\n };\n /**\n * 获取圆弧的位置\n */\n PolarLabel.prototype.getArcPoint = function (mappingData, index) {\n if (index === void 0) {\n index = 0;\n }\n if (!isArray(mappingData.x) && !isArray(mappingData.y)) {\n return {\n x: mappingData.x,\n y: mappingData.y\n };\n }\n return {\n x: isArray(mappingData.x) ? mappingData.x[index] : mappingData.x,\n y: isArray(mappingData.y) ? mappingData.y[index] : mappingData.y\n };\n };\n /**\n * 计算坐标线点在极坐标系下角度\n * @param point\n */\n PolarLabel.prototype.getPointAngle = function (point) {\n return getAngleByPoint(this.getCoordinate(), point);\n };\n /**\n * 获取坐标点与圆心形成的圆的位置信息\n * @param angle\n * @param offset\n * @param point\n * @param isLabelEmit\n */\n PolarLabel.prototype.getCirclePoint = function (angle, offset, point, isLabelEmit) {\n var coordinate = this.getCoordinate();\n var center = coordinate.getCenter();\n var r = getDistanceToCenter(coordinate, point);\n if (r === 0) {\n return __assign(__assign({}, center), {\n r: r\n });\n }\n var labelAngle = angle;\n if (coordinate.isTransposed && r > offset && !isLabelEmit) {\n var appendAngle = Math.asin(offset / (2 * r));\n labelAngle = angle + appendAngle * 2;\n } else {\n r = r + offset;\n }\n return {\n x: center.x + r * Math.cos(labelAngle),\n y: center.y + r * Math.sin(labelAngle),\n r: r\n };\n };\n /**\n * 获取 label 的旋转角度\n * @param angle\n * @param offset\n * @param isLabelEmit\n */\n PolarLabel.prototype.getLabelRotate = function (angle, offset, isLabelEmit) {\n var rotate = angle + HALF_PI;\n if (isLabelEmit) {\n rotate -= HALF_PI;\n }\n if (rotate) {\n if (rotate > HALF_PI) {\n rotate = rotate - Math.PI;\n } else if (rotate < -HALF_PI) {\n rotate = rotate + Math.PI;\n }\n }\n return rotate;\n };\n // 获取中心的位置\n PolarLabel.prototype.getMiddlePoint = function (points) {\n var coordinate = this.getCoordinate();\n var count = points.length;\n var middlePoint = {\n x: 0,\n y: 0\n };\n each(points, function (point) {\n middlePoint.x += point.x;\n middlePoint.y += point.y;\n });\n middlePoint.x /= count;\n middlePoint.y /= count;\n middlePoint = coordinate.convert(middlePoint);\n return middlePoint;\n };\n // 是否居中\n PolarLabel.prototype.isToMiddle = function (mappingData) {\n return mappingData.x.length > 2;\n };\n return PolarLabel;\n}(GeometryLabel);\nexport default PolarLabel;","import { __assign, __extends } from \"tslib\";\nimport { deepMix, get, isArray } from '@antv/util';\nimport { getAngleByPoint } from '../../util/coordinate';\nimport { polarToCartesian } from '../../util/graphics';\nimport PolarLabel from './polar';\n/**\n * 饼图 label\n */\nvar PieLabel = /** @class */function (_super) {\n __extends(PieLabel, _super);\n function PieLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.defaultLayout = 'distribute';\n return _this;\n }\n PieLabel.prototype.getDefaultLabelCfg = function (offset, position) {\n var cfg = _super.prototype.getDefaultLabelCfg.call(this, offset, position);\n return deepMix({}, cfg, get(this.geometry.theme, 'pieLabels', {}));\n };\n /** @override */\n PieLabel.prototype.getLabelOffset = function (offset) {\n return _super.prototype.getLabelOffset.call(this, offset) || 0;\n };\n PieLabel.prototype.getLabelRotate = function (angle, offset, isLabelLimit) {\n var rotate;\n if (offset < 0) {\n rotate = angle;\n if (rotate > Math.PI / 2) {\n rotate = rotate - Math.PI;\n }\n if (rotate < -Math.PI / 2) {\n rotate = rotate + Math.PI;\n }\n }\n return rotate;\n };\n PieLabel.prototype.getLabelAlign = function (point) {\n var coordinate = this.getCoordinate();\n var center = coordinate.getCenter();\n var align;\n if (point.angle <= Math.PI / 2 && point.x >= center.x) {\n align = 'left';\n } else {\n align = 'right';\n }\n if (point.offset <= 0) {\n if (align === 'right') {\n align = 'left';\n } else {\n align = 'right';\n }\n }\n return align;\n };\n PieLabel.prototype.getArcPoint = function (point) {\n return point;\n };\n PieLabel.prototype.getPointAngle = function (point) {\n var coordinate = this.getCoordinate();\n var startPoint = {\n x: isArray(point.x) ? point.x[0] : point.x,\n y: point.y[0]\n };\n var endPoint = {\n x: isArray(point.x) ? point.x[1] : point.x,\n y: point.y[1]\n };\n var angle;\n var startAngle = getAngleByPoint(coordinate, startPoint);\n if (point.points && point.points[0].y === point.points[1].y) {\n angle = startAngle;\n } else {\n var endAngle = getAngleByPoint(coordinate, endPoint);\n if (startAngle >= endAngle) {\n // 100% pie slice\n endAngle = endAngle + Math.PI * 2;\n }\n angle = startAngle + (endAngle - startAngle) / 2;\n }\n return angle;\n };\n /** @override */\n PieLabel.prototype.getCirclePoint = function (angle, offset) {\n var coordinate = this.getCoordinate();\n var center = coordinate.getCenter();\n var r = coordinate.getRadius() + offset;\n return __assign(__assign({}, polarToCartesian(center.x, center.y, r, angle)), {\n angle: angle,\n r: r\n });\n };\n return PieLabel;\n}(PolarLabel);\nexport default PieLabel;","/**\n * 碰撞检测算法\n */\nexport function antiCollision(items, labelHeight, plotRange) {\n var labels = items.filter(function (item) {\n return !item.invisible;\n });\n // sorted by y, mutable\n labels.sort(function (a, b) {\n return a.y - b.y;\n });\n // adjust y position of labels to avoid overlapping\n var overlapping = true;\n var startY = plotRange.minY;\n var endY = plotRange.maxY;\n var totalHeight = Math.abs(startY - endY);\n var i;\n var maxY = 0;\n var minY = Number.MIN_VALUE;\n var boxes = labels.map(function (label) {\n if (label.y > maxY) {\n maxY = label.y;\n }\n if (label.y < minY) {\n minY = label.y;\n }\n return {\n content: label.content,\n size: labelHeight,\n targets: [label.y - startY],\n pos: null\n };\n });\n minY -= startY;\n if (maxY - startY > totalHeight) {\n totalHeight = maxY - startY;\n }\n while (overlapping) {\n /* eslint no-loop-func: 0 */\n boxes.forEach(function (box) {\n var target = (Math.min.apply(minY, box.targets) + Math.max.apply(minY, box.targets)) / 2;\n box.pos = Math.min(Math.max(minY, target - box.size / 2), totalHeight - box.size);\n box.pos = Math.max(0, box.pos);\n });\n // detect overlapping and join boxes\n overlapping = false;\n i = boxes.length;\n while (i--) {\n if (i > 0) {\n var previousBox = boxes[i - 1];\n var box = boxes[i];\n if (previousBox.pos + previousBox.size > box.pos) {\n // overlapping\n previousBox.size += box.size;\n previousBox.targets = previousBox.targets.concat(box.targets);\n // overflow, shift up\n if (previousBox.pos + previousBox.size > totalHeight) {\n previousBox.pos = totalHeight - previousBox.size;\n }\n boxes.splice(i, 1); // removing box\n overlapping = true;\n }\n }\n }\n }\n i = 0;\n // step 4: normalize y and adjust x\n boxes.forEach(function (b) {\n var posInCompositeBox = startY + labelHeight / 2; // middle of the label\n b.targets.forEach(function () {\n labels[i].y = b.pos + posInCompositeBox;\n posInCompositeBox += labelHeight;\n i++;\n });\n });\n}","import { __values } from \"tslib\";\nimport { isObject, each, get, groupBy, isNil, filter } from '@antv/util';\nimport { polarToCartesian } from '../../../../util/graphics';\nimport { antiCollision } from './util';\n/** label text和line距离 4px */\nvar MARGIN = 4;\n/**\n * 配置 labelline\n * @param item PolarLabelItem\n */\nfunction drawLabelline(item /** PolarLabelItem */, coordinate) {\n /** 坐标圆心 */\n var center = coordinate.getCenter();\n /** 圆半径 */\n var radius = coordinate.getRadius();\n if (item && item.labelLine) {\n var angle = item.angle,\n labelOffset = item.offset;\n // 贴近圆周\n var startPoint = polarToCartesian(center.x, center.y, radius, angle);\n var itemX = item.x + get(item, 'offsetX', 0) * (Math.cos(angle) > 0 ? 1 : -1);\n var itemY = item.y + get(item, 'offsetY', 0) * (Math.sin(angle) > 0 ? 1 : -1);\n var endPoint = {\n x: itemX - Math.cos(angle) * MARGIN,\n y: itemY - Math.sin(angle) * MARGIN\n };\n var smoothConnector = item.labelLine.smooth;\n var path = [];\n var dx = endPoint.x - center.x;\n var dy = endPoint.y - center.y;\n var endAngle = Math.atan(dy / dx);\n // 第三象限 & 第四象限\n if (dx < 0) {\n endAngle += Math.PI;\n }\n // 默认 smooth, undefined 也为 smooth\n if (smoothConnector === false) {\n if (!isObject(item.labelLine)) {\n // labelLine: true\n item.labelLine = {};\n }\n // 表示弧线的方向,0 表示从起点到终点沿逆时针画弧, 1 表示顺时针\n var sweepFlag = 0;\n // 第一象限\n if (angle < 0 && angle > -Math.PI / 2 || angle > Math.PI * 1.5) {\n if (endPoint.y > startPoint.y) {\n sweepFlag = 1;\n }\n }\n // 第二象限\n if (angle >= 0 && angle < Math.PI / 2) {\n if (endPoint.y > startPoint.y) {\n sweepFlag = 1;\n }\n }\n // 第三象限\n if (angle >= Math.PI / 2 && angle < Math.PI) {\n if (startPoint.y > endPoint.y) {\n sweepFlag = 1;\n }\n }\n // 第四象限\n if (angle < -Math.PI / 2 || angle >= Math.PI && angle < Math.PI * 1.5) {\n if (startPoint.y > endPoint.y) {\n sweepFlag = 1;\n }\n }\n var distance = labelOffset / 2 > 4 ? 4 : Math.max(labelOffset / 2 - 1, 0);\n var breakPoint = polarToCartesian(center.x, center.y, radius + distance, angle);\n // 圆弧的结束点\n var breakPoint3 = polarToCartesian(center.x, center.y, radius + labelOffset / 2, endAngle);\n /**\n * @example\n * M 100 100 L100 90 A 50 50 0 0 0 150 50\n * 移动至 (100, 100), 连接到 (100, 90), 以 (50, 50) 为圆心,绘制圆弧至 (150, 50);\n * A 命令的第 4 个参数 large-arc-flag, 决定弧线是大于还是小于 180 度: 0 表示小角度弧,1 表示大角\n * 第 5 个参数: 是否顺时针绘制\n */\n // 默认小弧\n var largeArcFlag = 0;\n // step1: 移动至起点\n path.push(\"M \".concat(startPoint.x, \" \").concat(startPoint.y));\n // step2: 连接拐点\n path.push(\"L \".concat(breakPoint.x, \" \").concat(breakPoint.y));\n // step3: 绘制圆弧 至 结束点\n path.push(\"A \".concat(center.x, \" \").concat(center.y, \" 0 \").concat(largeArcFlag, \" \").concat(sweepFlag, \" \").concat(breakPoint3.x, \" \").concat(breakPoint3.y));\n // step4: 连接结束点\n path.push(\"L \".concat(endPoint.x, \" \").concat(endPoint.y));\n } else {\n var breakPoint = polarToCartesian(center.x, center.y, radius + (labelOffset / 2 > 4 ? 4 : Math.max(labelOffset / 2 - 1, 0)), angle);\n // G2 旧的拉线\n // path.push('Q', `${breakPoint.x}`, `${breakPoint.y}`, `${endPoint.x}`, `${endPoint.y}`);\n var xSign = startPoint.x < center.x ? 1 : -1;\n // step1: 连接结束点\n path.push(\"M \".concat(endPoint.x, \" \").concat(endPoint.y));\n var slope1 = (startPoint.y - center.y) / (startPoint.x - center.x);\n var slope2 = (endPoint.y - center.y) / (endPoint.x - center.x);\n if (Math.abs(slope1 - slope2) > Math.pow(Math.E, -16)) {\n // step2: 绘制 curve line (起点 & 结合点与圆心的斜率不等时, 由于存在误差, 使用近似处理)\n path.push.apply(path, ['C', endPoint.x + xSign * 4, endPoint.y, 2 * breakPoint.x - startPoint.x, 2 * breakPoint.y - startPoint.y, startPoint.x, startPoint.y]);\n }\n // step3: 连接至起点\n path.push(\"L \".concat(startPoint.x, \" \").concat(startPoint.y));\n }\n item.labelLine.path = path.join(' ');\n }\n}\n/**\n * 饼图 outer-label 布局, 适用于 type = pie 且 label offset > 0 的标签\n */\nexport function pieOuterLabelLayout(originalItems, labels, shapes, region) {\n var e_1, _a;\n var items = filter(originalItems, function (item) {\n return !isNil(item);\n });\n /** 坐标系 */\n var coordinate = labels[0] && labels[0].get('coordinate');\n if (!coordinate) {\n return;\n }\n /** 坐标圆心 */\n var center = coordinate.getCenter();\n /** 圆半径 */\n var radius = coordinate.getRadius();\n /** label shapes */\n var labelsMap = {};\n try {\n for (var labels_1 = __values(labels), labels_1_1 = labels_1.next(); !labels_1_1.done; labels_1_1 = labels_1.next()) {\n var labelShape = labels_1_1.value;\n labelsMap[labelShape.get('id')] = labelShape;\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (labels_1_1 && !labels_1_1.done && (_a = labels_1.return)) _a.call(labels_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n // note labelHeight 可以控制 label 的行高\n var labelHeight = get(items[0], 'labelHeight', 14);\n var labelOffset = get(items[0], 'offset', 0);\n if (labelOffset <= 0) {\n return;\n }\n var LEFT_HALF_KEY = 'left';\n var RIGHT_HALF_KEY = 'right';\n // step 1: separate labels\n var separateLabels = groupBy(items, function (item) {\n return item.x < center.x ? LEFT_HALF_KEY : RIGHT_HALF_KEY;\n });\n var start = coordinate.start,\n end = coordinate.end;\n // step2: calculate totalHeight\n var totalHeight = Math.min((radius + labelOffset + labelHeight) * 2, coordinate.getHeight());\n var totalR = totalHeight / 2;\n /** labels 容器的范围(后续根据组件的布局设计进行调整) */\n var labelsContainerRange = {\n minX: start.x,\n maxX: end.x,\n minY: center.y - totalR,\n maxY: center.y + totalR\n };\n // step 3: antiCollision\n each(separateLabels, function (half, key) {\n var maxLabelsCountForOneSide = Math.floor(totalHeight / labelHeight);\n if (half.length > maxLabelsCountForOneSide) {\n half.sort(function (a, b) {\n // sort by percentage DESC\n return b.percent - a.percent;\n });\n each(half, function (labelItem, idx) {\n if (idx + 1 > maxLabelsCountForOneSide) {\n labelsMap[labelItem.id].set('visible', false);\n labelItem.invisible = true;\n }\n });\n }\n antiCollision(half, labelHeight, labelsContainerRange);\n });\n each(separateLabels, function (half, key) {\n each(half, function (item) {\n var isRight = key === RIGHT_HALF_KEY;\n var labelShape = labelsMap[item.id];\n // because group could not effect content-shape, should set content-shape position manually\n var content = labelShape.getChildByIndex(0);\n // textShape 发生过调整\n if (content) {\n var r = radius + labelOffset;\n // (x - cx)^2 + (y - cy)^2 = totalR^2\n var dy = item.y - center.y;\n var rPow2 = Math.pow(r, 2);\n var dyPow2 = Math.pow(dy, 2);\n var dxPow2 = rPow2 - dyPow2 > 0 ? rPow2 - dyPow2 : 0;\n var dx = Math.sqrt(dxPow2);\n var dx_offset = Math.abs(Math.cos(item.angle) * r);\n if (!isRight) {\n // left\n item.x = center.x - Math.max(dx, dx_offset);\n } else {\n // right\n item.x = center.x + Math.max(dx, dx_offset);\n }\n }\n // adjust labelShape\n if (content) {\n content.attr('y', item.y);\n content.attr('x', item.x);\n }\n drawLabelline(item, coordinate);\n });\n });\n}","import { __values } from \"tslib\";\nimport { each, get, isNil, deepMix, groupBy } from '@antv/util';\nimport { polarToCartesian } from '../../../../util/graphics';\nimport { antiCollision } from './util';\nimport { translate } from '../../../../util/transform';\n/** 拐点偏移量, 暂不可配置 */\nvar INFLECTION_OFFSET = 4;\n/** 标签偏移量, distance between label and edge: offsetX */\nvar LABEL_OFFSET_X = 4;\n/** 标签与牵引线的偏移量 */\nvar LABEL_TEXT_LINE_OFFSET = 4;\nfunction drawLabelline(item, coordinate, inRight) {\n /** 坐标圆心 */\n var center = coordinate.getCenter();\n /** 圆半径 */\n var radius = coordinate.getRadius();\n var startPoint = {\n x: item.x - (inRight ? LABEL_TEXT_LINE_OFFSET : -LABEL_TEXT_LINE_OFFSET),\n y: item.y\n };\n var inflectionPoint = polarToCartesian(center.x, center.y, radius + INFLECTION_OFFSET, item.angle);\n var p1 = {\n x: startPoint.x,\n y: startPoint.y\n };\n var p2 = {\n x: inflectionPoint.x,\n y: inflectionPoint.y\n };\n var endPoint = polarToCartesian(center.x, center.y, radius, item.angle);\n var path = '';\n // 文本被调整下去了,则添加拐点连接线\n if (startPoint.y !== inflectionPoint.y) {\n var offset = inRight ? 4 : -4;\n p1.y = startPoint.y;\n /** 是否在第一象限 */\n if (item.angle < 0 && item.angle >= -Math.PI / 2) {\n p1.x = Math.max(inflectionPoint.x, startPoint.x - offset);\n if (startPoint.y < inflectionPoint.y) {\n p2.y = p1.y;\n } else {\n p2.y = inflectionPoint.y;\n p2.x = Math.max(p2.x, p1.x - offset);\n }\n }\n /** 是否在 第二象限 */\n if (item.angle > 0 && item.angle < Math.PI / 2) {\n p1.x = Math.max(inflectionPoint.x, startPoint.x - offset);\n if (startPoint.y > inflectionPoint.y) {\n p2.y = p1.y;\n } else {\n p2.y = inflectionPoint.y;\n p2.x = Math.max(p2.x, p1.x - offset);\n }\n }\n /** 是否在 第三象限 */\n if (item.angle > Math.PI / 2) {\n p1.x = Math.min(inflectionPoint.x, startPoint.x - offset);\n if (startPoint.y > inflectionPoint.y) {\n p2.y = p1.y;\n } else {\n p2.y = inflectionPoint.y;\n p2.x = Math.min(p2.x, p1.x - offset);\n }\n }\n /** 是否在 第四象限 */\n if (item.angle < -Math.PI / 2) {\n p1.x = Math.min(inflectionPoint.x, startPoint.x - offset);\n if (startPoint.y < inflectionPoint.y) {\n p2.y = p1.y;\n } else {\n p2.y = inflectionPoint.y;\n p2.x = Math.min(p2.x, p1.x - offset);\n }\n }\n }\n path = [\"M \".concat(startPoint.x, \",\").concat(startPoint.y), \"L \".concat(p1.x, \",\").concat(p1.y), \"L \".concat(p2.x, \",\").concat(p2.y), \"L \".concat(inflectionPoint.x, \",\").concat(inflectionPoint.y), \"L \".concat(endPoint.x, \",\").concat(endPoint.y)].join(' ');\n item.labelLine = deepMix({}, item.labelLine, {\n path: path\n });\n}\n/**\n * 饼图标签 spider 布局, 只适用于 pie-spider 的标签类型\n * region 应该是 labelsRenderer 容器的范围限制(便于后续组件间布局)\n */\nexport function pieSpiderLabelLayout(items, labels, shapes, region) {\n var e_1, _a;\n /** 坐标系 */\n var coordinate = labels[0] && labels[0].get('coordinate');\n if (!coordinate) {\n return;\n }\n /** 坐标圆心 */\n var center = coordinate.getCenter();\n /** 圆半径 */\n var radius = coordinate.getRadius();\n /** label shapes */\n var labelsMap = {};\n try {\n for (var labels_1 = __values(labels), labels_1_1 = labels_1.next(); !labels_1_1.done; labels_1_1 = labels_1.next()) {\n var labelShape = labels_1_1.value;\n labelsMap[labelShape.get('id')] = labelShape;\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (labels_1_1 && !labels_1_1.done && (_a = labels_1.return)) _a.call(labels_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n var labelHeight = get(items[0], 'labelHeight', 14);\n var labelOffset = Math.max(get(items[0], 'offset', 0), INFLECTION_OFFSET);\n // step 1: adjust items to spider\n each(items, function (item) {\n if (!item) return;\n var label = get(labelsMap, [item.id]);\n if (!label) return;\n var inRight = item.x > center.x || item.x === center.x && item.y > center.y;\n var offsetX = !isNil(item.offsetX) ? item.offsetX : LABEL_OFFSET_X;\n var inflectionPoint = polarToCartesian(center.x, center.y, radius + INFLECTION_OFFSET, item.angle);\n var totalOffset = labelOffset + offsetX;\n item.x = center.x + (inRight ? 1 : -1) * (radius + totalOffset);\n item.y = inflectionPoint.y;\n });\n var start = coordinate.start,\n end = coordinate.end;\n var LEFT_HALF_KEY = 'left';\n var RIGHT_HALF_KEY = 'right';\n // step 1: separate labels\n var separateLabels = groupBy(items, function (item) {\n return item.x < center.x ? LEFT_HALF_KEY : RIGHT_HALF_KEY;\n });\n // step2: calculate totalHeight\n var totalHeight = (radius + labelOffset) * 2 + labelHeight;\n each(separateLabels, function (half) {\n var halfHeight = half.length * labelHeight;\n if (halfHeight > totalHeight) {\n totalHeight = Math.min(halfHeight, Math.abs(start.y - end.y));\n }\n });\n /** labels 容器的范围(后续根据组件的布局设计进行调整) */\n var labelsContainerRange = {\n minX: start.x,\n maxX: end.x,\n minY: center.y - totalHeight / 2,\n maxY: center.y + totalHeight / 2\n };\n // step 3: antiCollision\n each(separateLabels, function (half, key) {\n var maxLabelsCountForOneSide = totalHeight / labelHeight;\n if (half.length > maxLabelsCountForOneSide) {\n half.sort(function (a, b) {\n // sort by percentage DESC\n return b.percent - a.percent;\n });\n each(half, function (labelItem, idx) {\n if (idx > maxLabelsCountForOneSide) {\n labelsMap[labelItem.id].set('visible', false);\n labelItem.invisible = true;\n }\n });\n }\n antiCollision(half, labelHeight, labelsContainerRange);\n });\n var startY = labelsContainerRange.minY;\n var endY = labelsContainerRange.maxY;\n // step4: applyTo labels and adjust labelLines\n each(separateLabels, function (half, key) {\n var inRight = key === RIGHT_HALF_KEY;\n each(half, function (item) {\n var label = get(labelsMap, item && [item.id]);\n if (!label) {\n return;\n }\n // out of range, hidden\n if (item.y < startY || item.y > endY) {\n label.set('visible', false);\n return;\n }\n var labelContent = label.getChildByIndex(0);\n var box = labelContent.getCanvasBBox();\n var originalPos = {\n x: inRight ? box.x : box.maxX,\n y: box.y + box.height / 2 /** vertical-align: middle */\n };\n translate(labelContent, item.x - originalPos.x /** 从 pos.x 移动到 item.x */, item.y - originalPos.y);\n // adjust labelLines\n if (item.labelLine) {\n drawLabelline(item, coordinate, inRight);\n }\n });\n });\n}","import { each } from '@antv/util';\nvar MAX_TIMES = 100;\n/**\n * @ignore\n * Greedy 贪婪算法\n */\nvar Greedy = /** @class */function () {\n function Greedy(cfg) {\n if (cfg === void 0) {\n cfg = {};\n }\n this.bitmap = {};\n var _a = cfg.xGap,\n xGap = _a === void 0 ? 1 : _a,\n _b = cfg.yGap,\n yGap = _b === void 0 ? 8 : _b;\n this.xGap = xGap;\n this.yGap = yGap;\n }\n Greedy.prototype.hasGap = function (bbox) {\n var hasGap = true;\n var bitmap = this.bitmap;\n var minX = Math.round(bbox.minX);\n var maxX = Math.round(bbox.maxX);\n var minY = Math.round(bbox.minY);\n var maxY = Math.round(bbox.maxY);\n for (var i = minX; i <= maxX; i += 1) {\n if (!bitmap[i]) {\n bitmap[i] = {};\n continue;\n }\n if (i === minX || i === maxX) {\n for (var j = minY; j <= maxY; j++) {\n if (bitmap[i][j]) {\n hasGap = false;\n break;\n }\n }\n } else {\n if (bitmap[i][minY] || bitmap[i][maxY]) {\n hasGap = false;\n break;\n }\n }\n }\n return hasGap;\n };\n Greedy.prototype.fillGap = function (bbox) {\n var bitmap = this.bitmap;\n var minX = Math.round(bbox.minX);\n var maxX = Math.round(bbox.maxX);\n var minY = Math.round(bbox.minY);\n var maxY = Math.round(bbox.maxY);\n // filling grid\n for (var i = minX; i <= maxX; i += 1) {\n if (!bitmap[i]) {\n bitmap[i] = {};\n }\n }\n for (var i = minX; i <= maxX; i += this.xGap) {\n for (var j = minY; j <= maxY; j += this.yGap) {\n bitmap[i][j] = true;\n }\n bitmap[i][maxY] = true;\n }\n // filling y edges\n if (this.yGap !== 1) {\n for (var i = minY; i <= maxY; i += 1) {\n bitmap[minX][i] = true;\n bitmap[maxX][i] = true;\n }\n }\n // filling x edges\n if (this.xGap !== 1) {\n for (var i = minX; i <= maxX; i += 1) {\n bitmap[i][minY] = true;\n bitmap[i][maxY] = true;\n }\n }\n };\n Greedy.prototype.destroy = function () {\n this.bitmap = {};\n };\n return Greedy;\n}();\nfunction spiralFill(label, greedy, maxTimes) {\n if (maxTimes === void 0) {\n maxTimes = MAX_TIMES;\n }\n var dt = -1;\n var _a = label.attr(),\n x = _a.x,\n y = _a.y;\n var bbox = label.getCanvasBBox();\n var maxDelta = Math.sqrt(bbox.width * bbox.width + bbox.height * bbox.height);\n var dxdy;\n var t = -dt;\n var dx = 0;\n var dy = 0;\n var f = function f(param) {\n var nt = param * 0.1;\n return [nt * Math.cos(nt), nt * Math.sin(nt)];\n };\n if (greedy.hasGap(bbox)) {\n greedy.fillGap(bbox);\n return true;\n }\n var canFill = false;\n var times = 0;\n var accessedCache = {};\n while (Math.min(Math.abs(dx), Math.abs(dy)) < maxDelta && times < maxTimes) {\n dxdy = f(t += dt);\n dx = ~~dxdy[0];\n dy = ~~dxdy[1];\n if (!dx && !dy || accessedCache[\"\".concat(dx, \"-\").concat(dy)]) {\n continue;\n }\n label.attr({\n x: x + dx,\n y: y + dy\n });\n if (dx + dy < 0) {\n label.attr('textAlign', 'right');\n }\n times++;\n if (greedy.hasGap(label.getCanvasBBox())) {\n greedy.fillGap(label.getCanvasBBox());\n canFill = true;\n accessedCache[\"\".concat(dx, \"-\").concat(dy)] = true;\n break;\n }\n }\n return canFill;\n}\n/*\n * 根据如下规则尝试放置label\n * 5\n * ------------------\n * | 1 | 0 |\n * 8 —————————4———————— 7\n * | 2 | 3 |\n * ——————————————————\n * 6\n */\nfunction adjustLabelPosition(label, x, y, index) {\n var _a = label.getCanvasBBox(),\n width = _a.width,\n height = _a.height;\n var attrs = {\n x: x,\n y: y,\n textAlign: 'center'\n };\n switch (index) {\n case 0:\n attrs.y -= height + 1;\n attrs.x += 1;\n attrs.textAlign = 'left';\n break;\n case 1:\n attrs.y -= height + 1;\n attrs.x -= 1;\n attrs.textAlign = 'right';\n break;\n case 2:\n attrs.y += height + 1;\n attrs.x -= 1;\n attrs.textAlign = 'right';\n break;\n case 3:\n attrs.y += height + 1;\n attrs.x += 1;\n attrs.textAlign = 'left';\n break;\n case 5:\n attrs.y -= height * 2 + 2;\n break;\n case 6:\n attrs.y += height * 2 + 2;\n break;\n case 7:\n attrs.x += width + 1;\n attrs.textAlign = 'left';\n break;\n case 8:\n attrs.x -= width + 1;\n attrs.textAlign = 'right';\n break;\n default:\n break;\n }\n label.attr(attrs);\n return label.getCanvasBBox();\n}\n/**\n * @ignore\n * label 防遮挡布局:在不改变 label 位置的情况下对相互重叠的 label 进行调整。\n * 不同于 'overlap' 类型的布局,该布局不会对 label 的位置进行偏移调整。\n * @param labels 参与布局调整的 label 数组集合\n */\nexport function fixedOverlap(items, labels, shapes, region) {\n var greedy = new Greedy();\n each(labels, function (label) {\n var labelShape = label.find(function (shape) {\n return shape.get('type') === 'text';\n });\n if (!spiralFill(labelShape, greedy)) {\n label.remove(true);\n }\n });\n greedy.destroy();\n}\n/**\n * @ignore\n * label 防遮挡布局:为了防止 label 之间相互覆盖同时保证尽可能多 的 label 展示,通过尝试将 label 向**四周偏移**来剔除放不下的 label\n * @param labels 参与布局调整的 label 数组集合\n */\nexport function overlap(items, labels, shapes, region) {\n var greedy = new Greedy();\n each(labels, function (label) {\n var labelShape = label.find(function (shape) {\n return shape.get('type') === 'text';\n });\n var _a = labelShape.attr(),\n x = _a.x,\n y = _a.y;\n var canFill = false;\n for (var i = 0; i <= 8; i++) {\n var bbox = adjustLabelPosition(labelShape, x, y, i);\n if (greedy.hasGap(bbox)) {\n greedy.fillGap(bbox);\n canFill = true;\n break;\n }\n }\n if (!canFill) {\n label.remove(true);\n }\n });\n greedy.destroy();\n}","import { __read, __spreadArray } from \"tslib\";\nfunction dot(a, b) {\n return (a[0] || 0) * (b[0] || 0) + (a[1] || 0) * (b[1] || 0) + (a[2] || 0) * (b[2] || 0);\n}\n/**\n * @private\n * 1. 获取投影轴\n */\nfunction getAxes(points /** 多边形的关键点 */) {\n // 目前先处理 平行矩形 的场景, 其他多边形不处理\n if (points.length > 4) {\n return [];\n }\n // 获取向量\n var vector = function vector(start, end) {\n return [end.x - start.x, end.y - start.y];\n };\n // 由于 矩形的平行原理,所以只有 2 条投影轴: A -> B, B -> C\n var AB = vector(points[0], points[1]);\n var BC = vector(points[1], points[2]);\n return [AB, BC];\n}\n/**\n * @private\n * 绕指定点顺时针旋转后的点坐标\n * 默认绕原点旋转\n */\nfunction rotateAtPoint(point, deg, origin) {\n if (deg === void 0) {\n deg = 0;\n }\n if (origin === void 0) {\n origin = {\n x: 0,\n y: 0\n };\n }\n var x = point.x,\n y = point.y;\n return {\n x: (x - origin.x) * Math.cos(-deg) + (y - origin.y) * Math.sin(-deg) + origin.x,\n y: (origin.x - x) * Math.sin(-deg) + (y - origin.y) * Math.cos(-deg) + origin.y\n };\n}\n/**\n * @private\n * 转化为顶点坐标数组\n *\n * @param {Object} box\n */\nfunction getRectPoints(box) {\n var points = [{\n x: box.x,\n y: box.y\n }, {\n x: box.x + box.width,\n y: box.y\n }, {\n x: box.x + box.width,\n y: box.y + box.height\n }, {\n x: box.x,\n y: box.y + box.height\n }];\n var rotation = box.rotation;\n if (rotation) {\n return [rotateAtPoint(points[0], rotation, points[0]), rotateAtPoint(points[1], rotation, points[0]), rotateAtPoint(points[2], rotation, points[0]), rotateAtPoint(points[3], rotation, points[0])];\n }\n return points;\n}\n/**\n * @private\n * 2. 获取多边形在投影轴上的投影\n *\n * 向量的点积的其中一个几何含义是:一个向量在平行于另一个向量方向上的投影的数值乘积。\n * 由于投影轴是单位向量(长度为1),投影的长度为 x1 * x2 + y1 * y2\n */\nfunction getProjection(points /** 多边形的关键点 */, axis) {\n // 目前先处理矩形的场景\n if (points.length > 4) {\n return {\n min: 0,\n max: 0\n };\n }\n var scalars = [];\n points.forEach(function (point) {\n scalars.push(dot([point.x, point.y], axis));\n });\n return {\n min: Math.min.apply(Math, __spreadArray([], __read(scalars), false)),\n max: Math.max.apply(Math, __spreadArray([], __read(scalars), false))\n };\n}\nfunction isProjectionOverlap(projection1, projection2) {\n return projection1.max > projection2.min && projection1.min < projection2.max;\n}\nfunction isValidNumber(d) {\n return typeof d === 'number' && !Number.isNaN(d) && d !== Infinity && d !== -Infinity;\n}\nfunction isValidBox(box) {\n return ['x', 'y', 'width', 'height'].every(function (attr) {\n return isValidNumber(box[attr]);\n });\n}\n/**\n * 快速判断两个无旋转矩形是否遮挡\n */\nexport function isIntersectRect(box1, box2, margin) {\n if (margin === void 0) {\n margin = 0;\n }\n return !(box2.x > box1.x + box1.width + margin || box2.x + box2.width < box1.x - margin || box2.y > box1.y + box1.height + margin || box2.y + box2.height < box1.y - margin);\n}\n/**\n * detect whether two shape is intersected, useful when shape is been rotated\n * 判断两个矩形是否重叠(相交和包含, 是否旋转)\n *\n * - 原理: 分离轴定律\n */\nexport function intersect(box1, box2, margin) {\n if (margin === void 0) {\n margin = 0;\n }\n // 如果两个 box 中有一个是不合法的 box,也就是不会被渲染出来的,那么它们就不相交。\n if (!isValidBox(box1) || !isValidBox(box2)) return false;\n // 如果两个矩形没有旋转,使用快速判断\n if (!box1.rotation && !box2.rotation) {\n return isIntersectRect(box1, box2, margin);\n }\n // 分别获取 4 个关键点\n var rect1Points = getRectPoints(box1);\n var rect2Points = getRectPoints(box2);\n // 获取所有投影轴\n var axes = getAxes(rect1Points).concat(getAxes(rect2Points));\n for (var i = 0; i < axes.length; i++) {\n var axis = axes[i];\n var projection1 = getProjection(rect1Points, axis);\n var projection2 = getProjection(rect2Points, axis);\n // 判断投影轴上的投影是否存在重叠,若检测到存在间隙则立刻退出判断,消除不必要的运算。\n if (!isProjectionOverlap(projection1, projection2)) {\n return false;\n }\n }\n return true;\n}","import { isFunction } from '@antv/util';\nvar MyWorker = /** @class */function () {\n function MyWorker(url) {\n var _this = this;\n this.queue = [];\n this.worker = new Worker(url);\n this.worker.onmessage = function (e) {\n var _a;\n (_a = _this.queue.shift()) === null || _a === void 0 ? void 0 : _a.resolve(e);\n };\n this.worker.onmessageerror = function (e) {\n var _a;\n console.warn('[AntV G2] Web worker is not available');\n (_a = _this.queue.shift()) === null || _a === void 0 ? void 0 : _a.reject(e);\n };\n }\n MyWorker.prototype.post = function (params, onError) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n _this.queue.push({\n resolve: resolve,\n reject: reject\n });\n try {\n _this.worker.postMessage(params);\n } catch (e) {\n console.warn('[AntV G2] Web worker is not available');\n isFunction(onError) && onError();\n }\n });\n };\n MyWorker.prototype.destroy = function () {\n this.worker.terminate();\n };\n return MyWorker;\n}();\nexport function createWorker(f) {\n if (typeof window === 'undefined') return;\n var blob;\n try {\n blob = new Blob([f.toString()], {\n type: 'application/javascript'\n });\n } catch (e) {\n // @ts-ignore\n blob = new window.BlobBuilder();\n blob.append(f.toString());\n blob = blob.getBlob();\n }\n return new MyWorker(URL.createObjectURL(blob));\n}","var onmessage = function onmessage(e) {\n // Copy from src/util/collision-detect.ts\n function generateUtils() {\n function dot(a, b) {\n return (a[0] || 0) * (b[0] || 0) + (a[1] || 0) * (b[1] || 0) + (a[2] || 0) * (b[2] || 0);\n }\n /**\n * 1. 获取投影轴\n */\n function getAxes(points /** 多边形的关键点 */) {\n // 目前先处理 平行矩形 的场景, 其他多边形不处理\n if (points.length > 4) {\n return [];\n }\n // 获取向量\n var vector = function vector(start, end) {\n return [end.x - start.x, end.y - start.y];\n };\n // 由于 矩形的平行原理,所以只有 2 条投影轴: A -> B, B -> C\n var AB = vector(points[0], points[1]);\n var BC = vector(points[1], points[2]);\n return [AB, BC];\n }\n /**\n * 绕指定点顺时针旋转后的点坐标\n * 默认绕原点旋转\n */\n function rotateAtPoint(point, deg, origin) {\n if (deg === void 0) {\n deg = 0;\n }\n if (origin === void 0) {\n origin = {\n x: 0,\n y: 0\n };\n }\n var x = point.x,\n y = point.y;\n return {\n x: (x - origin.x) * Math.cos(-deg) + (y - origin.y) * Math.sin(-deg) + origin.x,\n y: (origin.x - x) * Math.sin(-deg) + (y - origin.y) * Math.cos(-deg) + origin.y\n };\n }\n /**\n * @private\n * 转化为顶点坐标数组\n *\n * @param {Object} box\n */\n function getRectPoints(box) {\n var points = [{\n x: box.x,\n y: box.y\n }, {\n x: box.x + box.width,\n y: box.y\n }, {\n x: box.x + box.width,\n y: box.y + box.height\n }, {\n x: box.x,\n y: box.y + box.height\n }];\n var rotation = box.rotation;\n if (rotation) {\n return [rotateAtPoint(points[0], rotation, points[0]), rotateAtPoint(points[1], rotation, points[0]), rotateAtPoint(points[2], rotation, points[0]), rotateAtPoint(points[3], rotation, points[0])];\n }\n return points;\n }\n /**\n * 2. 获取多边形在投影轴上的投影\n *\n * 向量的点积的其中一个几何含义是:一个向量在平行于另一个向量方向上的投影的数值乘积。\n * 由于投影轴是单位向量(长度为1),投影的长度为 x1 * x2 + y1 * y2\n */\n function getProjection(points /** 多边形的关键点 */, axis) {\n // 目前先处理矩形的场景\n if (points.length > 4) {\n return {\n min: 0,\n max: 0\n };\n }\n var scalars = [];\n points.forEach(function (point) {\n scalars.push(dot([point.x, point.y], axis));\n });\n return {\n min: Math.min.apply(null, scalars),\n max: Math.max.apply(null, scalars)\n };\n }\n function isProjectionOverlap(projection1, projection2) {\n return projection1.max > projection2.min && projection1.min < projection2.max;\n }\n function isValidNumber(d) {\n return typeof d === 'number' && !Number.isNaN(d) && d !== Infinity && d !== -Infinity;\n }\n function isValidBox(box) {\n return ['x', 'y', 'width', 'height'].every(function (attr) {\n return isValidNumber(box[attr]);\n });\n }\n function isIntersectRect(box1, box2, margin) {\n if (margin === void 0) {\n margin = 0;\n }\n return !(box2.x > box1.x + box1.width + margin || box2.x + box2.width < box1.x - margin || box2.y > box1.y + box1.height + margin || box2.y + box2.height < box1.y - margin);\n }\n function intersect(box1, box2, margin) {\n if (margin === void 0) {\n margin = 0;\n }\n if (!isValidBox(box1) || !isValidBox(box2)) return false;\n // Quick detect, if rotation is null or zero.\n if (!box1.rotation && !box2.rotation) {\n return isIntersectRect(box1, box2, margin);\n }\n // 分别获取 4 个关键点\n var rect1Points = getRectPoints(box1);\n var rect2Points = getRectPoints(box2);\n // 获取所有投影轴\n var axes = getAxes(rect1Points).concat(getAxes(rect2Points));\n for (var i = 0; i < axes.length; i++) {\n var axis = axes[i];\n var projection1 = getProjection(rect1Points, axis);\n var projection2 = getProjection(rect2Points, axis);\n if (!isProjectionOverlap(projection1, projection2)) return false;\n }\n return true;\n }\n return {\n intersect: intersect\n };\n }\n var intersect = generateUtils().intersect;\n // Label layouts.\n function hideOverlap(items) {\n var boxes = items.slice();\n for (var i = 0; i < boxes.length; i++) {\n var box1 = boxes[i];\n if (box1.visible) {\n for (var j = i + 1; j < boxes.length; j++) {\n var box2 = boxes[j];\n if (box1 !== box2 && box2.visible) {\n if (intersect(box1, box2)) {\n box2.visible = false;\n }\n }\n }\n }\n }\n return boxes;\n }\n var methods = {\n 'hide-overlap': hideOverlap\n };\n // Main\n try {\n var eventData = JSON.parse(e.data);\n if (!eventData || !eventData.type || !methods[eventData.type]) return;\n var type = eventData.type,\n items = eventData.items;\n var result = methods[type](items);\n self.postMessage(result);\n } catch (e) {\n throw e;\n }\n};\nvar code = \"\\n self.onmessage = \".concat(onmessage.toString(), \"\\n\");\nexport { code };","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { get, each } from '@antv/util';\nimport { intersect } from '../../../util/collision-detect';\nimport { getLabelBackgroundInfo } from '../util';\nimport { createWorker } from '../util/createWorker';\nimport { code as layoutCode } from './worker/hide-overlap';\nvar layout = function layout(items) {\n var boxes = items.slice();\n for (var i = 0; i < boxes.length; i++) {\n var box1 = boxes[i];\n if (box1.visible) {\n for (var j = i + 1; j < boxes.length; j++) {\n var box2 = boxes[j];\n if (box1 !== box2 && box2.visible) {\n if (intersect(box1, box2)) {\n box2.visible = false;\n }\n }\n }\n }\n }\n return boxes;\n};\nvar cache = new Map();\nvar worker = createWorker(layoutCode);\n/**\n * label 防遮挡布局:在不改变 label 位置的情况下对相互重叠的 label 进行隐藏(非移除)\n * 不同于 'overlap' 类型的布局,该布局不会对 label 的位置进行偏移调整。\n * @param labels 参与布局调整的 label 数组集合\n */\nexport function hideOverlap(labelItems, labels, shapes, region) {\n return __awaiter(this, void 0, void 0, function () {\n var boxes, memoKey, cb, params, res, e_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n boxes = labels.map(function (d, idx) {\n return __assign(__assign({}, getLabelBackgroundInfo(d, labelItems[idx], get(labelItems[idx], 'background.padding'))), {\n visible: true\n });\n });\n memoKey = JSON.stringify(boxes);\n cb = function cb(items) {\n cache.set(memoKey, items);\n each(items, function (_a, idx) {\n var visible = _a.visible;\n var labelShape = labels[idx];\n if (visible) {\n labelShape === null || labelShape === void 0 ? void 0 : labelShape.show();\n } else {\n labelShape === null || labelShape === void 0 ? void 0 : labelShape.hide();\n }\n });\n return items;\n };\n if (!cache.get(memoKey)) return [3 /*break*/, 1];\n cb(cache.get(memoKey));\n return [3 /*break*/, 7];\n case 1:\n if (!worker) return [3 /*break*/, 6];\n _a.label = 2;\n case 2:\n _a.trys.push([2, 4,, 5]);\n params = JSON.stringify({\n type: 'hide-overlap',\n items: boxes\n });\n return [4 /*yield*/, worker.post(params, function () {\n return cb(layout(boxes));\n })];\n case 3:\n res = _a.sent();\n cb(Array.isArray(res.data) ? res.data : []);\n return [3 /*break*/, 5];\n case 4:\n e_1 = _a.sent();\n console.error(e_1);\n cb(layout(boxes));\n return [3 /*break*/, 5];\n case 5:\n return [3 /*break*/, 7];\n case 6:\n // Normal layout in main thread.\n cb(layout(boxes));\n _a.label = 7;\n case 7:\n return [2 /*return*/];\n }\n });\n });\n}","import { __read } from \"tslib\";\nimport colorUtil from '@antv/color-util';\n// 内置的一些特殊设置\nvar preset = {\n '#5B8FF9': true\n};\n// 根据YIQ亮度判断指定颜色取反色是不是白色\n// http://24ways.org/2010/calculating-color-contrast\n// http://www.w3.org/TR/AERT#color-contrast\nexport var isContrastColorWhite = function isContrastColorWhite(color) {\n var rgb = colorUtil.toRGB(color).toUpperCase();\n if (preset[rgb]) {\n return preset[rgb];\n }\n var _a = __read(colorUtil.rgb2arr(rgb), 3),\n r = _a[0],\n g = _a[1],\n b = _a[2];\n var isDark = (r * 299 + g * 587 + b * 114) / 1000 < 128;\n return isDark;\n};","var ctx;\n/**\n * 获取 canvas context\n */\nexport function getCanvasContext() {\n if (!ctx) {\n ctx = document.createElement('canvas').getContext('2d');\n }\n return ctx;\n}","import { BBox } from '../../../../util/bbox';\nimport { findLabelTextShape } from '../../util';\nfunction shouldInShapeSingle(geometry, label, shape) {\n var coordinate = geometry.coordinate;\n var textShape = findLabelTextShape(label);\n var textBBox = BBox.fromObject(textShape.getCanvasBBox());\n var shapeBBox = BBox.fromObject(shape.getBBox());\n return coordinate.isTransposed ? shapeBBox.height >= textBBox.height : shapeBBox.width >= textBBox.width;\n}\nfunction shouldInShape(geometry, labels, shapes) {\n var isStack = !!geometry.getAdjust('stack');\n return isStack || labels.every(function (label, index) {\n var shape = shapes[index];\n return shouldInShapeSingle(geometry, label, shape);\n });\n}\nfunction moveInShape(geometry, label, shape) {\n var coordinate = geometry.coordinate;\n var shapeBBox = BBox.fromObject(shape.getBBox());\n var textShape = findLabelTextShape(label);\n if (coordinate.isTransposed) {\n // 水平方向:条形图系列\n textShape.attr({\n x: shapeBBox.minX + shapeBBox.width / 2,\n textAlign: 'center'\n });\n } else {\n // 垂直方向:柱形图系列\n textShape.attr({\n y: shapeBBox.minY + shapeBBox.height / 2,\n textBaseline: 'middle'\n });\n }\n}\n/**\n * 适用于 interval geometry 的数据标签位置自动调整布局方法\n * @param items\n * @param labels\n * @param shapes\n */\nexport function intervalAdjustPosition(items, labels, shapes) {\n var _a;\n if (shapes.length === 0) {\n return;\n }\n var element = (_a = shapes[0]) === null || _a === void 0 ? void 0 : _a.get('element');\n var geometry = element === null || element === void 0 ? void 0 : element.geometry;\n if (!geometry || geometry.type !== 'interval') {\n return;\n }\n var inShape = shouldInShape(geometry, labels, shapes);\n if (inShape) {\n shapes.forEach(function (shape, index) {\n var label = labels[index];\n moveInShape(geometry, label, shape);\n });\n }\n}","import { __read, __spreadArray } from \"tslib\";\nimport { groupBy, keys, map } from '@antv/util';\nimport { findLabelTextShape } from '../../util';\n/**\n * 对同一组(相同 xField )的 Label 进行排序:第一个、最后一个、其他...\n * @param geometry\n * @param labels\n */\nfunction sortLabels(geometry, labels) {\n var yField = geometry.getXYFields()[1];\n var result = [];\n var sortedLabels = labels.sort(function (left, right) {\n return left.get('data')[yField] - left.get('data')[yField];\n });\n if (sortedLabels.length > 0) {\n result.push(sortedLabels.shift());\n }\n if (sortedLabels.length > 0) {\n result.push(sortedLabels.pop());\n }\n result.push.apply(result, __spreadArray([], __read(sortedLabels), false));\n return result;\n}\nfunction hasSome(dones, current, compare) {\n return dones.some(function (done) {\n return compare(done, current);\n });\n}\n/**\n * 计算两个矩形之间的堆叠区域面积\n */\nfunction getOverlapArea(a, b, margin) {\n if (margin === void 0) {\n margin = 0;\n }\n var xOverlap = Math.max(0, Math.min(a.x + a.width + margin, b.x + b.width + margin) - Math.max(a.x - margin, b.x - margin));\n var yOverlap = Math.max(0, Math.min(a.y + a.height + margin, b.y + b.height + margin) - Math.max(a.y - margin, b.y - margin));\n return xOverlap * yOverlap;\n}\n/**\n * 判断新添加的 Label 是否和已存在的发生重叠\n * @param dones\n * @param current\n */\nfunction checkShapeOverlap(dones, current) {\n return hasSome(dones, current, function (left, right) {\n var leftText = findLabelTextShape(left);\n var rightText = findLabelTextShape(right);\n return getOverlapArea(leftText.getCanvasBBox(), rightText.getCanvasBBox(), 2) > 0;\n });\n}\n/**\n * 适用于 point geometry 的数据标签位置自动调整布局方法\n * @param items\n * @param labels\n * @param shapes\n * @param region\n * @param cfg\n */\nexport function pointAdjustPosition(items, labels, shapes, region, cfg) {\n var _a, _b;\n if (shapes.length === 0) {\n return;\n }\n var element = (_a = shapes[0]) === null || _a === void 0 ? void 0 : _a.get('element');\n var geometry = element === null || element === void 0 ? void 0 : element.geometry;\n if (!geometry || geometry.type !== 'point') {\n return;\n }\n var _c = __read(geometry.getXYFields(), 2),\n xField = _c[0],\n yField = _c[1];\n var groupedLabels = groupBy(labels, function (label) {\n return label.get('data')[xField];\n });\n var dones = [];\n var offset = cfg && cfg.offset || ((_b = items[0]) === null || _b === void 0 ? void 0 : _b.offset) || 12;\n map(keys(groupedLabels).reverse(), function (xValue) {\n var sortedCollections = sortLabels(geometry, groupedLabels[xValue]);\n while (sortedCollections.length) {\n var current = sortedCollections.shift();\n var textShape = findLabelTextShape(current);\n if (hasSome(dones, current, function (left, right) {\n return left.get('data')[xField] === right.get('data')[xField] && left.get('data')[yField] === right.get('data')[yField];\n })) {\n // 重复位置,直接隐藏\n textShape.set('visible', false);\n continue;\n }\n var upFail = checkShapeOverlap(dones, current);\n var downFail = false;\n if (upFail) {\n textShape.attr('y', textShape.attr('y') + 2 * offset);\n downFail = checkShapeOverlap(dones, current);\n }\n if (downFail) {\n textShape.set('visible', false);\n continue;\n }\n dones.push(current);\n }\n });\n}","import { __read, __spreadArray } from \"tslib\";\nimport { groupBy, keys, map } from '@antv/util';\nimport { findLabelTextShape } from '../../util';\n/**\n * 对同一组(相同 xField )的 Label 进行排序:第一个、最后一个、其他...\n * @param geometry\n * @param labels\n */\nfunction sortLabels(geometry, labels) {\n var yField = geometry.getXYFields()[1];\n var result = [];\n var sortedLabels = labels.sort(function (left, right) {\n return left.get('data')[yField] - left.get('data')[yField];\n });\n if (sortedLabels.length > 0) {\n result.push(sortedLabels.shift());\n }\n if (sortedLabels.length > 0) {\n result.push(sortedLabels.pop());\n }\n result.push.apply(result, __spreadArray([], __read(sortedLabels), false));\n return result;\n}\nfunction hasSome(dones, current, compare) {\n return dones.some(function (done) {\n return compare(done, current);\n });\n}\n/**\n * 计算两个矩形之间的堆叠区域面积\n */\nfunction getOverlapArea(a, b, margin) {\n if (margin === void 0) {\n margin = 0;\n }\n var xOverlap = Math.max(0, Math.min(a.x + a.width + margin, b.x + b.width + margin) - Math.max(a.x - margin, b.x - margin));\n var yOverlap = Math.max(0, Math.min(a.y + a.height + margin, b.y + b.height + margin) - Math.max(a.y - margin, b.y - margin));\n return xOverlap * yOverlap;\n}\n/**\n * 判断新添加的 Label 是否和已存在的发生重叠\n * @param dones\n * @param current\n */\nfunction checkShapeOverlap(dones, current) {\n return hasSome(dones, current, function (left, right) {\n var leftText = findLabelTextShape(left);\n var rightText = findLabelTextShape(right);\n return getOverlapArea(leftText.getCanvasBBox(), rightText.getCanvasBBox(), 2) > 0;\n });\n}\n/**\n * 适用于 point geometry 的数据标签位置自动调整布局方法\n * @param items\n * @param labels\n * @param shapes\n * @param region\n * @param cfg\n */\nexport function pathAdjustPosition(items, labels, shapes, region, cfg) {\n var _a, _b;\n if (shapes.length === 0) {\n return;\n }\n var element = (_a = shapes[0]) === null || _a === void 0 ? void 0 : _a.get('element');\n var geometry = element === null || element === void 0 ? void 0 : element.geometry;\n if (!geometry || ['path', 'line', 'area'].indexOf(geometry.type) < 0) {\n return;\n }\n var _c = __read(geometry.getXYFields(), 2),\n xField = _c[0],\n yField = _c[1];\n var groupedLabels = groupBy(labels, function (label) {\n return label.get('data')[xField];\n });\n var dones = [];\n var offset = cfg && cfg.offset || ((_b = items[0]) === null || _b === void 0 ? void 0 : _b.offset) || 12;\n map(keys(groupedLabels).reverse(), function (xValue) {\n var sortedCollections = sortLabels(geometry, groupedLabels[xValue]);\n while (sortedCollections.length) {\n var current = sortedCollections.shift();\n var textShape = findLabelTextShape(current);\n if (hasSome(dones, current, function (left, right) {\n return left.get('data')[xField] === right.get('data')[xField] && left.get('data')[yField] === right.get('data')[yField];\n })) {\n // 重复位置,直接隐藏\n textShape.set('visible', false);\n continue;\n }\n var upFail = checkShapeOverlap(dones, current);\n var downFail = false;\n if (upFail) {\n textShape.attr('y', textShape.attr('y') + 2 * offset);\n downFail = checkShapeOverlap(dones, current);\n }\n if (downFail) {\n textShape.set('visible', false);\n continue;\n }\n dones.push(current);\n }\n });\n}","import { __read, __spreadArray } from \"tslib\";\nimport { isString, memoize, values, toString } from '@antv/util';\nimport { getCanvasContext } from './context';\n/**\n * 计算文本在画布中的宽度\n */\nexport var measureTextWidth = memoize(function (text, font) {\n if (font === void 0) {\n font = {};\n }\n var fontSize = font.fontSize,\n fontFamily = font.fontFamily,\n fontWeight = font.fontWeight,\n fontStyle = font.fontStyle,\n fontVariant = font.fontVariant;\n var ctx = getCanvasContext();\n ctx.font = [fontStyle, fontVariant, fontWeight, \"\".concat(fontSize, \"px\"), fontFamily].join(' ');\n return ctx.measureText(isString(text) ? text : '').width;\n}, function (text, font) {\n if (font === void 0) {\n font = {};\n }\n return __spreadArray([text], __read(values(font)), false).join('');\n});\n/**\n * 获取文本的 ... 文本。\n * 算法(减少每次 measureText 的长度,measureText 的性能跟字符串时间相关):\n * 1. 先通过 STEP 逐步计算,找到最后一个小于 maxWidth 的字符串\n * 2. 然后对最后这个字符串二分计算\n * @param text 需要计算的文本, 由于历史原因 除了支持string,还支持空值,number和数组等\n * @param maxWidth\n * @param font\n */\nexport var getEllipsisText = function getEllipsisText(text, maxWidth, font) {\n var STEP = 16; // 每次 16,调参工程师\n var DOT_WIDTH = measureTextWidth('...', font);\n var leftText;\n if (!isString(text)) {\n leftText = toString(text);\n } else {\n leftText = text;\n }\n var leftWidth = maxWidth;\n var r = []; // 最终的分段字符串\n var currentText;\n var currentWidth;\n if (measureTextWidth(text, font) <= maxWidth) {\n return text;\n }\n // 首先通过 step 计算,找出最大的未超出长度的\n while (true) {\n // 更新字符串\n currentText = leftText.substr(0, STEP);\n // 计算宽度\n currentWidth = measureTextWidth(currentText, font);\n // 超出剩余宽度,则停止\n if (currentWidth + DOT_WIDTH > leftWidth) {\n if (currentWidth > leftWidth) {\n break;\n }\n }\n r.push(currentText);\n // 没有超出,则计算剩余宽度\n leftWidth -= currentWidth;\n leftText = leftText.substr(STEP);\n // 字符串整体没有超出\n if (!leftText) {\n return r.join('');\n }\n }\n // 最下的最后一个 STEP,使用 1 递增(用二分效果更高)\n while (true) {\n // 更新字符串\n currentText = leftText.substr(0, 1);\n // 计算宽度\n currentWidth = measureTextWidth(currentText, font);\n // 超出剩余宽度,则停止\n if (currentWidth + DOT_WIDTH > leftWidth) {\n break;\n }\n r.push(currentText);\n // 没有超出,则计算剩余宽度\n leftWidth -= currentWidth;\n leftText = leftText.substr(1);\n if (!leftText) {\n return r.join('');\n }\n }\n return \"\".concat(r.join(''), \"...\");\n};","import { __read } from \"tslib\";\nimport { ext } from '@antv/matrix-util';\n/**\n * @ignore\n * 对图形元素进行矩阵变换,同时返回变换前的图形矩阵\n * @param shape 进行矩阵变换的图形\n * @param vector 矩阵变换的中心点\n * @param direct 矩阵变换的类型\n */\nexport function transformShape(shape, vector, direct) {\n var scaledMatrix;\n var _a = __read(vector, 2),\n x = _a[0],\n y = _a[1];\n shape.applyToMatrix([x, y, 1]);\n if (direct === 'x') {\n shape.setMatrix(ext.transform(shape.getMatrix(), [['t', -x, -y], ['s', 0.01, 1], ['t', x, y]]));\n scaledMatrix = ext.transform(shape.getMatrix(), [['t', -x, -y], ['s', 100, 1], ['t', x, y]]);\n } else if (direct === 'y') {\n shape.setMatrix(ext.transform(shape.getMatrix(), [['t', -x, -y], ['s', 1, 0.01], ['t', x, y]]));\n scaledMatrix = ext.transform(shape.getMatrix(), [['t', -x, -y], ['s', 1, 100], ['t', x, y]]);\n } else if (direct === 'xy') {\n shape.setMatrix(ext.transform(shape.getMatrix(), [['t', -x, -y], ['s', 0.01, 0.01], ['t', x, y]]));\n scaledMatrix = ext.transform(shape.getMatrix(), [['t', -x, -y], ['s', 100, 100], ['t', x, y]]);\n }\n return scaledMatrix;\n}\n/**\n * 对图形元素进行剪切动画\n * @param element 进行动画的图形元素\n * @param animateCfg 动画配置\n * @param coordinate 当前坐标系\n * @param yMinPoint y 轴的最小值对应的图形坐标点\n * @param type 剪切动画的类型\n */\nexport function doScaleAnimate(element, animateCfg, coordinate, yMinPoint, type) {\n var start = coordinate.start,\n end = coordinate.end;\n var width = coordinate.getWidth();\n var height = coordinate.getHeight();\n var x;\n var y;\n if (type === 'y') {\n x = start.x + width / 2;\n y = yMinPoint.y < start.y ? yMinPoint.y : start.y;\n } else if (type === 'x') {\n x = yMinPoint.x > start.x ? yMinPoint.x : start.x;\n y = start.y + height / 2;\n } else if (type === 'xy') {\n if (coordinate.isPolar) {\n x = coordinate.getCenter().x;\n y = coordinate.getCenter().y;\n } else {\n x = (start.x + end.x) / 2;\n y = (start.y + end.y) / 2;\n }\n }\n var endMatrix = transformShape(element, [x, y], type);\n element.animate({\n matrix: endMatrix\n }, animateCfg);\n}","import { __assign, __read } from \"tslib\";\nimport { getArcParams } from '@antv/g-canvas';\nimport { isNumberEqual, isEqual, isFunction } from '@antv/util';\nimport { getArcPath, getSectorPath } from '../../util/graphics';\nfunction getAngle(startPoint, arcPath) {\n var _a;\n var _b = getArcParams(startPoint, arcPath),\n startAngle = _b.startAngle,\n endAngle = _b.endAngle;\n if (!isNumberEqual(startAngle, -Math.PI * 0.5) && startAngle < -Math.PI * 0.5) {\n startAngle += Math.PI * 2;\n }\n if (!isNumberEqual(endAngle, -Math.PI * 0.5) && endAngle < -Math.PI * 0.5) {\n endAngle += Math.PI * 2;\n }\n if (arcPath[5] === 0) {\n // 逆时针,需要将 startAngle 和 endAngle 转置,因为 G2 极坐标系为顺时针方向\n _a = __read([endAngle, startAngle], 2), startAngle = _a[0], endAngle = _a[1];\n }\n if (isNumberEqual(startAngle, Math.PI * 1.5)) {\n startAngle = Math.PI * -0.5;\n }\n // 当 startAngle, endAngle 接近相等时,不进行 endAngle = Math.PI * 1.5 防止变化从整个圆开始\n if (isNumberEqual(endAngle, Math.PI * -0.5) && !isNumberEqual(startAngle, endAngle)) {\n endAngle = Math.PI * 1.5;\n }\n return {\n startAngle: startAngle,\n endAngle: endAngle\n };\n}\nfunction getArcStartPoint(path) {\n var startPoint;\n if (path[0] === 'M' || path[0] === 'L') {\n startPoint = [path[1], path[2]];\n } else if (path[0] === 'a' || path[0] === 'A' || path[0] === 'C') {\n startPoint = [path[path.length - 2], path[path.length - 1]];\n }\n return startPoint;\n}\n/**\n * path 存在以下情况\n * 1. 饼图不为整圆的 path,命令为 M, L, A, L, Z\n * 2. 饼图为整圆的 path,命令为 M, M, A, A, M, Z\n * 3. 环图不为整圆的 path,命令为 M, A, L, A, L, Z\n * 4. 环图为整圆的 path,命令为 M, A, A, M, A, A, M, Z\n * 5. radial-line, 不为整圆时的 path, 命令为 M, A, A, Z\n * 6. radial-line, 为整圆时的 path,命令为 M, A, A, A, A, Z\n * @param path theta 坐标系下圆弧的 path 命令\n */\nexport function getArcInfo(path) {\n var _a;\n var startAngle;\n var endAngle;\n var arcPaths = path.filter(function (command) {\n return command[0] === 'A' || command[0] === 'a';\n });\n if (arcPaths.length === 0) {\n return {\n startAngle: 0,\n endAngle: 0,\n radius: 0,\n innerRadius: 0\n };\n }\n var firstArcPathCommand = arcPaths[0];\n var lastArcPathCommand = arcPaths.length > 1 ? arcPaths[1] : arcPaths[0];\n var firstIndex = path.indexOf(firstArcPathCommand);\n var lastIndex = path.indexOf(lastArcPathCommand);\n var firstStartPoint = getArcStartPoint(path[firstIndex - 1]);\n var lastStartPoint = getArcStartPoint(path[lastIndex - 1]);\n var _b = getAngle(firstStartPoint, firstArcPathCommand),\n firstStartAngle = _b.startAngle,\n firstEndAngle = _b.endAngle;\n var _c = getAngle(lastStartPoint, lastArcPathCommand),\n lastStartAngle = _c.startAngle,\n lastEndAngle = _c.endAngle;\n if (isNumberEqual(firstStartAngle, lastStartAngle) && isNumberEqual(firstEndAngle, lastEndAngle)) {\n startAngle = firstStartAngle;\n endAngle = firstEndAngle;\n } else {\n startAngle = Math.min(firstStartAngle, lastStartAngle);\n endAngle = Math.max(firstEndAngle, lastEndAngle);\n }\n var radius = firstArcPathCommand[1];\n var innerRadius = arcPaths[arcPaths.length - 1][1];\n if (radius < innerRadius) {\n _a = __read([innerRadius, radius], 2), radius = _a[0], innerRadius = _a[1];\n } else if (radius === innerRadius) {\n innerRadius = 0;\n }\n return {\n startAngle: startAngle,\n endAngle: endAngle,\n radius: radius,\n innerRadius: innerRadius\n };\n}\n/**\n * @ignore\n * 饼图更新动画\n * @param shape 文本图形\n * @param animateCfg\n * @param cfg\n */\nexport function sectorPathUpdate(shape, animateCfg, cfg) {\n var toAttrs = cfg.toAttrs,\n coordinate = cfg.coordinate;\n var path = toAttrs.path || [];\n var pathCommands = path.map(function (command) {\n return command[0];\n });\n if (path.length < 1) return;\n var _a = getArcInfo(path),\n curStartAngle = _a.startAngle,\n curEndAngle = _a.endAngle,\n radius = _a.radius,\n innerRadius = _a.innerRadius;\n var _b = getArcInfo(shape.attr('path')),\n preStartAngle = _b.startAngle,\n preEndAngle = _b.endAngle;\n var center = coordinate.getCenter();\n var diffStartAngle = curStartAngle - preStartAngle;\n var diffEndAngle = curEndAngle - preEndAngle;\n // 没有 diff 时直接返回最终 attrs,不需要额外动画\n if (diffStartAngle === 0 && diffEndAngle === 0) {\n shape.attr('path', path);\n return;\n }\n shape.animate(function (ratio) {\n var onFrameStartAngle = preStartAngle + ratio * diffStartAngle;\n var onFrameEndAngle = preEndAngle + ratio * diffEndAngle;\n return __assign(__assign({}, toAttrs), {\n path:\n // hack, 兼容 /examples/bar/basic/demo/radial-line.ts 动画\n isEqual(pathCommands, ['M', 'A', 'A', 'Z']) ? getArcPath(center.x, center.y, radius, onFrameStartAngle, onFrameEndAngle) : getSectorPath(center.x, center.y, radius, onFrameStartAngle, onFrameEndAngle, innerRadius)\n });\n }, __assign(__assign({}, animateCfg), {\n callback: function callback() {\n // 将 path 保持原始态,否则会影响 setState() 的动画\n shape.attr('path', path);\n isFunction(animateCfg.callback) && animateCfg.callback();\n }\n }));\n}","import { __assign } from \"tslib\";\nimport { ext } from '@antv/matrix-util';\nimport { each, isFunction } from '@antv/util';\nfunction doShapeZoom(shape, animateCfg, type) {\n if (shape.isGroup()) {\n each(shape.getChildren(), function (child) {\n doShapeZoom(child, animateCfg, type);\n });\n } else {\n var bbox = shape.getBBox();\n var x = (bbox.minX + bbox.maxX) / 2;\n var y = (bbox.minY + bbox.maxY) / 2;\n shape.applyToMatrix([x, y, 1]);\n if (type === 'zoomIn') {\n // 放大\n var matrix = ext.transform(shape.getMatrix(), [['t', -x, -y], ['s', 0.01, 0.01], ['t', x, y]]);\n shape.setMatrix(matrix);\n shape.animate({\n matrix: ext.transform(shape.getMatrix(), [['t', -x, -y], ['s', 100, 100], ['t', x, y]])\n }, animateCfg);\n } else {\n shape.animate({\n matrix: ext.transform(shape.getMatrix(), [['t', -x, -y], ['s', 0.01, 0.01], ['t', x, y]])\n }, __assign(__assign({}, animateCfg), {\n callback: function callback() {\n shape.remove(true);\n isFunction(animateCfg.callback) && animateCfg.callback();\n }\n }));\n }\n }\n}\n/**\n * @ignore\n * 单个 shape 动画\n * shape 以自身中心点逐渐放大的进入动画\n * @param shape 参与动画的图形元素\n * @param animateCfg 动画配置\n * @param cfg 额外信息\n */\nexport function zoomIn(shape, animateCfg, cfg) {\n doShapeZoom(shape, animateCfg, 'zoomIn');\n}\n/**\n * @ignore\n * 单个 shape 动画\n * 消失动画,shape 以自身为中心点的逐渐缩小\n * @param shape 参与动画的图形元素\n * @param animateCfg 动画配置\n * @param cfg 额外信息\n */\nexport function zoomOut(shape, animateCfg, cfg) {\n doShapeZoom(shape, animateCfg, 'zoomOut');\n}","import { DIRECTION } from '../constant';\n/**\n * @ignore\n * 获取 facet title 的最佳默认配置,防止\n */\nexport function getFactTitleConfig(direction) {\n if ([DIRECTION.TOP, DIRECTION.BOTTOM].includes(direction)) {\n return {\n offsetX: 0,\n offsetY: direction === DIRECTION.TOP ? -8 : 8,\n style: {\n textAlign: 'center',\n textBaseline: direction === DIRECTION.TOP ? 'bottom' : 'top'\n }\n };\n }\n if ([DIRECTION.LEFT, DIRECTION.RIGHT].includes(direction)) {\n return {\n offsetX: direction === DIRECTION.LEFT ? -8 : 8,\n offsetY: 0,\n style: {\n textAlign: direction === DIRECTION.LEFT ? 'right' : 'left',\n textBaseline: 'middle',\n rotate: Math.PI / 2 // 文本阅读习惯从上往下\n }\n };\n }\n\n return {};\n}\n/**\n * @ignore\n * 根据角度,获取 ○ 上的点\n * @param center\n * @param r\n * @param angle\n */\nexport function getAnglePoint(center, r, angle) {\n return {\n x: center.x + r * Math.cos(angle),\n y: center.y + r * Math.sin(angle)\n };\n}","import { __extends, __read } from \"tslib\";\nimport { deepMix, each, filter, get } from '@antv/util';\nimport { DIRECTION } from '../constant';\nimport { getAnglePoint, getFactTitleConfig } from '../util/facet';\nimport { Facet } from './facet';\n/**\n * @ignore\n * 镜像分面\n */\nvar Circle = /** @class */function (_super) {\n __extends(Circle, _super);\n function Circle() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Circle.prototype.getDefaultCfg = function () {\n return deepMix({}, _super.prototype.getDefaultCfg.call(this), {\n type: 'circle',\n showTitle: true,\n title: _super.prototype.getDefaultTitleCfg.call(this)\n });\n };\n Circle.prototype.render = function () {\n _super.prototype.render.call(this);\n if (this.cfg.showTitle) {\n this.renderTitle();\n }\n };\n /**\n * 根据总数和当前索引,计算分面的 region\n * @param count\n * @param index\n */\n Circle.prototype.getRegion = function (count, index) {\n var r = 1 / 2; // 画布半径\n // 画布圆心\n var center = {\n x: 0.5,\n y: 0.5\n };\n // 每隔分面间隔的弧度\n var avgAngle = Math.PI * 2 / count;\n // 当前分面所在的弧度\n var angle = -1 * Math.PI / 2 + avgAngle * index;\n // TODO 没看懂\n var facetR = r / (1 + 1 / Math.sin(avgAngle / 2));\n // 分面的中心点\n var middle = getAnglePoint(center, r - facetR, angle);\n var startAngle = Math.PI * 5 / 4; // 右上角\n var endAngle = Math.PI * 1 / 4; // 左下角\n return {\n start: getAnglePoint(middle, facetR, startAngle),\n end: getAnglePoint(middle, facetR, endAngle)\n };\n };\n Circle.prototype.afterEachView = function (view, facet) {\n this.processAxis(view, facet);\n };\n Circle.prototype.beforeEachView = function (view, facet) {};\n Circle.prototype.generateFacets = function (data) {\n var _this = this;\n var _a = this.cfg,\n fields = _a.fields,\n type = _a.type;\n var _b = __read(fields, 1),\n field = _b[0];\n if (!field) {\n throw new Error('No `fields` specified!');\n }\n var values = this.getFieldValues(data, field);\n var count = values.length;\n var rst = [];\n values.forEach(function (value, index) {\n var conditions = [{\n field: field,\n value: value,\n values: values\n }];\n var facetData = filter(data, _this.getFacetDataFilter(conditions));\n var facet = {\n type: type,\n data: facetData,\n region: _this.getRegion(count, index),\n columnValue: value,\n columnField: field,\n columnIndex: index,\n columnValuesLength: count,\n rowValue: null,\n rowField: null,\n rowIndex: 0,\n rowValuesLength: 1\n };\n rst.push(facet);\n });\n return rst;\n };\n Circle.prototype.getXAxisOption = function (x, axes, option, facet) {\n // 不做任何处理\n return option;\n };\n /**\n * 设置 y 坐标轴的文本、title 是否显示\n * @param y\n * @param axes\n * @param option\n * @param facet\n */\n Circle.prototype.getYAxisOption = function (y, axes, option, facet) {\n // 不做任何处理\n return option;\n };\n /**\n * facet title\n */\n Circle.prototype.renderTitle = function () {\n var _this = this;\n each(this.facets, function (facet) {\n var columnValue = facet.columnValue,\n view = facet.view;\n var formatter = get(_this.cfg.title, 'formatter');\n var config = deepMix({\n position: ['50%', '0%'],\n content: formatter ? formatter(columnValue) : columnValue\n }, getFactTitleConfig(DIRECTION.TOP), _this.cfg.title);\n view.annotation().text(config);\n });\n };\n return Circle;\n}(Facet);\nexport default Circle;","import { __assign, __extends, __read } from \"tslib\";\nimport { deepMix, each, filter, get } from '@antv/util';\nimport { DIRECTION } from '../constant';\nimport { getFactTitleConfig } from '../util/facet';\nimport { Facet } from './facet';\n/**\n * @ignore\n * 镜像分面\n */\nvar List = /** @class */function (_super) {\n __extends(List, _super);\n function List() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n List.prototype.getDefaultCfg = function () {\n return deepMix({}, _super.prototype.getDefaultCfg.call(this), {\n type: 'list',\n cols: null,\n showTitle: true,\n title: _super.prototype.getDefaultTitleCfg.call(this)\n });\n };\n List.prototype.render = function () {\n _super.prototype.render.call(this);\n if (this.cfg.showTitle) {\n this.renderTitle();\n }\n };\n List.prototype.afterEachView = function (view, facet) {\n this.processAxis(view, facet);\n };\n List.prototype.beforeEachView = function (view, facet) {};\n List.prototype.generateFacets = function (data) {\n var _this = this;\n var fields = this.cfg.fields;\n var cols = this.cfg.cols;\n var _a = __read(fields, 1),\n columnField = _a[0];\n if (!columnField) {\n throw new Error('No `fields` specified!');\n }\n var colValues = this.getFieldValues(data, columnField);\n var count = colValues.length;\n cols = cols || count; // 每行有几列数据\n // 总共有几行\n var rows = this.getPageCount(count, cols);\n var rst = [];\n colValues.forEach(function (val, index) {\n // 当前 index 在那个行列\n var _a = _this.getRowCol(index, cols),\n row = _a.row,\n col = _a.col;\n var conditions = [{\n field: columnField,\n value: val,\n values: colValues\n }];\n var facetData = filter(data, _this.getFacetDataFilter(conditions));\n var facet = {\n type: _this.cfg.type,\n data: facetData,\n region: _this.getRegion(rows, cols, col, row),\n columnValue: val,\n rowValue: val,\n columnField: columnField,\n rowField: null,\n columnIndex: col,\n rowIndex: row,\n columnValuesLength: cols,\n rowValuesLength: rows,\n total: count\n };\n rst.push(facet);\n });\n return rst;\n };\n /**\n * 设置 x 坐标轴的文本、title 是否显示\n * @param x\n * @param axes\n * @param option\n * @param facet\n */\n List.prototype.getXAxisOption = function (x, axes, option, facet) {\n // 当是最后一行或者下面没有 view 时文本不显示\n if (facet.rowIndex !== facet.rowValuesLength - 1 && facet.columnValuesLength * facet.rowIndex + facet.columnIndex + 1 + facet.columnValuesLength <= facet.total) {\n return __assign(__assign({}, option), {\n label: null,\n title: null\n });\n }\n return option;\n };\n /**\n * 设置 y 坐标轴的文本、title 是否显示\n * @param y\n * @param axes\n * @param option\n * @param facet\n */\n List.prototype.getYAxisOption = function (y, axes, option, facet) {\n if (facet.columnIndex !== 0) {\n return __assign(__assign({}, option), {\n title: null,\n label: null\n });\n }\n return option;\n };\n /**\n * facet title\n */\n List.prototype.renderTitle = function () {\n var _this = this;\n each(this.facets, function (facet) {\n var columnValue = facet.columnValue,\n view = facet.view;\n var formatter = get(_this.cfg.title, 'formatter');\n var config = deepMix({\n position: ['50%', '0%'],\n content: formatter ? formatter(columnValue) : columnValue\n }, getFactTitleConfig(DIRECTION.TOP), _this.cfg.title);\n view.annotation().text(config);\n });\n };\n /**\n * 计算分页数\n * @param total\n * @param pageSize\n */\n List.prototype.getPageCount = function (total, pageSize) {\n return Math.floor((total + pageSize - 1) / pageSize);\n };\n /**\n * 索引值在哪一页\n * @param index\n * @param pageSize\n */\n List.prototype.getRowCol = function (index, pageSize) {\n var row = Math.floor(index / pageSize);\n var col = index % pageSize;\n return {\n row: row,\n col: col\n };\n };\n return List;\n}(Facet);\nexport default List;","import { __assign, __extends } from \"tslib\";\nimport { deepMix, each, get } from '@antv/util';\nimport { DIRECTION } from '../constant';\nimport { getFactTitleConfig } from '../util/facet';\nimport { Facet } from './facet';\n/**\n * @ignore\n * 镜像分面\n */\nvar Matrix = /** @class */function (_super) {\n __extends(Matrix, _super);\n function Matrix() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Matrix.prototype.getDefaultCfg = function () {\n return deepMix({}, _super.prototype.getDefaultCfg.call(this), {\n type: 'matrix',\n showTitle: false,\n columnTitle: __assign({}, _super.prototype.getDefaultTitleCfg.call(this)),\n rowTitle: __assign({}, _super.prototype.getDefaultTitleCfg.call(this))\n });\n };\n Matrix.prototype.render = function () {\n _super.prototype.render.call(this);\n if (this.cfg.showTitle) {\n this.renderTitle();\n }\n };\n Matrix.prototype.afterEachView = function (view, facet) {\n this.processAxis(view, facet);\n };\n Matrix.prototype.beforeEachView = function (view, facet) {};\n Matrix.prototype.generateFacets = function (data) {\n var _a = this.cfg,\n fields = _a.fields,\n type = _a.type;\n // 矩阵中行列相等,等于指定的字段个数\n var rowValuesLength = fields.length;\n var columnValuesLength = rowValuesLength;\n var rst = [];\n for (var i = 0; i < columnValuesLength; i++) {\n var columnField = fields[i];\n for (var j = 0; j < rowValuesLength; j++) {\n var rowField = fields[j];\n var facet = {\n type: type,\n data: data,\n region: this.getRegion(rowValuesLength, columnValuesLength, i, j),\n columnValue: columnField,\n rowValue: rowField,\n columnField: columnField,\n rowField: rowField,\n columnIndex: i,\n rowIndex: j,\n columnValuesLength: columnValuesLength,\n rowValuesLength: rowValuesLength\n };\n rst.push(facet);\n }\n }\n return rst;\n };\n /**\n * 设置 x 坐标轴的文本、title 是否显示\n * @param x\n * @param axes\n * @param option\n * @param facet\n */\n Matrix.prototype.getXAxisOption = function (x, axes, option, facet) {\n // 最后一行显示\n if (facet.rowIndex !== facet.rowValuesLength - 1) {\n return __assign(__assign({}, option), {\n label: null,\n title: null\n });\n }\n return option;\n };\n /**\n * 设置 y 坐标轴的文本、title 是否显示\n * @param y\n * @param axes\n * @param option\n * @param facet\n */\n Matrix.prototype.getYAxisOption = function (y, axes, option, facet) {\n // 第一列显示\n if (facet.columnIndex !== 0) {\n return __assign(__assign({}, option), {\n title: null,\n label: null\n });\n }\n return option;\n };\n /**\n * facet title\n */\n Matrix.prototype.renderTitle = function () {\n var _this = this;\n each(this.facets, function (facet, facetIndex) {\n var columnIndex = facet.columnIndex,\n rowIndex = facet.rowIndex,\n columnValuesLength = facet.columnValuesLength,\n rowValuesLength = facet.rowValuesLength,\n columnValue = facet.columnValue,\n rowValue = facet.rowValue,\n view = facet.view;\n // top\n if (rowIndex === 0) {\n var formatter = get(_this.cfg.columnTitle, 'formatter');\n var config = deepMix({\n position: ['50%', '0%'],\n content: formatter ? formatter(columnValue) : columnValue\n }, getFactTitleConfig(DIRECTION.TOP), _this.cfg.columnTitle);\n view.annotation().text(config);\n }\n // right\n if (columnIndex === columnValuesLength - 1) {\n var formatter = get(_this.cfg.rowTitle, 'formatter');\n var config = deepMix({\n position: ['100%', '50%'],\n content: formatter ? formatter(rowValue) : rowValue\n }, getFactTitleConfig(DIRECTION.RIGHT), _this.cfg.rowTitle);\n view.annotation().text(config);\n }\n });\n };\n return Matrix;\n}(Facet);\nexport default Matrix;","import { __assign, __extends, __read } from \"tslib\";\nimport { deepMix, each, filter, get } from '@antv/util';\nimport { DIRECTION } from '../constant';\nimport { getFactTitleConfig } from '../util/facet';\nimport { Facet } from './facet';\n/**\n * @ignore\n * 镜像分面\n */\nvar Mirror = /** @class */function (_super) {\n __extends(Mirror, _super);\n function Mirror() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Mirror.prototype.getDefaultCfg = function () {\n return deepMix({}, _super.prototype.getDefaultCfg.call(this), {\n type: 'mirror',\n showTitle: true,\n title: _super.prototype.getDefaultTitleCfg.call(this),\n transpose: false\n });\n };\n Mirror.prototype.render = function () {\n _super.prototype.render.call(this);\n if (this.cfg.showTitle) {\n this.renderTitle();\n }\n };\n Mirror.prototype.beforeEachView = function (view, facet) {\n // 做一下坐标系转化\n if (this.cfg.transpose) {\n if (facet.columnIndex % 2 === 0) {\n view.coordinate().transpose().reflect('x');\n } else {\n view.coordinate().transpose();\n }\n } else {\n if (facet.rowIndex % 2 !== 0) {\n view.coordinate().reflect('y');\n }\n }\n };\n Mirror.prototype.afterEachView = function (view, facet) {\n this.processAxis(view, facet);\n };\n Mirror.prototype.generateFacets = function (data) {\n var _this = this;\n var _a = __read(this.cfg.fields, 1),\n f = _a[0];\n var rst = [];\n var columnValuesLength = 1;\n var rowValuesLength = 1;\n var columnValues = [''];\n var rowValues = [''];\n var columnField;\n var rowField;\n if (this.cfg.transpose) {\n columnField = f;\n columnValues = this.getFieldValues(data, columnField).slice(0, 2); // 镜像最多两个\n columnValuesLength = columnValues.length;\n } else {\n rowField = f;\n rowValues = this.getFieldValues(data, rowField).slice(0, 2); // 镜像最多两个\n rowValuesLength = rowValues.length;\n }\n // 获取每个维度对应的数据配置片段\n columnValues.forEach(function (xVal, xIndex) {\n rowValues.forEach(function (yVal, yIndex) {\n var conditions = [{\n field: columnField,\n value: xVal,\n values: columnValues\n }, {\n field: rowField,\n value: yVal,\n values: rowValues\n }];\n var facetData = filter(data, _this.getFacetDataFilter(conditions));\n var facet = {\n type: _this.cfg.type,\n data: facetData,\n region: _this.getRegion(rowValuesLength, columnValuesLength, xIndex, yIndex),\n columnValue: xVal,\n rowValue: yVal,\n columnField: columnField,\n rowField: rowField,\n columnIndex: xIndex,\n rowIndex: yIndex,\n columnValuesLength: columnValuesLength,\n rowValuesLength: rowValuesLength\n };\n rst.push(facet);\n });\n });\n return rst;\n };\n /**\n * 设置 x 坐标轴的文本、title 是否显示\n * @param x\n * @param axes\n * @param option\n * @param facet\n */\n Mirror.prototype.getXAxisOption = function (x, axes, option, facet) {\n // 非最后一行\n // 当是最后一行或者下面没有 view 时文本不显示\n if (facet.columnIndex === 1 || facet.rowIndex === 1) {\n return __assign(__assign({}, option), {\n label: null,\n title: null\n });\n }\n return option;\n };\n /**\n * 设置 y 坐标轴的文本、title 是否显示\n * @param y\n * @param axes\n * @param option\n * @param facet\n */\n Mirror.prototype.getYAxisOption = function (y, axes, option, facet) {\n // do nothing\n return option;\n };\n Mirror.prototype.renderTitle = function () {\n var _this = this;\n each(this.facets, function (facet, facetIndex) {\n var columnValue = facet.columnValue,\n rowValue = facet.rowValue,\n view = facet.view;\n var formatter = get(_this.cfg.title, 'formatter');\n if (_this.cfg.transpose) {\n var config = deepMix({\n position: ['50%', '0%'],\n content: formatter ? formatter(columnValue) : columnValue\n }, getFactTitleConfig(DIRECTION.TOP), _this.cfg.title);\n view.annotation().text(config);\n } else {\n var config = deepMix({\n position: ['100%', '50%'],\n content: formatter ? formatter(rowValue) : rowValue\n }, getFactTitleConfig(DIRECTION.RIGHT), _this.cfg.title);\n view.annotation().text(config);\n }\n });\n };\n return Mirror;\n}(Facet);\nexport default Mirror;","import { __assign, __extends, __read } from \"tslib\";\nimport { deepMix, each, filter, get } from '@antv/util';\nimport { DIRECTION } from '../constant';\nimport { getFactTitleConfig } from '../util/facet';\nimport { Facet } from './facet';\n/**\n * @ignore\n * 矩阵分面\n */\nvar Rect = /** @class */function (_super) {\n __extends(Rect, _super);\n function Rect() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Rect.prototype.afterEachView = function (view, facet) {\n this.processAxis(view, facet);\n };\n Rect.prototype.beforeEachView = function (view, facet) {\n // do nothing\n };\n Rect.prototype.getDefaultCfg = function () {\n return deepMix({}, _super.prototype.getDefaultCfg.call(this), {\n type: 'rect',\n columnTitle: __assign({}, _super.prototype.getDefaultTitleCfg.call(this)),\n rowTitle: __assign({}, _super.prototype.getDefaultTitleCfg.call(this))\n });\n };\n Rect.prototype.render = function () {\n _super.prototype.render.call(this);\n if (this.cfg.showTitle) {\n this.renderTitle();\n }\n };\n /**\n * 生成矩阵分面的分面数据\n * @param data\n */\n Rect.prototype.generateFacets = function (data) {\n var _this = this;\n var _a = __read(this.cfg.fields, 2),\n columnField = _a[0],\n rowField = _a[1];\n var rst = [];\n var columnValuesLength = 1;\n var rowValuesLength = 1;\n var columnValues = [''];\n var rowValues = [''];\n if (columnField) {\n columnValues = this.getFieldValues(data, columnField);\n columnValuesLength = columnValues.length;\n }\n if (rowField) {\n rowValues = this.getFieldValues(data, rowField);\n rowValuesLength = rowValues.length;\n }\n // 获取每个维度对应的数据配置片段\n columnValues.forEach(function (xVal, xIndex) {\n rowValues.forEach(function (yVal, yIndex) {\n var conditions = [{\n field: columnField,\n value: xVal,\n values: columnValues\n }, {\n field: rowField,\n value: yVal,\n values: rowValues\n }];\n var facetData = filter(data, _this.getFacetDataFilter(conditions));\n var facet = {\n type: _this.cfg.type,\n data: facetData,\n region: _this.getRegion(rowValuesLength, columnValuesLength, xIndex, yIndex),\n columnValue: xVal,\n rowValue: yVal,\n columnField: columnField,\n rowField: rowField,\n columnIndex: xIndex,\n rowIndex: yIndex,\n columnValuesLength: columnValuesLength,\n rowValuesLength: rowValuesLength\n };\n rst.push(facet);\n });\n });\n return rst;\n };\n Rect.prototype.renderTitle = function () {\n var _this = this;\n each(this.facets, function (facet, facetIndex) {\n var columnIndex = facet.columnIndex,\n rowIndex = facet.rowIndex,\n columnValuesLength = facet.columnValuesLength,\n columnValue = facet.columnValue,\n rowValue = facet.rowValue,\n view = facet.view;\n // top\n if (rowIndex === 0) {\n var formatter = get(_this.cfg.columnTitle, 'formatter');\n var config = deepMix({\n position: ['50%', '0%'],\n content: formatter ? formatter(columnValue) : columnValue\n }, getFactTitleConfig(DIRECTION.TOP), _this.cfg.columnTitle);\n view.annotation().text(config);\n }\n // right\n if (columnIndex === columnValuesLength - 1) {\n var formatter = get(_this.cfg.rowTitle, 'formatter');\n var config = deepMix({\n position: ['100%', '50%'],\n content: formatter ? formatter(rowValue) : rowValue\n }, getFactTitleConfig(DIRECTION.RIGHT), _this.cfg.rowTitle);\n view.annotation().text(config);\n }\n });\n };\n /**\n * 设置 x 坐标轴的文本、title 是否显示\n * @param x\n * @param axes\n * @param option\n * @param facet\n */\n Rect.prototype.getXAxisOption = function (x, axes, option, facet) {\n // 非最后一行\n if (facet.rowIndex !== facet.rowValuesLength - 1) {\n return __assign(__assign({}, option), {\n title: null,\n label: null\n });\n } else if (facet.columnIndex !== Math.floor((facet.columnValuesLength - 1) / 2)) {\n // 不是中间列\n return __assign(__assign({}, option), {\n title: null\n });\n }\n return option;\n };\n /**\n * 设置 y 坐标轴的文本、title 是否显示\n * @param y\n * @param axes\n * @param option\n * @param facet\n */\n Rect.prototype.getYAxisOption = function (y, axes, option, facet) {\n if (facet.columnIndex !== 0) {\n return __assign(__assign({}, option), {\n title: null,\n label: null\n });\n } else if (facet.rowIndex !== Math.floor((facet.rowValuesLength - 1) / 2)) {\n return __assign(__assign({}, option), {\n title: null\n });\n }\n return option;\n };\n return Rect;\n}(Facet);\nexport default Rect;","import { __assign, __extends, __values } from \"tslib\";\n/**\n * Create By Bruce Too\n * On 2020-02-10\n */\nimport { assign, deepMix, each, get } from '@antv/util';\nimport { DIRECTION, VIEW_LIFE_CIRCLE } from '../constant';\nimport { getFactTitleConfig } from '../util/facet';\nimport { Facet } from './facet';\n/**\n * @ignore\n * Tree Facet\n */\nvar Tree = /** @class */function (_super) {\n __extends(Tree, _super);\n function Tree() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.afterChartRender = function () {\n if (_this.facets && _this.cfg.line) {\n _this.container.clear();\n _this.drawLines(_this.facets);\n }\n };\n return _this;\n }\n Tree.prototype.afterEachView = function (view, facet) {\n this.processAxis(view, facet);\n };\n Tree.prototype.beforeEachView = function (view, facet) {};\n Tree.prototype.init = function () {\n _super.prototype.init.call(this);\n this.view.on(VIEW_LIFE_CIRCLE.AFTER_RENDER, this.afterChartRender);\n };\n Tree.prototype.getDefaultCfg = function () {\n return deepMix({}, _super.prototype.getDefaultCfg.call(this), {\n type: 'tree',\n line: {\n style: {\n lineWidth: 1,\n stroke: '#ddd'\n },\n smooth: false\n },\n showTitle: true,\n title: _super.prototype.getDefaultTitleCfg.call(this)\n });\n };\n Tree.prototype.generateFacets = function (data) {\n var fields = this.cfg.fields;\n if (!fields.length) {\n throw new Error('Please specify for the fields for rootFacet!');\n }\n var rst = [];\n var rootFacet = {\n type: this.cfg.type,\n data: data,\n region: null,\n rowValuesLength: this.getRows(),\n columnValuesLength: 1,\n rowIndex: 0,\n columnIndex: 0,\n rowField: '',\n columnField: '',\n rowValue: '',\n columnValue: ''\n };\n rst.push(rootFacet);\n rootFacet.children = this.getChildFacets(data, 1, rst);\n this.setRegion(rst);\n return rst;\n };\n Tree.prototype.setRegion = function (facets) {\n var _this = this;\n this.forceColIndex(facets);\n facets.forEach(function (facet) {\n // @ts-ignore 允许调整\n facet.region = _this.getRegion(facet.rowValuesLength, facet.columnValuesLength, facet.columnIndex, facet.rowIndex);\n });\n };\n Tree.prototype.getRegion = function (rows, cols, xIndex, yIndex) {\n var xWidth = 1 / cols; // x轴方向的每个分面的偏移\n var yWidth = 1 / rows; // y轴方向的每个分面的偏移\n var start = {\n x: xWidth * xIndex,\n y: yWidth * yIndex\n };\n var end = {\n x: start.x + xWidth,\n y: start.y + yWidth * 2 / 3 // 预留1/3的空隙,方便添加连接线\n };\n\n return {\n start: start,\n end: end\n };\n };\n Tree.prototype.forceColIndex = function (facets) {\n var e_1, _a;\n var _this = this;\n var leafs = [];\n var index = 0;\n facets.forEach(function (facet) {\n if (_this.isLeaf(facet)) {\n leafs.push(facet);\n // @ts-ignore 允许调整\n facet.columnIndex = index;\n index++;\n }\n });\n leafs.forEach(function (facet) {\n // @ts-ignore\n facet.columnValuesLength = leafs.length;\n });\n var maxLevel = this.cfg.fields.length;\n for (var i = maxLevel - 1; i >= 0; i--) {\n var levelFacets = this.getFacetsByLevel(facets, i);\n try {\n // var yIndex = maxLevel - i;\n for (var levelFacets_1 = (e_1 = void 0, __values(levelFacets)), levelFacets_1_1 = levelFacets_1.next(); !levelFacets_1_1.done; levelFacets_1_1 = levelFacets_1.next()) {\n var facet = levelFacets_1_1.value;\n if (!this.isLeaf(facet)) {\n facet.originColIndex = facet.columnIndex;\n // @ts-ignore\n facet.columnIndex = this.getRegionIndex(facet.children);\n // @ts-ignore\n facet.columnValuesLength = leafs.length;\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (levelFacets_1_1 && !levelFacets_1_1.done && (_a = levelFacets_1.return)) _a.call(levelFacets_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n }\n };\n // get facet use level\n Tree.prototype.getFacetsByLevel = function (facets, level) {\n var rst = [];\n facets.forEach(function (facet) {\n if (facet.rowIndex === level) {\n rst.push(facet);\n }\n });\n return rst;\n };\n // if the facet has children , make it's column index in the middle of it's children\n Tree.prototype.getRegionIndex = function (children) {\n var first = children[0];\n var last = children[children.length - 1];\n return (last.columnIndex - first.columnIndex) / 2 + first.columnIndex;\n };\n // is a leaf without children\n Tree.prototype.isLeaf = function (facet) {\n return !facet.children || !facet.children.length;\n };\n Tree.prototype.getRows = function () {\n return this.cfg.fields.length + 1;\n };\n // get child\n Tree.prototype.getChildFacets = function (data, level, arr) {\n var _this = this;\n // [ 'grade', 'class' ]\n var fields = this.cfg.fields;\n var length = fields.length;\n if (length < level) {\n return;\n }\n var rst = [];\n // get fist level except root node\n var field = fields[level - 1];\n // get field value\n var values = this.getFieldValues(data, field);\n values.forEach(function (value, index) {\n var conditions = [{\n field: field,\n value: value,\n values: values\n }];\n var subData = data.filter(_this.getFacetDataFilter(conditions));\n if (subData.length) {\n var facet = {\n type: _this.cfg.type,\n data: subData,\n region: null,\n columnValue: value,\n rowValue: '',\n columnField: field,\n rowField: '',\n columnIndex: index,\n rowValuesLength: _this.getRows(),\n columnValuesLength: 1,\n rowIndex: level,\n children: _this.getChildFacets(subData, level + 1, arr)\n };\n rst.push(facet);\n arr.push(facet);\n }\n });\n return rst;\n };\n Tree.prototype.render = function () {\n _super.prototype.render.call(this);\n if (this.cfg.showTitle) {\n this.renderTitle();\n }\n };\n Tree.prototype.renderTitle = function () {\n var _this = this;\n each(this.facets, function (facet) {\n var columnValue = facet.columnValue,\n view = facet.view;\n var formatter = get(_this.cfg.title, 'formatter');\n var config = deepMix({\n position: ['50%', '0%'],\n content: formatter ? formatter(columnValue) : columnValue\n }, getFactTitleConfig(DIRECTION.TOP), _this.cfg.title);\n view.annotation().text(config);\n });\n };\n Tree.prototype.drawLines = function (facets) {\n var _this = this;\n facets.forEach(function (facet) {\n if (!_this.isLeaf(facet)) {\n var children = facet.children;\n _this.addFacetLines(facet, children);\n }\n });\n };\n // add lines with it's children\n Tree.prototype.addFacetLines = function (facet, children) {\n var _this = this;\n var view = facet.view;\n var region = view.coordinateBBox;\n // top, right, bottom, left\n var start = {\n x: region.x + region.width / 2,\n y: region.y + region.height\n };\n children.forEach(function (subFacet) {\n var subRegion = subFacet.view.coordinateBBox;\n var end = {\n x: subRegion.bl.x + (subRegion.tr.x - subRegion.bl.x) / 2,\n y: subRegion.tr.y\n };\n var middle1 = {\n x: start.x,\n y: start.y + (end.y - start.y) / 2\n };\n var middle2 = {\n x: end.x,\n y: middle1.y\n };\n _this.drawLine([start, middle1, middle2, end]);\n });\n };\n Tree.prototype.getPath = function (points) {\n var path = [];\n var smooth = this.cfg.line.smooth;\n if (smooth) {\n path.push(['M', points[0].x, points[0].y]);\n path.push(['C', points[1].x, points[1].y, points[2].x, points[2].y, points[3].x, points[3].y]);\n } else {\n points.forEach(function (point, index) {\n if (index === 0) {\n path.push(['M', point.x, point.y]);\n } else {\n path.push(['L', point.x, point.y]);\n }\n });\n }\n return path;\n };\n // draw line width points\n Tree.prototype.drawLine = function (points) {\n var path = this.getPath(points);\n var line = this.cfg.line.style;\n this.container.addShape('path', {\n attrs: assign({\n // @ts-ignore\n path: path\n }, line)\n });\n };\n Tree.prototype.getXAxisOption = function (x, axes, option, facet) {\n if (facet.rowIndex !== facet.rowValuesLength - 1) {\n return __assign(__assign({}, option), {\n title: null,\n label: null\n });\n }\n return option;\n };\n Tree.prototype.getYAxisOption = function (y, axes, option, facet) {\n if (facet.originColIndex !== 0 && facet.columnIndex !== 0) {\n return __assign(__assign({}, option), {\n title: null,\n label: null\n });\n }\n return option;\n };\n return Tree;\n}(Facet);\nexport default Tree;","import { __read, __spreadArray } from \"tslib\";\nimport { reduce, isNumber } from '@antv/util';\n/**\n * 获得中位数\n * @param array\n */\nexport function getMedian(array) {\n var arr = __spreadArray([], __read(array), false);\n // 先排序\n arr.sort(function (a, b) {\n return a - b;\n });\n var len = arr.length;\n // median\n // 0\n if (len === 0) {\n return 0;\n }\n // 奇数\n if (len % 2 === 1) {\n return arr[(len - 1) / 2];\n }\n // 偶数\n return (arr[len / 2] + arr[len / 2 - 1]) / 2;\n}\n/**\n * 获得平均值\n * @param array\n */\nexport function getMean(array) {\n var sum = reduce(array, function (r, num) {\n return r += isNaN(num) || !isNumber(num) ? 0 : num;\n }, 0);\n return array.length === 0 ? 0 : sum / array.length;\n}","import { getMedian, getMean } from './stat';\n/**\n * parse the value position\n * @param val\n * @param scale\n */\nexport function getNormalizedValue(val, scale) {\n if (!scale) {\n return null;\n }\n var scaled;\n switch (val) {\n case 'start':\n return 0;\n case 'center':\n return 0.5;\n case 'end':\n return 1;\n case 'median':\n {\n scaled = scale.isCategory ? getMedian(scale.values.map(function (_, idx) {\n return idx;\n })) : getMedian(scale.values);\n break;\n }\n case 'mean':\n {\n scaled = scale.isCategory ? (scale.values.length - 1) / 2 : getMean(scale.values);\n break;\n }\n case 'min':\n scaled = scale.isCategory ? 0 : scale[val];\n break;\n case 'max':\n scaled = scale.isCategory ? scale.values.length - 1 : scale[val];\n break;\n default:\n scaled = val;\n break;\n }\n return scale.scale(scaled);\n}","import { __assign, __extends, __read, __rest, __values } from \"tslib\";\nimport { contains, deepMix, each, get, isArray, isFunction, isNil, isString, keys, upperFirst, find, includes } from '@antv/util';\nimport { Annotation as AnnotationComponent } from '../../dependents';\nimport { DEFAULT_ANIMATE_CFG } from '../../animate/';\nimport { COMPONENT_TYPE, DIRECTION, GEOMETRY_LIFE_CIRCLE, LAYER, VIEW_LIFE_CIRCLE } from '../../constant';\nimport { getAngleByPoint, getDistanceToCenter } from '../../util/coordinate';\nimport { omit } from '../../util/helper';\nimport { getNormalizedValue } from '../../util/annotation';\nimport { Controller } from './base';\n/** 需要在图形绘制完成后才渲染的辅助组件类型列表 */\nvar ANNOTATIONS_AFTER_RENDER = ['regionFilter', 'shape'];\n/**\n * Annotation controller, 主要作用:\n * 1. 创建 Annotation: line、text、arc ...\n * 2. 生命周期: init、layout、render、clear、destroy\n */\nvar Annotation = /** @class */function (_super) {\n __extends(Annotation, _super);\n function Annotation(view) {\n var _this = _super.call(this, view) || this;\n /* 组件更新的 cache,组件配置 object : 组件 */\n _this.cache = new Map();\n _this.foregroundContainer = _this.view.getLayer(LAYER.FORE).addGroup();\n _this.backgroundContainer = _this.view.getLayer(LAYER.BG).addGroup();\n _this.option = [];\n return _this;\n }\n Object.defineProperty(Annotation.prototype, \"name\", {\n get: function get() {\n return 'annotation';\n },\n enumerable: false,\n configurable: true\n });\n Annotation.prototype.init = function () {};\n /**\n * 因为 annotation 需要依赖坐标系信息,所以 render 阶段为空方法,实际的创建逻辑都在 layout 中\n */\n Annotation.prototype.layout = function () {\n this.update();\n };\n // 因为 Annotation 不参与布局,但是渲染的位置依赖于坐标系,所以可以将绘制阶段延迟到 layout() 进行\n Annotation.prototype.render = function () {};\n /**\n * 更新\n */\n Annotation.prototype.update = function () {\n var _this = this;\n // 1. 先处理需要在图形渲染之后的辅助组件 需要在 Geometry 完成之后,拿到图形信息\n this.onAfterRender(function () {\n var updated = new Map();\n // 先看是否有 regionFilter/shape 要更新\n each(_this.option, function (option) {\n if (includes(ANNOTATIONS_AFTER_RENDER, option.type)) {\n var co = _this.updateOrCreate(option);\n // 存储已经处理过的\n if (co) {\n updated.set(_this.getCacheKey(option), co);\n }\n }\n });\n // 处理完成之后,更新 cache\n // 处理完成之后,销毁删除的\n _this.cache = _this.syncCache(updated);\n });\n // 2. 处理非 regionFilter\n var updateCache = new Map();\n each(this.option, function (option) {\n if (!includes(ANNOTATIONS_AFTER_RENDER, option.type)) {\n var co = _this.updateOrCreate(option);\n // 存储已经处理过的\n if (co) {\n updateCache.set(_this.getCacheKey(option), co);\n }\n }\n });\n this.cache = this.syncCache(updateCache);\n };\n /**\n * 清空\n * @param includeOption 是否清空 option 配置项\n */\n Annotation.prototype.clear = function (includeOption) {\n if (includeOption === void 0) {\n includeOption = false;\n }\n _super.prototype.clear.call(this);\n this.clearComponents();\n this.foregroundContainer.clear();\n this.backgroundContainer.clear();\n // clear all option\n if (includeOption) {\n this.option = [];\n }\n };\n Annotation.prototype.destroy = function () {\n this.clear(true);\n this.foregroundContainer.remove(true);\n this.backgroundContainer.remove(true);\n };\n /**\n * 复写基类的方法\n */\n Annotation.prototype.getComponents = function () {\n var co = [];\n this.cache.forEach(function (value) {\n co.push(value);\n });\n return co;\n };\n /**\n * 清除当前的组件\n */\n Annotation.prototype.clearComponents = function () {\n this.getComponents().forEach(function (co) {\n co.component.destroy();\n });\n this.cache.clear();\n };\n /**\n * region filter 比较特殊的渲染时机\n * @param doWhat\n */\n Annotation.prototype.onAfterRender = function (doWhat) {\n var done = false;\n if (this.view.getOptions().animate) {\n this.view.geometries.forEach(function (g) {\n // 如果 geometry 开启,则监听\n if (g.animateOption) {\n g.once(GEOMETRY_LIFE_CIRCLE.AFTER_DRAW_ANIMATE, function () {\n doWhat();\n });\n done = true;\n }\n });\n }\n if (!done) {\n this.view.getRootView().once(VIEW_LIFE_CIRCLE.AFTER_RENDER, function () {\n doWhat();\n });\n }\n };\n Annotation.prototype.createAnnotation = function (option) {\n var type = option.type;\n var Ctor = AnnotationComponent[upperFirst(type)];\n if (Ctor) {\n var theme = this.getAnnotationTheme(type);\n var cfg = this.getAnnotationCfg(type, option, theme);\n // 不创建\n if (!cfg) {\n return null;\n }\n var annotation = new Ctor(cfg);\n return {\n component: annotation,\n layer: this.isTop(cfg) ? LAYER.FORE : LAYER.BG,\n direction: DIRECTION.NONE,\n type: COMPONENT_TYPE.ANNOTATION,\n extra: option\n };\n }\n };\n // APIs for creating annotation component\n Annotation.prototype.annotation = function (option) {\n this.option.push(option);\n };\n /**\n * 创建 Arc\n * @param option\n * @returns AnnotationController\n */\n Annotation.prototype.arc = function (option) {\n this.annotation(__assign({\n type: 'arc'\n }, option));\n return this;\n };\n /**\n * 创建 image\n * @param option\n * @returns AnnotationController\n */\n Annotation.prototype.image = function (option) {\n this.annotation(__assign({\n type: 'image'\n }, option));\n return this;\n };\n /**\n * 创建 Line\n * @param option\n * @returns AnnotationController\n */\n Annotation.prototype.line = function (option) {\n this.annotation(__assign({\n type: 'line'\n }, option));\n return this;\n };\n /**\n * 创建 Region\n * @param option\n * @returns AnnotationController\n */\n Annotation.prototype.region = function (option) {\n this.annotation(__assign({\n type: 'region'\n }, option));\n return this;\n };\n /**\n * 创建 Text\n * @param option\n * @returns AnnotationController\n */\n Annotation.prototype.text = function (option) {\n this.annotation(__assign({\n type: 'text'\n }, option));\n return this;\n };\n /**\n * 创建 DataMarker\n * @param option\n * @returns AnnotationController\n */\n Annotation.prototype.dataMarker = function (option) {\n this.annotation(__assign({\n type: 'dataMarker'\n }, option));\n return this;\n };\n /**\n * 创建 DataRegion\n * @param option\n * @returns AnnotationController\n */\n Annotation.prototype.dataRegion = function (option) {\n this.annotation(__assign({\n type: 'dataRegion'\n }, option));\n };\n /**\n * 创建 RegionFilter\n * @param option\n * @returns AnnotationController\n */\n Annotation.prototype.regionFilter = function (option) {\n this.annotation(__assign({\n type: 'regionFilter'\n }, option));\n };\n /**\n * 创建 ShapeAnnotation\n * @param option\n */\n Annotation.prototype.shape = function (option) {\n this.annotation(__assign({\n type: 'shape'\n }, option));\n };\n /**\n * 创建 HtmlAnnotation\n * @param option\n */\n Annotation.prototype.html = function (option) {\n this.annotation(__assign({\n type: 'html'\n }, option));\n };\n // end API\n /**\n * parse the point position to [x, y]\n * @param p Position\n * @returns { x, y }\n */\n Annotation.prototype.parsePosition = function (p) {\n var e_1, _a;\n var xScale = this.view.getXScale();\n // 转成 object\n var yScales = this.view.getScalesByDim('y');\n var position = isFunction(p) ? p.call(null, xScale, yScales) : p;\n var x = 0;\n var y = 0;\n // 入参是 [24, 24] 这类时\n if (isArray(position)) {\n var _b = __read(position, 2),\n xPos = _b[0],\n yPos = _b[1];\n // 如果数据格式是 ['50%', '50%'] 的格式\n // fix: 原始数据中可能会包含 'xxx5%xxx' 这样的数据,需要判断下 https://github.com/antvis/f2/issues/590\n // @ts-ignore\n if (isString(xPos) && xPos.indexOf('%') !== -1 && !isNaN(xPos.slice(0, -1))) {\n return this.parsePercentPosition(position);\n }\n x = getNormalizedValue(xPos, xScale);\n y = getNormalizedValue(yPos, Object.values(yScales)[0]);\n } else if (!isNil(position)) {\n try {\n // 入参是 object 结构,数据点\n for (var _c = __values(keys(position)), _d = _c.next(); !_d.done; _d = _c.next()) {\n var key = _d.value;\n var value = position[key];\n if (key === xScale.field) {\n x = getNormalizedValue(value, xScale);\n }\n if (yScales[key]) {\n y = getNormalizedValue(value, yScales[key]);\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n }\n if (isNaN(x) || isNaN(y)) {\n return null;\n }\n return this.view.getCoordinate().convert({\n x: x,\n y: y\n });\n };\n /**\n * parse all the points between start and end\n * @param start\n * @param end\n * @return Point[]\n */\n Annotation.prototype.getRegionPoints = function (start, end) {\n var _this = this;\n var xScale = this.view.getXScale();\n var yScales = this.view.getScalesByDim('y');\n var yScale = Object.values(yScales)[0];\n var xField = xScale.field;\n var viewData = this.view.getData();\n var startXValue = isArray(start) ? start[0] : start[xField];\n var endXValue = isArray(end) ? end[0] : end[xField];\n var arr = [];\n var startIndex;\n each(viewData, function (item, idx) {\n if (item[xField] === startXValue) {\n startIndex = idx;\n }\n if (idx >= startIndex) {\n var point = _this.parsePosition([item[xField], item[yScale.field]]);\n if (point) {\n arr.push(point);\n }\n }\n if (item[xField] === endXValue) {\n return false;\n }\n });\n return arr;\n };\n /**\n * parse percent position\n * @param position\n */\n Annotation.prototype.parsePercentPosition = function (position) {\n var xPercent = parseFloat(position[0]) / 100;\n var yPercent = parseFloat(position[1]) / 100;\n var coordinate = this.view.getCoordinate();\n var start = coordinate.start,\n end = coordinate.end;\n var topLeft = {\n x: Math.min(start.x, end.x),\n y: Math.min(start.y, end.y)\n };\n var x = coordinate.getWidth() * xPercent + topLeft.x;\n var y = coordinate.getHeight() * yPercent + topLeft.y;\n return {\n x: x,\n y: y\n };\n };\n /**\n * get coordinate bbox\n */\n Annotation.prototype.getCoordinateBBox = function () {\n var coordinate = this.view.getCoordinate();\n var start = coordinate.start,\n end = coordinate.end;\n var width = coordinate.getWidth();\n var height = coordinate.getHeight();\n var topLeft = {\n x: Math.min(start.x, end.x),\n y: Math.min(start.y, end.y)\n };\n return {\n x: topLeft.x,\n y: topLeft.y,\n minX: topLeft.x,\n minY: topLeft.y,\n maxX: topLeft.x + width,\n maxY: topLeft.y + height,\n width: width,\n height: height\n };\n };\n /**\n * get annotation component config by different type\n * @param type\n * @param option 用户的配置\n * @param theme\n */\n Annotation.prototype.getAnnotationCfg = function (type, option, theme) {\n var _this = this;\n var coordinate = this.view.getCoordinate();\n var canvas = this.view.getCanvas();\n var o = {};\n if (isNil(option)) {\n return null;\n }\n var start = option.start,\n end = option.end,\n position = option.position;\n var sp = this.parsePosition(start);\n var ep = this.parsePosition(end);\n var textPoint = this.parsePosition(position);\n if (['arc', 'image', 'line', 'region', 'regionFilter'].includes(type) && (!sp || !ep)) {\n return null;\n } else if (['text', 'dataMarker', 'html'].includes(type) && !textPoint) {\n return null;\n }\n if (type === 'arc') {\n var _a = option,\n start_1 = _a.start,\n end_1 = _a.end,\n rest = __rest(_a, [\"start\", \"end\"]);\n var startAngle = getAngleByPoint(coordinate, sp);\n var endAngle = getAngleByPoint(coordinate, ep);\n if (startAngle > endAngle) {\n endAngle = Math.PI * 2 + endAngle;\n }\n o = __assign(__assign({}, rest), {\n center: coordinate.getCenter(),\n radius: getDistanceToCenter(coordinate, sp),\n startAngle: startAngle,\n endAngle: endAngle\n });\n } else if (type === 'image') {\n var _b = option,\n start_2 = _b.start,\n end_2 = _b.end,\n rest = __rest(_b, [\"start\", \"end\"]);\n o = __assign(__assign({}, rest), {\n start: sp,\n end: ep,\n src: option.src\n });\n } else if (type === 'line') {\n var _c = option,\n start_3 = _c.start,\n end_3 = _c.end,\n rest = __rest(_c, [\"start\", \"end\"]);\n o = __assign(__assign({}, rest), {\n start: sp,\n end: ep,\n text: get(option, 'text', null)\n });\n } else if (type === 'region') {\n var _d = option,\n start_4 = _d.start,\n end_4 = _d.end,\n rest = __rest(_d, [\"start\", \"end\"]);\n o = __assign(__assign({}, rest), {\n start: sp,\n end: ep\n });\n } else if (type === 'text') {\n var filteredData = this.view.getData();\n var _e = option,\n position_1 = _e.position,\n content = _e.content,\n rest = __rest(_e, [\"position\", \"content\"]);\n var textContent = content;\n if (isFunction(content)) {\n textContent = content(filteredData);\n }\n o = __assign(__assign(__assign({}, textPoint), rest), {\n content: textContent\n });\n } else if (type === 'dataMarker') {\n var _f = option,\n position_2 = _f.position,\n point = _f.point,\n line = _f.line,\n text = _f.text,\n autoAdjust = _f.autoAdjust,\n direction = _f.direction,\n rest = __rest(_f, [\"position\", \"point\", \"line\", \"text\", \"autoAdjust\", \"direction\"]);\n o = __assign(__assign(__assign({}, rest), textPoint), {\n coordinateBBox: this.getCoordinateBBox(),\n point: point,\n line: line,\n text: text,\n autoAdjust: autoAdjust,\n direction: direction\n });\n } else if (type === 'dataRegion') {\n var _g = option,\n start_5 = _g.start,\n end_5 = _g.end,\n region = _g.region,\n text = _g.text,\n lineLength = _g.lineLength,\n rest = __rest(_g, [\"start\", \"end\", \"region\", \"text\", \"lineLength\"]);\n o = __assign(__assign({}, rest), {\n points: this.getRegionPoints(start_5, end_5),\n region: region,\n text: text,\n lineLength: lineLength\n });\n } else if (type === 'regionFilter') {\n var _h = option,\n start_6 = _h.start,\n end_6 = _h.end,\n apply_1 = _h.apply,\n color = _h.color,\n rest = __rest(_h, [\"start\", \"end\", \"apply\", \"color\"]);\n var geometries = this.view.geometries;\n var shapes_1 = [];\n var addShapes_1 = function addShapes_1(item) {\n if (!item) {\n return;\n }\n if (item.isGroup()) {\n item.getChildren().forEach(function (child) {\n return addShapes_1(child);\n });\n } else {\n shapes_1.push(item);\n }\n };\n each(geometries, function (geom) {\n if (apply_1) {\n if (contains(apply_1, geom.type)) {\n each(geom.elements, function (elem) {\n addShapes_1(elem.shape);\n });\n }\n } else {\n each(geom.elements, function (elem) {\n addShapes_1(elem.shape);\n });\n }\n });\n o = __assign(__assign({}, rest), {\n color: color,\n shapes: shapes_1,\n start: sp,\n end: ep\n });\n } else if (type === 'shape') {\n var _j = option,\n render_1 = _j.render,\n restOptions = __rest(_j, [\"render\"]);\n var wrappedRender = function wrappedRender(container) {\n if (isFunction(option.render)) {\n return render_1(container, _this.view, {\n parsePosition: _this.parsePosition.bind(_this)\n });\n }\n };\n o = __assign(__assign({}, restOptions), {\n render: wrappedRender\n });\n } else if (type === 'html') {\n var _k = option,\n html_1 = _k.html,\n position_3 = _k.position,\n restOptions = __rest(_k, [\"html\", \"position\"]);\n var wrappedHtml = function wrappedHtml(container) {\n if (isFunction(html_1)) {\n return html_1(container, _this.view);\n }\n return html_1;\n };\n o = __assign(__assign(__assign({}, restOptions), textPoint), {\n // html 组件需要指定 parent\n parent: canvas.get('el').parentNode,\n html: wrappedHtml\n });\n }\n // 合并主题,用户配置优先级高于默认主题\n var cfg = deepMix({}, theme, __assign(__assign({}, o), {\n top: option.top,\n style: option.style,\n offsetX: option.offsetX,\n offsetY: option.offsetY\n }));\n if (type !== 'html') {\n // html 类型不使用 G container\n cfg.container = this.getComponentContainer(cfg);\n }\n cfg.animate = this.view.getOptions().animate && cfg.animate && get(option, 'animate', cfg.animate); // 如果 view 关闭动画,则不执行\n cfg.animateOption = deepMix({}, DEFAULT_ANIMATE_CFG, cfg.animateOption, option.animateOption);\n return cfg;\n };\n /**\n * is annotation render on top\n * @param option\n * @return whethe on top\n */\n Annotation.prototype.isTop = function (option) {\n return get(option, 'top', true);\n };\n /**\n * get the container by option.top\n * default is on top\n * @param option\n * @returns the container\n */\n Annotation.prototype.getComponentContainer = function (option) {\n return this.isTop(option) ? this.foregroundContainer : this.backgroundContainer;\n };\n Annotation.prototype.getAnnotationTheme = function (type) {\n return get(this.view.getTheme(), ['components', 'annotation', type], {});\n };\n /**\n * 创建或者更新 annotation\n * @param option\n */\n Annotation.prototype.updateOrCreate = function (option) {\n // 拿到缓存的内容\n var co = this.cache.get(this.getCacheKey(option));\n // 存在则更新,不存在在创建\n if (co) {\n var type = option.type;\n var theme = this.getAnnotationTheme(type);\n var cfg = this.getAnnotationCfg(type, option, theme);\n // 忽略掉一些配置\n if (cfg) {\n omit(cfg, ['container']);\n }\n co.component.update(__assign(__assign({}, cfg || {}), {\n visible: !!cfg\n }));\n // 对于 regionFilter/shape,因为生命周期的原因,需要额外 render\n if (includes(ANNOTATIONS_AFTER_RENDER, option.type)) {\n co.component.render();\n }\n } else {\n // 不存在,创建\n co = this.createAnnotation(option);\n if (co) {\n co.component.init();\n // Note:regionFilter/shape 特殊处理,regionFilter/shape 需要取到 Geometry 中的 Shape,需要在 view render 之后处理\n // 其他组件使用外层的统一 render 逻辑\n if (includes(ANNOTATIONS_AFTER_RENDER, option.type)) {\n co.component.render();\n }\n }\n }\n return co;\n };\n /**\n * 更新缓存,以及销毁组件\n * @param updated 更新或者创建的组件\n */\n Annotation.prototype.syncCache = function (updated) {\n var _this = this;\n var newCache = new Map(this.cache); // clone 一份\n // 将 update 更新到 cache\n updated.forEach(function (co, key) {\n newCache.set(key, co);\n });\n // 另外和 options 进行对比,删除\n newCache.forEach(function (co, key) {\n // option 中已经找不到,那么就是删除的\n if (!find(_this.option, function (option) {\n return key === _this.getCacheKey(option);\n })) {\n co.component.destroy();\n newCache.delete(key);\n }\n });\n return newCache;\n };\n /**\n * 获得缓存组件的 key\n * @param option\n */\n Annotation.prototype.getCacheKey = function (option) {\n // 如果存在 id,则使用 id string,否则直接使用 option 引用作为 key\n return option;\n // 后续扩展 id 用\n // const id = get(option, 'id');\n // return id ? id : option;\n };\n\n return Annotation;\n}(Controller);\nexport default Annotation;","import { deepMix, get, map } from '@antv/util';\n/**\n * @ignore\n * get the grid theme by type, will mix the common cfg of axis\n * @param theme\n * @param direction\n * @returns theme object\n */\nexport function getGridThemeCfg(theme, direction) {\n var axisTheme = deepMix({}, get(theme, ['components', 'axis', 'common']), get(theme, ['components', 'axis', direction]));\n return get(axisTheme, ['grid'], {});\n}\n/**\n * @ignore\n * get axis grid items\n * @param coordinate\n * @param scale\n * @param dim\n * @return items\n */\nexport function getLineGridItems(coordinate, scale, dim, alignTick) {\n var items = [];\n var ticks = scale.getTicks();\n if (coordinate.isPolar) {\n // 补全 ticks\n ticks.push({\n value: 1,\n text: '',\n tickValue: ''\n });\n }\n ticks.reduce(function (preTick, currentTick, currentIndex) {\n var currentValue = currentTick.value;\n if (alignTick) {\n items.push({\n points: [coordinate.convert(dim === 'y' ? {\n x: 0,\n y: currentValue\n } : {\n x: currentValue,\n y: 0\n }), coordinate.convert(dim === 'y' ? {\n x: 1,\n y: currentValue\n } : {\n x: currentValue,\n y: 1\n })]\n });\n } else {\n if (currentIndex) {\n var preValue = preTick.value;\n var middleValue = (preValue + currentValue) / 2;\n items.push({\n points: [coordinate.convert(dim === 'y' ? {\n x: 0,\n y: middleValue\n } : {\n x: middleValue,\n y: 0\n }), coordinate.convert(dim === 'y' ? {\n x: 1,\n y: middleValue\n } : {\n x: middleValue,\n y: 1\n })]\n });\n }\n }\n return currentTick;\n }, ticks[0]);\n return items;\n}\n/**\n * @ignore\n * get\n * @param coordinate\n * @param xScale\n * @param yScale\n * @param dim\n * @returns items\n */\nexport function getCircleGridItems(coordinate, xScale, yScale, alignTick, dim) {\n var count = xScale.values.length;\n var items = [];\n var ticks = yScale.getTicks();\n ticks.reduce(function (preTick, currentTick) {\n var preValue = preTick ? preTick.value : currentTick.value; // 只有一项数据时取当前值\n var currentValue = currentTick.value;\n var middleValue = (preValue + currentValue) / 2;\n if (dim === 'x') {\n // 如果是 x 轴作为半径轴,那么只需要取圆弧收尾两个即可\n items.push({\n points: [coordinate.convert({\n x: alignTick ? currentValue : middleValue,\n y: 0\n }), coordinate.convert({\n x: alignTick ? currentValue : middleValue,\n y: 1\n })]\n });\n } else {\n items.push({\n points: map(Array(count + 1), function (__, idx) {\n return coordinate.convert({\n x: idx / count,\n y: alignTick ? currentValue : middleValue\n });\n })\n });\n }\n return currentTick;\n }, ticks[0]);\n return items;\n}\n/**\n * @ignore\n * show grid or not\n * @param axisTheme\n * @param axisOption\n */\nexport function showGrid(axisTheme, axisOption) {\n var userGrid = get(axisOption, 'grid');\n if (userGrid === null) {\n return false;\n }\n var themeGrid = get(axisTheme, 'grid');\n return !(userGrid === undefined && themeGrid === null);\n}","import { __assign, __extends } from \"tslib\";\nimport { deepMix, each, get, isUndefined } from '@antv/util';\nimport { DIRECTION, COMPONENT_TYPE, LAYER } from '../../constant';\nimport { CircleAxis, CircleGrid, LineAxis, LineGrid } from '../../dependents';\nimport { DEFAULT_ANIMATE_CFG } from '../../animate/';\nimport { getAxisDirection, getAxisFactorByRegion, getAxisRegion, getAxisThemeCfg, getAxisTitleOptions, getAxisTitleText, getCircleAxisCenterRadius, isVertical } from '../../util/axis';\nimport { getAxisOption } from '../../util/axis';\nimport { getCircleGridItems, getGridThemeCfg, getLineGridItems, showGrid } from '../../util/grid';\nimport { omit } from '../../util/helper';\nimport { Controller } from './base';\n// update 组件的时候,忽略的数据更新\nvar OMIT_CFG = ['container'];\n// 坐标轴默认动画配置\nvar AXIS_DEFAULT_ANIMATE_CFG = __assign(__assign({}, DEFAULT_ANIMATE_CFG), {\n appear: null\n});\n/**\n * @ignore\n * G2 Axis controller, will:\n * - create component\n * - axis\n * - grid\n * - life circle\n */\nvar Axis = /** @class */function (_super) {\n __extends(Axis, _super);\n function Axis(view) {\n var _this = _super.call(this, view) || this;\n /** 使用 object 存储组件 */\n _this.cache = new Map();\n // 先创建 gridContainer,将 grid 放到 axis 底层\n _this.gridContainer = _this.view.getLayer(LAYER.BG).addGroup();\n _this.gridForeContainer = _this.view.getLayer(LAYER.FORE).addGroup();\n _this.axisContainer = _this.view.getLayer(LAYER.BG).addGroup();\n _this.axisForeContainer = _this.view.getLayer(LAYER.FORE).addGroup();\n return _this;\n }\n Object.defineProperty(Axis.prototype, \"name\", {\n get: function get() {\n return 'axis';\n },\n enumerable: false,\n configurable: true\n });\n Axis.prototype.init = function () {};\n Axis.prototype.render = function () {\n this.update();\n };\n /**\n * 更新组件布局,位置大小\n */\n Axis.prototype.layout = function () {\n var _this = this;\n var coordinate = this.view.getCoordinate();\n each(this.getComponents(), function (co) {\n var component = co.component,\n direction = co.direction,\n type = co.type,\n extra = co.extra;\n var dim = extra.dim,\n scale = extra.scale,\n alignTick = extra.alignTick;\n var updated;\n if (type === COMPONENT_TYPE.AXIS) {\n if (coordinate.isPolar) {\n if (dim === 'x') {\n updated = coordinate.isTransposed ? getAxisRegion(coordinate, direction) : getCircleAxisCenterRadius(coordinate);\n } else if (dim === 'y') {\n updated = coordinate.isTransposed ? getCircleAxisCenterRadius(coordinate) : getAxisRegion(coordinate, direction);\n }\n } else {\n updated = getAxisRegion(coordinate, direction);\n }\n } else if (type === COMPONENT_TYPE.GRID) {\n if (coordinate.isPolar) {\n var items = void 0;\n if (coordinate.isTransposed) {\n items = dim === 'x' ? getCircleGridItems(coordinate, _this.view.getYScales()[0], scale, alignTick, dim) : getLineGridItems(coordinate, scale, dim, alignTick);\n } else {\n items = dim === 'x' ? getLineGridItems(coordinate, scale, dim, alignTick) : getCircleGridItems(coordinate, _this.view.getXScale(), scale, alignTick, dim);\n }\n updated = {\n items: items,\n // coordinate 更新之后,center 也变化了\n center: _this.view.getCoordinate().getCenter()\n };\n } else {\n updated = {\n items: getLineGridItems(coordinate, scale, dim, alignTick)\n };\n }\n }\n component.update(updated);\n });\n };\n /**\n * 更新 axis 组件\n */\n Axis.prototype.update = function () {\n this.option = this.view.getOptions().axes;\n var updatedCache = new Map();\n this.updateXAxes(updatedCache);\n this.updateYAxes(updatedCache);\n // 处理完成之后,销毁删除的\n // 不在处理中的\n var newCache = new Map();\n this.cache.forEach(function (co, key) {\n if (updatedCache.has(key)) {\n newCache.set(key, co);\n } else {\n // 不存在,则是所有需要被销毁的组件\n co.component.destroy();\n }\n });\n // 更新缓存\n this.cache = newCache;\n };\n Axis.prototype.clear = function () {\n _super.prototype.clear.call(this);\n this.cache.clear();\n this.gridContainer.clear();\n this.gridForeContainer.clear();\n this.axisContainer.clear();\n this.axisForeContainer.clear();\n };\n Axis.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.gridContainer.remove(true);\n this.gridForeContainer.remove(true);\n this.axisContainer.remove(true);\n this.axisForeContainer.remove(true);\n };\n /**\n * @override\n */\n Axis.prototype.getComponents = function () {\n var co = [];\n this.cache.forEach(function (value) {\n co.push(value);\n });\n return co;\n };\n /**\n * 更新 x axis\n * @param updatedCache\n */\n Axis.prototype.updateXAxes = function (updatedCache) {\n // x axis\n var scale = this.view.getXScale();\n if (!scale || scale.isIdentity) {\n return;\n }\n var xAxisOption = getAxisOption(this.option, scale.field);\n if (xAxisOption === false) {\n return;\n }\n var direction = getAxisDirection(xAxisOption, DIRECTION.BOTTOM);\n var layer = LAYER.BG;\n var dim = 'x';\n var coordinate = this.view.getCoordinate();\n var axisId = this.getId('axis', scale.field);\n var gridId = this.getId('grid', scale.field);\n if (coordinate.isRect) {\n // 1. do axis update\n var axis = this.cache.get(axisId);\n // 存在则更新\n if (axis) {\n var cfg = this.getLineAxisCfg(scale, xAxisOption, direction);\n omit(cfg, OMIT_CFG);\n axis.component.update(cfg);\n updatedCache.set(axisId, axis);\n } else {\n // 不存在,则创建\n axis = this.createLineAxis(scale, xAxisOption, layer, direction, dim);\n this.cache.set(axisId, axis);\n updatedCache.set(axisId, axis);\n }\n // 2. do grid update\n var grid = this.cache.get(gridId);\n // 存在则更新\n if (grid) {\n var cfg = this.getLineGridCfg(scale, xAxisOption, direction, dim);\n omit(cfg, OMIT_CFG);\n grid.component.update(cfg);\n updatedCache.set(gridId, grid);\n } else {\n // 不存在则创建\n grid = this.createLineGrid(scale, xAxisOption, layer, direction, dim);\n if (grid) {\n this.cache.set(gridId, grid);\n updatedCache.set(gridId, grid);\n }\n }\n } else if (coordinate.isPolar) {\n // 1. do axis update\n var axis = this.cache.get(axisId);\n // 存在则更新\n if (axis) {\n var cfg = coordinate.isTransposed ? this.getLineAxisCfg(scale, xAxisOption, DIRECTION.RADIUS) : this.getCircleAxisCfg(scale, xAxisOption, direction);\n omit(cfg, OMIT_CFG);\n axis.component.update(cfg);\n updatedCache.set(axisId, axis);\n } else {\n // 不存在,则创建\n if (coordinate.isTransposed) {\n if (isUndefined(xAxisOption)) {\n // 默认不渲染转置极坐标下的坐标轴\n return;\n } else {\n // 如果用户打开了隐藏的坐标轴 chart.axis(true)/chart.axis('x', true)\n // 那么对于转置了的极坐标,半径轴显示的是 x 轴对应的数据\n axis = this.createLineAxis(scale, xAxisOption, layer, DIRECTION.RADIUS, dim);\n }\n } else {\n axis = this.createCircleAxis(scale, xAxisOption, layer, direction, dim);\n }\n this.cache.set(axisId, axis);\n updatedCache.set(axisId, axis);\n }\n // 2. do grid update\n var grid = this.cache.get(gridId);\n // 存在则更新\n if (grid) {\n var cfg = coordinate.isTransposed ? this.getCircleGridCfg(scale, xAxisOption, DIRECTION.RADIUS, dim) : this.getLineGridCfg(scale, xAxisOption, DIRECTION.CIRCLE, dim);\n omit(cfg, OMIT_CFG);\n grid.component.update(cfg);\n updatedCache.set(gridId, grid);\n } else {\n // 不存在则创建\n if (coordinate.isTransposed) {\n if (isUndefined(xAxisOption)) {\n return;\n } else {\n grid = this.createCircleGrid(scale, xAxisOption, layer, DIRECTION.RADIUS, dim);\n }\n } else {\n // grid,极坐标下的 x 轴网格线沿着半径方向绘制\n grid = this.createLineGrid(scale, xAxisOption, layer, DIRECTION.CIRCLE, dim);\n }\n if (grid) {\n this.cache.set(gridId, grid);\n updatedCache.set(gridId, grid);\n }\n }\n } else {\n // helix and other, do not draw axis\n }\n };\n Axis.prototype.updateYAxes = function (updatedCache) {\n var _this = this;\n // y axes\n var yScales = this.view.getYScales();\n each(yScales, function (scale, idx) {\n // @ts-ignore\n if (!scale || scale.isIdentity) {\n return;\n }\n var field = scale.field;\n var yAxisOption = getAxisOption(_this.option, field);\n if (yAxisOption !== false) {\n var layer = LAYER.BG;\n var dim = 'y';\n var axisId = _this.getId('axis', field);\n var gridId = _this.getId('grid', field);\n var coordinate = _this.view.getCoordinate();\n if (coordinate.isRect) {\n var direction = getAxisDirection(yAxisOption, idx === 0 ? DIRECTION.LEFT : DIRECTION.RIGHT);\n // 1. do axis update\n var axis = _this.cache.get(axisId);\n // 存在则更新\n if (axis) {\n var cfg = _this.getLineAxisCfg(scale, yAxisOption, direction);\n omit(cfg, OMIT_CFG);\n axis.component.update(cfg);\n updatedCache.set(axisId, axis);\n } else {\n // 不存在,则创建\n axis = _this.createLineAxis(scale, yAxisOption, layer, direction, dim);\n _this.cache.set(axisId, axis);\n updatedCache.set(axisId, axis);\n }\n // 2. do grid update\n var grid = _this.cache.get(gridId);\n // 存在则更新\n if (grid) {\n var cfg = _this.getLineGridCfg(scale, yAxisOption, direction, dim);\n omit(cfg, OMIT_CFG);\n grid.component.update(cfg);\n updatedCache.set(gridId, grid);\n } else {\n // 不存在则创建\n grid = _this.createLineGrid(scale, yAxisOption, layer, direction, dim);\n if (grid) {\n _this.cache.set(gridId, grid);\n updatedCache.set(gridId, grid);\n }\n }\n } else if (coordinate.isPolar) {\n // 1. do axis update\n var axis = _this.cache.get(axisId);\n // 存在则更新\n if (axis) {\n var cfg = coordinate.isTransposed ? _this.getCircleAxisCfg(scale, yAxisOption, DIRECTION.CIRCLE) : _this.getLineAxisCfg(scale, yAxisOption, DIRECTION.RADIUS);\n // @ts-ignore\n omit(cfg, OMIT_CFG);\n axis.component.update(cfg);\n updatedCache.set(axisId, axis);\n } else {\n // 不存在,则创建\n if (coordinate.isTransposed) {\n if (isUndefined(yAxisOption)) {\n return;\n } else {\n axis = _this.createCircleAxis(scale, yAxisOption, layer, DIRECTION.CIRCLE, dim);\n }\n } else {\n axis = _this.createLineAxis(scale, yAxisOption, layer, DIRECTION.RADIUS, dim);\n }\n _this.cache.set(axisId, axis);\n updatedCache.set(axisId, axis);\n }\n // 2. do grid update\n var grid = _this.cache.get(gridId);\n // 存在则更新\n if (grid) {\n var cfg = coordinate.isTransposed ? _this.getLineGridCfg(scale, yAxisOption, DIRECTION.CIRCLE, dim) : _this.getCircleGridCfg(scale, yAxisOption, DIRECTION.RADIUS, dim);\n omit(cfg, OMIT_CFG);\n grid.component.update(cfg);\n updatedCache.set(gridId, grid);\n } else {\n // 不存在则创建\n if (coordinate.isTransposed) {\n if (isUndefined(yAxisOption)) {\n return;\n } else {\n grid = _this.createLineGrid(scale, yAxisOption, layer, DIRECTION.CIRCLE, dim);\n }\n } else {\n grid = _this.createCircleGrid(scale, yAxisOption, layer, DIRECTION.RADIUS, dim);\n }\n if (grid) {\n _this.cache.set(gridId, grid);\n updatedCache.set(gridId, grid);\n }\n }\n } else {\n // helix and other, do not draw axis\n }\n }\n });\n };\n /**\n * 创建 line axis\n * @param scale\n * @param option\n * @param layer\n * @param direction\n * @param dim\n */\n Axis.prototype.createLineAxis = function (scale, option, layer, direction, dim) {\n // axis\n var axis = {\n component: new LineAxis(this.getLineAxisCfg(scale, option, direction)),\n layer: layer,\n direction: direction === DIRECTION.RADIUS ? DIRECTION.NONE : direction,\n type: COMPONENT_TYPE.AXIS,\n extra: {\n dim: dim,\n scale: scale\n }\n };\n axis.component.set('field', scale.field);\n axis.component.init();\n return axis;\n };\n Axis.prototype.createLineGrid = function (scale, option, layer, direction, dim) {\n var cfg = this.getLineGridCfg(scale, option, direction, dim);\n if (cfg) {\n var grid = {\n component: new LineGrid(cfg),\n layer: layer,\n direction: DIRECTION.NONE,\n type: COMPONENT_TYPE.GRID,\n extra: {\n dim: dim,\n scale: scale,\n alignTick: get(cfg, 'alignTick', true)\n }\n };\n grid.component.init();\n return grid;\n }\n };\n Axis.prototype.createCircleAxis = function (scale, option, layer, direction, dim) {\n var axis = {\n component: new CircleAxis(this.getCircleAxisCfg(scale, option, direction)),\n layer: layer,\n direction: direction,\n type: COMPONENT_TYPE.AXIS,\n extra: {\n dim: dim,\n scale: scale\n }\n };\n axis.component.set('field', scale.field);\n axis.component.init();\n return axis;\n };\n Axis.prototype.createCircleGrid = function (scale, option, layer, direction, dim) {\n var cfg = this.getCircleGridCfg(scale, option, direction, dim);\n if (cfg) {\n var grid = {\n component: new CircleGrid(cfg),\n layer: layer,\n direction: DIRECTION.NONE,\n type: COMPONENT_TYPE.GRID,\n extra: {\n dim: dim,\n scale: scale,\n alignTick: get(cfg, 'alignTick', true)\n }\n };\n grid.component.init();\n return grid;\n }\n };\n /**\n * generate line axis cfg\n * @param scale\n * @param axisOption\n * @param direction\n * @return line axis cfg\n */\n Axis.prototype.getLineAxisCfg = function (scale, axisOption, direction) {\n var container = get(axisOption, ['top']) ? this.axisForeContainer : this.axisContainer;\n var coordinate = this.view.getCoordinate();\n var region = getAxisRegion(coordinate, direction);\n var titleText = getAxisTitleText(scale, axisOption);\n var axisThemeCfg = getAxisThemeCfg(this.view.getTheme(), direction);\n // the cfg order should be ensure\n var optionWithTitle = get(axisOption, ['title']) ? deepMix({\n title: {\n style: {\n text: titleText\n }\n }\n }, {\n title: getAxisTitleOptions(this.view.getTheme(), direction, axisOption.title)\n }, axisOption) : axisOption;\n var cfg = deepMix(__assign(__assign({\n container: container\n }, region), {\n ticks: scale.getTicks().map(function (tick) {\n return {\n id: \"\".concat(tick.tickValue),\n name: tick.text,\n value: tick.value\n };\n }),\n verticalFactor: coordinate.isPolar ? getAxisFactorByRegion(region, coordinate.getCenter()) * -1 : getAxisFactorByRegion(region, coordinate.getCenter()),\n theme: axisThemeCfg\n }), axisThemeCfg, optionWithTitle);\n var _a = this.getAnimateCfg(cfg),\n animate = _a.animate,\n animateOption = _a.animateOption;\n cfg.animateOption = animateOption;\n cfg.animate = animate;\n // 计算 verticalLimitLength\n var isAxisVertical = isVertical(region);\n // TODO: 1 / 3 等默认值需要有一个全局的配置的地方\n var verticalLimitLength = get(cfg, 'verticalLimitLength', isAxisVertical ? 1 / 3 : 1 / 2);\n if (verticalLimitLength <= 1) {\n // 配置的相对值,相对于画布\n var canvasWidth = this.view.getCanvas().get('width');\n var canvasHeight = this.view.getCanvas().get('height');\n cfg.verticalLimitLength = verticalLimitLength * (isAxisVertical ? canvasWidth : canvasHeight);\n }\n return cfg;\n };\n /**\n * generate line grid cfg\n * @param scale\n * @param axisOption\n * @param direction\n * @param dim\n * @return line grid cfg\n */\n Axis.prototype.getLineGridCfg = function (scale, axisOption, direction, dim) {\n if (!showGrid(getAxisThemeCfg(this.view.getTheme(), direction), axisOption)) {\n return undefined;\n }\n var gridThemeCfg = getGridThemeCfg(this.view.getTheme(), direction);\n // the cfg order should be ensure\n // grid 动画以 axis 为准\n var gridCfg = deepMix({\n container: get(axisOption, ['top']) ? this.gridForeContainer : this.gridContainer\n }, gridThemeCfg, get(axisOption, 'grid'), this.getAnimateCfg(axisOption));\n gridCfg.items = getLineGridItems(this.view.getCoordinate(), scale, dim, get(gridCfg, 'alignTick', true));\n return gridCfg;\n };\n /**\n * generate circle axis cfg\n * @param scale\n * @param axisOption\n * @param direction\n * @return circle axis cfg\n */\n Axis.prototype.getCircleAxisCfg = function (scale, axisOption, direction) {\n var container = get(axisOption, ['top']) ? this.axisForeContainer : this.axisContainer;\n var coordinate = this.view.getCoordinate();\n var ticks = scale.getTicks().map(function (tick) {\n return {\n id: \"\".concat(tick.tickValue),\n name: tick.text,\n value: tick.value\n };\n });\n if (!scale.isCategory && Math.abs(coordinate.endAngle - coordinate.startAngle) === Math.PI * 2) {\n // x 轴对应的值如果是非 cat 类型,在整圆的情况下坐标轴第一个和最后一个文本会重叠,默认只展示第一个文本\n if (ticks.length) ticks[ticks.length - 1].name = '';\n }\n var titleText = getAxisTitleText(scale, axisOption);\n var axisThemeCfg = getAxisThemeCfg(this.view.getTheme(), DIRECTION.CIRCLE);\n // the cfg order should be ensure\n var optionWithTitle = get(axisOption, ['title']) ? deepMix({\n title: {\n style: {\n text: titleText\n }\n }\n }, {\n title: getAxisTitleOptions(this.view.getTheme(), direction, axisOption.title)\n }, axisOption) : axisOption;\n var cfg = deepMix(__assign(__assign({\n container: container\n }, getCircleAxisCenterRadius(this.view.getCoordinate())), {\n ticks: ticks,\n verticalFactor: 1,\n theme: axisThemeCfg\n }), axisThemeCfg, optionWithTitle);\n var _a = this.getAnimateCfg(cfg),\n animate = _a.animate,\n animateOption = _a.animateOption;\n cfg.animate = animate;\n cfg.animateOption = animateOption;\n return cfg;\n };\n /**\n * generate circle grid cfg\n * @param scale\n * @param axisOption\n * @param direction\n * @return circle grid cfg\n */\n Axis.prototype.getCircleGridCfg = function (scale, axisOption, direction, dim) {\n if (!showGrid(getAxisThemeCfg(this.view.getTheme(), direction), axisOption)) {\n return undefined;\n }\n // the cfg order should be ensure\n // grid 动画以 axis 为准\n var gridThemeCfg = getGridThemeCfg(this.view.getTheme(), DIRECTION.RADIUS);\n var gridCfg = deepMix({\n container: get(axisOption, ['top']) ? this.gridForeContainer : this.gridContainer,\n center: this.view.getCoordinate().getCenter()\n }, gridThemeCfg, get(axisOption, 'grid'), this.getAnimateCfg(axisOption));\n var alignTick = get(gridCfg, 'alignTick', true);\n var verticalScale = dim === 'x' ? this.view.getYScales()[0] : this.view.getXScale();\n gridCfg.items = getCircleGridItems(this.view.getCoordinate(), verticalScale, scale, alignTick, dim);\n // the cfg order should be ensure\n // grid 动画以 axis 为准\n return gridCfg;\n };\n Axis.prototype.getId = function (name, key) {\n var coordinate = this.view.getCoordinate();\n // 坐标系类型也作为组件的 key\n return \"\".concat(name, \"-\").concat(key, \"-\").concat(coordinate.type);\n };\n Axis.prototype.getAnimateCfg = function (cfg) {\n return {\n animate: this.view.getOptions().animate && get(cfg, 'animate'),\n animateOption: cfg && cfg.animateOption ? deepMix({}, AXIS_DEFAULT_ANIMATE_CFG, cfg.animateOption) : AXIS_DEFAULT_ANIMATE_CFG\n };\n };\n return Axis;\n}(Controller);\nexport default Axis;","import { DIRECTION } from '../constant';\n/**\n * @ignore\n * 方位常量转实际的 bbox 位置大小\n * @param parentBBox\n * @param bbox\n * @param direction\n */\nexport function directionToPosition(parentBBox, bbox, direction) {\n if (direction === DIRECTION.TOP) {\n return [parentBBox.minX + parentBBox.width / 2 - bbox.width / 2, parentBBox.minY];\n }\n if (direction === DIRECTION.BOTTOM) {\n return [parentBBox.minX + parentBBox.width / 2 - bbox.width / 2, parentBBox.maxY - bbox.height];\n }\n if (direction === DIRECTION.LEFT) {\n return [parentBBox.minX, parentBBox.minY + parentBBox.height / 2 - bbox.height / 2];\n }\n if (direction === DIRECTION.RIGHT) {\n return [parentBBox.maxX - bbox.width, parentBBox.minY + parentBBox.height / 2 - bbox.height / 2];\n }\n if (direction === DIRECTION.TOP_LEFT || direction === DIRECTION.LEFT_TOP) {\n return [parentBBox.tl.x, parentBBox.tl.y];\n }\n if (direction === DIRECTION.TOP_RIGHT || direction === DIRECTION.RIGHT_TOP) {\n return [parentBBox.tr.x - bbox.width, parentBBox.tr.y];\n }\n if (direction === DIRECTION.BOTTOM_LEFT || direction === DIRECTION.LEFT_BOTTOM) {\n return [parentBBox.bl.x, parentBBox.bl.y - bbox.height];\n }\n if (direction === DIRECTION.BOTTOM_RIGHT || direction === DIRECTION.RIGHT_BOTTOM) {\n return [parentBBox.br.x - bbox.width, parentBBox.br.y - bbox.height];\n }\n return [0, 0];\n}\n/**\n * get direction after coordinate transpose\n * @param direction\n * @param coordinate\n * @returns direction after transpose or not\n */\nfunction getTransposedDirection(direction, coordinate) {\n if (coordinate.isTransposed) {\n switch (direction) {\n case DIRECTION.BOTTOM:\n return DIRECTION.LEFT;\n case DIRECTION.LEFT:\n return DIRECTION.BOTTOM;\n case DIRECTION.RIGHT:\n return DIRECTION.TOP;\n case DIRECTION.TOP:\n return DIRECTION.RIGHT;\n }\n }\n return direction;\n}\nfunction reflectX(direct) {\n if (direct === DIRECTION.LEFT) {\n return DIRECTION.RIGHT;\n }\n if (direct === DIRECTION.RIGHT) {\n return DIRECTION.LEFT;\n }\n return direct;\n}\nfunction reflectY(direct) {\n if (direct === DIRECTION.TOP) {\n return DIRECTION.BOTTOM;\n }\n if (direct === DIRECTION.BOTTOM) {\n return DIRECTION.TOP;\n }\n return direct;\n}\n/**\n * get direction after coordinate.scale\n * @param direction\n * @param coordinate\n */\nfunction getScaleDirection(direction, coordinate) {\n var x = coordinate.matrix[0];\n var y = coordinate.matrix[4];\n var d = direction;\n if (x < 0) {\n d = reflectX(d);\n }\n if (y < 0) {\n d = reflectY(d);\n }\n return d;\n}\n/**\n *\n * @param direction\n * @param coordinate\n */\nfunction getReflectDirection(direction, coordinate) {\n var d = direction;\n if (coordinate.isReflect('x')) {\n d = reflectX(d);\n }\n if (coordinate.isReflect('y')) {\n d = reflectY(d);\n }\n return d;\n}\n/**\n * @ignore\n * get direction after coordinate translate\n * @param direction\n * @param coordinate\n */\nexport function getTranslateDirection(direction, coordinate) {\n var d = direction;\n d = getTransposedDirection(d, coordinate);\n d = getScaleDirection(d, coordinate);\n d = getReflectDirection(d, coordinate);\n return d;\n}","import { __extends, __read } from \"tslib\";\nimport { deepMix, each, find, get, head, isBoolean, last } from '@antv/util';\nimport { COMPONENT_MAX_VIEW_PERCENTAGE, COMPONENT_TYPE, DIRECTION, LAYER } from '../../constant';\nimport { CategoryLegend, ContinuousLegend } from '../../dependents';\nimport { DEFAULT_ANIMATE_CFG } from '../../animate';\nimport { BBox } from '../../util/bbox';\nimport { directionToPosition } from '../../util/direction';\nimport { omit } from '../../util/helper';\nimport { getCustomLegendItems, getLegendItems, getLegendLayout, getLegendThemeCfg } from '../../util/legend';\nimport { getName } from '../../util/scale';\nimport { Controller } from './base';\n/**\n * 从配置中获取单个字段的 legend 配置\n * @param legends\n * @param field\n * @returns the option of one legend field\n */\nfunction getLegendOption(legends, field) {\n if (isBoolean(legends)) {\n return legends === false ? false : {};\n }\n return get(legends, [field], legends);\n}\nfunction getDirection(legendOption) {\n return get(legendOption, 'position', DIRECTION.BOTTOM);\n}\n/**\n * @ignore\n * legend Controller\n */\nvar Legend = /** @class */function (_super) {\n __extends(Legend, _super);\n function Legend(view) {\n var _this = _super.call(this, view) || this;\n _this.container = _this.view.getLayer(LAYER.FORE).addGroup();\n return _this;\n }\n Object.defineProperty(Legend.prototype, \"name\", {\n get: function get() {\n return 'legend';\n },\n enumerable: false,\n configurable: true\n });\n Legend.prototype.init = function () {};\n /**\n * render the legend component by legend options\n */\n Legend.prototype.render = function () {\n // 和 update 逻辑保持一致\n this.update();\n };\n /**\n * layout legend\n * 计算出 legend 的 direction 位置 x, y\n */\n Legend.prototype.layout = function () {\n var _this = this;\n this.layoutBBox = this.view.viewBBox;\n each(this.components, function (co) {\n var component = co.component,\n direction = co.direction;\n var layout = getLegendLayout(direction);\n var maxWidthRatio = component.get('maxWidthRatio');\n var maxHeightRatio = component.get('maxHeightRatio');\n var maxSize = _this.getCategoryLegendSizeCfg(layout, maxWidthRatio, maxHeightRatio);\n var maxWidth = component.get('maxWidth');\n var maxHeight = component.get('maxHeight');\n // 先更新 maxSize,更新 layoutBBox,以便计算正确的 x y\n component.update({\n maxWidth: Math.min(maxSize.maxWidth, maxWidth || 0),\n maxHeight: Math.min(maxSize.maxHeight, maxHeight || 0)\n });\n var padding = component.get('padding');\n var bboxObject = component.getLayoutBBox(); // 这里只需要他的 width、height 信息做位置调整\n var bbox = new BBox(bboxObject.x, bboxObject.y, bboxObject.width, bboxObject.height).expand(padding);\n var _a = __read(directionToPosition(_this.view.viewBBox, bbox, direction), 2),\n x1 = _a[0],\n y1 = _a[1];\n var _b = __read(directionToPosition(_this.layoutBBox, bbox, direction), 2),\n x2 = _b[0],\n y2 = _b[1];\n var x = 0;\n var y = 0;\n // 因为 legend x y 要和 coordinateBBox 对齐,所以要做一个简单的判断\n if (direction.startsWith('top') || direction.startsWith('bottom')) {\n x = x1;\n y = y2;\n } else {\n x = x2;\n y = y1;\n }\n // 更新位置\n component.setLocation({\n x: x + padding[3],\n y: y + padding[0]\n });\n _this.layoutBBox = _this.layoutBBox.cut(bbox, direction);\n });\n };\n /**\n * legend 的更新逻辑\n */\n Legend.prototype.update = function () {\n var _this = this;\n this.option = this.view.getOptions().legends;\n // 已经处理过的 legend\n var updated = {};\n var eachLegend = function eachLegend(geometry, attr, scale) {\n var id = _this.getId(scale.field);\n var existCo = _this.getComponentById(id);\n // 存在则 update\n if (existCo) {\n var cfg = void 0;\n var legendOption = getLegendOption(_this.option, scale.field);\n // if the legend option is not false, means legend should be created.\n if (legendOption !== false) {\n if (get(legendOption, 'custom')) {\n cfg = _this.getCategoryCfg(geometry, attr, scale, legendOption, true);\n } else {\n if (scale.isLinear) {\n // linear field, create continuous legend\n cfg = _this.getContinuousCfg(geometry, attr, scale, legendOption);\n } else if (scale.isCategory) {\n // category field, create category legend\n cfg = _this.getCategoryCfg(geometry, attr, scale, legendOption);\n }\n }\n }\n // 如果 cfg 为空,则不在 updated 标记,那么会在后面逻辑中删除\n if (cfg) {\n // omit 掉一些属性,比如 container 等\n omit(cfg, ['container']);\n existCo.direction = getDirection(legendOption);\n existCo.component.update(cfg);\n // 标记为新的\n updated[id] = true;\n }\n } else {\n // 不存在则 create\n var legend = _this.createFieldLegend(geometry, attr, scale);\n if (legend) {\n legend.component.init();\n _this.components.push(legend);\n // 标记为新的\n updated[id] = true;\n }\n }\n };\n // 全局自定义图例\n if (get(this.option, 'custom')) {\n var id = 'global-custom';\n var existCo = this.getComponentById(id);\n if (existCo) {\n var customCfg = this.getCategoryCfg(undefined, undefined, undefined, this.option, true);\n omit(customCfg, ['container']);\n existCo.component.update(customCfg);\n updated[id] = true;\n } else {\n var component = this.createCustomLegend(undefined, undefined, undefined, this.option);\n if (component) {\n component.init();\n var layer = LAYER.FORE;\n var direction = getDirection(this.option);\n this.components.push({\n id: id,\n component: component,\n layer: layer,\n direction: direction,\n type: COMPONENT_TYPE.LEGEND,\n extra: undefined\n });\n // 标记为更新\n updated[id] = true;\n }\n }\n } else {\n // 遍历处理每一个创建逻辑\n this.loopLegends(eachLegend);\n }\n // 处理完成之后,销毁删除的\n // 不在处理中的\n var components = [];\n each(this.getComponents(), function (co) {\n if (updated[co.id]) {\n components.push(co);\n } else {\n co.component.destroy();\n }\n });\n // 更新当前已有的 components\n this.components = components;\n };\n Legend.prototype.clear = function () {\n _super.prototype.clear.call(this);\n this.container.clear();\n };\n Legend.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.container.remove(true);\n };\n /**\n * 递归获取所有的 Geometry\n */\n Legend.prototype.getGeometries = function (view) {\n var _this = this;\n var geometries = view.geometries;\n each(view.views, function (v) {\n geometries = geometries.concat(_this.getGeometries(v));\n });\n return geometries;\n };\n /**\n * 遍历 Geometry,处理 legend 逻辑\n * @param doEach 每个 loop 中的处理方法\n */\n Legend.prototype.loopLegends = function (doEach) {\n var isRootView = this.view.getRootView() === this.view;\n // 非根 view,不处理 legend\n if (!isRootView) {\n return;\n }\n // 递归 view 中所有的 Geometry,进行创建 legend\n var geometries = this.getGeometries(this.view);\n var looped = {}; // 防止一个字段创建两个 legend\n each(geometries, function (geometry) {\n var attributes = geometry.getGroupAttributes();\n each(attributes, function (attr) {\n var scale = attr.getScale(attr.type);\n // 如果在视觉通道上映射常量值,如 size(2) shape('circle') 不创建 legend\n if (!scale || scale.type === 'identity' || looped[scale.field]) {\n return;\n }\n doEach(geometry, attr, scale);\n looped[scale.field] = true;\n });\n });\n };\n /**\n * 创建一个 legend\n * @param geometry\n * @param attr\n * @param scale\n */\n Legend.prototype.createFieldLegend = function (geometry, attr, scale) {\n var component;\n var legendOption = getLegendOption(this.option, scale.field);\n var layer = LAYER.FORE;\n var direction = getDirection(legendOption);\n // if the legend option is not false, means legend should be created.\n if (legendOption !== false) {\n if (get(legendOption, 'custom')) {\n component = this.createCustomLegend(geometry, attr, scale, legendOption);\n } else {\n if (scale.isLinear) {\n // linear field, create continuous legend\n component = this.createContinuousLegend(geometry, attr, scale, legendOption);\n } else if (scale.isCategory) {\n // category field, create category legend\n component = this.createCategoryLegend(geometry, attr, scale, legendOption);\n }\n }\n }\n if (component) {\n component.set('field', scale.field);\n return {\n id: this.getId(scale.field),\n component: component,\n layer: layer,\n direction: direction,\n type: COMPONENT_TYPE.LEGEND,\n extra: {\n scale: scale\n }\n };\n }\n };\n /**\n * 自定义图例使用 category 图例去渲染\n * @param geometry\n * @param attr\n * @param scale\n * @param legendOption\n */\n Legend.prototype.createCustomLegend = function (geometry, attr, scale, legendOption) {\n // 直接使用 分类图例渲染\n var cfg = this.getCategoryCfg(geometry, attr, scale, legendOption, true);\n return new CategoryLegend(cfg);\n };\n /**\n * 创建连续图例\n * @param geometry\n * @param attr\n * @param scale\n * @param legendOption\n */\n Legend.prototype.createContinuousLegend = function (geometry, attr, scale, legendOption) {\n var cfg = this.getContinuousCfg(geometry, attr, scale, omit(legendOption, ['value']));\n return new ContinuousLegend(cfg);\n };\n /**\n * 创建分类图例\n * @param geometry\n * @param attr\n * @param scale\n * @param legendOption\n */\n Legend.prototype.createCategoryLegend = function (geometry, attr, scale, legendOption) {\n var cfg = this.getCategoryCfg(geometry, attr, scale, legendOption);\n return new CategoryLegend(cfg);\n };\n /**\n * 获得连续图例的配置\n * @param geometry\n * @param attr\n * @param scale\n * @param legendOption\n */\n Legend.prototype.getContinuousCfg = function (geometry, attr, scale, legendOption) {\n var ticks = scale.getTicks();\n var containMin = find(ticks, function (tick) {\n return tick.value === 0;\n });\n var containMax = find(ticks, function (tick) {\n return tick.value === 1;\n });\n var items = ticks.map(function (tick) {\n var value = tick.value,\n tickValue = tick.tickValue;\n var attrValue = attr.mapping(scale.invert(value)).join('');\n return {\n value: tickValue,\n attrValue: attrValue,\n color: attrValue,\n scaleValue: value\n };\n });\n if (!containMin) {\n items.push({\n value: scale.min,\n attrValue: attr.mapping(scale.invert(0)).join(''),\n color: attr.mapping(scale.invert(0)).join(''),\n scaleValue: 0\n });\n }\n if (!containMax) {\n items.push({\n value: scale.max,\n attrValue: attr.mapping(scale.invert(1)).join(''),\n color: attr.mapping(scale.invert(1)).join(''),\n scaleValue: 1\n });\n }\n // 排序\n items.sort(function (a, b) {\n return a.value - b.value;\n });\n // 跟 attr 相关的配置\n // size color 区别的配置\n var attrLegendCfg = {\n min: head(items).value,\n max: last(items).value,\n colors: [],\n rail: {\n type: attr.type\n },\n track: {}\n };\n if (attr.type === 'size') {\n attrLegendCfg.track = {\n style: {\n // size 的选中前景色,对于 color,则直接使用 color 标识\n // @ts-ignore\n fill: attr.type === 'size' ? this.view.getTheme().defaultColor : undefined\n }\n };\n }\n if (attr.type === 'color') {\n attrLegendCfg.colors = items.map(function (item) {\n return item.attrValue;\n });\n }\n var container = this.container;\n // if position is not set, use top as default\n var direction = getDirection(legendOption);\n var layout = getLegendLayout(direction);\n var title = get(legendOption, 'title');\n if (title) {\n title = deepMix({\n text: getName(scale)\n }, title);\n }\n // 基础配置,从当前数据中读到的配置\n attrLegendCfg.container = container;\n attrLegendCfg.layout = layout;\n attrLegendCfg.title = title;\n attrLegendCfg.animateOption = DEFAULT_ANIMATE_CFG;\n // @ts-ignore\n return this.mergeLegendCfg(attrLegendCfg, legendOption, 'continuous');\n };\n /**\n * 获取分类图例的配置项\n * @param geometry\n * @param attr\n * @param scale\n * @param custom\n * @param legendOption\n */\n Legend.prototype.getCategoryCfg = function (geometry, attr, scale, legendOption, custom) {\n var container = this.container;\n // if position is not set, use top as default\n var direction = get(legendOption, 'position', DIRECTION.BOTTOM);\n var legendTheme = getLegendThemeCfg(this.view.getTheme(), direction);\n // the default marker style\n var themeMarker = get(legendTheme, ['marker']);\n var userMarker = get(legendOption, 'marker');\n var layout = getLegendLayout(direction);\n var themePageNavigator = get(legendTheme, ['pageNavigator']);\n var userPageNavigator = get(legendOption, 'pageNavigator');\n var items = custom ? getCustomLegendItems(themeMarker, userMarker, legendOption.items) : getLegendItems(this.view, geometry, attr, themeMarker, userMarker);\n var title = get(legendOption, 'title');\n if (title) {\n title = deepMix({\n text: scale ? getName(scale) : ''\n }, title);\n }\n var maxWidthRatio = get(legendOption, 'maxWidthRatio');\n var maxHeightRatio = get(legendOption, 'maxHeightRatio');\n var baseCfg = this.getCategoryLegendSizeCfg(layout, maxWidthRatio, maxHeightRatio);\n baseCfg.container = container;\n baseCfg.layout = layout;\n baseCfg.items = items;\n baseCfg.title = title;\n baseCfg.animateOption = DEFAULT_ANIMATE_CFG;\n baseCfg.pageNavigator = deepMix({}, themePageNavigator, userPageNavigator);\n var categoryCfg = this.mergeLegendCfg(baseCfg, legendOption, direction);\n if (categoryCfg.reversed) {\n // 图例项需要逆序\n categoryCfg.items.reverse();\n }\n var maxItemWidth = get(categoryCfg, 'maxItemWidth');\n if (maxItemWidth && maxItemWidth <= 1) {\n // 转换成像素值\n categoryCfg.maxItemWidth = this.view.viewBBox.width * maxItemWidth;\n }\n return categoryCfg;\n };\n /**\n * get legend config, use option > suggestion > theme\n * @param baseCfg\n * @param legendOption\n * @param direction\n */\n Legend.prototype.mergeLegendCfg = function (baseCfg, legendOption, direction) {\n var position = direction.split('-')[0];\n var themeObject = getLegendThemeCfg(this.view.getTheme(), position);\n return deepMix({}, themeObject, baseCfg, legendOption);\n };\n /**\n * 生成 id\n * @param key\n */\n Legend.prototype.getId = function (key) {\n return \"\".concat(this.name, \"-\").concat(key);\n };\n /**\n * 根据 id 来获取组件\n * @param id\n */\n Legend.prototype.getComponentById = function (id) {\n return find(this.components, function (co) {\n return co.id === id;\n });\n };\n Legend.prototype.getCategoryLegendSizeCfg = function (layout, maxWidthRatio, maxHeightRatio) {\n if (maxWidthRatio === void 0) {\n maxWidthRatio = COMPONENT_MAX_VIEW_PERCENTAGE;\n }\n if (maxHeightRatio === void 0) {\n maxHeightRatio = COMPONENT_MAX_VIEW_PERCENTAGE;\n }\n var _a = this.view.viewBBox,\n vw = _a.width,\n vh = _a.height;\n // 目前 legend 的布局是以 viewBBox 为参照\n // const { width: cw, height: ch } = this.view.coordinateBBox;\n return layout === 'vertical' ? {\n maxWidth: vw * maxWidthRatio,\n maxHeight: vh\n } : {\n maxWidth: vw,\n maxHeight: vh * maxHeightRatio\n };\n };\n return Legend;\n}(Controller);\nexport default Legend;","import { __assign, __extends, __read } from \"tslib\";\nimport { deepMix, get, isObject, size, clamp, isNil, noop, throttle, isEmpty, valuesOfKey } from '@antv/util';\nimport { COMPONENT_TYPE, DIRECTION, LAYER, VIEW_LIFE_CIRCLE } from '../../constant';\nimport { Slider as SliderComponent } from '../../dependents';\nimport { BBox } from '../../util/bbox';\nimport { directionToPosition } from '../../util/direction';\nimport { isBetween } from '../../util/helper';\nimport { Controller } from './base';\n/**\n * @ignore\n * slider Controller\n */\nvar Slider = /** @class */function (_super) {\n __extends(Slider, _super);\n function Slider(view) {\n var _this = _super.call(this, view) || this;\n _this.onChangeFn = noop;\n /**\n * 清除测量\n */\n _this.resetMeasure = function () {\n _this.clear();\n };\n /**\n * 滑块滑动的时候出发\n * @param v\n */\n _this.onValueChange = function (v) {\n var _a = __read(v, 2),\n min = _a[0],\n max = _a[1];\n _this.start = min;\n _this.end = max;\n _this.changeViewData(min, max);\n };\n _this.container = _this.view.getLayer(LAYER.FORE).addGroup();\n _this.onChangeFn = throttle(_this.onValueChange, 20, {\n leading: true\n });\n _this.width = 0;\n _this.view.on(VIEW_LIFE_CIRCLE.BEFORE_CHANGE_DATA, _this.resetMeasure);\n _this.view.on(VIEW_LIFE_CIRCLE.BEFORE_CHANGE_SIZE, _this.resetMeasure);\n return _this;\n }\n Object.defineProperty(Slider.prototype, \"name\", {\n get: function get() {\n return 'slider';\n },\n enumerable: false,\n configurable: true\n });\n Slider.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.view.off(VIEW_LIFE_CIRCLE.BEFORE_CHANGE_DATA, this.resetMeasure);\n this.view.off(VIEW_LIFE_CIRCLE.BEFORE_CHANGE_SIZE, this.resetMeasure);\n };\n /**\n * 初始化\n */\n Slider.prototype.init = function () {};\n /**\n * 渲染\n */\n Slider.prototype.render = function () {\n this.option = this.view.getOptions().slider;\n var _a = this.getSliderCfg(),\n start = _a.start,\n end = _a.end;\n if (isNil(this.start)) {\n this.start = start;\n this.end = end;\n }\n var viewData = this.view.getOptions().data;\n if (this.option && !isEmpty(viewData)) {\n if (this.slider) {\n // exist, update\n this.slider = this.updateSlider();\n } else {\n // not exist, create\n this.slider = this.createSlider();\n // 监听事件,绑定交互\n this.slider.component.on('sliderchange', this.onChangeFn);\n }\n } else {\n if (this.slider) {\n // exist, destroy\n this.slider.component.destroy();\n this.slider = undefined;\n } else {\n // do nothing\n }\n }\n };\n /**\n * 布局\n */\n Slider.prototype.layout = function () {\n var _this = this;\n if (this.option && !this.width) {\n this.measureSlider();\n setTimeout(function () {\n // 初始状态下的 view 数据过滤\n if (!_this.view.destroyed) {\n _this.changeViewData(_this.start, _this.end);\n }\n }, 0);\n }\n if (this.slider) {\n var width = this.view.coordinateBBox.width;\n // 获取组件的 layout bbox\n var padding = this.slider.component.get('padding');\n var _a = __read(padding, 4),\n paddingTop = _a[0],\n paddingRight = _a[1],\n paddingBottom = _a[2],\n paddingLeft = _a[3];\n var bboxObject = this.slider.component.getLayoutBBox();\n var bbox = new BBox(bboxObject.x, bboxObject.y, Math.min(bboxObject.width, width), bboxObject.height).expand(padding);\n var _b = this.getMinMaxText(this.start, this.end),\n minText = _b.minText,\n maxText = _b.maxText;\n var _c = __read(directionToPosition(this.view.viewBBox, bbox, DIRECTION.BOTTOM), 2),\n x1 = _c[0],\n y1 = _c[1];\n var _d = __read(directionToPosition(this.view.coordinateBBox, bbox, DIRECTION.BOTTOM), 2),\n x2 = _d[0],\n y2 = _d[1];\n // 默认放在 bottom\n this.slider.component.update(__assign(__assign({}, this.getSliderCfg()), {\n x: x2 + paddingLeft,\n y: y1 + paddingTop,\n width: this.width,\n start: this.start,\n end: this.end,\n minText: minText,\n maxText: maxText\n }));\n this.view.viewBBox = this.view.viewBBox.cut(bbox, DIRECTION.BOTTOM);\n }\n };\n /**\n * 更新\n */\n Slider.prototype.update = function () {\n // 逻辑和 render 保持一致\n this.render();\n };\n /**\n * 创建 slider 组件\n */\n Slider.prototype.createSlider = function () {\n var cfg = this.getSliderCfg();\n // 添加 slider 组件\n var component = new SliderComponent(__assign({\n container: this.container\n }, cfg));\n component.init();\n return {\n component: component,\n layer: LAYER.FORE,\n direction: DIRECTION.BOTTOM,\n type: COMPONENT_TYPE.SLIDER\n };\n };\n /**\n * 更新配置\n */\n Slider.prototype.updateSlider = function () {\n var cfg = this.getSliderCfg();\n if (this.width) {\n var _a = this.getMinMaxText(this.start, this.end),\n minText = _a.minText,\n maxText = _a.maxText;\n cfg = __assign(__assign({}, cfg), {\n width: this.width,\n start: this.start,\n end: this.end,\n minText: minText,\n maxText: maxText\n });\n }\n this.slider.component.update(cfg);\n return this.slider;\n };\n /**\n * 进行测量操作\n */\n Slider.prototype.measureSlider = function () {\n var width = this.getSliderCfg().width;\n this.width = width;\n };\n /**\n * 生成 slider 配置\n */\n Slider.prototype.getSliderCfg = function () {\n var cfg = {\n height: 16,\n start: 0,\n end: 1,\n minText: '',\n maxText: '',\n x: 0,\n y: 0,\n width: this.view.coordinateBBox.width\n };\n if (isObject(this.option)) {\n // 用户配置的数据,优先级更高\n var trendCfg = __assign({\n data: this.getData()\n }, get(this.option, 'trendCfg', {}));\n // 因为有样式,所以深层覆盖\n cfg = deepMix({}, cfg, this.getThemeOptions(), this.option);\n // trendCfg 因为有数据数组,所以使用浅替换\n cfg = __assign(__assign({}, cfg), {\n trendCfg: trendCfg\n });\n }\n cfg.start = clamp(Math.min(isNil(cfg.start) ? 0 : cfg.start, isNil(cfg.end) ? 1 : cfg.end), 0, 1);\n cfg.end = clamp(Math.max(isNil(cfg.start) ? 0 : cfg.start, isNil(cfg.end) ? 1 : cfg.end), 0, 1);\n return cfg;\n };\n /**\n * 从 view 中获取数据,缩略轴使用全量的数据\n */\n Slider.prototype.getData = function () {\n var data = this.view.getOptions().data;\n var _a = __read(this.view.getYScales(), 1),\n yScale = _a[0];\n var groupScales = this.view.getGroupScales();\n if (groupScales.length) {\n var _b = groupScales[0],\n field_1 = _b.field,\n ticks_1 = _b.ticks;\n return data.reduce(function (pre, cur) {\n if (cur[field_1] === ticks_1[0]) {\n pre.push(cur[yScale.field]);\n }\n return pre;\n }, []);\n }\n return data.map(function (datum) {\n return datum[yScale.field] || 0;\n });\n };\n /**\n * 获取 slider 的主题配置\n */\n Slider.prototype.getThemeOptions = function () {\n var theme = this.view.getTheme();\n return get(theme, ['components', 'slider', 'common'], {});\n };\n /**\n * 根据 start/end 和当前数据计算出当前的 minText/maxText\n * @param min\n * @param max\n */\n Slider.prototype.getMinMaxText = function (min, max) {\n var data = this.view.getOptions().data;\n var xScale = this.view.getXScale();\n var isHorizontal = true;\n var values = valuesOfKey(data, xScale.field);\n // 如果是 xScale 数值类型,则进行排序\n if (xScale.isLinear) {\n values = values.sort();\n }\n var xValues = isHorizontal ? values : values.reverse();\n var dataSize = size(data);\n if (!xScale || !dataSize) {\n return {}; // fix: 需要兼容,否则调用方直接取值会报错\n }\n\n var xTickCount = size(xValues);\n var minIndex = Math.round(min * (xTickCount - 1));\n var maxIndex = Math.round(max * (xTickCount - 1));\n var minText = get(xValues, [minIndex]);\n var maxText = get(xValues, [maxIndex]);\n var formatter = this.getSliderCfg().formatter;\n if (formatter) {\n minText = formatter(minText, data[minIndex], minIndex);\n maxText = formatter(maxText, data[maxIndex], maxIndex);\n }\n return {\n minText: minText,\n maxText: maxText\n };\n };\n /**\n * 更新 view 过滤数据\n * @param min\n * @param max\n */\n Slider.prototype.changeViewData = function (min, max) {\n var data = this.view.getOptions().data;\n var xScale = this.view.getXScale();\n var dataSize = size(data);\n if (!xScale || !dataSize) {\n return;\n }\n var isHorizontal = true;\n var values = valuesOfKey(data, xScale.field);\n // 如果是 xScale 数值类型,则进行排序\n var xScaleValues = this.view.getXScale().isLinear ? values.sort(function (a, b) {\n return Number(a) - Number(b);\n }) : values;\n var xValues = isHorizontal ? xScaleValues : xScaleValues.reverse();\n var xTickCount = size(xValues);\n var minIndex = Math.round(min * (xTickCount - 1));\n var maxIndex = Math.round(max * (xTickCount - 1));\n // 增加 x 轴的过滤器\n this.view.filter(xScale.field, function (value, datum) {\n var idx = xValues.indexOf(value);\n return idx > -1 ? isBetween(idx, minIndex, maxIndex) : true;\n });\n this.view.render(true);\n };\n /**\n * 覆写父类方法\n */\n Slider.prototype.getComponents = function () {\n return this.slider ? [this.slider] : [];\n };\n /**\n * 覆盖父类\n */\n Slider.prototype.clear = function () {\n if (this.slider) {\n this.slider.component.destroy();\n this.slider = undefined;\n }\n this.width = 0;\n this.start = undefined;\n this.end = undefined;\n };\n return Slider;\n}(Controller);\nexport default Slider;","import { __assign, __extends, __read, __rest, __spreadArray } from \"tslib\";\nimport { Controller } from './base';\nimport { Scrollbar as ScrollbarComponent } from '../../dependents';\nimport { BBox } from '../../util/bbox';\nimport { directionToPosition } from '../../util/direction';\nimport { COMPONENT_TYPE, DIRECTION, LAYER, VIEW_LIFE_CIRCLE } from '../../constant';\nimport { isObject, clamp, size, throttle, noop, get, valuesOfKey, deepMix } from '@antv/util';\nimport { isBetween } from '../../util/helper';\nvar DEFAULT_PADDING = 0;\nvar DEFAULT_SIZE = 8;\nvar DEFAULT_CATEGORY_SIZE = 32;\nvar MIN_THUMB_LENGTH = 20;\nvar Scrollbar = /** @class */function (_super) {\n __extends(Scrollbar, _super);\n function Scrollbar(view) {\n var _this = _super.call(this, view) || this;\n _this.onChangeFn = noop;\n _this.resetMeasure = function () {\n _this.clear();\n };\n _this.onValueChange = function (_a) {\n var ratio = _a.ratio;\n var animate = _this.getValidScrollbarCfg().animate;\n _this.ratio = clamp(ratio, 0, 1);\n var originalAnimate = _this.view.getOptions().animate;\n if (!animate) {\n _this.view.animate(false);\n }\n _this.changeViewData(_this.getScrollRange(), true);\n _this.view.animate(originalAnimate);\n };\n _this.container = _this.view.getLayer(LAYER.FORE).addGroup();\n _this.onChangeFn = throttle(_this.onValueChange, 20, {\n leading: true\n });\n _this.trackLen = 0;\n _this.thumbLen = 0;\n _this.ratio = 0;\n _this.view.on(VIEW_LIFE_CIRCLE.BEFORE_CHANGE_DATA, _this.resetMeasure);\n _this.view.on(VIEW_LIFE_CIRCLE.BEFORE_CHANGE_SIZE, _this.resetMeasure);\n return _this;\n }\n Object.defineProperty(Scrollbar.prototype, \"name\", {\n get: function get() {\n return 'scrollbar';\n },\n enumerable: false,\n configurable: true\n });\n Scrollbar.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.view.off(VIEW_LIFE_CIRCLE.BEFORE_CHANGE_DATA, this.resetMeasure);\n this.view.off(VIEW_LIFE_CIRCLE.BEFORE_CHANGE_SIZE, this.resetMeasure);\n };\n Scrollbar.prototype.init = function () {};\n /**\n * 渲染\n */\n Scrollbar.prototype.render = function () {\n this.option = this.view.getOptions().scrollbar;\n if (this.option) {\n if (this.scrollbar) {\n // exist, update\n this.scrollbar = this.updateScrollbar();\n } else {\n // not exist, create\n this.scrollbar = this.createScrollbar();\n this.scrollbar.component.on('scrollchange', this.onChangeFn);\n }\n } else {\n if (this.scrollbar) {\n // exist, destroy\n this.scrollbar.component.destroy();\n this.scrollbar = undefined;\n }\n }\n };\n /**\n * 布局\n */\n Scrollbar.prototype.layout = function () {\n var _this = this;\n if (this.option && !this.trackLen) {\n this.measureScrollbar();\n setTimeout(function () {\n if (!_this.view.destroyed) {\n _this.changeViewData(_this.getScrollRange(), true);\n }\n });\n }\n if (this.scrollbar) {\n var width = this.view.coordinateBBox.width;\n var padding = this.scrollbar.component.get('padding');\n var bboxObject = this.scrollbar.component.getLayoutBBox();\n var bbox = new BBox(bboxObject.x, bboxObject.y, Math.min(bboxObject.width, width), bboxObject.height).expand(padding);\n var cfg = this.getScrollbarComponentCfg();\n var x = void 0;\n var y = void 0;\n if (cfg.isHorizontal) {\n var _a = __read(directionToPosition(this.view.viewBBox, bbox, DIRECTION.BOTTOM), 2),\n x1 = _a[0],\n y1 = _a[1];\n var _b = __read(directionToPosition(this.view.coordinateBBox, bbox, DIRECTION.BOTTOM), 2),\n x2 = _b[0],\n y2 = _b[1];\n x = x2;\n y = y1;\n } else {\n var _c = __read(directionToPosition(this.view.viewBBox, bbox, DIRECTION.RIGHT), 2),\n x1 = _c[0],\n y1 = _c[1];\n var _d = __read(directionToPosition(this.view.viewBBox, bbox, DIRECTION.RIGHT), 2),\n x2 = _d[0],\n y2 = _d[1];\n x = x2;\n y = y1;\n }\n x += padding[3];\n y += padding[0];\n // 默认放在 bottom\n if (this.trackLen) {\n this.scrollbar.component.update(__assign(__assign({}, cfg), {\n x: x,\n y: y,\n trackLen: this.trackLen,\n thumbLen: this.thumbLen,\n thumbOffset: (this.trackLen - this.thumbLen) * this.ratio\n }));\n } else {\n this.scrollbar.component.update(__assign(__assign({}, cfg), {\n x: x,\n y: y\n }));\n }\n this.view.viewBBox = this.view.viewBBox.cut(bbox, cfg.isHorizontal ? DIRECTION.BOTTOM : DIRECTION.RIGHT);\n }\n };\n /**\n * 更新\n */\n Scrollbar.prototype.update = function () {\n // 逻辑和 render 保持一致\n this.render();\n };\n Scrollbar.prototype.getComponents = function () {\n return this.scrollbar ? [this.scrollbar] : [];\n };\n Scrollbar.prototype.clear = function () {\n if (this.scrollbar) {\n this.scrollbar.component.destroy();\n this.scrollbar = undefined;\n }\n this.trackLen = 0;\n this.thumbLen = 0;\n this.ratio = 0;\n this.cnt = 0;\n this.step = 0;\n this.data = undefined;\n this.xScaleCfg = undefined;\n this.yScalesCfg = [];\n };\n /** 设置滚动条位置 */\n Scrollbar.prototype.setValue = function (ratio) {\n this.onValueChange({\n ratio: ratio\n });\n };\n /** 获得滚动条位置 */\n Scrollbar.prototype.getValue = function () {\n return this.ratio;\n };\n /**\n * 获取 scrollbar 的主题配置\n */\n Scrollbar.prototype.getThemeOptions = function () {\n var theme = this.view.getTheme();\n return get(theme, ['components', 'scrollbar', 'common'], {});\n };\n /**\n * 获取 scrollbar 组件的主题样式\n */\n Scrollbar.prototype.getScrollbarTheme = function (style) {\n var theme = get(this.view.getTheme(), ['components', 'scrollbar']);\n var _a = style || {},\n thumbHighlightColor = _a.thumbHighlightColor,\n restStyles = __rest(_a, [\"thumbHighlightColor\"]);\n return {\n default: deepMix({}, get(theme, ['default', 'style'], {}), restStyles),\n hover: deepMix({}, get(theme, ['hover', 'style'], {}), {\n thumbColor: thumbHighlightColor\n })\n };\n };\n Scrollbar.prototype.measureScrollbar = function () {\n var xScale = this.view.getXScale();\n var yScales = this.view.getYScales().slice();\n this.data = this.getScrollbarData();\n this.step = this.getStep();\n this.cnt = this.getCnt();\n var _a = this.getScrollbarComponentCfg(),\n trackLen = _a.trackLen,\n thumbLen = _a.thumbLen;\n this.trackLen = trackLen;\n this.thumbLen = thumbLen;\n this.xScaleCfg = {\n field: xScale.field,\n values: xScale.values || []\n };\n this.yScalesCfg = yScales;\n };\n Scrollbar.prototype.getScrollRange = function () {\n var startIdx = Math.floor((this.cnt - this.step) * clamp(this.ratio, 0, 1));\n var endIdx = Math.min(startIdx + this.step - 1, this.cnt - 1);\n return [startIdx, endIdx];\n };\n Scrollbar.prototype.changeViewData = function (_a, render) {\n var _this = this;\n var _b = __read(_a, 2),\n startIdx = _b[0],\n endIdx = _b[1];\n var type = this.getValidScrollbarCfg().type;\n var isHorizontal = type !== 'vertical';\n var values = valuesOfKey(this.data, this.xScaleCfg.field);\n // 如果是 xScale 数值类型,则进行排序\n var xScaleValues = this.view.getXScale().isLinear ? values.sort(function (a, b) {\n return Number(a) - Number(b);\n }) : values;\n var xValues = isHorizontal ? xScaleValues : xScaleValues.reverse();\n this.yScalesCfg.forEach(function (cfg) {\n _this.view.scale(cfg.field, {\n formatter: cfg.formatter,\n type: cfg.type,\n min: cfg.min,\n max: cfg.max,\n tickMethod: cfg.tickMethod\n });\n });\n this.view.filter(this.xScaleCfg.field, function (val) {\n var idx = xValues.indexOf(val);\n return idx > -1 ? isBetween(idx, startIdx, endIdx) : true;\n });\n this.view.render(true);\n };\n Scrollbar.prototype.createScrollbar = function () {\n var type = this.getValidScrollbarCfg().type;\n var isHorizontal = type !== 'vertical';\n var component = new ScrollbarComponent(__assign(__assign({\n container: this.container\n }, this.getScrollbarComponentCfg()), {\n x: 0,\n y: 0\n }));\n component.init();\n return {\n component: component,\n layer: LAYER.FORE,\n direction: isHorizontal ? DIRECTION.BOTTOM : DIRECTION.RIGHT,\n type: COMPONENT_TYPE.SCROLLBAR\n };\n };\n Scrollbar.prototype.updateScrollbar = function () {\n var config = this.getScrollbarComponentCfg();\n var realConfig = this.trackLen ? __assign(__assign({}, config), {\n trackLen: this.trackLen,\n thumbLen: this.thumbLen,\n thumbOffset: (this.trackLen - this.thumbLen) * this.ratio\n }) : __assign({}, config);\n this.scrollbar.component.update(realConfig);\n return this.scrollbar;\n };\n Scrollbar.prototype.getStep = function () {\n if (this.step) {\n return this.step;\n }\n var coordinateBBox = this.view.coordinateBBox;\n var _a = this.getValidScrollbarCfg(),\n type = _a.type,\n categorySize = _a.categorySize;\n var isHorizontal = type !== 'vertical';\n return Math.floor((isHorizontal ? coordinateBBox.width : coordinateBBox.height) / categorySize);\n };\n Scrollbar.prototype.getCnt = function () {\n if (this.cnt) {\n return this.cnt;\n }\n var xScale = this.view.getXScale();\n var data = this.getScrollbarData();\n var values = valuesOfKey(data, xScale.field);\n return size(values);\n };\n Scrollbar.prototype.getScrollbarComponentCfg = function () {\n var _a = this.view,\n coordinateBBox = _a.coordinateBBox,\n viewBBox = _a.viewBBox;\n var _b = this.getValidScrollbarCfg(),\n type = _b.type,\n padding = _b.padding,\n width = _b.width,\n height = _b.height,\n style = _b.style;\n var isHorizontal = type !== 'vertical';\n var _c = __read(padding, 4),\n paddingTop = _c[0],\n paddingRight = _c[1],\n paddingBottom = _c[2],\n paddingLeft = _c[3];\n var position = isHorizontal ? {\n x: coordinateBBox.minX + paddingLeft,\n y: viewBBox.maxY - height - paddingBottom\n } : {\n x: viewBBox.maxX - width - paddingRight,\n y: coordinateBBox.minY + paddingTop\n };\n var step = this.getStep();\n var cnt = this.getCnt();\n var trackLen = isHorizontal ? coordinateBBox.width - paddingLeft - paddingRight : coordinateBBox.height - paddingTop - paddingBottom;\n var thumbLen = Math.max(trackLen * clamp(step / cnt, 0, 1), MIN_THUMB_LENGTH);\n return __assign(__assign({}, this.getThemeOptions()), {\n x: position.x,\n y: position.y,\n size: isHorizontal ? height : width,\n isHorizontal: isHorizontal,\n trackLen: trackLen,\n thumbLen: thumbLen,\n thumbOffset: 0,\n theme: this.getScrollbarTheme(style)\n });\n };\n /**\n * 填充一些默认的配置项目\n */\n Scrollbar.prototype.getValidScrollbarCfg = function () {\n var cfg = {\n type: 'horizontal',\n categorySize: DEFAULT_CATEGORY_SIZE,\n width: DEFAULT_SIZE,\n height: DEFAULT_SIZE,\n padding: [0, 0, 0, 0],\n animate: true,\n style: {}\n };\n if (isObject(this.option)) {\n cfg = __assign(__assign({}, cfg), this.option);\n }\n if (!isObject(this.option) || !this.option.padding) {\n cfg.padding = cfg.type === 'horizontal' ? [DEFAULT_PADDING, 0, DEFAULT_PADDING, 0] : [0, DEFAULT_PADDING, 0, DEFAULT_PADDING];\n }\n return cfg;\n };\n /**\n * 获取数据\n */\n Scrollbar.prototype.getScrollbarData = function () {\n var coordinate = this.view.getCoordinate();\n var cfg = this.getValidScrollbarCfg();\n var data = this.view.getOptions().data || [];\n // 纵向做了 y 轴镜像之后,数据也需要镜像反转\n if (coordinate.isReflect('y') && cfg.type === 'vertical') {\n data = __spreadArray([], __read(data), false).reverse();\n }\n return data;\n };\n return Scrollbar;\n}(Controller);\nexport default Scrollbar;","import { __assign, __extends, __values } from \"tslib\";\nimport { each, head, isEqual, last, get, flatten, isArray, uniq, isNil } from '@antv/util';\nimport { findItemsFromViewRecurisive } from '../../util/tooltip';\nimport { getAngle, getSectorPath } from '../../util/graphics';\nimport Action from './base';\nvar DEFAULT_REGION_PATH_STYLE = {\n fill: '#CCD6EC',\n opacity: 0.3\n};\nexport function getItemsOfView(view, point, tooltipCfg) {\n var e_1, _a, e_2, _b, e_3, _c;\n var items = findItemsFromViewRecurisive(view, point, tooltipCfg);\n if (items.length) {\n // 三层\n items = flatten(items);\n try {\n for (var items_1 = __values(items), items_1_1 = items_1.next(); !items_1_1.done; items_1_1 = items_1.next()) {\n var itemArr = items_1_1.value;\n try {\n for (var itemArr_1 = (e_2 = void 0, __values(itemArr)), itemArr_1_1 = itemArr_1.next(); !itemArr_1_1.done; itemArr_1_1 = itemArr_1.next()) {\n var item = itemArr_1_1.value;\n var _d = item.mappingData,\n x = _d.x,\n y = _d.y;\n item.x = isArray(x) ? x[x.length - 1] : x;\n item.y = isArray(y) ? y[y.length - 1] : y;\n }\n } catch (e_2_1) {\n e_2 = {\n error: e_2_1\n };\n } finally {\n try {\n if (itemArr_1_1 && !itemArr_1_1.done && (_b = itemArr_1.return)) _b.call(itemArr_1);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (items_1_1 && !items_1_1.done && (_a = items_1.return)) _a.call(items_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n var shared = tooltipCfg.shared;\n // shared: false 代表只显示当前拾取到的 shape 的数据,但是一个 view 会有多个 Geometry,所以有可能会拾取到多个 shape\n if (shared === false && items.length > 1) {\n var snapItem = items[0];\n var min = Math.abs(point.y - snapItem[0].y);\n try {\n for (var items_2 = __values(items), items_2_1 = items_2.next(); !items_2_1.done; items_2_1 = items_2.next()) {\n var aItem = items_2_1.value;\n var yDistance = Math.abs(point.y - aItem[0].y);\n if (yDistance <= min) {\n snapItem = aItem;\n min = yDistance;\n }\n }\n } catch (e_3_1) {\n e_3 = {\n error: e_3_1\n };\n } finally {\n try {\n if (items_2_1 && !items_2_1.done && (_c = items_2.return)) _c.call(items_2);\n } finally {\n if (e_3) throw e_3.error;\n }\n }\n items = [snapItem];\n }\n return uniq(flatten(items));\n }\n return [];\n}\n/**\n * 背景框的 Action. 只作用于 interval 和 schema geometry\n * @ignore\n */\nvar ActiveRegion = /** @class */function (_super) {\n __extends(ActiveRegion, _super);\n function ActiveRegion() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * 显示\n * @param {ShapeAttrs} style region-path 的样式\n * @param {number} appendRatio 适用于笛卡尔坐标系. 对于 x 轴非 linear 类型: 默认:0.25, x 轴 linear 类型: 默认 0\n * @param {number} appendWidth 适用于笛卡尔坐标系. 像素级别,优先级 > appendRatio\n */\n ActiveRegion.prototype.show = function (args) {\n var view = this.context.view;\n var ev = this.context.event;\n var tooltipCfg = view.getController('tooltip').getTooltipCfg();\n var tooltipItems = getItemsOfView(view, {\n x: ev.x,\n y: ev.y\n }, tooltipCfg);\n if (isEqual(tooltipItems, this.items)) {\n // 如果拾取数据同上次相同,则不重复绘制\n return;\n }\n this.items = tooltipItems;\n if (tooltipItems.length) {\n var xField_1 = view.getXScale().field;\n var xValue_1 = tooltipItems[0].data[xField_1];\n // 根据 x 对应的值查找 elements\n var elements_1 = [];\n var geometries = view.geometries;\n each(geometries, function (geometry) {\n if (geometry.type === 'interval' || geometry.type === 'schema') {\n var result = geometry.getElementsBy(function (ele) {\n var eleData = ele.getData();\n return eleData[xField_1] === xValue_1;\n });\n elements_1 = elements_1.concat(result);\n }\n });\n // 根据 bbox 计算背景框的面积区域\n if (elements_1.length) {\n var coordinate_1 = view.getCoordinate();\n var firstBBox_1 = elements_1[0].shape.getCanvasBBox();\n var lastBBox_1 = elements_1[0].shape.getCanvasBBox();\n var groupBBox_1 = firstBBox_1;\n each(elements_1, function (ele) {\n var bbox = ele.shape.getCanvasBBox();\n if (coordinate_1.isTransposed) {\n if (bbox.minY < firstBBox_1.minY) {\n firstBBox_1 = bbox;\n }\n if (bbox.maxY > lastBBox_1.maxY) {\n lastBBox_1 = bbox;\n }\n } else {\n if (bbox.minX < firstBBox_1.minX) {\n firstBBox_1 = bbox;\n }\n if (bbox.maxX > lastBBox_1.maxX) {\n lastBBox_1 = bbox;\n }\n }\n groupBBox_1.x = Math.min(bbox.minX, groupBBox_1.minX);\n groupBBox_1.y = Math.min(bbox.minY, groupBBox_1.minY);\n groupBBox_1.width = Math.max(bbox.maxX, groupBBox_1.maxX) - groupBBox_1.x;\n groupBBox_1.height = Math.max(bbox.maxY, groupBBox_1.maxY) - groupBBox_1.y;\n });\n var backgroundGroup = view.backgroundGroup,\n coordinateBBox = view.coordinateBBox;\n var path = void 0;\n if (coordinate_1.isRect) {\n var xScale = view.getXScale();\n var _a = args || {},\n appendRatio = _a.appendRatio,\n appendWidth = _a.appendWidth;\n if (isNil(appendWidth)) {\n appendRatio = isNil(appendRatio) ? xScale.isLinear ? 0 : 0.25 : appendRatio; // 如果 x 轴是数值类型,如直方图,默认不需要加额外的宽度\n appendWidth = coordinate_1.isTransposed ? appendRatio * lastBBox_1.height : appendRatio * firstBBox_1.width;\n }\n var minX = void 0;\n var minY = void 0;\n var width = void 0;\n var height = void 0;\n if (coordinate_1.isTransposed) {\n minX = coordinateBBox.minX;\n minY = Math.min(lastBBox_1.minY, firstBBox_1.minY) - appendWidth;\n width = coordinateBBox.width;\n height = groupBBox_1.height + appendWidth * 2;\n } else {\n minX = Math.min(firstBBox_1.minX, lastBBox_1.minX) - appendWidth;\n // 直角坐标系 非转置:最小值直接取 坐标系 minY\n minY = coordinateBBox.minY;\n width = groupBBox_1.width + appendWidth * 2;\n height = coordinateBBox.height;\n }\n path = [['M', minX, minY], ['L', minX + width, minY], ['L', minX + width, minY + height], ['L', minX, minY + height], ['Z']];\n } else {\n var firstElement = head(elements_1);\n var lastElement = last(elements_1);\n var startAngle = getAngle(firstElement.getModel(), coordinate_1).startAngle;\n var endAngle = getAngle(lastElement.getModel(), coordinate_1).endAngle;\n var center = coordinate_1.getCenter();\n var radius = coordinate_1.getRadius();\n var innterRadius = coordinate_1.innerRadius * radius;\n path = getSectorPath(center.x, center.y, radius, startAngle, endAngle, innterRadius);\n }\n if (this.regionPath) {\n this.regionPath.attr('path', path);\n this.regionPath.show();\n } else {\n var style = get(args, 'style', DEFAULT_REGION_PATH_STYLE);\n this.regionPath = backgroundGroup.addShape({\n type: 'path',\n name: 'active-region',\n capture: false,\n attrs: __assign(__assign({}, style), {\n path: path\n })\n });\n }\n }\n }\n };\n /**\n * 隐藏\n */\n ActiveRegion.prototype.hide = function () {\n if (this.regionPath) {\n this.regionPath.hide();\n }\n // this.regionPath = null;\n this.items = null;\n };\n /**\n * 销毁\n */\n ActiveRegion.prototype.destroy = function () {\n this.hide();\n if (this.regionPath) {\n this.regionPath.remove(true);\n }\n _super.prototype.destroy.call(this);\n };\n return ActiveRegion;\n}(Action);\nexport default ActiveRegion;","import { __extends } from \"tslib\";\nimport { isEqual, get } from '@antv/util';\nimport Action from '../../base';\n/**\n * Tooltip 展示隐藏的 Action\n * @ignore\n */\nvar TooltipAction = /** @class */function (_super) {\n __extends(TooltipAction, _super);\n function TooltipAction() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.timeStamp = 0;\n return _this;\n }\n /**\n * 显示 Tooltip\n * @returns\n */\n TooltipAction.prototype.show = function () {\n var context = this.context;\n var ev = context.event;\n var view = context.view;\n var isTooltipLocked = view.isTooltipLocked();\n if (isTooltipLocked) {\n // 锁定时不移动 tooltip\n return;\n }\n var lastTimeStamp = this.timeStamp;\n var timeStamp = +new Date();\n // 在 showDelay 毫秒(默认 16ms)内到 tooltip 上可以实现 enterable(调参工程师)\n var showDelay = get(context.view.getOptions(), 'tooltip.showDelay', 16);\n if (timeStamp - lastTimeStamp > showDelay) {\n var preLoc = this.location;\n var curLoc = {\n x: ev.x,\n y: ev.y\n };\n if (!preLoc || !isEqual(preLoc, curLoc)) {\n this.showTooltip(view, curLoc);\n }\n this.timeStamp = timeStamp;\n this.location = curLoc;\n }\n };\n /**\n * 隐藏 Tooltip。\n * @returns\n */\n TooltipAction.prototype.hide = function () {\n var view = this.context.view;\n var tooltip = view.getController('tooltip');\n var _a = this.context.event,\n clientX = _a.clientX,\n clientY = _a.clientY;\n // 如果已经 enterable + 已经在 tooltip 上,那么不隐藏\n if (tooltip.isCursorEntered({\n x: clientX,\n y: clientY\n })) {\n return;\n }\n // 锁定 tooltip 时不隐藏\n if (view.isTooltipLocked()) {\n return;\n }\n this.hideTooltip(view);\n this.location = null;\n };\n TooltipAction.prototype.showTooltip = function (view, point) {\n // 相同位置不重复展示\n view.showTooltip(point);\n };\n TooltipAction.prototype.hideTooltip = function (view) {\n view.hideTooltip();\n };\n return TooltipAction;\n}(Action);\nexport default TooltipAction;","import { __extends } from \"tslib\";\nimport { each } from '@antv/util';\nimport { getSiblingPoint, getSilbings } from '../../util';\nimport TooltipAction from './geometry';\n/**\n * 存在多个 view 时,控制其他 view 上的 tooltip 显示\n * @ignore\n */\nvar SiblingTooltip = /** @class */function (_super) {\n __extends(SiblingTooltip, _super);\n function SiblingTooltip() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * 所有同一层级的 tooltip 显示\n * @param view\n * @param point\n */\n SiblingTooltip.prototype.showTooltip = function (view, point) {\n var siblings = getSilbings(view);\n each(siblings, function (sibling) {\n var siblingPoint = getSiblingPoint(view, sibling, point);\n sibling.showTooltip(siblingPoint);\n });\n };\n /**\n * 隐藏同一层级的 tooltip\n * @param view\n */\n SiblingTooltip.prototype.hideTooltip = function (view) {\n var siblings = getSilbings(view);\n each(siblings, function (sibling) {\n sibling.hideTooltip();\n });\n };\n return SiblingTooltip;\n}(TooltipAction);\nexport default SiblingTooltip;","import { __assign, __extends } from \"tslib\";\nimport { isEqual, get, deepMix } from '@antv/util';\nimport { TOOLTIP_CSS_CONST } from '@antv/component';\nimport Action from '../../base';\nimport { HtmlTooltip } from '../../../../dependents';\n/**\n * 用于组件文本省略后需要展示完整信息的 Tooltip Action\n * @ignore\n */\nvar EllipsisText = /** @class */function (_super) {\n __extends(EllipsisText, _super);\n function EllipsisText() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.timeStamp = 0;\n return _this;\n }\n EllipsisText.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.tooltip && this.tooltip.destroy();\n };\n /**\n * 显示 Tooltip\n * @returns\n */\n EllipsisText.prototype.show = function () {\n var context = this.context;\n var ev = context.event;\n var lastTimeStamp = this.timeStamp;\n var timeStamp = +new Date();\n if (timeStamp - lastTimeStamp > 16) {\n var preLoc = this.location;\n var curLoc = {\n x: ev.x,\n y: ev.y\n };\n if (!preLoc || !isEqual(preLoc, curLoc)) {\n this.showTooltip(curLoc);\n }\n this.timeStamp = timeStamp;\n this.location = curLoc;\n }\n };\n /**\n * 隐藏 Tooltip。\n * @returns\n */\n EllipsisText.prototype.hide = function () {\n this.hideTooltip();\n this.location = null;\n };\n EllipsisText.prototype.showTooltip = function (curLoc) {\n var context = this.context;\n var ev = context.event;\n var target = ev.target;\n if (target && target.get('tip')) {\n if (!this.tooltip) {\n this.renderTooltip(); // 延迟生成\n }\n\n var tipContent = target.get('tip');\n // 展示 tooltip\n this.tooltip.update(__assign({\n title: tipContent\n }, curLoc));\n this.tooltip.show();\n }\n };\n EllipsisText.prototype.hideTooltip = function () {\n this.tooltip && this.tooltip.hide();\n };\n EllipsisText.prototype.renderTooltip = function () {\n var _a;\n var view = this.context.view;\n var canvas = view.canvas;\n var region = {\n start: {\n x: 0,\n y: 0\n },\n end: {\n x: canvas.get('width'),\n y: canvas.get('height')\n }\n };\n var theme = view.getTheme();\n var tooltipStyles = get(theme, ['components', 'tooltip', 'domStyles'], {}); // 获取 tooltip 样式\n var tooltip = new HtmlTooltip({\n parent: canvas.get('el').parentNode,\n region: region,\n visible: false,\n crosshairs: null,\n domStyles: __assign({}, deepMix({}, tooltipStyles, (_a = {},\n // 超长的时候,tooltip tip 最大宽度为 50%,然后可以换行\n _a[TOOLTIP_CSS_CONST.CONTAINER_CLASS] = {\n 'max-width': '50%'\n }, _a[TOOLTIP_CSS_CONST.TITLE_CLASS] = {\n 'word-break': 'break-all'\n }, _a)))\n });\n tooltip.init();\n tooltip.setCapture(false); // 不允许捕获事件\n this.tooltip = tooltip;\n };\n return EllipsisText;\n}(Action);\nexport default EllipsisText;","import { __extends } from \"tslib\";\nimport { each } from '@antv/util';\nimport Action from '../base';\nimport { getElementsByState } from '../util';\n/**\n * 状态量 Action 的基类\n * @abstract\n * @class\n * @ignore\n */\nvar StateBase = /** @class */function (_super) {\n __extends(StateBase, _super);\n function StateBase() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * 状态名称\n */\n _this.stateName = '';\n return _this;\n }\n /**\n * 是否具有某个状态\n * @param element 图表 Element 元素\n */\n StateBase.prototype.hasState = function (element) {\n return element.hasState(this.stateName);\n };\n /**\n * 设置状态激活\n * @param enable 状态值\n */\n StateBase.prototype.setElementState = function (element, enable) {\n // 防止闪烁\n element.setState(this.stateName, enable);\n };\n /**\n * 设置状态\n */\n StateBase.prototype.setState = function () {\n this.setStateEnable(true);\n };\n /**\n * 清除所有 Element 的状态\n */\n StateBase.prototype.clear = function () {\n var view = this.context.view;\n this.clearViewState(view);\n };\n StateBase.prototype.clearViewState = function (view) {\n var _this = this;\n var elements = getElementsByState(view, this.stateName);\n each(elements, function (el) {\n _this.setElementState(el, false);\n });\n };\n return StateBase;\n}(Action);\nexport default StateBase;","import { __extends } from \"tslib\";\nimport { each, isNil, get } from '@antv/util';\nimport { getCurrentElement, getDelegationObject, getElements, getElementValue, getScaleByField, isElementChange, isList } from '../util';\nimport StateBase from './state-base';\nfunction getItem(shape) {\n return get(shape.get('delegateObject'), 'item');\n}\n/**\n * 状态量 Action 的基类,允许多个 Element 同时拥有某个状态\n * @class\n * @ignore\n */\nvar ElementState = /** @class */function (_super) {\n __extends(ElementState, _super);\n function ElementState() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.ignoreListItemStates = ['unchecked'];\n return _this;\n }\n // 是否忽略触发的列表项\n ElementState.prototype.isItemIgnore = function (item, list) {\n var states = this.ignoreListItemStates;\n var filtered = states.filter(function (state) {\n return list.hasState(item, state);\n });\n return !!filtered.length;\n };\n // 设置由组件选项导致的状态变化\n ElementState.prototype.setStateByComponent = function (component, item, enable) {\n var view = this.context.view;\n var field = component.get('field');\n var elements = getElements(view);\n this.setElementsStateByItem(elements, field, item, enable);\n };\n // 处理触发源由 element 导致的状态变化\n ElementState.prototype.setStateByElement = function (element, enable) {\n this.setElementState(element, enable);\n };\n /** 组件的选项是否同 element 匹配 */\n ElementState.prototype.isMathItem = function (element, field, item) {\n var view = this.context.view;\n var scale = getScaleByField(view, field);\n var value = getElementValue(element, field);\n return !isNil(value) && item.name === scale.getText(value);\n };\n ElementState.prototype.setElementsStateByItem = function (elements, field, item, enable) {\n var _this = this;\n each(elements, function (el) {\n if (_this.isMathItem(el, field, item)) {\n el.setState(_this.stateName, enable);\n }\n });\n };\n /** 设置状态是否激活 */\n ElementState.prototype.setStateEnable = function (enable) {\n var element = getCurrentElement(this.context);\n if (element) {\n // 触发源由于 element 导致\n if (isElementChange(this.context)) {\n this.setStateByElement(element, enable);\n }\n } else {\n // 触发源由组件导致\n var delegateObject = getDelegationObject(this.context);\n // 如果触发源时列表,图例、坐标轴\n if (isList(delegateObject)) {\n var item = delegateObject.item,\n component = delegateObject.component;\n if (item && component && !this.isItemIgnore(item, component)) {\n var event_1 = this.context.event.gEvent;\n // 防止闪烁\n if (event_1 && event_1.fromShape && event_1.toShape && getItem(event_1.fromShape) === getItem(event_1.toShape)) {\n return;\n }\n this.setStateByComponent(component, item, enable);\n }\n }\n }\n };\n /**\n * 切换状态\n */\n ElementState.prototype.toggle = function () {\n var element = getCurrentElement(this.context);\n if (element) {\n var hasState = element.hasState(this.stateName);\n this.setElementState(element, !hasState);\n }\n };\n /**\n * 取消当前时间影响的状态\n */\n ElementState.prototype.reset = function () {\n this.setStateEnable(false);\n };\n return ElementState;\n}(StateBase);\nexport default ElementState;","import { __extends } from \"tslib\";\nimport StateAction from './state';\n/**\n * 元素 active 的 Action,允许多个元素同时 active\n * @class\n * @ignore\n */\nvar ElementActive = /** @class */function (_super) {\n __extends(ElementActive, _super);\n function ElementActive() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.stateName = 'active';\n return _this;\n }\n /**\n * Active Element\n */\n ElementActive.prototype.active = function () {\n this.setState();\n };\n return ElementActive;\n}(StateAction);\nexport default ElementActive;","import { __assign, __extends } from \"tslib\";\nimport Action from '../base';\nimport { getCurrentElement, getElementValue, getElementsByField } from '../util';\nimport { deepMix, each, isFunction } from '@antv/util';\n/**\n * Link Elements by color\n *\n * public 方法是对外可用的反馈交互。使用方式,如:element-link-by-color:link, element-link-by-color:unlink, element-link-by-color:clear\n */\nvar LinkByColor = /** @class */function (_super) {\n __extends(LinkByColor, _super);\n function LinkByColor() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.cache = {};\n return _this;\n }\n // 获取颜色对应的 scale\n LinkByColor.prototype.getColorScale = function (view, element) {\n var colorAttr = element.geometry.getAttribute('color');\n if (!colorAttr) {\n return null;\n }\n var scale = view.getScaleByField(colorAttr.getFields()[0]);\n return scale;\n };\n // 获取连接的 path\n LinkByColor.prototype.getLinkPath = function (element, nextElement) {\n var view = this.context.view;\n var isTransposed = view.getCoordinate().isTransposed;\n var bbox = element.shape.getCanvasBBox();\n var nextBBox = nextElement.shape.getCanvasBBox();\n var path = isTransposed ? [['M', bbox.minX, bbox.minY], ['L', nextBBox.minX, nextBBox.maxY], ['L', nextBBox.maxX, nextBBox.maxY], ['L', bbox.maxX, bbox.minY], ['Z']] : [['M', bbox.maxX, bbox.minY], ['L', nextBBox.minX, nextBBox.minY], ['L', nextBBox.minX, nextBBox.maxY], ['L', bbox.maxX, bbox.maxY], ['Z']];\n return path;\n };\n // 添加连接的图形\n LinkByColor.prototype.addLinkShape = function (group, element, nextElement, activeStyle) {\n var style = {\n opacity: 0.4,\n fill: element.shape.attr('fill')\n };\n group.addShape({\n type: 'path',\n attrs: __assign(__assign({}, deepMix({}, style, isFunction(activeStyle) ? activeStyle(style, element) : activeStyle)), {\n path: this.getLinkPath(element, nextElement)\n })\n });\n };\n // 使用图形连接\n LinkByColor.prototype.linkByElement = function (element, activeStyle) {\n var _this = this;\n var view = this.context.view;\n var scale = this.getColorScale(view, element);\n if (!scale) {\n return;\n }\n var value = getElementValue(element, scale.field);\n if (!this.cache[value]) {\n var elements_1 = getElementsByField(view, scale.field, value);\n var linkGroup = this.linkGroup;\n var group_1 = linkGroup.addGroup();\n this.cache[value] = group_1; // 缓存\n var count_1 = elements_1.length;\n each(elements_1, function (el, index) {\n if (index < count_1 - 1) {\n var nextEl = elements_1[index + 1];\n _this.addLinkShape(group_1, el, nextEl, activeStyle);\n }\n });\n }\n };\n // 移除连接\n LinkByColor.prototype.removeLink = function (element) {\n var scale = this.getColorScale(this.context.view, element);\n if (!scale) {\n return;\n }\n var value = getElementValue(element, scale.field);\n if (this.cache[value]) {\n this.cache[value].remove();\n this.cache[value] = null;\n }\n };\n /**\n * 连接 elements\n *\n * @usage\n * registerInteraction('xxx', {\n * start: [\n * {\n * trigger: 'interval:mouseenter',\n * action: 'element-link-by-color:link',\n * arg: {\n * // style: { fill: 'red' }\n * style: (style, element) => ({ fill: 'red' })\n * },\n * },\n * ],\n * });\n */\n LinkByColor.prototype.link = function (args) {\n var context = this.context;\n if (!this.linkGroup) {\n // 不允许被拾取\n this.linkGroup = context.view.foregroundGroup.addGroup({\n id: 'link-by-color-group',\n capture: false\n });\n }\n var element = getCurrentElement(context);\n if (element) {\n this.linkByElement(element, args === null || args === void 0 ? void 0 : args.style);\n }\n };\n /**\n * 取消连接 elements\n */\n LinkByColor.prototype.unlink = function () {\n var element = getCurrentElement(this.context);\n if (element) {\n this.removeLink(element);\n }\n };\n /**\n * 清除所有连接\n */\n LinkByColor.prototype.clear = function () {\n if (this.linkGroup) {\n this.linkGroup.clear();\n }\n this.cache = {};\n };\n /**\n * 销毁\n */\n LinkByColor.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.linkGroup) {\n this.linkGroup.remove();\n }\n };\n return LinkByColor;\n}(Action);\nexport default LinkByColor;","import { __extends } from \"tslib\";\nimport { each } from '@antv/util';\nimport { getElements, getIntersectElements, getMaskedElements, getSiblingMaskElements, getSilbings, isInRecords, isMask } from '../util';\nimport StateBase from './state-base';\n/**\n * @ignore\n * 区域设置状态的基础 Action\n */\nvar ElementRangeState = /** @class */function (_super) {\n __extends(ElementRangeState, _super);\n function ElementRangeState() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.startPoint = null;\n _this.endPoint = null;\n _this.isStarted = false;\n /**\n * 是否作用于当前 view 的 siblings,默认是 false 仅作用于自己\n */\n _this.effectSiblings = false;\n /**\n * 是否受 element 的数据影响,还是受包围盒的影响\n */\n _this.effectByRecord = false;\n return _this;\n }\n // 获取当前的位置\n ElementRangeState.prototype.getCurrentPoint = function () {\n var event = this.context.event;\n return {\n x: event.x,\n y: event.y\n };\n };\n /**\n * 开始,记录开始选中的位置\n */\n ElementRangeState.prototype.start = function () {\n this.clear(); // 开始的时候清理之前的状态\n this.startPoint = this.getCurrentPoint();\n this.isStarted = true;\n };\n ElementRangeState.prototype.getIntersectElements = function () {\n var elements = null;\n if (isMask(this.context)) {\n elements = getMaskedElements(this.context, 10);\n } else {\n var startPoint = this.startPoint;\n var endPoint = this.isStarted ? this.getCurrentPoint() : this.endPoint;\n // 如果没有开始,则不允许范围设置状态,保护性质\n if (!startPoint || !endPoint) {\n return;\n }\n // 计算框选区域\n var box = {\n minX: Math.min(startPoint.x, endPoint.x),\n minY: Math.min(startPoint.y, endPoint.y),\n maxX: Math.max(startPoint.x, endPoint.x),\n maxY: Math.max(startPoint.y, endPoint.y)\n };\n // this.clear(); // 不全部清理,会导致闪烁\n var view = this.context.view;\n elements = getIntersectElements(view, box);\n }\n return elements;\n };\n /**\n * 选中\n */\n ElementRangeState.prototype.setStateEnable = function (enable) {\n if (this.effectSiblings && !this.effectByRecord) {\n this.setSiblingsState(enable);\n } else {\n var allElements = getElements(this.context.view);\n var elements = this.getIntersectElements();\n if (elements && elements.length) {\n if (this.effectByRecord) {\n this.setSiblingsStateByRecord(elements, enable);\n } else {\n this.setElementsState(elements, enable, allElements);\n }\n } else {\n this.clear();\n }\n }\n };\n // 根据选中的 element 的数据进行设置状态\n ElementRangeState.prototype.setSiblingsStateByRecord = function (elements, enable) {\n var _this = this;\n var view = this.context.view;\n var siblings = getSilbings(view);\n var records = elements.map(function (el) {\n return el.getModel().data;\n });\n var xFiled = view.getXScale().field;\n var yField = view.getYScales()[0].field;\n each(siblings, function (sibling) {\n var allElements = getElements(sibling);\n var effectElements = allElements.filter(function (el) {\n var record = el.getModel().data;\n return isInRecords(records, record, xFiled, yField);\n });\n _this.setElementsState(effectElements, enable, allElements);\n });\n };\n // 设置兄弟 view 的状态\n ElementRangeState.prototype.setSiblingsState = function (enable) {\n var _this = this;\n var view = this.context.view;\n var siblings = getSilbings(view);\n if (isMask(this.context)) {\n // 受 mask 影响\n each(siblings, function (sibling) {\n var allElements = getElements(sibling);\n var effectElements = getSiblingMaskElements(_this.context, sibling, 10);\n if (effectElements && effectElements.length) {\n _this.setElementsState(effectElements, enable, allElements);\n } else {\n _this.clearViewState(sibling);\n }\n });\n }\n };\n ElementRangeState.prototype.setElementsState = function (elements, enable, allElements) {\n var _this = this;\n each(allElements, function (el) {\n if (!elements.includes(el)) {\n _this.setElementState(el, false);\n } else {\n _this.setElementState(el, enable);\n }\n });\n };\n /**\n * 结束\n */\n ElementRangeState.prototype.end = function () {\n this.isStarted = false;\n this.endPoint = this.getCurrentPoint();\n };\n // 复写 clear\n ElementRangeState.prototype.clear = function () {\n var _this = this;\n var view = this.context.view;\n // 判断是否影响 siblings\n if (this.effectSiblings) {\n var siblings = getSilbings(view);\n each(siblings, function (sibling) {\n _this.clearViewState(sibling);\n });\n } else {\n this.clearViewState(view);\n }\n };\n return ElementRangeState;\n}(StateBase);\nexport default ElementRangeState;","import { __extends } from \"tslib\";\nimport ElementRangeState from './range-state';\n/**\n * @ignore\n * 图表元素区域 Active 的 Action\n */\nvar ElementRangeActive = /** @class */function (_super) {\n __extends(ElementRangeActive, _super);\n function ElementRangeActive() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.stateName = 'active';\n return _this;\n }\n /**\n * 图表元素 Active\n */\n ElementRangeActive.prototype.active = function () {\n this.setState();\n };\n return ElementRangeActive;\n}(ElementRangeState);\nexport default ElementRangeActive;","import { __extends } from \"tslib\";\nimport { getCurrentElement, isElementChange } from '../util';\nimport StateBase from './state-base';\n/**\n * 单状态量的 Action 基类\n * @class\n * @ignore\n */\nvar ElementSingleState = /** @class */function (_super) {\n __extends(ElementSingleState, _super);\n function ElementSingleState() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ElementSingleState.prototype.setStateEnable = function (enable) {\n var element = getCurrentElement(this.context);\n if (element) {\n // 在同一个 element 内部移动,忽视 label 和 shape 之间\n if (!isElementChange(this.context)) {\n return;\n }\n // 仅支持单个状态量的元素,只能由 element 触发\n if (enable) {\n this.clear();\n this.setElementState(element, true);\n } else if (this.hasState(element)) {\n this.setElementState(element, false);\n }\n }\n };\n /**\n * 切换选中,只允许选中一个\n */\n ElementSingleState.prototype.toggle = function () {\n var element = getCurrentElement(this.context);\n if (element) {\n var hasState = this.hasState(element); // 提前获取状态\n if (!hasState) {\n this.clear();\n }\n this.setElementState(element, !hasState);\n }\n };\n /**\n * 取消当前时间影响的状态\n */\n ElementSingleState.prototype.reset = function () {\n this.setStateEnable(false);\n };\n return ElementSingleState;\n}(StateBase);\nexport default ElementSingleState;","import { __extends } from \"tslib\";\nimport ElementSingleState from './single-state';\n/**\n * @ignore\n * 仅允许单个 Element Active 的 Action\n */\nvar ElementSingleActive = /** @class */function (_super) {\n __extends(ElementSingleActive, _super);\n function ElementSingleActive() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.stateName = 'active';\n return _this;\n }\n /**\n * 当前事件相关的 Element Active\n */\n ElementSingleActive.prototype.active = function () {\n this.setState();\n };\n return ElementSingleActive;\n}(ElementSingleState);\nexport default ElementSingleActive;","import { each } from '@antv/util';\nimport { getElements } from '../util';\nvar STATUS_UNACTIVE = 'inactive';\nvar STATUS_ACTIVE = 'active';\n/**\n * @ignore\n * 清理 highlight 效果\n * @param view View 或者 Chart\n */\nexport function clearHighlight(view) {\n var elements = getElements(view);\n each(elements, function (el) {\n if (el.hasState(STATUS_ACTIVE)) {\n el.setState(STATUS_ACTIVE, false);\n }\n if (el.hasState(STATUS_UNACTIVE)) {\n el.setState(STATUS_UNACTIVE, false);\n }\n });\n}\n/**\n * @ignore\n * 设置多个元素的 highlight\n * @param elements 元素集合\n * @param callback 设置回调函数\n * @param enable 设置或者取消\n */\nexport function setHighlightBy(elements, callback, enable) {\n each(elements, function (el) {\n // 需要处理 active 和 unactive 的互斥\n if (callback(el)) {\n if (el.hasState(STATUS_UNACTIVE)) {\n el.setState(STATUS_UNACTIVE, false);\n }\n el.setState(STATUS_ACTIVE, enable);\n } else {\n if (el.hasState(STATUS_ACTIVE)) {\n el.setState(STATUS_ACTIVE, false);\n }\n el.setState(STATUS_UNACTIVE, enable);\n }\n });\n}","import { __extends } from \"tslib\";\nimport { each } from '@antv/util';\nimport { getElements, getElementsByState } from '../util';\nimport { clearHighlight } from './highlight-util';\nimport StateAction from './state';\nimport { ELEMENT_STATE } from '../../../constant';\nexport var STATUS_UNACTIVE = ELEMENT_STATE.INACTIVE;\nexport var STATUS_ACTIVE = ELEMENT_STATE.ACTIVE;\n/**\n * @ignore\n * highlight,指定图形高亮,其他图形变暗\n */\nvar ElementHighlight = /** @class */function (_super) {\n __extends(ElementHighlight, _super);\n function ElementHighlight() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.stateName = STATUS_ACTIVE;\n return _this;\n }\n // 多个元素设置、取消 highlight\n ElementHighlight.prototype.setElementsStateByItem = function (elements, field, item, enable) {\n var _this = this;\n var callback = function callback(el) {\n return _this.isMathItem(el, field, item);\n };\n this.setHighlightBy(elements, callback, enable);\n };\n // 设置元素的 highlight\n ElementHighlight.prototype.setElementHighlight = function (el, callback) {\n if (callback(el)) {\n if (el.hasState(STATUS_UNACTIVE)) {\n el.setState(STATUS_UNACTIVE, false);\n }\n el.setState(STATUS_ACTIVE, true);\n } else if (!el.hasState(STATUS_ACTIVE)) {\n el.setState(STATUS_UNACTIVE, true);\n }\n };\n ElementHighlight.prototype.setHighlightBy = function (elements, callback, enable) {\n var _this = this;\n if (enable) {\n // 如果是设置 highlight ,则将匹配的 element 设置成 active,\n // 其他如果不是 active,则设置成 unactive\n each(elements, function (el) {\n _this.setElementHighlight(el, callback);\n });\n } else {\n // 如果取消 highlight,则要检测是否全部取消 highlight\n var activeElements = getElementsByState(this.context.view, STATUS_ACTIVE);\n var allCancel_1 = true;\n // 检测所有 activeElements 都要取消 highlight\n each(activeElements, function (el) {\n if (!callback(el)) {\n allCancel_1 = false;\n return false;\n }\n });\n if (allCancel_1) {\n // 都要取消,则取消所有的 active,unactive 状态\n this.clear();\n } else {\n // 如果不是都要取消 highlight, 则设置匹配的 element 的状态为 unactive\n // 其他 element 状态不变\n each(elements, function (el) {\n if (callback(el)) {\n if (el.hasState(STATUS_ACTIVE)) {\n el.setState(STATUS_ACTIVE, false);\n }\n el.setState(STATUS_UNACTIVE, true);\n }\n });\n }\n }\n };\n // 单个元素设置和取消 highlight\n ElementHighlight.prototype.setElementState = function (element, enable) {\n var view = this.context.view;\n var elements = getElements(view);\n this.setHighlightBy(elements, function (el) {\n return element === el;\n }, enable);\n };\n ElementHighlight.prototype.highlight = function () {\n this.setState();\n };\n // 清理掉所有的 active, unactive 状态\n ElementHighlight.prototype.clear = function () {\n var view = this.context.view;\n clearHighlight(view);\n };\n return ElementHighlight;\n}(StateAction);\nexport default ElementHighlight;","import { __extends } from \"tslib\";\nimport { Event } from '../../../chart';\nimport { clearHighlight, setHighlightBy } from './highlight-util';\nimport ElementRangeState from './range-state';\nvar EVENTS;\n(function (EVENTS) {\n EVENTS[\"BEFORE_HIGHLIGHT\"] = \"element-range-highlight:beforehighlight\";\n EVENTS[\"AFTER_HIGHLIGHT\"] = \"element-range-highlight:afterhighlight\";\n EVENTS[\"BEFORE_CLEAR\"] = \"element-range-highlight:beforeclear\";\n EVENTS[\"AFTER_CLEAR\"] = \"element-range-highlight:afterclear\";\n})(EVENTS || (EVENTS = {}));\nexport { EVENTS as ELEMENT_RANGE_HIGHLIGHT_EVENTS };\n/**\n * @ignore\n * 区域 highlight 的 Action\n */\nvar ElementRangeHighlight = /** @class */function (_super) {\n __extends(ElementRangeHighlight, _super);\n function ElementRangeHighlight() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.stateName = 'active';\n return _this;\n }\n // 清理掉所有的 active, unactive 状态\n ElementRangeHighlight.prototype.clearViewState = function (view) {\n clearHighlight(view);\n };\n /**\n * 设置 highlight\n */\n ElementRangeHighlight.prototype.highlight = function () {\n var _a = this.context,\n view = _a.view,\n event = _a.event;\n var elements = this.getIntersectElements();\n var payload = {\n view: view,\n event: event,\n highlightElements: elements\n };\n view.emit(EVENTS.BEFORE_HIGHLIGHT, Event.fromData(view, EVENTS.BEFORE_HIGHLIGHT, payload));\n this.setState();\n view.emit(EVENTS.AFTER_HIGHLIGHT, Event.fromData(view, EVENTS.AFTER_HIGHLIGHT, payload));\n };\n /**\n * @overrider 添加事件\n */\n ElementRangeHighlight.prototype.clear = function () {\n var view = this.context.view;\n view.emit(EVENTS.BEFORE_CLEAR, Event.fromData(view, EVENTS.BEFORE_CLEAR, {}));\n _super.prototype.clear.call(this);\n view.emit(EVENTS.AFTER_CLEAR, Event.fromData(view, EVENTS.AFTER_CLEAR, {}));\n };\n ElementRangeHighlight.prototype.setElementsState = function (elements, enable, allElements) {\n setHighlightBy(allElements, function (el) {\n return elements.indexOf(el) >= 0;\n }, enable);\n };\n return ElementRangeHighlight;\n}(ElementRangeState);\nexport default ElementRangeHighlight;","import { __extends } from \"tslib\";\nimport { getElements, getElementValue } from '../util';\nimport Highlight from './highlight';\n/**\n * Highlight color\n * @ignore\n */\nvar HighlightColor = /** @class */function (_super) {\n __extends(HighlightColor, _super);\n function HighlightColor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n HighlightColor.prototype.setStateByElement = function (element, enable) {\n var view = this.context.view;\n var colorAttr = element.geometry.getAttribute('color');\n if (!colorAttr) {\n return;\n }\n var scale = view.getScaleByField(colorAttr.getFields()[0]);\n var value = getElementValue(element, scale.field);\n var elements = getElements(view);\n var highlightElements = elements.filter(function (el) {\n return getElementValue(el, scale.field) === value;\n });\n this.setHighlightBy(elements, function (el) {\n return highlightElements.includes(el);\n }, enable);\n };\n return HighlightColor;\n}(Highlight);\nexport default HighlightColor;","import { __extends } from \"tslib\";\nimport { getElements, getElementValue, getCurrentElement } from '../util';\nimport Highlight, { STATUS_ACTIVE, STATUS_UNACTIVE } from './highlight';\n/**\n * Highlight x\n * @ignore\n */\nvar HighlightX = /** @class */function (_super) {\n __extends(HighlightX, _super);\n function HighlightX() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // 不允许多选\n HighlightX.prototype.setElementHighlight = function (el, callback) {\n if (callback(el)) {\n if (el.hasState(STATUS_UNACTIVE)) {\n el.setState(STATUS_UNACTIVE, false);\n }\n el.setState(STATUS_ACTIVE, true);\n } else {\n el.setState(STATUS_UNACTIVE, true);\n if (el.hasState(STATUS_ACTIVE)) {\n el.setState(STATUS_ACTIVE, false);\n }\n }\n };\n HighlightX.prototype.setStateByElement = function (element, enable) {\n var view = this.context.view;\n var scale = view.getXScale();\n var value = getElementValue(element, scale.field);\n var elements = getElements(view);\n var highlightElements = elements.filter(function (el) {\n return getElementValue(el, scale.field) === value;\n });\n this.setHighlightBy(elements, function (el) {\n return highlightElements.includes(el);\n }, enable);\n };\n /**\n * 切换状态\n */\n HighlightX.prototype.toggle = function () {\n var element = getCurrentElement(this.context);\n if (element) {\n var hasState = element.hasState(this.stateName);\n this.setStateByElement(element, !hasState);\n }\n };\n return HighlightX;\n}(Highlight);\nexport default HighlightX;","import { __extends } from \"tslib\";\nimport { getElements } from '../util';\nimport { clearHighlight, setHighlightBy } from './highlight-util';\nimport ElementSingleState from './single-state';\n/**\n * @ignore\n * 单个 Element Highlight 的 Action\n */\nvar ElementSingleHighlight = /** @class */function (_super) {\n __extends(ElementSingleHighlight, _super);\n function ElementSingleHighlight() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.stateName = 'active';\n return _this;\n }\n /**\n * Element Highlight\n */\n ElementSingleHighlight.prototype.highlight = function () {\n this.setState();\n };\n ElementSingleHighlight.prototype.setElementState = function (element, enable) {\n var view = this.context.view;\n var elements = getElements(view);\n setHighlightBy(elements, function (el) {\n return element === el;\n }, enable);\n };\n // 清理掉所有的 active, unactive 状态\n ElementSingleHighlight.prototype.clear = function () {\n var view = this.context.view;\n clearHighlight(view);\n };\n return ElementSingleHighlight;\n}(ElementSingleState);\nexport default ElementSingleHighlight;","import { __extends } from \"tslib\";\nimport ElementRangeState from './range-state';\n/**\n * @ignore\n * 区域选中的 Action\n */\nvar ElementRangeSelected = /** @class */function (_super) {\n __extends(ElementRangeSelected, _super);\n function ElementRangeSelected() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.stateName = 'selected';\n return _this;\n }\n /**\n * 选中\n */\n ElementRangeSelected.prototype.selected = function () {\n this.setState();\n };\n return ElementRangeSelected;\n}(ElementRangeState);\nexport default ElementRangeSelected;","import { __extends } from \"tslib\";\nimport StateAction from './state';\n/**\n * @ignore\n * 允许多选的 Action\n * @class\n */\nvar ElementMultipleSelected = /** @class */function (_super) {\n __extends(ElementMultipleSelected, _super);\n function ElementMultipleSelected() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.stateName = 'selected';\n return _this;\n }\n /**\n * 选中节点,允许多选\n */\n ElementMultipleSelected.prototype.selected = function () {\n this.setState();\n };\n return ElementMultipleSelected;\n}(StateAction);\nexport default ElementMultipleSelected;","import { __extends } from \"tslib\";\nimport ElementSingleState from './single-state';\n/**\n * @ignore\n * 单选的 Action\n */\nvar ElementSingleSelected = /** @class */function (_super) {\n __extends(ElementSingleSelected, _super);\n function ElementSingleSelected() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.stateName = 'selected';\n return _this;\n }\n /**\n * 选中\n */\n ElementSingleSelected.prototype.selected = function () {\n this.setState();\n };\n return ElementSingleSelected;\n}(ElementSingleState);\nexport default ElementSingleSelected;","import { __extends } from \"tslib\";\nimport { each } from '@antv/util';\nimport Action from '../base';\nimport { getComponents } from '../util';\nimport { getCurrentElement, getDelegationObject, getElementValue, isList, getScaleByField } from '../util';\n/**\n * 列表项状态 Action 的基础类\n * @class\n * @ignore\n */\nvar ListState = /** @class */function (_super) {\n __extends(ListState, _super);\n function ListState() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.stateName = '';\n _this.ignoreItemStates = [];\n return _this;\n }\n /** 获取触发的列表组件 */\n ListState.prototype.getTriggerListInfo = function () {\n var delegateObject = getDelegationObject(this.context);\n var info = null;\n if (isList(delegateObject)) {\n info = {\n item: delegateObject.item,\n list: delegateObject.component\n };\n }\n return info;\n };\n // 获取所有允许执行 Action 的组件\n ListState.prototype.getAllowComponents = function () {\n var _this = this;\n var view = this.context.view;\n var components = getComponents(view);\n var rst = [];\n each(components, function (component) {\n if (component.isList() && _this.allowSetStateByElement(component)) {\n rst.push(component);\n }\n });\n return rst;\n };\n /** 是否存在指定的状态 */\n ListState.prototype.hasState = function (list, item) {\n return list.hasState(item, this.stateName);\n };\n /** 清理组件的状态 */\n ListState.prototype.clearAllComponentsState = function () {\n var _this = this;\n var components = this.getAllowComponents();\n each(components, function (component) {\n component.clearItemsState(_this.stateName);\n });\n };\n // 不是所有的 component 都能进行 active,目前仅支持分类 scale 对应的组件\n ListState.prototype.allowSetStateByElement = function (component) {\n var field = component.get('field');\n if (!field) {\n return false;\n }\n if (this.cfg && this.cfg.componentNames) {\n var name_1 = component.get('name');\n // 如果配置了限制的 component name,则要进行检测\n if (this.cfg.componentNames.indexOf(name_1) === -1) {\n return false;\n }\n }\n var view = this.context.view;\n var scale = getScaleByField(view, field);\n return scale && scale.isCategory;\n };\n // 检测是否允许触发对应的状态改变事件\n ListState.prototype.allowSetStateByItem = function (item, list) {\n var ignoreStates = this.ignoreItemStates;\n if (ignoreStates.length) {\n var filterStates = ignoreStates.filter(function (state) {\n return list.hasState(item, state);\n });\n return filterStates.length === 0;\n }\n return true; // 没有定义忽略的状态时,允许\n };\n // 设置组件的 item active\n ListState.prototype.setStateByElement = function (component, element, enable) {\n var field = component.get('field');\n var view = this.context.view;\n var scale = getScaleByField(view, field);\n var value = getElementValue(element, field);\n var text = scale.getText(value);\n this.setItemsState(component, text, enable);\n };\n // 设置状态\n ListState.prototype.setStateEnable = function (enable) {\n var _this = this;\n var element = getCurrentElement(this.context);\n if (element) {\n // trigger by element\n var components = this.getAllowComponents();\n each(components, function (component) {\n _this.setStateByElement(component, element, enable);\n });\n } else {\n // 被组件触发\n var delegateObject = getDelegationObject(this.context);\n if (isList(delegateObject)) {\n var item = delegateObject.item,\n component = delegateObject.component;\n if (this.allowSetStateByElement(component) && this.allowSetStateByItem(item, component)) {\n this.setItemState(component, item, enable);\n }\n }\n }\n };\n // 多个 item 设置状态\n ListState.prototype.setItemsState = function (list, name, enable) {\n var _this = this;\n var items = list.getItems();\n each(items, function (item) {\n if (item.name === name) {\n _this.setItemState(list, item, enable);\n }\n });\n };\n // 单个 item 设置状态\n ListState.prototype.setItemState = function (list, item, enable) {\n list.setItemState(item, this.stateName, enable);\n };\n /**\n * 设置状态\n */\n ListState.prototype.setState = function () {\n this.setStateEnable(true);\n };\n /**\n * 取消状态\n */\n ListState.prototype.reset = function () {\n this.setStateEnable(false);\n };\n /**\n * 切换状态\n */\n ListState.prototype.toggle = function () {\n var triggerInfo = this.getTriggerListInfo();\n if (triggerInfo && triggerInfo.item) {\n var list = triggerInfo.list,\n item = triggerInfo.item;\n var enable = this.hasState(list, item);\n this.setItemState(list, item, !enable);\n }\n };\n /**\n * 取消状态\n */\n ListState.prototype.clear = function () {\n var triggerInfo = this.getTriggerListInfo();\n if (triggerInfo) {\n triggerInfo.list.clearItemsState(this.stateName);\n } else {\n this.clearAllComponentsState();\n }\n };\n return ListState;\n}(Action);\nexport default ListState;","import { __extends } from \"tslib\";\nimport ListState from './list-state';\n/**\n * 列表项(图例项、坐标轴文本)激活的 Action\n * @class\n * @ignore\n */\nvar ListActive = /** @class */function (_super) {\n __extends(ListActive, _super);\n function ListActive() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.stateName = 'active';\n return _this;\n }\n /**\n * 激活选项\n */\n ListActive.prototype.active = function () {\n this.setState();\n };\n return ListActive;\n}(ListState);\nexport default ListActive;","import { each } from '@antv/util';\nvar STATUS_UNACTIVE = 'inactive';\nvar STATUS_ACTIVE = 'active';\n/**\n * 清理图例的 Highlight 效果\n * @param list 列表组件,图例或者坐标轴\n * @ignore\n */\nexport function clearList(list) {\n var items = list.getItems();\n each(items, function (item) {\n if (list.hasState(item, STATUS_ACTIVE)) {\n list.setItemState(item, STATUS_ACTIVE, false);\n }\n if (list.hasState(item, STATUS_UNACTIVE)) {\n list.setItemState(item, STATUS_UNACTIVE, false);\n }\n });\n}","import { __extends } from \"tslib\";\nimport { each } from '@antv/util';\nimport { clearList } from './list-highlight-util';\nimport ListState from './list-state';\nvar STATUS_UNACTIVE = 'inactive';\nvar STATUS_ACTIVE = 'active';\n/**\n * highlight Action 的效果是 active 和 inactive 两个状态的组合\n * @class\n * @ignore\n */\nvar ListHighlight = /** @class */function (_super) {\n __extends(ListHighlight, _super);\n function ListHighlight() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.stateName = STATUS_ACTIVE;\n _this.ignoreItemStates = ['unchecked']; // 当存在 unchecked 状态时不触发\n return _this;\n }\n // 如果 item.name 匹配,则设置 highlight 以及取消\n ListHighlight.prototype.setItemsState = function (list, name, enable) {\n this.setHighlightBy(list, function (item) {\n return item.name === name;\n }, enable);\n };\n // 单个 item 设置状态\n ListHighlight.prototype.setItemState = function (list, item, enable) {\n var items = list.getItems();\n this.setHighlightBy(list, function (el) {\n return el === item;\n }, enable);\n };\n // 根据条件设置 highlight\n ListHighlight.prototype.setHighlightBy = function (list, callback, enable) {\n var items = list.getItems();\n if (enable) {\n // 设置 highlight 时,保留之前已经 Highlight 的项\n each(items, function (item) {\n if (callback(item)) {\n if (list.hasState(item, STATUS_UNACTIVE)) {\n list.setItemState(item, STATUS_UNACTIVE, false);\n }\n list.setItemState(item, STATUS_ACTIVE, true);\n } else if (!list.hasState(item, STATUS_ACTIVE)) {\n list.setItemState(item, STATUS_UNACTIVE, true);\n }\n });\n } else {\n var activeItems = list.getItemsByState(STATUS_ACTIVE);\n var allCancel_1 = true;\n // 检测 activeItems 是否要全部取消\n each(activeItems, function (item) {\n if (!callback(item)) {\n allCancel_1 = false;\n return false;\n }\n });\n if (allCancel_1) {\n this.clear();\n } else {\n // 如果不是都要取消 highlight, 则设置匹配的 element 的状态为 unactive\n // 其他 element 状态不变\n each(items, function (item) {\n if (callback(item)) {\n if (list.hasState(item, STATUS_ACTIVE)) {\n list.setItemState(item, STATUS_ACTIVE, false);\n }\n list.setItemState(item, STATUS_UNACTIVE, true);\n }\n });\n }\n }\n };\n /**\n * highlight 图例项(坐标轴文本)\n */\n ListHighlight.prototype.highlight = function () {\n this.setState();\n };\n // 需要全部清理 active 和 unactive\n ListHighlight.prototype.clear = function () {\n var triggerInfo = this.getTriggerListInfo();\n if (triggerInfo) {\n clearList(triggerInfo.list);\n } else {\n // 如果不是 component 的事件触发,则所有满足触发条件的组件都清除该状态\n var components = this.getAllowComponents();\n each(components, function (component) {\n component.clearItemsState(STATUS_ACTIVE);\n component.clearItemsState(STATUS_UNACTIVE);\n });\n }\n };\n return ListHighlight;\n}(ListState);\nexport default ListHighlight;","import { __extends } from \"tslib\";\nimport ListState from './list-state';\n/**\n * 图例项和坐标轴文本选中的 Action\n * @ignore\n */\nvar ListSelected = /** @class */function (_super) {\n __extends(ListSelected, _super);\n function ListSelected() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.stateName = 'selected';\n return _this;\n }\n ListSelected.prototype.selected = function () {\n this.setState();\n };\n return ListSelected;\n}(ListState);\nexport default ListSelected;","import { __extends } from \"tslib\";\nimport ListState from './list-state';\n/**\n * 图例项取消勾选的 Action\n * @ignore\n */\nvar ListUnchecked = /** @class */function (_super) {\n __extends(ListUnchecked, _super);\n function ListUnchecked() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.stateName = 'unchecked';\n return _this;\n }\n /**\n * 取消勾选\n */\n ListUnchecked.prototype.unchecked = function () {\n this.setState();\n };\n return ListUnchecked;\n}(ListState);\nexport default ListUnchecked;","import { __extends } from \"tslib\";\nimport { each, some } from '@antv/util';\nimport ListState from './list-state';\nvar STATUS_UNCHECKED = 'unchecked';\nvar STATUS_CHECKED = 'checked';\n/**\n * checked Action\n * 提供三个对外方法\n * 1. toggle 切换状态\n * 2. checked 选中\n * 3. reset 清除重置\n */\nvar ListChecked = /** @class */function (_super) {\n __extends(ListChecked, _super);\n function ListChecked() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.stateName = STATUS_CHECKED;\n return _this;\n }\n // 单个 item 设置状态\n ListChecked.prototype.setItemState = function (list, item, enable) {\n this.setCheckedBy(list, function (el) {\n return el === item;\n }, enable);\n };\n // 根据条件设置 checked\n ListChecked.prototype.setCheckedBy = function (list, callback, enable) {\n var items = list.getItems();\n if (enable) {\n // 设置 checked 时,保留之前已经 checked 的项\n each(items, function (item) {\n if (callback(item)) {\n if (list.hasState(item, STATUS_UNCHECKED)) {\n list.setItemState(item, STATUS_UNCHECKED, false);\n }\n list.setItemState(item, STATUS_CHECKED, true);\n } else if (!list.hasState(item, STATUS_CHECKED)) {\n list.setItemState(item, STATUS_UNCHECKED, true);\n }\n });\n }\n };\n /**\n * 切换状态.\n * 1. 当全部选中的时候 或者 当前 item 未选中时,进行激活操作\n * 2. 否则,重置\n * @override\n */\n ListChecked.prototype.toggle = function () {\n var triggerInfo = this.getTriggerListInfo();\n if (triggerInfo && triggerInfo.item) {\n var list_1 = triggerInfo.list,\n item = triggerInfo.item;\n // 不知道 🤷‍♀️ 只认 unchecked status\n var allChecked = !some(list_1.getItems(), function (t) {\n return list_1.hasState(t, STATUS_UNCHECKED);\n });\n //\n if (allChecked || list_1.hasState(item, STATUS_UNCHECKED)) {\n this.setItemState(list_1, item, true);\n } else {\n this.reset();\n }\n }\n };\n /**\n * checked 图例项\n */\n ListChecked.prototype.checked = function () {\n this.setState();\n };\n /**\n * 重置,需要全部清理 checked 和 unchecked\n */\n ListChecked.prototype.reset = function () {\n var components = this.getAllowComponents();\n each(components, function (component) {\n component.clearItemsState(STATUS_CHECKED);\n component.clearItemsState(STATUS_UNCHECKED);\n });\n };\n return ListChecked;\n}(ListState);\nexport default ListChecked;","import { __extends, __values } from \"tslib\";\nimport ListState from './list-state';\nvar STATUS_UNCHECKED = 'unchecked';\nvar ListFocus = /** @class */function (_super) {\n __extends(ListFocus, _super);\n function ListFocus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ListFocus.prototype.toggle = function () {\n var e_1, _a, e_2, _b, e_3, _c, e_4, _d;\n var triggerInfo = this.getTriggerListInfo();\n if (triggerInfo === null || triggerInfo === void 0 ? void 0 : triggerInfo.item) {\n var list_1 = triggerInfo.list,\n clickedItem = triggerInfo.item;\n var items = list_1.getItems();\n var checkedItems = items.filter(function (t) {\n return !list_1.hasState(t, STATUS_UNCHECKED);\n });\n var uncheckedItems = items.filter(function (t) {\n return list_1.hasState(t, STATUS_UNCHECKED);\n });\n var checkedItem = checkedItems[0];\n /**\n * 1. 初始化,全部 checked。此时,点击 radio, clickItem 进入聚焦\n * 2. 当前只选中一个\n * 2.1 且选中 item 等于 clickItem,退出聚焦,全部重新选中\n * 2.2 替换聚焦的 item\n * 3. 其它,同 2.2\n */\n if (items.length === checkedItems.length) {\n try {\n for (var items_1 = __values(items), items_1_1 = items_1.next(); !items_1_1.done; items_1_1 = items_1.next()) {\n var item = items_1_1.value;\n list_1.setItemState(item, STATUS_UNCHECKED, item.id !== clickedItem.id);\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (items_1_1 && !items_1_1.done && (_a = items_1.return)) _a.call(items_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n } else if (items.length - uncheckedItems.length === 1) {\n if (checkedItem.id === clickedItem.id) {\n try {\n for (var items_2 = __values(items), items_2_1 = items_2.next(); !items_2_1.done; items_2_1 = items_2.next()) {\n var item = items_2_1.value;\n list_1.setItemState(item, STATUS_UNCHECKED, false);\n }\n } catch (e_2_1) {\n e_2 = {\n error: e_2_1\n };\n } finally {\n try {\n if (items_2_1 && !items_2_1.done && (_b = items_2.return)) _b.call(items_2);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n } else {\n try {\n for (var items_3 = __values(items), items_3_1 = items_3.next(); !items_3_1.done; items_3_1 = items_3.next()) {\n var item = items_3_1.value;\n list_1.setItemState(item, STATUS_UNCHECKED, item.id !== clickedItem.id);\n }\n } catch (e_3_1) {\n e_3 = {\n error: e_3_1\n };\n } finally {\n try {\n if (items_3_1 && !items_3_1.done && (_c = items_3.return)) _c.call(items_3);\n } finally {\n if (e_3) throw e_3.error;\n }\n }\n }\n } else {\n try {\n for (var items_4 = __values(items), items_4_1 = items_4.next(); !items_4_1.done; items_4_1 = items_4.next()) {\n var item = items_4_1.value;\n list_1.setItemState(item, STATUS_UNCHECKED, item.id !== clickedItem.id);\n }\n } catch (e_4_1) {\n e_4 = {\n error: e_4_1\n };\n } finally {\n try {\n if (items_4_1 && !items_4_1.done && (_d = items_4.return)) _d.call(items_4);\n } finally {\n if (e_4) throw e_4.error;\n }\n }\n }\n }\n };\n return ListFocus;\n}(ListState);\nexport default ListFocus;","import { __assign, __extends } from \"tslib\";\nimport ListState from './list-state';\nimport { isEqual } from '@antv/util';\nimport { TOOLTIP_CSS_CONST } from '@antv/component';\nimport { HtmlTooltip } from '../../../dependents';\nvar STATUS_SHOW = 'showRadio';\nvar TIP_ID = 'legend-radio-tip';\nvar ListRadio = /** @class */function (_super) {\n __extends(ListRadio, _super);\n function ListRadio() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.timeStamp = 0;\n return _this;\n }\n ListRadio.prototype.show = function () {\n var triggerInfo = this.getTriggerListInfo();\n if (triggerInfo === null || triggerInfo === void 0 ? void 0 : triggerInfo.item) {\n var list = triggerInfo.list,\n item = triggerInfo.item;\n list.setItemState(item, STATUS_SHOW, true);\n }\n };\n ListRadio.prototype.hide = function () {\n var triggerInfo = this.getTriggerListInfo();\n if (triggerInfo === null || triggerInfo === void 0 ? void 0 : triggerInfo.item) {\n var list = triggerInfo.list,\n item = triggerInfo.item;\n list.setItemState(item, STATUS_SHOW, false);\n }\n };\n ListRadio.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.tooltip && this.tooltip.destroy();\n };\n /**\n * 显示 Tooltip (展示在上方)\n * @returns\n */\n ListRadio.prototype.showTip = function () {\n var context = this.context;\n var ev = context.event;\n var lastTimeStamp = this.timeStamp;\n var timeStamp = +new Date();\n var target = this.context.event.target;\n if (timeStamp - lastTimeStamp > 16 && target.get('name') === 'legend-item-radio') {\n var preLoc = this.location;\n var curLoc = {\n x: ev.x,\n y: ev.y\n };\n this.timeStamp = timeStamp;\n this.location = curLoc;\n if (!preLoc || !isEqual(preLoc, curLoc)) {\n this.showTooltip(curLoc);\n }\n }\n };\n /**\n * 隐藏 Tooltip。\n * @returns\n */\n ListRadio.prototype.hideTip = function () {\n this.hideTooltip();\n this.location = null;\n };\n ListRadio.prototype.showTooltip = function (curLoc) {\n var context = this.context;\n var ev = context.event;\n var target = ev.target;\n if (target && target.get('tip')) {\n if (!this.tooltip) {\n this.renderTooltip(); // 延迟生成\n }\n // 展示 tooltip\n var _a = context.view.getCanvas().get('el').getBoundingClientRect(),\n offsetX = _a.x,\n offsetY = _a.y;\n this.tooltip.update(__assign(__assign({\n title: target.get('tip')\n }, curLoc), {\n x: curLoc.x + offsetX,\n y: curLoc.y + offsetY\n }));\n this.tooltip.show();\n }\n };\n ListRadio.prototype.hideTooltip = function () {\n this.tooltip && this.tooltip.hide();\n };\n ListRadio.prototype.renderTooltip = function () {\n var _a;\n var tooltipStyles = (_a = {}, _a[TOOLTIP_CSS_CONST.CONTAINER_CLASS] = {\n padding: '6px 8px',\n transform: 'translate(-50%, -80%)',\n background: 'rgba(0,0,0,0.75)',\n color: '#fff',\n 'border-radius': '2px',\n // 避免遮挡,如果还不够的话,再考虑开放用户配置\n 'z-index': 100\n }, _a[TOOLTIP_CSS_CONST.TITLE_CLASS] = {\n 'font-size': '12px',\n 'line-height': '14px',\n 'margin-bottom': 0,\n 'word-break': 'break-all'\n }, _a);\n if (document.getElementById(TIP_ID)) {\n document.body.removeChild(document.getElementById(TIP_ID));\n }\n var tooltip = new HtmlTooltip({\n parent: document.body,\n // tooltip 限制的区域\n region: null,\n visible: false,\n crosshairs: null,\n domStyles: tooltipStyles,\n containerId: TIP_ID\n });\n tooltip.init();\n tooltip.setCapture(false); // 不允许捕获事件\n this.tooltip = tooltip;\n };\n return ListRadio;\n}(ListState);\nexport default ListRadio;","import { __assign, __extends } from \"tslib\";\nimport { deepMix, each } from '@antv/util';\nimport Action from '../base';\n/**\n * @ignore\n * 辅助框 Action 的基类\n */\nvar MaskBase = /** @class */function (_super) {\n __extends(MaskBase, _super);\n function MaskBase() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // mask 图形\n _this.maskShape = null;\n // 组成 mask 的各个点\n _this.points = [];\n // 开始 mask 的标记\n _this.starting = false;\n // 开始移动的标记\n _this.moving = false;\n _this.preMovePoint = null;\n _this.shapeType = 'path';\n return _this;\n }\n // 获取当前的位置\n MaskBase.prototype.getCurrentPoint = function () {\n var event = this.context.event;\n return {\n x: event.x,\n y: event.y\n };\n };\n // 触发 mask 的事件\n MaskBase.prototype.emitEvent = function (type) {\n var eventName = \"mask:\".concat(type);\n var view = this.context.view;\n var event = this.context.event;\n view.emit(eventName, {\n target: this.maskShape,\n shape: this.maskShape,\n points: this.points,\n x: event.x,\n y: event.y\n });\n };\n // 创建 mask\n MaskBase.prototype.createMask = function () {\n var view = this.context.view;\n var maskAttrs = this.getMaskAttrs();\n var maskShape = view.foregroundGroup.addShape({\n type: this.shapeType,\n name: 'mask',\n draggable: true,\n attrs: __assign({\n fill: '#C5D4EB',\n opacity: 0.3\n }, maskAttrs)\n });\n return maskShape;\n };\n // 生成 mask 的路径\n MaskBase.prototype.getMaskPath = function () {\n return [];\n };\n /**\n * 显示\n */\n MaskBase.prototype.show = function () {\n if (this.maskShape) {\n this.maskShape.show();\n this.emitEvent('show');\n }\n };\n /**\n * 开始\n */\n MaskBase.prototype.start = function (arg) {\n this.starting = true;\n // 开始时,保证移动结束\n this.moving = false;\n this.points = [this.getCurrentPoint()];\n if (!this.maskShape) {\n this.maskShape = this.createMask();\n // 开始时设置 capture: false,可以避免创建、resize 时触发事件\n this.maskShape.set('capture', false);\n }\n this.updateMask(arg === null || arg === void 0 ? void 0 : arg.maskStyle);\n this.emitEvent('start');\n };\n /**\n * 开始移动\n */\n MaskBase.prototype.moveStart = function () {\n this.moving = true;\n this.preMovePoint = this.getCurrentPoint();\n };\n /**\n * 移动 mask\n */\n MaskBase.prototype.move = function () {\n if (!this.moving || !this.maskShape) {\n return;\n }\n var currentPoint = this.getCurrentPoint();\n var preMovePoint = this.preMovePoint;\n var dx = currentPoint.x - preMovePoint.x;\n var dy = currentPoint.y - preMovePoint.y;\n var points = this.points;\n each(points, function (point) {\n point.x += dx;\n point.y += dy;\n });\n this.updateMask();\n this.emitEvent('change');\n this.preMovePoint = currentPoint;\n };\n MaskBase.prototype.updateMask = function (maskStyle) {\n var attrs = deepMix({}, this.getMaskAttrs(), maskStyle);\n this.maskShape.attr(attrs);\n };\n /**\n * 结束移动\n */\n MaskBase.prototype.moveEnd = function () {\n this.moving = false;\n this.preMovePoint = null;\n };\n /**\n * 结束\n */\n MaskBase.prototype.end = function () {\n this.starting = false;\n this.emitEvent('end');\n if (this.maskShape) {\n this.maskShape.set('capture', true);\n }\n };\n /**\n * 隐藏\n */\n MaskBase.prototype.hide = function () {\n if (this.maskShape) {\n this.maskShape.hide();\n this.emitEvent('hide');\n }\n };\n /**\n * 大小变化\n */\n MaskBase.prototype.resize = function () {\n // 只有进行中,才会允许大小变化\n if (this.starting && this.maskShape) {\n this.points.push(this.getCurrentPoint());\n this.updateMask();\n this.emitEvent('change');\n }\n };\n /**\n * 销毁\n */\n MaskBase.prototype.destroy = function () {\n this.points = [];\n if (this.maskShape) {\n this.maskShape.remove();\n }\n this.maskShape = null;\n this.preMovePoint = null;\n _super.prototype.destroy.call(this);\n };\n return MaskBase;\n}(Action);\nexport default MaskBase;","import { __extends } from \"tslib\";\nimport { last } from '@antv/util';\nimport { distance } from '../util';\nimport MaskBase from './base';\nexport function getMaskAttrs(points) {\n var currentPoint = last(points);\n var r = 0;\n var x = 0;\n var y = 0;\n if (points.length) {\n var first = points[0];\n r = distance(first, currentPoint) / 2;\n x = (currentPoint.x + first.x) / 2;\n y = (currentPoint.y + first.y) / 2;\n }\n return {\n x: x,\n y: y,\n r: r\n };\n}\n/**\n * @ignore\n * 圆形辅助框 Action\n */\nvar CircleMask = /** @class */function (_super) {\n __extends(CircleMask, _super);\n function CircleMask() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.shapeType = 'circle';\n return _this;\n }\n CircleMask.prototype.getMaskAttrs = function () {\n return getMaskAttrs(this.points);\n };\n return CircleMask;\n}(MaskBase);\nexport default CircleMask;","import { __extends } from \"tslib\";\nimport { head, last } from '@antv/util';\nimport MaskBase from './base';\nexport function getRegion(points) {\n return {\n start: head(points),\n end: last(points)\n };\n}\n/**\n * 添加图形\n * @param points\n * @returns\n */\nexport function getMaskAttrs(start, end) {\n var x = Math.min(start.x, end.x);\n var y = Math.min(start.y, end.y);\n var width = Math.abs(end.x - start.x);\n var height = Math.abs(end.y - start.y);\n return {\n x: x,\n y: y,\n width: width,\n height: height\n };\n}\n/**\n * @ignore\n * 矩形的辅助框 Action\n */\nvar RectMask = /** @class */function (_super) {\n __extends(RectMask, _super);\n function RectMask() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.shapeType = 'rect';\n return _this;\n }\n RectMask.prototype.getRegion = function () {\n return getRegion(this.points);\n };\n RectMask.prototype.getMaskAttrs = function () {\n var _a = this.getRegion(),\n start = _a.start,\n end = _a.end;\n return getMaskAttrs(start, end);\n };\n return RectMask;\n}(MaskBase);\nexport default RectMask;","import { __extends } from \"tslib\";\nimport { clamp, head, last } from '@antv/util';\nimport RectMask from './rect';\nfunction clampPoint(point) {\n point.x = clamp(point.x, 0, 1);\n point.y = clamp(point.y, 0, 1);\n}\nexport function getRegion(points, dim, inPlot, coord) {\n var start = null;\n var end = null;\n var normalStart = coord.invert(head(points));\n var normalEnd = coord.invert(last(points));\n if (inPlot) {\n // 约束到 0 - 1 范围内\n clampPoint(normalStart);\n clampPoint(normalEnd);\n }\n if (dim === 'x') {\n // x 轴方向扩展, y 轴方向占满全部\n start = coord.convert({\n x: normalStart.x,\n y: 0\n });\n end = coord.convert({\n x: normalEnd.x,\n y: 1\n });\n } else {\n // y 轴方向扩展, x 轴方向占满全部\n start = coord.convert({\n x: 0,\n y: normalStart.y\n });\n end = coord.convert({\n x: 1,\n y: normalEnd.y\n });\n }\n return {\n start: start,\n end: end\n };\n}\n/**\n * @ignore\n */\nvar DimRect = /** @class */function (_super) {\n __extends(DimRect, _super);\n function DimRect() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.dim = 'x';\n _this.inPlot = true;\n return _this;\n }\n DimRect.prototype.getRegion = function () {\n var coord = this.context.view.getCoordinate();\n return getRegion(this.points, this.dim, this.inPlot, coord);\n };\n return DimRect;\n}(RectMask);\nexport default DimRect;","import { __extends } from \"tslib\";\nimport { each } from '@antv/util';\nimport MaskBase from './base';\n/**\n * 生成 mask 的路径\n * @param points\n * @returns\n */\nexport function getMaskPath(points) {\n var path = [];\n if (points.length) {\n each(points, function (point, index) {\n if (index === 0) {\n path.push(['M', point.x, point.y]);\n } else {\n path.push(['L', point.x, point.y]);\n }\n });\n path.push(['L', points[0].x, points[0].y]);\n }\n return path;\n}\nexport function getMaskAttrs(points) {\n return {\n path: getMaskPath(points)\n };\n}\n/**\n * @ignore\n * 多个点构成的 Path 辅助框 Action\n */\nvar PathMask = /** @class */function (_super) {\n __extends(PathMask, _super);\n function PathMask() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PathMask.prototype.getMaskPath = function () {\n return getMaskPath(this.points);\n };\n PathMask.prototype.getMaskAttrs = function () {\n return getMaskAttrs(this.points);\n };\n /**\n * 添加一个点\n */\n PathMask.prototype.addPoint = function () {\n this.resize();\n };\n return PathMask;\n}(MaskBase);\nexport default PathMask;","import { __extends } from \"tslib\";\nimport { getSpline } from '../util';\nimport PathMask from './path';\n/**\n * 生成 mask 的路径\n * @param points\n * @returns\n */\nexport function getMaskPath(points) {\n return getSpline(points, true);\n}\nexport function getMaskAttrs(points) {\n return {\n path: getMaskPath(points)\n };\n}\n/**\n * Smooth path mask\n * @ignore\n */\nvar SmoothPathMask = /** @class */function (_super) {\n __extends(SmoothPathMask, _super);\n function SmoothPathMask() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SmoothPathMask.prototype.getMaskPath = function () {\n return getMaskPath(this.points);\n };\n SmoothPathMask.prototype.getMaskAttrs = function () {\n return getMaskAttrs(this.points);\n };\n return SmoothPathMask;\n}(PathMask);\nexport default SmoothPathMask;","import { __extends, __read } from \"tslib\";\nimport { Event } from '../../../chart';\nimport Action from '../base';\nimport { isMask } from '../util';\n// 获取对应的 scale\nfunction getFilter(scale, dim, point1, point2) {\n var min = Math.min(point1[dim], point2[dim]);\n var max = Math.max(point1[dim], point2[dim]);\n var _a = __read(scale.range, 2),\n rangeMin = _a[0],\n rangeMax = _a[1];\n // 约束值在 scale 的 range 之间\n if (min < rangeMin) {\n min = rangeMin;\n }\n if (max > rangeMax) {\n max = rangeMax;\n }\n // 范围大于整个 view 的范围,则返回 null\n if (min === rangeMax && max === rangeMax) {\n return null;\n }\n var minValue = scale.invert(min);\n var maxValue = scale.invert(max);\n if (scale.isCategory) {\n var minIndex = scale.values.indexOf(minValue);\n var maxIndex = scale.values.indexOf(maxValue);\n var arr_1 = scale.values.slice(minIndex, maxIndex + 1);\n return function (value) {\n return arr_1.includes(value);\n };\n } else {\n return function (value) {\n return value >= minValue && value <= maxValue;\n };\n }\n}\n/** range-filter 只用于:brush-filter, brush-x-filter, brush-y-filter */\nvar EVENTS;\n(function (EVENTS) {\n EVENTS[\"FILTER\"] = \"brush-filter-processing\";\n EVENTS[\"RESET\"] = \"brush-filter-reset\";\n EVENTS[\"BEFORE_FILTER\"] = \"brush-filter:beforefilter\";\n EVENTS[\"AFTER_FILTER\"] = \"brush-filter:afterfilter\";\n EVENTS[\"BEFORE_RESET\"] = \"brush-filter:beforereset\";\n EVENTS[\"AFTER_RESET\"] = \"brush-filter:afterreset\";\n})(EVENTS || (EVENTS = {}));\nexport { EVENTS as BRUSH_FILTER_EVENTS };\n/**\n * 范围过滤的 Action\n * @ignore\n */\nvar RangeFilter = /** @class */function (_super) {\n __extends(RangeFilter, _super);\n function RangeFilter() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * 范围过滤生效的字段/维度,可以是 x, y\n */\n _this.dims = ['x', 'y'];\n /** 起始点 */\n _this.startPoint = null;\n _this.isStarted = false;\n return _this;\n }\n // x,y 是否生效\n RangeFilter.prototype.hasDim = function (dim) {\n return this.dims.includes(dim);\n };\n /**\n * 开始范围过滤,记录范围过滤的起点\n */\n RangeFilter.prototype.start = function () {\n var context = this.context;\n this.isStarted = true;\n this.startPoint = context.getCurrentPoint();\n };\n /**\n * 过滤,以开始的点和当前点对数据进行过滤\n */\n RangeFilter.prototype.filter = function () {\n var startPoint;\n var currentPoint;\n if (isMask(this.context)) {\n var maskShape = this.context.event.target;\n var bbox = maskShape.getCanvasBBox();\n startPoint = {\n x: bbox.x,\n y: bbox.y\n };\n currentPoint = {\n x: bbox.maxX,\n y: bbox.maxY\n };\n } else {\n if (!this.isStarted) {\n // 如果没有开始,则不执行过滤\n return;\n }\n startPoint = this.startPoint;\n currentPoint = this.context.getCurrentPoint();\n }\n if (Math.abs(startPoint.x - currentPoint.x) < 5 || Math.abs(startPoint.x - currentPoint.y) < 5) {\n // 距离过小也不生效\n return;\n }\n var _a = this.context,\n view = _a.view,\n event = _a.event;\n var payload = {\n view: view,\n event: event,\n dims: this.dims\n };\n view.emit(EVENTS.BEFORE_FILTER, Event.fromData(view, EVENTS.BEFORE_FILTER, payload));\n var coord = view.getCoordinate();\n var normalCurrent = coord.invert(currentPoint);\n var normalStart = coord.invert(startPoint);\n // 设置 x 方向的 filter\n if (this.hasDim('x')) {\n var xScale = view.getXScale();\n var filter = getFilter(xScale, 'x', normalCurrent, normalStart);\n this.filterView(view, xScale.field, filter);\n }\n // 设置 y 方向的 filter\n if (this.hasDim('y')) {\n var yScale = view.getYScales()[0];\n var filter = getFilter(yScale, 'y', normalCurrent, normalStart);\n this.filterView(view, yScale.field, filter);\n }\n this.reRender(view, {\n source: EVENTS.FILTER\n });\n view.emit(EVENTS.AFTER_FILTER, Event.fromData(view, EVENTS.AFTER_FILTER, payload));\n };\n /**\n * 结束\n */\n RangeFilter.prototype.end = function () {\n this.isStarted = false;\n };\n /**\n * 取消同当前 Action 相关的过滤,指定的 x,y\n */\n RangeFilter.prototype.reset = function () {\n var view = this.context.view;\n view.emit(EVENTS.BEFORE_RESET, Event.fromData(view, EVENTS.BEFORE_RESET, {}));\n this.isStarted = false;\n if (this.hasDim('x')) {\n var xScale = view.getXScale();\n this.filterView(view, xScale.field, null); // 取消过滤\n }\n\n if (this.hasDim('y')) {\n // y 轴过滤仅取第一个 yScale\n var yScale = view.getYScales()[0];\n this.filterView(view, yScale.field, null); // 取消过滤\n }\n\n this.reRender(view, {\n source: EVENTS.RESET\n });\n view.emit(EVENTS.AFTER_RESET, Event.fromData(view, EVENTS.AFTER_RESET, {}));\n };\n /**\n * 对 view 进行过滤\n */\n RangeFilter.prototype.filterView = function (view, field, filter) {\n view.filter(field, filter);\n };\n /**\n * 重新渲染\n * @param view\n */\n RangeFilter.prototype.reRender = function (view, payload) {\n view.render(true, payload);\n };\n return RangeFilter;\n}(Action);\nexport default RangeFilter;","import { __assign, __extends, __read, __spreadArray } from \"tslib\";\nimport { deepMix } from '@antv/util';\nimport Action from '../../base';\n/**\n * @ignore\n * 辅助框 Action 的基类\n */\nvar MultipleMaskBase = /** @class */function (_super) {\n __extends(MultipleMaskBase, _super);\n function MultipleMaskBase() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // mask 图形\n _this.maskShapes = [];\n // 开始 mask 的标记\n _this.starting = false;\n // 开始移动的标记\n _this.moving = false;\n // 记录 mask 节点\n _this.recordPoints = null;\n _this.preMovePoint = null;\n _this.shapeType = 'path';\n _this.maskType = 'multi-mask';\n return _this;\n }\n /**\n * 获取当前的位置\n */\n MultipleMaskBase.prototype.getCurrentPoint = function () {\n var event = this.context.event;\n return {\n x: event.x,\n y: event.y\n };\n };\n /**\n * 触发 mask 的事件\n * @param type\n */\n MultipleMaskBase.prototype.emitEvent = function (type) {\n var eventName = \"\".concat(this.maskType, \":\").concat(type);\n var view = this.context.view;\n var event = this.context.event;\n var target = {\n type: this.shapeType,\n name: this.maskType,\n get: function get(key) {\n return target.hasOwnProperty(key) ? target[key] : undefined;\n }\n };\n view.emit(eventName, {\n target: target,\n maskShapes: this.maskShapes,\n multiPoints: this.recordPoints,\n x: event.x,\n y: event.y\n });\n };\n /**\n * 创建 mask\n * @param index\n */\n MultipleMaskBase.prototype.createMask = function (index) {\n var view = this.context.view;\n var points = this.recordPoints[index];\n var maskAttrs = this.getMaskAttrs(points);\n var maskShape = view.foregroundGroup.addShape({\n type: this.shapeType,\n name: 'mask',\n draggable: true,\n attrs: __assign({\n fill: '#C5D4EB',\n opacity: 0.3\n }, maskAttrs)\n });\n this.maskShapes.push(maskShape);\n };\n /**\n * 生成 mask 的路径\n */\n MultipleMaskBase.prototype.getMaskPath = function (points) {\n return [];\n };\n /**\n * 显示\n */\n MultipleMaskBase.prototype.show = function () {\n if (this.maskShapes.length > 0) {\n this.maskShapes.forEach(function (maskShape) {\n return maskShape.show();\n });\n this.emitEvent('show');\n }\n };\n /**\n * 开始\n */\n MultipleMaskBase.prototype.start = function (arg) {\n this.recordPointStart();\n this.starting = true;\n // 开始时,保证移动结束\n this.moving = false;\n // 开始第 index 个 mask\n var index = this.recordPoints.length - 1;\n this.createMask(index);\n // 开始时设置 capture: false,可以避免创建、resize 时触发事件\n this.updateShapesCapture(false);\n this.updateMask(arg === null || arg === void 0 ? void 0 : arg.maskStyle);\n this.emitEvent('start');\n };\n /**\n * 开始移动\n */\n MultipleMaskBase.prototype.moveStart = function () {\n this.moving = true;\n this.preMovePoint = this.getCurrentPoint();\n this.updateShapesCapture(false);\n };\n /**\n * 移动 mask\n */\n MultipleMaskBase.prototype.move = function () {\n if (!this.moving || this.maskShapes.length === 0) {\n return;\n }\n var currentPoint = this.getCurrentPoint();\n var preMovePoint = this.preMovePoint;\n var dx = currentPoint.x - preMovePoint.x;\n var dy = currentPoint.y - preMovePoint.y;\n // 只移动当前 event (x, y) 所在的某个 mask\n var index = this.getCurMaskShapeIndex();\n if (index > -1) {\n this.recordPoints[index].forEach(function (point) {\n point.x += dx;\n point.y += dy;\n });\n this.updateMask();\n this.emitEvent('change');\n this.preMovePoint = currentPoint;\n }\n };\n /**\n * 更新\n * @param maskStyle\n */\n MultipleMaskBase.prototype.updateMask = function (maskStyle) {\n var _this = this;\n this.recordPoints.forEach(function (points, index) {\n var attrs = deepMix({}, _this.getMaskAttrs(points), maskStyle);\n _this.maskShapes[index].attr(attrs);\n });\n };\n /**\n * 大小变化\n */\n MultipleMaskBase.prototype.resize = function () {\n if (this.starting && this.maskShapes.length > 0) {\n this.recordPointContinue();\n this.updateMask();\n this.emitEvent('change');\n }\n };\n /**\n * 结束移动\n */\n MultipleMaskBase.prototype.moveEnd = function () {\n this.moving = false;\n this.preMovePoint = null;\n this.updateShapesCapture(true);\n };\n /**\n * 结束\n */\n MultipleMaskBase.prototype.end = function () {\n this.starting = false;\n this.emitEvent('end');\n this.updateShapesCapture(true);\n };\n /**\n * 隐藏\n */\n MultipleMaskBase.prototype.hide = function () {\n if (this.maskShapes.length > 0) {\n this.maskShapes.forEach(function (maskShape) {\n return maskShape.hide();\n });\n this.emitEvent('hide');\n }\n };\n /**\n * 清除某个 mask\n */\n MultipleMaskBase.prototype.remove = function () {\n var index = this.getCurMaskShapeIndex();\n if (index > -1) {\n // event (x, y) 在的某个 mask 区域内时,清除该 mask\n this.recordPoints.splice(index, 1);\n this.maskShapes[index].remove();\n this.maskShapes.splice(index, 1);\n this.preMovePoint = null;\n this.updateShapesCapture(true);\n this.emitEvent('change');\n }\n };\n /**\n * 清除全部 mask\n */\n MultipleMaskBase.prototype.clearAll = function () {\n this.recordPointClear();\n this.maskShapes.forEach(function (maskShape) {\n return maskShape.remove();\n });\n this.maskShapes = [];\n this.preMovePoint = null;\n };\n /**\n * 清除\n */\n MultipleMaskBase.prototype.clear = function () {\n var index = this.getCurMaskShapeIndex();\n if (index === -1) {\n this.recordPointClear();\n this.maskShapes.forEach(function (maskShape) {\n return maskShape.remove();\n });\n this.maskShapes = [];\n this.emitEvent('clearAll');\n } else {\n this.recordPoints.splice(index, 1);\n this.maskShapes[index].remove();\n this.maskShapes.splice(index, 1);\n this.preMovePoint = null;\n this.emitEvent('clearSingle');\n }\n this.preMovePoint = null;\n };\n /**\n * 销毁\n */\n MultipleMaskBase.prototype.destroy = function () {\n this.clear();\n _super.prototype.destroy.call(this);\n };\n /**\n * 获取 mask 节点记录\n */\n MultipleMaskBase.prototype.getRecordPoints = function () {\n var _a;\n return __spreadArray([], __read((_a = this.recordPoints) !== null && _a !== void 0 ? _a : []), false);\n };\n /**\n * 创建 mask 节点记录\n */\n MultipleMaskBase.prototype.recordPointStart = function () {\n var recordPoints = this.getRecordPoints();\n var currentPoint = this.getCurrentPoint();\n this.recordPoints = __spreadArray(__spreadArray([], __read(recordPoints), false), [[currentPoint]], false);\n };\n /**\n * 持续记录 mask 节点\n */\n MultipleMaskBase.prototype.recordPointContinue = function () {\n var recordPoints = this.getRecordPoints();\n var currentPoint = this.getCurrentPoint();\n var lastPoints = recordPoints.splice(-1, 1)[0] || [];\n lastPoints.push(currentPoint);\n this.recordPoints = __spreadArray(__spreadArray([], __read(recordPoints), false), [lastPoints], false);\n };\n /**\n * 清除 mask 节点 记录\n */\n MultipleMaskBase.prototype.recordPointClear = function () {\n this.recordPoints = [];\n };\n /**\n * 设置 capture\n * false: 避免创建、resize 时触发事件\n * true: 正常触发其它事件\n * @param isCapture\n */\n MultipleMaskBase.prototype.updateShapesCapture = function (isCapture) {\n this.maskShapes.forEach(function (maskShape) {\n return maskShape.set('capture', isCapture);\n });\n };\n /**\n *\n * @returns 获取当前 event (x, y) 所在 maskShape 的 index\n */\n MultipleMaskBase.prototype.getCurMaskShapeIndex = function () {\n var currentPoint = this.getCurrentPoint();\n return this.maskShapes.findIndex(function (maskShape) {\n var _a = maskShape.attrs,\n width = _a.width,\n height = _a.height,\n r = _a.r;\n var isEmpty = width === 0 || height === 0 || r === 0;\n return !isEmpty && maskShape.isHit(currentPoint.x, currentPoint.y);\n });\n };\n return MultipleMaskBase;\n}(Action);\nexport default MultipleMaskBase;","import { __extends } from \"tslib\";\nimport MultipleMaskBase from './base';\nimport { getRegion, getMaskAttrs } from '../rect';\n/**\n * @ignore\n * 矩形的辅助框 Action\n */\nvar RectMultiMask = /** @class */function (_super) {\n __extends(RectMultiMask, _super);\n function RectMultiMask() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.shapeType = 'rect';\n return _this;\n }\n RectMultiMask.prototype.getRegion = function (points) {\n return getRegion(points);\n };\n RectMultiMask.prototype.getMaskAttrs = function (points) {\n var _a = this.getRegion(points),\n start = _a.start,\n end = _a.end;\n return getMaskAttrs(start, end);\n };\n return RectMultiMask;\n}(MultipleMaskBase);\nexport default RectMultiMask;","import { __extends } from \"tslib\";\nimport MultipleRectMask from './rect';\nimport { getRegion } from '../dim-rect';\n/**\n * @ignore\n */\nvar DimRectMultiMask = /** @class */function (_super) {\n __extends(DimRectMultiMask, _super);\n function DimRectMultiMask() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.dim = 'x';\n _this.inPlot = true;\n return _this;\n }\n DimRectMultiMask.prototype.getRegion = function (points) {\n var coord = this.context.view.getCoordinate();\n return getRegion(points, this.dim, this.inPlot, coord);\n };\n return DimRectMultiMask;\n}(MultipleRectMask);\nexport default DimRectMultiMask;","import { __extends } from \"tslib\";\nimport MultipleMaskBase from './base';\nimport { getMaskAttrs } from '../circle';\n/**\n * @ignore\n * 圆形辅助框 Action\n */\nvar CircleMultiMask = /** @class */function (_super) {\n __extends(CircleMultiMask, _super);\n function CircleMultiMask() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.shapeType = 'circle';\n _this.getMaskAttrs = getMaskAttrs;\n return _this;\n }\n return CircleMultiMask;\n}(MultipleMaskBase);\nexport default CircleMultiMask;","import { __extends } from \"tslib\";\nimport MultipleMaskBase from './base';\nimport { getMaskAttrs, getMaskPath } from '../path';\n/**\n * @ignore\n * 多个点构成的 Path 辅助框 Action\n */\nvar PathMultiMask = /** @class */function (_super) {\n __extends(PathMultiMask, _super);\n function PathMultiMask() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.getMaskPath = getMaskPath;\n _this.getMaskAttrs = getMaskAttrs;\n return _this;\n }\n PathMultiMask.prototype.addPoint = function () {\n this.resize();\n };\n return PathMultiMask;\n}(MultipleMaskBase);\nexport default PathMultiMask;","import { __extends } from \"tslib\";\nimport MultiplePathMask from './path';\nimport { getMaskPath, getMaskAttrs } from '../smooth-path';\n/**\n * Smooth path mask\n * @ignore\n */\nvar SmoothPathMultiMask = /** @class */function (_super) {\n __extends(SmoothPathMultiMask, _super);\n function SmoothPathMultiMask() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.getMaskPath = getMaskPath;\n _this.getMaskAttrs = getMaskAttrs;\n return _this;\n }\n return SmoothPathMultiMask;\n}(MultiplePathMask);\nexport default SmoothPathMultiMask;","import { __extends } from \"tslib\";\n/**\n * @fileoverview 设置画布的箭头,参看:https://www.w3school.com.cn/jsref/prop_style_cursor.asp\n * @author dxq613\n */\nimport Action from './base';\n/**\n * 鼠标形状的 Action\n * @ignore\n */\nvar CursorAction = /** @class */function (_super) {\n __extends(CursorAction, _super);\n function CursorAction() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n CursorAction.prototype.setCursor = function (cursor) {\n var view = this.context.view;\n view.getCanvas().setCursor(cursor);\n };\n /**\n * 默认光标(通常是一个箭头)\n */\n CursorAction.prototype.default = function () {\n this.setCursor('default');\n };\n /** 光标呈现为指示链接的指针(一只手) */\n CursorAction.prototype.pointer = function () {\n this.setCursor('pointer');\n };\n /** 此光标指示某对象可被移动。 */\n CursorAction.prototype.move = function () {\n this.setCursor('move');\n };\n /** 光标呈现为十字线。 */\n CursorAction.prototype.crosshair = function () {\n this.setCursor('crosshair');\n };\n /** 此光标指示程序正忙(通常是一只表或沙漏)。 */\n CursorAction.prototype.wait = function () {\n this.setCursor('wait');\n };\n /** 此光标指示可用的帮助(通常是一个问号或一个气球)。 */\n CursorAction.prototype.help = function () {\n this.setCursor('help');\n };\n /** 此光标指示文本。 */\n CursorAction.prototype.text = function () {\n this.setCursor('text');\n };\n /**\n * 此光标指示矩形框的边缘可被向右(东)移动。\n */\n CursorAction.prototype.eResize = function () {\n this.setCursor('e-resize');\n };\n /**\n * 此光标指示矩形框的边缘可被向左(西)移动。\n */\n CursorAction.prototype.wResize = function () {\n this.setCursor('w-resize');\n };\n /**\n * 此光标指示矩形框的边缘可被向上(北)移动。\n */\n CursorAction.prototype.nResize = function () {\n this.setCursor('n-resize');\n };\n /**\n * 此光标指示矩形框的边缘可被向下(南)移动。\n */\n CursorAction.prototype.sResize = function () {\n this.setCursor('s-resize');\n };\n /**\n * 光标指示可移动的方向 右上方(东北)\n */\n CursorAction.prototype.neResize = function () {\n this.setCursor('ne-resize');\n };\n /**\n * 光标指示可移动的方向 左上方(西北)\n */\n CursorAction.prototype.nwResize = function () {\n this.setCursor('nw-resize');\n };\n /**\n * 光标指示可移动的方向右下方(东南)\n */\n CursorAction.prototype.seResize = function () {\n this.setCursor('se-resize');\n };\n /**\n * 光标指示可移动的方向左下方(西南)\n */\n CursorAction.prototype.swResize = function () {\n this.setCursor('sw-resize');\n };\n /**\n * 光标指示可以在上下方向移动\n */\n CursorAction.prototype.nsResize = function () {\n this.setCursor('ns-resize');\n };\n /**\n * 光标指示可以在左右方向移动\n */\n CursorAction.prototype.ewResize = function () {\n this.setCursor('ew-resize');\n };\n /**\n * 光标显示可以被放大\n */\n CursorAction.prototype.zoomIn = function () {\n this.setCursor('zoom-in');\n };\n /**\n * 光标显示可以缩小尺寸\n */\n CursorAction.prototype.zoomOut = function () {\n this.setCursor('zoom-out');\n };\n return CursorAction;\n}(Action);\nexport default CursorAction;","import { __extends, __read } from \"tslib\";\nimport { each } from '@antv/util';\nimport Action from '../base';\nimport { getDelegationObject, getScaleByField, isList, isSlider } from '../util';\n/**\n * 数据过滤。\n * @ignore\n */\nvar DataFilter = /** @class */function (_super) {\n __extends(DataFilter, _super);\n function DataFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DataFilter.prototype.filterView = function (view, field, filter) {\n var _this = this;\n // 只有存在这个 scale 时才生效\n if (view.getScaleByField(field)) {\n view.filter(field, filter);\n }\n if (view.views && view.views.length) {\n each(view.views, function (subView) {\n _this.filterView(subView, field, filter);\n });\n }\n };\n /**\n * 过滤数据\n */\n DataFilter.prototype.filter = function () {\n var delegateObject = getDelegationObject(this.context);\n if (delegateObject) {\n var view = this.context.view;\n var component = delegateObject.component;\n var field = component.get('field');\n // 列表类的组件能够触发\n if (isList(delegateObject)) {\n if (field) {\n var unCheckedItems = component.getItemsByState('unchecked');\n var scale_1 = getScaleByField(view, field);\n var names_1 = unCheckedItems.map(function (item) {\n return item.name;\n });\n if (names_1.length) {\n this.filterView(view, field, function (value) {\n var text = scale_1.getText(value);\n return !names_1.includes(text);\n });\n } else {\n this.filterView(view, field, null);\n }\n view.render(true);\n }\n } else if (isSlider(delegateObject)) {\n var range = component.getValue();\n var _a = __read(range, 2),\n min_1 = _a[0],\n max_1 = _a[1];\n this.filterView(view, field, function (value) {\n return value >= min_1 && value <= max_1;\n });\n view.render(true);\n }\n }\n };\n return DataFilter;\n}(Action);\nexport default DataFilter;","import { __extends } from \"tslib\";\nimport { each } from '@antv/util';\nimport RangeFilter from './range-filter';\nimport { getSilbings } from '../util';\n/**\n * 数据范围过滤,但不在当前的 view 上生效,而在当前的 view 同一层级的其他 views 上生效,用于实现联动过滤。\n * @ignore\n */\nvar SiblingFilter = /** @class */function (_super) {\n __extends(SiblingFilter, _super);\n function SiblingFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * 对 view 进行过滤\n * @param view\n * @param field\n * @param filter\n */\n SiblingFilter.prototype.filterView = function (view, field, filter) {\n var siblings = getSilbings(view);\n each(siblings, function (sibling) {\n sibling.filter(field, filter);\n });\n };\n /**\n * 重新渲染\n * @param view\n */\n SiblingFilter.prototype.reRender = function (view) {\n var siblings = getSilbings(view);\n each(siblings, function (sibling) {\n sibling.render(true);\n });\n };\n return SiblingFilter;\n}(RangeFilter);\nexport default SiblingFilter;","import { __extends, __read } from \"tslib\";\nimport { each } from '@antv/util';\nimport Action from '../base';\nimport { getDelegationObject, getElements, getElementValue, getScaleByField, isList, isSlider, isMask, getMaskedElements } from '../util';\n/**\n * 元素过滤的 Action,控制元素的显示隐藏\n * @ignore\n */\nvar ElementFilter = /** @class */function (_super) {\n __extends(ElementFilter, _super);\n function ElementFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * 过滤\n */\n ElementFilter.prototype.filter = function () {\n var delegateObject = getDelegationObject(this.context);\n var view = this.context.view;\n var elements = getElements(view);\n if (isMask(this.context)) {\n var maskElements_1 = getMaskedElements(this.context, 10);\n if (maskElements_1) {\n each(elements, function (el) {\n if (maskElements_1.includes(el)) {\n el.show();\n } else {\n el.hide();\n }\n });\n }\n } else if (delegateObject) {\n var component = delegateObject.component;\n var field_1 = component.get('field');\n // 列表类的组件能够触发\n if (isList(delegateObject)) {\n if (field_1) {\n var unCheckedItems = component.getItemsByState('unchecked');\n var scale_1 = getScaleByField(view, field_1);\n var names_1 = unCheckedItems.map(function (item) {\n return item.name;\n });\n // 直接控制显示、隐藏\n each(elements, function (el) {\n var value = getElementValue(el, field_1);\n var text = scale_1.getText(value);\n if (names_1.indexOf(text) >= 0) {\n el.hide();\n } else {\n el.show();\n }\n });\n }\n } else if (isSlider(delegateObject)) {\n var range = component.getValue();\n var _a = __read(range, 2),\n min_1 = _a[0],\n max_1 = _a[1];\n each(elements, function (el) {\n var value = getElementValue(el, field_1);\n if (value >= min_1 && value <= max_1) {\n el.show();\n } else {\n el.hide();\n }\n });\n }\n }\n };\n /**\n * 清除过滤\n */\n ElementFilter.prototype.clear = function () {\n var elements = getElements(this.context.view);\n each(elements, function (el) {\n el.show();\n });\n };\n /**\n * 恢复发生的过滤,保持同 data-filter 命名的一致\n */\n ElementFilter.prototype.reset = function () {\n this.clear();\n };\n return ElementFilter;\n}(Action);\nexport default ElementFilter;","import { __extends } from \"tslib\";\nimport { each } from '@antv/util';\nimport Action from '../base';\nimport { getElements, getMaskedElements, getSiblingMaskElements, getSilbings, isInRecords, isMask } from '../util';\n/**\n * Sibling filter\n * @ignore\n */\nvar SiblingFilter = /** @class */function (_super) {\n __extends(SiblingFilter, _super);\n function SiblingFilter() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.byRecord = false;\n return _this;\n }\n /**\n * 过滤隐藏图形\n */\n SiblingFilter.prototype.filter = function () {\n // 仅考虑 mask 导致的过滤\n if (isMask(this.context)) {\n if (this.byRecord) {\n this.filterByRecord();\n } else {\n this.filterByBBox();\n }\n }\n };\n // 根据框选的记录来做过滤\n SiblingFilter.prototype.filterByRecord = function () {\n var view = this.context.view;\n var maskElements = getMaskedElements(this.context, 10);\n if (!maskElements) {\n return;\n }\n var xFiled = view.getXScale().field;\n var yField = view.getYScales()[0].field;\n var records = maskElements.map(function (el) {\n return el.getModel().data;\n });\n var siblings = getSilbings(view);\n each(siblings, function (sibling) {\n var elements = getElements(sibling);\n each(elements, function (el) {\n var record = el.getModel().data;\n // records.includes(record) 不生效,应该是数据的引用被改了\n if (isInRecords(records, record, xFiled, yField)) {\n el.show();\n } else {\n el.hide();\n }\n });\n });\n };\n // 根据被框选的包围盒做过滤\n SiblingFilter.prototype.filterByBBox = function () {\n var _this = this;\n var view = this.context.view;\n var siblings = getSilbings(view);\n each(siblings, function (sibling) {\n var maskElements = getSiblingMaskElements(_this.context, sibling, 10);\n var elements = getElements(sibling);\n if (maskElements) {\n // mask 过小时返回为 null,不能是空数组,否则同未框选到混淆\n each(elements, function (el) {\n if (maskElements.includes(el)) {\n el.show();\n } else {\n el.hide();\n }\n });\n }\n });\n };\n /**\n * 清理所有隐藏的图形\n */\n SiblingFilter.prototype.reset = function () {\n var siblings = getSilbings(this.context.view);\n each(siblings, function (sibling) {\n var elements = getElements(sibling);\n each(elements, function (el) {\n el.show();\n });\n });\n };\n return SiblingFilter;\n}(Action);\nexport default SiblingFilter;","import { __assign, __extends } from \"tslib\";\nimport { ext } from '@antv/matrix-util';\nimport { deepMix } from '@antv/util';\nimport { parsePadding } from '../../../util/padding';\nimport Action from '../base';\nvar PADDING_RIGHT = 10;\nvar PADDING_TOP = 5;\n/**\n * Button action\n * @ignore\n */\nvar ButtonAction = /** @class */function (_super) {\n __extends(ButtonAction, _super);\n function ButtonAction() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.buttonGroup = null;\n _this.buttonCfg = {\n name: 'button',\n text: 'button',\n textStyle: {\n x: 0,\n y: 0,\n fontSize: 12,\n fill: '#333333',\n cursor: 'pointer'\n },\n padding: [8, 10],\n style: {\n fill: '#f7f7f7',\n stroke: '#cccccc',\n cursor: 'pointer'\n },\n activeStyle: {\n fill: '#e6e6e6'\n }\n };\n return _this;\n }\n // mix 默认的配置和用户配置\n ButtonAction.prototype.getButtonCfg = function () {\n return deepMix(this.buttonCfg, this.cfg);\n };\n // 绘制 Button 和 文本\n ButtonAction.prototype.drawButton = function () {\n var config = this.getButtonCfg();\n var group = this.context.view.foregroundGroup.addGroup({\n name: config.name\n });\n // 添加文本\n var textShape = group.addShape({\n type: 'text',\n name: 'button-text',\n attrs: __assign({\n text: config.text\n }, config.textStyle)\n });\n var textBBox = textShape.getBBox();\n var padding = parsePadding(config.padding);\n // 添加背景按钮\n var buttonShape = group.addShape({\n type: 'rect',\n name: 'button-rect',\n attrs: __assign({\n x: textBBox.x - padding[3],\n y: textBBox.y - padding[0],\n width: textBBox.width + padding[1] + padding[3],\n height: textBBox.height + padding[0] + padding[2]\n }, config.style)\n });\n buttonShape.toBack(); // 在后面\n // active 效果内置\n group.on('mouseenter', function () {\n buttonShape.attr(config.activeStyle);\n });\n group.on('mouseleave', function () {\n buttonShape.attr(config.style);\n });\n this.buttonGroup = group;\n };\n // 重置位置\n ButtonAction.prototype.resetPosition = function () {\n var view = this.context.view;\n var coord = view.getCoordinate();\n var point = coord.convert({\n x: 1,\n y: 1\n }); // 后面直接改成左上角\n var buttonGroup = this.buttonGroup;\n var bbox = buttonGroup.getBBox();\n var matrix = ext.transform(null, [['t', point.x - bbox.width - PADDING_RIGHT, point.y + bbox.height + PADDING_TOP]]);\n buttonGroup.setMatrix(matrix);\n };\n /**\n * 显示\n */\n ButtonAction.prototype.show = function () {\n if (!this.buttonGroup) {\n this.drawButton();\n }\n this.resetPosition();\n this.buttonGroup.show();\n };\n /**\n * 隐藏\n */\n ButtonAction.prototype.hide = function () {\n if (this.buttonGroup) {\n this.buttonGroup.hide();\n }\n };\n /**\n * 销毁\n */\n ButtonAction.prototype.destroy = function () {\n var buttonGroup = this.buttonGroup;\n if (buttonGroup) {\n buttonGroup.remove();\n }\n _super.prototype.destroy.call(this);\n };\n return ButtonAction;\n}(Action);\nexport default ButtonAction;","import { __extends } from \"tslib\";\nimport Action from '../base';\nimport { distance } from '../util';\nvar DISTANCE = 4; // 移动的最小距离\n/**\n * @ignore\n * View 支持 Drag 的 Action\n */\nvar Drag = /** @class */function (_super) {\n __extends(Drag, _super);\n function Drag() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // Action 开始,不等同于 拖拽开始,需要判定移动的范围\n _this.starting = false;\n // 拖拽开始\n _this.dragStart = false;\n return _this;\n }\n /**\n * 开始\n */\n Drag.prototype.start = function () {\n this.starting = true;\n this.startPoint = this.context.getCurrentPoint();\n };\n /**\n * 拖拽\n */\n Drag.prototype.drag = function () {\n if (!this.startPoint) {\n return;\n }\n var current = this.context.getCurrentPoint();\n var view = this.context.view;\n var event = this.context.event;\n if (!this.dragStart) {\n if (distance(current, this.startPoint) > DISTANCE) {\n view.emit('dragstart', {\n target: event.target,\n x: event.x,\n y: event.y\n });\n this.dragStart = true;\n }\n } else {\n view.emit('drag', {\n target: event.target,\n x: event.x,\n y: event.y\n });\n }\n };\n /**\n * 结束\n */\n Drag.prototype.end = function () {\n if (this.dragStart) {\n var view = this.context.view;\n var event_1 = this.context.event;\n view.emit('dragend', {\n target: event_1.target,\n x: event_1.x,\n y: event_1.y\n });\n }\n this.starting = false;\n this.dragStart = false;\n };\n return Drag;\n}(Action);\nexport default Drag;","import { __extends } from \"tslib\";\nimport { ext } from '@antv/matrix-util';\nimport { Action } from '..';\nimport { distance } from '../util';\nvar MIN_DISTANCE = 5;\n/**\n * @ignore\n * View 移动的 Action\n */\nvar Move = /** @class */function (_super) {\n __extends(Move, _super);\n function Move() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.starting = false;\n _this.isMoving = false;\n // private cacheRange = null;\n _this.startPoint = null;\n _this.startMatrix = null;\n return _this;\n }\n /**\n * 开始移动\n */\n Move.prototype.start = function () {\n this.starting = true;\n this.startPoint = this.context.getCurrentPoint();\n // 缓存开始时的矩阵,防止反复拖拽\n this.startMatrix = this.context.view.middleGroup.getMatrix();\n };\n /**\n * 移动\n */\n Move.prototype.move = function () {\n if (!this.starting) {\n return;\n }\n var startPoint = this.startPoint;\n var currentPoint = this.context.getCurrentPoint();\n var d = distance(startPoint, currentPoint);\n if (d > MIN_DISTANCE && !this.isMoving) {\n this.isMoving = true;\n }\n if (this.isMoving) {\n var view = this.context.view;\n var matrix = ext.transform(this.startMatrix, [['t', currentPoint.x - startPoint.x, currentPoint.y - startPoint.y]]);\n view.backgroundGroup.setMatrix(matrix);\n view.foregroundGroup.setMatrix(matrix);\n view.middleGroup.setMatrix(matrix);\n }\n };\n /**\n * 结束移动\n */\n Move.prototype.end = function () {\n if (this.isMoving) {\n this.isMoving = false;\n }\n this.startMatrix = null;\n this.starting = false;\n this.startPoint = null;\n };\n /**\n * 回滚\n */\n Move.prototype.reset = function () {\n this.starting = false;\n this.startPoint = null;\n this.isMoving = false;\n var view = this.context.view;\n view.backgroundGroup.resetMatrix();\n view.foregroundGroup.resetMatrix();\n view.middleGroup.resetMatrix();\n this.isMoving = false;\n };\n return Move;\n}(Action);\nexport default Move;","import { __extends } from \"tslib\";\nimport { Action } from '..';\nvar DIM_X = 'x';\nvar DIM_Y = 'y';\n/**\n * Scale translate\n * @ignore\n */\nvar ScaleTranslate = /** @class */function (_super) {\n __extends(ScaleTranslate, _super);\n function ScaleTranslate() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.dims = [DIM_X, DIM_Y];\n _this.cfgFields = ['dims'];\n _this.cacheScaleDefs = {};\n return _this;\n }\n // 是否支持对应字段的平移\n ScaleTranslate.prototype.hasDim = function (dim) {\n return this.dims.includes(dim);\n };\n ScaleTranslate.prototype.getScale = function (dim) {\n var view = this.context.view;\n if (dim === 'x') {\n return view.getXScale();\n } else {\n return view.getYScales()[0];\n }\n };\n ScaleTranslate.prototype.resetDim = function (dim) {\n var view = this.context.view;\n if (this.hasDim(dim) && this.cacheScaleDefs[dim]) {\n var scale = this.getScale(dim);\n view.scale(scale.field, this.cacheScaleDefs[dim]);\n this.cacheScaleDefs[dim] = null;\n }\n };\n /**\n * 回滚\n */\n ScaleTranslate.prototype.reset = function () {\n this.resetDim(DIM_X);\n this.resetDim(DIM_Y);\n var view = this.context.view;\n view.render(true);\n };\n return ScaleTranslate;\n}(Action);\nexport default ScaleTranslate;","import { __extends } from \"tslib\";\nimport { each } from '@antv/util';\nimport TransformAction from './scale-transform';\n/**\n * 拖拽 Scale 的 Action\n * @ignore\n */\nvar ScaleTranslate = /** @class */function (_super) {\n __extends(ScaleTranslate, _super);\n function ScaleTranslate() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.startPoint = null;\n _this.starting = false;\n _this.startCache = {};\n return _this;\n }\n /**\n * 开始\n */\n ScaleTranslate.prototype.start = function () {\n var _this = this;\n this.startPoint = this.context.getCurrentPoint();\n this.starting = true;\n var dims = this.dims;\n each(dims, function (dim) {\n var scale = _this.getScale(dim);\n var min = scale.min,\n max = scale.max,\n values = scale.values;\n _this.startCache[dim] = {\n min: min,\n max: max,\n values: values\n };\n });\n };\n // 平移分类的度量\n // private translateCategory(dim, scale, normalPoint) {\n // }\n /**\n * 结束\n */\n ScaleTranslate.prototype.end = function () {\n this.startPoint = null;\n this.starting = false;\n this.startCache = {};\n };\n /**\n * 平移\n */\n ScaleTranslate.prototype.translate = function () {\n var _this = this;\n if (!this.starting) {\n return;\n }\n var startPoint = this.startPoint;\n var coord = this.context.view.getCoordinate();\n var currentPoint = this.context.getCurrentPoint();\n var normalStart = coord.invert(startPoint);\n var noramlCurrent = coord.invert(currentPoint);\n var dx = noramlCurrent.x - normalStart.x;\n var dy = noramlCurrent.y - normalStart.y;\n var view = this.context.view;\n var dims = this.dims;\n each(dims, function (dim) {\n _this.translateDim(dim, {\n x: dx * -1,\n y: dy * -1\n });\n });\n view.render(true);\n };\n // 平移度量\n ScaleTranslate.prototype.translateDim = function (dim, normalPoint) {\n if (this.hasDim(dim)) {\n var scale = this.getScale(dim);\n if (scale.isLinear) {\n this.translateLinear(dim, scale, normalPoint);\n }\n // else { // 暂时仅处理连续字段\n // this.translateCategory(dim, scale, normalPoint);\n // }\n }\n };\n // linear 度量平移\n ScaleTranslate.prototype.translateLinear = function (dim, scale, normalPoint) {\n var view = this.context.view;\n var _a = this.startCache[dim],\n min = _a.min,\n max = _a.max;\n var range = max - min;\n var d = normalPoint[dim] * range;\n // 只有第一次缓存,否则无法回滚\n if (!this.cacheScaleDefs[dim]) {\n this.cacheScaleDefs[dim] = {\n // @ts-ignore\n nice: scale.nice,\n min: min,\n max: max\n };\n }\n view.scale(scale.field, {\n // @ts-ignore\n nice: false,\n min: min + d,\n max: max + d\n });\n };\n // 平移分类的度量\n // private translateCategory(dim, scale, normalPoint) {\n // }\n /**\n * 回滚\n */\n ScaleTranslate.prototype.reset = function () {\n _super.prototype.reset.call(this);\n this.startPoint = null;\n this.starting = false;\n };\n return ScaleTranslate;\n}(TransformAction);\nexport default ScaleTranslate;","import { __extends } from \"tslib\";\nimport { each } from '@antv/util';\nimport TransformAction from './scale-transform';\n/**\n * 缩放 Scale 的 Action\n * @ignore\n */\nvar ScaleTranslate = /** @class */function (_super) {\n __extends(ScaleTranslate, _super);\n function ScaleTranslate() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.zoomRatio = 0.05;\n return _this;\n // 平移分类的度量\n // private translateCategory(dim, scale, normalPoint) {\n // }\n }\n /**\n * 缩小\n */\n ScaleTranslate.prototype.zoomIn = function () {\n this.zoom(this.zoomRatio);\n };\n ScaleTranslate.prototype.zoom = function (scale) {\n var _this = this;\n var dims = this.dims;\n each(dims, function (dim) {\n _this.zoomDim(dim, scale);\n });\n this.context.view.render(true);\n };\n /**\n * 放大\n */\n ScaleTranslate.prototype.zoomOut = function () {\n this.zoom(-1 * this.zoomRatio);\n };\n // 缩放度量\n ScaleTranslate.prototype.zoomDim = function (dim, dRatio) {\n if (this.hasDim(dim)) {\n var scale = this.getScale(dim);\n if (scale.isLinear) {\n this.zoomLinear(dim, scale, dRatio);\n }\n // else { // 暂时仅处理连续字段\n // this.zoomCategory(dim, scale, normalPoint);\n // }\n }\n };\n // linear 度量平移\n ScaleTranslate.prototype.zoomLinear = function (dim, scale, dRatio) {\n var view = this.context.view;\n // 只有第一次缓存,否则无法回滚\n if (!this.cacheScaleDefs[dim]) {\n this.cacheScaleDefs[dim] = {\n // @ts-ignore\n nice: scale.nice,\n min: scale.min,\n max: scale.max\n };\n }\n // 使用使用原始度量作为缩放标准\n var scaleDef = this.cacheScaleDefs[dim];\n var range = scaleDef.max - scaleDef.min;\n var min = scale.min,\n max = scale.max;\n var d = dRatio * range;\n var toMin = min - d;\n var toMax = max + d;\n var curRange = toMax - toMin;\n var scaled = curRange / range;\n if (toMax > toMin && scaled < 100 && scaled > 0.01) {\n view.scale(scale.field, {\n // @ts-ignore\n nice: false,\n min: min - d,\n max: max + d\n });\n }\n };\n return ScaleTranslate;\n}(TransformAction);\nexport default ScaleTranslate;","import { __extends } from \"tslib\";\nimport { clamp, size, valuesOfKey } from '@antv/util';\nimport { Action } from '..';\nfunction isWheelDown(event) {\n var wheelEvent = event.gEvent.originalEvent;\n return wheelEvent.deltaY > 0;\n}\nvar DEFAULT_WHEELDELTA = 1;\nvar MousewheelScroll = /** @class */function (_super) {\n __extends(MousewheelScroll, _super);\n function MousewheelScroll() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MousewheelScroll.prototype.scroll = function (arg) {\n var _a = this.context,\n view = _a.view,\n event = _a.event;\n if (!view.getOptions().scrollbar) {\n return;\n }\n var wheelDelta = (arg === null || arg === void 0 ? void 0 : arg.wheelDelta) || DEFAULT_WHEELDELTA;\n var scrollbarController = view.getController('scrollbar');\n var xScale = view.getXScale();\n var data = view.getOptions().data;\n var dataSize = size(valuesOfKey(data, xScale.field));\n var step = size(xScale.values);\n var currentRatio = scrollbarController.getValue();\n var currentStart = Math.floor((dataSize - step) * currentRatio);\n var nextStart = currentStart + (isWheelDown(event) ? wheelDelta : -wheelDelta);\n var correction = wheelDelta / (dataSize - step) / 10000;\n var nextRatio = clamp(nextStart / (dataSize - step) + correction, 0, 1);\n scrollbarController.setValue(nextRatio);\n };\n return MousewheelScroll;\n}(Action);\nexport default MousewheelScroll;","import { __assign, __extends } from \"tslib\";\nimport { TOOLTIP_CSS_CONST } from '@antv/component';\nimport { deepMix } from '@antv/util';\nimport { HtmlTooltip } from '../../../../dependents';\nimport Action from '../../base';\nimport { getDelegationObject } from '../../util';\nvar AXIS_DESCRIPTION_TOOLTIP = 'aixs-description-tooltip';\nvar AxisDescription = /** @class */function (_super) {\n __extends(AxisDescription, _super);\n function AxisDescription() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AxisDescription.prototype.show = function () {\n var context = this.context;\n var axis = getDelegationObject(context).axis;\n var _a = axis.cfg.title,\n description = _a.description,\n text = _a.text,\n descriptionTooltipStyle = _a.descriptionTooltipStyle;\n var _b = context.event,\n x = _b.x,\n y = _b.y;\n if (!this.tooltip) {\n this.renderTooltip();\n }\n this.tooltip.update({\n title: text || '',\n customContent: function customContent() {\n return \"\\n
        \\n
        \\n \\u5B57\\u6BB5\\u8BF4\\u660E\\uFF1A\").concat(description, \"\\n
        \\n
        \\n \");\n },\n x: x,\n y: y\n });\n this.tooltip.show();\n };\n AxisDescription.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.tooltip && this.tooltip.destroy();\n };\n AxisDescription.prototype.hide = function () {\n this.tooltip && this.tooltip.hide();\n };\n AxisDescription.prototype.renderTooltip = function () {\n var _a;\n var view = this.context.view;\n var canvas = view.canvas;\n var region = {\n start: {\n x: 0,\n y: 0\n },\n end: {\n x: canvas.get('width'),\n y: canvas.get('height')\n }\n };\n var tooltip = new HtmlTooltip({\n parent: canvas.get('el').parentNode,\n region: region,\n visible: false,\n containerId: AXIS_DESCRIPTION_TOOLTIP,\n domStyles: __assign({}, deepMix({}, (_a = {},\n // 超长的时候,tooltip tip 最大宽度为 50%,然后可以换行\n _a[TOOLTIP_CSS_CONST.CONTAINER_CLASS] = {\n 'max-width': '50%',\n padding: '10px',\n 'line-height': '15px',\n 'font-size': '12px',\n color: 'rgba(0, 0, 0, .65)'\n }, _a[TOOLTIP_CSS_CONST.TITLE_CLASS] = {\n 'word-break': 'break-all',\n 'margin-bottom': '3px'\n }, _a)))\n });\n tooltip.init();\n tooltip.setCapture(false);\n this.tooltip = tooltip;\n };\n return AxisDescription;\n}(Action);\nexport default AxisDescription;","// 注册黑暗主题\nimport { registerTheme } from './core';\nimport { antvDark } from './theme/style-sheet/dark';\nimport { createThemeByStyleSheet } from './theme/util/create-by-style-sheet';\nregisterTheme('dark', createThemeByStyleSheet(antvDark));\n// 注册 G 渲染引擎\nimport * as CanvasEngine from '@antv/g-canvas';\nimport * as SVGEngine from '@antv/g-svg';\nimport { registerEngine } from './core';\nregisterEngine('canvas', CanvasEngine);\nregisterEngine('svg', SVGEngine);\n// 注册 G2 内置的 geometry\nimport { registerGeometry } from './core';\nimport Area from './geometry/area';\nimport Edge from './geometry/edge';\nimport Heatmap from './geometry/heatmap';\nimport Interval from './geometry/interval';\nimport Line from './geometry/line';\nimport Path from './geometry/path';\nimport Point from './geometry/point';\nimport Polygon from './geometry/polygon';\nimport Schema from './geometry/schema';\nimport Violin from './geometry/violin';\nregisterGeometry('Polygon', Polygon);\nregisterGeometry('Interval', Interval);\nregisterGeometry('Schema', Schema);\nregisterGeometry('Path', Path);\nregisterGeometry('Point', Point);\nregisterGeometry('Line', Line);\nregisterGeometry('Area', Area);\nregisterGeometry('Edge', Edge);\nregisterGeometry('Heatmap', Heatmap);\nregisterGeometry('Violin', Violin);\n// 引入所有内置的 shapes\nimport './geometry/shape/area/line';\nimport './geometry/shape/area/smooth';\nimport './geometry/shape/area/smooth-line';\nimport './geometry/shape/edge/arc';\nimport './geometry/shape/edge/smooth';\nimport './geometry/shape/edge/vhv';\nimport './geometry/shape/interval/funnel';\nimport './geometry/shape/interval/hollow-rect';\nimport './geometry/shape/interval/line';\nimport './geometry/shape/interval/pyramid';\nimport './geometry/shape/interval/tick';\nimport './geometry/shape/line/step';\nimport './geometry/shape/point/hollow';\nimport './geometry/shape/point/image';\nimport './geometry/shape/point/solid';\nimport './geometry/shape/schema/box';\nimport './geometry/shape/schema/candle';\nimport './geometry/shape/polygon/square';\nimport './geometry/shape/violin/smooth';\nimport './geometry/shape/violin/hollow';\n// 注册 Geometry 内置的 label\nimport { registerGeometryLabel } from './core';\nimport GeometryLabel from './geometry/label/base';\nimport IntervalLabel from './geometry/label/interval';\nimport PieLabel from './geometry/label/pie';\nimport PolarLabel from './geometry/label/polar';\nregisterGeometryLabel('base', GeometryLabel);\nregisterGeometryLabel('interval', IntervalLabel);\nregisterGeometryLabel('pie', PieLabel);\nregisterGeometryLabel('polar', PolarLabel);\n// 注册 Geometry label 内置的布局函数\nimport { registerGeometryLabelLayout } from './core';\nimport { distribute } from './geometry/label/layout/pie/distribute';\nimport { pieOuterLabelLayout } from './geometry/label/layout/pie/outer';\nimport { pieSpiderLabelLayout } from './geometry/label/layout/pie/spider';\nimport { limitInCanvas } from './geometry/label/layout/limit-in-canvas';\nimport { limitInShape } from './geometry/label/layout/limit-in-shape';\nimport { fixedOverlap, overlap } from './geometry/label/layout/overlap';\nimport { hideOverlap } from './geometry/label/layout/hide-overlap';\nimport { adjustColor } from './geometry/label/layout/adjust-color';\nimport { intervalAdjustPosition } from './geometry/label/layout/interval/adjust-position';\nimport { intervalHideOverlap } from './geometry/label/layout/interval/hide-overlap';\nimport { pointAdjustPosition } from './geometry/label/layout/point/adjust-position';\nimport { pathAdjustPosition } from './geometry/label/layout/path/adjust-position';\nimport { limitInPlot } from './geometry/label/layout/limit-in-plot';\nregisterGeometryLabelLayout('overlap', overlap);\nregisterGeometryLabelLayout('distribute', distribute);\nregisterGeometryLabelLayout('fixed-overlap', fixedOverlap);\nregisterGeometryLabelLayout('hide-overlap', hideOverlap);\nregisterGeometryLabelLayout('limit-in-shape', limitInShape);\nregisterGeometryLabelLayout('limit-in-canvas', limitInCanvas);\nregisterGeometryLabelLayout('limit-in-plot', limitInPlot);\nregisterGeometryLabelLayout('pie-outer', pieOuterLabelLayout);\nregisterGeometryLabelLayout('adjust-color', adjustColor);\nregisterGeometryLabelLayout('interval-adjust-position', intervalAdjustPosition);\nregisterGeometryLabelLayout('interval-hide-overlap', intervalHideOverlap);\nregisterGeometryLabelLayout('point-adjust-position', pointAdjustPosition);\nregisterGeometryLabelLayout('pie-spider', pieSpiderLabelLayout);\nregisterGeometryLabelLayout('path-adjust-position', pathAdjustPosition);\n// 注册需要的动画执行函数\nimport { fadeIn, fadeOut } from './animate/animation/fade';\nimport { growInX, growInXY, growInY } from './animate/animation/grow-in';\nimport { pathIn } from './animate/animation/path-in';\nimport { positionUpdate } from './animate/animation/position-update';\nimport { scaleInX, scaleInY } from './animate/animation/scale-in';\nimport { sectorPathUpdate } from './animate/animation/sector-path-update';\nimport { waveIn } from './animate/animation/wave-in';\nimport { zoomIn, zoomOut } from './animate/animation/zoom';\nimport { registerAnimation } from './core';\nregisterAnimation('fade-in', fadeIn);\nregisterAnimation('fade-out', fadeOut);\nregisterAnimation('grow-in-x', growInX);\nregisterAnimation('grow-in-xy', growInXY);\nregisterAnimation('grow-in-y', growInY);\nregisterAnimation('scale-in-x', scaleInX);\nregisterAnimation('scale-in-y', scaleInY);\nregisterAnimation('wave-in', waveIn);\nregisterAnimation('zoom-in', zoomIn);\nregisterAnimation('zoom-out', zoomOut);\nregisterAnimation('position-update', positionUpdate);\nregisterAnimation('sector-path-update', sectorPathUpdate);\nregisterAnimation('path-in', pathIn);\n// 注册内置的 Facet\nimport { registerFacet } from './core';\nimport Circle from './facet/circle';\nimport List from './facet/list';\nimport Matrix from './facet/matrix';\nimport Mirror from './facet/mirror';\nimport Rect from './facet/rect';\nimport Tree from './facet/tree';\nregisterFacet('rect', Rect);\nregisterFacet('mirror', Mirror);\nregisterFacet('list', List);\nregisterFacet('matrix', Matrix);\nregisterFacet('circle', Circle);\nregisterFacet('tree', Tree);\n// 注册内置的 Component\nimport { registerComponentController } from './core';\nimport Annotation from './chart/controller/annotation';\nimport Axis from './chart/controller/axis';\nimport Legend from './chart/controller/legend';\nimport Slider from './chart/controller/slider';\nimport Tooltip from './chart/controller/tooltip';\nimport Scrollbar from './chart/controller/scrollbar';\n// register build-in components\nregisterComponentController('axis', Axis);\nregisterComponentController('legend', Legend);\nregisterComponentController('tooltip', Tooltip);\nregisterComponentController('annotation', Annotation);\nregisterComponentController('slider', Slider);\nregisterComponentController('scrollbar', Scrollbar);\n// 注册 Interaction Action\nimport { registerAction } from './core';\nimport ActiveRegion from './interaction/action/active-region';\nimport SiblingTooltip from './interaction/action/component/tooltip/sibling';\nimport TooltipAction from './interaction/action/component/tooltip/geometry';\nimport EllipsisTextAction from './interaction/action/component/tooltip/ellipsis-text';\nimport ElementActive from './interaction/action/element/active';\nimport ElementLinkByColor from './interaction/action/element/link-by-color';\nimport ElementRangeActive from './interaction/action/element/range-active';\nimport ElementSingleActive from './interaction/action/element/single-active';\nimport ElementHighlight from './interaction/action/element/highlight';\nimport ElementHighlightByColor from './interaction/action/element/highlight-by-color';\nimport ElementHighlightByX from './interaction/action/element/highlight-by-x';\nimport ElementRangeHighlight, { ELEMENT_RANGE_HIGHLIGHT_EVENTS } from './interaction/action/element/range-highlight';\nimport ElementSingleHighlight from './interaction/action/element/single-highlight';\nimport ElementRangeSelected from './interaction/action/element/range-selected';\nimport ElementSelected from './interaction/action/element/selected';\nimport ElementSingleSelected from './interaction/action/element/single-selected';\nimport ListActive from './interaction/action/component/list-active';\nimport ListHighlight from './interaction/action/component/list-highlight';\nimport ListSelected from './interaction/action/component/list-selected';\nimport ListUnchecked from './interaction/action/component/list-unchecked';\nimport ListChecked from './interaction/action/component/list-checked';\nimport ListFocus from './interaction/action/component/list-focus';\nimport ListRadio from './interaction/action/component/list-radio';\nimport CircleMask from './interaction/action/mask/circle';\nimport DimMask from './interaction/action/mask/dim-rect';\nimport PathMask from './interaction/action/mask/path';\nimport RectMask from './interaction/action/mask/rect';\nimport SmoothPathMask from './interaction/action/mask/smooth-path';\nimport RectMultiMask from './interaction/action/mask/multiple/rect';\nimport DimRectMultiMask from './interaction/action/mask/multiple/dim-rect';\nimport CircleMultiMask from './interaction/action/mask/multiple/circle';\nimport PathMultiMask from './interaction/action/mask/multiple/path';\nimport SmoothPathMultiMask from './interaction/action/mask/multiple/smooth-path';\nimport CursorAction from './interaction/action/cursor';\nimport DataFilter from './interaction/action/data/filter';\nimport DataRangeFilter, { BRUSH_FILTER_EVENTS } from './interaction/action/data/range-filter';\nimport SiblingFilter from './interaction/action/data/sibling-filter';\nimport ElementFilter from './interaction/action/element/filter';\nimport ElementSiblingFilter from './interaction/action/element/sibling-filter';\nimport ButtonAction from './interaction/action/view/button';\nimport ViewDrag from './interaction/action/view/drag';\nimport ViewMove from './interaction/action/view/move';\nimport ScaleTranslate from './interaction/action/view/scale-translate';\nimport ScaleZoom from './interaction/action/view/scale-zoom';\nimport MousewheelScroll from './interaction/action/view/mousewheel-scroll';\nimport AxisDescription from './interaction/action/component/axis/axis-description';\nregisterAction('tooltip', TooltipAction);\nregisterAction('sibling-tooltip', SiblingTooltip);\nregisterAction('ellipsis-text', EllipsisTextAction);\nregisterAction('element-active', ElementActive);\nregisterAction('element-single-active', ElementSingleActive);\nregisterAction('element-range-active', ElementRangeActive);\nregisterAction('element-highlight', ElementHighlight);\nregisterAction('element-highlight-by-x', ElementHighlightByX);\nregisterAction('element-highlight-by-color', ElementHighlightByColor);\nregisterAction('element-single-highlight', ElementSingleHighlight);\nregisterAction('element-range-highlight', ElementRangeHighlight);\nregisterAction('element-sibling-highlight', ElementRangeHighlight, {\n effectSiblings: true,\n effectByRecord: true\n});\nregisterAction('element-selected', ElementSelected);\nregisterAction('element-single-selected', ElementSingleSelected);\nregisterAction('element-range-selected', ElementRangeSelected);\nregisterAction('element-link-by-color', ElementLinkByColor);\nregisterAction('active-region', ActiveRegion);\nregisterAction('list-active', ListActive);\nregisterAction('list-selected', ListSelected);\nregisterAction('list-highlight', ListHighlight);\nregisterAction('list-unchecked', ListUnchecked);\nregisterAction('list-checked', ListChecked);\nregisterAction('list-focus', ListFocus);\nregisterAction('list-radio', ListRadio);\nregisterAction('legend-item-highlight', ListHighlight, {\n componentNames: ['legend']\n});\nregisterAction('axis-label-highlight', ListHighlight, {\n componentNames: ['axis']\n});\nregisterAction('axis-description', AxisDescription);\nregisterAction('rect-mask', RectMask);\nregisterAction('x-rect-mask', DimMask, {\n dim: 'x'\n});\nregisterAction('y-rect-mask', DimMask, {\n dim: 'y'\n});\nregisterAction('circle-mask', CircleMask);\nregisterAction('path-mask', PathMask);\nregisterAction('smooth-path-mask', SmoothPathMask);\nregisterAction('rect-multi-mask', RectMultiMask);\nregisterAction('x-rect-multi-mask', DimRectMultiMask, {\n dim: 'x'\n});\nregisterAction('y-rect-multi-mask', DimRectMultiMask, {\n dim: 'y'\n});\nregisterAction('circle-multi-mask', CircleMultiMask);\nregisterAction('path-multi-mask', PathMultiMask);\nregisterAction('smooth-path-multi-mask', SmoothPathMultiMask);\nregisterAction('cursor', CursorAction);\nregisterAction('data-filter', DataFilter);\nregisterAction('brush', DataRangeFilter);\nregisterAction('brush-x', DataRangeFilter, {\n dims: ['x']\n});\nregisterAction('brush-y', DataRangeFilter, {\n dims: ['y']\n});\nregisterAction('sibling-filter', SiblingFilter);\nregisterAction('sibling-x-filter', SiblingFilter, {\n dims: 'x'\n});\nregisterAction('sibling-y-filter', SiblingFilter, {\n dims: 'y'\n});\nregisterAction('element-filter', ElementFilter);\nregisterAction('element-sibling-filter', ElementSiblingFilter);\nregisterAction('element-sibling-filter-record', ElementSiblingFilter, {\n byRecord: true\n});\nregisterAction('view-drag', ViewDrag);\nregisterAction('view-move', ViewMove);\nregisterAction('scale-translate', ScaleTranslate);\nregisterAction('scale-zoom', ScaleZoom);\nregisterAction('reset-button', ButtonAction, {\n name: 'reset-button',\n text: 'reset'\n});\nregisterAction('mousewheel-scroll', MousewheelScroll);\n// 注册默认的 Interaction 交互行为\nimport { registerInteraction } from './core';\nimport { isMultipleMask } from './interaction/action/util';\nfunction isPointInView(context) {\n return context.isInPlot();\n}\n// 注册 tooltip 的 interaction\nregisterInteraction('tooltip', {\n start: [{\n trigger: 'plot:mousemove',\n action: 'tooltip:show',\n throttle: {\n wait: 50,\n leading: true,\n trailing: false\n }\n }, {\n trigger: 'plot:touchmove',\n action: 'tooltip:show',\n throttle: {\n wait: 50,\n leading: true,\n trailing: false\n }\n }],\n end: [{\n trigger: 'plot:mouseleave',\n action: 'tooltip:hide'\n }, {\n trigger: 'plot:leave',\n action: 'tooltip:hide'\n }, {\n trigger: 'plot:touchend',\n action: 'tooltip:hide'\n }]\n});\nregisterInteraction('ellipsis-text', {\n start: [{\n trigger: 'legend-item-name:mousemove',\n action: 'ellipsis-text:show',\n throttle: {\n wait: 50,\n leading: true,\n trailing: false\n }\n }, {\n trigger: 'legend-item-name:touchstart',\n action: 'ellipsis-text:show',\n throttle: {\n wait: 50,\n leading: true,\n trailing: false\n }\n }, {\n trigger: 'axis-label:mousemove',\n action: 'ellipsis-text:show',\n throttle: {\n wait: 50,\n leading: true,\n trailing: false\n }\n }, {\n trigger: 'axis-label:touchstart',\n action: 'ellipsis-text:show',\n throttle: {\n wait: 50,\n leading: true,\n trailing: false\n }\n }],\n end: [{\n trigger: 'legend-item-name:mouseleave',\n action: 'ellipsis-text:hide'\n }, {\n trigger: 'legend-item-name:touchend',\n action: 'ellipsis-text:hide'\n }, {\n trigger: 'axis-label:mouseleave',\n action: 'ellipsis-text:hide'\n }, {\n trigger: 'axis-label:mouseout',\n action: 'ellipsis-text:hide'\n }, {\n trigger: 'axis-label:touchend',\n action: 'ellipsis-text:hide'\n }]\n});\n// 移动到 element 上 active\nregisterInteraction('element-active', {\n start: [{\n trigger: 'element:mouseenter',\n action: 'element-active:active'\n }],\n end: [{\n trigger: 'element:mouseleave',\n action: 'element-active:reset'\n }]\n});\n// 点击选中,允许取消\nregisterInteraction('element-selected', {\n start: [{\n trigger: 'element:click',\n action: 'element-selected:toggle'\n }]\n});\n// hover highlight,允许取消\nregisterInteraction('element-highlight', {\n start: [{\n trigger: 'element:mouseenter',\n action: 'element-highlight:highlight'\n }],\n end: [{\n trigger: 'element:mouseleave',\n action: 'element-highlight:reset'\n }]\n});\n// hover highlight by x,允许取消\nregisterInteraction('element-highlight-by-x', {\n start: [{\n trigger: 'element:mouseenter',\n action: 'element-highlight-by-x:highlight'\n }],\n end: [{\n trigger: 'element:mouseleave',\n action: 'element-highlight-by-x:reset'\n }]\n});\n// hover highlight by y,允许取消\nregisterInteraction('element-highlight-by-color', {\n start: [{\n trigger: 'element:mouseenter',\n action: 'element-highlight-by-color:highlight'\n }],\n end: [{\n trigger: 'element:mouseleave',\n action: 'element-highlight-by-color:reset'\n }]\n});\n// legend hover,element active\nregisterInteraction('legend-active', {\n start: [{\n trigger: 'legend-item:mouseenter',\n action: ['list-active:active', 'element-active:active']\n }],\n end: [{\n trigger: 'legend-item:mouseleave',\n action: ['list-active:reset', 'element-active:reset']\n }]\n});\n// legend hover,element active\nregisterInteraction('legend-highlight', {\n start: [{\n trigger: 'legend-item:mouseenter',\n action: ['legend-item-highlight:highlight', 'element-highlight:highlight']\n }],\n end: [{\n trigger: 'legend-item:mouseleave',\n action: ['legend-item-highlight:reset', 'element-highlight:reset']\n }]\n});\n// legend hover,element active\nregisterInteraction('axis-label-highlight', {\n start: [{\n trigger: 'axis-label:mouseenter',\n action: ['axis-label-highlight:highlight', 'element-highlight:highlight']\n }],\n end: [{\n trigger: 'axis-label:mouseleave',\n action: ['axis-label-highlight:reset', 'element-highlight:reset']\n }]\n});\n// legend hover,element active\nregisterInteraction('element-list-highlight', {\n start: [{\n trigger: 'element:mouseenter',\n action: ['list-highlight:highlight', 'element-highlight:highlight']\n }],\n end: [{\n trigger: 'element:mouseleave',\n action: ['list-highlight:reset', 'element-highlight:reset']\n }]\n});\n// 框选\nregisterInteraction('element-range-highlight', {\n showEnable: [{\n trigger: 'plot:mouseenter',\n action: 'cursor:crosshair'\n }, {\n trigger: 'mask:mouseenter',\n action: 'cursor:move'\n }, {\n trigger: 'plot:mouseleave',\n action: 'cursor:default'\n }, {\n trigger: 'mask:mouseleave',\n action: 'cursor:crosshair'\n }],\n start: [{\n trigger: 'plot:mousedown',\n isEnable: function isEnable(context) {\n // 不要点击在 mask 上重新开始\n return !context.isInShape('mask');\n },\n action: ['rect-mask:start', 'rect-mask:show']\n }, {\n trigger: 'mask:dragstart',\n action: ['rect-mask:moveStart']\n }],\n processing: [{\n trigger: 'plot:mousemove',\n action: ['rect-mask:resize']\n }, {\n trigger: 'mask:drag',\n action: ['rect-mask:move']\n }, {\n trigger: 'mask:change',\n action: ['element-range-highlight:highlight']\n }],\n end: [{\n trigger: 'plot:mouseup',\n action: ['rect-mask:end']\n }, {\n trigger: 'mask:dragend',\n action: ['rect-mask:moveEnd']\n }, {\n trigger: 'document:mouseup',\n isEnable: function isEnable(context) {\n return !context.isInPlot();\n },\n action: ['element-range-highlight:clear', 'rect-mask:end', 'rect-mask:hide']\n }],\n rollback: [{\n trigger: 'dblclick',\n action: ['element-range-highlight:clear', 'rect-mask:hide']\n }]\n});\nregisterInteraction('brush', {\n showEnable: [{\n trigger: 'plot:mouseenter',\n action: 'cursor:crosshair'\n }, {\n trigger: 'plot:mouseleave',\n action: 'cursor:default'\n }],\n start: [{\n trigger: 'mousedown',\n isEnable: isPointInView,\n action: ['brush:start', 'rect-mask:start', 'rect-mask:show']\n }],\n processing: [{\n trigger: 'mousemove',\n isEnable: isPointInView,\n action: ['rect-mask:resize']\n }],\n end: [{\n trigger: 'mouseup',\n isEnable: isPointInView,\n action: ['brush:filter', 'brush:end', 'rect-mask:end', 'rect-mask:hide', 'reset-button:show']\n }],\n rollback: [{\n trigger: 'reset-button:click',\n action: ['brush:reset', 'reset-button:hide', 'cursor:crosshair']\n }]\n});\nregisterInteraction('brush-visible', {\n showEnable: [{\n trigger: 'plot:mouseenter',\n action: 'cursor:crosshair'\n }, {\n trigger: 'plot:mouseleave',\n action: 'cursor:default'\n }],\n start: [{\n trigger: 'plot:mousedown',\n action: ['rect-mask:start', 'rect-mask:show']\n }],\n processing: [{\n trigger: 'plot:mousemove',\n action: ['rect-mask:resize']\n }, {\n trigger: 'mask:change',\n action: ['element-range-highlight:highlight']\n }],\n end: [{\n trigger: 'plot:mouseup',\n action: ['rect-mask:end', 'rect-mask:hide', 'element-filter:filter', 'element-range-highlight:clear']\n }],\n rollback: [{\n trigger: 'dblclick',\n action: ['element-filter:clear']\n }]\n});\nregisterInteraction('brush-x', {\n showEnable: [{\n trigger: 'plot:mouseenter',\n action: 'cursor:crosshair'\n }, {\n trigger: 'plot:mouseleave',\n action: 'cursor:default'\n }],\n start: [{\n trigger: 'mousedown',\n isEnable: isPointInView,\n action: ['brush-x:start', 'x-rect-mask:start', 'x-rect-mask:show']\n }],\n processing: [{\n trigger: 'mousemove',\n isEnable: isPointInView,\n action: ['x-rect-mask:resize']\n }],\n end: [{\n trigger: 'mouseup',\n isEnable: isPointInView,\n action: ['brush-x:filter', 'brush-x:end', 'x-rect-mask:end', 'x-rect-mask:hide']\n }],\n rollback: [{\n trigger: 'dblclick',\n action: ['brush-x:reset']\n }]\n});\nregisterInteraction('element-path-highlight', {\n showEnable: [{\n trigger: 'plot:mouseenter',\n action: 'cursor:crosshair'\n }, {\n trigger: 'plot:mouseleave',\n action: 'cursor:default'\n }],\n start: [{\n trigger: 'mousedown',\n isEnable: isPointInView,\n action: 'path-mask:start'\n }, {\n trigger: 'mousedown',\n isEnable: isPointInView,\n action: 'path-mask:show'\n }],\n processing: [{\n trigger: 'mousemove',\n action: 'path-mask:addPoint'\n }],\n end: [{\n trigger: 'mouseup',\n action: 'path-mask:end'\n }],\n rollback: [{\n trigger: 'dblclick',\n action: 'path-mask:hide'\n }]\n});\nregisterInteraction('brush-x-multi', {\n showEnable: [{\n trigger: 'plot:mouseenter',\n action: 'cursor:crosshair'\n }, {\n trigger: 'mask:mouseenter',\n action: 'cursor:move'\n }, {\n trigger: 'plot:mouseleave',\n action: 'cursor:default'\n }, {\n trigger: 'mask:mouseleave',\n action: 'cursor:crosshair'\n }],\n start: [{\n trigger: 'mousedown',\n isEnable: isPointInView,\n action: ['x-rect-multi-mask:start', 'x-rect-multi-mask:show']\n }, {\n trigger: 'mask:dragstart',\n action: ['x-rect-multi-mask:moveStart']\n }],\n processing: [{\n trigger: 'mousemove',\n isEnable: function isEnable(context) {\n return !isMultipleMask(context);\n },\n action: ['x-rect-multi-mask:resize']\n }, {\n trigger: 'multi-mask:change',\n action: 'element-range-highlight:highlight'\n }, {\n trigger: 'mask:drag',\n action: ['x-rect-multi-mask:move']\n }],\n end: [{\n trigger: 'mouseup',\n action: ['x-rect-multi-mask:end']\n }, {\n trigger: 'mask:dragend',\n action: ['x-rect-multi-mask:moveEnd']\n }],\n rollback: [{\n trigger: 'dblclick',\n action: ['x-rect-multi-mask:clear', 'cursor:crosshair']\n }, {\n trigger: 'multi-mask:clearAll',\n action: ['element-range-highlight:clear']\n }, {\n trigger: 'multi-mask:clearSingle',\n action: ['element-range-highlight:highlight']\n }]\n});\n// 点击选中,允许取消\nregisterInteraction('element-single-selected', {\n start: [{\n trigger: 'element:click',\n action: 'element-single-selected:toggle'\n }]\n});\n// 筛选数据\nregisterInteraction('legend-filter', {\n showEnable: [{\n trigger: 'legend-item:mouseenter',\n action: ['cursor:pointer', 'list-radio:show']\n }, {\n trigger: 'legend-item:mouseleave',\n action: ['cursor:default', 'list-radio:hide']\n }],\n start: [{\n trigger: 'legend-item:click',\n isEnable: function isEnable(context) {\n return !context.isInShape('legend-item-radio');\n },\n action: ['legend-item-highlight:reset', 'element-highlight:reset', 'list-unchecked:toggle', 'data-filter:filter', 'list-radio:show']\n },\n // 正反选数据: 只有当 radio === truthy 的时候才会有 legend-item-radio 这个元素\n {\n trigger: 'legend-item-radio:mouseenter',\n action: ['list-radio:showTip']\n }, {\n trigger: 'legend-item-radio:mouseleave',\n action: ['list-radio:hideTip']\n }, {\n trigger: 'legend-item-radio:click',\n action: ['list-focus:toggle', 'data-filter:filter', 'list-radio:show']\n }]\n});\n// 筛选数据\nregisterInteraction('continuous-filter', {\n start: [{\n trigger: 'legend:valuechanged',\n action: 'data-filter:filter'\n }]\n});\n// 筛选数据\nregisterInteraction('continuous-visible-filter', {\n start: [{\n trigger: 'legend:valuechanged',\n action: 'element-filter:filter'\n }]\n});\n// 筛选图形\nregisterInteraction('legend-visible-filter', {\n showEnable: [{\n trigger: 'legend-item:mouseenter',\n action: 'cursor:pointer'\n }, {\n trigger: 'legend-item:mouseleave',\n action: 'cursor:default'\n }],\n start: [{\n trigger: 'legend-item:click',\n action: ['legend-item-highlight:reset', 'element-highlight:reset', 'list-unchecked:toggle', 'element-filter:filter']\n }]\n});\n// 出现背景框\nregisterInteraction('active-region', {\n start: [{\n trigger: 'plot:mousemove',\n action: 'active-region:show'\n }],\n end: [{\n trigger: 'plot:mouseleave',\n action: 'active-region:hide'\n }]\n});\n// 显示坐标轴标题详情信息\nregisterInteraction('axis-description', {\n start: [{\n trigger: 'axis-description:mousemove',\n action: 'axis-description:show'\n }],\n end: [{\n trigger: 'axis-description:mouseleave',\n action: 'axis-description:hide'\n }]\n});\nfunction isWheelDown(event) {\n event.gEvent.preventDefault();\n return event.gEvent.originalEvent.deltaY > 0;\n}\nregisterInteraction('view-zoom', {\n start: [{\n trigger: 'plot:mousewheel',\n isEnable: function isEnable(context) {\n return isWheelDown(context.event);\n },\n action: 'scale-zoom:zoomOut',\n throttle: {\n wait: 100,\n leading: true,\n trailing: false\n }\n }, {\n trigger: 'plot:mousewheel',\n isEnable: function isEnable(context) {\n return !isWheelDown(context.event);\n },\n action: 'scale-zoom:zoomIn',\n throttle: {\n wait: 100,\n leading: true,\n trailing: false\n }\n }]\n});\nregisterInteraction('sibling-tooltip', {\n start: [{\n trigger: 'plot:mousemove',\n action: 'sibling-tooltip:show'\n }],\n end: [{\n trigger: 'plot:mouseleave',\n action: 'sibling-tooltip:hide'\n }]\n});\nregisterInteraction('plot-mousewheel-scroll', {\n start: [{\n trigger: 'plot:mousewheel',\n action: 'mousewheel-scroll:scroll'\n }]\n});\n// 暴露一些常量\nexport { VIEW_LIFE_CIRCLE } from './constant';\n/** brush 范围筛选的一些事件常量 */\nexport { BRUSH_FILTER_EVENTS, ELEMENT_RANGE_HIGHLIGHT_EVENTS };\nexport * from './core';","import { __values } from \"tslib\";\nimport { isObject, each, find, get } from '@antv/util';\nimport { polarToCartesian } from '../../../../util/graphics';\n/** label text和line距离 4px */\nvar MARGIN = 4;\nfunction antiCollision(labelShapes, labels, lineHeight, plotRange, center, isRight) {\n var e_1, _a;\n // adjust y position of labels to avoid overlapping\n var overlapping = true;\n var start = plotRange.start;\n var end = plotRange.end;\n var startY = Math.min(start.y, end.y);\n var totalHeight = Math.abs(start.y - end.y);\n var i;\n var maxY = 0;\n var minY = Number.MIN_VALUE;\n var boxes = labels.map(function (label) {\n if (label.y > maxY) {\n maxY = label.y;\n }\n if (label.y < minY) {\n minY = label.y;\n }\n return {\n size: lineHeight,\n targets: [label.y - startY]\n };\n });\n minY -= startY;\n if (maxY - startY > totalHeight) {\n totalHeight = maxY - startY;\n }\n while (overlapping) {\n /* eslint no-loop-func: 0 */\n boxes.forEach(function (box) {\n var target = (Math.min.apply(minY, box.targets) + Math.max.apply(minY, box.targets)) / 2;\n box.pos = Math.min(Math.max(minY, target - box.size / 2), totalHeight - box.size);\n // box.pos = Math.max(0, target - box.size / 2);\n });\n // detect overlapping and join boxes\n overlapping = false;\n i = boxes.length;\n while (i--) {\n if (i > 0) {\n var previousBox = boxes[i - 1];\n var box = boxes[i];\n if (previousBox.pos + previousBox.size > box.pos) {\n // overlapping\n previousBox.size += box.size;\n previousBox.targets = previousBox.targets.concat(box.targets);\n // overflow, shift up\n if (previousBox.pos + previousBox.size > totalHeight) {\n previousBox.pos = totalHeight - previousBox.size;\n }\n boxes.splice(i, 1); // removing box\n overlapping = true;\n }\n }\n }\n }\n i = 0;\n // step 4: normalize y and adjust x\n boxes.forEach(function (b) {\n var posInCompositeBox = startY + lineHeight / 2; // middle of the label\n b.targets.forEach(function () {\n labels[i].y = b.pos + posInCompositeBox;\n posInCompositeBox += lineHeight;\n i++;\n });\n });\n var labelsMap = {};\n try {\n for (var labelShapes_1 = __values(labelShapes), labelShapes_1_1 = labelShapes_1.next(); !labelShapes_1_1.done; labelShapes_1_1 = labelShapes_1.next()) {\n var labelShape = labelShapes_1_1.value;\n labelsMap[labelShape.get('id')] = labelShape;\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (labelShapes_1_1 && !labelShapes_1_1.done && (_a = labelShapes_1.return)) _a.call(labelShapes_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n // (x - cx)^2 + (y - cy)^2 = totalR^2\n labels.forEach(function (label) {\n var rPow2 = label.r * label.r;\n var dyPow2 = Math.pow(Math.abs(label.y - center.y), 2);\n if (rPow2 < dyPow2) {\n label.x = center.x;\n } else {\n var dx = Math.sqrt(rPow2 - dyPow2);\n if (!isRight) {\n // left\n label.x = center.x - dx;\n } else {\n // right\n label.x = center.x + dx;\n }\n }\n // adjust labelShape\n var labelShape = labelsMap[label.id];\n labelShape.attr('x', label.x);\n labelShape.attr('y', label.y);\n // because group could not effect text-shape, should set text-shape position manually\n var textShape = find(labelShape.getChildren(), function (ele) {\n return ele.get('type') === 'text';\n });\n // @ts-ignore\n if (textShape) {\n textShape.attr('y', label.y);\n textShape.attr('x', label.x);\n }\n });\n}\nexport function distribute(items, labels, shapes, region) {\n if (!items.length || !labels.length) {\n return;\n }\n var offset = items[0] ? items[0].offset : 0;\n var coordinate = labels[0].get('coordinate');\n var radius = coordinate.getRadius();\n var center = coordinate.getCenter();\n if (offset > 0) {\n // const lineHeight = get(this.geometry.theme, ['pieLabels', 'labelHeight'], 14);\n var lineHeight_1 = 14; // TODO\n var totalR = radius + offset;\n var totalHeight_1 = totalR * 2 + lineHeight_1 * 2;\n var plotRange_1 = {\n start: coordinate.start,\n end: coordinate.end\n };\n // step 1: separate labels\n var halves_1 = [[], [] // right\n ];\n\n items.forEach(function (labelItem) {\n if (!labelItem) {\n return;\n }\n if (labelItem.textAlign === 'right') {\n // left\n halves_1[0].push(labelItem);\n } else {\n // right or center will be put on the right side\n halves_1[1].push(labelItem);\n }\n });\n halves_1.forEach(function (half, index) {\n // step 2: reduce labels\n var maxLabelsCountForOneSide = totalHeight_1 / lineHeight_1;\n if (half.length > maxLabelsCountForOneSide) {\n half.sort(function (a, b) {\n // sort by percentage DESC\n return b['..percent'] - a['..percent'];\n });\n half.splice(maxLabelsCountForOneSide, half.length - maxLabelsCountForOneSide);\n }\n // step 3: distribute position (x and y)\n half.sort(function (a, b) {\n // sort by y ASC\n return a.y - b.y;\n });\n antiCollision(labels, half, lineHeight_1, plotRange_1, center, index);\n });\n }\n // 配置 labelLine\n each(items, function (item) {\n if (item && item.labelLine) {\n var distance = item.offset;\n var angle = item.angle;\n // 贴近圆周\n var startPoint = polarToCartesian(center.x, center.y, radius, angle);\n var innerPoint = polarToCartesian(center.x, center.y, radius + distance / 2, angle);\n var itemX = item.x + get(item, 'offsetX', 0);\n var itemY = item.y + get(item, 'offsetY', 0);\n var endPoint = {\n x: itemX - Math.cos(angle) * MARGIN,\n y: itemY - Math.sin(angle) * MARGIN\n };\n if (!isObject(item.labelLine)) {\n // labelLine: true\n item.labelLine = {};\n }\n item.labelLine.path = [\"M \".concat(startPoint.x), \"\".concat(startPoint.y, \" Q\").concat(innerPoint.x), \"\".concat(innerPoint.y, \" \").concat(endPoint.x), endPoint.y].join(',');\n }\n });\n}","import { each } from '@antv/util';\n/**\n * @ignore\n * 根据图形元素以及 label 的 bbox 进行调整,如果 label 超出了 shape 的 bbox 则不展示\n */\nexport function limitInShape(items, labels, shapes, region) {\n each(labels, function (label, index) {\n var labelBBox = label.getCanvasBBox(); // 文本有可能发生旋转\n var shapeBBox = shapes[index].getBBox();\n if (labelBBox.minX < shapeBBox.minX || labelBBox.minY < shapeBBox.minY || labelBBox.maxX > shapeBBox.maxX || labelBBox.maxY > shapeBBox.maxY) {\n label.remove(true); // 超出则不展示\n }\n });\n}","import { each } from '@antv/util';\nimport { translate } from '../../../util/transform';\n/**\n * @ignore\n * 将 label 限制在画布范围内,简单得将超出画布的 label 往画布内调整\n * @param labels\n * @param cfg\n */\nexport function limitInCanvas(items, labels, shapes, region) {\n each(labels, function (label) {\n var regionMinX = region.minX,\n regionMinY = region.minY,\n regionMaxX = region.maxX,\n regionMaxY = region.maxY;\n var _a = label.getCanvasBBox(),\n minX = _a.minX,\n minY = _a.minY,\n maxX = _a.maxX,\n maxY = _a.maxY,\n x = _a.x,\n y = _a.y,\n width = _a.width,\n height = _a.height;\n var finalX = x;\n var finalY = y;\n if (minX < regionMinX || maxX < regionMinX) {\n // 超出左侧\n finalX = regionMinX;\n }\n if (minY < regionMinY || maxY < regionMinY) {\n // 超出顶部\n finalY = regionMinY;\n }\n if (minX > regionMaxX) {\n // 整体超出右侧\n finalX = regionMaxX - width;\n } else if (maxX > regionMaxX) {\n // 超出右侧\n finalX = finalX - (maxX - regionMaxX);\n }\n if (minY > regionMaxY) {\n // 整体超出顶部\n finalY = regionMaxY - height;\n } else if (maxY > regionMaxY) {\n // 超出底部\n finalY = finalY - (maxY - regionMaxY);\n }\n if (finalX !== x || finalY !== y) {\n translate(label, finalX - x, finalY - y);\n }\n });\n}","import { each, pick } from '@antv/util';\nimport { getCoordinateBBox } from '../../../util/coordinate';\nimport { getEllipsisText } from '../../../util/text';\nimport { translate } from '../../../util/transform';\n/**\n * @ignore\n * 将 label 限制在 Plot 范围内,将超出 Plot 范围的 label 可选择进行隐藏或者移动位置\n * @param labels\n * @param cfg\n */\nexport function limitInPlot(items, labels, shapes, region, cfg) {\n if (labels.length <= 0) {\n return;\n }\n var direction = (cfg === null || cfg === void 0 ? void 0 : cfg.direction) || ['top', 'right', 'bottom', 'left'];\n var action = (cfg === null || cfg === void 0 ? void 0 : cfg.action) || 'translate';\n var margin = (cfg === null || cfg === void 0 ? void 0 : cfg.margin) || 0;\n var coordinate = labels[0].get('coordinate');\n if (!coordinate) {\n return;\n }\n var _a = getCoordinateBBox(coordinate, margin),\n regionMinX = _a.minX,\n regionMinY = _a.minY,\n regionMaxX = _a.maxX,\n regionMaxY = _a.maxY;\n each(labels, function (label) {\n var _a = label.getCanvasBBox(),\n minX = _a.minX,\n minY = _a.minY,\n maxX = _a.maxX,\n maxY = _a.maxY,\n x = _a.x,\n y = _a.y,\n width = _a.width,\n height = _a.height;\n var finalX = x;\n var finalY = y;\n if (direction.indexOf('left') >= 0 && (minX < regionMinX || maxX < regionMinX)) {\n // 超出左侧\n finalX = regionMinX;\n }\n if (direction.indexOf('top') >= 0 && (minY < regionMinY || maxY < regionMinY)) {\n // 超出顶部\n finalY = regionMinY;\n }\n if (direction.indexOf('right') >= 0) {\n if (minX > regionMaxX) {\n // 整体超出右侧\n finalX = regionMaxX - width;\n } else if (maxX > regionMaxX) {\n // 超出右侧\n finalX = finalX - (maxX - regionMaxX);\n }\n }\n if (direction.indexOf('bottom') >= 0) {\n if (minY > regionMaxY) {\n // 整体超出底部\n finalY = regionMaxY - height;\n } else if (maxY > regionMaxY) {\n // 超出底部\n finalY = finalY - (maxY - regionMaxY);\n }\n }\n if (finalX !== x || finalY !== y) {\n var translateX_1 = finalX - x;\n if (action === 'translate') {\n translate(label, translateX_1, finalY - y);\n } else if (action === 'ellipsis') {\n var textShapes = label.findAll(function (shape) {\n return shape.get('type') === 'text';\n });\n textShapes.forEach(function (textShape) {\n var style = pick(textShape.attr(), ['fontSize', 'fontFamily', 'fontWeight', 'fontStyle', 'fontVariant']);\n var textBox = textShape.getCanvasBBox();\n var text = getEllipsisText(textShape.attr('text'), textBox.width - Math.abs(translateX_1), style);\n textShape.attr('text', text);\n });\n } else {\n label.hide();\n }\n }\n });\n}","import { BBox } from '../../../util/bbox';\nimport { isContrastColorWhite } from '../../../util/color';\nexport function adjustColor(items, labels, shapes) {\n if (shapes.length === 0) {\n return;\n }\n var element = shapes[0].get('element');\n var theme = element.geometry.theme;\n var _a = theme.labels || {},\n fillColorLight = _a.fillColorLight,\n fillColorDark = _a.fillColorDark;\n shapes.forEach(function (shape, index) {\n var label = labels[index];\n var textShape = label.find(function (el) {\n return el.get('type') === 'text';\n });\n var shapeBBox = BBox.fromObject(shape.getBBox());\n var textBBox = BBox.fromObject(textShape.getCanvasBBox());\n var overflow = !shapeBBox.contains(textBBox);\n var bgColor = shape.attr('fill');\n var fillWhite = isContrastColorWhite(bgColor);\n if (!overflow) {\n if (fillWhite) {\n if (fillColorLight) {\n textShape.attr('fill', fillColorLight);\n }\n } else {\n if (fillColorDark) {\n textShape.attr('fill', fillColorDark);\n }\n }\n } else {\n // 出现溢出直接应用 overflowLabel 样式\n textShape.attr(theme.overflowLabels.style);\n }\n });\n}","import { __read, __spreadArray } from \"tslib\";\nimport { each, groupBy, uniq, map, size } from '@antv/util';\nimport { checkShapeOverlap } from '../../util';\nfunction filterLabel(labels) {\n var MAX_CNT = 500; // 最多显示 500 个数据标签\n var filteredLabels = [];\n var pages = Math.max(Math.floor(labels.length / MAX_CNT), 1);\n each(labels, function (label, idx) {\n if (idx % pages === 0) {\n filteredLabels.push(label);\n } else {\n label.set('visible', false);\n }\n });\n return filteredLabels;\n}\n/**\n * 为 interval geometry 定制的数据标签重叠自动隐藏布局方法\n * @param items\n * @param labels\n * @param shapes\n */\nexport function intervalHideOverlap(items, labels, shapes) {\n var _a;\n if (shapes.length === 0) {\n return;\n }\n var element = (_a = shapes[0]) === null || _a === void 0 ? void 0 : _a.get('element');\n var geometry = element === null || element === void 0 ? void 0 : element.geometry;\n if (!geometry || geometry.type !== 'interval') {\n return;\n }\n var filteredLabels = filterLabel(labels);\n var _b = __read(geometry.getXYFields(), 1),\n xField = _b[0];\n var dones = [];\n var todo = [];\n var groupedLabels = groupBy(filteredLabels, function (label) {\n return label.get('data')[xField];\n });\n var xValues = uniq(map(filteredLabels, function (label) {\n return label.get('data')[xField];\n }));\n var xValue;\n filteredLabels.forEach(function (label) {\n label.set('visible', true);\n });\n var addCurrentGroup = function addCurrentGroup(curItems) {\n if (curItems) {\n if (curItems.length) {\n // 最后一个\n todo.push(curItems.pop());\n }\n todo.push.apply(todo, __spreadArray([], __read(curItems), false));\n }\n };\n if (size(xValues) > 0) {\n // 第一组\n xValue = xValues.shift();\n addCurrentGroup(groupedLabels[xValue]);\n }\n if (size(xValues) > 0) {\n // 最后一组\n xValue = xValues.pop();\n addCurrentGroup(groupedLabels[xValue]);\n }\n each(xValues.reverse(), function (val) {\n // 其他组\n addCurrentGroup(groupedLabels[val]);\n });\n while (todo.length > 0) {\n var cur = todo.shift();\n if (cur.get('visible')) {\n if (checkShapeOverlap(cur, dones)) {\n cur.set('visible', false);\n } else {\n dones.push(cur);\n }\n }\n }\n}","import { isNil } from '@antv/util';\n/**\n * @ignore\n * 单个 shape 动画\n * 渐现动画\n * @param shape 执行动画的图形元素\n * @param animateCfg 动画配置\n * @param cfg 额外信息\n */\nexport function fadeIn(shape, animateCfg, cfg) {\n var endState = {\n fillOpacity: isNil(shape.attr('fillOpacity')) ? 1 : shape.attr('fillOpacity'),\n strokeOpacity: isNil(shape.attr('strokeOpacity')) ? 1 : shape.attr('strokeOpacity'),\n opacity: isNil(shape.attr('opacity')) ? 1 : shape.attr('opacity')\n };\n shape.attr({\n fillOpacity: 0,\n strokeOpacity: 0,\n opacity: 0\n });\n shape.animate(endState, animateCfg);\n}\n/**\n * @ignore\n * 单个 shape 动画\n * 渐隐动画\n * @param shape 执行动画的图形元素\n * @param animateCfg 动画配置\n * @param cfg 额外信息\n */\nexport function fadeOut(shape, animateCfg, cfg) {\n var endState = {\n fillOpacity: 0,\n strokeOpacity: 0,\n opacity: 0\n };\n var easing = animateCfg.easing,\n duration = animateCfg.duration,\n delay = animateCfg.delay;\n shape.animate(endState, duration, easing, function () {\n shape.remove(true);\n }, delay);\n}","import { doScaleAnimate } from './util';\n/**\n * @ignore\n * 入场动画\n * x 方向的生长\n * @param element 执行动画的元素\n * @param animateCfg 动画配置\n * @param cfg 额外信息\n */\nexport function growInX(element, animateCfg, cfg) {\n var coordinate = cfg.coordinate,\n minYPoint = cfg.minYPoint;\n doScaleAnimate(element, animateCfg, coordinate, minYPoint, 'x');\n}\n/**\n * @ignore\n * 入场动画\n * y 轴方向上的生长\n * @param element 执行动画的元素\n * @param animateCfg 动画配置\n * @param cfg 额外信息\n */\nexport function growInY(element, animateCfg, cfg) {\n var coordinate = cfg.coordinate,\n minYPoint = cfg.minYPoint;\n doScaleAnimate(element, animateCfg, coordinate, minYPoint, 'y');\n}\n/**\n * @ignore\n * 入场\n * 中心点的向四周的生长动画\n * @param element 执行动画的元素\n * @param animateCfg 动画配置\n * @param cfg 额外信息\n */\nexport function growInXY(element, animateCfg, cfg) {\n var coordinate = cfg.coordinate,\n minYPoint = cfg.minYPoint;\n doScaleAnimate(element, animateCfg, coordinate, minYPoint, 'xy');\n}","import { ext } from '@antv/matrix-util';\n/**\n * @ignore\n * 沿着 x 方向放大的动画\n * @param shape\n * @param animateCfg\n * @param shapeModel\n */\nexport function scaleInX(shape, animateCfg, cfg) {\n var box = shape.getBBox();\n var mappingData = shape.get('origin').mappingData;\n var points = mappingData.points;\n // x 数值如果为负值,那么应该从右往左生长\n var x = points[0].y - points[1].y > 0 ? box.maxX : box.minX;\n var y = (box.minY + box.maxY) / 2;\n shape.applyToMatrix([x, y, 1]);\n var matrix = ext.transform(shape.getMatrix(), [['t', -x, -y], ['s', 0.01, 1], ['t', x, y]]);\n shape.setMatrix(matrix);\n shape.animate({\n matrix: ext.transform(shape.getMatrix(), [['t', -x, -y], ['s', 100, 1], ['t', x, y]])\n }, animateCfg);\n}\n/**\n * @ignore\n * 沿着 y 方向放大的动画\n * @param shape\n * @param animateCfg\n * @param shapeModel\n */\nexport function scaleInY(shape, animateCfg, cfg) {\n var box = shape.getBBox();\n var mappingData = shape.get('origin').mappingData;\n var x = (box.minX + box.maxX) / 2;\n var points = mappingData.points;\n // 数值如果为负值,那么应该从上往下生长,通过 shape 的关键点进行判断\n var y = points[0].y - points[1].y <= 0 ? box.maxY : box.minY;\n shape.applyToMatrix([x, y, 1]);\n var matrix = ext.transform(shape.getMatrix(), [['t', -x, -y], ['s', 1, 0.01], ['t', x, y]]);\n shape.setMatrix(matrix);\n shape.animate({\n matrix: ext.transform(shape.getMatrix(), [['t', -x, -y], ['s', 1, 100], ['t', x, y]])\n }, animateCfg);\n}","import { __assign } from \"tslib\";\nimport { isFunction } from '@antv/util';\nimport { getCoordinateClipCfg } from '../../util/coordinate';\n/**\n * @ignore\n * 整体动画\n * 划入入场动画效果\n * @todo 放两张直角坐标系和极坐标系的图\n * @param element 参与动画的图形元素\n * @param animateCfg 动画配置\n * @param cfg 额外信息\n */\nexport function waveIn(element, animateCfg, cfg) {\n var _a = getCoordinateClipCfg(cfg.coordinate, 20),\n type = _a.type,\n startState = _a.startState,\n endState = _a.endState; // 根据坐标系类型获取整体的剪切区域配置信息\n var clipShape = element.setClip({\n type: type,\n attrs: startState\n }); // 为 shape 设置剪切区域\n // 更新 动画 获取了 toAttrs 需要重新更新上去\n if (cfg.toAttrs) {\n element.attr(cfg.toAttrs);\n }\n // 对剪切图形做动画\n clipShape.animate(endState, __assign(__assign({}, animateCfg), {\n callback: function callback() {\n if (element && !element.get('destroyed')) {\n element.set('clipShape', null);\n }\n clipShape.remove(true); // 动画结束需要将剪切图形销毁\n isFunction(animateCfg.callback) && animateCfg.callback();\n }\n }));\n}","/**\n * @ignore\n * 坐标移动动画\n * @param shape 图形\n * @param animateCfg\n * @param cfg\n */\nexport function positionUpdate(shape, animateCfg, cfg) {\n var toAttrs = cfg.toAttrs;\n // @ts-ignore\n var x = toAttrs.x;\n // @ts-ignore\n var y = toAttrs.y;\n // @ts-ignore\n delete toAttrs.x;\n // @ts-ignore\n delete toAttrs.y;\n shape.attr(toAttrs);\n shape.animate({\n x: x,\n y: y\n }, animateCfg);\n}","/**\n * @ignore\n * 入场动画\n * path 的入场动画\n * @param element 执行动画的元素\n * @param animateCfg 动画配置\n * @param cfg 额外信息\n */\nexport function pathIn(element, animateCfg, cfg) {\n // @ts-ignore\n var length = element.getTotalLength();\n // 设置虚线样式\n element.attr('lineDash', [length]);\n element.animate(function (ratio) {\n return {\n // 对虚线偏移量做动画\n lineDashOffset: (1 - ratio) * length\n };\n }, animateCfg);\n}","/**\n * 需要从轴配置中提取出来作为 meta 的属性 key 列表\n */\nexport var AXIS_META_CONFIG_KEYS = ['type', 'alias', 'tickCount', 'tickInterval', 'min', 'max', 'nice', 'minLimit', 'maxLimit',\n// 坐标轴的范围\n'range', 'tickMethod',\n// type: 'log' 的底\n'base',\n// type: 'exp' 的指数\n'exponent',\n// time 类型的格式化\n'mask',\n// 是否同步\n'sync'];","/**\n * Simplified from https://github.com/zertosh/invariant.\n */\nimport { __spreadArray } from \"tslib\";\nexport var LEVEL;\n(function (LEVEL) {\n LEVEL[\"ERROR\"] = \"error\";\n LEVEL[\"WARN\"] = \"warn\";\n LEVEL[\"INFO\"] = \"log\";\n})(LEVEL || (LEVEL = {}));\nvar BRAND = 'AntV/G2Plot';\n/**\n * 获取错误消息\n * @param format\n * @param args\n */\nfunction getMessage(format) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var argIndex = 0;\n return \"\".concat(BRAND, \": \").concat(format.replace(/%s/g, function () {\n return \"\".concat(args[argIndex++]);\n }));\n}\n/**\n * invariant error\n * @param condition\n * @param format\n * @param args\n */\nexport function invariant(condition, format) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n if (!condition) {\n var error = new Error(getMessage.apply(void 0, __spreadArray([format], args, false)));\n error.name = BRAND;\n // error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n/**\n * 打印语句\n * @param level\n * @param condition\n * @param format\n * @param args\n */\nexport function log(level, condition, format) {\n var args = [];\n for (var _i = 3; _i < arguments.length; _i++) {\n args[_i - 3] = arguments[_i];\n }\n if (!condition) {\n console[level](getMessage.apply(void 0, __spreadArray([format], args, false)));\n }\n}","/**\n * 类似 lodash.pick 的方法\n * @param obj\n * @param keys\n */\nexport function pick(obj, keys) {\n var r = {};\n if (obj !== null && typeof obj === 'object') {\n keys.forEach(function (key) {\n var v = obj[key];\n if (v !== undefined) {\n r[key] = v;\n }\n });\n }\n return r;\n}","import { __assign } from \"tslib\";\nimport { filter, get, isNumber } from '@antv/util';\nimport { LEVEL, log } from './invariant';\nimport { pick } from './pick';\n/**\n * 查看数据是否是全负数、或者全正数\n * @param data\n * @param field\n */\nexport function adjustYMetaByZero(data, field) {\n if (!data) return {};\n // 过滤出数字数据\n var numberData = data.filter(function (datum) {\n var v = get(datum, [field]);\n return isNumber(v) && !isNaN(v);\n });\n var gtZero = numberData.every(function (datum) {\n return get(datum, [field]) >= 0;\n });\n var ltZero = numberData.every(function (datum) {\n return get(datum, [field]) <= 0;\n });\n // 目前是增量更新,对 { min: 0, max: undefined } 进行 update({ max: 0 }) 会得到 { min: 0, max: 0 }\n if (gtZero) {\n return {\n min: 0\n };\n }\n if (ltZero) {\n return {\n max: 0\n };\n }\n return {};\n}\n/**\n * 转换数据格式为带有节点与边的数据格式\n * @param data\n * @param sourceField\n * @param targetField\n * @param weightField\n * @param rawFields 存放一些原数据\n */\nexport function transformDataToNodeLinkData(data, sourceField, targetField, weightField, rawFields) {\n if (rawFields === void 0) {\n rawFields = [];\n }\n if (!Array.isArray(data)) {\n return {\n nodes: [],\n links: []\n };\n }\n // const nodes = [];\n var links = [];\n // 先使用对象方式存储\n var nodesMap = {};\n var nodesIndex = -1;\n // 数组变换成 chord layout 的数据结构\n data.forEach(function (datum) {\n var source = datum[sourceField];\n var target = datum[targetField];\n var weight = datum[weightField];\n var rawData = pick(datum, rawFields);\n // source node\n if (!nodesMap[source]) {\n nodesMap[source] = __assign({\n id: ++nodesIndex,\n name: source\n }, rawData);\n }\n if (!nodesMap[target]) {\n nodesMap[target] = __assign({\n id: ++nodesIndex,\n name: target\n }, rawData);\n }\n // links\n links.push(__assign({\n source: nodesMap[source].id,\n target: nodesMap[target].id,\n // sourceName: source,\n // targetName: target,\n value: weight\n }, rawData));\n });\n return {\n // 需要按照 id 的顺序\n nodes: Object.values(nodesMap).sort(function (a, b) {\n return a.id - b.id;\n }),\n links: links\n };\n}\n/**\n * 处理不合法的数据(过滤 非数值型 和 NaN,保留 null)\n * @param data\n * @param angleField\n */\nexport function processIllegalData(data, field) {\n var processData = filter(data, function (d) {\n var v = d[field];\n return v === null || typeof v === 'number' && !isNaN(v);\n });\n // 打印异常数据情况\n log(LEVEL.WARN, processData.length === data.length, 'illegal data existed in chart data.');\n return processData;\n}","var MAX_MIX_LEVEL = 5; // 最大比对层级\nvar toString = {}.toString;\n// 类型检测\nvar isType = function isType(value, type) {\n return toString.call(value) === '[object ' + type + ']';\n};\nvar isArray = function isArray(value) {\n return isType(value, 'Array');\n};\nvar isObjectLike = function isObjectLike(value) {\n /**\n * isObjectLike({}) => true\n * isObjectLike([1, 2, 3]) => true\n * isObjectLike(Function) => false\n */\n return typeof value === 'object' && value !== null;\n};\nvar isPlainObject = function isPlainObject(value) {\n /**\n * isObjectLike(new Foo) => false\n * isObjectLike([1, 2, 3]) => false\n * isObjectLike({ x: 0, y: 0 }) => true\n */\n if (!isObjectLike(value) || !isType(value, 'Object')) {\n return false;\n }\n var proto = value;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(value) === proto;\n};\n/***\n * @param {any} dist\n * @param {any} src\n * @param {number} level 当前层级\n * @param {number} maxLevel 最大层级\n */\nvar deep = function deep(dist, src, level, maxLevel) {\n level = level || 0;\n maxLevel = maxLevel || MAX_MIX_LEVEL;\n for (var key in src) {\n if (Object.prototype.hasOwnProperty.call(src, key)) {\n var value = src[key];\n if (!value) {\n // null 、 undefined 等情况直接赋值\n dist[key] = value;\n } else {\n if (isPlainObject(value)) {\n if (!isPlainObject(dist[key])) {\n dist[key] = {};\n }\n if (level < maxLevel) {\n deep(dist[key], value, level + 1, maxLevel);\n } else {\n // 层级过深直接赋值,性能问题\n dist[key] = src[key];\n }\n } else if (isArray(value)) {\n dist[key] = [];\n dist[key] = dist[key].concat(value);\n } else {\n dist[key] = value;\n }\n }\n }\n }\n};\n/**\n * deepAssign 功能类似 deepMix\n * 不同点在于 deepAssign 会将 null undefined 等类型直接覆盖给 source\n * 详细参考: __tests__/unit/utils/deep-assign-spec.ts\n */\nexport var deepAssign = function deepAssign(rst) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n for (var i = 0; i < args.length; i += 1) {\n deep(rst, args[i]);\n }\n return rst;\n};","var ctx;\n/**\n * 获取 canvas context\n */\nexport function getCanvasContext() {\n if (!ctx) {\n ctx = document.createElement('canvas').getContext('2d');\n }\n return ctx;\n}","/**\n * get the element's bounding size\n * @param ele dom element\n * @returns the element width and height\n */\nexport function getContainerSize(ele) {\n if (!ele) {\n return {\n width: 0,\n height: 0\n };\n }\n var style = getComputedStyle(ele);\n return {\n width: (ele.clientWidth || parseInt(style.width, 10)) - parseInt(style.paddingLeft, 10) - parseInt(style.paddingRight, 10),\n height: (ele.clientHeight || parseInt(style.height, 10)) - parseInt(style.paddingTop, 10) - parseInt(style.paddingBottom, 10)\n };\n}","/**\n * 类似 lodash.flow 的方法\n * @param flows\n */\nexport function flow() {\n var flows = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n flows[_i] = arguments[_i];\n }\n return function (param) {\n return flows.reduce(function (result, f) {\n return f(result);\n }, param);\n };\n}","import { get, reduce } from '@antv/util';\n/**\n * 在 View 中查找第一个指定 type 类型的 geometry\n * @param view\n * @param type\n */\nexport function findGeometry(view, type) {\n return view.geometries.find(function (g) {\n return g.type === type;\n });\n}\n/**\n * 获取 View 的 所有 elements\n */\nexport function getAllElements(view) {\n return reduce(view.geometries, function (r, geometry) {\n return r.concat(geometry.elements);\n }, []);\n}\n/**\n * 递归获取 View 的 所有 elements, 包括 View 的子 View\n */\nexport function getAllElementsRecursively(view) {\n if (get(view, ['views', 'length'], 0) <= 0) {\n return getAllElements(view);\n }\n return reduce(view.views, function (ele, subView) {\n return ele.concat(getAllElementsRecursively(subView));\n }, getAllElements(view));\n}\n/**\n * 递归获取 View 的 所有 geometries, 包括 View 的子 View\n */\nexport function getAllGeometriesRecursively(view) {\n if (get(view, ['views', 'length'], 0) <= 0) {\n return view.geometries;\n }\n return reduce(view.views, function (ele, subView) {\n return ele.concat(subView.geometries);\n }, view.geometries);\n}","import { __assign } from \"tslib\";\nimport { isType } from '@antv/util';\n/**\n * 兼容 v1 label formatter\n * @param labelOptions\n */\nexport function transformLabel(labelOptions) {\n if (!isType(labelOptions, 'Object')) {\n return labelOptions;\n }\n var label = __assign({}, labelOptions);\n if (label.formatter && !label.content) {\n label.content = label.formatter;\n }\n return label;\n}","import { __spreadArray } from \"tslib\";\nimport { isString, memoize, values } from '@antv/util';\nimport { getCanvasContext } from './context';\n/**\n * 计算文本在画布中的宽度\n * @param text 文本\n * @param font 字体\n */\nexport var measureTextWidth = memoize(function (text, font) {\n if (font === void 0) {\n font = {};\n }\n var fontSize = font.fontSize,\n _a = font.fontFamily,\n fontFamily = _a === void 0 ? 'sans-serif' : _a,\n fontWeight = font.fontWeight,\n fontStyle = font.fontStyle,\n fontVariant = font.fontVariant;\n var ctx = getCanvasContext();\n // @see https://developer.mozilla.org/zh-CN/docs/Web/CSS/font\n ctx.font = [fontStyle, fontWeight, fontVariant, \"\".concat(fontSize, \"px\"), fontFamily].join(' ');\n var metrics = ctx.measureText(isString(text) ? text : '');\n return metrics.width;\n}, function (text, font) {\n if (font === void 0) {\n font = {};\n }\n return __spreadArray([text], values(font), true).join('');\n});","/**\n * 是否真实的是数字\n * @param v\n */\nexport function isRealNumber(v) {\n return typeof v === 'number' && !isNaN(v);\n}\n/**\n * @ignore\n * Determines whether between is\n * @param value\n * @param start\n * @param end\n * @returns true if between\n */\nexport function isBetween(value, start, end) {\n var min = Math.min(start, end);\n var max = Math.max(start, end);\n return value >= min && value <= max;\n}","import { isArray, isNumber } from '@antv/util';\n/**\n * 把 padding 转换成统一的数组写法\n * @param padding\n */\nexport function normalPadding(padding) {\n if (isNumber(padding)) {\n return [padding, padding, padding, padding];\n }\n if (isArray(padding)) {\n var length_1 = padding.length;\n if (length_1 === 1) {\n return [padding[0], padding[0], padding[0], padding[0]];\n }\n if (length_1 === 2) {\n return [padding[0], padding[1], padding[0], padding[1]];\n }\n if (length_1 === 3) {\n return [padding[0], padding[1], padding[2], padding[1]];\n }\n if (length_1 === 4) {\n return padding;\n }\n }\n return [0, 0, 0, 0];\n}\n/**\n * 获取调整的 appendPadding\n */\nexport function getAdjustAppendPadding(padding, position, append) {\n if (position === void 0) {\n position = 'bottom';\n }\n if (append === void 0) {\n append = 25;\n }\n var currentAppendPadding = normalPadding(padding);\n var PADDING = [position.startsWith('top') ? append : 0, position.startsWith('right') ? append : 0, position.startsWith('bottom') ? append : 0, position.startsWith('left') ? append : 0];\n return [currentAppendPadding[0] + PADDING[0], currentAppendPadding[1] + PADDING[1], currentAppendPadding[2] + PADDING[2], currentAppendPadding[3] + PADDING[3]];\n}\n/**\n * 根据图表的 padding 和 appendPadding 计算出图表的最终 padding\n * @param array\n */\nexport function resolveAllPadding(paddings) {\n // 先把数组里的 padding 全部转换成 normal\n var normalPaddings = paddings.map(function (item) {\n return normalPadding(item);\n });\n var finalPadding = [0, 0, 0, 0];\n if (normalPaddings.length > 0) {\n finalPadding = finalPadding.map(function (item, index) {\n // 有几个 padding 数组就遍历几次,累加\n normalPaddings.forEach(function (d, i) {\n item += normalPaddings[i][index];\n });\n return item;\n });\n }\n return finalPadding;\n}","import { vec2 } from '@antv/matrix-util';\nexport function points2Path(points, isInCircle) {\n var path = [];\n if (points.length) {\n path.push(['M', points[0].x, points[0].y]);\n for (var i = 1, length_1 = points.length; i < length_1; i += 1) {\n var item = points[i];\n path.push(['L', item.x, item.y]);\n }\n if (isInCircle) {\n path.push(['Z']);\n }\n }\n return path;\n}\n/**\n * @ignore\n * 计算光滑的贝塞尔曲线\n */\nexport var smoothBezier = function smoothBezier(points, smooth, isLoop, constraint) {\n var cps = [];\n var prevPoint;\n var nextPoint;\n var hasConstraint = !!constraint;\n var min;\n var max;\n if (hasConstraint) {\n min = [Infinity, Infinity];\n max = [-Infinity, -Infinity];\n for (var i = 0, l = points.length; i < l; i++) {\n var point = points[i];\n min = vec2.min([0, 0], min, point);\n max = vec2.max([0, 0], max, point);\n }\n min = vec2.min([0, 0], min, constraint[0]);\n max = vec2.max([0, 0], max, constraint[1]);\n }\n for (var i = 0, len = points.length; i < len; i++) {\n var point = points[i];\n if (isLoop) {\n prevPoint = points[i ? i - 1 : len - 1];\n nextPoint = points[(i + 1) % len];\n } else {\n if (i === 0 || i === len - 1) {\n cps.push(point);\n continue;\n } else {\n prevPoint = points[i - 1];\n nextPoint = points[i + 1];\n }\n }\n var v = [0, 0];\n v = vec2.sub(v, nextPoint, prevPoint);\n v = vec2.scale(v, v, smooth);\n var d0 = vec2.distance(point, prevPoint);\n var d1 = vec2.distance(point, nextPoint);\n var sum = d0 + d1;\n if (sum !== 0) {\n d0 /= sum;\n d1 /= sum;\n }\n var v1 = vec2.scale([0, 0], v, -d0);\n var v2 = vec2.scale([0, 0], v, d1);\n var cp0 = vec2.add([0, 0], point, v1);\n var cp1 = vec2.add([0, 0], point, v2);\n if (hasConstraint) {\n cp0 = vec2.max([0, 0], cp0, min);\n cp0 = vec2.min([0, 0], cp0, max);\n cp1 = vec2.max([0, 0], cp1, min);\n cp1 = vec2.min([0, 0], cp1, max);\n }\n cps.push(cp0);\n cps.push(cp1);\n }\n if (isLoop) {\n cps.push(cps.shift());\n }\n return cps;\n};\n/**\n * @ignore\n * 贝塞尔曲线\n */\nexport function catmullRom2bezier(crp, z, constraint) {\n var isLoop = !!z;\n var pointList = [];\n for (var i = 0, l = crp.length; i < l; i += 2) {\n pointList.push([crp[i], crp[i + 1]]);\n }\n var controlPointList = smoothBezier(pointList, 0.4, isLoop, constraint);\n var len = pointList.length;\n var d1 = [];\n var cp1;\n var cp2;\n var p;\n for (var i = 0; i < len - 1; i++) {\n cp1 = controlPointList[i * 2];\n cp2 = controlPointList[i * 2 + 1];\n p = pointList[i + 1];\n d1.push(['C', cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1]]);\n }\n if (isLoop) {\n cp1 = controlPointList[len];\n cp2 = controlPointList[len + 1];\n p = pointList[0];\n d1.push(['C', cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1]]);\n }\n return d1;\n}\n/**\n * @ignore\n * 根据关键点获取限定了范围的平滑线\n */\nexport function getSplinePath(points, isInCircle, constaint) {\n var data = [];\n var first = points[0];\n var prePoint = null;\n if (points.length <= 2) {\n // 两点以内直接绘制成路径\n return points2Path(points, isInCircle);\n }\n for (var i = 0, len = points.length; i < len; i++) {\n var point = points[i];\n if (!prePoint || !(prePoint.x === point.x && prePoint.y === point.y)) {\n data.push(point.x);\n data.push(point.y);\n prePoint = point;\n }\n }\n var constraint = constaint || [\n // 范围\n [0, 0], [1, 1]];\n var splinePath = catmullRom2bezier(data, isInCircle, constraint);\n splinePath.unshift(['M', first.x, first.y]);\n return splinePath;\n}","/**\n * @desc simple kebabCase like lodash\n *\n * kebabCase('fooBar'); => 'foo-bar'\n */\nexport function kebabCase(word) {\n if (!word) {\n return word;\n }\n var result = word.match(/(([A-Z]{0,1}[a-z]*[^A-Z])|([A-Z]{1}))/g);\n return result.map(function (s) {\n return s.toLowerCase();\n }).join('-');\n}","import { __assign } from \"tslib\";\nimport { each, get, isFunction, isNumber, isString } from '@antv/util';\nimport { kebabCase } from './kebab-case';\nimport { pick } from './pick';\n/**\n * @desc 生成 html-statistic 的 style 字符串 (兼容 canvas 的 shapeStyle 到 css样式上)\n *\n * @param width\n * @param style\n */\nexport function adapteStyle(style) {\n var styleObject = {\n overflow: 'hidden',\n 'white-space': 'nowrap',\n 'text-overflow': 'ellipsis',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center'\n };\n var shapeStyleKeys = ['stroke', 'lineWidth', 'shadowColor', 'strokeOpacity', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY', 'fill'];\n // 兼容 shapeStyle 设置 · start\n if (get(style, 'fill')) {\n styleObject['color'] = style['fill'];\n }\n var _a = pick(style, shapeStyleKeys),\n shadowColor = _a.shadowColor,\n _b = _a.shadowBlur,\n shadowBlur = _b === void 0 ? 0 : _b,\n _c = _a.shadowOffsetX,\n shadowOffsetX = _c === void 0 ? 0 : _c,\n _d = _a.shadowOffsetY,\n shadowOffsetY = _d === void 0 ? 0 : _d;\n styleObject['text-shadow'] = \"\".concat([shadowColor, \"\".concat(shadowOffsetX, \"px\"), \"\".concat(shadowOffsetY, \"px\"), \"\".concat(shadowBlur, \"px\")].join(' '));\n var _e = pick(style, shapeStyleKeys),\n stroke = _e.stroke,\n _f = _e.lineWidth,\n lineWidth = _f === void 0 ? 0 : _f;\n styleObject['-webkit-text-stroke'] = \"\".concat([\"\".concat(lineWidth, \"px\"), stroke].join(' '));\n // 兼容 shapeStyle 设置 · end\n each(style, function (v, k) {\n // 兼容 shapeStyle 的 fontSize 没有单位\n if (['fontSize'].includes(k) && isNumber(v)) {\n styleObject[kebabCase(k)] = \"\".concat(v, \"px\");\n } else if (k && !shapeStyleKeys.includes(k)) {\n styleObject[kebabCase(k)] = \"\".concat(v);\n }\n });\n return styleObject;\n}\n/**\n * @desc 设置 html-statistic 容器的默认样式\n *\n * - 默认事件穿透\n */\nexport function setStatisticContainerStyle(container, style) {\n container.style['pointer-events'] = 'none';\n each(style, function (v, k) {\n if (k && v) {\n container.style[k] = v;\n }\n });\n}\n/**\n * 渲染环图 html-annotation(默认 position 居中 [50%, 50%])\n * @param chart\n * @param options\n * @param meta 字段元信息\n * @param {optional} datum 当前的元数据\n */\nexport var renderStatistic = function renderStatistic(chart, options, datum) {\n var statistic = options.statistic,\n plotType = options.plotType;\n var titleOpt = statistic.title,\n contentOpt = statistic.content;\n [titleOpt, contentOpt].forEach(function (option, idx) {\n if (!option) {\n return;\n }\n var transform = '';\n if (idx === 0) {\n transform = contentOpt ? 'translate(-50%, -100%)' : 'translate(-50%, -50%)';\n } else {\n transform = titleOpt ? 'translate(-50%, 0)' : 'translate(-50%, -50%)';\n }\n var style = isFunction(option.style) ? option.style(datum) : option.style;\n chart.annotation().html(__assign({\n position: ['50%', '50%'],\n html: function html(container, view) {\n var coordinate = view.getCoordinate();\n var containerW = 0;\n if (plotType === 'pie' || plotType === 'ring-progress') {\n containerW = coordinate.getRadius() * coordinate.innerRadius * 2;\n } else if (plotType === 'liquid') {\n var liquidShape = get(view.geometries, [0, 'elements', 0, 'shape']);\n if (liquidShape) {\n // 获取到水波图边框大小\n var path = liquidShape.find(function (t) {\n return t.get('name') === 'wrap';\n });\n var width = path.getCanvasBBox().width;\n containerW = width;\n }\n } else if (!containerW) {\n // 保底方案\n containerW = coordinate.getWidth();\n }\n setStatisticContainerStyle(container, __assign({\n width: \"\".concat(containerW, \"px\"),\n transform: transform\n }, adapteStyle(style)));\n var filteredData = view.getData();\n if (option.customHtml) {\n return option.customHtml(container, view, datum, filteredData);\n }\n var text = option.content;\n if (option.formatter) {\n text = option.formatter(datum, filteredData);\n }\n // todo G2 层修复可以返回空字符串 & G2 层修复允许返回非字符串的内容,比如数值 number\n return text ? isString(text) ? text : \"\".concat(text) : '
        ';\n },\n // @ts-ignore\n key: \"\".concat(idx === 0 ? 'top' : 'bottom', \"-statistic\")\n }, pick(option, ['offsetX', 'offsetY', 'rotate', 'style', 'formatter']) /** 透传配置 */));\n });\n};\n/**\n * 渲染 html-annotation for gauge (等不规则 plot), 默认 position 居中居底 [50%, 100%])\n * @param chart\n * @param options\n * @param meta 字段元信息\n * @param {optional} datum 当前的元数据\n */\nexport var renderGaugeStatistic = function renderGaugeStatistic(chart, options, datum) {\n var statistic = options.statistic;\n var titleOpt = statistic.title,\n contentOpt = statistic.content;\n [titleOpt, contentOpt].forEach(function (option) {\n if (!option) {\n return;\n }\n var style = isFunction(option.style) ? option.style(datum) : option.style;\n chart.annotation().html(__assign({\n position: ['50%', '100%'],\n html: function html(container, view) {\n var coordinate = view.getCoordinate();\n // 弧形的坐标\n var polarCoord = view.views[0].getCoordinate();\n var polarCenter = polarCoord.getCenter();\n var polarRadius = polarCoord.getRadius();\n var polarMaxY = Math.max(Math.sin(polarCoord.startAngle), Math.sin(polarCoord.endAngle)) * polarRadius;\n var offsetY = polarCenter.y + polarMaxY - coordinate.y.start - parseFloat(get(style, 'fontSize', 0));\n var containerWidth = coordinate.getRadius() * coordinate.innerRadius * 2;\n setStatisticContainerStyle(container, __assign({\n width: \"\".concat(containerWidth, \"px\"),\n transform: \"translate(-50%, \".concat(offsetY, \"px)\")\n }, adapteStyle(style)));\n var filteredData = view.getData();\n if (option.customHtml) {\n return option.customHtml(container, view, datum, filteredData);\n }\n var text = option.content;\n if (option.formatter) {\n text = option.formatter(datum, filteredData);\n }\n // todo G2 层修复可以返回空字符串 & G2 层修复允许返回非字符串的内容,比如数值 number\n return text ? isString(text) ? text : \"\".concat(text) : '
        ';\n }\n }, pick(option, ['offsetX', 'offsetY', 'rotate', 'style', 'formatter']) /** 透传配置 */));\n });\n};","import { reduce } from '@antv/util';\n/**\n * 简单的模板引擎,使用方式如下(空格自动忽略):\n * template('hello, {name}', { name: 'AntV' }); // hello, AntV\n * @param string\n * @param options\n */\nexport function template(source, data) {\n if (!data) {\n return source;\n }\n return reduce(\n // @ts-ignore\n data, function (r, v, k) {\n return r.replace(new RegExp(\"{\\\\s*\".concat(k, \"\\\\s*}\"), 'g'), v);\n }, source);\n}","import { each, isFunction } from '@antv/util';\n/**\n * 在 Chart 中查找特定 id 的子 View\n * @param chart\n * @param id\n */\nexport function findViewById(chart, id) {\n return chart.views.find(function (view) {\n return view.id === id;\n });\n}\n/**\n * 获取同 view 同一级的所有 views\n * @param view 当前 view\n * @returns 同一级的 views\n * @ignore\n */\nexport function getViews(view) {\n var parent = view.parent;\n return parent ? parent.views : [];\n}\n/**\n * 获取同 view 同一级的 views,不包括自身\n * @param view 当前 view\n * @returns 同一级的 views\n * @ignore\n */\nexport function getSiblingViews(view) {\n return getViews(view).filter(function (sub) {\n return sub !== view;\n });\n}\n/**\n * 所有的 Geometries 都使用同一动画(各个图形如有区别,自行覆盖)并添加处理动画回调\n * @param view View\n * @param animation 动画配置\n */\nexport function addViewAnimation(view, animation, geometries) {\n if (geometries === void 0) {\n geometries = view.geometries;\n }\n // 同时设置整个 view 动画选项\n if (typeof animation === 'boolean') {\n view.animate(animation);\n } else {\n view.animate(true);\n }\n // 所有的 Geometry 都使用同一动画(各个图形如有区别,自行覆盖)\n each(geometries, function (g) {\n var animationCfg;\n if (isFunction(animation)) {\n animationCfg = animation(g.type || g.shapeType, g) || true;\n } else {\n animationCfg = animation;\n }\n g.animate(animationCfg);\n });\n}","/**\n * 获取设备像素比\n */\nexport function getPixelRatio() {\n return typeof window === 'object' ? window === null || window === void 0 ? void 0 : window.devicePixelRatio : 2;\n}\n/**\n * 初始化 cavnas,设置宽高等\n */\nexport function initCanvas(width, height) {\n if (height === void 0) {\n height = width;\n }\n var canvas = document.createElement('canvas');\n var pixelRatio = getPixelRatio();\n // 画布尺寸\n canvas.width = width * pixelRatio;\n canvas.height = height * pixelRatio;\n // 显示尺寸\n canvas.style.width = \"\".concat(width, \"px\");\n canvas.style.height = \"\".concat(height, \"px\");\n var ctx = canvas.getContext('2d');\n ctx.scale(pixelRatio, pixelRatio);\n return canvas;\n}\n/**\n * 绘制背景\n *\n * @param context\n * @param cfg\n * @param width\n * @param height\n */\nexport function drawBackground(context, cfg, width, height) {\n if (height === void 0) {\n height = width;\n }\n var backgroundColor = cfg.backgroundColor,\n opacity = cfg.opacity;\n context.globalAlpha = opacity;\n context.fillStyle = backgroundColor;\n context.beginPath();\n context.fillRect(0, 0, width, height);\n context.closePath();\n}\n/**\n * 计算贴图单元大小\n *\n * @param size 元素大小\n * @param padding 圆点间隔\n * @param isStagger 是否交错\n * @reutrn 返回贴图单元大小\n */\nexport function getUnitPatternSize(size, padding, isStagger) {\n // 如果交错, unitSize 放大两倍\n var unitSize = size + padding;\n return isStagger ? unitSize * 2 : unitSize;\n}\n/**\n * 计算有交错情况的元素坐标\n *\n * @param unitSize 贴图单元大小\n * @param isStagger 是否交错\n * @reutrn 元素中心坐标 x,y 数组集合\n */\nexport function getSymbolsPosition(unitSize, isStagger) {\n // 如果交错, 交错绘制 dot\n var symbolsPos = isStagger ? [[unitSize * (1 / 4), unitSize * (1 / 4)], [unitSize * (3 / 4), unitSize * (3 / 4)]] : [[unitSize * (1 / 2), unitSize * (1 / 2)]];\n return symbolsPos;\n}\n/**\n * 给整个 pattern贴图 做变换, 目前支持旋转\n *\n * @param pattern 整个贴图\n * @param dpr 设备像素比\n * @param rotation 旋转角度\n */\nexport function transformMatrix(dpr, rotation) {\n var radian = rotation * Math.PI / 180;\n var matrix = {\n a: Math.cos(radian) * (1 / dpr),\n b: Math.sin(radian) * (1 / dpr),\n c: -Math.sin(radian) * (1 / dpr),\n d: Math.cos(radian) * (1 / dpr),\n e: 0,\n f: 0\n };\n return matrix;\n}","import { deepAssign } from '../../utils';\nimport { drawBackground, getPixelRatio, getSymbolsPosition, getUnitPatternSize, initCanvas, transformMatrix } from './util';\n/**\n * dotPattern的默认配置\n */\nexport var defaultDotPatternCfg = {\n size: 6,\n padding: 2,\n backgroundColor: 'transparent',\n opacity: 1,\n rotation: 0,\n fill: '#fff',\n fillOpacity: 0.5,\n stroke: 'transparent',\n lineWidth: 0,\n isStagger: true\n};\n/**\n * 绘制圆点\n *\n * @param context\n * @param cfg\n * @param x 圆点中心坐标x\n * @param y 圆点中心坐标y\n */\nexport function drawDot(context, cfg, x, y) {\n var size = cfg.size,\n fill = cfg.fill,\n lineWidth = cfg.lineWidth,\n stroke = cfg.stroke,\n fillOpacity = cfg.fillOpacity;\n context.beginPath();\n context.globalAlpha = fillOpacity;\n context.fillStyle = fill;\n context.strokeStyle = stroke;\n context.lineWidth = lineWidth;\n context.arc(x, y, size / 2, 0, 2 * Math.PI, false);\n context.fill();\n if (lineWidth) {\n context.stroke();\n }\n context.closePath();\n}\n/**\n * 创建 dot pattern,返回 HTMLCanvasElement\n *\n * @param cfg\n * @returns HTMLCanvasElement\n */\nexport function createDotPattern(cfg) {\n var dotCfg = deepAssign({}, defaultDotPatternCfg, cfg);\n var size = dotCfg.size,\n padding = dotCfg.padding,\n isStagger = dotCfg.isStagger,\n rotation = dotCfg.rotation;\n // 计算 画布大小,dots的位置\n var unitSize = getUnitPatternSize(size, padding, isStagger);\n var dots = getSymbolsPosition(unitSize, isStagger);\n // 初始化 patternCanvas\n var canvas = initCanvas(unitSize, unitSize);\n var ctx = canvas.getContext('2d');\n // 绘制 background,dots\n drawBackground(ctx, dotCfg, unitSize);\n for (var _i = 0, dots_1 = dots; _i < dots_1.length; _i++) {\n var _a = dots_1[_i],\n x = _a[0],\n y = _a[1];\n drawDot(ctx, dotCfg, x, y);\n }\n var pattern = ctx.createPattern(canvas, 'repeat');\n if (pattern) {\n var dpr = getPixelRatio();\n var matrix = transformMatrix(dpr, rotation);\n pattern.setTransform(matrix);\n }\n return pattern;\n}","import { deepAssign } from '../../utils';\nimport { drawBackground, getPixelRatio, initCanvas, transformMatrix } from './util';\n/**\n * linePattern 的 默认配置\n */\nexport var defaultLinePatternCfg = {\n rotation: 45,\n spacing: 5,\n opacity: 1,\n backgroundColor: 'transparent',\n strokeOpacity: 0.5,\n stroke: '#fff',\n lineWidth: 2\n};\n/**\n * 绘制line\n *\n * @param context canvasContext\n * @param cfg linePattern 的配置\n * @param d 绘制 path 所需的 d\n */\nexport function drawLine(context, cfg, d) {\n var stroke = cfg.stroke,\n lineWidth = cfg.lineWidth,\n strokeOpacity = cfg.strokeOpacity;\n var path = new Path2D(d);\n context.globalAlpha = strokeOpacity;\n context.lineCap = 'square';\n context.strokeStyle = lineWidth ? stroke : 'transparent';\n context.lineWidth = lineWidth;\n context.stroke(path);\n}\n/**\n * 创建 linePattern\n */\nexport function createLinePattern(cfg) {\n var lineCfg = deepAssign({}, defaultLinePatternCfg, cfg);\n var spacing = lineCfg.spacing,\n rotation = lineCfg.rotation,\n lineWidth = lineCfg.lineWidth;\n // 计算 pattern 画布的大小, path 所需的 d\n var width = spacing + lineWidth || 1;\n var height = spacing + lineWidth || 1;\n var d = \"\\n M 0 0 L \".concat(width, \" 0\\n M 0 \").concat(height, \" L \").concat(width, \" \").concat(height, \"\\n \");\n // 初始化 patternCanvas\n var canvas = initCanvas(width, height);\n var ctx = canvas.getContext('2d');\n // 绘制 background,line\n drawBackground(ctx, lineCfg, width, height);\n drawLine(ctx, lineCfg, d);\n var pattern = ctx.createPattern(canvas, 'repeat');\n if (pattern) {\n var dpr = getPixelRatio();\n var matrix = transformMatrix(dpr, rotation);\n pattern.setTransform(matrix);\n }\n // 返回 Pattern 对象\n return pattern;\n}","import { deepAssign } from '../../utils';\nimport { drawBackground, getPixelRatio, getSymbolsPosition, getUnitPatternSize, initCanvas, transformMatrix } from './util';\n/**\n * squarePattern 的 默认配置\n */\nexport var defaultSquarePatternCfg = {\n size: 6,\n padding: 1,\n isStagger: true,\n backgroundColor: 'transparent',\n opacity: 1,\n rotation: 0,\n fill: '#fff',\n fillOpacity: 0.5,\n stroke: 'transparent',\n lineWidth: 0\n};\n/**\n * 绘制square\n *\n * @param context canvasContext\n * @param cfg squarePattern 的配置\n * @param x和y square的中心位置\n */\nexport function drawSquare(context, cfg, x, y) {\n var stroke = cfg.stroke,\n size = cfg.size,\n fill = cfg.fill,\n lineWidth = cfg.lineWidth,\n fillOpacity = cfg.fillOpacity;\n context.globalAlpha = fillOpacity;\n context.strokeStyle = stroke;\n context.lineWidth = lineWidth;\n context.fillStyle = fill;\n // 因为正方形绘制从左上角开始,所以x,y做个偏移\n context.strokeRect(x - size / 2, y - size / 2, size, size);\n context.fillRect(x - size / 2, y - size / 2, size, size);\n}\n/**\n * 创建 squarePattern\n */\nexport function createSquarePattern(cfg) {\n var squareCfg = deepAssign({}, defaultSquarePatternCfg, cfg);\n var size = squareCfg.size,\n padding = squareCfg.padding,\n isStagger = squareCfg.isStagger,\n rotation = squareCfg.rotation;\n // 计算 画布大小,squares的位置\n var unitSize = getUnitPatternSize(size, padding, isStagger);\n var squares = getSymbolsPosition(unitSize, isStagger); // 计算方法与 dots 一样\n // 初始化 patternCanvas\n var canvas = initCanvas(unitSize, unitSize);\n var ctx = canvas.getContext('2d');\n // 绘制 background,squares\n drawBackground(ctx, squareCfg, unitSize);\n for (var _i = 0, squares_1 = squares; _i < squares_1.length; _i++) {\n var _a = squares_1[_i],\n x = _a[0],\n y = _a[1];\n drawSquare(ctx, squareCfg, x, y);\n }\n var pattern = ctx.createPattern(canvas, 'repeat');\n if (pattern) {\n var dpr = getPixelRatio();\n var matrix = transformMatrix(dpr, rotation);\n pattern.setTransform(matrix);\n }\n return pattern;\n}","import { createDotPattern } from './dot';\nimport { createLinePattern } from './line';\nimport { createSquarePattern } from './square';\n/**\n * 获取内置的 CanvasPattern 方法\n * @param options\n * @returns\n */\nexport function getCanvasPattern(options) {\n var type = options.type,\n cfg = options.cfg;\n var pattern;\n switch (type) {\n case 'dot':\n pattern = createDotPattern(cfg);\n break;\n case 'line':\n pattern = createLinePattern(cfg);\n break;\n case 'square':\n pattern = createSquarePattern(cfg);\n break;\n default:\n break;\n }\n return pattern;\n}","import { __assign, __spreadArray } from \"tslib\";\nimport { Util } from '@antv/g2';\nimport { get } from '@antv/util';\nimport { deepAssign } from '../utils';\nimport { getCanvasPattern } from '../utils/pattern';\n/**\n * Pattern 通道,处理图案填充\n * 🚀 目前支持图表类型:饼图、柱状图、条形图、玉珏图等(不支持在多 view 图表中,后续按需扩展)\n *\n * @param key key of style property\n * @returns\n */\nexport function pattern(key) {\n var _this = this;\n return function (params) {\n var _a;\n var options = params.options,\n chart = params.chart;\n var patternOption = options.pattern;\n // 没有 pattern 配置,则直接返回\n if (!patternOption) {\n return params;\n }\n /** ~~~~~~~ 进行贴图图案处理 ~~~~~~~ */\n var style = function style(datum) {\n var _a, _b, _c;\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var defaultColor = chart.getTheme().defaultColor;\n var color = defaultColor;\n var colorAttribute = (_b = (_a = chart.geometries) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.getAttribute('color');\n if (colorAttribute) {\n var colorField = colorAttribute.getFields()[0];\n var seriesValue = get(datum, colorField);\n color = Util.getMappingValue(colorAttribute, seriesValue, ((_c = colorAttribute.values) === null || _c === void 0 ? void 0 : _c[0]) || defaultColor);\n }\n var pattern = patternOption;\n // 1. 如果 patternOption 是一个回调,则获取回调结果。`(datum: Datum, color: string) => CanvasPattern`\n if (typeof patternOption === 'function') {\n pattern = patternOption.call(_this, datum, color);\n }\n // 2. 如果 pattern 不是 CanvasPattern,则进一步处理,否则直接赋予给 fill\n if (pattern instanceof CanvasPattern === false) {\n // 通过 createPattern(PatternStyle) 转换为 CanvasPattern\n pattern = getCanvasPattern(deepAssign({}, {\n cfg: {\n backgroundColor: color\n }\n }, pattern));\n }\n var styleOption = options[key];\n return __assign(__assign({}, typeof styleOption === 'function' ? styleOption.call.apply(styleOption, __spreadArray([_this, datum], args, false)) : styleOption || {}), {\n fill: pattern || color\n });\n };\n return deepAssign({}, params, {\n options: (_a = {}, _a[key] = style, _a)\n });\n };\n}","import { __spreadArray } from \"tslib\";\nimport { each, isNil, isObject } from '@antv/util';\nimport { AXIS_META_CONFIG_KEYS } from '../constant';\nimport { addViewAnimation, deepAssign, pick } from '../utils';\n/**\n * 通用 legend 配置, 适用于带 colorField 或 seriesField 的图表\n * @param params\n */\nexport function legend(params) {\n var chart = params.chart,\n options = params.options;\n var legend = options.legend,\n colorField = options.colorField,\n seriesField = options.seriesField;\n if (legend === false) {\n chart.legend(false);\n } else if (colorField || seriesField) {\n chart.legend(colorField || seriesField, legend);\n }\n return params;\n}\n/**\n * 通用 tooltip 配置\n * @param params\n */\nexport function tooltip(params) {\n var chart = params.chart,\n options = params.options;\n var tooltip = options.tooltip;\n if (tooltip !== undefined) {\n chart.tooltip(tooltip);\n }\n return params;\n}\n/**\n * Interaction 配置\n * @param params\n */\nexport function interaction(params) {\n var chart = params.chart,\n options = params.options;\n var interactions = options.interactions;\n each(interactions, function (i) {\n if (i.enable === false) {\n chart.removeInteraction(i.type);\n } else {\n chart.interaction(i.type, i.cfg || {});\n }\n });\n return params;\n}\n/**\n * 动画\n * @param params\n */\nexport function animation(params) {\n var chart = params.chart,\n options = params.options;\n var animation = options.animation;\n // 所有的 Geometry 都使用同一动画(各个图形如有区别,自行覆盖)\n addViewAnimation(chart, animation);\n return params;\n}\n/**\n * 设置全局主题配置\n * @param params\n */\nexport function theme(params) {\n var chart = params.chart,\n options = params.options;\n var theme = options.theme;\n // 存在主题才设置主题\n if (theme) {\n chart.theme(theme);\n }\n return params;\n}\n/**\n * 状态 state 配置\n * @param params\n */\nexport function state(params) {\n var chart = params.chart,\n options = params.options;\n var state = options.state;\n if (state) {\n each(chart.geometries, function (geometry) {\n geometry.state(state);\n });\n }\n return params;\n}\n/**\n * 处理缩略轴的 adaptor\n * @param params\n */\nexport function slider(params) {\n var chart = params.chart,\n options = params.options;\n var slider = options.slider;\n chart.option('slider', slider);\n return params;\n}\n/**\n * 处理缩略轴的 adaptor\n * @param params\n */\nexport function scrollbar(params) {\n var chart = params.chart,\n options = params.options;\n var scrollbar = options.scrollbar;\n chart.option('scrollbar', scrollbar);\n return params;\n}\n/**\n * scale 的 adaptor\n * @param axes\n */\nexport function scale(axes, meta) {\n return function (params) {\n var chart = params.chart,\n options = params.options;\n // 1. 轴配置中的 scale 信息\n var scales = {};\n each(axes, function (axis, field) {\n scales[field] = pick(axis, AXIS_META_CONFIG_KEYS);\n });\n // 2. meta 直接是 scale 的信息\n scales = deepAssign({}, meta, options.meta, scales);\n chart.scale(scales);\n return params;\n };\n}\n/**\n * annotation 配置\n * @param params\n */\nexport function annotation(annotationOptions) {\n return function (params) {\n var chart = params.chart,\n options = params.options;\n var annotationController = chart.getController('annotation');\n /** 自定义 annotation */\n each(__spreadArray(__spreadArray([], options.annotations || [], true), annotationOptions || [], true), function (annotationOption) {\n // @ts-ignore\n annotationController.annotation(annotationOption);\n });\n return params;\n };\n}\n/**\n * 自动设置 limitInPlot\n * @param params\n */\nexport function limitInPlot(params) {\n var chart = params.chart,\n options = params.options;\n var yAxis = options.yAxis,\n limitInPlot = options.limitInPlot;\n var value = limitInPlot;\n // 用户没有设置 limitInPlot,则自动根据 yAxis 是否有 min/max 来设置 limitInPlot\n if (isObject(yAxis) && isNil(limitInPlot)) {\n if (Object.values(pick(yAxis, ['min', 'max', 'minLimit', 'maxLimit'])).some(function (value) {\n return !isNil(value);\n })) {\n value = true;\n } else {\n value = false;\n }\n }\n chart.limitInPlot = value;\n return params;\n}\n/**\n * 坐标系转换\n */\nexport function transformations(coordinateType) {\n if (coordinateType === void 0) {\n coordinateType = 'rect';\n }\n return function (params) {\n var chart = params.chart,\n options = params.options;\n var coordinate = options.coordinate;\n var actions = Array.from(coordinate || []).map(function (cfg) {\n if (cfg.type === 'reflectX') return ['reflect', 'x'];\n if (cfg.type === 'reflectY') return ['reflect', 'y'];\n if (cfg.type === 'transpose') return ['transpose'];\n return null;\n }).filter(function (d) {\n return !!d;\n });\n if (actions.length !== 0) {\n chart.coordinate({\n type: coordinateType,\n actions: actions\n });\n }\n return params;\n };\n}\nexport { pattern } from './pattern';","import { each } from '@antv/util';\n/**\n * @file 全局的一些变量定义:含国际化、主题...\n */\nexport var GLOBAL = {\n /** 全局语言 */\n locale: 'en-US'\n};\n/**\n * 全局变量设置\n * @param key\n * @param value\n */\nexport function setGlobal(datum) {\n each(datum, function (v, k) {\n return GLOBAL[k] = v;\n });\n}","import { get as _get } from '@antv/util';\nimport { template } from '../utils';\nimport { GLOBAL } from './global';\nvar LocaleMap = {};\n/**\n * register a locale\n * @param locale\n * @param localeObj\n */\nexport function registerLocale(locale, localeObj) {\n LocaleMap[locale] = localeObj;\n}\n/**\n * get locale of specific language\n * @param lang\n * @returns\n */\nexport function getLocale(locale) {\n return {\n get: function get(key, obj) {\n return template(_get(LocaleMap[locale], key) || _get(LocaleMap[GLOBAL.locale], key) || _get(LocaleMap['en-US'], key) || key, obj);\n }\n };\n}","import { get } from '@antv/util';\n/**\n * 获得 tooltip 的映射信息\n * @param tooltip\n * @param defaultFields\n */\nexport function getTooltipMapping(tooltip, defaultFields) {\n if (tooltip === false) {\n return {\n fields: false // 关闭 tooltip\n };\n }\n\n var fields = get(tooltip, 'fields');\n var formatter = get(tooltip, 'formatter');\n if (formatter && !fields) {\n fields = defaultFields;\n }\n return {\n fields: fields,\n formatter: formatter\n };\n}","import { __assign, __rest, __spreadArray } from \"tslib\";\nimport { isEmpty, isFunction, isNumber, isObject, isString, uniq } from '@antv/util';\nimport { transformLabel } from '../../utils';\n/**\n * 获得映射的字段列表\n * @param options\n * @param field\n */\nexport function getMappingField(o, field) {\n var type = o.type,\n xField = o.xField,\n yField = o.yField,\n colorField = o.colorField,\n shapeField = o.shapeField,\n sizeField = o.sizeField,\n styleField = o.styleField;\n var rawFields = o.rawFields;\n var fields = [];\n rawFields = (isFunction(rawFields) ? rawFields(type, field) : rawFields) || [];\n // 因为 color 会影响到数据分组,以及最后的图形映射。所以导致 bar 图中的 widthRatio 设置不生效\n // 所以对于 color 字段,仅仅保留 colorField 好了! + rawFields\n // shape, size 同理\n if (field === 'color') {\n fields = __spreadArray([colorField || xField], rawFields, true);\n } else if (field === 'shape') {\n fields = __spreadArray([shapeField || xField], rawFields, true);\n } else if (field === 'size') {\n fields = __spreadArray([sizeField || xField], rawFields, true);\n } else {\n fields = __spreadArray([xField, yField, colorField, shapeField, sizeField, styleField], rawFields, true);\n // 一定能找到的!\n var idx = ['x', 'y', 'color', 'shape', 'size', 'style'].indexOf(field);\n var f = fields[idx];\n // 删除当前字段\n fields.splice(idx, 1);\n // 插入到第一个\n fields.unshift(f);\n }\n var mappingFields = uniq(fields.filter(function (f) {\n return !!f;\n }));\n /**\n * 修复 line geometry 无拆分时 color 回调错误\n * eg:\n * geometry.color(xField, ()=> '#f24')\n */\n var tileMappingField = type === 'line' && [xField, yField].includes(mappingFields.join('*')) ? '' : mappingFields.join('*');\n return {\n mappingFields: mappingFields,\n tileMappingField: tileMappingField\n };\n}\n/**\n * 获得映射函数\n * @param mappingFields\n * @param func\n */\nexport function getMappingFunction(mappingFields, func) {\n if (!func) return undefined;\n // 返回函数\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var params = {};\n mappingFields.forEach(function (f, idx) {\n params[f] = args[idx];\n });\n // 删除 undefined\n delete params['undefined'];\n return func(params);\n };\n}\n/**\n * 通用 geometry 的配置处理的 adaptor\n * @param params\n */\nexport function geometry(params) {\n var chart = params.chart,\n options = params.options;\n var type = options.type,\n args = options.args,\n mapping = options.mapping,\n xField = options.xField,\n yField = options.yField,\n colorField = options.colorField,\n shapeField = options.shapeField,\n sizeField = options.sizeField,\n tooltipFields = options.tooltipFields,\n label = options.label,\n state = options.state,\n customInfo = options.customInfo;\n // 如果没有 mapping 信息,那么直接返回\n if (!mapping) {\n return params;\n }\n var color = mapping.color,\n shape = mapping.shape,\n size = mapping.size,\n style = mapping.style,\n tooltip = mapping.tooltip;\n // 创建 geometry\n var geometry = chart[type](args).position(\"\".concat(xField, \"*\").concat(yField));\n /**\n * color 的几种情况\n * g.color('red');\n * g.color('color', ['red', 'blue']);\n * g.color('x', (x, y) => 'red');\n * g.color('color', (color, x, y) => 'red');\n */\n if (isString(color)) {\n colorField ? geometry.color(colorField, color) : geometry.color(color);\n } else if (isFunction(color)) {\n var _a = getMappingField(options, 'color'),\n mappingFields = _a.mappingFields,\n tileMappingField = _a.tileMappingField;\n geometry.color(tileMappingField, getMappingFunction(mappingFields, color));\n } else {\n colorField && geometry.color(colorField, color);\n }\n /**\n * shape 的几种情况\n * g.shape('rect');\n * g.shape('shape', ['rect', 'circle']);\n * g.shape('x*y', (x, y) => 'rect');\n * g.shape('shape*x*y', (shape, x, y) => 'rect');\n */\n if (isString(shape)) {\n shapeField ? geometry.shape(shapeField, [shape]) : geometry.shape(shape); // [shape] 需要在 G2 做掉\n } else if (isFunction(shape)) {\n var _b = getMappingField(options, 'shape'),\n mappingFields = _b.mappingFields,\n tileMappingField = _b.tileMappingField;\n geometry.shape(tileMappingField, getMappingFunction(mappingFields, shape));\n } else {\n shapeField && geometry.shape(shapeField, shape);\n }\n /**\n * size 的几种情况\n * g.size(10);\n * g.size('size', [10, 20]);\n * g.size('x*y', (x, y) => 10);\n * g.color('size*x*y', (size, x, y) => 1-);\n */\n if (isNumber(size)) {\n sizeField ? geometry.size(sizeField, size) : geometry.size(size);\n } else if (isFunction(size)) {\n var _c = getMappingField(options, 'size'),\n mappingFields = _c.mappingFields,\n tileMappingField = _c.tileMappingField;\n geometry.size(tileMappingField, getMappingFunction(mappingFields, size));\n } else {\n sizeField && geometry.size(sizeField, size);\n }\n /**\n * style 的几种情况\n * g.style({ fill: 'red' });\n * g.style('x*y*color', (x, y, color) => ({ fill: 'red' }));\n */\n if (isFunction(style)) {\n var _d = getMappingField(options, 'style'),\n mappingFields = _d.mappingFields,\n tileMappingField = _d.tileMappingField;\n geometry.style(tileMappingField, getMappingFunction(mappingFields, style));\n } else if (isObject(style)) {\n geometry.style(style);\n }\n /**\n * tooltip 的 API\n * g.tooltip('x*y*color', (x, y, color) => ({ name, value }));\n * g.tooltip(false);\n */\n if (tooltipFields === false) {\n geometry.tooltip(false);\n } else if (!isEmpty(tooltipFields)) {\n geometry.tooltip(tooltipFields.join('*'), getMappingFunction(tooltipFields, tooltip));\n }\n /**\n * label 的映射\n */\n if (label === false) {\n geometry.label(false);\n } else if (label) {\n var callback = label.callback,\n fields = label.fields,\n cfg = __rest(label, [\"callback\", \"fields\"]);\n geometry.label({\n fields: fields || [yField],\n callback: callback,\n cfg: transformLabel(cfg)\n });\n }\n /**\n * state 状态样式\n */\n if (state) {\n geometry.state(state);\n }\n /**\n * 自定义信息\n */\n if (customInfo) {\n geometry.customInfo(customInfo);\n }\n // 防止因为 x y 字段做了通道映射,导致生成图例\n [xField, yField].filter(function (f) {\n return f !== colorField;\n }).forEach(function (f) {\n chart.legend(f, false);\n });\n return __assign(__assign({}, params), {\n // geometry adaptor 额外需要做的事情,就是将创建好的 geometry 返回到下一层 adaptor,防止通过 type 查询的时候容易误判\n ext: {\n geometry: geometry\n }\n });\n}","import { deepMix } from '@antv/util';\nimport { deepAssign } from '../../utils';\nimport { getTooltipMapping } from '../../utils/tooltip';\nimport { geometry } from './base';\n/**\n * area geometry 的配置处理\n * @param params\n */\nexport function area(params) {\n var options = params.options;\n var area = options.area,\n xField = options.xField,\n yField = options.yField,\n seriesField = options.seriesField,\n smooth = options.smooth,\n tooltip = options.tooltip,\n useDeferredLabel = options.useDeferredLabel;\n var _a = getTooltipMapping(tooltip, [xField, yField, seriesField]),\n fields = _a.fields,\n formatter = _a.formatter;\n // 如果存在才处理\n return area ? geometry(deepAssign({}, params, {\n options: {\n type: 'area',\n colorField: seriesField,\n tooltipFields: fields,\n mapping: deepMix({\n shape: smooth ? 'smooth' : 'area',\n tooltip: formatter\n }, area),\n args: {\n useDeferredLabel: useDeferredLabel\n }\n }\n })) : params;\n}","import { __assign } from \"tslib\";\nimport { deepAssign } from '../../utils';\nimport { getTooltipMapping } from '../../utils/tooltip';\nimport { geometry } from './base';\n/**\n * edge 的配置处理\n * @param params\n */\nexport function edge(params) {\n var options = params.options;\n var edge = options.edge,\n xField = options.xField,\n yField = options.yField,\n seriesField = options.seriesField,\n tooltip = options.tooltip,\n useDeferredLabel = options.useDeferredLabel;\n var _a = getTooltipMapping(tooltip, [xField, yField, seriesField]),\n fields = _a.fields,\n formatter = _a.formatter;\n return edge ? geometry(deepAssign({}, params, {\n options: {\n type: 'edge',\n colorField: seriesField,\n tooltipFields: fields,\n mapping: __assign({\n tooltip: formatter\n }, edge),\n args: {\n useDeferredLabel: useDeferredLabel\n }\n }\n })) : params;\n}","import { __assign } from \"tslib\";\nimport { getTheme } from '@antv/g2';\nimport { isNil, isObject } from '@antv/util';\nimport { deepAssign } from '../../utils';\nimport { getTooltipMapping } from '../../utils/tooltip';\nimport { geometry } from './base';\n/**\n * 柱形图其他的 adaptor\n * @param params\n */\nfunction otherAdaptor(params) {\n var chart = params.chart,\n options = params.options,\n ext = params.ext;\n var seriesField = options.seriesField,\n isGroup = options.isGroup,\n isStack = options.isStack,\n marginRatio = options.marginRatio,\n widthRatio = options.widthRatio,\n groupField = options.groupField,\n theme = options.theme;\n /**\n * adjust\n */\n var adjust = [];\n if (seriesField) {\n // group\n if (isGroup) {\n adjust.push({\n type: 'dodge',\n dodgeBy: groupField || seriesField,\n marginRatio: marginRatio\n });\n }\n // stack\n if (isStack) {\n adjust.push({\n type: 'stack',\n marginRatio: marginRatio\n });\n }\n }\n if (adjust.length && (ext === null || ext === void 0 ? void 0 : ext.geometry)) {\n var g = ext === null || ext === void 0 ? void 0 : ext.geometry;\n g.adjust(adjust);\n }\n // widthRatio\n if (!isNil(widthRatio)) {\n chart.theme(deepAssign({}, isObject(theme) ? theme : getTheme(theme), {\n // columWidthRatio 配置覆盖 theme 中的配置\n columnWidthRatio: widthRatio\n }));\n }\n return params;\n}\nexport function interval(params) {\n var options = params.options;\n var xField = options.xField,\n yField = options.yField,\n interval = options.interval,\n seriesField = options.seriesField,\n tooltip = options.tooltip,\n minColumnWidth = options.minColumnWidth,\n maxColumnWidth = options.maxColumnWidth,\n columnBackground = options.columnBackground,\n dodgePadding = options.dodgePadding,\n intervalPadding = options.intervalPadding,\n useDeferredLabel = options.useDeferredLabel;\n var _a = getTooltipMapping(tooltip, [xField, yField, seriesField]),\n fields = _a.fields,\n formatter = _a.formatter;\n // 保障一定要存在 interval 映射\n var ext = (interval ? geometry(deepAssign({}, params, {\n options: {\n type: 'interval',\n colorField: seriesField,\n tooltipFields: fields,\n mapping: __assign({\n tooltip: formatter\n }, interval),\n args: {\n dodgePadding: dodgePadding,\n intervalPadding: intervalPadding,\n minColumnWidth: minColumnWidth,\n maxColumnWidth: maxColumnWidth,\n background: columnBackground,\n useDeferredLabel: useDeferredLabel\n }\n }\n })) : params).ext;\n return otherAdaptor(__assign(__assign({}, params), {\n ext: ext\n }));\n}","import { deepMix } from '@antv/util';\nimport { deepAssign } from '../../utils';\nimport { getTooltipMapping } from '../../utils/tooltip';\nimport { geometry } from './base';\n/**\n * line 辅助点的配置处理\n * @param params\n */\nexport function line(params) {\n var options = params.options;\n var line = options.line,\n stepType = options.stepType,\n xField = options.xField,\n yField = options.yField,\n seriesField = options.seriesField,\n smooth = options.smooth,\n connectNulls = options.connectNulls,\n tooltip = options.tooltip,\n useDeferredLabel = options.useDeferredLabel;\n var _a = getTooltipMapping(tooltip, [xField, yField, seriesField]),\n fields = _a.fields,\n formatter = _a.formatter;\n // 如果存在才处理\n return line ? geometry(deepAssign({}, params, {\n options: {\n type: 'line',\n colorField: seriesField,\n tooltipFields: fields,\n mapping: deepMix({\n shape: stepType || (smooth ? 'smooth' : 'line'),\n tooltip: formatter\n }, line),\n args: {\n connectNulls: connectNulls,\n useDeferredLabel: useDeferredLabel\n }\n }\n })) : params;\n}","import { __assign } from \"tslib\";\nimport { deepAssign } from '../../utils';\nimport { getTooltipMapping } from '../../utils/tooltip';\nimport { geometry } from './base';\n/**\n * point 辅助点的配置处理\n * @param params\n */\nexport function point(params) {\n var options = params.options;\n var point = options.point,\n xField = options.xField,\n yField = options.yField,\n seriesField = options.seriesField,\n sizeField = options.sizeField,\n shapeField = options.shapeField,\n tooltip = options.tooltip,\n useDeferredLabel = options.useDeferredLabel;\n var _a = getTooltipMapping(tooltip, [xField, yField, seriesField, sizeField, shapeField]),\n fields = _a.fields,\n formatter = _a.formatter;\n return point ? geometry(deepAssign({}, params, {\n options: {\n type: 'point',\n colorField: seriesField,\n shapeField: shapeField,\n tooltipFields: fields,\n mapping: __assign({\n tooltip: formatter\n }, point),\n args: {\n useDeferredLabel: useDeferredLabel\n }\n }\n })) : params;\n}","import { __assign } from \"tslib\";\nimport { deepAssign } from '../../utils';\nimport { getTooltipMapping } from '../../utils/tooltip';\nimport { geometry } from './base';\n/**\n * polygon 的配置处理\n * @param params\n */\nexport function polygon(params) {\n var options = params.options;\n var polygon = options.polygon,\n xField = options.xField,\n yField = options.yField,\n seriesField = options.seriesField,\n tooltip = options.tooltip,\n useDeferredLabel = options.useDeferredLabel;\n var _a = getTooltipMapping(tooltip, [xField, yField, seriesField]),\n fields = _a.fields,\n formatter = _a.formatter;\n return polygon ? geometry(deepAssign({}, params, {\n options: {\n type: 'polygon',\n colorField: seriesField,\n tooltipFields: fields,\n mapping: __assign({\n tooltip: formatter\n }, polygon),\n args: {\n useDeferredLabel: useDeferredLabel\n }\n }\n })) : params;\n}","import { __assign } from \"tslib\";\nimport { deepAssign } from '../../utils';\nimport { getTooltipMapping } from '../../utils/tooltip';\nimport { geometry } from './base';\n/**\n * schema 的配置处理\n * @param params\n */\nexport function schema(params) {\n var options = params.options;\n var schema = options.schema,\n xField = options.xField,\n yField = options.yField,\n seriesField = options.seriesField,\n tooltip = options.tooltip,\n useDeferredLabel = options.useDeferredLabel;\n var _a = getTooltipMapping(tooltip, [xField, yField, seriesField]),\n fields = _a.fields,\n formatter = _a.formatter;\n return schema ? geometry(deepAssign({}, params, {\n options: {\n type: 'schema',\n colorField: seriesField,\n tooltipFields: fields,\n mapping: __assign({\n tooltip: formatter\n }, schema),\n args: {\n useDeferredLabel: useDeferredLabel\n }\n }\n })) : params;\n}","import { __assign, __extends, __spreadArray } from \"tslib\";\nimport EE from '@antv/event-emitter';\nimport { Chart } from '@antv/g2';\nimport { each } from '@antv/util';\nimport { bind } from 'size-sensor';\nimport { deepAssign, getAllElementsRecursively, getContainerSize, pick } from '../utils';\nvar SOURCE_ATTRIBUTE_NAME = 'data-chart-source-type';\n/** plot 图表容器的配置 */\nexport var PLOT_CONTAINER_OPTIONS = ['padding', 'appendPadding', 'renderer', 'pixelRatio', 'syncViewPadding', 'supportCSSTransform', 'limitInPlot'];\n/**\n * 所有 plot 的基类\n */\nvar Plot = /** @class */function (_super) {\n __extends(Plot, _super);\n function Plot(container, options) {\n var _this = _super.call(this) || this;\n _this.container = typeof container === 'string' ? document.getElementById(container) : container;\n _this.options = deepAssign({}, _this.getDefaultOptions(), options);\n _this.createG2();\n _this.bindEvents();\n return _this;\n }\n /**\n * 获取默认的 options 配置项\n * 每个组件都可以复写\n */\n Plot.getDefaultOptions = function () {\n return {\n renderer: 'canvas',\n xAxis: {\n nice: true,\n label: {\n autoRotate: false,\n autoHide: {\n type: 'equidistance',\n cfg: {\n minGap: 6\n }\n }\n }\n },\n yAxis: {\n nice: true,\n label: {\n autoHide: true,\n autoRotate: false\n }\n },\n animation: true\n };\n };\n /**\n * 创建 G2 实例\n */\n Plot.prototype.createG2 = function () {\n var _a = this.options,\n width = _a.width,\n height = _a.height,\n defaultInteractions = _a.defaultInteractions;\n this.chart = new Chart(__assign(__assign(__assign(__assign({\n container: this.container,\n autoFit: false\n }, this.getChartSize(width, height)), {\n localRefresh: false\n }), pick(this.options, PLOT_CONTAINER_OPTIONS)), {\n defaultInteractions: defaultInteractions\n }));\n // 给容器增加标识,知道图表的来源区别于 G2\n this.container.setAttribute(SOURCE_ATTRIBUTE_NAME, 'G2Plot');\n };\n /**\n * 计算默认的 chart 大小。逻辑简化:如果存在 width 或 height,则直接使用,否则使用容器大小\n * @param width\n * @param height\n */\n Plot.prototype.getChartSize = function (width, height) {\n var chartSize = getContainerSize(this.container);\n return {\n width: width || chartSize.width || 400,\n height: height || chartSize.height || 400\n };\n };\n /**\n * 绑定代理所有 G2 的事件\n */\n Plot.prototype.bindEvents = function () {\n var _this = this;\n if (this.chart) {\n this.chart.on('*', function (e) {\n if (e === null || e === void 0 ? void 0 : e.type) {\n _this.emit(e.type, e);\n }\n });\n }\n };\n /**\n * 获取默认的 options 配置项\n * 每个组件都可以复写\n */\n Plot.prototype.getDefaultOptions = function () {\n return Plot.getDefaultOptions();\n };\n /**\n * 绘制\n */\n Plot.prototype.render = function () {\n // 暴力处理,先清空再渲染,需要 G2 层自行做好更新渲染\n this.chart.clear();\n // 因为子 view 会继承父 view 的 options 配置(包括 legend,所以会导致 legend 重复创建)\n // 所以这里给 chart 实例的 options 配置清空\n // 最好的解法是在 G2 view.clear 方法的时候,重置 options 配置。或者提供方法去 resetOptions\n // #1684 理论上在多 view 图形上,只要存在 custom legend,都存在类似问题(子弹图、双轴图)\n // @ts-ignore\n this.chart.options = {\n data: [],\n animate: true\n };\n this.chart.views = []; // 删除已有的 views\n // 执行 adaptor\n this.execAdaptor();\n // 渲染\n this.chart.render();\n // 绑定\n this.bindSizeSensor();\n };\n /**\n * 更新: 更新配置且重新渲染\n * @param options\n */\n Plot.prototype.update = function (options) {\n this.updateOption(options);\n this.render();\n };\n /**\n * 更新配置\n * @param options\n */\n Plot.prototype.updateOption = function (options) {\n this.options = deepAssign({}, this.options, options);\n };\n /**\n * 设置状态\n * @param type 状态类型,支持 'active' | 'inactive' | 'selected' 三种\n * @param conditions 条件,支持数组\n * @param status 是否激活,默认 true\n */\n Plot.prototype.setState = function (type, condition, status) {\n if (status === void 0) {\n status = true;\n }\n var elements = getAllElementsRecursively(this.chart);\n each(elements, function (ele) {\n if (condition(ele.getData())) {\n ele.setState(type, status);\n }\n });\n };\n /**\n * 获取状态\n */\n Plot.prototype.getStates = function () {\n var elements = getAllElementsRecursively(this.chart);\n var stateObjects = [];\n each(elements, function (element) {\n var data = element.getData();\n var states = element.getStates();\n each(states, function (state) {\n stateObjects.push({\n data: data,\n state: state,\n geometry: element.geometry,\n element: element\n });\n });\n });\n return stateObjects;\n };\n /**\n * 更新数据\n * @override\n * @param options\n */\n Plot.prototype.changeData = function (data) {\n // @ts-ignore\n this.update({\n data: data\n });\n // TODO: 临时方案,最好使用下面的方式去更新数据\n // this.chart.changeData(data);\n };\n /**\n * 修改画布大小\n * @param width\n * @param height\n */\n Plot.prototype.changeSize = function (width, height) {\n this.chart.changeSize(width, height);\n };\n /**\n * 增加图表标注。通过 id 标识,如果匹配到,就做更新\n */\n Plot.prototype.addAnnotations = function (annotations, view) {\n view = view ? view : this.chart;\n var incoming = __spreadArray([], annotations, true);\n var controller = view.getController('annotation');\n var current = controller.getComponents().map(function (co) {\n return co.extra;\n });\n controller.clear(true);\n var _loop_1 = function _loop_1(i) {\n var annotation = current[i];\n var findIndex = incoming.findIndex(function (item) {\n return item.id && item.id === annotation.id;\n });\n if (findIndex !== -1) {\n annotation = deepAssign({}, annotation, incoming[findIndex]);\n incoming.splice(findIndex, 1);\n }\n controller.annotation(annotation);\n };\n for (var i = 0; i < current.length; i++) {\n _loop_1(i);\n }\n incoming.forEach(function (annotation) {\n return controller.annotation(annotation);\n });\n view.render(true);\n };\n /**\n * 删除图表标注。通过 id 标识,如果匹配到,就做删除\n */\n Plot.prototype.removeAnnotations = function (annotations) {\n var controller = this.chart.getController('annotation');\n var current = controller.getComponents().map(function (co) {\n return co.extra;\n });\n controller.clear(true);\n var _loop_2 = function _loop_2(i) {\n var annotation = current[i];\n if (!annotations.find(function (item) {\n return item.id && item.id === annotation.id;\n })) {\n controller.annotation(annotation);\n }\n };\n for (var i = 0; i < current.length; i++) {\n _loop_2(i);\n }\n this.chart.render(true);\n };\n /**\n * 销毁\n */\n Plot.prototype.destroy = function () {\n // 取消 size-sensor 的绑定\n this.unbindSizeSensor();\n // G2 的销毁\n this.chart.destroy();\n // 清空已经绑定的事件\n this.off();\n this.container.removeAttribute(SOURCE_ATTRIBUTE_NAME);\n };\n /**\n * 执行 adaptor 操作\n */\n Plot.prototype.execAdaptor = function () {\n var adaptor = this.getSchemaAdaptor();\n var _a = this.options,\n padding = _a.padding,\n appendPadding = _a.appendPadding;\n // 更新 padding\n this.chart.padding = padding;\n // 更新 appendPadding\n this.chart.appendPadding = appendPadding;\n // 转化成 G2 API\n adaptor({\n chart: this.chart,\n options: this.options\n });\n };\n /**\n * 当图表容器大小变化的时候,执行的函数\n */\n Plot.prototype.triggerResize = function () {\n this.chart.forceFit();\n };\n /**\n * 绑定 dom 容器大小变化的事件\n */\n Plot.prototype.bindSizeSensor = function () {\n var _this = this;\n if (this.unbind) {\n return;\n }\n var _a = this.options.autoFit,\n autoFit = _a === void 0 ? true : _a;\n if (autoFit) {\n this.unbind = bind(this.container, function () {\n // 获取最新的宽高信息\n var _a = getContainerSize(_this.container),\n width = _a.width,\n height = _a.height;\n // 主要是防止绑定的时候触发 resize 回调\n if (width !== _this.chart.width || height !== _this.chart.height) {\n _this.triggerResize();\n }\n });\n }\n };\n /**\n * 取消绑定\n */\n Plot.prototype.unbindSizeSensor = function () {\n if (this.unbind) {\n this.unbind();\n this.unbind = undefined;\n }\n };\n return Plot;\n}(EE);\nexport { Plot };","import { __assign } from \"tslib\";\nimport { map, reduce } from '@antv/util';\nimport { isRealNumber } from '../number';\n/**\n * 对数据进行百分比化\n * @param data\n * @param measure\n * @param groupField\n * @param as\n */\nexport function percent(data, measure, groupField, as) {\n // 1. 先计算每一个分组的 max 值\n var sumMap = reduce(data, function (map, datum) {\n var groupValue = datum[groupField];\n var sum = map.has(groupValue) ? map.get(groupValue) : 0;\n var v = datum[measure];\n sum = isRealNumber(v) ? sum + v : sum;\n map.set(groupValue, sum);\n return map;\n }, new Map());\n // 2. 循环数组,计算占比\n return map(data, function (datum) {\n var _a;\n var v = datum[measure];\n var groupValue = datum[groupField];\n var percentage = isRealNumber(v) && sumMap.get(groupValue) !== 0 ? v / sumMap.get(groupValue) : 0;\n return __assign(__assign({}, datum), (_a = {}, _a[as] = percentage, _a));\n });\n}\n/**\n * 对数据进行深层百分比化\n * @param data\n * @param measure // 数值\n * @param fields // 需要分组的 field值\n * @param as // 存储percent 百分比的值\n */\nexport function getDeepPercent(data, measure, fields, percent) {\n var sumMap = reduce(data, function (map, datum) {\n // 获取分组得到的枚举key值\n var groupValue = reduce(fields, function (value, field) {\n return \"\".concat(value).concat(datum[field]);\n }, '');\n var sum = map.has(groupValue) ? map.get(groupValue) : 0;\n var v = datum[measure];\n sum = isRealNumber(v) ? sum + v : sum;\n map.set(groupValue, sum);\n return map;\n }, new Map());\n // 2. 循环数组,计算占比\n return map(data, function (datum) {\n var _a;\n var v = datum[measure];\n // 获取分组得到的枚举key值\n var groupValue = reduce(fields, function (value, field) {\n return \"\".concat(value).concat(datum[field]);\n }, '');\n var percentage = isRealNumber(v) && sumMap.get(groupValue) !== 0 ? v / sumMap.get(groupValue) : 0;\n return __assign(__assign({}, datum), (_a = {}, _a[percent] = percentage, _a));\n });\n}\n/**\n * 获取数据,如果是百分比,进行数据转换 (适用于面积图、柱状图、条形图)\n * @param isPercent 是否百分比\n */\nexport function getDataWhetherPercentage(data, yField, groupField, asField, isPercent) {\n return !isPercent ? data : percent(data, yField, groupField, asField);\n}","import { __assign, __rest } from \"tslib\";\nimport { each, isArray } from '@antv/util';\nimport { animation, annotation, interaction, limitInPlot, scale, scrollbar, slider, theme, tooltip } from '../../adaptor/common';\nimport { area, line, point } from '../../adaptor/geometries';\nimport { deepAssign, findGeometry, flow, transformLabel } from '../../utils';\nimport { adjustYMetaByZero } from '../../utils/data';\n/**\n * geometry 配置处理\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var data = options.data,\n color = options.color,\n lineStyle = options.lineStyle,\n lineShape = options.lineShape,\n pointMapping = options.point,\n areaMapping = options.area,\n seriesField = options.seriesField;\n var pointState = pointMapping === null || pointMapping === void 0 ? void 0 : pointMapping.state;\n var areaState = areaMapping === null || areaMapping === void 0 ? void 0 : areaMapping.state;\n chart.data(data);\n // line geometry 处理\n var primary = deepAssign({}, params, {\n options: {\n shapeField: seriesField,\n line: {\n color: color,\n style: lineStyle,\n shape: lineShape\n },\n // 颜色保持一致,因为如果颜色不一致,会导致 tooltip 中元素重复。\n // 如果存在,才设置,否则为空\n point: pointMapping && __assign({\n color: color,\n shape: 'circle'\n }, pointMapping),\n // 面积配置\n area: areaMapping && __assign({\n color: color\n }, areaMapping),\n // label 不传递给各个 geometry adaptor,由 label adaptor 处理\n label: undefined\n }\n });\n var second = deepAssign({}, primary, {\n options: {\n tooltip: false,\n state: pointState\n }\n });\n var areaParams = deepAssign({}, primary, {\n options: {\n tooltip: false,\n state: areaState\n }\n });\n line(primary);\n point(second);\n area(areaParams);\n return params;\n}\n/**\n * meta 配置\n * @param params\n */\nexport function meta(params) {\n var _a, _b;\n var options = params.options;\n var xAxis = options.xAxis,\n yAxis = options.yAxis,\n xField = options.xField,\n yField = options.yField,\n data = options.data;\n return flow(scale((_a = {}, _a[xField] = xAxis, _a[yField] = yAxis, _a), (_b = {}, _b[xField] = {\n type: 'cat'\n }, _b[yField] = adjustYMetaByZero(data, yField), _b)))(params);\n}\n/**\n * 坐标系配置. 支持 reflect 镜像处理\n * @param params\n */\nfunction coordinate(params) {\n var chart = params.chart,\n options = params.options;\n var reflect = options.reflect;\n if (reflect) {\n var p = reflect;\n if (!isArray(p)) {\n p = [p];\n }\n var actions = p.map(function (d) {\n return ['reflect', d];\n });\n chart.coordinate({\n type: 'rect',\n actions: actions\n });\n }\n return params;\n}\n/**\n * axis 配置\n * @param params\n */\nexport function axis(params) {\n var chart = params.chart,\n options = params.options;\n var xAxis = options.xAxis,\n yAxis = options.yAxis,\n xField = options.xField,\n yField = options.yField;\n // 为 false 则是不显示轴\n if (xAxis === false) {\n chart.axis(xField, false);\n } else {\n chart.axis(xField, xAxis);\n }\n if (yAxis === false) {\n chart.axis(yField, false);\n } else {\n chart.axis(yField, yAxis);\n }\n return params;\n}\n/**\n * legend 配置\n * @param params\n */\nexport function legend(params) {\n var chart = params.chart,\n options = params.options;\n var legend = options.legend,\n seriesField = options.seriesField;\n if (legend && seriesField) {\n chart.legend(seriesField, legend);\n } else if (legend === false) {\n chart.legend(false);\n }\n return params;\n}\n/**\n * 数据标签\n * @param params\n */\nfunction label(params) {\n var chart = params.chart,\n options = params.options;\n var label = options.label,\n yField = options.yField;\n var lineGeometry = findGeometry(chart, 'line');\n // label 为 false, 空 则不显示 label\n if (!label) {\n lineGeometry.label(false);\n } else {\n var callback = label.callback,\n cfg = __rest(label, [\"callback\"]);\n lineGeometry.label({\n fields: [yField],\n callback: callback,\n cfg: __assign({\n layout: [{\n type: 'limit-in-plot'\n }, {\n type: 'path-adjust-position'\n }, {\n type: 'point-adjust-position'\n }, {\n type: 'limit-in-plot',\n cfg: {\n action: 'hide'\n }\n }]\n }, transformLabel(cfg))\n });\n }\n return params;\n}\n/**\n * 统一处理 adjust\n * @param params\n */\nexport function adjust(params) {\n var chart = params.chart,\n options = params.options;\n var isStack = options.isStack;\n if (isStack) {\n each(chart.geometries, function (g) {\n g.adjust('stack');\n });\n }\n return params;\n}\n/**\n * 折线图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n // flow 的方式处理所有的配置到 G2 API\n return flow(geometry, meta, adjust, theme, coordinate, axis, legend, tooltip, label, slider, scrollbar, interaction, animation, annotation(), limitInPlot)(params);\n}","import { __assign, __rest } from \"tslib\";\nimport { each, omit } from '@antv/util';\nimport { animation, annotation, interaction, limitInPlot, pattern, slider, theme, tooltip, transformations } from '../../adaptor/common';\nimport { area, line, point } from '../../adaptor/geometries';\nimport { deepAssign, findGeometry, flow, transformLabel } from '../../utils';\nimport { getDataWhetherPercentage } from '../../utils/transform/percent';\nimport { axis, legend, meta } from '../line/adaptor';\nexport { meta };\n/**\n * geometry 处理\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var data = options.data,\n areaStyle = options.areaStyle,\n areaShape = options.areaShape,\n color = options.color,\n pointMapping = options.point,\n lineMapping = options.line,\n isPercent = options.isPercent,\n xField = options.xField,\n yField = options.yField,\n tooltip = options.tooltip,\n seriesField = options.seriesField,\n startOnZero = options.startOnZero;\n var pointState = pointMapping === null || pointMapping === void 0 ? void 0 : pointMapping.state;\n var chartData = getDataWhetherPercentage(data, yField, xField, yField, isPercent);\n chart.data(chartData);\n // 百分比堆积图,默认会给一个 % 格式化逻辑, 用户可自定义\n var tooltipOptions = isPercent ? __assign({\n formatter: function formatter(datum) {\n return {\n name: datum[seriesField] || datum[xField],\n value: (Number(datum[yField]) * 100).toFixed(2) + '%'\n };\n }\n }, tooltip) : tooltip;\n var primary = deepAssign({}, params, {\n options: {\n area: {\n color: color,\n style: areaStyle,\n shape: areaShape\n },\n point: pointMapping && __assign({\n color: color\n }, pointMapping),\n tooltip: tooltipOptions,\n // label 不传递给各个 geometry adaptor,由 label adaptor 处理\n label: undefined,\n args: {\n startOnZero: startOnZero\n }\n }\n });\n // 线默认 2px (折线不能复用面积图的 state,因为 fill 和 stroke 不匹配)\n var lineParams = {\n chart: chart,\n options: deepAssign({\n line: {\n size: 2\n }\n }, omit(options, ['state']), {\n // 颜色保持一致,因为如果颜色不一致,会导致 tooltip 中元素重复。\n // 如果存在,才设置,否则为空\n line: lineMapping && __assign({\n color: color\n }, lineMapping),\n sizeField: seriesField,\n state: lineMapping === null || lineMapping === void 0 ? void 0 : lineMapping.state,\n tooltip: false,\n // label 不传递给各个 geometry adaptor,由 label adaptor 处理\n label: undefined,\n args: {\n startOnZero: startOnZero\n }\n })\n };\n var pointParams = deepAssign({}, primary, {\n options: {\n tooltip: false,\n state: pointState\n }\n });\n // area geometry 处理\n area(primary);\n line(lineParams);\n point(pointParams);\n return params;\n}\n/**\n * 数据标签\n * @param params\n */\nfunction label(params) {\n var chart = params.chart,\n options = params.options;\n var label = options.label,\n yField = options.yField;\n var areaGeometry = findGeometry(chart, 'area');\n // label 为 false, 空 则不显示 label\n if (!label) {\n areaGeometry.label(false);\n } else {\n var callback = label.callback,\n cfg = __rest(label, [\"callback\"]);\n areaGeometry.label({\n fields: [yField],\n callback: callback,\n cfg: __assign({\n layout: [{\n type: 'limit-in-plot'\n }, {\n type: 'path-adjust-position'\n }, {\n type: 'point-adjust-position'\n }, {\n type: 'limit-in-plot',\n cfg: {\n action: 'hide'\n }\n }]\n }, transformLabel(cfg))\n });\n }\n return params;\n}\n/**\n * 处理 adjust\n * @param params\n */\nfunction adjust(params) {\n var chart = params.chart,\n options = params.options;\n var isStack = options.isStack,\n isPercent = options.isPercent,\n seriesField = options.seriesField;\n if ((isPercent || isStack) && seriesField) {\n each(chart.geometries, function (g) {\n g.adjust('stack');\n });\n }\n return params;\n}\n/**\n * 折线图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n // flow 的方式处理所有的配置到 G2 API\n return flow(theme, pattern('areaStyle'), transformations('rect'), geometry, meta, adjust, axis, legend, tooltip, label, slider, annotation(), interaction, animation, limitInPlot)(params);\n}","import { Plot } from '../../core/plot';\nimport { deepAssign } from '../../utils';\n/**\n * 面积图默认配置项\n */\nexport var DEFAULT_OPTIONS = deepAssign({}, Plot.getDefaultOptions(), {\n tooltip: {\n shared: true,\n showMarkers: true,\n showCrosshairs: true,\n crosshairs: {\n type: 'x'\n }\n },\n isStack: true,\n // 默认开启\n line: {},\n legend: {\n position: 'top-left',\n radio: {}\n }\n});","import { __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { getDataWhetherPercentage } from '../../utils/transform/percent';\nimport { adaptor, meta } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constants';\nvar Area = /** @class */function (_super) {\n __extends(Area, _super);\n function Area() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'area';\n return _this;\n }\n /**\n * 获取 面积图 默认配置项\n * 供外部使用\n */\n Area.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * 获取 面积图 默认配置\n */\n Area.prototype.getDefaultOptions = function () {\n return Area.getDefaultOptions();\n };\n /**\n * @override\n * @param data\n */\n Area.prototype.changeData = function (data) {\n this.updateOption({\n data: data\n });\n var _a = this.options,\n isPercent = _a.isPercent,\n xField = _a.xField,\n yField = _a.yField;\n var _b = this,\n chart = _b.chart,\n options = _b.options;\n meta({\n chart: chart,\n options: options\n });\n this.chart.changeData(getDataWhetherPercentage(data, yField, xField, yField, isPercent));\n };\n /**\n * 获取 面积图 的适配器\n */\n Area.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Area;\n}(Plot);\nexport { Area };","import { __assign, __extends } from \"tslib\";\nimport { Action, Util } from '@antv/g2';\nimport { get } from '@antv/util';\nimport { deepAssign, normalPadding } from '../../utils';\nvar PADDING_RIGHT = 10;\nvar PADDING_TOP = 5;\n/**\n * Action 中的 Button 按钮配置\n *\n * 可能的使用场景:brush filter\n */\nexport var BUTTON_ACTION_CONFIG = {\n padding: [8, 10],\n text: 'reset',\n textStyle: {\n default: {\n x: 0,\n y: 0,\n fontSize: 12,\n fill: '#333333',\n cursor: 'pointer'\n }\n },\n buttonStyle: {\n default: {\n fill: '#f7f7f7',\n stroke: '#cccccc',\n cursor: 'pointer'\n },\n active: {\n fill: '#e6e6e6'\n }\n }\n};\n/**\n * @override 复写 G2 Button Action, 后续直接使用 GUI\n */\nvar ButtonAction = /** @class */function (_super) {\n __extends(ButtonAction, _super);\n function ButtonAction() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.buttonGroup = null;\n _this.buttonCfg = __assign({\n name: 'button'\n }, BUTTON_ACTION_CONFIG);\n return _this;\n }\n /**\n * 获取 mix 默认的配置和用户配置\n */\n ButtonAction.prototype.getButtonCfg = function () {\n var view = this.context.view;\n var buttonCfg = get(view, ['interactions', 'filter-action', 'cfg', 'buttonConfig']);\n return deepAssign(this.buttonCfg, buttonCfg, this.cfg);\n };\n /**\n * 绘制 Button 和 文本\n */\n ButtonAction.prototype.drawButton = function () {\n var config = this.getButtonCfg();\n var group = this.context.view.foregroundGroup.addGroup({\n name: config.name\n });\n var textShape = this.drawText(group);\n this.drawBackground(group, textShape.getBBox());\n this.buttonGroup = group;\n };\n /**\n * 绘制文本\n */\n ButtonAction.prototype.drawText = function (group) {\n var _a;\n var config = this.getButtonCfg();\n // 添加文本\n return group.addShape({\n type: 'text',\n name: 'button-text',\n attrs: __assign({\n text: config.text\n }, (_a = config.textStyle) === null || _a === void 0 ? void 0 : _a.default)\n });\n };\n ButtonAction.prototype.drawBackground = function (group, bbox) {\n var _a;\n var config = this.getButtonCfg();\n var padding = normalPadding(config.padding);\n // 添加背景按钮\n var buttonShape = group.addShape({\n type: 'rect',\n name: 'button-rect',\n attrs: __assign({\n x: bbox.x - padding[3],\n y: bbox.y - padding[0],\n width: bbox.width + padding[1] + padding[3],\n height: bbox.height + padding[0] + padding[2]\n }, (_a = config.buttonStyle) === null || _a === void 0 ? void 0 : _a.default)\n });\n buttonShape.toBack(); // 在后面\n // active 效果内置\n group.on('mouseenter', function () {\n var _a;\n buttonShape.attr((_a = config.buttonStyle) === null || _a === void 0 ? void 0 : _a.active);\n });\n group.on('mouseleave', function () {\n var _a;\n buttonShape.attr((_a = config.buttonStyle) === null || _a === void 0 ? void 0 : _a.default);\n });\n return buttonShape;\n };\n // 重置位置\n ButtonAction.prototype.resetPosition = function () {\n var view = this.context.view;\n var coord = view.getCoordinate();\n var point = coord.convert({\n x: 1,\n y: 1\n }); // 后面直接改成左上角\n var buttonGroup = this.buttonGroup;\n var bbox = buttonGroup.getBBox();\n var matrix = Util.transform(null, [['t', point.x - bbox.width - PADDING_RIGHT, point.y + bbox.height + PADDING_TOP]]);\n buttonGroup.setMatrix(matrix);\n };\n /**\n * 显示\n */\n ButtonAction.prototype.show = function () {\n if (!this.buttonGroup) {\n this.drawButton();\n }\n this.resetPosition();\n this.buttonGroup.show();\n };\n /**\n * 隐藏\n */\n ButtonAction.prototype.hide = function () {\n if (this.buttonGroup) {\n this.buttonGroup.hide();\n }\n };\n /**\n * 销毁\n */\n ButtonAction.prototype.destroy = function () {\n var buttonGroup = this.buttonGroup;\n if (buttonGroup) {\n buttonGroup.remove();\n }\n _super.prototype.destroy.call(this);\n };\n return ButtonAction;\n}(Action);\nexport { ButtonAction };","import { registerAction, registerInteraction } from '@antv/g2';\nimport { ButtonAction } from './actions/reset-button';\nregisterAction('brush-reset-button', ButtonAction, {\n name: 'brush-reset-button'\n});\nregisterInteraction('filter-action', {});\n/**\n * G2 已经内置了 brush、brush-x、brush-y 等交互,其它:\n *\n * 1. element-range-highlight 是否可用重命名为 brush-highlight?(mask 可以移动)\n * 2. brush-visible 与 brush 的区别是?\n */\nfunction isPointInView(context) {\n return context.isInPlot();\n}\n/**\n * 获取 交互 start 阶段的相关配置\n */\nexport function getInteractionCfg(interactionType, brushType, options) {\n var _a = options || {},\n mask = _a.mask,\n isStartEnable = _a.isStartEnable;\n var maskType = brushType || 'rect';\n switch (interactionType) {\n case 'brush':\n return {\n showEnable: [{\n trigger: 'plot:mouseenter',\n action: 'cursor:crosshair',\n isEnable: isStartEnable || function () {\n return true;\n }\n }, {\n trigger: 'plot:mouseleave',\n action: 'cursor:default'\n }],\n start: [{\n trigger: 'mousedown',\n isEnable: isStartEnable || isPointInView,\n action: ['brush:start', \"\".concat(maskType, \"-mask:start\"), \"\".concat(maskType, \"-mask:show\")],\n // 对应第二个action的参数\n arg: [null, {\n maskStyle: mask === null || mask === void 0 ? void 0 : mask.style\n }]\n }],\n processing: [{\n trigger: 'mousemove',\n isEnable: isPointInView,\n action: [\"\".concat(maskType, \"-mask:resize\")]\n }],\n end: [{\n trigger: 'mouseup',\n isEnable: isPointInView,\n action: ['brush:filter', 'brush:end', \"\".concat(maskType, \"-mask:end\"), \"\".concat(maskType, \"-mask:hide\"), 'brush-reset-button:show']\n }],\n rollback: [{\n trigger: 'brush-reset-button:click',\n action: ['brush:reset', 'brush-reset-button:hide', 'cursor:crosshair']\n }]\n };\n case 'brush-highlight':\n return {\n showEnable: [{\n trigger: 'plot:mouseenter',\n action: 'cursor:crosshair',\n isEnable: isStartEnable || function () {\n return true;\n }\n }, {\n trigger: 'plot:mousemove',\n action: 'cursor:crosshair',\n isEnable: isStartEnable || function () {\n return true;\n }\n }, {\n trigger: 'plot:mousemove',\n action: 'cursor:default',\n isEnable: function isEnable(context) {\n return isStartEnable ? !isStartEnable(context) : false;\n }\n }, {\n trigger: 'mask:mouseenter',\n action: 'cursor:move',\n isEnable: isStartEnable || function () {\n return true;\n }\n }, {\n trigger: 'plot:mouseleave',\n action: 'cursor:default'\n }, {\n trigger: 'mask:mouseleave',\n action: 'cursor:crosshair'\n }],\n start: [{\n trigger: 'plot:mousedown',\n isEnable: isStartEnable || function (context) {\n // 不要点击在 mask 上重新开始\n return !context.isInShape('mask');\n },\n action: [\"\".concat(maskType, \"-mask:start\"), \"\".concat(maskType, \"-mask:show\")],\n // 对应第 1 个action的参数\n arg: [{\n maskStyle: mask === null || mask === void 0 ? void 0 : mask.style\n }]\n }, {\n trigger: 'mask:dragstart',\n action: [\"\".concat(maskType, \"-mask:moveStart\")]\n }],\n processing: [{\n trigger: 'plot:mousemove',\n action: [\"\".concat(maskType, \"-mask:resize\")]\n }, {\n trigger: 'mask:drag',\n action: [\"\".concat(maskType, \"-mask:move\")]\n }, {\n trigger: 'mask:change',\n action: ['element-range-highlight:highlight']\n }],\n end: [{\n trigger: 'plot:mouseup',\n action: [\"\".concat(maskType, \"-mask:end\")]\n }, {\n trigger: 'mask:dragend',\n action: [\"\".concat(maskType, \"-mask:moveEnd\")]\n }, {\n trigger: 'document:mouseup',\n isEnable: function isEnable(context) {\n return !context.isInPlot();\n },\n action: ['element-range-highlight:clear', \"\".concat(maskType, \"-mask:end\"), \"\".concat(maskType, \"-mask:hide\")]\n }],\n rollback: [{\n trigger: 'dblclick',\n action: ['element-range-highlight:clear', \"\".concat(maskType, \"-mask:hide\")]\n }]\n };\n case 'brush-x':\n return {\n showEnable: [{\n trigger: 'plot:mouseenter',\n action: 'cursor:crosshair',\n isEnable: isStartEnable || function () {\n return true;\n }\n }, {\n trigger: 'plot:mouseleave',\n action: 'cursor:default'\n }],\n start: [{\n trigger: 'mousedown',\n isEnable: isStartEnable || isPointInView,\n action: ['brush-x:start', \"\".concat(maskType, \"-mask:start\"), \"\".concat(maskType, \"-mask:show\")],\n // 对应第二个action的参数\n arg: [null, {\n maskStyle: mask === null || mask === void 0 ? void 0 : mask.style\n }]\n }],\n processing: [{\n trigger: 'mousemove',\n isEnable: isPointInView,\n action: [\"\".concat(maskType, \"-mask:resize\")]\n }],\n end: [{\n trigger: 'mouseup',\n isEnable: isPointInView,\n action: ['brush-x:filter', 'brush-x:end', \"\".concat(maskType, \"-mask:end\"), \"\".concat(maskType, \"-mask:hide\")]\n }],\n rollback: [{\n trigger: 'dblclick',\n action: ['brush-x:reset']\n }]\n };\n case 'brush-x-highlight':\n return {\n showEnable: [{\n trigger: 'plot:mouseenter',\n action: 'cursor:crosshair',\n isEnable: isStartEnable || function () {\n return true;\n }\n }, {\n trigger: 'mask:mouseenter',\n action: 'cursor:move',\n isEnable: isStartEnable || function () {\n return true;\n }\n }, {\n trigger: 'plot:mouseleave',\n action: 'cursor:default'\n }, {\n trigger: 'mask:mouseleave',\n action: 'cursor:crosshair'\n }],\n start: [{\n trigger: 'plot:mousedown',\n isEnable: isStartEnable || function (context) {\n // 不要点击在 mask 上重新开始\n return !context.isInShape('mask');\n },\n action: [\"\".concat(maskType, \"-mask:start\"), \"\".concat(maskType, \"-mask:show\")],\n // 对应第 1 个action的参数\n arg: [{\n maskStyle: mask === null || mask === void 0 ? void 0 : mask.style\n }]\n }, {\n trigger: 'mask:dragstart',\n action: [\"\".concat(maskType, \"-mask:moveStart\")]\n }],\n processing: [{\n trigger: 'plot:mousemove',\n action: [\"\".concat(maskType, \"-mask:resize\")]\n }, {\n trigger: 'mask:drag',\n action: [\"\".concat(maskType, \"-mask:move\")]\n }, {\n trigger: 'mask:change',\n action: ['element-range-highlight:highlight']\n }],\n end: [{\n trigger: 'plot:mouseup',\n action: [\"\".concat(maskType, \"-mask:end\")]\n }, {\n trigger: 'mask:dragend',\n action: [\"\".concat(maskType, \"-mask:moveEnd\")]\n }, {\n trigger: 'document:mouseup',\n isEnable: function isEnable(context) {\n return !context.isInPlot();\n },\n action: ['element-range-highlight:clear', \"\".concat(maskType, \"-mask:end\"), \"\".concat(maskType, \"-mask:hide\")]\n }],\n rollback: [{\n trigger: 'dblclick',\n action: ['element-range-highlight:clear', \"\".concat(maskType, \"-mask:hide\")]\n }]\n };\n case 'brush-y':\n return {\n showEnable: [{\n trigger: 'plot:mouseenter',\n action: 'cursor:crosshair',\n isEnable: isStartEnable || function () {\n return true;\n }\n }, {\n trigger: 'plot:mouseleave',\n action: 'cursor:default'\n }],\n start: [{\n trigger: 'mousedown',\n isEnable: isStartEnable || isPointInView,\n action: ['brush-y:start', \"\".concat(maskType, \"-mask:start\"), \"\".concat(maskType, \"-mask:show\")],\n // 对应第二个action的参数\n arg: [null, {\n maskStyle: mask === null || mask === void 0 ? void 0 : mask.style\n }]\n }],\n processing: [{\n trigger: 'mousemove',\n isEnable: isPointInView,\n action: [\"\".concat(maskType, \"-mask:resize\")]\n }],\n end: [{\n trigger: 'mouseup',\n isEnable: isPointInView,\n action: ['brush-y:filter', 'brush-y:end', \"\".concat(maskType, \"-mask:end\"), \"\".concat(maskType, \"-mask:hide\")]\n }],\n rollback: [{\n trigger: 'dblclick',\n action: ['brush-y:reset']\n }]\n };\n case 'brush-y-highlight':\n return {\n showEnable: [{\n trigger: 'plot:mouseenter',\n action: 'cursor:crosshair',\n isEnable: isStartEnable || function () {\n return true;\n }\n }, {\n trigger: 'mask:mouseenter',\n action: 'cursor:move',\n isEnable: isStartEnable || function () {\n return true;\n }\n }, {\n trigger: 'plot:mouseleave',\n action: 'cursor:default'\n }, {\n trigger: 'mask:mouseleave',\n action: 'cursor:crosshair'\n }],\n start: [{\n trigger: 'plot:mousedown',\n isEnable: isStartEnable || function (context) {\n // 不要点击在 mask 上重新开始\n return !context.isInShape('mask');\n },\n action: [\"\".concat(maskType, \"-mask:start\"), \"\".concat(maskType, \"-mask:show\")],\n // 对应第 1 个action的参数\n arg: [{\n maskStyle: mask === null || mask === void 0 ? void 0 : mask.style\n }]\n }, {\n trigger: 'mask:dragstart',\n action: [\"\".concat(maskType, \"-mask:moveStart\")]\n }],\n processing: [{\n trigger: 'plot:mousemove',\n action: [\"\".concat(maskType, \"-mask:resize\")]\n }, {\n trigger: 'mask:drag',\n action: [\"\".concat(maskType, \"-mask:move\")]\n }, {\n trigger: 'mask:change',\n action: ['element-range-highlight:highlight']\n }],\n end: [{\n trigger: 'plot:mouseup',\n action: [\"\".concat(maskType, \"-mask:end\")]\n }, {\n trigger: 'mask:dragend',\n action: [\"\".concat(maskType, \"-mask:moveEnd\")]\n }, {\n trigger: 'document:mouseup',\n isEnable: function isEnable(context) {\n return !context.isInPlot();\n },\n action: ['element-range-highlight:clear', \"\".concat(maskType, \"-mask:end\"), \"\".concat(maskType, \"-mask:hide\")]\n }],\n rollback: [{\n trigger: 'dblclick',\n action: ['element-range-highlight:clear', \"\".concat(maskType, \"-mask:hide\")]\n }]\n };\n default:\n return {};\n }\n}\n// 直接拷贝过来的\nregisterInteraction('brush', getInteractionCfg('brush'));\n// 复写 element-range-highlight interaction\nregisterInteraction('brush-highlight', getInteractionCfg('brush-highlight'));\n// 复写\nregisterInteraction('brush-x', getInteractionCfg('brush-x', 'x-rect'));\n// 复写\nregisterInteraction('brush-y', getInteractionCfg('brush-y', 'y-rect'));\n// 新增, x 框选高亮\nregisterInteraction('brush-x-highlight', getInteractionCfg('brush-x-highlight', 'x-rect'));\n// 新增, y 框选高亮\nregisterInteraction('brush-y-highlight', getInteractionCfg('brush-y-highlight', 'y-rect'));","import { filter } from '@antv/util';\n/** 先引入brush 交互 */\nimport '../interactions/brush';\nimport { getInteractionCfg } from '../interactions/brush';\nimport { deepAssign } from '../utils';\nvar BRUSH_TYPES = ['brush', 'brush-x', 'brush-y', 'brush-highlight', 'brush-x-highlight', 'brush-y-highlight'];\n/**\n * brush 交互\n */\nexport function brushInteraction(params) {\n var options = params.options;\n var brush = options.brush;\n // 先过滤掉 brush 等交互\n var interactions = filter(options.interactions || [], function (i) {\n return BRUSH_TYPES.indexOf(i.type) === -1;\n });\n // 设置 brush 交互\n if (brush === null || brush === void 0 ? void 0 : brush.enabled) {\n BRUSH_TYPES.forEach(function (type) {\n var enable = false;\n switch (brush.type) {\n case 'x-rect':\n enable = type === (brush.action === 'highlight' ? 'brush-x-highlight' : 'brush-x');\n break;\n case 'y-rect':\n enable = type === (brush.action === 'highlight' ? 'brush-y-highlight' : 'brush-y');\n break;\n default:\n enable = type === (brush.action === 'highlight' ? 'brush-highlight' : 'brush');\n break;\n }\n var obj = {\n type: type,\n enable: enable\n };\n if (brush) {\n obj.cfg = getInteractionCfg(type, brush.type, brush);\n }\n interactions.push(obj);\n });\n // 塞入 button 配置 (G2Plot 的封装)\n if ((brush === null || brush === void 0 ? void 0 : brush.action) !== 'highlight') {\n interactions.push({\n type: 'filter-action',\n cfg: {\n buttonConfig: brush.button\n }\n });\n }\n }\n return deepAssign({}, params, {\n options: {\n interactions: interactions\n }\n });\n}","import { registerInteraction } from '@antv/g2';\nvar INTERACTION_MAP = {\n hover: '__interval-connected-area-hover__',\n click: '__interval-connected-area-click__'\n};\nvar getStartStages = function getStartStages(trigger, style) {\n if (trigger === 'hover') {\n return [{\n trigger: \"interval:mouseenter\",\n action: ['element-highlight-by-color:highlight', 'element-link-by-color:link'],\n arg: [null, {\n style: style\n }]\n }];\n }\n return [{\n trigger: \"interval:click\",\n action: ['element-highlight-by-color:clear', 'element-highlight-by-color:highlight', 'element-link-by-color:clear', 'element-link-by-color:unlink', 'element-link-by-color:link'],\n arg: [null, null, null, null, {\n style: style\n }]\n }];\n};\n/** hover 触发的连通区域交互 */\nregisterInteraction(INTERACTION_MAP.hover, {\n start: getStartStages(INTERACTION_MAP.hover),\n end: [{\n trigger: 'interval:mouseleave',\n action: ['element-highlight-by-color:reset', 'element-link-by-color:unlink']\n }]\n});\n/** click 触发的联通区域交互 */\nregisterInteraction(INTERACTION_MAP.click, {\n start: getStartStages(INTERACTION_MAP.click),\n end: [{\n trigger: 'document:mousedown',\n action: ['element-highlight-by-color:clear', 'element-link-by-color:clear']\n }]\n});\n/**\n * 返回支持联通区域组件交互的 adaptor,适用于堆叠柱形图/堆叠条形图\n * @param disable\n */\nexport function connectedArea(disable) {\n if (disable === void 0) {\n disable = false;\n }\n return function (params) {\n var chart = params.chart,\n options = params.options;\n var connectedArea = options.connectedArea;\n var clear = function clear() {\n chart.removeInteraction(INTERACTION_MAP.hover);\n chart.removeInteraction(INTERACTION_MAP.click);\n };\n if (!disable && connectedArea) {\n var trigger = connectedArea.trigger || 'hover';\n clear();\n chart.interaction(INTERACTION_MAP[trigger], {\n start: getStartStages(trigger, connectedArea.style)\n });\n } else {\n clear();\n }\n return params;\n };\n}","import { isNumber } from '@antv/util';\n/**\n * 转化率的计算方式\n * @param prev\n * @param next\n */\nexport function conversionTagFormatter(prev, next) {\n if (!isNumber(prev) || !isNumber(next)) {\n return '-';\n }\n // 0 / 0 没有意义\n if (prev === 0 && next === 0) {\n return '-';\n }\n if (prev === next) {\n return '100%';\n }\n if (prev === 0) {\n return '∞';\n }\n return \"\".concat((100 * next / prev).toFixed(2), \"%\");\n}","import { __assign } from \"tslib\";\nimport { getTheme } from '@antv/g2';\nimport { each, find, isObject, map } from '@antv/util';\nimport { deepAssign } from '../utils';\nimport { conversionTagFormatter } from '../utils/conversion';\nfunction getConversionTagOptionsWithDefaults(options, horizontal) {\n return deepAssign({\n size: horizontal ? 32 : 80,\n spacing: horizontal ? 8 : 12,\n offset: horizontal ? 32 : 0,\n arrow: options.arrow !== false && {\n headSize: 12,\n style: {\n fill: 'rgba(0, 0, 0, 0.05)'\n }\n },\n text: options.text !== false && {\n style: {\n fontSize: 12,\n fill: 'rgba(0, 0, 0, 0.85)',\n textAlign: 'center',\n textBaseline: 'middle'\n },\n formatter: conversionTagFormatter\n }\n }, options);\n}\nfunction parsePoints(coordinate, element) {\n // @ts-ignore\n return map(element.getModel().points, function (point) {\n return coordinate.convertPoint(point);\n });\n}\nfunction renderArrowTag(config, elemPrev, elemNext) {\n var view = config.view,\n geometry = config.geometry,\n group = config.group,\n options = config.options,\n horizontal = config.horizontal;\n var offset = options.offset,\n size = options.size,\n arrow = options.arrow;\n var coordinate = view.getCoordinate();\n var pointPrev = parsePoints(coordinate, elemPrev)[3];\n var pointNext = parsePoints(coordinate, elemNext)[0];\n var totalHeight = pointNext.y - pointPrev.y;\n var totalWidth = pointNext.x - pointPrev.x;\n if (typeof arrow === 'boolean') {\n return;\n }\n var headSize = arrow.headSize;\n var spacing = options.spacing;\n var points;\n if (horizontal) {\n if ((totalWidth - headSize) / 2 < spacing) {\n // 当柱间距不足容纳箭头尖与间隔时,画三角并挤占间隔\n spacing = Math.max(1, (totalWidth - headSize) / 2);\n points = [[pointPrev.x + spacing, pointPrev.y - offset], [pointPrev.x + spacing, pointPrev.y - offset - size], [pointNext.x - spacing, pointNext.y - offset - size / 2]];\n } else {\n // 当柱间距足够时,画完整图形并留出间隔。\n points = [[pointPrev.x + spacing, pointPrev.y - offset], [pointPrev.x + spacing, pointPrev.y - offset - size], [pointNext.x - spacing - headSize, pointNext.y - offset - size], [pointNext.x - spacing, pointNext.y - offset - size / 2], [pointNext.x - spacing - headSize, pointNext.y - offset]];\n }\n } else {\n if ((totalHeight - headSize) / 2 < spacing) {\n // 当柱间距不足容纳箭头尖与间隔时,画三角并挤占间隔\n spacing = Math.max(1, (totalHeight - headSize) / 2);\n points = [[pointPrev.x + offset, pointPrev.y + spacing], [pointPrev.x + offset + size, pointPrev.y + spacing], [pointNext.x + offset + size / 2, pointNext.y - spacing]];\n } else {\n // 当柱间距足够时,画完整图形并留出间隔。\n points = [[pointPrev.x + offset, pointPrev.y + spacing], [pointPrev.x + offset + size, pointPrev.y + spacing], [pointNext.x + offset + size, pointNext.y - spacing - headSize], [pointNext.x + offset + size / 2, pointNext.y - spacing], [pointNext.x + offset, pointNext.y - spacing - headSize]];\n }\n }\n group.addShape('polygon', {\n id: \"\".concat(view.id, \"-conversion-tag-arrow-\").concat(geometry.getElementId(elemPrev.getModel().mappingData)),\n name: 'conversion-tag-arrow',\n origin: {\n element: elemPrev,\n nextElement: elemNext\n },\n attrs: __assign(__assign({}, arrow.style || {}), {\n points: points\n })\n });\n}\nfunction renderTextTag(config, elemPrev, elemNext) {\n var _a, _b, _c;\n var view = config.view,\n geometry = config.geometry,\n group = config.group,\n options = config.options,\n field = config.field,\n horizontal = config.horizontal;\n var offset = options.offset,\n size = options.size;\n if (typeof options.text === 'boolean') {\n return;\n }\n var coordinate = view.getCoordinate();\n var text = ((_a = options.text) === null || _a === void 0 ? void 0 : _a.formatter) && ((_b = options.text) === null || _b === void 0 ? void 0 : _b.formatter(elemPrev.getData()[field], elemNext.getData()[field]));\n var pointPrev = parsePoints(coordinate, elemPrev)[horizontal ? 3 : 0];\n var pointNext = parsePoints(coordinate, elemNext)[horizontal ? 0 : 3];\n var textShape = group.addShape('text', {\n id: \"\".concat(view.id, \"-conversion-tag-text-\").concat(geometry.getElementId(elemPrev.getModel().mappingData)),\n name: 'conversion-tag-text',\n origin: {\n element: elemPrev,\n nextElement: elemNext\n },\n attrs: __assign(__assign({}, ((_c = options.text) === null || _c === void 0 ? void 0 : _c.style) || {}), {\n text: text,\n x: horizontal ? (pointPrev.x + pointNext.x) / 2 : pointPrev.x + offset + size / 2,\n y: horizontal ? pointPrev.y - offset - size / 2 : (pointPrev.y + pointNext.y) / 2\n })\n });\n if (horizontal) {\n var totalWidth = pointNext.x - pointPrev.x;\n var textWidth = textShape.getBBox().width;\n if (textWidth > totalWidth) {\n var cWidth = textWidth / text.length;\n var cEnd = Math.max(1, Math.ceil(totalWidth / cWidth) - 1);\n var textAdjusted = \"\".concat(text.slice(0, cEnd), \"...\");\n textShape.attr('text', textAdjusted);\n }\n }\n}\nfunction renderTag(options, elemPrev, elemNext) {\n renderArrowTag(options, elemPrev, elemNext);\n renderTextTag(options, elemPrev, elemNext);\n}\n/**\n * 返回支持转化率组件的 adaptor,适用于柱形图/条形图\n * @param field 用户转化率计算的字段\n * @param horizontal 是否水平方向的转化率\n * @param disabled 是否禁用\n */\nexport function conversionTag(field, horizontal, disabled) {\n if (horizontal === void 0) {\n horizontal = true;\n }\n if (disabled === void 0) {\n disabled = false;\n }\n return function (params) {\n var options = params.options,\n chart = params.chart;\n var conversionTag = options.conversionTag,\n theme = options.theme;\n if (conversionTag && !disabled) {\n // 有转化率组件时,柱子宽度占比自动为 1/3\n chart.theme(deepAssign({}, isObject(theme) ? theme : getTheme(theme), {\n columnWidthRatio: 1 / 3\n }));\n // 使用 shape annotation 绘制转化率组件\n chart.annotation().shape({\n render: function render(container, view) {\n var group = container.addGroup({\n id: \"\".concat(chart.id, \"-conversion-tag-group\"),\n name: 'conversion-tag-group'\n });\n var interval = find(chart.geometries, function (geom) {\n return geom.type === 'interval';\n });\n var config = {\n view: view,\n geometry: interval,\n group: group,\n field: field,\n horizontal: horizontal,\n options: getConversionTagOptionsWithDefaults(conversionTag, horizontal)\n };\n var elements = interval.elements;\n each(elements, function (elem, idx) {\n if (idx > 0) {\n renderTag(config, elements[idx - 1], elem);\n }\n });\n }\n });\n }\n return params;\n };\n}","import { __assign, __rest } from \"tslib\";\nimport { each, filter, isMatch } from '@antv/util';\nimport { brushInteraction } from '../../adaptor/brush';\nimport { animation, annotation, interaction, limitInPlot, scale, scrollbar, slider, state, theme, transformations } from '../../adaptor/common';\nimport { connectedArea } from '../../adaptor/connected-area';\nimport { conversionTag } from '../../adaptor/conversion-tag';\nimport { interval } from '../../adaptor/geometries';\nimport { pattern } from '../../adaptor/pattern';\nimport { adjustYMetaByZero, deepAssign, findGeometry, flow, pick, transformLabel } from '../../utils';\nimport { getDataWhetherPercentage, getDeepPercent } from '../../utils/transform/percent';\n/**\n * defaultOptions\n * @param params\n */\nfunction defaultOptions(params) {\n var options = params.options;\n // 默认 legend 位置\n var legend = options.legend;\n var seriesField = options.seriesField,\n isStack = options.isStack;\n if (seriesField) {\n if (legend !== false) {\n legend = __assign({\n position: isStack ? 'right-top' : 'top-left'\n }, legend);\n }\n } else {\n legend = false;\n }\n // @ts-ignore 直接改值\n params.options.legend = legend;\n return params;\n}\n/**\n * 字段\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var data = options.data,\n columnStyle = options.columnStyle,\n color = options.color,\n columnWidthRatio = options.columnWidthRatio,\n isPercent = options.isPercent,\n isGroup = options.isGroup,\n isStack = options.isStack,\n xField = options.xField,\n yField = options.yField,\n seriesField = options.seriesField,\n groupField = options.groupField,\n tooltip = options.tooltip,\n shape = options.shape;\n var percentData = isPercent && isGroup && isStack ? getDeepPercent(data, yField, [xField, groupField], yField) : getDataWhetherPercentage(data, yField, xField, yField, isPercent);\n var chartData = [];\n // 存在堆叠,并且存在堆叠seriesField分类,并且不存在分组的时候 进行堆叠\n if (isStack && seriesField && !isGroup) {\n percentData.forEach(function (item) {\n var stackedItem = chartData.find(function (v) {\n return v[xField] === item[xField] && v[seriesField] === item[seriesField];\n });\n if (stackedItem) {\n stackedItem[yField] += item[yField] || 0;\n } else {\n chartData.push(__assign({}, item));\n }\n });\n } else {\n chartData = percentData;\n }\n chart.data(chartData);\n // 百分比堆积图,默认会给一个 % 格式化逻辑, 用户可自定义\n var tooltipOptions = isPercent ? __assign({\n formatter: function formatter(datum) {\n var _a;\n return {\n name: isGroup && isStack ? \"\".concat(datum[seriesField], \" - \").concat(datum[groupField]) : (_a = datum[seriesField]) !== null && _a !== void 0 ? _a : datum[xField],\n value: (Number(datum[yField]) * 100).toFixed(2) + '%'\n };\n }\n }, tooltip) : tooltip;\n var p = deepAssign({}, params, {\n options: {\n data: chartData,\n widthRatio: columnWidthRatio,\n tooltip: tooltipOptions,\n interval: {\n shape: shape,\n style: columnStyle,\n color: color\n }\n }\n });\n interval(p);\n return p;\n}\n/**\n * meta 配置\n * @param params\n */\nexport function meta(params) {\n var _a, _b;\n var options = params.options;\n var xAxis = options.xAxis,\n yAxis = options.yAxis,\n xField = options.xField,\n yField = options.yField,\n data = options.data,\n isPercent = options.isPercent;\n var percentYMeta = isPercent ? {\n max: 1,\n min: 0,\n minLimit: 0,\n maxLimit: 1\n } : {};\n return flow(scale((_a = {}, _a[xField] = xAxis, _a[yField] = yAxis, _a), (_b = {}, _b[xField] = {\n type: 'cat'\n }, _b[yField] = __assign(__assign({}, adjustYMetaByZero(data, yField)), percentYMeta), _b)))(params);\n}\n/**\n * axis 配置\n * @param params\n */\nfunction axis(params) {\n var chart = params.chart,\n options = params.options;\n var xAxis = options.xAxis,\n yAxis = options.yAxis,\n xField = options.xField,\n yField = options.yField;\n // 为 false 则是不显示轴\n if (xAxis === false) {\n chart.axis(xField, false);\n } else {\n chart.axis(xField, xAxis);\n }\n if (yAxis === false) {\n chart.axis(yField, false);\n } else {\n chart.axis(yField, yAxis);\n }\n return params;\n}\n/**\n * legend 配置\n * @param params\n */\nexport function legend(params) {\n var chart = params.chart,\n options = params.options;\n var legend = options.legend,\n seriesField = options.seriesField;\n if (legend && seriesField) {\n chart.legend(seriesField, legend);\n } else if (legend === false) {\n chart.legend(false);\n }\n return params;\n}\n/**\n * 数据标签\n * @param params\n */\nfunction label(params) {\n var chart = params.chart,\n options = params.options;\n var label = options.label,\n yField = options.yField,\n isRange = options.isRange;\n var geometry = findGeometry(chart, 'interval');\n if (!label) {\n geometry.label(false);\n } else {\n var callback = label.callback,\n cfg = __rest(label, [\"callback\"]);\n geometry.label({\n fields: [yField],\n callback: callback,\n cfg: __assign({\n // 配置默认的 label layout: 如果用户没有指定 layout 和 position, 则自动配置 layout\n layout: (cfg === null || cfg === void 0 ? void 0 : cfg.position) ? undefined : [{\n type: 'interval-adjust-position'\n }, {\n type: 'interval-hide-overlap'\n }, {\n type: 'adjust-color'\n }, {\n type: 'limit-in-plot',\n cfg: {\n action: 'hide'\n }\n }]\n }, transformLabel(isRange ? __assign({\n content: function content(item) {\n var _a;\n return (_a = item[yField]) === null || _a === void 0 ? void 0 : _a.join('-');\n }\n }, cfg) : cfg))\n });\n }\n return params;\n}\n/**\n * 柱形图 tooltip 配置 (对堆叠、分组做特殊处理)\n * @param params\n */\nfunction columnTooltip(params) {\n var chart = params.chart,\n options = params.options;\n var tooltip = options.tooltip,\n isGroup = options.isGroup,\n isStack = options.isStack,\n groupField = options.groupField,\n data = options.data,\n xField = options.xField,\n yField = options.yField,\n seriesField = options.seriesField;\n if (tooltip === false) {\n chart.tooltip(false);\n } else {\n var tooltipOptions = tooltip;\n // fix: https://github.com/antvis/G2Plot/issues/2572\n if (isGroup && isStack) {\n var customItems_1 = tooltipOptions.customItems;\n var tooltipFormatter_1 = (tooltipOptions === null || tooltipOptions === void 0 ? void 0 : tooltipOptions.formatter) || function (datum) {\n return {\n name: \"\".concat(datum[seriesField], \" - \").concat(datum[groupField]),\n value: datum[yField]\n };\n };\n tooltipOptions = __assign(__assign({}, tooltipOptions), {\n customItems: function customItems(originalItems) {\n var items = [];\n each(originalItems, function (item) {\n // Find datas in same cluster\n var datas = filter(data, function (d) {\n return isMatch(d, pick(item.data, [xField, seriesField]));\n });\n datas.forEach(function (datum) {\n items.push(__assign(__assign(__assign({}, item), {\n value: datum[yField],\n data: datum,\n mappingData: {\n _origin: datum\n }\n }), tooltipFormatter_1(datum)));\n });\n });\n // fix https://github.com/antvis/G2Plot/issues/3367\n return customItems_1 ? customItems_1(items) : items;\n }\n });\n }\n chart.tooltip(tooltipOptions);\n }\n return params;\n}\n/**\n * 柱形图适配器\n * @param params\n */\nexport function adaptor(params, isBar) {\n if (isBar === void 0) {\n isBar = false;\n }\n var options = params.options;\n var seriesField = options.seriesField;\n return flow(defaultOptions,\n // 处理默认配置\n theme,\n // theme 需要在 geometry 之前\n pattern('columnStyle'), state, transformations('rect'), geometry, meta, axis, legend, columnTooltip, slider, scrollbar, label, brushInteraction, interaction, animation, annotation(), conversionTag(options.yField, !isBar, !!seriesField),\n // 有拆分的时候禁用转化率\n connectedArea(!options.isStack), limitInPlot)(params);\n}","import { __assign } from \"tslib\";\nimport { tooltip } from '../../adaptor/common';\nimport { deepAssign, flow } from '../../utils';\nimport { adaptor as columnAdaptor } from '../column/adaptor';\nexport { meta } from '../column/adaptor';\n/**\n * 处理默认配置项\n * 1. switch xField、 yField\n * 2. switch xAxis、 yAxis and adjust axis.position configuration\n */\nfunction defaultOptions(params) {\n var options = params.options;\n var xField = options.xField,\n yField = options.yField,\n xAxis = options.xAxis,\n yAxis = options.yAxis;\n var position = {\n left: 'bottom',\n right: 'top',\n top: 'left',\n bottom: 'right'\n };\n var verticalAxis = yAxis !== false ? __assign({\n position: position[(yAxis === null || yAxis === void 0 ? void 0 : yAxis.position) || 'left']\n }, yAxis) : false;\n var horizontalAxis = xAxis !== false ? __assign({\n position: position[(xAxis === null || xAxis === void 0 ? void 0 : xAxis.position) || 'bottom']\n }, xAxis) : false;\n return __assign(__assign({}, params), {\n options: __assign(__assign({}, options), {\n xField: yField,\n yField: xField,\n // 条形图 xAxis,yAxis 不可以做 deepAssign\n xAxis: verticalAxis,\n yAxis: horizontalAxis\n })\n });\n}\n/**\n * label 适配器\n * @param params\n */\nfunction label(params) {\n var options = params.options;\n var label = options.label;\n // label of bar charts default position is left, if plot has label\n if (label && !label.position) {\n label.position = 'left';\n // 配置默认的 label layout: 如果用户没有指定 layout 和 position, 则自动配置 layout\n if (!label.layout) {\n label.layout = [{\n type: 'interval-adjust-position'\n }, {\n type: 'interval-hide-overlap'\n }, {\n type: 'adjust-color'\n }, {\n type: 'limit-in-plot',\n cfg: {\n action: 'hide'\n }\n }];\n }\n }\n return deepAssign({}, params, {\n options: {\n label: label\n }\n });\n}\n/**\n * legend 适配器\n * @param params\n */\nfunction legend(params) {\n var options = params.options;\n // 默认 legend 位置\n var seriesField = options.seriesField,\n isStack = options.isStack;\n var legend = options.legend;\n if (seriesField) {\n if (legend !== false) {\n legend = __assign({\n position: isStack ? 'top-left' : 'right-top'\n }, legend || {});\n }\n } else {\n legend = false;\n }\n return deepAssign({}, params, {\n options: {\n legend: legend\n }\n });\n}\n/**\n * coordinate 适配器\n * @param params\n */\nfunction coordinate(params) {\n // transpose column to bar 对角变换 & y 方向镜像变换\n var options = params.options;\n var coordinateOptions = [{\n type: 'transpose'\n }, {\n type: 'reflectY'\n }].concat(options.coordinate || []);\n return deepAssign({}, params, {\n options: {\n coordinate: coordinateOptions\n }\n });\n}\n/**\n * 柱形图适配器\n * @param params\n */\nexport function geometry(params) {\n var chart = params.chart,\n options = params.options;\n var barStyle = options.barStyle,\n barWidthRatio = options.barWidthRatio,\n minBarWidth = options.minBarWidth,\n maxBarWidth = options.maxBarWidth,\n barBackground = options.barBackground;\n return columnAdaptor({\n chart: chart,\n options: __assign(__assign({}, options), {\n // rename attrs as column\n columnStyle: barStyle,\n columnWidthRatio: barWidthRatio,\n minColumnWidth: minBarWidth,\n maxColumnWidth: maxBarWidth,\n columnBackground: barBackground\n })\n }, true);\n}\n/**\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n // flow 的方式处理所有的配置到 G2 API\n return flow(defaultOptions, label, legend, tooltip, coordinate, geometry)(params);\n}","import { Plot } from '../../core/plot';\nimport { deepAssign } from '../../utils';\n/**\n * 条形图默认配置项\n */\nexport var DEFAULT_OPTIONS = deepAssign({}, Plot.getDefaultOptions(), {\n barWidthRatio: 0.6,\n marginRatio: 1 / 32,\n tooltip: {\n shared: true,\n showMarkers: false,\n offset: 20\n },\n legend: {\n radio: {}\n },\n interactions: [{\n type: 'active-region'\n }]\n});","var _a;\n// 漏斗占比: data[n][yField] / data[0][yField]\nexport var FUNNEL_PERCENT = '$$percentage$$';\n// 漏斗映射值\nexport var FUNNEL_MAPPING_VALUE = '$$mappingValue$$';\n// 漏斗转化率: data[n][yField] / data[n-1][yField];\nexport var FUNNEL_CONVERSATION = '$$conversion$$';\n// 漏斗单项占总体和的百分比,用于动态漏斗图计算高度:\n// data[n][yField] / sum(data[0-n][yField])\nexport var FUNNEL_TOTAL_PERCENT = '$$totalPercentage$$';\n// 漏斗多边型 x 坐标\nexport var PLOYGON_X = '$$x$$';\nexport var PLOYGON_Y = '$$y$$';\n/**\n * 漏斗图 默认配置项\n */\nexport var DEFAULT_OPTIONS = {\n appendPadding: [0, 80],\n minSize: 0,\n maxSize: 1,\n meta: (_a = {}, _a[FUNNEL_MAPPING_VALUE] = {\n min: 0,\n max: 1,\n nice: false\n }, _a),\n label: {\n style: {\n fill: '#fff',\n fontSize: 12\n }\n },\n tooltip: {\n showTitle: false,\n showMarkers: false,\n shared: false\n },\n conversionTag: {\n offsetX: 10,\n offsetY: 0,\n style: {\n fontSize: 12,\n fill: 'rgba(0,0,0,0.45)'\n }\n }\n};","import { __assign, __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { getDataWhetherPercentage } from '../../utils/transform/percent';\nimport { adaptor, meta } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constants';\n/**\n * 条形图\n */\nvar Bar = /** @class */function (_super) {\n __extends(Bar, _super);\n function Bar() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'bar';\n return _this;\n }\n /**\n * 获取 条形图 默认配置项\n * 供外部使用\n */\n Bar.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * @override\n */\n Bar.prototype.changeData = function (data) {\n var _a, _b;\n this.updateOption({\n data: data\n });\n var _c = this,\n chart = _c.chart,\n options = _c.options;\n var isPercent = options.isPercent;\n var xField = options.xField,\n yField = options.yField,\n xAxis = options.xAxis,\n yAxis = options.yAxis;\n _a = [yField, xField], xField = _a[0], yField = _a[1];\n _b = [yAxis, xAxis], xAxis = _b[0], yAxis = _b[1];\n var switchedFieldOptions = __assign(__assign({}, options), {\n xField: xField,\n yField: yField,\n yAxis: yAxis,\n xAxis: xAxis\n });\n meta({\n chart: chart,\n options: switchedFieldOptions\n });\n chart.changeData(getDataWhetherPercentage(data, xField, yField, xField, isPercent));\n };\n /**\n * 获取 条形图 默认配置\n */\n Bar.prototype.getDefaultOptions = function () {\n return Bar.getDefaultOptions();\n };\n /**\n * 获取 条形图 的适配器\n */\n Bar.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Bar;\n}(Plot);\nexport { Bar };","import { Plot } from '../../core/plot';\nimport { deepAssign } from '../../utils';\n/**\n * 柱形图默认配置项\n */\nexport var DEFAULT_OPTIONS = deepAssign({}, Plot.getDefaultOptions(), {\n columnWidthRatio: 0.6,\n marginRatio: 1 / 32,\n tooltip: {\n shared: true,\n showMarkers: false,\n offset: 20\n },\n legend: {\n radio: {}\n },\n interactions: [{\n type: 'active-region'\n }]\n});","import { __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { getDataWhetherPercentage } from '../../utils/transform/percent';\nimport { adaptor, meta } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constants';\n/**\n * 柱形图\n */\nvar Column = /** @class */function (_super) {\n __extends(Column, _super);\n function Column() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'column';\n return _this;\n }\n /**\n * 获取 柱形图 默认配置项\n * 供外部使用\n */\n Column.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * @override\n */\n Column.prototype.changeData = function (data) {\n this.updateOption({\n data: data\n });\n var _a = this.options,\n yField = _a.yField,\n xField = _a.xField,\n isPercent = _a.isPercent;\n var _b = this,\n chart = _b.chart,\n options = _b.options;\n meta({\n chart: chart,\n options: options\n });\n this.chart.changeData(getDataWhetherPercentage(data, yField, xField, yField, isPercent));\n };\n /**\n * 获取 柱形图 默认配置\n */\n Column.prototype.getDefaultOptions = function () {\n return Column.getDefaultOptions();\n };\n /**\n * 获取 柱形图 的适配器\n */\n Column.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Column;\n}(Plot);\nexport { Column };","import { __assign } from \"tslib\";\nimport { get, isFunction, isNumber, map, maxBy } from '@antv/util';\nimport { FUNNEL_CONVERSATION, FUNNEL_MAPPING_VALUE, FUNNEL_PERCENT } from '../constant';\nexport var CONVERSION_TAG_NAME = 'CONVERSION_TAG_NAME';\n/**\n * 漏斗图 transform\n * @param geometry\n */\nexport function transformData(data, originData, options) {\n var formatData = [];\n var yField = options.yField,\n maxSize = options.maxSize,\n minSize = options.minSize;\n var maxYFieldValue = get(maxBy(originData, yField), [yField]);\n var max = isNumber(maxSize) ? maxSize : 1;\n var min = isNumber(minSize) ? minSize : 0;\n // format 数据\n formatData = map(data, function (row, index) {\n var percent = (row[yField] || 0) / maxYFieldValue;\n row[FUNNEL_PERCENT] = percent;\n row[FUNNEL_MAPPING_VALUE] = (max - min) * percent + min;\n // 转化率数据存储前后数据\n row[FUNNEL_CONVERSATION] = [get(data, [index - 1, yField]), row[yField]];\n return row;\n });\n return formatData;\n}\n/**\n * 漏斗图通用转化率组件\n * @param getLineCoordinate 用于获取特定的 line 的位置及配置\n */\nexport function conversionTagComponent(getLineCoordinate) {\n return function (params) {\n var chart = params.chart,\n options = params.options;\n // @ts-ignore\n var conversionTag = options.conversionTag,\n filteredData = options.filteredData;\n var data = filteredData || chart.getOptions().data;\n if (conversionTag) {\n var formatter_1 = conversionTag.formatter;\n data.forEach(function (obj, index) {\n if (index <= 0 || Number.isNaN(obj[FUNNEL_MAPPING_VALUE])) return;\n var lineOption = getLineCoordinate(obj, index, data, {\n top: true,\n name: CONVERSION_TAG_NAME,\n text: {\n content: isFunction(formatter_1) ? formatter_1(obj, data) : formatter_1,\n offsetX: conversionTag.offsetX,\n offsetY: conversionTag.offsetY,\n position: 'end',\n autoRotate: false,\n style: __assign({\n textAlign: 'start',\n textBaseline: 'middle'\n }, conversionTag.style)\n }\n });\n chart.annotation().line(lineOption);\n });\n }\n return params;\n };\n}","import { __assign } from \"tslib\";\nimport { get, isArray, map } from '@antv/util';\nimport { geometry as baseGeometry } from '../../../adaptor/geometries/base';\nimport { findGeometry, flow } from '../../../utils';\nimport { getTooltipMapping } from '../../../utils/tooltip';\nimport { FUNNEL_CONVERSATION, FUNNEL_MAPPING_VALUE, FUNNEL_PERCENT } from '../constant';\nimport { conversionTagComponent, transformData } from './common';\n/**\n * 处理字段数据\n * @param params\n */\nfunction field(params) {\n var chart = params.chart,\n options = params.options;\n var _a = options.data,\n data = _a === void 0 ? [] : _a,\n yField = options.yField,\n maxSize = options.maxSize,\n minSize = options.minSize;\n var formatData = transformData(data, data, {\n yField: yField,\n maxSize: maxSize,\n minSize: minSize\n });\n // 绘制漏斗图\n chart.data(formatData);\n return params;\n}\n/**\n * geometry处理\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var xField = options.xField,\n yField = options.yField,\n color = options.color,\n tooltip = options.tooltip,\n label = options.label,\n _a = options.shape,\n shape = _a === void 0 ? 'funnel' : _a,\n funnelStyle = options.funnelStyle,\n state = options.state;\n var _b = getTooltipMapping(tooltip, [xField, yField]),\n fields = _b.fields,\n formatter = _b.formatter;\n baseGeometry({\n chart: chart,\n options: {\n type: 'interval',\n xField: xField,\n yField: FUNNEL_MAPPING_VALUE,\n colorField: xField,\n tooltipFields: isArray(fields) && fields.concat([FUNNEL_PERCENT, FUNNEL_CONVERSATION]),\n mapping: {\n shape: shape,\n tooltip: formatter,\n color: color,\n style: funnelStyle\n },\n label: label,\n state: state\n }\n });\n var geo = findGeometry(params.chart, 'interval');\n geo.adjust('symmetric');\n return params;\n}\n/**\n * 转置处理\n * @param params\n */\nfunction transpose(params) {\n var chart = params.chart,\n options = params.options;\n var isTransposed = options.isTransposed;\n chart.coordinate({\n type: 'rect',\n actions: !isTransposed ? [['transpose'], ['scale', 1, -1]] : []\n });\n return params;\n}\n/**\n * 转化率组件\n * @param params\n */\nexport function conversionTag(params) {\n var options = params.options,\n chart = params.chart;\n var maxSize = options.maxSize;\n // 获取形状位置,再转化为需要的转化率位置\n var dataArray = get(chart, ['geometries', '0', 'dataArray'], []);\n var size = get(chart, ['options', 'data', 'length']);\n var x = map(dataArray, function (item) {\n return get(item, ['0', 'nextPoints', '0', 'x']) * size - 0.5;\n });\n var getLineCoordinate = function getLineCoordinate(datum, datumIndex, data, initLineOption) {\n var percent = maxSize - (maxSize - datum[FUNNEL_MAPPING_VALUE]) / 2;\n return __assign(__assign({}, initLineOption), {\n start: [x[datumIndex - 1] || datumIndex - 0.5, percent],\n end: [x[datumIndex - 1] || datumIndex - 0.5, percent + 0.05]\n });\n };\n conversionTagComponent(getLineCoordinate)(params);\n return params;\n}\n/**\n * 基础漏斗\n * @param chart\n * @param options\n */\nexport function basicFunnel(params) {\n return flow(field, geometry, transpose, conversionTag)(params);\n}","import { get, isArray, isNumber, map } from '@antv/util';\nimport { geometry as baseGeometry } from '../../../adaptor/geometries/base';\nimport { deepAssign, flow } from '../../../utils';\nimport { getTooltipMapping } from '../../../utils/tooltip';\nimport { FUNNEL_CONVERSATION, FUNNEL_MAPPING_VALUE, FUNNEL_PERCENT } from '../constant';\nimport { conversionTagComponent, transformData } from './common';\n/**\n * 处理字段数据\n * @param params\n */\nfunction field(params) {\n var _a;\n var chart = params.chart,\n options = params.options;\n var _b = options.data,\n data = _b === void 0 ? [] : _b,\n yField = options.yField;\n // 绘制漏斗图\n chart.data(data);\n chart.scale((_a = {}, _a[yField] = {\n sync: true\n }, _a));\n return params;\n}\n/**\n * geometry处理\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var data = options.data,\n xField = options.xField,\n yField = options.yField,\n color = options.color,\n compareField = options.compareField,\n isTransposed = options.isTransposed,\n tooltip = options.tooltip,\n maxSize = options.maxSize,\n minSize = options.minSize,\n label = options.label,\n funnelStyle = options.funnelStyle,\n state = options.state,\n showFacetTitle = options.showFacetTitle;\n chart.facet('mirror', {\n fields: [compareField],\n // 漏斗图的转置规则与分面相反,默认是垂直布局\n transpose: !isTransposed,\n padding: isTransposed ? 0 : [32, 0, 0, 0],\n showTitle: showFacetTitle,\n eachView: function eachView(view, facet) {\n var index = isTransposed ? facet.rowIndex : facet.columnIndex;\n if (!isTransposed) {\n view.coordinate({\n type: 'rect',\n actions: [['transpose'], ['scale', index === 0 ? -1 : 1, -1]]\n });\n }\n var formatterData = transformData(facet.data, data, {\n yField: yField,\n maxSize: maxSize,\n minSize: minSize\n });\n view.data(formatterData);\n // 绘制图形\n var _a = getTooltipMapping(tooltip, [xField, yField, compareField]),\n fields = _a.fields,\n formatter = _a.formatter;\n var defaultFacetLabel = isTransposed ? {\n offset: index === 0 ? 10 : -23,\n position: index === 0 ? 'bottom' : 'top'\n } : {\n offset: 10,\n position: 'left',\n style: {\n textAlign: index === 0 ? 'end' : 'start'\n }\n };\n baseGeometry({\n chart: view,\n options: {\n type: 'interval',\n xField: xField,\n yField: FUNNEL_MAPPING_VALUE,\n colorField: xField,\n tooltipFields: isArray(fields) && fields.concat([FUNNEL_PERCENT, FUNNEL_CONVERSATION]),\n mapping: {\n // todo 暂时不提供 金字塔 shape,后续需要自定义下形状\n shape: 'funnel',\n tooltip: formatter,\n color: color,\n style: funnelStyle\n },\n label: label === false ? false : deepAssign({}, defaultFacetLabel, label),\n state: state\n }\n });\n }\n });\n return params;\n}\nexport function compareConversionTag(params) {\n // @ts-ignore\n var chart = params.chart,\n index = params.index,\n options = params.options;\n var conversionTag = options.conversionTag,\n isTransposed = options.isTransposed;\n (isNumber(index) ? [chart] : chart.views).forEach(function (view, viewIndex) {\n // 获取形状位置,再转化为需要的转化率位置\n var dataArray = get(view, ['geometries', '0', 'dataArray'], []);\n var size = get(view, ['options', 'data', 'length']);\n var x = map(dataArray, function (item) {\n return get(item, ['0', 'nextPoints', '0', 'x']) * size - 0.5;\n });\n var getLineCoordinate = function getLineCoordinate(datum, datumIndex, data, initLineOption) {\n var ratio = (index || viewIndex) === 0 ? -1 : 1;\n return deepAssign({}, initLineOption, {\n start: [x[datumIndex - 1] || datumIndex - 0.5, datum[FUNNEL_MAPPING_VALUE]],\n end: [x[datumIndex - 1] || datumIndex - 0.5, datum[FUNNEL_MAPPING_VALUE] + 0.05],\n text: isTransposed ? {\n style: {\n textAlign: 'start'\n }\n } : {\n offsetX: conversionTag !== false ? ratio * conversionTag.offsetX : 0,\n style: {\n textAlign: (index || viewIndex) === 0 ? 'end' : 'start'\n }\n }\n });\n };\n conversionTagComponent(getLineCoordinate)(deepAssign({}, {\n chart: view,\n options: options\n }));\n });\n}\n/**\n * 转化率组件\n * @param params\n */\nfunction conversionTag(params) {\n var chart = params.chart;\n // @ts-ignore\n chart.once('beforepaint', function () {\n return compareConversionTag(params);\n });\n return params;\n}\n/**\n * 对比漏斗\n * @param chart\n * @param options\n */\nexport function compareFunnel(params) {\n return flow(field, geometry, conversionTag)(params);\n}","import { __assign } from \"tslib\";\nimport { get, isArray, map, maxBy, reduce } from '@antv/util';\nimport { geometry as baseGeometry } from '../../../adaptor/geometries/base';\nimport { flow } from '../../../utils';\nimport { getTooltipMapping } from '../../../utils/tooltip';\nimport { FUNNEL_CONVERSATION, FUNNEL_PERCENT, FUNNEL_TOTAL_PERCENT, PLOYGON_X, PLOYGON_Y } from '../constant';\nimport { conversionTagComponent } from './common';\n/**\n * 动态高度漏斗图\n * @param params\n * 需求: 每个漏斗项的高度根据 yfield 等比生成。漏斗上下宽度比为2,即斜率为 2。\n * 实现方式: 使用 g2 多边形,data -> 点坐标 -> 绘制\n * 以漏斗底部中心点为坐标轴原点,漏斗在 -0.5 <= x <= 0.5, 0 <= y <= 1 的正方形中绘制\n * 先计算第一象限的点, 第二象限的点即为镜像 x 轴取反。\n * 第一象限共需计算 data.length + 1 个点,在 y = 4x - 1 上。首尾分别是[0.5, 1], [0.25, 0]。根据 data 计算出 y 值,从而得到 y 值\n */\n/**\n * 处理数据\n * @param params\n */\nfunction field(params) {\n var chart = params.chart,\n options = params.options;\n var _a = options.data,\n data = _a === void 0 ? [] : _a,\n yField = options.yField;\n // 计算各数据项所占高度\n var sum = reduce(data, function (total, item) {\n return total + (item[yField] || 0);\n }, 0);\n var max = maxBy(data, yField)[yField];\n var formatData = map(data, function (row, index) {\n // 储存四个点 x,y 坐标,方向为顺时针,即 [左上, 右上,右下,左下]\n var x = [];\n var y = [];\n row[FUNNEL_TOTAL_PERCENT] = (row[yField] || 0) / sum;\n // 获取左上角,右上角坐标\n if (index) {\n var preItemX = data[index - 1][PLOYGON_X];\n var preItemY = data[index - 1][PLOYGON_Y];\n x[0] = preItemX[3];\n y[0] = preItemY[3];\n x[1] = preItemX[2];\n y[1] = preItemY[2];\n } else {\n x[0] = -0.5;\n y[0] = 1;\n x[1] = 0.5;\n y[1] = 1;\n }\n // 获取右下角坐标\n y[2] = y[1] - row[FUNNEL_TOTAL_PERCENT];\n x[2] = (y[2] + 1) / 4;\n y[3] = y[2];\n x[3] = -x[2];\n // 赋值\n row[PLOYGON_X] = x;\n row[PLOYGON_Y] = y;\n row[FUNNEL_PERCENT] = (row[yField] || 0) / max;\n row[FUNNEL_CONVERSATION] = [get(data, [index - 1, yField]), row[yField]];\n return row;\n });\n chart.data(formatData);\n return params;\n}\n/**\n * geometry处理\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var xField = options.xField,\n yField = options.yField,\n color = options.color,\n tooltip = options.tooltip,\n label = options.label,\n funnelStyle = options.funnelStyle,\n state = options.state;\n var _a = getTooltipMapping(tooltip, [xField, yField]),\n fields = _a.fields,\n formatter = _a.formatter;\n // 绘制漏斗图\n baseGeometry({\n chart: chart,\n options: {\n type: 'polygon',\n xField: PLOYGON_X,\n yField: PLOYGON_Y,\n colorField: xField,\n tooltipFields: isArray(fields) && fields.concat([FUNNEL_PERCENT, FUNNEL_CONVERSATION]),\n label: label,\n state: state,\n mapping: {\n tooltip: formatter,\n color: color,\n style: funnelStyle\n }\n }\n });\n return params;\n}\n/**\n * 转置处理\n * @param params\n */\nfunction transpose(params) {\n var chart = params.chart,\n options = params.options;\n var isTransposed = options.isTransposed;\n chart.coordinate({\n type: 'rect',\n actions: isTransposed ? [['transpose'], ['reflect', 'x']] : []\n });\n return params;\n}\n/**\n * 转化率组件\n * @param params\n */\nfunction conversionTag(params) {\n var getLineCoordinate = function getLineCoordinate(datum, datumIndex, data, initLineOption) {\n return __assign(__assign({}, initLineOption), {\n start: [datum[PLOYGON_X][1], datum[PLOYGON_Y][1]],\n end: [datum[PLOYGON_X][1] + 0.05, datum[PLOYGON_Y][1]]\n });\n };\n conversionTagComponent(getLineCoordinate)(params);\n return params;\n}\n/**\n * 动态高度漏斗\n * @param chart\n * @param options\n */\nexport function dynamicHeightFunnel(params) {\n return flow(field, geometry, transpose, conversionTag)(params);\n}","import { deepAssign, flow } from '../../../utils';\nimport { basicFunnel } from './basic';\n/**\n * 处理字段数据\n * @param params\n */\nfunction field(params) {\n var _a;\n var chart = params.chart,\n options = params.options;\n var _b = options.data,\n data = _b === void 0 ? [] : _b,\n yField = options.yField;\n // 绘制漏斗图\n chart.data(data);\n chart.scale((_a = {}, _a[yField] = {\n sync: true\n }, _a));\n return params;\n}\n/**\n * geometry处理\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var seriesField = options.seriesField,\n isTransposed = options.isTransposed,\n showFacetTitle = options.showFacetTitle;\n chart.facet('rect', {\n fields: [seriesField],\n padding: [isTransposed ? 0 : 32, 10, 0, 10],\n showTitle: showFacetTitle,\n eachView: function eachView(view, facet) {\n basicFunnel(deepAssign({}, params, {\n chart: view,\n options: {\n data: facet.data\n }\n }));\n }\n });\n return params;\n}\n/**\n * 分面漏斗\n * @param chart\n * @param options\n */\nexport function facetFunnel(params) {\n return flow(field, geometry)(params);\n}","import { __assign, __extends } from \"tslib\";\nimport { Action } from '@antv/g2';\nimport { each, filter, get, map } from '@antv/util';\nimport { conversionTag as basicConversionTag } from '../geometries/basic';\nimport { CONVERSION_TAG_NAME, transformData } from '../geometries/common';\nimport { compareConversionTag } from '../geometries/compare';\n/**\n * Funnel 转化率跟随 legend 变化事件\n */\nvar ConversionTagAction = /** @class */function (_super) {\n __extends(ConversionTagAction, _super);\n function ConversionTagAction() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.rendering = false;\n return _this;\n }\n ConversionTagAction.prototype.change = function (options) {\n var _this = this;\n // 防止多次重复渲染\n if (!this.rendering) {\n var seriesField = options.seriesField,\n compareField = options.compareField;\n var conversionTag_1 = compareField ? compareConversionTag : basicConversionTag;\n var view = this.context.view;\n // 兼容分面漏斗图\n var views = seriesField || compareField ? view.views : [view];\n map(views, function (v, index) {\n // 防止影响其他 annotations 被去除\n var annotationController = v.getController('annotation');\n var annotations = filter(get(annotationController, ['option'], []), function (_a) {\n var name = _a.name;\n return name !== CONVERSION_TAG_NAME;\n });\n annotationController.clear(true);\n each(annotations, function (annotation) {\n if (typeof annotation === 'object') {\n v.annotation()[annotation.type](annotation);\n }\n });\n var data = get(v, ['filteredData'], v.getOptions().data);\n conversionTag_1({\n chart: v,\n index: index,\n options: __assign(__assign({}, options), {\n // @ts-ignore\n filteredData: transformData(data, data, options)\n })\n });\n v.filterData(data);\n _this.rendering = true;\n v.render(true);\n });\n }\n this.rendering = false;\n };\n return ConversionTagAction;\n}(Action);\nexport { ConversionTagAction };","import { registerAction, registerInteraction } from '@antv/g2';\nimport { ConversionTagAction } from './funnel-conversion-tag';\nvar FUNNEL_CONVERSION_TAG = 'funnel-conversion-tag';\nexport var FUNNEL_LEGEND_FILTER = 'funnel-afterrender';\nexport var interactionStart = {\n trigger: 'afterrender',\n action: \"\".concat(FUNNEL_CONVERSION_TAG, \":change\")\n};\nregisterAction(FUNNEL_CONVERSION_TAG, ConversionTagAction);\nregisterInteraction(FUNNEL_LEGEND_FILTER, {\n start: [interactionStart]\n});","import { __assign } from \"tslib\";\nimport { clone, each, isFunction } from '@antv/util';\nimport { animation, annotation, scale, theme, tooltip } from '../../adaptor/common';\nimport { getLocale } from '../../core/locale';\nimport { deepAssign, flow } from '../../utils';\nimport { conversionTagFormatter } from '../../utils/conversion';\nimport { FUNNEL_CONVERSATION, FUNNEL_PERCENT } from './constant';\nimport { basicFunnel } from './geometries/basic';\nimport { compareFunnel } from './geometries/compare';\nimport { dynamicHeightFunnel } from './geometries/dynamic-height';\nimport { facetFunnel } from './geometries/facet';\nimport { FUNNEL_LEGEND_FILTER, interactionStart } from './interactions';\n/**\n *\n * 各式漏斗图geometry实现细节有较大不同,\n * 1. 普通漏斗图:interval.shape('funnel')\n * 2. 对比漏斗图:分面\n * 3. 动态高度漏斗图:polypon\n * 4. 分面漏斗图:普通 + list 分面\n* /\n\n/**\n * options 处理\n * @param params\n */\nfunction defaultOptions(params) {\n var options = params.options;\n var compareField = options.compareField,\n xField = options.xField,\n yField = options.yField,\n locale = options.locale,\n funnelStyle = options.funnelStyle,\n data = options.data;\n var i18n = getLocale(locale);\n var defaultOption = {\n label: compareField ? {\n fields: [xField, yField, compareField, FUNNEL_PERCENT, FUNNEL_CONVERSATION],\n formatter: function formatter(datum) {\n return \"\".concat(datum[yField]);\n }\n } : {\n fields: [xField, yField, FUNNEL_PERCENT, FUNNEL_CONVERSATION],\n offset: 0,\n position: 'middle',\n formatter: function formatter(datum) {\n return \"\".concat(datum[xField], \" \").concat(datum[yField]);\n }\n },\n tooltip: {\n title: xField,\n formatter: function formatter(datum) {\n return {\n name: datum[xField],\n value: datum[yField]\n };\n }\n },\n conversionTag: {\n // conversionTag 的计算和显示逻辑统一保持一致\n formatter: function formatter(datum) {\n return \"\".concat(i18n.get(['conversionTag', 'label']), \": \").concat(conversionTagFormatter.apply(void 0, datum[FUNNEL_CONVERSATION]));\n }\n }\n };\n // 漏斗图样式\n var style;\n if (compareField || funnelStyle) {\n style = function style(datum) {\n return deepAssign({},\n // 对比漏斗图默认描边\n compareField && {\n lineWidth: 1,\n stroke: '#fff'\n }, isFunction(funnelStyle) ? funnelStyle(datum) : funnelStyle);\n };\n }\n return deepAssign({\n options: defaultOption\n }, params, {\n options: {\n funnelStyle: style,\n data: clone(data)\n }\n });\n}\n/**\n * geometry处理\n * @param params\n */\nfunction geometry(params) {\n var options = params.options;\n var compareField = options.compareField,\n dynamicHeight = options.dynamicHeight,\n seriesField = options.seriesField;\n if (seriesField) {\n return facetFunnel(params);\n }\n if (compareField) {\n return compareFunnel(params);\n }\n if (dynamicHeight) {\n return dynamicHeightFunnel(params);\n }\n return basicFunnel(params);\n}\n/**\n * meta 配置\n * @param params\n */\nexport function meta(params) {\n var _a;\n var options = params.options;\n var xAxis = options.xAxis,\n yAxis = options.yAxis,\n xField = options.xField,\n yField = options.yField;\n return flow(scale((_a = {}, _a[xField] = xAxis, _a[yField] = yAxis, _a)))(params);\n}\n/**\n * 坐标轴\n * @param params\n */\nfunction axis(params) {\n var chart = params.chart;\n chart.axis(false);\n return params;\n}\n/**\n * legend 配置\n * @param params\n */\nfunction legend(params) {\n var chart = params.chart,\n options = params.options;\n var legend = options.legend;\n if (legend === false) {\n chart.legend(false);\n } else {\n chart.legend(legend);\n // TODO FIX: legend-click 时间和转化率组件之间的关联\n }\n\n return params;\n}\n/**\n * Interaction 配置\n * @param params\n */\nexport function interaction(params) {\n var chart = params.chart,\n options = params.options;\n // @ts-ignore\n var interactions = options.interactions,\n dynamicHeight = options.dynamicHeight;\n each(interactions, function (i) {\n if (i.enable === false) {\n chart.removeInteraction(i.type);\n } else {\n chart.interaction(i.type, i.cfg || {});\n }\n });\n // 动态高度 不进行交互操作\n if (!dynamicHeight) {\n chart.interaction(FUNNEL_LEGEND_FILTER, {\n start: [__assign(__assign({}, interactionStart), {\n arg: options\n })]\n });\n } else {\n chart.removeInteraction(FUNNEL_LEGEND_FILTER);\n }\n return params;\n}\n/**\n * 漏斗图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n return flow(defaultOptions, geometry, meta, axis, tooltip, interaction, legend, animation, theme, annotation())(params);\n}","import { __extends } from \"tslib\";\nimport { each } from '@antv/util';\nimport { Plot } from '../../core/plot';\nimport { getAllElementsRecursively } from '../../utils';\nimport { adaptor } from './adaptor';\nimport { DEFAULT_OPTIONS, FUNNEL_CONVERSATION as FUNNEL_CONVERSATION_FIELD, FUNNEL_PERCENT, FUNNEL_TOTAL_PERCENT } from './constant';\nimport './interactions';\nexport { FUNNEL_CONVERSATION_FIELD };\nvar Funnel = /** @class */function (_super) {\n __extends(Funnel, _super);\n function Funnel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'funnel';\n return _this;\n }\n Funnel.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * 获取 漏斗图 默认配置项\n */\n Funnel.prototype.getDefaultOptions = function () {\n // 由于不同漏斗图 defaultOption 有部分逻辑不同,此处仅处理 core.getDefaultOptions 覆盖范围,funnel 的 defaulOption 为不分散逻辑统一写到 adaptor 的 defaultOption 中\n return Funnel.getDefaultOptions();\n };\n /**\n * 获取 漏斗图 的适配器\n */\n Funnel.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n /**\n * 设置状态\n * @param type 状态类型,支持 'active' | 'inactive' | 'selected' 三种\n * @param conditions 条件,支持数组\n * @param status 是否激活,默认 true\n */\n Funnel.prototype.setState = function (type, condition, status) {\n if (status === void 0) {\n status = true;\n }\n var elements = getAllElementsRecursively(this.chart);\n each(elements, function (ele) {\n if (condition(ele.getData())) {\n ele.setState(type, status);\n }\n });\n };\n /**\n * 获取状态\n */\n Funnel.prototype.getStates = function () {\n var elements = getAllElementsRecursively(this.chart);\n var stateObjects = [];\n each(elements, function (element) {\n var data = element.getData();\n var states = element.getStates();\n each(states, function (state) {\n stateObjects.push({\n data: data,\n state: state,\n geometry: element.geometry,\n element: element\n });\n });\n });\n return stateObjects;\n };\n // 内部变量\n /** 漏斗 转化率 字段 */\n Funnel.CONVERSATION_FIELD = FUNNEL_CONVERSATION_FIELD;\n /** 漏斗 百分比 字段 */\n Funnel.PERCENT_FIELD = FUNNEL_PERCENT;\n /** 漏斗 总转换率百分比 字段 */\n Funnel.TOTAL_PERCENT_FIELD = FUNNEL_TOTAL_PERCENT;\n return Funnel;\n}(Plot);\nexport { Funnel };","var _a;\nexport var RANGE_VALUE = 'range';\nexport var RANGE_TYPE = 'type';\nexport var PERCENT = 'percent';\nexport var DEFAULT_COLOR = '#f0f0f0';\n/** 仪表盘由 指针和表盘 组成 */\nexport var INDICATEOR_VIEW_ID = 'indicator-view';\nexport var RANGE_VIEW_ID = 'range-view';\n/**\n * 仪表盘默认配置项\n */\nexport var DEFAULT_OPTIONS = {\n percent: 0,\n range: {\n ticks: []\n },\n innerRadius: 0.9,\n radius: 0.95,\n startAngle: -7 / 6 * Math.PI,\n endAngle: 1 / 6 * Math.PI,\n syncViewPadding: true,\n axis: {\n line: null,\n label: {\n offset: -24,\n style: {\n textAlign: 'center',\n textBaseline: 'middle'\n }\n },\n subTickLine: {\n length: -8\n },\n tickLine: {\n length: -12\n },\n grid: null\n },\n indicator: {\n pointer: {\n style: {\n lineWidth: 5,\n lineCap: 'round'\n }\n },\n pin: {\n style: {\n r: 9.75,\n lineWidth: 4.5,\n fill: '#fff'\n }\n }\n },\n statistic: {\n title: false\n },\n meta: (_a = {},\n // 两个 view 的 scale 同步到 v 上\n _a[RANGE_VALUE] = {\n sync: 'v'\n }, _a[PERCENT] = {\n sync: 'v',\n tickCount: 5,\n tickInterval: 0.2\n }, _a),\n animation: false\n};","import { clamp, get, size, uniq } from '@antv/util';\nimport { PERCENT, RANGE_TYPE, RANGE_VALUE } from './constants';\n/**\n * 将 range 生成为 data 数据\n * @param range\n * @param key\n * @returns {GaugeRangeData}\n */\nexport function processRangeData(range, percent) {\n return range\n // 映射为 stack 的数据\n .map(function (r, idx) {\n var _a;\n return _a = {}, _a[RANGE_VALUE] = r - (range[idx - 1] || 0), _a[RANGE_TYPE] = \"\".concat(idx), _a[PERCENT] = percent, _a;\n });\n}\n/**\n * 获取 仪表盘 指针数据\n * @param percent\n */\nexport function getIndicatorData(percent) {\n var _a;\n return [(_a = {}, _a[PERCENT] = clamp(percent, 0, 1), _a)];\n}\n/**\n * 获取仪表盘 表盘弧形数据\n * @param percent\n * @param range\n */\nexport function getRangeData(percent, range) {\n var ticks = get(range, ['ticks'], []);\n var clampTicks = size(ticks) ? uniq(ticks) : [0, clamp(percent, 0, 1), 1];\n if (!clampTicks[0]) {\n clampTicks.shift();\n }\n return processRangeData(clampTicks, percent);\n}","import { __assign } from \"tslib\";\nimport { get, isString } from '@antv/util';\nimport { animation, annotation, interaction, scale, theme } from '../../adaptor/common';\nimport { interval } from '../../adaptor/geometries';\nimport { AXIS_META_CONFIG_KEYS } from '../../constant';\nimport { deepAssign, flow, pick, renderGaugeStatistic } from '../../utils';\nimport { DEFAULT_COLOR, INDICATEOR_VIEW_ID, PERCENT, RANGE_TYPE, RANGE_VALUE, RANGE_VIEW_ID } from './constants';\nimport { getIndicatorData, getRangeData } from './utils';\n/**\n * geometry 处理\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var percent = options.percent,\n range = options.range,\n radius = options.radius,\n innerRadius = options.innerRadius,\n startAngle = options.startAngle,\n endAngle = options.endAngle,\n axis = options.axis,\n indicator = options.indicator,\n gaugeStyle = options.gaugeStyle,\n type = options.type,\n meter = options.meter;\n var color = range.color,\n rangeWidth = range.width;\n // 指标 & 指针\n // 如果开启在应用\n if (indicator) {\n var indicatorData = getIndicatorData(percent);\n var v1 = chart.createView({\n id: INDICATEOR_VIEW_ID\n });\n v1.data(indicatorData);\n v1.point().position(\"\".concat(PERCENT, \"*1\")).shape(indicator.shape || 'gauge-indicator')\n // 传入指针的样式到自定义 shape 中\n .customInfo({\n defaultColor: chart.getTheme().defaultColor,\n indicator: indicator\n });\n v1.coordinate('polar', {\n startAngle: startAngle,\n endAngle: endAngle,\n radius: innerRadius * radius // 外部的 innerRadius * radius = 这里的 radius\n });\n\n v1.axis(PERCENT, axis);\n // 一部分应用到 scale 中\n v1.scale(PERCENT, pick(axis, AXIS_META_CONFIG_KEYS));\n }\n // 辅助 range\n // [{ range: 1, type: '0', percent: 原始进度百分比 }]\n var rangeData = getRangeData(percent, options.range);\n var v2 = chart.createView({\n id: RANGE_VIEW_ID\n });\n v2.data(rangeData);\n var rangeColor = isString(color) ? [color, DEFAULT_COLOR] : color;\n var ext = interval({\n chart: v2,\n options: {\n xField: '1',\n yField: RANGE_VALUE,\n seriesField: RANGE_TYPE,\n rawFields: [PERCENT],\n isStack: true,\n interval: {\n color: rangeColor,\n style: gaugeStyle,\n shape: type === 'meter' ? 'meter-gauge' : null\n },\n args: {\n zIndexReversed: true,\n sortZIndex: true\n },\n minColumnWidth: rangeWidth,\n maxColumnWidth: rangeWidth\n }\n }).ext;\n var geometry = ext.geometry;\n // 传入到自定义 shape 中\n geometry.customInfo({\n meter: meter\n });\n v2.coordinate('polar', {\n innerRadius: innerRadius,\n radius: radius,\n startAngle: startAngle,\n endAngle: endAngle\n }).transpose();\n return params;\n}\n/**\n * meta 配置\n * @param params\n */\nfunction meta(params) {\n var _a;\n return flow(scale((_a = {\n range: {\n min: 0,\n max: 1,\n maxLimit: 1,\n minLimit: 0\n }\n }, _a[PERCENT] = {}, _a)))(params);\n}\n/**\n * 统计指标文档\n * @param params\n */\nfunction statistic(params, updated) {\n var chart = params.chart,\n options = params.options;\n var statistic = options.statistic,\n percent = options.percent;\n // 先清空标注,再重新渲染\n chart.getController('annotation').clear(true);\n if (statistic) {\n var contentOption = statistic.content;\n var transformContent = void 0;\n // 当设置 content 的时候,设置默认样式\n if (contentOption) {\n transformContent = deepAssign({}, {\n content: \"\".concat((percent * 100).toFixed(2), \"%\"),\n style: {\n opacity: 0.75,\n fontSize: '30px',\n lineHeight: 1,\n textAlign: 'center',\n color: 'rgba(44,53,66,0.85)'\n }\n }, contentOption);\n }\n renderGaugeStatistic(chart, {\n statistic: __assign(__assign({}, statistic), {\n content: transformContent\n })\n }, {\n percent: percent\n });\n }\n if (updated) {\n chart.render(true);\n }\n return params;\n}\n/**\n * tooltip 配置\n */\nfunction tooltip(params) {\n var chart = params.chart,\n options = params.options;\n var tooltip = options.tooltip;\n if (tooltip) {\n chart.tooltip(deepAssign({\n showTitle: false,\n showMarkers: false,\n containerTpl: '
        ',\n domStyles: {\n 'g2-tooltip': {\n padding: '4px 8px',\n fontSize: '10px'\n }\n },\n customContent: function customContent(x, data) {\n var percent = get(data, [0, 'data', PERCENT], 0);\n return \"\".concat((percent * 100).toFixed(2), \"%\");\n }\n }, tooltip));\n } else {\n // 默认,不展示 tooltip\n chart.tooltip(false);\n }\n return params;\n}\n/**\n * other 配置\n * @param params\n */\nfunction other(params) {\n var chart = params.chart;\n chart.legend(false);\n return params;\n}\n/**\n * 对外暴露的 adaptor\n */\nexport { statistic };\n/**\n * 图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n // flow 的方式处理所有的配置到 G2 API\n return flow(theme,\n // animation 配置必须在 createView 之前,不然无法让子 View 生效\n animation, geometry, meta, tooltip, statistic, interaction, annotation(), other\n // ... 其他的 adaptor flow\n )(params);\n}","import { __assign } from \"tslib\";\nimport { registerShape } from '@antv/g2';\n// 自定义Shape 部分\nregisterShape('point', 'gauge-indicator', {\n draw: function draw(cfg, container) {\n // 使用 customInfo 传递参数\n var _a = cfg.customInfo,\n indicator = _a.indicator,\n defaultColor = _a.defaultColor;\n var _b = indicator,\n pointer = _b.pointer,\n pin = _b.pin;\n var group = container.addGroup();\n // 获取极坐标系下画布中心点\n var center = this.parsePoint({\n x: 0,\n y: 0\n });\n // 绘制指针\n if (pointer) {\n // pointer\n group.addShape('line', {\n name: 'pointer',\n attrs: __assign({\n x1: center.x,\n y1: center.y,\n x2: cfg.x,\n y2: cfg.y,\n stroke: defaultColor\n }, pointer.style)\n });\n }\n // pin\n if (pin) {\n group.addShape('circle', {\n name: 'pin',\n attrs: __assign({\n x: center.x,\n y: center.y,\n stroke: defaultColor\n }, pin.style)\n });\n }\n return group;\n }\n});","import { registerShape, Util } from '@antv/g2';\nimport { clamp } from '@antv/util';\n/**\n * 自定义 Shape 部分: 自定义米轨仪表盘\n * 定义 STEP, STEP_RATIO. 可绘制区域: 1 / (STEP + 1) * i -> 1 / (STEP + 1) * i + (STEP_RATIO / (STEP + 1))\n */\nregisterShape('interval', 'meter-gauge', {\n draw: function draw(cfg, container) {\n // 使用 customInfo 传递参数\n var _a = cfg.customInfo.meter,\n meter = _a === void 0 ? {} : _a;\n var _b = meter.steps,\n STEP = _b === void 0 ? 50 : _b,\n _c = meter.stepRatio,\n STEP_RATIO = _c === void 0 ? 0.5 : _c;\n STEP = STEP < 1 ? 1 : STEP;\n // stepRatio 取值范围: (0, 1]\n STEP_RATIO = clamp(STEP_RATIO, 0, 1);\n var _d = this.coordinate,\n COORD_START_ANGLE = _d.startAngle,\n COORD_END_ANGLE = _d.endAngle;\n var GAP = 0;\n if (STEP_RATIO > 0 && STEP_RATIO < 1) {\n var TOTAL = COORD_END_ANGLE - COORD_START_ANGLE;\n GAP = TOTAL / STEP / (STEP_RATIO / (1 - STEP_RATIO) + 1 - 1 / STEP);\n }\n var INTERVAL = GAP / (1 - STEP_RATIO) * STEP_RATIO;\n var group = container.addGroup();\n // 绘制图形的时候,留下 gap\n var center = this.coordinate.getCenter();\n var radius = this.coordinate.getRadius();\n var _e = Util.getAngle(cfg, this.coordinate),\n START_ANGLE = _e.startAngle,\n END_ANGLE = _e.endAngle;\n for (var startAngle = START_ANGLE; startAngle < END_ANGLE;) {\n var endAngle = void 0;\n var r = (startAngle - COORD_START_ANGLE) % (INTERVAL + GAP);\n if (r < INTERVAL) {\n endAngle = startAngle + (INTERVAL - r);\n } else {\n startAngle += INTERVAL + GAP - r;\n endAngle = startAngle + INTERVAL;\n }\n var path = Util.getSectorPath(center.x, center.y, radius, startAngle, Math.min(endAngle, END_ANGLE), radius * this.coordinate.innerRadius);\n group.addShape('path', {\n name: 'meter-gauge',\n attrs: {\n path: path,\n fill: cfg.color,\n stroke: cfg.color,\n lineWidth: 0.5\n }\n });\n startAngle = endAngle + GAP;\n }\n return group;\n }\n});","import { __extends } from \"tslib\";\nimport { Event, VIEW_LIFE_CIRCLE } from '@antv/g2';\nimport { Plot } from '../../core/plot';\nimport { adaptor, statistic } from './adaptor';\nimport { DEFAULT_OPTIONS, INDICATEOR_VIEW_ID, RANGE_VIEW_ID } from './constants';\n// 注册 shape\nimport './shapes/indicator';\nimport './shapes/meter-gauge';\nimport { getIndicatorData, getRangeData } from './utils';\n/**\n * 仪表盘\n */\nvar Gauge = /** @class */function (_super) {\n __extends(Gauge, _super);\n function Gauge() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'gauge';\n return _this;\n }\n /**\n * 获取 仪表盘 默认配置项\n * 供外部使用\n */\n Gauge.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * 更新数据\n * @param percent\n */\n Gauge.prototype.changeData = function (percent) {\n this.chart.emit(VIEW_LIFE_CIRCLE.BEFORE_CHANGE_DATA, Event.fromData(this.chart, VIEW_LIFE_CIRCLE.BEFORE_CHANGE_DATA, null));\n this.updateOption({\n percent: percent\n });\n var indicatorView = this.chart.views.find(function (v) {\n return v.id === INDICATEOR_VIEW_ID;\n });\n if (indicatorView) {\n indicatorView.data(getIndicatorData(percent));\n }\n var rangeView = this.chart.views.find(function (v) {\n return v.id === RANGE_VIEW_ID;\n });\n if (rangeView) {\n rangeView.data(getRangeData(percent, this.options.range));\n }\n // todo 后续让 G2 层在 afterrender 之后,来重绘 annotations\n statistic({\n chart: this.chart,\n options: this.options\n }, true);\n this.chart.emit(VIEW_LIFE_CIRCLE.AFTER_CHANGE_DATA, Event.fromData(this.chart, VIEW_LIFE_CIRCLE.AFTER_CHANGE_DATA, null));\n };\n /**\n * 获取默认配置\n * 供 base 使用\n */\n Gauge.prototype.getDefaultOptions = function () {\n return Gauge.getDefaultOptions();\n };\n /**\n * 获取适配器\n */\n Gauge.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Gauge;\n}(Plot);\nexport { Gauge };","import { clone, each, getRange, groupBy, hasKey, isEmpty, sortBy, valuesOfKey } from '@antv/util';\n// 进行转换得到值所在的 range\nfunction getBinKey(value, binWidth, binNumber) {\n // 做一点特殊处理\n if (binNumber === 1) {\n return [0, binWidth];\n }\n var index = Math.floor(value / binWidth);\n return [binWidth * index, binWidth * (index + 1)];\n}\n// 默认 sturges 转换\nfunction sturges(values) {\n return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n}\n/**\n * 对数据进行百分比化\n * @param data\n * @param binField\n * @param binWidth\n * @param binNumber\n * @param stackField\n */\nexport function binHistogram(data, binField, binWidth, binNumber, stackField) {\n var originData_copy = clone(data);\n // 根据 binField 对源数据进行排序\n sortBy(originData_copy, binField);\n // 获取源数据 binField 的 range\n var values = valuesOfKey(originData_copy, binField);\n var range = getRange(values);\n var rangeWidth = range.max - range.min;\n // 计算分箱,直方图分箱的计算基于 binWidth,如配置了 binNumber 则将其转为 binWidth 进行计算\n var _binWidth = binWidth;\n if (!binWidth && binNumber) {\n _binWidth = binNumber > 1 ? rangeWidth / (binNumber - 1) : range.max;\n }\n // 当 binWidth 和 binNumber 都没有指定的情况,采用 Sturges formula 自动生成 binWidth\n if (!binWidth && !binNumber) {\n var _defaultBinNumber = sturges(values);\n _binWidth = rangeWidth / _defaultBinNumber;\n }\n // 构建 key - StatisticData 结构\n var bins = {};\n var groups = groupBy(originData_copy, stackField);\n // 判断分组是否为空,如果为空,说明没有 stackField 字段\n if (isEmpty(groups)) {\n each(originData_copy, function (data) {\n var value = data[binField];\n var bin = getBinKey(value, _binWidth, binNumber);\n var binKey = \"\".concat(bin[0], \"-\").concat(bin[1]);\n if (!hasKey(bins, binKey)) {\n bins[binKey] = {\n range: bin,\n count: 0\n };\n }\n bins[binKey].count += 1;\n });\n } else {\n Object.keys(groups).forEach(function (groupKey) {\n each(groups[groupKey], function (data) {\n var value = data[binField];\n var bin = getBinKey(value, _binWidth, binNumber);\n var binKey = \"\".concat(bin[0], \"-\").concat(bin[1]);\n var groupKeyBinKey = \"\".concat(binKey, \"-\").concat(groupKey);\n if (!hasKey(bins, groupKeyBinKey)) {\n bins[groupKeyBinKey] = {\n range: bin,\n count: 0\n };\n bins[groupKeyBinKey][stackField] = groupKey;\n }\n bins[groupKeyBinKey].count += 1;\n });\n });\n }\n // 将分箱数据转换为 plotData 才是图表所需要的\n var plotData = [];\n each(bins, function (bin) {\n plotData.push(bin);\n });\n return plotData;\n}","import { Plot } from '../../core/plot';\nimport { deepAssign } from '../../utils';\n/** 直方图 xField */\nexport var HISTOGRAM_X_FIELD = 'range';\n/** 直方图 yField */\nexport var HISTOGRAM_Y_FIELD = 'count';\n/**\n * 默认配置项\n */\nexport var DEFAULT_OPTIONS = deepAssign({}, Plot.getDefaultOptions(), {\n columnStyle: {\n stroke: '#FFFFFF'\n },\n tooltip: {\n shared: true,\n showMarkers: false\n },\n interactions: [{\n type: 'active-region'\n }]\n});","import { __rest } from \"tslib\";\nimport { animation, interaction, scale, state, theme, tooltip } from '../../adaptor/common';\nimport { interval } from '../../adaptor/geometries';\nimport { pattern } from '../../adaptor/pattern';\nimport { deepAssign, findGeometry, flow, transformLabel } from '../../utils';\nimport { binHistogram } from '../../utils/transform/histogram';\nimport { HISTOGRAM_X_FIELD, HISTOGRAM_Y_FIELD } from './constant';\n/**\n * geometry 处理\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var data = options.data,\n binField = options.binField,\n binNumber = options.binNumber,\n binWidth = options.binWidth,\n color = options.color,\n stackField = options.stackField,\n legend = options.legend,\n columnStyle = options.columnStyle;\n // 处理数据\n var plotData = binHistogram(data, binField, binWidth, binNumber, stackField);\n chart.data(plotData);\n var p = deepAssign({}, params, {\n options: {\n xField: HISTOGRAM_X_FIELD,\n yField: HISTOGRAM_Y_FIELD,\n seriesField: stackField,\n isStack: true,\n interval: {\n color: color,\n style: columnStyle\n }\n }\n });\n interval(p);\n // 图例\n if (legend && stackField) {\n chart.legend(stackField, legend);\n } else {\n chart.legend(false);\n }\n return params;\n}\n/**\n * meta 配置\n * @param params\n */\nfunction meta(params) {\n var _a;\n var options = params.options;\n var xAxis = options.xAxis,\n yAxis = options.yAxis;\n return flow(scale((_a = {}, _a[HISTOGRAM_X_FIELD] = xAxis, _a[HISTOGRAM_Y_FIELD] = yAxis, _a)))(params);\n}\n/**\n * axis 配置\n * @param params\n */\nfunction axis(params) {\n var chart = params.chart,\n options = params.options;\n var xAxis = options.xAxis,\n yAxis = options.yAxis;\n // 为 false 则是不显示轴\n if (xAxis === false) {\n chart.axis(HISTOGRAM_X_FIELD, false);\n } else {\n chart.axis(HISTOGRAM_X_FIELD, xAxis);\n }\n if (yAxis === false) {\n chart.axis(HISTOGRAM_Y_FIELD, false);\n } else {\n chart.axis(HISTOGRAM_Y_FIELD, yAxis);\n }\n return params;\n}\n/**\n * label 配置\n * @param params\n */\nfunction label(params) {\n var chart = params.chart,\n options = params.options;\n var label = options.label;\n var geometry = findGeometry(chart, 'interval');\n if (!label) {\n geometry.label(false);\n } else {\n var callback = label.callback,\n cfg = __rest(label, [\"callback\"]);\n geometry.label({\n fields: [HISTOGRAM_Y_FIELD],\n callback: callback,\n cfg: transformLabel(cfg)\n });\n }\n return params;\n}\n/**\n * 直方图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n // flow 的方式处理所有的配置到 G2 API\n return flow(theme, pattern('columnStyle'), geometry, meta, axis, state, label, tooltip, interaction, animation)(params);\n}","import { __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { binHistogram } from '../../utils/transform/histogram';\nimport { adaptor } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constant';\nvar Histogram = /** @class */function (_super) {\n __extends(Histogram, _super);\n function Histogram() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'histogram';\n return _this;\n }\n /**\n * 获取 默认配置项\n * 供外部使用\n */\n Histogram.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n Histogram.prototype.changeData = function (data) {\n this.updateOption({\n data: data\n });\n var _a = this.options,\n binField = _a.binField,\n binNumber = _a.binNumber,\n binWidth = _a.binWidth,\n stackField = _a.stackField;\n this.chart.changeData(binHistogram(data, binField, binWidth, binNumber, stackField));\n };\n /**\n * 获取直方图的适配器\n */\n Histogram.prototype.getDefaultOptions = function () {\n return Histogram.getDefaultOptions();\n };\n /**\n * 获取直方图的适配器\n */\n Histogram.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Histogram;\n}(Plot);\nexport { Histogram };","import { Plot } from '../../core/plot';\nimport { deepAssign } from '../../utils';\n/**\n * 折线图默认配置项\n */\nexport var DEFAULT_OPTIONS = deepAssign({}, Plot.getDefaultOptions(), {\n tooltip: {\n shared: true,\n showMarkers: true,\n showCrosshairs: true,\n crosshairs: {\n type: 'x'\n }\n },\n legend: {\n position: 'top-left',\n radio: {}\n },\n isStack: false\n});","import { __extends } from \"tslib\";\nimport { InteractionAction } from '@antv/g2';\nimport { each, findIndex } from '@antv/util';\nvar MarkerActiveAction = /** @class */function (_super) {\n __extends(MarkerActiveAction, _super);\n function MarkerActiveAction() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MarkerActiveAction.prototype.active = function () {\n var view = this.getView();\n var evt = this.context.event;\n if (evt.data) {\n // items: 数组对象,当前 tooltip 显示的每条内容\n var items_1 = evt.data.items;\n var points = view.geometries.filter(function (geom) {\n return geom.type === 'point';\n });\n each(points, function (point) {\n each(point.elements, function (element) {\n var active = findIndex(items_1, function (item) {\n return item.data === element.data;\n }) !== -1;\n element.setState('active', active);\n });\n });\n }\n };\n MarkerActiveAction.prototype.reset = function () {\n var view = this.getView();\n var points = view.geometries.filter(function (geom) {\n return geom.type === 'point';\n });\n each(points, function (point) {\n each(point.elements, function (element) {\n element.setState('active', false);\n });\n });\n };\n MarkerActiveAction.prototype.getView = function () {\n return this.context.view;\n };\n return MarkerActiveAction;\n}(InteractionAction);\nexport { MarkerActiveAction };","import { registerAction, registerInteraction } from '@antv/g2';\nimport { MarkerActiveAction } from './marker-active';\nregisterAction('marker-active', MarkerActiveAction);\nregisterInteraction('marker-active', {\n start: [{\n trigger: 'tooltip:show',\n action: 'marker-active:active'\n }],\n end: [{\n trigger: 'tooltip:hide',\n action: 'marker-active:reset'\n }]\n});","import { __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { adaptor, meta } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constants';\nimport './interactions';\nvar Line = /** @class */function (_super) {\n __extends(Line, _super);\n function Line() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'line';\n return _this;\n }\n /**\n * 获取 折线图 默认配置项\n * 供外部使用\n */\n Line.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * @override\n * @param data\n */\n Line.prototype.changeData = function (data) {\n this.updateOption({\n data: data\n });\n var _a = this,\n chart = _a.chart,\n options = _a.options;\n meta({\n chart: chart,\n options: options\n });\n this.chart.changeData(data);\n };\n /**\n * 获取 折线图 默认配置\n */\n Line.prototype.getDefaultOptions = function () {\n return Line.getDefaultOptions();\n };\n /**\n * 获取 折线图 的适配器\n */\n Line.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Line;\n}(Plot);\nexport { Line };","import { Plot } from '../../core/plot';\nimport { deepAssign } from '../../utils';\n/**\n * 饼图默认配置项\n */\nexport var DEFAULT_OPTIONS = deepAssign({}, Plot.getDefaultOptions(), {\n legend: {\n position: 'right',\n radio: {}\n },\n tooltip: {\n shared: false,\n showTitle: false,\n showMarkers: false\n },\n label: {\n layout: {\n type: 'limit-in-plot',\n cfg: {\n action: 'ellipsis'\n }\n }\n },\n /** 饼图样式, 不影响暗黑主题 */\n pieStyle: {\n stroke: 'white',\n lineWidth: 1\n },\n /** 饼图中心文本默认样式 */\n statistic: {\n title: {\n style: {\n fontWeight: 300,\n color: '#4B535E',\n textAlign: 'center',\n fontSize: '20px',\n lineHeight: 1\n }\n },\n content: {\n style: {\n fontWeight: 'bold',\n color: 'rgba(44,53,66,0.85)',\n textAlign: 'center',\n fontSize: '32px',\n lineHeight: 1\n }\n }\n },\n /** 默认关闭 text-annotation 动画 */\n theme: {\n components: {\n annotation: {\n text: {\n animate: false\n }\n }\n }\n }\n});","import { __spreadArray } from \"tslib\";\nimport { Util } from '@antv/g2';\nvar ORIGIN_MATRIX = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n/**\n * 矩阵变换\n * @param actions\n * @param matrix\n */\nexport function transform(actions, matrix) {\n var ulMatrix = matrix ? __spreadArray([], matrix, true) : __spreadArray([], ORIGIN_MATRIX, true);\n return Util.transform(ulMatrix, actions);\n}","import { __extends } from \"tslib\";\nimport { Action, Util } from '@antv/g2';\nimport { isEqual } from '@antv/util';\nimport { transform } from '../../../../utils/matrix';\n/**\n * 饼图 图例激活 action\n */\nvar PieLegendAction = /** @class */function (_super) {\n __extends(PieLegendAction, _super);\n function PieLegendAction() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * 获取激活的图形元素\n */\n PieLegendAction.prototype.getActiveElements = function () {\n var delegateObject = Util.getDelegationObject(this.context);\n if (delegateObject) {\n var view = this.context.view;\n var component = delegateObject.component,\n item_1 = delegateObject.item;\n var field_1 = component.get('field');\n if (field_1) {\n var elements = view.geometries[0].elements;\n return elements.filter(function (ele) {\n return ele.getModel().data[field_1] === item_1.value;\n });\n }\n }\n return [];\n };\n /**\n * 获取激活的标签\n */\n PieLegendAction.prototype.getActiveElementLabels = function () {\n var view = this.context.view;\n var elements = this.getActiveElements();\n var labels = view.geometries[0].labelsContainer.getChildren();\n return labels.filter(function (label) {\n return elements.find(function (ele) {\n return isEqual(ele.getData(), label.get('data'));\n });\n });\n };\n PieLegendAction.prototype.transfrom = function (offset) {\n if (offset === void 0) {\n offset = 7.5;\n }\n var elements = this.getActiveElements();\n var elementLabels = this.getActiveElementLabels();\n elements.forEach(function (element, idx) {\n var labelShape = elementLabels[idx];\n var coordinate = element.geometry.coordinate;\n if (coordinate.isPolar && coordinate.isTransposed) {\n var _a = Util.getAngle(element.getModel(), coordinate),\n startAngle = _a.startAngle,\n endAngle = _a.endAngle;\n var middleAngle = (startAngle + endAngle) / 2;\n var r = offset;\n var x = r * Math.cos(middleAngle);\n var y = r * Math.sin(middleAngle);\n element.shape.setMatrix(transform([['t', x, y]]));\n labelShape.setMatrix(transform([['t', x, y]]));\n }\n });\n };\n PieLegendAction.prototype.active = function () {\n this.transfrom();\n };\n /**\n * 激活态还原\n */\n PieLegendAction.prototype.reset = function () {\n this.transfrom(0);\n };\n return PieLegendAction;\n}(Action);\nexport { PieLegendAction };","import { __extends } from \"tslib\";\nimport { Action, Util } from '@antv/g2';\nimport { each, get } from '@antv/util';\nimport { renderStatistic } from '../../../../utils/statistic';\nimport { getCurrentElement } from '../util';\n/**\n * Pie 中心文本事件的 Action\n */\nvar StatisticAction = /** @class */function (_super) {\n __extends(StatisticAction, _super);\n function StatisticAction() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n StatisticAction.prototype.getAnnotations = function (_view) {\n var view = _view || this.context.view;\n // @ts-ignore\n return view.getController('annotation').option;\n };\n StatisticAction.prototype.getInitialAnnotation = function () {\n return this.initialAnnotation;\n };\n StatisticAction.prototype.init = function () {\n var _this = this;\n var view = this.context.view;\n view.removeInteraction('tooltip');\n view.on('afterchangesize', function () {\n var annotations = _this.getAnnotations(view);\n _this.initialAnnotation = annotations;\n });\n };\n StatisticAction.prototype.change = function (arg) {\n var _a = this.context,\n view = _a.view,\n event = _a.event;\n if (!this.initialAnnotation) {\n this.initialAnnotation = this.getAnnotations();\n }\n var data = get(event, ['data', 'data']);\n if (event.type.match('legend-item')) {\n var delegateObject = Util.getDelegationObject(this.context);\n // @ts-ignore\n var colorField_1 = view.getGroupedFields()[0];\n if (delegateObject && colorField_1) {\n var item_1 = delegateObject.item;\n data = view.getData().find(function (d) {\n return d[colorField_1] === item_1.value;\n });\n }\n }\n if (data) {\n var annotations = get(arg, 'annotations', []);\n var statistic = get(arg, 'statistic', {});\n // 先清空标注,再重新渲染\n view.getController('annotation').clear(true);\n // 先进行其他 annotations,再去渲染统计文本\n each(annotations, function (annotation) {\n if (typeof annotation === 'object') {\n view.annotation()[annotation.type](annotation);\n }\n });\n renderStatistic(view, {\n statistic: statistic,\n plotType: 'pie'\n }, data);\n view.render(true);\n }\n // 交互的时候,把 shape 提前\n var ele = getCurrentElement(this.context);\n if (ele) {\n ele.shape.toFront();\n }\n };\n StatisticAction.prototype.reset = function () {\n var view = this.context.view;\n var annotationController = view.getController('annotation');\n annotationController.clear(true);\n var initialStatistic = this.getInitialAnnotation();\n each(initialStatistic, function (a) {\n view.annotation()[a.type](a);\n });\n view.render(true);\n };\n return StatisticAction;\n}(Action);\nexport { StatisticAction };","/**\n * 获取当前事件相关的图表元素\n * @param context 交互的上下文\n * @ignore\n */\nexport function getCurrentElement(context) {\n var event = context.event;\n var element;\n var target = event.target;\n if (target) {\n element = target.get('element');\n }\n return element;\n}","import { registerAction, registerInteraction } from '@antv/g2';\nimport { PieLegendAction } from './actions/legend-active';\nimport { StatisticAction } from './actions/statistic-active';\nexport var PIE_STATISTIC = 'pie-statistic';\nregisterAction(PIE_STATISTIC, StatisticAction);\nregisterInteraction('pie-statistic-active', {\n start: [{\n trigger: 'element:mouseenter',\n action: 'pie-statistic:change'\n }],\n end: [{\n trigger: 'element:mouseleave',\n action: 'pie-statistic:reset'\n }]\n});\nregisterAction('pie-legend', PieLegendAction);\nregisterInteraction('pie-legend-active', {\n start: [{\n trigger: 'legend-item:mouseenter',\n action: 'pie-legend:active'\n }],\n end: [{\n trigger: 'legend-item:mouseleave',\n action: 'pie-legend:reset'\n }]\n});","import { each, every, isString } from '@antv/util';\nimport { processIllegalData } from '../../utils';\n/**\n * 获取总计值\n * @param data\n * @param field\n */\nexport function getTotalValue(data, field) {\n var total = null;\n each(data, function (item) {\n if (typeof item[field] === 'number') {\n total += item[field];\n }\n });\n return total;\n}\n/**\n * pie label offset adaptor\n */\nexport function adaptOffset(type, offset) {\n var defaultOffset;\n switch (type) {\n case 'inner':\n defaultOffset = '-30%';\n if (isString(offset) && offset.endsWith('%')) {\n return parseFloat(offset) * 0.01 > 0 ? defaultOffset : offset;\n }\n return offset < 0 ? offset : defaultOffset;\n case 'outer':\n defaultOffset = 12;\n if (isString(offset) && offset.endsWith('%')) {\n return parseFloat(offset) * 0.01 < 0 ? defaultOffset : offset;\n }\n return offset > 0 ? offset : defaultOffset;\n default:\n return offset;\n }\n}\n/**\n * 判断数据是否全部为 0\n * @param data\n * @param angleField\n */\nexport function isAllZero(data, angleField) {\n return every(processIllegalData(data, angleField), function (d) {\n return d[angleField] === 0;\n });\n}","import { __assign, __rest } from \"tslib\";\nimport { each, get, isArray, isEmpty, isFunction, isNil, isNumber, isString, toString } from '@antv/util';\nimport { animation, annotation, legend, state, theme } from '../../adaptor/common';\nimport { interval } from '../../adaptor/geometries';\nimport { getMappingFunction } from '../../adaptor/geometries/base';\nimport { pattern } from '../../adaptor/pattern';\nimport { getLocale } from '../../core/locale';\nimport { deepAssign, flow, processIllegalData, renderStatistic, template, transformLabel } from '../../utils';\nimport { DEFAULT_OPTIONS } from './contants';\nimport { PIE_STATISTIC } from './interactions';\nimport { adaptOffset, getTotalValue, isAllZero } from './utils';\n/**\n * 字段\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var data = options.data,\n angleField = options.angleField,\n colorField = options.colorField,\n color = options.color,\n pieStyle = options.pieStyle,\n shape = options.shape;\n // 处理不合法的数据\n var processData = processIllegalData(data, angleField);\n if (isAllZero(processData, angleField)) {\n // 数据全 0 处理,调整 position 映射\n var percentageField_1 = '$$percentage$$';\n processData = processData.map(function (d) {\n var _a;\n return __assign(__assign({}, d), (_a = {}, _a[percentageField_1] = 1 / processData.length, _a));\n });\n chart.data(processData);\n var p = deepAssign({}, params, {\n options: {\n xField: '1',\n yField: percentageField_1,\n seriesField: colorField,\n isStack: true,\n interval: {\n color: color,\n shape: shape,\n style: pieStyle\n },\n args: {\n zIndexReversed: true,\n sortZIndex: true\n }\n }\n });\n interval(p);\n } else {\n chart.data(processData);\n var p = deepAssign({}, params, {\n options: {\n xField: '1',\n yField: angleField,\n seriesField: colorField,\n isStack: true,\n interval: {\n color: color,\n shape: shape,\n style: pieStyle\n },\n args: {\n zIndexReversed: true,\n sortZIndex: true\n }\n }\n });\n interval(p);\n }\n return params;\n}\n/**\n * meta 配置\n * @param params\n */\nfunction meta(params) {\n var _a;\n var chart = params.chart,\n options = params.options;\n var meta = options.meta,\n colorField = options.colorField;\n // meta 直接是 scale 的信息\n var scales = deepAssign({}, meta);\n chart.scale(scales, (_a = {}, _a[colorField] = {\n type: 'cat'\n }, _a));\n return params;\n}\n/**\n * coord 配置\n * @param params\n */\nfunction coordinate(params) {\n var chart = params.chart,\n options = params.options;\n var radius = options.radius,\n innerRadius = options.innerRadius,\n startAngle = options.startAngle,\n endAngle = options.endAngle;\n chart.coordinate({\n type: 'theta',\n cfg: {\n radius: radius,\n innerRadius: innerRadius,\n startAngle: startAngle,\n endAngle: endAngle\n }\n });\n return params;\n}\n/**\n * label 配置\n * @param params\n */\nfunction label(params) {\n var chart = params.chart,\n options = params.options;\n var label = options.label,\n colorField = options.colorField,\n angleField = options.angleField;\n var geometry = chart.geometries[0];\n // label 为 false, 空 则不显示 label\n if (!label) {\n geometry.label(false);\n } else {\n var callback = label.callback,\n cfg = __rest(label, [\"callback\"]);\n var labelCfg = transformLabel(cfg);\n // ① 提供模板字符串的 label content 配置\n if (labelCfg.content) {\n var content_1 = labelCfg.content;\n labelCfg.content = function (data, dataum, index) {\n var name = data[colorField];\n var value = data[angleField];\n // dymatic get scale, scale is ready this time\n var angleScale = chart.getScaleByField(angleField);\n var percent = angleScale === null || angleScale === void 0 ? void 0 : angleScale.scale(value);\n return isFunction(content_1) ?\n // append percent (number) to data, users can get origin data from `dataum._origin`\n content_1(__assign(__assign({}, data), {\n percent: percent\n }), dataum, index) : isString(content_1) ? template(content_1, {\n value: value,\n name: name,\n // percentage (string), default keep 2\n percentage: isNumber(percent) && !isNil(value) ? \"\".concat((percent * 100).toFixed(2), \"%\") : null\n }) : content_1;\n };\n }\n var LABEL_LAYOUT_TYPE_MAP = {\n inner: '',\n outer: 'pie-outer',\n spider: 'pie-spider'\n };\n var labelLayoutType = labelCfg.type ? LABEL_LAYOUT_TYPE_MAP[labelCfg.type] : 'pie-outer';\n var labelLayoutCfg = labelCfg.layout ? !isArray(labelCfg.layout) ? [labelCfg.layout] : labelCfg.layout : [];\n labelCfg.layout = (labelLayoutType ? [{\n type: labelLayoutType\n }] : []).concat(labelLayoutCfg);\n geometry.label({\n // fix: could not create scale, when field is undefined(attributes 中的 fields 定义都会被用来创建 scale)\n fields: colorField ? [angleField, colorField] : [angleField],\n callback: callback,\n cfg: __assign(__assign({}, labelCfg), {\n offset: adaptOffset(labelCfg.type, labelCfg.offset),\n type: 'pie'\n })\n });\n }\n return params;\n}\n/**\n * statistic options 处理\n * 1. 默认继承 default options 的样式\n * 2. 默认使用 meta 的 formatter\n */\nexport function transformStatisticOptions(options) {\n var innerRadius = options.innerRadius,\n statistic = options.statistic,\n angleField = options.angleField,\n colorField = options.colorField,\n meta = options.meta,\n locale = options.locale;\n var i18n = getLocale(locale);\n if (innerRadius && statistic) {\n var _a = deepAssign({}, DEFAULT_OPTIONS.statistic, statistic),\n titleOpt_1 = _a.title,\n contentOpt_1 = _a.content;\n if (titleOpt_1 !== false) {\n titleOpt_1 = deepAssign({}, {\n formatter: function formatter(datum) {\n // 交互中, datum existed.\n var text = datum ? datum[colorField] : !isNil(titleOpt_1.content) ? titleOpt_1.content : i18n.get(['statistic', 'total']);\n var metaFormatter = get(meta, [colorField, 'formatter']) || function (v) {\n return v;\n };\n return metaFormatter(text);\n }\n }, titleOpt_1);\n }\n if (contentOpt_1 !== false) {\n contentOpt_1 = deepAssign({}, {\n formatter: function formatter(datum, data) {\n var dataValue = datum ? datum[angleField] : getTotalValue(data, angleField);\n var metaFormatter = get(meta, [angleField, 'formatter']) || function (v) {\n return v;\n };\n // 交互中\n if (datum) {\n return metaFormatter(dataValue);\n }\n return !isNil(contentOpt_1.content) ? contentOpt_1.content : metaFormatter(dataValue);\n }\n }, contentOpt_1);\n }\n return deepAssign({}, {\n statistic: {\n title: titleOpt_1,\n content: contentOpt_1\n }\n }, options);\n }\n return options;\n}\n/**\n * statistic 中心文本配置\n * @param params\n */\nexport function pieAnnotation(params) {\n var chart = params.chart,\n options = params.options;\n var _a = transformStatisticOptions(options),\n innerRadius = _a.innerRadius,\n statistic = _a.statistic;\n // 先清空标注,再重新渲染\n chart.getController('annotation').clear(true);\n // 先进行其他 annotations,再去渲染统计文本\n flow(annotation())(params);\n /** 中心文本 指标卡 */\n if (innerRadius && statistic) {\n renderStatistic(chart, {\n statistic: statistic,\n plotType: 'pie'\n });\n }\n return params;\n}\n/**\n * 饼图 tooltip 配置\n * 1. 强制 tooltip.shared 为 false\n * @param params\n */\nfunction tooltip(params) {\n var chart = params.chart,\n options = params.options;\n var tooltip = options.tooltip,\n colorField = options.colorField,\n angleField = options.angleField,\n data = options.data;\n if (tooltip === false) {\n chart.tooltip(tooltip);\n } else {\n chart.tooltip(deepAssign({}, tooltip, {\n shared: false\n }));\n // 主要解决 all zero, 对于非 all zero 不再适用\n if (isAllZero(data, angleField)) {\n var fields = get(tooltip, 'fields');\n var formatter = get(tooltip, 'formatter');\n if (isEmpty(get(tooltip, 'fields'))) {\n fields = [colorField, angleField];\n formatter = formatter || function (datum) {\n return {\n name: datum[colorField],\n value: toString(datum[angleField])\n };\n };\n }\n chart.geometries[0].tooltip(fields.join('*'), getMappingFunction(fields, formatter));\n }\n }\n return params;\n}\n/**\n * Interaction 配置 (饼图特殊的 interaction, 中心文本变更的时候,需要将一些配置参数传进去)\n * @param params\n */\nexport function interaction(params) {\n var chart = params.chart,\n options = params.options;\n var _a = transformStatisticOptions(options),\n interactions = _a.interactions,\n statistic = _a.statistic,\n annotations = _a.annotations;\n each(interactions, function (i) {\n var _a, _b;\n if (i.enable === false) {\n chart.removeInteraction(i.type);\n } else if (i.type === 'pie-statistic-active') {\n // 只针对 start 阶段的配置,进行添加参数信息\n var startStages_1 = [];\n if (!((_a = i.cfg) === null || _a === void 0 ? void 0 : _a.start)) {\n startStages_1 = [{\n trigger: 'element:mouseenter',\n action: \"\".concat(PIE_STATISTIC, \":change\"),\n arg: {\n statistic: statistic,\n annotations: annotations\n }\n }];\n }\n each((_b = i.cfg) === null || _b === void 0 ? void 0 : _b.start, function (stage) {\n startStages_1.push(__assign(__assign({}, stage), {\n arg: {\n statistic: statistic,\n annotations: annotations\n }\n }));\n });\n chart.interaction(i.type, deepAssign({}, i.cfg, {\n start: startStages_1\n }));\n } else {\n chart.interaction(i.type, i.cfg || {});\n }\n });\n return params;\n}\n/**\n * 饼图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n // flow 的方式处理所有的配置到 G2 API\n return flow(pattern('pieStyle'), geometry, meta, theme, coordinate, legend, tooltip, label, state, /** 指标卡中心文本 放在下层 */\n pieAnnotation, interaction, animation)(params);\n}","import { __extends } from \"tslib\";\nimport { Event, VIEW_LIFE_CIRCLE } from '@antv/g2';\nimport { Plot } from '../../core/plot';\nimport { processIllegalData } from '../../utils';\nimport { adaptor, pieAnnotation } from './adaptor';\nimport { DEFAULT_OPTIONS } from './contants';\nimport './interactions';\nimport { isAllZero } from './utils';\nvar Pie = /** @class */function (_super) {\n __extends(Pie, _super);\n function Pie() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'pie';\n return _this;\n }\n /**\n * 获取 饼图 默认配置项\n * 供外部使用\n */\n Pie.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * 更新数据\n * @param data\n */\n Pie.prototype.changeData = function (data) {\n this.chart.emit(VIEW_LIFE_CIRCLE.BEFORE_CHANGE_DATA, Event.fromData(this.chart, VIEW_LIFE_CIRCLE.BEFORE_CHANGE_DATA, null));\n var prevOptions = this.options;\n var angleField = this.options.angleField;\n var prevData = processIllegalData(prevOptions.data, angleField);\n var curData = processIllegalData(data, angleField);\n // 如果上一次或当前数据全为 0,则重新渲染\n if (isAllZero(prevData, angleField) || isAllZero(curData, angleField)) {\n this.update({\n data: data\n });\n } else {\n this.updateOption({\n data: data\n });\n this.chart.data(curData);\n // todo 后续让 G2 层在 afterrender 之后,来重绘 annotations\n pieAnnotation({\n chart: this.chart,\n options: this.options\n });\n this.chart.render(true);\n }\n this.chart.emit(VIEW_LIFE_CIRCLE.AFTER_CHANGE_DATA, Event.fromData(this.chart, VIEW_LIFE_CIRCLE.AFTER_CHANGE_DATA, null));\n };\n /**\n * 获取 饼图 默认配置项, 供 base 获取\n */\n Pie.prototype.getDefaultOptions = function () {\n return Pie.getDefaultOptions();\n };\n /**\n * 获取 饼图 的适配器\n */\n Pie.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Pie;\n}(Plot);\nexport { Pie };","export var DEFAULT_COLOR = ['#FAAD14', '#E8EDF3'];\n/**\n * 默认配置项\n */\nexport var DEFAULT_OPTIONS = {\n percent: 0.2,\n color: DEFAULT_COLOR,\n animation: {}\n};","import { clamp } from '@antv/util';\nimport { isRealNumber } from '../../utils/number';\n/**\n * 获取进度条数据\n */\nexport function getProgressData(percent) {\n var clampPercent = clamp(isRealNumber(percent) ? percent : 0, 0, 1);\n return [{\n // 用于 progressStyle 的回调方法\n current: \"\".concat(clampPercent),\n type: 'current',\n percent: clampPercent\n }, {\n current: \"\".concat(clampPercent),\n type: 'target',\n percent: 1\n }];\n}","import { isString } from '@antv/util';\nimport { animation, annotation, scale, theme } from '../../adaptor/common';\nimport { interval } from '../../adaptor/geometries';\nimport { deepAssign, flow } from '../../utils';\nimport { DEFAULT_COLOR } from './constants';\nimport { getProgressData } from './utils';\n/**\n * 字段\n * @param params\n */\nexport function geometry(params) {\n var chart = params.chart,\n options = params.options;\n var percent = options.percent,\n progressStyle = options.progressStyle,\n color = options.color,\n barWidthRatio = options.barWidthRatio;\n chart.data(getProgressData(percent));\n var p = deepAssign({}, params, {\n options: {\n xField: 'current',\n yField: 'percent',\n seriesField: 'type',\n widthRatio: barWidthRatio,\n interval: {\n style: progressStyle,\n color: isString(color) ? [color, DEFAULT_COLOR[1]] : color\n },\n args: {\n zIndexReversed: true,\n sortZIndex: true\n }\n }\n });\n interval(p);\n // 关闭组件\n chart.tooltip(false);\n chart.axis(false);\n chart.legend(false);\n return params;\n}\n/**\n * other 配置\n * @param params\n */\nfunction coordinate(params) {\n var chart = params.chart;\n chart.coordinate('rect').transpose();\n return params;\n}\n/**\n * 进度图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n // @ts-ignore\n return flow(geometry, scale({}), coordinate, animation, theme, annotation())(params);\n}","import { __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { adaptor } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constants';\nimport { getProgressData } from './utils';\nvar Progress = /** @class */function (_super) {\n __extends(Progress, _super);\n function Progress() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'process';\n return _this;\n }\n /**\n * 获取 仪表盘 默认配置项\n * 供外部使用\n */\n Progress.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * 更新数据\n * @param percent\n */\n Progress.prototype.changeData = function (percent) {\n this.updateOption({\n percent: percent\n });\n this.chart.changeData(getProgressData(percent));\n };\n Progress.prototype.getDefaultOptions = function () {\n return Progress.getDefaultOptions();\n };\n /**\n * 获取 进度图 的适配器\n */\n Progress.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Progress;\n}(Plot);\nexport { Progress };","import { __assign } from \"tslib\";\nimport { get, isNil } from '@antv/util';\nimport { animation, annotation, scale, theme } from '../../adaptor/common';\nimport { deepAssign, flow, renderStatistic } from '../../utils';\nimport { geometry } from '../progress/adaptor';\n/**\n * coordinate 配置\n * @param params\n */\nfunction coordinate(params) {\n var chart = params.chart,\n options = params.options;\n var innerRadius = options.innerRadius,\n radius = options.radius;\n // coordinate\n chart.coordinate('theta', {\n innerRadius: innerRadius,\n radius: radius\n });\n return params;\n}\n/**\n * statistic 配置\n * @param params\n */\nexport function statistic(params, updated) {\n var chart = params.chart,\n options = params.options;\n var innerRadius = options.innerRadius,\n statistic = options.statistic,\n percent = options.percent,\n meta = options.meta;\n // 先清空标注,再重新渲染\n chart.getController('annotation').clear(true);\n /** 中心文本 指标卡 */\n if (innerRadius && statistic) {\n var metaFormatter = get(meta, ['percent', 'formatter']) || function (v) {\n return \"\".concat((v * 100).toFixed(2), \"%\");\n };\n var contentOpt = statistic.content;\n if (contentOpt) {\n contentOpt = deepAssign({}, contentOpt, {\n content: !isNil(contentOpt.content) ? contentOpt.content : metaFormatter(percent)\n });\n }\n renderStatistic(chart, {\n statistic: __assign(__assign({}, statistic), {\n content: contentOpt\n }),\n plotType: 'ring-progress'\n }, {\n percent: percent\n });\n }\n if (updated) {\n chart.render(true);\n }\n return params;\n}\n/**\n * 环形进度图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n return flow(geometry, scale({}), coordinate, statistic, animation, theme, annotation())(params);\n}","/**\n * 仪表盘默认配置项\n */\nexport var DEFAULT_OPTIONS = {\n percent: 0.2,\n innerRadius: 0.8,\n radius: 0.98,\n color: ['#FAAD14', '#E8EDF3'],\n statistic: {\n title: false,\n content: {\n style: {\n fontSize: '14px',\n fontWeight: 300,\n fill: '#4D4D4D',\n textAlign: 'center',\n textBaseline: 'middle'\n }\n }\n },\n animation: {}\n};","import { __extends } from \"tslib\";\nimport { Event, VIEW_LIFE_CIRCLE } from '@antv/g2';\nimport { Plot } from '../../core/plot';\nimport { getProgressData } from '../progress/utils';\nimport { adaptor, statistic } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constants';\nvar RingProgress = /** @class */function (_super) {\n __extends(RingProgress, _super);\n function RingProgress() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'ring-process';\n return _this;\n }\n /**\n * 获取默认配置项\n * 供外部使用\n */\n RingProgress.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * 更新数据\n * @param percent\n */\n RingProgress.prototype.changeData = function (percent) {\n this.chart.emit(VIEW_LIFE_CIRCLE.BEFORE_CHANGE_DATA, Event.fromData(this.chart, VIEW_LIFE_CIRCLE.BEFORE_CHANGE_DATA, null));\n this.updateOption({\n percent: percent\n });\n this.chart.data(getProgressData(percent));\n // todo 后续让 G2 层在 afterrender 之后,来重绘 annotations\n statistic({\n chart: this.chart,\n options: this.options\n }, true);\n this.chart.emit(VIEW_LIFE_CIRCLE.AFTER_CHANGE_DATA, Event.fromData(this.chart, VIEW_LIFE_CIRCLE.AFTER_CHANGE_DATA, null));\n };\n RingProgress.prototype.getDefaultOptions = function () {\n return RingProgress.getDefaultOptions();\n };\n /**\n * 获取 环形进度图 的适配器\n */\n RingProgress.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return RingProgress;\n}(Plot);\nexport { RingProgress };","import { __assign } from \"tslib\";\nimport { get, isArray, isNumber } from '@antv/util';\nimport { regressionExp, regressionLinear, regressionLoess, regressionLog, regressionPoly, regressionPow, regressionQuad } from 'd3-regression';\nimport { getSplinePath } from '../../utils';\nvar REGRESSION_MAP = {\n exp: regressionExp,\n linear: regressionLinear,\n loess: regressionLoess,\n log: regressionLog,\n poly: regressionPoly,\n pow: regressionPow,\n quad: regressionQuad\n};\n/**\n * 获取四象限默认配置\n * @param {number} xBaseline\n * @param {number} yBaseline\n */\nexport function getQuadrantDefaultConfig(xBaseline, yBaseline) {\n // 文本便宜距离\n var textOffset = 10;\n // 四象限默认样式\n var defaultConfig = {\n regionStyle: [{\n position: {\n start: [xBaseline, 'max'],\n end: ['max', yBaseline]\n },\n style: {\n fill: '#d8d0c0',\n opacity: 0.4\n }\n }, {\n position: {\n start: ['min', 'max'],\n end: [xBaseline, yBaseline]\n },\n style: {\n fill: '#a3dda1',\n opacity: 0.4\n }\n }, {\n position: {\n start: ['min', yBaseline],\n end: [xBaseline, 'min']\n },\n style: {\n fill: '#d8d0c0',\n opacity: 0.4\n }\n }, {\n position: {\n start: [xBaseline, yBaseline],\n end: ['max', 'min']\n },\n style: {\n fill: '#a3dda1',\n opacity: 0.4\n }\n }],\n lineStyle: {\n stroke: '#9ba29a',\n lineWidth: 1\n },\n labelStyle: [{\n position: ['max', yBaseline],\n offsetX: -textOffset,\n offsetY: -textOffset,\n style: {\n textAlign: 'right',\n textBaseline: 'bottom',\n fontSize: 14,\n fill: '#ccc'\n }\n }, {\n position: ['min', yBaseline],\n offsetX: textOffset,\n offsetY: -textOffset,\n style: {\n textAlign: 'left',\n textBaseline: 'bottom',\n fontSize: 14,\n fill: '#ccc'\n }\n }, {\n position: ['min', yBaseline],\n offsetX: textOffset,\n offsetY: textOffset,\n style: {\n textAlign: 'left',\n textBaseline: 'top',\n fontSize: 14,\n fill: '#ccc'\n }\n }, {\n position: ['max', yBaseline],\n offsetX: -textOffset,\n offsetY: textOffset,\n style: {\n textAlign: 'right',\n textBaseline: 'top',\n fontSize: 14,\n fill: '#ccc'\n }\n }]\n };\n return defaultConfig;\n}\nvar splinePath = function splinePath(data, config) {\n var view = config.view,\n _a = config.options,\n xField = _a.xField,\n yField = _a.yField;\n var xScaleView = view.getScaleByField(xField);\n var yScaleView = view.getScaleByField(yField);\n var pathData = data.map(function (d) {\n return view.getCoordinate().convert({\n x: xScaleView.scale(d[0]),\n y: yScaleView.scale(d[1])\n });\n });\n return getSplinePath(pathData, false);\n};\nexport var getPath = function getPath(config) {\n var options = config.options;\n var xField = options.xField,\n yField = options.yField,\n data = options.data,\n regressionLine = options.regressionLine;\n var _a = regressionLine.type,\n type = _a === void 0 ? 'linear' : _a,\n algorithm = regressionLine.algorithm,\n customEquation = regressionLine.equation;\n var pathData;\n var equation = null;\n if (algorithm) {\n pathData = isArray(algorithm) ? algorithm : algorithm(data);\n equation = customEquation;\n } else {\n var reg = REGRESSION_MAP[type]().x(function (d) {\n return d[xField];\n }).y(function (d) {\n return d[yField];\n });\n pathData = reg(data);\n equation = getRegressionEquation(type, pathData);\n }\n return [splinePath(pathData, config), equation];\n};\n/**\n * 调整散点图 meta: { min, max } ① data.length === 1 ② 所有数据 y 值相等 ③ 所有数据 x 值相等\n * @param options\n * @returns\n */\nexport var getMeta = function getMeta(options) {\n var _a;\n var _b = options.meta,\n meta = _b === void 0 ? {} : _b,\n xField = options.xField,\n yField = options.yField,\n data = options.data;\n var xFieldValue = data[0][xField];\n var yFieldValue = data[0][yField];\n var xIsPositiveNumber = xFieldValue > 0;\n var yIsPositiveNumber = yFieldValue > 0;\n /**\n * 获得对应字段的 min max scale 配置\n */\n function getMetaMinMax(field, axis) {\n var fieldMeta = get(meta, [field]);\n function getCustomValue(type) {\n return get(fieldMeta, type);\n }\n var range = {};\n if (axis === 'x') {\n if (isNumber(xFieldValue)) {\n if (!isNumber(getCustomValue('min'))) {\n range['min'] = xIsPositiveNumber ? 0 : xFieldValue * 2;\n }\n if (!isNumber(getCustomValue('max'))) {\n range['max'] = xIsPositiveNumber ? xFieldValue * 2 : 0;\n }\n }\n return range;\n }\n if (isNumber(yFieldValue)) {\n if (!isNumber(getCustomValue('min'))) {\n range['min'] = yIsPositiveNumber ? 0 : yFieldValue * 2;\n }\n if (!isNumber(getCustomValue('max'))) {\n range['max'] = yIsPositiveNumber ? yFieldValue * 2 : 0;\n }\n }\n return range;\n }\n return __assign(__assign({}, meta), (_a = {}, _a[xField] = __assign(__assign({}, meta[xField]), getMetaMinMax(xField, 'x')), _a[yField] = __assign(__assign({}, meta[yField]), getMetaMinMax(yField, 'y')), _a));\n};\n/**\n * 获取回归函数表达式\n * @param {string} type - 回归函数类型\n * @param {D3RegressionResult} res - 回归计算结果集\n * @return {string}\n */\nexport function getRegressionEquation(type, res) {\n var _a, _b, _c;\n var roundByPrecision = function roundByPrecision(n, p) {\n if (p === void 0) {\n p = 4;\n }\n return Math.round(n * Math.pow(10, p)) / Math.pow(10, p);\n };\n var safeFormat = function safeFormat(value) {\n return Number.isFinite(value) ? roundByPrecision(value) : '?';\n };\n switch (type) {\n case 'linear':\n // y = ax + b\n return \"y = \".concat(safeFormat(res.a), \"x + \").concat(safeFormat(res.b), \", R^2 = \").concat(safeFormat(res.rSquared));\n case 'exp':\n // y = ae^(bx)\n return \"y = \".concat(safeFormat(res.a), \"e^(\").concat(safeFormat(res.b), \"x), R^2 = \").concat(safeFormat(res.rSquared));\n case 'log':\n // y = a · ln(x) + b\n return \"y = \".concat(safeFormat(res.a), \"ln(x) + \").concat(safeFormat(res.b), \", R^2 = \").concat(safeFormat(res.rSquared));\n case 'quad':\n // y = ax^2 + bx + c\n return \"y = \".concat(safeFormat(res.a), \"x^2 + \").concat(safeFormat(res.b), \"x + \").concat(safeFormat(res.c), \", R^2 = \").concat(safeFormat(res.rSquared));\n case 'poly':\n // y = anx^n + ... + a1x + a0\n // eslint-disable-next-line no-case-declarations\n var temp = \"y = \".concat(safeFormat((_a = res.coefficients) === null || _a === void 0 ? void 0 : _a[0]), \" + \").concat(safeFormat((_b = res.coefficients) === null || _b === void 0 ? void 0 : _b[1]), \"x + \").concat(safeFormat((_c = res.coefficients) === null || _c === void 0 ? void 0 : _c[2]), \"x^2\");\n for (var i = 3; i < res.coefficients.length; ++i) {\n temp += \" + \".concat(safeFormat(res.coefficients[i]), \"x^\").concat(i);\n }\n return \"\".concat(temp, \", R^2 = \").concat(safeFormat(res.rSquared));\n case 'pow':\n // y = ax^b\n return \"y = \".concat(safeFormat(res.a), \"x^\").concat(safeFormat(res.b), \", R^2 = \").concat(safeFormat(res.rSquared));\n }\n return null;\n}","import { __assign, __rest } from \"tslib\";\nimport { isNumber } from '@antv/util';\nimport { brushInteraction } from '../../adaptor/brush';\nimport { animation, annotation, interaction, scale, scrollbar, slider, theme } from '../../adaptor/common';\nimport { point } from '../../adaptor/geometries';\nimport { deepAssign, findGeometry, flow, pick, transformLabel } from '../../utils';\nimport { getMeta, getPath, getQuadrantDefaultConfig } from './util';\n/**\n * 散点图默认美观\n * ① data.length === 1 ② 所有数据 y 值相等 ③ 所有数据 x 值相等\n * @param params\n * @returns params\n */\nexport function transformOptions(options) {\n var _a = options.data,\n data = _a === void 0 ? [] : _a,\n xField = options.xField,\n yField = options.yField;\n if (data.length) {\n // x y 字段知否只有一个值,如果只有一个值,则进行优化\n var isOneX = true;\n var isOneY = true;\n var prev = data[0];\n var curr = void 0;\n for (var i = 1; i < data.length; i++) {\n curr = data[i];\n if (prev[xField] !== curr[xField]) {\n isOneX = false;\n }\n if (prev[yField] !== curr[yField]) {\n isOneY = false;\n }\n // 如果都不是 oneValue,那么可提前跳出循环\n if (!isOneX && !isOneY) {\n break;\n }\n prev = curr;\n }\n var keys = [];\n isOneX && keys.push(xField);\n isOneY && keys.push(yField);\n var meta_1 = pick(getMeta(options), keys);\n return deepAssign({}, options, {\n meta: meta_1\n });\n }\n return options;\n}\n/**\n * 字段\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var data = options.data,\n type = options.type,\n color = options.color,\n shape = options.shape,\n pointStyle = options.pointStyle,\n shapeField = options.shapeField,\n colorField = options.colorField,\n xField = options.xField,\n yField = options.yField,\n sizeField = options.sizeField;\n var size = options.size;\n var tooltip = options.tooltip;\n if (sizeField) {\n if (!size) {\n size = [2, 8];\n }\n if (isNumber(size)) {\n size = [size, size];\n }\n }\n if (tooltip && !tooltip.fields) {\n tooltip = __assign(__assign({}, tooltip), {\n fields: [xField, yField, colorField, sizeField, shapeField]\n });\n }\n // 数据\n chart.data(data);\n // geometry\n point(deepAssign({}, params, {\n options: {\n seriesField: colorField,\n point: {\n color: color,\n shape: shape,\n size: size,\n style: pointStyle\n },\n tooltip: tooltip\n }\n }));\n var geometry = findGeometry(chart, 'point');\n // 数据调整\n if (type) {\n geometry.adjust(type);\n }\n return params;\n}\n/**\n * meta 配置\n * @param params\n */\nexport function meta(params) {\n var _a;\n var options = params.options;\n var xAxis = options.xAxis,\n yAxis = options.yAxis,\n xField = options.xField,\n yField = options.yField;\n var newOptions = transformOptions(options);\n return flow(scale((_a = {}, _a[xField] = xAxis, _a[yField] = yAxis, _a)))(deepAssign({}, params, {\n options: newOptions\n }));\n}\n/**\n * axis 配置\n * @param params\n */\nfunction axis(params) {\n var chart = params.chart,\n options = params.options;\n var xAxis = options.xAxis,\n yAxis = options.yAxis,\n xField = options.xField,\n yField = options.yField;\n chart.axis(xField, xAxis);\n chart.axis(yField, yAxis);\n return params;\n}\n/**\n * legend 配置\n * @param params\n */\nfunction legend(params) {\n var chart = params.chart,\n options = params.options;\n var legend = options.legend,\n colorField = options.colorField,\n shapeField = options.shapeField,\n sizeField = options.sizeField,\n shapeLegend = options.shapeLegend,\n sizeLegend = options.sizeLegend;\n /** legend 不为 false, 则展示图例, 优先展示 color 分类图例 */\n var showLegend = legend !== false;\n if (colorField) {\n chart.legend(colorField, showLegend ? legend : false);\n }\n // 优先取 shapeLegend, 否则取 legend\n if (shapeField) {\n if (shapeLegend) {\n chart.legend(shapeField, shapeLegend);\n } else {\n chart.legend(shapeField, shapeLegend === false ? false : legend);\n }\n }\n if (sizeField) {\n chart.legend(sizeField, sizeLegend ? sizeLegend : false);\n }\n /** 默认不展示 shape 图例,当 shapeLegend 为 undefined 也不展示图例 */\n /** 默认没有 sizeField,则隐藏连续图例 */\n if (!showLegend && !shapeLegend && !sizeLegend) {\n chart.legend(false);\n }\n return params;\n}\n/**\n * 数据标签\n * @param params\n */\nfunction label(params) {\n var chart = params.chart,\n options = params.options;\n var label = options.label,\n yField = options.yField;\n var scatterGeometry = findGeometry(chart, 'point');\n // label 为 false, 空 则不显示 label\n if (!label) {\n scatterGeometry.label(false);\n } else {\n var callback = label.callback,\n cfg = __rest(label, [\"callback\"]);\n scatterGeometry.label({\n fields: [yField],\n callback: callback,\n cfg: transformLabel(cfg)\n });\n }\n return params;\n}\n/**\n * annotation 配置\n * - 特殊 annotation: quadrant(四象限)\n * @param params\n */\nfunction scatterAnnotation(params) {\n var options = params.options;\n var quadrant = options.quadrant;\n var annotationOptions = [];\n if (quadrant) {\n var _a = quadrant.xBaseline,\n xBaseline = _a === void 0 ? 0 : _a,\n _b = quadrant.yBaseline,\n yBaseline = _b === void 0 ? 0 : _b,\n labels_1 = quadrant.labels,\n regionStyle_1 = quadrant.regionStyle,\n lineStyle = quadrant.lineStyle;\n var defaultConfig_1 = getQuadrantDefaultConfig(xBaseline, yBaseline);\n // 仅支持四象限\n var quadrants = new Array(4).join(',').split(',');\n quadrants.forEach(function (_, index) {\n annotationOptions.push(__assign(__assign({\n type: 'region',\n top: false\n }, defaultConfig_1.regionStyle[index].position), {\n style: deepAssign({}, defaultConfig_1.regionStyle[index].style, regionStyle_1 === null || regionStyle_1 === void 0 ? void 0 : regionStyle_1[index])\n }), __assign({\n type: 'text',\n top: true\n }, deepAssign({}, defaultConfig_1.labelStyle[index], labels_1 === null || labels_1 === void 0 ? void 0 : labels_1[index])));\n });\n // 生成坐标轴\n annotationOptions.push({\n type: 'line',\n top: false,\n start: ['min', yBaseline],\n end: ['max', yBaseline],\n style: deepAssign({}, defaultConfig_1.lineStyle, lineStyle)\n }, {\n type: 'line',\n top: false,\n start: [xBaseline, 'min'],\n end: [xBaseline, 'max'],\n style: deepAssign({}, defaultConfig_1.lineStyle, lineStyle)\n });\n }\n return flow(annotation(annotationOptions))(params);\n}\n// 趋势线\nfunction regressionLine(params) {\n var options = params.options,\n chart = params.chart;\n var regressionLine = options.regressionLine;\n if (regressionLine) {\n var style_1 = regressionLine.style,\n _a = regressionLine.equationStyle,\n equationStyle_1 = _a === void 0 ? {} : _a,\n _b = regressionLine.top,\n top_1 = _b === void 0 ? false : _b,\n _c = regressionLine.showEquation,\n showEquation_1 = _c === void 0 ? false : _c;\n var defaultStyle_1 = {\n stroke: '#9ba29a',\n lineWidth: 2,\n opacity: 0.5\n };\n var defaulEquationStyle_1 = {\n x: 20,\n y: 20,\n textAlign: 'left',\n textBaseline: 'middle',\n fontSize: 14,\n fillOpacity: 0.5\n };\n chart.annotation().shape({\n top: top_1,\n render: function render(container, view) {\n var group = container.addGroup({\n id: \"\".concat(chart.id, \"-regression-line\"),\n name: 'regression-line-group'\n });\n var _a = getPath({\n view: view,\n options: options\n }),\n path = _a[0],\n equation = _a[1];\n group.addShape('path', {\n name: 'regression-line',\n attrs: __assign(__assign({\n path: path\n }, defaultStyle_1), style_1)\n });\n if (showEquation_1) {\n group.addShape('text', {\n name: 'regression-equation',\n attrs: __assign(__assign(__assign({}, defaulEquationStyle_1), equationStyle_1), {\n text: equation\n })\n });\n }\n }\n });\n }\n return params;\n}\n/**\n * tooltip 配置\n * @param params\n */\nexport function tooltip(params) {\n var chart = params.chart,\n options = params.options;\n var tooltip = options.tooltip;\n if (tooltip) {\n chart.tooltip(tooltip);\n } else if (tooltip === false) {\n chart.tooltip(false);\n }\n return params;\n}\n/**\n * 散点图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n // flow 的方式处理所有的配置到 G2 API\n return flow(geometry, meta, axis, legend, tooltip, label,\n // 需要在 interaction 前面\n brushInteraction, slider, scrollbar, interaction, scatterAnnotation, animation, theme, regressionLine)(params);\n}","import { Plot } from '../../core/plot';\nimport { deepAssign } from '../../utils';\n/**\n * 散点图 默认配置项\n */\nexport var DEFAULT_OPTIONS = deepAssign({}, Plot.getDefaultOptions(), {\n size: 4,\n tooltip: {\n showTitle: false,\n showMarkers: false,\n showCrosshairs: true,\n crosshairs: {\n type: 'xy'\n }\n }\n});","import { registerInteraction } from '@antv/g2';\nregisterInteraction('drag-move', {\n start: [{\n trigger: 'plot:mousedown',\n action: 'scale-translate:start'\n }],\n processing: [{\n trigger: 'plot:mousemove',\n action: 'scale-translate:translate',\n throttle: {\n wait: 100,\n leading: true,\n trailing: false\n }\n }],\n end: [{\n trigger: 'plot:mouseup',\n action: 'scale-translate:end'\n }]\n});","import { __assign, __extends } from \"tslib\";\nimport { BRUSH_FILTER_EVENTS, VIEW_LIFE_CIRCLE } from '@antv/g2';\nimport { Plot } from '../../core/plot';\nimport { deepAssign } from '../../utils';\nimport { adaptor, meta, transformOptions } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constant';\nimport './interactions';\nvar Scatter = /** @class */function (_super) {\n __extends(Scatter, _super);\n function Scatter(container, options) {\n var _this = _super.call(this, container, options) || this;\n /** 图表类型 */\n _this.type = 'scatter';\n // 监听 brush 事件,处理 meta\n _this.on(VIEW_LIFE_CIRCLE.BEFORE_RENDER, function (evt) {\n var _a, _b;\n // 运行时,读取 option\n var _c = _this,\n options = _c.options,\n chart = _c.chart;\n if (((_a = evt.data) === null || _a === void 0 ? void 0 : _a.source) === BRUSH_FILTER_EVENTS.FILTER) {\n var filteredData = _this.chart.filterData(_this.chart.getData());\n meta({\n chart: chart,\n options: __assign(__assign({}, options), {\n data: filteredData\n })\n });\n }\n if (((_b = evt.data) === null || _b === void 0 ? void 0 : _b.source) === BRUSH_FILTER_EVENTS.RESET) {\n meta({\n chart: chart,\n options: options\n });\n }\n });\n return _this;\n }\n /**\n * 获取 散点图 默认配置项\n * 供外部使用\n */\n Scatter.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * @override\n * @param data\n */\n Scatter.prototype.changeData = function (data) {\n this.updateOption(transformOptions(deepAssign({}, this.options, {\n data: data\n })));\n var _a = this,\n options = _a.options,\n chart = _a.chart;\n meta({\n chart: chart,\n options: options\n });\n this.chart.changeData(data);\n };\n /**\n * 获取 散点图 的适配器\n */\n Scatter.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n Scatter.prototype.getDefaultOptions = function () {\n return Scatter.getDefaultOptions();\n };\n return Scatter;\n}(Plot);\nexport { Scatter };","import { Plot } from '../../core/plot';\nimport { deepAssign } from '../../utils';\nexport var Y_FIELD = '$$stock-range$$';\nexport var TREND_FIELD = 'trend';\nexport var TREND_UP = 'up';\nexport var TREND_DOWN = 'down';\n/** tooltip 配置 */\nexport var DEFAULT_TOOLTIP_OPTIONS = {\n showMarkers: false,\n showCrosshairs: true,\n shared: true,\n crosshairs: {\n type: 'xy',\n follow: true,\n text: function text(type, defaultContent, items) {\n var textContent;\n if (type === 'x') {\n var item = items[0];\n textContent = item ? item.title : defaultContent;\n } else {\n textContent = defaultContent;\n }\n return {\n position: type === 'y' ? 'start' : 'end',\n content: textContent,\n style: {\n fill: '#dfdfdf'\n }\n };\n },\n // 自定义 crosshairs textBackground 样式\n textBackground: {\n padding: [2, 4],\n style: {\n fill: '#666'\n }\n }\n }\n};\n/**\n * 散点图 默认配置项\n */\nexport var DEFAULT_OPTIONS = deepAssign({}, Plot.getDefaultOptions(), {\n // 设置默认图表 tooltips\n tooltip: DEFAULT_TOOLTIP_OPTIONS,\n interactions: [{\n type: 'tooltip'\n }],\n legend: {\n position: 'top-left'\n },\n risingFill: '#ef5350',\n fallingFill: '#26a69a'\n});","import { __assign } from \"tslib\";\nimport { isArray, map } from '@antv/util';\nimport { TREND_DOWN, TREND_FIELD, TREND_UP, Y_FIELD } from './constant';\n/**\n * @desc 股票图数据处理\n * @param data\n * @param yField\n */\nexport function getStockData(data, yField) {\n return map(data, function (item) {\n var obj = item && __assign({}, item);\n if (isArray(yField) && obj) {\n var open_1 = yField[0],\n close_1 = yField[1],\n high = yField[2],\n low = yField[3];\n obj[TREND_FIELD] = obj[open_1] <= obj[close_1] ? TREND_UP : TREND_DOWN;\n obj[Y_FIELD] = [obj[open_1], obj[close_1], obj[high], obj[low]];\n }\n return obj;\n });\n}","import { animation, annotation, interaction, slider, theme } from '../../adaptor/common';\nimport { schema } from '../../adaptor/geometries';\nimport { AXIS_META_CONFIG_KEYS } from '../../constant';\nimport { deepAssign, flow, pick } from '../../utils';\nimport { TREND_DOWN, TREND_FIELD, TREND_UP, Y_FIELD } from './constant';\nimport { getStockData } from './utils';\n/**\n * 图表配置处理\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var yField = options.yField;\n var data = options.data,\n risingFill = options.risingFill,\n fallingFill = options.fallingFill,\n tooltip = options.tooltip,\n stockStyle = options.stockStyle;\n chart.data(getStockData(data, yField));\n var tooltipOptions = tooltip;\n if (tooltipOptions !== false) {\n tooltipOptions = deepAssign({}, {\n fields: yField\n }, tooltipOptions);\n }\n schema(deepAssign({}, params, {\n options: {\n schema: {\n shape: 'candle',\n color: [risingFill, fallingFill],\n style: stockStyle\n },\n yField: Y_FIELD,\n seriesField: TREND_FIELD,\n rawFields: yField,\n tooltip: tooltipOptions\n }\n }));\n return params;\n}\n/**\n * meta 配置\n * @param params\n */\nexport function meta(params) {\n var _a, _b;\n var chart = params.chart,\n options = params.options;\n var meta = options.meta,\n xAxis = options.xAxis,\n yAxis = options.yAxis,\n xField = options.xField;\n var baseMeta = (_a = {}, _a[xField] = {\n type: 'timeCat',\n tickCount: 6\n }, _a[TREND_FIELD] = {\n values: [TREND_UP, TREND_DOWN]\n }, _a);\n var scales = deepAssign(baseMeta, meta, (_b = {}, _b[xField] = pick(xAxis, AXIS_META_CONFIG_KEYS), _b[Y_FIELD] = pick(yAxis, AXIS_META_CONFIG_KEYS), _b));\n chart.scale(scales);\n return params;\n}\n/**\n * axis 配置\n * @param params\n */\nexport function axis(params) {\n var chart = params.chart,\n options = params.options;\n var xAxis = options.xAxis,\n yAxis = options.yAxis,\n xField = options.xField;\n // 为 false 则是不显示轴\n if (xAxis === false) {\n chart.axis(xField, false);\n } else {\n chart.axis(xField, xAxis);\n }\n if (yAxis === false) {\n chart.axis(Y_FIELD, false);\n } else {\n chart.axis(Y_FIELD, yAxis);\n }\n return params;\n}\n/**\n * tooltip 配置\n * @param params\n */\nexport function tooltip(params) {\n var chart = params.chart,\n options = params.options;\n var tooltip = options.tooltip;\n if (tooltip !== false) {\n chart.tooltip(tooltip);\n } else {\n chart.tooltip(false);\n }\n return params;\n}\n/**\n * legend 配置\n * @param params\n */\nexport function legend(params) {\n var chart = params.chart,\n options = params.options;\n var legend = options.legend;\n if (legend) {\n chart.legend(TREND_FIELD, legend);\n } else if (legend === false) {\n chart.legend(false);\n }\n return params;\n}\n/**\n * K线图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n // flow 的方式处理所有的配置到 G2 API\n flow(theme, geometry, meta, axis, tooltip, legend, interaction, animation, annotation(), slider)(params);\n}","import { __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { adaptor } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constant';\nimport { getStockData } from './utils';\nvar Stock = /** @class */function (_super) {\n __extends(Stock, _super);\n function Stock() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'stock';\n return _this;\n }\n /**\n * 获取 散点图 默认配置项\n * 供外部使用\n */\n Stock.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * 默认配置\n * g2/g2plot默 认 配 置 --> 图 表 默 认 配 置 --> 开 发 者 自 定 义 配 置 --> 最 终 绘 图 配 置\n */\n Stock.prototype.getDefaultOptions = function () {\n return Stock.getDefaultOptions();\n };\n /**\n * 获取 蜡烛图 的适配器\n */\n Stock.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n /**\n * @override\n * @param data\n */\n Stock.prototype.changeData = function (data) {\n this.updateOption({\n data: data\n });\n var yField = this.options.yField;\n this.chart.changeData(getStockData(data, yField));\n };\n return Stock;\n}(Plot);\nexport { Stock };","import { map } from '@antv/util';\nexport function getTinyData(data) {\n return map(data || [], function (y, x) {\n return {\n x: \"\".concat(x),\n y: y\n };\n });\n}","import { __assign } from \"tslib\";\nimport { get } from '@antv/util';\nexport var X_FIELD = 'x';\nexport var Y_FIELD = 'y';\nexport var DEFAULT_TOOLTIP_OPTIONS = {\n showTitle: false,\n shared: true,\n showMarkers: false,\n customContent: function customContent(x, data) {\n return \"\".concat(get(data, [0, 'data', 'y'], 0));\n },\n containerTpl: '
        ',\n itemTpl: '{value}',\n domStyles: {\n 'g2-tooltip': {\n padding: '2px 4px',\n fontSize: '10px'\n }\n },\n showCrosshairs: true,\n crosshairs: {\n type: 'x'\n }\n};\n/**\n * 默认配置项\n */\nexport var DEFAULT_OPTIONS = {\n appendPadding: 2,\n tooltip: __assign({}, DEFAULT_TOOLTIP_OPTIONS),\n animation: {}\n};","import { animation, annotation, pattern, scale, theme, tooltip } from '../../adaptor/common';\nimport { area, line, point } from '../../adaptor/geometries';\nimport { deepAssign, flow } from '../../utils';\nimport { adjustYMetaByZero } from '../../utils/data';\nimport { X_FIELD, Y_FIELD } from '../tiny-line/constants';\nimport { getTinyData } from '../tiny-line/utils';\n/**\n * 字段\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var data = options.data,\n color = options.color,\n areaStyle = options.areaStyle,\n pointOptions = options.point,\n lineOptions = options.line;\n var pointState = pointOptions === null || pointOptions === void 0 ? void 0 : pointOptions.state;\n var seriesData = getTinyData(data);\n chart.data(seriesData);\n var primary = deepAssign({}, params, {\n options: {\n xField: X_FIELD,\n yField: Y_FIELD,\n area: {\n color: color,\n style: areaStyle\n },\n line: lineOptions,\n point: pointOptions\n }\n });\n var second = deepAssign({}, primary, {\n options: {\n tooltip: false\n }\n });\n var pointParams = deepAssign({}, primary, {\n options: {\n tooltip: false,\n state: pointState\n }\n });\n // area geometry 处理\n area(primary);\n line(second);\n point(pointParams);\n chart.axis(false);\n chart.legend(false);\n return params;\n}\n/**\n * meta 配置\n * @param params\n */\nexport function meta(params) {\n var _a, _b;\n var options = params.options;\n var xAxis = options.xAxis,\n yAxis = options.yAxis,\n data = options.data;\n var seriesData = getTinyData(data);\n return flow(scale((_a = {}, _a[X_FIELD] = xAxis, _a[Y_FIELD] = yAxis, _a), (_b = {}, _b[X_FIELD] = {\n type: 'cat'\n }, _b[Y_FIELD] = adjustYMetaByZero(seriesData, Y_FIELD), _b)))(params);\n}\n/**\n * 迷你面积图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n return flow(pattern('areaStyle'), geometry, meta, tooltip, theme, animation, annotation())(params);\n}","import { __assign } from \"tslib\";\nimport { DEFAULT_TOOLTIP_OPTIONS } from '../tiny-line/constants';\n/**\n * 默认配置项\n */\nexport var DEFAULT_OPTIONS = {\n appendPadding: 2,\n tooltip: __assign({}, DEFAULT_TOOLTIP_OPTIONS),\n // 默认样式\n color: 'l(90) 0:#E5EDFE 1:#ffffff',\n areaStyle: {\n fillOpacity: 0.6\n },\n line: {\n size: 1,\n color: '#5B8FF9'\n },\n animation: {}\n};","import { __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { getTinyData } from '../tiny-line/utils';\nimport { adaptor, meta } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constants';\nvar TinyArea = /** @class */function (_super) {\n __extends(TinyArea, _super);\n function TinyArea() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'tiny-area';\n return _this;\n }\n /**\n * 获取默认配置项\n * 供外部使用\n */\n TinyArea.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * @override\n * @param data\n */\n TinyArea.prototype.changeData = function (data) {\n this.updateOption({\n data: data\n });\n var _a = this,\n chart = _a.chart,\n options = _a.options;\n meta({\n chart: chart,\n options: options\n });\n chart.changeData(getTinyData(data));\n };\n TinyArea.prototype.getDefaultOptions = function () {\n return TinyArea.getDefaultOptions();\n };\n /**\n * 获取 迷你面积图 的适配器\n */\n TinyArea.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return TinyArea;\n}(Plot);\nexport { TinyArea };","import { animation, annotation, pattern, theme, tooltip } from '../../adaptor/common';\nimport { interval } from '../../adaptor/geometries';\nimport { deepAssign, flow } from '../../utils';\nimport { meta } from '../tiny-area/adaptor';\nimport { X_FIELD, Y_FIELD } from '../tiny-line/constants';\nimport { getTinyData } from '../tiny-line/utils';\nexport { meta };\n/**\n * 字段\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var data = options.data,\n color = options.color,\n columnStyle = options.columnStyle,\n columnWidthRatio = options.columnWidthRatio;\n var seriesData = getTinyData(data);\n chart.data(seriesData);\n var p = deepAssign({}, params, {\n options: {\n xField: X_FIELD,\n yField: Y_FIELD,\n widthRatio: columnWidthRatio,\n interval: {\n style: columnStyle,\n color: color\n }\n }\n });\n interval(p);\n chart.axis(false);\n chart.legend(false);\n chart.interaction('element-active');\n return params;\n}\n/**\n * 迷你柱形图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n return flow(theme, pattern('columnStyle'), geometry, meta, tooltip, animation, annotation())(params);\n}","import { __assign } from \"tslib\";\nimport { get } from '@antv/util';\nexport var DEFAULT_TOOLTIP_OPTIONS = {\n showTitle: false,\n shared: true,\n showMarkers: false,\n customContent: function customContent(x, data) {\n return \"\".concat(get(data, [0, 'data', 'y'], 0));\n },\n containerTpl: '
        ',\n itemTpl: '{value}',\n domStyles: {\n 'g2-tooltip': {\n padding: '2px 4px',\n fontSize: '10px'\n }\n }\n};\n/**\n * 默认配置项\n */\nexport var DEFAULT_OPTIONS = {\n appendPadding: 2,\n tooltip: __assign({}, DEFAULT_TOOLTIP_OPTIONS),\n animation: {}\n};","import { __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { getTinyData } from '../tiny-line/utils';\nimport { adaptor, meta } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constants';\nvar TinyColumn = /** @class */function (_super) {\n __extends(TinyColumn, _super);\n function TinyColumn() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'tiny-column';\n return _this;\n }\n /**\n * 获取默认配置项\n * 供外部使用\n */\n TinyColumn.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * @override\n * @param data\n */\n TinyColumn.prototype.changeData = function (data) {\n this.updateOption({\n data: data\n });\n var _a = this,\n chart = _a.chart,\n options = _a.options;\n meta({\n chart: chart,\n options: options\n });\n chart.changeData(getTinyData(data));\n };\n TinyColumn.prototype.getDefaultOptions = function () {\n return TinyColumn.getDefaultOptions();\n };\n /**\n * 获取 迷你柱形图 的适配器\n */\n TinyColumn.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return TinyColumn;\n}(Plot);\nexport { TinyColumn };","import { animation, annotation, theme, tooltip } from '../../adaptor/common';\nimport { line, point } from '../../adaptor/geometries';\nimport { deepAssign, flow } from '../../utils';\nimport { meta } from '../tiny-area/adaptor';\nimport { X_FIELD, Y_FIELD } from './constants';\nimport { getTinyData } from './utils';\nexport { meta };\n/**\n * 字段\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var data = options.data,\n color = options.color,\n lineStyle = options.lineStyle,\n pointMapping = options.point;\n var pointState = pointMapping === null || pointMapping === void 0 ? void 0 : pointMapping.state;\n var seriesData = getTinyData(data);\n chart.data(seriesData);\n // line geometry 处理\n var primary = deepAssign({}, params, {\n options: {\n xField: X_FIELD,\n yField: Y_FIELD,\n line: {\n color: color,\n style: lineStyle\n },\n point: pointMapping\n }\n });\n var pointParams = deepAssign({}, primary, {\n options: {\n tooltip: false,\n state: pointState\n }\n });\n line(primary);\n point(pointParams);\n chart.axis(false);\n chart.legend(false);\n return params;\n}\n/**\n * 迷你折线图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n return flow(geometry, meta, theme, tooltip, animation, annotation())(params);\n}","import { __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { adaptor, meta } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constants';\nimport { getTinyData } from './utils';\nvar TinyLine = /** @class */function (_super) {\n __extends(TinyLine, _super);\n function TinyLine() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'tiny-line';\n return _this;\n }\n /**\n * 获取默认配置项\n * 供外部使用\n */\n TinyLine.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * @override\n * @param data\n */\n TinyLine.prototype.changeData = function (data) {\n this.updateOption({\n data: data\n });\n var _a = this,\n chart = _a.chart,\n options = _a.options;\n meta({\n chart: chart,\n options: options\n });\n chart.changeData(getTinyData(data));\n };\n TinyLine.prototype.getDefaultOptions = function () {\n return TinyLine.getDefaultOptions();\n };\n /**\n * 获取 迷你折线图 的适配器\n */\n TinyLine.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return TinyLine;\n}(Plot);\nexport { TinyLine };","import { get } from '@antv/util';\nimport { deepAssign } from '../../utils';\nimport { Area } from '../area';\nimport { adaptor as areaAdaptor } from '../area/adaptor';\nimport { Bar } from '../bar';\nimport { adaptor as barAdaptor } from '../bar/adaptor';\nimport { Column } from '../column';\nimport { adaptor as columnAdaptor } from '../column/adaptor';\nimport { Funnel } from '../funnel';\nimport { adaptor as funnelAdaptor } from '../funnel/adaptor';\nimport { Gauge } from '../gauge';\nimport { adaptor as gaugeAdaptor } from '../gauge/adaptor';\nimport { Histogram } from '../histogram';\nimport { adaptor as histogramAdaptor } from '../histogram/adaptor';\nimport { Line } from '../line';\nimport { adaptor as lineAdaptor } from '../line/adaptor';\nimport { Pie } from '../pie';\nimport { adaptor as pieAdaptor } from '../pie/adaptor';\nimport { Progress } from '../progress';\nimport { adaptor as progressAdaptor } from '../progress/adaptor';\nimport { RingProgress } from '../ring-progress';\nimport { adaptor as ringProgressAdaptor } from '../ring-progress/adaptor';\nimport { Scatter } from '../scatter';\nimport { adaptor as scatterAdaptor } from '../scatter/adaptor';\nimport { Stock } from '../stock';\nimport { adaptor as stockAdaptor } from '../stock/adaptor';\nimport { TinyArea } from '../tiny-area';\nimport { adaptor as tinyAreaAdaptor } from '../tiny-area/adaptor';\nimport { TinyColumn } from '../tiny-column';\nimport { adaptor as tinyColumnAdaptor } from '../tiny-column/adaptor';\nimport { TinyLine } from '../tiny-line';\nimport { adaptor as tinyLineAdaptor } from '../tiny-line/adaptor';\n/**\n * 可在 multi-view 中使用的 plots\n */\nvar PLOT_ADAPTORS = {\n line: lineAdaptor,\n pie: pieAdaptor,\n column: columnAdaptor,\n bar: barAdaptor,\n area: areaAdaptor,\n gauge: gaugeAdaptor,\n 'tiny-line': tinyLineAdaptor,\n 'tiny-column': tinyColumnAdaptor,\n 'tiny-area': tinyAreaAdaptor,\n 'ring-progress': ringProgressAdaptor,\n progress: progressAdaptor,\n scatter: scatterAdaptor,\n histogram: histogramAdaptor,\n funnel: funnelAdaptor,\n stock: stockAdaptor\n};\n/**\n * 获取指定 plot 的 class contructor\n * @param {string} plot\n */\nvar PLOT_CONSTRUCTOR = {\n line: Line,\n pie: Pie,\n column: Column,\n bar: Bar,\n area: Area,\n gauge: Gauge,\n 'tiny-line': TinyLine,\n 'tiny-column': TinyColumn,\n 'tiny-area': TinyArea,\n 'ring-progress': RingProgress,\n progress: Progress,\n scatter: Scatter,\n histogram: Histogram,\n funnel: Funnel,\n stock: Stock\n};\n/**\n * 在 mix 图表以及 facet 图表中,defaultOptions 进行复写简化\n */\nvar DEFAULT_OPTIONS_MAP = {\n pie: {\n label: false\n },\n column: {\n tooltip: {\n showMarkers: false\n }\n },\n bar: {\n tooltip: {\n showMarkers: false\n }\n }\n};\n/**\n * 执行 plot 的 adaptor, 默认都带上 defaultOptions\n * @param {string} plot\n */\nexport function execPlotAdaptor(plot, view, options) {\n var cls = PLOT_CONSTRUCTOR[plot];\n if (!cls) {\n console.error(\"could not find \".concat(plot, \" plot\"));\n return;\n }\n var module = PLOT_ADAPTORS[plot];\n module({\n chart: view,\n options: deepAssign({}, cls.getDefaultOptions(), get(DEFAULT_OPTIONS_MAP, plot, {}), options)\n });\n}","import { __assign } from \"tslib\";\nimport { each } from '@antv/util';\nimport { animation, annotation, interaction, theme, tooltip } from '../../adaptor/common';\nimport { geometry as geometryAdaptor } from '../../adaptor/geometries/base';\nimport { AXIS_META_CONFIG_KEYS } from '../../constant';\nimport { PLOT_CONTAINER_OPTIONS } from '../../core/plot';\nimport { deepAssign, flow, pick } from '../../utils';\nimport { execPlotAdaptor } from './utils';\n/**\n * geometry 处理\n * @param params\n */\nfunction multiView(params) {\n var chart = params.chart,\n options = params.options;\n var views = options.views,\n legend = options.legend;\n each(views, function (v) {\n var region = v.region,\n data = v.data,\n meta = v.meta,\n axes = v.axes,\n coordinate = v.coordinate,\n interactions = v.interactions,\n annotations = v.annotations,\n tooltip = v.tooltip,\n geometries = v.geometries;\n // 1. 创建 view\n var viewOfG2 = chart.createView({\n region: region\n });\n // 2. data\n viewOfG2.data(data);\n // 3. meta\n var scales = {};\n if (axes) {\n each(axes, function (axis, field) {\n scales[field] = pick(axis, AXIS_META_CONFIG_KEYS);\n });\n }\n scales = deepAssign({}, meta, scales);\n viewOfG2.scale(scales);\n // 4. x y axis\n if (!axes) {\n viewOfG2.axis(false);\n } else {\n each(axes, function (axis, field) {\n viewOfG2.axis(field, axis);\n });\n }\n // 5. coordinate\n viewOfG2.coordinate(coordinate);\n // 6. geometry\n each(geometries, function (geometry) {\n var ext = geometryAdaptor({\n chart: viewOfG2,\n options: geometry\n }).ext;\n // adjust\n var adjust = geometry.adjust;\n if (adjust) {\n ext.geometry.adjust(adjust);\n }\n });\n // 7. interactions\n each(interactions, function (interaction) {\n if (interaction.enable === false) {\n viewOfG2.removeInteraction(interaction.type);\n } else {\n viewOfG2.interaction(interaction.type, interaction.cfg);\n }\n });\n // 8. annotations\n each(annotations, function (annotation) {\n viewOfG2.annotation()[annotation.type](__assign({}, annotation));\n });\n // 9. animation (先做动画)\n if (typeof v.animation === 'boolean') {\n viewOfG2.animate(false);\n } else {\n viewOfG2.animate(true);\n // 9.1 所有的 Geometry 都使用同一动画(各个图形如有区别,todo 自行覆盖)\n each(viewOfG2.geometries, function (g) {\n g.animate(v.animation);\n });\n }\n if (tooltip) {\n // 10. tooltip\n viewOfG2.interaction('tooltip');\n viewOfG2.tooltip(tooltip);\n }\n });\n // legend\n if (!legend) {\n chart.legend(false);\n } else {\n each(legend, function (l, field) {\n chart.legend(field, l);\n });\n }\n // tooltip\n chart.tooltip(options.tooltip);\n return params;\n}\n/**\n * 支持嵌套使用 g2plot 内置图表\n * @param params\n */\nfunction multiPlot(params) {\n var chart = params.chart,\n options = params.options;\n var plots = options.plots,\n _a = options.data,\n data = _a === void 0 ? [] : _a;\n each(plots, function (plot) {\n var type = plot.type,\n region = plot.region,\n _a = plot.options,\n options = _a === void 0 ? {} : _a,\n top = plot.top;\n var tooltip = options.tooltip;\n if (top) {\n execPlotAdaptor(type, chart, __assign(__assign({}, options), {\n data: data\n }));\n return;\n }\n var viewOfG2 = chart.createView(__assign({\n region: region\n }, pick(options, PLOT_CONTAINER_OPTIONS)));\n if (tooltip) {\n // 配置 tooltip 交互\n viewOfG2.interaction('tooltip');\n }\n execPlotAdaptor(type, viewOfG2, __assign({\n data: data\n }, options));\n });\n return params;\n}\n/**\n * 处理缩略轴的 adaptor (mix)\n * @param params\n */\nexport function slider(params) {\n var chart = params.chart,\n options = params.options;\n chart.option('slider', options.slider);\n return params;\n}\n/**\n * 图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n return flow(animation,\n // 多 view 的图,动画配置放到最前面\n multiView, multiPlot, interaction, animation, theme, tooltip, slider, annotation()\n // ... 其他的 adaptor flow\n )(params);\n}","import { __extends } from \"tslib\";\nimport { Action, registerAction, registerInteraction } from '@antv/g2';\nimport { each, get, isArray, map } from '@antv/util';\nimport { getAllElements, getSiblingViews, getViews } from '../../../utils';\nimport { clearHighlight, getElementValue } from './utils';\n/**\n * 存在多个 view 时,view 之间的联动交互\n *\n * 提供四个反馈 action,均接受参数:linkField 关联字段,dim 维度\n * 1. showTooltip\n * 2. active\n * 3. highlight\n * 4. selected\n *\n * 附加,两个结束反馈 action:\n * 1. hidetooltip\n * 2. reset 清除激活和高亮状态\n */\nvar Association = /** @class */function (_super) {\n __extends(Association, _super);\n function Association() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * 获取关联的 elements\n *\n * - 如果 dim 参数存在,根据 dim 获取相应的 field。与 linkField 不匹配则 return\n * - 否则 dim 参数不存在,且 linkField 存在,则作为关联字段\n * - 否则若 linkField 不存在,则获取第一个分类字段\n * @returns EventItem[]\n */\n Association.prototype.getAssociationItems = function (views, params) {\n var _a;\n var event = this.context.event;\n var _b = params || {},\n linkField = _b.linkField,\n dim = _b.dim;\n var items = [];\n if ((_a = event.data) === null || _a === void 0 ? void 0 : _a.data) {\n var data_1 = event.data.data;\n each(views, function (v) {\n var _a, _b;\n var field = linkField;\n if (dim === 'x') {\n field = v.getXScale().field;\n } else if (dim === 'y') {\n field = (_a = v.getYScales().find(function (s) {\n return s.field === field;\n })) === null || _a === void 0 ? void 0 : _a.field;\n } else if (!field) {\n field = (_b = v.getGroupScales()[0]) === null || _b === void 0 ? void 0 : _b.field;\n }\n if (!field) {\n return;\n }\n var elements = map(getAllElements(v), function (ele) {\n var active = false;\n var inactive = false;\n var dataValue = isArray(data_1) ? get(data_1[0], field) : get(data_1, field);\n if (getElementValue(ele, field) === dataValue) {\n active = true;\n } else {\n inactive = true;\n }\n return {\n element: ele,\n view: v,\n active: active,\n inactive: inactive\n };\n });\n items.push.apply(items, elements);\n });\n }\n return items;\n };\n /**\n * 所有同一层级的 tooltip 显示\n */\n Association.prototype.showTooltip = function (params) {\n var siblings = getSiblingViews(this.context.view);\n var elements = this.getAssociationItems(siblings, params);\n each(elements, function (ele) {\n if (ele.active) {\n var box = ele.element.shape.getCanvasBBox();\n ele.view.showTooltip({\n x: box.minX + box.width / 2,\n y: box.minY + box.height / 2\n });\n }\n });\n };\n /**\n * 隐藏同一层级的 tooltip\n */\n Association.prototype.hideTooltip = function () {\n var siblings = getSiblingViews(this.context.view);\n each(siblings, function (sibling) {\n sibling.hideTooltip();\n });\n };\n /**\n * 设置 active 状态\n */\n Association.prototype.active = function (params) {\n var views = getViews(this.context.view);\n var items = this.getAssociationItems(views, params);\n each(items, function (item) {\n var active = item.active,\n element = item.element;\n if (active) {\n element.setState('active', true);\n }\n });\n };\n /**\n * 设置 selected 状态\n */\n Association.prototype.selected = function (params) {\n var views = getViews(this.context.view);\n var items = this.getAssociationItems(views, params);\n each(items, function (item) {\n var active = item.active,\n element = item.element;\n if (active) {\n element.setState('selected', true);\n }\n });\n };\n /**\n * 进行高亮 => 设置 inactive 状态\n */\n Association.prototype.highlight = function (params) {\n var views = getViews(this.context.view);\n var items = this.getAssociationItems(views, params);\n each(items, function (item) {\n var inactive = item.inactive,\n element = item.element;\n if (inactive) {\n element.setState('inactive', true);\n }\n });\n };\n Association.prototype.reset = function () {\n var views = getViews(this.context.view);\n each(views, function (v) {\n clearHighlight(v);\n });\n };\n return Association;\n}(Action);\nregisterAction('association', Association);\n/**\n * 相邻 view 的 active 联动(相同维值的 tooltip 联动)\n */\nregisterInteraction('association-active', {\n start: [{\n trigger: 'element:mouseenter',\n action: 'association:active'\n }],\n end: [{\n trigger: 'element:mouseleave',\n action: 'association:reset'\n }]\n});\n/**\n * 相邻 view 的 active 联动(相同维值的 tooltip 联动)\n */\nregisterInteraction('association-selected', {\n start: [{\n trigger: 'element:mouseenter',\n action: 'association:selected'\n }],\n end: [{\n trigger: 'element:mouseleave',\n action: 'association:reset'\n }]\n});\n/**\n * 相邻 view 的 highlight 联动, 突出当前 element\n */\nregisterInteraction('association-highlight', {\n start: [{\n trigger: 'element:mouseenter',\n action: 'association:highlight'\n }],\n end: [{\n trigger: 'element:mouseleave',\n action: 'association:reset'\n }]\n});\n/**\n * 相邻 view 的 tooltip 联动,根据 groupField 进行关联(相同维值的 tooltip 联动)\n */\nregisterInteraction('association-tooltip', {\n start: [{\n trigger: 'element:mousemove',\n action: 'association:showTooltip'\n }],\n end: [{\n trigger: 'element:mouseleave',\n action: 'association:hideTooltip'\n }]\n});","import { each, isArray } from '@antv/util';\nimport { getAllElements } from '../../../utils';\n/**\n * 获取图表元素对应字段的值\n * @param element 图表元素\n * @param field 字段名\n * @ignore\n */\nexport function getElementValue(element, field) {\n var model = element.getModel();\n var record = model.data;\n var value;\n if (isArray(record)) {\n value = record[0][field];\n } else {\n value = record[field];\n }\n return value;\n}\n/**\n * @ignore\n * 清理 highlight 效果\n * @param view View 或者 Chart\n */\nexport function clearHighlight(view) {\n var elements = getAllElements(view);\n each(elements, function (el) {\n if (el.hasState('active')) {\n el.setState('active', false);\n }\n if (el.hasState('selected')) {\n el.setState('selected', false);\n }\n if (el.hasState('inactive')) {\n el.setState('inactive', false);\n }\n });\n}","import { __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { adaptor } from './adaptor';\nimport './interactions';\n/**\n * 多图层图形,释放 G2 80% 的功能,可以用来做:\n * 1. 图层叠加的图:\n * - 折线 + 置信度区间迭代\n * - 嵌套饼图\n * - ...\n * 2. 图层划分的图\n * - 多维图\n * - 柱饼组合图\n * - ...\n */\nvar Mix = /** @class */function (_super) {\n __extends(Mix, _super);\n function Mix() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'mix';\n return _this;\n }\n /**\n * 获取适配器\n */\n Mix.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Mix;\n}(Plot);\nexport { Mix };","import { Mix } from './plots/mix';\n/** 实验室图表所处的阶段 */\nexport var Stage;\n(function (Stage) {\n Stage[\"DEV\"] = \"DEV\";\n Stage[\"BETA\"] = \"BETA\";\n Stage[\"STABLE\"] = \"STABLE\";\n})(Stage || (Stage = {}));\n/**\n * 不同阶段打印一些消息给开发者\n * @param stage\n */\nexport function notice(stage, plotType) {\n console.warn(stage === Stage.DEV ? \"Plot '\".concat(plotType, \"' is in DEV stage, just give us issues.\") : stage === Stage.BETA ? \"Plot '\".concat(plotType, \"' is in BETA stage, DO NOT use it in production env.\") : stage === Stage.STABLE ? \"Plot '\".concat(plotType, \"' is in STABLE stage, import it by \\\"import { \").concat(plotType, \" } from '@antv/g2plot'\\\".\") : 'invalid Stage type.');\n}\n/**\n * 实验室图表,实验室中的图表分成不同的阶段。\n */\nvar Lab = /** @class */function () {\n function Lab() {}\n Object.defineProperty(Lab, \"MultiView\", {\n get: function get() {\n notice(Stage.STABLE, 'MultiView');\n return Mix;\n },\n enumerable: false,\n configurable: true\n });\n return Lab;\n}();\nexport { Lab };","export var FIRST_AXES_VIEW = 'first-axes-view';\nexport var SECOND_AXES_VIEW = 'second-axes-view';\n/** 对称条形图的分组 key 值 */\nexport var SERIES_FIELD_KEY = 'series-field-key';","import { groupBy } from '@antv/util';\n/**\n * bidirectional-bar 处理数据, 通过 SERIES_FIELD_KEY 字段分成左右数据\n * @param xField\n * @param yField\n * @param data\n */\nexport function transformData(xField, yField, seriesField, data, reverse) {\n var hopeData = [];\n yField.forEach(function (d) {\n data.forEach(function (k) {\n var _a;\n var obj = (_a = {}, _a[xField] = k[xField], _a[seriesField] = d, _a[d] = k[d], _a);\n hopeData.push(obj);\n });\n });\n var groupData = Object.values(groupBy(hopeData, seriesField));\n var _a = groupData[0],\n data1 = _a === void 0 ? [] : _a,\n _b = groupData[1],\n data2 = _b === void 0 ? [] : _b;\n return reverse ? [data1.reverse(), data2.reverse()] : [data1, data2];\n}\n/**\n * 是否横向,默认空为横向\n * @param layout\n */\nexport function isHorizontal(layout) {\n return layout !== 'vertical';\n}\n/**\n * 多 view 进行同步 padding 的自定义逻辑\n * @param chart\n * @param views\n * @param p\n */\nexport function syncViewPadding(chart, views, p) {\n var v1 = views[0],\n v2 = views[1];\n var p1 = v1.autoPadding;\n var p2 = v2.autoPadding;\n var _a = chart.__axisPosition,\n layout = _a.layout,\n position = _a.position;\n // 目前只能根据布局的比例来判断 layout\n if (isHorizontal(layout) && position === 'top') {\n /**\n * 保证 v1 的 left 和 v2 right 的间隔相等,因为 v1 有轴\n * position top 即为 v1 左边,中间间距设置就为 0\n */\n v1.autoPadding = p.instance(p1.top, 0, p1.bottom, p1.left);\n v2.autoPadding = p.instance(p2.top, p1.left, p2.bottom, 0);\n }\n if (isHorizontal(layout) && position === 'bottom') {\n /**\n * 保证 v1 的 left 和 v2 right 的间隔相等,因为 v1 有轴\n * position bottom 即为 v1 的右边,v1 right = right / 2 v2 left = right / 2\n * + 5 是为了 让那个轴不要太贴近了,更好看\n */\n v1.autoPadding = p.instance(p1.top, p1.right / 2 + 5, p1.bottom, p1.left);\n v2.autoPadding = p.instance(p2.top, p2.right, p2.bottom, p1.right / 2 + 5);\n }\n if (!isHorizontal(layout) && position === 'bottom') {\n /**\n * 保证 v1 的 left 和 v2 left 的间隔相等 left 取最大值\n * position bottom 即为 v1 下边,v1 bottom = bottom / 2 v2 top = bottom / 2\n * + 5 是为了 让那个轴不要太贴近了,更好看\n */\n var left = p1.left >= p2.left ? p1.left : p2.left;\n v1.autoPadding = p.instance(p1.top, p1.right, p1.bottom / 2 + 5, left);\n v2.autoPadding = p.instance(p1.bottom / 2 + 5, p2.right, p2.bottom, left);\n }\n // 垂直状态,不建议设置position 为 top, 还是做个兼容处理\n if (!isHorizontal(layout) && position === 'top') {\n var left = p1.left >= p2.left ? p1.left : p2.left;\n v1.autoPadding = p.instance(p1.top, p1.right, 0, left);\n v2.autoPadding = p.instance(0, p2.right, p1.top, left);\n }\n}","import { __assign, __rest } from \"tslib\";\nimport { get, keys } from '@antv/util';\nimport { animation as commonAnimation, interaction as commonInteraction, limitInPlot as commonLimitInPlot, scale, theme as commonTheme, tooltip } from '../../adaptor/common';\nimport { interval } from '../../adaptor/geometries';\nimport { deepAssign, findGeometry, findViewById, flow, transformLabel } from '../../utils';\nimport { FIRST_AXES_VIEW, SECOND_AXES_VIEW, SERIES_FIELD_KEY } from './constant';\nimport { isHorizontal, transformData } from './utils';\n/**\n * geometry 处理\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var data = options.data,\n xField = options.xField,\n yField = options.yField,\n color = options.color,\n barStyle = options.barStyle,\n widthRatio = options.widthRatio,\n legend = options.legend,\n layout = options.layout;\n // 处理数据\n var groupData = transformData(xField, yField, SERIES_FIELD_KEY, data, isHorizontal(layout));\n // 在创建子 view 执行后不行,需要在前面处理 legend\n if (legend) {\n chart.legend(SERIES_FIELD_KEY, legend);\n } else if (legend === false) {\n chart.legend(false);\n }\n // 创建 view\n var firstView;\n var secondView;\n var firstViewData = groupData[0],\n secondViewData = groupData[1];\n // 横向\n if (isHorizontal(layout)) {\n firstView = chart.createView({\n region: {\n start: {\n x: 0,\n y: 0\n },\n end: {\n x: 0.5,\n y: 1\n }\n },\n id: FIRST_AXES_VIEW\n });\n firstView.coordinate().transpose().reflect('x');\n secondView = chart.createView({\n region: {\n start: {\n x: 0.5,\n y: 0\n },\n end: {\n x: 1,\n y: 1\n }\n },\n id: SECOND_AXES_VIEW\n });\n secondView.coordinate().transpose();\n // @说明: 测试发现,横向因为轴的反转,需要数据也反转,不然会图形渲染是反的(翻转操作进入到 transform 中处理)\n firstView.data(firstViewData);\n secondView.data(secondViewData);\n } else {\n // 纵向\n firstView = chart.createView({\n region: {\n start: {\n x: 0,\n y: 0\n },\n end: {\n x: 1,\n y: 0.5\n }\n },\n id: FIRST_AXES_VIEW\n });\n secondView = chart.createView({\n region: {\n start: {\n x: 0,\n y: 0.5\n },\n end: {\n x: 1,\n y: 1\n }\n },\n id: SECOND_AXES_VIEW\n });\n secondView.coordinate().reflect('y');\n firstView.data(firstViewData);\n secondView.data(secondViewData);\n }\n var left = deepAssign({}, params, {\n chart: firstView,\n options: {\n widthRatio: widthRatio,\n xField: xField,\n yField: yField[0],\n seriesField: SERIES_FIELD_KEY,\n interval: {\n color: color,\n style: barStyle\n }\n }\n });\n interval(left);\n var right = deepAssign({}, params, {\n chart: secondView,\n options: {\n xField: xField,\n yField: yField[1],\n seriesField: SERIES_FIELD_KEY,\n widthRatio: widthRatio,\n interval: {\n color: color,\n style: barStyle\n }\n }\n });\n interval(right);\n return params;\n}\n/**\n * meta 配置\n * - 对称条形图对数据进行了处理,通过 SERIES_FIELD_KEY 来对两条 yField 数据进行分类\n * @param params\n */\nfunction meta(params) {\n var _a, _b, _c;\n var options = params.options,\n chart = params.chart;\n var xAxis = options.xAxis,\n yAxis = options.yAxis,\n xField = options.xField,\n yField = options.yField;\n var firstView = findViewById(chart, FIRST_AXES_VIEW);\n var secondView = findViewById(chart, SECOND_AXES_VIEW);\n var aliasMap = {};\n keys((options === null || options === void 0 ? void 0 : options.meta) || {}).map(function (metaKey) {\n if (get(options === null || options === void 0 ? void 0 : options.meta, [metaKey, 'alias'])) {\n aliasMap[metaKey] = options.meta[metaKey].alias;\n }\n });\n chart.scale((_a = {}, _a[SERIES_FIELD_KEY] = {\n sync: true,\n formatter: function formatter(v) {\n return get(aliasMap, v, v);\n }\n }, _a));\n scale((_b = {}, _b[xField] = xAxis, _b[yField[0]] = yAxis[yField[0]], _b))(deepAssign({}, params, {\n chart: firstView\n }));\n scale((_c = {}, _c[xField] = xAxis, _c[yField[1]] = yAxis[yField[1]], _c))(deepAssign({}, params, {\n chart: secondView\n }));\n return params;\n}\n/**\n * axis 配置\n * @param params\n */\nfunction axis(params) {\n var chart = params.chart,\n options = params.options;\n var xAxis = options.xAxis,\n yAxis = options.yAxis,\n xField = options.xField,\n yField = options.yField,\n layout = options.layout;\n var firstView = findViewById(chart, FIRST_AXES_VIEW);\n var secondView = findViewById(chart, SECOND_AXES_VIEW);\n // 第二个 view axis 始终隐藏; 注意 bottom 的时候,只隐藏 label,其他共用配置\n // @ts-ignore\n if ((xAxis === null || xAxis === void 0 ? void 0 : xAxis.position) === 'bottom') {\n // fixme 直接设置 label: null 会导致 tickLine 无法显示\n secondView.axis(xField, __assign(__assign({}, xAxis), {\n label: {\n formatter: function formatter() {\n return '';\n }\n }\n }));\n } else {\n secondView.axis(xField, false);\n }\n // 为 false 则是不显示 firstView 轴\n if (xAxis === false) {\n firstView.axis(xField, false);\n } else {\n firstView.axis(xField, __assign({\n // 不同布局 firstView 的坐标轴显示位置\n position: isHorizontal(layout) ? 'top' : 'bottom'\n }, xAxis));\n }\n if (yAxis === false) {\n firstView.axis(yField[0], false);\n secondView.axis(yField[1], false);\n } else {\n firstView.axis(yField[0], yAxis[yField[0]]);\n secondView.axis(yField[1], yAxis[yField[1]]);\n }\n /**\n * 这个注入,主要是在syncViewPadding时候拿到相对应的配置:布局和轴的位置\n * TODO 之后希望 g2 View 对象可以开放 setter 可以设置一些需要的东西\n */\n //@ts-ignore\n chart.__axisPosition = {\n position: firstView.getOptions().axes[xField].position,\n layout: layout\n };\n return params;\n}\n/**\n * interaction 配置\n * @param params\n */\nexport function interaction(params) {\n var chart = params.chart;\n commonInteraction(deepAssign({}, params, {\n chart: findViewById(chart, FIRST_AXES_VIEW)\n }));\n commonInteraction(deepAssign({}, params, {\n chart: findViewById(chart, SECOND_AXES_VIEW)\n }));\n return params;\n}\n/**\n * limitInPlot\n * @param params\n */\nexport function limitInPlot(params) {\n var chart = params.chart,\n options = params.options;\n var yField = options.yField,\n yAxis = options.yAxis;\n commonLimitInPlot(deepAssign({}, params, {\n chart: findViewById(chart, FIRST_AXES_VIEW),\n options: {\n yAxis: yAxis[yField[0]]\n }\n }));\n commonLimitInPlot(deepAssign({}, params, {\n chart: findViewById(chart, SECOND_AXES_VIEW),\n options: {\n yAxis: yAxis[yField[1]]\n }\n }));\n return params;\n}\n/**\n * theme\n * @param params\n */\nexport function theme(params) {\n var chart = params.chart;\n commonTheme(deepAssign({}, params, {\n chart: findViewById(chart, FIRST_AXES_VIEW)\n }));\n commonTheme(deepAssign({}, params, {\n chart: findViewById(chart, SECOND_AXES_VIEW)\n }));\n commonTheme(params);\n return params;\n}\n/**\n * animation\n * @param params\n */\nexport function animation(params) {\n var chart = params.chart;\n commonAnimation(deepAssign({}, params, {\n chart: findViewById(chart, FIRST_AXES_VIEW)\n }));\n commonAnimation(deepAssign({}, params, {\n chart: findViewById(chart, SECOND_AXES_VIEW)\n }));\n return params;\n}\n/**\n * label 配置 (1. 设置 offset 偏移量默认值 2. leftView 偏移量需要 *= -1)\n * @param params\n */\nfunction label(params) {\n var _this = this;\n var _a, _b;\n var chart = params.chart,\n options = params.options;\n var label = options.label,\n yField = options.yField,\n layout = options.layout;\n var firstView = findViewById(chart, FIRST_AXES_VIEW);\n var secondView = findViewById(chart, SECOND_AXES_VIEW);\n var leftGeometry = findGeometry(firstView, 'interval');\n var rightGeometry = findGeometry(secondView, 'interval');\n if (!label) {\n leftGeometry.label(false);\n rightGeometry.label(false);\n } else {\n var callback = label.callback,\n cfg_1 = __rest(label, [\"callback\"]);\n /** ---- 设置默认配置 ---- */\n // 默认居中\n if (!cfg_1.position) {\n cfg_1.position = 'middle';\n }\n if (cfg_1.offset === undefined) {\n cfg_1.offset = 2;\n }\n /** ---- leftView label 设置 ---- */\n var leftLabelCfg = __assign({}, cfg_1);\n if (isHorizontal(layout)) {\n // 设置 textAlign 默认值\n var textAlign = ((_a = leftLabelCfg.style) === null || _a === void 0 ? void 0 : _a.textAlign) || (cfg_1.position === 'middle' ? 'center' : 'left');\n cfg_1.style = deepAssign({}, cfg_1.style, {\n textAlign: textAlign\n });\n var textAlignMap = {\n left: 'right',\n right: 'left',\n center: 'center'\n };\n leftLabelCfg.style = deepAssign({}, leftLabelCfg.style, {\n textAlign: textAlignMap[textAlign]\n });\n } else {\n var positionMap_1 = {\n top: 'bottom',\n bottom: 'top',\n middle: 'middle'\n };\n if (typeof cfg_1.position === 'string') {\n cfg_1.position = positionMap_1[cfg_1.position];\n } else if (typeof cfg_1.position === 'function') {\n cfg_1.position = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return positionMap_1[cfg_1.position.apply(_this, args)];\n };\n }\n // 设置 textBaseline 默认值\n var textBaseline = ((_b = leftLabelCfg.style) === null || _b === void 0 ? void 0 : _b.textBaseline) || 'bottom';\n leftLabelCfg.style = deepAssign({}, leftLabelCfg.style, {\n textBaseline: textBaseline\n });\n var textBaselineMap = {\n top: 'bottom',\n bottom: 'top',\n middle: 'middle'\n };\n cfg_1.style = deepAssign({}, cfg_1.style, {\n textBaseline: textBaselineMap[textBaseline]\n });\n }\n leftGeometry.label({\n fields: [yField[0]],\n callback: callback,\n cfg: transformLabel(leftLabelCfg)\n });\n rightGeometry.label({\n fields: [yField[1]],\n callback: callback,\n cfg: transformLabel(cfg_1)\n });\n }\n return params;\n}\n/**\n * 对称条形图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n // flow 的方式处理所有的配置到 G2 API\n return flow(geometry, meta, axis, limitInPlot, theme, label, tooltip, interaction, animation)(params);\n}","import { __extends } from \"tslib\";\nimport { Event, VIEW_LIFE_CIRCLE } from '@antv/g2';\nimport { Plot } from '../../core/plot';\nimport { deepAssign, findViewById } from '../../utils';\nimport { adaptor } from './adaptor';\nimport { FIRST_AXES_VIEW, SECOND_AXES_VIEW, SERIES_FIELD_KEY } from './constant';\nimport { isHorizontal, syncViewPadding, transformData } from './utils';\nvar BidirectionalBar = /** @class */function (_super) {\n __extends(BidirectionalBar, _super);\n function BidirectionalBar() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'bidirectional-bar';\n return _this;\n }\n /**\n * 获取 默认配置项\n * 供外部使用\n */\n BidirectionalBar.getDefaultOptions = function () {\n return deepAssign({}, _super.getDefaultOptions.call(this), {\n syncViewPadding: syncViewPadding\n });\n };\n /**\n * @override\n */\n BidirectionalBar.prototype.changeData = function (data) {\n if (data === void 0) {\n data = [];\n }\n this.chart.emit(VIEW_LIFE_CIRCLE.BEFORE_CHANGE_DATA, Event.fromData(this.chart, VIEW_LIFE_CIRCLE.BEFORE_CHANGE_DATA, null));\n // 更新options\n this.updateOption({\n data: data\n });\n var _a = this.options,\n xField = _a.xField,\n yField = _a.yField,\n layout = _a.layout;\n // 处理数据\n var groupData = transformData(xField, yField, SERIES_FIELD_KEY, data, isHorizontal(layout));\n var firstViewData = groupData[0],\n secondViewData = groupData[1];\n var firstView = findViewById(this.chart, FIRST_AXES_VIEW);\n var secondView = findViewById(this.chart, SECOND_AXES_VIEW);\n // 更新对应view的data\n firstView.data(firstViewData);\n secondView.data(secondViewData);\n // 重新渲染\n this.chart.render(true);\n this.chart.emit(VIEW_LIFE_CIRCLE.AFTER_CHANGE_DATA, Event.fromData(this.chart, VIEW_LIFE_CIRCLE.AFTER_CHANGE_DATA, null));\n };\n BidirectionalBar.prototype.getDefaultOptions = function () {\n return BidirectionalBar.getDefaultOptions();\n };\n /**\n * 获取对称条形图的适配器\n */\n BidirectionalBar.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n /** 对称条形图分类字段 */\n BidirectionalBar.SERIES_FIELD_KEY = SERIES_FIELD_KEY;\n return BidirectionalBar;\n}(Plot);\nexport { BidirectionalBar };","var _a;\nimport { Plot } from '../../core/plot';\nimport { deepAssign } from '../../utils';\nexport var BOX_RANGE = '$$range$$';\nexport var BOX_RANGE_ALIAS = 'low-q1-median-q3-high';\nexport var BOX_SYNC_NAME = '$$y_outliers$$';\nexport var OUTLIERS_VIEW_ID = 'outliers_view';\n/**\n * 面积图默认配置项\n */\nexport var DEFAULT_OPTIONS = deepAssign({}, Plot.getDefaultOptions(), {\n meta: (_a = {}, _a[BOX_RANGE] = {\n min: 0,\n alias: BOX_RANGE_ALIAS\n }, _a),\n // 默认区域交互\n interactions: [{\n type: 'active-region'\n }],\n // 默认 tooltips 共享,不显示 markers\n tooltip: {\n showMarkers: false,\n shared: true\n },\n boxStyle: {\n lineWidth: 1\n }\n});","import { map } from '@antv/util';\nimport { BOX_RANGE } from './constant';\n/**\n * @desc 将数据转换为 box 需要的的图表数据,如果yField为数组,从data中解构出对应数组值并写入data,否则直接返回data\n * @param data\n * @param yField\n */\nexport var transformData = function transformData(data, yField) {\n var newData = data;\n // formate data when `yField` is Array\n if (Array.isArray(yField)) {\n var low_1 = yField[0],\n q1_1 = yField[1],\n median_1 = yField[2],\n q3_1 = yField[3],\n high_1 = yField[4];\n newData = map(data, function (obj) {\n obj[BOX_RANGE] = [obj[low_1], obj[q1_1], obj[median_1], obj[q3_1], obj[high_1]];\n return obj;\n });\n }\n return newData;\n};","import { __assign } from \"tslib\";\nimport { isArray } from '@antv/util';\nimport { animation, annotation, interaction, theme, tooltip } from '../../adaptor/common';\nimport { point, schema } from '../../adaptor/geometries';\nimport { AXIS_META_CONFIG_KEYS } from '../../constant';\nimport { deepAssign, flow, pick } from '../../utils';\nimport { BOX_RANGE, BOX_SYNC_NAME, OUTLIERS_VIEW_ID } from './constant';\nimport { transformData } from './utils';\n/**\n * 字段\n * @param params\n */\nfunction field(params) {\n var chart = params.chart,\n options = params.options;\n var xField = options.xField,\n yField = options.yField,\n groupField = options.groupField,\n color = options.color,\n tooltip = options.tooltip,\n boxStyle = options.boxStyle;\n chart.data(transformData(options.data, yField));\n var yFieldName = isArray(yField) ? BOX_RANGE : yField;\n var rawFields = yField ? isArray(yField) ? yField : [yField] : [];\n var tooltipOptions = tooltip;\n if (tooltipOptions !== false) {\n tooltipOptions = deepAssign({}, {\n fields: isArray(yField) ? yField : []\n }, tooltipOptions);\n }\n var ext = schema(deepAssign({}, params, {\n options: {\n xField: xField,\n yField: yFieldName,\n seriesField: groupField,\n tooltip: tooltipOptions,\n rawFields: rawFields,\n // 只有异常点视图展示 label\n label: false,\n schema: {\n shape: 'box',\n color: color,\n style: boxStyle\n }\n }\n })).ext;\n if (groupField) {\n ext.geometry.adjust('dodge');\n }\n return params;\n}\n/**\n * 创建异常点 view\n */\nfunction outliersPoint(params) {\n var chart = params.chart,\n options = params.options;\n var xField = options.xField,\n data = options.data,\n outliersField = options.outliersField,\n outliersStyle = options.outliersStyle,\n padding = options.padding,\n label = options.label;\n if (!outliersField) return params;\n var outliersView = chart.createView({\n padding: padding,\n id: OUTLIERS_VIEW_ID\n });\n var outliersViewData = data.reduce(function (ret, datum) {\n var outliersData = datum[outliersField];\n outliersData.forEach(function (d) {\n var _a;\n return ret.push(__assign(__assign({}, datum), (_a = {}, _a[outliersField] = d, _a)));\n });\n return ret;\n }, []);\n outliersView.data(outliersViewData);\n point({\n chart: outliersView,\n options: {\n xField: xField,\n yField: outliersField,\n point: {\n shape: 'circle',\n style: outliersStyle\n },\n label: label\n }\n });\n outliersView.axis(false);\n return params;\n}\n/**\n * meta 配置\n * @param params\n */\nfunction meta(params) {\n var _a, _b;\n var chart = params.chart,\n options = params.options;\n var meta = options.meta,\n xAxis = options.xAxis,\n yAxis = options.yAxis,\n xField = options.xField,\n yField = options.yField,\n outliersField = options.outliersField;\n var yFieldName = Array.isArray(yField) ? BOX_RANGE : yField;\n var baseMeta = {};\n // make yField and outliersField share y mate\n if (outliersField) {\n var syncName = BOX_SYNC_NAME;\n baseMeta = (_a = {}, _a[outliersField] = {\n sync: syncName,\n nice: true\n }, _a[yFieldName] = {\n sync: syncName,\n nice: true\n }, _a);\n }\n var scales = deepAssign(baseMeta, meta, (_b = {}, _b[xField] = pick(xAxis, AXIS_META_CONFIG_KEYS), _b[yFieldName] = pick(yAxis, AXIS_META_CONFIG_KEYS), _b));\n chart.scale(scales);\n return params;\n}\n/**\n * axis 配置\n * @param params\n */\nfunction axis(params) {\n var chart = params.chart,\n options = params.options;\n var xAxis = options.xAxis,\n yAxis = options.yAxis,\n xField = options.xField,\n yField = options.yField;\n var yFieldName = Array.isArray(yField) ? BOX_RANGE : yField;\n // 为 false 则是不显示轴\n if (xAxis === false) {\n chart.axis(xField, false);\n } else {\n chart.axis(xField, xAxis);\n }\n if (yAxis === false) {\n chart.axis(BOX_RANGE, false);\n } else {\n chart.axis(yFieldName, yAxis);\n }\n return params;\n}\n/**\n * legend 配置\n * @param params\n */\nexport function legend(params) {\n var chart = params.chart,\n options = params.options;\n var legend = options.legend,\n groupField = options.groupField;\n if (groupField) {\n if (legend) {\n chart.legend(groupField, legend);\n } else {\n // Grouped Box Chart default has legend, and it's position is `bottom`\n chart.legend(groupField, {\n position: 'bottom'\n });\n }\n } else {\n chart.legend(false);\n }\n return params;\n}\n/**\n * 箱型图适配器\n * @param params\n */\nexport function adaptor(params) {\n return flow(field, outliersPoint, meta, axis, legend, tooltip, annotation(), interaction, animation, theme)(params);\n}","import { __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { adaptor } from './adaptor';\nimport { DEFAULT_OPTIONS, OUTLIERS_VIEW_ID } from './constant';\nimport { transformData } from './utils';\nvar Box = /** @class */function (_super) {\n __extends(Box, _super);\n function Box() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'box';\n return _this;\n }\n /**\n * 获取 默认配置项\n * 供外部使用\n */\n Box.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * @override\n * @param data\n */\n Box.prototype.changeData = function (data) {\n this.updateOption({\n data: data\n });\n var yField = this.options.yField;\n var outliersView = this.chart.views.find(function (v) {\n return v.id === OUTLIERS_VIEW_ID;\n });\n if (outliersView) {\n outliersView.data(data);\n }\n this.chart.changeData(transformData(data, yField));\n };\n /**\n * 获取 箱型图 默认配置项\n */\n Box.prototype.getDefaultOptions = function () {\n return Box.getDefaultOptions();\n };\n /**\n * 获取 箱型图 的适配器\n */\n Box.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Box;\n}(Plot);\nexport { Box };","import \"core-js/modules/es.array.flat.js\";\nimport \"core-js/modules/es.array.unscopables.flat.js\";\n/**\n * 获取分类字段 key 值 一个分类值的时候, 返回非索引 key 值,在 tooltip 不做索引区分\n * @param values 数据量\n * @param field 指标字段\n * @param index 索引\n * @returns string\n */\nfunction getSeriesFieldKey(values, field, index) {\n return values.length > 1 ? \"\".concat(field, \"_\").concat(index) : \"\".concat(field);\n}\n/**\n * bullet 处理数据\n * @param options\n */\nexport function transformData(options) {\n var data = options.data,\n xField = options.xField,\n measureField = options.measureField,\n rangeField = options.rangeField,\n targetField = options.targetField,\n layout = options.layout;\n var ds = [];\n var scales = [];\n data.forEach(function (item, index) {\n // 构建 title * range\n var rangeValues = [item[rangeField]].flat();\n rangeValues.sort(function (a, b) {\n return a - b;\n });\n rangeValues.forEach(function (d, i) {\n var _a;\n var range = i === 0 ? d : rangeValues[i] - rangeValues[i - 1];\n ds.push((_a = {\n rKey: \"\".concat(rangeField, \"_\").concat(i)\n }, _a[xField] = xField ? item[xField] : String(index), _a[rangeField] = range, _a));\n });\n // 构建 title * measure\n var measureValues = [item[measureField]].flat();\n measureValues.forEach(function (d, i) {\n var _a;\n ds.push((_a = {\n mKey: getSeriesFieldKey(measureValues, measureField, i)\n }, _a[xField] = xField ? item[xField] : String(index), _a[measureField] = d, _a));\n });\n // 构建 title * target\n var targetValues = [item[targetField]].flat();\n targetValues.forEach(function (d, i) {\n var _a;\n ds.push((_a = {\n tKey: getSeriesFieldKey(targetValues, targetField, i)\n }, _a[xField] = xField ? item[xField] : String(index), _a[targetField] = d, _a));\n });\n // 为了取最大值和最小值,先存储\n scales.push(item[rangeField], item[measureField], item[targetField]);\n });\n // scales 是嵌套的需要拍平\n var min = Math.min.apply(Math, scales.flat(Infinity));\n var max = Math.max.apply(Math, scales.flat(Infinity));\n // min 大于 0 从 0 开始\n min = min > 0 ? 0 : min;\n // 垂直情况,需要反转数据\n if (layout === 'vertical') {\n ds.reverse();\n }\n return {\n min: min,\n max: max,\n ds: ds\n };\n}","import { __assign } from \"tslib\";\nimport { get, isFunction } from '@antv/util';\nimport { animation, interaction, scale, theme, tooltip } from '../../adaptor/common';\nimport { interval, point } from '../../adaptor/geometries';\nimport { deepAssign, flow, transformLabel } from '../../utils';\nimport { transformData } from './utils';\n/**\n * geometry 处理\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var bulletStyle = options.bulletStyle,\n targetField = options.targetField,\n rangeField = options.rangeField,\n measureField = options.measureField,\n xField = options.xField,\n color = options.color,\n layout = options.layout,\n size = options.size,\n label = options.label;\n // 处理数据\n var _a = transformData(options),\n min = _a.min,\n max = _a.max,\n ds = _a.ds;\n chart.data(ds);\n // rangeGeometry\n var r = deepAssign({}, params, {\n options: {\n xField: xField,\n yField: rangeField,\n seriesField: 'rKey',\n isStack: true,\n label: get(label, 'range'),\n interval: {\n color: get(color, 'range'),\n style: get(bulletStyle, 'range'),\n size: get(size, 'range')\n }\n }\n });\n interval(r);\n // 范围值的 tooltip 隐藏掉\n chart.geometries[0].tooltip(false);\n // measureGeometry\n var m = deepAssign({}, params, {\n options: {\n xField: xField,\n yField: measureField,\n seriesField: 'mKey',\n isStack: true,\n label: get(label, 'measure'),\n interval: {\n color: get(color, 'measure'),\n style: get(bulletStyle, 'measure'),\n size: get(size, 'measure')\n }\n }\n });\n interval(m);\n // targetGeometry\n var t = deepAssign({}, params, {\n options: {\n xField: xField,\n yField: targetField,\n seriesField: 'tKey',\n label: get(label, 'target'),\n point: {\n color: get(color, 'target'),\n style: get(bulletStyle, 'target'),\n size: isFunction(get(size, 'target')) ? function (data) {\n return get(size, 'target')(data) / 2;\n } : get(size, 'target') / 2,\n shape: layout === 'horizontal' ? 'line' : 'hyphen'\n }\n }\n });\n point(t);\n // 水平的时候,要转换坐标轴\n if (layout === 'horizontal') {\n chart.coordinate().transpose();\n }\n return __assign(__assign({}, params), {\n ext: {\n data: {\n min: min,\n max: max\n }\n }\n });\n}\n/**\n * meta 配置\n * @param params\n */\nexport function meta(params) {\n var _a, _b;\n var options = params.options,\n ext = params.ext;\n var xAxis = options.xAxis,\n yAxis = options.yAxis,\n targetField = options.targetField,\n rangeField = options.rangeField,\n measureField = options.measureField,\n xField = options.xField;\n var extData = ext.data;\n return flow(scale((_a = {}, _a[xField] = xAxis, _a[measureField] = yAxis, _a), (_b = {}, _b[measureField] = {\n min: extData === null || extData === void 0 ? void 0 : extData.min,\n max: extData === null || extData === void 0 ? void 0 : extData.max,\n sync: true\n }, _b[targetField] = {\n sync: \"\".concat(measureField)\n }, _b[rangeField] = {\n sync: \"\".concat(measureField)\n }, _b)))(params);\n}\n/**\n * axis 配置\n * @param params\n */\nfunction axis(params) {\n var chart = params.chart,\n options = params.options;\n var xAxis = options.xAxis,\n yAxis = options.yAxis,\n xField = options.xField,\n measureField = options.measureField,\n rangeField = options.rangeField,\n targetField = options.targetField;\n chart.axis(\"\".concat(rangeField), false);\n chart.axis(\"\".concat(targetField), false);\n // 为 false 则是不显示轴\n if (xAxis === false) {\n chart.axis(\"\".concat(xField), false);\n } else {\n chart.axis(\"\".concat(xField), xAxis);\n }\n if (yAxis === false) {\n chart.axis(\"\".concat(measureField), false);\n } else {\n chart.axis(\"\".concat(measureField), yAxis);\n }\n return params;\n}\n/**\n * legend 配置\n * @param params\n */\nfunction legend(params) {\n var chart = params.chart,\n options = params.options;\n var legend = options.legend;\n chart.removeInteraction('legend-filter');\n // @TODO 后续看是否内部自定义一个 legend\n chart.legend(legend);\n // 默认关闭掉所在 color 字段的 legend, 从而不影响自定义的legend\n chart.legend('rKey', false);\n chart.legend('mKey', false);\n chart.legend('tKey', false);\n return params;\n}\n/**\n * label 配置\n * @param params\n */\nfunction label(params) {\n var chart = params.chart,\n options = params.options;\n var label = options.label,\n measureField = options.measureField,\n targetField = options.targetField,\n rangeField = options.rangeField;\n var _a = chart.geometries,\n rangeGeometry = _a[0],\n measureGeometry = _a[1],\n targetGeometry = _a[2];\n if (get(label, 'range')) {\n rangeGeometry.label(\"\".concat(rangeField), __assign({\n layout: [{\n type: 'limit-in-plot'\n }]\n }, transformLabel(label.range)));\n } else {\n rangeGeometry.label(false);\n }\n if (get(label, 'measure')) {\n measureGeometry.label(\"\".concat(measureField), __assign({\n layout: [{\n type: 'limit-in-plot'\n }]\n }, transformLabel(label.measure)));\n } else {\n measureGeometry.label(false);\n }\n if (get(label, 'target')) {\n targetGeometry.label(\"\".concat(targetField), __assign({\n layout: [{\n type: 'limit-in-plot'\n }]\n }, transformLabel(label.target)));\n } else {\n targetGeometry.label(false);\n }\n return params;\n}\n/**\n * 子弹图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n // flow 的方式处理所有的配置到 G2 API\n flow(geometry, meta, axis, legend, theme, label, tooltip, interaction, animation)(params);\n}","import { Plot } from '../../core/plot';\nimport { deepAssign } from '../../utils';\n/**\n * 默认配置项\n */\nexport var DEFAULT_OPTIONS = deepAssign({}, Plot.getDefaultOptions(), {\n layout: 'horizontal',\n size: {\n range: 30,\n measure: 20,\n target: 20\n },\n xAxis: {\n tickLine: false,\n line: null\n },\n bulletStyle: {\n range: {\n fillOpacity: 0.5\n }\n },\n label: {\n measure: {\n position: 'right'\n }\n },\n tooltip: {\n // 默认关闭\n showMarkers: false\n }\n});","/*\n * for Arc Diagram (edges without weight) / Chord Diagram (edges with source and target weight)\n * graph data required (nodes, edges)\n */\nimport { assign, forIn, isFunction } from '@antv/util';\nvar DEFAULT_OPTIONS = {\n y: 0,\n nodeWidthRatio: 0.05,\n weight: false,\n nodePaddingRatio: 0.1,\n id: function id(node) {\n return node.id;\n },\n source: function source(edge) {\n return edge.source;\n },\n target: function target(edge) {\n return edge.target;\n },\n sourceWeight: function sourceWeight(edge) {\n return edge.value || 1;\n },\n targetWeight: function targetWeight(edge) {\n return edge.value || 1;\n },\n sortBy: null // optional, id | weight | frequency | {function}\n};\n/**\n * 处理节点的value、edges\n * @param nodeById\n * @param edges\n * @param options\n */\nfunction processGraph(nodeById, edges, options) {\n forIn(nodeById, function (node, id) {\n // in edges, out edges\n node.inEdges = edges.filter(function (edge) {\n return \"\".concat(options.target(edge)) === \"\".concat(id);\n });\n node.outEdges = edges.filter(function (edge) {\n return \"\".concat(options.source(edge)) === \"\".concat(id);\n });\n // frequency\n node.edges = node.outEdges.concat(node.inEdges);\n node.frequency = node.edges.length;\n // weight\n node.value = 0;\n node.inEdges.forEach(function (edge) {\n node.value += options.targetWeight(edge);\n });\n node.outEdges.forEach(function (edge) {\n node.value += options.sourceWeight(edge);\n });\n });\n}\n/**\n * 节点排序\n * @param nodes\n * @param options\n */\nfunction sortNodes(nodes, options) {\n var sortMethods = {\n weight: function weight(a, b) {\n return b.value - a.value;\n },\n frequency: function frequency(a, b) {\n return b.frequency - a.frequency;\n },\n id: function id(a, b) {\n return \"\".concat(options.id(a)).localeCompare(\"\".concat(options.id(b)));\n }\n };\n var method = sortMethods[options.sortBy];\n if (!method && isFunction(options.sortBy)) {\n method = options.sortBy;\n }\n if (method) {\n nodes.sort(method);\n }\n}\nfunction layoutNodes(nodes, options) {\n var len = nodes.length;\n if (!len) {\n throw new TypeError(\"Invalid nodes: it's empty!\");\n }\n if (options.weight) {\n var nodePaddingRatio_1 = options.nodePaddingRatio;\n if (nodePaddingRatio_1 < 0 || nodePaddingRatio_1 >= 1) {\n throw new TypeError('Invalid nodePaddingRatio: it must be in range [0, 1)!');\n }\n var margin_1 = nodePaddingRatio_1 / (2 * len);\n var nodeWidthRatio_1 = options.nodeWidthRatio;\n if (nodeWidthRatio_1 <= 0 || nodeWidthRatio_1 >= 1) {\n throw new TypeError('Invalid nodeWidthRatio: it must be in range (0, 1)!');\n }\n var totalValue_1 = 0;\n nodes.forEach(function (node) {\n totalValue_1 += node.value;\n });\n nodes.forEach(function (node) {\n node.weight = node.value / totalValue_1;\n node.width = node.weight * (1 - nodePaddingRatio_1);\n node.height = nodeWidthRatio_1;\n });\n nodes.forEach(function (node, index) {\n // x\n var deltaX = 0;\n for (var i = index - 1; i >= 0; i--) {\n deltaX += nodes[i].width + 2 * margin_1;\n }\n var minX = node.minX = margin_1 + deltaX;\n var maxX = node.maxX = node.minX + node.width;\n var minY = node.minY = options.y - nodeWidthRatio_1 / 2;\n var maxY = node.maxY = minY + nodeWidthRatio_1;\n node.x = [minX, maxX, maxX, minX];\n node.y = [minY, minY, maxY, maxY];\n /* points\n * 3---2\n * | |\n * 0---1\n */\n // node.x = minX + 0.5 * node.width;\n // node.y = options.y;\n });\n } else {\n var deltaX_1 = 1 / len;\n nodes.forEach(function (node, index) {\n node.x = (index + 0.5) * deltaX_1;\n node.y = options.y;\n });\n }\n return nodes;\n}\nfunction locatingEdges(nodeById, edges, options) {\n if (options.weight) {\n var valueById_1 = {};\n forIn(nodeById, function (node, id) {\n valueById_1[id] = node.value;\n });\n edges.forEach(function (edge) {\n var sId = options.source(edge);\n var tId = options.target(edge);\n var sNode = nodeById[sId];\n var tNode = nodeById[tId];\n if (sNode && tNode) {\n var sValue = valueById_1[sId];\n var currentSValue = options.sourceWeight(edge);\n var sStart = sNode.minX + (sNode.value - sValue) / sNode.value * sNode.width;\n var sEnd = sStart + currentSValue / sNode.value * sNode.width;\n valueById_1[sId] -= currentSValue;\n var tValue = valueById_1[tId];\n var currentTValue = options.targetWeight(edge);\n var tStart = tNode.minX + (tNode.value - tValue) / tNode.value * tNode.width;\n var tEnd = tStart + currentTValue / tNode.value * tNode.width;\n valueById_1[tId] -= currentTValue;\n var y = options.y;\n edge.x = [sStart, sEnd, tStart, tEnd];\n edge.y = [y, y, y, y];\n // 将edge的source与target的id换为 sourceNode与targetNode\n edge.source = sNode;\n edge.target = tNode;\n }\n });\n } else {\n edges.forEach(function (edge) {\n var sNode = nodeById[options.source(edge)];\n var tNode = nodeById[options.target(edge)];\n if (sNode && tNode) {\n edge.x = [sNode.x, tNode.x];\n edge.y = [sNode.y, tNode.y];\n // 将edge的source与target的id换为 sourceNode与targetNode\n edge.source = sNode;\n edge.target = tNode;\n }\n });\n }\n return edges;\n}\nexport function getDefaultOptions(options) {\n return assign({}, DEFAULT_OPTIONS, options);\n}\nexport function chordLayout(chordLayoutOptions, chordLayoutInputData) {\n var options = getDefaultOptions(chordLayoutOptions);\n var nodeById = {};\n var nodes = chordLayoutInputData.nodes;\n var links = chordLayoutInputData.links;\n nodes.forEach(function (node) {\n var id = options.id(node);\n nodeById[id] = node;\n });\n processGraph(nodeById, links, options);\n sortNodes(nodes, options);\n var outputNodes = layoutNodes(nodes, options);\n var outputLinks = locatingEdges(nodeById, links, options);\n return {\n nodes: outputNodes,\n links: outputLinks\n };\n}","import { __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { adaptor, meta } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constant';\nimport { transformData } from './utils';\nvar Bullet = /** @class */function (_super) {\n __extends(Bullet, _super);\n function Bullet() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'bullet';\n return _this;\n }\n /**\n * 获取 子弹图 默认配置项\n * 供外部使用\n */\n Bullet.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n Bullet.prototype.changeData = function (data) {\n this.updateOption({\n data: data\n });\n var _a = transformData(this.options),\n min = _a.min,\n max = _a.max,\n ds = _a.ds;\n // 处理scale\n meta({\n options: this.options,\n ext: {\n data: {\n min: min,\n max: max\n }\n },\n chart: this.chart\n });\n this.chart.changeData(ds);\n };\n /**\n * 获取子弹图的适配器\n */\n Bullet.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n /**\n * 获取 子弹图 默认配置\n */\n Bullet.prototype.getDefaultOptions = function () {\n return Bullet.getDefaultOptions();\n };\n return Bullet;\n}(Plot);\nexport { Bullet };","import { get } from '@antv/util';\nexport var X_FIELD = 'x';\nexport var Y_FIELD = 'y';\nexport var NODE_COLOR_FIELD = 'name';\nexport var EDGE_COLOR_FIELD = 'source';\nexport var DEFAULT_OPTIONS = {\n nodeStyle: {\n opacity: 1,\n fillOpacity: 1,\n lineWidth: 1\n },\n edgeStyle: {\n opacity: 0.5,\n lineWidth: 2\n },\n label: {\n fields: ['x', 'name'],\n callback: function callback(x, name) {\n var centerX = (x[0] + x[1]) / 2;\n var offsetX = centerX > 0.5 ? -4 : 4;\n return {\n offsetX: offsetX,\n content: name\n };\n },\n labelEmit: true,\n style: {\n fill: '#8c8c8c'\n }\n },\n tooltip: {\n showTitle: false,\n showMarkers: false,\n fields: ['source', 'target', 'value', 'isNode'],\n // 内置:node 不显示 tooltip (业务层自行处理),edge 显示 tooltip\n showContent: function showContent(items) {\n return !get(items, [0, 'data', 'isNode']);\n },\n formatter: function formatter(datum) {\n var source = datum.source,\n target = datum.target,\n value = datum.value;\n return {\n name: \"\".concat(source, \" -> \").concat(target),\n value: value\n };\n }\n },\n interactions: [{\n type: 'element-active'\n }],\n weight: true,\n nodePaddingRatio: 0.1,\n nodeWidthRatio: 0.05\n};","import { __assign, __spreadArray } from \"tslib\";\nimport { interaction, state, theme } from '../../adaptor/common';\nimport { edge, polygon } from '../../adaptor/geometries';\nimport { addViewAnimation, flow, getAllGeometriesRecursively, pick, transformDataToNodeLinkData } from '../../utils';\nimport { chordLayout } from '../../utils/transform/chord';\nimport { EDGE_COLOR_FIELD, NODE_COLOR_FIELD, X_FIELD, Y_FIELD } from './constant';\nfunction transformData(params) {\n // 将弦图数据放到ext中,nodeGeometry edgeGeometry使用\n var options = params.options;\n var data = options.data,\n sourceField = options.sourceField,\n targetField = options.targetField,\n weightField = options.weightField,\n nodePaddingRatio = options.nodePaddingRatio,\n nodeWidthRatio = options.nodeWidthRatio,\n _a = options.rawFields,\n rawFields = _a === void 0 ? [] : _a;\n // 将数据转换为node link格式\n var chordLayoutInputData = transformDataToNodeLinkData(data, sourceField, targetField, weightField);\n var _b = chordLayout({\n weight: true,\n nodePaddingRatio: nodePaddingRatio,\n nodeWidthRatio: nodeWidthRatio\n }, chordLayoutInputData),\n nodes = _b.nodes,\n links = _b.links;\n // 1. 生成绘制node使用数据\n var nodesData = nodes.map(function (node) {\n return __assign(__assign({}, pick(node, __spreadArray(['id', 'x', 'y', 'name'], rawFields, true))), {\n isNode: true\n });\n });\n // 2. 生成 edge 使用数据 (同桑基图)\n var edgesData = links.map(function (link) {\n return __assign(__assign({\n source: link.source.name,\n target: link.target.name,\n name: link.source.name || link.target.name\n }, pick(link, __spreadArray(['x', 'y', 'value'], rawFields, true))), {\n isNode: false\n });\n });\n return __assign(__assign({}, params), {\n ext: __assign(__assign({}, params.ext), {\n // 将chordData放到ext中,方便下面的geometry使用\n chordData: {\n nodesData: nodesData,\n edgesData: edgesData\n }\n })\n });\n}\n/**\n * scale配置\n * @param params 参数\n */\nfunction scale(params) {\n var _a;\n var chart = params.chart;\n chart.scale((_a = {\n x: {\n sync: true,\n nice: true\n },\n y: {\n sync: true,\n nice: true,\n max: 1\n }\n }, _a[NODE_COLOR_FIELD] = {\n sync: 'color'\n }, _a[EDGE_COLOR_FIELD] = {\n sync: 'color'\n }, _a));\n return params;\n}\n/**\n * axis配置\n * @param params 参数\n */\nfunction axis(params) {\n var chart = params.chart;\n chart.axis(false);\n return params;\n}\n/**\n * legend配置\n * @param params 参数\n */\nfunction legend(params) {\n var chart = params.chart;\n chart.legend(false);\n return params;\n}\n/**\n * tooltip配置\n * @param params 参数\n */\nfunction tooltip(params) {\n var chart = params.chart,\n options = params.options;\n var tooltip = options.tooltip;\n chart.tooltip(tooltip);\n return params;\n}\n/**\n * coordinate配置\n * @param params 参数\n */\nfunction coordinate(params) {\n var chart = params.chart;\n chart.coordinate('polar').reflect('y');\n return params;\n}\n/**\n * nodeGeometry配置\n * @param params 参数\n */\nfunction nodeGeometry(params) {\n // node view\n var chart = params.chart,\n options = params.options;\n var nodesData = params.ext.chordData.nodesData;\n var nodeStyle = options.nodeStyle,\n label = options.label,\n tooltip = options.tooltip;\n var nodeView = chart.createView();\n nodeView.data(nodesData);\n // 面\n polygon({\n chart: nodeView,\n options: {\n xField: X_FIELD,\n yField: Y_FIELD,\n seriesField: NODE_COLOR_FIELD,\n polygon: {\n style: nodeStyle\n },\n label: label,\n tooltip: tooltip\n }\n });\n return params;\n}\n/**\n * edgeGeometry配置\n * @param params 参数\n */\nfunction edgeGeometry(params) {\n var chart = params.chart,\n options = params.options;\n var edgesData = params.ext.chordData.edgesData;\n var edgeStyle = options.edgeStyle,\n tooltip = options.tooltip;\n var edgeView = chart.createView();\n edgeView.data(edgesData);\n // edge\n var edgeOptions = {\n xField: X_FIELD,\n yField: Y_FIELD,\n seriesField: EDGE_COLOR_FIELD,\n edge: {\n style: edgeStyle,\n shape: 'arc'\n },\n tooltip: tooltip\n };\n edge({\n chart: edgeView,\n options: edgeOptions\n });\n return params;\n}\nfunction animation(params) {\n var chart = params.chart,\n options = params.options;\n var animation = options.animation;\n addViewAnimation(chart, animation, getAllGeometriesRecursively(chart));\n return params;\n}\n/**\n * 弦图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n // flow 的方式处理所有的配置到 G2 API\n return flow(theme, transformData, coordinate, scale, axis, legend, tooltip, edgeGeometry, nodeGeometry, interaction, state, animation)(params);\n}","import { __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { adaptor } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constant';\n/**\n * 弦图 Chord\n */\nvar Chord = /** @class */function (_super) {\n __extends(Chord, _super);\n function Chord() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'chord';\n return _this;\n }\n /**\n * 获取 面积图 默认配置项\n * 供外部使用\n */\n Chord.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n Chord.prototype.getDefaultOptions = function () {\n return Chord.getDefaultOptions();\n };\n /**\n * 获取适配器\n */\n Chord.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Chord;\n}(Plot);\nexport { Chord };","/** 默认的源字段 */\nexport var RAW_FIELDS = ['x', 'y', 'r', 'name', 'value', 'path', 'depth'];\nexport var DEFAULT_OPTIONS = {\n // 默认按照 name 字段对颜色进行分类\n colorField: 'name',\n autoFit: true,\n pointStyle: {\n lineWidth: 0,\n stroke: '#fff'\n },\n // 默认不开启图例\n legend: false,\n hierarchyConfig: {\n size: [1, 1],\n padding: 0\n },\n label: {\n fields: ['name'],\n layout: {\n type: 'limit-in-shape'\n }\n },\n tooltip: {\n showMarkers: false,\n showTitle: false\n },\n // 默认不可以下钻\n drilldown: {\n enabled: false\n }\n};","import { __assign, __extends } from \"tslib\";\nimport { Action, Util } from '@antv/g2';\nimport { get, isNil, last, size } from '@antv/util';\nimport { deepAssign } from '../../utils/deep-assign';\n// 面包屑文字和分割符'/'之间的距离\nvar PADDING = 4;\n// 面包屑位置距离树图的距离\nvar PADDING_LEFT = 0;\n// 面包屑位置距离树图的顶部距离\nexport var PADDING_TOP = 5;\n/** Group name of breadCrumb: 面包屑 */\nexport var BREAD_CRUMB_NAME = 'drilldown-bread-crumb';\n// 面包屑默认配置\nexport var DEFAULT_BREAD_CRUMB_CONFIG = {\n /** 位置,默认:左上角 */\n position: 'top-left',\n dividerText: '/',\n textStyle: {\n fontSize: 12,\n fill: 'rgba(0, 0, 0, 0.65)',\n cursor: 'pointer'\n },\n activeTextStyle: {\n fill: '#87B5FF'\n }\n};\n/**\n * hierarchy 数据转换的参数\n */\nexport var HIERARCHY_DATA_TRANSFORM_PARAMS = 'hierarchy-data-transform-params';\n/**\n * @description 下钻交互的 action\n * @author liuzhenying\n *\n * 适用于:hierarchy plot\n */\nvar DrillDownAction = /** @class */function (_super) {\n __extends(DrillDownAction, _super);\n function DrillDownAction() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** Action name */\n _this.name = 'drill-down';\n // 存储历史下钻数据\n _this.historyCache = [];\n // 面包屑 group\n _this.breadCrumbGroup = null;\n // 面包屑基础配置\n _this.breadCrumbCfg = DEFAULT_BREAD_CRUMB_CONFIG;\n return _this;\n }\n /**\n * 点击事件, 下钻数据,并绘制面包屑\n */\n DrillDownAction.prototype.click = function () {\n var data = get(this.context, ['event', 'data', 'data']);\n if (!data) return false;\n this.drill(data);\n this.drawBreadCrumb();\n };\n /**\n * 重置位置,初始化及触发 chart afterchangesize 回调时使用\n */\n DrillDownAction.prototype.resetPosition = function () {\n // 当在第一层级未绘制面包屑,此时 changedata 触发 resetPosition 函数,需判断 this.breadCrumbGroup 是否存在\n if (!this.breadCrumbGroup) return;\n var coordinate = this.context.view.getCoordinate();\n var breadCrumbGroup = this.breadCrumbGroup;\n var bbox = breadCrumbGroup.getBBox();\n var position = this.getButtonCfg().position;\n // @todo 后续抽取一个函数来处理,以及增加 margin 或者 padding 的设置\n // 非 polar 的,需要使用 coordinate,除却图表组件\n var point = {\n x: coordinate.start.x,\n y: coordinate.end.y - (bbox.height + PADDING_TOP * 2)\n };\n if (coordinate.isPolar) {\n // 默认,左上角直接出发\n point = {\n x: 0,\n y: 0\n };\n }\n if (position === 'bottom-left') {\n // 涉及到坐标反转的问题\n point = {\n x: coordinate.start.x,\n y: coordinate.start.y\n };\n }\n /** PADDING_LEFT, PADDING_TOP 与画布边缘的距离 */\n var matrix = Util.transform(null, [['t', point.x + PADDING_LEFT, point.y + bbox.height + PADDING_TOP]]);\n breadCrumbGroup.setMatrix(matrix);\n };\n /**\n * 返回上一层\n */\n DrillDownAction.prototype.back = function () {\n if (size(this.historyCache)) {\n this.backTo(this.historyCache.slice(0, -1));\n }\n };\n /**\n * 重置\n */\n DrillDownAction.prototype.reset = function () {\n if (this.historyCache[0]) {\n this.backTo(this.historyCache.slice(0, 1));\n }\n // 清空\n this.historyCache = [];\n this.hideCrumbGroup();\n };\n /**\n * 下钻数据并更新 view 显示层\n * @param nodeInfo 下钻数据\n */\n DrillDownAction.prototype.drill = function (nodeInfo) {\n var view = this.context.view;\n var transformData = get(view, ['interactions', 'drill-down', 'cfg', 'transformData'], function (v) {\n return v;\n });\n // 重新 update 数据\n var drillData = transformData(__assign({\n data: nodeInfo.data\n }, nodeInfo[HIERARCHY_DATA_TRANSFORM_PARAMS]));\n view.changeData(drillData);\n // 存储历史记录\n var historyCache = [];\n var node = nodeInfo;\n while (node) {\n var nodeData = node.data;\n historyCache.unshift({\n id: \"\".concat(nodeData.name, \"_\").concat(node.height, \"_\").concat(node.depth),\n name: nodeData.name,\n // children 是实际数据\n children: transformData(__assign({\n data: nodeData\n }, nodeInfo[HIERARCHY_DATA_TRANSFORM_PARAMS]))\n });\n node = node.parent;\n }\n this.historyCache = (this.historyCache || []).slice(0, -1).concat(historyCache);\n };\n /**\n * 回退事件,点击面包屑时触发\n * @param historyCache 当前要回退到的历史\n */\n DrillDownAction.prototype.backTo = function (historyCache) {\n if (!historyCache || historyCache.length <= 0) {\n return;\n }\n var view = this.context.view;\n var data = last(historyCache).children; // 处理后的数组\n view.changeData(data);\n if (historyCache.length > 1) {\n this.historyCache = historyCache;\n this.drawBreadCrumb();\n } else {\n // 清空\n this.historyCache = [];\n this.hideCrumbGroup();\n }\n };\n /**\n * 获取 mix 默认的配置和用户配置\n */\n DrillDownAction.prototype.getButtonCfg = function () {\n var view = this.context.view;\n var drillDownConfig = get(view, ['interactions', 'drill-down', 'cfg', 'drillDownConfig']);\n return deepAssign(this.breadCrumbCfg, drillDownConfig === null || drillDownConfig === void 0 ? void 0 : drillDownConfig.breadCrumb, this.cfg);\n };\n /**\n * 显示面包屑\n */\n DrillDownAction.prototype.drawBreadCrumb = function () {\n this.drawBreadCrumbGroup();\n this.resetPosition();\n this.breadCrumbGroup.show();\n };\n /**\n * 绘制 Button 和 文本\n */\n DrillDownAction.prototype.drawBreadCrumbGroup = function () {\n var _this = this;\n var config = this.getButtonCfg();\n var cache = this.historyCache;\n // 初始化面包屑 group\n if (!this.breadCrumbGroup) {\n this.breadCrumbGroup = this.context.view.foregroundGroup.addGroup({\n name: BREAD_CRUMB_NAME\n });\n } else {\n this.breadCrumbGroup.clear();\n }\n // 绘制面包屑\n var left = 0;\n cache.forEach(function (record, index) {\n // 添加文本\n var textShape = _this.breadCrumbGroup.addShape({\n type: 'text',\n id: record.id,\n name: \"\".concat(BREAD_CRUMB_NAME, \"_\").concat(record.name, \"_text\"),\n attrs: __assign(__assign({\n text: index === 0 && !isNil(config.rootText) ? config.rootText : record.name\n }, config.textStyle), {\n x: left,\n y: 0\n })\n });\n var textShapeBox = textShape.getBBox();\n left += textShapeBox.width + PADDING;\n // 增加文本事件\n textShape.on('click', function (event) {\n var _a;\n var targetId = event.target.get('id');\n if (targetId !== ((_a = last(cache)) === null || _a === void 0 ? void 0 : _a.id)) {\n var newHistoryCache = cache.slice(0, cache.findIndex(function (d) {\n return d.id === targetId;\n }) + 1);\n _this.backTo(newHistoryCache);\n }\n });\n // active 效果内置\n textShape.on('mouseenter', function (event) {\n var _a;\n var targetId = event.target.get('id');\n if (targetId !== ((_a = last(cache)) === null || _a === void 0 ? void 0 : _a.id)) {\n textShape.attr(config.activeTextStyle);\n } else {\n textShape.attr({\n cursor: 'default'\n });\n }\n });\n textShape.on('mouseleave', function () {\n textShape.attr(config.textStyle);\n });\n if (index < cache.length - 1) {\n // 添加反斜杠\n var dividerShape = _this.breadCrumbGroup.addShape({\n type: 'text',\n name: \"\".concat(config.name, \"_\").concat(record.name, \"_divider\"),\n attrs: __assign(__assign({\n text: config.dividerText\n }, config.textStyle), {\n x: left,\n y: 0\n })\n });\n var dividerBox = dividerShape.getBBox();\n left += dividerBox.width + PADDING;\n }\n });\n };\n /**\n * 隐藏面包屑\n */\n DrillDownAction.prototype.hideCrumbGroup = function () {\n if (this.breadCrumbGroup) {\n this.breadCrumbGroup.hide();\n }\n };\n /**\n * @override\n * destroy: 销毁资源\n */\n DrillDownAction.prototype.destroy = function () {\n if (this.breadCrumbGroup) {\n this.breadCrumbGroup.remove();\n }\n _super.prototype.destroy.call(this);\n };\n return DrillDownAction;\n}(Action);\nexport { DrillDownAction };","import { shuffle } from \"../array.js\";\nexport default function (circles) {\n var i = 0,\n n = (circles = shuffle(Array.from(circles))).length,\n B = [],\n p,\n e;\n while (i < n) {\n p = circles[i];\n if (e && enclosesWeak(e, p)) ++i;else e = encloseBasis(B = extendBasis(B, p)), i = 0;\n }\n return e;\n}\nfunction extendBasis(B, p) {\n var i, j;\n if (enclosesWeakAll(p, B)) return [p];\n\n // If we get here then B must have at least one element.\n for (i = 0; i < B.length; ++i) {\n if (enclosesNot(p, B[i]) && enclosesWeakAll(encloseBasis2(B[i], p), B)) {\n return [B[i], p];\n }\n }\n\n // If we get here then B must have at least two elements.\n for (i = 0; i < B.length - 1; ++i) {\n for (j = i + 1; j < B.length; ++j) {\n if (enclosesNot(encloseBasis2(B[i], B[j]), p) && enclosesNot(encloseBasis2(B[i], p), B[j]) && enclosesNot(encloseBasis2(B[j], p), B[i]) && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {\n return [B[i], B[j], p];\n }\n }\n }\n\n // If we get here then something is very wrong.\n throw new Error();\n}\nfunction enclosesNot(a, b) {\n var dr = a.r - b.r,\n dx = b.x - a.x,\n dy = b.y - a.y;\n return dr < 0 || dr * dr < dx * dx + dy * dy;\n}\nfunction enclosesWeak(a, b) {\n var dr = a.r - b.r + Math.max(a.r, b.r, 1) * 1e-9,\n dx = b.x - a.x,\n dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\nfunction enclosesWeakAll(a, B) {\n for (var i = 0; i < B.length; ++i) {\n if (!enclosesWeak(a, B[i])) {\n return false;\n }\n }\n return true;\n}\nfunction encloseBasis(B) {\n switch (B.length) {\n case 1:\n return encloseBasis1(B[0]);\n case 2:\n return encloseBasis2(B[0], B[1]);\n case 3:\n return encloseBasis3(B[0], B[1], B[2]);\n }\n}\nfunction encloseBasis1(a) {\n return {\n x: a.x,\n y: a.y,\n r: a.r\n };\n}\nfunction encloseBasis2(a, b) {\n var x1 = a.x,\n y1 = a.y,\n r1 = a.r,\n x2 = b.x,\n y2 = b.y,\n r2 = b.r,\n x21 = x2 - x1,\n y21 = y2 - y1,\n r21 = r2 - r1,\n l = Math.sqrt(x21 * x21 + y21 * y21);\n return {\n x: (x1 + x2 + x21 / l * r21) / 2,\n y: (y1 + y2 + y21 / l * r21) / 2,\n r: (l + r1 + r2) / 2\n };\n}\nfunction encloseBasis3(a, b, c) {\n var x1 = a.x,\n y1 = a.y,\n r1 = a.r,\n x2 = b.x,\n y2 = b.y,\n r2 = b.r,\n x3 = c.x,\n y3 = c.y,\n r3 = c.r,\n a2 = x1 - x2,\n a3 = x1 - x3,\n b2 = y1 - y2,\n b3 = y1 - y3,\n c2 = r2 - r1,\n c3 = r3 - r1,\n d1 = x1 * x1 + y1 * y1 - r1 * r1,\n d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,\n d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,\n ab = a3 * b2 - a2 * b3,\n xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,\n xb = (b3 * c2 - b2 * c3) / ab,\n ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,\n yb = (a2 * c3 - a3 * c2) / ab,\n A = xb * xb + yb * yb - 1,\n B = 2 * (r1 + xa * xb + ya * yb),\n C = xa * xa + ya * ya - r1 * r1,\n r = -(A ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);\n return {\n x: x1 + xa + xb * r,\n y: y1 + ya + yb * r,\n r: r\n };\n}","export default function (x) {\n return typeof x === \"object\" && \"length\" in x ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n\nexport function shuffle(array) {\n var m = array.length,\n t,\n i;\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m];\n array[m] = array[i];\n array[i] = t;\n }\n return array;\n}","import array from \"../array.js\";\nimport enclose from \"./enclose.js\";\nfunction place(b, a, c) {\n var dx = b.x - a.x,\n x,\n a2,\n dy = b.y - a.y,\n y,\n b2,\n d2 = dx * dx + dy * dy;\n if (d2) {\n a2 = a.r + c.r, a2 *= a2;\n b2 = b.r + c.r, b2 *= b2;\n if (a2 > b2) {\n x = (d2 + b2 - a2) / (2 * d2);\n y = Math.sqrt(Math.max(0, b2 / d2 - x * x));\n c.x = b.x - x * dx - y * dy;\n c.y = b.y - x * dy + y * dx;\n } else {\n x = (d2 + a2 - b2) / (2 * d2);\n y = Math.sqrt(Math.max(0, a2 / d2 - x * x));\n c.x = a.x + x * dx - y * dy;\n c.y = a.y + x * dy + y * dx;\n }\n } else {\n c.x = a.x + c.r;\n c.y = a.y;\n }\n}\nfunction intersects(a, b) {\n var dr = a.r + b.r - 1e-6,\n dx = b.x - a.x,\n dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\nfunction score(node) {\n var a = node._,\n b = node.next._,\n ab = a.r + b.r,\n dx = (a.x * b.r + b.x * a.r) / ab,\n dy = (a.y * b.r + b.y * a.r) / ab;\n return dx * dx + dy * dy;\n}\nfunction Node(circle) {\n this._ = circle;\n this.next = null;\n this.previous = null;\n}\nexport function packEnclose(circles) {\n if (!(n = (circles = array(circles)).length)) return 0;\n var a, b, c, n, aa, ca, i, j, k, sj, sk;\n\n // Place the first circle.\n a = circles[0], a.x = 0, a.y = 0;\n if (!(n > 1)) return a.r;\n\n // Place the second circle.\n b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;\n if (!(n > 2)) return a.r + b.r;\n\n // Place the third circle.\n place(b, a, c = circles[2]);\n\n // Initialize the front-chain using the first three circles a, b and c.\n a = new Node(a), b = new Node(b), c = new Node(c);\n a.next = c.previous = b;\n b.next = a.previous = c;\n c.next = b.previous = a;\n\n // Attempt to place each remaining circle…\n pack: for (i = 3; i < n; ++i) {\n place(a._, b._, c = circles[i]), c = new Node(c);\n\n // Find the closest intersecting circle on the front-chain, if any.\n // “Closeness” is determined by linear distance along the front-chain.\n // “Ahead” or “behind” is likewise determined by linear distance.\n j = b.next, k = a.previous, sj = b._.r, sk = a._.r;\n do {\n if (sj <= sk) {\n if (intersects(j._, c._)) {\n b = j, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sj += j._.r, j = j.next;\n } else {\n if (intersects(k._, c._)) {\n a = k, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sk += k._.r, k = k.previous;\n }\n } while (j !== k.next);\n\n // Success! Insert the new circle c between a and b.\n c.previous = a, c.next = b, a.next = b.previous = b = c;\n\n // Compute the new closest circle pair to the centroid.\n aa = score(a);\n while ((c = c.next) !== b) {\n if ((ca = score(c)) < aa) {\n a = c, aa = ca;\n }\n }\n b = a.next;\n }\n\n // Compute the enclosing circle of the front chain.\n a = [b._], c = b;\n while ((c = c.next) !== b) a.push(c._);\n c = enclose(a);\n\n // Translate the circles to put the enclosing circle around the origin.\n for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;\n return c.r;\n}\nexport default function (circles) {\n packEnclose(circles);\n return circles;\n}","export function optional(f) {\n return f == null ? null : required(f);\n}\nexport function required(f) {\n if (typeof f !== \"function\") throw new Error();\n return f;\n}","export function constantZero() {\n return 0;\n}\nexport default function (x) {\n return function () {\n return x;\n };\n}","import { packEnclose } from \"./siblings.js\";\nimport { optional } from \"../accessors.js\";\nimport constant, { constantZero } from \"../constant.js\";\nfunction defaultRadius(d) {\n return Math.sqrt(d.value);\n}\nexport default function () {\n var radius = null,\n dx = 1,\n dy = 1,\n padding = constantZero;\n function pack(root) {\n root.x = dx / 2, root.y = dy / 2;\n if (radius) {\n root.eachBefore(radiusLeaf(radius)).eachAfter(packChildren(padding, 0.5)).eachBefore(translateChild(1));\n } else {\n root.eachBefore(radiusLeaf(defaultRadius)).eachAfter(packChildren(constantZero, 1)).eachAfter(packChildren(padding, root.r / Math.min(dx, dy))).eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));\n }\n return root;\n }\n pack.radius = function (x) {\n return arguments.length ? (radius = optional(x), pack) : radius;\n };\n pack.size = function (x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];\n };\n pack.padding = function (x) {\n return arguments.length ? (padding = typeof x === \"function\" ? x : constant(+x), pack) : padding;\n };\n return pack;\n}\nfunction radiusLeaf(radius) {\n return function (node) {\n if (!node.children) {\n node.r = Math.max(0, +radius(node) || 0);\n }\n };\n}\nfunction packChildren(padding, k) {\n return function (node) {\n if (children = node.children) {\n var children,\n i,\n n = children.length,\n r = padding(node) * k || 0,\n e;\n if (r) for (i = 0; i < n; ++i) children[i].r += r;\n e = packEnclose(children);\n if (r) for (i = 0; i < n; ++i) children[i].r -= r;\n node.r = e + r;\n }\n };\n}\nfunction translateChild(k) {\n return function (node) {\n var parent = node.parent;\n node.r *= k;\n if (parent) {\n node.x = parent.x + k * node.x;\n node.y = parent.y + k * node.y;\n }\n };\n}","function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\nexport default function () {\n return this.eachAfter(count);\n}","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nexport default function (callback, that) {\n var index = -1;\n var _iterator = _createForOfIteratorHelper(this),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var node = _step.value;\n callback.call(that, node, ++index, this);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return this;\n}","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nexport default function (callback, that) {\n var index = -1;\n var _iterator = _createForOfIteratorHelper(this),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var node = _step.value;\n if (callback.call(that, node, ++index, this)) {\n return node;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n}","import _regeneratorRuntime from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/regenerator/index.js\";\nvar _marked = /*#__PURE__*/_regeneratorRuntime.mark(_callee);\nexport default function _callee() {\n var node, current, next, children, i, n;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n node = this, next = [node];\n case 1:\n current = next.reverse(), next = [];\n case 2:\n if (!(node = current.pop())) {\n _context.next = 8;\n break;\n }\n _context.next = 5;\n return node;\n case 5:\n if (children = node.children) {\n for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n _context.next = 2;\n break;\n case 8:\n if (next.length) {\n _context.next = 1;\n break;\n }\n case 9:\n case \"end\":\n return _context.stop();\n }\n }, _marked, this);\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_find from \"./find.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\nimport node_iterator from \"./iterator.js\";\nexport default function hierarchy(data, children) {\n if (data instanceof Map) {\n data = [undefined, data];\n if (children === undefined) children = mapChildren;\n } else if (children === undefined) {\n children = objectChildren;\n }\n var root = new Node(data),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n while (node = nodes.pop()) {\n if ((childs = children(node.data)) && (n = (childs = Array.from(childs)).length)) {\n node.children = childs;\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = childs[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n return root.eachBefore(computeHeight);\n}\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\nfunction objectChildren(d) {\n return d.children;\n}\nfunction mapChildren(d) {\n return Array.isArray(d) ? d[1] : null;\n}\nfunction copyData(node) {\n if (node.data.value !== undefined) node.value = node.data.value;\n node.data = node.data.data;\n}\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height; while ((node = node.parent) && node.height < ++height);\n}\nexport function Node(data) {\n this.data = data;\n this.depth = this.height = 0;\n this.parent = null;\n}\nNode.prototype = hierarchy.prototype = _defineProperty({\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n find: node_find,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy\n}, Symbol.iterator, node_iterator);","export default function (callback, that) {\n var node = this,\n nodes = [node],\n next = [],\n children,\n i,\n n,\n index = -1;\n while (node = nodes.pop()) {\n next.push(node);\n if (children = node.children) {\n for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n }\n while (node = next.pop()) {\n callback.call(that, node, ++index, this);\n }\n return this;\n}","export default function (callback, that) {\n var node = this,\n nodes = [node],\n children,\n i,\n index = -1;\n while (node = nodes.pop()) {\n callback.call(that, node, ++index, this);\n if (children = node.children) {\n for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n }\n return this;\n}","export default function (value) {\n return this.eachAfter(function (node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}","export default function (compare) {\n return this.eachBefore(function (node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}","export default function (end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}","export default function () {\n var node = this,\n nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}","export default function () {\n return Array.from(this);\n}","export default function () {\n var leaves = [];\n this.eachBefore(function (node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}","export default function () {\n var root = this,\n links = [];\n root.each(function (node) {\n if (node !== root) {\n // Don’t include the root’s parent, if any.\n links.push({\n source: node.parent,\n target: node\n });\n }\n });\n return links;\n}","import { filter, isArray, isString } from '@antv/util';\n/** export 一些字段常量 */\n/** 在同层级,同一父节点下的节点索引顺序 */\nexport var NODE_INDEX_FIELD = 'nodeIndex';\n/** child 节点数量 */\nexport var CHILD_NODE_COUNT = 'childNodeCount';\n/** 节点的祖先节点 */\nexport var NODE_ANCESTORS_FIELD = 'nodeAncestor';\nvar INVALID_FIELD_ERR_MSG = 'Invalid field: it must be a string!';\nexport function getField(options, defaultField) {\n var field = options.field,\n fields = options.fields;\n if (isString(field)) {\n return field;\n }\n if (isArray(field)) {\n console.warn(INVALID_FIELD_ERR_MSG);\n return field[0];\n }\n console.warn(\"\".concat(INVALID_FIELD_ERR_MSG, \" will try to get fields instead.\"));\n if (isString(fields)) {\n return fields;\n }\n if (isArray(fields) && fields.length) {\n return fields[0];\n }\n if (defaultField) {\n return defaultField;\n }\n throw new TypeError(INVALID_FIELD_ERR_MSG);\n}\nexport function getAllNodes(root) {\n var nodes = [];\n if (root && root.each) {\n var parent_1;\n var index_1;\n // d3-hierarchy: Invokes the specified function for node and each descendant in **breadth-first order**\n root.each(function (node) {\n var _a, _b;\n if (node.parent !== parent_1) {\n parent_1 = node.parent;\n index_1 = 0;\n } else {\n index_1 += 1;\n }\n var ancestors = filter((((_a = node.ancestors) === null || _a === void 0 ? void 0 : _a.call(node)) || []).map(function (d) {\n return nodes.find(function (n) {\n return n.name === d.name;\n }) || d;\n }), function (_a) {\n var depth = _a.depth;\n return depth > 0 && depth < node.depth;\n });\n node[NODE_ANCESTORS_FIELD] = ancestors;\n node[CHILD_NODE_COUNT] = ((_b = node.children) === null || _b === void 0 ? void 0 : _b.length) || 0;\n node[NODE_INDEX_FIELD] = index_1;\n nodes.push(node);\n });\n } else if (root && root.eachNode) {\n // @antv/hierarchy\n root.eachNode(function (node) {\n nodes.push(node);\n });\n }\n return nodes;\n}","import { assign, isArray } from '@antv/util';\nimport * as d3Hierarchy from 'd3-hierarchy';\nimport { getAllNodes, getField } from './util';\nvar DEFAULT_OPTIONS = {\n field: 'value',\n as: ['x', 'y', 'r'],\n // 默认降序\n sort: function sort(a, b) {\n return b.value - a.value;\n }\n};\nexport function pack(data, options) {\n options = assign({}, DEFAULT_OPTIONS, options);\n var as = options.as;\n if (!isArray(as) || as.length !== 3) {\n throw new TypeError('Invalid as: it must be an array with 3 strings (e.g. [ \"x\", \"y\", \"r\" ])!');\n }\n var field;\n try {\n field = getField(options);\n } catch (e) {\n console.warn(e);\n }\n var packLayout = function packLayout(data) {\n return d3Hierarchy.pack().size(options.size).padding(options.padding)(d3Hierarchy.hierarchy(data).sum(function (d) {\n return d[field];\n }).sort(options.sort));\n };\n var root = packLayout(data);\n var x = as[0];\n var y = as[1];\n var r = as[2];\n root.each(function (node) {\n node[x] = node.x;\n node[y] = node.y;\n node[r] = node.r;\n });\n return getAllNodes(root);\n}","import { __assign } from \"tslib\";\nimport { HIERARCHY_DATA_TRANSFORM_PARAMS } from '../../interactions/actions/drill-down';\nimport { deepAssign, pick } from '../../utils';\nimport { pack } from '../../utils/hierarchy/pack';\nimport { resolveAllPadding } from '../../utils/padding';\n/**\n * circle-packing 数据转换\n * @param options\n */\nexport function transformData(options) {\n var data = options.data,\n hierarchyConfig = options.hierarchyConfig,\n _a = options.rawFields,\n rawFields = _a === void 0 ? [] : _a,\n enableDrillDown = options.enableDrillDown;\n var nodes = pack(data, __assign(__assign({}, hierarchyConfig), {\n field: 'value',\n as: ['x', 'y', 'r']\n }));\n var result = [];\n nodes.forEach(function (node) {\n var _a;\n var path = node.data.name;\n var ancestorNode = __assign({}, node);\n while (ancestorNode.depth > 1) {\n path = \"\".concat((_a = ancestorNode.parent.data) === null || _a === void 0 ? void 0 : _a.name, \" / \").concat(path);\n ancestorNode = ancestorNode.parent;\n }\n // 开启下钻,仅加载 depth <= 2 的数据 (加载两层)\n if (enableDrillDown && node.depth > 2) {\n return null;\n }\n var nodeInfo = deepAssign({}, node.data, __assign(__assign(__assign({}, pick(node.data, rawFields)), {\n path: path\n }), node));\n nodeInfo.ext = hierarchyConfig;\n nodeInfo[HIERARCHY_DATA_TRANSFORM_PARAMS] = {\n hierarchyConfig: hierarchyConfig,\n rawFields: rawFields,\n enableDrillDown: enableDrillDown\n };\n result.push(nodeInfo);\n });\n return result;\n}\n/**\n * 根据传入的 padding 和 现有的 画布大小, 输出针对圆形视图布局需要的 finalPadding 以及 finalSize\n * @param params\n */\nexport function resolvePaddingForCircle(padding, appendPadding, containerSize) {\n var tempPadding = resolveAllPadding([padding, appendPadding]);\n var top = tempPadding[0],\n right = tempPadding[1],\n bottom = tempPadding[2],\n left = tempPadding[3]; // 没设定,默认是 [0, 0, 0, 0]\n var width = containerSize.width,\n height = containerSize.height;\n // 有了 tempPadding 介入以后,计算出coordinate范围宽高的最小值 minSize = circle-packing的直径\n var wSize = width - (left + right);\n var hSize = height - (top + bottom);\n var minSize = Math.min(wSize, hSize); // circle-packing的直径\n // 得到居中后各方向剩余的 padding\n var restWidthPadding = (wSize - minSize) / 2;\n var restHeightPadding = (hSize - minSize) / 2;\n var finalTop = top + restHeightPadding;\n var finalRight = right + restWidthPadding;\n var finalBottom = bottom + restHeightPadding;\n var finalLeft = left + restWidthPadding;\n var finalPadding = [finalTop, finalRight, finalBottom, finalLeft];\n var finalSize = minSize < 0 ? 0 : minSize; // 防止为负数\n return {\n finalPadding: finalPadding,\n finalSize: finalSize\n };\n}","import { __assign, __spreadArray } from \"tslib\";\nimport { get } from '@antv/util';\nimport { animation, annotation, interaction as baseInteraction, legend, pattern, scale, theme } from '../../adaptor/common';\nimport { point } from '../../adaptor/geometries/point';\nimport { deepAssign, flow } from '../../utils';\nimport { getAdjustAppendPadding, resolveAllPadding } from '../../utils/padding';\nimport { RAW_FIELDS } from './constant';\nimport { resolvePaddingForCircle, transformData } from './utils';\n/**\n * 获取默认 option\n * @param params\n */\nfunction defaultOptions(params) {\n var chart = params.chart;\n var diameter = Math.min(chart.viewBBox.width, chart.viewBBox.height);\n return deepAssign({\n options: {\n size: function size(_a) {\n var r = _a.r;\n return r * diameter;\n } // 当autofit:false时,默认给固定半径\n }\n }, params);\n}\n/**\n * padding 配置\n * @param params\n */\nfunction padding(params) {\n var options = params.options,\n chart = params.chart;\n // 通过改变 padding,修改 coordinate 的绘制区域\n var containerSize = chart.viewBBox;\n var padding = options.padding,\n appendPadding = options.appendPadding,\n drilldown = options.drilldown;\n var tempAppendPadding = appendPadding;\n if (drilldown === null || drilldown === void 0 ? void 0 : drilldown.enabled) {\n var appendPaddingByDrilldown = getAdjustAppendPadding(chart.appendPadding, get(drilldown, ['breadCrumb', 'position']));\n tempAppendPadding = resolveAllPadding([appendPaddingByDrilldown, appendPadding]);\n }\n var finalPadding = resolvePaddingForCircle(padding, tempAppendPadding, containerSize).finalPadding;\n chart.padding = finalPadding;\n chart.appendPadding = 0;\n return params;\n}\n/**\n * 字段\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var padding = chart.padding,\n appendPadding = chart.appendPadding;\n var color = options.color,\n colorField = options.colorField,\n pointStyle = options.pointStyle,\n hierarchyConfig = options.hierarchyConfig,\n sizeField = options.sizeField,\n _a = options.rawFields,\n rawFields = _a === void 0 ? [] : _a,\n drilldown = options.drilldown;\n var data = transformData({\n data: options.data,\n hierarchyConfig: hierarchyConfig,\n enableDrillDown: drilldown === null || drilldown === void 0 ? void 0 : drilldown.enabled,\n rawFields: rawFields\n });\n chart.data(data);\n var containerSize = chart.viewBBox;\n var finalSize = resolvePaddingForCircle(padding, appendPadding, containerSize).finalSize;\n // 有sizeField的时候,例如 value ,可以选择映射 size 函数,自己计算出映射的半径\n var circleSize = function circleSize(_a) {\n var r = _a.r;\n return r * finalSize;\n }; // 默认配置\n if (sizeField) {\n circleSize = function circleSize(d) {\n return d[sizeField] * finalSize;\n }; // 目前只有 r 通道映射效果会正常\n }\n // geometry\n point(deepAssign({}, params, {\n options: {\n xField: 'x',\n yField: 'y',\n seriesField: colorField,\n sizeField: sizeField,\n rawFields: __spreadArray(__spreadArray([], RAW_FIELDS, true), rawFields, true),\n point: {\n color: color,\n style: pointStyle,\n shape: 'circle',\n size: circleSize\n }\n }\n }));\n return params;\n}\n/**\n * meta 配置\n * @param params\n */\nexport function meta(params) {\n return flow(scale({}, {\n // 必须强制为 nice\n x: {\n min: 0,\n max: 1,\n minLimit: 0,\n maxLimit: 1,\n nice: true\n },\n y: {\n min: 0,\n max: 1,\n minLimit: 0,\n maxLimit: 1,\n nice: true\n }\n }))(params);\n}\n/**\n * tooltip 配置\n * @param params\n */\nfunction tooltip(params) {\n var chart = params.chart,\n options = params.options;\n var tooltip = options.tooltip;\n if (tooltip === false) {\n chart.tooltip(false);\n } else {\n var tooltipOptions = tooltip;\n // 设置了 fields,就不进行 customItems 了; 设置 formatter 时,需要搭配 fields\n if (!get(tooltip, 'fields')) {\n tooltipOptions = deepAssign({}, {\n customItems: function customItems(items) {\n return items.map(function (item) {\n var scales = get(chart.getOptions(), 'scales');\n var nameFormatter = get(scales, ['name', 'formatter'], function (v) {\n return v;\n });\n var valueFormatter = get(scales, ['value', 'formatter'], function (v) {\n return v;\n });\n return __assign(__assign({}, item), {\n name: nameFormatter(item.data.name),\n value: valueFormatter(item.data.value)\n });\n });\n }\n }, tooltipOptions);\n }\n chart.tooltip(tooltipOptions);\n }\n return params;\n}\n/**\n * 坐标轴, 默认关闭\n * @param params\n */\nfunction axis(params) {\n var chart = params.chart;\n chart.axis(false);\n return params;\n}\nfunction adaptorInteraction(options) {\n var drilldown = options.drilldown,\n _a = options.interactions,\n interactions = _a === void 0 ? [] : _a;\n if (drilldown === null || drilldown === void 0 ? void 0 : drilldown.enabled) {\n return deepAssign({}, options, {\n interactions: __spreadArray(__spreadArray([], interactions, true), [{\n type: 'drill-down',\n cfg: {\n drillDownConfig: drilldown,\n transformData: transformData,\n enableDrillDown: true\n }\n }], false)\n });\n }\n return options;\n}\n/**\n * 交互配置\n * @param params\n * @returns\n */\nfunction interaction(params) {\n var chart = params.chart,\n options = params.options;\n baseInteraction({\n chart: chart,\n options: adaptorInteraction(options)\n });\n return params;\n}\n/**\n * 矩形树图\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n return flow(pattern('pointStyle'), defaultOptions, padding, theme, meta, geometry, axis, legend, tooltip, interaction, animation, annotation())(params);\n}","import { registerAction, registerInteraction } from '@antv/g2';\nimport { get, isArray } from '@antv/util';\nimport { DrillDownAction } from './actions/drill-down';\n/**\n * 判断是否为父节点\n */\nexport function isParentNode(context) {\n var data = get(context, ['event', 'data', 'data'], {});\n return isArray(data.children) && data.children.length > 0;\n}\n/**\n * 判断是否在中心\n */\nfunction inCenter(context) {\n var coordinate = context.view.getCoordinate();\n var innerRadius = coordinate.innerRadius;\n if (innerRadius) {\n var _a = context.event,\n x = _a.x,\n y = _a.y;\n var _b = coordinate.center,\n centerX = _b.x,\n centerY = _b.y;\n var r = coordinate.getRadius() * innerRadius;\n var distance = Math.sqrt(Math.pow(centerX - x, 2) + Math.pow(centerY - y, 2));\n return distance < r;\n }\n return false;\n}\nregisterAction('drill-down-action', DrillDownAction);\nregisterInteraction('drill-down', {\n showEnable: [{\n trigger: 'element:mouseenter',\n action: 'cursor:pointer',\n isEnable: isParentNode\n }, {\n trigger: 'element:mouseleave',\n action: 'cursor:default'\n },\n // 中心处,肯定会触发 element:mouseleave 操作\n {\n trigger: 'element:mouseleave',\n action: 'cursor:pointer',\n isEnable: inCenter\n }],\n start: [{\n trigger: 'element:click',\n isEnable: isParentNode,\n action: ['drill-down-action:click']\n }, {\n trigger: 'afterchangesize',\n action: ['drill-down-action:resetPosition']\n }, {\n // 点击中心,返回上一层\n trigger: 'click',\n isEnable: inCenter,\n action: ['drill-down-action:back']\n }]\n});","import { __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { adaptor } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constant';\nimport './interactions';\n/**\n * CirclePacking\n * @usage hierarchy, proportions\n */\nvar CirclePacking = /** @class */function (_super) {\n __extends(CirclePacking, _super);\n function CirclePacking() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'circle-packing';\n return _this;\n }\n /**\n * 获取 面积图 默认配置项\n * 供外部使用\n */\n CirclePacking.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n CirclePacking.prototype.getDefaultOptions = function () {\n return CirclePacking.getDefaultOptions();\n };\n /**\n * 获取适配器\n */\n CirclePacking.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n /**\n * 覆写父类的方法\n */\n CirclePacking.prototype.triggerResize = function () {\n if (!this.chart.destroyed) {\n // 首先自适应容器的宽高\n this.chart.forceFit(); // g2 内部执行 changeSize,changeSize 中执行 render(true)\n this.chart.clear();\n this.execAdaptor(); // 核心:宽高更新之后计算padding\n // 渲染\n this.chart.render(true);\n }\n };\n return CirclePacking;\n}(Plot);\nexport { CirclePacking };","export var AxisType;\n(function (AxisType) {\n AxisType[\"Left\"] = \"Left\";\n AxisType[\"Right\"] = \"Right\";\n})(AxisType || (AxisType = {}));\nexport var DualAxesGeometry;\n(function (DualAxesGeometry) {\n DualAxesGeometry[\"Line\"] = \"line\";\n DualAxesGeometry[\"Column\"] = \"column\";\n})(DualAxesGeometry || (DualAxesGeometry = {}));","import { __assign } from \"tslib\";\nexport var LEFT_AXES_VIEW = 'left-axes-view';\nexport var RIGHT_AXES_VIEW = 'right-axes-view';\nexport var DEFAULT_YAXIS_CONFIG = {\n nice: true,\n label: {\n autoHide: true,\n autoRotate: false\n }\n};\nexport var DEFAULT_LEFT_YAXIS_CONFIG = __assign(__assign({}, DEFAULT_YAXIS_CONFIG), {\n position: 'left'\n});\nexport var DEFAULT_RIGHT_YAXIS_CONFIG = __assign(__assign({}, DEFAULT_YAXIS_CONFIG), {\n position: 'right',\n grid: null\n});","import { __assign } from \"tslib\";\nimport { get, isArray } from '@antv/util';\nimport { deepAssign } from '../../../utils';\nimport { DEFAULT_LEFT_YAXIS_CONFIG, DEFAULT_RIGHT_YAXIS_CONFIG } from '../constant';\nimport { AxisType, DualAxesGeometry } from '../types';\n/**\n * 根据 GeometryOption 判断 geometry 是否为 line\n */\nexport function isLine(geometryOption) {\n return get(geometryOption, 'geometry') === DualAxesGeometry.Line;\n}\n/**\n * 根据 GeometryOption 判断 geometry 是否为 Column\n */\nexport function isColumn(geometryOption) {\n return get(geometryOption, 'geometry') === DualAxesGeometry.Column;\n}\n/**\n * 获取 GeometryOption\n * @param geometryOption\n * @param axis\n */\nexport function getGeometryOption(xField, yField, geometryOption) {\n // 空默认为线\n return isColumn(geometryOption) ? deepAssign({}, {\n geometry: DualAxesGeometry.Column,\n label: geometryOption.label && geometryOption.isRange ? {\n content: function content(item) {\n var _a;\n return (_a = item[yField]) === null || _a === void 0 ? void 0 : _a.join('-');\n }\n } : undefined\n }, geometryOption) : __assign({\n geometry: DualAxesGeometry.Line\n }, geometryOption);\n}\n/**\n * 兼容一些属性 为 arr 和 obj 的两种情况, 如 yAxis,annotations\n * 为了防止左右 yField 相同,导致变成 object 之后被覆盖,所以都转变成数组的形式\n * @param yField\n * @param transformAttribute\n */\nexport function transformObjectToArray(yField, transformAttribute) {\n var y1 = yField[0],\n y2 = yField[1];\n if (isArray(transformAttribute)) {\n // 将数组补齐为两个\n var a1_1 = transformAttribute[0],\n a2_1 = transformAttribute[1];\n return [a1_1, a2_1];\n }\n var a1 = get(transformAttribute, y1);\n var a2 = get(transformAttribute, y2);\n return [a1, a2];\n}\n/**\n * 获取默认值\n * @param yAxis\n * @param axisType\n */\nexport function getYAxisWithDefault(yAxis, axisType) {\n if (axisType === AxisType.Left) {\n return yAxis === false ? false : deepAssign({}, DEFAULT_LEFT_YAXIS_CONFIG, yAxis);\n } else if (axisType === AxisType.Right) {\n return yAxis === false ? false : deepAssign({}, DEFAULT_RIGHT_YAXIS_CONFIG, yAxis);\n }\n return yAxis;\n}","import { Util } from '@antv/g2';\nimport { get, isEmpty, isFunction, reduce } from '@antv/util';\nimport { deepAssign, findGeometry } from '../../../utils';\nimport { isLine } from './option';\n/**\n * 获取 view 的 legendItem,供存在不含有 seriesField 的图形使用\n * @param params\n */\nexport function getViewLegendItems(params) {\n var view = params.view,\n geometryOption = params.geometryOption,\n yField = params.yField,\n legend = params.legend;\n var userMarker = get(legend, 'marker');\n var geometry = findGeometry(view, isLine(geometryOption) ? 'line' : 'interval');\n if (!geometryOption.seriesField) {\n var legendItemName = get(view, \"options.scales.\".concat(yField, \".alias\")) || yField;\n // 返回 g2 设置的图例\n var colorAttribute = geometry.getAttribute('color');\n var color = view.getTheme().defaultColor;\n if (colorAttribute) {\n color = Util.getMappingValue(colorAttribute, legendItemName, get(colorAttribute, ['values', 0], color));\n }\n var marker = (isFunction(userMarker) ? userMarker : !isEmpty(userMarker) && deepAssign({}, {\n style: {\n stroke: color,\n fill: color\n }\n }, userMarker)) || (isLine(geometryOption) ? {\n symbol: function symbol(x, y, r) {\n return [['M', x - r, y], ['L', x + r, y]];\n },\n style: {\n lineWidth: 2,\n r: 6,\n stroke: color\n }\n } : {\n symbol: 'square',\n style: {\n fill: color\n }\n });\n return [{\n value: yField,\n name: legendItemName,\n marker: marker,\n isGeometry: true,\n viewId: view.id\n }];\n }\n var attributes = geometry.getGroupAttributes();\n return reduce(attributes, function (items, attr) {\n var attrItems = Util.getLegendItems(view, geometry, attr, view.getTheme(), userMarker);\n return items.concat(attrItems);\n }, []);\n}","import { size, valuesOfKey } from '@antv/util';\nimport { isBetween } from '../../../utils';\n/**\n * 右侧 View 进行 slider 过滤\n * 由于双轴图是多 View , 需要监听左侧 Slider 的 change 事件来同步右侧 View\n * @param { View } view 右侧视图\n * @param { number[] } sliderValue 滑块当前值\n * @returns void\n */\nexport var doSliderFilter = function doSliderFilter(view, sliderValue) {\n var min = sliderValue[0],\n max = sliderValue[1];\n var data = view.getOptions().data;\n var xScale = view.getXScale();\n var dataSize = size(data);\n if (!xScale || !dataSize) {\n return;\n }\n var isHorizontal = true;\n var values = valuesOfKey(data, xScale.field);\n var xValues = isHorizontal ? values : values.reverse();\n var xTickCount = size(xValues);\n var minIndex = Math.floor(min * (xTickCount - 1));\n var maxIndex = Math.floor(max * (xTickCount - 1));\n // 增加 x 轴的过滤器\n view.filter(xScale.field, function (value) {\n var idx = xValues.indexOf(value);\n return idx > -1 ? isBetween(idx, minIndex, maxIndex) : true;\n });\n view.getRootView().render(true);\n};","import { __assign } from \"tslib\";\nimport { each, every, find, findIndex, get, isBoolean, isEqual, isObject } from '@antv/util';\nimport { animation as commonAnimation, annotation as commonAnnotation, interaction as commonInteraction, limitInPlot as commonLimitInPlot, scale, theme as commonTheme } from '../../adaptor/common';\nimport { deepAssign, flow } from '../../utils';\nimport { percent } from '../../utils/transform/percent';\nimport { findViewById } from '../../utils/view';\nimport { LEFT_AXES_VIEW, RIGHT_AXES_VIEW } from './constant';\nimport { AxisType, DualAxesGeometry } from './types';\nimport { drawSingleGeometry } from './util/geometry';\nimport { getViewLegendItems } from './util/legend';\nimport { getGeometryOption, getYAxisWithDefault, isColumn, transformObjectToArray } from './util/option';\nimport { doSliderFilter } from './util/render-sider';\n/**\n * transformOptions,双轴图整体的取参逻辑如下\n * 1. get index getOptions: 对应的是默认的图表参数,如 appendPadding,syncView 等\n * 2. get adpator transformOption: 对应的是双轴图的默认参数,deepAssign 优先级从低到高如下\n * 2.1 defaultoption,如 tooltip,legend\n * 2.2 用户填写 options\n * 2.3 根据用户填写的 options 补充的数组型 options,如 yaxis,GeometryOption,因为 deepAssign 无法 assign 数组\n *\n * @param params\n */\nexport function transformOptions(params) {\n var _a;\n var options = params.options;\n var _b = options.geometryOptions,\n geometryOptions = _b === void 0 ? [] : _b,\n xField = options.xField,\n yField = options.yField;\n var allLine = every(geometryOptions, function (_a) {\n var geometry = _a.geometry;\n return geometry === DualAxesGeometry.Line || geometry === undefined;\n });\n return deepAssign({}, {\n options: {\n geometryOptions: [],\n meta: (_a = {}, _a[xField] = {\n // 默认为 cat 类型\n type: 'cat',\n // x 轴一定是同步 scale 的\n sync: true,\n // 如果有没有柱子,则\n range: allLine ? [0, 1] : undefined\n }, _a),\n tooltip: {\n showMarkers: allLine,\n // 存在柱状图,不显示 crosshairs\n showCrosshairs: allLine,\n shared: true,\n crosshairs: {\n type: 'x'\n }\n },\n interactions: !allLine ? [{\n type: 'legend-visible-filter'\n }, {\n type: 'active-region'\n }] : [{\n type: 'legend-visible-filter'\n }],\n legend: {\n position: 'top-left'\n }\n }\n }, params, {\n options: {\n // yAxis\n yAxis: transformObjectToArray(yField, options.yAxis),\n // geometryOptions\n geometryOptions: [getGeometryOption(xField, yField[0], geometryOptions[0]), getGeometryOption(xField, yField[1], geometryOptions[1])],\n // annotations\n annotations: transformObjectToArray(yField, options.annotations)\n }\n });\n}\n/**\n * 创建 双轴图 中绘制图形的 view,提前创建是因为 theme 适配器的需要\n * @param params\n */\nfunction createViews(params) {\n var _a, _b;\n var chart = params.chart,\n options = params.options;\n var geometryOptions = options.geometryOptions;\n var SORT_MAP = {\n line: 0,\n column: 1\n };\n // 包含配置,id,数据的结构\n var geometries = [{\n type: (_a = geometryOptions[0]) === null || _a === void 0 ? void 0 : _a.geometry,\n id: LEFT_AXES_VIEW\n }, {\n type: (_b = geometryOptions[1]) === null || _b === void 0 ? void 0 : _b.geometry,\n id: RIGHT_AXES_VIEW\n }];\n // 将线的 view 放置在更上一层,防止线柱遮挡。先柱后先\n geometries.sort(function (a, b) {\n return -SORT_MAP[a.type] + SORT_MAP[b.type];\n }).forEach(function (g) {\n return chart.createView({\n id: g.id\n });\n });\n return params;\n}\n/**\n * 绘制图形\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var xField = options.xField,\n yField = options.yField,\n geometryOptions = options.geometryOptions,\n data = options.data,\n tooltip = options.tooltip;\n // 包含配置,id,数据的结构\n var geometries = [__assign(__assign({}, geometryOptions[0]), {\n id: LEFT_AXES_VIEW,\n data: data[0],\n yField: yField[0]\n }), __assign(__assign({}, geometryOptions[1]), {\n id: RIGHT_AXES_VIEW,\n data: data[1],\n yField: yField[1]\n })];\n geometries.forEach(function (geometry) {\n var id = geometry.id,\n data = geometry.data,\n yField = geometry.yField;\n // 百分比柱状图需要额外处理一次数据\n var isPercent = isColumn(geometry) && geometry.isPercent;\n var formatData = isPercent ? percent(data, yField, xField, yField) : data;\n var view = findViewById(chart, id).data(formatData);\n var tooltipOptions = isPercent ? __assign({\n formatter: function formatter(datum) {\n return {\n name: datum[geometry.seriesField] || yField,\n value: (Number(datum[yField]) * 100).toFixed(2) + '%'\n };\n }\n }, tooltip) : tooltip;\n // 绘制图形\n drawSingleGeometry({\n chart: view,\n options: {\n xField: xField,\n yField: yField,\n tooltip: tooltipOptions,\n geometryOption: geometry\n }\n });\n });\n return params;\n}\nexport function color(params) {\n var _a;\n var chart = params.chart,\n options = params.options;\n var geometryOptions = options.geometryOptions;\n var themeColor = ((_a = chart.getTheme()) === null || _a === void 0 ? void 0 : _a.colors10) || [];\n var start = 0;\n /* 为 geometry 添加默认 color。\n * 1. 若 geometryOptions 存在 color,则在 drawGeometry 时已处理\n * 2. 若 不存在 color,获取 Geometry group scales个数,在 theme color 10 中提取\n * 3. 为防止 group 过多导致右色板无值或值很少,右 view 面板在依次提取剩下的 N 个 后再 concat 一次 themeColor\n * 4. 为简便获取 Geometry group scales个数,在绘制完后再执行 color\n * 5. 考虑之后将不同 view 使用同一个色板的需求沉淀到 g2\n */\n chart.once('beforepaint', function () {\n each(geometryOptions, function (geometryOption, index) {\n var view = findViewById(chart, index === 0 ? LEFT_AXES_VIEW : RIGHT_AXES_VIEW);\n if (geometryOption.color) return;\n var groupScale = view.getGroupScales();\n var count = get(groupScale, [0, 'values', 'length'], 1);\n var color = themeColor.slice(start, start + count).concat(index === 0 ? [] : themeColor);\n view.geometries.forEach(function (geometry) {\n if (geometryOption.seriesField) {\n geometry.color(geometryOption.seriesField, color);\n } else {\n geometry.color(color[0]);\n }\n });\n start += count;\n });\n chart.render(true);\n });\n return params;\n}\n/**\n * meta 配置\n * @param params\n */\nexport function meta(params) {\n var _a, _b;\n var chart = params.chart,\n options = params.options;\n var xAxis = options.xAxis,\n yAxis = options.yAxis,\n xField = options.xField,\n yField = options.yField;\n scale((_a = {}, _a[xField] = xAxis, _a[yField[0]] = yAxis[0], _a))(deepAssign({}, params, {\n chart: findViewById(chart, LEFT_AXES_VIEW)\n }));\n scale((_b = {}, _b[xField] = xAxis, _b[yField[1]] = yAxis[1], _b))(deepAssign({}, params, {\n chart: findViewById(chart, RIGHT_AXES_VIEW)\n }));\n return params;\n}\n/**\n * axis 配置\n * @param params\n */\nexport function axis(params) {\n var chart = params.chart,\n options = params.options;\n var leftView = findViewById(chart, LEFT_AXES_VIEW);\n var rightView = findViewById(chart, RIGHT_AXES_VIEW);\n var xField = options.xField,\n yField = options.yField,\n xAxis = options.xAxis,\n yAxis = options.yAxis;\n chart.axis(xField, false);\n chart.axis(yField[0], false);\n chart.axis(yField[1], false);\n // 左 View\n leftView.axis(xField, xAxis);\n leftView.axis(yField[0], getYAxisWithDefault(yAxis[0], AxisType.Left));\n // 右 Y 轴\n rightView.axis(xField, false);\n rightView.axis(yField[1], getYAxisWithDefault(yAxis[1], AxisType.Right));\n return params;\n}\n/**\n * tooltip 配置\n * @param params\n */\nexport function tooltip(params) {\n var chart = params.chart,\n options = params.options;\n var tooltip = options.tooltip;\n var leftView = findViewById(chart, LEFT_AXES_VIEW);\n var rightView = findViewById(chart, RIGHT_AXES_VIEW);\n // tooltip 经过 getDefaultOption 处理后,一定不为 undefined\n chart.tooltip(tooltip);\n // 在 view 上添加 tooltip,使得 shared 和 interaction active-region 起作用\n // view 应该继承 chart 里的 shared,但是从表现看来,继承有点问题\n leftView.tooltip({\n shared: true\n });\n rightView.tooltip({\n shared: true\n });\n return params;\n}\n/**\n * interaction 配置\n * @param params\n */\nexport function interaction(params) {\n var chart = params.chart;\n commonInteraction(deepAssign({}, params, {\n chart: findViewById(chart, LEFT_AXES_VIEW)\n }));\n commonInteraction(deepAssign({}, params, {\n chart: findViewById(chart, RIGHT_AXES_VIEW)\n }));\n return params;\n}\n/**\n * annotation 配置\n * @param params\n */\nexport function annotation(params) {\n var chart = params.chart,\n options = params.options;\n var annotations = options.annotations;\n var a1 = get(annotations, [0]);\n var a2 = get(annotations, [1]);\n commonAnnotation(a1)(deepAssign({}, params, {\n chart: findViewById(chart, LEFT_AXES_VIEW),\n options: {\n annotations: a1\n }\n }));\n commonAnnotation(a2)(deepAssign({}, params, {\n chart: findViewById(chart, RIGHT_AXES_VIEW),\n options: {\n annotations: a2\n }\n }));\n return params;\n}\nexport function theme(params) {\n var chart = params.chart;\n /*\n * 双轴图中,部分组件是绘制在子 view 层(例如 axis,line),部分组件是绘制在 chart (例如 legend)\n * 为 chart 和 子 view 均注册 theme,使其自行遵循 G2 theme geometry > view > chart 进行渲染。\n */\n commonTheme(deepAssign({}, params, {\n chart: findViewById(chart, LEFT_AXES_VIEW)\n }));\n commonTheme(deepAssign({}, params, {\n chart: findViewById(chart, RIGHT_AXES_VIEW)\n }));\n commonTheme(params);\n return params;\n}\nexport function animation(params) {\n var chart = params.chart;\n commonAnimation(deepAssign({}, params, {\n chart: findViewById(chart, LEFT_AXES_VIEW)\n }));\n commonAnimation(deepAssign({}, params, {\n chart: findViewById(chart, RIGHT_AXES_VIEW)\n }));\n return params;\n}\n/**\n * 双轴图 limitInPlot\n * @param params\n */\nexport function limitInPlot(params) {\n var chart = params.chart,\n options = params.options;\n var yAxis = options.yAxis;\n commonLimitInPlot(deepAssign({}, params, {\n chart: findViewById(chart, LEFT_AXES_VIEW),\n options: {\n yAxis: yAxis[0]\n }\n }));\n commonLimitInPlot(deepAssign({}, params, {\n chart: findViewById(chart, RIGHT_AXES_VIEW),\n options: {\n yAxis: yAxis[1]\n }\n }));\n return params;\n}\n/**\n * legend 配置\n * 使用 custom,便于和类似于分组柱状图-单折线图的逻辑统一\n * @param params\n */\nexport function legend(params) {\n var chart = params.chart,\n options = params.options;\n var legend = options.legend,\n geometryOptions = options.geometryOptions,\n yField = options.yField,\n data = options.data;\n var leftView = findViewById(chart, LEFT_AXES_VIEW);\n var rightView = findViewById(chart, RIGHT_AXES_VIEW);\n if (legend === false) {\n chart.legend(false);\n } else if (isObject(legend) && legend.custom === true) {\n chart.legend(legend);\n } else {\n var leftLegend_1 = get(geometryOptions, [0, 'legend'], legend);\n var rightLegend_1 = get(geometryOptions, [1, 'legend'], legend);\n // 均使用自定义图例\n chart.once('beforepaint', function () {\n var leftItems = data[0].length ? getViewLegendItems({\n view: leftView,\n geometryOption: geometryOptions[0],\n yField: yField[0],\n legend: leftLegend_1\n }) : [];\n var rightItems = data[1].length ? getViewLegendItems({\n view: rightView,\n geometryOption: geometryOptions[1],\n yField: yField[1],\n legend: rightLegend_1\n }) : [];\n chart.legend(deepAssign({}, legend, {\n custom: true,\n // todo 修改类型定义\n // @ts-ignore\n items: leftItems.concat(rightItems)\n }));\n });\n if (geometryOptions[0].seriesField) {\n leftView.legend(geometryOptions[0].seriesField, leftLegend_1);\n }\n if (geometryOptions[1].seriesField) {\n rightView.legend(geometryOptions[1].seriesField, rightLegend_1);\n }\n // 自定义图例交互\n chart.on('legend-item:click', function (evt) {\n var delegateObject = get(evt, 'gEvent.delegateObject', {});\n if (delegateObject && delegateObject.item) {\n var _a = delegateObject.item,\n field_1 = _a.value,\n isGeometry = _a.isGeometry,\n viewId = _a.viewId;\n // geometry 的时候,直接使用 view.changeVisible\n if (isGeometry) {\n var idx = findIndex(yField, function (yF) {\n return yF === field_1;\n });\n if (idx > -1) {\n var geometries = get(findViewById(chart, viewId), 'geometries');\n each(geometries, function (g) {\n g.changeVisible(!delegateObject.item.unchecked);\n });\n }\n } else {\n var legendItem_1 = get(chart.getController('legend'), 'option.items', []);\n // 分组柱线图\n each(chart.views, function (view) {\n // 单折柱图\n var groupScale = view.getGroupScales();\n each(groupScale, function (scale) {\n if (scale.values && scale.values.indexOf(field_1) > -1) {\n view.filter(scale.field, function (value) {\n var curLegendItem = find(legendItem_1, function (item) {\n return item.value === value;\n });\n // 使用 legend 中的 unchecked 来判断,使得支持关闭多个图例\n return !curLegendItem.unchecked;\n });\n }\n });\n chart.render(true);\n });\n }\n }\n });\n }\n return params;\n}\n/**\n * 双轴图 slider 适配器\n * @param params\n */\nexport function slider(params) {\n var chart = params.chart,\n options = params.options;\n var slider = options.slider;\n var leftView = findViewById(chart, LEFT_AXES_VIEW);\n var rightView = findViewById(chart, RIGHT_AXES_VIEW);\n if (slider) {\n // 左 View\n leftView.option('slider', slider);\n // 监听左侧 slider 改变事件, 同步右侧 View 视图\n leftView.on('slider:valuechanged', function (evt) {\n var _a = evt.event,\n value = _a.value,\n originValue = _a.originValue;\n if (isEqual(value, originValue)) {\n return;\n }\n doSliderFilter(rightView, value);\n });\n chart.once('afterpaint', function () {\n // 初始化数据,配置默认值时需要同步\n if (!isBoolean(slider)) {\n var start = slider.start,\n end = slider.end;\n if (start || end) {\n doSliderFilter(rightView, [start, end]);\n }\n }\n });\n }\n return params;\n}\n/**\n * 双折线图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n // transformOptions 一定在最前面处理;color legend 使用了 beforepaint,为便于理解放在最后面\n return flow(transformOptions, createViews,\n // 主题靠前设置,作为最低优先级\n theme, geometry, meta, axis, limitInPlot, tooltip, interaction, annotation, animation, color, legend, slider)(params);\n}","import { __assign } from \"tslib\";\nimport { each } from '@antv/util';\nimport { line, point } from '../../../adaptor/geometries';\nimport { deepAssign, pick } from '../../../utils';\nimport { adaptor as columnAdaptor } from '../../column/adaptor';\nimport { isColumn, isLine } from './option';\n/**\n * 绘制单个图形\n * @param params\n */\nexport function drawSingleGeometry(params) {\n var options = params.options,\n chart = params.chart;\n var geometryOption = options.geometryOption;\n var isStack = geometryOption.isStack,\n color = geometryOption.color,\n seriesField = geometryOption.seriesField,\n groupField = geometryOption.groupField,\n isGroup = geometryOption.isGroup;\n var FIELD_KEY = ['xField', 'yField'];\n if (isLine(geometryOption)) {\n // 绘制线\n line(deepAssign({}, params, {\n options: __assign(__assign(__assign({}, pick(options, FIELD_KEY)), geometryOption), {\n line: {\n color: geometryOption.color,\n style: geometryOption.lineStyle\n }\n })\n }));\n // 绘制点\n point(deepAssign({}, params, {\n options: __assign(__assign(__assign({}, pick(options, FIELD_KEY)), geometryOption), {\n point: geometryOption.point && __assign({\n color: color,\n shape: 'circle'\n }, geometryOption.point)\n })\n }));\n // adjust\n var adjust_1 = [];\n if (isGroup) {\n adjust_1.push({\n type: 'dodge',\n dodgeBy: groupField || seriesField,\n customOffset: 0\n });\n }\n if (isStack) {\n adjust_1.push({\n type: 'stack'\n });\n }\n if (adjust_1.length) {\n each(chart.geometries, function (g) {\n g.adjust(adjust_1);\n });\n }\n }\n if (isColumn(geometryOption)) {\n columnAdaptor(deepAssign({}, params, {\n options: __assign(__assign(__assign({}, pick(options, FIELD_KEY)), geometryOption), {\n widthRatio: geometryOption.columnWidthRatio,\n interval: __assign(__assign({}, pick(geometryOption, ['color'])), {\n style: geometryOption.columnStyle\n })\n })\n }));\n }\n return params;\n}","import { __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { deepAssign } from '../../utils';\nimport { adaptor } from './adaptor';\nvar DualAxes = /** @class */function (_super) {\n __extends(DualAxes, _super);\n function DualAxes() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型: 双轴图 */\n _this.type = 'dual-axes';\n return _this;\n }\n /**\n * 获取 双轴图 默认配置\n */\n DualAxes.prototype.getDefaultOptions = function () {\n return deepAssign({}, _super.prototype.getDefaultOptions.call(this), {\n yAxis: [],\n syncViewPadding: true\n });\n };\n /**\n * 获取双轴图的适配器\n */\n DualAxes.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return DualAxes;\n}(Plot);\nexport { DualAxes };","import { __assign } from \"tslib\";\nimport { each, omit } from '@antv/util';\nimport { theme } from '../../adaptor/common';\nimport { AXIS_META_CONFIG_KEYS } from '../../constant';\nimport { deepAssign, flow, pick } from '../../utils';\nimport { execPlotAdaptor } from '../mix/utils';\nimport { execViewAdaptor } from './utils';\nfunction facetAdaptor(params) {\n var chart = params.chart,\n options = params.options;\n var facetType = options.type,\n data = options.data,\n fields = options.fields,\n _eachView = options.eachView;\n var restFacetCfg = omit(options, ['type', 'data', 'fields', 'eachView', 'axes', 'meta', 'tooltip', 'coordinate', 'theme', 'legend', 'interactions', 'annotations']);\n // 1. data\n chart.data(data);\n // 2. facet\n chart.facet(facetType, __assign(__assign({}, restFacetCfg), {\n fields: fields,\n eachView: function eachView(viewOfG2, facet) {\n var viewOptions = _eachView(viewOfG2, facet);\n if (viewOptions.geometries) {\n execViewAdaptor(viewOfG2, viewOptions);\n } else {\n var plot = viewOptions;\n var plotOptions = plot.options;\n // @ts-ignore 仪表盘没 tooltip\n if (plotOptions.tooltip) {\n // 配置 tooltip 交互\n viewOfG2.interaction('tooltip');\n }\n execPlotAdaptor(plot.type, viewOfG2, plotOptions);\n }\n }\n }));\n return params;\n}\nfunction component(params) {\n var chart = params.chart,\n options = params.options;\n var axes = options.axes,\n meta = options.meta,\n tooltip = options.tooltip,\n coordinate = options.coordinate,\n theme = options.theme,\n legend = options.legend,\n interactions = options.interactions,\n annotations = options.annotations;\n // 3. meta 配置\n var scales = {};\n if (axes) {\n each(axes, function (axis, field) {\n scales[field] = pick(axis, AXIS_META_CONFIG_KEYS);\n });\n }\n scales = deepAssign({}, meta, scales);\n chart.scale(scales);\n // 4. coordinate 配置\n chart.coordinate(coordinate);\n // 5. axis 轴配置 (默认不展示)\n if (!axes) {\n chart.axis(false);\n } else {\n each(axes, function (axis, field) {\n chart.axis(field, axis);\n });\n }\n // 6. tooltip 配置\n if (tooltip) {\n chart.interaction('tooltip');\n chart.tooltip(tooltip);\n } else if (tooltip === false) {\n chart.removeInteraction('tooltip');\n }\n // 7. legend 配置(默认展示)\n chart.legend(legend);\n // theme 配置\n if (theme) {\n chart.theme(theme);\n }\n // 8. interactions\n each(interactions, function (interaction) {\n if (interaction.enable === false) {\n chart.removeInteraction(interaction.type);\n } else {\n chart.interaction(interaction.type, interaction.cfg);\n }\n });\n // 9. annotations\n each(annotations, function (annotation) {\n chart.annotation()[annotation.type](__assign({}, annotation));\n });\n return params;\n}\n/**\n * 分面图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n // flow 的方式处理所有的配置到 G2 API\n return flow(theme, facetAdaptor, component)(params);\n}","import { __assign } from \"tslib\";\nimport { each } from '@antv/util';\nimport { geometry as geometryAdaptor } from '../../adaptor/geometries/base';\nimport { AXIS_META_CONFIG_KEYS } from '../../constant';\nimport { addViewAnimation, deepAssign, pick } from '../../utils';\n/**\n *\n * @param params 分面图 参数\n * @returns facet eachView 的回调设置每个 view 的展示\n */\nexport function execViewAdaptor(viewOfG2, options) {\n var data = options.data,\n coordinate = options.coordinate,\n interactions = options.interactions,\n annotations = options.annotations,\n animation = options.animation,\n tooltip = options.tooltip,\n axes = options.axes,\n meta = options.meta,\n geometries = options.geometries;\n // 1. data, optional\n if (data) {\n viewOfG2.data(data);\n }\n // 2. meta 配置\n var scales = {};\n if (axes) {\n each(axes, function (axis, field) {\n scales[field] = pick(axis, AXIS_META_CONFIG_KEYS);\n });\n }\n scales = deepAssign({}, meta, scales);\n viewOfG2.scale(scales);\n // 3. coordinate 配置 (默认由顶层决定)\n if (coordinate) {\n viewOfG2.coordinate(coordinate);\n }\n // 4. axis 轴配置 (默认由顶层决定,但可以通过 false 强制关闭)\n if (axes === false) {\n viewOfG2.axis(false);\n } else {\n each(axes, function (axis, field) {\n viewOfG2.axis(field, axis);\n });\n }\n each(geometries, function (geometry) {\n // Geometry\n var ext = geometryAdaptor({\n chart: viewOfG2,\n options: geometry\n }).ext;\n // Geometry adjust\n var adjust = geometry.adjust;\n if (adjust) {\n ext.geometry.adjust(adjust);\n }\n });\n // 5. interactions\n each(interactions, function (interaction) {\n if (interaction.enable === false) {\n viewOfG2.removeInteraction(interaction.type);\n } else {\n viewOfG2.interaction(interaction.type, interaction.cfg);\n }\n });\n // 6. annotations\n each(annotations, function (annotation) {\n viewOfG2.annotation()[annotation.type](__assign({}, annotation));\n });\n // 7. animation (先做动画)\n addViewAnimation(viewOfG2, animation);\n if (tooltip) {\n // 8. tooltip\n viewOfG2.interaction('tooltip');\n viewOfG2.tooltip(tooltip);\n } else if (tooltip === false) {\n viewOfG2.removeInteraction('tooltip');\n }\n}","/**\n * 分面图 默认配置项\n */\nexport var DEFAULT_OPTIONS = {\n title: {\n style: {\n fontSize: 12,\n fill: 'rgba(0,0,0,0.65)'\n }\n },\n rowTitle: {\n style: {\n fontSize: 12,\n fill: 'rgba(0,0,0,0.65)'\n }\n },\n columnTitle: {\n style: {\n fontSize: 12,\n fill: 'rgba(0,0,0,0.65)'\n }\n }\n};","import { __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { adaptor } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constant';\nvar Facet = /** @class */function (_super) {\n __extends(Facet, _super);\n function Facet() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'area';\n return _this;\n }\n /**\n * 获取 分面图 默认配置项\n * 供外部使用\n */\n Facet.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * 获取 分面图 默认配置\n */\n Facet.prototype.getDefaultOptions = function () {\n return Facet.getDefaultOptions();\n };\n /**\n * 获取 分面图 的适配器\n */\n Facet.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Facet;\n}(Plot);\nexport { Facet };","import { __rest } from \"tslib\";\nimport { get, isNumber } from '@antv/util';\nimport { animation, annotation, interaction, pattern, scale, state, theme, tooltip } from '../../adaptor/common';\nimport { geometry as geometryAdaptor } from '../../adaptor/geometries/base';\nimport { deepAssign, findGeometry, flow, transformLabel } from '../../utils';\nimport { getTooltipMapping } from '../../utils/tooltip';\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var data = options.data,\n type = options.type,\n xField = options.xField,\n yField = options.yField,\n colorField = options.colorField,\n sizeField = options.sizeField,\n sizeRatio = options.sizeRatio,\n shape = options.shape,\n color = options.color,\n tooltip = options.tooltip,\n heatmapStyle = options.heatmapStyle,\n meta = options.meta;\n chart.data(data);\n var geometryType = 'polygon';\n if (type === 'density') {\n geometryType = 'heatmap';\n }\n var _a = getTooltipMapping(tooltip, [xField, yField, colorField]),\n fields = _a.fields,\n formatter = _a.formatter;\n /**\n * The ratio between the actual size and the max available size, must be in range `[0,1]`.\n *\n * If the `sizeRatio` attribute is undefined or it exceeds the range,\n * `checkedSizeRatio` would be set to 1 as default.\n */\n var checkedSizeRatio = 1;\n if (sizeRatio || sizeRatio === 0) {\n if (!shape && !sizeField) {\n console.warn('sizeRatio is not in effect: Must define shape or sizeField first');\n } else if (sizeRatio < 0 || sizeRatio > 1) {\n console.warn('sizeRatio is not in effect: It must be a number in [0,1]');\n } else {\n checkedSizeRatio = sizeRatio;\n }\n }\n geometryAdaptor(deepAssign({}, params, {\n options: {\n type: geometryType,\n colorField: colorField,\n tooltipFields: fields,\n shapeField: sizeField || '',\n label: undefined,\n mapping: {\n tooltip: formatter,\n shape: shape && (sizeField ? function (dautm) {\n var field = data.map(function (row) {\n return row[sizeField];\n });\n var _a = (meta === null || meta === void 0 ? void 0 : meta[sizeField]) || {},\n min = _a.min,\n max = _a.max;\n min = isNumber(min) ? min : Math.min.apply(Math, field);\n max = isNumber(max) ? max : Math.max.apply(Math, field);\n return [shape, (get(dautm, sizeField) - min) / (max - min), checkedSizeRatio];\n } : function () {\n return [shape, 1, checkedSizeRatio];\n }),\n color: color || colorField && chart.getTheme().sequenceColors.join('-'),\n style: heatmapStyle\n }\n }\n }));\n return params;\n}\n/**\n * meta 配置\n * @param params\n */\nfunction meta(params) {\n var _a;\n var options = params.options;\n var xAxis = options.xAxis,\n yAxis = options.yAxis,\n xField = options.xField,\n yField = options.yField;\n return flow(scale((_a = {}, _a[xField] = xAxis, _a[yField] = yAxis, _a)))(params);\n}\n/**\n * axis 配置\n * @param params\n */\nfunction axis(params) {\n var chart = params.chart,\n options = params.options;\n var xAxis = options.xAxis,\n yAxis = options.yAxis,\n xField = options.xField,\n yField = options.yField;\n // 为 false 则是不显示轴\n if (xAxis === false) {\n chart.axis(xField, false);\n } else {\n chart.axis(xField, xAxis);\n }\n if (yAxis === false) {\n chart.axis(yField, false);\n } else {\n chart.axis(yField, yAxis);\n }\n return params;\n}\n/**\n * legend 配置\n * @param params\n */\nfunction legend(params) {\n var chart = params.chart,\n options = params.options;\n var legend = options.legend,\n colorField = options.colorField,\n sizeField = options.sizeField,\n sizeLegend = options.sizeLegend;\n /** legend 不为 false, 则展示图例, 优先展示 color 分类图例 */\n var showLegend = legend !== false;\n if (colorField) {\n chart.legend(colorField, showLegend ? legend : false);\n }\n // 旧版本: 有 sizeField 就有 sizeLegend. 这里默认继承下 legend 配置\n if (sizeField) {\n chart.legend(sizeField, sizeLegend === undefined ? legend : sizeLegend);\n }\n /** 默认没有 sizeField,则隐藏连续图例 */\n if (!showLegend && !sizeLegend) {\n chart.legend(false);\n }\n return params;\n}\n/**\n * fixme 后续确认下,数据标签的逻辑为啥和通用的不一致\n * 数据标签\n * @param params\n */\nfunction label(params) {\n var chart = params.chart,\n options = params.options;\n var label = options.label,\n colorField = options.colorField,\n type = options.type;\n var geometry = findGeometry(chart, type === 'density' ? 'heatmap' : 'polygon');\n if (!label) {\n geometry.label(false);\n } else if (colorField) {\n var callback = label.callback,\n cfg = __rest(label, [\"callback\"]);\n geometry.label({\n fields: [colorField],\n callback: callback,\n cfg: transformLabel(cfg)\n });\n }\n return params;\n}\n/**\n * 极坐标\n * @param params\n */\nfunction coordinate(params) {\n var _a, _b;\n var chart = params.chart,\n options = params.options;\n var coordinate = options.coordinate,\n reflect = options.reflect;\n var coordinateOption = deepAssign({\n actions: []\n }, coordinate !== null && coordinate !== void 0 ? coordinate : {\n type: 'rect'\n });\n if (reflect) {\n (_b = (_a = coordinateOption.actions) === null || _a === void 0 ? void 0 : _a.push) === null || _b === void 0 ? void 0 : _b.call(_a, ['reflect', reflect]);\n }\n chart.coordinate(coordinateOption);\n return params;\n}\n/**\n * 热力图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n // flow 的方式处理所有的配置到 G2 API\n return flow(theme, pattern('heatmapStyle'), meta, coordinate, geometry, axis, legend, tooltip, label, annotation(), interaction, animation, state)(params);\n}","import { Plot } from '../../core/plot';\nimport { deepAssign } from '../../utils';\n/**\n * 色块图默认配置项\n */\nexport var DEFAULT_OPTIONS = deepAssign({}, Plot.getDefaultOptions(), {\n type: 'polygon',\n legend: false,\n coordinate: {\n type: 'rect'\n },\n xAxis: {\n tickLine: null,\n line: null,\n grid: {\n alignTick: false,\n line: {\n style: {\n lineWidth: 1,\n lineDash: null,\n stroke: '#f0f0f0'\n }\n }\n }\n },\n yAxis: {\n grid: {\n alignTick: false,\n line: {\n style: {\n lineWidth: 1,\n lineDash: null,\n stroke: '#f0f0f0'\n }\n }\n }\n }\n});","import { __assign } from \"tslib\";\nimport { registerShape } from '@antv/g2';\nregisterShape('polygon', 'circle', {\n draw: function draw(cfg, group) {\n var _a, _b;\n var cx = cfg.x;\n var cy = cfg.y;\n var points = this.parsePoints(cfg.points);\n var width = Math.abs(points[2].x - points[1].x);\n var height = Math.abs(points[1].y - points[0].y);\n var maxRadius = Math.min(width, height) / 2;\n var value = Number(cfg.shape[1]);\n var sizeRatio = Number(cfg.shape[2]);\n var radiusRatio = Math.sqrt(sizeRatio);\n var radius = maxRadius * radiusRatio * Math.sqrt(value);\n var fill = ((_a = cfg.style) === null || _a === void 0 ? void 0 : _a.fill) || cfg.color || ((_b = cfg.defaultStyle) === null || _b === void 0 ? void 0 : _b.fill);\n var polygon = group.addShape('circle', {\n attrs: __assign(__assign(__assign({\n x: cx,\n y: cy,\n r: radius\n }, cfg.defaultStyle), cfg.style), {\n fill: fill\n })\n });\n return polygon;\n }\n});","import { __assign } from \"tslib\";\nimport { registerShape } from '@antv/g2';\nregisterShape('polygon', 'square', {\n draw: function draw(cfg, group) {\n var _a, _b;\n var cx = cfg.x;\n var cy = cfg.y;\n var points = this.parsePoints(cfg.points);\n var width = Math.abs(points[2].x - points[1].x);\n var height = Math.abs(points[1].y - points[0].y);\n var maxSideLength = Math.min(width, height);\n var value = Number(cfg.shape[1]);\n var sizeRatio = Number(cfg.shape[2]);\n var lenRatio = Math.sqrt(sizeRatio);\n var sideLength = maxSideLength * lenRatio * Math.sqrt(value);\n var fill = ((_a = cfg.style) === null || _a === void 0 ? void 0 : _a.fill) || cfg.color || ((_b = cfg.defaultStyle) === null || _b === void 0 ? void 0 : _b.fill);\n var polygon = group.addShape('rect', {\n attrs: __assign(__assign(__assign({\n x: cx - sideLength / 2,\n y: cy - sideLength / 2,\n width: sideLength,\n height: sideLength\n }, cfg.defaultStyle), cfg.style), {\n fill: fill\n })\n });\n return polygon;\n }\n});","import { __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { adaptor } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constant';\n// registered shapes\nimport './shapes/circle';\nimport './shapes/square';\nvar Heatmap = /** @class */function (_super) {\n __extends(Heatmap, _super);\n function Heatmap() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'heatmap';\n return _this;\n }\n /**\n * 获取 柱形图 默认配置项\n * 供外部使用\n */\n Heatmap.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * 获取直方图的适配器\n */\n Heatmap.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n /**\n * 获取 色块图 默认配置\n */\n Heatmap.prototype.getDefaultOptions = function () {\n return Heatmap.getDefaultOptions();\n };\n return Heatmap;\n}(Plot);\nexport { Heatmap };","var CAT_VALUE = 'liquid';\n/**\n * 获取水波图数据\n */\nexport function getLiquidData(percent) {\n return [{\n percent: percent,\n type: CAT_VALUE\n }];\n}","import { __assign } from \"tslib\";\nimport { get, isNil } from '@antv/util';\nimport { animation, interaction, pattern, scale, theme } from '../../adaptor/common';\nimport { interval } from '../../adaptor/geometries';\nimport { deepAssign, flow, renderStatistic } from '../../utils';\nimport { getLiquidData } from './utils';\n/**\n * geometry 处理\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var percent = options.percent,\n liquidStyle = options.liquidStyle,\n radius = options.radius,\n outline = options.outline,\n wave = options.wave,\n shape = options.shape,\n shapeStyle = options.shapeStyle,\n animation = options.animation;\n chart.scale({\n percent: {\n min: 0,\n max: 1\n }\n });\n chart.data(getLiquidData(percent));\n var color = options.color || chart.getTheme().defaultColor;\n var p = deepAssign({}, params, {\n options: {\n xField: 'type',\n yField: 'percent',\n // radius 放到 columnWidthRatio 中。\n // 保证横向的大小是根据 radius 生成的\n widthRatio: radius,\n interval: {\n color: color,\n style: liquidStyle,\n shape: 'liquid-fill-gauge'\n }\n }\n });\n var ext = interval(p).ext;\n var geometry = ext.geometry;\n var background = chart.getTheme().background;\n var customInfo = {\n percent: percent,\n radius: radius,\n outline: outline,\n wave: wave,\n shape: shape,\n shapeStyle: shapeStyle,\n background: background,\n animation: animation\n };\n // 将 radius 传入到自定义 shape 中\n geometry.customInfo(customInfo);\n // 关闭组件\n chart.legend(false);\n chart.axis(false);\n chart.tooltip(false);\n return params;\n}\n/**\n * 统计指标文档\n * @param params\n */\nexport function statistic(params, updated) {\n var chart = params.chart,\n options = params.options;\n var statistic = options.statistic,\n percent = options.percent,\n meta = options.meta;\n // 先清空标注,再重新渲染\n chart.getController('annotation').clear(true);\n var metaFormatter = get(meta, ['percent', 'formatter']) || function (v) {\n return \"\".concat((v * 100).toFixed(2), \"%\");\n };\n var contentOpt = statistic.content;\n if (contentOpt) {\n contentOpt = deepAssign({}, contentOpt, {\n content: !isNil(contentOpt.content) ? contentOpt.content : metaFormatter(percent)\n });\n }\n renderStatistic(chart, {\n statistic: __assign(__assign({}, statistic), {\n content: contentOpt\n }),\n plotType: 'liquid'\n }, {\n percent: percent\n });\n if (updated) {\n chart.render(true);\n }\n return params;\n}\n/**\n * 水波图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n // flow 的方式处理所有的配置到 G2 API (主题前置,会影响绘制的取色)\n return flow(theme, pattern('liquidStyle'), geometry, statistic, scale({}), animation, interaction)(params);\n}","/**\n * 水波图默认配置项\n */\nexport var DEFAULT_OPTIONS = {\n radius: 0.9,\n statistic: {\n title: false,\n content: {\n style: {\n opacity: 0.75,\n fontSize: '30px',\n lineHeight: '30px',\n textAlign: 'center'\n }\n }\n },\n outline: {\n border: 2,\n distance: 0\n },\n wave: {\n count: 3,\n length: 192\n },\n shape: 'circle'\n};","import { __assign } from \"tslib\";\nimport { registerShape } from '@antv/g2';\nimport { isNumber, mix, reduce } from '@antv/util';\nimport { transform } from '../../../utils/matrix';\nvar DURATION = 5000;\n/**\n * 一个线性映射的函数\n * @param min\n * @param max\n * @param factor\n */\nfunction lerp(min, max, factor) {\n return min + (max - min) * factor;\n}\n/**\n * 波浪的 attrs\n * @param cfg\n */\nfunction getFillAttrs(cfg) {\n var attrs = __assign({\n opacity: 1\n }, cfg.style);\n if (cfg.color && !attrs.fill) {\n attrs.fill = cfg.color;\n }\n return attrs;\n}\n/**\n * shape 的 attrs\n * @param cfg\n */\nfunction getLineAttrs(cfg) {\n var defaultAttrs = {\n fill: '#fff',\n fillOpacity: 0,\n lineWidth: 4\n };\n var attrs = mix({}, defaultAttrs, cfg.style);\n if (cfg.color && !attrs.stroke) {\n attrs.stroke = cfg.color;\n }\n if (isNumber(cfg.opacity)) {\n attrs.opacity = attrs.strokeOpacity = cfg.opacity;\n }\n return attrs;\n}\n/**\n * 用贝塞尔曲线模拟正弦波\n * Using Bezier curves to fit sine wave.\n * There is 4 control points for each curve of wave,\n * which is at 1/4 wave length of the sine wave.\n *\n * The control points for a wave from (a) to (d) are a-b-c-d:\n * c *----* d\n * b *\n * |\n * ... a * ..................\n *\n * whose positions are a: (0, 0), b: (0.5, 0.5), c: (1, 1), d: (PI / 2, 1)\n *\n * @param x x position of the left-most point (a)\n * @param stage 0-3, stating which part of the wave it is\n * @param waveLength wave length of the sine wave\n * @param amplitude wave amplitude\n * @return 正弦片段曲线\n */\nfunction getWaterWavePositions(x, stage, waveLength, amplitude) {\n if (stage === 0) {\n return [[x + 1 / 2 * waveLength / Math.PI / 2, amplitude / 2], [x + 1 / 2 * waveLength / Math.PI, amplitude], [x + waveLength / 4, amplitude]];\n }\n if (stage === 1) {\n return [[x + 1 / 2 * waveLength / Math.PI / 2 * (Math.PI - 2), amplitude], [x + 1 / 2 * waveLength / Math.PI / 2 * (Math.PI - 1), amplitude / 2], [x + waveLength / 4, 0]];\n }\n if (stage === 2) {\n return [[x + 1 / 2 * waveLength / Math.PI / 2, -amplitude / 2], [x + 1 / 2 * waveLength / Math.PI, -amplitude], [x + waveLength / 4, -amplitude]];\n }\n return [[x + 1 / 2 * waveLength / Math.PI / 2 * (Math.PI - 2), -amplitude], [x + 1 / 2 * waveLength / Math.PI / 2 * (Math.PI - 1), -amplitude / 2], [x + waveLength / 4, 0]];\n}\n/**\n * 获取水波路径\n * @param radius 半径\n * @param waterLevel 水位\n * @param waveLength 波长\n * @param phase 相位\n * @param amplitude 震幅\n * @param cx 圆心x\n * @param cy 圆心y\n * @return path 路径\n * @reference http://gitlab.alipay-inc.com/datavis/g6/blob/1.2.0/src/graph/utils/path.js#L135\n */\nfunction getWaterWavePath(radius, waterLevel, waveLength, phase, amplitude, cx, cy) {\n var curves = Math.ceil(2 * radius / waveLength * 4) * 4;\n var path = [];\n var _phase = phase;\n // map phase to [-Math.PI * 2, 0]\n while (_phase < -Math.PI * 2) {\n _phase += Math.PI * 2;\n }\n while (_phase > 0) {\n _phase -= Math.PI * 2;\n }\n _phase = _phase / Math.PI / 2 * waveLength;\n var left = cx - radius + _phase - radius * 2;\n /**\n * top-left corner as start point\n *\n * draws this point\n * |\n * \\|/\n * ~~~~~~~~\n * | |\n * +------+\n */\n path.push(['M', left, waterLevel]);\n /**\n * top wave\n *\n * ~~~~~~~~ <- draws this sine wave\n * | |\n * +------+\n */\n var waveRight = 0;\n for (var c = 0; c < curves; ++c) {\n var stage = c % 4;\n var pos = getWaterWavePositions(c * waveLength / 4, stage, waveLength, amplitude);\n path.push(['C', pos[0][0] + left, -pos[0][1] + waterLevel, pos[1][0] + left, -pos[1][1] + waterLevel, pos[2][0] + left, -pos[2][1] + waterLevel]);\n if (c === curves - 1) {\n waveRight = pos[2][0];\n }\n }\n /**\n * top-right corner\n *\n * ~~~~~~~~\n * 3. draws this line -> | | <- 1. draws this line\n * +------+\n * ^\n * |\n * 2. draws this line\n */\n path.push(['L', waveRight + left, cy + radius]);\n path.push(['L', left, cy + radius]);\n path.push(['Z']);\n // path.push(['L', left, waterLevel]);\n return path;\n}\n/**\n * 添加水波\n * @param x 中心x\n * @param y 中心y\n * @param level 水位等级 0~1\n * @param waveCount 水波数\n * @param waveAttrs 色值\n * @param group 图组\n * @param clip 用于剪切的图形\n * @param radius 绘制图形的高度\n * @param waveLength 波的长度\n */\nexport function addWaterWave(x, y, level, waveCount, waveAttrs, group, clip, radius, waveLength, animation) {\n // 盒子属性 颜色 宽高\n var fill = waveAttrs.fill,\n opacity = waveAttrs.opacity;\n var bbox = clip.getBBox();\n var width = bbox.maxX - bbox.minX;\n var height = bbox.maxY - bbox.minY;\n // 循环 waveCount 个数\n for (var idx = 0; idx < waveCount; idx++) {\n var factor = waveCount <= 1 ? 1 : idx / (waveCount - 1);\n // 画波\n var wave = group.addShape('path', {\n name: \"waterwave-path\",\n attrs: {\n // 波形路径配置\n path: getWaterWavePath(radius, bbox.minY + height * level, waveLength, 0, width / 32,\n // 波幅高度\n x, y),\n fill: fill,\n opacity: lerp(0.2, 0.9, factor) * opacity\n }\n });\n try {\n // 默认 underfind 开启动画\n if (animation === false) return;\n var matrix = transform([['t', waveLength, 0]]);\n wave.stopAnimate();\n wave.animate({\n matrix: matrix\n }, {\n duration: lerp(0.5 * DURATION, DURATION, factor),\n repeat: true\n });\n } catch (e) {\n // TODO off-screen canvas 中动画会找不到 canvas\n console.warn('off-screen group animate error!');\n }\n }\n}\n/**\n *\n * @param x 中心 x\n * @param y 中心 y\n * @param width 外接矩形的宽\n * @param height 外接矩形的高\n */\nfunction pin(x, y, width, height) {\n var w = width * 2 / 3;\n var h = Math.max(w, height);\n var r = w / 2;\n // attrs of the upper circle\n var cx = x;\n var cy = r + y - h / 2;\n var theta = Math.asin(r / ((h - r) * 0.85));\n var dy = Math.sin(theta) * r;\n var dx = Math.cos(theta) * r;\n // the start point of the path\n var x0 = cx - dx;\n var y0 = cy + dy;\n // control point\n var cpX = x;\n var cpY = cy + r / Math.sin(theta);\n return \"\\n M \".concat(x0, \" \").concat(y0, \"\\n A \").concat(r, \" \").concat(r, \" 0 1 1 \").concat(x0 + dx * 2, \" \").concat(y0, \"\\n Q \").concat(cpX, \" \").concat(cpY, \" \").concat(x, \" \").concat(y + h / 2, \"\\n Q \").concat(cpX, \" \").concat(cpY, \" \").concat(x0, \" \").concat(y0, \"\\n Z \\n \");\n}\n/**\n *\n * @param x 中心 x\n * @param y 中心 y\n * @param width 外接矩形的宽\n * @param height 外接矩形的高\n */\nfunction circle(x, y, width, height) {\n var rx = width / 2;\n var ry = height / 2;\n return \"\\n M \".concat(x, \" \").concat(y - ry, \" \\n a \").concat(rx, \" \").concat(ry, \" 0 1 0 0 \").concat(ry * 2, \"\\n a \").concat(rx, \" \").concat(ry, \" 0 1 0 0 \").concat(-ry * 2, \"\\n Z\\n \");\n}\n/**\n *\n * @param x 中心 x\n * @param y 中心 y\n * @param width 外接矩形的宽\n * @param height 外接矩形的高\n */\nfunction diamond(x, y, width, height) {\n var h = height / 2;\n var w = width / 2;\n return \"\\n M \".concat(x, \" \").concat(y - h, \"\\n L \").concat(x + w, \" \").concat(y, \"\\n L \").concat(x, \" \").concat(y + h, \"\\n L \").concat(x - w, \" \").concat(y, \"\\n Z\\n \");\n}\n/**\n *\n * @param x 中心 x\n * @param y 中心 y\n * @param width 外接矩形的宽\n * @param height 外接矩形的高\n */\nfunction triangle(x, y, width, height) {\n var h = height / 2;\n var w = width / 2;\n return \"\\n M \".concat(x, \" \").concat(y - h, \"\\n L \").concat(x + w, \" \").concat(y + h, \"\\n L \").concat(x - w, \" \").concat(y + h, \"\\n Z\\n \");\n}\n/**\n *\n * @param x 中心 x\n * @param y 中心 y\n * @param width 外接矩形的宽\n * @param height 外接矩形的高\n */\nfunction rect(x, y, width, height) {\n var GOLDEN_SECTION_RATIO = 0.618;\n var h = height / 2;\n var w = width / 2 * GOLDEN_SECTION_RATIO;\n return \"\\n M \".concat(x - w, \" \").concat(y - h, \"\\n L \").concat(x + w, \" \").concat(y - h, \"\\n L \").concat(x + w, \" \").concat(y + h, \"\\n L \").concat(x - w, \" \").concat(y + h, \"\\n Z\\n \");\n}\nvar builtInShapeByName = {\n pin: pin,\n circle: circle,\n diamond: diamond,\n triangle: triangle,\n rect: rect\n};\nregisterShape('interval', 'liquid-fill-gauge', {\n draw: function draw(cfg, container) {\n var cx = 0.5;\n var cy = 0.5;\n var customInfo = cfg.customInfo;\n var _a = customInfo,\n percent = _a.percent,\n radio = _a.radius,\n shape = _a.shape,\n shapeStyle = _a.shapeStyle,\n background = _a.background,\n animation = _a.animation;\n var outline = customInfo.outline;\n var wave = customInfo.wave;\n var border = outline.border,\n distance = outline.distance;\n var waveCount = wave.count,\n waveLength = wave.length;\n // 获取最小 minX\n var minX = reduce(cfg.points, function (r, p) {\n return Math.min(r, p.x);\n }, Infinity);\n var center = this.parsePoint({\n x: cx,\n y: cy\n });\n var minXPoint = this.parsePoint({\n x: minX,\n y: cy\n });\n var halfWidth = center.x - minXPoint.x;\n // 保证半径是 画布宽高最小值的 radius 值\n var radius = Math.min(halfWidth, minXPoint.y * radio);\n var waveAttrs = getFillAttrs(cfg);\n var outlineAttrs = getLineAttrs(mix({}, cfg, outline));\n var innerRadius = radius - border / 2;\n var buildPath = typeof shape === 'function' ? shape : builtInShapeByName[shape] || builtInShapeByName['circle'];\n var shapePath = buildPath(center.x, center.y, innerRadius * 2, innerRadius * 2);\n // 1. 当 shapeStyle 不为空时,绘制形状样式作为背景\n if (shapeStyle) {\n container.addShape('path', {\n name: 'shape',\n attrs: __assign({\n path: shapePath\n }, shapeStyle)\n });\n }\n // 比例大于 0 时才绘制水波\n if (percent > 0) {\n // 2. 绘制一个波\n var waves = container.addGroup({\n name: 'waves'\n });\n // 3. 波对应的 clip 裁剪形状\n var clipPath = waves.setClip({\n type: 'path',\n attrs: {\n path: shapePath\n }\n });\n // 4. 绘制波形\n addWaterWave(center.x, center.y, 1 - cfg.points[1].y, waveCount, waveAttrs, waves, clipPath, radius * 2, waveLength, animation);\n }\n // 5. 绘制一个 distance 宽的 border\n container.addShape('path', {\n name: 'distance',\n attrs: {\n path: shapePath,\n fill: 'transparent',\n lineWidth: border + distance * 2,\n stroke: background === 'transparent' ? '#fff' : background\n }\n });\n // 6. 绘制一个 border 宽的 border\n container.addShape('path', {\n name: 'wrap',\n attrs: mix(outlineAttrs, {\n path: shapePath,\n fill: 'transparent',\n lineWidth: border\n })\n });\n return container;\n }\n});","import { __extends } from \"tslib\";\nimport { Event, VIEW_LIFE_CIRCLE } from '@antv/g2';\nimport { Plot } from '../../core/plot';\nimport { adaptor, statistic } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constants';\n// register liquid shape\nimport './shapes/liquid';\nimport { getLiquidData } from './utils';\nexport { addWaterWave } from './shapes/liquid';\n/**\n * 传说中的水波图\n */\nvar Liquid = /** @class */function (_super) {\n __extends(Liquid, _super);\n function Liquid() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'liquid';\n return _this;\n }\n /**\n * 获取 饼图 默认配置项\n * 供外部使用\n */\n Liquid.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * 获取 水波图 默认配置项, 供 base 获取\n */\n Liquid.prototype.getDefaultOptions = function () {\n return Liquid.getDefaultOptions();\n };\n /**\n * 更新数据\n * @param percent\n */\n Liquid.prototype.changeData = function (percent) {\n this.chart.emit(VIEW_LIFE_CIRCLE.BEFORE_CHANGE_DATA, Event.fromData(this.chart, VIEW_LIFE_CIRCLE.BEFORE_CHANGE_DATA, null));\n this.updateOption({\n percent: percent\n });\n this.chart.data(getLiquidData(percent));\n statistic({\n chart: this.chart,\n options: this.options\n }, true);\n this.chart.emit(VIEW_LIFE_CIRCLE.AFTER_CHANGE_DATA, Event.fromData(this.chart, VIEW_LIFE_CIRCLE.AFTER_CHANGE_DATA, null));\n };\n /**\n * 获取适配器\n */\n Liquid.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Liquid;\n}(Plot);\nexport { Liquid };","import { __assign, __rest } from \"tslib\";\nimport { animation, annotation, interaction, legend, scale, theme, tooltip } from '../../adaptor/common';\nimport { area, line, point } from '../../adaptor/geometries';\nimport { deepAssign, findGeometry, flow, transformLabel } from '../../utils';\n/**\n * geometry 配置处理\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var data = options.data,\n lineStyle = options.lineStyle,\n color = options.color,\n pointOptions = options.point,\n areaOptions = options.area;\n chart.data(data);\n // 雷达图 主 geometry\n var primary = deepAssign({}, params, {\n options: {\n line: {\n style: lineStyle,\n color: color\n },\n point: pointOptions ? __assign({\n color: color\n }, pointOptions) : pointOptions,\n area: areaOptions ? __assign({\n color: color\n }, areaOptions) : areaOptions,\n // label 不传递给各个 geometry adaptor,由 label adaptor 处理\n label: undefined\n }\n });\n // 副 Geometry\n var second = deepAssign({}, primary, {\n options: {\n tooltip: false\n }\n });\n // 优先使用 point.state, 其次取主元素的 state 状态样式配置\n var pointState = (pointOptions === null || pointOptions === void 0 ? void 0 : pointOptions.state) || options.state;\n var pointParams = deepAssign({}, primary, {\n options: {\n tooltip: false,\n state: pointState\n }\n });\n line(primary);\n point(pointParams);\n area(second);\n return params;\n}\n/**\n * meta 配置\n * @param params\n */\nfunction meta(params) {\n var _a;\n var options = params.options;\n var xAxis = options.xAxis,\n yAxis = options.yAxis,\n xField = options.xField,\n yField = options.yField;\n return flow(scale((_a = {}, _a[xField] = xAxis, _a[yField] = yAxis, _a)))(params);\n}\n/**\n * coord 配置\n * @param params\n */\nfunction coord(params) {\n var chart = params.chart,\n options = params.options;\n var radius = options.radius,\n startAngle = options.startAngle,\n endAngle = options.endAngle;\n chart.coordinate('polar', {\n radius: radius,\n startAngle: startAngle,\n endAngle: endAngle\n });\n return params;\n}\n/**\n * axis 配置\n * @param params\n */\nfunction axis(params) {\n var chart = params.chart,\n options = params.options;\n var xField = options.xField,\n xAxis = options.xAxis,\n yField = options.yField,\n yAxis = options.yAxis;\n chart.axis(xField, xAxis);\n chart.axis(yField, yAxis);\n return params;\n}\n/**\n * label 配置\n * @param params\n */\nfunction label(params) {\n var chart = params.chart,\n options = params.options;\n var label = options.label,\n yField = options.yField;\n var geometry = findGeometry(chart, 'line');\n if (!label) {\n geometry.label(false);\n } else {\n var callback = label.callback,\n cfg = __rest(label, [\"callback\"]);\n geometry.label({\n fields: [yField],\n callback: callback,\n cfg: transformLabel(cfg)\n });\n }\n return params;\n}\n/**\n * 雷达图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n // flow 的方式处理所有的配置到 G2 API\n return flow(geometry, meta, theme, coord, axis, legend, tooltip, label, interaction, animation, annotation())(params);\n}","import { __assign, __extends } from \"tslib\";\nimport { Action, registerComponentController, TooltipController, Util } from '@antv/g2';\nimport { isNil } from '@antv/util';\nvar RadarTooltipController = /** @class */function (_super) {\n __extends(RadarTooltipController, _super);\n function RadarTooltipController() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(RadarTooltipController.prototype, \"name\", {\n get: function get() {\n return 'radar-tooltip';\n },\n enumerable: false,\n configurable: true\n });\n RadarTooltipController.prototype.getTooltipItems = function (point) {\n var _a = this.getTooltipCfg(),\n shared = _a.shared,\n cfgTitle = _a.title;\n var hintItems = _super.prototype.getTooltipItems.call(this, point);\n if (hintItems.length > 0) {\n var geometry_1 = this.view.geometries[0];\n var dataArray = geometry_1.dataArray;\n var title_1 = hintItems[0].name;\n var result_1 = [];\n dataArray.forEach(function (mappingData) {\n mappingData.forEach(function (d) {\n var items = Util.getTooltipItems(d, geometry_1);\n var item = items[0];\n if (!shared && item && item.name === title_1) {\n var displayTitle = isNil(cfgTitle) ? title_1 : cfgTitle;\n result_1.push(__assign(__assign({}, item), {\n name: item.title,\n title: displayTitle\n }));\n } else if (shared && item) {\n var displayTitle = isNil(cfgTitle) ? item.name || title_1 : cfgTitle;\n result_1.push(__assign(__assign({}, item), {\n name: item.title,\n title: displayTitle\n }));\n }\n });\n });\n return result_1;\n }\n return [];\n };\n return RadarTooltipController;\n}(TooltipController);\nexport { RadarTooltipController };\nregisterComponentController('radar-tooltip', RadarTooltipController);\n/**\n * 雷达图 tooltip 激活 action\n */\nvar RadarTooltipAction = /** @class */function (_super) {\n __extends(RadarTooltipAction, _super);\n function RadarTooltipAction() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n RadarTooltipAction.prototype.init = function () {\n var view = this.context.view;\n view.removeInteraction('tooltip');\n };\n RadarTooltipAction.prototype.show = function () {\n var event = this.context.event;\n var controller = this.getTooltipController();\n controller.showTooltip({\n x: event.x,\n y: event.y\n });\n };\n RadarTooltipAction.prototype.hide = function () {\n var controller = this.getTooltipController();\n controller.hideTooltip();\n };\n RadarTooltipAction.prototype.getTooltipController = function () {\n var view = this.context.view;\n return view.getController('radar-tooltip');\n };\n return RadarTooltipAction;\n}(Action);\nexport { RadarTooltipAction };","import { registerAction, registerInteraction } from '@antv/g2';\nimport { RadarTooltipAction } from './radar-tooltip-action';\nregisterAction('radar-tooltip', RadarTooltipAction);\nregisterInteraction('radar-tooltip', {\n start: [{\n trigger: 'plot:mousemove',\n action: 'radar-tooltip:show'\n }],\n end: [{\n trigger: 'plot:mouseleave',\n action: 'radar-tooltip:hide'\n }]\n});","import { __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { deepAssign } from '../../utils';\nimport { adaptor } from './adaptor';\nimport './interactions';\nvar Radar = /** @class */function (_super) {\n __extends(Radar, _super);\n function Radar() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'radar';\n return _this;\n }\n /**\n * @override\n * @param data\n */\n Radar.prototype.changeData = function (data) {\n this.updateOption({\n data: data\n });\n this.chart.changeData(data);\n };\n /**\n * 获取 雷达图 默认配置\n */\n Radar.prototype.getDefaultOptions = function () {\n return deepAssign({}, _super.prototype.getDefaultOptions.call(this), {\n xAxis: {\n label: {\n offset: 15\n },\n grid: {\n line: {\n type: 'line'\n }\n }\n },\n yAxis: {\n grid: {\n line: {\n type: 'circle'\n }\n }\n },\n legend: {\n position: 'top'\n },\n tooltip: {\n shared: true,\n showCrosshairs: true,\n showMarkers: true,\n crosshairs: {\n type: 'xy',\n line: {\n style: {\n stroke: '#565656',\n lineDash: [4]\n }\n },\n follow: true\n }\n }\n });\n };\n /**\n * 获取 雷达图 的适配器\n */\n Radar.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Radar;\n}(Plot);\nexport { Radar };","import { __assign } from \"tslib\";\nexport function getScaleMax(maxAngle, yField, data) {\n var yData = data.map(function (item) {\n return item[yField];\n }).filter(function (v) {\n return v !== undefined;\n });\n var maxValue = yData.length > 0 ? Math.max.apply(Math, yData) : 0;\n var formatRadian = Math.abs(maxAngle) % 360;\n if (!formatRadian) {\n return maxValue;\n }\n return maxValue * 360 / formatRadian;\n}\n/**\n * 获取堆叠之后的数据\n */\nexport function getStackedData(data, xField, yField) {\n var stackedData = [];\n data.forEach(function (item) {\n var valueItem = stackedData.find(function (v) {\n return v[xField] === item[xField];\n });\n if (valueItem) {\n valueItem[yField] += item[yField] || null;\n } else {\n stackedData.push(__assign({}, item));\n }\n });\n return stackedData;\n}","import { __assign, __rest } from \"tslib\";\nimport { animation, annotation, interaction, legend, scale, theme, tooltip } from '../../adaptor/common';\nimport { interval, point } from '../../adaptor/geometries';\nimport { pattern } from '../../adaptor/pattern';\nimport { deepAssign, findGeometry, flow, processIllegalData, transformLabel } from '../../utils';\nimport { getScaleMax, getStackedData } from './utils';\n/**\n * geometry 处理\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var style = options.barStyle,\n color = options.color,\n tooltip = options.tooltip,\n colorField = options.colorField,\n type = options.type,\n xField = options.xField,\n yField = options.yField,\n data = options.data,\n shape = options.shape;\n // 处理不合法的数据\n var processData = processIllegalData(data, yField);\n chart.data(processData);\n var p = deepAssign({}, params, {\n options: {\n tooltip: tooltip,\n seriesField: colorField,\n interval: {\n style: style,\n color: color,\n shape: shape || (type === 'line' ? 'line' : 'intervel')\n },\n // 柱子的一些样式设置:柱子最小宽度、柱子最大宽度、柱子背景\n minColumnWidth: options.minBarWidth,\n maxColumnWidth: options.maxBarWidth,\n columnBackground: options.barBackground\n }\n });\n interval(p);\n if (type === 'line') {\n point({\n chart: chart,\n options: {\n xField: xField,\n yField: yField,\n seriesField: colorField,\n point: {\n shape: 'circle',\n color: color\n }\n }\n });\n }\n return params;\n}\n/**\n * meta 配置\n * @param params\n */\nexport function meta(params) {\n var _a;\n var options = params.options;\n var yField = options.yField,\n xField = options.xField,\n data = options.data,\n isStack = options.isStack,\n isGroup = options.isGroup,\n colorField = options.colorField,\n maxAngle = options.maxAngle;\n var actualData = isStack && !isGroup && colorField ? getStackedData(data, xField, yField) : data;\n var processData = processIllegalData(actualData, yField);\n return flow(scale((_a = {}, _a[yField] = {\n min: 0,\n max: getScaleMax(maxAngle, yField, processData)\n }, _a)))(params);\n}\n/**\n * coordinate 配置\n * @param params\n */\nfunction coordinate(params) {\n var chart = params.chart,\n options = params.options;\n var radius = options.radius,\n innerRadius = options.innerRadius,\n startAngle = options.startAngle,\n endAngle = options.endAngle;\n chart.coordinate({\n type: 'polar',\n cfg: {\n radius: radius,\n innerRadius: innerRadius,\n startAngle: startAngle,\n endAngle: endAngle\n }\n }).transpose();\n return params;\n}\n/**\n * axis 配置\n * @param params\n */\nexport function axis(params) {\n var chart = params.chart,\n options = params.options;\n var xField = options.xField,\n xAxis = options.xAxis;\n chart.axis(xField, xAxis);\n return params;\n}\n/**\n * 数据标签\n * @param params\n */\nfunction label(params) {\n var chart = params.chart,\n options = params.options;\n var label = options.label,\n yField = options.yField;\n var intervalGeometry = findGeometry(chart, 'interval');\n // label 为 false, 空 则不显示 label\n if (!label) {\n intervalGeometry.label(false);\n } else {\n var callback = label.callback,\n cfg = __rest(label, [\"callback\"]);\n intervalGeometry.label({\n fields: [yField],\n callback: callback,\n cfg: __assign(__assign({}, transformLabel(cfg)), {\n type: 'polar'\n })\n });\n }\n return params;\n}\n/**\n * 图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n return flow(pattern('barStyle'), geometry, meta, axis, coordinate, interaction, animation, theme, tooltip, legend, annotation(), label)(params);\n}","import { Plot } from '../../core/plot';\nimport { deepAssign } from '../../utils';\n/**\n * 玉珏图 默认配置项\n */\nexport var DEFAULT_OPTIONS = deepAssign({}, Plot.getDefaultOptions(), {\n interactions: [{\n type: 'element-active'\n }],\n legend: false,\n tooltip: {\n showMarkers: false\n },\n xAxis: {\n grid: null,\n tickLine: null,\n line: null\n },\n maxAngle: 240\n});","import { __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { adaptor, meta } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constant';\n/**\n * 玉珏图\n */\nvar RadialBar = /** @class */function (_super) {\n __extends(RadialBar, _super);\n function RadialBar() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'radial-bar';\n return _this;\n }\n RadialBar.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * @override\n * @param data\n */\n RadialBar.prototype.changeData = function (data) {\n this.updateOption({\n data: data\n });\n // 更新玉珏图的 scale\n meta({\n chart: this.chart,\n options: this.options\n });\n this.chart.changeData(data);\n };\n /**\n * 获取默认配置\n */\n RadialBar.prototype.getDefaultOptions = function () {\n return RadialBar.getDefaultOptions();\n };\n /**\n * 获取适配器\n */\n RadialBar.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return RadialBar;\n}(Plot);\nexport { RadialBar };","import { __rest } from \"tslib\";\nimport { filter, isArray, isObject } from '@antv/util';\nimport { animation, annotation, interaction, pattern, scale, state, theme, tooltip } from '../../adaptor/common';\nimport { interval } from '../../adaptor/geometries';\nimport { deepAssign, findGeometry, flow, LEVEL, log, transformLabel } from '../../utils';\n/**\n * geometry 配置处理\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var data = options.data,\n sectorStyle = options.sectorStyle,\n shape = options.shape,\n color = options.color;\n // 装载数据\n chart.data(data);\n flow(interval)(deepAssign({}, params, {\n options: {\n marginRatio: 1,\n interval: {\n style: sectorStyle,\n color: color,\n shape: shape\n }\n }\n }));\n return params;\n}\n/**\n * label 配置\n * @param params\n */\nfunction label(params) {\n var chart = params.chart,\n options = params.options;\n var label = options.label,\n xField = options.xField;\n var geometry = findGeometry(chart, 'interval');\n // label 为 false 不显示 label\n if (label === false) {\n geometry.label(false);\n } else if (isObject(label)) {\n var callback = label.callback,\n fields = label.fields,\n cfg = __rest(label, [\"callback\", \"fields\"]);\n var offset = cfg.offset;\n var layout = cfg.layout;\n // 当 label 在 shape 外部显示时,设置 'limit-in-shape' 会\n // 造成 label 不显示。\n if (offset === undefined || offset >= 0) {\n layout = layout ? isArray(layout) ? layout : [layout] : [];\n cfg.layout = filter(layout, function (v) {\n return v.type !== 'limit-in-shape';\n });\n cfg.layout.length || delete cfg.layout;\n }\n geometry.label({\n fields: fields || [xField],\n callback: callback,\n cfg: transformLabel(cfg)\n });\n } else {\n log(LEVEL.WARN, label === null, 'the label option must be an Object.');\n geometry.label({\n fields: [xField]\n });\n }\n return params;\n}\n/**\n * legend 配置\n * @param params\n */\nexport function legend(params) {\n var chart = params.chart,\n options = params.options;\n var legend = options.legend,\n seriesField = options.seriesField;\n if (legend === false) {\n chart.legend(false);\n } else if (seriesField) {\n chart.legend(seriesField, legend);\n }\n return params;\n}\n/**\n * coord 配置\n * @param params\n */\nfunction coordinate(params) {\n var chart = params.chart,\n options = params.options;\n var radius = options.radius,\n innerRadius = options.innerRadius,\n startAngle = options.startAngle,\n endAngle = options.endAngle;\n chart.coordinate({\n type: 'polar',\n cfg: {\n radius: radius,\n innerRadius: innerRadius,\n startAngle: startAngle,\n endAngle: endAngle\n }\n });\n return params;\n}\n/**\n * meta 配置\n * @param params\n */\nfunction meta(params) {\n var _a;\n var options = params.options;\n var xAxis = options.xAxis,\n yAxis = options.yAxis,\n xField = options.xField,\n yField = options.yField;\n return flow(scale((_a = {}, _a[xField] = xAxis, _a[yField] = yAxis, _a)))(params);\n}\n/**\n * axis 配置\n * @param params\n */\nfunction axis(params) {\n var chart = params.chart,\n options = params.options;\n var xAxis = options.xAxis,\n yAxis = options.yAxis,\n xField = options.xField,\n yField = options.yField;\n // 为 falsy 则是不显示轴\n if (!xAxis) {\n chart.axis(xField, false);\n } else {\n chart.axis(xField, xAxis);\n }\n if (!yAxis) {\n chart.axis(yField, false);\n } else {\n chart.axis(yField, yAxis);\n }\n return params;\n}\n/**\n * 玫瑰图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n // flow 的方式处理所有的配置到 G2 API\n flow(pattern('sectorStyle'), geometry, meta, label, coordinate, axis, legend, tooltip, interaction, animation, theme, annotation(), state)(params);\n}","import { Plot } from '../../core/plot';\nimport { deepAssign } from '../../utils';\n/**\n * 玫瑰图 默认配置项\n */\nexport var DEFAULT_OPTIONS = deepAssign({}, Plot.getDefaultOptions(), {\n xAxis: false,\n yAxis: false,\n legend: {\n position: 'right',\n radio: {}\n },\n sectorStyle: {\n stroke: '#fff',\n lineWidth: 1\n },\n label: {\n layout: {\n type: 'limit-in-shape'\n }\n },\n tooltip: {\n shared: true,\n showMarkers: false\n },\n interactions: [{\n type: 'active-region'\n }]\n});","export var X_FIELD = 'x';\nexport var Y_FIELD = 'y';\nexport var COLOR_FIELD = 'name';\nexport var NODES_VIEW_ID = 'nodes';\nexport var EDGES_VIEW_ID = 'edges';","import { __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { adaptor } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constant';\nvar Rose = /** @class */function (_super) {\n __extends(Rose, _super);\n function Rose() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 玫瑰图 */\n _this.type = 'rose';\n return _this;\n }\n /**\n * 获取 玫瑰图 默认配置项\n * 供外部使用\n */\n Rose.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * @override\n * @param data\n */\n Rose.prototype.changeData = function (data) {\n this.updateOption({\n data: data\n });\n this.chart.changeData(data);\n };\n /**\n * 获取默认的 options 配置项\n */\n Rose.prototype.getDefaultOptions = function () {\n return Rose.getDefaultOptions();\n };\n /**\n * 获取 玫瑰图 的适配器\n */\n Rose.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Rose;\n}(Plot);\nexport { Rose };","import { isArray } from '@antv/util';\n/**\n * 根据 edges 获取对应的 node 结构\n */\nexport function getNodes(edges, sourceField, targetField) {\n var nodes = [];\n edges.forEach(function (e) {\n var source = e[sourceField];\n var target = e[targetField];\n if (!nodes.includes(source)) {\n nodes.push(source);\n }\n if (!nodes.includes(target)) {\n nodes.push(target);\n }\n });\n return nodes;\n}\n/**\n * 根据 edges 获取对应的 dfs 邻接矩阵\n */\nexport function getMatrix(edges, nodes, sourceField, targetField) {\n var graphMatrix = {};\n nodes.forEach(function (pre) {\n graphMatrix[pre] = {};\n nodes.forEach(function (next) {\n graphMatrix[pre][next] = 0;\n });\n });\n edges.forEach(function (edge) {\n graphMatrix[edge[sourceField]][edge[targetField]] = 1;\n });\n return graphMatrix;\n}\n/**\n * 使用 DFS 思路切断桑基图数据中的环(会丢失数据),保证顺序\n * @param data\n * @param sourceField\n * @param targetField\n */\nexport function cutoffCircle(edges, sourceField, targetField) {\n if (!isArray(edges)) return [];\n // 待删除的环状结构\n var removedData = [];\n // 获取所有的节点\n var nodes = getNodes(edges, sourceField, targetField);\n // 获取节点与边的邻接矩阵\n var graphMatrix = getMatrix(edges, nodes, sourceField, targetField);\n // visited:标记节点访问状态, 0:未访问,1:访问中, -1:已访问\n var visited = {};\n // 初始化visited\n nodes.forEach(function (node) {\n visited[node] = 0;\n });\n // 图的深度遍历函数\n function DFS(dfsNode) {\n // 节点状态置为正在访问\n visited[dfsNode] = 1;\n nodes.forEach(function (node) {\n if (graphMatrix[dfsNode][node] != 0) {\n // 当前节点在访问中,再次被访问,证明有环,移动到 removeData\n if (visited[node] == 1) {\n // 拼接为字符串,方便最后过滤\n removedData.push(\"\".concat(dfsNode, \"_\").concat(node));\n } else if (visited[node] == -1) {\n // 当前结点及后边的结点都被访问过,直接跳至下一个结点\n return;\n } else {\n DFS(node); // 否则递归访问\n }\n }\n });\n //遍历过所有相连的结点后,把本节点标记为-1\n visited[dfsNode] = -1;\n }\n // 对每个节点执行 dfs 操作\n nodes.forEach(function (node) {\n //该结点后边的结点都被访问过了,跳过它\n if (visited[node] == -1) {\n return;\n }\n DFS(node);\n });\n if (removedData.length !== 0) {\n console.warn(\"sankey data contains circle, \".concat(removedData.length, \" records removed.\"), removedData);\n }\n // 过滤 remove 路径\n return edges.filter(function (edge) {\n return removedData.findIndex(function (i) {\n return i === \"\".concat(edge[sourceField], \"_\").concat(edge[targetField]);\n }) < 0;\n });\n}","import { minBy } from '@antv/util';\nfunction targetDepth(d) {\n return d.target.depth;\n}\nexport function left(node) {\n return node.depth;\n}\nexport function right(node, n) {\n return n - 1 - node.height;\n}\nexport function justify(node, n) {\n return node.sourceLinks.length ? node.depth : n - 1;\n}\nexport function center(node) {\n return node.targetLinks.length ? node.depth : node.sourceLinks.length ? minBy(node.sourceLinks, targetDepth) - 1 : 0;\n}","export function constant(x) {\n return function () {\n return x;\n };\n}\nexport function sumBy(arr, func) {\n var r = 0;\n for (var i = 0; i < arr.length; i++) {\n r += func(arr[i]);\n }\n return r;\n}\n/**\n * 计算最大值\n * @param arr\n * @param func\n */\nexport function maxValueBy(arr, func) {\n var r = -Infinity;\n for (var i = 0; i < arr.length; i++) {\n r = Math.max(func(arr[i]), r);\n }\n return r;\n}\n/**\n * 计算最小值\n * @param arr\n * @param func\n */\nexport function minValueBy(arr, func) {\n var r = Infinity;\n for (var i = 0; i < arr.length; i++) {\n r = Math.min(func(arr[i]), r);\n }\n return r;\n}","import { justify } from './align';\nimport { constant, maxValueBy, minValueBy, sumBy } from './helper';\nfunction ascendingSourceBreadth(a, b) {\n return ascendingBreadth(a.source, b.source) || a.index - b.index;\n}\nfunction ascendingTargetBreadth(a, b) {\n return ascendingBreadth(a.target, b.target) || a.index - b.index;\n}\nfunction ascendingBreadth(a, b) {\n return a.y0 - b.y0;\n}\nfunction value(d) {\n return d.value;\n}\nfunction defaultId(d) {\n return d.index;\n}\nfunction defaultNodes(graph) {\n return graph.nodes;\n}\nfunction defaultLinks(graph) {\n return graph.links;\n}\nfunction find(nodeById, id) {\n var node = nodeById.get(id);\n if (!node) throw new Error('missing: ' + id);\n return node;\n}\nfunction computeLinkBreadths(_a) {\n var nodes = _a.nodes;\n for (var _i = 0, nodes_1 = nodes; _i < nodes_1.length; _i++) {\n var node = nodes_1[_i];\n var y0 = node.y0;\n var y1 = y0;\n for (var _b = 0, _c = node.sourceLinks; _b < _c.length; _b++) {\n var link = _c[_b];\n link.y0 = y0 + link.width / 2;\n y0 += link.width;\n }\n for (var _d = 0, _e = node.targetLinks; _d < _e.length; _d++) {\n var link = _e[_d];\n link.y1 = y1 + link.width / 2;\n y1 += link.width;\n }\n }\n}\nexport function Sankey() {\n var x0 = 0,\n y0 = 0,\n x1 = 1,\n y1 = 1; // extent\n var dx = 24; // nodeWidth\n var dy = 8,\n py; // nodePadding\n var id = defaultId;\n var align = justify;\n var depth;\n var sort;\n var linkSort;\n var nodes = defaultNodes;\n var links = defaultLinks;\n var iterations = 6;\n function sankey(arg) {\n var graph = {\n nodes: nodes(arg),\n links: links(arg)\n };\n computeNodeLinks(graph);\n computeNodeValues(graph);\n computeNodeDepths(graph);\n computeNodeHeights(graph);\n computeNodeBreadths(graph);\n computeLinkBreadths(graph);\n return graph;\n }\n sankey.update = function (graph) {\n computeLinkBreadths(graph);\n return graph;\n };\n sankey.nodeId = function (_) {\n return arguments.length ? (id = typeof _ === 'function' ? _ : constant(_), sankey) : id;\n };\n sankey.nodeAlign = function (_) {\n return arguments.length ? (align = typeof _ === 'function' ? _ : constant(_), sankey) : align;\n };\n sankey.nodeDepth = function (_) {\n return arguments.length ? (depth = typeof _ === 'function' ? _ : _, sankey) : depth;\n };\n sankey.nodeSort = function (_) {\n return arguments.length ? (sort = _, sankey) : sort;\n };\n sankey.nodeWidth = function (_) {\n return arguments.length ? (dx = +_, sankey) : dx;\n };\n sankey.nodePadding = function (_) {\n return arguments.length ? (dy = py = +_, sankey) : dy;\n };\n sankey.nodes = function (_) {\n return arguments.length ? (nodes = typeof _ === 'function' ? _ : constant(_), sankey) : nodes;\n };\n sankey.links = function (_) {\n return arguments.length ? (links = typeof _ === 'function' ? _ : constant(_), sankey) : links;\n };\n sankey.linkSort = function (_) {\n return arguments.length ? (linkSort = _, sankey) : linkSort;\n };\n sankey.size = function (_) {\n return arguments.length ? (x0 = y0 = 0, x1 = +_[0], y1 = +_[1], sankey) : [x1 - x0, y1 - y0];\n };\n sankey.extent = function (_) {\n return arguments.length ? (x0 = +_[0][0], x1 = +_[1][0], y0 = +_[0][1], y1 = +_[1][1], sankey) : [[x0, y0], [x1, y1]];\n };\n sankey.iterations = function (_) {\n return arguments.length ? (iterations = +_, sankey) : iterations;\n };\n function computeNodeLinks(_a) {\n var nodes = _a.nodes,\n links = _a.links;\n nodes.forEach(function (node, idx) {\n node.index = idx;\n node.sourceLinks = [];\n node.targetLinks = [];\n });\n var nodeById = new Map(nodes.map(function (d) {\n return [id(d), d];\n }));\n links.forEach(function (link, idx) {\n link.index = idx;\n var source = link.source,\n target = link.target;\n if (typeof source !== 'object') source = link.source = find(nodeById, source);\n if (typeof target !== 'object') target = link.target = find(nodeById, target);\n source.sourceLinks.push(link);\n target.targetLinks.push(link);\n });\n if (linkSort != null) {\n for (var _i = 0, nodes_2 = nodes; _i < nodes_2.length; _i++) {\n var _b = nodes_2[_i],\n sourceLinks = _b.sourceLinks,\n targetLinks = _b.targetLinks;\n sourceLinks.sort(linkSort);\n targetLinks.sort(linkSort);\n }\n }\n }\n function computeNodeValues(_a) {\n var nodes = _a.nodes;\n for (var _i = 0, nodes_3 = nodes; _i < nodes_3.length; _i++) {\n var node = nodes_3[_i];\n node.value = node.fixedValue === undefined ? Math.max(sumBy(node.sourceLinks, value), sumBy(node.targetLinks, value)) : node.fixedValue;\n }\n }\n function computeNodeDepths(_a) {\n var nodes = _a.nodes;\n var n = nodes.length;\n var current = new Set(nodes);\n var next = new Set();\n var x = 0;\n while (current.size) {\n current.forEach(function (node) {\n node.depth = x;\n for (var _i = 0, _a = node.sourceLinks; _i < _a.length; _i++) {\n var target = _a[_i].target;\n next.add(target);\n }\n });\n if (++x > n) throw new Error('circular link');\n current = next;\n next = new Set();\n }\n // 如果配置了 depth,则设置自定义 depth\n if (depth) {\n var maxDepth = Math.max(maxValueBy(nodes, function (d) {\n return d.depth;\n }) + 1, 0);\n var node = void 0;\n for (var i = 0; i < nodes.length; i++) {\n node = nodes[i];\n node.depth = depth.call(null, node, maxDepth);\n }\n }\n }\n function computeNodeHeights(_a) {\n var nodes = _a.nodes;\n var n = nodes.length;\n var current = new Set(nodes);\n var next = new Set();\n var x = 0;\n while (current.size) {\n current.forEach(function (node) {\n node.height = x;\n for (var _i = 0, _a = node.targetLinks; _i < _a.length; _i++) {\n var source = _a[_i].source;\n next.add(source);\n }\n });\n if (++x > n) throw new Error('circular link');\n current = next;\n next = new Set();\n }\n }\n function computeNodeLayers(_a) {\n var nodes = _a.nodes;\n var x = Math.max(maxValueBy(nodes, function (d) {\n return d.depth;\n }) + 1, 0);\n var kx = (x1 - x0 - dx) / (x - 1);\n var columns = new Array(x).fill(0).map(function () {\n return [];\n });\n for (var _i = 0, nodes_4 = nodes; _i < nodes_4.length; _i++) {\n var node = nodes_4[_i];\n var i = Math.max(0, Math.min(x - 1, Math.floor(align.call(null, node, x))));\n node.layer = i;\n node.x0 = x0 + i * kx;\n node.x1 = node.x0 + dx;\n if (columns[i]) columns[i].push(node);else columns[i] = [node];\n }\n if (sort) for (var _b = 0, columns_1 = columns; _b < columns_1.length; _b++) {\n var column = columns_1[_b];\n column.sort(sort);\n }\n return columns;\n }\n function initializeNodeBreadths(columns) {\n var ky = minValueBy(columns, function (c) {\n return (y1 - y0 - (c.length - 1) * py) / sumBy(c, value);\n });\n for (var _i = 0, columns_2 = columns; _i < columns_2.length; _i++) {\n var nodes_6 = columns_2[_i];\n var y = y0;\n for (var _a = 0, nodes_5 = nodes_6; _a < nodes_5.length; _a++) {\n var node = nodes_5[_a];\n node.y0 = y;\n node.y1 = y + node.value * ky;\n y = node.y1 + py;\n for (var _b = 0, _c = node.sourceLinks; _b < _c.length; _b++) {\n var link = _c[_b];\n link.width = link.value * ky;\n }\n }\n y = (y1 - y + py) / (nodes_6.length + 1);\n for (var i = 0; i < nodes_6.length; ++i) {\n var node = nodes_6[i];\n node.y0 += y * (i + 1);\n node.y1 += y * (i + 1);\n }\n reorderLinks(nodes_6);\n }\n }\n function computeNodeBreadths(graph) {\n var columns = computeNodeLayers(graph);\n py = Math.min(dy, (y1 - y0) / (maxValueBy(columns, function (c) {\n return c.length;\n }) - 1));\n initializeNodeBreadths(columns);\n for (var i = 0; i < iterations; ++i) {\n var alpha = Math.pow(0.99, i);\n var beta = Math.max(1 - alpha, (i + 1) / iterations);\n relaxRightToLeft(columns, alpha, beta);\n relaxLeftToRight(columns, alpha, beta);\n }\n }\n // Reposition each node based on its incoming (target) links.\n function relaxLeftToRight(columns, alpha, beta) {\n for (var i = 1, n = columns.length; i < n; ++i) {\n var column = columns[i];\n for (var _i = 0, column_1 = column; _i < column_1.length; _i++) {\n var target = column_1[_i];\n var y = 0;\n var w = 0;\n for (var _a = 0, _b = target.targetLinks; _a < _b.length; _a++) {\n var _c = _b[_a],\n source = _c.source,\n value_1 = _c.value;\n var v = value_1 * (target.layer - source.layer);\n y += targetTop(source, target) * v;\n w += v;\n }\n if (!(w > 0)) continue;\n var dy_1 = (y / w - target.y0) * alpha;\n target.y0 += dy_1;\n target.y1 += dy_1;\n reorderNodeLinks(target);\n }\n if (sort === undefined) column.sort(ascendingBreadth);\n if (column.length) resolveCollisions(column, beta);\n }\n }\n // Reposition each node based on its outgoing (source) links.\n function relaxRightToLeft(columns, alpha, beta) {\n for (var n = columns.length, i = n - 2; i >= 0; --i) {\n var column = columns[i];\n for (var _i = 0, column_2 = column; _i < column_2.length; _i++) {\n var source = column_2[_i];\n var y = 0;\n var w = 0;\n for (var _a = 0, _b = source.sourceLinks; _a < _b.length; _a++) {\n var _c = _b[_a],\n target = _c.target,\n value_2 = _c.value;\n var v = value_2 * (target.layer - source.layer);\n y += sourceTop(source, target) * v;\n w += v;\n }\n if (!(w > 0)) continue;\n var dy_2 = (y / w - source.y0) * alpha;\n source.y0 += dy_2;\n source.y1 += dy_2;\n reorderNodeLinks(source);\n }\n if (sort === undefined) column.sort(ascendingBreadth);\n if (column.length) resolveCollisions(column, beta);\n }\n }\n function resolveCollisions(nodes, alpha) {\n var i = nodes.length >> 1;\n var subject = nodes[i];\n resolveCollisionsBottomToTop(nodes, subject.y0 - py, i - 1, alpha);\n resolveCollisionsTopToBottom(nodes, subject.y1 + py, i + 1, alpha);\n resolveCollisionsBottomToTop(nodes, y1, nodes.length - 1, alpha);\n resolveCollisionsTopToBottom(nodes, y0, 0, alpha);\n }\n // Push any overlapping nodes down.\n function resolveCollisionsTopToBottom(nodes, y, i, alpha) {\n for (; i < nodes.length; ++i) {\n var node = nodes[i];\n var dy_3 = (y - node.y0) * alpha;\n if (dy_3 > 1e-6) node.y0 += dy_3, node.y1 += dy_3;\n y = node.y1 + py;\n }\n }\n // Push any overlapping nodes up.\n function resolveCollisionsBottomToTop(nodes, y, i, alpha) {\n for (; i >= 0; --i) {\n var node = nodes[i];\n var dy_4 = (node.y1 - y) * alpha;\n if (dy_4 > 1e-6) node.y0 -= dy_4, node.y1 -= dy_4;\n y = node.y0 - py;\n }\n }\n function reorderNodeLinks(_a) {\n var sourceLinks = _a.sourceLinks,\n targetLinks = _a.targetLinks;\n if (linkSort === undefined) {\n for (var _i = 0, targetLinks_1 = targetLinks; _i < targetLinks_1.length; _i++) {\n var sourceLinks_2 = targetLinks_1[_i].source.sourceLinks;\n sourceLinks_2.sort(ascendingTargetBreadth);\n }\n for (var _b = 0, sourceLinks_1 = sourceLinks; _b < sourceLinks_1.length; _b++) {\n var targetLinks_2 = sourceLinks_1[_b].target.targetLinks;\n targetLinks_2.sort(ascendingSourceBreadth);\n }\n }\n }\n function reorderLinks(nodes) {\n if (linkSort === undefined) {\n for (var _i = 0, nodes_7 = nodes; _i < nodes_7.length; _i++) {\n var _a = nodes_7[_i],\n sourceLinks = _a.sourceLinks,\n targetLinks = _a.targetLinks;\n sourceLinks.sort(ascendingTargetBreadth);\n targetLinks.sort(ascendingSourceBreadth);\n }\n }\n }\n // Returns the target.y0 that would produce an ideal link from source to target.\n function targetTop(source, target) {\n var y = source.y0 - (source.sourceLinks.length - 1) * py / 2;\n for (var _i = 0, _a = source.sourceLinks; _i < _a.length; _i++) {\n var _b = _a[_i],\n node = _b.target,\n width = _b.width;\n if (node === target) break;\n y += width + py;\n }\n for (var _c = 0, _d = target.targetLinks; _c < _d.length; _c++) {\n var _e = _d[_c],\n node = _e.source,\n width = _e.width;\n if (node === source) break;\n y -= width;\n }\n return y;\n }\n // Returns the source.y0 that would produce an ideal link from source to target.\n function sourceTop(source, target) {\n var y = target.y0 - (target.targetLinks.length - 1) * py / 2;\n for (var _i = 0, _a = target.targetLinks; _i < _a.length; _i++) {\n var _b = _a[_i],\n node = _b.source,\n width = _b.width;\n if (node === source) break;\n y += width + py;\n }\n for (var _c = 0, _d = source.sourceLinks; _c < _d.length; _c++) {\n var _e = _d[_c],\n node = _e.target,\n width = _e.width;\n if (node === target) break;\n y -= width;\n }\n return y;\n }\n return sankey;\n}","import { assign, isFunction, isString } from '@antv/util';\nimport { center, justify, left, right, sankey } from './sankey';\nvar ALIGN_METHOD = {\n left: left,\n right: right,\n center: center,\n justify: justify\n};\n/**\n * 默认值\n */\nvar DEFAULT_OPTIONS = {\n nodeId: function nodeId(node) {\n return node.index;\n },\n nodeAlign: 'justify',\n nodeWidth: 0.008,\n nodePadding: 0.03,\n nodeSort: undefined\n};\n/**\n * 获得 align function\n * @param nodeAlign\n * @param nodeDepth\n */\nexport function getNodeAlignFunction(nodeAlign) {\n var func = isString(nodeAlign) ? ALIGN_METHOD[nodeAlign] : isFunction(nodeAlign) ? nodeAlign : null;\n return func || justify;\n}\nexport function getDefaultOptions(sankeyLayoutOptions) {\n return assign({}, DEFAULT_OPTIONS, sankeyLayoutOptions);\n}\n/**\n * 桑基图利用数据进行布局的函数,最终返回节点、边的位置(0 - 1 的信息)\n * 将会修改 data 数据\n * @param sankeyLayoutOptions\n * @param data\n */\nexport function sankeyLayout(sankeyLayoutOptions, data) {\n var options = getDefaultOptions(sankeyLayoutOptions);\n var nodeId = options.nodeId,\n nodeSort = options.nodeSort,\n nodeAlign = options.nodeAlign,\n nodeWidth = options.nodeWidth,\n nodePadding = options.nodePadding,\n nodeDepth = options.nodeDepth;\n var sankeyProcessor = sankey()\n // .links((d: any) => d.links)\n // .nodes((d: any) => d.nodes)\n .nodeSort(nodeSort).nodeWidth(nodeWidth).nodePadding(nodePadding).nodeDepth(nodeDepth).nodeAlign(getNodeAlignFunction(nodeAlign)).extent([[0, 0], [1, 1]]).nodeId(nodeId);\n // 进行桑基图布局处理\n var layoutData = sankeyProcessor(data);\n // post process (x, y), etc.\n var nodes = layoutData.nodes.map(function (node) {\n var x0 = node.x0,\n x1 = node.x1,\n y0 = node.y0,\n y1 = node.y1;\n /* points\n * 3---2\n * | |\n * 0---1\n */\n node.x = [x0, x1, x1, x0];\n node.y = [y0, y0, y1, y1];\n return node;\n }).filter(function (node) {\n return node.name !== null;\n });\n var links = layoutData.links.map(function (edge) {\n var source = edge.source,\n target = edge.target;\n var sx = source.x1;\n var tx = target.x0;\n edge.x = [sx, sx, tx, tx];\n var offset = edge.width / 2;\n edge.y = [edge.y0 + offset, edge.y0 - offset, edge.y1 + offset, edge.y1 - offset];\n return edge;\n }).filter(function (edge) {\n var source = edge.source,\n target = edge.target;\n return source.name !== null && target.name !== null;\n });\n return {\n nodes: nodes,\n links: links\n };\n}","import { __assign, __spreadArray } from \"tslib\";\nimport { isRealNumber, pick } from '../../utils';\nimport { transformDataToNodeLinkData } from '../../utils/data';\nimport { cutoffCircle } from './circle';\nimport { sankeyLayout } from './layout';\n/**\n * 是否是 node-link 类型的数据结构\n * @param dataTyp\n * @returns\n */\nfunction isNodeLink(dataType) {\n return dataType === 'node-link';\n}\nexport function getNodeWidthRatio(nodeWidth, nodeWidthRatio, width) {\n return isRealNumber(nodeWidth) ? nodeWidth / width : nodeWidthRatio;\n}\nexport function getNodePaddingRatio(nodePadding, nodePaddingRatio, height) {\n return isRealNumber(nodePadding) ? nodePadding / height : nodePaddingRatio;\n}\n/**\n * 将桑基图配置经过 layout,生成最终的 view 数据\n * @param options\n * @param width\n * @param height\n */\nexport function transformToViewsData(options, width, height) {\n var dataType = options.dataType,\n data = options.data,\n sourceField = options.sourceField,\n targetField = options.targetField,\n weightField = options.weightField,\n nodeAlign = options.nodeAlign,\n nodeSort = options.nodeSort,\n nodePadding = options.nodePadding,\n nodePaddingRatio = options.nodePaddingRatio,\n nodeWidth = options.nodeWidth,\n nodeWidthRatio = options.nodeWidthRatio,\n nodeDepth = options.nodeDepth,\n _a = options.rawFields,\n rawFields = _a === void 0 ? [] : _a;\n var sankeyLayoutInputData;\n if (!isNodeLink(dataType)) {\n sankeyLayoutInputData = transformDataToNodeLinkData(cutoffCircle(data, sourceField, targetField), sourceField, targetField, weightField, rawFields);\n } else {\n sankeyLayoutInputData = data;\n }\n // 3. layout 之后的数据\n var _b = sankeyLayout({\n nodeAlign: nodeAlign,\n nodePadding: getNodePaddingRatio(nodePadding, nodePaddingRatio, height),\n nodeWidth: getNodeWidthRatio(nodeWidth, nodeWidthRatio, width),\n nodeSort: nodeSort,\n nodeDepth: nodeDepth\n }, sankeyLayoutInputData),\n nodes = _b.nodes,\n links = _b.links;\n // 4. 生成绘图数据\n return {\n nodes: nodes.map(function (node) {\n return __assign(__assign({}, pick(node, __spreadArray(['x', 'y', 'name'], rawFields, true))), {\n isNode: true\n });\n }),\n edges: links.map(function (link) {\n return __assign(__assign({\n source: link.source.name,\n target: link.target.name,\n name: link.source.name || link.target.name\n }, pick(link, __spreadArray(['x', 'y', 'value'], rawFields, true))), {\n isNode: false\n });\n })\n };\n}","import { __spreadArray } from \"tslib\";\nimport { uniq } from '@antv/util';\nimport { theme } from '../../adaptor/common';\nimport { edge, polygon } from '../../adaptor/geometries';\nimport { deepAssign, findViewById, flow } from '../../utils';\nimport { addViewAnimation } from '../../utils/view';\nimport { COLOR_FIELD, EDGES_VIEW_ID, NODES_VIEW_ID, X_FIELD, Y_FIELD } from './constant';\nimport { transformToViewsData } from './helper';\n/**\n * 默认配置项 处理\n * @param params\n */\nfunction defaultOptions(params) {\n var options = params.options;\n var _a = options.rawFields,\n rawFields = _a === void 0 ? [] : _a;\n return deepAssign({}, {\n options: {\n tooltip: {\n fields: uniq(__spreadArray(['name', 'source', 'target', 'value', 'isNode'], rawFields, true))\n },\n label: {\n fields: uniq(__spreadArray(['x', 'name'], rawFields, true))\n }\n }\n }, params);\n}\n/**\n * geometry 处理\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var color = options.color,\n nodeStyle = options.nodeStyle,\n edgeStyle = options.edgeStyle,\n label = options.label,\n tooltip = options.tooltip,\n nodeState = options.nodeState,\n edgeState = options.edgeState,\n _a = options.rawFields,\n rawFields = _a === void 0 ? [] : _a;\n // 1. 组件,优先设置,因为子 view 会继承配置\n chart.legend(false);\n chart.tooltip(tooltip);\n chart.axis(false);\n // y 镜像一下,防止图形顺序和数据顺序反了\n chart.coordinate().reflect('y');\n // 2. node edge views\n // @ts-ignore\n var _b = transformToViewsData(options, chart.width, chart.height),\n nodes = _b.nodes,\n edges = _b.edges;\n // edge view\n var edgeView = chart.createView({\n id: EDGES_VIEW_ID\n });\n edgeView.data(edges);\n edge({\n chart: edgeView,\n // @ts-ignore\n options: {\n xField: X_FIELD,\n yField: Y_FIELD,\n seriesField: COLOR_FIELD,\n rawFields: __spreadArray(['source', 'target'], rawFields, true),\n edge: {\n color: color,\n style: edgeStyle,\n shape: 'arc'\n },\n tooltip: tooltip,\n state: edgeState\n }\n });\n var nodeView = chart.createView({\n id: NODES_VIEW_ID\n });\n nodeView.data(nodes);\n polygon({\n chart: nodeView,\n options: {\n xField: X_FIELD,\n yField: Y_FIELD,\n seriesField: COLOR_FIELD,\n polygon: {\n color: color,\n style: nodeStyle\n },\n label: label,\n tooltip: tooltip,\n state: nodeState\n }\n });\n chart.interaction('element-active');\n // scale\n chart.scale({\n x: {\n sync: true,\n nice: true,\n min: 0,\n max: 1,\n minLimit: 0,\n maxLimit: 1\n },\n y: {\n sync: true,\n nice: true,\n min: 0,\n max: 1,\n minLimit: 0,\n maxLimit: 1\n },\n name: {\n sync: 'color',\n type: 'cat'\n }\n });\n return params;\n}\n/**\n * 动画\n * @param params\n */\nexport function animation(params) {\n var chart = params.chart,\n options = params.options;\n var animation = options.animation;\n var geometries = __spreadArray(__spreadArray([], chart.views[0].geometries, true), chart.views[1].geometries, true);\n addViewAnimation(chart, animation, geometries);\n return params;\n}\n/**\n * 节点拖动\n * @param params\n */\nexport function nodeDraggable(params) {\n var chart = params.chart,\n options = params.options;\n var nodeDraggable = options.nodeDraggable;\n var DRAG_INTERACTION = 'sankey-node-draggable';\n if (nodeDraggable) {\n chart.interaction(DRAG_INTERACTION);\n } else {\n chart.removeInteraction(DRAG_INTERACTION);\n }\n return params;\n}\n/**\n * Interaction 配置\n * @param params\n */\nfunction interaction(params) {\n var chart = params.chart,\n options = params.options;\n var _a = options.interactions,\n interactions = _a === void 0 ? [] : _a;\n var nodeInteractions = [].concat(interactions, options.nodeInteractions || []);\n var edgeInteractions = [].concat(interactions, options.edgeInteractions || []);\n var nodeView = findViewById(chart, NODES_VIEW_ID);\n var edgeView = findViewById(chart, EDGES_VIEW_ID);\n nodeInteractions.forEach(function (i) {\n if ((i === null || i === void 0 ? void 0 : i.enable) === false) {\n nodeView.removeInteraction(i.type);\n } else {\n nodeView.interaction(i.type, i.cfg || {});\n }\n });\n edgeInteractions.forEach(function (i) {\n if ((i === null || i === void 0 ? void 0 : i.enable) === false) {\n edgeView.removeInteraction(i.type);\n } else {\n edgeView.interaction(i.type, i.cfg || {});\n }\n });\n return params;\n}\n/**\n * 图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n // flow 的方式处理所有的配置到 G2 API\n return flow(defaultOptions, geometry, interaction, nodeDraggable, animation, theme\n // ... 其他的 adaptor flow\n )(params);\n}","import { __assign, __extends, __spreadArray } from \"tslib\";\nimport { Action } from '@antv/g2';\nimport { get } from '@antv/util';\nimport { findViewById } from '../../../../utils';\nimport { EDGES_VIEW_ID, NODES_VIEW_ID } from '../../constant';\nvar SankeyNodeDragAction = /** @class */function (_super) {\n __extends(SankeyNodeDragAction, _super);\n function SankeyNodeDragAction() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * 是否在拖拽中的标记\n */\n _this.isDragging = false;\n return _this;\n }\n /**\n * 当前操作的是否是 element\n */\n SankeyNodeDragAction.prototype.isNodeElement = function () {\n var shape = get(this.context, 'event.target');\n if (shape) {\n var element = shape.get('element');\n return element && element.getModel().data.isNode;\n }\n return false;\n };\n SankeyNodeDragAction.prototype.getNodeView = function () {\n return findViewById(this.context.view, NODES_VIEW_ID);\n };\n SankeyNodeDragAction.prototype.getEdgeView = function () {\n return findViewById(this.context.view, EDGES_VIEW_ID);\n };\n /**\n * 获取当前操作的 index\n * @param element\n */\n SankeyNodeDragAction.prototype.getCurrentDatumIdx = function (element) {\n return this.getNodeView().geometries[0].elements.indexOf(element);\n };\n /**\n * 点击下去,开始\n */\n SankeyNodeDragAction.prototype.start = function () {\n // 记录开始了的状态\n if (this.isNodeElement()) {\n this.prevPoint = {\n x: get(this.context, 'event.x'),\n y: get(this.context, 'event.y')\n };\n var element = this.context.event.target.get('element');\n var idx = this.getCurrentDatumIdx(element);\n if (idx === -1) {\n return;\n }\n this.currentElementIdx = idx;\n this.context.isDragging = true;\n this.isDragging = true;\n // 关闭动画并暂存配置\n this.prevNodeAnimateCfg = this.getNodeView().getOptions().animate;\n this.prevEdgeAnimateCfg = this.getEdgeView().getOptions().animate;\n this.getNodeView().animate(false);\n this.getEdgeView().animate(false);\n }\n };\n /**\n * 移动过程中,平移\n */\n SankeyNodeDragAction.prototype.translate = function () {\n if (this.isDragging) {\n var chart = this.context.view;\n var currentPoint = {\n x: get(this.context, 'event.x'),\n y: get(this.context, 'event.y')\n };\n var x = currentPoint.x - this.prevPoint.x;\n var y = currentPoint.y - this.prevPoint.y;\n var nodeView = this.getNodeView();\n var element = nodeView.geometries[0].elements[this.currentElementIdx];\n // 修改数据\n if (element && element.getModel()) {\n var prevDatum = element.getModel().data;\n var data = nodeView.getOptions().data;\n var coordinate = nodeView.getCoordinate();\n var datumGap_1 = {\n x: x / coordinate.getWidth(),\n y: y / coordinate.getHeight()\n };\n var nextDatum = __assign(__assign({}, prevDatum), {\n x: prevDatum.x.map(function (x) {\n return x += datumGap_1.x;\n }),\n y: prevDatum.y.map(function (y) {\n return y += datumGap_1.y;\n })\n });\n // 处理一下在 [0, 1] 范围\n // 1. 更新 node 数据\n var newData = __spreadArray([], data, true);\n newData[this.currentElementIdx] = nextDatum;\n nodeView.data(newData);\n // 2. 更新 edge 数据\n var name_1 = prevDatum.name;\n var edgeView = this.getEdgeView();\n var edgeData = edgeView.getOptions().data;\n edgeData.forEach(function (datum) {\n // 2.1 以该 node 为 source 的边,修改 [x0, x1, x2, x3] 中的 x0, x1\n if (datum.source === name_1) {\n datum.x[0] += datumGap_1.x;\n datum.x[1] += datumGap_1.x;\n datum.y[0] += datumGap_1.y;\n datum.y[1] += datumGap_1.y;\n }\n // 2.2 以该 node 为 target 的边,修改 [x0, x1, x2, x3] 中的 x2, x3\n if (datum.target === name_1) {\n datum.x[2] += datumGap_1.x;\n datum.x[3] += datumGap_1.x;\n datum.y[2] += datumGap_1.y;\n datum.y[3] += datumGap_1.y;\n }\n });\n edgeView.data(edgeData);\n // 3. 更新最新位置\n this.prevPoint = currentPoint;\n // node edge 都改变了,所以要从底层 render\n chart.render(true);\n }\n }\n };\n /**\n * 结论,清除状态\n */\n SankeyNodeDragAction.prototype.end = function () {\n this.isDragging = false;\n this.context.isDragging = false;\n this.prevPoint = null;\n this.currentElementIdx = null;\n // 还原动画\n this.getNodeView().animate(this.prevNodeAnimateCfg);\n this.getEdgeView().animate(this.prevEdgeAnimateCfg);\n };\n return SankeyNodeDragAction;\n}(Action);\nexport { SankeyNodeDragAction };","import { registerAction, registerInteraction } from '@antv/g2';\nimport { SankeyNodeDragAction } from './actions/node-drag';\nregisterAction('sankey-node-drag', SankeyNodeDragAction);\nregisterInteraction('sankey-node-draggable', {\n showEnable: [{\n trigger: 'polygon:mouseenter',\n action: 'cursor:pointer'\n }, {\n trigger: 'polygon:mouseleave',\n action: 'cursor:default'\n }],\n start: [{\n trigger: 'polygon:mousedown',\n action: 'sankey-node-drag:start'\n }],\n processing: [{\n trigger: 'plot:mousemove',\n action: 'sankey-node-drag:translate'\n }, {\n isEnable: function isEnable(context) {\n return context.isDragging;\n },\n trigger: 'plot:mousemove',\n action: 'cursor:move'\n }],\n end: [{\n trigger: 'plot:mouseup',\n action: 'sankey-node-drag:end'\n }]\n});","import { __extends } from \"tslib\";\nimport { get } from '@antv/util';\nimport { Plot } from '../../core/plot';\nimport { findViewById } from '../../utils';\nimport { adaptor } from './adaptor';\nimport { EDGES_VIEW_ID, NODES_VIEW_ID } from './constant';\nimport { transformToViewsData } from './helper';\n// 桑基图内置交互\nimport './interactions';\n/**\n * 桑基图 Sankey\n */\nvar Sankey = /** @class */function (_super) {\n __extends(Sankey, _super);\n function Sankey() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'sankey';\n return _this;\n }\n Sankey.getDefaultOptions = function () {\n return {\n appendPadding: 8,\n syncViewPadding: true,\n nodeStyle: {\n opacity: 1,\n fillOpacity: 1,\n lineWidth: 1\n },\n edgeStyle: {\n opacity: 0.3,\n lineWidth: 0\n },\n edgeState: {\n active: {\n style: {\n opacity: 0.8,\n lineWidth: 0\n }\n }\n },\n label: {\n formatter: function formatter(_a) {\n var name = _a.name;\n return name;\n },\n callback: function callback(x) {\n var isLast = x[1] === 1; // 最后一列靠边的节点\n return {\n style: {\n fill: '#545454',\n textAlign: isLast ? 'end' : 'start'\n },\n offsetX: isLast ? -8 : 8\n };\n },\n layout: [{\n type: 'hide-overlap'\n }]\n },\n tooltip: {\n showTitle: false,\n showMarkers: false,\n shared: false,\n // 内置:node 不显示 tooltip,edge 显示 tooltip\n showContent: function showContent(items) {\n return !get(items, [0, 'data', 'isNode']);\n },\n formatter: function formatter(datum) {\n var source = datum.source,\n target = datum.target,\n value = datum.value;\n return {\n name: source + ' -> ' + target,\n value: value\n };\n }\n },\n nodeWidthRatio: 0.008,\n nodePaddingRatio: 0.01,\n animation: {\n appear: {\n animation: 'wave-in'\n },\n enter: {\n animation: 'wave-in'\n }\n }\n };\n };\n /**\n * @override\n * @param data\n */\n Sankey.prototype.changeData = function (data) {\n this.updateOption({\n data: data\n });\n var _a = transformToViewsData(this.options, this.chart.width, this.chart.height),\n nodes = _a.nodes,\n edges = _a.edges;\n var nodesView = findViewById(this.chart, NODES_VIEW_ID);\n var edgesView = findViewById(this.chart, EDGES_VIEW_ID);\n nodesView.changeData(nodes);\n edgesView.changeData(edges);\n };\n /**\n * 获取适配器\n */\n Sankey.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n /**\n * 获取 条形图 默认配置\n */\n Sankey.prototype.getDefaultOptions = function () {\n return Sankey.getDefaultOptions();\n };\n return Sankey;\n}(Plot);\nexport { Sankey };","import { Plot } from '../../core/plot';\nimport { deepAssign } from '../../utils';\nimport { CHILD_NODE_COUNT, NODE_ANCESTORS_FIELD, NODE_INDEX_FIELD } from '../../utils/hierarchy/util';\n/**\n * 祖先节点,非 root 根节点\n */\nexport var SUNBURST_ANCESTOR_FIELD = 'ancestor-node';\nexport var SUNBURST_Y_FIELD = 'value';\nexport var SUNBURST_PATH_FIELD = 'path';\n/** 默认的源字段 */\nexport var RAW_FIELDS = [SUNBURST_PATH_FIELD, NODE_INDEX_FIELD, NODE_ANCESTORS_FIELD, CHILD_NODE_COUNT, 'name', 'depth', 'height'];\n/**\n * 旭日图 默认配置项\n */\nexport var DEFAULT_OPTIONS = deepAssign({}, Plot.getDefaultOptions(), {\n innerRadius: 0,\n radius: 0.85,\n // 分层配置\n hierarchyConfig: {\n // 数值字段,默认是 value(可配置)\n field: 'value'\n },\n // 组件\n tooltip: {\n shared: true,\n showMarkers: false,\n offset: 20,\n showTitle: false\n },\n legend: false,\n // 样式设置\n sunburstStyle: {\n lineWidth: 0.5,\n stroke: '#FFF'\n },\n // 默认开启交互\n drilldown: {\n enabled: true\n }\n});","export default function (node) {\n node.x0 = Math.round(node.x0);\n node.y0 = Math.round(node.y0);\n node.x1 = Math.round(node.x1);\n node.y1 = Math.round(node.y1);\n}","export default function (parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (x1 - x0) / parent.value;\n while (++i < n) {\n node = nodes[i], node.y0 = y0, node.y1 = y1;\n node.x0 = x0, node.x1 = x0 += node.value * k;\n }\n}","import roundNode from \"./treemap/round.js\";\nimport treemapDice from \"./treemap/dice.js\";\nexport default function () {\n var dx = 1,\n dy = 1,\n padding = 0,\n round = false;\n function partition(root) {\n var n = root.height + 1;\n root.x0 = root.y0 = padding;\n root.x1 = dx;\n root.y1 = dy / n;\n root.eachBefore(positionNode(dy, n));\n if (round) root.eachBefore(roundNode);\n return root;\n }\n function positionNode(dy, n) {\n return function (node) {\n if (node.children) {\n treemapDice(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n);\n }\n var x0 = node.x0,\n y0 = node.y0,\n x1 = node.x1 - padding,\n y1 = node.y1 - padding;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n };\n }\n partition.round = function (x) {\n return arguments.length ? (round = !!x, partition) : round;\n };\n partition.size = function (x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy];\n };\n partition.padding = function (x) {\n return arguments.length ? (padding = +x, partition) : padding;\n };\n return partition;\n}","import { assign, isArray, reduce, size } from '@antv/util';\nimport * as d3Hierarchy from 'd3-hierarchy';\nimport { getAllNodes, getField } from './util';\nvar DEFAULT_OPTIONS = {\n field: 'value',\n size: [1, 1],\n round: false,\n padding: 0,\n // 默认降序\n sort: function sort(a, b) {\n return b.value - a.value;\n },\n as: ['x', 'y'],\n // 是否忽略 parentValue, 当设置为 true 时,父节点的权重由子元素决定\n ignoreParentValue: true\n};\nexport function partition(data, options) {\n options = assign({}, DEFAULT_OPTIONS, options);\n var as = options.as;\n if (!isArray(as) || as.length !== 2) {\n throw new TypeError('Invalid as: it must be an array with 2 strings (e.g. [ \"x\", \"y\" ])!');\n }\n var field;\n try {\n field = getField(options);\n } catch (e) {\n console.warn(e);\n }\n var partition = function partition(data) {\n return d3Hierarchy.partition().size(options.size).round(options.round).padding(options.padding)(\n /**\n * d3Hierarchy 布局中需指定 sum 函数计算 node 值,规则是:从当前 node 开始以 post-order traversal 的次序为当前节点以及每个后代节点调用指定的 value 函数,并返回当前 node。\n * for example:\n * { node: 'parent', value: 10, children: [{node: 'child1', value: 5}, {node: 'child2', value: 5}, ]}\n * parent 所得的计算值是 sum(node(parent)) + sum(node(child1)) + sum(node(child2))\n * sum 函数中,d 为用户传入的 data, children 为保留字段\n */\n d3Hierarchy.hierarchy(data).sum(function (d) {\n return size(d.children) ? options.ignoreParentValue ? 0 : d[field] - reduce(d.children, function (a, b) {\n return a + b[field];\n }, 0) : d[field];\n }).sort(options.sort));\n };\n var root = partition(data);\n /*\n * points:\n * 3 2\n * 0 1\n */\n var x = as[0];\n var y = as[1];\n root.each(function (node) {\n var _a, _b;\n node[x] = [node.x0, node.x1, node.x1, node.x0];\n node[y] = [node.y1, node.y1, node.y0, node.y0];\n // 旭日图兼容下 旧版本\n node.name = node.name || ((_a = node.data) === null || _a === void 0 ? void 0 : _a.name) || ((_b = node.data) === null || _b === void 0 ? void 0 : _b.label);\n node.data.name = node.name;\n ['x0', 'x1', 'y0', 'y1'].forEach(function (prop) {\n if (as.indexOf(prop) === -1) {\n delete node[prop];\n }\n });\n });\n return getAllNodes(root);\n}","function defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\nfunction meanX(children) {\n return children.reduce(meanXReduce, 0) / children.length;\n}\nfunction meanXReduce(x, c) {\n return x + c.x;\n}\nfunction maxY(children) {\n return 1 + children.reduce(maxYReduce, 0);\n}\nfunction maxYReduce(y, c) {\n return Math.max(y, c.y);\n}\nfunction leafLeft(node) {\n var children;\n while (children = node.children) node = children[0];\n return node;\n}\nfunction leafRight(node) {\n var children;\n while (children = node.children) node = children[children.length - 1];\n return node;\n}\nexport default function () {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = false;\n function cluster(root) {\n var previousNode,\n x = 0;\n\n // First walk, computing the initial x & y values.\n root.eachAfter(function (node) {\n var children = node.children;\n if (children) {\n node.x = meanX(children);\n node.y = maxY(children);\n } else {\n node.x = previousNode ? x += separation(node, previousNode) : 0;\n node.y = 0;\n previousNode = node;\n }\n });\n var left = leafLeft(root),\n right = leafRight(root),\n x0 = left.x - separation(left, right) / 2,\n x1 = right.x + separation(right, left) / 2;\n\n // Second walk, normalizing x & y to the desired size.\n return root.eachAfter(nodeSize ? function (node) {\n node.x = (node.x - root.x) * dx;\n node.y = (root.y - node.y) * dy;\n } : function (node) {\n node.x = (node.x - x0) / (x1 - x0) * dx;\n node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;\n });\n }\n cluster.separation = function (x) {\n return arguments.length ? (separation = x, cluster) : separation;\n };\n cluster.size = function (x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : nodeSize ? null : [dx, dy];\n };\n cluster.nodeSize = function (x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : nodeSize ? [dx, dy] : null;\n };\n return cluster;\n}","import { required } from \"./accessors.js\";\nimport { Node, computeHeight } from \"./hierarchy/index.js\";\nvar preroot = {\n depth: -1\n },\n ambiguous = {};\nfunction defaultId(d) {\n return d.id;\n}\nfunction defaultParentId(d) {\n return d.parentId;\n}\nexport default function () {\n var id = defaultId,\n parentId = defaultParentId;\n function stratify(data) {\n var nodes = Array.from(data),\n n = nodes.length,\n d,\n i,\n root,\n parent,\n node,\n nodeId,\n nodeKey,\n nodeByKey = new Map();\n for (i = 0; i < n; ++i) {\n d = nodes[i], node = nodes[i] = new Node(d);\n if ((nodeId = id(d, i, data)) != null && (nodeId += \"\")) {\n nodeKey = node.id = nodeId;\n nodeByKey.set(nodeKey, nodeByKey.has(nodeKey) ? ambiguous : node);\n }\n if ((nodeId = parentId(d, i, data)) != null && (nodeId += \"\")) {\n node.parent = nodeId;\n }\n }\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (nodeId = node.parent) {\n parent = nodeByKey.get(nodeId);\n if (!parent) throw new Error(\"missing: \" + nodeId);\n if (parent === ambiguous) throw new Error(\"ambiguous: \" + nodeId);\n if (parent.children) parent.children.push(node);else parent.children = [node];\n node.parent = parent;\n } else {\n if (root) throw new Error(\"multiple roots\");\n root = node;\n }\n }\n if (!root) throw new Error(\"no root\");\n root.parent = preroot;\n root.eachBefore(function (node) {\n node.depth = node.parent.depth + 1;\n --n;\n }).eachBefore(computeHeight);\n root.parent = null;\n if (n > 0) throw new Error(\"cycle\");\n return root;\n }\n stratify.id = function (x) {\n return arguments.length ? (id = required(x), stratify) : id;\n };\n stratify.parentId = function (x) {\n return arguments.length ? (parentId = required(x), stratify) : parentId;\n };\n return stratify;\n}","import { Node } from \"./hierarchy/index.js\";\nfunction defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\n// function radialSeparation(a, b) {\n// return (a.parent === b.parent ? 1 : 2) / a.depth;\n// }\n\n// This function is used to traverse the left contour of a subtree (or\n// subforest). It returns the successor of v on this contour. This successor is\n// either given by the leftmost child of v or by the thread of v. The function\n// returns null if and only if v is on the highest level of its subtree.\nfunction nextLeft(v) {\n var children = v.children;\n return children ? children[0] : v.t;\n}\n\n// This function works analogously to nextLeft.\nfunction nextRight(v) {\n var children = v.children;\n return children ? children[children.length - 1] : v.t;\n}\n\n// Shifts the current subtree rooted at w+. This is done by increasing\n// prelim(w+) and mod(w+) by shift.\nfunction moveSubtree(wm, wp, shift) {\n var change = shift / (wp.i - wm.i);\n wp.c -= change;\n wp.s += shift;\n wm.c += change;\n wp.z += shift;\n wp.m += shift;\n}\n\n// All other shifts, applied to the smaller subtrees between w- and w+, are\n// performed by this function. To prepare the shifts, we have to adjust\n// change(w+), shift(w+), and change(w-).\nfunction executeShifts(v) {\n var shift = 0,\n change = 0,\n children = v.children,\n i = children.length,\n w;\n while (--i >= 0) {\n w = children[i];\n w.z += shift;\n w.m += shift;\n shift += w.s + (change += w.c);\n }\n}\n\n// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise,\n// returns the specified (default) ancestor.\nfunction nextAncestor(vim, v, ancestor) {\n return vim.a.parent === v.parent ? vim.a : ancestor;\n}\nfunction TreeNode(node, i) {\n this._ = node;\n this.parent = null;\n this.children = null;\n this.A = null; // default ancestor\n this.a = this; // ancestor\n this.z = 0; // prelim\n this.m = 0; // mod\n this.c = 0; // change\n this.s = 0; // shift\n this.t = null; // thread\n this.i = i; // number\n}\n\nTreeNode.prototype = Object.create(Node.prototype);\nfunction treeRoot(root) {\n var tree = new TreeNode(root, 0),\n node,\n nodes = [tree],\n child,\n children,\n i,\n n;\n while (node = nodes.pop()) {\n if (children = node._.children) {\n node.children = new Array(n = children.length);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new TreeNode(children[i], i));\n child.parent = node;\n }\n }\n }\n (tree.parent = new TreeNode(null, 0)).children = [tree];\n return tree;\n}\n\n// Node-link tree diagram using the Reingold-Tilford \"tidy\" algorithm\nexport default function () {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = null;\n function tree(root) {\n var t = treeRoot(root);\n\n // Compute the layout using Buchheim et al.’s algorithm.\n t.eachAfter(firstWalk), t.parent.m = -t.z;\n t.eachBefore(secondWalk);\n\n // If a fixed node size is specified, scale x and y.\n if (nodeSize) root.eachBefore(sizeNode);\n\n // If a fixed tree size is specified, scale x and y based on the extent.\n // Compute the left-most, right-most, and depth-most nodes for extents.\n else {\n var left = root,\n right = root,\n bottom = root;\n root.eachBefore(function (node) {\n if (node.x < left.x) left = node;\n if (node.x > right.x) right = node;\n if (node.depth > bottom.depth) bottom = node;\n });\n var s = left === right ? 1 : separation(left, right) / 2,\n tx = s - left.x,\n kx = dx / (right.x + s + tx),\n ky = dy / (bottom.depth || 1);\n root.eachBefore(function (node) {\n node.x = (node.x + tx) * kx;\n node.y = node.depth * ky;\n });\n }\n return root;\n }\n\n // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is\n // applied recursively to the children of v, as well as the function\n // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the\n // node v is placed to the midpoint of its outermost children.\n function firstWalk(v) {\n var children = v.children,\n siblings = v.parent.children,\n w = v.i ? siblings[v.i - 1] : null;\n if (children) {\n executeShifts(v);\n var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n if (w) {\n v.z = w.z + separation(v._, w._);\n v.m = v.z - midpoint;\n } else {\n v.z = midpoint;\n }\n } else if (w) {\n v.z = w.z + separation(v._, w._);\n }\n v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n }\n\n // Computes all real x-coordinates by summing up the modifiers recursively.\n function secondWalk(v) {\n v._.x = v.z + v.parent.m;\n v.m += v.parent.m;\n }\n\n // The core of the algorithm. Here, a new subtree is combined with the\n // previous subtrees. Threads are used to traverse the inside and outside\n // contours of the left and right subtree up to the highest common level. The\n // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the\n // superscript o means outside and i means inside, the subscript - means left\n // subtree and + means right subtree. For summing up the modifiers along the\n // contour, we use respective variables si+, si-, so-, and so+. Whenever two\n // nodes of the inside contours conflict, we compute the left one of the\n // greatest uncommon ancestors using the function ANCESTOR and call MOVE\n // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.\n // Finally, we add a new thread (if necessary).\n function apportion(v, w, ancestor) {\n if (w) {\n var vip = v,\n vop = v,\n vim = w,\n vom = vip.parent.children[0],\n sip = vip.m,\n sop = vop.m,\n sim = vim.m,\n som = vom.m,\n shift;\n while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {\n vom = nextLeft(vom);\n vop = nextRight(vop);\n vop.a = v;\n shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n if (shift > 0) {\n moveSubtree(nextAncestor(vim, v, ancestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.m;\n sip += vip.m;\n som += vom.m;\n sop += vop.m;\n }\n if (vim && !nextRight(vop)) {\n vop.t = vim;\n vop.m += sim - sop;\n }\n if (vip && !nextLeft(vom)) {\n vom.t = vip;\n vom.m += sip - som;\n ancestor = v;\n }\n }\n return ancestor;\n }\n function sizeNode(node) {\n node.x *= dx;\n node.y = node.depth * dy;\n }\n tree.separation = function (x) {\n return arguments.length ? (separation = x, tree) : separation;\n };\n tree.size = function (x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : nodeSize ? null : [dx, dy];\n };\n tree.nodeSize = function (x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : nodeSize ? [dx, dy] : null;\n };\n return tree;\n}","export default function (parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (y1 - y0) / parent.value;\n while (++i < n) {\n node = nodes[i], node.x0 = x0, node.x1 = x1;\n node.y0 = y0, node.y1 = y0 += node.value * k;\n }\n}","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\nexport var phi = (1 + Math.sqrt(5)) / 2;\nexport function squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n var rows = [],\n nodes = parent.children,\n row,\n nodeValue,\n i0 = 0,\n i1 = 0,\n n = nodes.length,\n dx,\n dy,\n value = parent.value,\n sumValue,\n minValue,\n maxValue,\n newRatio,\n minRatio,\n alpha,\n beta;\n while (i0 < n) {\n dx = x1 - x0, dy = y1 - y0;\n\n // Find the next non-empty node.\n do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n minValue = maxValue = sumValue;\n alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n beta = sumValue * sumValue * alpha;\n minRatio = Math.max(maxValue / beta, beta / minValue);\n\n // Keep adding nodes while the aspect ratio maintains or improves.\n for (; i1 < n; ++i1) {\n sumValue += nodeValue = nodes[i1].value;\n if (nodeValue < minValue) minValue = nodeValue;\n if (nodeValue > maxValue) maxValue = nodeValue;\n beta = sumValue * sumValue * alpha;\n newRatio = Math.max(maxValue / beta, beta / minValue);\n if (newRatio > minRatio) {\n sumValue -= nodeValue;\n break;\n }\n minRatio = newRatio;\n }\n\n // Position and record the row orientation.\n rows.push(row = {\n value: sumValue,\n dice: dx < dy,\n children: nodes.slice(i0, i1)\n });\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n value -= sumValue, i0 = i1;\n }\n return rows;\n}\nexport default (function custom(ratio) {\n function squarify(parent, x0, y0, x1, y1) {\n squarifyRatio(ratio, parent, x0, y0, x1, y1);\n }\n squarify.ratio = function (x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n return squarify;\n})(phi);","import roundNode from \"./round.js\";\nimport squarify from \"./squarify.js\";\nimport { required } from \"../accessors.js\";\nimport constant, { constantZero } from \"../constant.js\";\nexport default function () {\n var tile = squarify,\n round = false,\n dx = 1,\n dy = 1,\n paddingStack = [0],\n paddingInner = constantZero,\n paddingTop = constantZero,\n paddingRight = constantZero,\n paddingBottom = constantZero,\n paddingLeft = constantZero;\n function treemap(root) {\n root.x0 = root.y0 = 0;\n root.x1 = dx;\n root.y1 = dy;\n root.eachBefore(positionNode);\n paddingStack = [0];\n if (round) root.eachBefore(roundNode);\n return root;\n }\n function positionNode(node) {\n var p = paddingStack[node.depth],\n x0 = node.x0 + p,\n y0 = node.y0 + p,\n x1 = node.x1 - p,\n y1 = node.y1 - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n if (node.children) {\n p = paddingStack[node.depth + 1] = paddingInner(node) / 2;\n x0 += paddingLeft(node) - p;\n y0 += paddingTop(node) - p;\n x1 -= paddingRight(node) - p;\n y1 -= paddingBottom(node) - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n tile(node, x0, y0, x1, y1);\n }\n }\n treemap.round = function (x) {\n return arguments.length ? (round = !!x, treemap) : round;\n };\n treemap.size = function (x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];\n };\n treemap.tile = function (x) {\n return arguments.length ? (tile = required(x), treemap) : tile;\n };\n treemap.padding = function (x) {\n return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();\n };\n treemap.paddingInner = function (x) {\n return arguments.length ? (paddingInner = typeof x === \"function\" ? x : constant(+x), treemap) : paddingInner;\n };\n treemap.paddingOuter = function (x) {\n return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();\n };\n treemap.paddingTop = function (x) {\n return arguments.length ? (paddingTop = typeof x === \"function\" ? x : constant(+x), treemap) : paddingTop;\n };\n treemap.paddingRight = function (x) {\n return arguments.length ? (paddingRight = typeof x === \"function\" ? x : constant(+x), treemap) : paddingRight;\n };\n treemap.paddingBottom = function (x) {\n return arguments.length ? (paddingBottom = typeof x === \"function\" ? x : constant(+x), treemap) : paddingBottom;\n };\n treemap.paddingLeft = function (x) {\n return arguments.length ? (paddingLeft = typeof x === \"function\" ? x : constant(+x), treemap) : paddingLeft;\n };\n return treemap;\n}","export default function (parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n i,\n n = nodes.length,\n sum,\n sums = new Array(n + 1);\n for (sums[0] = sum = i = 0; i < n; ++i) {\n sums[i + 1] = sum += nodes[i].value;\n }\n partition(0, n, parent.value, x0, y0, x1, y1);\n function partition(i, j, value, x0, y0, x1, y1) {\n if (i >= j - 1) {\n var node = nodes[i];\n node.x0 = x0, node.y0 = y0;\n node.x1 = x1, node.y1 = y1;\n return;\n }\n var valueOffset = sums[i],\n valueTarget = value / 2 + valueOffset,\n k = i + 1,\n hi = j - 1;\n while (k < hi) {\n var mid = k + hi >>> 1;\n if (sums[mid] < valueTarget) k = mid + 1;else hi = mid;\n }\n if (valueTarget - sums[k - 1] < sums[k] - valueTarget && i + 1 < k) --k;\n var valueLeft = sums[k] - valueOffset,\n valueRight = value - valueLeft;\n if (x1 - x0 > y1 - y0) {\n var xk = value ? (x0 * valueRight + x1 * valueLeft) / value : x1;\n partition(i, k, valueLeft, x0, y0, xk, y1);\n partition(k, j, valueRight, xk, y0, x1, y1);\n } else {\n var yk = value ? (y0 * valueRight + y1 * valueLeft) / value : y1;\n partition(i, k, valueLeft, x0, y0, x1, yk);\n partition(k, j, valueRight, x0, yk, x1, y1);\n }\n }\n}","import dice from \"./dice.js\";\nimport slice from \"./slice.js\";\nexport default function (parent, x0, y0, x1, y1) {\n (parent.depth & 1 ? slice : dice)(parent, x0, y0, x1, y1);\n}","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\nimport { phi, squarifyRatio } from \"./squarify.js\";\nexport default (function custom(ratio) {\n function resquarify(parent, x0, y0, x1, y1) {\n if ((rows = parent._squarify) && rows.ratio === ratio) {\n var rows,\n row,\n nodes,\n i,\n j = -1,\n n,\n m = rows.length,\n value = parent.value;\n while (++j < m) {\n row = rows[j], nodes = row.children;\n for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += (y1 - y0) * row.value / value : y1);else treemapSlice(row, x0, y0, value ? x0 += (x1 - x0) * row.value / value : x1, y1);\n value -= row.value;\n }\n } else {\n parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1);\n rows.ratio = ratio;\n }\n }\n resquarify.ratio = function (x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n return resquarify;\n})(phi);","import { assign, isArray } from '@antv/util';\nimport * as d3Hierarchy from 'd3-hierarchy';\nimport { getAllNodes, getField } from './util';\nvar DEFAULT_OPTIONS = {\n field: 'value',\n tile: 'treemapSquarify',\n size: [1, 1],\n round: false,\n ignoreParentValue: true,\n padding: 0,\n paddingInner: 0,\n paddingOuter: 0,\n paddingTop: 0,\n paddingRight: 0,\n paddingBottom: 0,\n paddingLeft: 0,\n as: ['x', 'y'],\n // 默认降序\n sort: function sort(a, b) {\n return b.value - a.value;\n },\n // 纵横比, treemapSquarify 布局时可用,默认黄金分割比例\n ratio: 0.5 * (1 + Math.sqrt(5))\n};\nexport function getTileMethod(tile, ratio) {\n return tile === 'treemapSquarify' ? d3Hierarchy[tile].ratio(ratio) : d3Hierarchy[tile];\n}\nexport function treemap(data, options) {\n options = assign({}, DEFAULT_OPTIONS, options);\n var as = options.as;\n if (!isArray(as) || as.length !== 2) {\n throw new TypeError('Invalid as: it must be an array with 2 strings (e.g. [ \"x\", \"y\" ])!');\n }\n var field;\n try {\n field = getField(options);\n } catch (e) {\n console.warn(e);\n }\n var tileMethod = getTileMethod(options.tile, options.ratio);\n var partition = function partition(data) {\n return d3Hierarchy.treemap().tile(tileMethod).size(options.size).round(options.round).padding(options.padding).paddingInner(options.paddingInner).paddingOuter(options.paddingOuter).paddingTop(options.paddingTop).paddingRight(options.paddingRight).paddingBottom(options.paddingBottom).paddingLeft(options.paddingLeft)(\n /**\n * d3Hierarchy 布局中需指定 sum 函数计算 node 值,规则是:从当前 node 开始以 post-order traversal 的次序为当前节点以及每个后代节点调用指定的 value 函数,并返回当前 node。\n * for example:\n * { node: 'parent', value: 10, children: [{node: 'child1', value: 5}, {node: 'child2', value: 5}, ]}\n * parent 所得的计算值是 sum(node(parent)) + sum(node(child1)) + sum(node(child2))\n * ignoreParentValue 为 true(默认) 时,父元素的值由子元素累加而来,该值为 0 + 5 + 5 = 10\n * ignoreParentValue 为 false 时,父元素的值由当前节点 及子元素累加而来,该值为 10 + 5 + 5 = 20\n * sum 函数中,d 为用户传入的 data, children 为保留字段\n */\n d3Hierarchy.hierarchy(data).sum(function (d) {\n return options.ignoreParentValue && d.children ? 0 : d[field];\n }).sort(options.sort));\n };\n var root = partition(data);\n /*\n * points:\n * 3 2\n * 0 1\n */\n var x = as[0];\n var y = as[1];\n root.each(function (node) {\n node[x] = [node.x0, node.x1, node.x1, node.x0];\n node[y] = [node.y1, node.y1, node.y0, node.y0];\n ['x0', 'x1', 'y0', 'y1'].forEach(function (prop) {\n if (as.indexOf(prop) === -1) {\n delete node[prop];\n }\n });\n });\n return getAllNodes(root);\n}","import { __assign, __spreadArray } from \"tslib\";\nimport { omit } from '@antv/util';\nimport { HIERARCHY_DATA_TRANSFORM_PARAMS } from '../../interactions/actions/drill-down';\nimport { pick } from '../../utils';\nimport { partition } from '../../utils/hierarchy/partition';\nimport { treemap } from '../../utils/hierarchy/treemap';\nimport { SUNBURST_ANCESTOR_FIELD, SUNBURST_PATH_FIELD } from './constant';\n/**\n * sunburst 处理数据\n * @param options\n */\nexport function transformData(options) {\n var data = options.data,\n colorField = options.colorField,\n rawFields = options.rawFields,\n _a = options.hierarchyConfig,\n hierarchyConfig = _a === void 0 ? {} : _a;\n var activeDepth = hierarchyConfig.activeDepth;\n var transform = {\n partition: partition,\n treemap: treemap\n };\n // @ts-ignore 兼容旧版本,支持 seriesField 来作为 hierarchyConfig.field\n var seriesField = options.seriesField;\n // @ts-ignore 兼容旧版本,支持矩阵树图形状的旭日图\n var type = options.type || 'partition';\n var nodes = transform[type](data, __assign(__assign({\n field: seriesField || 'value'\n }, omit(hierarchyConfig, ['activeDepth'])), {\n // @ts-ignore\n type: \"hierarchy.\".concat(type),\n as: ['x', 'y']\n }));\n var result = [];\n nodes.forEach(function (node) {\n var _a;\n var _b, _c, _d, _e, _f;\n if (node.depth === 0) {\n return null;\n }\n if (activeDepth > 0 && node.depth > activeDepth) {\n return null;\n }\n var path = node.data.name;\n var ancestorNode = __assign({}, node);\n while (ancestorNode.depth > 1) {\n path = \"\".concat((_b = ancestorNode.parent.data) === null || _b === void 0 ? void 0 : _b.name, \" / \").concat(path);\n ancestorNode = ancestorNode.parent;\n }\n var nodeInfo = __assign(__assign(__assign({}, pick(node.data, __spreadArray(__spreadArray([], rawFields || [], true), [hierarchyConfig.field], false))), (_a = {}, _a[SUNBURST_PATH_FIELD] = path, _a[SUNBURST_ANCESTOR_FIELD] = ancestorNode.data.name, _a)), node);\n // note: 兼容旧版本\n if (seriesField) {\n nodeInfo[seriesField] = node.data[seriesField] || ((_d = (_c = node.parent) === null || _c === void 0 ? void 0 : _c.data) === null || _d === void 0 ? void 0 : _d[seriesField]);\n }\n if (colorField) {\n nodeInfo[colorField] = node.data[colorField] || ((_f = (_e = node.parent) === null || _e === void 0 ? void 0 : _e.data) === null || _f === void 0 ? void 0 : _f[colorField]);\n }\n nodeInfo.ext = hierarchyConfig;\n nodeInfo[HIERARCHY_DATA_TRANSFORM_PARAMS] = {\n hierarchyConfig: hierarchyConfig,\n colorField: colorField,\n rawFields: rawFields\n };\n result.push(nodeInfo);\n });\n return result;\n}","import { __assign, __rest, __spreadArray } from \"tslib\";\nimport { get, isFunction, uniq } from '@antv/util';\nimport { animation, annotation, interaction as baseInteraction, legend, pattern, scale, theme } from '../../adaptor/common';\nimport { polygon as polygonAdaptor } from '../../adaptor/geometries';\nimport { deepAssign, findGeometry, flow, transformLabel } from '../../utils';\nimport { getAdjustAppendPadding } from '../../utils/padding';\nimport { RAW_FIELDS, SUNBURST_ANCESTOR_FIELD, SUNBURST_PATH_FIELD, SUNBURST_Y_FIELD } from './constant';\nimport { transformData } from './utils';\n/**\n * geometry 配置处理\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var color = options.color,\n _a = options.colorField,\n colorField = _a === void 0 ? SUNBURST_ANCESTOR_FIELD : _a,\n sunburstStyle = options.sunburstStyle,\n _b = options.rawFields,\n rawFields = _b === void 0 ? [] : _b,\n shape = options.shape;\n var data = transformData(options);\n chart.data(data);\n // 特殊处理下样式,如果没有设置 fillOpacity 的时候,默认根据层级进行填充透明度\n var style;\n if (sunburstStyle) {\n style = function style(datum) {\n return deepAssign({}, {\n fillOpacity: Math.pow(0.85, datum.depth)\n }, isFunction(sunburstStyle) ? sunburstStyle(datum) : sunburstStyle);\n };\n }\n // geometry\n polygonAdaptor(deepAssign({}, params, {\n options: {\n xField: 'x',\n yField: 'y',\n seriesField: colorField,\n rawFields: uniq(__spreadArray(__spreadArray([], RAW_FIELDS, true), rawFields, true)),\n polygon: {\n color: color,\n style: style,\n shape: shape\n }\n }\n }));\n return params;\n}\n/**\n * axis 配置\n * @param params\n */\nexport function axis(params) {\n var chart = params.chart;\n chart.axis(false);\n return params;\n}\n/**\n * 数据标签\n * @param params\n */\nfunction label(params) {\n var chart = params.chart,\n options = params.options;\n var label = options.label;\n var geometry = findGeometry(chart, 'polygon');\n // 默认不展示,undefined 也不展示\n if (!label) {\n geometry.label(false);\n } else {\n var _a = label.fields,\n fields = _a === void 0 ? ['name'] : _a,\n callback = label.callback,\n cfg = __rest(label, [\"fields\", \"callback\"]);\n geometry.label({\n fields: fields,\n callback: callback,\n cfg: transformLabel(cfg)\n });\n }\n return params;\n}\n/**\n * coord 配置\n * @param params\n */\nfunction coordinate(params) {\n var chart = params.chart,\n options = params.options;\n var innerRadius = options.innerRadius,\n radius = options.radius,\n reflect = options.reflect;\n var coord = chart.coordinate({\n type: 'polar',\n cfg: {\n innerRadius: innerRadius,\n radius: radius\n }\n });\n if (reflect) {\n coord.reflect(reflect);\n }\n return params;\n}\n/**\n * meta 配置\n * @param params\n */\nexport function meta(params) {\n var _a;\n var options = params.options;\n var hierarchyConfig = options.hierarchyConfig,\n meta = options.meta;\n return flow(scale({}, (_a = {}, _a[SUNBURST_Y_FIELD] = get(meta, get(hierarchyConfig, ['field'], 'value')), _a)))(params);\n}\n/**\n * tooltip 配置\n * @param params\n */\nexport function tooltip(params) {\n var chart = params.chart,\n options = params.options;\n var tooltip = options.tooltip;\n if (tooltip === false) {\n chart.tooltip(false);\n } else {\n var tooltipOptions = tooltip;\n // 设置了 fields,就不进行 customItems 了; 设置 formatter 时,需要搭配 fields\n if (!get(tooltip, 'fields')) {\n tooltipOptions = deepAssign({}, {\n customItems: function customItems(items) {\n return items.map(function (item) {\n var scales = get(chart.getOptions(), 'scales');\n var pathFormatter = get(scales, [SUNBURST_PATH_FIELD, 'formatter'], function (v) {\n return v;\n });\n var valueFormatter = get(scales, [SUNBURST_Y_FIELD, 'formatter'], function (v) {\n return v;\n });\n return __assign(__assign({}, item), {\n name: pathFormatter(item.data[SUNBURST_PATH_FIELD]),\n value: valueFormatter(item.data.value)\n });\n });\n }\n }, tooltipOptions);\n }\n chart.tooltip(tooltipOptions);\n }\n return params;\n}\nfunction adaptorInteraction(options) {\n var drilldown = options.drilldown,\n _a = options.interactions,\n interactions = _a === void 0 ? [] : _a;\n if (drilldown === null || drilldown === void 0 ? void 0 : drilldown.enabled) {\n return deepAssign({}, options, {\n interactions: __spreadArray(__spreadArray([], interactions, true), [{\n type: 'drill-down',\n cfg: {\n drillDownConfig: drilldown,\n transformData: transformData\n }\n }], false)\n });\n }\n return options;\n}\n/**\n * 交互配置\n * @param params\n * @returns\n */\nfunction interaction(params) {\n var chart = params.chart,\n options = params.options;\n var drilldown = options.drilldown;\n baseInteraction({\n chart: chart,\n options: adaptorInteraction(options)\n });\n // 适应下钻交互面包屑\n if (drilldown === null || drilldown === void 0 ? void 0 : drilldown.enabled) {\n // 为面包屑留出 25px 的空间\n chart.appendPadding = getAdjustAppendPadding(chart.appendPadding, get(drilldown, ['breadCrumb', 'position']));\n }\n return params;\n}\n/**\n * 旭日图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n // flow 的方式处理所有的配置到 G2 API\n return flow(theme, pattern('sunburstStyle'), geometry, axis, meta, legend, coordinate, tooltip, label, interaction, animation, annotation())(params);\n}","import { __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { NODE_ANCESTORS_FIELD } from '../../utils/hierarchy/util';\nimport { adaptor } from './adaptor';\nimport { DEFAULT_OPTIONS, SUNBURST_ANCESTOR_FIELD, SUNBURST_PATH_FIELD } from './constant';\nimport './interactions';\nvar Sunburst = /** @class */function (_super) {\n __extends(Sunburst, _super);\n function Sunburst() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'sunburst';\n return _this;\n }\n /**\n * 获取 旭日图 默认配置项\n * 供外部使用\n */\n Sunburst.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * 获取 旭日图 默认配置\n */\n Sunburst.prototype.getDefaultOptions = function () {\n return Sunburst.getDefaultOptions();\n };\n /**\n * 获取旭日图的适配器\n */\n Sunburst.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n /** 旭日图 节点的祖先节点 */\n Sunburst.SUNBURST_ANCESTOR_FIELD = SUNBURST_ANCESTOR_FIELD;\n /** 旭日图 节点的路径 */\n Sunburst.SUNBURST_PATH_FIELD = SUNBURST_PATH_FIELD;\n /** 节点的祖先节点 */\n Sunburst.NODE_ANCESTORS_FIELD = NODE_ANCESTORS_FIELD;\n return Sunburst;\n}(Plot);\nexport { Sunburst };","import { __assign } from \"tslib\";\nimport { get, isArray } from '@antv/util';\nimport { HIERARCHY_DATA_TRANSFORM_PARAMS } from '../../interactions/actions/drill-down';\nimport { treemap } from '../../utils/hierarchy/treemap';\nexport function findInteraction(interactions, interactionType) {\n if (!isArray(interactions)) return undefined;\n return interactions.find(function (i) {\n return i.type === interactionType;\n });\n}\nexport function enableInteraction(interactions, interactionType) {\n var interaction = findInteraction(interactions, interactionType);\n return interaction && interaction.enable !== false;\n}\n/**\n * 是否允许下钻交互\n * @param interactions\n * @param interactionType\n * @returns\n */\nexport function enableDrillInteraction(options) {\n var interactions = options.interactions,\n drilldown = options.drilldown;\n // 兼容旧版本, treemap-drill-down\n return get(drilldown, 'enabled') || enableInteraction(interactions, 'treemap-drill-down');\n}\nexport function resetDrillDown(chart) {\n var drillDownInteraction = chart.interactions['drill-down'];\n if (!drillDownInteraction) return;\n // @ts-ignore\n var drillDownAction = drillDownInteraction.context.actions.find(function (i) {\n return i.name === 'drill-down-action';\n });\n drillDownAction.reset();\n}\nexport function transformData(options) {\n var data = options.data,\n colorField = options.colorField,\n enableDrillDown = options.enableDrillDown,\n hierarchyConfig = options.hierarchyConfig;\n var nodes = treemap(data, __assign(__assign({}, hierarchyConfig), {\n // @ts-ignore\n type: 'hierarchy.treemap',\n field: 'value',\n as: ['x', 'y']\n }));\n var result = [];\n nodes.forEach(function (node) {\n if (node.depth === 0) {\n return null;\n }\n // 开启下钻,仅加载 depth === 1 的数据\n if (enableDrillDown && node.depth !== 1) {\n return null;\n }\n // 不开启下钻,加载所有叶子节点\n if (!enableDrillDown && node.children) {\n return null;\n }\n // path 信息仅挑选必要祖先元素属性,因为在有些属性是不必要(x, y), 或是不准确的(下钻时的 depth),不对外透出\n var curPath = node.ancestors().map(function (n) {\n return {\n data: n.data,\n height: n.height,\n value: n.value\n };\n });\n // 在下钻树图中,每次绘制的是当前层级信息,将父元素的层级信息(data.path) 做一层拼接。\n var path = enableDrillDown && isArray(data.path) ? curPath.concat(data.path.slice(1)) : curPath;\n var nodeInfo = Object.assign({}, node.data, __assign({\n x: node.x,\n y: node.y,\n depth: node.depth,\n value: node.value,\n path: path\n }, node));\n if (!node.data[colorField] && node.parent) {\n var ancestorNode = node.ancestors().find(function (n) {\n return n.data[colorField];\n });\n nodeInfo[colorField] = ancestorNode === null || ancestorNode === void 0 ? void 0 : ancestorNode.data[colorField];\n } else {\n nodeInfo[colorField] = node.data[colorField];\n }\n nodeInfo[HIERARCHY_DATA_TRANSFORM_PARAMS] = {\n hierarchyConfig: hierarchyConfig,\n colorField: colorField,\n enableDrillDown: enableDrillDown\n };\n result.push(nodeInfo);\n });\n return result;\n}","import { __spreadArray } from \"tslib\";\nimport { get } from '@antv/util';\nimport { animation, annotation, interaction as commonInteraction, legend, theme, tooltip } from '../../adaptor/common';\nimport { polygon as basePolygon } from '../../adaptor/geometries/polygon';\nimport { pattern } from '../../adaptor/pattern';\nimport { deepAssign, flow } from '../../utils';\nimport { getAdjustAppendPadding } from '../../utils/padding';\nimport { enableDrillInteraction, findInteraction, transformData } from './utils';\n/**\n * 获取默认 option\n * @param params\n */\nfunction defaultOptions(params) {\n var options = params.options;\n var colorField = options.colorField;\n return deepAssign({\n options: {\n rawFields: ['value'],\n tooltip: {\n fields: ['name', 'value', colorField, 'path'],\n formatter: function formatter(data) {\n return {\n name: data.name,\n value: data.value\n };\n }\n }\n }\n }, params);\n}\n/**\n * 字段\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var color = options.color,\n colorField = options.colorField,\n rectStyle = options.rectStyle,\n hierarchyConfig = options.hierarchyConfig,\n rawFields = options.rawFields;\n var data = transformData({\n data: options.data,\n colorField: options.colorField,\n enableDrillDown: enableDrillInteraction(options),\n hierarchyConfig: hierarchyConfig\n });\n chart.data(data);\n // geometry\n basePolygon(deepAssign({}, params, {\n options: {\n xField: 'x',\n yField: 'y',\n seriesField: colorField,\n rawFields: rawFields,\n polygon: {\n color: color,\n style: rectStyle\n }\n }\n }));\n // 做一个反转,这样配合排序,可以将最大值放到左上角,最小值放到右下角\n chart.coordinate().reflect('y');\n return params;\n}\n/**\n * 坐标轴\n * @param params\n */\nfunction axis(params) {\n var chart = params.chart;\n chart.axis(false);\n return params;\n}\nfunction adaptorInteraction(options) {\n var drilldown = options.drilldown,\n _a = options.interactions,\n interactions = _a === void 0 ? [] : _a;\n var enableDrillDown = enableDrillInteraction(options);\n if (enableDrillDown) {\n return deepAssign({}, options, {\n interactions: __spreadArray(__spreadArray([], interactions, true), [{\n type: 'drill-down',\n // 🚓 这不是一个规范的 API,后续会变更。慎重参考\n cfg: {\n drillDownConfig: drilldown,\n transformData: transformData\n }\n }], false)\n });\n }\n return options;\n}\n/**\n * Interaction 配置\n * @param params\n */\nexport function interaction(params) {\n var chart = params.chart,\n options = params.options;\n var interactions = options.interactions,\n drilldown = options.drilldown;\n commonInteraction({\n chart: chart,\n options: adaptorInteraction(options)\n });\n // 适配 view-zoom\n var viewZoomInteraction = findInteraction(interactions, 'view-zoom');\n if (viewZoomInteraction) {\n // 开启缩放 interaction 后,则阻止默认滚动事件,避免整个窗口的滚动\n if (viewZoomInteraction.enable !== false) {\n chart.getCanvas().on('mousewheel', function (ev) {\n ev.preventDefault();\n });\n } else {\n // 手动关闭后,清除。仅对声明 viewZoomInteraction 的清除。\n chart.getCanvas().off('mousewheel');\n }\n }\n // 适应下钻交互面包屑\n var enableDrillDown = enableDrillInteraction(options);\n if (enableDrillDown) {\n // 为面包屑在底部留出 25px 的空间\n chart.appendPadding = getAdjustAppendPadding(chart.appendPadding, get(drilldown, ['breadCrumb', 'position']));\n }\n return params;\n}\n/**\n * 矩形树图\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n return flow(defaultOptions, theme, pattern('rectStyle'), geometry, axis, legend, tooltip, interaction, animation, annotation())(params);\n}","export var DEFAULT_OPTIONS = {\n // 默认按照 name 字段对颜色进行分类\n colorField: 'name',\n rectStyle: {\n lineWidth: 1,\n stroke: '#fff'\n },\n hierarchyConfig: {\n tile: 'treemapSquarify'\n },\n label: {\n fields: ['name'],\n layout: {\n type: 'limit-in-shape'\n }\n },\n tooltip: {\n showMarkers: false,\n showTitle: false\n },\n // 下钻交互配置,默认不开启\n drilldown: {\n enabled: false,\n breadCrumb: {\n position: 'bottom-left',\n rootText: '初始',\n dividerText: '/',\n textStyle: {\n fontSize: 12,\n fill: 'rgba(0, 0, 0, 0.65)',\n cursor: 'pointer'\n },\n activeTextStyle: {\n fill: '#87B5FF'\n }\n }\n }\n};","// 一些字段常量定义,需要在文档初告知用户\nexport var ID_FIELD = 'id';\nexport var PATH_FIELD = 'path';\n/**\n * 韦恩图 默认配置项\n */\nexport var DEFAULT_OPTIONS = {\n appendPadding: [10, 0, 20, 0],\n blendMode: 'multiply',\n tooltip: {\n showTitle: false,\n showMarkers: false,\n fields: ['id', 'size'],\n formatter: function formatter(datum) {\n return {\n name: datum.id,\n value: datum.size\n };\n }\n },\n legend: {\n position: 'top-left'\n },\n label: {\n style: {\n textAlign: 'center',\n fill: '#fff'\n }\n },\n // 默认不开启 图例筛选交互\n interactions: [{\n type: 'legend-filter',\n enable: false\n }],\n state: {\n active: {\n style: {\n stroke: '#000'\n }\n },\n selected: {\n style: {\n stroke: '#000',\n lineWidth: 2\n }\n },\n inactive: {\n style: {\n fillOpacity: 0.3,\n strokeOpacity: 0.3\n }\n }\n },\n // 韦恩图的默认内置注册的交互\n defaultInteractions: ['tooltip', 'venn-legend-active']\n};","import { __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { adaptor } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constant';\nimport './interactions';\nimport { enableInteraction, resetDrillDown, transformData } from './utils';\nvar Treemap = /** @class */function (_super) {\n __extends(Treemap, _super);\n function Treemap() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'treemap';\n return _this;\n }\n /**\n * 获取 矩阵树图 默认配置项\n * 供外部使用\n */\n Treemap.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * changeData\n */\n Treemap.prototype.changeData = function (data) {\n var _a = this.options,\n colorField = _a.colorField,\n interactions = _a.interactions,\n hierarchyConfig = _a.hierarchyConfig;\n this.updateOption({\n data: data\n });\n var transData = transformData({\n data: data,\n colorField: colorField,\n enableDrillDown: enableInteraction(interactions, 'treemap-drill-down'),\n hierarchyConfig: hierarchyConfig\n });\n this.chart.changeData(transData);\n resetDrillDown(this.chart);\n };\n /**\n * 获取 矩阵树图 默认配置\n */\n Treemap.prototype.getDefaultOptions = function () {\n return Treemap.getDefaultOptions();\n };\n Treemap.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Treemap;\n}(Plot);\nexport { Treemap };","/** tofront: 同步所有元素的位置 */\nexport function placeElementsOrdered(view) {\n if (!view) {\n return;\n }\n var elements = view.geometries[0].elements;\n elements.forEach(function (elem) {\n elem.shape.toFront();\n });\n}","import { __extends } from \"tslib\";\nimport { getActionClass } from '@antv/g2';\nimport { placeElementsOrdered } from '../util';\nvar ElementActiveAction = getActionClass('element-active');\nvar VennElementActive = /** @class */function (_super) {\n __extends(VennElementActive, _super);\n function VennElementActive() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * 同步所有元素的位置\n */\n VennElementActive.prototype.syncElementsPos = function () {\n placeElementsOrdered(this.context.view);\n };\n /** 激活图形元素 */\n VennElementActive.prototype.active = function () {\n _super.prototype.active.call(this);\n this.syncElementsPos();\n };\n /** toggle 图形元素激活状态 */\n VennElementActive.prototype.toggle = function () {\n _super.prototype.toggle.call(this);\n this.syncElementsPos();\n };\n /** 重置 */\n VennElementActive.prototype.reset = function () {\n _super.prototype.reset.call(this);\n this.syncElementsPos();\n };\n return VennElementActive;\n}(ElementActiveAction);\nexport { VennElementActive };","import { __extends } from \"tslib\";\nimport { getActionClass } from '@antv/g2';\nimport { placeElementsOrdered } from '../util';\nvar ElementHighlightAction = getActionClass('element-highlight');\nvar VennElementHighlight = /** @class */function (_super) {\n __extends(VennElementHighlight, _super);\n function VennElementHighlight() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * 同步所有元素的位置\n */\n VennElementHighlight.prototype.syncElementsPos = function () {\n placeElementsOrdered(this.context.view);\n };\n /** 高亮图形元素 */\n VennElementHighlight.prototype.highlight = function () {\n _super.prototype.highlight.call(this);\n this.syncElementsPos();\n };\n /** toggle 图形元素高亮状态 */\n VennElementHighlight.prototype.toggle = function () {\n _super.prototype.toggle.call(this);\n this.syncElementsPos();\n };\n /** 清楚 */\n VennElementHighlight.prototype.clear = function () {\n _super.prototype.clear.call(this);\n this.syncElementsPos();\n };\n /** 重置 */\n VennElementHighlight.prototype.reset = function () {\n _super.prototype.reset.call(this);\n this.syncElementsPos();\n };\n return VennElementHighlight;\n}(ElementHighlightAction);\nexport { VennElementHighlight };","import { __extends } from \"tslib\";\nimport { getActionClass } from '@antv/g2';\nimport { placeElementsOrdered } from '../util';\nvar ElementSelectedAction = getActionClass('element-selected');\nvar ElementSingleSelectedAction = getActionClass('element-single-selected');\n/**\n * 韦恩图元素 多选交互\n */\nvar VennElementSelected = /** @class */function (_super) {\n __extends(VennElementSelected, _super);\n function VennElementSelected() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * 同步所有元素的位置\n */\n VennElementSelected.prototype.syncElementsPos = function () {\n placeElementsOrdered(this.context.view);\n };\n /** 激活图形元素 */\n VennElementSelected.prototype.selected = function () {\n _super.prototype.selected.call(this);\n this.syncElementsPos();\n };\n /** toggle 图形元素激活状态 */\n VennElementSelected.prototype.toggle = function () {\n _super.prototype.toggle.call(this);\n this.syncElementsPos();\n };\n /** 重置 */\n VennElementSelected.prototype.reset = function () {\n _super.prototype.reset.call(this);\n this.syncElementsPos();\n };\n return VennElementSelected;\n}(ElementSelectedAction);\nexport { VennElementSelected };\n/**\n * 韦恩图元素 单选交互\n */\nvar VennElementSingleSelected = /** @class */function (_super) {\n __extends(VennElementSingleSelected, _super);\n function VennElementSingleSelected() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * 同步所有元素的位置\n */\n VennElementSingleSelected.prototype.syncElementsPos = function () {\n placeElementsOrdered(this.context.view);\n };\n /** 激活图形元素 */\n VennElementSingleSelected.prototype.selected = function () {\n _super.prototype.selected.call(this);\n this.syncElementsPos();\n };\n /** toggle 图形元素激活状态 */\n VennElementSingleSelected.prototype.toggle = function () {\n _super.prototype.toggle.call(this);\n this.syncElementsPos();\n };\n /** 重置 */\n VennElementSingleSelected.prototype.reset = function () {\n _super.prototype.reset.call(this);\n this.syncElementsPos();\n };\n return VennElementSingleSelected;\n}(ElementSingleSelectedAction);\nexport { VennElementSingleSelected };","import { registerAction, registerInteraction } from '@antv/g2';\nimport { VennElementActive } from './actions/active';\nimport { VennElementHighlight } from './actions/highlight';\nimport { VennElementSelected, VennElementSingleSelected } from './actions/selected';\n/** ================== 注册交互反馈 aciton ================== */\nregisterAction('venn-element-active', VennElementActive);\nregisterAction('venn-element-highlight', VennElementHighlight);\nregisterAction('venn-element-selected', VennElementSelected);\nregisterAction('venn-element-single-selected', VennElementSingleSelected);\n/** ================== 注册交互 ================== */\n// ========= Active 交互 =========\nregisterInteraction('venn-element-active', {\n start: [{\n trigger: 'element:mouseenter',\n action: 'venn-element-active:active'\n }],\n end: [{\n trigger: 'element:mouseleave',\n action: 'venn-element-active:reset'\n }]\n});\n// ========= 高亮 交互 =========\nregisterInteraction('venn-element-highlight', {\n start: [{\n trigger: 'element:mouseenter',\n action: 'venn-element-highlight:highlight'\n }],\n end: [{\n trigger: 'element:mouseleave',\n action: 'venn-element-highlight:reset'\n }]\n});\n// ========= Selected 交互 =========\n// 点击 venn element (可多选)\nregisterInteraction('venn-element-selected', {\n start: [{\n trigger: 'element:click',\n action: 'venn-element-selected:toggle'\n }],\n rollback: [{\n trigger: 'dblclick',\n action: ['venn-element-selected:reset']\n }]\n});\n// 点击 venn element (单选)\nregisterInteraction('venn-element-single-selected', {\n start: [{\n trigger: 'element:click',\n action: 'venn-element-single-selected:toggle'\n }],\n rollback: [{\n trigger: 'dblclick',\n action: ['venn-element-single-selected:reset']\n }]\n});\n// ========= 韦恩图的图例事件,单独注册 =========\n// legend hover,element active\nregisterInteraction('venn-legend-active', {\n start: [{\n trigger: 'legend-item:mouseenter',\n action: ['list-active:active', 'venn-element-active:active']\n }],\n end: [{\n trigger: 'legend-item:mouseleave',\n action: ['list-active:reset', 'venn-element-active:reset']\n }]\n});\n// legend hover,element active\nregisterInteraction('venn-legend-highlight', {\n start: [{\n trigger: 'legend-item:mouseenter',\n action: ['legend-item-highlight:highlight', 'venn-element-highlight:highlight']\n }],\n end: [{\n trigger: 'legend-item:mouseleave',\n action: ['legend-item-highlight:reset', 'venn-element-highlight:reset']\n }]\n});","import { __extends } from \"tslib\";\nimport { GeometryLabel, registerGeometryLabel } from '@antv/g2';\n// Step 1\n// 自定义 Label 类\n// 需要继承 GeometryLabel 基类\nvar VennLabel = /** @class */function (_super) {\n __extends(VennLabel, _super);\n function VennLabel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * 获取每个 label 的位置\n * @param labelCfg\n * @param mappingData\n * @param index\n * @returns label point\n */\n VennLabel.prototype.getLabelPoint = function (labelCfg, mappingData, index) {\n var _a = labelCfg.data,\n x = _a.x,\n y = _a.y;\n var _b = labelCfg.customLabelInfo,\n offsetX = _b.offsetX,\n offsetY = _b.offsetY;\n return {\n content: labelCfg.content[index],\n x: x + offsetX,\n y: y + offsetY\n };\n };\n return VennLabel;\n}(GeometryLabel);\n// Step 2: 注册 CustomLabel\nregisterGeometryLabel('venn', VennLabel);","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\nexport default isArray;","import { isArray } from 'lodash-es';\nvar SPACES = \"\\t\\n\\x0B\\f\\r \\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\";\nvar PATH_COMMAND = new RegExp('([a-z])[' + SPACES + ',]*((-?\\\\d*\\\\.?\\\\d*(?:e[\\\\-+]?\\\\d+)?[' + SPACES + ']*,?[' + SPACES + ']*)+)', 'ig');\nvar PATH_VALUES = new RegExp('(-?\\\\d*\\\\.?\\\\d*(?:e[\\\\-+]?\\\\d+)?)[' + SPACES + ']*,?[' + SPACES + ']*', 'ig');\n// Parses given path string into an array of arrays of path segments\nexport default function parsePathString(pathString) {\n if (!pathString) {\n return null;\n }\n if (isArray(pathString)) {\n return pathString;\n }\n var paramCounts = {\n a: 7,\n c: 6,\n o: 2,\n h: 1,\n l: 2,\n m: 2,\n r: 4,\n q: 4,\n s: 4,\n t: 2,\n v: 1,\n u: 3,\n z: 0\n };\n var data = [];\n String(pathString).replace(PATH_COMMAND, function (a, b, c) {\n var params = [];\n var name = b.toLowerCase();\n c.replace(PATH_VALUES, function (a, b) {\n b && params.push(+b);\n });\n if (name === 'm' && params.length > 2) {\n data.push([b].concat(params.splice(0, 2)));\n name = 'l';\n b = b === 'm' ? 'l' : 'L';\n }\n if (name === 'o' && params.length === 1) {\n data.push([b, params[0]]);\n }\n if (name === 'r') {\n data.push([b].concat(params));\n } else {\n while (params.length >= paramCounts[name]) {\n data.push([b].concat(params.splice(0, paramCounts[name])));\n if (!paramCounts[name]) {\n break;\n }\n }\n }\n return '';\n });\n return data;\n}","var TAU = Math.PI * 2;\nvar mapToEllipse = function mapToEllipse(_a, rx, ry, cosphi, sinphi, centerx, centery) {\n var x = _a.x,\n y = _a.y;\n x *= rx;\n y *= ry;\n var xp = cosphi * x - sinphi * y;\n var yp = sinphi * x + cosphi * y;\n return {\n x: xp + centerx,\n y: yp + centery\n };\n};\nvar approxUnitArc = function approxUnitArc(ang1, ang2) {\n // If 90 degree circular arc, use a constant\n // as derived from http://spencermortensen.com/articles/bezier-circle\n var a = ang2 === 1.5707963267948966 ? 0.551915024494 : ang2 === -1.5707963267948966 ? -0.551915024494 : 4 / 3 * Math.tan(ang2 / 4);\n var x1 = Math.cos(ang1);\n var y1 = Math.sin(ang1);\n var x2 = Math.cos(ang1 + ang2);\n var y2 = Math.sin(ang1 + ang2);\n return [{\n x: x1 - y1 * a,\n y: y1 + x1 * a\n }, {\n x: x2 + y2 * a,\n y: y2 - x2 * a\n }, {\n x: x2,\n y: y2\n }];\n};\nvar vectorAngle = function vectorAngle(ux, uy, vx, vy) {\n var sign = ux * vy - uy * vx < 0 ? -1 : 1;\n var dot = ux * vx + uy * vy;\n if (dot > 1) {\n dot = 1;\n }\n if (dot < -1) {\n dot = -1;\n }\n return sign * Math.acos(dot);\n};\nvar getArcCenter = function getArcCenter(px, py, cx, cy, rx, ry, largeArcFlag, sweepFlag, sinphi, cosphi, pxp, pyp) {\n var rxsq = Math.pow(rx, 2);\n var rysq = Math.pow(ry, 2);\n var pxpsq = Math.pow(pxp, 2);\n var pypsq = Math.pow(pyp, 2);\n var radicant = rxsq * rysq - rxsq * pypsq - rysq * pxpsq;\n if (radicant < 0) {\n radicant = 0;\n }\n radicant /= rxsq * pypsq + rysq * pxpsq;\n radicant = Math.sqrt(radicant) * (largeArcFlag === sweepFlag ? -1 : 1);\n var centerxp = radicant * rx / ry * pyp;\n var centeryp = radicant * -ry / rx * pxp;\n var centerx = cosphi * centerxp - sinphi * centeryp + (px + cx) / 2;\n var centery = sinphi * centerxp + cosphi * centeryp + (py + cy) / 2;\n var vx1 = (pxp - centerxp) / rx;\n var vy1 = (pyp - centeryp) / ry;\n var vx2 = (-pxp - centerxp) / rx;\n var vy2 = (-pyp - centeryp) / ry;\n var ang1 = vectorAngle(1, 0, vx1, vy1);\n var ang2 = vectorAngle(vx1, vy1, vx2, vy2);\n if (sweepFlag === 0 && ang2 > 0) {\n ang2 -= TAU;\n }\n if (sweepFlag === 1 && ang2 < 0) {\n ang2 += TAU;\n }\n return [centerx, centery, ang1, ang2];\n};\nvar arcToBezier = function arcToBezier(_a) {\n var px = _a.px,\n py = _a.py,\n cx = _a.cx,\n cy = _a.cy,\n rx = _a.rx,\n ry = _a.ry,\n _b = _a.xAxisRotation,\n xAxisRotation = _b === void 0 ? 0 : _b,\n _c = _a.largeArcFlag,\n largeArcFlag = _c === void 0 ? 0 : _c,\n _d = _a.sweepFlag,\n sweepFlag = _d === void 0 ? 0 : _d;\n var curves = [];\n if (rx === 0 || ry === 0) {\n return [{\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 0,\n x: cx,\n y: cy\n }];\n }\n var sinphi = Math.sin(xAxisRotation * TAU / 360);\n var cosphi = Math.cos(xAxisRotation * TAU / 360);\n var pxp = cosphi * (px - cx) / 2 + sinphi * (py - cy) / 2;\n var pyp = -sinphi * (px - cx) / 2 + cosphi * (py - cy) / 2;\n if (pxp === 0 && pyp === 0) {\n return [{\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 0,\n x: cx,\n y: cy\n }];\n }\n rx = Math.abs(rx);\n ry = Math.abs(ry);\n var lambda = Math.pow(pxp, 2) / Math.pow(rx, 2) + Math.pow(pyp, 2) / Math.pow(ry, 2);\n if (lambda > 1) {\n rx *= Math.sqrt(lambda);\n ry *= Math.sqrt(lambda);\n }\n var _e = getArcCenter(px, py, cx, cy, rx, ry, largeArcFlag, sweepFlag, sinphi, cosphi, pxp, pyp),\n centerx = _e[0],\n centery = _e[1],\n ang1 = _e[2],\n ang2 = _e[3];\n // If 'ang2' == 90.0000000001, then `ratio` will evaluate to\n // 1.0000000001. This causes `segments` to be greater than one, which is an\n // unecessary split, and adds extra points to the bezier curve. To alleviate\n // this issue, we round to 1.0 when the ratio is close to 1.0.\n var ratio = Math.abs(ang2) / (TAU / 4);\n if (Math.abs(1.0 - ratio) < 0.0000001) {\n ratio = 1.0;\n }\n var segments = Math.max(Math.ceil(ratio), 1);\n ang2 /= segments;\n for (var i = 0; i < segments; i++) {\n curves.push(approxUnitArc(ang1, ang2));\n ang1 += ang2;\n }\n return curves.map(function (curve) {\n var _a = mapToEllipse(curve[0], rx, ry, cosphi, sinphi, centerx, centery),\n x1 = _a.x,\n y1 = _a.y;\n var _b = mapToEllipse(curve[1], rx, ry, cosphi, sinphi, centerx, centery),\n x2 = _b.x,\n y2 = _b.y;\n var _c = mapToEllipse(curve[2], rx, ry, cosphi, sinphi, centerx, centery),\n x = _c.x,\n y = _c.y;\n return {\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2,\n x: x,\n y: y\n };\n });\n};\nexport function arcToCubic(x1, y1, rx, ry, angle, LAF, SF, x2, y2) {\n var curves = arcToBezier({\n px: x1,\n py: y1,\n cx: x2,\n cy: y2,\n rx: rx,\n ry: ry,\n xAxisRotation: angle,\n largeArcFlag: LAF,\n sweepFlag: SF\n });\n return curves.reduce(function (prev, cur) {\n var x1 = cur.x1,\n y1 = cur.y1,\n x2 = cur.x2,\n y2 = cur.y2,\n x = cur.x,\n y = cur.y;\n prev.push(x1, y1, x2, y2, x, y);\n return prev;\n }, []);\n}","import { __assign } from \"tslib\";\nimport { registerShape, Util } from '@antv/g2';\nimport { parsePathString } from '@antv/path-util';\nimport { deepAssign } from '../../utils';\nimport { PATH_FIELD } from './constant';\n/**\n * 获取填充属性\n * @param cfg 图形绘制数据\n */\nfunction getFillAttrs(cfg) {\n // style.fill 优先级更高\n return deepAssign({}, cfg.defaultStyle, {\n fill: cfg.color\n }, cfg.style);\n}\nregisterShape('schema', 'venn', {\n draw: function draw(cfg, container) {\n var data = cfg.data;\n var segments = parsePathString(data[PATH_FIELD]);\n var fillAttrs = getFillAttrs(cfg);\n var group = container.addGroup({\n name: 'venn-shape'\n });\n group.addShape('path', {\n attrs: __assign(__assign({}, fillAttrs), {\n path: segments\n }),\n name: 'venn-path'\n });\n var _a = cfg.customInfo,\n offsetX = _a.offsetX,\n offsetY = _a.offsetY;\n var matrix = Util.transform(null, [['t', offsetX, offsetY]]);\n group.setMatrix(matrix);\n return group;\n },\n getMarker: function getMarker(markerCfg) {\n var color = markerCfg.color;\n return {\n symbol: 'circle',\n style: {\n lineWidth: 0,\n stroke: color,\n fill: color,\n r: 4\n }\n };\n }\n});","import colorUtil from '@antv/color-util';\n/*\n * interpolates between a set of colors uzing a bezier spline\n * blend mode formulas taken from http://www.venture-ware.com/kevin/coding/lets-learn-math-photoshop-blend-modes/\n */\nvar each = function each(f) {\n return function (c0, c1) {\n var out = [];\n out[0] = f(c0[0], c1[0]);\n out[1] = f(c0[1], c1[1]);\n out[2] = f(c0[2], c1[2]);\n return out;\n };\n};\n/**\n * 混合方法集合\n */\nvar blendObject = {\n normal: function normal(a) {\n return a;\n },\n multiply: function multiply(a, b) {\n return a * b / 255;\n },\n screen: function screen(a, b) {\n return 255 * (1 - (1 - a / 255) * (1 - b / 255));\n },\n overlay: function overlay(a, b) {\n return b < 128 ? 2 * a * b / 255 : 255 * (1 - 2 * (1 - a / 255) * (1 - b / 255));\n },\n darken: function darken(a, b) {\n return a > b ? b : a;\n },\n lighten: function lighten(a, b) {\n return a > b ? a : b;\n },\n dodge: function dodge(a, b) {\n if (a === 255) return 255;\n a = 255 * (b / 255) / (1 - a / 255);\n return a > 255 ? 255 : a;\n },\n burn: function burn(a, b) {\n // 参考 w3c 的写法,考虑除数为 0 的情况\n if (b === 255) return 255;else if (a === 0) return 0;else return 255 * (1 - Math.min(1, (1 - b / 255) / (a / 255)));\n }\n};\n/**\n * 获取混合方法\n */\nexport var innerBlend = function innerBlend(mode) {\n if (!blendObject[mode]) {\n throw new Error('unknown blend mode ' + mode);\n }\n return blendObject[mode];\n};\n/**\n * 混合颜色,并处理透明度情况\n * 参考:https://www.w3.org/TR/compositing/#blending\n * @param c0\n * @param c1\n * @param mode 混合模式\n * @return rbga\n */\nexport function blend(c0, c1, mode) {\n if (mode === void 0) {\n mode = 'normal';\n }\n // blendRgbArr: 生成不考虑透明度的 blend color: [r, g, b]\n var blendRgbArr = each(innerBlend(mode))(colorToArr(c0), colorToArr(c1));\n var _a = colorToArr(c0),\n r0 = _a[0],\n g0 = _a[1],\n b0 = _a[2],\n a0 = _a[3];\n var _b = colorToArr(c1),\n r1 = _b[0],\n g1 = _b[1],\n b1 = _b[2],\n a1 = _b[3];\n var a = Number((a0 + a1 * (1 - a0)).toFixed(2));\n var r = Math.round((a0 * (1 - a1) * (r0 / 255) + a0 * a1 * (blendRgbArr[0] / 255) + (1 - a0) * a1 * (r1 / 255)) / a * 255);\n var g = Math.round((a0 * (1 - a1) * (g0 / 255) + a0 * a1 * (blendRgbArr[1] / 255) + (1 - a0) * a1 * (g1 / 255)) / a * 255);\n var b = Math.round((a0 * (1 - a1) * (b0 / 255) + a0 * a1 * (blendRgbArr[2] / 255) + (1 - a0) * a1 * (b1 / 255)) / a * 255);\n return \"rgba(\".concat(r, \", \").concat(g, \", \").concat(b, \", \").concat(a, \")\");\n}\n/**\n * 统一颜色输入的格式 [r, g, b, a]\n * 参考:https://www.w3.org/TR/compositing/#blending\n * @param c color\n * @return [r, g, b, a]\n */\nexport function colorToArr(c) {\n var color = c.replace('/s+/g', ''); // 去除所有空格\n var rgbaArr;\n // 'red' -> [r, g, b, 1]\n if (typeof color === 'string' && !color.startsWith('rgba') && !color.startsWith('#')) {\n return rgbaArr = colorUtil.rgb2arr(colorUtil.toRGB(color)).concat([1]);\n }\n // rgba(255, 200, 125, 0.5) -> [r, g, b, a]\n if (color.startsWith('rgba')) rgbaArr = color.replace('rgba(', '').replace(')', '').split(',');\n // '#fff000' -> [r, g, b, 1]\n if (color.startsWith('#')) rgbaArr = colorUtil.rgb2arr(color).concat([1]); // 如果是 16 进制(6 位数),默认透明度 1\n // [r, g, b, a] 前三位取整\n return rgbaArr.map(function (item, index) {\n return index === 3 ? Number(item) : item | 0;\n });\n}","var SMALL = 1e-10;\n/** Returns the intersection area of a bunch of circles (where each circle\n is an object having an x,y and radius property) */\nexport function intersectionArea(circles, stats) {\n // get all the intersection points of the circles\n var intersectionPoints = getIntersectionPoints(circles);\n // filter out points that aren't included in all the circles\n var innerPoints = intersectionPoints.filter(function (p) {\n return containedInCircles(p, circles);\n });\n var arcArea = 0,\n polygonArea = 0,\n i;\n var arcs = [];\n // if we have intersection points that are within all the circles,\n // then figure out the area contained by them\n if (innerPoints.length > 1) {\n // sort the points by angle from the center of the polygon, which lets\n // us just iterate over points to get the edges\n var center = getCenter(innerPoints);\n for (i = 0; i < innerPoints.length; ++i) {\n var p = innerPoints[i];\n p.angle = Math.atan2(p.x - center.x, p.y - center.y);\n }\n innerPoints.sort(function (a, b) {\n return b.angle - a.angle;\n });\n // iterate over all points, get arc between the points\n // and update the areas\n var p2 = innerPoints[innerPoints.length - 1];\n for (i = 0; i < innerPoints.length; ++i) {\n var p1 = innerPoints[i];\n // polygon area updates easily ...\n polygonArea += (p2.x + p1.x) * (p1.y - p2.y);\n // updating the arc area is a little more involved\n var midPoint = {\n x: (p1.x + p2.x) / 2,\n y: (p1.y + p2.y) / 2\n };\n var arc = null;\n for (var j = 0; j < p1.parentIndex.length; ++j) {\n if (p2.parentIndex.indexOf(p1.parentIndex[j]) > -1) {\n // figure out the angle halfway between the two points\n // on the current circle\n var circle = circles[p1.parentIndex[j]],\n a1 = Math.atan2(p1.x - circle.x, p1.y - circle.y),\n a2 = Math.atan2(p2.x - circle.x, p2.y - circle.y);\n var angleDiff = a2 - a1;\n if (angleDiff < 0) {\n angleDiff += 2 * Math.PI;\n }\n // and use that angle to figure out the width of the\n // arc\n var a = a2 - angleDiff / 2;\n var width = distance(midPoint, {\n x: circle.x + circle.radius * Math.sin(a),\n y: circle.y + circle.radius * Math.cos(a)\n });\n // clamp the width to the largest is can actually be\n // (sometimes slightly overflows because of FP errors)\n if (width > circle.radius * 2) {\n width = circle.radius * 2;\n }\n // pick the circle whose arc has the smallest width\n if (arc === null || arc.width > width) {\n arc = {\n circle: circle,\n width: width,\n p1: p1,\n p2: p2\n };\n }\n }\n }\n if (arc !== null) {\n arcs.push(arc);\n arcArea += circleArea(arc.circle.radius, arc.width);\n p2 = p1;\n }\n }\n } else {\n // no intersection points, is either disjoint - or is completely\n // overlapped. figure out which by examining the smallest circle\n var smallest = circles[0];\n for (i = 1; i < circles.length; ++i) {\n if (circles[i].radius < smallest.radius) {\n smallest = circles[i];\n }\n }\n // make sure the smallest circle is completely contained in all\n // the other circles\n var disjoint = false;\n for (i = 0; i < circles.length; ++i) {\n if (distance(circles[i], smallest) > Math.abs(smallest.radius - circles[i].radius)) {\n disjoint = true;\n break;\n }\n }\n if (disjoint) {\n arcArea = polygonArea = 0;\n } else {\n arcArea = smallest.radius * smallest.radius * Math.PI;\n arcs.push({\n circle: smallest,\n p1: {\n x: smallest.x,\n y: smallest.y + smallest.radius\n },\n p2: {\n x: smallest.x - SMALL,\n y: smallest.y + smallest.radius\n },\n width: smallest.radius * 2\n });\n }\n }\n polygonArea /= 2;\n if (stats) {\n stats.area = arcArea + polygonArea;\n stats.arcArea = arcArea;\n stats.polygonArea = polygonArea;\n stats.arcs = arcs;\n stats.innerPoints = innerPoints;\n stats.intersectionPoints = intersectionPoints;\n }\n return arcArea + polygonArea;\n}\n/** returns whether a point is contained by all of a list of circles */\nexport function containedInCircles(point, circles) {\n for (var i = 0; i < circles.length; ++i) {\n if (distance(point, circles[i]) > circles[i].radius + SMALL) {\n return false;\n }\n }\n return true;\n}\n/** Gets all intersection points between a bunch of circles */\nfunction getIntersectionPoints(circles) {\n var ret = [];\n for (var i = 0; i < circles.length; ++i) {\n for (var j = i + 1; j < circles.length; ++j) {\n var intersect = circleCircleIntersection(circles[i], circles[j]);\n for (var k = 0; k < intersect.length; ++k) {\n var p = intersect[k];\n p.parentIndex = [i, j];\n ret.push(p);\n }\n }\n }\n return ret;\n}\n/** Circular segment area calculation. See http://mathworld.wolfram.com/CircularSegment.html */\nexport function circleArea(r, width) {\n return r * r * Math.acos(1 - width / r) - (r - width) * Math.sqrt(width * (2 * r - width));\n}\n/** euclidean distance between two points */\nexport function distance(p1, p2) {\n return Math.sqrt((p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y));\n}\n/** Returns the overlap area of two circles of radius r1 and r2 - that\nhave their centers separated by distance d. Simpler faster\ncircle intersection for only two circles */\nexport function circleOverlap(r1, r2, d) {\n // no overlap\n if (d >= r1 + r2) {\n return 0;\n }\n // completely overlapped\n if (d <= Math.abs(r1 - r2)) {\n return Math.PI * Math.min(r1, r2) * Math.min(r1, r2);\n }\n var w1 = r1 - (d * d - r2 * r2 + r1 * r1) / (2 * d),\n w2 = r2 - (d * d - r1 * r1 + r2 * r2) / (2 * d);\n return circleArea(r1, w1) + circleArea(r2, w2);\n}\n/** Given two circles (containing a x/y/radius attributes),\nreturns the intersecting points if possible.\nnote: doesn't handle cases where there are infinitely many\nintersection points (circles are equivalent):, or only one intersection point*/\nexport function circleCircleIntersection(p1, p2) {\n var d = distance(p1, p2),\n r1 = p1.radius,\n r2 = p2.radius;\n // if to far away, or self contained - can't be done\n if (d >= r1 + r2 || d <= Math.abs(r1 - r2)) {\n return [];\n }\n var a = (r1 * r1 - r2 * r2 + d * d) / (2 * d),\n h = Math.sqrt(r1 * r1 - a * a),\n x0 = p1.x + a * (p2.x - p1.x) / d,\n y0 = p1.y + a * (p2.y - p1.y) / d,\n rx = -(p2.y - p1.y) * (h / d),\n ry = -(p2.x - p1.x) * (h / d);\n return [{\n x: x0 + rx,\n y: y0 - ry\n }, {\n x: x0 - rx,\n y: y0 + ry\n }];\n}\n/** Returns the center of a bunch of points */\nexport function getCenter(points) {\n var center = {\n x: 0,\n y: 0\n };\n for (var i = 0; i < points.length; ++i) {\n center.x += points[i].x;\n center.y += points[i].y;\n }\n center.x /= points.length;\n center.y /= points.length;\n return center;\n}","import { nelderMead } from 'fmin';\nimport { distance, getCenter, intersectionArea } from './circleintersection';\nfunction circleMargin(current, interior, exterior) {\n var margin = interior[0].radius - distance(interior[0], current),\n i,\n m;\n for (i = 1; i < interior.length; ++i) {\n m = interior[i].radius - distance(interior[i], current);\n if (m <= margin) {\n margin = m;\n }\n }\n for (i = 0; i < exterior.length; ++i) {\n m = distance(exterior[i], current) - exterior[i].radius;\n if (m <= margin) {\n margin = m;\n }\n }\n return margin;\n}\n// compute the center of some circles by maximizing the margin of\n// the center point relative to the circles (interior) after subtracting\n// nearby circles (exterior)\nexport function computeTextCentre(interior, exterior) {\n // get an initial estimate by sampling around the interior circles\n // and taking the point with the biggest margin\n var points = [];\n var i;\n for (i = 0; i < interior.length; ++i) {\n var c = interior[i];\n points.push({\n x: c.x,\n y: c.y\n });\n points.push({\n x: c.x + c.radius / 2,\n y: c.y\n });\n points.push({\n x: c.x - c.radius / 2,\n y: c.y\n });\n points.push({\n x: c.x,\n y: c.y + c.radius / 2\n });\n points.push({\n x: c.x,\n y: c.y - c.radius / 2\n });\n }\n var initial = points[0],\n margin = circleMargin(points[0], interior, exterior);\n for (i = 1; i < points.length; ++i) {\n var m = circleMargin(points[i], interior, exterior);\n if (m >= margin) {\n initial = points[i];\n margin = m;\n }\n }\n // maximize the margin numerically\n var solution = nelderMead(function (p) {\n return -1 * circleMargin({\n x: p[0],\n y: p[1]\n }, interior, exterior);\n }, [initial.x, initial.y], {\n maxIterations: 500,\n minErrorDelta: 1e-10\n }).x;\n var ret = {\n x: solution[0],\n y: solution[1]\n };\n // check solution, fallback as needed (happens if fully overlapped\n // etc)\n var valid = true;\n for (i = 0; i < interior.length; ++i) {\n if (distance(ret, interior[i]) > interior[i].radius) {\n valid = false;\n break;\n }\n }\n for (i = 0; i < exterior.length; ++i) {\n if (distance(ret, exterior[i]) < exterior[i].radius) {\n valid = false;\n break;\n }\n }\n if (!valid) {\n if (interior.length == 1) {\n ret = {\n x: interior[0].x,\n y: interior[0].y\n };\n } else {\n var areaStats = {};\n intersectionArea(interior, areaStats);\n if (areaStats.arcs.length === 0) {\n ret = {\n x: 0,\n y: -1000,\n disjoint: true\n };\n } else if (areaStats.arcs.length == 1) {\n ret = {\n x: areaStats.arcs[0].circle.x,\n y: areaStats.arcs[0].circle.y\n };\n } else if (exterior.length) {\n // try again without other circles\n ret = computeTextCentre(interior, []);\n } else {\n // take average of all the points in the intersection\n // polygon. this should basically never happen\n // and has some issues:\n // https://github.com/benfred/venn.js/issues/48#issuecomment-146069777\n ret = getCenter(areaStats.arcs.map(function (a) {\n return a.p1;\n }));\n }\n }\n }\n return ret;\n}\n// given a dictionary of {setid : circle}, returns\n// a dictionary of setid to list of circles that completely overlap it\nfunction getOverlappingCircles(circles) {\n var ret = {},\n circleids = [];\n for (var circleid in circles) {\n circleids.push(circleid);\n ret[circleid] = [];\n }\n for (var i = 0; i < circleids.length; i++) {\n var a = circles[circleids[i]];\n for (var j = i + 1; j < circleids.length; ++j) {\n var b = circles[circleids[j]],\n d = distance(a, b);\n if (d + b.radius <= a.radius + 1e-10) {\n ret[circleids[j]].push(circleids[i]);\n } else if (d + a.radius <= b.radius + 1e-10) {\n ret[circleids[i]].push(circleids[j]);\n }\n }\n }\n return ret;\n}\nexport function computeTextCentres(circles, areas) {\n var ret = {},\n overlapped = getOverlappingCircles(circles);\n for (var i = 0; i < areas.length; ++i) {\n var area = areas[i].sets,\n areaids = {},\n exclude = {};\n for (var j = 0; j < area.length; ++j) {\n areaids[area[j]] = true;\n var overlaps = overlapped[area[j]];\n // keep track of any circles that overlap this area,\n // and don't consider for purposes of computing the text\n // centre\n for (var k = 0; k < overlaps.length; ++k) {\n exclude[overlaps[k]] = true;\n }\n }\n var interior = [],\n exterior = [];\n for (var setid in circles) {\n if (setid in areaids) {\n interior.push(circles[setid]);\n } else if (!(setid in exclude)) {\n exterior.push(circles[setid]);\n }\n }\n var centre = computeTextCentre(interior, exterior);\n ret[area] = centre;\n if (centre.disjoint && areas[i].size > 0) {\n console.log('WARNING: area ' + area + ' not represented on screen');\n }\n }\n return ret;\n}\n/**\n * 根据圆心(x, y) 半径 r 返回圆的绘制 path\n * @param x 圆心点 x\n * @param y 圆心点 y\n * @param r 圆的半径\n * @returns 圆的 path\n */\nexport function circlePath(x, y, r) {\n var ret = [];\n // ret.push('\\nM', x, y);\n // ret.push('\\nm', -r, 0);\n // ret.push('\\na', r, r, 0, 1, 0, r * 2, 0);\n // ret.push('\\na', r, r, 0, 1, 0, -r * 2, 0);\n var x0 = x - r;\n var y0 = y;\n ret.push('M', x0, y0);\n ret.push('A', r, r, 0, 1, 0, x0 + 2 * r, y0);\n ret.push('A', r, r, 0, 1, 0, x0, y0);\n return ret.join(' ');\n}\n// inverse of the circlePath function, returns a circle object from an svg path\nexport function circleFromPath(path) {\n var tokens = path.split(' ');\n return {\n x: parseFloat(tokens[1]),\n y: parseFloat(tokens[2]),\n radius: -parseFloat(tokens[4])\n };\n}\n/** returns a svg path of the intersection area of a bunch of circles */\nexport function intersectionAreaPath(circles) {\n var stats = {};\n intersectionArea(circles, stats);\n var arcs = stats.arcs;\n if (arcs.length === 0) {\n return 'M 0 0';\n } else if (arcs.length == 1) {\n var circle = arcs[0].circle;\n return circlePath(circle.x, circle.y, circle.radius);\n } else {\n // draw path around arcs\n var ret = ['\\nM', arcs[0].p2.x, arcs[0].p2.y];\n for (var i = 0; i < arcs.length; ++i) {\n var arc = arcs[i],\n r = arc.circle.radius,\n wide = arc.width > r;\n ret.push('\\nA', r, r, 0, wide ? 1 : 0, 1, arc.p1.x, arc.p1.y);\n }\n return ret.join(' ');\n }\n}","import { bisect, conjugateGradient, nelderMead, norm2, scale, zeros, zerosM } from 'fmin';\nimport { circleCircleIntersection, circleOverlap, distance, intersectionArea } from './circleintersection';\n/** given a list of set objects, and their corresponding overlaps.\nupdates the (x, y, radius) attribute on each set such that their positions\nroughly correspond to the desired overlaps */\nexport function venn(areas, parameters) {\n parameters = parameters || {};\n parameters.maxIterations = parameters.maxIterations || 500;\n var initialLayout = parameters.initialLayout || bestInitialLayout;\n var loss = parameters.lossFunction || lossFunction;\n // add in missing pairwise areas as having 0 size\n areas = addMissingAreas(areas);\n // initial layout is done greedily\n var circles = initialLayout(areas, parameters);\n // transform x/y coordinates to a vector to optimize\n var initial = [],\n setids = [];\n var setid;\n for (setid in circles) {\n // eslint-disable-next-line\n if (circles.hasOwnProperty(setid)) {\n initial.push(circles[setid].x);\n initial.push(circles[setid].y);\n setids.push(setid);\n }\n }\n // optimize initial layout from our loss function\n var solution = nelderMead(function (values) {\n var current = {};\n for (var i = 0; i < setids.length; ++i) {\n var setid_1 = setids[i];\n current[setid_1] = {\n x: values[2 * i],\n y: values[2 * i + 1],\n radius: circles[setid_1].radius\n // size : circles[setid].size\n };\n }\n\n return loss(current, areas);\n }, initial, parameters);\n // transform solution vector back to x/y points\n var positions = solution.x;\n for (var i = 0; i < setids.length; ++i) {\n setid = setids[i];\n circles[setid].x = positions[2 * i];\n circles[setid].y = positions[2 * i + 1];\n }\n return circles;\n}\nvar SMALL = 1e-10;\n/** Returns the distance necessary for two circles of radius r1 + r2 to\nhave the overlap area 'overlap' */\nexport function distanceFromIntersectArea(r1, r2, overlap) {\n // handle complete overlapped circles\n if (Math.min(r1, r2) * Math.min(r1, r2) * Math.PI <= overlap + SMALL) {\n return Math.abs(r1 - r2);\n }\n return bisect(function (distance) {\n return circleOverlap(r1, r2, distance) - overlap;\n }, 0, r1 + r2);\n}\n/** Missing pair-wise intersection area data can cause problems:\n treating as an unknown means that sets will be laid out overlapping,\n which isn't what people expect. To reflect that we want disjoint sets\n here, set the overlap to 0 for all missing pairwise set intersections */\nfunction addMissingAreas(areas) {\n areas = areas.slice();\n // two circle intersections that aren't defined\n var ids = [],\n pairs = {};\n var i, j, a, b;\n for (i = 0; i < areas.length; ++i) {\n var area = areas[i];\n if (area.sets.length == 1) {\n ids.push(area.sets[0]);\n } else if (area.sets.length == 2) {\n a = area.sets[0];\n b = area.sets[1];\n // @ts-ignore\n pairs[[a, b]] = true;\n // @ts-ignore\n pairs[[b, a]] = true;\n }\n }\n ids.sort(function (a, b) {\n return a > b ? 1 : -1;\n });\n for (i = 0; i < ids.length; ++i) {\n a = ids[i];\n for (j = i + 1; j < ids.length; ++j) {\n b = ids[j];\n // @ts-ignore\n if (!([a, b] in pairs)) {\n areas.push({\n sets: [a, b],\n size: 0\n });\n }\n }\n }\n return areas;\n}\n/// Returns two matrices, one of the euclidean distances between the sets\n/// and the other indicating if there are subset or disjoint set relationships\nexport function getDistanceMatrices(areas, sets, setids) {\n // initialize an empty distance matrix between all the points\n var distances = zerosM(sets.length, sets.length),\n constraints = zerosM(sets.length, sets.length);\n // compute required distances between all the sets such that\n // the areas match\n areas.filter(function (x) {\n return x.sets.length == 2;\n }).map(function (current) {\n var left = setids[current.sets[0]],\n right = setids[current.sets[1]],\n r1 = Math.sqrt(sets[left].size / Math.PI),\n r2 = Math.sqrt(sets[right].size / Math.PI),\n distance = distanceFromIntersectArea(r1, r2, current.size);\n distances[left][right] = distances[right][left] = distance;\n // also update constraints to indicate if its a subset or disjoint\n // relationship\n var c = 0;\n if (current.size + 1e-10 >= Math.min(sets[left].size, sets[right].size)) {\n c = 1;\n } else if (current.size <= 1e-10) {\n c = -1;\n }\n constraints[left][right] = constraints[right][left] = c;\n });\n return {\n distances: distances,\n constraints: constraints\n };\n}\n/// computes the gradient and loss simulatenously for our constrained MDS optimizer\nfunction constrainedMDSGradient(x, fxprime, distances, constraints) {\n var loss = 0,\n i;\n for (i = 0; i < fxprime.length; ++i) {\n fxprime[i] = 0;\n }\n for (i = 0; i < distances.length; ++i) {\n var xi = x[2 * i],\n yi = x[2 * i + 1];\n for (var j = i + 1; j < distances.length; ++j) {\n var xj = x[2 * j],\n yj = x[2 * j + 1],\n dij = distances[i][j],\n constraint = constraints[i][j];\n var squaredDistance = (xj - xi) * (xj - xi) + (yj - yi) * (yj - yi),\n distance_1 = Math.sqrt(squaredDistance),\n delta = squaredDistance - dij * dij;\n if (constraint > 0 && distance_1 <= dij || constraint < 0 && distance_1 >= dij) {\n continue;\n }\n loss += 2 * delta * delta;\n fxprime[2 * i] += 4 * delta * (xi - xj);\n fxprime[2 * i + 1] += 4 * delta * (yi - yj);\n fxprime[2 * j] += 4 * delta * (xj - xi);\n fxprime[2 * j + 1] += 4 * delta * (yj - yi);\n }\n }\n return loss;\n}\n/// takes the best working variant of either constrained MDS or greedy\nexport function bestInitialLayout(areas, params) {\n var initial = greedyLayout(areas, params);\n var loss = params.lossFunction || lossFunction;\n // greedylayout is sufficient for all 2/3 circle cases. try out\n // constrained MDS for higher order problems, take its output\n // if it outperforms. (greedy is aesthetically better on 2/3 circles\n // since it axis aligns)\n if (areas.length >= 8) {\n var constrained = constrainedMDSLayout(areas, params),\n constrainedLoss = loss(constrained, areas),\n greedyLoss = loss(initial, areas);\n if (constrainedLoss + 1e-8 < greedyLoss) {\n initial = constrained;\n }\n }\n return initial;\n}\n/// use the constrained MDS variant to generate an initial layout\nexport function constrainedMDSLayout(areas, params) {\n params = params || {};\n var restarts = params.restarts || 10;\n // bidirectionally map sets to a rowid (so we can create a matrix)\n var sets = [],\n setids = {};\n var i;\n for (i = 0; i < areas.length; ++i) {\n var area = areas[i];\n if (area.sets.length == 1) {\n setids[area.sets[0]] = sets.length;\n sets.push(area);\n }\n }\n var matrices = getDistanceMatrices(areas, sets, setids);\n var distances = matrices.distances;\n var constraints = matrices.constraints;\n // keep distances bounded, things get messed up otherwise.\n // TODO: proper preconditioner?\n var norm = norm2(distances.map(norm2)) / distances.length;\n distances = distances.map(function (row) {\n return row.map(function (value) {\n return value / norm;\n });\n });\n var obj = function obj(x, fxprime) {\n return constrainedMDSGradient(x, fxprime, distances, constraints);\n };\n var best, current;\n for (i = 0; i < restarts; ++i) {\n var initial = zeros(distances.length * 2).map(Math.random);\n current = conjugateGradient(obj, initial, params);\n if (!best || current.fx < best.fx) {\n best = current;\n }\n }\n var positions = best.x;\n // translate rows back to (x,y,radius) coordinates\n var circles = {};\n for (i = 0; i < sets.length; ++i) {\n var set = sets[i];\n circles[set.sets[0]] = {\n x: positions[2 * i] * norm,\n y: positions[2 * i + 1] * norm,\n radius: Math.sqrt(set.size / Math.PI)\n };\n }\n if (params.history) {\n for (i = 0; i < params.history.length; ++i) {\n scale(params.history[i].x, norm);\n }\n }\n return circles;\n}\n/** Lays out a Venn diagram greedily, going from most overlapped sets to\nleast overlapped, attempting to position each new set such that the\noverlapping areas to already positioned sets are basically right */\nexport function greedyLayout(areas, params) {\n var loss = params && params.lossFunction ? params.lossFunction : lossFunction;\n // define a circle for each set\n var circles = {},\n setOverlaps = {};\n var set;\n for (var i = 0; i < areas.length; ++i) {\n var area = areas[i];\n if (area.sets.length == 1) {\n set = area.sets[0];\n circles[set] = {\n x: 1e10,\n y: 1e10,\n // rowid: circles.length, // fix to ->\n rowid: Object.keys(circles).length,\n size: area.size,\n radius: Math.sqrt(area.size / Math.PI)\n };\n setOverlaps[set] = [];\n }\n }\n areas = areas.filter(function (a) {\n return a.sets.length == 2;\n });\n // map each set to a list of all the other sets that overlap it\n for (var i = 0; i < areas.length; ++i) {\n var current = areas[i];\n // eslint-disable-next-line\n var weight = current.hasOwnProperty('weight') ? current.weight : 1.0;\n var left = current.sets[0],\n right = current.sets[1];\n // completely overlapped circles shouldn't be positioned early here\n if (current.size + SMALL >= Math.min(circles[left].size, circles[right].size)) {\n weight = 0;\n }\n setOverlaps[left].push({\n set: right,\n size: current.size,\n weight: weight\n });\n setOverlaps[right].push({\n set: left,\n size: current.size,\n weight: weight\n });\n }\n // get list of most overlapped sets\n var mostOverlapped = [];\n for (set in setOverlaps) {\n // eslint-disable-next-line\n if (setOverlaps.hasOwnProperty(set)) {\n var size = 0;\n for (var i = 0; i < setOverlaps[set].length; ++i) {\n size += setOverlaps[set][i].size * setOverlaps[set][i].weight;\n }\n mostOverlapped.push({\n set: set,\n size: size\n });\n }\n }\n // sort by size desc\n function sortOrder(a, b) {\n return b.size - a.size;\n }\n mostOverlapped.sort(sortOrder);\n // keep track of what sets have been laid out\n var positioned = {};\n function isPositioned(element) {\n return element.set in positioned;\n }\n // adds a point to the output\n function positionSet(point, index) {\n circles[index].x = point.x;\n circles[index].y = point.y;\n positioned[index] = true;\n }\n // add most overlapped set at (0,0)\n positionSet({\n x: 0,\n y: 0\n }, mostOverlapped[0].set);\n // get distances between all points. TODO, necessary?\n // answer: probably not\n // var distances = venn.getDistanceMatrices(circles, areas).distances;\n for (var i = 1; i < mostOverlapped.length; ++i) {\n var setIndex = mostOverlapped[i].set,\n overlap = setOverlaps[setIndex].filter(isPositioned);\n set = circles[setIndex];\n overlap.sort(sortOrder);\n if (overlap.length === 0) {\n // this shouldn't happen anymore with addMissingAreas\n throw 'ERROR: missing pairwise overlap information';\n }\n var points = [];\n for (var j = 0; j < overlap.length; ++j) {\n // get appropriate distance from most overlapped already added set\n var p1 = circles[overlap[j].set],\n d1 = distanceFromIntersectArea(set.radius, p1.radius, overlap[j].size);\n // sample positions at 90 degrees for maximum aesthetics\n points.push({\n x: p1.x + d1,\n y: p1.y\n });\n points.push({\n x: p1.x - d1,\n y: p1.y\n });\n points.push({\n y: p1.y + d1,\n x: p1.x\n });\n points.push({\n y: p1.y - d1,\n x: p1.x\n });\n // if we have at least 2 overlaps, then figure out where the\n // set should be positioned analytically and try those too\n for (var k = j + 1; k < overlap.length; ++k) {\n var p2 = circles[overlap[k].set],\n d2 = distanceFromIntersectArea(set.radius, p2.radius, overlap[k].size);\n var extraPoints = circleCircleIntersection({\n x: p1.x,\n y: p1.y,\n radius: d1\n }, {\n x: p2.x,\n y: p2.y,\n radius: d2\n });\n for (var l = 0; l < extraPoints.length; ++l) {\n points.push(extraPoints[l]);\n }\n }\n }\n // we have some candidate positions for the set, examine loss\n // at each position to figure out where to put it at\n var bestLoss = 1e50,\n bestPoint = points[0];\n for (var j = 0; j < points.length; ++j) {\n circles[setIndex].x = points[j].x;\n circles[setIndex].y = points[j].y;\n var localLoss = loss(circles, areas);\n if (localLoss < bestLoss) {\n bestLoss = localLoss;\n bestPoint = points[j];\n }\n }\n positionSet(bestPoint, setIndex);\n }\n return circles;\n}\n/** Given a bunch of sets, and the desired overlaps between these sets - computes\nthe distance from the actual overlaps to the desired overlaps. Note that\nthis method ignores overlaps of more than 2 circles */\nexport function lossFunction(sets, overlaps) {\n var output = 0;\n function getCircles(indices) {\n return indices.map(function (i) {\n return sets[i];\n });\n }\n for (var i = 0; i < overlaps.length; ++i) {\n var area = overlaps[i];\n var overlap = void 0;\n if (area.sets.length == 1) {\n continue;\n } else if (area.sets.length == 2) {\n var left = sets[area.sets[0]],\n right = sets[area.sets[1]];\n overlap = circleOverlap(left.radius, right.radius, distance(left, right));\n } else {\n overlap = intersectionArea(getCircles(area.sets));\n }\n // eslint-disable-next-line\n var weight = area.hasOwnProperty('weight') ? area.weight : 1.0;\n output += weight * (overlap - area.size) * (overlap - area.size);\n }\n return output;\n}\n// orientates a bunch of circles to point in orientation\nfunction orientateCircles(circles, orientation, orientationOrder) {\n if (orientationOrder === null) {\n circles.sort(function (a, b) {\n return b.radius - a.radius;\n });\n } else {\n circles.sort(orientationOrder);\n }\n var i;\n // shift circles so largest circle is at (0, 0)\n if (circles.length > 0) {\n var largestX = circles[0].x,\n largestY = circles[0].y;\n for (i = 0; i < circles.length; ++i) {\n circles[i].x -= largestX;\n circles[i].y -= largestY;\n }\n }\n if (circles.length == 2) {\n // if the second circle is a subset of the first, arrange so that\n // it is off to one side. hack for https://github.com/benfred/venn.js/issues/120\n var dist = distance(circles[0], circles[1]);\n if (dist < Math.abs(circles[1].radius - circles[0].radius)) {\n circles[1].x = circles[0].x + circles[0].radius - circles[1].radius - 1e-10;\n circles[1].y = circles[0].y;\n }\n }\n // rotate circles so that second largest is at an angle of 'orientation'\n // from largest\n if (circles.length > 1) {\n var rotation = Math.atan2(circles[1].x, circles[1].y) - orientation;\n var x = void 0,\n y = void 0;\n var c = Math.cos(rotation),\n s = Math.sin(rotation);\n for (i = 0; i < circles.length; ++i) {\n x = circles[i].x;\n y = circles[i].y;\n circles[i].x = c * x - s * y;\n circles[i].y = s * x + c * y;\n }\n }\n // mirror solution if third solution is above plane specified by\n // first two circles\n if (circles.length > 2) {\n var angle = Math.atan2(circles[2].x, circles[2].y) - orientation;\n while (angle < 0) {\n angle += 2 * Math.PI;\n }\n while (angle > 2 * Math.PI) {\n angle -= 2 * Math.PI;\n }\n if (angle > Math.PI) {\n var slope = circles[1].y / (1e-10 + circles[1].x);\n for (i = 0; i < circles.length; ++i) {\n var d = (circles[i].x + slope * circles[i].y) / (1 + slope * slope);\n circles[i].x = 2 * d - circles[i].x;\n circles[i].y = 2 * d * slope - circles[i].y;\n }\n }\n }\n}\nexport function disjointCluster(circles) {\n // union-find clustering to get disjoint sets\n circles.map(function (circle) {\n circle.parent = circle;\n });\n // path compression step in union find\n function find(circle) {\n if (circle.parent !== circle) {\n circle.parent = find(circle.parent);\n }\n return circle.parent;\n }\n function union(x, y) {\n var xRoot = find(x),\n yRoot = find(y);\n xRoot.parent = yRoot;\n }\n // get the union of all overlapping sets\n for (var i = 0; i < circles.length; ++i) {\n for (var j = i + 1; j < circles.length; ++j) {\n var maxDistance = circles[i].radius + circles[j].radius;\n if (distance(circles[i], circles[j]) + 1e-10 < maxDistance) {\n union(circles[j], circles[i]);\n }\n }\n }\n // find all the disjoint clusters and group them together\n var disjointClusters = {};\n var setid;\n for (var i = 0; i < circles.length; ++i) {\n setid = find(circles[i]).parent.setid;\n if (!(setid in disjointClusters)) {\n disjointClusters[setid] = [];\n }\n disjointClusters[setid].push(circles[i]);\n }\n // cleanup bookkeeping\n circles.map(function (circle) {\n delete circle.parent;\n });\n // return in more usable form\n var ret = [];\n for (setid in disjointClusters) {\n // eslint-disable-next-line\n if (disjointClusters.hasOwnProperty(setid)) {\n ret.push(disjointClusters[setid]);\n }\n }\n return ret;\n}\nfunction getBoundingBox(circles) {\n var minMax = function minMax(d) {\n var hi = Math.max.apply(null, circles.map(function (c) {\n return c[d] + c.radius;\n })),\n lo = Math.min.apply(null, circles.map(function (c) {\n return c[d] - c.radius;\n }));\n return {\n max: hi,\n min: lo\n };\n };\n return {\n xRange: minMax('x'),\n yRange: minMax('y')\n };\n}\nexport function normalizeSolution(solution, orientation, orientationOrder) {\n if (orientation === null) {\n orientation = Math.PI / 2;\n }\n // work with a list instead of a dictionary, and take a copy so we\n // don't mutate input\n var circles = [],\n i,\n setid;\n for (setid in solution) {\n // eslint-disable-next-line\n if (solution.hasOwnProperty(setid)) {\n var previous = solution[setid];\n circles.push({\n x: previous.x,\n y: previous.y,\n radius: previous.radius,\n setid: setid\n });\n }\n }\n // get all the disjoint clusters\n var clusters = disjointCluster(circles);\n // orientate all disjoint sets, get sizes\n for (i = 0; i < clusters.length; ++i) {\n orientateCircles(clusters[i], orientation, orientationOrder);\n var bounds = getBoundingBox(clusters[i]);\n clusters[i].size = (bounds.xRange.max - bounds.xRange.min) * (bounds.yRange.max - bounds.yRange.min);\n clusters[i].bounds = bounds;\n }\n clusters.sort(function (a, b) {\n return b.size - a.size;\n });\n // orientate the largest at 0,0, and get the bounds\n circles = clusters[0];\n // @ts-ignore fixme 从逻辑上看似乎是不对的,后续看看\n var returnBounds = circles.bounds;\n var spacing = (returnBounds.xRange.max - returnBounds.xRange.min) / 50;\n function addCluster(cluster, right, bottom) {\n if (!cluster) return;\n var bounds = cluster.bounds;\n var xOffset, yOffset, centreing;\n if (right) {\n xOffset = returnBounds.xRange.max - bounds.xRange.min + spacing;\n } else {\n xOffset = returnBounds.xRange.max - bounds.xRange.max;\n centreing = (bounds.xRange.max - bounds.xRange.min) / 2 - (returnBounds.xRange.max - returnBounds.xRange.min) / 2;\n if (centreing < 0) xOffset += centreing;\n }\n if (bottom) {\n yOffset = returnBounds.yRange.max - bounds.yRange.min + spacing;\n } else {\n yOffset = returnBounds.yRange.max - bounds.yRange.max;\n centreing = (bounds.yRange.max - bounds.yRange.min) / 2 - (returnBounds.yRange.max - returnBounds.yRange.min) / 2;\n if (centreing < 0) yOffset += centreing;\n }\n for (var j = 0; j < cluster.length; ++j) {\n cluster[j].x += xOffset;\n cluster[j].y += yOffset;\n circles.push(cluster[j]);\n }\n }\n var index = 1;\n while (index < clusters.length) {\n addCluster(clusters[index], true, false);\n addCluster(clusters[index + 1], false, true);\n addCluster(clusters[index + 2], true, true);\n index += 3;\n // have one cluster (in top left). lay out next three relative\n // to it in a grid\n returnBounds = getBoundingBox(circles);\n }\n // convert back to solution form\n var ret = {};\n for (i = 0; i < circles.length; ++i) {\n ret[circles[i].setid] = circles[i];\n }\n return ret;\n}\n/** Scales a solution from venn.venn or venn.greedyLayout such that it fits in\na rectangle of width/height - with padding around the borders. also\ncenters the diagram in the available space at the same time */\nexport function scaleSolution(solution, width, height, padding) {\n var circles = [],\n setids = [];\n for (var setid in solution) {\n // eslint-disable-next-line\n if (solution.hasOwnProperty(setid)) {\n setids.push(setid);\n circles.push(solution[setid]);\n }\n }\n width -= 2 * padding;\n height -= 2 * padding;\n var bounds = getBoundingBox(circles),\n xRange = bounds.xRange,\n yRange = bounds.yRange;\n if (xRange.max == xRange.min || yRange.max == yRange.min) {\n console.log('not scaling solution: zero size detected');\n return solution;\n }\n var xScaling = width / (xRange.max - xRange.min),\n yScaling = height / (yRange.max - yRange.min),\n scaling = Math.min(yScaling, xScaling),\n // while we're at it, center the diagram too\n xOffset = (width - (xRange.max - xRange.min) * scaling) / 2,\n yOffset = (height - (yRange.max - yRange.min) * scaling) / 2;\n var scaled = {};\n for (var i = 0; i < circles.length; ++i) {\n var circle = circles[i];\n scaled[setids[i]] = {\n radius: scaling * circle.radius,\n x: padding + xOffset + (circle.x - xRange.min) * scaling,\n y: padding + yOffset + (circle.y - yRange.min) * scaling\n };\n }\n return scaled;\n}","import { __assign } from \"tslib\";\nimport { assign, memoize } from '@antv/util';\nimport { LEVEL, log } from '../../utils';\nimport { blend } from '../../utils/color/blend';\nimport { ID_FIELD, PATH_FIELD } from './constant';\nimport { computeTextCentres, intersectionAreaPath } from './layout/diagram';\nimport { scaleSolution, venn } from './layout/layout';\n/**\n * 获取 颜色映射\n * @usage colorMap.get(id) => color\n *\n * @returns Map\n */\nexport var getColorMap = memoize(function (colorPalette, data, blendMode, setsField) {\n var colorMap = new Map();\n var colorPaletteLen = colorPalette.length;\n data.forEach(function (d, idx) {\n if (d[setsField].length === 1) {\n colorMap.set(d[ID_FIELD], colorPalette[(idx + colorPaletteLen) % colorPaletteLen]);\n } else {\n /** 一般都是可以获取到颜色的,如果不正确 就是输入了非法数据 */\n var colorArr = d[setsField].map(function (id) {\n return colorMap.get(id);\n });\n colorMap.set(d[ID_FIELD], colorArr.slice(1).reduce(function (a, b) {\n return blend(a, b, blendMode);\n }, colorArr[0]));\n }\n });\n return colorMap;\n}, function () {\n var params = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n params[_i] = arguments[_i];\n }\n return JSON.stringify(params);\n});\n/**\n * 给韦恩图数据进行布局\n *\n * @param data\n * @param width\n * @param height\n * @param padding\n * @returns 韦恩图数据\n */\nexport function layoutVennData(options, width, height, padding) {\n if (padding === void 0) {\n padding = 0;\n }\n var data = options.data,\n setsField = options.setsField,\n sizeField = options.sizeField;\n // 处理空数据的情况\n if (data.length === 0) {\n log(LEVEL.WARN, false, 'warn: %s', '数据不能为空');\n return [];\n }\n var vennData = data.map(function (d) {\n var _a;\n return __assign(__assign({}, d), (_a = {\n sets: d[setsField] || [],\n size: d[sizeField]\n }, _a[PATH_FIELD] = '', _a[ID_FIELD] = '', _a));\n });\n // 1. 进行排序,避免图形元素遮挡\n vennData.sort(function (a, b) {\n return a.sets.length - b.sets.length;\n });\n // todo 2. 可以在这里处理下非法数据输入,避免直接 crash\n var solution = venn(vennData);\n var circles = scaleSolution(solution, width, height, padding);\n var textCenters = computeTextCentres(circles, vennData);\n vennData.forEach(function (row) {\n var sets = row.sets;\n var id = sets.join(',');\n row[ID_FIELD] = id;\n // 保留 vennText 布局方法\n var setCircles = sets.map(function (set) {\n return circles[set];\n });\n var path = intersectionAreaPath(setCircles);\n if (!/[zZ]$/.test(path)) {\n path += ' Z';\n }\n row[PATH_FIELD] = path;\n var center = textCenters[id] || {\n x: 0,\n y: 0\n };\n assign(row, center);\n });\n return vennData;\n}\n/**\n * 检查是否存在 非法元素\n * @param legalArr 合法集合:['A', 'B']\n * @param testArr 检查集合:['A', 'B', 'C'] or ['A', 'C'](存在非法 'C')\n * @return boolean\n */\nexport function islegalSets(legalArr, testArr) {\n for (var i = 0; i < testArr.length; i++) {\n if (!legalArr.includes(testArr[i])) {\n return false;\n }\n }\n return true;\n}","import { __assign, __rest } from \"tslib\";\nimport { deepMix, get, isArray, isEqual } from '@antv/util';\nimport { animation, interaction, scale, theme, tooltip } from '../../adaptor/common';\nimport { schema as schemaGeometry } from '../../adaptor/geometries';\nimport { deepAssign, findGeometry, flow, getAdjustAppendPadding, LEVEL, log, normalPadding, resolveAllPadding, transformLabel } from '../../utils';\nimport { ID_FIELD } from './constant';\nimport './interactions';\nimport './label';\nimport './shape';\nimport { getColorMap, islegalSets, layoutVennData } from './utils';\n/** 图例默认预留空间 */\nexport var LEGEND_SPACE = 40;\n/**\n * 获取 color 映射\n */\nfunction colorMap(params, data, colorPalette) {\n var chart = params.chart,\n options = params.options;\n var blendMode = options.blendMode,\n setsField = options.setsField;\n var _a = chart.getTheme(),\n colors10 = _a.colors10,\n colors20 = _a.colors20;\n var palette = colorPalette;\n if (!isArray(palette)) {\n palette = data.filter(function (d) {\n return d[setsField].length === 1;\n }).length <= 10 ? colors10 : colors20;\n }\n var map = getColorMap(palette, data, blendMode, setsField);\n return function (id) {\n return map.get(id) || palette[0];\n };\n}\n/**\n * color options 转换\n */\nfunction transformColor(params, data) {\n var options = params.options;\n var color = options.color;\n if (typeof color !== 'function') {\n var colorPalette = typeof color === 'string' ? [color] : color;\n var map_1 = colorMap(params, data, colorPalette);\n return function (datum) {\n return map_1(datum[ID_FIELD]);\n };\n }\n return color;\n}\n/**\n * 处理 padding\n */\nfunction padding(params) {\n var chart = params.chart,\n options = params.options;\n var legend = options.legend,\n appendPadding = options.appendPadding,\n padding = options.padding;\n // 处理 legend 的位置. 默认预留 40px, 业务上可以通过 appendPadding 增加\n var tempPadding = normalPadding(appendPadding);\n if (legend !== false) {\n tempPadding = getAdjustAppendPadding(appendPadding, get(legend, 'position'), LEGEND_SPACE);\n }\n chart.appendPadding = resolveAllPadding([tempPadding, padding]);\n return params;\n}\n/**\n * 处理非法数据\n * @param params\n */\nfunction data(params) {\n var options = params.options;\n /* 如遇到 交集 中存在 非法元素 的情况,就过滤掉\n * 如:\n * data = [\n * { sets: ['A'], size: 3 }, // 集合\n * { sets: ['B'], size: 4 }, // 集合\n * { sets: ['A', 'B'], size: 2 }, // 交集\n * { sets: ['A', 'B', 'C'], size: 2 }, // 交集 (存在非法 C,过滤该条数据)\n * ...\n * ]\n */\n var data = options['data'];\n if (!data) {\n log(LEVEL.WARN, false, 'warn: %s', '数据不能为空');\n data = [];\n }\n // 合法元素的集合:['A', 'B']\n var currSets = data.filter(function (datum) {\n return datum.sets.length === 1;\n }).map(function (datum) {\n return datum.sets[0];\n });\n // 过滤 data\n var filterSets = data.filter(function (datum) {\n var sets = datum.sets;\n // 存在非法元素,就过滤这条数据\n return islegalSets(currSets, sets);\n });\n if (!isEqual(filterSets, data)) log(LEVEL.WARN, false, 'warn: %s', '交集中不能出现不存在的集合, 请输入合法数据');\n return deepMix({}, params, {\n options: {\n data: filterSets\n }\n });\n}\n/**\n * geometry 处理\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var pointStyle = options.pointStyle,\n setsField = options.setsField,\n sizeField = options.sizeField;\n // 获取容器大小\n var _a = normalPadding(chart.appendPadding),\n t = _a[0],\n r = _a[1],\n b = _a[2],\n l = _a[3];\n // 处理 legend 的位置. 默认预留 40px, 业务上可以通过 appendPadding 增加\n var customInfo = {\n offsetX: l,\n offsetY: t\n };\n // coordinateBBox + appendPadding = viewBBox, 不需要再计算 appendPadding 部分,因此直接使用 viewBBox\n var _b = chart.viewBBox,\n width = _b.width,\n height = _b.height;\n // 处理padding输入不合理的情况, w 和 h 不能为负数\n var vennData = layoutVennData(options, Math.max(width - (r + l), 0), Math.max(height - (t + b), 0), 0);\n chart.data(vennData);\n var ext = schemaGeometry(deepAssign({}, params, {\n options: {\n xField: 'x',\n yField: 'y',\n sizeField: sizeField,\n seriesField: ID_FIELD,\n rawFields: [setsField, sizeField],\n schema: {\n shape: 'venn',\n style: pointStyle\n }\n }\n })).ext;\n var geometry = ext.geometry;\n geometry.customInfo(customInfo);\n var colorOptions = transformColor(params, vennData);\n // 韦恩图试点, color 通道只能映射一个字段. 通过外部查找获取 datum\n if (typeof colorOptions === 'function') {\n geometry.color(ID_FIELD, function (id) {\n var datum = vennData.find(function (d) {\n return d[ID_FIELD] === id;\n });\n var defaultColor = colorMap(params, vennData)(id);\n return colorOptions(datum, defaultColor);\n });\n }\n return params;\n}\n/**\n * 处理 label\n * @param params\n */\nfunction label(params) {\n var chart = params.chart,\n options = params.options;\n var label = options.label;\n // 获取容器大小\n var _a = normalPadding(chart.appendPadding),\n t = _a[0],\n l = _a[3];\n // 传入 label 布局函数所需的 自定义参数\n var customLabelInfo = {\n offsetX: l,\n offsetY: t\n };\n var geometry = findGeometry(chart, 'schema');\n if (!label) {\n geometry.label(false);\n } else {\n var callback = label.callback,\n cfg = __rest(label, [\"callback\"]);\n geometry.label({\n fields: ['id'],\n callback: callback,\n cfg: deepMix({}, transformLabel(cfg), {\n // 使用 G2 的 自定义label 修改位置\n type: 'venn',\n customLabelInfo: customLabelInfo\n })\n });\n }\n return params;\n}\n/**\n * legend 配置\n * @param params\n */\nexport function legend(params) {\n var chart = params.chart,\n options = params.options;\n var legend = options.legend,\n sizeField = options.sizeField;\n chart.legend(ID_FIELD, legend);\n // 强制不开启 连续图例\n chart.legend(sizeField, false);\n return params;\n}\n/**\n * 默认关闭坐标轴\n * @param params\n */\nexport function axis(params) {\n var chart = params.chart;\n chart.axis(false);\n return params;\n}\n/**\n * 韦恩图 interaction 交互适配器\n */\nfunction vennInteraction(params) {\n var options = params.options,\n chart = params.chart;\n var interactions = options.interactions;\n if (interactions) {\n var MAP_1 = {\n 'legend-active': 'venn-legend-active',\n 'legend-highlight': 'venn-legend-highlight'\n };\n interaction(deepAssign({}, params, {\n options: {\n interactions: interactions.map(function (i) {\n return __assign(__assign({}, i), {\n type: MAP_1[i.type] || i.type\n });\n })\n }\n }));\n }\n chart.removeInteraction('legend-active');\n chart.removeInteraction('legend-highlight');\n return params;\n}\n/**\n * 图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n // flow 的方式处理所有的配置到 G2 API\n return flow(padding, theme, data, geometry, label, scale({}), legend, axis, tooltip, vennInteraction, animation\n // ... 其他的 adaptor flow\n )(params);\n}","import { __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { adaptor } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constant';\n/**\n * 这个是一个图表开发的 模板代码!\n */\nvar Venn = /** @class */function (_super) {\n __extends(Venn, _super);\n function Venn() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'venn';\n return _this;\n }\n Venn.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * 获取 韦恩图 默认配置\n */\n Venn.prototype.getDefaultOptions = function () {\n return Venn.getDefaultOptions();\n };\n /**\n * 获取适配器\n */\n Venn.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n /**\n * 覆写父类的方法\n */\n Venn.prototype.triggerResize = function () {\n if (!this.chart.destroyed) {\n // 首先自适应容器的宽高\n this.chart.forceFit(); // g2 内部执行 changeSize,changeSize 中执行 render(true)\n this.chart.clear();\n this.execAdaptor(); // 核心:宽高更新之后计算布局\n // 渲染\n this.chart.render(true);\n }\n };\n return Venn;\n}(Plot);\nexport { Venn };","import { Plot } from '../../core/plot';\nimport { deepAssign } from '../../utils';\nexport var X_FIELD = 'x';\nexport var VIOLIN_Y_FIELD = 'violinY';\nexport var VIOLIN_SIZE_FIELD = 'violinSize';\nexport var MIN_MAX_FIELD = 'minMax';\nexport var QUANTILE_FIELD = 'quantile';\nexport var MEDIAN_FIELD = 'median';\nexport var VIOLIN_VIEW_ID = 'violin_view';\nexport var MIN_MAX_VIEW_ID = 'min_max_view';\nexport var QUANTILE_VIEW_ID = 'quantile_view';\nexport var MEDIAN_VIEW_ID = 'median_view';\nexport var DEFAULT_OPTIONS = deepAssign({}, Plot.getDefaultOptions(), {\n // 多 view 组成,一定要设置 view padding 同步\n syncViewPadding: true,\n // 默认核函数\n kde: {\n type: 'triangular',\n sampleSize: 32,\n width: 3\n },\n // 默认小提琴轮廓样式\n violinStyle: {\n lineWidth: 1,\n fillOpacity: 0.3,\n strokeOpacity: 0.75\n },\n // 坐标轴\n xAxis: {\n grid: {\n line: null\n },\n tickLine: {\n alignTick: false\n }\n },\n yAxis: {\n grid: {\n line: {\n style: {\n lineWidth: 0.5,\n lineDash: [4, 4]\n }\n }\n }\n },\n // 图例\n legend: {\n position: 'top-left'\n },\n // Tooltip\n tooltip: {\n showMarkers: false\n }\n // 默认区域交互\n // interactions: [{ type: 'active-region' }],\n});","// from https://github.com/simple-statistics\n/**\n * This is the internal implementation of quantiles: when you know\n * that the order is sorted, you don't need to re-sort it, and the computations\n * are faster.\n *\n * @param {Array} x sample of one or more data points\n * @param {number} p desired quantile: a number between 0 to 1, inclusive\n * @returns {number} quantile value\n * @throws {Error} if p ix outside of the range from 0 to 1\n * @throws {Error} if x is empty\n * @example\n * quantileSorted([3, 6, 7, 8, 8, 9, 10, 13, 15, 16, 20], 0.5); // => 9\n */\nexport function quantileSorted(x, p) {\n var idx = x.length * p;\n if (x.length === 0) {\n throw new Error('quantile requires at least one data point.');\n } else if (p < 0 || p > 1) {\n throw new Error('quantiles must be between 0 and 1');\n } else if (p === 1) {\n // If p is 1, directly return the last element\n return x[x.length - 1];\n } else if (p === 0) {\n // If p is 0, directly return the first element\n return x[0];\n } else if (idx % 1 !== 0) {\n // If p is not integer, return the next element in array\n return x[Math.ceil(idx) - 1];\n } else if (x.length % 2 === 0) {\n // If the list has even-length, we'll take the average of this number\n // and the next value, if there is one\n return (x[idx - 1] + x[idx]) / 2;\n } else {\n // Finally, in the simple case of an integer value\n // with an odd-length list, return the x value at the index.\n return x[idx];\n }\n}\n/**\n * 交换数组位置\n * @param arr T[]\n * @param i number\n * @param j number\n */\nexport function swap(arr, i, j) {\n var tmp = arr[i];\n arr[i] = arr[j];\n arr[j] = tmp;\n}\n/**\n * Rearrange items in `arr` so that all items in `[left, k]` range are the smallest.\n * The `k`-th element will have the `(k - left + 1)`-th smallest value in `[left, right]`.\n *\n * Implements Floyd-Rivest selection algorithm https://en.wikipedia.org/wiki/Floyd-Rivest_algorithm\n *\n * @param {Array} arr input array\n * @param {number} k pivot index\n * @param {number} [left] left index\n * @param {number} [right] right index\n * @returns {void} mutates input array\n * @example\n * var arr = [65, 28, 59, 33, 21, 56, 22, 95, 50, 12, 90, 53, 28, 77, 39];\n * quickselect(arr, 8);\n * // = [39, 28, 28, 33, 21, 12, 22, 50, 53, 56, 59, 65, 90, 77, 95]\n */\nexport function quickselect(arr, k, left, right) {\n left = left || 0;\n right = right || arr.length - 1;\n while (right > left) {\n // 600 and 0.5 are arbitrary constants chosen in the original paper to minimize execution time\n if (right - left > 600) {\n var n = right - left + 1;\n var m = k - left + 1;\n var z = Math.log(n);\n var s = 0.5 * Math.exp(2 * z / 3);\n var sd = 0.5 * Math.sqrt(z * s * (n - s) / n);\n if (m - n / 2 < 0) sd *= -1;\n var newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n var newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n quickselect(arr, k, newLeft, newRight);\n }\n var t = arr[k];\n var i = left;\n var j = right;\n swap(arr, left, k);\n if (arr[right] > t) swap(arr, left, right);\n while (i < j) {\n swap(arr, i, j);\n i++;\n j--;\n while (arr[i] < t) i++;\n while (arr[j] > t) j--;\n }\n if (arr[left] === t) swap(arr, left, j);else {\n j++;\n swap(arr, j, right);\n }\n if (j <= k) left = j + 1;\n if (k <= j) right = j - 1;\n }\n}\nfunction quantile(x, p) {\n var copy = x.slice();\n if (Array.isArray(p)) {\n // rearrange elements so that each element corresponding to a requested\n // quantile is on a place it would be if the array was fully sorted\n multiQuantileSelect(copy, p);\n // Initialize the result array\n var results = [];\n // For each requested quantile\n for (var i = 0; i < p.length; i++) {\n results[i] = quantileSorted(copy, p[i]);\n }\n return results;\n } else {\n var idx = quantileIndex(copy.length, p);\n quantileSelect(copy, idx, 0, copy.length - 1);\n return quantileSorted(copy, p);\n }\n}\nfunction quantileSelect(arr, k, left, right) {\n if (k % 1 === 0) {\n quickselect(arr, k, left, right);\n } else {\n k = Math.floor(k);\n quickselect(arr, k, left, right);\n quickselect(arr, k + 1, k + 1, right);\n }\n}\nfunction multiQuantileSelect(arr, p) {\n var indices = [0];\n for (var i = 0; i < p.length; i++) {\n indices.push(quantileIndex(arr.length, p[i]));\n }\n indices.push(arr.length - 1);\n indices.sort(compare);\n var stack = [0, indices.length - 1];\n while (stack.length) {\n var r = Math.ceil(stack.pop());\n var l = Math.floor(stack.pop());\n if (r - l <= 1) continue;\n var m = Math.floor((l + r) / 2);\n quantileSelect(arr, indices[m], Math.floor(indices[l]), Math.ceil(indices[r]));\n stack.push(l, m, m, r);\n }\n}\nfunction compare(a, b) {\n return a - b;\n}\nfunction quantileIndex(len, p) {\n var idx = len * p;\n if (p === 1) {\n // If p is 1, directly return the last index\n return len - 1;\n } else if (p === 0) {\n // If p is 0, directly return the first index\n return 0;\n } else if (idx % 1 !== 0) {\n // If index is not integer, return the next index in array\n return Math.ceil(idx) - 1;\n } else if (len % 2 === 0) {\n // If the list has even-length, we'll return the middle of two indices\n // around quantile to indicate that we need an average value of the two\n return idx - 0.5;\n } else {\n // Finally, in the simple case of an integer index\n // with an odd-length list, return the index\n return idx;\n }\n}\nexport { quantile };","import { __assign } from \"tslib\";\nimport { groupBy, max, min } from '@antv/util';\nimport pdf from 'pdfast';\nimport { quantile } from '../../utils/transform/quantile';\nexport var toBoxValue = function toBoxValue(values) {\n return {\n low: min(values),\n high: max(values),\n q1: quantile(values, 0.25),\n q3: quantile(values, 0.75),\n median: quantile(values, [0.5]),\n minMax: [min(values), max(values)],\n quantile: [quantile(values, 0.25), quantile(values, 0.75)]\n };\n};\nexport var toViolinValue = function toViolinValue(values, pdfOptions) {\n var pdfResults = pdf.create(values, pdfOptions);\n return {\n violinSize: pdfResults.map(function (result) {\n return result.y;\n }),\n violinY: pdfResults.map(function (result) {\n return result.x;\n })\n };\n};\nexport var transformViolinData = function transformViolinData(options) {\n var xField = options.xField,\n yField = options.yField,\n seriesField = options.seriesField,\n data = options.data,\n kde = options.kde;\n /** 生成概率密度函数的配置 */\n var pdfOptions = {\n min: kde.min,\n max: kde.max,\n size: kde.sampleSize,\n width: kde.width\n };\n // 无拆分\n if (!seriesField) {\n var group_1 = groupBy(data, xField);\n return Object.keys(group_1).map(function (x) {\n var records = group_1[x];\n var values = records.map(function (record) {\n return record[yField];\n });\n return __assign(__assign({\n x: x\n }, toViolinValue(values, pdfOptions)), toBoxValue(values));\n });\n }\n // 有拆分\n var resultList = [];\n var seriesGroup = groupBy(data, seriesField);\n Object.keys(seriesGroup).forEach(function (series) {\n var group = groupBy(seriesGroup[series], xField);\n return Object.keys(group).forEach(function (key) {\n var _a;\n var records = group[key];\n var values = records.map(function (record) {\n return record[yField];\n });\n resultList.push(__assign(__assign((_a = {\n x: key\n }, _a[seriesField] = series, _a), toViolinValue(values, pdfOptions)), toBoxValue(values)));\n });\n });\n return resultList;\n};","import { __assign } from \"tslib\";\nimport { each, get, omit, set } from '@antv/util';\nimport { annotation as baseAnnotation, interaction, theme, tooltip } from '../../adaptor/common';\nimport { interval, point, violin } from '../../adaptor/geometries';\nimport { AXIS_META_CONFIG_KEYS } from '../../constant';\nimport { deepAssign, findViewById, flow, pick } from '../../utils';\nimport { addViewAnimation } from '../../utils/view';\nimport { MEDIAN_FIELD, MEDIAN_VIEW_ID, MIN_MAX_FIELD, MIN_MAX_VIEW_ID, QUANTILE_FIELD, QUANTILE_VIEW_ID, VIOLIN_SIZE_FIELD, VIOLIN_VIEW_ID, VIOLIN_Y_FIELD, X_FIELD } from './constant';\nimport { transformViolinData } from './utils';\nvar TOOLTIP_FIELDS = ['low', 'high', 'q1', 'q3', 'median'];\nvar adjustCfg = [{\n type: 'dodge',\n marginRatio: 1 / 32\n}];\n/** 处理数据 */\nfunction data(params) {\n var chart = params.chart,\n options = params.options;\n chart.data(transformViolinData(options));\n return params;\n}\n/** 小提琴轮廓 */\nfunction violinView(params) {\n var chart = params.chart,\n options = params.options;\n var seriesField = options.seriesField,\n color = options.color,\n _a = options.shape,\n shape = _a === void 0 ? 'violin' : _a,\n violinStyle = options.violinStyle,\n tooltip = options.tooltip,\n state = options.state;\n var view = chart.createView({\n id: VIOLIN_VIEW_ID\n });\n violin({\n chart: view,\n options: {\n xField: X_FIELD,\n yField: VIOLIN_Y_FIELD,\n seriesField: seriesField ? seriesField : X_FIELD,\n sizeField: VIOLIN_SIZE_FIELD,\n tooltip: __assign({\n fields: TOOLTIP_FIELDS\n }, tooltip),\n violin: {\n style: violinStyle,\n color: color,\n shape: shape\n },\n state: state\n }\n });\n view.geometries[0].adjust(adjustCfg);\n return params;\n}\n/** 箱线 */\nfunction boxView(params) {\n var chart = params.chart,\n options = params.options;\n var seriesField = options.seriesField,\n color = options.color,\n tooltip = options.tooltip,\n box = options.box;\n // 如果配置 `box` 为 false ,不渲染内部箱线图\n if (box === false) return params;\n // 边缘线\n var minMaxView = chart.createView({\n id: MIN_MAX_VIEW_ID\n });\n interval({\n chart: minMaxView,\n options: {\n xField: X_FIELD,\n yField: MIN_MAX_FIELD,\n seriesField: seriesField ? seriesField : X_FIELD,\n tooltip: __assign({\n fields: TOOLTIP_FIELDS\n }, tooltip),\n state: typeof box === 'object' ? box.state : {},\n interval: {\n color: color,\n size: 1,\n style: {\n lineWidth: 0\n }\n }\n }\n });\n minMaxView.geometries[0].adjust(adjustCfg);\n // 四分点位\n var quantileView = chart.createView({\n id: QUANTILE_VIEW_ID\n });\n interval({\n chart: quantileView,\n options: {\n xField: X_FIELD,\n yField: QUANTILE_FIELD,\n seriesField: seriesField ? seriesField : X_FIELD,\n tooltip: __assign({\n fields: TOOLTIP_FIELDS\n }, tooltip),\n state: typeof box === 'object' ? box.state : {},\n interval: {\n color: color,\n size: 8,\n style: {\n fillOpacity: 1\n }\n }\n }\n });\n quantileView.geometries[0].adjust(adjustCfg);\n // 中位值\n var medianView = chart.createView({\n id: MEDIAN_VIEW_ID\n });\n point({\n chart: medianView,\n options: {\n xField: X_FIELD,\n yField: MEDIAN_FIELD,\n seriesField: seriesField ? seriesField : X_FIELD,\n tooltip: __assign({\n fields: TOOLTIP_FIELDS\n }, tooltip),\n state: typeof box === 'object' ? box.state : {},\n point: {\n color: color,\n size: 1,\n style: {\n fill: 'white',\n lineWidth: 0\n }\n }\n }\n });\n medianView.geometries[0].adjust(adjustCfg);\n // 关闭辅助 view 的轴\n quantileView.axis(false);\n minMaxView.axis(false);\n medianView.axis(false);\n // 关闭辅助 view 的图例\n medianView.legend(false);\n minMaxView.legend(false);\n quantileView.legend(false);\n return params;\n}\n/**\n * meta 配置\n */\nfunction meta(params) {\n var _a;\n var chart = params.chart,\n options = params.options;\n var meta = options.meta,\n xAxis = options.xAxis,\n yAxis = options.yAxis;\n var baseMeta = {};\n var scales = deepAssign(baseMeta, meta, (_a = {}, _a[X_FIELD] = __assign(__assign({\n sync: true\n }, pick(xAxis, AXIS_META_CONFIG_KEYS)), {\n // fix: dodge is not support linear attribute, please use category attribute!\n // 强制 x 轴类型为分类类型\n type: 'cat'\n }), _a[VIOLIN_Y_FIELD] = __assign({\n sync: true\n }, pick(yAxis, AXIS_META_CONFIG_KEYS)), _a[MIN_MAX_FIELD] = __assign({\n sync: VIOLIN_Y_FIELD\n }, pick(yAxis, AXIS_META_CONFIG_KEYS)), _a[QUANTILE_FIELD] = __assign({\n sync: VIOLIN_Y_FIELD\n }, pick(yAxis, AXIS_META_CONFIG_KEYS)), _a[MEDIAN_FIELD] = __assign({\n sync: VIOLIN_Y_FIELD\n }, pick(yAxis, AXIS_META_CONFIG_KEYS)), _a));\n chart.scale(scales);\n return params;\n}\n/**\n * axis 配置\n */\nfunction axis(params) {\n var chart = params.chart,\n options = params.options;\n var xAxis = options.xAxis,\n yAxis = options.yAxis;\n var view = findViewById(chart, VIOLIN_VIEW_ID);\n // 为 false 则是不显示轴\n if (xAxis === false) {\n view.axis(X_FIELD, false);\n } else {\n view.axis(X_FIELD, xAxis);\n }\n if (yAxis === false) {\n view.axis(VIOLIN_Y_FIELD, false);\n } else {\n view.axis(VIOLIN_Y_FIELD, yAxis);\n }\n chart.axis(false);\n return params;\n}\n/**\n *\n * @param params\n * @returns\n */\nfunction legend(params) {\n var chart = params.chart,\n options = params.options;\n var legend = options.legend,\n seriesField = options.seriesField,\n shape = options.shape;\n if (legend === false) {\n chart.legend(false);\n } else {\n var legendField_1 = seriesField ? seriesField : X_FIELD;\n // fixme 暂不明为啥有描边\n var legendOptions = omit(legend, ['selected']);\n if (!shape || !shape.startsWith('hollow')) {\n if (!get(legendOptions, ['marker', 'style', 'lineWidth'])) {\n set(legendOptions, ['marker', 'style', 'lineWidth'], 0);\n }\n }\n chart.legend(legendField_1, legendOptions);\n // 特殊的处理 fixme G2 层得解决这个问题\n if (get(legend, 'selected')) {\n each(chart.views, function (view) {\n return view.legend(legendField_1, legend);\n });\n }\n }\n return params;\n}\n/**\n * annotation, apply to violin view.\n * @param params\n * @returns\n */\nfunction annotation(params) {\n var chart = params.chart;\n var violinView = findViewById(chart, VIOLIN_VIEW_ID);\n baseAnnotation()(__assign(__assign({}, params), {\n chart: violinView\n }));\n return params;\n}\n/**\n * 动画\n * @param params\n */\nexport function animation(params) {\n var chart = params.chart,\n options = params.options;\n var animation = options.animation;\n // 所有的 Geometry 都使用同一动画(各个图形如有区别,自行覆盖)\n each(chart.views, function (view) {\n addViewAnimation(view, animation);\n });\n return params;\n}\n/**\n * 小提琴图适配器\n * @param params\n */\nexport function adaptor(params) {\n return flow(theme, data, violinView, boxView, meta, tooltip, axis, legend, interaction, annotation, animation)(params);\n}","import { __assign } from \"tslib\";\nimport { deepAssign } from '../../utils';\nimport { getTooltipMapping } from '../../utils/tooltip';\nimport { geometry } from './base';\n/**\n * violin 辅助点的配置处理\n * @param params\n */\nexport function violin(params) {\n var options = params.options;\n var violin = options.violin,\n xField = options.xField,\n yField = options.yField,\n seriesField = options.seriesField,\n sizeField = options.sizeField,\n tooltip = options.tooltip;\n var _a = getTooltipMapping(tooltip, [xField, yField, seriesField, sizeField]),\n fields = _a.fields,\n formatter = _a.formatter;\n return violin ? geometry(deepAssign({}, params, {\n options: {\n type: 'violin',\n colorField: seriesField,\n tooltipFields: fields,\n mapping: __assign({\n tooltip: formatter\n }, violin)\n }\n })) : params;\n}","import { __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { adaptor } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constant';\nimport { transformViolinData } from './utils';\nvar Violin = /** @class */function (_super) {\n __extends(Violin, _super);\n function Violin() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'violin';\n return _this;\n }\n /**\n * 获取 默认配置项\n * 供外部使用\n */\n Violin.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * @override\n */\n Violin.prototype.changeData = function (data) {\n this.updateOption({\n data: data\n });\n this.chart.changeData(transformViolinData(this.options));\n };\n /**\n * 获取 小提琴图 默认配置项\n */\n Violin.prototype.getDefaultOptions = function () {\n return Violin.getDefaultOptions();\n };\n /**\n * 获取 小提琴图 的适配器\n */\n Violin.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Violin;\n}(Plot);\nexport { Violin };","export var Y_FIELD = '$$yField$$';\nexport var DIFF_FIELD = '$$diffField$$';\nexport var ABSOLUTE_FIELD = '$$absoluteField$$';\nexport var IS_TOTAL = '$$isTotal$$';\n/**\n * 瀑布图 默认配置项\n */\nexport var DEFAULT_OPTIONS = {\n /** default: show label */\n label: {},\n /** default: show leaderLine */\n leaderLine: {\n style: {\n lineWidth: 1,\n stroke: '#8c8c8c',\n lineDash: [4, 2]\n }\n },\n /** default: show total */\n total: {\n style: {\n fill: 'rgba(0, 0, 0, 0.25)'\n }\n },\n interactions: [{\n type: 'element-active'\n }],\n risingFill: '#f4664a',\n fallingFill: '#30bf78',\n waterfallStyle: {\n fill: 'rgba(0, 0, 0, 0.25)'\n },\n yAxis: {\n grid: {\n line: {\n style: {\n lineDash: [4, 2]\n }\n }\n }\n }\n};","import { __assign } from \"tslib\";\nimport { get, isNumber, isObject, isUndefined, reduce } from '@antv/util';\nimport { LEVEL, log } from '../../utils';\nimport { ABSOLUTE_FIELD, DIFF_FIELD, IS_TOTAL, Y_FIELD } from './constant';\n/**\n * @desc 数据处理函数,统一将数据处理成[start, end]\n * @param data\n * @param xField\n * @param yField\n * @param totalLabel\n */\nexport function processData(data, xField, yField, newYField, total) {\n var _a;\n var newData = [];\n reduce(data, function (r, d) {\n var _a;\n // 校验数据合法性\n log(LEVEL.WARN, isNumber(d[yField]), \"\".concat(d[yField], \" is not a valid number\"));\n var value = isUndefined(d[yField]) ? null : d[yField];\n newData.push(__assign(__assign({}, d), (_a = {}, _a[newYField] = [r, r + value], _a)));\n return r + value;\n }, 0);\n // 如果需要展示总和\n if (newData.length && total) {\n var sum = get(newData, [[data.length - 1], newYField, [1]]);\n newData.push((_a = {}, _a[xField] = total.label, _a[yField] = sum, _a[newYField] = [0, sum], _a));\n }\n return newData;\n}\n/**\n * 处理为 瀑布图 数据\n */\nexport function transformData(data, xField, yField, total) {\n var processed = processData(data, xField, yField, Y_FIELD, total);\n return processed.map(function (d, dIdx) {\n var _a;\n if (!isObject(d)) {\n return d;\n }\n return __assign(__assign({}, d), (_a = {}, _a[ABSOLUTE_FIELD] = d[Y_FIELD][1], _a[DIFF_FIELD] = d[Y_FIELD][1] - d[Y_FIELD][0], _a[IS_TOTAL] = dIdx === data.length, _a));\n });\n}","import { __assign, __rest } from \"tslib\";\nimport { get } from '@antv/util';\nimport { animation, annotation, interaction, scale, state, theme } from '../../adaptor/common';\nimport { interval } from '../../adaptor/geometries';\nimport { getLocale } from '../../core/locale';\nimport { deepAssign, findGeometry, flow, transformLabel } from '../../utils';\nimport { ABSOLUTE_FIELD, DIFF_FIELD, IS_TOTAL, Y_FIELD } from './constant';\nimport './shape';\nimport { transformData } from './utils';\n/**\n * 处理默认配置项\n * @param params\n * @returns\n */\nfunction defaultOptions(params) {\n var _a = params.options,\n locale = _a.locale,\n total = _a.total;\n var localeTotalLabel = getLocale(locale).get(['waterfall', 'total']);\n if (total && typeof total.label !== 'string' && localeTotalLabel) {\n // @ts-ignore\n params.options.total.label = localeTotalLabel;\n }\n return params;\n}\n/**\n * 字段\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var data = options.data,\n xField = options.xField,\n yField = options.yField,\n total = options.total,\n leaderLine = options.leaderLine,\n columnWidthRatio = options.columnWidthRatio,\n waterfallStyle = options.waterfallStyle,\n risingFill = options.risingFill,\n fallingFill = options.fallingFill,\n color = options.color,\n shape = options.shape,\n customInfo = options.customInfo;\n // 数据处理\n chart.data(transformData(data, xField, yField, total));\n // 瀑布图自带的 colorMapping\n var colorMapping = color || function (datum) {\n if (get(datum, [IS_TOTAL])) {\n return get(total, ['style', 'fill'], '');\n }\n return get(datum, [Y_FIELD, 1]) - get(datum, [Y_FIELD, 0]) > 0 ? risingFill : fallingFill;\n };\n var p = deepAssign({}, params, {\n options: {\n xField: xField,\n yField: Y_FIELD,\n seriesField: xField,\n rawFields: [yField, DIFF_FIELD, IS_TOTAL, Y_FIELD],\n widthRatio: columnWidthRatio,\n interval: {\n style: waterfallStyle,\n // 支持外部自定义形状\n shape: shape || 'waterfall',\n color: colorMapping\n }\n }\n });\n var ext = interval(p).ext;\n var geometry = ext.geometry;\n // 将 waterfall leaderLineCfg 传入到自定义 shape 中\n geometry.customInfo(__assign(__assign({}, customInfo), {\n leaderLine: leaderLine\n }));\n return params;\n}\n/**\n * meta 配置\n * @param params\n */\nfunction meta(params) {\n var _a, _b;\n var options = params.options;\n var xAxis = options.xAxis,\n yAxis = options.yAxis,\n xField = options.xField,\n yField = options.yField,\n meta = options.meta;\n var Y_FIELD_META = deepAssign({}, {\n alias: yField\n }, get(meta, yField));\n return flow(scale((_a = {}, _a[xField] = xAxis, _a[yField] = yAxis, _a[Y_FIELD] = yAxis, _a), deepAssign({}, meta, (_b = {}, _b[Y_FIELD] = Y_FIELD_META, _b[DIFF_FIELD] = Y_FIELD_META, _b[ABSOLUTE_FIELD] = Y_FIELD_META, _b))))(params);\n}\n/**\n * axis 配置\n * @param params\n */\nfunction axis(params) {\n var chart = params.chart,\n options = params.options;\n var xAxis = options.xAxis,\n yAxis = options.yAxis,\n xField = options.xField,\n yField = options.yField;\n // 为 false 则是不显示轴\n if (xAxis === false) {\n chart.axis(xField, false);\n } else {\n chart.axis(xField, xAxis);\n }\n if (yAxis === false) {\n chart.axis(yField, false);\n chart.axis(Y_FIELD, false);\n } else {\n chart.axis(yField, yAxis);\n chart.axis(Y_FIELD, yAxis);\n }\n return params;\n}\n/**\n * legend 配置 todo 添加 hover 交互\n * @param params\n */\nfunction legend(params) {\n var chart = params.chart,\n options = params.options;\n var legend = options.legend,\n total = options.total,\n risingFill = options.risingFill,\n fallingFill = options.fallingFill,\n locale = options.locale;\n var i18n = getLocale(locale);\n if (legend === false) {\n chart.legend(false);\n } else {\n var items = [{\n name: i18n.get(['general', 'increase']),\n value: 'increase',\n marker: {\n symbol: 'square',\n style: {\n r: 5,\n fill: risingFill\n }\n }\n }, {\n name: i18n.get(['general', 'decrease']),\n value: 'decrease',\n marker: {\n symbol: 'square',\n style: {\n r: 5,\n fill: fallingFill\n }\n }\n }];\n if (total) {\n items.push({\n name: total.label || '',\n value: 'total',\n marker: {\n symbol: 'square',\n style: deepAssign({}, {\n r: 5\n }, get(total, 'style'))\n }\n });\n }\n chart.legend(deepAssign({}, {\n custom: true,\n position: 'top',\n items: items\n }, legend));\n chart.removeInteraction('legend-filter');\n }\n return params;\n}\n/**\n * 数据标签\n * @param params\n */\nfunction label(params) {\n var chart = params.chart,\n options = params.options;\n var label = options.label,\n labelMode = options.labelMode,\n xField = options.xField;\n var geometry = findGeometry(chart, 'interval');\n if (!label) {\n geometry.label(false);\n } else {\n var callback = label.callback,\n cfg = __rest(label, [\"callback\"]);\n geometry.label({\n fields: labelMode === 'absolute' ? [ABSOLUTE_FIELD, xField] : [DIFF_FIELD, xField],\n callback: callback,\n cfg: transformLabel(cfg)\n });\n }\n return params;\n}\n/**\n * tooltip 配置\n * @param params\n */\nexport function tooltip(params) {\n var chart = params.chart,\n options = params.options;\n var tooltip = options.tooltip,\n xField = options.xField,\n yField = options.yField;\n if (tooltip !== false) {\n chart.tooltip(__assign({\n showCrosshairs: false,\n showMarkers: false,\n shared: true,\n // tooltip 默认展示 y 字段值\n fields: [yField]\n }, tooltip));\n // 瀑布图默认以 yField 作为 tooltip 内容\n var geometry_1 = chart.geometries[0];\n (tooltip === null || tooltip === void 0 ? void 0 : tooltip.formatter) ? geometry_1.tooltip(\"\".concat(xField, \"*\").concat(yField), tooltip.formatter) : geometry_1.tooltip(yField);\n } else {\n chart.tooltip(false);\n }\n return params;\n}\n/**\n * 瀑布图适配器\n * @param params\n */\nexport function adaptor(params) {\n return flow(defaultOptions, theme, geometry, meta, axis, legend, tooltip, label, state, interaction, animation, annotation())(params);\n}","import { __assign } from \"tslib\";\nimport { registerShape } from '@antv/g2';\nimport { get } from '@antv/util';\nimport { deepAssign } from '../../utils';\n/**\n * 获取柱子 path\n * @param points\n */\nfunction getRectPath(points) {\n var path = [];\n for (var i = 0; i < points.length; i++) {\n var point = points[i];\n if (point) {\n var action = i === 0 ? 'M' : 'L';\n path.push([action, point.x, point.y]);\n }\n }\n var first = points[0];\n path.push(['L', first.x, first.y]);\n path.push(['z']);\n return path;\n}\n/**\n * 获取填充属性\n * @param cfg 图形绘制数据\n */\nfunction getFillAttrs(cfg) {\n return deepAssign({}, cfg.defaultStyle, cfg.style, {\n fill: cfg.color\n });\n}\nregisterShape('interval', 'waterfall', {\n draw: function draw(cfg, container) {\n var customInfo = cfg.customInfo,\n points = cfg.points,\n nextPoints = cfg.nextPoints;\n var group = container.addGroup();\n // ① 绘制柱体\n var rectPath = this.parsePath(getRectPath(points));\n var fillAttrs = getFillAttrs(cfg);\n group.addShape('path', {\n attrs: __assign(__assign({}, fillAttrs), {\n path: rectPath\n })\n });\n // ② 绘制连接线\n var leaderLineCfg = get(customInfo, 'leaderLine');\n if (leaderLineCfg && nextPoints) {\n var linkPath = [['M', points[2].x, points[2].y], ['L', nextPoints[0].x, nextPoints[0].y]];\n if (points[2].y === nextPoints[1].y) {\n linkPath[1] = ['L', nextPoints[1].x, nextPoints[1].y];\n }\n linkPath = this.parsePath(linkPath);\n group.addShape('path', {\n attrs: __assign({\n path: linkPath\n }, leaderLineCfg.style || {})\n });\n }\n return group;\n }\n});","import { __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { adaptor } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constant';\nimport { transformData } from './utils';\n/**\n * 瀑布图\n */\nvar Waterfall = /** @class */function (_super) {\n __extends(Waterfall, _super);\n function Waterfall() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'waterfall';\n return _this;\n }\n /**\n * 获取 瀑布图 默认配置项\n * 供外部使用\n */\n Waterfall.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * @override\n * @param data\n */\n Waterfall.prototype.changeData = function (data) {\n var _a = this.options,\n xField = _a.xField,\n yField = _a.yField,\n total = _a.total;\n this.updateOption({\n data: data\n });\n this.chart.changeData(transformData(data, xField, yField, total));\n };\n /**\n * 获取 瀑布图 的适配器\n */\n Waterfall.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n /**\n * 获取 瀑布图 的默认配置\n */\n Waterfall.prototype.getDefaultOptions = function () {\n return Waterfall.getDefaultOptions();\n };\n return Waterfall;\n}(Plot);\nexport { Waterfall };","import { Plot } from '../../core/plot';\nimport { deepAssign } from '../../utils';\n/** 词云图 color 通道映射字段 */\nexport var WORD_CLOUD_COLOR_FIELD = 'color';\n/**\n * 词云图 默认配置项\n */\nexport var DEFAULT_OPTIONS = deepAssign({}, Plot.getDefaultOptions(), {\n timeInterval: 2000,\n legend: false,\n tooltip: {\n showTitle: false,\n showMarkers: false,\n showCrosshairs: false,\n fields: ['text', 'value', WORD_CLOUD_COLOR_FIELD],\n formatter: function formatter(datum) {\n return {\n name: datum.text,\n value: datum.value\n };\n }\n },\n wordStyle: {\n fontFamily: 'Verdana',\n fontWeight: 'normal',\n padding: 1,\n fontSize: [12, 60],\n rotation: [0, 90],\n rotationSteps: 2,\n rotateRatio: 0.5\n }\n});","import { assign, isFunction, isNil } from '@antv/util';\nvar DEFAULT_OPTIONS = {\n font: function font() {\n return 'serif';\n },\n padding: 1,\n size: [500, 500],\n spiral: 'archimedean',\n // timeInterval: Infinity // max execute time\n timeInterval: 3000 // max execute time\n // imageMask: '', // instance of Image, must be loaded\n};\n/**\n * 根据对应的数据对象,计算每个\n * 词语在画布中的渲染位置,并返回\n * 计算后的数据对象\n * @param words\n * @param options\n */\nexport function wordCloud(words, options) {\n // 混入默认配置\n options = assign({}, DEFAULT_OPTIONS, options);\n return transform(words, options);\n}\n/**\n * 抛出没有混入默认配置的方法,用于测试。\n * @param words\n * @param options\n */\nexport function transform(words, options) {\n // 布局对象\n var layout = tagCloud();\n ['font', 'fontSize', 'fontWeight', 'padding', 'rotate', 'size', 'spiral', 'timeInterval', 'random'].forEach(function (key) {\n if (!isNil(options[key])) {\n layout[key](options[key]);\n }\n });\n layout.words(words);\n if (options.imageMask) {\n layout.createMask(options.imageMask);\n }\n var result = layout.start();\n var tags = result._tags;\n tags.forEach(function (tag) {\n tag.x += options.size[0] / 2;\n tag.y += options.size[1] / 2;\n });\n var _a = options.size,\n w = _a[0],\n h = _a[1];\n // 添加两个参照数据,分别表示左上角和右下角。\n // 不添加的话不会按照真实的坐标渲染,而是以\n // 数据中的边界坐标为边界进行拉伸,以铺满画布。\n // 这样的后果会导致词语之间的重叠。\n tags.push({\n text: '',\n value: 0,\n x: 0,\n y: 0,\n opacity: 0\n });\n tags.push({\n text: '',\n value: 0,\n x: w,\n y: h,\n opacity: 0\n });\n return tags;\n}\nvar cloudRadians = Math.PI / 180,\n cw = 1 << 11 >> 5,\n ch = 1 << 11;\nfunction cloudText(d) {\n return d.text;\n}\nfunction cloudFont() {\n return 'serif';\n}\nfunction cloudFontNormal() {\n return 'normal';\n}\nfunction cloudFontSize(d) {\n return d.value;\n}\nfunction cloudRotate() {\n return ~~(Math.random() * 2) * 90;\n}\nfunction cloudPadding() {\n return 1;\n}\n// Fetches a monochrome sprite bitmap for the specified text.\n// Load in batches for speed.\nfunction cloudSprite(contextAndRatio, d, data, di) {\n if (d.sprite) return;\n var c = contextAndRatio.context,\n ratio = contextAndRatio.ratio;\n c.clearRect(0, 0, (cw << 5) / ratio, ch / ratio);\n var x = 0,\n y = 0,\n maxh = 0;\n var n = data.length;\n --di;\n while (++di < n) {\n d = data[di];\n c.save();\n c.font = d.style + ' ' + d.weight + ' ' + ~~((d.size + 1) / ratio) + 'px ' + d.font;\n var w = c.measureText(d.text + 'm').width * ratio,\n h = d.size << 1;\n if (d.rotate) {\n var sr = Math.sin(d.rotate * cloudRadians),\n cr = Math.cos(d.rotate * cloudRadians),\n wcr = w * cr,\n wsr = w * sr,\n hcr = h * cr,\n hsr = h * sr;\n w = Math.max(Math.abs(wcr + hsr), Math.abs(wcr - hsr)) + 0x1f >> 5 << 5;\n h = ~~Math.max(Math.abs(wsr + hcr), Math.abs(wsr - hcr));\n } else {\n w = w + 0x1f >> 5 << 5;\n }\n if (h > maxh) maxh = h;\n if (x + w >= cw << 5) {\n x = 0;\n y += maxh;\n maxh = 0;\n }\n if (y + h >= ch) break;\n c.translate((x + (w >> 1)) / ratio, (y + (h >> 1)) / ratio);\n if (d.rotate) c.rotate(d.rotate * cloudRadians);\n c.fillText(d.text, 0, 0);\n if (d.padding) {\n c.lineWidth = 2 * d.padding;\n c.strokeText(d.text, 0, 0);\n }\n c.restore();\n d.width = w;\n d.height = h;\n d.xoff = x;\n d.yoff = y;\n d.x1 = w >> 1;\n d.y1 = h >> 1;\n d.x0 = -d.x1;\n d.y0 = -d.y1;\n d.hasText = true;\n x += w;\n }\n var pixels = c.getImageData(0, 0, (cw << 5) / ratio, ch / ratio).data,\n sprite = [];\n while (--di >= 0) {\n d = data[di];\n if (!d.hasText) continue;\n var w = d.width,\n w32 = w >> 5;\n var h = d.y1 - d.y0;\n // Zero the buffer\n for (var i = 0; i < h * w32; i++) sprite[i] = 0;\n x = d.xoff;\n if (x == null) return;\n y = d.yoff;\n var seen = 0,\n seenRow = -1;\n for (var j = 0; j < h; j++) {\n for (var i = 0; i < w; i++) {\n var k = w32 * j + (i >> 5),\n m = pixels[(y + j) * (cw << 5) + (x + i) << 2] ? 1 << 31 - i % 32 : 0;\n sprite[k] |= m;\n seen |= m;\n }\n if (seen) seenRow = j;else {\n d.y0++;\n h--;\n j--;\n y++;\n }\n }\n d.y1 = d.y0 + seenRow;\n d.sprite = sprite.slice(0, (d.y1 - d.y0) * w32);\n }\n}\n// Use mask-based collision detection.\nfunction cloudCollide(tag, board, sw) {\n sw >>= 5;\n var sprite = tag.sprite,\n w = tag.width >> 5,\n lx = tag.x - (w << 4),\n sx = lx & 0x7f,\n msx = 32 - sx,\n h = tag.y1 - tag.y0;\n var x = (tag.y + tag.y0) * sw + (lx >> 5),\n last;\n for (var j = 0; j < h; j++) {\n last = 0;\n for (var i = 0; i <= w; i++) {\n if ((last << msx | (i < w ? (last = sprite[j * w + i]) >>> sx : 0)) & board[x + i]) return true;\n }\n x += sw;\n }\n return false;\n}\nfunction cloudBounds(bounds, d) {\n var b0 = bounds[0],\n b1 = bounds[1];\n if (d.x + d.x0 < b0.x) b0.x = d.x + d.x0;\n if (d.y + d.y0 < b0.y) b0.y = d.y + d.y0;\n if (d.x + d.x1 > b1.x) b1.x = d.x + d.x1;\n if (d.y + d.y1 > b1.y) b1.y = d.y + d.y1;\n}\nfunction collideRects(a, b) {\n return a.x + a.x1 > b[0].x && a.x + a.x0 < b[1].x && a.y + a.y1 > b[0].y && a.y + a.y0 < b[1].y;\n}\nfunction archimedeanSpiral(size) {\n var e = size[0] / size[1];\n return function (t) {\n return [e * (t *= 0.1) * Math.cos(t), t * Math.sin(t)];\n };\n}\nfunction rectangularSpiral(size) {\n var dy = 4,\n dx = dy * size[0] / size[1];\n var x = 0,\n y = 0;\n return function (t) {\n var sign = t < 0 ? -1 : 1;\n // See triangular numbers: T_n = n * (n + 1) / 2.\n switch (Math.sqrt(1 + 4 * sign * t) - sign & 3) {\n case 0:\n x += dx;\n break;\n case 1:\n y += dy;\n break;\n case 2:\n x -= dx;\n break;\n default:\n y -= dy;\n break;\n }\n return [x, y];\n };\n}\n// TODO reuse arrays?\nfunction zeroArray(n) {\n var a = [];\n var i = -1;\n while (++i < n) a[i] = 0;\n return a;\n}\nfunction cloudCanvas() {\n return document.createElement('canvas');\n}\nexport function functor(d) {\n return isFunction(d) ? d : function () {\n return d;\n };\n}\nvar spirals = {\n archimedean: archimedeanSpiral,\n rectangular: rectangularSpiral\n};\nfunction tagCloud() {\n var size = [256, 256],\n font = cloudFont,\n fontSize = cloudFontSize,\n fontWeight = cloudFontNormal,\n rotate = cloudRotate,\n padding = cloudPadding,\n spiral = archimedeanSpiral,\n random = Math.random,\n words = [],\n timeInterval = Infinity;\n var text = cloudText;\n var fontStyle = cloudFontNormal;\n var canvas = cloudCanvas;\n var cloud = {};\n cloud.start = function () {\n var width = size[0],\n height = size[1];\n var contextAndRatio = getContext(canvas()),\n board = cloud.board ? cloud.board : zeroArray((size[0] >> 5) * size[1]),\n n = words.length,\n tags = [],\n data = words.map(function (d, i, data) {\n d.text = text.call(this, d, i, data);\n d.font = font.call(this, d, i, data);\n d.style = fontStyle.call(this, d, i, data);\n d.weight = fontWeight.call(this, d, i, data);\n d.rotate = rotate.call(this, d, i, data);\n d.size = ~~fontSize.call(this, d, i, data);\n d.padding = padding.call(this, d, i, data);\n return d;\n }).sort(function (a, b) {\n return b.size - a.size;\n });\n var i = -1,\n bounds = !cloud.board ? null : [{\n x: 0,\n y: 0\n }, {\n x: width,\n y: height\n }];\n step();\n function step() {\n var start = Date.now();\n while (Date.now() - start < timeInterval && ++i < n) {\n var d = data[i];\n d.x = width * (random() + 0.5) >> 1;\n d.y = height * (random() + 0.5) >> 1;\n cloudSprite(contextAndRatio, d, data, i);\n if (d.hasText && place(board, d, bounds)) {\n tags.push(d);\n if (bounds) {\n if (!cloud.hasImage) {\n // update bounds if image mask not set\n cloudBounds(bounds, d);\n }\n } else {\n bounds = [{\n x: d.x + d.x0,\n y: d.y + d.y0\n }, {\n x: d.x + d.x1,\n y: d.y + d.y1\n }];\n }\n // Temporary hack\n d.x -= size[0] >> 1;\n d.y -= size[1] >> 1;\n }\n }\n cloud._tags = tags;\n cloud._bounds = bounds;\n }\n return cloud;\n };\n function getContext(canvas) {\n canvas.width = canvas.height = 1;\n var ratio = Math.sqrt(canvas.getContext('2d', {\n willReadFrequently: true\n }).getImageData(0, 0, 1, 1).data.length >> 2);\n canvas.width = (cw << 5) / ratio;\n canvas.height = ch / ratio;\n var context = canvas.getContext('2d', {\n willReadFrequently: true\n });\n context.fillStyle = context.strokeStyle = 'red';\n context.textAlign = 'center';\n return {\n context: context,\n ratio: ratio\n };\n }\n function place(board, tag, bounds) {\n // const perimeter = [{ x: 0, y: 0 }, { x: size[0], y: size[1] }],\n var startX = tag.x,\n startY = tag.y,\n maxDelta = Math.sqrt(size[0] * size[0] + size[1] * size[1]),\n s = spiral(size),\n dt = random() < 0.5 ? 1 : -1;\n var dxdy,\n t = -dt,\n dx,\n dy;\n while (dxdy = s(t += dt)) {\n dx = ~~dxdy[0];\n dy = ~~dxdy[1];\n if (Math.min(Math.abs(dx), Math.abs(dy)) >= maxDelta) break;\n tag.x = startX + dx;\n tag.y = startY + dy;\n if (tag.x + tag.x0 < 0 || tag.y + tag.y0 < 0 || tag.x + tag.x1 > size[0] || tag.y + tag.y1 > size[1]) continue;\n // TODO only check for collisions within current bounds.\n if (!bounds || !cloudCollide(tag, board, size[0])) {\n if (!bounds || collideRects(tag, bounds)) {\n var sprite = tag.sprite,\n w = tag.width >> 5,\n sw = size[0] >> 5,\n lx = tag.x - (w << 4),\n sx = lx & 0x7f,\n msx = 32 - sx,\n h = tag.y1 - tag.y0;\n var last = void 0,\n x = (tag.y + tag.y0) * sw + (lx >> 5);\n for (var j = 0; j < h; j++) {\n last = 0;\n for (var i = 0; i <= w; i++) {\n board[x + i] |= last << msx | (i < w ? (last = sprite[j * w + i]) >>> sx : 0);\n }\n x += sw;\n }\n delete tag.sprite;\n return true;\n }\n }\n }\n return false;\n }\n cloud.createMask = function (img) {\n var can = document.createElement('canvas');\n var width = size[0],\n height = size[1];\n // 当 width 或 height 为 0 时,调用 cxt.getImageData 会报错\n if (!width || !height) {\n return;\n }\n var w32 = width >> 5;\n var board = zeroArray((width >> 5) * height);\n can.width = width;\n can.height = height;\n var cxt = can.getContext('2d');\n cxt.drawImage(img, 0, 0, img.width, img.height, 0, 0, width, height);\n var imageData = cxt.getImageData(0, 0, width, height).data;\n for (var j = 0; j < height; j++) {\n for (var i = 0; i < width; i++) {\n var k = w32 * j + (i >> 5);\n var tmp = j * width + i << 2;\n var flag = imageData[tmp] >= 250 && imageData[tmp + 1] >= 250 && imageData[tmp + 2] >= 250;\n var m = flag ? 1 << 31 - i % 32 : 0;\n board[k] |= m;\n }\n }\n cloud.board = board;\n cloud.hasImage = true;\n };\n cloud.timeInterval = function (_) {\n timeInterval = _ == null ? Infinity : _;\n };\n cloud.words = function (_) {\n words = _;\n };\n cloud.size = function (_) {\n size = [+_[0], +_[1]];\n };\n cloud.font = function (_) {\n font = functor(_);\n };\n cloud.fontWeight = function (_) {\n fontWeight = functor(_);\n };\n cloud.rotate = function (_) {\n rotate = functor(_);\n };\n cloud.spiral = function (_) {\n spiral = spirals[_] || _;\n };\n cloud.fontSize = function (_) {\n fontSize = functor(_);\n };\n cloud.padding = function (_) {\n padding = functor(_);\n };\n cloud.random = function (_) {\n random = functor(_);\n };\n return cloud;\n}","import { __assign } from \"tslib\";\nimport { isArray, isFunction, isString } from '@antv/util';\nimport { getContainerSize, LEVEL, log } from '../../utils';\nimport { normalPadding } from '../../utils/padding';\nimport { functor, wordCloud } from '../../utils/transform/word-cloud';\n/**\n * 用 DataSet 转换词云图数据\n * @param params\n */\nexport function transform(params) {\n var rawOptions = params.options,\n chart = params.chart;\n var _a = chart,\n width = _a.width,\n height = _a.height,\n chartPadding = _a.padding,\n appendPadding = _a.appendPadding,\n ele = _a.ele;\n var data = rawOptions.data,\n imageMask = rawOptions.imageMask,\n wordField = rawOptions.wordField,\n weightField = rawOptions.weightField,\n colorField = rawOptions.colorField,\n wordStyle = rawOptions.wordStyle,\n timeInterval = rawOptions.timeInterval,\n random = rawOptions.random,\n spiral = rawOptions.spiral,\n _b = rawOptions.autoFit,\n autoFit = _b === void 0 ? true : _b,\n placementStrategy = rawOptions.placementStrategy;\n if (!data || !data.length) {\n return [];\n }\n var fontFamily = wordStyle.fontFamily,\n fontWeight = wordStyle.fontWeight,\n padding = wordStyle.padding,\n fontSize = wordStyle.fontSize;\n var arr = getSingleKeyValues(data, weightField);\n var range = [min(arr), max(arr)];\n // 变换出 text 和 value 字段\n var words = data.map(function (datum) {\n return {\n text: datum[wordField],\n value: datum[weightField],\n color: datum[colorField],\n datum: datum\n };\n });\n var options = {\n imageMask: imageMask,\n font: fontFamily,\n fontSize: getFontSizeMapping(fontSize, range),\n fontWeight: fontWeight,\n // 图表宽高减去 padding 之后的宽高\n size: getSize({\n width: width,\n height: height,\n padding: chartPadding,\n appendPadding: appendPadding,\n autoFit: autoFit,\n container: ele\n }),\n padding: padding,\n timeInterval: timeInterval,\n random: random,\n spiral: spiral,\n rotate: getRotate(rawOptions)\n };\n // 自定义布局函数\n if (isFunction(placementStrategy)) {\n var result = words.map(function (word, index, words) {\n return __assign(__assign(__assign({}, word), {\n hasText: !!word.text,\n font: functor(options.font)(word, index, words),\n weight: functor(options.fontWeight)(word, index, words),\n rotate: functor(options.rotate)(word, index, words),\n size: functor(options.fontSize)(word, index, words),\n style: 'normal'\n }), placementStrategy.call(chart, word, index, words));\n });\n // 添加两个参照数据,分别表示左上角和右下角\n result.push({\n text: '',\n value: 0,\n x: 0,\n y: 0,\n opacity: 0\n });\n result.push({\n text: '',\n value: 0,\n x: options.size[0],\n y: options.size[1],\n opacity: 0\n });\n return result;\n }\n // 数据准备在外部做,wordCloud 单纯就是做布局\n return wordCloud(words, options);\n}\n/**\n * 获取最终的实际绘图尺寸:[width, height]\n * @param chart\n */\nexport function getSize(options) {\n var width = options.width,\n height = options.height;\n var container = options.container,\n autoFit = options.autoFit,\n padding = options.padding,\n appendPadding = options.appendPadding;\n // 由于词云图每个词语的坐标都是先通过 DataSet 根据图表宽高计算出来的,\n // 也就是说,如果一开始提供给 DataSet 的宽高信息和最终显示的宽高不相同,\n // 那么就会出现布局错乱的情况,所以这里处理的目的就是让一开始提供给 DataSet 的\n // 宽高信息与最终显示的宽高信息相同,避免显示错乱。\n if (autoFit) {\n var containerSize = getContainerSize(container);\n width = containerSize.width;\n height = containerSize.height;\n }\n // 宽高不能为 0,否则会造成死循环\n width = width || 400;\n height = height || 400;\n var _a = resolvePadding({\n padding: padding,\n appendPadding: appendPadding\n }),\n top = _a[0],\n right = _a[1],\n bottom = _a[2],\n left = _a[3];\n var result = [width - (left + right), height - (top + bottom)];\n return result;\n}\n/**\n * 根据图表的 padding 和 appendPadding 计算出图表的最终 padding\n * @param chart\n */\nfunction resolvePadding(options) {\n var padding = normalPadding(options.padding);\n var appendPadding = normalPadding(options.appendPadding);\n var top = padding[0] + appendPadding[0];\n var right = padding[1] + appendPadding[1];\n var bottom = padding[2] + appendPadding[2];\n var left = padding[3] + appendPadding[3];\n return [top, right, bottom, left];\n}\n/**\n * 处理 imageMask 可能为 url 字符串的情况\n * @param {HTMLImageElement | string} img\n * @return {Promise}\n */\nexport function processImageMask(img) {\n return new Promise(function (res, rej) {\n if (img instanceof HTMLImageElement) {\n res(img);\n return;\n }\n if (isString(img)) {\n var image_1 = new Image();\n image_1.crossOrigin = 'anonymous';\n image_1.src = img;\n image_1.onload = function () {\n res(image_1);\n };\n image_1.onerror = function () {\n log(LEVEL.ERROR, false, 'image %s load failed !!!', img);\n rej();\n };\n return;\n }\n log(LEVEL.WARN, img === undefined, 'The type of imageMask option must be String or HTMLImageElement.');\n rej();\n });\n}\n/**\n * 把用户提供的 fontSize 值转换成符合 DataSet 要求的值\n * @param options\n * @param range\n */\nexport function getFontSizeMapping(fontSize, range) {\n if (isFunction(fontSize)) {\n return fontSize;\n }\n if (isArray(fontSize)) {\n var fMin_1 = fontSize[0],\n fMax_1 = fontSize[1];\n if (!range) {\n return function () {\n return (fMax_1 + fMin_1) / 2;\n };\n }\n var min_1 = range[0],\n max_1 = range[1];\n if (max_1 === min_1) {\n return function () {\n return (fMax_1 + fMin_1) / 2;\n };\n }\n return function fontSize(_a) {\n var value = _a.value;\n return (fMax_1 - fMin_1) / (max_1 - min_1) * (value - min_1) + fMin_1;\n };\n }\n return function () {\n return fontSize;\n };\n}\nexport function getSingleKeyValues(data, key) {\n return data.map(function (v) {\n return v[key];\n }).filter(function (v) {\n // 过滤非 number\n if (typeof v === 'number' && !isNaN(v)) return true;\n return false;\n });\n}\n/**\n * 把用户提供的关于旋转角度的字段值转换成符合 DataSet 要求的值\n * @param options\n */\nfunction getRotate(options) {\n var _a = resolveRotate(options),\n rotation = _a.rotation,\n rotationSteps = _a.rotationSteps;\n if (!isArray(rotation)) return rotation;\n var min = rotation[0];\n var max = rotation[1];\n // 等于 1 时不旋转,所以把每份大小设为 0\n var perSize = rotationSteps === 1 ? 0 : (max - min) / (rotationSteps - 1);\n return function rotate() {\n if (max === min) return max;\n return Math.floor(Math.random() * rotationSteps) * perSize;\n };\n}\n/**\n * 确保值在要求范围内\n * @param options\n */\nfunction resolveRotate(options) {\n var rotationSteps = options.wordStyle.rotationSteps;\n if (rotationSteps < 1) {\n log(LEVEL.WARN, false, 'The rotationSteps option must be greater than or equal to 1.');\n rotationSteps = 1;\n }\n return {\n rotation: options.wordStyle.rotation,\n rotationSteps: rotationSteps\n };\n}\n/**\n * 传入一个元素为数字的数组,\n * 返回该数组中值最小的数字。\n * @param numbers\n */\nfunction min(numbers) {\n return Math.min.apply(Math, numbers);\n}\n/**\n * 传入一个元素为数字的数组,\n * 返回该数组中值最大的数字。\n * @param numbers\n */\nfunction max(numbers) {\n return Math.max.apply(Math, numbers);\n}","import { __spreadArray } from \"tslib\";\nimport { get, isFunction } from '@antv/util';\nimport { animation, interaction, scale, state, theme, tooltip } from '../../adaptor/common';\nimport { point } from '../../adaptor/geometries';\nimport { deepAssign, flow } from '../../utils';\nimport { WORD_CLOUD_COLOR_FIELD } from './constant';\nimport { transform } from './utils';\n/**\n * geometry 配置处理\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var colorField = options.colorField,\n color = options.color;\n var data = transform(params);\n chart.data(data);\n var p = deepAssign({}, params, {\n options: {\n xField: 'x',\n yField: 'y',\n seriesField: colorField && WORD_CLOUD_COLOR_FIELD,\n rawFields: isFunction(color) && __spreadArray(__spreadArray([], get(options, 'rawFields', []), true), ['datum'], false),\n point: {\n color: color,\n shape: 'word-cloud'\n }\n }\n });\n var ext = point(p).ext;\n ext.geometry.label(false);\n chart.coordinate().reflect('y');\n chart.axis(false);\n return params;\n}\n/**\n * meta 配置\n * @param params\n */\nfunction meta(params) {\n return flow(scale({\n x: {\n nice: false\n },\n y: {\n nice: false\n }\n }))(params);\n}\n/**\n * 词云图 legend 配置\n * @param params\n */\nexport function legend(params) {\n var chart = params.chart,\n options = params.options;\n var legend = options.legend,\n colorField = options.colorField;\n if (legend === false) {\n chart.legend(false);\n } else if (colorField) {\n chart.legend(WORD_CLOUD_COLOR_FIELD, legend);\n }\n return params;\n}\n/**\n * 词云图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n // flow 的方式处理所有的配置到 G2 API\n flow(geometry, meta, tooltip, legend, interaction, animation, theme, state)(params);\n}","import { __assign } from \"tslib\";\nimport { registerShape, Util } from '@antv/g2';\nregisterShape('point', 'word-cloud', {\n draw: function draw(cfg, group) {\n var cx = cfg.x;\n var cy = cfg.y;\n var shape = group.addShape('text', {\n attrs: __assign(__assign({}, getTextAttrs(cfg)), {\n x: cx,\n y: cy\n })\n });\n var rotate = cfg.data.rotate;\n if (typeof rotate === 'number') {\n Util.rotate(shape, rotate * Math.PI / 180);\n }\n return shape;\n }\n});\nfunction getTextAttrs(cfg) {\n return {\n fontSize: cfg.data.size,\n text: cfg.data.text,\n textAlign: 'center',\n fontFamily: cfg.data.font,\n fontWeight: cfg.data.weight,\n fill: cfg.color || cfg.defaultStyle.stroke,\n textBaseline: 'alphabetic'\n };\n}","import { __assign, __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { adaptor } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constant';\n// 注册的shape\nimport './shapes/word-cloud';\nimport { processImageMask, transform } from './utils';\nvar WordCloud = /** @class */function (_super) {\n __extends(WordCloud, _super);\n function WordCloud() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 词云图 */\n _this.type = 'word-cloud';\n return _this;\n }\n /**\n * 获取 词云图 默认配置项\n * 供外部使用\n */\n WordCloud.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * @override\n * @param data\n */\n WordCloud.prototype.changeData = function (data) {\n this.updateOption({\n data: data\n });\n if (this.options.imageMask) {\n this.render();\n } else {\n this.chart.changeData(transform({\n chart: this.chart,\n options: this.options\n }));\n }\n };\n /**\n * 获取默认的 options 配置项\n */\n WordCloud.prototype.getDefaultOptions = function () {\n return WordCloud.getDefaultOptions();\n };\n /**\n * 覆写父类方法,词云图需要加载图片资源,所以需要异步渲染\n */\n WordCloud.prototype.render = function () {\n var _this = this;\n return new Promise(function (res) {\n var imageMask = _this.options.imageMask;\n if (!imageMask) {\n // 调用父类渲染函数\n _super.prototype.render.call(_this);\n res();\n return;\n }\n var handler = function handler(img) {\n _this.options = __assign(__assign({}, _this.options), {\n imageMask: img || null\n });\n // 调用父类渲染函数\n _super.prototype.render.call(_this);\n res();\n };\n processImageMask(imageMask).then(handler).catch(handler);\n });\n };\n /**\n * 获取 词云图 的适配器\n */\n WordCloud.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n /**\n * 覆写父类的方法,因为词云图使用 单独的函数 进行布局,原理上有些不一样\n */\n WordCloud.prototype.triggerResize = function () {\n var _this = this;\n if (!this.chart.destroyed) {\n // 当整个词云图图表的宽高信息发生变化时,每个词语的坐标\n // 需要重新执行 adaptor,不然会出现布局错乱,\n // 如相邻词语重叠的情况。\n this.execAdaptor();\n // 延迟执行,有利于动画更流畅\n // TODO: 在多次更改画布尺寸时,动画会越来越卡顿,原因未知\n window.setTimeout(function () {\n // 执行父类的方法\n _super.prototype.triggerResize.call(_this);\n });\n }\n };\n return WordCloud;\n}(Plot);\nexport { WordCloud };","import { __extends } from \"tslib\";\nimport { Plot } from '../core/plot';\nimport { deepAssign } from '../utils';\n/**\n * 给 G2Plot 提供非常简单的开放开发的机制。目的是能够让社区和业务上自己基于 G2Plot 开发自己的定制图表库。主要分成几类图表:\n * 1. 领域专业的图表,内部同学因为没有场景,不一定能做的完善。\n * 2. 定制业务的图表,不具备通用性\n * 3. 趣味性的可视化组件\n * 然后官方可以根据社区的情况,可以进行一些官方推荐和采纳。\n *\n * 如果使用?\n *\n * ```ts\n * import { P } from '@antv/g2plot';\n * import { GeoWorldMap, GeoWorldMapOptions } from 'g2plot-geo-world-map';\n *\n * const plot = new P('container', {\n * geoJson: '',\n * longitude: '',\n * latitude: '',\n * }, GeoWorldMap, defaultOptions);\n *\n * plot.render();\n * ```\n */\nvar P = /** @class */function (_super) {\n __extends(P, _super);\n /**\n * 相比普通图表增加 adaptor 参数。\n * @param container\n * @param options\n * @param adaptor\n * @param defaultOptions\n */\n function P(container, options, adaptor, defaultOptions) {\n var _this = _super.call(this, container, deepAssign({}, defaultOptions, options)) || this;\n /** 统一为 any plot */\n _this.type = 'g2-plot';\n _this.defaultOptions = defaultOptions;\n _this.adaptor = adaptor;\n return _this;\n }\n /**\n * 实现父类方法,直接使用传入的\n */\n P.prototype.getDefaultOptions = function () {\n return this.defaultOptions;\n };\n /**\n * 实现父类方法,直接使用传入的\n */\n P.prototype.getSchemaAdaptor = function () {\n return this.adaptor;\n };\n return P;\n}(Plot);\nexport { P };","export var version = '2.4.31';\n// G2 自定义能力透出\nimport * as G2 from '@antv/g2';\n/** 开放一些通用的 adaptor 通道方法,实验阶段:不保证稳定性 */\nimport { animation, annotation, interaction, legend, scale, theme, tooltip } from './adaptor/common';\n// 国际化处理\nimport { registerLocale } from './core/locale';\nimport { EN_US_LOCALE } from './locales/en_US';\nimport { ZH_CN_LOCALE } from './locales/zh_CN';\n/** 各个 geometry 的 adaptor,可以让开发者更快的构造图形 */\nexport { area, interval, line, point, polygon, schema } from './adaptor/geometries';\n/** 全局变量 */\nexport { setGlobal } from './core/global';\n/** G2Plot 的 Plot 基类 */\nexport { Plot } from './core/plot';\n/** 对于没有开发完成的图表,可以暂时先放到 Lab 下面,先做体验,稳定后放到根 export */\nexport { Lab } from './lab';\n// 面积图及类型定义 | author by [hustcc](https://github.com/hustcc)\nexport { Area } from './plots/area';\n// 条形图及类型定义 | author by [BBSQQ](https://github.com/BBSQQ)\nexport { Bar } from './plots/bar';\n// 对称条形图及类型定义 | author by [arcsin1](https://github.com/arcsin1)\nexport { BidirectionalBar } from './plots/bidirectional-bar';\n// 箱线图及类型定义 | author by [BBSQQ](https://github.com/BBSQQ), [visiky](https://github.com/visiky)\nexport { Box } from './plots/box';\n// 子弹图及类型定义 | author by [arcsin1](https://github.com/arcsin1)\nexport { Bullet } from './plots/bullet';\n// 弦图及类型定义 | author by [MrSmallLiu](https://github.com/MrSmallLiu), [visiky](https://github.com/visiky)\nexport { Chord } from './plots/chord';\n// circle-packing 及类型定义 | author by [visiky](https://github.com/visiky), [Angeli](https://github.com/Angelii)\nexport { CirclePacking } from './plots/circle-packing';\n// 柱形图及类型定义 | author by [zqlu](https://github.com/zqlu)\nexport { Column } from './plots/column';\n// 混合图形 | author by [liuzhenying](https://github.com/liuzhenying)\nexport { DualAxes } from './plots/dual-axes';\n// 分面图及类型定义 | author by [visiky](https://github.com/visiky)\nexport { Facet } from './plots/facet';\n// 漏斗图及类型定义\nexport { Funnel, FUNNEL_CONVERSATION_FIELD } from './plots/funnel';\n// 仪表盘及类型定义 | author by [hustcc](https://github.com/hustcc)\nexport { Gauge } from './plots/gauge';\n// 热力图及类型定义 | author by [jiazhewang](https://github.com/jiazhewang)\nexport { Heatmap } from './plots/heatmap';\n// 直方图及类型定义 | author by [arcsin1](https://github.com/arcsin1), [visiky](https://github.com/visiky)\nexport { Histogram } from './plots/histogram';\n// 折线图及类型定义 | author by [hustcc](https://github.com/hustcc)\nexport { Line } from './plots/line';\n// 水波图及类型定义 | author by [CarisL](https://github.com/CarisL), [hustcc](https://github.com/hustcc), [pearmini](https://github.com/pearmini)\nexport { addWaterWave, Liquid } from './plots/liquid';\n// 已经废弃,更名为 Mix\nexport { Mix, Mix as MultiView } from './plots/mix';\n// 饼图及类型定义 | author by [visiky](https://github.com/visiky)\nexport { Pie } from './plots/pie';\n// 进度图及类型定义 | author by [connono](https://github.com/connono)\nexport { Progress } from './plots/progress';\n// 雷达图及类型定义 | author by [visiky](https://github.com/visiky)\nexport { Radar } from './plots/radar';\n// 玉珏图 | author by [yujs](https://github.com/yujs) | updated by [visiky](https://github.com/visiky)\nexport { RadialBar } from './plots/radial-bar';\n// 环形进度图及类型定义 | author by [connono](https://github.com/connono)\nexport { RingProgress } from './plots/ring-progress';\n// 玫瑰图及类型定义 | author by [zhangzhonghe](https://github.com/zhangzhonghe)\nexport { Rose } from './plots/rose';\n// 桑基图及类型定义 | author by [hustcc](https://github.com/hustcc)\nexport { Sankey } from './plots/sankey';\n// 散点图及类型定义 | author by [lxfu1](https://github.com/lxfu1)\nexport { Scatter } from './plots/scatter';\n// K线图及类型定义 | author by [jhwong](https://github.com/jinhuiWong), [visiky](https://github.com/visiky)\nexport { Stock } from './plots/stock';\n// 旭日图及类型定义 | author by [lxfu1](https://github.com/lxfu1), [visiky](https://github.com/visiky)\nexport { Sunburst } from './plots/sunburst';\n// 迷你面积图及类型定义 | author by [connono](https://github.com/connono)\nexport { TinyArea } from './plots/tiny-area';\n// 迷你柱形图及类型定义 | author by [connono](https://github.com/connono)\nexport { TinyColumn } from './plots/tiny-column';\n// 迷你折线图及类型定义 | author by [connono](https://github.com/connono)\nexport { TinyLine } from './plots/tiny-line';\n// 矩形树图\nexport { Treemap } from './plots/treemap';\n// 韦恩图及类型定义 | author by [visiky](https://github.com/visiky)\nexport { Venn } from './plots/venn';\n// 小提琴图及类型定义 | author by [YiSiWang](https://github.com/YiSiWang), [visiky](https://github.com/visiky)\nexport { Violin } from './plots/violin';\n// 瀑布图 | author by [visiky](https://github.com/visiky)\nexport { Waterfall } from './plots/waterfall';\n// 词云图及类型定义 | author by [zhangzhonghe](https://github.com/zhangzhonghe)\nexport { WordCloud } from './plots/word-cloud';\n// 以下开放自定义图表开发的能力(目前仅仅是孵化中)\n/** 所有开放图表都使用 G2Plot.P 作为入口开发,理论上官方的所有图表都可以走 G2Plot.P 的入口(暂时不处理) */\nexport { P } from './plugin';\n// 类型定义导出\nexport * from './types';\n/** 开发 adaptor 可能会用到的方法或一些工具方法,不强制使用 */\nexport { flow, measureTextWidth } from './utils';\n/** 开放 getCanvasPatterng 方法 */\nexport { getCanvasPattern } from './utils/pattern';\nexport { G2 };\n/** 透出 国际化 工具函数,便于使用 */\nexport { registerLocale };\n/** default locale register */\nregisterLocale('en-US', EN_US_LOCALE);\nregisterLocale('zh-CN', ZH_CN_LOCALE);\nexport var adaptors = {\n scale: scale,\n legend: legend,\n tooltip: tooltip,\n annotation: annotation,\n interaction: interaction,\n theme: theme,\n animation: animation\n};","export var EN_US_LOCALE = {\n locale: 'en-US',\n // General\n general: {\n increase: 'Increase',\n decrease: 'Decrease',\n root: 'Root'\n },\n // Plot Components\n /** statistic text component */\n statistic: {\n total: 'Total'\n },\n /** conversionTag component */\n conversionTag: {\n label: 'Rate'\n },\n legend: {},\n tooltip: {},\n slider: {},\n scrollbar: {},\n // Plots\n waterfall: {\n total: 'Total'\n }\n};","export var ZH_CN_LOCALE = {\n locale: 'zh-CN',\n // 通用\n general: {\n increase: '增加',\n decrease: '减少',\n root: '初始'\n },\n // 按照图表组件\n /** 中心文本 */\n statistic: {\n total: '总计'\n },\n /** 转化率组件 */\n conversionTag: {\n label: '转化率'\n },\n legend: {},\n tooltip: {},\n slider: {},\n scrollbar: {},\n // 按照图表类型\n waterfall: {\n total: '总计'\n }\n};","var __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nimport * as ReactDOM from 'react-dom';\n// Let compiler not to search module usage\nvar fullClone = __assign({}, ReactDOM);\nvar version = fullClone.version,\n reactRender = fullClone.render,\n unmountComponentAtNode = fullClone.unmountComponentAtNode;\nvar createRoot;\ntry {\n var mainVersion = Number((version || '').split('.')[0]);\n if (mainVersion >= 18) {\n createRoot = fullClone.createRoot;\n }\n} catch (e) {\n // Do nothing;\n}\nfunction toggleWarning(skip) {\n var __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = fullClone.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n if (__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED && typeof __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED === 'object') {\n __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.usingClientEntryPoint = skip;\n }\n}\nvar MARK = '__rc_react_root__';\nfunction modernRender(node, container) {\n toggleWarning(true);\n var root = container[MARK] || createRoot(container);\n toggleWarning(false);\n root.render(node);\n container[MARK] = root;\n}\nfunction legacyRender(node, container) {\n reactRender(node, container);\n}\n/** @private Test usage. Not work in prod */\nexport function _r(node, container) {\n if (process.env.NODE_ENV !== 'production') {\n return legacyRender(node, container);\n }\n}\nexport function render(node, container) {\n if (createRoot) {\n modernRender(node, container);\n return;\n }\n legacyRender(node, container);\n}\n// ========================= Unmount ==========================\nfunction modernUnmount(container) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n // Delay to unmount to avoid React 18 sync warning\n return [2 /*return*/, Promise.resolve().then(function () {\n var _a;\n (_a = container[MARK]) === null || _a === void 0 ? void 0 : _a.unmount();\n delete container[MARK];\n })];\n });\n });\n}\nfunction legacyUnmount(container) {\n unmountComponentAtNode(container);\n}\n/** @private Test usage. Not work in prod */\nexport function _u(container) {\n if (process.env.NODE_ENV !== 'production') {\n return legacyUnmount(container);\n }\n}\nexport function unmount(container) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (createRoot !== undefined) {\n // Delay to unmount to avoid React 18 sync warning\n return [2 /*return*/, modernUnmount(container)];\n }\n legacyUnmount(container);\n return [2 /*return*/];\n });\n });\n}","import { render } from './render';\nvar TOOLTIP_CONTAINER_MAPPING = new Map();\nvar createNode = function createNode(children, type, uuid) {\n var mountPoint = document.createElement('div');\n if (type === 'tooltip') {\n mountPoint.setAttribute('data-uuid', uuid);\n if (TOOLTIP_CONTAINER_MAPPING.has(uuid)) {\n mountPoint = TOOLTIP_CONTAINER_MAPPING.get(uuid);\n } else {\n TOOLTIP_CONTAINER_MAPPING.set(uuid, mountPoint);\n }\n mountPoint.className = 'g2-tooltip';\n }\n render(children, mountPoint);\n return mountPoint;\n};\nexport default createNode;","/* eslint-disable no-restricted-syntax */\n// 类型检测\nexport var isType = function isType(value, type) {\n var toString = {}.toString;\n return toString.call(value) === \"[object \".concat(type, \"]\");\n};\nexport var clone = function clone(source) {\n if (!source) {\n return source;\n }\n var target = {};\n // eslint-disable-next-line guard-for-in\n for (var k in source) {\n target[k] = source[k];\n }\n return target;\n};\nexport var getType = function getType(n) {\n return Object.prototype.toString.call(n).slice(8, -1);\n};\n/**\n * 深克隆\n * @param source 要深克隆的目标对象\n */\nexport var deepClone = function deepClone(source) {\n if (!source || typeof source !== 'object') {\n return source;\n }\n var target;\n if (Array.isArray(source)) {\n target = source.map(function (item) {\n return deepClone(item);\n });\n } else {\n target = {};\n Object.keys(source).forEach(function (key) {\n return target[key] = deepClone(source[key]);\n });\n }\n return target;\n};\n/**\n * 存在时返回路径值,不存在时返回 undefined\n */\nexport var hasPath = function hasPath(source, path) {\n var current = source;\n for (var i = 0; i < path.length; i += 1) {\n if (current === null || current === void 0 ? void 0 : current[path[i]]) {\n current = current[path[i]];\n } else {\n current = undefined;\n break;\n }\n }\n return current;\n};\n/**\n * 内部指定 params ,不考虑复杂情况\n */\nexport var setPath = function setPath(source, path, value) {\n if (!source) {\n return source;\n }\n var o = source;\n path.forEach(function (key, idx) {\n // 不是最后一个\n if (idx < path.length - 1) {\n o = o[key];\n } else {\n o[key] = value;\n }\n });\n return source;\n};\nexport var uuid = function uuid() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = Math.random() * 16 | 0;\n var v = c == 'x' ? r : r & 0x3 | 0x8;\n return v.toString(16);\n });\n};","var __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { useRef, useEffect } from 'react';\nimport { isEqual, get } from '@antv/util';\nimport createNode from '../utils/createNode';\nimport { hasPath, isType, deepClone, clone, setPath, uuid } from '../utils';\nexport default function useInit(ChartClass, config) {\n var chart = useRef();\n var chartOptions = useRef();\n var container = useRef(null);\n var onReady = config.onReady,\n onEvent = config.onEvent;\n /**\n * Get data base64\n * @param {string} type A DOMString indicating the image format. The default format type is image/png.\n * @param {number} encoderOptions A Number between 0 and 1 indicating the image quality\n */\n var toDataURL = function toDataURL(type, encoderOptions) {\n var _a;\n if (type === void 0) {\n type = 'image/png';\n }\n return (_a = chart.current) === null || _a === void 0 ? void 0 : _a.chart.canvas.cfg.el.toDataURL(type, encoderOptions);\n };\n /**\n * Download Iamge\n * @param {string} name A name of image\n * @param {string} type A DOMString indicating the image format. The default format type is image/png.\n * @param {number} encoderOptions A Number between 0 and 1 indicating the image quality\n */\n var downloadImage = function downloadImage(name, type, encoderOptions) {\n var _a;\n if (name === void 0) {\n name = 'download';\n }\n if (type === void 0) {\n type = 'image/png';\n }\n var imageName = name;\n if (name.indexOf('.') === -1) {\n imageName = \"\".concat(name, \".\").concat(type.split('/')[1]);\n }\n var base64 = (_a = chart.current) === null || _a === void 0 ? void 0 : _a.chart.canvas.cfg.el.toDataURL(type, encoderOptions);\n var a = document.createElement('a');\n a.href = base64;\n a.download = imageName;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n a = null;\n return imageName;\n };\n var reactDomToString = function reactDomToString(source, path, type, _uuid) {\n var statisticCustomHtml = hasPath(source, path);\n setPath(source, path, function () {\n var arg = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n arg[_i] = arguments[_i];\n }\n var statisticDom = isType(statisticCustomHtml, 'Function') ? statisticCustomHtml.apply(void 0, arg) : statisticCustomHtml;\n if (isType(statisticDom, 'String') || isType(statisticDom, 'Number') || isType(statisticDom, 'HTMLDivElement')) {\n return statisticDom;\n }\n return createNode(statisticDom, type, _uuid);\n });\n };\n var processConfig = function processConfig() {\n var _uuid = uuid();\n // statistic\n if (hasPath(config, ['statistic', 'content', 'customHtml'])) {\n reactDomToString(config, ['statistic', 'content', 'customHtml']);\n }\n if (hasPath(config, ['statistic', 'title', 'customHtml'])) {\n reactDomToString(config, ['statistic', 'title', 'customHtml']);\n }\n // tooltip\n if (typeof config.tooltip === 'object') {\n if (hasPath(config, ['tooltip', 'container'])) {\n reactDomToString(config, ['tooltip', 'container'], 'tooltip', _uuid);\n }\n if (hasPath(config, ['tooltip', 'customContent'])) {\n reactDomToString(config, ['tooltip', 'customContent'], 'tooltip', _uuid);\n }\n }\n };\n useEffect(function () {\n if (chart.current && !isEqual(chartOptions.current, config)) {\n var changeData = false;\n if (chartOptions.current) {\n // 从 options 里面取出 data 、value 、 percent 进行比对,判断是否仅数值发生改变\n var _a = chartOptions.current,\n currentData = _a.data,\n currentValue = _a.value,\n currentPercent = _a.percent,\n currentConfig = __rest(_a, [\"data\", \"value\", \"percent\"]);\n var inputData = config.data,\n inputValue = config.value,\n inputPercent = config.percent,\n inputConfig = __rest(config, [\"data\", \"value\", \"percent\"]);\n changeData = isEqual(currentConfig, inputConfig);\n }\n chartOptions.current = deepClone(config);\n if (changeData && get(config, 'chartType') !== 'Mix') {\n var changeType_1 = 'data';\n var typeMaps = ['percent']; // 特殊类型的图表 data 字段,例如 RingProgress\n var currentKeys_1 = Object.keys(config);\n typeMaps.forEach(function (type) {\n if (currentKeys_1.includes(type)) {\n changeType_1 = type;\n }\n });\n chart.current.changeData((config === null || config === void 0 ? void 0 : config[changeType_1]) || []);\n chart.current.render();\n } else {\n processConfig();\n chart.current.update(config);\n }\n }\n }, [config]);\n useEffect(function () {\n if (!container.current) {\n return function () {\n return null;\n };\n }\n if (!chartOptions.current) {\n chartOptions.current = deepClone(config);\n }\n processConfig();\n var chartInstance = new ChartClass(container.current, __assign({}, config));\n chartInstance.toDataURL = function (type, encoderOptions) {\n return toDataURL(type, encoderOptions);\n };\n chartInstance.downloadImage = function (name, type, encoderOptions) {\n return downloadImage(name, type, encoderOptions);\n };\n chartInstance.render();\n chart.current = clone(chartInstance);\n if (onReady) {\n onReady(chartInstance);\n }\n var handler = function handler(event) {\n if (onEvent) {\n onEvent(chartInstance, event);\n }\n };\n chartInstance.on('*', handler);\n // 组件销毁时销毁图表\n return function () {\n if (chart.current) {\n chart.current.destroy();\n chart.current.off('*', handler);\n chart.current = undefined;\n }\n };\n }, []);\n return {\n chart: chart,\n container: container\n };\n}","import { isFunction } from '@antv/util';\n/**\n * 获取或者绑定图表实例\n */\nexport var getChart = function getChart(chartRef, chart) {\n if (!chartRef) {\n return;\n }\n if (isFunction(chartRef)) {\n chartRef(chart);\n } else {\n chartRef.current = chart;\n }\n};","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nimport React, { Fragment } from 'react';\nvar ErrorBoundary = /** @class */function (_super) {\n __extends(ErrorBoundary, _super);\n function ErrorBoundary() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n hasError: false\n };\n _this.renderError = function (e) {\n var errorTemplate = _this.props.errorTemplate;\n switch (e) {\n default:\n if (typeof errorTemplate === 'function') {\n return errorTemplate(e);\n }\n return errorTemplate ? errorTemplate : React.createElement(\"h5\", null, \"\\u7EC4\\u4EF6\\u51FA\\u9519\\u4E86\\uFF0C\\u8BF7\\u6838\\u67E5\\u540E\\u91CD\\u8BD5\\uFF1A \", e.message);\n }\n };\n return _this;\n }\n ErrorBoundary.getDerivedStateFromError = function (error) {\n return {\n hasError: true,\n error: error\n };\n };\n ErrorBoundary.getDerivedStateFromProps = function (nextProps, state) {\n if (state.children !== nextProps.children) {\n return {\n children: nextProps.children,\n hasError: false,\n error: undefined\n };\n }\n return null;\n };\n ErrorBoundary.prototype.render = function () {\n if (this.state.hasError) {\n return this.renderError(this.state.error);\n }\n return React.createElement(Fragment, null, this.props.children);\n };\n return ErrorBoundary;\n}(React.Component);\nexport default ErrorBoundary;","import { createElement } from 'react';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\n\nvar _assign = function __assign() {\n _assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return _assign.apply(this, arguments);\n};\nfunction __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n}\nvar uid = function uid() {\n return Math.random().toString(36).substring(6);\n};\nvar SVG = function SVG(_a) {\n var animate = _a.animate,\n backgroundColor = _a.backgroundColor,\n backgroundOpacity = _a.backgroundOpacity,\n baseUrl = _a.baseUrl,\n children = _a.children,\n foregroundColor = _a.foregroundColor,\n foregroundOpacity = _a.foregroundOpacity,\n gradientRatio = _a.gradientRatio,\n uniqueKey = _a.uniqueKey,\n interval = _a.interval,\n rtl = _a.rtl,\n speed = _a.speed,\n style = _a.style,\n title = _a.title,\n props = __rest(_a, [\"animate\", \"backgroundColor\", \"backgroundOpacity\", \"baseUrl\", \"children\", \"foregroundColor\", \"foregroundOpacity\", \"gradientRatio\", \"uniqueKey\", \"interval\", \"rtl\", \"speed\", \"style\", \"title\"]);\n var fixedId = uniqueKey || uid();\n var idClip = fixedId + \"-diff\";\n var idGradient = fixedId + \"-animated-diff\";\n var idAria = fixedId + \"-aria\";\n var rtlStyle = rtl ? {\n transform: 'scaleX(-1)'\n } : null;\n var keyTimes = \"0; \" + interval + \"; 1\";\n var dur = speed + \"s\";\n return createElement(\"svg\", _assign({\n \"aria-labelledby\": idAria,\n role: \"img\",\n style: _assign(_assign({}, style), rtlStyle)\n }, props), title ? createElement(\"title\", {\n id: idAria\n }, title) : null, createElement(\"rect\", {\n role: \"presentation\",\n x: \"0\",\n y: \"0\",\n width: \"100%\",\n height: \"100%\",\n clipPath: \"url(\" + baseUrl + \"#\" + idClip + \")\",\n style: {\n fill: \"url(\" + baseUrl + \"#\" + idGradient + \")\"\n }\n }), createElement(\"defs\", {\n role: \"presentation\"\n }, createElement(\"clipPath\", {\n id: idClip\n }, children), createElement(\"linearGradient\", {\n id: idGradient\n }, createElement(\"stop\", {\n offset: \"0%\",\n stopColor: backgroundColor,\n stopOpacity: backgroundOpacity\n }, animate && createElement(\"animate\", {\n attributeName: \"offset\",\n values: -gradientRatio + \"; \" + -gradientRatio + \"; 1\",\n keyTimes: keyTimes,\n dur: dur,\n repeatCount: \"indefinite\"\n })), createElement(\"stop\", {\n offset: \"50%\",\n stopColor: foregroundColor,\n stopOpacity: foregroundOpacity\n }, animate && createElement(\"animate\", {\n attributeName: \"offset\",\n values: -gradientRatio / 2 + \"; \" + -gradientRatio / 2 + \"; \" + (1 + gradientRatio / 2),\n keyTimes: keyTimes,\n dur: dur,\n repeatCount: \"indefinite\"\n })), createElement(\"stop\", {\n offset: \"100%\",\n stopColor: backgroundColor,\n stopOpacity: backgroundOpacity\n }, animate && createElement(\"animate\", {\n attributeName: \"offset\",\n values: \"0; 0; \" + (1 + gradientRatio),\n keyTimes: keyTimes,\n dur: dur,\n repeatCount: \"indefinite\"\n })))));\n};\nSVG.defaultProps = {\n animate: true,\n backgroundColor: '#f5f6f7',\n backgroundOpacity: 1,\n baseUrl: '',\n foregroundColor: '#eee',\n foregroundOpacity: 1,\n gradientRatio: 2,\n id: null,\n interval: 0.25,\n rtl: false,\n speed: 1.2,\n style: {},\n title: 'Loading...'\n};\nvar ContentLoader = function ContentLoader(props) {\n return props.children ? createElement(SVG, _assign({}, props)) : createElement(ReactContentLoaderFacebook, _assign({}, props));\n};\nvar ReactContentLoaderFacebook = function ReactContentLoaderFacebook(props) {\n return createElement(ContentLoader, _assign({\n viewBox: \"0 0 476 124\"\n }, props), createElement(\"rect\", {\n x: \"48\",\n y: \"8\",\n width: \"88\",\n height: \"6\",\n rx: \"3\"\n }), createElement(\"rect\", {\n x: \"48\",\n y: \"26\",\n width: \"52\",\n height: \"6\",\n rx: \"3\"\n }), createElement(\"rect\", {\n x: \"0\",\n y: \"56\",\n width: \"410\",\n height: \"6\",\n rx: \"3\"\n }), createElement(\"rect\", {\n x: \"0\",\n y: \"72\",\n width: \"380\",\n height: \"6\",\n rx: \"3\"\n }), createElement(\"rect\", {\n x: \"0\",\n y: \"88\",\n width: \"178\",\n height: \"6\",\n rx: \"3\"\n }), createElement(\"circle\", {\n cx: \"20\",\n cy: \"20\",\n r: \"20\"\n }));\n};\nvar ReactContentLoaderInstagram = function ReactContentLoaderInstagram(props) {\n return createElement(ContentLoader, _assign({\n viewBox: \"0 0 400 460\"\n }, props), createElement(\"circle\", {\n cx: \"31\",\n cy: \"31\",\n r: \"15\"\n }), createElement(\"rect\", {\n x: \"58\",\n y: \"18\",\n rx: \"2\",\n ry: \"2\",\n width: \"140\",\n height: \"10\"\n }), createElement(\"rect\", {\n x: \"58\",\n y: \"34\",\n rx: \"2\",\n ry: \"2\",\n width: \"140\",\n height: \"10\"\n }), createElement(\"rect\", {\n x: \"0\",\n y: \"60\",\n rx: \"2\",\n ry: \"2\",\n width: \"400\",\n height: \"400\"\n }));\n};\nvar ReactContentLoaderCode = function ReactContentLoaderCode(props) {\n return createElement(ContentLoader, _assign({\n viewBox: \"0 0 340 84\"\n }, props), createElement(\"rect\", {\n x: \"0\",\n y: \"0\",\n width: \"67\",\n height: \"11\",\n rx: \"3\"\n }), createElement(\"rect\", {\n x: \"76\",\n y: \"0\",\n width: \"140\",\n height: \"11\",\n rx: \"3\"\n }), createElement(\"rect\", {\n x: \"127\",\n y: \"48\",\n width: \"53\",\n height: \"11\",\n rx: \"3\"\n }), createElement(\"rect\", {\n x: \"187\",\n y: \"48\",\n width: \"72\",\n height: \"11\",\n rx: \"3\"\n }), createElement(\"rect\", {\n x: \"18\",\n y: \"48\",\n width: \"100\",\n height: \"11\",\n rx: \"3\"\n }), createElement(\"rect\", {\n x: \"0\",\n y: \"71\",\n width: \"37\",\n height: \"11\",\n rx: \"3\"\n }), createElement(\"rect\", {\n x: \"18\",\n y: \"23\",\n width: \"140\",\n height: \"11\",\n rx: \"3\"\n }), createElement(\"rect\", {\n x: \"166\",\n y: \"23\",\n width: \"173\",\n height: \"11\",\n rx: \"3\"\n }));\n};\nvar ReactContentLoaderListStyle = function ReactContentLoaderListStyle(props) {\n return createElement(ContentLoader, _assign({\n viewBox: \"0 0 400 110\"\n }, props), createElement(\"rect\", {\n x: \"0\",\n y: \"0\",\n rx: \"3\",\n ry: \"3\",\n width: \"250\",\n height: \"10\"\n }), createElement(\"rect\", {\n x: \"20\",\n y: \"20\",\n rx: \"3\",\n ry: \"3\",\n width: \"220\",\n height: \"10\"\n }), createElement(\"rect\", {\n x: \"20\",\n y: \"40\",\n rx: \"3\",\n ry: \"3\",\n width: \"170\",\n height: \"10\"\n }), createElement(\"rect\", {\n x: \"0\",\n y: \"60\",\n rx: \"3\",\n ry: \"3\",\n width: \"250\",\n height: \"10\"\n }), createElement(\"rect\", {\n x: \"20\",\n y: \"80\",\n rx: \"3\",\n ry: \"3\",\n width: \"200\",\n height: \"10\"\n }), createElement(\"rect\", {\n x: \"20\",\n y: \"100\",\n rx: \"3\",\n ry: \"3\",\n width: \"80\",\n height: \"10\"\n }));\n};\nvar ReactContentLoaderBulletList = function ReactContentLoaderBulletList(props) {\n return createElement(ContentLoader, _assign({\n viewBox: \"0 0 245 125\"\n }, props), createElement(\"circle\", {\n cx: \"10\",\n cy: \"20\",\n r: \"8\"\n }), createElement(\"rect\", {\n x: \"25\",\n y: \"15\",\n rx: \"5\",\n ry: \"5\",\n width: \"220\",\n height: \"10\"\n }), createElement(\"circle\", {\n cx: \"10\",\n cy: \"50\",\n r: \"8\"\n }), createElement(\"rect\", {\n x: \"25\",\n y: \"45\",\n rx: \"5\",\n ry: \"5\",\n width: \"220\",\n height: \"10\"\n }), createElement(\"circle\", {\n cx: \"10\",\n cy: \"80\",\n r: \"8\"\n }), createElement(\"rect\", {\n x: \"25\",\n y: \"75\",\n rx: \"5\",\n ry: \"5\",\n width: \"220\",\n height: \"10\"\n }), createElement(\"circle\", {\n cx: \"10\",\n cy: \"110\",\n r: \"8\"\n }), createElement(\"rect\", {\n x: \"25\",\n y: \"105\",\n rx: \"5\",\n ry: \"5\",\n width: \"220\",\n height: \"10\"\n }));\n};\nexport default ContentLoader;\nexport { ReactContentLoaderBulletList as BulletList, ReactContentLoaderCode as Code, ReactContentLoaderFacebook as Facebook, ReactContentLoaderInstagram as Instagram, ReactContentLoaderListStyle as List };","import React from 'react';\nimport ContentLoader from 'react-content-loader';\nvar ChartLoading = function ChartLoading(_a) {\n var loadingTemplate = _a.loadingTemplate,\n _b = _a.theme,\n theme = _b === void 0 ? 'light' : _b;\n var renderLoading = function renderLoading() {\n if (loadingTemplate) {\n return loadingTemplate;\n }\n return React.createElement(ContentLoader, {\n viewBox: \"0 0 400 180\",\n width: 200,\n height: 90,\n speed: 1,\n backgroundColor: theme === 'dark' ? '#262626' : '#D9D9D9'\n }, React.createElement(\"rect\", {\n x: \"20\",\n y: \"5\",\n rx: \"0\",\n ry: \"0\",\n width: \"1\",\n height: \"170\"\n }), React.createElement(\"rect\", {\n x: \"20\",\n y: \"175\",\n rx: \"0\",\n ry: \"0\",\n width: \"360\",\n height: \"1\"\n }), React.createElement(\"rect\", {\n x: \"40\",\n y: \"75\",\n rx: \"0\",\n ry: \"0\",\n width: \"35\",\n height: \"100\"\n }), React.createElement(\"rect\", {\n x: \"80\",\n y: \"125\",\n rx: \"0\",\n ry: \"0\",\n width: \"35\",\n height: \"50\"\n }), React.createElement(\"rect\", {\n x: \"120\",\n y: \"105\",\n rx: \"0\",\n ry: \"0\",\n width: \"35\",\n height: \"70\"\n }), React.createElement(\"rect\", {\n x: \"160\",\n y: \"35\",\n rx: \"0\",\n ry: \"0\",\n width: \"35\",\n height: \"140\"\n }), React.createElement(\"rect\", {\n x: \"200\",\n y: \"55\",\n rx: \"0\",\n ry: \"0\",\n width: \"35\",\n height: \"120\"\n }), React.createElement(\"rect\", {\n x: \"240\",\n y: \"15\",\n rx: \"0\",\n ry: \"0\",\n width: \"35\",\n height: \"160\"\n }), React.createElement(\"rect\", {\n x: \"280\",\n y: \"135\",\n rx: \"0\",\n ry: \"0\",\n width: \"35\",\n height: \"40\"\n }), React.createElement(\"rect\", {\n x: \"320\",\n y: \"85\",\n rx: \"0\",\n ry: \"0\",\n width: \"35\",\n height: \"90\"\n }));\n };\n return React.createElement(\"div\", {\n className: \"charts-loading-container\",\n style: {\n position: 'absolute',\n width: '100%',\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n left: 0,\n top: 0,\n zIndex: 99,\n backgroundColor: theme === 'dark' ? 'rgb(20, 20, 20)' : 'rgb(255, 255, 255)'\n }\n }, renderLoading());\n};\nexport default ChartLoading;","var __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React, { useEffect, useImperativeHandle, forwardRef } from 'react';\nimport { Radar as G2plotRadar } from '@antv/g2plot';\nimport useChart from '../../hooks/useChart';\nimport { getChart } from '../../utils';\nimport ErrorBoundary from '../../errorBoundary';\nimport ChartLoading from '../../utils/createLoading';\nvar RadarChart = forwardRef(function (props, ref) {\n var chartRef = props.chartRef,\n _a = props.style,\n style = _a === void 0 ? {\n height: 'inherit'\n } : _a,\n className = props.className,\n loading = props.loading,\n loadingTemplate = props.loadingTemplate,\n errorTemplate = props.errorTemplate,\n rest = __rest(props, [\"chartRef\", \"style\", \"className\", \"loading\", \"loadingTemplate\", \"errorTemplate\"]);\n var _b = useChart(G2plotRadar, rest),\n chart = _b.chart,\n container = _b.container;\n useEffect(function () {\n getChart(chartRef, chart.current);\n }, [chart.current]);\n useImperativeHandle(ref, function () {\n return {\n getChart: function getChart() {\n return chart.current;\n }\n };\n });\n return React.createElement(ErrorBoundary, {\n errorTemplate: errorTemplate\n }, loading && React.createElement(ChartLoading, {\n loadingTemplate: loadingTemplate,\n theme: props.theme\n }), React.createElement(\"div\", {\n className: className,\n style: style,\n ref: container\n }));\n});\nexport default RadarChart;","import { Radar } from \"@ant-design/charts\";\nimport * as React from \"react\";\n\nconst EvalRadarPlot = ({ data }: any) => {\n // const data = [\n // {\n // name: \"G2\",\n // star: 10371,\n // },\n // {\n // name: \"G6\",\n // star: 7380,\n // },\n // {\n // name: \"F2\",\n // star: 7414,\n // },\n // {\n // name: \"L7\",\n // star: 2140,\n // },\n // {\n // name: \"X6\",\n // star: 660,\n // },\n // {\n // name: \"AVA\",\n // star: 885,\n // },\n // {\n // name: \"G2Plot\",\n // star: 1626,\n // },\n // ];\n const config = {\n data: data.map((d: any) => ({ ...d, score: d.score / 2 })),\n xField: \"dimension\",\n yField: \"score\",\n appendPadding: [0, 10, 0, 10],\n meta: {\n score: {\n alias: \"score (out of 5)\",\n min: 0,\n nice: true,\n formatter: (v: any) => Number(v).toFixed(2),\n },\n },\n xAxis: {\n tickLine: null,\n },\n yAxis: {\n label: false,\n grid: {\n alternateColor: \"rgba(0, 0, 0, 0.04)\",\n },\n },\n point: {\n size: 2,\n },\n area: {\n style: {\n fillOpacity: 0.3,\n fill: \"green\",\n stroke: \"green\",\n },\n },\n };\n return (\n
        \n \n
        \n );\n};\nexport default EvalRadarPlot;\n","import * as React from \"react\";\nimport {\n AcademicCapIcon,\n WrenchScrewdriverIcon,\n} from \"@heroicons/react/24/outline\";\nimport { StarIcon } from \"@heroicons/react/24/solid\";\nimport { IStatus, IVizConfig } from \"../../types\";\nimport { Skeleton, message } from \"antd\";\nimport { fetchJSON, mapNumberToColor, scrollToElement } from \"../../utils\";\nimport { LoadBox } from \"../../atoms\";\nimport EvalRadarPlot from \"./evalradar\";\n\nconst ChartEvaluator = ({\n vizData,\n setVizData,\n vizConfig,\n}: {\n vizData: any;\n setVizData: any;\n vizConfig: IVizConfig;\n}) => {\n let initEval = [\n {\n dimension: \"bugs\",\n score: 3,\n rationale:\n \"The code is free of any bugs, syntax errors, or typos. The code is well-structured and easy to read.\",\n },\n {\n dimension: \"transformation\",\n score: 10,\n rationale:\n \"The data is not transformed as it is already in the appropriate format for the histogram visualization.\",\n },\n {\n dimension: \"compliance\",\n score: 6,\n rationale:\n \"The code meets the specified visualization goals of showing the distribution of daily closing prices of the S&P 500 index.\",\n },\n {\n dimension: \"type\",\n score: 10,\n rationale:\n \"The histogram visualization is appropriate for showing the distribution of a single variable, which is the daily closing price of the S&P 500 index.\",\n },\n {\n dimension: \"encoding\",\n score: 8,\n rationale:\n \"The data is encoded appropriately for the histogram visualization, with the x-axis representing the daily closing price of the S&P 500 index and the y-axis representing the frequency of occurrence.\",\n },\n {\n dimension: \"aesthetics\",\n score: 1,\n rationale:\n \"The aesthetics of the visualization are appropriate for the histogram type, with the blue color representing the distribution of the data, and the red and green dashed lines representing the mean and median values, respectively. The labels and ticks are also appropriately placed and rotated for readability.\",\n },\n ];\n initEval = [];\n const [loading, setLoading] = React.useState(false);\n const [loadingRepair, setLoadingRepair] = React.useState(false);\n const [error, setError] = React.useState(null);\n const [evaluations, setEvaluations] = React.useState(initEval);\n const serverUrl = process.env.GATSBY_API_URL;\n const [selectedEvaluation, setSelectedEvaluation] = React.useState(0);\n\n const evaluationsDivRef = React.useRef(null);\n\n React.useEffect(() => {\n setEvaluations(initEval);\n setSelectedEvaluation(0);\n }, [vizData]);\n\n const fetchEvaluation = () => {\n setError(null);\n setLoading(true);\n setEvaluations([]);\n setTimeout(() => {\n scrollToElement(evaluationsDivRef);\n }, 600);\n const data = {\n code: vizData.code,\n goal: vizConfig.goal,\n textgen_config: vizConfig.textgen_config,\n library: vizConfig.library,\n };\n const payLoad = {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(data),\n };\n\n const onSuccess = (data: any) => {\n if (data && data.status) {\n // setVizspecs(data.charts);\n // console.log(\"Evaluation data\", data);\n setEvaluations(data.evaluations);\n message.success(data.message);\n setTimeout(() => {\n scrollToElement(evaluationsDivRef);\n }, 400);\n } else {\n message.error(data.message);\n setError(data);\n }\n setLoading(false);\n };\n const onError = (err: any) => {\n message.error(err.message);\n setLoading(false);\n setError(err);\n };\n fetchJSON(`${serverUrl}/visualize/evaluate`, payLoad, onSuccess, onError);\n };\n\n const repairChart = () => {\n setError(null);\n setLoadingRepair(true);\n setTimeout(() => {\n scrollToElement(evaluationsDivRef);\n }, 600);\n const data = {\n code: vizData.code,\n feedback: evaluations,\n textgen_config: vizConfig.textgen_config,\n library: vizConfig.library,\n summary: vizConfig.summary,\n goal: vizConfig.goal,\n };\n const payLoad = {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(data),\n };\n\n const onSuccess = (data: any) => {\n if (data && data.status) {\n // setVizspecs(data.charts);\n console.log(\"Repair data\", data);\n // setEvaluations(data.evaluations);\n setVizData(data.charts[0]);\n message.success(data.message);\n setTimeout(() => {\n scrollToElement(evaluationsDivRef);\n }, 400);\n } else {\n message.error(data.message);\n setError(data);\n }\n setLoadingRepair(false);\n };\n const onError = (err: any) => {\n message.error(err.message);\n setLoadingRepair(false);\n setError(err);\n };\n fetchJSON(`${serverUrl}/visualize/repair`, payLoad, onSuccess, onError);\n };\n\n const getStarRating = (score: number) => {\n const stars = [];\n for (let i = 0; i < 5; i++) {\n if (i < score) {\n stars.push(\n \n );\n } else {\n stars.push(\n \n );\n }\n }\n return stars;\n };\n\n const evaluationsView = evaluations?.map((exp, i) => {\n const selected = selectedEvaluation === i;\n return (\n setSelectedEvaluation(i)}\n // onMouseOver={() => setSelectedEvaluation(i)}\n className={`text-primary p-1 px-2 rounded border ${\n selected ? \"border-accent \" : \" border-transparent\"\n }`}\n key={\"evaluationsrow\" + i}\n >\n
        \n
        \n
        \n {\" \"}\n {getStarRating(exp.score / 2)}{\" \"}\n {exp.dimension}\n
        \n
        \n
        \n
        \n
        \n \n \n );\n });\n return (\n
        \n fetchEvaluation()}\n role={\"button\"}\n className={`px-5 bg-accent duration-300 hover:brightness-110 text-white inline-block rounded p-2 ${\n loading ? \"opacity-50 pointer-events-none\" : \"\"\n } `}\n >\n {!loading && }\n {loading && } Evaluate\n the chart.\n
        \n {loading && (\n
        \n \n \n
        \n )}\n
        \n {evaluations && evaluations.length > 0 && (\n <>\n
        \n The visualization has been evaluated across multiple dimensions.\n Select a dimension to view rationale for the score{\" \"}\n
        \n
        \n
        \n {/*
        Evaluation Scores Radar Plot
        */}\n \n
        \n\n
        \n
        {evaluationsView}
        \n\n
        \n
        \n {evaluations[selectedEvaluation].dimension}{\" \"}\n
        \n
        \n \n {(evaluations[selectedEvaluation].score / 2).toFixed(1)}\n
        \n {\" \"}\n out of 5{\" \"}\n
        \n
        \n
        {evaluations[selectedEvaluation].rationale}
        \n
        \n
        \n
        \n\n {/* {evaluations && evaluations.length > 0 && (\n
        \n {evaluations[selectedEvaluation].rationale}\n
        \n )} */}\n
        \n \n )}\n \n\n {evaluations && evaluations.length > 0 && (\n
        \n {\" \"}\n repairChart()}\n role={\"button\"}\n className={`px-5 bg-accent duration-300 hover:brightness-110 text-white inline-block rounded p-2 ${\n loadingRepair ? \"opacity-50 pointer-events-none\" : \"\"\n } `}\n >\n {!loadingRepair && (\n <>\n {\" \"}\n {\" \"}\n Auto Repair Chart.\n \n )}\n {loadingRepair && (\n <>\n \n Repairing Chart ..{\" \"}\n \n )}{\" \"}\n
        \n \n )}\n \n );\n};\nexport default ChartEvaluator;\n","import * as React from \"react\";\nimport { ChatBubbleOvalLeftEllipsisIcon } from \"@heroicons/react/24/outline\";\nimport { IStatus, IVizConfig } from \"../../types\";\nimport { Skeleton, message } from \"antd\";\nimport { fetchJSON, scrollToElement } from \"../../utils\";\nimport { LoadBox } from \"../../atoms\";\nimport { CodeBlock } from \"./codeblock\";\n\nconst ChartRecommender = ({\n vizData,\n setVizData,\n vizConfig,\n}: {\n vizData: any;\n setVizData: React.Dispatch>;\n vizConfig: IVizConfig;\n}) => {\n const [loading, setLoading] = React.useState(false);\n const [error, setError] = React.useState(null);\n const [recommendations, setRecommendations] = React.useState([]);\n const serverUrl = process.env.GATSBY_API_URL;\n\n const recommendationsDivRef = React.useRef(null);\n\n React.useEffect(() => {\n setRecommendations([]);\n }, [vizData]);\n\n const fetchRecommendation = () => {\n setError(null);\n setLoading(true);\n setRecommendations([]);\n setTimeout(() => {\n scrollToElement(recommendationsDivRef);\n }, 600);\n\n const textgen_config = Object.assign({}, vizConfig.textgen_config);\n textgen_config.n = 3;\n textgen_config.temperature = 0.6;\n\n const payLoad = {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n code: vizData.code,\n library: vizConfig.library,\n summary: vizConfig.summary,\n textgen_config: textgen_config,\n }),\n };\n // console.log(config.goal);\n\n const onSuccess = (data: any) => {\n if (data && data.status) {\n // setVizspecs(data.charts);\n console.log(\"Recomendation data\", data);\n setRecommendations(data.charts);\n message.success(data.message);\n setTimeout(() => {\n scrollToElement(recommendationsDivRef);\n }, 400);\n } else {\n message.error(data.message);\n setError(data);\n }\n setLoading(false);\n };\n const onError = (err: any) => {\n message.error(err.message);\n setLoading(false);\n setError(err);\n };\n fetchJSON(`${serverUrl}/visualize/recommend`, payLoad, onSuccess, onError);\n };\n\n const recommendationsView = recommendations?.map((exp, i) => {\n const isAccessibility = exp.section === \"accessibility\";\n return (\n
        \n
        {exp.section}
        \n
        \n
        \n \n
        \n {!isAccessibility && (\n
        \n \n
        \n )}\n
        \n
        \n );\n });\n return (\n
        \n fetchRecommendation()}\n role={\"button\"}\n className={`px-5 bg-accent duration-300 hover:brightness-110 text-white inline-block rounded p-2 ${\n loading ? \"opacity-50 pointer-events-none\" : \"\"\n } `}\n >\n {!loading && (\n \n )}\n {loading && } Generate\n Recommendations\n
        \n\n {/* {loading && (\n \n {\" \"}\n loading recommendations\n \n )} */}\n\n {loading && (\n
        \n \n \n
        \n )}\n\n
        \n {recommendationsView}\n
        \n \n );\n};\nexport default ChartRecommender;\n","import {\n AcademicCapIcon,\n ArchiveBoxXMarkIcon,\n ChatBubbleLeftEllipsisIcon,\n ChatBubbleOvalLeftEllipsisIcon,\n InformationCircleIcon,\n LightBulbIcon,\n} from \"@heroicons/react/24/outline\";\nimport { message, Tabs, TabsProps } from \"antd\";\nimport * as React from \"react\";\nimport { Vega } from \"react-vega\";\nimport { LoadBox } from \"../../atoms\";\nimport { IStatus, IVizConfig } from \"../../types\";\nimport { fetchJSON } from \"../../utils\";\nimport ChartRasterView from \"./chartraster\";\nimport CodeView from \"./codeview\";\nimport ChartExplainer from \"./chartexplainer\";\nimport ChartEvaluator from \"./chartevaluator\";\nimport ChartRecommender from \"./chartrecommender\";\n\nconst ChartView = ({\n vizspec,\n config,\n}: {\n vizspec: any;\n config: IVizConfig;\n}) => {\n const goal = config.goal;\n const serverUrl = process.env.GATSBY_API_URL;\n const [loadingRevision, setLoadingRevision] = React.useState(false);\n const [error, setError] = React.useState(null);\n const [commands, setCommands] = React.useState([]);\n // const [width, setWidth] = useState(300);\n\n const commandInputRef = React.useRef(null);\n const chartDivRef = React.useRef(null);\n\n const [vizData, setVizData] = React.useState(vizspec);\n\n const spec = vizData.spec;\n const raster = vizData.raster;\n\n if (spec) {\n delete spec.config;\n spec.width = 300;\n spec.height = 320;\n spec[\"actions\"] = false;\n\n if (!spec.data.url.includes(\"/api\")) {\n spec.data.url = serverUrl + spec.data.url;\n }\n if (spec.title?.subtitle) {\n delete spec.title.subtitle;\n }\n }\n\n const commandsView = commands.map((command: string, i: number) => {\n return (\n
        \n {command}\n
        \n );\n });\n\n const editVisualization = (command: string) => {\n setError(null);\n setLoadingRevision(true);\n let comms = Object.assign([], commands);\n comms.push(command);\n const payLoad = {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n summary: config.summary,\n instructions: comms,\n code: vizspec.code,\n library: config.library,\n textgen_config: config.textgen_config,\n }),\n };\n // console.log(config.goal);\n\n const onSuccess = (data: any) => {\n if (data && data.status) {\n // setVizspecs(data.charts);\n // console.log(\"Edited data\", data);\n setVizData(data.charts[0]);\n message.success(data.message);\n // setTimeout(() => {\n // scrollToElement(vizDivRef);\n // }, 1000);\n commandInputRef.current?.value && (commandInputRef.current.value = \"\");\n setCommands(comms);\n } else {\n message.error(data.message);\n setError(data);\n }\n setLoadingRevision(false);\n };\n const onError = (err: any) => {\n message.error(err.message);\n setLoadingRevision(false);\n setError(err);\n };\n fetchJSON(`${serverUrl}/visualize/edit`, payLoad, onSuccess, onError);\n };\n\n const tabItems: TabsProps[\"items\"] = [\n {\n key: \"1\",\n label: (\n
        \n {\" \"}\n \n Refine\n
        \n ),\n children: (\n
        \n
        \n Modify Chart with Natural Language commands.\n
        \n \n {\n if (e.key === \"Enter\") {\n // generate(commandInputRef.current?.value || \"\");\n editVisualization(commandInputRef.current?.value || \"\");\n }\n }}\n className=\"bg-white w-full text-gray-600 p-2 rounded\"\n placeholder=\"Change x axis label to Meters per Second\"\n type={\"input\"}\n />\n {loadingRevision && (\n \n {\" \"}\n \n \n )}\n {\n
        \n {error?.message}\n
        \n }\n
        \n
        \n {commands && commands.length > 0 && (\n
        \n {\n setCommands([]);\n }}\n className=\"text-right border inline-block p-1 rounded hover:border-accent hover:text-accent duration-300\"\n >\n {\" \"}\n Clear\n Chat History{\" \"}\n
        \n
        \n )}\n {commandsView}\n \n \n ),\n },\n {\n key: \"2\",\n label: (\n
        \n {\" \"}\n \n Explain\n
        \n ),\n children: (\n <>\n
        \n Use the explain visualization button below to generate an\n explanation for the chart.\n
        \n \n \n ),\n },\n {\n key: \"3\",\n label: (\n
        \n {\" \"}\n \n Evaluate\n
        \n ),\n children: (\n <>\n
        \n Use the evaluate visualization button below to generate\n self-evaluation scores for the chart.\n
        \n \n \n ),\n },\n {\n key: \"4\",\n label: (\n
        \n {\" \"}\n \n Recommend!\n
        \n ),\n children: (\n <>\n
        \n Generate similar charts.\n
        \n \n \n ),\n },\n ];\n\n return (\n
        \n
        \n
        {goal?.question}
        \n {goal?.rationale}{\" \"}\n {goal?.visualization && (\n
        {goal?.visualization}
        \n )}\n
        \n\n
        \n {spec && (\n
        \n \n
        \n )}\n {raster && (\n \n )}\n
        \n
        \n
        \n \n How was this visualization created? See the specifications and\n code below.\n
        \n \n
        \n
        \n
        \n\n \n
        \n );\n};\nexport default ChartView;\n","import { List, Empty } from \"antd\";\nimport * as React from \"react\";\nimport { IVizConfig } from \"../../types\";\nimport ChartView from \"./chartview\";\n\nconst VegaGalleryView = ({\n vizspecs,\n vizConfig,\n}: {\n vizspecs: any;\n vizConfig: IVizConfig;\n}) => {\n // const maxViz = 1;\n return (\n
        \n }}\n dataSource={vizspecs}\n renderItem={(vizspec: any, i: number) => (\n \n )}\n pagination={{\n pageSize: 1,\n size: \"small\",\n hideOnSinglePage: true,\n }}\n />\n
        \n );\n};\nexport default VegaGalleryView;\n","import {\n ChartPieIcon,\n Cog6ToothIcon,\n ExclamationCircleIcon,\n PaperAirplaneIcon,\n} from \"@heroicons/react/24/outline\";\nimport { Skeleton, message } from \"antd\";\nimport * as React from \"react\";\nimport { LaunchButton, LoadingBar } from \"../../../atoms\";\nimport { IStatus, IVizConfig } from \"../../../types\";\nimport { fetchJSON, scrollToElement } from \"../../../utils\";\nimport VegaGalleryView from \"../../chartview\";\n\nconst VizGenView = ({\n config,\n}: {\n config: {\n vizConfig: IVizConfig;\n setVizConfig: React.Dispatch>;\n };\n}) => {\n const serverUrl = process.env.GATSBY_API_URL;\n const { vizConfig, setVizConfig } = config;\n const [vizspecs, setVizspecs] = React.useState<[] | null>(null);\n const [error, setError] = React.useState(null);\n const [loading, setLoading] = React.useState(false);\n\n const promptInputRef = React.useRef(null);\n\n const vizDivRef = React.useRef(null);\n\n React.useEffect(() => {\n if (promptInputRef.current) {\n promptInputRef.current.value = vizConfig.goal?.question || \"\";\n }\n if (vizConfig.summary && vizConfig.goal) {\n // setTimeout(() => {\n // scrollToElement(vizDivRef);\n // }, 600);\n // fetchVisualization(vizConfig);\n }\n // console.log(\"Goal changed | library \", vizConfig.library);\n }, [vizConfig.goal]);\n\n React.useEffect(() => {\n if (vizConfig.summary && vizConfig.goal) {\n setTimeout(() => {\n scrollToElement(vizDivRef);\n }, 200);\n fetchVisualization(vizConfig);\n // console.log(\"library changed\", vizConfig.library);\n }\n }, [vizConfig.library, vizConfig.goal]);\n\n const fetchVisualization = (config: IVizConfig) => {\n // console.log(\"fetching visualization\");\n\n setError(null);\n setVizspecs(null);\n setLoading(true);\n const payLoad = {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n summary: config.summary,\n goal: config.goal,\n library: vizConfig.library,\n textgen_config: vizConfig.textgen_config,\n }),\n };\n // console.log(\"text gen config\", vizConfig.textgen_config);\n\n const onSuccess = (data: any) => {\n if (data && data.status) {\n setVizspecs(data.charts);\n // console.log(data);\n message.success(data.message);\n setTimeout(() => {\n scrollToElement(vizDivRef);\n }, 600);\n } else {\n message.error(data.message);\n setError(data);\n }\n setLoading(false);\n };\n const onError = (err: any) => {\n setError(err);\n message.error(err.message);\n setLoading(false);\n };\n fetchJSON(`${serverUrl}/visualize`, payLoad, onSuccess, onError);\n };\n\n return (\n
        \n {vizConfig.summary && (\n <>\n
        \n Visualization\n Generation\n
        \n
        \n Select a goal above or describe a new visualization goal to generate\n a visualization.\n
        \n \n {\n if (e.key === \"Enter\" && promptInputRef.current && !loading) {\n setVizConfig({\n ...vizConfig,\n goal: {\n index: 0,\n question: promptInputRef.current?.value,\n visualization: promptInputRef.current?.value,\n rationale: \" \",\n },\n });\n }\n }}\n />\n\n {\n if (promptInputRef.current) {\n setVizConfig({\n ...vizConfig,\n goal: {\n index: 0,\n question: promptInputRef.current?.value,\n visualization: promptInputRef.current?.value,\n rationale: \" \",\n },\n });\n }\n }}\n >\n
        \n {loading && (\n
        \n \n
        \n )}\n {!loading && (\n \n {\" \"}\n \n {/* */}\n Generate\n \n )}\n
        {\" \"}\n \n
        \n \n )}\n\n
        \n {loading && (\n <>\n \n <> Working on generating interesting visualizations\n \n \n \n )}\n {vizConfig.summary && vizConfig.goal && (\n
        \n {vizspecs && vizspecs.length > 0 && (\n
        \n \n
        \n )}\n
        \n )}\n {vizspecs && vizspecs.length === 0 && (\n
        \n {\" \"}\n \n No visualizations generated{\" \"}\n
        \n )}\n
        \n \n );\n};\nexport default VizGenView;\n","import { ArrowUpOnSquareIcon, InboxIcon } from \"@heroicons/react/24/outline\";\nimport { message, Skeleton, Upload, UploadProps } from \"antd\";\nimport * as React from \"react\";\nimport { IGoal, IStatus, IVizConfig } from \"../../../types\";\nimport { fetchJSON, scrollToElement } from \"../../../utils\";\nimport Icon from \"../../../icons\";\nimport SummaryView from \"./summary\";\nimport SamplesView from \"./samples\";\nimport GoalView from \"./goal\";\nimport VizGenView from \"./viz\";\n\nconst DatasetSelectorView = ({\n config,\n}: {\n config: {\n vizConfig: IVizConfig;\n setVizConfig: React.Dispatch>;\n error: IStatus | null;\n setError: React.Dispatch>;\n };\n}) => {\n const { vizConfig, setVizConfig, error, setError } = config;\n const serverUrl = process.env.GATSBY_API_URL;\n\n const [loadingGoals, setLoadingGoals] = React.useState(false);\n const [loadingSummary, setLoadingSummary] = React.useState(false);\n\n const [goals, setGoals] = React.useState(null);\n\n const summaryDivRef = React.useRef(null);\n const goalsDivRef = React.useRef(null);\n\n const { Dragger } = Upload;\n\n // console.log(vizConfig, \"************* upload ***********\");\n\n React.useEffect(() => {\n if (vizConfig.summary) {\n // console.log(\"summary fetched ....fetching goals\");\n fetchGoals(vizConfig.summary);\n setTimeout(() => {\n scrollToElement(summaryDivRef);\n }, 700);\n }\n }, [vizConfig.summary]);\n\n const resetStates = () => {\n // console.log(\"resetting states .. goal, summary, config\");\n setError(null);\n let config = Object.assign({}, vizConfig);\n config.goal = null;\n config.summary = null;\n setVizConfig(config);\n };\n\n const uploadFile = (file: any) => {\n resetStates();\n const formData = new FormData();\n formData.append(\"file\", file, file.name);\n const url = `${serverUrl}/summarize`;\n setLoadingSummary(true);\n fetch(url, {\n // Your POST endpoint\n method: \"POST\",\n body: formData,\n })\n .then(\n (response) => response.json() // if the response is a JSON object\n )\n .then((data) => {\n if (data.status) {\n setError(null);\n setLoadingSummary(false);\n // let config = Object.assign({}, vizConfig);\n // config.summary = data.summary;\n // config.goal = null;\n setVizConfig({\n ...vizConfig,\n summary: data.summary,\n goal: null,\n });\n } else {\n setError({ status: false, message: data.message });\n setLoadingSummary(false);\n }\n })\n .catch(\n (error) => {\n setLoadingSummary(false);\n console.log(error);\n setError({ status: false, message: error + \"\" });\n } // Handle the error response object\n );\n };\n\n const fetchGoals = (summary: any) => {\n const fetchGoalsUrl = `${serverUrl}/goal`;\n setError(null);\n setLoadingGoals(true);\n // const fetch;\n const payLoad = {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n summary: summary,\n n: 5,\n textgen_config: vizConfig.textgen_config,\n }),\n };\n\n const onSuccess = (data: any) => {\n if (data && data.status) {\n message.success(data.message);\n setVizConfig({\n ...vizConfig,\n goal: data.data[0],\n });\n setGoals(data.data);\n } else {\n message.error(data.message);\n }\n setLoadingGoals(false);\n };\n const onError = (err: any) => {\n console.log(err);\n setError(err);\n message.error(err.message);\n setLoadingGoals(false);\n };\n fetchJSON(fetchGoalsUrl, payLoad, onSuccess, onError);\n };\n\n const props: UploadProps = {\n name: \"file\",\n multiple: false,\n maxCount: 1,\n beforeUpload: (file) => {\n uploadFile(file);\n return false;\n },\n\n onChange(info) {\n const { status } = info.file;\n if (status === \"done\") {\n message.success(`${info.file.name} file uploaded successfully.`);\n // uploadFile(info.file);\n } else if (status === \"error\") {\n message.error(`${info.file.name} file upload failed.`);\n }\n },\n onDrop(e) {\n console.log(\"Dropped files\", e.dataTransfer.files);\n },\n };\n\n return (\n
        \n
        \n
        \n
        \n \n Ready?\n {\" \"}\n Upload a file to begin.{\" \"}\n
        \n\n \n

        \n \n

        \n

        \n Click or drag file to this area to upload\n

        \n

        \n Upload .json or .csv files to generate a visualization.\n

        \n
        \n
        \n\n \n {loadingSummary && (\n
        \n {\" \"}\n \n {\" \"}\n \n {\" \"}\n Uploading data, generating summary ..{\" \"}\n \n
        \n )}\n\n \n
        \n\n
        \n {loadingGoals && (\n
        \n {\" \"}\n \n {\" \"}\n \n {\" \"}\n Generating data exploration goals for the data ..{\" \"}\n \n
        \n )}\n
        \n \n
        \n\n {goals && (\n \n )}\n
        \n
        \n
        \n );\n};\nexport default DatasetSelectorView;\n","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"title\", \"titleId\"];\nimport * as React from \"react\";\nfunction AdjustmentsVerticalIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M6 13.5V3.75m0 9.75a1.5 1.5 0 010 3m0-3a1.5 1.5 0 000 3m0 3.75V16.5m12-3V3.75m0 9.75a1.5 1.5 0 010 3m0-3a1.5 1.5 0 000 3m0 3.75V16.5m-6-9V3.75m0 3.75a1.5 1.5 0 010 3m0-3a1.5 1.5 0 000 3m0 9.75V10.5\"\n }));\n}\nvar ForwardRef = React.forwardRef(AdjustmentsVerticalIcon);\nexport default ForwardRef;","import * as React from 'react';\nvar SliderContext = /*#__PURE__*/React.createContext({\n min: 0,\n max: 0,\n direction: 'ltr',\n step: 1,\n includedStart: 0,\n includedEnd: 0,\n tabIndex: 0,\n keyboard: true\n});\nexport default SliderContext;","export function getOffset(value, min, max) {\n return (value - min) / (max - min);\n}\nexport function getDirectionStyle(direction, value, min, max) {\n var offset = getOffset(value, min, max);\n var positionStyle = {};\n switch (direction) {\n case 'rtl':\n positionStyle.right = \"\".concat(offset * 100, \"%\");\n positionStyle.transform = 'translateX(50%)';\n break;\n case 'btt':\n positionStyle.bottom = \"\".concat(offset * 100, \"%\");\n positionStyle.transform = 'translateY(50%)';\n break;\n case 'ttb':\n positionStyle.top = \"\".concat(offset * 100, \"%\");\n positionStyle.transform = 'translateY(-50%)';\n break;\n default:\n positionStyle.left = \"\".concat(offset * 100, \"%\");\n positionStyle.transform = 'translateX(-50%)';\n break;\n }\n return positionStyle;\n}\n/** Return index value if is list or return value directly */\nexport function getIndex(value, index) {\n return Array.isArray(value) ? value[index] : value;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"value\", \"valueIndex\", \"onStartMove\", \"style\", \"render\", \"dragging\", \"onOffsetChange\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport SliderContext from '../context';\nimport { getDirectionStyle, getIndex } from '../util';\nvar Handle = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _classNames, _getIndex;\n var prefixCls = props.prefixCls,\n value = props.value,\n valueIndex = props.valueIndex,\n onStartMove = props.onStartMove,\n style = props.style,\n render = props.render,\n dragging = props.dragging,\n onOffsetChange = props.onOffsetChange,\n restProps = _objectWithoutProperties(props, _excluded);\n var _React$useContext = React.useContext(SliderContext),\n min = _React$useContext.min,\n max = _React$useContext.max,\n direction = _React$useContext.direction,\n disabled = _React$useContext.disabled,\n keyboard = _React$useContext.keyboard,\n range = _React$useContext.range,\n tabIndex = _React$useContext.tabIndex,\n ariaLabelForHandle = _React$useContext.ariaLabelForHandle,\n ariaLabelledByForHandle = _React$useContext.ariaLabelledByForHandle,\n ariaValueTextFormatterForHandle = _React$useContext.ariaValueTextFormatterForHandle;\n var handlePrefixCls = \"\".concat(prefixCls, \"-handle\");\n // ============================ Events ============================\n var onInternalStartMove = function onInternalStartMove(e) {\n if (!disabled) {\n onStartMove(e, valueIndex);\n }\n };\n // =========================== Keyboard ===========================\n var onKeyDown = function onKeyDown(e) {\n if (!disabled && keyboard) {\n var offset = null;\n // Change the value\n switch (e.which || e.keyCode) {\n case KeyCode.LEFT:\n offset = direction === 'ltr' || direction === 'btt' ? -1 : 1;\n break;\n case KeyCode.RIGHT:\n offset = direction === 'ltr' || direction === 'btt' ? 1 : -1;\n break;\n // Up is plus\n case KeyCode.UP:\n offset = direction !== 'ttb' ? 1 : -1;\n break;\n // Down is minus\n case KeyCode.DOWN:\n offset = direction !== 'ttb' ? -1 : 1;\n break;\n case KeyCode.HOME:\n offset = 'min';\n break;\n case KeyCode.END:\n offset = 'max';\n break;\n case KeyCode.PAGE_UP:\n offset = 2;\n break;\n case KeyCode.PAGE_DOWN:\n offset = -2;\n break;\n }\n if (offset !== null) {\n e.preventDefault();\n onOffsetChange(offset, valueIndex);\n }\n }\n };\n // ============================ Offset ============================\n var positionStyle = getDirectionStyle(direction, value, min, max);\n // ============================ Render ============================\n var handleNode = /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: ref,\n className: classNames(handlePrefixCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(handlePrefixCls, \"-\").concat(valueIndex + 1), range), _defineProperty(_classNames, \"\".concat(handlePrefixCls, \"-dragging\"), dragging), _classNames)),\n style: _objectSpread(_objectSpread({}, positionStyle), style),\n onMouseDown: onInternalStartMove,\n onTouchStart: onInternalStartMove,\n onKeyDown: onKeyDown,\n tabIndex: disabled ? null : getIndex(tabIndex, valueIndex),\n role: \"slider\",\n \"aria-valuemin\": min,\n \"aria-valuemax\": max,\n \"aria-valuenow\": value,\n \"aria-disabled\": disabled,\n \"aria-label\": getIndex(ariaLabelForHandle, valueIndex),\n \"aria-labelledby\": getIndex(ariaLabelledByForHandle, valueIndex),\n \"aria-valuetext\": (_getIndex = getIndex(ariaValueTextFormatterForHandle, valueIndex)) === null || _getIndex === void 0 ? void 0 : _getIndex(value)\n }, restProps));\n // Customize\n if (render) {\n handleNode = render(handleNode, {\n index: valueIndex,\n prefixCls: prefixCls,\n value: value,\n dragging: dragging\n });\n }\n return handleNode;\n});\nif (process.env.NODE_ENV !== 'production') {\n Handle.displayName = 'Handle';\n}\nexport default Handle;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"style\", \"onStartMove\", \"onOffsetChange\", \"values\", \"handleRender\", \"draggingIndex\"];\nimport * as React from 'react';\nimport Handle from './Handle';\nimport { getIndex } from '../util';\nvar Handles = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var prefixCls = props.prefixCls,\n style = props.style,\n onStartMove = props.onStartMove,\n onOffsetChange = props.onOffsetChange,\n values = props.values,\n handleRender = props.handleRender,\n draggingIndex = props.draggingIndex,\n restProps = _objectWithoutProperties(props, _excluded);\n var handlesRef = React.useRef({});\n React.useImperativeHandle(ref, function () {\n return {\n focus: function focus(index) {\n var _handlesRef$current$i;\n (_handlesRef$current$i = handlesRef.current[index]) === null || _handlesRef$current$i === void 0 ? void 0 : _handlesRef$current$i.focus();\n }\n };\n });\n return /*#__PURE__*/React.createElement(React.Fragment, null, values.map(function (value, index) {\n return /*#__PURE__*/React.createElement(Handle, _extends({\n ref: function ref(node) {\n if (!node) {\n delete handlesRef.current[index];\n } else {\n handlesRef.current[index] = node;\n }\n },\n dragging: draggingIndex === index,\n prefixCls: prefixCls,\n style: getIndex(style, index),\n key: index,\n value: value,\n valueIndex: index,\n onStartMove: onStartMove,\n onOffsetChange: onOffsetChange,\n render: handleRender\n }, restProps));\n }));\n});\nif (process.env.NODE_ENV !== 'production') {\n Handles.displayName = 'Handles';\n}\nexport default Handles;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nfunction getPosition(e) {\n var obj = 'touches' in e ? e.touches[0] : e;\n return {\n pageX: obj.pageX,\n pageY: obj.pageY\n };\n}\nexport default function useDrag(containerRef, direction, rawValues, min, max, formatValue, triggerChange, finishChange, offsetValues) {\n var _React$useState = React.useState(null),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n draggingValue = _React$useState2[0],\n setDraggingValue = _React$useState2[1];\n var _React$useState3 = React.useState(-1),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n draggingIndex = _React$useState4[0],\n setDraggingIndex = _React$useState4[1];\n var _React$useState5 = React.useState(rawValues),\n _React$useState6 = _slicedToArray(_React$useState5, 2),\n cacheValues = _React$useState6[0],\n setCacheValues = _React$useState6[1];\n var _React$useState7 = React.useState(rawValues),\n _React$useState8 = _slicedToArray(_React$useState7, 2),\n originValues = _React$useState8[0],\n setOriginValues = _React$useState8[1];\n var mouseMoveEventRef = React.useRef(null);\n var mouseUpEventRef = React.useRef(null);\n React.useEffect(function () {\n if (draggingIndex === -1) {\n setCacheValues(rawValues);\n }\n }, [rawValues, draggingIndex]);\n // Clean up event\n React.useEffect(function () {\n return function () {\n document.removeEventListener('mousemove', mouseMoveEventRef.current);\n document.removeEventListener('mouseup', mouseUpEventRef.current);\n document.removeEventListener('touchmove', mouseMoveEventRef.current);\n document.removeEventListener('touchend', mouseUpEventRef.current);\n };\n }, []);\n var flushValues = function flushValues(nextValues, nextValue) {\n // Perf: Only update state when value changed\n if (cacheValues.some(function (val, i) {\n return val !== nextValues[i];\n })) {\n if (nextValue !== undefined) {\n setDraggingValue(nextValue);\n }\n setCacheValues(nextValues);\n triggerChange(nextValues);\n }\n };\n var updateCacheValue = function updateCacheValue(valueIndex, offsetPercent) {\n // Basic point offset\n if (valueIndex === -1) {\n // >>>> Dragging on the track\n var startValue = originValues[0];\n var endValue = originValues[originValues.length - 1];\n var maxStartOffset = min - startValue;\n var maxEndOffset = max - endValue;\n // Get valid offset\n var offset = offsetPercent * (max - min);\n offset = Math.max(offset, maxStartOffset);\n offset = Math.min(offset, maxEndOffset);\n // Use first value to revert back of valid offset (like steps marks)\n var formatStartValue = formatValue(startValue + offset);\n offset = formatStartValue - startValue;\n var cloneCacheValues = originValues.map(function (val) {\n return val + offset;\n });\n flushValues(cloneCacheValues);\n } else {\n // >>>> Dragging on the handle\n var offsetDist = (max - min) * offsetPercent;\n // Always start with the valueIndex origin value\n var cloneValues = _toConsumableArray(cacheValues);\n cloneValues[valueIndex] = originValues[valueIndex];\n var next = offsetValues(cloneValues, offsetDist, valueIndex, 'dist');\n flushValues(next.values, next.value);\n }\n };\n // Resolve closure\n var updateCacheValueRef = React.useRef(updateCacheValue);\n updateCacheValueRef.current = updateCacheValue;\n var onStartMove = function onStartMove(e, valueIndex) {\n e.stopPropagation();\n var originValue = rawValues[valueIndex];\n setDraggingIndex(valueIndex);\n setDraggingValue(originValue);\n setOriginValues(rawValues);\n var _getPosition = getPosition(e),\n startX = _getPosition.pageX,\n startY = _getPosition.pageY;\n // Moving\n var onMouseMove = function onMouseMove(event) {\n event.preventDefault();\n var _getPosition2 = getPosition(event),\n moveX = _getPosition2.pageX,\n moveY = _getPosition2.pageY;\n var offsetX = moveX - startX;\n var offsetY = moveY - startY;\n var _containerRef$current = containerRef.current.getBoundingClientRect(),\n width = _containerRef$current.width,\n height = _containerRef$current.height;\n var offSetPercent;\n switch (direction) {\n case 'btt':\n offSetPercent = -offsetY / height;\n break;\n case 'ttb':\n offSetPercent = offsetY / height;\n break;\n case 'rtl':\n offSetPercent = -offsetX / width;\n break;\n default:\n offSetPercent = offsetX / width;\n }\n updateCacheValueRef.current(valueIndex, offSetPercent);\n };\n // End\n var onMouseUp = function onMouseUp(event) {\n event.preventDefault();\n document.removeEventListener('mouseup', onMouseUp);\n document.removeEventListener('mousemove', onMouseMove);\n document.removeEventListener('touchend', onMouseUp);\n document.removeEventListener('touchmove', onMouseMove);\n mouseMoveEventRef.current = null;\n mouseUpEventRef.current = null;\n setDraggingIndex(-1);\n finishChange();\n };\n document.addEventListener('mouseup', onMouseUp);\n document.addEventListener('mousemove', onMouseMove);\n document.addEventListener('touchend', onMouseUp);\n document.addEventListener('touchmove', onMouseMove);\n mouseMoveEventRef.current = onMouseMove;\n mouseUpEventRef.current = onMouseUp;\n };\n // Only return cache value when it mapping with rawValues\n var returnValues = React.useMemo(function () {\n var sourceValues = _toConsumableArray(rawValues).sort(function (a, b) {\n return a - b;\n });\n var targetValues = _toConsumableArray(cacheValues).sort(function (a, b) {\n return a - b;\n });\n return sourceValues.every(function (val, index) {\n return val === targetValues[index];\n }) ? cacheValues : rawValues;\n }, [rawValues, cacheValues]);\n return [draggingIndex, draggingValue, returnValues, onStartMove];\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport SliderContext from '../context';\nimport { getOffset } from '../util';\nexport default function Track(props) {\n var prefixCls = props.prefixCls,\n style = props.style,\n start = props.start,\n end = props.end,\n index = props.index,\n onStartMove = props.onStartMove;\n var _React$useContext = React.useContext(SliderContext),\n direction = _React$useContext.direction,\n min = _React$useContext.min,\n max = _React$useContext.max,\n disabled = _React$useContext.disabled,\n range = _React$useContext.range;\n var trackPrefixCls = \"\".concat(prefixCls, \"-track\");\n var offsetStart = getOffset(start, min, max);\n var offsetEnd = getOffset(end, min, max);\n // ============================ Events ============================\n var onInternalStartMove = function onInternalStartMove(e) {\n if (!disabled && onStartMove) {\n onStartMove(e, -1);\n }\n };\n // ============================ Render ============================\n var positionStyle = {};\n switch (direction) {\n case 'rtl':\n positionStyle.right = \"\".concat(offsetStart * 100, \"%\");\n positionStyle.width = \"\".concat(offsetEnd * 100 - offsetStart * 100, \"%\");\n break;\n case 'btt':\n positionStyle.bottom = \"\".concat(offsetStart * 100, \"%\");\n positionStyle.height = \"\".concat(offsetEnd * 100 - offsetStart * 100, \"%\");\n break;\n case 'ttb':\n positionStyle.top = \"\".concat(offsetStart * 100, \"%\");\n positionStyle.height = \"\".concat(offsetEnd * 100 - offsetStart * 100, \"%\");\n break;\n default:\n positionStyle.left = \"\".concat(offsetStart * 100, \"%\");\n positionStyle.width = \"\".concat(offsetEnd * 100 - offsetStart * 100, \"%\");\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(trackPrefixCls, range && \"\".concat(trackPrefixCls, \"-\").concat(index + 1)),\n style: _objectSpread(_objectSpread({}, positionStyle), style),\n onMouseDown: onInternalStartMove,\n onTouchStart: onInternalStartMove\n });\n}","import * as React from 'react';\nimport SliderContext from '../context';\nimport Track from './Track';\nimport { getIndex } from '../util';\nexport default function Tracks(props) {\n var prefixCls = props.prefixCls,\n style = props.style,\n values = props.values,\n startPoint = props.startPoint,\n onStartMove = props.onStartMove;\n var _React$useContext = React.useContext(SliderContext),\n included = _React$useContext.included,\n range = _React$useContext.range,\n min = _React$useContext.min;\n var trackList = React.useMemo(function () {\n if (!range) {\n // null value do not have track\n if (values.length === 0) {\n return [];\n }\n var startValue = startPoint !== null && startPoint !== void 0 ? startPoint : min;\n var endValue = values[0];\n return [{\n start: Math.min(startValue, endValue),\n end: Math.max(startValue, endValue)\n }];\n }\n // Multiple\n var list = [];\n for (var i = 0; i < values.length - 1; i += 1) {\n list.push({\n start: values[i],\n end: values[i + 1]\n });\n }\n return list;\n }, [values, range, startPoint, min]);\n return included ? trackList.map(function (_ref, index) {\n var start = _ref.start,\n end = _ref.end;\n return /*#__PURE__*/React.createElement(Track, {\n index: index,\n prefixCls: prefixCls,\n style: getIndex(style, index),\n start: start,\n end: end,\n key: index,\n onStartMove: onStartMove\n });\n }) : null;\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { getDirectionStyle } from '../util';\nimport SliderContext from '../context';\nexport default function Mark(props) {\n var prefixCls = props.prefixCls,\n style = props.style,\n children = props.children,\n value = props.value,\n _onClick = props.onClick;\n var _React$useContext = React.useContext(SliderContext),\n min = _React$useContext.min,\n max = _React$useContext.max,\n direction = _React$useContext.direction,\n includedStart = _React$useContext.includedStart,\n includedEnd = _React$useContext.includedEnd,\n included = _React$useContext.included;\n var textCls = \"\".concat(prefixCls, \"-text\");\n // ============================ Offset ============================\n var positionStyle = getDirectionStyle(direction, value, min, max);\n return /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(textCls, _defineProperty({}, \"\".concat(textCls, \"-active\"), included && includedStart <= value && value <= includedEnd)),\n style: _objectSpread(_objectSpread({}, positionStyle), style),\n onMouseDown: function onMouseDown(e) {\n e.stopPropagation();\n },\n onClick: function onClick() {\n _onClick(value);\n }\n }, children);\n}","import * as React from 'react';\nimport Mark from './Mark';\nexport default function Marks(props) {\n var prefixCls = props.prefixCls,\n marks = props.marks,\n onClick = props.onClick;\n var markPrefixCls = \"\".concat(prefixCls, \"-mark\");\n // Not render mark if empty\n if (!marks.length) {\n return null;\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n className: markPrefixCls\n }, marks.map(function (_ref) {\n var value = _ref.value,\n style = _ref.style,\n label = _ref.label;\n return /*#__PURE__*/React.createElement(Mark, {\n key: value,\n prefixCls: markPrefixCls,\n style: style,\n value: value,\n onClick: onClick\n }, label);\n }));\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { getDirectionStyle } from '../util';\nimport SliderContext from '../context';\nexport default function Dot(props) {\n var prefixCls = props.prefixCls,\n value = props.value,\n style = props.style,\n activeStyle = props.activeStyle;\n var _React$useContext = React.useContext(SliderContext),\n min = _React$useContext.min,\n max = _React$useContext.max,\n direction = _React$useContext.direction,\n included = _React$useContext.included,\n includedStart = _React$useContext.includedStart,\n includedEnd = _React$useContext.includedEnd;\n var dotClassName = \"\".concat(prefixCls, \"-dot\");\n var active = included && includedStart <= value && value <= includedEnd;\n // ============================ Offset ============================\n var mergedStyle = _objectSpread(_objectSpread({}, getDirectionStyle(direction, value, min, max)), typeof style === 'function' ? style(value) : style);\n if (active) {\n mergedStyle = _objectSpread(_objectSpread({}, mergedStyle), typeof activeStyle === 'function' ? activeStyle(value) : activeStyle);\n }\n return /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(dotClassName, _defineProperty({}, \"\".concat(dotClassName, \"-active\"), active)),\n style: mergedStyle\n });\n}","import * as React from 'react';\nimport SliderContext from '../context';\nimport Dot from './Dot';\nexport default function Steps(props) {\n var prefixCls = props.prefixCls,\n marks = props.marks,\n dots = props.dots,\n style = props.style,\n activeStyle = props.activeStyle;\n var _React$useContext = React.useContext(SliderContext),\n min = _React$useContext.min,\n max = _React$useContext.max,\n step = _React$useContext.step;\n var stepDots = React.useMemo(function () {\n var dotSet = new Set();\n // Add marks\n marks.forEach(function (mark) {\n dotSet.add(mark.value);\n });\n // Fill dots\n if (dots && step !== null) {\n var current = min;\n while (current <= max) {\n dotSet.add(current);\n current += step;\n }\n }\n return Array.from(dotSet);\n }, [min, max, step, dots, marks]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-step\")\n }, stepDots.map(function (dotValue) {\n return /*#__PURE__*/React.createElement(Dot, {\n prefixCls: prefixCls,\n key: dotValue,\n value: dotValue,\n style: style,\n activeStyle: activeStyle\n });\n }));\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport isEqual from \"rc-util/es/isEqual\";\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport Handles from './Handles';\nimport useDrag from './hooks/useDrag';\nimport SliderContext from './context';\nimport Tracks from './Tracks';\nimport Marks from './Marks';\nimport Steps from './Steps';\nimport useOffset from './hooks/useOffset';\nimport warning from \"rc-util/es/warning\";\nvar Slider = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _classNames;\n var _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-slider' : _props$prefixCls,\n className = props.className,\n style = props.style,\n _props$disabled = props.disabled,\n disabled = _props$disabled === void 0 ? false : _props$disabled,\n _props$keyboard = props.keyboard,\n keyboard = _props$keyboard === void 0 ? true : _props$keyboard,\n autoFocus = props.autoFocus,\n onFocus = props.onFocus,\n onBlur = props.onBlur,\n _props$min = props.min,\n min = _props$min === void 0 ? 0 : _props$min,\n _props$max = props.max,\n max = _props$max === void 0 ? 100 : _props$max,\n _props$step = props.step,\n step = _props$step === void 0 ? 1 : _props$step,\n value = props.value,\n defaultValue = props.defaultValue,\n range = props.range,\n count = props.count,\n onChange = props.onChange,\n onBeforeChange = props.onBeforeChange,\n onAfterChange = props.onAfterChange,\n _props$allowCross = props.allowCross,\n allowCross = _props$allowCross === void 0 ? true : _props$allowCross,\n _props$pushable = props.pushable,\n pushable = _props$pushable === void 0 ? false : _props$pushable,\n draggableTrack = props.draggableTrack,\n reverse = props.reverse,\n vertical = props.vertical,\n _props$included = props.included,\n included = _props$included === void 0 ? true : _props$included,\n startPoint = props.startPoint,\n trackStyle = props.trackStyle,\n handleStyle = props.handleStyle,\n railStyle = props.railStyle,\n dotStyle = props.dotStyle,\n activeDotStyle = props.activeDotStyle,\n marks = props.marks,\n dots = props.dots,\n handleRender = props.handleRender,\n _props$tabIndex = props.tabIndex,\n tabIndex = _props$tabIndex === void 0 ? 0 : _props$tabIndex,\n ariaLabelForHandle = props.ariaLabelForHandle,\n ariaLabelledByForHandle = props.ariaLabelledByForHandle,\n ariaValueTextFormatterForHandle = props.ariaValueTextFormatterForHandle;\n var handlesRef = React.useRef();\n var containerRef = React.useRef();\n var direction = React.useMemo(function () {\n if (vertical) {\n return reverse ? 'ttb' : 'btt';\n }\n return reverse ? 'rtl' : 'ltr';\n }, [reverse, vertical]);\n // ============================ Range =============================\n var mergedMin = React.useMemo(function () {\n return isFinite(min) ? min : 0;\n }, [min]);\n var mergedMax = React.useMemo(function () {\n return isFinite(max) ? max : 100;\n }, [max]);\n // ============================= Step =============================\n var mergedStep = React.useMemo(function () {\n return step !== null && step <= 0 ? 1 : step;\n }, [step]);\n // ============================= Push =============================\n var mergedPush = React.useMemo(function () {\n if (pushable === true) {\n return mergedStep;\n }\n return pushable >= 0 ? pushable : false;\n }, [pushable, mergedStep]);\n // ============================ Marks =============================\n var markList = React.useMemo(function () {\n var keys = Object.keys(marks || {});\n return keys.map(function (key) {\n var mark = marks[key];\n var markObj = {\n value: Number(key)\n };\n if (mark && _typeof(mark) === 'object' && ! /*#__PURE__*/React.isValidElement(mark) && ('label' in mark || 'style' in mark)) {\n markObj.style = mark.style;\n markObj.label = mark.label;\n } else {\n markObj.label = mark;\n }\n return markObj;\n }).filter(function (_ref) {\n var label = _ref.label;\n return label || typeof label === 'number';\n }).sort(function (a, b) {\n return a.value - b.value;\n });\n }, [marks]);\n // ============================ Format ============================\n var _useOffset = useOffset(mergedMin, mergedMax, mergedStep, markList, allowCross, mergedPush),\n _useOffset2 = _slicedToArray(_useOffset, 2),\n formatValue = _useOffset2[0],\n offsetValues = _useOffset2[1];\n // ============================ Values ============================\n var _useMergedState = useMergedState(defaultValue, {\n value: value\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n mergedValue = _useMergedState2[0],\n setValue = _useMergedState2[1];\n var rawValues = React.useMemo(function () {\n var valueList = mergedValue === null || mergedValue === undefined ? [] : Array.isArray(mergedValue) ? mergedValue : [mergedValue];\n var _valueList = _slicedToArray(valueList, 1),\n _valueList$ = _valueList[0],\n val0 = _valueList$ === void 0 ? mergedMin : _valueList$;\n var returnValues = mergedValue === null ? [] : [val0];\n // Format as range\n if (range) {\n returnValues = _toConsumableArray(valueList);\n // When count provided or value is `undefined`, we fill values\n if (count || mergedValue === undefined) {\n var pointCount = count >= 0 ? count + 1 : 2;\n returnValues = returnValues.slice(0, pointCount);\n // Fill with count\n while (returnValues.length < pointCount) {\n var _returnValues;\n returnValues.push((_returnValues = returnValues[returnValues.length - 1]) !== null && _returnValues !== void 0 ? _returnValues : mergedMin);\n }\n }\n returnValues.sort(function (a, b) {\n return a - b;\n });\n }\n // Align in range\n returnValues.forEach(function (val, index) {\n returnValues[index] = formatValue(val);\n });\n return returnValues;\n }, [mergedValue, range, mergedMin, count, formatValue]);\n // =========================== onChange ===========================\n var rawValuesRef = React.useRef(rawValues);\n rawValuesRef.current = rawValues;\n var getTriggerValue = function getTriggerValue(triggerValues) {\n return range ? triggerValues : triggerValues[0];\n };\n var triggerChange = function triggerChange(nextValues) {\n // Order first\n var cloneNextValues = _toConsumableArray(nextValues).sort(function (a, b) {\n return a - b;\n });\n // Trigger event if needed\n if (onChange && !isEqual(cloneNextValues, rawValuesRef.current, true)) {\n onChange(getTriggerValue(cloneNextValues));\n }\n // We set this later since it will re-render component immediately\n setValue(cloneNextValues);\n };\n var changeToCloseValue = function changeToCloseValue(newValue) {\n if (!disabled) {\n var valueIndex = 0;\n var valueDist = mergedMax - mergedMin;\n rawValues.forEach(function (val, index) {\n var dist = Math.abs(newValue - val);\n if (dist <= valueDist) {\n valueDist = dist;\n valueIndex = index;\n }\n });\n // Create new values\n var cloneNextValues = _toConsumableArray(rawValues);\n cloneNextValues[valueIndex] = newValue;\n // Fill value to match default 2\n if (range && !rawValues.length && count === undefined) {\n cloneNextValues.push(newValue);\n }\n onBeforeChange === null || onBeforeChange === void 0 ? void 0 : onBeforeChange(getTriggerValue(cloneNextValues));\n triggerChange(cloneNextValues);\n onAfterChange === null || onAfterChange === void 0 ? void 0 : onAfterChange(getTriggerValue(cloneNextValues));\n }\n };\n // ============================ Click =============================\n var onSliderMouseDown = function onSliderMouseDown(e) {\n e.preventDefault();\n var _containerRef$current = containerRef.current.getBoundingClientRect(),\n width = _containerRef$current.width,\n height = _containerRef$current.height,\n left = _containerRef$current.left,\n top = _containerRef$current.top,\n bottom = _containerRef$current.bottom,\n right = _containerRef$current.right;\n var clientX = e.clientX,\n clientY = e.clientY;\n var percent;\n switch (direction) {\n case 'btt':\n percent = (bottom - clientY) / height;\n break;\n case 'ttb':\n percent = (clientY - top) / height;\n break;\n case 'rtl':\n percent = (right - clientX) / width;\n break;\n default:\n percent = (clientX - left) / width;\n }\n var nextValue = mergedMin + percent * (mergedMax - mergedMin);\n changeToCloseValue(formatValue(nextValue));\n };\n // =========================== Keyboard ===========================\n var _React$useState = React.useState(null),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n keyboardValue = _React$useState2[0],\n setKeyboardValue = _React$useState2[1];\n var onHandleOffsetChange = function onHandleOffsetChange(offset, valueIndex) {\n if (!disabled) {\n var next = offsetValues(rawValues, offset, valueIndex);\n onBeforeChange === null || onBeforeChange === void 0 ? void 0 : onBeforeChange(getTriggerValue(rawValues));\n triggerChange(next.values);\n onAfterChange === null || onAfterChange === void 0 ? void 0 : onAfterChange(getTriggerValue(next.values));\n setKeyboardValue(next.value);\n }\n };\n React.useEffect(function () {\n if (keyboardValue !== null) {\n var valueIndex = rawValues.indexOf(keyboardValue);\n if (valueIndex >= 0) {\n handlesRef.current.focus(valueIndex);\n }\n }\n setKeyboardValue(null);\n }, [keyboardValue]);\n // ============================= Drag =============================\n var mergedDraggableTrack = React.useMemo(function () {\n if (draggableTrack && mergedStep === null) {\n if (process.env.NODE_ENV !== 'production') {\n warning(false, '`draggableTrack` is not supported when `step` is `null`.');\n }\n return false;\n }\n return draggableTrack;\n }, [draggableTrack, mergedStep]);\n var finishChange = function finishChange() {\n onAfterChange === null || onAfterChange === void 0 ? void 0 : onAfterChange(getTriggerValue(rawValuesRef.current));\n };\n var _useDrag = useDrag(containerRef, direction, rawValues, mergedMin, mergedMax, formatValue, triggerChange, finishChange, offsetValues),\n _useDrag2 = _slicedToArray(_useDrag, 4),\n draggingIndex = _useDrag2[0],\n draggingValue = _useDrag2[1],\n cacheValues = _useDrag2[2],\n onStartDrag = _useDrag2[3];\n var onStartMove = function onStartMove(e, valueIndex) {\n onStartDrag(e, valueIndex);\n onBeforeChange === null || onBeforeChange === void 0 ? void 0 : onBeforeChange(getTriggerValue(rawValuesRef.current));\n };\n // Auto focus for updated handle\n var dragging = draggingIndex !== -1;\n React.useEffect(function () {\n if (!dragging) {\n var valueIndex = rawValues.lastIndexOf(draggingValue);\n handlesRef.current.focus(valueIndex);\n }\n }, [dragging]);\n // =========================== Included ===========================\n var sortedCacheValues = React.useMemo(function () {\n return _toConsumableArray(cacheValues).sort(function (a, b) {\n return a - b;\n });\n }, [cacheValues]);\n // Provide a range values with included [min, max]\n // Used for Track, Mark & Dot\n var _React$useMemo = React.useMemo(function () {\n if (!range) {\n return [mergedMin, sortedCacheValues[0]];\n }\n return [sortedCacheValues[0], sortedCacheValues[sortedCacheValues.length - 1]];\n }, [sortedCacheValues, range, mergedMin]),\n _React$useMemo2 = _slicedToArray(_React$useMemo, 2),\n includedStart = _React$useMemo2[0],\n includedEnd = _React$useMemo2[1];\n // ============================= Refs =============================\n React.useImperativeHandle(ref, function () {\n return {\n focus: function focus() {\n handlesRef.current.focus(0);\n },\n blur: function blur() {\n var _document = document,\n activeElement = _document.activeElement;\n if (containerRef.current.contains(activeElement)) {\n activeElement === null || activeElement === void 0 ? void 0 : activeElement.blur();\n }\n }\n };\n });\n // ========================== Auto Focus ==========================\n React.useEffect(function () {\n if (autoFocus) {\n handlesRef.current.focus(0);\n }\n }, []);\n // =========================== Context ============================\n var context = React.useMemo(function () {\n return {\n min: mergedMin,\n max: mergedMax,\n direction: direction,\n disabled: disabled,\n keyboard: keyboard,\n step: mergedStep,\n included: included,\n includedStart: includedStart,\n includedEnd: includedEnd,\n range: range,\n tabIndex: tabIndex,\n ariaLabelForHandle: ariaLabelForHandle,\n ariaLabelledByForHandle: ariaLabelledByForHandle,\n ariaValueTextFormatterForHandle: ariaValueTextFormatterForHandle\n };\n }, [mergedMin, mergedMax, direction, disabled, keyboard, mergedStep, included, includedStart, includedEnd, range, tabIndex, ariaLabelForHandle, ariaLabelledByForHandle, ariaValueTextFormatterForHandle]);\n // ============================ Render ============================\n return /*#__PURE__*/React.createElement(SliderContext.Provider, {\n value: context\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: containerRef,\n className: classNames(prefixCls, className, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-disabled\"), disabled), _defineProperty(_classNames, \"\".concat(prefixCls, \"-vertical\"), vertical), _defineProperty(_classNames, \"\".concat(prefixCls, \"-horizontal\"), !vertical), _defineProperty(_classNames, \"\".concat(prefixCls, \"-with-marks\"), markList.length), _classNames)),\n style: style,\n onMouseDown: onSliderMouseDown\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-rail\"),\n style: railStyle\n }), /*#__PURE__*/React.createElement(Tracks, {\n prefixCls: prefixCls,\n style: trackStyle,\n values: sortedCacheValues,\n startPoint: startPoint,\n onStartMove: mergedDraggableTrack ? onStartMove : null\n }), /*#__PURE__*/React.createElement(Steps, {\n prefixCls: prefixCls,\n marks: markList,\n dots: dots,\n style: dotStyle,\n activeStyle: activeDotStyle\n }), /*#__PURE__*/React.createElement(Handles, {\n ref: handlesRef,\n prefixCls: prefixCls,\n style: handleStyle,\n values: cacheValues,\n draggingIndex: draggingIndex,\n onStartMove: onStartMove,\n onOffsetChange: onHandleOffsetChange,\n onFocus: onFocus,\n onBlur: onBlur,\n handleRender: handleRender\n }), /*#__PURE__*/React.createElement(Marks, {\n prefixCls: prefixCls,\n marks: markList,\n onClick: changeToCloseValue\n })));\n});\nif (process.env.NODE_ENV !== 'production') {\n Slider.displayName = 'Slider';\n}\nexport default Slider;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport * as React from 'react';\nexport default function useOffset(min, max, step, markList, allowCross, pushable) {\n var formatRangeValue = React.useCallback(function (val) {\n var formatNextValue = isFinite(val) ? val : min;\n formatNextValue = Math.min(max, val);\n formatNextValue = Math.max(min, formatNextValue);\n return formatNextValue;\n }, [min, max]);\n var formatStepValue = React.useCallback(function (val) {\n if (step !== null) {\n var stepValue = min + Math.round((formatRangeValue(val) - min) / step) * step;\n // Cut number in case to be like 0.30000000000000004\n var getDecimal = function getDecimal(num) {\n return (String(num).split('.')[1] || '').length;\n };\n var maxDecimal = Math.max(getDecimal(step), getDecimal(max), getDecimal(min));\n var fixedValue = Number(stepValue.toFixed(maxDecimal));\n return min <= fixedValue && fixedValue <= max ? fixedValue : null;\n }\n return null;\n }, [step, min, max, formatRangeValue]);\n var formatValue = React.useCallback(function (val) {\n var formatNextValue = formatRangeValue(val);\n // List align values\n var alignValues = markList.map(function (mark) {\n return mark.value;\n });\n if (step !== null) {\n alignValues.push(formatStepValue(val));\n }\n // min & max\n alignValues.push(min, max);\n // Align with marks\n var closeValue = alignValues[0];\n var closeDist = max - min;\n alignValues.forEach(function (alignValue) {\n var dist = Math.abs(formatNextValue - alignValue);\n if (dist <= closeDist) {\n closeValue = alignValue;\n closeDist = dist;\n }\n });\n return closeValue;\n }, [min, max, markList, step, formatRangeValue, formatStepValue]);\n // ========================== Offset ==========================\n // Single Value\n var offsetValue = function offsetValue(values, offset, valueIndex) {\n var mode = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'unit';\n if (typeof offset === 'number') {\n var nextValue;\n var originValue = values[valueIndex];\n // Only used for `dist` mode\n var targetDistValue = originValue + offset;\n // Compare next step value & mark value which is best match\n var potentialValues = [];\n markList.forEach(function (mark) {\n potentialValues.push(mark.value);\n });\n // Min & Max\n potentialValues.push(min, max);\n // In case origin value is align with mark but not with step\n potentialValues.push(formatStepValue(originValue));\n // Put offset step value also\n var sign = offset > 0 ? 1 : -1;\n if (mode === 'unit') {\n potentialValues.push(formatStepValue(originValue + sign * step));\n } else {\n potentialValues.push(formatStepValue(targetDistValue));\n }\n // Find close one\n potentialValues = potentialValues.filter(function (val) {\n return val !== null;\n })\n // Remove reverse value\n .filter(function (val) {\n return offset < 0 ? val <= originValue : val >= originValue;\n });\n if (mode === 'unit') {\n // `unit` mode can not contain itself\n potentialValues = potentialValues.filter(function (val) {\n return val !== originValue;\n });\n }\n var compareValue = mode === 'unit' ? originValue : targetDistValue;\n nextValue = potentialValues[0];\n var valueDist = Math.abs(nextValue - compareValue);\n potentialValues.forEach(function (potentialValue) {\n var dist = Math.abs(potentialValue - compareValue);\n if (dist < valueDist) {\n nextValue = potentialValue;\n valueDist = dist;\n }\n });\n // Out of range will back to range\n if (nextValue === undefined) {\n return offset < 0 ? min : max;\n }\n // `dist` mode\n if (mode === 'dist') {\n return nextValue;\n }\n // `unit` mode may need another round\n if (Math.abs(offset) > 1) {\n var cloneValues = _toConsumableArray(values);\n cloneValues[valueIndex] = nextValue;\n return offsetValue(cloneValues, offset - sign, valueIndex, mode);\n }\n return nextValue;\n } else if (offset === 'min') {\n return min;\n } else if (offset === 'max') {\n return max;\n }\n };\n /** Same as `offsetValue` but return `changed` mark to tell value changed */\n var offsetChangedValue = function offsetChangedValue(values, offset, valueIndex) {\n var mode = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'unit';\n var originValue = values[valueIndex];\n var nextValue = offsetValue(values, offset, valueIndex, mode);\n return {\n value: nextValue,\n changed: nextValue !== originValue\n };\n };\n var needPush = function needPush(dist) {\n return pushable === null && dist === 0 || typeof pushable === 'number' && dist < pushable;\n };\n // Values\n var offsetValues = function offsetValues(values, offset, valueIndex) {\n var mode = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'unit';\n var nextValues = values.map(formatValue);\n var originValue = nextValues[valueIndex];\n var nextValue = offsetValue(nextValues, offset, valueIndex, mode);\n nextValues[valueIndex] = nextValue;\n if (allowCross === false) {\n // >>>>> Allow Cross\n var pushNum = pushable || 0;\n // ============ AllowCross ===============\n if (valueIndex > 0 && nextValues[valueIndex - 1] !== originValue) {\n nextValues[valueIndex] = Math.max(nextValues[valueIndex], nextValues[valueIndex - 1] + pushNum);\n }\n if (valueIndex < nextValues.length - 1 && nextValues[valueIndex + 1] !== originValue) {\n nextValues[valueIndex] = Math.min(nextValues[valueIndex], nextValues[valueIndex + 1] - pushNum);\n }\n } else if (typeof pushable === 'number' || pushable === null) {\n // >>>>> Pushable\n // =============== Push ==================\n // >>>>>> Basic push\n // End values\n for (var i = valueIndex + 1; i < nextValues.length; i += 1) {\n var changed = true;\n while (needPush(nextValues[i] - nextValues[i - 1]) && changed) {\n var _offsetChangedValue = offsetChangedValue(nextValues, 1, i);\n nextValues[i] = _offsetChangedValue.value;\n changed = _offsetChangedValue.changed;\n }\n }\n // Start values\n for (var _i = valueIndex; _i > 0; _i -= 1) {\n var _changed = true;\n while (needPush(nextValues[_i] - nextValues[_i - 1]) && _changed) {\n var _offsetChangedValue2 = offsetChangedValue(nextValues, -1, _i - 1);\n nextValues[_i - 1] = _offsetChangedValue2.value;\n _changed = _offsetChangedValue2.changed;\n }\n }\n // >>>>> Revert back to safe push range\n // End to Start\n for (var _i2 = nextValues.length - 1; _i2 > 0; _i2 -= 1) {\n var _changed2 = true;\n while (needPush(nextValues[_i2] - nextValues[_i2 - 1]) && _changed2) {\n var _offsetChangedValue3 = offsetChangedValue(nextValues, -1, _i2 - 1);\n nextValues[_i2 - 1] = _offsetChangedValue3.value;\n _changed2 = _offsetChangedValue3.changed;\n }\n }\n // Start to End\n for (var _i3 = 0; _i3 < nextValues.length - 1; _i3 += 1) {\n var _changed3 = true;\n while (needPush(nextValues[_i3 + 1] - nextValues[_i3]) && _changed3) {\n var _offsetChangedValue4 = offsetChangedValue(nextValues, 1, _i3 + 1);\n nextValues[_i3 + 1] = _offsetChangedValue4.value;\n _changed3 = _offsetChangedValue4.changed;\n }\n }\n }\n return {\n value: nextValues[valueIndex],\n values: nextValues\n };\n };\n return [formatValue, offsetValues];\n}","import Slider from './Slider';\nexport default Slider;","import raf from \"rc-util/es/raf\";\nimport { composeRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nimport { useRef } from 'react';\nimport Tooltip from '../tooltip';\nvar SliderTooltip = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var open = props.open;\n var innerRef = useRef(null);\n var rafRef = useRef(null);\n function cancelKeepAlign() {\n raf.cancel(rafRef.current);\n rafRef.current = null;\n }\n function keepAlign() {\n rafRef.current = raf(function () {\n var _a;\n (_a = innerRef.current) === null || _a === void 0 ? void 0 : _a.forceAlign();\n rafRef.current = null;\n });\n }\n React.useEffect(function () {\n if (open) {\n keepAlign();\n } else {\n cancelKeepAlign();\n }\n return cancelKeepAlign;\n }, [open, props.title]);\n return /*#__PURE__*/React.createElement(Tooltip, Object.assign({\n ref: composeRef(innerRef, ref)\n }, props));\n});\nif (process.env.NODE_ENV !== 'production') {\n SliderTooltip.displayName = 'SliderTooltip';\n}\nexport default SliderTooltip;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { TinyColor } from '@ctrl/tinycolor';\nimport { resetComponent } from '../../style';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\n// =============================== Base ===============================\nvar genBaseStyle = function genBaseStyle(token) {\n var _hover, _$concat, _$concat2, _Object$assign;\n var componentCls = token.componentCls,\n antCls = token.antCls,\n controlSize = token.controlSize,\n dotSize = token.dotSize,\n marginFull = token.marginFull,\n marginPart = token.marginPart,\n colorFillContentHover = token.colorFillContentHover;\n return _defineProperty({}, componentCls, Object.assign(Object.assign({}, resetComponent(token)), (_Object$assign = {\n position: 'relative',\n height: controlSize,\n margin: \"\".concat(marginPart, \"px \").concat(marginFull, \"px\"),\n padding: 0,\n cursor: 'pointer',\n touchAction: 'none'\n }, _defineProperty(_Object$assign, \"&-vertical\", {\n margin: \"\".concat(marginFull, \"px \").concat(marginPart, \"px\")\n }), _defineProperty(_Object$assign, \"\".concat(componentCls, \"-rail\"), {\n position: 'absolute',\n backgroundColor: token.railBg,\n borderRadius: token.borderRadiusXS,\n transition: \"background-color \".concat(token.motionDurationMid)\n }), _defineProperty(_Object$assign, \"\".concat(componentCls, \"-track\"), {\n position: 'absolute',\n backgroundColor: token.trackBg,\n borderRadius: token.borderRadiusXS,\n transition: \"background-color \".concat(token.motionDurationMid)\n }), _defineProperty(_Object$assign, '&:hover', (_hover = {}, _defineProperty(_hover, \"\".concat(componentCls, \"-rail\"), {\n backgroundColor: token.railHoverBg\n }), _defineProperty(_hover, \"\".concat(componentCls, \"-track\"), {\n backgroundColor: token.trackHoverBg\n }), _defineProperty(_hover, \"\".concat(componentCls, \"-dot\"), {\n borderColor: colorFillContentHover\n }), _defineProperty(_hover, \"\".concat(componentCls, \"-handle::after\"), {\n boxShadow: \"0 0 0 \".concat(token.handleLineWidth, \"px \").concat(token.colorPrimaryBorderHover)\n }), _defineProperty(_hover, \"\".concat(componentCls, \"-dot-active\"), {\n borderColor: token.dotActiveBorderColor\n }), _hover)), _defineProperty(_Object$assign, \"\".concat(componentCls, \"-handle\"), (_$concat = {\n position: 'absolute',\n width: token.handleSize,\n height: token.handleSize,\n outline: 'none'\n }, _defineProperty(_$concat, \"\".concat(componentCls, \"-dragging\"), {\n zIndex: 1\n }), _defineProperty(_$concat, '&::before', {\n content: '\"\"',\n position: 'absolute',\n insetInlineStart: -token.handleLineWidth,\n insetBlockStart: -token.handleLineWidth,\n width: token.handleSize + token.handleLineWidth * 2,\n height: token.handleSize + token.handleLineWidth * 2,\n backgroundColor: 'transparent'\n }), _defineProperty(_$concat, '&::after', {\n content: '\"\"',\n position: 'absolute',\n insetBlockStart: 0,\n insetInlineStart: 0,\n width: token.handleSize,\n height: token.handleSize,\n backgroundColor: token.colorBgElevated,\n boxShadow: \"0 0 0 \".concat(token.handleLineWidth, \"px \").concat(token.handleColor),\n borderRadius: '50%',\n cursor: 'pointer',\n transition: \"\\n inset-inline-start \".concat(token.motionDurationMid, \",\\n inset-block-start \").concat(token.motionDurationMid, \",\\n width \").concat(token.motionDurationMid, \",\\n height \").concat(token.motionDurationMid, \",\\n box-shadow \").concat(token.motionDurationMid, \"\\n \")\n }), _defineProperty(_$concat, '&:hover, &:active, &:focus', {\n '&::before': {\n insetInlineStart: -((token.handleSizeHover - token.handleSize) / 2 + token.handleLineWidthHover),\n insetBlockStart: -((token.handleSizeHover - token.handleSize) / 2 + token.handleLineWidthHover),\n width: token.handleSizeHover + token.handleLineWidthHover * 2,\n height: token.handleSizeHover + token.handleLineWidthHover * 2\n },\n '&::after': {\n boxShadow: \"0 0 0 \".concat(token.handleLineWidthHover, \"px \").concat(token.handleActiveColor),\n width: token.handleSizeHover,\n height: token.handleSizeHover,\n insetInlineStart: (token.handleSize - token.handleSizeHover) / 2,\n insetBlockStart: (token.handleSize - token.handleSizeHover) / 2\n }\n }), _$concat)), _defineProperty(_Object$assign, \"\".concat(componentCls, \"-mark\"), {\n position: 'absolute',\n fontSize: token.fontSize\n }), _defineProperty(_Object$assign, \"\".concat(componentCls, \"-mark-text\"), {\n position: 'absolute',\n display: 'inline-block',\n color: token.colorTextDescription,\n textAlign: 'center',\n wordBreak: 'keep-all',\n cursor: 'pointer',\n userSelect: 'none',\n '&-active': {\n color: token.colorText\n }\n }), _defineProperty(_Object$assign, \"\".concat(componentCls, \"-step\"), {\n position: 'absolute',\n background: 'transparent',\n pointerEvents: 'none'\n }), _defineProperty(_Object$assign, \"\".concat(componentCls, \"-dot\"), {\n position: 'absolute',\n width: dotSize,\n height: dotSize,\n backgroundColor: token.colorBgElevated,\n border: \"\".concat(token.handleLineWidth, \"px solid \").concat(token.dotBorderColor),\n borderRadius: '50%',\n cursor: 'pointer',\n transition: \"border-color \".concat(token.motionDurationSlow),\n pointerEvents: 'auto',\n '&-active': {\n borderColor: token.dotActiveBorderColor\n }\n }), _defineProperty(_Object$assign, \"&\".concat(componentCls, \"-disabled\"), (_$concat2 = {\n cursor: 'not-allowed'\n }, _defineProperty(_$concat2, \"\".concat(componentCls, \"-rail\"), {\n backgroundColor: \"\".concat(token.railBg, \" !important\")\n }), _defineProperty(_$concat2, \"\".concat(componentCls, \"-track\"), {\n backgroundColor: \"\".concat(token.trackBgDisabled, \" !important\")\n }), _defineProperty(_$concat2, \"\\n \".concat(componentCls, \"-dot\\n \"), {\n backgroundColor: token.colorBgElevated,\n borderColor: token.trackBgDisabled,\n boxShadow: 'none',\n cursor: 'not-allowed'\n }), _defineProperty(_$concat2, \"\".concat(componentCls, \"-handle::after\"), {\n backgroundColor: token.colorBgElevated,\n cursor: 'not-allowed',\n width: token.handleSize,\n height: token.handleSize,\n boxShadow: \"0 0 0 \".concat(token.handleLineWidth, \"px \").concat(new TinyColor(token.colorTextDisabled).onBackground(token.colorBgContainer).toHexShortString()),\n insetInlineStart: 0,\n insetBlockStart: 0\n }), _defineProperty(_$concat2, \"\\n \".concat(componentCls, \"-mark-text,\\n \").concat(componentCls, \"-dot\\n \"), {\n cursor: \"not-allowed !important\"\n }), _$concat2)), _defineProperty(_Object$assign, \"&-tooltip \".concat(antCls, \"-tooltip-inner\"), {\n minWidth: 'unset'\n }), _Object$assign)));\n};\n// ============================ Horizontal ============================\nvar genDirectionStyle = function genDirectionStyle(token, horizontal) {\n var _$concat3, _$concat6, _$concat7, _ref2;\n var componentCls = token.componentCls,\n railSize = token.railSize,\n handleSize = token.handleSize,\n dotSize = token.dotSize;\n var railPadding = horizontal ? 'paddingBlock' : 'paddingInline';\n var full = horizontal ? 'width' : 'height';\n var part = horizontal ? 'height' : 'width';\n var handlePos = horizontal ? 'insetBlockStart' : 'insetInlineStart';\n var markInset = horizontal ? 'top' : 'insetInlineStart';\n return _ref2 = {}, _defineProperty(_ref2, railPadding, railSize), _defineProperty(_ref2, part, railSize * 3), _defineProperty(_ref2, \"\".concat(componentCls, \"-rail\"), (_$concat3 = {}, _defineProperty(_$concat3, full, '100%'), _defineProperty(_$concat3, part, railSize), _$concat3)), _defineProperty(_ref2, \"\".concat(componentCls, \"-track\"), _defineProperty({}, part, railSize)), _defineProperty(_ref2, \"\".concat(componentCls, \"-handle\"), _defineProperty({}, handlePos, (railSize * 3 - handleSize) / 2)), _defineProperty(_ref2, \"\".concat(componentCls, \"-mark\"), (_$concat6 = {\n // Reset all\n insetInlineStart: 0,\n top: 0\n }, _defineProperty(_$concat6, markInset, railSize * 3 + (horizontal ? 0 : token.marginFull)), _defineProperty(_$concat6, full, '100%'), _$concat6)), _defineProperty(_ref2, \"\".concat(componentCls, \"-step\"), (_$concat7 = {\n // Reset all\n insetInlineStart: 0,\n top: 0\n }, _defineProperty(_$concat7, markInset, railSize), _defineProperty(_$concat7, full, '100%'), _defineProperty(_$concat7, part, railSize), _$concat7)), _defineProperty(_ref2, \"\".concat(componentCls, \"-dot\"), _defineProperty({\n position: 'absolute'\n }, handlePos, (railSize - dotSize) / 2)), _ref2;\n};\n// ============================ Horizontal ============================\nvar genHorizontalStyle = function genHorizontalStyle(token) {\n var componentCls = token.componentCls,\n marginPartWithMark = token.marginPartWithMark;\n return _defineProperty({}, \"\".concat(componentCls, \"-horizontal\"), Object.assign(Object.assign({}, genDirectionStyle(token, true)), _defineProperty({}, \"&\".concat(componentCls, \"-with-marks\"), {\n marginBottom: marginPartWithMark\n })));\n};\n// ============================= Vertical =============================\nvar genVerticalStyle = function genVerticalStyle(token) {\n var componentCls = token.componentCls;\n return _defineProperty({}, \"\".concat(componentCls, \"-vertical\"), Object.assign(Object.assign({}, genDirectionStyle(token, false)), {\n height: '100%'\n }));\n};\n// ============================== Export ==============================\nexport default genComponentStyleHook('Slider', function (token) {\n var sliderToken = mergeToken(token, {\n marginPart: (token.controlHeight - token.controlSize) / 2,\n marginFull: token.controlSize / 2,\n marginPartWithMark: token.controlHeightLG - token.controlSize\n });\n return [genBaseStyle(sliderToken), genHorizontalStyle(sliderToken), genVerticalStyle(sliderToken)];\n}, function (token) {\n // Handle line width is always width-er 1px\n var increaseHandleWidth = 1;\n var controlSize = token.controlHeightLG / 4;\n var controlSizeHover = token.controlHeightSM / 2;\n var handleLineWidth = token.lineWidth + increaseHandleWidth;\n var handleLineWidthHover = token.lineWidth + increaseHandleWidth * 3;\n return {\n controlSize: controlSize,\n railSize: 4,\n handleSize: controlSize,\n handleSizeHover: controlSizeHover,\n dotSize: 8,\n handleLineWidth: handleLineWidth,\n handleLineWidthHover: handleLineWidthHover,\n railBg: token.colorFillTertiary,\n railHoverBg: token.colorFillSecondary,\n trackBg: token.colorPrimaryBorder,\n trackHoverBg: token.colorPrimaryBorderHover,\n handleColor: token.colorPrimaryBorder,\n handleActiveColor: token.colorPrimary,\n dotBorderColor: token.colorBorderSecondary,\n dotActiveBorderColor: token.colorPrimaryBorder,\n trackBgDisabled: token.colorBgContainerDisabled\n };\n});","'use client';\n\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport RcSlider from 'rc-slider';\nimport React from 'react';\nimport warning from '../_util/warning';\nimport { ConfigContext } from '../config-provider';\nimport DisabledContext from '../config-provider/DisabledContext';\nimport SliderTooltip from './SliderTooltip';\nimport useStyle from './style';\nvar defaultFormatter = function defaultFormatter(val) {\n return typeof val === 'number' ? val.toString() : '';\n};\nvar Slider = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var customizePrefixCls = props.prefixCls,\n range = props.range,\n className = props.className,\n rootClassName = props.rootClassName,\n style = props.style,\n disabled = props.disabled,\n legacyTooltipPrefixCls = props.tooltipPrefixCls,\n legacyTipFormatter = props.tipFormatter,\n legacyTooltipVisible = props.tooltipVisible,\n legacyGetTooltipPopupContainer = props.getTooltipPopupContainer,\n legacyTooltipPlacement = props.tooltipPlacement,\n restProps = __rest(props, [\"prefixCls\", \"range\", \"className\", \"rootClassName\", \"style\", \"disabled\", \"tooltipPrefixCls\", \"tipFormatter\", \"tooltipVisible\", \"getTooltipPopupContainer\", \"tooltipPlacement\"]);\n var _React$useContext = React.useContext(ConfigContext),\n direction = _React$useContext.direction,\n slider = _React$useContext.slider,\n getPrefixCls = _React$useContext.getPrefixCls,\n getPopupContainer = _React$useContext.getPopupContainer;\n var contextDisabled = React.useContext(DisabledContext);\n var mergedDisabled = disabled !== null && disabled !== void 0 ? disabled : contextDisabled;\n var _React$useState = React.useState({}),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n opens = _React$useState2[0],\n setOpens = _React$useState2[1];\n var toggleTooltipOpen = function toggleTooltipOpen(index, open) {\n setOpens(function (prev) {\n return Object.assign(Object.assign({}, prev), _defineProperty({}, index, open));\n });\n };\n var getTooltipPlacement = function getTooltipPlacement(placement, vertical) {\n if (placement) {\n return placement;\n }\n if (!vertical) {\n return 'top';\n }\n return direction === 'rtl' ? 'left' : 'right';\n };\n var prefixCls = getPrefixCls('slider', customizePrefixCls);\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n var cls = classNames(className, slider === null || slider === void 0 ? void 0 : slider.className, rootClassName, _defineProperty({}, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), hashId);\n // make reverse default on rtl direction\n if (direction === 'rtl' && !restProps.vertical) {\n restProps.reverse = !restProps.reverse;\n }\n // Range config\n var _React$useMemo = React.useMemo(function () {\n if (!range) {\n return [false];\n }\n return typeof range === 'object' ? [true, range.draggableTrack] : [true, false];\n }, [range]),\n _React$useMemo2 = _slicedToArray(_React$useMemo, 2),\n mergedRange = _React$useMemo2[0],\n draggableTrack = _React$useMemo2[1];\n // Warning for deprecated usage\n if (process.env.NODE_ENV !== 'production') {\n [['tooltipPrefixCls', 'prefixCls'], ['getTooltipPopupContainer', 'getPopupContainer'], ['tipFormatter', 'formatter'], ['tooltipPlacement', 'placement'], ['tooltipVisible', 'open']].forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n deprecatedName = _ref2[0],\n newName = _ref2[1];\n process.env.NODE_ENV !== \"production\" ? warning(!(deprecatedName in props), 'Slider', \"`\".concat(deprecatedName, \"` is deprecated, please use `tooltip.\").concat(newName, \"` instead.\")) : void 0;\n });\n }\n var handleRender = function handleRender(node, info) {\n var _a;\n var index = info.index,\n dragging = info.dragging;\n var _props$tooltip = props.tooltip,\n tooltip = _props$tooltip === void 0 ? {} : _props$tooltip,\n vertical = props.vertical;\n var tooltipProps = Object.assign({}, tooltip);\n var tooltipOpen = tooltipProps.open,\n tooltipPlacement = tooltipProps.placement,\n getTooltipPopupContainer = tooltipProps.getPopupContainer,\n customizeTooltipPrefixCls = tooltipProps.prefixCls,\n tipFormatter = tooltipProps.formatter;\n var mergedTipFormatter;\n if (tipFormatter || tipFormatter === null) {\n mergedTipFormatter = tipFormatter;\n } else if (legacyTipFormatter || legacyTipFormatter === null) {\n mergedTipFormatter = legacyTipFormatter;\n } else {\n mergedTipFormatter = defaultFormatter;\n }\n var isTipFormatter = mergedTipFormatter ? opens[index] || dragging : false;\n var open = (_a = tooltipOpen !== null && tooltipOpen !== void 0 ? tooltipOpen : legacyTooltipVisible) !== null && _a !== void 0 ? _a : tooltipOpen === undefined && isTipFormatter;\n var passedProps = Object.assign(Object.assign({}, node.props), {\n onMouseEnter: function onMouseEnter() {\n return toggleTooltipOpen(index, true);\n },\n onMouseLeave: function onMouseLeave() {\n return toggleTooltipOpen(index, false);\n }\n });\n var tooltipPrefixCls = getPrefixCls('tooltip', customizeTooltipPrefixCls !== null && customizeTooltipPrefixCls !== void 0 ? customizeTooltipPrefixCls : legacyTooltipPrefixCls);\n return /*#__PURE__*/React.createElement(SliderTooltip, Object.assign({}, tooltipProps, {\n prefixCls: tooltipPrefixCls,\n title: mergedTipFormatter ? mergedTipFormatter(info.value) : '',\n open: open,\n placement: getTooltipPlacement(tooltipPlacement !== null && tooltipPlacement !== void 0 ? tooltipPlacement : legacyTooltipPlacement, vertical),\n key: index,\n overlayClassName: \"\".concat(prefixCls, \"-tooltip\"),\n getPopupContainer: getTooltipPopupContainer || legacyGetTooltipPopupContainer || getPopupContainer\n }), /*#__PURE__*/React.cloneElement(node, passedProps));\n };\n var mergedStyle = Object.assign(Object.assign({}, slider === null || slider === void 0 ? void 0 : slider.style), style);\n return wrapSSR( /*#__PURE__*/React.createElement(RcSlider, Object.assign({}, restProps, {\n step: restProps.step,\n range: mergedRange,\n draggableTrack: draggableTrack,\n className: cls,\n style: mergedStyle,\n disabled: mergedDisabled,\n ref: ref,\n prefixCls: prefixCls,\n handleRender: handleRender\n })));\n});\nif (process.env.NODE_ENV !== 'production') {\n Slider.displayName = 'Slider';\n}\nexport default Slider;","import {\n AdjustmentsVerticalIcon,\n Cog6ToothIcon,\n} from \"@heroicons/react/24/outline\";\nimport { Button, Checkbox, Input, Modal, Select, Slider } from \"antd\";\nimport * as React from \"react\";\nimport { SecondaryButton } from \"../../atoms\";\nimport { ITextGeneratorConfig, IVizConfig } from \"../../types\";\nimport { get, set } from \"lodash\";\n\nconst GeneratorControlsView = ({\n config,\n models,\n}: {\n config: {\n vizConfig: IVizConfig;\n setVizConfig: React.Dispatch>;\n };\n models: any;\n}) => {\n const [isModalVisible, setIsModalVisible] = React.useState(false);\n const [modelOptions, setModelOptions] = React.useState([]);\n const [selectedProvider, setSelectedProvider] = React.useState(0);\n const [selectedModel, setSelectedModel] = React.useState(0);\n\n const { vizConfig, setVizConfig } = config;\n const textgen_config = vizConfig.textgen_config;\n\n const providers = Object.keys(models);\n\n const provider_options = providers.map((provider: string, index: number) => {\n return { label: provider, value: provider, key: index };\n });\n\n const getOptions = (models: any) => {\n return (\n models?.models.map((model: any, index: number) => {\n let name = model.name;\n if (\n model &&\n model.model &&\n model.model.parameters &&\n model.model.parameters.model\n ) {\n name = model.model.parameters.model;\n }\n return {\n label: name,\n value: name,\n key: index,\n };\n }) || []\n );\n };\n const model_options = getOptions(models[providers[selectedProvider]]);\n // const model_options =\n // models[providers[selectedProvider]]?.models.map(\n // (model: any, index: number) => {\n // console.log(\"model\", model);\n // let name = model.name;\n // if (\n // model &&\n // model.model &&\n // model.model.parameters &&\n // model.model.parameters.model\n // ) {\n // console.log(\n // \"model.model.parameters.model\",\n // model.model.parameters.model\n // );\n // name = model.model.parameters.model;\n // }\n // return {\n // label: name,\n // value: name,\n // key: index,\n // };\n // }\n // ) || [];\n\n // console.log(\"model_options\", model_options);\n\n const selectedMaxTokens =\n models[providers[selectedProvider]].models[selectedModel]?.max_tokens;\n\n const ControlRowView = ({\n title,\n description,\n value,\n control,\n className,\n }: any) => {\n return (\n
        \n
        \n {title} \n \n {value}\n \n
        \n
        {description}
        \n {control}\n
        \n );\n };\n\n return (\n
        \n \n \n Generation Settings\n \n }\n open={isModalVisible}\n onCancel={() => {\n setIsModalVisible(false);\n }}\n onOk={() => {\n setIsModalVisible(false);\n }}\n >\n
        \n
        \n {\n setVizConfig({\n ...vizConfig,\n textgen_config: {\n ...textgen_config,\n provider: value.value,\n model: getOptions(models[value.value])[0].value,\n max_tokens: null,\n },\n });\n setSelectedProvider(value.key);\n console.log(\"selected model\", value);\n }}\n options={provider_options}\n />\n }\n />\n {\n setVizConfig({\n ...vizConfig,\n textgen_config: { ...textgen_config, model: value.value },\n });\n setSelectedModel(value.key);\n }}\n options={model_options}\n />\n }\n />\n
        \n
        \n {\n setVizConfig({\n ...vizConfig,\n textgen_config: { ...textgen_config, max_tokens: value },\n });\n }}\n />\n }\n />\n\n {\n setVizConfig({\n ...vizConfig,\n textgen_config: { ...textgen_config, temperature: value },\n });\n }}\n />\n }\n />\n\n {\n setVizConfig({\n ...vizConfig,\n textgen_config: { ...textgen_config, n: value },\n });\n }}\n />\n }\n />\n\n {\n setVizConfig({\n ...vizConfig,\n textgen_config: {\n ...textgen_config,\n presence_penalty: value,\n },\n });\n }}\n />\n }\n />\n\n {\n setVizConfig({\n ...vizConfig,\n textgen_config: {\n ...textgen_config,\n frequency_penalty: value,\n },\n });\n }}\n />\n }\n />\n
        \n
        \n\n

        \n {\" \"}\n Learn more about OpenAI model parameters{\" \"}\n \n here\n \n .\n

        \n \n\n
        \n {\" \"}\n
        \n
        \n {\" \"}\n Select a visualization library/grammar\n
        \n {\n setVizConfig({ ...vizConfig, library: value });\n }}\n options={[\n { label: \"Altair\", value: \"altair\" },\n { label: \"Matplotlib\", value: \"matplotlib\" },\n { label: \"Seaborn\", value: \"seaborn\" },\n { label: \"GGPlot\", value: \"ggplot\" },\n ]}\n />\n
        \n
        \n {\n setIsModalVisible(true);\n }}\n >\n \n Generation Settings{\" \"}\n \n
        \n Model: {textgen_config.model},\n n:\n {textgen_config.n}, number of\n Temperature:{\" \"}\n {textgen_config.temperature}{\" \"}\n ...\n
        \n
        \n
        \n
        \n );\n};\nexport default GeneratorControlsView;\n","import { ExclamationCircleIcon } from \"@heroicons/react/24/outline\";\nimport { message } from \"antd\";\nimport * as React from \"react\";\nimport { IStatus, ITextGeneratorConfig, IVizConfig } from \"../../types\";\nimport { fetchJSON, getLocalStorage, scrollToElement } from \"../../utils\";\nimport DatasetSelectorView from \"./upload/datasetupload\";\nimport GeneratorControlsView from \"./controls\";\n\nconst GenerateView = () => {\n const [loading, setLoading] = React.useState(false);\n\n const initTextGenerationConfig: ITextGeneratorConfig = {\n temperature: 0,\n n: 1,\n model: \"gpt-3.5-turbo-0301\",\n max_tokens: null,\n provider: \"openai\",\n };\n\n const initModels = {\n openai: {\n name: \"OpenAI\",\n models: [\n {\n name: \"gpt-3.5-turbo-0301\",\n max_tokens: 4096,\n },\n ],\n },\n };\n const [models, setModels] = React.useState<{} | null>(initModels);\n const serverUrl = process.env.GATSBY_API_URL;\n\n const initVizConfig: IVizConfig = getLocalStorage(\"lida_viz_config\") || {\n goal: null,\n summary: null,\n library: \"seaborn\",\n textgen_config: initTextGenerationConfig,\n };\n\n const summaryDivRef = React.useRef(null);\n\n // const [config, setConfig] = React.useState(initConfig);\n const [vizConfig, setVizConfig] = React.useState(initVizConfig);\n const [vizspecs, setVizspecs] = React.useState<[] | null>(null);\n const [error, setError] = React.useState(null);\n\n React.useEffect(() => {\n // console.log(\"vizconfig summary updated\", vizConfig);\n if (vizConfig.summary === null) {\n scrollToElement(summaryDivRef);\n setVizspecs(null);\n }\n }, [vizConfig.summary]);\n\n const fetchModels = () => {\n setError(null);\n setLoading(true);\n const payLoad = {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n };\n\n const onSuccess = (data: any) => {\n if (data && data.status) {\n // console.log(\"Models data\", data);\n setModels(data.data);\n } else {\n // message.error(data.message);\n // setError(data);\n console.log(\"Error fetching models\", data);\n }\n setLoading(false);\n };\n const onError = (err: any) => {\n // message.error(err.message);\n setLoading(false);\n // setError(err);\n console.log(\"Error fetching models\", err);\n };\n fetchJSON(`${serverUrl}/models`, payLoad, onSuccess, onError);\n };\n\n React.useEffect(() => {\n fetchModels();\n }, []);\n\n return (\n
        \n {\" \"}\n
        \n \n
        \n {error && !error.status && (\n
        \n {\" \"}\n
        \n An\n error occurred. Please try again later.\n
        \n
        \n {\" \"}\n {error.message}.\n
        \n
        \n )}\n
        \n );\n};\nexport default GenerateView;\n","import * as React from \"react\";\nimport Layout from \"../components/layout\";\nimport { graphql } from \"gatsby\";\nimport GenerateView from \"../components/views/generate/generateindex\";\n\n// markup\nconst DemoPage = ({ data }: any) => {\n return (\n \n
        \n
        \n
        \n Lida provides a conversational interface for automatic generation of{\" \"}\n grammar-agnostic{\" \"}\n visualizations (and infographics) from data!.{\" \"}\n
        \n
        \n \n\n {/*
        \n
        \n System Description\n \n Learn more about how LIDA works\n \n
        \n \n
        */}\n
        \n
        \n );\n};\n\nexport const query = graphql`\n query HomePageQuery {\n site {\n siteMetadata {\n description\n title\n }\n }\n }\n`;\n\nexport default DemoPage;\n","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n defineProperty = Object.defineProperty || function (obj, key, desc) {\n obj[key] = desc.value;\n },\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return defineProperty(generator, \"_invoke\", {\n value: makeInvokeMethod(innerFn, self, context)\n }), generator;\n }\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n exports.wrap = wrap;\n var ContinueSentinel = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n reject(record.arg);\n }\n var previousPromise;\n defineProperty(this, \"_invoke\", {\n value: function value(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method,\n method = delegate.iterator[methodName];\n if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel;\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n return next.value = undefined, next.done = !0, next;\n };\n return next.next = next;\n }\n }\n return {\n next: doneResult\n };\n }\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (val) {\n var object = Object(val),\n keys = [];\n for (var key in object) keys.push(key);\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n"],"names":["EventEmitter","this","_events","prototype","on","evt","callback","once","push","emit","_this","args","_i","arguments","length","events","wildcardEvents","doEmit","es","i","_a","splice","apply","off","length_1","getEvents","Base","_super","cfg","call","destroyed","defaultCfg","getDefaultCfg","get","name","set","value","destroy","taskHead","taskTail","timeout","interval","pokeDelay","clockLast","clockNow","clockSkew","clock","performance","now","Date","setFrame","window","requestAnimationFrame","bind","f","setTimeout","clearNow","Timer","_call","_time","_next","timer","delay","time","t","restart","wake","e","timerFlush","t0","t2","t1","Infinity","sleep","nap","poke","clearTimeout","clearInterval","setInterval","constructor","TypeError","stop","isColorProp","prop","includes","isGradientColor","val","test","IDENTITY_MATRIX","update","shape","animation","elapsed","ratio","startTime","_paused","duration","easing","easeFn","repeat","onFrame","attr","toAttrs","attrs","cProps","fromAttrs","interf","k","toPath","fromPath","path","pathFormatted","toPathPoint","fromPathPoint","cPathPoint","j","currentMatrix","matrixFn","_update","Timeline","canvas","animators","current","initTimer","animations","removeAnimator","isAnimatePaused","draw","addAnimator","index","isAnimating","stopAllAnimations","toEnd","forEach","animator","stopAnimate","getTime","EVENTS","emitTargetEvent","target","type","eventObj","currentTarget","delegateTarget","bubbleEvent","container","bubbles","relativeShape","isOverEvent","fromShape","toShape","isCanvas","EventController","draggingShape","dragging","currentShape","mousedownShape","mousedownPoint","_eventCallback","ev","_triggerEvent","_onDocumentMove","pointInfo","_getPointInfo","_emitEvent","_onDocumentMouseUp","_afterDrag","init","_bindEvents","el","eventName","addEventListener","document","_clearEvents","removeEventListener","_getEventObj","event","point","x","y","clientX","clientY","propagationPath","_getShape","getShape","clientPoint","getClientByEvent","getPointByEvent","method","leaveCanvas","preShape","style","cursor","_onmousedown","button","mousedownTimeStamp","timeStamp","_emitMouseoverEvents","_emitDragoverEvents","isCanvasEmit","_onmouseup","_ondragover","preventDefault","_onmousemove","timeWindow","dx","dy","parent_1","getParent","emitDelegation","propagationStopped","browser","isFirefox","Canvas","initContainer","initDom","initEvents","initTimeline","getElementById","createDom","appendChild","setDOMSize","eventController","timeline","width","height","changeSize","onCanvasChange","getRenderer","getCursor","setCursor","layerX","offsetX","layerY","offsetY","getPointByClient","clientInfo","touches","changedTouches","bbox","getBoundingClientRect","left","top","getClientByPoint","removeDom","parentNode","removeChild","clearEvents","clear","SHAPE_MAP","INDEX","setCanvas","element","isGroup","children","child","setTimeline","Container","getBBox","minX","maxX","minY","maxY","getChildren","filter","childMinX","childMaxX","childMinY","childMaxY","getCanvasBBox","onAttrChange","originValue","totalMatrix","getTotalMatrix","_applyChildrenMarix","applyMatrix","matrix","preTotalMatrix","addShape","shapeType","getShapeBase","add","addGroup","group","groupClass","parent","tmpCfg","getGroupBase","getCanvas","_findShape","v","invertFromMatrix","isClipped","isHit","preParent","_applyElementMatrix","sort","compare","obj1","obj2","right","result","getFirst","getChildByIndex","getLast","getCount","contain","indexOf","remove","findAll","fn","rst","concat","find","findById","id","findByClassName","className","findAllByName","transform","MATRIX","CLONE_CFGS","RESERVED_PORPS","getFormatFromAttrs","Element","getDefaultAttrs","initAttrs","initAnimate","visible","capture","zIndex","getDefaultMatrix","opacity","changeType","setAttr","afterAttrsChange","refX","refY","clip","getClip","targetAttrs","isClipShape","applyTo","show","hide","setZIndex","toFront","toBack","unshift","resetMatrix","getMatrix","setMatrix","m","parentMatrix","applyToMatrix","invertMatrix","setClip","clipCfg","clipShape","Cons","clone","originAttrs","arr","_cloneArrayAttr","cons","cfgName","isPaused","animate","pauseCallback","resumeCallback","animateCfg","_b","_c","formatToAttrs","props","getFormatToAttrs","hasOwnProperty","Object","item","checkExistedAttrs","pauseAnimate","pauseTime","_pauseTime","resumeAnimate","paths","_loop_1","name_1","subName","emitDelegateEvent","this_1","delegateObject","translate","translateX","translateY","newMatrix","move","targetX","targetY","moveTo","scale","ratioX","ratioY","rotate","radian","rotateAtStart","rotateAtPoint","AbstractGroup","isEntityGroup","AbstractShape","_isInBBox","clearCacheBBox","calculateBBox","canvasBBox","calculateCanvasBBox","topLeft","topRight","bottomLeft","bottomRight","Math","min","max","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","shadowLeft","shadowRight","shadowTop","shadowBottom","isInShape","isOnlyHitBox","startArrowShape","endArrowShape","vec","inBBox","linear","quadIn","quadOut","quadInOut","cubicIn","cubicOut","cubicInOut","polyIn","custom","pow","exponent","polyOut","polyInOut","pi","PI","halfPi","sinIn","cos","sinOut","sin","sinInOut","tpmt","expIn","expOut","expInOut","circleIn","sqrt","circleOut","circleInOut","b1","b2","b3","b4","b5","b6","b7","b8","b9","b0","bounceIn","bounceOut","bounceInOut","overshoot","backIn","s","backOut","backInOut","tau","elasticIn","a","p","asin","amplitude","period","elasticOut","elasticInOut","EASING_MAP","getEasing","toLowerCase","registerEasing","cache","Map","register","getMethod","r","mergeBBox","bbox1","bbox2","mergeArrowBBox","getExtraFromSegmentWithAngle","segment","lineWidth","prePoint","currentPoint","nextPoint","currentAndPre","currentAndNext","preAndNext","currentAngle","acos","xExtra","yExtra","xAngle","abs","atan2","yAngle","rect","circle","points","xArr","yArr","text","fontSize","lineHeight","font","textAlign","textBaseline","stroke","segments","segmentsWithAngle","params","box","command","arcParams","cx","cy","rx","ry","xRotation","startAngle","endAngle","Number","isNaN","getPathBox","x1","y1","x2","y2","GraphEvent","defaultPrevented","originalEvent","stopPropagation","toString","save","restore","version","multiplyMatrix","b","out","a00","a01","a02","a10","a11","a12","a20","a21","a22","b00","b01","b02","b10","b11","b12","b20","b21","b22","multiplyVec2","invert","det","offScreenCtx","getOffScreenContext","createElement","getContext","SPACES","PATH_COMMAND","RegExp","PATH_VALUES","parsePathString","pathString","paramCounts","c","o","h","l","q","u","z","data","String","replace","catmullRomToBezier","crp","d","iLen","ellipsePath","res","rad","pathToAbsolute","pathArray","pa0","dots","mx","my","start","crz","toUpperCase","pa","ii","jj","slice","pop","kk","l2c","q2c","ax","ay","_13","_23","a2c","angle","large_arc_flag","sweep_flag","recursive","xy","f1","f2","_120","rx2","ry2","toFixed","df","f2old","x2old","y2old","c1","s1","c2","s2","tan","hx","hy","m1","m2","m3","m4","newres","join","split","pathToCurve","path2","p2","bx","by","X","Y","qx","qy","attrs2","pcoms1","pcoms2","pfirst","pcom","processPath","nx","ny","T","Q","fixArc","pp","shift","fixM","path1","a1","a2","seg","seg2","seglen","seg2len","parseFloat","p2s","parsePathArray","base3","p1","p3","p4","bezlen","x3","y3","x4","y4","z2","Tvalues","Cvalues","sum","ct","xbase","ybase","comb","curveDim","x0","y0","tvalues","bounds","b2ac","sqrtb2ac","mt","jlen","intersect","denominator","px","py","px2","py2","isPointInsideBBox","rectPath","w","r1","r2","r0","vb","bezierBBox","p1x","p1y","c1x","c1y","c2x","c2y","p2x","p2y","findDotsAtSegment","t13","t12","t3","n","end","alpha","interHelper","bez1","bez2","justCount","isBBoxIntersect","n1","n2","dots1","dots2","di","di1","dj","dj1","ci","cj","is","intersection","x1m","y1m","x2m","y2m","pj","intr","segment1","segment2","interPathHelper","decasteljau","recurse","middlePoints","reverse","splitSegment","count","leftSegments","map","cmd","splitCurve","temp","fillPath","source","sourceLen","targetLen","segmentsToFill","floor","filled","reduce","isEqual","getMinDiff","del","modify","fillPathByDiff","diffMatrix","sourceSegment","targetSegment","dist","levenshteinDistance","changes","minPos","diff","_splitPoints","former","formerEnd","_getSegmentPoints","formatPath","getTextHeight","lineCount","spaceingY","getLineSpaceing","getTextWidth","context","textArr","subText","measureWidth","measureText","assembleFont","fontFamily","fontWeight","fontStyle","fontVariant","trim","removeFromArray","obj","isBrowser","isParent","isAllowCapture","distance","isNumberEqual","v1","v2","getBBoxByArray","getBBoxRange","piMod","pointAt","pointDistance","cross","pointToLine","vec2","tangentAngle","tCallback","v0","segNum","increaseRate","_t","d1","prev","next","d2","quadraticAt","p0","onet","extrema","derivativeAt","divideQuadratic","xt","yt","controlPoint1","line","controlPoint2","quadraticLength","iterationCount","quadratics","xExtrema","yExtrema","undefined","nearestPoint","interpolationAt","divide","cubicAt","discSqrt","extremas","disc","divideCubic","c3","c12","c23","cubicLength","totalLength","snapLength","cubics","copysign","absv","nearestX","nearestY","relativeX","relativeY","squareA","squareB","ex","ey","rx1","ry1","hypot","xAt","yAt","getPoint","xDim","atan","xs","yDim","ys","relativeVector","relativePoint","ellipse","getAngle","vector","derivativeXAt","derivativeYAt","analyzePoints","from","to","lengthOfSegment","pointAtSegments","startRatio","currentRatio","localRatio","angleAtSegments","distanceAtSegment","minDistance","distance_1","leftTranslate","transMat","leftRotate","rotateMat","leftScale","scaleMat","actions","len","action","angleTo","direct","ang","angleLargeThanPI","direction","regexTags","regexDot","match","tag","charAt","substr","sub","constraint","isLoop","pointList","cp1","cp2","controlPointList","smooth","prevPoint","nextCp0","cp0","cps","hasConstraint","d0","smoothBezier","REGEX_MD","toSymmetry","needProcess","first","preParams","upCmd","symetricT","symetricS","vMag","vRatio","vAngle","isSamePoint","point1","point2","getArcParams","startPoint","arcFlag","sweepFlag","xp","yp","lambda","cxp","cyp","theta","dTheta","center","getSegments","nextParams","startMovePoint","lastStartMovePointIndex","startTangent","endTangent","cp","preSegment","_d","_e","_f","_g","_h","dx1","dy1","dx2","dy2","tolerance","dcmp","onSegment","isInPolygon","isBetween","parseToLines","lines","last","lineIntersectPolygon","isIntersect","E","D0","D1","kross","getLineIntersect","isPolygonsIntersect","points1","points2","box1","box2","isIn","lines1","lines2","isFinite","func","values","Array","isArray","elements","keys","key","_keys","getPrototypeOf","proto","predicate","_predicate","fromIndex","curr","filterValues","tmp","arrPrototype","indexes","previous","str","comparer","keys_1","uniq","has","tmpMap","head","condition","groupToMap","paramscondition_1","row","unique","groups","array","base","round","PRECISION","isInteger","precision","maxItem","minItem","RADIAN","degree","substring","objectProto","Ctor","HTMLDocument","webkitRequestAnimationFrame","mozRequestAnimationFrame","msRequestAnimationFrame","cancelAnimationFrame","handler","webkitCancelAnimationFrame","mozCancelAnimationFrame","msCancelAnimationFrame","wait","immediate","callNow","resolver","memoized","_deepMix","src","level","maxLevel","size","other","valueKeys","otherKeys","identity","object","_mix","src1","src2","src3","defaultValue","keyArr","idx","options","later","leading","throttled","remaining","trailing","cancel","prefix","ctx","memoize","maxWidth","currentText","currentWidth","PLACEHOLDER_WIDTH","leftText","leftWidth","default_1","def","delete","_instanceof","nativeMap","nativeSet","nativePromise","_","Set","Promise","circular","depth","includeNonEnumerable","allParents","allChildren","useBuffer","Buffer","_clone","resolve","reject","then","err","__isArray","__isRegExp","__getRegExpFlags","lastIndex","__isDate","isBuffer","allocUnsafe","copy","Error","create","keyChild","valueChild","entryChild","getOwnPropertyDescriptor","getOwnPropertySymbols","symbols","symbol","descriptor","enumerable","defineProperty","allPropertyNames","getOwnPropertyNames","propertyName","__objToStr","re","flags","global","ignoreCase","multiline","clonePrototype","module","exports","Color","_darker","_brighter","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","color","format","exec","parseInt","rgbn","Rgb","rgba","hsla","NaN","g","rgbConvert","rgb_formatHex","hex","rgb_formatRgb","clampa","clampi","Hsl","hslConvert","hsl","clamph","clampt","hsl2rgb","channels","assign","displayable","formatHex8","formatHsl","brighter","darker","clamp","factory","extend","definition","genericArray","nb","na","basis","v3","hue","gamma","nogamma","exponential","setTime","isNumberArray","ArrayBuffer","isView","DataView","rgbSpline","spline","colors","rgbGamma","rgbBasis","rgbBasisClosed","reA","reB","am","bm","bs","bi","one","zero","valueOf","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","_arr","_n","_s","Symbol","iterator","done","xv","yv","Float64Array","ux","uy","visitPoints","cb","iterations","determination","uY","predict","SSE","SST","sse","sst","midpoint","interpose","xmin","xmax","log","LOG10E","maxIter","iter","found","mp","a0","ols","uX","uXY","uX2","delta","slope","domain","YL","XY","XYL","X2Y","ly","_ols2","exp","rSquared","X2","intercept","median","maxiters","epsilon","loess","bandwidth","_points2","bw","yhat","residuals","robustWeights","fill","i0","i1","edge","W","denom","xk","yk","tricube","xkw","updateInterval","medianResidual","arg","_w","output","cnt","logarithmic","lb","lx","quad","quadratic","X3","X4","n0","X2X2","polynomial","order","coefficients","_o","lhs","rhs","coef","gaussianElimination","uncenter","power","YS","regressionExp","regressionLinear","regressionLoess","regressionLog","regressionPoly","regressionPow","regressionQuad","__spreadArray","pack","ar","BrowserInfo","os","NodeInfo","process","platform","SearchBotDeviceInfo","bot","BotInfo","ReactNativeInfo","SEARCHBOT_OS_REGEX","REQUIRED_VERSION_PARTS","userAgentRules","operatingSystemRules","detect","userAgent","parseUserAgent","navigator","product","matchUserAgent","ua","matched","regex","uaMatch","matchedRule","versionParts","createVersionParts","detectOS","searchBotMatch","equal","opts","cmp","cycles","node","aobj","bobj","seen","stringify","toJSON","JSON","seenIndex","bisect","parameters","maxIterations","fA","fB","mid","fMid","zeros","zerosM","dot","ret","norm2","weightedSum","w1","w2","nelderMead","maxDiff","nonZeroDelta","zeroDelta","minErrorDelta","minTolerance","rho","chi","psi","sigma","N","simplex","fx","updateSimplex","sortOrder","centroid","reflected","contracted","expanded","iteration","history","sortedSimplex","state","worst","shouldReduce","wolfeLineSearch","pk","phi0","phiPrime0","fxprime","phi","phi_old","phiPrime","zoom","a_lo","a_high","phi_lo","conjugateGradient","initial","delta_k","gradientDescent","learnRate","gradientDescentLineSearch","functionCalls","inner","ARRAY_TYPE","Float32Array","random","multiply","fromTranslation","fromRotation","fromScaling","subtract","normalize","transformMat3","mag","cosine","exactEquals","stringOrChar","passedObj","indent","maxLength","replacer","_stringify","currentIndent","reserved","items","keyPart","nextIndent","prettified","string","stringLiteral","parse","self","isNumber","findMin","findMax","findMinMulti","findMaxMulti","inside","LN_2","helper","kernel","getUnifiedMinMax","getUnifiedMinMaxMulti","arrMulti","relaxMin","relaxMax","step","normalizedMinMax","range","buckets","partialArea","partialAreas","accumulator","generatePartialAreas","fullArea","initalValue","bucket","xToBucket","leftBlockCount","rightBlockCount","spilledAreaLeft","spilledAreaRight","weight","startGradPos","gradAccumulator","area","getExpectedValueFromPdf","pdf","expected","getXWithLeftTailArea","getPerplexity","entropy","ln","SensorTabIndex","SensorClassName","SizeSensorId","_len","_key","_sensorPool","sensor","getSensor","unbind","removeSensor","_id","__esModule","_sensors","_constant","Sensors","sensorId","getAttribute","newId","setAttribute","createSensor","removeAttribute","_object","_resizeObserver","ResizeObserver","_debounce","listeners","resizeListener","listener","contentDocument","defaultView","getComputedStyle","position","onload","display","overflow","pointerEvents","newSensor","disconnect","observe","_extendStatics","setPrototypeOf","__proto__","__extends","__","_assign","__rest","propertyIsEnumerable","__awaiter","thisArg","_arguments","P","generator","fulfilled","rejected","__generator","body","label","sent","trys","ops","verb","op","__values","__read","error","__spreadArrays","il","jl","SuppressedError","uncurryThis","toObject","stringSlice","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","captures","namedCaptures","replacement","tailPos","ch","isObject","classof","MATCH","wellKnownSymbol","it","isRegExp","anObject","that","hasIndices","dotAll","unicode","unicodeSets","sticky","hasOwn","isPrototypeOf","regExpFlags","RegExpPrototype","R","$String","argument","$","flattenIntoArray","lengthOfArrayLike","toIntegerOrInfinity","arraySpeciesCreate","flat","depthArg","O","A","addToUnscopables","$hypot","stat","arity","forced","value1","value2","div","aLen","larg","requireObjectCoercible","isCallable","isNullOrUndefined","getRegExpFlags","getSubstitution","IS_PURE","REPLACE","$TypeError","stringIndexOf","searchValue","replaceAll","replaceValue","IS_REG_EXP","searchString","functionalReplace","searchLength","advanceBy","endOfLastMatch","_excluded","_ref","svgRef","title","titleId","xmlns","viewBox","strokeWidth","ref","strokeLinecap","strokeLinejoin","_regeneratorRuntime","Op","desc","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","configurable","writable","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","Context","makeInvokeMethod","tryCatch","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","_invoke","AsyncIterator","PromiseImpl","invoke","record","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","doneResult","delegate","delegateResult","maybeInvokeDelegate","_sent","dispatchException","abrupt","methodName","info","resultName","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iterable","iteratorMethod","displayName","isGeneratorFunction","genFun","ctor","mark","awrap","async","skipTempReset","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","asyncGeneratorStep","gen","_throw","_asyncToGenerator","propList","ariaPrefix","dataPrefix","pickAttrs","mergedConfig","ariaOnly","aria","getBody","xhr","responseText","response","upload","option","XMLHttpRequest","onProgress","onprogress","total","percent","loaded","formData","FormData","append","file","Blob","filename","onerror","onError","status","msg","url","getError","onSuccess","open","withCredentials","headers","setRequestHeader","send","abort","uid","acceptedFiles","acceptedFilesArray","fileName","mimeType","baseMimeType","some","validType","lowerFileName","lowerType","affixList","affix","endsWith","files","isAccepted","_traverseFileTree","isFile","fullPath","webkitRelativePath","defineProperties","isDirectory","dirReader","createReader","fileList","sequence","readEntries","entries","entryList","loopFiles","entryItem","webkitGetAsEntry","AjaxUploader","_Component","reqs","fileInput","_isMounted","onChange","_this$props","accept","directory","uploadFiles","onClick","_this$props2","focus","querySelector","blur","click","onKeyDown","onFileDrop","multiple","dataTransfer","_file","originFiles","postFiles","processFile","all","onBatchStart","origin","parsedFile","post","_ref2","_callee","beforeUpload","transformedFile","mergedAction","mergedData","parsedData","mergedParsedFile","_context","File","_x","_x2","saveFileInput","_ref3","_this2","_this$props3","onStart","customRequest","request","requestOption","setState","_classNames","_this$props4","Tag","component","prefixCls","disabled","openFileDialogOnClick","onMouseEnter","onMouseLeave","otherProps","cls","dirProps","webkitdirectory","onDrop","onDragOver","tabIndex","role","Component","empty","Upload","uploader","saveUploader","defaultProps","multipart","DisabledContext","DisabledContextProvider","originDisabled","Provider","createContext","items_per_page","jump_to","jump_to_confirm","page","prev_page","next_page","prev_5","next_5","prev_3","next_3","page_size","locale","today","backToToday","ok","month","year","timeSelect","dateSelect","weekSelect","monthSelect","yearSelect","decadeSelect","yearFormat","dateFormat","dayFormat","dateTimeFormat","monthBeforeYear","previousMonth","nextMonth","previousYear","nextYear","previousDecade","nextDecade","previousCentury","nextCentury","placeholder","rangePlaceholder","lang","yearPlaceholder","quarterPlaceholder","monthPlaceholder","weekPlaceholder","rangeYearPlaceholder","rangeQuarterPlaceholder","rangeMonthPlaceholder","rangeWeekPlaceholder","timePickerLocale","typeTemplate","Pagination","DatePicker","TimePicker","Calendar","Table","filterTitle","filterConfirm","filterReset","filterEmptyText","filterCheckall","filterSearchPlaceholder","emptyText","selectAll","selectInvert","selectNone","selectionAll","sortTitle","expand","collapse","triggerDesc","triggerAsc","cancelSort","Tour","Next","Previous","Finish","Modal","okText","cancelText","justOkText","Popconfirm","Transfer","titles","searchPlaceholder","itemUnit","itemsUnit","selectCurrent","removeCurrent","removeAll","uploading","removeFile","uploadError","previewFile","downloadFile","Empty","description","Icon","icon","Text","edit","copied","PageHeader","back","Form","optional","defaultValidateMessages","default","required","enum","whitespace","date","invalid","types","number","boolean","integer","float","regexp","email","pattern","mismatch","Image","preview","QRCode","expired","refresh","ColorPicker","presetEmpty","componentName","defaultLocale","fullLocale","getLocale","localeFromContext","localeCode","exist","primaryColor","secondaryColor","AntdIcon","useForceUpdate","_React$useReducer","createRoot","offsetParent","_getBBox","_element$getBoundingC","_width","_height","genWaveStyle","token","componentCls","colorPrimary","background","boxSizing","boxShadow","transition","motionEaseOutCirc","motionEaseInOut","genComponentStyleHook","fullClone","reactRender","render","unmountComponentAtNode","toggleWarning","skip","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","usingClientEntryPoint","MARK","root","modernRender","legacyRender","modernUnmount","_modernUnmount","_container$MARK","unmount","legacyUnmount","_unmount","_callee2","_context2","isValidWaveColor","isNotGrey","TARGET_CLS","validateNum","WaveEffect","divRef","_React$useState","_React$useState2","setWaveColor","_React$useState3","_React$useState4","borderRadius","setBorderRadius","_React$useState5","_React$useState6","setLeft","_React$useState7","_React$useState8","setTop","_React$useState9","_React$useState10","setWidth","_React$useState11","_React$useState12","setHeight","_React$useState13","_React$useState14","enabled","setEnabled","waveStyle","radius","syncPos","nodeStyle","_getComputedStyle","borderTopColor","borderColor","backgroundColor","getTargetWaveColor","isStatic","borderLeftWidth","borderTopWidth","offsetLeft","offsetTop","offsetWidth","offsetHeight","borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius","resizeObserver","raf","isSmallComponent","classList","contains","motionAppear","motionName","motionDeadline","onAppearEnd","deadline","holder","parentElement","motionClassName","checked","insertBefore","firstChild","getPrefixCls","useContext","containerRef","useRef","_useStyle","hashId","showWave","nodeRef","wave","_useToken","useToken","_useToken2","useEvent","targetNode","showEffect","rafId","useWave","nodeType","isVisible","SpaceCompactItemContext","useCompactItemContext","compactItemContext","compactItemClassnames","compactDirection","isFirstItem","isLastItem","separator","compactSize","NoCompactStyle","IconWrapper","forwardRef","iconWrapperCls","InnerLoadingIcon","iconClassName","mergedIconCls","getCollapsedWidth","getRealWidth","scrollWidth","loading","existIcon","removeOnLeave","onAppearStart","onAppearActive","onEnterStart","onEnterActive","onLeaveStart","onLeaveActive","motionCls","motionStyle","GroupSizeContext","_React$useContext","customizePrefixCls","others","sizeCls","classes","rxTwoCNChar","isTwoCNChar","isUnBorderedButtonType","spaceChildren","needInserted","isPrevChildPure","childList","isCurrentChildPure","lastChild","SPACE","splitCNCharsBySpace","genCompactItemStyle","compactCls","parentCls","focusElCls","childCombinator","borderElCls","hoverEffects","Boolean","marginInlineEnd","compactItemBorder","borderStartEndRadius","borderEndEndRadius","borderStartStartRadius","borderEndStartRadius","compactItemBorderRadius","genCompactItemVerticalStyle","marginBottom","compactItemVerticalBorder","genButtonBorderStyle","buttonTypeCls","borderInlineEndColor","borderInlineStartColor","_componentCls","colorPrimaryHover","colorErrorHover","marginInlineStart","genSharedButtonStyle","iconCls","buttonFontWeight","outline","whiteSpace","backgroundImage","border","lineType","motionDurationMid","userSelect","touchAction","colorText","marginXS","flex","insetInlineStart","content","genHoverActiveButtonStyle","btnCls","hoverStyle","activeStyle","genCircleButtonStyle","minWidth","controlHeight","paddingInlineStart","paddingInlineEnd","genRoundButtonStyle","genGhostButtonStyle","textColor","textColorDisabled","borderColorDisabled","genSolidDisabledButtonStyle","colorBorder","colorTextDisabled","colorBgContainerDisabled","genDisabledStyle","genSolidButtonStyle","genPureDisabledButtonStyle","genDefaultButtonStyle","colorBgContainer","controlOutlineWidth","controlTmpOutline","colorPrimaryActive","colorError","colorErrorBorderHover","colorErrorActive","genTypeButtonStyle","_ref6","colorTextLightSolid","controlOutline","colorErrorOutline","genPrimaryButtonStyle","borderStyle","genDashedButtonStyle","colorLink","colorLinkHover","colorLinkActive","genLinkButtonStyle","colorBgTextHover","colorBgTextActive","colorErrorBg","genTextButtonStyle","genSizeButtonStyle","_$concat2","_$concat$concat","sizePrefixCls","buttonPaddingHorizontal","paddingVertical","paddingHorizontal","iconOnlyCls","padding","buttonIconOnlyFontSize","opacityLoading","motionDurationSlow","genSizeBaseButtonStyle","genSizeSmallButtonStyle","smallToken","controlHeightSM","paddingXS","borderRadiusSM","fontSizeLG","genSizeLargeButtonStyle","largeToken","controlHeightLG","borderRadiusLG","genBlockButtonStyle","paddingContentHorizontal","buttonToken","colorOutlineDefault","convertLegacyProps","danger","InternalButton","_props$loading","_props$type","_props$shape","customizeSize","styles","customDisabled","rootClassName","_props$ghost","ghost","_props$block","block","_props$htmlType","htmlType","customClassNames","classNames","_props$style","customStyle","rest","_useContext","autoInsertSpaceInButton","_useStyle2","wrapSSR","mergedDisabled","groupSize","loadingOrDelay","useMemo","getLoadingConfig","_useState","useState","_useState2","innerLoading","setLoading","_useState3","_useState4","hasTwoCNChar","setHasTwoCNChar","internalRef","createRef","buttonRef","Children","useEffect","delayTimer","buttonText","textContent","handleClick","autoInsertSpace","_useCompactItemContex","sizeClassNameMap","large","small","middle","sizeFullName","ctxSize","iconType","linkButtonRestProps","fullStyle","iconClasses","iconStyle","iconNode","kids","href","buttonNode","Button","Group","__ANT_BUTTON","file2Obj","lastModified","lastModifiedDate","originFileObj","updateFileList","nextFileList","fileIndex","findIndex","getFileItem","matchKey","isImageFileType","isImageUrl","thumbUrl","extension","filenameWithoutSuffix","extname","MEASURE_SIZE","previewImage","cssText","img","drawWidth","drawHeight","drawImage","dataURL","toDataURL","URL","revokeObjectURL","crossOrigin","startsWith","reader","FileReader","readAsDataURL","_reader","createObjectURL","strokeColor","trailColor","trailWidth","gapPosition","useTransitionDuration","pathsRef","prevTimeStamp","updated","pathStyle","transitionDuration","uuid","isBrowserClient","canUseDom","innerId","setInnerId","retId","stripPercentToNumber","mergedValue","VIEW_BOX_SIZE","getCircleStyle","perimeter","perimeterWithoutGap","offset","rotateDeg","gapDegree","stepSpace","offsetDeg","positionDeg","bottom","strokeDashoffset","strokeDasharray","transformOrigin","fillOpacity","stackPtg","_defaultProps$props","steps","_defaultProps$props$g","restProps","mergedId","useId","gradientId","space","stepCount","circleStyle","percentList","strokeColorList","gradient","stopColor","stepPtg","circleStyleForStack","elem","getStepStokeList","ptg","EMPTY_LIST","cached","ensureSize","fresh","outer","outerStyle","visibility","widthContained","widthScroll","clientWidth","getScrollBarSize","UNIQUE_ID","useScrollLocker","lock","mergedLock","useLayoutEffect","scrollbarSize","getTargetScrollBarSize","isOverflow","scrollHeight","innerHeight","documentElement","clientHeight","innerWidth","inline","getPortalContainer","getContainer","Portal","autoLock","_props$autoDestroy","debug","autoDestroy","shouldRender","setShouldRender","mergedRender","innerContainer","setInnerContainer","customizeContainer","_useDom","ele","appendedRef","queueCreate","queue","setQueue","mergedQueueCreate","appendFn","cleanup","_ele$parentElement","useDom","_useDom2","defaultContainer","mergedContainer","childRef","mergedRef","nextInline","renderInline","reffedChildren","createPortal","MapShim","getIndex","class_1","__entries__","global$1","Function","requestAnimationFrame$1","transitionKeys","mutationObserverSupported","MutationObserver","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","leadingCall","trailingCall","lastCallTime","resolvePending","proxy","timeoutCallback","throttle","addObserver","observer","connect_","removeObserver","observers","disconnect_","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","attributes","characterData","subtree","isReflowProperty","getInstance","instance_","defineConfigurable","getWindowOf","ownerDocument","emptyRect","createRectInit","toFloat","getBordersSize","positions","getHTMLElementContentRect","paddings","positions_1","getPaddings","horizPad","vertPad","isDocumentElement","vertScrollbar","horizScrollbar","isSVGGraphicsElement","SVGGraphicsElement","SVGElement","getContentRect","getSVGContentRect","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","isActive","broadcastRect","ResizeObserverEntry","rectInit","contentRect","Constr","DOMRectReadOnly","createReadOnlyRect","ResizeObserverSPI","controller","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","observations","unobserve","clearActive","observation","WeakMap","elementListeners","entities","entity","_elementListeners$get","DomWrapper","_React$Component","CollectionContext","SingleObserver","elementRef","wrapperRef","onCollectionResize","isRenderProps","mergedChildren","sizeRef","canRef","originRef","getDom","findDOMNode","propsRef","onInternalResize","_propsRef$current","onResize","_target$getBoundingCl","fixedWidth","fixedHeight","mergedOffsetWidth","mergedOffsetHeight","sizeInfo","currentElement","RefResizeObserver","Collection","onBatchResize","resizeIdRef","resizeInfosRef","currentId","useOriginId","reactNativeId","nextId","agent","vendor","opera","isPointsEq","getMotion","motion","transitionName","getWin","collectScroller","scrollerList","scrollStyle","_getWin$getComputedSt","overflowX","overflowY","toNum","num","getPxValue","getVisibleArea","initArea","visibleArea","HTMLBodyElement","_getWin$getComputedSt2","overflowClipMargin","borderBottomWidth","borderRightWidth","eleRect","eleOutHeight","eleInnerHeight","eleOutWidth","eleInnerWidth","borderTopNum","borderBottomNum","borderLeftNum","borderRightNum","scaleX","scaleY","eleScrollWidth","eleScrollHeight","scaledBorderTopWidth","scaledBorderBottomWidth","scaledBorderLeftWidth","scaledBorderRightWidth","clipMarginWidth","clipMarginHeight","clipNum","eleLeft","eleTop","eleRight","eleBottom","getUnitOffset","offsetStr","cells","getNumberOffset","splitPoints","getAlignPoint","topBottom","leftRight","reversePoints","reverseMap","Arrow","align","arrow","arrowPos","_arrowPos$x","_arrowPos$y","arrowRef","alignStyle","autoArrow","popupPoints","targetPoints","popupTB","popupLR","targetTB","targetLR","Mask","mask","Popup","popup","_onVisibleChanged","onVisibleChanged","keepDom","maskMotion","forceRender","getPopupContainer","portal","onPointerEnter","ready","offsetR","offsetB","onAlign","onPrepare","stretch","targetWidth","targetHeight","childNode","isNodeVisible","getPopupContainerNeedParams","setShow","AUTO","offsetStyle","_experimental","dynamicInset","alignRight","alignBottom","miscStyle","minHeight","resizeObserverRef","motionEnter","motionLeave","leavedClassName","onAppearPrepare","onEnterPrepare","nextVisible","_motion$onVisibleChan","motionRef","TriggerWrapper","getTriggerDOMNode","canUseRef","setRef","PortalComponent","Trigger","_props$prefixCls","_props$action","showAction","hideAction","popupVisible","defaultPopupVisible","onPopupVisibleChange","afterPopupVisibleChange","mouseEnterDelay","_props$mouseLeaveDela","mouseLeaveDelay","focusDelay","blurDelay","_props$maskClosable","maskClosable","destroyPopupOnHide","popupClassName","popupStyle","popupPlacement","_props$builtinPlaceme","builtinPlacements","popupAlign","getPopupClassNameFromAlign","alignPoint","onPopupClick","onPopupAlign","popupMotion","popupTransitionName","popupAnimation","maskTransitionName","maskAnimation","mergedAutoDestroy","mobile","setMobile","isMobile","subPopupElements","parentContext","registerSubPopup","subPopupEle","popupEle","setPopupEle","setPopupRef","targetEle","setTargetEle","setTargetRef","only","originChildProps","cloneProps","inPopupOrChild","_getShadowRoot","_getShadowRoot2","childDOM","host","mergePopupMotion","mergeMaskMotion","internalOpen","setInternalOpen","mergedOpen","setMergedOpen","nextOpen","openRef","internalTriggerOpen","flushSync","delayRef","clearDelay","triggerOpen","inMotion","setInMotion","firstMount","motionPrepareResolve","setMotionPrepareResolve","mousePos","setMousePos","setMousePosByEvent","_useAlign","placement","arrowX","arrowY","offsetInfo","setOffsetInfo","alignCountRef","prevFlipRef","targetRect","getIntersectionVisibleArea","popupRect","popupWidth","popupHeight","visibleL","visibleT","visibleR","visibleB","syncNextPopupPosition","nextPopupY","nextOffsetY","nextPopupBottom","nextPopupX","nextOffsetX","nextPopupRight","popupElement","originLeft","originTop","originRight","originBottom","doc","win","placementInfo","_win$getComputedStyle","_doc$documentElement","scrollTop","scrollLeft","visibleRegion","scrollRegion","htmlRegion","VISIBLE","VISIBLE_FIRST","isVisibleFirst","scrollRegionArea","visibleRegionArea","adjustCheckVisibleArea","popupMirrorRect","_scaleX","_scaleY","targetOffset","_getNumberOffset","_getNumberOffset2","popupOffsetX","popupOffsetY","_getNumberOffset3","_getNumberOffset4","targetOffsetX","targetOffsetY","_ref4","popupPoint","targetAlignPoint","popupAlignPoint","nextAlignInfo","originIntersectionVisibleArea","originIntersectionRecommendArea","targetAlignPointTL","popupAlignPointTL","targetAlignPointBR","popupAlignPointBR","adjustX","adjustY","shiftX","shiftY","supportAdjust","needAdjustY","sameTB","bt","tmpNextOffsetY","newVisibleArea","newVisibleRecommendArea","tb","_tmpNextOffsetY","_newVisibleArea","_newVisibleRecommendArea","needAdjustX","sameLR","rl","tmpNextOffsetX","_newVisibleArea2","_newVisibleRecommendArea2","lr","_tmpNextOffsetX","_newVisibleArea3","_newVisibleRecommendArea3","numShiftX","numShiftY","popupLeft","popupRight","popupTop","popupBottom","targetLeft","targetRight","targetTop","targetBottom","nextArrowX","nextArrowY","offsetX4Right","offsetY4Bottom","resetReady","ori","useAlign","_useAlign2","alignInfo","_useAction","mergedShowAction","mergedHideAction","showActionSet","hideActionSet","useAction","_useAction2","showActions","hideActions","clickToShow","clickToHide","triggerAlign","onScroll","notifyScroll","targetScrollList","popupScrollList","mergedList","scroller","passive","useWatch","alignedClassName","baseClassName","isAlignPoint","placements","_builtinPlacements$pl","getAlignPopupClassName","forceAlign","_React$useState15","_React$useState16","setTargetWidth","_React$useState17","_React$useState18","setTargetHeight","wrapperAction","preEvent","_originChildProps$eve","_originChildProps$onC","_len2","_key2","lockRef","genClickEvents","clickInside","_genClickEvents","_genClickEvents2","onWinMouseDown","onWinClick","_genClickEvents3","_genClickEvents4","onShadowMouseDown","onShadowClick","targetShadowRoot","useWinClick","onPopupMouseEnter","onPopupMouseLeave","hoverToShow","hoverToHide","onMouseMove","_originChildProps$onM","onContextMenu","_originChildProps$onC2","_len3","_key3","mergedChildrenProps","passedProps","_mergedChildrenProps$","_len4","_key4","triggerNode","innerArrow","autoAdjustOverflowTopBottom","autoAdjustOverflowLeftRight","leftTop","rightTop","rightBottom","leftBottom","overlayInnerStyle","Tooltip","overlayClassName","_props$trigger","trigger","_props$mouseEnterDela","overlayStyle","onVisibleChange","afterVisibleChange","_props$placement","_props$align","_props$destroyTooltip","destroyTooltipOnHide","defaultVisible","getTooltipContainer","overlay","arrowContent","_props$showArrow","showArrow","triggerRef","useImperativeHandle","extraProps","roundedArrow","innerRadius","outerRadius","bgColor","unitWidth","fy","shadowWidth","polygonOffset","clipPath","_multi_value_","insetInline","margin","_skip_check_","MAX_VERTICAL_CONTENT_RADIUS","getArrowOffset","maxVerticalContentRadius","contentRadius","dropdownArrowOffset","dropdownArrowOffsetVertical","limitVerticalRadius","isInject","valid","code","getArrowStyle","_isInject","_isInject2","_isInject3","_isInject4","sizePopupArrow","borderRadiusXS","borderRadiusOuter","boxShadowPopoverArrow","colorBg","_options$contentRadiu","_options$arrowDistanc","arrowDistance","_options$arrowPlaceme","arrowPlacement","_getArrowOffset","PlacementAlignMap","ArrowCenterPlacementAlignMap","DisableAutoArrowList","getPlacements","config","arrowWidth","autoAdjustOverflow","arrowPointAtCenter","visibleFirst","halfArrowWidth","placementMap","template","arrowOffset","baseOverflow","mergedOverflow","getOverflowOptions","_useInternalToken","_useInternalToken2","theme","initMotion","inKeyframes","outKeyframes","sameLevelPrefix","animationDuration","animationFillMode","initMotionCommon","animationPlayState","initMotionCommonLeave","animationName","zoomIn","zoomOut","zoomBigIn","zoomBigOut","zoomUpIn","zoomUpOut","zoomMotion","initZoomMotion","antCls","_zoomMotion$motionNam","motionDurationFast","animationTimingFunction","motionEaseInOutCirc","PresetColors","genPresetColor","genCss","colorKey","lightColor","lightBorderColor","darkColor","genTooltipStyle","_Object$assign","tooltipMaxWidth","tooltipColor","tooltipBg","tooltipBorderRadius","zIndexPopup","boxShadowSecondary","paddingSM","tooltipRadiusOuter","textDecoration","wordWrap","injectStyle","useOriginHook","colorBgDefault","TooltipToken","zIndexPopupBase","colorBgSpotlight","resetStyle","inverseColors","parseColor","isInternalColor","isPresetColor","arrowStyle","colorInfo","arrowContentStyle","formattedOverlayInnerStyle","getDisabledCompatibleChildren","elementType","__ANT_SWITCH","__ANT_RADIO","_splitObject","picked","omitted","splitObject","spanStyle","buttonStyle","openClassName","afterOpenChange","_props$arrow","_props$arrowPointAtCe","_props$autoAdjustOver","mergedShowArrow","getContextPopupContainer","tooltipRef","forcePopupAlign","_useMergedState","useMergedState","defaultOpen","_useMergedState2","setOpen","noTitle","tooltipPlacements","mergedArrowPointAtCenter","pointAtCenter","marginXXS","memoOverlay","memoOverlayWrapper","rootPrefixCls","injectFromPopover","tempOpen","childProps","childCls","customOverlayClassName","vis","onOpenChange","_InternalPanelDoNotUseOrYouWillBeFired","validProgress","progress","getSuccessPercent","success","successPercent","getPercentage","realSuccessPercent","getSize","extra","_size","_size$","_size$2","_strokeWidth","_size2","_size2$","_size2$2","_ref5","_props$trailColor","_props$strokeLinecap","_props$width","originWidth","_props$size","_getSize","_getSize2","getMinPercent","realGapDegree","gapPos","isGradient","_ref3$success","getStrokeColor","wrapperClassName","circleContent","handleGradient","directionConfig","gradients","tempArr","_strokeColor$from","_strokeColor$to","_strokeColor$directio","sortedGradients","formattedKey","backgroundProps","trailStyle","percentStyle","successPercentStyle","_props$percent","_props$strokeWidth","styledSteps","genAntProgressActive","isRtl","genBaseStyle","_$concat4","_$concat5","progressCls","iconPrefixCls","verticalAlign","progressRemainingColor","progressLineRadius","insetBlockStart","colorSuccess","progressInfoTextColor","wordBreak","inset","progressActiveMotionDuration","motionEaseOutQuint","animationIterationCount","genCircleStyle","_progressCls","fontSizeSM","genStepStyle","flexDirection","alignItems","flexShrink","progressStepMinWidth","progressStepMarginInlineEnd","genSmallLine","progressToken","progressDefaultColor","colorFillSecondary","ProgressStatuses","Progress","_props$showInfo","showInfo","percentNumber","progressStatus","progressStyle","progressInfo","isLineType","strokeColorNotArray","strokeColorNotGradient","classString","ListItem","listType","progressProps","iconRender","actionIconRender","itemRender","isImgUrl","showPreviewIcon","showRemoveIcon","showDownloadIcon","customPreviewIcon","previewIcon","customRemoveIcon","removeIcon","customDownloadIcon","downloadIcon","onPreview","onDownload","onClose","mergedStatus","setMergedStatus","showProgress","setShowProgress","uploadingClassName","thumbnail","alt","aClassName","rel","listItemClassName","linkProps","downloadOrDelete","picture","listItemNameClass","pictureCardActions","dom","loadingProgress","message","statusText","download","InternalUploadList","_props$listType","_props$previewFile","onRemove","_props$isImageUrl","_props$items","_props$showPreviewIco","_props$showRemoveIcon","_props$showDownloadIc","_props$progress","appendAction","_props$appendActionVi","appendActionVisible","forceUpdate","setMotionAppear","previewDataUrl","onInternalPreview","onInternalDownload","onInternalClose","internalIconRender","isLoading","fileIcon","customIcon","btnProps","btnIcon","handlePreview","handleDownload","listClassNames","motionKeyList","animationDirection","motionConfig","listItemMotion","onEnterEnd","onLeaveEnd","oriProps","colorFillAlter","uploadThumbnailSize","colorTextHeading","colorTextDescription","_actionsCls","_itemCls","_actionsCls2","_$concat","itemCls","actionsCls","actionCls","listItemHeightSM","marginTop","controlItemBgHover","actionsColor","uploadProgressOffset","fadeIn","fadeOut","initFadeMotion","sameLevel","uploadAnimateInlineIn","uploadAnimateInlineOut","inlineCls","genPictureStyle","_$concat$con","_$concat3","listCls","fontSizeHeading2","primary","genPictureCardStyle","_$concat$concat2","_$concat6","_$concat$concat$conca2","_Object$assign2","uploadPictureCardSize","uploadPicCardSize","justifyContent","marginBlock","marginInline","colorBgMask","svg","setAlpha","toRgbString","objectFit","marginXL","fontSizeHeading3","uploadToken","adopt","LIST_IGNORE","InternalUpload","defaultFileList","_props$showUploadList","showUploadList","propLocale","maxCount","_props$data","_props$multiple","_props$accept","_props$supportServerR","supportServerRender","postState","list","mergedFileList","setMergedFileList","dragState","setDragState","timestamp","isFrozen","onInternalChange","changedFileList","cloneList","exceedMaxCount","changeInfo","batchFileInfoList","filteredFileInfoList","objectFileList","newFileList","fileObj","triggerFileObj","targetItem","handleRemove","currentFile","removedFileList","removed","removeFileItem","ctxUpload","rcUploadProps","fileListArgs","transformFile","_useLocale","contextLocale","renderUploadList","buttonVisible","wrapperCls","mergedStyle","_classNames2","dragCls","onDragLeave","uploadButtonStyle","uploadButtonCls","uploadButton","Dragger","runtimeLocale","localeList","generateLocale","merged","getConfirmLocale","_props$locale","_ANT_MARK__","clearLocale","newLocale","cloneLocale","changeConfirmLocale","getMemoizedContextValue","dynamicStyleMark","registerTheme","globalPrefixCls","variables","formatColor","updater","fillColor","colorVal","baseColor","colorPalettes","primaryColors","lighten","tint","getAlpha","primaryActiveColor","darken","successColor","warningColor","errorColor","infoColor","cssList","getStyle","componentDisabled","componentSize","SizeContext","MotionWrapper","needWrapMotionProviderRef","globalIconPrefixCls","globalTheme","csp","nonce","PASSED_PROPS","getGlobalPrefixCls","getGlobalIconPrefixCls","globalConfig","suffixCls","getIconPrefixCls","getRootPrefixCls","getTheme","ProviderChildren","customCsp","alert","anchor","form","virtual","dropdownMatchSelectWidth","popupMatchSelectWidth","popupOverflow","legacyLocale","customIconPrefixCls","segmented","statistic","spin","calendar","carousel","cascader","typography","checkbox","descriptions","divider","drawer","skeleton","image","layout","mentions","modal","slider","breadcrumb","menu","pagination","input","badge","radio","rate","SWITCH","switch","transfer","avatar","table","card","tabs","timePicker","notification","tree","colorPicker","datePicker","mergedPrefixCls","shouldWrapSSR","mergedTheme","parentTheme","themeConfig","parentThemeConfig","inherit","mergedComponents","components","prevTheme","nextTheme","useTheme","baseConfig","propName","propValue","memoedConfig","prevConfig","currentConfig","prevKeys","currentKeys","memoIconContextValue","validateMessages","memoTheme","algorithm","themeObj","parsedComponents","componentToken","parsedToken","ConfigProvider","antLocale","ConfigContext","isLegacyTheme","useConfig","Notify","_props$duration","eventKey","closable","_props$closeIcon","closeIcon","divProps","onNoticeClose","times","hovering","setHovering","noticePrefixCls","keyCode","KeyCode","ENTER","Notifications","onAllRemoved","configList","setConfigList","_config$onClose","_list$index","innerConfig","close","setPlacements","nextPlacements","_config$placement","emptyRef","placementList","placementMotion","originPlacements","onAllNoticeRemoved","configClassName","configStyle","Notice","defaultGetContainer","uniqueKey","useNotification","rootConfig","_rootConfig$getContai","shareConfig","setContainer","notificationsRef","contextHolder","taskQueue","setTaskQueue","api","objList","mergeConfig","task","oriQueue","genMessageStyle","_noticeStyle","colorWarning","contentPadding","contentBg","noticeCls","messageMoveIn","messageMoveOut","maxHeight","noticeStyle","span","combinedToken","colorBgElevated","clientOnly","TypeIcon","warning","PureContent","staticPrefixCls","wrapPromiseFn","openFn","closeFn","closePromise","promise","Holder","staticGetContainer","rtl","mergedCloseIcon","_useRcNotification","_useRcNotification2","keyIndex","useInternalMessage","messageConfig","holderRef","wrapAPI","fakeResult","_holderRef$current","originOpen","_onClose","restConfig","mergedKey","jointContent","mergedDuration","mergedOnClose","act","defaultGlobalConfig","GlobalHolder","initializeMessageConfig","_getGlobalContext","_defaultGlobalConfig","globalGetContainer","getGlobalContext","setMessageConfig","_useInternalMessage","_useInternalMessage2","rootIconPrefixCls","sync","instance","flushNotice","holderFragment","createDocumentFragment","newMessage","fragment","skipped","setCloseFn","_message$instance","baseStaticMethods","useMessage","staticMethods","typeOpen","shapeCls","sizeStyle","skeletonClsLoading","backgroundPosition","genSkeletonElementCommonSize","genSkeletonElementAvatarSize","genSkeletonElementInputSize","genSkeletonElementImageSize","genSkeletonElementButtonShape","buttonCls","skeletonButtonCls","genSkeletonElementButtonSize","skeletonAvatarCls","skeletonTitleCls","skeletonParagraphCls","skeletonInputCls","skeletonImageCls","gradientFromColor","marginSM","titleHeight","blockRadius","paragraphLiHeight","controlHeightXS","paragraphMarginTop","marginBlockStart","listStyle","genSkeletonElementButton","genSkeletonElementAvatar","genSkeletonElementInput","imageSizeBase","genSkeletonElementImage","skeletonLoadingBackground","backgroundSize","skeletonLoadingMotionDuration","genSkeletonColor","skeletonToken","gradientToColor","colorFillContent","colorFill","colorGradientEnd","marginLG","deprecatedTokens","active","getWidth","_props$rows","rows","rowList","getComponentProps","Skeleton","_props$avatar","_props$title","_props$paragraph","paragraph","avatarNode","contentNode","hasAvatar","hasTitle","hasParagraph","avatarProps","getAvatarBasicProps","$title","paragraphNode","titleProps","getTitleBasicProps","paragraphProps","basicProps","getParagraphBasicProps","Avatar","Input","Node","isThenable","thing","buttonProps","autoFocus","emitEvent","isSilent","quitOnNullishReturnValue","actionFn","clickedRef","timeoutId","returnValueOfOnOk","handlePromiseOnOk","getMotionName","getScroll","shouldUpdate","sentinelStyle","Panel","ariaId","footer","bodyStyle","bodyProps","modalRender","onMouseDown","onMouseUp","sentinelStartRef","sentinelEndRef","_sentinelStartRef$cur","changeActive","activeElement","footerNode","headerNode","closer","contentStyle","MemoChildren","Content","destroyOnClose","mousePosition","dialogRef","setTransformOrigin","elementOffset","pos","parentWindow","maskProps","Dialog","_props$visible","_props$keyboard","keyboard","_props$focusTriggerAf","focusTriggerAfterClose","wrapStyle","wrapClassName","wrapProps","afterClose","_props$closable","_props$mask","maskStyle","lastOutSideActiveElementRef","contentRef","animatedVisible","setAnimatedVisible","contentClickRef","contentTimeoutRef","onWrapperClick","ESC","TAB","shiftKey","newVisible","_contentRef$current","preventScroll","DialogWrap","_props$destroyOnClose","_afterClose","flexGapSupported","canUseDocElement","HOOK_MARK","warningFunc","getFieldValue","getFieldsValue","getFieldError","getFieldWarning","getFieldsError","isFieldsTouched","isFieldTouched","isFieldValidating","isFieldsValidating","resetFields","setFields","setFieldValue","setFieldsValue","validateFields","submit","getInternalHooks","dispatch","initEntityValue","registerField","useSubscribe","setInitialValues","destroyForm","setCallbacks","registerWatch","getFields","setValidateMessages","setPreserve","getInitialValue","_extends","_getPrototypeOf","_setPrototypeOf","_construct","Parent","Class","Reflect","construct","sham","Proxy","_isNativeReflectConstruct","_wrapNativeSuper","_cache","Wrapper","formatRegExp","convertFieldsError","errors","fields","field","isEmptyValue","isNativeStringType","asyncSerialArray","arrLength","original","AsyncValidationError","_Error","subClass","superClass","asyncMap","objArr","_pending","flattenArr","flattenObjArr","firstFields","objArrKeys","objArrLength","results","pending","asyncParallelArray","complementError","rule","oe","fieldValue","fullFields","getValue","fullField","deepMerge","urlReg","required$1","messages","pattern$2","getMonth","getYear","word","includeBoundaries","v4","v6seg","v6","v46Exact","v4exact","v6exact","ip","exact","ipv4","ipv6","getUrlRegex","ENUM$1","rules","ruleType","validators","dateObject","any","newMessages","cloned","Schema","_messages","_proto","validate","source_","oc","messages$1","series","validator","getValidationMethod","getType","errorFields","doIt","deep","defaultField","addFullField","schema","errorList","suppressWarning","filledErrors","fieldsSchema","paredFieldsSchema","fieldSchema","fieldSchemaList","errs","finalErrors","asyncValidator","console","suppressValidatorError","_errors","messageIndex","AsyncValidator","replaceMessage","kv","CODE_LOGIC_ERROR","validateRule","_x3","_x4","_x5","_validateRule","messageVariables","cloneRule","originValidator","subRuleField","subResults","fillVariableResult","ruleIndex","mergedMessage","subValue","validateRules","namePath","validateFirst","summaryPromise","filledRules","currentRule","originValidatorFunc","hasPromise","catch","warningOnly","i2","_x6","_x7","rulePromises","_x9","_finishOnFirstFailed","finishOnFirstFailed","_x8","_finishOnAllFailed","finishOnAllFailed","_callee3","_context3","errorsList","_callee4","_context4","ruleError","getNamePath","cloneByNamePathList","store","namePathList","newStore","containsNamePath","matchNamePath","changedNamePath","every","nameUnit","defaultGetValueFromEvent","valuePropName","moveIndex","toIndex","EMPTY_ERRORS","requireUpdate","prevValue","nextValue","Field","resetCount","cancelRegisterFunc","mounted","touched","dirty","validatePromise","prevValidating","warnings","cancelRegister","preserve","isListField","_fieldContext$prefixN","fieldContext","prefixName","getRules","_this$props3$rules","metaCache","triggerMetaEvent","onMetaChange","meta","getMeta","onStoreChange","prevStore","_this$props4$dependen","dependencies","onReset","curValue","namePathMatch","reRender","validating","dependency","relatedFields","currentValue","triggerName","_ref2$validateOnly","validateOnly","rootPromise","_this$props5","_this$props5$validate","filteredRules","validateTrigger","ruleErrors","_ruleErrors$forEach","nextErrors","nextWarnings","_ref3$errors","isFieldDirty","initialValue","getErrors","getWarnings","isList","isPreserve","validated","getOnlyChild","getControlled","isFunction","_this$props6","getValueFromEvent","getValueProps","mergedValidateTrigger","mergedGetValueProps","originTriggerFunc","control","newValue","originTrigger","_this$props7","returnChildNode","_this$getOnlyChild","contextType","FieldContext","listContext","wrapperListContext","keyManager","parentPrefixName","getKey","pathName","_ref3$value","getNewValue","operations","indexSet","keysIndex","valueIndex","listValue","SPLIT","cell","NameMap","kvs","_cell$match","_cell$match2","unit","json","FormStore","forceRootUpdate","formHooked","subscribable","fieldEntities","initialValues","callbacks","lastValidatePromise","getForm","_init","prevWithoutPreserves","_this$prevWithoutPres","nextStore","updateStore","getFieldEntities","isMergedPreserve","initValue","watchList","notifyWatch","allValues","warningUnhooked","getFieldsMap","pure","getFieldEntitiesForNamePathList","nameList","INVALIDATE_NAME_PATH","filterFunc","mergedNameList","mergedFilterFunc","mergedStrict","strict","filteredNameList","_entity$isListField","_entity$isList","arg0","arg1","isAllFieldsTouched","shortNamePath","fieldNamePath","isNamePathListTouched","namePathListEntities","testField","resetWithFieldInitialValue","records","requiredFieldEntities","_requiredFieldEntitie","skipExist","notifyObservers","fieldData","fieldPreserve","mergedPreserve","subNamePath","_prevStore","triggerDependenciesUpdate","updateValue","_namePath","mergedInfo","childrenFields","getDependencyChildrenFields","onValuesChange","triggerOnFieldsChange","rootNamePath","dependencies2fields","dependencyNamePath","fillChildren","filedErrors","onFieldsChange","changedFields","fieldName","arg2","provideNameList","promiseList","TMP_SPLIT","validateNamePathList","_options","mergedErrors","mergedWarnings","hasError","allPromiseFinish","resultNamePathList","_ref7","returnPromise","outOfDate","triggerNamePathList","onFinish","onFinishFailed","formRef","formStore","FormContext","triggerFormChange","triggerFormFinish","registerForm","unregisterForm","_ref$component","_ref$validateTrigger","_onFieldsChange","_onFinish","formContext","_useForm","formInstance","_formInstance$getInte","childrenNode","mountRef","childrenRenderProps","prevFieldsRef","sourceKeys","targetKeys","sourceValue","targetValue","isSimilar","formContextValue","wrapperNode","onSubmit","_restProps$onReset","useWatchWarning","_args$","_args$2","_form","isFormInstance","setValue","valueStr","valueStrRef","isValidForm","namePathRef","nextValueStr","RefForm","FormProvider","onFormChange","onFormFinish","formsRef","forms","newForms","List","useForm","FormItemInputContext","NoFormStyle","override","formItemInputContext","newFormItemInputContext","newContext","isFormItemInput","hasFeedback","feedbackIcon","renderCloseIcon","Footer","_props$okType","okType","confirmLoading","onOk","onCancel","okButtonProps","cancelButtonProps","insetInlineEnd","genModalMaskStyle","WebkitOverflowScrolling","genModalStyle","_mediaMaxWidth$","paddingBottom","screenSMMax","paddingLG","titleColor","fontWeightStrong","titleFontSize","titleLineHeight","backgroundClip","paddingMD","paddingContentHorizontalLG","modalHeaderHeight","modalCloseBtnSize","modalCloseIconColor","textTransform","textRendering","modalIconHoverColor","wireframe","colorFillContentHover","headerBg","footerBg","genModalConfirmStyle","_$concat8","_$concat9","_confirmComponentCls","confirmComponentCls","flexWrap","flexBasis","modalConfirmIconSize","genRTLStyle","genWireframeStyle","_confirmComponentCls2","_ref8","modalHeaderPadding","borderBottom","modalHeaderBorderWidth","modalHeaderBorderStyle","modalHeaderBorderColorSplit","modalBodyPadding","modalFooterPaddingVertical","modalFooterPaddingHorizontal","borderTop","modalFooterBorderWidth","modalFooterBorderStyle","modalFooterBorderColorSplit","headerPaddingVertical","headerFontSize","fontSizeHeading5","headerLineHeight","lineHeightHeading5","modalToken","colorSplit","colorIconHover","colorIcon","pageX","pageY","handleCancel","centered","wrapClassNameExtended","dialogFooter","_useClosable","customCloseIconRender","defaultCloseIcon","mergedClosable","defaultClosable","useInnerClosable","useClosable","_useClosable2","ConfirmContent","_close","onConfirm","confirmPrefixCls","okCancel","staticLocale","mergedIcon","mergedOkCancel","autoFocusButton","mergedLocale","cancelButton","triggerCancel","defaultRootPrefixCls","param","_globalConfig","mergedGetContainer","configUpdate","withWarn","withInfo","withSuccess","withError","withConfirm","withPureRenderTheme","additionalProps","HookModal","hookAfterClose","setInnerConfig","newConfig","originConfig","ElementsHolder","_props","_usePatchElement","setElements","originElements","usePatchElement","_usePatchElement2","patchElement","actionQueue","setActionQueue","getConfirmFunc","withFunc","resolvePromise","closeFunc","modalRef","silent","confirmed","destroyAction","updateAction","confirm","modalWarn","useModal","warn","destroyAll","summaryConfig","vizConfig","loadingSummary","setVizConfig","summary","isModalOpen","setIsModalOpen","SamplesBox","samplesView","samples","React","CollapseBox","columnView","dtype","ChatBubbleOvalLeftIcon","HashtagIcon","CalendarDaysIcon","TagIcon","DocumentChartBarIcon","getIcon","properties","column","semantic_type","num_unique_values","std","ClipboardDocumentIcon","dataset_description","CodeBlock","language","setLoadingSummary","resetStates","setError","fileUrl","payLoad","Accept","textgen_config","fetchJSON","serverUrl","_objectSpread","goal","uploadFileUrl","ArrowUpOnSquareIcon","goals","loadingGoals","selectedGoal","setSelectedGoal","goalsList","goalDivWidth","question","visualization","rationale","LightBulbIcon","LaunchButton","BookmarkSquareIcon","_loop","responsiveArray","getResponsiveMap","screenXSMax","sm","screenSM","md","screenMD","lg","screenLG","xl","screenXL","xxl","screenXXL","validateBreakpoints","indexableToken","revBreakpoints","breakpoint","breakpointUpper","screenMin","screen","screenMax","nextBreakpointUpperMin","nextScreenMin","useResponsiveObserver","responsiveMap","subscribers","subUid","screens","matchHandlers","pointMap","subscribe","unsubscribe","paramToken","unregister","matchMediaQuery","mql","removeListener","matches","matchMedia","addListener","themeStyle","colorBgBase","toHsl","fillRule","colorFillTertiary","colorFillQuaternary","_useMemo","onBackground","toHexShortString","contentColor","genSharedEmptyStyle","_normal","emptyImgHeight","opacityImage","emptyImgHeightMD","emptyImgHeightSM","emptyToken","emptyImgCls","defaultEmptyImg","simpleEmptyImg","_a$image","imageStyle","des","imageNode","PRESENTED_IMAGE_DEFAULT","PRESENTED_IMAGE_SIMPLE","flexible","setFlexible","rowGap","detectFlexGapSupported","genGridRowStyle","flexFlow","genGridColStyle","genGridStyle","gridColumns","gridColumnsStyle","genLoopGridColumnsStyle","useRowStyle","useColStyle","gridToken","gridMediaSizesMap","screenSMMin","screenMDMin","screenLGMin","screenXLMin","screenXXLMin","screenSize","genGridMediaStyle","pre","cur","useMergePropByScreen","oriProp","setProp","curVal","calcMergeAlignOrJustify","Row","justify","_props$gutter","gutter","setScreens","curScreens","setCurScreens","mergeAlign","mergeJustify","supportFlexGap","useFlexGapSupport","gutterRef","responsiveObserver","currentGutter","_useRowStyle","_useRowStyle2","gutters","rowStyle","horizontalGutter","verticalGutter","marginLeft","marginRight","_gutters","_gutters2","gutterH","gutterV","rowContext","refreshOnChange","screensRef","supportScreens","ZERO","NINE","NUMPAD_ZERO","NUMPAD_NINE","BACKSPACE","DELETE","ARROW_UP","ARROW_DOWN","Options","goInputText","getValidValue","buildOptionText","handleChange","handleBlur","goButton","quickGo","relatedTarget","go","pageSize","pageSizeOptions","selectComponentClass","selectPrefixCls","Select","changeSelect","goInput","gotoButton","getPageSizeOptions","opt","Option","showSearch","optionLabelProp","onKeyUp","onBlur","showTitle","onKeyPress","calculatePage","paginationNode","getJumpPrevPage","showLessItems","getJumpNextPage","getItemIcon","isValid","shouldDisplayQuickJumper","showQuickJumper","handleKeyDown","handleKeyUp","currentInputValue","changePageSize","newCurrent","onShowSizeChange","_this$state","currentPage","newPage","hasPrev","hasNext","jumpPrev","jumpNext","runIfEnter","charCode","restParams","runIfEnterPrev","runIfEnterNext","runIfEnterJumpPrev","runIfEnterJumpNext","handleGoTO","renderPrev","prevPage","prevIcon","prevButton","isValidElement","cloneElement","renderNext","nextPage","nextIcon","nextButton","hasOnChange","_current","defaultCurrent","_pageSize","defaultPageSize","prevState","_lastCurrentNode$blur","lastCurrentNode","inputValue","allPages","showSizeChanger","totalBoundaryShowSizeChanger","hideOnSinglePage","showTotal","simple","showPrevNextJumpers","jumpPrevIcon","jumpNextIcon","_this$state2","pagerList","firstPager","lastPager","pageBufferSize","dataOrAriaAttributeProps","totalText","pagerProps","prevItemTitle","nextItemTitle","_active","prevDisabled","nextDisabled","getShowSizeChanger","newState","BaseSelectContext","useLock","timeoutRef","locked","UNDEFINED","InternalItem","invalidate","renderItem","responsive","responsiveDisabled","registerSize","itemKey","_props$component","mergedHidden","internalRegisterSize","overflowStyle","overflowProps","itemNode","Item","useBatcher","updateFuncRef","MessageChannel","channel","port1","onmessage","port2","postMessage","channelUpdate","unstable_batchedUpdates","useEffectState","notifyEffectUpdate","stateValue","setStateValue","OverflowContext","_excluded2","_excluded3","InternalRawItem","_restProps","contextClassName","restContext","RawItem","RESPONSIVE","INVALIDATE","defaultRenderRest","omittedItems","Overflow","renderRawItem","_props$itemWidth","itemWidth","ssr","renderRest","renderRawRest","suffix","itemComponent","fullySSR","_useEffectState","_useEffectState2","containerWidth","setContainerWidth","mergedContainerWidth","_useEffectState3","_useEffectState4","itemWidths","setItemWidths","_useEffectState5","_useEffectState6","prevRestWidth","setPrevRestWidth","_useEffectState7","_useEffectState8","restWidth","setRestWidth","_useEffectState9","_useEffectState10","suffixWidth","setSuffixWidth","suffixFixedStart","setSuffixFixedStart","displayCount","setDisplayCount","mergedDisplayCount","MAX_SAFE_INTEGER","_useState5","_useState6","restReady","setRestReady","itemPrefixCls","mergedRestWidth","isResponsive","shouldResponsive","showRest","useCallback","mergedRenderItem","updateDisplayCount","suffixFixedStartVal","notReady","getItemWidth","totalWidth","currentItemWidth","displayRest","suffixStyle","restNode","itemSharedProps","internalRenderItemNode","restContextProps","mergedRenderRest","overflowNode","ForwardOverflow","customizeIcon","customizeIconProps","_onMouseDown","WebkitUserSelect","unselectable","_inputNode2","_inputNode2$props","inputElement","autoComplete","editable","activeDescendantId","_onKeyDown","_onChange","onPaste","_onCompositionStart","onCompositionStart","_onCompositionEnd","onCompositionEnd","inputNode","_inputNode","originProps","onOriginKeyDown","onOriginChange","onOriginMouseDown","onOriginCompositionStart","onOriginCompositionEnd","readOnly","RefInput","isTitleType","getTitle","_value$key","onPreventMouseDown","effect","deps","autoClearSearchValue","inputRef","mode","maxTagCount","maxTagTextLength","_props$maxTagPlacehol","maxTagPlaceholder","omittedValues","tagRender","onToggleOpen","onInputChange","onInputPaste","onInputKeyDown","onInputMouseDown","onInputCompositionStart","onInputCompositionEnd","measureRef","inputWidth","setInputWidth","focused","setFocused","selectionPrefixCls","inputEditable","defaultRenderSelector","itemDisabled","onFocus","selectionNode","valueItem","displayLabel","strLabel","customizeRenderSelector","activeValue","inputChanged","setInputChanged","combobox","hasTextInput","selectionTitle","hiddenStyle","renderPlaceholder","Selector","compositionStatusRef","tokenWithEnter","onSearch","onSearchSubmit","domRef","_useLock","_useLock2","getInputMouseDown","setInputMouseDown","pastedTextRef","triggerOnSearch","sharedProps","currentKeyCode","which","UP","DOWN","SHIFT","WIN_KEY","ALT","META","WIN_KEY_RIGHT","CTRL","SEMICOLON","EQUALS","CAPS_LOCK","CONTEXT_MENU","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","replacedText","clipboardData","getData","selectNode","MultipleSelector","msTouchAction","inputMouseDown","ForwardSelector","SelectTrigger","dropdownStyle","dropdownClassName","_props$direction","dropdownRender","dropdownAlign","dropdownPrefixCls","popupNode","mergedBuiltinPlacements","getBuiltInPlacements","mergedTransitionName","popupRef","getPopupElement","RefSelectTrigger","fillFieldNames","fieldNames","childrenAsData","mergedLabel","groupLabel","injectPropsWithOption","newOption","DEFAULT_OMIT_PROPS","BaseSelect","_customizeRawInputEle","omitDomProps","displayValues","onDisplayValuesChange","emptyOptions","_props$notFoundConten","notFoundContent","onClear","getInputElement","getRawInputElement","onDropdownVisibleChange","onActiveValueChange","onSearchSplit","tokenSeparators","allowClear","suffixIcon","clearIcon","OptionList","_props$showAction","mergedShowSearch","domProps","selectorDomRef","selectorRef","listRef","_useDelayReset","bool","setBool","cancelLatest","useDelayReset","_useDelayReset2","mockFocused","setMockFocused","cancelSetMockFocused","_selectorRef$current","_selectorRef$current2","scrollTo","_listRef$current","mergedSearchValue","_displayValues$","customizeInputElement","customizeRawInputElement","customizeRawInputRef","rendered","setRendered","innerOpen","setInnerOpen","emptyListContent","newOpen","tokenSeparator","onInternalSearch","searchText","fromTyping","isCompositing","newSearchText","patchLabels","tokens","separate","restTokens","prevList","unitStr","getSeparatedContent","getClearLock","setClearLock","focusRef","activeTimeoutIds","onTriggerVisibleChange","_containerRef$current","newWidth","ceil","customizedTrigger","onGlobalMouseDown","shadowRoot","composed","composedPath","useSelectTriggerControl","_triggerRef$current2","arrowNode","baseSelectContext","toggleOpen","showSuffixIcon","renderNode","_useAllowClear","onClearMouseDown","mergedClearIcon","useAllowClear","_selectorRef$current4","mergedAllowClear","clearNode","optionList","mergedClassName","selectorNode","newValues","_triggerRef$current","_selectorRef$current3","restArgs","_listRef$current2","clearLock","cloneDisplayValues","removedDisplayValue","_listRef$current3","search","nodes","optionOnly","isSelectOptGroup","_ref2$props","_ref$props","convertNodeToOption","useRefFunc","funcRef","cacheFn","OptGroup","isSelectOption","Filler","onInnerResize","innerProps","innerStyle","getPageY","ScrollBar","moveRaf","scrollbarRef","thumbRef","visibleTimeout","startTop","delayHidden","onScrollbarTouchStart","onContainerMouseDown","patchEvents","removeEvents","onStartMove","getTop","newTop","enableScrollRange","getEnableScrollRange","enableHeightRange","getEnableHeightRange","newScrollTop","onStopMove","getSpinHeight","baseHeight","showScroll","prevProps","_this$scrollbarRef$cu","_this$thumbRef$curren","spinHeight","canScroll","mergedVisible","scrollBarDirection","refFunc","CacheMap","maps","useDiffItem","onDiff","prevData","setPrevData","diffItem","setDiffItem","originList","targetList","shortList","longList","originLen","notExistKey","__EMPTY_ITEM__","getItemKey","diffIndex","shortKey","findListDiffIndex","isScrollAtTop","isScrollAtBottom","lockTimeoutRef","scrollPingRef","deltaY","smoothOffset","originScroll","SMOOTH_PTG","EMPTY_DATA","ScrollStyle","overflowAnchor","RawList","itemHeight","_props$fullHeight","fullHeight","useVirtual","inVirtual","setScrollTop","scrollMoving","setScrollMoving","componentRef","fillerInnerRef","scrollBarRef","sharedConfig","syncScrollTop","alignedTop","maxScrollHeightRef","keepInRange","rangeRef","diffItemRef","_useDiffItem","_useHeights","onItemAdd","onItemRemove","updatedMark","setUpdatedMark","instanceRef","heightsRef","collectRafRef","cancelRaf","collectHeight","htmlElement","useHeights","_useHeights2","setInstanceRef","heights","heightUpdatedMark","_React$useMemo","_fillerInnerRef$curre","startIndex","startOffset","endIndex","itemTop","dataLen","cacheHeight","currentItemBottom","maxScrollHeight","useOriginScroll","_useFrameWheel","onWheelDelta","offsetRef","nextFrameRef","wheelValueRef","isMouseScrollRef","patchMultiple","detail","useFrameWheel","_useFrameWheel2","onRawWheel","onFireFoxScroll","cleanUpEvents","touchedRef","touchYRef","intervalRef","onTouchMove","currentY","onTouchEnd","onTouchStart","useMobileTouchMove","onMozMousePixelScroll","triggerFlash","scrollRef","_arg$offset","syncScroll","targetAlign","needCollectHeight","newTargetAlign","mergedAlign","stackTop","itemBottom","maxLen","useScrollTo","_scrollBarRef$current","renderList","listChildren","setNodeRef","renderFunc","useChildren","componentStyle","_useBaseProps","onPopupScroll","flattenOptions","onActiveValue","defaultActiveFirstOption","onSelect","menuItemSelectedIcon","rawValues","listHeight","listItemHeight","memoFlattenOptions","onListMouseDown","scrollIntoView","getEnabledActiveIndex","_memoFlattenOptions$c","activeIndex","setActiveIndex","setActive","fromKeyboard","flattenItem","isSelected","onSelectValue","selected","ctrlKey","appVersion","nextActiveIndex","omitFieldNameList","getLabel","getItemAriaProps","itemData","a11yProps","itemIndex","groupOption","_data$title","groupTitle","optionPrefixCls","optionClassName","iconVisible","optionTitle","RefOptionList","OMIT_DOM_PROPS","backfill","_props$autoClearSearc","onDeselect","_props$dropdownMatchS","filterOption","filterSort","optionFilterProp","_props$listHeight","_props$listItemHeight","labelInValue","mergedFilterOption","mergedFieldNames","setSearchValue","parsedOptions","mergedOptions","valueOptions","labelOptions","setLabelOptions","labelOptionsMap","dig","isChildren","useOptions","convert2LabelValues","draftValues","rawValue","rawLabel","rawKey","rawDisabled","rawTitle","_val$value","isRawValue","_option$key","_useMergedState3","_useMergedState4","internalValue","setInternalValue","rawLabeledValues","_values$","isComboNoValue","_useCache","labeledValues","cacheRef","_cacheRef$current","prevValueCache","prevOptionCache","patchedValues","_prevValueCache$get","valueCache","optionCache","useCache","_useCache2","mergedValues","getMixedOption","firstValue","_item$label","_mergedValues$","strValue","hasValue","createTagOption","filledTagOptions","cloneOptions","existOptions","filteredOptions","fieldOptions","fieldLabel","customizeFilter","upperSearch","wrapOption","subOptions","subItem","useFilterOptions","filledSearchOptions","orderedFilteredOptions","displayOptions","flattenList","_fillFieldNames","isGroupOption","grpLabel","triggerChange","newVal","_mergedValues$index","returnValues","returnOptions","setActiveValue","accessibilityIndex","setAccessibilityIndex","mergedDefaultActiveFirstOption","_ref2$source","triggerSelect","getSelectEnt","_option$key2","_getSelectEnt","_getSelectEnt2","wrappedValue","_option","_getSelectEnt3","_getSelectEnt4","_wrappedValue","_option2","onInternalSelect","cloneValues","mergedSelect","selectContext","realVirtual","nextValues","formatted","newRawValues","words","patchValues","newRawValue","TypedSelect","slideUpIn","slideUpOut","slideDownIn","slideDownOut","slideLeftIn","slideLeftOut","slideRightIn","slideRightOut","slideMotion","initSlideMotion","_slideMotion$motionNa","motionEaseInQuint","moveDownIn","moveDownOut","moveLeftIn","moveLeftOut","moveRightIn","moveRightOut","moveMotion","initMoveMotion","_moveMotion$motionNam","genItemStyle","controlPaddingHorizontal","_disabled","selectItemCls","slideUpEnterActive","slideUpAppearActive","slideUpLeaveActive","dropdownPlacementCls","paddingXXS","controlItemBgActive","getSelectItemStyle","selectItemDist","genSizeStyle","selectOverflowPrefixCls","selectItemHeight","_getSelectItemStyle","alignSelf","FIXED_ITEM_MARGIN","fontSizeIcon","textOverflow","inputPaddingHorizontalBase","_$concat$concat3","_getSelectItemStyle3","smSelectItemMargin","controlPaddingHorizontalSM","selectHeightWithoutBorder","selectionItemPadding","colorTextPlaceholder","_not$concat2","inputPaddingHorizontalSM","genStatusStyle","rootSelectCls","overwriteDefaultBorder","borderHoverColor","outlineColor","overwriteStyle","_Object$assign3","genSelectorStyle","appearance","getSearchInputWithoutBorderStyle","colorTextQuaternary","colorTextTertiary","genSelectStyle","colorWarningHover","colorWarningOutline","selectToken","useBuiltinPlacements","buildInPlacements","SECRET_COMBOBOX_MODE_DO_NOT_USE","InternalSelect","mergedNotFound","_a$bordered","bordered","_a$listHeight","_a$listItemHeight","customStatus","propDirection","renderEmpty","contextDirection","contextPopupMatchSelectWidth","select","isMultiple","useShowArrow","mergedPopupMatchSelectWidth","_React$useContext2","contextStatus","getMergedStatus","_getIcons","getSuffixIconNode","arrowIcon","mergedSuffixIcon","itemIcon","getIcons","selectProps","rcSelectRtlDropdownClassName","mergedSize","getStatusClassNames","memoPlacement","defaultPrefixCls","getDropdownCls","postProps","setPopupHeight","setPopupWidth","dropdownCls","mergedProps","genPurePanel","MiniSelect","MiddleSelect","genHoverStyle","inputBorderHoverColor","borderInlineEndWidth","genActiveStyle","genInputLargeStyle","inputPaddingVerticalLG","lineHeightLG","inputPaddingHorizontalLG","genInputSmallStyle","inputPaddingVerticalSM","colorWarningBorderHover","inputBorderActiveColor","genBasicInputStyle","inputPaddingVertical","inputPaddingHorizontal","borderWidth","genPlaceholderStyle","resize","genInputStyle","_typeColor","colorSmallPadding","paddingTop","genAffixStyle","inputAffixPadding","genAllowClearStyle","_wrapper","_addon","_$concat$concat5","borderCollapse","borderSpacing","borderInlineEnd","borderInlineStart","genInputGroupStyle","genSearchInputStyle","_$concat7","_$concat10","_searchPrefixCls","searchPrefixCls","insetBlockEnd","initInputToken","genTextAreaStyle","_showCount","_$concat11","_affixWrapper$conc2","_textareaPrefixCls","textareaPrefixCls","genPaginationStyle","inputToken","itemSize","paginationItemPaddingInline","itemActiveBg","genPaginationItemStyle","_hover2","_$concat$concat7","_$concat$concat8","letterSpacing","paginationEllipsisLetterSpacing","textIndent","paginationEllipsisTextIndent","paginationSlashMarginInlineEnd","paginationSlashMarginInlineStart","genPaginationJumpStyle","itemSizeSM","itemInputBg","inputOutlineOffset","genPaginationSimpleStyle","paginationMiniOptionsMarginInlineStart","miniOptionsSizeChangerTop","paginationMiniQuickJumperInputWidth","genPaginationMiniStyle","itemActiveBgDisabled","itemActiveColorDisabled","genPaginationDisabledStyle","genBorderedStyle","_$concat$concat9","_$concat$concat$conca","_$concat$concat11","_$concat$concat12","itemBg","itemLinkBg","genPaginationFocusStyle","_$concat$concat14","paginationToken","controlItemBgActiveDisabled","customizeSelectPrefixCls","customLocale","_React$useContext$pag","mergedShowSizeChanger","iconsProps","ellipsis","RightOutlined","isSmall","extendedClassName","debounce","_ref$atBegin","atBegin","timeoutID","_ref$noTrailing","noTrailing","_ref$noLeading","noLeading","_ref$debounceMode","debounceMode","cancelled","lastExec","clearExistingTimeout","wrapper","arguments_","_ref2$upcomingOnly","upcomingOnly","antSpinMove","antRotate","genSpinStyle","_sm","_lg","_div$concat","_nestedLoading","contentHeight","spinDotSize","textShadow","spinDotSizeSM","spinDotSizeLG","spinDotDefault","animationDelay","spinToken","defaultIndicator","Spin","spinPrefixCls","_props$spinning","spinning","customSpinning","_props$delay","tip","shouldDelay","setSpinning","showSpinning","isNestedPattern","spinClassName","containerClassName","spinElement","indicator","dotClassName","renderIndicator","SpinFC","spinClassProps","setDefaultIndicator","sizes","Col","pull","_useColStyle","_useColStyle2","sizeClassObj","sizeProps","propSize","paddingLeft","paddingRight","parseFlex","Consumer","colStyle","_useContext2","grid","itemLayout","actionsContent","itemChildren","Meta","listBorderedCls","itemPaddingSM","itemPaddingLG","paddingInline","genResponsiveStyle","_mediaScreenAndM","_mediaScreenAndM2","contentWidth","_$concat12","itemPadding","emptyTextPadding","metaMarginBottom","avatarMarginRight","titleMarginBottom","descriptionFontSize","alignCls","paddingBlock","marginXXL","marginBlockEnd","borderBlockEnd","listToken","paddingContentVertical","paddingContentVerticalSM","paddingContentVerticalLG","_a$pagination","_a$split","loadMore","_a$dataSource","dataSource","header","_a$loading","rowKey","paginationObj","paginationCurrent","setPaginationCurrent","paginationSize","setPaginationSize","triggerPaginationEvent","onPaginationChange","onPaginationShowSizeChange","loadingProp","paginationProps","largestPage","paginationContent","splitDataSource","needResponsive","currentBreakpoint","columnCount","childrenContent","renderInnerItem","paginationPosition","contextValue","TabPane","tabKey","TabPanelList","activeKey","animated","tabPosition","destroyInactiveTabPane","TabContext","tabPaneAnimated","tabPane","tabPanePrefixCls","paneStyle","paneClassName","restTabProps","tabPaneMotion","DEFAULT_SIZE","useSyncState","defaultState","stateRef","MIN_SWIPE_DISTANCE","STOP_SWIPE_DISTANCE","REFRESH_INTERVAL","SPEED_OFF_MULTIPLE","useUpdate","setCount","effectRef","callbackRef","_callbackRef$current","tgt","RC_TABS_DOUBLE_QUOTE","genDataNodeKey","getRemovable","AddButton","showAdd","addAriaLabel","onEdit","addIcon","ExtraContent","assertExtra","Overlay","overlayNode","composedRef","Dropdown","_children$props","_props$placements","triggerVisible","setTriggerVisible","overlayRef","handleVisibleChange","focusMenuRef","handleCloseMenuAndReturnFocus","_triggerRef$current$f","focusMenu","_overlayRef$current","focusResult","useAccessibility","minOverlayWidthMatchTrigger","getMenuElement","triggerHideAction","onOverlayClick","IdContext","getMenuId","useMenuId","MenuContext","InheritableContextProvider","inheritableContext","mergeProps","EmptyList","PathRegisterContext","useMeasure","PathTrackerContext","useFullPath","parentKeyPath","PathUserContext","focusable","includePositive","nodeName","isFocusableElement","isContentEditable","tabIndexAttr","tabIndexNum","getFocusNodeList","querySelectorAll","LEFT","RIGHT","HOME","END","ArrowKeys","getFocusableElements","getNextFocusElement","parentQueryContainer","focusMenuElement","sameLevelFocusableMenuElementList","focusIndex","getKeys","getKeyPath","triggerActiveKey","triggerAccessibilityOpen","originOnKeyDown","rafRef","activeRef","cleanRaf","key2element","element2key","refreshElements","getFocusElement","focusMenuKey","offsetObj","isRootLevel","_inline","_horizontal","_vertical","_offsets","inlineTrigger","horizontal","vertical","inlineSub","horizontalSub","verticalSub","sibling","getOffset","tryFocus","menuElement","focusTargetElement","link","targetKey","targetElement","findContainerUL","focusableElements","controlId","keyPath","parentKey","parentMenuElement","PATH_SPLIT","getPathStr","OVERFLOW_KEY","useKeyRecords","internalForceUpdate","key2pathRef","path2keyRef","overflowKeys","setOverflowKeys","updateRef","destroyRef","registerPath","connectedPath","unregisterPath","refreshOverflowKeys","includeOverflow","isSubPathKey","pathKeys","pathKey","getSubPathKeys","useMemoCallback","funRef","_funRef$current","uniquePrefix","internalId","useActive","onActive","onInactive","domEvent","useDirectionStyle","inlineIndent","warnItemProp","restInfo","LegacyMenuItem","attribute","InternalMenuItem","warnKey","domDataId","onItemClick","contextDisabled","overflowDisabled","contextItemIcon","selectedKeys","_internalRenderMenuItem","legacyMenuItemRef","mergedEleRef","connectedKeys","getEventInfo","mergedItemIcon","_useActive","activeProps","directionStyle","optionRoleProps","MenuItem","measure","connectedKeyPath","InternalSubMenuList","SubMenuList","parseChildren","_eventKey","_child$props","placementsRtl","defaultMotions","popupPlacementMap","PopupTrigger","popupOffset","subMenuOpenDelay","subMenuCloseDelay","triggerSubMenuAction","forceSubMenuRender","innerVisible","setInnerVisible","targetMotion","targetMotionRef","mergedMotion","visibleRef","InlineSubMenuList","fixedMode","sameModeRef","setDestroy","originOnVisibleChanged","InternalSubMenu","internalPopupClose","expandIcon","onTitleClick","onTitleMouseEnter","onTitleMouseLeave","openKeys","contextExpandIcon","_internalRenderSubMenuItem","subMenuPrefixCls","mergedExpandIcon","childrenSelected","childrenActive","setChildrenActive","triggerChildrenActive","newActive","mergedActive","onMergedItemClick","popupId","titleNode","isOpen","isSubMenu","triggerModeRef","triggerMode","listNode","SubMenu","InternalMenuItemGroup","groupPrefixCls","MenuItemGroup","Divider","convertItemsToNodes","parseItems","childNodes","Menu","_childList$","_ref$prefixCls","_ref$tabIndex","_ref$mode","inlineCollapsed","disabledOverflow","_ref$subMenuOpenDelay","_ref$subMenuCloseDela","defaultOpenKeys","defaultActiveFirst","_ref$selectable","selectable","_ref$multiple","defaultSelectedKeys","_ref$inlineIndent","_ref$triggerSubMenuAc","_ref$overflowedIndica","overflowedIndicator","overflowedIndicatorPopupClassName","openAnimation","openTransitionName","setMounted","setUUID","useUUID","mergedOpenKeys","setMergedOpenKeys","triggerOpenKeys","doUpdate","inlineCacheOpenKeys","setInlineCacheOpenKeys","_React$useMemo2","mergedMode","mergedInlineCollapsed","isInlineMode","internalMode","setInternalMode","internalInlineCollapsed","setInternalInlineCollapsed","lastVisibleIndex","setLastVisibleIndex","allVisible","_useKeyRecords","registerPathContext","pathUserContext","mergedActiveKey","setMergedActiveKey","_childList$find","_containerRef$current2","_containerRef$current3","shouldFocusKey","_useMergedState5","_useMergedState6","mergedSelectKeys","setMergedSelectKeys","onInternalClick","newSelectKeys","selectInfo","triggerSelection","onInternalOpenChange","newOpenKeys","subPathKeys","onInternalKeyDown","privateContext","wrappedChildList","dir","omitItems","originOmitItems","newLastIndex","ExportMenu","ItemGroup","OperationNode","_ref$moreIcon","moreIcon","moreTransitionName","tabBarGutter","removeAriaLabel","onTabClick","selectedKey","setSelectedKey","dropdownPrefix","selectedItemId","dropdownAriaLabel","tab","removable","onRemoveTab","selectOffset","enabledTabs","selectedIndex","moreStyle","moreNode","_ref$tab","renderWrapper","tabPrefix","refObj","_ref$offsetWidth","_ref$offsetHeight","getUnitValue","tabPositionTopOrBottom","TabNavList","onTabScroll","extraLeftRef","extraRightRef","tabsWrapperRef","tabListRef","operationsRef","innerAddButtonRef","_useSyncState","_useSyncState2","transformLeft","setTransformLeft","_useSyncState3","_useSyncState4","transformTop","setTransformTop","containerExcludeExtraSize","setContainerExcludeExtraSize","tabContentSize","setTabContentSize","addSize","setAddSize","_useState7","_useState8","operationSize","setOperationSize","_useUpdateState","batchRef","flushUpdate","useUpdateState","_useUpdateState2","tabSizes","setTabSizes","tabOffsets","holderScrollWidth","_tabs$","lastOffset","rightOffset","_tabs","useOffsets","containerExcludeExtraSizeValue","tabContentSizeValue","addSizeValue","operationSizeValue","needScroll","visibleTabContentValue","operationsHiddenClassName","transformMin","transformMax","alignInRange","touchMovingRef","_useState9","_useState10","lockAnimation","setLockAnimation","doLockAnimation","clearTouchMoving","onOffset","touchPosition","setTouchPosition","lastTimestamp","setLastTimestamp","lastTimeDiff","setLastTimeDiff","setLastOffset","lastWheelDirectionRef","touchEventsRef","_e$touches$","screenX","screenY","_e$touches$2","distanceX","distanceY","absX","absY","currentX","onWheel","deltaX","mixed","onProxyTouchMove","onProxyTouchEnd","useTouchMove","doMove","_useVisibleRange","addNodeSizeValue","operationNodeSizeValue","charUnit","transformSize","useVisibleRange","_useVisibleRange2","visibleStart","visibleEnd","scrollToTab","tabOffset","newTransform","_newTransform","tabNodeStyle","tabNodes","updateTabSizes","newSizes","_tabListRef$current","btnNode","onListHolderResize","containerSize","extraLeftSize","extraRightSize","newAddSize","newOperationSize","tabContentFullSize","startHiddenTabs","endHiddenTabs","hiddenTabs","_useState11","_useState12","inkStyle","setInkStyle","activeTabOffset","inkBarRafRef","cleanInkBarRaf","newInkStyle","pingLeft","pingRight","pingTop","pingBottom","hasDropdown","wrapPrefix","inkBar","tabMoving","TabNavListWrapper","renderTabBar","tabNavBarProps","panes","Tabs","defaultActiveKey","_ref$tabPosition","tabBarStyle","tabBarExtraContent","mergedAnimated","useAnimateConfig","_tabs$newActiveIndex","newActiveIndex","setMergedId","isActiveChanged","tabNavBar","genCardStyle","_$concat$concat4","tabsCardPadding","cardBg","cardGutter","colorBorderSecondary","itemSelectedColor","borderBottomColor","borderRightColor","borderLeftColor","genDropdownStyle","itemHoverColor","dropdownEdgeChildVerticalPadding","tabsDropdownHeight","listStyleType","tabsDropdownWidth","genPositionStyle","_$concat$concat10","horizontalMargin","verticalItemPadding","verticalItemMargin","lineWidthBold","boxShadowTabsOverflowLeft","boxShadowTabsOverflowRight","boxShadowTabsOverflowTop","boxShadowTabsOverflowBottom","borderLeft","borderRight","_$concat19","_$concat22","cardPaddingSM","cardPaddingLG","horizontalItemPaddingSM","horizontalItemPaddingLG","titleFontSizeSM","titleFontSizeLG","_$concat24","_$concat26","_$concat27","_rtlCls","tabsHorizontalItemMarginRTL","rtlCls","genTabsStyle","_$concat$concat21","cardHeight","itemActiveColor","inkBarColor","_tabCls","tabsHorizontalItemMargin","horizontalItemPadding","tabCls","tabsActiveTextShadow","genTabStyle","tabsToken","cardPadding","horizontalItemGutter","horizontalItemMargin","horizontalItemMarginRTL","customSize","_onEdit","hideAdd","_otherProps$moreIcon","editType","mergedItems","childrenItems","useLegacyItems","EMPTY","shallowEqual","aKeys","bKeys","_hasOwnProperty","_objectKeys","_deepClone","charCodeAt","escapePathComponent","unescapePathComponent","hasUndefined","i_1","objKeys","objKeysLength","patchErrorMessageFormatter","messageParts","PatchError","operation","_newTarget","JsonPatchError","deepClone","objOps","newDocument","getValueByPointer","originalValue","applyOperation","valueToCopy","_areEquals","_get","arrOps","pointer","getOriginalDestination","validateOperation","mutateDocument","banPrototypeModifications","returnValue","existingPathFragment","validateFunction","applyPatch","patch","applyReducer","operationResult","pathLen","existingPathLen","externalValidator","arrA","arrB","beforeDict","Mirror","ObserverInfo","mirror","getMirror","observerInfo","getObserverFromMirror","dirtyCheck","generate","fastCheck","patches","removeObserverFromMirror","invertible","_generate","newKeys","oldKeys","deleted","oldVal","tree1","tree2","accessor","fname","accessorName","accessorFields","getter","get1","getN","splitAccessPath","truthy","falsy","log$1","None","Error$1","logger","_level","isLegalKey","configs","signals","mergeNamed","writeConfig","peek","toNumber","sign","symlog","log1p","symexp","expm1","pan","lift","ground","dd","panLinear","panLog","panPow","panSymlog","constant","da","zoomLinear","zoomLog","zoomPow","zoomSymlog","quarter","utcquarter","getUTCMonth","clampRange","lo","hi","DESCENDING","orders","ord","fmap","comparator","ascending","compare1","compareN","tid","extentIndex","hop","_has","property","NULL","fastmap","_test","has$1","clean","flush","threshold","members","inrange","isBoolean","isDate","isIterable","lerp","frac","DEFAULT_MAX_SIZE","lruCache","maxsize","merge","array0","array1","reps","pad","padchar","toBoolean","defaultParser","parser","toSet","truncate","visitArray","visitor","EOL","EOF","QUOTE","NEWLINE","RETURN","objectConverter","columns","inferColumns","columnSet","formatDate","hours","getUTCHours","minutes","getUTCMinutes","seconds","getUTCSeconds","milliseconds","getUTCMilliseconds","getUTCFullYear","getUTCDate","delimiter","reFormat","DELIMITER","parseRows","I","eof","eol","preformatBody","formatValue","formatRow","convert","customConverter","formatBody","formatRows","topology","objects","features","geometries","geometry","transformPoint","kx","ky","arcs","arc","ring","polygon","coordinates","stitchedArcs","fragmentByStart","fragmentByEnd","fragments","emptyIndex","dp","ends","fg","gf","meshArcs","geom","geomsByArc","extract0","extract1","extract2","extract3","geoms","extractArcs","stitch","e10","e5","e2","tickSpec","inc","log10","factor","ticks","_i2","_i3","tickIncrement","tickStep","prefixExponent","formatSpecifier","specifier","FormatSpecifier","comma","formatDecimalParts","toExponential","coefficient","toLocaleString","toPrecision","_p","formatRounded","formatPrefix","prefixes","grouping","thousands","currencyPrefix","currency","currencySuffix","decimal","numerals","formatNumerals","minus","nan","newFormat","formatTypes","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","formatTrim","timeInterval","floori","offseti","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationMonth","durationYear","timeDay","setHours","setDate","getDate","getTimezoneOffset","utcDay","setUTCHours","setUTCDate","unixDay","timeWeekday","getDay","timeSunday","timeMonday","timeTuesday","timeWednesday","timeThursday","timeFriday","timeSaturday","utcWeekday","getUTCDay","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","timeYear","setMonth","setFullYear","getFullYear","utcYear","setUTCMonth","setUTCFullYear","timeMonth","utcMonth","timeHour","getMilliseconds","getSeconds","getMinutes","getHours","utcHour","setUTCMinutes","timeMinute","utcMinute","setUTCSeconds","second","millisecond","_defaultSpecifiers","_localGet","_localInv","_utcGet","_utcInv","_timeIntervals","_utcIntervals","descending","bisector","compare2","YEAR","QUARTER","MONTH","WEEK","DATE","DAY","DAYOFYEAR","HOURS","MINUTES","SECONDS","MILLISECONDS","TIME_UNITS","UNITS","timeUnits","units","defaultSpecifiers","timeUnitSpecifier","specifiers","fmt","localYear","dayofyear","localDayOfYear","week","localWeekNum","localFirst","localDate","H","M","S","L","utcdayofyear","utcDayOfYear","utcweek","utcWeekNum","UTC","utcFirst","utcDate","inv","newDate","phase","getUnit","weekday","day","firstDay","localGet","localInv","timeFloor","utcGet","utcInv","utcFloor","timeIntervals","utcIntervals","utcInterval","ival","timeOffset","utcOffset","timeSequence","utcSequence","Milli","Seconds","Minutes","Hours","Day","Month","Year","intervals","bin","ext","extent","maxbins","formatLocale","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","days","locale_shortWeekdays","shortDays","locale_months","months","locale_shortMonths","shortMonths","periodRe","formatRe","periodLookup","formatLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","formatDayOfMonth","formatMicroseconds","formatYearISO","formatFullYearISO","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMonthNumber","formatMinutes","formatUnixTimestamp","formatUnixTimestampSeconds","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatFullYear","formatZone","formatLiteralPercent","utcFormats","formatUTCDayOfMonth","formatUTCMicroseconds","formatUTCYearISO","formatUTCFullYearISO","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","formatUTCWeekNumberSunday","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","parses","parseSpecifier","parseDayOfMonth","parseMicroseconds","parseYear","parseFullYear","parseHour24","parseDayOfYear","parseMilliseconds","parseMonthNumber","parseMinutes","parseQuarter","parseUnixTimestamp","parseUnixTimestampSeconds","parseSeconds","parseWeekdayNumberMonday","parseWeekNumberSunday","parseWeekNumberISO","parseWeekdayNumberSunday","parseWeekNumberMonday","parseZone","parseLiteralPercent","pads","newParse","Z","V","U","utcFormat","utcParse","timeFormat","timeParse","defaultNumberLocale","defaultTimeLocale","numberRe","percentRe","requoteRe","requote","names","dISO","dow","UTCdISO","spec","numberLocale","formatFloat","numberFormat","decimalChar","dec","lastIndexOf","rightmostDigit","trimZeroes","formatSpan","precisionPrefix","precisionRound","precisionFixed","resetNumberFormatDefaultLocale","numberFormatLocale","numberFormatDefaultLocale","timeMultiFormat","minute","hour","timeLocale","_timeFormat","_utcFormat","resetTimeFormatDefaultLocale","timeFormatLocale","createLocale","numberSpec","timeSpec","resetDefaultLocale","protocol_re","allowed_re","whitespace_re","fileProtocol","load","_load","uri","sanitize","localFile","http","_sanitize","fileAccess","loadFile","isAllowed","hasProtocol","baseURL","defaultProtocol","fileLoader","fs","readFile","fileReject","_fileReject","httpLoader","fetch","httpReject","_httpReject","_callee5","_context5","typeParsers","unknown","typeTests","typeList","inferTypes","inferType","delimitedFormat","delim","responseType","dsv","parseJSON","filters","interior","exterior","topojson","feature","mesh","csv","tsv","read","timeParser","utcParser","datum","parsers","parts","loader","loaderFactory","_createForOfIteratorHelper","allowArrayLike","minLen","_arrayLikeToArray","_unsupportedIterableToArray","F","normalCompletion","didErr","_e2","return","arr2","UniqueList","idFunc","ids","asyncCallback","_asyncCallback","TUPLE_ID_KEY","TUPLE_ID","isTuple","tupleid","setid","ingest$1","derive","rederive","stableCompare","isChangeSet","changeset","rem","mod","remp","modp","_clean","_reflow","insert","tuple","encode","reflow","pulse","_pulse","tuples","modifies","CACHE","Parameters","force","modified","_k","OP_ID","NO_PARAMS","Operator","react","stamp","rank","qrank","flag","bit","targets","_targets","initonly","argval","_argval","argops","_argops","marshall","detach","evaluate","StopPropagation","run","rv","STREAM_ID","EventStream","receive","_filter","_apply","stream","_request","_preload","loadPending","requests","consume","_consume","trg","pause","dataflow","between","SKIP","onStream","touch","onOperator","connect","Pulse","_materialize","visit","addFilter","MultiPulse","pulses","_step","_iterator","_pulse2","hash","changed","ADD","REM","MOD","_evaluate","prerun","postrun","pr","reentrant","_touched","_clock","_enqueue","_heap","_getPulse","_input","_postrun","priority","runAsync","_runAsync","_this3","_running","ADD_REM","ADD_MOD","ALL","REFLOW","SOURCE","NO_SOURCE","NO_FIELDS","fork","materialize","addAll","addF","remF","modF","srcF","cleans","runAfter","nomod","_filter2","NO_OPT","Heap","siftdown","ridx","cidx","siftup","pidx","Dataflow","logLevel","_rank","_locale","_loader","logMethod","_log","Transform","_logger","cleanThreshold","sources","targetRank","rerank","ingest","preload","_x10","_x11","_x12","_x13","enqueue","singlePulse","transforms","Definition","valueof","_step2","_iterator2","_value","compareDefined","sd","swap","_marked","numbers","quantile","value0","subarray","quantileSorted","deviation","mean","variance","quantiles","quartiles","estimateBandwidth","minstep","maxb","logb","eps","nice","setRandom","bootstrapCI","mu","dotbin","thresh","smoothing","seed","sample","cdf","icdf","SQRT2PI","SQRT2","nextSample","sampleNormal","stdev","rds","densityNormal","cumulativeNormal","cd","_exp","quantileNormal","erfinv","gaussian","kde","support","_bandwidth","sampleLogNormal","densityLogNormal","cumulativeLogNormal","quantileLogNormal","lognormal","mixture","dists","_weights","weights","distributions","sampleUniform","densityUniform","cumulativeUniform","quantileUniform","uniform","_step3","_iterator3","_step4","_iterator4","_step5","_iterator5","_points","_ols","c0","_points3","_points4","poly","_points5","_points6","_points7","_points8","_ols3","_ols4","MIN_RADIANS","sampleCurve","minSteps","maxSteps","sx","sy","ymin","ymax","pm","angleDelta","groupkey","measureName","as","base_op","AggregateOps","__count__","missing","mean_d","average","req","dev","variancep","stdevp","stderr","distinct","ci0","ci1","q2","q1","q3","argmin","argmax","ValidAggregateOps","createMeasure","compareIndex","_ops","_this4","_out","compileMeasures","agg","getreqs","ctr","TupleStore","prototype$1","Aggregate","_adds","_mods","_alen","_mlen","_drop","_cross","_dims","_dnames","_measures","_countOnly","_counts","_prev","_inputs","_outputs","_add","_rem","_ext","_q","quartile","_ci","_this5","aggr","drop","dims","vals","collect","inputs","outputs","inputMap","inputVisit","groupby","dname","cellkey","mname","outname","newcell","newtuple","measures","celltuple","counts","adds","mods","Bin","SortedList","_data","resort","Collect","Compare","update$5","CountPattern","Cross","band","bins","_bins","tcase","tokenize","case","_parameterCheck","_match","_stop","_finish","stopwords","_tuples","Distributions","normal","FUNCTION","Density","partition$1","distribution","minsteps","maxsteps","DotBin","Expression","update$4","expr","Extent","Subflow","Facet","update$3","Filter","Flatten","Fold","Formula","Generate","autostep","detachSubflow","activate","flow","subflow","flows","sf","_group","detached","initTargets","_this6","rekey","k0","k1","isMod","revisit","arrays","maxlen","fnames","Methods","Impute","JoinAggregate","KDE","Key","update$2","Load","Lookup","MultiExtent","update$1","extents","MultiValues","Params","Pivot","PreFacet","Project","Quantile","gVals","kVal","impute","getField","fName","kName","gNames","keyvals","gKey","kMap","gMap","partition","_impute","_source","cumulative","density","_this7","_transform","limit","pivotKeys","aggregateParams","_this8","lut","project","dt","Relay","Sample","Sequence","Sieve","TimeUnit","probs","cap","OUTPUT","TupleIndex","Values","utc","timezone","_floor","u0","u1","tunits","WindowOps","row_number","dense_rank","drank","percent_rank","cume_dist","cume","ntile","_next2","lag","lead","first_value","last_value","nth_value","nth","prev_value","next_value","ValidWindowOps","WindowState","windows","countOnly","visitInputs","WindowOp","_i4","_i5","Window","processPartition","ignorePeers","frame","setWindow","adjustRange","_point","bezierCurveTo","_x0","_x1","_y0","_y1","Basis","BasisClosed","BasisOpen","Bundle","beta","_basis","_beta","wind","_this9","areaStart","_line","areaEnd","lineStart","lineEnd","lineTo","closePath","_y2","_y3","_y4","_y","bundle","Cardinal","tension","cardinal","CardinalOpen","CardinalClosed","_y5","_l01_a","_l01_2a","_l12_a","_l12_2a","_l23_a","_l23_2a","CatmullRom","_alpha","x23","y23","catmullRom","CatmullRomClosed","CatmullRomOpen","_templateObject","_templateObject2","_templateObject3","_templateObject4","_templateObject5","_templateObject6","_templateObject7","_templateObject8","_templateObject9","_templateObject10","_templateObject11","_templateObject12","_templateObject13","_templateObject14","Linear","LinearClosed","slope3","h0","h1","s0","slope2","MonotoneX","MonotoneY","ReflectContext","Natural","controlPoints","Step","_taggedTemplateLiteral","strings","raw","freeze","_t0","tauEpsilon","Path","digits","_append","appendRound","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","t01","t21","ccw","cw","withPath","RangeError","arcInnerRadius","arcOuterRadius","arcStartAngle","arcEndAngle","arcPadAngle","padAngle","cornerTangents","rc","ox","oy","x11","y11","x10","y10","x00","y00","D","cx0","cy0","cx1","cy1","dx0","dy0","defined","curve","buffer","defined0","x0z","y0z","arealine","lineX0","lineY0","lineY1","lineX1","kr","domCanvas","domImage","ascendingBisect","bisectRight","bisectLeft","bimap","interpolate","polymap","transformer","untransform","piecewise","rescale","clamper","rangeRound","continuous","initRange","initInterpolator","interpolator","tickFormat","linearish","prestep","transformLog","transformExp","transformLogn","transformExpn","pow10","reflect","loggish","logs","pows","log2","logp","powp","transformPow","transformSqrt","transformSquare","powish","transformSymlog","transformSymexp","symlogish","ticker","tickIntervals","tickInterval","_tickIntervals","_ticker","_ticker2","utcTicks","utcTickInterval","_ticker3","_ticker4","timeTicks","timeTickInterval","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","formatYear","k10","sequential","sequentialPow","k21","divergingPow","receiver","_createSuper","Derived","hasNativeReflectConstruct","Super","NewTarget","InternMap","_Map","keyof","_intern","_step$value","intern_get","intern_set","intern_delete","InternSet","_Set","_super2","implicit","ordinal","svgNode","skewX","interpolateTransform","pxComma","pxParen","degParen","xa","ya","xb","yb","interpolateTransformCss","DOMMatrix","WebKitCSSMatrix","isIdentity","decompose","interpolateTransformSvg","createElementNS","baseVal","consolidate","cosh","zoomRho","rho2","rho4","ux0","uy0","w0","ux1","uy1","coshr0","tanh","sinh","_1","_2","hslLong","Xn","Yn","Zn","labConvert","Lab","Hcl","hcl2lab","rgb2lrgb","xyz2lab","lab","lab2xyz","lrgb2rgb","hclConvert","hcl","hclLong","B","C","ED","EB","BC_DA","Cubehelix","bl","cubehelixConvert","cubehelix","cubehelixGamma","_symbols","_formats","cubehelixLong","bandSpace","paddingInner","paddingOuter","Log","Pow","Sqrt","Symlog","Time","Sequential","Diverging","Quantize","Threshold","Ordinal","Point","Band","BinOrdinal","Continuous","Discrete","Discretizing","Interpolating","Temporal","ordinalRange","range$1","invertRange","pointish","scales","VEGA_SCALE","registerScale","metadata","invertExtent","invertRangeExtent","isValidScaleType","hasType","isContinuous","isDiscrete","isDiscretizing","isLogarithmic","isInterpolating","isQuantile","sequentialLog","sequentialSymlog","diverging","divergingLog","divergingSymlog","thresholds","quantize","scaleBinOrdinal","scaleProps","interpolateRange","interpolateColors","quantizeInterpolator","scaleFraction","scale$1","interp","palette","scheme","schemes","category10","category20","category20b","category20c","tableau10","tableau20","accent","dark2","paired","pastel1","pastel2","set1","set2","set3","blues","greens","greys","oranges","purples","reds","blueGreen","bluePurple","greenBlue","orangeRed","purpleBlue","purpleBlueGreen","purpleRed","redPurple","yellowGreen","yellowOrangeBrown","yellowOrangeRed","blueOrange","brownBlueGreen","purpleGreen","purpleOrange","redBlue","redGrey","yellowGreenBlue","redYellowBlue","redYellowGreen","pinkYellowGreen","spectral","viridis","magma","inferno","plasma","cividis","rainbow","sinebow","turbo","browns","tealBlues","teals","warmGreys","goldGreen","goldOrange","goldRed","lightGreyRed","lightGreyTeal","lightMulti","lightOrange","lightTealBlue","darkBlue","darkGold","darkGreen","darkMulti","darkRed","SymbolLegend","DiscreteLegend","defaultFormatter","tickCount","minStep","validTicks","endpoints","tickValues","noSkip","varfmt","tickLog","labelValues","binValues","thresholdValues","isDiscreteRange","labelFormat","thresholdFormat","formatRange","formatDiscrete","formatPoint","dflt","isTemporal","domainCaption","_v","gradient_id","patternPrefix","gradientRef","defs","Gradient","stops","lookup","curves","orientation","commandPattern","numberPattern","spacePattern","flagPattern","commands","paramCount","ws","parseParams","DegToRad","HalfPi","Tau","HalfSqrt3","segmentCache","bezierCache","bezier","th0","th1","sin_th","cos_th","cos_th0","sin_th0","cos_th1","sin_th1","th_half","sin_th_h2","sX","sY","pathRender","tempX","tempY","tempControlX","tempControlY","controlX","controlY","anchorX","anchorY","beginPath","quadraticCurveTo","drawArc","coords","sweep","rotateX","th","pl","sfactor_sq","sfactor","xc","yc","th_arc","segs","th2","th3","bez","Tan30","builtins","parsed","customSymbol","rectangleX","rectangleY","rectangleWidth","rectangleHeight","vg_rect","crTL","crTR","crBL","crBR","rectangle","tl","tr","br","cornerRadius","vg_trail","ud","trail","value$1","arcShape","padRadius","da0","da1","ap","rp","rc0","rc1","x32","y32","kc","lc","areavShape","areahShape","lineShape","rectShape","cornerRadiusTopLeft","cornerRadiusTopRight","cornerRadiusBottomRight","cornerRadiusBottomLeft","symbolShape","trailShape","hasCornerRadius","clip_id","resetSVGClipId","clip$1","renderer","_defs","clipping","Bounds","union","GroupItem","ResourceLoader","customLoader","increment","decrement","boundStroke","miter","strokeOpacity","sw","strokeJoin","miterAdjustment","MAX_VALUE","equals","rotatedPoints","encloses","alignsWith","intersects","sanitizeURL","loadImage","cors","poll","rot","ma","mb","mc","circleThreshold","addL","addX","addY","addp","addpL","boundContext","deg","context$1","px1","py1","quadExtrema","px3","py3","cubicExtrema","sa","ea","cubic","intersectPath","brush","isPointInPath","intersectPoint","intersectRect","intersectRule","intersectBoxLine","blend","globalCompositeOperation","addStops","addColorStop","createRadialGradient","_image","ictx","fillStyle","createLinearGradient","fillRect","createPattern","globalAlpha","lw","strokeStyle","lineCap","strokeCap","lineJoin","miterLimit","strokeMiterLimit","setLineDash","strokeDash","lineDashOffset","strokeDashOffset","zindex","zorder","scene","zdirty","zitems","pickVisit","hit","drawAll","drawPath","drawOne","pick$1","gx","gy","pixelRatio","hitPath","isPointInStroke","pickPath","translateItem","markItemPath","isect","nested","rotateItem","bound","pick","markMultiItemPath","orient","clipGroup","offset$1","strokeOffset","emitRectangle","rectanglePath","hitBackground","hitForeground","hitCorner","noBound","fore","strokeForeground","dw","dh","ix","interactive","marktype","pickMark","foreground","getImage","imageWidth","aspect","imageHeight","imageXOffset","imageYOffset","baseline","ar0","ar1","imageSmoothingEnabled","xOffset","yOffset","path$1","pathCache","path$2","transformItem","draw$2","widthCache","textMetrics","estimateWidth","useCanvas","use","_estimateWidth","textValue","currentFontHeight","_measureWidth","currentFont","textLines","lineBreak","multiLineOffset","widthGetter","quote","tempBounds","anchorPoint","lh","fillText","strokeText","Marks","boundItem","DUMMY","boundMark","hasItems","sceneToJSON","sceneFromJSON","initialize","Scenegraph","createMark","domCreate","ns","domFind","tagName","domChild","domClear","cssClass","clientLeft","clientTop","Handler","customTooltip","_handlers","_tooltip","defaultTooltip","Renderer","_el","_bgcolor","markdef","_obj","_origin","_scene","_handlerIndex","handlers","handleHref","MouseEvent","dispatchEvent","handleTooltip","tooltip","mdef","resolveItem","getItemBoundingClientRect","scaleFactor","bgcolor","_scale","_render","renderAsync","_ready","redraw","DragEnterEvent","DragLeaveEvent","DragOverEvent","MouseDownEvent","MouseMoveEvent","MouseOutEvent","MouseOverEvent","ClickEvent","MouseWheelEvent","TouchStartEvent","TouchMoveEvent","TouchEndEvent","TooltipShowEvent","TooltipHideEvent","HrefEvent","CanvasHandler","_down","_touch","_first","eventListenerCheck","eventBundle","fire","moveEvent","overEvent","outEvent","pickEvent","exit","inactive","_canvas","DOMMouseScroll","mousemove","dragover","mouseout","dragleave","mousedown","touchstart","touchmove","touchend","vegaType","devicePixelRatio","CanvasRenderer","_redraw","_dirty","_tempb","base$1","SVGHandler","_hrefHandler","_tooltipHandler","externalContext","inDOM","HTMLElement","setTransform","_resize","db","viewBounds","clipToBounds","clearRect","__data__","_svg","ARIA_HIDDEN","ARIA_LABEL","ARIA_ROLE","ARIA_ROLEDESCRIPTION","GRAPHICS_OBJECT","GRAPHICS_SYMBOL","roledesc","AriaIgnore","AriaGuides","caption","extractTitle","capitalize","channelCaption","titleCaption","AriaEncode","ariaRole","ariaRoleDescription","ariaItemAttributes","_type","ariaMarkAttributes","ariaGuide","ariaMark","innerText","attrText","markup","buf","stack","_attrs","serializeXML","_serialize","hasAttributes","hasChildNodes","nodeValue","stylesAttr","stylesCss","rootAttributes","svgns","SVGRenderer","_dirtyID","_root","dirtyParents","updateGradient","grad","pt","setAttributes","preserveAspectRatio","fr","updateClipping","__values__","bg","cg","ownerSVGElement","previousSibling","siblingCheck","nextSibling","_clearDefs","setAttributeNS","RootIndex","setProperty","_dirtyCheck","_dirtyAll","isDirty","mark_extras","_value2","_prop","setStyle","_fill","ts","removeAttributeNS","removeProperty","location","SVGStringRenderer","_text","class","attrList","_tl","_fill2","_stroke","_hrefs","prefixed","styleList","_value3","_prop2","_value4","_def","_id2","_def2","RenderType","PNG","SVG","modules","renderModule","hits","intersectMark","intersectGroup","visitMark","_type2","intersectItem","marks","headless","clipBounds","boundClip","TOLERANCE","sceneEqual","pathEqual","ka","kb","objectEqual","resetSVGDefIds","Top","Left","Right","Bottom","TopLeft","TopRight","BottomLeft","BottomRight","Start","Middle","End","AxisRole","TitleRole","FrameRole","ScopeRole","LegendRole","RowHeader","RowFooter","RowTitle","ColHeader","ColFooter","ColTitle","Padding","Symbols","Fit","FitX","FitY","Pad","All","Each","Flush","Column","Bound","rebound","view","markBounds","COUNTER_NAME","Identifier","Mark","Overlap","counter","_signals","getCounter","scenegraph","lookup$1","Init","parity","greedy","sep","hasOverlap","hasBounds","Render","separation","boundScale","boundTolerance","boundTest","boundOrient","isYAxis","axisLayout","axis","indices","labels","axisIndices","minExtent","maxExtent","titlePadding","dl","axisTitleLayout","auto","bboxFlush","bboxFull","offsetValue","gridLayout","nodirty","alignCol","alignRow","padCol","padRow","ncols","nrows","xExtent","xMax","yExtent","yMax","boxes","trellisLayout","views","_views$rowheaders","_views$rowfooters","_views$colheaders","_views$colfooters","_views$marks","rowheaders","rowfooters","colheaders","colfooters","rowtitle","coltitle","gridLayoutGroups","boundFlush","boundFull","headerBand","layoutHeaders","footerBand","titleAnchor","titleBand","layoutTitle","isX","bf","stride","legendParams","legends","offsets","mult","legendLayout","legend","_bounds","tpad","tx","ty","legendTitleOffset","legendGroupLayout","legendBounds","widths","legendEntryLayout","noBar","vgrad","ViewLayout","xBounds","yBounds","_orient","autosize","subtitle","titleLayout","_autosize","viewWidth","viewHeight","_resizeView","viewSizeLayout","layoutGroup","shouldReflow","AxisTicks","DataJoin","defaultItemCreate","Encode","LegendEntries","newMap","fmod","encoders","reenter","enter","fraction","lskip","perc","adjust","labelFraction","perc2","sourceX","sourceY","LinkPath","Paths","rr","iy","sr","ta","sc","ss","tc","mr","Pie","DEFAULT_COUNT","includePad","Scale","domainCheck","adjustScheme","flip","SortItems","isContinuousColor","rawDomain","domainMid","scaleKey","rangeStep","configureRangeStep","scheme$1","schemeExtent","interpolateGamma","schemeCount","configureScheme","configureRange","domainRaw","configureBins","includeZero","padDomain","domainMin","domainMax","domainImplicit","configureDomain","Zero","Center","Normalize","DefOutput","Stack","stackCenter","stackNormalize","stackZero","lastPos","lastNeg","streamGeometry","streamGeometryType","streamObjectType","Feature","FeatureCollection","Sphere","sphere","MultiPoint","LineString","streamLine","MultiLineString","Polygon","streamPolygon","MultiPolygon","GeometryCollection","closed","coordinate","polygonStart","polygonEnd","Adder","_partials","quarterPi","areaSum","areaRingSum","areaStream","areaRingStart","areaRingEnd","areaPointFirst","areaPoint","boundsStream","X0","Y0","Z0","X1","Y1","Z1","Y2","Z2","centroidStream","centroidPoint","centroidLineStart","centroidLineEnd","centroidRingStart","centroidRingEnd","centroidPointFirstLine","centroidPointLine","centroidPointFirstRing","centroidPointRing","PathContext","_radius","pointRadius","lengthRing","lengthSum","lengthStream","lengthPointFirst","lengthPoint","cacheDigits","cacheAppend","cacheRadius","cacheCircle","PathString","projection","projectionStream","contextStream","rejoin","Intersection","compareIntersection","startInside","subject","pointEqual","isSubject","spherical","cartesian","cosPhi","cartesianDot","cartesianCross","cartesianAddInPlace","cartesianScale","cartesianNormalizeInPlace","longitude","flatten","pointVisible","clipLine","sink","ringBuffer","ringSink","polygonStarted","pointRing","ringStart","ringEnd","sinPhi","winding","point0","lambda0","sinPhi0","cosPhi0","lambda1","sinPhi1","cosPhi1","phi1","absDelta","antimeridian","phiArc","polygonContains","pointLine","ringSegments","validSegment","sign0","sign1","sinLambda0Lambda1","clipAntimeridianIntersect","circleStream","cosRadius","sinRadius","circleRadius","clipMax","clipMin","clipRectangle","corner","comparePoint","ca","x__","y__","v__","x_","y_","v_","activeStream","bufferStream","clipStream","linePoint","polygonInside","cleanInside","compose","rotationIdentity","deltaLambda","deltaPhi","deltaGamma","rotationLambda","rotationPhiGamma","forwardRotationLambda","rotation","cosDeltaPhi","sinDeltaPhi","cosDeltaGamma","sinDeltaGamma","methods","TransformStream","fit","fitBounds","clipExtent","fitExtent","fitSize","fitWidth","fitHeight","maxDepth","cosMinDistance","delta2","resampleLineTo","phi2","lambda2","dz","lambda00","c00","resampleStream","ringPoint","resampleNone","transformRadians","scaleTranslateRotate","scaleTranslate","cosAlpha","sinAlpha","ai","fi","projectionMutator","projectAt","projectResample","projectTransform","projectRotateTransform","cacheStream","preclip","postclip","recenter","resample","transformRotate","clipAngle","cr","smallRadius","notHemisphere","two","n2n2","n1n2","determinant","n1xn2","uu","polar","v00","reflectX","reflectY","conicProjection","parallels","conicEqualAreaRaw","sy0","forward","cylindricalEqualAreaRaw","r0y","conicEqualArea","azimuthalRaw","azimuthalInvert","cc","azimuthalEqualAreaRaw","cxcy","azimuthalEquidistantRaw","mercatorRaw","mercatorProjection","reclip","tany","conicConformalRaw","equirectangularRaw","conicEquidistantRaw","A1","A2","A3","A4","equalEarthRaw","l2","l6","gnomonicRaw","naturalEarth1Raw","phi4","orthographicRaw","stereographicRaw","transverseMercatorRaw","sqrt2","SQRT1_2","mollweideBromleyTheta","cpsinPhi","mollweideRaw","mollweideBromleyRaw","defaultPath","projectionProperties","proj","projections","getProjectionPath","albers","albersusa","lower48Point","alaskaPoint","hawaiiPoint","lower48","alaska","hawaii","pointStream","albersUsa","streams","azimuthalequalarea","azimuthalequidistant","conicconformal","conicequalarea","conicequidistant","equalEarth","equirectangular","gnomonic","mercator","mollweide","naturalEarth1","orthographic","stereographic","transversemercator","graticuleX","graticuleY","graticule","DX","DY","extentMajor","extentMinor","stepMajor","stepMinor","cases","contours","smoothLinear","tz","contour","polygons","holes","isorings","hole","_0","ringContains","xi","yi","xj","yj","segmentContains","collinear","Isocontour","transformPolygon","transformRing","density2D","values0","values1","blurX","blurY","sz","cellSize","LN2","KDE2D","levels","transformPaths","PARAMS","Contour","GeoJSON","GeoPath","GeoPoint","GeoShape","Graticule","Heatmap","$x","$y","$value","$max","Projection","xm","ym","leaf","defaultX","defaultY","quadtree","Quadtree","leaf_copy","_features","lon","lat","geojson","initPath","shapeGenerator","shared","dep","opacity_","color_","can","getImageData","pix","putImageData","toCanvas","featurize","collectGeoJSON","treeProto","vx","vy","cover","xz","yz","quads","retainer","visitAfter","Dispatch","typename","typenames","parseTypenames","initialRadius","initialAngle","_nodes","simulation","_alphaMin","_alphaDecay","_alphaTarget","_velocityDecay","forces","stepper","tick","initializeNodes","initializeForce","alphaMin","alphaDecay","alphaTarget","velocityDecay","randomSource","closest","nodeById","nodeId","ForceMap","strength","collide","radii","ri","ri2","prepare","rj","jiggle","_random","nbody","strengths","distanceMin2","distanceMax2","theta2","accumulate","distanceMin","distanceMax","links","distances","bias","initializeStrength","initializeDistance","Forces","ForceParams","ForceConfig","ForceOutput","Force","setup","sim","getForce","numForces","setForceParam","change","iters","stopped","static","hierarchy","mapChildren","objectChildren","childs","eachBefore","computeHeight","copyData","constantZero","eachAfter","each","ancestor","aNodes","ancestors","bNodes","leastCommonAncestor","descendants","leaves","packEncloseRandom","circles","shuffle","enclosesWeak","encloseBasis","extendBasis","enclosesWeakAll","enclosesNot","encloseBasis2","encloseBasis3","dr","encloseBasis1","r21","r3","a3","d3","ab","place","score","packSiblingsRandom","aa","sj","sk","defaultRadius","radiusLeaf","packChildrenRandom","translateChild","preroot","ambiguous","imputed","defaultId","defaultParentId","parentId","stratify","nodeKey","currentParentId","nodeByKey","slash","parentof","defaultSeparation","nextLeft","nextRight","moveSubtree","wm","wp","nextAncestor","vim","TreeNode","meanXReduce","maxYReduce","squarifyRatio","sumValue","minValue","maxValue","newRatio","minRatio","dice","squarify","resquarify","_squarify","Nest","nest","_entries","keyValue","valuesByKey","HierarchyLayout","setParams","Output$3","Pack","Output$2","Partition","Stratify","positionNode","Layouts","tidy","nodeSize","treeRoot","firstWalk","secondWalk","sizeNode","siblings","executeShifts","vip","vop","vom","sip","sop","som","apportion","cluster","previousNode","meanX","leafLeft","leafRight","Output$1","Tree","TreeLinks","Tiles","binary","sums","valueOffset","valueTarget","valueLeft","valueRight","slicedice","Treemap","enumerableOnly","sym","getOwnPropertyDescriptors","tile","paddingStack","treemap","ALPHA_MASK","getBuffer","Uint32Array","DIV","SIZE","RIGHT0","RIGHT1","scaler","bitmap","_set","_clear","getRange","indexStart","indexEnd","setRange","clearRange","outOfBounds","Bitmap","textWidth","textHeight","collision","bm0","bm1","X_DIR","Y_DIR","Aligns","Baselines","boundary","isInside","anchorCode","TOP","MIDDLE","BOTTOM","placeAreaLabel","bitmaps","avoidBaseMark","markIndex","areaWidth","maxAreaWidth","tryLabel","maxSize","_xMid","_yMid","swapTmp","labelPlaced","labelPlaced2","_result","_result2","_result3","_result4","bm2","_stack$pop","_stack$pop2","labelLayout","texts","avoidMarks","lineAnchor","_i7","_i8","getOffsets","anchors","Int8Array","_i9","_i10","getAnchors","grouptype","isGroupArea","markBoundary","infPadding","isNaiveGroupArea","maxTextWidth","maxTextHeight","labelInside","_i6","baseMark","baseMarkContext","strokeContext","strokeAlpha","baseMarkAlpha","baseMarkBuffer","strokeBuffer","layer1","layer2","markBitmaps","baseBitmaps","_d$textWidth","sizeFactor","insideFactor","placeMarkLabel","Anchors","Label","Loess","null","Regression","dof","degreesOfFreedom","model","elen","flen","Qnew","hh","bvirt","enow","fnow","eindex","findex","hindex","ccwerrboundB","ccwerrboundC","C1","C2","orient2d","detleft","detright","detsum","acxtail","acytail","bcxtail","bcytail","ahi","alo","bhi","blo","_j","u3","acx","bcx","acy","bcy","errbound","C1len","C2len","Dlen","orient2dadapt","EDGE_STACK","Delaunator","maxTriangles","_triangles","_halfedges","Int32Array","_hashSize","_hullPrev","_hullNext","_hullTri","_hullHash","_ids","_dists","hullPrev","hullNext","hullTri","hullHash","minDist","i0x","i0y","i1x","i1y","minRadius","circumradius","i2x","i2y","quicksort","hull","triangles","halfedges","cl","circumcenter","_cx","_cy","_hullStart","hullSize","_hashKey","trianglesLen","_addTriangle","_legalize","al","inCircle","hbl","_link","getX","defaultGetX","getY","defaultGetY","bp","tempDist","_j2","_temp","_tempDist","Voronoi","delaunay","_circumcenters","vectors","_this$delaunay","circumcenters","_this$delaunay2","inedges","ti","tj","_renderSegment","_project","_clip","cellPolygons","cellPolygon","renderCell","_regioncode","_clipSegment","neighbors","li","aj","lj","_this$delaunay3","e0","_cell","_simplify","_clipInfinite","_clipFinite","e1","sx0","sx1","sy1","_S","_S2","_S3","_S4","_edgecode","_edge","vx0","vy0","vxn","vyn","flatIterable","_e3","pointX","pointY","jitter","Delaunay","_delaunator","_hullIndex","hullIndex","_n2","dc","renderHull","trianglePolygons","trianglePolygon","renderTriangle","flatArray","defaultExtent","toPathString","voronoi","cloudRadians","cloud","spiral","archimedeanSpiral","board","dxdy","startX","startY","maxDelta","cloudCollide","collideRects","sprite","msx","contextAndRatio","zeroArray","tags","xoff","yoff","hasText","cloudSprite","cloudBounds","functor","spirals","w32","maxh","wcr","wsr","hcr","hsr","pixels","seenRow","archimedean","rectangular","Wordcloud","fontSizeRange","fsize","sizeScale","array8","Uint8Array","array16","Uint16Array","array32","Dimension","query","onAdd","added","dim","SortedIndex","_index","oldv","oldi","addi","addv","index0","index1","reindex","CrossFilter","_seen","_curr","lengthen","Bitmaps","_indices","ResolveFilter","reinit","eval","remMap","modMap","bits","indexMap","incrementOne","incrementAll","old","lo1","hi1","lo0","hi0","ignore","pass","TokenName","lookahead","Literal","Property","ArrayExpression","BinaryExpression","CallExpression","ConditionalExpression","LogicalExpression","MemberExpression","ObjectExpression","UnaryExpression","ASTNode","callee","consequent","alternate","TokenBooleanLiteral","TokenEOF","TokenIdentifier","TokenKeyword","TokenNullLiteral","TokenNumericLiteral","TokenPunctuator","TokenStringLiteral","SyntaxArrayExpression","SyntaxBinaryExpression","SyntaxCallExpression","SyntaxConditionalExpression","SyntaxIdentifier","SyntaxLiteral","SyntaxLogicalExpression","SyntaxMemberExpression","SyntaxObjectExpression","SyntaxProperty","SyntaxUnaryExpression","MessageUnexpectedToken","MessageUnexpectedNumber","MessageUnexpectedString","MessageUnexpectedIdentifier","MessageUnexpectedReserved","MessageUnexpectedEOS","MessageInvalidRegExp","MessageUnterminatedRegExp","MessageStrictOctalLiteral","MessageStrictDuplicateProperty","ILLEGAL","DISABLED","RegexNonAsciiIdentifierStart","RegexNonAsciiIdentifierPart","assert","isDecimalDigit","isHexDigit","isOctalDigit","isWhiteSpace","isLineTerminator","isIdentifierStart","fromCharCode","isIdentifierPart","keywords","skipComment","scanHexEscape","throwError","scanUnicodeCodePointEscape","cu1","cu2","getEscapedIdentifier","scanIdentifier","getIdentifier","scanPunctuator","code2","ch2","ch3","ch4","ch1","scanNumericLiteral","scanHexLiteral","octal","scanOctalLiteral","scanRegExp","classMarker","terminated","literal","scanRegExpBody","scanRegExpFlags","$0","$1","testRegExp","advance","scanStringLiteral","lex","finishBinaryExpression","operator","finishCallExpression","finishIdentifier","finishLiteral","finishMemberExpression","computed","member","finishProperty","kind","messageFormat","whole","throwUnexpected","expect","matchKeyword","keyword","parseArrayInitialiser","parseConditionalExpression","finishArrayExpression","parseObjectPropertyKey","parseObjectProperty","parseObjectInitialiser","finishObjectExpression","legalKeywords","parsePrimaryExpression","parseExpression","parseGroupExpression","parseArguments","parseNonComputedProperty","isIdentifierName","parseComputedMember","parsePostfixExpression","parseLeftHandSideExpressionAllowCall","parseUnaryExpression","finishUnaryExpression","binaryPrecedence","prec","marker","markers","parseBinaryExpression","finishConditionalExpression","Constants","LN10","LOG2E","MIN_VALUE","Functions","codegen","cast","fncall","STRING","REGEXP","datetime","timezoneoffset","utcdate","utcday","utcyear","utcmonth","utchours","utcminutes","utcseconds","utcmilliseconds","upper","lower","if","allowed","forbidden","constants","functions","globalvar","fieldvar","outputGlobal","globals","memberDepth","ast","Generators","stripQuotes","phi00","deltaSum","ranges","areaRing","dLambda","sdLambda","adLambda","W0","W1","z0","boundsLineStart","boundsLineEnd","boundsRingPoint","boundsRingStart","boundsRingEnd","inflection","phii","lambdai","rangeCompare","rangeContains","centroidPointCartesian","centroidLinePointFirst","centroidLinePoint","centroidRingPointFirst","centroidRingPoint","cz","Intersect","Union","SelectionId","$selectionId","TYPE_ENUM","TYPE_RANGE_INC","TYPE_RANGE_EXC","TYPE_RANGE_LE","TYPE_RANGE_RE","UNIT_INDEX","testPoint","dval","_others","selectionVisitor","scope","indexName","dataName","indataRef","tuplesRef","dateObj","setYear","ScalePrefix","SignalPrefix","dataVisitor","scaleVisitor","addScaleDependency","scaleName","scaleRef","getScale","nameOrFunction","maybeScale","isRegisteredScale","internalScaleFunctions","fnctx","visitors","__bandwidth","_range","geoMethod","globalMethod","geoArea","geoBounds","deltaMax","geoCentroid","channel_luminance_value","channelValue","luminance","equalArray","equalObject","removePredicate","accessors","seq","treeNodes","_window","markname","functionContext","isDefined","isString","toDate","indexof","_sequence","_array","lastindexof","_sequence2","repl","_sequence3","pluck","contrast","color1","color2","lum1","lum2","monthFormat","monthAbbrevFormat","dayAbbrevFormat","inScope","pinchDistance","pinchAngle","windowSize","bandspace","setdata","pathShape","retval","toggle","_trigger","lassoAppend","lasso","lassoPath","intersectLasso","pixelLasso","bb","MIN_SAFE_INTEGER","testx","testy","intersections","_polygon$j","prevX","prevY","_polygon$i","pointInPolygon","eventFunctions","thisPrefix","astVisitors","codegenParams","codeGenerator","expressionFunction","signalName","getSignal","signalRef","$expr","$fields","$params","miss","unitIdx","isMulti","vl5","resUnit","resolved","multiRes","acc","Skip","Swap","canonicalType","expression","expressionCodegen","parameter","_encode","adjustSpatial","lt","gt","_compare","parseParameter","PARSERS","$ref","$key","$flat","parseParameters","parameterExpression","$field","$name","$encode","enc","encodeExpression","$output","$compare","$order","$tupleid","$subflow","subctx","operators","Subcontext","ariaLabel","subcontext","_keys2","isCollect","$ingest","$format","$request","unresolved","signal","_stream","operatorExpression","eventExpression","handlerExpression","eventConfig","parseOperator","parseOperatorParameters","parseStream","updates","parseUpdate","isOperator","srcid","getState","dataset","substate","Default","globalCursor","dataref","_runtime","_viewWidth","_viewHeight","resizeRenderer","_renderer","_handler","_resizeListeners","eventExtend","vega","itemGroup","VIEW","NO_TRAP","trap","trackEventListener","_eventListeners","permit","_eventConfig","itemFilter","markTarget","BindClass","NameClass","RadioClass","Event","valuesEqual","prepend","initializeRenderer","_padding","paddingObject","renderHeadless","_renderHeadless","_scenegraph","_renderToImageURL","toBlobURL","mime","blob","_renderToCanvas","_renderToSVG","Width","Height","dataTest","signalTest","formatArray","formatTooltip","View","_elBind","_renderType","_globalCursor","_preventDefault","_timers","defaults","unpack","initializeEventConfig","runtime","_bind","bindings","resetSize","_resizeWidth","_resizeHeight","resizePadding","initializeResize","_background","user","hover","lookupSignal","findOperatorHandler","addOperatorListener","removeOperatorListener","_desc","_resetRenderer","rerun","addResizeListener","removeResizeListener","addSignalListener","removeSignalListener","addDataListener","removeDataListener","_restart","prevent","allow","finalize","timers","hoverSet","leaveSet","elBind","initializeAria","prevHandler","initializeHandler","binding","toImageURL","toSVG","DEFAULT_SOURCE","MARKS","LBRACK","RBRACK","LBRACE","RBRACE","COLON","COMMA","NAME","GT","DEFAULT_MARKS","eventSelector","selector","parseMerge","parseSelector","endChar","pushChar","popChar","parseBetween","parseThrottle","isMarkType","parseAutosize","parsePadding","encoder","addEncode","addEncoders","_name","extendEncode","MarkRole","AxisDomainRole","AxisGridRole","AxisLabelRole","AxisTickRole","AxisTitleRole","LegendBandRole","LegendEntryRole","LegendGradientRole","LegendLabelRole","LegendSymbolRole","LegendTitleRole","TitleTextRole","TitleSubtitleRole","applyDefault","entry$1","_color","resolveField","parseEncode","applyDefaults","parseBlock","parse$1","OUTER","OUTER_INVALID","outerError","parseSignal","addSignal","addBinding","Entry","refs","fieldRef$1","keyFieldRef","_compareRef","Descending","aggrField","Scope$1","isSignal","hasSignal","specValue","deref","mergeStream","nestedStream","eventStream","streamParameters","addStream","eventSource","markrole","filterMark","OP_VALUE_EXPR","isSubscope","mergeSources","addUpdate","streamSource","FIELD_REF_ID","MULTIDOMAIN_SORT_OPS","parseScale","parseScaleDomain","parseScaleRange","parseLiteral","parseScaleInterpolate","parseScaleNice","parseArray","objectProperty","parseScaleBins","dataLookupError","explicitDomain","multipleDomain","singularDomain","valuesRef","parseSort","domainRef","extentRef","coll","addDataPipeline","fieldRef","ordinalMultipleDomain","quantileMultipleDomain","numericMultipleDomain","countsRef","sortRef","multidomain","parseParameter$1","Vertical","Index","Offset","Perc","Perc2","Value","GuideLabelStyle","GuideTitleStyle","GroupTitleStyle","GroupSubtitleStyle","Size","LegendScales","GroupMark","RectMark","RuleMark","SymbolMark","TextMark","guideGroup","isVertical","symbolDirection","gradientDirection","gradientLength","gradientWidth","gradientThickness","gradientHeight","entryColumns","getEncoding","anchorExpr","alignExpr$1","extendOffset","guideMark","extras","legendGradient","userEncode","thickness","legendGradientDiscrete","dataRef","vv","alignExpr","baselineExpr","legendGradientLabels","overlap","labelLimit","gradientLabelLimit","labelOffset","gradientLabelOffset","legendSymbolGroups","symbolOffset","valueRef","xSignal","yEncode","baseFill","baseStroke","symbolBaseFillColor","symbolBaseStrokeColor","facet","isL","isR","isLR","isVG","alignFlip","exprAlign","exprAnchor","exprAngle","exprBaseline","getRole","parseTransform","pdef","lookupRef","parseIndexParameter","parseSubParameter","parseSubParameters","projectionRef","parameterValue","isExpr","isField","isCompare","compareRef","_expr","outerExpr","exprRef","outerField","isData","getDataRef","DataScope","aggregate","fieldKey","addSortField","ds","optype","sortKey","parseTrigger","parseMark","layoutRef","boundRef","keyRef","parseData$1","joinRef","$context","markpath","markRef","generates","encodeRef","pushState","subscope","addData","toRuntime","parseFacet","parseSubflow","popState","tol","parseOverlap","sieve","parseLegend","entryLayout","legendEncode","scaleType","scaleCount","legendType","entryRef","tickMinStep","legendSymbolLayout","getChannel","getFontSize","sizeExpression","_anchor","legendTitle","buildLegendEncode","fromEntries","angleExpr","parseTitle","buildTitle","titleEncode","buildSubTitle","groupEncode","parseData","upstream","analyze","getSign","ifLeftTopExpr","ifX","ifXEnc","ifY","ifYEnc","ifTop","ifTopExpr","ifRight","ifRightExpr","$orient","ifEnc","ifExpr","isSimple","toExpr","ifOrient","fallback","axisConfig","styleProp","axisGrid","vscale","gridScale","_entry","tickPos","gridStart","gridEnd","flushExpr","axisTitle","titlePos","autoY","autoX","autoLayout","parseAxis","or","axisBand","xyKeys","axisX","axisY","orientKeys","axisTop","axisBottom","axisLeft","axisRight","axisEncode","tickBand","ticksRef","tickSize","axisTicks","flushOffset","labelAlign","labelBaseline","flushOn","offsetExpr","axisLabels","pos0","pos1","axisDomain","buildAxisEncode","parseScope","preprocessed","_name2","addProjection","parseProjection","addScale","initScale","parseSignalUpdates","axes","parseLambdas","rootEncode","parseView","signalObject","collectSignals","Scope","lambdas","_subid","_nextsub","_parent","_lookup","_markpath","Subscope","propertyLambda","arrayLambda","objectLambda","defaultFont","defaultColor","lightGray","square","subtitlePadding","bandPosition","domainWidth","domainColor","gridWidth","gridColor","labelAngle","labelPadding","tickColor","tickOffset","tickRound","tickWidth","gridAlign","columnPadding","rowPadding","gradientStrokeColor","gradientStrokeWidth","labelOverlap","symbolLimit","symbolType","symbolSize","symbolStrokeWidth","titleLimit","titleOrient","category","heatmap","ramp","vref","annotate","_field","check","isExpr$1","sig","_keyRef","hasOwnSignal","addScaleProj","projectionType","dataScope","Ops","Unary","ms","EventFunctions","DisallowedMethods","setImmediate","Visitors","interpret","_event$vega","isLogicalOr","isLogicalAnd","and","isLogicalNot","not","forEachLeaf","normalizeLogicalComposition","normalizer","deepEqual","duplicate","never","isNullOrFalse","_step3$value","_step4$value","mergeDeep","dest","_src","deepMerge_","_step6","_iterator6","dict","dictKeys","_step7","_iterator7","setEqual","_step8","_iterator8","hasIntersection","_step9","_iterator9","prefixGenerator","_step10","_iterator10","_step11","wrappedWithAccessors","computedPrefixes","_iterator11","fieldIntersection","isEmpty","varName","alphanumericS","logicalExpr","deleteNestedProperty","orderedProps","titleCase","accessPathWithDatum","pieces","flatAccessWithDatum","escapePathAccess","replacePathInField","removePathFromField","accessPathDepth","getFirstDefined","_args","idCounter","uniqueId","resetIdCounter","internalField","isInternalField","normalizeAngle","isNumeric","ROW","COLUMN","FACET","XOFFSET","YOFFSET","RADIUS","RADIUS2","THETA","THETA2","LATITUDE","LONGITUDE","LATITUDE2","LONGITUDE2","COLOR","FILL","STROKE","SHAPE","ANGLE","OPACITY","FILLOPACITY","STROKEOPACITY","STROKEWIDTH","STROKEDASH","TEXT","ORDER","DETAIL","KEY","TOOLTIP","HREF","DESCRIPTION","POLAR_POSITION_CHANNEL_INDEX","radius2","isPolarPositionChannel","GEO_POSIITON_CHANNEL_INDEX","longitude2","latitude","latitude2","getPositionChannelFromLatLong","isGeoPositionChannel","GEOPOSITION_CHANNELS","UNIT_CHANNEL_INDEX","isColorChannel","FACET_CHANNEL_INDEX","FACET_CHANNELS","CHANNEL_INDEX","CHANNELS","SINGLE_DEF_CHANNEL_INDEX","SINGLE_DEF_UNIT_CHANNEL_INDEX","isSingleDefUnitChannel","isChannel","SECONDARY_RANGE_CHANNEL","isSecondaryRangeChannel","getMainRangeChannel","getVgPositionChannel","getSecondaryRangeChannel","getSizeChannel","getOffsetChannel","getOffsetScaleChannel","getMainChannelFromOffsetChannel","UNIT_CHANNELS","NONPOSITION_CHANNEL_INDEX","NONPOSITION_CHANNELS","POSITION_SCALE_CHANNEL_INDEX","POSITION_SCALE_CHANNELS","isXorY","POLAR_POSITION_SCALE_CHANNEL_INDEX","POLAR_POSITION_SCALE_CHANNELS","getPositionScaleChannel","sizeType","OFFSET_SCALE_CHANNEL_INDEX","isXorYOffset","NONPOSITION_SCALE_CHANNEL_INDEX","NONPOSITION_SCALE_CHANNELS","SCALE_CHANNEL_INDEX","SCALE_CHANNELS","isScaleChannel","supportMark","ALL_MARKS","ALL_MARKS_EXCEPT_GEOSHAPE","bar","geoshape","getSupportedMark","rangeType","AGGREGATE_OP_INDEX","MULTIDOMAIN_SORT_OP_INDEX","isArgminDef","isArgmaxDef","isAggregateOp","COUNTING_OPS","isCountingAggregateOp","SUM_OPS","SHARED_DOMAIN_OPS","binToString","normalizeBin","isParameterExtent","isBinning","isBinParams","binned","isBinned","autoMaxBins","isExprRef","replaceExprRef","newIndex","signalRefOrValue","extractTitleConfig","titleConfig","subtitleColor","subtitleFont","subtitleFontSize","subtitleFontStyle","subtitleFontWeight","subtitleLineHeight","titleMarkConfig","nonMarkTitleProperties","subtitleMarkConfig","isText","isSignalRef","isVgRangeStep","isDataRefDomain","VG_MARK_CONFIGS","VG_MARK_INDEX","VG_CORNERRADIUS_CHANNELS","signalOrValueRefWithCondition","conditionalSignalRefOrValue","signalOrValueRef","exprFromSignalRefOrValue","exprFromValueRefOrSignalRef","signalOrStringValue","getStyles","_mark$style","getMarkPropOrConfig","vgChannel","ignoreVgConfig","getMarkConfig","getMarkStyleConfig","styleConfigIndex","getStyleConfig","styleConfig","sortParams","orderDef","fieldRefOption","orderChannelDef","_orderChannelDef$sort","mergeTitleFieldDefs","fdToMerge","fieldDef1","mergeTitle","title1","title2","mergeTitleComponent","v1Val","v2Val","explicit","invalidSpec","FIT_NON_SINGLE","containerSizeNonSingle","containerSizeNotCompatibleWithAutosize","fitDirection","droppingFit","unknownField","cannotProjectOnChannelWithoutField","cannotProjectAggregate","selectionNotSupported","NEEDS_SAME_SELECTION","columnsNotSupportByRowCol","differentParse","local","invalidTransformIgnored","customFormatTypeNotAllowed","invalidFieldType","droppingColor","emptyFieldDef","fieldDef","incompatibleChannel","markOrFacet","when","offsetEncodingScaleIgnored","channelShouldBeDiscrete","channelShouldBeDiscreteOrDiscretizing","discreteChannelCannotEncode","unaggregateDomainHasNoEffectForRawField","unaggregateDomainWithNonSharedDomainOp","unaggregatedDomainWithLogScale","scalePropertyNotWorkWithScaleType","stepDropped","MORE_THAN_ONE_SORT","invalidTimeUnit","unitName","errorBand1DNotSupport","channelRequiredForBinned","main","_current2","isDateTime","TIMEUNIT_PARTS","MONTHS","SHORT_MONTHS","DAYS","SHORT_DAYS","dateTimeParts","lowerM","monthIndex","shortM","shortMonthIndex","normalizeMonth","normalizeQuarter","lowerD","dayIndex","shortD","shortDayIndex","normalizeDay","dateTimeToExpr","LOCAL_SINGLE_TIMEUNIT_INDEX","binnedyear","binnedyearquarter","binnedyearquartermonth","binnedyearmonth","binnedyearmonthdate","binnedyearmonthdatehours","binnedyearmonthdatehoursminutes","binnedyearmonthdatehoursminutesseconds","binnedyearweek","binnedyearweekday","binnedyearweekdayhours","binnedyearweekdayhoursminutes","binnedyearweekdayhoursminutesseconds","binnedyeardayofyear","binnedutcyear","binnedutcyearquarter","binnedutcyearquartermonth","binnedutcyearmonth","binnedutcyearmonthdate","binnedutcyearmonthdatehours","binnedutcyearmonthdatehoursminutes","binnedutcyearmonthdatehoursminutesseconds","binnedutcyearweek","binnedutcyearweekday","binnedutcyearweekdayhours","binnedutcyearweekdayhoursminutes","binnedutcyearweekdayhoursminutesseconds","binnedutcyeardayofyear","isBinnedTimeUnit","timeUnit","isBinnedTimeUnitString","isUTCTimeUnit","VEGALITE_TIMEFORMAT","getTimeUnitParts","part","containsTimeUnit","getSmallestTimeUnitPart","fullTimeUnit","lastTimeUnit","dateExpr","dateTimeExprToExpr","timeUnitSpecifierExpression","timeUnitParts","normalizeTimeUnit","getLocalTimeUnitFromUTCTimeUnit","durationExpr","normalizedTimeUnit","smallestUnitPart","startDate","_getDateTimePartAndSt","getDateTimePartAndStep","endDate","DATE_PARTS","isDatePart","isFieldEqualPredicate","isFieldLTPredicate","isFieldLTEPredicate","lte","isFieldGTPredicate","isFieldGTEPredicate","gte","isFieldRangePredicate","isFieldOneOfPredicate","oneOf","in","isFieldPredicate","predicateValueExpr","valueExpr","wrapTime","fieldFilterExpression","useInRange","rawFieldExpr","fieldExpr","_upper","_lower","predicateValuesExpr","isFieldValidPredicate","fieldValidPredicate","_lower2","_upper2","exprs","normalizePredicate","Type","quantitative","temporal","nominal","QUANTITATIVE","ORDINAL","TEMPORAL","NOMINAL","GEOJSON","ScaleType","LINEAR","LOG","POW","SQRT","SYMLOG","IDENTITY","SEQUENTIAL","TIME","QUANTILE","QUANTIZE","THRESHOLD","BIN_ORDINAL","POINT","BAND","SCALE_CATEGORY_INDEX","scaleCompatible","scaleType1","scaleType2","scaleCategory1","scaleCategory2","SCALE_PRECEDENCE_INDEX","scaleTypePrecedence","QUANTITATIVE_SCALES","CONTINUOUS_TO_CONTINUOUS_SCALES","isQuantitative","CONTINUOUS_TO_DISCRETE_SCALES","CONTINUOUS_DOMAIN_SCALES","DISCRETE_DOMAIN_SCALES","hasDiscreteDomain","hasContinuousDomain","isContinuousToContinuous","isContinuousToDiscrete","isParameterDomain","SCALE_PROPERTY_INDEX","rangeMax","rangeMin","NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTY_INDEX","NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTIES","scaleTypeSupportProperty","channelScalePropertyIncompatability","ARC","AREA","BAR","IMAGE","LINE","RECT","RULE","TICK","TRAIL","CIRCLE","SQUARE","GEOSHAPE","isPathMark","isRectBasedMark","PRIMITIVE_MARKS","isMarkDef","FILL_STROKE_CONFIG","VL_ONLY_MARK_CONFIG_PROPERTIES","timeUnitBandSize","timeUnitBandPosition","MARK_CONFIGS","isRelativeBandSize","BAR_CORNER_RADIUS_INDEX","defaultBarConfig","binSpacing","continuousBandSize","minBandSize","defaultRectConfig","midPointRefWithPositionInvalidTest","channelDef","markDef","midPoint","isFieldDef","fieldInvalidTestValueRef","wrapPositionInvalidTest","fieldInvalidPredicate","valueRefForFieldOrDatumDef","isDatumDef","interpolatedSignalRef","fieldOrDatumDef","fieldOrDatumDef2","startSuffix","_ref2$bandPosition","channel2Def","defaultRef","isFieldOrDatumDef","_bandPosition2","isTypedFieldDef","_bandPosition","getBandPosition","fieldDef2","binSuffix","binRequiresRange","isValueDef","offsetMixins","widthHeightValueOrSignalRef","isCustomFormatType","customFormatExpr","formatSignalRef","normalizeStack","formatCustomType","fieldToFormat","channelDefType","customFormatTypes","normalizedNumberFormatType","normalizedNumberFormat","numberFormatType","timeFormatType","isFieldOrDatumDefForTimeFormat","_normalizeTimeUnit","_fieldOrDatumDef$scal","rawTimeFormat","isUTCScale","formatExpression","timeFormatExpression","isScaleFieldDef","specifiedFormat","binFormatExpression","formatExpr","datumDef","datumDefToExpr","guideFormat","omitTimeFormatConfig","isPositionFieldOrDatumDef","_normalizeTimeUnit2","guideFormatType","_normalizeTimeUnit3","binNumberFormatExpr","startField","endField","DEFAULT_SORT_OP","SORT_BY_CHANNEL_INDEX","isSortByChannel","isSortByEncoding","isSortField","isSortArray","isFacetMapping","isFacetFieldDef","isFacetSpec","toFieldDefBase","isSortableFieldDef","getBandSize","_config$mark$type3","_config$mark$type","_config$mark$type2","useVlSizeChannel","sizeChannel","discreteBandSize","hasBandEnd","isOrderOnlyDef","isConditionalDef","hasConditionalFieldDef","hasConditionalFieldOrDatumDef","isContinuousFieldOrDatumDef","isNumericDataDef","isUnbinnedQuantitativeFieldOrDatumDef","isMarkPropFieldOrDatumDef","isStringFieldOrDatumDef","toStringFieldDef","argAccessor","isCount","nofn","isOpFieldDef","_opt$binSuffix","_opt$suffix","_opt$suffix2","forAs","defaultTitleFormatter","fieldTitle","timeUnitParams","functionalTitleFormatter","countTitle","verbalTitleFormatter","titleFormatter","setTitleFormatter","formatter","_getGuide","allowDisabling","_ref3$includeDefault","includeDefault","guideTitle","getGuide","defaultTitle","getFormatMixins","_getGuide2","guide","getFieldDef","getFieldOrDatumDef","initChannelDef","initFieldOrDatumDef","fd","guideType","_fd$guideType","_formatType2","newGuide","initFieldDef","initDatumDef","_ref5$compositeMark","compositeMark","fullType","getFullName","newType","_fieldDef$scale","defaultType","compatible","COMPATIBLE","_def$scale","channelCompatibility","encoding","labelOrient","isTimeFieldDef","undefinedIfExprNotRequired","isTime","isLocalSingleTimeUnit","valueArray","CONDITIONAL_AXIS_PROP_INDEX","vgProp","labelColor","labelFont","labelFontSize","labelFontStyle","labelFontWeight","labelOpacity","gridDash","gridDashOffset","gridOpacity","tickDash","tickDashOffset","tickOpacity","isConditionalAxisValue","AXIS_PARTS","AXIS_PROPERTY_TYPE","gridCap","domainCap","domainDash","domainDashOffset","domainOpacity","labelBound","labelFlush","labelFlushOffset","labelLineHeight","labelSeparation","tickCap","titleAlign","titleAngle","titleBaseline","titleFont","titleFontStyle","titleFontWeight","titleOpacity","titleX","titleY","tickExtra","COMMON_AXIS_PROPERTIES_INDEX","AXIS_PROPERTIES_INDEX","labelExpr","isAxisProperty","AXIS_CONFIGS","axisDiscrete","axisPoint","axisQuantitative","axisTemporal","axisXBand","axisXDiscrete","axisXPoint","axisXQuantitative","axisXTemporal","axisYBand","axisYDiscrete","axisYPoint","axisYQuantitative","axisYTemporal","isUnitSpec","CompositeMarkNormalizer","getMarkType","channelHasFieldOrDatum","channelHasNestedOffsetScale","isAggregate","extractTransformsFromEncoding","oldEncoding","aggOp","isTitleDefined","newField","newFieldDef","aggregateEntry","secondaryChannel","isNonPositionScaleChannel","initEncoding","normalizedEncoding","mainChannel","positionDef","markSupported","primaryFieldDef","markChannelCompatible","normalizeEncoding","newChannelDef","mapping","pathGroupingFields","details","_fieldDef","getCompositeMarkTooltip","tooltipSummary","continuousAxisChannelDef","encodingWithoutContinuousAxis","withFieldName","fiveSummaryTooltip","fieldPrefix","titlePrefix","mainTitle","escape","tooltipFieldDefs","fieldDefs","makeCompositeAggregatePartFactory","compositeMarkDef","continuousAxis","sharedEncoding","compositeMarkConfig","partName","positionPrefix","_ref2$endPositionPref","endPositionPrefix","_ref2$extraEncoding","extraEncoding","partLayerMixins","partBaseSpec","compositeMarkContinuousAxis","continuousAxisChannelDef2","continuousAxisChannelDefError","continuousAxisChannelDefError2","filterAggregateFromChannelDef","continuousAxisWithoutAggregate","compositeMarkOrient","xAggregate","yAggregate","_toPropertyKey","hint","prim","toPrimitive","_toPrimitive","BOXPLOT","boxPlotNormalizer","normalizeBoxPlot","getBoxPlotType","_markDef$extent","_spec","outerSpec","_outerSpec$transform","boxplot","sizeValue","boxPlotType","_boxParams","_compositeMarkContinu","continuousFieldName","boxplotSpecificAggregate","boxParamsQuartiles","postAggregateCalculates","calculate","_spec$encoding","oldEncodingWithoutContinuousAxis","_filterTooltipWithAgg","customTooltipWithAggregatedField","customTooltipWithoutAggregatedField","filteredEncoding","filterTooltipWithAggregatedField","_extractTransformsFro","ticksOrient","boxOrient","boxParams","encodingWithoutSizeColorAndContinuousAxis","makeBoxPlotPart","makeBoxPlotExtent","makeBoxPlotBox","makeBoxPlotMidTick","fiveSummaryTooltipEncoding","endTick","whiskerTooltipEncoding","whiskerLayers","boxLayers","layer","filteredLayersMixins","_filteredLayersMixins","lowerBoxExpr","upperBoxExpr","iqrExpr","lowerWhiskerExpr","upperWhiskerExpr","joinaggregateTransform","joinaggregate","filteredWhiskerSpec","encodingWithoutSizeColorContinuousAxisAndTooltip","axisWithoutTitle","outlierLayersMixins","filteredLayersMixinsTransforms","continousAxisField","ERRORBAR","errorBarNormalizer","normalizeErrorBar","_errorBarParams","errorBarParams","tooltipEncoding","makeErrorBarPart","errorbar","errorBarOrientAndInputType","xError","xError2","yError","yError2","errorBarIsInputTypeRaw","inputType","isTypeAggregatedUpperLower","errorBarIsInputTypeAggregatedUpperLower","isTypeAggregatedError","errorBarIsInputTypeAggregatedError","_errorBarOrientAndInp","_errorBarAggregationA","errorBarSpecificAggregate","tooltipTitleWithFieldName","centerOp","lowerExtentOp","upperExtentOp","getTitlePrefix","postAggregateCalculate","errorBarAggregationAndCalculation","oldAggregate","oldGroupBy","ERRORBAND","errorBandNormalizer","normalizeErrorBand","errorBandDef","makeErrorBandPart","errorband","is2D","bandMark","bordersMark","compositeMarkRegistry","VL_ONLY_LEGEND_CONFIG","HEADER_TITLE_PROPERTIES_MAP","HEADER_LABEL_PROPERTIES_MAP","labelAnchor","HEADER_TITLE_PROPERTIES","HEADER_LABEL_PROPERTIES","HEADER_CONFIGS","headerRow","headerColumn","headerFacet","LEGEND_SCALE_CHANNELS","COMMON_LEGEND_PROPERTY_INDEX","clipHeight","gradientOpacity","legendX","legendY","symbolDash","symbolDashOffset","symbolFillColor","symbolOpacity","symbolStrokeColor","SELECTION_ID","defaultConfig","encodings","isLegendBinding","isLegendStreamBinding","isSelectionParameter","assembleParameterSignals","_signal","isConcatSpec","isVConcatSpec","isHConcatSpec","getStepFor","_step$for","offsetIsDiscrete","for","isStep","isFrameMixins","COMPOSITION_LAYOUT_PROPERTIES","spacing","getViewConfigContinuousSize","viewConfig","_viewConfig$channel","getViewConfigDiscreteStep","getViewConfigDiscreteSize","DEFAULT_STEP","_viewConfig$channel2","continuousWidth","continuousHeight","outliers","borders","pointPadding","barBandPaddingInner","rectBandPaddingInner","bandWithNestedOffsetPaddingInner","bandWithNestedOffsetPaddingOuter","minFontSize","maxFontSize","minOpacity","maxOpacity","minSize","minStrokeWidth","maxStrokeWidth","quantileCount","quantizeCount","gradientHorizontalMaxLength","gradientHorizontalMinLength","gradientVerticalMaxLength","gradientVerticalMinLength","unselectedOpacity","selection","tab10","DEFAULT_FONT_SIZE","guideLabel","groupSubtitle","DEFAULT_COLOR","gray0","gray1","gray2","gray3","gray4","gray5","gray6","gray7","gray8","gray9","gray10","gray11","gray12","gray13","gray14","gray15","getAxisConfigInternal","axisConfigInternal","configPropsWithExpr","initConfig","specifiedConfig","fontConfig","colorSignalConfig","fontSizeSignalConfig","outputConfig","markConfigType","axisConfigType","headerConfigType","styleConfigInternal","getStyleConfigInternal","MARK_STYLES","VL_ONLY_CONFIG_PROPERTIES","VL_ONLY_ALL_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX","stripAndRedirectConfig","markType","_prop6","vlOnlyMarkSpecificConfigs","_step12","_iterator12","_prop5","redirectConfigToStyleConfig","_prop3","_extractTitleConfig","redirectTitleConfig","toProp","compositeMarkPart","_toProp","_toProp2","isLayerSpec","SpecMapper","mapFacet","isRepeatSpec","mapRepeat","mapHConcat","mapVConcat","mapConcat","mapLayerOrUnit","mapLayer","mapUnit","subspec","hconcat","vconcat","STACK_OFFSET_INDEX","STACKABLE_MARKS","STACK_BY_DEFAULT_MARKS","isUnbinnedQuantitative","potentialStackedChannel","isCartesian","xDef","yDef","_stackedFieldDef$scal","_stackedFieldDef$scal2","fieldChannel","stackedFieldDef","stackedField","dimensionChannel","getDimensionChannel","groupbyChannels","groupbyFields","dimensionDef","dimensionField","dimensionOffsetChannel","dimensionOffsetDef","dimensionOffsetField","stackBy","isStackOffset","initMarkdef","originalMarkDef","actual","specifiedOrient","xIsMeasure","yIsMeasure","xIsTemporal","yIsTemporal","cornerRadiusEnd","dropLineAndPoint","dropLineAndPointFromConfig","getPointOverlay","markConfig","getLineOverlay","PathOverlayNormalizer","normParams","pointOverlay","lineOverlay","stackProps","overlayEncoding","stackFieldChannel","replaceRepeaterInFacet","repeater","replaceRepeaterInMapping","replaceRepeaterInFieldDef","replaceRepeaterInEncoding","replaceRepeatInProp","isRepeatRef","replaceRepeaterInFieldOrDatumDef","replaceRepeaterInChannelDef","_fd","RuleForRangedLineNormalizer","mainChannelDef","hasX2","hasY2","_excluded4","_excluded5","_excluded6","_excluded7","_excluded8","CoreNormalizer","_SpecMapper","nonFacetUnitNormalizers","hasRow","hasColumn","hasFacet","mapFacetedUnit","parentEncoding","parentProjection","specWithReplacedEncoding","repeaterPrefix","mapUnitWithParentEncodingOrProjection","normalizeLayerOrUnit","unitNormalizer","hasMatchingType","isLayerRepeatSpec","mapLayerRepeat","mapNonLayerRepeat","childSpec","_params$repeater","_params$repeaterPrefi","layerValue","childRepeater","childName","_childSpec$data","remainingProperties","_params$repeater2","_params$repeaterPrefi2","repeatValue","rowValue","columnValue","mergedProjection","mergeProjection","mergedEncoding","mergeEncoding","_this$getFacetMapping","getFacetMappingAndLayout","facetMapping","newEncoding","facets","defWithoutLayout","_arr2","_layout$prop","_align","_center","_spacing","_columns","otherParams","_ref2$encoding","parentChannelDef","mergedChannelDef","isFilter","isImputeSequence","isLookup","isPivot","isDensity","isRegression","isLoess","isSample","isWindow","isJoinAggregate","isFlatten","isCalculate","isBin","isImpute","isTimeUnit","isStack","isFold","isExtent","SelectionCompatibilityNormalizer","_normParams$emptySele","_normParams$selection","emptySelections","selectionPredicates","normalizeTransforms","normalizeChannelDef","_normParams$selection2","selDef","normalizeBinExtent","_t$from","_enc$scale","_enc$scale$domain","cond","_normalizeChannelDef","_param","normalizeSelectionComposition","_normParams$emptySele2","_a$param","pred","TopLevelSelectionsNormalizer","selections","_normParams$path","_params$path","addSpecNameToParams","normalizedSpec","topLevelSelectionNormalizer","coreNormalizer","selectionCompatNormalizer","normalizeGenericSpec","isFitCompatible","autosizeDefault","_normalizeAutoSize","normalizeAutoSize","TOP_LEVEL_PROPERTIES","extractTopLevelProperties","includeParams","Split","combine","getWithExplicit","setWithExplicit","makeExplicit","makeImplicit","tieBreakByComparing","propertyOf","defaultTieBreaker","mergeValuesWithExplicit","tieBreaker","DataSourceType","AncestorParse","_Split","parseNothing","isUrlData","isInlineData","isNamedData","isGenerator","isSequenceGenerator","isSphereGenerator","isGraticuleGenerator","assembleProjection","hasLegend","assembleInit","assembled","assembleUnitSelectionMarks","_model$component$sele4","selCmpt","selectionCompilers","cleanupEmptyOnArray","DataFlowNode","debugName","_children","addChild","oldChild","newParent","OutputNode","_DataFlowNode","refCounts","cloneObj","_hash","isTimeUnitTransformComponent","timeUnitComponent","offsetAs","TimeUnitNode","formula","newFormula","_step2$value","fieldAs","_timeUnit","reduceFieldDef","isUnitModel","TUPLE_FIELDS","SelectionProjectionComponent","hasChannel","hasField","hasSelectionId","_selCmpt$project","_encodings","_fields2","sg","initVal","_fields","vgField","getScaleComponent","geoChannel","allSignals","scaleBindings","topLevelSignals","isTopLevelLayer","namedSg","VL_SELECTION_RESOLVE","_model$parent$parent","isLayerModel","BRUSH","SCALE_TRIGGER","GEO_INIT_TICK","INIT","hasProjection","filterExpr","_a$filter","tupleSg","TUPLE","scaledInterval","vname","visual","projectionName","scaled","getSizeSignalRef","coord","von","hasScales","vinit","initIdx","initSg","_vinit","channelSignals","centerSg","_selCmpt$project$hasC","xvname","yvname","xinit","yinit","sizeSg","hasCenterSg","getName","visualSignals","triggerSg","scaleTriggers","_proj$signals","dataSignals","hasTick","_marks","_selCmpt$project$hasC2","STORE","_selCmpt$mark","vgStroke","_model$component$sele","fieldsSg","brushes","cmpt","wrapCondition","refFn","vgConditions","conditionValueRef","isConditionalParameter","parseSelectionPredicate","cDef","textRef","_getFormatMixins","tooltipRefForEncoding","reactiveGeom","tooltipRefFromChannelDef","markTooltip","tooltipData","formatConfig","tooltipFormat","toSkip","fDef","channel2","_getFormatMixins2","_tuples$_i","keyValues","enableAria","ariaRoleDesc","descriptionValue","nonPosition","_defaultValue","_opt$filled","_getMarkPropOrConfig","_getMarkPropOrConfig2","transparentIfNeeded","defaultFill","defaultStroke","colorVgChannel","fillStrokeMarkDefAndConfig","positionOffset","baseChannel","_ref$encoding","offsetType","markDefOffsetValue","pointPosition","defaultPos","_positionOffset","pointPositionDefaultRef","positionRef","definedValueOrConfig","domainDefinitelyIncludesZero","ALIGNED_X_CHANNEL","BASELINED_Y_CHANNEL","vgAlignedPositionChannel","defaultAlign","alignExcludingSignal","alignChannel","pointOrRangePosition","defaultPos2","rangePosition","pos2Mixins","_position2orSize","vgSizeChannel","position2Ref","position2orSize","pointPosition2OrSize","dimensionSize","rectPosition","_encoding$sizeChannel","channelDef2","hasSizeDef","offsetScaleChannel","isBarBand","sizeMixins","offsetScaleName","offsetScale","hasSizeFromMarkOrEncoding","bandSize","hasFieldDef","bandWidth","scaleRange","_config$scale","bandPaddingInner","defaultStep","defaultSizeRef","defaultBandAlign","posRef","vgChannel2","sizeOffset","positionAndSize","_model$component$axes","_axis$get","axisTranslate","_positionOffset2","_positionOffset3","offset2","bandSizeExpr","binSpacingOffset","getBinSpacing","binSpacingOffset2","rectBinRef","startRef","rectBinPosition","isEnd","spacingOffset","reverseExpr","translateExpr","minBandSizeExpr","spacingAndSizeOffset","ALWAYS_IGNORE","baseEncodeEntry","_ref$fill","_ref$stroke","markDefProperties","wrapAllFieldsInvalid","_ref4$invalid","filterIndex","aggregator","scaleComponent","allFieldsInvalidPredicate","_ref$invalid","_model$stack","valueIfDefined","VORONOI","nearest","cellDef","isVoronoi","exists","_mark$name","inputBindings","disableDirectManipulation","_bind$p$field","sgname","TOGGLE","modifyExpr","tpl","addClear","_loop2","vIdx","tIdx","legendBindings","projLen","selDef_","legendFilter","_evt$filter","_evt","selName","markName","sgName","ANCHOR","DELTA","boundScales","onDelta","_scaleCmpt$get","_scaleCmpt$get2","scaleCmpt","reversed","panFn","zoomFn","MODIFY","facetModel","isFacetModel","getFacetModel","requiresSelectionId","identifier","startsWithDatum","getDependentFields","dependents","FilterNode","_dependentFields","dfnode","getSelectionComponent","tunode","insertAsParentOf","parseSelectionExtent","filterOp","isSelectionPredicate","setAxisEncode","vgRef","_axis$encode","_a$part","_b$update","assembleAxis","axisCmpt","_axisCmpt$combine","disable","propType","valueOrSignalRef","conditions","propIndex","valueOrSignalCRef","_propIndex","_vgProp","mainExtracted","_axis$encode2","_part2","hasAxisPart","titleString","assembleTitle","assembleAxisSignals","getAxisConfigFromConfigTypes","configTypes","configType","orient1","orientConfig1","orientConfig2","conditionalOrientAxisConfig","getAxisConfigStyle","axisConfigTypes","toMerge","_config$configType","getAxisConfig","axisConfigs","configFrom","configValue","_axisConfigs$configFr","axisRules","_axis$grid","defaultGrid","gridChannel","_gridScale","defaultLabelAlign","defaultLabelBaseline","_ref9","_axis$labelFlush","defaultLabelFlush","_ref10","_axis$labelOverlap","hasTimeUnit","defaultLabelOverlap","_ref11","_ref12","_axis$tickCount","_ref16","defaultTickCount","_ref17","_ref13","fieldDefTitle","getFieldDefTitle","typedFieldDef","_ref14","_values","_ref15","_axis$zindex","defaultZindex","normalizeAngleExpr","alwaysIncludeMiddle","orientIsTop","orientIsLeft","_op","mainOrient","orientIsMain","_orientIsMain","CalculateNode","forEachFieldDef","sortValue","sortArrayIndexField","getHeaderChannel","getHeaderProperty","headerSpecificConfig","getHeaderProperties","HEADER_CHANNELS","HEADER_TYPES","assembleTitleGroup","facetFieldDef","_getHeaderProperties","headerChannel","defaultHeaderGuideBaseline","defaultHeaderGuideAlign","assembleHeaderProperties","assembleHeaderGroups","layoutHeader","headerType","assembleHeaderGroup","getSort","_sort$order","_getHeaderProperties2","titleTextExpr","headerComponent","isFacetWithoutRowCol","hasAxes","sizeSignal","LAYOUT_TITLE_BAND","getLayoutTitleBand","propertiesMap","sizeSignals","layoutSize","stepSignal","sizeExpr","isWidth","safeExpr","cardinality","getSizeTypeFromLayoutSizeType","layoutSizeType","guideEncodeEntry","valueDef","defaultScaleResolve","isConcatModel","parseGuideResolve","channelScaleResolve","LEGEND_COMPONENT_PROPERTY_INDEX","LEGEND_COMPONENT_PROPERTIES","LegendComponent","legendEncodeRules","symbolsSpec","_legendCmpt$get","_legendCmpt$get2","_legendCmpt$get3","_getMaxValue","legendCmpt","propsList","applyMarkConfig","getMaxValue","_config$legend$symbol","_getFirstConditionVal","_encoding$fill","getFirstConditionValue","selectedCondition","gradientSpec","_legendCmpt$get4","specifiedlabelsSpec","labelsSpec","entriesSpec","getConditionValue","conditionalDef","reducer","hasConditionalValueDef","legendRules","_legend$gradientLengt","legendConfig","gradientLengthSignal","defaultGradientLength","_legend$labelOverlap","_legend$symbolType","shapeChannelDef","markShape","defaultSymbolType","getLegendType","getDirection","_legend$direction","defaultDirection","legendComponent","parseLegendForChannel","parseUnitLegend","_model$component","mergeLegendComponent","_channel","_child","parseNonUnitLegend","isExplicit","_legend$encoding","_legend","getLegendDefWithScale","_model$fieldDef","_selCmpt$project$hasF","legendSelections","parseInteractiveLegend","ruleParams","_legend2","legendEncoding","legendEncodeParams","_legendEncoding$part","legendEncodingPart","mergedLegend","childLegend","mergedOrient","childOrient","_mergedLegend$implici","_mergedLegend$explici","typeMerged","mergedValueWithExplicit","st1","st2","mergeSymbolType","legendComponentIndex","legendByDomain","domainHash","_legend$encode2","_legendCmpt$combine","_legend$encode3","_legend$encode","setLegendEncode","assembleLegend","assembleProjections","assembleProjectionForModel","assembleProjectionsForModelAndChildren","fits","lookupDataSource","PROJECTION_PROPERTIES","ProjectionComponent","specifiedProjection","_replaceExprRef","posssiblePair","channelHasField","requestDataName","Main","gatherFitData","projComp","parseUnitProjection","nonUnitProjection","mergable","allPropertiesShared","mergeIfNoConflict","modelProjection","_modelProjection$data","isFit","renameProjection","parseNonUnitProjections","binKey","getBinSignalName","_normalizeBin","createBinComponent","isBinTransform","normalizedBin","_getSignalsFromModel","extentSignal","getSignalsFromModel","binComponent","BinNode","renameSignal","flatMap","_bin$as","arrayWithHoles","iterableToArray","unsupportedIterableToArray","nonIterableRest","binAs","remainingAs","_bin$bin","binTrans","formulaAs","binComponentIndex","_createBinComponent","_model$axis","rangeFormula","_createBinComponent2","addDimension","posChannel","isFieldRange","AggregateNode","dimensions","parentMeasures","childMeasures","_parentMeasures$field","mergeMeasures","_current4","alias","meas","_meas$","_meas$argField","argField","_meas$field","_meas$field2","scaleDomain","_t$groupby","_meas$2","_meas$field3","FacetNode","sortField","sortIndexField","childModel","_this$channel","depFields","childIndependentFieldsWithStep","childScaleComponent","getFieldFromDomain","assembleDomain","crossedDataName","childChannel","_this$channel2","_sortField$op","hasSharedAxis","_header$axes","assembleRowColumnHeaderData","getChildIndependentFieldsWithStep","_childIndependentFiel","_childIndependentFiel2","facetData","assembleFacetHeaderData","unquote","getImplicitFromFilterTransform","_filter$oneOf","getImplicitFromEncoding","mainFieldDef","dimensionChannelDef","ParseNode","_parse","formatParse","onlyNested","_specifier","ancestorParse","_data$format","makeWithAncestors","parsedAs","_parsedAs","copyAll","IdentifierNode","GraticuleNode","SequenceNode","_this$params$as","SourceNode","defaultExtension","_generator","_Optimizer_modified","isDataSourceNode","Optimizer","BottomUpOptimizer","_Optimizer","depths","getNodeDepths","topologicalSort","modifiedFlag","TopDownOptimizer","_Optimizer2","optimize","MergeIdenticalNodes","_TopDownOptimizer","mergedNode","hashes","setModified","mergeNodes","RemoveUnnecessaryIdentifierNodes","_TopDownOptimizer2","RemoveDuplicateTimeUnits","_super3","timeUnitFields","producedFields","removeFormulas","RemoveUnnecessaryOutputNodes","_TopDownOptimizer3","_super4","isRequired","MoveParseUp","_BottomUpOptimizer","_super5","numChildren","dependentFields","swapWithParent","MergeParse","_BottomUpOptimizer2","_super6","originalChildren","commonParse","conflictingParse","mergedParseNode","RemoveUnusedSubtrees","_BottomUpOptimizer3","_super7","MergeTimeUnits","_BottomUpOptimizer4","_super8","timeUnitChildren","combination","MergeAggregates","_BottomUpOptimizer5","_super9","groupedAggregates","groupBys","groupBy","mergeableAggs","_step13","mergedAggs","_iterator13","_agg","MergeBins","_BottomUpOptimizer6","_super10","_step14","moveBinsUp","promotableBins","remainingBins","_iterator14","_step15","promotedBin","_iterator15","_step16","remainingBin","_iterator16","_bin","MergeOutputs","_BottomUpOptimizer7","_super11","hasOutputChild","mainOutput","_step17","otherChildren","_iterator17","lastOutput","theChild","_step18","_iterator18","JoinAggregateTransformNode","getDefaultName","joinAggregateFieldDef","_joinAggregateFieldDe","StackNode","_stack","_this$_stack$facetby","facetby","stackField","getGroupbyFields","_this$_stack","dimensionFieldDefs","dimensionFieldDef","_this$_stack2","stackby","_dimensionFieldDef$ba","binStart","binEnd","stackTransform","_stackTransform$offse","sortFields","normalizedAs","isValidAsArray","stackProperties","groupbyChannel","getStackByFields","WindowTransformNode","_this$transform$group","_this$transform$sort","windowFieldDef","_windowFieldDef$as","_sortField$order","moveFacetDown","facetMain","moveMainDownToFacet","cloner","newName","FACET_SCALE_PREFIX","getSource","setSource","outputNodes","addDimensions","MAX_OPTIMIZATION_RUNS","checkLinks","runOptimizer","optimizer","optimizationDataflowHelper","dataComponent","firstPass","roots","SignalRefWrapper","exprGenerator","rename","localScaleComponents","domains","parseDomainForChannel","parseSelectionDomain","isFaceted","facetParent","parseUnitScaleDomain","selectionExtent","childComponent","domainsTieBreaker","se","parseNonUnitScaleDomain","scaleConfig","_canUseUnaggregatedDo","canUseUnaggregatedDomain","reason","useUnaggregatedDomain","normalizeUnaggregatedDomain","specifiedScales","parseSingleChannelDomain","convertDomainIfItIsDateTime","mapDomainToDataSignal","isDomainUnionWith","defaultDomain","unionWith","stackDimensions","normalizeSortField","fieldDefToSortBy","_isStackedMeasure","domainSort","Raw","binSignal","getSignalName","_data2","isStackedMeasure","mergeDomains","uniqueDomains","sorts","_sort","filteredSorts","unionDomainSorts","allData","isDataRefUnionedDomain","nonUnionDomain","isFieldRefUnionDomain","assembleScales","assembleScalesForModel","otherScaleProps","assembleScaleRange","parsedExtent","assembleSelectionScaleDomain","ScaleComponent","typeWithExplicit","RANGE_PROPERTIES","getBinStepSignal","binCount","updatedName","parseRangeForChannel","specifiedScale","supportedByScaleType","channelIncompatability","fromName","parseScheme","getPositionStep","positionChannel","getOffsetStep","_getFieldOrDatumDef","mergedScaleCmpt","_model$specifiedScale","positionSize","getDiscretePositionSize","offsetScaleType","positionScaleCmpt","positionScaleType","positionScaleName","endRatio","getOffsetRange","sizeRangeMin","xyStepSignals","maxBandSize","minXYStep","pointStep","MAX_SIZE_RANGE_STEP_RATIO","sizeRangeMax","rMax","rMin","defaultContinuousToDiscreteCount","defaultRange","isExtendedScheme","offsetChannel","offsetDef","_mergedScaleCmpt$get","offsetScaleCmpt","_offsetScaleCmpt$get","_offsetScaleCmpt$get2","offsetPaddingInner","offsetPaddingOuter","widthStep","heightStep","parseScaleProperty","localScaleCmpt","specifiedValue","scalePadding","scalePaddingInner","copyKeyFromObject","scaleRules","hasNestedOffsetScale","hasSecondaryRangeChannel","parseUnitScaleProperty","parseNonUnitScaleProperty","_interpolate","specifiedDomain","_getFieldDef","_nice","barConfig","continuousPadding","paddingValue","offsetBandPaddingInner","_paddingInner","paddingInnerValue","bandPaddingOuter","offsetBandPaddingOuter","_paddingOuter","xReverse","_reverse","_zero","rangeWithExplicit","parseUnitScaleRange","valueWithExplicit","specifiedType","fieldDefType","defaultScaleType","_fieldDef$axis","channelSupportScaleType","parseScaleCore","scaleComponents","_specifiedScale","sType","parseUnitScaleCore","scaleTypeWithExplicitIndex","_a$channel","explicitScaleType","childScaleType","scaleTypeTieBreaker","childScale","renameScale","parseNonUnitScaleCore","nameMap","oldName","Model","parentGivenName","_spec$name","_spec$transform","correctDataNames","_mark$from","_mark$from2","scaleNameMap","projectionNameMap","signalNameMap","normalizeTransform","specType","compositionConfig","spacingConfig","_spacing$row","_spacing$column","extractCompositionLayout","outputNodeRefCounts","parseLayoutSize","renameTopLevelLayoutSizeSignal","parseSelections","parseAxesAndHeaders","parseLegends","parseMarkGroup","ignoreRange","parseScales","baseView","isTopLevel","_encodeEntry","encodeEntry","assembleEncodeFromView","_this$layout","headerComponentIndex","_getHeaderProperties4","assembleLayoutTitleBand","assembleDefaultLayout","headerMarks","axisComponents","_axisComponents$x","_axisComponents$y","_this$title","titleNoEncoding","_title$frame","_title$anchor","assembleSignals","assembleLayout","assembleHeaderMarks","assembleMarks","assembleAxes","assembleLegends","fullName","getDataName","oldSignalName","originalScaleName","localScaleComponent","variableName","origName","sel","_this$component$axes$","_this$component$axes$2","hasOrientSignalRef","ModelWithField","_Model","getMapping","DensityTransformNode","_this$transform$as","_specifiedAs$","_specifiedAs$2","specifiedAs","_this$transform","ExtentTransformNode","FilterInvalidNode","vegaFilters","FlattenTransformNode","_as$i","_this$transform2","FoldTransformNode","fold","GeoJSONNode","_this$fields","geoJsonCounter","pair","GeoPointNode","ImputeNode","_keyvals$start","_this$transform$frame","imputeTransform","processSequence","imputedChannel","keyChannel","_imputedChannel$imput","LoessTransformNode","LookupNode","secondary","foreign","asName","fromOutputNode","isLookupData","fromSource","findSource","fromOutputName","isLookupSelection","materialized","QuantileTransformNode","RegressionTransformNode","regression","PivotTransformNode","_this$transform$group2","pivot","SampleTransformNode","makeWalkTree","datasetIndex","walkTree","_dataSource$format","_dataSource$transform","_dataSource$transform2","_dataSource$transform3","assembleFormatParse","assembleTransforms","assemble","getHeaderType","parseFacetHeader","_fieldDef$header","makeHeaderComponent","mergeChildAxis","_layoutHeader$headerT","axisComponent","mainAxis","parseChildrenLayoutSize","parseNonUnitLayoutSizeForChannel","layoutSizeCmpt","_resolve$scale$channe","childSize","scaleResolve","defaultUnitSize","facetSortFieldName","FacetModel","_ModelWithField","buildModel","initFacet","initFacetFieldDef","normalizedFacet","parseFacetHeaders","assembleSelectionTopLevelSignals","assembleSelectionData","layoutMixins","layoutHeaderComponent","_layoutMixins$titleAn","_layoutMixins$bandTyp","_layoutMixins$offset","bandType","_this$facet","columnDistinctSignal","getHeaderLayoutMixins","assembleLayoutSignals","facetLayoutDataName","_this$component$data$","facetRoot","_this$facet2","_this$getCardinalityA","getCardinalityAggregateForChild","_sort$op","outputName","_outputName","ORTHOGONAL_ORIENT","_facet$channel","assembleFacetData","assembleGroupEncodeEntry","assembleLabelTitle","assembleGroupStyle","markGroup","assembleFacet","facetSortFields","facetSortOrder","assembleGroup","assembleFacetSignals","_otherData$format","_data$format2","_otherData$format2","otherData","hasName","formatMesh","otherFeature","formatFeature","otherMesh","_data$format3","_ParseNode$makeExplic","_ParseNode$makeWithAn2","existingSource","parseRoot","_model$component$data","_BinNode$makeFromEnco","parentIsLayer","makeFromEncoding","lookupCounter","derivedType","transformNode","_ParseNode$makeWithAn","makeFromTransform","make","_transformNode$produc","parseTransformArray","implicitSelection","getImplicitFromSelection","implicitEncoding","parseAll","_TimeUnitNode$makeFro","_BinNode$makeFromEnco2","parseAllForSortIndex","_FilterInvalidNode$ma","rawName","_ImputeNode$makeFromE","_StackNode$makeFromEn","mainName","lookupName","materializeSelections","_makeJoinAggregateFro","facetName","_fieldDef$sort","_fieldDef$sort$op","makeJoinAggregateFromFacet","ConcatModel","_spec$resolve","_spec$resolve2","widthType","heightType","parseConcatLayoutSize","layoutSignals","AXIS_COMPONENT_PROPERTIES_INDEX","AXIS_COMPONENT_PROPERTIES","AxisComponent","isFalseOrNull","OPPOSITE_ORIENT","mergeAxisComponents","mergedAxisCmpts","childAxisCmpts","mergeAxisComponent","propsToAlwaysIncludeConfig","_axis","_config","_config$axis","_axis2","_axis$encoding","defaultOrient","typeBasedConfigTypes","axisChannel","axisOrient","vlOnlyConfigTypes","vgConfigTypes","vlOnlyAxisConfig","vgAxisConfig","axisConfigStyle","getAxisConfigs","getLabelAngle","_ref$configValue","_ref$configFrom","hasConfigValue","axisEncoding","_axisEncoding$part","axisEncodingPart","specifiedLabelsSpec","fixedShape","shapeMixins","vgMark","vgThicknessChannel","defaultSize","markPropOrConfig","markCompiler","postEncodingTransform","shapeDef","parseMarkGroups","FACETED_PATH_PREFIX","getMarkGroup","fromPrefix","getPathGroups","_model$stack$groupbyC","groupUpdate","innerGroupUpdate","_getMarkGroup","STACK_GROUP_PREFIX","fieldScale","stackFieldGroup","vgFieldMinMax","groupByField","getGroupsForStackedBarWithCornerRadius","xScale","yScale","scaleClip","projectionClip","unitCount","parentCount","interactiveFlag","UnitModel","_spec$params","parentGivenSize","specifiedAxes","specifiedLegends","filledConfig","defaultFilled","initLayoutSize","initScales","initAxes","initLegends","isGeoShapeMark","hasGeoPosition","scaleInternal","axisSpec","initAxis","axisInternal","supportLegend","specifiedSize","parseUnitLayoutSize","selDefs","selCmpts","selectionConfig","_cfg$key","def_","parseUnitSelection","_model$component$sele2","hasSelections","hasSg","isPoint","hasUnit","assembleTopLevelSignals","assembleUnitSelectionSignals","_model$component$sele3","dataCopy","assembleUnitSelectionData","_this$component$mark","LayerModel","axisCount","_axes$_channel","_axisComponent$getWit","oppositeOrient","_step5$value","parseLayerAxes","uniqueStyles","assembleLayerSelectionMarks","unitSize","isAnyConcatSpec","compile","inputSpec","newLogger","firstPassCounter","secondPassCounter","optimizeDataflow","vgSpec","topLevelProperties","datasets","usermeta","vgConfig","sourceIndex","newData","whereTo","_d3$transform","_d3","_d$transform","_data3","_d2","assembleRootData","otherTopLevelProps","$schema","assembleTopLevelModel","hasAxisOrientSignalRef","autoSizeType","inverseSizeType","getFitType","getTopLevelProperties","normalized","_exec$slice","_exec$slice2","library","pkg","medColor","darkTheme","markColor$7","excelTheme","markColor$6","axisColor$2","backgroundColor$2","blackTitle","fiveThirtyEightTheme","markColor$5","ggplot2Theme","labelFont$1","markColor$4","colorSchemes$1","latimesTheme","markColor$3","axisColor$1","quartzTheme","markColor$2","voxTheme","markColor$1","axisColor","colorSchemes","urbanInstituteTheme","markColor","defaultFont$1","googlechartsTheme","ptToPx","fontSmallPx","legendFontPx","fontLargePx","fontStandard","fontTitle","firstLevelElementColor","secondLevelElementColor","paletteColor1","divergentColorMin","divergentPalette","powerbiTheme","darkCategories","lightCategories","genCarbonConfig","viewbg","carbonwhite","carbong10","carbong90","carbong100","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","sourceSymbolKeys","EL_ID","DEFAULT_OPTIONS","styleId","disableDefaultStyle","valueToHtml","_w$vl","hasRequiredIterator","elementId","tooltipHandler","innerHTML","createDefaultStyle","_document$fullscreenE","fullscreenElement","_calculatePosition","tooltipBox","calculatePosition","getDefaultExportFromCjs","yallist","Yallist$1","tail","inserted","removeNode","unshiftNode","pushNode","thisp","walker","forEachReverse","getReverse","mapReverse","reduceReverse","toArray","toArrayReverse","sliceReverse","deleteCount","Yallist","er","MAX","LENGTH","LENGTH_CALCULATOR","ALLOW_STALE","MAX_AGE","DISPOSE","NO_DISPOSE_ON_SET","LRU_LIST","UPDATE_AGE_ON_GET","naiveLength","LRUCache","stale","maxAge","dispose","noDisposeOnSet","updateAgeOnGet","mL","allowStale","mA","lC","forEachStep","isStale","_del","expiresAt","doUse","looseOption","loose","emptyOpts","parseOptions_1","re$1","MAX_LENGTH","MAX_SAFE_COMPONENT_LENGTH","MAX_SAFE_BUILD_LENGTH","MAX_LENGTH$1","RELEASE_TYPES","SEMVER_SPEC_VERSION","FLAG_INCLUDE_PRERELEASE","FLAG_LOOSE","debug$1","NODE_DEBUG","_console","debug_1","safeRe","LETTERDASHNUMBER","safeRegexReplacements","createToken","isGlobal","safe","_safeRegexReplacement","_safeRegexReplacement2","makeSafeRegex","NUMERICIDENTIFIER","NUMERICIDENTIFIERLOOSE","NONNUMERICIDENTIFIER","PRERELEASEIDENTIFIER","PRERELEASEIDENTIFIERLOOSE","BUILDIDENTIFIER","MAINVERSION","PRERELEASE","BUILD","FULLPLAIN","MAINVERSIONLOOSE","PRERELEASELOOSE","LOOSEPLAIN","XRANGEIDENTIFIER","XRANGEIDENTIFIERLOOSE","GTLT","XRANGEPLAIN","XRANGEPLAINLOOSE","COERCE","LONETILDE","tildeTrimReplace","LONECARET","caretTrimReplace","comparatorTrimReplace","hasRequiredComparator","hasRequiredRange","reExports","numeric","compareIdentifiers$1","anum","bnum","identifiers","parseOptions","compareIdentifiers","SemVer$1","SemVer","includePrerelease","LOOSE","FULL","major","minor","prerelease","build","compareMain","comparePre","release","identifierBase","semver","compare_1","compare$5","eq_1","compare$4","neq_1","compare$3","gt_1","compare$2","gte_1","compare$1","lt_1","lte_1","eq","neq","cmp_1","requireRange","Range","Comparator","parseRange","isNullSet","isAny","comps","memoKey","hr","HYPHENRANGELOOSE","HYPHENRANGE","hyphenReplace","COMPARATORTRIM","TILDETRIM","CARETTRIM","rangeList","comp","parseComparator","replaceGTE0","COMPARATORLOOSE","rangeMap","comparators","thisComparators","isSatisfiable","rangeComparators","thisComparator","rangeComparator","testSet","ANY","COMPARATOR","requireComparator","remainingComparators","testComparator","otherComparator","replaceCarets","replaceTildes","replaceXRanges","replaceStars","replaceTilde","TILDELOOSE","TILDE","replaceCaret","CARETLOOSE","CARET","replaceXRange","XRANGELOOSE","XRANGE","gtlt","xM","anyX","STAR","GTE0PRE","GTE0","incPr","fM","fm","fp","fpr","fb","tM","tm","tp","tpr","satisfies_1","satisfies$1","editor","listen","embedStyle","_Object$keys","_vegaLite","vl","DEFAULT_ACTIONS","export","png","compiled","I18N","CLICK_TO_VIEW_ACTIONS","COMPILED_ACTION","EDITOR_ACTION","PNG_ACTION","SOURCE_ACTION","SVG_ACTION","NAMES","VERSION","PREPROCESSOR","vlSpec","SVG_CIRCLES","CHART_WRAPPER_CLASS","isTooltipHandler","viewSource","sourceHeader","sourceFooter","write","guessMode","providedMode","_NAMES$providedMode","createLoader","embedOptionsFromUsermeta","parsedSpec","_parsedSpec$usermeta$","_parsedSpec$usermeta","embedOptions","defaultStyle","_embed2","_parsedOpts$config","_usermetaOpts$config","loadedEmbedOptions","usermetaLoader","_opts$loader","usermetaOpts","parsedOpts","mergedOpts","loadOpts","_embed","_loadOpts","_opt$config","t4","t5","getRoot","_document$head","possibleRoot","getRootNode","ShadowRoot","rootContainer","_embed3","_opts$config","_opts$actions","_opts$renderer","_opts$logLevel","_opts$downloadFileNam","_vega$expressionInter","i18n","downloadFileName","ID","_getRoot","chartWrapper","updateSet","documentClickHandler","ctrl","viewSourceLink","compileLink","_opts$editorUrl","editorUrl","editorLink","_args5","_context6","Warn","expressionFunctions","viewClass","expressionInterpreter","i18nExportAction","exportLink","_opts$sourceHeader","_opts$sourceFooter","_opts$sourceHeader2","_opts$sourceFooter2","updateMultipleDatasetsInView","functionToCheck","updateSingleDatasetInView","getUniqueFieldNames","NOOP","addSignalListenersToView","signalListeners","signalNames","removeSignalListenersFromView","combineSpecWithDimension","VegaEmbed","_React$PureComponent","_this$props$onError","resultPromise","handleError","createView","fieldSet","clearView","specChanges","newSpec","oldSpec","isExpensive","computeSpecChanges","newSignalListeners","oldSignalListeners","areSignalListenersChanged","modifyView","onNewView","_this$props$signalLis","finalSpec","Vega","_this$props$onNewView","vegaEmbed","handleNewView","raster","ExclamationTriangleIcon","wrapLines","CodeBracketIcon","traceback","vizData","explanations","setExplanations","explanationsDivRef","explanationsView","isAccessibility","section","explanation","scrollToElement","fetchExplanation","ChatBubbleOvalLeftEllipsisIcon","LoadBox","LAYER","COMPONENT_TYPE","clipRule","DIRECTION","VIEW_LIFE_CIRCLE","GEOMETRY_LIFE_CIRCLE","PLOT_EVENTS","ELEMENT_STATE","GROUP_Z_INDEX","TABLE","TABLE_TR","FRAGMENT_REG","CONTAINERS","GROUP_ATTRS","FIELD_ORIGIN","ENGINES","registerEngine","engine","tbody","thead","tfoot","td","modifyCSS","css","getChartSize","autoFit","getElementSize","changeVisible","Adjust","xField","yField","adjustNames","dimValuesMap","isAdjust","getAdjustRange","dimValue","adjustData","groupedDataArray","getDimValues","dataArray","adjustDim","groupData","ADJUST_MAP","getAdjust","registerAdjust","Dodge","cacheMap","adjustDataArray","mergeData","marginRatio","dodgeRatio","dodgeBy","intervalPadding","dodgePadding","xDimensionLength","groupNum","maxColumnWidth","minColumnWidth","columnWidthRatio","customOffset","xDimensionLegenth","groupDataArray","frameIndex","getDistribution","valueArr","valIndex","getDodgeOffset","tickLength","getIntervalOnlyOffset","getDodgeOnlyOffset","getIntervalAndDodgeOffset","normalizedIntervalPadding","normalizedDodgePadding","geomWidth","normalizedMaxWidht","normalizedMinWidht","Jitter","adjustGroup","getAdjustOffset","randomNumber","Cache","reverseOrder","processStack","processOneDimStack","positive","negative","xKey","xValue","newXValue","stackHeight","stackValue","Symmetric","getXValuesMaxMap","yValue","off_1","getDimMaxValue","dimValues","flattenValues","toScaleString","Attribute","_parseCfg","_toOriginParam","getLinearValue","leftPercent","getNames","defaultCallback","_getAttributeValue","isCategory","isLinear","RGB_REG","regexLG","regexRG","regexColorStop","arr2rgb","toHex","iEl","rgb2arr","x16Value","toRGB","createTmp","getPropertyValue","cArray","colorArray","fixedPercent","calColor","toCSSGradient","gradientColor","cssColor_1","colorStops_1","itemArr","Opacity","Position","Shape","methodCache","registerTickMethod","__cfg__","initCfg","getTicks","getText","tickValue","getConfig","setDomain","calculateTicks","tickMethod","getTickMethod","calcPercent","calcValue","Category","buildIndexMap","translateIndexMap","scaledValue","domainRange","twoDigitsOptional","twoDigits","shorten","sLen","newArr","monthUpdate","arrName","lowerCaseArr","origObj","args_1","dayNames","monthNames","monthNamesShort","defaultI18n","dayNamesShort","amPm","DoFn","dayOfMonth","globalI18n","setGlobalDateI18n","regexEscape","formatFlags","DD","Do","ddd","dddd","MM","MMM","MMMM","YY","YYYY","HH","mm","SS","SSS","ZZ","monthParse","emptyDigits","emptyWord","timezoneOffset","parseFlags","cent","globalMasks","shortDate","mediumDate","longDate","fullDate","isoDate","isoDateTime","shortTime","mediumTime","longTime","setGlobalDateMasks","masks","literals","combinedI18nSettings","dateStr","dateInfo","isPm","parseInfo","specifiedFields","requiredFields","requiredField","dateTZ","FORMAT_METHOD","toTimeStamp","SECOND","MINUTE","HOUR","getTickInterval","_lo","_hi","TimeCat","tickIndex","getScalePercent","firstTick","lastTick","minLimit","maxLimit","getInvertPercent","calBase","getLogPositiveMin","positiveMin","appendPercent","numberValue","minConfig","maxConfig","timeStamps_1","min_1","secondMin_1","max_1","minTickInterval","minIndex","minTick","minIndexPercent","getClass","registerClass","Identity","calculateCatTicks","showLast","ticks_1","lastValue","D3Linear","_domain","d3ArrayTicks","snapMultiple","snapType","intervalTicks","maxTick","availableInterval","strictLimit","defaultMin","defaultMax","tickMin","tickMax","prettyNumber","DEFAULT_Q","EPSILON","simplicity","lmin","lmax","lstep","simplicityMax","dMin","dMax","lMin","lMax","rt","densityMax","coverage","coverageMax","half","extended","onlyLoose","step_1","best","dm","cm","minStart","maxStart","lStep","pretty","nu","createYear","creatMonth","minYear","maxYear","yearInterval","monthInterval","mmMoth","dMonths","minMonth","diffMonth","mday","ddays","diffDay","dHours","diffHour","dMinus","diffMinus","minSecond","dSeconds","avg","sorted","d3Linear","ATTRIBUTE_MAP","registerAttribute","Coordinate","isRect","isHelix","isPolar","isReflectX","isReflectY","isTransposed","originalMatrix","convertDim","isReflect","invertDim","inverted","mat3","convertPoint","invertPoint","transpose","getCenter","getHeight","getRadius","Cartesian","Helix","maxRadius","thi","newY","Polar","oneBox","getOneBox","oneWidth","oneHeight","circleCenter","polarRadius","vPoint","vStart3","vStart2","xPercent","yPercent","COORDINATE_MAP","registerCoordinate","propagationDelegate","eventObject","identityMatrix","getMatrixByAngle","getMatrixByTranslate","applyRotate","applyTranslate","translateMatrix","formatPadding","clearDom","regionToBBox","region","createBBox","getValueByPercent","getCirclePoint","near","getBBoxWithClip","clipBBox","minX_1","maxX_1","minY_1","maxY_1","boxMinX","boxMaxX","boxMinY","boxMaxY","toPx","getTextPoint","offsetPercent","LOCATION_FIELD_MAP","none","locationType","updateAutoRender","animateOption","appear","leave","newCfg","updateInner","afterUpdate","setCapture","getLayoutBBox","getLocationType","setOffset","setLocation","getLocation","isSlider","STATUS_UPDATE","COPY_PROPERTIES","COPY_PROPERTIES_EXCLUDES","GroupComponent","shapesMap","isRegister","isUpdating","isInit","clearOffScreenCache","getChildComponentById","getElementByLocalId","localId","getElementId","getElementsByName","offScreenRender","offScreenGroup","updateElements","deleteElements","applyOffset","initEvent","removeEvent","getInnerLayoutBBox","applyMatrix2BBox","initGroup","delegateEmit","createOffScreenGroup","getDelegateObject","moveElementTo","isComponent","renderInner","appendDelegateObject","registerElement","addComponent","restCfg","inst","unregisterElement","addAnimation","elmentName","newElement","originOpacity","removeAnimation","elementName","originElement","updateAnimation","newAttrs","newGroup","originGroup","preElement","origChildComponent","replaceAttrs","getReplaceAttrs","newClipShape","updateClip","registerNewGroup","clearUpdateStatus","parentObject","deleteArray","callbackAnimCfg","removeElement","ELLIPSIS_CODE","charAtLength","ELLIPSIS_CODE_LENGTH","OPTIMIZE_THRESHOLD","getMaxLabelWidth","maxIdx","getMaxLabelWidthOptimized","ellipsisLabel","limitLength","ellipsisText","labelLength","getLabelLength","codeLength","strLen","ellipsisFlag","reserveLength","newText","reseveLength","startStr","endStr","startCodeLen","hasAdd","endCodeLen","ellipsisString","renderTag","tagCfg","autoEllipsis","ellipsisPosition","tagGroup","backgroundStyle","activeTextColor","uncheckedColor","lineColor","regionColor","verticalAxisRotate","horizontalAxisRotate","descriptionIconStroke","descriptionIconFill","LineAnnotation","autoRotate","renderLine","renderLabel","getLabelPoint","TextAnnotation","resetLocation","textGroup","ArcAnnotation","renderArc","getArcPath","endPoint","largeFlag","middlePoint","RegionAnnotation","renderRegion","ImageAnnotation","renderImage","getImageAttrs","DataMarkerAnnotation","autoAdjust","coordinateBBox","renderText","renderPoint","getShapeAttrs","textAttrs","isVertival","lineLength","textShape","xFactor","yFactor","lineDisplay","pointStyle","lineStyle","textStyle","DataRegionAnnotation","regionStyle","pointsToBBox","RegionFilterAnnotation","shapeIdx","adjustShapeAttrs","ShapeAnnotation","getOuterWidth","bLeft","pLeft","pRight","bRight","mRight","getOuterHeight","bTop","pTop","pBottom","HtmlComponent","containerTpl","resetStyles","applyStyles","initCapture","initVisible","defaultStyles","domStyles","applyChildrenStyles","cName","getElementsByClassName","applyStyle","cssName","resetPosition","HtmlAnnotation","alignX","alignY","html","domWidth","domHeight","getStatesStyle","stateStyles","styleName","AxisBase","tickLine","subTickLine","verticalFactor","verticalLimitLength","overlapOrder","tickStates","alignTick","displayWithLabel","autoHide","labelStyle","tickLineStyle","enable","drawLine","drawTicks","drawTitle","getItems","setItems","updateItem","clearItems","setItemState","updateTickStates","hasState","getItemStates","clearItemsState","getItemsByState","getSidePoint","getSideVector","getTextAnchor","getTextBaseline","processOverlap","labelGroup","getLinePath","getTickLineItems","tickLineItems","tickLineLength","tickSegment","getTickPoint","tickId","getSubTickLineItems","subTickLineItems","subCount","tickLineCount","getTickLineAttrs","tickItem","tickItems","defaultTickLineStyle","drawTick","tickLineGroup","drawTickLines","tickCfg","labelId","subTickLineItems_1","processTicks","optimizeTicks","drawLabels","applyTickStates","page_1","optimizedTicks","getLabelAttrs","labelCfg","defaultLabelStyle","afterProcessTicks_1","newStyle","getTitleAttrs","titleCfg","titlePoint","getAxisVector","titleAttrs","titleShape","drawDescriptionIcon","descriptionShape","x5","y5","x6","y6","x7","y7","labelShape","labelStateStyle","tickLineId","tickLineShape","tickLineStateStyle","states","tickLineCfg","ellipseLabels","getDefault","ellipsisTail","ellipsisHead","ellipsisMiddle","getRotateAngle","isRotate","getAngleByMatrix","isOverlap","minGap","prevBBox","reserveOne","labelsGroup","autoHideCfg","hasHide","parityHide","firstBBox","equidistance","reserveFirst","reserveLast","reserveBoth","preLabel","equidistanceWithReverseBoth","labelRotate","setLabelsAngle","fixedAngle","customRotate","unfixedAngle","Line","isHorizontal","regionX","regionY","axisVector","verticalVector","titleSpacing","canProcessOverlap","autoProcessOverlap","hasAdjusted","util","overlapCfg","verticalFactor_1","newAlign","Circle","vecLen","CrosshairBase","textBackground","renderBackground","textPoint","textId","textBBox","LineCrosshair","CONTAINER_CLASS","CROSSHAIR_LINE","CROSSHAIR_TEXT","HtmlCrosshair","crosshairTpl","textTpl","resetText","initCrossHair","crosshairEl","textEl","alignText","GridBase","alternateColor","getLineType","drawGrid","getAlternatePath","prePoints","regionPath","getGridPath","nextPath","getPathStyle","preItem","lineId","gridPath","regionId","isEven","drawAlternateRegion","firstPoint","radius_1","sweepFlag_1","LegendBase","getDrawPoint","setDrawPoint","resetDraw","drawLegendContent","drawBackground","DEFAULT_PAGE_NAVIGATOR","inactiveFill","inactiveOpacity","RIGHT_ARROW_NAME","LEFT_ARROW_NAME","ROTATE_MAP","up","down","currentPageIndex","totalPagesCnt","pageWidth","pageHeight","onNavigationBack","updateNavigation","getCurrentNavigationMatrix","onNavigationAfter","itemSpacing","itemMarginBottom","maxItemWidth","itemName","itemValue","itemStates","itemBackground","pageNavigator","nameStyle","unchecked","markerStyle","itemElement","offsetGroup","drawItem","getItemHeight","processItems","drawItems","itemContainerGroup","wrapped","subGroup","adjustNavigation","style_1","items_1","drawMarker","markerCfg","markerAttrs","drawItemText","textName","xPosition","drawRadio","radioCfg","showRadio","radioShape","groupId","subContainer","getLimitItemWidth","curX","markerShape","itemMarkerSpacing","nameShape","valueShape","applyItemStates","subGroups","navigation","drawNavigation","navigationBBox","pages","widthLimit","maxRow","maxRowHeight_1","navigationX_1","shouldWrap","cntPerPage_1","styleCfg","leftArrow","drawArrow","leftArrowBBox","rightArrow","cursorX","updateArrowPath","itemStates_1","elName","statesStyle","ContinueLegend","track","rail","slidable","defaultLength","getCurrentValue","resetTrackClip","resetHandlers","bindSliderEvent","bindRailEvent","bindTrackEvent","drawRail","fixedElements","resetTrack","bindHandlersEvent","getValueByCanvasPoint","preValue","curDiff","dValue","drawLabel","labelFormatter","alignAttrs","getLabelAlignAttrs","getRailPath","railCfg","getTrackColor","getTrackPath","getRailShape","getClipTrackAttrs","railBBox","getRailBBox","getPointByValue","getTrackAttrs","trackCfg","trackId","trackShape","trackAttrs","draggable","getRailCanvasBBox","isVertcal","resetHandler","getHandlerPath","handlerCfg","halfWidth","oneSixthWidth","triangleX","triangleY","handlerShape","railShape","minLabel","maxLabel","fixedVertail","fixedHorizontal","fitRailLength","minLabelBBox","maxLabelBBox","lengthField","changeRailLength","changeRailPosition","railHeight","maxLabelWidth","TITLE_CLASS","LIST_CLASS","LIST_ITEM_CLASS","MARKER_CLASS","VALUE_CLASS","NAME_CLASS","CROSSHAIR_X","CROSSHAIR_Y","customContent","itemTpl","xCrosshairTpl","yCrosshairTpl","crosshairsRegion","crosshairs","renderCustomContent","resetTitle","renderItems","clearCrosshairs","setTitle","clearItemDoms","setCrossHairsVisible","xCrosshairDom","yCrosshairDom","getHtmlContentNode","hasOneKey","cacheDoms","limitBox","getPointByPosition","outSides","getOutSides","resetCrosshairs","curContainer","replaceChild","titleDom","listDom","crosshairBox","resetCrosshair","croshairDom","checkCrosshair","domName","tplName","constName","substituteObj","itemDom","BACKGROUND_STYLE","LINE_STYLE","AREA_STYLE","pointsToPath","dataToPath","getSmoothLinePath","linePathToAreaPath","areaPath","lineYPx","lineY","getAreaLineY","Trend","isArea","areaStyle","DEFAULT_HANDLER_STYLE","highLightFill","bindEvents","FOREGROUND_STYLE","HANDLER_STYLE","TEXT_STYLE","Slider","containerDOM","getContainerDOM","offsetXRange","adjustOffsetRange","updateStartEnd","updateUI","oldStart","oldEnd","newStart","newEnd","foregroundStyle","handlerStyle","validCfg","minHandler","maxHandler","trend","trendCfg","minText","maxText","handlerWidth","handlerHeight","foregroundShape","minTextShape","maxTextShape","_dodgeText","minAttrs","maxAttrs","offsetRange","minBBox","maxBBox","eventType","attachEvent","detachEvent","DEFAULT_THEME","trackColor","thumbColor","Scrollbar","onStartEvent","startPos","bindLaterEvent","thumbOffset","endPos","updateThumbOffset","onTrackClick","thumbLen","newOffset","validateRange","onThumbMouseOver","onThumbMouseOut","minThumbLen","renderTrackShape","renderThumbShape","trackLen","themeSize","thumbShape","emitOffsetChange","LineAxis","CircleAxis","LineGrid","CircleGrid","CategoryLegend","ContinuousLegend","HtmlTooltip","uniqueValues","polarToCartesian","centerX","centerY","angleInRadian","getSectorPath","startAngleInRadian","endAngleInRadian","innerStart","innerEnd","innerMiddlePoint","circlePathCommands","arcSweep","sectorPathCommands","shapeModel","getPointsBox","coordStartAngle","diffAngle","sourceShape","targetShape","sourceArray","targetArray","e_1","sourceArray_1","sourceArray_1_1","e_1_1","BBox","fromRange","fromObject","subBBox","cut","TOP_LEFT","TOP_RIGHT","RIGHT_TOP","RIGHT_BOTTOM","BOTTOM_LEFT","BOTTOM_RIGHT","LEFT_TOP","LEFT_BOTTOM","shrink","gap","exceed","isPointIn","getXDimensionLength","getDistanceToCenter","getAngleByPoint","getCoordinateClipCfg","endState","startAngle_1","endAngle_1","center_1","startState","dateRegex","inferScaleType","scaleDef","attrType","geometryType","createScaleByField","validData","getDefaultType","getDefaultCategoryScaleRange","isFullCircle","getMaxScale","getAxisRegion","getLineAxisRelativeRegion","getCircleAxisRelativeRegion","getAxisFactorByRegion","getAxisThemeCfg","axisTheme","getAxisTitleOptions","axisOptions","getCircleAxisCenterRadius","startVector","normalVector","getAxisOption","getAxisDirection","axisOption","getAxisTitleText","createContainer","generateFacets","renderViews","clearFacetViews","facetToView","beforeEachView","eachView","afterEachView","getLayer","FORE","createFacetViews","removeView","parseSpacing","viewBBox","getFieldValues","getRegion","cols","xIndex","yIndex","xSpacing","ySpacing","xRatio","yRatio","getDefaultTitleCfg","processAxis","getOptions","coordinateOption","getXYFields","xOption","yOption","getXAxisOption","getYAxisOption","getFacetDataFilter","Facets","registerFacet","Action","addAction","applyCfg","removeAction","CallbackAction","execute","ActionCache","getActionClass","actionName","actionOption","registerAction","ActionClass","createCallbackAction","_convertArr","_convertArcPath","catmullRom2bezier","isInCircle","_points2path","getSplinePath","constaint","splinePath","convertPolarPath","transposed","subPath","curPoint","angleRange","middleConvertPoint","_convertPolarPath","_filterFullCirleLine","getMaskBBox","getMaskBBoxByShape","isValidMaskBBox","maskShape","maskBBox","getMultiMaskBBoxList","maskShapes","bBox","getMaskPathByMaskShape","getCurrentElement","getDelegationObject","isElementChange","gEvent","isMask","isMultipleMask","getMaskedElements","maskPathList","getMultiMaskPathList","maskPath","getElementsByPath","maskBBoxList","getIntersectElements","getMultiMaskedElements","getMaskPath","getSiblingMaskElements","getSiblingMaskElementsByBBox","getSiblingMultiMaskedElements","getSiblingPoint","getElements","subView","getElementsByState","stateName","getElementsBy","getElementValue","getModel","shapeBBox","pathToPoints","shapePoints","getComponents","co","isInBox","getSilbings","normalPoint","getCoordinate","point2Normalize","isInRecords","xFiled","getScaleByField","getAction","getCurrentPoint","getCurrentShape","isInPlot","isPointInPlot","isInComponent","Interaction","parseAction","actionStr","createAction","executeAction","actionObject","STEP_NAMES","GrammarInteraction","callbackCaches","emitCaches","initContext","stepArr","stepName","getActionCallback","bindEvent","offEvent","subSteps","actionArr","argArr_1","isAllowStep","currentStepName","isAllowExecute","isEnable","enterStep","afterExecute","actionCallback","nameArr","Interactions","registerInteraction","interaction","createInteraction","interaciton","getInteraction","createThemeByStyleSheet","styleSheet","shapeStyles","pointFillColor","pointSize","pointBorderColor","pointBorder","pointFillOpacity","pointActiveBorderColor","pointActiveBorder","pointSelectedBorderColor","pointSelectedBorder","pointInactiveFillOpacity","pointInactiveBorderOpacity","hollowPoint","hollowPointFillColor","hollowPointBorder","hollowPointBorderColor","hollowPointBorderOpacity","hollowPointSize","hollowPointActiveBorderColor","hollowPointActiveBorderOpacity","hollowPointSelectedBorder","hollowPointSelectedBorderColor","hollowPointSelectedBorderOpacity","hollowPointInactiveBorderOpacity","areaFillColor","areaFillOpacity","areaActiveFillOpacity","areaSelectedFillOpacity","areaInactiveFillOpacity","hollowArea","hollowAreaBorderColor","hollowAreaBorder","hollowAreaBorderOpacity","hollowAreaActiveBorder","hollowAreaSelectedBorder","hollowAreaInactiveBorderOpacity","intervalFillColor","intervalFillOpacity","intervalActiveBorderColor","intervalActiveBorder","intervalSelectedBorderColor","intervalSelectedBorder","intervalInactiveFillOpacity","intervalInactiveBorderOpacity","hollowInterval","hollowIntervalFillColor","hollowIntervalBorderColor","hollowIntervalBorder","hollowIntervalBorderOpacity","hollowIntervalActiveBorderColor","hollowIntervalActiveBorder","hollowIntervalActiveBorderOpacity","hollowIntervalSelectedBorderColor","hollowIntervalSelectedBorder","hollowIntervalSelectedBorderOpacity","hollowIntervalInactiveBorderColor","hollowIntervalInactiveBorder","hollowIntervalInactiveBorderOpacity","lineBorderColor","lineBorder","lineBorderOpacity","lineAppendWidth","lineActiveBorder","lineSelectedBorder","lineInactiveBorderOpacity","axisStyles","axisTitleSpacing","axisTitleTextFillColor","axisTitleTextFontSize","axisTitleTextLineHeight","axisDescriptionIconFillColor","axisLabelOffset","axisLabelFillColor","axisLabelFontSize","axisLabelLineHeight","axisLineBorder","axisLineBorderColor","axisGridBorderColor","axisGridBorder","lineDash","axisGridLineDash","axisTickLineBorder","axisTickLineBorderColor","axisTickLineLength","createAxisStyles","legendStyles","legendMarkerSpacing","legendCircleMarkerSize","legendMarkerColor","legendItemNameFillColor","legendItemNameFontSize","legendItemNameLineHeight","legendItemNameFontWeight","flipPage","legendPageNavigatorMarkerSize","legendPageNavigatorMarkerInactiveFillColor","legendPageNavigatorMarkerInactiveFillOpacity","legendPageNavigatorMarkerFillColor","legendPageNavigatorMarkerFillOpacity","legendPageNavigatorTextFillColor","legendPageNavigatorTextFontSize","legendItemSpacing","legendItemMarginBottom","legendPadding","createLegendStyles","brandColor","subColor","semanticRed","paletteSemanticRed","semanticGreen","paletteSemanticGreen","roseWidthRatio","multiplePieWidthRatio","colors10","paletteQualitative10","colors20","paletteQualitative20","sequenceColors","paletteSequence","shapes","middleAngle","funnel","pyramid","dash","hv","vh","hvh","vhv","bowtie","diamond","hexagon","triangle","plus","hyphen","candle","violin","hollow","common","legendVerticalPadding","legendHorizontalPadding","sliderRailHeight","sliderRailWidth","sliderRailFillColor","sliderRailBorderColor","sliderRailBorder","sliderLabelTextFillColor","sliderLabelTextFontSize","sliderLabelTextLineHeight","sliderHandlerWidth","sliderHandlerFillColor","sliderHandlerBorderColor","showContent","follow","showCrosshairs","showMarkers","enterable","tooltipCrosshairsBorderColor","tooltipCrosshairsBorder","tooltipContainerFillColor","tooltipContainerFillOpacity","tooltipContainerShadow","tooltipContainerBorderRadius","tooltipTextFillColor","tooltipTextFontSize","tooltipTextLineHeight","annotation","annotationArcBorderColor","annotationArcBorder","annotationLineBorderColor","annotationLineDash","annotationLineBorder","annotationTextFillColor","annotationTextBorderColor","annotationTextBorder","annotationTextFontSize","annotationRegionBorder","annotationRegionBorderColor","annotationRegionFillColor","annotationRegionFillOpacity","dataMarker","annotationDataMarkerLineLength","dataRegion","cSliderBackgroundFillColor","cSliderBackgroundFillOpacity","cSliderForegroundFillColor","cSliderForegroundFillOpacity","cSliderHandlerWidth","cSliderHandlerHeight","cSliderHandlerFillColor","cSliderHandlerFillOpacity","cSliderHandlerBorderColor","cSliderHandlerBorder","cSliderHandlerBorderRadius","cSliderHandlerHighlightFillColor","cSliderTextFillColor","cSliderTextFillOpacity","cSliderTextFontSize","cSliderTextLineHeight","cSliderTextFontWeight","cSliderTextBorderColor","cSliderTextBorder","scrollbar","scrollbarTrackFillColor","scrollbarThumbFillColor","scrollbarThumbHighlightFillColor","labelFillColor","labelBorderColor","labelBorder","fillColorDark","labelFillColorDark","fillColorLight","labelFillColorLight","innerLabels","innerLabelFillColor","innerLabelFontSize","innerLabelBorderColor","innerLabelBorder","overflowLabels","overflowLabelFillColor","overflowLabelFontSize","overflowLabelBorderColor","overflowLabelBorder","pieLabels","labelHeight","labelLine","labelLineBorder","BLACK_COLORS","WHITE_COLORS","QUALITATIVE_10","QUALITATIVE_20","SINGLE_SEQUENCE","createLightStyleSheet","paletteSemanticYellow","axisLineDash","axisTitleTextFontWeight","axisSubTickLineBorderColor","axisSubTickLineLength","axisSubTickLineBorder","axisLabelFontWeight","legendTitleTextFillColor","legendTitleTextFontSize","legendTitleTextLineHeight","legendTitleTextFontWeight","legendMarkerSize","legendSquareMarkerSize","legendLineMarkerSize","sliderLabelTextFontWeight","sliderHandlerHeight","sliderHandlerBorder","annotationTextLineHeight","annotationTextFontWeight","tooltipCrosshairsLineDash","tooltipTextFontWeight","innerLabelLineHeight","innerLabelFontWeight","overflowLabelLineHeight","overflowLabelFontWeight","labelLineBorderColor","cSliderRailHieght","pointBorderOpacity","hollowPointActiveBorder","areaActiveFillColor","areaSelectedFillColor","hollowAreaActiveBorderColor","hollowAreaSelectedBorderColor","intervalActiveBorderOpacity","intervalSelectedBorderOpacity","createTheme","themeCfg","styleSheetCfg","themeObject","Themes","snapEqual","filterYValue","getYScale","originData","getXDistance","scaleValues","numericValue","getTooltipValueScale","getAttributesForLegend","attributes_1","attributes_1_1","tmpScale","scaleDefs","getXScale","findDataByPoint","getXValueByPoint","firstXValue","firstYValue","lastXValue","isYArray","firstIdx","lastIdx","middleIdx","getTooltipItems","showNil","e_2","tooltipTitle","titleField","titleScale","getTooltipTitle","tooltipOption","addItem","mappingData","callbackParams","itemCfg","fields_1","fields_1_1","e_2_1","valueScale","eachValue","getTooltipValue","nameScale","groupScales","getGroupScales","getTooltipName","getTooltipItemsByFindData","tooltipCfg","e_3","dataArray_1","dataArray_1_1","elementsMap","e_3_1","getTooltipItemsByHitShape","findItemsFromView","e_4","geometries_1","geometries_1_1","tooltipItems","e_4_1","paddingArray","LOAD_COMPONENT_CONTROLLERS","registerComponentController","plugin","CoordinateController","wrapperOption","hasAction","isTheta","execActions","getOption","includeActions","fromData","defaultLayout","getController","ScalePool","syncScales","createScale","finalScaleDef","cacheScaleMeta","getScaleMeta","cacheScale","cacheScaleDef","scaleKeys","syncKey","newScale","syncScale","getSyncKey","removeFromSyncScales","scaleMeta","deleteScale","PaddingCal","getPadding","calculatePadding","isAutoPadding","paddingCal","paddingComponents","otherComponents","AXIS","LEGEND","SLIDER","SCROLLBAR","GRID","bboxObject","componentPadding","componentBBox","defaultSyncViewPadding","chart","PC","syncPadding","autoPadding","controllers","interactions","limitInPlot","usedControllers","scalePool","layoutFunc","isPreMouseInPlot","isDataChanged","isCoordinateChanged","createdScaleKeys","onCanvasEvent","createViewEvent","doPlotEvent","onDelegateEvents","backgroundGroup","middleGroup","foregroundGroup","appendPadding","syncViewPadding","setLayout","calculateViewBBox","initComponentController","initOptions","isUpdate","payload","BEFORE_RENDER","paint","AFTER_RENDER","BEFORE_CLEAR","filteredData","coordinateInstance","labelsContainer","getRootView","AFTER_CLEAR","BEFORE_DESTROY","legendOption","scaleOption","coordinateCfg","coordinateController","facetInstance","getFacet","updateOptions","existInteraction","removeInteraction","changeData","BEFORE_CHANGE_DATA","AFTER_CHANGE_DATA","sharedOptions","removedView","getYScales","yScales","getScalesByDim","dimType","defaultKey","getScaleKey","getOriginalData","getGeometries","BG","MID","isPointInCoordinate","getLegendAttributes","getGroupAttributes","getXY","xScales","showTooltip","hideTooltip","lockTooltip","unlockTooltip","isTooltipLocked","getSnapRecords","snapRecords","filterData","filterFieldData","adjustCoordinate","curStart","curEnd","renderDataRecursive","BEFORE_PAINT","renderPaddingRecursive","renderLayoutRecursive","renderBackgroundStyleShape","renderPaintRecursive","AFTER_PAINT","backgroundStyleRectShape","initComponents","tooltipController","syncViewPaddingFn","doLayout","paintGeometries","renderComponents","currentScaleDef","mergedScaleDef","doFilterData","createCoordinate","initGeometries","renderFacet","controllerName","currentInPlot","newEvent","TYPE","MOUSE_LEAVE","LEAVE","MOUSE_ENTER","createOrUpdateScales","getGeometryScales","adjustScales","getScaleFields","groupedFields","getGroupedFields","getGroupFields","adjustCategoryScaleRange","xyScales","scaleOptions","doAnimation","canvasRegion","annotations","geometryOption","createGeometry","interactionOption","viewOption","annotationComponent","annotationOption","eventCallback","geometry_1","registerGeometry","Chart","localRefresh","supportCSSTransform","defaultInteractions","wrapperElement","G","getEngine","forceFit","updateCanvasStyle","bindAutoFit","initDefaultInteractions","ariaOption","ATTR","BEFORE_CHANGE_SIZE","AFTER_CHANGE_SIZE","unbindAutoFit","Controller","includeOption","isLocked","dataPoint","getTooltipCfg","lastItems","lastTitle","tooltipMarkersGroup","renderTooltip","getItemsAfterProcess","renderTooltipMarkers","isCrosshairsFollowCursor","renderCrosshairs","xCrosshair","yCrosshair","tooltipCrosshairsGroup","items_1_1","itemArr_1","itemArr_1_1","snapItem","items_2","items_2_1","aItem","yDistance","uniqItems","isCursorEntered","processOption","processCustomContent","currentCustomContent","getTooltipMarkersGroup","rootView","items_3","items_3_1","attrs_1","markerDefaultCfg","crosshairsType","renderXCrosshairs","renderYCrosshairs","getViewWithGeometry","getTooltipCrosshairsGroup","getCrosshairsText","textCfg","firstItem","getGuideGroup","e_5","childView","e_5_1","originalItems","customItems","ANIMATIONS_MAP","getAnimation","registerAnimation","DEFAULT_ANIMATE_CFG","GEOMETRY_ANIMATE_CFG","GEOMETRY_GROUP_APPEAR_ANIMATION","getDefaultAnimateCfg","animateType","doAnimate","parsedAnimateCfg","parseAnimateConfig","animateFunction","BACKGROUND_SHAPE","shapeFactory","offscreenGroup","elementIndex","getShapeType","drawShape","setShapeInfo","getOffscreenGroup","newShape","syncShapeStyle","getStates","getAnimateCfg","stateStatus","sortZIndex","zIndexReversed","offscreenShape","clearStates","labelBBox","stateOption","defaultShapeType","stateTheme","getStateStyle","shapeKey","stateCfg","shapeStyle","cfg_1","AFTER_DRAW_ANIMATE","BEFORE_DRAW_ANIMATE","GroupCtor","newClip","newChildren","name_2","GEOMETRY_LABELS_MAP","GEOMETRY_LABELS_LAYOUT_MAP","registerGeometryLabel","registerGeometryLabelLayout","layoutFn","ShapeFactoryBase","getShapePoints","shapePoint","getPoints","getDefaultPoints","getDefaultStyle","geometryTheme","getMarker","ShapeBase","parsePath","parsedPath","convertNormalPath","parsePoint","parsePoints","ShapeFactoryMap","registerShapeFactory","factoryName","geomObj","registerShape","shapeObj","getShapeFactory","isModelChange","currentModel","preModel","parseFields","keyItem","keyIncluded","Geometry","attributeOption","lastElementsMap","generatePoints","beforeMappingData","adjusts","idFields","hasSorted","sortable","useDeferredLabel","userTheme","positionCfg","createAttrOption","adjustCfg","adjustOption","styleFunc","styleOption","secondParam","thirdParam","labelOption","customInfo","customOption","setCfg","initAttributes","processData","adjustScale","lastAttributeOption","beforeMapping","canDoGroupAnimation","yMinPoint","getYMinValue","minYPoint","doGroupAppearAnimate","deferred","renderLabels","requestIdleCallback","geometryLabel","getDefaultValue","attrName","getAttributeValues","adjustType","getShapeMarker","shapeName","xVal","yVal","length_2","dodgeAdjust","attributeType","eachOpt","length_3","uniqMap","groupFields","length_4","attributeName","getXField","getYField","getShapes","mappingArray","xScale_1","xField_1","updateStackRange","createShapePointsCfg","normalizeValues","mappingDatum","shapeCfg","getDrawCfg","getStyleCfg","nextPoints","mappingDataArray","keyDatum","finalKey","added_1","added_1_1","updated_1","updated_1_1","currentShapeCfg","preShapeCfg","removed_1","removed_1_1","getLabelType","coordinateType","labelType","attrCfg","AttributeCtor","state_1","categoryScales","groupedArray","beforeAdjust","subData","subLen","categoryScales_1","categoryScales_1_1","xScale_2","sizeAttr","adjustCtor","adjustInstance","appendConditions","values_1","values_1_1","eachGroup","mergeArray","tmpMin","tmpMax","length_5","currentData","generateShapePoints","nextData","shapeAttr","newRecord","mappingRecord","rstX","rstY","xLen","yLen","GeometryLabelsCtor","labelsMap","elementLabels","BEFORE_RENDER_LABEL","getGeometryLabel","labelsRenderer","labelGroupId","labelChildren","AFTER_RENDER_LABEL","rotateRadian","getRotateMatrix","findLabelTextShape","getLabelBackgroundInfo","labelItem","boxPadding","checkShapeOverlap","dones","getOverlapArea","updateLabel","updateAnimateCfg","fromChild","toChild","Labels","lastShapesMap","createOffscreenGroup","renderLabelLine","renderLabelBackground","adjustLabel","origin_1","currentAnimateCfg","deleteShape","shapeAppendCfg","isShape","layouts","getGeometryLabelLayout","labelShapes","geometryShapes","labelItems","labelLineCfg","labelContentShape","backgroundShape","GeometryLabel","getLabelItems","mapppingArray","labelCfgs","getLabelCfgs","labelContent","subIndex","getLabelAlign","getLabelsRenderer","getGeometryShapes","getDefaultLabelCfg","getThemedLabelCfg","defaultLabelCfg","setLabelPosition","labelPointCfg","getLabelOffset","getOffsetVector","getLabelOffsetPoint","offsetPoint","getDimValue","isAvg","isFunnel","getPolygonCentroid","getLabelId","labelScales","callbackCfg","originText","getLabelText","originValues","labelTexts","subVal","actualOffset","getMappingValue","MarkerSymbols","diffX","diffY","STROKES_SYMBOLS","setMarkerSymbol","getLegendLayout","getLegendItems","themeMarker","userMarker","field_1","colorAttr_1","shapeAttr_1","defaultColor_1","isInPolar_1","scaleValue","isInPolar","adpatorMarkerStyle","handleUserMarkerStyle","getLegendThemeCfg","legendTheme","isValueEmpty","isYNil","getPathPoints","connectNulls","showSinglePoint","filtered","getViolinPath","getSmoothViolinPath","leftPoints","rightPoints","leftPath","rightPath","isStroke","isFill","sizeName","getBackgroundRectStyle","eachY","LineSymbols","getLineMarker","getSinglePath","topPoints","bottomPoints","topPath","bottomPath","getRangePath","shapeAttrs","eachLinePoints","Util","getPath","antvDark","legendSpacing","overflowLabelFillColorDark","overflowLabelFillColorLight","createDarkStyleSheet","inBox","regexPR","addStop","parseStyle","gradientStr","tanTheta","tanTheta2","parseLineGradient","parseRadialGradient","patternStr","parsePattern","CanvasPattern","_addDefaultArrow","isStart","arrowShape","isArrowShape","_addCustomizedArrow","startArrow","endArrow","arrowAttrs","arrowFill","arrowStroke","arrowLineWidth","restAttrs","getShortenOffset","addStartArrow","addEndArrow","SHAPE_ATTRS_MAP","applyAttrsToContext","drawChildren","skipDraw","checkRefresh","setChildrenRefresh","checkChildrenRefresh","hasChanged","checkElementRefresh","clearChanged","cacheCanvasBBox","isInView","arcParamsCache","tangent","getStartTangent","getEndTangent","refreshElement","_cacheCanvasBBox","getRefreshRegion","region1","region2","cacheBox","validCache","validBBox","_applyClip","createPath","_afterDraw","viewRange","getViewRange","allowDraw","getHitLineWidth","getBBoxMethod","bboxMethod","halfLineWidth","getCanvasViewBox","strokeAndFill","afterDrawPath","isInStrokeOrPath","absDistance","ellipseDistance","squareX","squareY","Ellipse","halfLineWith","ImageShape","_setImage","_afterLoading","image_1","swidth","sheight","inLine","setArrow","startArrowDistance","endArrowDistance","getTotalLength","Marker","_resetParamsCache","_getR","_getPath","hasArc","extractPolygons","polylines","PathUtil","isInPolygons","_setPathArr","extractResutl","_calculateCurve","_setTcache","subt","tCache","nextSeg","segmentT","segmentL","segmentN","tempLength","inPolyline","isClose","PolyLine","_resetCache","Rect","inRect","r4","parseRadius","_assembleFont","_setText","_getSpaceingY","_drawTextArr","subY","_drawText","getRefXY","preTest","curShape","getPixelRatio","_clearFrame","_getRefreshRegion","viewRegion","minXArr","minYArr","maxXArr","maxYArr","getMergedRegion","mergeView","drawFrame","_startDraw","_drawAll","_drawRegion","AbstractCanvas","SHAPE_TO_TAGS","polyline","SVG_ATTR_MAP","createSVGElement","sortDom","sorter","hasAttribute","addClip","parentChildren","clipPathEl","defsEl","targetIndex","currentIndex","targetNext","children_1","canFill","canStroke","shadow","_setColor","addGradient","addPattern","addShadow","setShadow","elementFromPoint","isEqualNode","Dom","ImageData","addArrow","getDefaultArrow","triangleDown","getAll","_assembleMarker","symbolsFactory","_formatPath","getPointAtLength","Polyline","completed","pathRelatedAttrs","_assembleRect","BASELINE_MAP","alphabetic","hanging","BASELINE_MAP_FOR_FIREFOX","ANCHOR_MAP","_setFont","textLen_1","arr_1","ATTR_MAP","shadowOpacity","SHADOW_DIMENSION","Shadow","_parseShadow","_setDefaultPath","_setMarker","Clip","shapeEl","Pattern","Defs","defaultArrow","autoDraw","srcElement","keyData","getShapeInfo","getPointsAndData","registeredShape","topLinePoints_1","bottomLinePoints_1","pointsData","parsedPoints","pathPoints","eachPoints","getConstraint","yItem","Area","startOnZero","Edge","paletteCache","prepareRange","prepareSize","blur_1","prepareGreyScaleBlurredCircle","drawWithRange","clearShadowCanvasCtx","colorField","getDefaultSize","grayScaleBlurredCanvas","getGrayScaleBlurredCanvas","valueField","getShadowCanvasCtx","data_1","data_1_1","drawGrayScaleBlurredCircle","colored","colorize","imageShape","getImageShape","shadowCanvas","colorAttr","getRectPoints","yMin","xMin","getRectPath","isClosed","minLength","getBackgroundRectPath","isReflectYTransposed_1","bump","opposite","getFunnelPath","isPyramid","backgroundCfg","backgroundPath","getRectWithCornerRadius","coor","getIntervalRectPath","xValues","sourceArr","findMinDistance","normalizedSize","wr","dodgeCount","getDodgeCount","normalizedMaxColumnWidth","normalizedMinColumnWidth","Interval","SHAPES","drawPoints","points_1","points_1_1","subX","sizeArr","normalizeSize","isMin","isMax","Violin","_sizeField","sizeField","getCPath","getQPath","getArcShapePath","arc1","arc2","getArcShapeWeightPath","getSmoothPath","CORNER_PERCENT","getVHVPath","getLinePoints","getTickPoints","getTickPath","interpolateCallback","nextX","nextY","middleX","middleY","getInterpolateShapeAttrs","interpolatePoints","interpolatePoint","getInterpolatePoints","getInterpolatePath","parseValue","min1","max1","getBoxPoints","pointsArray","halfSize","getCandleYValues","targetLength","padValue","padEnd","sourceLength","getCandlePoints","yValues","getRectAttrs","getBoxPath","getCandlePath","IntervalLabel","getLabelValueDir","nextP0","nextP1","HALF_PI","PolarLabel","labelEmit","arcPoint","isToMiddle","getMiddlePoint","getArcPoint","getPointAngle","isLabelEmit","labelPositionCfg","getLabelRotate","PieLabel","isLabelLimit","plotRange","invisible","overlapping","endY","totalHeight","previousBox","posInCompositeBox","INFLECTION_OFFSET","LABEL_TEXT_LINE_OFFSET","MAX_TIMES","Greedy","xGap","yGap","hasGap","fillGap","adjustLabelPosition","getAxes","getProjection","scalars","isProjectionOverlap","projection1","projection2","isValidBox","isIntersectRect","rect1Points","rect2Points","MyWorker","worker","Worker","onmessageerror","terminate","generateUtils","eventData","BlobBuilder","getBlob","createWorker","preset","shouldInShape","shouldInShapeSingle","hasSome","rightText","getCanvasContext","measureTextWidth","doScaleAnimate","endMatrix","scaledMatrix","transformShape","arcPath","getArcStartPoint","getArcInfo","arcPaths","firstArcPathCommand","lastArcPathCommand","firstIndex","firstStartPoint","lastStartPoint","firstStartAngle","firstEndAngle","lastStartAngle","lastEndAngle","doShapeZoom","getFactTitleConfig","getAnglePoint","renderTitle","avgAngle","facetR","columnField","columnIndex","columnValuesLength","rowField","rowIndex","rowValuesLength","colValues","getPageCount","getRowCol","col","Matrix","columnTitle","rowTitle","facetIndex","columnValues","rowValues","afterChartRender","drawLines","rootFacet","getRows","getChildFacets","setRegion","forceColIndex","xWidth","yWidth","leafs","isLeaf","levelFacets","getFacetsByLevel","levelFacets_1","levelFacets_1_1","originColIndex","getRegionIndex","addFacetLines","subFacet","subRegion","middle1","middle2","getMedian","getNormalizedValue","getMean","ANNOTATIONS_AFTER_RENDER","Annotation","foregroundContainer","backgroundContainer","onAfterRender","updateOrCreate","getCacheKey","syncCache","updateCache","clearComponents","doWhat","createAnnotation","getAnnotationTheme","getAnnotationCfg","isTop","NONE","ANNOTATION","regionFilter","parsePosition","xPos","yPos","parsePercentPosition","getRegionPoints","viewData","startXValue","endXValue","getCoordinateBBox","sp","ep","start_5","end_5","apply_1","shapes_1","addShapes_1","render_1","restOptions","html_1","getComponentContainer","newCache","getGridThemeCfg","getLineGridItems","preTick","currentTick","middleValue","getCircleGridItems","showGrid","userGrid","themeGrid","OMIT_CFG","AXIS_DEFAULT_ANIMATE_CFG","Axis","gridContainer","gridForeContainer","axisContainer","axisForeContainer","updatedCache","updateXAxes","updateYAxes","xAxisOption","axisId","getId","gridId","getLineAxisCfg","createLineAxis","getLineGridCfg","createLineGrid","getCircleAxisCfg","createCircleAxis","getCircleGridCfg","createCircleGrid","yAxisOption","titleText","axisThemeCfg","optionWithTitle","isAxisVertical","canvasWidth","canvasHeight","gridThemeCfg","gridCfg","verticalScale","directionToPosition","parentBBox","getLegendOption","Legend","layoutBBox","maxWidthRatio","maxHeightRatio","getCategoryLegendSizeCfg","existCo","getComponentById","customCfg","getCategoryCfg","createCustomLegend","loopLegends","getContinuousCfg","createFieldLegend","doEach","looped","createContinuousLegend","createCategoryLegend","containMin","containMax","attrValue","attrLegendCfg","mergeLegendCfg","themePageNavigator","userPageNavigator","itemMarker","getCustomLegendItems","baseCfg","categoryCfg","vw","onChangeFn","resetMeasure","onValueChange","changeViewData","getSliderCfg","updateSlider","createSlider","measureSlider","getMinMaxText","getThemeOptions","dataSize","xTickCount","maxIndex","xScaleValues","getValidScrollbarCfg","originalAnimate","getScrollRange","updateScrollbar","createScrollbar","measureScrollbar","getScrollbarComponentCfg","xScaleCfg","yScalesCfg","getScrollbarTheme","thumbHighlightColor","restStyles","getScrollbarData","getStep","getCnt","startIdx","endIdx","realConfig","categorySize","DEFAULT_REGION_PATH_STYLE","getItemsOfView","findItemsFromViewRecurisive","ActiveRegion","xValue_1","elements_1","coordinate_1","firstBBox_1","lastBBox_1","groupBBox_1","appendRatio","appendWidth","firstElement","lastElement","innterRadius","TooltipAction","lastTimeStamp","preLoc","curLoc","SiblingTooltip","siblingPoint","EllipsisText","tipContent","tooltipStyles","StateBase","setElementState","setStateEnable","clearViewState","getItem","ElementState","ignoreListItemStates","isItemIgnore","setStateByComponent","setElementsStateByItem","setStateByElement","isMathItem","event_1","ElementActive","LinkByColor","getColorScale","getLinkPath","nextElement","nextBBox","addLinkShape","linkByElement","getElementsByField","group_1","linkGroup","count_1","nextEl","removeLink","unlink","ElementRangeState","isStarted","effectSiblings","effectByRecord","setSiblingsState","allElements","setSiblingsStateByRecord","setElementsState","effectElements","ElementRangeActive","ElementSingleState","ElementSingleActive","STATUS_UNACTIVE","STATUS_ACTIVE","clearHighlight","setHighlightBy","INACTIVE","ACTIVE","ElementHighlight","setElementHighlight","activeElements","allCancel_1","highlight","HighlightColor","highlightElements","HighlightX","ElementRangeHighlight","BEFORE_HIGHLIGHT","AFTER_HIGHLIGHT","ElementSingleHighlight","ElementRangeSelected","ElementMultipleSelected","ElementSingleSelected","ListState","ignoreItemStates","getTriggerListInfo","getAllowComponents","allowSetStateByElement","clearAllComponentsState","componentNames","allowSetStateByItem","ignoreStates","filterStates","setItemsState","triggerInfo","ListActive","ListHighlight","activeItems","clearList","ListSelected","ListUnchecked","STATUS_UNCHECKED","STATUS_CHECKED","ListChecked","setCheckedBy","list_1","allChecked","ListFocus","clickedItem","checkedItems","uncheckedItems","checkedItem","items_4","items_4_1","STATUS_SHOW","TIP_ID","ListRadio","showTip","hideTip","containerId","MaskBase","starting","moving","preMovePoint","createMask","maskAttrs","getMaskAttrs","updateMask","moveStart","moveEnd","CircleMask","RectMask","clampPoint","inPlot","normalStart","normalEnd","DimRect","PathMask","addPoint","getSpline","SmoothPathMask","MultipleMaskBase","recordPoints","maskType","multiPoints","recordPointStart","updateShapesCapture","getCurMaskShapeIndex","recordPointContinue","clearAll","recordPointClear","getRecordPoints","lastPoints","isCapture","RectMultiMask","DimRectMultiMask","CircleMultiMask","PathMultiMask","SmoothPathMultiMask","CursorAction","crosshair","help","eResize","wResize","nResize","sResize","neResize","nwResize","seResize","swResize","nsResize","ewResize","DataFilter","filterView","unCheckedItems","scale_1","names_1","getFilter","RangeFilter","hasDim","BEFORE_FILTER","normalCurrent","FILTER","AFTER_FILTER","BEFORE_RESET","RESET","AFTER_RESET","SiblingFilter","ElementFilter","maskElements_1","byRecord","filterByRecord","filterByBBox","maskElements","ButtonAction","buttonGroup","buttonCfg","getButtonCfg","drawButton","buttonShape","Drag","dragStart","drag","Move","isMoving","startMatrix","ScaleTranslate","cfgFields","cacheScaleDefs","resetDim","startCache","noramlCurrent","translateDim","translateLinear","zoomRatio","zoomDim","dRatio","toMin","toMax","MousewheelScroll","scroll","wheelDelta","scrollbarController","nextStart","isWheelDown","correction","nextRatio","AxisDescription","descriptionTooltipStyle","isPointInView","totalHeight_1","lineHeight_1","plotRange_1","halves_1","maxLabelsCountForOneSide","isRight","labelShapes_1","labelShapes_1_1","rPow2","dyPow2","antiCollision","innerPoint","itemX","itemY","maxTimes","nt","accessedCache","spiralFill","regionMinX","regionMinY","regionMaxX","regionMaxY","finalX","finalY","translateX_1","textShapes","textBox","DOT_WIDTH","getEllipsisText","labels_1","labels_1_1","RIGHT_HALF_KEY","separateLabels","totalR","labelsContainerRange","dxPow2","dx_offset","smoothConnector","breakPoint","breakPoint3","xSign","slope1","drawLabelline","fillWhite","isContrastColorWhite","moveInShape","filteredLabels","filterLabel","todo","groupedLabels","addCurrentGroup","curItems","sortedCollections","sortedLabels","sortLabels","downFail","inRight","inflectionPoint","totalOffset","halfHeight","originalPos","pathCommands","curStartAngle","curEndAngle","preStartAngle","preEndAngle","diffStartAngle","diffEndAngle","onFrameStartAngle","onFrameEndAngle","showEnable","processing","rollback","LEVEL","AXIS_META_CONFIG_KEYS","BRAND","getMessage","argIndex","adjustYMetaByZero","numberData","gtZero","ltZero","transformDataToNodeLinkData","sourceField","targetField","weightField","rawFields","nodesMap","nodesIndex","rawData","processIllegalData","WARN","isPlainObject","isObjectLike","deepAssign","getContainerSize","findGeometry","getAllElements","getAllElementsRecursively","transformLabel","isRealNumber","normalPadding","getAdjustAppendPadding","currentAppendPadding","PADDING","resolveAllPadding","normalPaddings","finalPadding","points2Path","kebabCase","adapteStyle","styleObject","shapeStyleKeys","setStatisticContainerStyle","renderStatistic","plotType","titleOpt","contentOpt","containerW","liquidShape","customHtml","renderGaugeStatistic","polarCoord","polarCenter","polarMaxY","findViewById","getViews","getSiblingViews","addViewAnimation","animationCfg","initCanvas","getUnitPatternSize","isStagger","getSymbolsPosition","transformMatrix","dpr","defaultDotPatternCfg","drawDot","defaultLinePatternCfg","createLinePattern","lineCfg","Path2D","defaultSquarePatternCfg","drawSquare","strokeRect","getCanvasPattern","dotCfg","dots_1","createDotPattern","squareCfg","squares","squares_1","createSquarePattern","patternOption","colorAttribute","seriesValue","seriesField","annotationOptions","annotationController","yAxis","transformations","GLOBAL","LocaleMap","registerLocale","localeObj","getTooltipMapping","defaultFields","getMappingField","shapeField","styleField","mappingFields","tileMappingField","getMappingFunction","tooltipFields","columnBackground","widthRatio","groupField","otherAdaptor","stepType","SOURCE_ATTRIBUTE_NAME","PLOT_CONTAINER_OPTIONS","Plot","getDefaultOptions","createG2","xAxis","chartSize","execAdaptor","bindSizeSensor","updateOption","stateObjects","addAnnotations","incoming","removeAnnotations","_loop_2","unbindSizeSensor","adaptor","getSchemaAdaptor","triggerResize","sumMap","groupValue","percentage","getDataWhetherPercentage","asField","isPercent","pointMapping","areaMapping","pointState","areaState","areaParams","lineGeometry","areaShape","lineMapping","chartData","tooltipOptions","lineParams","pointParams","areaGeometry","BUTTON_ACTION_CONFIG","drawText","getInteractionCfg","interactionType","brushType","isStartEnable","BRUSH_TYPES","brushInteraction","buttonConfig","INTERACTION_MAP","getStartStages","conversionTagFormatter","getConversionTagOptionsWithDefaults","headSize","elemPrev","elemNext","pointPrev","pointNext","renderArrowTag","cWidth","cEnd","textAdjusted","renderTextTag","defaultOptions","columnStyle","percentData","getDeepPercent","stackedItem","percentYMeta","isRange","columnTooltip","customItems_1","tooltipFormatter_1","isBar","conversionTag","connectedArea","verticalAxis","horizontalAxis","coordinateOptions","barStyle","barWidthRatio","minBarWidth","maxBarWidth","barBackground","Bar","FUNNEL_PERCENT","FUNNEL_MAPPING_VALUE","FUNNEL_CONVERSATION","FUNNEL_TOTAL_PERCENT","PLOYGON_X","PLOYGON_Y","CONVERSION_TAG_NAME","transformData","formatData","maxYFieldValue","conversionTagComponent","getLineCoordinate","formatter_1","lineOption","funnelStyle","datumIndex","initLineOption","basicFunnel","compareField","showFacetTitle","formatterData","defaultFacetLabel","compareConversionTag","viewIndex","preItemX","preItemY","ConversionTagAction","rendering","conversionTag_1","FUNNEL_CONVERSION_TAG","FUNNEL_LEGEND_FILTER","interactionStart","defaultOption","dynamicHeight","facetFunnel","compareFunnel","dynamicHeightFunnel","Funnel","CONVERSATION_FIELD","PERCENT_FIELD","TOTAL_PERCENT_FIELD","RANGE_VALUE","RANGE_TYPE","PERCENT","INDICATEOR_VIEW_ID","RANGE_VIEW_ID","pin","getIndicatorData","getRangeData","clampTicks","processRangeData","gaugeStyle","meter","rangeWidth","indicatorData","rangeData","rangeColor","contentOption","transformContent","STEP","stepRatio","STEP_RATIO","COORD_START_ANGLE","COORD_END_ANGLE","GAP","INTERVAL","START_ANGLE","END_ANGLE","Gauge","indicatorView","rangeView","getBinKey","binWidth","binNumber","binHistogram","binField","originData_copy","_binWidth","_defaultBinNumber","sturges","groupKey","groupKeyBinKey","plotData","HISTOGRAM_X_FIELD","HISTOGRAM_Y_FIELD","Histogram","MarkerActiveAction","getView","pieStyle","ORIGIN_MATRIX","ulMatrix","PieLegendAction","getActiveElements","item_1","getActiveElementLabels","transfrom","StatisticAction","getAnnotations","_view","getInitialAnnotation","initialAnnotation","colorField_1","initialStatistic","PIE_STATISTIC","adaptOffset","defaultOffset","isAllZero","angleField","percentageField_1","content_1","dataum","angleScale","labelLayoutType","spider","labelLayoutCfg","transformStatisticOptions","titleOpt_1","contentOpt_1","metaFormatter","dataValue","getTotalValue","pieAnnotation","startStages_1","stage","prevOptions","curData","getProgressData","clampPercent","RingProgress","REGRESSION_MAP","xScaleView","yScaleView","pathData","regressionLine","customEquation","equation","roundByPrecision","safeFormat","getRegressionEquation","reg","xFieldValue","yFieldValue","xIsPositiveNumber","yIsPositiveNumber","getMetaMinMax","fieldMeta","getCustomValue","transformOptions","isOneX","isOneY","meta_1","newOptions","shapeLegend","sizeLegend","showLegend","scatterGeometry","scatterAnnotation","quadrant","xBaseline","yBaseline","regionStyle_1","defaultConfig_1","textOffset","getQuadrantDefaultConfig","equationStyle","equationStyle_1","top_1","showEquation","showEquation_1","defaultStyle_1","defaulEquationStyle_1","Scatter","Y_FIELD","TREND_FIELD","TREND_UP","TREND_DOWN","defaultContent","risingFill","fallingFill","getStockData","open_1","close_1","high","low","stockStyle","baseMeta","Stock","getTinyData","X_FIELD","pointOptions","lineOptions","seriesData","TinyArea","TinyColumn","TinyLine","PLOT_ADAPTORS","pie","gauge","scatter","histogram","stock","PLOT_CONSTRUCTOR","DEFAULT_OPTIONS_MAP","execPlotAdaptor","plot","multiView","viewOfG2","multiPlot","plots","Association","getAssociationItems","linkField","Stage","Mix","STABLE","DEV","BETA","FIRST_AXES_VIEW","SECOND_AXES_VIEW","SERIES_FIELD_KEY","hopeData","data1","data2","__axisPosition","firstView","secondView","firstViewData","secondViewData","aliasMap","metaKey","leftGeometry","rightGeometry","leftLabelCfg","positionMap_1","BidirectionalBar","BOX_RANGE","BOX_SYNC_NAME","OUTLIERS_VIEW_ID","boxStyle","low_1","q1_1","median_1","q3_1","high_1","yFieldName","outliersPoint","outliersField","outliersStyle","outliersView","outliersViewData","syncName","Box","getSeriesFieldKey","measureField","rangeField","rangeValues","rKey","measureValues","mKey","targetValues","tKey","bulletStyle","extData","rangeGeometry","measureGeometry","targetGeometry","Bullet","nodeWidthRatio","nodePaddingRatio","sourceWeight","targetWeight","sortBy","chordLayout","chordLayoutOptions","chordLayoutInputData","edges","inEdges","outEdges","frequency","processGraph","sortMethods","localeCompare","sortNodes","nodePaddingRatio_1","margin_1","nodeWidthRatio_1","totalValue_1","deltaX_1","layoutNodes","outputLinks","valueById_1","sId","tId","sNode","tNode","sValue","currentSValue","sStart","sEnd","tValue","currentTValue","tStart","tEnd","locatingEdges","NODE_COLOR_FIELD","EDGE_COLOR_FIELD","edgeStyle","nodesData","isNode","edgesData","chordData","nodeGeometry","nodeView","edgeGeometry","edgeView","getAllGeometriesRecursively","Chord","RAW_FIELDS","hierarchyConfig","drilldown","BREAD_CRUMB_NAME","DEFAULT_BREAD_CRUMB_CONFIG","dividerText","activeTextStyle","HIERARCHY_DATA_TRANSFORM_PARAMS","DrillDownAction","historyCache","breadCrumbGroup","breadCrumbCfg","drill","drawBreadCrumb","backTo","hideCrumbGroup","nodeInfo","drillData","nodeData","drillDownConfig","breadCrumb","drawBreadCrumbGroup","rootText","textShapeBox","targetId","newHistoryCache","dividerBox","packEnclose","packChildren","NODE_INDEX_FIELD","CHILD_NODE_COUNT","NODE_ANCESTORS_FIELD","INVALID_FIELD_ERR_MSG","getAllNodes","index_1","eachNode","enableDrillDown","packLayout","ancestorNode","resolvePaddingForCircle","tempPadding","wSize","hSize","restWidthPadding","restHeightPadding","finalSize","diameter","tempAppendPadding","circleSize","nameFormatter","valueFormatter","adaptorInteraction","isParentNode","inCenter","CirclePacking","AxisType","DualAxesGeometry","LEFT_AXES_VIEW","RIGHT_AXES_VIEW","DEFAULT_YAXIS_CONFIG","DEFAULT_LEFT_YAXIS_CONFIG","DEFAULT_RIGHT_YAXIS_CONFIG","isLine","isColumn","getGeometryOption","transformObjectToArray","transformAttribute","getYAxisWithDefault","axisType","getViewLegendItems","legendItemName","isGeometry","viewId","attrItems","doSliderFilter","sliderValue","geometryOptions","allLine","createViews","SORT_MAP","FIELD_KEY","adjust_1","drawSingleGeometry","themeColor","groupScale","leftView","rightView","leftLegend_1","rightLegend_1","leftItems","rightItems","yF","legendItem_1","DualAxes","facetAdaptor","facetType","_eachView","restFacetCfg","viewOptions","execViewAdaptor","plotOptions","sizeRatio","heatmapStyle","checkedSizeRatio","dautm","maxSideLength","sideLength","CAT_VALUE","getLiquidData","liquidStyle","getWaterWavePositions","waveLength","getWaterWavePath","waterLevel","_phase","waveRight","builtInShapeByName","cpX","cpY","waveCount","minXPoint","waveAttrs","getFillAttrs","outlineAttrs","getLineAttrs","shapePath","waves","addWaterWave","Liquid","areaOptions","RadarTooltipController","cfgTitle","hintItems","title_1","result_1","displayTitle","RadarTooltipAction","getTooltipController","Radar","getScaleMax","maxAngle","yData","formatRadian","actualData","stackedData","getStackedData","intervalGeometry","RadialBar","sectorStyle","Rose","COLOR_FIELD","NODES_VIEW_ID","EDGES_VIEW_ID","cutoffCircle","removedData","getNodes","graphMatrix","visited","DFS","dfsNode","targetDepth","sourceLinks","sumBy","maxValueBy","ascendingSourceBreadth","ascendingBreadth","ascendingTargetBreadth","defaultNodes","graph","defaultLinks","computeLinkBreadths","nodes_1","targetLinks","Sankey","linkSort","sankey","nodes_2","computeNodeLinks","nodes_3","fixedValue","computeNodeValues","computeNodeDepths","computeNodeHeights","nodes_4","columns_1","computeNodeLayers","minValueBy","columns_2","nodes_6","nodes_5","reorderLinks","initializeNodeBreadths","relaxRightToLeft","relaxLeftToRight","computeNodeBreadths","column_1","dy_1","reorderNodeLinks","resolveCollisions","column_2","sourceTop","dy_2","resolveCollisionsBottomToTop","resolveCollisionsTopToBottom","dy_3","dy_4","targetLinks_1","sourceLinks_1","nodes_7","nodeAlign","nodeDepth","nodeSort","nodeWidth","nodePadding","ALIGN_METHOD","sankeyLayout","sankeyLayoutOptions","sankeyProcessor","getNodeAlignFunction","layoutData","getNodeWidthRatio","getNodePaddingRatio","transformToViewsData","sankeyLayoutInputData","dataType","isNodeLink","nodeState","edgeState","nodeDraggable","DRAG_INTERACTION","nodeInteractions","edgeInteractions","SankeyNodeDragAction","isDragging","isNodeElement","getNodeView","getEdgeView","getCurrentDatumIdx","currentElementIdx","prevNodeAnimateCfg","prevEdgeAnimateCfg","prevDatum","datumGap_1","nextDatum","edgeData","isLast","nodesView","edgesView","SUNBURST_ANCESTOR_FIELD","SUNBURST_Y_FIELD","SUNBURST_PATH_FIELD","sunburstStyle","ignoreParentValue","tileMethod","activeDepth","pathFormatter","Sunburst","findInteraction","enableInteraction","enableDrillInteraction","curPath","rectStyle","viewZoomInteraction","ID_FIELD","transData","drillDownInteraction","drillDownAction","resetDrillDown","PATH_FIELD","blendMode","placeElementsOrdered","VennElementActive","syncElementsPos","VennElementHighlight","ElementSelectedAction","ElementSingleSelectedAction","VennElementSelected","VennElementSingleSelected","VennLabel","customLabelInfo","fillAttrs","blendObject","dodge","burn","blendRgbArr","innerBlend","colorToArr","g0","g1","rgbaArr","SMALL","intersectionArea","stats","intersectionPoints","circleCircleIntersection","parentIndex","getIntersectionPoints","innerPoints","containedInCircles","arcArea","polygonArea","angleDiff","circleArea","smallest","disjoint","circleOverlap","circleMargin","computeTextCentre","solution","areaStats","computeTextCentres","areas","overlapped","circleids","circleid","getOverlappingCircles","sets","areaids","exclude","overlaps","centre","distanceFromIntersectArea","bestInitialLayout","loss","lossFunction","setOverlaps","rowid","mostOverlapped","positioned","isPositioned","positionSet","setIndex","extraPoints","bestLoss","bestPoint","localLoss","greedyLayout","constrained","restarts","setids","matrices","constraints","getDistanceMatrices","norm","dij","squaredDistance","constrainedMDSGradient","constrainedMDSLayout","getBoundingBox","minMax","xRange","yRange","getColorMap","colorPalette","setsField","colorMap","colorPaletteLen","colorArr","layoutVennData","vennData","initialLayout","pairs","addMissingAreas","setid_1","venn","xScaling","yScaling","scaling","scaleSolution","textCenters","setCircles","circlePath","wide","intersectionAreaPath","LEGEND_SPACE","currSets","filterSets","legalArr","testArr","islegalSets","colorOptions","map_1","transformColor","vennInteraction","MAP_1","Venn","VIOLIN_Y_FIELD","VIOLIN_SIZE_FIELD","MIN_MAX_FIELD","QUANTILE_FIELD","MEDIAN_FIELD","VIOLIN_VIEW_ID","MIN_MAX_VIEW_ID","QUANTILE_VIEW_ID","MEDIAN_VIEW_ID","sampleSize","violinStyle","quantileSelect","multiQuantileSelect","toBoxValue","toViolinValue","pdfOptions","pdfResults","violinSize","violinY","transformViolinData","resultList","seriesGroup","TOOLTIP_FIELDS","violinView","boxView","minMaxView","quantileView","medianView","legendField_1","legendOptions","DIFF_FIELD","ABSOLUTE_FIELD","IS_TOTAL","leaderLine","waterfallStyle","processed","newYField","dIdx","localeTotalLabel","colorMapping","Y_FIELD_META","labelMode","leaderLineCfg","linkPath","Waterfall","WORD_CLOUD_COLOR_FIELD","wordStyle","rotationSteps","rotateRatio","wordCloud","cloudFont","cloudFontSize","cloudFontNormal","cloudRotate","cloudPadding","cloudText","cloudCanvas","willReadFrequently","hasImage","_tags","cxt","imageData","tagCloud","imageMask","rawOptions","chartPadding","wordField","placementStrategy","getSingleKeyValues","getFontSizeMapping","getRotate","resolvePadding","fMin_1","fMax_1","resolveRotate","perSize","getTextAttrs","WordCloud","rej","HTMLImageElement","ERROR","general","increase","decrease","waterfall","__assign","TOOLTIP_CONTAINER_MAPPING","mountPoint","hasPath","useInit","ChartClass","chartOptions","onReady","onEvent","reactDomToString","_uuid","statisticCustomHtml","setPath","statisticDom","processConfig","inputConfig","changeType_1","currentKeys_1","chartInstance","encoderOptions","downloadImage","imageName","base64","ErrorBoundary","renderError","errorTemplate","getDerivedStateFromError","getDerivedStateFromProps","nextProps","Fragment","backgroundOpacity","baseUrl","foregroundColor","foregroundOpacity","gradientRatio","speed","fixedId","idClip","idGradient","idAria","rtlStyle","keyTimes","dur","stopOpacity","repeatCount","ContentLoader","ReactContentLoaderFacebook","loadingTemplate","RadarChart","chartRef","getChart","initEval","setVizData","loadingRepair","setLoadingRepair","evaluations","setEvaluations","selectedEvaluation","setSelectedEvaluation","evaluationsDivRef","evaluationsView","stars","StarIcon","getStarRating","dimension","mapNumberToColor","fetchEvaluation","AcademicCapIcon","EvalRadarPlot","feedback","charts","repairChart","WrenchScrewdriverIcon","recommendations","setRecommendations","recommendationsDivRef","recommendationsView","temperature","fetchRecommendation","_spec$title","vizspec","loadingRevision","setLoadingRevision","setCommands","commandInputRef","chartDivRef","commandsView","tabItems","ChatBubbleLeftEllipsisIcon","_commandInputRef$curr2","comms","instructions","_commandInputRef$curr","editVisualization","ArchiveBoxXMarkIcon","ChartExplainer","ChartEvaluator","ChartRecommender","ChartRasterView","InformationCircleIcon","CodeView","vizspecs","ChartView","_vizConfig$goal2","setVizspecs","promptInputRef","vizDivRef","_vizConfig$goal","fetchVisualization","ChartPieIcon","_promptInputRef$curre","_promptInputRef$curre2","_promptInputRef$curre3","_promptInputRef$curre4","Cog6ToothIcon","PaperAirplaneIcon","LoadingBar","VegaGalleryView","ExclamationCircleIcon","setLoadingGoals","setGoals","summaryDivRef","goalsDivRef","fetchGoals","fetchGoalsUrl","uploadFile","InboxIcon","SamplesView","SummaryView","GoalView","VizGenView","includedStart","includedEnd","getDirectionStyle","positionStyle","Handle","_getIndex","onOffsetChange","ariaLabelForHandle","ariaLabelledByForHandle","ariaValueTextFormatterForHandle","handlePrefixCls","onInternalStartMove","handleNode","PAGE_UP","PAGE_DOWN","Handles","handleRender","draggingIndex","handlesRef","_handlesRef$current$i","getPosition","Track","trackPrefixCls","offsetStart","offsetEnd","Tracks","included","trackList","startValue","endValue","_onClick","textCls","markPrefixCls","Dot","stepDots","dotSet","dotValue","_props$disabled","_props$min","_props$max","_props$step","onBeforeChange","onAfterChange","_props$allowCross","allowCross","_props$pushable","pushable","draggableTrack","_props$included","trackStyle","handleStyle","railStyle","dotStyle","activeDotStyle","_props$tabIndex","mergedMin","mergedMax","mergedStep","mergedPush","markList","markObj","_useOffset","formatRangeValue","formatNextValue","formatStepValue","stepValue","getDecimal","maxDecimal","alignValues","closeValue","closeDist","alignValue","targetDistValue","potentialValues","compareValue","valueDist","potentialValue","offsetChangedValue","needPush","pushNum","_offsetChangedValue","_changed","_offsetChangedValue2","_changed2","_offsetChangedValue3","_changed3","_offsetChangedValue4","useOffset","_useOffset2","offsetValues","valueList","_valueList$","pointCount","_returnValues","rawValuesRef","getTriggerValue","triggerValues","cloneNextValues","changeToCloseValue","keyboardValue","setKeyboardValue","mergedDraggableTrack","_useDrag","finishChange","draggingValue","setDraggingValue","setDraggingIndex","cacheValues","setCacheValues","setOriginValues","mouseMoveEventRef","mouseUpEventRef","flushValues","updateCacheValue","maxStartOffset","maxEndOffset","formatStartValue","cloneCacheValues","offsetDist","updateCacheValueRef","sourceValues","_getPosition","offSetPercent","_getPosition2","moveX","moveY","useDrag","_useDrag2","onStartDrag","sortedCacheValues","SliderTooltip","innerRef","cancelKeepAlign","_hover","controlSize","dotSize","marginFull","marginPart","railBg","trackBg","railHoverBg","trackHoverBg","handleLineWidth","colorPrimaryBorderHover","dotActiveBorderColor","handleSize","handleColor","handleSizeHover","handleLineWidthHover","handleActiveColor","dotBorderColor","trackBgDisabled","genDirectionStyle","railSize","railPadding","full","handlePos","markInset","genHorizontalStyle","marginPartWithMark","genVerticalStyle","sliderToken","increaseHandleWidth","colorPrimaryBorder","legacyTooltipPrefixCls","tooltipPrefixCls","legacyTipFormatter","tipFormatter","legacyTooltipVisible","tooltipVisible","legacyGetTooltipPopupContainer","getTooltipPopupContainer","legacyTooltipPlacement","tooltipPlacement","opens","setOpens","toggleTooltipOpen","getTooltipPlacement","mergedRange","mergedTipFormatter","_props$tooltip","tooltipProps","tooltipOpen","customizeTooltipPrefixCls","isTipFormatter","_models$providers$sel","_models$providers$sel2","models","isModalVisible","setIsModalVisible","selectedProvider","setSelectedProvider","selectedModel","setSelectedModel","providers","provider_options","provider","model_options","ControlRowView","max_tokens","AdjustmentsVerticalIcon","presence_penalty","frequency_penalty","SecondaryButton","openai","setModels","initVizConfig","getLocalStorage","GeneratorControlsView","DatasetSelectorView","Layout","site","siteMetadata","GenerateView","_typeof","regeneratorRuntime","accidentalStrictMode","globalThis"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"component---src-pages-demo-tsx-54fd6da10fa870d8d843.js","mappings":"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","sources":["webpack://lida/./node_modules/@antv/event-emitter/esm/index.js","webpack://lida/./node_modules/@antv/g-base/esm/abstract/base.js","webpack://lida/./node_modules/@antv/g-base/node_modules/d3-timer/src/timer.js","webpack://lida/./node_modules/@antv/g-base/esm/util/color.js","webpack://lida/./node_modules/@antv/g-base/esm/animate/timeline.js","webpack://lida/./node_modules/@antv/g-base/esm/event/event-contoller.js","webpack://lida/./node_modules/@antv/g-base/esm/abstract/canvas.js","webpack://lida/./node_modules/@antv/g-base/esm/abstract/container.js","webpack://lida/./node_modules/@antv/g-base/esm/abstract/element.js","webpack://lida/./node_modules/@antv/g-base/esm/abstract/group.js","webpack://lida/./node_modules/@antv/g-base/esm/abstract/shape.js","webpack://lida/./node_modules/@antv/g-base/node_modules/d3-ease/src/linear.js","webpack://lida/./node_modules/@antv/g-base/node_modules/d3-ease/src/quad.js","webpack://lida/./node_modules/@antv/g-base/node_modules/d3-ease/src/cubic.js","webpack://lida/./node_modules/@antv/g-base/node_modules/d3-ease/src/poly.js","webpack://lida/./node_modules/@antv/g-base/node_modules/d3-ease/src/sin.js","webpack://lida/./node_modules/@antv/g-base/node_modules/d3-ease/src/math.js","webpack://lida/./node_modules/@antv/g-base/node_modules/d3-ease/src/exp.js","webpack://lida/./node_modules/@antv/g-base/node_modules/d3-ease/src/circle.js","webpack://lida/./node_modules/@antv/g-base/node_modules/d3-ease/src/bounce.js","webpack://lida/./node_modules/@antv/g-base/node_modules/d3-ease/src/back.js","webpack://lida/./node_modules/@antv/g-base/node_modules/d3-ease/src/elastic.js","webpack://lida/./node_modules/@antv/g-base/esm/animate/register.js","webpack://lida/./node_modules/@antv/g-base/esm/bbox/register.js","webpack://lida/./node_modules/@antv/g-base/esm/bbox/rect.js","webpack://lida/./node_modules/@antv/g-base/esm/bbox/circle.js","webpack://lida/./node_modules/@antv/g-base/esm/bbox/util.js","webpack://lida/./node_modules/@antv/g-base/esm/bbox/path.js","webpack://lida/./node_modules/@antv/g-base/esm/bbox/index.js","webpack://lida/./node_modules/@antv/g-base/esm/bbox/polyline.js","webpack://lida/./node_modules/@antv/g-base/esm/bbox/polygon.js","webpack://lida/./node_modules/@antv/g-base/esm/bbox/text.js","webpack://lida/./node_modules/@antv/g-base/esm/bbox/line.js","webpack://lida/./node_modules/@antv/g-base/esm/bbox/ellipse.js","webpack://lida/./node_modules/@antv/g-base/esm/event/graph-event.js","webpack://lida/./node_modules/@antv/g-base/esm/index.js","webpack://lida/./node_modules/@antv/g-base/esm/util/matrix.js","webpack://lida/./node_modules/@antv/g-base/esm/util/offscreen.js","webpack://lida/./node_modules/@antv/g-base/esm/util/path.js","webpack://lida/./node_modules/@antv/g-base/esm/util/text.js","webpack://lida/./node_modules/@antv/g-base/esm/util/util.js","webpack://lida/./node_modules/@antv/g-math/esm/util.js","webpack://lida/./node_modules/@antv/g-math/esm/line.js","webpack://lida/./node_modules/@antv/g-math/esm/bezier.js","webpack://lida/./node_modules/@antv/g-math/esm/quadratic.js","webpack://lida/./node_modules/@antv/g-math/esm/cubic.js","webpack://lida/./node_modules/@antv/g-math/esm/ellipse.js","webpack://lida/./node_modules/@antv/g-math/esm/arc.js","webpack://lida/./node_modules/@antv/g-math/esm/segments.js","webpack://lida/./node_modules/@antv/g-math/esm/polyline.js","webpack://lida/./node_modules/@antv/matrix-util/esm/ext.js","webpack://lida/./node_modules/@antv/path-util/esm/parse-path.js","webpack://lida/./node_modules/@antv/path-util/esm/catmull-rom-2-bezier.js","webpack://lida/./node_modules/@antv/path-util/esm/parse-path-string.js","webpack://lida/./node_modules/@antv/path-util/esm/path-2-absolute.js","webpack://lida/./node_modules/@antv/path-util/esm/process/arc-2-cubic.js","webpack://lida/./node_modules/@antv/path-util/esm/get-arc-params.js","webpack://lida/./node_modules/@antv/path-util/esm/path-2-segments.js","webpack://lida/./node_modules/@antv/path-util/esm/point-in-polygon.js","webpack://lida/./node_modules/@antv/path-util/esm/get-line-intersect.js","webpack://lida/./node_modules/@antv/path-util/esm/is-polygons-intersect.js","webpack://lida/./node_modules/@antv/util/esm/is-array-like.js","webpack://lida/./node_modules/@antv/util/esm/contains.js","webpack://lida/./node_modules/@antv/util/esm/filter.js","webpack://lida/./node_modules/@antv/util/esm/difference.js","webpack://lida/./node_modules/@antv/util/esm/is-type.js","webpack://lida/./node_modules/@antv/util/esm/is-function.js","webpack://lida/./node_modules/@antv/util/esm/is-nil.js","webpack://lida/./node_modules/@antv/util/esm/is-array.js","webpack://lida/./node_modules/@antv/util/esm/is-object.js","webpack://lida/./node_modules/@antv/util/esm/each.js","webpack://lida/./node_modules/@antv/util/esm/keys.js","webpack://lida/./node_modules/@antv/util/esm/is-match.js","webpack://lida/./node_modules/@antv/util/esm/is-object-like.js","webpack://lida/./node_modules/@antv/util/esm/is-plain-object.js","webpack://lida/./node_modules/@antv/util/esm/find.js","webpack://lida/./node_modules/@antv/util/esm/find-index.js","webpack://lida/./node_modules/@antv/util/esm/first-value.js","webpack://lida/./node_modules/@antv/util/esm/flatten.js","webpack://lida/./node_modules/@antv/util/esm/max.js","webpack://lida/./node_modules/@antv/util/esm/min.js","webpack://lida/./node_modules/@antv/util/esm/get-range.js","webpack://lida/./node_modules/@antv/util/esm/pull.js","webpack://lida/./node_modules/@antv/util/esm/pull-at.js","webpack://lida/./node_modules/@antv/util/esm/reduce.js","webpack://lida/./node_modules/@antv/util/esm/remove.js","webpack://lida/./node_modules/@antv/util/esm/is-string.js","webpack://lida/./node_modules/@antv/util/esm/sort-by.js","webpack://lida/./node_modules/@antv/util/esm/uniq.js","webpack://lida/./node_modules/@antv/util/esm/values-of-key.js","webpack://lida/./node_modules/@antv/util/esm/head.js","webpack://lida/./node_modules/@antv/util/esm/last.js","webpack://lida/./node_modules/@antv/util/esm/ends-with.js","webpack://lida/./node_modules/@antv/util/esm/every.js","webpack://lida/./node_modules/@antv/util/esm/some.js","webpack://lida/./node_modules/@antv/util/esm/group-by.js","webpack://lida/./node_modules/@antv/util/esm/group-to-map.js","webpack://lida/./node_modules/@antv/util/esm/group.js","webpack://lida/./node_modules/@antv/util/esm/parse-radius.js","webpack://lida/./node_modules/@antv/util/esm/clamp.js","webpack://lida/./node_modules/@antv/util/esm/fixed-base.js","webpack://lida/./node_modules/@antv/util/esm/is-number.js","webpack://lida/./node_modules/@antv/util/esm/is-number-equal.js","webpack://lida/./node_modules/@antv/util/esm/is-integer.js","webpack://lida/./node_modules/@antv/util/esm/is-odd.js","webpack://lida/./node_modules/@antv/util/esm/max-by.js","webpack://lida/./node_modules/@antv/util/esm/min-by.js","webpack://lida/./node_modules/@antv/util/esm/mod.js","webpack://lida/./node_modules/@antv/util/esm/to-radian.js","webpack://lida/./node_modules/@antv/util/esm/to-degree.js","webpack://lida/./node_modules/@antv/util/esm/for-in.js","webpack://lida/./node_modules/@antv/util/esm/has-key.js","webpack://lida/./node_modules/@antv/util/esm/has.js","webpack://lida/./node_modules/@antv/util/esm/values.js","webpack://lida/./node_modules/@antv/util/esm/to-string.js","webpack://lida/./node_modules/@antv/util/esm/lower-case.js","webpack://lida/./node_modules/@antv/util/esm/substitute.js","webpack://lida/./node_modules/@antv/util/esm/upper-first.js","webpack://lida/./node_modules/@antv/util/esm/get-type.js","webpack://lida/./node_modules/@antv/util/esm/is-boolean.js","webpack://lida/./node_modules/@antv/util/esm/is-date.js","webpack://lida/./node_modules/@antv/util/esm/is-null.js","webpack://lida/./node_modules/@antv/util/esm/is-prototype.js","webpack://lida/./node_modules/@antv/util/esm/is-undefined.js","webpack://lida/./node_modules/@antv/util/esm/is-element.js","webpack://lida/./node_modules/@antv/util/esm/request-animation-frame.js","webpack://lida/./node_modules/@antv/util/esm/clear-animation-frame.js","webpack://lida/./node_modules/@antv/util/esm/augment.js","webpack://lida/./node_modules/@antv/util/esm/clone.js","webpack://lida/./node_modules/@antv/util/esm/debounce.js","webpack://lida/./node_modules/@antv/util/esm/memoize.js","webpack://lida/./node_modules/@antv/util/esm/deep-mix.js","webpack://lida/./node_modules/@antv/util/esm/index-of.js","webpack://lida/./node_modules/@antv/util/esm/is-empty.js","webpack://lida/./node_modules/@antv/util/esm/is-equal.js","webpack://lida/./node_modules/@antv/util/esm/map.js","webpack://lida/./node_modules/@antv/util/esm/map-values.js","webpack://lida/./node_modules/@antv/util/esm/mix.js","webpack://lida/./node_modules/@antv/util/esm/get.js","webpack://lida/./node_modules/@antv/util/esm/set.js","webpack://lida/./node_modules/@antv/util/esm/pick.js","webpack://lida/./node_modules/@antv/util/esm/omit.js","webpack://lida/./node_modules/@antv/util/esm/throttle.js","webpack://lida/./node_modules/@antv/util/esm/to-array.js","webpack://lida/./node_modules/@antv/util/esm/unique-id.js","webpack://lida/./node_modules/@antv/util/esm/noop.js","webpack://lida/./node_modules/@antv/util/esm/size.js","webpack://lida/./node_modules/@antv/util/esm/measure-text-width.js","webpack://lida/./node_modules/@antv/util/esm/get-ellipsis-text.js","webpack://lida/./node_modules/@antv/util/esm/cache.js","webpack://lida/./node_modules/clone/clone.js","webpack://lida/./node_modules/d3-color/src/color.js","webpack://lida/./node_modules/d3-color/src/define.js","webpack://lida/./node_modules/d3-interpolate/src/array.js","webpack://lida/./node_modules/d3-interpolate/src/basis.js","webpack://lida/./node_modules/d3-interpolate/src/basisClosed.js","webpack://lida/./node_modules/d3-interpolate/src/color.js","webpack://lida/./node_modules/d3-interpolate/src/constant.js","webpack://lida/./node_modules/d3-interpolate/src/date.js","webpack://lida/./node_modules/d3-interpolate/src/number.js","webpack://lida/./node_modules/d3-interpolate/src/numberArray.js","webpack://lida/./node_modules/d3-interpolate/src/object.js","webpack://lida/./node_modules/d3-interpolate/src/rgb.js","webpack://lida/./node_modules/d3-interpolate/src/string.js","webpack://lida/./node_modules/d3-interpolate/src/value.js","webpack://lida/./node_modules/d3-regression/dist/d3-regression.js","webpack://lida/./node_modules/detect-browser/es/index.js","webpack://lida/./node_modules/fast-deep-equal/index.js","webpack://lida/./node_modules/fast-json-stable-stringify/index.js","webpack://lida/./node_modules/fmin/build/fmin.js","webpack://lida/./node_modules/gl-matrix/esm/common.js","webpack://lida/./node_modules/gl-matrix/esm/mat3.js","webpack://lida/./node_modules/gl-matrix/esm/vec2.js","webpack://lida/./node_modules/json-stringify-pretty-compact/index.js","webpack://lida/./node_modules/pdfast/src/helper.js","webpack://lida/./node_modules/pdfast/src/index.js","webpack://lida/./node_modules/size-sensor/lib/constant.js","webpack://lida/./node_modules/size-sensor/lib/debounce.js","webpack://lida/./node_modules/size-sensor/lib/id.js","webpack://lida/./node_modules/size-sensor/lib/index.js","webpack://lida/./node_modules/size-sensor/lib/sensorPool.js","webpack://lida/./node_modules/size-sensor/lib/sensors/index.js","webpack://lida/./node_modules/size-sensor/lib/sensors/object.js","webpack://lida/./node_modules/size-sensor/lib/sensors/resizeObserver.js","webpack://lida/./node_modules/tslib/tslib.es6.mjs","webpack://lida/./node_modules/core-js/internals/get-substitution.js","webpack://lida/./node_modules/core-js/internals/is-regexp.js","webpack://lida/./node_modules/core-js/internals/regexp-flags.js","webpack://lida/./node_modules/core-js/internals/regexp-get-flags.js","webpack://lida/./node_modules/core-js/internals/to-string.js","webpack://lida/./node_modules/core-js/modules/es.array.flat.js","webpack://lida/./node_modules/core-js/modules/es.array.unscopables.flat.js","webpack://lida/./node_modules/core-js/modules/es.math.hypot.js","webpack://lida/./node_modules/core-js/modules/es.string.replace-all.js","webpack://lida/./node_modules/core-js/modules/esnext.string.replace-all.js","webpack://lida/./node_modules/@heroicons/react/24/outline/esm/ExclamationCircleIcon.js","webpack://lida/./node_modules/@heroicons/react/24/outline/esm/ArrowUpOnSquareIcon.js","webpack://lida/./node_modules/@heroicons/react/24/outline/esm/InboxIcon.js","webpack://lida/./node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js","webpack://lida/./node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://lida/./node_modules/rc-util/es/pickAttrs.js","webpack://lida/./node_modules/rc-upload/es/request.js","webpack://lida/./node_modules/rc-upload/es/uid.js","webpack://lida/./node_modules/rc-upload/es/attr-accept.js","webpack://lida/./node_modules/rc-upload/es/traverseFileTree.js","webpack://lida/./node_modules/rc-upload/es/AjaxUploader.js","webpack://lida/./node_modules/rc-upload/es/Upload.js","webpack://lida/./node_modules/rc-upload/es/index.js","webpack://lida/./node_modules/antd/es/config-provider/DisabledContext.js","webpack://lida/./node_modules/antd/es/locale/context.js","webpack://lida/./node_modules/rc-pagination/es/locale/en_US.js","webpack://lida/./node_modules/rc-picker/es/locale/en_US.js","webpack://lida/./node_modules/antd/es/time-picker/locale/en_US.js","webpack://lida/./node_modules/antd/es/date-picker/locale/en_US.js","webpack://lida/./node_modules/antd/es/locale/en_US.js","webpack://lida/./node_modules/antd/es/locale/useLocale.js","webpack://lida/./node_modules/@ant-design/icons-svg/es/asn/FileTwoTone.js","webpack://lida/./node_modules/@ant-design/icons/es/icons/FileTwoTone.js","webpack://lida/./node_modules/@ant-design/icons-svg/es/asn/LoadingOutlined.js","webpack://lida/./node_modules/@ant-design/icons/es/icons/LoadingOutlined.js","webpack://lida/./node_modules/@ant-design/icons-svg/es/asn/PaperClipOutlined.js","webpack://lida/./node_modules/@ant-design/icons/es/icons/PaperClipOutlined.js","webpack://lida/./node_modules/@ant-design/icons-svg/es/asn/PictureTwoTone.js","webpack://lida/./node_modules/@ant-design/icons/es/icons/PictureTwoTone.js","webpack://lida/./node_modules/antd/es/_util/hooks/useForceUpdate.js","webpack://lida/./node_modules/rc-util/es/React/render.js","webpack://lida/./node_modules/rc-util/es/Dom/isVisible.js","webpack://lida/./node_modules/antd/es/_util/wave/style.js","webpack://lida/./node_modules/antd/es/_util/wave/util.js","webpack://lida/./node_modules/antd/es/_util/wave/interface.js","webpack://lida/./node_modules/antd/es/_util/wave/WaveEffect.js","webpack://lida/./node_modules/antd/es/_util/wave/index.js","webpack://lida/./node_modules/antd/es/_util/wave/useWave.js","webpack://lida/./node_modules/antd/es/space/Compact.js","webpack://lida/./node_modules/antd/es/button/IconWrapper.js","webpack://lida/./node_modules/antd/es/button/LoadingIcon.js","webpack://lida/./node_modules/antd/es/button/button-group.js","webpack://lida/./node_modules/antd/es/button/buttonHelpers.js","webpack://lida/./node_modules/antd/es/style/compact-item.js","webpack://lida/./node_modules/antd/es/style/compact-item-vertical.js","webpack://lida/./node_modules/antd/es/button/style/group.js","webpack://lida/./node_modules/antd/es/button/style/index.js","webpack://lida/./node_modules/antd/es/button/button.js","webpack://lida/./node_modules/antd/es/button/index.js","webpack://lida/./node_modules/antd/es/upload/utils.js","webpack://lida/./node_modules/@ant-design/icons-svg/es/asn/DeleteOutlined.js","webpack://lida/./node_modules/@ant-design/icons/es/icons/DeleteOutlined.js","webpack://lida/./node_modules/@ant-design/icons-svg/es/asn/DownloadOutlined.js","webpack://lida/./node_modules/@ant-design/icons/es/icons/DownloadOutlined.js","webpack://lida/./node_modules/@ant-design/icons-svg/es/asn/EyeOutlined.js","webpack://lida/./node_modules/@ant-design/icons/es/icons/EyeOutlined.js","webpack://lida/./node_modules/@ant-design/icons-svg/es/asn/CheckCircleFilled.js","webpack://lida/./node_modules/@ant-design/icons/es/icons/CheckCircleFilled.js","webpack://lida/./node_modules/@ant-design/icons-svg/es/asn/CheckOutlined.js","webpack://lida/./node_modules/@ant-design/icons/es/icons/CheckOutlined.js","webpack://lida/./node_modules/@ant-design/icons-svg/es/asn/CloseCircleFilled.js","webpack://lida/./node_modules/@ant-design/icons/es/icons/CloseCircleFilled.js","webpack://lida/./node_modules/@ant-design/icons-svg/es/asn/CloseOutlined.js","webpack://lida/./node_modules/@ant-design/icons/es/icons/CloseOutlined.js","webpack://lida/./node_modules/rc-progress/es/common.js","webpack://lida/./node_modules/rc-progress/es/Line.js","webpack://lida/./node_modules/rc-progress/es/hooks/useId.js","webpack://lida/./node_modules/rc-progress/es/Circle.js","webpack://lida/./node_modules/@rc-component/portal/es/Context.js","webpack://lida/./node_modules/@rc-component/portal/es/useDom.js","webpack://lida/./node_modules/rc-util/es/getScrollBarSize.js","webpack://lida/./node_modules/@rc-component/portal/es/useScrollLocker.js","webpack://lida/./node_modules/@rc-component/portal/es/util.js","webpack://lida/./node_modules/@rc-component/portal/es/mock.js","webpack://lida/./node_modules/@rc-component/portal/es/Portal.js","webpack://lida/./node_modules/@rc-component/portal/es/index.js","webpack://lida/./node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","webpack://lida/./node_modules/rc-resize-observer/es/utils/observerUtil.js","webpack://lida/./node_modules/rc-resize-observer/es/SingleObserver/DomWrapper.js","webpack://lida/./node_modules/rc-resize-observer/es/Collection.js","webpack://lida/./node_modules/rc-resize-observer/es/SingleObserver/index.js","webpack://lida/./node_modules/rc-resize-observer/es/index.js","webpack://lida/./node_modules/rc-util/es/hooks/useId.js","webpack://lida/./node_modules/rc-util/es/isMobile.js","webpack://lida/./node_modules/@rc-component/trigger/es/context.js","webpack://lida/./node_modules/@rc-component/trigger/es/hooks/useAction.js","webpack://lida/./node_modules/@rc-component/trigger/es/util.js","webpack://lida/./node_modules/@rc-component/trigger/es/hooks/useAlign.js","webpack://lida/./node_modules/@rc-component/trigger/es/Popup/Arrow.js","webpack://lida/./node_modules/@rc-component/trigger/es/Popup/Mask.js","webpack://lida/./node_modules/@rc-component/trigger/es/Popup/PopupContent.js","webpack://lida/./node_modules/@rc-component/trigger/es/Popup/index.js","webpack://lida/./node_modules/@rc-component/trigger/es/TriggerWrapper.js","webpack://lida/./node_modules/@rc-component/trigger/es/index.js","webpack://lida/./node_modules/@rc-component/trigger/es/hooks/useWatch.js","webpack://lida/./node_modules/@rc-component/trigger/es/hooks/useWinClick.js","webpack://lida/./node_modules/rc-tooltip/es/placements.js","webpack://lida/./node_modules/rc-tooltip/es/Popup.js","webpack://lida/./node_modules/rc-tooltip/es/Tooltip.js","webpack://lida/./node_modules/rc-tooltip/es/index.js","webpack://lida/./node_modules/antd/es/style/roundedArrow.js","webpack://lida/./node_modules/antd/es/style/placementArrow.js","webpack://lida/./node_modules/antd/es/_util/placements.js","webpack://lida/./node_modules/antd/es/theme/index.js","webpack://lida/./node_modules/antd/es/style/motion/motion.js","webpack://lida/./node_modules/antd/es/style/motion/zoom.js","webpack://lida/./node_modules/antd/es/theme/interface/presetColors.js","webpack://lida/./node_modules/antd/es/theme/util/genPresetColor.js","webpack://lida/./node_modules/antd/es/tooltip/style/index.js","webpack://lida/./node_modules/antd/es/_util/colors.js","webpack://lida/./node_modules/antd/es/tooltip/util.js","webpack://lida/./node_modules/antd/es/tooltip/PurePanel.js","webpack://lida/./node_modules/antd/es/tooltip/index.js","webpack://lida/./node_modules/antd/es/progress/utils.js","webpack://lida/./node_modules/antd/es/progress/Circle.js","webpack://lida/./node_modules/antd/es/progress/Line.js","webpack://lida/./node_modules/antd/es/progress/Steps.js","webpack://lida/./node_modules/antd/es/progress/style/index.js","webpack://lida/./node_modules/antd/es/progress/progress.js","webpack://lida/./node_modules/antd/es/progress/index.js","webpack://lida/./node_modules/antd/es/upload/UploadList/ListItem.js","webpack://lida/./node_modules/antd/es/upload/UploadList/index.js","webpack://lida/./node_modules/antd/es/upload/style/dragger.js","webpack://lida/./node_modules/antd/es/upload/style/list.js","webpack://lida/./node_modules/antd/es/style/motion/fade.js","webpack://lida/./node_modules/antd/es/upload/style/motion.js","webpack://lida/./node_modules/antd/es/upload/style/picture.js","webpack://lida/./node_modules/antd/es/upload/style/rtl.js","webpack://lida/./node_modules/antd/es/upload/style/index.js","webpack://lida/./node_modules/antd/es/upload/Upload.js","webpack://lida/./node_modules/antd/es/upload/Dragger.js","webpack://lida/./node_modules/antd/es/upload/index.js","webpack://lida/./node_modules/antd/es/form/validateMessagesContext.js","webpack://lida/./node_modules/antd/es/modal/locale.js","webpack://lida/./node_modules/antd/es/locale/index.js","webpack://lida/./node_modules/antd/es/config-provider/cssVariables.js","webpack://lida/./node_modules/antd/es/config-provider/hooks/useConfig.js","webpack://lida/./node_modules/antd/es/config-provider/MotionWrapper.js","webpack://lida/./node_modules/antd/es/config-provider/style/index.js","webpack://lida/./node_modules/antd/es/config-provider/index.js","webpack://lida/./node_modules/antd/es/config-provider/hooks/useTheme.js","webpack://lida/./node_modules/@ant-design/icons-svg/es/asn/ExclamationCircleFilled.js","webpack://lida/./node_modules/@ant-design/icons/es/icons/ExclamationCircleFilled.js","webpack://lida/./node_modules/@ant-design/icons-svg/es/asn/InfoCircleFilled.js","webpack://lida/./node_modules/@ant-design/icons/es/icons/InfoCircleFilled.js","webpack://lida/./node_modules/rc-notification/es/Notice.js","webpack://lida/./node_modules/rc-notification/es/Notifications.js","webpack://lida/./node_modules/rc-notification/es/useNotification.js","webpack://lida/./node_modules/antd/es/message/style/index.js","webpack://lida/./node_modules/antd/es/message/PurePanel.js","webpack://lida/./node_modules/antd/es/message/util.js","webpack://lida/./node_modules/antd/es/message/useMessage.js","webpack://lida/./node_modules/antd/es/message/index.js","webpack://lida/./node_modules/antd/es/skeleton/Element.js","webpack://lida/./node_modules/antd/es/skeleton/style/index.js","webpack://lida/./node_modules/antd/es/skeleton/Avatar.js","webpack://lida/./node_modules/antd/es/skeleton/Button.js","webpack://lida/./node_modules/antd/es/skeleton/Image.js","webpack://lida/./node_modules/antd/es/skeleton/Input.js","webpack://lida/./node_modules/@ant-design/icons-svg/es/asn/DotChartOutlined.js","webpack://lida/./node_modules/@ant-design/icons/es/icons/DotChartOutlined.js","webpack://lida/./node_modules/antd/es/skeleton/Node.js","webpack://lida/./node_modules/antd/es/skeleton/Paragraph.js","webpack://lida/./node_modules/antd/es/skeleton/Title.js","webpack://lida/./node_modules/antd/es/skeleton/Skeleton.js","webpack://lida/./node_modules/antd/es/skeleton/index.js","webpack://lida/./node_modules/@heroicons/react/24/outline/esm/ChatBubbleOvalLeftIcon.js","webpack://lida/./node_modules/@heroicons/react/24/outline/esm/HashtagIcon.js","webpack://lida/./node_modules/@heroicons/react/24/outline/esm/CalendarDaysIcon.js","webpack://lida/./node_modules/@heroicons/react/24/outline/esm/TagIcon.js","webpack://lida/./node_modules/@heroicons/react/24/outline/esm/DocumentChartBarIcon.js","webpack://lida/./node_modules/@heroicons/react/24/outline/esm/ClipboardDocumentIcon.js","webpack://lida/./node_modules/antd/es/_util/ActionButton.js","webpack://lida/./node_modules/rc-dialog/es/util.js","webpack://lida/./node_modules/rc-dialog/es/Dialog/Content/MemoChildren.js","webpack://lida/./node_modules/rc-dialog/es/Dialog/Content/Panel.js","webpack://lida/./node_modules/rc-dialog/es/Dialog/Content/index.js","webpack://lida/./node_modules/rc-dialog/es/Dialog/Mask.js","webpack://lida/./node_modules/rc-dialog/es/Dialog/index.js","webpack://lida/./node_modules/rc-dialog/es/DialogWrap.js","webpack://lida/./node_modules/rc-dialog/es/index.js","webpack://lida/./node_modules/antd/es/_util/styleChecker.js","webpack://lida/./node_modules/rc-field-form/es/FieldContext.js","webpack://lida/./node_modules/rc-field-form/es/ListContext.js","webpack://lida/./node_modules/rc-field-form/es/utils/typeUtil.js","webpack://lida/./node_modules/async-validator/dist-web/index.js","webpack://lida/./node_modules/rc-field-form/es/utils/messages.js","webpack://lida/./node_modules/rc-field-form/es/utils/validateUtil.js","webpack://lida/./node_modules/rc-field-form/es/utils/valueUtil.js","webpack://lida/./node_modules/rc-field-form/es/Field.js","webpack://lida/./node_modules/rc-field-form/es/List.js","webpack://lida/./node_modules/rc-field-form/es/utils/NameMap.js","webpack://lida/./node_modules/rc-field-form/es/useForm.js","webpack://lida/./node_modules/rc-field-form/es/utils/asyncUtil.js","webpack://lida/./node_modules/rc-field-form/es/FormContext.js","webpack://lida/./node_modules/rc-field-form/es/Form.js","webpack://lida/./node_modules/rc-field-form/es/useWatch.js","webpack://lida/./node_modules/rc-field-form/es/index.js","webpack://lida/./node_modules/antd/es/form/context.js","webpack://lida/./node_modules/antd/es/modal/shared.js","webpack://lida/./node_modules/antd/es/modal/style/index.js","webpack://lida/./node_modules/antd/es/modal/Modal.js","webpack://lida/./node_modules/antd/es/_util/hooks/useClosable.js","webpack://lida/./node_modules/antd/es/modal/ConfirmDialog.js","webpack://lida/./node_modules/antd/es/modal/destroyFns.js","webpack://lida/./node_modules/antd/es/modal/confirm.js","webpack://lida/./node_modules/antd/es/_util/PurePanel.js","webpack://lida/./node_modules/antd/es/modal/PurePanel.js","webpack://lida/./node_modules/antd/es/modal/useModal/HookModal.js","webpack://lida/./node_modules/antd/es/modal/useModal/index.js","webpack://lida/./node_modules/antd/es/_util/hooks/usePatchElement.js","webpack://lida/./node_modules/antd/es/modal/index.js","webpack://lida/./src/components/views/generate/upload/summary.tsx","webpack://lida/./src/components/views/generate/upload/samples.tsx","webpack://lida/./node_modules/@heroicons/react/24/outline/esm/BookmarkSquareIcon.js","webpack://lida/./src/components/views/generate/upload/goal.tsx","webpack://lida/./node_modules/@heroicons/react/24/outline/esm/Cog6ToothIcon.js","webpack://lida/./node_modules/@heroicons/react/24/outline/esm/PaperAirplaneIcon.js","webpack://lida/./node_modules/antd/es/_util/extendsObject.js","webpack://lida/./node_modules/antd/es/_util/responsiveObserver.js","webpack://lida/./node_modules/antd/es/empty/empty.js","webpack://lida/./node_modules/antd/es/empty/simple.js","webpack://lida/./node_modules/antd/es/empty/style/index.js","webpack://lida/./node_modules/antd/es/empty/index.js","webpack://lida/./node_modules/antd/es/config-provider/defaultRenderEmpty.js","webpack://lida/./node_modules/antd/es/_util/hooks/useFlexGapSupport.js","webpack://lida/./node_modules/antd/es/grid/RowContext.js","webpack://lida/./node_modules/antd/es/grid/style/index.js","webpack://lida/./node_modules/antd/es/grid/row.js","webpack://lida/./node_modules/antd/es/grid/hooks/useBreakpoint.js","webpack://lida/./node_modules/@ant-design/icons-svg/es/asn/DoubleLeftOutlined.js","webpack://lida/./node_modules/@ant-design/icons/es/icons/DoubleLeftOutlined.js","webpack://lida/./node_modules/@ant-design/icons-svg/es/asn/DoubleRightOutlined.js","webpack://lida/./node_modules/@ant-design/icons/es/icons/DoubleRightOutlined.js","webpack://lida/./node_modules/@ant-design/icons-svg/es/asn/LeftOutlined.js","webpack://lida/./node_modules/@ant-design/icons/es/icons/LeftOutlined.js","webpack://lida/./node_modules/rc-pagination/es/KeyCode.js","webpack://lida/./node_modules/rc-pagination/es/Options.js","webpack://lida/./node_modules/rc-pagination/es/Pager.js","webpack://lida/./node_modules/rc-pagination/es/Pagination.js","webpack://lida/./node_modules/rc-pagination/es/locale/zh_CN.js","webpack://lida/./node_modules/rc-select/es/hooks/useBaseProps.js","webpack://lida/./node_modules/rc-select/es/hooks/useLock.js","webpack://lida/./node_modules/rc-overflow/es/Item.js","webpack://lida/./node_modules/rc-overflow/es/hooks/useEffectState.js","webpack://lida/./node_modules/rc-overflow/es/hooks/channelUpdate.js","webpack://lida/./node_modules/rc-overflow/es/context.js","webpack://lida/./node_modules/rc-overflow/es/RawItem.js","webpack://lida/./node_modules/rc-overflow/es/Overflow.js","webpack://lida/./node_modules/rc-overflow/es/index.js","webpack://lida/./node_modules/rc-select/es/TransBtn.js","webpack://lida/./node_modules/rc-select/es/Selector/Input.js","webpack://lida/./node_modules/rc-select/es/utils/commonUtil.js","webpack://lida/./node_modules/rc-select/es/Selector/MultipleSelector.js","webpack://lida/./node_modules/rc-select/es/hooks/useLayoutEffect.js","webpack://lida/./node_modules/rc-select/es/Selector/SingleSelector.js","webpack://lida/./node_modules/rc-select/es/Selector/index.js","webpack://lida/./node_modules/rc-select/es/utils/keyUtil.js","webpack://lida/./node_modules/rc-select/es/SelectTrigger.js","webpack://lida/./node_modules/rc-select/es/utils/valueUtil.js","webpack://lida/./node_modules/rc-select/es/BaseSelect.js","webpack://lida/./node_modules/rc-select/es/hooks/useDelayReset.js","webpack://lida/./node_modules/rc-select/es/hooks/useSelectTriggerControl.js","webpack://lida/./node_modules/rc-select/es/hooks/useAllowClear.js","webpack://lida/./node_modules/rc-select/es/hooks/useFilterOptions.js","webpack://lida/./node_modules/rc-select/es/hooks/useId.js","webpack://lida/./node_modules/rc-select/es/utils/legacyUtil.js","webpack://lida/./node_modules/rc-select/es/hooks/useRefFunc.js","webpack://lida/./node_modules/rc-select/es/OptGroup.js","webpack://lida/./node_modules/rc-select/es/Option.js","webpack://lida/./node_modules/rc-virtual-list/es/Filler.js","webpack://lida/./node_modules/rc-virtual-list/es/ScrollBar.js","webpack://lida/./node_modules/rc-virtual-list/es/Item.js","webpack://lida/./node_modules/rc-virtual-list/es/utils/CacheMap.js","webpack://lida/./node_modules/rc-virtual-list/es/hooks/useDiffItem.js","webpack://lida/./node_modules/rc-virtual-list/es/utils/algorithmUtil.js","webpack://lida/./node_modules/rc-virtual-list/es/utils/isFirefox.js","webpack://lida/./node_modules/rc-virtual-list/es/hooks/useOriginScroll.js","webpack://lida/./node_modules/rc-virtual-list/es/hooks/useMobileTouchMove.js","webpack://lida/./node_modules/rc-virtual-list/es/List.js","webpack://lida/./node_modules/rc-virtual-list/es/hooks/useHeights.js","webpack://lida/./node_modules/rc-virtual-list/es/hooks/useFrameWheel.js","webpack://lida/./node_modules/rc-virtual-list/es/hooks/useScrollTo.js","webpack://lida/./node_modules/rc-virtual-list/es/hooks/useChildren.js","webpack://lida/./node_modules/rc-virtual-list/es/index.js","webpack://lida/./node_modules/rc-select/es/SelectContext.js","webpack://lida/./node_modules/rc-select/es/OptionList.js","webpack://lida/./node_modules/rc-select/es/utils/platformUtil.js","webpack://lida/./node_modules/rc-select/es/utils/warningPropsUtil.js","webpack://lida/./node_modules/rc-select/es/Select.js","webpack://lida/./node_modules/rc-select/es/hooks/useOptions.js","webpack://lida/./node_modules/rc-select/es/hooks/useCache.js","webpack://lida/./node_modules/rc-select/es/index.js","webpack://lida/./node_modules/antd/es/_util/statusUtils.js","webpack://lida/./node_modules/antd/es/style/motion/slide.js","webpack://lida/./node_modules/antd/es/style/motion/move.js","webpack://lida/./node_modules/antd/es/select/style/dropdown.js","webpack://lida/./node_modules/antd/es/select/style/multiple.js","webpack://lida/./node_modules/antd/es/select/style/single.js","webpack://lida/./node_modules/antd/es/select/style/index.js","webpack://lida/./node_modules/antd/es/select/useBuiltinPlacements.js","webpack://lida/./node_modules/@ant-design/icons-svg/es/asn/DownOutlined.js","webpack://lida/./node_modules/@ant-design/icons/es/icons/DownOutlined.js","webpack://lida/./node_modules/@ant-design/icons-svg/es/asn/SearchOutlined.js","webpack://lida/./node_modules/@ant-design/icons/es/icons/SearchOutlined.js","webpack://lida/./node_modules/antd/es/select/index.js","webpack://lida/./node_modules/antd/es/select/useShowArrow.js","webpack://lida/./node_modules/antd/es/select/utils/iconUtil.js","webpack://lida/./node_modules/antd/es/pagination/Select.js","webpack://lida/./node_modules/antd/es/input/style/index.js","webpack://lida/./node_modules/antd/es/pagination/style/index.js","webpack://lida/./node_modules/antd/es/pagination/Pagination.js","webpack://lida/./node_modules/antd/es/pagination/index.js","webpack://lida/./node_modules/throttle-debounce/esm/index.js","webpack://lida/./node_modules/antd/es/spin/style/index.js","webpack://lida/./node_modules/antd/es/spin/index.js","webpack://lida/./node_modules/antd/es/grid/col.js","webpack://lida/./node_modules/antd/es/list/context.js","webpack://lida/./node_modules/antd/es/list/Item.js","webpack://lida/./node_modules/antd/es/list/style/index.js","webpack://lida/./node_modules/antd/es/list/index.js","webpack://lida/./node_modules/@heroicons/react/24/outline/esm/ChatBubbleLeftEllipsisIcon.js","webpack://lida/./node_modules/@heroicons/react/24/outline/esm/ArchiveBoxXMarkIcon.js","webpack://lida/./node_modules/@ant-design/icons-svg/es/asn/EllipsisOutlined.js","webpack://lida/./node_modules/@ant-design/icons/es/icons/EllipsisOutlined.js","webpack://lida/./node_modules/@ant-design/icons-svg/es/asn/PlusOutlined.js","webpack://lida/./node_modules/@ant-design/icons/es/icons/PlusOutlined.js","webpack://lida/./node_modules/rc-tabs/es/TabContext.js","webpack://lida/./node_modules/rc-tabs/es/TabPanelList/TabPane.js","webpack://lida/./node_modules/rc-tabs/es/TabPanelList/index.js","webpack://lida/./node_modules/rc-tabs/es/hooks/useOffsets.js","webpack://lida/./node_modules/rc-tabs/es/hooks/useSyncState.js","webpack://lida/./node_modules/rc-tabs/es/hooks/useTouchMove.js","webpack://lida/./node_modules/rc-tabs/es/hooks/useUpdate.js","webpack://lida/./node_modules/rc-tabs/es/hooks/useVisibleRange.js","webpack://lida/./node_modules/rc-tabs/es/util.js","webpack://lida/./node_modules/rc-tabs/es/TabNavList/AddButton.js","webpack://lida/./node_modules/rc-tabs/es/TabNavList/ExtraContent.js","webpack://lida/./node_modules/rc-dropdown/es/hooks/useAccessibility.js","webpack://lida/./node_modules/rc-dropdown/es/Overlay.js","webpack://lida/./node_modules/rc-dropdown/es/placements.js","webpack://lida/./node_modules/rc-dropdown/es/Dropdown.js","webpack://lida/./node_modules/rc-dropdown/es/index.js","webpack://lida/./node_modules/rc-menu/es/context/IdContext.js","webpack://lida/./node_modules/rc-menu/es/context/MenuContext.js","webpack://lida/./node_modules/rc-menu/es/context/PathContext.js","webpack://lida/./node_modules/rc-menu/es/context/PrivateContext.js","webpack://lida/./node_modules/rc-util/es/Dom/focus.js","webpack://lida/./node_modules/rc-menu/es/hooks/useAccessibility.js","webpack://lida/./node_modules/rc-menu/es/hooks/useKeyRecords.js","webpack://lida/./node_modules/rc-menu/es/utils/timeUtil.js","webpack://lida/./node_modules/rc-menu/es/hooks/useMemoCallback.js","webpack://lida/./node_modules/rc-menu/es/hooks/useUUID.js","webpack://lida/./node_modules/rc-menu/es/hooks/useActive.js","webpack://lida/./node_modules/rc-menu/es/hooks/useDirectionStyle.js","webpack://lida/./node_modules/rc-menu/es/Icon.js","webpack://lida/./node_modules/rc-menu/es/utils/warnUtil.js","webpack://lida/./node_modules/rc-menu/es/MenuItem.js","webpack://lida/./node_modules/rc-menu/es/SubMenu/SubMenuList.js","webpack://lida/./node_modules/rc-menu/es/utils/commonUtil.js","webpack://lida/./node_modules/rc-menu/es/placements.js","webpack://lida/./node_modules/rc-menu/es/utils/motionUtil.js","webpack://lida/./node_modules/rc-menu/es/SubMenu/PopupTrigger.js","webpack://lida/./node_modules/rc-menu/es/SubMenu/InlineSubMenuList.js","webpack://lida/./node_modules/rc-menu/es/SubMenu/index.js","webpack://lida/./node_modules/rc-menu/es/MenuItemGroup.js","webpack://lida/./node_modules/rc-menu/es/Divider.js","webpack://lida/./node_modules/rc-menu/es/utils/nodeUtil.js","webpack://lida/./node_modules/rc-menu/es/Menu.js","webpack://lida/./node_modules/rc-menu/es/index.js","webpack://lida/./node_modules/rc-tabs/es/TabNavList/OperationNode.js","webpack://lida/./node_modules/rc-tabs/es/TabNavList/TabNode.js","webpack://lida/./node_modules/rc-tabs/es/TabNavList/index.js","webpack://lida/./node_modules/rc-tabs/es/TabNavList/Wrapper.js","webpack://lida/./node_modules/rc-tabs/es/Tabs.js","webpack://lida/./node_modules/rc-tabs/es/hooks/useAnimateConfig.js","webpack://lida/./node_modules/rc-tabs/es/index.js","webpack://lida/./node_modules/antd/es/tabs/TabPane.js","webpack://lida/./node_modules/antd/es/tabs/hooks/useAnimateConfig.js","webpack://lida/./node_modules/antd/es/tabs/hooks/useLegacyItems.js","webpack://lida/./node_modules/antd/es/tabs/style/motion.js","webpack://lida/./node_modules/antd/es/tabs/style/index.js","webpack://lida/./node_modules/antd/es/tabs/index.js","webpack://lida/./node_modules/react-vega/esm/utils/shallowEqual.js","webpack://lida/./node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://lida/./node_modules/fast-json-patch/module/helpers.mjs","webpack://lida/./node_modules/fast-json-patch/module/core.mjs","webpack://lida/./node_modules/fast-json-patch/module/duplex.mjs","webpack://lida/./node_modules/fast-json-patch/index.mjs","webpack://lida/./node_modules/vega-util/build/vega-util.module.js","webpack://lida/./node_modules/d3-dsv/src/dsv.js","webpack://lida/./node_modules/topojson-client/src/identity.js","webpack://lida/./node_modules/topojson-client/src/feature.js","webpack://lida/./node_modules/topojson-client/src/transform.js","webpack://lida/./node_modules/topojson-client/src/reverse.js","webpack://lida/./node_modules/topojson-client/src/stitch.js","webpack://lida/./node_modules/topojson-client/src/mesh.js","webpack://lida/./node_modules/d3-array/src/ticks.js","webpack://lida/./node_modules/vega-format/node_modules/d3-format/src/formatSpecifier.js","webpack://lida/./node_modules/vega-format/node_modules/d3-format/src/formatPrefixAuto.js","webpack://lida/./node_modules/vega-format/node_modules/d3-format/src/formatDecimal.js","webpack://lida/./node_modules/vega-format/node_modules/d3-format/src/exponent.js","webpack://lida/./node_modules/vega-format/node_modules/d3-format/src/formatRounded.js","webpack://lida/./node_modules/vega-format/node_modules/d3-format/src/formatTypes.js","webpack://lida/./node_modules/vega-format/node_modules/d3-format/src/identity.js","webpack://lida/./node_modules/vega-format/node_modules/d3-format/src/locale.js","webpack://lida/./node_modules/vega-format/node_modules/d3-format/src/defaultLocale.js","webpack://lida/./node_modules/vega-format/node_modules/d3-format/src/formatGroup.js","webpack://lida/./node_modules/vega-format/node_modules/d3-format/src/formatNumerals.js","webpack://lida/./node_modules/vega-format/node_modules/d3-format/src/formatTrim.js","webpack://lida/./node_modules/d3-time/src/interval.js","webpack://lida/./node_modules/d3-time/src/duration.js","webpack://lida/./node_modules/d3-time/src/day.js","webpack://lida/./node_modules/d3-time/src/week.js","webpack://lida/./node_modules/d3-time/src/year.js","webpack://lida/./node_modules/d3-time/src/month.js","webpack://lida/./node_modules/d3-time/src/hour.js","webpack://lida/./node_modules/d3-time/src/minute.js","webpack://lida/./node_modules/d3-time/src/second.js","webpack://lida/./node_modules/d3-time/src/millisecond.js","webpack://lida/./node_modules/vega-time/build/vega-time.module.js","webpack://lida/./node_modules/d3-array/src/ascending.js","webpack://lida/./node_modules/d3-array/src/descending.js","webpack://lida/./node_modules/d3-array/src/bisector.js","webpack://lida/./node_modules/vega-format/node_modules/d3-time-format/src/locale.js","webpack://lida/./node_modules/vega-format/node_modules/d3-time-format/src/defaultLocale.js","webpack://lida/./node_modules/vega-format/build/vega-format.module.js","webpack://lida/./node_modules/vega-format/node_modules/d3-format/src/precisionPrefix.js","webpack://lida/./node_modules/vega-format/node_modules/d3-format/src/precisionRound.js","webpack://lida/./node_modules/vega-format/node_modules/d3-format/src/precisionFixed.js","webpack://lida/./node_modules/vega-dataflow/node_modules/vega-loader/build/vega-loader.browser.module.js","webpack://lida/./node_modules/vega-dataflow/build/vega-dataflow.module.js","webpack://lida/./node_modules/d3-array/src/max.js","webpack://lida/./node_modules/d3-array/src/min.js","webpack://lida/./node_modules/d3-array/src/sort.js","webpack://lida/./node_modules/d3-array/src/quickselect.js","webpack://lida/./node_modules/d3-array/src/number.js","webpack://lida/./node_modules/d3-array/src/quantile.js","webpack://lida/./node_modules/d3-array/src/variance.js","webpack://lida/./node_modules/d3-array/src/deviation.js","webpack://lida/./node_modules/d3-array/src/median.js","webpack://lida/./node_modules/vega-statistics/build/vega-statistics.module.js","webpack://lida/./node_modules/d3-array/src/mean.js","webpack://lida/./node_modules/d3-array/src/range.js","webpack://lida/./node_modules/vega/node_modules/vega-transforms/build/vega-transforms.module.js","webpack://lida/./node_modules/d3-shape/src/curve/basis.js","webpack://lida/./node_modules/d3-shape/src/noop.js","webpack://lida/./node_modules/d3-shape/src/curve/basisClosed.js","webpack://lida/./node_modules/d3-shape/src/curve/basisOpen.js","webpack://lida/./node_modules/d3-shape/src/curve/bundle.js","webpack://lida/./node_modules/d3-shape/src/curve/cardinal.js","webpack://lida/./node_modules/d3-shape/src/curve/cardinalOpen.js","webpack://lida/./node_modules/d3-shape/src/curve/cardinalClosed.js","webpack://lida/./node_modules/d3-shape/src/math.js","webpack://lida/./node_modules/d3-shape/src/curve/catmullRom.js","webpack://lida/./node_modules/d3-shape/src/curve/catmullRomClosed.js","webpack://lida/./node_modules/d3-shape/src/curve/catmullRomOpen.js","webpack://lida/./node_modules/d3-path/src/path.js","webpack://lida/./node_modules/d3-shape/src/curve/linear.js","webpack://lida/./node_modules/d3-shape/src/curve/linearClosed.js","webpack://lida/./node_modules/d3-shape/src/curve/monotone.js","webpack://lida/./node_modules/d3-shape/src/curve/natural.js","webpack://lida/./node_modules/d3-shape/src/curve/step.js","webpack://lida/./node_modules/d3-shape/src/constant.js","webpack://lida/./node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","webpack://lida/./node_modules/d3-shape/src/path.js","webpack://lida/./node_modules/d3-shape/src/arc.js","webpack://lida/./node_modules/d3-shape/src/array.js","webpack://lida/./node_modules/d3-shape/src/point.js","webpack://lida/./node_modules/d3-shape/src/line.js","webpack://lida/./node_modules/d3-shape/src/area.js","webpack://lida/./node_modules/d3-shape/src/symbol/asterisk.js","webpack://lida/./node_modules/d3-shape/src/symbol/circle.js","webpack://lida/./node_modules/d3-shape/src/symbol/star.js","webpack://lida/./node_modules/d3-shape/src/symbol/diamond.js","webpack://lida/./node_modules/d3-shape/src/symbol/triangle.js","webpack://lida/./node_modules/d3-shape/src/symbol/triangle2.js","webpack://lida/./node_modules/d3-shape/src/symbol/wye.js","webpack://lida/./node_modules/vega-canvas/build/vega-canvas.browser.module.js","webpack://lida/./node_modules/vega-scenegraph/node_modules/vega-loader/build/vega-loader.browser.module.js","webpack://lida/./node_modules/d3-array/src/bisect.js","webpack://lida/./node_modules/d3-interpolate/src/round.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-scale/src/number.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-scale/src/continuous.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-scale/src/constant.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-scale/src/init.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-format/src/formatSpecifier.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-format/src/formatPrefixAuto.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-format/src/formatDecimal.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-format/src/exponent.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-format/src/formatRounded.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-format/src/formatTypes.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-format/src/identity.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-format/src/locale.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-format/src/defaultLocale.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-format/src/formatGroup.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-format/src/formatNumerals.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-format/src/formatTrim.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-scale/src/tickFormat.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-format/src/precisionPrefix.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-format/src/precisionRound.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-format/src/precisionFixed.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-scale/src/linear.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-scale/src/nice.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-scale/src/log.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-scale/src/pow.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-scale/src/symlog.js","webpack://lida/./node_modules/d3-time/src/ticks.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-time-format/src/locale.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-time-format/src/defaultLocale.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-scale/src/time.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-scale/src/sequential.js","webpack://lida/./node_modules/d3-interpolate/src/piecewise.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-scale/src/diverging.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-scale/src/quantile.js","webpack://lida/./node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/get.js","webpack://lida/./node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/superPropBase.js","webpack://lida/./node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/construct.js","webpack://lida/./node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","webpack://lida/./node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","webpack://lida/./node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","webpack://lida/./node_modules/internmap/src/index.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-scale/src/ordinal.js","webpack://lida/./node_modules/d3-interpolate/src/discrete.js","webpack://lida/./node_modules/d3-interpolate/src/hue.js","webpack://lida/./node_modules/d3-interpolate/src/transform/parse.js","webpack://lida/./node_modules/d3-interpolate/src/transform/decompose.js","webpack://lida/./node_modules/d3-interpolate/src/transform/index.js","webpack://lida/./node_modules/d3-interpolate/src/zoom.js","webpack://lida/./node_modules/d3-interpolate/src/hsl.js","webpack://lida/./node_modules/d3-color/src/math.js","webpack://lida/./node_modules/d3-color/src/lab.js","webpack://lida/./node_modules/d3-interpolate/src/lab.js","webpack://lida/./node_modules/d3-interpolate/src/hcl.js","webpack://lida/./node_modules/d3-color/src/cubehelix.js","webpack://lida/./node_modules/d3-interpolate/src/cubehelix.js","webpack://lida/./node_modules/vega-scale/build/vega-scale.module.js","webpack://lida/./node_modules/d3-interpolate/src/quantize.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-scale/src/identity.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-scale/src/utcTime.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-scale/src/quantize.js","webpack://lida/./node_modules/vega-scale/node_modules/d3-scale/src/threshold.js","webpack://lida/./node_modules/vega-scenegraph/build/vega-scenegraph.module.js","webpack://lida/./node_modules/d3-shape/src/symbol.js","webpack://lida/./node_modules/vega/node_modules/vega-view-transforms/build/vega-view-transforms.module.js","webpack://lida/./node_modules/d3-array/src/sum.js","webpack://lida/./node_modules/vega/node_modules/vega-encode/build/vega-encode.module.js","webpack://lida/./node_modules/d3-geo/src/identity.js","webpack://lida/./node_modules/d3-geo/src/stream.js","webpack://lida/./node_modules/d3-array/src/fsum.js","webpack://lida/./node_modules/d3-geo/src/math.js","webpack://lida/./node_modules/d3-geo/src/noop.js","webpack://lida/./node_modules/d3-geo/src/path/area.js","webpack://lida/./node_modules/d3-geo/src/path/bounds.js","webpack://lida/./node_modules/d3-geo/src/path/centroid.js","webpack://lida/./node_modules/d3-geo/src/path/context.js","webpack://lida/./node_modules/d3-geo/src/path/measure.js","webpack://lida/./node_modules/d3-geo/src/path/string.js","webpack://lida/./node_modules/d3-geo/src/path/index.js","webpack://lida/./node_modules/d3-geo/src/clip/buffer.js","webpack://lida/./node_modules/d3-geo/src/pointEqual.js","webpack://lida/./node_modules/d3-geo/src/clip/rejoin.js","webpack://lida/./node_modules/d3-geo/src/cartesian.js","webpack://lida/./node_modules/d3-geo/src/polygonContains.js","webpack://lida/./node_modules/d3-array/src/merge.js","webpack://lida/./node_modules/d3-geo/src/clip/index.js","webpack://lida/./node_modules/d3-geo/src/clip/antimeridian.js","webpack://lida/./node_modules/d3-geo/src/circle.js","webpack://lida/./node_modules/d3-geo/src/clip/rectangle.js","webpack://lida/./node_modules/d3-geo/src/clip/line.js","webpack://lida/./node_modules/d3-geo/src/compose.js","webpack://lida/./node_modules/d3-geo/src/rotation.js","webpack://lida/./node_modules/d3-geo/src/transform.js","webpack://lida/./node_modules/d3-geo/src/projection/fit.js","webpack://lida/./node_modules/d3-geo/src/projection/resample.js","webpack://lida/./node_modules/d3-geo/src/projection/index.js","webpack://lida/./node_modules/d3-geo/src/clip/circle.js","webpack://lida/./node_modules/d3-geo/src/projection/conic.js","webpack://lida/./node_modules/d3-geo/src/projection/conicEqualArea.js","webpack://lida/./node_modules/d3-geo/src/projection/cylindricalEqualArea.js","webpack://lida/./node_modules/d3-geo/src/projection/albers.js","webpack://lida/./node_modules/d3-geo/src/projection/azimuthal.js","webpack://lida/./node_modules/d3-geo/src/projection/azimuthalEqualArea.js","webpack://lida/./node_modules/d3-geo/src/projection/azimuthalEquidistant.js","webpack://lida/./node_modules/d3-geo/src/projection/mercator.js","webpack://lida/./node_modules/d3-geo/src/projection/conicConformal.js","webpack://lida/./node_modules/d3-geo/src/projection/equirectangular.js","webpack://lida/./node_modules/d3-geo/src/projection/conicEquidistant.js","webpack://lida/./node_modules/d3-geo/src/projection/equalEarth.js","webpack://lida/./node_modules/d3-geo/src/projection/gnomonic.js","webpack://lida/./node_modules/d3-geo/src/projection/naturalEarth1.js","webpack://lida/./node_modules/d3-geo/src/projection/orthographic.js","webpack://lida/./node_modules/d3-geo/src/projection/stereographic.js","webpack://lida/./node_modules/d3-geo/src/projection/transverseMercator.js","webpack://lida/./node_modules/d3-geo-projection/src/math.js","webpack://lida/./node_modules/d3-geo-projection/src/mollweide.js","webpack://lida/./node_modules/vega-projection/build/vega-projection.module.js","webpack://lida/./node_modules/d3-geo/src/projection/albersUsa.js","webpack://lida/./node_modules/d3-geo/src/projection/identity.js","webpack://lida/./node_modules/d3-geo/src/graticule.js","webpack://lida/./node_modules/vega/node_modules/vega-geo/build/vega-geo.module.js","webpack://lida/./node_modules/vega/node_modules/d3-quadtree/src/add.js","webpack://lida/./node_modules/vega/node_modules/d3-quadtree/src/quad.js","webpack://lida/./node_modules/vega/node_modules/d3-quadtree/src/x.js","webpack://lida/./node_modules/vega/node_modules/d3-quadtree/src/y.js","webpack://lida/./node_modules/vega/node_modules/d3-quadtree/src/quadtree.js","webpack://lida/./node_modules/vega/node_modules/d3-force/src/constant.js","webpack://lida/./node_modules/vega/node_modules/d3-force/src/jiggle.js","webpack://lida/./node_modules/vega/node_modules/d3-force/src/collide.js","webpack://lida/./node_modules/vega/node_modules/d3-quadtree/src/cover.js","webpack://lida/./node_modules/vega/node_modules/d3-quadtree/src/data.js","webpack://lida/./node_modules/vega/node_modules/d3-quadtree/src/extent.js","webpack://lida/./node_modules/vega/node_modules/d3-quadtree/src/find.js","webpack://lida/./node_modules/vega/node_modules/d3-quadtree/src/remove.js","webpack://lida/./node_modules/vega/node_modules/d3-quadtree/src/root.js","webpack://lida/./node_modules/vega/node_modules/d3-quadtree/src/size.js","webpack://lida/./node_modules/vega/node_modules/d3-quadtree/src/visit.js","webpack://lida/./node_modules/vega/node_modules/d3-quadtree/src/visitAfter.js","webpack://lida/./node_modules/d3-dispatch/src/dispatch.js","webpack://lida/./node_modules/d3-timer/src/timer.js","webpack://lida/./node_modules/vega/node_modules/d3-force/src/lcg.js","webpack://lida/./node_modules/vega/node_modules/d3-force/src/simulation.js","webpack://lida/./node_modules/vega/node_modules/d3-force/src/link.js","webpack://lida/./node_modules/vega/node_modules/vega-force/build/vega-force.module.js","webpack://lida/./node_modules/vega/node_modules/d3-force/src/center.js","webpack://lida/./node_modules/vega/node_modules/d3-force/src/manyBody.js","webpack://lida/./node_modules/vega/node_modules/d3-force/src/x.js","webpack://lida/./node_modules/vega/node_modules/d3-force/src/y.js","webpack://lida/./node_modules/d3-hierarchy/src/hierarchy/count.js","webpack://lida/./node_modules/d3-hierarchy/src/hierarchy/each.js","webpack://lida/./node_modules/d3-hierarchy/src/hierarchy/find.js","webpack://lida/./node_modules/d3-hierarchy/src/hierarchy/iterator.js","webpack://lida/./node_modules/d3-hierarchy/src/hierarchy/index.js","webpack://lida/./node_modules/d3-hierarchy/src/accessors.js","webpack://lida/./node_modules/d3-hierarchy/src/constant.js","webpack://lida/./node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","webpack://lida/./node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","webpack://lida/./node_modules/d3-hierarchy/src/hierarchy/sum.js","webpack://lida/./node_modules/d3-hierarchy/src/hierarchy/sort.js","webpack://lida/./node_modules/d3-hierarchy/src/hierarchy/path.js","webpack://lida/./node_modules/d3-hierarchy/src/hierarchy/ancestors.js","webpack://lida/./node_modules/d3-hierarchy/src/hierarchy/descendants.js","webpack://lida/./node_modules/d3-hierarchy/src/hierarchy/leaves.js","webpack://lida/./node_modules/d3-hierarchy/src/hierarchy/links.js","webpack://lida/./node_modules/d3-hierarchy/src/lcg.js","webpack://lida/./node_modules/d3-hierarchy/src/pack/enclose.js","webpack://lida/./node_modules/d3-hierarchy/src/array.js","webpack://lida/./node_modules/d3-hierarchy/src/pack/siblings.js","webpack://lida/./node_modules/d3-hierarchy/src/pack/index.js","webpack://lida/./node_modules/d3-hierarchy/src/treemap/round.js","webpack://lida/./node_modules/d3-hierarchy/src/treemap/dice.js","webpack://lida/./node_modules/d3-hierarchy/src/stratify.js","webpack://lida/./node_modules/d3-hierarchy/src/tree.js","webpack://lida/./node_modules/d3-hierarchy/src/cluster.js","webpack://lida/./node_modules/d3-hierarchy/src/treemap/slice.js","webpack://lida/./node_modules/d3-hierarchy/src/treemap/squarify.js","webpack://lida/./node_modules/d3-hierarchy/src/treemap/resquarify.js","webpack://lida/./node_modules/vega/node_modules/vega-hierarchy/build/vega-hierarchy.module.js","webpack://lida/./node_modules/d3-hierarchy/src/partition.js","webpack://lida/./node_modules/d3-hierarchy/src/treemap/binary.js","webpack://lida/./node_modules/d3-hierarchy/src/treemap/sliceDice.js","webpack://lida/./node_modules/vega-label/build/vega-label.module.js","webpack://lida/./node_modules/d3-hierarchy/src/treemap/index.js","webpack://lida/./node_modules/vega-regression/build/vega-regression.module.js","webpack://lida/./node_modules/robust-predicates/esm/util.js","webpack://lida/./node_modules/robust-predicates/esm/orient2d.js","webpack://lida/./node_modules/robust-predicates/esm/orient3d.js","webpack://lida/./node_modules/robust-predicates/esm/incircle.js","webpack://lida/./node_modules/robust-predicates/esm/insphere.js","webpack://lida/./node_modules/delaunator/index.js","webpack://lida/./node_modules/d3-delaunay/src/path.js","webpack://lida/./node_modules/d3-delaunay/src/polygon.js","webpack://lida/./node_modules/d3-delaunay/src/voronoi.js","webpack://lida/./node_modules/d3-delaunay/src/delaunay.js","webpack://lida/./node_modules/vega/node_modules/vega-voronoi/build/vega-voronoi.module.js","webpack://lida/./node_modules/vega/node_modules/vega-wordcloud/build/vega-wordcloud.module.js","webpack://lida/./node_modules/vega/node_modules/vega-crossfilter/build/vega-crossfilter.module.js","webpack://lida/./node_modules/d3-array/src/permute.js","webpack://lida/./node_modules/vega/node_modules/vega-loader/build/vega-loader.browser.module.js","webpack://lida/./node_modules/vega-expression/build/vega-expression.module.js","webpack://lida/./node_modules/d3-geo/src/area.js","webpack://lida/./node_modules/d3-geo/src/bounds.js","webpack://lida/./node_modules/d3-geo/src/centroid.js","webpack://lida/./node_modules/vega-selections/build/vega-selection.module.js","webpack://lida/./node_modules/vega-selections/node_modules/d3-array/src/ascending.js","webpack://lida/./node_modules/vega-selections/node_modules/d3-array/src/descending.js","webpack://lida/./node_modules/vega-selections/node_modules/d3-array/src/bisector.js","webpack://lida/./node_modules/vega-selections/node_modules/d3-array/src/union.js","webpack://lida/./node_modules/vega-selections/node_modules/d3-array/src/intersection.js","webpack://lida/./node_modules/vega-functions/build/vega-functions.module.js","webpack://lida/./node_modules/vega/node_modules/vega-runtime/build/vega-runtime.module.js","webpack://lida/./node_modules/vega/node_modules/vega-view/build/vega-view.module.js","webpack://lida/./node_modules/d3-timer/src/interval.js","webpack://lida/./node_modules/vega-event-selector/build/vega-event-selector.module.js","webpack://lida/./node_modules/vega/node_modules/vega-parser/build/vega-parser.module.js","webpack://lida/./node_modules/vega/build/vega.module.js","webpack://lida/./node_modules/vega-interpreter/build/vega-interpreter.module.js","webpack://lida/./node_modules/vega-lite/build/src/logical.js","webpack://lida/./node_modules/vega-lite/build/src/util.js","webpack://lida/./node_modules/vega-lite/build/src/channel.js","webpack://lida/./node_modules/vega-lite/build/src/aggregate.js","webpack://lida/./node_modules/vega-lite/build/src/bin.js","webpack://lida/./node_modules/vega-lite/build/src/expr.js","webpack://lida/./node_modules/vega-lite/build/src/title.js","webpack://lida/./node_modules/vega-lite/build/src/vega.schema.js","webpack://lida/./node_modules/vega-lite/build/src/compile/common.js","webpack://lida/./node_modules/vega-lite/build/src/log/message.js","webpack://lida/./node_modules/vega-lite/build/src/log/index.js","webpack://lida/./node_modules/vega-lite/build/src/datetime.js","webpack://lida/./node_modules/vega-lite/build/src/timeunit.js","webpack://lida/./node_modules/vega-lite/build/src/predicate.js","webpack://lida/./node_modules/vega-lite/build/src/type.js","webpack://lida/./node_modules/vega-lite/build/src/scale.js","webpack://lida/./node_modules/vega-lite/build/src/mark.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/encode/valueref.js","webpack://lida/./node_modules/vega-lite/build/src/compile/format.js","webpack://lida/./node_modules/vega-lite/build/src/sort.js","webpack://lida/./node_modules/vega-lite/build/src/spec/facet.js","webpack://lida/./node_modules/vega-lite/build/src/channeldef.js","webpack://lida/./node_modules/vega-lite/build/src/axis.js","webpack://lida/./node_modules/vega-lite/build/src/spec/unit.js","webpack://lida/./node_modules/vega-lite/build/src/compositemark/base.js","webpack://lida/./node_modules/vega-lite/build/src/encoding.js","webpack://lida/./node_modules/vega-lite/build/src/compositemark/common.js","webpack://lida/./node_modules/vega-lite/build/src/compositemark/boxplot.js","webpack://lida/./node_modules/vega-lite/build/src/compositemark/errorbar.js","webpack://lida/./node_modules/vega-lite/build/src/compositemark/errorband.js","webpack://lida/./node_modules/vega-lite/build/src/compositemark/index.js","webpack://lida/./node_modules/vega-lite/build/src/guide.js","webpack://lida/./node_modules/vega-lite/build/src/header.js","webpack://lida/./node_modules/vega-lite/build/src/legend.js","webpack://lida/./node_modules/vega-lite/build/src/selection.js","webpack://lida/./node_modules/vega-lite/build/src/parameter.js","webpack://lida/./node_modules/vega-lite/build/src/spec/concat.js","webpack://lida/./node_modules/vega-lite/build/src/spec/base.js","webpack://lida/./node_modules/vega-lite/build/src/config.js","webpack://lida/./node_modules/vega-lite/build/src/spec/layer.js","webpack://lida/./node_modules/vega-lite/build/src/spec/map.js","webpack://lida/./node_modules/vega-lite/build/src/spec/repeat.js","webpack://lida/./node_modules/vega-lite/build/src/stack.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/init.js","webpack://lida/./node_modules/vega-lite/build/src/normalize/pathoverlay.js","webpack://lida/./node_modules/vega-lite/build/src/normalize/repeater.js","webpack://lida/./node_modules/vega-lite/build/src/normalize/ruleforrangedline.js","webpack://lida/./node_modules/vega-lite/build/src/normalize/core.js","webpack://lida/./node_modules/vega-lite/build/src/transform.js","webpack://lida/./node_modules/vega-lite/build/src/normalize/selectioncompat.js","webpack://lida/./node_modules/vega-lite/build/src/normalize/toplevelselection.js","webpack://lida/./node_modules/vega-lite/build/src/normalize/index.js","webpack://lida/./node_modules/vega-lite/build/src/spec/toplevel.js","webpack://lida/./node_modules/vega-lite/build/src/compile/split.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/index.js","webpack://lida/./node_modules/vega-lite/build/src/data.js","webpack://lida/./node_modules/vega-lite/build/src/compile/selection/assemble.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/dataflow.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/timeunit.js","webpack://lida/./node_modules/vega-lite/build/src/compile/selection/project.js","webpack://lida/./node_modules/vega-lite/build/src/compile/selection/scales.js","webpack://lida/./node_modules/vega-lite/build/src/compile/selection/interval.js","webpack://lida/./node_modules/vega-lite/build/src/compile/selection/point.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/encode/conditional.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/encode/text.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/encode/tooltip.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/encode/aria.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/encode/nonposition.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/encode/color.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/encode/offset.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/encode/position-point.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/encode/position-align.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/encode/position-range.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/encode/position-rect.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/encode/base.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/encode/zindex.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/encode/defined.js","webpack://lida/./node_modules/vega-lite/build/src/compile/selection/nearest.js","webpack://lida/./node_modules/vega-lite/build/src/compile/selection/inputs.js","webpack://lida/./node_modules/vega-lite/build/src/compile/selection/toggle.js","webpack://lida/./node_modules/vega-lite/build/src/compile/selection/clear.js","webpack://lida/./node_modules/vega-lite/build/src/compile/selection/legends.js","webpack://lida/./node_modules/vega-lite/build/src/compile/selection/translate.js","webpack://lida/./node_modules/vega-lite/build/src/compile/selection/zoom.js","webpack://lida/./node_modules/vega-lite/build/src/compile/selection/index.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/expressions.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/filter.js","webpack://lida/./node_modules/vega-lite/build/src/compile/selection/parse.js","webpack://lida/./node_modules/vega-lite/build/src/compile/predicate.js","webpack://lida/./node_modules/vega-lite/build/src/compile/axis/assemble.js","webpack://lida/./node_modules/vega-lite/build/src/compile/axis/config.js","webpack://lida/./node_modules/vega-lite/build/src/compile/axis/properties.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/calculate.js","webpack://lida/./node_modules/vega-lite/build/src/compile/header/common.js","webpack://lida/./node_modules/vega-lite/build/src/compile/header/component.js","webpack://lida/./node_modules/vega-lite/build/src/compile/header/assemble.js","webpack://lida/./node_modules/vega-lite/build/src/compile/layoutsize/assemble.js","webpack://lida/./node_modules/vega-lite/build/src/compile/layoutsize/component.js","webpack://lida/./node_modules/vega-lite/build/src/compile/guide.js","webpack://lida/./node_modules/vega-lite/build/src/compile/resolve.js","webpack://lida/./node_modules/vega-lite/build/src/compile/legend/component.js","webpack://lida/./node_modules/vega-lite/build/src/compile/legend/encode.js","webpack://lida/./node_modules/vega-lite/build/src/compile/legend/properties.js","webpack://lida/./node_modules/vega-lite/build/src/compile/legend/parse.js","webpack://lida/./node_modules/vega-lite/build/src/compile/legend/assemble.js","webpack://lida/./node_modules/vega-lite/build/src/compile/projection/assemble.js","webpack://lida/./node_modules/vega-lite/build/src/projection.js","webpack://lida/./node_modules/vega-lite/build/src/compile/projection/component.js","webpack://lida/./node_modules/vega-lite/build/src/compile/projection/parse.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/bin.js","webpack://lida/./node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toArray.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/aggregate.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/facet.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/formatparse.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/identifier.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/graticule.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/sequence.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/source.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/optimizer.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/optimizers.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/joinaggregate.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/stack.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/window.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/subtree.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/optimize.js","webpack://lida/./node_modules/vega-lite/build/src/compile/signal.js","webpack://lida/./node_modules/vega-lite/build/src/compile/scale/domain.js","webpack://lida/./node_modules/vega-lite/build/src/compile/scale/assemble.js","webpack://lida/./node_modules/vega-lite/build/src/compile/scale/component.js","webpack://lida/./node_modules/vega-lite/build/src/compile/scale/range.js","webpack://lida/./node_modules/vega-lite/build/src/compile/scale/properties.js","webpack://lida/./node_modules/vega-lite/build/src/compile/scale/type.js","webpack://lida/./node_modules/vega-lite/build/src/compile/scale/parse.js","webpack://lida/./node_modules/vega-lite/build/src/compile/model.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/density.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/extent.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/filterinvalid.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/flatten.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/fold.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/geojson.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/geopoint.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/impute.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/loess.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/lookup.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/quantile.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/regression.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/pivot.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/sample.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/assemble.js","webpack://lida/./node_modules/vega-lite/build/src/compile/header/parse.js","webpack://lida/./node_modules/vega-lite/build/src/compile/layoutsize/parse.js","webpack://lida/./node_modules/vega-lite/build/src/compile/facet.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/parse.js","webpack://lida/./node_modules/vega-lite/build/src/compile/data/joinaggregatefacet.js","webpack://lida/./node_modules/vega-lite/build/src/compile/concat.js","webpack://lida/./node_modules/vega-lite/build/src/compile/axis/component.js","webpack://lida/./node_modules/vega-lite/build/src/compile/axis/encode.js","webpack://lida/./node_modules/vega-lite/build/src/compile/axis/parse.js","webpack://lida/./node_modules/vega-lite/build/src/compile/layoutsize/init.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/arc.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/area.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/bar.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/geoshape.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/image.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/line.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/point.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/rect.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/rule.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/text.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/tick.js","webpack://lida/./node_modules/vega-lite/build/src/compile/mark/mark.js","webpack://lida/./node_modules/vega-lite/build/src/compile/unit.js","webpack://lida/./node_modules/vega-lite/build/src/compile/layer.js","webpack://lida/./node_modules/vega-lite/build/src/compile/buildmodel.js","webpack://lida/./node_modules/vega-lite/build/src/compile/compile.js","webpack://lida/./node_modules/vega-lite/build/src/index.js","webpack://lida/./node_modules/react-vega/node_modules/vega-schema-url-parser/dist/parser.module.js","webpack://lida/./node_modules/vega-themes/build/vega-themes.module.js","webpack://lida/./node_modules/react-vega/node_modules/vega-tooltip/build/vega-tooltip.module.js","webpack://lida/./node_modules/react-vega/node_modules/vega-embed/build/vega-embed.module.js","webpack://lida/./node_modules/react-vega/esm/utils/updateMultipleDatasetsInView.js","webpack://lida/./node_modules/react-vega/esm/utils/updateSingleDatasetInView.js","webpack://lida/./node_modules/react-vega/esm/utils/isFunction.js","webpack://lida/./node_modules/react-vega/esm/utils/getUniqueFieldNames.js","webpack://lida/./node_modules/react-vega/esm/constants.js","webpack://lida/./node_modules/react-vega/esm/utils/addSignalListenersToView.js","webpack://lida/./node_modules/react-vega/esm/utils/removeSignalListenersFromView.js","webpack://lida/./node_modules/react-vega/esm/utils/combineSpecWithDimension.js","webpack://lida/./node_modules/react-vega/esm/VegaEmbed.js","webpack://lida/./node_modules/react-vega/esm/utils/computeSpecChanges.js","webpack://lida/./node_modules/react-vega/esm/Vega.js","webpack://lida/./src/components/views/chartview/chartraster.tsx","webpack://lida/./node_modules/@heroicons/react/24/outline/esm/CodeBracketIcon.js","webpack://lida/./src/components/views/chartview/codeview.tsx","webpack://lida/./src/components/views/chartview/chartexplainer.tsx","webpack://lida/./node_modules/@heroicons/react/24/solid/esm/StarIcon.js","webpack://lida/./node_modules/@antv/g2/esm/constant.js","webpack://lida/./node_modules/@antv/dom-util/esm/create-dom.js","webpack://lida/./node_modules/@antv/g2/esm/engine/index.js","webpack://lida/./node_modules/@antv/dom-util/esm/modify-css.js","webpack://lida/./node_modules/@antv/g2/esm/util/dom.js","webpack://lida/./node_modules/@antv/g2/esm/base.js","webpack://lida/./node_modules/@antv/adjust/esm/adjusts/adjust.js","webpack://lida/./node_modules/@antv/adjust/esm/constant.js","webpack://lida/./node_modules/@antv/adjust/esm/factory.js","webpack://lida/./node_modules/@antv/adjust/node_modules/tslib/tslib.es6.js","webpack://lida/./node_modules/@antv/adjust/esm/adjusts/dodge.js","webpack://lida/./node_modules/@antv/adjust/esm/adjusts/jitter.js","webpack://lida/./node_modules/@antv/adjust/esm/adjusts/stack.js","webpack://lida/./node_modules/@antv/adjust/esm/adjusts/symmetric.js","webpack://lida/./node_modules/@antv/adjust/esm/index.js","webpack://lida/./node_modules/@antv/attr/esm/attributes/base.js","webpack://lida/./node_modules/@antv/color-util/esm/index.js","webpack://lida/./node_modules/@antv/attr/esm/attributes/color.js","webpack://lida/./node_modules/@antv/attr/esm/attributes/opacity.js","webpack://lida/./node_modules/@antv/attr/esm/attributes/position.js","webpack://lida/./node_modules/@antv/attr/esm/attributes/shape.js","webpack://lida/./node_modules/@antv/attr/esm/attributes/size.js","webpack://lida/./node_modules/@antv/scale/esm/tick-method/register.js","webpack://lida/./node_modules/@antv/scale/esm/base.js","webpack://lida/./node_modules/@antv/scale/esm/category/base.js","webpack://lida/./node_modules/fecha/lib/fecha.js","webpack://lida/./node_modules/@antv/scale/esm/util/time.js","webpack://lida/./node_modules/@antv/scale/esm/util/bisector.js","webpack://lida/./node_modules/@antv/scale/esm/category/time.js","webpack://lida/./node_modules/@antv/scale/esm/continuous/base.js","webpack://lida/./node_modules/@antv/scale/esm/continuous/linear.js","webpack://lida/./node_modules/@antv/scale/esm/util/math.js","webpack://lida/./node_modules/@antv/scale/esm/continuous/log.js","webpack://lida/./node_modules/@antv/scale/esm/continuous/pow.js","webpack://lida/./node_modules/@antv/scale/esm/continuous/time.js","webpack://lida/./node_modules/@antv/scale/esm/continuous/quantize.js","webpack://lida/./node_modules/@antv/scale/esm/continuous/quantile.js","webpack://lida/./node_modules/@antv/scale/esm/factory.js","webpack://lida/./node_modules/@antv/scale/esm/identity/index.js","webpack://lida/./node_modules/@antv/scale/esm/tick-method/cat.js","webpack://lida/./node_modules/@antv/scale/esm/util/d3-linear.js","webpack://lida/./node_modules/@antv/scale/esm/util/interval.js","webpack://lida/./node_modules/@antv/scale/esm/util/strict-limit.js","webpack://lida/./node_modules/@antv/scale/esm/util/pretty-number.js","webpack://lida/./node_modules/@antv/scale/esm/util/extended.js","webpack://lida/./node_modules/@antv/scale/esm/util/pretty.js","webpack://lida/./node_modules/@antv/scale/esm/tick-method/quantile.js","webpack://lida/./node_modules/@antv/scale/esm/tick-method/time-pretty.js","webpack://lida/./node_modules/@antv/scale/esm/tick-method/index.js","webpack://lida/./node_modules/@antv/scale/esm/tick-method/time-cat.js","webpack://lida/./node_modules/@antv/scale/esm/tick-method/linear.js","webpack://lida/./node_modules/@antv/scale/esm/tick-method/r-prettry.js","webpack://lida/./node_modules/@antv/scale/esm/tick-method/time.js","webpack://lida/./node_modules/@antv/scale/esm/tick-method/log.js","webpack://lida/./node_modules/@antv/scale/esm/tick-method/pow.js","webpack://lida/./node_modules/@antv/scale/esm/tick-method/d3-linear.js","webpack://lida/./node_modules/@antv/scale/esm/index.js","webpack://lida/./node_modules/@antv/attr/esm/factory.js","webpack://lida/./node_modules/@antv/attr/esm/index.js","webpack://lida/./node_modules/gl-matrix/esm/vec3.js","webpack://lida/./node_modules/@antv/coord/esm/coord/base.js","webpack://lida/./node_modules/@antv/coord/esm/coord/cartesian.js","webpack://lida/./node_modules/@antv/coord/esm/coord/helix.js","webpack://lida/./node_modules/@antv/coord/esm/coord/polar.js","webpack://lida/./node_modules/@antv/coord/esm/factory.js","webpack://lida/./node_modules/@antv/component/esm/util/event.js","webpack://lida/./node_modules/@antv/coord/esm/index.js","webpack://lida/./node_modules/@antv/component/esm/util/matrix.js","webpack://lida/./node_modules/@antv/component/esm/util/util.js","webpack://lida/./node_modules/@antv/component/esm/abstract/component.js","webpack://lida/./node_modules/@antv/component/esm/abstract/group-component.js","webpack://lida/./node_modules/@antv/component/esm/util/text.js","webpack://lida/./node_modules/@antv/component/esm/util/label.js","webpack://lida/./node_modules/@antv/component/esm/util/graphic.js","webpack://lida/./node_modules/@antv/component/esm/util/theme.js","webpack://lida/./node_modules/@antv/component/esm/annotation/line.js","webpack://lida/./node_modules/@antv/component/esm/annotation/text.js","webpack://lida/./node_modules/@antv/component/esm/annotation/arc.js","webpack://lida/./node_modules/@antv/component/esm/annotation/region.js","webpack://lida/./node_modules/@antv/component/esm/annotation/image.js","webpack://lida/./node_modules/@antv/component/esm/annotation/data-marker.js","webpack://lida/./node_modules/@antv/component/esm/annotation/data-region.js","webpack://lida/./node_modules/@antv/component/esm/annotation/region-filter.js","webpack://lida/./node_modules/@antv/component/esm/annotation/shape.js","webpack://lida/./node_modules/@antv/dom-util/esm/get-style.js","webpack://lida/./node_modules/@antv/dom-util/esm/get-outer-width.js","webpack://lida/./node_modules/@antv/dom-util/esm/get-width.js","webpack://lida/./node_modules/@antv/dom-util/esm/get-outer-height.js","webpack://lida/./node_modules/@antv/dom-util/esm/get-height.js","webpack://lida/./node_modules/@antv/component/esm/abstract/html-component.js","webpack://lida/./node_modules/@antv/component/esm/annotation/html.js","webpack://lida/./node_modules/@antv/component/esm/util/state.js","webpack://lida/./node_modules/@antv/component/esm/axis/base.js","webpack://lida/./node_modules/@antv/component/esm/axis/overlap/auto-ellipsis.js","webpack://lida/./node_modules/@antv/component/esm/axis/overlap/auto-hide.js","webpack://lida/./node_modules/@antv/component/esm/axis/overlap/auto-rotate.js","webpack://lida/./node_modules/@antv/component/esm/axis/line.js","webpack://lida/./node_modules/@antv/component/esm/crosshair/html-theme.js","webpack://lida/./node_modules/@antv/component/esm/axis/circle.js","webpack://lida/./node_modules/@antv/component/esm/crosshair/base.js","webpack://lida/./node_modules/@antv/component/esm/crosshair/line.js","webpack://lida/./node_modules/@antv/component/esm/crosshair/circle.js","webpack://lida/./node_modules/@antv/component/esm/crosshair/css-const.js","webpack://lida/./node_modules/@antv/component/esm/crosshair/html.js","webpack://lida/./node_modules/@antv/component/esm/grid/base.js","webpack://lida/./node_modules/@antv/component/esm/grid/circle.js","webpack://lida/./node_modules/@antv/component/esm/tooltip/html-theme.js","webpack://lida/./node_modules/@antv/component/esm/grid/line.js","webpack://lida/./node_modules/@antv/component/esm/legend/base.js","webpack://lida/./node_modules/@antv/component/esm/legend/category.js","webpack://lida/./node_modules/@antv/component/esm/legend/continuous.js","webpack://lida/./node_modules/@antv/component/esm/tooltip/css-const.js","webpack://lida/./node_modules/@antv/component/esm/tooltip/html.js","webpack://lida/./node_modules/@antv/component/esm/util/align.js","webpack://lida/./node_modules/@antv/component/esm/trend/constant.js","webpack://lida/./node_modules/@antv/component/esm/trend/path.js","webpack://lida/./node_modules/@antv/component/esm/trend/trend.js","webpack://lida/./node_modules/@antv/component/esm/slider/handler.js","webpack://lida/./node_modules/@antv/component/esm/slider/constant.js","webpack://lida/./node_modules/@antv/component/esm/slider/slider.js","webpack://lida/./node_modules/@antv/dom-util/esm/add-event-listener.js","webpack://lida/./node_modules/@antv/component/esm/scrollbar/scrollbar.js","webpack://lida/./node_modules/@antv/g2/esm/dependents.js","webpack://lida/./node_modules/@antv/g2/esm/util/graphics.js","webpack://lida/./node_modules/@antv/g2/esm/util/helper.js","webpack://lida/./node_modules/@antv/g2/esm/util/bbox.js","webpack://lida/./node_modules/@antv/g2/esm/util/coordinate.js","webpack://lida/./node_modules/@antv/g2/esm/util/scale.js","webpack://lida/./node_modules/@antv/g2/esm/util/axis.js","webpack://lida/./node_modules/@antv/g2/esm/facet/facet.js","webpack://lida/./node_modules/@antv/g2/esm/facet/index.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/base.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/callback.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/register.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/util/path.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/util.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/context.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/interaction.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/grammar-interaction.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/index.js","webpack://lida/./node_modules/@antv/g2/esm/theme/util/create-by-style-sheet.js","webpack://lida/./node_modules/@antv/g2/esm/theme/style-sheet/light.js","webpack://lida/./node_modules/@antv/g2/esm/theme/util/create-theme.js","webpack://lida/./node_modules/@antv/g2/esm/theme/index.js","webpack://lida/./node_modules/@antv/g2/esm/util/tooltip.js","webpack://lida/./node_modules/@antv/g2/esm/util/padding.js","webpack://lida/./node_modules/@antv/g2/esm/chart/controller/index.js","webpack://lida/./node_modules/@antv/g2/esm/chart/controller/coordinate.js","webpack://lida/./node_modules/@antv/g2/esm/chart/event.js","webpack://lida/./node_modules/@antv/g2/esm/chart/layout/index.js","webpack://lida/./node_modules/@antv/g2/esm/chart/util/scale-pool.js","webpack://lida/./node_modules/@antv/g2/esm/chart/layout/padding-cal.js","webpack://lida/./node_modules/@antv/g2/esm/chart/layout/auto.js","webpack://lida/./node_modules/@antv/g2/esm/chart/util/sync-view-padding.js","webpack://lida/./node_modules/@antv/g2/esm/chart/view.js","webpack://lida/./node_modules/@antv/g2/esm/chart/chart.js","webpack://lida/./node_modules/@antv/g2/esm/chart/controller/base.js","webpack://lida/./node_modules/@antv/g2/esm/chart/controller/tooltip.js","webpack://lida/./node_modules/@antv/g2/esm/animate/animation/index.js","webpack://lida/./node_modules/@antv/g2/esm/animate/index.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/constant.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/element/index.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/label/index.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/base.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/util/is-model-change.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/util/parse-fields.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/util/diff.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/base.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/util/group-data.js","webpack://lida/./node_modules/@antv/g2/esm/util/transform.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/label/util/index.js","webpack://lida/./node_modules/@antv/g2/esm/component/update-label.js","webpack://lida/./node_modules/@antv/g2/esm/component/labels.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/label/base.js","webpack://lida/./node_modules/@antv/g2/esm/util/attr.js","webpack://lida/./node_modules/@antv/g2/esm/util/marker.js","webpack://lida/./node_modules/@antv/g2/esm/util/legend.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/util/get-path-points.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/util/get-style.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/util/split-points.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/line/util.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/line/index.js","webpack://lida/./node_modules/@antv/g2/esm/core.js","webpack://lida/./node_modules/@antv/g2/esm/theme/style-sheet/dark.js","webpack://lida/./node_modules/@antv/g-canvas/esm/util/util.js","webpack://lida/./node_modules/@antv/g-canvas/esm/util/parse.js","webpack://lida/./node_modules/@antv/g-canvas/esm/util/arc-params.js","webpack://lida/./node_modules/@antv/g-canvas/esm/util/arrow.js","webpack://lida/./node_modules/@antv/g-canvas/esm/util/draw.js","webpack://lida/./node_modules/@antv/g-canvas/esm/group.js","webpack://lida/./node_modules/@antv/g-canvas/esm/shape/base.js","webpack://lida/./node_modules/@antv/g-canvas/esm/shape/circle.js","webpack://lida/./node_modules/@antv/g-canvas/esm/shape/ellipse.js","webpack://lida/./node_modules/@antv/g-canvas/esm/shape/image.js","webpack://lida/./node_modules/@antv/g-canvas/esm/util/in-stroke/line.js","webpack://lida/./node_modules/@antv/g-canvas/esm/shape/line.js","webpack://lida/./node_modules/@antv/g-canvas/esm/shape/marker.js","webpack://lida/./node_modules/@antv/g-canvas/esm/util/in-path/point-in-path.js","webpack://lida/./node_modules/@antv/g-canvas/esm/util/in-path/polygon.js","webpack://lida/./node_modules/@antv/g-canvas/esm/util/in-stroke/arc.js","webpack://lida/./node_modules/@antv/g-canvas/esm/util/path.js","webpack://lida/./node_modules/@antv/g-canvas/esm/shape/path.js","webpack://lida/./node_modules/@antv/g-canvas/esm/util/in-stroke/polyline.js","webpack://lida/./node_modules/@antv/g-canvas/esm/shape/polygon.js","webpack://lida/./node_modules/@antv/g-canvas/esm/shape/polyline.js","webpack://lida/./node_modules/@antv/g-canvas/esm/shape/rect.js","webpack://lida/./node_modules/@antv/g-canvas/esm/util/in-stroke/rect-radius.js","webpack://lida/./node_modules/@antv/g-canvas/esm/util/in-stroke/rect.js","webpack://lida/./node_modules/@antv/g-canvas/esm/shape/text.js","webpack://lida/./node_modules/@antv/g-canvas/esm/util/hit.js","webpack://lida/./node_modules/@antv/g-canvas/esm/canvas.js","webpack://lida/./node_modules/@antv/g-canvas/esm/index.js","webpack://lida/./node_modules/@antv/g-svg/esm/constant.js","webpack://lida/./node_modules/@antv/g-svg/esm/util/dom.js","webpack://lida/./node_modules/@antv/g-svg/esm/util/svg.js","webpack://lida/./node_modules/@antv/g-svg/esm/util/draw.js","webpack://lida/./node_modules/@antv/g-svg/esm/group.js","webpack://lida/./node_modules/@antv/g-svg/esm/shape/base.js","webpack://lida/./node_modules/@antv/g-svg/esm/shape/circle.js","webpack://lida/./node_modules/@antv/g-svg/esm/shape/dom.js","webpack://lida/./node_modules/@antv/g-svg/esm/shape/ellipse.js","webpack://lida/./node_modules/@antv/g-svg/esm/shape/image.js","webpack://lida/./node_modules/@antv/g-svg/esm/shape/line.js","webpack://lida/./node_modules/@antv/g-svg/esm/shape/marker/symbols.js","webpack://lida/./node_modules/@antv/g-svg/esm/shape/marker/index.js","webpack://lida/./node_modules/@antv/g-svg/esm/shape/path.js","webpack://lida/./node_modules/@antv/g-svg/esm/shape/polygon.js","webpack://lida/./node_modules/@antv/g-svg/esm/shape/polyline.js","webpack://lida/./node_modules/@antv/g-svg/esm/shape/rect.js","webpack://lida/./node_modules/@antv/g-svg/esm/util/format.js","webpack://lida/./node_modules/@antv/g-svg/esm/shape/text.js","webpack://lida/./node_modules/@antv/g-svg/esm/defs/gradient.js","webpack://lida/./node_modules/@antv/g-svg/esm/defs/shadow.js","webpack://lida/./node_modules/@antv/g-svg/esm/defs/arrow.js","webpack://lida/./node_modules/@antv/g-svg/esm/defs/clip.js","webpack://lida/./node_modules/@antv/g-svg/esm/defs/pattern.js","webpack://lida/./node_modules/@antv/g-svg/esm/defs/index.js","webpack://lida/./node_modules/@antv/g-svg/esm/canvas.js","webpack://lida/./node_modules/@antv/g-svg/esm/index.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/path.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/area/util.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/area/index.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/area.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/edge/index.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/edge.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/heatmap.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/interval/util.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/interval/index.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/util/shape-size.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/interval.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/line.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/point/util.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/point/index.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/point.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/polygon/index.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/polygon.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/schema.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/schema/index.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/violin/index.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/violin.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/edge/util.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/area/line.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/area/smooth.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/area/smooth-line.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/edge/arc.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/edge/smooth.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/edge/vhv.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/interval/funnel.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/interval/hollow-rect.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/interval/line.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/interval/pyramid.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/interval/tick.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/line/step.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/schema/box.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/schema/candle.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/polygon/square.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/point/hollow.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/point/image.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/point/solid.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/violin/smooth.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/shape/violin/hollow.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/label/interval.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/label/polar.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/label/pie.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/label/layout/pie/util.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/label/layout/pie/outer.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/label/layout/pie/spider.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/label/layout/overlap.js","webpack://lida/./node_modules/@antv/g2/esm/util/collision-detect.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/label/util/createWorker.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/label/layout/worker/hide-overlap.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/label/layout/hide-overlap.js","webpack://lida/./node_modules/@antv/g2/esm/util/color.js","webpack://lida/./node_modules/@antv/g2/esm/util/context.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/label/layout/interval/adjust-position.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/label/layout/point/adjust-position.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/label/layout/path/adjust-position.js","webpack://lida/./node_modules/@antv/g2/esm/util/text.js","webpack://lida/./node_modules/@antv/g2/esm/animate/animation/util.js","webpack://lida/./node_modules/@antv/g2/esm/animate/animation/sector-path-update.js","webpack://lida/./node_modules/@antv/g2/esm/animate/animation/zoom.js","webpack://lida/./node_modules/@antv/g2/esm/util/facet.js","webpack://lida/./node_modules/@antv/g2/esm/facet/circle.js","webpack://lida/./node_modules/@antv/g2/esm/facet/list.js","webpack://lida/./node_modules/@antv/g2/esm/facet/matrix.js","webpack://lida/./node_modules/@antv/g2/esm/facet/mirror.js","webpack://lida/./node_modules/@antv/g2/esm/facet/rect.js","webpack://lida/./node_modules/@antv/g2/esm/facet/tree.js","webpack://lida/./node_modules/@antv/g2/esm/util/stat.js","webpack://lida/./node_modules/@antv/g2/esm/util/annotation.js","webpack://lida/./node_modules/@antv/g2/esm/chart/controller/annotation.js","webpack://lida/./node_modules/@antv/g2/esm/util/grid.js","webpack://lida/./node_modules/@antv/g2/esm/chart/controller/axis.js","webpack://lida/./node_modules/@antv/g2/esm/util/direction.js","webpack://lida/./node_modules/@antv/g2/esm/chart/controller/legend.js","webpack://lida/./node_modules/@antv/g2/esm/chart/controller/slider.js","webpack://lida/./node_modules/@antv/g2/esm/chart/controller/scrollbar.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/active-region.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/component/tooltip/geometry.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/component/tooltip/sibling.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/component/tooltip/ellipsis-text.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/element/state-base.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/element/state.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/element/active.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/element/link-by-color.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/element/range-state.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/element/range-active.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/element/single-state.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/element/single-active.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/element/highlight-util.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/element/highlight.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/element/range-highlight.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/element/highlight-by-color.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/element/highlight-by-x.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/element/single-highlight.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/element/range-selected.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/element/selected.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/element/single-selected.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/component/list-state.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/component/list-active.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/component/list-highlight-util.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/component/list-highlight.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/component/list-selected.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/component/list-unchecked.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/component/list-checked.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/component/list-focus.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/component/list-radio.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/mask/base.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/mask/circle.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/mask/rect.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/mask/dim-rect.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/mask/path.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/mask/smooth-path.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/data/range-filter.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/mask/multiple/base.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/mask/multiple/rect.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/mask/multiple/dim-rect.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/mask/multiple/circle.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/mask/multiple/path.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/mask/multiple/smooth-path.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/cursor.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/data/filter.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/data/sibling-filter.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/element/filter.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/element/sibling-filter.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/view/button.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/view/drag.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/view/move.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/view/scale-transform.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/view/scale-translate.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/view/scale-zoom.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/view/mousewheel-scroll.js","webpack://lida/./node_modules/@antv/g2/esm/interaction/action/component/axis/axis-description.js","webpack://lida/./node_modules/@antv/g2/esm/index.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/label/layout/pie/distribute.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/label/layout/limit-in-shape.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/label/layout/limit-in-canvas.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/label/layout/limit-in-plot.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/label/layout/adjust-color.js","webpack://lida/./node_modules/@antv/g2/esm/geometry/label/layout/interval/hide-overlap.js","webpack://lida/./node_modules/@antv/g2/esm/animate/animation/fade.js","webpack://lida/./node_modules/@antv/g2/esm/animate/animation/grow-in.js","webpack://lida/./node_modules/@antv/g2/esm/animate/animation/scale-in.js","webpack://lida/./node_modules/@antv/g2/esm/animate/animation/wave-in.js","webpack://lida/./node_modules/@antv/g2/esm/animate/animation/position-update.js","webpack://lida/./node_modules/@antv/g2/esm/animate/animation/path-in.js","webpack://lida/./node_modules/@antv/g2plot/esm/constant.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/invariant.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/pick.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/data.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/deep-assign.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/context.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/dom.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/flow.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/geometry.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/label.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/measure-text.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/number.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/padding.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/path.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/kebab-case.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/statistic.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/template.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/view.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/pattern/util.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/pattern/dot.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/pattern/line.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/pattern/square.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/pattern/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/adaptor/pattern.js","webpack://lida/./node_modules/@antv/g2plot/esm/adaptor/common.js","webpack://lida/./node_modules/@antv/g2plot/esm/core/global.js","webpack://lida/./node_modules/@antv/g2plot/esm/core/locale.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/tooltip.js","webpack://lida/./node_modules/@antv/g2plot/esm/adaptor/geometries/base.js","webpack://lida/./node_modules/@antv/g2plot/esm/adaptor/geometries/area.js","webpack://lida/./node_modules/@antv/g2plot/esm/adaptor/geometries/edge.js","webpack://lida/./node_modules/@antv/g2plot/esm/adaptor/geometries/interval.js","webpack://lida/./node_modules/@antv/g2plot/esm/adaptor/geometries/line.js","webpack://lida/./node_modules/@antv/g2plot/esm/adaptor/geometries/point.js","webpack://lida/./node_modules/@antv/g2plot/esm/adaptor/geometries/polygon.js","webpack://lida/./node_modules/@antv/g2plot/esm/adaptor/geometries/schema.js","webpack://lida/./node_modules/@antv/g2plot/esm/core/plot.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/transform/percent.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/line/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/area/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/area/constants.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/area/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/interactions/actions/reset-button.js","webpack://lida/./node_modules/@antv/g2plot/esm/interactions/brush.js","webpack://lida/./node_modules/@antv/g2plot/esm/adaptor/brush.js","webpack://lida/./node_modules/@antv/g2plot/esm/adaptor/connected-area.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/conversion.js","webpack://lida/./node_modules/@antv/g2plot/esm/adaptor/conversion-tag.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/column/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/bar/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/bar/constants.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/funnel/constant.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/bar/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/column/constants.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/column/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/funnel/geometries/common.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/funnel/geometries/basic.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/funnel/geometries/compare.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/funnel/geometries/dynamic-height.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/funnel/geometries/facet.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/funnel/interactions/funnel-conversion-tag.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/funnel/interactions/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/funnel/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/funnel/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/gauge/constants.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/gauge/utils.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/gauge/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/gauge/shapes/indicator.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/gauge/shapes/meter-gauge.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/gauge/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/transform/histogram.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/histogram/constant.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/histogram/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/histogram/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/line/constants.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/line/interactions/marker-active.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/line/interactions/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/line/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/pie/contants.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/matrix.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/pie/interactions/actions/legend-active.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/pie/interactions/actions/statistic-active.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/pie/interactions/util.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/pie/interactions/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/pie/utils.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/pie/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/pie/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/progress/constants.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/progress/utils.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/progress/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/progress/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/ring-progress/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/ring-progress/constants.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/ring-progress/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/scatter/util.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/scatter/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/scatter/constant.js","webpack://lida/./node_modules/@antv/g2plot/esm/interactions/drag-move.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/scatter/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/stock/constant.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/stock/utils.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/stock/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/stock/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/tiny-line/utils.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/tiny-line/constants.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/tiny-area/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/tiny-area/constants.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/tiny-area/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/tiny-column/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/tiny-column/constants.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/tiny-column/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/tiny-line/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/tiny-line/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/mix/utils.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/mix/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/mix/interactions/association.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/mix/interactions/utils.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/mix/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/lab.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/bidirectional-bar/constant.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/bidirectional-bar/utils.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/bidirectional-bar/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/bidirectional-bar/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/box/constant.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/box/utils.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/box/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/box/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/bullet/utils.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/bullet/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/bullet/constant.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/transform/chord.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/bullet/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/chord/constant.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/chord/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/chord/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/circle-packing/constant.js","webpack://lida/./node_modules/@antv/g2plot/esm/interactions/actions/drill-down.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/pack/enclose.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/array.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/pack/siblings.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/accessors.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/constant.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/pack/index.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/count.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/each.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/find.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/iterator.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/index.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/sum.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/sort.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/path.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/ancestors.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/descendants.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/leaves.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/links.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/hierarchy/util.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/hierarchy/pack.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/circle-packing/utils.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/circle-packing/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/interactions/drill-down.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/circle-packing/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/dual-axes/types.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/dual-axes/constant.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/dual-axes/util/option.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/dual-axes/util/legend.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/dual-axes/util/render-sider.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/dual-axes/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/dual-axes/util/geometry.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/dual-axes/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/facet/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/facet/utils.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/facet/constant.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/facet/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/heatmap/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/heatmap/constant.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/heatmap/shapes/circle.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/heatmap/shapes/square.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/heatmap/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/liquid/utils.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/liquid/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/liquid/constants.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/liquid/shapes/liquid.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/liquid/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/radar/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/radar/interactions/radar-tooltip-action.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/radar/interactions/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/radar/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/radial-bar/utils.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/radial-bar/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/radial-bar/constant.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/radial-bar/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/rose/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/rose/constant.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/sankey/constant.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/rose/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/sankey/circle.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/sankey/sankey/align.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/sankey/sankey/helper.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/sankey/sankey/sankey.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/sankey/layout.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/sankey/helper.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/sankey/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/sankey/interactions/actions/node-drag.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/sankey/interactions/node-draggable.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/sankey/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/sunburst/constant.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/treemap/round.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/treemap/dice.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/partition.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/hierarchy/partition.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/cluster.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/stratify.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/tree.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/treemap/slice.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/treemap/squarify.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/treemap/index.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/treemap/binary.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/treemap/sliceDice.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/treemap/resquarify.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/hierarchy/treemap.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/sunburst/utils.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/sunburst/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/sunburst/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/treemap/utils.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/treemap/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/treemap/constant.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/venn/constant.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/treemap/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/venn/interactions/util.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/venn/interactions/actions/active.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/venn/interactions/actions/highlight.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/venn/interactions/actions/selected.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/venn/interactions/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/venn/label.js","webpack://lida/./node_modules/lodash-es/isArray.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/@antv/path-util/esm/parse-path-string.js","webpack://lida/./node_modules/@antv/g2plot/node_modules/@antv/path-util/esm/process/arc-2-cubic.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/venn/shape.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/color/blend.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/venn/layout/circleintersection.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/venn/layout/diagram.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/venn/layout/layout.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/venn/utils.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/venn/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/venn/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/violin/constant.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/transform/quantile.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/violin/utils.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/violin/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/adaptor/geometries/violin.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/violin/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/waterfall/constant.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/waterfall/utils.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/waterfall/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/waterfall/shape.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/waterfall/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/word-cloud/constant.js","webpack://lida/./node_modules/@antv/g2plot/esm/utils/transform/word-cloud.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/word-cloud/utils.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/word-cloud/adaptor.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/word-cloud/shapes/word-cloud.js","webpack://lida/./node_modules/@antv/g2plot/esm/plots/word-cloud/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/plugin/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/index.js","webpack://lida/./node_modules/@antv/g2plot/esm/locales/en_US.js","webpack://lida/./node_modules/@antv/g2plot/esm/locales/zh_CN.js","webpack://lida/./node_modules/@ant-design/plots/es/utils/render.js","webpack://lida/./node_modules/@ant-design/plots/es/utils/createNode.js","webpack://lida/./node_modules/@ant-design/plots/es/utils/utils.js","webpack://lida/./node_modules/@ant-design/plots/es/hooks/useChart.js","webpack://lida/./node_modules/@ant-design/plots/es/utils/getChart.js","webpack://lida/./node_modules/@ant-design/plots/es/errorBoundary/index.js","webpack://lida/./node_modules/react-content-loader/dist/react-content-loader.es.js","webpack://lida/./node_modules/@ant-design/plots/es/utils/createLoading.js","webpack://lida/./node_modules/@ant-design/plots/es/components/radar/index.js","webpack://lida/./src/components/views/chartview/evalradar.tsx","webpack://lida/./src/components/views/chartview/chartevaluator.tsx","webpack://lida/./src/components/views/chartview/chartrecommender.tsx","webpack://lida/./src/components/views/chartview/chartview.tsx","webpack://lida/./src/components/views/chartview/index.tsx","webpack://lida/./src/components/views/generate/upload/viz.tsx","webpack://lida/./src/components/views/generate/upload/datasetupload.tsx","webpack://lida/./node_modules/@heroicons/react/24/outline/esm/AdjustmentsVerticalIcon.js","webpack://lida/./node_modules/rc-slider/es/context.js","webpack://lida/./node_modules/rc-slider/es/util.js","webpack://lida/./node_modules/rc-slider/es/Handles/Handle.js","webpack://lida/./node_modules/rc-slider/es/Handles/index.js","webpack://lida/./node_modules/rc-slider/es/hooks/useDrag.js","webpack://lida/./node_modules/rc-slider/es/Tracks/Track.js","webpack://lida/./node_modules/rc-slider/es/Tracks/index.js","webpack://lida/./node_modules/rc-slider/es/Marks/Mark.js","webpack://lida/./node_modules/rc-slider/es/Marks/index.js","webpack://lida/./node_modules/rc-slider/es/Steps/Dot.js","webpack://lida/./node_modules/rc-slider/es/Steps/index.js","webpack://lida/./node_modules/rc-slider/es/Slider.js","webpack://lida/./node_modules/rc-slider/es/hooks/useOffset.js","webpack://lida/./node_modules/rc-slider/es/index.js","webpack://lida/./node_modules/antd/es/slider/SliderTooltip.js","webpack://lida/./node_modules/antd/es/slider/style/index.js","webpack://lida/./node_modules/antd/es/slider/index.js","webpack://lida/./src/components/views/generate/controls.tsx","webpack://lida/./src/components/views/generate/generateindex.tsx","webpack://lida/./src/pages/demo.tsx","webpack://lida/./node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack://lida/./node_modules/babel-preset-gatsby/node_modules/@babel/runtime/regenerator/index.js"],"sourcesContent":["var WILDCARD = '*';\n/* event-emitter */\nvar EventEmitter = /** @class */function () {\n function EventEmitter() {\n this._events = {};\n }\n /**\n * 监听一个事件\n * @param evt\n * @param callback\n * @param once\n */\n EventEmitter.prototype.on = function (evt, callback, once) {\n if (!this._events[evt]) {\n this._events[evt] = [];\n }\n this._events[evt].push({\n callback: callback,\n once: !!once\n });\n return this;\n };\n /**\n * 监听一个事件一次\n * @param evt\n * @param callback\n */\n EventEmitter.prototype.once = function (evt, callback) {\n return this.on(evt, callback, true);\n };\n /**\n * 触发一个事件\n * @param evt\n * @param args\n */\n EventEmitter.prototype.emit = function (evt) {\n var _this = this;\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var events = this._events[evt] || [];\n var wildcardEvents = this._events[WILDCARD] || [];\n // 实际的处理 emit 方法\n var doEmit = function doEmit(es) {\n var length = es.length;\n for (var i = 0; i < length; i++) {\n if (!es[i]) {\n continue;\n }\n var _a = es[i],\n callback = _a.callback,\n once = _a.once;\n if (once) {\n es.splice(i, 1);\n if (es.length === 0) {\n delete _this._events[evt];\n }\n length--;\n i--;\n }\n callback.apply(_this, args);\n }\n };\n doEmit(events);\n doEmit(wildcardEvents);\n };\n /**\n * 取消监听一个事件,或者一个channel\n * @param evt\n * @param callback\n */\n EventEmitter.prototype.off = function (evt, callback) {\n if (!evt) {\n // evt 为空全部清除\n this._events = {};\n } else {\n if (!callback) {\n // evt 存在,callback 为空,清除事件所有方法\n delete this._events[evt];\n } else {\n // evt 存在,callback 存在,清除匹配的\n var events = this._events[evt] || [];\n var length_1 = events.length;\n for (var i = 0; i < length_1; i++) {\n if (events[i].callback === callback) {\n events.splice(i, 1);\n length_1--;\n i--;\n }\n }\n if (events.length === 0) {\n delete this._events[evt];\n }\n }\n }\n return this;\n };\n /* 当前所有的事件 */\n EventEmitter.prototype.getEvents = function () {\n return this._events;\n };\n return EventEmitter;\n}();\nexport default EventEmitter;","import { __extends } from \"tslib\";\nimport EE from '@antv/event-emitter';\nimport { mix } from '../util/util';\nvar Base = /** @class */function (_super) {\n __extends(Base, _super);\n function Base(cfg) {\n var _this = _super.call(this) || this;\n /**\n * 是否被销毁\n * @type {boolean}\n */\n _this.destroyed = false;\n var defaultCfg = _this.getDefaultCfg();\n _this.cfg = mix(defaultCfg, cfg);\n return _this;\n }\n /**\n * @protected\n * 默认的配置项\n * @returns {object} 默认的配置项\n */\n Base.prototype.getDefaultCfg = function () {\n return {};\n };\n // 实现接口的方法\n Base.prototype.get = function (name) {\n return this.cfg[name];\n };\n // 实现接口的方法\n Base.prototype.set = function (name, value) {\n this.cfg[name] = value;\n };\n // 实现接口的方法\n Base.prototype.destroy = function () {\n this.cfg = {\n destroyed: true\n };\n this.off();\n this.destroyed = true;\n };\n return Base;\n}(EE);\nexport default Base;","var frame = 0,\n // is an animation frame pending?\n timeout = 0,\n // is a timeout pending?\n interval = 0,\n // are any timers active?\n pokeDelay = 1000,\n // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function (f) {\n setTimeout(f, 17);\n };\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\nfunction clearNow() {\n clockNow = 0;\n}\nexport function Timer() {\n this._call = this._time = this._next = null;\n}\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function restart(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function stop() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\nexport function timer(callback, delay, time) {\n var t = new Timer();\n t.restart(callback, delay, time);\n return t;\n}\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead,\n e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\nfunction poke() {\n var now = clock.now(),\n delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\nfunction nap() {\n var t0,\n t1 = taskHead,\n t2,\n time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}","export var isColorProp = function isColorProp(prop) {\n return ['fill', 'stroke', 'fillStyle', 'strokeStyle'].includes(prop);\n};\nexport var isGradientColor = function isGradientColor(val) {\n return /^[r,R,L,l]{1}[\\s]*\\(/.test(val);\n};","import { isEqual, isNumber, isFunction } from '@antv/util';\nimport * as d3Timer from 'd3-timer';\nimport { interpolate, interpolateArray } from 'd3-interpolate'; // 目前整体动画只需要数值和数组的差值计算\nimport { getEasing } from './register';\nimport * as PathUtil from '../util/path';\nimport { isColorProp, isGradientColor } from '../util/color';\nvar IDENTITY_MATRIX = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n/**\n * 使用 ratio 进行插值计算来更新属性\n * @param {IElement} shape 元素\n * @param {Animation} animation 动画\n * @param {number} ratio 比例\n * @return {boolean} 动画是否执行完成\n */\nfunction _update(shape, animation, ratio) {\n var cProps = {}; // 此刻属性\n var fromAttrs = animation.fromAttrs,\n toAttrs = animation.toAttrs;\n if (shape.destroyed) {\n return;\n }\n var interf; // 差值函数\n for (var k in toAttrs) {\n if (!isEqual(fromAttrs[k], toAttrs[k])) {\n if (k === 'path') {\n var toPath = toAttrs[k];\n var fromPath = fromAttrs[k];\n if (toPath.length > fromPath.length) {\n toPath = PathUtil.parsePathString(toAttrs[k]); // 终点状态\n fromPath = PathUtil.parsePathString(fromAttrs[k]); // 起始状态\n fromPath = PathUtil.fillPathByDiff(fromPath, toPath);\n fromPath = PathUtil.formatPath(fromPath, toPath);\n animation.fromAttrs.path = fromPath;\n animation.toAttrs.path = toPath;\n } else if (!animation.pathFormatted) {\n toPath = PathUtil.parsePathString(toAttrs[k]);\n fromPath = PathUtil.parsePathString(fromAttrs[k]);\n fromPath = PathUtil.formatPath(fromPath, toPath);\n animation.fromAttrs.path = fromPath;\n animation.toAttrs.path = toPath;\n animation.pathFormatted = true;\n }\n cProps[k] = [];\n for (var i = 0; i < toPath.length; i++) {\n var toPathPoint = toPath[i];\n var fromPathPoint = fromPath[i];\n var cPathPoint = [];\n for (var j = 0; j < toPathPoint.length; j++) {\n if (isNumber(toPathPoint[j]) && fromPathPoint && isNumber(fromPathPoint[j])) {\n interf = interpolate(fromPathPoint[j], toPathPoint[j]);\n cPathPoint.push(interf(ratio));\n } else {\n cPathPoint.push(toPathPoint[j]);\n }\n }\n cProps[k].push(cPathPoint);\n }\n } else if (k === 'matrix') {\n /*\n 对矩阵进行插值时,需要保证矩阵不为空,为空则使用单位矩阵\n TODO: 二维和三维场景下单位矩阵不同,之后 WebGL 版需要做进一步处理\n */\n var matrixFn = interpolateArray(fromAttrs[k] || IDENTITY_MATRIX, toAttrs[k] || IDENTITY_MATRIX);\n var currentMatrix = matrixFn(ratio);\n cProps[k] = currentMatrix;\n } else if (isColorProp(k) && isGradientColor(toAttrs[k])) {\n cProps[k] = toAttrs[k];\n } else if (!isFunction(toAttrs[k])) {\n // 非函数类型的值才能做插值\n interf = interpolate(fromAttrs[k], toAttrs[k]);\n cProps[k] = interf(ratio);\n }\n }\n }\n shape.attr(cProps);\n}\n/**\n * 根据自定义帧动画函数 onFrame 来更新属性\n * @param {IElement} shape 元素\n * @param {Animation} animation 动画\n * @param {number} elapsed 动画执行时间(毫秒)\n * @return {boolean} 动画是否执行完成\n */\nfunction update(shape, animation, elapsed) {\n var startTime = animation.startTime,\n delay = animation.delay;\n // 如果还没有开始执行或暂停,先不更新\n if (elapsed < startTime + delay || animation._paused) {\n return false;\n }\n var ratio;\n var duration = animation.duration;\n var easing = animation.easing;\n var easeFn = getEasing(easing);\n // 已执行时间\n elapsed = elapsed - startTime - animation.delay;\n if (animation.repeat) {\n // 如果动画重复执行,则 elapsed > duration,计算 ratio 时需取模\n ratio = elapsed % duration / duration;\n ratio = easeFn(ratio);\n } else {\n ratio = elapsed / duration;\n if (ratio < 1) {\n // 动画未执行完\n ratio = easeFn(ratio);\n } else {\n // 动画已执行完\n if (animation.onFrame) {\n shape.attr(animation.onFrame(1));\n } else {\n shape.attr(animation.toAttrs);\n }\n return true;\n }\n }\n if (animation.onFrame) {\n var attrs = animation.onFrame(ratio);\n shape.attr(attrs);\n } else {\n _update(shape, animation, ratio);\n }\n return false;\n}\nvar Timeline = /** @class */function () {\n /**\n * 时间轴构造函数,依赖于画布\n * @param {}\n */\n function Timeline(canvas) {\n /**\n * 执行动画的元素列表\n * @type {IElement[]}\n */\n this.animators = [];\n /**\n * 当前时间\n * @type {number}\n */\n this.current = 0;\n /**\n * 定时器\n * @type {d3Timer.Timer}\n */\n this.timer = null;\n this.canvas = canvas;\n }\n /**\n * 初始化定时器\n */\n Timeline.prototype.initTimer = function () {\n var _this = this;\n var isFinished = false;\n var shape;\n var animations;\n var animation;\n this.timer = d3Timer.timer(function (elapsed) {\n _this.current = elapsed;\n if (_this.animators.length > 0) {\n for (var i = _this.animators.length - 1; i >= 0; i--) {\n shape = _this.animators[i];\n if (shape.destroyed) {\n // 如果已经被销毁,直接移出队列\n _this.removeAnimator(i);\n continue;\n }\n if (!shape.isAnimatePaused()) {\n animations = shape.get('animations');\n for (var j = animations.length - 1; j >= 0; j--) {\n animation = animations[j];\n isFinished = update(shape, animation, elapsed);\n if (isFinished) {\n animations.splice(j, 1);\n isFinished = false;\n if (animation.callback) {\n animation.callback();\n }\n }\n }\n }\n if (animations.length === 0) {\n _this.removeAnimator(i);\n }\n }\n var autoDraw = _this.canvas.get('autoDraw');\n // 非自动渲染模式下,手动调用 canvas.draw() 重新渲染\n if (!autoDraw) {\n _this.canvas.draw();\n }\n }\n });\n };\n /**\n * 增加动画元素\n */\n Timeline.prototype.addAnimator = function (shape) {\n this.animators.push(shape);\n };\n /**\n * 移除动画元素\n */\n Timeline.prototype.removeAnimator = function (index) {\n this.animators.splice(index, 1);\n };\n /**\n * 是否有动画在执行\n */\n Timeline.prototype.isAnimating = function () {\n return !!this.animators.length;\n };\n /**\n * 停止定时器\n */\n Timeline.prototype.stop = function () {\n if (this.timer) {\n this.timer.stop();\n }\n };\n /**\n * 停止时间轴上所有元素的动画,并置空动画元素列表\n * @param {boolean} toEnd 是否到动画的最终状态,用来透传给动画元素的 stopAnimate 方法\n */\n Timeline.prototype.stopAllAnimations = function (toEnd) {\n if (toEnd === void 0) {\n toEnd = true;\n }\n this.animators.forEach(function (animator) {\n animator.stopAnimate(toEnd);\n });\n this.animators = [];\n this.canvas.draw();\n };\n /**\n * 获取当前时间\n */\n Timeline.prototype.getTime = function () {\n return this.current;\n };\n return Timeline;\n}();\nexport default Timeline;","/**\n * @fileoverview 事件处理器\n * @author dxq613@gmail.com\n */\nimport GraphEvent from './graph-event';\nimport { each, isParent } from '../util/util';\nvar CLICK_OFFSET = 40;\nvar LEFT_BTN_CODE = 0;\nvar DELEGATION_SPLIT = ':';\nvar EVENTS = ['mousedown', 'mouseup', 'dblclick', 'mouseout', 'mouseover', 'mousemove', 'mouseleave', 'mouseenter', 'touchstart', 'touchmove', 'touchend', 'dragenter', 'dragover', 'dragleave', 'drop', 'contextmenu', 'mousewheel'];\n// 是否有委托事件监听\nfunction hasDelegation(events, type) {\n for (var key in events) {\n if (events.hasOwnProperty(key) && key.indexOf(DELEGATION_SPLIT + type) >= 0) {\n return true;\n }\n }\n return false;\n}\n// 触发目标事件,目标只能是 shape 或 canvas\nfunction emitTargetEvent(target, type, eventObj) {\n eventObj.name = type;\n eventObj.target = target;\n eventObj.currentTarget = target;\n eventObj.delegateTarget = target;\n target.emit(type, eventObj);\n}\n// 事件冒泡, enter 和 leave 需要对 fromShape 和 toShape 进行判同\nfunction bubbleEvent(container, type, eventObj) {\n if (eventObj.bubbles) {\n var relativeShape = void 0;\n var isOverEvent = false;\n if (type === 'mouseenter') {\n relativeShape = eventObj.fromShape;\n isOverEvent = true;\n } else if (type === 'mouseleave') {\n isOverEvent = true;\n relativeShape = eventObj.toShape;\n }\n // canvas 上的 mouseenter, mouseleave 事件,仅当进入或者移出 canvas 时触发\n if (container.isCanvas() && isOverEvent) {\n return;\n }\n // 如果相关图形同当前图形在同一个容器内,不触发事件\n if (relativeShape && isParent(container, relativeShape)) {\n // 阻止继续向上冒泡\n eventObj.bubbles = false;\n return;\n }\n // 事件名称可能在委托过程中被修改,因此事件冒泡时需要重新设置事件名称\n eventObj.name = type;\n eventObj.currentTarget = container;\n eventObj.delegateTarget = container;\n container.emit(type, eventObj);\n }\n}\nvar EventController = /** @class */function () {\n function EventController(cfg) {\n var _this = this;\n // 正在被拖拽的图形\n this.draggingShape = null;\n this.dragging = false;\n // 当前鼠标/touch所在位置的图形\n this.currentShape = null;\n this.mousedownShape = null;\n this.mousedownPoint = null;\n // 统一处理所有的回调\n this._eventCallback = function (ev) {\n var type = ev.type;\n _this._triggerEvent(type, ev);\n };\n // 在 document 处理拖拽到画布外的事件,处理从图形上移除画布未被捕捉的问题\n this._onDocumentMove = function (ev) {\n var canvas = _this.canvas;\n var el = canvas.get('el');\n if (el !== ev.target) {\n // 不在 canvas 上移动\n if (_this.dragging || _this.currentShape) {\n var pointInfo = _this._getPointInfo(ev);\n // 还在拖拽过程中\n if (_this.dragging) {\n _this._emitEvent('drag', ev, pointInfo, _this.draggingShape);\n }\n // 说明从某个图形直接移动到了画布外面,\n // 修复了 mouseleave 的 bug 后不再出现这种情况\n // if (this.currentShape) {\n // this._emitEvent('mouseleave', ev, pointInfo, this.currentShape, this.currentShape, null);\n // this.currentShape = null;\n // }\n }\n }\n };\n // 在 document 上处理拖拽到外面,释放鼠标时触发 dragend\n this._onDocumentMouseUp = function (ev) {\n var canvas = _this.canvas;\n var el = canvas.get('el');\n if (el !== ev.target) {\n // 不在 canvas 上移动\n if (_this.dragging) {\n var pointInfo = _this._getPointInfo(ev);\n if (_this.draggingShape) {\n // 如果存在拖拽的图形,则也触发 drop 事件\n _this._emitEvent('drop', ev, pointInfo, null);\n }\n _this._emitEvent('dragend', ev, pointInfo, _this.draggingShape);\n _this._afterDrag(_this.draggingShape, pointInfo, ev);\n }\n }\n };\n this.canvas = cfg.canvas;\n }\n EventController.prototype.init = function () {\n this._bindEvents();\n };\n // 注册事件\n EventController.prototype._bindEvents = function () {\n var _this = this;\n var el = this.canvas.get('el');\n each(EVENTS, function (eventName) {\n el.addEventListener(eventName, _this._eventCallback);\n });\n if (document) {\n // 处理移动到外面没有触发 shape mouse leave 的事件\n // 处理拖拽到外部的问题\n document.addEventListener('mousemove', this._onDocumentMove);\n // 处理拖拽过程中在外部释放鼠标的问题\n document.addEventListener('mouseup', this._onDocumentMouseUp);\n }\n };\n // 清理事件\n EventController.prototype._clearEvents = function () {\n var _this = this;\n var el = this.canvas.get('el');\n each(EVENTS, function (eventName) {\n el.removeEventListener(eventName, _this._eventCallback);\n });\n if (document) {\n document.removeEventListener('mousemove', this._onDocumentMove);\n document.removeEventListener('mouseup', this._onDocumentMouseUp);\n }\n };\n EventController.prototype._getEventObj = function (type, event, point, target, fromShape, toShape) {\n var eventObj = new GraphEvent(type, event);\n eventObj.fromShape = fromShape;\n eventObj.toShape = toShape;\n eventObj.x = point.x;\n eventObj.y = point.y;\n eventObj.clientX = point.clientX;\n eventObj.clientY = point.clientY;\n eventObj.propagationPath.push(target);\n // 事件的x,y应该是基于画布左上角的,与canvas的matrix无关\n return eventObj;\n };\n // 根据点获取图形,提取成独立方法,便于后续优化\n EventController.prototype._getShape = function (point, ev) {\n return this.canvas.getShape(point.x, point.y, ev);\n };\n // 获取事件的当前点的信息\n EventController.prototype._getPointInfo = function (ev) {\n var canvas = this.canvas;\n var clientPoint = canvas.getClientByEvent(ev);\n var point = canvas.getPointByEvent(ev);\n return {\n x: point.x,\n y: point.y,\n clientX: clientPoint.x,\n clientY: clientPoint.y\n };\n };\n // 触发事件\n EventController.prototype._triggerEvent = function (type, ev) {\n var pointInfo = this._getPointInfo(ev);\n // 每次都获取图形有一定成本,后期可以考虑进行缓存策略\n var shape = this._getShape(pointInfo, ev);\n var method = this[\"_on\" + type];\n var leaveCanvas = false;\n if (method) {\n method.call(this, pointInfo, shape, ev);\n } else {\n var preShape = this.currentShape;\n // 如果进入、移出画布时存在图形,则要分别触发事件\n if (type === 'mouseenter' || type === 'dragenter' || type === 'mouseover') {\n this._emitEvent(type, ev, pointInfo, null, null, shape); // 先进入画布\n if (shape) {\n this._emitEvent(type, ev, pointInfo, shape, null, shape); // 再触发图形的事件\n }\n\n if (type === 'mouseenter' && this.draggingShape) {\n // 如果正在拖拽图形, 则触发 dragleave\n this._emitEvent('dragenter', ev, pointInfo, null);\n }\n } else if (type === 'mouseleave' || type === 'dragleave' || type === 'mouseout') {\n leaveCanvas = true;\n if (preShape) {\n this._emitEvent(type, ev, pointInfo, preShape, preShape, null); // 先触发图形的事件\n }\n\n this._emitEvent(type, ev, pointInfo, null, preShape, null); // 再触发离开画布事件\n if (type === 'mouseleave' && this.draggingShape) {\n this._emitEvent('dragleave', ev, pointInfo, null);\n }\n } else {\n this._emitEvent(type, ev, pointInfo, shape, null, null); // 一般事件中不需要考虑 from, to\n }\n }\n\n if (!leaveCanvas) {\n this.currentShape = shape;\n }\n // 当鼠标从画布移动到 shape 或者从 preShape 移动到 shape 时,应用 shape 上的鼠标样式\n if (shape && !shape.get('destroyed')) {\n var canvas = this.canvas;\n var el = canvas.get('el');\n el.style.cursor = shape.attr('cursor') || canvas.get('cursor');\n }\n };\n // 记录下点击的位置、图形,便于拖拽事件、click 事件的判定\n EventController.prototype._onmousedown = function (pointInfo, shape, event) {\n // 只有鼠标左键的 mousedown 事件才会设置 mousedownShape 等属性,避免鼠标右键的 mousedown 事件引起其他事件发生\n if (event.button === LEFT_BTN_CODE) {\n this.mousedownShape = shape;\n this.mousedownPoint = pointInfo;\n this.mousedownTimeStamp = event.timeStamp;\n }\n this._emitEvent('mousedown', event, pointInfo, shape, null, null); // mousedown 不考虑fromShape, toShape\n };\n // mouseleave 和 mouseenter 都是成对存在的\n // mouseenter 和 mouseover 同时触发\n EventController.prototype._emitMouseoverEvents = function (event, pointInfo, fromShape, toShape) {\n var el = this.canvas.get('el');\n if (fromShape !== toShape) {\n if (fromShape) {\n this._emitEvent('mouseout', event, pointInfo, fromShape, fromShape, toShape);\n this._emitEvent('mouseleave', event, pointInfo, fromShape, fromShape, toShape);\n // 当鼠标从 fromShape 移动到画布上时,重置鼠标样式\n if (!toShape || toShape.get('destroyed')) {\n el.style.cursor = this.canvas.get('cursor');\n }\n }\n if (toShape) {\n this._emitEvent('mouseover', event, pointInfo, toShape, fromShape, toShape);\n this._emitEvent('mouseenter', event, pointInfo, toShape, fromShape, toShape);\n }\n }\n };\n // dragover 不等同于 mouseover,而等同于 mousemove\n EventController.prototype._emitDragoverEvents = function (event, pointInfo, fromShape, toShape, isCanvasEmit) {\n if (toShape) {\n if (toShape !== fromShape) {\n if (fromShape) {\n this._emitEvent('dragleave', event, pointInfo, fromShape, fromShape, toShape);\n }\n this._emitEvent('dragenter', event, pointInfo, toShape, fromShape, toShape);\n }\n if (!isCanvasEmit) {\n this._emitEvent('dragover', event, pointInfo, toShape);\n }\n } else if (fromShape) {\n // TODO: 此处判断有问题,当 drag 图形时,也会触发一次 dragleave 事件,因为此时 toShape 为 null,这不是所期望的\n // 经过空白区域\n this._emitEvent('dragleave', event, pointInfo, fromShape, fromShape, toShape);\n }\n if (isCanvasEmit) {\n this._emitEvent('dragover', event, pointInfo, toShape);\n }\n };\n // drag 完成后,需要做一些清理工作\n EventController.prototype._afterDrag = function (draggingShape, pointInfo, event) {\n if (draggingShape) {\n draggingShape.set('capture', true); // 恢复可以拾取\n this.draggingShape = null;\n }\n this.dragging = false;\n // drag 完成后,有可能 draggingShape 已经移动到了当前位置,所以不能直接取当前图形\n var shape = this._getShape(pointInfo, event);\n // 拖拽完成后,进行 enter,leave 的判定\n if (shape !== draggingShape) {\n this._emitMouseoverEvents(event, pointInfo, draggingShape, shape);\n }\n this.currentShape = shape; // 更新当前 shape,如果不处理当前图形的 mouseleave 事件可能会出问题\n };\n // 按键抬起时,会终止拖拽、触发点击\n EventController.prototype._onmouseup = function (pointInfo, shape, event) {\n // eevent.button === 0 表示鼠标左键事件,此处加上判断主要是为了避免右键鼠标会触发 mouseup 和 click 事件\n // ref: https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button\n if (event.button === LEFT_BTN_CODE) {\n var draggingShape = this.draggingShape;\n if (this.dragging) {\n // 存在可以拖拽的图形,同时拖拽到其他图形上时触发 drag 事件\n if (draggingShape) {\n this._emitEvent('drop', event, pointInfo, shape);\n }\n this._emitEvent('dragend', event, pointInfo, draggingShape);\n this._afterDrag(draggingShape, pointInfo, event);\n } else {\n this._emitEvent('mouseup', event, pointInfo, shape); // 先触发 mouseup 再触发 click\n if (shape === this.mousedownShape) {\n this._emitEvent('click', event, pointInfo, shape);\n }\n this.mousedownShape = null;\n this.mousedownPoint = null;\n }\n }\n };\n // 当触发浏览器的 dragover 事件时,不会再触发 mousemove ,所以这时候的 dragenter, dragleave 事件需要重新处理\n EventController.prototype._ondragover = function (pointInfo, shape, event) {\n event.preventDefault(); // 如果不对 dragover 进行 preventDefault,则不会在 canvas 上触发 drop 事件\n var preShape = this.currentShape;\n this._emitDragoverEvents(event, pointInfo, preShape, shape, true);\n };\n // 大量的图形事件,都通过 mousemove 模拟\n EventController.prototype._onmousemove = function (pointInfo, shape, event) {\n var canvas = this.canvas;\n var preShape = this.currentShape;\n var draggingShape = this.draggingShape;\n // 正在拖拽时\n if (this.dragging) {\n // 正在拖拽中\n if (draggingShape) {\n // 如果拖拽了 shape 会触发 dragenter, dragleave, dragover 和 drag 事件\n this._emitDragoverEvents(event, pointInfo, preShape, shape, false);\n }\n // 如果存在 draggingShape 则会在 draggingShape 上触发 drag 事件,冒泡到 canvas 上\n // 否则在 canvas 上触发 drag 事件\n this._emitEvent('drag', event, pointInfo, draggingShape);\n } else {\n var mousedownPoint = this.mousedownPoint;\n if (mousedownPoint) {\n // 当鼠标点击下去,同时移动时,进行 drag 判定\n var mousedownShape = this.mousedownShape;\n var now = event.timeStamp;\n var timeWindow = now - this.mousedownTimeStamp;\n var dx = mousedownPoint.clientX - pointInfo.clientX;\n var dy = mousedownPoint.clientY - pointInfo.clientY;\n var dist = dx * dx + dy * dy;\n if (timeWindow > 120 || dist > CLICK_OFFSET) {\n if (mousedownShape && mousedownShape.get('draggable')) {\n // 设置了 draggable 的 shape 才能触发 drag 相关的事件\n draggingShape = this.mousedownShape; // 拖动鼠标点下时的 shape\n draggingShape.set('capture', false); // 禁止继续拾取,否则无法进行 dragover,dragenter,dragleave,drop的判定\n this.draggingShape = draggingShape;\n this.dragging = true;\n this._emitEvent('dragstart', event, pointInfo, draggingShape);\n // 清理按下鼠标时缓存的值\n this.mousedownShape = null;\n this.mousedownPoint = null;\n } else if (!mousedownShape && canvas.get('draggable')) {\n // 设置了 draggable 的 canvas 才能触发 drag 相关的事件\n this.dragging = true;\n this._emitEvent('dragstart', event, pointInfo, null);\n // 清理按下鼠标时缓存的值\n this.mousedownShape = null;\n this.mousedownPoint = null;\n } else {\n this._emitMouseoverEvents(event, pointInfo, preShape, shape);\n this._emitEvent('mousemove', event, pointInfo, shape);\n }\n } else {\n this._emitMouseoverEvents(event, pointInfo, preShape, shape);\n this._emitEvent('mousemove', event, pointInfo, shape);\n }\n } else {\n // 没有按键按下时,则直接触发 mouse over 相关的各种事件\n this._emitMouseoverEvents(event, pointInfo, preShape, shape);\n // 始终触发移动\n this._emitEvent('mousemove', event, pointInfo, shape);\n }\n }\n };\n // 触发事件\n EventController.prototype._emitEvent = function (type, event, pointInfo, shape, fromShape, toShape) {\n var eventObj = this._getEventObj(type, event, pointInfo, shape, fromShape, toShape);\n // 存在 shape 触发,则进行冒泡处理\n if (shape) {\n eventObj.shape = shape;\n // 触发 shape 上的事件\n emitTargetEvent(shape, type, eventObj);\n var parent_1 = shape.getParent();\n // 执行冒泡\n while (parent_1) {\n // 委托事件要先触发\n parent_1.emitDelegation(type, eventObj);\n // 事件冒泡停止,不能妨碍委托事件\n if (!eventObj.propagationStopped) {\n bubbleEvent(parent_1, type, eventObj);\n }\n eventObj.propagationPath.push(parent_1);\n parent_1 = parent_1.getParent();\n }\n } else {\n // 如果没有 shape 直接在 canvas 上触发\n var canvas = this.canvas;\n // 直接触发 canvas 上的事件\n emitTargetEvent(canvas, type, eventObj);\n }\n };\n EventController.prototype.destroy = function () {\n // 清理事件\n this._clearEvents();\n // 清理缓存的对象\n this.canvas = null;\n this.currentShape = null;\n this.draggingShape = null;\n this.mousedownPoint = null;\n this.mousedownShape = null;\n this.mousedownTimeStamp = null;\n };\n return EventController;\n}();\nexport default EventController;","import { __extends } from \"tslib\";\nimport { detect } from 'detect-browser';\nimport Container from './container';\nimport { isBrowser, isNil, isString } from '../util/util';\nimport Timeline from '../animate/timeline';\nimport EventController from '../event/event-contoller';\nvar PX_SUFFIX = 'px';\nvar browser = detect();\nvar isFirefox = browser && browser.name === 'firefox';\nvar Canvas = /** @class */function (_super) {\n __extends(Canvas, _super);\n function Canvas(cfg) {\n var _this = _super.call(this, cfg) || this;\n _this.initContainer();\n _this.initDom();\n _this.initEvents();\n _this.initTimeline();\n return _this;\n }\n Canvas.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n // set default cursor style for canvas\n cfg['cursor'] = 'default';\n // CSS transform 目前尚未经过长时间验证,为了避免影响上层业务,默认关闭,上层按需开启\n cfg['supportCSSTransform'] = false;\n return cfg;\n };\n /**\n * @protected\n * 初始化容器\n */\n Canvas.prototype.initContainer = function () {\n var container = this.get('container');\n if (isString(container)) {\n container = document.getElementById(container);\n this.set('container', container);\n }\n };\n /**\n * @protected\n * 初始化 DOM\n */\n Canvas.prototype.initDom = function () {\n var el = this.createDom();\n this.set('el', el);\n // 附加到容器\n var container = this.get('container');\n container.appendChild(el);\n // 设置初始宽度\n this.setDOMSize(this.get('width'), this.get('height'));\n };\n /**\n * @protected\n * 初始化绑定的事件\n */\n Canvas.prototype.initEvents = function () {\n var eventController = new EventController({\n canvas: this\n });\n eventController.init();\n this.set('eventController', eventController);\n };\n /**\n * @protected\n * 初始化时间轴\n */\n Canvas.prototype.initTimeline = function () {\n var timeline = new Timeline(this);\n this.set('timeline', timeline);\n };\n /**\n * @protected\n * 修改画布对应的 DOM 的大小\n * @param {number} width 宽度\n * @param {number} height 高度\n */\n Canvas.prototype.setDOMSize = function (width, height) {\n var el = this.get('el');\n if (isBrowser) {\n el.style.width = width + PX_SUFFIX;\n el.style.height = height + PX_SUFFIX;\n }\n };\n // 实现接口\n Canvas.prototype.changeSize = function (width, height) {\n this.setDOMSize(width, height);\n this.set('width', width);\n this.set('height', height);\n this.onCanvasChange('changeSize');\n };\n /**\n * 获取当前的渲染引擎\n * @return {Renderer} 返回当前的渲染引擎\n */\n Canvas.prototype.getRenderer = function () {\n return this.get('renderer');\n };\n /**\n * 获取画布的 cursor 样式\n * @return {Cursor}\n */\n Canvas.prototype.getCursor = function () {\n return this.get('cursor');\n };\n /**\n * 设置画布的 cursor 样式\n * @param {Cursor} cursor cursor 样式\n */\n Canvas.prototype.setCursor = function (cursor) {\n this.set('cursor', cursor);\n var el = this.get('el');\n if (isBrowser && el) {\n // 直接设置样式,不等待鼠标移动时再设置\n el.style.cursor = cursor;\n }\n };\n // 实现接口\n Canvas.prototype.getPointByEvent = function (ev) {\n var supportCSSTransform = this.get('supportCSSTransform');\n if (supportCSSTransform) {\n // For Firefox <= 38\n if (isFirefox && !isNil(ev.layerX) && ev.layerX !== ev.offsetX) {\n return {\n x: ev.layerX,\n y: ev.layerY\n };\n }\n if (!isNil(ev.offsetX)) {\n // For IE6+, Firefox >= 39, Chrome, Safari, Opera\n return {\n x: ev.offsetX,\n y: ev.offsetY\n };\n }\n }\n // should calculate by self for other cases, like Safari in ios\n // TODO: support CSS transform\n var _a = this.getClientByEvent(ev),\n clientX = _a.x,\n clientY = _a.y;\n return this.getPointByClient(clientX, clientY);\n };\n // 获取 touch 事件的 clientX 和 clientY 需要单独处理\n Canvas.prototype.getClientByEvent = function (ev) {\n var clientInfo = ev;\n if (ev.touches) {\n if (ev.type === 'touchend') {\n clientInfo = ev.changedTouches[0];\n } else {\n clientInfo = ev.touches[0];\n }\n }\n return {\n x: clientInfo.clientX,\n y: clientInfo.clientY\n };\n };\n // 实现接口\n Canvas.prototype.getPointByClient = function (clientX, clientY) {\n var el = this.get('el');\n var bbox = el.getBoundingClientRect();\n return {\n x: clientX - bbox.left,\n y: clientY - bbox.top\n };\n };\n // 实现接口\n Canvas.prototype.getClientByPoint = function (x, y) {\n var el = this.get('el');\n var bbox = el.getBoundingClientRect();\n return {\n x: x + bbox.left,\n y: y + bbox.top\n };\n };\n // 实现接口\n Canvas.prototype.draw = function () {};\n /**\n * @protected\n * 销毁 DOM 容器\n */\n Canvas.prototype.removeDom = function () {\n var el = this.get('el');\n el.parentNode.removeChild(el);\n };\n /**\n * @protected\n * 清理所有的事件\n */\n Canvas.prototype.clearEvents = function () {\n var eventController = this.get('eventController');\n eventController.destroy();\n };\n Canvas.prototype.isCanvas = function () {\n return true;\n };\n Canvas.prototype.getParent = function () {\n return null;\n };\n Canvas.prototype.destroy = function () {\n var timeline = this.get('timeline');\n if (this.get('destroyed')) {\n return;\n }\n this.clear();\n // 同初始化时相反顺序调用\n if (timeline) {\n // 画布销毁时自动停止动画\n timeline.stop();\n }\n this.clearEvents();\n this.removeDom();\n _super.prototype.destroy.call(this);\n };\n return Canvas;\n}(Container);\nexport default Canvas;","import { __extends } from \"tslib\";\nimport Element from './element';\nimport { isFunction, isObject, each, removeFromArray, upperFirst, isAllowCapture } from '../util/util';\nvar SHAPE_MAP = {};\nvar INDEX = '_INDEX';\n/**\n * 设置 canvas\n * @param {IElement} element 元素\n * @param {ICanvas} canvas 画布\n */\nfunction setCanvas(element, canvas) {\n element.set('canvas', canvas);\n if (element.isGroup()) {\n var children = element.get('children');\n if (children.length) {\n children.forEach(function (child) {\n setCanvas(child, canvas);\n });\n }\n }\n}\n/**\n * 设置 timeline\n * @param {IElement} element 元素\n * @param {Timeline} timeline 时间轴\n */\nfunction setTimeline(element, timeline) {\n element.set('timeline', timeline);\n if (element.isGroup()) {\n var children = element.get('children');\n if (children.length) {\n children.forEach(function (child) {\n setTimeline(child, timeline);\n });\n }\n }\n}\nfunction contains(container, element) {\n var children = container.getChildren();\n return children.indexOf(element) >= 0;\n}\nfunction removeChild(container, element, destroy) {\n if (destroy === void 0) {\n destroy = true;\n }\n // 不再调用 element.remove() 方法,会出现循环调用\n if (destroy) {\n element.destroy();\n } else {\n element.set('parent', null);\n element.set('canvas', null);\n }\n removeFromArray(container.getChildren(), element);\n}\nfunction getComparer(compare) {\n return function (left, right) {\n var result = compare(left, right);\n return result === 0 ? left[INDEX] - right[INDEX] : result;\n };\n}\nvar Container = /** @class */function (_super) {\n __extends(Container, _super);\n function Container() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Container.prototype.isCanvas = function () {\n return false;\n };\n // 根据子节点确定 BBox\n Container.prototype.getBBox = function () {\n // 所有的值可能在画布的可视区外\n var minX = Infinity;\n var maxX = -Infinity;\n var minY = Infinity;\n var maxY = -Infinity;\n // 将可见元素、图形以及不为空的图形分组筛选出来,用于包围盒合并\n var children = this.getChildren().filter(function (child) {\n return child.get('visible') && (!child.isGroup() || child.isGroup() && child.getChildren().length > 0);\n });\n if (children.length > 0) {\n each(children, function (child) {\n var _a = child.getBBox(),\n childMinX = _a.minX,\n childMaxX = _a.maxX,\n childMinY = _a.minY,\n childMaxY = _a.maxY;\n if (childMinX < minX) {\n minX = childMinX;\n }\n if (childMaxX > maxX) {\n maxX = childMaxX;\n }\n if (childMinY < minY) {\n minY = childMinY;\n }\n if (childMaxY > maxY) {\n maxY = childMaxY;\n }\n });\n } else {\n minX = 0;\n maxX = 0;\n minY = 0;\n maxY = 0;\n }\n var box = {\n x: minX,\n y: minY,\n minX: minX,\n minY: minY,\n maxX: maxX,\n maxY: maxY,\n width: maxX - minX,\n height: maxY - minY\n };\n return box;\n };\n // 获取画布的包围盒\n Container.prototype.getCanvasBBox = function () {\n var minX = Infinity;\n var maxX = -Infinity;\n var minY = Infinity;\n var maxY = -Infinity;\n // 将可见元素、图形以及不为空的图形分组筛选出来,用于包围盒合并\n var children = this.getChildren().filter(function (child) {\n return child.get('visible') && (!child.isGroup() || child.isGroup() && child.getChildren().length > 0);\n });\n if (children.length > 0) {\n each(children, function (child) {\n var _a = child.getCanvasBBox(),\n childMinX = _a.minX,\n childMaxX = _a.maxX,\n childMinY = _a.minY,\n childMaxY = _a.maxY;\n if (childMinX < minX) {\n minX = childMinX;\n }\n if (childMaxX > maxX) {\n maxX = childMaxX;\n }\n if (childMinY < minY) {\n minY = childMinY;\n }\n if (childMaxY > maxY) {\n maxY = childMaxY;\n }\n });\n } else {\n minX = 0;\n maxX = 0;\n minY = 0;\n maxY = 0;\n }\n var box = {\n x: minX,\n y: minY,\n minX: minX,\n minY: minY,\n maxX: maxX,\n maxY: maxY,\n width: maxX - minX,\n height: maxY - minY\n };\n return box;\n };\n Container.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n cfg['children'] = [];\n return cfg;\n };\n Container.prototype.onAttrChange = function (name, value, originValue) {\n _super.prototype.onAttrChange.call(this, name, value, originValue);\n if (name === 'matrix') {\n var totalMatrix = this.getTotalMatrix();\n this._applyChildrenMarix(totalMatrix);\n }\n };\n // 不但应用到自己身上还要应用于子元素\n Container.prototype.applyMatrix = function (matrix) {\n var preTotalMatrix = this.getTotalMatrix();\n _super.prototype.applyMatrix.call(this, matrix);\n var totalMatrix = this.getTotalMatrix();\n // totalMatrix 没有发生变化时,这里仅考虑两者都为 null 时\n // 不继续向下传递矩阵\n if (totalMatrix === preTotalMatrix) {\n return;\n }\n this._applyChildrenMarix(totalMatrix);\n };\n // 在子元素上设置矩阵\n Container.prototype._applyChildrenMarix = function (totalMatrix) {\n var children = this.getChildren();\n each(children, function (child) {\n child.applyMatrix(totalMatrix);\n });\n };\n // 兼容老版本的接口\n Container.prototype.addShape = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var type = args[0];\n var cfg = args[1];\n if (isObject(type)) {\n cfg = type;\n } else {\n cfg['type'] = type;\n }\n var shapeType = SHAPE_MAP[cfg.type];\n if (!shapeType) {\n shapeType = upperFirst(cfg.type);\n SHAPE_MAP[cfg.type] = shapeType;\n }\n var ShapeBase = this.getShapeBase();\n var shape = new ShapeBase[shapeType](cfg);\n this.add(shape);\n return shape;\n };\n Container.prototype.addGroup = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var groupClass = args[0],\n cfg = args[1];\n var group;\n if (isFunction(groupClass)) {\n if (cfg) {\n group = new groupClass(cfg);\n } else {\n group = new groupClass({\n // canvas,\n parent: this\n });\n }\n } else {\n var tmpCfg = groupClass || {};\n var TmpGroupClass = this.getGroupBase();\n group = new TmpGroupClass(tmpCfg);\n }\n this.add(group);\n return group;\n };\n Container.prototype.getCanvas = function () {\n var canvas;\n if (this.isCanvas()) {\n canvas = this;\n } else {\n canvas = this.get('canvas');\n }\n return canvas;\n };\n Container.prototype.getShape = function (x, y, ev) {\n // 如果不支持拾取,则直接返回\n if (!isAllowCapture(this)) {\n return null;\n }\n var children = this.getChildren();\n var shape;\n // 如果容器是 group\n if (!this.isCanvas()) {\n var v = [x, y, 1];\n // 将 x, y 转换成对应于 group 的局部坐标\n v = this.invertFromMatrix(v);\n if (!this.isClipped(v[0], v[1])) {\n shape = this._findShape(children, v[0], v[1], ev);\n }\n } else {\n shape = this._findShape(children, x, y, ev);\n }\n return shape;\n };\n Container.prototype._findShape = function (children, x, y, ev) {\n var shape = null;\n for (var i = children.length - 1; i >= 0; i--) {\n var child = children[i];\n if (isAllowCapture(child)) {\n if (child.isGroup()) {\n shape = child.getShape(x, y, ev);\n } else if (child.isHit(x, y)) {\n shape = child;\n }\n }\n if (shape) {\n break;\n }\n }\n return shape;\n };\n Container.prototype.add = function (element) {\n var canvas = this.getCanvas();\n var children = this.getChildren();\n var timeline = this.get('timeline');\n var preParent = element.getParent();\n if (preParent) {\n removeChild(preParent, element, false);\n }\n element.set('parent', this);\n if (canvas) {\n setCanvas(element, canvas);\n }\n if (timeline) {\n setTimeline(element, timeline);\n }\n children.push(element);\n element.onCanvasChange('add');\n this._applyElementMatrix(element);\n };\n // 将当前容器的矩阵应用到子元素\n Container.prototype._applyElementMatrix = function (element) {\n var totalMatrix = this.getTotalMatrix();\n // 添加图形或者分组时,需要把当前图元的矩阵设置进去\n if (totalMatrix) {\n element.applyMatrix(totalMatrix);\n }\n };\n Container.prototype.getChildren = function () {\n return this.get('children');\n };\n Container.prototype.sort = function () {\n var children = this.getChildren();\n // 稳定排序\n each(children, function (child, index) {\n child[INDEX] = index;\n return child;\n });\n children.sort(getComparer(function (obj1, obj2) {\n return obj1.get('zIndex') - obj2.get('zIndex');\n }));\n this.onCanvasChange('sort');\n };\n Container.prototype.clear = function () {\n this.set('clearing', true);\n if (this.destroyed) {\n return;\n }\n var children = this.getChildren();\n for (var i = children.length - 1; i >= 0; i--) {\n children[i].destroy(); // 销毁子元素\n }\n\n this.set('children', []);\n this.onCanvasChange('clear');\n this.set('clearing', false);\n };\n Container.prototype.destroy = function () {\n if (this.get('destroyed')) {\n return;\n }\n this.clear();\n _super.prototype.destroy.call(this);\n };\n /**\n * 获取第一个子元素\n * @return {IElement} 第一个元素\n */\n Container.prototype.getFirst = function () {\n return this.getChildByIndex(0);\n };\n /**\n * 获取最后一个子元素\n * @return {IElement} 元素\n */\n Container.prototype.getLast = function () {\n var children = this.getChildren();\n return this.getChildByIndex(children.length - 1);\n };\n /**\n * 根据索引获取子元素\n * @return {IElement} 第一个元素\n */\n Container.prototype.getChildByIndex = function (index) {\n var children = this.getChildren();\n return children[index];\n };\n /**\n * 子元素的数量\n * @return {number} 子元素数量\n */\n Container.prototype.getCount = function () {\n var children = this.getChildren();\n return children.length;\n };\n /**\n * 是否包含对应元素\n * @param {IElement} element 元素\n * @return {boolean}\n */\n Container.prototype.contain = function (element) {\n var children = this.getChildren();\n return children.indexOf(element) > -1;\n };\n /**\n * 移除对应子元素\n * @param {IElement} element 子元素\n * @param {boolean} destroy 是否销毁子元素,默认为 true\n */\n Container.prototype.removeChild = function (element, destroy) {\n if (destroy === void 0) {\n destroy = true;\n }\n if (this.contain(element)) {\n element.remove(destroy);\n }\n };\n /**\n * 查找所有匹配的元素\n * @param {ElementFilterFn} fn 匹配函数\n * @return {IElement[]} 元素数组\n */\n Container.prototype.findAll = function (fn) {\n var rst = [];\n var children = this.getChildren();\n each(children, function (element) {\n if (fn(element)) {\n rst.push(element);\n }\n if (element.isGroup()) {\n rst = rst.concat(element.findAll(fn));\n }\n });\n return rst;\n };\n /**\n * 查找元素,找到第一个返回\n * @param {ElementFilterFn} fn 匹配函数\n * @return {IElement|null} 元素,可以为空\n */\n Container.prototype.find = function (fn) {\n var rst = null;\n var children = this.getChildren();\n each(children, function (element) {\n if (fn(element)) {\n rst = element;\n } else if (element.isGroup()) {\n rst = element.find(fn);\n }\n if (rst) {\n return false;\n }\n });\n return rst;\n };\n /**\n * 根据 ID 查找元素\n * @param {string} id 元素 id\n * @return {IElement|null} 元素\n */\n Container.prototype.findById = function (id) {\n return this.find(function (element) {\n return element.get('id') === id;\n });\n };\n /**\n * 该方法即将废弃,不建议使用\n * 根据 className 查找元素\n * TODO: 该方式定义暂时只给 G6 3.3 以后的版本使用,待 G6 中的 findByClassName 方法移除后,G 也需要同步移除\n * @param {string} className 元素 className\n * @return {IElement | null} 元素\n */\n Container.prototype.findByClassName = function (className) {\n return this.find(function (element) {\n return element.get('className') === className;\n });\n };\n /**\n * 根据 name 查找元素列表\n * @param {string} name 元素名称\n * @return {IElement[]} 元素\n */\n Container.prototype.findAllByName = function (name) {\n return this.findAll(function (element) {\n return element.get('name') === name;\n });\n };\n return Container;\n}(Element);\nexport default Container;","import { __extends } from \"tslib\";\nimport { each, isEqual, isFunction, isNumber, isObject, isArray, noop, mix, upperFirst, uniqueId } from '@antv/util';\nimport { ext } from '@antv/matrix-util';\nimport { removeFromArray, isParent } from '../util/util';\nimport { multiplyMatrix, multiplyVec2, invert } from '../util/matrix';\nimport Base from './base';\nvar transform = ext.transform;\nvar MATRIX = 'matrix';\nvar CLONE_CFGS = ['zIndex', 'capture', 'visible', 'type'];\n// 可以在 toAttrs 中设置,但不属于绘图属性的字段\nvar RESERVED_PORPS = ['repeat'];\nvar DELEGATION_SPLIT = ':';\nvar WILDCARD = '*';\n// 需要考虑数组嵌套数组的场景\n// 数组嵌套对象的场景不考虑\nfunction _cloneArrayAttr(arr) {\n var result = [];\n for (var i = 0; i < arr.length; i++) {\n if (isArray(arr[i])) {\n result.push([].concat(arr[i]));\n } else {\n result.push(arr[i]);\n }\n }\n return result;\n}\nfunction getFormatFromAttrs(toAttrs, shape) {\n var fromAttrs = {};\n var attrs = shape.attrs;\n for (var k in toAttrs) {\n fromAttrs[k] = attrs[k];\n }\n return fromAttrs;\n}\nfunction getFormatToAttrs(props, shape) {\n var toAttrs = {};\n var attrs = shape.attr();\n each(props, function (v, k) {\n if (RESERVED_PORPS.indexOf(k) === -1 && !isEqual(attrs[k], v)) {\n toAttrs[k] = v;\n }\n });\n return toAttrs;\n}\nfunction checkExistedAttrs(animations, animation) {\n if (animation.onFrame) {\n return animations;\n }\n var startTime = animation.startTime,\n delay = animation.delay,\n duration = animation.duration;\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n each(animations, function (item) {\n // 后一个动画开始执行的时间 < 前一个动画的结束时间 && 后一个动画的执行时间 > 前一个动画的延迟\n if (startTime + delay < item.startTime + item.delay + item.duration && duration > item.delay) {\n each(animation.toAttrs, function (v, k) {\n if (hasOwnProperty.call(item.toAttrs, k)) {\n delete item.toAttrs[k];\n delete item.fromAttrs[k];\n }\n });\n }\n });\n return animations;\n}\nvar Element = /** @class */function (_super) {\n __extends(Element, _super);\n function Element(cfg) {\n var _this = _super.call(this, cfg) || this;\n /**\n * @protected\n * 图形属性\n * @type {ShapeAttrs}\n */\n _this.attrs = {};\n var attrs = _this.getDefaultAttrs();\n mix(attrs, cfg.attrs);\n _this.attrs = attrs;\n _this.initAttrs(attrs);\n _this.initAnimate(); // 初始化动画\n return _this;\n }\n // override\n Element.prototype.getDefaultCfg = function () {\n return {\n visible: true,\n capture: true,\n zIndex: 0\n };\n };\n /**\n * @protected\n * 获取默认的属相\n */\n Element.prototype.getDefaultAttrs = function () {\n return {\n matrix: this.getDefaultMatrix(),\n opacity: 1\n };\n };\n /**\n * @protected\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n Element.prototype.onCanvasChange = function (changeType) {};\n /**\n * @protected\n * 初始化属性,有些属性需要加工\n * @param {object} attrs 属性值\n */\n Element.prototype.initAttrs = function (attrs) {};\n /**\n * @protected\n * 初始化动画\n */\n Element.prototype.initAnimate = function () {\n this.set('animable', true);\n this.set('animating', false);\n };\n Element.prototype.isGroup = function () {\n return false;\n };\n Element.prototype.getParent = function () {\n return this.get('parent');\n };\n Element.prototype.getCanvas = function () {\n return this.get('canvas');\n };\n Element.prototype.attr = function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var name = args[0],\n value = args[1];\n if (!name) return this.attrs;\n if (isObject(name)) {\n for (var k in name) {\n this.setAttr(k, name[k]);\n }\n this.afterAttrsChange(name);\n return this;\n }\n if (args.length === 2) {\n this.setAttr(name, value);\n this.afterAttrsChange((_a = {}, _a[name] = value, _a));\n return this;\n }\n return this.attrs[name];\n };\n // 是否被裁剪,被裁剪则不显示,不参与拾取\n Element.prototype.isClipped = function (refX, refY) {\n var clip = this.getClip();\n return clip && !clip.isHit(refX, refY);\n };\n /**\n * 内部设置属性值的接口\n * @param {string} name 属性名\n * @param {any} value 属性值\n */\n Element.prototype.setAttr = function (name, value) {\n var originValue = this.attrs[name];\n if (originValue !== value) {\n this.attrs[name] = value;\n this.onAttrChange(name, value, originValue);\n }\n };\n /**\n * @protected\n * 属性值发生改变\n * @param {string} name 属性名\n * @param {any} value 属性值\n * @param {any} originValue 属性值\n */\n Element.prototype.onAttrChange = function (name, value, originValue) {\n if (name === 'matrix') {\n this.set('totalMatrix', null);\n }\n };\n /**\n * 属性更改后需要做的事情\n * @protected\n */\n Element.prototype.afterAttrsChange = function (targetAttrs) {\n if (this.cfg.isClipShape) {\n var applyTo = this.cfg.applyTo;\n if (applyTo) {\n applyTo.onCanvasChange('clip');\n }\n } else {\n this.onCanvasChange('attr');\n }\n };\n Element.prototype.show = function () {\n // 不是高频操作直接使用 set\n this.set('visible', true);\n this.onCanvasChange('show');\n return this;\n };\n Element.prototype.hide = function () {\n // 不是高频操作直接使用 set\n this.set('visible', false);\n this.onCanvasChange('hide');\n return this;\n };\n Element.prototype.setZIndex = function (zIndex) {\n this.set('zIndex', zIndex);\n var parent = this.getParent();\n if (parent) {\n // 改变 zIndex 不应该立即触发渲染 (调用 onCanvasChange('zIndex')),需要经过 sort 再触发\n parent.sort();\n }\n return this;\n };\n Element.prototype.toFront = function () {\n var parent = this.getParent();\n if (!parent) {\n return;\n }\n var children = parent.getChildren();\n var el = this.get('el');\n var index = children.indexOf(this);\n children.splice(index, 1);\n children.push(this);\n this.onCanvasChange('zIndex');\n };\n Element.prototype.toBack = function () {\n var parent = this.getParent();\n if (!parent) {\n return;\n }\n var children = parent.getChildren();\n var el = this.get('el');\n var index = children.indexOf(this);\n children.splice(index, 1);\n children.unshift(this);\n this.onCanvasChange('zIndex');\n };\n Element.prototype.remove = function (destroy) {\n if (destroy === void 0) {\n destroy = true;\n }\n var parent = this.getParent();\n if (parent) {\n removeFromArray(parent.getChildren(), this);\n if (!parent.get('clearing')) {\n // 如果父元素正在清理,当前元素不触发 remove\n this.onCanvasChange('remove');\n }\n } else {\n this.onCanvasChange('remove');\n }\n if (destroy) {\n this.destroy();\n }\n };\n Element.prototype.resetMatrix = function () {\n this.attr(MATRIX, this.getDefaultMatrix());\n this.onCanvasChange('matrix');\n };\n Element.prototype.getMatrix = function () {\n return this.attr(MATRIX);\n };\n Element.prototype.setMatrix = function (m) {\n this.attr(MATRIX, m);\n this.onCanvasChange('matrix');\n };\n // 获取总的 matrix\n Element.prototype.getTotalMatrix = function () {\n var totalMatrix = this.cfg.totalMatrix;\n if (!totalMatrix) {\n var currentMatrix = this.attr('matrix');\n var parentMatrix = this.cfg.parentMatrix;\n if (parentMatrix && currentMatrix) {\n totalMatrix = multiplyMatrix(parentMatrix, currentMatrix);\n } else {\n totalMatrix = currentMatrix || parentMatrix;\n }\n this.set('totalMatrix', totalMatrix);\n }\n return totalMatrix;\n };\n // 上层分组设置 matrix\n Element.prototype.applyMatrix = function (matrix) {\n var currentMatrix = this.attr('matrix');\n var totalMatrix = null;\n if (matrix && currentMatrix) {\n totalMatrix = multiplyMatrix(matrix, currentMatrix);\n } else {\n totalMatrix = currentMatrix || matrix;\n }\n this.set('totalMatrix', totalMatrix);\n this.set('parentMatrix', matrix);\n };\n /**\n * @protected\n * 获取默认的矩阵\n * @returns {number[]|null} 默认的矩阵\n */\n Element.prototype.getDefaultMatrix = function () {\n return null;\n };\n // 将向量应用设置的矩阵\n Element.prototype.applyToMatrix = function (v) {\n var matrix = this.attr('matrix');\n if (matrix) {\n return multiplyVec2(matrix, v);\n }\n return v;\n };\n // 根据设置的矩阵,将向量转换相对于图形/分组的位置\n Element.prototype.invertFromMatrix = function (v) {\n var matrix = this.attr('matrix');\n if (matrix) {\n var invertMatrix = invert(matrix);\n if (invertMatrix) {\n return multiplyVec2(invertMatrix, v);\n }\n }\n return v;\n };\n // 设置 clip\n Element.prototype.setClip = function (clipCfg) {\n var canvas = this.getCanvas();\n // 应该只设置当前元素的 clip,不应该去修改 clip 本身,方便 clip 被复用\n // TODO: setClip 的传参既 shape 配置,也支持 shape 对象\n // const preShape = this.get('clipShape');\n // if (preShape) {\n // // 将之前的 clipShape 销毁\n // preShape.destroy();\n // }\n var clipShape = null;\n // 如果配置项为 null,则不移除 clipShape\n if (clipCfg) {\n var ShapeBase = this.getShapeBase();\n var shapeType = upperFirst(clipCfg.type);\n var Cons = ShapeBase[shapeType];\n if (Cons) {\n clipShape = new Cons({\n type: clipCfg.type,\n isClipShape: true,\n applyTo: this,\n attrs: clipCfg.attrs,\n canvas: canvas\n });\n }\n }\n this.set('clipShape', clipShape);\n this.onCanvasChange('clip');\n return clipShape;\n };\n Element.prototype.getClip = function () {\n // 高频率调用的地方直接使用 this.cfg.xxx\n var clipShape = this.cfg.clipShape;\n // 未设置时返回 Null,保证一致性\n if (!clipShape) {\n return null;\n }\n return clipShape;\n };\n Element.prototype.clone = function () {\n var _this = this;\n var originAttrs = this.attrs;\n var attrs = {};\n each(originAttrs, function (i, k) {\n if (isArray(originAttrs[k])) {\n attrs[k] = _cloneArrayAttr(originAttrs[k]);\n } else {\n attrs[k] = originAttrs[k];\n }\n });\n var cons = this.constructor;\n // @ts-ignore\n var clone = new cons({\n attrs: attrs\n });\n each(CLONE_CFGS, function (cfgName) {\n clone.set(cfgName, _this.get(cfgName));\n });\n return clone;\n };\n Element.prototype.destroy = function () {\n var destroyed = this.destroyed;\n if (destroyed) {\n return;\n }\n this.attrs = {};\n _super.prototype.destroy.call(this);\n // this.onCanvasChange('destroy');\n };\n /**\n * 是否处于动画暂停状态\n * @return {boolean} 是否处于动画暂停状态\n */\n Element.prototype.isAnimatePaused = function () {\n return this.get('_pause').isPaused;\n };\n /**\n * 执行动画,支持多种函数签名\n * 1. animate(toAttrs: ElementAttrs, duration: number, easing?: string, callback?: () => void, delay?: number)\n * 2. animate(onFrame: OnFrame, duration: number, easing?: string, callback?: () => void, delay?: number)\n * 3. animate(toAttrs: ElementAttrs, cfg: AnimateCfg)\n * 4. animate(onFrame: OnFrame, cfg: AnimateCfg)\n * 各个参数的含义为:\n * toAttrs 动画最终状态\n * onFrame 自定义帧动画函数\n * duration 动画执行时间\n * easing 动画缓动效果\n * callback 动画执行后的回调\n * delay 动画延迟时间\n */\n Element.prototype.animate = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (!this.get('timeline') && !this.get('canvas')) {\n return;\n }\n this.set('animating', true);\n var timeline = this.get('timeline');\n if (!timeline) {\n timeline = this.get('canvas').get('timeline');\n this.set('timeline', timeline);\n }\n var animations = this.get('animations') || [];\n // 初始化 tick\n if (!timeline.timer) {\n timeline.initTimer();\n }\n var toAttrs = args[0],\n duration = args[1],\n _a = args[2],\n easing = _a === void 0 ? 'easeLinear' : _a,\n _b = args[3],\n callback = _b === void 0 ? noop : _b,\n _c = args[4],\n delay = _c === void 0 ? 0 : _c;\n var onFrame;\n var repeat;\n var pauseCallback;\n var resumeCallback;\n var animateCfg;\n // 第二个参数,既可以是动画最终状态 toAttrs,也可以是自定义帧动画函数 onFrame\n if (isFunction(toAttrs)) {\n onFrame = toAttrs;\n toAttrs = {};\n } else if (isObject(toAttrs) && toAttrs.onFrame) {\n // 兼容 3.0 中的写法,onFrame 和 repeat 可在 toAttrs 中设置\n onFrame = toAttrs.onFrame;\n repeat = toAttrs.repeat;\n }\n // 第二个参数,既可以是执行时间 duration,也可以是动画参数 animateCfg\n if (isObject(duration)) {\n animateCfg = duration;\n duration = animateCfg.duration;\n easing = animateCfg.easing || 'easeLinear';\n delay = animateCfg.delay || 0;\n // animateCfg 中的设置优先级更高\n repeat = animateCfg.repeat || repeat || false;\n callback = animateCfg.callback || noop;\n pauseCallback = animateCfg.pauseCallback || noop;\n resumeCallback = animateCfg.resumeCallback || noop;\n } else {\n // 第四个参数,既可以是回调函数 callback,也可以是延迟时间 delay\n if (isNumber(callback)) {\n delay = callback;\n callback = null;\n }\n // 第三个参数,既可以是缓动参数 easing,也可以是回调函数 callback\n if (isFunction(easing)) {\n callback = easing;\n easing = 'easeLinear';\n } else {\n easing = easing || 'easeLinear';\n }\n }\n var formatToAttrs = getFormatToAttrs(toAttrs, this);\n var animation = {\n fromAttrs: getFormatFromAttrs(formatToAttrs, this),\n toAttrs: formatToAttrs,\n duration: duration,\n easing: easing,\n repeat: repeat,\n callback: callback,\n pauseCallback: pauseCallback,\n resumeCallback: resumeCallback,\n delay: delay,\n startTime: timeline.getTime(),\n id: uniqueId(),\n onFrame: onFrame,\n pathFormatted: false\n };\n // 如果动画元素队列中已经有这个图形了\n if (animations.length > 0) {\n // 先检查是否需要合并属性。若有相同的动画,将该属性从前一个动画中删除,直接用后一个动画中\n animations = checkExistedAttrs(animations, animation);\n } else {\n // 否则将图形添加到动画元素队列\n timeline.addAnimator(this);\n }\n animations.push(animation);\n this.set('animations', animations);\n this.set('_pause', {\n isPaused: false\n });\n };\n /**\n * 停止动画\n * @param {boolean} toEnd 是否到动画的最终状态\n */\n Element.prototype.stopAnimate = function (toEnd) {\n var _this = this;\n if (toEnd === void 0) {\n toEnd = true;\n }\n var animations = this.get('animations');\n each(animations, function (animation) {\n // 将动画执行到最后一帧\n if (toEnd) {\n if (animation.onFrame) {\n _this.attr(animation.onFrame(1));\n } else {\n _this.attr(animation.toAttrs);\n }\n }\n if (animation.callback) {\n // 动画停止时的回调\n animation.callback();\n }\n });\n this.set('animating', false);\n this.set('animations', []);\n };\n /**\n * 暂停动画\n */\n Element.prototype.pauseAnimate = function () {\n var timeline = this.get('timeline');\n var animations = this.get('animations');\n var pauseTime = timeline.getTime();\n each(animations, function (animation) {\n animation._paused = true;\n animation._pauseTime = pauseTime;\n if (animation.pauseCallback) {\n // 动画暂停时的回调\n animation.pauseCallback();\n }\n });\n // 记录下是在什么时候暂停的\n this.set('_pause', {\n isPaused: true,\n pauseTime: pauseTime\n });\n return this;\n };\n /**\n * 恢复动画\n */\n Element.prototype.resumeAnimate = function () {\n var timeline = this.get('timeline');\n var current = timeline.getTime();\n var animations = this.get('animations');\n var pauseTime = this.get('_pause').pauseTime;\n // 之后更新属性需要计算动画已经执行的时长,如果暂停了,就把初始时间调后\n each(animations, function (animation) {\n animation.startTime = animation.startTime + (current - pauseTime);\n animation._paused = false;\n animation._pauseTime = null;\n if (animation.resumeCallback) {\n animation.resumeCallback();\n }\n });\n this.set('_pause', {\n isPaused: false\n });\n this.set('animations', animations);\n return this;\n };\n /**\n * 触发委托事件\n * @param {string} type 事件类型\n * @param {GraphEvent} eventObj 事件对象\n */\n Element.prototype.emitDelegation = function (type, eventObj) {\n var _this = this;\n var paths = eventObj.propagationPath;\n var events = this.getEvents();\n var relativeShape;\n if (type === 'mouseenter') {\n relativeShape = eventObj.fromShape;\n } else if (type === 'mouseleave') {\n relativeShape = eventObj.toShape;\n }\n var _loop_1 = function _loop_1(i) {\n var element = paths[i];\n // 暂定跟 name 绑定\n var name_1 = element.get('name');\n if (name_1) {\n // 第一个 mouseenter 和 mouseleave 的停止即可,因为后面的都是前面的 Parent\n if (\n // 只有 element 是 Group 或者 Canvas 的时候,才需要判断 isParent\n (element.isGroup() || element.isCanvas && element.isCanvas()) && relativeShape && isParent(element, relativeShape)) {\n return \"break\";\n }\n if (isArray(name_1)) {\n each(name_1, function (subName) {\n _this.emitDelegateEvent(element, subName, eventObj);\n });\n } else {\n this_1.emitDelegateEvent(element, name_1, eventObj);\n }\n }\n };\n var this_1 = this;\n // 至少有一个对象,且第一个对象为 shape\n for (var i = 0; i < paths.length; i++) {\n var state_1 = _loop_1(i);\n if (state_1 === \"break\") break;\n }\n };\n Element.prototype.emitDelegateEvent = function (element, name, eventObj) {\n var events = this.getEvents();\n // 事件委托的形式 name:type\n var eventName = name + DELEGATION_SPLIT + eventObj.type;\n if (events[eventName] || events[WILDCARD]) {\n // 对于通配符 *,事件名称 = 委托事件名称\n eventObj.name = eventName;\n eventObj.currentTarget = element;\n eventObj.delegateTarget = this;\n // 将委托事件的监听对象 delegateObject 挂载到事件对象上\n eventObj.delegateObject = element.get('delegateObject');\n this.emit(eventName, eventObj);\n }\n };\n /**\n * 移动元素\n * @param {number} translateX 水平移动距离\n * @param {number} translateY 垂直移动距离\n * @return {IElement} 元素\n */\n Element.prototype.translate = function (translateX, translateY) {\n if (translateX === void 0) {\n translateX = 0;\n }\n if (translateY === void 0) {\n translateY = 0;\n }\n var matrix = this.getMatrix();\n var newMatrix = transform(matrix, [['t', translateX, translateY]]);\n this.setMatrix(newMatrix);\n return this;\n };\n /**\n * 移动元素到目标位置\n * @param {number} targetX 目标位置的水平坐标\n * @param {number} targetX 目标位置的垂直坐标\n * @return {IElement} 元素\n */\n Element.prototype.move = function (targetX, targetY) {\n var x = this.attr('x') || 0;\n var y = this.attr('y') || 0;\n this.translate(targetX - x, targetY - y);\n return this;\n };\n /**\n * 移动元素到目标位置,等价于 move 方法。由于 moveTo 的语义性更强,因此在文档中推荐使用 moveTo 方法\n * @param {number} targetX 目标位置的 x 轴坐标\n * @param {number} targetY 目标位置的 y 轴坐标\n * @return {IElement} 元素\n */\n Element.prototype.moveTo = function (targetX, targetY) {\n return this.move(targetX, targetY);\n };\n /**\n * 缩放元素\n * @param {number} ratioX 水平缩放比例\n * @param {number} ratioY 垂直缩放比例\n * @return {IElement} 元素\n */\n Element.prototype.scale = function (ratioX, ratioY) {\n var matrix = this.getMatrix();\n var newMatrix = transform(matrix, [['s', ratioX, ratioY || ratioX]]);\n this.setMatrix(newMatrix);\n return this;\n };\n /**\n * 以画布左上角 (0, 0) 为中心旋转元素\n * @param {number} radian 旋转角度(弧度值)\n * @return {IElement} 元素\n */\n Element.prototype.rotate = function (radian) {\n var matrix = this.getMatrix();\n var newMatrix = transform(matrix, [['r', radian]]);\n this.setMatrix(newMatrix);\n return this;\n };\n /**\n * 以起始点为中心旋转元素\n * @param {number} radian 旋转角度(弧度值)\n * @return {IElement} 元素\n */\n Element.prototype.rotateAtStart = function (rotate) {\n var _a = this.attr(),\n x = _a.x,\n y = _a.y;\n var matrix = this.getMatrix();\n var newMatrix = transform(matrix, [['t', -x, -y], ['r', rotate], ['t', x, y]]);\n this.setMatrix(newMatrix);\n return this;\n };\n /**\n * 以任意点 (x, y) 为中心旋转元素\n * @param {number} radian 旋转角度(弧度值)\n * @return {IElement} 元素\n */\n Element.prototype.rotateAtPoint = function (x, y, rotate) {\n var matrix = this.getMatrix();\n var newMatrix = transform(matrix, [['t', -x, -y], ['r', rotate], ['t', x, y]]);\n this.setMatrix(newMatrix);\n return this;\n };\n return Element;\n}(Base);\nexport default Element;","import { __extends } from \"tslib\";\nimport Container from './container';\nvar AbstractGroup = /** @class */function (_super) {\n __extends(AbstractGroup, _super);\n function AbstractGroup() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AbstractGroup.prototype.isGroup = function () {\n return true;\n };\n AbstractGroup.prototype.isEntityGroup = function () {\n return false;\n };\n AbstractGroup.prototype.clone = function () {\n var clone = _super.prototype.clone.call(this);\n // 获取构造函数\n var children = this.getChildren();\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n clone.add(child.clone());\n }\n return clone;\n };\n return AbstractGroup;\n}(Container);\nexport default AbstractGroup;","import { __extends } from \"tslib\";\nimport Element from './element';\nimport { multiplyVec2 } from '../util/matrix';\nvar AbstractShape = /** @class */function (_super) {\n __extends(AbstractShape, _super);\n function AbstractShape(cfg) {\n return _super.call(this, cfg) || this;\n }\n // 是否在包围盒内\n AbstractShape.prototype._isInBBox = function (refX, refY) {\n var bbox = this.getBBox();\n return bbox.minX <= refX && bbox.maxX >= refX && bbox.minY <= refY && bbox.maxY >= refY;\n };\n /**\n * 属性更改后需要做的事情\n * @protected\n * @param {ShapeAttrs} targetAttrs 渲染的图像属性\n */\n AbstractShape.prototype.afterAttrsChange = function (targetAttrs) {\n _super.prototype.afterAttrsChange.call(this, targetAttrs);\n this.clearCacheBBox();\n };\n // 计算包围盒时,需要缓存,这是一个高频的操作\n AbstractShape.prototype.getBBox = function () {\n var bbox = this.cfg.bbox;\n if (!bbox) {\n bbox = this.calculateBBox();\n this.set('bbox', bbox);\n }\n return bbox;\n };\n // 计算相对于画布的包围盒\n AbstractShape.prototype.getCanvasBBox = function () {\n var canvasBBox = this.cfg.canvasBBox;\n if (!canvasBBox) {\n canvasBBox = this.calculateCanvasBBox();\n this.set('canvasBBox', canvasBBox);\n }\n return canvasBBox;\n };\n AbstractShape.prototype.applyMatrix = function (matrix) {\n _super.prototype.applyMatrix.call(this, matrix);\n // 清理掉缓存的包围盒\n this.set('canvasBBox', null);\n };\n /**\n * 计算相对于画布的包围盒,默认等同于 bbox\n * @return {BBox} 包围盒\n */\n AbstractShape.prototype.calculateCanvasBBox = function () {\n var bbox = this.getBBox();\n var totalMatrix = this.getTotalMatrix();\n var minX = bbox.minX,\n minY = bbox.minY,\n maxX = bbox.maxX,\n maxY = bbox.maxY;\n if (totalMatrix) {\n var topLeft = multiplyVec2(totalMatrix, [bbox.minX, bbox.minY]);\n var topRight = multiplyVec2(totalMatrix, [bbox.maxX, bbox.minY]);\n var bottomLeft = multiplyVec2(totalMatrix, [bbox.minX, bbox.maxY]);\n var bottomRight = multiplyVec2(totalMatrix, [bbox.maxX, bbox.maxY]);\n minX = Math.min(topLeft[0], topRight[0], bottomLeft[0], bottomRight[0]);\n maxX = Math.max(topLeft[0], topRight[0], bottomLeft[0], bottomRight[0]);\n minY = Math.min(topLeft[1], topRight[1], bottomLeft[1], bottomRight[1]);\n maxY = Math.max(topLeft[1], topRight[1], bottomLeft[1], bottomRight[1]);\n }\n var attrs = this.attrs;\n // 如果存在 shadow 则计算 shadow\n if (attrs.shadowColor) {\n var _a = attrs.shadowBlur,\n shadowBlur = _a === void 0 ? 0 : _a,\n _b = attrs.shadowOffsetX,\n shadowOffsetX = _b === void 0 ? 0 : _b,\n _c = attrs.shadowOffsetY,\n shadowOffsetY = _c === void 0 ? 0 : _c;\n var shadowLeft = minX - shadowBlur + shadowOffsetX;\n var shadowRight = maxX + shadowBlur + shadowOffsetX;\n var shadowTop = minY - shadowBlur + shadowOffsetY;\n var shadowBottom = maxY + shadowBlur + shadowOffsetY;\n minX = Math.min(minX, shadowLeft);\n maxX = Math.max(maxX, shadowRight);\n minY = Math.min(minY, shadowTop);\n maxY = Math.max(maxY, shadowBottom);\n }\n return {\n x: minX,\n y: minY,\n minX: minX,\n minY: minY,\n maxX: maxX,\n maxY: maxY,\n width: maxX - minX,\n height: maxY - minY\n };\n };\n /**\n * @protected\n * 清理缓存的 bbox\n */\n AbstractShape.prototype.clearCacheBBox = function () {\n this.set('bbox', null);\n this.set('canvasBBox', null);\n };\n // 实现接口\n AbstractShape.prototype.isClipShape = function () {\n return this.get('isClipShape');\n };\n /**\n * @protected\n * 不同的图形自己实现是否在图形内部的逻辑,要判断边和填充区域\n * @param {number} refX 相对于图形的坐标 x\n * @param {number} refY 相对于图形的坐标 Y\n * @return {boolean} 点是否在图形内部\n */\n AbstractShape.prototype.isInShape = function (refX, refY) {\n return false;\n };\n /**\n * 是否仅仅使用 BBox 检测就可以判定拾取到图形\n * 默认是 false,但是有些图形例如 image、marker 等都可直接使用 BBox 的检测而不需要使用图形拾取\n * @return {Boolean} 仅仅使用 BBox 进行拾取\n */\n AbstractShape.prototype.isOnlyHitBox = function () {\n return false;\n };\n // 不同的 Shape 各自实现\n AbstractShape.prototype.isHit = function (x, y) {\n var startArrowShape = this.get('startArrowShape');\n var endArrowShape = this.get('endArrowShape');\n var vec = [x, y, 1];\n vec = this.invertFromMatrix(vec);\n var refX = vec[0],\n refY = vec[1];\n var inBBox = this._isInBBox(refX, refY);\n // 跳过图形的拾取,在某些图形中可以省略一倍的检测成本\n if (this.isOnlyHitBox()) {\n return inBBox;\n }\n // 被裁减掉的和不在包围盒内的不进行计算\n if (inBBox && !this.isClipped(refX, refY)) {\n // 对图形进行拾取判断\n if (this.isInShape(refX, refY)) {\n return true;\n }\n // 对起始箭头进行拾取判断\n if (startArrowShape && startArrowShape.isHit(refX, refY)) {\n return true;\n }\n // 对结束箭头进行拾取判断\n if (endArrowShape && endArrowShape.isHit(refX, refY)) {\n return true;\n }\n }\n return false;\n };\n return AbstractShape;\n}(Element);\nexport default AbstractShape;","export function linear(t) {\n return +t;\n}","export function quadIn(t) {\n return t * t;\n}\nexport function quadOut(t) {\n return t * (2 - t);\n}\nexport function quadInOut(t) {\n return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;\n}","export function cubicIn(t) {\n return t * t * t;\n}\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}","var exponent = 3;\nexport var polyIn = function custom(e) {\n e = +e;\n function polyIn(t) {\n return Math.pow(t, e);\n }\n polyIn.exponent = custom;\n return polyIn;\n}(exponent);\nexport var polyOut = function custom(e) {\n e = +e;\n function polyOut(t) {\n return 1 - Math.pow(1 - t, e);\n }\n polyOut.exponent = custom;\n return polyOut;\n}(exponent);\nexport var polyInOut = function custom(e) {\n e = +e;\n function polyInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\n }\n polyInOut.exponent = custom;\n return polyInOut;\n}(exponent);","var pi = Math.PI,\n halfPi = pi / 2;\nexport function sinIn(t) {\n return +t === 1 ? 1 : 1 - Math.cos(t * halfPi);\n}\nexport function sinOut(t) {\n return Math.sin(t * halfPi);\n}\nexport function sinInOut(t) {\n return (1 - Math.cos(pi * t)) / 2;\n}","// tpmt is two power minus ten times t scaled to [0,1]\nexport function tpmt(x) {\n return (Math.pow(2, -10 * x) - 0.0009765625) * 1.0009775171065494;\n}","import { tpmt } from \"./math.js\";\nexport function expIn(t) {\n return tpmt(1 - +t);\n}\nexport function expOut(t) {\n return 1 - tpmt(t);\n}\nexport function expInOut(t) {\n return ((t *= 2) <= 1 ? tpmt(1 - t) : 2 - tpmt(t - 1)) / 2;\n}","export function circleIn(t) {\n return 1 - Math.sqrt(1 - t * t);\n}\nexport function circleOut(t) {\n return Math.sqrt(1 - --t * t);\n}\nexport function circleInOut(t) {\n return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\n}","var b1 = 4 / 11,\n b2 = 6 / 11,\n b3 = 8 / 11,\n b4 = 3 / 4,\n b5 = 9 / 11,\n b6 = 10 / 11,\n b7 = 15 / 16,\n b8 = 21 / 22,\n b9 = 63 / 64,\n b0 = 1 / b1 / b1;\nexport function bounceIn(t) {\n return 1 - bounceOut(1 - t);\n}\nexport function bounceOut(t) {\n return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;\n}\nexport function bounceInOut(t) {\n return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\n}","var overshoot = 1.70158;\nexport var backIn = function custom(s) {\n s = +s;\n function backIn(t) {\n return (t = +t) * t * (s * (t - 1) + t);\n }\n backIn.overshoot = custom;\n return backIn;\n}(overshoot);\nexport var backOut = function custom(s) {\n s = +s;\n function backOut(t) {\n return --t * t * ((t + 1) * s + t) + 1;\n }\n backOut.overshoot = custom;\n return backOut;\n}(overshoot);\nexport var backInOut = function custom(s) {\n s = +s;\n function backInOut(t) {\n return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;\n }\n backInOut.overshoot = custom;\n return backInOut;\n}(overshoot);","import { tpmt } from \"./math.js\";\nvar tau = 2 * Math.PI,\n amplitude = 1,\n period = 0.3;\nexport var elasticIn = function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n function elasticIn(t) {\n return a * tpmt(- --t) * Math.sin((s - t) / p);\n }\n elasticIn.amplitude = function (a) {\n return custom(a, p * tau);\n };\n elasticIn.period = function (p) {\n return custom(a, p);\n };\n return elasticIn;\n}(amplitude, period);\nexport var elasticOut = function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n function elasticOut(t) {\n return 1 - a * tpmt(t = +t) * Math.sin((t + s) / p);\n }\n elasticOut.amplitude = function (a) {\n return custom(a, p * tau);\n };\n elasticOut.period = function (p) {\n return custom(a, p);\n };\n return elasticOut;\n}(amplitude, period);\nexport var elasticInOut = function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n function elasticInOut(t) {\n return ((t = t * 2 - 1) < 0 ? a * tpmt(-t) * Math.sin((s - t) / p) : 2 - a * tpmt(t) * Math.sin((s + t) / p)) / 2;\n }\n elasticInOut.amplitude = function (a) {\n return custom(a, p * tau);\n };\n elasticInOut.period = function (p) {\n return custom(a, p);\n };\n return elasticInOut;\n}(amplitude, period);","import * as d3Ease from 'd3-ease';\nvar EASING_MAP = {};\n/**\n * 根据名称获取对应的动画缓动函数\n * @param type 动画缓动函数名称\n */\nexport function getEasing(type) {\n // 默认从 d3-ease 中获取\n return EASING_MAP[type.toLowerCase()] || d3Ease[type];\n}\n/**\n * 注册动画缓动函数\n * @param type 动画缓动函数名称\n * @param easeFn 动画缓动函数\n */\nexport function registerEasing(type, easeFn) {\n EASING_MAP[type.toLowerCase()] = easeFn;\n}","var cache = new Map();\n/**\n * 注册计算包围盒的算法\n * @param type 方法名\n * @param method 方法\n */\nexport function register(type, method) {\n cache.set(type, method);\n}\n/**\n * 获取计算包围盒的算法\n * @param type 方法名\n */\nexport function getMethod(type) {\n return cache.get(type);\n}","export default function (shape) {\n var attrs = shape.attr();\n var x = attrs.x,\n y = attrs.y,\n width = attrs.width,\n height = attrs.height;\n return {\n x: x,\n y: y,\n width: width,\n height: height\n };\n}","export default function (shape) {\n var _a = shape.attr(),\n x = _a.x,\n y = _a.y,\n r = _a.r;\n return {\n x: x - r,\n y: y - r,\n width: r * 2,\n height: r * 2\n };\n}","// 合并包围盒\nexport function mergeBBox(bbox1, bbox2) {\n if (!bbox1 || !bbox2) {\n return bbox1 || bbox2;\n }\n return {\n minX: Math.min(bbox1.minX, bbox2.minX),\n minY: Math.min(bbox1.minY, bbox2.minY),\n maxX: Math.max(bbox1.maxX, bbox2.maxX),\n maxY: Math.max(bbox1.maxY, bbox2.maxY)\n };\n}\n// 合并箭头的包围盒\nexport function mergeArrowBBox(shape, bbox) {\n var startArrowShape = shape.get('startArrowShape');\n var endArrowShape = shape.get('endArrowShape');\n var startArrowBBox = null;\n var endArrowBBox = null;\n if (startArrowShape) {\n startArrowBBox = startArrowShape.getCanvasBBox();\n bbox = mergeBBox(bbox, startArrowBBox);\n }\n if (endArrowShape) {\n endArrowBBox = endArrowShape.getCanvasBBox();\n bbox = mergeBBox(bbox, endArrowBBox);\n }\n return bbox;\n}","import { Quad as QuadUtil, Cubic as CubicUtil, Arc as EllipseArcUtil } from '@antv/g-math';\nimport { path2Segments } from '@antv/path-util';\nimport { isNumberEqual, max, min } from '@antv/util';\nimport { mergeArrowBBox } from './util';\nfunction getPathBox(segments, lineWidth) {\n var xArr = [];\n var yArr = [];\n var segmentsWithAngle = [];\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n var currentPoint = segment.currentPoint,\n params = segment.params,\n prePoint = segment.prePoint;\n var box = void 0;\n switch (segment.command) {\n case 'Q':\n box = QuadUtil.box(prePoint[0], prePoint[1], params[1], params[2], params[3], params[4]);\n break;\n case 'C':\n box = CubicUtil.box(prePoint[0], prePoint[1], params[1], params[2], params[3], params[4], params[5], params[6]);\n break;\n case 'A':\n var arcParams = segment.arcParams;\n box = EllipseArcUtil.box(arcParams.cx, arcParams.cy, arcParams.rx, arcParams.ry, arcParams.xRotation, arcParams.startAngle, arcParams.endAngle);\n break;\n default:\n xArr.push(currentPoint[0]);\n yArr.push(currentPoint[1]);\n break;\n }\n if (box) {\n segment.box = box;\n xArr.push(box.x, box.x + box.width);\n yArr.push(box.y, box.y + box.height);\n }\n if (lineWidth && (segment.command === 'L' || segment.command === 'M') && segment.prePoint && segment.nextPoint) {\n segmentsWithAngle.push(segment);\n }\n }\n // bbox calculation should ignore NaN for path attribute\n // ref: https://github.com/antvis/g/issues/210\n // ref: https://github.com/antvis/G2/issues/3109\n xArr = xArr.filter(function (item) {\n return !Number.isNaN(item) && item !== Infinity && item !== -Infinity;\n });\n yArr = yArr.filter(function (item) {\n return !Number.isNaN(item) && item !== Infinity && item !== -Infinity;\n });\n var minX = min(xArr);\n var minY = min(yArr);\n var maxX = max(xArr);\n var maxY = max(yArr);\n if (segmentsWithAngle.length === 0) {\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n }\n for (var i = 0; i < segmentsWithAngle.length; i++) {\n var segment = segmentsWithAngle[i];\n var currentPoint = segment.currentPoint;\n var extra = void 0;\n if (currentPoint[0] === minX) {\n extra = getExtraFromSegmentWithAngle(segment, lineWidth);\n minX = minX - extra.xExtra;\n } else if (currentPoint[0] === maxX) {\n extra = getExtraFromSegmentWithAngle(segment, lineWidth);\n maxX = maxX + extra.xExtra;\n }\n if (currentPoint[1] === minY) {\n extra = getExtraFromSegmentWithAngle(segment, lineWidth);\n minY = minY - extra.yExtra;\n } else if (currentPoint[1] === maxY) {\n extra = getExtraFromSegmentWithAngle(segment, lineWidth);\n maxY = maxY + extra.yExtra;\n }\n }\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getExtraFromSegmentWithAngle(segment, lineWidth) {\n var prePoint = segment.prePoint,\n currentPoint = segment.currentPoint,\n nextPoint = segment.nextPoint;\n var currentAndPre = Math.pow(currentPoint[0] - prePoint[0], 2) + Math.pow(currentPoint[1] - prePoint[1], 2);\n var currentAndNext = Math.pow(currentPoint[0] - nextPoint[0], 2) + Math.pow(currentPoint[1] - nextPoint[1], 2);\n var preAndNext = Math.pow(prePoint[0] - nextPoint[0], 2) + Math.pow(prePoint[1] - nextPoint[1], 2);\n // 以 currentPoint 为顶点的夹角\n var currentAngle = Math.acos((currentAndPre + currentAndNext - preAndNext) / (2 * Math.sqrt(currentAndPre) * Math.sqrt(currentAndNext)));\n // 夹角为空、 0 或 PI 时,不需要计算夹角处的额外宽度\n // 注意: 由于计算精度问题,夹角为 0 的情况计算出来的角度可能是一个很小的值,还需要判断其与 0 是否近似相等\n if (!currentAngle || Math.sin(currentAngle) === 0 || isNumberEqual(currentAngle, 0)) {\n return {\n xExtra: 0,\n yExtra: 0\n };\n }\n var xAngle = Math.abs(Math.atan2(nextPoint[1] - currentPoint[1], nextPoint[0] - currentPoint[0]));\n var yAngle = Math.abs(Math.atan2(nextPoint[0] - currentPoint[0], nextPoint[1] - currentPoint[1]));\n // 将夹角转为锐角\n xAngle = xAngle > Math.PI / 2 ? Math.PI - xAngle : xAngle;\n yAngle = yAngle > Math.PI / 2 ? Math.PI - yAngle : yAngle;\n // 这里不考虑在水平和垂直方向的投影,直接使用最大差值\n // 由于上层统一加减了二分之一线宽,这里需要进行弥补\n var extra = {\n // 水平方向投影\n xExtra: Math.cos(currentAngle / 2 - xAngle) * (lineWidth / 2 * (1 / Math.sin(currentAngle / 2))) - lineWidth / 2 || 0,\n // 垂直方向投影\n yExtra: Math.cos(yAngle - currentAngle / 2) * (lineWidth / 2 * (1 / Math.sin(currentAngle / 2))) - lineWidth / 2 || 0\n };\n return extra;\n}\nexport default function (shape) {\n var attrs = shape.attr();\n var path = attrs.path,\n stroke = attrs.stroke;\n var lineWidth = stroke ? attrs.lineWidth : 0; // 只有有 stroke 时,lineWidth 才生效\n var segments = shape.get('segments') || path2Segments(path);\n var _a = getPathBox(segments, lineWidth),\n x = _a.x,\n y = _a.y,\n width = _a.width,\n height = _a.height;\n var bbox = {\n minX: x,\n minY: y,\n maxX: x + width,\n maxY: y + height\n };\n bbox = mergeArrowBBox(shape, bbox);\n return {\n x: bbox.minX,\n y: bbox.minY,\n width: bbox.maxX - bbox.minX,\n height: bbox.maxY - bbox.minY\n };\n}","import { register, getMethod } from './register';\nimport rect from './rect';\nimport circle from './circle';\nimport polyline from './polyline';\nimport polygon from './polygon';\nimport text from './text';\nimport path from './path';\nimport line from './line';\nimport ellipse from './ellipse';\nregister('rect', rect);\nregister('image', rect); // image 使用 rect 的包围盒计算\nregister('circle', circle);\nregister('marker', circle); // marker 使用 circle 的计算方案\nregister('polyline', polyline);\nregister('polygon', polygon);\nregister('text', text);\nregister('path', path);\nregister('line', line);\nregister('ellipse', ellipse);\nexport { getMethod as getBBoxMethod, register as registerBBox };","import { Util } from '@antv/g-math';\nimport { mergeArrowBBox } from './util';\nexport default function (shape) {\n var attrs = shape.attr();\n var points = attrs.points;\n var xArr = [];\n var yArr = [];\n for (var i = 0; i < points.length; i++) {\n var point = points[i];\n xArr.push(point[0]);\n yArr.push(point[1]);\n }\n var _a = Util.getBBoxByArray(xArr, yArr),\n x = _a.x,\n y = _a.y,\n width = _a.width,\n height = _a.height;\n var bbox = {\n minX: x,\n minY: y,\n maxX: x + width,\n maxY: y + height\n };\n bbox = mergeArrowBBox(shape, bbox);\n return {\n x: bbox.minX,\n y: bbox.minY,\n width: bbox.maxX - bbox.minX,\n height: bbox.maxY - bbox.minY\n };\n}","import { Util } from '@antv/g-math';\nexport default function (shape) {\n var attrs = shape.attr();\n var points = attrs.points;\n var xArr = [];\n var yArr = [];\n for (var i = 0; i < points.length; i++) {\n var point = points[i];\n xArr.push(point[0]);\n yArr.push(point[1]);\n }\n return Util.getBBoxByArray(xArr, yArr);\n}","import { getTextWidth, getTextHeight, assembleFont } from '../util/text';\nexport default function (shape) {\n var attrs = shape.attr();\n var x = attrs.x,\n y = attrs.y,\n text = attrs.text,\n fontSize = attrs.fontSize,\n lineHeight = attrs.lineHeight;\n var font = attrs.font;\n if (!font) {\n // 如果未组装 font\n font = assembleFont(attrs);\n }\n var width = getTextWidth(text, font);\n var bbox;\n if (!width) {\n // 如果width不存在,四点共其实点\n bbox = {\n x: x,\n y: y,\n width: 0,\n height: 0\n };\n } else {\n var textAlign = attrs.textAlign,\n textBaseline = attrs.textBaseline;\n var height = getTextHeight(text, fontSize, lineHeight); // attrs.height\n // 默认左右对齐:left, 默认上下对齐 bottom\n var point = {\n x: x,\n y: y - height\n };\n if (textAlign) {\n if (textAlign === 'end' || textAlign === 'right') {\n point.x -= width;\n } else if (textAlign === 'center') {\n point.x -= width / 2;\n }\n }\n if (textBaseline) {\n if (textBaseline === 'top') {\n point.y += height;\n } else if (textBaseline === 'middle') {\n point.y += height / 2;\n }\n }\n bbox = {\n x: point.x,\n y: point.y,\n width: width,\n height: height\n };\n }\n return bbox;\n}","import { mergeArrowBBox } from './util';\nexport default function (shape) {\n var attrs = shape.attr();\n var x1 = attrs.x1,\n y1 = attrs.y1,\n x2 = attrs.x2,\n y2 = attrs.y2;\n var minX = Math.min(x1, x2);\n var maxX = Math.max(x1, x2);\n var minY = Math.min(y1, y2);\n var maxY = Math.max(y1, y2);\n var bbox = {\n minX: minX,\n maxX: maxX,\n minY: minY,\n maxY: maxY\n };\n bbox = mergeArrowBBox(shape, bbox);\n return {\n x: bbox.minX,\n y: bbox.minY,\n width: bbox.maxX - bbox.minX,\n height: bbox.maxY - bbox.minY\n };\n}","export default function (shape) {\n var attrs = shape.attr();\n var x = attrs.x,\n y = attrs.y,\n rx = attrs.rx,\n ry = attrs.ry;\n return {\n x: x - rx,\n y: y - ry,\n width: rx * 2,\n height: ry * 2\n };\n}","var GraphEvent = /** @class */function () {\n function GraphEvent(type, event) {\n /**\n * 是否允许冒泡\n * @type {boolean}\n */\n this.bubbles = true;\n /**\n * 触发对象\n * @type {object}\n */\n this.target = null;\n /**\n * 监听对象\n * @type {object}\n */\n this.currentTarget = null;\n /**\n * 委托对象\n * @type {object}\n */\n this.delegateTarget = null;\n /**\n * 委托事件监听对象的代理对象,即 ev.delegateObject = ev.currentTarget.get('delegateObject')\n * @type {object}\n */\n this.delegateObject = null;\n /**\n * 是否阻止了原生事件\n * @type {boolean}\n */\n this.defaultPrevented = false;\n /**\n * 是否阻止传播(向上冒泡)\n * @type {boolean}\n */\n this.propagationStopped = false;\n /**\n * 触发事件的图形\n * @type {IShape}\n */\n this.shape = null;\n /**\n * 开始触发事件的图形\n * @type {IShape}\n */\n this.fromShape = null;\n /**\n * 事件结束时的触发图形\n * @type {IShape}\n */\n this.toShape = null;\n // 触发事件的路径\n this.propagationPath = [];\n this.type = type;\n this.name = type;\n this.originalEvent = event;\n this.timeStamp = event.timeStamp;\n }\n /**\n * 阻止浏览器默认的行为\n */\n GraphEvent.prototype.preventDefault = function () {\n this.defaultPrevented = true;\n if (this.originalEvent.preventDefault) {\n this.originalEvent.preventDefault();\n }\n };\n /**\n * 阻止冒泡\n */\n GraphEvent.prototype.stopPropagation = function () {\n this.propagationStopped = true;\n };\n GraphEvent.prototype.toString = function () {\n var type = this.type;\n return \"[Event (type=\" + type + \")]\";\n };\n GraphEvent.prototype.save = function () {};\n GraphEvent.prototype.restore = function () {};\n return GraphEvent;\n}();\nexport default GraphEvent;","/**\n * @fileoverview G 的基础接口定义和所有的抽象类\n * @author dxq613@gmail.com\n */\nimport * as PathUtil from './util/path';\nexport * from './types';\nexport * from './interfaces';\nexport { default as Event } from './event/graph-event';\nexport { default as Base } from './abstract/base';\nexport { default as AbstractCanvas } from './abstract/canvas';\nexport { default as AbstractGroup } from './abstract/group';\nexport { default as AbstractShape } from './abstract/shape';\nexport { PathUtil };\nexport { getBBoxMethod, registerBBox } from './bbox';\nexport { getTextHeight, assembleFont } from './util/text';\nexport { isAllowCapture } from './util/util';\nexport { multiplyVec2, invert } from './util/matrix';\nexport { getOffScreenContext } from './util/offscreen';\nexport { registerEasing } from './animate/register';\nexport var version = '0.5.11';","/**\n * @fileoverview 矩阵运算,本来是要引入 gl-matrix, 但是考虑到 g-mobile 对大小有限制,同时 g-webgl 使用的 matrix 不一致\n * 所以,这里仅实现 2D 几个运算,上层自己引入 gl-matrix\n * @author dxq613@gmail.com\n */\n/**\n * 3阶矩阵相乘\n * @param {number[]} a 矩阵1\n * @param {number[]} b 矩阵2\n */\nexport function multiplyMatrix(a, b) {\n var out = [];\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a10 = a[3];\n var a11 = a[4];\n var a12 = a[5];\n var a20 = a[6];\n var a21 = a[7];\n var a22 = a[8];\n var b00 = b[0];\n var b01 = b[1];\n var b02 = b[2];\n var b10 = b[3];\n var b11 = b[4];\n var b12 = b[5];\n var b20 = b[6];\n var b21 = b[7];\n var b22 = b[8];\n out[0] = b00 * a00 + b01 * a10 + b02 * a20;\n out[1] = b00 * a01 + b01 * a11 + b02 * a21;\n out[2] = b00 * a02 + b01 * a12 + b02 * a22;\n out[3] = b10 * a00 + b11 * a10 + b12 * a20;\n out[4] = b10 * a01 + b11 * a11 + b12 * a21;\n out[5] = b10 * a02 + b11 * a12 + b12 * a22;\n out[6] = b20 * a00 + b21 * a10 + b22 * a20;\n out[7] = b20 * a01 + b21 * a11 + b22 * a21;\n out[8] = b20 * a02 + b21 * a12 + b22 * a22;\n return out;\n}\n/**\n * 3阶矩阵同2阶向量相乘\n * @param {number[]} m 矩阵\n * @param {number[]} v 二阶向量\n */\nexport function multiplyVec2(m, v) {\n var out = [];\n var x = v[0];\n var y = v[1];\n out[0] = m[0] * x + m[3] * y + m[6];\n out[1] = m[1] * x + m[4] * y + m[7];\n return out;\n}\n/**\n * 矩阵的逆\n * @param {number[]} a 矩阵\n */\nexport function invert(a) {\n var out = [];\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a10 = a[3];\n var a11 = a[4];\n var a12 = a[5];\n var a20 = a[6];\n var a21 = a[7];\n var a22 = a[8];\n var b01 = a22 * a11 - a12 * a21;\n var b11 = -a22 * a10 + a12 * a20;\n var b21 = a21 * a10 - a11 * a20;\n // Calculate the determinant\n var det = a00 * b01 + a01 * b11 + a02 * b21;\n if (!det) {\n return null;\n }\n det = 1.0 / det;\n out[0] = b01 * det;\n out[1] = (-a22 * a01 + a02 * a21) * det;\n out[2] = (a12 * a01 - a02 * a11) * det;\n out[3] = b11 * det;\n out[4] = (a22 * a00 - a02 * a20) * det;\n out[5] = (-a12 * a00 + a02 * a10) * det;\n out[6] = b21 * det;\n out[7] = (-a21 * a00 + a01 * a20) * det;\n out[8] = (a11 * a00 - a01 * a10) * det;\n return out;\n}","// 全局设置一个唯一离屏的 ctx,用于计算 isPointInPath\nvar offScreenCtx = null;\nexport function getOffScreenContext() {\n if (!offScreenCtx) {\n var canvas = document.createElement('canvas');\n canvas.width = 1;\n canvas.height = 1;\n offScreenCtx = canvas.getContext('2d');\n }\n return offScreenCtx;\n}","import { each, isArray } from '@antv/util';\nvar SPACES = \"\\t\\n\\x0B\\f\\r \\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\";\nvar PATH_COMMAND = new RegExp(\"([a-z])[\" + SPACES + \",]*((-?\\\\d*\\\\.?\\\\d*(?:e[\\\\-+]?\\\\d+)?[\" + SPACES + \"]*,?[\" + SPACES + \"]*)+)\", 'ig');\nvar PATH_VALUES = new RegExp(\"(-?\\\\d*\\\\.?\\\\d*(?:e[\\\\-+]?\\\\d+)?)[\" + SPACES + \"]*,?[\" + SPACES + \"]*\", 'ig');\n// Parse given path string into an array of arrays of path segments\nvar parsePathString = function parsePathString(pathString) {\n if (!pathString) {\n return null;\n }\n if (isArray(pathString)) {\n return pathString;\n }\n var paramCounts = {\n a: 7,\n c: 6,\n o: 2,\n h: 1,\n l: 2,\n m: 2,\n r: 4,\n q: 4,\n s: 4,\n t: 2,\n v: 1,\n u: 3,\n z: 0\n };\n var data = [];\n String(pathString).replace(PATH_COMMAND, function (a, b, c) {\n var params = [];\n var name = b.toLowerCase();\n c.replace(PATH_VALUES, function (a, b) {\n b && params.push(+b);\n });\n if (name === 'm' && params.length > 2) {\n data.push([b].concat(params.splice(0, 2)));\n name = 'l';\n b = b === 'm' ? 'l' : 'L';\n }\n if (name === 'o' && params.length === 1) {\n data.push([b, params[0]]);\n }\n if (name === 'r') {\n data.push([b].concat(params));\n } else {\n while (params.length >= paramCounts[name]) {\n data.push([b].concat(params.splice(0, paramCounts[name])));\n if (!paramCounts[name]) {\n break;\n }\n }\n }\n return pathString;\n });\n return data;\n};\n// http://schepers.cc/getting-to-the-point\nvar catmullRomToBezier = function catmullRomToBezier(crp, z) {\n var d = [];\n // @ts-ignore\n for (var i = 0, iLen = crp.length; iLen - 2 * !z > i; i += 2) {\n var p = [{\n x: +crp[i - 2],\n y: +crp[i - 1]\n }, {\n x: +crp[i],\n y: +crp[i + 1]\n }, {\n x: +crp[i + 2],\n y: +crp[i + 3]\n }, {\n x: +crp[i + 4],\n y: +crp[i + 5]\n }];\n if (z) {\n if (!i) {\n p[0] = {\n x: +crp[iLen - 2],\n y: +crp[iLen - 1]\n };\n } else if (iLen - 4 === i) {\n p[3] = {\n x: +crp[0],\n y: +crp[1]\n };\n } else if (iLen - 2 === i) {\n p[2] = {\n x: +crp[0],\n y: +crp[1]\n };\n p[3] = {\n x: +crp[2],\n y: +crp[3]\n };\n }\n } else {\n if (iLen - 4 === i) {\n p[3] = p[2];\n } else if (!i) {\n p[0] = {\n x: +crp[i],\n y: +crp[i + 1]\n };\n }\n }\n d.push(['C', (-p[0].x + 6 * p[1].x + p[2].x) / 6, (-p[0].y + 6 * p[1].y + p[2].y) / 6, (p[1].x + 6 * p[2].x - p[3].x) / 6, (p[1].y + 6 * p[2].y - p[3].y) / 6, p[2].x, p[2].y]);\n }\n return d;\n};\nvar ellipsePath = function ellipsePath(x, y, rx, ry, a) {\n var res = [];\n if (a === null && ry === null) {\n ry = rx;\n }\n x = +x;\n y = +y;\n rx = +rx;\n ry = +ry;\n if (a !== null) {\n var rad = Math.PI / 180;\n var x1 = x + rx * Math.cos(-ry * rad);\n var x2 = x + rx * Math.cos(-a * rad);\n var y1 = y + rx * Math.sin(-ry * rad);\n var y2 = y + rx * Math.sin(-a * rad);\n res = [['M', x1, y1], ['A', rx, rx, 0, +(a - ry > 180), 0, x2, y2]];\n } else {\n res = [['M', x, y], ['m', 0, -ry], ['a', rx, ry, 0, 1, 1, 0, 2 * ry], ['a', rx, ry, 0, 1, 1, 0, -2 * ry], ['z']];\n }\n return res;\n};\nvar pathToAbsolute = function pathToAbsolute(pathArray) {\n pathArray = parsePathString(pathArray);\n if (!pathArray || !pathArray.length) {\n return [['M', 0, 0]];\n }\n var res = [];\n var x = 0;\n var y = 0;\n var mx = 0;\n var my = 0;\n var start = 0;\n var pa0;\n var dots;\n if (pathArray[0][0] === 'M') {\n x = +pathArray[0][1];\n y = +pathArray[0][2];\n mx = x;\n my = y;\n start++;\n res[0] = ['M', x, y];\n }\n var crz = pathArray.length === 3 && pathArray[0][0] === 'M' && pathArray[1][0].toUpperCase() === 'R' && pathArray[2][0].toUpperCase() === 'Z';\n for (var r = void 0, pa = void 0, i = start, ii = pathArray.length; i < ii; i++) {\n res.push(r = []);\n pa = pathArray[i];\n pa0 = pa[0];\n if (pa0 !== pa0.toUpperCase()) {\n r[0] = pa0.toUpperCase();\n switch (r[0]) {\n case 'A':\n r[1] = pa[1];\n r[2] = pa[2];\n r[3] = pa[3];\n r[4] = pa[4];\n r[5] = pa[5];\n r[6] = +pa[6] + x;\n r[7] = +pa[7] + y;\n break;\n case 'V':\n r[1] = +pa[1] + y;\n break;\n case 'H':\n r[1] = +pa[1] + x;\n break;\n case 'R':\n dots = [x, y].concat(pa.slice(1));\n for (var j = 2, jj = dots.length; j < jj; j++) {\n dots[j] = +dots[j] + x;\n dots[++j] = +dots[j] + y;\n }\n res.pop();\n res = res.concat(catmullRomToBezier(dots, crz));\n break;\n case 'O':\n res.pop();\n dots = ellipsePath(x, y, pa[1], pa[2]);\n dots.push(dots[0]);\n res = res.concat(dots);\n break;\n case 'U':\n res.pop();\n res = res.concat(ellipsePath(x, y, pa[1], pa[2], pa[3]));\n r = ['U'].concat(res[res.length - 1].slice(-2));\n break;\n case 'M':\n mx = +pa[1] + x;\n my = +pa[2] + y;\n break;\n // for lint\n default:\n for (var j = 1, jj = pa.length; j < jj; j++) {\n r[j] = +pa[j] + (j % 2 ? x : y);\n }\n }\n } else if (pa0 === 'R') {\n dots = [x, y].concat(pa.slice(1));\n res.pop();\n res = res.concat(catmullRomToBezier(dots, crz));\n r = ['R'].concat(pa.slice(-2));\n } else if (pa0 === 'O') {\n res.pop();\n dots = ellipsePath(x, y, pa[1], pa[2]);\n dots.push(dots[0]);\n res = res.concat(dots);\n } else if (pa0 === 'U') {\n res.pop();\n res = res.concat(ellipsePath(x, y, pa[1], pa[2], pa[3]));\n r = ['U'].concat(res[res.length - 1].slice(-2));\n } else {\n for (var k = 0, kk = pa.length; k < kk; k++) {\n r[k] = pa[k];\n }\n }\n pa0 = pa0.toUpperCase();\n if (pa0 !== 'O') {\n switch (r[0]) {\n case 'Z':\n x = +mx;\n y = +my;\n break;\n case 'H':\n x = r[1];\n break;\n case 'V':\n y = r[1];\n break;\n case 'M':\n mx = r[r.length - 2];\n my = r[r.length - 1];\n break;\n // for lint\n default:\n x = r[r.length - 2];\n y = r[r.length - 1];\n }\n }\n }\n return res;\n};\nvar l2c = function l2c(x1, y1, x2, y2) {\n return [x1, y1, x2, y2, x2, y2];\n};\nvar q2c = function q2c(x1, y1, ax, ay, x2, y2) {\n var _13 = 1 / 3;\n var _23 = 2 / 3;\n return [_13 * x1 + _23 * ax, _13 * y1 + _23 * ay, _13 * x2 + _23 * ax, _13 * y2 + _23 * ay, x2, y2];\n};\nvar a2c = function a2c(x1, y1, rx, ry, angle, large_arc_flag, sweep_flag, x2, y2, recursive) {\n // for more information of where this math came from visit:\n // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes\n if (rx === ry) {\n rx += 1;\n }\n var _120 = Math.PI * 120 / 180;\n var rad = Math.PI / 180 * (+angle || 0);\n var res = [];\n var xy;\n var f1;\n var f2;\n var cx;\n var cy;\n var rotate = function rotate(x, y, rad) {\n var X = x * Math.cos(rad) - y * Math.sin(rad);\n var Y = x * Math.sin(rad) + y * Math.cos(rad);\n return {\n x: X,\n y: Y\n };\n };\n if (!recursive) {\n xy = rotate(x1, y1, -rad);\n x1 = xy.x;\n y1 = xy.y;\n xy = rotate(x2, y2, -rad);\n x2 = xy.x;\n y2 = xy.y;\n if (x1 === x2 && y1 === y2) {\n // 若弧的起始点和终点重叠则错开一点\n x2 += 1;\n y2 += 1;\n }\n // const cos = Math.cos(Math.PI / 180 * angle);\n // const sin = Math.sin(Math.PI / 180 * angle);\n var x = (x1 - x2) / 2;\n var y = (y1 - y2) / 2;\n var h = x * x / (rx * rx) + y * y / (ry * ry);\n if (h > 1) {\n h = Math.sqrt(h);\n rx = h * rx;\n ry = h * ry;\n }\n var rx2 = rx * rx;\n var ry2 = ry * ry;\n var k = (large_arc_flag === sweep_flag ? -1 : 1) * Math.sqrt(Math.abs((rx2 * ry2 - rx2 * y * y - ry2 * x * x) / (rx2 * y * y + ry2 * x * x)));\n cx = k * rx * y / ry + (x1 + x2) / 2;\n cy = k * -ry * x / rx + (y1 + y2) / 2;\n // @ts-ignore\n f1 = Math.asin(((y1 - cy) / ry).toFixed(9));\n // @ts-ignore\n f2 = Math.asin(((y2 - cy) / ry).toFixed(9));\n f1 = x1 < cx ? Math.PI - f1 : f1;\n f2 = x2 < cx ? Math.PI - f2 : f2;\n f1 < 0 && (f1 = Math.PI * 2 + f1);\n f2 < 0 && (f2 = Math.PI * 2 + f2);\n if (sweep_flag && f1 > f2) {\n f1 = f1 - Math.PI * 2;\n }\n if (!sweep_flag && f2 > f1) {\n f2 = f2 - Math.PI * 2;\n }\n } else {\n f1 = recursive[0];\n f2 = recursive[1];\n cx = recursive[2];\n cy = recursive[3];\n }\n var df = f2 - f1;\n if (Math.abs(df) > _120) {\n var f2old = f2;\n var x2old = x2;\n var y2old = y2;\n f2 = f1 + _120 * (sweep_flag && f2 > f1 ? 1 : -1);\n x2 = cx + rx * Math.cos(f2);\n y2 = cy + ry * Math.sin(f2);\n res = a2c(x2, y2, rx, ry, angle, 0, sweep_flag, x2old, y2old, [f2, f2old, cx, cy]);\n }\n df = f2 - f1;\n var c1 = Math.cos(f1);\n var s1 = Math.sin(f1);\n var c2 = Math.cos(f2);\n var s2 = Math.sin(f2);\n var t = Math.tan(df / 4);\n var hx = 4 / 3 * rx * t;\n var hy = 4 / 3 * ry * t;\n var m1 = [x1, y1];\n var m2 = [x1 + hx * s1, y1 - hy * c1];\n var m3 = [x2 + hx * s2, y2 - hy * c2];\n var m4 = [x2, y2];\n m2[0] = 2 * m1[0] - m2[0];\n m2[1] = 2 * m1[1] - m2[1];\n if (recursive) {\n return [m2, m3, m4].concat(res);\n }\n res = [m2, m3, m4].concat(res).join().split(',');\n var newres = [];\n for (var i = 0, ii = res.length; i < ii; i++) {\n newres[i] = i % 2 ? rotate(res[i - 1], res[i], rad).y : rotate(res[i], res[i + 1], rad).x;\n }\n return newres;\n};\nvar pathToCurve = function pathToCurve(path, path2) {\n var p = pathToAbsolute(path);\n var p2 = path2 && pathToAbsolute(path2);\n var attrs = {\n x: 0,\n y: 0,\n bx: 0,\n by: 0,\n X: 0,\n Y: 0,\n qx: null,\n qy: null\n };\n var attrs2 = {\n x: 0,\n y: 0,\n bx: 0,\n by: 0,\n X: 0,\n Y: 0,\n qx: null,\n qy: null\n };\n var pcoms1 = []; // path commands of original path p\n var pcoms2 = []; // path commands of original path p2\n var pfirst = ''; // temporary holder for original path command\n var pcom = ''; // holder for previous path command of original path\n var ii;\n var processPath = function processPath(path, d, pcom) {\n var nx;\n var ny;\n if (!path) {\n return ['C', d.x, d.y, d.x, d.y, d.x, d.y];\n }\n !(path[0] in {\n T: 1,\n Q: 1\n }) && (d.qx = d.qy = null);\n switch (path[0]) {\n case 'M':\n d.X = path[1];\n d.Y = path[2];\n break;\n case 'A':\n path = ['C'].concat(a2c.apply(0, [d.x, d.y].concat(path.slice(1))));\n break;\n case 'S':\n if (pcom === 'C' || pcom === 'S') {\n // In \"S\" case we have to take into account, if the previous command is C/S.\n nx = d.x * 2 - d.bx; // And reflect the previous\n ny = d.y * 2 - d.by; // command's control point relative to the current point.\n } else {\n // or some else or nothing\n nx = d.x;\n ny = d.y;\n }\n path = ['C', nx, ny].concat(path.slice(1));\n break;\n case 'T':\n if (pcom === 'Q' || pcom === 'T') {\n // In \"T\" case we have to take into account, if the previous command is Q/T.\n d.qx = d.x * 2 - d.qx; // And make a reflection similar\n d.qy = d.y * 2 - d.qy; // to case \"S\".\n } else {\n // or something else or nothing\n d.qx = d.x;\n d.qy = d.y;\n }\n path = ['C'].concat(q2c(d.x, d.y, d.qx, d.qy, path[1], path[2]));\n break;\n case 'Q':\n d.qx = path[1];\n d.qy = path[2];\n path = ['C'].concat(q2c(d.x, d.y, path[1], path[2], path[3], path[4]));\n break;\n case 'L':\n path = ['C'].concat(l2c(d.x, d.y, path[1], path[2]));\n break;\n case 'H':\n path = ['C'].concat(l2c(d.x, d.y, path[1], d.y));\n break;\n case 'V':\n path = ['C'].concat(l2c(d.x, d.y, d.x, path[1]));\n break;\n case 'Z':\n path = ['C'].concat(l2c(d.x, d.y, d.X, d.Y));\n break;\n default:\n break;\n }\n return path;\n };\n var fixArc = function fixArc(pp, i) {\n if (pp[i].length > 7) {\n pp[i].shift();\n var pi = pp[i];\n while (pi.length) {\n pcoms1[i] = 'A'; // if created multiple C:s, their original seg is saved\n p2 && (pcoms2[i] = 'A'); // the same as above\n pp.splice(i++, 0, ['C'].concat(pi.splice(0, 6)));\n }\n pp.splice(i, 1);\n ii = Math.max(p.length, p2 && p2.length || 0);\n }\n };\n var fixM = function fixM(path1, path2, a1, a2, i) {\n if (path1 && path2 && path1[i][0] === 'M' && path2[i][0] !== 'M') {\n path2.splice(i, 0, ['M', a2.x, a2.y]);\n a1.bx = 0;\n a1.by = 0;\n a1.x = path1[i][1];\n a1.y = path1[i][2];\n ii = Math.max(p.length, p2 && p2.length || 0);\n }\n };\n ii = Math.max(p.length, p2 && p2.length || 0);\n for (var i = 0; i < ii; i++) {\n p[i] && (pfirst = p[i][0]); // save current path command\n if (pfirst !== 'C') {\n // C is not saved yet, because it may be result of conversion\n pcoms1[i] = pfirst; // Save current path command\n i && (pcom = pcoms1[i - 1]); // Get previous path command pcom\n }\n\n p[i] = processPath(p[i], attrs, pcom); // Previous path command is inputted to processPath\n if (pcoms1[i] !== 'A' && pfirst === 'C') pcoms1[i] = 'C'; // A is the only command\n // which may produce multiple C:s\n // so we have to make sure that C is also C in original path\n fixArc(p, i); // fixArc adds also the right amount of A:s to pcoms1\n if (p2) {\n // the same procedures is done to p2\n p2[i] && (pfirst = p2[i][0]);\n if (pfirst !== 'C') {\n pcoms2[i] = pfirst;\n i && (pcom = pcoms2[i - 1]);\n }\n p2[i] = processPath(p2[i], attrs2, pcom);\n if (pcoms2[i] !== 'A' && pfirst === 'C') {\n pcoms2[i] = 'C';\n }\n fixArc(p2, i);\n }\n fixM(p, p2, attrs, attrs2, i);\n fixM(p2, p, attrs2, attrs, i);\n var seg = p[i];\n var seg2 = p2 && p2[i];\n var seglen = seg.length;\n var seg2len = p2 && seg2.length;\n attrs.x = seg[seglen - 2];\n attrs.y = seg[seglen - 1];\n attrs.bx = parseFloat(seg[seglen - 4]) || attrs.x;\n attrs.by = parseFloat(seg[seglen - 3]) || attrs.y;\n attrs2.bx = p2 && (parseFloat(seg2[seg2len - 4]) || attrs2.x);\n attrs2.by = p2 && (parseFloat(seg2[seg2len - 3]) || attrs2.y);\n attrs2.x = p2 && seg2[seg2len - 2];\n attrs2.y = p2 && seg2[seg2len - 1];\n }\n return p2 ? [p, p2] : p;\n};\nvar p2s = /,?([a-z]),?/gi;\nvar parsePathArray = function parsePathArray(path) {\n return path.join(',').replace(p2s, '$1');\n};\nvar base3 = function base3(t, p1, p2, p3, p4) {\n var t1 = -3 * p1 + 9 * p2 - 9 * p3 + 3 * p4;\n var t2 = t * t1 + 6 * p1 - 12 * p2 + 6 * p3;\n return t * t2 - 3 * p1 + 3 * p2;\n};\nvar bezlen = function bezlen(x1, y1, x2, y2, x3, y3, x4, y4, z) {\n if (z === null) {\n z = 1;\n }\n z = z > 1 ? 1 : z < 0 ? 0 : z;\n var z2 = z / 2;\n var n = 12;\n var Tvalues = [-0.1252, 0.1252, -0.3678, 0.3678, -0.5873, 0.5873, -0.7699, 0.7699, -0.9041, 0.9041, -0.9816, 0.9816];\n var Cvalues = [0.2491, 0.2491, 0.2335, 0.2335, 0.2032, 0.2032, 0.1601, 0.1601, 0.1069, 0.1069, 0.0472, 0.0472];\n var sum = 0;\n for (var i = 0; i < n; i++) {\n var ct = z2 * Tvalues[i] + z2;\n var xbase = base3(ct, x1, x2, x3, x4);\n var ybase = base3(ct, y1, y2, y3, y4);\n var comb = xbase * xbase + ybase * ybase;\n sum += Cvalues[i] * Math.sqrt(comb);\n }\n return z2 * sum;\n};\nvar curveDim = function curveDim(x0, y0, x1, y1, x2, y2, x3, y3) {\n var tvalues = [];\n var bounds = [[], []];\n var a;\n var b;\n var c;\n var t;\n for (var i = 0; i < 2; ++i) {\n if (i === 0) {\n b = 6 * x0 - 12 * x1 + 6 * x2;\n a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n c = 3 * x1 - 3 * x0;\n } else {\n b = 6 * y0 - 12 * y1 + 6 * y2;\n a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n c = 3 * y1 - 3 * y0;\n }\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) < 1e-12) {\n continue;\n }\n t = -c / b;\n if (t > 0 && t < 1) {\n tvalues.push(t);\n }\n continue;\n }\n var b2ac = b * b - 4 * c * a;\n var sqrtb2ac = Math.sqrt(b2ac);\n if (b2ac < 0) {\n continue;\n }\n var t1 = (-b + sqrtb2ac) / (2 * a);\n if (t1 > 0 && t1 < 1) {\n tvalues.push(t1);\n }\n var t2 = (-b - sqrtb2ac) / (2 * a);\n if (t2 > 0 && t2 < 1) {\n tvalues.push(t2);\n }\n }\n var j = tvalues.length;\n var jlen = j;\n var mt;\n while (j--) {\n t = tvalues[j];\n mt = 1 - t;\n bounds[0][j] = mt * mt * mt * x0 + 3 * mt * mt * t * x1 + 3 * mt * t * t * x2 + t * t * t * x3;\n bounds[1][j] = mt * mt * mt * y0 + 3 * mt * mt * t * y1 + 3 * mt * t * t * y2 + t * t * t * y3;\n }\n bounds[0][jlen] = x0;\n bounds[1][jlen] = y0;\n bounds[0][jlen + 1] = x3;\n bounds[1][jlen + 1] = y3;\n bounds[0].length = bounds[1].length = jlen + 2;\n return {\n min: {\n x: Math.min.apply(0, bounds[0]),\n y: Math.min.apply(0, bounds[1])\n },\n max: {\n x: Math.max.apply(0, bounds[0]),\n y: Math.max.apply(0, bounds[1])\n }\n };\n};\nvar intersect = function intersect(x1, y1, x2, y2, x3, y3, x4, y4) {\n if (Math.max(x1, x2) < Math.min(x3, x4) || Math.min(x1, x2) > Math.max(x3, x4) || Math.max(y1, y2) < Math.min(y3, y4) || Math.min(y1, y2) > Math.max(y3, y4)) {\n return;\n }\n var nx = (x1 * y2 - y1 * x2) * (x3 - x4) - (x1 - x2) * (x3 * y4 - y3 * x4);\n var ny = (x1 * y2 - y1 * x2) * (y3 - y4) - (y1 - y2) * (x3 * y4 - y3 * x4);\n var denominator = (x1 - x2) * (y3 - y4) - (y1 - y2) * (x3 - x4);\n if (!denominator) {\n return;\n }\n var px = nx / denominator;\n var py = ny / denominator;\n var px2 = +px.toFixed(2);\n var py2 = +py.toFixed(2);\n if (px2 < +Math.min(x1, x2).toFixed(2) || px2 > +Math.max(x1, x2).toFixed(2) || px2 < +Math.min(x3, x4).toFixed(2) || px2 > +Math.max(x3, x4).toFixed(2) || py2 < +Math.min(y1, y2).toFixed(2) || py2 > +Math.max(y1, y2).toFixed(2) || py2 < +Math.min(y3, y4).toFixed(2) || py2 > +Math.max(y3, y4).toFixed(2)) {\n return;\n }\n return {\n x: px,\n y: py\n };\n};\nvar isPointInsideBBox = function isPointInsideBBox(bbox, x, y) {\n return x >= bbox.x && x <= bbox.x + bbox.width && y >= bbox.y && y <= bbox.y + bbox.height;\n};\nvar rectPath = function rectPath(x, y, w, h, r) {\n if (r) {\n return [['M', +x + +r, y], ['l', w - r * 2, 0], ['a', r, r, 0, 0, 1, r, r], ['l', 0, h - r * 2], ['a', r, r, 0, 0, 1, -r, r], ['l', r * 2 - w, 0], ['a', r, r, 0, 0, 1, -r, -r], ['l', 0, r * 2 - h], ['a', r, r, 0, 0, 1, r, -r], ['z']];\n }\n var res = [['M', x, y], ['l', w, 0], ['l', 0, h], ['l', -w, 0], ['z']];\n // @ts-ignore\n res.parsePathArray = parsePathArray;\n return res;\n};\nvar box = function box(x, y, width, height) {\n if (x === null) {\n x = y = width = height = 0;\n }\n if (y === null) {\n y = x.y;\n width = x.width;\n height = x.height;\n x = x.x;\n }\n return {\n x: x,\n y: y,\n width: width,\n w: width,\n height: height,\n h: height,\n x2: x + width,\n y2: y + height,\n cx: x + width / 2,\n cy: y + height / 2,\n r1: Math.min(width, height) / 2,\n r2: Math.max(width, height) / 2,\n r0: Math.sqrt(width * width + height * height) / 2,\n path: rectPath(x, y, width, height),\n vb: [x, y, width, height].join(' ')\n };\n};\nvar isBBoxIntersect = function isBBoxIntersect(bbox1, bbox2) {\n bbox1 = box(bbox1);\n bbox2 = box(bbox2);\n return isPointInsideBBox(bbox2, bbox1.x, bbox1.y) || isPointInsideBBox(bbox2, bbox1.x2, bbox1.y) || isPointInsideBBox(bbox2, bbox1.x, bbox1.y2) || isPointInsideBBox(bbox2, bbox1.x2, bbox1.y2) || isPointInsideBBox(bbox1, bbox2.x, bbox2.y) || isPointInsideBBox(bbox1, bbox2.x2, bbox2.y) || isPointInsideBBox(bbox1, bbox2.x, bbox2.y2) || isPointInsideBBox(bbox1, bbox2.x2, bbox2.y2) || (bbox1.x < bbox2.x2 && bbox1.x > bbox2.x || bbox2.x < bbox1.x2 && bbox2.x > bbox1.x) && (bbox1.y < bbox2.y2 && bbox1.y > bbox2.y || bbox2.y < bbox1.y2 && bbox2.y > bbox1.y);\n};\nvar bezierBBox = function bezierBBox(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y) {\n if (!isArray(p1x)) {\n p1x = [p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y];\n }\n var bbox = curveDim.apply(null, p1x);\n return box(bbox.min.x, bbox.min.y, bbox.max.x - bbox.min.x, bbox.max.y - bbox.min.y);\n};\nvar findDotsAtSegment = function findDotsAtSegment(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t) {\n var t1 = 1 - t;\n var t13 = Math.pow(t1, 3);\n var t12 = Math.pow(t1, 2);\n var t2 = t * t;\n var t3 = t2 * t;\n var x = t13 * p1x + t12 * 3 * t * c1x + t1 * 3 * t * t * c2x + t3 * p2x;\n var y = t13 * p1y + t12 * 3 * t * c1y + t1 * 3 * t * t * c2y + t3 * p2y;\n var mx = p1x + 2 * t * (c1x - p1x) + t2 * (c2x - 2 * c1x + p1x);\n var my = p1y + 2 * t * (c1y - p1y) + t2 * (c2y - 2 * c1y + p1y);\n var nx = c1x + 2 * t * (c2x - c1x) + t2 * (p2x - 2 * c2x + c1x);\n var ny = c1y + 2 * t * (c2y - c1y) + t2 * (p2y - 2 * c2y + c1y);\n var ax = t1 * p1x + t * c1x;\n var ay = t1 * p1y + t * c1y;\n var cx = t1 * c2x + t * p2x;\n var cy = t1 * c2y + t * p2y;\n var alpha = 90 - Math.atan2(mx - nx, my - ny) * 180 / Math.PI;\n // (mx > nx || my < ny) && (alpha += 180);\n return {\n x: x,\n y: y,\n m: {\n x: mx,\n y: my\n },\n n: {\n x: nx,\n y: ny\n },\n start: {\n x: ax,\n y: ay\n },\n end: {\n x: cx,\n y: cy\n },\n alpha: alpha\n };\n};\nvar interHelper = function interHelper(bez1, bez2, justCount) {\n var bbox1 = bezierBBox(bez1);\n var bbox2 = bezierBBox(bez2);\n if (!isBBoxIntersect(bbox1, bbox2)) {\n return justCount ? 0 : [];\n }\n var l1 = bezlen.apply(0, bez1);\n var l2 = bezlen.apply(0, bez2);\n var n1 = ~~(l1 / 8);\n var n2 = ~~(l2 / 8);\n var dots1 = [];\n var dots2 = [];\n var xy = {};\n var res = justCount ? 0 : [];\n for (var i = 0; i < n1 + 1; i++) {\n var d = findDotsAtSegment.apply(0, bez1.concat(i / n1));\n dots1.push({\n x: d.x,\n y: d.y,\n t: i / n1\n });\n }\n for (var i = 0; i < n2 + 1; i++) {\n var d = findDotsAtSegment.apply(0, bez2.concat(i / n2));\n dots2.push({\n x: d.x,\n y: d.y,\n t: i / n2\n });\n }\n for (var i = 0; i < n1; i++) {\n for (var j = 0; j < n2; j++) {\n var di = dots1[i];\n var di1 = dots1[i + 1];\n var dj = dots2[j];\n var dj1 = dots2[j + 1];\n var ci = Math.abs(di1.x - di.x) < 0.001 ? 'y' : 'x';\n var cj = Math.abs(dj1.x - dj.x) < 0.001 ? 'y' : 'x';\n var is = intersect(di.x, di.y, di1.x, di1.y, dj.x, dj.y, dj1.x, dj1.y);\n if (is) {\n if (xy[is.x.toFixed(4)] === is.y.toFixed(4)) {\n continue;\n }\n xy[is.x.toFixed(4)] = is.y.toFixed(4);\n var t1 = di.t + Math.abs((is[ci] - di[ci]) / (di1[ci] - di[ci])) * (di1.t - di.t);\n var t2 = dj.t + Math.abs((is[cj] - dj[cj]) / (dj1[cj] - dj[cj])) * (dj1.t - dj.t);\n if (t1 >= 0 && t1 <= 1 && t2 >= 0 && t2 <= 1) {\n if (justCount) {\n // @ts-ignore\n res += 1;\n } else {\n // @ts-ignore\n res.push({\n x: is.x,\n y: is.y,\n t1: t1,\n t2: t2\n });\n }\n }\n }\n }\n }\n return res;\n};\nvar interPathHelper = function interPathHelper(path1, path2, justCount) {\n path1 = pathToCurve(path1);\n path2 = pathToCurve(path2);\n var x1;\n var y1;\n var x2;\n var y2;\n var x1m;\n var y1m;\n var x2m;\n var y2m;\n var bez1;\n var bez2;\n var res = justCount ? 0 : [];\n for (var i = 0, ii = path1.length; i < ii; i++) {\n var pi = path1[i];\n if (pi[0] === 'M') {\n x1 = x1m = pi[1];\n y1 = y1m = pi[2];\n } else {\n if (pi[0] === 'C') {\n bez1 = [x1, y1].concat(pi.slice(1));\n x1 = bez1[6];\n y1 = bez1[7];\n } else {\n bez1 = [x1, y1, x1, y1, x1m, y1m, x1m, y1m];\n x1 = x1m;\n y1 = y1m;\n }\n for (var j = 0, jj = path2.length; j < jj; j++) {\n var pj = path2[j];\n if (pj[0] === 'M') {\n x2 = x2m = pj[1];\n y2 = y2m = pj[2];\n } else {\n if (pj[0] === 'C') {\n bez2 = [x2, y2].concat(pj.slice(1));\n x2 = bez2[6];\n y2 = bez2[7];\n } else {\n bez2 = [x2, y2, x2, y2, x2m, y2m, x2m, y2m];\n x2 = x2m;\n y2 = y2m;\n }\n var intr = interHelper(bez1, bez2, justCount);\n if (justCount) {\n // @ts-ignore\n res += intr;\n } else {\n // @ts-ignore\n for (var k = 0, kk = intr.length; k < kk; k++) {\n intr[k].segment1 = i;\n intr[k].segment2 = j;\n intr[k].bez1 = bez1;\n intr[k].bez2 = bez2;\n }\n // @ts-ignore\n res = res.concat(intr);\n }\n }\n }\n }\n }\n return res;\n};\nvar intersection = function intersection(path1, path2) {\n return interPathHelper(path1, path2);\n};\nfunction decasteljau(points, t) {\n var left = [];\n var right = [];\n function recurse(points, t) {\n if (points.length === 1) {\n left.push(points[0]);\n right.push(points[0]);\n } else {\n var middlePoints = [];\n for (var i = 0; i < points.length - 1; i++) {\n if (i === 0) {\n left.push(points[0]);\n }\n if (i === points.length - 2) {\n right.push(points[i + 1]);\n }\n middlePoints[i] = [(1 - t) * points[i][0] + t * points[i + 1][0], (1 - t) * points[i][1] + t * points[i + 1][1]];\n }\n recurse(middlePoints, t);\n }\n }\n if (points.length) {\n recurse(points, t);\n }\n return {\n left: left,\n right: right.reverse()\n };\n}\nfunction splitCurve(start, end, count) {\n var points = [[start[1], start[2]]];\n count = count || 2;\n var segments = [];\n if (end[0] === 'A') {\n points.push(end[6]);\n points.push(end[7]);\n } else if (end[0] === 'C') {\n points.push([end[1], end[2]]);\n points.push([end[3], end[4]]);\n points.push([end[5], end[6]]);\n } else if (end[0] === 'S' || end[0] === 'Q') {\n points.push([end[1], end[2]]);\n points.push([end[3], end[4]]);\n } else {\n points.push([end[1], end[2]]);\n }\n var leftSegments = points;\n var t = 1 / count;\n for (var i = 0; i < count - 1; i++) {\n var rt = t / (1 - t * i);\n var split = decasteljau(leftSegments, rt);\n segments.push(split.left);\n leftSegments = split.right;\n }\n segments.push(leftSegments);\n var result = segments.map(function (segment) {\n var cmd = [];\n if (segment.length === 4) {\n cmd.push('C');\n cmd = cmd.concat(segment[2]);\n }\n if (segment.length >= 3) {\n if (segment.length === 3) {\n cmd.push('Q');\n }\n cmd = cmd.concat(segment[1]);\n }\n if (segment.length === 2) {\n cmd.push('L');\n }\n cmd = cmd.concat(segment[segment.length - 1]);\n return cmd;\n });\n return result;\n}\nvar splitSegment = function splitSegment(start, end, count) {\n if (count === 1) {\n return [[].concat(start)];\n }\n var segments = [];\n if (end[0] === 'L' || end[0] === 'C' || end[0] === 'Q') {\n segments = segments.concat(splitCurve(start, end, count));\n } else {\n var temp = [].concat(start);\n if (temp[0] === 'M') {\n temp[0] = 'L';\n }\n for (var i = 0; i <= count - 1; i++) {\n segments.push(temp);\n }\n }\n return segments;\n};\nvar fillPath = function fillPath(source, target) {\n if (source.length === 1) {\n return source;\n }\n var sourceLen = source.length - 1;\n var targetLen = target.length - 1;\n var ratio = sourceLen / targetLen;\n var segmentsToFill = [];\n if (source.length === 1 && source[0][0] === 'M') {\n for (var i = 0; i < targetLen - sourceLen; i++) {\n source.push(source[0]);\n }\n return source;\n }\n for (var i = 0; i < targetLen; i++) {\n var index = Math.floor(ratio * i);\n segmentsToFill[index] = (segmentsToFill[index] || 0) + 1;\n }\n var filled = segmentsToFill.reduce(function (filled, count, i) {\n if (i === sourceLen) {\n return filled.concat(source[sourceLen]);\n }\n return filled.concat(splitSegment(source[i], source[i + 1], count));\n }, []);\n filled.unshift(source[0]);\n if (target[targetLen] === 'Z' || target[targetLen] === 'z') {\n filled.push('Z');\n }\n return filled;\n};\nvar isEqual = function isEqual(obj1, obj2) {\n if (obj1.length !== obj2.length) {\n return false;\n }\n var result = true;\n each(obj1, function (item, i) {\n if (item !== obj2[i]) {\n result = false;\n return false;\n }\n });\n return result;\n};\nfunction getMinDiff(del, add, modify) {\n var type = null;\n var min = modify;\n if (add < min) {\n min = add;\n type = 'add';\n }\n if (del < min) {\n min = del;\n type = 'del';\n }\n return {\n type: type,\n min: min\n };\n}\n/*\n * https://en.wikipedia.org/wiki/Levenshtein_distance\n * 计算两条path的编辑距离\n */\nvar levenshteinDistance = function levenshteinDistance(source, target) {\n var sourceLen = source.length;\n var targetLen = target.length;\n var sourceSegment;\n var targetSegment;\n var temp = 0;\n if (sourceLen === 0 || targetLen === 0) {\n return null;\n }\n var dist = [];\n for (var i = 0; i <= sourceLen; i++) {\n dist[i] = [];\n dist[i][0] = {\n min: i\n };\n }\n for (var j = 0; j <= targetLen; j++) {\n dist[0][j] = {\n min: j\n };\n }\n for (var i = 1; i <= sourceLen; i++) {\n sourceSegment = source[i - 1];\n for (var j = 1; j <= targetLen; j++) {\n targetSegment = target[j - 1];\n if (isEqual(sourceSegment, targetSegment)) {\n temp = 0;\n } else {\n temp = 1;\n }\n var del = dist[i - 1][j].min + 1;\n var add = dist[i][j - 1].min + 1;\n var modify = dist[i - 1][j - 1].min + temp;\n dist[i][j] = getMinDiff(del, add, modify);\n }\n }\n return dist;\n};\nvar fillPathByDiff = function fillPathByDiff(source, target) {\n var diffMatrix = levenshteinDistance(source, target);\n var sourceLen = source.length;\n var targetLen = target.length;\n var changes = [];\n var index = 1;\n var minPos = 1;\n // 如果source和target不是完全不相等\n if (diffMatrix[sourceLen][targetLen].min !== sourceLen) {\n // 获取从source到target所需改动\n for (var i = 1; i <= sourceLen; i++) {\n var min = diffMatrix[i][i].min;\n minPos = i;\n for (var j = index; j <= targetLen; j++) {\n if (diffMatrix[i][j].min < min) {\n min = diffMatrix[i][j].min;\n minPos = j;\n }\n }\n index = minPos;\n if (diffMatrix[i][index].type) {\n changes.push({\n index: i - 1,\n type: diffMatrix[i][index].type\n });\n }\n }\n // 对source进行增删path\n for (var i = changes.length - 1; i >= 0; i--) {\n index = changes[i].index;\n if (changes[i].type === 'add') {\n source.splice(index, 0, [].concat(source[index]));\n } else {\n source.splice(index, 1);\n }\n }\n }\n // source尾部补齐\n sourceLen = source.length;\n var diff = targetLen - sourceLen;\n if (sourceLen < targetLen) {\n for (var i = 0; i < diff; i++) {\n if (source[sourceLen - 1][0] === 'z' || source[sourceLen - 1][0] === 'Z') {\n source.splice(sourceLen - 2, 0, source[sourceLen - 2]);\n } else {\n source.push(source[sourceLen - 1]);\n }\n sourceLen += 1;\n }\n }\n return source;\n};\n// 将两个点均分成count个点\nfunction _splitPoints(points, former, count) {\n var result = [].concat(points);\n var index;\n var t = 1 / (count + 1);\n var formerEnd = _getSegmentPoints(former)[0];\n for (var i = 1; i <= count; i++) {\n t *= i;\n index = Math.floor(points.length * t);\n if (index === 0) {\n result.unshift([formerEnd[0] * t + points[index][0] * (1 - t), formerEnd[1] * t + points[index][1] * (1 - t)]);\n } else {\n result.splice(index, 0, [formerEnd[0] * t + points[index][0] * (1 - t), formerEnd[1] * t + points[index][1] * (1 - t)]);\n }\n }\n return result;\n}\n/*\n * 抽取pathSegment中的关键点\n * M,L,A,Q,H,V一个端点\n * Q, S抽取一个端点,一个控制点\n * C抽取一个端点,两个控制点\n */\nfunction _getSegmentPoints(segment) {\n var points = [];\n switch (segment[0]) {\n case 'M':\n points.push([segment[1], segment[2]]);\n break;\n case 'L':\n points.push([segment[1], segment[2]]);\n break;\n case 'A':\n points.push([segment[6], segment[7]]);\n break;\n case 'Q':\n points.push([segment[3], segment[4]]);\n points.push([segment[1], segment[2]]);\n break;\n case 'T':\n points.push([segment[1], segment[2]]);\n break;\n case 'C':\n points.push([segment[5], segment[6]]);\n points.push([segment[1], segment[2]]);\n points.push([segment[3], segment[4]]);\n break;\n case 'S':\n points.push([segment[3], segment[4]]);\n points.push([segment[1], segment[2]]);\n break;\n case 'H':\n points.push([segment[1], segment[1]]);\n break;\n case 'V':\n points.push([segment[1], segment[1]]);\n break;\n default:\n }\n return points;\n}\nvar formatPath = function formatPath(fromPath, toPath) {\n if (fromPath.length <= 1) {\n return fromPath;\n }\n var points;\n for (var i = 0; i < toPath.length; i++) {\n if (fromPath[i][0] !== toPath[i][0]) {\n // 获取fromPath的pathSegment的端点,根据toPath的指令对其改造\n points = _getSegmentPoints(fromPath[i]);\n switch (toPath[i][0]) {\n case 'M':\n fromPath[i] = ['M'].concat(points[0]);\n break;\n case 'L':\n fromPath[i] = ['L'].concat(points[0]);\n break;\n case 'A':\n fromPath[i] = [].concat(toPath[i]);\n fromPath[i][6] = points[0][0];\n fromPath[i][7] = points[0][1];\n break;\n case 'Q':\n if (points.length < 2) {\n if (i > 0) {\n points = _splitPoints(points, fromPath[i - 1], 1);\n } else {\n fromPath[i] = toPath[i];\n break;\n }\n }\n fromPath[i] = ['Q'].concat(points.reduce(function (arr, i) {\n return arr.concat(i);\n }, []));\n break;\n case 'T':\n fromPath[i] = ['T'].concat(points[0]);\n break;\n case 'C':\n if (points.length < 3) {\n if (i > 0) {\n points = _splitPoints(points, fromPath[i - 1], 2);\n } else {\n fromPath[i] = toPath[i];\n break;\n }\n }\n fromPath[i] = ['C'].concat(points.reduce(function (arr, i) {\n return arr.concat(i);\n }, []));\n break;\n case 'S':\n if (points.length < 2) {\n if (i > 0) {\n points = _splitPoints(points, fromPath[i - 1], 1);\n } else {\n fromPath[i] = toPath[i];\n break;\n }\n }\n fromPath[i] = ['S'].concat(points.reduce(function (arr, i) {\n return arr.concat(i);\n }, []));\n break;\n default:\n fromPath[i] = toPath[i];\n }\n }\n }\n return fromPath;\n};\nexport { catmullRomToBezier, fillPath, fillPathByDiff, formatPath, intersection, parsePathArray, parsePathString, pathToAbsolute, pathToCurve, rectPath };","import { isNil, each, isString } from './util';\nimport { getOffScreenContext } from './offscreen';\n/**\n * 获取文本的高度\n * @param text 文本\n * @param fontSize 字体大小\n * @param lineHeight 行高,可以为空\n */\nexport function getTextHeight(text, fontSize, lineHeight) {\n var lineCount = 1;\n if (isString(text)) {\n lineCount = text.split('\\n').length;\n }\n if (lineCount > 1) {\n var spaceingY = getLineSpaceing(fontSize, lineHeight);\n return fontSize * lineCount + spaceingY * (lineCount - 1);\n }\n return fontSize;\n}\n/**\n * 获取行间距如果文本多行,需要获取文本间距\n * @param fontSize 字体大小\n * @param lineHeight 行高\n */\nexport function getLineSpaceing(fontSize, lineHeight) {\n return lineHeight ? lineHeight - fontSize : fontSize * 0.14;\n}\n/**\n * 字体宽度\n * @param text 文本\n * @param font 字体\n */\nexport function getTextWidth(text, font) {\n var context = getOffScreenContext(); // 获取离屏的 ctx 进行计算\n var width = 0;\n // null 或者 undefined 时,宽度为 0\n if (isNil(text) || text === '') {\n return width;\n }\n context.save();\n context.font = font;\n if (isString(text) && text.includes('\\n')) {\n var textArr = text.split('\\n');\n each(textArr, function (subText) {\n var measureWidth = context.measureText(subText).width;\n if (width < measureWidth) {\n width = measureWidth;\n }\n });\n } else {\n width = context.measureText(text).width;\n }\n context.restore();\n return width;\n}\nexport function assembleFont(attrs) {\n var fontSize = attrs.fontSize,\n fontFamily = attrs.fontFamily,\n fontWeight = attrs.fontWeight,\n fontStyle = attrs.fontStyle,\n fontVariant = attrs.fontVariant;\n return [fontStyle, fontVariant, fontWeight, fontSize + \"px\", fontFamily].join(' ').trim();\n}","export function removeFromArray(arr, obj) {\n var index = arr.indexOf(obj);\n if (index !== -1) {\n arr.splice(index, 1);\n }\n}\nexport var isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\nexport { isNil, isFunction, isString, isObject, isArray, mix, each, upperFirst } from '@antv/util';\n// 是否元素的父容器\nexport function isParent(container, shape) {\n // 所有 shape 都是 canvas 的子元素\n if (container.isCanvas()) {\n return true;\n }\n var parent = shape.getParent();\n var isParent = false;\n while (parent) {\n if (parent === container) {\n isParent = true;\n break;\n }\n parent = parent.getParent();\n }\n return isParent;\n}\nexport function isAllowCapture(element) {\n // @ts-ignore\n return element.cfg.visible && element.cfg.capture;\n}","import { max, min } from '@antv/util';\n/**\n * 两点之间的距离\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @return {number} 距离\n */\nexport function distance(x1, y1, x2, y2) {\n var dx = x1 - x2;\n var dy = y1 - y2;\n return Math.sqrt(dx * dx + dy * dy);\n}\nexport function isNumberEqual(v1, v2) {\n return Math.abs(v1 - v2) < 0.001;\n}\nexport function getBBoxByArray(xArr, yArr) {\n var minX = min(xArr);\n var minY = min(yArr);\n var maxX = max(xArr);\n var maxY = max(yArr);\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nexport function getBBoxRange(x1, y1, x2, y2) {\n return {\n minX: min([x1, x2]),\n maxX: max([x1, x2]),\n minY: min([y1, y2]),\n maxY: max([y1, y2])\n };\n}\nexport function piMod(angle) {\n return (angle + Math.PI * 2) % (Math.PI * 2);\n}","import { distance, getBBoxByArray } from './util';\nimport * as vec2 from 'gl-matrix/vec2';\nexport default {\n /**\n * 计算线段的包围盒\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @return {object} 包围盒对象\n */\n box: function box(x1, y1, x2, y2) {\n return getBBoxByArray([x1, x2], [y1, y2]);\n },\n /**\n * 线段的长度\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @return {number} 距离\n */\n length: function length(x1, y1, x2, y2) {\n return distance(x1, y1, x2, y2);\n },\n /**\n * 根据比例获取点\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @param {number} t 指定比例\n * @return {object} 包含 x, y 的点\n */\n pointAt: function pointAt(x1, y1, x2, y2, t) {\n return {\n x: (1 - t) * x1 + t * x2,\n y: (1 - t) * y1 + t * y2\n };\n },\n /**\n * 点到线段的距离\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @param {number} x 测试点 x\n * @param {number} y 测试点 y\n * @return {number} 距离\n */\n pointDistance: function pointDistance(x1, y1, x2, y2, x, y) {\n // 投影距离 x1, y1 的向量,假设 p, p1, p2 三个点,投影点为 a\n // p1a = p1p.p1p2/|p1p2| * (p1p 的单位向量)\n var cross = (x2 - x1) * (x - x1) + (y2 - y1) * (y - y1);\n if (cross < 0) {\n return distance(x1, y1, x, y);\n }\n var lengthSquare = (x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1);\n if (cross > lengthSquare) {\n return distance(x2, y2, x, y);\n }\n return this.pointToLine(x1, y1, x2, y2, x, y);\n },\n /**\n * 点到直线的距离,而不是点到线段的距离\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @param {number} x 测试点 x\n * @param {number} y 测试点 y\n * @return {number} 距离\n */\n pointToLine: function pointToLine(x1, y1, x2, y2, x, y) {\n var d = [x2 - x1, y2 - y1];\n // 如果端点相等,则判定点到点的距离\n if (vec2.exactEquals(d, [0, 0])) {\n return Math.sqrt((x - x1) * (x - x1) + (y - y1) * (y - y1));\n }\n var u = [-d[1], d[0]];\n vec2.normalize(u, u);\n var a = [x - x1, y - y1];\n return Math.abs(vec2.dot(a, u));\n },\n /**\n * 线段的角度\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @return {number} 导数\n */\n tangentAngle: function tangentAngle(x1, y1, x2, y2) {\n return Math.atan2(y2 - y1, x2 - x1);\n }\n};","import { distance } from './util';\nvar EPSILON = 0.0001;\n/**\n * 使用牛顿切割法求最近的点\n * @param {number[]} xArr 点的 x 数组\n * @param {number[]} yArr 点的 y 数组\n * @param {number} x 指定的点 x\n * @param {number} y 指定的点 y\n * @param {Function} tCallback 差值函数\n */\nexport function nearestPoint(xArr, yArr, x, y, tCallback, length) {\n var t;\n var d = Infinity;\n var v0 = [x, y];\n var segNum = 20;\n if (length && length > 200) {\n segNum = length / 10;\n }\n var increaseRate = 1 / segNum;\n var interval = increaseRate / 10;\n for (var i = 0; i <= segNum; i++) {\n var _t = i * increaseRate;\n var v1 = [tCallback.apply(null, xArr.concat([_t])), tCallback.apply(null, yArr.concat([_t]))];\n var d1 = distance(v0[0], v0[1], v1[0], v1[1]);\n if (d1 < d) {\n t = _t;\n d = d1;\n }\n }\n // 提前终止\n if (t === 0) {\n return {\n x: xArr[0],\n y: yArr[0]\n };\n }\n if (t === 1) {\n var count = xArr.length;\n return {\n x: xArr[count - 1],\n y: yArr[count - 1]\n };\n }\n d = Infinity;\n for (var i = 0; i < 32; i++) {\n if (interval < EPSILON) {\n break;\n }\n var prev = t - interval;\n var next = t + interval;\n var v1 = [tCallback.apply(null, xArr.concat([prev])), tCallback.apply(null, yArr.concat([prev]))];\n var d1 = distance(v0[0], v0[1], v1[0], v1[1]);\n if (prev >= 0 && d1 < d) {\n t = prev;\n d = d1;\n } else {\n var v2 = [tCallback.apply(null, xArr.concat([next])), tCallback.apply(null, yArr.concat([next]))];\n var d2 = distance(v0[0], v0[1], v2[0], v2[1]);\n if (next <= 1 && d2 < d) {\n t = next;\n d = d2;\n } else {\n interval *= 0.5;\n }\n }\n }\n return {\n x: tCallback.apply(null, xArr.concat([t])),\n y: tCallback.apply(null, yArr.concat([t]))\n };\n}\n// 近似求解 https://community.khronos.org/t/3d-cubic-bezier-segment-length/62363/2\nexport function snapLength(xArr, yArr) {\n var totalLength = 0;\n var count = xArr.length;\n for (var i = 0; i < count; i++) {\n var x = xArr[i];\n var y = yArr[i];\n var nextX = xArr[(i + 1) % count];\n var nextY = yArr[(i + 1) % count];\n totalLength += distance(x, y, nextX, nextY);\n }\n return totalLength / 2;\n}","import line from './line';\nimport { distance, isNumberEqual, getBBoxByArray, piMod } from './util';\nimport { nearestPoint as _nearestPoint } from './bezier';\n// 差值公式\nfunction quadraticAt(p0, p1, p2, t) {\n var onet = 1 - t;\n return onet * onet * p0 + 2 * t * onet * p1 + t * t * p2;\n}\n// 求极值\nfunction extrema(p0, p1, p2) {\n var a = p0 + p2 - 2 * p1;\n if (isNumberEqual(a, 0)) {\n return [0.5];\n }\n var rst = (p0 - p1) / a;\n if (rst <= 1 && rst >= 0) {\n return [rst];\n }\n return [];\n}\nfunction derivativeAt(p0, p1, p2, t) {\n return 2 * (1 - t) * (p1 - p0) + 2 * t * (p2 - p1);\n}\n// 分割贝塞尔曲线\nfunction divideQuadratic(x1, y1, x2, y2, x3, y3, t) {\n // 划分点\n var xt = quadraticAt(x1, x2, x3, t);\n var yt = quadraticAt(y1, y2, y3, t);\n // 分割的第一条曲线的控制点\n var controlPoint1 = line.pointAt(x1, y1, x2, y2, t);\n // 分割的第二条曲线的控制点\n var controlPoint2 = line.pointAt(x2, y2, x3, y3, t);\n return [[x1, y1, controlPoint1.x, controlPoint1.y, xt, yt], [xt, yt, controlPoint2.x, controlPoint2.y, x3, y3]];\n}\n// 使用迭代法取贝塞尔曲线的长度\nfunction quadraticLength(x1, y1, x2, y2, x3, y3, iterationCount) {\n if (iterationCount === 0) {\n return (distance(x1, y1, x2, y2) + distance(x2, y2, x3, y3) + distance(x1, y1, x3, y3)) / 2;\n }\n var quadratics = divideQuadratic(x1, y1, x2, y2, x3, y3, 0.5);\n var left = quadratics[0];\n var right = quadratics[1];\n left.push(iterationCount - 1);\n right.push(iterationCount - 1);\n return quadraticLength.apply(null, left) + quadraticLength.apply(null, right);\n}\nexport default {\n box: function box(x1, y1, x2, y2, x3, y3) {\n var xExtrema = extrema(x1, x2, x3)[0];\n var yExtrema = extrema(y1, y2, y3)[0];\n // 控制点不加入 box 的计算\n var xArr = [x1, x3];\n var yArr = [y1, y3];\n if (xExtrema !== undefined) {\n xArr.push(quadraticAt(x1, x2, x3, xExtrema));\n }\n if (yExtrema !== undefined) {\n yArr.push(quadraticAt(y1, y2, y3, yExtrema));\n }\n return getBBoxByArray(xArr, yArr);\n },\n length: function length(x1, y1, x2, y2, x3, y3) {\n return quadraticLength(x1, y1, x2, y2, x3, y3, 3);\n },\n nearestPoint: function nearestPoint(x1, y1, x2, y2, x3, y3, x0, y0) {\n return _nearestPoint([x1, x2, x3], [y1, y2, y3], x0, y0, quadraticAt);\n },\n pointDistance: function pointDistance(x1, y1, x2, y2, x3, y3, x0, y0) {\n var point = this.nearestPoint(x1, y1, x2, y2, x3, y3, x0, y0);\n return distance(point.x, point.y, x0, y0);\n },\n interpolationAt: quadraticAt,\n pointAt: function pointAt(x1, y1, x2, y2, x3, y3, t) {\n return {\n x: quadraticAt(x1, x2, x3, t),\n y: quadraticAt(y1, y2, y3, t)\n };\n },\n divide: function divide(x1, y1, x2, y2, x3, y3, t) {\n return divideQuadratic(x1, y1, x2, y2, x3, y3, t);\n },\n tangentAngle: function tangentAngle(x1, y1, x2, y2, x3, y3, t) {\n var dx = derivativeAt(x1, x2, x3, t);\n var dy = derivativeAt(y1, y2, y3, t);\n var angle = Math.atan2(dy, dx);\n return piMod(angle);\n }\n};","import { distance, isNumberEqual, getBBoxByArray, piMod } from './util';\nimport line from './line';\nimport { snapLength, nearestPoint as _nearestPoint } from './bezier';\nfunction cubicAt(p0, p1, p2, p3, t) {\n var onet = 1 - t; // t * t * t 的性能大概是 Math.pow(t, 3) 的三倍\n return onet * onet * onet * p0 + 3 * p1 * t * onet * onet + 3 * p2 * t * t * onet + p3 * t * t * t;\n}\nfunction derivativeAt(p0, p1, p2, p3, t) {\n var onet = 1 - t;\n return 3 * (onet * onet * (p1 - p0) + 2 * onet * t * (p2 - p1) + t * t * (p3 - p2));\n}\nfunction extrema(p0, p1, p2, p3) {\n var a = -3 * p0 + 9 * p1 - 9 * p2 + 3 * p3;\n var b = 6 * p0 - 12 * p1 + 6 * p2;\n var c = 3 * p1 - 3 * p0;\n var extremas = [];\n var t1;\n var t2;\n var discSqrt;\n if (isNumberEqual(a, 0)) {\n if (!isNumberEqual(b, 0)) {\n t1 = -c / b;\n if (t1 >= 0 && t1 <= 1) {\n extremas.push(t1);\n }\n }\n } else {\n var disc = b * b - 4 * a * c;\n if (isNumberEqual(disc, 0)) {\n extremas.push(-b / (2 * a));\n } else if (disc > 0) {\n discSqrt = Math.sqrt(disc);\n t1 = (-b + discSqrt) / (2 * a);\n t2 = (-b - discSqrt) / (2 * a);\n if (t1 >= 0 && t1 <= 1) {\n extremas.push(t1);\n }\n if (t2 >= 0 && t2 <= 1) {\n extremas.push(t2);\n }\n }\n }\n return extremas;\n}\n// 分割贝塞尔曲线\nfunction divideCubic(x1, y1, x2, y2, x3, y3, x4, y4, t) {\n // 划分点\n var xt = cubicAt(x1, x2, x3, x4, t);\n var yt = cubicAt(y1, y2, y3, y4, t);\n // 计算两点之间的差值点\n var c1 = line.pointAt(x1, y1, x2, y2, t);\n var c2 = line.pointAt(x2, y2, x3, y3, t);\n var c3 = line.pointAt(x3, y3, x4, y4, t);\n var c12 = line.pointAt(c1.x, c1.y, c2.x, c2.y, t);\n var c23 = line.pointAt(c2.x, c2.y, c3.x, c3.y, t);\n return [[x1, y1, c1.x, c1.y, c12.x, c12.y, xt, yt], [xt, yt, c23.x, c23.y, c3.x, c3.y, x4, y4]];\n}\n// 使用迭代法取贝塞尔曲线的长度,二阶和三阶分开写,更清晰和便于调试\nfunction cubicLength(x1, y1, x2, y2, x3, y3, x4, y4, iterationCount) {\n if (iterationCount === 0) {\n return snapLength([x1, x2, x3, x4], [y1, y2, y3, y4]);\n }\n var cubics = divideCubic(x1, y1, x2, y2, x3, y3, x4, y4, 0.5);\n var left = cubics[0];\n var right = cubics[1];\n left.push(iterationCount - 1);\n right.push(iterationCount - 1);\n return cubicLength.apply(null, left) + cubicLength.apply(null, right);\n}\nexport default {\n extrema: extrema,\n box: function box(x1, y1, x2, y2, x3, y3, x4, y4) {\n var xArr = [x1, x4];\n var yArr = [y1, y4];\n var xExtrema = extrema(x1, x2, x3, x4);\n var yExtrema = extrema(y1, y2, y3, y4);\n for (var i = 0; i < xExtrema.length; i++) {\n xArr.push(cubicAt(x1, x2, x3, x4, xExtrema[i]));\n }\n for (var i = 0; i < yExtrema.length; i++) {\n yArr.push(cubicAt(y1, y2, y3, y4, yExtrema[i]));\n }\n return getBBoxByArray(xArr, yArr);\n },\n length: function length(x1, y1, x2, y2, x3, y3, x4, y4) {\n // 迭代三次,划分成 8 段求长度\n return cubicLength(x1, y1, x2, y2, x3, y3, x4, y4, 3);\n },\n nearestPoint: function nearestPoint(x1, y1, x2, y2, x3, y3, x4, y4, x0, y0, length) {\n return _nearestPoint([x1, x2, x3, x4], [y1, y2, y3, y4], x0, y0, cubicAt, length);\n },\n pointDistance: function pointDistance(x1, y1, x2, y2, x3, y3, x4, y4, x0, y0, length) {\n var point = this.nearestPoint(x1, y1, x2, y2, x3, y3, x4, y4, x0, y0, length);\n return distance(point.x, point.y, x0, y0);\n },\n interpolationAt: cubicAt,\n pointAt: function pointAt(x1, y1, x2, y2, x3, y3, x4, y4, t) {\n return {\n x: cubicAt(x1, x2, x3, x4, t),\n y: cubicAt(y1, y2, y3, y4, t)\n };\n },\n divide: function divide(x1, y1, x2, y2, x3, y3, x4, y4, t) {\n return divideCubic(x1, y1, x2, y2, x3, y3, x4, y4, t);\n },\n tangentAngle: function tangentAngle(x1, y1, x2, y2, x3, y3, x4, y4, t) {\n var dx = derivativeAt(x1, x2, x3, x4, t);\n var dy = derivativeAt(y1, y2, y3, y4, t);\n return piMod(Math.atan2(dy, dx));\n }\n};","import \"core-js/modules/es.math.hypot.js\";\n/**\n * @fileoverview 椭圆的一些计算,\n * - 周长计算参考:https://www.mathsisfun.com/geometry/ellipse-perimeter.html\n * - 距离计算参考:https://wet-robots.ghost.io/simple-method-for-distance-to-ellipse/\n * @author dxq613@gmail.com\n */\nimport { distance, piMod } from './util';\nfunction copysign(v1, v2) {\n var absv = Math.abs(v1);\n return v2 > 0 ? absv : absv * -1;\n}\nexport default {\n /**\n * 包围盒计算\n * @param {number} x 椭圆中心 x\n * @param {number} y 椭圆中心 y\n * @param {number} rx 椭圆 x 方向半径\n * @param {number} ry 椭圆 y 方向半径\n * @return {object} 包围盒\n */\n box: function box(x, y, rx, ry) {\n return {\n x: x - rx,\n y: y - ry,\n width: rx * 2,\n height: ry * 2\n };\n },\n /**\n * 计算周长,使用近似法\n * @param {number} x 椭圆中心 x\n * @param {number} y 椭圆中心 y\n * @param {number} rx 椭圆 x 方向半径\n * @param {number} ry 椭圆 y 方向半径\n * @return {number} 椭圆周长\n */\n length: function length(x, y, rx, ry) {\n return Math.PI * (3 * (rx + ry) - Math.sqrt((3 * rx + ry) * (rx + 3 * ry)));\n },\n /**\n * 距离椭圆最近的点\n * @param {number} x 椭圆中心 x\n * @param {number} y 椭圆中心 y\n * @param {number} rx 椭圆 x 方向半径\n * @param {number} ry 椭圆 y 方向半径\n * @param {number} x0 指定的点 x\n * @param {number} y0 指定的点 y\n * @return {object} 椭圆上距离指定点最近的点\n */\n nearestPoint: function nearestPoint(x, y, rx, ry, x0, y0) {\n var a = rx;\n var b = ry;\n // 假如椭圆半径为0则返回圆心\n if (a === 0 || b === 0) {\n return {\n x: x,\n y: y\n };\n }\n // 转换成 0, 0 为中心的椭圆计算\n var relativeX = x0 - x;\n var relativeY = y0 - y;\n var px = Math.abs(relativeX);\n var py = Math.abs(relativeY);\n var squareA = a * a;\n var squareB = b * b;\n // const angle0 = Math.atan2(relativeY, relativeX);\n var t = Math.PI / 4;\n var nearestX; // 椭圆上的任一点\n var nearestY;\n // 迭代 4 次\n for (var i = 0; i < 4; i++) {\n nearestX = a * Math.cos(t);\n nearestY = b * Math.sin(t);\n var ex = (squareA - squareB) * Math.pow(Math.cos(t), 3) / a;\n var ey = (squareB - squareA) * Math.pow(Math.sin(t), 3) / b;\n var rx1 = nearestX - ex;\n var ry1 = nearestY - ey;\n var qx = px - ex;\n var qy = py - ey;\n var r = Math.hypot(ry1, rx1);\n var q = Math.hypot(qy, qx);\n var delta_c = r * Math.asin((rx1 * qy - ry1 * qx) / (r * q));\n var delta_t = delta_c / Math.sqrt(squareA + squareB - nearestX * nearestX - nearestY * nearestY);\n t += delta_t;\n t = Math.min(Math.PI / 2, Math.max(0, t));\n }\n return {\n x: x + copysign(nearestX, relativeX),\n y: y + copysign(nearestY, relativeY)\n };\n },\n /**\n * 点到椭圆最近的距离\n * @param {number} x 椭圆中心 x\n * @param {number} y 椭圆中心 y\n * @param {number} rx 椭圆 x 方向半径\n * @param {number} ry 椭圆 y 方向半径\n * @param {number} x0 指定的点 x\n * @param {number} y0 指定的点 y\n * @return {number} 点到椭圆的距离\n */\n pointDistance: function pointDistance(x, y, rx, ry, x0, y0) {\n var nearestPoint = this.nearestPoint(x, y, rx, ry, x0, y0);\n return distance(nearestPoint.x, nearestPoint.y, x0, y0);\n },\n /**\n * 根据比例获取点\n * @param {number} x 椭圆中心 x\n * @param {number} y 椭圆中心 y\n * @param {number} rx 椭圆 x 方向半径\n * @param {number} ry 椭圆 y 方向半径\n * @param {number} t 指定比例,x轴方向为 0\n * @return {object} 点\n */\n pointAt: function pointAt(x, y, rx, ry, t) {\n var angle = 2 * Math.PI * t; // 按照角度进行计算,而不按照周长计算\n return {\n x: x + rx * Math.cos(angle),\n y: y + ry * Math.sin(angle)\n };\n },\n /**\n * 根据比例计算切线角度\n * @param {number} x 椭圆中心 x\n * @param {number} y 椭圆中心 y\n * @param {number} rx 椭圆 x 方向半径\n * @param {number} ry 椭圆 y 方向半径\n * @param {number} t 指定比例 0 - 1 之间,x轴方向为 0。在 0-1 范围之外是循环还是返回 null,还需要调整\n * @return {number} 角度,在 0 - 2PI 之间\n */\n tangentAngle: function tangentAngle(x, y, rx, ry, t) {\n var angle = 2 * Math.PI * t; // 按照角度进行计算,而不按照周长计算\n // 直接使用 x,y 的导数计算, x' = -rx * sin(t); y' = ry * cos(t);\n var tangentAngle = Math.atan2(ry * Math.cos(angle), -rx * Math.sin(angle));\n // 也可以使用指定点的切线方程计算,成本有些高\n // const point = this.pointAt(0, 0, rx, ry, t); // 椭圆的切线同椭圆的中心不相关\n // let tangentAngle = -1 * Math.atan((ry * ry * point.x) / (rx * rx * point.y));\n // if (angle >= 0 && angle <= Math.PI) {\n // tangentAngle += Math.PI;\n // }\n return piMod(tangentAngle);\n }\n};","import { distance, piMod } from './util';\nimport ellipse from './ellipse';\n// 偏导数 x\nfunction derivativeXAt(cx, cy, rx, ry, xRotation, startAngle, endAngle, angle) {\n return -1 * rx * Math.cos(xRotation) * Math.sin(angle) - ry * Math.sin(xRotation) * Math.cos(angle);\n}\n// 偏导数 y\nfunction derivativeYAt(cx, cy, rx, ry, xRotation, startAngle, endAngle, angle) {\n return -1 * rx * Math.sin(xRotation) * Math.sin(angle) + ry * Math.cos(xRotation) * Math.cos(angle);\n}\n// x 的极值\nfunction xExtrema(rx, ry, xRotation) {\n return Math.atan(-ry / rx * Math.tan(xRotation));\n}\n// y 的极值\nfunction yExtrema(rx, ry, xRotation) {\n return Math.atan(ry / (rx * Math.tan(xRotation)));\n}\n// 根据角度求 x 坐标\nfunction xAt(cx, cy, rx, ry, xRotation, angle) {\n return rx * Math.cos(xRotation) * Math.cos(angle) - ry * Math.sin(xRotation) * Math.sin(angle) + cx;\n}\n// 根据角度求 y 坐标\nfunction yAt(cx, cy, rx, ry, xRotation, angle) {\n return rx * Math.sin(xRotation) * Math.cos(angle) + ry * Math.cos(xRotation) * Math.sin(angle) + cy;\n}\n// 获取点在椭圆上的角度\nfunction getAngle(rx, ry, x0, y0) {\n var angle = Math.atan2(y0 * rx, x0 * ry);\n // 转换到 0 - 2PI 内\n return (angle + Math.PI * 2) % (Math.PI * 2);\n}\n// 根据角度获取,x,y\nfunction getPoint(rx, ry, angle) {\n return {\n x: rx * Math.cos(angle),\n y: ry * Math.sin(angle)\n };\n}\n// 旋转\nfunction rotate(x, y, angle) {\n var cos = Math.cos(angle);\n var sin = Math.sin(angle);\n return [x * cos - y * sin, x * sin + y * cos];\n}\nexport default {\n /**\n * 计算包围盒\n * @param {number} cx 圆心 x\n * @param {number} cy 圆心 y\n * @param {number} rx x 轴方向的半径\n * @param {number} ry y 轴方向的半径\n * @param {number} xRotation 旋转角度\n * @param {number} startAngle 起始角度\n * @param {number} endAngle 结束角度\n * @return {object} 包围盒对象\n */\n box: function box(cx, cy, rx, ry, xRotation, startAngle, endAngle) {\n var xDim = xExtrema(rx, ry, xRotation);\n var minX = Infinity;\n var maxX = -Infinity;\n var xs = [startAngle, endAngle];\n for (var i = -Math.PI * 2; i <= Math.PI * 2; i += Math.PI) {\n var xAngle = xDim + i;\n if (startAngle < endAngle) {\n if (startAngle < xAngle && xAngle < endAngle) {\n xs.push(xAngle);\n }\n } else {\n if (endAngle < xAngle && xAngle < startAngle) {\n xs.push(xAngle);\n }\n }\n }\n for (var i = 0; i < xs.length; i++) {\n var x = xAt(cx, cy, rx, ry, xRotation, xs[i]);\n if (x < minX) {\n minX = x;\n }\n if (x > maxX) {\n maxX = x;\n }\n }\n var yDim = yExtrema(rx, ry, xRotation);\n var minY = Infinity;\n var maxY = -Infinity;\n var ys = [startAngle, endAngle];\n for (var i = -Math.PI * 2; i <= Math.PI * 2; i += Math.PI) {\n var yAngle = yDim + i;\n if (startAngle < endAngle) {\n if (startAngle < yAngle && yAngle < endAngle) {\n ys.push(yAngle);\n }\n } else {\n if (endAngle < yAngle && yAngle < startAngle) {\n ys.push(yAngle);\n }\n }\n }\n for (var i = 0; i < ys.length; i++) {\n var y = yAt(cx, cy, rx, ry, xRotation, ys[i]);\n if (y < minY) {\n minY = y;\n }\n if (y > maxY) {\n maxY = y;\n }\n }\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n },\n /**\n * 获取圆弧的长度,计算圆弧长度时不考虑旋转角度,\n * 仅跟 rx, ry, startAngle, endAngle 相关\n * @param {number} cx 圆心 x\n * @param {number} cy 圆心 y\n * @param {number} rx x 轴方向的半径\n * @param {number} ry y 轴方向的半径\n * @param {number} xRotation 旋转角度\n * @param {number} startAngle 起始角度\n * @param {number} endAngle 结束角度\n */\n length: function length(cx, cy, rx, ry, xRotation, startAngle, endAngle) {},\n /**\n * 获取指定点到圆弧的最近距离的点\n * @param {number} cx 圆心 x\n * @param {number} cy 圆心 y\n * @param {number} rx x 轴方向的半径\n * @param {number} ry y 轴方向的半径\n * @param {number} xRotation 旋转角度\n * @param {number} startAngle 起始角度\n * @param {number} endAngle 结束角度\n * @param {number} x0 指定点的 x\n * @param {number} y0 指定点的 y\n * @return {object} 到指定点最近距离的点\n */\n nearestPoint: function nearestPoint(cx, cy, rx, ry, xRotation, startAngle, endAngle, x0, y0) {\n // 将最近距离问题转换成到椭圆中心 0,0 没有旋转的椭圆问题\n var relativeVector = rotate(x0 - cx, y0 - cy, -xRotation);\n var x1 = relativeVector[0],\n y1 = relativeVector[1];\n // 计算点到椭圆的最近的点\n var relativePoint = ellipse.nearestPoint(0, 0, rx, ry, x1, y1);\n // 获取点在椭圆上的角度\n var angle = getAngle(rx, ry, relativePoint.x, relativePoint.y);\n // 点没有在圆弧上\n if (angle < startAngle) {\n // 小于起始圆弧\n relativePoint = getPoint(rx, ry, startAngle);\n } else if (angle > endAngle) {\n // 大于结束圆弧\n relativePoint = getPoint(rx, ry, endAngle);\n }\n // 旋转到 xRotation 的角度\n var vector = rotate(relativePoint.x, relativePoint.y, xRotation);\n return {\n x: vector[0] + cx,\n y: vector[1] + cy\n };\n },\n pointDistance: function pointDistance(cx, cy, rx, ry, xRotation, startAngle, endAngle, x0, y0) {\n var nearestPoint = this.nearestPoint(cx, cy, rx, ry, x0, y0);\n return distance(nearestPoint.x, nearestPoint.y, x0, y0);\n },\n pointAt: function pointAt(cx, cy, rx, ry, xRotation, startAngle, endAngle, t) {\n var angle = (endAngle - startAngle) * t + startAngle;\n return {\n x: xAt(cx, cy, rx, ry, xRotation, angle),\n y: yAt(cx, cy, rx, ry, xRotation, angle)\n };\n },\n tangentAngle: function tangentAngle(cx, cy, rx, ry, xRotation, startAngle, endAngle, t) {\n var angle = (endAngle - startAngle) * t + startAngle;\n var dx = derivativeXAt(cx, cy, rx, ry, xRotation, startAngle, endAngle, angle);\n var dy = derivativeYAt(cx, cy, rx, ry, xRotation, startAngle, endAngle, angle);\n return piMod(Math.atan2(dy, dx));\n }\n};","import line from './line';\nimport { distance } from './util';\nfunction analyzePoints(points) {\n // 计算每段的长度和总的长度\n var totalLength = 0;\n var segments = [];\n for (var i = 0; i < points.length - 1; i++) {\n var from = points[i];\n var to = points[i + 1];\n var length_1 = distance(from[0], from[1], to[0], to[1]);\n var seg = {\n from: from,\n to: to,\n length: length_1\n };\n segments.push(seg);\n totalLength += length_1;\n }\n return {\n segments: segments,\n totalLength: totalLength\n };\n}\nexport function lengthOfSegment(points) {\n if (points.length < 2) {\n return 0;\n }\n var totalLength = 0;\n for (var i = 0; i < points.length - 1; i++) {\n var from = points[i];\n var to = points[i + 1];\n totalLength += distance(from[0], from[1], to[0], to[1]);\n }\n return totalLength;\n}\n/**\n * 按照比例在数据片段中获取点\n * @param {array} points 点的集合\n * @param {number} t 百分比 0-1\n * @return {object} 点的坐标\n */\nexport function pointAtSegments(points, t) {\n // 边界判断\n if (t > 1 || t < 0 || points.length < 2) {\n return null;\n }\n var _a = analyzePoints(points),\n segments = _a.segments,\n totalLength = _a.totalLength;\n // 多个点有可能重合\n if (totalLength === 0) {\n return {\n x: points[0][0],\n y: points[0][1]\n };\n }\n // 计算比例\n var startRatio = 0;\n var point = null;\n for (var i = 0; i < segments.length; i++) {\n var seg = segments[i];\n var from = seg.from,\n to = seg.to;\n var currentRatio = seg.length / totalLength;\n if (t >= startRatio && t <= startRatio + currentRatio) {\n var localRatio = (t - startRatio) / currentRatio;\n point = line.pointAt(from[0], from[1], to[0], to[1], localRatio);\n break;\n }\n startRatio += currentRatio;\n }\n return point;\n}\n/**\n * 按照比例在数据片段中获取切线的角度\n * @param {array} points 点的集合\n * @param {number} t 百分比 0-1\n */\nexport function angleAtSegments(points, t) {\n // 边界判断\n if (t > 1 || t < 0 || points.length < 2) {\n return 0;\n }\n var _a = analyzePoints(points),\n segments = _a.segments,\n totalLength = _a.totalLength;\n // 计算比例\n var startRatio = 0;\n var angle = 0;\n for (var i = 0; i < segments.length; i++) {\n var seg = segments[i];\n var from = seg.from,\n to = seg.to;\n var currentRatio = seg.length / totalLength;\n if (t >= startRatio && t <= startRatio + currentRatio) {\n angle = Math.atan2(to[1] - from[1], to[0] - from[0]);\n break;\n }\n startRatio += currentRatio;\n }\n return angle;\n}\nexport function distanceAtSegment(points, x, y) {\n var minDistance = Infinity;\n for (var i = 0; i < points.length - 1; i++) {\n var point = points[i];\n var nextPoint = points[i + 1];\n var distance_1 = line.pointDistance(point[0], point[1], nextPoint[0], nextPoint[1], x, y);\n if (distance_1 < minDistance) {\n minDistance = distance_1;\n }\n }\n return minDistance;\n}","import { pointAtSegments, angleAtSegments, distanceAtSegment, lengthOfSegment } from './segments';\nimport { getBBoxByArray } from './util';\nexport default {\n /**\n * 计算多折线的包围盒\n * @param {array} points 点的集合 [x,y] 的形式\n * @return {object} 包围盒\n */\n box: function box(points) {\n var xArr = [];\n var yArr = [];\n for (var i = 0; i < points.length; i++) {\n var point = points[i];\n xArr.push(point[0]);\n yArr.push(point[1]);\n }\n return getBBoxByArray(xArr, yArr);\n },\n /**\n * 计算多折线的长度\n * @param {array} points 点的集合 [x,y] 的形式\n * @return {object} 多条边的长度\n */\n length: function length(points) {\n return lengthOfSegment(points);\n },\n /**\n * 根据比例获取多折线的点\n * @param {array} points 点的集合 [x,y] 的形式\n * @param {number} t 在多折线的长度上的比例\n * @return {object} 根据比例值计算出来的点\n */\n pointAt: function pointAt(points, t) {\n return pointAtSegments(points, t);\n },\n /**\n * 指定点到多折线的距离\n * @param {array} points 点的集合 [x,y] 的形式\n * @param {number} x 指定点的 x\n * @param {number} y 指定点的 y\n * @return {number} 点到多折线的距离\n */\n pointDistance: function pointDistance(points, x, y) {\n return distanceAtSegment(points, x, y);\n },\n /**\n * 根据比例获取多折线的切线角度\n * @param {array} points 点的集合 [x,y] 的形式\n * @param {number} t 在多折线的长度上的比例\n * @return {object} 根据比例值计算出来的角度\n */\n tangentAngle: function tangentAngle(points, t) {\n return angleAtSegments(points, t);\n }\n};","/**\n * @description 扩展方法,提供 gl-matrix 为提供的方法\n * */\nimport { mat3, vec2 } from 'gl-matrix';\nexport function leftTranslate(out, a, v) {\n var transMat = [0, 0, 0, 0, 0, 0, 0, 0, 0];\n mat3.fromTranslation(transMat, v);\n return mat3.multiply(out, transMat, a);\n}\nexport function leftRotate(out, a, rad) {\n var rotateMat = [0, 0, 0, 0, 0, 0, 0, 0, 0];\n mat3.fromRotation(rotateMat, rad);\n return mat3.multiply(out, rotateMat, a);\n}\nexport function leftScale(out, a, v) {\n var scaleMat = [0, 0, 0, 0, 0, 0, 0, 0, 0];\n mat3.fromScaling(scaleMat, v);\n return mat3.multiply(out, scaleMat, a);\n}\nfunction leftMultiply(out, a, a1) {\n return mat3.multiply(out, a1, a);\n}\n/**\n * 根据 actions 来做 transform\n * @param m\n * @param actions\n */\nexport function transform(m, actions) {\n var matrix = m ? [].concat(m) : [1, 0, 0, 0, 1, 0, 0, 0, 1];\n for (var i = 0, len = actions.length; i < len; i++) {\n var action = actions[i];\n switch (action[0]) {\n case 't':\n leftTranslate(matrix, matrix, [action[1], action[2]]);\n break;\n case 's':\n leftScale(matrix, matrix, [action[1], action[2]]);\n break;\n case 'r':\n leftRotate(matrix, matrix, action[1]);\n break;\n case 'm':\n leftMultiply(matrix, matrix, action[1]);\n break;\n default:\n break;\n }\n }\n return matrix;\n}\n/**\n * 向量 v1 到 向量 v2 夹角的方向\n * @param {Array} v1 向量\n * @param {Array} v2 向量\n * @return {Boolean} >= 0 顺时针 < 0 逆时针\n */\nexport function direction(v1, v2) {\n return v1[0] * v2[1] - v2[0] * v1[1];\n}\n/**\n * 二维向量 v1 到 v2 的夹角\n * @param v1\n * @param v2\n * @param direct\n */\nexport function angleTo(v1, v2, direct) {\n var ang = vec2.angle(v1, v2);\n var angleLargeThanPI = direction(v1, v2) >= 0;\n if (direct) {\n if (angleLargeThanPI) {\n return Math.PI * 2 - ang;\n }\n return ang;\n }\n if (angleLargeThanPI) {\n return ang;\n }\n return Math.PI * 2 - ang;\n}\n/**\n * 计算二维向量的垂直向量\n * @param out\n * @param v\n * @param flag\n */\nexport function vertical(out, v, flag) {\n if (flag) {\n out[0] = v[1];\n out[1] = -1 * v[0];\n } else {\n out[0] = -1 * v[1];\n out[1] = v[0];\n }\n return out;\n}","import { each, isArray, isString } from '@antv/util';\nvar regexTags = /[MLHVQTCSAZ]([^MLHVQTCSAZ]*)/ig;\nvar regexDot = /[^\\s\\,]+/ig;\nfunction parsePath(p) {\n var path = p || [];\n if (isArray(path)) {\n return path;\n }\n if (isString(path)) {\n path = path.match(regexTags);\n each(path, function (item, index) {\n // @ts-ignore\n item = item.match(regexDot);\n if (item[0].length > 1) {\n var tag = item[0].charAt(0);\n // @ts-ignore\n item.splice(1, 0, item[0].substr(1));\n // @ts-ignore\n item[0] = tag;\n }\n // @ts-ignore\n each(item, function (sub, i) {\n if (!isNaN(sub)) {\n // @ts-ignore\n item[i] = +sub;\n }\n });\n // @ts-ignore\n path[index] = item;\n });\n return path;\n }\n}\nexport default parsePath;","import { vec2 } from '@antv/matrix-util';\nfunction smoothBezier(points, smooth, isLoop, constraint) {\n var cps = [];\n var hasConstraint = !!constraint;\n var prevPoint;\n var nextPoint;\n var min;\n var max;\n var nextCp0;\n var cp1;\n var cp0;\n if (hasConstraint) {\n min = constraint[0], max = constraint[1];\n for (var i = 0, l = points.length; i < l; i += 1) {\n var point = points[i];\n min = vec2.min([0, 0], min, point);\n max = vec2.max([0, 0], max, point);\n }\n }\n for (var i = 0, len = points.length; i < len; i += 1) {\n var point = points[i];\n if (i === 0 && !isLoop) {\n cp0 = point;\n } else if (i === len - 1 && !isLoop) {\n cp1 = point;\n cps.push(cp0);\n cps.push(cp1);\n } else {\n var prevIdx = [i ? i - 1 : len - 1, i - 1][isLoop ? 0 : 1];\n prevPoint = points[prevIdx];\n nextPoint = points[isLoop ? (i + 1) % len : i + 1];\n var v = [0, 0];\n v = vec2.sub(v, nextPoint, prevPoint);\n v = vec2.scale(v, v, smooth);\n var d0 = vec2.distance(point, prevPoint);\n var d1 = vec2.distance(point, nextPoint);\n var sum = d0 + d1;\n if (sum !== 0) {\n d0 /= sum;\n d1 /= sum;\n }\n var v1 = vec2.scale([0, 0], v, -d0);\n var v2 = vec2.scale([0, 0], v, d1);\n cp1 = vec2.add([0, 0], point, v1);\n nextCp0 = vec2.add([0, 0], point, v2);\n // 下一个控制点必须在这个点和下一个点之间\n nextCp0 = vec2.min([0, 0], nextCp0, vec2.max([0, 0], nextPoint, point));\n nextCp0 = vec2.max([0, 0], nextCp0, vec2.min([0, 0], nextPoint, point));\n // 重新计算 cp1 的值\n v1 = vec2.sub([0, 0], nextCp0, point);\n v1 = vec2.scale([0, 0], v1, -d0 / d1);\n cp1 = vec2.add([0, 0], point, v1);\n // 上一个控制点必须要在上一个点和这一个点之间\n cp1 = vec2.min([0, 0], cp1, vec2.max([0, 0], prevPoint, point));\n cp1 = vec2.max([0, 0], cp1, vec2.min([0, 0], prevPoint, point));\n // 重新计算 nextCp0 的值\n v2 = vec2.sub([0, 0], point, cp1);\n v2 = vec2.scale([0, 0], v2, d1 / d0);\n nextCp0 = vec2.add([0, 0], point, v2);\n if (hasConstraint) {\n cp1 = vec2.max([0, 0], cp1, min);\n cp1 = vec2.min([0, 0], cp1, max);\n nextCp0 = vec2.max([0, 0], nextCp0, min);\n nextCp0 = vec2.min([0, 0], nextCp0, max);\n }\n cps.push(cp0);\n cps.push(cp1);\n cp0 = nextCp0;\n }\n }\n if (isLoop) {\n cps.push(cps.shift());\n }\n return cps;\n}\n/**\n * create bezier spline from catmull rom spline\n * @param {Array} crp Catmull Rom Points\n * @param {boolean} z Spline is loop\n * @param {Array} constraint Constraint\n */\nfunction catmullRom2Bezier(crp, z, constraint) {\n if (z === void 0) {\n z = false;\n }\n if (constraint === void 0) {\n constraint = [[0, 0], [1, 1]];\n }\n var isLoop = !!z;\n var pointList = [];\n for (var i = 0, l = crp.length; i < l; i += 2) {\n pointList.push([crp[i], crp[i + 1]]);\n }\n var controlPointList = smoothBezier(pointList, 0.4, isLoop, constraint);\n var len = pointList.length;\n var d1 = [];\n var cp1;\n var cp2;\n var p;\n for (var i = 0; i < len - 1; i += 1) {\n cp1 = controlPointList[i * 2];\n cp2 = controlPointList[i * 2 + 1];\n p = pointList[i + 1];\n d1.push(['C', cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1]]);\n }\n if (isLoop) {\n cp1 = controlPointList[len];\n cp2 = controlPointList[len + 1];\n p = pointList[0];\n d1.push(['C', cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1]]);\n }\n return d1;\n}\nexport default catmullRom2Bezier;","import { isArray } from '@antv/util';\nvar SPACES = \"\\t\\n\\x0B\\f\\r \\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\";\nvar PATH_COMMAND = new RegExp('([a-z])[' + SPACES + ',]*((-?\\\\d*\\\\.?\\\\d*(?:e[\\\\-+]?\\\\d+)?[' + SPACES + ']*,?[' + SPACES + ']*)+)', 'ig');\nvar PATH_VALUES = new RegExp('(-?\\\\d*\\\\.?\\\\d*(?:e[\\\\-+]?\\\\d+)?)[' + SPACES + ']*,?[' + SPACES + ']*', 'ig');\n// Parses given path string into an array of arrays of path segments\nexport default function parsePathString(pathString) {\n if (!pathString) {\n return null;\n }\n if (isArray(pathString)) {\n return pathString;\n }\n var paramCounts = {\n a: 7,\n c: 6,\n o: 2,\n h: 1,\n l: 2,\n m: 2,\n r: 4,\n q: 4,\n s: 4,\n t: 2,\n v: 1,\n u: 3,\n z: 0\n };\n var data = [];\n String(pathString).replace(PATH_COMMAND, function (a, b, c) {\n var params = [];\n var name = b.toLowerCase();\n c.replace(PATH_VALUES, function (a, b) {\n b && params.push(+b);\n });\n if (name === 'm' && params.length > 2) {\n data.push([b].concat(params.splice(0, 2)));\n name = 'l';\n b = b === 'm' ? 'l' : 'L';\n }\n if (name === 'o' && params.length === 1) {\n data.push([b, params[0]]);\n }\n if (name === 'r') {\n data.push([b].concat(params));\n } else {\n while (params.length >= paramCounts[name]) {\n data.push([b].concat(params.splice(0, paramCounts[name])));\n if (!paramCounts[name]) {\n break;\n }\n }\n }\n return '';\n });\n return data;\n}","import parsePathString from './parse-path-string';\nvar REGEX_MD = /[a-z]/;\nfunction toSymmetry(p, c) {\n return [c[0] + (c[0] - p[0]), c[1] + (c[1] - p[1])];\n}\nexport default function pathToAbsolute(pathString) {\n var pathArray = parsePathString(pathString);\n if (!pathArray || !pathArray.length) {\n return [['M', 0, 0]];\n }\n var needProcess = false; // 如果存在小写的命令或者 V,H,T,S 则需要处理\n for (var i = 0; i < pathArray.length; i++) {\n var cmd = pathArray[i][0];\n // 如果存在相对位置的命令,则中断返回\n if (REGEX_MD.test(cmd) || ['V', 'H', 'T', 'S'].indexOf(cmd) >= 0) {\n needProcess = true;\n break;\n }\n }\n // 如果不存在相对命令,则直接返回\n // 如果在业务上都写绝对路径,这种方式最快,仅做了一次检测\n if (!needProcess) {\n return pathArray;\n }\n var res = [];\n var x = 0;\n var y = 0;\n var mx = 0;\n var my = 0;\n var start = 0;\n var pa0;\n var dots;\n var first = pathArray[0];\n if (first[0] === 'M' || first[0] === 'm') {\n x = +first[1];\n y = +first[2];\n mx = x;\n my = y;\n start++;\n res[0] = ['M', x, y];\n }\n for (var i = start, ii = pathArray.length; i < ii; i++) {\n var pa = pathArray[i];\n var preParams = res[i - 1]; // 取前一个已经处理后的节点,否则会出现问题\n var r = [];\n var cmd = pa[0];\n var upCmd = cmd.toUpperCase();\n if (cmd !== upCmd) {\n r[0] = upCmd;\n switch (upCmd) {\n case 'A':\n r[1] = pa[1];\n r[2] = pa[2];\n r[3] = pa[3];\n r[4] = pa[4];\n r[5] = pa[5];\n r[6] = +pa[6] + x;\n r[7] = +pa[7] + y;\n break;\n case 'V':\n r[1] = +pa[1] + y;\n break;\n case 'H':\n r[1] = +pa[1] + x;\n break;\n case 'M':\n mx = +pa[1] + x;\n my = +pa[2] + y;\n r[1] = mx;\n r[2] = my;\n break;\n // for lint\n default:\n for (var j = 1, jj = pa.length; j < jj; j++) {\n r[j] = +pa[j] + (j % 2 ? x : y);\n }\n }\n } else {\n // 如果本来已经大写,则不处理\n r = pathArray[i];\n }\n // 需要在外面统一做,同时处理 V,H,S,T 等特殊指令\n switch (upCmd) {\n case 'Z':\n x = +mx;\n y = +my;\n break;\n case 'H':\n x = r[1];\n r = ['L', x, y];\n break;\n case 'V':\n y = r[1];\n r = ['L', x, y];\n break;\n case 'T':\n x = r[1];\n y = r[2];\n // 以 x, y 为中心的,上一个控制点的对称点\n // 需要假设上一个节点的命令为 Q\n var symetricT = toSymmetry([preParams[1], preParams[2]], [preParams[3], preParams[4]]);\n r = ['Q', symetricT[0], symetricT[1], x, y];\n break;\n case 'S':\n x = r[r.length - 2];\n y = r[r.length - 1];\n // 以 x,y 为中心,取上一个控制点,\n // 需要假设上一个线段为 C 或者 S\n var length_1 = preParams.length;\n var symetricS = toSymmetry([preParams[length_1 - 4], preParams[length_1 - 3]], [preParams[length_1 - 2], preParams[length_1 - 1]]);\n r = ['C', symetricS[0], symetricS[1], r[1], r[2], x, y];\n break;\n case 'M':\n mx = r[r.length - 2];\n my = r[r.length - 1];\n break;\n // for lint\n default:\n x = r[r.length - 2];\n y = r[r.length - 1];\n }\n res.push(r);\n }\n return res;\n}","var TAU = Math.PI * 2;\nvar mapToEllipse = function mapToEllipse(_a, rx, ry, cosphi, sinphi, centerx, centery) {\n var x = _a.x,\n y = _a.y;\n x *= rx;\n y *= ry;\n var xp = cosphi * x - sinphi * y;\n var yp = sinphi * x + cosphi * y;\n return {\n x: xp + centerx,\n y: yp + centery\n };\n};\nvar approxUnitArc = function approxUnitArc(ang1, ang2) {\n // If 90 degree circular arc, use a constant\n // as derived from http://spencermortensen.com/articles/bezier-circle\n var a = ang2 === 1.5707963267948966 ? 0.551915024494 : ang2 === -1.5707963267948966 ? -0.551915024494 : 4 / 3 * Math.tan(ang2 / 4);\n var x1 = Math.cos(ang1);\n var y1 = Math.sin(ang1);\n var x2 = Math.cos(ang1 + ang2);\n var y2 = Math.sin(ang1 + ang2);\n return [{\n x: x1 - y1 * a,\n y: y1 + x1 * a\n }, {\n x: x2 + y2 * a,\n y: y2 - x2 * a\n }, {\n x: x2,\n y: y2\n }];\n};\nvar vectorAngle = function vectorAngle(ux, uy, vx, vy) {\n var sign = ux * vy - uy * vx < 0 ? -1 : 1;\n var dot = ux * vx + uy * vy;\n if (dot > 1) {\n dot = 1;\n }\n if (dot < -1) {\n dot = -1;\n }\n return sign * Math.acos(dot);\n};\nvar getArcCenter = function getArcCenter(px, py, cx, cy, rx, ry, largeArcFlag, sweepFlag, sinphi, cosphi, pxp, pyp) {\n var rxsq = Math.pow(rx, 2);\n var rysq = Math.pow(ry, 2);\n var pxpsq = Math.pow(pxp, 2);\n var pypsq = Math.pow(pyp, 2);\n var radicant = rxsq * rysq - rxsq * pypsq - rysq * pxpsq;\n if (radicant < 0) {\n radicant = 0;\n }\n radicant /= rxsq * pypsq + rysq * pxpsq;\n radicant = Math.sqrt(radicant) * (largeArcFlag === sweepFlag ? -1 : 1);\n var centerxp = radicant * rx / ry * pyp;\n var centeryp = radicant * -ry / rx * pxp;\n var centerx = cosphi * centerxp - sinphi * centeryp + (px + cx) / 2;\n var centery = sinphi * centerxp + cosphi * centeryp + (py + cy) / 2;\n var vx1 = (pxp - centerxp) / rx;\n var vy1 = (pyp - centeryp) / ry;\n var vx2 = (-pxp - centerxp) / rx;\n var vy2 = (-pyp - centeryp) / ry;\n var ang1 = vectorAngle(1, 0, vx1, vy1);\n var ang2 = vectorAngle(vx1, vy1, vx2, vy2);\n if (sweepFlag === 0 && ang2 > 0) {\n ang2 -= TAU;\n }\n if (sweepFlag === 1 && ang2 < 0) {\n ang2 += TAU;\n }\n return [centerx, centery, ang1, ang2];\n};\nvar arcToBezier = function arcToBezier(_a) {\n var px = _a.px,\n py = _a.py,\n cx = _a.cx,\n cy = _a.cy,\n rx = _a.rx,\n ry = _a.ry,\n _b = _a.xAxisRotation,\n xAxisRotation = _b === void 0 ? 0 : _b,\n _c = _a.largeArcFlag,\n largeArcFlag = _c === void 0 ? 0 : _c,\n _d = _a.sweepFlag,\n sweepFlag = _d === void 0 ? 0 : _d;\n var curves = [];\n if (rx === 0 || ry === 0) {\n return [{\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 0,\n x: cx,\n y: cy\n }];\n }\n var sinphi = Math.sin(xAxisRotation * TAU / 360);\n var cosphi = Math.cos(xAxisRotation * TAU / 360);\n var pxp = cosphi * (px - cx) / 2 + sinphi * (py - cy) / 2;\n var pyp = -sinphi * (px - cx) / 2 + cosphi * (py - cy) / 2;\n if (pxp === 0 && pyp === 0) {\n return [{\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 0,\n x: cx,\n y: cy\n }];\n }\n rx = Math.abs(rx);\n ry = Math.abs(ry);\n var lambda = Math.pow(pxp, 2) / Math.pow(rx, 2) + Math.pow(pyp, 2) / Math.pow(ry, 2);\n if (lambda > 1) {\n rx *= Math.sqrt(lambda);\n ry *= Math.sqrt(lambda);\n }\n var _e = getArcCenter(px, py, cx, cy, rx, ry, largeArcFlag, sweepFlag, sinphi, cosphi, pxp, pyp),\n centerx = _e[0],\n centery = _e[1],\n ang1 = _e[2],\n ang2 = _e[3];\n // If 'ang2' == 90.0000000001, then `ratio` will evaluate to\n // 1.0000000001. This causes `segments` to be greater than one, which is an\n // unecessary split, and adds extra points to the bezier curve. To alleviate\n // this issue, we round to 1.0 when the ratio is close to 1.0.\n var ratio = Math.abs(ang2) / (TAU / 4);\n if (Math.abs(1.0 - ratio) < 0.0000001) {\n ratio = 1.0;\n }\n var segments = Math.max(Math.ceil(ratio), 1);\n ang2 /= segments;\n for (var i = 0; i < segments; i++) {\n curves.push(approxUnitArc(ang1, ang2));\n ang1 += ang2;\n }\n return curves.map(function (curve) {\n var _a = mapToEllipse(curve[0], rx, ry, cosphi, sinphi, centerx, centery),\n x1 = _a.x,\n y1 = _a.y;\n var _b = mapToEllipse(curve[1], rx, ry, cosphi, sinphi, centerx, centery),\n x2 = _b.x,\n y2 = _b.y;\n var _c = mapToEllipse(curve[2], rx, ry, cosphi, sinphi, centerx, centery),\n x = _c.x,\n y = _c.y;\n return {\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2,\n x: x,\n y: y\n };\n });\n};\nexport function arcToCubic(x1, y1, rx, ry, angle, LAF, SF, x2, y2) {\n var curves = arcToBezier({\n px: x1,\n py: y1,\n cx: x2,\n cy: y2,\n rx: rx,\n ry: ry,\n xAxisRotation: angle,\n largeArcFlag: LAF,\n sweepFlag: SF\n });\n return curves.reduce(function (prev, cur) {\n var x1 = cur.x1,\n y1 = cur.y1,\n x2 = cur.x2,\n y2 = cur.y2,\n x = cur.x,\n y = cur.y;\n prev.push(x1, y1, x2, y2, x, y);\n return prev;\n }, []);\n}","import { mod, toRadian } from '@antv/util';\n// 向量长度\nfunction vMag(v) {\n return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\n}\n// u.v/|u||v|,计算夹角的余弦值\nfunction vRatio(u, v) {\n // 当存在一个向量的长度为 0 时,夹角也为 0,即夹角的余弦值为 1\n return vMag(u) * vMag(v) ? (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v)) : 1;\n}\n// 向量角度\nfunction vAngle(u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vRatio(u, v));\n}\n/**\n * 判断两个点是否重合,点坐标的格式为 [x, y]\n * @param {Array} point1 第一个点\n * @param {Array} point2 第二个点\n */\nexport function isSamePoint(point1, point2) {\n return point1[0] === point2[0] && point1[1] === point2[1];\n}\n// A 0:rx 1:ry 2:x-axis-rotation 3:large-arc-flag 4:sweep-flag 5: x 6: y\nexport default function getArcParams(startPoint, params) {\n var rx = params[1];\n var ry = params[2];\n var xRotation = mod(toRadian(params[3]), Math.PI * 2);\n var arcFlag = params[4];\n var sweepFlag = params[5];\n // 弧形起点坐标\n var x1 = startPoint[0];\n var y1 = startPoint[1];\n // 弧形终点坐标\n var x2 = params[6];\n var y2 = params[7];\n var xp = Math.cos(xRotation) * (x1 - x2) / 2.0 + Math.sin(xRotation) * (y1 - y2) / 2.0;\n var yp = -1 * Math.sin(xRotation) * (x1 - x2) / 2.0 + Math.cos(xRotation) * (y1 - y2) / 2.0;\n var lambda = xp * xp / (rx * rx) + yp * yp / (ry * ry);\n if (lambda > 1) {\n rx *= Math.sqrt(lambda);\n ry *= Math.sqrt(lambda);\n }\n var diff = rx * rx * (yp * yp) + ry * ry * (xp * xp);\n var f = diff ? Math.sqrt((rx * rx * (ry * ry) - diff) / diff) : 1;\n if (arcFlag === sweepFlag) {\n f *= -1;\n }\n if (isNaN(f)) {\n f = 0;\n }\n // 旋转前的起点坐标,且当长半轴和短半轴的长度为 0 时,坐标按 (0, 0) 处理\n var cxp = ry ? f * rx * yp / ry : 0;\n var cyp = rx ? f * -ry * xp / rx : 0;\n // 椭圆圆心坐标\n var cx = (x1 + x2) / 2.0 + Math.cos(xRotation) * cxp - Math.sin(xRotation) * cyp;\n var cy = (y1 + y2) / 2.0 + Math.sin(xRotation) * cxp + Math.cos(xRotation) * cyp;\n // 起始点的单位向量\n var u = [(xp - cxp) / rx, (yp - cyp) / ry];\n // 终止点的单位向量\n var v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry];\n // 计算起始点和圆心的连线,与 x 轴正方向的夹角\n var theta = vAngle([1, 0], u);\n // 计算圆弧起始点和终止点与椭圆圆心连线的夹角\n var dTheta = vAngle(u, v);\n if (vRatio(u, v) <= -1) {\n dTheta = Math.PI;\n }\n if (vRatio(u, v) >= 1) {\n dTheta = 0;\n }\n if (sweepFlag === 0 && dTheta > 0) {\n dTheta = dTheta - 2 * Math.PI;\n }\n if (sweepFlag === 1 && dTheta < 0) {\n dTheta = dTheta + 2 * Math.PI;\n }\n return {\n cx: cx,\n cy: cy,\n // 弧形的起点和终点相同时,长轴和短轴的长度按 0 处理\n rx: isSamePoint(startPoint, [x2, y2]) ? 0 : rx,\n ry: isSamePoint(startPoint, [x2, y2]) ? 0 : ry,\n startAngle: theta,\n endAngle: theta + dTheta,\n xRotation: xRotation,\n arcFlag: arcFlag,\n sweepFlag: sweepFlag\n };\n}","import getArcParams from './get-arc-params';\nimport { isSamePoint } from './get-arc-params';\nimport parsePath from './parse-path';\n// 点对称\nfunction toSymmetry(point, center) {\n return [center[0] + (center[0] - point[0]), center[1] + (center[1] - point[1])];\n}\nexport default function getSegments(path) {\n path = parsePath(path);\n var segments = [];\n var currentPoint = null; // 当前图形\n var nextParams = null; // 下一节点的 path 参数\n var startMovePoint = null; // 开始 M 的点,可能会有多个\n var lastStartMovePointIndex = 0; // 最近一个开始点 M 的索引\n var count = path.length;\n for (var i = 0; i < count; i++) {\n var params = path[i];\n nextParams = path[i + 1];\n var command = params[0];\n // 数学定义上的参数,便于后面的计算\n var segment = {\n command: command,\n prePoint: currentPoint,\n params: params,\n startTangent: null,\n endTangent: null\n };\n switch (command) {\n case 'M':\n startMovePoint = [params[1], params[2]];\n lastStartMovePointIndex = i;\n break;\n case 'A':\n var arcParams = getArcParams(currentPoint, params);\n segment['arcParams'] = arcParams;\n break;\n default:\n break;\n }\n if (command === 'Z') {\n // 有了 Z 后,当前节点从开始 M 的点开始\n currentPoint = startMovePoint;\n // 如果当前点的命令为 Z,相当于当前点为最近一个 M 点,则下一个点直接指向最近一个 M 点的下一个点\n nextParams = path[lastStartMovePointIndex + 1];\n } else {\n var len = params.length;\n currentPoint = [params[len - 2], params[len - 1]];\n }\n if (nextParams && nextParams[0] === 'Z') {\n // 如果下一个点的命令为 Z,则下一个点直接指向最近一个 M 点\n nextParams = path[lastStartMovePointIndex];\n if (segments[lastStartMovePointIndex]) {\n // 如果下一个点的命令为 Z,则最近一个 M 点的前一个点为当前点\n segments[lastStartMovePointIndex].prePoint = currentPoint;\n }\n }\n segment['currentPoint'] = currentPoint;\n // 如果当前点与最近一个 M 点相同,则最近一个 M 点的前一个点为当前点的前一个点\n if (segments[lastStartMovePointIndex] && isSamePoint(currentPoint, segments[lastStartMovePointIndex].currentPoint)) {\n segments[lastStartMovePointIndex].prePoint = segment.prePoint;\n }\n var nextPoint = nextParams ? [nextParams[nextParams.length - 2], nextParams[nextParams.length - 1]] : null;\n segment['nextPoint'] = nextPoint;\n // Add startTangent and endTangent\n var prePoint = segment.prePoint;\n if (['L', 'H', 'V'].includes(command)) {\n segment.startTangent = [prePoint[0] - currentPoint[0], prePoint[1] - currentPoint[1]];\n segment.endTangent = [currentPoint[0] - prePoint[0], currentPoint[1] - prePoint[1]];\n } else if (command === 'Q') {\n // 二次贝塞尔曲线只有一个控制点\n var cp = [params[1], params[2]];\n // 二次贝塞尔曲线的终点为 currentPoint\n segment.startTangent = [prePoint[0] - cp[0], prePoint[1] - cp[1]];\n segment.endTangent = [currentPoint[0] - cp[0], currentPoint[1] - cp[1]];\n } else if (command === 'T') {\n var preSegment = segments[i - 1];\n var cp = toSymmetry(preSegment.currentPoint, prePoint);\n if (preSegment.command === 'Q') {\n segment.command = 'Q';\n segment.startTangent = [prePoint[0] - cp[0], prePoint[1] - cp[1]];\n segment.endTangent = [currentPoint[0] - cp[0], currentPoint[1] - cp[1]];\n } else {\n segment.command = 'TL';\n segment.startTangent = [prePoint[0] - currentPoint[0], prePoint[1] - currentPoint[1]];\n segment.endTangent = [currentPoint[0] - prePoint[0], currentPoint[1] - prePoint[1]];\n }\n } else if (command === 'C') {\n // 三次贝塞尔曲线有两个控制点\n var cp1 = [params[1], params[2]];\n var cp2 = [params[3], params[4]];\n segment.startTangent = [prePoint[0] - cp1[0], prePoint[1] - cp1[1]];\n segment.endTangent = [currentPoint[0] - cp2[0], currentPoint[1] - cp2[1]];\n // horizontal line, eg. ['C', 100, 100, 100, 100, 200, 200]\n if (segment.startTangent[0] === 0 && segment.startTangent[1] === 0) {\n segment.startTangent = [cp1[0] - cp2[0], cp1[1] - cp2[1]];\n }\n if (segment.endTangent[0] === 0 && segment.endTangent[1] === 0) {\n segment.endTangent = [cp2[0] - cp1[0], cp2[1] - cp1[1]];\n }\n } else if (command === 'S') {\n var preSegment = segments[i - 1];\n var cp1 = toSymmetry(preSegment.currentPoint, prePoint);\n var cp2 = [params[1], params[2]];\n if (preSegment.command === 'C') {\n segment.command = 'C'; // 将 S 命令变换为 C 命令\n segment.startTangent = [prePoint[0] - cp1[0], prePoint[1] - cp1[1]];\n segment.endTangent = [currentPoint[0] - cp2[0], currentPoint[1] - cp2[1]];\n } else {\n segment.command = 'SQ'; // 将 S 命令变换为 SQ 命令\n segment.startTangent = [prePoint[0] - cp2[0], prePoint[1] - cp2[1]];\n segment.endTangent = [currentPoint[0] - cp2[0], currentPoint[1] - cp2[1]];\n }\n } else if (command === 'A') {\n var d = 0.001;\n var _a = segment['arcParams'] || {},\n _b = _a.cx,\n cx = _b === void 0 ? 0 : _b,\n _c = _a.cy,\n cy = _c === void 0 ? 0 : _c,\n _d = _a.rx,\n rx = _d === void 0 ? 0 : _d,\n _e = _a.ry,\n ry = _e === void 0 ? 0 : _e,\n _f = _a.sweepFlag,\n sweepFlag = _f === void 0 ? 0 : _f,\n _g = _a.startAngle,\n startAngle = _g === void 0 ? 0 : _g,\n _h = _a.endAngle,\n endAngle = _h === void 0 ? 0 : _h;\n if (sweepFlag === 0) {\n d *= -1;\n }\n var dx1 = rx * Math.cos(startAngle - d) + cx;\n var dy1 = ry * Math.sin(startAngle - d) + cy;\n segment.startTangent = [dx1 - startMovePoint[0], dy1 - startMovePoint[1]];\n var dx2 = rx * Math.cos(startAngle + endAngle + d) + cx;\n var dy2 = ry * Math.sin(startAngle + endAngle - d) + cy;\n segment.endTangent = [prePoint[0] - dx2, prePoint[1] - dy2];\n }\n segments.push(segment);\n }\n return segments;\n}","/**\n * @fileoverview 判断点是否在多边形内\n * @author dxq613@gmail.com\n */\n// 多边形的射线检测,参考:https://blog.csdn.net/WilliamSun0122/article/details/77994526\nvar tolerance = 1e-6;\n// 三态函数,判断两个double在eps精度下的大小关系\nfunction dcmp(x) {\n if (Math.abs(x) < tolerance) {\n return 0;\n }\n return x < 0 ? -1 : 1;\n}\n// 判断点Q是否在p1和p2的线段上\nfunction onSegment(p1, p2, q) {\n if ((q[0] - p1[0]) * (p2[1] - p1[1]) === (p2[0] - p1[0]) * (q[1] - p1[1]) && Math.min(p1[0], p2[0]) <= q[0] && q[0] <= Math.max(p1[0], p2[0]) && Math.min(p1[1], p2[1]) <= q[1] && q[1] <= Math.max(p1[1], p2[1])) {\n return true;\n }\n return false;\n}\n// 判断点P在多边形内-射线法\nexport default function isInPolygon(points, x, y) {\n var isHit = false;\n var n = points.length;\n if (n <= 2) {\n // svg 中点小于 3 个时,不显示,也无法被拾取\n return false;\n }\n for (var i = 0; i < n; i++) {\n var p1 = points[i];\n var p2 = points[(i + 1) % n];\n if (onSegment(p1, p2, [x, y])) {\n // 点在多边形一条边上\n return true;\n }\n // 前一个判断min(p1[1],p2[1]) 0 !== dcmp(p2[1] - y) > 0 && dcmp(x - (y - p1[1]) * (p1[0] - p2[0]) / (p1[1] - p2[1]) - p1[0]) < 0) {\n isHit = !isHit;\n }\n }\n return isHit;\n}","var isBetween = function isBetween(value, min, max) {\n return value >= min && value <= max;\n};\nexport default function getLineIntersect(p0, p1, p2, p3) {\n var tolerance = 0.001;\n var E = {\n x: p2.x - p0.x,\n y: p2.y - p0.y\n };\n var D0 = {\n x: p1.x - p0.x,\n y: p1.y - p0.y\n };\n var D1 = {\n x: p3.x - p2.x,\n y: p3.y - p2.y\n };\n var kross = D0.x * D1.y - D0.y * D1.x;\n var sqrKross = kross * kross;\n var sqrLen0 = D0.x * D0.x + D0.y * D0.y;\n var sqrLen1 = D1.x * D1.x + D1.y * D1.y;\n var point = null;\n if (sqrKross > tolerance * sqrLen0 * sqrLen1) {\n var s = (E.x * D1.y - E.y * D1.x) / kross;\n var t = (E.x * D0.y - E.y * D0.x) / kross;\n if (isBetween(s, 0, 1) && isBetween(t, 0, 1)) {\n point = {\n x: p0.x + s * D0.x,\n y: p0.y + s * D0.y\n };\n }\n }\n return point;\n}\n;","import isPointInPolygon from './point-in-polygon';\nimport getLineIntersect from './get-line-intersect';\nimport { each } from '@antv/util';\nfunction parseToLines(points) {\n var lines = [];\n var count = points.length;\n for (var i = 0; i < count - 1; i++) {\n var point = points[i];\n var next = points[i + 1];\n lines.push({\n from: {\n x: point[0],\n y: point[1]\n },\n to: {\n x: next[0],\n y: next[1]\n }\n });\n }\n if (lines.length > 1) {\n var first = points[0];\n var last = points[count - 1];\n lines.push({\n from: {\n x: last[0],\n y: last[1]\n },\n to: {\n x: first[0],\n y: first[1]\n }\n });\n }\n return lines;\n}\nfunction lineIntersectPolygon(lines, line) {\n var isIntersect = false;\n each(lines, function (l) {\n if (getLineIntersect(l.from, l.to, line.from, line.to)) {\n isIntersect = true;\n return false;\n }\n });\n return isIntersect;\n}\nfunction getBBox(points) {\n var xArr = points.map(function (p) {\n return p[0];\n });\n var yArr = points.map(function (p) {\n return p[1];\n });\n return {\n minX: Math.min.apply(null, xArr),\n maxX: Math.max.apply(null, xArr),\n minY: Math.min.apply(null, yArr),\n maxY: Math.max.apply(null, yArr)\n };\n}\nfunction intersectBBox(box1, box2) {\n return !(box2.minX > box1.maxX || box2.maxX < box1.minX || box2.minY > box1.maxY || box2.maxY < box1.minY);\n}\nexport default function isPolygonsIntersect(points1, points2) {\n // 空数组,或者一个点返回 false\n if (points1.length < 2 || points2.length < 2) {\n return false;\n }\n var bbox1 = getBBox(points1);\n var bbox2 = getBBox(points2);\n // 判定包围盒是否相交,比判定点是否在多边形内要快的多,可以筛选掉大多数情况\n if (!intersectBBox(bbox1, bbox2)) {\n return false;\n }\n var isIn = false;\n // 判定点是否在多边形内部,一旦有一个点在另一个多边形内,则返回\n each(points2, function (point) {\n if (isPointInPolygon(points1, point[0], point[1])) {\n isIn = true;\n return false;\n }\n });\n if (isIn) {\n return true;\n }\n // 两个多边形都需要判定\n each(points1, function (point) {\n if (isPointInPolygon(points2, point[0], point[1])) {\n isIn = true;\n return false;\n }\n });\n if (isIn) {\n return true;\n }\n var lines1 = parseToLines(points1);\n var lines2 = parseToLines(points2);\n var isIntersect = false;\n each(lines2, function (line) {\n if (lineIntersectPolygon(lines1, line)) {\n isIntersect = true;\n return false;\n }\n });\n return isIntersect;\n}","var isArrayLike = function isArrayLike(value) {\n /**\n * isArrayLike([1, 2, 3]) => true\n * isArrayLike(document.body.children) => true\n * isArrayLike('abc') => true\n * isArrayLike(Function) => false\n */\n return value !== null && typeof value !== 'function' && isFinite(value.length);\n};\nexport default isArrayLike;","import isArrayLike from './is-array-like';\nvar contains = function contains(arr, value) {\n if (!isArrayLike(arr)) {\n return false;\n }\n return arr.indexOf(value) > -1;\n};\nexport default contains;","import isArrayLike from './is-array-like';\nvar filter = function filter(arr, func) {\n if (!isArrayLike(arr)) {\n return arr;\n }\n var result = [];\n for (var index = 0; index < arr.length; index++) {\n var value = arr[index];\n if (func(value, index)) {\n result.push(value);\n }\n }\n return result;\n};\nexport default filter;","import filter from './filter';\nimport contains from './contains';\n/**\n * Flattens `array` a single level deep.\n *\n * @param {Array} arr The array to inspect.\n * @param {Array} values The values to exclude.\n * @return {Array} Returns the new array of filtered values.\n * @example\n * difference([2, 1], [2, 3]); // => [1]\n */\nvar difference = function difference(arr, values) {\n if (values === void 0) {\n values = [];\n }\n return filter(arr, function (value) {\n return !contains(values, value);\n });\n};\nexport default difference;","var toString = {}.toString;\nvar isType = function isType(value, type) {\n return toString.call(value) === '[object ' + type + ']';\n};\nexport default isType;","/**\n * 是否为函数\n * @param {*} fn 对象\n * @return {Boolean} 是否函数\n */\nimport isType from './is-type';\nexport default (function (value) {\n return isType(value, 'Function');\n});","// isFinite,\nvar isNil = function isNil(value) {\n /**\n * isNil(null) => true\n * isNil() => true\n */\n return value === null || value === undefined;\n};\nexport default isNil;","import isType from './is-type';\nexport default (function (value) {\n return Array.isArray ? Array.isArray(value) : isType(value, 'Array');\n});","export default (function (value) {\n /**\n * isObject({}) => true\n * isObject([1, 2, 3]) => true\n * isObject(Function) => true\n * isObject(null) => false\n */\n var type = typeof value;\n return value !== null && type === 'object' || type === 'function';\n});","import isArray from './is-array';\nimport isObject from './is-object';\nfunction each(elements, func) {\n if (!elements) {\n return;\n }\n var rst;\n if (isArray(elements)) {\n for (var i = 0, len = elements.length; i < len; i++) {\n rst = func(elements[i], i);\n if (rst === false) {\n break;\n }\n }\n } else if (isObject(elements)) {\n for (var k in elements) {\n if (elements.hasOwnProperty(k)) {\n rst = func(elements[k], k);\n if (rst === false) {\n break;\n }\n }\n }\n }\n}\nexport default each;","import each from './each';\nimport isFunction from './is-function';\nvar keys = Object.keys ? function (obj) {\n return Object.keys(obj);\n} : function (obj) {\n var result = [];\n each(obj, function (value, key) {\n if (!(isFunction(obj) && key === 'prototype')) {\n result.push(key);\n }\n });\n return result;\n};\nexport default keys;","import isNil from './is-nil';\nimport keys from './keys';\nfunction isMatch(obj, attrs) {\n var _keys = keys(attrs);\n var length = _keys.length;\n if (isNil(obj)) return !length;\n for (var i = 0; i < length; i += 1) {\n var key = _keys[i];\n if (attrs[key] !== obj[key] || !(key in obj)) {\n return false;\n }\n }\n return true;\n}\nexport default isMatch;","var isObjectLike = function isObjectLike(value) {\n /**\n * isObjectLike({}) => true\n * isObjectLike([1, 2, 3]) => true\n * isObjectLike(Function) => false\n * isObjectLike(null) => false\n */\n return typeof value === 'object' && value !== null;\n};\nexport default isObjectLike;","import isObjectLike from './is-object-like';\nimport isType from './is-type';\nvar isPlainObject = function isPlainObject(value) {\n /**\n * isObjectLike(new Foo) => false\n * isObjectLike([1, 2, 3]) => false\n * isObjectLike({ x: 0, y: 0 }) => true\n * isObjectLike(Object.create(null)) => true\n */\n if (!isObjectLike(value) || !isType(value, 'Object')) {\n return false;\n }\n if (Object.getPrototypeOf(value) === null) {\n return true;\n }\n var proto = value;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(value) === proto;\n};\nexport default isPlainObject;","import isFunction from './is-function';\nimport isMatch from './is-match';\nimport isArray from './is-array';\nimport isPlainObject from './is-plain-object';\nfunction find(arr, predicate) {\n if (!isArray(arr)) return null;\n var _predicate;\n if (isFunction(predicate)) {\n _predicate = predicate;\n }\n if (isPlainObject(predicate)) {\n _predicate = function _predicate(a) {\n return isMatch(a, predicate);\n };\n }\n if (_predicate) {\n for (var i = 0; i < arr.length; i += 1) {\n if (_predicate(arr[i])) {\n return arr[i];\n }\n }\n }\n return null;\n}\nexport default find;","function findIndex(arr, predicate, fromIndex) {\n if (fromIndex === void 0) {\n fromIndex = 0;\n }\n for (var i = fromIndex; i < arr.length; i++) {\n if (predicate(arr[i], i)) {\n // 找到终止循环\n return i;\n }\n }\n return -1;\n}\nexport default findIndex;","import isNil from './is-nil';\nimport isArray from './is-array';\nvar firstValue = function firstValue(data, name) {\n var rst = null;\n for (var i = 0; i < data.length; i++) {\n var obj = data[i];\n var value = obj[name];\n if (!isNil(value)) {\n if (isArray(value)) {\n rst = value[0]; // todo 这里是否应该使用递归,调用 firstValue @绝云\n } else {\n rst = value;\n }\n break;\n }\n }\n return rst;\n};\nexport default firstValue;","import isArray from './is-array';\n/**\n * Flattens `array` a single level deep.\n *\n * @param {Array} arr The array to flatten.\n * @return {Array} Returns the new flattened array.\n * @example\n *\n * flatten([1, [2, [3, [4]], 5]]); // => [1, 2, [3, [4]], 5]\n */\nvar flatten = function flatten(arr) {\n if (!isArray(arr)) {\n return [];\n }\n var rst = [];\n for (var i = 0; i < arr.length; i++) {\n rst = rst.concat(arr[i]);\n }\n return rst;\n};\nexport default flatten;","import isArray from './is-array';\n/**\n * @param {Array} arr The array to iterate over.\n * @return {*} Returns the maximum value.\n * @example\n *\n * max([1, 2]);\n * // => 2\n *\n * max([]);\n * // => undefined\n *\n * const data = new Array(1250010).fill(1).map((d,idx) => idx);\n *\n * max(data);\n * // => 1250010\n * // Math.max(...data) will encounter \"Maximum call stack size exceeded\" error\n */\nexport default (function (arr) {\n if (!isArray(arr)) {\n return undefined;\n }\n return arr.reduce(function (prev, curr) {\n return Math.max(prev, curr);\n }, arr[0]);\n});","import isArray from './is-array';\n/**\n * @param {Array} arr The array to iterate over.\n * @return {*} Returns the minimum value.\n * @example\n *\n * min([1, 2]);\n * // => 1\n *\n * min([]);\n * // => undefined\n *\n * const data = new Array(1250010).fill(1).map((d,idx) => idx);\n *\n * min(data);\n * // => 1250010\n * // Math.min(...data) will encounter \"Maximum call stack size exceeded\" error\n */\nexport default (function (arr) {\n if (!isArray(arr)) {\n return undefined;\n }\n return arr.reduce(function (prev, curr) {\n return Math.min(prev, curr);\n }, arr[0]);\n});","import isArray from './is-array';\nimport { default as getMax } from './max';\nimport { default as getMin } from './min';\nvar getRange = function getRange(values) {\n // 存在 NaN 时,min,max 判定会出问题\n var filterValues = values.filter(function (v) {\n return !isNaN(v);\n });\n if (!filterValues.length) {\n // 如果没有数值则直接返回0\n return {\n min: 0,\n max: 0\n };\n }\n if (isArray(values[0])) {\n var tmp = [];\n for (var i = 0; i < values.length; i++) {\n tmp = tmp.concat(values[i]);\n }\n filterValues = tmp;\n }\n var max = getMax(filterValues);\n var min = getMin(filterValues);\n return {\n min: min,\n max: max\n };\n};\nexport default getRange;","var arrPrototype = Array.prototype;\nvar splice = arrPrototype.splice;\nvar indexOf = arrPrototype.indexOf;\nvar pull = function pull(arr) {\n var values = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n values[_i - 1] = arguments[_i];\n }\n for (var i = 0; i < values.length; i++) {\n var value = values[i];\n var fromIndex = -1;\n while ((fromIndex = indexOf.call(arr, value)) > -1) {\n splice.call(arr, fromIndex, 1);\n }\n }\n return arr;\n};\nexport default pull;","import isArrayLike from './is-array-like';\nvar splice = Array.prototype.splice;\nvar pullAt = function pullAt(arr, indexes) {\n if (!isArrayLike(arr)) {\n return [];\n }\n var length = arr ? indexes.length : 0;\n var last = length - 1;\n while (length--) {\n var previous = void 0;\n var index = indexes[length];\n if (length === last || index !== previous) {\n previous = index;\n splice.call(arr, index, 1);\n }\n }\n return arr;\n};\nexport default pullAt;","import each from './each';\nimport isArray from './is-array';\nimport isPlainObject from './is-plain-object';\nvar reduce = function reduce(arr, fn, init) {\n if (!isArray(arr) && !isPlainObject(arr)) {\n return arr;\n }\n var result = init;\n each(arr, function (data, i) {\n result = fn(result, data, i);\n });\n return result;\n};\nexport default reduce;","import isArrayLike from './is-array-like';\nimport pullAt from './pull-at';\nvar remove = function remove(arr, predicate) {\n /**\n * const arr = [1, 2, 3, 4]\n * const evens = remove(arr, n => n % 2 == 0)\n * console.log(arr) // => [1, 3]\n * console.log(evens) // => [2, 4]\n */\n var result = [];\n if (!isArrayLike(arr)) {\n return result;\n }\n var i = -1;\n var indexes = [];\n var length = arr.length;\n while (++i < length) {\n var value = arr[i];\n if (predicate(value, i, arr)) {\n result.push(value);\n indexes.push(i);\n }\n }\n pullAt(arr, indexes);\n return result;\n};\nexport default remove;","import isType from './is-type';\nexport default (function (str) {\n return isType(str, 'String');\n});","import isArray from './is-array';\nimport isString from './is-string';\nimport isFunction from './is-function';\nfunction sortBy(arr, key) {\n var comparer;\n if (isFunction(key)) {\n comparer = function comparer(a, b) {\n return key(a) - key(b);\n };\n } else {\n var keys_1 = [];\n if (isString(key)) {\n keys_1.push(key);\n } else if (isArray(key)) {\n keys_1 = key;\n }\n comparer = function comparer(a, b) {\n for (var i = 0; i < keys_1.length; i += 1) {\n var prop = keys_1[i];\n if (a[prop] > b[prop]) {\n return 1;\n }\n if (a[prop] < b[prop]) {\n return -1;\n }\n }\n return 0;\n };\n }\n arr.sort(comparer);\n return arr;\n}\nexport default sortBy;","export default function uniq(arr, cache) {\n if (cache === void 0) {\n cache = new Map();\n }\n var r = [];\n if (Array.isArray(arr)) {\n for (var i = 0, len = arr.length; i < len; i++) {\n var item = arr[i];\n // 加一个 cache,提升性能\n if (!cache.has(item)) {\n r.push(item);\n cache.set(item, true);\n }\n }\n }\n return r;\n}","import isArray from './is-array';\nimport isNil from './is-nil';\nexport default (function (data, name) {\n var rst = [];\n var tmpMap = {};\n for (var i = 0; i < data.length; i++) {\n var obj = data[i];\n var value = obj[name];\n if (!isNil(value)) {\n // flatten\n if (!isArray(value)) {\n value = [value];\n }\n for (var j = 0; j < value.length; j++) {\n var val = value[j];\n // unique\n if (!tmpMap[val]) {\n rst.push(val);\n tmpMap[val] = true;\n }\n }\n }\n }\n return rst;\n});","import isArrayLike from './is-array-like';\nexport default function head(o) {\n if (isArrayLike(o)) {\n return o[0];\n }\n return undefined;\n}","import isArrayLike from './is-array-like';\nexport default function last(o) {\n if (isArrayLike(o)) {\n var arr = o;\n return arr[arr.length - 1];\n }\n return undefined;\n}","import isArray from './is-array';\nimport isString from './is-string';\nfunction endsWith(arr, e) {\n return isArray(arr) || isString(arr) ? arr[arr.length - 1] === e : false;\n}\nexport default endsWith;","/**\n * 只要有一个不满足条件就返回 false\n * @param arr\n * @param func\n */\nvar every = function every(arr, func) {\n for (var i = 0; i < arr.length; i++) {\n if (!func(arr[i], i)) return false;\n }\n return true;\n};\nexport default every;","/**\n * 只要有一个满足条件就返回 true\n * @param arr\n * @param func\n */\nvar some = function some(arr, func) {\n for (var i = 0; i < arr.length; i++) {\n if (func(arr[i], i)) return true;\n }\n return false;\n};\nexport default some;","import isArray from './is-array';\nimport isFunction from './is-function';\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction groupBy(data, condition) {\n if (!condition || !isArray(data)) {\n return {};\n }\n var result = {};\n // 兼容方法和 字符串的写法\n var predicate = isFunction(condition) ? condition : function (item) {\n return item[condition];\n };\n var key;\n for (var i = 0; i < data.length; i++) {\n var item = data[i];\n key = predicate(item);\n if (hasOwnProperty.call(result, key)) {\n result[key].push(item);\n } else {\n result[key] = [item];\n }\n }\n return result;\n}\nexport default groupBy;","import isArray from './is-array';\nimport isFunction from './is-function';\nimport groupBy from './group-by';\n/**\n * 将数据分组成 map\n * @param data\n * @param condition\n */\nexport default function groupToMap(data, condition) {\n if (!condition) {\n return {\n 0: data\n };\n }\n if (!isFunction(condition)) {\n // 如果是字符串,则按照 a*b 风格成数组\n var paramscondition_1 = isArray(condition) ? condition : condition.replace(/\\s+/g, '').split('*');\n condition = function condition(row) {\n var unique = '_'; // 避免出现数字作为Key的情况,会进行按照数字的排序\n // 根据字段列表的值,拼接成 key\n for (var i = 0, l = paramscondition_1.length; i < l; i++) {\n unique += row[paramscondition_1[i]] && row[paramscondition_1[i]].toString();\n }\n return unique;\n };\n }\n return groupBy(data, condition);\n}","import groupToMap from './group-to-map';\nexport default (function (data, condition) {\n if (!condition) {\n // 没有条件,则自身改成数组\n return [data];\n }\n var groups = groupToMap(data, condition);\n var array = [];\n for (var i in groups) {\n array.push(groups[i]);\n }\n return array;\n});","import isArray from './is-array';\nfunction parseRadius(radius) {\n var r1 = 0,\n r2 = 0,\n r3 = 0,\n r4 = 0;\n if (isArray(radius)) {\n if (radius.length === 1) {\n r1 = r2 = r3 = r4 = radius[0];\n } else if (radius.length === 2) {\n r1 = r3 = radius[0];\n r2 = r4 = radius[1];\n } else if (radius.length === 3) {\n r1 = radius[0];\n r2 = r4 = radius[1];\n r3 = radius[2];\n } else {\n r1 = radius[0];\n r2 = radius[1];\n r3 = radius[2];\n r4 = radius[3];\n }\n } else {\n r1 = r2 = r3 = r4 = radius;\n }\n return {\n r1: r1,\n r2: r2,\n r3: r3,\n r4: r4\n };\n}\nexport default parseRadius;","var clamp = function clamp(a, min, max) {\n if (a < min) {\n return min;\n } else if (a > max) {\n return max;\n }\n return a;\n};\nexport default clamp;","var fixedBase = function fixedBase(v, base) {\n var str = base.toString();\n var index = str.indexOf('.');\n if (index === -1) {\n return Math.round(v);\n }\n var length = str.substr(index + 1).length;\n if (length > 20) {\n length = 20;\n }\n return parseFloat(v.toFixed(length));\n};\nexport default fixedBase;","/**\n * 判断是否数字\n * @return {Boolean} 是否数字\n */\nimport isType from './is-type';\nvar isNumber = function isNumber(value) {\n return isType(value, 'Number');\n};\nexport default isNumber;","var PRECISION = 0.00001; // numbers less than this is considered as 0\nexport default function isNumberEqual(a, b, precision) {\n if (precision === void 0) {\n precision = PRECISION;\n }\n return Math.abs(a - b) < precision;\n}\n;","import isNumber from './is-number';\nvar isInteger = Number.isInteger ? Number.isInteger : function (num) {\n return isNumber(num) && num % 1 === 0;\n};\nexport default isInteger;","import isNumber from './is-number';\nvar isOdd = function isOdd(num) {\n return isNumber(num) && num % 2 !== 0;\n};\nexport default isOdd;","import isArray from './is-array';\nimport isFunction from './is-function';\n/**\n * @param {Array} arr The array to iterate over.\n * @param {Function} [fn] The iteratee invoked per element.\n * @return {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\nexport default (function (arr, fn) {\n if (!isArray(arr)) {\n return undefined;\n }\n var maxItem;\n var max = -Infinity;\n for (var i = 0; i < arr.length; i++) {\n var item = arr[i];\n var v = isFunction(fn) ? fn(item) : item[fn];\n if (v > max) {\n maxItem = item;\n max = v;\n }\n }\n return maxItem;\n});","import isArray from './is-array';\nimport isFunction from './is-function';\n/**\n * @param {Array} arr The array to iterate over.\n * @param {Function} [fn] The iteratee invoked per element.\n * @return {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * minBy(objects, 'n');\n * // => { 'n': 1 }\n */\nexport default (function (arr, fn) {\n if (!isArray(arr)) {\n return undefined;\n }\n var minItem;\n var min = Infinity;\n for (var i = 0; i < arr.length; i++) {\n var item = arr[i];\n var v = isFunction(fn) ? fn(item) : item[fn];\n if (v < min) {\n minItem = item;\n min = v;\n }\n }\n return minItem;\n});","var mod = function mod(n, m) {\n return (n % m + m) % m;\n};\nexport default mod;","var RADIAN = Math.PI / 180;\nvar toRadian = function toRadian(degree) {\n return RADIAN * degree;\n};\nexport default toRadian;","var DEGREE = 180 / Math.PI;\nvar toDegree = function toDegree(radian) {\n return DEGREE * radian;\n};\nexport default toDegree;","import each from './each';\nexport default each;","import has from './has';\nexport default has;","export default (function (obj, key) {\n return obj.hasOwnProperty(key);\n});","import each from './each';\nimport isFunction from './is-function';\n// @ts-ignore\nvar values = Object.values ? function (obj) {\n return Object.values(obj);\n} : function (obj) {\n var result = [];\n each(obj, function (value, key) {\n if (!(isFunction(obj) && key === 'prototype')) {\n result.push(value);\n }\n });\n return result;\n};\nexport default values;","import isNil from './is-nil';\nexport default (function (value) {\n if (isNil(value)) return '';\n return value.toString();\n});","import toString from './to-string';\nvar lowerCase = function lowerCase(str) {\n return toString(str).toLowerCase();\n};\nexport default lowerCase;","function substitute(str, o) {\n if (!str || !o) {\n return str;\n }\n return str.replace(/\\\\?\\{([^{}]+)\\}/g, function (match, name) {\n if (match.charAt(0) === '\\\\') {\n return match.slice(1);\n }\n return o[name] === undefined ? '' : o[name];\n });\n}\nexport default substitute;","import toString from './to-string';\nvar upperFirst = function upperFirst(value) {\n var str = toString(value);\n return str.charAt(0).toUpperCase() + str.substring(1);\n};\nexport default upperFirst;","var toString = {}.toString;\nvar getType = function getType(value) {\n return toString.call(value).replace(/^\\[object /, '').replace(/]$/, '');\n};\nexport default getType;","/**\n * 是否是布尔类型\n *\n * @param {Object} value 测试的值\n * @return {Boolean}\n */\nimport isType from './is-type';\nvar isBoolean = function isBoolean(value) {\n return isType(value, 'Boolean');\n};\nexport default isBoolean;","import isType from './is-type';\nvar isDate = function isDate(value) {\n return isType(value, 'Date');\n};\nexport default isDate;","var isNull = function isNull(value) {\n return value === null;\n};\nexport default isNull;","var objectProto = Object.prototype;\nvar isPrototype = function isPrototype(value) {\n var Ctor = value && value.constructor;\n var proto = typeof Ctor === 'function' && Ctor.prototype || objectProto;\n return value === proto;\n};\nexport default isPrototype;","var isUndefined = function isUndefined(value) {\n return value === undefined;\n};\nexport default isUndefined;","/**\n * 判断是否HTML元素\n * @return {Boolean} 是否HTML元素\n */\nvar isElement = function isElement(o) {\n return o instanceof Element || o instanceof HTMLDocument;\n};\nexport default isElement;","export default function requestAnimationFrame(fn) {\n var method = window.requestAnimationFrame || window.webkitRequestAnimationFrame ||\n // @ts-ignore\n window.mozRequestAnimationFrame ||\n // @ts-ignore\n window.msRequestAnimationFrame || function (f) {\n return setTimeout(f, 16);\n };\n return method(fn);\n}\n;","export default function cancelAnimationFrame(handler) {\n var method = window.cancelAnimationFrame || window.webkitCancelAnimationFrame ||\n // @ts-ignore\n window.mozCancelAnimationFrame ||\n // @ts-ignore\n window.msCancelAnimationFrame || clearTimeout;\n method(handler);\n}\n;","import mix from './mix';\nimport isFunction from './is-function';\nvar augment = function augment() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var c = args[0];\n for (var i = 1; i < args.length; i++) {\n var obj = args[i];\n if (isFunction(obj)) {\n obj = obj.prototype;\n }\n mix(c.prototype, obj);\n }\n};\nexport default augment;","import isArray from './is-array';\nvar clone = function clone(obj) {\n if (typeof obj !== 'object' || obj === null) {\n return obj;\n }\n var rst;\n if (isArray(obj)) {\n rst = [];\n for (var i = 0, l = obj.length; i < l; i++) {\n if (typeof obj[i] === 'object' && obj[i] != null) {\n rst[i] = clone(obj[i]);\n } else {\n rst[i] = obj[i];\n }\n }\n } else {\n rst = {};\n for (var k in obj) {\n if (typeof obj[k] === 'object' && obj[k] != null) {\n rst[k] = clone(obj[k]);\n } else {\n rst[k] = obj[k];\n }\n }\n }\n return rst;\n};\nexport default clone;","function debounce(func, wait, immediate) {\n var timeout;\n return function () {\n var context = this,\n args = arguments;\n var later = function later() {\n timeout = null;\n if (!immediate) {\n func.apply(context, args);\n }\n };\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) {\n func.apply(context, args);\n }\n };\n}\nexport default debounce;","import isFunction from './is-function';\n/**\n * _.memoize(calColor);\n * _.memoize(calColor, (...args) => args[0]);\n * @param f\n * @param resolver\n */\nexport default (function (f, resolver) {\n if (!isFunction(f)) {\n throw new TypeError('Expected a function');\n }\n var memoized = function memoized() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n // 使用方法构造 key,如果不存在 resolver,则直接取第一个参数作为 key\n var key = resolver ? resolver.apply(this, args) : args[0];\n var cache = memoized.cache;\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = f.apply(this, args);\n // 缓存起来\n cache.set(key, result);\n return result;\n };\n memoized.cache = new Map();\n return memoized;\n});","import isArray from './is-array';\nimport isPlainObject from './is-plain-object';\nvar MAX_MIX_LEVEL = 5;\nfunction _deepMix(dist, src, level, maxLevel) {\n level = level || 0;\n maxLevel = maxLevel || MAX_MIX_LEVEL;\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n var value = src[key];\n if (value !== null && isPlainObject(value)) {\n if (!isPlainObject(dist[key])) {\n dist[key] = {};\n }\n if (level < maxLevel) {\n _deepMix(dist[key], value, level + 1, maxLevel);\n } else {\n dist[key] = src[key];\n }\n } else if (isArray(value)) {\n dist[key] = [];\n dist[key] = dist[key].concat(value);\n } else if (value !== undefined) {\n dist[key] = value;\n }\n }\n }\n}\n// todo 重写\nvar deepMix = function deepMix(rst) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n for (var i = 0; i < args.length; i += 1) {\n _deepMix(rst, args[i]);\n }\n return rst;\n};\nexport default deepMix;","import isArrayLike from './is-array-like';\nvar indexOf = function indexOf(arr, obj) {\n if (!isArrayLike(arr)) {\n return -1;\n }\n var m = Array.prototype.indexOf;\n if (m) {\n return m.call(arr, obj);\n }\n var index = -1;\n for (var i = 0; i < arr.length; i++) {\n if (arr[i] === obj) {\n index = i;\n break;\n }\n }\n return index;\n};\nexport default indexOf;","import isNil from './is-nil';\nimport isArrayLike from './is-array-like';\nimport getType from './get-type';\nimport isPrototype from './is-prototype';\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction isEmpty(value) {\n /**\n * isEmpty(null) => true\n * isEmpty() => true\n * isEmpty(true) => true\n * isEmpty(1) => true\n * isEmpty([1, 2, 3]) => false\n * isEmpty('abc') => false\n * isEmpty({ a: 1 }) => false\n */\n if (isNil(value)) {\n return true;\n }\n if (isArrayLike(value)) {\n return !value.length;\n }\n var type = getType(value);\n if (type === 'Map' || type === 'Set') {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !Object.keys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\nexport default isEmpty;","import isObjectLike from './is-object-like';\nimport isArrayLike from './is-array-like';\nimport isString from './is-string';\nvar isEqual = function isEqual(value, other) {\n if (value === other) {\n return true;\n }\n if (!value || !other) {\n return false;\n }\n if (isString(value) || isString(other)) {\n return false;\n }\n if (isArrayLike(value) || isArrayLike(other)) {\n if (value.length !== other.length) {\n return false;\n }\n var rst = true;\n for (var i = 0; i < value.length; i++) {\n rst = isEqual(value[i], other[i]);\n if (!rst) {\n break;\n }\n }\n return rst;\n }\n if (isObjectLike(value) || isObjectLike(other)) {\n var valueKeys = Object.keys(value);\n var otherKeys = Object.keys(other);\n if (valueKeys.length !== otherKeys.length) {\n return false;\n }\n var rst = true;\n for (var i = 0; i < valueKeys.length; i++) {\n rst = isEqual(value[valueKeys[i]], other[valueKeys[i]]);\n if (!rst) {\n break;\n }\n }\n return rst;\n }\n return false;\n};\nexport default isEqual;","import isArrayLike from './is-array-like';\nvar map = function map(arr, func) {\n if (!isArrayLike(arr)) {\n // @ts-ignore\n return arr;\n }\n var result = [];\n for (var index = 0; index < arr.length; index++) {\n var value = arr[index];\n result.push(func(value, index));\n }\n return result;\n};\nexport default map;","import isNil from './is-nil';\nimport isObject from './is-object';\nvar identity = function identity(v) {\n return v;\n};\nexport default (function (object, func) {\n if (func === void 0) {\n func = identity;\n }\n var r = {};\n if (isObject(object) && !isNil(object)) {\n Object.keys(object).forEach(function (key) {\n // @ts-ignore\n r[key] = func(object[key], key);\n });\n }\n return r;\n});","// FIXME: Mutable param should be forbidden in static lang.\nfunction _mix(dist, obj) {\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && key !== 'constructor' && obj[key] !== undefined) {\n dist[key] = obj[key];\n }\n }\n}\nexport default function mix(dist, src1, src2, src3) {\n if (src1) _mix(dist, src1);\n if (src2) _mix(dist, src2);\n if (src3) _mix(dist, src3);\n return dist;\n}","import isString from './is-string';\n/**\n * https://github.com/developit/dlv/blob/master/index.js\n * @param obj\n * @param key\n * @param defaultValue\n */\nexport default (function (obj, key, defaultValue) {\n var p = 0;\n var keyArr = isString(key) ? key.split('.') : key;\n while (obj && p < keyArr.length) {\n obj = obj[keyArr[p++]];\n }\n return obj === undefined || p < keyArr.length ? defaultValue : obj;\n});","import isObject from './is-object';\nimport isString from './is-string';\nimport isNumber from './is-number';\n/**\n * https://github.com/developit/dlv/blob/master/index.js\n * @param obj\n * @param path\n * @param value\n */\nexport default (function (obj, path, value) {\n var o = obj;\n var keyArr = isString(path) ? path.split('.') : path;\n keyArr.forEach(function (key, idx) {\n // 不是最后一个\n if (idx < keyArr.length - 1) {\n if (!isObject(o[key])) {\n o[key] = isNumber(keyArr[idx + 1]) ? [] : {};\n }\n o = o[key];\n } else {\n o[key] = value;\n }\n });\n return obj;\n});","import each from './each';\nimport isPlainObject from './is-plain-object';\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nexport default (function (object, keys) {\n if (object === null || !isPlainObject(object)) {\n return {};\n }\n var result = {};\n each(keys, function (key) {\n if (hasOwnProperty.call(object, key)) {\n result[key] = object[key];\n }\n });\n return result;\n});","import reduce from './reduce';\nexport default (function (obj, keys) {\n return reduce(obj, function (r, curr, key) {\n if (!keys.includes(key)) {\n r[key] = curr;\n }\n return r;\n }, {});\n});","export default (function (func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n var later = function later() {\n previous = options.leading === false ? 0 : Date.now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n var throttled = function throttled() {\n var now = Date.now();\n if (!previous && options.leading === false) previous = now;\n var remaining = wait - (now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n throttled.cancel = function () {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n return throttled;\n});","import isArrayLike from './is-array-like';\nexport default (function (value) {\n return isArrayLike(value) ? Array.prototype.slice.call(value) : [];\n});","var map = {};\nexport default (function (prefix) {\n prefix = prefix || 'g';\n if (!map[prefix]) {\n map[prefix] = 1;\n } else {\n map[prefix] += 1;\n }\n return prefix + map[prefix];\n});","export default (function () {});","import isNil from './is-nil';\nimport isArraylike from './is-array-like';\nexport default function size(o) {\n if (isNil(o)) {\n return 0;\n }\n if (isArraylike(o)) {\n return o.length;\n }\n return Object.keys(o).length;\n}","import { __spreadArrays } from \"tslib\";\nimport values from './values';\nimport memoize from './memoize';\nimport isString from './is-string';\nvar ctx;\n/**\n * 计算文本的宽度\n */\nexport default memoize(function (text, font) {\n if (font === void 0) {\n font = {};\n }\n var fontSize = font.fontSize,\n fontFamily = font.fontFamily,\n fontWeight = font.fontWeight,\n fontStyle = font.fontStyle,\n fontVariant = font.fontVariant;\n if (!ctx) {\n ctx = document.createElement('canvas').getContext('2d');\n }\n ctx.font = [fontStyle, fontVariant, fontWeight, fontSize + \"px\", fontFamily].join(' ');\n return ctx.measureText(isString(text) ? text : '').width;\n}, function (text, font) {\n if (font === void 0) {\n font = {};\n }\n return __spreadArrays([text], values(font)).join('');\n});","import isString from './is-string';\nimport toString from './to-string';\nimport { default as measureTextWidth } from './measure-text-width';\n/**\n * 获取文本的 ... 文本。\n * 算法(减少每次 measureText 的长度,measureText 的性能跟字符串时间相关):\n * 1. 先通过 STEP 逐步计算,找到最后一个小于 maxWidth 的字符串\n * 2. 然后对最后这个字符串二分计算\n * @param text 需要计算的文本, 由于历史原因 除了支持string,还支持空值,number和数组等\n * @param maxWidth 最大宽度\n * @param font 字体\n * @param str 要替换的文本\n */\nexport default (function (text, maxWidth, font, str) {\n if (str === void 0) {\n str = '...';\n }\n var STEP = 16; // 每次 16,调参工程师\n var PLACEHOLDER_WIDTH = measureTextWidth(str, font);\n var leftText = !isString(text) ? toString(text) : text;\n var leftWidth = maxWidth;\n var r = []; // 最终的分段字符串\n var currentText;\n var currentWidth;\n if (measureTextWidth(text, font) <= maxWidth) {\n return text;\n }\n // 首先通过 step 计算,找出最大的未超出长度的\n // eslint-disable-next-line no-constant-condition\n while (true) {\n // 更新字符串\n currentText = leftText.substr(0, STEP);\n // 计算宽度\n currentWidth = measureTextWidth(currentText, font);\n // 超出剩余宽度,则停止\n if (currentWidth + PLACEHOLDER_WIDTH > leftWidth) {\n if (currentWidth > leftWidth) {\n break;\n }\n }\n r.push(currentText);\n // 没有超出,则计算剩余宽度\n leftWidth -= currentWidth;\n leftText = leftText.substr(STEP);\n // 字符串整体没有超出\n if (!leftText) {\n return r.join('');\n }\n }\n // 最下的最后一个 STEP,使用 1 递增(用二分效果更高)\n // eslint-disable-next-line no-constant-condition\n while (true) {\n // 更新字符串\n currentText = leftText.substr(0, 1);\n // 计算宽度\n currentWidth = measureTextWidth(currentText, font);\n // 超出剩余宽度,则停止\n if (currentWidth + PLACEHOLDER_WIDTH > leftWidth) {\n break;\n }\n r.push(currentText);\n // 没有超出,则计算剩余宽度\n leftWidth -= currentWidth;\n leftText = leftText.substr(1);\n if (!leftText) {\n return r.join('');\n }\n }\n return \"\" + r.join('') + str;\n});","/**\n * k-v 存储\n */\nvar default_1 = /** @class */function () {\n function default_1() {\n this.map = {};\n }\n default_1.prototype.has = function (key) {\n return this.map[key] !== undefined;\n };\n default_1.prototype.get = function (key, def) {\n var v = this.map[key];\n return v === undefined ? def : v;\n };\n default_1.prototype.set = function (key, value) {\n this.map[key] = value;\n };\n default_1.prototype.clear = function () {\n this.map = {};\n };\n default_1.prototype.delete = function (key) {\n delete this.map[key];\n };\n default_1.prototype.size = function () {\n return Object.keys(this.map).length;\n };\n return default_1;\n}();\nexport default default_1;","var clone = function () {\n 'use strict';\n\n function _instanceof(obj, type) {\n return type != null && obj instanceof type;\n }\n var nativeMap;\n try {\n nativeMap = Map;\n } catch (_) {\n // maybe a reference error because no `Map`. Give it a dummy value that no\n // value will ever be an instanceof.\n nativeMap = function nativeMap() {};\n }\n var nativeSet;\n try {\n nativeSet = Set;\n } catch (_) {\n nativeSet = function nativeSet() {};\n }\n var nativePromise;\n try {\n nativePromise = Promise;\n } catch (_) {\n nativePromise = function nativePromise() {};\n }\n\n /**\n * Clones (copies) an Object using deep copying.\n *\n * This function supports circular references by default, but if you are certain\n * there are no circular references in your object, you can save some CPU time\n * by calling clone(obj, false).\n *\n * Caution: if `circular` is false and `parent` contains circular references,\n * your program may enter an infinite loop and crash.\n *\n * @param `parent` - the object to be cloned\n * @param `circular` - set to true if the object to be cloned may contain\n * circular references. (optional - true by default)\n * @param `depth` - set to a number if the object is only to be cloned to\n * a particular depth. (optional - defaults to Infinity)\n * @param `prototype` - sets the prototype to be used when cloning an object.\n * (optional - defaults to parent prototype).\n * @param `includeNonEnumerable` - set to true if the non-enumerable properties\n * should be cloned as well. Non-enumerable properties on the prototype\n * chain will be ignored. (optional - false by default)\n */\n function clone(parent, circular, depth, prototype, includeNonEnumerable) {\n if (typeof circular === 'object') {\n depth = circular.depth;\n prototype = circular.prototype;\n includeNonEnumerable = circular.includeNonEnumerable;\n circular = circular.circular;\n }\n // maintain two arrays for circular references, where corresponding parents\n // and children have the same index\n var allParents = [];\n var allChildren = [];\n var useBuffer = typeof Buffer != 'undefined';\n if (typeof circular == 'undefined') circular = true;\n if (typeof depth == 'undefined') depth = Infinity;\n\n // recurse this function so we don't reset allParents and allChildren\n function _clone(parent, depth) {\n // cloning null always returns null\n if (parent === null) return null;\n if (depth === 0) return parent;\n var child;\n var proto;\n if (typeof parent != 'object') {\n return parent;\n }\n if (_instanceof(parent, nativeMap)) {\n child = new nativeMap();\n } else if (_instanceof(parent, nativeSet)) {\n child = new nativeSet();\n } else if (_instanceof(parent, nativePromise)) {\n child = new nativePromise(function (resolve, reject) {\n parent.then(function (value) {\n resolve(_clone(value, depth - 1));\n }, function (err) {\n reject(_clone(err, depth - 1));\n });\n });\n } else if (clone.__isArray(parent)) {\n child = [];\n } else if (clone.__isRegExp(parent)) {\n child = new RegExp(parent.source, __getRegExpFlags(parent));\n if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n } else if (clone.__isDate(parent)) {\n child = new Date(parent.getTime());\n } else if (useBuffer && Buffer.isBuffer(parent)) {\n if (Buffer.allocUnsafe) {\n // Node.js >= 4.5.0\n child = Buffer.allocUnsafe(parent.length);\n } else {\n // Older Node.js versions\n child = new Buffer(parent.length);\n }\n parent.copy(child);\n return child;\n } else if (_instanceof(parent, Error)) {\n child = Object.create(parent);\n } else {\n if (typeof prototype == 'undefined') {\n proto = Object.getPrototypeOf(parent);\n child = Object.create(proto);\n } else {\n child = Object.create(prototype);\n proto = prototype;\n }\n }\n if (circular) {\n var index = allParents.indexOf(parent);\n if (index != -1) {\n return allChildren[index];\n }\n allParents.push(parent);\n allChildren.push(child);\n }\n if (_instanceof(parent, nativeMap)) {\n parent.forEach(function (value, key) {\n var keyChild = _clone(key, depth - 1);\n var valueChild = _clone(value, depth - 1);\n child.set(keyChild, valueChild);\n });\n }\n if (_instanceof(parent, nativeSet)) {\n parent.forEach(function (value) {\n var entryChild = _clone(value, depth - 1);\n child.add(entryChild);\n });\n }\n for (var i in parent) {\n var attrs;\n if (proto) {\n attrs = Object.getOwnPropertyDescriptor(proto, i);\n }\n if (attrs && attrs.set == null) {\n continue;\n }\n child[i] = _clone(parent[i], depth - 1);\n }\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(parent);\n for (var i = 0; i < symbols.length; i++) {\n // Don't need to worry about cloning a symbol because it is a primitive,\n // like a number or string.\n var symbol = symbols[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);\n if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {\n continue;\n }\n child[symbol] = _clone(parent[symbol], depth - 1);\n if (!descriptor.enumerable) {\n Object.defineProperty(child, symbol, {\n enumerable: false\n });\n }\n }\n }\n if (includeNonEnumerable) {\n var allPropertyNames = Object.getOwnPropertyNames(parent);\n for (var i = 0; i < allPropertyNames.length; i++) {\n var propertyName = allPropertyNames[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);\n if (descriptor && descriptor.enumerable) {\n continue;\n }\n child[propertyName] = _clone(parent[propertyName], depth - 1);\n Object.defineProperty(child, propertyName, {\n enumerable: false\n });\n }\n }\n return child;\n }\n return _clone(parent, depth);\n }\n\n /**\n * Simple flat clone using prototype, accepts only objects, usefull for property\n * override on FLAT configuration object (no nested props).\n *\n * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n * works.\n */\n clone.clonePrototype = function clonePrototype(parent) {\n if (parent === null) return null;\n var c = function c() {};\n c.prototype = parent;\n return new c();\n };\n\n // private utility functions\n\n function __objToStr(o) {\n return Object.prototype.toString.call(o);\n }\n clone.__objToStr = __objToStr;\n function __isDate(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Date]';\n }\n clone.__isDate = __isDate;\n function __isArray(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Array]';\n }\n clone.__isArray = __isArray;\n function __isRegExp(o) {\n return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n }\n clone.__isRegExp = __isRegExp;\n function __getRegExpFlags(re) {\n var flags = '';\n if (re.global) flags += 'g';\n if (re.ignoreCase) flags += 'i';\n if (re.multiline) flags += 'm';\n return flags;\n }\n clone.__getRegExpFlags = __getRegExpFlags;\n return clone;\n}();\nif (typeof module === 'object' && module.exports) {\n module.exports = clone;\n}","import define, { extend } from \"./define.js\";\nexport function Color() {}\nvar _darker = 0.7;\nexport { _darker as darker };\nvar _brighter = 1 / _darker;\nexport { _brighter as brighter };\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\".concat(reI, \",\").concat(reI, \",\").concat(reI, \"\\\\)$\")),\n reRgbPercent = new RegExp(\"^rgb\\\\(\".concat(reP, \",\").concat(reP, \",\").concat(reP, \"\\\\)$\")),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\".concat(reI, \",\").concat(reI, \",\").concat(reI, \",\").concat(reN, \"\\\\)$\")),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\".concat(reP, \",\").concat(reP, \",\").concat(reP, \",\").concat(reN, \"\\\\)$\")),\n reHslPercent = new RegExp(\"^hsl\\\\(\".concat(reN, \",\").concat(reP, \",\").concat(reP, \"\\\\)$\")),\n reHslaPercent = new RegExp(\"^hsla\\\\(\".concat(reN, \",\").concat(reP, \",\").concat(reP, \",\").concat(reN, \"\\\\)$\"));\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\ndefine(Color, color, {\n copy: function copy(channels) {\n return Object.assign(new this.constructor(), this, channels);\n },\n displayable: function displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex,\n // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb(m >> 8 & 0xf | m >> 4 & 0xf0, m >> 4 & 0xf | m & 0xf0, (m & 0xf) << 4 | m & 0xf, 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba(m >> 12 & 0xf | m >> 8 & 0xf0, m >> 8 & 0xf | m >> 4 & 0xf0, m >> 4 & 0xf | m & 0xf0, ((m & 0xf) << 4 | m & 0xf) / 0xff) // #f000\n : null // invalid hex\n ) : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0) : null;\n}\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb();\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\ndefine(Rgb, rgb, extend(Color, {\n brighter: function brighter(k) {\n k = k == null ? _brighter : Math.pow(_brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function darker(k) {\n k = k == null ? _darker : Math.pow(_darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function rgb() {\n return this;\n },\n clamp: function clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable: function displayable() {\n return -0.5 <= this.r && this.r < 255.5 && -0.5 <= this.g && this.g < 255.5 && -0.5 <= this.b && this.b < 255.5 && 0 <= this.opacity && this.opacity <= 1;\n },\n hex: rgb_formatHex,\n // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\nfunction rgb_formatHex() {\n return \"#\".concat(hex(this.r)).concat(hex(this.g)).concat(hex(this.b));\n}\nfunction rgb_formatHex8() {\n return \"#\".concat(hex(this.r)).concat(hex(this.g)).concat(hex(this.b)).concat(hex((isNaN(this.opacity) ? 1 : this.opacity) * 255));\n}\nfunction rgb_formatRgb() {\n var a = clampa(this.opacity);\n return \"\".concat(a === 1 ? \"rgb(\" : \"rgba(\").concat(clampi(this.r), \", \").concat(clampi(this.g), \", \").concat(clampi(this.b)).concat(a === 1 ? \")\" : \", \".concat(a, \")\"));\n}\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;else if (l <= 0 || l >= 1) h = s = NaN;else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl();\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;else if (g === max) h = (b - r) / s + 2;else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\ndefine(Hsl, hsl, extend(Color, {\n brighter: function brighter(k) {\n k = k == null ? _brighter : Math.pow(_brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function darker(k) {\n k = k == null ? _darker : Math.pow(_darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2), hsl2rgb(h, m1, m2), hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2), this.opacity);\n },\n clamp: function clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable: function displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s)) && 0 <= this.l && this.l <= 1 && 0 <= this.opacity && this.opacity <= 1;\n },\n formatHsl: function formatHsl() {\n var a = clampa(this.opacity);\n return \"\".concat(a === 1 ? \"hsl(\" : \"hsla(\").concat(clamph(this.h), \", \").concat(clampt(this.s) * 100, \"%, \").concat(clampt(this.l) * 100, \"%\").concat(a === 1 ? \")\" : \", \".concat(a, \")\"));\n }\n}));\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60 : h < 180 ? m2 : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60 : m1) * 255;\n}","export default function (constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}","import value from \"./value.js\";\nimport numberArray, { isNumberArray } from \"./numberArray.js\";\nexport default function (a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n return function (t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1,\n t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0 + (4 - 6 * t2 + 3 * t3) * v1 + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2 + t3 * v3) / 6;\n}\nexport default function (values) {\n var n = values.length - 1;\n return function (t) {\n var i = t <= 0 ? t = 0 : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}","import { basis } from \"./basis.js\";\nexport default function (values) {\n var n = values.length;\n return function (t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}","import constant from \"./constant.js\";\nfunction linear(a, d) {\n return function (t) {\n return a + t * d;\n };\n}\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function (t) {\n return Math.pow(a + t * b, y);\n };\n}\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function (a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}","export default (function (x) {\n return function () {\n return x;\n };\n});","export default function (a, b) {\n var d = new Date();\n return a = +a, b = +b, function (t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}","export default function (a, b) {\n return a = +a, b = +b, function (t) {\n return a * (1 - t) + b * t;\n };\n}","export default function (a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function (t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}","import value from \"./value.js\";\nexport default function (a, b) {\n var i = {},\n c = {},\n k;\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n return function (t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}","import { rgb as colorRgb } from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, { gamma } from \"./color.js\";\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function (t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n rgb.gamma = rgbGamma;\n return rgb;\n})(1);\nfunction rgbSpline(spline) {\n return function (colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i,\n color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function (t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);","import number from \"./number.js\";\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\nfunction zero(b) {\n return function () {\n return b;\n };\n}\nfunction one(b) {\n return function (t) {\n return b(t) + \"\";\n };\n}\nexport default function (a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0,\n // scan index for next number in b\n am,\n // current match in a\n bm,\n // current match in b\n bs,\n // string preceding current number in b, if any\n i = -1,\n // index in s\n s = [],\n // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a)) && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) {\n // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) {\n // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else {\n // interpolate non-matching numbers\n s[++i] = null;\n q.push({\n i: i,\n x: number(am, bm)\n });\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? q[0] ? one(q[0].x) : zero(b) : (b = q.length, function (t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}","import { color } from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport { genericArray } from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, { isNumberArray } from \"./numberArray.js\";\nexport default function (a, b) {\n var t = typeof b,\n c;\n return b == null || t === \"boolean\" ? constant(b) : (t === \"number\" ? number : t === \"string\" ? (c = color(b)) ? (b = c, rgb) : string : b instanceof color ? rgb : b instanceof Date ? date : isNumberArray(b) ? numberArray : Array.isArray(b) ? genericArray : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object : number)(a, b);\n}","// https://github.com/HarryStevens/d3-regression#readme Version 1.3.10. Copyright 2022 Harry Stevens.\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : (global = global || self, factory(global.d3 = {}));\n})(this, function (exports) {\n 'use strict';\n\n function _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n }\n function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n }\n function _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\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 return _arr;\n }\n function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n\n // Adapted from vega-statistics by Jeffrey Heer\n // License: https://github.com/vega/vega/blob/f058b099decad9db78301405dd0d2e9d8ba3d51a/LICENSE\n // Source: https://github.com/vega/vega/blob/f058b099decad9db78301405dd0d2e9d8ba3d51a/packages/vega-statistics/src/regression/points.js\n function points(data, x, y, sort) {\n data = data.filter(function (d, i) {\n var u = x(d, i),\n v = y(d, i);\n return u != null && isFinite(u) && v != null && isFinite(v);\n });\n if (sort) {\n data.sort(function (a, b) {\n return x(a) - x(b);\n });\n }\n var n = data.length,\n X = new Float64Array(n),\n Y = new Float64Array(n); // extract values, calculate means\n\n var ux = 0,\n uy = 0,\n xv,\n yv,\n d;\n for (var i = 0; i < n;) {\n d = data[i];\n X[i] = xv = +x(d, i, data);\n Y[i] = yv = +y(d, i, data);\n ++i;\n ux += (xv - ux) / i;\n uy += (yv - uy) / i;\n } // mean center the data\n\n for (var _i = 0; _i < n; ++_i) {\n X[_i] -= ux;\n Y[_i] -= uy;\n }\n return [X, Y, ux, uy];\n }\n function visitPoints(data, x, y, cb) {\n var iterations = 0;\n for (var i = 0, n = data.length; i < n; i++) {\n var d = data[i],\n dx = +x(d, i, data),\n dy = +y(d, i, data);\n if (dx != null && isFinite(dx) && dy != null && isFinite(dy)) {\n cb(dx, dy, iterations++);\n }\n }\n }\n\n // return the coefficient of determination, or R squared.\n\n function determination(data, x, y, uY, predict) {\n var SSE = 0,\n SST = 0;\n visitPoints(data, x, y, function (dx, dy) {\n var sse = dy - predict(dx),\n sst = dy - uY;\n SSE += sse * sse;\n SST += sst * sst;\n });\n return 1 - SSE / SST;\n }\n\n // Returns the angle of a line in degrees.\n function angle(line) {\n return Math.atan2(line[1][1] - line[0][1], line[1][0] - line[0][0]) * 180 / Math.PI;\n } // Returns the midpoint of a line.\n\n function midpoint(line) {\n return [(line[0][0] + line[1][0]) / 2, (line[0][1] + line[1][1]) / 2];\n }\n\n // returns a smooth line.\n\n function interpose(xmin, xmax, predict) {\n var l = Math.log(xmax - xmin) * Math.LOG10E + 1 | 0;\n var precision = 1 * Math.pow(10, -l / 2 - 1),\n maxIter = 1e4;\n var points = [px(xmin), px(xmax)],\n iter = 0;\n while (find(points) && iter < maxIter) {}\n return points;\n function px(x) {\n return [x, predict(x)];\n }\n function find(points) {\n iter++;\n var n = points.length;\n var found = false;\n for (var i = 0; i < n - 1; i++) {\n var p0 = points[i],\n p1 = points[i + 1],\n m = midpoint([p0, p1]),\n mp = px(m[0]),\n a0 = angle([p0, m]),\n a1 = angle([p0, mp]),\n a = Math.abs(a0 - a1);\n if (a > precision) {\n points.splice(i + 1, 0, mp);\n found = true;\n }\n }\n return found;\n }\n }\n\n // Ordinary Least Squares from vega-statistics by Jeffrey Heer\n // License: https://github.com/vega/vega/blob/f058b099decad9db78301405dd0d2e9d8ba3d51a/LICENSE\n // Source: https://github.com/vega/vega/blob/f058b099decad9db78301405dd0d2e9d8ba3d51a/packages/vega-statistics/src/regression/ols.js\n function ols(uX, uY, uXY, uX2) {\n var delta = uX2 - uX * uX,\n slope = Math.abs(delta) < 1e-24 ? 0 : (uXY - uX * uY) / delta,\n intercept = uY - slope * uX;\n return [intercept, slope];\n }\n function exponential() {\n var x = function x(d) {\n return d[0];\n },\n y = function y(d) {\n return d[1];\n },\n domain;\n function exponential(data) {\n var n = 0,\n Y = 0,\n YL = 0,\n XY = 0,\n XYL = 0,\n X2Y = 0,\n xmin = domain ? +domain[0] : Infinity,\n xmax = domain ? +domain[1] : -Infinity;\n visitPoints(data, x, y, function (dx, dy) {\n var ly = Math.log(dy),\n xy = dx * dy;\n ++n;\n Y += (dy - Y) / n;\n XY += (xy - XY) / n;\n X2Y += (dx * xy - X2Y) / n;\n YL += (dy * ly - YL) / n;\n XYL += (xy * ly - XYL) / n;\n if (!domain) {\n if (dx < xmin) xmin = dx;\n if (dx > xmax) xmax = dx;\n }\n });\n var _ols = ols(XY / Y, YL / Y, XYL / Y, X2Y / Y),\n _ols2 = _slicedToArray(_ols, 2),\n a = _ols2[0],\n b = _ols2[1];\n a = Math.exp(a);\n var fn = function fn(x) {\n return a * Math.exp(b * x);\n },\n out = interpose(xmin, xmax, fn);\n out.a = a;\n out.b = b;\n out.predict = fn;\n out.rSquared = determination(data, x, y, Y, fn);\n return out;\n }\n exponential.domain = function (arr) {\n return arguments.length ? (domain = arr, exponential) : domain;\n };\n exponential.x = function (fn) {\n return arguments.length ? (x = fn, exponential) : x;\n };\n exponential.y = function (fn) {\n return arguments.length ? (y = fn, exponential) : y;\n };\n return exponential;\n }\n function linear() {\n var x = function x(d) {\n return d[0];\n },\n y = function y(d) {\n return d[1];\n },\n domain;\n function linear(data) {\n var n = 0,\n X = 0,\n // sum of x\n Y = 0,\n // sum of y\n XY = 0,\n // sum of x * y\n X2 = 0,\n // sum of x * x\n xmin = domain ? +domain[0] : Infinity,\n xmax = domain ? +domain[1] : -Infinity;\n visitPoints(data, x, y, function (dx, dy) {\n ++n;\n X += (dx - X) / n;\n Y += (dy - Y) / n;\n XY += (dx * dy - XY) / n;\n X2 += (dx * dx - X2) / n;\n if (!domain) {\n if (dx < xmin) xmin = dx;\n if (dx > xmax) xmax = dx;\n }\n });\n var _ols = ols(X, Y, XY, X2),\n _ols2 = _slicedToArray(_ols, 2),\n intercept = _ols2[0],\n slope = _ols2[1],\n fn = function fn(x) {\n return slope * x + intercept;\n },\n out = [[xmin, fn(xmin)], [xmax, fn(xmax)]];\n out.a = slope;\n out.b = intercept;\n out.predict = fn;\n out.rSquared = determination(data, x, y, Y, fn);\n return out;\n }\n linear.domain = function (arr) {\n return arguments.length ? (domain = arr, linear) : domain;\n };\n linear.x = function (fn) {\n return arguments.length ? (x = fn, linear) : x;\n };\n linear.y = function (fn) {\n return arguments.length ? (y = fn, linear) : y;\n };\n return linear;\n }\n\n // Returns the medium value of an array of numbers.\n function median(arr) {\n arr.sort(function (a, b) {\n return a - b;\n });\n var i = arr.length / 2;\n return i % 1 === 0 ? (arr[i - 1] + arr[i]) / 2 : arr[Math.floor(i)];\n }\n var maxiters = 2,\n epsilon = 1e-12;\n function loess() {\n var x = function x(d) {\n return d[0];\n },\n y = function y(d) {\n return d[1];\n },\n bandwidth = .3;\n function loess(data) {\n var _points = points(data, x, y, true),\n _points2 = _slicedToArray(_points, 4),\n xv = _points2[0],\n yv = _points2[1],\n ux = _points2[2],\n uy = _points2[3],\n n = xv.length,\n bw = Math.max(2, ~~(bandwidth * n)),\n yhat = new Float64Array(n),\n residuals = new Float64Array(n),\n robustWeights = new Float64Array(n).fill(1);\n for (var iter = -1; ++iter <= maxiters;) {\n var interval = [0, bw - 1];\n for (var i = 0; i < n; ++i) {\n var dx = xv[i],\n i0 = interval[0],\n i1 = interval[1],\n edge = dx - xv[i0] > xv[i1] - dx ? i0 : i1;\n var W = 0,\n X = 0,\n Y = 0,\n XY = 0,\n X2 = 0,\n denom = 1 / Math.abs(xv[edge] - dx || 1); // Avoid singularity\n\n for (var k = i0; k <= i1; ++k) {\n var xk = xv[k],\n yk = yv[k],\n w = tricube(Math.abs(dx - xk) * denom) * robustWeights[k],\n xkw = xk * w;\n W += w;\n X += xkw;\n Y += yk * w;\n XY += yk * xkw;\n X2 += xk * xkw;\n } // Linear regression fit\n\n var _ols = ols(X / W, Y / W, XY / W, X2 / W),\n _ols2 = _slicedToArray(_ols, 2),\n a = _ols2[0],\n b = _ols2[1];\n yhat[i] = a + b * dx;\n residuals[i] = Math.abs(yv[i] - yhat[i]);\n updateInterval(xv, i + 1, interval);\n }\n if (iter === maxiters) {\n break;\n }\n var medianResidual = median(residuals);\n if (Math.abs(medianResidual) < epsilon) break;\n for (var _i = 0, arg, _w; _i < n; ++_i) {\n arg = residuals[_i] / (6 * medianResidual); // Default to epsilon (rather than zero) for large deviations\n // Keeping weights tiny but non-zero prevents singularites\n\n robustWeights[_i] = arg >= 1 ? epsilon : (_w = 1 - arg * arg) * _w;\n }\n }\n return output(xv, yhat, ux, uy);\n }\n loess.bandwidth = function (bw) {\n return arguments.length ? (bandwidth = bw, loess) : bandwidth;\n };\n loess.x = function (fn) {\n return arguments.length ? (x = fn, loess) : x;\n };\n loess.y = function (fn) {\n return arguments.length ? (y = fn, loess) : y;\n };\n return loess;\n } // Weighting kernel for local regression\n\n function tricube(x) {\n return (x = 1 - x * x * x) * x * x;\n } // Advance sliding window interval of nearest neighbors\n\n function updateInterval(xv, i, interval) {\n var val = xv[i],\n left = interval[0],\n right = interval[1] + 1;\n if (right >= xv.length) return; // Step right if distance to new right edge is <= distance to old left edge\n // Step when distance is equal to ensure movement over duplicate x values\n\n while (i > left && xv[right] - val <= val - xv[left]) {\n interval[0] = ++left;\n interval[1] = right;\n ++right;\n }\n } // Generate smoothed output points\n // Average points with repeated x values\n\n function output(xv, yhat, ux, uy) {\n var n = xv.length,\n out = [];\n var i = 0,\n cnt = 0,\n prev = [],\n v;\n for (; i < n; ++i) {\n v = xv[i] + ux;\n if (prev[0] === v) {\n // Average output values via online update\n prev[1] += (yhat[i] - prev[1]) / ++cnt;\n } else {\n // Add new output point\n cnt = 0;\n prev[1] += uy;\n prev = [v, yhat[i]];\n out.push(prev);\n }\n }\n prev[1] += uy;\n return out;\n }\n function logarithmic() {\n var x = function x(d) {\n return d[0];\n },\n y = function y(d) {\n return d[1];\n },\n base = Math.E,\n domain;\n function logarithmic(data) {\n var n = 0,\n X = 0,\n Y = 0,\n XY = 0,\n X2 = 0,\n xmin = domain ? +domain[0] : Infinity,\n xmax = domain ? +domain[1] : -Infinity,\n lb = Math.log(base);\n visitPoints(data, x, y, function (dx, dy) {\n var lx = Math.log(dx) / lb;\n ++n;\n X += (lx - X) / n;\n Y += (dy - Y) / n;\n XY += (lx * dy - XY) / n;\n X2 += (lx * lx - X2) / n;\n if (!domain) {\n if (dx < xmin) xmin = dx;\n if (dx > xmax) xmax = dx;\n }\n });\n var _ols = ols(X, Y, XY, X2),\n _ols2 = _slicedToArray(_ols, 2),\n intercept = _ols2[0],\n slope = _ols2[1],\n fn = function fn(x) {\n return slope * Math.log(x) / lb + intercept;\n },\n out = interpose(xmin, xmax, fn);\n out.a = slope;\n out.b = intercept;\n out.predict = fn;\n out.rSquared = determination(data, x, y, Y, fn);\n return out;\n }\n logarithmic.domain = function (arr) {\n return arguments.length ? (domain = arr, logarithmic) : domain;\n };\n logarithmic.x = function (fn) {\n return arguments.length ? (x = fn, logarithmic) : x;\n };\n logarithmic.y = function (fn) {\n return arguments.length ? (y = fn, logarithmic) : y;\n };\n logarithmic.base = function (n) {\n return arguments.length ? (base = n, logarithmic) : base;\n };\n return logarithmic;\n }\n function quad() {\n var x = function x(d) {\n return d[0];\n },\n y = function y(d) {\n return d[1];\n },\n domain;\n function quadratic(data) {\n var _points = points(data, x, y),\n _points2 = _slicedToArray(_points, 4),\n xv = _points2[0],\n yv = _points2[1],\n ux = _points2[2],\n uy = _points2[3],\n n = xv.length;\n var X2 = 0,\n X3 = 0,\n X4 = 0,\n XY = 0,\n X2Y = 0,\n i,\n dx,\n dy,\n x2;\n for (i = 0; i < n;) {\n dx = xv[i];\n dy = yv[i++];\n x2 = dx * dx;\n X2 += (x2 - X2) / i;\n X3 += (x2 * dx - X3) / i;\n X4 += (x2 * x2 - X4) / i;\n XY += (dx * dy - XY) / i;\n X2Y += (x2 * dy - X2Y) / i;\n }\n var Y = 0,\n n0 = 0,\n xmin = domain ? +domain[0] : Infinity,\n xmax = domain ? +domain[1] : -Infinity;\n visitPoints(data, x, y, function (dx, dy) {\n n0++;\n Y += (dy - Y) / n0;\n if (!domain) {\n if (dx < xmin) xmin = dx;\n if (dx > xmax) xmax = dx;\n }\n });\n var X2X2 = X4 - X2 * X2,\n d = X2 * X2X2 - X3 * X3,\n a = (X2Y * X2 - XY * X3) / d,\n b = (XY * X2X2 - X2Y * X3) / d,\n c = -a * X2,\n fn = function fn(x) {\n x = x - ux;\n return a * x * x + b * x + c + uy;\n };\n var out = interpose(xmin, xmax, fn);\n out.a = a;\n out.b = b - 2 * a * ux;\n out.c = c - b * ux + a * ux * ux + uy;\n out.predict = fn;\n out.rSquared = determination(data, x, y, Y, fn);\n return out;\n }\n quadratic.domain = function (arr) {\n return arguments.length ? (domain = arr, quadratic) : domain;\n };\n quadratic.x = function (fn) {\n return arguments.length ? (x = fn, quadratic) : x;\n };\n quadratic.y = function (fn) {\n return arguments.length ? (y = fn, quadratic) : y;\n };\n return quadratic;\n }\n\n // Source: https://github.com/Tom-Alexander/regression-js/blob/master/src/regression.js#L246\n // License: https://github.com/Tom-Alexander/regression-js/blob/master/LICENSE\n // ...with ideas from vega-statistics by Jeffrey Heer\n // Source: https://github.com/vega/vega/blob/f21cb8792b4e0cbe2b1a3fd44b0f5db370dbaadb/packages/vega-statistics/src/regression/poly.js\n // License: https://github.com/vega/vega/blob/f058b099decad9db78301405dd0d2e9d8ba3d51a/LICENSE\n\n function polynomial() {\n var x = function x(d) {\n return d[0];\n },\n y = function y(d) {\n return d[1];\n },\n order = 3,\n domain;\n function polynomial(data) {\n // Use more efficient methods for lower orders\n if (order === 1) {\n var o = linear().x(x).y(y).domain(domain)(data);\n o.coefficients = [o.b, o.a];\n delete o.a;\n delete o.b;\n return o;\n }\n if (order === 2) {\n var _o = quad().x(x).y(y).domain(domain)(data);\n _o.coefficients = [_o.c, _o.b, _o.a];\n delete _o.a;\n delete _o.b;\n delete _o.c;\n return _o;\n }\n var _points = points(data, x, y),\n _points2 = _slicedToArray(_points, 4),\n xv = _points2[0],\n yv = _points2[1],\n ux = _points2[2],\n uy = _points2[3],\n n = xv.length,\n lhs = [],\n rhs = [],\n k = order + 1;\n var Y = 0,\n n0 = 0,\n xmin = domain ? +domain[0] : Infinity,\n xmax = domain ? +domain[1] : -Infinity;\n visitPoints(data, x, y, function (dx, dy) {\n ++n0;\n Y += (dy - Y) / n0;\n if (!domain) {\n if (dx < xmin) xmin = dx;\n if (dx > xmax) xmax = dx;\n }\n });\n var i, j, l, v, c;\n for (i = 0; i < k; ++i) {\n for (l = 0, v = 0; l < n; ++l) {\n v += Math.pow(xv[l], i) * yv[l];\n }\n lhs.push(v);\n c = new Float64Array(k);\n for (j = 0; j < k; ++j) {\n for (l = 0, v = 0; l < n; ++l) {\n v += Math.pow(xv[l], i + j);\n }\n c[j] = v;\n }\n rhs.push(c);\n }\n rhs.push(lhs);\n var coef = gaussianElimination(rhs),\n fn = function fn(x) {\n x -= ux;\n var y = uy + coef[0] + coef[1] * x + coef[2] * x * x;\n for (i = 3; i < k; ++i) {\n y += coef[i] * Math.pow(x, i);\n }\n return y;\n },\n out = interpose(xmin, xmax, fn);\n out.coefficients = uncenter(k, coef, -ux, uy);\n out.predict = fn;\n out.rSquared = determination(data, x, y, Y, fn);\n return out;\n }\n polynomial.domain = function (arr) {\n return arguments.length ? (domain = arr, polynomial) : domain;\n };\n polynomial.x = function (fn) {\n return arguments.length ? (x = fn, polynomial) : x;\n };\n polynomial.y = function (fn) {\n return arguments.length ? (y = fn, polynomial) : y;\n };\n polynomial.order = function (n) {\n return arguments.length ? (order = n, polynomial) : order;\n };\n return polynomial;\n }\n function uncenter(k, a, x, y) {\n var z = Array(k);\n var i, j, v, c; // initialize to zero\n\n for (i = 0; i < k; ++i) {\n z[i] = 0;\n } // polynomial expansion\n\n for (i = k - 1; i >= 0; --i) {\n v = a[i];\n c = 1;\n z[i] += v;\n for (j = 1; j <= i; ++j) {\n c *= (i + 1 - j) / j; // binomial coefficent\n\n z[i - j] += v * Math.pow(x, j) * c;\n }\n } // bias term\n\n z[0] += y;\n return z;\n } // Given an array for a two-dimensional matrix and the polynomial order,\n // solve A * x = b using Gaussian elimination.\n\n function gaussianElimination(matrix) {\n var n = matrix.length - 1,\n coef = [];\n var i, j, k, r, t;\n for (i = 0; i < n; ++i) {\n r = i; // max row\n\n for (j = i + 1; j < n; ++j) {\n if (Math.abs(matrix[i][j]) > Math.abs(matrix[i][r])) {\n r = j;\n }\n }\n for (k = i; k < n + 1; ++k) {\n t = matrix[k][i];\n matrix[k][i] = matrix[k][r];\n matrix[k][r] = t;\n }\n for (j = i + 1; j < n; ++j) {\n for (k = n; k >= i; k--) {\n matrix[k][j] -= matrix[k][i] * matrix[i][j] / matrix[i][i];\n }\n }\n }\n for (j = n - 1; j >= 0; --j) {\n t = 0;\n for (k = j + 1; k < n; ++k) {\n t += matrix[k][j] * coef[k];\n }\n coef[j] = (matrix[n][j] - t) / matrix[j][j];\n }\n return coef;\n }\n function power() {\n var x = function x(d) {\n return d[0];\n },\n y = function y(d) {\n return d[1];\n },\n domain;\n function power(data) {\n var n = 0,\n X = 0,\n Y = 0,\n XY = 0,\n X2 = 0,\n YS = 0,\n xmin = domain ? +domain[0] : Infinity,\n xmax = domain ? +domain[1] : -Infinity;\n visitPoints(data, x, y, function (dx, dy) {\n var lx = Math.log(dx),\n ly = Math.log(dy);\n ++n;\n X += (lx - X) / n;\n Y += (ly - Y) / n;\n XY += (lx * ly - XY) / n;\n X2 += (lx * lx - X2) / n;\n YS += (dy - YS) / n;\n if (!domain) {\n if (dx < xmin) xmin = dx;\n if (dx > xmax) xmax = dx;\n }\n });\n var _ols = ols(X, Y, XY, X2),\n _ols2 = _slicedToArray(_ols, 2),\n a = _ols2[0],\n b = _ols2[1];\n a = Math.exp(a);\n var fn = function fn(x) {\n return a * Math.pow(x, b);\n },\n out = interpose(xmin, xmax, fn);\n out.a = a;\n out.b = b;\n out.predict = fn;\n out.rSquared = determination(data, x, y, YS, fn);\n return out;\n }\n power.domain = function (arr) {\n return arguments.length ? (domain = arr, power) : domain;\n };\n power.x = function (fn) {\n return arguments.length ? (x = fn, power) : x;\n };\n power.y = function (fn) {\n return arguments.length ? (y = fn, power) : y;\n };\n return power;\n }\n exports.regressionExp = exponential;\n exports.regressionLinear = linear;\n exports.regressionLoess = loess;\n exports.regressionLog = logarithmic;\n exports.regressionPoly = polynomial;\n exports.regressionPow = power;\n exports.regressionQuad = quad;\n Object.defineProperty(exports, '__esModule', {\n value: true\n });\n});","var __spreadArray = this && this.__spreadArray || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar BrowserInfo = /** @class */function () {\n function BrowserInfo(name, version, os) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.type = 'browser';\n }\n return BrowserInfo;\n}();\nexport { BrowserInfo };\nvar NodeInfo = /** @class */function () {\n function NodeInfo(version) {\n this.version = version;\n this.type = 'node';\n this.name = 'node';\n this.os = process.platform;\n }\n return NodeInfo;\n}();\nexport { NodeInfo };\nvar SearchBotDeviceInfo = /** @class */function () {\n function SearchBotDeviceInfo(name, version, os, bot) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.bot = bot;\n this.type = 'bot-device';\n }\n return SearchBotDeviceInfo;\n}();\nexport { SearchBotDeviceInfo };\nvar BotInfo = /** @class */function () {\n function BotInfo() {\n this.type = 'bot';\n this.bot = true; // NOTE: deprecated test name instead\n this.name = 'bot';\n this.version = null;\n this.os = null;\n }\n return BotInfo;\n}();\nexport { BotInfo };\nvar ReactNativeInfo = /** @class */function () {\n function ReactNativeInfo() {\n this.type = 'react-native';\n this.name = 'react-native';\n this.version = null;\n this.os = null;\n }\n return ReactNativeInfo;\n}();\nexport { ReactNativeInfo };\n// tslint:disable-next-line:max-line-length\nvar SEARCHBOX_UA_REGEX = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/;\nvar SEARCHBOT_OS_REGEX = /(nuhk|curl|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\\ Jeeves\\/Teoma|ia_archiver)/;\nvar REQUIRED_VERSION_PARTS = 3;\nvar userAgentRules = [['aol', /AOLShield\\/([0-9\\._]+)/], ['edge', /Edge\\/([0-9\\._]+)/], ['edge-ios', /EdgiOS\\/([0-9\\._]+)/], ['yandexbrowser', /YaBrowser\\/([0-9\\._]+)/], ['kakaotalk', /KAKAOTALK\\s([0-9\\.]+)/], ['samsung', /SamsungBrowser\\/([0-9\\.]+)/], ['silk', /\\bSilk\\/([0-9._-]+)\\b/], ['miui', /MiuiBrowser\\/([0-9\\.]+)$/], ['beaker', /BeakerBrowser\\/([0-9\\.]+)/], ['edge-chromium', /EdgA?\\/([0-9\\.]+)/], ['chromium-webview', /(?!Chrom.*OPR)wv\\).*Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/], ['chrome', /(?!Chrom.*OPR)Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/], ['phantomjs', /PhantomJS\\/([0-9\\.]+)(:?\\s|$)/], ['crios', /CriOS\\/([0-9\\.]+)(:?\\s|$)/], ['firefox', /Firefox\\/([0-9\\.]+)(?:\\s|$)/], ['fxios', /FxiOS\\/([0-9\\.]+)/], ['opera-mini', /Opera Mini.*Version\\/([0-9\\.]+)/], ['opera', /Opera\\/([0-9\\.]+)(?:\\s|$)/], ['opera', /OPR\\/([0-9\\.]+)(:?\\s|$)/], ['pie', /^Microsoft Pocket Internet Explorer\\/(\\d+\\.\\d+)$/], ['pie', /^Mozilla\\/\\d\\.\\d+\\s\\(compatible;\\s(?:MSP?IE|MSInternet Explorer) (\\d+\\.\\d+);.*Windows CE.*\\)$/], ['netfront', /^Mozilla\\/\\d\\.\\d+.*NetFront\\/(\\d.\\d)/], ['ie', /Trident\\/7\\.0.*rv\\:([0-9\\.]+).*\\).*Gecko$/], ['ie', /MSIE\\s([0-9\\.]+);.*Trident\\/[4-7].0/], ['ie', /MSIE\\s(7\\.0)/], ['bb10', /BB10;\\sTouch.*Version\\/([0-9\\.]+)/], ['android', /Android\\s([0-9\\.]+)/], ['ios', /Version\\/([0-9\\._]+).*Mobile.*Safari.*/], ['safari', /Version\\/([0-9\\._]+).*Safari/], ['facebook', /FB[AS]V\\/([0-9\\.]+)/], ['instagram', /Instagram\\s([0-9\\.]+)/], ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Mobile/], ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Gecko\\)$/], ['curl', /^curl\\/([0-9\\.]+)$/], ['searchbot', SEARCHBOX_UA_REGEX]];\nvar operatingSystemRules = [['iOS', /iP(hone|od|ad)/], ['Android OS', /Android/], ['BlackBerry OS', /BlackBerry|BB10/], ['Windows Mobile', /IEMobile/], ['Amazon OS', /Kindle/], ['Windows 3.11', /Win16/], ['Windows 95', /(Windows 95)|(Win95)|(Windows_95)/], ['Windows 98', /(Windows 98)|(Win98)/], ['Windows 2000', /(Windows NT 5.0)|(Windows 2000)/], ['Windows XP', /(Windows NT 5.1)|(Windows XP)/], ['Windows Server 2003', /(Windows NT 5.2)/], ['Windows Vista', /(Windows NT 6.0)/], ['Windows 7', /(Windows NT 6.1)/], ['Windows 8', /(Windows NT 6.2)/], ['Windows 8.1', /(Windows NT 6.3)/], ['Windows 10', /(Windows NT 10.0)/], ['Windows ME', /Windows ME/], ['Windows CE', /Windows CE|WinCE|Microsoft Pocket Internet Explorer/], ['Open BSD', /OpenBSD/], ['Sun OS', /SunOS/], ['Chrome OS', /CrOS/], ['Linux', /(Linux)|(X11)/], ['Mac OS', /(Mac_PowerPC)|(Macintosh)/], ['QNX', /QNX/], ['BeOS', /BeOS/], ['OS/2', /OS\\/2/]];\nexport function detect(userAgent) {\n if (!!userAgent) {\n return parseUserAgent(userAgent);\n }\n if (typeof document === 'undefined' && typeof navigator !== 'undefined' && navigator.product === 'ReactNative') {\n return new ReactNativeInfo();\n }\n if (typeof navigator !== 'undefined') {\n return parseUserAgent(navigator.userAgent);\n }\n return getNodeVersion();\n}\nfunction matchUserAgent(ua) {\n // opted for using reduce here rather than Array#first with a regex.test call\n // this is primarily because using the reduce we only perform the regex\n // execution once rather than once for the test and for the exec again below\n // probably something that needs to be benchmarked though\n return ua !== '' && userAgentRules.reduce(function (matched, _a) {\n var browser = _a[0],\n regex = _a[1];\n if (matched) {\n return matched;\n }\n var uaMatch = regex.exec(ua);\n return !!uaMatch && [browser, uaMatch];\n }, false);\n}\nexport function browserName(ua) {\n var data = matchUserAgent(ua);\n return data ? data[0] : null;\n}\nexport function parseUserAgent(ua) {\n var matchedRule = matchUserAgent(ua);\n if (!matchedRule) {\n return null;\n }\n var name = matchedRule[0],\n match = matchedRule[1];\n if (name === 'searchbot') {\n return new BotInfo();\n }\n // Do not use RegExp for split operation as some browser do not support it (See: http://blog.stevenlevithan.com/archives/cross-browser-split)\n var versionParts = match[1] && match[1].split('.').join('_').split('_').slice(0, 3);\n if (versionParts) {\n if (versionParts.length < REQUIRED_VERSION_PARTS) {\n versionParts = __spreadArray(__spreadArray([], versionParts, true), createVersionParts(REQUIRED_VERSION_PARTS - versionParts.length), true);\n }\n } else {\n versionParts = [];\n }\n var version = versionParts.join('.');\n var os = detectOS(ua);\n var searchBotMatch = SEARCHBOT_OS_REGEX.exec(ua);\n if (searchBotMatch && searchBotMatch[1]) {\n return new SearchBotDeviceInfo(name, version, os, searchBotMatch[1]);\n }\n return new BrowserInfo(name, version, os);\n}\nexport function detectOS(ua) {\n for (var ii = 0, count = operatingSystemRules.length; ii < count; ii++) {\n var _a = operatingSystemRules[ii],\n os = _a[0],\n regex = _a[1];\n var match = regex.exec(ua);\n if (match) {\n return os;\n }\n }\n return null;\n}\nexport function getNodeVersion() {\n var isNode = typeof process !== 'undefined' && process.version;\n return isNode ? new NodeInfo(process.version.slice(1)) : null;\n}\nfunction createVersionParts(count) {\n var output = [];\n for (var ii = 0; ii < count; ii++) {\n output.push('0');\n }\n return output;\n}","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;) if (!equal(a[i], b[i])) return false;\n return true;\n }\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n for (i = length; i-- !== 0;) if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n if (!equal(a[key], b[key])) return false;\n }\n return true;\n }\n\n // true if both NaN, false otherwise\n return a !== a && b !== b;\n};","'use strict';\n\nmodule.exports = function (data, opts) {\n if (!opts) opts = {};\n if (typeof opts === 'function') opts = {\n cmp: opts\n };\n var cycles = typeof opts.cycles === 'boolean' ? opts.cycles : false;\n var cmp = opts.cmp && function (f) {\n return function (node) {\n return function (a, b) {\n var aobj = {\n key: a,\n value: node[a]\n };\n var bobj = {\n key: b,\n value: node[b]\n };\n return f(aobj, bobj);\n };\n };\n }(opts.cmp);\n var seen = [];\n return function stringify(node) {\n if (node && node.toJSON && typeof node.toJSON === 'function') {\n node = node.toJSON();\n }\n if (node === undefined) return;\n if (typeof node == 'number') return isFinite(node) ? '' + node : 'null';\n if (typeof node !== 'object') return JSON.stringify(node);\n var i, out;\n if (Array.isArray(node)) {\n out = '[';\n for (i = 0; i < node.length; i++) {\n if (i) out += ',';\n out += stringify(node[i]) || 'null';\n }\n return out + ']';\n }\n if (node === null) return 'null';\n if (seen.indexOf(node) !== -1) {\n if (cycles) return JSON.stringify('__cycle__');\n throw new TypeError('Converting circular structure to JSON');\n }\n var seenIndex = seen.push(node) - 1;\n var keys = Object.keys(node).sort(cmp && cmp(node));\n out = '';\n for (i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = stringify(node[key]);\n if (!value) continue;\n if (out) out += ',';\n out += JSON.stringify(key) + ':' + value;\n }\n seen.splice(seenIndex, 1);\n return '{' + out + '}';\n }(data);\n};","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : factory(global.fmin = global.fmin || {});\n})(this, function (exports) {\n 'use strict';\n\n /** finds the zeros of a function, given two starting points (which must\n * have opposite signs */\n function bisect(f, a, b, parameters) {\n parameters = parameters || {};\n var maxIterations = parameters.maxIterations || 100,\n tolerance = parameters.tolerance || 1e-10,\n fA = f(a),\n fB = f(b),\n delta = b - a;\n if (fA * fB > 0) {\n throw \"Initial bisect points must have opposite signs\";\n }\n if (fA === 0) return a;\n if (fB === 0) return b;\n for (var i = 0; i < maxIterations; ++i) {\n delta /= 2;\n var mid = a + delta,\n fMid = f(mid);\n if (fMid * fA >= 0) {\n a = mid;\n }\n if (Math.abs(delta) < tolerance || fMid === 0) {\n return mid;\n }\n }\n return a + delta;\n }\n\n // need some basic operations on vectors, rather than adding a dependency,\n // just define here\n function zeros(x) {\n var r = new Array(x);\n for (var i = 0; i < x; ++i) {\n r[i] = 0;\n }\n return r;\n }\n function zerosM(x, y) {\n return zeros(x).map(function () {\n return zeros(y);\n });\n }\n function dot(a, b) {\n var ret = 0;\n for (var i = 0; i < a.length; ++i) {\n ret += a[i] * b[i];\n }\n return ret;\n }\n function norm2(a) {\n return Math.sqrt(dot(a, a));\n }\n function scale(ret, value, c) {\n for (var i = 0; i < value.length; ++i) {\n ret[i] = value[i] * c;\n }\n }\n function weightedSum(ret, w1, v1, w2, v2) {\n for (var j = 0; j < ret.length; ++j) {\n ret[j] = w1 * v1[j] + w2 * v2[j];\n }\n }\n\n /** minimizes a function using the downhill simplex method */\n function nelderMead(f, x0, parameters) {\n parameters = parameters || {};\n var maxIterations = parameters.maxIterations || x0.length * 200,\n nonZeroDelta = parameters.nonZeroDelta || 1.05,\n zeroDelta = parameters.zeroDelta || 0.001,\n minErrorDelta = parameters.minErrorDelta || 1e-6,\n minTolerance = parameters.minErrorDelta || 1e-5,\n rho = parameters.rho !== undefined ? parameters.rho : 1,\n chi = parameters.chi !== undefined ? parameters.chi : 2,\n psi = parameters.psi !== undefined ? parameters.psi : -0.5,\n sigma = parameters.sigma !== undefined ? parameters.sigma : 0.5,\n maxDiff;\n\n // initialize simplex.\n var N = x0.length,\n simplex = new Array(N + 1);\n simplex[0] = x0;\n simplex[0].fx = f(x0);\n simplex[0].id = 0;\n for (var i = 0; i < N; ++i) {\n var point = x0.slice();\n point[i] = point[i] ? point[i] * nonZeroDelta : zeroDelta;\n simplex[i + 1] = point;\n simplex[i + 1].fx = f(point);\n simplex[i + 1].id = i + 1;\n }\n function updateSimplex(value) {\n for (var i = 0; i < value.length; i++) {\n simplex[N][i] = value[i];\n }\n simplex[N].fx = value.fx;\n }\n var sortOrder = function sortOrder(a, b) {\n return a.fx - b.fx;\n };\n var centroid = x0.slice(),\n reflected = x0.slice(),\n contracted = x0.slice(),\n expanded = x0.slice();\n for (var iteration = 0; iteration < maxIterations; ++iteration) {\n simplex.sort(sortOrder);\n if (parameters.history) {\n // copy the simplex (since later iterations will mutate) and\n // sort it to have a consistent order between iterations\n var sortedSimplex = simplex.map(function (x) {\n var state = x.slice();\n state.fx = x.fx;\n state.id = x.id;\n return state;\n });\n sortedSimplex.sort(function (a, b) {\n return a.id - b.id;\n });\n parameters.history.push({\n x: simplex[0].slice(),\n fx: simplex[0].fx,\n simplex: sortedSimplex\n });\n }\n maxDiff = 0;\n for (i = 0; i < N; ++i) {\n maxDiff = Math.max(maxDiff, Math.abs(simplex[0][i] - simplex[1][i]));\n }\n if (Math.abs(simplex[0].fx - simplex[N].fx) < minErrorDelta && maxDiff < minTolerance) {\n break;\n }\n\n // compute the centroid of all but the worst point in the simplex\n for (i = 0; i < N; ++i) {\n centroid[i] = 0;\n for (var j = 0; j < N; ++j) {\n centroid[i] += simplex[j][i];\n }\n centroid[i] /= N;\n }\n\n // reflect the worst point past the centroid and compute loss at reflected\n // point\n var worst = simplex[N];\n weightedSum(reflected, 1 + rho, centroid, -rho, worst);\n reflected.fx = f(reflected);\n\n // if the reflected point is the best seen, then possibly expand\n if (reflected.fx < simplex[0].fx) {\n weightedSum(expanded, 1 + chi, centroid, -chi, worst);\n expanded.fx = f(expanded);\n if (expanded.fx < reflected.fx) {\n updateSimplex(expanded);\n } else {\n updateSimplex(reflected);\n }\n }\n\n // if the reflected point is worse than the second worst, we need to\n // contract\n else if (reflected.fx >= simplex[N - 1].fx) {\n var shouldReduce = false;\n if (reflected.fx > worst.fx) {\n // do an inside contraction\n weightedSum(contracted, 1 + psi, centroid, -psi, worst);\n contracted.fx = f(contracted);\n if (contracted.fx < worst.fx) {\n updateSimplex(contracted);\n } else {\n shouldReduce = true;\n }\n } else {\n // do an outside contraction\n weightedSum(contracted, 1 - psi * rho, centroid, psi * rho, worst);\n contracted.fx = f(contracted);\n if (contracted.fx < reflected.fx) {\n updateSimplex(contracted);\n } else {\n shouldReduce = true;\n }\n }\n if (shouldReduce) {\n // if we don't contract here, we're done\n if (sigma >= 1) break;\n\n // do a reduction\n for (i = 1; i < simplex.length; ++i) {\n weightedSum(simplex[i], 1 - sigma, simplex[0], sigma, simplex[i]);\n simplex[i].fx = f(simplex[i]);\n }\n }\n } else {\n updateSimplex(reflected);\n }\n }\n simplex.sort(sortOrder);\n return {\n fx: simplex[0].fx,\n x: simplex[0]\n };\n }\n\n /// searches along line 'pk' for a point that satifies the wolfe conditions\n /// See 'Numerical Optimization' by Nocedal and Wright p59-60\n /// f : objective function\n /// pk : search direction\n /// current: object containing current gradient/loss\n /// next: output: contains next gradient/loss\n /// returns a: step size taken\n function wolfeLineSearch(f, pk, current, next, a, c1, c2) {\n var phi0 = current.fx,\n phiPrime0 = dot(current.fxprime, pk),\n phi = phi0,\n phi_old = phi0,\n phiPrime = phiPrime0,\n a0 = 0;\n a = a || 1;\n c1 = c1 || 1e-6;\n c2 = c2 || 0.1;\n function zoom(a_lo, a_high, phi_lo) {\n for (var iteration = 0; iteration < 16; ++iteration) {\n a = (a_lo + a_high) / 2;\n weightedSum(next.x, 1.0, current.x, a, pk);\n phi = next.fx = f(next.x, next.fxprime);\n phiPrime = dot(next.fxprime, pk);\n if (phi > phi0 + c1 * a * phiPrime0 || phi >= phi_lo) {\n a_high = a;\n } else {\n if (Math.abs(phiPrime) <= -c2 * phiPrime0) {\n return a;\n }\n if (phiPrime * (a_high - a_lo) >= 0) {\n a_high = a_lo;\n }\n a_lo = a;\n phi_lo = phi;\n }\n }\n return 0;\n }\n for (var iteration = 0; iteration < 10; ++iteration) {\n weightedSum(next.x, 1.0, current.x, a, pk);\n phi = next.fx = f(next.x, next.fxprime);\n phiPrime = dot(next.fxprime, pk);\n if (phi > phi0 + c1 * a * phiPrime0 || iteration && phi >= phi_old) {\n return zoom(a0, a, phi_old);\n }\n if (Math.abs(phiPrime) <= -c2 * phiPrime0) {\n return a;\n }\n if (phiPrime >= 0) {\n return zoom(a, a0, phi);\n }\n phi_old = phi;\n a0 = a;\n a *= 2;\n }\n return a;\n }\n function conjugateGradient(f, initial, params) {\n // allocate all memory up front here, keep out of the loop for perfomance\n // reasons\n var current = {\n x: initial.slice(),\n fx: 0,\n fxprime: initial.slice()\n },\n next = {\n x: initial.slice(),\n fx: 0,\n fxprime: initial.slice()\n },\n yk = initial.slice(),\n pk,\n temp,\n a = 1,\n maxIterations;\n params = params || {};\n maxIterations = params.maxIterations || initial.length * 20;\n current.fx = f(current.x, current.fxprime);\n pk = current.fxprime.slice();\n scale(pk, current.fxprime, -1);\n for (var i = 0; i < maxIterations; ++i) {\n a = wolfeLineSearch(f, pk, current, next, a);\n\n // todo: history in wrong spot?\n if (params.history) {\n params.history.push({\n x: current.x.slice(),\n fx: current.fx,\n fxprime: current.fxprime.slice(),\n alpha: a\n });\n }\n if (!a) {\n // faiiled to find point that satifies wolfe conditions.\n // reset direction for next iteration\n scale(pk, current.fxprime, -1);\n } else {\n // update direction using Polak–Ribiere CG method\n weightedSum(yk, 1, next.fxprime, -1, current.fxprime);\n var delta_k = dot(current.fxprime, current.fxprime),\n beta_k = Math.max(0, dot(yk, next.fxprime) / delta_k);\n weightedSum(pk, beta_k, pk, -1, next.fxprime);\n temp = current;\n current = next;\n next = temp;\n }\n if (norm2(current.fxprime) <= 1e-5) {\n break;\n }\n }\n if (params.history) {\n params.history.push({\n x: current.x.slice(),\n fx: current.fx,\n fxprime: current.fxprime.slice(),\n alpha: a\n });\n }\n return current;\n }\n function gradientDescent(f, initial, params) {\n params = params || {};\n var maxIterations = params.maxIterations || initial.length * 100,\n learnRate = params.learnRate || 0.001,\n current = {\n x: initial.slice(),\n fx: 0,\n fxprime: initial.slice()\n };\n for (var i = 0; i < maxIterations; ++i) {\n current.fx = f(current.x, current.fxprime);\n if (params.history) {\n params.history.push({\n x: current.x.slice(),\n fx: current.fx,\n fxprime: current.fxprime.slice()\n });\n }\n weightedSum(current.x, 1, current.x, -learnRate, current.fxprime);\n if (norm2(current.fxprime) <= 1e-5) {\n break;\n }\n }\n return current;\n }\n function gradientDescentLineSearch(f, initial, params) {\n params = params || {};\n var current = {\n x: initial.slice(),\n fx: 0,\n fxprime: initial.slice()\n },\n next = {\n x: initial.slice(),\n fx: 0,\n fxprime: initial.slice()\n },\n maxIterations = params.maxIterations || initial.length * 100,\n learnRate = params.learnRate || 1,\n pk = initial.slice(),\n c1 = params.c1 || 1e-3,\n c2 = params.c2 || 0.1,\n temp,\n functionCalls = [];\n if (params.history) {\n // wrap the function call to track linesearch samples\n var inner = f;\n f = function f(x, fxprime) {\n functionCalls.push(x.slice());\n return inner(x, fxprime);\n };\n }\n current.fx = f(current.x, current.fxprime);\n for (var i = 0; i < maxIterations; ++i) {\n scale(pk, current.fxprime, -1);\n learnRate = wolfeLineSearch(f, pk, current, next, learnRate, c1, c2);\n if (params.history) {\n params.history.push({\n x: current.x.slice(),\n fx: current.fx,\n fxprime: current.fxprime.slice(),\n functionCalls: functionCalls,\n learnRate: learnRate,\n alpha: learnRate\n });\n functionCalls = [];\n }\n temp = current;\n current = next;\n next = temp;\n if (learnRate === 0 || norm2(current.fxprime) < 1e-5) break;\n }\n return current;\n }\n exports.bisect = bisect;\n exports.nelderMead = nelderMead;\n exports.conjugateGradient = conjugateGradient;\n exports.gradientDescent = gradientDescent;\n exports.gradientDescentLineSearch = gradientDescentLineSearch;\n exports.zeros = zeros;\n exports.zerosM = zerosM;\n exports.norm2 = norm2;\n exports.weightedSum = weightedSum;\n exports.scale = scale;\n});","import \"core-js/modules/es.math.hypot.js\";\n/**\n * Common utilities\n * @module glMatrix\n */\n// Configuration Constants\nexport var EPSILON = 0.000001;\nexport var ARRAY_TYPE = typeof Float32Array !== 'undefined' ? Float32Array : Array;\nexport var RANDOM = Math.random;\n/**\n * Sets the type of array used when creating new vectors and matrices\n *\n * @param {Float32ArrayConstructor | ArrayConstructor} type Array type, such as Float32Array or Array\n */\n\nexport function setMatrixArrayType(type) {\n ARRAY_TYPE = type;\n}\nvar degree = Math.PI / 180;\n/**\n * Convert Degree To Radian\n *\n * @param {Number} a Angle in Degrees\n */\n\nexport function toRadian(a) {\n return a * degree;\n}\n/**\n * Tests whether or not the arguments have approximately the same value, within an absolute\n * or relative tolerance of glMatrix.EPSILON (an absolute tolerance is used for values less\n * than or equal to 1.0, and a relative tolerance is used for larger values)\n *\n * @param {Number} a The first number to test.\n * @param {Number} b The second number to test.\n * @returns {Boolean} True if the numbers are approximately equal, false otherwise.\n */\n\nexport function equals(a, b) {\n return Math.abs(a - b) <= EPSILON * Math.max(1.0, Math.abs(a), Math.abs(b));\n}\nif (!Math.hypot) Math.hypot = function () {\n var y = 0,\n i = arguments.length;\n while (i--) {\n y += arguments[i] * arguments[i];\n }\n return Math.sqrt(y);\n};","import \"core-js/modules/es.math.hypot.js\";\nimport * as glMatrix from \"./common.js\";\n/**\n * 3x3 Matrix\n * @module mat3\n */\n\n/**\n * Creates a new identity mat3\n *\n * @returns {mat3} a new 3x3 matrix\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(9);\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n }\n out[0] = 1;\n out[4] = 1;\n out[8] = 1;\n return out;\n}\n/**\n * Copies the upper-left 3x3 values into the given mat3.\n *\n * @param {mat3} out the receiving 3x3 matrix\n * @param {ReadonlyMat4} a the source 4x4 matrix\n * @returns {mat3} out\n */\n\nexport function fromMat4(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[4];\n out[4] = a[5];\n out[5] = a[6];\n out[6] = a[8];\n out[7] = a[9];\n out[8] = a[10];\n return out;\n}\n/**\n * Creates a new mat3 initialized with values from an existing matrix\n *\n * @param {ReadonlyMat3} a matrix to clone\n * @returns {mat3} a new 3x3 matrix\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(9);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n/**\n * Copy the values from one mat3 to another\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n/**\n * Create a new mat3 with the given values\n *\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m10 Component in column 1, row 0 position (index 3)\n * @param {Number} m11 Component in column 1, row 1 position (index 4)\n * @param {Number} m12 Component in column 1, row 2 position (index 5)\n * @param {Number} m20 Component in column 2, row 0 position (index 6)\n * @param {Number} m21 Component in column 2, row 1 position (index 7)\n * @param {Number} m22 Component in column 2, row 2 position (index 8)\n * @returns {mat3} A new mat3\n */\n\nexport function fromValues(m00, m01, m02, m10, m11, m12, m20, m21, m22) {\n var out = new glMatrix.ARRAY_TYPE(9);\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m10;\n out[4] = m11;\n out[5] = m12;\n out[6] = m20;\n out[7] = m21;\n out[8] = m22;\n return out;\n}\n/**\n * Set the components of a mat3 to the given values\n *\n * @param {mat3} out the receiving matrix\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m10 Component in column 1, row 0 position (index 3)\n * @param {Number} m11 Component in column 1, row 1 position (index 4)\n * @param {Number} m12 Component in column 1, row 2 position (index 5)\n * @param {Number} m20 Component in column 2, row 0 position (index 6)\n * @param {Number} m21 Component in column 2, row 1 position (index 7)\n * @param {Number} m22 Component in column 2, row 2 position (index 8)\n * @returns {mat3} out\n */\n\nexport function set(out, m00, m01, m02, m10, m11, m12, m20, m21, m22) {\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m10;\n out[4] = m11;\n out[5] = m12;\n out[6] = m20;\n out[7] = m21;\n out[8] = m22;\n return out;\n}\n/**\n * Set a mat3 to the identity matrix\n *\n * @param {mat3} out the receiving matrix\n * @returns {mat3} out\n */\n\nexport function identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 1;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n/**\n * Transpose the values of a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function transpose(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n if (out === a) {\n var a01 = a[1],\n a02 = a[2],\n a12 = a[5];\n out[1] = a[3];\n out[2] = a[6];\n out[3] = a01;\n out[5] = a[7];\n out[6] = a02;\n out[7] = a12;\n } else {\n out[0] = a[0];\n out[1] = a[3];\n out[2] = a[6];\n out[3] = a[1];\n out[4] = a[4];\n out[5] = a[7];\n out[6] = a[2];\n out[7] = a[5];\n out[8] = a[8];\n }\n return out;\n}\n/**\n * Inverts a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function invert(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n var b01 = a22 * a11 - a12 * a21;\n var b11 = -a22 * a10 + a12 * a20;\n var b21 = a21 * a10 - a11 * a20; // Calculate the determinant\n\n var det = a00 * b01 + a01 * b11 + a02 * b21;\n if (!det) {\n return null;\n }\n det = 1.0 / det;\n out[0] = b01 * det;\n out[1] = (-a22 * a01 + a02 * a21) * det;\n out[2] = (a12 * a01 - a02 * a11) * det;\n out[3] = b11 * det;\n out[4] = (a22 * a00 - a02 * a20) * det;\n out[5] = (-a12 * a00 + a02 * a10) * det;\n out[6] = b21 * det;\n out[7] = (-a21 * a00 + a01 * a20) * det;\n out[8] = (a11 * a00 - a01 * a10) * det;\n return out;\n}\n/**\n * Calculates the adjugate of a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function adjoint(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n out[0] = a11 * a22 - a12 * a21;\n out[1] = a02 * a21 - a01 * a22;\n out[2] = a01 * a12 - a02 * a11;\n out[3] = a12 * a20 - a10 * a22;\n out[4] = a00 * a22 - a02 * a20;\n out[5] = a02 * a10 - a00 * a12;\n out[6] = a10 * a21 - a11 * a20;\n out[7] = a01 * a20 - a00 * a21;\n out[8] = a00 * a11 - a01 * a10;\n return out;\n}\n/**\n * Calculates the determinant of a mat3\n *\n * @param {ReadonlyMat3} a the source matrix\n * @returns {Number} determinant of a\n */\n\nexport function determinant(a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n return a00 * (a22 * a11 - a12 * a21) + a01 * (-a22 * a10 + a12 * a20) + a02 * (a21 * a10 - a11 * a20);\n}\n/**\n * Multiplies two mat3's\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nexport function multiply(out, a, b) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n var b00 = b[0],\n b01 = b[1],\n b02 = b[2];\n var b10 = b[3],\n b11 = b[4],\n b12 = b[5];\n var b20 = b[6],\n b21 = b[7],\n b22 = b[8];\n out[0] = b00 * a00 + b01 * a10 + b02 * a20;\n out[1] = b00 * a01 + b01 * a11 + b02 * a21;\n out[2] = b00 * a02 + b01 * a12 + b02 * a22;\n out[3] = b10 * a00 + b11 * a10 + b12 * a20;\n out[4] = b10 * a01 + b11 * a11 + b12 * a21;\n out[5] = b10 * a02 + b11 * a12 + b12 * a22;\n out[6] = b20 * a00 + b21 * a10 + b22 * a20;\n out[7] = b20 * a01 + b21 * a11 + b22 * a21;\n out[8] = b20 * a02 + b21 * a12 + b22 * a22;\n return out;\n}\n/**\n * Translate a mat3 by the given vector\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to translate\n * @param {ReadonlyVec2} v vector to translate by\n * @returns {mat3} out\n */\n\nexport function translate(out, a, v) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a10 = a[3],\n a11 = a[4],\n a12 = a[5],\n a20 = a[6],\n a21 = a[7],\n a22 = a[8],\n x = v[0],\n y = v[1];\n out[0] = a00;\n out[1] = a01;\n out[2] = a02;\n out[3] = a10;\n out[4] = a11;\n out[5] = a12;\n out[6] = x * a00 + y * a10 + a20;\n out[7] = x * a01 + y * a11 + a21;\n out[8] = x * a02 + y * a12 + a22;\n return out;\n}\n/**\n * Rotates a mat3 by the given angle\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat3} out\n */\n\nexport function rotate(out, a, rad) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a10 = a[3],\n a11 = a[4],\n a12 = a[5],\n a20 = a[6],\n a21 = a[7],\n a22 = a[8],\n s = Math.sin(rad),\n c = Math.cos(rad);\n out[0] = c * a00 + s * a10;\n out[1] = c * a01 + s * a11;\n out[2] = c * a02 + s * a12;\n out[3] = c * a10 - s * a00;\n out[4] = c * a11 - s * a01;\n out[5] = c * a12 - s * a02;\n out[6] = a20;\n out[7] = a21;\n out[8] = a22;\n return out;\n}\n/**\n * Scales the mat3 by the dimensions in the given vec2\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to rotate\n * @param {ReadonlyVec2} v the vec2 to scale the matrix by\n * @returns {mat3} out\n **/\n\nexport function scale(out, a, v) {\n var x = v[0],\n y = v[1];\n out[0] = x * a[0];\n out[1] = x * a[1];\n out[2] = x * a[2];\n out[3] = y * a[3];\n out[4] = y * a[4];\n out[5] = y * a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n/**\n * Creates a matrix from a vector translation\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.translate(dest, dest, vec);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyVec2} v Translation vector\n * @returns {mat3} out\n */\n\nexport function fromTranslation(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 1;\n out[5] = 0;\n out[6] = v[0];\n out[7] = v[1];\n out[8] = 1;\n return out;\n}\n/**\n * Creates a matrix from a given angle\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.rotate(dest, dest, rad);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat3} out\n */\n\nexport function fromRotation(out, rad) {\n var s = Math.sin(rad),\n c = Math.cos(rad);\n out[0] = c;\n out[1] = s;\n out[2] = 0;\n out[3] = -s;\n out[4] = c;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.scale(dest, dest, vec);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyVec2} v Scaling vector\n * @returns {mat3} out\n */\n\nexport function fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = v[1];\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n/**\n * Copies the values from a mat2d into a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat2d} a the matrix to copy\n * @returns {mat3} out\n **/\n\nexport function fromMat2d(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = 0;\n out[3] = a[2];\n out[4] = a[3];\n out[5] = 0;\n out[6] = a[4];\n out[7] = a[5];\n out[8] = 1;\n return out;\n}\n/**\n * Calculates a 3x3 matrix from the given quaternion\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyQuat} q Quaternion to create matrix from\n *\n * @returns {mat3} out\n */\n\nexport function fromQuat(out, q) {\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var yx = y * x2;\n var yy = y * y2;\n var zx = z * x2;\n var zy = z * y2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - yy - zz;\n out[3] = yx - wz;\n out[6] = zx + wy;\n out[1] = yx + wz;\n out[4] = 1 - xx - zz;\n out[7] = zy - wx;\n out[2] = zx - wy;\n out[5] = zy + wx;\n out[8] = 1 - xx - yy;\n return out;\n}\n/**\n * Calculates a 3x3 normal matrix (transpose inverse) from the 4x4 matrix\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyMat4} a Mat4 to derive the normal matrix from\n *\n * @returns {mat3} out\n */\n\nexport function normalFromMat4(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n if (!det) {\n return null;\n }\n det = 1.0 / det;\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n out[1] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n out[2] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n out[3] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n out[4] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n out[5] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n out[6] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n out[7] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n out[8] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n return out;\n}\n/**\n * Generates a 2D projection matrix with the given bounds\n *\n * @param {mat3} out mat3 frustum matrix will be written into\n * @param {number} width Width of your gl context\n * @param {number} height Height of gl context\n * @returns {mat3} out\n */\n\nexport function projection(out, width, height) {\n out[0] = 2 / width;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = -2 / height;\n out[5] = 0;\n out[6] = -1;\n out[7] = 1;\n out[8] = 1;\n return out;\n}\n/**\n * Returns a string representation of a mat3\n *\n * @param {ReadonlyMat3} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\n\nexport function str(a) {\n return \"mat3(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \", \" + a[8] + \")\";\n}\n/**\n * Returns Frobenius norm of a mat3\n *\n * @param {ReadonlyMat3} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\n\nexport function frob(a) {\n return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8]);\n}\n/**\n * Adds two mat3's\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n out[6] = a[6] + b[6];\n out[7] = a[7] + b[7];\n out[8] = a[8] + b[8];\n return out;\n}\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n out[4] = a[4] - b[4];\n out[5] = a[5] - b[5];\n out[6] = a[6] - b[6];\n out[7] = a[7] - b[7];\n out[8] = a[8] - b[8];\n return out;\n}\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat3} out\n */\n\nexport function multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n out[6] = a[6] * b;\n out[7] = a[7] * b;\n out[8] = a[8] * b;\n return out;\n}\n/**\n * Adds two mat3's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat3} out the receiving vector\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat3} out\n */\n\nexport function multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n out[4] = a[4] + b[4] * scale;\n out[5] = a[5] + b[5] * scale;\n out[6] = a[6] + b[6] * scale;\n out[7] = a[7] + b[7] * scale;\n out[8] = a[8] + b[8] * scale;\n return out;\n}\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyMat3} a The first matrix.\n * @param {ReadonlyMat3} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8];\n}\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {ReadonlyMat3} a The first matrix.\n * @param {ReadonlyMat3} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3],\n a4 = a[4],\n a5 = a[5],\n a6 = a[6],\n a7 = a[7],\n a8 = a[8];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a8), Math.abs(b8));\n}\n/**\n * Alias for {@link mat3.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link mat3.subtract}\n * @function\n */\n\nexport var sub = subtract;","import \"core-js/modules/es.math.hypot.js\";\nimport * as glMatrix from \"./common.js\";\n/**\n * 2 Dimensional Vector\n * @module vec2\n */\n\n/**\n * Creates a new, empty vec2\n *\n * @returns {vec2} a new 2D vector\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(2);\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n }\n return out;\n}\n/**\n * Creates a new vec2 initialized with values from an existing vector\n *\n * @param {ReadonlyVec2} a vector to clone\n * @returns {vec2} a new 2D vector\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(2);\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\n/**\n * Creates a new vec2 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @returns {vec2} a new 2D vector\n */\n\nexport function fromValues(x, y) {\n var out = new glMatrix.ARRAY_TYPE(2);\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\n * Copy the values from one vec2 to another\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the source vector\n * @returns {vec2} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\n/**\n * Set the components of a vec2 to the given values\n *\n * @param {vec2} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @returns {vec2} out\n */\n\nexport function set(out, x, y) {\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\n * Adds two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n return out;\n}\n/**\n * Multiplies two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n return out;\n}\n/**\n * Divides two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n return out;\n}\n/**\n * Math.ceil the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to ceil\n * @returns {vec2} out\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n return out;\n}\n/**\n * Math.floor the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to floor\n * @returns {vec2} out\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n return out;\n}\n/**\n * Returns the minimum of two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n return out;\n}\n/**\n * Returns the maximum of two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n return out;\n}\n/**\n * Math.round the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to round\n * @returns {vec2} out\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n return out;\n}\n/**\n * Scales a vec2 by a scalar number\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec2} out\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n return out;\n}\n/**\n * Adds two vec2's after scaling the second operand by a scalar value\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec2} out\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n return out;\n}\n/**\n * Calculates the euclidian distance between two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} distance between a and b\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1];\n return Math.hypot(x, y);\n}\n/**\n * Calculates the squared euclidian distance between two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1];\n return x * x + y * y;\n}\n/**\n * Calculates the length of a vec2\n *\n * @param {ReadonlyVec2} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport function length(a) {\n var x = a[0],\n y = a[1];\n return Math.hypot(x, y);\n}\n/**\n * Calculates the squared length of a vec2\n *\n * @param {ReadonlyVec2} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nexport function squaredLength(a) {\n var x = a[0],\n y = a[1];\n return x * x + y * y;\n}\n/**\n * Negates the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to negate\n * @returns {vec2} out\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n return out;\n}\n/**\n * Returns the inverse of the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to invert\n * @returns {vec2} out\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n return out;\n}\n/**\n * Normalize a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to normalize\n * @returns {vec2} out\n */\n\nexport function normalize(out, a) {\n var x = a[0],\n y = a[1];\n var len = x * x + y * y;\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n }\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n return out;\n}\n/**\n * Calculates the dot product of two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1];\n}\n/**\n * Computes the cross product of two vec2's\n * Note that the cross product must by definition produce a 3D vector\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec3} out\n */\n\nexport function cross(out, a, b) {\n var z = a[0] * b[1] - a[1] * b[0];\n out[0] = out[1] = 0;\n out[2] = z;\n return out;\n}\n/**\n * Performs a linear interpolation between two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec2} out\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0],\n ay = a[1];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec2} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec2} out\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0;\n var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n out[0] = Math.cos(r) * scale;\n out[1] = Math.sin(r) * scale;\n return out;\n}\n/**\n * Transforms the vec2 with a mat2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat2} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat2(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[2] * y;\n out[1] = m[1] * x + m[3] * y;\n return out;\n}\n/**\n * Transforms the vec2 with a mat2d\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat2d} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat2d(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[2] * y + m[4];\n out[1] = m[1] * x + m[3] * y + m[5];\n return out;\n}\n/**\n * Transforms the vec2 with a mat3\n * 3rd vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat3} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat3(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[3] * y + m[6];\n out[1] = m[1] * x + m[4] * y + m[7];\n return out;\n}\n/**\n * Transforms the vec2 with a mat4\n * 3rd vector component is implicitly '0'\n * 4th vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0];\n var y = a[1];\n out[0] = m[0] * x + m[4] * y + m[12];\n out[1] = m[1] * x + m[5] * y + m[13];\n return out;\n}\n/**\n * Rotate a 2D vector\n * @param {vec2} out The receiving vec2\n * @param {ReadonlyVec2} a The vec2 point to rotate\n * @param {ReadonlyVec2} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec2} out\n */\n\nexport function rotate(out, a, b, rad) {\n //Translate point to the origin\n var p0 = a[0] - b[0],\n p1 = a[1] - b[1],\n sinC = Math.sin(rad),\n cosC = Math.cos(rad); //perform rotation and translate to correct position\n\n out[0] = p0 * cosC - p1 * sinC + b[0];\n out[1] = p0 * sinC + p1 * cosC + b[1];\n return out;\n}\n/**\n * Get the angle between two 2D vectors\n * @param {ReadonlyVec2} a The first operand\n * @param {ReadonlyVec2} b The second operand\n * @returns {Number} The angle in radians\n */\n\nexport function angle(a, b) {\n var x1 = a[0],\n y1 = a[1],\n x2 = b[0],\n y2 = b[1],\n // mag is the product of the magnitudes of a and b\n mag = Math.sqrt(x1 * x1 + y1 * y1) * Math.sqrt(x2 * x2 + y2 * y2),\n // mag &&.. short circuits if mag == 0\n cosine = mag && (x1 * x2 + y1 * y2) / mag; // Math.min(Math.max(cosine, -1), 1) clamps the cosine between -1 and 1\n\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n/**\n * Set the components of a vec2 to zero\n *\n * @param {vec2} out the receiving vector\n * @returns {vec2} out\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec2} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n return \"vec2(\" + a[0] + \", \" + a[1] + \")\";\n}\n/**\n * Returns whether or not the vectors exactly have the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec2} a The first vector.\n * @param {ReadonlyVec2} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec2} a The first vector.\n * @param {ReadonlyVec2} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1];\n var b0 = b[0],\n b1 = b[1];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1));\n}\n/**\n * Alias for {@link vec2.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Alias for {@link vec2.subtract}\n * @function\n */\n\nexport var sub = subtract;\n/**\n * Alias for {@link vec2.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link vec2.divide}\n * @function\n */\n\nexport var div = divide;\n/**\n * Alias for {@link vec2.distance}\n * @function\n */\n\nexport var dist = distance;\n/**\n * Alias for {@link vec2.squaredDistance}\n * @function\n */\n\nexport var sqrDist = squaredDistance;\n/**\n * Alias for {@link vec2.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec2s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec2. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec2s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n if (!stride) {\n stride = 2;\n }\n if (!offset) {\n offset = 0;\n }\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n }\n return a;\n };\n}();","\"use strict\";\n\n// Note: This regex matches even invalid JSON strings, but since we’re\n// working on the output of `JSON.stringify` we know that only valid strings\n// are present (unless the user supplied a weird `options.indent` but in\n// that case we don’t care since the output would be invalid anyway).\nvar stringOrChar = /(\"(?:[^\\\\\"]|\\\\.)*\")|[:,]/g;\nmodule.exports = function stringify(passedObj, options) {\n var indent, maxLength, replacer;\n options = options || {};\n indent = JSON.stringify([1], undefined, options.indent === undefined ? 2 : options.indent).slice(2, -3);\n maxLength = indent === \"\" ? Infinity : options.maxLength === undefined ? 80 : options.maxLength;\n replacer = options.replacer;\n return function _stringify(obj, currentIndent, reserved) {\n // prettier-ignore\n var end, index, items, key, keyPart, keys, length, nextIndent, prettified, start, string, value;\n if (obj && typeof obj.toJSON === \"function\") {\n obj = obj.toJSON();\n }\n string = JSON.stringify(obj, replacer);\n if (string === undefined) {\n return string;\n }\n length = maxLength - currentIndent.length - reserved;\n if (string.length <= length) {\n prettified = string.replace(stringOrChar, function (match, stringLiteral) {\n return stringLiteral || match + \" \";\n });\n if (prettified.length <= length) {\n return prettified;\n }\n }\n if (replacer != null) {\n obj = JSON.parse(string);\n replacer = undefined;\n }\n if (typeof obj === \"object\" && obj !== null) {\n nextIndent = currentIndent + indent;\n items = [];\n index = 0;\n if (Array.isArray(obj)) {\n start = \"[\";\n end = \"]\";\n length = obj.length;\n for (; index < length; index++) {\n items.push(_stringify(obj[index], nextIndent, index === length - 1 ? 0 : 1) || \"null\");\n }\n } else {\n start = \"{\";\n end = \"}\";\n keys = Object.keys(obj);\n length = keys.length;\n for (; index < length; index++) {\n key = keys[index];\n keyPart = JSON.stringify(key) + \": \";\n value = _stringify(obj[key], nextIndent, keyPart.length + (index === length - 1 ? 0 : 1));\n if (value !== undefined) {\n items.push(keyPart + value);\n }\n }\n }\n if (items.length > 0) {\n return [start, indent + items.join(\",\\n\" + nextIndent), end].join(\"\\n\" + currentIndent);\n }\n }\n return string;\n }(passedObj, \"\", 0);\n};","'use strict';\n\nvar self = module.exports;\nmodule.exports.isNumber = function (x) {\n return typeof x === 'number';\n};\nmodule.exports.findMin = function (arr) {\n if (arr.length === 0) {\n return Infinity;\n }\n var curr = arr[0];\n for (var i = 1; i < arr.length; i++) {\n curr = Math.min(curr, arr[i]);\n }\n return curr;\n};\nmodule.exports.findMax = function (arr) {\n if (arr.length === 0) {\n return -Infinity;\n }\n var curr = arr[0];\n for (var i = 1; i < arr.length; i++) {\n curr = Math.max(curr, arr[i]);\n }\n return curr;\n};\nmodule.exports.findMinMulti = function (arr) {\n var curr = self.findMin(arr[0]);\n for (var i = 1; i < arr.length; i++) {\n curr = Math.min(curr, self.findMin(arr[i]));\n }\n return curr;\n};\nmodule.exports.findMaxMulti = function (arr) {\n var curr = self.findMax(arr[0]);\n for (var i = 1; i < arr.length; i++) {\n curr = Math.max(curr, self.findMax(arr[i]));\n }\n return curr;\n};\nmodule.exports.inside = function (min, max, x) {\n return min <= x && x <= max;\n};","'use strict';\n\nvar DEFAULT_SIZE = 50;\nvar DEFAULT_WIDTH = 2;\nvar LN_2 = Math.log(2);\nvar self = module.exports;\nvar helper = require('./helper');\n\n// Triangle\nfunction kernel(x) {\n return 1 - Math.abs(x);\n}\n\n/**\n * Get min and max value for the pdf, covering all arr data range while respecting options' data\n * @param arr\n * @param options\n * @returns {*}\n */\nmodule.exports.getUnifiedMinMax = function (arr, options) {\n return self.getUnifiedMinMaxMulti([arr], options);\n};\nmodule.exports.getUnifiedMinMaxMulti = function (arrMulti, options) {\n options = options || {};\n var relaxMin = false;\n var relaxMax = false;\n var width = helper.isNumber(options.width) ? options.width : DEFAULT_WIDTH;\n var size = helper.isNumber(options.size) ? options.size : DEFAULT_SIZE;\n var min = helper.isNumber(options.min) ? options.min : (relaxMin = true, helper.findMinMulti(arrMulti));\n var max = helper.isNumber(options.max) ? options.max : (relaxMax = true, helper.findMaxMulti(arrMulti));\n var range = max - min;\n var step = range / (size - 1);\n\n // Relax?\n if (relaxMin) {\n min = min - 2 * width * step;\n }\n if (relaxMax) {\n max = max + 2 * width * step;\n }\n return {\n min: min,\n max: max\n };\n};\nmodule.exports.create = function (arr, options) {\n options = options || {};\n if (!arr || arr.length === 0) {\n return [];\n }\n var size = helper.isNumber(options.size) ? options.size : DEFAULT_SIZE;\n var width = helper.isNumber(options.width) ? options.width : DEFAULT_WIDTH;\n var normalizedMinMax = self.getUnifiedMinMax(arr, {\n size: size,\n width: width,\n min: options.min,\n max: options.max\n });\n var min = normalizedMinMax.min;\n var max = normalizedMinMax.max;\n var range = max - min;\n var step = range / (size - 1);\n if (range === 0) {\n // Special case...\n return [{\n x: min,\n y: 1\n }];\n }\n\n // Good to go\n\n var buckets = [];\n for (var i = 0; i < size; i++) {\n buckets.push({\n x: min + i * step,\n y: 0\n });\n }\n var xToBucket = function xToBucket(x) {\n return Math.floor((x - min) / step);\n };\n var partialArea = generatePartialAreas(kernel, width);\n var fullArea = partialArea[width];\n var c = partialArea[width - 1] - partialArea[width - 2];\n var initalValue = 0;\n arr.forEach(function (x) {\n var bucket = xToBucket(x);\n\n // Totally outside?\n if (bucket + width < 0 || bucket - width >= buckets.length) {\n return;\n }\n var start = Math.max(bucket - width, 0);\n var mid = bucket;\n var end = Math.min(bucket + width, buckets.length - 1);\n var leftBlockCount = start - (bucket - width);\n var rightBlockCount = bucket + width - end;\n var spilledAreaLeft = partialArea[-width - 1 + leftBlockCount] || 0;\n var spilledAreaRight = partialArea[-width - 1 + rightBlockCount] || 0;\n var weight = fullArea / (fullArea - spilledAreaLeft - spilledAreaRight);\n if (leftBlockCount > 0) {\n initalValue += weight * (leftBlockCount - 1) * c;\n }\n\n // Add grads\n var startGradPos = Math.max(0, bucket - width + 1);\n if (helper.inside(0, buckets.length - 1, startGradPos)) {\n buckets[startGradPos].y += weight * 1 * c;\n }\n if (helper.inside(0, buckets.length - 1, mid + 1)) {\n buckets[mid + 1].y -= weight * 2 * c;\n }\n if (helper.inside(0, buckets.length - 1, end + 1)) {\n buckets[end + 1].y += weight * 1 * c;\n }\n });\n var accumulator = initalValue;\n var gradAccumulator = 0;\n var area = 0;\n buckets.forEach(function (bucket) {\n gradAccumulator += bucket.y;\n accumulator += gradAccumulator;\n bucket.y = accumulator;\n area += accumulator;\n });\n\n // Normalize\n if (area > 0) {\n buckets.forEach(function (bucket) {\n bucket.y /= area;\n });\n }\n return buckets;\n};\nfunction generatePartialAreas(kernel, width) {\n var partialAreas = {};\n var accumulator = 0;\n for (var i = -width; i <= width; i++) {\n accumulator += kernel(i / width);\n partialAreas[i] = accumulator;\n }\n return partialAreas;\n}\nmodule.exports.getExpectedValueFromPdf = function (pdf) {\n if (!pdf || pdf.length === 0) {\n return undefined;\n }\n var expected = 0;\n pdf.forEach(function (obj) {\n expected += obj.x * obj.y;\n });\n return expected;\n};\nmodule.exports.getXWithLeftTailArea = function (pdf, area) {\n if (!pdf || pdf.length === 0) {\n return undefined;\n }\n var accumulator = 0;\n var last = 0;\n for (var i = 0; i < pdf.length; i++) {\n last = i;\n accumulator += pdf[i].y;\n if (accumulator >= area) {\n break;\n }\n }\n return pdf[last].x;\n};\nmodule.exports.getPerplexity = function (pdf) {\n if (!pdf || pdf.length === 0) {\n return undefined;\n }\n var entropy = 0;\n pdf.forEach(function (obj) {\n var ln = Math.log(obj.y);\n if (isFinite(ln)) {\n entropy += obj.y * ln;\n }\n });\n entropy = -entropy / LN_2;\n return Math.pow(2, entropy);\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SensorTabIndex = exports.SensorClassName = exports.SizeSensorId = void 0;\n\n/**\n * Created by hustcc on 18/6/9.\n * Contract: i@hust.cc\n */\nvar SizeSensorId = 'size-sensor-id';\nexports.SizeSensorId = SizeSensorId;\nvar SensorClassName = 'size-sensor-object';\nexports.SensorClassName = SensorClassName;\nvar SensorTabIndex = '-1';\nexports.SensorTabIndex = SensorTabIndex;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\n/**\n * Created by hustcc on 18/6/9.\n * Contract: i@hust.cc\n */\nvar _default = function _default(fn) {\n var delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 60;\n var timer = null;\n return function () {\n var _this = this;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n clearTimeout(timer);\n timer = setTimeout(function () {\n fn.apply(_this, args);\n }, delay);\n };\n};\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\n/**\n * Created by hustcc on 18/6/9.\n * Contract: i@hust.cc\n */\nvar id = 1;\n/**\n * generate unique id in application\n * @return {string}\n */\n\nvar _default = function _default() {\n return \"\".concat(id++);\n};\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ver = exports.clear = exports.bind = void 0;\nvar _sensorPool = require(\"./sensorPool\");\n\n/**\n * Created by hustcc on 18/6/9.[高考时间]\n * Contract: i@hust.cc\n */\n\n/**\n * bind an element with resize callback function\n * @param {*} element\n * @param {*} cb\n */\nvar bind = function bind(element, cb) {\n var sensor = (0, _sensorPool.getSensor)(element); // listen with callback\n\n sensor.bind(cb); // return unbind function\n\n return function () {\n sensor.unbind(cb);\n };\n};\n/**\n * clear all the listener and sensor of an element\n * @param element\n */\n\nexports.bind = bind;\nvar clear = function clear(element) {\n var sensor = (0, _sensorPool.getSensor)(element);\n (0, _sensorPool.removeSensor)(sensor);\n};\nexports.clear = clear;\nvar ver = \"1.0.1\";\nexports.ver = ver;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.removeSensor = exports.getSensor = void 0;\nvar _id = _interopRequireDefault(require(\"./id\"));\nvar _sensors = require(\"./sensors\");\nvar _constant = require(\"./constant\");\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\n/**\n * Created by hustcc on 18/6/9.\n * Contract: i@hust.cc\n */\n\n/**\n * all the sensor objects.\n * sensor pool\n */\nvar Sensors = {};\n/**\n * get one sensor\n * @param element\n * @returns {*}\n */\n\nvar getSensor = function getSensor(element) {\n var sensorId = element.getAttribute(_constant.SizeSensorId); // 1. if the sensor exists, then use it\n\n if (sensorId && Sensors[sensorId]) {\n return Sensors[sensorId];\n } // 2. not exist, then create one\n\n var newId = (0, _id[\"default\"])();\n element.setAttribute(_constant.SizeSensorId, newId);\n var sensor = (0, _sensors.createSensor)(element); // add sensor into pool\n\n Sensors[newId] = sensor;\n return sensor;\n};\n/**\n * 移除 sensor\n * @param sensor\n */\n\nexports.getSensor = getSensor;\nvar removeSensor = function removeSensor(sensor) {\n var sensorId = sensor.element.getAttribute(_constant.SizeSensorId); // remove attribute\n\n sensor.element.removeAttribute(_constant.SizeSensorId); // remove event, dom of the sensor used\n\n sensor.destroy(); // exist, then remove from pool\n\n if (sensorId && Sensors[sensorId]) {\n delete Sensors[sensorId];\n }\n};\nexports.removeSensor = removeSensor;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createSensor = void 0;\nvar _object = require(\"./object\");\nvar _resizeObserver = require(\"./resizeObserver\");\n\n/**\n * Created by hustcc on 18/7/5.\n * Contract: i@hust.cc\n */\n\n/**\n * sensor strategies\n */\n// export const createSensor = createObjectSensor;\nvar createSensor = typeof ResizeObserver !== 'undefined' ? _resizeObserver.createSensor : _object.createSensor;\nexports.createSensor = createSensor;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createSensor = void 0;\nvar _debounce = _interopRequireDefault(require(\"../debounce\"));\nvar _constant = require(\"../constant\");\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\n/**\n * Created by hustcc on 18/6/9.\n * Contract: i@hust.cc\n */\nvar createSensor = function createSensor(element) {\n var sensor = undefined; // callback\n\n var listeners = [];\n /**\n * create object DOM of sensor\n * @returns {HTMLObjectElement}\n */\n\n var newSensor = function newSensor() {\n // adjust style\n if (getComputedStyle(element).position === 'static') {\n element.style.position = 'relative';\n }\n var obj = document.createElement('object');\n obj.onload = function () {\n obj.contentDocument.defaultView.addEventListener('resize', resizeListener); // 直接触发一次 resize\n\n resizeListener();\n };\n obj.style.display = 'block';\n obj.style.position = 'absolute';\n obj.style.top = '0';\n obj.style.left = '0';\n obj.style.height = '100%';\n obj.style.width = '100%';\n obj.style.overflow = 'hidden';\n obj.style.pointerEvents = 'none';\n obj.style.zIndex = '-1';\n obj.style.opacity = '0';\n obj.setAttribute('class', _constant.SensorClassName);\n obj.setAttribute('tabindex', _constant.SensorTabIndex);\n obj.type = 'text/html'; // append into dom\n\n element.appendChild(obj); // for ie, should set data attribute delay, or will be white screen\n\n obj.data = 'about:blank';\n return obj;\n };\n /**\n * trigger listeners\n */\n\n var resizeListener = (0, _debounce[\"default\"])(function () {\n // trigger all listener\n listeners.forEach(function (listener) {\n listener(element);\n });\n });\n /**\n * listen with one callback function\n * @param cb\n */\n\n var bind = function bind(cb) {\n // if not exist sensor, then create one\n if (!sensor) {\n sensor = newSensor();\n }\n if (listeners.indexOf(cb) === -1) {\n listeners.push(cb);\n }\n };\n /**\n * destroy all\n */\n\n var destroy = function destroy() {\n if (sensor && sensor.parentNode) {\n if (sensor.contentDocument) {\n // remote event\n sensor.contentDocument.defaultView.removeEventListener('resize', resizeListener);\n } // remove dom\n\n sensor.parentNode.removeChild(sensor); // initial variable\n\n sensor = undefined;\n listeners = [];\n }\n };\n /**\n * cancel listener bind\n * @param cb\n */\n\n var unbind = function unbind(cb) {\n var idx = listeners.indexOf(cb);\n if (idx !== -1) {\n listeners.splice(idx, 1);\n } // no listener, and sensor is exist\n // then destroy the sensor\n\n if (listeners.length === 0 && sensor) {\n destroy();\n }\n };\n return {\n element: element,\n bind: bind,\n destroy: destroy,\n unbind: unbind\n };\n};\nexports.createSensor = createSensor;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createSensor = void 0;\nvar _debounce = _interopRequireDefault(require(\"../debounce\"));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\n/**\n * Created by hustcc on 18/7/5.\n * Contract: i@hust.cc\n */\nvar createSensor = function createSensor(element) {\n var sensor = undefined; // callback\n\n var listeners = [];\n /**\n * trigger listeners\n */\n\n var resizeListener = (0, _debounce[\"default\"])(function () {\n // trigger all\n listeners.forEach(function (listener) {\n listener(element);\n });\n });\n /**\n * create ResizeObserver sensor\n * @returns\n */\n\n var newSensor = function newSensor() {\n var s = new ResizeObserver(resizeListener); // listen element\n\n s.observe(element); // trigger once\n\n resizeListener();\n return s;\n };\n /**\n * listen with callback\n * @param cb\n */\n\n var bind = function bind(cb) {\n if (!sensor) {\n sensor = newSensor();\n }\n if (listeners.indexOf(cb) === -1) {\n listeners.push(cb);\n }\n };\n /**\n * destroy\n */\n\n var destroy = function destroy() {\n sensor.disconnect();\n listeners = [];\n sensor = undefined;\n };\n /**\n * cancel bind\n * @param cb\n */\n\n var unbind = function unbind(cb) {\n var idx = listeners.indexOf(cb);\n if (idx !== -1) {\n listeners.splice(idx, 1);\n } // no listener, and sensor is exist\n // then destroy the sensor\n\n if (listeners.length === 0 && sensor) {\n destroy();\n }\n };\n return {\n element: element,\n bind: bind,\n destroy: destroy,\n unbind: unbind\n };\n};\nexports.createSensor = createSensor;","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return _extendStatics(d, b);\n};\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\nvar _assign = function __assign() {\n _assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return _assign.apply(this, arguments);\n};\nexport { _assign as __assign };\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n}\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\nexport function __param(paramIndex, decorator) {\n return function (target, key) {\n decorator(target, key, paramIndex);\n };\n}\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) {\n if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\");\n return f;\n }\n var kind = contextIn.kind,\n key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _,\n done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) {\n if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\");\n extraInitializers.push(accept(f || null));\n };\n var result = (0, decorators[i])(kind === \"accessor\" ? {\n get: descriptor.get,\n set: descriptor.set\n } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n } else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n}\n;\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n}\n;\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n}\n;\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", {\n configurable: true,\n value: prefix ? \"\".concat(prefix, \" \", name) : name\n });\n}\n;\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\nexport function __generator(thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\nexport var __createBinding = Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = {\n enumerable: true,\n get: function get() {\n return m[k];\n }\n };\n }\n Object.defineProperty(o, k2, desc);\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n};\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function next() {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j];\n return r;\n}\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []),\n i,\n q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i;\n function verb(n) {\n if (g[n]) i[n] = function (v) {\n return new Promise(function (a, b) {\n q.push([n, v, a, b]) > 1 || resume(n, v);\n });\n };\n }\n function resume(n, v) {\n try {\n step(g[n](v));\n } catch (e) {\n settle(q[0][3], e);\n }\n }\n function step(r) {\n r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);\n }\n function fulfill(value) {\n resume(\"next\", value);\n }\n function reject(value) {\n resume(\"throw\", value);\n }\n function settle(f, v) {\n if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]);\n }\n}\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) {\n throw e;\n }), verb(\"return\"), i[Symbol.iterator] = function () {\n return this;\n }, i;\n function verb(n, f) {\n i[n] = o[n] ? function (v) {\n return (p = !p) ? {\n value: __await(o[n](v)),\n done: false\n } : f ? f(v) : v;\n } : f;\n }\n}\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator],\n i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i);\n function verb(n) {\n i[n] = o[n] && function (v) {\n return new Promise(function (resolve, reject) {\n v = o[n](v), settle(resolve, reject, v.done, v.value);\n });\n };\n }\n function settle(resolve, reject, d, v) {\n Promise.resolve(v).then(function (v) {\n resolve({\n value: v,\n done: d\n });\n }, reject);\n }\n}\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n return cooked;\n}\n;\nvar __setModuleDefault = Object.create ? function (o, v) {\n Object.defineProperty(o, \"default\", {\n enumerable: true,\n value: v\n });\n} : function (o, v) {\n o[\"default\"] = v;\n};\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\nexport function __importDefault(mod) {\n return mod && mod.__esModule ? mod : {\n default: mod\n };\n}\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value), value;\n}\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || typeof receiver !== \"object\" && typeof receiver !== \"function\") throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({\n value: value,\n dispose: dispose,\n async: async\n });\n } else if (async) {\n env.stack.push({\n async: true\n });\n }\n return value;\n}\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function (e) {\n fail(e);\n return next();\n });\n } catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\nexport default {\n __extends: __extends,\n __assign: _assign,\n __rest: __rest,\n __decorate: __decorate,\n __param: __param,\n __metadata: __metadata,\n __awaiter: __awaiter,\n __generator: __generator,\n __createBinding: __createBinding,\n __exportStar: __exportStar,\n __values: __values,\n __read: __read,\n __spread: __spread,\n __spreadArrays: __spreadArrays,\n __spreadArray: __spreadArray,\n __await: __await,\n __asyncGenerator: __asyncGenerator,\n __asyncDelegator: __asyncDelegator,\n __asyncValues: __asyncValues,\n __makeTemplateObject: __makeTemplateObject,\n __importStar: __importStar,\n __importDefault: __importDefault,\n __classPrivateFieldGet: __classPrivateFieldGet,\n __classPrivateFieldSet: __classPrivateFieldSet,\n __classPrivateFieldIn: __classPrivateFieldIn,\n __addDisposableResource: __addDisposableResource,\n __disposeResources: __disposeResources\n};","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\n// eslint-disable-next-line redos/no-vulnerable -- safe\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// `GetSubstitution` abstract operation\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return replace(replacement, symbols, function (match, ch) {\n var capture;\n switch (charAt(ch, 0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return stringSlice(str, 0, position);\n case \"'\": return stringSlice(str, tailPos);\n case '<':\n capture = namedCaptures[stringSlice(ch, 1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n};\n","'use strict';\nvar isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.hasIndices) result += 'd';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.unicodeSets) result += 'v';\n if (that.sticky) result += 'y';\n return result;\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar hasOwn = require('../internals/has-own-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar regExpFlags = require('../internals/regexp-flags');\n\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (R) {\n var flags = R.flags;\n return flags === undefined && !('flags' in RegExpPrototype) && !hasOwn(R, 'flags') && isPrototypeOf(RegExpPrototype, R)\n ? call(regExpFlags, R) : flags;\n};\n","'use strict';\nvar classof = require('../internals/classof');\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n return $String(argument);\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar flattenIntoArray = require('../internals/flatten-into-array');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\n// `Array.prototype.flat` method\n// https://tc39.es/ecma262/#sec-array.prototype.flat\n$({ target: 'Array', proto: true }, {\n flat: function flat(/* depthArg = 1 */) {\n var depthArg = arguments.length ? arguments[0] : undefined;\n var O = toObject(this);\n var sourceLen = lengthOfArrayLike(O);\n var A = arraySpeciesCreate(O, 0);\n A.length = flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toIntegerOrInfinity(depthArg));\n return A;\n }\n});\n","'use strict';\n// this method was added to unscopables after implementation\n// in popular engines, so it's moved to a separate module\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('flat');\n","'use strict';\nvar $ = require('../internals/export');\n\n// eslint-disable-next-line es/no-math-hypot -- required for testing\nvar $hypot = Math.hypot;\nvar abs = Math.abs;\nvar sqrt = Math.sqrt;\n\n// Chrome 77 bug\n// https://bugs.chromium.org/p/v8/issues/detail?id=9546\nvar FORCED = !!$hypot && $hypot(Infinity, NaN) !== Infinity;\n\n// `Math.hypot` method\n// https://tc39.es/ecma262/#sec-math.hypot\n$({ target: 'Math', stat: true, arity: 2, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n hypot: function hypot(value1, value2) {\n var sum = 0;\n var i = 0;\n var aLen = arguments.length;\n var larg = 0;\n var arg, div;\n while (i < aLen) {\n arg = abs(arguments[i++]);\n if (larg < arg) {\n div = larg / arg;\n sum = sum * div * div + 1;\n larg = arg;\n } else if (arg > 0) {\n div = arg / larg;\n sum += div * div;\n } else sum += arg;\n }\n return larg === Infinity ? Infinity : larg * sqrt(sum);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar isCallable = require('../internals/is-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar isRegExp = require('../internals/is-regexp');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\nvar getSubstitution = require('../internals/get-substitution');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar REPLACE = wellKnownSymbol('replace');\nvar $TypeError = TypeError;\nvar indexOf = uncurryThis(''.indexOf);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\nvar max = Math.max;\n\nvar stringIndexOf = function (string, searchValue, fromIndex) {\n if (fromIndex > string.length) return -1;\n if (searchValue === '') return fromIndex;\n return indexOf(string, searchValue, fromIndex);\n};\n\n// `String.prototype.replaceAll` method\n// https://tc39.es/ecma262/#sec-string.prototype.replaceall\n$({ target: 'String', proto: true }, {\n replaceAll: function replaceAll(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var IS_REG_EXP, flags, replacer, string, searchString, functionalReplace, searchLength, advanceBy, replacement;\n var position = 0;\n var endOfLastMatch = 0;\n var result = '';\n if (!isNullOrUndefined(searchValue)) {\n IS_REG_EXP = isRegExp(searchValue);\n if (IS_REG_EXP) {\n flags = toString(requireObjectCoercible(getRegExpFlags(searchValue)));\n if (!~indexOf(flags, 'g')) throw $TypeError('`.replaceAll` does not allow non-global regexes');\n }\n replacer = getMethod(searchValue, REPLACE);\n if (replacer) {\n return call(replacer, searchValue, O, replaceValue);\n } else if (IS_PURE && IS_REG_EXP) {\n return replace(toString(O), searchValue, replaceValue);\n }\n }\n string = toString(O);\n searchString = toString(searchValue);\n functionalReplace = isCallable(replaceValue);\n if (!functionalReplace) replaceValue = toString(replaceValue);\n searchLength = searchString.length;\n advanceBy = max(1, searchLength);\n position = stringIndexOf(string, searchString, 0);\n while (position !== -1) {\n replacement = functionalReplace\n ? toString(replaceValue(searchString, position, string))\n : getSubstitution(searchString, string, position, [], undefined, replaceValue);\n result += stringSlice(string, endOfLastMatch, position) + replacement;\n endOfLastMatch = position + searchLength;\n position = stringIndexOf(string, searchString, position + advanceBy);\n }\n if (endOfLastMatch < string.length) {\n result += stringSlice(string, endOfLastMatch);\n }\n return result;\n }\n});\n","'use strict';\n// TODO: Remove from `core-js@4`\nrequire('../modules/es.string.replace-all');\n","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"title\", \"titleId\"];\nimport * as React from \"react\";\nfunction ExclamationCircleIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M12 9v3.75m9-.75a9 9 0 11-18 0 9 9 0 0118 0zm-9 3.75h.008v.008H12v-.008z\"\n }));\n}\nvar ForwardRef = React.forwardRef(ExclamationCircleIcon);\nexport default ForwardRef;","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"title\", \"titleId\"];\nimport * as React from \"react\";\nfunction ArrowUpOnSquareIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M9 8.25H7.5a2.25 2.25 0 00-2.25 2.25v9a2.25 2.25 0 002.25 2.25h9a2.25 2.25 0 002.25-2.25v-9a2.25 2.25 0 00-2.25-2.25H15m0-3l-3-3m0 0l-3 3m3-3V15\"\n }));\n}\nvar ForwardRef = React.forwardRef(ArrowUpOnSquareIcon);\nexport default ForwardRef;","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"title\", \"titleId\"];\nimport * as React from \"react\";\nfunction InboxIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M2.25 13.5h3.86a2.25 2.25 0 012.012 1.244l.256.512a2.25 2.25 0 002.013 1.244h3.218a2.25 2.25 0 002.013-1.244l.256-.512a2.25 2.25 0 012.013-1.244h3.859m-19.5.338V18a2.25 2.25 0 002.25 2.25h15A2.25 2.25 0 0021.75 18v-4.162c0-.224-.034-.447-.1-.661L19.24 5.338a2.25 2.25 0 00-2.15-1.588H6.911a2.25 2.25 0 00-2.15 1.588L2.35 13.177a2.25 2.25 0 00-.1.661z\"\n }));\n}\nvar ForwardRef = React.forwardRef(InboxIcon);\nexport default ForwardRef;","import _typeof from \"./typeof.js\";\nexport default function _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n };\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n defineProperty = Object.defineProperty || function (obj, key, desc) {\n obj[key] = desc.value;\n },\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return defineProperty(generator, \"_invoke\", {\n value: makeInvokeMethod(innerFn, self, context)\n }), generator;\n }\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n exports.wrap = wrap;\n var ContinueSentinel = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n reject(record.arg);\n }\n var previousPromise;\n defineProperty(this, \"_invoke\", {\n value: function value(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method,\n method = delegate.iterator[methodName];\n if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel;\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n return next.value = undefined, next.done = !0, next;\n };\n return next.next = next;\n }\n }\n return {\n next: doneResult\n };\n }\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (val) {\n var object = Object(val),\n keys = [];\n for (var key in object) keys.push(key);\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nvar attributes = \"accept acceptCharset accessKey action allowFullScreen allowTransparency\\n alt async autoComplete autoFocus autoPlay capture cellPadding cellSpacing challenge\\n charSet checked classID className colSpan cols content contentEditable contextMenu\\n controls coords crossOrigin data dateTime default defer dir disabled download draggable\\n encType form formAction formEncType formMethod formNoValidate formTarget frameBorder\\n headers height hidden high href hrefLang htmlFor httpEquiv icon id inputMode integrity\\n is keyParams keyType kind label lang list loop low manifest marginHeight marginWidth max maxLength media\\n mediaGroup method min minLength multiple muted name noValidate nonce open\\n optimum pattern placeholder poster preload radioGroup readOnly rel required\\n reversed role rowSpan rows sandbox scope scoped scrolling seamless selected\\n shape size sizes span spellCheck src srcDoc srcLang srcSet start step style\\n summary tabIndex target title type useMap value width wmode wrap\";\nvar eventsName = \"onCopy onCut onPaste onCompositionEnd onCompositionStart onCompositionUpdate onKeyDown\\n onKeyPress onKeyUp onFocus onBlur onChange onInput onSubmit onClick onContextMenu onDoubleClick\\n onDrag onDragEnd onDragEnter onDragExit onDragLeave onDragOver onDragStart onDrop onMouseDown\\n onMouseEnter onMouseLeave onMouseMove onMouseOut onMouseOver onMouseUp onSelect onTouchCancel\\n onTouchEnd onTouchMove onTouchStart onScroll onWheel onAbort onCanPlay onCanPlayThrough\\n onDurationChange onEmptied onEncrypted onEnded onError onLoadedData onLoadedMetadata\\n onLoadStart onPause onPlay onPlaying onProgress onRateChange onSeeked onSeeking onStalled onSuspend onTimeUpdate onVolumeChange onWaiting onLoad onError\";\nvar propList = \"\".concat(attributes, \" \").concat(eventsName).split(/[\\s\\n]+/);\n\n/* eslint-enable max-len */\nvar ariaPrefix = 'aria-';\nvar dataPrefix = 'data-';\nfunction match(key, prefix) {\n return key.indexOf(prefix) === 0;\n}\n/**\n * Picker props from exist props with filter\n * @param props Passed props\n * @param ariaOnly boolean | { aria?: boolean; data?: boolean; attr?: boolean; } filter config\n */\nexport default function pickAttrs(props) {\n var ariaOnly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var mergedConfig;\n if (ariaOnly === false) {\n mergedConfig = {\n aria: true,\n data: true,\n attr: true\n };\n } else if (ariaOnly === true) {\n mergedConfig = {\n aria: true\n };\n } else {\n mergedConfig = _objectSpread({}, ariaOnly);\n }\n var attrs = {};\n Object.keys(props).forEach(function (key) {\n if (\n // Aria\n mergedConfig.aria && (key === 'role' || match(key, ariaPrefix)) ||\n // Data\n mergedConfig.data && match(key, dataPrefix) ||\n // Attr\n mergedConfig.attr && propList.includes(key)) {\n attrs[key] = props[key];\n }\n });\n return attrs;\n}","function getError(option, xhr) {\n var msg = \"cannot \".concat(option.method, \" \").concat(option.action, \" \").concat(xhr.status, \"'\");\n var err = new Error(msg);\n err.status = xhr.status;\n err.method = option.method;\n err.url = option.action;\n return err;\n}\nfunction getBody(xhr) {\n var text = xhr.responseText || xhr.response;\n if (!text) {\n return text;\n }\n try {\n return JSON.parse(text);\n } catch (e) {\n return text;\n }\n}\nexport default function upload(option) {\n // eslint-disable-next-line no-undef\n var xhr = new XMLHttpRequest();\n if (option.onProgress && xhr.upload) {\n xhr.upload.onprogress = function progress(e) {\n if (e.total > 0) {\n e.percent = e.loaded / e.total * 100;\n }\n option.onProgress(e);\n };\n } // eslint-disable-next-line no-undef\n\n var formData = new FormData();\n if (option.data) {\n Object.keys(option.data).forEach(function (key) {\n var value = option.data[key]; // support key-value array data\n\n if (Array.isArray(value)) {\n value.forEach(function (item) {\n // { list: [ 11, 22 ] }\n // formData.append('list[]', 11);\n formData.append(\"\".concat(key, \"[]\"), item);\n });\n return;\n }\n formData.append(key, value);\n });\n } // eslint-disable-next-line no-undef\n\n if (option.file instanceof Blob) {\n formData.append(option.filename, option.file, option.file.name);\n } else {\n formData.append(option.filename, option.file);\n }\n xhr.onerror = function error(e) {\n option.onError(e);\n };\n xhr.onload = function onload() {\n // allow success when 2xx status\n // see https://github.com/react-component/upload/issues/34\n if (xhr.status < 200 || xhr.status >= 300) {\n return option.onError(getError(option, xhr), getBody(xhr));\n }\n return option.onSuccess(getBody(xhr), xhr);\n };\n xhr.open(option.method, option.action, true); // Has to be after `.open()`. See https://github.com/enyo/dropzone/issues/179\n\n if (option.withCredentials && 'withCredentials' in xhr) {\n xhr.withCredentials = true;\n }\n var headers = option.headers || {}; // when set headers['X-Requested-With'] = null , can close default XHR header\n // see https://github.com/react-component/upload/issues/33\n\n if (headers['X-Requested-With'] !== null) {\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n }\n Object.keys(headers).forEach(function (h) {\n if (headers[h] !== null) {\n xhr.setRequestHeader(h, headers[h]);\n }\n });\n xhr.send(formData);\n return {\n abort: function abort() {\n xhr.abort();\n }\n };\n}","var now = +new Date();\nvar index = 0;\nexport default function uid() {\n // eslint-disable-next-line no-plusplus\n return \"rc-upload-\".concat(now, \"-\").concat(++index);\n}","import warning from \"rc-util/es/warning\";\nexport default (function (file, acceptedFiles) {\n if (file && acceptedFiles) {\n var acceptedFilesArray = Array.isArray(acceptedFiles) ? acceptedFiles : acceptedFiles.split(',');\n var fileName = file.name || '';\n var mimeType = file.type || '';\n var baseMimeType = mimeType.replace(/\\/.*$/, '');\n return acceptedFilesArray.some(function (type) {\n var validType = type.trim(); // This is something like */*,* allow all files\n\n if (/^\\*(\\/\\*)?$/.test(type)) {\n return true;\n } // like .jpg, .png\n\n if (validType.charAt(0) === '.') {\n var lowerFileName = fileName.toLowerCase();\n var lowerType = validType.toLowerCase();\n var affixList = [lowerType];\n if (lowerType === '.jpg' || lowerType === '.jpeg') {\n affixList = ['.jpg', '.jpeg'];\n }\n return affixList.some(function (affix) {\n return lowerFileName.endsWith(affix);\n });\n } // This is something like a image/* mime type\n\n if (/\\/\\*$/.test(validType)) {\n return baseMimeType === validType.replace(/\\/.*$/, '');\n } // Full match\n\n if (mimeType === validType) {\n return true;\n } // Invalidate type should skip\n\n if (/^\\w+$/.test(validType)) {\n warning(false, \"Upload takes an invalidate 'accept' type '\".concat(validType, \"'.Skip for check.\"));\n return true;\n }\n return false;\n });\n }\n return true;\n});","function loopFiles(item, callback) {\n var dirReader = item.createReader();\n var fileList = [];\n function sequence() {\n dirReader.readEntries(function (entries) {\n var entryList = Array.prototype.slice.apply(entries);\n fileList = fileList.concat(entryList); // Check if all the file has been viewed\n\n var isFinished = !entryList.length;\n if (isFinished) {\n callback(fileList);\n } else {\n sequence();\n }\n });\n }\n sequence();\n}\nvar traverseFileTree = function traverseFileTree(files, callback, isAccepted) {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n var _traverseFileTree = function _traverseFileTree(item, path) {\n // eslint-disable-next-line no-param-reassign\n item.path = path || '';\n if (item.isFile) {\n item.file(function (file) {\n if (isAccepted(file)) {\n // https://github.com/ant-design/ant-design/issues/16426\n if (item.fullPath && !file.webkitRelativePath) {\n Object.defineProperties(file, {\n webkitRelativePath: {\n writable: true\n }\n }); // eslint-disable-next-line no-param-reassign\n\n file.webkitRelativePath = item.fullPath.replace(/^\\//, '');\n Object.defineProperties(file, {\n webkitRelativePath: {\n writable: false\n }\n });\n }\n callback([file]);\n }\n });\n } else if (item.isDirectory) {\n loopFiles(item, function (entries) {\n entries.forEach(function (entryItem) {\n _traverseFileTree(entryItem, \"\".concat(path).concat(item.name, \"/\"));\n });\n });\n }\n };\n files.forEach(function (file) {\n _traverseFileTree(file.webkitGetAsEntry());\n });\n};\nexport default traverseFileTree;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _regeneratorRuntime from \"@babel/runtime/helpers/esm/regeneratorRuntime\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _asyncToGenerator from \"@babel/runtime/helpers/esm/asyncToGenerator\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nvar _excluded = [\"component\", \"prefixCls\", \"className\", \"disabled\", \"id\", \"style\", \"multiple\", \"accept\", \"capture\", \"children\", \"directory\", \"openFileDialogOnClick\", \"onMouseEnter\", \"onMouseLeave\"];\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nimport defaultRequest from './request';\nimport getUid from './uid';\nimport attrAccept from './attr-accept';\nimport traverseFileTree from './traverseFileTree';\nvar AjaxUploader = /*#__PURE__*/function (_Component) {\n _inherits(AjaxUploader, _Component);\n var _super = _createSuper(AjaxUploader);\n function AjaxUploader() {\n var _this;\n _classCallCheck(this, AjaxUploader);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _this.state = {\n uid: getUid()\n };\n _this.reqs = {};\n _this.fileInput = void 0;\n _this._isMounted = void 0;\n _this.onChange = function (e) {\n var _this$props = _this.props,\n accept = _this$props.accept,\n directory = _this$props.directory;\n var files = e.target.files;\n var acceptedFiles = _toConsumableArray(files).filter(function (file) {\n return !directory || attrAccept(file, accept);\n });\n _this.uploadFiles(acceptedFiles);\n _this.reset();\n };\n _this.onClick = function (e) {\n var el = _this.fileInput;\n if (!el) {\n return;\n }\n var _this$props2 = _this.props,\n children = _this$props2.children,\n onClick = _this$props2.onClick;\n if (children && children.type === 'button') {\n var parent = el.parentNode;\n parent.focus();\n parent.querySelector('button').blur();\n }\n el.click();\n if (onClick) {\n onClick(e);\n }\n };\n _this.onKeyDown = function (e) {\n if (e.key === 'Enter') {\n _this.onClick(e);\n }\n };\n _this.onFileDrop = function (e) {\n var multiple = _this.props.multiple;\n e.preventDefault();\n if (e.type === 'dragover') {\n return;\n }\n if (_this.props.directory) {\n traverseFileTree(Array.prototype.slice.call(e.dataTransfer.items), _this.uploadFiles, function (_file) {\n return attrAccept(_file, _this.props.accept);\n });\n } else {\n var files = _toConsumableArray(e.dataTransfer.files).filter(function (file) {\n return attrAccept(file, _this.props.accept);\n });\n if (multiple === false) {\n files = files.slice(0, 1);\n }\n _this.uploadFiles(files);\n }\n };\n _this.uploadFiles = function (files) {\n var originFiles = _toConsumableArray(files);\n var postFiles = originFiles.map(function (file) {\n // eslint-disable-next-line no-param-reassign\n file.uid = getUid();\n return _this.processFile(file, originFiles);\n }); // Batch upload files\n\n Promise.all(postFiles).then(function (fileList) {\n var onBatchStart = _this.props.onBatchStart;\n onBatchStart === null || onBatchStart === void 0 ? void 0 : onBatchStart(fileList.map(function (_ref) {\n var origin = _ref.origin,\n parsedFile = _ref.parsedFile;\n return {\n file: origin,\n parsedFile: parsedFile\n };\n }));\n fileList.filter(function (file) {\n return file.parsedFile !== null;\n }).forEach(function (file) {\n _this.post(file);\n });\n });\n };\n _this.processFile = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(file, fileList) {\n var beforeUpload, transformedFile, action, mergedAction, data, mergedData, parsedData, parsedFile, mergedParsedFile;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n beforeUpload = _this.props.beforeUpload;\n transformedFile = file;\n if (!beforeUpload) {\n _context.next = 14;\n break;\n }\n _context.prev = 3;\n _context.next = 6;\n return beforeUpload(file, fileList);\n case 6:\n transformedFile = _context.sent;\n _context.next = 12;\n break;\n case 9:\n _context.prev = 9;\n _context.t0 = _context[\"catch\"](3);\n // Rejection will also trade as false\n transformedFile = false;\n case 12:\n if (!(transformedFile === false)) {\n _context.next = 14;\n break;\n }\n return _context.abrupt(\"return\", {\n origin: file,\n parsedFile: null,\n action: null,\n data: null\n });\n case 14:\n // Get latest action\n action = _this.props.action;\n if (!(typeof action === 'function')) {\n _context.next = 21;\n break;\n }\n _context.next = 18;\n return action(file);\n case 18:\n mergedAction = _context.sent;\n _context.next = 22;\n break;\n case 21:\n mergedAction = action;\n case 22:\n // Get latest data\n data = _this.props.data;\n if (!(typeof data === 'function')) {\n _context.next = 29;\n break;\n }\n _context.next = 26;\n return data(file);\n case 26:\n mergedData = _context.sent;\n _context.next = 30;\n break;\n case 29:\n mergedData = data;\n case 30:\n parsedData =\n // string type is from legacy `transformFile`.\n // Not sure if this will work since no related test case works with it\n (_typeof(transformedFile) === 'object' || typeof transformedFile === 'string') && transformedFile ? transformedFile : file;\n if (parsedData instanceof File) {\n parsedFile = parsedData;\n } else {\n parsedFile = new File([parsedData], file.name, {\n type: file.type\n });\n }\n mergedParsedFile = parsedFile;\n mergedParsedFile.uid = file.uid;\n return _context.abrupt(\"return\", {\n origin: file,\n data: mergedData,\n parsedFile: mergedParsedFile,\n action: mergedAction\n });\n case 35:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, null, [[3, 9]]);\n }));\n return function (_x, _x2) {\n return _ref2.apply(this, arguments);\n };\n }();\n _this.saveFileInput = function (node) {\n _this.fileInput = node;\n };\n return _this;\n }\n _createClass(AjaxUploader, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this._isMounted = true;\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this._isMounted = false;\n this.abort();\n }\n }, {\n key: \"post\",\n value: function post(_ref3) {\n var _this2 = this;\n var data = _ref3.data,\n origin = _ref3.origin,\n action = _ref3.action,\n parsedFile = _ref3.parsedFile;\n if (!this._isMounted) {\n return;\n }\n var _this$props3 = this.props,\n onStart = _this$props3.onStart,\n customRequest = _this$props3.customRequest,\n name = _this$props3.name,\n headers = _this$props3.headers,\n withCredentials = _this$props3.withCredentials,\n method = _this$props3.method;\n var uid = origin.uid;\n var request = customRequest || defaultRequest;\n var requestOption = {\n action: action,\n filename: name,\n data: data,\n file: parsedFile,\n headers: headers,\n withCredentials: withCredentials,\n method: method || 'post',\n onProgress: function onProgress(e) {\n var onProgress = _this2.props.onProgress;\n onProgress === null || onProgress === void 0 ? void 0 : onProgress(e, parsedFile);\n },\n onSuccess: function onSuccess(ret, xhr) {\n var onSuccess = _this2.props.onSuccess;\n onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess(ret, parsedFile, xhr);\n delete _this2.reqs[uid];\n },\n onError: function onError(err, ret) {\n var onError = _this2.props.onError;\n onError === null || onError === void 0 ? void 0 : onError(err, ret, parsedFile);\n delete _this2.reqs[uid];\n }\n };\n onStart(origin);\n this.reqs[uid] = request(requestOption);\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.setState({\n uid: getUid()\n });\n }\n }, {\n key: \"abort\",\n value: function abort(file) {\n var reqs = this.reqs;\n if (file) {\n var uid = file.uid ? file.uid : file;\n if (reqs[uid] && reqs[uid].abort) {\n reqs[uid].abort();\n }\n delete reqs[uid];\n } else {\n Object.keys(reqs).forEach(function (uid) {\n if (reqs[uid] && reqs[uid].abort) {\n reqs[uid].abort();\n }\n delete reqs[uid];\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _classNames;\n var _this$props4 = this.props,\n Tag = _this$props4.component,\n prefixCls = _this$props4.prefixCls,\n className = _this$props4.className,\n disabled = _this$props4.disabled,\n id = _this$props4.id,\n style = _this$props4.style,\n multiple = _this$props4.multiple,\n accept = _this$props4.accept,\n capture = _this$props4.capture,\n children = _this$props4.children,\n directory = _this$props4.directory,\n openFileDialogOnClick = _this$props4.openFileDialogOnClick,\n onMouseEnter = _this$props4.onMouseEnter,\n onMouseLeave = _this$props4.onMouseLeave,\n otherProps = _objectWithoutProperties(_this$props4, _excluded);\n var cls = classNames((_classNames = {}, _defineProperty(_classNames, prefixCls, true), _defineProperty(_classNames, \"\".concat(prefixCls, \"-disabled\"), disabled), _defineProperty(_classNames, className, className), _classNames)); // because input don't have directory/webkitdirectory type declaration\n\n var dirProps = directory ? {\n directory: 'directory',\n webkitdirectory: 'webkitdirectory'\n } : {};\n var events = disabled ? {} : {\n onClick: openFileDialogOnClick ? this.onClick : function () {},\n onKeyDown: openFileDialogOnClick ? this.onKeyDown : function () {},\n onMouseEnter: onMouseEnter,\n onMouseLeave: onMouseLeave,\n onDrop: this.onFileDrop,\n onDragOver: this.onFileDrop,\n tabIndex: '0'\n };\n return /*#__PURE__*/React.createElement(Tag, _extends({}, events, {\n className: cls,\n role: \"button\",\n style: style\n }), /*#__PURE__*/React.createElement(\"input\", _extends({}, pickAttrs(otherProps, {\n aria: true,\n data: true\n }), {\n id: id,\n type: \"file\",\n ref: this.saveFileInput,\n onClick: function onClick(e) {\n return e.stopPropagation();\n } // https://github.com/ant-design/ant-design/issues/19948\n ,\n\n key: this.state.uid,\n style: {\n display: 'none'\n },\n accept: accept\n }, dirProps, {\n multiple: multiple,\n onChange: this.onChange\n }, capture != null ? {\n capture: capture\n } : {})), children);\n }\n }]);\n return AjaxUploader;\n}(Component);\nexport default AjaxUploader;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\n\n/* eslint react/prop-types:0 */\nimport React, { Component } from 'react';\nimport AjaxUpload from './AjaxUploader';\nfunction empty() {}\nvar Upload = /*#__PURE__*/function (_Component) {\n _inherits(Upload, _Component);\n var _super = _createSuper(Upload);\n function Upload() {\n var _this;\n _classCallCheck(this, Upload);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _this.uploader = void 0;\n _this.saveUploader = function (node) {\n _this.uploader = node;\n };\n return _this;\n }\n _createClass(Upload, [{\n key: \"abort\",\n value: function abort(file) {\n this.uploader.abort(file);\n }\n }, {\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/React.createElement(AjaxUpload, _extends({}, this.props, {\n ref: this.saveUploader\n }));\n }\n }]);\n return Upload;\n}(Component);\nUpload.defaultProps = {\n component: 'span',\n prefixCls: 'rc-upload',\n data: {},\n headers: {},\n name: 'file',\n multipart: false,\n onStart: empty,\n onError: empty,\n onSuccess: empty,\n multiple: false,\n beforeUpload: null,\n customRequest: null,\n withCredentials: false,\n openFileDialogOnClick: true\n};\nexport default Upload;","import Upload from './Upload';\nexport default Upload;","import * as React from 'react';\nvar DisabledContext = /*#__PURE__*/React.createContext(false);\nexport var DisabledContextProvider = function DisabledContextProvider(_ref) {\n var children = _ref.children,\n disabled = _ref.disabled;\n var originDisabled = React.useContext(DisabledContext);\n return /*#__PURE__*/React.createElement(DisabledContext.Provider, {\n value: disabled !== null && disabled !== void 0 ? disabled : originDisabled\n }, children);\n};\nexport default DisabledContext;","import { createContext } from 'react';\nvar LocaleContext = /*#__PURE__*/createContext(undefined);\nexport default LocaleContext;","export default {\n // Options.jsx\n items_per_page: '/ page',\n jump_to: 'Go to',\n jump_to_confirm: 'confirm',\n page: 'Page',\n // Pagination.jsx\n prev_page: 'Previous Page',\n next_page: 'Next Page',\n prev_5: 'Previous 5 Pages',\n next_5: 'Next 5 Pages',\n prev_3: 'Previous 3 Pages',\n next_3: 'Next 3 Pages',\n page_size: 'Page Size'\n};","var locale = {\n locale: 'en_US',\n today: 'Today',\n now: 'Now',\n backToToday: 'Back to today',\n ok: 'OK',\n clear: 'Clear',\n month: 'Month',\n year: 'Year',\n timeSelect: 'select time',\n dateSelect: 'select date',\n weekSelect: 'Choose a week',\n monthSelect: 'Choose a month',\n yearSelect: 'Choose a year',\n decadeSelect: 'Choose a decade',\n yearFormat: 'YYYY',\n dateFormat: 'M/D/YYYY',\n dayFormat: 'D',\n dateTimeFormat: 'M/D/YYYY HH:mm:ss',\n monthBeforeYear: true,\n previousMonth: 'Previous month (PageUp)',\n nextMonth: 'Next month (PageDown)',\n previousYear: 'Last year (Control + left)',\n nextYear: 'Next year (Control + right)',\n previousDecade: 'Last decade',\n nextDecade: 'Next decade',\n previousCentury: 'Last century',\n nextCentury: 'Next century'\n};\nexport default locale;","var locale = {\n placeholder: 'Select time',\n rangePlaceholder: ['Start time', 'End time']\n};\nexport default locale;","import CalendarLocale from \"rc-picker/es/locale/en_US\";\nimport TimePickerLocale from '../../time-picker/locale/en_US';\n// Merge into a locale object\nvar locale = {\n lang: Object.assign({\n placeholder: 'Select date',\n yearPlaceholder: 'Select year',\n quarterPlaceholder: 'Select quarter',\n monthPlaceholder: 'Select month',\n weekPlaceholder: 'Select week',\n rangePlaceholder: ['Start date', 'End date'],\n rangeYearPlaceholder: ['Start year', 'End year'],\n rangeQuarterPlaceholder: ['Start quarter', 'End quarter'],\n rangeMonthPlaceholder: ['Start month', 'End month'],\n rangeWeekPlaceholder: ['Start week', 'End week']\n }, CalendarLocale),\n timePickerLocale: Object.assign({}, TimePickerLocale)\n};\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\nexport default locale;","/* eslint-disable no-template-curly-in-string */\nimport Pagination from \"rc-pagination/es/locale/en_US\";\nimport Calendar from '../calendar/locale/en_US';\nimport DatePicker from '../date-picker/locale/en_US';\nimport TimePicker from '../time-picker/locale/en_US';\nvar typeTemplate = '${label} is not a valid ${type}';\nvar localeValues = {\n locale: 'en',\n Pagination: Pagination,\n DatePicker: DatePicker,\n TimePicker: TimePicker,\n Calendar: Calendar,\n global: {\n placeholder: 'Please select'\n },\n Table: {\n filterTitle: 'Filter menu',\n filterConfirm: 'OK',\n filterReset: 'Reset',\n filterEmptyText: 'No filters',\n filterCheckall: 'Select all items',\n filterSearchPlaceholder: 'Search in filters',\n emptyText: 'No data',\n selectAll: 'Select current page',\n selectInvert: 'Invert current page',\n selectNone: 'Clear all data',\n selectionAll: 'Select all data',\n sortTitle: 'Sort',\n expand: 'Expand row',\n collapse: 'Collapse row',\n triggerDesc: 'Click to sort descending',\n triggerAsc: 'Click to sort ascending',\n cancelSort: 'Click to cancel sorting'\n },\n Tour: {\n Next: 'Next',\n Previous: 'Previous',\n Finish: 'Finish'\n },\n Modal: {\n okText: 'OK',\n cancelText: 'Cancel',\n justOkText: 'OK'\n },\n Popconfirm: {\n okText: 'OK',\n cancelText: 'Cancel'\n },\n Transfer: {\n titles: ['', ''],\n searchPlaceholder: 'Search here',\n itemUnit: 'item',\n itemsUnit: 'items',\n remove: 'Remove',\n selectCurrent: 'Select current page',\n removeCurrent: 'Remove current page',\n selectAll: 'Select all data',\n removeAll: 'Remove all data',\n selectInvert: 'Invert current page'\n },\n Upload: {\n uploading: 'Uploading...',\n removeFile: 'Remove file',\n uploadError: 'Upload error',\n previewFile: 'Preview file',\n downloadFile: 'Download file'\n },\n Empty: {\n description: 'No data'\n },\n Icon: {\n icon: 'icon'\n },\n Text: {\n edit: 'Edit',\n copy: 'Copy',\n copied: 'Copied',\n expand: 'Expand'\n },\n PageHeader: {\n back: 'Back'\n },\n Form: {\n optional: '(optional)',\n defaultValidateMessages: {\n default: 'Field validation error for ${label}',\n required: 'Please enter ${label}',\n enum: '${label} must be one of [${enum}]',\n whitespace: '${label} cannot be a blank character',\n date: {\n format: '${label} date format is invalid',\n parse: '${label} cannot be converted to a date',\n invalid: '${label} is an invalid date'\n },\n types: {\n string: typeTemplate,\n method: typeTemplate,\n array: typeTemplate,\n object: typeTemplate,\n number: typeTemplate,\n date: typeTemplate,\n boolean: typeTemplate,\n integer: typeTemplate,\n float: typeTemplate,\n regexp: typeTemplate,\n email: typeTemplate,\n url: typeTemplate,\n hex: typeTemplate\n },\n string: {\n len: '${label} must be ${len} characters',\n min: '${label} must be at least ${min} characters',\n max: '${label} must be up to ${max} characters',\n range: '${label} must be between ${min}-${max} characters'\n },\n number: {\n len: '${label} must be equal to ${len}',\n min: '${label} must be minimum ${min}',\n max: '${label} must be maximum ${max}',\n range: '${label} must be between ${min}-${max}'\n },\n array: {\n len: 'Must be ${len} ${label}',\n min: 'At least ${min} ${label}',\n max: 'At most ${max} ${label}',\n range: 'The amount of ${label} must be between ${min}-${max}'\n },\n pattern: {\n mismatch: '${label} does not match the pattern ${pattern}'\n }\n }\n },\n Image: {\n preview: 'Preview'\n },\n QRCode: {\n expired: 'QR code expired',\n refresh: 'Refresh'\n },\n ColorPicker: {\n presetEmpty: 'Empty'\n }\n};\nexport default localeValues;","import * as React from 'react';\nimport LocaleContext from './context';\nimport defaultLocaleData from './en_US';\nvar useLocale = function useLocale(componentName, defaultLocale) {\n var fullLocale = React.useContext(LocaleContext);\n var getLocale = React.useMemo(function () {\n var _a;\n var locale = defaultLocale || defaultLocaleData[componentName];\n var localeFromContext = (_a = fullLocale === null || fullLocale === void 0 ? void 0 : fullLocale[componentName]) !== null && _a !== void 0 ? _a : {};\n return Object.assign(Object.assign({}, typeof locale === 'function' ? locale() : locale), localeFromContext || {});\n }, [componentName, defaultLocale, fullLocale]);\n var getLocaleCode = React.useMemo(function () {\n var localeCode = fullLocale === null || fullLocale === void 0 ? void 0 : fullLocale.locale;\n // Had use LocaleProvide but didn't set locale\n if ((fullLocale === null || fullLocale === void 0 ? void 0 : fullLocale.exist) && !localeCode) {\n return defaultLocaleData.locale;\n }\n return localeCode;\n }, [fullLocale]);\n return [getLocale, getLocaleCode];\n};\nexport default useLocale;","// This icon file is generated automatically.\nvar FileTwoTone = {\n \"icon\": function render(primaryColor, secondaryColor) {\n return {\n \"tag\": \"svg\",\n \"attrs\": {\n \"viewBox\": \"64 64 896 896\",\n \"focusable\": \"false\"\n },\n \"children\": [{\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M534 352V136H232v752h560V394H576a42 42 0 01-42-42z\",\n \"fill\": secondaryColor\n }\n }, {\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0042 42h216v494z\",\n \"fill\": primaryColor\n }\n }]\n };\n },\n \"name\": \"file\",\n \"theme\": \"twotone\"\n};\nexport default FileTwoTone;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport FileTwoToneSvg from \"@ant-design/icons-svg/es/asn/FileTwoTone\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar FileTwoTone = function FileTwoTone(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: FileTwoToneSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n FileTwoTone.displayName = 'FileTwoTone';\n}\nexport default /*#__PURE__*/React.forwardRef(FileTwoTone);","// This icon file is generated automatically.\nvar LoadingOutlined = {\n \"icon\": {\n \"tag\": \"svg\",\n \"attrs\": {\n \"viewBox\": \"0 0 1024 1024\",\n \"focusable\": \"false\"\n },\n \"children\": [{\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z\"\n }\n }]\n },\n \"name\": \"loading\",\n \"theme\": \"outlined\"\n};\nexport default LoadingOutlined;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport LoadingOutlinedSvg from \"@ant-design/icons-svg/es/asn/LoadingOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar LoadingOutlined = function LoadingOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: LoadingOutlinedSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n LoadingOutlined.displayName = 'LoadingOutlined';\n}\nexport default /*#__PURE__*/React.forwardRef(LoadingOutlined);","// This icon file is generated automatically.\nvar PaperClipOutlined = {\n \"icon\": {\n \"tag\": \"svg\",\n \"attrs\": {\n \"viewBox\": \"64 64 896 896\",\n \"focusable\": \"false\"\n },\n \"children\": [{\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M779.3 196.6c-94.2-94.2-247.6-94.2-341.7 0l-261 260.8c-1.7 1.7-2.6 4-2.6 6.4s.9 4.7 2.6 6.4l36.9 36.9a9 9 0 0012.7 0l261-260.8c32.4-32.4 75.5-50.2 121.3-50.2s88.9 17.8 121.2 50.2c32.4 32.4 50.2 75.5 50.2 121.2 0 45.8-17.8 88.8-50.2 121.2l-266 265.9-43.1 43.1c-40.3 40.3-105.8 40.3-146.1 0-19.5-19.5-30.2-45.4-30.2-73s10.7-53.5 30.2-73l263.9-263.8c6.7-6.6 15.5-10.3 24.9-10.3h.1c9.4 0 18.1 3.7 24.7 10.3 6.7 6.7 10.3 15.5 10.3 24.9 0 9.3-3.7 18.1-10.3 24.7L372.4 653c-1.7 1.7-2.6 4-2.6 6.4s.9 4.7 2.6 6.4l36.9 36.9a9 9 0 0012.7 0l215.6-215.6c19.9-19.9 30.8-46.3 30.8-74.4s-11-54.6-30.8-74.4c-41.1-41.1-107.9-41-149 0L463 364 224.8 602.1A172.22 172.22 0 00174 724.8c0 46.3 18.1 89.8 50.8 122.5 33.9 33.8 78.3 50.7 122.7 50.7 44.4 0 88.8-16.9 122.6-50.7l309.2-309C824.8 492.7 850 432 850 367.5c.1-64.6-25.1-125.3-70.7-170.9z\"\n }\n }]\n },\n \"name\": \"paper-clip\",\n \"theme\": \"outlined\"\n};\nexport default PaperClipOutlined;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport PaperClipOutlinedSvg from \"@ant-design/icons-svg/es/asn/PaperClipOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar PaperClipOutlined = function PaperClipOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: PaperClipOutlinedSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n PaperClipOutlined.displayName = 'PaperClipOutlined';\n}\nexport default /*#__PURE__*/React.forwardRef(PaperClipOutlined);","// This icon file is generated automatically.\nvar PictureTwoTone = {\n \"icon\": function render(primaryColor, secondaryColor) {\n return {\n \"tag\": \"svg\",\n \"attrs\": {\n \"viewBox\": \"64 64 896 896\",\n \"focusable\": \"false\"\n },\n \"children\": [{\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 632H136v-39.9l138.5-164.3 150.1 178L658.1 489 888 761.6V792zm0-129.8L664.2 396.8c-3.2-3.8-9-3.8-12.2 0L424.6 666.4l-144-170.7c-3.2-3.8-9-3.8-12.2 0L136 652.7V232h752v430.2z\",\n \"fill\": primaryColor\n }\n }, {\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M424.6 765.8l-150.1-178L136 752.1V792h752v-30.4L658.1 489z\",\n \"fill\": secondaryColor\n }\n }, {\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M136 652.7l132.4-157c3.2-3.8 9-3.8 12.2 0l144 170.7L652 396.8c3.2-3.8 9-3.8 12.2 0L888 662.2V232H136v420.7zM304 280a88 88 0 110 176 88 88 0 010-176z\",\n \"fill\": secondaryColor\n }\n }, {\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M276 368a28 28 0 1056 0 28 28 0 10-56 0z\",\n \"fill\": secondaryColor\n }\n }, {\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M304 456a88 88 0 100-176 88 88 0 000 176zm0-116c15.5 0 28 12.5 28 28s-12.5 28-28 28-28-12.5-28-28 12.5-28 28-28z\",\n \"fill\": primaryColor\n }\n }]\n };\n },\n \"name\": \"picture\",\n \"theme\": \"twotone\"\n};\nexport default PictureTwoTone;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport PictureTwoToneSvg from \"@ant-design/icons-svg/es/asn/PictureTwoTone\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar PictureTwoTone = function PictureTwoTone(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: PictureTwoToneSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n PictureTwoTone.displayName = 'PictureTwoTone';\n}\nexport default /*#__PURE__*/React.forwardRef(PictureTwoTone);","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport * as React from 'react';\nexport default function useForceUpdate() {\n var _React$useReducer = React.useReducer(function (x) {\n return x + 1;\n }, 0),\n _React$useReducer2 = _slicedToArray(_React$useReducer, 2),\n forceUpdate = _React$useReducer2[1];\n return forceUpdate;\n}","import _regeneratorRuntime from \"@babel/runtime/helpers/esm/regeneratorRuntime\";\nimport _asyncToGenerator from \"@babel/runtime/helpers/esm/asyncToGenerator\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as ReactDOM from 'react-dom';\n// Let compiler not to search module usage\nvar fullClone = _objectSpread({}, ReactDOM);\nvar version = fullClone.version,\n reactRender = fullClone.render,\n unmountComponentAtNode = fullClone.unmountComponentAtNode;\nvar createRoot;\ntry {\n var mainVersion = Number((version || '').split('.')[0]);\n if (mainVersion >= 18) {\n createRoot = fullClone.createRoot;\n }\n} catch (e) {\n // Do nothing;\n}\nfunction toggleWarning(skip) {\n var __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = fullClone.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n if (__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED && _typeof(__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED) === 'object') {\n __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.usingClientEntryPoint = skip;\n }\n}\nvar MARK = '__rc_react_root__';\n\n// ========================== Render ==========================\n\nfunction modernRender(node, container) {\n toggleWarning(true);\n var root = container[MARK] || createRoot(container);\n toggleWarning(false);\n root.render(node);\n container[MARK] = root;\n}\nfunction legacyRender(node, container) {\n reactRender(node, container);\n}\n\n/** @private Test usage. Not work in prod */\nexport function _r(node, container) {\n if (process.env.NODE_ENV !== 'production') {\n return legacyRender(node, container);\n }\n}\nexport function render(node, container) {\n if (createRoot) {\n modernRender(node, container);\n return;\n }\n legacyRender(node, container);\n}\n\n// ========================= Unmount ==========================\nfunction modernUnmount(_x) {\n return _modernUnmount.apply(this, arguments);\n}\nfunction _modernUnmount() {\n _modernUnmount = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(container) {\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n return _context.abrupt(\"return\", Promise.resolve().then(function () {\n var _container$MARK;\n (_container$MARK = container[MARK]) === null || _container$MARK === void 0 ? void 0 : _container$MARK.unmount();\n delete container[MARK];\n }));\n case 1:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return _modernUnmount.apply(this, arguments);\n}\nfunction legacyUnmount(container) {\n unmountComponentAtNode(container);\n}\n\n/** @private Test usage. Not work in prod */\nexport function _u(container) {\n if (process.env.NODE_ENV !== 'production') {\n return legacyUnmount(container);\n }\n}\nexport function unmount(_x2) {\n return _unmount.apply(this, arguments);\n}\nfunction _unmount() {\n _unmount = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(container) {\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n if (!(createRoot !== undefined)) {\n _context2.next = 2;\n break;\n }\n return _context2.abrupt(\"return\", modernUnmount(container));\n case 2:\n legacyUnmount(container);\n case 3:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }));\n return _unmount.apply(this, arguments);\n}","export default (function (element) {\n if (!element) {\n return false;\n }\n if (element instanceof Element) {\n if (element.offsetParent) {\n return true;\n }\n if (element.getBBox) {\n var _getBBox = element.getBBox(),\n width = _getBBox.width,\n height = _getBBox.height;\n if (width || height) {\n return true;\n }\n }\n if (element.getBoundingClientRect) {\n var _element$getBoundingC = element.getBoundingClientRect(),\n _width = _element$getBoundingC.width,\n _height = _element$getBoundingC.height;\n if (_width || _height) {\n return true;\n }\n }\n }\n return false;\n});","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { genComponentStyleHook } from '../../theme/internal';\nvar genWaveStyle = function genWaveStyle(token) {\n var componentCls = token.componentCls,\n colorPrimary = token.colorPrimary;\n return _defineProperty({}, componentCls, {\n position: 'absolute',\n background: 'transparent',\n pointerEvents: 'none',\n boxSizing: 'border-box',\n color: \"var(--wave-color, \".concat(colorPrimary, \")\"),\n boxShadow: \"0 0 0 0 currentcolor\",\n opacity: 0.2,\n // =================== Motion ===================\n '&.wave-motion-appear': {\n transition: [\"box-shadow 0.4s \".concat(token.motionEaseOutCirc), \"opacity 2s \".concat(token.motionEaseOutCirc)].join(','),\n '&-active': {\n boxShadow: \"0 0 0 6px currentcolor\",\n opacity: 0\n },\n '&.wave-quick': {\n transition: [\"box-shadow 0.3s \".concat(token.motionEaseInOut), \"opacity 0.35s \".concat(token.motionEaseInOut)].join(',')\n }\n }\n });\n};\nexport default genComponentStyleHook('Wave', function (token) {\n return [genWaveStyle(token)];\n});","export function isNotGrey(color) {\n // eslint-disable-next-line no-useless-escape\n var match = (color || '').match(/rgba?\\((\\d*), (\\d*), (\\d*)(, [\\d.]*)?\\)/);\n if (match && match[1] && match[2] && match[3]) {\n return !(match[1] === match[2] && match[2] === match[3]);\n }\n return true;\n}\nexport function isValidWaveColor(color) {\n return color && color !== '#fff' && color !== '#ffffff' && color !== 'rgb(255, 255, 255)' && color !== 'rgba(255, 255, 255, 1)' && isNotGrey(color) && !/rgba\\((?:\\d*, ){3}0\\)/.test(color) &&\n // any transparent rgba color\n color !== 'transparent';\n}\nexport function getTargetWaveColor(node) {\n var _getComputedStyle = getComputedStyle(node),\n borderTopColor = _getComputedStyle.borderTopColor,\n borderColor = _getComputedStyle.borderColor,\n backgroundColor = _getComputedStyle.backgroundColor;\n if (isValidWaveColor(borderTopColor)) {\n return borderTopColor;\n }\n if (isValidWaveColor(borderColor)) {\n return borderColor;\n }\n if (isValidWaveColor(backgroundColor)) {\n return backgroundColor;\n }\n return null;\n}","export var TARGET_CLS = 'ant-wave-target';","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport { render, unmount } from \"rc-util/es/React/render\";\nimport raf from \"rc-util/es/raf\";\nimport * as React from 'react';\nimport { getTargetWaveColor } from './util';\nimport { TARGET_CLS } from './interface';\nfunction validateNum(value) {\n return Number.isNaN(value) ? 0 : value;\n}\nvar WaveEffect = function WaveEffect(props) {\n var className = props.className,\n target = props.target,\n component = props.component;\n var divRef = React.useRef(null);\n var _React$useState = React.useState(null),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n color = _React$useState2[0],\n setWaveColor = _React$useState2[1];\n var _React$useState3 = React.useState([]),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n borderRadius = _React$useState4[0],\n setBorderRadius = _React$useState4[1];\n var _React$useState5 = React.useState(0),\n _React$useState6 = _slicedToArray(_React$useState5, 2),\n left = _React$useState6[0],\n setLeft = _React$useState6[1];\n var _React$useState7 = React.useState(0),\n _React$useState8 = _slicedToArray(_React$useState7, 2),\n top = _React$useState8[0],\n setTop = _React$useState8[1];\n var _React$useState9 = React.useState(0),\n _React$useState10 = _slicedToArray(_React$useState9, 2),\n width = _React$useState10[0],\n setWidth = _React$useState10[1];\n var _React$useState11 = React.useState(0),\n _React$useState12 = _slicedToArray(_React$useState11, 2),\n height = _React$useState12[0],\n setHeight = _React$useState12[1];\n var _React$useState13 = React.useState(false),\n _React$useState14 = _slicedToArray(_React$useState13, 2),\n enabled = _React$useState14[0],\n setEnabled = _React$useState14[1];\n var waveStyle = {\n left: left,\n top: top,\n width: width,\n height: height,\n borderRadius: borderRadius.map(function (radius) {\n return \"\".concat(radius, \"px\");\n }).join(' ')\n };\n if (color) {\n waveStyle['--wave-color'] = color;\n }\n function syncPos() {\n var nodeStyle = getComputedStyle(target);\n // Get wave color from target\n setWaveColor(getTargetWaveColor(target));\n var isStatic = nodeStyle.position === 'static';\n // Rect\n var borderLeftWidth = nodeStyle.borderLeftWidth,\n borderTopWidth = nodeStyle.borderTopWidth;\n setLeft(isStatic ? target.offsetLeft : validateNum(-parseFloat(borderLeftWidth)));\n setTop(isStatic ? target.offsetTop : validateNum(-parseFloat(borderTopWidth)));\n setWidth(target.offsetWidth);\n setHeight(target.offsetHeight);\n // Get border radius\n var borderTopLeftRadius = nodeStyle.borderTopLeftRadius,\n borderTopRightRadius = nodeStyle.borderTopRightRadius,\n borderBottomLeftRadius = nodeStyle.borderBottomLeftRadius,\n borderBottomRightRadius = nodeStyle.borderBottomRightRadius;\n setBorderRadius([borderTopLeftRadius, borderTopRightRadius, borderBottomRightRadius, borderBottomLeftRadius].map(function (radius) {\n return validateNum(parseFloat(radius));\n }));\n }\n React.useEffect(function () {\n if (target) {\n // We need delay to check position here\n // since UI may change after click\n var id = raf(function () {\n syncPos();\n setEnabled(true);\n });\n // Add resize observer to follow size\n var resizeObserver;\n if (typeof ResizeObserver !== 'undefined') {\n resizeObserver = new ResizeObserver(syncPos);\n resizeObserver.observe(target);\n }\n return function () {\n raf.cancel(id);\n resizeObserver === null || resizeObserver === void 0 ? void 0 : resizeObserver.disconnect();\n };\n }\n }, []);\n if (!enabled) {\n return null;\n }\n var isSmallComponent = (component === 'Checkbox' || component === 'Radio') && (target === null || target === void 0 ? void 0 : target.classList.contains(TARGET_CLS));\n return /*#__PURE__*/React.createElement(CSSMotion, {\n visible: true,\n motionAppear: true,\n motionName: \"wave-motion\",\n motionDeadline: 5000,\n onAppearEnd: function onAppearEnd(_, event) {\n var _a;\n if (event.deadline || event.propertyName === 'opacity') {\n var holder = (_a = divRef.current) === null || _a === void 0 ? void 0 : _a.parentElement;\n unmount(holder).then(function () {\n holder === null || holder === void 0 ? void 0 : holder.remove();\n });\n }\n return false;\n }\n }, function (_ref) {\n var motionClassName = _ref.className;\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: divRef,\n className: classNames(className, {\n 'wave-quick': isSmallComponent\n }, motionClassName),\n style: waveStyle\n });\n });\n};\nvar showWaveEffect = function showWaveEffect(target, info) {\n var _a;\n var component = info.component;\n // Skip for unchecked checkbox\n if (component === 'Checkbox' && !((_a = target.querySelector('input')) === null || _a === void 0 ? void 0 : _a.checked)) {\n return;\n }\n // Create holder\n var holder = document.createElement('div');\n holder.style.position = 'absolute';\n holder.style.left = '0px';\n holder.style.top = '0px';\n target === null || target === void 0 ? void 0 : target.insertBefore(holder, target === null || target === void 0 ? void 0 : target.firstChild);\n render( /*#__PURE__*/React.createElement(WaveEffect, Object.assign({}, info, {\n target: target\n })), holder);\n};\nexport default showWaveEffect;","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport classNames from 'classnames';\nimport { composeRef, supportRef } from \"rc-util/es/ref\";\nimport isVisible from \"rc-util/es/Dom/isVisible\";\nimport React, { useContext, useRef } from 'react';\nimport { ConfigContext } from '../../config-provider';\nimport { cloneElement } from '../reactNode';\nimport useStyle from './style';\nimport useWave from './useWave';\nvar Wave = function Wave(props) {\n var children = props.children,\n disabled = props.disabled,\n component = props.component;\n var _useContext = useContext(ConfigContext),\n getPrefixCls = _useContext.getPrefixCls;\n var containerRef = useRef(null);\n // ============================== Style ===============================\n var prefixCls = getPrefixCls('wave');\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n hashId = _useStyle2[1];\n // =============================== Wave ===============================\n var showWave = useWave(containerRef, classNames(prefixCls, hashId), component);\n // ============================== Effect ==============================\n React.useEffect(function () {\n var node = containerRef.current;\n if (!node || node.nodeType !== 1 || disabled) {\n return;\n }\n // Click handler\n var onClick = function onClick(e) {\n // Fix radio button click twice\n if (!isVisible(e.target) ||\n // No need wave\n !node.getAttribute || node.getAttribute('disabled') || node.disabled || node.className.includes('disabled') || node.className.includes('-leave')) {\n return;\n }\n showWave(e);\n };\n // Bind events\n node.addEventListener('click', onClick, true);\n return function () {\n node.removeEventListener('click', onClick, true);\n };\n }, [disabled]);\n // ============================== Render ==============================\n if (! /*#__PURE__*/React.isValidElement(children)) {\n return children !== null && children !== void 0 ? children : null;\n }\n var ref = supportRef(children) ? composeRef(children.ref, containerRef) : containerRef;\n return cloneElement(children, {\n ref: ref\n });\n};\nif (process.env.NODE_ENV !== 'production') {\n Wave.displayName = 'Wave';\n}\nexport default Wave;","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport * as React from 'react';\nimport useEvent from \"rc-util/es/hooks/useEvent\";\nimport raf from \"rc-util/es/raf\";\nimport showWaveEffect from './WaveEffect';\nimport { ConfigContext } from '../../config-provider';\nimport useToken from '../../theme/useToken';\nimport { TARGET_CLS } from './interface';\nexport default function useWave(nodeRef, className, component) {\n var _React$useContext = React.useContext(ConfigContext),\n wave = _React$useContext.wave;\n var _useToken = useToken(),\n _useToken2 = _slicedToArray(_useToken, 3),\n token = _useToken2[1],\n hashId = _useToken2[2];\n var showWave = useEvent(function (event) {\n var node = nodeRef.current;\n if ((wave === null || wave === void 0 ? void 0 : wave.disabled) || !node) {\n return;\n }\n var targetNode = node.querySelector(\".\".concat(TARGET_CLS)) || node;\n var _ref = wave || {},\n showEffect = _ref.showEffect;\n // Customize wave effect\n (showEffect || showWaveEffect)(targetNode, {\n className: className,\n token: token,\n component: component,\n event: event,\n hashId: hashId\n });\n });\n var rafId = React.useRef();\n // Merge trigger event into one for each frame\n var showDebounceWave = function showDebounceWave(event) {\n raf.cancel(rafId.current);\n rafId.current = raf(function () {\n showWave(event);\n });\n };\n return showDebounceWave;\n}","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport toArray from \"rc-util/es/Children/toArray\";\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport useSize from '../config-provider/hooks/useSize';\nimport useStyle from './style';\nexport var SpaceCompactItemContext = /*#__PURE__*/React.createContext(null);\nexport var useCompactItemContext = function useCompactItemContext(prefixCls, direction) {\n var compactItemContext = React.useContext(SpaceCompactItemContext);\n var compactItemClassnames = React.useMemo(function () {\n var _classNames;\n if (!compactItemContext) {\n return '';\n }\n var compactDirection = compactItemContext.compactDirection,\n isFirstItem = compactItemContext.isFirstItem,\n isLastItem = compactItemContext.isLastItem;\n var separator = compactDirection === 'vertical' ? '-vertical-' : '-';\n return classNames(\"\".concat(prefixCls, \"-compact\").concat(separator, \"item\"), (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-compact\").concat(separator, \"first-item\"), isFirstItem), _defineProperty(_classNames, \"\".concat(prefixCls, \"-compact\").concat(separator, \"last-item\"), isLastItem), _defineProperty(_classNames, \"\".concat(prefixCls, \"-compact\").concat(separator, \"item-rtl\"), direction === 'rtl'), _classNames));\n }, [prefixCls, direction, compactItemContext]);\n return {\n compactSize: compactItemContext === null || compactItemContext === void 0 ? void 0 : compactItemContext.compactSize,\n compactDirection: compactItemContext === null || compactItemContext === void 0 ? void 0 : compactItemContext.compactDirection,\n compactItemClassnames: compactItemClassnames\n };\n};\nexport var NoCompactStyle = function NoCompactStyle(_ref) {\n var children = _ref.children;\n return /*#__PURE__*/React.createElement(SpaceCompactItemContext.Provider, {\n value: null\n }, children);\n};\nvar CompactItem = function CompactItem(_a) {\n var children = _a.children,\n otherProps = __rest(_a, [\"children\"]);\n return /*#__PURE__*/React.createElement(SpaceCompactItemContext.Provider, {\n value: otherProps\n }, children);\n};\nvar Compact = function Compact(props) {\n var _classNames2;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n directionConfig = _React$useContext.direction;\n var size = props.size,\n direction = props.direction,\n block = props.block,\n customizePrefixCls = props.prefixCls,\n className = props.className,\n rootClassName = props.rootClassName,\n children = props.children,\n restProps = __rest(props, [\"size\", \"direction\", \"block\", \"prefixCls\", \"className\", \"rootClassName\", \"children\"]);\n var mergedSize = useSize(function (ctx) {\n return size !== null && size !== void 0 ? size : ctx;\n });\n var prefixCls = getPrefixCls('space-compact', customizePrefixCls);\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n var clx = classNames(prefixCls, hashId, (_classNames2 = {}, _defineProperty(_classNames2, \"\".concat(prefixCls, \"-rtl\"), directionConfig === 'rtl'), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-block\"), block), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-vertical\"), direction === 'vertical'), _classNames2), className, rootClassName);\n var compactItemContext = React.useContext(SpaceCompactItemContext);\n var childNodes = toArray(children);\n var nodes = React.useMemo(function () {\n return childNodes.map(function (child, i) {\n var key = child && child.key || \"\".concat(prefixCls, \"-item-\").concat(i);\n return /*#__PURE__*/React.createElement(CompactItem, {\n key: key,\n compactSize: mergedSize,\n compactDirection: direction,\n isFirstItem: i === 0 && (!compactItemContext || (compactItemContext === null || compactItemContext === void 0 ? void 0 : compactItemContext.isFirstItem)),\n isLastItem: i === childNodes.length - 1 && (!compactItemContext || (compactItemContext === null || compactItemContext === void 0 ? void 0 : compactItemContext.isLastItem))\n }, child);\n });\n }, [size, childNodes, compactItemContext]);\n // =========================== Render ===========================\n if (childNodes.length === 0) {\n return null;\n }\n return wrapSSR( /*#__PURE__*/React.createElement(\"div\", Object.assign({\n className: clx\n }, restProps), nodes));\n};\nexport default Compact;","import React, { forwardRef } from 'react';\nimport classNames from 'classnames';\nvar IconWrapper = /*#__PURE__*/forwardRef(function (props, ref) {\n var className = props.className,\n style = props.style,\n children = props.children,\n prefixCls = props.prefixCls;\n var iconWrapperCls = classNames(\"\".concat(prefixCls, \"-icon\"), className);\n return /*#__PURE__*/React.createElement(\"span\", {\n ref: ref,\n className: iconWrapperCls,\n style: style\n }, children);\n});\nexport default IconWrapper;","import LoadingOutlined from \"@ant-design/icons/es/icons/LoadingOutlined\";\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport React, { forwardRef } from 'react';\nimport IconWrapper from './IconWrapper';\nvar InnerLoadingIcon = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var prefixCls = _ref.prefixCls,\n className = _ref.className,\n style = _ref.style,\n iconClassName = _ref.iconClassName;\n var mergedIconCls = classNames(\"\".concat(prefixCls, \"-loading-icon\"), className);\n return /*#__PURE__*/React.createElement(IconWrapper, {\n prefixCls: prefixCls,\n className: mergedIconCls,\n style: style,\n ref: ref\n }, /*#__PURE__*/React.createElement(LoadingOutlined, {\n className: iconClassName\n }));\n});\nvar getCollapsedWidth = function getCollapsedWidth() {\n return {\n width: 0,\n opacity: 0,\n transform: 'scale(0)'\n };\n};\nvar getRealWidth = function getRealWidth(node) {\n return {\n width: node.scrollWidth,\n opacity: 1,\n transform: 'scale(1)'\n };\n};\nvar LoadingIcon = function LoadingIcon(props) {\n var prefixCls = props.prefixCls,\n loading = props.loading,\n existIcon = props.existIcon,\n className = props.className,\n style = props.style;\n var visible = !!loading;\n if (existIcon) {\n return /*#__PURE__*/React.createElement(InnerLoadingIcon, {\n prefixCls: prefixCls,\n className: className,\n style: style\n });\n }\n return /*#__PURE__*/React.createElement(CSSMotion, {\n visible: visible,\n // We do not really use this motionName\n motionName: \"\".concat(prefixCls, \"-loading-icon-motion\"),\n removeOnLeave: true,\n onAppearStart: getCollapsedWidth,\n onAppearActive: getRealWidth,\n onEnterStart: getCollapsedWidth,\n onEnterActive: getRealWidth,\n onLeaveStart: getRealWidth,\n onLeaveActive: getCollapsedWidth\n }, function (_ref2, ref) {\n var motionCls = _ref2.className,\n motionStyle = _ref2.style;\n return /*#__PURE__*/React.createElement(InnerLoadingIcon, {\n prefixCls: prefixCls,\n className: className,\n style: Object.assign(Object.assign({}, style), motionStyle),\n ref: ref,\n iconClassName: motionCls\n });\n });\n};\nexport default LoadingIcon;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport warning from '../_util/warning';\nimport { ConfigContext } from '../config-provider';\nimport { useToken } from '../theme/internal';\nexport var GroupSizeContext = /*#__PURE__*/React.createContext(undefined);\nvar ButtonGroup = function ButtonGroup(props) {\n var _classNames;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n var customizePrefixCls = props.prefixCls,\n size = props.size,\n className = props.className,\n others = __rest(props, [\"prefixCls\", \"size\", \"className\"]);\n var prefixCls = getPrefixCls('btn-group', customizePrefixCls);\n var _useToken = useToken(),\n _useToken2 = _slicedToArray(_useToken, 3),\n hashId = _useToken2[2];\n var sizeCls = '';\n switch (size) {\n case 'large':\n sizeCls = 'lg';\n break;\n case 'small':\n sizeCls = 'sm';\n break;\n case 'middle':\n case undefined:\n break;\n default:\n process.env.NODE_ENV !== \"production\" ? warning(!size, 'Button.Group', 'Invalid prop `size`.') : void 0;\n }\n var classes = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(sizeCls), sizeCls), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _classNames), className, hashId);\n return /*#__PURE__*/React.createElement(GroupSizeContext.Provider, {\n value: size\n }, /*#__PURE__*/React.createElement(\"div\", Object.assign({}, others, {\n className: classes\n })));\n};\nexport default ButtonGroup;","import React from 'react';\nimport { cloneElement, isFragment } from '../_util/reactNode';\nvar rxTwoCNChar = /^[\\u4e00-\\u9fa5]{2}$/;\nexport var isTwoCNChar = rxTwoCNChar.test.bind(rxTwoCNChar);\nexport function isString(str) {\n return typeof str === 'string';\n}\nexport function isUnBorderedButtonType(type) {\n return type === 'text' || type === 'link';\n}\nfunction splitCNCharsBySpace(child, needInserted) {\n if (child === null || child === undefined) {\n return;\n }\n var SPACE = needInserted ? ' ' : '';\n if (typeof child !== 'string' && typeof child !== 'number' && isString(child.type) && isTwoCNChar(child.props.children)) {\n return cloneElement(child, {\n children: child.props.children.split('').join(SPACE)\n });\n }\n if (isString(child)) {\n return isTwoCNChar(child) ? /*#__PURE__*/React.createElement(\"span\", null, child.split('').join(SPACE)) : /*#__PURE__*/React.createElement(\"span\", null, child);\n }\n if (isFragment(child)) {\n return /*#__PURE__*/React.createElement(\"span\", null, child);\n }\n return child;\n}\nexport function spaceChildren(children, needInserted) {\n var isPrevChildPure = false;\n var childList = [];\n React.Children.forEach(children, function (child) {\n var type = typeof child;\n var isCurrentChildPure = type === 'string' || type === 'number';\n if (isPrevChildPure && isCurrentChildPure) {\n var lastIndex = childList.length - 1;\n var lastChild = childList[lastIndex];\n childList[lastIndex] = \"\".concat(lastChild).concat(child);\n } else {\n childList.push(child);\n }\n isPrevChildPure = isCurrentChildPure;\n });\n return React.Children.map(childList, function (child) {\n return splitCNCharsBySpace(child, needInserted);\n });\n}\nvar ButtonTypes = ['default', 'primary', 'dashed', 'link', 'text'];\nvar ButtonShapes = ['default', 'circle', 'round'];\nvar ButtonHTMLTypes = ['submit', 'button', 'reset'];","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\n// handle border collapse\nfunction compactItemBorder(token, parentCls, options) {\n var _ref2;\n var focusElCls = options.focusElCls,\n focus = options.focus,\n borderElCls = options.borderElCls;\n var childCombinator = borderElCls ? '> *' : '';\n var hoverEffects = ['hover', focus ? 'focus' : null, 'active'].filter(Boolean).map(function (n) {\n return \"&:\".concat(n, \" \").concat(childCombinator);\n }).join(',');\n return _ref2 = {}, _defineProperty(_ref2, \"&-item:not(\".concat(parentCls, \"-last-item)\"), {\n marginInlineEnd: -token.lineWidth\n }), _defineProperty(_ref2, '&-item', Object.assign(Object.assign(_defineProperty({}, hoverEffects, {\n zIndex: 2\n }), focusElCls ? _defineProperty({}, \"&\".concat(focusElCls), {\n zIndex: 2\n }) : {}), _defineProperty({}, \"&[disabled] \".concat(childCombinator), {\n zIndex: 0\n }))), _ref2;\n}\n// handle border-radius\nfunction compactItemBorderRadius(prefixCls, parentCls, options) {\n var _ref3;\n var borderElCls = options.borderElCls;\n var childCombinator = borderElCls ? \"> \".concat(borderElCls) : '';\n return _ref3 = {}, _defineProperty(_ref3, \"&-item:not(\".concat(parentCls, \"-first-item):not(\").concat(parentCls, \"-last-item) \").concat(childCombinator), {\n borderRadius: 0\n }), _defineProperty(_ref3, \"&-item:not(\".concat(parentCls, \"-last-item)\").concat(parentCls, \"-first-item\"), _defineProperty({}, \"& \".concat(childCombinator, \", &\").concat(prefixCls, \"-sm \").concat(childCombinator, \", &\").concat(prefixCls, \"-lg \").concat(childCombinator), {\n borderStartEndRadius: 0,\n borderEndEndRadius: 0\n })), _defineProperty(_ref3, \"&-item:not(\".concat(parentCls, \"-first-item)\").concat(parentCls, \"-last-item\"), _defineProperty({}, \"& \".concat(childCombinator, \", &\").concat(prefixCls, \"-sm \").concat(childCombinator, \", &\").concat(prefixCls, \"-lg \").concat(childCombinator), {\n borderStartStartRadius: 0,\n borderEndStartRadius: 0\n })), _ref3;\n}\nexport function genCompactItemStyle(token) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n focus: true\n };\n var componentCls = token.componentCls;\n var compactCls = \"\".concat(componentCls, \"-compact\");\n return _defineProperty({}, compactCls, Object.assign(Object.assign({}, compactItemBorder(token, compactCls, options)), compactItemBorderRadius(componentCls, compactCls, options)));\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction compactItemVerticalBorder(token, parentCls) {\n var _ref;\n return _ref = {}, _defineProperty(_ref, \"&-item:not(\".concat(parentCls, \"-last-item)\"), {\n marginBottom: -token.lineWidth\n }), _defineProperty(_ref, '&-item', {\n '&:hover,&:focus,&:active': {\n zIndex: 2\n },\n '&[disabled]': {\n zIndex: 0\n }\n }), _ref;\n}\nfunction compactItemBorderVerticalRadius(prefixCls, parentCls) {\n var _ref2;\n return _ref2 = {}, _defineProperty(_ref2, \"&-item:not(\".concat(parentCls, \"-first-item):not(\").concat(parentCls, \"-last-item)\"), {\n borderRadius: 0\n }), _defineProperty(_ref2, \"&-item\".concat(parentCls, \"-first-item:not(\").concat(parentCls, \"-last-item)\"), _defineProperty({}, \"&, &\".concat(prefixCls, \"-sm, &\").concat(prefixCls, \"-lg\"), {\n borderEndEndRadius: 0,\n borderEndStartRadius: 0\n })), _defineProperty(_ref2, \"&-item\".concat(parentCls, \"-last-item:not(\").concat(parentCls, \"-first-item)\"), _defineProperty({}, \"&, &\".concat(prefixCls, \"-sm, &\").concat(prefixCls, \"-lg\"), {\n borderStartStartRadius: 0,\n borderStartEndRadius: 0\n })), _ref2;\n}\nexport function genCompactItemVerticalStyle(token) {\n var compactCls = \"\".concat(token.componentCls, \"-compact-vertical\");\n return _defineProperty({}, compactCls, Object.assign(Object.assign({}, compactItemVerticalBorder(token, compactCls)), compactItemBorderVerticalRadius(token.componentCls, compactCls)));\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nvar genButtonBorderStyle = function genButtonBorderStyle(buttonTypeCls, borderColor) {\n return _defineProperty({}, \"> span, > \".concat(buttonTypeCls), {\n '&:not(:last-child)': _defineProperty({}, \"&, & > \".concat(buttonTypeCls), {\n '&:not(:disabled)': {\n borderInlineEndColor: borderColor\n }\n }),\n '&:not(:first-child)': _defineProperty({}, \"&, & > \".concat(buttonTypeCls), {\n '&:not(:disabled)': {\n borderInlineStartColor: borderColor\n }\n })\n });\n};\nvar genGroupStyle = function genGroupStyle(token) {\n var _componentCls, _ref2;\n var componentCls = token.componentCls,\n fontSize = token.fontSize,\n lineWidth = token.lineWidth,\n colorPrimaryHover = token.colorPrimaryHover,\n colorErrorHover = token.colorErrorHover;\n return _defineProperty({}, \"\".concat(componentCls, \"-group\"), [(_ref2 = {\n position: 'relative',\n display: 'inline-flex'\n }, _defineProperty(_ref2, \"> span, > \".concat(componentCls), {\n '&:not(:last-child)': _defineProperty({}, \"&, & > \".concat(componentCls), {\n borderStartEndRadius: 0,\n borderEndEndRadius: 0\n }),\n '&:not(:first-child)': _defineProperty({\n marginInlineStart: -lineWidth\n }, \"&, & > \".concat(componentCls), {\n borderStartStartRadius: 0,\n borderEndStartRadius: 0\n })\n }), _defineProperty(_ref2, componentCls, (_componentCls = {\n position: 'relative',\n zIndex: 1\n }, _defineProperty(_componentCls, \"&:hover,\\n &:focus,\\n &:active\", {\n zIndex: 2\n }), _defineProperty(_componentCls, '&[disabled]', {\n zIndex: 0\n }), _componentCls)), _defineProperty(_ref2, \"\".concat(componentCls, \"-icon-only\"), {\n fontSize: fontSize\n }), _ref2),\n // Border Color\n genButtonBorderStyle(\"\".concat(componentCls, \"-primary\"), colorPrimaryHover), genButtonBorderStyle(\"\".concat(componentCls, \"-danger\"), colorErrorHover)]);\n};\nexport default genGroupStyle;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { genFocusStyle } from '../../style';\nimport { genCompactItemStyle } from '../../style/compact-item';\nimport { genCompactItemVerticalStyle } from '../../style/compact-item-vertical';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport genGroupStyle from './group';\n// ============================== Shared ==============================\nvar genSharedButtonStyle = function genSharedButtonStyle(token) {\n var _componentCls;\n var componentCls = token.componentCls,\n iconCls = token.iconCls,\n buttonFontWeight = token.buttonFontWeight;\n return _defineProperty({}, componentCls, (_componentCls = {\n outline: 'none',\n position: 'relative',\n display: 'inline-block',\n fontWeight: buttonFontWeight,\n whiteSpace: 'nowrap',\n textAlign: 'center',\n backgroundImage: 'none',\n backgroundColor: 'transparent',\n border: \"\".concat(token.lineWidth, \"px \").concat(token.lineType, \" transparent\"),\n cursor: 'pointer',\n transition: \"all \".concat(token.motionDurationMid, \" \").concat(token.motionEaseInOut),\n userSelect: 'none',\n touchAction: 'manipulation',\n lineHeight: token.lineHeight,\n color: token.colorText,\n '&:disabled > *': {\n pointerEvents: 'none'\n },\n '> span': {\n display: 'inline-block'\n }\n }, _defineProperty(_componentCls, \"\".concat(componentCls, \"-icon\"), {\n lineHeight: 0\n }), _defineProperty(_componentCls, \"> \".concat(iconCls, \" + span, > span + \").concat(iconCls), {\n marginInlineStart: token.marginXS\n }), _defineProperty(_componentCls, \"&:not(\".concat(componentCls, \"-icon-only) > \").concat(componentCls, \"-icon\"), _defineProperty({}, \"&\".concat(componentCls, \"-loading-icon, &:not(:last-child)\"), {\n marginInlineEnd: token.marginXS\n })), _defineProperty(_componentCls, '> a', {\n color: 'currentColor'\n }), _defineProperty(_componentCls, '&:not(:disabled)', Object.assign({}, genFocusStyle(token))), _defineProperty(_componentCls, \"&-icon-only\".concat(componentCls, \"-compact-item\"), {\n flex: 'none'\n }), _defineProperty(_componentCls, \"&-compact-item\".concat(componentCls, \"-primary\"), _defineProperty({}, \"&:not([disabled]) + \".concat(componentCls, \"-compact-item\").concat(componentCls, \"-primary:not([disabled])\"), {\n position: 'relative',\n '&:before': {\n position: 'absolute',\n top: -token.lineWidth,\n insetInlineStart: -token.lineWidth,\n display: 'inline-block',\n width: token.lineWidth,\n height: \"calc(100% + \".concat(token.lineWidth * 2, \"px)\"),\n backgroundColor: token.colorPrimaryHover,\n content: '\"\"'\n }\n })), _defineProperty(_componentCls, '&-compact-vertical-item', _defineProperty({}, \"&\".concat(componentCls, \"-primary\"), _defineProperty({}, \"&:not([disabled]) + \".concat(componentCls, \"-compact-vertical-item\").concat(componentCls, \"-primary:not([disabled])\"), {\n position: 'relative',\n '&:before': {\n position: 'absolute',\n top: -token.lineWidth,\n insetInlineStart: -token.lineWidth,\n display: 'inline-block',\n width: \"calc(100% + \".concat(token.lineWidth * 2, \"px)\"),\n height: token.lineWidth,\n backgroundColor: token.colorPrimaryHover,\n content: '\"\"'\n }\n }))), _componentCls));\n};\nvar genHoverActiveButtonStyle = function genHoverActiveButtonStyle(btnCls, hoverStyle, activeStyle) {\n return _defineProperty({}, \"&:not(:disabled):not(\".concat(btnCls, \"-disabled)\"), {\n '&:hover': hoverStyle,\n '&:active': activeStyle\n });\n};\n// ============================== Shape ===============================\nvar genCircleButtonStyle = function genCircleButtonStyle(token) {\n return {\n minWidth: token.controlHeight,\n paddingInlineStart: 0,\n paddingInlineEnd: 0,\n borderRadius: '50%'\n };\n};\nvar genRoundButtonStyle = function genRoundButtonStyle(token) {\n return {\n borderRadius: token.controlHeight,\n paddingInlineStart: token.controlHeight / 2,\n paddingInlineEnd: token.controlHeight / 2\n };\n};\n// =============================== Type ===============================\nvar genDisabledStyle = function genDisabledStyle(token) {\n return {\n cursor: 'not-allowed',\n borderColor: token.colorBorder,\n color: token.colorTextDisabled,\n backgroundColor: token.colorBgContainerDisabled,\n boxShadow: 'none'\n };\n};\nvar genGhostButtonStyle = function genGhostButtonStyle(btnCls, textColor, borderColor, textColorDisabled, borderColorDisabled, hoverStyle, activeStyle) {\n return _defineProperty({}, \"&\".concat(btnCls, \"-background-ghost\"), Object.assign(Object.assign({\n color: textColor || undefined,\n backgroundColor: 'transparent',\n borderColor: borderColor || undefined,\n boxShadow: 'none'\n }, genHoverActiveButtonStyle(btnCls, Object.assign({\n backgroundColor: 'transparent'\n }, hoverStyle), Object.assign({\n backgroundColor: 'transparent'\n }, activeStyle))), {\n '&:disabled': {\n cursor: 'not-allowed',\n color: textColorDisabled || undefined,\n borderColor: borderColorDisabled || undefined\n }\n }));\n};\nvar genSolidDisabledButtonStyle = function genSolidDisabledButtonStyle(token) {\n return _defineProperty({}, \"&:disabled, &\".concat(token.componentCls, \"-disabled\"), Object.assign({}, genDisabledStyle(token)));\n};\nvar genSolidButtonStyle = function genSolidButtonStyle(token) {\n return Object.assign({}, genSolidDisabledButtonStyle(token));\n};\nvar genPureDisabledButtonStyle = function genPureDisabledButtonStyle(token) {\n return _defineProperty({}, \"&:disabled, &\".concat(token.componentCls, \"-disabled\"), {\n cursor: 'not-allowed',\n color: token.colorTextDisabled\n });\n};\n// Type: Default\nvar genDefaultButtonStyle = function genDefaultButtonStyle(token) {\n return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, genSolidButtonStyle(token)), {\n backgroundColor: token.colorBgContainer,\n borderColor: token.colorBorder,\n boxShadow: \"0 \".concat(token.controlOutlineWidth, \"px 0 \").concat(token.controlTmpOutline)\n }), genHoverActiveButtonStyle(token.componentCls, {\n color: token.colorPrimaryHover,\n borderColor: token.colorPrimaryHover\n }, {\n color: token.colorPrimaryActive,\n borderColor: token.colorPrimaryActive\n })), genGhostButtonStyle(token.componentCls, token.colorBgContainer, token.colorBgContainer, token.colorTextDisabled, token.colorBorder)), _defineProperty({}, \"&\".concat(token.componentCls, \"-dangerous\"), Object.assign(Object.assign(Object.assign({\n color: token.colorError,\n borderColor: token.colorError\n }, genHoverActiveButtonStyle(token.componentCls, {\n color: token.colorErrorHover,\n borderColor: token.colorErrorBorderHover\n }, {\n color: token.colorErrorActive,\n borderColor: token.colorErrorActive\n })), genGhostButtonStyle(token.componentCls, token.colorError, token.colorError, token.colorTextDisabled, token.colorBorder)), genSolidDisabledButtonStyle(token))));\n};\n// Type: Primary\nvar genPrimaryButtonStyle = function genPrimaryButtonStyle(token) {\n return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, genSolidButtonStyle(token)), {\n color: token.colorTextLightSolid,\n backgroundColor: token.colorPrimary,\n boxShadow: \"0 \".concat(token.controlOutlineWidth, \"px 0 \").concat(token.controlOutline)\n }), genHoverActiveButtonStyle(token.componentCls, {\n color: token.colorTextLightSolid,\n backgroundColor: token.colorPrimaryHover\n }, {\n color: token.colorTextLightSolid,\n backgroundColor: token.colorPrimaryActive\n })), genGhostButtonStyle(token.componentCls, token.colorPrimary, token.colorPrimary, token.colorTextDisabled, token.colorBorder, {\n color: token.colorPrimaryHover,\n borderColor: token.colorPrimaryHover\n }, {\n color: token.colorPrimaryActive,\n borderColor: token.colorPrimaryActive\n })), _defineProperty({}, \"&\".concat(token.componentCls, \"-dangerous\"), Object.assign(Object.assign(Object.assign({\n backgroundColor: token.colorError,\n boxShadow: \"0 \".concat(token.controlOutlineWidth, \"px 0 \").concat(token.colorErrorOutline)\n }, genHoverActiveButtonStyle(token.componentCls, {\n backgroundColor: token.colorErrorHover\n }, {\n backgroundColor: token.colorErrorActive\n })), genGhostButtonStyle(token.componentCls, token.colorError, token.colorError, token.colorTextDisabled, token.colorBorder, {\n color: token.colorErrorHover,\n borderColor: token.colorErrorHover\n }, {\n color: token.colorErrorActive,\n borderColor: token.colorErrorActive\n })), genSolidDisabledButtonStyle(token))));\n};\n// Type: Dashed\nvar genDashedButtonStyle = function genDashedButtonStyle(token) {\n return Object.assign(Object.assign({}, genDefaultButtonStyle(token)), {\n borderStyle: 'dashed'\n });\n};\n// Type: Link\nvar genLinkButtonStyle = function genLinkButtonStyle(token) {\n return Object.assign(Object.assign(Object.assign({\n color: token.colorLink\n }, genHoverActiveButtonStyle(token.componentCls, {\n color: token.colorLinkHover\n }, {\n color: token.colorLinkActive\n })), genPureDisabledButtonStyle(token)), _defineProperty({}, \"&\".concat(token.componentCls, \"-dangerous\"), Object.assign(Object.assign({\n color: token.colorError\n }, genHoverActiveButtonStyle(token.componentCls, {\n color: token.colorErrorHover\n }, {\n color: token.colorErrorActive\n })), genPureDisabledButtonStyle(token))));\n};\n// Type: Text\nvar genTextButtonStyle = function genTextButtonStyle(token) {\n return Object.assign(Object.assign(Object.assign({}, genHoverActiveButtonStyle(token.componentCls, {\n color: token.colorText,\n backgroundColor: token.colorBgTextHover\n }, {\n color: token.colorText,\n backgroundColor: token.colorBgTextActive\n })), genPureDisabledButtonStyle(token)), _defineProperty({}, \"&\".concat(token.componentCls, \"-dangerous\"), Object.assign(Object.assign({\n color: token.colorError\n }, genPureDisabledButtonStyle(token)), genHoverActiveButtonStyle(token.componentCls, {\n color: token.colorErrorHover,\n backgroundColor: token.colorErrorBg\n }, {\n color: token.colorErrorHover,\n backgroundColor: token.colorErrorBg\n }))));\n};\nvar genTypeButtonStyle = function genTypeButtonStyle(token) {\n var _ref6;\n var componentCls = token.componentCls;\n return _ref6 = {}, _defineProperty(_ref6, \"\".concat(componentCls, \"-default\"), genDefaultButtonStyle(token)), _defineProperty(_ref6, \"\".concat(componentCls, \"-primary\"), genPrimaryButtonStyle(token)), _defineProperty(_ref6, \"\".concat(componentCls, \"-dashed\"), genDashedButtonStyle(token)), _defineProperty(_ref6, \"\".concat(componentCls, \"-link\"), genLinkButtonStyle(token)), _defineProperty(_ref6, \"\".concat(componentCls, \"-text\"), genTextButtonStyle(token)), _defineProperty(_ref6, \"\".concat(componentCls, \"-ghost\"), genGhostButtonStyle(token.componentCls, token.colorBgContainer, token.colorBgContainer, token.colorTextDisabled, token.colorBorder)), _ref6;\n};\n// =============================== Size ===============================\nvar genSizeButtonStyle = function genSizeButtonStyle(token) {\n var _$concat2, _$concat$concat;\n var sizePrefixCls = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var componentCls = token.componentCls,\n controlHeight = token.controlHeight,\n fontSize = token.fontSize,\n lineHeight = token.lineHeight,\n lineWidth = token.lineWidth,\n borderRadius = token.borderRadius,\n buttonPaddingHorizontal = token.buttonPaddingHorizontal,\n iconCls = token.iconCls;\n var paddingVertical = Math.max(0, (controlHeight - fontSize * lineHeight) / 2 - lineWidth);\n var paddingHorizontal = buttonPaddingHorizontal - lineWidth;\n var iconOnlyCls = \"\".concat(componentCls, \"-icon-only\");\n return [// Size\n _defineProperty({}, \"\".concat(componentCls).concat(sizePrefixCls), (_$concat$concat = {\n fontSize: fontSize,\n height: controlHeight,\n padding: \"\".concat(paddingVertical, \"px \").concat(paddingHorizontal, \"px\"),\n borderRadius: borderRadius\n }, _defineProperty(_$concat$concat, \"&\".concat(iconOnlyCls), (_$concat2 = {\n width: controlHeight,\n paddingInlineStart: 0,\n paddingInlineEnd: 0\n }, _defineProperty(_$concat2, \"&\".concat(componentCls, \"-round\"), {\n width: 'auto'\n }), _defineProperty(_$concat2, iconCls, {\n fontSize: token.buttonIconOnlyFontSize\n }), _$concat2)), _defineProperty(_$concat$concat, \"&\".concat(componentCls, \"-loading\"), {\n opacity: token.opacityLoading,\n cursor: 'default'\n }), _defineProperty(_$concat$concat, \"\".concat(componentCls, \"-loading-icon\"), {\n transition: \"width \".concat(token.motionDurationSlow, \" \").concat(token.motionEaseInOut, \", opacity \").concat(token.motionDurationSlow, \" \").concat(token.motionEaseInOut)\n }), _$concat$concat)), // Shape - patch prefixCls again to override solid border radius style\n _defineProperty({}, \"\".concat(componentCls).concat(componentCls, \"-circle\").concat(sizePrefixCls), genCircleButtonStyle(token)), _defineProperty({}, \"\".concat(componentCls).concat(componentCls, \"-round\").concat(sizePrefixCls), genRoundButtonStyle(token))];\n};\nvar genSizeBaseButtonStyle = function genSizeBaseButtonStyle(token) {\n return genSizeButtonStyle(token);\n};\nvar genSizeSmallButtonStyle = function genSizeSmallButtonStyle(token) {\n var smallToken = mergeToken(token, {\n controlHeight: token.controlHeightSM,\n padding: token.paddingXS,\n buttonPaddingHorizontal: 8,\n borderRadius: token.borderRadiusSM,\n buttonIconOnlyFontSize: token.fontSizeLG - 2\n });\n return genSizeButtonStyle(smallToken, \"\".concat(token.componentCls, \"-sm\"));\n};\nvar genSizeLargeButtonStyle = function genSizeLargeButtonStyle(token) {\n var largeToken = mergeToken(token, {\n controlHeight: token.controlHeightLG,\n fontSize: token.fontSizeLG,\n borderRadius: token.borderRadiusLG,\n buttonIconOnlyFontSize: token.fontSizeLG + 2\n });\n return genSizeButtonStyle(largeToken, \"\".concat(token.componentCls, \"-lg\"));\n};\nvar genBlockButtonStyle = function genBlockButtonStyle(token) {\n var componentCls = token.componentCls;\n return _defineProperty({}, componentCls, _defineProperty({}, \"&\".concat(componentCls, \"-block\"), {\n width: '100%'\n }));\n};\n// ============================== Export ==============================\nexport default genComponentStyleHook('Button', function (token) {\n var controlTmpOutline = token.controlTmpOutline,\n paddingContentHorizontal = token.paddingContentHorizontal;\n var buttonToken = mergeToken(token, {\n colorOutlineDefault: controlTmpOutline,\n buttonPaddingHorizontal: paddingContentHorizontal,\n buttonIconOnlyFontSize: token.fontSizeLG,\n buttonFontWeight: 400\n });\n return [\n // Shared\n genSharedButtonStyle(buttonToken),\n // Size\n genSizeSmallButtonStyle(buttonToken), genSizeBaseButtonStyle(buttonToken), genSizeLargeButtonStyle(buttonToken),\n // Block\n genBlockButtonStyle(buttonToken),\n // Group (type, ghost, danger, loading)\n genTypeButtonStyle(buttonToken),\n // Button Group\n genGroupStyle(buttonToken),\n // Space Compact\n genCompactItemStyle(token), genCompactItemVerticalStyle(token)];\n});","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n/* eslint-disable react/button-has-type */\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport { composeRef } from \"rc-util/es/ref\";\nimport React, { Children, createRef, forwardRef, useContext, useEffect, useMemo, useState } from 'react';\nimport warning from '../_util/warning';\nimport Wave from '../_util/wave';\nimport { ConfigContext } from '../config-provider';\nimport DisabledContext from '../config-provider/DisabledContext';\nimport useSize from '../config-provider/hooks/useSize';\nimport { useCompactItemContext } from '../space/Compact';\nimport IconWrapper from './IconWrapper';\nimport LoadingIcon from './LoadingIcon';\nimport Group, { GroupSizeContext } from './button-group';\nimport { isTwoCNChar, isUnBorderedButtonType, spaceChildren } from './buttonHelpers';\nimport useStyle from './style';\nexport function convertLegacyProps(type) {\n if (type === 'danger') {\n return {\n danger: true\n };\n }\n return {\n type: type\n };\n}\nfunction getLoadingConfig(loading) {\n if (typeof loading === 'object' && loading) {\n var delay = loading === null || loading === void 0 ? void 0 : loading.delay;\n var isDelay = !Number.isNaN(delay) && typeof delay === 'number';\n return {\n loading: false,\n delay: isDelay ? delay : 0\n };\n }\n return {\n loading: !!loading,\n delay: 0\n };\n}\nvar InternalButton = function InternalButton(props, ref) {\n var _classNames;\n var _a, _b;\n var _props$loading = props.loading,\n loading = _props$loading === void 0 ? false : _props$loading,\n customizePrefixCls = props.prefixCls,\n _props$type = props.type,\n type = _props$type === void 0 ? 'default' : _props$type,\n danger = props.danger,\n _props$shape = props.shape,\n shape = _props$shape === void 0 ? 'default' : _props$shape,\n customizeSize = props.size,\n styles = props.styles,\n customDisabled = props.disabled,\n className = props.className,\n rootClassName = props.rootClassName,\n children = props.children,\n icon = props.icon,\n _props$ghost = props.ghost,\n ghost = _props$ghost === void 0 ? false : _props$ghost,\n _props$block = props.block,\n block = _props$block === void 0 ? false : _props$block,\n _props$htmlType = props.htmlType,\n htmlType = _props$htmlType === void 0 ? 'button' : _props$htmlType,\n customClassNames = props.classNames,\n _props$style = props.style,\n customStyle = _props$style === void 0 ? {} : _props$style,\n rest = __rest(props, [\"loading\", \"prefixCls\", \"type\", \"danger\", \"shape\", \"size\", \"styles\", \"disabled\", \"className\", \"rootClassName\", \"children\", \"icon\", \"ghost\", \"block\", \"htmlType\", \"classNames\", \"style\"]);\n var _useContext = useContext(ConfigContext),\n getPrefixCls = _useContext.getPrefixCls,\n autoInsertSpaceInButton = _useContext.autoInsertSpaceInButton,\n direction = _useContext.direction,\n button = _useContext.button;\n var prefixCls = getPrefixCls('btn', customizePrefixCls);\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n var disabled = useContext(DisabledContext);\n var mergedDisabled = customDisabled !== null && customDisabled !== void 0 ? customDisabled : disabled;\n var groupSize = useContext(GroupSizeContext);\n var loadingOrDelay = useMemo(function () {\n return getLoadingConfig(loading);\n }, [loading]);\n var _useState = useState(loadingOrDelay.loading),\n _useState2 = _slicedToArray(_useState, 2),\n innerLoading = _useState2[0],\n setLoading = _useState2[1];\n var _useState3 = useState(false),\n _useState4 = _slicedToArray(_useState3, 2),\n hasTwoCNChar = _useState4[0],\n setHasTwoCNChar = _useState4[1];\n var internalRef = /*#__PURE__*/createRef();\n var buttonRef = composeRef(ref, internalRef);\n var needInserted = Children.count(children) === 1 && !icon && !isUnBorderedButtonType(type);\n useEffect(function () {\n var delayTimer = null;\n if (loadingOrDelay.delay > 0) {\n delayTimer = setTimeout(function () {\n delayTimer = null;\n setLoading(true);\n }, loadingOrDelay.delay);\n } else {\n setLoading(loadingOrDelay.loading);\n }\n function cleanupTimer() {\n if (delayTimer) {\n clearTimeout(delayTimer);\n delayTimer = null;\n }\n }\n return cleanupTimer;\n }, [loadingOrDelay]);\n useEffect(function () {\n // FIXME: for HOC usage like \n if (!buttonRef || !buttonRef.current || autoInsertSpaceInButton === false) {\n return;\n }\n var buttonText = buttonRef.current.textContent;\n if (needInserted && isTwoCNChar(buttonText)) {\n if (!hasTwoCNChar) {\n setHasTwoCNChar(true);\n }\n } else if (hasTwoCNChar) {\n setHasTwoCNChar(false);\n }\n }, [buttonRef]);\n var handleClick = function handleClick(e) {\n var onClick = props.onClick;\n // FIXME: https://github.com/ant-design/ant-design/issues/30207\n if (innerLoading || mergedDisabled) {\n e.preventDefault();\n return;\n }\n onClick === null || onClick === void 0 ? void 0 : onClick(e);\n };\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof icon === 'string' && icon.length > 2), 'Button', \"`icon` is using ReactNode instead of string naming in v4. Please check `\".concat(icon, \"` at https://ant.design/components/icon\")) : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!(ghost && isUnBorderedButtonType(type)), 'Button', \"`link` or `text` button can't be a `ghost` button.\") : void 0;\n var autoInsertSpace = autoInsertSpaceInButton !== false;\n var _useCompactItemContex = useCompactItemContext(prefixCls, direction),\n compactSize = _useCompactItemContex.compactSize,\n compactItemClassnames = _useCompactItemContex.compactItemClassnames;\n var sizeClassNameMap = {\n large: 'lg',\n small: 'sm',\n middle: undefined\n };\n var sizeFullName = useSize(function (ctxSize) {\n var _a, _b;\n return (_b = (_a = customizeSize !== null && customizeSize !== void 0 ? customizeSize : compactSize) !== null && _a !== void 0 ? _a : groupSize) !== null && _b !== void 0 ? _b : ctxSize;\n });\n var sizeCls = sizeFullName ? sizeClassNameMap[sizeFullName] || '' : '';\n var iconType = innerLoading ? 'loading' : icon;\n var linkButtonRestProps = omit(rest, ['navigate']);\n var classes = classNames(prefixCls, hashId, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(shape), shape !== 'default' && shape), _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(type), type), _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(sizeCls), sizeCls), _defineProperty(_classNames, \"\".concat(prefixCls, \"-icon-only\"), !children && children !== 0 && !!iconType), _defineProperty(_classNames, \"\".concat(prefixCls, \"-background-ghost\"), ghost && !isUnBorderedButtonType(type)), _defineProperty(_classNames, \"\".concat(prefixCls, \"-loading\"), innerLoading), _defineProperty(_classNames, \"\".concat(prefixCls, \"-two-chinese-chars\"), hasTwoCNChar && autoInsertSpace && !innerLoading), _defineProperty(_classNames, \"\".concat(prefixCls, \"-block\"), block), _defineProperty(_classNames, \"\".concat(prefixCls, \"-dangerous\"), !!danger), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _classNames), compactItemClassnames, className, rootClassName, button === null || button === void 0 ? void 0 : button.className);\n var fullStyle = Object.assign(Object.assign({}, button === null || button === void 0 ? void 0 : button.style), customStyle);\n var iconClasses = classNames(customClassNames === null || customClassNames === void 0 ? void 0 : customClassNames.icon, (_a = button === null || button === void 0 ? void 0 : button.classNames) === null || _a === void 0 ? void 0 : _a.icon);\n var iconStyle = Object.assign(Object.assign({}, (styles === null || styles === void 0 ? void 0 : styles.icon) || {}), ((_b = button === null || button === void 0 ? void 0 : button.styles) === null || _b === void 0 ? void 0 : _b.icon) || {});\n var iconNode = icon && !innerLoading ? /*#__PURE__*/React.createElement(IconWrapper, {\n prefixCls: prefixCls,\n className: iconClasses,\n style: iconStyle\n }, icon) : /*#__PURE__*/React.createElement(LoadingIcon, {\n existIcon: !!icon,\n prefixCls: prefixCls,\n loading: !!innerLoading\n });\n var kids = children || children === 0 ? spaceChildren(children, needInserted && autoInsertSpace) : null;\n if (linkButtonRestProps.href !== undefined) {\n return wrapSSR( /*#__PURE__*/React.createElement(\"a\", Object.assign({}, linkButtonRestProps, {\n className: classNames(classes, _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), mergedDisabled)),\n style: fullStyle,\n onClick: handleClick,\n ref: buttonRef\n }), iconNode, kids));\n }\n var buttonNode = /*#__PURE__*/React.createElement(\"button\", Object.assign({}, rest, {\n type: htmlType,\n className: classes,\n style: fullStyle,\n onClick: handleClick,\n disabled: mergedDisabled,\n ref: buttonRef\n }), iconNode, kids);\n if (!isUnBorderedButtonType(type)) {\n buttonNode = /*#__PURE__*/React.createElement(Wave, {\n component: \"Button\",\n disabled: !!innerLoading\n }, buttonNode);\n }\n return wrapSSR(buttonNode);\n};\nvar Button = /*#__PURE__*/forwardRef(InternalButton);\nif (process.env.NODE_ENV !== 'production') {\n Button.displayName = 'Button';\n}\nButton.Group = Group;\nButton.__ANT_BUTTON = true;\nexport default Button;","'use client';\n\nimport Button from './button';\nexport * from './buttonHelpers';\nexport default Button;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nexport function file2Obj(file) {\n return Object.assign(Object.assign({}, file), {\n lastModified: file.lastModified,\n lastModifiedDate: file.lastModifiedDate,\n name: file.name,\n size: file.size,\n type: file.type,\n uid: file.uid,\n percent: 0,\n originFileObj: file\n });\n}\n/** Upload fileList. Replace file if exist or just push into it. */\nexport function updateFileList(file, fileList) {\n var nextFileList = _toConsumableArray(fileList);\n var fileIndex = nextFileList.findIndex(function (_ref) {\n var uid = _ref.uid;\n return uid === file.uid;\n });\n if (fileIndex === -1) {\n nextFileList.push(file);\n } else {\n nextFileList[fileIndex] = file;\n }\n return nextFileList;\n}\nexport function getFileItem(file, fileList) {\n var matchKey = file.uid !== undefined ? 'uid' : 'name';\n return fileList.filter(function (item) {\n return item[matchKey] === file[matchKey];\n })[0];\n}\nexport function removeFileItem(file, fileList) {\n var matchKey = file.uid !== undefined ? 'uid' : 'name';\n var removed = fileList.filter(function (item) {\n return item[matchKey] !== file[matchKey];\n });\n if (removed.length === fileList.length) {\n return null;\n }\n return removed;\n}\n// ==================== Default Image Preview ====================\nvar extname = function extname() {\n var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var temp = url.split('/');\n var filename = temp[temp.length - 1];\n var filenameWithoutSuffix = filename.split(/#|\\?/)[0];\n return (/\\.[^./\\\\]*$/.exec(filenameWithoutSuffix) || [''])[0];\n};\nvar isImageFileType = function isImageFileType(type) {\n return type.indexOf('image/') === 0;\n};\nexport var isImageUrl = function isImageUrl(file) {\n if (file.type && !file.thumbUrl) {\n return isImageFileType(file.type);\n }\n var url = file.thumbUrl || file.url || '';\n var extension = extname(url);\n if (/^data:image\\//.test(url) || /(webp|svg|png|gif|jpg|jpeg|jfif|bmp|dpg|ico|heic|heif)$/i.test(extension)) {\n return true;\n }\n if (/^data:/.test(url)) {\n // other file types of base64\n return false;\n }\n if (extension) {\n // other file types which have extension\n return false;\n }\n return true;\n};\nvar MEASURE_SIZE = 200;\nexport function previewImage(file) {\n return new Promise(function (resolve) {\n if (!file.type || !isImageFileType(file.type)) {\n resolve('');\n return;\n }\n var canvas = document.createElement('canvas');\n canvas.width = MEASURE_SIZE;\n canvas.height = MEASURE_SIZE;\n canvas.style.cssText = \"position: fixed; left: 0; top: 0; width: \".concat(MEASURE_SIZE, \"px; height: \").concat(MEASURE_SIZE, \"px; z-index: 9999; display: none;\");\n document.body.appendChild(canvas);\n var ctx = canvas.getContext('2d');\n var img = new Image();\n img.onload = function () {\n var width = img.width,\n height = img.height;\n var drawWidth = MEASURE_SIZE;\n var drawHeight = MEASURE_SIZE;\n var offsetX = 0;\n var offsetY = 0;\n if (width > height) {\n drawHeight = height * (MEASURE_SIZE / width);\n offsetY = -(drawHeight - drawWidth) / 2;\n } else {\n drawWidth = width * (MEASURE_SIZE / height);\n offsetX = -(drawWidth - drawHeight) / 2;\n }\n ctx.drawImage(img, offsetX, offsetY, drawWidth, drawHeight);\n var dataURL = canvas.toDataURL();\n document.body.removeChild(canvas);\n window.URL.revokeObjectURL(img.src);\n resolve(dataURL);\n };\n img.crossOrigin = 'anonymous';\n if (file.type.startsWith('image/svg+xml')) {\n var reader = new FileReader();\n reader.onload = function () {\n if (reader.result) img.src = reader.result;\n };\n reader.readAsDataURL(file);\n } else if (file.type.startsWith('image/gif')) {\n var _reader = new FileReader();\n _reader.onload = function () {\n if (_reader.result) resolve(_reader.result);\n };\n _reader.readAsDataURL(file);\n } else {\n img.src = window.URL.createObjectURL(file);\n }\n });\n}","// This icon file is generated automatically.\nvar DeleteOutlined = {\n \"icon\": {\n \"tag\": \"svg\",\n \"attrs\": {\n \"viewBox\": \"64 64 896 896\",\n \"focusable\": \"false\"\n },\n \"children\": [{\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z\"\n }\n }]\n },\n \"name\": \"delete\",\n \"theme\": \"outlined\"\n};\nexport default DeleteOutlined;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport DeleteOutlinedSvg from \"@ant-design/icons-svg/es/asn/DeleteOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar DeleteOutlined = function DeleteOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: DeleteOutlinedSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n DeleteOutlined.displayName = 'DeleteOutlined';\n}\nexport default /*#__PURE__*/React.forwardRef(DeleteOutlined);","// This icon file is generated automatically.\nvar DownloadOutlined = {\n \"icon\": {\n \"tag\": \"svg\",\n \"attrs\": {\n \"viewBox\": \"64 64 896 896\",\n \"focusable\": \"false\"\n },\n \"children\": [{\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M505.7 661a8 8 0 0012.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9h-74.1V168c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v338.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.8zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z\"\n }\n }]\n },\n \"name\": \"download\",\n \"theme\": \"outlined\"\n};\nexport default DownloadOutlined;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport DownloadOutlinedSvg from \"@ant-design/icons-svg/es/asn/DownloadOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar DownloadOutlined = function DownloadOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: DownloadOutlinedSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n DownloadOutlined.displayName = 'DownloadOutlined';\n}\nexport default /*#__PURE__*/React.forwardRef(DownloadOutlined);","// This icon file is generated automatically.\nvar EyeOutlined = {\n \"icon\": {\n \"tag\": \"svg\",\n \"attrs\": {\n \"viewBox\": \"64 64 896 896\",\n \"focusable\": \"false\"\n },\n \"children\": [{\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M942.2 486.2C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 000 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM512 766c-161.3 0-279.4-81.8-362.7-254C232.6 339.8 350.7 258 512 258c161.3 0 279.4 81.8 362.7 254C791.5 684.2 673.4 766 512 766zm-4-430c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm0 288c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z\"\n }\n }]\n },\n \"name\": \"eye\",\n \"theme\": \"outlined\"\n};\nexport default EyeOutlined;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport EyeOutlinedSvg from \"@ant-design/icons-svg/es/asn/EyeOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar EyeOutlined = function EyeOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: EyeOutlinedSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n EyeOutlined.displayName = 'EyeOutlined';\n}\nexport default /*#__PURE__*/React.forwardRef(EyeOutlined);","// This icon file is generated automatically.\nvar CheckCircleFilled = {\n \"icon\": {\n \"tag\": \"svg\",\n \"attrs\": {\n \"viewBox\": \"64 64 896 896\",\n \"focusable\": \"false\"\n },\n \"children\": [{\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm193.5 301.7l-210.6 292a31.8 31.8 0 01-51.7 0L318.5 484.9c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.2 0 19.9 4.9 25.9 13.3l71.2 98.8 157.2-218c6-8.3 15.6-13.3 25.9-13.3H699c6.5 0 10.3 7.4 6.5 12.7z\"\n }\n }]\n },\n \"name\": \"check-circle\",\n \"theme\": \"filled\"\n};\nexport default CheckCircleFilled;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport CheckCircleFilledSvg from \"@ant-design/icons-svg/es/asn/CheckCircleFilled\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar CheckCircleFilled = function CheckCircleFilled(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: CheckCircleFilledSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n CheckCircleFilled.displayName = 'CheckCircleFilled';\n}\nexport default /*#__PURE__*/React.forwardRef(CheckCircleFilled);","// This icon file is generated automatically.\nvar CheckOutlined = {\n \"icon\": {\n \"tag\": \"svg\",\n \"attrs\": {\n \"viewBox\": \"64 64 896 896\",\n \"focusable\": \"false\"\n },\n \"children\": [{\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 00-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z\"\n }\n }]\n },\n \"name\": \"check\",\n \"theme\": \"outlined\"\n};\nexport default CheckOutlined;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport CheckOutlinedSvg from \"@ant-design/icons-svg/es/asn/CheckOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar CheckOutlined = function CheckOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: CheckOutlinedSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n CheckOutlined.displayName = 'CheckOutlined';\n}\nexport default /*#__PURE__*/React.forwardRef(CheckOutlined);","// This icon file is generated automatically.\nvar CloseCircleFilled = {\n \"icon\": {\n \"tag\": \"svg\",\n \"attrs\": {\n \"fill-rule\": \"evenodd\",\n \"viewBox\": \"64 64 896 896\",\n \"focusable\": \"false\"\n },\n \"children\": [{\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M512 64c247.4 0 448 200.6 448 448S759.4 960 512 960 64 759.4 64 512 264.6 64 512 64zm127.98 274.82h-.04l-.08.06L512 466.75 384.14 338.88c-.04-.05-.06-.06-.08-.06a.12.12 0 00-.07 0c-.03 0-.05.01-.09.05l-45.02 45.02a.2.2 0 00-.05.09.12.12 0 000 .07v.02a.27.27 0 00.06.06L466.75 512 338.88 639.86c-.05.04-.06.06-.06.08a.12.12 0 000 .07c0 .03.01.05.05.09l45.02 45.02a.2.2 0 00.09.05.12.12 0 00.07 0c.02 0 .04-.01.08-.05L512 557.25l127.86 127.87c.04.04.06.05.08.05a.12.12 0 00.07 0c.03 0 .05-.01.09-.05l45.02-45.02a.2.2 0 00.05-.09.12.12 0 000-.07v-.02a.27.27 0 00-.05-.06L557.25 512l127.87-127.86c.04-.04.05-.06.05-.08a.12.12 0 000-.07c0-.03-.01-.05-.05-.09l-45.02-45.02a.2.2 0 00-.09-.05.12.12 0 00-.07 0z\"\n }\n }]\n },\n \"name\": \"close-circle\",\n \"theme\": \"filled\"\n};\nexport default CloseCircleFilled;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport CloseCircleFilledSvg from \"@ant-design/icons-svg/es/asn/CloseCircleFilled\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar CloseCircleFilled = function CloseCircleFilled(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: CloseCircleFilledSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n CloseCircleFilled.displayName = 'CloseCircleFilled';\n}\nexport default /*#__PURE__*/React.forwardRef(CloseCircleFilled);","// This icon file is generated automatically.\nvar CloseOutlined = {\n \"icon\": {\n \"tag\": \"svg\",\n \"attrs\": {\n \"fill-rule\": \"evenodd\",\n \"viewBox\": \"64 64 896 896\",\n \"focusable\": \"false\"\n },\n \"children\": [{\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M799.86 166.31c.02 0 .04.02.08.06l57.69 57.7c.04.03.05.05.06.08a.12.12 0 010 .06c0 .03-.02.05-.06.09L569.93 512l287.7 287.7c.04.04.05.06.06.09a.12.12 0 010 .07c0 .02-.02.04-.06.08l-57.7 57.69c-.03.04-.05.05-.07.06a.12.12 0 01-.07 0c-.03 0-.05-.02-.09-.06L512 569.93l-287.7 287.7c-.04.04-.06.05-.09.06a.12.12 0 01-.07 0c-.02 0-.04-.02-.08-.06l-57.69-57.7c-.04-.03-.05-.05-.06-.07a.12.12 0 010-.07c0-.03.02-.05.06-.09L454.07 512l-287.7-287.7c-.04-.04-.05-.06-.06-.09a.12.12 0 010-.07c0-.02.02-.04.06-.08l57.7-57.69c.03-.04.05-.05.07-.06a.12.12 0 01.07 0c.03 0 .05.02.09.06L512 454.07l287.7-287.7c.04-.04.06-.05.09-.06a.12.12 0 01.07 0z\"\n }\n }]\n },\n \"name\": \"close\",\n \"theme\": \"outlined\"\n};\nexport default CloseOutlined;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport CloseOutlinedSvg from \"@ant-design/icons-svg/es/asn/CloseOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar CloseOutlined = function CloseOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: CloseOutlinedSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n CloseOutlined.displayName = 'CloseOutlined';\n}\nexport default /*#__PURE__*/React.forwardRef(CloseOutlined);","import { useRef, useEffect } from 'react';\nexport var defaultProps = {\n percent: 0,\n prefixCls: 'rc-progress',\n strokeColor: '#2db7f5',\n strokeLinecap: 'round',\n strokeWidth: 1,\n trailColor: '#D9D9D9',\n trailWidth: 1,\n gapPosition: 'bottom'\n};\nexport var useTransitionDuration = function useTransitionDuration() {\n var pathsRef = useRef([]);\n var prevTimeStamp = useRef(null);\n useEffect(function () {\n var now = Date.now();\n var updated = false;\n pathsRef.current.forEach(function (path) {\n if (!path) {\n return;\n }\n updated = true;\n var pathStyle = path.style;\n pathStyle.transitionDuration = '.3s, .3s, .3s, .06s';\n if (prevTimeStamp.current && now - prevTimeStamp.current < 100) {\n pathStyle.transitionDuration = '0s, 0s';\n }\n });\n if (updated) {\n prevTimeStamp.current = Date.now();\n }\n });\n return pathsRef.current;\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"className\", \"percent\", \"prefixCls\", \"strokeColor\", \"strokeLinecap\", \"strokeWidth\", \"style\", \"trailColor\", \"trailWidth\", \"transition\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useTransitionDuration, defaultProps } from './common';\nvar Line = function Line(props) {\n var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props),\n className = _defaultProps$props.className,\n percent = _defaultProps$props.percent,\n prefixCls = _defaultProps$props.prefixCls,\n strokeColor = _defaultProps$props.strokeColor,\n strokeLinecap = _defaultProps$props.strokeLinecap,\n strokeWidth = _defaultProps$props.strokeWidth,\n style = _defaultProps$props.style,\n trailColor = _defaultProps$props.trailColor,\n trailWidth = _defaultProps$props.trailWidth,\n transition = _defaultProps$props.transition,\n restProps = _objectWithoutProperties(_defaultProps$props, _excluded);\n // eslint-disable-next-line no-param-reassign\n delete restProps.gapPosition;\n var percentList = Array.isArray(percent) ? percent : [percent];\n var strokeColorList = Array.isArray(strokeColor) ? strokeColor : [strokeColor];\n var paths = useTransitionDuration();\n var center = strokeWidth / 2;\n var right = 100 - strokeWidth / 2;\n var pathString = \"M \".concat(strokeLinecap === 'round' ? center : 0, \",\").concat(center, \"\\n L \").concat(strokeLinecap === 'round' ? right : 100, \",\").concat(center);\n var viewBoxString = \"0 0 100 \".concat(strokeWidth);\n var stackPtg = 0;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n className: classNames(\"\".concat(prefixCls, \"-line\"), className),\n viewBox: viewBoxString,\n preserveAspectRatio: \"none\",\n style: style\n }, restProps), /*#__PURE__*/React.createElement(\"path\", {\n className: \"\".concat(prefixCls, \"-line-trail\"),\n d: pathString,\n strokeLinecap: strokeLinecap,\n stroke: trailColor,\n strokeWidth: trailWidth || strokeWidth,\n fillOpacity: \"0\"\n }), percentList.map(function (ptg, index) {\n var dashPercent = 1;\n switch (strokeLinecap) {\n case 'round':\n dashPercent = 1 - strokeWidth / 100;\n break;\n case 'square':\n dashPercent = 1 - strokeWidth / 2 / 100;\n break;\n default:\n dashPercent = 1;\n break;\n }\n var pathStyle = {\n strokeDasharray: \"\".concat(ptg * dashPercent, \"px, 100px\"),\n strokeDashoffset: \"-\".concat(stackPtg, \"px\"),\n transition: transition || 'stroke-dashoffset 0.3s ease 0s, stroke-dasharray .3s ease 0s, stroke 0.3s linear'\n };\n var color = strokeColorList[index] || strokeColorList[strokeColorList.length - 1];\n stackPtg += ptg;\n return /*#__PURE__*/React.createElement(\"path\", {\n key: index,\n className: \"\".concat(prefixCls, \"-line-path\"),\n d: pathString,\n strokeLinecap: strokeLinecap,\n stroke: color,\n strokeWidth: strokeWidth,\n fillOpacity: \"0\",\n ref: function ref(elem) {\n // https://reactjs.org/docs/refs-and-the-dom.html#callback-refs\n // React will call the ref callback with the DOM element when the component mounts,\n // and call it with `null` when it unmounts.\n // Refs are guaranteed to be up-to-date before componentDidMount or componentDidUpdate fires.\n paths[index] = elem;\n },\n style: pathStyle\n });\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n Line.displayName = 'Line';\n}\nexport default Line;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport canUseDom from \"rc-util/es/Dom/canUseDom\";\nvar uuid = 0;\n/** Is client side and not jsdom */\nexport var isBrowserClient = process.env.NODE_ENV !== 'test' && canUseDom();\n/** Get unique id for accessibility usage */\nfunction getUUID() {\n var retId;\n // Test never reach\n /* istanbul ignore if */\n if (isBrowserClient) {\n retId = uuid;\n uuid += 1;\n } else {\n retId = 'TEST_OR_SSR';\n }\n return retId;\n}\nexport default (function (id) {\n // Inner id for accessibility usage. Only work in client side\n var _React$useState = React.useState(),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n innerId = _React$useState2[0],\n setInnerId = _React$useState2[1];\n React.useEffect(function () {\n setInnerId(\"rc_progress_\".concat(getUUID()));\n }, []);\n return id || innerId;\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"id\", \"prefixCls\", \"steps\", \"strokeWidth\", \"trailWidth\", \"gapDegree\", \"gapPosition\", \"trailColor\", \"strokeLinecap\", \"style\", \"className\", \"strokeColor\", \"percent\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { defaultProps, useTransitionDuration } from './common';\nimport useId from './hooks/useId';\nfunction stripPercentToNumber(percent) {\n return +percent.replace('%', '');\n}\nfunction toArray(value) {\n var mergedValue = value !== null && value !== void 0 ? value : [];\n return Array.isArray(mergedValue) ? mergedValue : [mergedValue];\n}\nvar VIEW_BOX_SIZE = 100;\nvar getCircleStyle = function getCircleStyle(perimeter, perimeterWithoutGap, offset, percent, rotateDeg, gapDegree, gapPosition, strokeColor, strokeLinecap, strokeWidth) {\n var stepSpace = arguments.length > 10 && arguments[10] !== undefined ? arguments[10] : 0;\n var offsetDeg = offset / 100 * 360 * ((360 - gapDegree) / 360);\n var positionDeg = gapDegree === 0 ? 0 : {\n bottom: 0,\n top: 180,\n left: 90,\n right: -90\n }[gapPosition];\n var strokeDashoffset = (100 - percent) / 100 * perimeterWithoutGap;\n // Fix percent accuracy when strokeLinecap is round\n // https://github.com/ant-design/ant-design/issues/35009\n if (strokeLinecap === 'round' && percent !== 100) {\n strokeDashoffset += strokeWidth / 2;\n // when percent is small enough (<= 1%), keep smallest value to avoid it's disappearance\n if (strokeDashoffset >= perimeterWithoutGap) {\n strokeDashoffset = perimeterWithoutGap - 0.01;\n }\n }\n return {\n stroke: typeof strokeColor === 'string' ? strokeColor : undefined,\n strokeDasharray: \"\".concat(perimeterWithoutGap, \"px \").concat(perimeter),\n strokeDashoffset: strokeDashoffset + stepSpace,\n transform: \"rotate(\".concat(rotateDeg + offsetDeg + positionDeg, \"deg)\"),\n transformOrigin: '0 0',\n transition: 'stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s',\n fillOpacity: 0\n };\n};\nvar Circle = function Circle(props) {\n var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props),\n id = _defaultProps$props.id,\n prefixCls = _defaultProps$props.prefixCls,\n steps = _defaultProps$props.steps,\n strokeWidth = _defaultProps$props.strokeWidth,\n trailWidth = _defaultProps$props.trailWidth,\n _defaultProps$props$g = _defaultProps$props.gapDegree,\n gapDegree = _defaultProps$props$g === void 0 ? 0 : _defaultProps$props$g,\n gapPosition = _defaultProps$props.gapPosition,\n trailColor = _defaultProps$props.trailColor,\n strokeLinecap = _defaultProps$props.strokeLinecap,\n style = _defaultProps$props.style,\n className = _defaultProps$props.className,\n strokeColor = _defaultProps$props.strokeColor,\n percent = _defaultProps$props.percent,\n restProps = _objectWithoutProperties(_defaultProps$props, _excluded);\n var mergedId = useId(id);\n var gradientId = \"\".concat(mergedId, \"-gradient\");\n var radius = VIEW_BOX_SIZE / 2 - strokeWidth / 2;\n var perimeter = Math.PI * 2 * radius;\n var rotateDeg = gapDegree > 0 ? 90 + gapDegree / 2 : -90;\n var perimeterWithoutGap = perimeter * ((360 - gapDegree) / 360);\n var _ref = _typeof(steps) === 'object' ? steps : {\n count: steps,\n space: 2\n },\n stepCount = _ref.count,\n stepSpace = _ref.space;\n var circleStyle = getCircleStyle(perimeter, perimeterWithoutGap, 0, 100, rotateDeg, gapDegree, gapPosition, trailColor, strokeLinecap, strokeWidth);\n var percentList = toArray(percent);\n var strokeColorList = toArray(strokeColor);\n var gradient = strokeColorList.find(function (color) {\n return color && _typeof(color) === 'object';\n });\n var paths = useTransitionDuration();\n var getStokeList = function getStokeList() {\n var stackPtg = 0;\n return percentList.map(function (ptg, index) {\n var color = strokeColorList[index] || strokeColorList[strokeColorList.length - 1];\n var stroke = color && _typeof(color) === 'object' ? \"url(#\".concat(gradientId, \")\") : undefined;\n var circleStyleForStack = getCircleStyle(perimeter, perimeterWithoutGap, stackPtg, ptg, rotateDeg, gapDegree, gapPosition, color, strokeLinecap, strokeWidth);\n stackPtg += ptg;\n return /*#__PURE__*/React.createElement(\"circle\", {\n key: index,\n className: \"\".concat(prefixCls, \"-circle-path\"),\n r: radius,\n cx: 0,\n cy: 0,\n stroke: stroke,\n strokeLinecap: strokeLinecap,\n strokeWidth: strokeWidth,\n opacity: ptg === 0 ? 0 : 1,\n style: circleStyleForStack,\n ref: function ref(elem) {\n // https://reactjs.org/docs/refs-and-the-dom.html#callback-refs\n // React will call the ref callback with the DOM element when the component mounts,\n // and call it with `null` when it unmounts.\n // Refs are guaranteed to be up-to-date before componentDidMount or componentDidUpdate fires.\n paths[index] = elem;\n }\n });\n }).reverse();\n };\n var getStepStokeList = function getStepStokeList() {\n // only show the first percent when pass steps\n var current = Math.round(stepCount * (percentList[0] / 100));\n var stepPtg = 100 / stepCount;\n var stackPtg = 0;\n return new Array(stepCount).fill(null).map(function (_, index) {\n var color = index <= current - 1 ? strokeColorList[0] : trailColor;\n var stroke = color && _typeof(color) === 'object' ? \"url(#\".concat(gradientId, \")\") : undefined;\n var circleStyleForStack = getCircleStyle(perimeter, perimeterWithoutGap, stackPtg, stepPtg, rotateDeg, gapDegree, gapPosition, color, 'butt', strokeWidth, stepSpace);\n stackPtg += (perimeterWithoutGap - circleStyleForStack.strokeDashoffset + stepSpace) * 100 / perimeterWithoutGap;\n return /*#__PURE__*/React.createElement(\"circle\", {\n key: index,\n className: \"\".concat(prefixCls, \"-circle-path\"),\n r: radius,\n cx: 0,\n cy: 0,\n stroke: stroke\n // strokeLinecap={strokeLinecap}\n ,\n\n strokeWidth: strokeWidth,\n opacity: 1,\n style: circleStyleForStack,\n ref: function ref(elem) {\n paths[index] = elem;\n }\n });\n });\n };\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n className: classNames(\"\".concat(prefixCls, \"-circle\"), className),\n viewBox: \"\".concat(-VIEW_BOX_SIZE / 2, \" \").concat(-VIEW_BOX_SIZE / 2, \" \").concat(VIEW_BOX_SIZE, \" \").concat(VIEW_BOX_SIZE),\n style: style,\n id: id,\n role: \"presentation\"\n }, restProps), gradient && /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: gradientId,\n x1: \"100%\",\n y1: \"0%\",\n x2: \"0%\",\n y2: \"0%\"\n }, Object.keys(gradient).sort(function (a, b) {\n return stripPercentToNumber(a) - stripPercentToNumber(b);\n }).map(function (key, index) {\n return /*#__PURE__*/React.createElement(\"stop\", {\n key: index,\n offset: key,\n stopColor: gradient[key]\n });\n }))), !stepCount && /*#__PURE__*/React.createElement(\"circle\", {\n className: \"\".concat(prefixCls, \"-circle-trail\"),\n r: radius,\n cx: 0,\n cy: 0,\n stroke: trailColor,\n strokeLinecap: strokeLinecap,\n strokeWidth: trailWidth || strokeWidth,\n style: circleStyle\n }), stepCount ? getStepStokeList() : getStokeList());\n};\nif (process.env.NODE_ENV !== 'production') {\n Circle.displayName = 'Circle';\n}\nexport default Circle;","import * as React from 'react';\nvar OrderContext = /*#__PURE__*/React.createContext(null);\nexport default OrderContext;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport canUseDom from \"rc-util/es/Dom/canUseDom\";\nimport OrderContext from \"./Context\";\nvar EMPTY_LIST = [];\n\n/**\n * Will add `div` to document. Nest call will keep order\n * @param render Render DOM in document\n */\nexport default function useDom(render, debug) {\n var _React$useState = React.useState(function () {\n if (!canUseDom()) {\n return null;\n }\n var defaultEle = document.createElement('div');\n if (process.env.NODE_ENV !== 'production' && debug) {\n defaultEle.setAttribute('data-debug', debug);\n }\n return defaultEle;\n }),\n _React$useState2 = _slicedToArray(_React$useState, 1),\n ele = _React$useState2[0];\n\n // ========================== Order ==========================\n var appendedRef = React.useRef(false);\n var queueCreate = React.useContext(OrderContext);\n var _React$useState3 = React.useState(EMPTY_LIST),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n queue = _React$useState4[0],\n setQueue = _React$useState4[1];\n var mergedQueueCreate = queueCreate || (appendedRef.current ? undefined : function (appendFn) {\n setQueue(function (origin) {\n var newQueue = [appendFn].concat(_toConsumableArray(origin));\n return newQueue;\n });\n });\n\n // =========================== DOM ===========================\n function append() {\n if (!ele.parentElement) {\n document.body.appendChild(ele);\n }\n appendedRef.current = true;\n }\n function cleanup() {\n var _ele$parentElement;\n (_ele$parentElement = ele.parentElement) === null || _ele$parentElement === void 0 ? void 0 : _ele$parentElement.removeChild(ele);\n appendedRef.current = false;\n }\n useLayoutEffect(function () {\n if (render) {\n if (queueCreate) {\n queueCreate(append);\n } else {\n append();\n }\n } else {\n cleanup();\n }\n return cleanup;\n }, [render]);\n useLayoutEffect(function () {\n if (queue.length) {\n queue.forEach(function (appendFn) {\n return appendFn();\n });\n setQueue(EMPTY_LIST);\n }\n }, [queue]);\n return [ele, mergedQueueCreate];\n}","/* eslint-disable no-param-reassign */\n\nvar cached;\nexport default function getScrollBarSize(fresh) {\n if (typeof document === 'undefined') {\n return 0;\n }\n if (fresh || cached === undefined) {\n var inner = document.createElement('div');\n inner.style.width = '100%';\n inner.style.height = '200px';\n var outer = document.createElement('div');\n var outerStyle = outer.style;\n outerStyle.position = 'absolute';\n outerStyle.top = '0';\n outerStyle.left = '0';\n outerStyle.pointerEvents = 'none';\n outerStyle.visibility = 'hidden';\n outerStyle.width = '200px';\n outerStyle.height = '150px';\n outerStyle.overflow = 'hidden';\n outer.appendChild(inner);\n document.body.appendChild(outer);\n var widthContained = inner.offsetWidth;\n outer.style.overflow = 'scroll';\n var widthScroll = inner.offsetWidth;\n if (widthContained === widthScroll) {\n widthScroll = outer.clientWidth;\n }\n document.body.removeChild(outer);\n cached = widthContained - widthScroll;\n }\n return cached;\n}\nfunction ensureSize(str) {\n var match = str.match(/^(.*)px$/);\n var value = Number(match === null || match === void 0 ? void 0 : match[1]);\n return Number.isNaN(value) ? getScrollBarSize() : value;\n}\nexport function getTargetScrollBarSize(target) {\n if (typeof document === 'undefined' || !target || !(target instanceof Element)) {\n return {\n width: 0,\n height: 0\n };\n }\n var _getComputedStyle = getComputedStyle(target, '::-webkit-scrollbar'),\n width = _getComputedStyle.width,\n height = _getComputedStyle.height;\n return {\n width: ensureSize(width),\n height: ensureSize(height)\n };\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { updateCSS, removeCSS } from \"rc-util/es/Dom/dynamicCSS\";\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport { getTargetScrollBarSize } from \"rc-util/es/getScrollBarSize\";\nimport { isBodyOverflowing } from \"./util\";\nvar UNIQUE_ID = \"rc-util-locker-\".concat(Date.now());\nvar uuid = 0;\nexport default function useScrollLocker(lock) {\n var mergedLock = !!lock;\n var _React$useState = React.useState(function () {\n uuid += 1;\n return \"\".concat(UNIQUE_ID, \"_\").concat(uuid);\n }),\n _React$useState2 = _slicedToArray(_React$useState, 1),\n id = _React$useState2[0];\n useLayoutEffect(function () {\n if (mergedLock) {\n var scrollbarSize = getTargetScrollBarSize(document.body).width;\n var isOverflow = isBodyOverflowing();\n updateCSS(\"\\nhtml body {\\n overflow-y: hidden;\\n \".concat(isOverflow ? \"width: calc(100% - \".concat(scrollbarSize, \"px);\") : '', \"\\n}\"), id);\n } else {\n removeCSS(id);\n }\n return function () {\n removeCSS(id);\n };\n }, [mergedLock, id]);\n}","/**\n * Test usage export. Do not use in your production\n */\nexport function isBodyOverflowing() {\n return document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight) && window.innerWidth > document.body.offsetWidth;\n}","export var inline = false;\nexport function inlineMock(nextInline) {\n if (typeof nextInline === 'boolean') {\n inline = nextInline;\n }\n return inline;\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { createPortal } from 'react-dom';\nimport canUseDom from \"rc-util/es/Dom/canUseDom\";\nimport warning from \"rc-util/es/warning\";\nimport { supportRef, useComposeRef } from \"rc-util/es/ref\";\nimport OrderContext from \"./Context\";\nimport useDom from \"./useDom\";\nimport useScrollLocker from \"./useScrollLocker\";\nimport { inlineMock } from \"./mock\";\nvar getPortalContainer = function getPortalContainer(getContainer) {\n if (getContainer === false) {\n return false;\n }\n if (!canUseDom() || !getContainer) {\n return null;\n }\n if (typeof getContainer === 'string') {\n return document.querySelector(getContainer);\n }\n if (typeof getContainer === 'function') {\n return getContainer();\n }\n return getContainer;\n};\nvar Portal = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var open = props.open,\n autoLock = props.autoLock,\n getContainer = props.getContainer,\n debug = props.debug,\n _props$autoDestroy = props.autoDestroy,\n autoDestroy = _props$autoDestroy === void 0 ? true : _props$autoDestroy,\n children = props.children;\n var _React$useState = React.useState(open),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n shouldRender = _React$useState2[0],\n setShouldRender = _React$useState2[1];\n var mergedRender = shouldRender || open;\n\n // ========================= Warning =========================\n if (process.env.NODE_ENV !== 'production') {\n warning(canUseDom() || !open, \"Portal only work in client side. Please call 'useEffect' to show Portal instead default render in SSR.\");\n }\n\n // ====================== Should Render ======================\n React.useEffect(function () {\n if (autoDestroy || open) {\n setShouldRender(open);\n }\n }, [open, autoDestroy]);\n\n // ======================== Container ========================\n var _React$useState3 = React.useState(function () {\n return getPortalContainer(getContainer);\n }),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n innerContainer = _React$useState4[0],\n setInnerContainer = _React$useState4[1];\n React.useEffect(function () {\n var customizeContainer = getPortalContainer(getContainer);\n\n // Tell component that we check this in effect which is safe to be `null`\n setInnerContainer(customizeContainer !== null && customizeContainer !== void 0 ? customizeContainer : null);\n });\n var _useDom = useDom(mergedRender && !innerContainer, debug),\n _useDom2 = _slicedToArray(_useDom, 2),\n defaultContainer = _useDom2[0],\n queueCreate = _useDom2[1];\n var mergedContainer = innerContainer !== null && innerContainer !== void 0 ? innerContainer : defaultContainer;\n\n // ========================= Locker ==========================\n useScrollLocker(autoLock && open && canUseDom() && (mergedContainer === defaultContainer || mergedContainer === document.body));\n\n // =========================== Ref ===========================\n var childRef = null;\n if (children && supportRef(children) && ref) {\n var _ref = children;\n childRef = _ref.ref;\n }\n var mergedRef = useComposeRef(childRef, ref);\n\n // ========================= Render ==========================\n // Do not render when nothing need render\n // When innerContainer is `undefined`, it may not ready since user use ref in the same render\n if (!mergedRender || !canUseDom() || innerContainer === undefined) {\n return null;\n }\n\n // Render inline\n var renderInline = mergedContainer === false || inlineMock();\n var reffedChildren = children;\n if (ref) {\n reffedChildren = /*#__PURE__*/React.cloneElement(children, {\n ref: mergedRef\n });\n }\n return /*#__PURE__*/React.createElement(OrderContext.Provider, {\n value: queueCreate\n }, renderInline ? reffedChildren : /*#__PURE__*/createPortal(reffedChildren, mergedContainer));\n});\nif (process.env.NODE_ENV !== 'production') {\n Portal.displayName = 'Portal';\n}\nexport default Portal;","import Portal from \"./Portal\";\nimport { inlineMock } from \"./mock\";\nexport { inlineMock };\nexport default Portal;","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\n/* eslint-disable require-jsdoc, valid-jsdoc */\nvar MapShim = function () {\n if (typeof Map !== 'undefined') {\n return Map;\n }\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\n function getIndex(arr, key) {\n var result = -1;\n arr.some(function (entry, index) {\n if (entry[0] === key) {\n result = index;\n return true;\n }\n return false;\n });\n return result;\n }\n return (/** @class */function () {\n function class_1() {\n this.__entries__ = [];\n }\n Object.defineProperty(class_1.prototype, \"size\", {\n /**\r\n * @returns {boolean}\r\n */\n get: function get() {\n return this.__entries__.length;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\n class_1.prototype.get = function (key) {\n var index = getIndex(this.__entries__, key);\n var entry = this.__entries__[index];\n return entry && entry[1];\n };\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\n class_1.prototype.set = function (key, value) {\n var index = getIndex(this.__entries__, key);\n if (~index) {\n this.__entries__[index][1] = value;\n } else {\n this.__entries__.push([key, value]);\n }\n };\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\n class_1.prototype.delete = function (key) {\n var entries = this.__entries__;\n var index = getIndex(entries, key);\n if (~index) {\n entries.splice(index, 1);\n }\n };\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\n class_1.prototype.has = function (key) {\n return !!~getIndex(this.__entries__, key);\n };\n /**\r\n * @returns {void}\r\n */\n class_1.prototype.clear = function () {\n this.__entries__.splice(0);\n };\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\n class_1.prototype.forEach = function (callback, ctx) {\n if (ctx === void 0) {\n ctx = null;\n }\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\n var entry = _a[_i];\n callback.call(ctx, entry[1], entry[0]);\n }\n };\n return class_1;\n }()\n );\n}();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\nvar global$1 = function () {\n if (typeof global !== 'undefined' && global.Math === Math) {\n return global;\n }\n if (typeof self !== 'undefined' && self.Math === Math) {\n return self;\n }\n if (typeof window !== 'undefined' && window.Math === Math) {\n return window;\n }\n // eslint-disable-next-line no-new-func\n return Function('return this')();\n}();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\nvar requestAnimationFrame$1 = function () {\n if (typeof requestAnimationFrame === 'function') {\n // It's required to use a bounded function because IE sometimes throws\n // an \"Invalid calling object\" error if rAF is invoked without the global\n // object on the left hand side.\n return requestAnimationFrame.bind(global$1);\n }\n return function (callback) {\n return setTimeout(function () {\n return callback(Date.now());\n }, 1000 / 60);\n };\n}();\n\n// Defines minimum timeout before adding a trailing call.\nvar trailingTimeout = 2;\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\nfunction throttle(callback, delay) {\n var leadingCall = false,\n trailingCall = false,\n lastCallTime = 0;\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\n function resolvePending() {\n if (leadingCall) {\n leadingCall = false;\n callback();\n }\n if (trailingCall) {\n proxy();\n }\n }\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\n function timeoutCallback() {\n requestAnimationFrame$1(resolvePending);\n }\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\n function proxy() {\n var timeStamp = Date.now();\n if (leadingCall) {\n // Reject immediately following calls.\n if (timeStamp - lastCallTime < trailingTimeout) {\n return;\n }\n // Schedule new call to be in invoked when the pending one is resolved.\n // This is important for \"transitions\" which never actually start\n // immediately so there is a chance that we might miss one if change\n // happens amids the pending invocation.\n trailingCall = true;\n } else {\n leadingCall = true;\n trailingCall = false;\n setTimeout(timeoutCallback, delay);\n }\n lastCallTime = timeStamp;\n }\n return proxy;\n}\n\n// Minimum delay before invoking the update of observers.\nvar REFRESH_DELAY = 20;\n// A list of substrings of CSS properties used to find transition events that\n// might affect dimensions of observed elements.\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\n// Check if MutationObserver is available.\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\nvar ResizeObserverController = /** @class */function () {\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\n function ResizeObserverController() {\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\n this.connected_ = false;\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\n this.mutationEventsAdded_ = false;\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\n this.mutationsObserver_ = null;\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array}\r\n */\n this.observers_ = [];\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\n }\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\n ResizeObserverController.prototype.addObserver = function (observer) {\n if (!~this.observers_.indexOf(observer)) {\n this.observers_.push(observer);\n }\n // Add listeners if they haven't been added yet.\n if (!this.connected_) {\n this.connect_();\n }\n };\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\n ResizeObserverController.prototype.removeObserver = function (observer) {\n var observers = this.observers_;\n var index = observers.indexOf(observer);\n // Remove observer if it's present in registry.\n if (~index) {\n observers.splice(index, 1);\n }\n // Remove listeners if controller has no connected observers.\n if (!observers.length && this.connected_) {\n this.disconnect_();\n }\n };\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\n ResizeObserverController.prototype.refresh = function () {\n var changesDetected = this.updateObservers_();\n // Continue running updates if changes have been detected as there might\n // be future ones caused by CSS transitions.\n if (changesDetected) {\n this.refresh();\n }\n };\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\n ResizeObserverController.prototype.updateObservers_ = function () {\n // Collect observers that have active observations.\n var activeObservers = this.observers_.filter(function (observer) {\n return observer.gatherActive(), observer.hasActive();\n });\n // Deliver notifications in a separate cycle in order to avoid any\n // collisions between observers, e.g. when multiple instances of\n // ResizeObserver are tracking the same element and the callback of one\n // of them changes content dimensions of the observed target. Sometimes\n // this may result in notifications being blocked for the rest of observers.\n activeObservers.forEach(function (observer) {\n return observer.broadcastActive();\n });\n return activeObservers.length > 0;\n };\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\n ResizeObserverController.prototype.connect_ = function () {\n // Do nothing if running in a non-browser environment or if listeners\n // have been already added.\n if (!isBrowser || this.connected_) {\n return;\n }\n // Subscription to the \"Transitionend\" event is used as a workaround for\n // delayed transitions. This way it's possible to capture at least the\n // final state of an element.\n document.addEventListener('transitionend', this.onTransitionEnd_);\n window.addEventListener('resize', this.refresh);\n if (mutationObserverSupported) {\n this.mutationsObserver_ = new MutationObserver(this.refresh);\n this.mutationsObserver_.observe(document, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true\n });\n } else {\n document.addEventListener('DOMSubtreeModified', this.refresh);\n this.mutationEventsAdded_ = true;\n }\n this.connected_ = true;\n };\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\n ResizeObserverController.prototype.disconnect_ = function () {\n // Do nothing if running in a non-browser environment or if listeners\n // have been already removed.\n if (!isBrowser || !this.connected_) {\n return;\n }\n document.removeEventListener('transitionend', this.onTransitionEnd_);\n window.removeEventListener('resize', this.refresh);\n if (this.mutationsObserver_) {\n this.mutationsObserver_.disconnect();\n }\n if (this.mutationEventsAdded_) {\n document.removeEventListener('DOMSubtreeModified', this.refresh);\n }\n this.mutationsObserver_ = null;\n this.mutationEventsAdded_ = false;\n this.connected_ = false;\n };\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\n var _b = _a.propertyName,\n propertyName = _b === void 0 ? '' : _b;\n // Detect whether transition may affect dimensions of an element.\n var isReflowProperty = transitionKeys.some(function (key) {\n return !!~propertyName.indexOf(key);\n });\n if (isReflowProperty) {\n this.refresh();\n }\n };\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\n ResizeObserverController.getInstance = function () {\n if (!this.instance_) {\n this.instance_ = new ResizeObserverController();\n }\n return this.instance_;\n };\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\n ResizeObserverController.instance_ = null;\n return ResizeObserverController;\n}();\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\nvar defineConfigurable = function defineConfigurable(target, props) {\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\n var key = _a[_i];\n Object.defineProperty(target, key, {\n value: props[key],\n enumerable: false,\n writable: false,\n configurable: true\n });\n }\n return target;\n};\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\nvar getWindowOf = function getWindowOf(target) {\n // Assume that the element is an instance of Node, which means that it\n // has the \"ownerDocument\" property from which we can retrieve a\n // corresponding global object.\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\n // Return the local global object if it's not possible extract one from\n // provided element.\n return ownerGlobal || global$1;\n};\n\n// Placeholder of an empty content rectangle.\nvar emptyRect = createRectInit(0, 0, 0, 0);\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\nfunction toFloat(value) {\n return parseFloat(value) || 0;\n}\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\nfunction getBordersSize(styles) {\n var positions = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n positions[_i - 1] = arguments[_i];\n }\n return positions.reduce(function (size, position) {\n var value = styles['border-' + position + '-width'];\n return size + toFloat(value);\n }, 0);\n}\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\nfunction getPaddings(styles) {\n var positions = ['top', 'right', 'bottom', 'left'];\n var paddings = {};\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\n var position = positions_1[_i];\n var value = styles['padding-' + position];\n paddings[position] = toFloat(value);\n }\n return paddings;\n}\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\nfunction getSVGContentRect(target) {\n var bbox = target.getBBox();\n return createRectInit(0, 0, bbox.width, bbox.height);\n}\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\nfunction getHTMLElementContentRect(target) {\n // Client width & height properties can't be\n // used exclusively as they provide rounded values.\n var clientWidth = target.clientWidth,\n clientHeight = target.clientHeight;\n // By this condition we can catch all non-replaced inline, hidden and\n // detached elements. Though elements with width & height properties less\n // than 0.5 will be discarded as well.\n //\n // Without it we would need to implement separate methods for each of\n // those cases and it's not possible to perform a precise and performance\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\n // gives wrong results for elements with width & height less than 0.5.\n if (!clientWidth && !clientHeight) {\n return emptyRect;\n }\n var styles = getWindowOf(target).getComputedStyle(target);\n var paddings = getPaddings(styles);\n var horizPad = paddings.left + paddings.right;\n var vertPad = paddings.top + paddings.bottom;\n // Computed styles of width & height are being used because they are the\n // only dimensions available to JS that contain non-rounded values. It could\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\n // affected by CSS transformations let alone paddings, borders and scroll bars.\n var width = toFloat(styles.width),\n height = toFloat(styles.height);\n // Width & height include paddings and borders when the 'border-box' box\n // model is applied (except for IE).\n if (styles.boxSizing === 'border-box') {\n // Following conditions are required to handle Internet Explorer which\n // doesn't include paddings and borders to computed CSS dimensions.\n //\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\n // properties then it's either IE, and thus we don't need to subtract\n // anything, or an element merely doesn't have paddings/borders styles.\n if (Math.round(width + horizPad) !== clientWidth) {\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\n }\n if (Math.round(height + vertPad) !== clientHeight) {\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\n }\n }\n // Following steps can't be applied to the document's root element as its\n // client[Width/Height] properties represent viewport area of the window.\n // Besides, it's as well not necessary as the itself neither has\n // rendered scroll bars nor it can be clipped.\n if (!isDocumentElement(target)) {\n // In some browsers (only in Firefox, actually) CSS width & height\n // include scroll bars size which can be removed at this step as scroll\n // bars are the only difference between rounded dimensions + paddings\n // and \"client\" properties, though that is not always true in Chrome.\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\n // Chrome has a rather weird rounding of \"client\" properties.\n // E.g. for an element with content width of 314.2px it sometimes gives\n // the client width of 315px and for the width of 314.7px it may give\n // 314px. And it doesn't happen all the time. So just ignore this delta\n // as a non-relevant.\n if (Math.abs(vertScrollbar) !== 1) {\n width -= vertScrollbar;\n }\n if (Math.abs(horizScrollbar) !== 1) {\n height -= horizScrollbar;\n }\n }\n return createRectInit(paddings.left, paddings.top, width, height);\n}\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\nvar isSVGGraphicsElement = function () {\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\n // interface.\n if (typeof SVGGraphicsElement !== 'undefined') {\n return function (target) {\n return target instanceof getWindowOf(target).SVGGraphicsElement;\n };\n }\n // If it's so, then check that element is at least an instance of the\n // SVGElement and that it has the \"getBBox\" method.\n // eslint-disable-next-line no-extra-parens\n return function (target) {\n return target instanceof getWindowOf(target).SVGElement && typeof target.getBBox === 'function';\n };\n}();\n/**\r\n * Checks whether provided element is a document element ().\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\nfunction isDocumentElement(target) {\n return target === getWindowOf(target).document.documentElement;\n}\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\nfunction getContentRect(target) {\n if (!isBrowser) {\n return emptyRect;\n }\n if (isSVGGraphicsElement(target)) {\n return getSVGContentRect(target);\n }\n return getHTMLElementContentRect(target);\n}\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\nfunction createReadOnlyRect(_a) {\n var x = _a.x,\n y = _a.y,\n width = _a.width,\n height = _a.height;\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\n var rect = Object.create(Constr.prototype);\n // Rectangle's properties are not writable and non-enumerable.\n defineConfigurable(rect, {\n x: x,\n y: y,\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: height + y,\n left: x\n });\n return rect;\n}\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\nfunction createRectInit(x, y, width, height) {\n return {\n x: x,\n y: y,\n width: width,\n height: height\n };\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\nvar ResizeObservation = /** @class */function () {\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\n function ResizeObservation(target) {\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\n this.broadcastWidth = 0;\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\n this.broadcastHeight = 0;\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\n this.contentRect_ = createRectInit(0, 0, 0, 0);\n this.target = target;\n }\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\n ResizeObservation.prototype.isActive = function () {\n var rect = getContentRect(this.target);\n this.contentRect_ = rect;\n return rect.width !== this.broadcastWidth || rect.height !== this.broadcastHeight;\n };\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\n ResizeObservation.prototype.broadcastRect = function () {\n var rect = this.contentRect_;\n this.broadcastWidth = rect.width;\n this.broadcastHeight = rect.height;\n return rect;\n };\n return ResizeObservation;\n}();\nvar ResizeObserverEntry = /** @class */function () {\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\n function ResizeObserverEntry(target, rectInit) {\n var contentRect = createReadOnlyRect(rectInit);\n // According to the specification following properties are not writable\n // and are also not enumerable in the native implementation.\n //\n // Property accessors are not being used as they'd require to define a\n // private WeakMap storage which may cause memory leaks in browsers that\n // don't support this type of collections.\n defineConfigurable(this, {\n target: target,\n contentRect: contentRect\n });\n }\n return ResizeObserverEntry;\n}();\nvar ResizeObserverSPI = /** @class */function () {\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\n function ResizeObserverSPI(callback, controller, callbackCtx) {\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array}\r\n */\n this.activeObservations_ = [];\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map}\r\n */\n this.observations_ = new MapShim();\n if (typeof callback !== 'function') {\n throw new TypeError('The callback provided as parameter 1 is not a function.');\n }\n this.callback_ = callback;\n this.controller_ = controller;\n this.callbackCtx_ = callbackCtx;\n }\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\n ResizeObserverSPI.prototype.observe = function (target) {\n if (!arguments.length) {\n throw new TypeError('1 argument required, but only 0 present.');\n }\n // Do nothing if current environment doesn't have the Element interface.\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\n return;\n }\n if (!(target instanceof getWindowOf(target).Element)) {\n throw new TypeError('parameter 1 is not of type \"Element\".');\n }\n var observations = this.observations_;\n // Do nothing if element is already being observed.\n if (observations.has(target)) {\n return;\n }\n observations.set(target, new ResizeObservation(target));\n this.controller_.addObserver(this);\n // Force the update of observations.\n this.controller_.refresh();\n };\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\n ResizeObserverSPI.prototype.unobserve = function (target) {\n if (!arguments.length) {\n throw new TypeError('1 argument required, but only 0 present.');\n }\n // Do nothing if current environment doesn't have the Element interface.\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\n return;\n }\n if (!(target instanceof getWindowOf(target).Element)) {\n throw new TypeError('parameter 1 is not of type \"Element\".');\n }\n var observations = this.observations_;\n // Do nothing if element is not being observed.\n if (!observations.has(target)) {\n return;\n }\n observations.delete(target);\n if (!observations.size) {\n this.controller_.removeObserver(this);\n }\n };\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\n ResizeObserverSPI.prototype.disconnect = function () {\n this.clearActive();\n this.observations_.clear();\n this.controller_.removeObserver(this);\n };\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\n ResizeObserverSPI.prototype.gatherActive = function () {\n var _this = this;\n this.clearActive();\n this.observations_.forEach(function (observation) {\n if (observation.isActive()) {\n _this.activeObservations_.push(observation);\n }\n });\n };\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\n ResizeObserverSPI.prototype.broadcastActive = function () {\n // Do nothing if observer doesn't have active observations.\n if (!this.hasActive()) {\n return;\n }\n var ctx = this.callbackCtx_;\n // Create ResizeObserverEntry instance for every active observation.\n var entries = this.activeObservations_.map(function (observation) {\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\n });\n this.callback_.call(ctx, entries, ctx);\n this.clearActive();\n };\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\n ResizeObserverSPI.prototype.clearActive = function () {\n this.activeObservations_.splice(0);\n };\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\n ResizeObserverSPI.prototype.hasActive = function () {\n return this.activeObservations_.length > 0;\n };\n return ResizeObserverSPI;\n}();\n\n// Registry of internal observers. If WeakMap is not available use current shim\n// for the Map collection as it has all required methods and because WeakMap\n// can't be fully polyfilled anyway.\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\nvar ResizeObserver = /** @class */function () {\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\n function ResizeObserver(callback) {\n if (!(this instanceof ResizeObserver)) {\n throw new TypeError('Cannot call a class as a function.');\n }\n if (!arguments.length) {\n throw new TypeError('1 argument required, but only 0 present.');\n }\n var controller = ResizeObserverController.getInstance();\n var observer = new ResizeObserverSPI(callback, controller, this);\n observers.set(this, observer);\n }\n return ResizeObserver;\n}();\n// Expose public methods of ResizeObserver.\n['observe', 'unobserve', 'disconnect'].forEach(function (method) {\n ResizeObserver.prototype[method] = function () {\n var _a;\n return (_a = observers.get(this))[method].apply(_a, arguments);\n };\n});\nvar index = function () {\n // Export existing implementation if available.\n if (typeof global$1.ResizeObserver !== 'undefined') {\n return global$1.ResizeObserver;\n }\n return ResizeObserver;\n}();\nexport default index;","import ResizeObserver from 'resize-observer-polyfill';\n// =============================== Const ===============================\nvar elementListeners = new Map();\nfunction onResize(entities) {\n entities.forEach(function (entity) {\n var _elementListeners$get;\n var target = entity.target;\n (_elementListeners$get = elementListeners.get(target)) === null || _elementListeners$get === void 0 ? void 0 : _elementListeners$get.forEach(function (listener) {\n return listener(target);\n });\n });\n}\n// Note: ResizeObserver polyfill not support option to measure border-box resize\nvar resizeObserver = new ResizeObserver(onResize);\n// Dev env only\nexport var _el = process.env.NODE_ENV !== 'production' ? elementListeners : null; // eslint-disable-line\nexport var _rs = process.env.NODE_ENV !== 'production' ? onResize : null; // eslint-disable-line\n// ============================== Observe ==============================\nexport function observe(element, callback) {\n if (!elementListeners.has(element)) {\n elementListeners.set(element, new Set());\n resizeObserver.observe(element);\n }\n elementListeners.get(element).add(callback);\n}\nexport function unobserve(element, callback) {\n if (elementListeners.has(element)) {\n elementListeners.get(element).delete(callback);\n if (!elementListeners.get(element).size) {\n resizeObserver.unobserve(element);\n elementListeners.delete(element);\n }\n }\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport * as React from 'react';\n/**\n * Fallback to findDOMNode if origin ref do not provide any dom element\n */\nvar DomWrapper = /*#__PURE__*/function (_React$Component) {\n _inherits(DomWrapper, _React$Component);\n var _super = _createSuper(DomWrapper);\n function DomWrapper() {\n _classCallCheck(this, DomWrapper);\n return _super.apply(this, arguments);\n }\n _createClass(DomWrapper, [{\n key: \"render\",\n value: function render() {\n return this.props.children;\n }\n }]);\n return DomWrapper;\n}(React.Component);\nexport { DomWrapper as default };","import * as React from 'react';\nexport var CollectionContext = /*#__PURE__*/React.createContext(null);\n/**\n * Collect all the resize event from children ResizeObserver\n */\nexport function Collection(_ref) {\n var children = _ref.children,\n onBatchResize = _ref.onBatchResize;\n var resizeIdRef = React.useRef(0);\n var resizeInfosRef = React.useRef([]);\n var onCollectionResize = React.useContext(CollectionContext);\n var onResize = React.useCallback(function (size, element, data) {\n resizeIdRef.current += 1;\n var currentId = resizeIdRef.current;\n resizeInfosRef.current.push({\n size: size,\n element: element,\n data: data\n });\n Promise.resolve().then(function () {\n if (currentId === resizeIdRef.current) {\n onBatchResize === null || onBatchResize === void 0 ? void 0 : onBatchResize(resizeInfosRef.current);\n resizeInfosRef.current = [];\n }\n });\n // Continue bubbling if parent exist\n onCollectionResize === null || onCollectionResize === void 0 ? void 0 : onCollectionResize(size, element, data);\n }, [onBatchResize, onCollectionResize]);\n return /*#__PURE__*/React.createElement(CollectionContext.Provider, {\n value: onResize\n }, children);\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport { composeRef, supportRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nimport findDOMNode from \"rc-util/es/Dom/findDOMNode\";\nimport { observe, unobserve } from '../utils/observerUtil';\nimport DomWrapper from './DomWrapper';\nimport { CollectionContext } from '../Collection';\nfunction SingleObserver(props, ref) {\n var children = props.children,\n disabled = props.disabled;\n var elementRef = React.useRef(null);\n var wrapperRef = React.useRef(null);\n var onCollectionResize = React.useContext(CollectionContext);\n // =========================== Children ===========================\n var isRenderProps = typeof children === 'function';\n var mergedChildren = isRenderProps ? children(elementRef) : children;\n // ============================= Size =============================\n var sizeRef = React.useRef({\n width: -1,\n height: -1,\n offsetWidth: -1,\n offsetHeight: -1\n });\n // ============================= Ref ==============================\n var canRef = !isRenderProps && /*#__PURE__*/React.isValidElement(mergedChildren) && supportRef(mergedChildren);\n var originRef = canRef ? mergedChildren.ref : null;\n var mergedRef = React.useMemo(function () {\n return composeRef(originRef, elementRef);\n }, [originRef, elementRef]);\n var getDom = function getDom() {\n return findDOMNode(elementRef.current) || findDOMNode(wrapperRef.current);\n };\n React.useImperativeHandle(ref, function () {\n return getDom();\n });\n // =========================== Observe ============================\n var propsRef = React.useRef(props);\n propsRef.current = props;\n // Handler\n var onInternalResize = React.useCallback(function (target) {\n var _propsRef$current = propsRef.current,\n onResize = _propsRef$current.onResize,\n data = _propsRef$current.data;\n var _target$getBoundingCl = target.getBoundingClientRect(),\n width = _target$getBoundingCl.width,\n height = _target$getBoundingCl.height;\n var offsetWidth = target.offsetWidth,\n offsetHeight = target.offsetHeight;\n /**\n * Resize observer trigger when content size changed.\n * In most case we just care about element size,\n * let's use `boundary` instead of `contentRect` here to avoid shaking.\n */\n var fixedWidth = Math.floor(width);\n var fixedHeight = Math.floor(height);\n if (sizeRef.current.width !== fixedWidth || sizeRef.current.height !== fixedHeight || sizeRef.current.offsetWidth !== offsetWidth || sizeRef.current.offsetHeight !== offsetHeight) {\n var size = {\n width: fixedWidth,\n height: fixedHeight,\n offsetWidth: offsetWidth,\n offsetHeight: offsetHeight\n };\n sizeRef.current = size;\n // IE is strange, right?\n var mergedOffsetWidth = offsetWidth === Math.round(width) ? width : offsetWidth;\n var mergedOffsetHeight = offsetHeight === Math.round(height) ? height : offsetHeight;\n var sizeInfo = _objectSpread(_objectSpread({}, size), {}, {\n offsetWidth: mergedOffsetWidth,\n offsetHeight: mergedOffsetHeight\n });\n // Let collection know what happened\n onCollectionResize === null || onCollectionResize === void 0 ? void 0 : onCollectionResize(sizeInfo, target, data);\n if (onResize) {\n // defer the callback but not defer to next frame\n Promise.resolve().then(function () {\n onResize(sizeInfo, target);\n });\n }\n }\n }, []);\n // Dynamic observe\n React.useEffect(function () {\n var currentElement = getDom();\n if (currentElement && !disabled) {\n observe(currentElement, onInternalResize);\n }\n return function () {\n return unobserve(currentElement, onInternalResize);\n };\n }, [elementRef.current, disabled]);\n // ============================ Render ============================\n return /*#__PURE__*/React.createElement(DomWrapper, {\n ref: wrapperRef\n }, canRef ? /*#__PURE__*/React.cloneElement(mergedChildren, {\n ref: mergedRef\n }) : mergedChildren);\n}\nvar RefSingleObserver = /*#__PURE__*/React.forwardRef(SingleObserver);\nif (process.env.NODE_ENV !== 'production') {\n RefSingleObserver.displayName = 'SingleObserver';\n}\nexport default RefSingleObserver;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport toArray from \"rc-util/es/Children/toArray\";\nimport { warning } from \"rc-util/es/warning\";\nimport SingleObserver from './SingleObserver';\nimport { Collection } from './Collection';\nvar INTERNAL_PREFIX_KEY = 'rc-observer-key';\nimport { _rs } from './utils/observerUtil';\nexport { /** @private Test only for mock trigger resize event */\n_rs };\nfunction ResizeObserver(props, ref) {\n var children = props.children;\n var childNodes = typeof children === 'function' ? [children] : toArray(children);\n if (process.env.NODE_ENV !== 'production') {\n if (childNodes.length > 1) {\n warning(false, 'Find more than one child node with `children` in ResizeObserver. Please use ResizeObserver.Collection instead.');\n } else if (childNodes.length === 0) {\n warning(false, '`children` of ResizeObserver is empty. Nothing is in observe.');\n }\n }\n return childNodes.map(function (child, index) {\n var key = (child === null || child === void 0 ? void 0 : child.key) || \"\".concat(INTERNAL_PREFIX_KEY, \"-\").concat(index);\n return /*#__PURE__*/React.createElement(SingleObserver, _extends({}, props, {\n key: key,\n ref: index === 0 ? ref : undefined\n }), child);\n });\n}\nvar RefResizeObserver = /*#__PURE__*/React.forwardRef(ResizeObserver);\nif (process.env.NODE_ENV !== 'production') {\n RefResizeObserver.displayName = 'ResizeObserver';\n}\nRefResizeObserver.Collection = Collection;\nexport default RefResizeObserver;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nfunction getUseId() {\n // We need fully clone React function here to avoid webpack warning React 17 do not export `useId`\n var fullClone = _objectSpread({}, React);\n return fullClone.useId;\n}\nvar uuid = 0;\n\n/** @private Note only worked in develop env. Not work in production. */\nexport function resetUuid() {\n if (process.env.NODE_ENV !== 'production') {\n uuid = 0;\n }\n}\nexport default function useId(id) {\n // Inner id for accessibility usage. Only work in client side\n var _React$useState = React.useState('ssr-id'),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n innerId = _React$useState2[0],\n setInnerId = _React$useState2[1];\n var useOriginId = getUseId();\n var reactNativeId = useOriginId === null || useOriginId === void 0 ? void 0 : useOriginId();\n React.useEffect(function () {\n if (!useOriginId) {\n var nextId = uuid;\n uuid += 1;\n setInnerId(\"rc_unique_\".concat(nextId));\n }\n }, []);\n\n // Developer passed id is single source of truth\n if (id) {\n return id;\n }\n\n // Test env always return mock id\n if (process.env.NODE_ENV === 'test') {\n return 'test-id';\n }\n\n // Return react native id or inner id\n return reactNativeId || innerId;\n}","export default (function () {\n if (typeof navigator === 'undefined' || typeof window === 'undefined') {\n return false;\n }\n var agent = navigator.userAgent || navigator.vendor || window.opera;\n return /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(agent) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(agent === null || agent === void 0 ? void 0 : agent.substr(0, 4));\n});","import * as React from 'react';\nvar TriggerContext = /*#__PURE__*/React.createContext(null);\nexport default TriggerContext;","import * as React from 'react';\nfunction toArray(val) {\n return val ? Array.isArray(val) ? val : [val] : [];\n}\nexport default function useAction(mobile, action, showAction, hideAction) {\n return React.useMemo(function () {\n var mergedShowAction = toArray(showAction !== null && showAction !== void 0 ? showAction : action);\n var mergedHideAction = toArray(hideAction !== null && hideAction !== void 0 ? hideAction : action);\n var showActionSet = new Set(mergedShowAction);\n var hideActionSet = new Set(mergedHideAction);\n if (mobile) {\n if (showActionSet.has('hover')) {\n showActionSet.delete('hover');\n showActionSet.add('click');\n }\n if (hideActionSet.has('hover')) {\n hideActionSet.delete('hover');\n hideActionSet.add('click');\n }\n }\n return [showActionSet, hideActionSet];\n }, [mobile, action, showAction, hideAction]);\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nfunction isPointsEq() {\n var a1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var a2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var isAlignPoint = arguments.length > 2 ? arguments[2] : undefined;\n if (isAlignPoint) {\n return a1[0] === a2[0];\n }\n return a1[0] === a2[0] && a1[1] === a2[1];\n}\nexport function getAlignPopupClassName(builtinPlacements, prefixCls, align, isAlignPoint) {\n var points = align.points;\n var placements = Object.keys(builtinPlacements);\n for (var i = 0; i < placements.length; i += 1) {\n var _builtinPlacements$pl;\n var placement = placements[i];\n if (isPointsEq((_builtinPlacements$pl = builtinPlacements[placement]) === null || _builtinPlacements$pl === void 0 ? void 0 : _builtinPlacements$pl.points, points, isAlignPoint)) {\n return \"\".concat(prefixCls, \"-placement-\").concat(placement);\n }\n }\n return '';\n}\n\n/** @deprecated We should not use this if we can refactor all deps */\nexport function getMotion(prefixCls, motion, animation, transitionName) {\n if (motion) {\n return motion;\n }\n if (animation) {\n return {\n motionName: \"\".concat(prefixCls, \"-\").concat(animation)\n };\n }\n if (transitionName) {\n return {\n motionName: transitionName\n };\n }\n return null;\n}\nexport function getWin(ele) {\n return ele.ownerDocument.defaultView;\n}\n\n/**\n * Get all the scrollable parent elements of the element\n * @param ele The element to be detected\n * @param areaOnly Only return the parent which will cut visible area\n */\nexport function collectScroller(ele) {\n var scrollerList = [];\n var current = ele === null || ele === void 0 ? void 0 : ele.parentElement;\n var scrollStyle = ['hidden', 'scroll', 'clip', 'auto'];\n while (current) {\n var _getWin$getComputedSt = getWin(current).getComputedStyle(current),\n overflowX = _getWin$getComputedSt.overflowX,\n overflowY = _getWin$getComputedSt.overflowY,\n overflow = _getWin$getComputedSt.overflow;\n if ([overflowX, overflowY, overflow].some(function (o) {\n return scrollStyle.includes(o);\n })) {\n scrollerList.push(current);\n }\n current = current.parentElement;\n }\n return scrollerList;\n}\nexport function toNum(num) {\n var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n return Number.isNaN(num) ? defaultValue : num;\n}\nfunction getPxValue(val) {\n return toNum(parseFloat(val), 0);\n}\n/**\n *\n *\n * **************************************\n * * Border *\n * * ************************** *\n * * * * * *\n * * B * * S * B *\n * * o * * c * o *\n * * r * Content * r * r *\n * * d * * o * d *\n * * e * * l * e *\n * * r ******************** l * r *\n * * * Scroll * *\n * * ************************** *\n * * Border *\n * **************************************\n *\n */\n/**\n * Get visible area of element\n */\nexport function getVisibleArea(initArea, scrollerList) {\n var visibleArea = _objectSpread({}, initArea);\n (scrollerList || []).forEach(function (ele) {\n if (ele instanceof HTMLBodyElement) {\n return;\n }\n\n // Skip if static position which will not affect visible area\n var _getWin$getComputedSt2 = getWin(ele).getComputedStyle(ele),\n overflow = _getWin$getComputedSt2.overflow,\n overflowClipMargin = _getWin$getComputedSt2.overflowClipMargin,\n borderTopWidth = _getWin$getComputedSt2.borderTopWidth,\n borderBottomWidth = _getWin$getComputedSt2.borderBottomWidth,\n borderLeftWidth = _getWin$getComputedSt2.borderLeftWidth,\n borderRightWidth = _getWin$getComputedSt2.borderRightWidth;\n var eleRect = ele.getBoundingClientRect();\n var eleOutHeight = ele.offsetHeight,\n eleInnerHeight = ele.clientHeight,\n eleOutWidth = ele.offsetWidth,\n eleInnerWidth = ele.clientWidth;\n var borderTopNum = getPxValue(borderTopWidth);\n var borderBottomNum = getPxValue(borderBottomWidth);\n var borderLeftNum = getPxValue(borderLeftWidth);\n var borderRightNum = getPxValue(borderRightWidth);\n var scaleX = toNum(Math.round(eleRect.width / eleOutWidth * 1000) / 1000);\n var scaleY = toNum(Math.round(eleRect.height / eleOutHeight * 1000) / 1000);\n\n // Original visible area\n var eleScrollWidth = (eleOutWidth - eleInnerWidth - borderLeftNum - borderRightNum) * scaleX;\n var eleScrollHeight = (eleOutHeight - eleInnerHeight - borderTopNum - borderBottomNum) * scaleY;\n\n // Cut border size\n var scaledBorderTopWidth = borderTopNum * scaleY;\n var scaledBorderBottomWidth = borderBottomNum * scaleY;\n var scaledBorderLeftWidth = borderLeftNum * scaleX;\n var scaledBorderRightWidth = borderRightNum * scaleX;\n\n // Clip margin\n var clipMarginWidth = 0;\n var clipMarginHeight = 0;\n if (overflow === 'clip') {\n var clipNum = getPxValue(overflowClipMargin);\n clipMarginWidth = clipNum * scaleX;\n clipMarginHeight = clipNum * scaleY;\n }\n\n // Region\n var eleLeft = eleRect.x + scaledBorderLeftWidth - clipMarginWidth;\n var eleTop = eleRect.y + scaledBorderTopWidth - clipMarginHeight;\n var eleRight = eleLeft + eleRect.width + 2 * clipMarginWidth - scaledBorderLeftWidth - scaledBorderRightWidth - eleScrollWidth;\n var eleBottom = eleTop + eleRect.height + 2 * clipMarginHeight - scaledBorderTopWidth - scaledBorderBottomWidth - eleScrollHeight;\n visibleArea.left = Math.max(visibleArea.left, eleLeft);\n visibleArea.top = Math.max(visibleArea.top, eleTop);\n visibleArea.right = Math.min(visibleArea.right, eleRight);\n visibleArea.bottom = Math.min(visibleArea.bottom, eleBottom);\n });\n return visibleArea;\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { isDOM } from \"rc-util/es/Dom/findDOMNode\";\nimport isVisible from \"rc-util/es/Dom/isVisible\";\nimport useEvent from \"rc-util/es/hooks/useEvent\";\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport * as React from 'react';\nimport { collectScroller, getVisibleArea, getWin, toNum } from \"../util\";\nfunction getUnitOffset(size) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var offsetStr = \"\".concat(offset);\n var cells = offsetStr.match(/^(.*)\\%$/);\n if (cells) {\n return size * (parseFloat(cells[1]) / 100);\n }\n return parseFloat(offsetStr);\n}\nfunction getNumberOffset(rect, offset) {\n var _ref = offset || [],\n _ref2 = _slicedToArray(_ref, 2),\n offsetX = _ref2[0],\n offsetY = _ref2[1];\n return [getUnitOffset(rect.width, offsetX), getUnitOffset(rect.height, offsetY)];\n}\nfunction splitPoints() {\n var points = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n return [points[0], points[1]];\n}\nfunction getAlignPoint(rect, points) {\n var topBottom = points[0];\n var leftRight = points[1];\n var x;\n var y;\n\n // Top & Bottom\n if (topBottom === 't') {\n y = rect.y;\n } else if (topBottom === 'b') {\n y = rect.y + rect.height;\n } else {\n y = rect.y + rect.height / 2;\n }\n\n // Left & Right\n if (leftRight === 'l') {\n x = rect.x;\n } else if (leftRight === 'r') {\n x = rect.x + rect.width;\n } else {\n x = rect.x + rect.width / 2;\n }\n return {\n x: x,\n y: y\n };\n}\nfunction reversePoints(points, index) {\n var reverseMap = {\n t: 'b',\n b: 't',\n l: 'r',\n r: 'l'\n };\n return points.map(function (point, i) {\n if (i === index) {\n return reverseMap[point] || 'c';\n }\n return point;\n }).join('');\n}\nexport default function useAlign(open, popupEle, target, placement, builtinPlacements, popupAlign, onPopupAlign) {\n var _React$useState = React.useState({\n ready: false,\n offsetX: 0,\n offsetY: 0,\n offsetR: 0,\n offsetB: 0,\n arrowX: 0,\n arrowY: 0,\n scaleX: 1,\n scaleY: 1,\n align: builtinPlacements[placement] || {}\n }),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n offsetInfo = _React$useState2[0],\n setOffsetInfo = _React$useState2[1];\n var alignCountRef = React.useRef(0);\n var scrollerList = React.useMemo(function () {\n if (!popupEle) {\n return [];\n }\n return collectScroller(popupEle);\n }, [popupEle]);\n\n // ========================= Flip ==========================\n // We will memo flip info.\n // If size change to make flip, it will memo the flip info and use it in next align.\n var prevFlipRef = React.useRef({});\n var resetFlipCache = function resetFlipCache() {\n prevFlipRef.current = {};\n };\n if (!open) {\n resetFlipCache();\n }\n\n // ========================= Align =========================\n var onAlign = useEvent(function () {\n if (popupEle && target && open) {\n // ============== Intersection ===============\n // Get area by position. Used for check if flip area is better\n var getIntersectionVisibleArea = function getIntersectionVisibleArea(offsetX, offsetY) {\n var area = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : visibleArea;\n var l = popupRect.x + offsetX;\n var t = popupRect.y + offsetY;\n var r = l + popupWidth;\n var b = t + popupHeight;\n var visibleL = Math.max(l, area.left);\n var visibleT = Math.max(t, area.top);\n var visibleR = Math.min(r, area.right);\n var visibleB = Math.min(b, area.bottom);\n return Math.max(0, (visibleR - visibleL) * (visibleB - visibleT));\n };\n var syncNextPopupPosition = function syncNextPopupPosition() {\n nextPopupY = popupRect.y + nextOffsetY;\n nextPopupBottom = nextPopupY + popupHeight;\n nextPopupX = popupRect.x + nextOffsetX;\n nextPopupRight = nextPopupX + popupWidth;\n };\n var popupElement = popupEle;\n var originLeft = popupElement.style.left;\n var originTop = popupElement.style.top;\n var originRight = popupElement.style.right;\n var originBottom = popupElement.style.bottom;\n var doc = popupElement.ownerDocument;\n var win = getWin(popupElement);\n\n // Placement\n var placementInfo = _objectSpread(_objectSpread({}, builtinPlacements[placement]), popupAlign);\n\n // Reset first\n popupElement.style.left = '0';\n popupElement.style.top = '0';\n popupElement.style.right = 'auto';\n popupElement.style.bottom = 'auto';\n\n // Calculate align style, we should consider `transform` case\n var targetRect;\n if (Array.isArray(target)) {\n targetRect = {\n x: target[0],\n y: target[1],\n width: 0,\n height: 0\n };\n } else {\n var rect = target.getBoundingClientRect();\n targetRect = {\n x: rect.x,\n y: rect.y,\n width: rect.width,\n height: rect.height\n };\n }\n var popupRect = popupElement.getBoundingClientRect();\n var _win$getComputedStyle = win.getComputedStyle(popupElement),\n width = _win$getComputedStyle.width,\n height = _win$getComputedStyle.height;\n var _doc$documentElement = doc.documentElement,\n clientWidth = _doc$documentElement.clientWidth,\n clientHeight = _doc$documentElement.clientHeight,\n scrollWidth = _doc$documentElement.scrollWidth,\n scrollHeight = _doc$documentElement.scrollHeight,\n scrollTop = _doc$documentElement.scrollTop,\n scrollLeft = _doc$documentElement.scrollLeft;\n var popupHeight = popupRect.height;\n var popupWidth = popupRect.width;\n var targetHeight = targetRect.height;\n var targetWidth = targetRect.width;\n\n // Get bounding of visible area\n var visibleRegion = {\n left: 0,\n top: 0,\n right: clientWidth,\n bottom: clientHeight\n };\n var scrollRegion = {\n left: -scrollLeft,\n top: -scrollTop,\n right: scrollWidth - scrollLeft,\n bottom: scrollHeight - scrollTop\n };\n var htmlRegion = placementInfo.htmlRegion;\n var VISIBLE = 'visible';\n var VISIBLE_FIRST = 'visibleFirst';\n if (htmlRegion !== 'scroll' && htmlRegion !== VISIBLE_FIRST) {\n htmlRegion = VISIBLE;\n }\n var isVisibleFirst = htmlRegion === VISIBLE_FIRST;\n var scrollRegionArea = getVisibleArea(scrollRegion, scrollerList);\n var visibleRegionArea = getVisibleArea(visibleRegion, scrollerList);\n var visibleArea = htmlRegion === VISIBLE ? visibleRegionArea : scrollRegionArea;\n\n // When set to `visibleFirst`,\n // the check `adjust` logic will use `visibleRegion` for check first.\n var adjustCheckVisibleArea = isVisibleFirst ? visibleRegionArea : visibleArea;\n\n // Record right & bottom align data\n popupElement.style.left = 'auto';\n popupElement.style.top = 'auto';\n popupElement.style.right = '0';\n popupElement.style.bottom = '0';\n var popupMirrorRect = popupElement.getBoundingClientRect();\n\n // Reset back\n popupElement.style.left = originLeft;\n popupElement.style.top = originTop;\n popupElement.style.right = originRight;\n popupElement.style.bottom = originBottom;\n\n // Calculate scale\n var _scaleX = toNum(Math.round(popupWidth / parseFloat(width) * 1000) / 1000);\n var _scaleY = toNum(Math.round(popupHeight / parseFloat(height) * 1000) / 1000);\n\n // No need to align since it's not visible in view\n if (_scaleX === 0 || _scaleY === 0 || isDOM(target) && !isVisible(target)) {\n return;\n }\n\n // Offset\n var offset = placementInfo.offset,\n targetOffset = placementInfo.targetOffset;\n var _getNumberOffset = getNumberOffset(popupRect, offset),\n _getNumberOffset2 = _slicedToArray(_getNumberOffset, 2),\n popupOffsetX = _getNumberOffset2[0],\n popupOffsetY = _getNumberOffset2[1];\n var _getNumberOffset3 = getNumberOffset(targetRect, targetOffset),\n _getNumberOffset4 = _slicedToArray(_getNumberOffset3, 2),\n targetOffsetX = _getNumberOffset4[0],\n targetOffsetY = _getNumberOffset4[1];\n targetRect.x -= targetOffsetX;\n targetRect.y -= targetOffsetY;\n\n // Points\n var _ref3 = placementInfo.points || [],\n _ref4 = _slicedToArray(_ref3, 2),\n popupPoint = _ref4[0],\n targetPoint = _ref4[1];\n var targetPoints = splitPoints(targetPoint);\n var popupPoints = splitPoints(popupPoint);\n var targetAlignPoint = getAlignPoint(targetRect, targetPoints);\n var popupAlignPoint = getAlignPoint(popupRect, popupPoints);\n\n // Real align info may not same as origin one\n var nextAlignInfo = _objectSpread({}, placementInfo);\n\n // Next Offset\n var nextOffsetX = targetAlignPoint.x - popupAlignPoint.x + popupOffsetX;\n var nextOffsetY = targetAlignPoint.y - popupAlignPoint.y + popupOffsetY;\n var originIntersectionVisibleArea = getIntersectionVisibleArea(nextOffsetX, nextOffsetY);\n\n // As `visibleFirst`, we prepare this for check\n var originIntersectionRecommendArea = getIntersectionVisibleArea(nextOffsetX, nextOffsetY, visibleRegionArea);\n\n // ========================== Overflow ===========================\n var targetAlignPointTL = getAlignPoint(targetRect, ['t', 'l']);\n var popupAlignPointTL = getAlignPoint(popupRect, ['t', 'l']);\n var targetAlignPointBR = getAlignPoint(targetRect, ['b', 'r']);\n var popupAlignPointBR = getAlignPoint(popupRect, ['b', 'r']);\n var overflow = placementInfo.overflow || {};\n var adjustX = overflow.adjustX,\n adjustY = overflow.adjustY,\n shiftX = overflow.shiftX,\n shiftY = overflow.shiftY;\n var supportAdjust = function supportAdjust(val) {\n if (typeof val === 'boolean') {\n return val;\n }\n return val >= 0;\n };\n\n // Prepare position\n var nextPopupY;\n var nextPopupBottom;\n var nextPopupX;\n var nextPopupRight;\n syncNextPopupPosition();\n\n // >>>>>>>>>> Top & Bottom\n var needAdjustY = supportAdjust(adjustY);\n var sameTB = popupPoints[0] === targetPoints[0];\n\n // Bottom to Top\n if (needAdjustY && popupPoints[0] === 't' && (nextPopupBottom > adjustCheckVisibleArea.bottom || prevFlipRef.current.bt)) {\n var tmpNextOffsetY = nextOffsetY;\n if (sameTB) {\n tmpNextOffsetY -= popupHeight - targetHeight;\n } else {\n tmpNextOffsetY = targetAlignPointTL.y - popupAlignPointBR.y - popupOffsetY;\n }\n var newVisibleArea = getIntersectionVisibleArea(nextOffsetX, tmpNextOffsetY);\n var newVisibleRecommendArea = getIntersectionVisibleArea(nextOffsetX, tmpNextOffsetY, visibleRegionArea);\n if (\n // Of course use larger one\n newVisibleArea > originIntersectionVisibleArea || newVisibleArea === originIntersectionVisibleArea && (!isVisibleFirst ||\n // Choose recommend one\n newVisibleRecommendArea >= originIntersectionRecommendArea)) {\n prevFlipRef.current.bt = true;\n nextOffsetY = tmpNextOffsetY;\n popupOffsetY = -popupOffsetY;\n nextAlignInfo.points = [reversePoints(popupPoints, 0), reversePoints(targetPoints, 0)];\n } else {\n prevFlipRef.current.bt = false;\n }\n }\n\n // Top to Bottom\n if (needAdjustY && popupPoints[0] === 'b' && (nextPopupY < adjustCheckVisibleArea.top || prevFlipRef.current.tb)) {\n var _tmpNextOffsetY = nextOffsetY;\n if (sameTB) {\n _tmpNextOffsetY += popupHeight - targetHeight;\n } else {\n _tmpNextOffsetY = targetAlignPointBR.y - popupAlignPointTL.y - popupOffsetY;\n }\n var _newVisibleArea = getIntersectionVisibleArea(nextOffsetX, _tmpNextOffsetY);\n var _newVisibleRecommendArea = getIntersectionVisibleArea(nextOffsetX, _tmpNextOffsetY, visibleRegionArea);\n if (\n // Of course use larger one\n _newVisibleArea > originIntersectionVisibleArea || _newVisibleArea === originIntersectionVisibleArea && (!isVisibleFirst ||\n // Choose recommend one\n _newVisibleRecommendArea >= originIntersectionRecommendArea)) {\n prevFlipRef.current.tb = true;\n nextOffsetY = _tmpNextOffsetY;\n popupOffsetY = -popupOffsetY;\n nextAlignInfo.points = [reversePoints(popupPoints, 0), reversePoints(targetPoints, 0)];\n } else {\n prevFlipRef.current.tb = false;\n }\n }\n\n // >>>>>>>>>> Left & Right\n var needAdjustX = supportAdjust(adjustX);\n\n // >>>>> Flip\n var sameLR = popupPoints[1] === targetPoints[1];\n\n // Right to Left\n if (needAdjustX && popupPoints[1] === 'l' && (nextPopupRight > adjustCheckVisibleArea.right || prevFlipRef.current.rl)) {\n var tmpNextOffsetX = nextOffsetX;\n if (sameLR) {\n tmpNextOffsetX -= popupWidth - targetWidth;\n } else {\n tmpNextOffsetX = targetAlignPointTL.x - popupAlignPointBR.x - popupOffsetX;\n }\n var _newVisibleArea2 = getIntersectionVisibleArea(tmpNextOffsetX, nextOffsetY);\n var _newVisibleRecommendArea2 = getIntersectionVisibleArea(tmpNextOffsetX, nextOffsetY, visibleRegionArea);\n if (\n // Of course use larger one\n _newVisibleArea2 > originIntersectionVisibleArea || _newVisibleArea2 === originIntersectionVisibleArea && (!isVisibleFirst ||\n // Choose recommend one\n _newVisibleRecommendArea2 >= originIntersectionRecommendArea)) {\n prevFlipRef.current.rl = true;\n nextOffsetX = tmpNextOffsetX;\n popupOffsetX = -popupOffsetX;\n nextAlignInfo.points = [reversePoints(popupPoints, 1), reversePoints(targetPoints, 1)];\n } else {\n prevFlipRef.current.rl = false;\n }\n }\n\n // Left to Right\n if (needAdjustX && popupPoints[1] === 'r' && (nextPopupX < adjustCheckVisibleArea.left || prevFlipRef.current.lr)) {\n var _tmpNextOffsetX = nextOffsetX;\n if (sameLR) {\n _tmpNextOffsetX += popupWidth - targetWidth;\n } else {\n _tmpNextOffsetX = targetAlignPointBR.x - popupAlignPointTL.x - popupOffsetX;\n }\n var _newVisibleArea3 = getIntersectionVisibleArea(_tmpNextOffsetX, nextOffsetY);\n var _newVisibleRecommendArea3 = getIntersectionVisibleArea(_tmpNextOffsetX, nextOffsetY, visibleRegionArea);\n if (\n // Of course use larger one\n _newVisibleArea3 > originIntersectionVisibleArea || _newVisibleArea3 === originIntersectionVisibleArea && (!isVisibleFirst ||\n // Choose recommend one\n _newVisibleRecommendArea3 >= originIntersectionRecommendArea)) {\n prevFlipRef.current.lr = true;\n nextOffsetX = _tmpNextOffsetX;\n popupOffsetX = -popupOffsetX;\n nextAlignInfo.points = [reversePoints(popupPoints, 1), reversePoints(targetPoints, 1)];\n } else {\n prevFlipRef.current.lr = false;\n }\n }\n\n // ============================ Shift ============================\n syncNextPopupPosition();\n var numShiftX = shiftX === true ? 0 : shiftX;\n if (typeof numShiftX === 'number') {\n // Left\n if (nextPopupX < visibleRegionArea.left) {\n nextOffsetX -= nextPopupX - visibleRegionArea.left - popupOffsetX;\n if (targetRect.x + targetWidth < visibleRegionArea.left + numShiftX) {\n nextOffsetX += targetRect.x - visibleRegionArea.left + targetWidth - numShiftX;\n }\n }\n\n // Right\n if (nextPopupRight > visibleRegionArea.right) {\n nextOffsetX -= nextPopupRight - visibleRegionArea.right - popupOffsetX;\n if (targetRect.x > visibleRegionArea.right - numShiftX) {\n nextOffsetX += targetRect.x - visibleRegionArea.right + numShiftX;\n }\n }\n }\n var numShiftY = shiftY === true ? 0 : shiftY;\n if (typeof numShiftY === 'number') {\n // Top\n if (nextPopupY < visibleRegionArea.top) {\n nextOffsetY -= nextPopupY - visibleRegionArea.top - popupOffsetY;\n\n // When target if far away from visible area\n // Stop shift\n if (targetRect.y + targetHeight < visibleRegionArea.top + numShiftY) {\n nextOffsetY += targetRect.y - visibleRegionArea.top + targetHeight - numShiftY;\n }\n }\n\n // Bottom\n if (nextPopupBottom > visibleRegionArea.bottom) {\n nextOffsetY -= nextPopupBottom - visibleRegionArea.bottom - popupOffsetY;\n if (targetRect.y > visibleRegionArea.bottom - numShiftY) {\n nextOffsetY += targetRect.y - visibleRegionArea.bottom + numShiftY;\n }\n }\n }\n\n // ============================ Arrow ============================\n // Arrow center align\n var popupLeft = popupRect.x + nextOffsetX;\n var popupRight = popupLeft + popupWidth;\n var popupTop = popupRect.y + nextOffsetY;\n var popupBottom = popupTop + popupHeight;\n var targetLeft = targetRect.x;\n var targetRight = targetLeft + targetWidth;\n var targetTop = targetRect.y;\n var targetBottom = targetTop + targetHeight;\n var maxLeft = Math.max(popupLeft, targetLeft);\n var minRight = Math.min(popupRight, targetRight);\n var xCenter = (maxLeft + minRight) / 2;\n var nextArrowX = xCenter - popupLeft;\n var maxTop = Math.max(popupTop, targetTop);\n var minBottom = Math.min(popupBottom, targetBottom);\n var yCenter = (maxTop + minBottom) / 2;\n var nextArrowY = yCenter - popupTop;\n onPopupAlign === null || onPopupAlign === void 0 ? void 0 : onPopupAlign(popupEle, nextAlignInfo);\n\n // Additional calculate right & bottom position\n var offsetX4Right = popupMirrorRect.right - popupRect.x - (nextOffsetX + popupRect.width);\n var offsetY4Bottom = popupMirrorRect.bottom - popupRect.y - (nextOffsetY + popupRect.height);\n setOffsetInfo({\n ready: true,\n offsetX: nextOffsetX / _scaleX,\n offsetY: nextOffsetY / _scaleY,\n offsetR: offsetX4Right / _scaleX,\n offsetB: offsetY4Bottom / _scaleY,\n arrowX: nextArrowX / _scaleX,\n arrowY: nextArrowY / _scaleY,\n scaleX: _scaleX,\n scaleY: _scaleY,\n align: nextAlignInfo\n });\n }\n });\n var triggerAlign = function triggerAlign() {\n alignCountRef.current += 1;\n var id = alignCountRef.current;\n\n // Merge all align requirement into one frame\n Promise.resolve().then(function () {\n if (alignCountRef.current === id) {\n onAlign();\n }\n });\n };\n\n // Reset ready status when placement & open changed\n var resetReady = function resetReady() {\n setOffsetInfo(function (ori) {\n return _objectSpread(_objectSpread({}, ori), {}, {\n ready: false\n });\n });\n };\n useLayoutEffect(resetReady, [placement]);\n useLayoutEffect(function () {\n if (!open) {\n resetReady();\n }\n }, [open]);\n return [offsetInfo.ready, offsetInfo.offsetX, offsetInfo.offsetY, offsetInfo.offsetR, offsetInfo.offsetB, offsetInfo.arrowX, offsetInfo.arrowY, offsetInfo.scaleX, offsetInfo.scaleY, offsetInfo.align, triggerAlign];\n}","import classNames from 'classnames';\nimport * as React from 'react';\nexport default function Arrow(props) {\n var prefixCls = props.prefixCls,\n align = props.align,\n arrow = props.arrow,\n arrowPos = props.arrowPos;\n var _ref = arrow || {},\n className = _ref.className,\n content = _ref.content;\n var _arrowPos$x = arrowPos.x,\n x = _arrowPos$x === void 0 ? 0 : _arrowPos$x,\n _arrowPos$y = arrowPos.y,\n y = _arrowPos$y === void 0 ? 0 : _arrowPos$y;\n var arrowRef = React.useRef();\n\n // Skip if no align\n if (!align || !align.points) {\n return null;\n }\n var alignStyle = {\n position: 'absolute'\n };\n\n // Skip if no need to align\n if (align.autoArrow !== false) {\n var popupPoints = align.points[0];\n var targetPoints = align.points[1];\n var popupTB = popupPoints[0];\n var popupLR = popupPoints[1];\n var targetTB = targetPoints[0];\n var targetLR = targetPoints[1];\n\n // Top & Bottom\n if (popupTB === targetTB || !['t', 'b'].includes(popupTB)) {\n alignStyle.top = y;\n } else if (popupTB === 't') {\n alignStyle.top = 0;\n } else {\n alignStyle.bottom = 0;\n }\n\n // Left & Right\n if (popupLR === targetLR || !['l', 'r'].includes(popupLR)) {\n alignStyle.left = x;\n } else if (popupLR === 'l') {\n alignStyle.left = 0;\n } else {\n alignStyle.right = 0;\n }\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: arrowRef,\n className: classNames(\"\".concat(prefixCls, \"-arrow\"), className),\n style: alignStyle\n }, content);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport * as React from 'react';\nexport default function Mask(props) {\n var prefixCls = props.prefixCls,\n open = props.open,\n zIndex = props.zIndex,\n mask = props.mask,\n motion = props.motion;\n if (!mask) {\n return null;\n }\n return /*#__PURE__*/React.createElement(CSSMotion, _extends({}, motion, {\n motionAppear: true,\n visible: open,\n removeOnLeave: true\n }), function (_ref) {\n var className = _ref.className;\n return /*#__PURE__*/React.createElement(\"div\", {\n style: {\n zIndex: zIndex\n },\n className: classNames(\"\".concat(prefixCls, \"-mask\"), className)\n });\n });\n}","import * as React from 'react';\nvar PopupContent = /*#__PURE__*/React.memo(function (_ref) {\n var children = _ref.children;\n return children;\n}, function (_, next) {\n return next.cache;\n});\nif (process.env.NODE_ENV !== 'production') {\n PopupContent.displayName = 'PopupContent';\n}\nexport default PopupContent;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport ResizeObserver from 'rc-resize-observer';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport { composeRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nimport Arrow from \"./Arrow\";\nimport Mask from \"./Mask\";\nimport PopupContent from \"./PopupContent\";\nvar Popup = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var popup = props.popup,\n className = props.className,\n prefixCls = props.prefixCls,\n style = props.style,\n target = props.target,\n _onVisibleChanged = props.onVisibleChanged,\n open = props.open,\n keepDom = props.keepDom,\n onClick = props.onClick,\n mask = props.mask,\n arrow = props.arrow,\n arrowPos = props.arrowPos,\n align = props.align,\n motion = props.motion,\n maskMotion = props.maskMotion,\n forceRender = props.forceRender,\n getPopupContainer = props.getPopupContainer,\n autoDestroy = props.autoDestroy,\n Portal = props.portal,\n zIndex = props.zIndex,\n onMouseEnter = props.onMouseEnter,\n onMouseLeave = props.onMouseLeave,\n onPointerEnter = props.onPointerEnter,\n ready = props.ready,\n offsetX = props.offsetX,\n offsetY = props.offsetY,\n offsetR = props.offsetR,\n offsetB = props.offsetB,\n onAlign = props.onAlign,\n onPrepare = props.onPrepare,\n stretch = props.stretch,\n targetWidth = props.targetWidth,\n targetHeight = props.targetHeight;\n var childNode = typeof popup === 'function' ? popup() : popup;\n\n // We can not remove holder only when motion finished.\n var isNodeVisible = open || keepDom;\n\n // ======================= Container ========================\n var getPopupContainerNeedParams = (getPopupContainer === null || getPopupContainer === void 0 ? void 0 : getPopupContainer.length) > 0;\n var _React$useState = React.useState(!getPopupContainer || !getPopupContainerNeedParams),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n show = _React$useState2[0],\n setShow = _React$useState2[1];\n\n // Delay to show since `getPopupContainer` need target element\n useLayoutEffect(function () {\n if (!show && getPopupContainerNeedParams && target) {\n setShow(true);\n }\n }, [show, getPopupContainerNeedParams, target]);\n\n // ========================= Render =========================\n if (!show) {\n return null;\n }\n\n // >>>>> Offset\n var AUTO = 'auto';\n var offsetStyle = {\n left: '-1000vw',\n top: '-1000vh',\n right: AUTO,\n bottom: AUTO\n };\n\n // Set align style\n if (ready || !open) {\n var points = align.points,\n _experimental = align._experimental;\n var dynamicInset = _experimental === null || _experimental === void 0 ? void 0 : _experimental.dynamicInset;\n var alignRight = dynamicInset && points[0][1] === 'r';\n var alignBottom = dynamicInset && points[0][0] === 'b';\n if (alignRight) {\n offsetStyle.right = offsetR;\n offsetStyle.left = AUTO;\n } else {\n offsetStyle.left = offsetX;\n offsetStyle.right = AUTO;\n }\n if (alignBottom) {\n offsetStyle.bottom = offsetB;\n offsetStyle.top = AUTO;\n } else {\n offsetStyle.top = offsetY;\n offsetStyle.bottom = AUTO;\n }\n }\n\n // >>>>> Misc\n var miscStyle = {};\n if (stretch) {\n if (stretch.includes('height') && targetHeight) {\n miscStyle.height = targetHeight;\n } else if (stretch.includes('minHeight') && targetHeight) {\n miscStyle.minHeight = targetHeight;\n }\n if (stretch.includes('width') && targetWidth) {\n miscStyle.width = targetWidth;\n } else if (stretch.includes('minWidth') && targetWidth) {\n miscStyle.minWidth = targetWidth;\n }\n }\n if (!open) {\n miscStyle.pointerEvents = 'none';\n }\n return /*#__PURE__*/React.createElement(Portal, {\n open: forceRender || isNodeVisible,\n getContainer: getPopupContainer && function () {\n return getPopupContainer(target);\n },\n autoDestroy: autoDestroy\n }, /*#__PURE__*/React.createElement(Mask, {\n prefixCls: prefixCls,\n open: open,\n zIndex: zIndex,\n mask: mask,\n motion: maskMotion\n }), /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: onAlign,\n disabled: !open\n }, function (resizeObserverRef) {\n return /*#__PURE__*/React.createElement(CSSMotion, _extends({\n motionAppear: true,\n motionEnter: true,\n motionLeave: true,\n removeOnLeave: false,\n forceRender: forceRender,\n leavedClassName: \"\".concat(prefixCls, \"-hidden\")\n }, motion, {\n onAppearPrepare: onPrepare,\n onEnterPrepare: onPrepare,\n visible: open,\n onVisibleChanged: function onVisibleChanged(nextVisible) {\n var _motion$onVisibleChan;\n motion === null || motion === void 0 ? void 0 : (_motion$onVisibleChan = motion.onVisibleChanged) === null || _motion$onVisibleChan === void 0 ? void 0 : _motion$onVisibleChan.call(motion, nextVisible);\n _onVisibleChanged(nextVisible);\n }\n }), function (_ref, motionRef) {\n var motionClassName = _ref.className,\n motionStyle = _ref.style;\n var cls = classNames(prefixCls, motionClassName, className);\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: composeRef(resizeObserverRef, ref, motionRef),\n className: cls,\n style: _objectSpread(_objectSpread(_objectSpread(_objectSpread({\n '--arrow-x': \"\".concat(arrowPos.x || 0, \"px\"),\n '--arrow-y': \"\".concat(arrowPos.y || 0, \"px\")\n }, offsetStyle), miscStyle), motionStyle), {}, {\n boxSizing: 'border-box',\n zIndex: zIndex\n }, style),\n onMouseEnter: onMouseEnter,\n onMouseLeave: onMouseLeave,\n onPointerEnter: onPointerEnter,\n onClick: onClick\n }, arrow && /*#__PURE__*/React.createElement(Arrow, {\n prefixCls: prefixCls,\n arrow: arrow,\n arrowPos: arrowPos,\n align: align\n }), /*#__PURE__*/React.createElement(PopupContent, {\n cache: !open\n }, childNode));\n });\n }));\n});\nif (process.env.NODE_ENV !== 'production') {\n Popup.displayName = 'Popup';\n}\nexport default Popup;","import { fillRef, supportRef, useComposeRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nvar TriggerWrapper = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var children = props.children,\n getTriggerDOMNode = props.getTriggerDOMNode;\n var canUseRef = supportRef(children);\n\n // When use `getTriggerDOMNode`, we should do additional work to get the real dom\n var setRef = React.useCallback(function (node) {\n fillRef(ref, getTriggerDOMNode ? getTriggerDOMNode(node) : node);\n }, [getTriggerDOMNode]);\n var mergedRef = useComposeRef(setRef, children.ref);\n return canUseRef ? /*#__PURE__*/React.cloneElement(children, {\n ref: mergedRef\n }) : children;\n});\nif (process.env.NODE_ENV !== 'production') {\n TriggerWrapper.displayName = 'TriggerWrapper';\n}\nexport default TriggerWrapper;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"children\", \"action\", \"showAction\", \"hideAction\", \"popupVisible\", \"defaultPopupVisible\", \"onPopupVisibleChange\", \"afterPopupVisibleChange\", \"mouseEnterDelay\", \"mouseLeaveDelay\", \"focusDelay\", \"blurDelay\", \"mask\", \"maskClosable\", \"getPopupContainer\", \"forceRender\", \"autoDestroy\", \"destroyPopupOnHide\", \"popup\", \"popupClassName\", \"popupStyle\", \"popupPlacement\", \"builtinPlacements\", \"popupAlign\", \"zIndex\", \"stretch\", \"getPopupClassNameFromAlign\", \"alignPoint\", \"onPopupClick\", \"onPopupAlign\", \"arrow\", \"popupMotion\", \"maskMotion\", \"popupTransitionName\", \"popupAnimation\", \"maskTransitionName\", \"maskAnimation\", \"className\", \"getTriggerDOMNode\"];\nimport Portal from '@rc-component/portal';\nimport classNames from 'classnames';\nimport ResizeObserver from 'rc-resize-observer';\nimport { isDOM } from \"rc-util/es/Dom/findDOMNode\";\nimport { getShadowRoot } from \"rc-util/es/Dom/shadow\";\nimport useEvent from \"rc-util/es/hooks/useEvent\";\nimport useId from \"rc-util/es/hooks/useId\";\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport isMobile from \"rc-util/es/isMobile\";\nimport * as React from 'react';\nimport { flushSync } from 'react-dom';\nimport TriggerContext from \"./context\";\nimport useAction from \"./hooks/useAction\";\nimport useAlign from \"./hooks/useAlign\";\nimport useWatch from \"./hooks/useWatch\";\nimport useWinClick from \"./hooks/useWinClick\";\nimport Popup from \"./Popup\";\nimport TriggerWrapper from \"./TriggerWrapper\";\nimport { getAlignPopupClassName, getMotion } from \"./util\";\n\n// Removed Props List\n// Seems this can be auto\n// getDocument?: (element?: HTMLElement) => Document;\n// New version will not wrap popup with `rc-trigger-popup-content` when multiple children\nexport function generateTrigger() {\n var PortalComponent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Portal;\n var Trigger = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-trigger-popup' : _props$prefixCls,\n children = props.children,\n _props$action = props.action,\n action = _props$action === void 0 ? 'hover' : _props$action,\n showAction = props.showAction,\n hideAction = props.hideAction,\n popupVisible = props.popupVisible,\n defaultPopupVisible = props.defaultPopupVisible,\n onPopupVisibleChange = props.onPopupVisibleChange,\n afterPopupVisibleChange = props.afterPopupVisibleChange,\n mouseEnterDelay = props.mouseEnterDelay,\n _props$mouseLeaveDela = props.mouseLeaveDelay,\n mouseLeaveDelay = _props$mouseLeaveDela === void 0 ? 0.1 : _props$mouseLeaveDela,\n focusDelay = props.focusDelay,\n blurDelay = props.blurDelay,\n mask = props.mask,\n _props$maskClosable = props.maskClosable,\n maskClosable = _props$maskClosable === void 0 ? true : _props$maskClosable,\n getPopupContainer = props.getPopupContainer,\n forceRender = props.forceRender,\n autoDestroy = props.autoDestroy,\n destroyPopupOnHide = props.destroyPopupOnHide,\n popup = props.popup,\n popupClassName = props.popupClassName,\n popupStyle = props.popupStyle,\n popupPlacement = props.popupPlacement,\n _props$builtinPlaceme = props.builtinPlacements,\n builtinPlacements = _props$builtinPlaceme === void 0 ? {} : _props$builtinPlaceme,\n popupAlign = props.popupAlign,\n zIndex = props.zIndex,\n stretch = props.stretch,\n getPopupClassNameFromAlign = props.getPopupClassNameFromAlign,\n alignPoint = props.alignPoint,\n onPopupClick = props.onPopupClick,\n onPopupAlign = props.onPopupAlign,\n arrow = props.arrow,\n popupMotion = props.popupMotion,\n maskMotion = props.maskMotion,\n popupTransitionName = props.popupTransitionName,\n popupAnimation = props.popupAnimation,\n maskTransitionName = props.maskTransitionName,\n maskAnimation = props.maskAnimation,\n className = props.className,\n getTriggerDOMNode = props.getTriggerDOMNode,\n restProps = _objectWithoutProperties(props, _excluded);\n var mergedAutoDestroy = autoDestroy || destroyPopupOnHide || false;\n\n // =========================== Mobile ===========================\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n mobile = _React$useState2[0],\n setMobile = _React$useState2[1];\n useLayoutEffect(function () {\n setMobile(isMobile());\n }, []);\n\n // ========================== Context ===========================\n var subPopupElements = React.useRef({});\n var parentContext = React.useContext(TriggerContext);\n var context = React.useMemo(function () {\n return {\n registerSubPopup: function registerSubPopup(id, subPopupEle) {\n subPopupElements.current[id] = subPopupEle;\n parentContext === null || parentContext === void 0 ? void 0 : parentContext.registerSubPopup(id, subPopupEle);\n }\n };\n }, [parentContext]);\n\n // =========================== Popup ============================\n var id = useId();\n var _React$useState3 = React.useState(null),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n popupEle = _React$useState4[0],\n setPopupEle = _React$useState4[1];\n var setPopupRef = useEvent(function (node) {\n if (isDOM(node) && popupEle !== node) {\n setPopupEle(node);\n }\n parentContext === null || parentContext === void 0 ? void 0 : parentContext.registerSubPopup(id, node);\n });\n\n // =========================== Target ===========================\n // Use state to control here since `useRef` update not trigger render\n var _React$useState5 = React.useState(null),\n _React$useState6 = _slicedToArray(_React$useState5, 2),\n targetEle = _React$useState6[0],\n setTargetEle = _React$useState6[1];\n var setTargetRef = useEvent(function (node) {\n if (isDOM(node) && targetEle !== node) {\n setTargetEle(node);\n }\n });\n\n // ========================== Children ==========================\n var child = React.Children.only(children);\n var originChildProps = (child === null || child === void 0 ? void 0 : child.props) || {};\n var cloneProps = {};\n var inPopupOrChild = useEvent(function (ele) {\n var _getShadowRoot, _getShadowRoot2;\n var childDOM = targetEle;\n return (childDOM === null || childDOM === void 0 ? void 0 : childDOM.contains(ele)) || ((_getShadowRoot = getShadowRoot(childDOM)) === null || _getShadowRoot === void 0 ? void 0 : _getShadowRoot.host) === ele || ele === childDOM || (popupEle === null || popupEle === void 0 ? void 0 : popupEle.contains(ele)) || ((_getShadowRoot2 = getShadowRoot(popupEle)) === null || _getShadowRoot2 === void 0 ? void 0 : _getShadowRoot2.host) === ele || ele === popupEle || Object.values(subPopupElements.current).some(function (subPopupEle) {\n return (subPopupEle === null || subPopupEle === void 0 ? void 0 : subPopupEle.contains(ele)) || ele === subPopupEle;\n });\n });\n\n // =========================== Motion ===========================\n var mergePopupMotion = getMotion(prefixCls, popupMotion, popupAnimation, popupTransitionName);\n var mergeMaskMotion = getMotion(prefixCls, maskMotion, maskAnimation, maskTransitionName);\n\n // ============================ Open ============================\n var _React$useState7 = React.useState(defaultPopupVisible || false),\n _React$useState8 = _slicedToArray(_React$useState7, 2),\n internalOpen = _React$useState8[0],\n setInternalOpen = _React$useState8[1];\n\n // Render still use props as first priority\n var mergedOpen = popupVisible !== null && popupVisible !== void 0 ? popupVisible : internalOpen;\n\n // We use effect sync here in case `popupVisible` back to `undefined`\n var setMergedOpen = useEvent(function (nextOpen) {\n if (popupVisible === undefined) {\n setInternalOpen(nextOpen);\n }\n });\n useLayoutEffect(function () {\n setInternalOpen(popupVisible || false);\n }, [popupVisible]);\n var openRef = React.useRef(mergedOpen);\n openRef.current = mergedOpen;\n var internalTriggerOpen = useEvent(function (nextOpen) {\n // Enter or Pointer will both trigger open state change\n // We only need take one to avoid duplicated change event trigger\n flushSync(function () {\n if (mergedOpen !== nextOpen) {\n setMergedOpen(nextOpen);\n onPopupVisibleChange === null || onPopupVisibleChange === void 0 ? void 0 : onPopupVisibleChange(nextOpen);\n }\n });\n });\n\n // Trigger for delay\n var delayRef = React.useRef();\n var clearDelay = function clearDelay() {\n clearTimeout(delayRef.current);\n };\n var triggerOpen = function triggerOpen(nextOpen) {\n var delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n clearDelay();\n if (delay === 0) {\n internalTriggerOpen(nextOpen);\n } else {\n delayRef.current = setTimeout(function () {\n internalTriggerOpen(nextOpen);\n }, delay * 1000);\n }\n };\n React.useEffect(function () {\n return clearDelay;\n }, []);\n\n // ========================== Motion ============================\n var _React$useState9 = React.useState(false),\n _React$useState10 = _slicedToArray(_React$useState9, 2),\n inMotion = _React$useState10[0],\n setInMotion = _React$useState10[1];\n useLayoutEffect(function (firstMount) {\n if (!firstMount || mergedOpen) {\n setInMotion(true);\n }\n }, [mergedOpen]);\n var _React$useState11 = React.useState(null),\n _React$useState12 = _slicedToArray(_React$useState11, 2),\n motionPrepareResolve = _React$useState12[0],\n setMotionPrepareResolve = _React$useState12[1];\n\n // =========================== Align ============================\n var _React$useState13 = React.useState([0, 0]),\n _React$useState14 = _slicedToArray(_React$useState13, 2),\n mousePos = _React$useState14[0],\n setMousePos = _React$useState14[1];\n var setMousePosByEvent = function setMousePosByEvent(event) {\n setMousePos([event.clientX, event.clientY]);\n };\n var _useAlign = useAlign(mergedOpen, popupEle, alignPoint ? mousePos : targetEle, popupPlacement, builtinPlacements, popupAlign, onPopupAlign),\n _useAlign2 = _slicedToArray(_useAlign, 11),\n ready = _useAlign2[0],\n offsetX = _useAlign2[1],\n offsetY = _useAlign2[2],\n offsetR = _useAlign2[3],\n offsetB = _useAlign2[4],\n arrowX = _useAlign2[5],\n arrowY = _useAlign2[6],\n scaleX = _useAlign2[7],\n scaleY = _useAlign2[8],\n alignInfo = _useAlign2[9],\n onAlign = _useAlign2[10];\n var _useAction = useAction(mobile, action, showAction, hideAction),\n _useAction2 = _slicedToArray(_useAction, 2),\n showActions = _useAction2[0],\n hideActions = _useAction2[1];\n var clickToShow = showActions.has('click');\n var clickToHide = hideActions.has('click') || hideActions.has('contextMenu');\n var triggerAlign = useEvent(function () {\n if (!inMotion) {\n onAlign();\n }\n });\n var onScroll = function onScroll() {\n if (openRef.current && alignPoint && clickToHide) {\n triggerOpen(false);\n }\n };\n useWatch(mergedOpen, targetEle, popupEle, triggerAlign, onScroll);\n useLayoutEffect(function () {\n triggerAlign();\n }, [mousePos, popupPlacement]);\n\n // When no builtinPlacements and popupAlign changed\n useLayoutEffect(function () {\n if (mergedOpen && !(builtinPlacements !== null && builtinPlacements !== void 0 && builtinPlacements[popupPlacement])) {\n triggerAlign();\n }\n }, [JSON.stringify(popupAlign)]);\n var alignedClassName = React.useMemo(function () {\n var baseClassName = getAlignPopupClassName(builtinPlacements, prefixCls, alignInfo, alignPoint);\n return classNames(baseClassName, getPopupClassNameFromAlign === null || getPopupClassNameFromAlign === void 0 ? void 0 : getPopupClassNameFromAlign(alignInfo));\n }, [alignInfo, getPopupClassNameFromAlign, builtinPlacements, prefixCls, alignPoint]);\n React.useImperativeHandle(ref, function () {\n return {\n forceAlign: triggerAlign\n };\n });\n\n // ========================== Motion ============================\n var onVisibleChanged = function onVisibleChanged(visible) {\n setInMotion(false);\n onAlign();\n afterPopupVisibleChange === null || afterPopupVisibleChange === void 0 ? void 0 : afterPopupVisibleChange(visible);\n };\n\n // We will trigger align when motion is in prepare\n var onPrepare = function onPrepare() {\n return new Promise(function (resolve) {\n setMotionPrepareResolve(function () {\n return resolve;\n });\n });\n };\n useLayoutEffect(function () {\n if (motionPrepareResolve) {\n onAlign();\n motionPrepareResolve();\n setMotionPrepareResolve(null);\n }\n }, [motionPrepareResolve]);\n\n // ========================== Stretch ===========================\n var _React$useState15 = React.useState(0),\n _React$useState16 = _slicedToArray(_React$useState15, 2),\n targetWidth = _React$useState16[0],\n setTargetWidth = _React$useState16[1];\n var _React$useState17 = React.useState(0),\n _React$useState18 = _slicedToArray(_React$useState17, 2),\n targetHeight = _React$useState18[0],\n setTargetHeight = _React$useState18[1];\n var onTargetResize = function onTargetResize(_, ele) {\n triggerAlign();\n if (stretch) {\n var rect = ele.getBoundingClientRect();\n setTargetWidth(rect.width);\n setTargetHeight(rect.height);\n }\n };\n\n // =========================== Action ===========================\n /**\n * Util wrapper for trigger action\n */\n function wrapperAction(eventName, nextOpen, delay, preEvent) {\n cloneProps[eventName] = function (event) {\n var _originChildProps$eve;\n preEvent === null || preEvent === void 0 ? void 0 : preEvent(event);\n triggerOpen(nextOpen, delay);\n\n // Pass to origin\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n (_originChildProps$eve = originChildProps[eventName]) === null || _originChildProps$eve === void 0 ? void 0 : _originChildProps$eve.call.apply(_originChildProps$eve, [originChildProps, event].concat(args));\n };\n }\n\n // ======================= Action: Click ========================\n if (clickToShow || clickToHide) {\n cloneProps.onClick = function (event) {\n var _originChildProps$onC;\n if (openRef.current && clickToHide) {\n triggerOpen(false);\n } else if (!openRef.current && clickToShow) {\n setMousePosByEvent(event);\n triggerOpen(true);\n }\n\n // Pass to origin\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n (_originChildProps$onC = originChildProps.onClick) === null || _originChildProps$onC === void 0 ? void 0 : _originChildProps$onC.call.apply(_originChildProps$onC, [originChildProps, event].concat(args));\n };\n }\n\n // Click to hide is special action since click popup element should not hide\n useWinClick(mergedOpen, clickToHide, targetEle, popupEle, mask, maskClosable, inPopupOrChild, triggerOpen);\n\n // ======================= Action: Hover ========================\n var hoverToShow = showActions.has('hover');\n var hoverToHide = hideActions.has('hover');\n var onPopupMouseEnter;\n var onPopupMouseLeave;\n if (hoverToShow) {\n // Compatible with old browser which not support pointer event\n wrapperAction('onMouseEnter', true, mouseEnterDelay, function (event) {\n setMousePosByEvent(event);\n });\n wrapperAction('onPointerEnter', true, mouseEnterDelay, function (event) {\n setMousePosByEvent(event);\n });\n onPopupMouseEnter = function onPopupMouseEnter() {\n // Only trigger re-open when popup is visible\n if (mergedOpen || inMotion) {\n triggerOpen(true, mouseEnterDelay);\n }\n };\n\n // Align Point\n if (alignPoint) {\n cloneProps.onMouseMove = function (event) {\n var _originChildProps$onM;\n // setMousePosByEvent(event);\n (_originChildProps$onM = originChildProps.onMouseMove) === null || _originChildProps$onM === void 0 ? void 0 : _originChildProps$onM.call(originChildProps, event);\n };\n }\n }\n if (hoverToHide) {\n wrapperAction('onMouseLeave', false, mouseLeaveDelay);\n wrapperAction('onPointerLeave', false, mouseLeaveDelay);\n onPopupMouseLeave = function onPopupMouseLeave() {\n triggerOpen(false, mouseLeaveDelay);\n };\n }\n\n // ======================= Action: Focus ========================\n if (showActions.has('focus')) {\n wrapperAction('onFocus', true, focusDelay);\n }\n if (hideActions.has('focus')) {\n wrapperAction('onBlur', false, blurDelay);\n }\n\n // ==================== Action: ContextMenu =====================\n if (showActions.has('contextMenu')) {\n cloneProps.onContextMenu = function (event) {\n var _originChildProps$onC2;\n if (openRef.current && hideActions.has('contextMenu')) {\n triggerOpen(false);\n } else {\n setMousePosByEvent(event);\n triggerOpen(true);\n }\n event.preventDefault();\n\n // Pass to origin\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n (_originChildProps$onC2 = originChildProps.onContextMenu) === null || _originChildProps$onC2 === void 0 ? void 0 : _originChildProps$onC2.call.apply(_originChildProps$onC2, [originChildProps, event].concat(args));\n };\n }\n\n // ========================= ClassName ==========================\n if (className) {\n cloneProps.className = classNames(originChildProps.className, className);\n }\n\n // =========================== Render ===========================\n var mergedChildrenProps = _objectSpread(_objectSpread({}, originChildProps), cloneProps);\n\n // Pass props into cloneProps for nest usage\n var passedProps = {};\n var passedEventList = ['onContextMenu', 'onClick', 'onMouseDown', 'onTouchStart', 'onMouseEnter', 'onMouseLeave', 'onFocus', 'onBlur'];\n passedEventList.forEach(function (eventName) {\n if (restProps[eventName]) {\n passedProps[eventName] = function () {\n var _mergedChildrenProps$;\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n (_mergedChildrenProps$ = mergedChildrenProps[eventName]) === null || _mergedChildrenProps$ === void 0 ? void 0 : _mergedChildrenProps$.call.apply(_mergedChildrenProps$, [mergedChildrenProps].concat(args));\n restProps[eventName].apply(restProps, args);\n };\n }\n });\n\n // Child Node\n var triggerNode = /*#__PURE__*/React.cloneElement(child, _objectSpread(_objectSpread({}, mergedChildrenProps), passedProps));\n var arrowPos = {\n x: arrowX,\n y: arrowY\n };\n var innerArrow = arrow ? _objectSpread({}, arrow !== true ? arrow : {}) : null;\n\n // Render\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ResizeObserver, {\n disabled: !mergedOpen,\n ref: setTargetRef,\n onResize: onTargetResize\n }, /*#__PURE__*/React.createElement(TriggerWrapper, {\n getTriggerDOMNode: getTriggerDOMNode\n }, triggerNode)), /*#__PURE__*/React.createElement(TriggerContext.Provider, {\n value: context\n }, /*#__PURE__*/React.createElement(Popup, {\n portal: PortalComponent,\n ref: setPopupRef,\n prefixCls: prefixCls,\n popup: popup,\n className: classNames(popupClassName, alignedClassName),\n style: popupStyle,\n target: targetEle,\n onMouseEnter: onPopupMouseEnter,\n onMouseLeave: onPopupMouseLeave\n // https://github.com/ant-design/ant-design/issues/43924\n ,\n\n onPointerEnter: onPopupMouseEnter,\n zIndex: zIndex\n // Open\n ,\n\n open: mergedOpen,\n keepDom: inMotion\n // Click\n ,\n\n onClick: onPopupClick\n // Mask\n ,\n\n mask: mask\n // Motion\n ,\n\n motion: mergePopupMotion,\n maskMotion: mergeMaskMotion,\n onVisibleChanged: onVisibleChanged,\n onPrepare: onPrepare\n // Portal\n ,\n\n forceRender: forceRender,\n autoDestroy: mergedAutoDestroy,\n getPopupContainer: getPopupContainer\n // Arrow\n ,\n\n align: alignInfo,\n arrow: innerArrow,\n arrowPos: arrowPos\n // Align\n ,\n\n ready: ready,\n offsetX: offsetX,\n offsetY: offsetY,\n offsetR: offsetR,\n offsetB: offsetB,\n onAlign: triggerAlign\n // Stretch\n ,\n\n stretch: stretch,\n targetWidth: targetWidth / scaleX,\n targetHeight: targetHeight / scaleY\n })));\n });\n if (process.env.NODE_ENV !== 'production') {\n Trigger.displayName = 'Trigger';\n }\n return Trigger;\n}\nexport default generateTrigger(Portal);","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport { collectScroller, getWin } from \"../util\";\nexport default function useWatch(open, target, popup, onAlign, onScroll) {\n useLayoutEffect(function () {\n if (open && target && popup) {\n var notifyScroll = function notifyScroll() {\n onAlign();\n onScroll();\n };\n var targetElement = target;\n var popupElement = popup;\n var targetScrollList = collectScroller(targetElement);\n var popupScrollList = collectScroller(popupElement);\n var win = getWin(popupElement);\n var mergedList = new Set([win].concat(_toConsumableArray(targetScrollList), _toConsumableArray(popupScrollList)));\n mergedList.forEach(function (scroller) {\n scroller.addEventListener('scroll', notifyScroll, {\n passive: true\n });\n });\n win.addEventListener('resize', notifyScroll, {\n passive: true\n });\n\n // First time always do align\n onAlign();\n return function () {\n mergedList.forEach(function (scroller) {\n scroller.removeEventListener('scroll', notifyScroll);\n win.removeEventListener('resize', notifyScroll);\n });\n };\n }\n }, [open, target, popup]);\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { warning } from 'rc-util';\nimport { getShadowRoot } from \"rc-util/es/Dom/shadow\";\nimport raf from \"rc-util/es/raf\";\nimport * as React from 'react';\nimport { getWin } from \"../util\";\nexport default function useWinClick(open, clickToHide, targetEle, popupEle, mask, maskClosable, inPopupOrChild, triggerOpen) {\n var openRef = React.useRef(open);\n\n // Window click to hide should be lock to avoid trigger lock immediately\n var lockRef = React.useRef(false);\n if (openRef.current !== open) {\n lockRef.current = true;\n openRef.current = open;\n }\n React.useEffect(function () {\n var id = raf(function () {\n lockRef.current = false;\n });\n return function () {\n raf.cancel(id);\n };\n }, [open]);\n\n // Click to hide is special action since click popup element should not hide\n React.useEffect(function () {\n if (clickToHide && popupEle && (!mask || maskClosable)) {\n var genClickEvents = function genClickEvents() {\n var clickInside = false;\n\n // User may mouseDown inside and drag out of popup and mouse up\n // Record here to prevent close\n var onWindowMouseDown = function onWindowMouseDown(_ref) {\n var target = _ref.target;\n clickInside = inPopupOrChild(target);\n };\n var onWindowClick = function onWindowClick(_ref2) {\n var target = _ref2.target;\n if (!lockRef.current && openRef.current && !clickInside && !inPopupOrChild(target)) {\n triggerOpen(false);\n }\n };\n return [onWindowMouseDown, onWindowClick];\n };\n\n // Events\n var _genClickEvents = genClickEvents(),\n _genClickEvents2 = _slicedToArray(_genClickEvents, 2),\n onWinMouseDown = _genClickEvents2[0],\n onWinClick = _genClickEvents2[1];\n var _genClickEvents3 = genClickEvents(),\n _genClickEvents4 = _slicedToArray(_genClickEvents3, 2),\n onShadowMouseDown = _genClickEvents4[0],\n onShadowClick = _genClickEvents4[1];\n var win = getWin(popupEle);\n win.addEventListener('mousedown', onWinMouseDown, true);\n win.addEventListener('click', onWinClick, true);\n win.addEventListener('contextmenu', onWinClick, true);\n\n // shadow root\n var targetShadowRoot = getShadowRoot(targetEle);\n if (targetShadowRoot) {\n targetShadowRoot.addEventListener('mousedown', onShadowMouseDown, true);\n targetShadowRoot.addEventListener('click', onShadowClick, true);\n targetShadowRoot.addEventListener('contextmenu', onShadowClick, true);\n }\n\n // Warning if target and popup not in same root\n if (process.env.NODE_ENV !== 'production') {\n var _targetEle$getRootNod, _popupEle$getRootNode;\n var targetRoot = targetEle === null || targetEle === void 0 ? void 0 : (_targetEle$getRootNod = targetEle.getRootNode) === null || _targetEle$getRootNod === void 0 ? void 0 : _targetEle$getRootNod.call(targetEle);\n var popupRoot = (_popupEle$getRootNode = popupEle.getRootNode) === null || _popupEle$getRootNode === void 0 ? void 0 : _popupEle$getRootNode.call(popupEle);\n warning(targetRoot === popupRoot, \"trigger element and popup element should in same shadow root.\");\n }\n return function () {\n win.removeEventListener('mousedown', onWinMouseDown, true);\n win.removeEventListener('click', onWinClick, true);\n win.removeEventListener('contextmenu', onWinClick, true);\n if (targetShadowRoot) {\n targetShadowRoot.removeEventListener('mousedown', onShadowMouseDown, true);\n targetShadowRoot.removeEventListener('click', onShadowClick, true);\n targetShadowRoot.removeEventListener('contextmenu', onShadowClick, true);\n }\n };\n }\n }, [clickToHide, targetEle, popupEle, mask, maskClosable]);\n}","var autoAdjustOverflowTopBottom = {\n shiftX: 64,\n adjustY: 1\n};\nvar autoAdjustOverflowLeftRight = {\n adjustX: 1,\n shiftY: true\n};\nvar targetOffset = [0, 0];\nexport var placements = {\n left: {\n points: ['cr', 'cl'],\n overflow: autoAdjustOverflowLeftRight,\n offset: [-4, 0],\n targetOffset: targetOffset\n },\n right: {\n points: ['cl', 'cr'],\n overflow: autoAdjustOverflowLeftRight,\n offset: [4, 0],\n targetOffset: targetOffset\n },\n top: {\n points: ['bc', 'tc'],\n overflow: autoAdjustOverflowTopBottom,\n offset: [0, -4],\n targetOffset: targetOffset\n },\n bottom: {\n points: ['tc', 'bc'],\n overflow: autoAdjustOverflowTopBottom,\n offset: [0, 4],\n targetOffset: targetOffset\n },\n topLeft: {\n points: ['bl', 'tl'],\n overflow: autoAdjustOverflowTopBottom,\n offset: [0, -4],\n targetOffset: targetOffset\n },\n leftTop: {\n points: ['tr', 'tl'],\n overflow: autoAdjustOverflowLeftRight,\n offset: [-4, 0],\n targetOffset: targetOffset\n },\n topRight: {\n points: ['br', 'tr'],\n overflow: autoAdjustOverflowTopBottom,\n offset: [0, -4],\n targetOffset: targetOffset\n },\n rightTop: {\n points: ['tl', 'tr'],\n overflow: autoAdjustOverflowLeftRight,\n offset: [4, 0],\n targetOffset: targetOffset\n },\n bottomRight: {\n points: ['tr', 'br'],\n overflow: autoAdjustOverflowTopBottom,\n offset: [0, 4],\n targetOffset: targetOffset\n },\n rightBottom: {\n points: ['bl', 'br'],\n overflow: autoAdjustOverflowLeftRight,\n offset: [4, 0],\n targetOffset: targetOffset\n },\n bottomLeft: {\n points: ['tl', 'bl'],\n overflow: autoAdjustOverflowTopBottom,\n offset: [0, 4],\n targetOffset: targetOffset\n },\n leftBottom: {\n points: ['br', 'bl'],\n overflow: autoAdjustOverflowLeftRight,\n offset: [-4, 0],\n targetOffset: targetOffset\n }\n};\nexport default placements;","import classNames from 'classnames';\nimport * as React from 'react';\nexport default function Popup(props) {\n var children = props.children,\n prefixCls = props.prefixCls,\n id = props.id,\n overlayInnerStyle = props.overlayInnerStyle,\n className = props.className,\n style = props.style;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-content\"), className),\n style: style\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-inner\"),\n id: id,\n role: \"tooltip\",\n style: overlayInnerStyle\n }, typeof children === 'function' ? children() : children));\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"overlayClassName\", \"trigger\", \"mouseEnterDelay\", \"mouseLeaveDelay\", \"overlayStyle\", \"prefixCls\", \"children\", \"onVisibleChange\", \"afterVisibleChange\", \"transitionName\", \"animation\", \"motion\", \"placement\", \"align\", \"destroyTooltipOnHide\", \"defaultVisible\", \"getTooltipContainer\", \"overlayInnerStyle\", \"arrowContent\", \"overlay\", \"id\", \"showArrow\"];\nimport Trigger from '@rc-component/trigger';\nimport * as React from 'react';\nimport { forwardRef, useImperativeHandle, useRef } from 'react';\nimport { placements } from \"./placements\";\nimport Popup from \"./Popup\";\nvar Tooltip = function Tooltip(props, ref) {\n var overlayClassName = props.overlayClassName,\n _props$trigger = props.trigger,\n trigger = _props$trigger === void 0 ? ['hover'] : _props$trigger,\n _props$mouseEnterDela = props.mouseEnterDelay,\n mouseEnterDelay = _props$mouseEnterDela === void 0 ? 0 : _props$mouseEnterDela,\n _props$mouseLeaveDela = props.mouseLeaveDelay,\n mouseLeaveDelay = _props$mouseLeaveDela === void 0 ? 0.1 : _props$mouseLeaveDela,\n overlayStyle = props.overlayStyle,\n _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-tooltip' : _props$prefixCls,\n children = props.children,\n onVisibleChange = props.onVisibleChange,\n afterVisibleChange = props.afterVisibleChange,\n transitionName = props.transitionName,\n animation = props.animation,\n motion = props.motion,\n _props$placement = props.placement,\n placement = _props$placement === void 0 ? 'right' : _props$placement,\n _props$align = props.align,\n align = _props$align === void 0 ? {} : _props$align,\n _props$destroyTooltip = props.destroyTooltipOnHide,\n destroyTooltipOnHide = _props$destroyTooltip === void 0 ? false : _props$destroyTooltip,\n defaultVisible = props.defaultVisible,\n getTooltipContainer = props.getTooltipContainer,\n overlayInnerStyle = props.overlayInnerStyle,\n arrowContent = props.arrowContent,\n overlay = props.overlay,\n id = props.id,\n _props$showArrow = props.showArrow,\n showArrow = _props$showArrow === void 0 ? true : _props$showArrow,\n restProps = _objectWithoutProperties(props, _excluded);\n var triggerRef = useRef(null);\n useImperativeHandle(ref, function () {\n return triggerRef.current;\n });\n var extraProps = _objectSpread({}, restProps);\n if ('visible' in props) {\n extraProps.popupVisible = props.visible;\n }\n var getPopupElement = function getPopupElement() {\n return /*#__PURE__*/React.createElement(Popup, {\n key: \"content\",\n prefixCls: prefixCls,\n id: id,\n overlayInnerStyle: overlayInnerStyle\n }, overlay);\n };\n return /*#__PURE__*/React.createElement(Trigger, _extends({\n popupClassName: overlayClassName,\n prefixCls: prefixCls,\n popup: getPopupElement,\n action: trigger,\n builtinPlacements: placements,\n popupPlacement: placement,\n ref: triggerRef,\n popupAlign: align,\n getPopupContainer: getTooltipContainer,\n onPopupVisibleChange: onVisibleChange,\n afterPopupVisibleChange: afterVisibleChange,\n popupTransitionName: transitionName,\n popupAnimation: animation,\n popupMotion: motion,\n defaultPopupVisible: defaultVisible,\n autoDestroy: destroyTooltipOnHide,\n mouseLeaveDelay: mouseLeaveDelay,\n popupStyle: overlayStyle,\n mouseEnterDelay: mouseEnterDelay,\n arrow: showArrow\n }, extraProps), children);\n};\nexport default /*#__PURE__*/forwardRef(Tooltip);","import Tooltip from \"./Tooltip\";\nimport Popup from \"./Popup\";\nexport { Popup };\nexport default Tooltip;","export var roundedArrow = function roundedArrow(width, innerRadius, outerRadius, bgColor, boxShadow) {\n var unitWidth = width / 2;\n var ax = 0;\n var ay = unitWidth;\n var bx = outerRadius * 1 / Math.sqrt(2);\n var by = unitWidth - outerRadius * (1 - 1 / Math.sqrt(2));\n var cx = unitWidth - innerRadius * (1 / Math.sqrt(2));\n var cy = outerRadius * (Math.sqrt(2) - 1) + innerRadius * (1 / Math.sqrt(2));\n var dx = 2 * unitWidth - cx;\n var dy = cy;\n var ex = 2 * unitWidth - bx;\n var ey = by;\n var fx = 2 * unitWidth - ax;\n var fy = ay;\n var shadowWidth = unitWidth * Math.sqrt(2) + outerRadius * (Math.sqrt(2) - 2);\n var polygonOffset = outerRadius * (Math.sqrt(2) - 1);\n return {\n pointerEvents: 'none',\n width: width,\n height: width,\n overflow: 'hidden',\n '&::before': {\n position: 'absolute',\n bottom: 0,\n insetInlineStart: 0,\n width: width,\n height: width / 2,\n background: bgColor,\n clipPath: {\n _multi_value_: true,\n value: [\"polygon(\".concat(polygonOffset, \"px 100%, 50% \").concat(polygonOffset, \"px, \").concat(2 * unitWidth - polygonOffset, \"px 100%, \").concat(polygonOffset, \"px 100%)\"), \"path('M \".concat(ax, \" \").concat(ay, \" A \").concat(outerRadius, \" \").concat(outerRadius, \" 0 0 0 \").concat(bx, \" \").concat(by, \" L \").concat(cx, \" \").concat(cy, \" A \").concat(innerRadius, \" \").concat(innerRadius, \" 0 0 1 \").concat(dx, \" \").concat(dy, \" L \").concat(ex, \" \").concat(ey, \" A \").concat(outerRadius, \" \").concat(outerRadius, \" 0 0 0 \").concat(fx, \" \").concat(fy, \" Z')\")]\n },\n content: '\"\"'\n },\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n width: shadowWidth,\n height: shadowWidth,\n bottom: 0,\n insetInline: 0,\n margin: 'auto',\n borderRadius: {\n _skip_check_: true,\n value: \"0 0 \".concat(innerRadius, \"px 0\")\n },\n transform: 'translateY(50%) rotate(-135deg)',\n boxShadow: boxShadow,\n zIndex: 0,\n background: 'transparent'\n }\n };\n};","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { roundedArrow } from './roundedArrow';\nexport var MAX_VERTICAL_CONTENT_RADIUS = 8;\nexport function getArrowOffset(options) {\n var maxVerticalContentRadius = MAX_VERTICAL_CONTENT_RADIUS;\n var contentRadius = options.contentRadius,\n limitVerticalRadius = options.limitVerticalRadius;\n var dropdownArrowOffset = contentRadius > 12 ? contentRadius + 2 : 12;\n var dropdownArrowOffsetVertical = limitVerticalRadius ? maxVerticalContentRadius : dropdownArrowOffset;\n return {\n dropdownArrowOffset: dropdownArrowOffset,\n dropdownArrowOffsetVertical: dropdownArrowOffsetVertical\n };\n}\nfunction isInject(valid, code) {\n if (!valid) return {};\n return code;\n}\nexport default function getArrowStyle(token, options) {\n var _isInject, _isInject2, _isInject3, _isInject4;\n var componentCls = token.componentCls,\n sizePopupArrow = token.sizePopupArrow,\n borderRadiusXS = token.borderRadiusXS,\n borderRadiusOuter = token.borderRadiusOuter,\n boxShadowPopoverArrow = token.boxShadowPopoverArrow;\n var colorBg = options.colorBg,\n _options$contentRadiu = options.contentRadius,\n contentRadius = _options$contentRadiu === void 0 ? token.borderRadiusLG : _options$contentRadiu,\n limitVerticalRadius = options.limitVerticalRadius,\n _options$arrowDistanc = options.arrowDistance,\n arrowDistance = _options$arrowDistanc === void 0 ? 0 : _options$arrowDistanc,\n _options$arrowPlaceme = options.arrowPlacement,\n arrowPlacement = _options$arrowPlaceme === void 0 ? {\n left: true,\n right: true,\n top: true,\n bottom: true\n } : _options$arrowPlaceme;\n var _getArrowOffset = getArrowOffset({\n contentRadius: contentRadius,\n limitVerticalRadius: limitVerticalRadius\n }),\n dropdownArrowOffsetVertical = _getArrowOffset.dropdownArrowOffsetVertical,\n dropdownArrowOffset = _getArrowOffset.dropdownArrowOffset;\n return _defineProperty({}, componentCls, Object.assign(Object.assign(Object.assign(Object.assign(_defineProperty({}, \"\".concat(componentCls, \"-arrow\"), [Object.assign(Object.assign({\n position: 'absolute',\n zIndex: 1,\n display: 'block'\n }, roundedArrow(sizePopupArrow, borderRadiusXS, borderRadiusOuter, colorBg, boxShadowPopoverArrow)), {\n '&:before': {\n background: colorBg\n }\n })]), isInject(!!arrowPlacement.top, (_isInject = {}, _defineProperty(_isInject, [\"&-placement-top \".concat(componentCls, \"-arrow\"), \"&-placement-topLeft \".concat(componentCls, \"-arrow\"), \"&-placement-topRight \".concat(componentCls, \"-arrow\")].join(','), {\n bottom: arrowDistance,\n transform: 'translateY(100%) rotate(180deg)'\n }), _defineProperty(_isInject, \"&-placement-top \".concat(componentCls, \"-arrow\"), {\n left: {\n _skip_check_: true,\n value: '50%'\n },\n transform: 'translateX(-50%) translateY(100%) rotate(180deg)'\n }), _defineProperty(_isInject, \"&-placement-topLeft \".concat(componentCls, \"-arrow\"), {\n left: {\n _skip_check_: true,\n value: dropdownArrowOffset\n }\n }), _defineProperty(_isInject, \"&-placement-topRight \".concat(componentCls, \"-arrow\"), {\n right: {\n _skip_check_: true,\n value: dropdownArrowOffset\n }\n }), _isInject))), isInject(!!arrowPlacement.bottom, (_isInject2 = {}, _defineProperty(_isInject2, [\"&-placement-bottom \".concat(componentCls, \"-arrow\"), \"&-placement-bottomLeft \".concat(componentCls, \"-arrow\"), \"&-placement-bottomRight \".concat(componentCls, \"-arrow\")].join(','), {\n top: arrowDistance,\n transform: \"translateY(-100%)\"\n }), _defineProperty(_isInject2, \"&-placement-bottom \".concat(componentCls, \"-arrow\"), {\n left: {\n _skip_check_: true,\n value: '50%'\n },\n transform: \"translateX(-50%) translateY(-100%)\"\n }), _defineProperty(_isInject2, \"&-placement-bottomLeft \".concat(componentCls, \"-arrow\"), {\n left: {\n _skip_check_: true,\n value: dropdownArrowOffset\n }\n }), _defineProperty(_isInject2, \"&-placement-bottomRight \".concat(componentCls, \"-arrow\"), {\n right: {\n _skip_check_: true,\n value: dropdownArrowOffset\n }\n }), _isInject2))), isInject(!!arrowPlacement.left, (_isInject3 = {}, _defineProperty(_isInject3, [\"&-placement-left \".concat(componentCls, \"-arrow\"), \"&-placement-leftTop \".concat(componentCls, \"-arrow\"), \"&-placement-leftBottom \".concat(componentCls, \"-arrow\")].join(','), {\n right: {\n _skip_check_: true,\n value: arrowDistance\n },\n transform: 'translateX(100%) rotate(90deg)'\n }), _defineProperty(_isInject3, \"&-placement-left \".concat(componentCls, \"-arrow\"), {\n top: {\n _skip_check_: true,\n value: '50%'\n },\n transform: 'translateY(-50%) translateX(100%) rotate(90deg)'\n }), _defineProperty(_isInject3, \"&-placement-leftTop \".concat(componentCls, \"-arrow\"), {\n top: dropdownArrowOffsetVertical\n }), _defineProperty(_isInject3, \"&-placement-leftBottom \".concat(componentCls, \"-arrow\"), {\n bottom: dropdownArrowOffsetVertical\n }), _isInject3))), isInject(!!arrowPlacement.right, (_isInject4 = {}, _defineProperty(_isInject4, [\"&-placement-right \".concat(componentCls, \"-arrow\"), \"&-placement-rightTop \".concat(componentCls, \"-arrow\"), \"&-placement-rightBottom \".concat(componentCls, \"-arrow\")].join(','), {\n left: {\n _skip_check_: true,\n value: arrowDistance\n },\n transform: 'translateX(-100%) rotate(-90deg)'\n }), _defineProperty(_isInject4, \"&-placement-right \".concat(componentCls, \"-arrow\"), {\n top: {\n _skip_check_: true,\n value: '50%'\n },\n transform: 'translateY(-50%) translateX(-100%) rotate(-90deg)'\n }), _defineProperty(_isInject4, \"&-placement-rightTop \".concat(componentCls, \"-arrow\"), {\n top: dropdownArrowOffsetVertical\n }), _defineProperty(_isInject4, \"&-placement-rightBottom \".concat(componentCls, \"-arrow\"), {\n bottom: dropdownArrowOffsetVertical\n }), _isInject4))));\n}","import { getArrowOffset } from '../style/placementArrow';\nexport function getOverflowOptions(placement, arrowOffset, arrowWidth, autoAdjustOverflow) {\n if (autoAdjustOverflow === false) {\n return {\n adjustX: false,\n adjustY: false\n };\n }\n var overflow = autoAdjustOverflow && typeof autoAdjustOverflow === 'object' ? autoAdjustOverflow : {};\n var baseOverflow = {};\n switch (placement) {\n case 'top':\n case 'bottom':\n baseOverflow.shiftX = arrowOffset.dropdownArrowOffset * 2 + arrowWidth;\n break;\n case 'left':\n case 'right':\n baseOverflow.shiftY = arrowOffset.dropdownArrowOffsetVertical * 2 + arrowWidth;\n break;\n }\n var mergedOverflow = Object.assign(Object.assign({}, baseOverflow), overflow);\n // Support auto shift\n if (!mergedOverflow.shiftX) {\n mergedOverflow.adjustX = true;\n }\n if (!mergedOverflow.shiftY) {\n mergedOverflow.adjustY = true;\n }\n return mergedOverflow;\n}\nvar PlacementAlignMap = {\n left: {\n points: ['cr', 'cl']\n },\n right: {\n points: ['cl', 'cr']\n },\n top: {\n points: ['bc', 'tc']\n },\n bottom: {\n points: ['tc', 'bc']\n },\n topLeft: {\n points: ['bl', 'tl']\n },\n leftTop: {\n points: ['tr', 'tl']\n },\n topRight: {\n points: ['br', 'tr']\n },\n rightTop: {\n points: ['tl', 'tr']\n },\n bottomRight: {\n points: ['tr', 'br']\n },\n rightBottom: {\n points: ['bl', 'br']\n },\n bottomLeft: {\n points: ['tl', 'bl']\n },\n leftBottom: {\n points: ['br', 'bl']\n }\n};\nvar ArrowCenterPlacementAlignMap = {\n topLeft: {\n points: ['bl', 'tc']\n },\n leftTop: {\n points: ['tr', 'cl']\n },\n topRight: {\n points: ['br', 'tc']\n },\n rightTop: {\n points: ['tl', 'cr']\n },\n bottomRight: {\n points: ['tr', 'bc']\n },\n rightBottom: {\n points: ['bl', 'cr']\n },\n bottomLeft: {\n points: ['tl', 'bc']\n },\n leftBottom: {\n points: ['br', 'cl']\n }\n};\nvar DisableAutoArrowList = new Set(['topLeft', 'topRight', 'bottomLeft', 'bottomRight', 'leftTop', 'leftBottom', 'rightTop', 'rightBottom']);\nexport default function getPlacements(config) {\n var arrowWidth = config.arrowWidth,\n autoAdjustOverflow = config.autoAdjustOverflow,\n arrowPointAtCenter = config.arrowPointAtCenter,\n offset = config.offset,\n borderRadius = config.borderRadius,\n visibleFirst = config.visibleFirst;\n var halfArrowWidth = arrowWidth / 2;\n var placementMap = {};\n Object.keys(PlacementAlignMap).forEach(function (key) {\n var template = arrowPointAtCenter && ArrowCenterPlacementAlignMap[key] || PlacementAlignMap[key];\n var placementInfo = Object.assign(Object.assign({}, template), {\n offset: [0, 0]\n });\n placementMap[key] = placementInfo;\n // Disable autoArrow since design is fixed position\n if (DisableAutoArrowList.has(key)) {\n placementInfo.autoArrow = false;\n }\n // Static offset\n switch (key) {\n case 'top':\n case 'topLeft':\n case 'topRight':\n placementInfo.offset[1] = -halfArrowWidth - offset;\n break;\n case 'bottom':\n case 'bottomLeft':\n case 'bottomRight':\n placementInfo.offset[1] = halfArrowWidth + offset;\n break;\n case 'left':\n case 'leftTop':\n case 'leftBottom':\n placementInfo.offset[0] = -halfArrowWidth - offset;\n break;\n case 'right':\n case 'rightTop':\n case 'rightBottom':\n placementInfo.offset[0] = halfArrowWidth + offset;\n break;\n }\n // Dynamic offset\n var arrowOffset = getArrowOffset({\n contentRadius: borderRadius,\n limitVerticalRadius: true\n });\n if (arrowPointAtCenter) {\n switch (key) {\n case 'topLeft':\n case 'bottomLeft':\n placementInfo.offset[0] = -arrowOffset.dropdownArrowOffset - halfArrowWidth;\n break;\n case 'topRight':\n case 'bottomRight':\n placementInfo.offset[0] = arrowOffset.dropdownArrowOffset + halfArrowWidth;\n break;\n case 'leftTop':\n case 'rightTop':\n placementInfo.offset[1] = -arrowOffset.dropdownArrowOffset - halfArrowWidth;\n break;\n case 'leftBottom':\n case 'rightBottom':\n placementInfo.offset[1] = arrowOffset.dropdownArrowOffset + halfArrowWidth;\n break;\n }\n }\n // Overflow\n placementInfo.overflow = getOverflowOptions(key, arrowOffset, arrowWidth, autoAdjustOverflow);\n // VisibleFirst\n if (visibleFirst) {\n placementInfo.htmlRegion = 'visibleFirst';\n }\n });\n return placementMap;\n}","'use client';\n\n/* eslint-disable import/prefer-default-export */\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport getDesignToken from './getDesignToken';\nimport { defaultConfig, useToken as useInternalToken } from './internal';\nimport compactAlgorithm from './themes/compact';\nimport darkAlgorithm from './themes/dark';\nimport defaultAlgorithm from './themes/default';\n// ZombieJ: We export as object to user but array in internal.\n// This is used to minimize the bundle size for antd package but safe to refactor as object also.\n// Please do not export internal `useToken` directly to avoid something export unexpected.\n/** Get current context Design Token. Will be different if you are using nest theme config. */\nfunction useToken() {\n var _useInternalToken = useInternalToken(),\n _useInternalToken2 = _slicedToArray(_useInternalToken, 3),\n theme = _useInternalToken2[0],\n token = _useInternalToken2[1],\n hashId = _useInternalToken2[2];\n return {\n theme: theme,\n token: token,\n hashId: hashId\n };\n}\nexport default {\n /** @private Test Usage. Do not use in production. */\n defaultConfig: defaultConfig,\n /** Default seedToken */\n defaultSeed: defaultConfig.token,\n useToken: useToken,\n defaultAlgorithm: defaultAlgorithm,\n darkAlgorithm: darkAlgorithm,\n compactAlgorithm: compactAlgorithm,\n getDesignToken: getDesignToken\n};","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nvar initMotionCommon = function initMotionCommon(duration) {\n return {\n animationDuration: duration,\n animationFillMode: 'both'\n };\n};\n// FIXME: origin less code seems same as initMotionCommon. Maybe we can safe remove\nvar initMotionCommonLeave = function initMotionCommonLeave(duration) {\n return {\n animationDuration: duration,\n animationFillMode: 'both'\n };\n};\nexport var initMotion = function initMotion(motionCls, inKeyframes, outKeyframes, duration) {\n var _ref;\n var sameLevel = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n var sameLevelPrefix = sameLevel ? '&' : '';\n return _ref = {}, _defineProperty(_ref, \"\\n \".concat(sameLevelPrefix).concat(motionCls, \"-enter,\\n \").concat(sameLevelPrefix).concat(motionCls, \"-appear\\n \"), Object.assign(Object.assign({}, initMotionCommon(duration)), {\n animationPlayState: 'paused'\n })), _defineProperty(_ref, \"\".concat(sameLevelPrefix).concat(motionCls, \"-leave\"), Object.assign(Object.assign({}, initMotionCommonLeave(duration)), {\n animationPlayState: 'paused'\n })), _defineProperty(_ref, \"\\n \".concat(sameLevelPrefix).concat(motionCls, \"-enter\").concat(motionCls, \"-enter-active,\\n \").concat(sameLevelPrefix).concat(motionCls, \"-appear\").concat(motionCls, \"-appear-active\\n \"), {\n animationName: inKeyframes,\n animationPlayState: 'running'\n }), _defineProperty(_ref, \"\".concat(sameLevelPrefix).concat(motionCls, \"-leave\").concat(motionCls, \"-leave-active\"), {\n animationName: outKeyframes,\n animationPlayState: 'running',\n pointerEvents: 'none'\n }), _ref;\n};","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { Keyframes } from '@ant-design/cssinjs';\nimport { initMotion } from './motion';\nexport var zoomIn = new Keyframes('antZoomIn', {\n '0%': {\n transform: 'scale(0.2)',\n opacity: 0\n },\n '100%': {\n transform: 'scale(1)',\n opacity: 1\n }\n});\nexport var zoomOut = new Keyframes('antZoomOut', {\n '0%': {\n transform: 'scale(1)'\n },\n '100%': {\n transform: 'scale(0.2)',\n opacity: 0\n }\n});\nexport var zoomBigIn = new Keyframes('antZoomBigIn', {\n '0%': {\n transform: 'scale(0.8)',\n opacity: 0\n },\n '100%': {\n transform: 'scale(1)',\n opacity: 1\n }\n});\nexport var zoomBigOut = new Keyframes('antZoomBigOut', {\n '0%': {\n transform: 'scale(1)'\n },\n '100%': {\n transform: 'scale(0.8)',\n opacity: 0\n }\n});\nexport var zoomUpIn = new Keyframes('antZoomUpIn', {\n '0%': {\n transform: 'scale(0.8)',\n transformOrigin: '50% 0%',\n opacity: 0\n },\n '100%': {\n transform: 'scale(1)',\n transformOrigin: '50% 0%'\n }\n});\nexport var zoomUpOut = new Keyframes('antZoomUpOut', {\n '0%': {\n transform: 'scale(1)',\n transformOrigin: '50% 0%'\n },\n '100%': {\n transform: 'scale(0.8)',\n transformOrigin: '50% 0%',\n opacity: 0\n }\n});\nexport var zoomLeftIn = new Keyframes('antZoomLeftIn', {\n '0%': {\n transform: 'scale(0.8)',\n transformOrigin: '0% 50%',\n opacity: 0\n },\n '100%': {\n transform: 'scale(1)',\n transformOrigin: '0% 50%'\n }\n});\nexport var zoomLeftOut = new Keyframes('antZoomLeftOut', {\n '0%': {\n transform: 'scale(1)',\n transformOrigin: '0% 50%'\n },\n '100%': {\n transform: 'scale(0.8)',\n transformOrigin: '0% 50%',\n opacity: 0\n }\n});\nexport var zoomRightIn = new Keyframes('antZoomRightIn', {\n '0%': {\n transform: 'scale(0.8)',\n transformOrigin: '100% 50%',\n opacity: 0\n },\n '100%': {\n transform: 'scale(1)',\n transformOrigin: '100% 50%'\n }\n});\nexport var zoomRightOut = new Keyframes('antZoomRightOut', {\n '0%': {\n transform: 'scale(1)',\n transformOrigin: '100% 50%'\n },\n '100%': {\n transform: 'scale(0.8)',\n transformOrigin: '100% 50%',\n opacity: 0\n }\n});\nexport var zoomDownIn = new Keyframes('antZoomDownIn', {\n '0%': {\n transform: 'scale(0.8)',\n transformOrigin: '50% 100%',\n opacity: 0\n },\n '100%': {\n transform: 'scale(1)',\n transformOrigin: '50% 100%'\n }\n});\nexport var zoomDownOut = new Keyframes('antZoomDownOut', {\n '0%': {\n transform: 'scale(1)',\n transformOrigin: '50% 100%'\n },\n '100%': {\n transform: 'scale(0.8)',\n transformOrigin: '50% 100%',\n opacity: 0\n }\n});\nvar zoomMotion = {\n zoom: {\n inKeyframes: zoomIn,\n outKeyframes: zoomOut\n },\n 'zoom-big': {\n inKeyframes: zoomBigIn,\n outKeyframes: zoomBigOut\n },\n 'zoom-big-fast': {\n inKeyframes: zoomBigIn,\n outKeyframes: zoomBigOut\n },\n 'zoom-left': {\n inKeyframes: zoomLeftIn,\n outKeyframes: zoomLeftOut\n },\n 'zoom-right': {\n inKeyframes: zoomRightIn,\n outKeyframes: zoomRightOut\n },\n 'zoom-up': {\n inKeyframes: zoomUpIn,\n outKeyframes: zoomUpOut\n },\n 'zoom-down': {\n inKeyframes: zoomDownIn,\n outKeyframes: zoomDownOut\n }\n};\nexport var initZoomMotion = function initZoomMotion(token, motionName) {\n var _ref;\n var antCls = token.antCls;\n var motionCls = \"\".concat(antCls, \"-\").concat(motionName);\n var _zoomMotion$motionNam = zoomMotion[motionName],\n inKeyframes = _zoomMotion$motionNam.inKeyframes,\n outKeyframes = _zoomMotion$motionNam.outKeyframes;\n return [initMotion(motionCls, inKeyframes, outKeyframes, motionName === 'zoom-big-fast' ? token.motionDurationFast : token.motionDurationMid), (_ref = {}, _defineProperty(_ref, \"\\n \".concat(motionCls, \"-enter,\\n \").concat(motionCls, \"-appear\\n \"), {\n transform: 'scale(0)',\n opacity: 0,\n animationTimingFunction: token.motionEaseOutCirc,\n '&-prepare': {\n transform: 'none'\n }\n }), _defineProperty(_ref, \"\".concat(motionCls, \"-leave\"), {\n animationTimingFunction: token.motionEaseInOutCirc\n }), _ref)];\n};","export var PresetColors = ['blue', 'purple', 'cyan', 'green', 'magenta', 'pink', 'red', 'orange', 'yellow', 'volcano', 'geekblue', 'lime', 'gold'];","import { PresetColors } from '../interface';\nexport default function genPresetColor(token, genCss) {\n return PresetColors.reduce(function (prev, colorKey) {\n var lightColor = token[\"\".concat(colorKey, \"1\")];\n var lightBorderColor = token[\"\".concat(colorKey, \"3\")];\n var darkColor = token[\"\".concat(colorKey, \"6\")];\n var textColor = token[\"\".concat(colorKey, \"7\")];\n return Object.assign(Object.assign({}, prev), genCss(colorKey, {\n lightColor: lightColor,\n lightBorderColor: lightBorderColor,\n darkColor: darkColor,\n textColor: textColor\n }));\n }, {});\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { resetComponent } from '../../style';\nimport { initZoomMotion } from '../../style/motion';\nimport getArrowStyle, { MAX_VERTICAL_CONTENT_RADIUS } from '../../style/placementArrow';\nimport { genComponentStyleHook, genPresetColor, mergeToken } from '../../theme/internal';\nvar genTooltipStyle = function genTooltipStyle(token) {\n var _Object$assign;\n var componentCls = token.componentCls,\n tooltipMaxWidth = token.tooltipMaxWidth,\n tooltipColor = token.tooltipColor,\n tooltipBg = token.tooltipBg,\n tooltipBorderRadius = token.tooltipBorderRadius,\n zIndexPopup = token.zIndexPopup,\n controlHeight = token.controlHeight,\n boxShadowSecondary = token.boxShadowSecondary,\n paddingSM = token.paddingSM,\n paddingXS = token.paddingXS,\n tooltipRadiusOuter = token.tooltipRadiusOuter;\n return [_defineProperty({}, componentCls, Object.assign(Object.assign(Object.assign(Object.assign({}, resetComponent(token)), (_Object$assign = {\n position: 'absolute',\n zIndex: zIndexPopup,\n display: 'block',\n width: 'max-content',\n maxWidth: tooltipMaxWidth,\n visibility: 'visible',\n transformOrigin: \"var(--arrow-x, 50%) var(--arrow-y, 50%)\",\n '&-hidden': {\n display: 'none'\n },\n '--antd-arrow-background-color': tooltipBg\n }, _defineProperty(_Object$assign, \"\".concat(componentCls, \"-inner\"), {\n minWidth: controlHeight,\n minHeight: controlHeight,\n padding: \"\".concat(paddingSM / 2, \"px \").concat(paddingXS, \"px\"),\n color: tooltipColor,\n textAlign: 'start',\n textDecoration: 'none',\n wordWrap: 'break-word',\n backgroundColor: tooltipBg,\n borderRadius: tooltipBorderRadius,\n boxShadow: boxShadowSecondary,\n boxSizing: 'border-box'\n }), _defineProperty(_Object$assign, [\"&-placement-left\", \"&-placement-leftTop\", \"&-placement-leftBottom\", \"&-placement-right\", \"&-placement-rightTop\", \"&-placement-rightBottom\"].join(','), _defineProperty({}, \"\".concat(componentCls, \"-inner\"), {\n borderRadius: Math.min(tooltipBorderRadius, MAX_VERTICAL_CONTENT_RADIUS)\n })), _defineProperty(_Object$assign, \"\".concat(componentCls, \"-content\"), {\n position: 'relative'\n }), _Object$assign)), genPresetColor(token, function (colorKey, _ref) {\n var _$concat$concat;\n var darkColor = _ref.darkColor;\n return _defineProperty({}, \"&\".concat(componentCls, \"-\").concat(colorKey), (_$concat$concat = {}, _defineProperty(_$concat$concat, \"\".concat(componentCls, \"-inner\"), {\n backgroundColor: darkColor\n }), _defineProperty(_$concat$concat, \"\".concat(componentCls, \"-arrow\"), {\n '--antd-arrow-background-color': darkColor\n }), _$concat$concat));\n })), {\n // RTL\n '&-rtl': {\n direction: 'rtl'\n }\n })),\n // Arrow Style\n getArrowStyle(mergeToken(token, {\n borderRadiusOuter: tooltipRadiusOuter\n }), {\n colorBg: 'var(--antd-arrow-background-color)',\n contentRadius: tooltipBorderRadius,\n limitVerticalRadius: true\n }), // Pure Render\n _defineProperty({}, \"\".concat(componentCls, \"-pure\"), {\n position: 'relative',\n maxWidth: 'none',\n margin: token.sizePopupArrow\n })];\n};\n// ============================== Export ==============================\nexport default (function (prefixCls, injectStyle) {\n var useOriginHook = genComponentStyleHook('Tooltip', function (token) {\n // Popover use Tooltip as internal component. We do not need to handle this.\n if (injectStyle === false) {\n return [];\n }\n var borderRadius = token.borderRadius,\n colorTextLightSolid = token.colorTextLightSolid,\n colorBgDefault = token.colorBgDefault,\n borderRadiusOuter = token.borderRadiusOuter;\n var TooltipToken = mergeToken(token, {\n // default variables\n tooltipMaxWidth: 250,\n tooltipColor: colorTextLightSolid,\n tooltipBorderRadius: borderRadius,\n tooltipBg: colorBgDefault,\n tooltipRadiusOuter: borderRadiusOuter > 4 ? 4 : borderRadiusOuter\n });\n return [genTooltipStyle(TooltipToken), initZoomMotion(token, 'zoom-big-fast')];\n }, function (_ref2) {\n var zIndexPopupBase = _ref2.zIndexPopupBase,\n colorBgSpotlight = _ref2.colorBgSpotlight;\n return {\n zIndexPopup: zIndexPopupBase + 70,\n colorBgDefault: colorBgSpotlight\n };\n }, {\n resetStyle: false\n });\n return useOriginHook(prefixCls);\n});","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport { PresetColors } from '../theme/interface';\nvar inverseColors = PresetColors.map(function (color) {\n return \"\".concat(color, \"-inverse\");\n});\nexport var PresetStatusColorTypes = ['success', 'processing', 'error', 'default', 'warning'];\n/**\n * determine if the color keyword belongs to the `Ant Design` {@link PresetColors}.\n * @param color color to be judged\n * @param includeInverse whether to include reversed colors\n */\nexport function isPresetColor(color) {\n var includeInverse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n if (includeInverse) {\n return [].concat(_toConsumableArray(inverseColors), _toConsumableArray(PresetColors)).includes(color);\n }\n return PresetColors.includes(color);\n}\nexport function isPresetStatusColor(color) {\n return PresetStatusColorTypes.includes(color);\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\n/* eslint-disable import/prefer-default-export */\nimport classNames from 'classnames';\nimport { isPresetColor } from '../_util/colors';\nexport function parseColor(prefixCls, color) {\n var isInternalColor = isPresetColor(color);\n var className = classNames(_defineProperty({}, \"\".concat(prefixCls, \"-\").concat(color), color && isInternalColor));\n var overlayStyle = {};\n var arrowStyle = {};\n if (color && !isInternalColor) {\n overlayStyle.background = color;\n // @ts-ignore\n arrowStyle['--antd-arrow-background-color'] = color;\n }\n return {\n className: className,\n overlayStyle: overlayStyle,\n arrowStyle: arrowStyle\n };\n}","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport classNames from 'classnames';\nimport { Popup } from 'rc-tooltip';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport useStyle from './style';\nimport { parseColor } from './util';\n/** @private Internal Component. Do not use in your production. */\nvar PurePanel = function PurePanel(props) {\n var customizePrefixCls = props.prefixCls,\n className = props.className,\n _props$placement = props.placement,\n placement = _props$placement === void 0 ? 'top' : _props$placement,\n title = props.title,\n color = props.color,\n overlayInnerStyle = props.overlayInnerStyle;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls;\n var prefixCls = getPrefixCls('tooltip', customizePrefixCls);\n var _useStyle = useStyle(prefixCls, true),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n // Color\n var colorInfo = parseColor(prefixCls, color);\n var arrowContentStyle = colorInfo.arrowStyle;\n var formattedOverlayInnerStyle = Object.assign(Object.assign({}, overlayInnerStyle), colorInfo.overlayStyle);\n var cls = classNames(hashId, prefixCls, \"\".concat(prefixCls, \"-pure\"), \"\".concat(prefixCls, \"-placement-\").concat(placement), className, colorInfo.className);\n return wrapSSR( /*#__PURE__*/React.createElement(\"div\", {\n className: cls,\n style: arrowContentStyle\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-arrow\")\n }), /*#__PURE__*/React.createElement(Popup, Object.assign({}, props, {\n className: hashId,\n prefixCls: prefixCls,\n overlayInnerStyle: formattedOverlayInnerStyle\n }), title)));\n};\nexport default PurePanel;","'use client';\n\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport RcTooltip from 'rc-tooltip';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport * as React from 'react';\nimport { getTransitionName } from '../_util/motion';\nimport getPlacements from '../_util/placements';\nimport { cloneElement, isFragment, isValidElement } from '../_util/reactNode';\nimport warning from '../_util/warning';\nimport { ConfigContext } from '../config-provider';\nimport { NoCompactStyle } from '../space/Compact';\nimport theme from '../theme';\nimport PurePanel from './PurePanel';\nimport useStyle from './style';\nimport { parseColor } from './util';\nvar useToken = theme.useToken;\nvar splitObject = function splitObject(obj, keys) {\n var picked = {};\n var omitted = Object.assign({}, obj);\n keys.forEach(function (key) {\n if (obj && key in obj) {\n picked[key] = obj[key];\n delete omitted[key];\n }\n });\n return {\n picked: picked,\n omitted: omitted\n };\n};\n// Fix Tooltip won't hide at disabled button\n// mouse events don't trigger at disabled button in Chrome\n// https://github.com/react-component/tooltip/issues/18\nfunction getDisabledCompatibleChildren(element, prefixCls) {\n var elementType = element.type;\n if ((elementType.__ANT_BUTTON === true || element.type === 'button') && element.props.disabled || elementType.__ANT_SWITCH === true && (element.props.disabled || element.props.loading) || elementType.__ANT_RADIO === true && element.props.disabled) {\n // Pick some layout related style properties up to span\n // Prevent layout bugs like https://github.com/ant-design/ant-design/issues/5254\n var _splitObject = splitObject(element.props.style, ['position', 'left', 'right', 'top', 'bottom', 'float', 'display', 'zIndex']),\n picked = _splitObject.picked,\n omitted = _splitObject.omitted;\n var spanStyle = Object.assign(Object.assign({\n display: 'inline-block'\n }, picked), {\n cursor: 'not-allowed',\n width: element.props.block ? '100%' : undefined\n });\n var buttonStyle = Object.assign(Object.assign({}, omitted), {\n pointerEvents: 'none'\n });\n var child = cloneElement(element, {\n style: buttonStyle,\n className: null\n });\n return /*#__PURE__*/React.createElement(\"span\", {\n style: spanStyle,\n className: classNames(element.props.className, \"\".concat(prefixCls, \"-disabled-compatible-wrapper\"))\n }, child);\n }\n return element;\n}\nvar Tooltip = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _a, _b;\n var customizePrefixCls = props.prefixCls,\n openClassName = props.openClassName,\n getTooltipContainer = props.getTooltipContainer,\n overlayClassName = props.overlayClassName,\n color = props.color,\n overlayInnerStyle = props.overlayInnerStyle,\n children = props.children,\n afterOpenChange = props.afterOpenChange,\n afterVisibleChange = props.afterVisibleChange,\n destroyTooltipOnHide = props.destroyTooltipOnHide,\n _props$arrow = props.arrow,\n arrow = _props$arrow === void 0 ? true : _props$arrow,\n title = props.title,\n overlay = props.overlay,\n builtinPlacements = props.builtinPlacements,\n _props$arrowPointAtCe = props.arrowPointAtCenter,\n arrowPointAtCenter = _props$arrowPointAtCe === void 0 ? false : _props$arrowPointAtCe,\n _props$autoAdjustOver = props.autoAdjustOverflow,\n autoAdjustOverflow = _props$autoAdjustOver === void 0 ? true : _props$autoAdjustOver;\n var mergedShowArrow = !!arrow;\n var _useToken = useToken(),\n token = _useToken.token;\n var _React$useContext = React.useContext(ConfigContext),\n getContextPopupContainer = _React$useContext.getPopupContainer,\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n // ============================== Ref ===============================\n var tooltipRef = React.useRef(null);\n var forceAlign = function forceAlign() {\n var _a;\n (_a = tooltipRef.current) === null || _a === void 0 ? void 0 : _a.forceAlign();\n };\n React.useImperativeHandle(ref, function () {\n return {\n forceAlign: forceAlign,\n forcePopupAlign: function forcePopupAlign() {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Tooltip', '`forcePopupAlign` is align to `forceAlign` instead.') : void 0;\n forceAlign();\n }\n };\n });\n // ============================== Warn ==============================\n if (process.env.NODE_ENV !== 'production') {\n [['visible', 'open'], ['defaultVisible', 'defaultOpen'], ['onVisibleChange', 'onOpenChange'], ['afterVisibleChange', 'afterOpenChange'], ['arrowPointAtCenter', 'arrow={{ pointAtCenter: true }}']].forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n deprecatedName = _ref2[0],\n newName = _ref2[1];\n process.env.NODE_ENV !== \"production\" ? warning(!(deprecatedName in props), 'Tooltip', \"`\".concat(deprecatedName, \"` is deprecated, please use `\").concat(newName, \"` instead.\")) : void 0;\n });\n process.env.NODE_ENV !== \"production\" ? warning(!destroyTooltipOnHide || typeof destroyTooltipOnHide === 'boolean', 'Tooltip', '`destroyTooltipOnHide` no need config `keepParent` anymore. Please use `boolean` value directly.') : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!arrow || typeof arrow === 'boolean' || !('arrowPointAtCenter' in arrow), 'Tooltip', '`arrowPointAtCenter` in `arrow` is deprecated, please use `pointAtCenter` instead.') : void 0;\n }\n // ============================== Open ==============================\n var _useMergedState = useMergedState(false, {\n value: (_a = props.open) !== null && _a !== void 0 ? _a : props.visible,\n defaultValue: (_b = props.defaultOpen) !== null && _b !== void 0 ? _b : props.defaultVisible\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n open = _useMergedState2[0],\n setOpen = _useMergedState2[1];\n var noTitle = !title && !overlay && title !== 0; // overlay for old version compatibility\n var onOpenChange = function onOpenChange(vis) {\n var _a, _b;\n setOpen(noTitle ? false : vis);\n if (!noTitle) {\n (_a = props.onOpenChange) === null || _a === void 0 ? void 0 : _a.call(props, vis);\n (_b = props.onVisibleChange) === null || _b === void 0 ? void 0 : _b.call(props, vis);\n }\n };\n var tooltipPlacements = React.useMemo(function () {\n var _a, _b;\n var mergedArrowPointAtCenter = arrowPointAtCenter;\n if (typeof arrow === 'object') {\n mergedArrowPointAtCenter = (_b = (_a = arrow.pointAtCenter) !== null && _a !== void 0 ? _a : arrow.arrowPointAtCenter) !== null && _b !== void 0 ? _b : arrowPointAtCenter;\n }\n return builtinPlacements || getPlacements({\n arrowPointAtCenter: mergedArrowPointAtCenter,\n autoAdjustOverflow: autoAdjustOverflow,\n arrowWidth: mergedShowArrow ? token.sizePopupArrow : 0,\n borderRadius: token.borderRadius,\n offset: token.marginXXS,\n visibleFirst: true\n });\n }, [arrowPointAtCenter, arrow, builtinPlacements, token]);\n var memoOverlay = React.useMemo(function () {\n if (title === 0) {\n return title;\n }\n return overlay || title || '';\n }, [overlay, title]);\n var memoOverlayWrapper = /*#__PURE__*/React.createElement(NoCompactStyle, null, typeof memoOverlay === 'function' ? memoOverlay() : memoOverlay);\n var getPopupContainer = props.getPopupContainer,\n _props$placement = props.placement,\n placement = _props$placement === void 0 ? 'top' : _props$placement,\n _props$mouseEnterDela = props.mouseEnterDelay,\n mouseEnterDelay = _props$mouseEnterDela === void 0 ? 0.1 : _props$mouseEnterDela,\n _props$mouseLeaveDela = props.mouseLeaveDelay,\n mouseLeaveDelay = _props$mouseLeaveDela === void 0 ? 0.1 : _props$mouseLeaveDela,\n overlayStyle = props.overlayStyle,\n rootClassName = props.rootClassName,\n otherProps = __rest(props, [\"getPopupContainer\", \"placement\", \"mouseEnterDelay\", \"mouseLeaveDelay\", \"overlayStyle\", \"rootClassName\"]);\n var prefixCls = getPrefixCls('tooltip', customizePrefixCls);\n var rootPrefixCls = getPrefixCls();\n var injectFromPopover = props['data-popover-inject'];\n var tempOpen = open;\n // Hide tooltip when there is no title\n if (!('open' in props) && !('visible' in props) && noTitle) {\n tempOpen = false;\n }\n // ============================= Render =============================\n var child = getDisabledCompatibleChildren(isValidElement(children) && !isFragment(children) ? children : /*#__PURE__*/React.createElement(\"span\", null, children), prefixCls);\n var childProps = child.props;\n var childCls = !childProps.className || typeof childProps.className === 'string' ? classNames(childProps.className, openClassName || \"\".concat(prefixCls, \"-open\")) : childProps.className;\n // Style\n var _useStyle = useStyle(prefixCls, !injectFromPopover),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n // Color\n var colorInfo = parseColor(prefixCls, color);\n var arrowContentStyle = colorInfo.arrowStyle;\n var formattedOverlayInnerStyle = Object.assign(Object.assign({}, overlayInnerStyle), colorInfo.overlayStyle);\n var customOverlayClassName = classNames(overlayClassName, _defineProperty({}, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), colorInfo.className, rootClassName, hashId);\n return wrapSSR( /*#__PURE__*/React.createElement(RcTooltip, Object.assign({}, otherProps, {\n showArrow: mergedShowArrow,\n placement: placement,\n mouseEnterDelay: mouseEnterDelay,\n mouseLeaveDelay: mouseLeaveDelay,\n prefixCls: prefixCls,\n overlayClassName: customOverlayClassName,\n overlayStyle: Object.assign(Object.assign({}, arrowContentStyle), overlayStyle),\n getTooltipContainer: getPopupContainer || getTooltipContainer || getContextPopupContainer,\n ref: tooltipRef,\n builtinPlacements: tooltipPlacements,\n overlay: memoOverlayWrapper,\n visible: tempOpen,\n onVisibleChange: onOpenChange,\n afterVisibleChange: afterOpenChange !== null && afterOpenChange !== void 0 ? afterOpenChange : afterVisibleChange,\n overlayInnerStyle: formattedOverlayInnerStyle,\n arrowContent: /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-arrow-content\")\n }),\n motion: {\n motionName: getTransitionName(rootPrefixCls, 'zoom-big-fast', props.transitionName),\n motionDeadline: 1000\n },\n destroyTooltipOnHide: !!destroyTooltipOnHide\n }), tempOpen ? cloneElement(child, {\n className: childCls\n }) : child));\n});\nif (process.env.NODE_ENV !== 'production') {\n Tooltip.displayName = 'Tooltip';\n}\nTooltip._InternalPanelDoNotUseOrYouWillBeFired = PurePanel;\nexport default Tooltip;","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport { presetPrimaryColors } from '@ant-design/colors';\nimport warning from '../_util/warning';\nexport function validProgress(progress) {\n if (!progress || progress < 0) {\n return 0;\n }\n if (progress > 100) {\n return 100;\n }\n return progress;\n}\nexport function getSuccessPercent(_ref) {\n var success = _ref.success,\n successPercent = _ref.successPercent;\n var percent = successPercent;\n /** @deprecated Use `percent` instead */\n if (success && 'progress' in success) {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Progress', '`success.progress` is deprecated. Please use `success.percent` instead.') : void 0;\n percent = success.progress;\n }\n if (success && 'percent' in success) {\n percent = success.percent;\n }\n return percent;\n}\nexport var getPercentage = function getPercentage(_ref2) {\n var percent = _ref2.percent,\n success = _ref2.success,\n successPercent = _ref2.successPercent;\n var realSuccessPercent = validProgress(getSuccessPercent({\n success: success,\n successPercent: successPercent\n }));\n return [realSuccessPercent, validProgress(validProgress(percent) - realSuccessPercent)];\n};\nexport var getStrokeColor = function getStrokeColor(_ref3) {\n var _ref3$success = _ref3.success,\n success = _ref3$success === void 0 ? {} : _ref3$success,\n strokeColor = _ref3.strokeColor;\n var successColor = success.strokeColor;\n return [successColor || presetPrimaryColors.green, strokeColor || null];\n};\nexport var getSize = function getSize(size, type, extra) {\n var _a, _b, _c, _d;\n var width = -1;\n var height = -1;\n if (type === 'step') {\n var steps = extra.steps;\n var strokeWidth = extra.strokeWidth;\n if (typeof size === 'string' || typeof size === 'undefined') {\n width = size === 'small' ? 2 : 14;\n height = strokeWidth !== null && strokeWidth !== void 0 ? strokeWidth : 8;\n } else if (typeof size === 'number') {\n width = size;\n height = size;\n } else {\n var _size = _slicedToArray(size, 2);\n var _size$ = _size[0];\n width = _size$ === void 0 ? 14 : _size$;\n var _size$2 = _size[1];\n height = _size$2 === void 0 ? 8 : _size$2;\n }\n width *= steps;\n } else if (type === 'line') {\n var _strokeWidth = extra === null || extra === void 0 ? void 0 : extra.strokeWidth;\n if (typeof size === 'string' || typeof size === 'undefined') {\n height = _strokeWidth || (size === 'small' ? 6 : 8);\n } else if (typeof size === 'number') {\n width = size;\n height = size;\n } else {\n var _size2 = _slicedToArray(size, 2);\n var _size2$ = _size2[0];\n width = _size2$ === void 0 ? -1 : _size2$;\n var _size2$2 = _size2[1];\n height = _size2$2 === void 0 ? 8 : _size2$2;\n }\n } else if (type === 'circle' || type === 'dashboard') {\n if (typeof size === 'string' || typeof size === 'undefined') {\n var _ref4 = size === 'small' ? [60, 60] : [120, 120];\n var _ref5 = _slicedToArray(_ref4, 2);\n width = _ref5[0];\n height = _ref5[1];\n } else if (typeof size === 'number') {\n width = size;\n height = size;\n } else {\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Progress', 'Type \"circle\" and \"dashbord\" do not accept array as `size`, please use number or preset size instead.') : void 0;\n }\n width = (_b = (_a = size[0]) !== null && _a !== void 0 ? _a : size[1]) !== null && _b !== void 0 ? _b : 120;\n height = (_d = (_c = size[0]) !== null && _c !== void 0 ? _c : size[1]) !== null && _d !== void 0 ? _d : 120;\n }\n }\n return [width, height];\n};","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport classNames from 'classnames';\nimport { Circle as RCCircle } from 'rc-progress';\nimport * as React from 'react';\nimport Tooltip from '../tooltip';\nimport { getPercentage, getSize, getStrokeColor } from './utils';\nvar CIRCLE_MIN_STROKE_WIDTH = 3;\nvar getMinPercent = function getMinPercent(width) {\n return CIRCLE_MIN_STROKE_WIDTH / width * 100;\n};\nvar Circle = function Circle(props) {\n var prefixCls = props.prefixCls,\n _props$trailColor = props.trailColor,\n trailColor = _props$trailColor === void 0 ? null : _props$trailColor,\n _props$strokeLinecap = props.strokeLinecap,\n strokeLinecap = _props$strokeLinecap === void 0 ? 'round' : _props$strokeLinecap,\n gapPosition = props.gapPosition,\n gapDegree = props.gapDegree,\n _props$width = props.width,\n originWidth = _props$width === void 0 ? 120 : _props$width,\n type = props.type,\n children = props.children,\n success = props.success,\n _props$size = props.size,\n size = _props$size === void 0 ? originWidth : _props$size;\n var _getSize = getSize(size, 'circle'),\n _getSize2 = _slicedToArray(_getSize, 2),\n width = _getSize2[0],\n height = _getSize2[1];\n var strokeWidth = props.strokeWidth;\n if (strokeWidth === undefined) {\n strokeWidth = Math.max(getMinPercent(width), 6);\n }\n var circleStyle = {\n width: width,\n height: height,\n fontSize: width * 0.15 + 6\n };\n var realGapDegree = React.useMemo(function () {\n // Support gapDeg = 0 when type = 'dashboard'\n if (gapDegree || gapDegree === 0) {\n return gapDegree;\n }\n if (type === 'dashboard') {\n return 75;\n }\n return undefined;\n }, [gapDegree, type]);\n var gapPos = gapPosition || type === 'dashboard' && 'bottom' || undefined;\n // using className to style stroke color\n var isGradient = Object.prototype.toString.call(props.strokeColor) === '[object Object]';\n var strokeColor = getStrokeColor({\n success: success,\n strokeColor: props.strokeColor\n });\n var wrapperClassName = classNames(\"\".concat(prefixCls, \"-inner\"), _defineProperty({}, \"\".concat(prefixCls, \"-circle-gradient\"), isGradient));\n var circleContent = /*#__PURE__*/React.createElement(RCCircle, {\n percent: getPercentage(props),\n strokeWidth: strokeWidth,\n trailWidth: strokeWidth,\n strokeColor: strokeColor,\n strokeLinecap: strokeLinecap,\n trailColor: trailColor,\n prefixCls: prefixCls,\n gapDegree: realGapDegree,\n gapPosition: gapPos\n });\n return /*#__PURE__*/React.createElement(\"div\", {\n className: wrapperClassName,\n style: circleStyle\n }, width <= 20 ? /*#__PURE__*/React.createElement(Tooltip, {\n title: children\n }, /*#__PURE__*/React.createElement(\"span\", null, circleContent)) : /*#__PURE__*/React.createElement(React.Fragment, null, circleContent, children));\n};\nexport default Circle;","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { presetPrimaryColors } from '@ant-design/colors';\nimport * as React from 'react';\nimport warning from '../_util/warning';\nimport { getSize, getSuccessPercent, validProgress } from './utils';\n/**\n * @example\n * {\n * \"0%\": \"#afc163\",\n * \"75%\": \"#009900\",\n * \"50%\": \"green\", // ====> '#afc163 0%, #66FF00 25%, #00CC00 50%, #009900 75%, #ffffff 100%'\n * \"25%\": \"#66FF00\",\n * \"100%\": \"#ffffff\"\n * }\n */\nexport var sortGradient = function sortGradient(gradients) {\n var tempArr = [];\n Object.keys(gradients).forEach(function (key) {\n var formattedKey = parseFloat(key.replace(/%/g, ''));\n if (!isNaN(formattedKey)) {\n tempArr.push({\n key: formattedKey,\n value: gradients[key]\n });\n }\n });\n tempArr = tempArr.sort(function (a, b) {\n return a.key - b.key;\n });\n return tempArr.map(function (_ref) {\n var key = _ref.key,\n value = _ref.value;\n return \"\".concat(value, \" \").concat(key, \"%\");\n }).join(', ');\n};\n/**\n * Then this man came to realize the truth: Besides six pence, there is the moon. Besides bread and\n * butter, there is the bug. And... Besides women, there is the code.\n *\n * @example\n * {\n * \"0%\": \"#afc163\",\n * \"25%\": \"#66FF00\",\n * \"50%\": \"#00CC00\", // ====> linear-gradient(to right, #afc163 0%, #66FF00 25%,\n * \"75%\": \"#009900\", // #00CC00 50%, #009900 75%, #ffffff 100%)\n * \"100%\": \"#ffffff\"\n * }\n */\nexport var handleGradient = function handleGradient(strokeColor, directionConfig) {\n var _strokeColor$from = strokeColor.from,\n from = _strokeColor$from === void 0 ? presetPrimaryColors.blue : _strokeColor$from,\n _strokeColor$to = strokeColor.to,\n to = _strokeColor$to === void 0 ? presetPrimaryColors.blue : _strokeColor$to,\n _strokeColor$directio = strokeColor.direction,\n direction = _strokeColor$directio === void 0 ? directionConfig === 'rtl' ? 'to left' : 'to right' : _strokeColor$directio,\n rest = __rest(strokeColor, [\"from\", \"to\", \"direction\"]);\n if (Object.keys(rest).length !== 0) {\n var sortedGradients = sortGradient(rest);\n return {\n backgroundImage: \"linear-gradient(\".concat(direction, \", \").concat(sortedGradients, \")\")\n };\n }\n return {\n backgroundImage: \"linear-gradient(\".concat(direction, \", \").concat(from, \", \").concat(to, \")\")\n };\n};\nvar Line = function Line(props) {\n var prefixCls = props.prefixCls,\n directionConfig = props.direction,\n percent = props.percent,\n size = props.size,\n strokeWidth = props.strokeWidth,\n strokeColor = props.strokeColor,\n _props$strokeLinecap = props.strokeLinecap,\n strokeLinecap = _props$strokeLinecap === void 0 ? 'round' : _props$strokeLinecap,\n children = props.children,\n _props$trailColor = props.trailColor,\n trailColor = _props$trailColor === void 0 ? null : _props$trailColor,\n success = props.success;\n var backgroundProps = strokeColor && typeof strokeColor !== 'string' ? handleGradient(strokeColor, directionConfig) : {\n backgroundColor: strokeColor\n };\n var borderRadius = strokeLinecap === 'square' || strokeLinecap === 'butt' ? 0 : undefined;\n var trailStyle = {\n backgroundColor: trailColor || undefined,\n borderRadius: borderRadius\n };\n var mergedSize = size !== null && size !== void 0 ? size : [-1, strokeWidth || (size === 'small' ? 6 : 8)];\n var _getSize = getSize(mergedSize, 'line', {\n strokeWidth: strokeWidth\n }),\n _getSize2 = _slicedToArray(_getSize, 2),\n width = _getSize2[0],\n height = _getSize2[1];\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? warning(!('strokeWidth' in props), 'Progress', '`strokeWidth` is deprecated. Please use `size` instead.') : void 0;\n }\n var percentStyle = Object.assign({\n width: \"\".concat(validProgress(percent), \"%\"),\n height: height,\n borderRadius: borderRadius\n }, backgroundProps);\n var successPercent = getSuccessPercent(props);\n var successPercentStyle = {\n width: \"\".concat(validProgress(successPercent), \"%\"),\n height: height,\n borderRadius: borderRadius,\n backgroundColor: success === null || success === void 0 ? void 0 : success.strokeColor\n };\n var outerStyle = {\n width: width < 0 ? '100%' : width,\n height: height\n };\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-outer\"),\n style: outerStyle\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-inner\"),\n style: trailStyle\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-bg\"),\n style: percentStyle\n }), successPercent !== undefined ? /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-success-bg\"),\n style: successPercentStyle\n }) : null)), children);\n};\nexport default Line;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { getSize } from './utils';\nvar Steps = function Steps(props) {\n var size = props.size,\n steps = props.steps,\n _props$percent = props.percent,\n percent = _props$percent === void 0 ? 0 : _props$percent,\n _props$strokeWidth = props.strokeWidth,\n strokeWidth = _props$strokeWidth === void 0 ? 8 : _props$strokeWidth,\n strokeColor = props.strokeColor,\n _props$trailColor = props.trailColor,\n trailColor = _props$trailColor === void 0 ? null : _props$trailColor,\n prefixCls = props.prefixCls,\n children = props.children;\n var current = Math.round(steps * (percent / 100));\n var stepWidth = size === 'small' ? 2 : 14;\n var mergedSize = size !== null && size !== void 0 ? size : [stepWidth, strokeWidth];\n var _getSize = getSize(mergedSize, 'step', {\n steps: steps,\n strokeWidth: strokeWidth\n }),\n _getSize2 = _slicedToArray(_getSize, 2),\n width = _getSize2[0],\n height = _getSize2[1];\n var unitWidth = width / steps;\n var styledSteps = new Array(steps);\n for (var i = 0; i < steps; i++) {\n var color = Array.isArray(strokeColor) ? strokeColor[i] : strokeColor;\n styledSteps[i] = /*#__PURE__*/React.createElement(\"div\", {\n key: i,\n className: classNames(\"\".concat(prefixCls, \"-steps-item\"), _defineProperty({}, \"\".concat(prefixCls, \"-steps-item-active\"), i <= current - 1)),\n style: {\n backgroundColor: i <= current - 1 ? color : trailColor,\n width: unitWidth,\n height: height\n }\n });\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-steps-outer\")\n }, styledSteps, children);\n};\nexport default Steps;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { Keyframes } from '@ant-design/cssinjs';\nimport { resetComponent } from '../../style';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nvar genAntProgressActive = function genAntProgressActive(isRtl) {\n var direction = isRtl ? '100%' : '-100%';\n return new Keyframes(\"antProgress\".concat(isRtl ? 'RTL' : 'LTR', \"Active\"), {\n '0%': {\n transform: \"translateX(\".concat(direction, \") scaleX(0)\"),\n opacity: 0.1\n },\n '20%': {\n transform: \"translateX(\".concat(direction, \") scaleX(0)\"),\n opacity: 0.5\n },\n to: {\n transform: 'translateX(0) scaleX(1)',\n opacity: 0\n }\n });\n};\nvar genBaseStyle = function genBaseStyle(token) {\n var _$concat4, _$concat5, _Object$assign;\n var progressCls = token.componentCls,\n iconPrefixCls = token.iconCls;\n return _defineProperty({}, progressCls, Object.assign(Object.assign({}, resetComponent(token)), (_Object$assign = {\n display: 'inline-block',\n '&-rtl': {\n direction: 'rtl'\n },\n '&-line': {\n position: 'relative',\n width: '100%',\n fontSize: token.fontSize,\n marginInlineEnd: token.marginXS,\n marginBottom: token.marginXS\n }\n }, _defineProperty(_Object$assign, \"\".concat(progressCls, \"-outer\"), {\n display: 'inline-block',\n width: '100%'\n }), _defineProperty(_Object$assign, \"&\".concat(progressCls, \"-show-info\"), _defineProperty({}, \"\".concat(progressCls, \"-outer\"), {\n marginInlineEnd: \"calc(-2em - \".concat(token.marginXS, \"px)\"),\n paddingInlineEnd: \"calc(2em + \".concat(token.paddingXS, \"px)\")\n })), _defineProperty(_Object$assign, \"\".concat(progressCls, \"-inner\"), {\n position: 'relative',\n display: 'inline-block',\n width: '100%',\n overflow: 'hidden',\n verticalAlign: 'middle',\n backgroundColor: token.progressRemainingColor,\n borderRadius: token.progressLineRadius\n }), _defineProperty(_Object$assign, \"\".concat(progressCls, \"-inner:not(\").concat(progressCls, \"-circle-gradient)\"), _defineProperty({}, \"\".concat(progressCls, \"-circle-path\"), {\n stroke: token.colorInfo\n })), _defineProperty(_Object$assign, \"\".concat(progressCls, \"-success-bg, \").concat(progressCls, \"-bg\"), {\n position: 'relative',\n backgroundColor: token.colorInfo,\n borderRadius: token.progressLineRadius,\n transition: \"all \".concat(token.motionDurationSlow, \" \").concat(token.motionEaseInOutCirc)\n }), _defineProperty(_Object$assign, \"\".concat(progressCls, \"-success-bg\"), {\n position: 'absolute',\n insetBlockStart: 0,\n insetInlineStart: 0,\n backgroundColor: token.colorSuccess\n }), _defineProperty(_Object$assign, \"\".concat(progressCls, \"-text\"), _defineProperty({\n display: 'inline-block',\n width: '2em',\n marginInlineStart: token.marginXS,\n color: token.progressInfoTextColor,\n lineHeight: 1,\n whiteSpace: 'nowrap',\n textAlign: 'start',\n verticalAlign: 'middle',\n wordBreak: 'normal'\n }, iconPrefixCls, {\n fontSize: token.fontSize\n })), _defineProperty(_Object$assign, \"&\".concat(progressCls, \"-status-active\"), _defineProperty({}, \"\".concat(progressCls, \"-bg::before\"), {\n position: 'absolute',\n inset: 0,\n backgroundColor: token.colorBgContainer,\n borderRadius: token.progressLineRadius,\n opacity: 0,\n animationName: genAntProgressActive(),\n animationDuration: token.progressActiveMotionDuration,\n animationTimingFunction: token.motionEaseOutQuint,\n animationIterationCount: 'infinite',\n content: '\"\"'\n })), _defineProperty(_Object$assign, \"&\".concat(progressCls, \"-rtl\").concat(progressCls, \"-status-active\"), _defineProperty({}, \"\".concat(progressCls, \"-bg::before\"), {\n animationName: genAntProgressActive(true)\n })), _defineProperty(_Object$assign, \"&\".concat(progressCls, \"-status-exception\"), (_$concat4 = {}, _defineProperty(_$concat4, \"\".concat(progressCls, \"-bg\"), {\n backgroundColor: token.colorError\n }), _defineProperty(_$concat4, \"\".concat(progressCls, \"-text\"), {\n color: token.colorError\n }), _$concat4)), _defineProperty(_Object$assign, \"&\".concat(progressCls, \"-status-exception \").concat(progressCls, \"-inner:not(\").concat(progressCls, \"-circle-gradient)\"), _defineProperty({}, \"\".concat(progressCls, \"-circle-path\"), {\n stroke: token.colorError\n })), _defineProperty(_Object$assign, \"&\".concat(progressCls, \"-status-success\"), (_$concat5 = {}, _defineProperty(_$concat5, \"\".concat(progressCls, \"-bg\"), {\n backgroundColor: token.colorSuccess\n }), _defineProperty(_$concat5, \"\".concat(progressCls, \"-text\"), {\n color: token.colorSuccess\n }), _$concat5)), _defineProperty(_Object$assign, \"&\".concat(progressCls, \"-status-success \").concat(progressCls, \"-inner:not(\").concat(progressCls, \"-circle-gradient)\"), _defineProperty({}, \"\".concat(progressCls, \"-circle-path\"), {\n stroke: token.colorSuccess\n })), _Object$assign)));\n};\nvar genCircleStyle = function genCircleStyle(token) {\n var _progressCls, _ref2;\n var progressCls = token.componentCls,\n iconPrefixCls = token.iconCls;\n return _ref2 = {}, _defineProperty(_ref2, progressCls, (_progressCls = {}, _defineProperty(_progressCls, \"\".concat(progressCls, \"-circle-trail\"), {\n stroke: token.progressRemainingColor\n }), _defineProperty(_progressCls, \"&\".concat(progressCls, \"-circle \").concat(progressCls, \"-inner\"), {\n position: 'relative',\n lineHeight: 1,\n backgroundColor: 'transparent'\n }), _defineProperty(_progressCls, \"&\".concat(progressCls, \"-circle \").concat(progressCls, \"-text\"), _defineProperty({\n position: 'absolute',\n insetBlockStart: '50%',\n insetInlineStart: 0,\n width: '100%',\n margin: 0,\n padding: 0,\n color: token.colorText,\n lineHeight: 1,\n whiteSpace: 'normal',\n textAlign: 'center',\n transform: 'translateY(-50%)'\n }, iconPrefixCls, {\n fontSize: \"\".concat(token.fontSize / token.fontSizeSM, \"em\")\n })), _defineProperty(_progressCls, \"\".concat(progressCls, \"-circle&-status-exception\"), _defineProperty({}, \"\".concat(progressCls, \"-text\"), {\n color: token.colorError\n })), _defineProperty(_progressCls, \"\".concat(progressCls, \"-circle&-status-success\"), _defineProperty({}, \"\".concat(progressCls, \"-text\"), {\n color: token.colorSuccess\n })), _progressCls)), _defineProperty(_ref2, \"\".concat(progressCls, \"-inline-circle\"), _defineProperty({\n lineHeight: 1\n }, \"\".concat(progressCls, \"-inner\"), {\n verticalAlign: 'bottom'\n })), _ref2;\n};\nvar genStepStyle = function genStepStyle(token) {\n var progressCls = token.componentCls;\n return _defineProperty({}, progressCls, _defineProperty({}, \"\".concat(progressCls, \"-steps\"), {\n display: 'inline-block',\n '&-outer': {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center'\n },\n '&-item': {\n flexShrink: 0,\n minWidth: token.progressStepMinWidth,\n marginInlineEnd: token.progressStepMarginInlineEnd,\n backgroundColor: token.progressRemainingColor,\n transition: \"all \".concat(token.motionDurationSlow),\n '&-active': {\n backgroundColor: token.colorInfo\n }\n }\n }));\n};\nvar genSmallLine = function genSmallLine(token) {\n var progressCls = token.componentCls,\n iconPrefixCls = token.iconCls;\n return _defineProperty({}, progressCls, _defineProperty({}, \"\".concat(progressCls, \"-small&-line, \").concat(progressCls, \"-small&-line \").concat(progressCls, \"-text \").concat(iconPrefixCls), {\n fontSize: token.fontSizeSM\n }));\n};\nexport default genComponentStyleHook('Progress', function (token) {\n var progressStepMarginInlineEnd = token.marginXXS / 2;\n var progressToken = mergeToken(token, {\n progressLineRadius: 100,\n progressInfoTextColor: token.colorText,\n progressDefaultColor: token.colorInfo,\n progressRemainingColor: token.colorFillSecondary,\n progressStepMarginInlineEnd: progressStepMarginInlineEnd,\n progressStepMinWidth: progressStepMarginInlineEnd,\n progressActiveMotionDuration: '2.4s'\n });\n return [genBaseStyle(progressToken), genCircleStyle(progressToken), genStepStyle(progressToken), genSmallLine(progressToken)];\n});","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport CheckCircleFilled from \"@ant-design/icons/es/icons/CheckCircleFilled\";\nimport CheckOutlined from \"@ant-design/icons/es/icons/CheckOutlined\";\nimport CloseCircleFilled from \"@ant-design/icons/es/icons/CloseCircleFilled\";\nimport CloseOutlined from \"@ant-design/icons/es/icons/CloseOutlined\";\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport warning from '../_util/warning';\nimport { ConfigContext } from '../config-provider';\nimport Circle from './Circle';\nimport Line from './Line';\nimport Steps from './Steps';\nimport useStyle from './style';\nimport { getSize, getSuccessPercent, validProgress } from './utils';\nexport var ProgressTypes = ['line', 'circle', 'dashboard'];\nvar ProgressStatuses = ['normal', 'exception', 'active', 'success'];\nvar Progress = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _classNames;\n var customizePrefixCls = props.prefixCls,\n className = props.className,\n rootClassName = props.rootClassName,\n steps = props.steps,\n strokeColor = props.strokeColor,\n _props$percent = props.percent,\n percent = _props$percent === void 0 ? 0 : _props$percent,\n _props$size = props.size,\n size = _props$size === void 0 ? 'default' : _props$size,\n _props$showInfo = props.showInfo,\n showInfo = _props$showInfo === void 0 ? true : _props$showInfo,\n _props$type = props.type,\n type = _props$type === void 0 ? 'line' : _props$type,\n status = props.status,\n format = props.format,\n style = props.style,\n restProps = __rest(props, [\"prefixCls\", \"className\", \"rootClassName\", \"steps\", \"strokeColor\", \"percent\", \"size\", \"showInfo\", \"type\", \"status\", \"format\", \"style\"]);\n var percentNumber = React.useMemo(function () {\n var _a, _b;\n var successPercent = getSuccessPercent(props);\n return parseInt(successPercent !== undefined ? (_a = successPercent !== null && successPercent !== void 0 ? successPercent : 0) === null || _a === void 0 ? void 0 : _a.toString() : (_b = percent !== null && percent !== void 0 ? percent : 0) === null || _b === void 0 ? void 0 : _b.toString(), 10);\n }, [percent, props.success, props.successPercent]);\n var progressStatus = React.useMemo(function () {\n if (!ProgressStatuses.includes(status) && percentNumber >= 100) {\n return 'success';\n }\n return status || 'normal';\n }, [status, percentNumber]);\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction,\n progressStyle = _React$useContext.progress;\n var prefixCls = getPrefixCls('progress', customizePrefixCls);\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n var progressInfo = React.useMemo(function () {\n if (!showInfo) {\n return null;\n }\n var successPercent = getSuccessPercent(props);\n var text;\n var textFormatter = format || function (number) {\n return \"\".concat(number, \"%\");\n };\n var isLineType = type === 'line';\n if (format || progressStatus !== 'exception' && progressStatus !== 'success') {\n text = textFormatter(validProgress(percent), validProgress(successPercent));\n } else if (progressStatus === 'exception') {\n text = isLineType ? /*#__PURE__*/React.createElement(CloseCircleFilled, null) : /*#__PURE__*/React.createElement(CloseOutlined, null);\n } else if (progressStatus === 'success') {\n text = isLineType ? /*#__PURE__*/React.createElement(CheckCircleFilled, null) : /*#__PURE__*/React.createElement(CheckOutlined, null);\n }\n return /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-text\"),\n title: typeof text === 'string' ? text : undefined\n }, text);\n }, [showInfo, percent, percentNumber, progressStatus, type, prefixCls, format]);\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? warning(!('successPercent' in props), 'Progress', '`successPercent` is deprecated. Please use `success.percent` instead.') : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!('width' in props), 'Progress', '`width` is deprecated. Please use `size` instead.') : void 0;\n }\n var strokeColorNotArray = Array.isArray(strokeColor) ? strokeColor[0] : strokeColor;\n var strokeColorNotGradient = typeof strokeColor === 'string' || Array.isArray(strokeColor) ? strokeColor : undefined;\n var progress;\n // Render progress shape\n if (type === 'line') {\n progress = steps ? /*#__PURE__*/React.createElement(Steps, Object.assign({}, props, {\n strokeColor: strokeColorNotGradient,\n prefixCls: prefixCls,\n steps: steps\n }), progressInfo) : /*#__PURE__*/React.createElement(Line, Object.assign({}, props, {\n strokeColor: strokeColorNotArray,\n prefixCls: prefixCls,\n direction: direction\n }), progressInfo);\n } else if (type === 'circle' || type === 'dashboard') {\n progress = /*#__PURE__*/React.createElement(Circle, Object.assign({}, props, {\n strokeColor: strokeColorNotArray,\n prefixCls: prefixCls,\n progressStatus: progressStatus\n }), progressInfo);\n }\n var classString = classNames(prefixCls, \"\".concat(prefixCls, \"-status-\").concat(progressStatus), \"\".concat(prefixCls, \"-\").concat(type === 'dashboard' && 'circle' || steps && 'steps' || type), (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-inline-circle\"), type === 'circle' && getSize(size, 'circle')[0] <= 20), _defineProperty(_classNames, \"\".concat(prefixCls, \"-show-info\"), showInfo), _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(size), typeof size === 'string'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _classNames), progressStyle === null || progressStyle === void 0 ? void 0 : progressStyle.className, className, rootClassName, hashId);\n return wrapSSR( /*#__PURE__*/React.createElement(\"div\", Object.assign({\n ref: ref,\n style: Object.assign(Object.assign({}, progressStyle === null || progressStyle === void 0 ? void 0 : progressStyle.style), style),\n className: classString,\n role: \"progressbar\",\n \"aria-valuenow\": percentNumber\n }, omit(restProps, ['trailColor', 'strokeWidth', 'width', 'gapDegree', 'gapPosition', 'strokeLinecap', 'success', 'successPercent'])), progress));\n});\nif (process.env.NODE_ENV !== 'production') {\n Progress.displayName = 'Progress';\n}\nexport default Progress;","'use client';\n\nimport Progress from './progress';\nexport default Progress;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport DeleteOutlined from \"@ant-design/icons/es/icons/DeleteOutlined\";\nimport DownloadOutlined from \"@ant-design/icons/es/icons/DownloadOutlined\";\nimport EyeOutlined from \"@ant-design/icons/es/icons/EyeOutlined\";\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport * as React from 'react';\nimport { ConfigContext } from '../../config-provider';\nimport Progress from '../../progress';\nimport Tooltip from '../../tooltip';\nvar ListItem = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var prefixCls = _ref.prefixCls,\n className = _ref.className,\n style = _ref.style,\n locale = _ref.locale,\n listType = _ref.listType,\n file = _ref.file,\n items = _ref.items,\n progressProps = _ref.progress,\n iconRender = _ref.iconRender,\n actionIconRender = _ref.actionIconRender,\n itemRender = _ref.itemRender,\n isImgUrl = _ref.isImgUrl,\n showPreviewIcon = _ref.showPreviewIcon,\n showRemoveIcon = _ref.showRemoveIcon,\n showDownloadIcon = _ref.showDownloadIcon,\n customPreviewIcon = _ref.previewIcon,\n customRemoveIcon = _ref.removeIcon,\n customDownloadIcon = _ref.downloadIcon,\n onPreview = _ref.onPreview,\n onDownload = _ref.onDownload,\n onClose = _ref.onClose;\n var _a, _b;\n // Status: which will ignore `removed` status\n var status = file.status;\n var _React$useState = React.useState(status),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n mergedStatus = _React$useState2[0],\n setMergedStatus = _React$useState2[1];\n React.useEffect(function () {\n if (status !== 'removed') {\n setMergedStatus(status);\n }\n }, [status]);\n // Delay to show the progress bar\n var _React$useState3 = React.useState(false),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n showProgress = _React$useState4[0],\n setShowProgress = _React$useState4[1];\n React.useEffect(function () {\n var timer = setTimeout(function () {\n setShowProgress(true);\n }, 300);\n return function () {\n clearTimeout(timer);\n };\n }, []);\n var iconNode = iconRender(file);\n var icon = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-icon\")\n }, iconNode);\n if (listType === 'picture' || listType === 'picture-card' || listType === 'picture-circle') {\n if (mergedStatus === 'uploading' || !file.thumbUrl && !file.url) {\n var uploadingClassName = classNames(\"\".concat(prefixCls, \"-list-item-thumbnail\"), _defineProperty({}, \"\".concat(prefixCls, \"-list-item-file\"), mergedStatus !== 'uploading'));\n icon = /*#__PURE__*/React.createElement(\"div\", {\n className: uploadingClassName\n }, iconNode);\n } else {\n var thumbnail = (isImgUrl === null || isImgUrl === void 0 ? void 0 : isImgUrl(file)) ? /*#__PURE__*/React.createElement(\"img\", {\n src: file.thumbUrl || file.url,\n alt: file.name,\n className: \"\".concat(prefixCls, \"-list-item-image\"),\n crossOrigin: file.crossOrigin\n }) : iconNode;\n var aClassName = classNames(\"\".concat(prefixCls, \"-list-item-thumbnail\"), _defineProperty({}, \"\".concat(prefixCls, \"-list-item-file\"), isImgUrl && !isImgUrl(file)));\n icon = /*#__PURE__*/React.createElement(\"a\", {\n className: aClassName,\n onClick: function onClick(e) {\n return onPreview(file, e);\n },\n href: file.url || file.thumbUrl,\n target: \"_blank\",\n rel: \"noopener noreferrer\"\n }, thumbnail);\n }\n }\n var listItemClassName = classNames(\"\".concat(prefixCls, \"-list-item\"), \"\".concat(prefixCls, \"-list-item-\").concat(mergedStatus));\n var linkProps = typeof file.linkProps === 'string' ? JSON.parse(file.linkProps) : file.linkProps;\n var removeIcon = showRemoveIcon ? actionIconRender((typeof customRemoveIcon === 'function' ? customRemoveIcon(file) : customRemoveIcon) || /*#__PURE__*/React.createElement(DeleteOutlined, null), function () {\n return onClose(file);\n }, prefixCls, locale.removeFile) : null;\n var downloadIcon = showDownloadIcon && mergedStatus === 'done' ? actionIconRender((typeof customDownloadIcon === 'function' ? customDownloadIcon(file) : customDownloadIcon) || /*#__PURE__*/React.createElement(DownloadOutlined, null), function () {\n return onDownload(file);\n }, prefixCls, locale.downloadFile) : null;\n var downloadOrDelete = listType !== 'picture-card' && listType !== 'picture-circle' && /*#__PURE__*/React.createElement(\"span\", {\n key: \"download-delete\",\n className: classNames(\"\".concat(prefixCls, \"-list-item-actions\"), {\n picture: listType === 'picture'\n })\n }, downloadIcon, removeIcon);\n var listItemNameClass = classNames(\"\".concat(prefixCls, \"-list-item-name\"));\n var fileName = file.url ? [/*#__PURE__*/React.createElement(\"a\", Object.assign({\n key: \"view\",\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n className: listItemNameClass,\n title: file.name\n }, linkProps, {\n href: file.url,\n onClick: function onClick(e) {\n return onPreview(file, e);\n }\n }), file.name), downloadOrDelete] : [/*#__PURE__*/React.createElement(\"span\", {\n key: \"view\",\n className: listItemNameClass,\n onClick: function onClick(e) {\n return onPreview(file, e);\n },\n title: file.name\n }, file.name), downloadOrDelete];\n var previewStyle = {\n pointerEvents: 'none',\n opacity: 0.5\n };\n var previewIcon = showPreviewIcon ? /*#__PURE__*/React.createElement(\"a\", {\n href: file.url || file.thumbUrl,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n style: file.url || file.thumbUrl ? undefined : previewStyle,\n onClick: function onClick(e) {\n return onPreview(file, e);\n },\n title: locale.previewFile\n }, typeof customPreviewIcon === 'function' ? customPreviewIcon(file) : customPreviewIcon || /*#__PURE__*/React.createElement(EyeOutlined, null)) : null;\n var pictureCardActions = (listType === 'picture-card' || listType === 'picture-circle') && mergedStatus !== 'uploading' && /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-list-item-actions\")\n }, previewIcon, mergedStatus === 'done' && downloadIcon, removeIcon);\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls;\n var rootPrefixCls = getPrefixCls();\n var dom = /*#__PURE__*/React.createElement(\"div\", {\n className: listItemClassName\n }, icon, fileName, pictureCardActions, showProgress && /*#__PURE__*/React.createElement(CSSMotion, {\n motionName: \"\".concat(rootPrefixCls, \"-fade\"),\n visible: mergedStatus === 'uploading',\n motionDeadline: 2000\n }, function (_ref2) {\n var motionClassName = _ref2.className;\n // show loading icon if upload progress listener is disabled\n var loadingProgress = 'percent' in file ? /*#__PURE__*/React.createElement(Progress, Object.assign({}, progressProps, {\n type: \"line\",\n percent: file.percent,\n \"aria-label\": file['aria-label'],\n \"aria-labelledby\": file['aria-labelledby']\n })) : null;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-list-item-progress\"), motionClassName)\n }, loadingProgress);\n }));\n var message = file.response && typeof file.response === 'string' ? file.response : ((_a = file.error) === null || _a === void 0 ? void 0 : _a.statusText) || ((_b = file.error) === null || _b === void 0 ? void 0 : _b.message) || locale.uploadError;\n var item = mergedStatus === 'error' ? /*#__PURE__*/React.createElement(Tooltip, {\n title: message,\n getPopupContainer: function getPopupContainer(node) {\n return node.parentNode;\n }\n }, dom) : dom;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-list-item-container\"), className),\n style: style,\n ref: ref\n }, itemRender ? itemRender(item, file, items, {\n download: onDownload.bind(null, file),\n preview: onPreview.bind(null, file),\n remove: onClose.bind(null, file)\n }) : item);\n});\nexport default ListItem;","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport FileTwoTone from \"@ant-design/icons/es/icons/FileTwoTone\";\nimport LoadingOutlined from \"@ant-design/icons/es/icons/LoadingOutlined\";\nimport PaperClipOutlined from \"@ant-design/icons/es/icons/PaperClipOutlined\";\nimport PictureTwoTone from \"@ant-design/icons/es/icons/PictureTwoTone\";\nimport classNames from 'classnames';\nimport CSSMotion, { CSSMotionList } from 'rc-motion';\nimport * as React from 'react';\nimport useForceUpdate from '../../_util/hooks/useForceUpdate';\nimport initCollapseMotion from '../../_util/motion';\nimport { cloneElement, isValidElement } from '../../_util/reactNode';\nimport Button from '../../button';\nimport { ConfigContext } from '../../config-provider';\nimport { isImageUrl, previewImage } from '../utils';\nimport ListItem from './ListItem';\nvar InternalUploadList = function InternalUploadList(props, ref) {\n var _props$listType = props.listType,\n listType = _props$listType === void 0 ? 'text' : _props$listType,\n _props$previewFile = props.previewFile,\n previewFile = _props$previewFile === void 0 ? previewImage : _props$previewFile,\n onPreview = props.onPreview,\n onDownload = props.onDownload,\n onRemove = props.onRemove,\n locale = props.locale,\n iconRender = props.iconRender,\n _props$isImageUrl = props.isImageUrl,\n isImgUrl = _props$isImageUrl === void 0 ? isImageUrl : _props$isImageUrl,\n customizePrefixCls = props.prefixCls,\n _props$items = props.items,\n items = _props$items === void 0 ? [] : _props$items,\n _props$showPreviewIco = props.showPreviewIcon,\n showPreviewIcon = _props$showPreviewIco === void 0 ? true : _props$showPreviewIco,\n _props$showRemoveIcon = props.showRemoveIcon,\n showRemoveIcon = _props$showRemoveIcon === void 0 ? true : _props$showRemoveIcon,\n _props$showDownloadIc = props.showDownloadIcon,\n showDownloadIcon = _props$showDownloadIc === void 0 ? false : _props$showDownloadIc,\n removeIcon = props.removeIcon,\n previewIcon = props.previewIcon,\n downloadIcon = props.downloadIcon,\n _props$progress = props.progress,\n progress = _props$progress === void 0 ? {\n size: [-1, 2],\n showInfo: false\n } : _props$progress,\n appendAction = props.appendAction,\n _props$appendActionVi = props.appendActionVisible,\n appendActionVisible = _props$appendActionVi === void 0 ? true : _props$appendActionVi,\n itemRender = props.itemRender,\n disabled = props.disabled;\n var forceUpdate = useForceUpdate();\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n motionAppear = _React$useState2[0],\n setMotionAppear = _React$useState2[1];\n // ============================= Effect =============================\n React.useEffect(function () {\n if (listType !== 'picture' && listType !== 'picture-card' && listType !== 'picture-circle') {\n return;\n }\n (items || []).forEach(function (file) {\n if (typeof document === 'undefined' || typeof window === 'undefined' || !window.FileReader || !window.File || !(file.originFileObj instanceof File || file.originFileObj instanceof Blob) || file.thumbUrl !== undefined) {\n return;\n }\n file.thumbUrl = '';\n if (previewFile) {\n previewFile(file.originFileObj).then(function (previewDataUrl) {\n // Need append '' to avoid dead loop\n file.thumbUrl = previewDataUrl || '';\n forceUpdate();\n });\n }\n });\n }, [listType, items, previewFile]);\n React.useEffect(function () {\n setMotionAppear(true);\n }, []);\n // ============================= Events =============================\n var onInternalPreview = function onInternalPreview(file, e) {\n if (!onPreview) {\n return;\n }\n e === null || e === void 0 ? void 0 : e.preventDefault();\n return onPreview(file);\n };\n var onInternalDownload = function onInternalDownload(file) {\n if (typeof onDownload === 'function') {\n onDownload(file);\n } else if (file.url) {\n window.open(file.url);\n }\n };\n var onInternalClose = function onInternalClose(file) {\n onRemove === null || onRemove === void 0 ? void 0 : onRemove(file);\n };\n var internalIconRender = function internalIconRender(file) {\n if (iconRender) {\n return iconRender(file, listType);\n }\n var isLoading = file.status === 'uploading';\n var fileIcon = isImgUrl && isImgUrl(file) ? /*#__PURE__*/React.createElement(PictureTwoTone, null) : /*#__PURE__*/React.createElement(FileTwoTone, null);\n var icon = isLoading ? /*#__PURE__*/React.createElement(LoadingOutlined, null) : /*#__PURE__*/React.createElement(PaperClipOutlined, null);\n if (listType === 'picture') {\n icon = isLoading ? /*#__PURE__*/React.createElement(LoadingOutlined, null) : fileIcon;\n } else if (listType === 'picture-card' || listType === 'picture-circle') {\n icon = isLoading ? locale.uploading : fileIcon;\n }\n return icon;\n };\n var actionIconRender = function actionIconRender(customIcon, callback, prefixCls, title) {\n var btnProps = {\n type: 'text',\n size: 'small',\n title: title,\n onClick: function onClick(e) {\n callback();\n if (isValidElement(customIcon) && customIcon.props.onClick) {\n customIcon.props.onClick(e);\n }\n },\n className: \"\".concat(prefixCls, \"-list-item-action\"),\n disabled: disabled\n };\n if (isValidElement(customIcon)) {\n var btnIcon = cloneElement(customIcon, Object.assign(Object.assign({}, customIcon.props), {\n onClick: function onClick() {}\n }));\n return /*#__PURE__*/React.createElement(Button, Object.assign({}, btnProps, {\n icon: btnIcon\n }));\n }\n return /*#__PURE__*/React.createElement(Button, Object.assign({}, btnProps), /*#__PURE__*/React.createElement(\"span\", null, customIcon));\n };\n // ============================== Ref ===============================\n // Test needs\n React.useImperativeHandle(ref, function () {\n return {\n handlePreview: onInternalPreview,\n handleDownload: onInternalDownload\n };\n });\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls;\n // ============================= Render =============================\n var prefixCls = getPrefixCls('upload', customizePrefixCls);\n var rootPrefixCls = getPrefixCls();\n var listClassNames = classNames(\"\".concat(prefixCls, \"-list\"), \"\".concat(prefixCls, \"-list-\").concat(listType));\n // >>> Motion config\n var motionKeyList = _toConsumableArray(items.map(function (file) {\n return {\n key: file.uid,\n file: file\n };\n }));\n var animationDirection = listType === 'picture-card' || listType === 'picture-circle' ? 'animate-inline' : 'animate';\n // const transitionName = list.length === 0 ? '' : `${prefixCls}-${animationDirection}`;\n var motionConfig = {\n motionDeadline: 2000,\n motionName: \"\".concat(prefixCls, \"-\").concat(animationDirection),\n keys: motionKeyList,\n motionAppear: motionAppear\n };\n var listItemMotion = React.useMemo(function () {\n var motion = Object.assign({}, initCollapseMotion(rootPrefixCls));\n delete motion.onAppearEnd;\n delete motion.onEnterEnd;\n delete motion.onLeaveEnd;\n return motion;\n }, [rootPrefixCls]);\n if (listType !== 'picture-card' && listType !== 'picture-circle') {\n motionConfig = Object.assign(Object.assign({}, listItemMotion), motionConfig);\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n className: listClassNames\n }, /*#__PURE__*/React.createElement(CSSMotionList, Object.assign({}, motionConfig, {\n component: false\n }), function (_ref) {\n var key = _ref.key,\n file = _ref.file,\n motionClassName = _ref.className,\n motionStyle = _ref.style;\n return /*#__PURE__*/React.createElement(ListItem, {\n key: key,\n locale: locale,\n prefixCls: prefixCls,\n className: motionClassName,\n style: motionStyle,\n file: file,\n items: items,\n progress: progress,\n listType: listType,\n isImgUrl: isImgUrl,\n showPreviewIcon: showPreviewIcon,\n showRemoveIcon: showRemoveIcon,\n showDownloadIcon: showDownloadIcon,\n removeIcon: removeIcon,\n previewIcon: previewIcon,\n downloadIcon: downloadIcon,\n iconRender: internalIconRender,\n actionIconRender: actionIconRender,\n itemRender: itemRender,\n onPreview: onInternalPreview,\n onDownload: onInternalDownload,\n onClose: onInternalClose\n });\n }), appendAction && /*#__PURE__*/React.createElement(CSSMotion, Object.assign({}, motionConfig, {\n visible: appendActionVisible,\n forceRender: true\n }), function (_ref2) {\n var motionClassName = _ref2.className,\n motionStyle = _ref2.style;\n return cloneElement(appendAction, function (oriProps) {\n return {\n className: classNames(oriProps.className, motionClassName),\n style: Object.assign(Object.assign(Object.assign({}, motionStyle), {\n // prevent the element has hover css pseudo-class that may cause animation to end prematurely.\n pointerEvents: motionClassName ? 'none' : undefined\n }), oriProps.style)\n };\n });\n }));\n};\nvar UploadList = /*#__PURE__*/React.forwardRef(InternalUploadList);\nif (process.env.NODE_ENV !== 'production') {\n UploadList.displayName = 'UploadList';\n}\nexport default UploadList;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nvar genDraggerStyle = function genDraggerStyle(token) {\n var _$concat2;\n var componentCls = token.componentCls,\n iconCls = token.iconCls;\n return _defineProperty({}, \"\".concat(componentCls, \"-wrapper\"), _defineProperty({}, \"\".concat(componentCls, \"-drag\"), (_$concat2 = {\n position: 'relative',\n width: '100%',\n height: '100%',\n textAlign: 'center',\n background: token.colorFillAlter,\n border: \"\".concat(token.lineWidth, \"px dashed \").concat(token.colorBorder),\n borderRadius: token.borderRadiusLG,\n cursor: 'pointer',\n transition: \"border-color \".concat(token.motionDurationSlow)\n }, _defineProperty(_$concat2, componentCls, {\n padding: \"\".concat(token.padding, \"px 0\")\n }), _defineProperty(_$concat2, \"\".concat(componentCls, \"-btn\"), {\n display: 'table',\n width: '100%',\n height: '100%',\n outline: 'none'\n }), _defineProperty(_$concat2, \"\".concat(componentCls, \"-drag-container\"), {\n display: 'table-cell',\n verticalAlign: 'middle'\n }), _defineProperty(_$concat2, \"&:not(\".concat(componentCls, \"-disabled):hover\"), {\n borderColor: token.colorPrimaryHover\n }), _defineProperty(_$concat2, \"p\".concat(componentCls, \"-drag-icon\"), _defineProperty({\n marginBottom: token.margin\n }, iconCls, {\n color: token.colorPrimary,\n fontSize: token.uploadThumbnailSize\n })), _defineProperty(_$concat2, \"p\".concat(componentCls, \"-text\"), {\n margin: \"0 0 \".concat(token.marginXXS, \"px\"),\n color: token.colorTextHeading,\n fontSize: token.fontSizeLG\n }), _defineProperty(_$concat2, \"p\".concat(componentCls, \"-hint\"), {\n color: token.colorTextDescription,\n fontSize: token.fontSize\n }), _defineProperty(_$concat2, \"&\".concat(componentCls, \"-disabled\"), _defineProperty({\n cursor: 'not-allowed'\n }, \"p\".concat(componentCls, \"-drag-icon \").concat(iconCls, \",\\n p\").concat(componentCls, \"-text,\\n p\").concat(componentCls, \"-hint\\n \"), {\n color: token.colorTextDisabled\n })), _$concat2)));\n};\nexport default genDraggerStyle;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { clearFix, textEllipsis } from '../../style';\nvar genListStyle = function genListStyle(token) {\n var _actionsCls, _itemCls, _actionsCls2, _$concat, _Object$assign;\n var componentCls = token.componentCls,\n antCls = token.antCls,\n iconCls = token.iconCls,\n fontSize = token.fontSize,\n lineHeight = token.lineHeight;\n var itemCls = \"\".concat(componentCls, \"-list-item\");\n var actionsCls = \"\".concat(itemCls, \"-actions\");\n var actionCls = \"\".concat(itemCls, \"-action\");\n var listItemHeightSM = Math.round(fontSize * lineHeight);\n return _defineProperty({}, \"\".concat(componentCls, \"-wrapper\"), _defineProperty({}, \"\".concat(componentCls, \"-list\"), Object.assign(Object.assign({}, clearFix()), (_Object$assign = {\n lineHeight: token.lineHeight\n }, _defineProperty(_Object$assign, itemCls, (_itemCls = {\n position: 'relative',\n height: token.lineHeight * fontSize,\n marginTop: token.marginXS,\n fontSize: fontSize,\n display: 'flex',\n alignItems: 'center',\n transition: \"background-color \".concat(token.motionDurationSlow),\n '&:hover': {\n backgroundColor: token.controlItemBgHover\n }\n }, _defineProperty(_itemCls, \"\".concat(itemCls, \"-name\"), Object.assign(Object.assign({}, textEllipsis), {\n padding: \"0 \".concat(token.paddingXS, \"px\"),\n lineHeight: lineHeight,\n flex: 'auto',\n transition: \"all \".concat(token.motionDurationSlow)\n })), _defineProperty(_itemCls, actionsCls, (_actionsCls = {}, _defineProperty(_actionsCls, actionCls, {\n opacity: 0\n }), _defineProperty(_actionsCls, \"\".concat(actionCls).concat(antCls, \"-btn-sm\"), {\n height: listItemHeightSM,\n border: 0,\n lineHeight: 1,\n // FIXME: should not override small button\n '> span': {\n transform: 'scale(1)'\n }\n }), _defineProperty(_actionsCls, \"\\n \".concat(actionCls, \":focus,\\n &.picture \").concat(actionCls, \"\\n \"), {\n opacity: 1\n }), _defineProperty(_actionsCls, iconCls, {\n color: token.actionsColor,\n transition: \"all \".concat(token.motionDurationSlow)\n }), _defineProperty(_actionsCls, \"&:hover \".concat(iconCls), {\n color: token.colorText\n }), _actionsCls)), _defineProperty(_itemCls, \"\".concat(componentCls, \"-icon \").concat(iconCls), {\n color: token.colorTextDescription,\n fontSize: fontSize\n }), _defineProperty(_itemCls, \"\".concat(itemCls, \"-progress\"), {\n position: 'absolute',\n bottom: -token.uploadProgressOffset,\n width: '100%',\n paddingInlineStart: fontSize + token.paddingXS,\n fontSize: fontSize,\n lineHeight: 0,\n pointerEvents: 'none',\n '> div': {\n margin: 0\n }\n }), _itemCls)), _defineProperty(_Object$assign, \"\".concat(itemCls, \":hover \").concat(actionCls), {\n opacity: 1,\n color: token.colorText\n }), _defineProperty(_Object$assign, \"\".concat(itemCls, \"-error\"), (_$concat = {\n color: token.colorError\n }, _defineProperty(_$concat, \"\".concat(itemCls, \"-name, \").concat(componentCls, \"-icon \").concat(iconCls), {\n color: token.colorError\n }), _defineProperty(_$concat, actionsCls, (_actionsCls2 = {}, _defineProperty(_actionsCls2, \"\".concat(iconCls, \", \").concat(iconCls, \":hover\"), {\n color: token.colorError\n }), _defineProperty(_actionsCls2, actionCls, {\n opacity: 1\n }), _actionsCls2)), _$concat)), _defineProperty(_Object$assign, \"\".concat(componentCls, \"-list-item-container\"), {\n transition: \"opacity \".concat(token.motionDurationSlow, \", height \").concat(token.motionDurationSlow),\n // For smooth removing animation\n '&::before': {\n display: 'table',\n width: 0,\n height: 0,\n content: '\"\"'\n }\n }), _Object$assign))));\n};\nexport default genListStyle;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { Keyframes } from '@ant-design/cssinjs';\nimport { initMotion } from './motion';\nexport var fadeIn = new Keyframes('antFadeIn', {\n '0%': {\n opacity: 0\n },\n '100%': {\n opacity: 1\n }\n});\nexport var fadeOut = new Keyframes('antFadeOut', {\n '0%': {\n opacity: 1\n },\n '100%': {\n opacity: 0\n }\n});\nexport var initFadeMotion = function initFadeMotion(token) {\n var _ref;\n var sameLevel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var antCls = token.antCls;\n var motionCls = \"\".concat(antCls, \"-fade\");\n var sameLevelPrefix = sameLevel ? '&' : '';\n return [initMotion(motionCls, fadeIn, fadeOut, token.motionDurationMid, sameLevel), (_ref = {}, _defineProperty(_ref, \"\\n \".concat(sameLevelPrefix).concat(motionCls, \"-enter,\\n \").concat(sameLevelPrefix).concat(motionCls, \"-appear\\n \"), {\n opacity: 0,\n animationTimingFunction: 'linear'\n }), _defineProperty(_ref, \"\".concat(sameLevelPrefix).concat(motionCls, \"-leave\"), {\n animationTimingFunction: 'linear'\n }), _ref)];\n};","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { Keyframes } from '@ant-design/cssinjs';\nimport { initFadeMotion } from '../../style/motion';\nvar uploadAnimateInlineIn = new Keyframes('uploadAnimateInlineIn', {\n from: {\n width: 0,\n height: 0,\n margin: 0,\n padding: 0,\n opacity: 0\n }\n});\nvar uploadAnimateInlineOut = new Keyframes('uploadAnimateInlineOut', {\n to: {\n width: 0,\n height: 0,\n margin: 0,\n padding: 0,\n opacity: 0\n }\n});\n// =========================== Motion ===========================\nvar genMotionStyle = function genMotionStyle(token) {\n var _$concat;\n var componentCls = token.componentCls;\n var inlineCls = \"\".concat(componentCls, \"-animate-inline\");\n return [_defineProperty({}, \"\".concat(componentCls, \"-wrapper\"), (_$concat = {}, _defineProperty(_$concat, \"\".concat(inlineCls, \"-appear, \").concat(inlineCls, \"-enter, \").concat(inlineCls, \"-leave\"), {\n animationDuration: token.motionDurationSlow,\n animationTimingFunction: token.motionEaseInOutCirc,\n animationFillMode: 'forwards'\n }), _defineProperty(_$concat, \"\".concat(inlineCls, \"-appear, \").concat(inlineCls, \"-enter\"), {\n animationName: uploadAnimateInlineIn\n }), _defineProperty(_$concat, \"\".concat(inlineCls, \"-leave\"), {\n animationName: uploadAnimateInlineOut\n }), _$concat)), _defineProperty({}, \"\".concat(componentCls, \"-wrapper\"), initFadeMotion(token)), uploadAnimateInlineIn, uploadAnimateInlineOut];\n};\nexport default genMotionStyle;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { blue } from '@ant-design/colors';\nimport { TinyColor } from '@ctrl/tinycolor';\nimport { clearFix, textEllipsis } from '../../style';\nvar genPictureStyle = function genPictureStyle(token) {\n var _Object$assign, _itemCls, _$concat$concat, _$concat$con, _$concat3;\n var componentCls = token.componentCls,\n iconCls = token.iconCls,\n uploadThumbnailSize = token.uploadThumbnailSize,\n uploadProgressOffset = token.uploadProgressOffset;\n var listCls = \"\".concat(componentCls, \"-list\");\n var itemCls = \"\".concat(listCls, \"-item\");\n return _defineProperty({}, \"\".concat(componentCls, \"-wrapper\"), (_$concat3 = {}, _defineProperty(_$concat3, \"\\n \".concat(listCls).concat(listCls, \"-picture,\\n \").concat(listCls).concat(listCls, \"-picture-card,\\n \").concat(listCls).concat(listCls, \"-picture-circle\\n \"), (_$concat$con = {}, _defineProperty(_$concat$con, itemCls, (_itemCls = {\n position: 'relative',\n height: uploadThumbnailSize + token.lineWidth * 2 + token.paddingXS * 2,\n padding: token.paddingXS,\n border: \"\".concat(token.lineWidth, \"px \").concat(token.lineType, \" \").concat(token.colorBorder),\n borderRadius: token.borderRadiusLG,\n '&:hover': {\n background: 'transparent'\n }\n }, _defineProperty(_itemCls, \"\".concat(itemCls, \"-thumbnail\"), Object.assign(Object.assign({}, textEllipsis), (_Object$assign = {\n width: uploadThumbnailSize,\n height: uploadThumbnailSize,\n lineHeight: \"\".concat(uploadThumbnailSize + token.paddingSM, \"px\"),\n textAlign: 'center',\n flex: 'none'\n }, _defineProperty(_Object$assign, iconCls, {\n fontSize: token.fontSizeHeading2,\n color: token.colorPrimary\n }), _defineProperty(_Object$assign, \"img\", {\n display: 'block',\n width: '100%',\n height: '100%',\n overflow: 'hidden'\n }), _Object$assign))), _defineProperty(_itemCls, \"\".concat(itemCls, \"-progress\"), {\n bottom: uploadProgressOffset,\n width: \"calc(100% - \".concat(token.paddingSM * 2, \"px)\"),\n marginTop: 0,\n paddingInlineStart: uploadThumbnailSize + token.paddingXS\n }), _itemCls)), _defineProperty(_$concat$con, \"\".concat(itemCls, \"-error\"), _defineProperty({\n borderColor: token.colorError\n }, \"\".concat(itemCls, \"-thumbnail \").concat(iconCls), (_$concat$concat = {}, _defineProperty(_$concat$concat, \"svg path[fill='\".concat(blue[0], \"']\"), {\n fill: token.colorErrorBg\n }), _defineProperty(_$concat$concat, \"svg path[fill='\".concat(blue.primary, \"']\"), {\n fill: token.colorError\n }), _$concat$concat))), _defineProperty(_$concat$con, \"\".concat(itemCls, \"-uploading\"), _defineProperty({\n borderStyle: 'dashed'\n }, \"\".concat(itemCls, \"-name\"), {\n marginBottom: uploadProgressOffset\n })), _$concat$con)), _defineProperty(_$concat3, \"\".concat(listCls).concat(listCls, \"-picture-circle \").concat(itemCls), _defineProperty({}, \"&, &::before, \".concat(itemCls, \"-thumbnail\"), {\n borderRadius: '50%'\n })), _$concat3));\n};\nvar genPictureCardStyle = function genPictureCardStyle(token) {\n var _$concat$concat2, _$concat6, _$concat$concat$conca2, _Object$assign2, _ref2;\n var componentCls = token.componentCls,\n iconCls = token.iconCls,\n fontSizeLG = token.fontSizeLG,\n colorTextLightSolid = token.colorTextLightSolid;\n var listCls = \"\".concat(componentCls, \"-list\");\n var itemCls = \"\".concat(listCls, \"-item\");\n var uploadPictureCardSize = token.uploadPicCardSize;\n return _ref2 = {}, _defineProperty(_ref2, \"\\n \".concat(componentCls, \"-wrapper\").concat(componentCls, \"-picture-card-wrapper,\\n \").concat(componentCls, \"-wrapper\").concat(componentCls, \"-picture-circle-wrapper\\n \"), Object.assign(Object.assign({}, clearFix()), (_Object$assign2 = {\n display: 'inline-block',\n width: '100%'\n }, _defineProperty(_Object$assign2, \"\".concat(componentCls).concat(componentCls, \"-select\"), (_$concat$concat2 = {\n width: uploadPictureCardSize,\n height: uploadPictureCardSize,\n marginInlineEnd: token.marginXS,\n marginBottom: token.marginXS,\n textAlign: 'center',\n verticalAlign: 'top',\n backgroundColor: token.colorFillAlter,\n border: \"\".concat(token.lineWidth, \"px dashed \").concat(token.colorBorder),\n borderRadius: token.borderRadiusLG,\n cursor: 'pointer',\n transition: \"border-color \".concat(token.motionDurationSlow)\n }, _defineProperty(_$concat$concat2, \"> \".concat(componentCls), {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n height: '100%',\n textAlign: 'center'\n }), _defineProperty(_$concat$concat2, \"&:not(\".concat(componentCls, \"-disabled):hover\"), {\n borderColor: token.colorPrimary\n }), _$concat$concat2)), _defineProperty(_Object$assign2, \"\".concat(listCls).concat(listCls, \"-picture-card, \").concat(listCls).concat(listCls, \"-picture-circle\"), (_$concat$concat$conca2 = {}, _defineProperty(_$concat$concat$conca2, \"\".concat(listCls, \"-item-container\"), {\n display: 'inline-block',\n width: uploadPictureCardSize,\n height: uploadPictureCardSize,\n marginBlock: \"0 \".concat(token.marginXS, \"px\"),\n marginInline: \"0 \".concat(token.marginXS, \"px\"),\n verticalAlign: 'top'\n }), _defineProperty(_$concat$concat$conca2, '&::after', {\n display: 'none'\n }), _defineProperty(_$concat$concat$conca2, itemCls, {\n height: '100%',\n margin: 0,\n '&::before': {\n position: 'absolute',\n zIndex: 1,\n width: \"calc(100% - \".concat(token.paddingXS * 2, \"px)\"),\n height: \"calc(100% - \".concat(token.paddingXS * 2, \"px)\"),\n backgroundColor: token.colorBgMask,\n opacity: 0,\n transition: \"all \".concat(token.motionDurationSlow),\n content: '\" \"'\n }\n }), _defineProperty(_$concat$concat$conca2, \"\".concat(itemCls, \":hover\"), _defineProperty({}, \"&::before, \".concat(itemCls, \"-actions\"), {\n opacity: 1\n })), _defineProperty(_$concat$concat$conca2, \"\".concat(itemCls, \"-actions\"), _defineProperty({\n position: 'absolute',\n insetInlineStart: 0,\n zIndex: 10,\n width: '100%',\n whiteSpace: 'nowrap',\n textAlign: 'center',\n opacity: 0,\n transition: \"all \".concat(token.motionDurationSlow)\n }, \"\".concat(iconCls, \"-eye, \").concat(iconCls, \"-download, \").concat(iconCls, \"-delete\"), {\n zIndex: 10,\n width: fontSizeLG,\n margin: \"0 \".concat(token.marginXXS, \"px\"),\n fontSize: fontSizeLG,\n cursor: 'pointer',\n transition: \"all \".concat(token.motionDurationSlow),\n svg: {\n verticalAlign: 'baseline'\n }\n })), _defineProperty(_$concat$concat$conca2, \"\".concat(itemCls, \"-actions, \").concat(itemCls, \"-actions:hover\"), _defineProperty({}, \"\".concat(iconCls, \"-eye, \").concat(iconCls, \"-download, \").concat(iconCls, \"-delete\"), {\n color: new TinyColor(colorTextLightSolid).setAlpha(0.65).toRgbString(),\n '&:hover': {\n color: colorTextLightSolid\n }\n })), _defineProperty(_$concat$concat$conca2, \"\".concat(itemCls, \"-thumbnail, \").concat(itemCls, \"-thumbnail img\"), {\n position: 'static',\n display: 'block',\n width: '100%',\n height: '100%',\n objectFit: 'contain'\n }), _defineProperty(_$concat$concat$conca2, \"\".concat(itemCls, \"-name\"), {\n display: 'none',\n textAlign: 'center'\n }), _defineProperty(_$concat$concat$conca2, \"\".concat(itemCls, \"-file + \").concat(itemCls, \"-name\"), {\n position: 'absolute',\n bottom: token.margin,\n display: 'block',\n width: \"calc(100% - \".concat(token.paddingXS * 2, \"px)\")\n }), _defineProperty(_$concat$concat$conca2, \"\".concat(itemCls, \"-uploading\"), (_$concat6 = {}, _defineProperty(_$concat6, \"&\".concat(itemCls), {\n backgroundColor: token.colorFillAlter\n }), _defineProperty(_$concat6, \"&::before, \".concat(iconCls, \"-eye, \").concat(iconCls, \"-download, \").concat(iconCls, \"-delete\"), {\n display: 'none'\n }), _$concat6)), _defineProperty(_$concat$concat$conca2, \"\".concat(itemCls, \"-progress\"), {\n bottom: token.marginXL,\n width: \"calc(100% - \".concat(token.paddingXS * 2, \"px)\"),\n paddingInlineStart: 0\n }), _$concat$concat$conca2)), _Object$assign2))), _defineProperty(_ref2, \"\".concat(componentCls, \"-wrapper\").concat(componentCls, \"-picture-circle-wrapper\"), _defineProperty({}, \"\".concat(componentCls).concat(componentCls, \"-select\"), {\n borderRadius: '50%'\n })), _ref2;\n};\nexport { genPictureStyle, genPictureCardStyle };","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\n// =========================== Motion ===========================\nvar genRtlStyle = function genRtlStyle(token) {\n var componentCls = token.componentCls;\n return _defineProperty({}, \"\".concat(componentCls, \"-rtl\"), {\n direction: 'rtl'\n });\n};\nexport default genRtlStyle;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { resetComponent } from '../../style';\nimport { genCollapseMotion } from '../../style/motion';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport genDraggerStyle from './dragger';\nimport genListStyle from './list';\nimport genMotionStyle from './motion';\nimport { genPictureCardStyle, genPictureStyle } from './picture';\nimport genRtlStyle from './rtl';\nvar genBaseStyle = function genBaseStyle(token) {\n var _Object$assign;\n var componentCls = token.componentCls,\n colorTextDisabled = token.colorTextDisabled;\n return _defineProperty({}, \"\".concat(componentCls, \"-wrapper\"), Object.assign(Object.assign({}, resetComponent(token)), (_Object$assign = {}, _defineProperty(_Object$assign, componentCls, {\n outline: 0,\n \"input[type='file']\": {\n cursor: 'pointer'\n }\n }), _defineProperty(_Object$assign, \"\".concat(componentCls, \"-select\"), {\n display: 'inline-block'\n }), _defineProperty(_Object$assign, \"\".concat(componentCls, \"-disabled\"), {\n color: colorTextDisabled,\n cursor: 'not-allowed'\n }), _Object$assign)));\n};\n// ============================== Export ==============================\nexport default genComponentStyleHook('Upload', function (token) {\n var fontSizeHeading3 = token.fontSizeHeading3,\n fontSize = token.fontSize,\n lineHeight = token.lineHeight,\n lineWidth = token.lineWidth,\n controlHeightLG = token.controlHeightLG;\n var listItemHeightSM = Math.round(fontSize * lineHeight);\n var uploadToken = mergeToken(token, {\n uploadThumbnailSize: fontSizeHeading3 * 2,\n uploadProgressOffset: listItemHeightSM / 2 + lineWidth,\n uploadPicCardSize: controlHeightLG * 2.55\n });\n return [genBaseStyle(uploadToken), genDraggerStyle(uploadToken), genPictureStyle(uploadToken), genPictureCardStyle(uploadToken), genListStyle(uploadToken), genMotionStyle(uploadToken), genRtlStyle(uploadToken), genCollapseMotion(uploadToken)];\n}, function (token) {\n return {\n actionsColor: token.colorTextDescription\n };\n});","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport _regeneratorRuntime from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/regenerator/index.js\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport classNames from 'classnames';\nimport RcUpload from 'rc-upload';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport * as React from 'react';\nimport { flushSync } from 'react-dom';\nimport warning from '../_util/warning';\nimport { ConfigContext } from '../config-provider';\nimport DisabledContext from '../config-provider/DisabledContext';\nimport { useLocale } from '../locale';\nimport defaultLocale from '../locale/en_US';\nimport UploadList from './UploadList';\nimport useStyle from './style';\nimport { file2Obj, getFileItem, removeFileItem, updateFileList } from './utils';\nexport var LIST_IGNORE = \"__LIST_IGNORE_\".concat(Date.now(), \"__\");\nvar InternalUpload = function InternalUpload(props, ref) {\n var _classNames;\n var fileList = props.fileList,\n defaultFileList = props.defaultFileList,\n onRemove = props.onRemove,\n _props$showUploadList = props.showUploadList,\n showUploadList = _props$showUploadList === void 0 ? true : _props$showUploadList,\n _props$listType = props.listType,\n listType = _props$listType === void 0 ? 'text' : _props$listType,\n onPreview = props.onPreview,\n onDownload = props.onDownload,\n onChange = props.onChange,\n onDrop = props.onDrop,\n previewFile = props.previewFile,\n customDisabled = props.disabled,\n propLocale = props.locale,\n iconRender = props.iconRender,\n isImageUrl = props.isImageUrl,\n progress = props.progress,\n customizePrefixCls = props.prefixCls,\n className = props.className,\n _props$type = props.type,\n type = _props$type === void 0 ? 'select' : _props$type,\n children = props.children,\n style = props.style,\n itemRender = props.itemRender,\n maxCount = props.maxCount,\n _props$data = props.data,\n data = _props$data === void 0 ? {} : _props$data,\n _props$multiple = props.multiple,\n multiple = _props$multiple === void 0 ? false : _props$multiple,\n _props$action = props.action,\n action = _props$action === void 0 ? '' : _props$action,\n _props$accept = props.accept,\n accept = _props$accept === void 0 ? '' : _props$accept,\n _props$supportServerR = props.supportServerRender,\n supportServerRender = _props$supportServerR === void 0 ? true : _props$supportServerR;\n // ===================== Disabled =====================\n var disabled = React.useContext(DisabledContext);\n var mergedDisabled = customDisabled !== null && customDisabled !== void 0 ? customDisabled : disabled;\n var _useMergedState = useMergedState(defaultFileList || [], {\n value: fileList,\n postState: function postState(list) {\n return list !== null && list !== void 0 ? list : [];\n }\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n mergedFileList = _useMergedState2[0],\n setMergedFileList = _useMergedState2[1];\n var _React$useState = React.useState('drop'),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n dragState = _React$useState2[0],\n setDragState = _React$useState2[1];\n var upload = React.useRef(null);\n process.env.NODE_ENV !== \"production\" ? warning('fileList' in props || !('value' in props), 'Upload', '`value` is not a valid prop, do you mean `fileList`?') : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!('transformFile' in props), 'Upload', '`transformFile` is deprecated. Please use `beforeUpload` directly.') : void 0;\n // Control mode will auto fill file uid if not provided\n React.useMemo(function () {\n var timestamp = Date.now();\n (fileList || []).forEach(function (file, index) {\n if (!file.uid && !Object.isFrozen(file)) {\n file.uid = \"__AUTO__\".concat(timestamp, \"_\").concat(index, \"__\");\n }\n });\n }, [fileList]);\n var onInternalChange = function onInternalChange(file, changedFileList, event) {\n var cloneList = _toConsumableArray(changedFileList);\n var exceedMaxCount = false;\n // Cut to match count\n if (maxCount === 1) {\n cloneList = cloneList.slice(-1);\n } else if (maxCount) {\n exceedMaxCount = cloneList.length > maxCount;\n cloneList = cloneList.slice(0, maxCount);\n }\n // Prevent React18 auto batch since input[upload] trigger process at same time\n // which makes fileList closure problem\n flushSync(function () {\n setMergedFileList(cloneList);\n });\n var changeInfo = {\n file: file,\n fileList: cloneList\n };\n if (event) {\n changeInfo.event = event;\n }\n if (!exceedMaxCount ||\n // We should ignore event if current file is exceed `maxCount`\n cloneList.some(function (f) {\n return f.uid === file.uid;\n })) {\n flushSync(function () {\n onChange === null || onChange === void 0 ? void 0 : onChange(changeInfo);\n });\n }\n };\n var mergedBeforeUpload = function mergedBeforeUpload(file, fileListArgs) {\n return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {\n var beforeUpload, transformFile, parsedFile, result;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n beforeUpload = props.beforeUpload, transformFile = props.transformFile;\n parsedFile = file;\n if (!beforeUpload) {\n _context.next = 13;\n break;\n }\n _context.next = 5;\n return beforeUpload(file, fileListArgs);\n case 5:\n result = _context.sent;\n if (!(result === false)) {\n _context.next = 8;\n break;\n }\n return _context.abrupt(\"return\", false);\n case 8:\n // Hack for LIST_IGNORE, we add additional info to remove from the list\n delete file[LIST_IGNORE];\n if (!(result === LIST_IGNORE)) {\n _context.next = 12;\n break;\n }\n Object.defineProperty(file, LIST_IGNORE, {\n value: true,\n configurable: true\n });\n return _context.abrupt(\"return\", false);\n case 12:\n if (typeof result === 'object' && result) {\n parsedFile = result;\n }\n case 13:\n if (!transformFile) {\n _context.next = 17;\n break;\n }\n _context.next = 16;\n return transformFile(parsedFile);\n case 16:\n parsedFile = _context.sent;\n case 17:\n return _context.abrupt(\"return\", parsedFile);\n case 18:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n };\n var onBatchStart = function onBatchStart(batchFileInfoList) {\n // Skip file which marked as `LIST_IGNORE`, these file will not add to file list\n var filteredFileInfoList = batchFileInfoList.filter(function (info) {\n return !info.file[LIST_IGNORE];\n });\n // Nothing to do since no file need upload\n if (!filteredFileInfoList.length) {\n return;\n }\n var objectFileList = filteredFileInfoList.map(function (info) {\n return file2Obj(info.file);\n });\n // Concat new files with prev files\n var newFileList = _toConsumableArray(mergedFileList);\n objectFileList.forEach(function (fileObj) {\n // Replace file if exist\n newFileList = updateFileList(fileObj, newFileList);\n });\n objectFileList.forEach(function (fileObj, index) {\n // Repeat trigger `onChange` event for compatible\n var triggerFileObj = fileObj;\n if (!filteredFileInfoList[index].parsedFile) {\n // `beforeUpload` return false\n var originFileObj = fileObj.originFileObj;\n var clone;\n try {\n clone = new File([originFileObj], originFileObj.name, {\n type: originFileObj.type\n });\n } catch (e) {\n clone = new Blob([originFileObj], {\n type: originFileObj.type\n });\n clone.name = originFileObj.name;\n clone.lastModifiedDate = new Date();\n clone.lastModified = new Date().getTime();\n }\n clone.uid = fileObj.uid;\n triggerFileObj = clone;\n } else {\n // Inject `uploading` status\n fileObj.status = 'uploading';\n }\n onInternalChange(triggerFileObj, newFileList);\n });\n };\n var onSuccess = function onSuccess(response, file, xhr) {\n try {\n if (typeof response === 'string') {\n response = JSON.parse(response);\n }\n } catch (e) {\n /* do nothing */\n }\n // removed\n if (!getFileItem(file, mergedFileList)) {\n return;\n }\n var targetItem = file2Obj(file);\n targetItem.status = 'done';\n targetItem.percent = 100;\n targetItem.response = response;\n targetItem.xhr = xhr;\n var nextFileList = updateFileList(targetItem, mergedFileList);\n onInternalChange(targetItem, nextFileList);\n };\n var onProgress = function onProgress(e, file) {\n // removed\n if (!getFileItem(file, mergedFileList)) {\n return;\n }\n var targetItem = file2Obj(file);\n targetItem.status = 'uploading';\n targetItem.percent = e.percent;\n var nextFileList = updateFileList(targetItem, mergedFileList);\n onInternalChange(targetItem, nextFileList, e);\n };\n var onError = function onError(error, response, file) {\n // removed\n if (!getFileItem(file, mergedFileList)) {\n return;\n }\n var targetItem = file2Obj(file);\n targetItem.error = error;\n targetItem.response = response;\n targetItem.status = 'error';\n var nextFileList = updateFileList(targetItem, mergedFileList);\n onInternalChange(targetItem, nextFileList);\n };\n var handleRemove = function handleRemove(file) {\n var currentFile;\n Promise.resolve(typeof onRemove === 'function' ? onRemove(file) : onRemove).then(function (ret) {\n var _a;\n // Prevent removing file\n if (ret === false) {\n return;\n }\n var removedFileList = removeFileItem(file, mergedFileList);\n if (removedFileList) {\n currentFile = Object.assign(Object.assign({}, file), {\n status: 'removed'\n });\n mergedFileList === null || mergedFileList === void 0 ? void 0 : mergedFileList.forEach(function (item) {\n var matchKey = currentFile.uid !== undefined ? 'uid' : 'name';\n if (item[matchKey] === currentFile[matchKey] && !Object.isFrozen(item)) {\n item.status = 'removed';\n }\n });\n (_a = upload.current) === null || _a === void 0 ? void 0 : _a.abort(currentFile);\n onInternalChange(currentFile, removedFileList);\n }\n });\n };\n var onFileDrop = function onFileDrop(e) {\n setDragState(e.type);\n if (e.type === 'drop') {\n onDrop === null || onDrop === void 0 ? void 0 : onDrop(e);\n }\n };\n // Test needs\n React.useImperativeHandle(ref, function () {\n return {\n onBatchStart: onBatchStart,\n onSuccess: onSuccess,\n onProgress: onProgress,\n onError: onError,\n fileList: mergedFileList,\n upload: upload.current\n };\n });\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction,\n ctxUpload = _React$useContext.upload;\n var prefixCls = getPrefixCls('upload', customizePrefixCls);\n var rcUploadProps = Object.assign(Object.assign({\n onBatchStart: onBatchStart,\n onError: onError,\n onProgress: onProgress,\n onSuccess: onSuccess\n }, props), {\n data: data,\n multiple: multiple,\n action: action,\n accept: accept,\n supportServerRender: supportServerRender,\n prefixCls: prefixCls,\n disabled: mergedDisabled,\n beforeUpload: mergedBeforeUpload,\n onChange: undefined\n });\n delete rcUploadProps.className;\n delete rcUploadProps.style;\n // Remove id to avoid open by label when trigger is hidden\n // !children: https://github.com/ant-design/ant-design/issues/14298\n // disabled: https://github.com/ant-design/ant-design/issues/16478\n // https://github.com/ant-design/ant-design/issues/24197\n if (!children || mergedDisabled) {\n delete rcUploadProps.id;\n }\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n var _useLocale = useLocale('Upload', defaultLocale.Upload),\n _useLocale2 = _slicedToArray(_useLocale, 1),\n contextLocale = _useLocale2[0];\n var _ref = typeof showUploadList === 'boolean' ? {} : showUploadList,\n showRemoveIcon = _ref.showRemoveIcon,\n showPreviewIcon = _ref.showPreviewIcon,\n showDownloadIcon = _ref.showDownloadIcon,\n removeIcon = _ref.removeIcon,\n previewIcon = _ref.previewIcon,\n downloadIcon = _ref.downloadIcon;\n var renderUploadList = function renderUploadList(button, buttonVisible) {\n if (!showUploadList) {\n return button;\n }\n return /*#__PURE__*/React.createElement(UploadList, {\n prefixCls: prefixCls,\n listType: listType,\n items: mergedFileList,\n previewFile: previewFile,\n onPreview: onPreview,\n onDownload: onDownload,\n onRemove: handleRemove,\n showRemoveIcon: !mergedDisabled && showRemoveIcon,\n showPreviewIcon: showPreviewIcon,\n showDownloadIcon: showDownloadIcon,\n removeIcon: removeIcon,\n previewIcon: previewIcon,\n downloadIcon: downloadIcon,\n iconRender: iconRender,\n locale: Object.assign(Object.assign({}, contextLocale), propLocale),\n isImageUrl: isImageUrl,\n progress: progress,\n appendAction: button,\n appendActionVisible: buttonVisible,\n itemRender: itemRender,\n disabled: mergedDisabled\n });\n };\n var wrapperCls = classNames(\"\".concat(prefixCls, \"-wrapper\"), className, hashId, ctxUpload === null || ctxUpload === void 0 ? void 0 : ctxUpload.className, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-picture-card-wrapper\"), listType === 'picture-card'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-picture-circle-wrapper\"), listType === 'picture-circle'), _classNames));\n var mergedStyle = Object.assign(Object.assign({}, ctxUpload === null || ctxUpload === void 0 ? void 0 : ctxUpload.style), style);\n if (type === 'drag') {\n var _classNames2;\n var dragCls = classNames(hashId, prefixCls, \"\".concat(prefixCls, \"-drag\"), (_classNames2 = {}, _defineProperty(_classNames2, \"\".concat(prefixCls, \"-drag-uploading\"), mergedFileList.some(function (file) {\n return file.status === 'uploading';\n })), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-drag-hover\"), dragState === 'dragover'), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-disabled\"), mergedDisabled), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _classNames2));\n return wrapSSR( /*#__PURE__*/React.createElement(\"span\", {\n className: wrapperCls\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: dragCls,\n style: mergedStyle,\n onDrop: onFileDrop,\n onDragOver: onFileDrop,\n onDragLeave: onFileDrop\n }, /*#__PURE__*/React.createElement(RcUpload, Object.assign({}, rcUploadProps, {\n ref: upload,\n className: \"\".concat(prefixCls, \"-btn\")\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-drag-container\")\n }, children))), renderUploadList()));\n }\n var uploadButtonCls = classNames(prefixCls, \"\".concat(prefixCls, \"-select\"), _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), mergedDisabled));\n var renderUploadButton = function renderUploadButton(uploadButtonStyle) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: uploadButtonCls,\n style: uploadButtonStyle\n }, /*#__PURE__*/React.createElement(RcUpload, Object.assign({}, rcUploadProps, {\n ref: upload\n })));\n };\n var uploadButton = renderUploadButton(children ? undefined : {\n display: 'none'\n });\n if (listType === 'picture-card' || listType === 'picture-circle') {\n return wrapSSR( /*#__PURE__*/React.createElement(\"span\", {\n className: wrapperCls\n }, renderUploadList(uploadButton, !!children)));\n }\n return wrapSSR( /*#__PURE__*/React.createElement(\"span\", {\n className: wrapperCls\n }, uploadButton, renderUploadList()));\n};\nvar Upload = /*#__PURE__*/React.forwardRef(InternalUpload);\nif (process.env.NODE_ENV !== 'production') {\n Upload.displayName = 'Upload';\n}\nexport default Upload;","var __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport Upload from './Upload';\nvar Dragger = /*#__PURE__*/React.forwardRef(function (_a, ref) {\n var style = _a.style,\n height = _a.height,\n restProps = __rest(_a, [\"style\", \"height\"]);\n return /*#__PURE__*/React.createElement(Upload, Object.assign({\n ref: ref\n }, restProps, {\n type: \"drag\",\n style: Object.assign(Object.assign({}, style), {\n height: height\n })\n }));\n});\nif (process.env.NODE_ENV !== 'production') {\n Dragger.displayName = 'Dragger';\n}\nexport default Dragger;","'use client';\n\nimport Dragger from './Dragger';\nimport InternalUpload, { LIST_IGNORE } from './Upload';\nvar Upload = InternalUpload;\nUpload.Dragger = Dragger;\nUpload.LIST_IGNORE = LIST_IGNORE;\nexport default Upload;","import { createContext } from 'react';\n// ZombieJ: We export single file here since\n// ConfigProvider use this which will make loop deps\n// to import whole `rc-field-form`\nexport default /*#__PURE__*/createContext(undefined);","import defaultLocale from '../locale/en_US';\nvar runtimeLocale = Object.assign({}, defaultLocale.Modal);\nvar localeList = [];\nvar generateLocale = function generateLocale() {\n return localeList.reduce(function (merged, locale) {\n return Object.assign(Object.assign({}, merged), locale);\n }, defaultLocale.Modal);\n};\nexport function changeConfirmLocale(newLocale) {\n if (newLocale) {\n var cloneLocale = Object.assign({}, newLocale);\n localeList.push(cloneLocale);\n runtimeLocale = generateLocale();\n return function () {\n localeList = localeList.filter(function (locale) {\n return locale !== cloneLocale;\n });\n runtimeLocale = generateLocale();\n };\n }\n runtimeLocale = Object.assign({}, defaultLocale.Modal);\n}\nexport function getConfirmLocale() {\n return runtimeLocale;\n}","'use client';\n\nimport * as React from 'react';\nimport warning from '../_util/warning';\nimport { changeConfirmLocale } from '../modal/locale';\nimport LocaleContext from './context';\nexport { default as useLocale } from './useLocale';\nexport var ANT_MARK = 'internalMark';\nvar LocaleProvider = function LocaleProvider(props) {\n var _props$locale = props.locale,\n locale = _props$locale === void 0 ? {} : _props$locale,\n children = props.children,\n _ANT_MARK__ = props._ANT_MARK__;\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? warning(_ANT_MARK__ === ANT_MARK, 'LocaleProvider', '`LocaleProvider` is deprecated. Please use `locale` with `ConfigProvider` instead: http://u.ant.design/locale') : void 0;\n }\n React.useEffect(function () {\n var clearLocale = changeConfirmLocale(locale && locale.Modal);\n return clearLocale;\n }, [locale]);\n var getMemoizedContextValue = React.useMemo(function () {\n return Object.assign(Object.assign({}, locale), {\n exist: true\n });\n }, [locale]);\n return /*#__PURE__*/React.createElement(LocaleContext.Provider, {\n value: getMemoizedContextValue\n }, children);\n};\nif (process.env.NODE_ENV !== 'production') {\n LocaleProvider.displayName = 'LocaleProvider';\n}\nexport default LocaleProvider;","/* eslint-disable import/prefer-default-export, prefer-destructuring */\nimport { generate } from '@ant-design/colors';\nimport { TinyColor } from '@ctrl/tinycolor';\nimport canUseDom from \"rc-util/es/Dom/canUseDom\";\nimport { updateCSS } from \"rc-util/es/Dom/dynamicCSS\";\nimport warning from '../_util/warning';\nvar dynamicStyleMark = \"-ant-\".concat(Date.now(), \"-\").concat(Math.random());\nexport function getStyle(globalPrefixCls, theme) {\n var variables = {};\n var formatColor = function formatColor(color, updater) {\n var clone = color.clone();\n clone = (updater === null || updater === void 0 ? void 0 : updater(clone)) || clone;\n return clone.toRgbString();\n };\n var fillColor = function fillColor(colorVal, type) {\n var baseColor = new TinyColor(colorVal);\n var colorPalettes = generate(baseColor.toRgbString());\n variables[\"\".concat(type, \"-color\")] = formatColor(baseColor);\n variables[\"\".concat(type, \"-color-disabled\")] = colorPalettes[1];\n variables[\"\".concat(type, \"-color-hover\")] = colorPalettes[4];\n variables[\"\".concat(type, \"-color-active\")] = colorPalettes[6];\n variables[\"\".concat(type, \"-color-outline\")] = baseColor.clone().setAlpha(0.2).toRgbString();\n variables[\"\".concat(type, \"-color-deprecated-bg\")] = colorPalettes[0];\n variables[\"\".concat(type, \"-color-deprecated-border\")] = colorPalettes[2];\n };\n // ================ Primary Color ================\n if (theme.primaryColor) {\n fillColor(theme.primaryColor, 'primary');\n var primaryColor = new TinyColor(theme.primaryColor);\n var primaryColors = generate(primaryColor.toRgbString());\n // Legacy - We should use semantic naming standard\n primaryColors.forEach(function (color, index) {\n variables[\"primary-\".concat(index + 1)] = color;\n });\n // Deprecated\n variables['primary-color-deprecated-l-35'] = formatColor(primaryColor, function (c) {\n return c.lighten(35);\n });\n variables['primary-color-deprecated-l-20'] = formatColor(primaryColor, function (c) {\n return c.lighten(20);\n });\n variables['primary-color-deprecated-t-20'] = formatColor(primaryColor, function (c) {\n return c.tint(20);\n });\n variables['primary-color-deprecated-t-50'] = formatColor(primaryColor, function (c) {\n return c.tint(50);\n });\n variables['primary-color-deprecated-f-12'] = formatColor(primaryColor, function (c) {\n return c.setAlpha(c.getAlpha() * 0.12);\n });\n var primaryActiveColor = new TinyColor(primaryColors[0]);\n variables['primary-color-active-deprecated-f-30'] = formatColor(primaryActiveColor, function (c) {\n return c.setAlpha(c.getAlpha() * 0.3);\n });\n variables['primary-color-active-deprecated-d-02'] = formatColor(primaryActiveColor, function (c) {\n return c.darken(2);\n });\n }\n // ================ Success Color ================\n if (theme.successColor) {\n fillColor(theme.successColor, 'success');\n }\n // ================ Warning Color ================\n if (theme.warningColor) {\n fillColor(theme.warningColor, 'warning');\n }\n // ================= Error Color =================\n if (theme.errorColor) {\n fillColor(theme.errorColor, 'error');\n }\n // ================= Info Color ==================\n if (theme.infoColor) {\n fillColor(theme.infoColor, 'info');\n }\n // Convert to css variables\n var cssList = Object.keys(variables).map(function (key) {\n return \"--\".concat(globalPrefixCls, \"-\").concat(key, \": \").concat(variables[key], \";\");\n });\n return \"\\n :root {\\n \".concat(cssList.join('\\n'), \"\\n }\\n \").trim();\n}\nexport function registerTheme(globalPrefixCls, theme) {\n var style = getStyle(globalPrefixCls, theme);\n if (canUseDom()) {\n updateCSS(style, \"\".concat(dynamicStyleMark, \"-dynamic-theme\"));\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'ConfigProvider', 'SSR do not support dynamic theme with css variables.') : void 0;\n }\n}","import { useContext } from 'react';\nimport DisabledContext from '../DisabledContext';\nimport SizeContext from '../SizeContext';\nfunction useConfig() {\n var componentDisabled = useContext(DisabledContext);\n var componentSize = useContext(SizeContext);\n return {\n componentDisabled: componentDisabled,\n componentSize: componentSize\n };\n}\nexport default useConfig;","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport { Provider as MotionProvider } from 'rc-motion';\nimport * as React from 'react';\nimport { useToken } from '../theme/internal';\nexport default function MotionWrapper(props) {\n var children = props.children;\n var _useToken = useToken(),\n _useToken2 = _slicedToArray(_useToken, 2),\n token = _useToken2[1];\n var motion = token.motion;\n var needWrapMotionProviderRef = React.useRef(false);\n needWrapMotionProviderRef.current = needWrapMotionProviderRef.current || motion === false;\n if (needWrapMotionProviderRef.current) {\n return /*#__PURE__*/React.createElement(MotionProvider, {\n motion: motion\n }, children);\n }\n return children;\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport { useStyleRegister } from '@ant-design/cssinjs';\nimport { resetIcon } from '../../style';\nimport { useToken } from '../../theme/internal';\nvar useStyle = function useStyle(iconPrefixCls, csp) {\n var _useToken = useToken(),\n _useToken2 = _slicedToArray(_useToken, 2),\n theme = _useToken2[0],\n token = _useToken2[1];\n // Generate style for icons\n return useStyleRegister({\n theme: theme,\n token: token,\n hashId: '',\n path: ['ant-design-icons', iconPrefixCls],\n nonce: function nonce() {\n return csp === null || csp === void 0 ? void 0 : csp.nonce;\n }\n }, function () {\n return [_defineProperty({}, \".\".concat(iconPrefixCls), Object.assign(Object.assign({}, resetIcon()), _defineProperty({}, \".\".concat(iconPrefixCls, \" .\").concat(iconPrefixCls, \"-icon\"), {\n display: 'block'\n })))];\n });\n};\nexport default useStyle;","'use client';\n\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { createTheme } from '@ant-design/cssinjs';\nimport IconContext from \"@ant-design/icons/es/components/Context\";\nimport useMemo from \"rc-util/es/hooks/useMemo\";\nimport { merge } from \"rc-util/es/utils/set\";\nimport * as React from 'react';\nimport warning from '../_util/warning';\nimport ValidateMessagesContext from '../form/validateMessagesContext';\nimport LocaleProvider, { ANT_MARK } from '../locale';\nimport LocaleContext from '../locale/context';\nimport defaultLocale from '../locale/en_US';\nimport { DesignTokenContext } from '../theme/internal';\nimport defaultSeedToken from '../theme/themes/seed';\nimport { ConfigConsumer, ConfigContext, defaultIconPrefixCls } from './context';\nimport { registerTheme } from './cssVariables';\nimport { DisabledContextProvider } from './DisabledContext';\nimport useConfig from './hooks/useConfig';\nimport useTheme from './hooks/useTheme';\nimport MotionWrapper from './MotionWrapper';\nimport SizeContext, { SizeContextProvider } from './SizeContext';\nimport useStyle from './style';\nimport { defaultTheme } from '../theme/context';\n/**\n * Since too many feedback using static method like `Modal.confirm` not getting theme, we record the\n * theme register info here to help developer get warning info.\n */\nvar existThemeConfig = false;\nexport var warnContext = process.env.NODE_ENV !== 'production' ? function (componentName) {\n process.env.NODE_ENV !== \"production\" ? warning(!existThemeConfig, componentName, \"Static function can not consume context like dynamic theme. Please use 'App' component instead.\") : void 0;\n} : /* istanbul ignore next */\nnull;\nexport { ConfigConsumer, ConfigContext, defaultIconPrefixCls };\nexport var configConsumerProps = ['getTargetContainer', 'getPopupContainer', 'rootPrefixCls', 'getPrefixCls', 'renderEmpty', 'csp', 'autoInsertSpaceInButton', 'locale', 'pageHeader'];\n// These props is used by `useContext` directly in sub component\nvar PASSED_PROPS = ['getTargetContainer', 'getPopupContainer', 'renderEmpty', 'pageHeader', 'input', 'pagination', 'form', 'select', 'button'];\nexport var defaultPrefixCls = 'ant';\nvar globalPrefixCls;\nvar globalIconPrefixCls;\nvar globalTheme;\nfunction getGlobalPrefixCls() {\n return globalPrefixCls || defaultPrefixCls;\n}\nfunction getGlobalIconPrefixCls() {\n return globalIconPrefixCls || defaultIconPrefixCls;\n}\nfunction isLegacyTheme(theme) {\n return Object.keys(theme).some(function (key) {\n return key.endsWith('Color');\n });\n}\nvar setGlobalConfig = function setGlobalConfig(_ref) {\n var prefixCls = _ref.prefixCls,\n iconPrefixCls = _ref.iconPrefixCls,\n theme = _ref.theme;\n if (prefixCls !== undefined) {\n globalPrefixCls = prefixCls;\n }\n if (iconPrefixCls !== undefined) {\n globalIconPrefixCls = iconPrefixCls;\n }\n if (theme) {\n if (isLegacyTheme(theme)) {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'ConfigProvider', '`config` of css variable theme is not work in v5. Please use new `theme` config instead.') : void 0;\n registerTheme(getGlobalPrefixCls(), theme);\n } else {\n globalTheme = theme;\n }\n }\n};\nexport var globalConfig = function globalConfig() {\n return {\n getPrefixCls: function getPrefixCls(suffixCls, customizePrefixCls) {\n if (customizePrefixCls) {\n return customizePrefixCls;\n }\n return suffixCls ? \"\".concat(getGlobalPrefixCls(), \"-\").concat(suffixCls) : getGlobalPrefixCls();\n },\n getIconPrefixCls: getGlobalIconPrefixCls,\n getRootPrefixCls: function getRootPrefixCls() {\n // If Global prefixCls provided, use this\n if (globalPrefixCls) {\n return globalPrefixCls;\n }\n // Fallback to default prefixCls\n return getGlobalPrefixCls();\n },\n getTheme: function getTheme() {\n return globalTheme;\n }\n };\n};\nvar ProviderChildren = function ProviderChildren(props) {\n var children = props.children,\n customCsp = props.csp,\n autoInsertSpaceInButton = props.autoInsertSpaceInButton,\n alert = props.alert,\n anchor = props.anchor,\n form = props.form,\n locale = props.locale,\n componentSize = props.componentSize,\n direction = props.direction,\n space = props.space,\n virtual = props.virtual,\n dropdownMatchSelectWidth = props.dropdownMatchSelectWidth,\n popupMatchSelectWidth = props.popupMatchSelectWidth,\n popupOverflow = props.popupOverflow,\n legacyLocale = props.legacyLocale,\n parentContext = props.parentContext,\n customIconPrefixCls = props.iconPrefixCls,\n theme = props.theme,\n componentDisabled = props.componentDisabled,\n segmented = props.segmented,\n statistic = props.statistic,\n spin = props.spin,\n calendar = props.calendar,\n carousel = props.carousel,\n cascader = props.cascader,\n collapse = props.collapse,\n typography = props.typography,\n checkbox = props.checkbox,\n descriptions = props.descriptions,\n divider = props.divider,\n drawer = props.drawer,\n skeleton = props.skeleton,\n steps = props.steps,\n image = props.image,\n layout = props.layout,\n list = props.list,\n mentions = props.mentions,\n modal = props.modal,\n progress = props.progress,\n result = props.result,\n slider = props.slider,\n breadcrumb = props.breadcrumb,\n menu = props.menu,\n pagination = props.pagination,\n input = props.input,\n empty = props.empty,\n badge = props.badge,\n radio = props.radio,\n rate = props.rate,\n SWITCH = props.switch,\n transfer = props.transfer,\n avatar = props.avatar,\n message = props.message,\n tag = props.tag,\n table = props.table,\n card = props.card,\n tabs = props.tabs,\n timeline = props.timeline,\n timePicker = props.timePicker,\n upload = props.upload,\n notification = props.notification,\n tree = props.tree,\n colorPicker = props.colorPicker,\n datePicker = props.datePicker,\n wave = props.wave;\n // =================================== Warning ===================================\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? warning(dropdownMatchSelectWidth === undefined, 'ConfigProvider', '`dropdownMatchSelectWidth` is deprecated. Please use `popupMatchSelectWidth` instead.') : void 0;\n }\n // =================================== Context ===================================\n var getPrefixCls = React.useCallback(function (suffixCls, customizePrefixCls) {\n var prefixCls = props.prefixCls;\n if (customizePrefixCls) {\n return customizePrefixCls;\n }\n var mergedPrefixCls = prefixCls || parentContext.getPrefixCls('');\n return suffixCls ? \"\".concat(mergedPrefixCls, \"-\").concat(suffixCls) : mergedPrefixCls;\n }, [parentContext.getPrefixCls, props.prefixCls]);\n var iconPrefixCls = customIconPrefixCls || parentContext.iconPrefixCls || defaultIconPrefixCls;\n var shouldWrapSSR = iconPrefixCls !== parentContext.iconPrefixCls;\n var csp = customCsp || parentContext.csp;\n var wrapSSR = useStyle(iconPrefixCls, csp);\n var mergedTheme = useTheme(theme, parentContext.theme);\n if (process.env.NODE_ENV !== 'production') {\n existThemeConfig = existThemeConfig || !!mergedTheme;\n }\n var baseConfig = {\n csp: csp,\n autoInsertSpaceInButton: autoInsertSpaceInButton,\n alert: alert,\n anchor: anchor,\n locale: locale || legacyLocale,\n direction: direction,\n space: space,\n virtual: virtual,\n popupMatchSelectWidth: popupMatchSelectWidth !== null && popupMatchSelectWidth !== void 0 ? popupMatchSelectWidth : dropdownMatchSelectWidth,\n popupOverflow: popupOverflow,\n getPrefixCls: getPrefixCls,\n iconPrefixCls: iconPrefixCls,\n theme: mergedTheme,\n segmented: segmented,\n statistic: statistic,\n spin: spin,\n calendar: calendar,\n carousel: carousel,\n cascader: cascader,\n collapse: collapse,\n typography: typography,\n checkbox: checkbox,\n descriptions: descriptions,\n divider: divider,\n drawer: drawer,\n skeleton: skeleton,\n steps: steps,\n image: image,\n input: input,\n layout: layout,\n list: list,\n mentions: mentions,\n modal: modal,\n progress: progress,\n result: result,\n slider: slider,\n breadcrumb: breadcrumb,\n menu: menu,\n pagination: pagination,\n empty: empty,\n badge: badge,\n radio: radio,\n rate: rate,\n switch: SWITCH,\n transfer: transfer,\n avatar: avatar,\n message: message,\n tag: tag,\n table: table,\n card: card,\n tabs: tabs,\n timeline: timeline,\n timePicker: timePicker,\n upload: upload,\n notification: notification,\n tree: tree,\n colorPicker: colorPicker,\n datePicker: datePicker,\n wave: wave\n };\n var config = Object.assign({}, parentContext);\n Object.keys(baseConfig).forEach(function (key) {\n if (baseConfig[key] !== undefined) {\n config[key] = baseConfig[key];\n }\n });\n // Pass the props used by `useContext` directly with child component.\n // These props should merged into `config`.\n PASSED_PROPS.forEach(function (propName) {\n var propValue = props[propName];\n if (propValue) {\n config[propName] = propValue;\n }\n });\n // https://github.com/ant-design/ant-design/issues/27617\n var memoedConfig = useMemo(function () {\n return config;\n }, config, function (prevConfig, currentConfig) {\n var prevKeys = Object.keys(prevConfig);\n var currentKeys = Object.keys(currentConfig);\n return prevKeys.length !== currentKeys.length || prevKeys.some(function (key) {\n return prevConfig[key] !== currentConfig[key];\n });\n });\n var memoIconContextValue = React.useMemo(function () {\n return {\n prefixCls: iconPrefixCls,\n csp: csp\n };\n }, [iconPrefixCls, csp]);\n var childNode = shouldWrapSSR ? wrapSSR(children) : children;\n var validateMessages = React.useMemo(function () {\n var _a, _b, _c, _d;\n return merge(((_a = defaultLocale.Form) === null || _a === void 0 ? void 0 : _a.defaultValidateMessages) || {}, ((_c = (_b = memoedConfig.locale) === null || _b === void 0 ? void 0 : _b.Form) === null || _c === void 0 ? void 0 : _c.defaultValidateMessages) || {}, ((_d = memoedConfig.form) === null || _d === void 0 ? void 0 : _d.validateMessages) || {}, (form === null || form === void 0 ? void 0 : form.validateMessages) || {});\n }, [memoedConfig, form === null || form === void 0 ? void 0 : form.validateMessages]);\n if (Object.keys(validateMessages).length > 0) {\n childNode = /*#__PURE__*/React.createElement(ValidateMessagesContext.Provider, {\n value: validateMessages\n }, children);\n }\n if (locale) {\n childNode = /*#__PURE__*/React.createElement(LocaleProvider, {\n locale: locale,\n _ANT_MARK__: ANT_MARK\n }, childNode);\n }\n if (iconPrefixCls || csp) {\n childNode = /*#__PURE__*/React.createElement(IconContext.Provider, {\n value: memoIconContextValue\n }, childNode);\n }\n if (componentSize) {\n childNode = /*#__PURE__*/React.createElement(SizeContextProvider, {\n size: componentSize\n }, childNode);\n }\n // =================================== Motion ===================================\n childNode = /*#__PURE__*/React.createElement(MotionWrapper, null, childNode);\n // ================================ Dynamic theme ================================\n var memoTheme = React.useMemo(function () {\n var _a = mergedTheme || {},\n algorithm = _a.algorithm,\n token = _a.token,\n components = _a.components,\n rest = __rest(_a, [\"algorithm\", \"token\", \"components\"]);\n var themeObj = algorithm && (!Array.isArray(algorithm) || algorithm.length > 0) ? createTheme(algorithm) : defaultTheme;\n var parsedComponents = {};\n Object.entries(components || {}).forEach(function (_ref2) {\n var _ref3 = _slicedToArray(_ref2, 2),\n componentName = _ref3[0],\n componentToken = _ref3[1];\n var parsedToken = Object.assign({}, componentToken);\n if ('algorithm' in parsedToken) {\n if (parsedToken.algorithm === true) {\n parsedToken.theme = themeObj;\n } else if (Array.isArray(parsedToken.algorithm) || typeof parsedToken.algorithm === 'function') {\n parsedToken.theme = createTheme(parsedToken.algorithm);\n }\n delete parsedToken.algorithm;\n }\n parsedComponents[componentName] = parsedToken;\n });\n return Object.assign(Object.assign({}, rest), {\n theme: themeObj,\n token: Object.assign(Object.assign({}, defaultSeedToken), token),\n components: parsedComponents\n });\n }, [mergedTheme]);\n if (theme) {\n childNode = /*#__PURE__*/React.createElement(DesignTokenContext.Provider, {\n value: memoTheme\n }, childNode);\n }\n // =================================== Render ===================================\n if (componentDisabled !== undefined) {\n childNode = /*#__PURE__*/React.createElement(DisabledContextProvider, {\n disabled: componentDisabled\n }, childNode);\n }\n return /*#__PURE__*/React.createElement(ConfigContext.Provider, {\n value: memoedConfig\n }, childNode);\n};\nvar ConfigProvider = function ConfigProvider(props) {\n var context = React.useContext(ConfigContext);\n var antLocale = React.useContext(LocaleContext);\n return /*#__PURE__*/React.createElement(ProviderChildren, Object.assign({\n parentContext: context,\n legacyLocale: antLocale\n }, props));\n};\nConfigProvider.ConfigContext = ConfigContext;\nConfigProvider.SizeContext = SizeContext;\nConfigProvider.config = setGlobalConfig;\nConfigProvider.useConfig = useConfig;\nObject.defineProperty(ConfigProvider, 'SizeContext', {\n get: function get() {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'ConfigProvider', 'ConfigProvider.SizeContext is deprecated. Please use `ConfigProvider.useConfig().componentSize` instead.') : void 0;\n return SizeContext;\n }\n});\nif (process.env.NODE_ENV !== 'production') {\n ConfigProvider.displayName = 'ConfigProvider';\n}\nexport default ConfigProvider;","import useMemo from \"rc-util/es/hooks/useMemo\";\nimport isEqual from \"rc-util/es/isEqual\";\nimport { defaultConfig } from '../../theme/internal';\nexport default function useTheme(theme, parentTheme) {\n var themeConfig = theme || {};\n var parentThemeConfig = themeConfig.inherit === false || !parentTheme ? defaultConfig : parentTheme;\n return useMemo(function () {\n if (!theme) {\n return parentTheme;\n }\n // Override\n var mergedComponents = Object.assign({}, parentThemeConfig.components);\n Object.keys(theme.components || {}).forEach(function (componentName) {\n mergedComponents[componentName] = Object.assign(Object.assign({}, mergedComponents[componentName]), theme.components[componentName]);\n });\n // Base token\n return Object.assign(Object.assign(Object.assign({}, parentThemeConfig), themeConfig), {\n token: Object.assign(Object.assign({}, parentThemeConfig.token), themeConfig.token),\n components: mergedComponents\n });\n }, [themeConfig, parentThemeConfig], function (prev, next) {\n return prev.some(function (prevTheme, index) {\n var nextTheme = next[index];\n return !isEqual(prevTheme, nextTheme, true);\n });\n });\n}","// This icon file is generated automatically.\nvar ExclamationCircleFilled = {\n \"icon\": {\n \"tag\": \"svg\",\n \"attrs\": {\n \"viewBox\": \"64 64 896 896\",\n \"focusable\": \"false\"\n },\n \"children\": [{\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-32 232c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V296zm32 440a48.01 48.01 0 010-96 48.01 48.01 0 010 96z\"\n }\n }]\n },\n \"name\": \"exclamation-circle\",\n \"theme\": \"filled\"\n};\nexport default ExclamationCircleFilled;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport ExclamationCircleFilledSvg from \"@ant-design/icons-svg/es/asn/ExclamationCircleFilled\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar ExclamationCircleFilled = function ExclamationCircleFilled(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: ExclamationCircleFilledSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n ExclamationCircleFilled.displayName = 'ExclamationCircleFilled';\n}\nexport default /*#__PURE__*/React.forwardRef(ExclamationCircleFilled);","// This icon file is generated automatically.\nvar InfoCircleFilled = {\n \"icon\": {\n \"tag\": \"svg\",\n \"attrs\": {\n \"viewBox\": \"64 64 896 896\",\n \"focusable\": \"false\"\n },\n \"children\": [{\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm32 664c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V456c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272zm-32-344a48.01 48.01 0 010-96 48.01 48.01 0 010 96z\"\n }\n }]\n },\n \"name\": \"info-circle\",\n \"theme\": \"filled\"\n};\nexport default InfoCircleFilled;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport InfoCircleFilledSvg from \"@ant-design/icons-svg/es/asn/InfoCircleFilled\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar InfoCircleFilled = function InfoCircleFilled(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: InfoCircleFilledSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n InfoCircleFilled.displayName = 'InfoCircleFilled';\n}\nexport default /*#__PURE__*/React.forwardRef(InfoCircleFilled);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport classNames from 'classnames';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport * as React from 'react';\nvar Notify = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var prefixCls = props.prefixCls,\n style = props.style,\n className = props.className,\n _props$duration = props.duration,\n duration = _props$duration === void 0 ? 4.5 : _props$duration,\n eventKey = props.eventKey,\n content = props.content,\n closable = props.closable,\n _props$closeIcon = props.closeIcon,\n closeIcon = _props$closeIcon === void 0 ? 'x' : _props$closeIcon,\n divProps = props.props,\n onClick = props.onClick,\n onNoticeClose = props.onNoticeClose,\n times = props.times;\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n hovering = _React$useState2[0],\n setHovering = _React$useState2[1];\n // ======================== Close =========================\n var onInternalClose = function onInternalClose() {\n onNoticeClose(eventKey);\n };\n var onCloseKeyDown = function onCloseKeyDown(e) {\n if (e.key === 'Enter' || e.code === 'Enter' || e.keyCode === KeyCode.ENTER) {\n onInternalClose();\n }\n };\n // ======================== Effect ========================\n React.useEffect(function () {\n if (!hovering && duration > 0) {\n var timeout = setTimeout(function () {\n onInternalClose();\n }, duration * 1000);\n return function () {\n clearTimeout(timeout);\n };\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [duration, hovering, times]);\n // ======================== Render ========================\n var noticePrefixCls = \"\".concat(prefixCls, \"-notice\");\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, divProps, {\n ref: ref,\n className: classNames(noticePrefixCls, className, _defineProperty({}, \"\".concat(noticePrefixCls, \"-closable\"), closable)),\n style: style,\n onMouseEnter: function onMouseEnter() {\n setHovering(true);\n },\n onMouseLeave: function onMouseLeave() {\n setHovering(false);\n },\n onClick: onClick\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(noticePrefixCls, \"-content\")\n }, content), closable && /*#__PURE__*/React.createElement(\"a\", {\n tabIndex: 0,\n className: \"\".concat(noticePrefixCls, \"-close\"),\n onKeyDown: onCloseKeyDown,\n onClick: function onClick(e) {\n e.preventDefault();\n e.stopPropagation();\n onInternalClose();\n }\n }, closeIcon));\n});\nexport default Notify;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { createPortal } from 'react-dom';\nimport { CSSMotionList } from 'rc-motion';\nimport classNames from 'classnames';\nimport Notice from './Notice';\n// ant-notification ant-notification-topRight\nvar Notifications = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-notification' : _props$prefixCls,\n container = props.container,\n motion = props.motion,\n maxCount = props.maxCount,\n className = props.className,\n style = props.style,\n onAllRemoved = props.onAllRemoved;\n var _React$useState = React.useState([]),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n configList = _React$useState2[0],\n setConfigList = _React$useState2[1];\n // ======================== Close =========================\n var onNoticeClose = function onNoticeClose(key) {\n var _config$onClose;\n // Trigger close event\n var config = configList.find(function (item) {\n return item.key === key;\n });\n config === null || config === void 0 ? void 0 : (_config$onClose = config.onClose) === null || _config$onClose === void 0 ? void 0 : _config$onClose.call(config);\n setConfigList(function (list) {\n return list.filter(function (item) {\n return item.key !== key;\n });\n });\n };\n // ========================= Refs =========================\n React.useImperativeHandle(ref, function () {\n return {\n open: function open(config) {\n setConfigList(function (list) {\n var clone = _toConsumableArray(list);\n // Replace if exist\n var index = clone.findIndex(function (item) {\n return item.key === config.key;\n });\n var innerConfig = _objectSpread({}, config);\n if (index >= 0) {\n var _list$index;\n innerConfig.times = (((_list$index = list[index]) === null || _list$index === void 0 ? void 0 : _list$index.times) || 0) + 1;\n clone[index] = innerConfig;\n } else {\n innerConfig.times = 0;\n clone.push(innerConfig);\n }\n if (maxCount > 0 && clone.length > maxCount) {\n clone = clone.slice(-maxCount);\n }\n return clone;\n });\n },\n close: function close(key) {\n onNoticeClose(key);\n },\n destroy: function destroy() {\n setConfigList([]);\n }\n };\n });\n // ====================== Placements ======================\n var _React$useState3 = React.useState({}),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n placements = _React$useState4[0],\n setPlacements = _React$useState4[1];\n React.useEffect(function () {\n var nextPlacements = {};\n configList.forEach(function (config) {\n var _config$placement = config.placement,\n placement = _config$placement === void 0 ? 'topRight' : _config$placement;\n if (placement) {\n nextPlacements[placement] = nextPlacements[placement] || [];\n nextPlacements[placement].push(config);\n }\n });\n // Fill exist placements to avoid empty list causing remove without motion\n Object.keys(placements).forEach(function (placement) {\n nextPlacements[placement] = nextPlacements[placement] || [];\n });\n setPlacements(nextPlacements);\n }, [configList]);\n // Clean up container if all notices fade out\n var onAllNoticeRemoved = function onAllNoticeRemoved(placement) {\n setPlacements(function (originPlacements) {\n var clone = _objectSpread({}, originPlacements);\n var list = clone[placement] || [];\n if (!list.length) {\n delete clone[placement];\n }\n return clone;\n });\n };\n // Effect tell that placements is empty now\n var emptyRef = React.useRef(false);\n React.useEffect(function () {\n if (Object.keys(placements).length > 0) {\n emptyRef.current = true;\n } else if (emptyRef.current) {\n // Trigger only when from exist to empty\n onAllRemoved === null || onAllRemoved === void 0 ? void 0 : onAllRemoved();\n emptyRef.current = false;\n }\n }, [placements]);\n // ======================== Render ========================\n if (!container) {\n return null;\n }\n var placementList = Object.keys(placements);\n return /*#__PURE__*/createPortal( /*#__PURE__*/React.createElement(React.Fragment, null, placementList.map(function (placement) {\n var placementConfigList = placements[placement];\n var keys = placementConfigList.map(function (config) {\n return {\n config: config,\n key: config.key\n };\n });\n var placementMotion = typeof motion === 'function' ? motion(placement) : motion;\n return /*#__PURE__*/React.createElement(CSSMotionList, _extends({\n key: placement,\n className: classNames(prefixCls, \"\".concat(prefixCls, \"-\").concat(placement), className === null || className === void 0 ? void 0 : className(placement)),\n style: style === null || style === void 0 ? void 0 : style(placement),\n keys: keys,\n motionAppear: true\n }, placementMotion, {\n onAllRemoved: function onAllRemoved() {\n onAllNoticeRemoved(placement);\n }\n }), function (_ref, nodeRef) {\n var config = _ref.config,\n motionClassName = _ref.className,\n motionStyle = _ref.style;\n var key = config.key,\n times = config.times;\n var configClassName = config.className,\n configStyle = config.style;\n return /*#__PURE__*/React.createElement(Notice, _extends({}, config, {\n ref: nodeRef,\n prefixCls: prefixCls,\n className: classNames(motionClassName, configClassName),\n style: _objectSpread(_objectSpread({}, motionStyle), configStyle),\n times: times,\n key: key,\n eventKey: key,\n onNoticeClose: onNoticeClose\n }));\n });\n })), container);\n});\nif (process.env.NODE_ENV !== 'production') {\n Notifications.displayName = 'Notifications';\n}\nexport default Notifications;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"getContainer\", \"motion\", \"prefixCls\", \"maxCount\", \"className\", \"style\", \"onAllRemoved\"];\nimport * as React from 'react';\nimport Notifications from './Notifications';\nvar defaultGetContainer = function defaultGetContainer() {\n return document.body;\n};\nvar uniqueKey = 0;\nfunction mergeConfig() {\n var clone = {};\n for (var _len = arguments.length, objList = new Array(_len), _key = 0; _key < _len; _key++) {\n objList[_key] = arguments[_key];\n }\n objList.forEach(function (obj) {\n if (obj) {\n Object.keys(obj).forEach(function (key) {\n var val = obj[key];\n if (val !== undefined) {\n clone[key] = val;\n }\n });\n }\n });\n return clone;\n}\nexport default function useNotification() {\n var rootConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _rootConfig$getContai = rootConfig.getContainer,\n getContainer = _rootConfig$getContai === void 0 ? defaultGetContainer : _rootConfig$getContai,\n motion = rootConfig.motion,\n prefixCls = rootConfig.prefixCls,\n maxCount = rootConfig.maxCount,\n className = rootConfig.className,\n style = rootConfig.style,\n onAllRemoved = rootConfig.onAllRemoved,\n shareConfig = _objectWithoutProperties(rootConfig, _excluded);\n var _React$useState = React.useState(),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n container = _React$useState2[0],\n setContainer = _React$useState2[1];\n var notificationsRef = React.useRef();\n var contextHolder = /*#__PURE__*/React.createElement(Notifications, {\n container: container,\n ref: notificationsRef,\n prefixCls: prefixCls,\n motion: motion,\n maxCount: maxCount,\n className: className,\n style: style,\n onAllRemoved: onAllRemoved\n });\n var _React$useState3 = React.useState([]),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n taskQueue = _React$useState4[0],\n setTaskQueue = _React$useState4[1];\n // ========================= Refs =========================\n var api = React.useMemo(function () {\n return {\n open: function open(config) {\n var mergedConfig = mergeConfig(shareConfig, config);\n if (mergedConfig.key === null || mergedConfig.key === undefined) {\n mergedConfig.key = \"rc-notification-\".concat(uniqueKey);\n uniqueKey += 1;\n }\n setTaskQueue(function (queue) {\n return [].concat(_toConsumableArray(queue), [{\n type: 'open',\n config: mergedConfig\n }]);\n });\n },\n close: function close(key) {\n setTaskQueue(function (queue) {\n return [].concat(_toConsumableArray(queue), [{\n type: 'close',\n key: key\n }]);\n });\n },\n destroy: function destroy() {\n setTaskQueue(function (queue) {\n return [].concat(_toConsumableArray(queue), [{\n type: 'destroy'\n }]);\n });\n }\n };\n }, []);\n // ======================= Container ======================\n // React 18 should all in effect that we will check container in each render\n // Which means getContainer should be stable.\n React.useEffect(function () {\n setContainer(getContainer());\n });\n // ======================== Effect ========================\n React.useEffect(function () {\n // Flush task when node ready\n if (notificationsRef.current && taskQueue.length) {\n taskQueue.forEach(function (task) {\n switch (task.type) {\n case 'open':\n notificationsRef.current.open(task.config);\n break;\n case 'close':\n notificationsRef.current.close(task.key);\n break;\n case 'destroy':\n notificationsRef.current.destroy();\n break;\n }\n });\n // React 17 will mix order of effect & setState in async\n // - open: setState[0]\n // - effect[0]\n // - open: setState[1]\n // - effect setState([]) * here will clean up [0, 1] in React 17\n setTaskQueue(function (oriQueue) {\n return oriQueue.filter(function (task) {\n return !taskQueue.includes(task);\n });\n });\n }\n }, [taskQueue]);\n // ======================== Return ========================\n return [api, contextHolder];\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { Keyframes } from '@ant-design/cssinjs';\nimport { resetComponent } from '../../style';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nvar genMessageStyle = function genMessageStyle(token) {\n var _noticeStyle, _Object$assign;\n var componentCls = token.componentCls,\n iconCls = token.iconCls,\n boxShadow = token.boxShadow,\n colorText = token.colorText,\n colorSuccess = token.colorSuccess,\n colorError = token.colorError,\n colorWarning = token.colorWarning,\n colorInfo = token.colorInfo,\n fontSizeLG = token.fontSizeLG,\n motionEaseInOutCirc = token.motionEaseInOutCirc,\n motionDurationSlow = token.motionDurationSlow,\n marginXS = token.marginXS,\n paddingXS = token.paddingXS,\n borderRadiusLG = token.borderRadiusLG,\n zIndexPopup = token.zIndexPopup,\n contentPadding = token.contentPadding,\n contentBg = token.contentBg;\n var noticeCls = \"\".concat(componentCls, \"-notice\");\n var messageMoveIn = new Keyframes('MessageMoveIn', {\n '0%': {\n padding: 0,\n transform: 'translateY(-100%)',\n opacity: 0\n },\n '100%': {\n padding: paddingXS,\n transform: 'translateY(0)',\n opacity: 1\n }\n });\n var messageMoveOut = new Keyframes('MessageMoveOut', {\n '0%': {\n maxHeight: token.height,\n padding: paddingXS,\n opacity: 1\n },\n '100%': {\n maxHeight: 0,\n padding: 0,\n opacity: 0\n }\n });\n var noticeStyle = (_noticeStyle = {\n padding: paddingXS,\n textAlign: 'center'\n }, _defineProperty(_noticeStyle, \"\".concat(componentCls, \"-custom-content > \").concat(iconCls), {\n verticalAlign: 'text-bottom',\n marginInlineEnd: marginXS,\n fontSize: fontSizeLG\n }), _defineProperty(_noticeStyle, \"\".concat(noticeCls, \"-content\"), {\n display: 'inline-block',\n padding: contentPadding,\n background: contentBg,\n borderRadius: borderRadiusLG,\n boxShadow: boxShadow,\n pointerEvents: 'all'\n }), _defineProperty(_noticeStyle, \"\".concat(componentCls, \"-success > \").concat(iconCls), {\n color: colorSuccess\n }), _defineProperty(_noticeStyle, \"\".concat(componentCls, \"-error > \").concat(iconCls), {\n color: colorError\n }), _defineProperty(_noticeStyle, \"\".concat(componentCls, \"-warning > \").concat(iconCls), {\n color: colorWarning\n }), _defineProperty(_noticeStyle, \"\".concat(componentCls, \"-info > \").concat(iconCls, \",\\n \").concat(componentCls, \"-loading > \").concat(iconCls), {\n color: colorInfo\n }), _noticeStyle);\n return [// ============================ Holder ============================\n _defineProperty({}, componentCls, Object.assign(Object.assign({}, resetComponent(token)), (_Object$assign = {\n color: colorText,\n position: 'fixed',\n top: marginXS,\n width: '100%',\n pointerEvents: 'none',\n zIndex: zIndexPopup\n }, _defineProperty(_Object$assign, \"\".concat(componentCls, \"-move-up\"), {\n animationFillMode: 'forwards'\n }), _defineProperty(_Object$assign, \"\\n \".concat(componentCls, \"-move-up-appear,\\n \").concat(componentCls, \"-move-up-enter\\n \"), {\n animationName: messageMoveIn,\n animationDuration: motionDurationSlow,\n animationPlayState: 'paused',\n animationTimingFunction: motionEaseInOutCirc\n }), _defineProperty(_Object$assign, \"\\n \".concat(componentCls, \"-move-up-appear\").concat(componentCls, \"-move-up-appear-active,\\n \").concat(componentCls, \"-move-up-enter\").concat(componentCls, \"-move-up-enter-active\\n \"), {\n animationPlayState: 'running'\n }), _defineProperty(_Object$assign, \"\".concat(componentCls, \"-move-up-leave\"), {\n animationName: messageMoveOut,\n animationDuration: motionDurationSlow,\n animationPlayState: 'paused',\n animationTimingFunction: motionEaseInOutCirc\n }), _defineProperty(_Object$assign, \"\".concat(componentCls, \"-move-up-leave\").concat(componentCls, \"-move-up-leave-active\"), {\n animationPlayState: 'running'\n }), _defineProperty(_Object$assign, '&-rtl', {\n direction: 'rtl',\n span: {\n direction: 'rtl'\n }\n }), _Object$assign))), // ============================ Notice ============================\n _defineProperty({}, componentCls, _defineProperty({}, noticeCls, Object.assign({}, noticeStyle))), // ============================= Pure =============================\n _defineProperty({}, \"\".concat(componentCls, \"-notice-pure-panel\"), Object.assign(Object.assign({}, noticeStyle), {\n padding: 0,\n textAlign: 'start'\n }))];\n};\n// ============================== Export ==============================\nexport default genComponentStyleHook('Message', function (token) {\n // Gen-style functions here\n var combinedToken = mergeToken(token, {\n height: 150\n });\n return [genMessageStyle(combinedToken)];\n}, function (token) {\n return {\n zIndexPopup: token.zIndexPopupBase + 10,\n contentBg: token.colorBgElevated,\n contentPadding: \"\".concat((token.controlHeightLG - token.fontSize * token.lineHeight) / 2, \"px \").concat(token.paddingSM, \"px\")\n };\n}, {\n clientOnly: true\n});","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport CheckCircleFilled from \"@ant-design/icons/es/icons/CheckCircleFilled\";\nimport CloseCircleFilled from \"@ant-design/icons/es/icons/CloseCircleFilled\";\nimport ExclamationCircleFilled from \"@ant-design/icons/es/icons/ExclamationCircleFilled\";\nimport InfoCircleFilled from \"@ant-design/icons/es/icons/InfoCircleFilled\";\nimport LoadingOutlined from \"@ant-design/icons/es/icons/LoadingOutlined\";\nimport classNames from 'classnames';\nimport { Notice } from 'rc-notification';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport useStyle from './style';\nexport var TypeIcon = {\n info: /*#__PURE__*/React.createElement(InfoCircleFilled, null),\n success: /*#__PURE__*/React.createElement(CheckCircleFilled, null),\n error: /*#__PURE__*/React.createElement(CloseCircleFilled, null),\n warning: /*#__PURE__*/React.createElement(ExclamationCircleFilled, null),\n loading: /*#__PURE__*/React.createElement(LoadingOutlined, null)\n};\nexport var PureContent = function PureContent(_ref) {\n var prefixCls = _ref.prefixCls,\n type = _ref.type,\n icon = _ref.icon,\n children = _ref.children;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-custom-content\"), \"\".concat(prefixCls, \"-\").concat(type))\n }, icon || TypeIcon[type], /*#__PURE__*/React.createElement(\"span\", null, children));\n};\n/** @private Internal Component. Do not use in your production. */\nvar PurePanel = function PurePanel(props) {\n var staticPrefixCls = props.prefixCls,\n className = props.className,\n type = props.type,\n icon = props.icon,\n content = props.content,\n restProps = __rest(props, [\"prefixCls\", \"className\", \"type\", \"icon\", \"content\"]);\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls;\n var prefixCls = staticPrefixCls || getPrefixCls('message');\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n hashId = _useStyle2[1];\n return /*#__PURE__*/React.createElement(Notice, Object.assign({}, restProps, {\n prefixCls: prefixCls,\n className: classNames(className, hashId, \"\".concat(prefixCls, \"-notice-pure-panel\")),\n eventKey: \"pure\",\n duration: null,\n content: /*#__PURE__*/React.createElement(PureContent, {\n prefixCls: prefixCls,\n type: type,\n icon: icon\n }, content)\n }));\n};\nexport default PurePanel;","export function getMotion(prefixCls, transitionName) {\n return {\n motionName: transitionName !== null && transitionName !== void 0 ? transitionName : \"\".concat(prefixCls, \"-move-up\")\n };\n}\n/** Wrap message open with promise like function */\nexport function wrapPromiseFn(openFn) {\n var closeFn;\n var closePromise = new Promise(function (resolve) {\n closeFn = openFn(function () {\n resolve(true);\n });\n });\n var result = function result() {\n closeFn === null || closeFn === void 0 ? void 0 : closeFn();\n };\n result.then = function (filled, rejected) {\n return closePromise.then(filled, rejected);\n };\n result.promise = closePromise;\n return result;\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport CloseOutlined from \"@ant-design/icons/es/icons/CloseOutlined\";\nimport classNames from 'classnames';\nimport { useNotification as useRcNotification } from 'rc-notification';\nimport * as React from 'react';\nimport warning from '../_util/warning';\nimport { ConfigContext } from '../config-provider';\nimport { PureContent } from './PurePanel';\nimport useStyle from './style';\nimport { getMotion, wrapPromiseFn } from './util';\nvar DEFAULT_OFFSET = 8;\nvar DEFAULT_DURATION = 3;\nvar Holder = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var top = props.top,\n staticPrefixCls = props.prefixCls,\n staticGetContainer = props.getContainer,\n maxCount = props.maxCount,\n _props$duration = props.duration,\n duration = _props$duration === void 0 ? DEFAULT_DURATION : _props$duration,\n rtl = props.rtl,\n transitionName = props.transitionName,\n onAllRemoved = props.onAllRemoved;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n getPopupContainer = _React$useContext.getPopupContainer,\n message = _React$useContext.message;\n var prefixCls = staticPrefixCls || getPrefixCls('message');\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n hashId = _useStyle2[1];\n // =============================== Style ===============================\n var getStyle = function getStyle() {\n return {\n left: '50%',\n transform: 'translateX(-50%)',\n top: top !== null && top !== void 0 ? top : DEFAULT_OFFSET\n };\n };\n var getClassName = function getClassName() {\n return classNames(hashId, _defineProperty({}, \"\".concat(prefixCls, \"-rtl\"), rtl));\n };\n // ============================== Motion ===============================\n var getNotificationMotion = function getNotificationMotion() {\n return getMotion(prefixCls, transitionName);\n };\n // ============================ Close Icon =============================\n var mergedCloseIcon = /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-close-x\")\n }, /*#__PURE__*/React.createElement(CloseOutlined, {\n className: \"\".concat(prefixCls, \"-close-icon\")\n }));\n // ============================== Origin ===============================\n var _useRcNotification = useRcNotification({\n prefixCls: prefixCls,\n style: getStyle,\n className: getClassName,\n motion: getNotificationMotion,\n closable: false,\n closeIcon: mergedCloseIcon,\n duration: duration,\n getContainer: function getContainer() {\n return (staticGetContainer === null || staticGetContainer === void 0 ? void 0 : staticGetContainer()) || (getPopupContainer === null || getPopupContainer === void 0 ? void 0 : getPopupContainer()) || document.body;\n },\n maxCount: maxCount,\n onAllRemoved: onAllRemoved\n }),\n _useRcNotification2 = _slicedToArray(_useRcNotification, 2),\n api = _useRcNotification2[0],\n holder = _useRcNotification2[1];\n // ================================ Ref ================================\n React.useImperativeHandle(ref, function () {\n return Object.assign(Object.assign({}, api), {\n prefixCls: prefixCls,\n hashId: hashId,\n message: message\n });\n });\n return holder;\n});\n// ==============================================================================\n// == Hook ==\n// ==============================================================================\nvar keyIndex = 0;\nexport function useInternalMessage(messageConfig) {\n var holderRef = React.useRef(null);\n // ================================ API ================================\n var wrapAPI = React.useMemo(function () {\n // Wrap with notification content\n // >>> close\n var close = function close(key) {\n var _a;\n (_a = holderRef.current) === null || _a === void 0 ? void 0 : _a.close(key);\n };\n // >>> Open\n var open = function open(config) {\n if (!holderRef.current) {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Message', 'You are calling notice in render which will break in React 18 concurrent mode. Please trigger in effect instead.') : void 0;\n var fakeResult = function fakeResult() {};\n fakeResult.then = function () {};\n return fakeResult;\n }\n var _holderRef$current = holderRef.current,\n originOpen = _holderRef$current.open,\n prefixCls = _holderRef$current.prefixCls,\n hashId = _holderRef$current.hashId,\n message = _holderRef$current.message;\n var noticePrefixCls = \"\".concat(prefixCls, \"-notice\");\n var content = config.content,\n icon = config.icon,\n type = config.type,\n key = config.key,\n className = config.className,\n style = config.style,\n _onClose = config.onClose,\n restConfig = __rest(config, [\"content\", \"icon\", \"type\", \"key\", \"className\", \"style\", \"onClose\"]);\n var mergedKey = key;\n if (mergedKey === undefined || mergedKey === null) {\n keyIndex += 1;\n mergedKey = \"antd-message-\".concat(keyIndex);\n }\n return wrapPromiseFn(function (resolve) {\n originOpen(Object.assign(Object.assign({}, restConfig), {\n key: mergedKey,\n content: /*#__PURE__*/React.createElement(PureContent, {\n prefixCls: prefixCls,\n type: type,\n icon: icon\n }, content),\n placement: 'top',\n className: classNames(type && \"\".concat(noticePrefixCls, \"-\").concat(type), hashId, className, message === null || message === void 0 ? void 0 : message.className),\n style: Object.assign(Object.assign({}, message === null || message === void 0 ? void 0 : message.style), style),\n onClose: function onClose() {\n _onClose === null || _onClose === void 0 ? void 0 : _onClose();\n resolve();\n }\n }));\n // Return close function\n return function () {\n close(mergedKey);\n };\n });\n };\n // >>> destroy\n var destroy = function destroy(key) {\n var _a;\n if (key !== undefined) {\n close(key);\n } else {\n (_a = holderRef.current) === null || _a === void 0 ? void 0 : _a.destroy();\n }\n };\n var clone = {\n open: open,\n destroy: destroy\n };\n var keys = ['info', 'success', 'warning', 'error', 'loading'];\n keys.forEach(function (type) {\n var typeOpen = function typeOpen(jointContent, duration, onClose) {\n var config;\n if (jointContent && typeof jointContent === 'object' && 'content' in jointContent) {\n config = jointContent;\n } else {\n config = {\n content: jointContent\n };\n }\n // Params\n var mergedDuration;\n var mergedOnClose;\n if (typeof duration === 'function') {\n mergedOnClose = duration;\n } else {\n mergedDuration = duration;\n mergedOnClose = onClose;\n }\n var mergedConfig = Object.assign(Object.assign({\n onClose: mergedOnClose,\n duration: mergedDuration\n }, config), {\n type: type\n });\n return open(mergedConfig);\n };\n clone[type] = typeOpen;\n });\n return clone;\n }, []);\n // ============================== Return ===============================\n return [wrapAPI, /*#__PURE__*/React.createElement(Holder, Object.assign({\n key: \"message-holder\"\n }, messageConfig, {\n ref: holderRef\n }))];\n}\nexport default function useMessage(messageConfig) {\n return useInternalMessage(messageConfig);\n}","'use client';\n\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport { render } from \"rc-util/es/React/render\";\nimport * as React from 'react';\nimport ConfigProvider, { globalConfig, warnContext } from '../config-provider';\nimport PurePanel from './PurePanel';\nimport useMessage, { useInternalMessage } from './useMessage';\nimport { wrapPromiseFn } from './util';\nvar message = null;\nvar act = function act(callback) {\n return callback();\n};\nvar taskQueue = [];\nvar defaultGlobalConfig = {};\nfunction getGlobalContext() {\n var _defaultGlobalConfig = defaultGlobalConfig,\n globalPrefixCls = _defaultGlobalConfig.prefixCls,\n globalGetContainer = _defaultGlobalConfig.getContainer,\n duration = _defaultGlobalConfig.duration,\n rtl = _defaultGlobalConfig.rtl,\n maxCount = _defaultGlobalConfig.maxCount,\n top = _defaultGlobalConfig.top;\n var mergedPrefixCls = globalPrefixCls !== null && globalPrefixCls !== void 0 ? globalPrefixCls : globalConfig().getPrefixCls('message');\n var mergedContainer = (globalGetContainer === null || globalGetContainer === void 0 ? void 0 : globalGetContainer()) || document.body;\n return {\n prefixCls: mergedPrefixCls,\n container: mergedContainer,\n duration: duration,\n rtl: rtl,\n maxCount: maxCount,\n top: top\n };\n}\nvar GlobalHolder = /*#__PURE__*/React.forwardRef(function (_, ref) {\n var initializeMessageConfig = function initializeMessageConfig() {\n var _getGlobalContext = getGlobalContext(),\n prefixCls = _getGlobalContext.prefixCls,\n container = _getGlobalContext.container,\n maxCount = _getGlobalContext.maxCount,\n duration = _getGlobalContext.duration,\n rtl = _getGlobalContext.rtl,\n top = _getGlobalContext.top;\n return {\n prefixCls: prefixCls,\n getContainer: function getContainer() {\n return container;\n },\n maxCount: maxCount,\n duration: duration,\n rtl: rtl,\n top: top\n };\n };\n var _React$useState = React.useState(initializeMessageConfig),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n messageConfig = _React$useState2[0],\n setMessageConfig = _React$useState2[1];\n var _useInternalMessage = useInternalMessage(messageConfig),\n _useInternalMessage2 = _slicedToArray(_useInternalMessage, 2),\n api = _useInternalMessage2[0],\n holder = _useInternalMessage2[1];\n var global = globalConfig();\n var rootPrefixCls = global.getRootPrefixCls();\n var rootIconPrefixCls = global.getIconPrefixCls();\n var theme = global.getTheme();\n var sync = function sync() {\n setMessageConfig(initializeMessageConfig);\n };\n React.useEffect(sync, []);\n React.useImperativeHandle(ref, function () {\n var instance = Object.assign({}, api);\n Object.keys(instance).forEach(function (method) {\n instance[method] = function () {\n sync();\n return api[method].apply(api, arguments);\n };\n });\n return {\n instance: instance,\n sync: sync\n };\n });\n return /*#__PURE__*/React.createElement(ConfigProvider, {\n prefixCls: rootPrefixCls,\n iconPrefixCls: rootIconPrefixCls,\n theme: theme\n }, holder);\n});\nfunction flushNotice() {\n if (!message) {\n var holderFragment = document.createDocumentFragment();\n var newMessage = {\n fragment: holderFragment\n };\n message = newMessage;\n // Delay render to avoid sync issue\n act(function () {\n render( /*#__PURE__*/React.createElement(GlobalHolder, {\n ref: function ref(node) {\n var _ref = node || {},\n instance = _ref.instance,\n sync = _ref.sync;\n // React 18 test env will throw if call immediately in ref\n Promise.resolve().then(function () {\n if (!newMessage.instance && instance) {\n newMessage.instance = instance;\n newMessage.sync = sync;\n flushNotice();\n }\n });\n }\n }), holderFragment);\n });\n return;\n }\n // Notification not ready\n if (!message.instance) {\n return;\n }\n // >>> Execute task\n taskQueue.forEach(function (task) {\n var type = task.type,\n skipped = task.skipped;\n // Only `skipped` when user call notice but cancel it immediately\n // and instance not ready\n if (!skipped) {\n switch (type) {\n case 'open':\n {\n act(function () {\n var closeFn = message.instance.open(Object.assign(Object.assign({}, defaultGlobalConfig), task.config));\n closeFn === null || closeFn === void 0 ? void 0 : closeFn.then(task.resolve);\n task.setCloseFn(closeFn);\n });\n break;\n }\n case 'destroy':\n act(function () {\n message === null || message === void 0 ? void 0 : message.instance.destroy(task.key);\n });\n break;\n // Other type open\n default:\n {\n act(function () {\n var _message$instance;\n var closeFn = (_message$instance = message.instance)[type].apply(_message$instance, _toConsumableArray(task.args));\n closeFn === null || closeFn === void 0 ? void 0 : closeFn.then(task.resolve);\n task.setCloseFn(closeFn);\n });\n }\n }\n }\n });\n // Clean up\n taskQueue = [];\n}\n// ==============================================================================\n// == Export ==\n// ==============================================================================\nfunction setMessageGlobalConfig(config) {\n defaultGlobalConfig = Object.assign(Object.assign({}, defaultGlobalConfig), config);\n // Trigger sync for it\n act(function () {\n var _a;\n (_a = message === null || message === void 0 ? void 0 : message.sync) === null || _a === void 0 ? void 0 : _a.call(message);\n });\n}\nfunction open(config) {\n var result = wrapPromiseFn(function (resolve) {\n var closeFn;\n var task = {\n type: 'open',\n config: config,\n resolve: resolve,\n setCloseFn: function setCloseFn(fn) {\n closeFn = fn;\n }\n };\n taskQueue.push(task);\n return function () {\n if (closeFn) {\n act(function () {\n closeFn();\n });\n } else {\n task.skipped = true;\n }\n };\n });\n flushNotice();\n return result;\n}\nfunction typeOpen(type, args) {\n // Warning if exist theme\n if (process.env.NODE_ENV !== 'production') {\n warnContext('message');\n }\n var result = wrapPromiseFn(function (resolve) {\n var closeFn;\n var task = {\n type: type,\n args: args,\n resolve: resolve,\n setCloseFn: function setCloseFn(fn) {\n closeFn = fn;\n }\n };\n taskQueue.push(task);\n return function () {\n if (closeFn) {\n act(function () {\n closeFn();\n });\n } else {\n task.skipped = true;\n }\n };\n });\n flushNotice();\n return result;\n}\nfunction destroy(key) {\n taskQueue.push({\n type: 'destroy',\n key: key\n });\n flushNotice();\n}\nvar methods = ['success', 'info', 'warning', 'error', 'loading'];\nvar baseStaticMethods = {\n open: open,\n destroy: destroy,\n config: setMessageGlobalConfig,\n useMessage: useMessage,\n _InternalPanelDoNotUseOrYouWillBeFired: PurePanel\n};\nvar staticMethods = baseStaticMethods;\nmethods.forEach(function (type) {\n staticMethods[type] = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return typeOpen(type, args);\n };\n});\n// ==============================================================================\n// == Test ==\n// ==============================================================================\nvar noop = function noop() {};\n/** @internal Only Work in test env */\n// eslint-disable-next-line import/no-mutable-exports\nexport var actWrapper = noop;\nif (process.env.NODE_ENV === 'test') {\n actWrapper = function actWrapper(wrapper) {\n act = wrapper;\n };\n}\n/** @internal Only Work in test env */\n// eslint-disable-next-line import/no-mutable-exports\nexport var actDestroy = noop;\nif (process.env.NODE_ENV === 'test') {\n actDestroy = function actDestroy() {\n message = null;\n };\n}\nexport default staticMethods;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nvar Element = function Element(props) {\n var _classNames, _classNames2;\n var prefixCls = props.prefixCls,\n className = props.className,\n style = props.style,\n size = props.size,\n shape = props.shape;\n var sizeCls = classNames((_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-lg\"), size === 'large'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-sm\"), size === 'small'), _classNames));\n var shapeCls = classNames((_classNames2 = {}, _defineProperty(_classNames2, \"\".concat(prefixCls, \"-circle\"), shape === 'circle'), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-square\"), shape === 'square'), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-round\"), shape === 'round'), _classNames2));\n var sizeStyle = React.useMemo(function () {\n return typeof size === 'number' ? {\n width: size,\n height: size,\n lineHeight: \"\".concat(size, \"px\")\n } : {};\n }, [size]);\n return /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(prefixCls, sizeCls, shapeCls, className),\n style: Object.assign(Object.assign({}, sizeStyle), style)\n });\n};\nexport default Element;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { Keyframes } from '@ant-design/cssinjs';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nvar skeletonClsLoading = new Keyframes(\"ant-skeleton-loading\", {\n '0%': {\n backgroundPosition: '100% 50%'\n },\n '100%': {\n backgroundPosition: '0 50%'\n }\n});\nvar genSkeletonElementCommonSize = function genSkeletonElementCommonSize(size) {\n return {\n height: size,\n lineHeight: \"\".concat(size, \"px\")\n };\n};\nvar genSkeletonElementAvatarSize = function genSkeletonElementAvatarSize(size) {\n return Object.assign({\n width: size\n }, genSkeletonElementCommonSize(size));\n};\nvar genSkeletonColor = function genSkeletonColor(token) {\n return {\n background: token.skeletonLoadingBackground,\n backgroundSize: '400% 100%',\n animationName: skeletonClsLoading,\n animationDuration: token.skeletonLoadingMotionDuration,\n animationTimingFunction: 'ease',\n animationIterationCount: 'infinite'\n };\n};\nvar genSkeletonElementInputSize = function genSkeletonElementInputSize(size) {\n return Object.assign({\n width: size * 5,\n minWidth: size * 5\n }, genSkeletonElementCommonSize(size));\n};\nvar genSkeletonElementAvatar = function genSkeletonElementAvatar(token) {\n var _ref;\n var skeletonAvatarCls = token.skeletonAvatarCls,\n gradientFromColor = token.gradientFromColor,\n controlHeight = token.controlHeight,\n controlHeightLG = token.controlHeightLG,\n controlHeightSM = token.controlHeightSM;\n return _ref = {}, _defineProperty(_ref, \"\".concat(skeletonAvatarCls), Object.assign({\n display: 'inline-block',\n verticalAlign: 'top',\n background: gradientFromColor\n }, genSkeletonElementAvatarSize(controlHeight))), _defineProperty(_ref, \"\".concat(skeletonAvatarCls).concat(skeletonAvatarCls, \"-circle\"), {\n borderRadius: '50%'\n }), _defineProperty(_ref, \"\".concat(skeletonAvatarCls).concat(skeletonAvatarCls, \"-lg\"), Object.assign({}, genSkeletonElementAvatarSize(controlHeightLG))), _defineProperty(_ref, \"\".concat(skeletonAvatarCls).concat(skeletonAvatarCls, \"-sm\"), Object.assign({}, genSkeletonElementAvatarSize(controlHeightSM))), _ref;\n};\nvar genSkeletonElementInput = function genSkeletonElementInput(token) {\n var _ref2;\n var controlHeight = token.controlHeight,\n borderRadiusSM = token.borderRadiusSM,\n skeletonInputCls = token.skeletonInputCls,\n controlHeightLG = token.controlHeightLG,\n controlHeightSM = token.controlHeightSM,\n gradientFromColor = token.gradientFromColor;\n return _ref2 = {}, _defineProperty(_ref2, \"\".concat(skeletonInputCls), Object.assign({\n display: 'inline-block',\n verticalAlign: 'top',\n background: gradientFromColor,\n borderRadius: borderRadiusSM\n }, genSkeletonElementInputSize(controlHeight))), _defineProperty(_ref2, \"\".concat(skeletonInputCls, \"-lg\"), Object.assign({}, genSkeletonElementInputSize(controlHeightLG))), _defineProperty(_ref2, \"\".concat(skeletonInputCls, \"-sm\"), Object.assign({}, genSkeletonElementInputSize(controlHeightSM))), _ref2;\n};\nvar genSkeletonElementImageSize = function genSkeletonElementImageSize(size) {\n return Object.assign({\n width: size\n }, genSkeletonElementCommonSize(size));\n};\nvar genSkeletonElementImage = function genSkeletonElementImage(token) {\n var _Object$assign, _ref3;\n var skeletonImageCls = token.skeletonImageCls,\n imageSizeBase = token.imageSizeBase,\n gradientFromColor = token.gradientFromColor,\n borderRadiusSM = token.borderRadiusSM;\n return _ref3 = {}, _defineProperty(_ref3, \"\".concat(skeletonImageCls), Object.assign(Object.assign({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n verticalAlign: 'top',\n background: gradientFromColor,\n borderRadius: borderRadiusSM\n }, genSkeletonElementImageSize(imageSizeBase * 2)), (_Object$assign = {}, _defineProperty(_Object$assign, \"\".concat(skeletonImageCls, \"-path\"), {\n fill: '#bfbfbf'\n }), _defineProperty(_Object$assign, \"\".concat(skeletonImageCls, \"-svg\"), Object.assign(Object.assign({}, genSkeletonElementImageSize(imageSizeBase)), {\n maxWidth: imageSizeBase * 4,\n maxHeight: imageSizeBase * 4\n })), _defineProperty(_Object$assign, \"\".concat(skeletonImageCls, \"-svg\").concat(skeletonImageCls, \"-svg-circle\"), {\n borderRadius: '50%'\n }), _Object$assign))), _defineProperty(_ref3, \"\".concat(skeletonImageCls).concat(skeletonImageCls, \"-circle\"), {\n borderRadius: '50%'\n }), _ref3;\n};\nvar genSkeletonElementButtonShape = function genSkeletonElementButtonShape(token, size, buttonCls) {\n var _ref4;\n var skeletonButtonCls = token.skeletonButtonCls;\n return _ref4 = {}, _defineProperty(_ref4, \"\".concat(buttonCls).concat(skeletonButtonCls, \"-circle\"), {\n width: size,\n minWidth: size,\n borderRadius: '50%'\n }), _defineProperty(_ref4, \"\".concat(buttonCls).concat(skeletonButtonCls, \"-round\"), {\n borderRadius: size\n }), _ref4;\n};\nvar genSkeletonElementButtonSize = function genSkeletonElementButtonSize(size) {\n return Object.assign({\n width: size * 2,\n minWidth: size * 2\n }, genSkeletonElementCommonSize(size));\n};\nvar genSkeletonElementButton = function genSkeletonElementButton(token) {\n var borderRadiusSM = token.borderRadiusSM,\n skeletonButtonCls = token.skeletonButtonCls,\n controlHeight = token.controlHeight,\n controlHeightLG = token.controlHeightLG,\n controlHeightSM = token.controlHeightSM,\n gradientFromColor = token.gradientFromColor;\n return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(_defineProperty({}, \"\".concat(skeletonButtonCls), Object.assign({\n display: 'inline-block',\n verticalAlign: 'top',\n background: gradientFromColor,\n borderRadius: borderRadiusSM,\n width: controlHeight * 2,\n minWidth: controlHeight * 2\n }, genSkeletonElementButtonSize(controlHeight))), genSkeletonElementButtonShape(token, controlHeight, skeletonButtonCls)), _defineProperty({}, \"\".concat(skeletonButtonCls, \"-lg\"), Object.assign({}, genSkeletonElementButtonSize(controlHeightLG)))), genSkeletonElementButtonShape(token, controlHeightLG, \"\".concat(skeletonButtonCls, \"-lg\"))), _defineProperty({}, \"\".concat(skeletonButtonCls, \"-sm\"), Object.assign({}, genSkeletonElementButtonSize(controlHeightSM)))), genSkeletonElementButtonShape(token, controlHeightSM, \"\".concat(skeletonButtonCls, \"-sm\")));\n};\n// =============================== Base ===============================\nvar genBaseStyle = function genBaseStyle(token) {\n var _$concat, _$concat3, _$concat4, _$concat$concat2, _ref5;\n var componentCls = token.componentCls,\n skeletonAvatarCls = token.skeletonAvatarCls,\n skeletonTitleCls = token.skeletonTitleCls,\n skeletonParagraphCls = token.skeletonParagraphCls,\n skeletonButtonCls = token.skeletonButtonCls,\n skeletonInputCls = token.skeletonInputCls,\n skeletonImageCls = token.skeletonImageCls,\n controlHeight = token.controlHeight,\n controlHeightLG = token.controlHeightLG,\n controlHeightSM = token.controlHeightSM,\n gradientFromColor = token.gradientFromColor,\n padding = token.padding,\n marginSM = token.marginSM,\n borderRadius = token.borderRadius,\n titleHeight = token.titleHeight,\n blockRadius = token.blockRadius,\n paragraphLiHeight = token.paragraphLiHeight,\n controlHeightXS = token.controlHeightXS,\n paragraphMarginTop = token.paragraphMarginTop;\n return _ref5 = {}, _defineProperty(_ref5, \"\".concat(componentCls), (_$concat4 = {\n display: 'table',\n width: '100%'\n }, _defineProperty(_$concat4, \"\".concat(componentCls, \"-header\"), (_$concat = {\n display: 'table-cell',\n paddingInlineEnd: padding,\n verticalAlign: 'top'\n }, _defineProperty(_$concat, \"\".concat(skeletonAvatarCls), Object.assign({\n display: 'inline-block',\n verticalAlign: 'top',\n background: gradientFromColor\n }, genSkeletonElementAvatarSize(controlHeight))), _defineProperty(_$concat, \"\".concat(skeletonAvatarCls, \"-circle\"), {\n borderRadius: '50%'\n }), _defineProperty(_$concat, \"\".concat(skeletonAvatarCls, \"-lg\"), Object.assign({}, genSkeletonElementAvatarSize(controlHeightLG))), _defineProperty(_$concat, \"\".concat(skeletonAvatarCls, \"-sm\"), Object.assign({}, genSkeletonElementAvatarSize(controlHeightSM))), _$concat)), _defineProperty(_$concat4, \"\".concat(componentCls, \"-content\"), (_$concat3 = {\n display: 'table-cell',\n width: '100%',\n verticalAlign: 'top'\n }, _defineProperty(_$concat3, \"\".concat(skeletonTitleCls), _defineProperty({\n width: '100%',\n height: titleHeight,\n background: gradientFromColor,\n borderRadius: blockRadius\n }, \"+ \".concat(skeletonParagraphCls), {\n marginBlockStart: controlHeightSM\n })), _defineProperty(_$concat3, \"\".concat(skeletonParagraphCls), {\n padding: 0,\n '> li': {\n width: '100%',\n height: paragraphLiHeight,\n listStyle: 'none',\n background: gradientFromColor,\n borderRadius: blockRadius,\n '+ li': {\n marginBlockStart: controlHeightXS\n }\n }\n }), _defineProperty(_$concat3, \"\".concat(skeletonParagraphCls, \"> li:last-child:not(:first-child):not(:nth-child(2))\"), {\n width: '61%'\n }), _$concat3)), _defineProperty(_$concat4, \"&-round \".concat(componentCls, \"-content\"), _defineProperty({}, \"\".concat(skeletonTitleCls, \", \").concat(skeletonParagraphCls, \" > li\"), {\n borderRadius: borderRadius\n })), _$concat4)), _defineProperty(_ref5, \"\".concat(componentCls, \"-with-avatar \").concat(componentCls, \"-content\"), _defineProperty({}, \"\".concat(skeletonTitleCls), _defineProperty({\n marginBlockStart: marginSM\n }, \"+ \".concat(skeletonParagraphCls), {\n marginBlockStart: paragraphMarginTop\n }))), _defineProperty(_ref5, \"\".concat(componentCls).concat(componentCls, \"-element\"), Object.assign(Object.assign(Object.assign(Object.assign({\n display: 'inline-block',\n width: 'auto'\n }, genSkeletonElementButton(token)), genSkeletonElementAvatar(token)), genSkeletonElementInput(token)), genSkeletonElementImage(token))), _defineProperty(_ref5, \"\".concat(componentCls).concat(componentCls, \"-block\"), (_$concat$concat2 = {\n width: '100%'\n }, _defineProperty(_$concat$concat2, \"\".concat(skeletonButtonCls), {\n width: '100%'\n }), _defineProperty(_$concat$concat2, \"\".concat(skeletonInputCls), {\n width: '100%'\n }), _$concat$concat2)), _defineProperty(_ref5, \"\".concat(componentCls).concat(componentCls, \"-active\"), _defineProperty({}, \"\\n \".concat(skeletonTitleCls, \",\\n \").concat(skeletonParagraphCls, \" > li,\\n \").concat(skeletonAvatarCls, \",\\n \").concat(skeletonButtonCls, \",\\n \").concat(skeletonInputCls, \",\\n \").concat(skeletonImageCls, \"\\n \"), Object.assign({}, genSkeletonColor(token)))), _ref5;\n};\n// ============================== Export ==============================\nexport default genComponentStyleHook('Skeleton', function (token) {\n var componentCls = token.componentCls;\n var skeletonToken = mergeToken(token, {\n skeletonAvatarCls: \"\".concat(componentCls, \"-avatar\"),\n skeletonTitleCls: \"\".concat(componentCls, \"-title\"),\n skeletonParagraphCls: \"\".concat(componentCls, \"-paragraph\"),\n skeletonButtonCls: \"\".concat(componentCls, \"-button\"),\n skeletonInputCls: \"\".concat(componentCls, \"-input\"),\n skeletonImageCls: \"\".concat(componentCls, \"-image\"),\n imageSizeBase: token.controlHeight * 1.5,\n borderRadius: 100,\n skeletonLoadingBackground: \"linear-gradient(90deg, \".concat(token.gradientFromColor, \" 25%, \").concat(token.gradientToColor, \" 37%, \").concat(token.gradientFromColor, \" 63%)\"),\n skeletonLoadingMotionDuration: '1.4s'\n });\n return [genBaseStyle(skeletonToken)];\n}, function (token) {\n var colorFillContent = token.colorFillContent,\n colorFill = token.colorFill;\n var gradientFromColor = colorFillContent;\n var gradientToColor = colorFill;\n return {\n color: gradientFromColor,\n colorGradientEnd: gradientToColor,\n gradientFromColor: gradientFromColor,\n gradientToColor: gradientToColor,\n titleHeight: token.controlHeight / 2,\n blockRadius: token.borderRadiusSM,\n paragraphMarginTop: token.marginLG + token.marginXXS,\n paragraphLiHeight: token.controlHeight / 2\n };\n}, {\n deprecatedTokens: [['color', 'gradientFromColor'], ['colorGradientEnd', 'gradientToColor']]\n});","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport Element from './Element';\nimport useStyle from './style';\nvar SkeletonAvatar = function SkeletonAvatar(props) {\n var customizePrefixCls = props.prefixCls,\n className = props.className,\n rootClassName = props.rootClassName,\n active = props.active,\n _props$shape = props.shape,\n shape = _props$shape === void 0 ? 'circle' : _props$shape,\n _props$size = props.size,\n size = _props$size === void 0 ? 'default' : _props$size;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls;\n var prefixCls = getPrefixCls('skeleton', customizePrefixCls);\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n var otherProps = omit(props, ['prefixCls', 'className']);\n var cls = classNames(prefixCls, \"\".concat(prefixCls, \"-element\"), _defineProperty({}, \"\".concat(prefixCls, \"-active\"), active), className, rootClassName, hashId);\n return wrapSSR( /*#__PURE__*/React.createElement(\"div\", {\n className: cls\n }, /*#__PURE__*/React.createElement(Element, Object.assign({\n prefixCls: \"\".concat(prefixCls, \"-avatar\"),\n shape: shape,\n size: size\n }, otherProps))));\n};\nexport default SkeletonAvatar;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport Element from './Element';\nimport useStyle from './style';\nvar SkeletonButton = function SkeletonButton(props) {\n var _classNames;\n var customizePrefixCls = props.prefixCls,\n className = props.className,\n rootClassName = props.rootClassName,\n active = props.active,\n _props$block = props.block,\n block = _props$block === void 0 ? false : _props$block,\n _props$size = props.size,\n size = _props$size === void 0 ? 'default' : _props$size;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls;\n var prefixCls = getPrefixCls('skeleton', customizePrefixCls);\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n var otherProps = omit(props, ['prefixCls']);\n var cls = classNames(prefixCls, \"\".concat(prefixCls, \"-element\"), (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-active\"), active), _defineProperty(_classNames, \"\".concat(prefixCls, \"-block\"), block), _classNames), className, rootClassName, hashId);\n return wrapSSR( /*#__PURE__*/React.createElement(\"div\", {\n className: cls\n }, /*#__PURE__*/React.createElement(Element, Object.assign({\n prefixCls: \"\".concat(prefixCls, \"-button\"),\n size: size\n }, otherProps))));\n};\nexport default SkeletonButton;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport useStyle from './style';\nvar path = 'M365.714286 329.142857q0 45.714286-32.036571 77.677714t-77.677714 32.036571-77.677714-32.036571-32.036571-77.677714 32.036571-77.677714 77.677714-32.036571 77.677714 32.036571 32.036571 77.677714zM950.857143 548.571429l0 256-804.571429 0 0-109.714286 182.857143-182.857143 91.428571 91.428571 292.571429-292.571429zM1005.714286 146.285714l-914.285714 0q-7.460571 0-12.873143 5.412571t-5.412571 12.873143l0 694.857143q0 7.460571 5.412571 12.873143t12.873143 5.412571l914.285714 0q7.460571 0 12.873143-5.412571t5.412571-12.873143l0-694.857143q0-7.460571-5.412571-12.873143t-12.873143-5.412571zM1097.142857 164.571429l0 694.857143q0 37.741714-26.843429 64.585143t-64.585143 26.843429l-914.285714 0q-37.741714 0-64.585143-26.843429t-26.843429-64.585143l0-694.857143q0-37.741714 26.843429-64.585143t64.585143-26.843429l914.285714 0q37.741714 0 64.585143 26.843429t26.843429 64.585143z';\nvar SkeletonImage = function SkeletonImage(props) {\n var customizePrefixCls = props.prefixCls,\n className = props.className,\n rootClassName = props.rootClassName,\n style = props.style,\n active = props.active;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls;\n var prefixCls = getPrefixCls('skeleton', customizePrefixCls);\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n var cls = classNames(prefixCls, \"\".concat(prefixCls, \"-element\"), _defineProperty({}, \"\".concat(prefixCls, \"-active\"), active), className, rootClassName, hashId);\n return wrapSSR( /*#__PURE__*/React.createElement(\"div\", {\n className: cls\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-image\"), className),\n style: style\n }, /*#__PURE__*/React.createElement(\"svg\", {\n viewBox: \"0 0 1098 1024\",\n xmlns: \"http://www.w3.org/2000/svg\",\n className: \"\".concat(prefixCls, \"-image-svg\")\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: path,\n className: \"\".concat(prefixCls, \"-image-path\")\n })))));\n};\nexport default SkeletonImage;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport Element from './Element';\nimport useStyle from './style';\nvar SkeletonInput = function SkeletonInput(props) {\n var _classNames;\n var customizePrefixCls = props.prefixCls,\n className = props.className,\n rootClassName = props.rootClassName,\n active = props.active,\n block = props.block,\n _props$size = props.size,\n size = _props$size === void 0 ? 'default' : _props$size;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls;\n var prefixCls = getPrefixCls('skeleton', customizePrefixCls);\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n var otherProps = omit(props, ['prefixCls']);\n var cls = classNames(prefixCls, \"\".concat(prefixCls, \"-element\"), (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-active\"), active), _defineProperty(_classNames, \"\".concat(prefixCls, \"-block\"), block), _classNames), className, rootClassName, hashId);\n return wrapSSR( /*#__PURE__*/React.createElement(\"div\", {\n className: cls\n }, /*#__PURE__*/React.createElement(Element, Object.assign({\n prefixCls: \"\".concat(prefixCls, \"-input\"),\n size: size\n }, otherProps))));\n};\nexport default SkeletonInput;","// This icon file is generated automatically.\nvar DotChartOutlined = {\n \"icon\": {\n \"tag\": \"svg\",\n \"attrs\": {\n \"viewBox\": \"64 64 896 896\",\n \"focusable\": \"false\"\n },\n \"children\": [{\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M888 792H200V168c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h752c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM288 604a64 64 0 10128 0 64 64 0 10-128 0zm118-224a48 48 0 1096 0 48 48 0 10-96 0zm158 228a96 96 0 10192 0 96 96 0 10-192 0zm148-314a56 56 0 10112 0 56 56 0 10-112 0z\"\n }\n }]\n },\n \"name\": \"dot-chart\",\n \"theme\": \"outlined\"\n};\nexport default DotChartOutlined;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport DotChartOutlinedSvg from \"@ant-design/icons-svg/es/asn/DotChartOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar DotChartOutlined = function DotChartOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: DotChartOutlinedSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n DotChartOutlined.displayName = 'DotChartOutlined';\n}\nexport default /*#__PURE__*/React.forwardRef(DotChartOutlined);","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport DotChartOutlined from \"@ant-design/icons/es/icons/DotChartOutlined\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport useStyle from './style';\nvar SkeletonNode = function SkeletonNode(props) {\n var customizePrefixCls = props.prefixCls,\n className = props.className,\n rootClassName = props.rootClassName,\n style = props.style,\n active = props.active,\n children = props.children;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls;\n var prefixCls = getPrefixCls('skeleton', customizePrefixCls);\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n var cls = classNames(prefixCls, \"\".concat(prefixCls, \"-element\"), _defineProperty({}, \"\".concat(prefixCls, \"-active\"), active), hashId, className, rootClassName);\n var content = children !== null && children !== void 0 ? children : /*#__PURE__*/React.createElement(DotChartOutlined, null);\n return wrapSSR( /*#__PURE__*/React.createElement(\"div\", {\n className: cls\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-image\"), className),\n style: style\n }, content)));\n};\nexport default SkeletonNode;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nvar Paragraph = function Paragraph(props) {\n var getWidth = function getWidth(index) {\n var width = props.width,\n _props$rows = props.rows,\n rows = _props$rows === void 0 ? 2 : _props$rows;\n if (Array.isArray(width)) {\n return width[index];\n }\n // last paragraph\n if (rows - 1 === index) {\n return width;\n }\n return undefined;\n };\n var prefixCls = props.prefixCls,\n className = props.className,\n style = props.style,\n rows = props.rows;\n var rowList = _toConsumableArray(Array(rows)).map(function (_, index) {\n return /*#__PURE__*/(\n // eslint-disable-next-line react/no-array-index-key\n React.createElement(\"li\", {\n key: index,\n style: {\n width: getWidth(index)\n }\n })\n );\n });\n return /*#__PURE__*/React.createElement(\"ul\", {\n className: classNames(prefixCls, className),\n style: style\n }, rowList);\n};\nexport default Paragraph;","/* eslint-disable jsx-a11y/heading-has-content */\nimport classNames from 'classnames';\nimport * as React from 'react';\nvar Title = function Title(_ref) {\n var prefixCls = _ref.prefixCls,\n className = _ref.className,\n width = _ref.width,\n style = _ref.style;\n return /*#__PURE__*/React.createElement(\"h3\", {\n className: classNames(prefixCls, className),\n style: Object.assign({\n width: width\n }, style)\n });\n};\nexport default Title;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport SkeletonAvatar from './Avatar';\nimport SkeletonButton from './Button';\nimport Element from './Element';\nimport SkeletonImage from './Image';\nimport SkeletonInput from './Input';\nimport SkeletonNode from './Node';\nimport Paragraph from './Paragraph';\nimport Title from './Title';\nimport useStyle from './style';\nfunction getComponentProps(prop) {\n if (prop && typeof prop === 'object') {\n return prop;\n }\n return {};\n}\nfunction getAvatarBasicProps(hasTitle, hasParagraph) {\n if (hasTitle && !hasParagraph) {\n // Square avatar\n return {\n size: 'large',\n shape: 'square'\n };\n }\n return {\n size: 'large',\n shape: 'circle'\n };\n}\nfunction getTitleBasicProps(hasAvatar, hasParagraph) {\n if (!hasAvatar && hasParagraph) {\n return {\n width: '38%'\n };\n }\n if (hasAvatar && hasParagraph) {\n return {\n width: '50%'\n };\n }\n return {};\n}\nfunction getParagraphBasicProps(hasAvatar, hasTitle) {\n var basicProps = {};\n // Width\n if (!hasAvatar || !hasTitle) {\n basicProps.width = '61%';\n }\n // Rows\n if (!hasAvatar && hasTitle) {\n basicProps.rows = 3;\n } else {\n basicProps.rows = 2;\n }\n return basicProps;\n}\nvar Skeleton = function Skeleton(props) {\n var customizePrefixCls = props.prefixCls,\n loading = props.loading,\n className = props.className,\n rootClassName = props.rootClassName,\n style = props.style,\n children = props.children,\n _props$avatar = props.avatar,\n avatar = _props$avatar === void 0 ? false : _props$avatar,\n _props$title = props.title,\n title = _props$title === void 0 ? true : _props$title,\n _props$paragraph = props.paragraph,\n paragraph = _props$paragraph === void 0 ? true : _props$paragraph,\n active = props.active,\n round = props.round;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction,\n skeleton = _React$useContext.skeleton;\n var prefixCls = getPrefixCls('skeleton', customizePrefixCls);\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n if (loading || !('loading' in props)) {\n var _classNames;\n var hasAvatar = !!avatar;\n var hasTitle = !!title;\n var hasParagraph = !!paragraph;\n // Avatar\n var avatarNode;\n if (hasAvatar) {\n var avatarProps = Object.assign(Object.assign({\n prefixCls: \"\".concat(prefixCls, \"-avatar\")\n }, getAvatarBasicProps(hasTitle, hasParagraph)), getComponentProps(avatar));\n // We direct use SkeletonElement as avatar in skeleton internal.\n avatarNode = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-header\")\n }, /*#__PURE__*/React.createElement(Element, Object.assign({}, avatarProps)));\n }\n var contentNode;\n if (hasTitle || hasParagraph) {\n // Title\n var $title;\n if (hasTitle) {\n var titleProps = Object.assign(Object.assign({\n prefixCls: \"\".concat(prefixCls, \"-title\")\n }, getTitleBasicProps(hasAvatar, hasParagraph)), getComponentProps(title));\n $title = /*#__PURE__*/React.createElement(Title, Object.assign({}, titleProps));\n }\n // Paragraph\n var paragraphNode;\n if (hasParagraph) {\n var paragraphProps = Object.assign(Object.assign({\n prefixCls: \"\".concat(prefixCls, \"-paragraph\")\n }, getParagraphBasicProps(hasAvatar, hasTitle)), getComponentProps(paragraph));\n paragraphNode = /*#__PURE__*/React.createElement(Paragraph, Object.assign({}, paragraphProps));\n }\n contentNode = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-content\")\n }, $title, paragraphNode);\n }\n var cls = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-with-avatar\"), hasAvatar), _defineProperty(_classNames, \"\".concat(prefixCls, \"-active\"), active), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-round\"), round), _classNames), skeleton === null || skeleton === void 0 ? void 0 : skeleton.className, className, rootClassName, hashId);\n return wrapSSR( /*#__PURE__*/React.createElement(\"div\", {\n className: cls,\n style: Object.assign(Object.assign({}, skeleton === null || skeleton === void 0 ? void 0 : skeleton.style), style)\n }, avatarNode, contentNode));\n }\n return typeof children !== 'undefined' ? children : null;\n};\nSkeleton.Button = SkeletonButton;\nSkeleton.Avatar = SkeletonAvatar;\nSkeleton.Input = SkeletonInput;\nSkeleton.Image = SkeletonImage;\nSkeleton.Node = SkeletonNode;\nif (process.env.NODE_ENV !== 'production') {\n Skeleton.displayName = 'Skeleton';\n}\nexport default Skeleton;","'use client';\n\nimport Skeleton from './Skeleton';\nexport default Skeleton;","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"title\", \"titleId\"];\nimport * as React from \"react\";\nfunction ChatBubbleOvalLeftIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M12 20.25c4.97 0 9-3.694 9-8.25s-4.03-8.25-9-8.25S3 7.444 3 12c0 2.104.859 4.023 2.273 5.48.432.447.74 1.04.586 1.641a4.483 4.483 0 01-.923 1.785A5.969 5.969 0 006 21c1.282 0 2.47-.402 3.445-1.087.81.22 1.668.337 2.555.337z\"\n }));\n}\nvar ForwardRef = React.forwardRef(ChatBubbleOvalLeftIcon);\nexport default ForwardRef;","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"title\", \"titleId\"];\nimport * as React from \"react\";\nfunction HashtagIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M5.25 8.25h15m-16.5 7.5h15m-1.8-13.5l-3.9 19.5m-2.1-19.5l-3.9 19.5\"\n }));\n}\nvar ForwardRef = React.forwardRef(HashtagIcon);\nexport default ForwardRef;","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"title\", \"titleId\"];\nimport * as React from \"react\";\nfunction CalendarDaysIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z\"\n }));\n}\nvar ForwardRef = React.forwardRef(CalendarDaysIcon);\nexport default ForwardRef;","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"title\", \"titleId\"];\nimport * as React from \"react\";\nfunction TagIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M6 6h.008v.008H6V6z\"\n }));\n}\nvar ForwardRef = React.forwardRef(TagIcon);\nexport default ForwardRef;","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"title\", \"titleId\"];\nimport * as React from \"react\";\nfunction DocumentChartBarIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M19.5 14.25v-2.625a3.375 3.375 0 00-3.375-3.375h-1.5A1.125 1.125 0 0113.5 7.125v-1.5a3.375 3.375 0 00-3.375-3.375H8.25M9 16.5v.75m3-3v3M15 12v5.25m-4.5-15H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 00-9-9z\"\n }));\n}\nvar ForwardRef = React.forwardRef(DocumentChartBarIcon);\nexport default ForwardRef;","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"title\", \"titleId\"];\nimport * as React from \"react\";\nfunction ClipboardDocumentIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M8.25 7.5V6.108c0-1.135.845-2.098 1.976-2.192.373-.03.748-.057 1.123-.08M15.75 18H18a2.25 2.25 0 002.25-2.25V6.108c0-1.135-.845-2.098-1.976-2.192a48.424 48.424 0 00-1.123-.08M15.75 18.75v-1.875a3.375 3.375 0 00-3.375-3.375h-1.5a1.125 1.125 0 01-1.125-1.125v-1.5A3.375 3.375 0 006.375 7.5H5.25m11.9-3.664A2.251 2.251 0 0015 2.25h-1.5a2.251 2.251 0 00-2.15 1.586m5.8 0c.065.21.1.433.1.664v.75h-6V4.5c0-.231.035-.454.1-.664M6.75 7.5H4.875c-.621 0-1.125.504-1.125 1.125v12c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V16.5a9 9 0 00-9-9z\"\n }));\n}\nvar ForwardRef = React.forwardRef(ClipboardDocumentIcon);\nexport default ForwardRef;","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport useState from \"rc-util/es/hooks/useState\";\nimport * as React from 'react';\nimport Button from '../button';\nimport { convertLegacyProps } from '../button/button';\nfunction isThenable(thing) {\n return !!(thing && thing.then);\n}\nvar ActionButton = function ActionButton(props) {\n var type = props.type,\n children = props.children,\n prefixCls = props.prefixCls,\n buttonProps = props.buttonProps,\n close = props.close,\n autoFocus = props.autoFocus,\n emitEvent = props.emitEvent,\n isSilent = props.isSilent,\n quitOnNullishReturnValue = props.quitOnNullishReturnValue,\n actionFn = props.actionFn;\n var clickedRef = React.useRef(false);\n var buttonRef = React.useRef(null);\n var _useState = useState(false),\n _useState2 = _slicedToArray(_useState, 2),\n loading = _useState2[0],\n setLoading = _useState2[1];\n var onInternalClose = function onInternalClose() {\n close === null || close === void 0 ? void 0 : close.apply(void 0, arguments);\n };\n React.useEffect(function () {\n var timeoutId = null;\n if (autoFocus) {\n timeoutId = setTimeout(function () {\n var _a;\n (_a = buttonRef.current) === null || _a === void 0 ? void 0 : _a.focus();\n });\n }\n return function () {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n };\n }, []);\n var handlePromiseOnOk = function handlePromiseOnOk(returnValueOfOnOk) {\n if (!isThenable(returnValueOfOnOk)) {\n return;\n }\n setLoading(true);\n returnValueOfOnOk.then(function () {\n setLoading(false, true);\n onInternalClose.apply(void 0, arguments);\n clickedRef.current = false;\n }, function (e) {\n // See: https://github.com/ant-design/ant-design/issues/6183\n setLoading(false, true);\n clickedRef.current = false;\n // Do not throw if is `await` mode\n if (isSilent === null || isSilent === void 0 ? void 0 : isSilent()) {\n return;\n }\n return Promise.reject(e);\n });\n };\n var onClick = function onClick(e) {\n if (clickedRef.current) {\n return;\n }\n clickedRef.current = true;\n if (!actionFn) {\n onInternalClose();\n return;\n }\n var returnValueOfOnOk;\n if (emitEvent) {\n returnValueOfOnOk = actionFn(e);\n if (quitOnNullishReturnValue && !isThenable(returnValueOfOnOk)) {\n clickedRef.current = false;\n onInternalClose(e);\n return;\n }\n } else if (actionFn.length) {\n returnValueOfOnOk = actionFn(close);\n // https://github.com/ant-design/ant-design/issues/23358\n clickedRef.current = false;\n } else {\n returnValueOfOnOk = actionFn();\n if (!returnValueOfOnOk) {\n onInternalClose();\n return;\n }\n }\n handlePromiseOnOk(returnValueOfOnOk);\n };\n return /*#__PURE__*/React.createElement(Button, Object.assign({}, convertLegacyProps(type), {\n onClick: onClick,\n loading: loading,\n prefixCls: prefixCls\n }, buttonProps, {\n ref: buttonRef\n }), children);\n};\nexport default ActionButton;","// =============================== Motion ===============================\nexport function getMotionName(prefixCls, transitionName, animationName) {\n var motionName = transitionName;\n if (!motionName && animationName) {\n motionName = \"\".concat(prefixCls, \"-\").concat(animationName);\n }\n return motionName;\n}\n\n// =============================== Offset ===============================\nfunction getScroll(w, top) {\n var ret = w[\"page\".concat(top ? 'Y' : 'X', \"Offset\")];\n var method = \"scroll\".concat(top ? 'Top' : 'Left');\n if (typeof ret !== 'number') {\n var d = w.document;\n ret = d.documentElement[method];\n if (typeof ret !== 'number') {\n ret = d.body[method];\n }\n }\n return ret;\n}\nexport function offset(el) {\n var rect = el.getBoundingClientRect();\n var pos = {\n left: rect.left,\n top: rect.top\n };\n var doc = el.ownerDocument;\n var w = doc.defaultView || doc.parentWindow;\n pos.left += getScroll(w);\n pos.top += getScroll(w, true);\n return pos;\n}","import * as React from 'react';\nexport default /*#__PURE__*/React.memo(function (_ref) {\n var children = _ref.children;\n return children;\n}, function (_, _ref2) {\n var shouldUpdate = _ref2.shouldUpdate;\n return !shouldUpdate;\n});","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React, { useRef } from 'react';\nimport classNames from 'classnames';\nimport MemoChildren from \"./MemoChildren\";\nvar sentinelStyle = {\n width: 0,\n height: 0,\n overflow: 'hidden',\n outline: 'none'\n};\nvar Panel = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var prefixCls = props.prefixCls,\n className = props.className,\n style = props.style,\n title = props.title,\n ariaId = props.ariaId,\n footer = props.footer,\n closable = props.closable,\n closeIcon = props.closeIcon,\n onClose = props.onClose,\n children = props.children,\n bodyStyle = props.bodyStyle,\n bodyProps = props.bodyProps,\n modalRender = props.modalRender,\n onMouseDown = props.onMouseDown,\n onMouseUp = props.onMouseUp,\n holderRef = props.holderRef,\n visible = props.visible,\n forceRender = props.forceRender,\n width = props.width,\n height = props.height;\n\n // ================================= Refs =================================\n var sentinelStartRef = useRef();\n var sentinelEndRef = useRef();\n React.useImperativeHandle(ref, function () {\n return {\n focus: function focus() {\n var _sentinelStartRef$cur;\n (_sentinelStartRef$cur = sentinelStartRef.current) === null || _sentinelStartRef$cur === void 0 ? void 0 : _sentinelStartRef$cur.focus();\n },\n changeActive: function changeActive(next) {\n var _document = document,\n activeElement = _document.activeElement;\n if (next && activeElement === sentinelEndRef.current) {\n sentinelStartRef.current.focus();\n } else if (!next && activeElement === sentinelStartRef.current) {\n sentinelEndRef.current.focus();\n }\n }\n };\n });\n\n // ================================ Style =================================\n var contentStyle = {};\n if (width !== undefined) {\n contentStyle.width = width;\n }\n if (height !== undefined) {\n contentStyle.height = height;\n }\n // ================================ Render ================================\n var footerNode;\n if (footer) {\n footerNode = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-footer\")\n }, footer);\n }\n var headerNode;\n if (title) {\n headerNode = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-header\")\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-title\"),\n id: ariaId\n }, title));\n }\n var closer;\n if (closable) {\n closer = /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n onClick: onClose,\n \"aria-label\": \"Close\",\n className: \"\".concat(prefixCls, \"-close\")\n }, closeIcon || /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-close-x\")\n }));\n }\n var content = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-content\")\n }, closer, headerNode, /*#__PURE__*/React.createElement(\"div\", _extends({\n className: \"\".concat(prefixCls, \"-body\"),\n style: bodyStyle\n }, bodyProps), children), footerNode);\n return /*#__PURE__*/React.createElement(\"div\", {\n key: \"dialog-element\",\n role: \"dialog\",\n \"aria-labelledby\": title ? ariaId : null,\n \"aria-modal\": \"true\",\n ref: holderRef,\n style: _objectSpread(_objectSpread({}, style), contentStyle),\n className: classNames(prefixCls, className),\n onMouseDown: onMouseDown,\n onMouseUp: onMouseUp\n }, /*#__PURE__*/React.createElement(\"div\", {\n tabIndex: 0,\n ref: sentinelStartRef,\n style: sentinelStyle,\n \"aria-hidden\": \"true\"\n }), /*#__PURE__*/React.createElement(MemoChildren, {\n shouldUpdate: visible || forceRender\n }, modalRender ? modalRender(content) : content), /*#__PURE__*/React.createElement(\"div\", {\n tabIndex: 0,\n ref: sentinelEndRef,\n style: sentinelStyle,\n \"aria-hidden\": \"true\"\n }));\n});\nif (process.env.NODE_ENV !== 'production') {\n Panel.displayName = 'Panel';\n}\nexport default Panel;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useRef } from 'react';\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport { offset } from \"../../util\";\nimport Panel from \"./Panel\";\nvar Content = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var prefixCls = props.prefixCls,\n title = props.title,\n style = props.style,\n className = props.className,\n visible = props.visible,\n forceRender = props.forceRender,\n destroyOnClose = props.destroyOnClose,\n motionName = props.motionName,\n ariaId = props.ariaId,\n onVisibleChanged = props.onVisibleChanged,\n mousePosition = props.mousePosition;\n var dialogRef = useRef();\n\n // ============================= Style ==============================\n var _React$useState = React.useState(),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n transformOrigin = _React$useState2[0],\n setTransformOrigin = _React$useState2[1];\n var contentStyle = {};\n if (transformOrigin) {\n contentStyle.transformOrigin = transformOrigin;\n }\n function onPrepare() {\n var elementOffset = offset(dialogRef.current);\n setTransformOrigin(mousePosition ? \"\".concat(mousePosition.x - elementOffset.left, \"px \").concat(mousePosition.y - elementOffset.top, \"px\") : '');\n }\n\n // ============================= Render =============================\n return /*#__PURE__*/React.createElement(CSSMotion, {\n visible: visible,\n onVisibleChanged: onVisibleChanged,\n onAppearPrepare: onPrepare,\n onEnterPrepare: onPrepare,\n forceRender: forceRender,\n motionName: motionName,\n removeOnLeave: destroyOnClose,\n ref: dialogRef\n }, function (_ref, motionRef) {\n var motionClassName = _ref.className,\n motionStyle = _ref.style;\n return /*#__PURE__*/React.createElement(Panel, _extends({}, props, {\n ref: ref,\n title: title,\n ariaId: ariaId,\n prefixCls: prefixCls,\n holderRef: motionRef,\n style: _objectSpread(_objectSpread(_objectSpread({}, motionStyle), style), contentStyle),\n className: classNames(className, motionClassName)\n }));\n });\n});\nContent.displayName = 'Content';\nexport default Content;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nexport default function Mask(props) {\n var prefixCls = props.prefixCls,\n style = props.style,\n visible = props.visible,\n maskProps = props.maskProps,\n motionName = props.motionName;\n return /*#__PURE__*/React.createElement(CSSMotion, {\n key: \"mask\",\n visible: visible,\n motionName: motionName,\n leavedClassName: \"\".concat(prefixCls, \"-mask-hidden\")\n }, function (_ref, ref) {\n var motionClassName = _ref.className,\n motionStyle = _ref.style;\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: ref,\n style: _objectSpread(_objectSpread({}, motionStyle), style),\n className: classNames(\"\".concat(prefixCls, \"-mask\"), motionClassName)\n }, maskProps));\n });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport classNames from 'classnames';\nimport contains from \"rc-util/es/Dom/contains\";\nimport useId from \"rc-util/es/hooks/useId\";\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nimport * as React from 'react';\nimport { useEffect, useRef } from 'react';\nimport { getMotionName } from \"../util\";\nimport Content from \"./Content\";\nimport Mask from \"./Mask\";\nexport default function Dialog(props) {\n var _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-dialog' : _props$prefixCls,\n zIndex = props.zIndex,\n _props$visible = props.visible,\n visible = _props$visible === void 0 ? false : _props$visible,\n _props$keyboard = props.keyboard,\n keyboard = _props$keyboard === void 0 ? true : _props$keyboard,\n _props$focusTriggerAf = props.focusTriggerAfterClose,\n focusTriggerAfterClose = _props$focusTriggerAf === void 0 ? true : _props$focusTriggerAf,\n wrapStyle = props.wrapStyle,\n wrapClassName = props.wrapClassName,\n wrapProps = props.wrapProps,\n onClose = props.onClose,\n afterOpenChange = props.afterOpenChange,\n afterClose = props.afterClose,\n transitionName = props.transitionName,\n animation = props.animation,\n _props$closable = props.closable,\n closable = _props$closable === void 0 ? true : _props$closable,\n _props$mask = props.mask,\n mask = _props$mask === void 0 ? true : _props$mask,\n maskTransitionName = props.maskTransitionName,\n maskAnimation = props.maskAnimation,\n _props$maskClosable = props.maskClosable,\n maskClosable = _props$maskClosable === void 0 ? true : _props$maskClosable,\n maskStyle = props.maskStyle,\n maskProps = props.maskProps,\n rootClassName = props.rootClassName;\n var lastOutSideActiveElementRef = useRef();\n var wrapperRef = useRef();\n var contentRef = useRef();\n var _React$useState = React.useState(visible),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n animatedVisible = _React$useState2[0],\n setAnimatedVisible = _React$useState2[1];\n\n // ========================== Init ==========================\n var ariaId = useId();\n function saveLastOutSideActiveElementRef() {\n if (!contains(wrapperRef.current, document.activeElement)) {\n lastOutSideActiveElementRef.current = document.activeElement;\n }\n }\n function focusDialogContent() {\n if (!contains(wrapperRef.current, document.activeElement)) {\n var _contentRef$current;\n (_contentRef$current = contentRef.current) === null || _contentRef$current === void 0 ? void 0 : _contentRef$current.focus();\n }\n }\n\n // ========================= Events =========================\n function onDialogVisibleChanged(newVisible) {\n // Try to focus\n if (newVisible) {\n focusDialogContent();\n } else {\n // Clean up scroll bar & focus back\n setAnimatedVisible(false);\n if (mask && lastOutSideActiveElementRef.current && focusTriggerAfterClose) {\n try {\n lastOutSideActiveElementRef.current.focus({\n preventScroll: true\n });\n } catch (e) {\n // Do nothing\n }\n lastOutSideActiveElementRef.current = null;\n }\n\n // Trigger afterClose only when change visible from true to false\n if (animatedVisible) {\n afterClose === null || afterClose === void 0 ? void 0 : afterClose();\n }\n }\n afterOpenChange === null || afterOpenChange === void 0 ? void 0 : afterOpenChange(newVisible);\n }\n function onInternalClose(e) {\n onClose === null || onClose === void 0 ? void 0 : onClose(e);\n }\n\n // >>> Content\n var contentClickRef = useRef(false);\n var contentTimeoutRef = useRef();\n\n // We need record content click incase content popup out of dialog\n var onContentMouseDown = function onContentMouseDown() {\n clearTimeout(contentTimeoutRef.current);\n contentClickRef.current = true;\n };\n var onContentMouseUp = function onContentMouseUp() {\n contentTimeoutRef.current = setTimeout(function () {\n contentClickRef.current = false;\n });\n };\n\n // >>> Wrapper\n // Close only when element not on dialog\n var onWrapperClick = null;\n if (maskClosable) {\n onWrapperClick = function onWrapperClick(e) {\n if (contentClickRef.current) {\n contentClickRef.current = false;\n } else if (wrapperRef.current === e.target) {\n onInternalClose(e);\n }\n };\n }\n function onWrapperKeyDown(e) {\n if (keyboard && e.keyCode === KeyCode.ESC) {\n e.stopPropagation();\n onInternalClose(e);\n return;\n }\n\n // keep focus inside dialog\n if (visible) {\n if (e.keyCode === KeyCode.TAB) {\n contentRef.current.changeActive(!e.shiftKey);\n }\n }\n }\n\n // ========================= Effect =========================\n useEffect(function () {\n if (visible) {\n setAnimatedVisible(true);\n saveLastOutSideActiveElementRef();\n }\n }, [visible]);\n\n // Remove direct should also check the scroll bar update\n useEffect(function () {\n return function () {\n clearTimeout(contentTimeoutRef.current);\n };\n }, []);\n\n // ========================= Render =========================\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: classNames(\"\".concat(prefixCls, \"-root\"), rootClassName)\n }, pickAttrs(props, {\n data: true\n })), /*#__PURE__*/React.createElement(Mask, {\n prefixCls: prefixCls,\n visible: mask && visible,\n motionName: getMotionName(prefixCls, maskTransitionName, maskAnimation),\n style: _objectSpread({\n zIndex: zIndex\n }, maskStyle),\n maskProps: maskProps\n }), /*#__PURE__*/React.createElement(\"div\", _extends({\n tabIndex: -1,\n onKeyDown: onWrapperKeyDown,\n className: classNames(\"\".concat(prefixCls, \"-wrap\"), wrapClassName),\n ref: wrapperRef,\n onClick: onWrapperClick,\n style: _objectSpread(_objectSpread({\n zIndex: zIndex\n }, wrapStyle), {}, {\n display: !animatedVisible ? 'none' : null\n })\n }, wrapProps), /*#__PURE__*/React.createElement(Content, _extends({}, props, {\n onMouseDown: onContentMouseDown,\n onMouseUp: onContentMouseUp,\n ref: contentRef,\n closable: closable,\n ariaId: ariaId,\n prefixCls: prefixCls,\n visible: visible && animatedVisible,\n onClose: onInternalClose,\n onVisibleChanged: onDialogVisibleChanged,\n motionName: getMotionName(prefixCls, transitionName, animation)\n }))));\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport Portal from '@rc-component/portal';\nimport Dialog from \"./Dialog\";\n// fix issue #10656\n/*\n * getContainer remarks\n * Custom container should not be return, because in the Portal component, it will remove the\n * return container element here, if the custom container is the only child of it's component,\n * like issue #10656, It will has a conflict with removeChild method in react-dom.\n * So here should add a child (div element) to custom container.\n * */\n\nvar DialogWrap = function DialogWrap(props) {\n var visible = props.visible,\n getContainer = props.getContainer,\n forceRender = props.forceRender,\n _props$destroyOnClose = props.destroyOnClose,\n destroyOnClose = _props$destroyOnClose === void 0 ? false : _props$destroyOnClose,\n _afterClose = props.afterClose;\n var _React$useState = React.useState(visible),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n animatedVisible = _React$useState2[0],\n setAnimatedVisible = _React$useState2[1];\n React.useEffect(function () {\n if (visible) {\n setAnimatedVisible(true);\n }\n }, [visible]);\n\n // // 渲染在当前 dom 里;\n // if (getContainer === false) {\n // return (\n // 2} // 不对 body 做任何操作。。\n // />\n // );\n // }\n\n // Destroy on close will remove wrapped div\n if (!forceRender && destroyOnClose && !animatedVisible) {\n return null;\n }\n return /*#__PURE__*/React.createElement(Portal, {\n open: visible || forceRender || animatedVisible,\n autoDestroy: false,\n getContainer: getContainer,\n autoLock: visible || animatedVisible\n }, /*#__PURE__*/React.createElement(Dialog, _extends({}, props, {\n destroyOnClose: destroyOnClose,\n afterClose: function afterClose() {\n _afterClose === null || _afterClose === void 0 ? void 0 : _afterClose();\n setAnimatedVisible(false);\n }\n })));\n};\nDialogWrap.displayName = 'Dialog';\nexport default DialogWrap;","import DialogWrap from \"./DialogWrap\";\nimport Panel from \"./Dialog/Content/Panel\";\nexport { Panel };\nexport default DialogWrap;","import canUseDom from \"rc-util/es/Dom/canUseDom\";\nimport { isStyleSupport } from \"rc-util/es/Dom/styleChecker\";\nexport var canUseDocElement = function canUseDocElement() {\n return canUseDom() && window.document.documentElement;\n};\nexport { isStyleSupport };\nvar flexGapSupported;\nexport var detectFlexGapSupported = function detectFlexGapSupported() {\n if (!canUseDocElement()) {\n return false;\n }\n if (flexGapSupported !== undefined) {\n return flexGapSupported;\n }\n // create flex container with row-gap set\n var flex = document.createElement('div');\n flex.style.display = 'flex';\n flex.style.flexDirection = 'column';\n flex.style.rowGap = '1px';\n // create two, elements inside it\n flex.appendChild(document.createElement('div'));\n flex.appendChild(document.createElement('div'));\n // some browser may not repaint when remove nodes, so we need create a new layer to detect.\n var container = document.createElement('div');\n container.style.position = 'absolute';\n container.style.zIndex = '-9999';\n container.appendChild(flex);\n // append to the DOM (needed to obtain scrollHeight)\n document.body.appendChild(container);\n flexGapSupported = flex.scrollHeight === 1; // flex container should be 1px high from the row-gap\n document.body.removeChild(container);\n return flexGapSupported;\n};","import warning from \"rc-util/es/warning\";\nimport * as React from 'react';\nexport var HOOK_MARK = 'RC_FORM_INTERNAL_HOOKS';\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar warningFunc = function warningFunc() {\n warning(false, 'Can not find FormContext. Please make sure you wrap Field under Form.');\n};\nvar Context = /*#__PURE__*/React.createContext({\n getFieldValue: warningFunc,\n getFieldsValue: warningFunc,\n getFieldError: warningFunc,\n getFieldWarning: warningFunc,\n getFieldsError: warningFunc,\n isFieldsTouched: warningFunc,\n isFieldTouched: warningFunc,\n isFieldValidating: warningFunc,\n isFieldsValidating: warningFunc,\n resetFields: warningFunc,\n setFields: warningFunc,\n setFieldValue: warningFunc,\n setFieldsValue: warningFunc,\n validateFields: warningFunc,\n submit: warningFunc,\n getInternalHooks: function getInternalHooks() {\n warningFunc();\n return {\n dispatch: warningFunc,\n initEntityValue: warningFunc,\n registerField: warningFunc,\n useSubscribe: warningFunc,\n setInitialValues: warningFunc,\n destroyForm: warningFunc,\n setCallbacks: warningFunc,\n registerWatch: warningFunc,\n getFields: warningFunc,\n setValidateMessages: warningFunc,\n setPreserve: warningFunc,\n getInitialValue: warningFunc\n };\n }\n});\nexport default Context;","import * as React from 'react';\nvar ListContext = /*#__PURE__*/React.createContext(null);\nexport default ListContext;","export function toArray(value) {\n if (value === undefined || value === null) {\n return [];\n }\n return Array.isArray(value) ? value : [value];\n}\nexport function isFormInstance(form) {\n return form && !!form._init;\n}","function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n _setPrototypeOf(subClass, superClass);\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction _construct(Parent, args, Class) {\n if (_isNativeReflectConstruct()) {\n _construct = Reflect.construct.bind();\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}\nfunction _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n return _wrapNativeSuper(Class);\n}\n\n/* eslint no-console:0 */\nvar formatRegExp = /%[sdj%]/g;\nvar warning = function warning() {}; // don't print warning message when in production env or node runtime\n\nif (typeof process !== 'undefined' && process.env && process.env.NODE_ENV !== 'production' && typeof window !== 'undefined' && typeof document !== 'undefined') {\n warning = function warning(type, errors) {\n if (typeof console !== 'undefined' && console.warn && typeof ASYNC_VALIDATOR_NO_WARNING === 'undefined') {\n if (errors.every(function (e) {\n return typeof e === 'string';\n })) {\n console.warn(type, errors);\n }\n }\n };\n}\nfunction convertFieldsError(errors) {\n if (!errors || !errors.length) return null;\n var fields = {};\n errors.forEach(function (error) {\n var field = error.field;\n fields[field] = fields[field] || [];\n fields[field].push(error);\n });\n return fields;\n}\nfunction format(template) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n var i = 0;\n var len = args.length;\n if (typeof template === 'function') {\n return template.apply(null, args);\n }\n if (typeof template === 'string') {\n var str = template.replace(formatRegExp, function (x) {\n if (x === '%%') {\n return '%';\n }\n if (i >= len) {\n return x;\n }\n switch (x) {\n case '%s':\n return String(args[i++]);\n case '%d':\n return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n break;\n default:\n return x;\n }\n });\n return str;\n }\n return template;\n}\nfunction isNativeStringType(type) {\n return type === 'string' || type === 'url' || type === 'hex' || type === 'email' || type === 'date' || type === 'pattern';\n}\nfunction isEmptyValue(value, type) {\n if (value === undefined || value === null) {\n return true;\n }\n if (type === 'array' && Array.isArray(value) && !value.length) {\n return true;\n }\n if (isNativeStringType(type) && typeof value === 'string' && !value) {\n return true;\n }\n return false;\n}\nfunction asyncParallelArray(arr, func, callback) {\n var results = [];\n var total = 0;\n var arrLength = arr.length;\n function count(errors) {\n results.push.apply(results, errors || []);\n total++;\n if (total === arrLength) {\n callback(results);\n }\n }\n arr.forEach(function (a) {\n func(a, count);\n });\n}\nfunction asyncSerialArray(arr, func, callback) {\n var index = 0;\n var arrLength = arr.length;\n function next(errors) {\n if (errors && errors.length) {\n callback(errors);\n return;\n }\n var original = index;\n index = index + 1;\n if (original < arrLength) {\n func(arr[original], next);\n } else {\n callback([]);\n }\n }\n next([]);\n}\nfunction flattenObjArr(objArr) {\n var ret = [];\n Object.keys(objArr).forEach(function (k) {\n ret.push.apply(ret, objArr[k] || []);\n });\n return ret;\n}\nvar AsyncValidationError = /*#__PURE__*/function (_Error) {\n _inheritsLoose(AsyncValidationError, _Error);\n function AsyncValidationError(errors, fields) {\n var _this;\n _this = _Error.call(this, 'Async Validation Error') || this;\n _this.errors = errors;\n _this.fields = fields;\n return _this;\n }\n return AsyncValidationError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\nfunction asyncMap(objArr, option, func, callback, source) {\n if (option.first) {\n var _pending = new Promise(function (resolve, reject) {\n var next = function next(errors) {\n callback(errors);\n return errors.length ? reject(new AsyncValidationError(errors, convertFieldsError(errors))) : resolve(source);\n };\n var flattenArr = flattenObjArr(objArr);\n asyncSerialArray(flattenArr, func, next);\n });\n _pending[\"catch\"](function (e) {\n return e;\n });\n return _pending;\n }\n var firstFields = option.firstFields === true ? Object.keys(objArr) : option.firstFields || [];\n var objArrKeys = Object.keys(objArr);\n var objArrLength = objArrKeys.length;\n var total = 0;\n var results = [];\n var pending = new Promise(function (resolve, reject) {\n var next = function next(errors) {\n results.push.apply(results, errors);\n total++;\n if (total === objArrLength) {\n callback(results);\n return results.length ? reject(new AsyncValidationError(results, convertFieldsError(results))) : resolve(source);\n }\n };\n if (!objArrKeys.length) {\n callback(results);\n resolve(source);\n }\n objArrKeys.forEach(function (key) {\n var arr = objArr[key];\n if (firstFields.indexOf(key) !== -1) {\n asyncSerialArray(arr, func, next);\n } else {\n asyncParallelArray(arr, func, next);\n }\n });\n });\n pending[\"catch\"](function (e) {\n return e;\n });\n return pending;\n}\nfunction isErrorObj(obj) {\n return !!(obj && obj.message !== undefined);\n}\nfunction getValue(value, path) {\n var v = value;\n for (var i = 0; i < path.length; i++) {\n if (v == undefined) {\n return v;\n }\n v = v[path[i]];\n }\n return v;\n}\nfunction complementError(rule, source) {\n return function (oe) {\n var fieldValue;\n if (rule.fullFields) {\n fieldValue = getValue(source, rule.fullFields);\n } else {\n fieldValue = source[oe.field || rule.fullField];\n }\n if (isErrorObj(oe)) {\n oe.field = oe.field || rule.fullField;\n oe.fieldValue = fieldValue;\n return oe;\n }\n return {\n message: typeof oe === 'function' ? oe() : oe,\n fieldValue: fieldValue,\n field: oe.field || rule.fullField\n };\n };\n}\nfunction deepMerge(target, source) {\n if (source) {\n for (var s in source) {\n if (source.hasOwnProperty(s)) {\n var value = source[s];\n if (typeof value === 'object' && typeof target[s] === 'object') {\n target[s] = _extends({}, target[s], value);\n } else {\n target[s] = value;\n }\n }\n }\n }\n return target;\n}\nvar required$1 = function required(rule, value, source, errors, options, type) {\n if (rule.required && (!source.hasOwnProperty(rule.field) || isEmptyValue(value, type || rule.type))) {\n errors.push(format(options.messages.required, rule.fullField));\n }\n};\n\n/**\n * Rule for validating whitespace.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param source The source object being validated.\n * @param errors An array of errors that this rule may add\n * validation errors to.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\n\nvar whitespace = function whitespace(rule, value, source, errors, options) {\n if (/^\\s+$/.test(value) || value === '') {\n errors.push(format(options.messages.whitespace, rule.fullField));\n }\n};\n\n// https://github.com/kevva/url-regex/blob/master/index.js\nvar urlReg;\nvar getUrlRegex = function getUrlRegex() {\n if (urlReg) {\n return urlReg;\n }\n var word = '[a-fA-F\\\\d:]';\n var b = function b(options) {\n return options && options.includeBoundaries ? \"(?:(?<=\\\\s|^)(?=\" + word + \")|(?<=\" + word + \")(?=\\\\s|$))\" : '';\n };\n var v4 = '(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)){3}';\n var v6seg = '[a-fA-F\\\\d]{1,4}';\n var v6 = (\"\\n(?:\\n(?:\" + v6seg + \":){7}(?:\" + v6seg + \"|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8\\n(?:\" + v6seg + \":){6}(?:\" + v4 + \"|:\" + v6seg + \"|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4\\n(?:\" + v6seg + \":){5}(?::\" + v4 + \"|(?::\" + v6seg + \"){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4\\n(?:\" + v6seg + \":){4}(?:(?::\" + v6seg + \"){0,1}:\" + v4 + \"|(?::\" + v6seg + \"){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4\\n(?:\" + v6seg + \":){3}(?:(?::\" + v6seg + \"){0,2}:\" + v4 + \"|(?::\" + v6seg + \"){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4\\n(?:\" + v6seg + \":){2}(?:(?::\" + v6seg + \"){0,3}:\" + v4 + \"|(?::\" + v6seg + \"){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4\\n(?:\" + v6seg + \":){1}(?:(?::\" + v6seg + \"){0,4}:\" + v4 + \"|(?::\" + v6seg + \"){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4\\n(?::(?:(?::\" + v6seg + \"){0,5}:\" + v4 + \"|(?::\" + v6seg + \"){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4\\n)(?:%[0-9a-zA-Z]{1,})? // %eth0 %1\\n\").replace(/\\s*\\/\\/.*$/gm, '').replace(/\\n/g, '').trim(); // Pre-compile only the exact regexes because adding a global flag make regexes stateful\n\n var v46Exact = new RegExp(\"(?:^\" + v4 + \"$)|(?:^\" + v6 + \"$)\");\n var v4exact = new RegExp(\"^\" + v4 + \"$\");\n var v6exact = new RegExp(\"^\" + v6 + \"$\");\n var ip = function ip(options) {\n return options && options.exact ? v46Exact : new RegExp(\"(?:\" + b(options) + v4 + b(options) + \")|(?:\" + b(options) + v6 + b(options) + \")\", 'g');\n };\n ip.v4 = function (options) {\n return options && options.exact ? v4exact : new RegExp(\"\" + b(options) + v4 + b(options), 'g');\n };\n ip.v6 = function (options) {\n return options && options.exact ? v6exact : new RegExp(\"\" + b(options) + v6 + b(options), 'g');\n };\n var protocol = \"(?:(?:[a-z]+:)?//)\";\n var auth = '(?:\\\\S+(?::\\\\S*)?@)?';\n var ipv4 = ip.v4().source;\n var ipv6 = ip.v6().source;\n var host = \"(?:(?:[a-z\\\\u00a1-\\\\uffff0-9][-_]*)*[a-z\\\\u00a1-\\\\uffff0-9]+)\";\n var domain = \"(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)*\";\n var tld = \"(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,}))\";\n var port = '(?::\\\\d{2,5})?';\n var path = '(?:[/?#][^\\\\s\"]*)?';\n var regex = \"(?:\" + protocol + \"|www\\\\.)\" + auth + \"(?:localhost|\" + ipv4 + \"|\" + ipv6 + \"|\" + host + domain + tld + \")\" + port + path;\n urlReg = new RegExp(\"(?:^\" + regex + \"$)\", 'i');\n return urlReg;\n};\n\n/* eslint max-len:0 */\n\nvar pattern$2 = {\n // http://emailregex.com/\n email: /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+\\.)+[a-zA-Z\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]{2,}))$/,\n // url: new RegExp(\n // '^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\\\S+(?::\\\\S*)?@)?(?:(?:(?:[1-9]\\\\d?|1\\\\d\\\\d|2[01]\\\\d|22[0-3])(?:\\\\.(?:1?\\\\d{1,2}|2[0-4]\\\\d|25[0-5])){2}(?:\\\\.(?:[0-9]\\\\d?|1\\\\d\\\\d|2[0-4]\\\\d|25[0-4]))|(?:(?:[a-z\\\\u00a1-\\\\uffff0-9]+-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]+-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)*(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,})))|localhost)(?::\\\\d{2,5})?(?:(/|\\\\?|#)[^\\\\s]*)?$',\n // 'i',\n // ),\n hex: /^#?([a-f0-9]{6}|[a-f0-9]{3})$/i\n};\nvar types = {\n integer: function integer(value) {\n return types.number(value) && parseInt(value, 10) === value;\n },\n \"float\": function float(value) {\n return types.number(value) && !types.integer(value);\n },\n array: function array(value) {\n return Array.isArray(value);\n },\n regexp: function regexp(value) {\n if (value instanceof RegExp) {\n return true;\n }\n try {\n return !!new RegExp(value);\n } catch (e) {\n return false;\n }\n },\n date: function date(value) {\n return typeof value.getTime === 'function' && typeof value.getMonth === 'function' && typeof value.getYear === 'function' && !isNaN(value.getTime());\n },\n number: function number(value) {\n if (isNaN(value)) {\n return false;\n }\n return typeof value === 'number';\n },\n object: function object(value) {\n return typeof value === 'object' && !types.array(value);\n },\n method: function method(value) {\n return typeof value === 'function';\n },\n email: function email(value) {\n return typeof value === 'string' && value.length <= 320 && !!value.match(pattern$2.email);\n },\n url: function url(value) {\n return typeof value === 'string' && value.length <= 2048 && !!value.match(getUrlRegex());\n },\n hex: function hex(value) {\n return typeof value === 'string' && !!value.match(pattern$2.hex);\n }\n};\nvar type$1 = function type(rule, value, source, errors, options) {\n if (rule.required && value === undefined) {\n required$1(rule, value, source, errors, options);\n return;\n }\n var custom = ['integer', 'float', 'array', 'regexp', 'object', 'method', 'email', 'number', 'date', 'url', 'hex'];\n var ruleType = rule.type;\n if (custom.indexOf(ruleType) > -1) {\n if (!types[ruleType](value)) {\n errors.push(format(options.messages.types[ruleType], rule.fullField, rule.type));\n } // straight typeof check\n } else if (ruleType && typeof value !== rule.type) {\n errors.push(format(options.messages.types[ruleType], rule.fullField, rule.type));\n }\n};\nvar range = function range(rule, value, source, errors, options) {\n var len = typeof rule.len === 'number';\n var min = typeof rule.min === 'number';\n var max = typeof rule.max === 'number'; // 正则匹配码点范围从U+010000一直到U+10FFFF的文字(补充平面Supplementary Plane)\n\n var spRegexp = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n var val = value;\n var key = null;\n var num = typeof value === 'number';\n var str = typeof value === 'string';\n var arr = Array.isArray(value);\n if (num) {\n key = 'number';\n } else if (str) {\n key = 'string';\n } else if (arr) {\n key = 'array';\n } // if the value is not of a supported type for range validation\n // the validation rule rule should use the\n // type property to also test for a particular type\n\n if (!key) {\n return false;\n }\n if (arr) {\n val = value.length;\n }\n if (str) {\n // 处理码点大于U+010000的文字length属性不准确的bug,如\"𠮷𠮷𠮷\".lenght !== 3\n val = value.replace(spRegexp, '_').length;\n }\n if (len) {\n if (val !== rule.len) {\n errors.push(format(options.messages[key].len, rule.fullField, rule.len));\n }\n } else if (min && !max && val < rule.min) {\n errors.push(format(options.messages[key].min, rule.fullField, rule.min));\n } else if (max && !min && val > rule.max) {\n errors.push(format(options.messages[key].max, rule.fullField, rule.max));\n } else if (min && max && (val < rule.min || val > rule.max)) {\n errors.push(format(options.messages[key].range, rule.fullField, rule.min, rule.max));\n }\n};\nvar ENUM$1 = 'enum';\nvar enumerable$1 = function enumerable(rule, value, source, errors, options) {\n rule[ENUM$1] = Array.isArray(rule[ENUM$1]) ? rule[ENUM$1] : [];\n if (rule[ENUM$1].indexOf(value) === -1) {\n errors.push(format(options.messages[ENUM$1], rule.fullField, rule[ENUM$1].join(', ')));\n }\n};\nvar pattern$1 = function pattern(rule, value, source, errors, options) {\n if (rule.pattern) {\n if (rule.pattern instanceof RegExp) {\n // if a RegExp instance is passed, reset `lastIndex` in case its `global`\n // flag is accidentally set to `true`, which in a validation scenario\n // is not necessary and the result might be misleading\n rule.pattern.lastIndex = 0;\n if (!rule.pattern.test(value)) {\n errors.push(format(options.messages.pattern.mismatch, rule.fullField, value, rule.pattern));\n }\n } else if (typeof rule.pattern === 'string') {\n var _pattern = new RegExp(rule.pattern);\n if (!_pattern.test(value)) {\n errors.push(format(options.messages.pattern.mismatch, rule.fullField, value, rule.pattern));\n }\n }\n }\n};\nvar rules = {\n required: required$1,\n whitespace: whitespace,\n type: type$1,\n range: range,\n \"enum\": enumerable$1,\n pattern: pattern$1\n};\nvar string = function string(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n if (validate) {\n if (isEmptyValue(value, 'string') && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options, 'string');\n if (!isEmptyValue(value, 'string')) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n rules.pattern(rule, value, source, errors, options);\n if (rule.whitespace === true) {\n rules.whitespace(rule, value, source, errors, options);\n }\n }\n }\n callback(errors);\n};\nvar method = function method(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n }\n }\n callback(errors);\n};\nvar number = function number(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n if (validate) {\n if (value === '') {\n value = undefined;\n }\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n }\n }\n callback(errors);\n};\nvar _boolean = function _boolean(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n }\n }\n callback(errors);\n};\nvar regexp = function regexp(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (!isEmptyValue(value)) {\n rules.type(rule, value, source, errors, options);\n }\n }\n callback(errors);\n};\nvar integer = function integer(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n }\n }\n callback(errors);\n};\nvar floatFn = function floatFn(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n }\n }\n callback(errors);\n};\nvar array = function array(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n if (validate) {\n if ((value === undefined || value === null) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options, 'array');\n if (value !== undefined && value !== null) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n }\n }\n callback(errors);\n};\nvar object = function object(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n }\n }\n callback(errors);\n};\nvar ENUM = 'enum';\nvar enumerable = function enumerable(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (value !== undefined) {\n rules[ENUM](rule, value, source, errors, options);\n }\n }\n callback(errors);\n};\nvar pattern = function pattern(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n if (validate) {\n if (isEmptyValue(value, 'string') && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (!isEmptyValue(value, 'string')) {\n rules.pattern(rule, value, source, errors, options);\n }\n }\n callback(errors);\n};\nvar date = function date(rule, value, callback, source, options) {\n // console.log('integer rule called %j', rule);\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); // console.log('validate on %s value', value);\n\n if (validate) {\n if (isEmptyValue(value, 'date') && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (!isEmptyValue(value, 'date')) {\n var dateObject;\n if (value instanceof Date) {\n dateObject = value;\n } else {\n dateObject = new Date(value);\n }\n rules.type(rule, dateObject, source, errors, options);\n if (dateObject) {\n rules.range(rule, dateObject.getTime(), source, errors, options);\n }\n }\n }\n callback(errors);\n};\nvar required = function required(rule, value, callback, source, options) {\n var errors = [];\n var type = Array.isArray(value) ? 'array' : typeof value;\n rules.required(rule, value, source, errors, options, type);\n callback(errors);\n};\nvar type = function type(rule, value, callback, source, options) {\n var ruleType = rule.type;\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n if (validate) {\n if (isEmptyValue(value, ruleType) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options, ruleType);\n if (!isEmptyValue(value, ruleType)) {\n rules.type(rule, value, source, errors, options);\n }\n }\n callback(errors);\n};\nvar any = function any(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n }\n callback(errors);\n};\nvar validators = {\n string: string,\n method: method,\n number: number,\n \"boolean\": _boolean,\n regexp: regexp,\n integer: integer,\n \"float\": floatFn,\n array: array,\n object: object,\n \"enum\": enumerable,\n pattern: pattern,\n date: date,\n url: type,\n hex: type,\n email: type,\n required: required,\n any: any\n};\nfunction newMessages() {\n return {\n \"default\": 'Validation error on field %s',\n required: '%s is required',\n \"enum\": '%s must be one of %s',\n whitespace: '%s cannot be empty',\n date: {\n format: '%s date %s is invalid for format %s',\n parse: '%s date could not be parsed, %s is invalid ',\n invalid: '%s date %s is invalid'\n },\n types: {\n string: '%s is not a %s',\n method: '%s is not a %s (function)',\n array: '%s is not an %s',\n object: '%s is not an %s',\n number: '%s is not a %s',\n date: '%s is not a %s',\n \"boolean\": '%s is not a %s',\n integer: '%s is not an %s',\n \"float\": '%s is not a %s',\n regexp: '%s is not a valid %s',\n email: '%s is not a valid %s',\n url: '%s is not a valid %s',\n hex: '%s is not a valid %s'\n },\n string: {\n len: '%s must be exactly %s characters',\n min: '%s must be at least %s characters',\n max: '%s cannot be longer than %s characters',\n range: '%s must be between %s and %s characters'\n },\n number: {\n len: '%s must equal %s',\n min: '%s cannot be less than %s',\n max: '%s cannot be greater than %s',\n range: '%s must be between %s and %s'\n },\n array: {\n len: '%s must be exactly %s in length',\n min: '%s cannot be less than %s in length',\n max: '%s cannot be greater than %s in length',\n range: '%s must be between %s and %s in length'\n },\n pattern: {\n mismatch: '%s value %s does not match pattern %s'\n },\n clone: function clone() {\n var cloned = JSON.parse(JSON.stringify(this));\n cloned.clone = this.clone;\n return cloned;\n }\n };\n}\nvar messages = newMessages();\n\n/**\n * Encapsulates a validation schema.\n *\n * @param descriptor An object declaring validation rules\n * for this schema.\n */\n\nvar Schema = /*#__PURE__*/function () {\n // ========================= Static =========================\n // ======================== Instance ========================\n function Schema(descriptor) {\n this.rules = null;\n this._messages = messages;\n this.define(descriptor);\n }\n var _proto = Schema.prototype;\n _proto.define = function define(rules) {\n var _this = this;\n if (!rules) {\n throw new Error('Cannot configure a schema with no rules');\n }\n if (typeof rules !== 'object' || Array.isArray(rules)) {\n throw new Error('Rules must be an object');\n }\n this.rules = {};\n Object.keys(rules).forEach(function (name) {\n var item = rules[name];\n _this.rules[name] = Array.isArray(item) ? item : [item];\n });\n };\n _proto.messages = function messages(_messages) {\n if (_messages) {\n this._messages = deepMerge(newMessages(), _messages);\n }\n return this._messages;\n };\n _proto.validate = function validate(source_, o, oc) {\n var _this2 = this;\n if (o === void 0) {\n o = {};\n }\n if (oc === void 0) {\n oc = function oc() {};\n }\n var source = source_;\n var options = o;\n var callback = oc;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n if (!this.rules || Object.keys(this.rules).length === 0) {\n if (callback) {\n callback(null, source);\n }\n return Promise.resolve(source);\n }\n function complete(results) {\n var errors = [];\n var fields = {};\n function add(e) {\n if (Array.isArray(e)) {\n var _errors;\n errors = (_errors = errors).concat.apply(_errors, e);\n } else {\n errors.push(e);\n }\n }\n for (var i = 0; i < results.length; i++) {\n add(results[i]);\n }\n if (!errors.length) {\n callback(null, source);\n } else {\n fields = convertFieldsError(errors);\n callback(errors, fields);\n }\n }\n if (options.messages) {\n var messages$1 = this.messages();\n if (messages$1 === messages) {\n messages$1 = newMessages();\n }\n deepMerge(messages$1, options.messages);\n options.messages = messages$1;\n } else {\n options.messages = this.messages();\n }\n var series = {};\n var keys = options.keys || Object.keys(this.rules);\n keys.forEach(function (z) {\n var arr = _this2.rules[z];\n var value = source[z];\n arr.forEach(function (r) {\n var rule = r;\n if (typeof rule.transform === 'function') {\n if (source === source_) {\n source = _extends({}, source);\n }\n value = source[z] = rule.transform(value);\n }\n if (typeof rule === 'function') {\n rule = {\n validator: rule\n };\n } else {\n rule = _extends({}, rule);\n } // Fill validator. Skip if nothing need to validate\n\n rule.validator = _this2.getValidationMethod(rule);\n if (!rule.validator) {\n return;\n }\n rule.field = z;\n rule.fullField = rule.fullField || z;\n rule.type = _this2.getType(rule);\n series[z] = series[z] || [];\n series[z].push({\n rule: rule,\n value: value,\n source: source,\n field: z\n });\n });\n });\n var errorFields = {};\n return asyncMap(series, options, function (data, doIt) {\n var rule = data.rule;\n var deep = (rule.type === 'object' || rule.type === 'array') && (typeof rule.fields === 'object' || typeof rule.defaultField === 'object');\n deep = deep && (rule.required || !rule.required && data.value);\n rule.field = data.field;\n function addFullField(key, schema) {\n return _extends({}, schema, {\n fullField: rule.fullField + \".\" + key,\n fullFields: rule.fullFields ? [].concat(rule.fullFields, [key]) : [key]\n });\n }\n function cb(e) {\n if (e === void 0) {\n e = [];\n }\n var errorList = Array.isArray(e) ? e : [e];\n if (!options.suppressWarning && errorList.length) {\n Schema.warning('async-validator:', errorList);\n }\n if (errorList.length && rule.message !== undefined) {\n errorList = [].concat(rule.message);\n } // Fill error info\n\n var filledErrors = errorList.map(complementError(rule, source));\n if (options.first && filledErrors.length) {\n errorFields[rule.field] = 1;\n return doIt(filledErrors);\n }\n if (!deep) {\n doIt(filledErrors);\n } else {\n // if rule is required but the target object\n // does not exist fail at the rule level and don't\n // go deeper\n if (rule.required && !data.value) {\n if (rule.message !== undefined) {\n filledErrors = [].concat(rule.message).map(complementError(rule, source));\n } else if (options.error) {\n filledErrors = [options.error(rule, format(options.messages.required, rule.field))];\n }\n return doIt(filledErrors);\n }\n var fieldsSchema = {};\n if (rule.defaultField) {\n Object.keys(data.value).map(function (key) {\n fieldsSchema[key] = rule.defaultField;\n });\n }\n fieldsSchema = _extends({}, fieldsSchema, data.rule.fields);\n var paredFieldsSchema = {};\n Object.keys(fieldsSchema).forEach(function (field) {\n var fieldSchema = fieldsSchema[field];\n var fieldSchemaList = Array.isArray(fieldSchema) ? fieldSchema : [fieldSchema];\n paredFieldsSchema[field] = fieldSchemaList.map(addFullField.bind(null, field));\n });\n var schema = new Schema(paredFieldsSchema);\n schema.messages(options.messages);\n if (data.rule.options) {\n data.rule.options.messages = options.messages;\n data.rule.options.error = options.error;\n }\n schema.validate(data.value, data.rule.options || options, function (errs) {\n var finalErrors = [];\n if (filledErrors && filledErrors.length) {\n finalErrors.push.apply(finalErrors, filledErrors);\n }\n if (errs && errs.length) {\n finalErrors.push.apply(finalErrors, errs);\n }\n doIt(finalErrors.length ? finalErrors : null);\n });\n }\n }\n var res;\n if (rule.asyncValidator) {\n res = rule.asyncValidator(rule, data.value, cb, data.source, options);\n } else if (rule.validator) {\n try {\n res = rule.validator(rule, data.value, cb, data.source, options);\n } catch (error) {\n console.error == null ? void 0 : console.error(error); // rethrow to report error\n\n if (!options.suppressValidatorError) {\n setTimeout(function () {\n throw error;\n }, 0);\n }\n cb(error.message);\n }\n if (res === true) {\n cb();\n } else if (res === false) {\n cb(typeof rule.message === 'function' ? rule.message(rule.fullField || rule.field) : rule.message || (rule.fullField || rule.field) + \" fails\");\n } else if (res instanceof Array) {\n cb(res);\n } else if (res instanceof Error) {\n cb(res.message);\n }\n }\n if (res && res.then) {\n res.then(function () {\n return cb();\n }, function (e) {\n return cb(e);\n });\n }\n }, function (results) {\n complete(results);\n }, source);\n };\n _proto.getType = function getType(rule) {\n if (rule.type === undefined && rule.pattern instanceof RegExp) {\n rule.type = 'pattern';\n }\n if (typeof rule.validator !== 'function' && rule.type && !validators.hasOwnProperty(rule.type)) {\n throw new Error(format('Unknown rule type %s', rule.type));\n }\n return rule.type || 'string';\n };\n _proto.getValidationMethod = function getValidationMethod(rule) {\n if (typeof rule.validator === 'function') {\n return rule.validator;\n }\n var keys = Object.keys(rule);\n var messageIndex = keys.indexOf('message');\n if (messageIndex !== -1) {\n keys.splice(messageIndex, 1);\n }\n if (keys.length === 1 && keys[0] === 'required') {\n return validators.required;\n }\n return validators[this.getType(rule)] || undefined;\n };\n return Schema;\n}();\nSchema.register = function register(type, validator) {\n if (typeof validator !== 'function') {\n throw new Error('Cannot register a validator by type, validator is not a function');\n }\n validators[type] = validator;\n};\nSchema.warning = warning;\nSchema.messages = messages;\nSchema.validators = validators;\nexport { Schema as default };","var typeTemplate = \"'${name}' is not a valid ${type}\";\nexport var defaultValidateMessages = {\n default: \"Validation error on field '${name}'\",\n required: \"'${name}' is required\",\n enum: \"'${name}' must be one of [${enum}]\",\n whitespace: \"'${name}' cannot be empty\",\n date: {\n format: \"'${name}' is invalid for format date\",\n parse: \"'${name}' could not be parsed as date\",\n invalid: \"'${name}' is invalid date\"\n },\n types: {\n string: typeTemplate,\n method: typeTemplate,\n array: typeTemplate,\n object: typeTemplate,\n number: typeTemplate,\n date: typeTemplate,\n boolean: typeTemplate,\n integer: typeTemplate,\n float: typeTemplate,\n regexp: typeTemplate,\n email: typeTemplate,\n url: typeTemplate,\n hex: typeTemplate\n },\n string: {\n len: \"'${name}' must be exactly ${len} characters\",\n min: \"'${name}' must be at least ${min} characters\",\n max: \"'${name}' cannot be longer than ${max} characters\",\n range: \"'${name}' must be between ${min} and ${max} characters\"\n },\n number: {\n len: \"'${name}' must equal ${len}\",\n min: \"'${name}' cannot be less than ${min}\",\n max: \"'${name}' cannot be greater than ${max}\",\n range: \"'${name}' must be between ${min} and ${max}\"\n },\n array: {\n len: \"'${name}' must be exactly ${len} in length\",\n min: \"'${name}' cannot be less than ${min} in length\",\n max: \"'${name}' cannot be greater than ${max} in length\",\n range: \"'${name}' must be between ${min} and ${max} in length\"\n },\n pattern: {\n mismatch: \"'${name}' does not match pattern ${pattern}\"\n }\n};","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _regeneratorRuntime from \"@babel/runtime/helpers/esm/regeneratorRuntime\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _asyncToGenerator from \"@babel/runtime/helpers/esm/asyncToGenerator\";\nimport RawAsyncValidator from 'async-validator';\nimport * as React from 'react';\nimport warning from \"rc-util/es/warning\";\nimport { defaultValidateMessages } from './messages';\nimport { merge } from \"rc-util/es/utils/set\";\n// Remove incorrect original ts define\nvar AsyncValidator = RawAsyncValidator;\n/**\n * Replace with template.\n * `I'm ${name}` + { name: 'bamboo' } = I'm bamboo\n */\nfunction replaceMessage(template, kv) {\n return template.replace(/\\$\\{\\w+\\}/g, function (str) {\n var key = str.slice(2, -1);\n return kv[key];\n });\n}\nvar CODE_LOGIC_ERROR = 'CODE_LOGIC_ERROR';\nfunction validateRule(_x, _x2, _x3, _x4, _x5) {\n return _validateRule.apply(this, arguments);\n}\n/**\n * We use `async-validator` to validate the value.\n * But only check one value in a time to avoid namePath validate issue.\n */\nfunction _validateRule() {\n _validateRule = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(name, value, rule, options, messageVariables) {\n var cloneRule, originValidator, subRuleField, validator, messages, result, subResults, kv, fillVariableResult;\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n cloneRule = _objectSpread({}, rule); // Bug of `async-validator`\n // https://github.com/react-component/field-form/issues/316\n // https://github.com/react-component/field-form/issues/313\n delete cloneRule.ruleIndex;\n // https://github.com/ant-design/ant-design/issues/40497#issuecomment-1422282378\n AsyncValidator.warning = function () {\n return void 0;\n };\n if (cloneRule.validator) {\n originValidator = cloneRule.validator;\n cloneRule.validator = function () {\n try {\n return originValidator.apply(void 0, arguments);\n } catch (error) {\n console.error(error);\n return Promise.reject(CODE_LOGIC_ERROR);\n }\n };\n }\n // We should special handle array validate\n subRuleField = null;\n if (cloneRule && cloneRule.type === 'array' && cloneRule.defaultField) {\n subRuleField = cloneRule.defaultField;\n delete cloneRule.defaultField;\n }\n validator = new AsyncValidator(_defineProperty({}, name, [cloneRule]));\n messages = merge(defaultValidateMessages, options.validateMessages);\n validator.messages(messages);\n result = [];\n _context2.prev = 10;\n _context2.next = 13;\n return Promise.resolve(validator.validate(_defineProperty({}, name, value), _objectSpread({}, options)));\n case 13:\n _context2.next = 18;\n break;\n case 15:\n _context2.prev = 15;\n _context2.t0 = _context2[\"catch\"](10);\n if (_context2.t0.errors) {\n result = _context2.t0.errors.map(function (_ref4, index) {\n var message = _ref4.message;\n var mergedMessage = message === CODE_LOGIC_ERROR ? messages.default : message;\n return /*#__PURE__*/React.isValidElement(mergedMessage) ? /*#__PURE__*/\n // Wrap ReactNode with `key`\n React.cloneElement(mergedMessage, {\n key: \"error_\".concat(index)\n }) : mergedMessage;\n });\n }\n case 18:\n if (!(!result.length && subRuleField)) {\n _context2.next = 23;\n break;\n }\n _context2.next = 21;\n return Promise.all(value.map(function (subValue, i) {\n return validateRule(\"\".concat(name, \".\").concat(i), subValue, subRuleField, options, messageVariables);\n }));\n case 21:\n subResults = _context2.sent;\n return _context2.abrupt(\"return\", subResults.reduce(function (prev, errors) {\n return [].concat(_toConsumableArray(prev), _toConsumableArray(errors));\n }, []));\n case 23:\n // Replace message with variables\n kv = _objectSpread(_objectSpread({}, rule), {}, {\n name: name,\n enum: (rule.enum || []).join(', ')\n }, messageVariables);\n fillVariableResult = result.map(function (error) {\n if (typeof error === 'string') {\n return replaceMessage(error, kv);\n }\n return error;\n });\n return _context2.abrupt(\"return\", fillVariableResult);\n case 26:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, null, [[10, 15]]);\n }));\n return _validateRule.apply(this, arguments);\n}\nexport function validateRules(namePath, value, rules, options, validateFirst, messageVariables) {\n var name = namePath.join('.');\n // Fill rule with context\n var filledRules = rules.map(function (currentRule, ruleIndex) {\n var originValidatorFunc = currentRule.validator;\n var cloneRule = _objectSpread(_objectSpread({}, currentRule), {}, {\n ruleIndex: ruleIndex\n });\n // Replace validator if needed\n if (originValidatorFunc) {\n cloneRule.validator = function (rule, val, callback) {\n var hasPromise = false;\n // Wrap callback only accept when promise not provided\n var wrappedCallback = function wrappedCallback() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n // Wait a tick to make sure return type is a promise\n Promise.resolve().then(function () {\n warning(!hasPromise, 'Your validator function has already return a promise. `callback` will be ignored.');\n if (!hasPromise) {\n callback.apply(void 0, args);\n }\n });\n };\n // Get promise\n var promise = originValidatorFunc(rule, val, wrappedCallback);\n hasPromise = promise && typeof promise.then === 'function' && typeof promise.catch === 'function';\n /**\n * 1. Use promise as the first priority.\n * 2. If promise not exist, use callback with warning instead\n */\n warning(hasPromise, '`callback` is deprecated. Please return a promise instead.');\n if (hasPromise) {\n promise.then(function () {\n callback();\n }).catch(function (err) {\n callback(err || ' ');\n });\n }\n };\n }\n return cloneRule;\n }).sort(function (_ref, _ref2) {\n var w1 = _ref.warningOnly,\n i1 = _ref.ruleIndex;\n var w2 = _ref2.warningOnly,\n i2 = _ref2.ruleIndex;\n if (!!w1 === !!w2) {\n // Let keep origin order\n return i1 - i2;\n }\n if (w1) {\n return 1;\n }\n return -1;\n });\n // Do validate rules\n var summaryPromise;\n if (validateFirst === true) {\n // >>>>> Validate by serialization\n summaryPromise = new Promise( /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(resolve, reject) {\n var i, rule, errors;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n i = 0;\n case 1:\n if (!(i < filledRules.length)) {\n _context.next = 12;\n break;\n }\n rule = filledRules[i];\n _context.next = 5;\n return validateRule(name, value, rule, options, messageVariables);\n case 5:\n errors = _context.sent;\n if (!errors.length) {\n _context.next = 9;\n break;\n }\n reject([{\n errors: errors,\n rule: rule\n }]);\n return _context.abrupt(\"return\");\n case 9:\n i += 1;\n _context.next = 1;\n break;\n case 12:\n /* eslint-enable */\n resolve([]);\n case 13:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return function (_x6, _x7) {\n return _ref3.apply(this, arguments);\n };\n }());\n } else {\n // >>>>> Validate by parallel\n var rulePromises = filledRules.map(function (rule) {\n return validateRule(name, value, rule, options, messageVariables).then(function (errors) {\n return {\n errors: errors,\n rule: rule\n };\n });\n });\n summaryPromise = (validateFirst ? finishOnFirstFailed(rulePromises) : finishOnAllFailed(rulePromises)).then(function (errors) {\n // Always change to rejection for Field to catch\n return Promise.reject(errors);\n });\n }\n // Internal catch error to avoid console error log.\n summaryPromise.catch(function (e) {\n return e;\n });\n return summaryPromise;\n}\nfunction finishOnAllFailed(_x8) {\n return _finishOnAllFailed.apply(this, arguments);\n}\nfunction _finishOnAllFailed() {\n _finishOnAllFailed = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(rulePromises) {\n return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n return _context3.abrupt(\"return\", Promise.all(rulePromises).then(function (errorsList) {\n var _ref5;\n var errors = (_ref5 = []).concat.apply(_ref5, _toConsumableArray(errorsList));\n return errors;\n }));\n case 1:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3);\n }));\n return _finishOnAllFailed.apply(this, arguments);\n}\nfunction finishOnFirstFailed(_x9) {\n return _finishOnFirstFailed.apply(this, arguments);\n}\nfunction _finishOnFirstFailed() {\n _finishOnFirstFailed = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(rulePromises) {\n var count;\n return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n count = 0;\n return _context4.abrupt(\"return\", new Promise(function (resolve) {\n rulePromises.forEach(function (promise) {\n promise.then(function (ruleError) {\n if (ruleError.errors.length) {\n resolve([ruleError]);\n }\n count += 1;\n if (count === rulePromises.length) {\n resolve([]);\n }\n });\n });\n }));\n case 2:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4);\n }));\n return _finishOnFirstFailed.apply(this, arguments);\n}","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport getValue from \"rc-util/es/utils/get\";\nimport setValue from \"rc-util/es/utils/set\";\nimport { toArray } from './typeUtil';\nexport { getValue, setValue };\n/**\n * Convert name to internal supported format.\n * This function should keep since we still thinking if need support like `a.b.c` format.\n * 'a' => ['a']\n * 123 => [123]\n * ['a', 123] => ['a', 123]\n */\nexport function getNamePath(path) {\n return toArray(path);\n}\nexport function cloneByNamePathList(store, namePathList) {\n var newStore = {};\n namePathList.forEach(function (namePath) {\n var value = getValue(store, namePath);\n newStore = setValue(newStore, namePath, value);\n });\n return newStore;\n}\nexport function containsNamePath(namePathList, namePath) {\n return namePathList && namePathList.some(function (path) {\n return matchNamePath(path, namePath);\n });\n}\nexport function matchNamePath(namePath, changedNamePath) {\n if (!namePath || !changedNamePath || namePath.length !== changedNamePath.length) {\n return false;\n }\n return namePath.every(function (nameUnit, i) {\n return changedNamePath[i] === nameUnit;\n });\n}\nexport function isSimilar(source, target) {\n if (source === target) {\n return true;\n }\n if (!source && target || source && !target) {\n return false;\n }\n if (!source || !target || _typeof(source) !== 'object' || _typeof(target) !== 'object') {\n return false;\n }\n var sourceKeys = Object.keys(source);\n var targetKeys = Object.keys(target);\n var keys = new Set([].concat(sourceKeys, targetKeys));\n return _toConsumableArray(keys).every(function (key) {\n var sourceValue = source[key];\n var targetValue = target[key];\n if (typeof sourceValue === 'function' && typeof targetValue === 'function') {\n return true;\n }\n return sourceValue === targetValue;\n });\n}\nexport function defaultGetValueFromEvent(valuePropName) {\n var event = arguments.length <= 1 ? undefined : arguments[1];\n if (event && event.target && _typeof(event.target) === 'object' && valuePropName in event.target) {\n return event.target[valuePropName];\n }\n return event;\n}\n/**\n * Moves an array item from one position in an array to another.\n *\n * Note: This is a pure function so a new array will be returned, instead\n * of altering the array argument.\n *\n * @param array Array in which to move an item. (required)\n * @param moveIndex The index of the item to move. (required)\n * @param toIndex The index to move item at moveIndex to. (required)\n */\nexport function move(array, moveIndex, toIndex) {\n var length = array.length;\n if (moveIndex < 0 || moveIndex >= length || toIndex < 0 || toIndex >= length) {\n return array;\n }\n var item = array[moveIndex];\n var diff = moveIndex - toIndex;\n if (diff > 0) {\n // move left\n return [].concat(_toConsumableArray(array.slice(0, toIndex)), [item], _toConsumableArray(array.slice(toIndex, moveIndex)), _toConsumableArray(array.slice(moveIndex + 1, length)));\n }\n if (diff < 0) {\n // move right\n return [].concat(_toConsumableArray(array.slice(0, moveIndex)), _toConsumableArray(array.slice(moveIndex + 1, toIndex + 1)), [item], _toConsumableArray(array.slice(toIndex + 1, length)));\n }\n return array;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nvar _excluded = [\"name\"];\nimport toChildrenArray from \"rc-util/es/Children/toArray\";\nimport warning from \"rc-util/es/warning\";\nimport isEqual from \"rc-util/es/isEqual\";\nimport * as React from 'react';\nimport FieldContext, { HOOK_MARK } from './FieldContext';\nimport ListContext from './ListContext';\nimport { toArray } from './utils/typeUtil';\nimport { validateRules } from './utils/validateUtil';\nimport { containsNamePath, defaultGetValueFromEvent, getNamePath, getValue } from './utils/valueUtil';\nvar EMPTY_ERRORS = [];\nfunction requireUpdate(shouldUpdate, prev, next, prevValue, nextValue, info) {\n if (typeof shouldUpdate === 'function') {\n return shouldUpdate(prev, next, 'source' in info ? {\n source: info.source\n } : {});\n }\n return prevValue !== nextValue;\n}\n// We use Class instead of Hooks here since it will cost much code by using Hooks.\nvar Field = /*#__PURE__*/function (_React$Component) {\n _inherits(Field, _React$Component);\n var _super = _createSuper(Field);\n // ============================== Subscriptions ==============================\n function Field(props) {\n var _this;\n _classCallCheck(this, Field);\n _this = _super.call(this, props);\n // Register on init\n _this.state = {\n resetCount: 0\n };\n _this.cancelRegisterFunc = null;\n _this.mounted = false;\n /**\n * Follow state should not management in State since it will async update by React.\n * This makes first render of form can not get correct state value.\n */\n _this.touched = false;\n /**\n * Mark when touched & validated. Currently only used for `dependencies`.\n * Note that we do not think field with `initialValue` is dirty\n * but this will be by `isFieldDirty` func.\n */\n _this.dirty = false;\n _this.validatePromise = void 0;\n _this.prevValidating = void 0;\n _this.errors = EMPTY_ERRORS;\n _this.warnings = EMPTY_ERRORS;\n _this.cancelRegister = function () {\n var _this$props = _this.props,\n preserve = _this$props.preserve,\n isListField = _this$props.isListField,\n name = _this$props.name;\n if (_this.cancelRegisterFunc) {\n _this.cancelRegisterFunc(isListField, preserve, getNamePath(name));\n }\n _this.cancelRegisterFunc = null;\n };\n // ================================== Utils ==================================\n _this.getNamePath = function () {\n var _this$props2 = _this.props,\n name = _this$props2.name,\n fieldContext = _this$props2.fieldContext;\n var _fieldContext$prefixN = fieldContext.prefixName,\n prefixName = _fieldContext$prefixN === void 0 ? [] : _fieldContext$prefixN;\n return name !== undefined ? [].concat(_toConsumableArray(prefixName), _toConsumableArray(name)) : [];\n };\n _this.getRules = function () {\n var _this$props3 = _this.props,\n _this$props3$rules = _this$props3.rules,\n rules = _this$props3$rules === void 0 ? [] : _this$props3$rules,\n fieldContext = _this$props3.fieldContext;\n return rules.map(function (rule) {\n if (typeof rule === 'function') {\n return rule(fieldContext);\n }\n return rule;\n });\n };\n _this.refresh = function () {\n if (!_this.mounted) return;\n /**\n * Clean up current node.\n */\n _this.setState(function (_ref) {\n var resetCount = _ref.resetCount;\n return {\n resetCount: resetCount + 1\n };\n });\n };\n // Event should only trigger when meta changed\n _this.metaCache = null;\n _this.triggerMetaEvent = function (destroy) {\n var onMetaChange = _this.props.onMetaChange;\n if (onMetaChange) {\n var meta = _objectSpread(_objectSpread({}, _this.getMeta()), {}, {\n destroy: destroy\n });\n if (!isEqual(_this.metaCache, meta)) {\n onMetaChange(meta);\n }\n _this.metaCache = meta;\n } else {\n _this.metaCache = null;\n }\n };\n // ========================= Field Entity Interfaces =========================\n // Trigger by store update. Check if need update the component\n _this.onStoreChange = function (prevStore, namePathList, info) {\n var _this$props4 = _this.props,\n shouldUpdate = _this$props4.shouldUpdate,\n _this$props4$dependen = _this$props4.dependencies,\n dependencies = _this$props4$dependen === void 0 ? [] : _this$props4$dependen,\n onReset = _this$props4.onReset;\n var store = info.store;\n var namePath = _this.getNamePath();\n var prevValue = _this.getValue(prevStore);\n var curValue = _this.getValue(store);\n var namePathMatch = namePathList && containsNamePath(namePathList, namePath);\n // `setFieldsValue` is a quick access to update related status\n if (info.type === 'valueUpdate' && info.source === 'external' && prevValue !== curValue) {\n _this.touched = true;\n _this.dirty = true;\n _this.validatePromise = null;\n _this.errors = EMPTY_ERRORS;\n _this.warnings = EMPTY_ERRORS;\n _this.triggerMetaEvent();\n }\n switch (info.type) {\n case 'reset':\n if (!namePathList || namePathMatch) {\n // Clean up state\n _this.touched = false;\n _this.dirty = false;\n _this.validatePromise = undefined;\n _this.errors = EMPTY_ERRORS;\n _this.warnings = EMPTY_ERRORS;\n _this.triggerMetaEvent();\n onReset === null || onReset === void 0 ? void 0 : onReset();\n _this.refresh();\n return;\n }\n break;\n /**\n * In case field with `preserve = false` nest deps like:\n * - A = 1 => show B\n * - B = 1 => show C\n * - Reset A, need clean B, C\n */\n case 'remove':\n {\n if (shouldUpdate) {\n _this.reRender();\n return;\n }\n break;\n }\n case 'setField':\n {\n if (namePathMatch) {\n var data = info.data;\n if ('touched' in data) {\n _this.touched = data.touched;\n }\n if ('validating' in data && !('originRCField' in data)) {\n _this.validatePromise = data.validating ? Promise.resolve([]) : null;\n }\n if ('errors' in data) {\n _this.errors = data.errors || EMPTY_ERRORS;\n }\n if ('warnings' in data) {\n _this.warnings = data.warnings || EMPTY_ERRORS;\n }\n _this.dirty = true;\n _this.triggerMetaEvent();\n _this.reRender();\n return;\n }\n // Handle update by `setField` with `shouldUpdate`\n if (shouldUpdate && !namePath.length && requireUpdate(shouldUpdate, prevStore, store, prevValue, curValue, info)) {\n _this.reRender();\n return;\n }\n break;\n }\n case 'dependenciesUpdate':\n {\n /**\n * Trigger when marked `dependencies` updated. Related fields will all update\n */\n var dependencyList = dependencies.map(getNamePath);\n // No need for `namePathMath` check and `shouldUpdate` check, since `valueUpdate` will be\n // emitted earlier and they will work there\n // If set it may cause unnecessary twice rerendering\n if (dependencyList.some(function (dependency) {\n return containsNamePath(info.relatedFields, dependency);\n })) {\n _this.reRender();\n return;\n }\n break;\n }\n default:\n // 1. If `namePath` exists in `namePathList`, means it's related value and should update\n // For example \n // If `namePathList` is [['list']] (List value update), Field should be updated\n // If `namePathList` is [['list', 0]] (Field value update), List shouldn't be updated\n // 2.\n // 2.1 If `dependencies` is set, `name` is not set and `shouldUpdate` is not set,\n // don't use `shouldUpdate`. `dependencies` is view as a shortcut if `shouldUpdate`\n // is not provided\n // 2.2 If `shouldUpdate` provided, use customize logic to update the field\n // else to check if value changed\n if (namePathMatch || (!dependencies.length || namePath.length || shouldUpdate) && requireUpdate(shouldUpdate, prevStore, store, prevValue, curValue, info)) {\n _this.reRender();\n return;\n }\n break;\n }\n if (shouldUpdate === true) {\n _this.reRender();\n }\n };\n _this.validateRules = function (options) {\n // We should fixed namePath & value to avoid developer change then by form function\n var namePath = _this.getNamePath();\n var currentValue = _this.getValue();\n var _ref2 = options || {},\n triggerName = _ref2.triggerName,\n _ref2$validateOnly = _ref2.validateOnly,\n validateOnly = _ref2$validateOnly === void 0 ? false : _ref2$validateOnly;\n // Force change to async to avoid rule OOD under renderProps field\n var rootPromise = Promise.resolve().then(function () {\n if (!_this.mounted) {\n return [];\n }\n var _this$props5 = _this.props,\n _this$props5$validate = _this$props5.validateFirst,\n validateFirst = _this$props5$validate === void 0 ? false : _this$props5$validate,\n messageVariables = _this$props5.messageVariables;\n var filteredRules = _this.getRules();\n if (triggerName) {\n filteredRules = filteredRules.filter(function (rule) {\n return rule;\n }).filter(function (rule) {\n var validateTrigger = rule.validateTrigger;\n if (!validateTrigger) {\n return true;\n }\n var triggerList = toArray(validateTrigger);\n return triggerList.includes(triggerName);\n });\n }\n var promise = validateRules(namePath, currentValue, filteredRules, options, validateFirst, messageVariables);\n promise.catch(function (e) {\n return e;\n }).then(function () {\n var ruleErrors = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : EMPTY_ERRORS;\n if (_this.validatePromise === rootPromise) {\n var _ruleErrors$forEach;\n _this.validatePromise = null;\n // Get errors & warnings\n var nextErrors = [];\n var nextWarnings = [];\n (_ruleErrors$forEach = ruleErrors.forEach) === null || _ruleErrors$forEach === void 0 ? void 0 : _ruleErrors$forEach.call(ruleErrors, function (_ref3) {\n var warningOnly = _ref3.rule.warningOnly,\n _ref3$errors = _ref3.errors,\n errors = _ref3$errors === void 0 ? EMPTY_ERRORS : _ref3$errors;\n if (warningOnly) {\n nextWarnings.push.apply(nextWarnings, _toConsumableArray(errors));\n } else {\n nextErrors.push.apply(nextErrors, _toConsumableArray(errors));\n }\n });\n _this.errors = nextErrors;\n _this.warnings = nextWarnings;\n _this.triggerMetaEvent();\n _this.reRender();\n }\n });\n return promise;\n });\n if (validateOnly) {\n return rootPromise;\n }\n _this.validatePromise = rootPromise;\n _this.dirty = true;\n _this.errors = EMPTY_ERRORS;\n _this.warnings = EMPTY_ERRORS;\n _this.triggerMetaEvent();\n // Force trigger re-render since we need sync renderProps with new meta\n _this.reRender();\n return rootPromise;\n };\n _this.isFieldValidating = function () {\n return !!_this.validatePromise;\n };\n _this.isFieldTouched = function () {\n return _this.touched;\n };\n _this.isFieldDirty = function () {\n // Touched or validate or has initialValue\n if (_this.dirty || _this.props.initialValue !== undefined) {\n return true;\n }\n // Form set initialValue\n var fieldContext = _this.props.fieldContext;\n var _fieldContext$getInte = fieldContext.getInternalHooks(HOOK_MARK),\n getInitialValue = _fieldContext$getInte.getInitialValue;\n if (getInitialValue(_this.getNamePath()) !== undefined) {\n return true;\n }\n return false;\n };\n _this.getErrors = function () {\n return _this.errors;\n };\n _this.getWarnings = function () {\n return _this.warnings;\n };\n _this.isListField = function () {\n return _this.props.isListField;\n };\n _this.isList = function () {\n return _this.props.isList;\n };\n _this.isPreserve = function () {\n return _this.props.preserve;\n };\n // ============================= Child Component =============================\n _this.getMeta = function () {\n // Make error & validating in cache to save perf\n _this.prevValidating = _this.isFieldValidating();\n var meta = {\n touched: _this.isFieldTouched(),\n validating: _this.prevValidating,\n errors: _this.errors,\n warnings: _this.warnings,\n name: _this.getNamePath(),\n validated: _this.validatePromise === null\n };\n return meta;\n };\n // Only return validate child node. If invalidate, will do nothing about field.\n _this.getOnlyChild = function (children) {\n // Support render props\n if (typeof children === 'function') {\n var meta = _this.getMeta();\n return _objectSpread(_objectSpread({}, _this.getOnlyChild(children(_this.getControlled(), meta, _this.props.fieldContext))), {}, {\n isFunction: true\n });\n }\n // Filed element only\n var childList = toChildrenArray(children);\n if (childList.length !== 1 || ! /*#__PURE__*/React.isValidElement(childList[0])) {\n return {\n child: childList,\n isFunction: false\n };\n }\n return {\n child: childList[0],\n isFunction: false\n };\n };\n // ============================== Field Control ==============================\n _this.getValue = function (store) {\n var getFieldsValue = _this.props.fieldContext.getFieldsValue;\n var namePath = _this.getNamePath();\n return getValue(store || getFieldsValue(true), namePath);\n };\n _this.getControlled = function () {\n var childProps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _this$props6 = _this.props,\n trigger = _this$props6.trigger,\n validateTrigger = _this$props6.validateTrigger,\n getValueFromEvent = _this$props6.getValueFromEvent,\n normalize = _this$props6.normalize,\n valuePropName = _this$props6.valuePropName,\n getValueProps = _this$props6.getValueProps,\n fieldContext = _this$props6.fieldContext;\n var mergedValidateTrigger = validateTrigger !== undefined ? validateTrigger : fieldContext.validateTrigger;\n var namePath = _this.getNamePath();\n var getInternalHooks = fieldContext.getInternalHooks,\n getFieldsValue = fieldContext.getFieldsValue;\n var _getInternalHooks = getInternalHooks(HOOK_MARK),\n dispatch = _getInternalHooks.dispatch;\n var value = _this.getValue();\n var mergedGetValueProps = getValueProps || function (val) {\n return _defineProperty({}, valuePropName, val);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var originTriggerFunc = childProps[trigger];\n var control = _objectSpread(_objectSpread({}, childProps), mergedGetValueProps(value));\n // Add trigger\n control[trigger] = function () {\n // Mark as touched\n _this.touched = true;\n _this.dirty = true;\n _this.triggerMetaEvent();\n var newValue;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (getValueFromEvent) {\n newValue = getValueFromEvent.apply(void 0, args);\n } else {\n newValue = defaultGetValueFromEvent.apply(void 0, [valuePropName].concat(args));\n }\n if (normalize) {\n newValue = normalize(newValue, value, getFieldsValue(true));\n }\n dispatch({\n type: 'updateValue',\n namePath: namePath,\n value: newValue\n });\n if (originTriggerFunc) {\n originTriggerFunc.apply(void 0, args);\n }\n };\n // Add validateTrigger\n var validateTriggerList = toArray(mergedValidateTrigger || []);\n validateTriggerList.forEach(function (triggerName) {\n // Wrap additional function of component, so that we can get latest value from store\n var originTrigger = control[triggerName];\n control[triggerName] = function () {\n if (originTrigger) {\n originTrigger.apply(void 0, arguments);\n }\n // Always use latest rules\n var rules = _this.props.rules;\n if (rules && rules.length) {\n // We dispatch validate to root,\n // since it will update related data with other field with same name\n dispatch({\n type: 'validateField',\n namePath: namePath,\n triggerName: triggerName\n });\n }\n };\n });\n return control;\n };\n if (props.fieldContext) {\n var getInternalHooks = props.fieldContext.getInternalHooks;\n var _getInternalHooks2 = getInternalHooks(HOOK_MARK),\n initEntityValue = _getInternalHooks2.initEntityValue;\n initEntityValue(_assertThisInitialized(_this));\n }\n return _this;\n }\n _createClass(Field, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this$props7 = this.props,\n shouldUpdate = _this$props7.shouldUpdate,\n fieldContext = _this$props7.fieldContext;\n this.mounted = true;\n // Register on init\n if (fieldContext) {\n var getInternalHooks = fieldContext.getInternalHooks;\n var _getInternalHooks3 = getInternalHooks(HOOK_MARK),\n registerField = _getInternalHooks3.registerField;\n this.cancelRegisterFunc = registerField(this);\n }\n // One more render for component in case fields not ready\n if (shouldUpdate === true) {\n this.reRender();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.cancelRegister();\n this.triggerMetaEvent(true);\n this.mounted = false;\n }\n }, {\n key: \"reRender\",\n value: function reRender() {\n if (!this.mounted) return;\n this.forceUpdate();\n }\n }, {\n key: \"render\",\n value: function render() {\n var resetCount = this.state.resetCount;\n var children = this.props.children;\n var _this$getOnlyChild = this.getOnlyChild(children),\n child = _this$getOnlyChild.child,\n isFunction = _this$getOnlyChild.isFunction;\n // Not need to `cloneElement` since user can handle this in render function self\n var returnChildNode;\n if (isFunction) {\n returnChildNode = child;\n } else if ( /*#__PURE__*/React.isValidElement(child)) {\n returnChildNode = /*#__PURE__*/React.cloneElement(child, this.getControlled(child.props));\n } else {\n warning(!child, '`children` of Field is not validate ReactElement.');\n returnChildNode = child;\n }\n return /*#__PURE__*/React.createElement(React.Fragment, {\n key: resetCount\n }, returnChildNode);\n }\n }]);\n return Field;\n}(React.Component);\nField.contextType = FieldContext;\nField.defaultProps = {\n trigger: 'onChange',\n valuePropName: 'value'\n};\nfunction WrapperField(_ref5) {\n var name = _ref5.name,\n restProps = _objectWithoutProperties(_ref5, _excluded);\n var fieldContext = React.useContext(FieldContext);\n var listContext = React.useContext(ListContext);\n var namePath = name !== undefined ? getNamePath(name) : undefined;\n var key = 'keep';\n if (!restProps.isListField) {\n key = \"_\".concat((namePath || []).join('_'));\n }\n // Warning if it's a directly list field.\n // We can still support multiple level field preserve.\n if (process.env.NODE_ENV !== 'production' && restProps.preserve === false && restProps.isListField && namePath.length <= 1) {\n warning(false, '`preserve` should not apply on Form.List fields.');\n }\n return /*#__PURE__*/React.createElement(Field, _extends({\n key: key,\n name: namePath,\n isListField: !!listContext\n }, restProps, {\n fieldContext: fieldContext\n }));\n}\nexport default WrapperField;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport * as React from 'react';\nimport warning from \"rc-util/es/warning\";\nimport FieldContext from './FieldContext';\nimport Field from './Field';\nimport { move as _move, getNamePath } from './utils/valueUtil';\nimport ListContext from './ListContext';\nfunction List(_ref) {\n var name = _ref.name,\n initialValue = _ref.initialValue,\n children = _ref.children,\n rules = _ref.rules,\n validateTrigger = _ref.validateTrigger,\n isListField = _ref.isListField;\n var context = React.useContext(FieldContext);\n var wrapperListContext = React.useContext(ListContext);\n var keyRef = React.useRef({\n keys: [],\n id: 0\n });\n var keyManager = keyRef.current;\n var prefixName = React.useMemo(function () {\n var parentPrefixName = getNamePath(context.prefixName) || [];\n return [].concat(_toConsumableArray(parentPrefixName), _toConsumableArray(getNamePath(name)));\n }, [context.prefixName, name]);\n var fieldContext = React.useMemo(function () {\n return _objectSpread(_objectSpread({}, context), {}, {\n prefixName: prefixName\n });\n }, [context, prefixName]);\n // List context\n var listContext = React.useMemo(function () {\n return {\n getKey: function getKey(namePath) {\n var len = prefixName.length;\n var pathName = namePath[len];\n return [keyManager.keys[pathName], namePath.slice(len + 1)];\n }\n };\n }, [prefixName]);\n // User should not pass `children` as other type.\n if (typeof children !== 'function') {\n warning(false, 'Form.List only accepts function as children.');\n return null;\n }\n var shouldUpdate = function shouldUpdate(prevValue, nextValue, _ref2) {\n var source = _ref2.source;\n if (source === 'internal') {\n return false;\n }\n return prevValue !== nextValue;\n };\n return /*#__PURE__*/React.createElement(ListContext.Provider, {\n value: listContext\n }, /*#__PURE__*/React.createElement(FieldContext.Provider, {\n value: fieldContext\n }, /*#__PURE__*/React.createElement(Field, {\n name: [],\n shouldUpdate: shouldUpdate,\n rules: rules,\n validateTrigger: validateTrigger,\n initialValue: initialValue,\n isList: true,\n isListField: isListField !== null && isListField !== void 0 ? isListField : !!wrapperListContext\n }, function (_ref3, meta) {\n var _ref3$value = _ref3.value,\n value = _ref3$value === void 0 ? [] : _ref3$value,\n onChange = _ref3.onChange;\n var getFieldValue = context.getFieldValue;\n var getNewValue = function getNewValue() {\n var values = getFieldValue(prefixName || []);\n return values || [];\n };\n /**\n * Always get latest value in case user update fields by `form` api.\n */\n var operations = {\n add: function add(defaultValue, index) {\n // Mapping keys\n var newValue = getNewValue();\n if (index >= 0 && index <= newValue.length) {\n keyManager.keys = [].concat(_toConsumableArray(keyManager.keys.slice(0, index)), [keyManager.id], _toConsumableArray(keyManager.keys.slice(index)));\n onChange([].concat(_toConsumableArray(newValue.slice(0, index)), [defaultValue], _toConsumableArray(newValue.slice(index))));\n } else {\n if (process.env.NODE_ENV !== 'production' && (index < 0 || index > newValue.length)) {\n warning(false, 'The second parameter of the add function should be a valid positive number.');\n }\n keyManager.keys = [].concat(_toConsumableArray(keyManager.keys), [keyManager.id]);\n onChange([].concat(_toConsumableArray(newValue), [defaultValue]));\n }\n keyManager.id += 1;\n },\n remove: function remove(index) {\n var newValue = getNewValue();\n var indexSet = new Set(Array.isArray(index) ? index : [index]);\n if (indexSet.size <= 0) {\n return;\n }\n keyManager.keys = keyManager.keys.filter(function (_, keysIndex) {\n return !indexSet.has(keysIndex);\n });\n // Trigger store change\n onChange(newValue.filter(function (_, valueIndex) {\n return !indexSet.has(valueIndex);\n }));\n },\n move: function move(from, to) {\n if (from === to) {\n return;\n }\n var newValue = getNewValue();\n // Do not handle out of range\n if (from < 0 || from >= newValue.length || to < 0 || to >= newValue.length) {\n return;\n }\n keyManager.keys = _move(keyManager.keys, from, to);\n // Trigger store change\n onChange(_move(newValue, from, to));\n }\n };\n var listValue = value || [];\n if (!Array.isArray(listValue)) {\n listValue = [];\n if (process.env.NODE_ENV !== 'production') {\n warning(false, \"Current value of '\".concat(prefixName.join(' > '), \"' is not an array type.\"));\n }\n }\n return children(listValue.map(function (__, index) {\n var key = keyManager.keys[index];\n if (key === undefined) {\n keyManager.keys[index] = keyManager.id;\n key = keyManager.keys[index];\n keyManager.id += 1;\n }\n return {\n name: index,\n key: key,\n isListField: true\n };\n }), operations, meta);\n })));\n}\nexport default List;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar SPLIT = '__@field_split__';\n/**\n * Convert name path into string to fast the fetch speed of Map.\n */\nfunction normalize(namePath) {\n return namePath.map(function (cell) {\n return \"\".concat(_typeof(cell), \":\").concat(cell);\n })\n // Magic split\n .join(SPLIT);\n}\n/**\n * NameMap like a `Map` but accepts `string[]` as key.\n */\nvar NameMap = /*#__PURE__*/function () {\n function NameMap() {\n _classCallCheck(this, NameMap);\n this.kvs = new Map();\n }\n _createClass(NameMap, [{\n key: \"set\",\n value: function set(key, value) {\n this.kvs.set(normalize(key), value);\n }\n }, {\n key: \"get\",\n value: function get(key) {\n return this.kvs.get(normalize(key));\n }\n }, {\n key: \"update\",\n value: function update(key, updater) {\n var origin = this.get(key);\n var next = updater(origin);\n if (!next) {\n this.delete(key);\n } else {\n this.set(key, next);\n }\n }\n }, {\n key: \"delete\",\n value: function _delete(key) {\n this.kvs.delete(normalize(key));\n }\n // Since we only use this in test, let simply realize this\n }, {\n key: \"map\",\n value: function map(callback) {\n return _toConsumableArray(this.kvs.entries()).map(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n key = _ref2[0],\n value = _ref2[1];\n var cells = key.split(SPLIT);\n return callback({\n key: cells.map(function (cell) {\n var _cell$match = cell.match(/^([^:]*):(.*)$/),\n _cell$match2 = _slicedToArray(_cell$match, 3),\n type = _cell$match2[1],\n unit = _cell$match2[2];\n return type === 'number' ? Number(unit) : unit;\n }),\n value: value\n });\n });\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n var json = {};\n this.map(function (_ref3) {\n var key = _ref3.key,\n value = _ref3.value;\n json[key.join('.')] = value;\n return null;\n });\n return json;\n }\n }]);\n return NameMap;\n}();\nexport default NameMap;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nvar _excluded = [\"name\"];\nimport warning from \"rc-util/es/warning\";\nimport * as React from 'react';\nimport { HOOK_MARK } from './FieldContext';\nimport { allPromiseFinish } from './utils/asyncUtil';\nimport { merge } from \"rc-util/es/utils/set\";\nimport { defaultValidateMessages } from './utils/messages';\nimport NameMap from './utils/NameMap';\nimport { cloneByNamePathList, containsNamePath, getNamePath, getValue, matchNamePath, setValue } from './utils/valueUtil';\nexport var FormStore = /*#__PURE__*/_createClass(function FormStore(forceRootUpdate) {\n var _this = this;\n _classCallCheck(this, FormStore);\n this.formHooked = false;\n this.forceRootUpdate = void 0;\n this.subscribable = true;\n this.store = {};\n this.fieldEntities = [];\n this.initialValues = {};\n this.callbacks = {};\n this.validateMessages = null;\n this.preserve = null;\n this.lastValidatePromise = null;\n this.getForm = function () {\n return {\n getFieldValue: _this.getFieldValue,\n getFieldsValue: _this.getFieldsValue,\n getFieldError: _this.getFieldError,\n getFieldWarning: _this.getFieldWarning,\n getFieldsError: _this.getFieldsError,\n isFieldsTouched: _this.isFieldsTouched,\n isFieldTouched: _this.isFieldTouched,\n isFieldValidating: _this.isFieldValidating,\n isFieldsValidating: _this.isFieldsValidating,\n resetFields: _this.resetFields,\n setFields: _this.setFields,\n setFieldValue: _this.setFieldValue,\n setFieldsValue: _this.setFieldsValue,\n validateFields: _this.validateFields,\n submit: _this.submit,\n _init: true,\n getInternalHooks: _this.getInternalHooks\n };\n };\n // ======================== Internal Hooks ========================\n this.getInternalHooks = function (key) {\n if (key === HOOK_MARK) {\n _this.formHooked = true;\n return {\n dispatch: _this.dispatch,\n initEntityValue: _this.initEntityValue,\n registerField: _this.registerField,\n useSubscribe: _this.useSubscribe,\n setInitialValues: _this.setInitialValues,\n destroyForm: _this.destroyForm,\n setCallbacks: _this.setCallbacks,\n setValidateMessages: _this.setValidateMessages,\n getFields: _this.getFields,\n setPreserve: _this.setPreserve,\n getInitialValue: _this.getInitialValue,\n registerWatch: _this.registerWatch\n };\n }\n warning(false, '`getInternalHooks` is internal usage. Should not call directly.');\n return null;\n };\n this.useSubscribe = function (subscribable) {\n _this.subscribable = subscribable;\n };\n /**\n * Record prev Form unmount fieldEntities which config preserve false.\n * This need to be refill with initialValues instead of store value.\n */\n this.prevWithoutPreserves = null;\n /**\n * First time `setInitialValues` should update store with initial value\n */\n this.setInitialValues = function (initialValues, init) {\n _this.initialValues = initialValues || {};\n if (init) {\n var _this$prevWithoutPres;\n var nextStore = merge(initialValues, _this.store);\n // We will take consider prev form unmount fields.\n // When the field is not `preserve`, we need fill this with initialValues instead of store.\n // eslint-disable-next-line array-callback-return\n (_this$prevWithoutPres = _this.prevWithoutPreserves) === null || _this$prevWithoutPres === void 0 ? void 0 : _this$prevWithoutPres.map(function (_ref) {\n var namePath = _ref.key;\n nextStore = setValue(nextStore, namePath, getValue(initialValues, namePath));\n });\n _this.prevWithoutPreserves = null;\n _this.updateStore(nextStore);\n }\n };\n this.destroyForm = function () {\n var prevWithoutPreserves = new NameMap();\n _this.getFieldEntities(true).forEach(function (entity) {\n if (!_this.isMergedPreserve(entity.isPreserve())) {\n prevWithoutPreserves.set(entity.getNamePath(), true);\n }\n });\n _this.prevWithoutPreserves = prevWithoutPreserves;\n };\n this.getInitialValue = function (namePath) {\n var initValue = getValue(_this.initialValues, namePath);\n // Not cloneDeep when without `namePath`\n return namePath.length ? merge(initValue) : initValue;\n };\n this.setCallbacks = function (callbacks) {\n _this.callbacks = callbacks;\n };\n this.setValidateMessages = function (validateMessages) {\n _this.validateMessages = validateMessages;\n };\n this.setPreserve = function (preserve) {\n _this.preserve = preserve;\n };\n // ============================= Watch ============================\n this.watchList = [];\n this.registerWatch = function (callback) {\n _this.watchList.push(callback);\n return function () {\n _this.watchList = _this.watchList.filter(function (fn) {\n return fn !== callback;\n });\n };\n };\n this.notifyWatch = function () {\n var namePath = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n // No need to cost perf when nothing need to watch\n if (_this.watchList.length) {\n var values = _this.getFieldsValue();\n var allValues = _this.getFieldsValue(true);\n _this.watchList.forEach(function (callback) {\n callback(values, allValues, namePath);\n });\n }\n };\n // ========================== Dev Warning =========================\n this.timeoutId = null;\n this.warningUnhooked = function () {\n if (process.env.NODE_ENV !== 'production' && !_this.timeoutId && typeof window !== 'undefined') {\n _this.timeoutId = setTimeout(function () {\n _this.timeoutId = null;\n if (!_this.formHooked) {\n warning(false, 'Instance created by `useForm` is not connected to any Form element. Forget to pass `form` prop?');\n }\n });\n }\n };\n // ============================ Store =============================\n this.updateStore = function (nextStore) {\n _this.store = nextStore;\n };\n // ============================ Fields ============================\n /**\n * Get registered field entities.\n * @param pure Only return field which has a `name`. Default: false\n */\n this.getFieldEntities = function () {\n var pure = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n if (!pure) {\n return _this.fieldEntities;\n }\n return _this.fieldEntities.filter(function (field) {\n return field.getNamePath().length;\n });\n };\n this.getFieldsMap = function () {\n var pure = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var cache = new NameMap();\n _this.getFieldEntities(pure).forEach(function (field) {\n var namePath = field.getNamePath();\n cache.set(namePath, field);\n });\n return cache;\n };\n this.getFieldEntitiesForNamePathList = function (nameList) {\n if (!nameList) {\n return _this.getFieldEntities(true);\n }\n var cache = _this.getFieldsMap(true);\n return nameList.map(function (name) {\n var namePath = getNamePath(name);\n return cache.get(namePath) || {\n INVALIDATE_NAME_PATH: getNamePath(name)\n };\n });\n };\n this.getFieldsValue = function (nameList, filterFunc) {\n _this.warningUnhooked();\n // Fill args\n var mergedNameList;\n var mergedFilterFunc;\n var mergedStrict;\n if (nameList === true || Array.isArray(nameList)) {\n mergedNameList = nameList;\n mergedFilterFunc = filterFunc;\n } else if (nameList && _typeof(nameList) === 'object') {\n mergedStrict = nameList.strict;\n mergedFilterFunc = nameList.filter;\n }\n if (mergedNameList === true && !mergedFilterFunc) {\n return _this.store;\n }\n var fieldEntities = _this.getFieldEntitiesForNamePathList(Array.isArray(mergedNameList) ? mergedNameList : null);\n var filteredNameList = [];\n fieldEntities.forEach(function (entity) {\n var _entity$isListField;\n var namePath = 'INVALIDATE_NAME_PATH' in entity ? entity.INVALIDATE_NAME_PATH : entity.getNamePath();\n // Ignore when it's a list item and not specific the namePath,\n // since parent field is already take in count\n if (mergedStrict) {\n var _entity$isList;\n if ((_entity$isList = entity.isList) === null || _entity$isList === void 0 ? void 0 : _entity$isList.call(entity)) {\n return;\n }\n } else if (!mergedNameList && ((_entity$isListField = entity.isListField) === null || _entity$isListField === void 0 ? void 0 : _entity$isListField.call(entity))) {\n return;\n }\n if (!mergedFilterFunc) {\n filteredNameList.push(namePath);\n } else {\n var meta = 'getMeta' in entity ? entity.getMeta() : null;\n if (mergedFilterFunc(meta)) {\n filteredNameList.push(namePath);\n }\n }\n });\n return cloneByNamePathList(_this.store, filteredNameList.map(getNamePath));\n };\n this.getFieldValue = function (name) {\n _this.warningUnhooked();\n var namePath = getNamePath(name);\n return getValue(_this.store, namePath);\n };\n this.getFieldsError = function (nameList) {\n _this.warningUnhooked();\n var fieldEntities = _this.getFieldEntitiesForNamePathList(nameList);\n return fieldEntities.map(function (entity, index) {\n if (entity && !('INVALIDATE_NAME_PATH' in entity)) {\n return {\n name: entity.getNamePath(),\n errors: entity.getErrors(),\n warnings: entity.getWarnings()\n };\n }\n return {\n name: getNamePath(nameList[index]),\n errors: [],\n warnings: []\n };\n });\n };\n this.getFieldError = function (name) {\n _this.warningUnhooked();\n var namePath = getNamePath(name);\n var fieldError = _this.getFieldsError([namePath])[0];\n return fieldError.errors;\n };\n this.getFieldWarning = function (name) {\n _this.warningUnhooked();\n var namePath = getNamePath(name);\n var fieldError = _this.getFieldsError([namePath])[0];\n return fieldError.warnings;\n };\n this.isFieldsTouched = function () {\n _this.warningUnhooked();\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var arg0 = args[0],\n arg1 = args[1];\n var namePathList;\n var isAllFieldsTouched = false;\n if (args.length === 0) {\n namePathList = null;\n } else if (args.length === 1) {\n if (Array.isArray(arg0)) {\n namePathList = arg0.map(getNamePath);\n isAllFieldsTouched = false;\n } else {\n namePathList = null;\n isAllFieldsTouched = arg0;\n }\n } else {\n namePathList = arg0.map(getNamePath);\n isAllFieldsTouched = arg1;\n }\n var fieldEntities = _this.getFieldEntities(true);\n var isFieldTouched = function isFieldTouched(field) {\n return field.isFieldTouched();\n };\n // ===== Will get fully compare when not config namePathList =====\n if (!namePathList) {\n return isAllFieldsTouched ? fieldEntities.every(isFieldTouched) : fieldEntities.some(isFieldTouched);\n }\n // Generate a nest tree for validate\n var map = new NameMap();\n namePathList.forEach(function (shortNamePath) {\n map.set(shortNamePath, []);\n });\n fieldEntities.forEach(function (field) {\n var fieldNamePath = field.getNamePath();\n // Find matched entity and put into list\n namePathList.forEach(function (shortNamePath) {\n if (shortNamePath.every(function (nameUnit, i) {\n return fieldNamePath[i] === nameUnit;\n })) {\n map.update(shortNamePath, function (list) {\n return [].concat(_toConsumableArray(list), [field]);\n });\n }\n });\n });\n // Check if NameMap value is touched\n var isNamePathListTouched = function isNamePathListTouched(entities) {\n return entities.some(isFieldTouched);\n };\n var namePathListEntities = map.map(function (_ref2) {\n var value = _ref2.value;\n return value;\n });\n return isAllFieldsTouched ? namePathListEntities.every(isNamePathListTouched) : namePathListEntities.some(isNamePathListTouched);\n };\n this.isFieldTouched = function (name) {\n _this.warningUnhooked();\n return _this.isFieldsTouched([name]);\n };\n this.isFieldsValidating = function (nameList) {\n _this.warningUnhooked();\n var fieldEntities = _this.getFieldEntities();\n if (!nameList) {\n return fieldEntities.some(function (testField) {\n return testField.isFieldValidating();\n });\n }\n var namePathList = nameList.map(getNamePath);\n return fieldEntities.some(function (testField) {\n var fieldNamePath = testField.getNamePath();\n return containsNamePath(namePathList, fieldNamePath) && testField.isFieldValidating();\n });\n };\n this.isFieldValidating = function (name) {\n _this.warningUnhooked();\n return _this.isFieldsValidating([name]);\n };\n /**\n * Reset Field with field `initialValue` prop.\n * Can pass `entities` or `namePathList` or just nothing.\n */\n this.resetWithFieldInitialValue = function () {\n var info = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // Create cache\n var cache = new NameMap();\n var fieldEntities = _this.getFieldEntities(true);\n fieldEntities.forEach(function (field) {\n var initialValue = field.props.initialValue;\n var namePath = field.getNamePath();\n // Record only if has `initialValue`\n if (initialValue !== undefined) {\n var records = cache.get(namePath) || new Set();\n records.add({\n entity: field,\n value: initialValue\n });\n cache.set(namePath, records);\n }\n });\n // Reset\n var resetWithFields = function resetWithFields(entities) {\n entities.forEach(function (field) {\n var initialValue = field.props.initialValue;\n if (initialValue !== undefined) {\n var namePath = field.getNamePath();\n var formInitialValue = _this.getInitialValue(namePath);\n if (formInitialValue !== undefined) {\n // Warning if conflict with form initialValues and do not modify value\n warning(false, \"Form already set 'initialValues' with path '\".concat(namePath.join('.'), \"'. Field can not overwrite it.\"));\n } else {\n var records = cache.get(namePath);\n if (records && records.size > 1) {\n // Warning if multiple field set `initialValue`and do not modify value\n warning(false, \"Multiple Field with path '\".concat(namePath.join('.'), \"' set 'initialValue'. Can not decide which one to pick.\"));\n } else if (records) {\n var originValue = _this.getFieldValue(namePath);\n // Set `initialValue`\n if (!info.skipExist || originValue === undefined) {\n _this.updateStore(setValue(_this.store, namePath, _toConsumableArray(records)[0].value));\n }\n }\n }\n }\n });\n };\n var requiredFieldEntities;\n if (info.entities) {\n requiredFieldEntities = info.entities;\n } else if (info.namePathList) {\n requiredFieldEntities = [];\n info.namePathList.forEach(function (namePath) {\n var records = cache.get(namePath);\n if (records) {\n var _requiredFieldEntitie;\n (_requiredFieldEntitie = requiredFieldEntities).push.apply(_requiredFieldEntitie, _toConsumableArray(_toConsumableArray(records).map(function (r) {\n return r.entity;\n })));\n }\n });\n } else {\n requiredFieldEntities = fieldEntities;\n }\n resetWithFields(requiredFieldEntities);\n };\n this.resetFields = function (nameList) {\n _this.warningUnhooked();\n var prevStore = _this.store;\n if (!nameList) {\n _this.updateStore(merge(_this.initialValues));\n _this.resetWithFieldInitialValue();\n _this.notifyObservers(prevStore, null, {\n type: 'reset'\n });\n _this.notifyWatch();\n return;\n }\n // Reset by `nameList`\n var namePathList = nameList.map(getNamePath);\n namePathList.forEach(function (namePath) {\n var initialValue = _this.getInitialValue(namePath);\n _this.updateStore(setValue(_this.store, namePath, initialValue));\n });\n _this.resetWithFieldInitialValue({\n namePathList: namePathList\n });\n _this.notifyObservers(prevStore, namePathList, {\n type: 'reset'\n });\n _this.notifyWatch(namePathList);\n };\n this.setFields = function (fields) {\n _this.warningUnhooked();\n var prevStore = _this.store;\n var namePathList = [];\n fields.forEach(function (fieldData) {\n var name = fieldData.name,\n data = _objectWithoutProperties(fieldData, _excluded);\n var namePath = getNamePath(name);\n namePathList.push(namePath);\n // Value\n if ('value' in data) {\n _this.updateStore(setValue(_this.store, namePath, data.value));\n }\n _this.notifyObservers(prevStore, [namePath], {\n type: 'setField',\n data: fieldData\n });\n });\n _this.notifyWatch(namePathList);\n };\n this.getFields = function () {\n var entities = _this.getFieldEntities(true);\n var fields = entities.map(function (field) {\n var namePath = field.getNamePath();\n var meta = field.getMeta();\n var fieldData = _objectSpread(_objectSpread({}, meta), {}, {\n name: namePath,\n value: _this.getFieldValue(namePath)\n });\n Object.defineProperty(fieldData, 'originRCField', {\n value: true\n });\n return fieldData;\n });\n return fields;\n };\n // =========================== Observer ===========================\n /**\n * This only trigger when a field is on constructor to avoid we get initialValue too late\n */\n this.initEntityValue = function (entity) {\n var initialValue = entity.props.initialValue;\n if (initialValue !== undefined) {\n var namePath = entity.getNamePath();\n var prevValue = getValue(_this.store, namePath);\n if (prevValue === undefined) {\n _this.updateStore(setValue(_this.store, namePath, initialValue));\n }\n }\n };\n this.isMergedPreserve = function (fieldPreserve) {\n var mergedPreserve = fieldPreserve !== undefined ? fieldPreserve : _this.preserve;\n return mergedPreserve !== null && mergedPreserve !== void 0 ? mergedPreserve : true;\n };\n this.registerField = function (entity) {\n _this.fieldEntities.push(entity);\n var namePath = entity.getNamePath();\n _this.notifyWatch([namePath]);\n // Set initial values\n if (entity.props.initialValue !== undefined) {\n var prevStore = _this.store;\n _this.resetWithFieldInitialValue({\n entities: [entity],\n skipExist: true\n });\n _this.notifyObservers(prevStore, [entity.getNamePath()], {\n type: 'valueUpdate',\n source: 'internal'\n });\n }\n // un-register field callback\n return function (isListField, preserve) {\n var subNamePath = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n _this.fieldEntities = _this.fieldEntities.filter(function (item) {\n return item !== entity;\n });\n // Clean up store value if not preserve\n if (!_this.isMergedPreserve(preserve) && (!isListField || subNamePath.length > 1)) {\n var defaultValue = isListField ? undefined : _this.getInitialValue(namePath);\n if (namePath.length && _this.getFieldValue(namePath) !== defaultValue && _this.fieldEntities.every(function (field) {\n return (\n // Only reset when no namePath exist\n !matchNamePath(field.getNamePath(), namePath)\n );\n })) {\n var _prevStore = _this.store;\n _this.updateStore(setValue(_prevStore, namePath, defaultValue, true));\n // Notify that field is unmount\n _this.notifyObservers(_prevStore, [namePath], {\n type: 'remove'\n });\n // Dependencies update\n _this.triggerDependenciesUpdate(_prevStore, namePath);\n }\n }\n _this.notifyWatch([namePath]);\n };\n };\n this.dispatch = function (action) {\n switch (action.type) {\n case 'updateValue':\n {\n var namePath = action.namePath,\n value = action.value;\n _this.updateValue(namePath, value);\n break;\n }\n case 'validateField':\n {\n var _namePath = action.namePath,\n triggerName = action.triggerName;\n _this.validateFields([_namePath], {\n triggerName: triggerName\n });\n break;\n }\n default:\n // Currently we don't have other action. Do nothing.\n }\n };\n\n this.notifyObservers = function (prevStore, namePathList, info) {\n if (_this.subscribable) {\n var mergedInfo = _objectSpread(_objectSpread({}, info), {}, {\n store: _this.getFieldsValue(true)\n });\n _this.getFieldEntities().forEach(function (_ref3) {\n var onStoreChange = _ref3.onStoreChange;\n onStoreChange(prevStore, namePathList, mergedInfo);\n });\n } else {\n _this.forceRootUpdate();\n }\n };\n /**\n * Notify dependencies children with parent update\n * We need delay to trigger validate in case Field is under render props\n */\n this.triggerDependenciesUpdate = function (prevStore, namePath) {\n var childrenFields = _this.getDependencyChildrenFields(namePath);\n if (childrenFields.length) {\n _this.validateFields(childrenFields);\n }\n _this.notifyObservers(prevStore, childrenFields, {\n type: 'dependenciesUpdate',\n relatedFields: [namePath].concat(_toConsumableArray(childrenFields))\n });\n return childrenFields;\n };\n this.updateValue = function (name, value) {\n var namePath = getNamePath(name);\n var prevStore = _this.store;\n _this.updateStore(setValue(_this.store, namePath, value));\n _this.notifyObservers(prevStore, [namePath], {\n type: 'valueUpdate',\n source: 'internal'\n });\n _this.notifyWatch([namePath]);\n // Dependencies update\n var childrenFields = _this.triggerDependenciesUpdate(prevStore, namePath);\n // trigger callback function\n var onValuesChange = _this.callbacks.onValuesChange;\n if (onValuesChange) {\n var changedValues = cloneByNamePathList(_this.store, [namePath]);\n onValuesChange(changedValues, _this.getFieldsValue());\n }\n _this.triggerOnFieldsChange([namePath].concat(_toConsumableArray(childrenFields)));\n };\n // Let all child Field get update.\n this.setFieldsValue = function (store) {\n _this.warningUnhooked();\n var prevStore = _this.store;\n if (store) {\n var nextStore = merge(_this.store, store);\n _this.updateStore(nextStore);\n }\n _this.notifyObservers(prevStore, null, {\n type: 'valueUpdate',\n source: 'external'\n });\n _this.notifyWatch();\n };\n this.setFieldValue = function (name, value) {\n _this.setFields([{\n name: name,\n value: value\n }]);\n };\n this.getDependencyChildrenFields = function (rootNamePath) {\n var children = new Set();\n var childrenFields = [];\n var dependencies2fields = new NameMap();\n /**\n * Generate maps\n * Can use cache to save perf if user report performance issue with this\n */\n _this.getFieldEntities().forEach(function (field) {\n var dependencies = field.props.dependencies;\n (dependencies || []).forEach(function (dependency) {\n var dependencyNamePath = getNamePath(dependency);\n dependencies2fields.update(dependencyNamePath, function () {\n var fields = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Set();\n fields.add(field);\n return fields;\n });\n });\n });\n var fillChildren = function fillChildren(namePath) {\n var fields = dependencies2fields.get(namePath) || new Set();\n fields.forEach(function (field) {\n if (!children.has(field)) {\n children.add(field);\n var fieldNamePath = field.getNamePath();\n if (field.isFieldDirty() && fieldNamePath.length) {\n childrenFields.push(fieldNamePath);\n fillChildren(fieldNamePath);\n }\n }\n });\n };\n fillChildren(rootNamePath);\n return childrenFields;\n };\n this.triggerOnFieldsChange = function (namePathList, filedErrors) {\n var onFieldsChange = _this.callbacks.onFieldsChange;\n if (onFieldsChange) {\n var fields = _this.getFields();\n /**\n * Fill errors since `fields` may be replaced by controlled fields\n */\n if (filedErrors) {\n var cache = new NameMap();\n filedErrors.forEach(function (_ref4) {\n var name = _ref4.name,\n errors = _ref4.errors;\n cache.set(name, errors);\n });\n fields.forEach(function (field) {\n // eslint-disable-next-line no-param-reassign\n field.errors = cache.get(field.name) || field.errors;\n });\n }\n var changedFields = fields.filter(function (_ref5) {\n var fieldName = _ref5.name;\n return containsNamePath(namePathList, fieldName);\n });\n if (changedFields.length) {\n onFieldsChange(changedFields, fields);\n }\n }\n };\n // =========================== Validate ===========================\n this.validateFields = function (arg1, arg2) {\n _this.warningUnhooked();\n var nameList;\n var options;\n if (Array.isArray(arg1) || typeof arg1 === 'string' || typeof arg2 === 'string') {\n nameList = arg1;\n options = arg2;\n } else {\n options = arg1;\n }\n var provideNameList = !!nameList;\n var namePathList = provideNameList ? nameList.map(getNamePath) : [];\n // Collect result in promise list\n var promiseList = [];\n // We temp save the path which need trigger for `onFieldsChange`\n var TMP_SPLIT = String(Date.now());\n var validateNamePathList = new Set();\n _this.getFieldEntities(true).forEach(function (field) {\n var _options;\n // Add field if not provide `nameList`\n if (!provideNameList) {\n namePathList.push(field.getNamePath());\n }\n /**\n * Recursive validate if configured.\n * TODO: perf improvement @zombieJ\n */\n if (((_options = options) === null || _options === void 0 ? void 0 : _options.recursive) && provideNameList) {\n var namePath = field.getNamePath();\n if (\n // nameList[i] === undefined 说明是以 nameList 开头的\n // ['name'] -> ['name','list']\n namePath.every(function (nameUnit, i) {\n return nameList[i] === nameUnit || nameList[i] === undefined;\n })) {\n namePathList.push(namePath);\n }\n }\n // Skip if without rule\n if (!field.props.rules || !field.props.rules.length) {\n return;\n }\n var fieldNamePath = field.getNamePath();\n validateNamePathList.add(fieldNamePath.join(TMP_SPLIT));\n // Add field validate rule in to promise list\n if (!provideNameList || containsNamePath(namePathList, fieldNamePath)) {\n var promise = field.validateRules(_objectSpread({\n validateMessages: _objectSpread(_objectSpread({}, defaultValidateMessages), _this.validateMessages)\n }, options));\n // Wrap promise with field\n promiseList.push(promise.then(function () {\n return {\n name: fieldNamePath,\n errors: [],\n warnings: []\n };\n }).catch(function (ruleErrors) {\n var _ruleErrors$forEach;\n var mergedErrors = [];\n var mergedWarnings = [];\n (_ruleErrors$forEach = ruleErrors.forEach) === null || _ruleErrors$forEach === void 0 ? void 0 : _ruleErrors$forEach.call(ruleErrors, function (_ref6) {\n var warningOnly = _ref6.rule.warningOnly,\n errors = _ref6.errors;\n if (warningOnly) {\n mergedWarnings.push.apply(mergedWarnings, _toConsumableArray(errors));\n } else {\n mergedErrors.push.apply(mergedErrors, _toConsumableArray(errors));\n }\n });\n if (mergedErrors.length) {\n return Promise.reject({\n name: fieldNamePath,\n errors: mergedErrors,\n warnings: mergedWarnings\n });\n }\n return {\n name: fieldNamePath,\n errors: mergedErrors,\n warnings: mergedWarnings\n };\n }));\n }\n });\n var summaryPromise = allPromiseFinish(promiseList);\n _this.lastValidatePromise = summaryPromise;\n // Notify fields with rule that validate has finished and need update\n summaryPromise.catch(function (results) {\n return results;\n }).then(function (results) {\n var resultNamePathList = results.map(function (_ref7) {\n var name = _ref7.name;\n return name;\n });\n _this.notifyObservers(_this.store, resultNamePathList, {\n type: 'validateFinish'\n });\n _this.triggerOnFieldsChange(resultNamePathList, results);\n });\n var returnPromise = summaryPromise.then(function () {\n if (_this.lastValidatePromise === summaryPromise) {\n return Promise.resolve(_this.getFieldsValue(namePathList));\n }\n return Promise.reject([]);\n }).catch(function (results) {\n var errorList = results.filter(function (result) {\n return result && result.errors.length;\n });\n return Promise.reject({\n values: _this.getFieldsValue(namePathList),\n errorFields: errorList,\n outOfDate: _this.lastValidatePromise !== summaryPromise\n });\n });\n // Do not throw in console\n returnPromise.catch(function (e) {\n return e;\n });\n // `validating` changed. Trigger `onFieldsChange`\n var triggerNamePathList = namePathList.filter(function (namePath) {\n return validateNamePathList.has(namePath.join(TMP_SPLIT));\n });\n _this.triggerOnFieldsChange(triggerNamePathList);\n return returnPromise;\n };\n // ============================ Submit ============================\n this.submit = function () {\n _this.warningUnhooked();\n _this.validateFields().then(function (values) {\n var onFinish = _this.callbacks.onFinish;\n if (onFinish) {\n try {\n onFinish(values);\n } catch (err) {\n // Should print error if user `onFinish` callback failed\n console.error(err);\n }\n }\n }).catch(function (e) {\n var onFinishFailed = _this.callbacks.onFinishFailed;\n if (onFinishFailed) {\n onFinishFailed(e);\n }\n });\n };\n this.forceRootUpdate = forceRootUpdate;\n});\nfunction useForm(form) {\n var formRef = React.useRef();\n var _React$useState = React.useState({}),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n forceUpdate = _React$useState2[1];\n if (!formRef.current) {\n if (form) {\n formRef.current = form;\n } else {\n // Create a new FormStore if not provided\n var forceReRender = function forceReRender() {\n forceUpdate({});\n };\n var formStore = new FormStore(forceReRender);\n formRef.current = formStore.getForm();\n }\n }\n return [formRef.current];\n}\nexport default useForm;","export function allPromiseFinish(promiseList) {\n var hasError = false;\n var count = promiseList.length;\n var results = [];\n if (!promiseList.length) {\n return Promise.resolve([]);\n }\n return new Promise(function (resolve, reject) {\n promiseList.forEach(function (promise, index) {\n promise.catch(function (e) {\n hasError = true;\n return e;\n }).then(function (result) {\n count -= 1;\n results[index] = result;\n if (count > 0) {\n return;\n }\n if (hasError) {\n reject(results);\n }\n resolve(results);\n });\n });\n });\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nvar FormContext = /*#__PURE__*/React.createContext({\n triggerFormChange: function triggerFormChange() {},\n triggerFormFinish: function triggerFormFinish() {},\n registerForm: function registerForm() {},\n unregisterForm: function unregisterForm() {}\n});\nvar FormProvider = function FormProvider(_ref) {\n var validateMessages = _ref.validateMessages,\n onFormChange = _ref.onFormChange,\n onFormFinish = _ref.onFormFinish,\n children = _ref.children;\n var formContext = React.useContext(FormContext);\n var formsRef = React.useRef({});\n return /*#__PURE__*/React.createElement(FormContext.Provider, {\n value: _objectSpread(_objectSpread({}, formContext), {}, {\n validateMessages: _objectSpread(_objectSpread({}, formContext.validateMessages), validateMessages),\n // =========================================================\n // = Global Form Control =\n // =========================================================\n triggerFormChange: function triggerFormChange(name, changedFields) {\n if (onFormChange) {\n onFormChange(name, {\n changedFields: changedFields,\n forms: formsRef.current\n });\n }\n formContext.triggerFormChange(name, changedFields);\n },\n triggerFormFinish: function triggerFormFinish(name, values) {\n if (onFormFinish) {\n onFormFinish(name, {\n values: values,\n forms: formsRef.current\n });\n }\n formContext.triggerFormFinish(name, values);\n },\n registerForm: function registerForm(name, form) {\n if (name) {\n formsRef.current = _objectSpread(_objectSpread({}, formsRef.current), {}, _defineProperty({}, name, form));\n }\n formContext.registerForm(name, form);\n },\n unregisterForm: function unregisterForm(name) {\n var newForms = _objectSpread({}, formsRef.current);\n delete newForms[name];\n formsRef.current = newForms;\n formContext.unregisterForm(name);\n }\n })\n }, children);\n};\nexport { FormProvider };\nexport default FormContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"name\", \"initialValues\", \"fields\", \"form\", \"preserve\", \"children\", \"component\", \"validateMessages\", \"validateTrigger\", \"onValuesChange\", \"onFieldsChange\", \"onFinish\", \"onFinishFailed\"];\nimport * as React from 'react';\nimport useForm from './useForm';\nimport FieldContext, { HOOK_MARK } from './FieldContext';\nimport FormContext from './FormContext';\nimport { isSimilar } from './utils/valueUtil';\nimport ListContext from './ListContext';\nvar Form = function Form(_ref, ref) {\n var name = _ref.name,\n initialValues = _ref.initialValues,\n fields = _ref.fields,\n form = _ref.form,\n preserve = _ref.preserve,\n children = _ref.children,\n _ref$component = _ref.component,\n Component = _ref$component === void 0 ? 'form' : _ref$component,\n validateMessages = _ref.validateMessages,\n _ref$validateTrigger = _ref.validateTrigger,\n validateTrigger = _ref$validateTrigger === void 0 ? 'onChange' : _ref$validateTrigger,\n onValuesChange = _ref.onValuesChange,\n _onFieldsChange = _ref.onFieldsChange,\n _onFinish = _ref.onFinish,\n onFinishFailed = _ref.onFinishFailed,\n restProps = _objectWithoutProperties(_ref, _excluded);\n var formContext = React.useContext(FormContext);\n // We customize handle event since Context will makes all the consumer re-render:\n // https://reactjs.org/docs/context.html#contextprovider\n var _useForm = useForm(form),\n _useForm2 = _slicedToArray(_useForm, 1),\n formInstance = _useForm2[0];\n var _formInstance$getInte = formInstance.getInternalHooks(HOOK_MARK),\n useSubscribe = _formInstance$getInte.useSubscribe,\n setInitialValues = _formInstance$getInte.setInitialValues,\n setCallbacks = _formInstance$getInte.setCallbacks,\n setValidateMessages = _formInstance$getInte.setValidateMessages,\n setPreserve = _formInstance$getInte.setPreserve,\n destroyForm = _formInstance$getInte.destroyForm;\n // Pass ref with form instance\n React.useImperativeHandle(ref, function () {\n return formInstance;\n });\n // Register form into Context\n React.useEffect(function () {\n formContext.registerForm(name, formInstance);\n return function () {\n formContext.unregisterForm(name);\n };\n }, [formContext, formInstance, name]);\n // Pass props to store\n setValidateMessages(_objectSpread(_objectSpread({}, formContext.validateMessages), validateMessages));\n setCallbacks({\n onValuesChange: onValuesChange,\n onFieldsChange: function onFieldsChange(changedFields) {\n formContext.triggerFormChange(name, changedFields);\n if (_onFieldsChange) {\n for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n rest[_key - 1] = arguments[_key];\n }\n _onFieldsChange.apply(void 0, [changedFields].concat(rest));\n }\n },\n onFinish: function onFinish(values) {\n formContext.triggerFormFinish(name, values);\n if (_onFinish) {\n _onFinish(values);\n }\n },\n onFinishFailed: onFinishFailed\n });\n setPreserve(preserve);\n // Set initial value, init store value when first mount\n var mountRef = React.useRef(null);\n setInitialValues(initialValues, !mountRef.current);\n if (!mountRef.current) {\n mountRef.current = true;\n }\n React.useEffect(function () {\n return destroyForm;\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []);\n // Prepare children by `children` type\n var childrenNode;\n var childrenRenderProps = typeof children === 'function';\n if (childrenRenderProps) {\n var values = formInstance.getFieldsValue(true);\n childrenNode = children(values, formInstance);\n } else {\n childrenNode = children;\n }\n // Not use subscribe when using render props\n useSubscribe(!childrenRenderProps);\n // Listen if fields provided. We use ref to save prev data here to avoid additional render\n var prevFieldsRef = React.useRef();\n React.useEffect(function () {\n if (!isSimilar(prevFieldsRef.current || [], fields || [])) {\n formInstance.setFields(fields || []);\n }\n prevFieldsRef.current = fields;\n }, [fields, formInstance]);\n var formContextValue = React.useMemo(function () {\n return _objectSpread(_objectSpread({}, formInstance), {}, {\n validateTrigger: validateTrigger\n });\n }, [formInstance, validateTrigger]);\n var wrapperNode = /*#__PURE__*/React.createElement(ListContext.Provider, {\n value: null\n }, /*#__PURE__*/React.createElement(FieldContext.Provider, {\n value: formContextValue\n }, childrenNode));\n if (Component === false) {\n return wrapperNode;\n }\n return /*#__PURE__*/React.createElement(Component, _extends({}, restProps, {\n onSubmit: function onSubmit(event) {\n event.preventDefault();\n event.stopPropagation();\n formInstance.submit();\n },\n onReset: function onReset(event) {\n var _restProps$onReset;\n event.preventDefault();\n formInstance.resetFields();\n (_restProps$onReset = restProps.onReset) === null || _restProps$onReset === void 0 ? void 0 : _restProps$onReset.call(restProps, event);\n }\n }), wrapperNode);\n};\nexport default Form;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport warning from \"rc-util/es/warning\";\nimport FieldContext, { HOOK_MARK } from './FieldContext';\nimport { useState, useContext, useEffect, useRef, useMemo } from 'react';\nimport { getNamePath, getValue } from './utils/valueUtil';\nimport { isFormInstance } from './utils/typeUtil';\nexport function stringify(value) {\n try {\n return JSON.stringify(value);\n } catch (err) {\n return Math.random();\n }\n}\nvar useWatchWarning = process.env.NODE_ENV !== 'production' ? function (namePath) {\n var fullyStr = namePath.join('__RC_FIELD_FORM_SPLIT__');\n var nameStrRef = useRef(fullyStr);\n warning(nameStrRef.current === fullyStr, '`useWatch` is not support dynamic `namePath`. Please provide static instead.');\n} : function () {};\nfunction useWatch() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var _args$ = args[0],\n dependencies = _args$ === void 0 ? [] : _args$,\n _args$2 = args[1],\n _form = _args$2 === void 0 ? {} : _args$2;\n var options = isFormInstance(_form) ? {\n form: _form\n } : _form;\n var form = options.form;\n var _useState = useState(),\n _useState2 = _slicedToArray(_useState, 2),\n value = _useState2[0],\n setValue = _useState2[1];\n var valueStr = useMemo(function () {\n return stringify(value);\n }, [value]);\n var valueStrRef = useRef(valueStr);\n valueStrRef.current = valueStr;\n var fieldContext = useContext(FieldContext);\n var formInstance = form || fieldContext;\n var isValidForm = formInstance && formInstance._init;\n // Warning if not exist form instance\n if (process.env.NODE_ENV !== 'production') {\n warning(args.length === 2 ? form ? isValidForm : true : isValidForm, 'useWatch requires a form instance since it can not auto detect from context.');\n }\n var namePath = getNamePath(dependencies);\n var namePathRef = useRef(namePath);\n namePathRef.current = namePath;\n useWatchWarning(namePath);\n useEffect(function () {\n // Skip if not exist form instance\n if (!isValidForm) {\n return;\n }\n var getFieldsValue = formInstance.getFieldsValue,\n getInternalHooks = formInstance.getInternalHooks;\n var _getInternalHooks = getInternalHooks(HOOK_MARK),\n registerWatch = _getInternalHooks.registerWatch;\n var cancelRegister = registerWatch(function (values, allValues) {\n var newValue = getValue(options.preserve ? allValues : values, namePathRef.current);\n var nextValueStr = stringify(newValue);\n // Compare stringify in case it's nest object\n if (valueStrRef.current !== nextValueStr) {\n valueStrRef.current = nextValueStr;\n setValue(newValue);\n }\n });\n // TODO: We can improve this perf in future\n var initialValue = getValue(options.preserve ? getFieldsValue(true) : getFieldsValue(), namePathRef.current);\n setValue(initialValue);\n return cancelRegister;\n },\n // We do not need re-register since namePath content is the same\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [isValidForm]);\n return value;\n}\nexport default useWatch;","import * as React from 'react';\nimport Field from './Field';\nimport List from './List';\nimport useForm from './useForm';\nimport FieldForm from './Form';\nimport { FormProvider } from './FormContext';\nimport FieldContext from './FieldContext';\nimport ListContext from './ListContext';\nimport useWatch from './useWatch';\nvar InternalForm = /*#__PURE__*/React.forwardRef(FieldForm);\nvar RefForm = InternalForm;\nRefForm.FormProvider = FormProvider;\nRefForm.Field = Field;\nRefForm.List = List;\nRefForm.useForm = useForm;\nRefForm.useWatch = useWatch;\nexport { Field, List, useForm, FormProvider, FieldContext, ListContext, useWatch };\nexport default RefForm;","import { FormProvider as RcFormProvider } from 'rc-field-form';\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport { useContext, useMemo } from 'react';\nexport var FormContext = /*#__PURE__*/React.createContext({\n labelAlign: 'right',\n vertical: false,\n itemRef: function itemRef() {}\n});\nexport var NoStyleItemContext = /*#__PURE__*/React.createContext(null);\nexport var FormProvider = function FormProvider(props) {\n var providerProps = omit(props, ['prefixCls']);\n return /*#__PURE__*/React.createElement(RcFormProvider, Object.assign({}, providerProps));\n};\nexport var FormItemPrefixContext = /*#__PURE__*/React.createContext({\n prefixCls: ''\n});\nexport var FormItemInputContext = /*#__PURE__*/React.createContext({});\nexport var NoFormStyle = function NoFormStyle(_ref) {\n var children = _ref.children,\n status = _ref.status,\n override = _ref.override;\n var formItemInputContext = useContext(FormItemInputContext);\n var newFormItemInputContext = useMemo(function () {\n var newContext = Object.assign({}, formItemInputContext);\n if (override) {\n delete newContext.isFormItemInput;\n }\n if (status) {\n delete newContext.status;\n delete newContext.hasFeedback;\n delete newContext.feedbackIcon;\n }\n return newContext;\n }, [status, override, formItemInputContext]);\n return /*#__PURE__*/React.createElement(FormItemInputContext.Provider, {\n value: newFormItemInputContext\n }, children);\n};","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport CloseOutlined from \"@ant-design/icons/es/icons/CloseOutlined\";\nimport React from 'react';\nimport Button from '../button';\nimport { convertLegacyProps } from '../button/button';\nimport { DisabledContextProvider } from '../config-provider/DisabledContext';\nimport { useLocale } from '../locale';\nimport { getConfirmLocale } from './locale';\nexport function renderCloseIcon(prefixCls, closeIcon) {\n return /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-close-x\")\n }, closeIcon || /*#__PURE__*/React.createElement(CloseOutlined, {\n className: \"\".concat(prefixCls, \"-close-icon\")\n }));\n}\nexport var Footer = function Footer(props) {\n var okText = props.okText,\n _props$okType = props.okType,\n okType = _props$okType === void 0 ? 'primary' : _props$okType,\n cancelText = props.cancelText,\n confirmLoading = props.confirmLoading,\n onOk = props.onOk,\n onCancel = props.onCancel,\n okButtonProps = props.okButtonProps,\n cancelButtonProps = props.cancelButtonProps;\n var _useLocale = useLocale('Modal', getConfirmLocale()),\n _useLocale2 = _slicedToArray(_useLocale, 1),\n locale = _useLocale2[0];\n return /*#__PURE__*/React.createElement(DisabledContextProvider, {\n disabled: false\n }, /*#__PURE__*/React.createElement(Button, Object.assign({\n onClick: onCancel\n }, cancelButtonProps), cancelText || (locale === null || locale === void 0 ? void 0 : locale.cancelText)), /*#__PURE__*/React.createElement(Button, Object.assign({}, convertLegacyProps(okType), {\n loading: confirmLoading,\n onClick: onOk\n }, okButtonProps), okText || (locale === null || locale === void 0 ? void 0 : locale.okText)));\n};","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { clearFix, genFocusStyle, resetComponent } from '../../style';\nimport { initFadeMotion, initZoomMotion } from '../../style/motion';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nfunction box(position) {\n return {\n position: position,\n top: 0,\n insetInlineEnd: 0,\n bottom: 0,\n insetInlineStart: 0\n };\n}\nexport var genModalMaskStyle = function genModalMaskStyle(token) {\n var _$concat;\n var componentCls = token.componentCls,\n antCls = token.antCls;\n return [_defineProperty({}, \"\".concat(componentCls, \"-root\"), (_$concat = {}, _defineProperty(_$concat, \"\".concat(componentCls).concat(antCls, \"-zoom-enter, \").concat(componentCls).concat(antCls, \"-zoom-appear\"), {\n // reset scale avoid mousePosition bug\n transform: 'none',\n opacity: 0,\n animationDuration: token.motionDurationSlow,\n // https://github.com/ant-design/ant-design/issues/11777\n userSelect: 'none'\n }), _defineProperty(_$concat, \"\".concat(componentCls).concat(antCls, \"-zoom-leave \").concat(componentCls, \"-content\"), {\n pointerEvents: 'none'\n }), _defineProperty(_$concat, \"\".concat(componentCls, \"-mask\"), Object.assign(Object.assign({}, box('fixed')), _defineProperty({\n zIndex: token.zIndexPopupBase,\n height: '100%',\n backgroundColor: token.colorBgMask\n }, \"\".concat(componentCls, \"-hidden\"), {\n display: 'none'\n }))), _defineProperty(_$concat, \"\".concat(componentCls, \"-wrap\"), Object.assign(Object.assign({}, box('fixed')), {\n overflow: 'auto',\n outline: 0,\n WebkitOverflowScrolling: 'touch'\n })), _$concat)), _defineProperty({}, \"\".concat(componentCls, \"-root\"), initFadeMotion(token))];\n};\nvar genModalStyle = function genModalStyle(token) {\n var _mediaMaxWidth$, _$concat4, _Object$assign2, _$concat6;\n var componentCls = token.componentCls;\n return [// ======================== Root =========================\n _defineProperty({}, \"\".concat(componentCls, \"-root\"), (_$concat4 = {}, _defineProperty(_$concat4, \"\".concat(componentCls, \"-wrap\"), {\n zIndex: token.zIndexPopupBase,\n position: 'fixed',\n inset: 0,\n overflow: 'auto',\n outline: 0,\n WebkitOverflowScrolling: 'touch'\n }), _defineProperty(_$concat4, \"\".concat(componentCls, \"-wrap-rtl\"), {\n direction: 'rtl'\n }), _defineProperty(_$concat4, \"\".concat(componentCls, \"-centered\"), _defineProperty({\n textAlign: 'center',\n '&::before': {\n display: 'inline-block',\n width: 0,\n height: '100%',\n verticalAlign: 'middle',\n content: '\"\"'\n }\n }, componentCls, {\n top: 0,\n display: 'inline-block',\n paddingBottom: 0,\n textAlign: 'start',\n verticalAlign: 'middle'\n })), _defineProperty(_$concat4, \"@media (max-width: \".concat(token.screenSMMax, \")\"), (_mediaMaxWidth$ = {}, _defineProperty(_mediaMaxWidth$, componentCls, {\n maxWidth: 'calc(100vw - 16px)',\n margin: \"\".concat(token.marginXS, \" auto\")\n }), _defineProperty(_mediaMaxWidth$, \"\".concat(componentCls, \"-centered\"), _defineProperty({}, componentCls, {\n flex: 1\n })), _mediaMaxWidth$)), _$concat4)), // ======================== Modal ========================\n _defineProperty({}, componentCls, Object.assign(Object.assign({}, resetComponent(token)), (_Object$assign2 = {\n pointerEvents: 'none',\n position: 'relative',\n top: 100,\n width: 'auto',\n maxWidth: \"calc(100vw - \".concat(token.margin * 2, \"px)\"),\n margin: '0 auto',\n paddingBottom: token.paddingLG\n }, _defineProperty(_Object$assign2, \"\".concat(componentCls, \"-title\"), {\n margin: 0,\n color: token.titleColor,\n fontWeight: token.fontWeightStrong,\n fontSize: token.titleFontSize,\n lineHeight: token.titleLineHeight,\n wordWrap: 'break-word'\n }), _defineProperty(_Object$assign2, \"\".concat(componentCls, \"-content\"), {\n position: 'relative',\n backgroundColor: token.contentBg,\n backgroundClip: 'padding-box',\n border: 0,\n borderRadius: token.borderRadiusLG,\n boxShadow: token.boxShadow,\n pointerEvents: 'auto',\n padding: \"\".concat(token.paddingMD, \"px \").concat(token.paddingContentHorizontalLG, \"px\")\n }), _defineProperty(_Object$assign2, \"\".concat(componentCls, \"-close\"), Object.assign({\n position: 'absolute',\n top: (token.modalHeaderHeight - token.modalCloseBtnSize) / 2,\n insetInlineEnd: (token.modalHeaderHeight - token.modalCloseBtnSize) / 2,\n zIndex: token.zIndexPopupBase + 10,\n padding: 0,\n color: token.modalCloseIconColor,\n fontWeight: token.fontWeightStrong,\n lineHeight: 1,\n textDecoration: 'none',\n background: 'transparent',\n borderRadius: token.borderRadiusSM,\n width: token.modalCloseBtnSize,\n height: token.modalCloseBtnSize,\n border: 0,\n outline: 0,\n cursor: 'pointer',\n transition: \"color \".concat(token.motionDurationMid, \", background-color \").concat(token.motionDurationMid),\n '&-x': {\n display: 'flex',\n fontSize: token.fontSizeLG,\n fontStyle: 'normal',\n lineHeight: \"\".concat(token.modalCloseBtnSize, \"px\"),\n justifyContent: 'center',\n textTransform: 'none',\n textRendering: 'auto'\n },\n '&:hover': {\n color: token.modalIconHoverColor,\n backgroundColor: token.wireframe ? 'transparent' : token.colorFillContent,\n textDecoration: 'none'\n },\n '&:active': {\n backgroundColor: token.wireframe ? 'transparent' : token.colorFillContentHover\n }\n }, genFocusStyle(token))), _defineProperty(_Object$assign2, \"\".concat(componentCls, \"-header\"), {\n color: token.colorText,\n background: token.headerBg,\n borderRadius: \"\".concat(token.borderRadiusLG, \"px \").concat(token.borderRadiusLG, \"px 0 0\"),\n marginBottom: token.marginXS\n }), _defineProperty(_Object$assign2, \"\".concat(componentCls, \"-body\"), {\n fontSize: token.fontSize,\n lineHeight: token.lineHeight,\n wordWrap: 'break-word'\n }), _defineProperty(_Object$assign2, \"\".concat(componentCls, \"-footer\"), _defineProperty({\n textAlign: 'end',\n background: token.footerBg,\n marginTop: token.marginSM\n }, \"\".concat(token.antCls, \"-btn + \").concat(token.antCls, \"-btn:not(\").concat(token.antCls, \"-dropdown-trigger)\"), {\n marginBottom: 0,\n marginInlineStart: token.marginXS\n })), _defineProperty(_Object$assign2, \"\".concat(componentCls, \"-open\"), {\n overflow: 'hidden'\n }), _Object$assign2))), // ======================== Pure =========================\n _defineProperty({}, \"\".concat(componentCls, \"-pure-panel\"), (_$concat6 = {\n top: 'auto',\n padding: 0,\n display: 'flex',\n flexDirection: 'column'\n }, _defineProperty(_$concat6, \"\".concat(componentCls, \"-content,\\n \").concat(componentCls, \"-body,\\n \").concat(componentCls, \"-confirm-body-wrapper\"), {\n display: 'flex',\n flexDirection: 'column',\n flex: 'auto'\n }), _defineProperty(_$concat6, \"\".concat(componentCls, \"-confirm-body\"), {\n marginBottom: 'auto'\n }), _$concat6))];\n};\nvar genModalConfirmStyle = function genModalConfirmStyle(token) {\n var _$concat8, _$concat9, _confirmComponentCls, _ref6;\n var componentCls = token.componentCls;\n var confirmComponentCls = \"\".concat(componentCls, \"-confirm\");\n return _ref6 = {}, _defineProperty(_ref6, confirmComponentCls, (_confirmComponentCls = {\n '&-rtl': {\n direction: 'rtl'\n }\n }, _defineProperty(_confirmComponentCls, \"\".concat(token.antCls, \"-modal-header\"), {\n display: 'none'\n }), _defineProperty(_confirmComponentCls, \"\".concat(confirmComponentCls, \"-body-wrapper\"), Object.assign({}, clearFix())), _defineProperty(_confirmComponentCls, \"\".concat(confirmComponentCls, \"-body\"), (_$concat9 = {\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center'\n }, _defineProperty(_$concat9, \"\".concat(confirmComponentCls, \"-title\"), _defineProperty({\n flex: '0 0 100%',\n display: 'block',\n // create BFC to avoid\n // https://user-images.githubusercontent.com/507615/37702510-ba844e06-2d2d-11e8-9b67-8e19be57f445.png\n overflow: 'hidden',\n color: token.colorTextHeading,\n fontWeight: token.fontWeightStrong,\n fontSize: token.titleFontSize,\n lineHeight: token.titleLineHeight\n }, \"+ \".concat(confirmComponentCls, \"-content\"), {\n marginBlockStart: token.marginXS,\n flexBasis: '100%',\n maxWidth: \"calc(100% - \".concat(token.modalConfirmIconSize + token.marginSM, \"px)\")\n })), _defineProperty(_$concat9, \"\".concat(confirmComponentCls, \"-content\"), {\n color: token.colorText,\n fontSize: token.fontSize\n }), _defineProperty(_$concat9, \"> \".concat(token.iconCls), (_$concat8 = {\n flex: 'none',\n marginInlineEnd: token.marginSM,\n fontSize: token.modalConfirmIconSize\n }, _defineProperty(_$concat8, \"+ \".concat(confirmComponentCls, \"-title\"), {\n flex: 1\n }), _defineProperty(_$concat8, \"+ \".concat(confirmComponentCls, \"-title + \").concat(confirmComponentCls, \"-content\"), {\n marginInlineStart: token.modalConfirmIconSize + token.marginSM\n }), _$concat8)), _$concat9)), _defineProperty(_confirmComponentCls, \"\".concat(confirmComponentCls, \"-btns\"), _defineProperty({\n textAlign: 'end',\n marginTop: token.marginSM\n }, \"\".concat(token.antCls, \"-btn + \").concat(token.antCls, \"-btn\"), {\n marginBottom: 0,\n marginInlineStart: token.marginXS\n })), _confirmComponentCls)), _defineProperty(_ref6, \"\".concat(confirmComponentCls, \"-error \").concat(confirmComponentCls, \"-body > \").concat(token.iconCls), {\n color: token.colorError\n }), _defineProperty(_ref6, \"\".concat(confirmComponentCls, \"-warning \").concat(confirmComponentCls, \"-body > \").concat(token.iconCls, \",\\n \").concat(confirmComponentCls, \"-confirm \").concat(confirmComponentCls, \"-body > \").concat(token.iconCls), {\n color: token.colorWarning\n }), _defineProperty(_ref6, \"\".concat(confirmComponentCls, \"-info \").concat(confirmComponentCls, \"-body > \").concat(token.iconCls), {\n color: token.colorInfo\n }), _defineProperty(_ref6, \"\".concat(confirmComponentCls, \"-success \").concat(confirmComponentCls, \"-body > \").concat(token.iconCls), {\n color: token.colorSuccess\n }), _ref6;\n};\nvar genRTLStyle = function genRTLStyle(token) {\n var componentCls = token.componentCls;\n return _defineProperty({}, \"\".concat(componentCls, \"-root\"), _defineProperty({}, \"\".concat(componentCls, \"-wrap-rtl\"), _defineProperty({\n direction: 'rtl'\n }, \"\".concat(componentCls, \"-confirm-body\"), {\n direction: 'rtl'\n })));\n};\nvar genWireframeStyle = function genWireframeStyle(token) {\n var _componentCls, _confirmComponentCls2, _ref8;\n var componentCls = token.componentCls,\n antCls = token.antCls;\n var confirmComponentCls = \"\".concat(componentCls, \"-confirm\");\n return _ref8 = {}, _defineProperty(_ref8, componentCls, (_componentCls = {}, _defineProperty(_componentCls, \"\".concat(componentCls, \"-content\"), {\n padding: 0\n }), _defineProperty(_componentCls, \"\".concat(componentCls, \"-header\"), {\n padding: token.modalHeaderPadding,\n borderBottom: \"\".concat(token.modalHeaderBorderWidth, \"px \").concat(token.modalHeaderBorderStyle, \" \").concat(token.modalHeaderBorderColorSplit),\n marginBottom: 0\n }), _defineProperty(_componentCls, \"\".concat(componentCls, \"-body\"), {\n padding: token.modalBodyPadding\n }), _defineProperty(_componentCls, \"\".concat(componentCls, \"-footer\"), {\n padding: \"\".concat(token.modalFooterPaddingVertical, \"px \").concat(token.modalFooterPaddingHorizontal, \"px\"),\n borderTop: \"\".concat(token.modalFooterBorderWidth, \"px \").concat(token.modalFooterBorderStyle, \" \").concat(token.modalFooterBorderColorSplit),\n borderRadius: \"0 0 \".concat(token.borderRadiusLG, \"px \").concat(token.borderRadiusLG, \"px\"),\n marginTop: 0\n }), _componentCls)), _defineProperty(_ref8, confirmComponentCls, (_confirmComponentCls2 = {}, _defineProperty(_confirmComponentCls2, \"\".concat(antCls, \"-modal-body\"), {\n padding: \"\".concat(token.padding * 2, \"px \").concat(token.padding * 2, \"px \").concat(token.paddingLG, \"px\")\n }), _defineProperty(_confirmComponentCls2, \"\".concat(confirmComponentCls, \"-body\"), _defineProperty({}, \"> \".concat(token.iconCls), _defineProperty({\n marginInlineEnd: token.margin\n }, \"+ \".concat(confirmComponentCls, \"-title + \").concat(confirmComponentCls, \"-content\"), {\n marginInlineStart: token.modalConfirmIconSize + token.margin\n }))), _defineProperty(_confirmComponentCls2, \"\".concat(confirmComponentCls, \"-btns\"), {\n marginTop: token.marginLG\n }), _confirmComponentCls2)), _ref8;\n};\n// ============================== Export ==============================\nexport default genComponentStyleHook('Modal', function (token) {\n var headerPaddingVertical = token.padding;\n var headerFontSize = token.fontSizeHeading5;\n var headerLineHeight = token.lineHeightHeading5;\n var modalToken = mergeToken(token, {\n modalBodyPadding: token.paddingLG,\n modalHeaderPadding: \"\".concat(headerPaddingVertical, \"px \").concat(token.paddingLG, \"px\"),\n modalHeaderBorderWidth: token.lineWidth,\n modalHeaderBorderStyle: token.lineType,\n modalHeaderBorderColorSplit: token.colorSplit,\n modalHeaderHeight: headerLineHeight * headerFontSize + headerPaddingVertical * 2,\n modalFooterBorderColorSplit: token.colorSplit,\n modalFooterBorderStyle: token.lineType,\n modalFooterPaddingVertical: token.paddingXS,\n modalFooterPaddingHorizontal: token.padding,\n modalFooterBorderWidth: token.lineWidth,\n modalIconHoverColor: token.colorIconHover,\n modalCloseIconColor: token.colorIcon,\n modalCloseBtnSize: token.fontSize * token.lineHeight,\n modalConfirmIconSize: token.fontSize * token.lineHeight\n });\n return [genModalStyle(modalToken), genModalConfirmStyle(modalToken), genRTLStyle(modalToken), genModalMaskStyle(modalToken), token.wireframe && genWireframeStyle(modalToken), initZoomMotion(modalToken, 'zoom')];\n}, function (token) {\n return {\n footerBg: 'transparent',\n headerBg: token.colorBgElevated,\n titleLineHeight: token.lineHeightHeading5,\n titleFontSize: token.fontSizeHeading5,\n contentBg: token.colorBgElevated,\n titleColor: token.colorTextHeading\n };\n});","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport CloseOutlined from \"@ant-design/icons/es/icons/CloseOutlined\";\nimport classNames from 'classnames';\nimport Dialog from 'rc-dialog';\nimport * as React from 'react';\nimport useClosable from '../_util/hooks/useClosable';\nimport { getTransitionName } from '../_util/motion';\nimport { canUseDocElement } from '../_util/styleChecker';\nimport warning from '../_util/warning';\nimport { ConfigContext } from '../config-provider';\nimport { NoFormStyle } from '../form/context';\nimport { NoCompactStyle } from '../space/Compact';\nimport { Footer, renderCloseIcon } from './shared';\nimport useStyle from './style';\nvar mousePosition;\n// ref: https://github.com/ant-design/ant-design/issues/15795\nvar getClickPosition = function getClickPosition(e) {\n mousePosition = {\n x: e.pageX,\n y: e.pageY\n };\n // 100ms 内发生过点击事件,则从点击位置动画展示\n // 否则直接 zoom 展示\n // 这样可以兼容非点击方式展开\n setTimeout(function () {\n mousePosition = null;\n }, 100);\n};\n// 只有点击事件支持从鼠标位置动画展开\nif (canUseDocElement()) {\n document.documentElement.addEventListener('click', getClickPosition, true);\n}\nvar Modal = function Modal(props) {\n var _classNames;\n var _a;\n var _React$useContext = React.useContext(ConfigContext),\n getContextPopupContainer = _React$useContext.getPopupContainer,\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction,\n modal = _React$useContext.modal;\n var handleCancel = function handleCancel(e) {\n var onCancel = props.onCancel;\n onCancel === null || onCancel === void 0 ? void 0 : onCancel(e);\n };\n var handleOk = function handleOk(e) {\n var onOk = props.onOk;\n onOk === null || onOk === void 0 ? void 0 : onOk(e);\n };\n process.env.NODE_ENV !== \"production\" ? warning(!('visible' in props), 'Modal', \"`visible` will be removed in next major version, please use `open` instead.\") : void 0;\n var customizePrefixCls = props.prefixCls,\n className = props.className,\n rootClassName = props.rootClassName,\n open = props.open,\n wrapClassName = props.wrapClassName,\n centered = props.centered,\n getContainer = props.getContainer,\n closeIcon = props.closeIcon,\n closable = props.closable,\n _props$focusTriggerAf = props.focusTriggerAfterClose,\n focusTriggerAfterClose = _props$focusTriggerAf === void 0 ? true : _props$focusTriggerAf,\n style = props.style,\n visible = props.visible,\n _props$width = props.width,\n width = _props$width === void 0 ? 520 : _props$width,\n footer = props.footer,\n restProps = __rest(props, [\"prefixCls\", \"className\", \"rootClassName\", \"open\", \"wrapClassName\", \"centered\", \"getContainer\", \"closeIcon\", \"closable\", \"focusTriggerAfterClose\", \"style\", \"visible\", \"width\", \"footer\"]);\n var prefixCls = getPrefixCls('modal', customizePrefixCls);\n var rootPrefixCls = getPrefixCls();\n // Style\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n var wrapClassNameExtended = classNames(wrapClassName, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-centered\"), !!centered), _defineProperty(_classNames, \"\".concat(prefixCls, \"-wrap-rtl\"), direction === 'rtl'), _classNames));\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? warning(!('visible' in props), 'Modal', '`visible` is deprecated, please use `open` instead.') : void 0;\n }\n var dialogFooter = footer === undefined ? /*#__PURE__*/React.createElement(Footer, Object.assign({}, props, {\n onOk: handleOk,\n onCancel: handleCancel\n })) : footer;\n var _useClosable = useClosable(closable, closeIcon, function (icon) {\n return renderCloseIcon(prefixCls, icon);\n }, /*#__PURE__*/React.createElement(CloseOutlined, {\n className: \"\".concat(prefixCls, \"-close-icon\")\n }), true),\n _useClosable2 = _slicedToArray(_useClosable, 2),\n mergedClosable = _useClosable2[0],\n mergedCloseIcon = _useClosable2[1];\n return wrapSSR( /*#__PURE__*/React.createElement(NoCompactStyle, null, /*#__PURE__*/React.createElement(NoFormStyle, {\n status: true,\n override: true\n }, /*#__PURE__*/React.createElement(Dialog, Object.assign({\n width: width\n }, restProps, {\n getContainer: getContainer === undefined ? getContextPopupContainer : getContainer,\n prefixCls: prefixCls,\n rootClassName: classNames(hashId, rootClassName),\n wrapClassName: wrapClassNameExtended,\n footer: dialogFooter,\n visible: open !== null && open !== void 0 ? open : visible,\n mousePosition: (_a = restProps.mousePosition) !== null && _a !== void 0 ? _a : mousePosition,\n onClose: handleCancel,\n closable: mergedClosable,\n closeIcon: mergedCloseIcon,\n focusTriggerAfterClose: focusTriggerAfterClose,\n transitionName: getTransitionName(rootPrefixCls, 'zoom', props.transitionName),\n maskTransitionName: getTransitionName(rootPrefixCls, 'fade', props.maskTransitionName),\n className: classNames(hashId, className, modal === null || modal === void 0 ? void 0 : modal.className),\n style: Object.assign(Object.assign({}, modal === null || modal === void 0 ? void 0 : modal.style), style)\n })))));\n};\nexport default Modal;","import CloseOutlined from \"@ant-design/icons/es/icons/CloseOutlined\";\nimport React from 'react';\nfunction useInnerClosable(closable, closeIcon, defaultClosable) {\n if (typeof closable === 'boolean') {\n return closable;\n }\n if (closeIcon === undefined) {\n return !!defaultClosable;\n }\n return closeIcon !== false && closeIcon !== null;\n}\nexport default function useClosable(closable, closeIcon, customCloseIconRender) {\n var defaultCloseIcon = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : /*#__PURE__*/React.createElement(CloseOutlined, null);\n var defaultClosable = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n var mergedClosable = useInnerClosable(closable, closeIcon, defaultClosable);\n if (!mergedClosable) {\n return [false, null];\n }\n var mergedCloseIcon = typeof closeIcon === 'boolean' || closeIcon === undefined || closeIcon === null ? defaultCloseIcon : closeIcon;\n return [true, customCloseIconRender ? customCloseIconRender(mergedCloseIcon) : mergedCloseIcon];\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport CheckCircleFilled from \"@ant-design/icons/es/icons/CheckCircleFilled\";\nimport CloseCircleFilled from \"@ant-design/icons/es/icons/CloseCircleFilled\";\nimport ExclamationCircleFilled from \"@ant-design/icons/es/icons/ExclamationCircleFilled\";\nimport InfoCircleFilled from \"@ant-design/icons/es/icons/InfoCircleFilled\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport ActionButton from '../_util/ActionButton';\nimport { getTransitionName } from '../_util/motion';\nimport warning from '../_util/warning';\nimport ConfigProvider from '../config-provider';\nimport { useLocale } from '../locale';\nimport Dialog from './Modal';\nexport function ConfirmContent(props) {\n var icon = props.icon,\n onCancel = props.onCancel,\n onOk = props.onOk,\n _close = props.close,\n onConfirm = props.onConfirm,\n isSilent = props.isSilent,\n okText = props.okText,\n okButtonProps = props.okButtonProps,\n cancelText = props.cancelText,\n cancelButtonProps = props.cancelButtonProps,\n confirmPrefixCls = props.confirmPrefixCls,\n rootPrefixCls = props.rootPrefixCls,\n type = props.type,\n okCancel = props.okCancel,\n footer = props.footer,\n staticLocale = props.locale;\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof icon === 'string' && icon.length > 2), 'Modal', \"`icon` is using ReactNode instead of string naming in v4. Please check `\".concat(icon, \"` at https://ant.design/components/icon\")) : void 0;\n // Icon\n var mergedIcon = icon;\n // 支持传入{ icon: null }来隐藏`Modal.confirm`默认的Icon\n if (!icon && icon !== null) {\n switch (type) {\n case 'info':\n mergedIcon = /*#__PURE__*/React.createElement(InfoCircleFilled, null);\n break;\n case 'success':\n mergedIcon = /*#__PURE__*/React.createElement(CheckCircleFilled, null);\n break;\n case 'error':\n mergedIcon = /*#__PURE__*/React.createElement(CloseCircleFilled, null);\n break;\n default:\n mergedIcon = /*#__PURE__*/React.createElement(ExclamationCircleFilled, null);\n }\n }\n var okType = props.okType || 'primary';\n // 默认为 true,保持向下兼容\n var mergedOkCancel = okCancel !== null && okCancel !== void 0 ? okCancel : type === 'confirm';\n var autoFocusButton = props.autoFocusButton === null ? false : props.autoFocusButton || 'ok';\n var _useLocale = useLocale('Modal'),\n _useLocale2 = _slicedToArray(_useLocale, 1),\n locale = _useLocale2[0];\n var mergedLocale = staticLocale || locale;\n var cancelButton = mergedOkCancel && /*#__PURE__*/React.createElement(ActionButton, {\n isSilent: isSilent,\n actionFn: onCancel,\n close: function close() {\n _close === null || _close === void 0 ? void 0 : _close.apply(void 0, arguments);\n onConfirm === null || onConfirm === void 0 ? void 0 : onConfirm(false);\n },\n autoFocus: autoFocusButton === 'cancel',\n buttonProps: cancelButtonProps,\n prefixCls: \"\".concat(rootPrefixCls, \"-btn\")\n }, cancelText || (mergedLocale === null || mergedLocale === void 0 ? void 0 : mergedLocale.cancelText));\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(confirmPrefixCls, \"-body-wrapper\")\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(confirmPrefixCls, \"-body\")\n }, mergedIcon, props.title === undefined ? null : /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(confirmPrefixCls, \"-title\")\n }, props.title), /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(confirmPrefixCls, \"-content\")\n }, props.content)), footer === undefined ? /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(confirmPrefixCls, \"-btns\")\n }, cancelButton, /*#__PURE__*/React.createElement(ActionButton, {\n isSilent: isSilent,\n type: okType,\n actionFn: onOk,\n close: function close() {\n _close === null || _close === void 0 ? void 0 : _close.apply(void 0, arguments);\n onConfirm === null || onConfirm === void 0 ? void 0 : onConfirm(true);\n },\n autoFocus: autoFocusButton === 'ok',\n buttonProps: okButtonProps,\n prefixCls: \"\".concat(rootPrefixCls, \"-btn\")\n }, okText || (mergedOkCancel ? mergedLocale === null || mergedLocale === void 0 ? void 0 : mergedLocale.okText : mergedLocale === null || mergedLocale === void 0 ? void 0 : mergedLocale.justOkText))) : footer);\n}\nvar ConfirmDialog = function ConfirmDialog(props) {\n var close = props.close,\n zIndex = props.zIndex,\n afterClose = props.afterClose,\n visible = props.visible,\n open = props.open,\n keyboard = props.keyboard,\n centered = props.centered,\n getContainer = props.getContainer,\n maskStyle = props.maskStyle,\n direction = props.direction,\n prefixCls = props.prefixCls,\n wrapClassName = props.wrapClassName,\n rootPrefixCls = props.rootPrefixCls,\n iconPrefixCls = props.iconPrefixCls,\n theme = props.theme,\n bodyStyle = props.bodyStyle,\n _props$closable = props.closable,\n closable = _props$closable === void 0 ? false : _props$closable,\n closeIcon = props.closeIcon,\n modalRender = props.modalRender,\n focusTriggerAfterClose = props.focusTriggerAfterClose;\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? warning(visible === undefined, 'Modal', \"`visible` is deprecated, please use `open` instead.\") : void 0;\n }\n var confirmPrefixCls = \"\".concat(prefixCls, \"-confirm\");\n var width = props.width || 416;\n var style = props.style || {};\n var mask = props.mask === undefined ? true : props.mask;\n // 默认为 false,保持旧版默认行为\n var maskClosable = props.maskClosable === undefined ? false : props.maskClosable;\n var classString = classNames(confirmPrefixCls, \"\".concat(confirmPrefixCls, \"-\").concat(props.type), _defineProperty({}, \"\".concat(confirmPrefixCls, \"-rtl\"), direction === 'rtl'), props.className);\n return /*#__PURE__*/React.createElement(ConfigProvider, {\n prefixCls: rootPrefixCls,\n iconPrefixCls: iconPrefixCls,\n direction: direction,\n theme: theme\n }, /*#__PURE__*/React.createElement(Dialog, {\n prefixCls: prefixCls,\n className: classString,\n wrapClassName: classNames(_defineProperty({}, \"\".concat(confirmPrefixCls, \"-centered\"), !!props.centered), wrapClassName),\n onCancel: function onCancel() {\n return close === null || close === void 0 ? void 0 : close({\n triggerCancel: true\n });\n },\n open: open,\n title: \"\",\n footer: null,\n transitionName: getTransitionName(rootPrefixCls, 'zoom', props.transitionName),\n maskTransitionName: getTransitionName(rootPrefixCls, 'fade', props.maskTransitionName),\n mask: mask,\n maskClosable: maskClosable,\n maskStyle: maskStyle,\n style: style,\n bodyStyle: bodyStyle,\n width: width,\n zIndex: zIndex,\n afterClose: afterClose,\n keyboard: keyboard,\n centered: centered,\n getContainer: getContainer,\n closable: closable,\n closeIcon: closeIcon,\n modalRender: modalRender,\n focusTriggerAfterClose: focusTriggerAfterClose\n }, /*#__PURE__*/React.createElement(ConfirmContent, Object.assign({}, props, {\n confirmPrefixCls: confirmPrefixCls\n }))));\n};\nif (process.env.NODE_ENV !== 'production') {\n ConfirmDialog.displayName = 'ConfirmDialog';\n}\nexport default ConfirmDialog;","var destroyFns = [];\nexport default destroyFns;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { render as reactRender, unmount as reactUnmount } from \"rc-util/es/React/render\";\nimport * as React from 'react';\nimport warning from '../_util/warning';\nimport { globalConfig, warnContext } from '../config-provider';\nimport ConfirmDialog from './ConfirmDialog';\nimport destroyFns from './destroyFns';\nimport { getConfirmLocale } from './locale';\nvar defaultRootPrefixCls = '';\nfunction getRootPrefixCls() {\n return defaultRootPrefixCls;\n}\nexport default function confirm(config) {\n // Warning if exist theme\n if (process.env.NODE_ENV !== 'production') {\n warnContext('Modal');\n }\n var container = document.createDocumentFragment();\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n var currentConfig = Object.assign(Object.assign({}, config), {\n close: close,\n open: true\n });\n var timeoutId;\n function destroy() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var triggerCancel = args.some(function (param) {\n return param && param.triggerCancel;\n });\n if (config.onCancel && triggerCancel) {\n config.onCancel.apply(config, [function () {}].concat(_toConsumableArray(args.slice(1))));\n }\n for (var i = 0; i < destroyFns.length; i++) {\n var fn = destroyFns[i];\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n if (fn === close) {\n destroyFns.splice(i, 1);\n break;\n }\n }\n reactUnmount(container);\n }\n function render(_a) {\n var okText = _a.okText,\n cancelText = _a.cancelText,\n customizePrefixCls = _a.prefixCls,\n getContainer = _a.getContainer,\n props = __rest(_a, [\"okText\", \"cancelText\", \"prefixCls\", \"getContainer\"]);\n clearTimeout(timeoutId);\n /**\n * https://github.com/ant-design/ant-design/issues/23623\n *\n * Sync render blocks React event. Let's make this async.\n */\n timeoutId = setTimeout(function () {\n var runtimeLocale = getConfirmLocale();\n var _globalConfig = globalConfig(),\n getPrefixCls = _globalConfig.getPrefixCls,\n getIconPrefixCls = _globalConfig.getIconPrefixCls,\n getTheme = _globalConfig.getTheme;\n // because Modal.config \b set rootPrefixCls, which is different from other components\n var rootPrefixCls = getPrefixCls(undefined, getRootPrefixCls());\n var prefixCls = customizePrefixCls || \"\".concat(rootPrefixCls, \"-modal\");\n var iconPrefixCls = getIconPrefixCls();\n var theme = getTheme();\n var mergedGetContainer = getContainer;\n if (mergedGetContainer === false) {\n mergedGetContainer = undefined;\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Modal', 'Static method not support `getContainer` to be `false` since it do not have context env.') : void 0;\n }\n }\n reactRender( /*#__PURE__*/React.createElement(ConfirmDialog, Object.assign({}, props, {\n getContainer: mergedGetContainer,\n prefixCls: prefixCls,\n rootPrefixCls: rootPrefixCls,\n iconPrefixCls: iconPrefixCls,\n okText: okText,\n locale: runtimeLocale,\n theme: theme,\n cancelText: cancelText || runtimeLocale.cancelText\n })), container);\n });\n }\n function close() {\n var _this = this;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n currentConfig = Object.assign(Object.assign({}, currentConfig), {\n open: false,\n afterClose: function afterClose() {\n if (typeof config.afterClose === 'function') {\n config.afterClose();\n }\n destroy.apply(_this, args);\n }\n });\n // Legacy support\n if (currentConfig.visible) {\n delete currentConfig.visible;\n }\n render(currentConfig);\n }\n function update(configUpdate) {\n if (typeof configUpdate === 'function') {\n currentConfig = configUpdate(currentConfig);\n } else {\n currentConfig = Object.assign(Object.assign({}, currentConfig), configUpdate);\n }\n render(currentConfig);\n }\n render(currentConfig);\n destroyFns.push(close);\n return {\n destroy: close,\n update: update\n };\n}\nexport function withWarn(props) {\n return Object.assign(Object.assign({}, props), {\n type: 'warning'\n });\n}\nexport function withInfo(props) {\n return Object.assign(Object.assign({}, props), {\n type: 'info'\n });\n}\nexport function withSuccess(props) {\n return Object.assign(Object.assign({}, props), {\n type: 'success'\n });\n}\nexport function withError(props) {\n return Object.assign(Object.assign({}, props), {\n type: 'error'\n });\n}\nexport function withConfirm(props) {\n return Object.assign(Object.assign({}, props), {\n type: 'confirm'\n });\n}\nexport function modalGlobalConfig(_ref) {\n var rootPrefixCls = _ref.rootPrefixCls;\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Modal', 'Modal.config is deprecated. Please use ConfigProvider.config instead.') : void 0;\n defaultRootPrefixCls = rootPrefixCls;\n}","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport * as React from 'react';\nimport ConfigProvider, { ConfigContext } from '../config-provider';\nexport function withPureRenderTheme(Component) {\n return function PureRenderThemeComponent(props) {\n return /*#__PURE__*/React.createElement(ConfigProvider, {\n theme: {\n token: {\n motion: false,\n zIndexPopupBase: 0\n }\n }\n }, /*#__PURE__*/React.createElement(Component, Object.assign({}, props)));\n };\n}\n/* istanbul ignore next */\nexport default function genPurePanel(Component, defaultPrefixCls, getDropdownCls, postProps) {\n function PurePanel(props) {\n var customizePrefixCls = props.prefixCls,\n style = props.style;\n var holderRef = React.useRef(null);\n var _React$useState = React.useState(0),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n popupHeight = _React$useState2[0],\n setPopupHeight = _React$useState2[1];\n var _React$useState3 = React.useState(0),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n popupWidth = _React$useState4[0],\n setPopupWidth = _React$useState4[1];\n var _useMergedState = useMergedState(false, {\n value: props.open\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n open = _useMergedState2[0],\n setOpen = _useMergedState2[1];\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls;\n var prefixCls = getPrefixCls(defaultPrefixCls || 'select', customizePrefixCls);\n React.useEffect(function () {\n // We do not care about ssr\n setOpen(true);\n if (typeof ResizeObserver !== 'undefined') {\n var resizeObserver = new ResizeObserver(function (entries) {\n var element = entries[0].target;\n setPopupHeight(element.offsetHeight + 8);\n setPopupWidth(element.offsetWidth);\n });\n var interval = setInterval(function () {\n var _a;\n var dropdownCls = getDropdownCls ? \".\".concat(getDropdownCls(prefixCls)) : \".\".concat(prefixCls, \"-dropdown\");\n var popup = (_a = holderRef.current) === null || _a === void 0 ? void 0 : _a.querySelector(dropdownCls);\n if (popup) {\n clearInterval(interval);\n resizeObserver.observe(popup);\n }\n }, 10);\n return function () {\n clearInterval(interval);\n resizeObserver.disconnect();\n };\n }\n }, []);\n var mergedProps = Object.assign(Object.assign({}, props), {\n style: Object.assign(Object.assign({}, style), {\n margin: 0\n }),\n open: open,\n visible: open,\n getPopupContainer: function getPopupContainer() {\n return holderRef.current;\n }\n });\n if (postProps) {\n mergedProps = postProps(mergedProps);\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: holderRef,\n style: {\n paddingBottom: popupHeight,\n position: 'relative',\n minWidth: popupWidth\n }\n }, /*#__PURE__*/React.createElement(Component, Object.assign({}, mergedProps)));\n }\n return withPureRenderTheme(PurePanel);\n}","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\n/* eslint-disable react/jsx-no-useless-fragment */\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport { Panel } from 'rc-dialog';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport { ConfirmContent } from './ConfirmDialog';\nimport { Footer, renderCloseIcon } from './shared';\nimport useStyle from './style';\nimport { withPureRenderTheme } from '../_util/PurePanel';\nvar PurePanel = function PurePanel(props) {\n var customizePrefixCls = props.prefixCls,\n className = props.className,\n closeIcon = props.closeIcon,\n closable = props.closable,\n type = props.type,\n title = props.title,\n children = props.children,\n restProps = __rest(props, [\"prefixCls\", \"className\", \"closeIcon\", \"closable\", \"type\", \"title\", \"children\"]);\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls;\n var rootPrefixCls = getPrefixCls();\n var prefixCls = customizePrefixCls || getPrefixCls('modal');\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n hashId = _useStyle2[1];\n var confirmPrefixCls = \"\".concat(prefixCls, \"-confirm\");\n // Choose target props by confirm mark\n var additionalProps = {};\n if (type) {\n additionalProps = {\n closable: closable !== null && closable !== void 0 ? closable : false,\n title: '',\n footer: '',\n children: /*#__PURE__*/React.createElement(ConfirmContent, Object.assign({}, props, {\n confirmPrefixCls: confirmPrefixCls,\n rootPrefixCls: rootPrefixCls,\n content: children\n }))\n };\n } else {\n additionalProps = {\n closable: closable !== null && closable !== void 0 ? closable : true,\n title: title,\n footer: props.footer === undefined ? /*#__PURE__*/React.createElement(Footer, Object.assign({}, props)) : props.footer,\n children: children\n };\n }\n return /*#__PURE__*/React.createElement(Panel, Object.assign({\n prefixCls: prefixCls,\n className: classNames(hashId, \"\".concat(prefixCls, \"-pure-panel\"), type && confirmPrefixCls, type && \"\".concat(confirmPrefixCls, \"-\").concat(type), className)\n }, restProps, {\n closeIcon: renderCloseIcon(prefixCls, closeIcon),\n closable: closable\n }, additionalProps));\n};\nexport default withPureRenderTheme(PurePanel);","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { ConfigContext } from '../../config-provider';\nimport defaultLocale from '../../locale/en_US';\nimport useLocale from '../../locale/useLocale';\nimport ConfirmDialog from '../ConfirmDialog';\nvar HookModal = function HookModal(_a, ref) {\n var _b;\n var hookAfterClose = _a.afterClose,\n config = _a.config,\n restProps = __rest(_a, [\"afterClose\", \"config\"]);\n var _React$useState = React.useState(true),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n open = _React$useState2[0],\n setOpen = _React$useState2[1];\n var _React$useState3 = React.useState(config),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n innerConfig = _React$useState4[0],\n setInnerConfig = _React$useState4[1];\n var _React$useContext = React.useContext(ConfigContext),\n direction = _React$useContext.direction,\n getPrefixCls = _React$useContext.getPrefixCls;\n var prefixCls = getPrefixCls('modal');\n var rootPrefixCls = getPrefixCls();\n var afterClose = function afterClose() {\n var _a;\n hookAfterClose();\n (_a = innerConfig.afterClose) === null || _a === void 0 ? void 0 : _a.call(innerConfig);\n };\n var close = function close() {\n setOpen(false);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var triggerCancel = args.some(function (param) {\n return param && param.triggerCancel;\n });\n if (innerConfig.onCancel && triggerCancel) {\n innerConfig.onCancel.apply(innerConfig, [function () {}].concat(_toConsumableArray(args.slice(1))));\n }\n };\n React.useImperativeHandle(ref, function () {\n return {\n destroy: close,\n update: function update(newConfig) {\n setInnerConfig(function (originConfig) {\n return Object.assign(Object.assign({}, originConfig), newConfig);\n });\n }\n };\n });\n var mergedOkCancel = (_b = innerConfig.okCancel) !== null && _b !== void 0 ? _b : innerConfig.type === 'confirm';\n var _useLocale = useLocale('Modal', defaultLocale.Modal),\n _useLocale2 = _slicedToArray(_useLocale, 1),\n contextLocale = _useLocale2[0];\n return /*#__PURE__*/React.createElement(ConfirmDialog, Object.assign({\n prefixCls: prefixCls,\n rootPrefixCls: rootPrefixCls\n }, innerConfig, {\n close: close,\n open: open,\n afterClose: afterClose,\n okText: innerConfig.okText || (mergedOkCancel ? contextLocale === null || contextLocale === void 0 ? void 0 : contextLocale.okText : contextLocale === null || contextLocale === void 0 ? void 0 : contextLocale.justOkText),\n direction: innerConfig.direction || direction,\n cancelText: innerConfig.cancelText || (contextLocale === null || contextLocale === void 0 ? void 0 : contextLocale.cancelText)\n }, restProps));\n};\nexport default /*#__PURE__*/React.forwardRef(HookModal);","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport * as React from 'react';\nimport usePatchElement from '../../_util/hooks/usePatchElement';\nimport { withConfirm, withError, withInfo, withSuccess, withWarn } from '../confirm';\nimport destroyFns from '../destroyFns';\nimport HookModal from './HookModal';\nvar uuid = 0;\nvar ElementsHolder = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (_props, ref) {\n var _usePatchElement = usePatchElement(),\n _usePatchElement2 = _slicedToArray(_usePatchElement, 2),\n elements = _usePatchElement2[0],\n patchElement = _usePatchElement2[1];\n React.useImperativeHandle(ref, function () {\n return {\n patchElement: patchElement\n };\n }, []);\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return /*#__PURE__*/React.createElement(React.Fragment, null, elements);\n}));\nfunction useModal() {\n var holderRef = React.useRef(null);\n // ========================== Effect ==========================\n var _React$useState = React.useState([]),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n actionQueue = _React$useState2[0],\n setActionQueue = _React$useState2[1];\n React.useEffect(function () {\n if (actionQueue.length) {\n var cloneQueue = _toConsumableArray(actionQueue);\n cloneQueue.forEach(function (action) {\n action();\n });\n setActionQueue([]);\n }\n }, [actionQueue]);\n // =========================== Hook ===========================\n var getConfirmFunc = React.useCallback(function (withFunc) {\n return function hookConfirm(config) {\n var _a;\n uuid += 1;\n var modalRef = /*#__PURE__*/React.createRef();\n // Proxy to promise with `onClose`\n var resolvePromise;\n var promise = new Promise(function (resolve) {\n resolvePromise = resolve;\n });\n var silent = false;\n var closeFunc;\n var modal = /*#__PURE__*/React.createElement(HookModal, {\n key: \"modal-\".concat(uuid),\n config: withFunc(config),\n ref: modalRef,\n afterClose: function afterClose() {\n closeFunc === null || closeFunc === void 0 ? void 0 : closeFunc();\n },\n isSilent: function isSilent() {\n return silent;\n },\n onConfirm: function onConfirm(confirmed) {\n resolvePromise(confirmed);\n }\n });\n closeFunc = (_a = holderRef.current) === null || _a === void 0 ? void 0 : _a.patchElement(modal);\n if (closeFunc) {\n destroyFns.push(closeFunc);\n }\n var instance = {\n destroy: function destroy() {\n function destroyAction() {\n var _a;\n (_a = modalRef.current) === null || _a === void 0 ? void 0 : _a.destroy();\n }\n if (modalRef.current) {\n destroyAction();\n } else {\n setActionQueue(function (prev) {\n return [].concat(_toConsumableArray(prev), [destroyAction]);\n });\n }\n },\n update: function update(newConfig) {\n function updateAction() {\n var _a;\n (_a = modalRef.current) === null || _a === void 0 ? void 0 : _a.update(newConfig);\n }\n if (modalRef.current) {\n updateAction();\n } else {\n setActionQueue(function (prev) {\n return [].concat(_toConsumableArray(prev), [updateAction]);\n });\n }\n },\n then: function then(resolve) {\n silent = true;\n return promise.then(resolve);\n }\n };\n return instance;\n };\n }, []);\n var fns = React.useMemo(function () {\n return {\n info: getConfirmFunc(withInfo),\n success: getConfirmFunc(withSuccess),\n error: getConfirmFunc(withError),\n warning: getConfirmFunc(withWarn),\n confirm: getConfirmFunc(withConfirm)\n };\n }, []);\n return [fns, /*#__PURE__*/React.createElement(ElementsHolder, {\n key: \"modal-holder\",\n ref: holderRef\n })];\n}\nexport default useModal;","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport * as React from 'react';\nexport default function usePatchElement() {\n var _React$useState = React.useState([]),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n elements = _React$useState2[0],\n setElements = _React$useState2[1];\n var patchElement = React.useCallback(function (element) {\n // append a new element to elements (and create a new ref)\n setElements(function (originElements) {\n return [].concat(_toConsumableArray(originElements), [element]);\n });\n // return a function that removes the new element out of elements (and create a new ref)\n // it works a little like useEffect\n return function () {\n setElements(function (originElements) {\n return originElements.filter(function (ele) {\n return ele !== element;\n });\n });\n };\n }, []);\n return [elements, patchElement];\n}","'use client';\n\nimport confirm, { modalGlobalConfig, withConfirm, withError, withInfo, withSuccess, withWarn } from './confirm';\nimport destroyFns from './destroyFns';\nimport OriginModal from './Modal';\nimport PurePanel from './PurePanel';\nimport useModal from './useModal';\nfunction modalWarn(props) {\n return confirm(withWarn(props));\n}\nvar Modal = OriginModal;\nModal.useModal = useModal;\nModal.info = function infoFn(props) {\n return confirm(withInfo(props));\n};\nModal.success = function successFn(props) {\n return confirm(withSuccess(props));\n};\nModal.error = function errorFn(props) {\n return confirm(withError(props));\n};\nModal.warning = modalWarn;\nModal.warn = modalWarn;\nModal.confirm = function confirmFn(props) {\n return confirm(withConfirm(props));\n};\nModal.destroyAll = function destroyAllFn() {\n while (destroyFns.length) {\n var close = destroyFns.pop();\n if (close) {\n close();\n }\n }\n};\nModal.config = modalGlobalConfig;\nModal._InternalPanelDoNotUseOrYouWillBeFired = PurePanel;\nif (process.env.NODE_ENV !== 'production') {\n Modal.displayName = 'Modal';\n}\nexport default Modal;","import {\n CalendarDaysIcon,\n CalendarIcon,\n ChatBubbleOvalLeftIcon,\n ClipboardDocumentCheckIcon,\n ClipboardDocumentIcon,\n DocumentChartBarIcon,\n HashtagIcon,\n TagIcon,\n} from \"@heroicons/react/24/outline\";\nimport { Modal } from \"antd\";\nimport * as React from \"react\";\nimport { useState } from \"react\";\nimport { CollapseBox } from \"../../../atoms\";\nimport Icon from \"../../../icons\";\nimport { IVizConfig } from \"../../../types\";\nimport { CodeBlock } from \"../../chartview/codeblock\";\n\nconst SummaryView = ({\n summaryConfig,\n}: {\n summaryConfig: {\n vizConfig: IVizConfig;\n setVizConfig: React.Dispatch>;\n loadingSummary: any;\n };\n}) => {\n const { vizConfig, setVizConfig, loadingSummary } = summaryConfig;\n const summary = vizConfig?.summary;\n const [isModalOpen, setIsModalOpen] = useState(false);\n\n const getIcon = (dtype: string, size = 4) => {\n switch (dtype) {\n case \"string\" || \"object\":\n return (\n \n );\n case \"number\":\n return (\n \n );\n case \"date\":\n return (\n \n );\n case \"category\":\n return (\n \n );\n\n default:\n return (\n \n );\n }\n };\n\n const SamplesBox = ({ samples }: { samples: any }) => {\n const samplesView = samples.map((s: any, i: number) => {\n return (\n \n {s}\n \n );\n });\n return (\n \n
        {samplesView}
        \n
        \n );\n };\n\n const showModal = () => {\n setIsModalOpen(true);\n };\n\n const handleOk = () => {\n setIsModalOpen(false);\n };\n\n const handleCancel = () => {\n setIsModalOpen(false);\n };\n\n const columnView = summary?.fields.map((prop: any, i: number) => {\n return (\n \n
        \n {\" \"}\n \n {getIcon(prop.properties.dtype)}\n {\" \"}\n \n {\" \"}\n {prop.column}\n \n
        \n
        \n {prop.properties.dtype} |{\" \"}\n {prop.properties.semantic_type} \n
        \n
        \n {prop.properties.description}\n
        \n
        \n # Unique values: {prop.properties.num_unique_values}{\" \"}\n
        \n
        \n {prop.properties.min && \" min: \" + prop.properties.min}{\" \"}\n {prop.properties.max && \" , max: \" + prop.properties.max}{\" \"}\n {prop.properties.std && \" | std: \" + prop.properties.std.toFixed(3)}{\" \"}\n
        \n\n
        \n \n
        \n {/*
        */}\n \n );\n });\n return (\n
        \n {summary && !loadingSummary && (\n <>\n
        \n {\" \"}\n Data Summary\n
        \n\n
        \n An enriched representation of the data (with predicted semantic\n types and descriptions)\n
        \n
        \n {summary.name} \n \n {summary.dataset_description}\n \n
        \n\n \n {summary && (\n \n
        \n
        \n {columnView}\n
        \n {/* {JSON.stringify(summary, null, 2)} */}\n
        \n
        \n )}\n {!summary &&
        Upload a dataset to begin
        }\n {loadingSummary && (\n
        \n {\" \"}\n \n {\" \"}\n \n {\" \"}\n Uploading and Summarizing the data ..{\" \"}\n
        \n )}\n
        \n \n View raw summary?\n
        \n \n
        \n The dataset is summarized as the dictionary below.\n
        \n \n \n
        \n \n \n )}\n \n );\n};\nexport default SummaryView;\n","import { ArrowUpOnSquareIcon } from \"@heroicons/react/24/outline\";\nimport { message } from \"antd\";\nimport * as React from \"react\";\nimport { IVizConfig } from \"../../../types\";\nimport { fetchJSON } from \"../../../utils\";\n\nconst SamplesView = ({\n config,\n}: {\n config: {\n setLoadingSummary: any;\n resetStates: any;\n vizConfig: IVizConfig;\n setVizConfig: any;\n setError: any;\n };\n}) => {\n const serverUrl = process.env.GATSBY_API_URL;\n const { setLoadingSummary, resetStates, setVizConfig, setError, vizConfig } =\n config;\n const samples = [\n {\n name: \"stocks.csv\",\n url: \"https://raw.githubusercontent.com/vega/vega-datasets/next/data/stocks.csv\",\n },\n {\n name: \"cars.json\",\n url: \"https://raw.githubusercontent.com/vega/vega-datasets/next/data/cars.json\",\n },\n {\n name: \"wheat.json\",\n url: \"https://raw.githubusercontent.com/vega/vega-datasets/next/data/wheat.json\",\n },\n\n {\n name: \"movies.json\",\n url: \"https://raw.githubusercontent.com/vega/vega-datasets/next/data/movies.json\",\n },\n {\n name: \"seattle-weather.csv\",\n url: \"https://raw.githubusercontent.com/vega/vega-datasets/next/data/seattle-weather.csv\",\n },\n {\n name: \"sp500.csv\",\n url: \"https://raw.githubusercontent.com/vega/vega-datasets/next/data/sp500.csv\",\n },\n {\n name: \"la-riots.csv\",\n url: \"https://raw.githubusercontent.com/vega/vega-datasets/next/data/la-riots.csv\",\n },\n {\n name: \"airports.csv\",\n url: \"https://raw.githubusercontent.com/vega/vega-datasets/next/data/airports.csv\",\n },\n ];\n\n const uploadFileUrl = (fileUrl: string) => {\n const url = `${serverUrl}/summarize/url`;\n setLoadingSummary(true);\n resetStates();\n\n const payLoad = {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n url: fileUrl,\n textgen_config: vizConfig.textgen_config,\n }),\n };\n\n const onSuccess = (data: any) => {\n if (data && data.status) {\n setVizConfig({\n ...vizConfig,\n summary: data.summary,\n goal: null,\n });\n } else {\n setError({ status: false, message: data.message });\n message.error(data.message);\n }\n setLoadingSummary(false);\n };\n\n const onError = (error: any) => {\n setLoadingSummary(false);\n console.log(error);\n setError({ status: false, message: error.message });\n message.error(error + \"\");\n };\n\n fetchJSON(url, payLoad, onSuccess, onError);\n\n // const postData = {\n // method: \"POST\",\n // headers: {\n // Accept: \"application/json\",\n // \"Content-Type\": \"application/json\",\n // },\n // body: JSON.stringify({ url: fileUrl }),\n // };\n // fetch(url, postData)\n // .then(\n // (response) => response.json() // if the response is a JSON object\n // )\n // .then((data) => {\n // if (data.status) {\n // setLoadingSummary(false);\n // // let config = Object.assign({}, vizConfig);\n // // config.summary = data.summary;\n // // config.goal = null;\n // setVizConfig({\n // ...vizConfig,\n // summary: data.summary,\n // goal: null,\n // });\n // } else {\n // setError({ status: false, message: data.message });\n // message.error(data.message);\n // setLoadingSummary(false);\n // }\n // })\n // .catch(\n // (error) => {\n // setLoadingSummary(false);\n // console.log(error);\n // setError({ status: false, message: error + \"\" });\n // message.error(error + \"\");\n // } // Handle the error response object\n // );\n };\n const samplesView = samples.map((data, i) => {\n return (\n {\n uploadFileUrl(data.url);\n }}\n className=\"p-1 border-accent border px-2 rounded duration-300 hover:text-accent\"\n key={\"samplerow\" + i}\n >\n {data.name}\n \n );\n });\n\n return (\n
        \n
        \n
        \n \n Don't have\n data?\n {\" \"}\n Try any of the files below\n
        \n\n
        {samplesView}
        \n
        \n
        \n );\n};\nexport default SamplesView;\n","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"title\", \"titleId\"];\nimport * as React from \"react\";\nfunction BookmarkSquareIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M16.5 3.75V16.5L12 14.25 7.5 16.5V3.75m9 0H18A2.25 2.25 0 0120.25 6v12A2.25 2.25 0 0118 20.25H6A2.25 2.25 0 013.75 18V6A2.25 2.25 0 016 3.75h1.5m9 0h-9\"\n }));\n}\nvar ForwardRef = React.forwardRef(BookmarkSquareIcon);\nexport default ForwardRef;","import {\n ChatBubbleBottomCenterTextIcon,\n BookmarkSquareIcon,\n LightBulbIcon,\n} from \"@heroicons/react/24/outline\";\nimport { message } from \"antd\";\nimport * as React from \"react\";\nimport { Card, CollapseBox, LaunchButton } from \"../../../atoms\";\nimport Icon from \"../../../icons\";\nimport { IGoal, IVizConfig } from \"../../../types\";\nconst GoalView = ({\n config,\n}: {\n config: {\n goals: any;\n setVizConfig: any;\n vizConfig: IVizConfig;\n loadingGoals: any;\n };\n}) => {\n const { goals, setVizConfig, vizConfig, loadingGoals } = config;\n const [selectedGoal, setSelectedGoal] = React.useState(0);\n\n const goalDivWidth = 280;\n React.useEffect(() => {\n if (!vizConfig.goal) {\n setSelectedGoal(0);\n }\n }, [vizConfig.goal]);\n\n const goalsList = goals?.map((goal: IGoal, i: number) => {\n const isActive = selectedGoal === i;\n return (\n {\n setVizConfig({\n ...vizConfig,\n goal: goal,\n });\n setSelectedGoal(i);\n }}\n key={i}\n style={{ width: goalDivWidth + \"px\" }}\n className={`inline-block mb-3 bg-secondary p-2 break-inside-avoid text-sm rounded border ${\n isActive ? \" border-accent\" : \"border-transparent\"\n }`}\n >\n
        \n <>\n
        \n {\" \"}\n \n {i + 1}\n {\" \"}\n {goal.question}\n
        \n {\n <>\n
        \n {goal.visualization}\n
        \n
        {goal.rationale}
        \n \n }\n \n
        \n );\n });\n return (\n
        \n {goals && !loadingGoals && vizConfig.summary && (\n
        \n
        \n Goal Exploration\n
        \n
        \n A list of automatically generated data exploration goals\n (hypothesis) based on the data summary above.\n
        \n \n {/*
        \n {goalsList}\n
        */}\n
        \n \n {goalsList}\n
        \n
        \n \n
        \n {\n message.info(\"Feature in development\");\n }}\n >\n Story{\" \"}\n \n {\" \"}\n \n {\" \"}\n Generate a story based on these goals.{\" \"}\n \n
        \n
        \n )}\n \n );\n};\nexport default GoalView;\n","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"title\", \"titleId\"];\nimport * as React from \"react\";\nfunction Cog6ToothIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.324.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 011.37.49l1.296 2.247a1.125 1.125 0 01-.26 1.431l-1.003.827c-.293.24-.438.613-.431.992a6.759 6.759 0 010 .255c-.007.378.138.75.43.99l1.005.828c.424.35.534.954.26 1.43l-1.298 2.247a1.125 1.125 0 01-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.57 6.57 0 01-.22.128c-.331.183-.581.495-.644.869l-.213 1.28c-.09.543-.56.941-1.11.941h-2.594c-.55 0-1.02-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 01-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 01-1.369-.49l-1.297-2.247a1.125 1.125 0 01.26-1.431l1.004-.827c.292-.24.437-.613.43-.992a6.932 6.932 0 010-.255c.007-.378-.138-.75-.43-.99l-1.004-.828a1.125 1.125 0 01-.26-1.43l1.297-2.247a1.125 1.125 0 011.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.087.22-.128.332-.183.582-.495.644-.869l.214-1.281z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M15 12a3 3 0 11-6 0 3 3 0 016 0z\"\n }));\n}\nvar ForwardRef = React.forwardRef(Cog6ToothIcon);\nexport default ForwardRef;","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"title\", \"titleId\"];\nimport * as React from \"react\";\nfunction PaperAirplaneIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M6 12L3.269 3.126A59.768 59.768 0 0121.485 12 59.77 59.77 0 013.27 20.876L5.999 12zm0 0h7.5\"\n }));\n}\nvar ForwardRef = React.forwardRef(PaperAirplaneIcon);\nexport default ForwardRef;","function extendsObject() {\n var _arguments = arguments;\n var result = Object.assign({}, arguments.length <= 0 ? undefined : arguments[0]);\n var _loop = function _loop() {\n var obj = i < 0 || _arguments.length <= i ? undefined : _arguments[i];\n if (obj) {\n Object.keys(obj).forEach(function (key) {\n var val = obj[key];\n if (val !== undefined) {\n result[key] = val;\n }\n });\n }\n };\n for (var i = 1; i < arguments.length; i++) {\n _loop();\n }\n return result;\n}\nexport default extendsObject;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport React from 'react';\nimport { useToken } from '../theme/internal';\nexport var responsiveArray = ['xxl', 'xl', 'lg', 'md', 'sm', 'xs'];\nvar getResponsiveMap = function getResponsiveMap(token) {\n return {\n xs: \"(max-width: \".concat(token.screenXSMax, \"px)\"),\n sm: \"(min-width: \".concat(token.screenSM, \"px)\"),\n md: \"(min-width: \".concat(token.screenMD, \"px)\"),\n lg: \"(min-width: \".concat(token.screenLG, \"px)\"),\n xl: \"(min-width: \".concat(token.screenXL, \"px)\"),\n xxl: \"(min-width: \".concat(token.screenXXL, \"px)\")\n };\n};\n/**\n * Ensures that the breakpoints token are valid, in good order\n * For each breakpoint : screenMin <= screen <= screenMax and screenMax <= nextScreenMin\n */\nvar validateBreakpoints = function validateBreakpoints(token) {\n var indexableToken = token;\n var revBreakpoints = [].concat(responsiveArray).reverse();\n revBreakpoints.forEach(function (breakpoint, i) {\n var breakpointUpper = breakpoint.toUpperCase();\n var screenMin = \"screen\".concat(breakpointUpper, \"Min\");\n var screen = \"screen\".concat(breakpointUpper);\n if (!(indexableToken[screenMin] <= indexableToken[screen])) {\n throw new Error(\"\".concat(screenMin, \"<=\").concat(screen, \" fails : !(\").concat(indexableToken[screenMin], \"<=\").concat(indexableToken[screen], \")\"));\n }\n if (i < revBreakpoints.length - 1) {\n var screenMax = \"screen\".concat(breakpointUpper, \"Max\");\n if (!(indexableToken[screen] <= indexableToken[screenMax])) {\n throw new Error(\"\".concat(screen, \"<=\").concat(screenMax, \" fails : !(\").concat(indexableToken[screen], \"<=\").concat(indexableToken[screenMax], \")\"));\n }\n var nextBreakpointUpperMin = revBreakpoints[i + 1].toUpperCase();\n var nextScreenMin = \"screen\".concat(nextBreakpointUpperMin, \"Min\");\n if (!(indexableToken[screenMax] <= indexableToken[nextScreenMin])) {\n throw new Error(\"\".concat(screenMax, \"<=\").concat(nextScreenMin, \" fails : !(\").concat(indexableToken[screenMax], \"<=\").concat(indexableToken[nextScreenMin], \")\"));\n }\n }\n });\n return token;\n};\nexport default function useResponsiveObserver() {\n var _useToken = useToken(),\n _useToken2 = _slicedToArray(_useToken, 2),\n token = _useToken2[1];\n var responsiveMap = getResponsiveMap(validateBreakpoints(token));\n // To avoid repeat create instance, we add `useMemo` here.\n return React.useMemo(function () {\n var subscribers = new Map();\n var subUid = -1;\n var screens = {};\n return {\n matchHandlers: {},\n dispatch: function dispatch(pointMap) {\n screens = pointMap;\n subscribers.forEach(function (func) {\n return func(screens);\n });\n return subscribers.size >= 1;\n },\n subscribe: function subscribe(func) {\n if (!subscribers.size) this.register();\n subUid += 1;\n subscribers.set(subUid, func);\n func(screens);\n return subUid;\n },\n unsubscribe: function unsubscribe(paramToken) {\n subscribers.delete(paramToken);\n if (!subscribers.size) this.unregister();\n },\n unregister: function unregister() {\n var _this = this;\n Object.keys(responsiveMap).forEach(function (screen) {\n var matchMediaQuery = responsiveMap[screen];\n var handler = _this.matchHandlers[matchMediaQuery];\n handler === null || handler === void 0 ? void 0 : handler.mql.removeListener(handler === null || handler === void 0 ? void 0 : handler.listener);\n });\n subscribers.clear();\n },\n register: function register() {\n var _this2 = this;\n Object.keys(responsiveMap).forEach(function (screen) {\n var matchMediaQuery = responsiveMap[screen];\n var listener = function listener(_ref) {\n var matches = _ref.matches;\n _this2.dispatch(Object.assign(Object.assign({}, screens), _defineProperty({}, screen, matches)));\n };\n var mql = window.matchMedia(matchMediaQuery);\n mql.addListener(listener);\n _this2.matchHandlers[matchMediaQuery] = {\n mql: mql,\n listener: listener\n };\n listener(mql);\n });\n },\n responsiveMap: responsiveMap\n };\n }, [token]);\n}","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport { TinyColor } from '@ctrl/tinycolor';\nimport * as React from 'react';\nimport { useToken } from '../theme/internal';\nvar Empty = function Empty() {\n var _useToken = useToken(),\n _useToken2 = _slicedToArray(_useToken, 2),\n token = _useToken2[1];\n var bgColor = new TinyColor(token.colorBgBase);\n // Dark Theme need more dark of this\n var themeStyle = bgColor.toHsl().l < 0.5 ? {\n opacity: 0.65\n } : {};\n return /*#__PURE__*/React.createElement(\"svg\", {\n style: themeStyle,\n width: \"184\",\n height: \"152\",\n viewBox: \"0 0 184 152\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(24 31.67)\"\n }, /*#__PURE__*/React.createElement(\"ellipse\", {\n fillOpacity: \".8\",\n fill: \"#F5F5F7\",\n cx: \"67.797\",\n cy: \"106.89\",\n rx: \"67.797\",\n ry: \"12.668\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M122.034 69.674L98.109 40.229c-1.148-1.386-2.826-2.225-4.593-2.225h-51.44c-1.766 0-3.444.839-4.592 2.225L13.56 69.674v15.383h108.475V69.674z\",\n fill: \"#AEB8C2\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M101.537 86.214L80.63 61.102c-1.001-1.207-2.507-1.867-4.048-1.867H31.724c-1.54 0-3.047.66-4.048 1.867L6.769 86.214v13.792h94.768V86.214z\",\n fill: \"url(#linearGradient-1)\",\n transform: \"translate(13.56)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M33.83 0h67.933a4 4 0 0 1 4 4v93.344a4 4 0 0 1-4 4H33.83a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4z\",\n fill: \"#F5F5F7\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M42.678 9.953h50.237a2 2 0 0 1 2 2V36.91a2 2 0 0 1-2 2H42.678a2 2 0 0 1-2-2V11.953a2 2 0 0 1 2-2zM42.94 49.767h49.713a2.262 2.262 0 1 1 0 4.524H42.94a2.262 2.262 0 0 1 0-4.524zM42.94 61.53h49.713a2.262 2.262 0 1 1 0 4.525H42.94a2.262 2.262 0 0 1 0-4.525zM121.813 105.032c-.775 3.071-3.497 5.36-6.735 5.36H20.515c-3.238 0-5.96-2.29-6.734-5.36a7.309 7.309 0 0 1-.222-1.79V69.675h26.318c2.907 0 5.25 2.448 5.25 5.42v.04c0 2.971 2.37 5.37 5.277 5.37h34.785c2.907 0 5.277-2.421 5.277-5.393V75.1c0-2.972 2.343-5.426 5.25-5.426h26.318v33.569c0 .617-.077 1.216-.221 1.789z\",\n fill: \"#DCE0E6\"\n })), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M149.121 33.292l-6.83 2.65a1 1 0 0 1-1.317-1.23l1.937-6.207c-2.589-2.944-4.109-6.534-4.109-10.408C138.802 8.102 148.92 0 161.402 0 173.881 0 184 8.102 184 18.097c0 9.995-10.118 18.097-22.599 18.097-4.528 0-8.744-1.066-12.28-2.902z\",\n fill: \"#DCE0E6\"\n }), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(149.65 15.383)\",\n fill: \"#FFF\"\n }, /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: \"20.654\",\n cy: \"3.167\",\n rx: \"2.849\",\n ry: \"2.815\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.698 5.63H0L2.898.704zM9.259.704h4.985V5.63H9.259z\"\n }))));\n};\nif (process.env.NODE_ENV !== 'production') {\n Empty.displayName = 'EmptyImage';\n}\nexport default Empty;","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport { TinyColor } from '@ctrl/tinycolor';\nimport * as React from 'react';\nimport { useMemo } from 'react';\nimport { useToken } from '../theme/internal';\nvar Simple = function Simple() {\n var _useToken = useToken(),\n _useToken2 = _slicedToArray(_useToken, 2),\n token = _useToken2[1];\n var colorFill = token.colorFill,\n colorFillTertiary = token.colorFillTertiary,\n colorFillQuaternary = token.colorFillQuaternary,\n colorBgContainer = token.colorBgContainer;\n var _useMemo = useMemo(function () {\n return {\n borderColor: new TinyColor(colorFill).onBackground(colorBgContainer).toHexShortString(),\n shadowColor: new TinyColor(colorFillTertiary).onBackground(colorBgContainer).toHexShortString(),\n contentColor: new TinyColor(colorFillQuaternary).onBackground(colorBgContainer).toHexShortString()\n };\n }, [colorFill, colorFillTertiary, colorFillQuaternary, colorBgContainer]),\n borderColor = _useMemo.borderColor,\n shadowColor = _useMemo.shadowColor,\n contentColor = _useMemo.contentColor;\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: \"64\",\n height: \"41\",\n viewBox: \"0 0 64 41\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(0 1)\",\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"ellipse\", {\n fill: shadowColor,\n cx: \"32\",\n cy: \"33\",\n rx: \"32\",\n ry: \"7\"\n }), /*#__PURE__*/React.createElement(\"g\", {\n fillRule: \"nonzero\",\n stroke: borderColor\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\",\n fill: contentColor\n }))));\n};\nif (process.env.NODE_ENV !== 'production') {\n Simple.displayName = 'SimpleImage';\n}\nexport default Simple;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\n// ============================== Shared ==============================\nvar genSharedEmptyStyle = function genSharedEmptyStyle(token) {\n var _normal, _componentCls;\n var componentCls = token.componentCls,\n margin = token.margin,\n marginXS = token.marginXS,\n marginXL = token.marginXL,\n fontSize = token.fontSize,\n lineHeight = token.lineHeight;\n return _defineProperty({}, componentCls, (_componentCls = {\n marginInline: marginXS,\n fontSize: fontSize,\n lineHeight: lineHeight,\n textAlign: 'center'\n }, _defineProperty(_componentCls, \"\".concat(componentCls, \"-image\"), {\n height: token.emptyImgHeight,\n marginBottom: marginXS,\n opacity: token.opacityImage,\n img: {\n height: '100%'\n },\n svg: {\n maxWidth: '100%',\n height: '100%',\n margin: 'auto'\n }\n }), _defineProperty(_componentCls, \"\".concat(componentCls, \"-description\"), {\n color: token.colorText\n }), _defineProperty(_componentCls, \"\".concat(componentCls, \"-footer\"), {\n marginTop: margin\n }), _defineProperty(_componentCls, '&-normal', (_normal = {\n marginBlock: marginXL,\n color: token.colorTextDisabled\n }, _defineProperty(_normal, \"\".concat(componentCls, \"-description\"), {\n color: token.colorTextDisabled\n }), _defineProperty(_normal, \"\".concat(componentCls, \"-image\"), {\n height: token.emptyImgHeightMD\n }), _normal)), _defineProperty(_componentCls, '&-small', _defineProperty({\n marginBlock: marginXS,\n color: token.colorTextDisabled\n }, \"\".concat(componentCls, \"-image\"), {\n height: token.emptyImgHeightSM\n })), _componentCls));\n};\n// ============================== Export ==============================\nexport default genComponentStyleHook('Empty', function (token) {\n var componentCls = token.componentCls,\n controlHeightLG = token.controlHeightLG;\n var emptyToken = mergeToken(token, {\n emptyImgCls: \"\".concat(componentCls, \"-img\"),\n emptyImgHeight: controlHeightLG * 2.5,\n emptyImgHeightMD: controlHeightLG,\n emptyImgHeightSM: controlHeightLG * 0.875\n });\n return [genSharedEmptyStyle(emptyToken)];\n});","'use client';\n\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport { useLocale } from '../locale';\nimport DefaultEmptyImg from './empty';\nimport SimpleEmptyImg from './simple';\nimport useStyle from './style';\nvar defaultEmptyImg = /*#__PURE__*/React.createElement(DefaultEmptyImg, null);\nvar simpleEmptyImg = /*#__PURE__*/React.createElement(SimpleEmptyImg, null);\nvar Empty = function Empty(_a) {\n var _classNames;\n var className = _a.className,\n rootClassName = _a.rootClassName,\n customizePrefixCls = _a.prefixCls,\n _a$image = _a.image,\n image = _a$image === void 0 ? defaultEmptyImg : _a$image,\n description = _a.description,\n children = _a.children,\n imageStyle = _a.imageStyle,\n style = _a.style,\n restProps = __rest(_a, [\"className\", \"rootClassName\", \"prefixCls\", \"image\", \"description\", \"children\", \"imageStyle\", \"style\"]);\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction,\n empty = _React$useContext.empty;\n var prefixCls = getPrefixCls('empty', customizePrefixCls);\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n var _useLocale = useLocale('Empty'),\n _useLocale2 = _slicedToArray(_useLocale, 1),\n locale = _useLocale2[0];\n var des = typeof description !== 'undefined' ? description : locale === null || locale === void 0 ? void 0 : locale.description;\n var alt = typeof des === 'string' ? des : 'empty';\n var imageNode = null;\n if (typeof image === 'string') {\n imageNode = /*#__PURE__*/React.createElement(\"img\", {\n alt: alt,\n src: image\n });\n } else {\n imageNode = image;\n }\n return wrapSSR( /*#__PURE__*/React.createElement(\"div\", Object.assign({\n className: classNames(hashId, prefixCls, empty === null || empty === void 0 ? void 0 : empty.className, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-normal\"), image === simpleEmptyImg), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _classNames), className, rootClassName),\n style: Object.assign(Object.assign({}, empty === null || empty === void 0 ? void 0 : empty.style), style)\n }, restProps), /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-image\"),\n style: imageStyle\n }, imageNode), des && /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-description\")\n }, des), children && /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-footer\")\n }, children)));\n};\nEmpty.PRESENTED_IMAGE_DEFAULT = defaultEmptyImg;\nEmpty.PRESENTED_IMAGE_SIMPLE = simpleEmptyImg;\nif (process.env.NODE_ENV !== 'production') {\n Empty.displayName = 'Empty';\n}\nexport default Empty;","import React, { useContext } from 'react';\nimport { ConfigContext } from '.';\nimport Empty from '../empty';\nvar DefaultRenderEmpty = function DefaultRenderEmpty(props) {\n var componentName = props.componentName;\n var _useContext = useContext(ConfigContext),\n getPrefixCls = _useContext.getPrefixCls;\n var prefix = getPrefixCls('empty');\n switch (componentName) {\n case 'Table':\n case 'List':\n return /*#__PURE__*/React.createElement(Empty, {\n image: Empty.PRESENTED_IMAGE_SIMPLE\n });\n case 'Select':\n case 'TreeSelect':\n case 'Cascader':\n case 'Transfer':\n case 'Mentions':\n return /*#__PURE__*/React.createElement(Empty, {\n image: Empty.PRESENTED_IMAGE_SIMPLE,\n className: \"\".concat(prefix, \"-small\")\n });\n /* istanbul ignore next */\n default:\n // Should never hit if we take all the component into consider.\n return /*#__PURE__*/React.createElement(Empty, null);\n }\n};\nexport default DefaultRenderEmpty;","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport * as React from 'react';\nimport { detectFlexGapSupported } from '../styleChecker';\nexport default (function () {\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n flexible = _React$useState2[0],\n setFlexible = _React$useState2[1];\n React.useEffect(function () {\n setFlexible(detectFlexGapSupported());\n }, []);\n return flexible;\n});","import { createContext } from 'react';\nvar RowContext = /*#__PURE__*/createContext({});\nexport default RowContext;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\n// ============================== Row-Shared ==============================\nvar genGridRowStyle = function genGridRowStyle(token) {\n var componentCls = token.componentCls;\n return _defineProperty({}, componentCls, {\n display: 'flex',\n flexFlow: 'row wrap',\n minWidth: 0,\n '&::before, &::after': {\n display: 'flex'\n },\n '&-no-wrap': {\n flexWrap: 'nowrap'\n },\n // The origin of the X-axis\n '&-start': {\n justifyContent: 'flex-start'\n },\n // The center of the X-axis\n '&-center': {\n justifyContent: 'center'\n },\n // The opposite of the X-axis\n '&-end': {\n justifyContent: 'flex-end'\n },\n '&-space-between': {\n justifyContent: 'space-between'\n },\n '&-space-around': {\n justifyContent: 'space-around'\n },\n '&-space-evenly': {\n justifyContent: 'space-evenly'\n },\n // Align at the top\n '&-top': {\n alignItems: 'flex-start'\n },\n // Align at the center\n '&-middle': {\n alignItems: 'center'\n },\n '&-bottom': {\n alignItems: 'flex-end'\n }\n });\n};\n// ============================== Col-Shared ==============================\nvar genGridColStyle = function genGridColStyle(token) {\n var componentCls = token.componentCls;\n return _defineProperty({}, componentCls, {\n position: 'relative',\n maxWidth: '100%',\n // Prevent columns from collapsing when empty\n minHeight: 1\n });\n};\nvar genLoopGridColumnsStyle = function genLoopGridColumnsStyle(token, sizeCls) {\n var componentCls = token.componentCls,\n gridColumns = token.gridColumns;\n var gridColumnsStyle = {};\n for (var i = gridColumns; i >= 0; i--) {\n if (i === 0) {\n gridColumnsStyle[\"\".concat(componentCls).concat(sizeCls, \"-\").concat(i)] = {\n display: 'none'\n };\n gridColumnsStyle[\"\".concat(componentCls, \"-push-\").concat(i)] = {\n insetInlineStart: 'auto'\n };\n gridColumnsStyle[\"\".concat(componentCls, \"-pull-\").concat(i)] = {\n insetInlineEnd: 'auto'\n };\n gridColumnsStyle[\"\".concat(componentCls).concat(sizeCls, \"-push-\").concat(i)] = {\n insetInlineStart: 'auto'\n };\n gridColumnsStyle[\"\".concat(componentCls).concat(sizeCls, \"-pull-\").concat(i)] = {\n insetInlineEnd: 'auto'\n };\n gridColumnsStyle[\"\".concat(componentCls).concat(sizeCls, \"-offset-\").concat(i)] = {\n marginInlineStart: 0\n };\n gridColumnsStyle[\"\".concat(componentCls).concat(sizeCls, \"-order-\").concat(i)] = {\n order: 0\n };\n } else {\n gridColumnsStyle[\"\".concat(componentCls).concat(sizeCls, \"-\").concat(i)] = {\n display: 'block',\n flex: \"0 0 \".concat(i / gridColumns * 100, \"%\"),\n maxWidth: \"\".concat(i / gridColumns * 100, \"%\")\n };\n gridColumnsStyle[\"\".concat(componentCls).concat(sizeCls, \"-push-\").concat(i)] = {\n insetInlineStart: \"\".concat(i / gridColumns * 100, \"%\")\n };\n gridColumnsStyle[\"\".concat(componentCls).concat(sizeCls, \"-pull-\").concat(i)] = {\n insetInlineEnd: \"\".concat(i / gridColumns * 100, \"%\")\n };\n gridColumnsStyle[\"\".concat(componentCls).concat(sizeCls, \"-offset-\").concat(i)] = {\n marginInlineStart: \"\".concat(i / gridColumns * 100, \"%\")\n };\n gridColumnsStyle[\"\".concat(componentCls).concat(sizeCls, \"-order-\").concat(i)] = {\n order: i\n };\n }\n }\n return gridColumnsStyle;\n};\nvar genGridStyle = function genGridStyle(token, sizeCls) {\n return genLoopGridColumnsStyle(token, sizeCls);\n};\nvar genGridMediaStyle = function genGridMediaStyle(token, screenSize, sizeCls) {\n return _defineProperty({}, \"@media (min-width: \".concat(screenSize, \"px)\"), Object.assign({}, genGridStyle(token, sizeCls)));\n};\n// ============================== Export ==============================\nexport var useRowStyle = genComponentStyleHook('Grid', function (token) {\n return [genGridRowStyle(token)];\n});\nexport var useColStyle = genComponentStyleHook('Grid', function (token) {\n var gridToken = mergeToken(token, {\n gridColumns: 24 // Row is divided into 24 parts in Grid\n });\n\n var gridMediaSizesMap = {\n '-sm': gridToken.screenSMMin,\n '-md': gridToken.screenMDMin,\n '-lg': gridToken.screenLGMin,\n '-xl': gridToken.screenXLMin,\n '-xxl': gridToken.screenXXLMin\n };\n return [genGridColStyle(gridToken), genGridStyle(gridToken, ''), genGridStyle(gridToken, '-xs'), Object.keys(gridMediaSizesMap).map(function (key) {\n return genGridMediaStyle(gridToken, gridMediaSizesMap[key], key);\n }).reduce(function (pre, cur) {\n return Object.assign(Object.assign({}, pre), cur);\n }, {})];\n});","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport useFlexGapSupport from '../_util/hooks/useFlexGapSupport';\nimport useResponsiveObserver, { responsiveArray } from '../_util/responsiveObserver';\nimport RowContext from './RowContext';\nimport { useRowStyle } from './style';\nvar RowAligns = ['top', 'middle', 'bottom', 'stretch'];\nvar RowJustify = ['start', 'end', 'center', 'space-around', 'space-between', 'space-evenly'];\nfunction useMergePropByScreen(oriProp, screen) {\n var _React$useState = React.useState(typeof oriProp === 'string' ? oriProp : ''),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n prop = _React$useState2[0],\n setProp = _React$useState2[1];\n var calcMergeAlignOrJustify = function calcMergeAlignOrJustify() {\n if (typeof oriProp === 'string') {\n setProp(oriProp);\n }\n if (typeof oriProp !== 'object') {\n return;\n }\n for (var i = 0; i < responsiveArray.length; i++) {\n var breakpoint = responsiveArray[i];\n // if do not match, do nothing\n if (!screen[breakpoint]) continue;\n var curVal = oriProp[breakpoint];\n if (curVal !== undefined) {\n setProp(curVal);\n return;\n }\n }\n };\n React.useEffect(function () {\n calcMergeAlignOrJustify();\n }, [JSON.stringify(oriProp), screen]);\n return prop;\n}\nvar Row = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _classNames;\n var customizePrefixCls = props.prefixCls,\n justify = props.justify,\n align = props.align,\n className = props.className,\n style = props.style,\n children = props.children,\n _props$gutter = props.gutter,\n gutter = _props$gutter === void 0 ? 0 : _props$gutter,\n wrap = props.wrap,\n others = __rest(props, [\"prefixCls\", \"justify\", \"align\", \"className\", \"style\", \"children\", \"gutter\", \"wrap\"]);\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n var _React$useState3 = React.useState({\n xs: true,\n sm: true,\n md: true,\n lg: true,\n xl: true,\n xxl: true\n }),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n screens = _React$useState4[0],\n setScreens = _React$useState4[1];\n // to save screens info when responsiveObserve callback had been call\n var _React$useState5 = React.useState({\n xs: false,\n sm: false,\n md: false,\n lg: false,\n xl: false,\n xxl: false\n }),\n _React$useState6 = _slicedToArray(_React$useState5, 2),\n curScreens = _React$useState6[0],\n setCurScreens = _React$useState6[1];\n // ================================== calc responsive data ==================================\n var mergeAlign = useMergePropByScreen(align, curScreens);\n var mergeJustify = useMergePropByScreen(justify, curScreens);\n var supportFlexGap = useFlexGapSupport();\n var gutterRef = React.useRef(gutter);\n var responsiveObserver = useResponsiveObserver();\n // ================================== Effect ==================================\n React.useEffect(function () {\n var token = responsiveObserver.subscribe(function (screen) {\n setCurScreens(screen);\n var currentGutter = gutterRef.current || 0;\n if (!Array.isArray(currentGutter) && typeof currentGutter === 'object' || Array.isArray(currentGutter) && (typeof currentGutter[0] === 'object' || typeof currentGutter[1] === 'object')) {\n setScreens(screen);\n }\n });\n return function () {\n return responsiveObserver.unsubscribe(token);\n };\n }, []);\n // ================================== Render ==================================\n var getGutter = function getGutter() {\n var results = [undefined, undefined];\n var normalizedGutter = Array.isArray(gutter) ? gutter : [gutter, undefined];\n normalizedGutter.forEach(function (g, index) {\n if (typeof g === 'object') {\n for (var i = 0; i < responsiveArray.length; i++) {\n var breakpoint = responsiveArray[i];\n if (screens[breakpoint] && g[breakpoint] !== undefined) {\n results[index] = g[breakpoint];\n break;\n }\n }\n } else {\n results[index] = g;\n }\n });\n return results;\n };\n var prefixCls = getPrefixCls('row', customizePrefixCls);\n var _useRowStyle = useRowStyle(prefixCls),\n _useRowStyle2 = _slicedToArray(_useRowStyle, 2),\n wrapSSR = _useRowStyle2[0],\n hashId = _useRowStyle2[1];\n var gutters = getGutter();\n var classes = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-no-wrap\"), wrap === false), _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(mergeJustify), mergeJustify), _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(mergeAlign), mergeAlign), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _classNames), className, hashId);\n // Add gutter related style\n var rowStyle = {};\n var horizontalGutter = gutters[0] != null && gutters[0] > 0 ? gutters[0] / -2 : undefined;\n var verticalGutter = gutters[1] != null && gutters[1] > 0 ? gutters[1] / -2 : undefined;\n if (horizontalGutter) {\n rowStyle.marginLeft = horizontalGutter;\n rowStyle.marginRight = horizontalGutter;\n }\n if (supportFlexGap) {\n // Set gap direct if flex gap support\n var _gutters = _slicedToArray(gutters, 2);\n rowStyle.rowGap = _gutters[1];\n } else if (verticalGutter) {\n rowStyle.marginTop = verticalGutter;\n rowStyle.marginBottom = verticalGutter;\n }\n // \"gutters\" is a new array in each rendering phase, it'll make 'React.useMemo' effectless.\n // So we deconstruct \"gutters\" variable here.\n var _gutters2 = _slicedToArray(gutters, 2),\n gutterH = _gutters2[0],\n gutterV = _gutters2[1];\n var rowContext = React.useMemo(function () {\n return {\n gutter: [gutterH, gutterV],\n wrap: wrap,\n supportFlexGap: supportFlexGap\n };\n }, [gutterH, gutterV, wrap, supportFlexGap]);\n return wrapSSR( /*#__PURE__*/React.createElement(RowContext.Provider, {\n value: rowContext\n }, /*#__PURE__*/React.createElement(\"div\", Object.assign({}, others, {\n className: classes,\n style: Object.assign(Object.assign({}, rowStyle), style),\n ref: ref\n }), children)));\n});\nif (process.env.NODE_ENV !== 'production') {\n Row.displayName = 'Row';\n}\nexport default Row;","import { useRef } from 'react';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport useForceUpdate from '../../_util/hooks/useForceUpdate';\nimport useResponsiveObserver from '../../_util/responsiveObserver';\nfunction useBreakpoint() {\n var refreshOnChange = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var screensRef = useRef({});\n var forceUpdate = useForceUpdate();\n var responsiveObserver = useResponsiveObserver();\n useLayoutEffect(function () {\n var token = responsiveObserver.subscribe(function (supportScreens) {\n screensRef.current = supportScreens;\n if (refreshOnChange) {\n forceUpdate();\n }\n });\n return function () {\n return responsiveObserver.unsubscribe(token);\n };\n }, []);\n return screensRef.current;\n}\nexport default useBreakpoint;","// This icon file is generated automatically.\nvar DoubleLeftOutlined = {\n \"icon\": {\n \"tag\": \"svg\",\n \"attrs\": {\n \"viewBox\": \"64 64 896 896\",\n \"focusable\": \"false\"\n },\n \"children\": [{\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M272.9 512l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L186.8 492.3a31.99 31.99 0 000 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H532c6.7 0 10.4-7.7 6.3-12.9L272.9 512zm304 0l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L490.8 492.3a31.99 31.99 0 000 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H836c6.7 0 10.4-7.7 6.3-12.9L576.9 512z\"\n }\n }]\n },\n \"name\": \"double-left\",\n \"theme\": \"outlined\"\n};\nexport default DoubleLeftOutlined;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport DoubleLeftOutlinedSvg from \"@ant-design/icons-svg/es/asn/DoubleLeftOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar DoubleLeftOutlined = function DoubleLeftOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: DoubleLeftOutlinedSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n DoubleLeftOutlined.displayName = 'DoubleLeftOutlined';\n}\nexport default /*#__PURE__*/React.forwardRef(DoubleLeftOutlined);","// This icon file is generated automatically.\nvar DoubleRightOutlined = {\n \"icon\": {\n \"tag\": \"svg\",\n \"attrs\": {\n \"viewBox\": \"64 64 896 896\",\n \"focusable\": \"false\"\n },\n \"children\": [{\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M533.2 492.3L277.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H188c-6.7 0-10.4 7.7-6.3 12.9L447.1 512 181.7 851.1A7.98 7.98 0 00188 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5zm304 0L581.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H492c-6.7 0-10.4 7.7-6.3 12.9L751.1 512 485.7 851.1A7.98 7.98 0 00492 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5z\"\n }\n }]\n },\n \"name\": \"double-right\",\n \"theme\": \"outlined\"\n};\nexport default DoubleRightOutlined;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport DoubleRightOutlinedSvg from \"@ant-design/icons-svg/es/asn/DoubleRightOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar DoubleRightOutlined = function DoubleRightOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: DoubleRightOutlinedSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n DoubleRightOutlined.displayName = 'DoubleRightOutlined';\n}\nexport default /*#__PURE__*/React.forwardRef(DoubleRightOutlined);","// This icon file is generated automatically.\nvar LeftOutlined = {\n \"icon\": {\n \"tag\": \"svg\",\n \"attrs\": {\n \"viewBox\": \"64 64 896 896\",\n \"focusable\": \"false\"\n },\n \"children\": [{\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"\n }\n }]\n },\n \"name\": \"left\",\n \"theme\": \"outlined\"\n};\nexport default LeftOutlined;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport LeftOutlinedSvg from \"@ant-design/icons-svg/es/asn/LeftOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar LeftOutlined = function LeftOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: LeftOutlinedSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n LeftOutlined.displayName = 'LeftOutlined';\n}\nexport default /*#__PURE__*/React.forwardRef(LeftOutlined);","var KeyCode = {\n ZERO: 48,\n NINE: 57,\n NUMPAD_ZERO: 96,\n NUMPAD_NINE: 105,\n BACKSPACE: 8,\n DELETE: 46,\n ENTER: 13,\n ARROW_UP: 38,\n ARROW_DOWN: 40\n};\nexport default KeyCode;","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\n/* eslint react/prop-types: 0 */\nimport React from 'react';\nimport KEYCODE from './KeyCode';\nvar Options = /*#__PURE__*/function (_React$Component) {\n _inherits(Options, _React$Component);\n var _super = _createSuper(Options);\n function Options() {\n var _this;\n _classCallCheck(this, Options);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _this.state = {\n goInputText: ''\n };\n _this.getValidValue = function () {\n var goInputText = _this.state.goInputText;\n // eslint-disable-next-line no-restricted-globals\n return !goInputText || Number.isNaN(goInputText) ? undefined : Number(goInputText);\n };\n _this.buildOptionText = function (value) {\n return \"\".concat(value, \" \").concat(_this.props.locale.items_per_page);\n };\n _this.changeSize = function (value) {\n _this.props.changeSize(Number(value));\n };\n _this.handleChange = function (e) {\n _this.setState({\n goInputText: e.target.value\n });\n };\n _this.handleBlur = function (e) {\n var _this$props = _this.props,\n goButton = _this$props.goButton,\n quickGo = _this$props.quickGo,\n rootPrefixCls = _this$props.rootPrefixCls;\n var goInputText = _this.state.goInputText;\n if (goButton || goInputText === '') {\n return;\n }\n _this.setState({\n goInputText: ''\n });\n if (e.relatedTarget && (e.relatedTarget.className.indexOf(\"\".concat(rootPrefixCls, \"-item-link\")) >= 0 || e.relatedTarget.className.indexOf(\"\".concat(rootPrefixCls, \"-item\")) >= 0)) {\n return;\n }\n quickGo(_this.getValidValue());\n };\n _this.go = function (e) {\n var goInputText = _this.state.goInputText;\n if (goInputText === '') {\n return;\n }\n if (e.keyCode === KEYCODE.ENTER || e.type === 'click') {\n _this.setState({\n goInputText: ''\n });\n _this.props.quickGo(_this.getValidValue());\n }\n };\n return _this;\n }\n _createClass(Options, [{\n key: \"getPageSizeOptions\",\n value: function getPageSizeOptions() {\n var _this$props2 = this.props,\n pageSize = _this$props2.pageSize,\n pageSizeOptions = _this$props2.pageSizeOptions;\n if (pageSizeOptions.some(function (option) {\n return option.toString() === pageSize.toString();\n })) {\n return pageSizeOptions;\n }\n return pageSizeOptions.concat([pageSize.toString()]).sort(function (a, b) {\n // eslint-disable-next-line no-restricted-globals\n var numberA = Number.isNaN(Number(a)) ? 0 : Number(a);\n // eslint-disable-next-line no-restricted-globals\n var numberB = Number.isNaN(Number(b)) ? 0 : Number(b);\n return numberA - numberB;\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n var _this$props3 = this.props,\n pageSize = _this$props3.pageSize,\n locale = _this$props3.locale,\n rootPrefixCls = _this$props3.rootPrefixCls,\n changeSize = _this$props3.changeSize,\n quickGo = _this$props3.quickGo,\n goButton = _this$props3.goButton,\n selectComponentClass = _this$props3.selectComponentClass,\n buildOptionText = _this$props3.buildOptionText,\n selectPrefixCls = _this$props3.selectPrefixCls,\n disabled = _this$props3.disabled;\n var goInputText = this.state.goInputText;\n var prefixCls = \"\".concat(rootPrefixCls, \"-options\");\n var Select = selectComponentClass;\n var changeSelect = null;\n var goInput = null;\n var gotoButton = null;\n if (!changeSize && !quickGo) {\n return null;\n }\n var pageSizeOptions = this.getPageSizeOptions();\n if (changeSize && Select) {\n var options = pageSizeOptions.map(function (opt, i) {\n return /*#__PURE__*/React.createElement(Select.Option, {\n key: i,\n value: opt.toString()\n }, (buildOptionText || _this2.buildOptionText)(opt));\n });\n changeSelect = /*#__PURE__*/React.createElement(Select, {\n disabled: disabled,\n prefixCls: selectPrefixCls,\n showSearch: false,\n className: \"\".concat(prefixCls, \"-size-changer\"),\n optionLabelProp: \"children\",\n popupMatchSelectWidth: false,\n value: (pageSize || pageSizeOptions[0]).toString(),\n onChange: this.changeSize,\n getPopupContainer: function getPopupContainer(triggerNode) {\n return triggerNode.parentNode;\n },\n \"aria-label\": locale.page_size,\n defaultOpen: false\n }, options);\n }\n if (quickGo) {\n if (goButton) {\n gotoButton = typeof goButton === 'boolean' ? /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n onClick: this.go,\n onKeyUp: this.go,\n disabled: disabled,\n className: \"\".concat(prefixCls, \"-quick-jumper-button\")\n }, locale.jump_to_confirm) : /*#__PURE__*/React.createElement(\"span\", {\n onClick: this.go,\n onKeyUp: this.go\n }, goButton);\n }\n goInput = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-quick-jumper\")\n }, locale.jump_to, /*#__PURE__*/React.createElement(\"input\", {\n disabled: disabled,\n type: \"text\",\n value: goInputText,\n onChange: this.handleChange,\n onKeyUp: this.go,\n onBlur: this.handleBlur,\n \"aria-label\": locale.page\n }), locale.page, gotoButton);\n }\n return /*#__PURE__*/React.createElement(\"li\", {\n className: \"\".concat(prefixCls)\n }, changeSelect, goInput);\n }\n }]);\n return Options;\n}(React.Component);\nOptions.defaultProps = {\n pageSizeOptions: ['10', '20', '50', '100']\n};\nexport default Options;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n/* eslint react/prop-types: 0 */\nimport classNames from 'classnames';\nimport React from 'react';\nvar Pager = function Pager(props) {\n var _classNames;\n var rootPrefixCls = props.rootPrefixCls,\n page = props.page,\n active = props.active,\n className = props.className,\n showTitle = props.showTitle,\n onClick = props.onClick,\n onKeyPress = props.onKeyPress,\n itemRender = props.itemRender;\n var prefixCls = \"\".concat(rootPrefixCls, \"-item\");\n var cls = classNames(prefixCls, \"\".concat(prefixCls, \"-\").concat(page), (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-active\"), active), _defineProperty(_classNames, \"\".concat(prefixCls, \"-disabled\"), !page), _defineProperty(_classNames, props.className, className), _classNames));\n var handleClick = function handleClick() {\n onClick(page);\n };\n var handleKeyPress = function handleKeyPress(e) {\n onKeyPress(e, onClick, page);\n };\n return /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? page.toString() : null,\n className: cls,\n onClick: handleClick,\n onKeyPress: handleKeyPress,\n tabIndex: 0\n }, itemRender(page, 'page', /*#__PURE__*/React.createElement(\"a\", {\n rel: \"nofollow\"\n }, page)));\n};\nexport default Pager;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport classNames from 'classnames';\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nimport React, { cloneElement, isValidElement } from 'react';\nimport KEYCODE from './KeyCode';\nimport LOCALE from './locale/zh_CN';\nimport Options from './Options';\nimport Pager from './Pager';\nfunction noop() {}\nfunction isInteger(v) {\n var value = Number(v);\n return (\n // eslint-disable-next-line no-restricted-globals\n typeof value === 'number' && !Number.isNaN(value) && isFinite(value) && Math.floor(value) === value\n );\n}\nvar defaultItemRender = function defaultItemRender(page, type, element) {\n return element;\n};\nfunction calculatePage(p, state, props) {\n var pageSize = typeof p === 'undefined' ? state.pageSize : p;\n return Math.floor((props.total - 1) / pageSize) + 1;\n}\nvar Pagination = /*#__PURE__*/function (_React$Component) {\n _inherits(Pagination, _React$Component);\n var _super = _createSuper(Pagination);\n function Pagination(props) {\n var _this;\n _classCallCheck(this, Pagination);\n _this = _super.call(this, props);\n _this.paginationNode = /*#__PURE__*/React.createRef();\n _this.getJumpPrevPage = function () {\n return Math.max(1, _this.state.current - (_this.props.showLessItems ? 3 : 5));\n };\n _this.getJumpNextPage = function () {\n return Math.min(calculatePage(undefined, _this.state, _this.props), _this.state.current + (_this.props.showLessItems ? 3 : 5));\n };\n _this.getItemIcon = function (icon, label) {\n var prefixCls = _this.props.prefixCls;\n var iconNode = icon || /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n \"aria-label\": label,\n className: \"\".concat(prefixCls, \"-item-link\")\n });\n if (typeof icon === 'function') {\n iconNode = /*#__PURE__*/React.createElement(icon, _objectSpread({}, _this.props));\n }\n return iconNode;\n };\n _this.isValid = function (page) {\n var total = _this.props.total;\n return isInteger(page) && page !== _this.state.current && isInteger(total) && total > 0;\n };\n _this.shouldDisplayQuickJumper = function () {\n var _this$props = _this.props,\n showQuickJumper = _this$props.showQuickJumper,\n total = _this$props.total;\n var pageSize = _this.state.pageSize;\n if (total <= pageSize) {\n return false;\n }\n return showQuickJumper;\n };\n _this.handleKeyDown = function (e) {\n if (e.keyCode === KEYCODE.ARROW_UP || e.keyCode === KEYCODE.ARROW_DOWN) {\n e.preventDefault();\n }\n };\n _this.handleKeyUp = function (e) {\n var value = _this.getValidValue(e);\n var currentInputValue = _this.state.currentInputValue;\n if (value !== currentInputValue) {\n _this.setState({\n currentInputValue: value\n });\n }\n if (e.keyCode === KEYCODE.ENTER) {\n _this.handleChange(value);\n } else if (e.keyCode === KEYCODE.ARROW_UP) {\n _this.handleChange(value - 1);\n } else if (e.keyCode === KEYCODE.ARROW_DOWN) {\n _this.handleChange(value + 1);\n }\n };\n _this.handleBlur = function (e) {\n var value = _this.getValidValue(e);\n _this.handleChange(value);\n };\n _this.changePageSize = function (size) {\n var current = _this.state.current;\n var newCurrent = calculatePage(size, _this.state, _this.props);\n current = current > newCurrent ? newCurrent : current;\n // fix the issue:\n // Once 'total' is 0, 'current' in 'onShowSizeChange' is 0, which is not correct.\n if (newCurrent === 0) {\n // eslint-disable-next-line prefer-destructuring\n current = _this.state.current;\n }\n if (typeof size === 'number') {\n if (!('pageSize' in _this.props)) {\n _this.setState({\n pageSize: size\n });\n }\n if (!('current' in _this.props)) {\n _this.setState({\n current: current,\n currentInputValue: current\n });\n }\n }\n _this.props.onShowSizeChange(current, size);\n if ('onChange' in _this.props && _this.props.onChange) {\n _this.props.onChange(current, size);\n }\n };\n _this.handleChange = function (page) {\n var _this$props2 = _this.props,\n disabled = _this$props2.disabled,\n onChange = _this$props2.onChange;\n var _this$state = _this.state,\n pageSize = _this$state.pageSize,\n current = _this$state.current,\n currentInputValue = _this$state.currentInputValue;\n if (_this.isValid(page) && !disabled) {\n var currentPage = calculatePage(undefined, _this.state, _this.props);\n var newPage = page;\n if (page > currentPage) {\n newPage = currentPage;\n } else if (page < 1) {\n newPage = 1;\n }\n if (!('current' in _this.props)) {\n _this.setState({\n current: newPage\n });\n }\n if (newPage !== currentInputValue) {\n _this.setState({\n currentInputValue: newPage\n });\n }\n onChange(newPage, pageSize);\n return newPage;\n }\n return current;\n };\n _this.prev = function () {\n if (_this.hasPrev()) {\n _this.handleChange(_this.state.current - 1);\n }\n };\n _this.next = function () {\n if (_this.hasNext()) {\n _this.handleChange(_this.state.current + 1);\n }\n };\n _this.jumpPrev = function () {\n _this.handleChange(_this.getJumpPrevPage());\n };\n _this.jumpNext = function () {\n _this.handleChange(_this.getJumpNextPage());\n };\n _this.hasPrev = function () {\n return _this.state.current > 1;\n };\n _this.hasNext = function () {\n return _this.state.current < calculatePage(undefined, _this.state, _this.props);\n };\n _this.runIfEnter = function (event, callback) {\n if (event.key === 'Enter' || event.charCode === 13) {\n for (var _len = arguments.length, restParams = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n restParams[_key - 2] = arguments[_key];\n }\n callback.apply(void 0, restParams);\n }\n };\n _this.runIfEnterPrev = function (e) {\n _this.runIfEnter(e, _this.prev);\n };\n _this.runIfEnterNext = function (e) {\n _this.runIfEnter(e, _this.next);\n };\n _this.runIfEnterJumpPrev = function (e) {\n _this.runIfEnter(e, _this.jumpPrev);\n };\n _this.runIfEnterJumpNext = function (e) {\n _this.runIfEnter(e, _this.jumpNext);\n };\n _this.handleGoTO = function (e) {\n if (e.keyCode === KEYCODE.ENTER || e.type === 'click') {\n _this.handleChange(_this.state.currentInputValue);\n }\n };\n _this.renderPrev = function (prevPage) {\n var _this$props3 = _this.props,\n prevIcon = _this$props3.prevIcon,\n itemRender = _this$props3.itemRender;\n var prevButton = itemRender(prevPage, 'prev', _this.getItemIcon(prevIcon, 'prev page'));\n var disabled = !_this.hasPrev();\n return /*#__PURE__*/isValidElement(prevButton) ? /*#__PURE__*/cloneElement(prevButton, {\n disabled: disabled\n }) : prevButton;\n };\n _this.renderNext = function (nextPage) {\n var _this$props4 = _this.props,\n nextIcon = _this$props4.nextIcon,\n itemRender = _this$props4.itemRender;\n var nextButton = itemRender(nextPage, 'next', _this.getItemIcon(nextIcon, 'next page'));\n var disabled = !_this.hasNext();\n return /*#__PURE__*/isValidElement(nextButton) ? /*#__PURE__*/cloneElement(nextButton, {\n disabled: disabled\n }) : nextButton;\n };\n var hasOnChange = props.onChange !== noop;\n var hasCurrent = ('current' in props);\n if (hasCurrent && !hasOnChange) {\n // eslint-disable-next-line no-console\n console.warn('Warning: You provided a `current` prop to a Pagination component without an `onChange` handler. This will render a read-only component.');\n }\n var _current = props.defaultCurrent;\n if ('current' in props) {\n // eslint-disable-next-line prefer-destructuring\n _current = props.current;\n }\n var _pageSize = props.defaultPageSize;\n if ('pageSize' in props) {\n // eslint-disable-next-line prefer-destructuring\n _pageSize = props.pageSize;\n }\n _current = Math.min(_current, calculatePage(_pageSize, undefined, props));\n _this.state = {\n current: _current,\n currentInputValue: _current,\n pageSize: _pageSize\n };\n return _this;\n }\n _createClass(Pagination, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(_, prevState) {\n // When current page change, fix focused style of prev item\n // A hacky solution of https://github.com/ant-design/ant-design/issues/8948\n var prefixCls = this.props.prefixCls;\n if (prevState.current !== this.state.current && this.paginationNode.current) {\n var lastCurrentNode = this.paginationNode.current.querySelector(\".\".concat(prefixCls, \"-item-\").concat(prevState.current));\n if (lastCurrentNode && document.activeElement === lastCurrentNode) {\n var _lastCurrentNode$blur;\n lastCurrentNode === null || lastCurrentNode === void 0 ? void 0 : (_lastCurrentNode$blur = lastCurrentNode.blur) === null || _lastCurrentNode$blur === void 0 ? void 0 : _lastCurrentNode$blur.call(lastCurrentNode);\n }\n }\n }\n }, {\n key: \"getValidValue\",\n value: function getValidValue(e) {\n var inputValue = e.target.value;\n var allPages = calculatePage(undefined, this.state, this.props);\n var currentInputValue = this.state.currentInputValue;\n var value;\n if (inputValue === '') {\n value = inputValue;\n // eslint-disable-next-line no-restricted-globals\n } else if (Number.isNaN(Number(inputValue))) {\n value = currentInputValue;\n } else if (inputValue >= allPages) {\n value = allPages;\n } else {\n value = Number(inputValue);\n }\n return value;\n }\n }, {\n key: \"getShowSizeChanger\",\n value: function getShowSizeChanger() {\n var _this$props5 = this.props,\n showSizeChanger = _this$props5.showSizeChanger,\n total = _this$props5.total,\n totalBoundaryShowSizeChanger = _this$props5.totalBoundaryShowSizeChanger;\n if (typeof showSizeChanger !== 'undefined') {\n return showSizeChanger;\n }\n return total > totalBoundaryShowSizeChanger;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props6 = this.props,\n prefixCls = _this$props6.prefixCls,\n className = _this$props6.className,\n style = _this$props6.style,\n disabled = _this$props6.disabled,\n hideOnSinglePage = _this$props6.hideOnSinglePage,\n total = _this$props6.total,\n locale = _this$props6.locale,\n showQuickJumper = _this$props6.showQuickJumper,\n showLessItems = _this$props6.showLessItems,\n showTitle = _this$props6.showTitle,\n showTotal = _this$props6.showTotal,\n simple = _this$props6.simple,\n itemRender = _this$props6.itemRender,\n showPrevNextJumpers = _this$props6.showPrevNextJumpers,\n jumpPrevIcon = _this$props6.jumpPrevIcon,\n jumpNextIcon = _this$props6.jumpNextIcon,\n selectComponentClass = _this$props6.selectComponentClass,\n selectPrefixCls = _this$props6.selectPrefixCls,\n pageSizeOptions = _this$props6.pageSizeOptions;\n var _this$state2 = this.state,\n current = _this$state2.current,\n pageSize = _this$state2.pageSize,\n currentInputValue = _this$state2.currentInputValue;\n // When hideOnSinglePage is true and there is only 1 page, hide the pager\n if (hideOnSinglePage === true && total <= pageSize) {\n return null;\n }\n var allPages = calculatePage(undefined, this.state, this.props);\n var pagerList = [];\n var jumpPrev = null;\n var jumpNext = null;\n var firstPager = null;\n var lastPager = null;\n var gotoButton = null;\n var goButton = showQuickJumper && showQuickJumper.goButton;\n var pageBufferSize = showLessItems ? 1 : 2;\n var prevPage = current - 1 > 0 ? current - 1 : 0;\n var nextPage = current + 1 < allPages ? current + 1 : allPages;\n var dataOrAriaAttributeProps = pickAttrs(this.props, {\n aria: true,\n data: true\n });\n var totalText = showTotal && /*#__PURE__*/React.createElement(\"li\", {\n className: \"\".concat(prefixCls, \"-total-text\")\n }, showTotal(total, [total === 0 ? 0 : (current - 1) * pageSize + 1, current * pageSize > total ? total : current * pageSize]));\n if (simple) {\n if (goButton) {\n if (typeof goButton === 'boolean') {\n gotoButton = /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n onClick: this.handleGoTO,\n onKeyUp: this.handleGoTO\n }, locale.jump_to_confirm);\n } else {\n gotoButton = /*#__PURE__*/React.createElement(\"span\", {\n onClick: this.handleGoTO,\n onKeyUp: this.handleGoTO\n }, goButton);\n }\n gotoButton = /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? \"\".concat(locale.jump_to).concat(current, \"/\").concat(allPages) : null,\n className: \"\".concat(prefixCls, \"-simple-pager\")\n }, gotoButton);\n }\n return /*#__PURE__*/React.createElement(\"ul\", _extends({\n className: classNames(prefixCls, \"\".concat(prefixCls, \"-simple\"), _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), disabled), className),\n style: style,\n ref: this.paginationNode\n }, dataOrAriaAttributeProps), totalText, /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? locale.prev_page : null,\n onClick: this.prev,\n tabIndex: this.hasPrev() ? 0 : null,\n onKeyPress: this.runIfEnterPrev,\n className: classNames(\"\".concat(prefixCls, \"-prev\"), _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), !this.hasPrev())),\n \"aria-disabled\": !this.hasPrev()\n }, this.renderPrev(prevPage)), /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? \"\".concat(current, \"/\").concat(allPages) : null,\n className: \"\".concat(prefixCls, \"-simple-pager\")\n }, /*#__PURE__*/React.createElement(\"input\", {\n type: \"text\",\n value: currentInputValue,\n disabled: disabled,\n onKeyDown: this.handleKeyDown,\n onKeyUp: this.handleKeyUp,\n onChange: this.handleKeyUp,\n onBlur: this.handleBlur,\n size: 3\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-slash\")\n }, \"/\"), allPages), /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? locale.next_page : null,\n onClick: this.next,\n tabIndex: this.hasPrev() ? 0 : null,\n onKeyPress: this.runIfEnterNext,\n className: classNames(\"\".concat(prefixCls, \"-next\"), _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), !this.hasNext())),\n \"aria-disabled\": !this.hasNext()\n }, this.renderNext(nextPage)), gotoButton);\n }\n if (allPages <= 3 + pageBufferSize * 2) {\n var pagerProps = {\n locale: locale,\n rootPrefixCls: prefixCls,\n onClick: this.handleChange,\n onKeyPress: this.runIfEnter,\n showTitle: showTitle,\n itemRender: itemRender\n };\n if (!allPages) {\n pagerList.push( /*#__PURE__*/React.createElement(Pager, _extends({}, pagerProps, {\n key: \"noPager\",\n page: 1,\n className: \"\".concat(prefixCls, \"-item-disabled\")\n })));\n }\n for (var i = 1; i <= allPages; i += 1) {\n var active = current === i;\n pagerList.push( /*#__PURE__*/React.createElement(Pager, _extends({}, pagerProps, {\n key: i,\n page: i,\n active: active\n })));\n }\n } else {\n var prevItemTitle = showLessItems ? locale.prev_3 : locale.prev_5;\n var nextItemTitle = showLessItems ? locale.next_3 : locale.next_5;\n if (showPrevNextJumpers) {\n jumpPrev = /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? prevItemTitle : null,\n key: \"prev\",\n onClick: this.jumpPrev,\n tabIndex: 0,\n onKeyPress: this.runIfEnterJumpPrev,\n className: classNames(\"\".concat(prefixCls, \"-jump-prev\"), _defineProperty({}, \"\".concat(prefixCls, \"-jump-prev-custom-icon\"), !!jumpPrevIcon))\n }, itemRender(this.getJumpPrevPage(), 'jump-prev', this.getItemIcon(jumpPrevIcon, 'prev page')));\n jumpNext = /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? nextItemTitle : null,\n key: \"next\",\n tabIndex: 0,\n onClick: this.jumpNext,\n onKeyPress: this.runIfEnterJumpNext,\n className: classNames(\"\".concat(prefixCls, \"-jump-next\"), _defineProperty({}, \"\".concat(prefixCls, \"-jump-next-custom-icon\"), !!jumpNextIcon))\n }, itemRender(this.getJumpNextPage(), 'jump-next', this.getItemIcon(jumpNextIcon, 'next page')));\n }\n lastPager = /*#__PURE__*/React.createElement(Pager, {\n locale: locale,\n last: true,\n rootPrefixCls: prefixCls,\n onClick: this.handleChange,\n onKeyPress: this.runIfEnter,\n key: allPages,\n page: allPages,\n active: false,\n showTitle: showTitle,\n itemRender: itemRender\n });\n firstPager = /*#__PURE__*/React.createElement(Pager, {\n locale: locale,\n rootPrefixCls: prefixCls,\n onClick: this.handleChange,\n onKeyPress: this.runIfEnter,\n key: 1,\n page: 1,\n active: false,\n showTitle: showTitle,\n itemRender: itemRender\n });\n var left = Math.max(1, current - pageBufferSize);\n var right = Math.min(current + pageBufferSize, allPages);\n if (current - 1 <= pageBufferSize) {\n right = 1 + pageBufferSize * 2;\n }\n if (allPages - current <= pageBufferSize) {\n left = allPages - pageBufferSize * 2;\n }\n for (var _i = left; _i <= right; _i += 1) {\n var _active = current === _i;\n pagerList.push( /*#__PURE__*/React.createElement(Pager, {\n locale: locale,\n rootPrefixCls: prefixCls,\n onClick: this.handleChange,\n onKeyPress: this.runIfEnter,\n key: _i,\n page: _i,\n active: _active,\n showTitle: showTitle,\n itemRender: itemRender\n }));\n }\n if (current - 1 >= pageBufferSize * 2 && current !== 1 + 2) {\n pagerList[0] = /*#__PURE__*/cloneElement(pagerList[0], {\n className: \"\".concat(prefixCls, \"-item-after-jump-prev\")\n });\n pagerList.unshift(jumpPrev);\n }\n if (allPages - current >= pageBufferSize * 2 && current !== allPages - 2) {\n pagerList[pagerList.length - 1] = /*#__PURE__*/cloneElement(pagerList[pagerList.length - 1], {\n className: \"\".concat(prefixCls, \"-item-before-jump-next\")\n });\n pagerList.push(jumpNext);\n }\n if (left !== 1) {\n pagerList.unshift(firstPager);\n }\n if (right !== allPages) {\n pagerList.push(lastPager);\n }\n }\n var prevDisabled = !this.hasPrev() || !allPages;\n var nextDisabled = !this.hasNext() || !allPages;\n return /*#__PURE__*/React.createElement(\"ul\", _extends({\n className: classNames(prefixCls, className, _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), disabled)),\n style: style,\n ref: this.paginationNode\n }, dataOrAriaAttributeProps), totalText, /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? locale.prev_page : null,\n onClick: this.prev,\n tabIndex: prevDisabled ? null : 0,\n onKeyPress: this.runIfEnterPrev,\n className: classNames(\"\".concat(prefixCls, \"-prev\"), _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), prevDisabled)),\n \"aria-disabled\": prevDisabled\n }, this.renderPrev(prevPage)), pagerList, /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? locale.next_page : null,\n onClick: this.next,\n tabIndex: nextDisabled ? null : 0,\n onKeyPress: this.runIfEnterNext,\n className: classNames(\"\".concat(prefixCls, \"-next\"), _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), nextDisabled)),\n \"aria-disabled\": nextDisabled\n }, this.renderNext(nextPage)), /*#__PURE__*/React.createElement(Options, {\n disabled: disabled,\n locale: locale,\n rootPrefixCls: prefixCls,\n selectComponentClass: selectComponentClass,\n selectPrefixCls: selectPrefixCls,\n changeSize: this.getShowSizeChanger() ? this.changePageSize : null,\n current: current,\n pageSize: pageSize,\n pageSizeOptions: pageSizeOptions,\n quickGo: this.shouldDisplayQuickJumper() ? this.handleChange : null,\n goButton: goButton\n }));\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(props, prevState) {\n var newState = {};\n if ('current' in props) {\n newState.current = props.current;\n if (props.current !== prevState.current) {\n newState.currentInputValue = newState.current;\n }\n }\n if ('pageSize' in props && props.pageSize !== prevState.pageSize) {\n var current = prevState.current;\n var newCurrent = calculatePage(props.pageSize, prevState, props);\n current = current > newCurrent ? newCurrent : current;\n if (!('current' in props)) {\n newState.current = current;\n newState.currentInputValue = current;\n }\n newState.pageSize = props.pageSize;\n }\n return newState;\n }\n }]);\n return Pagination;\n}(React.Component);\nPagination.defaultProps = {\n defaultCurrent: 1,\n total: 0,\n defaultPageSize: 10,\n onChange: noop,\n className: '',\n selectPrefixCls: 'rc-select',\n prefixCls: 'rc-pagination',\n selectComponentClass: null,\n hideOnSinglePage: false,\n showPrevNextJumpers: true,\n showQuickJumper: false,\n showLessItems: false,\n showTitle: true,\n onShowSizeChange: noop,\n locale: LOCALE,\n style: {},\n itemRender: defaultItemRender,\n totalBoundaryShowSizeChanger: 50\n};\nexport default Pagination;","export default {\n // Options.jsx\n items_per_page: '条/页',\n jump_to: '跳至',\n jump_to_confirm: '确定',\n page: '页',\n // Pagination.jsx\n prev_page: '上一页',\n next_page: '下一页',\n prev_5: '向前 5 页',\n next_5: '向后 5 页',\n prev_3: '向前 3 页',\n next_3: '向后 3 页',\n page_size: '页码'\n};","/**\n * BaseSelect provide some parsed data into context.\n * You can use this hooks to get them.\n */\n\nimport * as React from 'react';\nexport var BaseSelectContext = /*#__PURE__*/React.createContext(null);\nexport default function useBaseProps() {\n return React.useContext(BaseSelectContext);\n}","import * as React from 'react';\n\n/**\n * Locker return cached mark.\n * If set to `true`, will return `true` in a short time even if set `false`.\n * If set to `false` and then set to `true`, will change to `true`.\n * And after time duration, it will back to `null` automatically.\n */\nexport default function useLock() {\n var duration = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 250;\n var lockRef = React.useRef(null);\n var timeoutRef = React.useRef(null);\n\n // Clean up\n React.useEffect(function () {\n return function () {\n window.clearTimeout(timeoutRef.current);\n };\n }, []);\n function doLock(locked) {\n if (locked || lockRef.current === null) {\n lockRef.current = locked;\n }\n window.clearTimeout(timeoutRef.current);\n timeoutRef.current = window.setTimeout(function () {\n lockRef.current = null;\n }, duration);\n }\n return [function () {\n return lockRef.current;\n }, doLock];\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"invalidate\", \"item\", \"renderItem\", \"responsive\", \"responsiveDisabled\", \"registerSize\", \"itemKey\", \"className\", \"style\", \"children\", \"display\", \"order\", \"component\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport ResizeObserver from 'rc-resize-observer';\n// Use shared variable to save bundle size\nvar UNDEFINED = undefined;\nfunction InternalItem(props, ref) {\n var prefixCls = props.prefixCls,\n invalidate = props.invalidate,\n item = props.item,\n renderItem = props.renderItem,\n responsive = props.responsive,\n responsiveDisabled = props.responsiveDisabled,\n registerSize = props.registerSize,\n itemKey = props.itemKey,\n className = props.className,\n style = props.style,\n children = props.children,\n display = props.display,\n order = props.order,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'div' : _props$component,\n restProps = _objectWithoutProperties(props, _excluded);\n var mergedHidden = responsive && !display;\n // ================================ Effect ================================\n function internalRegisterSize(width) {\n registerSize(itemKey, width);\n }\n React.useEffect(function () {\n return function () {\n internalRegisterSize(null);\n };\n }, []);\n // ================================ Render ================================\n var childNode = renderItem && item !== UNDEFINED ? renderItem(item) : children;\n var overflowStyle;\n if (!invalidate) {\n overflowStyle = {\n opacity: mergedHidden ? 0 : 1,\n height: mergedHidden ? 0 : UNDEFINED,\n overflowY: mergedHidden ? 'hidden' : UNDEFINED,\n order: responsive ? order : UNDEFINED,\n pointerEvents: mergedHidden ? 'none' : UNDEFINED,\n position: mergedHidden ? 'absolute' : UNDEFINED\n };\n }\n var overflowProps = {};\n if (mergedHidden) {\n overflowProps['aria-hidden'] = true;\n }\n var itemNode = /*#__PURE__*/React.createElement(Component, _extends({\n className: classNames(!invalidate && prefixCls, className),\n style: _objectSpread(_objectSpread({}, overflowStyle), style)\n }, overflowProps, restProps, {\n ref: ref\n }), childNode);\n if (responsive) {\n itemNode = /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: function onResize(_ref) {\n var offsetWidth = _ref.offsetWidth;\n internalRegisterSize(offsetWidth);\n },\n disabled: responsiveDisabled\n }, itemNode);\n }\n return itemNode;\n}\nvar Item = /*#__PURE__*/React.forwardRef(InternalItem);\nItem.displayName = 'Item';\nexport default Item;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport useEvent from \"rc-util/es/hooks/useEvent\";\nimport * as React from 'react';\nimport { unstable_batchedUpdates } from 'react-dom';\nimport channelUpdate from './channelUpdate';\n/**\n * Batcher for record any `useEffectState` need update.\n */\nexport function useBatcher() {\n // Updater Trigger\n var updateFuncRef = React.useRef(null);\n // Notify update\n var notifyEffectUpdate = function notifyEffectUpdate(callback) {\n if (!updateFuncRef.current) {\n updateFuncRef.current = [];\n channelUpdate(function () {\n unstable_batchedUpdates(function () {\n updateFuncRef.current.forEach(function (fn) {\n fn();\n });\n updateFuncRef.current = null;\n });\n });\n }\n updateFuncRef.current.push(callback);\n };\n return notifyEffectUpdate;\n}\n/**\n * Trigger state update by `useLayoutEffect` to save perf.\n */\nexport default function useEffectState(notifyEffectUpdate, defaultValue) {\n // Value\n var _React$useState = React.useState(defaultValue),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n stateValue = _React$useState2[0],\n setStateValue = _React$useState2[1];\n // Set State\n var setEffectVal = useEvent(function (nextValue) {\n notifyEffectUpdate(function () {\n setStateValue(nextValue);\n });\n });\n return [stateValue, setEffectVal];\n}","import raf from \"rc-util/es/raf\";\nexport default function channelUpdate(callback) {\n if (typeof MessageChannel === 'undefined') {\n raf(callback);\n } else {\n var channel = new MessageChannel();\n channel.port1.onmessage = function () {\n return callback();\n };\n channel.port2.postMessage(undefined);\n }\n}","import React from 'react';\nexport var OverflowContext = /*#__PURE__*/React.createContext(null);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"component\"],\n _excluded2 = [\"className\"],\n _excluded3 = [\"className\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport Item from './Item';\nimport { OverflowContext } from './context';\nvar InternalRawItem = function InternalRawItem(props, ref) {\n var context = React.useContext(OverflowContext);\n // Render directly when context not provided\n if (!context) {\n var _props$component = props.component,\n Component = _props$component === void 0 ? 'div' : _props$component,\n _restProps = _objectWithoutProperties(props, _excluded);\n return /*#__PURE__*/React.createElement(Component, _extends({}, _restProps, {\n ref: ref\n }));\n }\n var contextClassName = context.className,\n restContext = _objectWithoutProperties(context, _excluded2);\n var className = props.className,\n restProps = _objectWithoutProperties(props, _excluded3);\n // Do not pass context to sub item to avoid multiple measure\n return /*#__PURE__*/React.createElement(OverflowContext.Provider, {\n value: null\n }, /*#__PURE__*/React.createElement(Item, _extends({\n ref: ref,\n className: classNames(contextClassName, className)\n }, restContext, restProps)));\n};\nvar RawItem = /*#__PURE__*/React.forwardRef(InternalRawItem);\nRawItem.displayName = 'RawItem';\nexport default RawItem;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"data\", \"renderItem\", \"renderRawItem\", \"itemKey\", \"itemWidth\", \"ssr\", \"style\", \"className\", \"maxCount\", \"renderRest\", \"renderRawRest\", \"suffix\", \"component\", \"itemComponent\", \"onVisibleChange\"];\nimport * as React from 'react';\nimport { useState, useMemo, useCallback } from 'react';\nimport classNames from 'classnames';\nimport ResizeObserver from 'rc-resize-observer';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport Item from './Item';\nimport useEffectState, { useBatcher } from './hooks/useEffectState';\nimport RawItem from './RawItem';\nimport { OverflowContext } from './context';\nvar RESPONSIVE = 'responsive';\nvar INVALIDATE = 'invalidate';\nexport { OverflowContext } from './context';\nfunction defaultRenderRest(omittedItems) {\n return \"+ \".concat(omittedItems.length, \" ...\");\n}\nfunction Overflow(props, ref) {\n var _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-overflow' : _props$prefixCls,\n _props$data = props.data,\n data = _props$data === void 0 ? [] : _props$data,\n renderItem = props.renderItem,\n renderRawItem = props.renderRawItem,\n itemKey = props.itemKey,\n _props$itemWidth = props.itemWidth,\n itemWidth = _props$itemWidth === void 0 ? 10 : _props$itemWidth,\n ssr = props.ssr,\n style = props.style,\n className = props.className,\n maxCount = props.maxCount,\n renderRest = props.renderRest,\n renderRawRest = props.renderRawRest,\n suffix = props.suffix,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'div' : _props$component,\n itemComponent = props.itemComponent,\n onVisibleChange = props.onVisibleChange,\n restProps = _objectWithoutProperties(props, _excluded);\n var fullySSR = ssr === 'full';\n var notifyEffectUpdate = useBatcher();\n var _useEffectState = useEffectState(notifyEffectUpdate, null),\n _useEffectState2 = _slicedToArray(_useEffectState, 2),\n containerWidth = _useEffectState2[0],\n setContainerWidth = _useEffectState2[1];\n var mergedContainerWidth = containerWidth || 0;\n var _useEffectState3 = useEffectState(notifyEffectUpdate, new Map()),\n _useEffectState4 = _slicedToArray(_useEffectState3, 2),\n itemWidths = _useEffectState4[0],\n setItemWidths = _useEffectState4[1];\n var _useEffectState5 = useEffectState(notifyEffectUpdate, 0),\n _useEffectState6 = _slicedToArray(_useEffectState5, 2),\n prevRestWidth = _useEffectState6[0],\n setPrevRestWidth = _useEffectState6[1];\n var _useEffectState7 = useEffectState(notifyEffectUpdate, 0),\n _useEffectState8 = _slicedToArray(_useEffectState7, 2),\n restWidth = _useEffectState8[0],\n setRestWidth = _useEffectState8[1];\n var _useEffectState9 = useEffectState(notifyEffectUpdate, 0),\n _useEffectState10 = _slicedToArray(_useEffectState9, 2),\n suffixWidth = _useEffectState10[0],\n setSuffixWidth = _useEffectState10[1];\n var _useState = useState(null),\n _useState2 = _slicedToArray(_useState, 2),\n suffixFixedStart = _useState2[0],\n setSuffixFixedStart = _useState2[1];\n var _useState3 = useState(null),\n _useState4 = _slicedToArray(_useState3, 2),\n displayCount = _useState4[0],\n setDisplayCount = _useState4[1];\n var mergedDisplayCount = React.useMemo(function () {\n if (displayCount === null && fullySSR) {\n return Number.MAX_SAFE_INTEGER;\n }\n return displayCount || 0;\n }, [displayCount, containerWidth]);\n var _useState5 = useState(false),\n _useState6 = _slicedToArray(_useState5, 2),\n restReady = _useState6[0],\n setRestReady = _useState6[1];\n var itemPrefixCls = \"\".concat(prefixCls, \"-item\");\n // Always use the max width to avoid blink\n var mergedRestWidth = Math.max(prevRestWidth, restWidth);\n // ================================= Data =================================\n var isResponsive = maxCount === RESPONSIVE;\n var shouldResponsive = data.length && isResponsive;\n var invalidate = maxCount === INVALIDATE;\n /**\n * When is `responsive`, we will always render rest node to get the real width of it for calculation\n */\n var showRest = shouldResponsive || typeof maxCount === 'number' && data.length > maxCount;\n var mergedData = useMemo(function () {\n var items = data;\n if (shouldResponsive) {\n if (containerWidth === null && fullySSR) {\n items = data;\n } else {\n items = data.slice(0, Math.min(data.length, mergedContainerWidth / itemWidth));\n }\n } else if (typeof maxCount === 'number') {\n items = data.slice(0, maxCount);\n }\n return items;\n }, [data, itemWidth, containerWidth, maxCount, shouldResponsive]);\n var omittedItems = useMemo(function () {\n if (shouldResponsive) {\n return data.slice(mergedDisplayCount + 1);\n }\n return data.slice(mergedData.length);\n }, [data, mergedData, shouldResponsive, mergedDisplayCount]);\n // ================================= Item =================================\n var getKey = useCallback(function (item, index) {\n var _ref;\n if (typeof itemKey === 'function') {\n return itemKey(item);\n }\n return (_ref = itemKey && (item === null || item === void 0 ? void 0 : item[itemKey])) !== null && _ref !== void 0 ? _ref : index;\n }, [itemKey]);\n var mergedRenderItem = useCallback(renderItem || function (item) {\n return item;\n }, [renderItem]);\n function updateDisplayCount(count, suffixFixedStartVal, notReady) {\n // React 18 will sync render even when the value is same in some case.\n // We take `mergedData` as deps which may cause dead loop if it's dynamic generate.\n // ref: https://github.com/ant-design/ant-design/issues/36559\n if (displayCount === count && (suffixFixedStartVal === undefined || suffixFixedStartVal === suffixFixedStart)) {\n return;\n }\n setDisplayCount(count);\n if (!notReady) {\n setRestReady(count < data.length - 1);\n onVisibleChange === null || onVisibleChange === void 0 ? void 0 : onVisibleChange(count);\n }\n if (suffixFixedStartVal !== undefined) {\n setSuffixFixedStart(suffixFixedStartVal);\n }\n }\n // ================================= Size =================================\n function onOverflowResize(_, element) {\n setContainerWidth(element.clientWidth);\n }\n function registerSize(key, width) {\n setItemWidths(function (origin) {\n var clone = new Map(origin);\n if (width === null) {\n clone.delete(key);\n } else {\n clone.set(key, width);\n }\n return clone;\n });\n }\n function registerOverflowSize(_, width) {\n setRestWidth(width);\n setPrevRestWidth(restWidth);\n }\n function registerSuffixSize(_, width) {\n setSuffixWidth(width);\n }\n // ================================ Effect ================================\n function getItemWidth(index) {\n return itemWidths.get(getKey(mergedData[index], index));\n }\n useLayoutEffect(function () {\n if (mergedContainerWidth && typeof mergedRestWidth === 'number' && mergedData) {\n var totalWidth = suffixWidth;\n var len = mergedData.length;\n var lastIndex = len - 1;\n // When data count change to 0, reset this since not loop will reach\n if (!len) {\n updateDisplayCount(0, null);\n return;\n }\n for (var i = 0; i < len; i += 1) {\n var currentItemWidth = getItemWidth(i);\n // Fully will always render\n if (fullySSR) {\n currentItemWidth = currentItemWidth || 0;\n }\n // Break since data not ready\n if (currentItemWidth === undefined) {\n updateDisplayCount(i - 1, undefined, true);\n break;\n }\n // Find best match\n totalWidth += currentItemWidth;\n if (\n // Only one means `totalWidth` is the final width\n lastIndex === 0 && totalWidth <= mergedContainerWidth ||\n // Last two width will be the final width\n i === lastIndex - 1 && totalWidth + getItemWidth(lastIndex) <= mergedContainerWidth) {\n // Additional check if match the end\n updateDisplayCount(lastIndex, null);\n break;\n } else if (totalWidth + mergedRestWidth > mergedContainerWidth) {\n // Can not hold all the content to show rest\n updateDisplayCount(i - 1, totalWidth - currentItemWidth - suffixWidth + restWidth);\n break;\n }\n }\n if (suffix && getItemWidth(0) + suffixWidth > mergedContainerWidth) {\n setSuffixFixedStart(null);\n }\n }\n }, [mergedContainerWidth, itemWidths, restWidth, suffixWidth, getKey, mergedData]);\n // ================================ Render ================================\n var displayRest = restReady && !!omittedItems.length;\n var suffixStyle = {};\n if (suffixFixedStart !== null && shouldResponsive) {\n suffixStyle = {\n position: 'absolute',\n left: suffixFixedStart,\n top: 0\n };\n }\n var itemSharedProps = {\n prefixCls: itemPrefixCls,\n responsive: shouldResponsive,\n component: itemComponent,\n invalidate: invalidate\n };\n // >>>>> Choice render fun by `renderRawItem`\n var internalRenderItemNode = renderRawItem ? function (item, index) {\n var key = getKey(item, index);\n return /*#__PURE__*/React.createElement(OverflowContext.Provider, {\n key: key,\n value: _objectSpread(_objectSpread({}, itemSharedProps), {}, {\n order: index,\n item: item,\n itemKey: key,\n registerSize: registerSize,\n display: index <= mergedDisplayCount\n })\n }, renderRawItem(item, index));\n } : function (item, index) {\n var key = getKey(item, index);\n return /*#__PURE__*/React.createElement(Item, _extends({}, itemSharedProps, {\n order: index,\n key: key,\n item: item,\n renderItem: mergedRenderItem,\n itemKey: key,\n registerSize: registerSize,\n display: index <= mergedDisplayCount\n }));\n };\n // >>>>> Rest node\n var restNode;\n var restContextProps = {\n order: displayRest ? mergedDisplayCount : Number.MAX_SAFE_INTEGER,\n className: \"\".concat(itemPrefixCls, \"-rest\"),\n registerSize: registerOverflowSize,\n display: displayRest\n };\n if (!renderRawRest) {\n var mergedRenderRest = renderRest || defaultRenderRest;\n restNode = /*#__PURE__*/React.createElement(Item, _extends({}, itemSharedProps, restContextProps), typeof mergedRenderRest === 'function' ? mergedRenderRest(omittedItems) : mergedRenderRest);\n } else if (renderRawRest) {\n restNode = /*#__PURE__*/React.createElement(OverflowContext.Provider, {\n value: _objectSpread(_objectSpread({}, itemSharedProps), restContextProps)\n }, renderRawRest(omittedItems));\n }\n var overflowNode = /*#__PURE__*/React.createElement(Component, _extends({\n className: classNames(!invalidate && prefixCls, className),\n style: style,\n ref: ref\n }, restProps), mergedData.map(internalRenderItemNode), showRest ? restNode : null, suffix && /*#__PURE__*/React.createElement(Item, _extends({}, itemSharedProps, {\n responsive: isResponsive,\n responsiveDisabled: !shouldResponsive,\n order: mergedDisplayCount,\n className: \"\".concat(itemPrefixCls, \"-suffix\"),\n registerSize: registerSuffixSize,\n display: true,\n style: suffixStyle\n }), suffix));\n if (isResponsive) {\n overflowNode = /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: onOverflowResize,\n disabled: !shouldResponsive\n }, overflowNode);\n }\n return overflowNode;\n}\nvar ForwardOverflow = /*#__PURE__*/React.forwardRef(Overflow);\nForwardOverflow.displayName = 'Overflow';\nForwardOverflow.Item = RawItem;\nForwardOverflow.RESPONSIVE = RESPONSIVE;\nForwardOverflow.INVALIDATE = INVALIDATE;\n// Convert to generic type\nexport default ForwardOverflow;","import Overflow from './Overflow';\nexport default Overflow;","import * as React from 'react';\nimport classNames from 'classnames';\nvar TransBtn = function TransBtn(_ref) {\n var className = _ref.className,\n customizeIcon = _ref.customizeIcon,\n customizeIconProps = _ref.customizeIconProps,\n _onMouseDown = _ref.onMouseDown,\n onClick = _ref.onClick,\n children = _ref.children;\n var icon;\n if (typeof customizeIcon === 'function') {\n icon = customizeIcon(customizeIconProps);\n } else {\n icon = customizeIcon;\n }\n return /*#__PURE__*/React.createElement(\"span\", {\n className: className,\n onMouseDown: function onMouseDown(event) {\n event.preventDefault();\n if (_onMouseDown) {\n _onMouseDown(event);\n }\n },\n style: {\n userSelect: 'none',\n WebkitUserSelect: 'none'\n },\n unselectable: \"on\",\n onClick: onClick,\n \"aria-hidden\": true\n }, icon !== undefined ? icon : /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(className.split(/\\s+/).map(function (cls) {\n return \"\".concat(cls, \"-icon\");\n }))\n }, children));\n};\nexport default TransBtn;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { composeRef } from \"rc-util/es/ref\";\nimport { warning } from \"rc-util/es/warning\";\nvar Input = function Input(_ref, ref) {\n var _inputNode2, _inputNode2$props;\n var prefixCls = _ref.prefixCls,\n id = _ref.id,\n inputElement = _ref.inputElement,\n disabled = _ref.disabled,\n tabIndex = _ref.tabIndex,\n autoFocus = _ref.autoFocus,\n autoComplete = _ref.autoComplete,\n editable = _ref.editable,\n activeDescendantId = _ref.activeDescendantId,\n value = _ref.value,\n maxLength = _ref.maxLength,\n _onKeyDown = _ref.onKeyDown,\n _onMouseDown = _ref.onMouseDown,\n _onChange = _ref.onChange,\n onPaste = _ref.onPaste,\n _onCompositionStart = _ref.onCompositionStart,\n _onCompositionEnd = _ref.onCompositionEnd,\n open = _ref.open,\n attrs = _ref.attrs;\n var inputNode = inputElement || /*#__PURE__*/React.createElement(\"input\", null);\n var _inputNode = inputNode,\n originRef = _inputNode.ref,\n originProps = _inputNode.props;\n var onOriginKeyDown = originProps.onKeyDown,\n onOriginChange = originProps.onChange,\n onOriginMouseDown = originProps.onMouseDown,\n onOriginCompositionStart = originProps.onCompositionStart,\n onOriginCompositionEnd = originProps.onCompositionEnd,\n style = originProps.style;\n warning(!('maxLength' in inputNode.props), \"Passing 'maxLength' to input element directly may not work because input in BaseSelect is controlled.\");\n inputNode = /*#__PURE__*/React.cloneElement(inputNode, _objectSpread(_objectSpread(_objectSpread({\n type: 'search'\n }, originProps), {}, {\n // Override over origin props\n id: id,\n ref: composeRef(ref, originRef),\n disabled: disabled,\n tabIndex: tabIndex,\n autoComplete: autoComplete || 'off',\n autoFocus: autoFocus,\n className: classNames(\"\".concat(prefixCls, \"-selection-search-input\"), (_inputNode2 = inputNode) === null || _inputNode2 === void 0 ? void 0 : (_inputNode2$props = _inputNode2.props) === null || _inputNode2$props === void 0 ? void 0 : _inputNode2$props.className),\n role: 'combobox',\n 'aria-label': 'Search',\n 'aria-expanded': open,\n 'aria-haspopup': 'listbox',\n 'aria-owns': \"\".concat(id, \"_list\"),\n 'aria-autocomplete': 'list',\n 'aria-controls': \"\".concat(id, \"_list\"),\n 'aria-activedescendant': open ? activeDescendantId : undefined\n }, attrs), {}, {\n value: editable ? value : '',\n maxLength: maxLength,\n readOnly: !editable,\n unselectable: !editable ? 'on' : null,\n style: _objectSpread(_objectSpread({}, style), {}, {\n opacity: editable ? null : 0\n }),\n onKeyDown: function onKeyDown(event) {\n _onKeyDown(event);\n if (onOriginKeyDown) {\n onOriginKeyDown(event);\n }\n },\n onMouseDown: function onMouseDown(event) {\n _onMouseDown(event);\n if (onOriginMouseDown) {\n onOriginMouseDown(event);\n }\n },\n onChange: function onChange(event) {\n _onChange(event);\n if (onOriginChange) {\n onOriginChange(event);\n }\n },\n onCompositionStart: function onCompositionStart(event) {\n _onCompositionStart(event);\n if (onOriginCompositionStart) {\n onOriginCompositionStart(event);\n }\n },\n onCompositionEnd: function onCompositionEnd(event) {\n _onCompositionEnd(event);\n if (onOriginCompositionEnd) {\n onOriginCompositionEnd(event);\n }\n },\n onPaste: onPaste\n }));\n return inputNode;\n};\nvar RefInput = /*#__PURE__*/React.forwardRef(Input);\nRefInput.displayName = 'Input';\nexport default RefInput;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nexport function toArray(value) {\n if (Array.isArray(value)) {\n return value;\n }\n return value !== undefined ? [value] : [];\n}\nexport var isClient = typeof window !== 'undefined' && window.document && window.document.documentElement;\n\n/** Is client side and not jsdom */\nexport var isBrowserClient = process.env.NODE_ENV !== 'test' && isClient;\nexport function hasValue(value) {\n return value !== undefined && value !== null;\n}\n\n/** combo mode no value judgment function */\nexport function isComboNoValue(value) {\n return !value && value !== 0;\n}\nfunction isTitleType(title) {\n return ['string', 'number'].includes(_typeof(title));\n}\nexport function getTitle(item) {\n var title = undefined;\n if (item) {\n if (isTitleType(item.title)) {\n title = item.title.toString();\n } else if (isTitleType(item.label)) {\n title = item.label.toString();\n }\n }\n return title;\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useState } from 'react';\nimport classNames from 'classnames';\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nimport Overflow from 'rc-overflow';\nimport TransBtn from \"../TransBtn\";\nimport Input from \"./Input\";\nimport useLayoutEffect from \"../hooks/useLayoutEffect\";\nimport { getTitle } from \"../utils/commonUtil\";\nfunction itemKey(value) {\n var _value$key;\n return (_value$key = value.key) !== null && _value$key !== void 0 ? _value$key : value.value;\n}\nvar onPreventMouseDown = function onPreventMouseDown(event) {\n event.preventDefault();\n event.stopPropagation();\n};\nvar SelectSelector = function SelectSelector(props) {\n var id = props.id,\n prefixCls = props.prefixCls,\n values = props.values,\n open = props.open,\n searchValue = props.searchValue,\n autoClearSearchValue = props.autoClearSearchValue,\n inputRef = props.inputRef,\n placeholder = props.placeholder,\n disabled = props.disabled,\n mode = props.mode,\n showSearch = props.showSearch,\n autoFocus = props.autoFocus,\n autoComplete = props.autoComplete,\n activeDescendantId = props.activeDescendantId,\n tabIndex = props.tabIndex,\n removeIcon = props.removeIcon,\n maxTagCount = props.maxTagCount,\n maxTagTextLength = props.maxTagTextLength,\n _props$maxTagPlacehol = props.maxTagPlaceholder,\n maxTagPlaceholder = _props$maxTagPlacehol === void 0 ? function (omittedValues) {\n return \"+ \".concat(omittedValues.length, \" ...\");\n } : _props$maxTagPlacehol,\n tagRender = props.tagRender,\n onToggleOpen = props.onToggleOpen,\n onRemove = props.onRemove,\n onInputChange = props.onInputChange,\n onInputPaste = props.onInputPaste,\n onInputKeyDown = props.onInputKeyDown,\n onInputMouseDown = props.onInputMouseDown,\n onInputCompositionStart = props.onInputCompositionStart,\n onInputCompositionEnd = props.onInputCompositionEnd;\n var measureRef = React.useRef(null);\n var _useState = useState(0),\n _useState2 = _slicedToArray(_useState, 2),\n inputWidth = _useState2[0],\n setInputWidth = _useState2[1];\n var _useState3 = useState(false),\n _useState4 = _slicedToArray(_useState3, 2),\n focused = _useState4[0],\n setFocused = _useState4[1];\n var selectionPrefixCls = \"\".concat(prefixCls, \"-selection\");\n\n // ===================== Search ======================\n var inputValue = open || mode === \"multiple\" && autoClearSearchValue === false || mode === 'tags' ? searchValue : '';\n var inputEditable = mode === 'tags' || mode === \"multiple\" && autoClearSearchValue === false || showSearch && (open || focused);\n\n // We measure width and set to the input immediately\n useLayoutEffect(function () {\n setInputWidth(measureRef.current.scrollWidth);\n }, [inputValue]);\n\n // ===================== Render ======================\n // >>> Render Selector Node. Includes Item & Rest\n function defaultRenderSelector(item, content, itemDisabled, closable, onClose) {\n return /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(\"\".concat(selectionPrefixCls, \"-item\"), _defineProperty({}, \"\".concat(selectionPrefixCls, \"-item-disabled\"), itemDisabled)),\n title: getTitle(item)\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(selectionPrefixCls, \"-item-content\")\n }, content), closable && /*#__PURE__*/React.createElement(TransBtn, {\n className: \"\".concat(selectionPrefixCls, \"-item-remove\"),\n onMouseDown: onPreventMouseDown,\n onClick: onClose,\n customizeIcon: removeIcon\n }, \"\\xD7\"));\n }\n function customizeRenderSelector(value, content, itemDisabled, closable, onClose) {\n var onMouseDown = function onMouseDown(e) {\n onPreventMouseDown(e);\n onToggleOpen(!open);\n };\n return /*#__PURE__*/React.createElement(\"span\", {\n onMouseDown: onMouseDown\n }, tagRender({\n label: content,\n value: value,\n disabled: itemDisabled,\n closable: closable,\n onClose: onClose\n }));\n }\n function renderItem(valueItem) {\n var itemDisabled = valueItem.disabled,\n label = valueItem.label,\n value = valueItem.value;\n var closable = !disabled && !itemDisabled;\n var displayLabel = label;\n if (typeof maxTagTextLength === 'number') {\n if (typeof label === 'string' || typeof label === 'number') {\n var strLabel = String(displayLabel);\n if (strLabel.length > maxTagTextLength) {\n displayLabel = \"\".concat(strLabel.slice(0, maxTagTextLength), \"...\");\n }\n }\n }\n var onClose = function onClose(event) {\n if (event) event.stopPropagation();\n onRemove(valueItem);\n };\n return typeof tagRender === 'function' ? customizeRenderSelector(value, displayLabel, itemDisabled, closable, onClose) : defaultRenderSelector(valueItem, displayLabel, itemDisabled, closable, onClose);\n }\n function renderRest(omittedValues) {\n var content = typeof maxTagPlaceholder === 'function' ? maxTagPlaceholder(omittedValues) : maxTagPlaceholder;\n return defaultRenderSelector({\n title: content\n }, content, false);\n }\n\n // >>> Input Node\n var inputNode = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(selectionPrefixCls, \"-search\"),\n style: {\n width: inputWidth\n },\n onFocus: function onFocus() {\n setFocused(true);\n },\n onBlur: function onBlur() {\n setFocused(false);\n }\n }, /*#__PURE__*/React.createElement(Input, {\n ref: inputRef,\n open: open,\n prefixCls: prefixCls,\n id: id,\n inputElement: null,\n disabled: disabled,\n autoFocus: autoFocus,\n autoComplete: autoComplete,\n editable: inputEditable,\n activeDescendantId: activeDescendantId,\n value: inputValue,\n onKeyDown: onInputKeyDown,\n onMouseDown: onInputMouseDown,\n onChange: onInputChange,\n onPaste: onInputPaste,\n onCompositionStart: onInputCompositionStart,\n onCompositionEnd: onInputCompositionEnd,\n tabIndex: tabIndex,\n attrs: pickAttrs(props, true)\n }), /*#__PURE__*/React.createElement(\"span\", {\n ref: measureRef,\n className: \"\".concat(selectionPrefixCls, \"-search-mirror\"),\n \"aria-hidden\": true\n }, inputValue, \"\\xA0\"));\n\n // >>> Selections\n var selectionNode = /*#__PURE__*/React.createElement(Overflow, {\n prefixCls: \"\".concat(selectionPrefixCls, \"-overflow\"),\n data: values,\n renderItem: renderItem,\n renderRest: renderRest,\n suffix: inputNode,\n itemKey: itemKey,\n maxCount: maxTagCount\n });\n return /*#__PURE__*/React.createElement(React.Fragment, null, selectionNode, !values.length && !inputValue && /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(selectionPrefixCls, \"-placeholder\")\n }, placeholder));\n};\nexport default SelectSelector;","/* eslint-disable react-hooks/rules-of-hooks */\nimport * as React from 'react';\nimport { isBrowserClient } from \"../utils/commonUtil\";\n\n/**\n * Wrap `React.useLayoutEffect` which will not throw warning message in test env\n */\nexport default function useLayoutEffect(effect, deps) {\n // Never happen in test env\n if (isBrowserClient) {\n /* istanbul ignore next */\n React.useLayoutEffect(effect, deps);\n } else {\n React.useEffect(effect, deps);\n }\n}\n/* eslint-enable */","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nimport Input from \"./Input\";\nimport { getTitle } from \"../utils/commonUtil\";\nvar SingleSelector = function SingleSelector(props) {\n var inputElement = props.inputElement,\n prefixCls = props.prefixCls,\n id = props.id,\n inputRef = props.inputRef,\n disabled = props.disabled,\n autoFocus = props.autoFocus,\n autoComplete = props.autoComplete,\n activeDescendantId = props.activeDescendantId,\n mode = props.mode,\n open = props.open,\n values = props.values,\n placeholder = props.placeholder,\n tabIndex = props.tabIndex,\n showSearch = props.showSearch,\n searchValue = props.searchValue,\n activeValue = props.activeValue,\n maxLength = props.maxLength,\n onInputKeyDown = props.onInputKeyDown,\n onInputMouseDown = props.onInputMouseDown,\n onInputChange = props.onInputChange,\n onInputPaste = props.onInputPaste,\n onInputCompositionStart = props.onInputCompositionStart,\n onInputCompositionEnd = props.onInputCompositionEnd,\n title = props.title;\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n inputChanged = _React$useState2[0],\n setInputChanged = _React$useState2[1];\n var combobox = mode === 'combobox';\n var inputEditable = combobox || showSearch;\n var item = values[0];\n var inputValue = searchValue || '';\n if (combobox && activeValue && !inputChanged) {\n inputValue = activeValue;\n }\n React.useEffect(function () {\n if (combobox) {\n setInputChanged(false);\n }\n }, [combobox, activeValue]);\n\n // Not show text when closed expect combobox mode\n var hasTextInput = mode !== 'combobox' && !open && !showSearch ? false : !!inputValue;\n\n // Get title of selection item\n var selectionTitle = title === undefined ? getTitle(item) : title;\n var renderPlaceholder = function renderPlaceholder() {\n if (item) {\n return null;\n }\n var hiddenStyle = hasTextInput ? {\n visibility: 'hidden'\n } : undefined;\n return /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-selection-placeholder\"),\n style: hiddenStyle\n }, placeholder);\n };\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-selection-search\")\n }, /*#__PURE__*/React.createElement(Input, {\n ref: inputRef,\n prefixCls: prefixCls,\n id: id,\n open: open,\n inputElement: inputElement,\n disabled: disabled,\n autoFocus: autoFocus,\n autoComplete: autoComplete,\n editable: inputEditable,\n activeDescendantId: activeDescendantId,\n value: inputValue,\n onKeyDown: onInputKeyDown,\n onMouseDown: onInputMouseDown,\n onChange: function onChange(e) {\n setInputChanged(true);\n onInputChange(e);\n },\n onPaste: onInputPaste,\n onCompositionStart: onInputCompositionStart,\n onCompositionEnd: onInputCompositionEnd,\n tabIndex: tabIndex,\n attrs: pickAttrs(props, true),\n maxLength: combobox ? maxLength : undefined\n })), !combobox && item ? /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-selection-item\"),\n title: selectionTitle\n // 当 Select 已经选中选项时,还需 selection 隐藏但留在原地占位\n // https://github.com/ant-design/ant-design/issues/27688\n // https://github.com/ant-design/ant-design/issues/41530\n ,\n\n style: hasTextInput ? {\n visibility: 'hidden'\n } : undefined\n }, item.label) : null, renderPlaceholder());\n};\nexport default SingleSelector;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\n/**\n * Cursor rule:\n * 1. Only `showSearch` enabled\n * 2. Only `open` is `true`\n * 3. When typing, set `open` to `true` which hit rule of 2\n *\n * Accessibility:\n * - https://www.w3.org/TR/wai-aria-practices/examples/combobox/aria1.1pattern/listbox-combo.html\n */\n\nimport * as React from 'react';\nimport { useRef } from 'react';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport MultipleSelector from \"./MultipleSelector\";\nimport SingleSelector from \"./SingleSelector\";\nimport useLock from \"../hooks/useLock\";\nimport { isValidateOpenKey } from \"../utils/keyUtil\";\nvar Selector = function Selector(props, ref) {\n var inputRef = useRef(null);\n var compositionStatusRef = useRef(false);\n var prefixCls = props.prefixCls,\n open = props.open,\n mode = props.mode,\n showSearch = props.showSearch,\n tokenWithEnter = props.tokenWithEnter,\n autoClearSearchValue = props.autoClearSearchValue,\n onSearch = props.onSearch,\n onSearchSubmit = props.onSearchSubmit,\n onToggleOpen = props.onToggleOpen,\n onInputKeyDown = props.onInputKeyDown,\n domRef = props.domRef;\n\n // ======================= Ref =======================\n React.useImperativeHandle(ref, function () {\n return {\n focus: function focus() {\n inputRef.current.focus();\n },\n blur: function blur() {\n inputRef.current.blur();\n }\n };\n });\n\n // ====================== Input ======================\n var _useLock = useLock(0),\n _useLock2 = _slicedToArray(_useLock, 2),\n getInputMouseDown = _useLock2[0],\n setInputMouseDown = _useLock2[1];\n var onInternalInputKeyDown = function onInternalInputKeyDown(event) {\n var which = event.which;\n if (which === KeyCode.UP || which === KeyCode.DOWN) {\n event.preventDefault();\n }\n if (onInputKeyDown) {\n onInputKeyDown(event);\n }\n if (which === KeyCode.ENTER && mode === 'tags' && !compositionStatusRef.current && !open) {\n // When menu isn't open, OptionList won't trigger a value change\n // So when enter is pressed, the tag's input value should be emitted here to let selector know\n onSearchSubmit === null || onSearchSubmit === void 0 ? void 0 : onSearchSubmit(event.target.value);\n }\n if (isValidateOpenKey(which)) {\n onToggleOpen(true);\n }\n };\n\n /**\n * We can not use `findDOMNode` sine it will get warning,\n * have to use timer to check if is input element.\n */\n var onInternalInputMouseDown = function onInternalInputMouseDown() {\n setInputMouseDown(true);\n };\n\n // When paste come, ignore next onChange\n var pastedTextRef = useRef(null);\n var triggerOnSearch = function triggerOnSearch(value) {\n if (onSearch(value, true, compositionStatusRef.current) !== false) {\n onToggleOpen(true);\n }\n };\n var onInputCompositionStart = function onInputCompositionStart() {\n compositionStatusRef.current = true;\n };\n var onInputCompositionEnd = function onInputCompositionEnd(e) {\n compositionStatusRef.current = false;\n\n // Trigger search again to support `tokenSeparators` with typewriting\n if (mode !== 'combobox') {\n triggerOnSearch(e.target.value);\n }\n };\n var onInputChange = function onInputChange(event) {\n var value = event.target.value;\n\n // Pasted text should replace back to origin content\n if (tokenWithEnter && pastedTextRef.current && /[\\r\\n]/.test(pastedTextRef.current)) {\n // CRLF will be treated as a single space for input element\n var replacedText = pastedTextRef.current.replace(/[\\r\\n]+$/, '').replace(/\\r\\n/g, ' ').replace(/[\\r\\n]/g, ' ');\n value = value.replace(replacedText, pastedTextRef.current);\n }\n pastedTextRef.current = null;\n triggerOnSearch(value);\n };\n var onInputPaste = function onInputPaste(e) {\n var clipboardData = e.clipboardData;\n var value = clipboardData.getData('text');\n pastedTextRef.current = value;\n };\n var onClick = function onClick(_ref) {\n var target = _ref.target;\n if (target !== inputRef.current) {\n // Should focus input if click the selector\n var isIE = document.body.style.msTouchAction !== undefined;\n if (isIE) {\n setTimeout(function () {\n inputRef.current.focus();\n });\n } else {\n inputRef.current.focus();\n }\n }\n };\n var onMouseDown = function onMouseDown(event) {\n var inputMouseDown = getInputMouseDown();\n\n // when mode is combobox, don't prevent default behavior\n // https://github.com/ant-design/ant-design/issues/37320\n if (event.target !== inputRef.current && !inputMouseDown && mode !== 'combobox') {\n event.preventDefault();\n }\n if (mode !== 'combobox' && (!showSearch || !inputMouseDown) || !open) {\n if (open && autoClearSearchValue !== false) {\n onSearch('', true, false);\n }\n onToggleOpen();\n }\n };\n\n // ================= Inner Selector ==================\n var sharedProps = {\n inputRef: inputRef,\n onInputKeyDown: onInternalInputKeyDown,\n onInputMouseDown: onInternalInputMouseDown,\n onInputChange: onInputChange,\n onInputPaste: onInputPaste,\n onInputCompositionStart: onInputCompositionStart,\n onInputCompositionEnd: onInputCompositionEnd\n };\n var selectNode = mode === 'multiple' || mode === 'tags' ? /*#__PURE__*/React.createElement(MultipleSelector, _extends({}, props, sharedProps)) : /*#__PURE__*/React.createElement(SingleSelector, _extends({}, props, sharedProps));\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: domRef,\n className: \"\".concat(prefixCls, \"-selector\"),\n onClick: onClick,\n onMouseDown: onMouseDown\n }, selectNode);\n};\nvar ForwardSelector = /*#__PURE__*/React.forwardRef(Selector);\nForwardSelector.displayName = 'Selector';\nexport default ForwardSelector;","import KeyCode from \"rc-util/es/KeyCode\";\n\n/** keyCode Judgment function */\nexport function isValidateOpenKey(currentKeyCode) {\n return ![\n // System function button\n KeyCode.ESC, KeyCode.SHIFT, KeyCode.BACKSPACE, KeyCode.TAB, KeyCode.WIN_KEY, KeyCode.ALT, KeyCode.META, KeyCode.WIN_KEY_RIGHT, KeyCode.CTRL, KeyCode.SEMICOLON, KeyCode.EQUALS, KeyCode.CAPS_LOCK, KeyCode.CONTEXT_MENU,\n // F1-F12\n KeyCode.F1, KeyCode.F2, KeyCode.F3, KeyCode.F4, KeyCode.F5, KeyCode.F6, KeyCode.F7, KeyCode.F8, KeyCode.F9, KeyCode.F10, KeyCode.F11, KeyCode.F12].includes(currentKeyCode);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"disabled\", \"visible\", \"children\", \"popupElement\", \"containerWidth\", \"animation\", \"transitionName\", \"dropdownStyle\", \"dropdownClassName\", \"direction\", \"placement\", \"builtinPlacements\", \"dropdownMatchSelectWidth\", \"dropdownRender\", \"dropdownAlign\", \"getPopupContainer\", \"empty\", \"getTriggerDOMNode\", \"onPopupVisibleChange\", \"onPopupMouseEnter\"];\nimport Trigger from '@rc-component/trigger';\nimport classNames from 'classnames';\nimport * as React from 'react';\nvar getBuiltInPlacements = function getBuiltInPlacements(dropdownMatchSelectWidth) {\n // Enable horizontal overflow auto-adjustment when a custom dropdown width is provided\n var adjustX = dropdownMatchSelectWidth === true ? 0 : 1;\n return {\n bottomLeft: {\n points: ['tl', 'bl'],\n offset: [0, 4],\n overflow: {\n adjustX: adjustX,\n adjustY: 1\n },\n htmlRegion: 'scroll'\n },\n bottomRight: {\n points: ['tr', 'br'],\n offset: [0, 4],\n overflow: {\n adjustX: adjustX,\n adjustY: 1\n },\n htmlRegion: 'scroll'\n },\n topLeft: {\n points: ['bl', 'tl'],\n offset: [0, -4],\n overflow: {\n adjustX: adjustX,\n adjustY: 1\n },\n htmlRegion: 'scroll'\n },\n topRight: {\n points: ['br', 'tr'],\n offset: [0, -4],\n overflow: {\n adjustX: adjustX,\n adjustY: 1\n },\n htmlRegion: 'scroll'\n }\n };\n};\nvar SelectTrigger = function SelectTrigger(props, ref) {\n var prefixCls = props.prefixCls,\n disabled = props.disabled,\n visible = props.visible,\n children = props.children,\n popupElement = props.popupElement,\n containerWidth = props.containerWidth,\n animation = props.animation,\n transitionName = props.transitionName,\n dropdownStyle = props.dropdownStyle,\n dropdownClassName = props.dropdownClassName,\n _props$direction = props.direction,\n direction = _props$direction === void 0 ? 'ltr' : _props$direction,\n placement = props.placement,\n builtinPlacements = props.builtinPlacements,\n dropdownMatchSelectWidth = props.dropdownMatchSelectWidth,\n dropdownRender = props.dropdownRender,\n dropdownAlign = props.dropdownAlign,\n getPopupContainer = props.getPopupContainer,\n empty = props.empty,\n getTriggerDOMNode = props.getTriggerDOMNode,\n onPopupVisibleChange = props.onPopupVisibleChange,\n onPopupMouseEnter = props.onPopupMouseEnter,\n restProps = _objectWithoutProperties(props, _excluded);\n var dropdownPrefixCls = \"\".concat(prefixCls, \"-dropdown\");\n var popupNode = popupElement;\n if (dropdownRender) {\n popupNode = dropdownRender(popupElement);\n }\n var mergedBuiltinPlacements = React.useMemo(function () {\n return builtinPlacements || getBuiltInPlacements(dropdownMatchSelectWidth);\n }, [builtinPlacements, dropdownMatchSelectWidth]);\n\n // ===================== Motion ======================\n var mergedTransitionName = animation ? \"\".concat(dropdownPrefixCls, \"-\").concat(animation) : transitionName;\n\n // ======================= Ref =======================\n var popupRef = React.useRef(null);\n React.useImperativeHandle(ref, function () {\n return {\n getPopupElement: function getPopupElement() {\n return popupRef.current;\n }\n };\n });\n var popupStyle = _objectSpread({\n minWidth: containerWidth\n }, dropdownStyle);\n if (typeof dropdownMatchSelectWidth === 'number') {\n popupStyle.width = dropdownMatchSelectWidth;\n } else if (dropdownMatchSelectWidth) {\n popupStyle.width = containerWidth;\n }\n return /*#__PURE__*/React.createElement(Trigger, _extends({}, restProps, {\n showAction: onPopupVisibleChange ? ['click'] : [],\n hideAction: onPopupVisibleChange ? ['click'] : [],\n popupPlacement: placement || (direction === 'rtl' ? 'bottomRight' : 'bottomLeft'),\n builtinPlacements: mergedBuiltinPlacements,\n prefixCls: dropdownPrefixCls,\n popupTransitionName: mergedTransitionName,\n popup: /*#__PURE__*/React.createElement(\"div\", {\n ref: popupRef,\n onMouseEnter: onPopupMouseEnter\n }, popupNode),\n popupAlign: dropdownAlign,\n popupVisible: visible,\n getPopupContainer: getPopupContainer,\n popupClassName: classNames(dropdownClassName, _defineProperty({}, \"\".concat(dropdownPrefixCls, \"-empty\"), empty)),\n popupStyle: popupStyle,\n getTriggerDOMNode: getTriggerDOMNode,\n onPopupVisibleChange: onPopupVisibleChange\n }), children);\n};\nvar RefSelectTrigger = /*#__PURE__*/React.forwardRef(SelectTrigger);\nRefSelectTrigger.displayName = 'SelectTrigger';\nexport default RefSelectTrigger;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _toArray from \"@babel/runtime/helpers/esm/toArray\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport warning from \"rc-util/es/warning\";\nfunction getKey(data, index) {\n var key = data.key;\n var value;\n if ('value' in data) {\n value = data.value;\n }\n if (key !== null && key !== undefined) {\n return key;\n }\n if (value !== undefined) {\n return value;\n }\n return \"rc-index-key-\".concat(index);\n}\nexport function fillFieldNames(fieldNames, childrenAsData) {\n var _ref = fieldNames || {},\n label = _ref.label,\n value = _ref.value,\n options = _ref.options,\n groupLabel = _ref.groupLabel;\n var mergedLabel = label || (childrenAsData ? 'children' : 'label');\n return {\n label: mergedLabel,\n value: value || 'value',\n options: options || 'options',\n groupLabel: groupLabel || mergedLabel\n };\n}\n\n/**\n * Flat options into flatten list.\n * We use `optionOnly` here is aim to avoid user use nested option group.\n * Here is simply set `key` to the index if not provided.\n */\nexport function flattenOptions(options) {\n var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n fieldNames = _ref2.fieldNames,\n childrenAsData = _ref2.childrenAsData;\n var flattenList = [];\n var _fillFieldNames = fillFieldNames(fieldNames, false),\n fieldLabel = _fillFieldNames.label,\n fieldValue = _fillFieldNames.value,\n fieldOptions = _fillFieldNames.options,\n groupLabel = _fillFieldNames.groupLabel;\n function dig(list, isGroupOption) {\n list.forEach(function (data) {\n if (isGroupOption || !(fieldOptions in data)) {\n var value = data[fieldValue];\n\n // Option\n flattenList.push({\n key: getKey(data, flattenList.length),\n groupOption: isGroupOption,\n data: data,\n label: data[fieldLabel],\n value: value\n });\n } else {\n var grpLabel = data[groupLabel];\n if (grpLabel === undefined && childrenAsData) {\n grpLabel = data.label;\n }\n\n // Option Group\n flattenList.push({\n key: getKey(data, flattenList.length),\n group: true,\n data: data,\n label: grpLabel\n });\n dig(data[fieldOptions], true);\n }\n });\n }\n dig(options, false);\n return flattenList;\n}\n\n/**\n * Inject `props` into `option` for legacy usage\n */\nexport function injectPropsWithOption(option) {\n var newOption = _objectSpread({}, option);\n if (!('props' in newOption)) {\n Object.defineProperty(newOption, 'props', {\n get: function get() {\n warning(false, 'Return type is option instead of Option instance. Please read value directly instead of reading from `props`.');\n return newOption;\n }\n });\n }\n return newOption;\n}\nexport function getSeparatedContent(text, tokens) {\n if (!tokens || !tokens.length) {\n return null;\n }\n var match = false;\n function separate(str, _ref3) {\n var _ref4 = _toArray(_ref3),\n token = _ref4[0],\n restTokens = _ref4.slice(1);\n if (!token) {\n return [str];\n }\n var list = str.split(token);\n match = match || list.length > 1;\n return list.reduce(function (prevList, unitStr) {\n return [].concat(_toConsumableArray(prevList), _toConsumableArray(separate(unitStr, restTokens)));\n }, []).filter(function (unit) {\n return unit;\n });\n }\n var list = separate(text, tokens);\n return match ? list : null;\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"id\", \"prefixCls\", \"className\", \"showSearch\", \"tagRender\", \"direction\", \"omitDomProps\", \"displayValues\", \"onDisplayValuesChange\", \"emptyOptions\", \"notFoundContent\", \"onClear\", \"mode\", \"disabled\", \"loading\", \"getInputElement\", \"getRawInputElement\", \"open\", \"defaultOpen\", \"onDropdownVisibleChange\", \"activeValue\", \"onActiveValueChange\", \"activeDescendantId\", \"searchValue\", \"autoClearSearchValue\", \"onSearch\", \"onSearchSplit\", \"tokenSeparators\", \"allowClear\", \"suffixIcon\", \"clearIcon\", \"OptionList\", \"animation\", \"transitionName\", \"dropdownStyle\", \"dropdownClassName\", \"dropdownMatchSelectWidth\", \"dropdownRender\", \"dropdownAlign\", \"placement\", \"builtinPlacements\", \"getPopupContainer\", \"showAction\", \"onFocus\", \"onBlur\", \"onKeyUp\", \"onKeyDown\", \"onMouseDown\"];\nimport classNames from 'classnames';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport isMobile from \"rc-util/es/isMobile\";\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport { useComposeRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nimport { BaseSelectContext } from \"./hooks/useBaseProps\";\nimport useDelayReset from \"./hooks/useDelayReset\";\nimport useLock from \"./hooks/useLock\";\nimport useSelectTriggerControl from \"./hooks/useSelectTriggerControl\";\nimport Selector from \"./Selector\";\nimport SelectTrigger from \"./SelectTrigger\";\nimport TransBtn from \"./TransBtn\";\nimport { getSeparatedContent } from \"./utils/valueUtil\";\nimport { useAllowClear } from \"./hooks/useAllowClear\";\nvar DEFAULT_OMIT_PROPS = ['value', 'onChange', 'removeIcon', 'placeholder', 'autoFocus', 'maxTagCount', 'maxTagTextLength', 'maxTagPlaceholder', 'choiceTransitionName', 'onInputKeyDown', 'onPopupScroll', 'tabIndex'];\nexport function isMultiple(mode) {\n return mode === 'tags' || mode === 'multiple';\n}\nvar BaseSelect = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _customizeRawInputEle, _classNames2;\n var id = props.id,\n prefixCls = props.prefixCls,\n className = props.className,\n showSearch = props.showSearch,\n tagRender = props.tagRender,\n direction = props.direction,\n omitDomProps = props.omitDomProps,\n displayValues = props.displayValues,\n onDisplayValuesChange = props.onDisplayValuesChange,\n emptyOptions = props.emptyOptions,\n _props$notFoundConten = props.notFoundContent,\n notFoundContent = _props$notFoundConten === void 0 ? 'Not Found' : _props$notFoundConten,\n onClear = props.onClear,\n mode = props.mode,\n disabled = props.disabled,\n loading = props.loading,\n getInputElement = props.getInputElement,\n getRawInputElement = props.getRawInputElement,\n open = props.open,\n defaultOpen = props.defaultOpen,\n onDropdownVisibleChange = props.onDropdownVisibleChange,\n activeValue = props.activeValue,\n onActiveValueChange = props.onActiveValueChange,\n activeDescendantId = props.activeDescendantId,\n searchValue = props.searchValue,\n autoClearSearchValue = props.autoClearSearchValue,\n onSearch = props.onSearch,\n onSearchSplit = props.onSearchSplit,\n tokenSeparators = props.tokenSeparators,\n allowClear = props.allowClear,\n suffixIcon = props.suffixIcon,\n clearIcon = props.clearIcon,\n OptionList = props.OptionList,\n animation = props.animation,\n transitionName = props.transitionName,\n dropdownStyle = props.dropdownStyle,\n dropdownClassName = props.dropdownClassName,\n dropdownMatchSelectWidth = props.dropdownMatchSelectWidth,\n dropdownRender = props.dropdownRender,\n dropdownAlign = props.dropdownAlign,\n placement = props.placement,\n builtinPlacements = props.builtinPlacements,\n getPopupContainer = props.getPopupContainer,\n _props$showAction = props.showAction,\n showAction = _props$showAction === void 0 ? [] : _props$showAction,\n onFocus = props.onFocus,\n onBlur = props.onBlur,\n onKeyUp = props.onKeyUp,\n onKeyDown = props.onKeyDown,\n onMouseDown = props.onMouseDown,\n restProps = _objectWithoutProperties(props, _excluded);\n\n // ============================== MISC ==============================\n var multiple = isMultiple(mode);\n var mergedShowSearch = (showSearch !== undefined ? showSearch : multiple) || mode === 'combobox';\n var domProps = _objectSpread({}, restProps);\n DEFAULT_OMIT_PROPS.forEach(function (propName) {\n delete domProps[propName];\n });\n omitDomProps === null || omitDomProps === void 0 ? void 0 : omitDomProps.forEach(function (propName) {\n delete domProps[propName];\n });\n\n // ============================= Mobile =============================\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n mobile = _React$useState2[0],\n setMobile = _React$useState2[1];\n React.useEffect(function () {\n // Only update on the client side\n setMobile(isMobile());\n }, []);\n\n // ============================== Refs ==============================\n var containerRef = React.useRef(null);\n var selectorDomRef = React.useRef(null);\n var triggerRef = React.useRef(null);\n var selectorRef = React.useRef(null);\n var listRef = React.useRef(null);\n\n /** Used for component focused management */\n var _useDelayReset = useDelayReset(),\n _useDelayReset2 = _slicedToArray(_useDelayReset, 3),\n mockFocused = _useDelayReset2[0],\n setMockFocused = _useDelayReset2[1],\n cancelSetMockFocused = _useDelayReset2[2];\n\n // =========================== Imperative ===========================\n React.useImperativeHandle(ref, function () {\n var _selectorRef$current, _selectorRef$current2;\n return {\n focus: (_selectorRef$current = selectorRef.current) === null || _selectorRef$current === void 0 ? void 0 : _selectorRef$current.focus,\n blur: (_selectorRef$current2 = selectorRef.current) === null || _selectorRef$current2 === void 0 ? void 0 : _selectorRef$current2.blur,\n scrollTo: function scrollTo(arg) {\n var _listRef$current;\n return (_listRef$current = listRef.current) === null || _listRef$current === void 0 ? void 0 : _listRef$current.scrollTo(arg);\n }\n };\n });\n\n // ========================== Search Value ==========================\n var mergedSearchValue = React.useMemo(function () {\n var _displayValues$;\n if (mode !== 'combobox') {\n return searchValue;\n }\n var val = (_displayValues$ = displayValues[0]) === null || _displayValues$ === void 0 ? void 0 : _displayValues$.value;\n return typeof val === 'string' || typeof val === 'number' ? String(val) : '';\n }, [searchValue, mode, displayValues]);\n\n // ========================== Custom Input ==========================\n // Only works in `combobox`\n var customizeInputElement = mode === 'combobox' && typeof getInputElement === 'function' && getInputElement() || null;\n\n // Used for customize replacement for `rc-cascader`\n var customizeRawInputElement = typeof getRawInputElement === 'function' && getRawInputElement();\n var customizeRawInputRef = useComposeRef(selectorDomRef, customizeRawInputElement === null || customizeRawInputElement === void 0 ? void 0 : (_customizeRawInputEle = customizeRawInputElement.props) === null || _customizeRawInputEle === void 0 ? void 0 : _customizeRawInputEle.ref);\n\n // ============================== Open ==============================\n // SSR not support Portal which means we need delay `open` for the first time render\n var _React$useState3 = React.useState(false),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n rendered = _React$useState4[0],\n setRendered = _React$useState4[1];\n useLayoutEffect(function () {\n setRendered(true);\n }, []);\n var _useMergedState = useMergedState(false, {\n defaultValue: defaultOpen,\n value: open\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n innerOpen = _useMergedState2[0],\n setInnerOpen = _useMergedState2[1];\n var mergedOpen = rendered ? innerOpen : false;\n\n // Not trigger `open` in `combobox` when `notFoundContent` is empty\n var emptyListContent = !notFoundContent && emptyOptions;\n if (disabled || emptyListContent && mergedOpen && mode === 'combobox') {\n mergedOpen = false;\n }\n var triggerOpen = emptyListContent ? false : mergedOpen;\n var onToggleOpen = React.useCallback(function (newOpen) {\n var nextOpen = newOpen !== undefined ? newOpen : !mergedOpen;\n if (!disabled) {\n setInnerOpen(nextOpen);\n if (mergedOpen !== nextOpen) {\n onDropdownVisibleChange === null || onDropdownVisibleChange === void 0 ? void 0 : onDropdownVisibleChange(nextOpen);\n }\n }\n }, [disabled, mergedOpen, setInnerOpen, onDropdownVisibleChange]);\n\n // ============================= Search =============================\n var tokenWithEnter = React.useMemo(function () {\n return (tokenSeparators || []).some(function (tokenSeparator) {\n return ['\\n', '\\r\\n'].includes(tokenSeparator);\n });\n }, [tokenSeparators]);\n var onInternalSearch = function onInternalSearch(searchText, fromTyping, isCompositing) {\n var ret = true;\n var newSearchText = searchText;\n onActiveValueChange === null || onActiveValueChange === void 0 ? void 0 : onActiveValueChange(null);\n\n // Check if match the `tokenSeparators`\n var patchLabels = isCompositing ? null : getSeparatedContent(searchText, tokenSeparators);\n\n // Ignore combobox since it's not split-able\n if (mode !== 'combobox' && patchLabels) {\n newSearchText = '';\n onSearchSplit === null || onSearchSplit === void 0 ? void 0 : onSearchSplit(patchLabels);\n\n // Should close when paste finish\n onToggleOpen(false);\n\n // Tell Selector that break next actions\n ret = false;\n }\n if (onSearch && mergedSearchValue !== newSearchText) {\n onSearch(newSearchText, {\n source: fromTyping ? 'typing' : 'effect'\n });\n }\n return ret;\n };\n\n // Only triggered when menu is closed & mode is tags\n // If menu is open, OptionList will take charge\n // If mode isn't tags, press enter is not meaningful when you can't see any option\n var onInternalSearchSubmit = function onInternalSearchSubmit(searchText) {\n // prevent empty tags from appearing when you click the Enter button\n if (!searchText || !searchText.trim()) {\n return;\n }\n onSearch(searchText, {\n source: 'submit'\n });\n };\n\n // Close will clean up single mode search text\n React.useEffect(function () {\n if (!mergedOpen && !multiple && mode !== 'combobox') {\n onInternalSearch('', false, false);\n }\n }, [mergedOpen]);\n\n // ============================ Disabled ============================\n // Close dropdown & remove focus state when disabled change\n React.useEffect(function () {\n if (innerOpen && disabled) {\n setInnerOpen(false);\n }\n if (disabled) {\n setMockFocused(false);\n }\n }, [disabled]);\n\n // ============================ Keyboard ============================\n /**\n * We record input value here to check if can press to clean up by backspace\n * - null: Key is not down, this is reset by key up\n * - true: Search text is empty when first time backspace down\n * - false: Search text is not empty when first time backspace down\n */\n var _useLock = useLock(),\n _useLock2 = _slicedToArray(_useLock, 2),\n getClearLock = _useLock2[0],\n setClearLock = _useLock2[1];\n\n // KeyDown\n var onInternalKeyDown = function onInternalKeyDown(event) {\n var clearLock = getClearLock();\n var which = event.which;\n if (which === KeyCode.ENTER) {\n // Do not submit form when type in the input\n if (mode !== 'combobox') {\n event.preventDefault();\n }\n\n // We only manage open state here, close logic should handle by list component\n if (!mergedOpen) {\n onToggleOpen(true);\n }\n }\n setClearLock(!!mergedSearchValue);\n\n // Remove value by `backspace`\n if (which === KeyCode.BACKSPACE && !clearLock && multiple && !mergedSearchValue && displayValues.length) {\n var cloneDisplayValues = _toConsumableArray(displayValues);\n var removedDisplayValue = null;\n for (var i = cloneDisplayValues.length - 1; i >= 0; i -= 1) {\n var current = cloneDisplayValues[i];\n if (!current.disabled) {\n cloneDisplayValues.splice(i, 1);\n removedDisplayValue = current;\n break;\n }\n }\n if (removedDisplayValue) {\n onDisplayValuesChange(cloneDisplayValues, {\n type: 'remove',\n values: [removedDisplayValue]\n });\n }\n }\n for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n rest[_key - 1] = arguments[_key];\n }\n if (mergedOpen && listRef.current) {\n var _listRef$current2;\n (_listRef$current2 = listRef.current).onKeyDown.apply(_listRef$current2, [event].concat(rest));\n }\n onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown.apply(void 0, [event].concat(rest));\n };\n\n // KeyUp\n var onInternalKeyUp = function onInternalKeyUp(event) {\n for (var _len2 = arguments.length, rest = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n rest[_key2 - 1] = arguments[_key2];\n }\n if (mergedOpen && listRef.current) {\n var _listRef$current3;\n (_listRef$current3 = listRef.current).onKeyUp.apply(_listRef$current3, [event].concat(rest));\n }\n onKeyUp === null || onKeyUp === void 0 ? void 0 : onKeyUp.apply(void 0, [event].concat(rest));\n };\n\n // ============================ Selector ============================\n var onSelectorRemove = function onSelectorRemove(val) {\n var newValues = displayValues.filter(function (i) {\n return i !== val;\n });\n onDisplayValuesChange(newValues, {\n type: 'remove',\n values: [val]\n });\n };\n\n // ========================== Focus / Blur ==========================\n /** Record real focus status */\n var focusRef = React.useRef(false);\n var onContainerFocus = function onContainerFocus() {\n setMockFocused(true);\n if (!disabled) {\n if (onFocus && !focusRef.current) {\n onFocus.apply(void 0, arguments);\n }\n\n // `showAction` should handle `focus` if set\n if (showAction.includes('focus')) {\n onToggleOpen(true);\n }\n }\n focusRef.current = true;\n };\n var onContainerBlur = function onContainerBlur() {\n setMockFocused(false, function () {\n focusRef.current = false;\n onToggleOpen(false);\n });\n if (disabled) {\n return;\n }\n if (mergedSearchValue) {\n // `tags` mode should move `searchValue` into values\n if (mode === 'tags') {\n onSearch(mergedSearchValue, {\n source: 'submit'\n });\n } else if (mode === 'multiple') {\n // `multiple` mode only clean the search value but not trigger event\n onSearch('', {\n source: 'blur'\n });\n }\n }\n if (onBlur) {\n onBlur.apply(void 0, arguments);\n }\n };\n\n // Give focus back of Select\n var activeTimeoutIds = [];\n React.useEffect(function () {\n return function () {\n activeTimeoutIds.forEach(function (timeoutId) {\n return clearTimeout(timeoutId);\n });\n activeTimeoutIds.splice(0, activeTimeoutIds.length);\n };\n }, []);\n var onInternalMouseDown = function onInternalMouseDown(event) {\n var _triggerRef$current;\n var target = event.target;\n var popupElement = (_triggerRef$current = triggerRef.current) === null || _triggerRef$current === void 0 ? void 0 : _triggerRef$current.getPopupElement();\n\n // We should give focus back to selector if clicked item is not focusable\n if (popupElement && popupElement.contains(target)) {\n var timeoutId = setTimeout(function () {\n var index = activeTimeoutIds.indexOf(timeoutId);\n if (index !== -1) {\n activeTimeoutIds.splice(index, 1);\n }\n cancelSetMockFocused();\n if (!mobile && !popupElement.contains(document.activeElement)) {\n var _selectorRef$current3;\n (_selectorRef$current3 = selectorRef.current) === null || _selectorRef$current3 === void 0 ? void 0 : _selectorRef$current3.focus();\n }\n });\n activeTimeoutIds.push(timeoutId);\n }\n for (var _len3 = arguments.length, restArgs = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n restArgs[_key3 - 1] = arguments[_key3];\n }\n onMouseDown === null || onMouseDown === void 0 ? void 0 : onMouseDown.apply(void 0, [event].concat(restArgs));\n };\n\n // ============================ Dropdown ============================\n var _React$useState5 = React.useState(null),\n _React$useState6 = _slicedToArray(_React$useState5, 2),\n containerWidth = _React$useState6[0],\n setContainerWidth = _React$useState6[1];\n var _React$useState7 = React.useState({}),\n _React$useState8 = _slicedToArray(_React$useState7, 2),\n forceUpdate = _React$useState8[1];\n // We need force update here since popup dom is render async\n function onPopupMouseEnter() {\n forceUpdate({});\n }\n useLayoutEffect(function () {\n if (triggerOpen) {\n var _containerRef$current;\n // Guaranteed width accuracy \n var newWidth = Math.ceil((_containerRef$current = containerRef.current) === null || _containerRef$current === void 0 ? void 0 : _containerRef$current.getBoundingClientRect().width);\n if (containerWidth !== newWidth && !Number.isNaN(newWidth)) {\n setContainerWidth(newWidth);\n }\n }\n }, [triggerOpen]);\n\n // Used for raw custom input trigger\n var onTriggerVisibleChange;\n if (customizeRawInputElement) {\n onTriggerVisibleChange = function onTriggerVisibleChange(newOpen) {\n onToggleOpen(newOpen);\n };\n }\n\n // Close when click on non-select element\n useSelectTriggerControl(function () {\n var _triggerRef$current2;\n return [containerRef.current, (_triggerRef$current2 = triggerRef.current) === null || _triggerRef$current2 === void 0 ? void 0 : _triggerRef$current2.getPopupElement()];\n }, triggerOpen, onToggleOpen, !!customizeRawInputElement);\n\n // ============================ Context =============================\n var baseSelectContext = React.useMemo(function () {\n return _objectSpread(_objectSpread({}, props), {}, {\n notFoundContent: notFoundContent,\n open: mergedOpen,\n triggerOpen: triggerOpen,\n id: id,\n showSearch: mergedShowSearch,\n multiple: multiple,\n toggleOpen: onToggleOpen\n });\n }, [props, notFoundContent, triggerOpen, mergedOpen, id, mergedShowSearch, multiple, onToggleOpen]);\n\n // ==================================================================\n // == Render ==\n // ==================================================================\n\n // ============================= Arrow ==============================\n var showSuffixIcon = !!suffixIcon || loading;\n var arrowNode;\n if (showSuffixIcon) {\n arrowNode = /*#__PURE__*/React.createElement(TransBtn, {\n className: classNames(\"\".concat(prefixCls, \"-arrow\"), _defineProperty({}, \"\".concat(prefixCls, \"-arrow-loading\"), loading)),\n customizeIcon: suffixIcon,\n customizeIconProps: {\n loading: loading,\n searchValue: mergedSearchValue,\n open: mergedOpen,\n focused: mockFocused,\n showSearch: mergedShowSearch\n }\n });\n }\n\n // ============================= Clear ==============================\n var onClearMouseDown = function onClearMouseDown() {\n var _selectorRef$current4;\n onClear === null || onClear === void 0 ? void 0 : onClear();\n (_selectorRef$current4 = selectorRef.current) === null || _selectorRef$current4 === void 0 ? void 0 : _selectorRef$current4.focus();\n onDisplayValuesChange([], {\n type: 'clear',\n values: displayValues\n });\n onInternalSearch('', false, false);\n };\n var _useAllowClear = useAllowClear(prefixCls, onClearMouseDown, displayValues, allowClear, clearIcon, disabled, mergedSearchValue, mode),\n mergedAllowClear = _useAllowClear.allowClear,\n clearNode = _useAllowClear.clearIcon;\n\n // =========================== OptionList ===========================\n var optionList = /*#__PURE__*/React.createElement(OptionList, {\n ref: listRef\n });\n\n // ============================= Select =============================\n var mergedClassName = classNames(prefixCls, className, (_classNames2 = {}, _defineProperty(_classNames2, \"\".concat(prefixCls, \"-focused\"), mockFocused), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-multiple\"), multiple), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-single\"), !multiple), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-allow-clear\"), allowClear), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-show-arrow\"), showSuffixIcon), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-disabled\"), disabled), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-loading\"), loading), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-open\"), mergedOpen), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-customize-input\"), customizeInputElement), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-show-search\"), mergedShowSearch), _classNames2));\n\n // >>> Selector\n var selectorNode = /*#__PURE__*/React.createElement(SelectTrigger, {\n ref: triggerRef,\n disabled: disabled,\n prefixCls: prefixCls,\n visible: triggerOpen,\n popupElement: optionList,\n containerWidth: containerWidth,\n animation: animation,\n transitionName: transitionName,\n dropdownStyle: dropdownStyle,\n dropdownClassName: dropdownClassName,\n direction: direction,\n dropdownMatchSelectWidth: dropdownMatchSelectWidth,\n dropdownRender: dropdownRender,\n dropdownAlign: dropdownAlign,\n placement: placement,\n builtinPlacements: builtinPlacements,\n getPopupContainer: getPopupContainer,\n empty: emptyOptions,\n getTriggerDOMNode: function getTriggerDOMNode() {\n return selectorDomRef.current;\n },\n onPopupVisibleChange: onTriggerVisibleChange,\n onPopupMouseEnter: onPopupMouseEnter\n }, customizeRawInputElement ? /*#__PURE__*/React.cloneElement(customizeRawInputElement, {\n ref: customizeRawInputRef\n }) : /*#__PURE__*/React.createElement(Selector, _extends({}, props, {\n domRef: selectorDomRef,\n prefixCls: prefixCls,\n inputElement: customizeInputElement,\n ref: selectorRef,\n id: id,\n showSearch: mergedShowSearch,\n autoClearSearchValue: autoClearSearchValue,\n mode: mode,\n activeDescendantId: activeDescendantId,\n tagRender: tagRender,\n values: displayValues,\n open: mergedOpen,\n onToggleOpen: onToggleOpen,\n activeValue: activeValue,\n searchValue: mergedSearchValue,\n onSearch: onInternalSearch,\n onSearchSubmit: onInternalSearchSubmit,\n onRemove: onSelectorRemove,\n tokenWithEnter: tokenWithEnter\n })));\n\n // >>> Render\n var renderNode;\n\n // Render raw\n if (customizeRawInputElement) {\n renderNode = selectorNode;\n } else {\n renderNode = /*#__PURE__*/React.createElement(\"div\", _extends({\n className: mergedClassName\n }, domProps, {\n ref: containerRef,\n onMouseDown: onInternalMouseDown,\n onKeyDown: onInternalKeyDown,\n onKeyUp: onInternalKeyUp,\n onFocus: onContainerFocus,\n onBlur: onContainerBlur\n }), mockFocused && !mergedOpen && /*#__PURE__*/React.createElement(\"span\", {\n style: {\n width: 0,\n height: 0,\n position: 'absolute',\n overflow: 'hidden',\n opacity: 0\n },\n \"aria-live\": \"polite\"\n }, \"\".concat(displayValues.map(function (_ref) {\n var label = _ref.label,\n value = _ref.value;\n return ['number', 'string'].includes(_typeof(label)) ? label : value;\n }).join(', '))), selectorNode, arrowNode, mergedAllowClear && clearNode);\n }\n return /*#__PURE__*/React.createElement(BaseSelectContext.Provider, {\n value: baseSelectContext\n }, renderNode);\n});\n\n// Set display name for dev\nif (process.env.NODE_ENV !== 'production') {\n BaseSelect.displayName = 'BaseSelect';\n}\nexport default BaseSelect;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\n\n/**\n * Similar with `useLock`, but this hook will always execute last value.\n * When set to `true`, it will keep `true` for a short time even if `false` is set.\n */\nexport default function useDelayReset() {\n var timeout = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 10;\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n bool = _React$useState2[0],\n setBool = _React$useState2[1];\n var delayRef = React.useRef(null);\n var cancelLatest = function cancelLatest() {\n window.clearTimeout(delayRef.current);\n };\n React.useEffect(function () {\n return cancelLatest;\n }, []);\n var delaySetBool = function delaySetBool(value, callback) {\n cancelLatest();\n delayRef.current = window.setTimeout(function () {\n setBool(value);\n if (callback) {\n callback();\n }\n }, timeout);\n };\n return [bool, delaySetBool, cancelLatest];\n}","import * as React from 'react';\nexport default function useSelectTriggerControl(elements, open, triggerOpen, customizedTrigger) {\n var propsRef = React.useRef(null);\n propsRef.current = {\n open: open,\n triggerOpen: triggerOpen,\n customizedTrigger: customizedTrigger\n };\n React.useEffect(function () {\n function onGlobalMouseDown(event) {\n var _propsRef$current;\n // If trigger is customized, Trigger will take control of popupVisible\n if ((_propsRef$current = propsRef.current) !== null && _propsRef$current !== void 0 && _propsRef$current.customizedTrigger) {\n return;\n }\n var target = event.target;\n if (target.shadowRoot && event.composed) {\n target = event.composedPath()[0] || target;\n }\n if (propsRef.current.open && elements().filter(function (element) {\n return element;\n }).every(function (element) {\n return !element.contains(target) && element !== target;\n })) {\n // Should trigger close\n propsRef.current.triggerOpen(false);\n }\n }\n window.addEventListener('mousedown', onGlobalMouseDown);\n return function () {\n return window.removeEventListener('mousedown', onGlobalMouseDown);\n };\n }, []);\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport TransBtn from \"../TransBtn\";\nimport React from 'react';\nexport function useAllowClear(prefixCls, onClearMouseDown, displayValues, allowClear, clearIcon) {\n var disabled = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;\n var mergedSearchValue = arguments.length > 6 ? arguments[6] : undefined;\n var mode = arguments.length > 7 ? arguments[7] : undefined;\n var mergedClearIcon = React.useMemo(function () {\n if (_typeof(allowClear) === \"object\") {\n return allowClear.clearIcon;\n }\n if (!!clearIcon) return clearIcon;\n }, [allowClear, clearIcon]);\n var mergedAllowClear = React.useMemo(function () {\n if (!disabled && !!allowClear && (displayValues.length || mergedSearchValue) && !(mode === 'combobox' && mergedSearchValue === '')) {\n return true;\n }\n return false;\n }, [allowClear, disabled, displayValues.length, mergedSearchValue, mode]);\n return {\n allowClear: mergedAllowClear,\n clearIcon: /*#__PURE__*/React.createElement(TransBtn, {\n className: \"\".concat(prefixCls, \"-clear\"),\n onMouseDown: onClearMouseDown,\n customizeIcon: mergedClearIcon\n }, \"\\xD7\")\n };\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport { toArray } from \"../utils/commonUtil\";\nimport { injectPropsWithOption } from \"../utils/valueUtil\";\nfunction includes(test, search) {\n return toArray(test).join('').toUpperCase().includes(search);\n}\nexport default (function (options, fieldNames, searchValue, filterOption, optionFilterProp) {\n return React.useMemo(function () {\n if (!searchValue || filterOption === false) {\n return options;\n }\n var fieldOptions = fieldNames.options,\n fieldLabel = fieldNames.label,\n fieldValue = fieldNames.value;\n var filteredOptions = [];\n var customizeFilter = typeof filterOption === 'function';\n var upperSearch = searchValue.toUpperCase();\n var filterFunc = customizeFilter ? filterOption : function (_, option) {\n // Use provided `optionFilterProp`\n if (optionFilterProp) {\n return includes(option[optionFilterProp], upperSearch);\n }\n\n // Auto select `label` or `value` by option type\n if (option[fieldOptions]) {\n // hack `fieldLabel` since `OptionGroup` children is not `label`\n return includes(option[fieldLabel !== 'children' ? fieldLabel : 'label'], upperSearch);\n }\n return includes(option[fieldValue], upperSearch);\n };\n var wrapOption = customizeFilter ? function (opt) {\n return injectPropsWithOption(opt);\n } : function (opt) {\n return opt;\n };\n options.forEach(function (item) {\n // Group should check child options\n if (item[fieldOptions]) {\n // Check group first\n var matchGroup = filterFunc(searchValue, wrapOption(item));\n if (matchGroup) {\n filteredOptions.push(item);\n } else {\n // Check option\n var subOptions = item[fieldOptions].filter(function (subItem) {\n return filterFunc(searchValue, wrapOption(subItem));\n });\n if (subOptions.length) {\n filteredOptions.push(_objectSpread(_objectSpread({}, item), {}, _defineProperty({}, fieldOptions, subOptions)));\n }\n }\n return;\n }\n if (filterFunc(searchValue, wrapOption(item))) {\n filteredOptions.push(item);\n }\n });\n return filteredOptions;\n }, [options, filterOption, optionFilterProp, searchValue, fieldNames]);\n});","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport canUseDom from \"rc-util/es/Dom/canUseDom\";\nvar uuid = 0;\n\n/** Is client side and not jsdom */\nexport var isBrowserClient = process.env.NODE_ENV !== 'test' && canUseDom();\n\n/** Get unique id for accessibility usage */\nexport function getUUID() {\n var retId;\n\n // Test never reach\n /* istanbul ignore if */\n if (isBrowserClient) {\n retId = uuid;\n uuid += 1;\n } else {\n retId = 'TEST_OR_SSR';\n }\n return retId;\n}\nexport default function useId(id) {\n // Inner id for accessibility usage. Only work in client side\n var _React$useState = React.useState(),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n innerId = _React$useState2[0],\n setInnerId = _React$useState2[1];\n React.useEffect(function () {\n setInnerId(\"rc_select_\".concat(getUUID()));\n }, []);\n return id || innerId;\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"children\", \"value\"],\n _excluded2 = [\"children\"];\nimport * as React from 'react';\nimport toArray from \"rc-util/es/Children/toArray\";\nfunction convertNodeToOption(node) {\n var _ref = node,\n key = _ref.key,\n _ref$props = _ref.props,\n children = _ref$props.children,\n value = _ref$props.value,\n restProps = _objectWithoutProperties(_ref$props, _excluded);\n return _objectSpread({\n key: key,\n value: value !== undefined ? value : key,\n children: children\n }, restProps);\n}\nexport function convertChildrenToData(nodes) {\n var optionOnly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n return toArray(nodes).map(function (node, index) {\n if (! /*#__PURE__*/React.isValidElement(node) || !node.type) {\n return null;\n }\n var _ref2 = node,\n isSelectOptGroup = _ref2.type.isSelectOptGroup,\n key = _ref2.key,\n _ref2$props = _ref2.props,\n children = _ref2$props.children,\n restProps = _objectWithoutProperties(_ref2$props, _excluded2);\n if (optionOnly || !isSelectOptGroup) {\n return convertNodeToOption(node);\n }\n return _objectSpread(_objectSpread({\n key: \"__RC_SELECT_GRP__\".concat(key === null ? index : key, \"__\"),\n label: key\n }, restProps), {}, {\n options: convertChildrenToData(children)\n });\n }).filter(function (data) {\n return data;\n });\n}","import * as React from 'react';\n\n/**\n * Same as `React.useCallback` but always return a memoized function\n * but redirect to real function.\n */\nexport default function useRefFunc(callback) {\n var funcRef = React.useRef();\n funcRef.current = callback;\n var cacheFn = React.useCallback(function () {\n return funcRef.current.apply(funcRef, arguments);\n }, []);\n return cacheFn;\n}","/* istanbul ignore file */\n\n/** This is a placeholder, not real render in dom */\nvar OptGroup = function OptGroup() {\n return null;\n};\nOptGroup.isSelectOptGroup = true;\nexport default OptGroup;","/* istanbul ignore file */\n\n/** This is a placeholder, not real render in dom */\nvar Option = function Option() {\n return null;\n};\nOption.isSelectOption = true;\nexport default Option;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport ResizeObserver from 'rc-resize-observer';\nimport classNames from 'classnames';\n/**\n * Fill component to provided the scroll content real height.\n */\nvar Filler = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var height = _ref.height,\n offset = _ref.offset,\n children = _ref.children,\n prefixCls = _ref.prefixCls,\n onInnerResize = _ref.onInnerResize,\n innerProps = _ref.innerProps;\n var outerStyle = {};\n var innerStyle = {\n display: 'flex',\n flexDirection: 'column'\n };\n if (offset !== undefined) {\n outerStyle = {\n height: height,\n position: 'relative',\n overflow: 'hidden'\n };\n innerStyle = _objectSpread(_objectSpread({}, innerStyle), {}, {\n transform: \"translateY(\".concat(offset, \"px)\"),\n position: 'absolute',\n left: 0,\n right: 0,\n top: 0\n });\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n style: outerStyle\n }, /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: function onResize(_ref2) {\n var offsetHeight = _ref2.offsetHeight;\n if (offsetHeight && onInnerResize) {\n onInnerResize();\n }\n }\n }, /*#__PURE__*/React.createElement(\"div\", _extends({\n style: innerStyle,\n className: classNames(_defineProperty({}, \"\".concat(prefixCls, \"-holder-inner\"), prefixCls)),\n ref: ref\n }, innerProps), children)));\n});\nFiller.displayName = 'Filler';\nexport default Filler;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport raf from \"rc-util/es/raf\";\nvar MIN_SIZE = 20;\nfunction getPageY(e) {\n return 'touches' in e ? e.touches[0].pageY : e.pageY;\n}\nvar ScrollBar = /*#__PURE__*/function (_React$Component) {\n _inherits(ScrollBar, _React$Component);\n var _super = _createSuper(ScrollBar);\n function ScrollBar() {\n var _this;\n _classCallCheck(this, ScrollBar);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _this.moveRaf = null;\n _this.scrollbarRef = /*#__PURE__*/React.createRef();\n _this.thumbRef = /*#__PURE__*/React.createRef();\n _this.visibleTimeout = null;\n _this.state = {\n dragging: false,\n pageY: null,\n startTop: null,\n visible: false\n };\n _this.delayHidden = function () {\n clearTimeout(_this.visibleTimeout);\n _this.setState({\n visible: true\n });\n _this.visibleTimeout = setTimeout(function () {\n _this.setState({\n visible: false\n });\n }, 2000);\n };\n _this.onScrollbarTouchStart = function (e) {\n e.preventDefault();\n };\n _this.onContainerMouseDown = function (e) {\n e.stopPropagation();\n e.preventDefault();\n };\n // ======================= Clean =======================\n _this.patchEvents = function () {\n window.addEventListener('mousemove', _this.onMouseMove);\n window.addEventListener('mouseup', _this.onMouseUp);\n _this.thumbRef.current.addEventListener('touchmove', _this.onMouseMove);\n _this.thumbRef.current.addEventListener('touchend', _this.onMouseUp);\n };\n _this.removeEvents = function () {\n window.removeEventListener('mousemove', _this.onMouseMove);\n window.removeEventListener('mouseup', _this.onMouseUp);\n if (_this.thumbRef.current) {\n _this.thumbRef.current.removeEventListener('touchmove', _this.onMouseMove);\n _this.thumbRef.current.removeEventListener('touchend', _this.onMouseUp);\n }\n raf.cancel(_this.moveRaf);\n };\n // ======================= Thumb =======================\n _this.onMouseDown = function (e) {\n var onStartMove = _this.props.onStartMove;\n _this.setState({\n dragging: true,\n pageY: getPageY(e),\n startTop: _this.getTop()\n });\n onStartMove();\n _this.patchEvents();\n e.stopPropagation();\n e.preventDefault();\n };\n _this.onMouseMove = function (e) {\n var _this$state = _this.state,\n dragging = _this$state.dragging,\n pageY = _this$state.pageY,\n startTop = _this$state.startTop;\n var onScroll = _this.props.onScroll;\n raf.cancel(_this.moveRaf);\n if (dragging) {\n var offsetY = getPageY(e) - pageY;\n var newTop = startTop + offsetY;\n var enableScrollRange = _this.getEnableScrollRange();\n var enableHeightRange = _this.getEnableHeightRange();\n var ptg = enableHeightRange ? newTop / enableHeightRange : 0;\n var newScrollTop = Math.ceil(ptg * enableScrollRange);\n _this.moveRaf = raf(function () {\n onScroll(newScrollTop);\n });\n }\n };\n _this.onMouseUp = function () {\n var onStopMove = _this.props.onStopMove;\n _this.setState({\n dragging: false\n });\n onStopMove();\n _this.removeEvents();\n };\n // ===================== Calculate =====================\n _this.getSpinHeight = function () {\n var _this$props = _this.props,\n height = _this$props.height,\n count = _this$props.count;\n var baseHeight = height / count * 10;\n baseHeight = Math.max(baseHeight, MIN_SIZE);\n baseHeight = Math.min(baseHeight, height / 2);\n return Math.floor(baseHeight);\n };\n _this.getEnableScrollRange = function () {\n var _this$props2 = _this.props,\n scrollHeight = _this$props2.scrollHeight,\n height = _this$props2.height;\n return scrollHeight - height || 0;\n };\n _this.getEnableHeightRange = function () {\n var height = _this.props.height;\n var spinHeight = _this.getSpinHeight();\n return height - spinHeight || 0;\n };\n _this.getTop = function () {\n var scrollTop = _this.props.scrollTop;\n var enableScrollRange = _this.getEnableScrollRange();\n var enableHeightRange = _this.getEnableHeightRange();\n if (scrollTop === 0 || enableScrollRange === 0) {\n return 0;\n }\n var ptg = scrollTop / enableScrollRange;\n return ptg * enableHeightRange;\n };\n // Not show scrollbar when height is large than scrollHeight\n _this.showScroll = function () {\n var _this$props3 = _this.props,\n height = _this$props3.height,\n scrollHeight = _this$props3.scrollHeight;\n return scrollHeight > height;\n };\n return _this;\n }\n _createClass(ScrollBar, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.scrollbarRef.current.addEventListener('touchstart', this.onScrollbarTouchStart);\n this.thumbRef.current.addEventListener('touchstart', this.onMouseDown);\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n if (prevProps.scrollTop !== this.props.scrollTop) {\n this.delayHidden();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n var _this$scrollbarRef$cu, _this$thumbRef$curren;\n this.removeEvents();\n (_this$scrollbarRef$cu = this.scrollbarRef.current) === null || _this$scrollbarRef$cu === void 0 ? void 0 : _this$scrollbarRef$cu.removeEventListener('touchstart', this.onScrollbarTouchStart);\n (_this$thumbRef$curren = this.thumbRef.current) === null || _this$thumbRef$curren === void 0 ? void 0 : _this$thumbRef$curren.removeEventListener('touchstart', this.onMouseDown);\n clearTimeout(this.visibleTimeout);\n }\n }, {\n key: \"render\",\n value:\n // ====================== Render =======================\n function render() {\n var _this$state2 = this.state,\n dragging = _this$state2.dragging,\n visible = _this$state2.visible;\n var _this$props4 = this.props,\n prefixCls = _this$props4.prefixCls,\n direction = _this$props4.direction;\n var spinHeight = this.getSpinHeight();\n var top = this.getTop();\n var canScroll = this.showScroll();\n var mergedVisible = canScroll && visible;\n var scrollBarDirection = direction === 'rtl' ? {\n left: 0\n } : {\n right: 0\n };\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: this.scrollbarRef,\n className: classNames(\"\".concat(prefixCls, \"-scrollbar\"), _defineProperty({}, \"\".concat(prefixCls, \"-scrollbar-show\"), canScroll)),\n style: _objectSpread(_objectSpread({\n width: 8,\n top: 0,\n bottom: 0\n }, scrollBarDirection), {}, {\n position: 'absolute',\n display: mergedVisible ? null : 'none'\n }),\n onMouseDown: this.onContainerMouseDown,\n onMouseMove: this.delayHidden\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: this.thumbRef,\n className: classNames(\"\".concat(prefixCls, \"-scrollbar-thumb\"), _defineProperty({}, \"\".concat(prefixCls, \"-scrollbar-thumb-moving\"), dragging)),\n style: {\n width: '100%',\n height: spinHeight,\n top: top,\n left: 0,\n position: 'absolute',\n background: 'rgba(0, 0, 0, 0.5)',\n borderRadius: 99,\n cursor: 'pointer',\n userSelect: 'none'\n },\n onMouseDown: this.onMouseDown\n }));\n }\n }]);\n return ScrollBar;\n}(React.Component);\nexport { ScrollBar as default };","import * as React from 'react';\nexport function Item(_ref) {\n var children = _ref.children,\n setRef = _ref.setRef;\n var refFunc = React.useCallback(function (node) {\n setRef(node);\n }, []);\n return /*#__PURE__*/React.cloneElement(children, {\n ref: refFunc\n });\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\n// Firefox has low performance of map.\nvar CacheMap = /*#__PURE__*/function () {\n function CacheMap() {\n _classCallCheck(this, CacheMap);\n this.maps = void 0;\n this.maps = Object.create(null);\n }\n _createClass(CacheMap, [{\n key: \"set\",\n value: function set(key, value) {\n this.maps[key] = value;\n }\n }, {\n key: \"get\",\n value: function get(key) {\n return this.maps[key];\n }\n }]);\n return CacheMap;\n}();\nexport default CacheMap;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { findListDiffIndex } from '../utils/algorithmUtil';\nexport default function useDiffItem(data, getKey, onDiff) {\n var _React$useState = React.useState(data),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n prevData = _React$useState2[0],\n setPrevData = _React$useState2[1];\n var _React$useState3 = React.useState(null),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n diffItem = _React$useState4[0],\n setDiffItem = _React$useState4[1];\n React.useEffect(function () {\n var diff = findListDiffIndex(prevData || [], data || [], getKey);\n if ((diff === null || diff === void 0 ? void 0 : diff.index) !== undefined) {\n onDiff === null || onDiff === void 0 ? void 0 : onDiff(diff.index);\n setDiffItem(data[diff.index]);\n }\n setPrevData(data);\n }, [data]);\n return [diffItem];\n}","/**\n * Get index with specific start index one by one. e.g.\n * min: 3, max: 9, start: 6\n *\n * Return index is:\n * [0]: 6\n * [1]: 7\n * [2]: 5\n * [3]: 8\n * [4]: 4\n * [5]: 9\n * [6]: 3\n */\nexport function getIndexByStartLoc(min, max, start, index) {\n var beforeCount = start - min;\n var afterCount = max - start;\n var balanceCount = Math.min(beforeCount, afterCount) * 2;\n // Balance\n if (index <= balanceCount) {\n var stepIndex = Math.floor(index / 2);\n if (index % 2) {\n return start + stepIndex + 1;\n }\n return start - stepIndex;\n }\n // One is out of range\n if (beforeCount > afterCount) {\n return start - (index - afterCount);\n }\n return start + (index - beforeCount);\n}\n/**\n * We assume that 2 list has only 1 item diff and others keeping the order.\n * So we can use dichotomy algorithm to find changed one.\n */\nexport function findListDiffIndex(originList, targetList, getKey) {\n var originLen = originList.length;\n var targetLen = targetList.length;\n var shortList;\n var longList;\n if (originLen === 0 && targetLen === 0) {\n return null;\n }\n if (originLen < targetLen) {\n shortList = originList;\n longList = targetList;\n } else {\n shortList = targetList;\n longList = originList;\n }\n var notExistKey = {\n __EMPTY_ITEM__: true\n };\n function getItemKey(item) {\n if (item !== undefined) {\n return getKey(item);\n }\n return notExistKey;\n }\n // Loop to find diff one\n var diffIndex = null;\n var multiple = Math.abs(originLen - targetLen) !== 1;\n for (var i = 0; i < longList.length; i += 1) {\n var shortKey = getItemKey(shortList[i]);\n var longKey = getItemKey(longList[i]);\n if (shortKey !== longKey) {\n diffIndex = i;\n multiple = multiple || shortKey !== getItemKey(longList[i + 1]);\n break;\n }\n }\n return diffIndex === null ? null : {\n index: diffIndex,\n multiple: multiple\n };\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar isFF = (typeof navigator === \"undefined\" ? \"undefined\" : _typeof(navigator)) === 'object' && /Firefox/i.test(navigator.userAgent);\nexport default isFF;","import { useRef } from 'react';\nexport default (function (isScrollAtTop, isScrollAtBottom) {\n // Do lock for a wheel when scrolling\n var lockRef = useRef(false);\n var lockTimeoutRef = useRef(null);\n function lockScroll() {\n clearTimeout(lockTimeoutRef.current);\n lockRef.current = true;\n lockTimeoutRef.current = setTimeout(function () {\n lockRef.current = false;\n }, 50);\n }\n // Pass to ref since global add is in closure\n var scrollPingRef = useRef({\n top: isScrollAtTop,\n bottom: isScrollAtBottom\n });\n scrollPingRef.current.top = isScrollAtTop;\n scrollPingRef.current.bottom = isScrollAtBottom;\n return function (deltaY) {\n var smoothOffset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var originScroll =\n // Pass origin wheel when on the top\n deltaY < 0 && scrollPingRef.current.top ||\n // Pass origin wheel when on the bottom\n deltaY > 0 && scrollPingRef.current.bottom;\n if (smoothOffset && originScroll) {\n // No need lock anymore when it's smooth offset from touchMove interval\n clearTimeout(lockTimeoutRef.current);\n lockRef.current = false;\n } else if (!originScroll || lockRef.current) {\n lockScroll();\n }\n return !lockRef.current && originScroll;\n };\n});","import { useRef } from 'react';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nvar SMOOTH_PTG = 14 / 15;\nexport default function useMobileTouchMove(inVirtual, listRef, callback) {\n var touchedRef = useRef(false);\n var touchYRef = useRef(0);\n var elementRef = useRef(null);\n // Smooth scroll\n var intervalRef = useRef(null);\n /* eslint-disable prefer-const */\n var cleanUpEvents;\n var onTouchMove = function onTouchMove(e) {\n if (touchedRef.current) {\n var currentY = Math.ceil(e.touches[0].pageY);\n var offsetY = touchYRef.current - currentY;\n touchYRef.current = currentY;\n if (callback(offsetY)) {\n e.preventDefault();\n }\n // Smooth interval\n clearInterval(intervalRef.current);\n intervalRef.current = setInterval(function () {\n offsetY *= SMOOTH_PTG;\n if (!callback(offsetY, true) || Math.abs(offsetY) <= 0.1) {\n clearInterval(intervalRef.current);\n }\n }, 16);\n }\n };\n var onTouchEnd = function onTouchEnd() {\n touchedRef.current = false;\n cleanUpEvents();\n };\n var onTouchStart = function onTouchStart(e) {\n cleanUpEvents();\n if (e.touches.length === 1 && !touchedRef.current) {\n touchedRef.current = true;\n touchYRef.current = Math.ceil(e.touches[0].pageY);\n elementRef.current = e.target;\n elementRef.current.addEventListener('touchmove', onTouchMove);\n elementRef.current.addEventListener('touchend', onTouchEnd);\n }\n };\n cleanUpEvents = function cleanUpEvents() {\n if (elementRef.current) {\n elementRef.current.removeEventListener('touchmove', onTouchMove);\n elementRef.current.removeEventListener('touchend', onTouchEnd);\n }\n };\n useLayoutEffect(function () {\n if (inVirtual) {\n listRef.current.addEventListener('touchstart', onTouchStart);\n }\n return function () {\n var _listRef$current;\n (_listRef$current = listRef.current) === null || _listRef$current === void 0 ? void 0 : _listRef$current.removeEventListener('touchstart', onTouchStart);\n cleanUpEvents();\n clearInterval(intervalRef.current);\n };\n }, [inVirtual]);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"className\", \"height\", \"itemHeight\", \"fullHeight\", \"style\", \"data\", \"children\", \"itemKey\", \"virtual\", \"direction\", \"component\", \"onScroll\", \"onVisibleChange\", \"innerProps\"];\nimport * as React from 'react';\nimport { useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport Filler from './Filler';\nimport ScrollBar from './ScrollBar';\nimport useChildren from './hooks/useChildren';\nimport useHeights from './hooks/useHeights';\nimport useScrollTo from './hooks/useScrollTo';\nimport useDiffItem from './hooks/useDiffItem';\nimport useFrameWheel from './hooks/useFrameWheel';\nimport useMobileTouchMove from './hooks/useMobileTouchMove';\nimport useOriginScroll from './hooks/useOriginScroll';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nvar EMPTY_DATA = [];\nvar ScrollStyle = {\n overflowY: 'auto',\n overflowAnchor: 'none'\n};\nexport function RawList(props, ref) {\n var _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-virtual-list' : _props$prefixCls,\n className = props.className,\n height = props.height,\n itemHeight = props.itemHeight,\n _props$fullHeight = props.fullHeight,\n fullHeight = _props$fullHeight === void 0 ? true : _props$fullHeight,\n style = props.style,\n data = props.data,\n children = props.children,\n itemKey = props.itemKey,\n virtual = props.virtual,\n direction = props.direction,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'div' : _props$component,\n onScroll = props.onScroll,\n onVisibleChange = props.onVisibleChange,\n innerProps = props.innerProps,\n restProps = _objectWithoutProperties(props, _excluded);\n // ================================= MISC =================================\n var useVirtual = !!(virtual !== false && height && itemHeight);\n var inVirtual = useVirtual && data && itemHeight * data.length > height;\n var _useState = useState(0),\n _useState2 = _slicedToArray(_useState, 2),\n scrollTop = _useState2[0],\n setScrollTop = _useState2[1];\n var _useState3 = useState(false),\n _useState4 = _slicedToArray(_useState3, 2),\n scrollMoving = _useState4[0],\n setScrollMoving = _useState4[1];\n var mergedClassName = classNames(prefixCls, _defineProperty({}, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), className);\n var mergedData = data || EMPTY_DATA;\n var componentRef = useRef();\n var fillerInnerRef = useRef();\n var scrollBarRef = useRef(); // Hack on scrollbar to enable flash call\n // =============================== Item Key ===============================\n var getKey = React.useCallback(function (item) {\n if (typeof itemKey === 'function') {\n return itemKey(item);\n }\n return item === null || item === void 0 ? void 0 : item[itemKey];\n }, [itemKey]);\n var sharedConfig = {\n getKey: getKey\n };\n // ================================ Scroll ================================\n function syncScrollTop(newTop) {\n setScrollTop(function (origin) {\n var value;\n if (typeof newTop === 'function') {\n value = newTop(origin);\n } else {\n value = newTop;\n }\n var alignedTop = keepInRange(value);\n componentRef.current.scrollTop = alignedTop;\n return alignedTop;\n });\n }\n // ================================ Legacy ================================\n // Put ref here since the range is generate by follow\n var rangeRef = useRef({\n start: 0,\n end: mergedData.length\n });\n var diffItemRef = useRef();\n var _useDiffItem = useDiffItem(mergedData, getKey),\n _useDiffItem2 = _slicedToArray(_useDiffItem, 1),\n diffItem = _useDiffItem2[0];\n diffItemRef.current = diffItem;\n // ================================ Height ================================\n var _useHeights = useHeights(getKey, null, null),\n _useHeights2 = _slicedToArray(_useHeights, 4),\n setInstanceRef = _useHeights2[0],\n collectHeight = _useHeights2[1],\n heights = _useHeights2[2],\n heightUpdatedMark = _useHeights2[3];\n // ========================== Visible Calculation =========================\n var _React$useMemo = React.useMemo(function () {\n if (!useVirtual) {\n return {\n scrollHeight: undefined,\n start: 0,\n end: mergedData.length - 1,\n offset: undefined\n };\n }\n // Always use virtual scroll bar in avoid shaking\n if (!inVirtual) {\n var _fillerInnerRef$curre;\n return {\n scrollHeight: ((_fillerInnerRef$curre = fillerInnerRef.current) === null || _fillerInnerRef$curre === void 0 ? void 0 : _fillerInnerRef$curre.offsetHeight) || 0,\n start: 0,\n end: mergedData.length - 1,\n offset: undefined\n };\n }\n var itemTop = 0;\n var startIndex;\n var startOffset;\n var endIndex;\n var dataLen = mergedData.length;\n for (var i = 0; i < dataLen; i += 1) {\n var item = mergedData[i];\n var key = getKey(item);\n var cacheHeight = heights.get(key);\n var currentItemBottom = itemTop + (cacheHeight === undefined ? itemHeight : cacheHeight);\n // Check item top in the range\n if (currentItemBottom >= scrollTop && startIndex === undefined) {\n startIndex = i;\n startOffset = itemTop;\n }\n // Check item bottom in the range. We will render additional one item for motion usage\n if (currentItemBottom > scrollTop + height && endIndex === undefined) {\n endIndex = i;\n }\n itemTop = currentItemBottom;\n }\n // When scrollTop at the end but data cut to small count will reach this\n if (startIndex === undefined) {\n startIndex = 0;\n startOffset = 0;\n endIndex = Math.ceil(height / itemHeight);\n }\n if (endIndex === undefined) {\n endIndex = mergedData.length - 1;\n }\n // Give cache to improve scroll experience\n endIndex = Math.min(endIndex + 1, mergedData.length);\n return {\n scrollHeight: itemTop,\n start: startIndex,\n end: endIndex,\n offset: startOffset\n };\n }, [inVirtual, useVirtual, scrollTop, mergedData, heightUpdatedMark, height]),\n scrollHeight = _React$useMemo.scrollHeight,\n start = _React$useMemo.start,\n end = _React$useMemo.end,\n offset = _React$useMemo.offset;\n rangeRef.current.start = start;\n rangeRef.current.end = end;\n // =============================== In Range ===============================\n var maxScrollHeight = scrollHeight - height;\n var maxScrollHeightRef = useRef(maxScrollHeight);\n maxScrollHeightRef.current = maxScrollHeight;\n function keepInRange(newScrollTop) {\n var newTop = newScrollTop;\n if (!Number.isNaN(maxScrollHeightRef.current)) {\n newTop = Math.min(newTop, maxScrollHeightRef.current);\n }\n newTop = Math.max(newTop, 0);\n return newTop;\n }\n var isScrollAtTop = scrollTop <= 0;\n var isScrollAtBottom = scrollTop >= maxScrollHeight;\n var originScroll = useOriginScroll(isScrollAtTop, isScrollAtBottom);\n // ================================ Scroll ================================\n function onScrollBar(newScrollTop) {\n var newTop = newScrollTop;\n syncScrollTop(newTop);\n }\n // When data size reduce. It may trigger native scroll event back to fit scroll position\n function onFallbackScroll(e) {\n var newScrollTop = e.currentTarget.scrollTop;\n if (newScrollTop !== scrollTop) {\n syncScrollTop(newScrollTop);\n }\n // Trigger origin onScroll\n onScroll === null || onScroll === void 0 ? void 0 : onScroll(e);\n }\n // Since this added in global,should use ref to keep update\n var _useFrameWheel = useFrameWheel(useVirtual, isScrollAtTop, isScrollAtBottom, function (offsetY) {\n syncScrollTop(function (top) {\n var newTop = top + offsetY;\n return newTop;\n });\n }),\n _useFrameWheel2 = _slicedToArray(_useFrameWheel, 2),\n onRawWheel = _useFrameWheel2[0],\n onFireFoxScroll = _useFrameWheel2[1];\n // Mobile touch move\n useMobileTouchMove(useVirtual, componentRef, function (deltaY, smoothOffset) {\n if (originScroll(deltaY, smoothOffset)) {\n return false;\n }\n onRawWheel({\n preventDefault: function preventDefault() {},\n deltaY: deltaY\n });\n return true;\n });\n useLayoutEffect(function () {\n // Firefox only\n function onMozMousePixelScroll(e) {\n if (useVirtual) {\n e.preventDefault();\n }\n }\n componentRef.current.addEventListener('wheel', onRawWheel);\n componentRef.current.addEventListener('DOMMouseScroll', onFireFoxScroll);\n componentRef.current.addEventListener('MozMousePixelScroll', onMozMousePixelScroll);\n return function () {\n if (componentRef.current) {\n componentRef.current.removeEventListener('wheel', onRawWheel);\n componentRef.current.removeEventListener('DOMMouseScroll', onFireFoxScroll);\n componentRef.current.removeEventListener('MozMousePixelScroll', onMozMousePixelScroll);\n }\n };\n }, [useVirtual]);\n // ================================= Ref ==================================\n var scrollTo = useScrollTo(componentRef, mergedData, heights, itemHeight, getKey, collectHeight, syncScrollTop, function () {\n var _scrollBarRef$current;\n (_scrollBarRef$current = scrollBarRef.current) === null || _scrollBarRef$current === void 0 ? void 0 : _scrollBarRef$current.delayHidden();\n });\n React.useImperativeHandle(ref, function () {\n return {\n scrollTo: scrollTo\n };\n });\n // ================================ Effect ================================\n /** We need told outside that some list not rendered */\n useLayoutEffect(function () {\n if (onVisibleChange) {\n var renderList = mergedData.slice(start, end + 1);\n onVisibleChange(renderList, mergedData);\n }\n }, [start, end, mergedData]);\n // ================================ Render ================================\n var listChildren = useChildren(mergedData, start, end, setInstanceRef, children, sharedConfig);\n var componentStyle = null;\n if (height) {\n componentStyle = _objectSpread(_defineProperty({}, fullHeight ? 'height' : 'maxHeight', height), ScrollStyle);\n if (useVirtual) {\n componentStyle.overflowY = 'hidden';\n if (scrollMoving) {\n componentStyle.pointerEvents = 'none';\n }\n }\n }\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n style: _objectSpread(_objectSpread({}, style), {}, {\n position: 'relative'\n }),\n className: mergedClassName\n }, restProps), /*#__PURE__*/React.createElement(Component, {\n className: \"\".concat(prefixCls, \"-holder\"),\n style: componentStyle,\n ref: componentRef,\n onScroll: onFallbackScroll\n }, /*#__PURE__*/React.createElement(Filler, {\n prefixCls: prefixCls,\n height: scrollHeight,\n offset: offset,\n onInnerResize: collectHeight,\n ref: fillerInnerRef,\n innerProps: innerProps\n }, listChildren)), useVirtual && /*#__PURE__*/React.createElement(ScrollBar, {\n ref: scrollBarRef,\n prefixCls: prefixCls,\n scrollTop: scrollTop,\n height: height,\n scrollHeight: scrollHeight,\n count: mergedData.length,\n direction: direction,\n onScroll: onScrollBar,\n onStartMove: function onStartMove() {\n setScrollMoving(true);\n },\n onStopMove: function onStopMove() {\n setScrollMoving(false);\n }\n }));\n}\nvar List = /*#__PURE__*/React.forwardRef(RawList);\nList.displayName = 'List';\nexport default List;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useRef, useEffect } from 'react';\nimport findDOMNode from \"rc-util/es/Dom/findDOMNode\";\nimport raf from \"rc-util/es/raf\";\nimport CacheMap from '../utils/CacheMap';\nexport default function useHeights(getKey, onItemAdd, onItemRemove) {\n var _React$useState = React.useState(0),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n updatedMark = _React$useState2[0],\n setUpdatedMark = _React$useState2[1];\n var instanceRef = useRef(new Map());\n var heightsRef = useRef(new CacheMap());\n var collectRafRef = useRef();\n function cancelRaf() {\n raf.cancel(collectRafRef.current);\n }\n function collectHeight() {\n cancelRaf();\n collectRafRef.current = raf(function () {\n instanceRef.current.forEach(function (element, key) {\n if (element && element.offsetParent) {\n var htmlElement = findDOMNode(element);\n var offsetHeight = htmlElement.offsetHeight;\n if (heightsRef.current.get(key) !== offsetHeight) {\n heightsRef.current.set(key, htmlElement.offsetHeight);\n }\n }\n });\n // Always trigger update mark to tell parent that should re-calculate heights when resized\n setUpdatedMark(function (c) {\n return c + 1;\n });\n });\n }\n function setInstanceRef(item, instance) {\n var key = getKey(item);\n var origin = instanceRef.current.get(key);\n if (instance) {\n instanceRef.current.set(key, instance);\n collectHeight();\n } else {\n instanceRef.current.delete(key);\n }\n // Instance changed\n if (!origin !== !instance) {\n if (instance) {\n onItemAdd === null || onItemAdd === void 0 ? void 0 : onItemAdd(item);\n } else {\n onItemRemove === null || onItemRemove === void 0 ? void 0 : onItemRemove(item);\n }\n }\n }\n useEffect(function () {\n return cancelRaf;\n }, []);\n return [setInstanceRef, collectHeight, heightsRef.current, updatedMark];\n}","import { useRef } from 'react';\nimport raf from \"rc-util/es/raf\";\nimport isFF from '../utils/isFirefox';\nimport useOriginScroll from './useOriginScroll';\nexport default function useFrameWheel(inVirtual, isScrollAtTop, isScrollAtBottom, onWheelDelta) {\n var offsetRef = useRef(0);\n var nextFrameRef = useRef(null);\n // Firefox patch\n var wheelValueRef = useRef(null);\n var isMouseScrollRef = useRef(false);\n // Scroll status sync\n var originScroll = useOriginScroll(isScrollAtTop, isScrollAtBottom);\n function onWheel(event) {\n if (!inVirtual) return;\n raf.cancel(nextFrameRef.current);\n var deltaY = event.deltaY;\n offsetRef.current += deltaY;\n wheelValueRef.current = deltaY;\n // Do nothing when scroll at the edge, Skip check when is in scroll\n if (originScroll(deltaY)) return;\n // Proxy of scroll events\n if (!isFF) {\n event.preventDefault();\n }\n nextFrameRef.current = raf(function () {\n // Patch a multiple for Firefox to fix wheel number too small\n // ref: https://github.com/ant-design/ant-design/issues/26372#issuecomment-679460266\n var patchMultiple = isMouseScrollRef.current ? 10 : 1;\n onWheelDelta(offsetRef.current * patchMultiple);\n offsetRef.current = 0;\n });\n }\n // A patch for firefox\n function onFireFoxScroll(event) {\n if (!inVirtual) return;\n isMouseScrollRef.current = event.detail === wheelValueRef.current;\n }\n return [onWheel, onFireFoxScroll];\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\n/* eslint-disable no-param-reassign */\nimport * as React from 'react';\nimport raf from \"rc-util/es/raf\";\nexport default function useScrollTo(containerRef, data, heights, itemHeight, getKey, collectHeight, syncScrollTop, triggerFlash) {\n var scrollRef = React.useRef();\n return function (arg) {\n // When not argument provided, we think dev may want to show the scrollbar\n if (arg === null || arg === undefined) {\n triggerFlash();\n return;\n }\n // Normal scroll logic\n raf.cancel(scrollRef.current);\n if (typeof arg === 'number') {\n syncScrollTop(arg);\n } else if (arg && _typeof(arg) === 'object') {\n var index;\n var align = arg.align;\n if ('index' in arg) {\n index = arg.index;\n } else {\n index = data.findIndex(function (item) {\n return getKey(item) === arg.key;\n });\n }\n var _arg$offset = arg.offset,\n offset = _arg$offset === void 0 ? 0 : _arg$offset;\n // We will retry 3 times in case dynamic height shaking\n var syncScroll = function syncScroll(times, targetAlign) {\n if (times < 0 || !containerRef.current) return;\n var height = containerRef.current.clientHeight;\n var needCollectHeight = false;\n var newTargetAlign = targetAlign;\n // Go to next frame if height not exist\n if (height) {\n var mergedAlign = targetAlign || align;\n // Get top & bottom\n var stackTop = 0;\n var itemTop = 0;\n var itemBottom = 0;\n var maxLen = Math.min(data.length, index);\n for (var i = 0; i <= maxLen; i += 1) {\n var key = getKey(data[i]);\n itemTop = stackTop;\n var cacheHeight = heights.get(key);\n itemBottom = itemTop + (cacheHeight === undefined ? itemHeight : cacheHeight);\n stackTop = itemBottom;\n if (i === index && cacheHeight === undefined) {\n needCollectHeight = true;\n }\n }\n // Scroll to\n var targetTop = null;\n switch (mergedAlign) {\n case 'top':\n targetTop = itemTop - offset;\n break;\n case 'bottom':\n targetTop = itemBottom - height + offset;\n break;\n default:\n {\n var scrollTop = containerRef.current.scrollTop;\n var scrollBottom = scrollTop + height;\n if (itemTop < scrollTop) {\n newTargetAlign = 'top';\n } else if (itemBottom > scrollBottom) {\n newTargetAlign = 'bottom';\n }\n }\n }\n if (targetTop !== null && targetTop !== containerRef.current.scrollTop) {\n syncScrollTop(targetTop);\n }\n }\n // We will retry since element may not sync height as it described\n scrollRef.current = raf(function () {\n if (needCollectHeight) {\n collectHeight();\n }\n syncScroll(times - 1, newTargetAlign);\n }, 2); // Delay 2 to wait for List collect heights\n };\n\n syncScroll(3);\n }\n };\n}","import * as React from 'react';\nimport { Item } from '../Item';\nexport default function useChildren(list, startIndex, endIndex, setNodeRef, renderFunc, _ref) {\n var getKey = _ref.getKey;\n return list.slice(startIndex, endIndex + 1).map(function (item, index) {\n var eleIndex = startIndex + index;\n var node = renderFunc(item, eleIndex, {\n // style: status === 'MEASURE_START' ? { visibility: 'hidden' } : {},\n });\n var key = getKey(item);\n return /*#__PURE__*/React.createElement(Item, {\n key: key,\n setRef: function setRef(ele) {\n return setNodeRef(item, ele);\n }\n }, node);\n });\n}","import List from './List';\nexport default List;","import * as React from 'react';\n\n// Use any here since we do not get the type during compilation\n\nvar SelectContext = /*#__PURE__*/React.createContext(null);\nexport default SelectContext;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nvar _excluded = [\"disabled\", \"title\", \"children\", \"style\", \"className\"];\nimport classNames from 'classnames';\nimport useMemo from \"rc-util/es/hooks/useMemo\";\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport omit from \"rc-util/es/omit\";\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nimport List from 'rc-virtual-list';\nimport * as React from 'react';\nimport { useEffect } from 'react';\nimport useBaseProps from \"./hooks/useBaseProps\";\nimport SelectContext from \"./SelectContext\";\nimport TransBtn from \"./TransBtn\";\nimport { isPlatformMac } from \"./utils/platformUtil\";\n\n// export interface OptionListProps {\n\nfunction isTitleType(content) {\n return typeof content === 'string' || typeof content === 'number';\n}\n\n/**\n * Using virtual list of option display.\n * Will fallback to dom if use customize render.\n */\nvar OptionList = function OptionList(_, ref) {\n var _useBaseProps = useBaseProps(),\n prefixCls = _useBaseProps.prefixCls,\n id = _useBaseProps.id,\n open = _useBaseProps.open,\n multiple = _useBaseProps.multiple,\n mode = _useBaseProps.mode,\n searchValue = _useBaseProps.searchValue,\n toggleOpen = _useBaseProps.toggleOpen,\n notFoundContent = _useBaseProps.notFoundContent,\n onPopupScroll = _useBaseProps.onPopupScroll;\n var _React$useContext = React.useContext(SelectContext),\n flattenOptions = _React$useContext.flattenOptions,\n onActiveValue = _React$useContext.onActiveValue,\n defaultActiveFirstOption = _React$useContext.defaultActiveFirstOption,\n onSelect = _React$useContext.onSelect,\n menuItemSelectedIcon = _React$useContext.menuItemSelectedIcon,\n rawValues = _React$useContext.rawValues,\n fieldNames = _React$useContext.fieldNames,\n virtual = _React$useContext.virtual,\n direction = _React$useContext.direction,\n listHeight = _React$useContext.listHeight,\n listItemHeight = _React$useContext.listItemHeight;\n var itemPrefixCls = \"\".concat(prefixCls, \"-item\");\n var memoFlattenOptions = useMemo(function () {\n return flattenOptions;\n }, [open, flattenOptions], function (prev, next) {\n return next[0] && prev[1] !== next[1];\n });\n\n // =========================== List ===========================\n var listRef = React.useRef(null);\n var onListMouseDown = function onListMouseDown(event) {\n event.preventDefault();\n };\n var scrollIntoView = function scrollIntoView(args) {\n if (listRef.current) {\n listRef.current.scrollTo(typeof args === 'number' ? {\n index: args\n } : args);\n }\n };\n\n // ========================== Active ==========================\n var getEnabledActiveIndex = function getEnabledActiveIndex(index) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var len = memoFlattenOptions.length;\n for (var i = 0; i < len; i += 1) {\n var current = (index + i * offset + len) % len;\n var _memoFlattenOptions$c = memoFlattenOptions[current],\n group = _memoFlattenOptions$c.group,\n data = _memoFlattenOptions$c.data;\n if (!group && !data.disabled) {\n return current;\n }\n }\n return -1;\n };\n var _React$useState = React.useState(function () {\n return getEnabledActiveIndex(0);\n }),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n activeIndex = _React$useState2[0],\n setActiveIndex = _React$useState2[1];\n var setActive = function setActive(index) {\n var fromKeyboard = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n setActiveIndex(index);\n var info = {\n source: fromKeyboard ? 'keyboard' : 'mouse'\n };\n\n // Trigger active event\n var flattenItem = memoFlattenOptions[index];\n if (!flattenItem) {\n onActiveValue(null, -1, info);\n return;\n }\n onActiveValue(flattenItem.value, index, info);\n };\n\n // Auto active first item when list length or searchValue changed\n useEffect(function () {\n setActive(defaultActiveFirstOption !== false ? getEnabledActiveIndex(0) : -1);\n }, [memoFlattenOptions.length, searchValue]);\n\n // https://github.com/ant-design/ant-design/issues/34975\n var isSelected = React.useCallback(function (value) {\n return rawValues.has(value) && mode !== 'combobox';\n }, [mode, _toConsumableArray(rawValues).toString(), rawValues.size]);\n\n // Auto scroll to item position in single mode\n useEffect(function () {\n /**\n * React will skip `onChange` when component update.\n * `setActive` function will call root accessibility state update which makes re-render.\n * So we need to delay to let Input component trigger onChange first.\n */\n var timeoutId = setTimeout(function () {\n if (!multiple && open && rawValues.size === 1) {\n var value = Array.from(rawValues)[0];\n var index = memoFlattenOptions.findIndex(function (_ref) {\n var data = _ref.data;\n return data.value === value;\n });\n if (index !== -1) {\n setActive(index);\n scrollIntoView(index);\n }\n }\n });\n\n // Force trigger scrollbar visible when open\n if (open) {\n var _listRef$current;\n (_listRef$current = listRef.current) === null || _listRef$current === void 0 ? void 0 : _listRef$current.scrollTo(undefined);\n }\n return function () {\n return clearTimeout(timeoutId);\n };\n }, [open, searchValue, flattenOptions.length]);\n\n // ========================== Values ==========================\n var onSelectValue = function onSelectValue(value) {\n if (value !== undefined) {\n onSelect(value, {\n selected: !rawValues.has(value)\n });\n }\n\n // Single mode should always close by select\n if (!multiple) {\n toggleOpen(false);\n }\n };\n\n // ========================= Keyboard =========================\n React.useImperativeHandle(ref, function () {\n return {\n onKeyDown: function onKeyDown(event) {\n var which = event.which,\n ctrlKey = event.ctrlKey;\n switch (which) {\n // >>> Arrow keys & ctrl + n/p on Mac\n case KeyCode.N:\n case KeyCode.P:\n case KeyCode.UP:\n case KeyCode.DOWN:\n {\n var offset = 0;\n if (which === KeyCode.UP) {\n offset = -1;\n } else if (which === KeyCode.DOWN) {\n offset = 1;\n } else if (isPlatformMac() && ctrlKey) {\n if (which === KeyCode.N) {\n offset = 1;\n } else if (which === KeyCode.P) {\n offset = -1;\n }\n }\n if (offset !== 0) {\n var nextActiveIndex = getEnabledActiveIndex(activeIndex + offset, offset);\n scrollIntoView(nextActiveIndex);\n setActive(nextActiveIndex, true);\n }\n break;\n }\n\n // >>> Select\n case KeyCode.ENTER:\n {\n // value\n var item = memoFlattenOptions[activeIndex];\n if (item && !item.data.disabled) {\n onSelectValue(item.value);\n } else {\n onSelectValue(undefined);\n }\n if (open) {\n event.preventDefault();\n }\n break;\n }\n\n // >>> Close\n case KeyCode.ESC:\n {\n toggleOpen(false);\n if (open) {\n event.stopPropagation();\n }\n }\n }\n },\n onKeyUp: function onKeyUp() {},\n scrollTo: function scrollTo(index) {\n scrollIntoView(index);\n }\n };\n });\n\n // ========================== Render ==========================\n if (memoFlattenOptions.length === 0) {\n return /*#__PURE__*/React.createElement(\"div\", {\n role: \"listbox\",\n id: \"\".concat(id, \"_list\"),\n className: \"\".concat(itemPrefixCls, \"-empty\"),\n onMouseDown: onListMouseDown\n }, notFoundContent);\n }\n var omitFieldNameList = Object.keys(fieldNames).map(function (key) {\n return fieldNames[key];\n });\n var getLabel = function getLabel(item) {\n return item.label;\n };\n function getItemAriaProps(item, index) {\n var group = item.group;\n return {\n role: group ? 'presentation' : 'option',\n id: \"\".concat(id, \"_list_\").concat(index)\n };\n }\n var renderItem = function renderItem(index) {\n var item = memoFlattenOptions[index];\n if (!item) return null;\n var itemData = item.data || {};\n var value = itemData.value;\n var group = item.group;\n var attrs = pickAttrs(itemData, true);\n var mergedLabel = getLabel(item);\n return item ? /*#__PURE__*/React.createElement(\"div\", _extends({\n \"aria-label\": typeof mergedLabel === 'string' && !group ? mergedLabel : null\n }, attrs, {\n key: index\n }, getItemAriaProps(item, index), {\n \"aria-selected\": isSelected(value)\n }), value) : null;\n };\n var a11yProps = {\n role: 'listbox',\n id: \"\".concat(id, \"_list\")\n };\n return /*#__PURE__*/React.createElement(React.Fragment, null, virtual && /*#__PURE__*/React.createElement(\"div\", _extends({}, a11yProps, {\n style: {\n height: 0,\n width: 0,\n overflow: 'hidden'\n }\n }), renderItem(activeIndex - 1), renderItem(activeIndex), renderItem(activeIndex + 1)), /*#__PURE__*/React.createElement(List, {\n itemKey: \"key\",\n ref: listRef,\n data: memoFlattenOptions,\n height: listHeight,\n itemHeight: listItemHeight,\n fullHeight: false,\n onMouseDown: onListMouseDown,\n onScroll: onPopupScroll,\n virtual: virtual,\n direction: direction,\n innerProps: virtual ? null : a11yProps\n }, function (item, itemIndex) {\n var _classNames;\n var group = item.group,\n groupOption = item.groupOption,\n data = item.data,\n label = item.label,\n value = item.value;\n var key = data.key;\n\n // Group\n if (group) {\n var _data$title;\n var groupTitle = (_data$title = data.title) !== null && _data$title !== void 0 ? _data$title : isTitleType(label) ? label.toString() : undefined;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(itemPrefixCls, \"\".concat(itemPrefixCls, \"-group\")),\n title: groupTitle\n }, label !== undefined ? label : key);\n }\n var disabled = data.disabled,\n title = data.title,\n children = data.children,\n style = data.style,\n className = data.className,\n otherProps = _objectWithoutProperties(data, _excluded);\n var passedProps = omit(otherProps, omitFieldNameList);\n\n // Option\n var selected = isSelected(value);\n var optionPrefixCls = \"\".concat(itemPrefixCls, \"-option\");\n var optionClassName = classNames(itemPrefixCls, optionPrefixCls, className, (_classNames = {}, _defineProperty(_classNames, \"\".concat(optionPrefixCls, \"-grouped\"), groupOption), _defineProperty(_classNames, \"\".concat(optionPrefixCls, \"-active\"), activeIndex === itemIndex && !disabled), _defineProperty(_classNames, \"\".concat(optionPrefixCls, \"-disabled\"), disabled), _defineProperty(_classNames, \"\".concat(optionPrefixCls, \"-selected\"), selected), _classNames));\n var mergedLabel = getLabel(item);\n var iconVisible = !menuItemSelectedIcon || typeof menuItemSelectedIcon === 'function' || selected;\n\n // https://github.com/ant-design/ant-design/issues/34145\n var content = typeof mergedLabel === 'number' ? mergedLabel : mergedLabel || value;\n // https://github.com/ant-design/ant-design/issues/26717\n var optionTitle = isTitleType(content) ? content.toString() : undefined;\n if (title !== undefined) {\n optionTitle = title;\n }\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, pickAttrs(passedProps), !virtual ? getItemAriaProps(item, itemIndex) : {}, {\n \"aria-selected\": selected,\n className: optionClassName,\n title: optionTitle,\n onMouseMove: function onMouseMove() {\n if (activeIndex === itemIndex || disabled) {\n return;\n }\n setActive(itemIndex);\n },\n onClick: function onClick() {\n if (!disabled) {\n onSelectValue(value);\n }\n },\n style: style\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(optionPrefixCls, \"-content\")\n }, content), /*#__PURE__*/React.isValidElement(menuItemSelectedIcon) || selected, iconVisible && /*#__PURE__*/React.createElement(TransBtn, {\n className: \"\".concat(itemPrefixCls, \"-option-state\"),\n customizeIcon: menuItemSelectedIcon,\n customizeIconProps: {\n isSelected: selected\n }\n }, selected ? '✓' : null));\n }));\n};\nvar RefOptionList = /*#__PURE__*/React.forwardRef(OptionList);\nRefOptionList.displayName = 'OptionList';\nexport default RefOptionList;","/* istanbul ignore file */\nexport function isPlatformMac() {\n return /(mac\\sos|macintosh)/i.test(navigator.appVersion);\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport toNodeArray from \"rc-util/es/Children/toArray\";\nimport warning, { noteOnce } from \"rc-util/es/warning\";\nimport * as React from 'react';\nimport { isMultiple } from \"../BaseSelect\";\nimport { toArray } from \"./commonUtil\";\nimport { convertChildrenToData } from \"./legacyUtil\";\nfunction warningProps(props) {\n var mode = props.mode,\n options = props.options,\n children = props.children,\n backfill = props.backfill,\n allowClear = props.allowClear,\n placeholder = props.placeholder,\n getInputElement = props.getInputElement,\n showSearch = props.showSearch,\n onSearch = props.onSearch,\n defaultOpen = props.defaultOpen,\n autoFocus = props.autoFocus,\n labelInValue = props.labelInValue,\n value = props.value,\n inputValue = props.inputValue,\n optionLabelProp = props.optionLabelProp;\n var multiple = isMultiple(mode);\n var mergedShowSearch = showSearch !== undefined ? showSearch : multiple || mode === 'combobox';\n var mergedOptions = options || convertChildrenToData(children);\n\n // `tags` should not set option as disabled\n warning(mode !== 'tags' || mergedOptions.every(function (opt) {\n return !opt.disabled;\n }), 'Please avoid setting option to disabled in tags mode since user can always type text as tag.');\n\n // `combobox` & `tags` should option be `string` type\n if (mode === 'tags' || mode === 'combobox') {\n var hasNumberValue = mergedOptions.some(function (item) {\n if (item.options) {\n return item.options.some(function (opt) {\n return typeof ('value' in opt ? opt.value : opt.key) === 'number';\n });\n }\n return typeof ('value' in item ? item.value : item.key) === 'number';\n });\n warning(!hasNumberValue, '`value` of Option should not use number type when `mode` is `tags` or `combobox`.');\n }\n\n // `combobox` should not use `optionLabelProp`\n warning(mode !== 'combobox' || !optionLabelProp, '`combobox` mode not support `optionLabelProp`. Please set `value` on Option directly.');\n\n // Only `combobox` support `backfill`\n warning(mode === 'combobox' || !backfill, '`backfill` only works with `combobox` mode.');\n\n // Only `combobox` support `getInputElement`\n warning(mode === 'combobox' || !getInputElement, '`getInputElement` only work with `combobox` mode.');\n\n // Customize `getInputElement` should not use `allowClear` & `placeholder`\n noteOnce(mode !== 'combobox' || !getInputElement || !allowClear || !placeholder, 'Customize `getInputElement` should customize clear and placeholder logic instead of configuring `allowClear` and `placeholder`.');\n\n // `onSearch` should use in `combobox` or `showSearch`\n if (onSearch && !mergedShowSearch && mode !== 'combobox' && mode !== 'tags') {\n warning(false, '`onSearch` should work with `showSearch` instead of use alone.');\n }\n noteOnce(!defaultOpen || autoFocus, '`defaultOpen` makes Select open without focus which means it will not close by click outside. You can set `autoFocus` if needed.');\n if (value !== undefined && value !== null) {\n var values = toArray(value);\n warning(!labelInValue || values.every(function (val) {\n return _typeof(val) === 'object' && ('key' in val || 'value' in val);\n }), '`value` should in shape of `{ value: string | number, label?: ReactNode }` when you set `labelInValue` to `true`');\n warning(!multiple || Array.isArray(value), '`value` should be array when `mode` is `multiple` or `tags`');\n }\n\n // Syntactic sugar should use correct children type\n if (children) {\n var invalidateChildType = null;\n toNodeArray(children).some(function (node) {\n if (! /*#__PURE__*/React.isValidElement(node) || !node.type) {\n return false;\n }\n var _ref = node,\n type = _ref.type;\n if (type.isSelectOption) {\n return false;\n }\n if (type.isSelectOptGroup) {\n var allChildrenValid = toNodeArray(node.props.children).every(function (subNode) {\n if (! /*#__PURE__*/React.isValidElement(subNode) || !node.type || subNode.type.isSelectOption) {\n return true;\n }\n invalidateChildType = subNode.type;\n return false;\n });\n if (allChildrenValid) {\n return false;\n }\n return true;\n }\n invalidateChildType = type;\n return true;\n });\n if (invalidateChildType) {\n warning(false, \"`children` should be `Select.Option` or `Select.OptGroup` instead of `\".concat(invalidateChildType.displayName || invalidateChildType.name || invalidateChildType, \"`.\"));\n }\n warning(inputValue === undefined, '`inputValue` is deprecated, please use `searchValue` instead.');\n }\n}\n\n// value in Select option should not be null\n// note: OptGroup has options too\nexport function warningNullOptions(options, fieldNames) {\n if (options) {\n var recursiveOptions = function recursiveOptions(optionsList) {\n var inGroup = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n for (var i = 0; i < optionsList.length; i++) {\n var option = optionsList[i];\n if (option[fieldNames === null || fieldNames === void 0 ? void 0 : fieldNames.value] === null) {\n warning(false, '`value` in Select options should not be `null`.');\n return true;\n }\n if (!inGroup && Array.isArray(option[fieldNames === null || fieldNames === void 0 ? void 0 : fieldNames.options]) && recursiveOptions(option[fieldNames === null || fieldNames === void 0 ? void 0 : fieldNames.options], true)) {\n break;\n }\n }\n };\n recursiveOptions(options);\n }\n}\nexport default warningProps;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar _excluded = [\"id\", \"mode\", \"prefixCls\", \"backfill\", \"fieldNames\", \"inputValue\", \"searchValue\", \"onSearch\", \"autoClearSearchValue\", \"onSelect\", \"onDeselect\", \"dropdownMatchSelectWidth\", \"filterOption\", \"filterSort\", \"optionFilterProp\", \"optionLabelProp\", \"options\", \"children\", \"defaultActiveFirstOption\", \"menuItemSelectedIcon\", \"virtual\", \"direction\", \"listHeight\", \"listItemHeight\", \"value\", \"defaultValue\", \"labelInValue\", \"onChange\"];\n/**\n * To match accessibility requirement, we always provide an input in the component.\n * Other element will not set `tabIndex` to avoid `onBlur` sequence problem.\n * For focused select, we set `aria-live=\"polite\"` to update the accessibility content.\n *\n * ref:\n * - keyboard: https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/listbox_role#Keyboard_interactions\n *\n * New api:\n * - listHeight\n * - listItemHeight\n * - component\n *\n * Remove deprecated api:\n * - multiple\n * - tags\n * - combobox\n * - firstActiveValue\n * - dropdownMenuStyle\n * - openClassName (Not list in api)\n *\n * Update:\n * - `backfill` only support `combobox` mode\n * - `combobox` mode not support `labelInValue` since it's meaningless\n * - `getInputElement` only support `combobox` mode\n * - `onChange` return OptionData instead of ReactNode\n * - `filterOption` `onChange` `onSelect` accept OptionData instead of ReactNode\n * - `combobox` mode trigger `onChange` will get `undefined` if no `value` match in Option\n * - `combobox` mode not support `optionLabelProp`\n */\n\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport warning from \"rc-util/es/warning\";\nimport * as React from 'react';\nimport BaseSelect, { isMultiple } from \"./BaseSelect\";\nimport useCache from \"./hooks/useCache\";\nimport useFilterOptions from \"./hooks/useFilterOptions\";\nimport useId from \"./hooks/useId\";\nimport useOptions from \"./hooks/useOptions\";\nimport useRefFunc from \"./hooks/useRefFunc\";\nimport OptGroup from \"./OptGroup\";\nimport Option from \"./Option\";\nimport OptionList from \"./OptionList\";\nimport SelectContext from \"./SelectContext\";\nimport { hasValue, isComboNoValue, toArray } from \"./utils/commonUtil\";\nimport { fillFieldNames, flattenOptions, injectPropsWithOption } from \"./utils/valueUtil\";\nimport warningProps, { warningNullOptions } from \"./utils/warningPropsUtil\";\nvar OMIT_DOM_PROPS = ['inputValue'];\nfunction isRawValue(value) {\n return !value || _typeof(value) !== 'object';\n}\nvar Select = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var id = props.id,\n mode = props.mode,\n _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-select' : _props$prefixCls,\n backfill = props.backfill,\n fieldNames = props.fieldNames,\n inputValue = props.inputValue,\n searchValue = props.searchValue,\n onSearch = props.onSearch,\n _props$autoClearSearc = props.autoClearSearchValue,\n autoClearSearchValue = _props$autoClearSearc === void 0 ? true : _props$autoClearSearc,\n onSelect = props.onSelect,\n onDeselect = props.onDeselect,\n _props$dropdownMatchS = props.dropdownMatchSelectWidth,\n dropdownMatchSelectWidth = _props$dropdownMatchS === void 0 ? true : _props$dropdownMatchS,\n filterOption = props.filterOption,\n filterSort = props.filterSort,\n optionFilterProp = props.optionFilterProp,\n optionLabelProp = props.optionLabelProp,\n options = props.options,\n children = props.children,\n defaultActiveFirstOption = props.defaultActiveFirstOption,\n menuItemSelectedIcon = props.menuItemSelectedIcon,\n virtual = props.virtual,\n direction = props.direction,\n _props$listHeight = props.listHeight,\n listHeight = _props$listHeight === void 0 ? 200 : _props$listHeight,\n _props$listItemHeight = props.listItemHeight,\n listItemHeight = _props$listItemHeight === void 0 ? 20 : _props$listItemHeight,\n value = props.value,\n defaultValue = props.defaultValue,\n labelInValue = props.labelInValue,\n onChange = props.onChange,\n restProps = _objectWithoutProperties(props, _excluded);\n var mergedId = useId(id);\n var multiple = isMultiple(mode);\n var childrenAsData = !!(!options && children);\n var mergedFilterOption = React.useMemo(function () {\n if (filterOption === undefined && mode === 'combobox') {\n return false;\n }\n return filterOption;\n }, [filterOption, mode]);\n\n // ========================= FieldNames =========================\n var mergedFieldNames = React.useMemo(function () {\n return fillFieldNames(fieldNames, childrenAsData);\n }, /* eslint-disable react-hooks/exhaustive-deps */\n [\n // We stringify fieldNames to avoid unnecessary re-renders.\n JSON.stringify(fieldNames), childrenAsData]\n /* eslint-enable react-hooks/exhaustive-deps */);\n\n // =========================== Search ===========================\n var _useMergedState = useMergedState('', {\n value: searchValue !== undefined ? searchValue : inputValue,\n postState: function postState(search) {\n return search || '';\n }\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n mergedSearchValue = _useMergedState2[0],\n setSearchValue = _useMergedState2[1];\n\n // =========================== Option ===========================\n var parsedOptions = useOptions(options, children, mergedFieldNames, optionFilterProp, optionLabelProp);\n var valueOptions = parsedOptions.valueOptions,\n labelOptions = parsedOptions.labelOptions,\n mergedOptions = parsedOptions.options;\n\n // ========================= Wrap Value =========================\n var convert2LabelValues = React.useCallback(function (draftValues) {\n // Convert to array\n var valueList = toArray(draftValues);\n\n // Convert to labelInValue type\n return valueList.map(function (val) {\n var rawValue;\n var rawLabel;\n var rawKey;\n var rawDisabled;\n var rawTitle;\n\n // Fill label & value\n if (isRawValue(val)) {\n rawValue = val;\n } else {\n var _val$value;\n rawKey = val.key;\n rawLabel = val.label;\n rawValue = (_val$value = val.value) !== null && _val$value !== void 0 ? _val$value : rawKey;\n }\n var option = valueOptions.get(rawValue);\n if (option) {\n var _option$key;\n // Fill missing props\n if (rawLabel === undefined) rawLabel = option === null || option === void 0 ? void 0 : option[optionLabelProp || mergedFieldNames.label];\n if (rawKey === undefined) rawKey = (_option$key = option === null || option === void 0 ? void 0 : option.key) !== null && _option$key !== void 0 ? _option$key : rawValue;\n rawDisabled = option === null || option === void 0 ? void 0 : option.disabled;\n rawTitle = option === null || option === void 0 ? void 0 : option.title;\n\n // Warning if label not same as provided\n if (process.env.NODE_ENV !== 'production' && !optionLabelProp) {\n var optionLabel = option === null || option === void 0 ? void 0 : option[mergedFieldNames.label];\n if (optionLabel !== undefined && ! /*#__PURE__*/React.isValidElement(optionLabel) && ! /*#__PURE__*/React.isValidElement(rawLabel) && optionLabel !== rawLabel) {\n warning(false, '`label` of `value` is not same as `label` in Select options.');\n }\n }\n }\n return {\n label: rawLabel,\n value: rawValue,\n key: rawKey,\n disabled: rawDisabled,\n title: rawTitle\n };\n });\n }, [mergedFieldNames, optionLabelProp, valueOptions]);\n\n // =========================== Values ===========================\n var _useMergedState3 = useMergedState(defaultValue, {\n value: value\n }),\n _useMergedState4 = _slicedToArray(_useMergedState3, 2),\n internalValue = _useMergedState4[0],\n setInternalValue = _useMergedState4[1];\n\n // Merged value with LabelValueType\n var rawLabeledValues = React.useMemo(function () {\n var _values$;\n var values = convert2LabelValues(internalValue);\n\n // combobox no need save value when it's no value (exclude value equal 0)\n if (mode === 'combobox' && isComboNoValue((_values$ = values[0]) === null || _values$ === void 0 ? void 0 : _values$.value)) {\n return [];\n }\n return values;\n }, [internalValue, convert2LabelValues, mode]);\n\n // Fill label with cache to avoid option remove\n var _useCache = useCache(rawLabeledValues, valueOptions),\n _useCache2 = _slicedToArray(_useCache, 2),\n mergedValues = _useCache2[0],\n getMixedOption = _useCache2[1];\n var displayValues = React.useMemo(function () {\n // `null` need show as placeholder instead\n // https://github.com/ant-design/ant-design/issues/25057\n if (!mode && mergedValues.length === 1) {\n var firstValue = mergedValues[0];\n if (firstValue.value === null && (firstValue.label === null || firstValue.label === undefined)) {\n return [];\n }\n }\n return mergedValues.map(function (item) {\n var _item$label;\n return _objectSpread(_objectSpread({}, item), {}, {\n label: (_item$label = item.label) !== null && _item$label !== void 0 ? _item$label : item.value\n });\n });\n }, [mode, mergedValues]);\n\n /** Convert `displayValues` to raw value type set */\n var rawValues = React.useMemo(function () {\n return new Set(mergedValues.map(function (val) {\n return val.value;\n }));\n }, [mergedValues]);\n React.useEffect(function () {\n if (mode === 'combobox') {\n var _mergedValues$;\n var strValue = (_mergedValues$ = mergedValues[0]) === null || _mergedValues$ === void 0 ? void 0 : _mergedValues$.value;\n setSearchValue(hasValue(strValue) ? String(strValue) : '');\n }\n }, [mergedValues]);\n\n // ======================= Display Option =======================\n // Create a placeholder item if not exist in `options`\n var createTagOption = useRefFunc(function (val, label) {\n var _ref;\n var mergedLabel = label !== null && label !== void 0 ? label : val;\n return _ref = {}, _defineProperty(_ref, mergedFieldNames.value, val), _defineProperty(_ref, mergedFieldNames.label, mergedLabel), _ref;\n });\n\n // Fill tag as option if mode is `tags`\n var filledTagOptions = React.useMemo(function () {\n if (mode !== 'tags') {\n return mergedOptions;\n }\n\n // >>> Tag mode\n var cloneOptions = _toConsumableArray(mergedOptions);\n\n // Check if value exist in options (include new patch item)\n var existOptions = function existOptions(val) {\n return valueOptions.has(val);\n };\n\n // Fill current value as option\n _toConsumableArray(mergedValues).sort(function (a, b) {\n return a.value < b.value ? -1 : 1;\n }).forEach(function (item) {\n var val = item.value;\n if (!existOptions(val)) {\n cloneOptions.push(createTagOption(val, item.label));\n }\n });\n return cloneOptions;\n }, [createTagOption, mergedOptions, valueOptions, mergedValues, mode]);\n var filteredOptions = useFilterOptions(filledTagOptions, mergedFieldNames, mergedSearchValue, mergedFilterOption, optionFilterProp);\n\n // Fill options with search value if needed\n var filledSearchOptions = React.useMemo(function () {\n if (mode !== 'tags' || !mergedSearchValue || filteredOptions.some(function (item) {\n return item[optionFilterProp || 'value'] === mergedSearchValue;\n })) {\n return filteredOptions;\n }\n // ignore when search value equal select input value\n if (filteredOptions.some(function (item) {\n return item[mergedFieldNames.value] === mergedSearchValue;\n })) {\n return filteredOptions;\n }\n // Fill search value as option\n return [createTagOption(mergedSearchValue)].concat(_toConsumableArray(filteredOptions));\n }, [createTagOption, optionFilterProp, mode, filteredOptions, mergedSearchValue, mergedFieldNames]);\n var orderedFilteredOptions = React.useMemo(function () {\n if (!filterSort) {\n return filledSearchOptions;\n }\n return _toConsumableArray(filledSearchOptions).sort(function (a, b) {\n return filterSort(a, b);\n });\n }, [filledSearchOptions, filterSort]);\n var displayOptions = React.useMemo(function () {\n return flattenOptions(orderedFilteredOptions, {\n fieldNames: mergedFieldNames,\n childrenAsData: childrenAsData\n });\n }, [orderedFilteredOptions, mergedFieldNames, childrenAsData]);\n\n // =========================== Change ===========================\n var triggerChange = function triggerChange(values) {\n var labeledValues = convert2LabelValues(values);\n setInternalValue(labeledValues);\n if (onChange && (\n // Trigger event only when value changed\n labeledValues.length !== mergedValues.length || labeledValues.some(function (newVal, index) {\n var _mergedValues$index;\n return ((_mergedValues$index = mergedValues[index]) === null || _mergedValues$index === void 0 ? void 0 : _mergedValues$index.value) !== (newVal === null || newVal === void 0 ? void 0 : newVal.value);\n }))) {\n var returnValues = labelInValue ? labeledValues : labeledValues.map(function (v) {\n return v.value;\n });\n var returnOptions = labeledValues.map(function (v) {\n return injectPropsWithOption(getMixedOption(v.value));\n });\n onChange(\n // Value\n multiple ? returnValues : returnValues[0],\n // Option\n multiple ? returnOptions : returnOptions[0]);\n }\n };\n\n // ======================= Accessibility ========================\n var _React$useState = React.useState(null),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n activeValue = _React$useState2[0],\n setActiveValue = _React$useState2[1];\n var _React$useState3 = React.useState(0),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n accessibilityIndex = _React$useState4[0],\n setAccessibilityIndex = _React$useState4[1];\n var mergedDefaultActiveFirstOption = defaultActiveFirstOption !== undefined ? defaultActiveFirstOption : mode !== 'combobox';\n var onActiveValue = React.useCallback(function (active, index) {\n var _ref2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n _ref2$source = _ref2.source,\n source = _ref2$source === void 0 ? 'keyboard' : _ref2$source;\n setAccessibilityIndex(index);\n if (backfill && mode === 'combobox' && active !== null && source === 'keyboard') {\n setActiveValue(String(active));\n }\n }, [backfill, mode]);\n\n // ========================= OptionList =========================\n var triggerSelect = function triggerSelect(val, selected, type) {\n var getSelectEnt = function getSelectEnt() {\n var _option$key2;\n var option = getMixedOption(val);\n return [labelInValue ? {\n label: option === null || option === void 0 ? void 0 : option[mergedFieldNames.label],\n value: val,\n key: (_option$key2 = option === null || option === void 0 ? void 0 : option.key) !== null && _option$key2 !== void 0 ? _option$key2 : val\n } : val, injectPropsWithOption(option)];\n };\n if (selected && onSelect) {\n var _getSelectEnt = getSelectEnt(),\n _getSelectEnt2 = _slicedToArray(_getSelectEnt, 2),\n wrappedValue = _getSelectEnt2[0],\n _option = _getSelectEnt2[1];\n onSelect(wrappedValue, _option);\n } else if (!selected && onDeselect && type !== 'clear') {\n var _getSelectEnt3 = getSelectEnt(),\n _getSelectEnt4 = _slicedToArray(_getSelectEnt3, 2),\n _wrappedValue = _getSelectEnt4[0],\n _option2 = _getSelectEnt4[1];\n onDeselect(_wrappedValue, _option2);\n }\n };\n\n // Used for OptionList selection\n var onInternalSelect = useRefFunc(function (val, info) {\n var cloneValues;\n\n // Single mode always trigger select only with option list\n var mergedSelect = multiple ? info.selected : true;\n if (mergedSelect) {\n cloneValues = multiple ? [].concat(_toConsumableArray(mergedValues), [val]) : [val];\n } else {\n cloneValues = mergedValues.filter(function (v) {\n return v.value !== val;\n });\n }\n triggerChange(cloneValues);\n triggerSelect(val, mergedSelect);\n\n // Clean search value if single or configured\n if (mode === 'combobox') {\n // setSearchValue(String(val));\n setActiveValue('');\n } else if (!isMultiple || autoClearSearchValue) {\n setSearchValue('');\n setActiveValue('');\n }\n });\n\n // ======================= Display Change =======================\n // BaseSelect display values change\n var onDisplayValuesChange = function onDisplayValuesChange(nextValues, info) {\n triggerChange(nextValues);\n var type = info.type,\n values = info.values;\n if (type === 'remove' || type === 'clear') {\n values.forEach(function (item) {\n triggerSelect(item.value, false, type);\n });\n }\n };\n\n // =========================== Search ===========================\n var onInternalSearch = function onInternalSearch(searchText, info) {\n setSearchValue(searchText);\n setActiveValue(null);\n\n // [Submit] Tag mode should flush input\n if (info.source === 'submit') {\n var formatted = (searchText || '').trim();\n // prevent empty tags from appearing when you click the Enter button\n if (formatted) {\n var newRawValues = Array.from(new Set([].concat(_toConsumableArray(rawValues), [formatted])));\n triggerChange(newRawValues);\n triggerSelect(formatted, true);\n setSearchValue('');\n }\n return;\n }\n if (info.source !== 'blur') {\n if (mode === 'combobox') {\n triggerChange(searchText);\n }\n onSearch === null || onSearch === void 0 ? void 0 : onSearch(searchText);\n }\n };\n var onInternalSearchSplit = function onInternalSearchSplit(words) {\n var patchValues = words;\n if (mode !== 'tags') {\n patchValues = words.map(function (word) {\n var opt = labelOptions.get(word);\n return opt === null || opt === void 0 ? void 0 : opt.value;\n }).filter(function (val) {\n return val !== undefined;\n });\n }\n var newRawValues = Array.from(new Set([].concat(_toConsumableArray(rawValues), _toConsumableArray(patchValues))));\n triggerChange(newRawValues);\n newRawValues.forEach(function (newRawValue) {\n triggerSelect(newRawValue, true);\n });\n };\n\n // ========================== Context ===========================\n var selectContext = React.useMemo(function () {\n var realVirtual = virtual !== false && dropdownMatchSelectWidth !== false;\n return _objectSpread(_objectSpread({}, parsedOptions), {}, {\n flattenOptions: displayOptions,\n onActiveValue: onActiveValue,\n defaultActiveFirstOption: mergedDefaultActiveFirstOption,\n onSelect: onInternalSelect,\n menuItemSelectedIcon: menuItemSelectedIcon,\n rawValues: rawValues,\n fieldNames: mergedFieldNames,\n virtual: realVirtual,\n direction: direction,\n listHeight: listHeight,\n listItemHeight: listItemHeight,\n childrenAsData: childrenAsData\n });\n }, [parsedOptions, displayOptions, onActiveValue, mergedDefaultActiveFirstOption, onInternalSelect, menuItemSelectedIcon, rawValues, mergedFieldNames, virtual, dropdownMatchSelectWidth, listHeight, listItemHeight, childrenAsData]);\n\n // ========================== Warning ===========================\n if (process.env.NODE_ENV !== 'production') {\n warningProps(props);\n warningNullOptions(mergedOptions, mergedFieldNames);\n }\n\n // ==============================================================\n // == Render ==\n // ==============================================================\n return /*#__PURE__*/React.createElement(SelectContext.Provider, {\n value: selectContext\n }, /*#__PURE__*/React.createElement(BaseSelect, _extends({}, restProps, {\n // >>> MISC\n id: mergedId,\n prefixCls: prefixCls,\n ref: ref,\n omitDomProps: OMIT_DOM_PROPS,\n mode: mode\n // >>> Values\n ,\n\n displayValues: displayValues,\n onDisplayValuesChange: onDisplayValuesChange\n // >>> Trigger\n ,\n\n direction: direction\n // >>> Search\n ,\n\n searchValue: mergedSearchValue,\n onSearch: onInternalSearch,\n autoClearSearchValue: autoClearSearchValue,\n onSearchSplit: onInternalSearchSplit,\n dropdownMatchSelectWidth: dropdownMatchSelectWidth\n // >>> OptionList\n ,\n\n OptionList: OptionList,\n emptyOptions: !displayOptions.length\n // >>> Accessibility\n ,\n\n activeValue: activeValue,\n activeDescendantId: \"\".concat(mergedId, \"_list_\").concat(accessibilityIndex)\n })));\n});\nif (process.env.NODE_ENV !== 'production') {\n Select.displayName = 'Select';\n}\nvar TypedSelect = Select;\nTypedSelect.Option = Option;\nTypedSelect.OptGroup = OptGroup;\nexport default TypedSelect;","import * as React from 'react';\nimport { convertChildrenToData } from \"../utils/legacyUtil\";\n\n/**\n * Parse `children` to `options` if `options` is not provided.\n * Then flatten the `options`.\n */\nexport default function useOptions(options, children, fieldNames, optionFilterProp, optionLabelProp) {\n return React.useMemo(function () {\n var mergedOptions = options;\n var childrenAsData = !options;\n if (childrenAsData) {\n mergedOptions = convertChildrenToData(children);\n }\n var valueOptions = new Map();\n var labelOptions = new Map();\n var setLabelOptions = function setLabelOptions(labelOptionsMap, option, key) {\n if (key && typeof key === 'string') {\n labelOptionsMap.set(option[key], option);\n }\n };\n function dig(optionList) {\n var isChildren = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n // for loop to speed up collection speed\n for (var i = 0; i < optionList.length; i += 1) {\n var option = optionList[i];\n if (!option[fieldNames.options] || isChildren) {\n valueOptions.set(option[fieldNames.value], option);\n setLabelOptions(labelOptions, option, fieldNames.label);\n // https://github.com/ant-design/ant-design/issues/35304\n setLabelOptions(labelOptions, option, optionFilterProp);\n setLabelOptions(labelOptions, option, optionLabelProp);\n } else {\n dig(option[fieldNames.options], true);\n }\n }\n }\n dig(mergedOptions);\n return {\n options: mergedOptions,\n valueOptions: valueOptions,\n labelOptions: labelOptions\n };\n }, [options, children, fieldNames, optionFilterProp, optionLabelProp]);\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\n/**\n * Cache `value` related LabeledValue & options.\n */\nexport default (function (labeledValues, valueOptions) {\n var cacheRef = React.useRef({\n values: new Map(),\n options: new Map()\n });\n var filledLabeledValues = React.useMemo(function () {\n var _cacheRef$current = cacheRef.current,\n prevValueCache = _cacheRef$current.values,\n prevOptionCache = _cacheRef$current.options;\n\n // Fill label by cache\n var patchedValues = labeledValues.map(function (item) {\n if (item.label === undefined) {\n var _prevValueCache$get;\n return _objectSpread(_objectSpread({}, item), {}, {\n label: (_prevValueCache$get = prevValueCache.get(item.value)) === null || _prevValueCache$get === void 0 ? void 0 : _prevValueCache$get.label\n });\n }\n return item;\n });\n\n // Refresh cache\n var valueCache = new Map();\n var optionCache = new Map();\n patchedValues.forEach(function (item) {\n valueCache.set(item.value, item);\n optionCache.set(item.value, valueOptions.get(item.value) || prevOptionCache.get(item.value));\n });\n cacheRef.current.values = valueCache;\n cacheRef.current.options = optionCache;\n return patchedValues;\n }, [labeledValues, valueOptions]);\n var getOption = React.useCallback(function (val) {\n return valueOptions.get(val) || cacheRef.current.options.get(val);\n }, [valueOptions]);\n return [filledLabeledValues, getOption];\n});","import Select from \"./Select\";\nimport Option from \"./Option\";\nimport OptGroup from \"./OptGroup\";\nimport BaseSelect from \"./BaseSelect\";\nimport useBaseProps from \"./hooks/useBaseProps\";\nexport { Option, OptGroup, BaseSelect, useBaseProps };\nexport default Select;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport classNames from 'classnames';\nvar InputStatuses = ['warning', 'error', ''];\nexport function getStatusClassNames(prefixCls, status, hasFeedback) {\n var _classNames;\n return classNames((_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-status-success\"), status === 'success'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-status-warning\"), status === 'warning'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-status-error\"), status === 'error'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-status-validating\"), status === 'validating'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-has-feedback\"), hasFeedback), _classNames));\n}\nexport var getMergedStatus = function getMergedStatus(contextStatus, customStatus) {\n return customStatus || contextStatus;\n};","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { Keyframes } from '@ant-design/cssinjs';\nimport { initMotion } from './motion';\nexport var slideUpIn = new Keyframes('antSlideUpIn', {\n '0%': {\n transform: 'scaleY(0.8)',\n transformOrigin: '0% 0%',\n opacity: 0\n },\n '100%': {\n transform: 'scaleY(1)',\n transformOrigin: '0% 0%',\n opacity: 1\n }\n});\nexport var slideUpOut = new Keyframes('antSlideUpOut', {\n '0%': {\n transform: 'scaleY(1)',\n transformOrigin: '0% 0%',\n opacity: 1\n },\n '100%': {\n transform: 'scaleY(0.8)',\n transformOrigin: '0% 0%',\n opacity: 0\n }\n});\nexport var slideDownIn = new Keyframes('antSlideDownIn', {\n '0%': {\n transform: 'scaleY(0.8)',\n transformOrigin: '100% 100%',\n opacity: 0\n },\n '100%': {\n transform: 'scaleY(1)',\n transformOrigin: '100% 100%',\n opacity: 1\n }\n});\nexport var slideDownOut = new Keyframes('antSlideDownOut', {\n '0%': {\n transform: 'scaleY(1)',\n transformOrigin: '100% 100%',\n opacity: 1\n },\n '100%': {\n transform: 'scaleY(0.8)',\n transformOrigin: '100% 100%',\n opacity: 0\n }\n});\nexport var slideLeftIn = new Keyframes('antSlideLeftIn', {\n '0%': {\n transform: 'scaleX(0.8)',\n transformOrigin: '0% 0%',\n opacity: 0\n },\n '100%': {\n transform: 'scaleX(1)',\n transformOrigin: '0% 0%',\n opacity: 1\n }\n});\nexport var slideLeftOut = new Keyframes('antSlideLeftOut', {\n '0%': {\n transform: 'scaleX(1)',\n transformOrigin: '0% 0%',\n opacity: 1\n },\n '100%': {\n transform: 'scaleX(0.8)',\n transformOrigin: '0% 0%',\n opacity: 0\n }\n});\nexport var slideRightIn = new Keyframes('antSlideRightIn', {\n '0%': {\n transform: 'scaleX(0.8)',\n transformOrigin: '100% 0%',\n opacity: 0\n },\n '100%': {\n transform: 'scaleX(1)',\n transformOrigin: '100% 0%',\n opacity: 1\n }\n});\nexport var slideRightOut = new Keyframes('antSlideRightOut', {\n '0%': {\n transform: 'scaleX(1)',\n transformOrigin: '100% 0%',\n opacity: 1\n },\n '100%': {\n transform: 'scaleX(0.8)',\n transformOrigin: '100% 0%',\n opacity: 0\n }\n});\nvar slideMotion = {\n 'slide-up': {\n inKeyframes: slideUpIn,\n outKeyframes: slideUpOut\n },\n 'slide-down': {\n inKeyframes: slideDownIn,\n outKeyframes: slideDownOut\n },\n 'slide-left': {\n inKeyframes: slideLeftIn,\n outKeyframes: slideLeftOut\n },\n 'slide-right': {\n inKeyframes: slideRightIn,\n outKeyframes: slideRightOut\n }\n};\nexport var initSlideMotion = function initSlideMotion(token, motionName) {\n var _ref;\n var antCls = token.antCls;\n var motionCls = \"\".concat(antCls, \"-\").concat(motionName);\n var _slideMotion$motionNa = slideMotion[motionName],\n inKeyframes = _slideMotion$motionNa.inKeyframes,\n outKeyframes = _slideMotion$motionNa.outKeyframes;\n return [initMotion(motionCls, inKeyframes, outKeyframes, token.motionDurationMid), (_ref = {}, _defineProperty(_ref, \"\\n \".concat(motionCls, \"-enter,\\n \").concat(motionCls, \"-appear\\n \"), _defineProperty({\n transform: 'scale(0)',\n transformOrigin: '0% 0%',\n opacity: 0,\n animationTimingFunction: token.motionEaseOutQuint\n }, \"&-prepare\", {\n transform: 'scale(1)'\n })), _defineProperty(_ref, \"\".concat(motionCls, \"-leave\"), {\n animationTimingFunction: token.motionEaseInQuint\n }), _ref)];\n};","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { Keyframes } from '@ant-design/cssinjs';\nimport { initMotion } from './motion';\nexport var moveDownIn = new Keyframes('antMoveDownIn', {\n '0%': {\n transform: 'translate3d(0, 100%, 0)',\n transformOrigin: '0 0',\n opacity: 0\n },\n '100%': {\n transform: 'translate3d(0, 0, 0)',\n transformOrigin: '0 0',\n opacity: 1\n }\n});\nexport var moveDownOut = new Keyframes('antMoveDownOut', {\n '0%': {\n transform: 'translate3d(0, 0, 0)',\n transformOrigin: '0 0',\n opacity: 1\n },\n '100%': {\n transform: 'translate3d(0, 100%, 0)',\n transformOrigin: '0 0',\n opacity: 0\n }\n});\nexport var moveLeftIn = new Keyframes('antMoveLeftIn', {\n '0%': {\n transform: 'translate3d(-100%, 0, 0)',\n transformOrigin: '0 0',\n opacity: 0\n },\n '100%': {\n transform: 'translate3d(0, 0, 0)',\n transformOrigin: '0 0',\n opacity: 1\n }\n});\nexport var moveLeftOut = new Keyframes('antMoveLeftOut', {\n '0%': {\n transform: 'translate3d(0, 0, 0)',\n transformOrigin: '0 0',\n opacity: 1\n },\n '100%': {\n transform: 'translate3d(-100%, 0, 0)',\n transformOrigin: '0 0',\n opacity: 0\n }\n});\nexport var moveRightIn = new Keyframes('antMoveRightIn', {\n '0%': {\n transform: 'translate3d(100%, 0, 0)',\n transformOrigin: '0 0',\n opacity: 0\n },\n '100%': {\n transform: 'translate3d(0, 0, 0)',\n transformOrigin: '0 0',\n opacity: 1\n }\n});\nexport var moveRightOut = new Keyframes('antMoveRightOut', {\n '0%': {\n transform: 'translate3d(0, 0, 0)',\n transformOrigin: '0 0',\n opacity: 1\n },\n '100%': {\n transform: 'translate3d(100%, 0, 0)',\n transformOrigin: '0 0',\n opacity: 0\n }\n});\nexport var moveUpIn = new Keyframes('antMoveUpIn', {\n '0%': {\n transform: 'translate3d(0, -100%, 0)',\n transformOrigin: '0 0',\n opacity: 0\n },\n '100%': {\n transform: 'translate3d(0, 0, 0)',\n transformOrigin: '0 0',\n opacity: 1\n }\n});\nexport var moveUpOut = new Keyframes('antMoveUpOut', {\n '0%': {\n transform: 'translate3d(0, 0, 0)',\n transformOrigin: '0 0',\n opacity: 1\n },\n '100%': {\n transform: 'translate3d(0, -100%, 0)',\n transformOrigin: '0 0',\n opacity: 0\n }\n});\nvar moveMotion = {\n 'move-up': {\n inKeyframes: moveUpIn,\n outKeyframes: moveUpOut\n },\n 'move-down': {\n inKeyframes: moveDownIn,\n outKeyframes: moveDownOut\n },\n 'move-left': {\n inKeyframes: moveLeftIn,\n outKeyframes: moveLeftOut\n },\n 'move-right': {\n inKeyframes: moveRightIn,\n outKeyframes: moveRightOut\n }\n};\nexport var initMoveMotion = function initMoveMotion(token, motionName) {\n var _ref;\n var antCls = token.antCls;\n var motionCls = \"\".concat(antCls, \"-\").concat(motionName);\n var _moveMotion$motionNam = moveMotion[motionName],\n inKeyframes = _moveMotion$motionNam.inKeyframes,\n outKeyframes = _moveMotion$motionNam.outKeyframes;\n return [initMotion(motionCls, inKeyframes, outKeyframes, token.motionDurationMid), (_ref = {}, _defineProperty(_ref, \"\\n \".concat(motionCls, \"-enter,\\n \").concat(motionCls, \"-appear\\n \"), {\n opacity: 0,\n animationTimingFunction: token.motionEaseOutCirc\n }), _defineProperty(_ref, \"\".concat(motionCls, \"-leave\"), {\n animationTimingFunction: token.motionEaseInOutCirc\n }), _ref)];\n};","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { resetComponent, textEllipsis } from '../../style';\nimport { initMoveMotion, initSlideMotion, slideDownIn, slideDownOut, slideUpIn, slideUpOut } from '../../style/motion';\nvar genItemStyle = function genItemStyle(token) {\n var controlPaddingHorizontal = token.controlPaddingHorizontal,\n controlHeight = token.controlHeight,\n fontSize = token.fontSize,\n lineHeight = token.lineHeight;\n return {\n position: 'relative',\n display: 'block',\n minHeight: controlHeight,\n padding: \"\".concat((controlHeight - fontSize * lineHeight) / 2, \"px \").concat(controlPaddingHorizontal, \"px\"),\n color: token.colorText,\n fontWeight: 'normal',\n fontSize: fontSize,\n lineHeight: lineHeight,\n boxSizing: 'border-box'\n };\n};\nvar genSingleStyle = function genSingleStyle(token) {\n var _disabled, _option, _Object$assign;\n var antCls = token.antCls,\n componentCls = token.componentCls;\n var selectItemCls = \"\".concat(componentCls, \"-item\");\n var slideUpEnterActive = \"&\".concat(antCls, \"-slide-up-enter\").concat(antCls, \"-slide-up-enter-active\");\n var slideUpAppearActive = \"&\".concat(antCls, \"-slide-up-appear\").concat(antCls, \"-slide-up-appear-active\");\n var slideUpLeaveActive = \"&\".concat(antCls, \"-slide-up-leave\").concat(antCls, \"-slide-up-leave-active\");\n var dropdownPlacementCls = \"\".concat(componentCls, \"-dropdown-placement-\");\n return [_defineProperty({}, \"\".concat(componentCls, \"-dropdown\"), Object.assign(Object.assign({}, resetComponent(token)), (_Object$assign = {\n position: 'absolute',\n top: -9999,\n zIndex: token.zIndexPopup,\n boxSizing: 'border-box',\n padding: token.paddingXXS,\n overflow: 'hidden',\n fontSize: token.fontSize,\n // Fix select render lag of long text in chrome\n // https://github.com/ant-design/ant-design/issues/11456\n // https://github.com/ant-design/ant-design/issues/11843\n fontVariant: 'initial',\n backgroundColor: token.colorBgElevated,\n borderRadius: token.borderRadiusLG,\n outline: 'none',\n boxShadow: token.boxShadowSecondary\n }, _defineProperty(_Object$assign, \"\\n \".concat(slideUpEnterActive).concat(dropdownPlacementCls, \"bottomLeft,\\n \").concat(slideUpAppearActive).concat(dropdownPlacementCls, \"bottomLeft\\n \"), {\n animationName: slideUpIn\n }), _defineProperty(_Object$assign, \"\\n \".concat(slideUpEnterActive).concat(dropdownPlacementCls, \"topLeft,\\n \").concat(slideUpAppearActive).concat(dropdownPlacementCls, \"topLeft,\\n \").concat(slideUpEnterActive).concat(dropdownPlacementCls, \"topRight,\\n \").concat(slideUpAppearActive).concat(dropdownPlacementCls, \"topRight\\n \"), {\n animationName: slideDownIn\n }), _defineProperty(_Object$assign, \"\".concat(slideUpLeaveActive).concat(dropdownPlacementCls, \"bottomLeft\"), {\n animationName: slideUpOut\n }), _defineProperty(_Object$assign, \"\\n \".concat(slideUpLeaveActive).concat(dropdownPlacementCls, \"topLeft,\\n \").concat(slideUpLeaveActive).concat(dropdownPlacementCls, \"topRight\\n \"), {\n animationName: slideDownOut\n }), _defineProperty(_Object$assign, '&-hidden', {\n display: 'none'\n }), _defineProperty(_Object$assign, \"\".concat(selectItemCls), Object.assign(Object.assign({}, genItemStyle(token)), {\n cursor: 'pointer',\n transition: \"background \".concat(token.motionDurationSlow, \" ease\"),\n borderRadius: token.borderRadiusSM,\n // =========== Group ============\n '&-group': {\n color: token.colorTextDescription,\n fontSize: token.fontSizeSM,\n cursor: 'default'\n },\n // =========== Option ===========\n '&-option': (_option = {\n display: 'flex',\n '&-content': Object.assign({\n flex: 'auto'\n }, textEllipsis),\n '&-state': {\n flex: 'none',\n display: 'flex',\n alignItems: 'center'\n }\n }, _defineProperty(_option, \"&-active:not(\".concat(selectItemCls, \"-option-disabled)\"), {\n backgroundColor: token.controlItemBgHover\n }), _defineProperty(_option, \"&-selected:not(\".concat(selectItemCls, \"-option-disabled)\"), _defineProperty({\n color: token.colorText,\n fontWeight: token.fontWeightStrong,\n backgroundColor: token.controlItemBgActive\n }, \"\".concat(selectItemCls, \"-option-state\"), {\n color: token.colorPrimary\n })), _defineProperty(_option, '&-disabled', (_disabled = {}, _defineProperty(_disabled, \"&\".concat(selectItemCls, \"-option-selected\"), {\n backgroundColor: token.colorBgContainerDisabled\n }), _defineProperty(_disabled, \"color\", token.colorTextDisabled), _defineProperty(_disabled, \"cursor\", 'not-allowed'), _disabled)), _defineProperty(_option, '&-grouped', {\n paddingInlineStart: token.controlPaddingHorizontal * 2\n }), _option)\n })), _defineProperty(_Object$assign, '&-rtl', {\n direction: 'rtl'\n }), _Object$assign))),\n // Follow code may reuse in other components\n initSlideMotion(token, 'slide-up'), initSlideMotion(token, 'slide-down'), initMoveMotion(token, 'move-up'), initMoveMotion(token, 'move-down')];\n};\nexport default genSingleStyle;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport { resetIcon } from '../../style';\nimport { mergeToken } from '../../theme/internal';\nvar FIXED_ITEM_MARGIN = 2;\nvar getSelectItemStyle = function getSelectItemStyle(_ref) {\n var controlHeightSM = _ref.controlHeightSM,\n controlHeight = _ref.controlHeight,\n borderWidth = _ref.lineWidth;\n var selectItemDist = (controlHeight - controlHeightSM) / 2 - borderWidth;\n var selectItemMargin = Math.ceil(selectItemDist / 2);\n return [selectItemDist, selectItemMargin];\n};\nfunction genSizeStyle(token, suffix) {\n var _$concat, _Object$assign, _$concat2, _$concat3, _$concat$concat2;\n var componentCls = token.componentCls,\n iconCls = token.iconCls;\n var selectOverflowPrefixCls = \"\".concat(componentCls, \"-selection-overflow\");\n var selectItemHeight = token.controlHeightSM;\n var _getSelectItemStyle = getSelectItemStyle(token),\n _getSelectItemStyle2 = _slicedToArray(_getSelectItemStyle, 1),\n selectItemDist = _getSelectItemStyle2[0];\n var suffixCls = suffix ? \"\".concat(componentCls, \"-\").concat(suffix) : '';\n return _defineProperty({}, \"\".concat(componentCls, \"-multiple\").concat(suffixCls), (_$concat$concat2 = {\n fontSize: token.fontSize\n }, _defineProperty(_$concat$concat2, selectOverflowPrefixCls, {\n position: 'relative',\n display: 'flex',\n flex: 'auto',\n flexWrap: 'wrap',\n maxWidth: '100%',\n '&-item': {\n flex: 'none',\n alignSelf: 'center',\n maxWidth: '100%',\n display: 'inline-flex'\n }\n }), _defineProperty(_$concat$concat2, \"\".concat(componentCls, \"-selector\"), (_$concat = {\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n // Multiple is little different that horizontal is follow the vertical\n padding: \"\".concat(selectItemDist - FIXED_ITEM_MARGIN, \"px \").concat(FIXED_ITEM_MARGIN * 2, \"px\"),\n borderRadius: token.borderRadius\n }, _defineProperty(_$concat, \"\".concat(componentCls, \"-show-search&\"), {\n cursor: 'text'\n }), _defineProperty(_$concat, \"\".concat(componentCls, \"-disabled&\"), {\n background: token.colorBgContainerDisabled,\n cursor: 'not-allowed'\n }), _defineProperty(_$concat, '&:after', {\n display: 'inline-block',\n width: 0,\n margin: \"\".concat(FIXED_ITEM_MARGIN, \"px 0\"),\n lineHeight: \"\".concat(selectItemHeight, \"px\"),\n visibility: 'hidden',\n content: '\"\\\\a0\"'\n }), _$concat)), _defineProperty(_$concat$concat2, \"\\n &\".concat(componentCls, \"-show-arrow \").concat(componentCls, \"-selector,\\n &\").concat(componentCls, \"-allow-clear \").concat(componentCls, \"-selector\\n \"), {\n paddingInlineEnd: token.fontSizeIcon + token.controlPaddingHorizontal\n }), _defineProperty(_$concat$concat2, \"\".concat(componentCls, \"-selection-item\"), (_$concat2 = {\n position: 'relative',\n display: 'flex',\n flex: 'none',\n boxSizing: 'border-box',\n maxWidth: '100%',\n height: selectItemHeight,\n marginTop: FIXED_ITEM_MARGIN,\n marginBottom: FIXED_ITEM_MARGIN,\n lineHeight: \"\".concat(selectItemHeight - token.lineWidth * 2, \"px\"),\n background: token.colorFillSecondary,\n borderRadius: token.borderRadiusSM,\n cursor: 'default',\n transition: \"font-size \".concat(token.motionDurationSlow, \", line-height \").concat(token.motionDurationSlow, \", height \").concat(token.motionDurationSlow),\n userSelect: 'none',\n marginInlineEnd: FIXED_ITEM_MARGIN * 2,\n paddingInlineStart: token.paddingXS,\n paddingInlineEnd: token.paddingXS / 2\n }, _defineProperty(_$concat2, \"\".concat(componentCls, \"-disabled&\"), {\n color: token.colorTextDisabled,\n cursor: 'not-allowed'\n }), _defineProperty(_$concat2, '&-content', {\n display: 'inline-block',\n marginInlineEnd: token.paddingXS / 2,\n overflow: 'hidden',\n whiteSpace: 'pre',\n textOverflow: 'ellipsis'\n }), _defineProperty(_$concat2, '&-remove', Object.assign(Object.assign({}, resetIcon()), (_Object$assign = {\n display: 'inline-flex',\n alignItems: 'center',\n color: token.colorIcon,\n fontWeight: 'bold',\n fontSize: 10,\n lineHeight: 'inherit',\n cursor: 'pointer'\n }, _defineProperty(_Object$assign, \"> \".concat(iconCls), {\n verticalAlign: '-0.2em'\n }), _defineProperty(_Object$assign, '&:hover', {\n color: token.colorIconHover\n }), _Object$assign))), _$concat2)), _defineProperty(_$concat$concat2, \"\".concat(selectOverflowPrefixCls, \"-item + \").concat(selectOverflowPrefixCls, \"-item\"), _defineProperty({}, \"\".concat(componentCls, \"-selection-search\"), {\n marginInlineStart: 0\n })), _defineProperty(_$concat$concat2, \"\".concat(componentCls, \"-selection-search\"), (_$concat3 = {\n display: 'inline-flex',\n position: 'relative',\n maxWidth: '100%',\n marginInlineStart: token.inputPaddingHorizontalBase - selectItemDist\n }, _defineProperty(_$concat3, \"\\n &-input,\\n &-mirror\\n \", {\n height: selectItemHeight,\n fontFamily: token.fontFamily,\n lineHeight: \"\".concat(selectItemHeight, \"px\"),\n transition: \"all \".concat(token.motionDurationSlow)\n }), _defineProperty(_$concat3, '&-input', {\n width: '100%',\n minWidth: 4.1 // fix search cursor missing\n }), _defineProperty(_$concat3, '&-mirror', {\n position: 'absolute',\n top: 0,\n insetInlineStart: 0,\n insetInlineEnd: 'auto',\n zIndex: 999,\n whiteSpace: 'pre',\n visibility: 'hidden'\n }), _$concat3)), _defineProperty(_$concat$concat2, \"\".concat(componentCls, \"-selection-placeholder \"), {\n position: 'absolute',\n top: '50%',\n insetInlineStart: token.inputPaddingHorizontalBase,\n insetInlineEnd: token.inputPaddingHorizontalBase,\n transform: 'translateY(-50%)',\n transition: \"all \".concat(token.motionDurationSlow)\n }), _$concat$concat2));\n}\nvar genMultipleStyle = function genMultipleStyle(token) {\n var _$concat$concat3;\n var componentCls = token.componentCls;\n var smallToken = mergeToken(token, {\n controlHeight: token.controlHeightSM,\n controlHeightSM: token.controlHeightXS,\n borderRadius: token.borderRadiusSM,\n borderRadiusSM: token.borderRadiusXS\n });\n var largeToken = mergeToken(token, {\n fontSize: token.fontSizeLG,\n controlHeight: token.controlHeightLG,\n controlHeightSM: token.controlHeight,\n borderRadius: token.borderRadiusLG,\n borderRadiusSM: token.borderRadius\n });\n var _getSelectItemStyle3 = getSelectItemStyle(token),\n _getSelectItemStyle4 = _slicedToArray(_getSelectItemStyle3, 2),\n smSelectItemMargin = _getSelectItemStyle4[1];\n return [genSizeStyle(token),\n // ======================== Small ========================\n genSizeStyle(smallToken, 'sm'), // Padding\n _defineProperty({}, \"\".concat(componentCls, \"-multiple\").concat(componentCls, \"-sm\"), (_$concat$concat3 = {}, _defineProperty(_$concat$concat3, \"\".concat(componentCls, \"-selection-placeholder\"), {\n insetInline: token.controlPaddingHorizontalSM - token.lineWidth\n }), _defineProperty(_$concat$concat3, \"\".concat(componentCls, \"-selection-search\"), {\n marginInlineStart: smSelectItemMargin\n }), _$concat$concat3)),\n // ======================== Large ========================\n genSizeStyle(largeToken, 'lg')];\n};\nexport default genMultipleStyle;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { resetComponent } from '../../style';\nimport { mergeToken } from '../../theme/internal';\nfunction genSizeStyle(token, suffix) {\n var _Object$assign, _$concat, _$concat2, _$concat$concat;\n var componentCls = token.componentCls,\n inputPaddingHorizontalBase = token.inputPaddingHorizontalBase,\n borderRadius = token.borderRadius;\n var selectHeightWithoutBorder = token.controlHeight - token.lineWidth * 2;\n var selectionItemPadding = Math.ceil(token.fontSize * 1.25);\n var suffixCls = suffix ? \"\".concat(componentCls, \"-\").concat(suffix) : '';\n return _defineProperty({}, \"\".concat(componentCls, \"-single\").concat(suffixCls), (_$concat$concat = {\n fontSize: token.fontSize\n }, _defineProperty(_$concat$concat, \"\".concat(componentCls, \"-selector\"), Object.assign(Object.assign({}, resetComponent(token)), (_Object$assign = {\n display: 'flex',\n borderRadius: borderRadius\n }, _defineProperty(_Object$assign, \"\".concat(componentCls, \"-selection-search\"), {\n position: 'absolute',\n top: 0,\n insetInlineStart: inputPaddingHorizontalBase,\n insetInlineEnd: inputPaddingHorizontalBase,\n bottom: 0,\n '&-input': {\n width: '100%'\n }\n }), _defineProperty(_Object$assign, \"\\n \".concat(componentCls, \"-selection-item,\\n \").concat(componentCls, \"-selection-placeholder\\n \"), {\n padding: 0,\n lineHeight: \"\".concat(selectHeightWithoutBorder, \"px\"),\n transition: \"all \".concat(token.motionDurationSlow, \", visibility 0s\"),\n // Firefox inline-block position calculation is not same as Chrome & Safari. Patch this:\n '@supports (-moz-appearance: meterbar)': {\n lineHeight: \"\".concat(selectHeightWithoutBorder, \"px\")\n }\n }), _defineProperty(_Object$assign, \"\".concat(componentCls, \"-selection-item\"), {\n position: 'relative',\n userSelect: 'none'\n }), _defineProperty(_Object$assign, \"\".concat(componentCls, \"-selection-placeholder\"), {\n transition: 'none',\n pointerEvents: 'none'\n }), _defineProperty(_Object$assign, ['&:after', /* For '' value baseline align */\"\".concat(componentCls, \"-selection-item:after\"), /* For undefined value baseline align */\"\".concat(componentCls, \"-selection-placeholder:after\")].join(','), {\n display: 'inline-block',\n width: 0,\n visibility: 'hidden',\n content: '\"\\\\a0\"'\n }), _Object$assign))), _defineProperty(_$concat$concat, \"\\n &\".concat(componentCls, \"-show-arrow \").concat(componentCls, \"-selection-item,\\n &\").concat(componentCls, \"-show-arrow \").concat(componentCls, \"-selection-placeholder\\n \"), {\n paddingInlineEnd: selectionItemPadding\n }), _defineProperty(_$concat$concat, \"&\".concat(componentCls, \"-open \").concat(componentCls, \"-selection-item\"), {\n color: token.colorTextPlaceholder\n }), _defineProperty(_$concat$concat, \"&:not(\".concat(componentCls, \"-customize-input)\"), _defineProperty({}, \"\".concat(componentCls, \"-selector\"), (_$concat = {\n width: '100%',\n height: token.controlHeight,\n padding: \"0 \".concat(inputPaddingHorizontalBase, \"px\")\n }, _defineProperty(_$concat, \"\".concat(componentCls, \"-selection-search-input\"), {\n height: selectHeightWithoutBorder\n }), _defineProperty(_$concat, '&:after', {\n lineHeight: \"\".concat(selectHeightWithoutBorder, \"px\")\n }), _$concat))), _defineProperty(_$concat$concat, \"&\".concat(componentCls, \"-customize-input\"), _defineProperty({}, \"\".concat(componentCls, \"-selector\"), (_$concat2 = {\n '&:after': {\n display: 'none'\n }\n }, _defineProperty(_$concat2, \"\".concat(componentCls, \"-selection-search\"), {\n position: 'static',\n width: '100%'\n }), _defineProperty(_$concat2, \"\".concat(componentCls, \"-selection-placeholder\"), {\n position: 'absolute',\n insetInlineStart: 0,\n insetInlineEnd: 0,\n padding: \"0 \".concat(inputPaddingHorizontalBase, \"px\"),\n '&:after': {\n display: 'none'\n }\n }), _$concat2))), _$concat$concat));\n}\nexport default function genSingleStyle(token) {\n var _not$concat2;\n var componentCls = token.componentCls;\n var inputPaddingHorizontalSM = token.controlPaddingHorizontalSM - token.lineWidth;\n return [genSizeStyle(token),\n // ======================== Small ========================\n // Shared\n genSizeStyle(mergeToken(token, {\n controlHeight: token.controlHeightSM,\n borderRadius: token.borderRadiusSM\n }), 'sm'), // padding\n _defineProperty({}, \"\".concat(componentCls, \"-single\").concat(componentCls, \"-sm\"), _defineProperty({}, \"&:not(\".concat(componentCls, \"-customize-input)\"), (_not$concat2 = {}, _defineProperty(_not$concat2, \"\".concat(componentCls, \"-selection-search\"), {\n insetInlineStart: inputPaddingHorizontalSM,\n insetInlineEnd: inputPaddingHorizontalSM\n }), _defineProperty(_not$concat2, \"\".concat(componentCls, \"-selector\"), {\n padding: \"0 \".concat(inputPaddingHorizontalSM, \"px\")\n }), _defineProperty(_not$concat2, \"&\".concat(componentCls, \"-show-arrow \").concat(componentCls, \"-selection-search\"), {\n insetInlineEnd: inputPaddingHorizontalSM + token.fontSize * 1.5\n }), _defineProperty(_not$concat2, \"\\n &\".concat(componentCls, \"-show-arrow \").concat(componentCls, \"-selection-item,\\n &\").concat(componentCls, \"-show-arrow \").concat(componentCls, \"-selection-placeholder\\n \"), {\n paddingInlineEnd: token.fontSize * 1.5\n }), _not$concat2))),\n // ======================== Large ========================\n // Shared\n genSizeStyle(mergeToken(token, {\n controlHeight: token.controlHeightLG,\n fontSize: token.fontSizeLG,\n borderRadius: token.borderRadiusLG\n }), 'lg')];\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { resetComponent, resetIcon, textEllipsis } from '../../style';\nimport { genCompactItemStyle } from '../../style/compact-item';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport genDropdownStyle from './dropdown';\nimport genMultipleStyle from './multiple';\nimport genSingleStyle from './single';\n// ============================= Selector =============================\nvar genSelectorStyle = function genSelectorStyle(token) {\n var _$concat, _ref2;\n var componentCls = token.componentCls;\n return _ref2 = {\n position: 'relative',\n backgroundColor: token.colorBgContainer,\n border: \"\".concat(token.lineWidth, \"px \").concat(token.lineType, \" \").concat(token.colorBorder),\n transition: \"all \".concat(token.motionDurationMid, \" \").concat(token.motionEaseInOut),\n input: {\n cursor: 'pointer'\n }\n }, _defineProperty(_ref2, \"\".concat(componentCls, \"-show-search&\"), {\n cursor: 'text',\n input: {\n cursor: 'auto',\n color: 'inherit'\n }\n }), _defineProperty(_ref2, \"\".concat(componentCls, \"-disabled&\"), (_$concat = {\n color: token.colorTextDisabled,\n background: token.colorBgContainerDisabled,\n cursor: 'not-allowed'\n }, _defineProperty(_$concat, \"\".concat(componentCls, \"-multiple&\"), {\n background: token.colorBgContainerDisabled\n }), _defineProperty(_$concat, \"input\", {\n cursor: 'not-allowed'\n }), _$concat)), _ref2;\n};\n// ============================== Status ==============================\nvar genStatusStyle = function genStatusStyle(rootSelectCls, token) {\n var _Object$assign;\n var overwriteDefaultBorder = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var componentCls = token.componentCls,\n borderHoverColor = token.borderHoverColor,\n outlineColor = token.outlineColor,\n antCls = token.antCls;\n var overwriteStyle = overwriteDefaultBorder ? _defineProperty({}, \"\".concat(componentCls, \"-selector\"), {\n borderColor: borderHoverColor\n }) : {};\n return _defineProperty({}, rootSelectCls, _defineProperty({}, \"&:not(\".concat(componentCls, \"-disabled):not(\").concat(componentCls, \"-customize-input):not(\").concat(antCls, \"-pagination-size-changer)\"), Object.assign(Object.assign({}, overwriteStyle), (_Object$assign = {}, _defineProperty(_Object$assign, \"\".concat(componentCls, \"-focused& \").concat(componentCls, \"-selector\"), {\n borderColor: borderHoverColor,\n boxShadow: \"0 0 0 \".concat(token.controlOutlineWidth, \"px \").concat(outlineColor),\n outline: 0\n }), _defineProperty(_Object$assign, \"&:hover \".concat(componentCls, \"-selector\"), {\n borderColor: borderHoverColor\n }), _Object$assign))));\n};\n// ============================== Styles ==============================\n// /* Reset search input style */\nvar getSearchInputWithoutBorderStyle = function getSearchInputWithoutBorderStyle(token) {\n var componentCls = token.componentCls;\n return _defineProperty({}, \"\".concat(componentCls, \"-selection-search-input\"), {\n margin: 0,\n padding: 0,\n background: 'transparent',\n border: 'none',\n outline: 'none',\n appearance: 'none',\n '&::-webkit-search-cancel-button': {\n display: 'none',\n '-webkit-appearance': 'none'\n }\n });\n};\n// =============================== Base ===============================\nvar genBaseStyle = function genBaseStyle(token) {\n var _Object$assign2, _Object$assign3, _ref6;\n var componentCls = token.componentCls,\n inputPaddingHorizontalBase = token.inputPaddingHorizontalBase,\n iconCls = token.iconCls;\n return _ref6 = {}, _defineProperty(_ref6, componentCls, Object.assign(Object.assign({}, resetComponent(token)), (_Object$assign3 = {\n position: 'relative',\n display: 'inline-block',\n cursor: 'pointer'\n }, _defineProperty(_Object$assign3, \"&:not(\".concat(componentCls, \"-customize-input) \").concat(componentCls, \"-selector\"), Object.assign(Object.assign({}, genSelectorStyle(token)), getSearchInputWithoutBorderStyle(token))), _defineProperty(_Object$assign3, \"\".concat(componentCls, \"-selection-item\"), Object.assign({\n flex: 1,\n fontWeight: 'normal'\n }, textEllipsis)), _defineProperty(_Object$assign3, \"\".concat(componentCls, \"-selection-placeholder\"), Object.assign(Object.assign({}, textEllipsis), {\n flex: 1,\n color: token.colorTextPlaceholder,\n pointerEvents: 'none'\n })), _defineProperty(_Object$assign3, \"\".concat(componentCls, \"-arrow\"), Object.assign(Object.assign({}, resetIcon()), (_Object$assign2 = {\n position: 'absolute',\n top: '50%',\n insetInlineStart: 'auto',\n insetInlineEnd: inputPaddingHorizontalBase,\n height: token.fontSizeIcon,\n marginTop: -token.fontSizeIcon / 2,\n color: token.colorTextQuaternary,\n fontSize: token.fontSizeIcon,\n lineHeight: 1,\n textAlign: 'center',\n pointerEvents: 'none',\n display: 'flex',\n alignItems: 'center'\n }, _defineProperty(_Object$assign2, iconCls, _defineProperty({\n verticalAlign: 'top',\n transition: \"transform \".concat(token.motionDurationSlow),\n '> svg': {\n verticalAlign: 'top'\n }\n }, \"&:not(\".concat(componentCls, \"-suffix)\"), {\n pointerEvents: 'auto'\n })), _defineProperty(_Object$assign2, \"\".concat(componentCls, \"-disabled &\"), {\n cursor: 'not-allowed'\n }), _defineProperty(_Object$assign2, '> *:not(:last-child)', {\n marginInlineEnd: 8 // FIXME: magic\n }), _Object$assign2))), _defineProperty(_Object$assign3, \"\".concat(componentCls, \"-clear\"), {\n position: 'absolute',\n top: '50%',\n insetInlineStart: 'auto',\n insetInlineEnd: inputPaddingHorizontalBase,\n zIndex: 1,\n display: 'inline-block',\n width: token.fontSizeIcon,\n height: token.fontSizeIcon,\n marginTop: -token.fontSizeIcon / 2,\n color: token.colorTextQuaternary,\n fontSize: token.fontSizeIcon,\n fontStyle: 'normal',\n lineHeight: 1,\n textAlign: 'center',\n textTransform: 'none',\n background: token.colorBgContainer,\n cursor: 'pointer',\n opacity: 0,\n transition: \"color \".concat(token.motionDurationMid, \" ease, opacity \").concat(token.motionDurationSlow, \" ease\"),\n textRendering: 'auto',\n '&:before': {\n display: 'block'\n },\n '&:hover': {\n color: token.colorTextTertiary\n }\n }), _defineProperty(_Object$assign3, '&:hover', _defineProperty({}, \"\".concat(componentCls, \"-clear\"), {\n opacity: 1\n })), _Object$assign3))), _defineProperty(_ref6, \"\".concat(componentCls, \"-has-feedback\"), _defineProperty({}, \"\".concat(componentCls, \"-clear\"), {\n insetInlineEnd: inputPaddingHorizontalBase + token.fontSize + token.paddingXS\n })), _ref6;\n};\n// ============================== Styles ==============================\nvar genSelectStyle = function genSelectStyle(token) {\n var _componentCls;\n var componentCls = token.componentCls;\n return [_defineProperty({}, componentCls, (_componentCls = {}, _defineProperty(_componentCls, \"&-borderless \".concat(componentCls, \"-selector\"), {\n backgroundColor: \"transparent !important\",\n borderColor: \"transparent !important\",\n boxShadow: \"none !important\"\n }), _defineProperty(_componentCls, \"&\".concat(componentCls, \"-in-form-item\"), {\n width: '100%'\n }), _componentCls)),\n // =====================================================\n // == LTR ==\n // =====================================================\n // Base\n genBaseStyle(token),\n // Single\n genSingleStyle(token),\n // Multiple\n genMultipleStyle(token),\n // Dropdown\n genDropdownStyle(token), // =====================================================\n // == RTL ==\n // =====================================================\n _defineProperty({}, \"\".concat(componentCls, \"-rtl\"), {\n direction: 'rtl'\n }),\n // =====================================================\n // == Status ==\n // =====================================================\n genStatusStyle(componentCls, mergeToken(token, {\n borderHoverColor: token.colorPrimaryHover,\n outlineColor: token.controlOutline\n })), genStatusStyle(\"\".concat(componentCls, \"-status-error\"), mergeToken(token, {\n borderHoverColor: token.colorErrorHover,\n outlineColor: token.colorErrorOutline\n }), true), genStatusStyle(\"\".concat(componentCls, \"-status-warning\"), mergeToken(token, {\n borderHoverColor: token.colorWarningHover,\n outlineColor: token.colorWarningOutline\n }), true),\n // =====================================================\n // == Space Compact ==\n // =====================================================\n genCompactItemStyle(token, {\n borderElCls: \"\".concat(componentCls, \"-selector\"),\n focusElCls: \"\".concat(componentCls, \"-focused\")\n })];\n};\n// ============================== Export ==============================\nexport default genComponentStyleHook('Select', function (token, _ref) {\n var rootPrefixCls = _ref.rootPrefixCls;\n var selectToken = mergeToken(token, {\n rootPrefixCls: rootPrefixCls,\n inputPaddingHorizontalBase: token.paddingSM - 1\n });\n return [genSelectStyle(selectToken)];\n}, function (token) {\n return {\n zIndexPopup: token.zIndexPopupBase + 50\n };\n});","var getBuiltInPlacements = function getBuiltInPlacements(popupOverflow) {\n var htmlRegion = popupOverflow === 'scroll' ? 'scroll' : 'visible';\n var sharedConfig = {\n overflow: {\n adjustX: true,\n adjustY: true,\n shiftY: true\n },\n htmlRegion: htmlRegion,\n _experimental: {\n dynamicInset: true\n }\n };\n return {\n bottomLeft: Object.assign(Object.assign({}, sharedConfig), {\n points: ['tl', 'bl'],\n offset: [0, 4]\n }),\n bottomRight: Object.assign(Object.assign({}, sharedConfig), {\n points: ['tr', 'br'],\n offset: [0, 4]\n }),\n topLeft: Object.assign(Object.assign({}, sharedConfig), {\n points: ['bl', 'tl'],\n offset: [0, -4]\n }),\n topRight: Object.assign(Object.assign({}, sharedConfig), {\n points: ['br', 'tr'],\n offset: [0, -4]\n })\n };\n};\nexport default function useBuiltinPlacements(buildInPlacements, popupOverflow) {\n return buildInPlacements || getBuiltInPlacements(popupOverflow);\n}","// This icon file is generated automatically.\nvar DownOutlined = {\n \"icon\": {\n \"tag\": \"svg\",\n \"attrs\": {\n \"viewBox\": \"64 64 896 896\",\n \"focusable\": \"false\"\n },\n \"children\": [{\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"\n }\n }]\n },\n \"name\": \"down\",\n \"theme\": \"outlined\"\n};\nexport default DownOutlined;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport DownOutlinedSvg from \"@ant-design/icons-svg/es/asn/DownOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar DownOutlined = function DownOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: DownOutlinedSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n DownOutlined.displayName = 'DownOutlined';\n}\nexport default /*#__PURE__*/React.forwardRef(DownOutlined);","// This icon file is generated automatically.\nvar SearchOutlined = {\n \"icon\": {\n \"tag\": \"svg\",\n \"attrs\": {\n \"viewBox\": \"64 64 896 896\",\n \"focusable\": \"false\"\n },\n \"children\": [{\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"\n }\n }]\n },\n \"name\": \"search\",\n \"theme\": \"outlined\"\n};\nexport default SearchOutlined;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport SearchOutlinedSvg from \"@ant-design/icons-svg/es/asn/SearchOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar SearchOutlined = function SearchOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: SearchOutlinedSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n SearchOutlined.displayName = 'SearchOutlined';\n}\nexport default /*#__PURE__*/React.forwardRef(SearchOutlined);","'use client';\n\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n// TODO: 4.0 - codemod should help to change `filterOption` to support node props.\nimport classNames from 'classnames';\nimport RcSelect, { OptGroup, Option } from 'rc-select';\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport genPurePanel from '../_util/PurePanel';\nimport { getTransitionName } from '../_util/motion';\nimport { getMergedStatus, getStatusClassNames } from '../_util/statusUtils';\nimport warning from '../_util/warning';\nimport { ConfigContext } from '../config-provider';\nimport DisabledContext from '../config-provider/DisabledContext';\nimport DefaultRenderEmpty from '../config-provider/defaultRenderEmpty';\nimport useSize from '../config-provider/hooks/useSize';\nimport { FormItemInputContext } from '../form/context';\nimport { useCompactItemContext } from '../space/Compact';\nimport useStyle from './style';\nimport useBuiltinPlacements from './useBuiltinPlacements';\nimport useShowArrow from './useShowArrow';\nimport getIcons from './utils/iconUtil';\nvar SECRET_COMBOBOX_MODE_DO_NOT_USE = 'SECRET_COMBOBOX_MODE_DO_NOT_USE';\nvar InternalSelect = function InternalSelect(_a, ref) {\n var _classNames2;\n var _b;\n var customizePrefixCls = _a.prefixCls,\n _a$bordered = _a.bordered,\n bordered = _a$bordered === void 0 ? true : _a$bordered,\n className = _a.className,\n rootClassName = _a.rootClassName,\n getPopupContainer = _a.getPopupContainer,\n popupClassName = _a.popupClassName,\n dropdownClassName = _a.dropdownClassName,\n _a$listHeight = _a.listHeight,\n listHeight = _a$listHeight === void 0 ? 256 : _a$listHeight,\n placement = _a.placement,\n _a$listItemHeight = _a.listItemHeight,\n listItemHeight = _a$listItemHeight === void 0 ? 24 : _a$listItemHeight,\n customizeSize = _a.size,\n customDisabled = _a.disabled,\n notFoundContent = _a.notFoundContent,\n customStatus = _a.status,\n builtinPlacements = _a.builtinPlacements,\n dropdownMatchSelectWidth = _a.dropdownMatchSelectWidth,\n popupMatchSelectWidth = _a.popupMatchSelectWidth,\n propDirection = _a.direction,\n style = _a.style,\n allowClear = _a.allowClear,\n props = __rest(_a, [\"prefixCls\", \"bordered\", \"className\", \"rootClassName\", \"getPopupContainer\", \"popupClassName\", \"dropdownClassName\", \"listHeight\", \"placement\", \"listItemHeight\", \"size\", \"disabled\", \"notFoundContent\", \"status\", \"builtinPlacements\", \"dropdownMatchSelectWidth\", \"popupMatchSelectWidth\", \"direction\", \"style\", \"allowClear\"]);\n var _React$useContext = React.useContext(ConfigContext),\n getContextPopupContainer = _React$useContext.getPopupContainer,\n getPrefixCls = _React$useContext.getPrefixCls,\n renderEmpty = _React$useContext.renderEmpty,\n contextDirection = _React$useContext.direction,\n virtual = _React$useContext.virtual,\n contextPopupMatchSelectWidth = _React$useContext.popupMatchSelectWidth,\n popupOverflow = _React$useContext.popupOverflow,\n select = _React$useContext.select;\n var prefixCls = getPrefixCls('select', customizePrefixCls);\n var rootPrefixCls = getPrefixCls();\n var direction = propDirection !== null && propDirection !== void 0 ? propDirection : contextDirection;\n var _useCompactItemContex = useCompactItemContext(prefixCls, direction),\n compactSize = _useCompactItemContex.compactSize,\n compactItemClassnames = _useCompactItemContex.compactItemClassnames;\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n var mode = React.useMemo(function () {\n var m = props.mode;\n if (m === 'combobox') {\n return undefined;\n }\n if (m === SECRET_COMBOBOX_MODE_DO_NOT_USE) {\n return 'combobox';\n }\n return m;\n }, [props.mode]);\n var isMultiple = mode === 'multiple' || mode === 'tags';\n var showSuffixIcon = useShowArrow(props.suffixIcon, props.showArrow);\n var mergedPopupMatchSelectWidth = (_b = popupMatchSelectWidth !== null && popupMatchSelectWidth !== void 0 ? popupMatchSelectWidth : dropdownMatchSelectWidth) !== null && _b !== void 0 ? _b : contextPopupMatchSelectWidth;\n // ===================== Form Status =====================\n var _React$useContext2 = React.useContext(FormItemInputContext),\n contextStatus = _React$useContext2.status,\n hasFeedback = _React$useContext2.hasFeedback,\n isFormItemInput = _React$useContext2.isFormItemInput,\n feedbackIcon = _React$useContext2.feedbackIcon;\n var mergedStatus = getMergedStatus(contextStatus, customStatus);\n // ===================== Empty =====================\n var mergedNotFound;\n if (notFoundContent !== undefined) {\n mergedNotFound = notFoundContent;\n } else if (mode === 'combobox') {\n mergedNotFound = null;\n } else {\n mergedNotFound = (renderEmpty === null || renderEmpty === void 0 ? void 0 : renderEmpty('Select')) || /*#__PURE__*/React.createElement(DefaultRenderEmpty, {\n componentName: \"Select\"\n });\n }\n // ===================== Icons =====================\n var _getIcons = getIcons(Object.assign(Object.assign({}, props), {\n multiple: isMultiple,\n hasFeedback: hasFeedback,\n feedbackIcon: feedbackIcon,\n showSuffixIcon: showSuffixIcon,\n prefixCls: prefixCls,\n showArrow: props.showArrow,\n componentName: 'Select'\n })),\n suffixIcon = _getIcons.suffixIcon,\n itemIcon = _getIcons.itemIcon,\n removeIcon = _getIcons.removeIcon,\n clearIcon = _getIcons.clearIcon;\n var mergedAllowClear = allowClear === true ? {\n clearIcon: clearIcon\n } : allowClear;\n var selectProps = omit(props, ['suffixIcon', 'itemIcon']);\n var rcSelectRtlDropdownClassName = classNames(popupClassName || dropdownClassName, _defineProperty({}, \"\".concat(prefixCls, \"-dropdown-\").concat(direction), direction === 'rtl'), rootClassName, hashId);\n var mergedSize = useSize(function (ctx) {\n var _a;\n return (_a = customizeSize !== null && customizeSize !== void 0 ? customizeSize : compactSize) !== null && _a !== void 0 ? _a : ctx;\n });\n // ===================== Disabled =====================\n var disabled = React.useContext(DisabledContext);\n var mergedDisabled = customDisabled !== null && customDisabled !== void 0 ? customDisabled : disabled;\n var mergedClassName = classNames((_classNames2 = {}, _defineProperty(_classNames2, \"\".concat(prefixCls, \"-lg\"), mergedSize === 'large'), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-sm\"), mergedSize === 'small'), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-borderless\"), !bordered), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-in-form-item\"), isFormItemInput), _classNames2), getStatusClassNames(prefixCls, mergedStatus, hasFeedback), compactItemClassnames, select === null || select === void 0 ? void 0 : select.className, className, rootClassName, hashId);\n // ===================== Placement =====================\n var memoPlacement = React.useMemo(function () {\n if (placement !== undefined) {\n return placement;\n }\n return direction === 'rtl' ? 'bottomRight' : 'bottomLeft';\n }, [placement, direction]);\n var mergedBuiltinPlacements = useBuiltinPlacements(builtinPlacements, popupOverflow);\n // ====================== Warning ======================\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? warning(!dropdownClassName, 'Select', '`dropdownClassName` is deprecated. Please use `popupClassName` instead.') : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(dropdownMatchSelectWidth === undefined, 'Select', '`dropdownMatchSelectWidth` is deprecated. Please use `popupMatchSelectWidth` instead.') : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!('showArrow' in props), 'Select', '`showArrow` is deprecated which will be removed in next major version. It will be a default behavior, you can hide it by setting `suffixIcon` to null.') : void 0;\n }\n // ====================== Render =======================\n return wrapSSR( /*#__PURE__*/React.createElement(RcSelect, Object.assign({\n ref: ref,\n virtual: virtual,\n showSearch: select === null || select === void 0 ? void 0 : select.showSearch\n }, selectProps, {\n style: Object.assign(Object.assign({}, select === null || select === void 0 ? void 0 : select.style), style),\n dropdownMatchSelectWidth: mergedPopupMatchSelectWidth,\n builtinPlacements: mergedBuiltinPlacements,\n transitionName: getTransitionName(rootPrefixCls, 'slide-up', props.transitionName),\n listHeight: listHeight,\n listItemHeight: listItemHeight,\n mode: mode,\n prefixCls: prefixCls,\n placement: memoPlacement,\n direction: direction,\n suffixIcon: suffixIcon,\n menuItemSelectedIcon: itemIcon,\n removeIcon: removeIcon,\n allowClear: mergedAllowClear,\n notFoundContent: mergedNotFound,\n className: mergedClassName,\n getPopupContainer: getPopupContainer || getContextPopupContainer,\n dropdownClassName: rcSelectRtlDropdownClassName,\n disabled: mergedDisabled\n })));\n};\nif (process.env.NODE_ENV !== 'production') {\n InternalSelect.displayName = 'Select';\n}\nvar Select = /*#__PURE__*/React.forwardRef(InternalSelect);\n// We don't care debug panel\n/* istanbul ignore next */\nvar PurePanel = genPurePanel(Select);\nSelect.SECRET_COMBOBOX_MODE_DO_NOT_USE = SECRET_COMBOBOX_MODE_DO_NOT_USE;\nSelect.Option = Option;\nSelect.OptGroup = OptGroup;\nSelect._InternalPanelDoNotUseOrYouWillBeFired = PurePanel;\nif (process.env.NODE_ENV !== 'production') {\n Select.displayName = 'Select';\n}\nexport default Select;","/**\n * Since Select, TreeSelect, Cascader is same Select like component.\n * We just use same hook to handle this logic.\n *\n * If `suffixIcon` is not equal to `null`, always show it.\n */\nexport default function useShowArrow(suffixIcon, showArrow) {\n return showArrow !== undefined ? showArrow : suffixIcon !== null;\n}","import CheckOutlined from \"@ant-design/icons/es/icons/CheckOutlined\";\nimport CloseCircleFilled from \"@ant-design/icons/es/icons/CloseCircleFilled\";\nimport CloseOutlined from \"@ant-design/icons/es/icons/CloseOutlined\";\nimport DownOutlined from \"@ant-design/icons/es/icons/DownOutlined\";\nimport LoadingOutlined from \"@ant-design/icons/es/icons/LoadingOutlined\";\nimport SearchOutlined from \"@ant-design/icons/es/icons/SearchOutlined\";\nimport * as React from 'react';\nimport warning from '../../_util/warning';\nexport default function getIcons(_ref) {\n var suffixIcon = _ref.suffixIcon,\n clearIcon = _ref.clearIcon,\n menuItemSelectedIcon = _ref.menuItemSelectedIcon,\n removeIcon = _ref.removeIcon,\n loading = _ref.loading,\n multiple = _ref.multiple,\n hasFeedback = _ref.hasFeedback,\n prefixCls = _ref.prefixCls,\n showSuffixIcon = _ref.showSuffixIcon,\n feedbackIcon = _ref.feedbackIcon,\n showArrow = _ref.showArrow,\n componentName = _ref.componentName;\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? warning(!clearIcon, componentName, '`clearIcon` is deprecated, please use `allowClear={{ clearIcon: React.ReactNode }}` instead.') : void 0;\n }\n // Clear Icon\n var mergedClearIcon = clearIcon !== null && clearIcon !== void 0 ? clearIcon : /*#__PURE__*/React.createElement(CloseCircleFilled, null);\n // Validation Feedback Icon\n var getSuffixIconNode = function getSuffixIconNode(arrowIcon) {\n if (suffixIcon === null && !hasFeedback && !showArrow) {\n return null;\n }\n return /*#__PURE__*/React.createElement(React.Fragment, null, showSuffixIcon !== false && arrowIcon, hasFeedback && feedbackIcon);\n };\n // Arrow item icon\n var mergedSuffixIcon = null;\n if (suffixIcon !== undefined) {\n mergedSuffixIcon = getSuffixIconNode(suffixIcon);\n } else if (loading) {\n mergedSuffixIcon = getSuffixIconNode( /*#__PURE__*/React.createElement(LoadingOutlined, {\n spin: true\n }));\n } else {\n var iconCls = \"\".concat(prefixCls, \"-suffix\");\n mergedSuffixIcon = function mergedSuffixIcon(_ref2) {\n var open = _ref2.open,\n showSearch = _ref2.showSearch;\n if (open && showSearch) {\n return getSuffixIconNode( /*#__PURE__*/React.createElement(SearchOutlined, {\n className: iconCls\n }));\n }\n return getSuffixIconNode( /*#__PURE__*/React.createElement(DownOutlined, {\n className: iconCls\n }));\n };\n }\n // Checked item icon\n var mergedItemIcon = null;\n if (menuItemSelectedIcon !== undefined) {\n mergedItemIcon = menuItemSelectedIcon;\n } else if (multiple) {\n mergedItemIcon = /*#__PURE__*/React.createElement(CheckOutlined, null);\n } else {\n mergedItemIcon = null;\n }\n var mergedRemoveIcon = null;\n if (removeIcon !== undefined) {\n mergedRemoveIcon = removeIcon;\n } else {\n mergedRemoveIcon = /*#__PURE__*/React.createElement(CloseOutlined, null);\n }\n return {\n clearIcon: mergedClearIcon,\n suffixIcon: mergedSuffixIcon,\n itemIcon: mergedItemIcon,\n removeIcon: mergedRemoveIcon\n };\n}","import * as React from 'react';\nimport Select from '../select';\nvar MiniSelect = function MiniSelect(props) {\n return /*#__PURE__*/React.createElement(Select, Object.assign({}, props, {\n showSearch: true,\n size: \"small\"\n }));\n};\nvar MiddleSelect = function MiddleSelect(props) {\n return /*#__PURE__*/React.createElement(Select, Object.assign({}, props, {\n showSearch: true,\n size: \"middle\"\n }));\n};\nMiniSelect.Option = Select.Option;\nMiddleSelect.Option = Select.Option;\nexport { MiniSelect, MiddleSelect };","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { clearFix, resetComponent } from '../../style';\nimport { genCompactItemStyle } from '../../style/compact-item';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nexport var genPlaceholderStyle = function genPlaceholderStyle(color) {\n return {\n // Firefox\n '&::-moz-placeholder': {\n opacity: 1\n },\n '&::placeholder': {\n color: color,\n userSelect: 'none' // https://github.com/ant-design/ant-design/pull/32639\n },\n\n '&:placeholder-shown': {\n textOverflow: 'ellipsis'\n }\n };\n};\nexport var genHoverStyle = function genHoverStyle(token) {\n return {\n borderColor: token.inputBorderHoverColor,\n borderInlineEndWidth: token.lineWidth\n };\n};\nexport var genActiveStyle = function genActiveStyle(token) {\n return {\n borderColor: token.inputBorderHoverColor,\n boxShadow: \"0 0 0 \".concat(token.controlOutlineWidth, \"px \").concat(token.controlOutline),\n borderInlineEndWidth: token.lineWidth,\n outline: 0\n };\n};\nexport var genDisabledStyle = function genDisabledStyle(token) {\n return {\n color: token.colorTextDisabled,\n backgroundColor: token.colorBgContainerDisabled,\n borderColor: token.colorBorder,\n boxShadow: 'none',\n cursor: 'not-allowed',\n opacity: 1,\n '&:hover': Object.assign({}, genHoverStyle(mergeToken(token, {\n inputBorderHoverColor: token.colorBorder\n })))\n };\n};\nvar genInputLargeStyle = function genInputLargeStyle(token) {\n var inputPaddingVerticalLG = token.inputPaddingVerticalLG,\n fontSizeLG = token.fontSizeLG,\n lineHeightLG = token.lineHeightLG,\n borderRadiusLG = token.borderRadiusLG,\n inputPaddingHorizontalLG = token.inputPaddingHorizontalLG;\n return {\n padding: \"\".concat(inputPaddingVerticalLG, \"px \").concat(inputPaddingHorizontalLG, \"px\"),\n fontSize: fontSizeLG,\n lineHeight: lineHeightLG,\n borderRadius: borderRadiusLG\n };\n};\nexport var genInputSmallStyle = function genInputSmallStyle(token) {\n return {\n padding: \"\".concat(token.inputPaddingVerticalSM, \"px \").concat(token.controlPaddingHorizontalSM - 1, \"px\"),\n borderRadius: token.borderRadiusSM\n };\n};\nexport var genStatusStyle = function genStatusStyle(token, parentCls) {\n var _ref;\n var componentCls = token.componentCls,\n colorError = token.colorError,\n colorWarning = token.colorWarning,\n colorErrorOutline = token.colorErrorOutline,\n colorWarningOutline = token.colorWarningOutline,\n colorErrorBorderHover = token.colorErrorBorderHover,\n colorWarningBorderHover = token.colorWarningBorderHover;\n return _ref = {}, _defineProperty(_ref, \"&-status-error:not(\".concat(parentCls, \"-disabled):not(\").concat(parentCls, \"-borderless)\").concat(parentCls), _defineProperty({\n borderColor: colorError,\n '&:hover': {\n borderColor: colorErrorBorderHover\n },\n '&:focus, &-focused': Object.assign({}, genActiveStyle(mergeToken(token, {\n inputBorderActiveColor: colorError,\n inputBorderHoverColor: colorError,\n controlOutline: colorErrorOutline\n })))\n }, \"\".concat(componentCls, \"-prefix, \").concat(componentCls, \"-suffix\"), {\n color: colorError\n })), _defineProperty(_ref, \"&-status-warning:not(\".concat(parentCls, \"-disabled):not(\").concat(parentCls, \"-borderless)\").concat(parentCls), _defineProperty({\n borderColor: colorWarning,\n '&:hover': {\n borderColor: colorWarningBorderHover\n },\n '&:focus, &-focused': Object.assign({}, genActiveStyle(mergeToken(token, {\n inputBorderActiveColor: colorWarning,\n inputBorderHoverColor: colorWarning,\n controlOutline: colorWarningOutline\n })))\n }, \"\".concat(componentCls, \"-prefix, \").concat(componentCls, \"-suffix\"), {\n color: colorWarning\n })), _ref;\n};\nexport var genBasicInputStyle = function genBasicInputStyle(token) {\n return Object.assign(Object.assign({\n position: 'relative',\n display: 'inline-block',\n width: '100%',\n minWidth: 0,\n padding: \"\".concat(token.inputPaddingVertical, \"px \").concat(token.inputPaddingHorizontal, \"px\"),\n color: token.colorText,\n fontSize: token.fontSize,\n lineHeight: token.lineHeight,\n backgroundColor: token.colorBgContainer,\n backgroundImage: 'none',\n borderWidth: token.lineWidth,\n borderStyle: token.lineType,\n borderColor: token.colorBorder,\n borderRadius: token.borderRadius,\n transition: \"all \".concat(token.motionDurationMid)\n }, genPlaceholderStyle(token.colorTextPlaceholder)), {\n '&:hover': Object.assign({}, genHoverStyle(token)),\n '&:focus, &-focused': Object.assign({}, genActiveStyle(token)),\n '&-disabled, &[disabled]': Object.assign({}, genDisabledStyle(token)),\n '&-borderless': {\n '&, &:hover, &:focus, &-focused, &-disabled, &[disabled]': {\n backgroundColor: 'transparent',\n border: 'none',\n boxShadow: 'none'\n }\n },\n // Reset height for `textarea`s\n 'textarea&': {\n maxWidth: '100%',\n height: 'auto',\n minHeight: token.controlHeight,\n lineHeight: token.lineHeight,\n verticalAlign: 'bottom',\n transition: \"all \".concat(token.motionDurationSlow, \", height 0s\"),\n resize: 'vertical'\n },\n // Size\n '&-lg': Object.assign({}, genInputLargeStyle(token)),\n '&-sm': Object.assign({}, genInputSmallStyle(token)),\n // RTL\n '&-rtl': {\n direction: 'rtl'\n },\n '&-textarea-rtl': {\n direction: 'rtl'\n }\n });\n};\nexport var genInputGroupStyle = function genInputGroupStyle(token) {\n var _$concat, _addon, _$concat3, _$concat4, _$concat$concat5, _Object$assign, _ref2;\n var componentCls = token.componentCls,\n antCls = token.antCls;\n return _ref2 = {\n position: 'relative',\n display: 'table',\n width: '100%',\n borderCollapse: 'separate',\n borderSpacing: 0\n }, _defineProperty(_ref2, \"&[class*='col-']\", {\n paddingInlineEnd: token.paddingXS,\n '&:last-child': {\n paddingInlineEnd: 0\n }\n }), _defineProperty(_ref2, \"&-lg \".concat(componentCls, \", &-lg > \").concat(componentCls, \"-group-addon\"), Object.assign({}, genInputLargeStyle(token))), _defineProperty(_ref2, \"&-sm \".concat(componentCls, \", &-sm > \").concat(componentCls, \"-group-addon\"), Object.assign({}, genInputSmallStyle(token))), _defineProperty(_ref2, \"&-lg \".concat(antCls, \"-select-single \").concat(antCls, \"-select-selector\"), {\n height: token.controlHeightLG\n }), _defineProperty(_ref2, \"&-sm \".concat(antCls, \"-select-single \").concat(antCls, \"-select-selector\"), {\n height: token.controlHeightSM\n }), _defineProperty(_ref2, \"> \".concat(componentCls), {\n display: 'table-cell',\n '&:not(:first-child):not(:last-child)': {\n borderRadius: 0\n }\n }), _defineProperty(_ref2, \"\".concat(componentCls, \"-group\"), (_$concat3 = {}, _defineProperty(_$concat3, \"&-addon, &-wrap\", {\n display: 'table-cell',\n width: 1,\n whiteSpace: 'nowrap',\n verticalAlign: 'middle',\n '&:not(:first-child):not(:last-child)': {\n borderRadius: 0\n }\n }), _defineProperty(_$concat3, '&-wrap > *', {\n display: 'block !important'\n }), _defineProperty(_$concat3, '&-addon', (_addon = {\n position: 'relative',\n padding: \"0 \".concat(token.inputPaddingHorizontal, \"px\"),\n color: token.colorText,\n fontWeight: 'normal',\n fontSize: token.fontSize,\n textAlign: 'center',\n backgroundColor: token.colorFillAlter,\n border: \"\".concat(token.lineWidth, \"px \").concat(token.lineType, \" \").concat(token.colorBorder),\n borderRadius: token.borderRadius,\n transition: \"all \".concat(token.motionDurationSlow),\n lineHeight: 1\n }, _defineProperty(_addon, \"\".concat(antCls, \"-select\"), (_$concat = {\n margin: \"-\".concat(token.inputPaddingVertical + 1, \"px -\").concat(token.inputPaddingHorizontal, \"px\")\n }, _defineProperty(_$concat, \"&\".concat(antCls, \"-select-single:not(\").concat(antCls, \"-select-customize-input)\"), _defineProperty({}, \"\".concat(antCls, \"-select-selector\"), {\n backgroundColor: 'inherit',\n border: \"\".concat(token.lineWidth, \"px \").concat(token.lineType, \" transparent\"),\n boxShadow: 'none'\n })), _defineProperty(_$concat, '&-open, &-focused', _defineProperty({}, \"\".concat(antCls, \"-select-selector\"), {\n color: token.colorPrimary\n })), _$concat)), _defineProperty(_addon, \"\".concat(antCls, \"-cascader-picker\"), _defineProperty({\n margin: \"-9px -\".concat(token.inputPaddingHorizontal, \"px\"),\n backgroundColor: 'transparent'\n }, \"\".concat(antCls, \"-cascader-input\"), {\n textAlign: 'start',\n border: 0,\n boxShadow: 'none'\n })), _addon)), _defineProperty(_$concat3, '&-addon:first-child', {\n borderInlineEnd: 0\n }), _defineProperty(_$concat3, '&-addon:last-child', {\n borderInlineStart: 0\n }), _$concat3)), _defineProperty(_ref2, \"\".concat(componentCls), {\n width: '100%',\n marginBottom: 0,\n textAlign: 'inherit',\n '&:focus': {\n zIndex: 1,\n borderInlineEndWidth: 1\n },\n '&:hover': _defineProperty({\n zIndex: 1,\n borderInlineEndWidth: 1\n }, \"\".concat(componentCls, \"-search-with-button &\"), {\n zIndex: 0\n })\n }), _defineProperty(_ref2, \"> \".concat(componentCls, \":first-child, \").concat(componentCls, \"-group-addon:first-child\"), _defineProperty({\n borderStartEndRadius: 0,\n borderEndEndRadius: 0\n }, \"\".concat(antCls, \"-select \").concat(antCls, \"-select-selector\"), {\n borderStartEndRadius: 0,\n borderEndEndRadius: 0\n })), _defineProperty(_ref2, \"> \".concat(componentCls, \"-affix-wrapper\"), (_$concat4 = {}, _defineProperty(_$concat4, \"&:not(:first-child) \".concat(componentCls), {\n borderStartStartRadius: 0,\n borderEndStartRadius: 0\n }), _defineProperty(_$concat4, \"&:not(:last-child) \".concat(componentCls), {\n borderStartEndRadius: 0,\n borderEndEndRadius: 0\n }), _$concat4)), _defineProperty(_ref2, \"> \".concat(componentCls, \":last-child, \").concat(componentCls, \"-group-addon:last-child\"), _defineProperty({\n borderStartStartRadius: 0,\n borderEndStartRadius: 0\n }, \"\".concat(antCls, \"-select \").concat(antCls, \"-select-selector\"), {\n borderStartStartRadius: 0,\n borderEndStartRadius: 0\n })), _defineProperty(_ref2, \"\".concat(componentCls, \"-affix-wrapper\"), _defineProperty({\n '&:not(:last-child)': _defineProperty({\n borderStartEndRadius: 0,\n borderEndEndRadius: 0\n }, \"\".concat(componentCls, \"-search &\"), {\n borderStartStartRadius: token.borderRadius,\n borderEndStartRadius: token.borderRadius\n })\n }, \"&:not(:first-child), \".concat(componentCls, \"-search &:not(:first-child)\"), {\n borderStartStartRadius: 0,\n borderEndStartRadius: 0\n })), _defineProperty(_ref2, \"&\".concat(componentCls, \"-group-compact\"), Object.assign(Object.assign({\n display: 'block'\n }, clearFix()), (_Object$assign = {}, _defineProperty(_Object$assign, \"\".concat(componentCls, \"-group-addon, \").concat(componentCls, \"-group-wrap, > \").concat(componentCls), {\n '&:not(:first-child):not(:last-child)': {\n borderInlineEndWidth: token.lineWidth,\n '&:hover': {\n zIndex: 1\n },\n '&:focus': {\n zIndex: 1\n }\n }\n }), _defineProperty(_Object$assign, '& > *', {\n display: 'inline-block',\n float: 'none',\n verticalAlign: 'top',\n borderRadius: 0\n }), _defineProperty(_Object$assign, \"\\n & > \".concat(componentCls, \"-affix-wrapper,\\n & > \").concat(componentCls, \"-number-affix-wrapper,\\n & > \").concat(antCls, \"-picker-range\\n \"), {\n display: 'inline-flex'\n }), _defineProperty(_Object$assign, '& > *:not(:last-child)', {\n marginInlineEnd: -token.lineWidth,\n borderInlineEndWidth: token.lineWidth\n }), _defineProperty(_Object$assign, \"\".concat(componentCls), {\n float: 'none'\n }), _defineProperty(_Object$assign, \"& > \".concat(antCls, \"-select > \").concat(antCls, \"-select-selector,\\n & > \").concat(antCls, \"-select-auto-complete \").concat(componentCls, \",\\n & > \").concat(antCls, \"-cascader-picker \").concat(componentCls, \",\\n & > \").concat(componentCls, \"-group-wrapper \").concat(componentCls), {\n borderInlineEndWidth: token.lineWidth,\n borderRadius: 0,\n '&:hover': {\n zIndex: 1\n },\n '&:focus': {\n zIndex: 1\n }\n }), _defineProperty(_Object$assign, \"& > \".concat(antCls, \"-select-focused\"), {\n zIndex: 1\n }), _defineProperty(_Object$assign, \"& > \".concat(antCls, \"-select > \").concat(antCls, \"-select-arrow\"), {\n zIndex: 1 // https://github.com/ant-design/ant-design/issues/20371\n }), _defineProperty(_Object$assign, \"& > *:first-child,\\n & > \".concat(antCls, \"-select:first-child > \").concat(antCls, \"-select-selector,\\n & > \").concat(antCls, \"-select-auto-complete:first-child \").concat(componentCls, \",\\n & > \").concat(antCls, \"-cascader-picker:first-child \").concat(componentCls), {\n borderStartStartRadius: token.borderRadius,\n borderEndStartRadius: token.borderRadius\n }), _defineProperty(_Object$assign, \"& > *:last-child,\\n & > \".concat(antCls, \"-select:last-child > \").concat(antCls, \"-select-selector,\\n & > \").concat(antCls, \"-cascader-picker:last-child \").concat(componentCls, \",\\n & > \").concat(antCls, \"-cascader-picker-focused:last-child \").concat(componentCls), {\n borderInlineEndWidth: token.lineWidth,\n borderStartEndRadius: token.borderRadius,\n borderEndEndRadius: token.borderRadius\n }), _defineProperty(_Object$assign, \"& > \".concat(antCls, \"-select-auto-complete \").concat(componentCls), {\n verticalAlign: 'top'\n }), _defineProperty(_Object$assign, \"\".concat(componentCls, \"-group-wrapper + \").concat(componentCls, \"-group-wrapper\"), _defineProperty({\n marginInlineStart: -token.lineWidth\n }, \"\".concat(componentCls, \"-affix-wrapper\"), {\n borderRadius: 0\n })), _defineProperty(_Object$assign, \"\".concat(componentCls, \"-group-wrapper:not(:last-child)\"), _defineProperty({}, \"&\".concat(componentCls, \"-search > \").concat(componentCls, \"-group\"), (_$concat$concat5 = {}, _defineProperty(_$concat$concat5, \"& > \".concat(componentCls, \"-group-addon > \").concat(componentCls, \"-search-button\"), {\n borderRadius: 0\n }), _defineProperty(_$concat$concat5, \"& > \".concat(componentCls), {\n borderStartStartRadius: token.borderRadius,\n borderStartEndRadius: 0,\n borderEndEndRadius: 0,\n borderEndStartRadius: token.borderRadius\n }), _$concat$concat5))), _Object$assign))), _ref2;\n};\nvar genInputStyle = function genInputStyle(token) {\n var _typeColor;\n var componentCls = token.componentCls,\n controlHeightSM = token.controlHeightSM,\n lineWidth = token.lineWidth;\n var FIXED_CHROME_COLOR_HEIGHT = 16;\n var colorSmallPadding = (controlHeightSM - lineWidth * 2 - FIXED_CHROME_COLOR_HEIGHT) / 2;\n return _defineProperty({}, componentCls, Object.assign(Object.assign(Object.assign(Object.assign({}, resetComponent(token)), genBasicInputStyle(token)), genStatusStyle(token, componentCls)), {\n '&[type=\"color\"]': (_typeColor = {\n height: token.controlHeight\n }, _defineProperty(_typeColor, \"&\".concat(componentCls, \"-lg\"), {\n height: token.controlHeightLG\n }), _defineProperty(_typeColor, \"&\".concat(componentCls, \"-sm\"), {\n height: controlHeightSM,\n paddingTop: colorSmallPadding,\n paddingBottom: colorSmallPadding\n }), _typeColor),\n '&[type=\"search\"]::-webkit-search-cancel-button, &[type=\"search\"]::-webkit-search-decoration': {\n '-webkit-appearance': 'none'\n }\n }));\n};\nvar genAllowClearStyle = function genAllowClearStyle(token) {\n var componentCls = token.componentCls;\n return _defineProperty({}, \"\".concat(componentCls, \"-clear-icon\"), {\n margin: 0,\n color: token.colorTextQuaternary,\n fontSize: token.fontSizeIcon,\n verticalAlign: -1,\n // https://github.com/ant-design/ant-design/pull/18151\n // https://codesandbox.io/s/wizardly-sun-u10br\n cursor: 'pointer',\n transition: \"color \".concat(token.motionDurationSlow),\n '&:hover': {\n color: token.colorTextTertiary\n },\n '&:active': {\n color: token.colorText\n },\n '&-hidden': {\n visibility: 'hidden'\n },\n '&-has-suffix': {\n margin: \"0 \".concat(token.inputAffixPadding, \"px\")\n }\n });\n};\nvar genAffixStyle = function genAffixStyle(token) {\n var _Object$assign3;\n var componentCls = token.componentCls,\n inputAffixPadding = token.inputAffixPadding,\n colorTextDescription = token.colorTextDescription,\n motionDurationSlow = token.motionDurationSlow,\n colorIcon = token.colorIcon,\n colorIconHover = token.colorIconHover,\n iconCls = token.iconCls;\n return _defineProperty({}, \"\".concat(componentCls, \"-affix-wrapper\"), Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, genBasicInputStyle(token)), (_Object$assign3 = {\n display: 'inline-flex'\n }, _defineProperty(_Object$assign3, \"&:not(\".concat(componentCls, \"-affix-wrapper-disabled):hover\"), Object.assign(Object.assign({}, genHoverStyle(token)), _defineProperty({\n zIndex: 1\n }, \"\".concat(componentCls, \"-search-with-button &\"), {\n zIndex: 0\n }))), _defineProperty(_Object$assign3, '&-focused, &:focus', {\n zIndex: 1\n }), _defineProperty(_Object$assign3, '&-disabled', _defineProperty({}, \"\".concat(componentCls, \"[disabled]\"), {\n background: 'transparent'\n })), _defineProperty(_Object$assign3, \"> input\".concat(componentCls), {\n padding: 0,\n fontSize: 'inherit',\n border: 'none',\n borderRadius: 0,\n outline: 'none',\n '&::-ms-reveal': {\n display: 'none'\n },\n '&:focus': {\n boxShadow: 'none !important'\n }\n }), _defineProperty(_Object$assign3, '&::before', {\n display: 'inline-block',\n width: 0,\n visibility: 'hidden',\n content: '\"\\\\a0\"'\n }), _defineProperty(_Object$assign3, \"\".concat(componentCls), {\n '&-prefix, &-suffix': {\n display: 'flex',\n flex: 'none',\n alignItems: 'center',\n '> *:not(:last-child)': {\n marginInlineEnd: token.paddingXS\n }\n },\n '&-show-count-suffix': {\n color: colorTextDescription\n },\n '&-show-count-has-suffix': {\n marginInlineEnd: token.paddingXXS\n },\n '&-prefix': {\n marginInlineEnd: inputAffixPadding\n },\n '&-suffix': {\n marginInlineStart: inputAffixPadding\n }\n }), _Object$assign3)), genAllowClearStyle(token)), _defineProperty({}, \"\".concat(iconCls).concat(componentCls, \"-password-icon\"), {\n color: colorIcon,\n cursor: 'pointer',\n transition: \"all \".concat(motionDurationSlow),\n '&:hover': {\n color: colorIconHover\n }\n })), genStatusStyle(token, \"\".concat(componentCls, \"-affix-wrapper\"))));\n};\nvar genGroupStyle = function genGroupStyle(token) {\n var _wrapper;\n var componentCls = token.componentCls,\n colorError = token.colorError,\n colorWarning = token.colorWarning,\n borderRadiusLG = token.borderRadiusLG,\n borderRadiusSM = token.borderRadiusSM;\n return _defineProperty({}, \"\".concat(componentCls, \"-group\"), Object.assign(Object.assign(Object.assign({}, resetComponent(token)), genInputGroupStyle(token)), {\n '&-rtl': {\n direction: 'rtl'\n },\n '&-wrapper': (_wrapper = {\n display: 'inline-block',\n width: '100%',\n textAlign: 'start',\n verticalAlign: 'top',\n '&-rtl': {\n direction: 'rtl'\n },\n // Size\n '&-lg': _defineProperty({}, \"\".concat(componentCls, \"-group-addon\"), {\n borderRadius: borderRadiusLG,\n fontSize: token.fontSizeLG\n }),\n '&-sm': _defineProperty({}, \"\".concat(componentCls, \"-group-addon\"), {\n borderRadius: borderRadiusSM\n }),\n // Status\n '&-status-error': _defineProperty({}, \"\".concat(componentCls, \"-group-addon\"), {\n color: colorError,\n borderColor: colorError\n }),\n '&-status-warning': _defineProperty({}, \"\".concat(componentCls, \"-group-addon\"), {\n color: colorWarning,\n borderColor: colorWarning\n }),\n '&-disabled': _defineProperty({}, \"\".concat(componentCls, \"-group-addon\"), Object.assign({}, genDisabledStyle(token)))\n }, _defineProperty(_wrapper, \"&:not(\".concat(componentCls, \"-compact-first-item):not(\").concat(componentCls, \"-compact-last-item)\").concat(componentCls, \"-compact-item\"), _defineProperty({}, \"\".concat(componentCls, \", \").concat(componentCls, \"-group-addon\"), {\n borderRadius: 0\n })), _defineProperty(_wrapper, \"&:not(\".concat(componentCls, \"-compact-last-item)\").concat(componentCls, \"-compact-first-item\"), _defineProperty({}, \"\".concat(componentCls, \", \").concat(componentCls, \"-group-addon\"), {\n borderStartEndRadius: 0,\n borderEndEndRadius: 0\n })), _defineProperty(_wrapper, \"&:not(\".concat(componentCls, \"-compact-first-item)\").concat(componentCls, \"-compact-last-item\"), _defineProperty({}, \"\".concat(componentCls, \", \").concat(componentCls, \"-group-addon\"), {\n borderStartStartRadius: 0,\n borderEndStartRadius: 0\n })), _wrapper)\n }));\n};\nvar genSearchInputStyle = function genSearchInputStyle(token) {\n var _$concat7, _$concat10, _searchPrefixCls;\n var componentCls = token.componentCls,\n antCls = token.antCls;\n var searchPrefixCls = \"\".concat(componentCls, \"-search\");\n return _defineProperty({}, searchPrefixCls, (_searchPrefixCls = {}, _defineProperty(_searchPrefixCls, \"\".concat(componentCls), {\n '&:hover, &:focus': _defineProperty({\n borderColor: token.colorPrimaryHover\n }, \"+ \".concat(componentCls, \"-group-addon \").concat(searchPrefixCls, \"-button:not(\").concat(antCls, \"-btn-primary)\"), {\n borderInlineStartColor: token.colorPrimaryHover\n })\n }), _defineProperty(_searchPrefixCls, \"\".concat(componentCls, \"-affix-wrapper\"), {\n borderRadius: 0\n }), _defineProperty(_searchPrefixCls, \"\".concat(componentCls, \"-lg\"), {\n lineHeight: token.lineHeightLG - 0.0002\n }), _defineProperty(_searchPrefixCls, \"> \".concat(componentCls, \"-group\"), _defineProperty({}, \"> \".concat(componentCls, \"-group-addon:last-child\"), (_$concat7 = {\n insetInlineStart: -1,\n padding: 0,\n border: 0\n }, _defineProperty(_$concat7, \"\".concat(searchPrefixCls, \"-button\"), {\n paddingTop: 0,\n paddingBottom: 0,\n borderStartStartRadius: 0,\n borderStartEndRadius: token.borderRadius,\n borderEndEndRadius: token.borderRadius,\n borderEndStartRadius: 0\n }), _defineProperty(_$concat7, \"\".concat(searchPrefixCls, \"-button:not(\").concat(antCls, \"-btn-primary)\"), _defineProperty({\n color: token.colorTextDescription,\n '&:hover': {\n color: token.colorPrimaryHover\n },\n '&:active': {\n color: token.colorPrimaryActive\n }\n }, \"&\".concat(antCls, \"-btn-loading::before\"), {\n insetInlineStart: 0,\n insetInlineEnd: 0,\n insetBlockStart: 0,\n insetBlockEnd: 0\n })), _$concat7))), _defineProperty(_searchPrefixCls, \"\".concat(searchPrefixCls, \"-button\"), {\n height: token.controlHeight,\n '&:hover, &:focus': {\n zIndex: 1\n }\n }), _defineProperty(_searchPrefixCls, \"&-large \".concat(searchPrefixCls, \"-button\"), {\n height: token.controlHeightLG\n }), _defineProperty(_searchPrefixCls, \"&-small \".concat(searchPrefixCls, \"-button\"), {\n height: token.controlHeightSM\n }), _defineProperty(_searchPrefixCls, '&-rtl', {\n direction: 'rtl'\n }), _defineProperty(_searchPrefixCls, \"&\".concat(componentCls, \"-compact-item\"), (_$concat10 = {}, _defineProperty(_$concat10, \"&:not(\".concat(componentCls, \"-compact-last-item)\"), _defineProperty({}, \"\".concat(componentCls, \"-group-addon\"), _defineProperty({}, \"\".concat(componentCls, \"-search-button\"), {\n marginInlineEnd: -token.lineWidth,\n borderRadius: 0\n }))), _defineProperty(_$concat10, \"&:not(\".concat(componentCls, \"-compact-first-item)\"), _defineProperty({}, \"\".concat(componentCls, \",\").concat(componentCls, \"-affix-wrapper\"), {\n borderRadius: 0\n })), _defineProperty(_$concat10, \"> \".concat(componentCls, \"-group-addon \").concat(componentCls, \"-search-button,\\n > \").concat(componentCls, \",\\n \").concat(componentCls, \"-affix-wrapper\"), {\n '&:hover,&:focus,&:active': {\n zIndex: 2\n }\n }), _defineProperty(_$concat10, \"> \".concat(componentCls, \"-affix-wrapper-focused\"), {\n zIndex: 2\n }), _$concat10)), _searchPrefixCls));\n};\nexport function initInputToken(token) {\n // @ts-ignore\n return mergeToken(token, {\n inputAffixPadding: token.paddingXXS,\n inputPaddingVertical: Math.max(Math.round((token.controlHeight - token.fontSize * token.lineHeight) / 2 * 10) / 10 - token.lineWidth, 3),\n inputPaddingVerticalLG: Math.ceil((token.controlHeightLG - token.fontSizeLG * token.lineHeightLG) / 2 * 10) / 10 - token.lineWidth,\n inputPaddingVerticalSM: Math.max(Math.round((token.controlHeightSM - token.fontSize * token.lineHeight) / 2 * 10) / 10 - token.lineWidth, 0),\n inputPaddingHorizontal: token.paddingSM - token.lineWidth,\n inputPaddingHorizontalSM: token.paddingXS - token.lineWidth,\n inputPaddingHorizontalLG: token.controlPaddingHorizontal - token.lineWidth,\n inputBorderHoverColor: token.colorPrimaryHover,\n inputBorderActiveColor: token.colorPrimaryHover\n });\n}\nvar genTextAreaStyle = function genTextAreaStyle(token) {\n var _showCount, _$concat11, _affixWrapper$conc2, _textareaPrefixCls;\n var componentCls = token.componentCls,\n paddingLG = token.paddingLG;\n var textareaPrefixCls = \"\".concat(componentCls, \"-textarea\");\n return _defineProperty({}, textareaPrefixCls, (_textareaPrefixCls = {\n position: 'relative',\n '&-show-count': (_showCount = {}, _defineProperty(_showCount, \"> \".concat(componentCls), {\n height: '100%'\n }), _defineProperty(_showCount, \"\".concat(componentCls, \"-data-count\"), {\n position: 'absolute',\n bottom: -token.fontSize * token.lineHeight,\n insetInlineEnd: 0,\n color: token.colorTextDescription,\n whiteSpace: 'nowrap',\n pointerEvents: 'none'\n }), _showCount),\n '&-allow-clear': _defineProperty({}, \"> \".concat(componentCls), {\n paddingInlineEnd: paddingLG\n })\n }, _defineProperty(_textareaPrefixCls, \"&-affix-wrapper\".concat(textareaPrefixCls, \"-has-feedback\"), _defineProperty({}, \"\".concat(componentCls), {\n paddingInlineEnd: paddingLG\n })), _defineProperty(_textareaPrefixCls, \"&-affix-wrapper\".concat(componentCls, \"-affix-wrapper\"), (_affixWrapper$conc2 = {\n padding: 0\n }, _defineProperty(_affixWrapper$conc2, \"> textarea\".concat(componentCls), {\n fontSize: 'inherit',\n border: 'none',\n outline: 'none',\n '&:focus': {\n boxShadow: 'none !important'\n }\n }), _defineProperty(_affixWrapper$conc2, \"\".concat(componentCls, \"-suffix\"), (_$concat11 = {\n margin: 0,\n '> *:not(:last-child)': {\n marginInline: 0\n }\n }, _defineProperty(_$concat11, \"\".concat(componentCls, \"-clear-icon\"), {\n position: 'absolute',\n insetInlineEnd: token.paddingXS,\n insetBlockStart: token.paddingXS\n }), _defineProperty(_$concat11, \"\".concat(textareaPrefixCls, \"-suffix\"), {\n position: 'absolute',\n top: 0,\n insetInlineEnd: token.inputPaddingHorizontal,\n bottom: 0,\n zIndex: 1,\n display: 'inline-flex',\n alignItems: 'center',\n margin: 'auto',\n pointerEvents: 'none'\n }), _$concat11)), _affixWrapper$conc2)), _textareaPrefixCls));\n};\n// ============================== Export ==============================\nexport default genComponentStyleHook('Input', function (token) {\n var inputToken = initInputToken(token);\n return [genInputStyle(inputToken), genTextAreaStyle(inputToken), genAffixStyle(inputToken), genGroupStyle(inputToken), genSearchInputStyle(inputToken),\n // =====================================================\n // == Space Compact ==\n // =====================================================\n genCompactItemStyle(inputToken)];\n});","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { genBasicInputStyle, genInputSmallStyle, initInputToken } from '../../input/style';\nimport { genFocusOutline, genFocusStyle, resetComponent } from '../../style';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nvar genPaginationDisabledStyle = function genPaginationDisabledStyle(token) {\n var _$concat$concat, _$concat2, _ref;\n var componentCls = token.componentCls;\n return _ref = {}, _defineProperty(_ref, \"\".concat(componentCls, \"-disabled\"), {\n '&, &:hover': _defineProperty({\n cursor: 'not-allowed'\n }, \"\".concat(componentCls, \"-item-link\"), {\n color: token.colorTextDisabled,\n cursor: 'not-allowed'\n }),\n '&:focus-visible': _defineProperty({\n cursor: 'not-allowed'\n }, \"\".concat(componentCls, \"-item-link\"), {\n color: token.colorTextDisabled,\n cursor: 'not-allowed'\n })\n }), _defineProperty(_ref, \"&\".concat(componentCls, \"-disabled\"), (_$concat2 = {\n cursor: 'not-allowed'\n }, _defineProperty(_$concat2, \"\".concat(componentCls, \"-item\"), {\n cursor: 'not-allowed',\n '&:hover, &:active': {\n backgroundColor: 'transparent'\n },\n a: {\n color: token.colorTextDisabled,\n backgroundColor: 'transparent',\n border: 'none',\n cursor: 'not-allowed'\n },\n '&-active': {\n borderColor: token.colorBorder,\n backgroundColor: token.itemActiveBgDisabled,\n '&:hover, &:active': {\n backgroundColor: token.itemActiveBgDisabled\n },\n a: {\n color: token.itemActiveColorDisabled\n }\n }\n }), _defineProperty(_$concat2, \"\".concat(componentCls, \"-item-link\"), _defineProperty({\n color: token.colorTextDisabled,\n cursor: 'not-allowed',\n '&:hover, &:active': {\n backgroundColor: 'transparent'\n }\n }, \"\".concat(componentCls, \"-simple&\"), {\n backgroundColor: 'transparent',\n '&:hover, &:active': {\n backgroundColor: 'transparent'\n }\n })), _defineProperty(_$concat2, \"\".concat(componentCls, \"-simple-pager\"), {\n color: token.colorTextDisabled\n }), _defineProperty(_$concat2, \"\".concat(componentCls, \"-jump-prev, \").concat(componentCls, \"-jump-next\"), (_$concat$concat = {}, _defineProperty(_$concat$concat, \"\".concat(componentCls, \"-item-link-icon\"), {\n opacity: 0\n }), _defineProperty(_$concat$concat, \"\".concat(componentCls, \"-item-ellipsis\"), {\n opacity: 1\n }), _$concat$concat)), _$concat2)), _defineProperty(_ref, \"&\".concat(componentCls, \"-simple\"), _defineProperty({}, \"\".concat(componentCls, \"-prev, \").concat(componentCls, \"-next\"), _defineProperty({}, \"&\".concat(componentCls, \"-disabled \").concat(componentCls, \"-item-link\"), {\n '&:hover, &:active': {\n backgroundColor: 'transparent'\n }\n }))), _ref;\n};\nvar genPaginationMiniStyle = function genPaginationMiniStyle(token) {\n var _$concat$concat3, _$concat$concat5, _ref2;\n var componentCls = token.componentCls;\n return _ref2 = {}, _defineProperty(_ref2, \"&\".concat(componentCls, \"-mini \").concat(componentCls, \"-total-text, &\").concat(componentCls, \"-mini \").concat(componentCls, \"-simple-pager\"), {\n height: token.itemSizeSM,\n lineHeight: \"\".concat(token.itemSizeSM, \"px\")\n }), _defineProperty(_ref2, \"&\".concat(componentCls, \"-mini \").concat(componentCls, \"-item\"), {\n minWidth: token.itemSizeSM,\n height: token.itemSizeSM,\n margin: 0,\n lineHeight: \"\".concat(token.itemSizeSM - 2, \"px\")\n }), _defineProperty(_ref2, \"&\".concat(componentCls, \"-mini:not(\").concat(componentCls, \"-disabled) \").concat(componentCls, \"-item:not(\").concat(componentCls, \"-item-active)\"), {\n backgroundColor: 'transparent',\n borderColor: 'transparent',\n '&:hover': {\n backgroundColor: token.colorBgTextHover\n },\n '&:active': {\n backgroundColor: token.colorBgTextActive\n }\n }), _defineProperty(_ref2, \"&\".concat(componentCls, \"-mini \").concat(componentCls, \"-prev, &\").concat(componentCls, \"-mini \").concat(componentCls, \"-next\"), {\n minWidth: token.itemSizeSM,\n height: token.itemSizeSM,\n margin: 0,\n lineHeight: \"\".concat(token.itemSizeSM, \"px\")\n }), _defineProperty(_ref2, \"&\".concat(componentCls, \"-mini:not(\").concat(componentCls, \"-disabled)\"), _defineProperty({}, \"\".concat(componentCls, \"-prev, \").concat(componentCls, \"-next\"), (_$concat$concat3 = {}, _defineProperty(_$concat$concat3, \"&:hover \".concat(componentCls, \"-item-link\"), {\n backgroundColor: token.colorBgTextHover\n }), _defineProperty(_$concat$concat3, \"&:active \".concat(componentCls, \"-item-link\"), {\n backgroundColor: token.colorBgTextActive\n }), _defineProperty(_$concat$concat3, \"&\".concat(componentCls, \"-disabled:hover \").concat(componentCls, \"-item-link\"), {\n backgroundColor: 'transparent'\n }), _$concat$concat3))), _defineProperty(_ref2, \"\\n &\".concat(componentCls, \"-mini \").concat(componentCls, \"-prev \").concat(componentCls, \"-item-link,\\n &\").concat(componentCls, \"-mini \").concat(componentCls, \"-next \").concat(componentCls, \"-item-link\\n \"), {\n backgroundColor: 'transparent',\n borderColor: 'transparent',\n '&::after': {\n height: token.itemSizeSM,\n lineHeight: \"\".concat(token.itemSizeSM, \"px\")\n }\n }), _defineProperty(_ref2, \"&\".concat(componentCls, \"-mini \").concat(componentCls, \"-jump-prev, &\").concat(componentCls, \"-mini \").concat(componentCls, \"-jump-next\"), {\n height: token.itemSizeSM,\n marginInlineEnd: 0,\n lineHeight: \"\".concat(token.itemSizeSM, \"px\")\n }), _defineProperty(_ref2, \"&\".concat(componentCls, \"-mini \").concat(componentCls, \"-options\"), (_$concat$concat5 = {\n marginInlineStart: token.paginationMiniOptionsMarginInlineStart\n }, _defineProperty(_$concat$concat5, \"&-size-changer\", {\n top: token.miniOptionsSizeChangerTop\n }), _defineProperty(_$concat$concat5, \"&-quick-jumper\", {\n height: token.itemSizeSM,\n lineHeight: \"\".concat(token.itemSizeSM, \"px\"),\n input: Object.assign(Object.assign({}, genInputSmallStyle(token)), {\n width: token.paginationMiniQuickJumperInputWidth,\n height: token.controlHeightSM\n })\n }), _$concat$concat5)), _ref2;\n};\nvar genPaginationSimpleStyle = function genPaginationSimpleStyle(token) {\n var _ref3;\n var componentCls = token.componentCls;\n return _ref3 = {}, _defineProperty(_ref3, \"\\n &\".concat(componentCls, \"-simple \").concat(componentCls, \"-prev,\\n &\").concat(componentCls, \"-simple \").concat(componentCls, \"-next\\n \"), _defineProperty({\n height: token.itemSizeSM,\n lineHeight: \"\".concat(token.itemSizeSM, \"px\"),\n verticalAlign: 'top'\n }, \"\".concat(componentCls, \"-item-link\"), {\n height: token.itemSizeSM,\n backgroundColor: 'transparent',\n border: 0,\n '&:hover': {\n backgroundColor: token.colorBgTextHover\n },\n '&:active': {\n backgroundColor: token.colorBgTextActive\n },\n '&::after': {\n height: token.itemSizeSM,\n lineHeight: \"\".concat(token.itemSizeSM, \"px\")\n }\n })), _defineProperty(_ref3, \"&\".concat(componentCls, \"-simple \").concat(componentCls, \"-simple-pager\"), {\n display: 'inline-block',\n height: token.itemSizeSM,\n marginInlineEnd: token.marginXS,\n input: {\n boxSizing: 'border-box',\n height: '100%',\n marginInlineEnd: token.marginXS,\n padding: \"0 \".concat(token.paginationItemPaddingInline, \"px\"),\n textAlign: 'center',\n backgroundColor: token.itemInputBg,\n border: \"\".concat(token.lineWidth, \"px \").concat(token.lineType, \" \").concat(token.colorBorder),\n borderRadius: token.borderRadius,\n outline: 'none',\n transition: \"border-color \".concat(token.motionDurationMid),\n color: 'inherit',\n '&:hover': {\n borderColor: token.colorPrimary\n },\n '&:focus': {\n borderColor: token.colorPrimaryHover,\n boxShadow: \"\".concat(token.inputOutlineOffset, \"px 0 \").concat(token.controlOutlineWidth, \"px \").concat(token.controlOutline)\n },\n '&[disabled]': {\n color: token.colorTextDisabled,\n backgroundColor: token.colorBgContainerDisabled,\n borderColor: token.colorBorder,\n cursor: 'not-allowed'\n }\n }\n }), _ref3;\n};\nvar genPaginationJumpStyle = function genPaginationJumpStyle(token) {\n var _$concat4, _hover2, _$concat$concat7, _$concat$concat8, _ref4;\n var componentCls = token.componentCls;\n return _ref4 = {}, _defineProperty(_ref4, \"\".concat(componentCls, \"-jump-prev, \").concat(componentCls, \"-jump-next\"), (_$concat$concat7 = {\n outline: 0\n }, _defineProperty(_$concat$concat7, \"\".concat(componentCls, \"-item-container\"), (_$concat4 = {\n position: 'relative'\n }, _defineProperty(_$concat4, \"\".concat(componentCls, \"-item-link-icon\"), {\n color: token.colorPrimary,\n fontSize: token.fontSizeSM,\n opacity: 0,\n transition: \"all \".concat(token.motionDurationMid),\n '&-svg': {\n top: 0,\n insetInlineEnd: 0,\n bottom: 0,\n insetInlineStart: 0,\n margin: 'auto'\n }\n }), _defineProperty(_$concat4, \"\".concat(componentCls, \"-item-ellipsis\"), {\n position: 'absolute',\n top: 0,\n insetInlineEnd: 0,\n bottom: 0,\n insetInlineStart: 0,\n display: 'block',\n margin: 'auto',\n color: token.colorTextDisabled,\n fontFamily: 'Arial, Helvetica, sans-serif',\n letterSpacing: token.paginationEllipsisLetterSpacing,\n textAlign: 'center',\n textIndent: token.paginationEllipsisTextIndent,\n opacity: 1,\n transition: \"all \".concat(token.motionDurationMid)\n }), _$concat4)), _defineProperty(_$concat$concat7, '&:hover', (_hover2 = {}, _defineProperty(_hover2, \"\".concat(componentCls, \"-item-link-icon\"), {\n opacity: 1\n }), _defineProperty(_hover2, \"\".concat(componentCls, \"-item-ellipsis\"), {\n opacity: 0\n }), _hover2)), _$concat$concat7)), _defineProperty(_ref4, \"\\n \".concat(componentCls, \"-prev,\\n \").concat(componentCls, \"-jump-prev,\\n \").concat(componentCls, \"-jump-next\\n \"), {\n marginInlineEnd: token.marginXS\n }), _defineProperty(_ref4, \"\\n \".concat(componentCls, \"-prev,\\n \").concat(componentCls, \"-next,\\n \").concat(componentCls, \"-jump-prev,\\n \").concat(componentCls, \"-jump-next\\n \"), {\n display: 'inline-block',\n minWidth: token.itemSize,\n height: token.itemSize,\n color: token.colorText,\n fontFamily: token.fontFamily,\n lineHeight: \"\".concat(token.itemSize, \"px\"),\n textAlign: 'center',\n verticalAlign: 'middle',\n listStyle: 'none',\n borderRadius: token.borderRadius,\n cursor: 'pointer',\n transition: \"all \".concat(token.motionDurationMid)\n }), _defineProperty(_ref4, \"\".concat(componentCls, \"-prev, \").concat(componentCls, \"-next\"), (_$concat$concat8 = {\n fontFamily: 'Arial, Helvetica, sans-serif',\n outline: 0,\n button: {\n color: token.colorText,\n cursor: 'pointer',\n userSelect: 'none'\n }\n }, _defineProperty(_$concat$concat8, \"\".concat(componentCls, \"-item-link\"), {\n display: 'block',\n width: '100%',\n height: '100%',\n padding: 0,\n fontSize: token.fontSizeSM,\n textAlign: 'center',\n backgroundColor: 'transparent',\n border: \"\".concat(token.lineWidth, \"px \").concat(token.lineType, \" transparent\"),\n borderRadius: token.borderRadius,\n outline: 'none',\n transition: \"all \".concat(token.motionDurationMid)\n }), _defineProperty(_$concat$concat8, \"&:hover \".concat(componentCls, \"-item-link\"), {\n backgroundColor: token.colorBgTextHover\n }), _defineProperty(_$concat$concat8, \"&:active \".concat(componentCls, \"-item-link\"), {\n backgroundColor: token.colorBgTextActive\n }), _defineProperty(_$concat$concat8, \"&\".concat(componentCls, \"-disabled:hover\"), _defineProperty({}, \"\".concat(componentCls, \"-item-link\"), {\n backgroundColor: 'transparent'\n })), _$concat$concat8)), _defineProperty(_ref4, \"\".concat(componentCls, \"-slash\"), {\n marginInlineEnd: token.paginationSlashMarginInlineEnd,\n marginInlineStart: token.paginationSlashMarginInlineStart\n }), _defineProperty(_ref4, \"\".concat(componentCls, \"-options\"), {\n display: 'inline-block',\n marginInlineStart: token.margin,\n verticalAlign: 'middle',\n '&-size-changer.-select': {\n display: 'inline-block',\n width: 'auto'\n },\n '&-quick-jumper': {\n display: 'inline-block',\n height: token.controlHeight,\n marginInlineStart: token.marginXS,\n lineHeight: \"\".concat(token.controlHeight, \"px\"),\n verticalAlign: 'top',\n input: Object.assign(Object.assign({}, genBasicInputStyle(token)), {\n width: token.controlHeightLG * 1.25,\n height: token.controlHeight,\n boxSizing: 'border-box',\n margin: 0,\n marginInlineStart: token.marginXS,\n marginInlineEnd: token.marginXS\n })\n }\n }), _ref4;\n};\nvar genPaginationItemStyle = function genPaginationItemStyle(token) {\n var _$concat6;\n var componentCls = token.componentCls;\n return _defineProperty({}, \"\".concat(componentCls, \"-item\"), (_$concat6 = {\n display: 'inline-block',\n minWidth: token.itemSize,\n height: token.itemSize,\n marginInlineEnd: token.marginXS,\n fontFamily: token.fontFamily,\n lineHeight: \"\".concat(token.itemSize - 2, \"px\"),\n textAlign: 'center',\n verticalAlign: 'middle',\n listStyle: 'none',\n backgroundColor: 'transparent',\n border: \"\".concat(token.lineWidth, \"px \").concat(token.lineType, \" transparent\"),\n borderRadius: token.borderRadius,\n outline: 0,\n cursor: 'pointer',\n userSelect: 'none',\n a: {\n display: 'block',\n padding: \"0 \".concat(token.paginationItemPaddingInline, \"px\"),\n color: token.colorText,\n '&:hover': {\n textDecoration: 'none'\n }\n }\n }, _defineProperty(_$concat6, \"&:not(\".concat(componentCls, \"-item-active)\"), {\n '&:hover': {\n transition: \"all \".concat(token.motionDurationMid),\n backgroundColor: token.colorBgTextHover\n },\n '&:active': {\n backgroundColor: token.colorBgTextActive\n }\n }), _defineProperty(_$concat6, '&-active', {\n fontWeight: token.fontWeightStrong,\n backgroundColor: token.itemActiveBg,\n borderColor: token.colorPrimary,\n a: {\n color: token.colorPrimary\n },\n '&:hover': {\n borderColor: token.colorPrimaryHover\n },\n '&:hover a': {\n color: token.colorPrimaryHover\n }\n }), _$concat6));\n};\nvar genPaginationStyle = function genPaginationStyle(token) {\n var _Object$assign2, _ref6;\n var componentCls = token.componentCls;\n return _ref6 = {}, _defineProperty(_ref6, componentCls, Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, resetComponent(token)), _defineProperty({\n 'ul, ol': {\n margin: 0,\n padding: 0,\n listStyle: 'none'\n },\n '&::after': {\n display: 'block',\n clear: 'both',\n height: 0,\n overflow: 'hidden',\n visibility: 'hidden',\n content: '\"\"'\n }\n }, \"\".concat(componentCls, \"-total-text\"), {\n display: 'inline-block',\n height: token.itemSize,\n marginInlineEnd: token.marginXS,\n lineHeight: \"\".concat(token.itemSize - 2, \"px\"),\n verticalAlign: 'middle'\n })), genPaginationItemStyle(token)), genPaginationJumpStyle(token)), genPaginationSimpleStyle(token)), genPaginationMiniStyle(token)), genPaginationDisabledStyle(token)), (_Object$assign2 = {}, _defineProperty(_Object$assign2, \"@media only screen and (max-width: \".concat(token.screenLG, \"px)\"), _defineProperty({}, \"\".concat(componentCls, \"-item\"), {\n '&-after-jump-prev, &-before-jump-next': {\n display: 'none'\n }\n })), _defineProperty(_Object$assign2, \"@media only screen and (max-width: \".concat(token.screenSM, \"px)\"), _defineProperty({}, \"\".concat(componentCls, \"-options\"), {\n display: 'none'\n })), _Object$assign2))), _defineProperty(_ref6, \"&\".concat(token.componentCls, \"-rtl\"), {\n direction: 'rtl'\n }), _ref6;\n};\nvar genBorderedStyle = function genBorderedStyle(token) {\n var _$concat$concat9, _$concat$concat$conca, _$concat$concat11, _$concat8, _$concat$concat12, _ref7;\n var componentCls = token.componentCls;\n return _ref7 = {}, _defineProperty(_ref7, \"\".concat(componentCls).concat(componentCls, \"-disabled:not(\").concat(componentCls, \"-mini)\"), (_$concat$concat$conca = {\n '&, &:hover': _defineProperty({}, \"\".concat(componentCls, \"-item-link\"), {\n borderColor: token.colorBorder\n }),\n '&:focus-visible': _defineProperty({}, \"\".concat(componentCls, \"-item-link\"), {\n borderColor: token.colorBorder\n })\n }, _defineProperty(_$concat$concat$conca, \"\".concat(componentCls, \"-item, \").concat(componentCls, \"-item-link\"), (_$concat$concat9 = {\n backgroundColor: token.colorBgContainerDisabled,\n borderColor: token.colorBorder\n }, _defineProperty(_$concat$concat9, \"&:hover:not(\".concat(componentCls, \"-item-active)\"), {\n backgroundColor: token.colorBgContainerDisabled,\n borderColor: token.colorBorder,\n a: {\n color: token.colorTextDisabled\n }\n }), _defineProperty(_$concat$concat9, \"&\".concat(componentCls, \"-item-active\"), {\n backgroundColor: token.itemActiveBgDisabled\n }), _$concat$concat9)), _defineProperty(_$concat$concat$conca, \"\".concat(componentCls, \"-prev, \").concat(componentCls, \"-next\"), _defineProperty({\n '&:hover button': {\n backgroundColor: token.colorBgContainerDisabled,\n borderColor: token.colorBorder,\n color: token.colorTextDisabled\n }\n }, \"\".concat(componentCls, \"-item-link\"), {\n backgroundColor: token.colorBgContainerDisabled,\n borderColor: token.colorBorder\n })), _$concat$concat$conca)), _defineProperty(_ref7, \"\".concat(componentCls, \":not(\").concat(componentCls, \"-mini)\"), (_$concat$concat12 = {}, _defineProperty(_$concat$concat12, \"\".concat(componentCls, \"-prev, \").concat(componentCls, \"-next\"), (_$concat$concat11 = {\n '&:hover button': {\n borderColor: token.colorPrimaryHover,\n backgroundColor: token.itemBg\n }\n }, _defineProperty(_$concat$concat11, \"\".concat(componentCls, \"-item-link\"), {\n backgroundColor: token.itemLinkBg,\n borderColor: token.colorBorder\n }), _defineProperty(_$concat$concat11, \"&:hover \".concat(componentCls, \"-item-link\"), {\n borderColor: token.colorPrimary,\n backgroundColor: token.itemBg,\n color: token.colorPrimary\n }), _defineProperty(_$concat$concat11, \"&\".concat(componentCls, \"-disabled\"), _defineProperty({}, \"\".concat(componentCls, \"-item-link\"), {\n borderColor: token.colorBorder,\n color: token.colorTextDisabled\n })), _$concat$concat11)), _defineProperty(_$concat$concat12, \"\".concat(componentCls, \"-item\"), (_$concat8 = {\n backgroundColor: token.itemBg,\n border: \"\".concat(token.lineWidth, \"px \").concat(token.lineType, \" \").concat(token.colorBorder)\n }, _defineProperty(_$concat8, \"&:hover:not(\".concat(componentCls, \"-item-active)\"), {\n borderColor: token.colorPrimary,\n backgroundColor: token.itemBg,\n a: {\n color: token.colorPrimary\n }\n }), _defineProperty(_$concat8, '&-active', {\n borderColor: token.colorPrimary\n }), _$concat8)), _$concat$concat12)), _ref7;\n};\nvar genPaginationFocusStyle = function genPaginationFocusStyle(token) {\n var _Object$assign3, _$concat$concat14;\n var componentCls = token.componentCls;\n return _defineProperty({}, \"\".concat(componentCls, \":not(\").concat(componentCls, \"-disabled)\"), (_$concat$concat14 = {}, _defineProperty(_$concat$concat14, \"\".concat(componentCls, \"-item\"), Object.assign({}, genFocusStyle(token))), _defineProperty(_$concat$concat14, \"\".concat(componentCls, \"-jump-prev, \").concat(componentCls, \"-jump-next\"), {\n '&:focus-visible': Object.assign((_Object$assign3 = {}, _defineProperty(_Object$assign3, \"\".concat(componentCls, \"-item-link-icon\"), {\n opacity: 1\n }), _defineProperty(_Object$assign3, \"\".concat(componentCls, \"-item-ellipsis\"), {\n opacity: 0\n }), _Object$assign3), genFocusOutline(token))\n }), _defineProperty(_$concat$concat14, \"\".concat(componentCls, \"-prev, \").concat(componentCls, \"-next\"), _defineProperty({}, \"&:focus-visible \".concat(componentCls, \"-item-link\"), Object.assign({}, genFocusOutline(token)))), _$concat$concat14));\n};\n// ============================== Export ==============================\nexport default genComponentStyleHook('Pagination', function (token) {\n var paginationToken = mergeToken(token, {\n inputOutlineOffset: 0,\n paginationMiniOptionsMarginInlineStart: token.marginXXS / 2,\n paginationMiniQuickJumperInputWidth: token.controlHeightLG * 1.1,\n paginationItemPaddingInline: token.marginXXS * 1.5,\n paginationEllipsisLetterSpacing: token.marginXXS / 2,\n paginationSlashMarginInlineStart: token.marginXXS,\n paginationSlashMarginInlineEnd: token.marginSM,\n paginationEllipsisTextIndent: '0.13em' // magic for ui experience\n }, initInputToken(token));\n return [genPaginationStyle(paginationToken), genPaginationFocusStyle(paginationToken), token.wireframe && genBorderedStyle(paginationToken)];\n}, function (token) {\n return {\n itemBg: token.colorBgContainer,\n itemSize: token.controlHeight,\n itemSizeSM: token.controlHeightSM,\n itemActiveBg: token.colorBgContainer,\n itemLinkBg: token.colorBgContainer,\n itemActiveColorDisabled: token.colorTextDisabled,\n itemActiveBgDisabled: token.controlItemBgActiveDisabled,\n itemInputBg: token.colorBgContainer,\n miniOptionsSizeChangerTop: 0\n };\n});","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport DoubleLeftOutlined from \"@ant-design/icons/es/icons/DoubleLeftOutlined\";\nimport DoubleRightOutlined from \"@ant-design/icons/es/icons/DoubleRightOutlined\";\nimport LeftOutlined from \"@ant-design/icons/es/icons/LeftOutlined\";\nimport RightOutlined from \"@ant-design/icons/es/icons/RightOutlined\";\nimport classNames from 'classnames';\nimport RcPagination from 'rc-pagination';\nimport enUS from \"rc-pagination/es/locale/en_US\";\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport useSize from '../config-provider/hooks/useSize';\nimport useBreakpoint from '../grid/hooks/useBreakpoint';\nimport { useLocale } from '../locale';\nimport { MiddleSelect, MiniSelect } from './Select';\nimport useStyle from './style';\nvar Pagination = function Pagination(props) {\n var _classNames;\n var customizePrefixCls = props.prefixCls,\n customizeSelectPrefixCls = props.selectPrefixCls,\n className = props.className,\n rootClassName = props.rootClassName,\n style = props.style,\n customizeSize = props.size,\n customLocale = props.locale,\n selectComponentClass = props.selectComponentClass,\n responsive = props.responsive,\n showSizeChanger = props.showSizeChanger,\n restProps = __rest(props, [\"prefixCls\", \"selectPrefixCls\", \"className\", \"rootClassName\", \"style\", \"size\", \"locale\", \"selectComponentClass\", \"responsive\", \"showSizeChanger\"]);\n var _useBreakpoint = useBreakpoint(responsive),\n xs = _useBreakpoint.xs;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction,\n _React$useContext$pag = _React$useContext.pagination,\n pagination = _React$useContext$pag === void 0 ? {} : _React$useContext$pag;\n var prefixCls = getPrefixCls('pagination', customizePrefixCls);\n // Style\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n var mergedShowSizeChanger = showSizeChanger !== null && showSizeChanger !== void 0 ? showSizeChanger : pagination.showSizeChanger;\n var iconsProps = React.useMemo(function () {\n var ellipsis = /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-item-ellipsis\")\n }, \"\\u2022\\u2022\\u2022\");\n var prevIcon = /*#__PURE__*/React.createElement(\"button\", {\n className: \"\".concat(prefixCls, \"-item-link\"),\n type: \"button\",\n tabIndex: -1\n }, direction === 'rtl' ? /*#__PURE__*/React.createElement(RightOutlined, null) : /*#__PURE__*/React.createElement(LeftOutlined, null));\n var nextIcon = /*#__PURE__*/React.createElement(\"button\", {\n className: \"\".concat(prefixCls, \"-item-link\"),\n type: \"button\",\n tabIndex: -1\n }, direction === 'rtl' ? /*#__PURE__*/React.createElement(LeftOutlined, null) : /*#__PURE__*/React.createElement(RightOutlined, null));\n var jumpPrevIcon = /*#__PURE__*/React.createElement(\"a\", {\n className: \"\".concat(prefixCls, \"-item-link\")\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-item-container\")\n }, direction === 'rtl' ? /*#__PURE__*/React.createElement(DoubleRightOutlined, {\n className: \"\".concat(prefixCls, \"-item-link-icon\")\n }) : /*#__PURE__*/React.createElement(DoubleLeftOutlined, {\n className: \"\".concat(prefixCls, \"-item-link-icon\")\n }), ellipsis));\n var jumpNextIcon = /*#__PURE__*/React.createElement(\"a\", {\n className: \"\".concat(prefixCls, \"-item-link\")\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-item-container\")\n }, direction === 'rtl' ? /*#__PURE__*/React.createElement(DoubleLeftOutlined, {\n className: \"\".concat(prefixCls, \"-item-link-icon\")\n }) : /*#__PURE__*/React.createElement(DoubleRightOutlined, {\n className: \"\".concat(prefixCls, \"-item-link-icon\")\n }), ellipsis));\n return {\n prevIcon: prevIcon,\n nextIcon: nextIcon,\n jumpPrevIcon: jumpPrevIcon,\n jumpNextIcon: jumpNextIcon\n };\n }, [direction, prefixCls]);\n var _useLocale = useLocale('Pagination', enUS),\n _useLocale2 = _slicedToArray(_useLocale, 1),\n contextLocale = _useLocale2[0];\n var locale = Object.assign(Object.assign({}, contextLocale), customLocale);\n var mergedSize = useSize(customizeSize);\n var isSmall = mergedSize === 'small' || !!(xs && !mergedSize && responsive);\n var selectPrefixCls = getPrefixCls('select', customizeSelectPrefixCls);\n var extendedClassName = classNames((_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-mini\"), isSmall), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _classNames), pagination === null || pagination === void 0 ? void 0 : pagination.className, className, rootClassName, hashId);\n var mergedStyle = Object.assign(Object.assign({}, pagination === null || pagination === void 0 ? void 0 : pagination.style), style);\n return wrapSSR( /*#__PURE__*/React.createElement(RcPagination, Object.assign({}, iconsProps, restProps, {\n style: mergedStyle,\n prefixCls: prefixCls,\n selectPrefixCls: selectPrefixCls,\n className: extendedClassName,\n selectComponentClass: selectComponentClass || (isSmall ? MiniSelect : MiddleSelect),\n locale: locale,\n showSizeChanger: mergedShowSizeChanger\n })));\n};\nif (process.env.NODE_ENV !== 'production') {\n Pagination.displayName = 'Pagination';\n}\nexport default Pagination;","'use client';\n\nimport Pagination from './Pagination';\nexport default Pagination;","/* eslint-disable no-undefined,no-param-reassign,no-shadow */\n\n/**\n * Throttle execution of a function. Especially useful for rate limiting\n * execution of handlers on events like resize and scroll.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher)\n * are most useful.\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through,\n * as-is, to `callback` when the throttled-function is executed.\n * @param {object} [options] - An object to configure options.\n * @param {boolean} [options.noTrailing] - Optional, defaults to false. If noTrailing is true, callback will only execute every `delay` milliseconds\n * while the throttled-function is being called. If noTrailing is false or unspecified, callback will be executed\n * one final time after the last throttled-function call. (After the throttled-function has not been called for\n * `delay` milliseconds, the internal counter is reset).\n * @param {boolean} [options.noLeading] - Optional, defaults to false. If noLeading is false, the first throttled-function call will execute callback\n * immediately. If noLeading is true, the first the callback execution will be skipped. It should be noted that\n * callback will never executed if both noLeading = true and noTrailing = true.\n * @param {boolean} [options.debounceMode] - If `debounceMode` is true (at begin), schedule `clear` to execute after `delay` ms. If `debounceMode` is\n * false (at end), schedule `callback` to execute after `delay` ms.\n *\n * @returns {Function} A new, throttled, function.\n */\nfunction throttle(delay, callback, options) {\n var _ref = options || {},\n _ref$noTrailing = _ref.noTrailing,\n noTrailing = _ref$noTrailing === void 0 ? false : _ref$noTrailing,\n _ref$noLeading = _ref.noLeading,\n noLeading = _ref$noLeading === void 0 ? false : _ref$noLeading,\n _ref$debounceMode = _ref.debounceMode,\n debounceMode = _ref$debounceMode === void 0 ? undefined : _ref$debounceMode;\n /*\n * After wrapper has stopped being called, this timeout ensures that\n * `callback` is executed at the proper times in `throttle` and `end`\n * debounce modes.\n */\n\n var timeoutID;\n var cancelled = false; // Keep track of the last time `callback` was executed.\n\n var lastExec = 0; // Function to clear existing timeout\n\n function clearExistingTimeout() {\n if (timeoutID) {\n clearTimeout(timeoutID);\n }\n } // Function to cancel next exec\n\n function cancel(options) {\n var _ref2 = options || {},\n _ref2$upcomingOnly = _ref2.upcomingOnly,\n upcomingOnly = _ref2$upcomingOnly === void 0 ? false : _ref2$upcomingOnly;\n clearExistingTimeout();\n cancelled = !upcomingOnly;\n }\n /*\n * The `wrapper` function encapsulates all of the throttling / debouncing\n * functionality and when executed will limit the rate at which `callback`\n * is executed.\n */\n\n function wrapper() {\n for (var _len = arguments.length, arguments_ = new Array(_len), _key = 0; _key < _len; _key++) {\n arguments_[_key] = arguments[_key];\n }\n var self = this;\n var elapsed = Date.now() - lastExec;\n if (cancelled) {\n return;\n } // Execute `callback` and update the `lastExec` timestamp.\n\n function exec() {\n lastExec = Date.now();\n callback.apply(self, arguments_);\n }\n /*\n * If `debounceMode` is true (at begin) this is used to clear the flag\n * to allow future `callback` executions.\n */\n\n function clear() {\n timeoutID = undefined;\n }\n if (!noLeading && debounceMode && !timeoutID) {\n /*\n * Since `wrapper` is being called for the first time and\n * `debounceMode` is true (at begin), execute `callback`\n * and noLeading != true.\n */\n exec();\n }\n clearExistingTimeout();\n if (debounceMode === undefined && elapsed > delay) {\n if (noLeading) {\n /*\n * In throttle mode with noLeading, if `delay` time has\n * been exceeded, update `lastExec` and schedule `callback`\n * to execute after `delay` ms.\n */\n lastExec = Date.now();\n if (!noTrailing) {\n timeoutID = setTimeout(debounceMode ? clear : exec, delay);\n }\n } else {\n /*\n * In throttle mode without noLeading, if `delay` time has been exceeded, execute\n * `callback`.\n */\n exec();\n }\n } else if (noTrailing !== true) {\n /*\n * In trailing throttle mode, since `delay` time has not been\n * exceeded, schedule `callback` to execute `delay` ms after most\n * recent execution.\n *\n * If `debounceMode` is true (at begin), schedule `clear` to execute\n * after `delay` ms.\n *\n * If `debounceMode` is false (at end), schedule `callback` to\n * execute after `delay` ms.\n */\n timeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === undefined ? delay - elapsed : delay);\n }\n }\n wrapper.cancel = cancel; // Return the wrapper function.\n\n return wrapper;\n}\n\n/* eslint-disable no-undefined */\n/**\n * Debounce execution of a function. Debouncing, unlike throttling,\n * guarantees that a function is only executed a single time, either at the\n * very beginning of a series of calls, or at the very end.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n * to `callback` when the debounced-function is executed.\n * @param {object} [options] - An object to configure options.\n * @param {boolean} [options.atBegin] - Optional, defaults to false. If atBegin is false or unspecified, callback will only be executed `delay` milliseconds\n * after the last debounced-function call. If atBegin is true, callback will be executed only at the first debounced-function call.\n * (After the throttled-function has not been called for `delay` milliseconds, the internal counter is reset).\n *\n * @returns {Function} A new, debounced function.\n */\n\nfunction debounce(delay, callback, options) {\n var _ref = options || {},\n _ref$atBegin = _ref.atBegin,\n atBegin = _ref$atBegin === void 0 ? false : _ref$atBegin;\n return throttle(delay, callback, {\n debounceMode: atBegin !== false\n });\n}\nexport { debounce, throttle };","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { Keyframes } from '@ant-design/cssinjs';\nimport { resetComponent } from '../../style';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nvar antSpinMove = new Keyframes('antSpinMove', {\n to: {\n opacity: 1\n }\n});\nvar antRotate = new Keyframes('antRotate', {\n to: {\n transform: 'rotate(405deg)'\n }\n});\nvar genSpinStyle = function genSpinStyle(token) {\n var _sm, _lg, _div$concat, _nestedLoading, _Object$assign;\n return _defineProperty({}, \"\".concat(token.componentCls), Object.assign(Object.assign({}, resetComponent(token)), (_Object$assign = {\n position: 'absolute',\n display: 'none',\n color: token.colorPrimary,\n fontSize: 0,\n textAlign: 'center',\n verticalAlign: 'middle',\n opacity: 0,\n transition: \"transform \".concat(token.motionDurationSlow, \" \").concat(token.motionEaseInOutCirc),\n '&-spinning': {\n position: 'static',\n display: 'inline-block',\n opacity: 1\n },\n '&-nested-loading': (_nestedLoading = {\n position: 'relative'\n }, _defineProperty(_nestedLoading, \"> div > \".concat(token.componentCls), (_div$concat = {\n position: 'absolute',\n top: 0,\n insetInlineStart: 0,\n zIndex: 4,\n display: 'block',\n width: '100%',\n height: '100%',\n maxHeight: token.contentHeight\n }, _defineProperty(_div$concat, \"\".concat(token.componentCls, \"-dot\"), {\n position: 'absolute',\n top: '50%',\n insetInlineStart: '50%',\n margin: -token.spinDotSize / 2\n }), _defineProperty(_div$concat, \"\".concat(token.componentCls, \"-text\"), {\n position: 'absolute',\n top: '50%',\n width: '100%',\n paddingTop: (token.spinDotSize - token.fontSize) / 2 + 2,\n textShadow: \"0 1px 2px \".concat(token.colorBgContainer),\n fontSize: token.fontSize\n }), _defineProperty(_div$concat, \"&\".concat(token.componentCls, \"-show-text \").concat(token.componentCls, \"-dot\"), {\n marginTop: -(token.spinDotSize / 2) - 10\n }), _defineProperty(_div$concat, '&-sm', (_sm = {}, _defineProperty(_sm, \"\".concat(token.componentCls, \"-dot\"), {\n margin: -token.spinDotSizeSM / 2\n }), _defineProperty(_sm, \"\".concat(token.componentCls, \"-text\"), {\n paddingTop: (token.spinDotSizeSM - token.fontSize) / 2 + 2\n }), _defineProperty(_sm, \"&\".concat(token.componentCls, \"-show-text \").concat(token.componentCls, \"-dot\"), {\n marginTop: -(token.spinDotSizeSM / 2) - 10\n }), _sm)), _defineProperty(_div$concat, '&-lg', (_lg = {}, _defineProperty(_lg, \"\".concat(token.componentCls, \"-dot\"), {\n margin: -(token.spinDotSizeLG / 2)\n }), _defineProperty(_lg, \"\".concat(token.componentCls, \"-text\"), {\n paddingTop: (token.spinDotSizeLG - token.fontSize) / 2 + 2\n }), _defineProperty(_lg, \"&\".concat(token.componentCls, \"-show-text \").concat(token.componentCls, \"-dot\"), {\n marginTop: -(token.spinDotSizeLG / 2) - 10\n }), _lg)), _div$concat)), _defineProperty(_nestedLoading, \"\".concat(token.componentCls, \"-container\"), {\n position: 'relative',\n transition: \"opacity \".concat(token.motionDurationSlow),\n '&::after': {\n position: 'absolute',\n top: 0,\n insetInlineEnd: 0,\n bottom: 0,\n insetInlineStart: 0,\n zIndex: 10,\n width: '100%',\n height: '100%',\n background: token.colorBgContainer,\n opacity: 0,\n transition: \"all \".concat(token.motionDurationSlow),\n content: '\"\"',\n pointerEvents: 'none'\n }\n }), _defineProperty(_nestedLoading, \"\".concat(token.componentCls, \"-blur\"), _defineProperty({\n clear: 'both',\n opacity: 0.5,\n userSelect: 'none',\n pointerEvents: 'none'\n }, \"&::after\", {\n opacity: 0.4,\n pointerEvents: 'auto'\n })), _nestedLoading)\n }, _defineProperty(_Object$assign, \"&-tip\", {\n color: token.spinDotDefault\n }), _defineProperty(_Object$assign, \"\".concat(token.componentCls, \"-dot\"), {\n position: 'relative',\n display: 'inline-block',\n fontSize: token.spinDotSize,\n width: '1em',\n height: '1em',\n '&-item': {\n position: 'absolute',\n display: 'block',\n width: (token.spinDotSize - token.marginXXS / 2) / 2,\n height: (token.spinDotSize - token.marginXXS / 2) / 2,\n backgroundColor: token.colorPrimary,\n borderRadius: '100%',\n transform: 'scale(0.75)',\n transformOrigin: '50% 50%',\n opacity: 0.3,\n animationName: antSpinMove,\n animationDuration: '1s',\n animationIterationCount: 'infinite',\n animationTimingFunction: 'linear',\n animationDirection: 'alternate',\n '&:nth-child(1)': {\n top: 0,\n insetInlineStart: 0\n },\n '&:nth-child(2)': {\n top: 0,\n insetInlineEnd: 0,\n animationDelay: '0.4s'\n },\n '&:nth-child(3)': {\n insetInlineEnd: 0,\n bottom: 0,\n animationDelay: '0.8s'\n },\n '&:nth-child(4)': {\n bottom: 0,\n insetInlineStart: 0,\n animationDelay: '1.2s'\n }\n },\n '&-spin': {\n transform: 'rotate(45deg)',\n animationName: antRotate,\n animationDuration: '1.2s',\n animationIterationCount: 'infinite',\n animationTimingFunction: 'linear'\n }\n }), _defineProperty(_Object$assign, \"&-sm \".concat(token.componentCls, \"-dot\"), {\n fontSize: token.spinDotSizeSM,\n i: {\n width: (token.spinDotSizeSM - token.marginXXS / 2) / 2,\n height: (token.spinDotSizeSM - token.marginXXS / 2) / 2\n }\n }), _defineProperty(_Object$assign, \"&-lg \".concat(token.componentCls, \"-dot\"), {\n fontSize: token.spinDotSizeLG,\n i: {\n width: (token.spinDotSizeLG - token.marginXXS) / 2,\n height: (token.spinDotSizeLG - token.marginXXS) / 2\n }\n }), _defineProperty(_Object$assign, \"&\".concat(token.componentCls, \"-show-text \").concat(token.componentCls, \"-text\"), {\n display: 'block'\n }), _Object$assign)));\n};\n// ============================== Export ==============================\nexport default genComponentStyleHook('Spin', function (token) {\n var spinToken = mergeToken(token, {\n spinDotDefault: token.colorTextDescription,\n spinDotSize: token.controlHeightLG / 2,\n spinDotSizeSM: token.controlHeightLG * 0.35,\n spinDotSizeLG: token.controlHeight\n });\n return [genSpinStyle(spinToken)];\n}, {\n contentHeight: 400\n});","'use client';\n\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport { debounce } from 'throttle-debounce';\nimport { cloneElement, isValidElement } from '../_util/reactNode';\nimport warning from '../_util/warning';\nimport { ConfigContext } from '../config-provider';\nimport useStyle from './style/index';\nvar SpinSizes = ['small', 'default', 'large'];\n// Render indicator\nvar defaultIndicator = null;\nfunction renderIndicator(prefixCls, props) {\n var indicator = props.indicator;\n var dotClassName = \"\".concat(prefixCls, \"-dot\");\n // should not be render default indicator when indicator value is null\n if (indicator === null) {\n return null;\n }\n if (isValidElement(indicator)) {\n return cloneElement(indicator, {\n className: classNames(indicator.props.className, dotClassName)\n });\n }\n if (isValidElement(defaultIndicator)) {\n return cloneElement(defaultIndicator, {\n className: classNames(defaultIndicator.props.className, dotClassName)\n });\n }\n return /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(dotClassName, \"\".concat(prefixCls, \"-dot-spin\"))\n }, /*#__PURE__*/React.createElement(\"i\", {\n className: \"\".concat(prefixCls, \"-dot-item\"),\n key: 1\n }), /*#__PURE__*/React.createElement(\"i\", {\n className: \"\".concat(prefixCls, \"-dot-item\"),\n key: 2\n }), /*#__PURE__*/React.createElement(\"i\", {\n className: \"\".concat(prefixCls, \"-dot-item\"),\n key: 3\n }), /*#__PURE__*/React.createElement(\"i\", {\n className: \"\".concat(prefixCls, \"-dot-item\"),\n key: 4\n }));\n}\nfunction shouldDelay(spinning, delay) {\n return !!spinning && !!delay && !isNaN(Number(delay));\n}\nvar Spin = function Spin(props) {\n var _classNames;\n var prefixCls = props.spinPrefixCls,\n _props$spinning = props.spinning,\n customSpinning = _props$spinning === void 0 ? true : _props$spinning,\n _props$delay = props.delay,\n delay = _props$delay === void 0 ? 0 : _props$delay,\n className = props.className,\n rootClassName = props.rootClassName,\n _props$size = props.size,\n size = _props$size === void 0 ? 'default' : _props$size,\n tip = props.tip,\n wrapperClassName = props.wrapperClassName,\n style = props.style,\n children = props.children,\n hashId = props.hashId,\n restProps = __rest(props, [\"spinPrefixCls\", \"spinning\", \"delay\", \"className\", \"rootClassName\", \"size\", \"tip\", \"wrapperClassName\", \"style\", \"children\", \"hashId\"]);\n var _React$useState = React.useState(function () {\n return customSpinning && !shouldDelay(customSpinning, delay);\n }),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n spinning = _React$useState2[0],\n setSpinning = _React$useState2[1];\n React.useEffect(function () {\n if (customSpinning) {\n var showSpinning = debounce(delay, function () {\n setSpinning(true);\n });\n showSpinning();\n return function () {\n var _a;\n (_a = showSpinning === null || showSpinning === void 0 ? void 0 : showSpinning.cancel) === null || _a === void 0 ? void 0 : _a.call(showSpinning);\n };\n }\n setSpinning(false);\n }, [delay, customSpinning]);\n var isNestedPattern = React.useMemo(function () {\n return typeof children !== 'undefined';\n }, [children]);\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? warning(!tip || isNestedPattern, 'Spin', '`tip` only work in nest pattern.') : void 0;\n }\n var _React$useContext = React.useContext(ConfigContext),\n direction = _React$useContext.direction,\n spin = _React$useContext.spin;\n var spinClassName = classNames(prefixCls, spin === null || spin === void 0 ? void 0 : spin.className, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-sm\"), size === 'small'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-lg\"), size === 'large'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-spinning\"), spinning), _defineProperty(_classNames, \"\".concat(prefixCls, \"-show-text\"), !!tip), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _classNames), className, rootClassName, hashId);\n var containerClassName = classNames(\"\".concat(prefixCls, \"-container\"), _defineProperty({}, \"\".concat(prefixCls, \"-blur\"), spinning));\n // fix https://fb.me/react-unknown-prop\n var divProps = omit(restProps, ['indicator', 'prefixCls']);\n var mergedStyle = Object.assign(Object.assign({}, spin === null || spin === void 0 ? void 0 : spin.style), style);\n var spinElement = /*#__PURE__*/React.createElement(\"div\", Object.assign({}, divProps, {\n style: mergedStyle,\n className: spinClassName,\n \"aria-live\": \"polite\",\n \"aria-busy\": spinning\n }), renderIndicator(prefixCls, props), tip && isNestedPattern ? /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-text\")\n }, tip) : null);\n if (isNestedPattern) {\n return /*#__PURE__*/React.createElement(\"div\", Object.assign({}, divProps, {\n className: classNames(\"\".concat(prefixCls, \"-nested-loading\"), wrapperClassName, hashId)\n }), spinning && /*#__PURE__*/React.createElement(\"div\", {\n key: \"loading\"\n }, spinElement), /*#__PURE__*/React.createElement(\"div\", {\n className: containerClassName,\n key: \"container\"\n }, children));\n }\n return spinElement;\n};\nvar SpinFC = function SpinFC(props) {\n var customizePrefixCls = props.prefixCls;\n var _React$useContext2 = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext2.getPrefixCls;\n var spinPrefixCls = getPrefixCls('spin', customizePrefixCls);\n var _useStyle = useStyle(spinPrefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n var spinClassProps = Object.assign(Object.assign({}, props), {\n spinPrefixCls: spinPrefixCls,\n hashId: hashId\n });\n return wrapSSR( /*#__PURE__*/React.createElement(Spin, Object.assign({}, spinClassProps)));\n};\nSpinFC.setDefaultIndicator = function (indicator) {\n defaultIndicator = indicator;\n};\nif (process.env.NODE_ENV !== 'production') {\n SpinFC.displayName = 'Spin';\n}\nexport default SpinFC;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport RowContext from './RowContext';\nimport { useColStyle } from './style';\nfunction parseFlex(flex) {\n if (typeof flex === 'number') {\n return \"\".concat(flex, \" \").concat(flex, \" auto\");\n }\n if (/^\\d+(\\.\\d+)?(px|em|rem|%)$/.test(flex)) {\n return \"0 0 \".concat(flex);\n }\n return flex;\n}\nvar sizes = ['xs', 'sm', 'md', 'lg', 'xl', 'xxl'];\nvar Col = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _classNames;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n var _React$useContext2 = React.useContext(RowContext),\n gutter = _React$useContext2.gutter,\n wrap = _React$useContext2.wrap,\n supportFlexGap = _React$useContext2.supportFlexGap;\n var customizePrefixCls = props.prefixCls,\n span = props.span,\n order = props.order,\n offset = props.offset,\n push = props.push,\n pull = props.pull,\n className = props.className,\n children = props.children,\n flex = props.flex,\n style = props.style,\n others = __rest(props, [\"prefixCls\", \"span\", \"order\", \"offset\", \"push\", \"pull\", \"className\", \"children\", \"flex\", \"style\"]);\n var prefixCls = getPrefixCls('col', customizePrefixCls);\n var _useColStyle = useColStyle(prefixCls),\n _useColStyle2 = _slicedToArray(_useColStyle, 2),\n wrapSSR = _useColStyle2[0],\n hashId = _useColStyle2[1];\n var sizeClassObj = {};\n sizes.forEach(function (size) {\n var _Object$assign;\n var sizeProps = {};\n var propSize = props[size];\n if (typeof propSize === 'number') {\n sizeProps.span = propSize;\n } else if (typeof propSize === 'object') {\n sizeProps = propSize || {};\n }\n delete others[size];\n sizeClassObj = Object.assign(Object.assign({}, sizeClassObj), (_Object$assign = {}, _defineProperty(_Object$assign, \"\".concat(prefixCls, \"-\").concat(size, \"-\").concat(sizeProps.span), sizeProps.span !== undefined), _defineProperty(_Object$assign, \"\".concat(prefixCls, \"-\").concat(size, \"-order-\").concat(sizeProps.order), sizeProps.order || sizeProps.order === 0), _defineProperty(_Object$assign, \"\".concat(prefixCls, \"-\").concat(size, \"-offset-\").concat(sizeProps.offset), sizeProps.offset || sizeProps.offset === 0), _defineProperty(_Object$assign, \"\".concat(prefixCls, \"-\").concat(size, \"-push-\").concat(sizeProps.push), sizeProps.push || sizeProps.push === 0), _defineProperty(_Object$assign, \"\".concat(prefixCls, \"-\").concat(size, \"-pull-\").concat(sizeProps.pull), sizeProps.pull || sizeProps.pull === 0), _defineProperty(_Object$assign, \"\".concat(prefixCls, \"-\").concat(size, \"-flex-\").concat(sizeProps.flex), sizeProps.flex || sizeProps.flex === 'auto'), _defineProperty(_Object$assign, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _Object$assign));\n });\n var classes = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(span), span !== undefined), _defineProperty(_classNames, \"\".concat(prefixCls, \"-order-\").concat(order), order), _defineProperty(_classNames, \"\".concat(prefixCls, \"-offset-\").concat(offset), offset), _defineProperty(_classNames, \"\".concat(prefixCls, \"-push-\").concat(push), push), _defineProperty(_classNames, \"\".concat(prefixCls, \"-pull-\").concat(pull), pull), _classNames), className, sizeClassObj, hashId);\n var mergedStyle = {};\n // Horizontal gutter use padding\n if (gutter && gutter[0] > 0) {\n var horizontalGutter = gutter[0] / 2;\n mergedStyle.paddingLeft = horizontalGutter;\n mergedStyle.paddingRight = horizontalGutter;\n }\n // Vertical gutter use padding when gap not support\n if (gutter && gutter[1] > 0 && !supportFlexGap) {\n var verticalGutter = gutter[1] / 2;\n mergedStyle.paddingTop = verticalGutter;\n mergedStyle.paddingBottom = verticalGutter;\n }\n if (flex) {\n mergedStyle.flex = parseFlex(flex);\n // Hack for Firefox to avoid size issue\n // https://github.com/ant-design/ant-design/pull/20023#issuecomment-564389553\n if (wrap === false && !mergedStyle.minWidth) {\n mergedStyle.minWidth = 0;\n }\n }\n return wrapSSR( /*#__PURE__*/React.createElement(\"div\", Object.assign({}, others, {\n style: Object.assign(Object.assign({}, mergedStyle), style),\n className: classes,\n ref: ref\n }), children));\n});\nif (process.env.NODE_ENV !== 'production') {\n Col.displayName = 'Col';\n}\nexport default Col;","import React from 'react';\nexport var ListContext = /*#__PURE__*/React.createContext({});\nexport var ListConsumer = ListContext.Consumer;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport React, { Children, forwardRef, useContext } from 'react';\nimport { cloneElement } from '../_util/reactNode';\nimport { ConfigContext } from '../config-provider';\nimport { Col } from '../grid';\nimport { ListContext } from './context';\nexport var Meta = function Meta(_a) {\n var customizePrefixCls = _a.prefixCls,\n className = _a.className,\n avatar = _a.avatar,\n title = _a.title,\n description = _a.description,\n others = __rest(_a, [\"prefixCls\", \"className\", \"avatar\", \"title\", \"description\"]);\n var _useContext = useContext(ConfigContext),\n getPrefixCls = _useContext.getPrefixCls;\n var prefixCls = getPrefixCls('list', customizePrefixCls);\n var classString = classNames(\"\".concat(prefixCls, \"-item-meta\"), className);\n var content = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-item-meta-content\")\n }, title && /*#__PURE__*/React.createElement(\"h4\", {\n className: \"\".concat(prefixCls, \"-item-meta-title\")\n }, title), description && /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-item-meta-description\")\n }, description));\n return /*#__PURE__*/React.createElement(\"div\", Object.assign({}, others, {\n className: classString\n }), avatar && /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-item-meta-avatar\")\n }, avatar), (title || description) && content);\n};\nvar InternalItem = function InternalItem(_a, ref) {\n var customizePrefixCls = _a.prefixCls,\n children = _a.children,\n actions = _a.actions,\n extra = _a.extra,\n className = _a.className,\n colStyle = _a.colStyle,\n others = __rest(_a, [\"prefixCls\", \"children\", \"actions\", \"extra\", \"className\", \"colStyle\"]);\n var _useContext2 = useContext(ListContext),\n grid = _useContext2.grid,\n itemLayout = _useContext2.itemLayout;\n var _useContext3 = useContext(ConfigContext),\n getPrefixCls = _useContext3.getPrefixCls;\n var isItemContainsTextNodeAndNotSingular = function isItemContainsTextNodeAndNotSingular() {\n var result;\n Children.forEach(children, function (element) {\n if (typeof element === 'string') {\n result = true;\n }\n });\n return result && Children.count(children) > 1;\n };\n var isFlexMode = function isFlexMode() {\n if (itemLayout === 'vertical') {\n return !!extra;\n }\n return !isItemContainsTextNodeAndNotSingular();\n };\n var prefixCls = getPrefixCls('list', customizePrefixCls);\n var actionsContent = actions && actions.length > 0 && /*#__PURE__*/React.createElement(\"ul\", {\n className: \"\".concat(prefixCls, \"-item-action\"),\n key: \"actions\"\n }, actions.map(function (action, i) {\n return /*#__PURE__*/(\n // eslint-disable-next-line react/no-array-index-key\n React.createElement(\"li\", {\n key: \"\".concat(prefixCls, \"-item-action-\").concat(i)\n }, action, i !== actions.length - 1 && /*#__PURE__*/React.createElement(\"em\", {\n className: \"\".concat(prefixCls, \"-item-action-split\")\n }))\n );\n }));\n var Element = grid ? 'div' : 'li';\n var itemChildren = /*#__PURE__*/React.createElement(Element, Object.assign({}, others, !grid ? {\n ref: ref\n } : {}, {\n className: classNames(\"\".concat(prefixCls, \"-item\"), _defineProperty({}, \"\".concat(prefixCls, \"-item-no-flex\"), !isFlexMode()), className)\n }), itemLayout === 'vertical' && extra ? [/*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-item-main\"),\n key: \"content\"\n }, children, actionsContent), /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-item-extra\"),\n key: \"extra\"\n }, extra)] : [children, actionsContent, cloneElement(extra, {\n key: 'extra'\n })]);\n return grid ? /*#__PURE__*/React.createElement(Col, {\n ref: ref,\n flex: 1,\n style: colStyle\n }, itemChildren) : itemChildren;\n};\nvar Item = /*#__PURE__*/forwardRef(InternalItem);\nItem.Meta = Meta;\nexport default Item;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { resetComponent } from '../../style';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nvar genBorderedStyle = function genBorderedStyle(token) {\n var _$concat, _ref;\n var listBorderedCls = token.listBorderedCls,\n componentCls = token.componentCls,\n paddingLG = token.paddingLG,\n margin = token.margin,\n itemPaddingSM = token.itemPaddingSM,\n itemPaddingLG = token.itemPaddingLG,\n marginLG = token.marginLG,\n borderRadiusLG = token.borderRadiusLG;\n return _ref = {}, _defineProperty(_ref, \"\".concat(listBorderedCls), (_$concat = {\n border: \"\".concat(token.lineWidth, \"px \").concat(token.lineType, \" \").concat(token.colorBorder),\n borderRadius: borderRadiusLG\n }, _defineProperty(_$concat, \"\".concat(componentCls, \"-header,\").concat(componentCls, \"-footer,\").concat(componentCls, \"-item\"), {\n paddingInline: paddingLG\n }), _defineProperty(_$concat, \"\".concat(componentCls, \"-pagination\"), {\n margin: \"\".concat(margin, \"px \").concat(marginLG, \"px\")\n }), _$concat)), _defineProperty(_ref, \"\".concat(listBorderedCls).concat(componentCls, \"-sm\"), _defineProperty({}, \"\".concat(componentCls, \"-item,\").concat(componentCls, \"-header,\").concat(componentCls, \"-footer\"), {\n padding: itemPaddingSM\n })), _defineProperty(_ref, \"\".concat(listBorderedCls).concat(componentCls, \"-lg\"), _defineProperty({}, \"\".concat(componentCls, \"-item,\").concat(componentCls, \"-header,\").concat(componentCls, \"-footer\"), {\n padding: itemPaddingLG\n })), _ref;\n};\nvar genResponsiveStyle = function genResponsiveStyle(token) {\n var _mediaScreenAndM, _$concat8, _mediaScreenAndM2, _ref2;\n var componentCls = token.componentCls,\n screenSM = token.screenSM,\n screenMD = token.screenMD,\n marginLG = token.marginLG,\n marginSM = token.marginSM,\n margin = token.margin;\n return _ref2 = {}, _defineProperty(_ref2, \"@media screen and (max-width:\".concat(screenMD, \")\"), (_mediaScreenAndM = {}, _defineProperty(_mediaScreenAndM, \"\".concat(componentCls), _defineProperty({}, \"\".concat(componentCls, \"-item\"), _defineProperty({}, \"\".concat(componentCls, \"-item-action\"), {\n marginInlineStart: marginLG\n }))), _defineProperty(_mediaScreenAndM, \"\".concat(componentCls, \"-vertical\"), _defineProperty({}, \"\".concat(componentCls, \"-item\"), _defineProperty({}, \"\".concat(componentCls, \"-item-extra\"), {\n marginInlineStart: marginLG\n }))), _mediaScreenAndM)), _defineProperty(_ref2, \"@media screen and (max-width: \".concat(screenSM, \")\"), (_mediaScreenAndM2 = {}, _defineProperty(_mediaScreenAndM2, \"\".concat(componentCls), _defineProperty({}, \"\".concat(componentCls, \"-item\"), _defineProperty({\n flexWrap: 'wrap'\n }, \"\".concat(componentCls, \"-action\"), {\n marginInlineStart: marginSM\n }))), _defineProperty(_mediaScreenAndM2, \"\".concat(componentCls, \"-vertical\"), _defineProperty({}, \"\".concat(componentCls, \"-item\"), (_$concat8 = {\n flexWrap: 'wrap-reverse'\n }, _defineProperty(_$concat8, \"\".concat(componentCls, \"-item-main\"), {\n minWidth: token.contentWidth\n }), _defineProperty(_$concat8, \"\".concat(componentCls, \"-item-extra\"), {\n margin: \"auto auto \".concat(margin, \"px\")\n }), _$concat8))), _mediaScreenAndM2)), _ref2;\n};\n// =============================== Base ===============================\nvar genBaseStyle = function genBaseStyle(token) {\n var _$concat10, _$concat11, _$concat12, _Object$assign2, _$concat$concat3, _ref3;\n var componentCls = token.componentCls,\n antCls = token.antCls,\n controlHeight = token.controlHeight,\n minHeight = token.minHeight,\n paddingSM = token.paddingSM,\n marginLG = token.marginLG,\n padding = token.padding,\n itemPadding = token.itemPadding,\n colorPrimary = token.colorPrimary,\n itemPaddingSM = token.itemPaddingSM,\n itemPaddingLG = token.itemPaddingLG,\n paddingXS = token.paddingXS,\n margin = token.margin,\n colorText = token.colorText,\n colorTextDescription = token.colorTextDescription,\n motionDurationSlow = token.motionDurationSlow,\n lineWidth = token.lineWidth,\n headerBg = token.headerBg,\n footerBg = token.footerBg,\n emptyTextPadding = token.emptyTextPadding,\n metaMarginBottom = token.metaMarginBottom,\n avatarMarginRight = token.avatarMarginRight,\n titleMarginBottom = token.titleMarginBottom,\n descriptionFontSize = token.descriptionFontSize;\n var alignCls = {};\n ['start', 'center', 'end'].forEach(function (item) {\n alignCls[\"&-align-\".concat(item)] = {\n textAlign: item\n };\n });\n return _ref3 = {}, _defineProperty(_ref3, \"\".concat(componentCls), Object.assign(Object.assign({}, resetComponent(token)), (_Object$assign2 = {\n position: 'relative',\n '*': {\n outline: 'none'\n }\n }, _defineProperty(_Object$assign2, \"\".concat(componentCls, \"-header\"), {\n background: headerBg\n }), _defineProperty(_Object$assign2, \"\".concat(componentCls, \"-footer\"), {\n background: footerBg\n }), _defineProperty(_Object$assign2, \"\".concat(componentCls, \"-header, \").concat(componentCls, \"-footer\"), {\n paddingBlock: paddingSM\n }), _defineProperty(_Object$assign2, \"\".concat(componentCls, \"-pagination\"), Object.assign(Object.assign({\n marginBlockStart: marginLG\n }, alignCls), _defineProperty({}, \"\".concat(antCls, \"-pagination-options\"), {\n textAlign: 'start'\n }))), _defineProperty(_Object$assign2, \"\".concat(componentCls, \"-spin\"), {\n minHeight: minHeight,\n textAlign: 'center'\n }), _defineProperty(_Object$assign2, \"\".concat(componentCls, \"-items\"), {\n margin: 0,\n padding: 0,\n listStyle: 'none'\n }), _defineProperty(_Object$assign2, \"\".concat(componentCls, \"-item\"), (_$concat12 = {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: itemPadding,\n color: colorText\n }, _defineProperty(_$concat12, \"\".concat(componentCls, \"-item-meta\"), (_$concat10 = {\n display: 'flex',\n flex: 1,\n alignItems: 'flex-start',\n maxWidth: '100%'\n }, _defineProperty(_$concat10, \"\".concat(componentCls, \"-item-meta-avatar\"), {\n marginInlineEnd: avatarMarginRight\n }), _defineProperty(_$concat10, \"\".concat(componentCls, \"-item-meta-content\"), {\n flex: '1 0',\n width: 0,\n color: colorText\n }), _defineProperty(_$concat10, \"\".concat(componentCls, \"-item-meta-title\"), {\n margin: \"0 0 \".concat(token.marginXXS, \"px 0\"),\n color: colorText,\n fontSize: token.fontSize,\n lineHeight: token.lineHeight,\n '> a': _defineProperty({\n color: colorText,\n transition: \"all \".concat(motionDurationSlow)\n }, \"&:hover\", {\n color: colorPrimary\n })\n }), _defineProperty(_$concat10, \"\".concat(componentCls, \"-item-meta-description\"), {\n color: colorTextDescription,\n fontSize: descriptionFontSize,\n lineHeight: token.lineHeight\n }), _$concat10)), _defineProperty(_$concat12, \"\".concat(componentCls, \"-item-action\"), (_$concat11 = {\n flex: '0 0 auto',\n marginInlineStart: token.marginXXL,\n padding: 0,\n fontSize: 0,\n listStyle: 'none'\n }, _defineProperty(_$concat11, \"& > li\", _defineProperty({\n position: 'relative',\n display: 'inline-block',\n padding: \"0 \".concat(paddingXS, \"px\"),\n color: colorTextDescription,\n fontSize: token.fontSize,\n lineHeight: token.lineHeight,\n textAlign: 'center'\n }, \"&:first-child\", {\n paddingInlineStart: 0\n })), _defineProperty(_$concat11, \"\".concat(componentCls, \"-item-action-split\"), {\n position: 'absolute',\n insetBlockStart: '50%',\n insetInlineEnd: 0,\n width: lineWidth,\n height: Math.ceil(token.fontSize * token.lineHeight) - token.marginXXS * 2,\n transform: 'translateY(-50%)',\n backgroundColor: token.colorSplit\n }), _$concat11)), _$concat12)), _defineProperty(_Object$assign2, \"\".concat(componentCls, \"-empty\"), {\n padding: \"\".concat(padding, \"px 0\"),\n color: colorTextDescription,\n fontSize: token.fontSizeSM,\n textAlign: 'center'\n }), _defineProperty(_Object$assign2, \"\".concat(componentCls, \"-empty-text\"), {\n padding: emptyTextPadding,\n color: token.colorTextDisabled,\n fontSize: token.fontSize,\n textAlign: 'center'\n }), _defineProperty(_Object$assign2, \"\".concat(componentCls, \"-item-no-flex\"), {\n display: 'block'\n }), _Object$assign2))), _defineProperty(_ref3, \"\".concat(componentCls, \"-grid \").concat(antCls, \"-col > \").concat(componentCls, \"-item\"), {\n display: 'block',\n maxWidth: '100%',\n marginBlockEnd: margin,\n paddingBlock: 0,\n borderBlockEnd: 'none'\n }), _defineProperty(_ref3, \"\".concat(componentCls, \"-vertical \").concat(componentCls, \"-item\"), (_$concat$concat3 = {\n alignItems: 'initial'\n }, _defineProperty(_$concat$concat3, \"\".concat(componentCls, \"-item-main\"), {\n display: 'block',\n flex: 1\n }), _defineProperty(_$concat$concat3, \"\".concat(componentCls, \"-item-extra\"), {\n marginInlineStart: marginLG\n }), _defineProperty(_$concat$concat3, \"\".concat(componentCls, \"-item-meta\"), _defineProperty({\n marginBlockEnd: metaMarginBottom\n }, \"\".concat(componentCls, \"-item-meta-title\"), {\n marginBlockStart: 0,\n marginBlockEnd: titleMarginBottom,\n color: colorText,\n fontSize: token.fontSizeLG,\n lineHeight: token.lineHeightLG\n })), _defineProperty(_$concat$concat3, \"\".concat(componentCls, \"-item-action\"), {\n marginBlockStart: padding,\n marginInlineStart: 'auto',\n '> li': _defineProperty({\n padding: \"0 \".concat(padding, \"px\")\n }, \"&:first-child\", {\n paddingInlineStart: 0\n })\n }), _$concat$concat3)), _defineProperty(_ref3, \"\".concat(componentCls, \"-split \").concat(componentCls, \"-item\"), _defineProperty({\n borderBlockEnd: \"\".concat(token.lineWidth, \"px \").concat(token.lineType, \" \").concat(token.colorSplit)\n }, \"&:last-child\", {\n borderBlockEnd: 'none'\n })), _defineProperty(_ref3, \"\".concat(componentCls, \"-split \").concat(componentCls, \"-header\"), {\n borderBlockEnd: \"\".concat(token.lineWidth, \"px \").concat(token.lineType, \" \").concat(token.colorSplit)\n }), _defineProperty(_ref3, \"\".concat(componentCls, \"-split\").concat(componentCls, \"-empty \").concat(componentCls, \"-footer\"), {\n borderTop: \"\".concat(token.lineWidth, \"px \").concat(token.lineType, \" \").concat(token.colorSplit)\n }), _defineProperty(_ref3, \"\".concat(componentCls, \"-loading \").concat(componentCls, \"-spin-nested-loading\"), {\n minHeight: controlHeight\n }), _defineProperty(_ref3, \"\".concat(componentCls, \"-split\").concat(componentCls, \"-something-after-last-item \").concat(antCls, \"-spin-container > \").concat(componentCls, \"-items > \").concat(componentCls, \"-item:last-child\"), {\n borderBlockEnd: \"\".concat(token.lineWidth, \"px \").concat(token.lineType, \" \").concat(token.colorSplit)\n }), _defineProperty(_ref3, \"\".concat(componentCls, \"-lg \").concat(componentCls, \"-item\"), {\n padding: itemPaddingLG\n }), _defineProperty(_ref3, \"\".concat(componentCls, \"-sm \").concat(componentCls, \"-item\"), {\n padding: itemPaddingSM\n }), _defineProperty(_ref3, \"\".concat(componentCls, \":not(\").concat(componentCls, \"-vertical)\"), _defineProperty({}, \"\".concat(componentCls, \"-item-no-flex\"), _defineProperty({}, \"\".concat(componentCls, \"-item-action\"), {\n float: 'right'\n }))), _ref3;\n};\n// ============================== Export ==============================\nexport default genComponentStyleHook('List', function (token) {\n var listToken = mergeToken(token, {\n listBorderedCls: \"\".concat(token.componentCls, \"-bordered\"),\n minHeight: token.controlHeightLG\n });\n return [genBaseStyle(listToken), genBorderedStyle(listToken), genResponsiveStyle(listToken)];\n}, function (token) {\n return {\n contentWidth: 220,\n itemPadding: \"\".concat(token.paddingContentVertical, \"px 0\"),\n itemPaddingSM: \"\".concat(token.paddingContentVerticalSM, \"px \").concat(token.paddingContentHorizontal, \"px\"),\n itemPaddingLG: \"\".concat(token.paddingContentVerticalLG, \"px \").concat(token.paddingContentHorizontalLG, \"px\"),\n headerBg: 'transparent',\n footerBg: 'transparent',\n emptyTextPadding: token.padding,\n metaMarginBottom: token.padding,\n avatarMarginRight: token.padding,\n titleMarginBottom: token.paddingSM,\n descriptionFontSize: token.fontSize\n };\n});","'use client';\n\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\n// eslint-disable-next-line import/no-named-as-default\nimport * as React from 'react';\nimport extendsObject from '../_util/extendsObject';\nimport { responsiveArray } from '../_util/responsiveObserver';\nimport { ConfigContext } from '../config-provider';\nimport DefaultRenderEmpty from '../config-provider/defaultRenderEmpty';\nimport { Row } from '../grid';\nimport useBreakpoint from '../grid/hooks/useBreakpoint';\nimport Pagination from '../pagination';\nimport Spin from '../spin';\nimport Item from './Item';\n// CSSINJS\nimport { ListContext } from './context';\nimport useStyle from './style';\nfunction List(_a) {\n var _classNames;\n var _b;\n var _a$pagination = _a.pagination,\n pagination = _a$pagination === void 0 ? false : _a$pagination,\n customizePrefixCls = _a.prefixCls,\n _a$bordered = _a.bordered,\n bordered = _a$bordered === void 0 ? false : _a$bordered,\n _a$split = _a.split,\n split = _a$split === void 0 ? true : _a$split,\n className = _a.className,\n rootClassName = _a.rootClassName,\n style = _a.style,\n children = _a.children,\n itemLayout = _a.itemLayout,\n loadMore = _a.loadMore,\n grid = _a.grid,\n _a$dataSource = _a.dataSource,\n dataSource = _a$dataSource === void 0 ? [] : _a$dataSource,\n size = _a.size,\n header = _a.header,\n footer = _a.footer,\n _a$loading = _a.loading,\n loading = _a$loading === void 0 ? false : _a$loading,\n rowKey = _a.rowKey,\n renderItem = _a.renderItem,\n locale = _a.locale,\n rest = __rest(_a, [\"pagination\", \"prefixCls\", \"bordered\", \"split\", \"className\", \"rootClassName\", \"style\", \"children\", \"itemLayout\", \"loadMore\", \"grid\", \"dataSource\", \"size\", \"header\", \"footer\", \"loading\", \"rowKey\", \"renderItem\", \"locale\"]);\n var paginationObj = pagination && typeof pagination === 'object' ? pagination : {};\n var _React$useState = React.useState(paginationObj.defaultCurrent || 1),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n paginationCurrent = _React$useState2[0],\n setPaginationCurrent = _React$useState2[1];\n var _React$useState3 = React.useState(paginationObj.defaultPageSize || 10),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n paginationSize = _React$useState4[0],\n setPaginationSize = _React$useState4[1];\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n renderEmpty = _React$useContext.renderEmpty,\n direction = _React$useContext.direction,\n list = _React$useContext.list;\n var defaultPaginationProps = {\n current: 1,\n total: 0\n };\n var triggerPaginationEvent = function triggerPaginationEvent(eventName) {\n return function (page, pageSize) {\n var _a;\n setPaginationCurrent(page);\n setPaginationSize(pageSize);\n if (pagination && pagination[eventName]) {\n (_a = pagination === null || pagination === void 0 ? void 0 : pagination[eventName]) === null || _a === void 0 ? void 0 : _a.call(pagination, page, pageSize);\n }\n };\n };\n var onPaginationChange = triggerPaginationEvent('onChange');\n var onPaginationShowSizeChange = triggerPaginationEvent('onShowSizeChange');\n var renderInnerItem = function renderInnerItem(item, index) {\n if (!renderItem) return null;\n var key;\n if (typeof rowKey === 'function') {\n key = rowKey(item);\n } else if (rowKey) {\n key = item[rowKey];\n } else {\n key = item.key;\n }\n if (!key) {\n key = \"list-item-\".concat(index);\n }\n return /*#__PURE__*/React.createElement(React.Fragment, {\n key: key\n }, renderItem(item, index));\n };\n var isSomethingAfterLastItem = function isSomethingAfterLastItem() {\n return !!(loadMore || pagination || footer);\n };\n var prefixCls = getPrefixCls('list', customizePrefixCls);\n // Style\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n var loadingProp = loading;\n if (typeof loadingProp === 'boolean') {\n loadingProp = {\n spinning: loadingProp\n };\n }\n var isLoading = loadingProp && loadingProp.spinning;\n // large => lg\n // small => sm\n var sizeCls = '';\n switch (size) {\n case 'large':\n sizeCls = 'lg';\n break;\n case 'small':\n sizeCls = 'sm';\n break;\n default:\n break;\n }\n var classString = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-vertical\"), itemLayout === 'vertical'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(sizeCls), sizeCls), _defineProperty(_classNames, \"\".concat(prefixCls, \"-split\"), split), _defineProperty(_classNames, \"\".concat(prefixCls, \"-bordered\"), bordered), _defineProperty(_classNames, \"\".concat(prefixCls, \"-loading\"), isLoading), _defineProperty(_classNames, \"\".concat(prefixCls, \"-grid\"), !!grid), _defineProperty(_classNames, \"\".concat(prefixCls, \"-something-after-last-item\"), isSomethingAfterLastItem()), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _classNames), list === null || list === void 0 ? void 0 : list.className, className, rootClassName, hashId);\n var paginationProps = extendsObject(defaultPaginationProps, {\n total: dataSource.length,\n current: paginationCurrent,\n pageSize: paginationSize\n }, pagination || {});\n var largestPage = Math.ceil(paginationProps.total / paginationProps.pageSize);\n if (paginationProps.current > largestPage) {\n paginationProps.current = largestPage;\n }\n var paginationContent = pagination ? /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-pagination\"), \"\".concat(prefixCls, \"-pagination-align-\").concat((_b = paginationProps === null || paginationProps === void 0 ? void 0 : paginationProps.align) !== null && _b !== void 0 ? _b : 'end'))\n }, /*#__PURE__*/React.createElement(Pagination, Object.assign({}, paginationProps, {\n onChange: onPaginationChange,\n onShowSizeChange: onPaginationShowSizeChange\n }))) : null;\n var splitDataSource = _toConsumableArray(dataSource);\n if (pagination) {\n if (dataSource.length > (paginationProps.current - 1) * paginationProps.pageSize) {\n splitDataSource = _toConsumableArray(dataSource).splice((paginationProps.current - 1) * paginationProps.pageSize, paginationProps.pageSize);\n }\n }\n var needResponsive = Object.keys(grid || {}).some(function (key) {\n return ['xs', 'sm', 'md', 'lg', 'xl', 'xxl'].includes(key);\n });\n var screens = useBreakpoint(needResponsive);\n var currentBreakpoint = React.useMemo(function () {\n for (var i = 0; i < responsiveArray.length; i += 1) {\n var breakpoint = responsiveArray[i];\n if (screens[breakpoint]) {\n return breakpoint;\n }\n }\n return undefined;\n }, [screens]);\n var colStyle = React.useMemo(function () {\n if (!grid) {\n return undefined;\n }\n var columnCount = currentBreakpoint && grid[currentBreakpoint] ? grid[currentBreakpoint] : grid.column;\n if (columnCount) {\n return {\n width: \"\".concat(100 / columnCount, \"%\"),\n maxWidth: \"\".concat(100 / columnCount, \"%\")\n };\n }\n }, [grid === null || grid === void 0 ? void 0 : grid.column, currentBreakpoint]);\n var childrenContent = isLoading && /*#__PURE__*/React.createElement(\"div\", {\n style: {\n minHeight: 53\n }\n });\n if (splitDataSource.length > 0) {\n var items = splitDataSource.map(function (item, index) {\n return renderInnerItem(item, index);\n });\n childrenContent = grid ? /*#__PURE__*/React.createElement(Row, {\n gutter: grid.gutter\n }, React.Children.map(items, function (child) {\n return /*#__PURE__*/React.createElement(\"div\", {\n key: child === null || child === void 0 ? void 0 : child.key,\n style: colStyle\n }, child);\n })) : /*#__PURE__*/React.createElement(\"ul\", {\n className: \"\".concat(prefixCls, \"-items\")\n }, items);\n } else if (!children && !isLoading) {\n childrenContent = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-empty-text\")\n }, locale && locale.emptyText || (renderEmpty === null || renderEmpty === void 0 ? void 0 : renderEmpty('List')) || /*#__PURE__*/React.createElement(DefaultRenderEmpty, {\n componentName: \"List\"\n }));\n }\n var paginationPosition = paginationProps.position || 'bottom';\n var contextValue = React.useMemo(function () {\n return {\n grid: grid,\n itemLayout: itemLayout\n };\n }, [JSON.stringify(grid), itemLayout]);\n return wrapSSR( /*#__PURE__*/React.createElement(ListContext.Provider, {\n value: contextValue\n }, /*#__PURE__*/React.createElement(\"div\", Object.assign({\n style: Object.assign(Object.assign({}, list === null || list === void 0 ? void 0 : list.style), style),\n className: classString\n }, rest), (paginationPosition === 'top' || paginationPosition === 'both') && paginationContent, header && /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-header\")\n }, header), /*#__PURE__*/React.createElement(Spin, Object.assign({}, loadingProp), childrenContent, children), footer && /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-footer\")\n }, footer), loadMore || (paginationPosition === 'bottom' || paginationPosition === 'both') && paginationContent)));\n}\nif (process.env.NODE_ENV !== 'production') {\n List.displayName = 'List';\n}\nList.Item = Item;\nexport default List;","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"title\", \"titleId\"];\nimport * as React from \"react\";\nfunction ChatBubbleLeftEllipsisIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M8.625 9.75a.375.375 0 11-.75 0 .375.375 0 01.75 0zm0 0H8.25m4.125 0a.375.375 0 11-.75 0 .375.375 0 01.75 0zm0 0H12m4.125 0a.375.375 0 11-.75 0 .375.375 0 01.75 0zm0 0h-.375m-13.5 3.01c0 1.6 1.123 2.994 2.707 3.227 1.087.16 2.185.283 3.293.369V21l4.184-4.183a1.14 1.14 0 01.778-.332 48.294 48.294 0 005.83-.498c1.585-.233 2.708-1.626 2.708-3.228V6.741c0-1.602-1.123-2.995-2.707-3.228A48.394 48.394 0 0012 3c-2.392 0-4.744.175-7.043.513C3.373 3.746 2.25 5.14 2.25 6.741v6.018z\"\n }));\n}\nvar ForwardRef = React.forwardRef(ChatBubbleLeftEllipsisIcon);\nexport default ForwardRef;","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"title\", \"titleId\"];\nimport * as React from \"react\";\nfunction ArchiveBoxXMarkIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M20.25 7.5l-.625 10.632a2.25 2.25 0 01-2.247 2.118H6.622a2.25 2.25 0 01-2.247-2.118L3.75 7.5m6 4.125l2.25 2.25m0 0l2.25 2.25M12 13.875l2.25-2.25M12 13.875l-2.25 2.25M3.375 7.5h17.25c.621 0 1.125-.504 1.125-1.125v-1.5c0-.621-.504-1.125-1.125-1.125H3.375c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125z\"\n }));\n}\nvar ForwardRef = React.forwardRef(ArchiveBoxXMarkIcon);\nexport default ForwardRef;","// This icon file is generated automatically.\nvar EllipsisOutlined = {\n \"icon\": {\n \"tag\": \"svg\",\n \"attrs\": {\n \"viewBox\": \"64 64 896 896\",\n \"focusable\": \"false\"\n },\n \"children\": [{\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M176 511a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0z\"\n }\n }]\n },\n \"name\": \"ellipsis\",\n \"theme\": \"outlined\"\n};\nexport default EllipsisOutlined;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport EllipsisOutlinedSvg from \"@ant-design/icons-svg/es/asn/EllipsisOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar EllipsisOutlined = function EllipsisOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: EllipsisOutlinedSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n EllipsisOutlined.displayName = 'EllipsisOutlined';\n}\nexport default /*#__PURE__*/React.forwardRef(EllipsisOutlined);","// This icon file is generated automatically.\nvar PlusOutlined = {\n \"icon\": {\n \"tag\": \"svg\",\n \"attrs\": {\n \"viewBox\": \"64 64 896 896\",\n \"focusable\": \"false\"\n },\n \"children\": [{\n \"tag\": \"defs\",\n \"attrs\": {},\n \"children\": [{\n \"tag\": \"style\",\n \"attrs\": {}\n }]\n }, {\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M482 152h60q8 0 8 8v704q0 8-8 8h-60q-8 0-8-8V160q0-8 8-8z\"\n }\n }, {\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M176 474h672q8 0 8 8v60q0 8-8 8H176q-8 0-8-8v-60q0-8 8-8z\"\n }\n }]\n },\n \"name\": \"plus\",\n \"theme\": \"outlined\"\n};\nexport default PlusOutlined;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport PlusOutlinedSvg from \"@ant-design/icons-svg/es/asn/PlusOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar PlusOutlined = function PlusOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: PlusOutlinedSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n PlusOutlined.displayName = 'PlusOutlined';\n}\nexport default /*#__PURE__*/React.forwardRef(PlusOutlined);","import { createContext } from 'react';\nexport default /*#__PURE__*/createContext(null);","import * as React from 'react';\nimport classNames from 'classnames';\nvar TabPane = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var prefixCls = _ref.prefixCls,\n className = _ref.className,\n style = _ref.style,\n id = _ref.id,\n active = _ref.active,\n tabKey = _ref.tabKey,\n children = _ref.children;\n return /*#__PURE__*/React.createElement(\"div\", {\n id: id && \"\".concat(id, \"-panel-\").concat(tabKey),\n role: \"tabpanel\",\n tabIndex: active ? 0 : -1,\n \"aria-labelledby\": id && \"\".concat(id, \"-tab-\").concat(tabKey),\n \"aria-hidden\": !active,\n style: style,\n className: classNames(prefixCls, active && \"\".concat(prefixCls, \"-active\"), className),\n ref: ref\n }, children);\n});\nif (process.env.NODE_ENV !== 'production') {\n TabPane.displayName = 'TabPane';\n}\nexport default TabPane;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar _excluded = [\"key\", \"forceRender\", \"style\", \"className\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport TabContext from \"../TabContext\";\nimport TabPane from \"./TabPane\";\nexport default function TabPanelList(_ref) {\n var id = _ref.id,\n activeKey = _ref.activeKey,\n animated = _ref.animated,\n tabPosition = _ref.tabPosition,\n destroyInactiveTabPane = _ref.destroyInactiveTabPane;\n var _React$useContext = React.useContext(TabContext),\n prefixCls = _React$useContext.prefixCls,\n tabs = _React$useContext.tabs;\n var tabPaneAnimated = animated.tabPane;\n var tabPanePrefixCls = \"\".concat(prefixCls, \"-tabpane\");\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-content-holder\"))\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-content\"), \"\".concat(prefixCls, \"-content-\").concat(tabPosition), _defineProperty({}, \"\".concat(prefixCls, \"-content-animated\"), tabPaneAnimated))\n }, tabs.map(function (_ref2) {\n var key = _ref2.key,\n forceRender = _ref2.forceRender,\n paneStyle = _ref2.style,\n paneClassName = _ref2.className,\n restTabProps = _objectWithoutProperties(_ref2, _excluded);\n var active = key === activeKey;\n return /*#__PURE__*/React.createElement(CSSMotion, _extends({\n key: key,\n visible: active,\n forceRender: forceRender,\n removeOnLeave: !!destroyInactiveTabPane,\n leavedClassName: \"\".concat(tabPanePrefixCls, \"-hidden\")\n }, animated.tabPaneMotion), function (_ref3, ref) {\n var motionStyle = _ref3.style,\n motionClassName = _ref3.className;\n return /*#__PURE__*/React.createElement(TabPane, _extends({}, restTabProps, {\n prefixCls: tabPanePrefixCls,\n id: id,\n tabKey: key,\n animated: tabPaneAnimated,\n active: active,\n style: _objectSpread(_objectSpread({}, paneStyle), motionStyle),\n className: classNames(paneClassName, motionClassName),\n ref: ref\n }));\n });\n })));\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport { useMemo } from 'react';\nvar DEFAULT_SIZE = {\n width: 0,\n height: 0,\n left: 0,\n top: 0\n};\nexport default function useOffsets(tabs, tabSizes, holderScrollWidth) {\n return useMemo(function () {\n var _tabs$;\n var map = new Map();\n var lastOffset = tabSizes.get((_tabs$ = tabs[0]) === null || _tabs$ === void 0 ? void 0 : _tabs$.key) || DEFAULT_SIZE;\n var rightOffset = lastOffset.left + lastOffset.width;\n for (var i = 0; i < tabs.length; i += 1) {\n var key = tabs[i].key;\n var data = tabSizes.get(key);\n\n // Reuse last one when not exist yet\n if (!data) {\n var _tabs;\n data = tabSizes.get((_tabs = tabs[i - 1]) === null || _tabs === void 0 ? void 0 : _tabs.key) || DEFAULT_SIZE;\n }\n var entity = map.get(key) || _objectSpread({}, data);\n\n // Right\n entity.right = rightOffset - entity.left - entity.width;\n\n // Update entity\n map.set(key, entity);\n }\n return map;\n }, [tabs.map(function (tab) {\n return tab.key;\n }).join('_'), tabSizes, holderScrollWidth]);\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nexport default function useSyncState(defaultState, onChange) {\n var stateRef = React.useRef(defaultState);\n var _React$useState = React.useState({}),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n forceUpdate = _React$useState2[1];\n function setState(updater) {\n var newValue = typeof updater === 'function' ? updater(stateRef.current) : updater;\n if (newValue !== stateRef.current) {\n onChange(newValue, stateRef.current);\n }\n stateRef.current = newValue;\n forceUpdate({});\n }\n return [stateRef.current, setState];\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useState, useRef } from 'react';\nvar MIN_SWIPE_DISTANCE = 0.1;\nvar STOP_SWIPE_DISTANCE = 0.01;\nvar REFRESH_INTERVAL = 20;\nvar SPEED_OFF_MULTIPLE = Math.pow(0.995, REFRESH_INTERVAL);\n\n// ================================= Hook =================================\nexport default function useTouchMove(ref, onOffset) {\n var _useState = useState(),\n _useState2 = _slicedToArray(_useState, 2),\n touchPosition = _useState2[0],\n setTouchPosition = _useState2[1];\n var _useState3 = useState(0),\n _useState4 = _slicedToArray(_useState3, 2),\n lastTimestamp = _useState4[0],\n setLastTimestamp = _useState4[1];\n var _useState5 = useState(0),\n _useState6 = _slicedToArray(_useState5, 2),\n lastTimeDiff = _useState6[0],\n setLastTimeDiff = _useState6[1];\n var _useState7 = useState(),\n _useState8 = _slicedToArray(_useState7, 2),\n lastOffset = _useState8[0],\n setLastOffset = _useState8[1];\n var motionRef = useRef();\n\n // ========================= Events =========================\n // >>> Touch events\n function onTouchStart(e) {\n var _e$touches$ = e.touches[0],\n screenX = _e$touches$.screenX,\n screenY = _e$touches$.screenY;\n setTouchPosition({\n x: screenX,\n y: screenY\n });\n window.clearInterval(motionRef.current);\n }\n function onTouchMove(e) {\n if (!touchPosition) return;\n e.preventDefault();\n var _e$touches$2 = e.touches[0],\n screenX = _e$touches$2.screenX,\n screenY = _e$touches$2.screenY;\n setTouchPosition({\n x: screenX,\n y: screenY\n });\n var offsetX = screenX - touchPosition.x;\n var offsetY = screenY - touchPosition.y;\n onOffset(offsetX, offsetY);\n var now = Date.now();\n setLastTimestamp(now);\n setLastTimeDiff(now - lastTimestamp);\n setLastOffset({\n x: offsetX,\n y: offsetY\n });\n }\n function onTouchEnd() {\n if (!touchPosition) return;\n setTouchPosition(null);\n setLastOffset(null);\n\n // Swipe if needed\n if (lastOffset) {\n var distanceX = lastOffset.x / lastTimeDiff;\n var distanceY = lastOffset.y / lastTimeDiff;\n var absX = Math.abs(distanceX);\n var absY = Math.abs(distanceY);\n\n // Skip swipe if low distance\n if (Math.max(absX, absY) < MIN_SWIPE_DISTANCE) return;\n var currentX = distanceX;\n var currentY = distanceY;\n motionRef.current = window.setInterval(function () {\n if (Math.abs(currentX) < STOP_SWIPE_DISTANCE && Math.abs(currentY) < STOP_SWIPE_DISTANCE) {\n window.clearInterval(motionRef.current);\n return;\n }\n currentX *= SPEED_OFF_MULTIPLE;\n currentY *= SPEED_OFF_MULTIPLE;\n onOffset(currentX * REFRESH_INTERVAL, currentY * REFRESH_INTERVAL);\n }, REFRESH_INTERVAL);\n }\n }\n\n // >>> Wheel event\n var lastWheelDirectionRef = useRef();\n function onWheel(e) {\n var deltaX = e.deltaX,\n deltaY = e.deltaY;\n\n // Convert both to x & y since wheel only happened on PC\n var mixed = 0;\n var absX = Math.abs(deltaX);\n var absY = Math.abs(deltaY);\n if (absX === absY) {\n mixed = lastWheelDirectionRef.current === 'x' ? deltaX : deltaY;\n } else if (absX > absY) {\n mixed = deltaX;\n lastWheelDirectionRef.current = 'x';\n } else {\n mixed = deltaY;\n lastWheelDirectionRef.current = 'y';\n }\n if (onOffset(-mixed, -mixed)) {\n e.preventDefault();\n }\n }\n\n // ========================= Effect =========================\n var touchEventsRef = useRef(null);\n touchEventsRef.current = {\n onTouchStart: onTouchStart,\n onTouchMove: onTouchMove,\n onTouchEnd: onTouchEnd,\n onWheel: onWheel\n };\n React.useEffect(function () {\n function onProxyTouchStart(e) {\n touchEventsRef.current.onTouchStart(e);\n }\n function onProxyTouchMove(e) {\n touchEventsRef.current.onTouchMove(e);\n }\n function onProxyTouchEnd(e) {\n touchEventsRef.current.onTouchEnd(e);\n }\n function onProxyWheel(e) {\n touchEventsRef.current.onWheel(e);\n }\n document.addEventListener('touchmove', onProxyTouchMove, {\n passive: false\n });\n document.addEventListener('touchend', onProxyTouchEnd, {\n passive: false\n });\n\n // No need to clean up since element removed\n ref.current.addEventListener('touchstart', onProxyTouchStart, {\n passive: false\n });\n ref.current.addEventListener('wheel', onProxyWheel);\n return function () {\n document.removeEventListener('touchmove', onProxyTouchMove);\n document.removeEventListener('touchend', onProxyTouchEnd);\n };\n }, []);\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { useLayoutUpdateEffect } from \"rc-util/es/hooks/useLayoutEffect\";\nimport { useRef, useState } from 'react';\n\n/**\n * Help to merge callback with `useLayoutEffect`.\n * One time will only trigger once.\n */\nexport default function useUpdate(callback) {\n var _useState = useState(0),\n _useState2 = _slicedToArray(_useState, 2),\n count = _useState2[0],\n setCount = _useState2[1];\n var effectRef = useRef(0);\n var callbackRef = useRef();\n callbackRef.current = callback;\n\n // Trigger on `useLayoutEffect`\n useLayoutUpdateEffect(function () {\n var _callbackRef$current;\n (_callbackRef$current = callbackRef.current) === null || _callbackRef$current === void 0 ? void 0 : _callbackRef$current.call(callbackRef);\n }, [count]);\n\n // Trigger to update count\n return function () {\n if (effectRef.current !== count) {\n return;\n }\n effectRef.current += 1;\n setCount(effectRef.current);\n };\n}\nexport function useUpdateState(defaultState) {\n var batchRef = useRef([]);\n var _useState3 = useState({}),\n _useState4 = _slicedToArray(_useState3, 2),\n forceUpdate = _useState4[1];\n var state = useRef(typeof defaultState === 'function' ? defaultState() : defaultState);\n var flushUpdate = useUpdate(function () {\n var current = state.current;\n batchRef.current.forEach(function (callback) {\n current = callback(current);\n });\n batchRef.current = [];\n state.current = current;\n forceUpdate({});\n });\n function updater(callback) {\n batchRef.current.push(callback);\n flushUpdate();\n }\n return [state.current, updater];\n}","import { useMemo } from 'react';\nvar DEFAULT_SIZE = {\n width: 0,\n height: 0,\n left: 0,\n top: 0,\n right: 0\n};\nexport default function useVisibleRange(tabOffsets, visibleTabContentValue, transform, tabContentSizeValue, addNodeSizeValue, operationNodeSizeValue, _ref) {\n var tabs = _ref.tabs,\n tabPosition = _ref.tabPosition,\n rtl = _ref.rtl;\n var charUnit;\n var position;\n var transformSize;\n if (['top', 'bottom'].includes(tabPosition)) {\n charUnit = 'width';\n position = rtl ? 'right' : 'left';\n transformSize = Math.abs(transform);\n } else {\n charUnit = 'height';\n position = 'top';\n transformSize = -transform;\n }\n return useMemo(function () {\n if (!tabs.length) {\n return [0, 0];\n }\n var len = tabs.length;\n var endIndex = len;\n for (var i = 0; i < len; i += 1) {\n var offset = tabOffsets.get(tabs[i].key) || DEFAULT_SIZE;\n if (offset[position] + offset[charUnit] > transformSize + visibleTabContentValue) {\n endIndex = i - 1;\n break;\n }\n }\n var startIndex = 0;\n for (var _i = len - 1; _i >= 0; _i -= 1) {\n var _offset = tabOffsets.get(tabs[_i].key) || DEFAULT_SIZE;\n if (_offset[position] < transformSize) {\n startIndex = _i + 1;\n break;\n }\n }\n return startIndex >= endIndex ? [0, 0] : [startIndex, endIndex];\n }, [tabOffsets, visibleTabContentValue, tabContentSizeValue, addNodeSizeValue, operationNodeSizeValue, transformSize, tabPosition, tabs.map(function (tab) {\n return tab.key;\n }).join('_'), rtl]);\n}","/**\n * We trade Map as deps which may change with same value but different ref object.\n * We should make it as hash for deps\n * */\nexport function stringify(obj) {\n var tgt;\n if (obj instanceof Map) {\n tgt = {};\n obj.forEach(function (v, k) {\n tgt[k] = v;\n });\n } else {\n tgt = obj;\n }\n return JSON.stringify(tgt);\n}\nvar RC_TABS_DOUBLE_QUOTE = 'TABS_DQ';\nexport function genDataNodeKey(key) {\n return String(key).replace(/\"/g, RC_TABS_DOUBLE_QUOTE);\n}\nexport function getRemovable(closable, closeIcon, editable, disabled) {\n if (\n // Only editable tabs can be removed\n !editable ||\n // Tabs cannot be removed when disabled\n disabled ||\n // closable is false\n closable === false ||\n // If closable is undefined, the remove button should be hidden when closeIcon is null or false\n closable === undefined && (closeIcon === false || closeIcon === null)) {\n return false;\n }\n return true;\n}","import * as React from 'react';\nfunction AddButton(_ref, ref) {\n var prefixCls = _ref.prefixCls,\n editable = _ref.editable,\n locale = _ref.locale,\n style = _ref.style;\n if (!editable || editable.showAdd === false) {\n return null;\n }\n return /*#__PURE__*/React.createElement(\"button\", {\n ref: ref,\n type: \"button\",\n className: \"\".concat(prefixCls, \"-nav-add\"),\n style: style,\n \"aria-label\": (locale === null || locale === void 0 ? void 0 : locale.addAriaLabel) || 'Add tab',\n onClick: function onClick(event) {\n editable.onEdit('add', {\n event: event\n });\n }\n }, editable.addIcon || '+');\n}\nexport default /*#__PURE__*/React.forwardRef(AddButton);","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport * as React from 'react';\nvar ExtraContent = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var position = _ref.position,\n prefixCls = _ref.prefixCls,\n extra = _ref.extra;\n if (!extra) return null;\n var content;\n\n // Parse extra\n var assertExtra = {};\n if (_typeof(extra) === 'object' && ! /*#__PURE__*/React.isValidElement(extra)) {\n assertExtra = extra;\n } else {\n assertExtra.right = extra;\n }\n if (position === 'right') {\n content = assertExtra.right;\n }\n if (position === 'left') {\n content = assertExtra.left;\n }\n return content ? /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-extra-content\"),\n ref: ref\n }, content) : null;\n});\nif (process.env.NODE_ENV !== 'production') {\n ExtraContent.displayName = 'ExtraContent';\n}\nexport default ExtraContent;","import KeyCode from \"rc-util/es/KeyCode\";\nimport raf from \"rc-util/es/raf\";\nimport * as React from \"react\";\nvar ESC = KeyCode.ESC,\n TAB = KeyCode.TAB;\nexport default function useAccessibility(_ref) {\n var visible = _ref.visible,\n triggerRef = _ref.triggerRef,\n onVisibleChange = _ref.onVisibleChange,\n autoFocus = _ref.autoFocus,\n overlayRef = _ref.overlayRef;\n var focusMenuRef = React.useRef(false);\n var handleCloseMenuAndReturnFocus = function handleCloseMenuAndReturnFocus() {\n if (visible) {\n var _triggerRef$current, _triggerRef$current$f;\n (_triggerRef$current = triggerRef.current) === null || _triggerRef$current === void 0 ? void 0 : (_triggerRef$current$f = _triggerRef$current.focus) === null || _triggerRef$current$f === void 0 ? void 0 : _triggerRef$current$f.call(_triggerRef$current);\n onVisibleChange === null || onVisibleChange === void 0 ? void 0 : onVisibleChange(false);\n }\n };\n var focusMenu = function focusMenu() {\n var _overlayRef$current;\n if ((_overlayRef$current = overlayRef.current) !== null && _overlayRef$current !== void 0 && _overlayRef$current.focus) {\n overlayRef.current.focus();\n focusMenuRef.current = true;\n return true;\n }\n return false;\n };\n var handleKeyDown = function handleKeyDown(event) {\n switch (event.keyCode) {\n case ESC:\n handleCloseMenuAndReturnFocus();\n break;\n case TAB:\n {\n var focusResult = false;\n if (!focusMenuRef.current) {\n focusResult = focusMenu();\n }\n if (focusResult) {\n event.preventDefault();\n } else {\n handleCloseMenuAndReturnFocus();\n }\n break;\n }\n }\n };\n React.useEffect(function () {\n if (visible) {\n window.addEventListener(\"keydown\", handleKeyDown);\n if (autoFocus) {\n // FIXME: hack with raf\n raf(focusMenu, 3);\n }\n return function () {\n window.removeEventListener(\"keydown\", handleKeyDown);\n focusMenuRef.current = false;\n };\n }\n return function () {\n focusMenuRef.current = false;\n };\n }, [visible]); // eslint-disable-line react-hooks/exhaustive-deps\n}","import React, { forwardRef, useMemo } from 'react';\nimport { composeRef, supportRef } from \"rc-util/es/ref\";\nvar Overlay = /*#__PURE__*/forwardRef(function (props, ref) {\n var overlay = props.overlay,\n arrow = props.arrow,\n prefixCls = props.prefixCls;\n var overlayNode = useMemo(function () {\n var overlayElement;\n if (typeof overlay === 'function') {\n overlayElement = overlay();\n } else {\n overlayElement = overlay;\n }\n return overlayElement;\n }, [overlay]);\n var composedRef = composeRef(ref, overlayNode === null || overlayNode === void 0 ? void 0 : overlayNode.ref);\n return /*#__PURE__*/React.createElement(React.Fragment, null, arrow && /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-arrow\")\n }), /*#__PURE__*/React.cloneElement(overlayNode, {\n ref: supportRef(overlayNode) ? composedRef : undefined\n }));\n});\nexport default Overlay;","var autoAdjustOverflow = {\n adjustX: 1,\n adjustY: 1\n};\nvar targetOffset = [0, 0];\nvar placements = {\n topLeft: {\n points: ['bl', 'tl'],\n overflow: autoAdjustOverflow,\n offset: [0, -4],\n targetOffset: targetOffset\n },\n top: {\n points: ['bc', 'tc'],\n overflow: autoAdjustOverflow,\n offset: [0, -4],\n targetOffset: targetOffset\n },\n topRight: {\n points: ['br', 'tr'],\n overflow: autoAdjustOverflow,\n offset: [0, -4],\n targetOffset: targetOffset\n },\n bottomLeft: {\n points: ['tl', 'bl'],\n overflow: autoAdjustOverflow,\n offset: [0, 4],\n targetOffset: targetOffset\n },\n bottom: {\n points: ['tc', 'bc'],\n overflow: autoAdjustOverflow,\n offset: [0, 4],\n targetOffset: targetOffset\n },\n bottomRight: {\n points: ['tr', 'br'],\n overflow: autoAdjustOverflow,\n offset: [0, 4],\n targetOffset: targetOffset\n }\n};\nexport default placements;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"arrow\", \"prefixCls\", \"transitionName\", \"animation\", \"align\", \"placement\", \"placements\", \"getPopupContainer\", \"showAction\", \"hideAction\", \"overlayClassName\", \"overlayStyle\", \"visible\", \"trigger\", \"autoFocus\", \"overlay\", \"children\", \"onVisibleChange\"];\nimport Trigger from '@rc-component/trigger';\nimport classNames from 'classnames';\nimport { composeRef, supportRef } from \"rc-util/es/ref\";\nimport React from 'react';\nimport useAccessibility from \"./hooks/useAccessibility\";\nimport Overlay from \"./Overlay\";\nimport Placements from \"./placements\";\nfunction Dropdown(props, ref) {\n var _children$props;\n var _props$arrow = props.arrow,\n arrow = _props$arrow === void 0 ? false : _props$arrow,\n _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-dropdown' : _props$prefixCls,\n transitionName = props.transitionName,\n animation = props.animation,\n align = props.align,\n _props$placement = props.placement,\n placement = _props$placement === void 0 ? 'bottomLeft' : _props$placement,\n _props$placements = props.placements,\n placements = _props$placements === void 0 ? Placements : _props$placements,\n getPopupContainer = props.getPopupContainer,\n showAction = props.showAction,\n hideAction = props.hideAction,\n overlayClassName = props.overlayClassName,\n overlayStyle = props.overlayStyle,\n visible = props.visible,\n _props$trigger = props.trigger,\n trigger = _props$trigger === void 0 ? ['hover'] : _props$trigger,\n autoFocus = props.autoFocus,\n overlay = props.overlay,\n children = props.children,\n onVisibleChange = props.onVisibleChange,\n otherProps = _objectWithoutProperties(props, _excluded);\n var _React$useState = React.useState(),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n triggerVisible = _React$useState2[0],\n setTriggerVisible = _React$useState2[1];\n var mergedVisible = 'visible' in props ? visible : triggerVisible;\n var triggerRef = React.useRef(null);\n var overlayRef = React.useRef(null);\n var childRef = React.useRef(null);\n React.useImperativeHandle(ref, function () {\n return triggerRef.current;\n });\n var handleVisibleChange = function handleVisibleChange(newVisible) {\n setTriggerVisible(newVisible);\n onVisibleChange === null || onVisibleChange === void 0 ? void 0 : onVisibleChange(newVisible);\n };\n useAccessibility({\n visible: mergedVisible,\n triggerRef: childRef,\n onVisibleChange: handleVisibleChange,\n autoFocus: autoFocus,\n overlayRef: overlayRef\n });\n var onClick = function onClick(e) {\n var onOverlayClick = props.onOverlayClick;\n setTriggerVisible(false);\n if (onOverlayClick) {\n onOverlayClick(e);\n }\n };\n var getMenuElement = function getMenuElement() {\n return /*#__PURE__*/React.createElement(Overlay, {\n ref: overlayRef,\n overlay: overlay,\n prefixCls: prefixCls,\n arrow: arrow\n });\n };\n var getMenuElementOrLambda = function getMenuElementOrLambda() {\n if (typeof overlay === 'function') {\n return getMenuElement;\n }\n return getMenuElement();\n };\n var getMinOverlayWidthMatchTrigger = function getMinOverlayWidthMatchTrigger() {\n var minOverlayWidthMatchTrigger = props.minOverlayWidthMatchTrigger,\n alignPoint = props.alignPoint;\n if ('minOverlayWidthMatchTrigger' in props) {\n return minOverlayWidthMatchTrigger;\n }\n return !alignPoint;\n };\n var getOpenClassName = function getOpenClassName() {\n var openClassName = props.openClassName;\n if (openClassName !== undefined) {\n return openClassName;\n }\n return \"\".concat(prefixCls, \"-open\");\n };\n var childrenNode = /*#__PURE__*/React.cloneElement(children, {\n className: classNames((_children$props = children.props) === null || _children$props === void 0 ? void 0 : _children$props.className, mergedVisible && getOpenClassName()),\n ref: supportRef(children) ? composeRef(childRef, children.ref) : undefined\n });\n var triggerHideAction = hideAction;\n if (!triggerHideAction && trigger.indexOf('contextMenu') !== -1) {\n triggerHideAction = ['click'];\n }\n return /*#__PURE__*/React.createElement(Trigger, _extends({\n builtinPlacements: placements\n }, otherProps, {\n prefixCls: prefixCls,\n ref: triggerRef,\n popupClassName: classNames(overlayClassName, _defineProperty({}, \"\".concat(prefixCls, \"-show-arrow\"), arrow)),\n popupStyle: overlayStyle,\n action: trigger,\n showAction: showAction,\n hideAction: triggerHideAction,\n popupPlacement: placement,\n popupAlign: align,\n popupTransitionName: transitionName,\n popupAnimation: animation,\n popupVisible: mergedVisible,\n stretch: getMinOverlayWidthMatchTrigger() ? 'minWidth' : '',\n popup: getMenuElementOrLambda(),\n onPopupVisibleChange: handleVisibleChange,\n onPopupClick: onClick,\n getPopupContainer: getPopupContainer\n }), childrenNode);\n}\nexport default /*#__PURE__*/React.forwardRef(Dropdown);","import Dropdown from \"./Dropdown\";\nexport default Dropdown;","import * as React from 'react';\nexport var IdContext = /*#__PURE__*/React.createContext(null);\nexport function getMenuId(uuid, eventKey) {\n if (uuid === undefined) {\n return null;\n }\n return \"\".concat(uuid, \"-\").concat(eventKey);\n}\n\n/**\n * Get `data-menu-id`\n */\nexport function useMenuId(eventKey) {\n var id = React.useContext(IdContext);\n return getMenuId(id, eventKey);\n}","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nvar _excluded = [\"children\", \"locked\"];\nimport * as React from 'react';\nimport useMemo from \"rc-util/es/hooks/useMemo\";\nimport isEqual from \"rc-util/es/isEqual\";\nexport var MenuContext = /*#__PURE__*/React.createContext(null);\nfunction mergeProps(origin, target) {\n var clone = _objectSpread({}, origin);\n Object.keys(target).forEach(function (key) {\n var value = target[key];\n if (value !== undefined) {\n clone[key] = value;\n }\n });\n return clone;\n}\nexport default function InheritableContextProvider(_ref) {\n var children = _ref.children,\n locked = _ref.locked,\n restProps = _objectWithoutProperties(_ref, _excluded);\n var context = React.useContext(MenuContext);\n var inheritableContext = useMemo(function () {\n return mergeProps(context, restProps);\n }, [context, restProps], function (prev, next) {\n return !locked && (prev[0] !== next[0] || !isEqual(prev[1], next[1], true));\n });\n return /*#__PURE__*/React.createElement(MenuContext.Provider, {\n value: inheritableContext\n }, children);\n}","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport * as React from 'react';\nvar EmptyList = [];\n\n// ========================= Path Register =========================\n\nexport var PathRegisterContext = /*#__PURE__*/React.createContext(null);\nexport function useMeasure() {\n return React.useContext(PathRegisterContext);\n}\n\n// ========================= Path Tracker ==========================\nexport var PathTrackerContext = /*#__PURE__*/React.createContext(EmptyList);\nexport function useFullPath(eventKey) {\n var parentKeyPath = React.useContext(PathTrackerContext);\n return React.useMemo(function () {\n return eventKey !== undefined ? [].concat(_toConsumableArray(parentKeyPath), [eventKey]) : parentKeyPath;\n }, [parentKeyPath, eventKey]);\n}\n\n// =========================== Path User ===========================\n\nexport var PathUserContext = /*#__PURE__*/React.createContext(null);","import * as React from 'react';\nvar PrivateContext = /*#__PURE__*/React.createContext({});\nexport default PrivateContext;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport isVisible from \"./isVisible\";\nfunction focusable(node) {\n var includePositive = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n if (isVisible(node)) {\n var nodeName = node.nodeName.toLowerCase();\n var isFocusableElement =\n // Focusable element\n ['input', 'select', 'textarea', 'button'].includes(nodeName) ||\n // Editable element\n node.isContentEditable ||\n // Anchor with href element\n nodeName === 'a' && !!node.getAttribute('href');\n\n // Get tabIndex\n var tabIndexAttr = node.getAttribute('tabindex');\n var tabIndexNum = Number(tabIndexAttr);\n\n // Parse as number if validate\n var tabIndex = null;\n if (tabIndexAttr && !Number.isNaN(tabIndexNum)) {\n tabIndex = tabIndexNum;\n } else if (isFocusableElement && tabIndex === null) {\n tabIndex = 0;\n }\n\n // Block focusable if disabled\n if (isFocusableElement && node.disabled) {\n tabIndex = null;\n }\n return tabIndex !== null && (tabIndex >= 0 || includePositive && tabIndex < 0);\n }\n return false;\n}\nexport function getFocusNodeList(node) {\n var includePositive = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var res = _toConsumableArray(node.querySelectorAll('*')).filter(function (child) {\n return focusable(child, includePositive);\n });\n if (focusable(node, includePositive)) {\n res.unshift(node);\n }\n return res;\n}\nvar lastFocusElement = null;\n\n/** @deprecated Do not use since this may failed when used in async */\nexport function saveLastFocusNode() {\n lastFocusElement = document.activeElement;\n}\n\n/** @deprecated Do not use since this may failed when used in async */\nexport function clearLastFocusNode() {\n lastFocusElement = null;\n}\n\n/** @deprecated Do not use since this may failed when used in async */\nexport function backLastFocusNode() {\n if (lastFocusElement) {\n try {\n // 元素可能已经被移动了\n lastFocusElement.focus();\n\n /* eslint-disable no-empty */\n } catch (e) {\n // empty\n }\n /* eslint-enable no-empty */\n }\n}\n\nexport function limitTabRange(node, e) {\n if (e.keyCode === 9) {\n var tabNodeList = getFocusNodeList(node);\n var lastTabNode = tabNodeList[e.shiftKey ? 0 : tabNodeList.length - 1];\n var leavingTab = lastTabNode === document.activeElement || node === document.activeElement;\n if (leavingTab) {\n var target = tabNodeList[e.shiftKey ? tabNodeList.length - 1 : 0];\n target.focus();\n e.preventDefault();\n }\n }\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport raf from \"rc-util/es/raf\";\nimport { getFocusNodeList } from \"rc-util/es/Dom/focus\";\nimport { getMenuId } from \"../context/IdContext\";\n\n// destruct to reduce minify size\nvar LEFT = KeyCode.LEFT,\n RIGHT = KeyCode.RIGHT,\n UP = KeyCode.UP,\n DOWN = KeyCode.DOWN,\n ENTER = KeyCode.ENTER,\n ESC = KeyCode.ESC,\n HOME = KeyCode.HOME,\n END = KeyCode.END;\nvar ArrowKeys = [UP, DOWN, LEFT, RIGHT];\nfunction getOffset(mode, isRootLevel, isRtl, which) {\n var _inline, _horizontal, _vertical, _offsets;\n var prev = 'prev';\n var next = 'next';\n var children = 'children';\n var parent = 'parent';\n\n // Inline enter is special that we use unique operation\n if (mode === 'inline' && which === ENTER) {\n return {\n inlineTrigger: true\n };\n }\n var inline = (_inline = {}, _defineProperty(_inline, UP, prev), _defineProperty(_inline, DOWN, next), _inline);\n var horizontal = (_horizontal = {}, _defineProperty(_horizontal, LEFT, isRtl ? next : prev), _defineProperty(_horizontal, RIGHT, isRtl ? prev : next), _defineProperty(_horizontal, DOWN, children), _defineProperty(_horizontal, ENTER, children), _horizontal);\n var vertical = (_vertical = {}, _defineProperty(_vertical, UP, prev), _defineProperty(_vertical, DOWN, next), _defineProperty(_vertical, ENTER, children), _defineProperty(_vertical, ESC, parent), _defineProperty(_vertical, LEFT, isRtl ? children : parent), _defineProperty(_vertical, RIGHT, isRtl ? parent : children), _vertical);\n var offsets = {\n inline: inline,\n horizontal: horizontal,\n vertical: vertical,\n inlineSub: inline,\n horizontalSub: vertical,\n verticalSub: vertical\n };\n var type = (_offsets = offsets[\"\".concat(mode).concat(isRootLevel ? '' : 'Sub')]) === null || _offsets === void 0 ? void 0 : _offsets[which];\n switch (type) {\n case prev:\n return {\n offset: -1,\n sibling: true\n };\n case next:\n return {\n offset: 1,\n sibling: true\n };\n case parent:\n return {\n offset: -1,\n sibling: false\n };\n case children:\n return {\n offset: 1,\n sibling: false\n };\n default:\n return null;\n }\n}\nfunction findContainerUL(element) {\n var current = element;\n while (current) {\n if (current.getAttribute('data-menu-list')) {\n return current;\n }\n current = current.parentElement;\n }\n\n // Normally should not reach this line\n /* istanbul ignore next */\n return null;\n}\n\n/**\n * Find focused element within element set provided\n */\nfunction getFocusElement(activeElement, elements) {\n var current = activeElement || document.activeElement;\n while (current) {\n if (elements.has(current)) {\n return current;\n }\n current = current.parentElement;\n }\n return null;\n}\n\n/**\n * Get focusable elements from the element set under provided container\n */\nfunction getFocusableElements(container, elements) {\n var list = getFocusNodeList(container, true);\n return list.filter(function (ele) {\n return elements.has(ele);\n });\n}\nfunction getNextFocusElement(parentQueryContainer, elements, focusMenuElement) {\n var offset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;\n // Key on the menu item will not get validate parent container\n if (!parentQueryContainer) {\n return null;\n }\n\n // List current level menu item elements\n var sameLevelFocusableMenuElementList = getFocusableElements(parentQueryContainer, elements);\n\n // Find next focus index\n var count = sameLevelFocusableMenuElementList.length;\n var focusIndex = sameLevelFocusableMenuElementList.findIndex(function (ele) {\n return focusMenuElement === ele;\n });\n if (offset < 0) {\n if (focusIndex === -1) {\n focusIndex = count - 1;\n } else {\n focusIndex -= 1;\n }\n } else if (offset > 0) {\n focusIndex += 1;\n }\n focusIndex = (focusIndex + count) % count;\n\n // Focus menu item\n return sameLevelFocusableMenuElementList[focusIndex];\n}\nexport default function useAccessibility(mode, activeKey, isRtl, id, containerRef, getKeys, getKeyPath, triggerActiveKey, triggerAccessibilityOpen, originOnKeyDown) {\n var rafRef = React.useRef();\n var activeRef = React.useRef();\n activeRef.current = activeKey;\n var cleanRaf = function cleanRaf() {\n raf.cancel(rafRef.current);\n };\n React.useEffect(function () {\n return function () {\n cleanRaf();\n };\n }, []);\n return function (e) {\n var which = e.which;\n if ([].concat(ArrowKeys, [ENTER, ESC, HOME, END]).includes(which)) {\n // Convert key to elements\n var elements;\n var key2element;\n var element2key;\n\n // >>> Wrap as function since we use raf for some case\n var refreshElements = function refreshElements() {\n elements = new Set();\n key2element = new Map();\n element2key = new Map();\n var keys = getKeys();\n keys.forEach(function (key) {\n var element = document.querySelector(\"[data-menu-id='\".concat(getMenuId(id, key), \"']\"));\n if (element) {\n elements.add(element);\n element2key.set(element, key);\n key2element.set(key, element);\n }\n });\n return elements;\n };\n refreshElements();\n\n // First we should find current focused MenuItem/SubMenu element\n var activeElement = key2element.get(activeKey);\n var focusMenuElement = getFocusElement(activeElement, elements);\n var focusMenuKey = element2key.get(focusMenuElement);\n var offsetObj = getOffset(mode, getKeyPath(focusMenuKey, true).length === 1, isRtl, which);\n\n // Some mode do not have fully arrow operation like inline\n if (!offsetObj && which !== HOME && which !== END) {\n return;\n }\n\n // Arrow prevent default to avoid page scroll\n if (ArrowKeys.includes(which) || [HOME, END].includes(which)) {\n e.preventDefault();\n }\n var tryFocus = function tryFocus(menuElement) {\n if (menuElement) {\n var focusTargetElement = menuElement;\n\n // Focus to link instead of menu item if possible\n var link = menuElement.querySelector('a');\n if (link !== null && link !== void 0 && link.getAttribute('href')) {\n focusTargetElement = link;\n }\n var targetKey = element2key.get(menuElement);\n triggerActiveKey(targetKey);\n\n /**\n * Do not `useEffect` here since `tryFocus` may trigger async\n * which makes React sync update the `activeKey`\n * that force render before `useRef` set the next activeKey\n */\n cleanRaf();\n rafRef.current = raf(function () {\n if (activeRef.current === targetKey) {\n focusTargetElement.focus();\n }\n });\n }\n };\n if ([HOME, END].includes(which) || offsetObj.sibling || !focusMenuElement) {\n // ========================== Sibling ==========================\n // Find walkable focus menu element container\n var parentQueryContainer;\n if (!focusMenuElement || mode === 'inline') {\n parentQueryContainer = containerRef.current;\n } else {\n parentQueryContainer = findContainerUL(focusMenuElement);\n }\n\n // Get next focus element\n var targetElement;\n var focusableElements = getFocusableElements(parentQueryContainer, elements);\n if (which === HOME) {\n targetElement = focusableElements[0];\n } else if (which === END) {\n targetElement = focusableElements[focusableElements.length - 1];\n } else {\n targetElement = getNextFocusElement(parentQueryContainer, elements, focusMenuElement, offsetObj.offset);\n }\n // Focus menu item\n tryFocus(targetElement);\n\n // ======================= InlineTrigger =======================\n } else if (offsetObj.inlineTrigger) {\n // Inline trigger no need switch to sub menu item\n triggerAccessibilityOpen(focusMenuKey);\n // =========================== Level ===========================\n } else if (offsetObj.offset > 0) {\n triggerAccessibilityOpen(focusMenuKey, true);\n cleanRaf();\n rafRef.current = raf(function () {\n // Async should resync elements\n refreshElements();\n var controlId = focusMenuElement.getAttribute('aria-controls');\n var subQueryContainer = document.getElementById(controlId);\n\n // Get sub focusable menu item\n var targetElement = getNextFocusElement(subQueryContainer, elements);\n\n // Focus menu item\n tryFocus(targetElement);\n }, 5);\n } else if (offsetObj.offset < 0) {\n var keyPath = getKeyPath(focusMenuKey, true);\n var parentKey = keyPath[keyPath.length - 2];\n var parentMenuElement = key2element.get(parentKey);\n\n // Focus menu item\n triggerAccessibilityOpen(parentKey, false);\n tryFocus(parentMenuElement);\n }\n }\n\n // Pass origin key down event\n originOnKeyDown === null || originOnKeyDown === void 0 ? void 0 : originOnKeyDown(e);\n };\n}","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useRef, useCallback } from 'react';\nimport warning from \"rc-util/es/warning\";\nimport { nextSlice } from \"../utils/timeUtil\";\nvar PATH_SPLIT = '__RC_UTIL_PATH_SPLIT__';\nvar getPathStr = function getPathStr(keyPath) {\n return keyPath.join(PATH_SPLIT);\n};\nvar getPathKeys = function getPathKeys(keyPathStr) {\n return keyPathStr.split(PATH_SPLIT);\n};\nexport var OVERFLOW_KEY = 'rc-menu-more';\nexport default function useKeyRecords() {\n var _React$useState = React.useState({}),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n internalForceUpdate = _React$useState2[1];\n var key2pathRef = useRef(new Map());\n var path2keyRef = useRef(new Map());\n var _React$useState3 = React.useState([]),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n overflowKeys = _React$useState4[0],\n setOverflowKeys = _React$useState4[1];\n var updateRef = useRef(0);\n var destroyRef = useRef(false);\n var forceUpdate = function forceUpdate() {\n if (!destroyRef.current) {\n internalForceUpdate({});\n }\n };\n var registerPath = useCallback(function (key, keyPath) {\n // Warning for invalidate or duplicated `key`\n if (process.env.NODE_ENV !== 'production') {\n warning(!key2pathRef.current.has(key), \"Duplicated key '\".concat(key, \"' used in Menu by path [\").concat(keyPath.join(' > '), \"]\"));\n }\n\n // Fill map\n var connectedPath = getPathStr(keyPath);\n path2keyRef.current.set(connectedPath, key);\n key2pathRef.current.set(key, connectedPath);\n updateRef.current += 1;\n var id = updateRef.current;\n nextSlice(function () {\n if (id === updateRef.current) {\n forceUpdate();\n }\n });\n }, []);\n var unregisterPath = useCallback(function (key, keyPath) {\n var connectedPath = getPathStr(keyPath);\n path2keyRef.current.delete(connectedPath);\n key2pathRef.current.delete(key);\n }, []);\n var refreshOverflowKeys = useCallback(function (keys) {\n setOverflowKeys(keys);\n }, []);\n var getKeyPath = useCallback(function (eventKey, includeOverflow) {\n var fullPath = key2pathRef.current.get(eventKey) || '';\n var keys = getPathKeys(fullPath);\n if (includeOverflow && overflowKeys.includes(keys[0])) {\n keys.unshift(OVERFLOW_KEY);\n }\n return keys;\n }, [overflowKeys]);\n var isSubPathKey = useCallback(function (pathKeys, eventKey) {\n return pathKeys.some(function (pathKey) {\n var pathKeyList = getKeyPath(pathKey, true);\n return pathKeyList.includes(eventKey);\n });\n }, [getKeyPath]);\n var getKeys = function getKeys() {\n var keys = _toConsumableArray(key2pathRef.current.keys());\n if (overflowKeys.length) {\n keys.push(OVERFLOW_KEY);\n }\n return keys;\n };\n\n /**\n * Find current key related child path keys\n */\n var getSubPathKeys = useCallback(function (key) {\n var connectedPath = \"\".concat(key2pathRef.current.get(key)).concat(PATH_SPLIT);\n var pathKeys = new Set();\n _toConsumableArray(path2keyRef.current.keys()).forEach(function (pathKey) {\n if (pathKey.startsWith(connectedPath)) {\n pathKeys.add(path2keyRef.current.get(pathKey));\n }\n });\n return pathKeys;\n }, []);\n React.useEffect(function () {\n return function () {\n destroyRef.current = true;\n };\n }, []);\n return {\n // Register\n registerPath: registerPath,\n unregisterPath: unregisterPath,\n refreshOverflowKeys: refreshOverflowKeys,\n // Util\n isSubPathKey: isSubPathKey,\n getKeyPath: getKeyPath,\n getKeys: getKeys,\n getSubPathKeys: getSubPathKeys\n };\n}","export function nextSlice(callback) {\n /* istanbul ignore next */\n Promise.resolve().then(callback);\n}","import * as React from 'react';\n\n/**\n * Cache callback function that always return same ref instead.\n * This is used for context optimization.\n */\nexport default function useMemoCallback(func) {\n var funRef = React.useRef(func);\n funRef.current = func;\n var callback = React.useCallback(function () {\n var _funRef$current;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return (_funRef$current = funRef.current) === null || _funRef$current === void 0 ? void 0 : _funRef$current.call.apply(_funRef$current, [funRef].concat(args));\n }, []);\n return func ? callback : undefined;\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nvar uniquePrefix = Math.random().toFixed(5).toString().slice(2);\nvar internalId = 0;\nexport default function useUUID(id) {\n var _useMergedState = useMergedState(id, {\n value: id\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n uuid = _useMergedState2[0],\n setUUID = _useMergedState2[1];\n React.useEffect(function () {\n internalId += 1;\n var newId = process.env.NODE_ENV === 'test' ? 'test' : \"\".concat(uniquePrefix, \"-\").concat(internalId);\n setUUID(\"rc-menu-uuid-\".concat(newId));\n }, []);\n return uuid;\n}","import * as React from 'react';\nimport { MenuContext } from \"../context/MenuContext\";\nexport default function useActive(eventKey, disabled, onMouseEnter, onMouseLeave) {\n var _React$useContext = React.useContext(MenuContext),\n activeKey = _React$useContext.activeKey,\n onActive = _React$useContext.onActive,\n onInactive = _React$useContext.onInactive;\n var ret = {\n active: activeKey === eventKey\n };\n\n // Skip when disabled\n if (!disabled) {\n ret.onMouseEnter = function (domEvent) {\n onMouseEnter === null || onMouseEnter === void 0 ? void 0 : onMouseEnter({\n key: eventKey,\n domEvent: domEvent\n });\n onActive(eventKey);\n };\n ret.onMouseLeave = function (domEvent) {\n onMouseLeave === null || onMouseLeave === void 0 ? void 0 : onMouseLeave({\n key: eventKey,\n domEvent: domEvent\n });\n onInactive(eventKey);\n };\n }\n return ret;\n}","import * as React from 'react';\nimport { MenuContext } from \"../context/MenuContext\";\nexport default function useDirectionStyle(level) {\n var _React$useContext = React.useContext(MenuContext),\n mode = _React$useContext.mode,\n rtl = _React$useContext.rtl,\n inlineIndent = _React$useContext.inlineIndent;\n if (mode !== 'inline') {\n return null;\n }\n var len = level;\n return rtl ? {\n paddingRight: len * inlineIndent\n } : {\n paddingLeft: len * inlineIndent\n };\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nexport default function Icon(_ref) {\n var icon = _ref.icon,\n props = _ref.props,\n children = _ref.children;\n var iconNode;\n if (typeof icon === 'function') {\n iconNode = /*#__PURE__*/React.createElement(icon, _objectSpread({}, props));\n } else {\n // Compatible for origin definition\n iconNode = icon;\n }\n return iconNode || children || null;\n}","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"item\"];\nimport warning from \"rc-util/es/warning\";\n\n/**\n * `onClick` event return `info.item` which point to react node directly.\n * We should warning this since it will not work on FC.\n */\nexport function warnItemProp(_ref) {\n var item = _ref.item,\n restInfo = _objectWithoutProperties(_ref, _excluded);\n Object.defineProperty(restInfo, 'item', {\n get: function get() {\n warning(false, '`info.item` is deprecated since we will move to function component that not provides React Node instance in future.');\n return item;\n }\n });\n return restInfo;\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nvar _excluded = [\"title\", \"attribute\", \"elementRef\"],\n _excluded2 = [\"style\", \"className\", \"eventKey\", \"warnKey\", \"disabled\", \"itemIcon\", \"children\", \"role\", \"onMouseEnter\", \"onMouseLeave\", \"onClick\", \"onKeyDown\", \"onFocus\"],\n _excluded3 = [\"active\"];\nimport classNames from 'classnames';\nimport Overflow from 'rc-overflow';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport omit from \"rc-util/es/omit\";\nimport { useComposeRef } from \"rc-util/es/ref\";\nimport warning from \"rc-util/es/warning\";\nimport * as React from 'react';\nimport { useMenuId } from \"./context/IdContext\";\nimport { MenuContext } from \"./context/MenuContext\";\nimport { useFullPath, useMeasure } from \"./context/PathContext\";\nimport PrivateContext from \"./context/PrivateContext\";\nimport useActive from \"./hooks/useActive\";\nimport useDirectionStyle from \"./hooks/useDirectionStyle\";\nimport Icon from \"./Icon\";\nimport { warnItemProp } from \"./utils/warnUtil\";\n// Since Menu event provide the `info.item` which point to the MenuItem node instance.\n// We have to use class component here.\n// This should be removed from doc & api in future.\nvar LegacyMenuItem = /*#__PURE__*/function (_React$Component) {\n _inherits(LegacyMenuItem, _React$Component);\n var _super = _createSuper(LegacyMenuItem);\n function LegacyMenuItem() {\n _classCallCheck(this, LegacyMenuItem);\n return _super.apply(this, arguments);\n }\n _createClass(LegacyMenuItem, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n title = _this$props.title,\n attribute = _this$props.attribute,\n elementRef = _this$props.elementRef,\n restProps = _objectWithoutProperties(_this$props, _excluded);\n\n // Here the props are eventually passed to the DOM element.\n // React does not recognize non-standard attributes.\n // Therefore, remove the props that is not used here.\n // ref: https://github.com/ant-design/ant-design/issues/41395\n var passedProps = omit(restProps, ['eventKey', 'popupClassName', 'popupOffset', 'onTitleClick']);\n warning(!attribute, '`attribute` of Menu.Item is deprecated. Please pass attribute directly.');\n return /*#__PURE__*/React.createElement(Overflow.Item, _extends({}, attribute, {\n title: typeof title === 'string' ? title : undefined\n }, passedProps, {\n ref: elementRef\n }));\n }\n }]);\n return LegacyMenuItem;\n}(React.Component);\n/**\n * Real Menu Item component\n */\nvar InternalMenuItem = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _classNames;\n var style = props.style,\n className = props.className,\n eventKey = props.eventKey,\n warnKey = props.warnKey,\n disabled = props.disabled,\n itemIcon = props.itemIcon,\n children = props.children,\n role = props.role,\n onMouseEnter = props.onMouseEnter,\n onMouseLeave = props.onMouseLeave,\n onClick = props.onClick,\n onKeyDown = props.onKeyDown,\n onFocus = props.onFocus,\n restProps = _objectWithoutProperties(props, _excluded2);\n var domDataId = useMenuId(eventKey);\n var _React$useContext = React.useContext(MenuContext),\n prefixCls = _React$useContext.prefixCls,\n onItemClick = _React$useContext.onItemClick,\n contextDisabled = _React$useContext.disabled,\n overflowDisabled = _React$useContext.overflowDisabled,\n contextItemIcon = _React$useContext.itemIcon,\n selectedKeys = _React$useContext.selectedKeys,\n onActive = _React$useContext.onActive;\n var _React$useContext2 = React.useContext(PrivateContext),\n _internalRenderMenuItem = _React$useContext2._internalRenderMenuItem;\n var itemCls = \"\".concat(prefixCls, \"-item\");\n var legacyMenuItemRef = React.useRef();\n var elementRef = React.useRef();\n var mergedDisabled = contextDisabled || disabled;\n var mergedEleRef = useComposeRef(ref, elementRef);\n var connectedKeys = useFullPath(eventKey);\n\n // ================================ Warn ================================\n if (process.env.NODE_ENV !== 'production' && warnKey) {\n warning(false, 'MenuItem should not leave undefined `key`.');\n }\n\n // ============================= Info =============================\n var getEventInfo = function getEventInfo(e) {\n return {\n key: eventKey,\n // Note: For legacy code is reversed which not like other antd component\n keyPath: _toConsumableArray(connectedKeys).reverse(),\n item: legacyMenuItemRef.current,\n domEvent: e\n };\n };\n\n // ============================= Icon =============================\n var mergedItemIcon = itemIcon || contextItemIcon;\n\n // ============================ Active ============================\n var _useActive = useActive(eventKey, mergedDisabled, onMouseEnter, onMouseLeave),\n active = _useActive.active,\n activeProps = _objectWithoutProperties(_useActive, _excluded3);\n\n // ============================ Select ============================\n var selected = selectedKeys.includes(eventKey);\n\n // ======================== DirectionStyle ========================\n var directionStyle = useDirectionStyle(connectedKeys.length);\n\n // ============================ Events ============================\n var onInternalClick = function onInternalClick(e) {\n if (mergedDisabled) {\n return;\n }\n var info = getEventInfo(e);\n onClick === null || onClick === void 0 ? void 0 : onClick(warnItemProp(info));\n onItemClick(info);\n };\n var onInternalKeyDown = function onInternalKeyDown(e) {\n onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(e);\n if (e.which === KeyCode.ENTER) {\n var info = getEventInfo(e);\n\n // Legacy. Key will also trigger click event\n onClick === null || onClick === void 0 ? void 0 : onClick(warnItemProp(info));\n onItemClick(info);\n }\n };\n\n /**\n * Used for accessibility. Helper will focus element without key board.\n * We should manually trigger an active\n */\n var onInternalFocus = function onInternalFocus(e) {\n onActive(eventKey);\n onFocus === null || onFocus === void 0 ? void 0 : onFocus(e);\n };\n\n // ============================ Render ============================\n var optionRoleProps = {};\n if (props.role === 'option') {\n optionRoleProps['aria-selected'] = selected;\n }\n var renderNode = /*#__PURE__*/React.createElement(LegacyMenuItem, _extends({\n ref: legacyMenuItemRef,\n elementRef: mergedEleRef,\n role: role === null ? 'none' : role || 'menuitem',\n tabIndex: disabled ? null : -1,\n \"data-menu-id\": overflowDisabled && domDataId ? null : domDataId\n }, restProps, activeProps, optionRoleProps, {\n component: \"li\",\n \"aria-disabled\": disabled,\n style: _objectSpread(_objectSpread({}, directionStyle), style),\n className: classNames(itemCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(itemCls, \"-active\"), active), _defineProperty(_classNames, \"\".concat(itemCls, \"-selected\"), selected), _defineProperty(_classNames, \"\".concat(itemCls, \"-disabled\"), mergedDisabled), _classNames), className),\n onClick: onInternalClick,\n onKeyDown: onInternalKeyDown,\n onFocus: onInternalFocus\n }), children, /*#__PURE__*/React.createElement(Icon, {\n props: _objectSpread(_objectSpread({}, props), {}, {\n isSelected: selected\n }),\n icon: mergedItemIcon\n }));\n if (_internalRenderMenuItem) {\n renderNode = _internalRenderMenuItem(renderNode, props, {\n selected: selected\n });\n }\n return renderNode;\n});\nfunction MenuItem(props, ref) {\n var eventKey = props.eventKey;\n\n // ==================== Record KeyPath ====================\n var measure = useMeasure();\n var connectedKeyPath = useFullPath(eventKey);\n\n // eslint-disable-next-line consistent-return\n React.useEffect(function () {\n if (measure) {\n measure.registerPath(eventKey, connectedKeyPath);\n return function () {\n measure.unregisterPath(eventKey, connectedKeyPath);\n };\n }\n }, [connectedKeyPath]);\n if (measure) {\n return null;\n }\n\n // ======================== Render ========================\n return /*#__PURE__*/React.createElement(InternalMenuItem, _extends({}, props, {\n ref: ref\n }));\n}\nexport default /*#__PURE__*/React.forwardRef(MenuItem);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"className\", \"children\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { MenuContext } from \"../context/MenuContext\";\nvar InternalSubMenuList = function InternalSubMenuList(_ref, ref) {\n var className = _ref.className,\n children = _ref.children,\n restProps = _objectWithoutProperties(_ref, _excluded);\n var _React$useContext = React.useContext(MenuContext),\n prefixCls = _React$useContext.prefixCls,\n mode = _React$useContext.mode,\n rtl = _React$useContext.rtl;\n return /*#__PURE__*/React.createElement(\"ul\", _extends({\n className: classNames(prefixCls, rtl && \"\".concat(prefixCls, \"-rtl\"), \"\".concat(prefixCls, \"-sub\"), \"\".concat(prefixCls, \"-\").concat(mode === 'inline' ? 'inline' : 'vertical'), className),\n role: \"menu\"\n }, restProps, {\n \"data-menu-list\": true,\n ref: ref\n }), children);\n};\nvar SubMenuList = /*#__PURE__*/React.forwardRef(InternalSubMenuList);\nSubMenuList.displayName = 'SubMenuList';\nexport default SubMenuList;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport toArray from \"rc-util/es/Children/toArray\";\nimport * as React from 'react';\nexport function parseChildren(children, keyPath) {\n return toArray(children).map(function (child, index) {\n if ( /*#__PURE__*/React.isValidElement(child)) {\n var _eventKey, _child$props;\n var key = child.key;\n var eventKey = (_eventKey = (_child$props = child.props) === null || _child$props === void 0 ? void 0 : _child$props.eventKey) !== null && _eventKey !== void 0 ? _eventKey : key;\n var emptyKey = eventKey === null || eventKey === undefined;\n if (emptyKey) {\n eventKey = \"tmp_key-\".concat([].concat(_toConsumableArray(keyPath), [index]).join('-'));\n }\n var cloneProps = {\n key: eventKey,\n eventKey: eventKey\n };\n if (process.env.NODE_ENV !== 'production' && emptyKey) {\n cloneProps.warnKey = true;\n }\n return /*#__PURE__*/React.cloneElement(child, cloneProps);\n }\n return child;\n });\n}","var autoAdjustOverflow = {\n adjustX: 1,\n adjustY: 1\n};\nexport var placements = {\n topLeft: {\n points: ['bl', 'tl'],\n overflow: autoAdjustOverflow\n },\n topRight: {\n points: ['br', 'tr'],\n overflow: autoAdjustOverflow\n },\n bottomLeft: {\n points: ['tl', 'bl'],\n overflow: autoAdjustOverflow\n },\n bottomRight: {\n points: ['tr', 'br'],\n overflow: autoAdjustOverflow\n },\n leftTop: {\n points: ['tr', 'tl'],\n overflow: autoAdjustOverflow\n },\n leftBottom: {\n points: ['br', 'bl'],\n overflow: autoAdjustOverflow\n },\n rightTop: {\n points: ['tl', 'tr'],\n overflow: autoAdjustOverflow\n },\n rightBottom: {\n points: ['bl', 'br'],\n overflow: autoAdjustOverflow\n }\n};\nexport var placementsRtl = {\n topLeft: {\n points: ['bl', 'tl'],\n overflow: autoAdjustOverflow\n },\n topRight: {\n points: ['br', 'tr'],\n overflow: autoAdjustOverflow\n },\n bottomLeft: {\n points: ['tl', 'bl'],\n overflow: autoAdjustOverflow\n },\n bottomRight: {\n points: ['tr', 'br'],\n overflow: autoAdjustOverflow\n },\n rightTop: {\n points: ['tr', 'tl'],\n overflow: autoAdjustOverflow\n },\n rightBottom: {\n points: ['br', 'bl'],\n overflow: autoAdjustOverflow\n },\n leftTop: {\n points: ['tl', 'tr'],\n overflow: autoAdjustOverflow\n },\n leftBottom: {\n points: ['bl', 'br'],\n overflow: autoAdjustOverflow\n }\n};\nexport default placements;","export function getMotion(mode, motion, defaultMotions) {\n if (motion) {\n return motion;\n }\n if (defaultMotions) {\n return defaultMotions[mode] || defaultMotions.other;\n }\n return undefined;\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport Trigger from '@rc-component/trigger';\nimport classNames from 'classnames';\nimport raf from \"rc-util/es/raf\";\nimport { MenuContext } from \"../context/MenuContext\";\nimport { placements, placementsRtl } from \"../placements\";\nimport { getMotion } from \"../utils/motionUtil\";\nvar popupPlacementMap = {\n horizontal: 'bottomLeft',\n vertical: 'rightTop',\n 'vertical-left': 'rightTop',\n 'vertical-right': 'leftTop'\n};\nexport default function PopupTrigger(_ref) {\n var prefixCls = _ref.prefixCls,\n visible = _ref.visible,\n children = _ref.children,\n popup = _ref.popup,\n popupClassName = _ref.popupClassName,\n popupOffset = _ref.popupOffset,\n disabled = _ref.disabled,\n mode = _ref.mode,\n onVisibleChange = _ref.onVisibleChange;\n var _React$useContext = React.useContext(MenuContext),\n getPopupContainer = _React$useContext.getPopupContainer,\n rtl = _React$useContext.rtl,\n subMenuOpenDelay = _React$useContext.subMenuOpenDelay,\n subMenuCloseDelay = _React$useContext.subMenuCloseDelay,\n builtinPlacements = _React$useContext.builtinPlacements,\n triggerSubMenuAction = _React$useContext.triggerSubMenuAction,\n forceSubMenuRender = _React$useContext.forceSubMenuRender,\n rootClassName = _React$useContext.rootClassName,\n motion = _React$useContext.motion,\n defaultMotions = _React$useContext.defaultMotions;\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n innerVisible = _React$useState2[0],\n setInnerVisible = _React$useState2[1];\n var placement = rtl ? _objectSpread(_objectSpread({}, placementsRtl), builtinPlacements) : _objectSpread(_objectSpread({}, placements), builtinPlacements);\n var popupPlacement = popupPlacementMap[mode];\n var targetMotion = getMotion(mode, motion, defaultMotions);\n var targetMotionRef = React.useRef(targetMotion);\n if (mode !== 'inline') {\n /**\n * PopupTrigger is only used for vertical and horizontal types.\n * When collapsed is unfolded, the inline animation will destroy the vertical animation.\n */\n targetMotionRef.current = targetMotion;\n }\n var mergedMotion = _objectSpread(_objectSpread({}, targetMotionRef.current), {}, {\n leavedClassName: \"\".concat(prefixCls, \"-hidden\"),\n removeOnLeave: false,\n motionAppear: true\n });\n\n // Delay to change visible\n var visibleRef = React.useRef();\n React.useEffect(function () {\n visibleRef.current = raf(function () {\n setInnerVisible(visible);\n });\n return function () {\n raf.cancel(visibleRef.current);\n };\n }, [visible]);\n return /*#__PURE__*/React.createElement(Trigger, {\n prefixCls: prefixCls,\n popupClassName: classNames(\"\".concat(prefixCls, \"-popup\"), _defineProperty({}, \"\".concat(prefixCls, \"-rtl\"), rtl), popupClassName, rootClassName),\n stretch: mode === 'horizontal' ? 'minWidth' : null,\n getPopupContainer: getPopupContainer,\n builtinPlacements: placement,\n popupPlacement: popupPlacement,\n popupVisible: innerVisible,\n popup: popup,\n popupAlign: popupOffset && {\n offset: popupOffset\n },\n action: disabled ? [] : [triggerSubMenuAction],\n mouseEnterDelay: subMenuOpenDelay,\n mouseLeaveDelay: subMenuCloseDelay,\n onPopupVisibleChange: onVisibleChange,\n forceRender: forceSubMenuRender,\n popupMotion: mergedMotion\n }, children);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport CSSMotion from 'rc-motion';\nimport { getMotion } from \"../utils/motionUtil\";\nimport MenuContextProvider, { MenuContext } from \"../context/MenuContext\";\nimport SubMenuList from \"./SubMenuList\";\nexport default function InlineSubMenuList(_ref) {\n var id = _ref.id,\n open = _ref.open,\n keyPath = _ref.keyPath,\n children = _ref.children;\n var fixedMode = 'inline';\n var _React$useContext = React.useContext(MenuContext),\n prefixCls = _React$useContext.prefixCls,\n forceSubMenuRender = _React$useContext.forceSubMenuRender,\n motion = _React$useContext.motion,\n defaultMotions = _React$useContext.defaultMotions,\n mode = _React$useContext.mode;\n\n // Always use latest mode check\n var sameModeRef = React.useRef(false);\n sameModeRef.current = mode === fixedMode;\n\n // We record `destroy` mark here since when mode change from `inline` to others.\n // The inline list should remove when motion end.\n var _React$useState = React.useState(!sameModeRef.current),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n destroy = _React$useState2[0],\n setDestroy = _React$useState2[1];\n var mergedOpen = sameModeRef.current ? open : false;\n\n // ================================= Effect =================================\n // Reset destroy state when mode change back\n React.useEffect(function () {\n if (sameModeRef.current) {\n setDestroy(false);\n }\n }, [mode]);\n\n // ================================= Render =================================\n var mergedMotion = _objectSpread({}, getMotion(fixedMode, motion, defaultMotions));\n\n // No need appear since nest inlineCollapse changed\n if (keyPath.length > 1) {\n mergedMotion.motionAppear = false;\n }\n\n // Hide inline list when mode changed and motion end\n var originOnVisibleChanged = mergedMotion.onVisibleChanged;\n mergedMotion.onVisibleChanged = function (newVisible) {\n if (!sameModeRef.current && !newVisible) {\n setDestroy(true);\n }\n return originOnVisibleChanged === null || originOnVisibleChanged === void 0 ? void 0 : originOnVisibleChanged(newVisible);\n };\n if (destroy) {\n return null;\n }\n return /*#__PURE__*/React.createElement(MenuContextProvider, {\n mode: fixedMode,\n locked: !sameModeRef.current\n }, /*#__PURE__*/React.createElement(CSSMotion, _extends({\n visible: mergedOpen\n }, mergedMotion, {\n forceRender: forceSubMenuRender,\n removeOnLeave: false,\n leavedClassName: \"\".concat(prefixCls, \"-hidden\")\n }), function (_ref2) {\n var motionClassName = _ref2.className,\n motionStyle = _ref2.style;\n return /*#__PURE__*/React.createElement(SubMenuList, {\n id: id,\n className: motionClassName,\n style: motionStyle\n }, children);\n }));\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"style\", \"className\", \"title\", \"eventKey\", \"warnKey\", \"disabled\", \"internalPopupClose\", \"children\", \"itemIcon\", \"expandIcon\", \"popupClassName\", \"popupOffset\", \"onClick\", \"onMouseEnter\", \"onMouseLeave\", \"onTitleClick\", \"onTitleMouseEnter\", \"onTitleMouseLeave\"],\n _excluded2 = [\"active\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport Overflow from 'rc-overflow';\nimport warning from \"rc-util/es/warning\";\nimport SubMenuList from \"./SubMenuList\";\nimport { parseChildren } from \"../utils/commonUtil\";\nimport MenuContextProvider, { MenuContext } from \"../context/MenuContext\";\nimport useMemoCallback from \"../hooks/useMemoCallback\";\nimport PopupTrigger from \"./PopupTrigger\";\nimport Icon from \"../Icon\";\nimport useActive from \"../hooks/useActive\";\nimport { warnItemProp } from \"../utils/warnUtil\";\nimport useDirectionStyle from \"../hooks/useDirectionStyle\";\nimport InlineSubMenuList from \"./InlineSubMenuList\";\nimport { PathTrackerContext, PathUserContext, useFullPath, useMeasure } from \"../context/PathContext\";\nimport { useMenuId } from \"../context/IdContext\";\nimport PrivateContext from \"../context/PrivateContext\";\nvar InternalSubMenu = function InternalSubMenu(props) {\n var _classNames;\n var style = props.style,\n className = props.className,\n title = props.title,\n eventKey = props.eventKey,\n warnKey = props.warnKey,\n disabled = props.disabled,\n internalPopupClose = props.internalPopupClose,\n children = props.children,\n itemIcon = props.itemIcon,\n expandIcon = props.expandIcon,\n popupClassName = props.popupClassName,\n popupOffset = props.popupOffset,\n onClick = props.onClick,\n onMouseEnter = props.onMouseEnter,\n onMouseLeave = props.onMouseLeave,\n onTitleClick = props.onTitleClick,\n onTitleMouseEnter = props.onTitleMouseEnter,\n onTitleMouseLeave = props.onTitleMouseLeave,\n restProps = _objectWithoutProperties(props, _excluded);\n var domDataId = useMenuId(eventKey);\n var _React$useContext = React.useContext(MenuContext),\n prefixCls = _React$useContext.prefixCls,\n mode = _React$useContext.mode,\n openKeys = _React$useContext.openKeys,\n contextDisabled = _React$useContext.disabled,\n overflowDisabled = _React$useContext.overflowDisabled,\n activeKey = _React$useContext.activeKey,\n selectedKeys = _React$useContext.selectedKeys,\n contextItemIcon = _React$useContext.itemIcon,\n contextExpandIcon = _React$useContext.expandIcon,\n onItemClick = _React$useContext.onItemClick,\n onOpenChange = _React$useContext.onOpenChange,\n onActive = _React$useContext.onActive;\n var _React$useContext2 = React.useContext(PrivateContext),\n _internalRenderSubMenuItem = _React$useContext2._internalRenderSubMenuItem;\n var _React$useContext3 = React.useContext(PathUserContext),\n isSubPathKey = _React$useContext3.isSubPathKey;\n var connectedPath = useFullPath();\n var subMenuPrefixCls = \"\".concat(prefixCls, \"-submenu\");\n var mergedDisabled = contextDisabled || disabled;\n var elementRef = React.useRef();\n var popupRef = React.useRef();\n\n // ================================ Warn ================================\n if (process.env.NODE_ENV !== 'production' && warnKey) {\n warning(false, 'SubMenu should not leave undefined `key`.');\n }\n\n // ================================ Icon ================================\n var mergedItemIcon = itemIcon || contextItemIcon;\n var mergedExpandIcon = expandIcon || contextExpandIcon;\n\n // ================================ Open ================================\n var originOpen = openKeys.includes(eventKey);\n var open = !overflowDisabled && originOpen;\n\n // =============================== Select ===============================\n var childrenSelected = isSubPathKey(selectedKeys, eventKey);\n\n // =============================== Active ===============================\n var _useActive = useActive(eventKey, mergedDisabled, onTitleMouseEnter, onTitleMouseLeave),\n active = _useActive.active,\n activeProps = _objectWithoutProperties(_useActive, _excluded2);\n\n // Fallback of active check to avoid hover on menu title or disabled item\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n childrenActive = _React$useState2[0],\n setChildrenActive = _React$useState2[1];\n var triggerChildrenActive = function triggerChildrenActive(newActive) {\n if (!mergedDisabled) {\n setChildrenActive(newActive);\n }\n };\n var onInternalMouseEnter = function onInternalMouseEnter(domEvent) {\n triggerChildrenActive(true);\n onMouseEnter === null || onMouseEnter === void 0 ? void 0 : onMouseEnter({\n key: eventKey,\n domEvent: domEvent\n });\n };\n var onInternalMouseLeave = function onInternalMouseLeave(domEvent) {\n triggerChildrenActive(false);\n onMouseLeave === null || onMouseLeave === void 0 ? void 0 : onMouseLeave({\n key: eventKey,\n domEvent: domEvent\n });\n };\n var mergedActive = React.useMemo(function () {\n if (active) {\n return active;\n }\n if (mode !== 'inline') {\n return childrenActive || isSubPathKey([activeKey], eventKey);\n }\n return false;\n }, [mode, active, activeKey, childrenActive, eventKey, isSubPathKey]);\n\n // ========================== DirectionStyle ==========================\n var directionStyle = useDirectionStyle(connectedPath.length);\n\n // =============================== Events ===============================\n // >>>> Title click\n var onInternalTitleClick = function onInternalTitleClick(e) {\n // Skip if disabled\n if (mergedDisabled) {\n return;\n }\n onTitleClick === null || onTitleClick === void 0 ? void 0 : onTitleClick({\n key: eventKey,\n domEvent: e\n });\n\n // Trigger open by click when mode is `inline`\n if (mode === 'inline') {\n onOpenChange(eventKey, !originOpen);\n }\n };\n\n // >>>> Context for children click\n var onMergedItemClick = useMemoCallback(function (info) {\n onClick === null || onClick === void 0 ? void 0 : onClick(warnItemProp(info));\n onItemClick(info);\n });\n\n // >>>>> Visible change\n var onPopupVisibleChange = function onPopupVisibleChange(newVisible) {\n if (mode !== 'inline') {\n onOpenChange(eventKey, newVisible);\n }\n };\n\n /**\n * Used for accessibility. Helper will focus element without key board.\n * We should manually trigger an active\n */\n var onInternalFocus = function onInternalFocus() {\n onActive(eventKey);\n };\n\n // =============================== Render ===============================\n var popupId = domDataId && \"\".concat(domDataId, \"-popup\");\n\n // >>>>> Title\n var titleNode = /*#__PURE__*/React.createElement(\"div\", _extends({\n role: \"menuitem\",\n style: directionStyle,\n className: \"\".concat(subMenuPrefixCls, \"-title\"),\n tabIndex: mergedDisabled ? null : -1,\n ref: elementRef,\n title: typeof title === 'string' ? title : null,\n \"data-menu-id\": overflowDisabled && domDataId ? null : domDataId,\n \"aria-expanded\": open,\n \"aria-haspopup\": true,\n \"aria-controls\": popupId,\n \"aria-disabled\": mergedDisabled,\n onClick: onInternalTitleClick,\n onFocus: onInternalFocus\n }, activeProps), title, /*#__PURE__*/React.createElement(Icon, {\n icon: mode !== 'horizontal' ? mergedExpandIcon : null,\n props: _objectSpread(_objectSpread({}, props), {}, {\n isOpen: open,\n // [Legacy] Not sure why need this mark\n isSubMenu: true\n })\n }, /*#__PURE__*/React.createElement(\"i\", {\n className: \"\".concat(subMenuPrefixCls, \"-arrow\")\n })));\n\n // Cache mode if it change to `inline` which do not have popup motion\n var triggerModeRef = React.useRef(mode);\n if (mode !== 'inline' && connectedPath.length > 1) {\n triggerModeRef.current = 'vertical';\n } else {\n triggerModeRef.current = mode;\n }\n if (!overflowDisabled) {\n var triggerMode = triggerModeRef.current;\n\n // Still wrap with Trigger here since we need avoid react re-mount dom node\n // Which makes motion failed\n titleNode = /*#__PURE__*/React.createElement(PopupTrigger, {\n mode: triggerMode,\n prefixCls: subMenuPrefixCls,\n visible: !internalPopupClose && open && mode !== 'inline',\n popupClassName: popupClassName,\n popupOffset: popupOffset,\n popup: /*#__PURE__*/React.createElement(MenuContextProvider\n // Special handle of horizontal mode\n , {\n mode: triggerMode === 'horizontal' ? 'vertical' : triggerMode\n }, /*#__PURE__*/React.createElement(SubMenuList, {\n id: popupId,\n ref: popupRef\n }, children)),\n disabled: mergedDisabled,\n onVisibleChange: onPopupVisibleChange\n }, titleNode);\n }\n\n // >>>>> List node\n var listNode = /*#__PURE__*/React.createElement(Overflow.Item, _extends({\n role: \"none\"\n }, restProps, {\n component: \"li\",\n style: style,\n className: classNames(subMenuPrefixCls, \"\".concat(subMenuPrefixCls, \"-\").concat(mode), className, (_classNames = {}, _defineProperty(_classNames, \"\".concat(subMenuPrefixCls, \"-open\"), open), _defineProperty(_classNames, \"\".concat(subMenuPrefixCls, \"-active\"), mergedActive), _defineProperty(_classNames, \"\".concat(subMenuPrefixCls, \"-selected\"), childrenSelected), _defineProperty(_classNames, \"\".concat(subMenuPrefixCls, \"-disabled\"), mergedDisabled), _classNames)),\n onMouseEnter: onInternalMouseEnter,\n onMouseLeave: onInternalMouseLeave\n }), titleNode, !overflowDisabled && /*#__PURE__*/React.createElement(InlineSubMenuList, {\n id: popupId,\n open: open,\n keyPath: connectedPath\n }, children));\n if (_internalRenderSubMenuItem) {\n listNode = _internalRenderSubMenuItem(listNode, props, {\n selected: childrenSelected,\n active: mergedActive,\n open: open,\n disabled: mergedDisabled\n });\n }\n\n // >>>>> Render\n return /*#__PURE__*/React.createElement(MenuContextProvider, {\n onItemClick: onMergedItemClick,\n mode: mode === 'horizontal' ? 'vertical' : mode,\n itemIcon: mergedItemIcon,\n expandIcon: mergedExpandIcon\n }, listNode);\n};\nexport default function SubMenu(props) {\n var eventKey = props.eventKey,\n children = props.children;\n var connectedKeyPath = useFullPath(eventKey);\n var childList = parseChildren(children, connectedKeyPath);\n\n // ==================== Record KeyPath ====================\n var measure = useMeasure();\n\n // eslint-disable-next-line consistent-return\n React.useEffect(function () {\n if (measure) {\n measure.registerPath(eventKey, connectedKeyPath);\n return function () {\n measure.unregisterPath(eventKey, connectedKeyPath);\n };\n }\n }, [connectedKeyPath]);\n var renderNode;\n\n // ======================== Render ========================\n if (measure) {\n renderNode = childList;\n } else {\n renderNode = /*#__PURE__*/React.createElement(InternalSubMenu, props, childList);\n }\n return /*#__PURE__*/React.createElement(PathTrackerContext.Provider, {\n value: connectedKeyPath\n }, renderNode);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"className\", \"title\", \"eventKey\", \"children\"],\n _excluded2 = [\"children\"];\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport { MenuContext } from \"./context/MenuContext\";\nimport { useFullPath, useMeasure } from \"./context/PathContext\";\nimport { parseChildren } from \"./utils/commonUtil\";\nvar InternalMenuItemGroup = function InternalMenuItemGroup(_ref) {\n var className = _ref.className,\n title = _ref.title,\n eventKey = _ref.eventKey,\n children = _ref.children,\n restProps = _objectWithoutProperties(_ref, _excluded);\n var _React$useContext = React.useContext(MenuContext),\n prefixCls = _React$useContext.prefixCls;\n var groupPrefixCls = \"\".concat(prefixCls, \"-item-group\");\n return /*#__PURE__*/React.createElement(\"li\", _extends({\n role: \"presentation\"\n }, restProps, {\n onClick: function onClick(e) {\n return e.stopPropagation();\n },\n className: classNames(groupPrefixCls, className)\n }), /*#__PURE__*/React.createElement(\"div\", {\n role: \"presentation\",\n className: \"\".concat(groupPrefixCls, \"-title\"),\n title: typeof title === 'string' ? title : undefined\n }, title), /*#__PURE__*/React.createElement(\"ul\", {\n role: \"group\",\n className: \"\".concat(groupPrefixCls, \"-list\")\n }, children));\n};\nexport default function MenuItemGroup(_ref2) {\n var children = _ref2.children,\n props = _objectWithoutProperties(_ref2, _excluded2);\n var connectedKeyPath = useFullPath(props.eventKey);\n var childList = parseChildren(children, connectedKeyPath);\n var measure = useMeasure();\n if (measure) {\n return childList;\n }\n return /*#__PURE__*/React.createElement(InternalMenuItemGroup, omit(props, ['warnKey']), childList);\n}","import * as React from 'react';\nimport classNames from 'classnames';\nimport { MenuContext } from \"./context/MenuContext\";\nimport { useMeasure } from \"./context/PathContext\";\nexport default function Divider(_ref) {\n var className = _ref.className,\n style = _ref.style;\n var _React$useContext = React.useContext(MenuContext),\n prefixCls = _React$useContext.prefixCls;\n var measure = useMeasure();\n if (measure) {\n return null;\n }\n return /*#__PURE__*/React.createElement(\"li\", {\n className: classNames(\"\".concat(prefixCls, \"-item-divider\"), className),\n style: style\n });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar _excluded = [\"label\", \"children\", \"key\", \"type\"];\nimport * as React from 'react';\nimport MenuItemGroup from \"../MenuItemGroup\";\nimport SubMenu from \"../SubMenu\";\nimport Divider from \"../Divider\";\nimport MenuItem from \"../MenuItem\";\nimport { parseChildren } from \"./commonUtil\";\nfunction convertItemsToNodes(list) {\n return (list || []).map(function (opt, index) {\n if (opt && _typeof(opt) === 'object') {\n var _ref = opt,\n label = _ref.label,\n children = _ref.children,\n key = _ref.key,\n type = _ref.type,\n restProps = _objectWithoutProperties(_ref, _excluded);\n var mergedKey = key !== null && key !== void 0 ? key : \"tmp-\".concat(index);\n\n // MenuItemGroup & SubMenuItem\n if (children || type === 'group') {\n if (type === 'group') {\n // Group\n return /*#__PURE__*/React.createElement(MenuItemGroup, _extends({\n key: mergedKey\n }, restProps, {\n title: label\n }), convertItemsToNodes(children));\n }\n\n // Sub Menu\n return /*#__PURE__*/React.createElement(SubMenu, _extends({\n key: mergedKey\n }, restProps, {\n title: label\n }), convertItemsToNodes(children));\n }\n\n // MenuItem & Divider\n if (type === 'divider') {\n return /*#__PURE__*/React.createElement(Divider, _extends({\n key: mergedKey\n }, restProps));\n }\n return /*#__PURE__*/React.createElement(MenuItem, _extends({\n key: mergedKey\n }, restProps), label);\n }\n return null;\n }).filter(function (opt) {\n return opt;\n });\n}\nexport function parseItems(children, items, keyPath) {\n var childNodes = children;\n if (items) {\n childNodes = convertItemsToNodes(items);\n }\n return parseChildren(childNodes, keyPath);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"rootClassName\", \"style\", \"className\", \"tabIndex\", \"items\", \"children\", \"direction\", \"id\", \"mode\", \"inlineCollapsed\", \"disabled\", \"disabledOverflow\", \"subMenuOpenDelay\", \"subMenuCloseDelay\", \"forceSubMenuRender\", \"defaultOpenKeys\", \"openKeys\", \"activeKey\", \"defaultActiveFirst\", \"selectable\", \"multiple\", \"defaultSelectedKeys\", \"selectedKeys\", \"onSelect\", \"onDeselect\", \"inlineIndent\", \"motion\", \"defaultMotions\", \"triggerSubMenuAction\", \"builtinPlacements\", \"itemIcon\", \"expandIcon\", \"overflowedIndicator\", \"overflowedIndicatorPopupClassName\", \"getPopupContainer\", \"onClick\", \"onOpenChange\", \"onKeyDown\", \"openAnimation\", \"openTransitionName\", \"_internalRenderMenuItem\", \"_internalRenderSubMenuItem\"];\nimport classNames from 'classnames';\nimport Overflow from 'rc-overflow';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport warning from \"rc-util/es/warning\";\nimport * as React from 'react';\nimport { useImperativeHandle } from 'react';\nimport { flushSync } from 'react-dom';\nimport isEqual from \"rc-util/es/isEqual\";\nimport { getMenuId, IdContext } from \"./context/IdContext\";\nimport MenuContextProvider from \"./context/MenuContext\";\nimport { PathRegisterContext, PathUserContext } from \"./context/PathContext\";\nimport PrivateContext from \"./context/PrivateContext\";\nimport useAccessibility from \"./hooks/useAccessibility\";\nimport useKeyRecords, { OVERFLOW_KEY } from \"./hooks/useKeyRecords\";\nimport useMemoCallback from \"./hooks/useMemoCallback\";\nimport useUUID from \"./hooks/useUUID\";\nimport MenuItem from \"./MenuItem\";\nimport SubMenu from \"./SubMenu\";\nimport { parseItems } from \"./utils/nodeUtil\";\nimport { warnItemProp } from \"./utils/warnUtil\";\n\n/**\n * Menu modify after refactor:\n * ## Add\n * - disabled\n *\n * ## Remove\n * - openTransitionName\n * - openAnimation\n * - onDestroy\n * - siderCollapsed: Seems antd do not use this prop (Need test in antd)\n * - collapsedWidth: Seems this logic should be handle by antd Layout.Sider\n */\n\n// optimize for render\nvar EMPTY_LIST = [];\nvar Menu = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _childList$, _classNames;\n var _ref = props,\n _ref$prefixCls = _ref.prefixCls,\n prefixCls = _ref$prefixCls === void 0 ? 'rc-menu' : _ref$prefixCls,\n rootClassName = _ref.rootClassName,\n style = _ref.style,\n className = _ref.className,\n _ref$tabIndex = _ref.tabIndex,\n tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex,\n items = _ref.items,\n children = _ref.children,\n direction = _ref.direction,\n id = _ref.id,\n _ref$mode = _ref.mode,\n mode = _ref$mode === void 0 ? 'vertical' : _ref$mode,\n inlineCollapsed = _ref.inlineCollapsed,\n disabled = _ref.disabled,\n disabledOverflow = _ref.disabledOverflow,\n _ref$subMenuOpenDelay = _ref.subMenuOpenDelay,\n subMenuOpenDelay = _ref$subMenuOpenDelay === void 0 ? 0.1 : _ref$subMenuOpenDelay,\n _ref$subMenuCloseDela = _ref.subMenuCloseDelay,\n subMenuCloseDelay = _ref$subMenuCloseDela === void 0 ? 0.1 : _ref$subMenuCloseDela,\n forceSubMenuRender = _ref.forceSubMenuRender,\n defaultOpenKeys = _ref.defaultOpenKeys,\n openKeys = _ref.openKeys,\n activeKey = _ref.activeKey,\n defaultActiveFirst = _ref.defaultActiveFirst,\n _ref$selectable = _ref.selectable,\n selectable = _ref$selectable === void 0 ? true : _ref$selectable,\n _ref$multiple = _ref.multiple,\n multiple = _ref$multiple === void 0 ? false : _ref$multiple,\n defaultSelectedKeys = _ref.defaultSelectedKeys,\n selectedKeys = _ref.selectedKeys,\n onSelect = _ref.onSelect,\n onDeselect = _ref.onDeselect,\n _ref$inlineIndent = _ref.inlineIndent,\n inlineIndent = _ref$inlineIndent === void 0 ? 24 : _ref$inlineIndent,\n motion = _ref.motion,\n defaultMotions = _ref.defaultMotions,\n _ref$triggerSubMenuAc = _ref.triggerSubMenuAction,\n triggerSubMenuAction = _ref$triggerSubMenuAc === void 0 ? 'hover' : _ref$triggerSubMenuAc,\n builtinPlacements = _ref.builtinPlacements,\n itemIcon = _ref.itemIcon,\n expandIcon = _ref.expandIcon,\n _ref$overflowedIndica = _ref.overflowedIndicator,\n overflowedIndicator = _ref$overflowedIndica === void 0 ? '...' : _ref$overflowedIndica,\n overflowedIndicatorPopupClassName = _ref.overflowedIndicatorPopupClassName,\n getPopupContainer = _ref.getPopupContainer,\n onClick = _ref.onClick,\n onOpenChange = _ref.onOpenChange,\n onKeyDown = _ref.onKeyDown,\n openAnimation = _ref.openAnimation,\n openTransitionName = _ref.openTransitionName,\n _internalRenderMenuItem = _ref._internalRenderMenuItem,\n _internalRenderSubMenuItem = _ref._internalRenderSubMenuItem,\n restProps = _objectWithoutProperties(_ref, _excluded);\n var childList = React.useMemo(function () {\n return parseItems(children, items, EMPTY_LIST);\n }, [children, items]);\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n mounted = _React$useState2[0],\n setMounted = _React$useState2[1];\n var containerRef = React.useRef();\n var uuid = useUUID(id);\n var isRtl = direction === 'rtl';\n\n // ========================= Warn =========================\n if (process.env.NODE_ENV !== 'production') {\n warning(!openAnimation && !openTransitionName, '`openAnimation` and `openTransitionName` is removed. Please use `motion` or `defaultMotion` instead.');\n }\n\n // ========================= Open =========================\n var _useMergedState = useMergedState(defaultOpenKeys, {\n value: openKeys,\n postState: function postState(keys) {\n return keys || EMPTY_LIST;\n }\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n mergedOpenKeys = _useMergedState2[0],\n setMergedOpenKeys = _useMergedState2[1];\n\n // React 18 will merge mouse event which means we open key will not sync\n // ref: https://github.com/ant-design/ant-design/issues/38818\n var triggerOpenKeys = function triggerOpenKeys(keys) {\n var forceFlush = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n function doUpdate() {\n setMergedOpenKeys(keys);\n onOpenChange === null || onOpenChange === void 0 ? void 0 : onOpenChange(keys);\n }\n if (forceFlush) {\n flushSync(doUpdate);\n } else {\n doUpdate();\n }\n };\n\n // >>>>> Cache & Reset open keys when inlineCollapsed changed\n var _React$useState3 = React.useState(mergedOpenKeys),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n inlineCacheOpenKeys = _React$useState4[0],\n setInlineCacheOpenKeys = _React$useState4[1];\n var mountRef = React.useRef(false);\n\n // ========================= Mode =========================\n var _React$useMemo = React.useMemo(function () {\n if ((mode === 'inline' || mode === 'vertical') && inlineCollapsed) {\n return ['vertical', inlineCollapsed];\n }\n return [mode, false];\n }, [mode, inlineCollapsed]),\n _React$useMemo2 = _slicedToArray(_React$useMemo, 2),\n mergedMode = _React$useMemo2[0],\n mergedInlineCollapsed = _React$useMemo2[1];\n var isInlineMode = mergedMode === 'inline';\n var _React$useState5 = React.useState(mergedMode),\n _React$useState6 = _slicedToArray(_React$useState5, 2),\n internalMode = _React$useState6[0],\n setInternalMode = _React$useState6[1];\n var _React$useState7 = React.useState(mergedInlineCollapsed),\n _React$useState8 = _slicedToArray(_React$useState7, 2),\n internalInlineCollapsed = _React$useState8[0],\n setInternalInlineCollapsed = _React$useState8[1];\n React.useEffect(function () {\n setInternalMode(mergedMode);\n setInternalInlineCollapsed(mergedInlineCollapsed);\n if (!mountRef.current) {\n return;\n }\n // Synchronously update MergedOpenKeys\n if (isInlineMode) {\n setMergedOpenKeys(inlineCacheOpenKeys);\n } else {\n // Trigger open event in case its in control\n triggerOpenKeys(EMPTY_LIST);\n }\n }, [mergedMode, mergedInlineCollapsed]);\n\n // ====================== Responsive ======================\n var _React$useState9 = React.useState(0),\n _React$useState10 = _slicedToArray(_React$useState9, 2),\n lastVisibleIndex = _React$useState10[0],\n setLastVisibleIndex = _React$useState10[1];\n var allVisible = lastVisibleIndex >= childList.length - 1 || internalMode !== 'horizontal' || disabledOverflow;\n\n // Cache\n React.useEffect(function () {\n if (isInlineMode) {\n setInlineCacheOpenKeys(mergedOpenKeys);\n }\n }, [mergedOpenKeys]);\n React.useEffect(function () {\n mountRef.current = true;\n return function () {\n mountRef.current = false;\n };\n }, []);\n\n // ========================= Path =========================\n var _useKeyRecords = useKeyRecords(),\n registerPath = _useKeyRecords.registerPath,\n unregisterPath = _useKeyRecords.unregisterPath,\n refreshOverflowKeys = _useKeyRecords.refreshOverflowKeys,\n isSubPathKey = _useKeyRecords.isSubPathKey,\n getKeyPath = _useKeyRecords.getKeyPath,\n getKeys = _useKeyRecords.getKeys,\n getSubPathKeys = _useKeyRecords.getSubPathKeys;\n var registerPathContext = React.useMemo(function () {\n return {\n registerPath: registerPath,\n unregisterPath: unregisterPath\n };\n }, [registerPath, unregisterPath]);\n var pathUserContext = React.useMemo(function () {\n return {\n isSubPathKey: isSubPathKey\n };\n }, [isSubPathKey]);\n React.useEffect(function () {\n refreshOverflowKeys(allVisible ? EMPTY_LIST : childList.slice(lastVisibleIndex + 1).map(function (child) {\n return child.key;\n }));\n }, [lastVisibleIndex, allVisible]);\n\n // ======================== Active ========================\n var _useMergedState3 = useMergedState(activeKey || defaultActiveFirst && ((_childList$ = childList[0]) === null || _childList$ === void 0 ? void 0 : _childList$.key), {\n value: activeKey\n }),\n _useMergedState4 = _slicedToArray(_useMergedState3, 2),\n mergedActiveKey = _useMergedState4[0],\n setMergedActiveKey = _useMergedState4[1];\n var onActive = useMemoCallback(function (key) {\n setMergedActiveKey(key);\n });\n var onInactive = useMemoCallback(function () {\n setMergedActiveKey(undefined);\n });\n useImperativeHandle(ref, function () {\n return {\n list: containerRef.current,\n focus: function focus(options) {\n var _childList$find;\n var shouldFocusKey = mergedActiveKey !== null && mergedActiveKey !== void 0 ? mergedActiveKey : (_childList$find = childList.find(function (node) {\n return !node.props.disabled;\n })) === null || _childList$find === void 0 ? void 0 : _childList$find.key;\n if (shouldFocusKey) {\n var _containerRef$current, _containerRef$current2, _containerRef$current3;\n (_containerRef$current = containerRef.current) === null || _containerRef$current === void 0 ? void 0 : (_containerRef$current2 = _containerRef$current.querySelector(\"li[data-menu-id='\".concat(getMenuId(uuid, shouldFocusKey), \"']\"))) === null || _containerRef$current2 === void 0 ? void 0 : (_containerRef$current3 = _containerRef$current2.focus) === null || _containerRef$current3 === void 0 ? void 0 : _containerRef$current3.call(_containerRef$current2, options);\n }\n }\n };\n });\n\n // ======================== Select ========================\n // >>>>> Select keys\n var _useMergedState5 = useMergedState(defaultSelectedKeys || [], {\n value: selectedKeys,\n // Legacy convert key to array\n postState: function postState(keys) {\n if (Array.isArray(keys)) {\n return keys;\n }\n if (keys === null || keys === undefined) {\n return EMPTY_LIST;\n }\n return [keys];\n }\n }),\n _useMergedState6 = _slicedToArray(_useMergedState5, 2),\n mergedSelectKeys = _useMergedState6[0],\n setMergedSelectKeys = _useMergedState6[1];\n\n // >>>>> Trigger select\n var triggerSelection = function triggerSelection(info) {\n if (selectable) {\n // Insert or Remove\n var targetKey = info.key;\n var exist = mergedSelectKeys.includes(targetKey);\n var newSelectKeys;\n if (multiple) {\n if (exist) {\n newSelectKeys = mergedSelectKeys.filter(function (key) {\n return key !== targetKey;\n });\n } else {\n newSelectKeys = [].concat(_toConsumableArray(mergedSelectKeys), [targetKey]);\n }\n } else {\n newSelectKeys = [targetKey];\n }\n setMergedSelectKeys(newSelectKeys);\n\n // Trigger event\n var selectInfo = _objectSpread(_objectSpread({}, info), {}, {\n selectedKeys: newSelectKeys\n });\n if (exist) {\n onDeselect === null || onDeselect === void 0 ? void 0 : onDeselect(selectInfo);\n } else {\n onSelect === null || onSelect === void 0 ? void 0 : onSelect(selectInfo);\n }\n }\n\n // Whatever selectable, always close it\n if (!multiple && mergedOpenKeys.length && internalMode !== 'inline') {\n triggerOpenKeys(EMPTY_LIST);\n }\n };\n\n // ========================= Open =========================\n /**\n * Click for item. SubMenu do not have selection status\n */\n var onInternalClick = useMemoCallback(function (info) {\n onClick === null || onClick === void 0 ? void 0 : onClick(warnItemProp(info));\n triggerSelection(info);\n });\n var onInternalOpenChange = useMemoCallback(function (key, open) {\n var newOpenKeys = mergedOpenKeys.filter(function (k) {\n return k !== key;\n });\n if (open) {\n newOpenKeys.push(key);\n } else if (internalMode !== 'inline') {\n // We need find all related popup to close\n var subPathKeys = getSubPathKeys(key);\n newOpenKeys = newOpenKeys.filter(function (k) {\n return !subPathKeys.has(k);\n });\n }\n if (!isEqual(mergedOpenKeys, newOpenKeys, true)) {\n triggerOpenKeys(newOpenKeys, true);\n }\n });\n\n // ==================== Accessibility =====================\n var triggerAccessibilityOpen = function triggerAccessibilityOpen(key, open) {\n var nextOpen = open !== null && open !== void 0 ? open : !mergedOpenKeys.includes(key);\n onInternalOpenChange(key, nextOpen);\n };\n var onInternalKeyDown = useAccessibility(internalMode, mergedActiveKey, isRtl, uuid, containerRef, getKeys, getKeyPath, setMergedActiveKey, triggerAccessibilityOpen, onKeyDown);\n\n // ======================== Effect ========================\n React.useEffect(function () {\n setMounted(true);\n }, []);\n\n // ======================= Context ========================\n var privateContext = React.useMemo(function () {\n return {\n _internalRenderMenuItem: _internalRenderMenuItem,\n _internalRenderSubMenuItem: _internalRenderSubMenuItem\n };\n }, [_internalRenderMenuItem, _internalRenderSubMenuItem]);\n\n // ======================== Render ========================\n\n // >>>>> Children\n var wrappedChildList = internalMode !== 'horizontal' || disabledOverflow ? childList :\n // Need wrap for overflow dropdown that do not response for open\n childList.map(function (child, index) {\n return /*#__PURE__*/(\n // Always wrap provider to avoid sub node re-mount\n React.createElement(MenuContextProvider, {\n key: child.key,\n overflowDisabled: index > lastVisibleIndex\n }, child)\n );\n });\n\n // >>>>> Container\n var container = /*#__PURE__*/React.createElement(Overflow, _extends({\n id: id,\n ref: containerRef,\n prefixCls: \"\".concat(prefixCls, \"-overflow\"),\n component: \"ul\",\n itemComponent: MenuItem,\n className: classNames(prefixCls, \"\".concat(prefixCls, \"-root\"), \"\".concat(prefixCls, \"-\").concat(internalMode), className, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-inline-collapsed\"), internalInlineCollapsed), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), isRtl), _classNames), rootClassName),\n dir: direction,\n style: style,\n role: \"menu\",\n tabIndex: tabIndex,\n data: wrappedChildList,\n renderRawItem: function renderRawItem(node) {\n return node;\n },\n renderRawRest: function renderRawRest(omitItems) {\n // We use origin list since wrapped list use context to prevent open\n var len = omitItems.length;\n var originOmitItems = len ? childList.slice(-len) : null;\n return /*#__PURE__*/React.createElement(SubMenu, {\n eventKey: OVERFLOW_KEY,\n title: overflowedIndicator,\n disabled: allVisible,\n internalPopupClose: len === 0,\n popupClassName: overflowedIndicatorPopupClassName\n }, originOmitItems);\n },\n maxCount: internalMode !== 'horizontal' || disabledOverflow ? Overflow.INVALIDATE : Overflow.RESPONSIVE,\n ssr: \"full\",\n \"data-menu-list\": true,\n onVisibleChange: function onVisibleChange(newLastIndex) {\n setLastVisibleIndex(newLastIndex);\n },\n onKeyDown: onInternalKeyDown\n }, restProps));\n\n // >>>>> Render\n return /*#__PURE__*/React.createElement(PrivateContext.Provider, {\n value: privateContext\n }, /*#__PURE__*/React.createElement(IdContext.Provider, {\n value: uuid\n }, /*#__PURE__*/React.createElement(MenuContextProvider, {\n prefixCls: prefixCls,\n rootClassName: rootClassName,\n mode: internalMode,\n openKeys: mergedOpenKeys,\n rtl: isRtl\n // Disabled\n ,\n\n disabled: disabled\n // Motion\n ,\n\n motion: mounted ? motion : null,\n defaultMotions: mounted ? defaultMotions : null\n // Active\n ,\n\n activeKey: mergedActiveKey,\n onActive: onActive,\n onInactive: onInactive\n // Selection\n ,\n\n selectedKeys: mergedSelectKeys\n // Level\n ,\n\n inlineIndent: inlineIndent\n // Popup\n ,\n\n subMenuOpenDelay: subMenuOpenDelay,\n subMenuCloseDelay: subMenuCloseDelay,\n forceSubMenuRender: forceSubMenuRender,\n builtinPlacements: builtinPlacements,\n triggerSubMenuAction: triggerSubMenuAction,\n getPopupContainer: getPopupContainer\n // Icon\n ,\n\n itemIcon: itemIcon,\n expandIcon: expandIcon\n // Events\n ,\n\n onItemClick: onInternalClick,\n onOpenChange: onInternalOpenChange\n }, /*#__PURE__*/React.createElement(PathUserContext.Provider, {\n value: pathUserContext\n }, container), /*#__PURE__*/React.createElement(\"div\", {\n style: {\n display: 'none'\n },\n \"aria-hidden\": true\n }, /*#__PURE__*/React.createElement(PathRegisterContext.Provider, {\n value: registerPathContext\n }, childList)))));\n});\nexport default Menu;","import Menu from \"./Menu\";\nimport MenuItem from \"./MenuItem\";\nimport SubMenu from \"./SubMenu\";\nimport MenuItemGroup from \"./MenuItemGroup\";\nimport { useFullPath } from \"./context/PathContext\";\nimport Divider from \"./Divider\";\nexport { SubMenu, MenuItem as Item, MenuItem, MenuItemGroup, MenuItemGroup as ItemGroup, Divider, /** @private Only used for antd internal. Do not use in your production. */\nuseFullPath };\nvar ExportMenu = Menu;\nExportMenu.Item = MenuItem;\nExportMenu.SubMenu = SubMenu;\nExportMenu.ItemGroup = MenuItemGroup;\nExportMenu.Divider = Divider;\nexport default ExportMenu;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport classNames from 'classnames';\nimport Dropdown from 'rc-dropdown';\nimport Menu, { MenuItem } from 'rc-menu';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport AddButton from \"./AddButton\";\nimport { getRemovable } from \"../util\";\nfunction OperationNode(_ref, ref) {\n var prefixCls = _ref.prefixCls,\n id = _ref.id,\n tabs = _ref.tabs,\n locale = _ref.locale,\n mobile = _ref.mobile,\n _ref$moreIcon = _ref.moreIcon,\n moreIcon = _ref$moreIcon === void 0 ? 'More' : _ref$moreIcon,\n moreTransitionName = _ref.moreTransitionName,\n style = _ref.style,\n className = _ref.className,\n editable = _ref.editable,\n tabBarGutter = _ref.tabBarGutter,\n rtl = _ref.rtl,\n removeAriaLabel = _ref.removeAriaLabel,\n onTabClick = _ref.onTabClick,\n getPopupContainer = _ref.getPopupContainer,\n popupClassName = _ref.popupClassName;\n // ======================== Dropdown ========================\n var _useState = useState(false),\n _useState2 = _slicedToArray(_useState, 2),\n open = _useState2[0],\n setOpen = _useState2[1];\n var _useState3 = useState(null),\n _useState4 = _slicedToArray(_useState3, 2),\n selectedKey = _useState4[0],\n setSelectedKey = _useState4[1];\n var popupId = \"\".concat(id, \"-more-popup\");\n var dropdownPrefix = \"\".concat(prefixCls, \"-dropdown\");\n var selectedItemId = selectedKey !== null ? \"\".concat(popupId, \"-\").concat(selectedKey) : null;\n var dropdownAriaLabel = locale === null || locale === void 0 ? void 0 : locale.dropdownAriaLabel;\n function onRemoveTab(event, key) {\n event.preventDefault();\n event.stopPropagation();\n editable.onEdit('remove', {\n key: key,\n event: event\n });\n }\n var menu = /*#__PURE__*/React.createElement(Menu, {\n onClick: function onClick(_ref2) {\n var key = _ref2.key,\n domEvent = _ref2.domEvent;\n onTabClick(key, domEvent);\n setOpen(false);\n },\n prefixCls: \"\".concat(dropdownPrefix, \"-menu\"),\n id: popupId,\n tabIndex: -1,\n role: \"listbox\",\n \"aria-activedescendant\": selectedItemId,\n selectedKeys: [selectedKey],\n \"aria-label\": dropdownAriaLabel !== undefined ? dropdownAriaLabel : 'expanded dropdown'\n }, tabs.map(function (tab) {\n var closable = tab.closable,\n disabled = tab.disabled,\n closeIcon = tab.closeIcon,\n key = tab.key,\n label = tab.label;\n var removable = getRemovable(closable, closeIcon, editable, disabled);\n return /*#__PURE__*/React.createElement(MenuItem, {\n key: key,\n id: \"\".concat(popupId, \"-\").concat(key),\n role: \"option\",\n \"aria-controls\": id && \"\".concat(id, \"-panel-\").concat(key),\n disabled: disabled\n }, /*#__PURE__*/React.createElement(\"span\", null, label), removable && /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n \"aria-label\": removeAriaLabel || 'remove',\n tabIndex: 0,\n className: \"\".concat(dropdownPrefix, \"-menu-item-remove\"),\n onClick: function onClick(e) {\n e.stopPropagation();\n onRemoveTab(e, key);\n }\n }, closeIcon || editable.removeIcon || '×'));\n }));\n function selectOffset(offset) {\n var enabledTabs = tabs.filter(function (tab) {\n return !tab.disabled;\n });\n var selectedIndex = enabledTabs.findIndex(function (tab) {\n return tab.key === selectedKey;\n }) || 0;\n var len = enabledTabs.length;\n for (var i = 0; i < len; i += 1) {\n selectedIndex = (selectedIndex + offset + len) % len;\n var tab = enabledTabs[selectedIndex];\n if (!tab.disabled) {\n setSelectedKey(tab.key);\n return;\n }\n }\n }\n function onKeyDown(e) {\n var which = e.which;\n if (!open) {\n if ([KeyCode.DOWN, KeyCode.SPACE, KeyCode.ENTER].includes(which)) {\n setOpen(true);\n e.preventDefault();\n }\n return;\n }\n switch (which) {\n case KeyCode.UP:\n selectOffset(-1);\n e.preventDefault();\n break;\n case KeyCode.DOWN:\n selectOffset(1);\n e.preventDefault();\n break;\n case KeyCode.ESC:\n setOpen(false);\n break;\n case KeyCode.SPACE:\n case KeyCode.ENTER:\n if (selectedKey !== null) onTabClick(selectedKey, e);\n break;\n }\n }\n\n // ========================= Effect =========================\n useEffect(function () {\n // We use query element here to avoid React strict warning\n var ele = document.getElementById(selectedItemId);\n if (ele && ele.scrollIntoView) {\n ele.scrollIntoView(false);\n }\n }, [selectedKey]);\n useEffect(function () {\n if (!open) {\n setSelectedKey(null);\n }\n }, [open]);\n\n // ========================= Render =========================\n var moreStyle = _defineProperty({}, rtl ? 'marginRight' : 'marginLeft', tabBarGutter);\n if (!tabs.length) {\n moreStyle.visibility = 'hidden';\n moreStyle.order = 1;\n }\n var overlayClassName = classNames(_defineProperty({}, \"\".concat(dropdownPrefix, \"-rtl\"), rtl));\n var moreNode = mobile ? null : /*#__PURE__*/React.createElement(Dropdown, {\n prefixCls: dropdownPrefix,\n overlay: menu,\n trigger: ['hover'],\n visible: tabs.length ? open : false,\n transitionName: moreTransitionName,\n onVisibleChange: setOpen,\n overlayClassName: classNames(overlayClassName, popupClassName),\n mouseEnterDelay: 0.1,\n mouseLeaveDelay: 0.1,\n getPopupContainer: getPopupContainer\n }, /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n className: \"\".concat(prefixCls, \"-nav-more\"),\n style: moreStyle,\n tabIndex: -1,\n \"aria-hidden\": \"true\",\n \"aria-haspopup\": \"listbox\",\n \"aria-controls\": popupId,\n id: \"\".concat(id, \"-more\"),\n \"aria-expanded\": open,\n onKeyDown: onKeyDown\n }, moreIcon));\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-nav-operations\"), className),\n style: style,\n ref: ref\n }, moreNode, /*#__PURE__*/React.createElement(AddButton, {\n prefixCls: prefixCls,\n locale: locale,\n editable: editable\n }));\n}\nexport default /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(OperationNode), function (_, next) {\n return (\n // https://github.com/ant-design/ant-design/issues/32544\n // We'd better remove syntactic sugar in `rc-menu` since this has perf issue\n next.tabMoving\n );\n});","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport classNames from 'classnames';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport * as React from 'react';\nimport { genDataNodeKey, getRemovable } from \"../util\";\nfunction TabNode(_ref) {\n var _classNames;\n var prefixCls = _ref.prefixCls,\n id = _ref.id,\n active = _ref.active,\n _ref$tab = _ref.tab,\n key = _ref$tab.key,\n label = _ref$tab.label,\n disabled = _ref$tab.disabled,\n closeIcon = _ref$tab.closeIcon,\n closable = _ref.closable,\n renderWrapper = _ref.renderWrapper,\n removeAriaLabel = _ref.removeAriaLabel,\n editable = _ref.editable,\n onClick = _ref.onClick,\n onFocus = _ref.onFocus,\n style = _ref.style;\n var tabPrefix = \"\".concat(prefixCls, \"-tab\");\n var removable = getRemovable(closable, closeIcon, editable, disabled);\n function onInternalClick(e) {\n if (disabled) {\n return;\n }\n onClick(e);\n }\n function onRemoveTab(event) {\n event.preventDefault();\n event.stopPropagation();\n editable.onEdit('remove', {\n key: key,\n event: event\n });\n }\n var node = /*#__PURE__*/React.createElement(\"div\", {\n key: key\n // ref={ref}\n ,\n\n \"data-node-key\": genDataNodeKey(key),\n className: classNames(tabPrefix, (_classNames = {}, _defineProperty(_classNames, \"\".concat(tabPrefix, \"-with-remove\"), removable), _defineProperty(_classNames, \"\".concat(tabPrefix, \"-active\"), active), _defineProperty(_classNames, \"\".concat(tabPrefix, \"-disabled\"), disabled), _classNames)),\n style: style,\n onClick: onInternalClick\n }, /*#__PURE__*/React.createElement(\"div\", {\n role: \"tab\",\n \"aria-selected\": active,\n id: id && \"\".concat(id, \"-tab-\").concat(key),\n className: \"\".concat(tabPrefix, \"-btn\"),\n \"aria-controls\": id && \"\".concat(id, \"-panel-\").concat(key),\n \"aria-disabled\": disabled,\n tabIndex: disabled ? null : 0,\n onClick: function onClick(e) {\n e.stopPropagation();\n onInternalClick(e);\n },\n onKeyDown: function onKeyDown(e) {\n if ([KeyCode.SPACE, KeyCode.ENTER].includes(e.which)) {\n e.preventDefault();\n onInternalClick(e);\n }\n },\n onFocus: onFocus\n }, label), removable && /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n \"aria-label\": removeAriaLabel || 'remove',\n tabIndex: 0,\n className: \"\".concat(tabPrefix, \"-remove\"),\n onClick: function onClick(e) {\n e.stopPropagation();\n onRemoveTab(e);\n }\n }, closeIcon || editable.removeIcon || '×'));\n return renderWrapper ? renderWrapper(node) : node;\n}\nexport default TabNode;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport classNames from 'classnames';\nimport ResizeObserver from 'rc-resize-observer';\nimport useEvent from \"rc-util/es/hooks/useEvent\";\nimport raf from \"rc-util/es/raf\";\nimport { useComposeRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nimport { useEffect, useRef, useState } from 'react';\nimport useOffsets from \"../hooks/useOffsets\";\nimport useSyncState from \"../hooks/useSyncState\";\nimport useTouchMove from \"../hooks/useTouchMove\";\nimport useUpdate, { useUpdateState } from \"../hooks/useUpdate\";\nimport useVisibleRange from \"../hooks/useVisibleRange\";\nimport TabContext from \"../TabContext\";\nimport { genDataNodeKey, stringify } from \"../util\";\nimport AddButton from \"./AddButton\";\nimport ExtraContent from \"./ExtraContent\";\nimport OperationNode from \"./OperationNode\";\nimport TabNode from \"./TabNode\";\nvar getSize = function getSize(refObj) {\n var _ref = refObj.current || {},\n _ref$offsetWidth = _ref.offsetWidth,\n offsetWidth = _ref$offsetWidth === void 0 ? 0 : _ref$offsetWidth,\n _ref$offsetHeight = _ref.offsetHeight,\n offsetHeight = _ref$offsetHeight === void 0 ? 0 : _ref$offsetHeight;\n return [offsetWidth, offsetHeight];\n};\n\n/**\n * Convert `SizeInfo` to unit value. Such as [123, 456] with `top` position get `123`\n */\nvar getUnitValue = function getUnitValue(size, tabPositionTopOrBottom) {\n return size[tabPositionTopOrBottom ? 0 : 1];\n};\nfunction TabNavList(props, ref) {\n var _classNames;\n var _React$useContext = React.useContext(TabContext),\n prefixCls = _React$useContext.prefixCls,\n tabs = _React$useContext.tabs;\n var className = props.className,\n style = props.style,\n id = props.id,\n animated = props.animated,\n activeKey = props.activeKey,\n rtl = props.rtl,\n extra = props.extra,\n editable = props.editable,\n locale = props.locale,\n tabPosition = props.tabPosition,\n tabBarGutter = props.tabBarGutter,\n children = props.children,\n onTabClick = props.onTabClick,\n onTabScroll = props.onTabScroll;\n var containerRef = useRef();\n var extraLeftRef = useRef();\n var extraRightRef = useRef();\n var tabsWrapperRef = useRef();\n var tabListRef = useRef();\n var operationsRef = useRef();\n var innerAddButtonRef = useRef();\n // const [getBtnRef, removeBtnRef] = useRefs();\n\n var tabPositionTopOrBottom = tabPosition === 'top' || tabPosition === 'bottom';\n var _useSyncState = useSyncState(0, function (next, prev) {\n if (tabPositionTopOrBottom && onTabScroll) {\n onTabScroll({\n direction: next > prev ? 'left' : 'right'\n });\n }\n }),\n _useSyncState2 = _slicedToArray(_useSyncState, 2),\n transformLeft = _useSyncState2[0],\n setTransformLeft = _useSyncState2[1];\n var _useSyncState3 = useSyncState(0, function (next, prev) {\n if (!tabPositionTopOrBottom && onTabScroll) {\n onTabScroll({\n direction: next > prev ? 'top' : 'bottom'\n });\n }\n }),\n _useSyncState4 = _slicedToArray(_useSyncState3, 2),\n transformTop = _useSyncState4[0],\n setTransformTop = _useSyncState4[1];\n var _useState = useState([0, 0]),\n _useState2 = _slicedToArray(_useState, 2),\n containerExcludeExtraSize = _useState2[0],\n setContainerExcludeExtraSize = _useState2[1];\n var _useState3 = useState([0, 0]),\n _useState4 = _slicedToArray(_useState3, 2),\n tabContentSize = _useState4[0],\n setTabContentSize = _useState4[1];\n var _useState5 = useState([0, 0]),\n _useState6 = _slicedToArray(_useState5, 2),\n addSize = _useState6[0],\n setAddSize = _useState6[1];\n var _useState7 = useState([0, 0]),\n _useState8 = _slicedToArray(_useState7, 2),\n operationSize = _useState8[0],\n setOperationSize = _useState8[1];\n var _useUpdateState = useUpdateState(new Map()),\n _useUpdateState2 = _slicedToArray(_useUpdateState, 2),\n tabSizes = _useUpdateState2[0],\n setTabSizes = _useUpdateState2[1];\n var tabOffsets = useOffsets(tabs, tabSizes, tabContentSize[0]);\n\n // ========================== Unit =========================\n var containerExcludeExtraSizeValue = getUnitValue(containerExcludeExtraSize, tabPositionTopOrBottom);\n var tabContentSizeValue = getUnitValue(tabContentSize, tabPositionTopOrBottom);\n var addSizeValue = getUnitValue(addSize, tabPositionTopOrBottom);\n var operationSizeValue = getUnitValue(operationSize, tabPositionTopOrBottom);\n var needScroll = containerExcludeExtraSizeValue < tabContentSizeValue + addSizeValue;\n var visibleTabContentValue = needScroll ? containerExcludeExtraSizeValue - operationSizeValue : containerExcludeExtraSizeValue - addSizeValue;\n\n // ========================== Util =========================\n var operationsHiddenClassName = \"\".concat(prefixCls, \"-nav-operations-hidden\");\n var transformMin = 0;\n var transformMax = 0;\n if (!tabPositionTopOrBottom) {\n transformMin = Math.min(0, visibleTabContentValue - tabContentSizeValue);\n transformMax = 0;\n } else if (rtl) {\n transformMin = 0;\n transformMax = Math.max(0, tabContentSizeValue - visibleTabContentValue);\n } else {\n transformMin = Math.min(0, visibleTabContentValue - tabContentSizeValue);\n transformMax = 0;\n }\n function alignInRange(value) {\n if (value < transformMin) {\n return transformMin;\n }\n if (value > transformMax) {\n return transformMax;\n }\n return value;\n }\n\n // ========================= Mobile ========================\n var touchMovingRef = useRef();\n var _useState9 = useState(),\n _useState10 = _slicedToArray(_useState9, 2),\n lockAnimation = _useState10[0],\n setLockAnimation = _useState10[1];\n function doLockAnimation() {\n setLockAnimation(Date.now());\n }\n function clearTouchMoving() {\n window.clearTimeout(touchMovingRef.current);\n }\n useTouchMove(tabsWrapperRef, function (offsetX, offsetY) {\n function doMove(setState, offset) {\n setState(function (value) {\n var newValue = alignInRange(value + offset);\n return newValue;\n });\n }\n\n // Skip scroll if place is enough\n if (!needScroll) {\n return false;\n }\n if (tabPositionTopOrBottom) {\n doMove(setTransformLeft, offsetX);\n } else {\n doMove(setTransformTop, offsetY);\n }\n clearTouchMoving();\n doLockAnimation();\n return true;\n });\n useEffect(function () {\n clearTouchMoving();\n if (lockAnimation) {\n touchMovingRef.current = window.setTimeout(function () {\n setLockAnimation(0);\n }, 100);\n }\n return clearTouchMoving;\n }, [lockAnimation]);\n\n // ===================== Visible Range =====================\n // Render tab node & collect tab offset\n var _useVisibleRange = useVisibleRange(tabOffsets,\n // Container\n visibleTabContentValue,\n // Transform\n tabPositionTopOrBottom ? transformLeft : transformTop,\n // Tabs\n tabContentSizeValue,\n // Add\n addSizeValue,\n // Operation\n operationSizeValue, _objectSpread(_objectSpread({}, props), {}, {\n tabs: tabs\n })),\n _useVisibleRange2 = _slicedToArray(_useVisibleRange, 2),\n visibleStart = _useVisibleRange2[0],\n visibleEnd = _useVisibleRange2[1];\n\n // ========================= Scroll ========================\n var scrollToTab = useEvent(function () {\n var key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : activeKey;\n var tabOffset = tabOffsets.get(key) || {\n width: 0,\n height: 0,\n left: 0,\n right: 0,\n top: 0\n };\n if (tabPositionTopOrBottom) {\n // ============ Align with top & bottom ============\n var newTransform = transformLeft;\n\n // RTL\n if (rtl) {\n if (tabOffset.right < transformLeft) {\n newTransform = tabOffset.right;\n } else if (tabOffset.right + tabOffset.width > transformLeft + visibleTabContentValue) {\n newTransform = tabOffset.right + tabOffset.width - visibleTabContentValue;\n }\n }\n // LTR\n else if (tabOffset.left < -transformLeft) {\n newTransform = -tabOffset.left;\n } else if (tabOffset.left + tabOffset.width > -transformLeft + visibleTabContentValue) {\n newTransform = -(tabOffset.left + tabOffset.width - visibleTabContentValue);\n }\n setTransformTop(0);\n setTransformLeft(alignInRange(newTransform));\n } else {\n // ============ Align with left & right ============\n var _newTransform = transformTop;\n if (tabOffset.top < -transformTop) {\n _newTransform = -tabOffset.top;\n } else if (tabOffset.top + tabOffset.height > -transformTop + visibleTabContentValue) {\n _newTransform = -(tabOffset.top + tabOffset.height - visibleTabContentValue);\n }\n setTransformLeft(0);\n setTransformTop(alignInRange(_newTransform));\n }\n });\n\n // ========================== Tab ==========================\n var tabNodeStyle = {};\n if (tabPosition === 'top' || tabPosition === 'bottom') {\n tabNodeStyle[rtl ? 'marginRight' : 'marginLeft'] = tabBarGutter;\n } else {\n tabNodeStyle.marginTop = tabBarGutter;\n }\n var tabNodes = tabs.map(function (tab, i) {\n var key = tab.key;\n return /*#__PURE__*/React.createElement(TabNode, {\n id: id,\n prefixCls: prefixCls,\n key: key,\n tab: tab\n /* first node should not have margin left */,\n style: i === 0 ? undefined : tabNodeStyle,\n closable: tab.closable,\n editable: editable,\n active: key === activeKey,\n renderWrapper: children,\n removeAriaLabel: locale === null || locale === void 0 ? void 0 : locale.removeAriaLabel,\n onClick: function onClick(e) {\n onTabClick(key, e);\n },\n onFocus: function onFocus() {\n scrollToTab(key);\n doLockAnimation();\n if (!tabsWrapperRef.current) {\n return;\n }\n // Focus element will make scrollLeft change which we should reset back\n if (!rtl) {\n tabsWrapperRef.current.scrollLeft = 0;\n }\n tabsWrapperRef.current.scrollTop = 0;\n }\n });\n });\n\n // Update buttons records\n var updateTabSizes = function updateTabSizes() {\n return setTabSizes(function () {\n var newSizes = new Map();\n tabs.forEach(function (_ref2) {\n var _tabListRef$current;\n var key = _ref2.key;\n var btnNode = (_tabListRef$current = tabListRef.current) === null || _tabListRef$current === void 0 ? void 0 : _tabListRef$current.querySelector(\"[data-node-key=\\\"\".concat(genDataNodeKey(key), \"\\\"]\"));\n if (btnNode) {\n newSizes.set(key, {\n width: btnNode.offsetWidth,\n height: btnNode.offsetHeight,\n left: btnNode.offsetLeft,\n top: btnNode.offsetTop\n });\n }\n });\n return newSizes;\n });\n };\n useEffect(function () {\n updateTabSizes();\n }, [tabs.map(function (tab) {\n return tab.key;\n }).join('_')]);\n var onListHolderResize = useUpdate(function () {\n // Update wrapper records\n var containerSize = getSize(containerRef);\n var extraLeftSize = getSize(extraLeftRef);\n var extraRightSize = getSize(extraRightRef);\n setContainerExcludeExtraSize([containerSize[0] - extraLeftSize[0] - extraRightSize[0], containerSize[1] - extraLeftSize[1] - extraRightSize[1]]);\n var newAddSize = getSize(innerAddButtonRef);\n setAddSize(newAddSize);\n var newOperationSize = getSize(operationsRef);\n setOperationSize(newOperationSize);\n\n // Which includes add button size\n var tabContentFullSize = getSize(tabListRef);\n setTabContentSize([tabContentFullSize[0] - newAddSize[0], tabContentFullSize[1] - newAddSize[1]]);\n\n // Update buttons records\n updateTabSizes();\n });\n\n // ======================== Dropdown =======================\n var startHiddenTabs = tabs.slice(0, visibleStart);\n var endHiddenTabs = tabs.slice(visibleEnd + 1);\n var hiddenTabs = [].concat(_toConsumableArray(startHiddenTabs), _toConsumableArray(endHiddenTabs));\n\n // =================== Link & Operations ===================\n var _useState11 = useState(),\n _useState12 = _slicedToArray(_useState11, 2),\n inkStyle = _useState12[0],\n setInkStyle = _useState12[1];\n var activeTabOffset = tabOffsets.get(activeKey);\n\n // Delay set ink style to avoid remove tab blink\n var inkBarRafRef = useRef();\n function cleanInkBarRaf() {\n raf.cancel(inkBarRafRef.current);\n }\n useEffect(function () {\n var newInkStyle = {};\n if (activeTabOffset) {\n if (tabPositionTopOrBottom) {\n if (rtl) {\n newInkStyle.right = activeTabOffset.right;\n } else {\n newInkStyle.left = activeTabOffset.left;\n }\n newInkStyle.width = activeTabOffset.width;\n } else {\n newInkStyle.top = activeTabOffset.top;\n newInkStyle.height = activeTabOffset.height;\n }\n }\n cleanInkBarRaf();\n inkBarRafRef.current = raf(function () {\n setInkStyle(newInkStyle);\n });\n return cleanInkBarRaf;\n }, [activeTabOffset, tabPositionTopOrBottom, rtl]);\n\n // ========================= Effect ========================\n useEffect(function () {\n scrollToTab();\n // eslint-disable-next-line\n }, [activeKey, transformMin, transformMax, stringify(activeTabOffset), stringify(tabOffsets), tabPositionTopOrBottom]);\n\n // Should recalculate when rtl changed\n useEffect(function () {\n onListHolderResize();\n // eslint-disable-next-line\n }, [rtl]);\n\n // ========================= Render ========================\n var hasDropdown = !!hiddenTabs.length;\n var wrapPrefix = \"\".concat(prefixCls, \"-nav-wrap\");\n var pingLeft;\n var pingRight;\n var pingTop;\n var pingBottom;\n if (tabPositionTopOrBottom) {\n if (rtl) {\n pingRight = transformLeft > 0;\n pingLeft = transformLeft !== transformMax;\n } else {\n pingLeft = transformLeft < 0;\n pingRight = transformLeft !== transformMin;\n }\n } else {\n pingTop = transformTop < 0;\n pingBottom = transformTop !== transformMin;\n }\n return /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: onListHolderResize\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: useComposeRef(ref, containerRef),\n role: \"tablist\",\n className: classNames(\"\".concat(prefixCls, \"-nav\"), className),\n style: style,\n onKeyDown: function onKeyDown() {\n // No need animation when use keyboard\n doLockAnimation();\n }\n }, /*#__PURE__*/React.createElement(ExtraContent, {\n ref: extraLeftRef,\n position: \"left\",\n extra: extra,\n prefixCls: prefixCls\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(wrapPrefix, (_classNames = {}, _defineProperty(_classNames, \"\".concat(wrapPrefix, \"-ping-left\"), pingLeft), _defineProperty(_classNames, \"\".concat(wrapPrefix, \"-ping-right\"), pingRight), _defineProperty(_classNames, \"\".concat(wrapPrefix, \"-ping-top\"), pingTop), _defineProperty(_classNames, \"\".concat(wrapPrefix, \"-ping-bottom\"), pingBottom), _classNames)),\n ref: tabsWrapperRef\n }, /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: onListHolderResize\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: tabListRef,\n className: \"\".concat(prefixCls, \"-nav-list\"),\n style: {\n transform: \"translate(\".concat(transformLeft, \"px, \").concat(transformTop, \"px)\"),\n transition: lockAnimation ? 'none' : undefined\n }\n }, tabNodes, /*#__PURE__*/React.createElement(AddButton, {\n ref: innerAddButtonRef,\n prefixCls: prefixCls,\n locale: locale,\n editable: editable,\n style: _objectSpread(_objectSpread({}, tabNodes.length === 0 ? undefined : tabNodeStyle), {}, {\n visibility: hasDropdown ? 'hidden' : null\n })\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-ink-bar\"), _defineProperty({}, \"\".concat(prefixCls, \"-ink-bar-animated\"), animated.inkBar)),\n style: inkStyle\n })))), /*#__PURE__*/React.createElement(OperationNode, _extends({}, props, {\n removeAriaLabel: locale === null || locale === void 0 ? void 0 : locale.removeAriaLabel,\n ref: operationsRef,\n prefixCls: prefixCls,\n tabs: hiddenTabs,\n className: !hasDropdown && operationsHiddenClassName,\n tabMoving: !!lockAnimation\n })), /*#__PURE__*/React.createElement(ExtraContent, {\n ref: extraRightRef,\n position: \"right\",\n extra: extra,\n prefixCls: prefixCls\n })));\n /* eslint-enable */\n}\n\nexport default /*#__PURE__*/React.forwardRef(TabNavList);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"renderTabBar\"],\n _excluded2 = [\"label\", \"key\"];\n// zombieJ: To compatible with `renderTabBar` usage.\n\nimport * as React from 'react';\nimport TabNavList from '.';\nimport TabContext from \"../TabContext\";\nimport TabPane from \"../TabPanelList/TabPane\";\n// We have to create a TabNavList components.\nexport default function TabNavListWrapper(_ref) {\n var renderTabBar = _ref.renderTabBar,\n restProps = _objectWithoutProperties(_ref, _excluded);\n var _React$useContext = React.useContext(TabContext),\n tabs = _React$useContext.tabs;\n if (renderTabBar) {\n var tabNavBarProps = _objectSpread(_objectSpread({}, restProps), {}, {\n // Legacy support. We do not use this actually\n panes: tabs.map(function (_ref2) {\n var label = _ref2.label,\n key = _ref2.key,\n restTabProps = _objectWithoutProperties(_ref2, _excluded2);\n return /*#__PURE__*/React.createElement(TabPane, _extends({\n tab: label,\n key: key,\n tabKey: key\n }, restTabProps));\n })\n });\n return renderTabBar(tabNavBarProps, TabNavList);\n }\n return /*#__PURE__*/React.createElement(TabNavList, restProps);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"id\", \"prefixCls\", \"className\", \"items\", \"direction\", \"activeKey\", \"defaultActiveKey\", \"editable\", \"animated\", \"tabPosition\", \"tabBarGutter\", \"tabBarStyle\", \"tabBarExtraContent\", \"locale\", \"moreIcon\", \"moreTransitionName\", \"destroyInactiveTabPane\", \"renderTabBar\", \"onChange\", \"onTabClick\", \"onTabScroll\", \"getPopupContainer\", \"popupClassName\"];\n// Accessibility https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/Tab_Role\nimport * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport classNames from 'classnames';\nimport isMobile from \"rc-util/es/isMobile\";\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport TabPanelList from \"./TabPanelList\";\nimport TabContext from \"./TabContext\";\nimport TabNavListWrapper from \"./TabNavList/Wrapper\";\nimport useAnimateConfig from \"./hooks/useAnimateConfig\";\n\n/**\n * Should added antd:\n * - type\n *\n * Removed:\n * - onNextClick\n * - onPrevClick\n * - keyboard\n */\n\n// Used for accessibility\nvar uuid = 0;\nfunction Tabs(_ref, ref) {\n var _classNames;\n var id = _ref.id,\n _ref$prefixCls = _ref.prefixCls,\n prefixCls = _ref$prefixCls === void 0 ? 'rc-tabs' : _ref$prefixCls,\n className = _ref.className,\n items = _ref.items,\n direction = _ref.direction,\n activeKey = _ref.activeKey,\n defaultActiveKey = _ref.defaultActiveKey,\n editable = _ref.editable,\n animated = _ref.animated,\n _ref$tabPosition = _ref.tabPosition,\n tabPosition = _ref$tabPosition === void 0 ? 'top' : _ref$tabPosition,\n tabBarGutter = _ref.tabBarGutter,\n tabBarStyle = _ref.tabBarStyle,\n tabBarExtraContent = _ref.tabBarExtraContent,\n locale = _ref.locale,\n moreIcon = _ref.moreIcon,\n moreTransitionName = _ref.moreTransitionName,\n destroyInactiveTabPane = _ref.destroyInactiveTabPane,\n renderTabBar = _ref.renderTabBar,\n onChange = _ref.onChange,\n onTabClick = _ref.onTabClick,\n onTabScroll = _ref.onTabScroll,\n getPopupContainer = _ref.getPopupContainer,\n popupClassName = _ref.popupClassName,\n restProps = _objectWithoutProperties(_ref, _excluded);\n var tabs = React.useMemo(function () {\n return (items || []).filter(function (item) {\n return item && _typeof(item) === 'object' && 'key' in item;\n });\n }, [items]);\n var rtl = direction === 'rtl';\n var mergedAnimated = useAnimateConfig(animated);\n\n // ======================== Mobile ========================\n var _useState = useState(false),\n _useState2 = _slicedToArray(_useState, 2),\n mobile = _useState2[0],\n setMobile = _useState2[1];\n useEffect(function () {\n // Only update on the client side\n setMobile(isMobile());\n }, []);\n\n // ====================== Active Key ======================\n var _useMergedState = useMergedState(function () {\n var _tabs$;\n return (_tabs$ = tabs[0]) === null || _tabs$ === void 0 ? void 0 : _tabs$.key;\n }, {\n value: activeKey,\n defaultValue: defaultActiveKey\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n mergedActiveKey = _useMergedState2[0],\n setMergedActiveKey = _useMergedState2[1];\n var _useState3 = useState(function () {\n return tabs.findIndex(function (tab) {\n return tab.key === mergedActiveKey;\n });\n }),\n _useState4 = _slicedToArray(_useState3, 2),\n activeIndex = _useState4[0],\n setActiveIndex = _useState4[1];\n\n // Reset active key if not exist anymore\n useEffect(function () {\n var newActiveIndex = tabs.findIndex(function (tab) {\n return tab.key === mergedActiveKey;\n });\n if (newActiveIndex === -1) {\n var _tabs$newActiveIndex;\n newActiveIndex = Math.max(0, Math.min(activeIndex, tabs.length - 1));\n setMergedActiveKey((_tabs$newActiveIndex = tabs[newActiveIndex]) === null || _tabs$newActiveIndex === void 0 ? void 0 : _tabs$newActiveIndex.key);\n }\n setActiveIndex(newActiveIndex);\n }, [tabs.map(function (tab) {\n return tab.key;\n }).join('_'), mergedActiveKey, activeIndex]);\n\n // ===================== Accessibility ====================\n var _useMergedState3 = useMergedState(null, {\n value: id\n }),\n _useMergedState4 = _slicedToArray(_useMergedState3, 2),\n mergedId = _useMergedState4[0],\n setMergedId = _useMergedState4[1];\n\n // Async generate id to avoid ssr mapping failed\n useEffect(function () {\n if (!id) {\n setMergedId(\"rc-tabs-\".concat(process.env.NODE_ENV === 'test' ? 'test' : uuid));\n uuid += 1;\n }\n }, []);\n\n // ======================== Events ========================\n function onInternalTabClick(key, e) {\n onTabClick === null || onTabClick === void 0 ? void 0 : onTabClick(key, e);\n var isActiveChanged = key !== mergedActiveKey;\n setMergedActiveKey(key);\n if (isActiveChanged) {\n onChange === null || onChange === void 0 ? void 0 : onChange(key);\n }\n }\n\n // ======================== Render ========================\n var sharedProps = {\n id: mergedId,\n activeKey: mergedActiveKey,\n animated: mergedAnimated,\n tabPosition: tabPosition,\n rtl: rtl,\n mobile: mobile\n };\n var tabNavBar;\n var tabNavBarProps = _objectSpread(_objectSpread({}, sharedProps), {}, {\n editable: editable,\n locale: locale,\n moreIcon: moreIcon,\n moreTransitionName: moreTransitionName,\n tabBarGutter: tabBarGutter,\n onTabClick: onInternalTabClick,\n onTabScroll: onTabScroll,\n extra: tabBarExtraContent,\n style: tabBarStyle,\n panes: null,\n getPopupContainer: getPopupContainer,\n popupClassName: popupClassName\n });\n return /*#__PURE__*/React.createElement(TabContext.Provider, {\n value: {\n tabs: tabs,\n prefixCls: prefixCls\n }\n }, /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: ref,\n id: id,\n className: classNames(prefixCls, \"\".concat(prefixCls, \"-\").concat(tabPosition), (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-mobile\"), mobile), _defineProperty(_classNames, \"\".concat(prefixCls, \"-editable\"), editable), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), rtl), _classNames), className)\n }, restProps), tabNavBar, /*#__PURE__*/React.createElement(TabNavListWrapper, _extends({}, tabNavBarProps, {\n renderTabBar: renderTabBar\n })), /*#__PURE__*/React.createElement(TabPanelList, _extends({\n destroyInactiveTabPane: destroyInactiveTabPane\n }, sharedProps, {\n animated: mergedAnimated\n }))));\n}\nvar ForwardTabs = /*#__PURE__*/React.forwardRef(Tabs);\nif (process.env.NODE_ENV !== 'production') {\n ForwardTabs.displayName = 'Tabs';\n}\nexport default ForwardTabs;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport warning from \"rc-util/es/warning\";\nexport default function useAnimateConfig() {\n var animated = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n inkBar: true,\n tabPane: false\n };\n var mergedAnimated;\n if (animated === false) {\n mergedAnimated = {\n inkBar: false,\n tabPane: false\n };\n } else if (animated === true) {\n mergedAnimated = {\n inkBar: true,\n tabPane: false\n };\n } else {\n mergedAnimated = _objectSpread({\n inkBar: true\n }, _typeof(animated) === 'object' ? animated : {});\n }\n\n // Enable tabPane animation if provide motion\n if (mergedAnimated.tabPaneMotion && mergedAnimated.tabPane === undefined) {\n mergedAnimated.tabPane = true;\n }\n if (!mergedAnimated.tabPaneMotion && mergedAnimated.tabPane) {\n if (process.env.NODE_ENV !== 'production') {\n warning(false, '`animated.tabPane` is true but `animated.tabPaneMotion` is not provided. Motion will not work.');\n }\n mergedAnimated.tabPane = false;\n }\n return mergedAnimated;\n}","import Tabs from \"./Tabs\";\nexport default Tabs;","var TabPane = function TabPane() {\n return null;\n};\nif (process.env.NODE_ENV !== 'production') {\n TabPane.displayName = 'DeprecatedTabPane';\n}\nexport default TabPane;","import { getTransitionName } from '../../_util/motion';\nvar motion = {\n motionAppear: false,\n motionEnter: true,\n motionLeave: true\n};\nexport default function useAnimateConfig(prefixCls) {\n var animated = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n inkBar: true,\n tabPane: false\n };\n var mergedAnimated;\n if (animated === false) {\n mergedAnimated = {\n inkBar: false,\n tabPane: false\n };\n } else if (animated === true) {\n mergedAnimated = {\n inkBar: true,\n tabPane: true\n };\n } else {\n mergedAnimated = Object.assign({\n inkBar: true\n }, typeof animated === 'object' ? animated : {});\n }\n if (mergedAnimated.tabPane) {\n mergedAnimated.tabPaneMotion = Object.assign(Object.assign({}, motion), {\n motionName: getTransitionName(prefixCls, 'switch')\n });\n }\n return mergedAnimated;\n}","var __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport toArray from \"rc-util/es/Children/toArray\";\nimport warning from '../../_util/warning';\nfunction filter(items) {\n return items.filter(function (item) {\n return item;\n });\n}\nexport default function useLegacyItems(items, children) {\n if (items) {\n return items;\n }\n process.env.NODE_ENV !== \"production\" ? warning(!children, 'Tabs', 'Tabs.TabPane is deprecated. Please use `items` directly.') : void 0;\n var childrenItems = toArray(children).map(function (node) {\n if ( /*#__PURE__*/React.isValidElement(node)) {\n var key = node.key,\n props = node.props;\n var _a = props || {},\n tab = _a.tab,\n restProps = __rest(_a, [\"tab\"]);\n var item = Object.assign(Object.assign({\n key: String(key)\n }, restProps), {\n label: tab\n });\n return item;\n }\n return null;\n });\n return filter(childrenItems);\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { initSlideMotion } from '../../style/motion';\nvar genMotionStyle = function genMotionStyle(token) {\n var componentCls = token.componentCls,\n motionDurationSlow = token.motionDurationSlow;\n return [_defineProperty({}, componentCls, _defineProperty({}, \"\".concat(componentCls, \"-switch\"), {\n '&-appear, &-enter': {\n transition: 'none',\n '&-start': {\n opacity: 0\n },\n '&-active': {\n opacity: 1,\n transition: \"opacity \".concat(motionDurationSlow)\n }\n },\n '&-leave': {\n position: 'absolute',\n transition: 'none',\n inset: 0,\n '&-start': {\n opacity: 1\n },\n '&-active': {\n opacity: 0,\n transition: \"opacity \".concat(motionDurationSlow)\n }\n }\n })),\n // Follow code may reuse in other components\n [initSlideMotion(token, 'slide-up'), initSlideMotion(token, 'slide-down')]];\n};\nexport default genMotionStyle;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { genFocusStyle, resetComponent, textEllipsis } from '../../style';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport genMotionStyle from './motion';\nvar genCardStyle = function genCardStyle(token) {\n var _$concat$concat, _$concat$concat4, _$concat$concat5, _$concat$concat8, _$concat$concat9, _$concat5;\n var componentCls = token.componentCls,\n tabsCardPadding = token.tabsCardPadding,\n cardBg = token.cardBg,\n cardGutter = token.cardGutter,\n colorBorderSecondary = token.colorBorderSecondary,\n itemSelectedColor = token.itemSelectedColor;\n return _defineProperty({}, \"\".concat(componentCls, \"-card\"), (_$concat5 = {}, _defineProperty(_$concat5, \"> \".concat(componentCls, \"-nav, > div > \").concat(componentCls, \"-nav\"), (_$concat$concat = {}, _defineProperty(_$concat$concat, \"\".concat(componentCls, \"-tab\"), {\n margin: 0,\n padding: tabsCardPadding,\n background: cardBg,\n border: \"\".concat(token.lineWidth, \"px \").concat(token.lineType, \" \").concat(colorBorderSecondary),\n transition: \"all \".concat(token.motionDurationSlow, \" \").concat(token.motionEaseInOut)\n }), _defineProperty(_$concat$concat, \"\".concat(componentCls, \"-tab-active\"), {\n color: itemSelectedColor,\n background: token.colorBgContainer\n }), _defineProperty(_$concat$concat, \"\".concat(componentCls, \"-ink-bar\"), {\n visibility: 'hidden'\n }), _$concat$concat)), _defineProperty(_$concat5, \"&\".concat(componentCls, \"-top, &\").concat(componentCls, \"-bottom\"), _defineProperty({}, \"> \".concat(componentCls, \"-nav, > div > \").concat(componentCls, \"-nav\"), _defineProperty({}, \"\".concat(componentCls, \"-tab + \").concat(componentCls, \"-tab\"), {\n marginLeft: {\n _skip_check_: true,\n value: \"\".concat(cardGutter, \"px\")\n }\n }))), _defineProperty(_$concat5, \"&\".concat(componentCls, \"-top\"), _defineProperty({}, \"> \".concat(componentCls, \"-nav, > div > \").concat(componentCls, \"-nav\"), (_$concat$concat4 = {}, _defineProperty(_$concat$concat4, \"\".concat(componentCls, \"-tab\"), {\n borderRadius: \"\".concat(token.borderRadiusLG, \"px \").concat(token.borderRadiusLG, \"px 0 0\")\n }), _defineProperty(_$concat$concat4, \"\".concat(componentCls, \"-tab-active\"), {\n borderBottomColor: token.colorBgContainer\n }), _$concat$concat4))), _defineProperty(_$concat5, \"&\".concat(componentCls, \"-bottom\"), _defineProperty({}, \"> \".concat(componentCls, \"-nav, > div > \").concat(componentCls, \"-nav\"), (_$concat$concat5 = {}, _defineProperty(_$concat$concat5, \"\".concat(componentCls, \"-tab\"), {\n borderRadius: \"0 0 \".concat(token.borderRadiusLG, \"px \").concat(token.borderRadiusLG, \"px\")\n }), _defineProperty(_$concat$concat5, \"\".concat(componentCls, \"-tab-active\"), {\n borderTopColor: token.colorBgContainer\n }), _$concat$concat5))), _defineProperty(_$concat5, \"&\".concat(componentCls, \"-left, &\").concat(componentCls, \"-right\"), _defineProperty({}, \"> \".concat(componentCls, \"-nav, > div > \").concat(componentCls, \"-nav\"), _defineProperty({}, \"\".concat(componentCls, \"-tab + \").concat(componentCls, \"-tab\"), {\n marginTop: \"\".concat(cardGutter, \"px\")\n }))), _defineProperty(_$concat5, \"&\".concat(componentCls, \"-left\"), _defineProperty({}, \"> \".concat(componentCls, \"-nav, > div > \").concat(componentCls, \"-nav\"), (_$concat$concat8 = {}, _defineProperty(_$concat$concat8, \"\".concat(componentCls, \"-tab\"), {\n borderRadius: {\n _skip_check_: true,\n value: \"\".concat(token.borderRadiusLG, \"px 0 0 \").concat(token.borderRadiusLG, \"px\")\n }\n }), _defineProperty(_$concat$concat8, \"\".concat(componentCls, \"-tab-active\"), {\n borderRightColor: {\n _skip_check_: true,\n value: token.colorBgContainer\n }\n }), _$concat$concat8))), _defineProperty(_$concat5, \"&\".concat(componentCls, \"-right\"), _defineProperty({}, \"> \".concat(componentCls, \"-nav, > div > \").concat(componentCls, \"-nav\"), (_$concat$concat9 = {}, _defineProperty(_$concat$concat9, \"\".concat(componentCls, \"-tab\"), {\n borderRadius: {\n _skip_check_: true,\n value: \"0 \".concat(token.borderRadiusLG, \"px \").concat(token.borderRadiusLG, \"px 0\")\n }\n }), _defineProperty(_$concat$concat9, \"\".concat(componentCls, \"-tab-active\"), {\n borderLeftColor: {\n _skip_check_: true,\n value: token.colorBgContainer\n }\n }), _$concat$concat9))), _$concat5));\n};\nvar genDropdownStyle = function genDropdownStyle(token) {\n var componentCls = token.componentCls,\n itemHoverColor = token.itemHoverColor,\n dropdownEdgeChildVerticalPadding = token.dropdownEdgeChildVerticalPadding;\n return _defineProperty({}, \"\".concat(componentCls, \"-dropdown\"), Object.assign(Object.assign({}, resetComponent(token)), _defineProperty({\n position: 'absolute',\n top: -9999,\n left: {\n _skip_check_: true,\n value: -9999\n },\n zIndex: token.zIndexPopup,\n display: 'block',\n '&-hidden': {\n display: 'none'\n }\n }, \"\".concat(componentCls, \"-dropdown-menu\"), {\n maxHeight: token.tabsDropdownHeight,\n margin: 0,\n padding: \"\".concat(dropdownEdgeChildVerticalPadding, \"px 0\"),\n overflowX: 'hidden',\n overflowY: 'auto',\n textAlign: {\n _skip_check_: true,\n value: 'left'\n },\n listStyleType: 'none',\n backgroundColor: token.colorBgContainer,\n backgroundClip: 'padding-box',\n borderRadius: token.borderRadiusLG,\n outline: 'none',\n boxShadow: token.boxShadowSecondary,\n '&-item': Object.assign(Object.assign({}, textEllipsis), {\n display: 'flex',\n alignItems: 'center',\n minWidth: token.tabsDropdownWidth,\n margin: 0,\n padding: \"\".concat(token.paddingXXS, \"px \").concat(token.paddingSM, \"px\"),\n color: token.colorText,\n fontWeight: 'normal',\n fontSize: token.fontSize,\n lineHeight: token.lineHeight,\n cursor: 'pointer',\n transition: \"all \".concat(token.motionDurationSlow),\n '> span': {\n flex: 1,\n whiteSpace: 'nowrap'\n },\n '&-remove': {\n flex: 'none',\n marginLeft: {\n _skip_check_: true,\n value: token.marginSM\n },\n color: token.colorTextDescription,\n fontSize: token.fontSizeSM,\n background: 'transparent',\n border: 0,\n cursor: 'pointer',\n '&:hover': {\n color: itemHoverColor\n }\n },\n '&:hover': {\n background: token.controlItemBgHover\n },\n '&-disabled': {\n '&, &:hover': {\n color: token.colorTextDisabled,\n background: 'transparent',\n cursor: 'not-allowed'\n }\n }\n })\n })));\n};\nvar genPositionStyle = function genPositionStyle(token) {\n var _$concat6, _$concat$concat10, _$concat8, _$concat9, _$concat$concat14, _$concat10, _$concat11, _ref3;\n var componentCls = token.componentCls,\n margin = token.margin,\n colorBorderSecondary = token.colorBorderSecondary,\n horizontalMargin = token.horizontalMargin,\n verticalItemPadding = token.verticalItemPadding,\n verticalItemMargin = token.verticalItemMargin;\n return _ref3 = {}, _defineProperty(_ref3, \"\".concat(componentCls, \"-top, \").concat(componentCls, \"-bottom\"), _defineProperty({\n flexDirection: 'column'\n }, \"> \".concat(componentCls, \"-nav, > div > \").concat(componentCls, \"-nav\"), (_$concat$concat10 = {\n margin: horizontalMargin,\n '&::before': {\n position: 'absolute',\n right: {\n _skip_check_: true,\n value: 0\n },\n left: {\n _skip_check_: true,\n value: 0\n },\n borderBottom: \"\".concat(token.lineWidth, \"px \").concat(token.lineType, \" \").concat(colorBorderSecondary),\n content: \"''\"\n }\n }, _defineProperty(_$concat$concat10, \"\".concat(componentCls, \"-ink-bar\"), {\n height: token.lineWidthBold,\n '&-animated': {\n transition: \"width \".concat(token.motionDurationSlow, \", left \").concat(token.motionDurationSlow, \",\\n right \").concat(token.motionDurationSlow)\n }\n }), _defineProperty(_$concat$concat10, \"\".concat(componentCls, \"-nav-wrap\"), (_$concat6 = {\n '&::before, &::after': {\n top: 0,\n bottom: 0,\n width: token.controlHeight\n },\n '&::before': {\n left: {\n _skip_check_: true,\n value: 0\n },\n boxShadow: token.boxShadowTabsOverflowLeft\n },\n '&::after': {\n right: {\n _skip_check_: true,\n value: 0\n },\n boxShadow: token.boxShadowTabsOverflowRight\n }\n }, _defineProperty(_$concat6, \"&\".concat(componentCls, \"-nav-wrap-ping-left::before\"), {\n opacity: 1\n }), _defineProperty(_$concat6, \"&\".concat(componentCls, \"-nav-wrap-ping-right::after\"), {\n opacity: 1\n }), _$concat6)), _$concat$concat10))), _defineProperty(_ref3, \"\".concat(componentCls, \"-top\"), _defineProperty({}, \"> \".concat(componentCls, \"-nav,\\n > div > \").concat(componentCls, \"-nav\"), _defineProperty({\n '&::before': {\n bottom: 0\n }\n }, \"\".concat(componentCls, \"-ink-bar\"), {\n bottom: 0\n }))), _defineProperty(_ref3, \"\".concat(componentCls, \"-bottom\"), (_$concat8 = {}, _defineProperty(_$concat8, \"> \".concat(componentCls, \"-nav, > div > \").concat(componentCls, \"-nav\"), _defineProperty({\n order: 1,\n marginTop: \"\".concat(margin, \"px\"),\n marginBottom: 0,\n '&::before': {\n top: 0\n }\n }, \"\".concat(componentCls, \"-ink-bar\"), {\n top: 0\n })), _defineProperty(_$concat8, \"> \".concat(componentCls, \"-content-holder, > div > \").concat(componentCls, \"-content-holder\"), {\n order: 0\n }), _$concat8)), _defineProperty(_ref3, \"\".concat(componentCls, \"-left, \").concat(componentCls, \"-right\"), _defineProperty({}, \"> \".concat(componentCls, \"-nav, > div > \").concat(componentCls, \"-nav\"), (_$concat$concat14 = {\n flexDirection: 'column',\n minWidth: token.controlHeight * 1.25\n }, _defineProperty(_$concat$concat14, \"\".concat(componentCls, \"-tab\"), {\n padding: verticalItemPadding,\n textAlign: 'center'\n }), _defineProperty(_$concat$concat14, \"\".concat(componentCls, \"-tab + \").concat(componentCls, \"-tab\"), {\n margin: verticalItemMargin\n }), _defineProperty(_$concat$concat14, \"\".concat(componentCls, \"-nav-wrap\"), (_$concat9 = {\n flexDirection: 'column',\n '&::before, &::after': {\n right: {\n _skip_check_: true,\n value: 0\n },\n left: {\n _skip_check_: true,\n value: 0\n },\n height: token.controlHeight\n },\n '&::before': {\n top: 0,\n boxShadow: token.boxShadowTabsOverflowTop\n },\n '&::after': {\n bottom: 0,\n boxShadow: token.boxShadowTabsOverflowBottom\n }\n }, _defineProperty(_$concat9, \"&\".concat(componentCls, \"-nav-wrap-ping-top::before\"), {\n opacity: 1\n }), _defineProperty(_$concat9, \"&\".concat(componentCls, \"-nav-wrap-ping-bottom::after\"), {\n opacity: 1\n }), _$concat9)), _defineProperty(_$concat$concat14, \"\".concat(componentCls, \"-ink-bar\"), {\n width: token.lineWidthBold,\n '&-animated': {\n transition: \"height \".concat(token.motionDurationSlow, \", top \").concat(token.motionDurationSlow)\n }\n }), _defineProperty(_$concat$concat14, \"\".concat(componentCls, \"-nav-list, \").concat(componentCls, \"-nav-operations\"), {\n flex: '1 0 auto',\n flexDirection: 'column'\n }), _$concat$concat14))), _defineProperty(_ref3, \"\".concat(componentCls, \"-left\"), (_$concat10 = {}, _defineProperty(_$concat10, \"> \".concat(componentCls, \"-nav, > div > \").concat(componentCls, \"-nav\"), _defineProperty({}, \"\".concat(componentCls, \"-ink-bar\"), {\n right: {\n _skip_check_: true,\n value: 0\n }\n })), _defineProperty(_$concat10, \"> \".concat(componentCls, \"-content-holder, > div > \").concat(componentCls, \"-content-holder\"), _defineProperty({\n marginLeft: {\n _skip_check_: true,\n value: \"-\".concat(token.lineWidth, \"px\")\n },\n borderLeft: {\n _skip_check_: true,\n value: \"\".concat(token.lineWidth, \"px \").concat(token.lineType, \" \").concat(token.colorBorder)\n }\n }, \"> \".concat(componentCls, \"-content > \").concat(componentCls, \"-tabpane\"), {\n paddingLeft: {\n _skip_check_: true,\n value: token.paddingLG\n }\n })), _$concat10)), _defineProperty(_ref3, \"\".concat(componentCls, \"-right\"), (_$concat11 = {}, _defineProperty(_$concat11, \"> \".concat(componentCls, \"-nav, > div > \").concat(componentCls, \"-nav\"), _defineProperty({\n order: 1\n }, \"\".concat(componentCls, \"-ink-bar\"), {\n left: {\n _skip_check_: true,\n value: 0\n }\n })), _defineProperty(_$concat11, \"> \".concat(componentCls, \"-content-holder, > div > \").concat(componentCls, \"-content-holder\"), _defineProperty({\n order: 0,\n marginRight: {\n _skip_check_: true,\n value: -token.lineWidth\n },\n borderRight: {\n _skip_check_: true,\n value: \"\".concat(token.lineWidth, \"px \").concat(token.lineType, \" \").concat(token.colorBorder)\n }\n }, \"> \".concat(componentCls, \"-content > \").concat(componentCls, \"-tabpane\"), {\n paddingRight: {\n _skip_check_: true,\n value: token.paddingLG\n }\n })), _$concat11)), _ref3;\n};\nvar genSizeStyle = function genSizeStyle(token) {\n var _$concat19, _$concat22, _ref4;\n var componentCls = token.componentCls,\n cardPaddingSM = token.cardPaddingSM,\n cardPaddingLG = token.cardPaddingLG,\n horizontalItemPaddingSM = token.horizontalItemPaddingSM,\n horizontalItemPaddingLG = token.horizontalItemPaddingLG;\n return _ref4 = {}, _defineProperty(_ref4, componentCls, {\n '&-small': _defineProperty({}, \"> \".concat(componentCls, \"-nav\"), _defineProperty({}, \"\".concat(componentCls, \"-tab\"), {\n padding: horizontalItemPaddingSM,\n fontSize: token.titleFontSizeSM\n })),\n '&-large': _defineProperty({}, \"> \".concat(componentCls, \"-nav\"), _defineProperty({}, \"\".concat(componentCls, \"-tab\"), {\n padding: horizontalItemPaddingLG,\n fontSize: token.titleFontSizeLG\n }))\n }), _defineProperty(_ref4, \"\".concat(componentCls, \"-card\"), (_$concat22 = {}, _defineProperty(_$concat22, \"&\".concat(componentCls, \"-small\"), (_$concat19 = {}, _defineProperty(_$concat19, \"> \".concat(componentCls, \"-nav\"), _defineProperty({}, \"\".concat(componentCls, \"-tab\"), {\n padding: cardPaddingSM\n })), _defineProperty(_$concat19, \"&\".concat(componentCls, \"-bottom\"), _defineProperty({}, \"> \".concat(componentCls, \"-nav \").concat(componentCls, \"-tab\"), {\n borderRadius: \"0 0 \".concat(token.borderRadius, \"px \").concat(token.borderRadius, \"px\")\n })), _defineProperty(_$concat19, \"&\".concat(componentCls, \"-top\"), _defineProperty({}, \"> \".concat(componentCls, \"-nav \").concat(componentCls, \"-tab\"), {\n borderRadius: \"\".concat(token.borderRadius, \"px \").concat(token.borderRadius, \"px 0 0\")\n })), _defineProperty(_$concat19, \"&\".concat(componentCls, \"-right\"), _defineProperty({}, \"> \".concat(componentCls, \"-nav \").concat(componentCls, \"-tab\"), {\n borderRadius: {\n _skip_check_: true,\n value: \"0 \".concat(token.borderRadius, \"px \").concat(token.borderRadius, \"px 0\")\n }\n })), _defineProperty(_$concat19, \"&\".concat(componentCls, \"-left\"), _defineProperty({}, \"> \".concat(componentCls, \"-nav \").concat(componentCls, \"-tab\"), {\n borderRadius: {\n _skip_check_: true,\n value: \"\".concat(token.borderRadius, \"px 0 0 \").concat(token.borderRadius, \"px\")\n }\n })), _$concat19)), _defineProperty(_$concat22, \"&\".concat(componentCls, \"-large\"), _defineProperty({}, \"> \".concat(componentCls, \"-nav\"), _defineProperty({}, \"\".concat(componentCls, \"-tab\"), {\n padding: cardPaddingLG\n }))), _$concat22)), _ref4;\n};\nvar genTabStyle = function genTabStyle(token) {\n var _tabCls, _ref5;\n var componentCls = token.componentCls,\n itemActiveColor = token.itemActiveColor,\n itemHoverColor = token.itemHoverColor,\n iconCls = token.iconCls,\n tabsHorizontalItemMargin = token.tabsHorizontalItemMargin,\n horizontalItemPadding = token.horizontalItemPadding,\n itemSelectedColor = token.itemSelectedColor;\n var tabCls = \"\".concat(componentCls, \"-tab\");\n return _ref5 = {}, _defineProperty(_ref5, tabCls, (_tabCls = {\n position: 'relative',\n display: 'inline-flex',\n alignItems: 'center',\n padding: horizontalItemPadding,\n fontSize: token.titleFontSize,\n background: 'transparent',\n border: 0,\n outline: 'none',\n cursor: 'pointer',\n '&-btn, &-remove': Object.assign({\n '&:focus:not(:focus-visible), &:active': {\n color: itemActiveColor\n }\n }, genFocusStyle(token)),\n '&-btn': {\n outline: 'none',\n transition: 'all 0.3s'\n },\n '&-remove': {\n flex: 'none',\n marginRight: {\n _skip_check_: true,\n value: -token.marginXXS\n },\n marginLeft: {\n _skip_check_: true,\n value: token.marginXS\n },\n color: token.colorTextDescription,\n fontSize: token.fontSizeSM,\n background: 'transparent',\n border: 'none',\n outline: 'none',\n cursor: 'pointer',\n transition: \"all \".concat(token.motionDurationSlow),\n '&:hover': {\n color: token.colorTextHeading\n }\n },\n '&:hover': {\n color: itemHoverColor\n }\n }, _defineProperty(_tabCls, \"&\".concat(tabCls, \"-active \").concat(tabCls, \"-btn\"), {\n color: itemSelectedColor,\n textShadow: token.tabsActiveTextShadow\n }), _defineProperty(_tabCls, \"&\".concat(tabCls, \"-disabled\"), {\n color: token.colorTextDisabled,\n cursor: 'not-allowed'\n }), _defineProperty(_tabCls, \"&\".concat(tabCls, \"-disabled \").concat(tabCls, \"-btn, &\").concat(tabCls, \"-disabled \").concat(componentCls, \"-remove\"), {\n '&:focus, &:active': {\n color: token.colorTextDisabled\n }\n }), _defineProperty(_tabCls, \"& \".concat(tabCls, \"-remove \").concat(iconCls), {\n margin: 0\n }), _defineProperty(_tabCls, iconCls, {\n marginRight: {\n _skip_check_: true,\n value: token.marginSM\n }\n }), _tabCls)), _defineProperty(_ref5, \"\".concat(tabCls, \" + \").concat(tabCls), {\n margin: {\n _skip_check_: true,\n value: tabsHorizontalItemMargin\n }\n }), _ref5;\n};\nvar genRtlStyle = function genRtlStyle(token) {\n var _$concat24, _$concat26, _$concat27, _rtlCls, _ref6;\n var componentCls = token.componentCls,\n tabsHorizontalItemMarginRTL = token.tabsHorizontalItemMarginRTL,\n iconCls = token.iconCls,\n cardGutter = token.cardGutter;\n var rtlCls = \"\".concat(componentCls, \"-rtl\");\n return _ref6 = {}, _defineProperty(_ref6, rtlCls, (_rtlCls = {\n direction: 'rtl'\n }, _defineProperty(_rtlCls, \"\".concat(componentCls, \"-nav\"), _defineProperty({}, \"\".concat(componentCls, \"-tab\"), (_$concat24 = {\n margin: {\n _skip_check_: true,\n value: tabsHorizontalItemMarginRTL\n }\n }, _defineProperty(_$concat24, \"\".concat(componentCls, \"-tab:last-of-type\"), {\n marginLeft: {\n _skip_check_: true,\n value: 0\n }\n }), _defineProperty(_$concat24, iconCls, {\n marginRight: {\n _skip_check_: true,\n value: 0\n },\n marginLeft: {\n _skip_check_: true,\n value: \"\".concat(token.marginSM, \"px\")\n }\n }), _defineProperty(_$concat24, \"\".concat(componentCls, \"-tab-remove\"), _defineProperty({\n marginRight: {\n _skip_check_: true,\n value: \"\".concat(token.marginXS, \"px\")\n },\n marginLeft: {\n _skip_check_: true,\n value: \"-\".concat(token.marginXXS, \"px\")\n }\n }, iconCls, {\n margin: 0\n })), _$concat24))), _defineProperty(_rtlCls, \"&\".concat(componentCls, \"-left\"), (_$concat26 = {}, _defineProperty(_$concat26, \"> \".concat(componentCls, \"-nav\"), {\n order: 1\n }), _defineProperty(_$concat26, \"> \".concat(componentCls, \"-content-holder\"), {\n order: 0\n }), _$concat26)), _defineProperty(_rtlCls, \"&\".concat(componentCls, \"-right\"), (_$concat27 = {}, _defineProperty(_$concat27, \"> \".concat(componentCls, \"-nav\"), {\n order: 0\n }), _defineProperty(_$concat27, \"> \".concat(componentCls, \"-content-holder\"), {\n order: 1\n }), _$concat27)), _defineProperty(_rtlCls, \"&\".concat(componentCls, \"-card\").concat(componentCls, \"-top, &\").concat(componentCls, \"-card\").concat(componentCls, \"-bottom\"), _defineProperty({}, \"> \".concat(componentCls, \"-nav, > div > \").concat(componentCls, \"-nav\"), _defineProperty({}, \"\".concat(componentCls, \"-tab + \").concat(componentCls, \"-tab\"), {\n marginRight: {\n _skip_check_: true,\n value: cardGutter\n },\n marginLeft: {\n _skip_check_: true,\n value: 0\n }\n }))), _rtlCls)), _defineProperty(_ref6, \"\".concat(componentCls, \"-dropdown-rtl\"), {\n direction: 'rtl'\n }), _defineProperty(_ref6, \"\".concat(componentCls, \"-menu-item\"), _defineProperty({}, \"\".concat(componentCls, \"-dropdown-rtl\"), {\n textAlign: {\n _skip_check_: true,\n value: 'right'\n }\n })), _ref6;\n};\nvar genTabsStyle = function genTabsStyle(token) {\n var _$concat$concat21, _Object$assign2, _Object$assign3, _ref7;\n var componentCls = token.componentCls,\n tabsCardPadding = token.tabsCardPadding,\n cardHeight = token.cardHeight,\n cardGutter = token.cardGutter,\n itemHoverColor = token.itemHoverColor,\n itemActiveColor = token.itemActiveColor,\n colorBorderSecondary = token.colorBorderSecondary;\n return _ref7 = {}, _defineProperty(_ref7, componentCls, Object.assign(Object.assign(Object.assign(Object.assign({}, resetComponent(token)), (_Object$assign2 = {\n display: 'flex'\n }, _defineProperty(_Object$assign2, \"> \".concat(componentCls, \"-nav, > div > \").concat(componentCls, \"-nav\"), (_$concat$concat21 = {\n position: 'relative',\n display: 'flex',\n flex: 'none',\n alignItems: 'center'\n }, _defineProperty(_$concat$concat21, \"\".concat(componentCls, \"-nav-wrap\"), {\n position: 'relative',\n display: 'flex',\n flex: 'auto',\n alignSelf: 'stretch',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n transform: 'translate(0)',\n // >>>>> Ping shadow\n '&::before, &::after': {\n position: 'absolute',\n zIndex: 1,\n opacity: 0,\n transition: \"opacity \".concat(token.motionDurationSlow),\n content: \"''\",\n pointerEvents: 'none'\n }\n }), _defineProperty(_$concat$concat21, \"\".concat(componentCls, \"-nav-list\"), {\n position: 'relative',\n display: 'flex',\n transition: \"opacity \".concat(token.motionDurationSlow)\n }), _defineProperty(_$concat$concat21, \"\".concat(componentCls, \"-nav-operations\"), {\n display: 'flex',\n alignSelf: 'stretch'\n }), _defineProperty(_$concat$concat21, \"\".concat(componentCls, \"-nav-operations-hidden\"), {\n position: 'absolute',\n visibility: 'hidden',\n pointerEvents: 'none'\n }), _defineProperty(_$concat$concat21, \"\".concat(componentCls, \"-nav-more\"), {\n position: 'relative',\n padding: tabsCardPadding,\n background: 'transparent',\n border: 0,\n color: token.colorText,\n '&::after': {\n position: 'absolute',\n right: {\n _skip_check_: true,\n value: 0\n },\n bottom: 0,\n left: {\n _skip_check_: true,\n value: 0\n },\n height: token.controlHeightLG / 8,\n transform: 'translateY(100%)',\n content: \"''\"\n }\n }), _defineProperty(_$concat$concat21, \"\".concat(componentCls, \"-nav-add\"), Object.assign({\n minWidth: cardHeight,\n marginLeft: {\n _skip_check_: true,\n value: cardGutter\n },\n padding: \"0 \".concat(token.paddingXS, \"px\"),\n background: 'transparent',\n border: \"\".concat(token.lineWidth, \"px \").concat(token.lineType, \" \").concat(colorBorderSecondary),\n borderRadius: \"\".concat(token.borderRadiusLG, \"px \").concat(token.borderRadiusLG, \"px 0 0\"),\n outline: 'none',\n cursor: 'pointer',\n color: token.colorText,\n transition: \"all \".concat(token.motionDurationSlow, \" \").concat(token.motionEaseInOut),\n '&:hover': {\n color: itemHoverColor\n },\n '&:active, &:focus:not(:focus-visible)': {\n color: itemActiveColor\n }\n }, genFocusStyle(token))), _$concat$concat21)), _defineProperty(_Object$assign2, \"\".concat(componentCls, \"-extra-content\"), {\n flex: 'none'\n }), _defineProperty(_Object$assign2, \"\".concat(componentCls, \"-ink-bar\"), {\n position: 'absolute',\n background: token.inkBarColor,\n pointerEvents: 'none'\n }), _Object$assign2)), genTabStyle(token)), (_Object$assign3 = {}, _defineProperty(_Object$assign3, \"\".concat(componentCls, \"-content\"), {\n position: 'relative',\n width: '100%'\n }), _defineProperty(_Object$assign3, \"\".concat(componentCls, \"-content-holder\"), {\n flex: 'auto',\n minWidth: 0,\n minHeight: 0\n }), _defineProperty(_Object$assign3, \"\".concat(componentCls, \"-tabpane\"), {\n outline: 'none',\n '&-hidden': {\n display: 'none'\n }\n }), _Object$assign3))), _defineProperty(_ref7, \"\".concat(componentCls, \"-centered\"), _defineProperty({}, \"> \".concat(componentCls, \"-nav, > div > \").concat(componentCls, \"-nav\"), _defineProperty({}, \"\".concat(componentCls, \"-nav-wrap\"), _defineProperty({}, \"&:not([class*='\".concat(componentCls, \"-nav-wrap-ping'])\"), {\n justifyContent: 'center'\n })))), _ref7;\n};\n// ============================== Export ==============================\nexport default genComponentStyleHook('Tabs', function (token) {\n var tabsToken = mergeToken(token, {\n // `cardPadding` is empty by default, so we could calculate with dynamic `cardHeight`\n tabsCardPadding: token.cardPadding || \"\".concat((token.cardHeight - Math.round(token.fontSize * token.lineHeight)) / 2 - token.lineWidth, \"px \").concat(token.padding, \"px\"),\n dropdownEdgeChildVerticalPadding: token.paddingXXS,\n tabsActiveTextShadow: '0 0 0.25px currentcolor',\n tabsDropdownHeight: 200,\n tabsDropdownWidth: 120,\n tabsHorizontalItemMargin: \"0 0 0 \".concat(token.horizontalItemGutter, \"px\"),\n tabsHorizontalItemMarginRTL: \"0 0 0 \".concat(token.horizontalItemGutter, \"px\")\n });\n return [genSizeStyle(tabsToken), genRtlStyle(tabsToken), genPositionStyle(tabsToken), genDropdownStyle(tabsToken), genCardStyle(tabsToken), genTabsStyle(tabsToken), genMotionStyle(tabsToken)];\n}, function (token) {\n var cardHeight = token.controlHeightLG;\n return {\n zIndexPopup: token.zIndexPopupBase + 50,\n cardBg: token.colorFillAlter,\n cardHeight: cardHeight,\n // Initialize with empty string, because cardPadding will be calculated with cardHeight by default.\n cardPadding: \"\",\n cardPaddingSM: \"\".concat(token.paddingXXS * 1.5, \"px \").concat(token.padding, \"px\"),\n cardPaddingLG: \"\".concat(token.paddingXS, \"px \").concat(token.padding, \"px \").concat(token.paddingXXS * 1.5, \"px\"),\n titleFontSize: token.fontSize,\n titleFontSizeLG: token.fontSizeLG,\n titleFontSizeSM: token.fontSize,\n inkBarColor: token.colorPrimary,\n horizontalMargin: \"0 0 \".concat(token.margin, \"px 0\"),\n horizontalItemGutter: 32,\n // Initialize with empty string, because horizontalItemMargin will be calculated with horizontalItemGutter by default.\n horizontalItemMargin: \"\",\n horizontalItemMarginRTL: \"\",\n horizontalItemPadding: \"\".concat(token.paddingSM, \"px 0\"),\n horizontalItemPaddingSM: \"\".concat(token.paddingXS, \"px 0\"),\n horizontalItemPaddingLG: \"\".concat(token.padding, \"px 0\"),\n verticalItemPadding: \"\".concat(token.paddingXS, \"px \").concat(token.paddingLG, \"px\"),\n verticalItemMargin: \"\".concat(token.margin, \"px 0 0 0\"),\n itemSelectedColor: token.colorPrimary,\n itemHoverColor: token.colorPrimaryHover,\n itemActiveColor: token.colorPrimaryActive,\n cardGutter: token.marginXXS / 2\n };\n});","'use client';\n\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport CloseOutlined from \"@ant-design/icons/es/icons/CloseOutlined\";\nimport EllipsisOutlined from \"@ant-design/icons/es/icons/EllipsisOutlined\";\nimport PlusOutlined from \"@ant-design/icons/es/icons/PlusOutlined\";\nimport classNames from 'classnames';\nimport RcTabs from 'rc-tabs';\nimport * as React from 'react';\nimport warning from '../_util/warning';\nimport { ConfigContext } from '../config-provider';\nimport useSize from '../config-provider/hooks/useSize';\nimport TabPane from './TabPane';\nimport useAnimateConfig from './hooks/useAnimateConfig';\nimport useLegacyItems from './hooks/useLegacyItems';\nimport useStyle from './style';\nvar Tabs = function Tabs(props) {\n var _classNames;\n var type = props.type,\n className = props.className,\n rootClassName = props.rootClassName,\n customSize = props.size,\n _onEdit = props.onEdit,\n hideAdd = props.hideAdd,\n centered = props.centered,\n addIcon = props.addIcon,\n popupClassName = props.popupClassName,\n children = props.children,\n items = props.items,\n animated = props.animated,\n style = props.style,\n otherProps = __rest(props, [\"type\", \"className\", \"rootClassName\", \"size\", \"onEdit\", \"hideAdd\", \"centered\", \"addIcon\", \"popupClassName\", \"children\", \"items\", \"animated\", \"style\"]);\n var customizePrefixCls = otherProps.prefixCls,\n _otherProps$moreIcon = otherProps.moreIcon,\n moreIcon = _otherProps$moreIcon === void 0 ? /*#__PURE__*/React.createElement(EllipsisOutlined, null) : _otherProps$moreIcon;\n var _React$useContext = React.useContext(ConfigContext),\n direction = _React$useContext.direction,\n tabs = _React$useContext.tabs,\n getPrefixCls = _React$useContext.getPrefixCls,\n getPopupContainer = _React$useContext.getPopupContainer;\n var prefixCls = getPrefixCls('tabs', customizePrefixCls);\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n var editable;\n if (type === 'editable-card') {\n editable = {\n onEdit: function onEdit(editType, _ref) {\n var key = _ref.key,\n event = _ref.event;\n _onEdit === null || _onEdit === void 0 ? void 0 : _onEdit(editType === 'add' ? event : key, editType);\n },\n removeIcon: /*#__PURE__*/React.createElement(CloseOutlined, null),\n addIcon: addIcon || /*#__PURE__*/React.createElement(PlusOutlined, null),\n showAdd: hideAdd !== true\n };\n }\n var rootPrefixCls = getPrefixCls();\n process.env.NODE_ENV !== \"production\" ? warning(!('onPrevClick' in props) && !('onNextClick' in props), 'Tabs', '`onPrevClick` and `onNextClick` has been removed. Please use `onTabScroll` instead.') : void 0;\n var mergedItems = useLegacyItems(items, children);\n var mergedAnimated = useAnimateConfig(prefixCls, animated);\n var size = useSize(customSize);\n var mergedStyle = Object.assign(Object.assign({}, tabs === null || tabs === void 0 ? void 0 : tabs.style), style);\n return wrapSSR( /*#__PURE__*/React.createElement(RcTabs, Object.assign({\n direction: direction,\n getPopupContainer: getPopupContainer,\n moreTransitionName: \"\".concat(rootPrefixCls, \"-slide-up\")\n }, otherProps, {\n items: mergedItems,\n className: classNames((_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(size), size), _defineProperty(_classNames, \"\".concat(prefixCls, \"-card\"), ['card', 'editable-card'].includes(type)), _defineProperty(_classNames, \"\".concat(prefixCls, \"-editable-card\"), type === 'editable-card'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-centered\"), centered), _classNames), tabs === null || tabs === void 0 ? void 0 : tabs.className, className, rootClassName, hashId),\n popupClassName: classNames(popupClassName, hashId),\n style: mergedStyle,\n editable: editable,\n moreIcon: moreIcon,\n prefixCls: prefixCls,\n animated: mergedAnimated\n })));\n};\nTabs.TabPane = TabPane;\nif (process.env.NODE_ENV !== 'production') {\n Tabs.displayName = 'Tabs';\n}\nexport default Tabs;","var EMPTY = {};\nexport default function shallowEqual(a, b) {\n if (a === void 0) {\n a = EMPTY;\n }\n if (b === void 0) {\n b = EMPTY;\n }\n var aKeys = Object.keys(a);\n var bKeys = Object.keys(b);\n return a === b || aKeys.length === bKeys.length && aKeys.every(function (key) {\n return a[key] === b[key];\n });\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","/*!\n * https://github.com/Starcounter-Jack/JSON-Patch\n * (c) 2017-2022 Joachim Wester\n * MIT licensed\n */\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nexport function hasOwnProperty(obj, key) {\n return _hasOwnProperty.call(obj, key);\n}\nexport function _objectKeys(obj) {\n if (Array.isArray(obj)) {\n var keys_1 = new Array(obj.length);\n for (var k = 0; k < keys_1.length; k++) {\n keys_1[k] = \"\" + k;\n }\n return keys_1;\n }\n if (Object.keys) {\n return Object.keys(obj);\n }\n var keys = [];\n for (var i in obj) {\n if (hasOwnProperty(obj, i)) {\n keys.push(i);\n }\n }\n return keys;\n}\n;\n/**\n* Deeply clone the object.\n* https://jsperf.com/deep-copy-vs-json-stringify-json-parse/25 (recursiveDeepCopy)\n* @param {any} obj value to clone\n* @return {any} cloned obj\n*/\nexport function _deepClone(obj) {\n switch (typeof obj) {\n case \"object\":\n return JSON.parse(JSON.stringify(obj));\n //Faster than ES5 clone - http://jsperf.com/deep-cloning-of-objects/5\n case \"undefined\":\n return null;\n //this is how JSON.stringify behaves for array items\n default:\n return obj;\n //no need to clone primitives\n }\n}\n//3x faster than cached /^\\d+$/.test(str)\nexport function isInteger(str) {\n var i = 0;\n var len = str.length;\n var charCode;\n while (i < len) {\n charCode = str.charCodeAt(i);\n if (charCode >= 48 && charCode <= 57) {\n i++;\n continue;\n }\n return false;\n }\n return true;\n}\n/**\n* Escapes a json pointer path\n* @param path The raw pointer\n* @return the Escaped path\n*/\nexport function escapePathComponent(path) {\n if (path.indexOf('/') === -1 && path.indexOf('~') === -1) return path;\n return path.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n/**\n * Unescapes a json pointer path\n * @param path The escaped pointer\n * @return The unescaped path\n */\nexport function unescapePathComponent(path) {\n return path.replace(/~1/g, '/').replace(/~0/g, '~');\n}\nexport function _getPathRecursive(root, obj) {\n var found;\n for (var key in root) {\n if (hasOwnProperty(root, key)) {\n if (root[key] === obj) {\n return escapePathComponent(key) + '/';\n } else if (typeof root[key] === 'object') {\n found = _getPathRecursive(root[key], obj);\n if (found != '') {\n return escapePathComponent(key) + '/' + found;\n }\n }\n }\n }\n return '';\n}\nexport function getPath(root, obj) {\n if (root === obj) {\n return '/';\n }\n var path = _getPathRecursive(root, obj);\n if (path === '') {\n throw new Error(\"Object not found in root\");\n }\n return \"/\" + path;\n}\n/**\n* Recursively checks whether an object has any undefined values inside.\n*/\nexport function hasUndefined(obj) {\n if (obj === undefined) {\n return true;\n }\n if (obj) {\n if (Array.isArray(obj)) {\n for (var i_1 = 0, len = obj.length; i_1 < len; i_1++) {\n if (hasUndefined(obj[i_1])) {\n return true;\n }\n }\n } else if (typeof obj === \"object\") {\n var objKeys = _objectKeys(obj);\n var objKeysLength = objKeys.length;\n for (var i = 0; i < objKeysLength; i++) {\n if (hasUndefined(obj[objKeys[i]])) {\n return true;\n }\n }\n }\n }\n return false;\n}\nfunction patchErrorMessageFormatter(message, args) {\n var messageParts = [message];\n for (var key in args) {\n var value = typeof args[key] === 'object' ? JSON.stringify(args[key], null, 2) : args[key]; // pretty print\n if (typeof value !== 'undefined') {\n messageParts.push(key + \": \" + value);\n }\n }\n return messageParts.join('\\n');\n}\nvar PatchError = /** @class */function (_super) {\n __extends(PatchError, _super);\n function PatchError(message, name, index, operation, tree) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, patchErrorMessageFormatter(message, {\n name: name,\n index: index,\n operation: operation,\n tree: tree\n })) || this;\n _this.name = name;\n _this.index = index;\n _this.operation = operation;\n _this.tree = tree;\n Object.setPrototypeOf(_this, _newTarget.prototype); // restore prototype chain, see https://stackoverflow.com/a/48342359\n _this.message = patchErrorMessageFormatter(message, {\n name: name,\n index: index,\n operation: operation,\n tree: tree\n });\n return _this;\n }\n return PatchError;\n}(Error);\nexport { PatchError };","import { PatchError, _deepClone, isInteger, unescapePathComponent, hasUndefined } from './helpers.mjs';\nexport var JsonPatchError = PatchError;\nexport var deepClone = _deepClone;\n/* We use a Javascript hash to store each\n function. Each hash entry (property) uses\n the operation identifiers specified in rfc6902.\n In this way, we can map each patch operation\n to its dedicated function in efficient way.\n */\n/* The operations applicable to an object */\nvar objOps = {\n add: function add(obj, key, document) {\n obj[key] = this.value;\n return {\n newDocument: document\n };\n },\n remove: function remove(obj, key, document) {\n var removed = obj[key];\n delete obj[key];\n return {\n newDocument: document,\n removed: removed\n };\n },\n replace: function replace(obj, key, document) {\n var removed = obj[key];\n obj[key] = this.value;\n return {\n newDocument: document,\n removed: removed\n };\n },\n move: function move(obj, key, document) {\n /* in case move target overwrites an existing value,\n return the removed value, this can be taxing performance-wise,\n and is potentially unneeded */\n var removed = getValueByPointer(document, this.path);\n if (removed) {\n removed = _deepClone(removed);\n }\n var originalValue = applyOperation(document, {\n op: \"remove\",\n path: this.from\n }).removed;\n applyOperation(document, {\n op: \"add\",\n path: this.path,\n value: originalValue\n });\n return {\n newDocument: document,\n removed: removed\n };\n },\n copy: function copy(obj, key, document) {\n var valueToCopy = getValueByPointer(document, this.from);\n // enforce copy by value so further operations don't affect source (see issue #177)\n applyOperation(document, {\n op: \"add\",\n path: this.path,\n value: _deepClone(valueToCopy)\n });\n return {\n newDocument: document\n };\n },\n test: function test(obj, key, document) {\n return {\n newDocument: document,\n test: _areEquals(obj[key], this.value)\n };\n },\n _get: function _get(obj, key, document) {\n this.value = obj[key];\n return {\n newDocument: document\n };\n }\n};\n/* The operations applicable to an array. Many are the same as for the object */\nvar arrOps = {\n add: function add(arr, i, document) {\n if (isInteger(i)) {\n arr.splice(i, 0, this.value);\n } else {\n // array props\n arr[i] = this.value;\n }\n // this may be needed when using '-' in an array\n return {\n newDocument: document,\n index: i\n };\n },\n remove: function remove(arr, i, document) {\n var removedList = arr.splice(i, 1);\n return {\n newDocument: document,\n removed: removedList[0]\n };\n },\n replace: function replace(arr, i, document) {\n var removed = arr[i];\n arr[i] = this.value;\n return {\n newDocument: document,\n removed: removed\n };\n },\n move: objOps.move,\n copy: objOps.copy,\n test: objOps.test,\n _get: objOps._get\n};\n/**\n * Retrieves a value from a JSON document by a JSON pointer.\n * Returns the value.\n *\n * @param document The document to get the value from\n * @param pointer an escaped JSON pointer\n * @return The retrieved value\n */\nexport function getValueByPointer(document, pointer) {\n if (pointer == '') {\n return document;\n }\n var getOriginalDestination = {\n op: \"_get\",\n path: pointer\n };\n applyOperation(document, getOriginalDestination);\n return getOriginalDestination.value;\n}\n/**\n * Apply a single JSON Patch Operation on a JSON document.\n * Returns the {newDocument, result} of the operation.\n * It modifies the `document` and `operation` objects - it gets the values by reference.\n * If you would like to avoid touching your values, clone them:\n * `jsonpatch.applyOperation(document, jsonpatch._deepClone(operation))`.\n *\n * @param document The document to patch\n * @param operation The operation to apply\n * @param validateOperation `false` is without validation, `true` to use default jsonpatch's validation, or you can pass a `validateOperation` callback to be used for validation.\n * @param mutateDocument Whether to mutate the original document or clone it before applying\n * @param banPrototypeModifications Whether to ban modifications to `__proto__`, defaults to `true`.\n * @return `{newDocument, result}` after the operation\n */\nexport function applyOperation(document, operation, validateOperation, mutateDocument, banPrototypeModifications, index) {\n if (validateOperation === void 0) {\n validateOperation = false;\n }\n if (mutateDocument === void 0) {\n mutateDocument = true;\n }\n if (banPrototypeModifications === void 0) {\n banPrototypeModifications = true;\n }\n if (index === void 0) {\n index = 0;\n }\n if (validateOperation) {\n if (typeof validateOperation == 'function') {\n validateOperation(operation, 0, document, operation.path);\n } else {\n validator(operation, 0);\n }\n }\n /* ROOT OPERATIONS */\n if (operation.path === \"\") {\n var returnValue = {\n newDocument: document\n };\n if (operation.op === 'add') {\n returnValue.newDocument = operation.value;\n return returnValue;\n } else if (operation.op === 'replace') {\n returnValue.newDocument = operation.value;\n returnValue.removed = document; //document we removed\n return returnValue;\n } else if (operation.op === 'move' || operation.op === 'copy') {\n // it's a move or copy to root\n returnValue.newDocument = getValueByPointer(document, operation.from); // get the value by json-pointer in `from` field\n if (operation.op === 'move') {\n // report removed item\n returnValue.removed = document;\n }\n return returnValue;\n } else if (operation.op === 'test') {\n returnValue.test = _areEquals(document, operation.value);\n if (returnValue.test === false) {\n throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n }\n returnValue.newDocument = document;\n return returnValue;\n } else if (operation.op === 'remove') {\n // a remove on root\n returnValue.removed = document;\n returnValue.newDocument = null;\n return returnValue;\n } else if (operation.op === '_get') {\n operation.value = document;\n return returnValue;\n } else {\n /* bad operation */\n if (validateOperation) {\n throw new JsonPatchError('Operation `op` property is not one of operations defined in RFC-6902', 'OPERATION_OP_INVALID', index, operation, document);\n } else {\n return returnValue;\n }\n }\n } /* END ROOT OPERATIONS */else {\n if (!mutateDocument) {\n document = _deepClone(document);\n }\n var path = operation.path || \"\";\n var keys = path.split('/');\n var obj = document;\n var t = 1; //skip empty element - http://jsperf.com/to-shift-or-not-to-shift\n var len = keys.length;\n var existingPathFragment = undefined;\n var key = void 0;\n var validateFunction = void 0;\n if (typeof validateOperation == 'function') {\n validateFunction = validateOperation;\n } else {\n validateFunction = validator;\n }\n while (true) {\n key = keys[t];\n if (key && key.indexOf('~') != -1) {\n key = unescapePathComponent(key);\n }\n if (banPrototypeModifications && (key == '__proto__' || key == 'prototype' && t > 0 && keys[t - 1] == 'constructor')) {\n throw new TypeError('JSON-Patch: modifying `__proto__` or `constructor/prototype` prop is banned for security reasons, if this was on purpose, please set `banPrototypeModifications` flag false and pass it to this function. More info in fast-json-patch README');\n }\n if (validateOperation) {\n if (existingPathFragment === undefined) {\n if (obj[key] === undefined) {\n existingPathFragment = keys.slice(0, t).join('/');\n } else if (t == len - 1) {\n existingPathFragment = operation.path;\n }\n if (existingPathFragment !== undefined) {\n validateFunction(operation, 0, document, existingPathFragment);\n }\n }\n }\n t++;\n if (Array.isArray(obj)) {\n if (key === '-') {\n key = obj.length;\n } else {\n if (validateOperation && !isInteger(key)) {\n throw new JsonPatchError(\"Expected an unsigned base-10 integer value, making the new referenced value the array element with the zero-based index\", \"OPERATION_PATH_ILLEGAL_ARRAY_INDEX\", index, operation, document);\n } // only parse key when it's an integer for `arr.prop` to work\n else if (isInteger(key)) {\n key = ~~key;\n }\n }\n if (t >= len) {\n if (validateOperation && operation.op === \"add\" && key > obj.length) {\n throw new JsonPatchError(\"The specified index MUST NOT be greater than the number of elements in the array\", \"OPERATION_VALUE_OUT_OF_BOUNDS\", index, operation, document);\n }\n var returnValue = arrOps[operation.op].call(operation, obj, key, document); // Apply patch\n if (returnValue.test === false) {\n throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n }\n return returnValue;\n }\n } else {\n if (t >= len) {\n var returnValue = objOps[operation.op].call(operation, obj, key, document); // Apply patch\n if (returnValue.test === false) {\n throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n }\n return returnValue;\n }\n }\n obj = obj[key];\n // If we have more keys in the path, but the next value isn't a non-null object,\n // throw an OPERATION_PATH_UNRESOLVABLE error instead of iterating again.\n if (validateOperation && t < len && (!obj || typeof obj !== \"object\")) {\n throw new JsonPatchError('Cannot perform operation at the desired path', 'OPERATION_PATH_UNRESOLVABLE', index, operation, document);\n }\n }\n }\n}\n/**\n * Apply a full JSON Patch array on a JSON document.\n * Returns the {newDocument, result} of the patch.\n * It modifies the `document` object and `patch` - it gets the values by reference.\n * If you would like to avoid touching your values, clone them:\n * `jsonpatch.applyPatch(document, jsonpatch._deepClone(patch))`.\n *\n * @param document The document to patch\n * @param patch The patch to apply\n * @param validateOperation `false` is without validation, `true` to use default jsonpatch's validation, or you can pass a `validateOperation` callback to be used for validation.\n * @param mutateDocument Whether to mutate the original document or clone it before applying\n * @param banPrototypeModifications Whether to ban modifications to `__proto__`, defaults to `true`.\n * @return An array of `{newDocument, result}` after the patch\n */\nexport function applyPatch(document, patch, validateOperation, mutateDocument, banPrototypeModifications) {\n if (mutateDocument === void 0) {\n mutateDocument = true;\n }\n if (banPrototypeModifications === void 0) {\n banPrototypeModifications = true;\n }\n if (validateOperation) {\n if (!Array.isArray(patch)) {\n throw new JsonPatchError('Patch sequence must be an array', 'SEQUENCE_NOT_AN_ARRAY');\n }\n }\n if (!mutateDocument) {\n document = _deepClone(document);\n }\n var results = new Array(patch.length);\n for (var i = 0, length_1 = patch.length; i < length_1; i++) {\n // we don't need to pass mutateDocument argument because if it was true, we already deep cloned the object, we'll just pass `true`\n results[i] = applyOperation(document, patch[i], validateOperation, true, banPrototypeModifications, i);\n document = results[i].newDocument; // in case root was replaced\n }\n\n results.newDocument = document;\n return results;\n}\n/**\n * Apply a single JSON Patch Operation on a JSON document.\n * Returns the updated document.\n * Suitable as a reducer.\n *\n * @param document The document to patch\n * @param operation The operation to apply\n * @return The updated document\n */\nexport function applyReducer(document, operation, index) {\n var operationResult = applyOperation(document, operation);\n if (operationResult.test === false) {\n // failed test\n throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n }\n return operationResult.newDocument;\n}\n/**\n * Validates a single operation. Called from `jsonpatch.validate`. Throws `JsonPatchError` in case of an error.\n * @param {object} operation - operation object (patch)\n * @param {number} index - index of operation in the sequence\n * @param {object} [document] - object where the operation is supposed to be applied\n * @param {string} [existingPathFragment] - comes along with `document`\n */\nexport function validator(operation, index, document, existingPathFragment) {\n if (typeof operation !== 'object' || operation === null || Array.isArray(operation)) {\n throw new JsonPatchError('Operation is not an object', 'OPERATION_NOT_AN_OBJECT', index, operation, document);\n } else if (!objOps[operation.op]) {\n throw new JsonPatchError('Operation `op` property is not one of operations defined in RFC-6902', 'OPERATION_OP_INVALID', index, operation, document);\n } else if (typeof operation.path !== 'string') {\n throw new JsonPatchError('Operation `path` property is not a string', 'OPERATION_PATH_INVALID', index, operation, document);\n } else if (operation.path.indexOf('/') !== 0 && operation.path.length > 0) {\n // paths that aren't empty string should start with \"/\"\n throw new JsonPatchError('Operation `path` property must start with \"/\"', 'OPERATION_PATH_INVALID', index, operation, document);\n } else if ((operation.op === 'move' || operation.op === 'copy') && typeof operation.from !== 'string') {\n throw new JsonPatchError('Operation `from` property is not present (applicable in `move` and `copy` operations)', 'OPERATION_FROM_REQUIRED', index, operation, document);\n } else if ((operation.op === 'add' || operation.op === 'replace' || operation.op === 'test') && operation.value === undefined) {\n throw new JsonPatchError('Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)', 'OPERATION_VALUE_REQUIRED', index, operation, document);\n } else if ((operation.op === 'add' || operation.op === 'replace' || operation.op === 'test') && hasUndefined(operation.value)) {\n throw new JsonPatchError('Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)', 'OPERATION_VALUE_CANNOT_CONTAIN_UNDEFINED', index, operation, document);\n } else if (document) {\n if (operation.op == \"add\") {\n var pathLen = operation.path.split(\"/\").length;\n var existingPathLen = existingPathFragment.split(\"/\").length;\n if (pathLen !== existingPathLen + 1 && pathLen !== existingPathLen) {\n throw new JsonPatchError('Cannot perform an `add` operation at the desired path', 'OPERATION_PATH_CANNOT_ADD', index, operation, document);\n }\n } else if (operation.op === 'replace' || operation.op === 'remove' || operation.op === '_get') {\n if (operation.path !== existingPathFragment) {\n throw new JsonPatchError('Cannot perform the operation at a path that does not exist', 'OPERATION_PATH_UNRESOLVABLE', index, operation, document);\n }\n } else if (operation.op === 'move' || operation.op === 'copy') {\n var existingValue = {\n op: \"_get\",\n path: operation.from,\n value: undefined\n };\n var error = validate([existingValue], document);\n if (error && error.name === 'OPERATION_PATH_UNRESOLVABLE') {\n throw new JsonPatchError('Cannot perform the operation from a path that does not exist', 'OPERATION_FROM_UNRESOLVABLE', index, operation, document);\n }\n }\n }\n}\n/**\n * Validates a sequence of operations. If `document` parameter is provided, the sequence is additionally validated against the object document.\n * If error is encountered, returns a JsonPatchError object\n * @param sequence\n * @param document\n * @returns {JsonPatchError|undefined}\n */\nexport function validate(sequence, document, externalValidator) {\n try {\n if (!Array.isArray(sequence)) {\n throw new JsonPatchError('Patch sequence must be an array', 'SEQUENCE_NOT_AN_ARRAY');\n }\n if (document) {\n //clone document and sequence so that we can safely try applying operations\n applyPatch(_deepClone(document), _deepClone(sequence), externalValidator || true);\n } else {\n externalValidator = externalValidator || validator;\n for (var i = 0; i < sequence.length; i++) {\n externalValidator(sequence[i], i, document, undefined);\n }\n }\n } catch (e) {\n if (e instanceof JsonPatchError) {\n return e;\n } else {\n throw e;\n }\n }\n}\n// based on https://github.com/epoberezkin/fast-deep-equal\n// MIT License\n// Copyright (c) 2017 Evgeny Poberezkin\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\nexport function _areEquals(a, b) {\n if (a === b) return true;\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n var arrA = Array.isArray(a),\n arrB = Array.isArray(b),\n i,\n length,\n key;\n if (arrA && arrB) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;) if (!_areEquals(a[i], b[i])) return false;\n return true;\n }\n if (arrA != arrB) return false;\n var keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n for (i = length; i-- !== 0;) if (!b.hasOwnProperty(keys[i])) return false;\n for (i = length; i-- !== 0;) {\n key = keys[i];\n if (!_areEquals(a[key], b[key])) return false;\n }\n return true;\n }\n return a !== a && b !== b;\n}\n;","/*!\n * https://github.com/Starcounter-Jack/JSON-Patch\n * (c) 2017-2021 Joachim Wester\n * MIT license\n */\nimport { _deepClone, _objectKeys, escapePathComponent, hasOwnProperty } from './helpers.mjs';\nimport { applyPatch } from './core.mjs';\nvar beforeDict = new WeakMap();\nvar Mirror = /** @class */function () {\n function Mirror(obj) {\n this.observers = new Map();\n this.obj = obj;\n }\n return Mirror;\n}();\nvar ObserverInfo = /** @class */function () {\n function ObserverInfo(callback, observer) {\n this.callback = callback;\n this.observer = observer;\n }\n return ObserverInfo;\n}();\nfunction getMirror(obj) {\n return beforeDict.get(obj);\n}\nfunction getObserverFromMirror(mirror, callback) {\n return mirror.observers.get(callback);\n}\nfunction removeObserverFromMirror(mirror, observer) {\n mirror.observers.delete(observer.callback);\n}\n/**\n * Detach an observer from an object\n */\nexport function unobserve(root, observer) {\n observer.unobserve();\n}\n/**\n * Observes changes made to an object, which can then be retrieved using generate\n */\nexport function observe(obj, callback) {\n var patches = [];\n var observer;\n var mirror = getMirror(obj);\n if (!mirror) {\n mirror = new Mirror(obj);\n beforeDict.set(obj, mirror);\n } else {\n var observerInfo = getObserverFromMirror(mirror, callback);\n observer = observerInfo && observerInfo.observer;\n }\n if (observer) {\n return observer;\n }\n observer = {};\n mirror.value = _deepClone(obj);\n if (callback) {\n observer.callback = callback;\n observer.next = null;\n var dirtyCheck = function dirtyCheck() {\n generate(observer);\n };\n var fastCheck = function fastCheck() {\n clearTimeout(observer.next);\n observer.next = setTimeout(dirtyCheck);\n };\n if (typeof window !== 'undefined') {\n //not Node\n window.addEventListener('mouseup', fastCheck);\n window.addEventListener('keyup', fastCheck);\n window.addEventListener('mousedown', fastCheck);\n window.addEventListener('keydown', fastCheck);\n window.addEventListener('change', fastCheck);\n }\n }\n observer.patches = patches;\n observer.object = obj;\n observer.unobserve = function () {\n generate(observer);\n clearTimeout(observer.next);\n removeObserverFromMirror(mirror, observer);\n if (typeof window !== 'undefined') {\n window.removeEventListener('mouseup', fastCheck);\n window.removeEventListener('keyup', fastCheck);\n window.removeEventListener('mousedown', fastCheck);\n window.removeEventListener('keydown', fastCheck);\n window.removeEventListener('change', fastCheck);\n }\n };\n mirror.observers.set(callback, new ObserverInfo(callback, observer));\n return observer;\n}\n/**\n * Generate an array of patches from an observer\n */\nexport function generate(observer, invertible) {\n if (invertible === void 0) {\n invertible = false;\n }\n var mirror = beforeDict.get(observer.object);\n _generate(mirror.value, observer.object, observer.patches, \"\", invertible);\n if (observer.patches.length) {\n applyPatch(mirror.value, observer.patches);\n }\n var temp = observer.patches;\n if (temp.length > 0) {\n observer.patches = [];\n if (observer.callback) {\n observer.callback(temp);\n }\n }\n return temp;\n}\n// Dirty check if obj is different from mirror, generate patches and update mirror\nfunction _generate(mirror, obj, patches, path, invertible) {\n if (obj === mirror) {\n return;\n }\n if (typeof obj.toJSON === \"function\") {\n obj = obj.toJSON();\n }\n var newKeys = _objectKeys(obj);\n var oldKeys = _objectKeys(mirror);\n var changed = false;\n var deleted = false;\n //if ever \"move\" operation is implemented here, make sure this test runs OK: \"should not generate the same patch twice (move)\"\n for (var t = oldKeys.length - 1; t >= 0; t--) {\n var key = oldKeys[t];\n var oldVal = mirror[key];\n if (hasOwnProperty(obj, key) && !(obj[key] === undefined && oldVal !== undefined && Array.isArray(obj) === false)) {\n var newVal = obj[key];\n if (typeof oldVal == \"object\" && oldVal != null && typeof newVal == \"object\" && newVal != null && Array.isArray(oldVal) === Array.isArray(newVal)) {\n _generate(oldVal, newVal, patches, path + \"/\" + escapePathComponent(key), invertible);\n } else {\n if (oldVal !== newVal) {\n changed = true;\n if (invertible) {\n patches.push({\n op: \"test\",\n path: path + \"/\" + escapePathComponent(key),\n value: _deepClone(oldVal)\n });\n }\n patches.push({\n op: \"replace\",\n path: path + \"/\" + escapePathComponent(key),\n value: _deepClone(newVal)\n });\n }\n }\n } else if (Array.isArray(mirror) === Array.isArray(obj)) {\n if (invertible) {\n patches.push({\n op: \"test\",\n path: path + \"/\" + escapePathComponent(key),\n value: _deepClone(oldVal)\n });\n }\n patches.push({\n op: \"remove\",\n path: path + \"/\" + escapePathComponent(key)\n });\n deleted = true; // property has been deleted\n } else {\n if (invertible) {\n patches.push({\n op: \"test\",\n path: path,\n value: mirror\n });\n }\n patches.push({\n op: \"replace\",\n path: path,\n value: obj\n });\n changed = true;\n }\n }\n if (!deleted && newKeys.length == oldKeys.length) {\n return;\n }\n for (var t = 0; t < newKeys.length; t++) {\n var key = newKeys[t];\n if (!hasOwnProperty(mirror, key) && obj[key] !== undefined) {\n patches.push({\n op: \"add\",\n path: path + \"/\" + escapePathComponent(key),\n value: _deepClone(obj[key])\n });\n }\n }\n}\n/**\n * Create an array of patches from the differences in two objects\n */\nexport function compare(tree1, tree2, invertible) {\n if (invertible === void 0) {\n invertible = false;\n }\n var patches = [];\n _generate(tree1, tree2, patches, '', invertible);\n return patches;\n}","export * from './module/core.mjs';\nexport * from './module/duplex.mjs';\nexport { PatchError as JsonPatchError, _deepClone as deepClone, escapePathComponent, unescapePathComponent } from './module/helpers.mjs';\n\n/**\n * Default export for backwards compat\n */\n\nimport * as core from './module/core.mjs';\nimport * as duplex from './module/duplex.mjs';\nimport { PatchError as JsonPatchError, _deepClone as deepClone, escapePathComponent, unescapePathComponent } from './module/helpers.mjs';\nexport default Object.assign({}, core, duplex, {\n JsonPatchError: JsonPatchError,\n deepClone: deepClone,\n escapePathComponent: escapePathComponent,\n unescapePathComponent: unescapePathComponent\n});","function accessor(fn, fields, name) {\n fn.fields = fields || [];\n fn.fname = name;\n return fn;\n}\nfunction accessorName(fn) {\n return fn == null ? null : fn.fname;\n}\nfunction accessorFields(fn) {\n return fn == null ? null : fn.fields;\n}\nfunction getter(path) {\n return path.length === 1 ? get1(path[0]) : getN(path);\n}\nvar get1 = function get1(field) {\n return function (obj) {\n return obj[field];\n };\n};\nvar getN = function getN(path) {\n var len = path.length;\n return function (obj) {\n for (var i = 0; i < len; ++i) {\n obj = obj[path[i]];\n }\n return obj;\n };\n};\nfunction error(message) {\n throw Error(message);\n}\nfunction splitAccessPath(p) {\n var path = [],\n n = p.length;\n var q = null,\n b = 0,\n s = '',\n i,\n j,\n c;\n p = p + '';\n function push() {\n path.push(s + p.substring(i, j));\n s = '';\n i = j + 1;\n }\n for (i = j = 0; j < n; ++j) {\n c = p[j];\n if (c === '\\\\') {\n s += p.substring(i, j++);\n i = j;\n } else if (c === q) {\n push();\n q = null;\n b = -1;\n } else if (q) {\n continue;\n } else if (i === b && c === '\"') {\n i = j + 1;\n q = c;\n } else if (i === b && c === \"'\") {\n i = j + 1;\n q = c;\n } else if (c === '.' && !b) {\n if (j > i) {\n push();\n } else {\n i = j + 1;\n }\n } else if (c === '[') {\n if (j > i) push();\n b = i = j + 1;\n } else if (c === ']') {\n if (!b) error('Access path missing open bracket: ' + p);\n if (b > 0) push();\n b = 0;\n i = j + 1;\n }\n }\n if (b) error('Access path missing closing bracket: ' + p);\n if (q) error('Access path missing closing quote: ' + p);\n if (j > i) {\n j++;\n push();\n }\n return path;\n}\nfunction field(field, name, opt) {\n var path = splitAccessPath(field);\n field = path.length === 1 ? path[0] : field;\n return accessor((opt && opt.get || getter)(path), [field], name || field);\n}\nvar id = field('id');\nvar identity = accessor(function (_) {\n return _;\n}, [], 'identity');\nvar zero = accessor(function () {\n return 0;\n}, [], 'zero');\nvar one = accessor(function () {\n return 1;\n}, [], 'one');\nvar truthy = accessor(function () {\n return true;\n}, [], 'true');\nvar falsy = accessor(function () {\n return false;\n}, [], 'false');\nfunction log$1(method, level, input) {\n var args = [level].concat([].slice.call(input));\n console[method].apply(console, args); // eslint-disable-line no-console\n}\n\nvar None = 0;\nvar Error$1 = 1;\nvar Warn = 2;\nvar Info = 3;\nvar Debug = 4;\nfunction logger(_, method) {\n var handler = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : log$1;\n var _level = _ || None;\n return {\n level: function level(_) {\n if (arguments.length) {\n _level = +_;\n return this;\n } else {\n return _level;\n }\n },\n error: function error() {\n if (_level >= Error$1) handler(method || 'error', 'ERROR', arguments);\n return this;\n },\n warn: function warn() {\n if (_level >= Warn) handler(method || 'warn', 'WARN', arguments);\n return this;\n },\n info: function info() {\n if (_level >= Info) handler(method || 'log', 'INFO', arguments);\n return this;\n },\n debug: function debug() {\n if (_level >= Debug) handler(method || 'log', 'DEBUG', arguments);\n return this;\n }\n };\n}\nvar isArray = Array.isArray;\nfunction isObject(_) {\n return _ === Object(_);\n}\nvar isLegalKey = function isLegalKey(key) {\n return key !== '__proto__';\n};\nfunction mergeConfig() {\n for (var _len = arguments.length, configs = new Array(_len), _key = 0; _key < _len; _key++) {\n configs[_key] = arguments[_key];\n }\n return configs.reduce(function (out, source) {\n for (var _key2 in source) {\n if (_key2 === 'signals') {\n // for signals, we merge the signals arrays\n // source signals take precedence over\n // existing signals with the same name\n out.signals = mergeNamed(out.signals, source.signals);\n } else {\n // otherwise, merge objects subject to recursion constraints\n // for legend block, recurse for the layout entry only\n // for style block, recurse for all properties\n // otherwise, no recursion: objects overwrite, no merging\n var r = _key2 === 'legend' ? {\n layout: 1\n } : _key2 === 'style' ? true : null;\n writeConfig(out, _key2, source[_key2], r);\n }\n }\n return out;\n }, {});\n}\nfunction writeConfig(output, key, value, recurse) {\n if (!isLegalKey(key)) return;\n var k, o;\n if (isObject(value) && !isArray(value)) {\n o = isObject(output[key]) ? output[key] : output[key] = {};\n for (k in value) {\n if (recurse && (recurse === true || recurse[k])) {\n writeConfig(o, k, value[k]);\n } else if (isLegalKey(k)) {\n o[k] = value[k];\n }\n }\n } else {\n output[key] = value;\n }\n}\nfunction mergeNamed(a, b) {\n if (a == null) return b;\n var map = {},\n out = [];\n function add(_) {\n if (!map[_.name]) {\n map[_.name] = 1;\n out.push(_);\n }\n }\n b.forEach(add);\n a.forEach(add);\n return out;\n}\nfunction peek(array) {\n return array[array.length - 1];\n}\nfunction toNumber(_) {\n return _ == null || _ === '' ? null : +_;\n}\nvar exp = function exp(sign) {\n return function (x) {\n return sign * Math.exp(x);\n };\n};\nvar log = function log(sign) {\n return function (x) {\n return Math.log(sign * x);\n };\n};\nvar symlog = function symlog(c) {\n return function (x) {\n return Math.sign(x) * Math.log1p(Math.abs(x / c));\n };\n};\nvar symexp = function symexp(c) {\n return function (x) {\n return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n };\n};\nvar pow = function pow(exponent) {\n return function (x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n};\nfunction pan(domain, delta, lift, ground) {\n var d0 = lift(domain[0]),\n d1 = lift(peek(domain)),\n dd = (d1 - d0) * delta;\n return [ground(d0 - dd), ground(d1 - dd)];\n}\nfunction panLinear(domain, delta) {\n return pan(domain, delta, toNumber, identity);\n}\nfunction panLog(domain, delta) {\n var sign = Math.sign(domain[0]);\n return pan(domain, delta, log(sign), exp(sign));\n}\nfunction panPow(domain, delta, exponent) {\n return pan(domain, delta, pow(exponent), pow(1 / exponent));\n}\nfunction panSymlog(domain, delta, constant) {\n return pan(domain, delta, symlog(constant), symexp(constant));\n}\nfunction zoom(domain, anchor, scale, lift, ground) {\n var d0 = lift(domain[0]),\n d1 = lift(peek(domain)),\n da = anchor != null ? lift(anchor) : (d0 + d1) / 2;\n return [ground(da + (d0 - da) * scale), ground(da + (d1 - da) * scale)];\n}\nfunction zoomLinear(domain, anchor, scale) {\n return zoom(domain, anchor, scale, toNumber, identity);\n}\nfunction zoomLog(domain, anchor, scale) {\n var sign = Math.sign(domain[0]);\n return zoom(domain, anchor, scale, log(sign), exp(sign));\n}\nfunction zoomPow(domain, anchor, scale, exponent) {\n return zoom(domain, anchor, scale, pow(exponent), pow(1 / exponent));\n}\nfunction zoomSymlog(domain, anchor, scale, constant) {\n return zoom(domain, anchor, scale, symlog(constant), symexp(constant));\n}\nfunction quarter(date) {\n return 1 + ~~(new Date(date).getMonth() / 3);\n}\nfunction utcquarter(date) {\n return 1 + ~~(new Date(date).getUTCMonth() / 3);\n}\nfunction array(_) {\n return _ != null ? isArray(_) ? _ : [_] : [];\n}\n\n/**\n * Span-preserving range clamp. If the span of the input range is less\n * than (max - min) and an endpoint exceeds either the min or max value,\n * the range is translated such that the span is preserved and one\n * endpoint touches the boundary of the min/max range.\n * If the span exceeds (max - min), the range [min, max] is returned.\n */\nfunction clampRange(range, min, max) {\n var lo = range[0],\n hi = range[1],\n span;\n if (hi < lo) {\n span = hi;\n hi = lo;\n lo = span;\n }\n span = hi - lo;\n return span >= max - min ? [min, max] : [lo = Math.min(Math.max(lo, min), max - span), lo + span];\n}\nfunction isFunction(_) {\n return typeof _ === 'function';\n}\nvar DESCENDING = 'descending';\nfunction compare(fields, orders, opt) {\n opt = opt || {};\n orders = array(orders) || [];\n var ord = [],\n get = [],\n fmap = {},\n gen = opt.comparator || comparator;\n array(fields).forEach(function (f, i) {\n if (f == null) return;\n ord.push(orders[i] === DESCENDING ? -1 : 1);\n get.push(f = isFunction(f) ? f : field(f, null, opt));\n (accessorFields(f) || []).forEach(function (_) {\n return fmap[_] = 1;\n });\n });\n return get.length === 0 ? null : accessor(gen(get, ord), Object.keys(fmap));\n}\nvar ascending = function ascending(u, v) {\n return (u < v || u == null) && v != null ? -1 : (u > v || v == null) && u != null ? 1 : (v = v instanceof Date ? +v : v, u = u instanceof Date ? +u : u) !== u && v === v ? -1 : v !== v && u === u ? 1 : 0;\n};\nvar comparator = function comparator(fields, orders) {\n return fields.length === 1 ? compare1(fields[0], orders[0]) : compareN(fields, orders, fields.length);\n};\nvar compare1 = function compare1(field, order) {\n return function (a, b) {\n return ascending(field(a), field(b)) * order;\n };\n};\nvar compareN = function compareN(fields, orders, n) {\n orders.push(0); // pad zero for convenient lookup\n return function (a, b) {\n var f,\n c = 0,\n i = -1;\n while (c === 0 && ++i < n) {\n f = fields[i];\n c = ascending(f(a), f(b));\n }\n return c * orders[i];\n };\n};\nfunction constant(_) {\n return isFunction(_) ? _ : function () {\n return _;\n };\n}\nfunction debounce(delay, handler) {\n var tid;\n return function (e) {\n if (tid) clearTimeout(tid);\n tid = setTimeout(function () {\n return handler(e), tid = null;\n }, delay);\n };\n}\nfunction extend(_) {\n for (var x, k, i = 1, len = arguments.length; i < len; ++i) {\n x = arguments[i];\n for (k in x) {\n _[k] = x[k];\n }\n }\n return _;\n}\n\n/**\n * Return an array with minimum and maximum values, in the\n * form [min, max]. Ignores null, undefined, and NaN values.\n */\nfunction extent(array, f) {\n var i = 0,\n n,\n v,\n min,\n max;\n if (array && (n = array.length)) {\n if (f == null) {\n // find first valid value\n for (v = array[i]; i < n && (v == null || v !== v); v = array[++i]);\n min = max = v;\n\n // visit all other values\n for (; i < n; ++i) {\n v = array[i];\n // skip null/undefined; NaN will fail all comparisons\n if (v != null) {\n if (v < min) min = v;\n if (v > max) max = v;\n }\n }\n } else {\n // find first valid value\n for (v = f(array[i]); i < n && (v == null || v !== v); v = f(array[++i]));\n min = max = v;\n\n // visit all other values\n for (; i < n; ++i) {\n v = f(array[i]);\n // skip null/undefined; NaN will fail all comparisons\n if (v != null) {\n if (v < min) min = v;\n if (v > max) max = v;\n }\n }\n }\n }\n return [min, max];\n}\nfunction extentIndex(array, f) {\n var n = array.length;\n var i = -1,\n a,\n b,\n c,\n u,\n v;\n if (f == null) {\n while (++i < n) {\n b = array[i];\n if (b != null && b >= b) {\n a = c = b;\n break;\n }\n }\n if (i === n) return [-1, -1];\n u = v = i;\n while (++i < n) {\n b = array[i];\n if (b != null) {\n if (a > b) {\n a = b;\n u = i;\n }\n if (c < b) {\n c = b;\n v = i;\n }\n }\n }\n } else {\n while (++i < n) {\n b = f(array[i], i, array);\n if (b != null && b >= b) {\n a = c = b;\n break;\n }\n }\n if (i === n) return [-1, -1];\n u = v = i;\n while (++i < n) {\n b = f(array[i], i, array);\n if (b != null) {\n if (a > b) {\n a = b;\n u = i;\n }\n if (c < b) {\n c = b;\n v = i;\n }\n }\n }\n }\n return [u, v];\n}\nvar hop = Object.prototype.hasOwnProperty;\nfunction _has(object, property) {\n return hop.call(object, property);\n}\nvar NULL = {};\nfunction fastmap(input) {\n var obj = {},\n _test;\n function has$1(key) {\n return _has(obj, key) && obj[key] !== NULL;\n }\n var map = {\n size: 0,\n empty: 0,\n object: obj,\n has: has$1,\n get: function get(key) {\n return has$1(key) ? obj[key] : undefined;\n },\n set: function set(key, value) {\n if (!has$1(key)) {\n ++map.size;\n if (obj[key] === NULL) --map.empty;\n }\n obj[key] = value;\n return this;\n },\n delete: function _delete(key) {\n if (has$1(key)) {\n --map.size;\n ++map.empty;\n obj[key] = NULL;\n }\n return this;\n },\n clear: function clear() {\n map.size = map.empty = 0;\n map.object = obj = {};\n },\n test: function test(_) {\n if (arguments.length) {\n _test = _;\n return map;\n } else {\n return _test;\n }\n },\n clean: function clean() {\n var next = {};\n var size = 0;\n for (var _key3 in obj) {\n var value = obj[_key3];\n if (value !== NULL && (!_test || !_test(value))) {\n next[_key3] = value;\n ++size;\n }\n }\n map.size = size;\n map.empty = 0;\n map.object = obj = next;\n }\n };\n if (input) Object.keys(input).forEach(function (key) {\n map.set(key, input[key]);\n });\n return map;\n}\nfunction flush(range, value, threshold, left, right, center) {\n if (!threshold && threshold !== 0) return center;\n var t = +threshold;\n var a = range[0],\n b = peek(range),\n l;\n\n // swap endpoints if range is reversed\n if (b < a) {\n l = a;\n a = b;\n b = l;\n }\n\n // compare value to endpoints\n l = Math.abs(value - a);\n var r = Math.abs(b - value);\n\n // adjust if value is within threshold distance of endpoint\n return l < r && l <= t ? left : r <= t ? right : center;\n}\nfunction inherits(child, parent, members) {\n var proto = child.prototype = Object.create(parent.prototype);\n Object.defineProperty(proto, 'constructor', {\n value: child,\n writable: true,\n enumerable: true,\n configurable: true\n });\n return extend(proto, members);\n}\n\n/**\n * Predicate that returns true if the value lies within the span\n * of the given range. The left and right flags control the use\n * of inclusive (true) or exclusive (false) comparisons.\n */\nfunction inrange(value, range, left, right) {\n var r0 = range[0],\n r1 = range[range.length - 1],\n t;\n if (r0 > r1) {\n t = r0;\n r0 = r1;\n r1 = t;\n }\n left = left === undefined || left;\n right = right === undefined || right;\n return (left ? r0 <= value : r0 < value) && (right ? value <= r1 : value < r1);\n}\nfunction isBoolean(_) {\n return typeof _ === 'boolean';\n}\nfunction isDate(_) {\n return Object.prototype.toString.call(_) === '[object Date]';\n}\nfunction isIterable(_) {\n return _ && isFunction(_[Symbol.iterator]);\n}\nfunction isNumber(_) {\n return typeof _ === 'number';\n}\nfunction isRegExp(_) {\n return Object.prototype.toString.call(_) === '[object RegExp]';\n}\nfunction isString(_) {\n return typeof _ === 'string';\n}\nfunction key(fields, flat, opt) {\n if (fields) {\n fields = flat ? array(fields).map(function (f) {\n return f.replace(/\\\\(.)/g, '$1');\n }) : array(fields);\n }\n var len = fields && fields.length,\n gen = opt && opt.get || getter,\n map = function map(f) {\n return gen(flat ? [f] : splitAccessPath(f));\n };\n var fn;\n if (!len) {\n fn = function fn() {\n return '';\n };\n } else if (len === 1) {\n var get = map(fields[0]);\n fn = function fn(_) {\n return '' + get(_);\n };\n } else {\n var _get = fields.map(map);\n fn = function fn(_) {\n var s = '' + _get[0](_),\n i = 0;\n while (++i < len) s += '|' + _get[i](_);\n return s;\n };\n }\n return accessor(fn, fields, 'key');\n}\nfunction lerp(array, frac) {\n var lo = array[0],\n hi = peek(array),\n f = +frac;\n return !f ? lo : f === 1 ? hi : lo + f * (hi - lo);\n}\nvar DEFAULT_MAX_SIZE = 10000;\n\n// adapted from https://github.com/dominictarr/hashlru/ (MIT License)\nfunction lruCache(maxsize) {\n maxsize = +maxsize || DEFAULT_MAX_SIZE;\n var curr, prev, size;\n var clear = function clear() {\n curr = {};\n prev = {};\n size = 0;\n };\n var update = function update(key, value) {\n if (++size > maxsize) {\n prev = curr;\n curr = {};\n size = 1;\n }\n return curr[key] = value;\n };\n clear();\n return {\n clear: clear,\n has: function has(key) {\n return _has(curr, key) || _has(prev, key);\n },\n get: function get(key) {\n return _has(curr, key) ? curr[key] : _has(prev, key) ? update(key, prev[key]) : undefined;\n },\n set: function set(key, value) {\n return _has(curr, key) ? curr[key] = value : update(key, value);\n }\n };\n}\nfunction merge(compare, array0, array1, output) {\n var n0 = array0.length,\n n1 = array1.length;\n if (!n1) return array0;\n if (!n0) return array1;\n var merged = output || new array0.constructor(n0 + n1);\n var i0 = 0,\n i1 = 0,\n i = 0;\n for (; i0 < n0 && i1 < n1; ++i) {\n merged[i] = compare(array0[i0], array1[i1]) > 0 ? array1[i1++] : array0[i0++];\n }\n for (; i0 < n0; ++i0, ++i) {\n merged[i] = array0[i0];\n }\n for (; i1 < n1; ++i1, ++i) {\n merged[i] = array1[i1];\n }\n return merged;\n}\nfunction repeat(str, reps) {\n var s = '';\n while (--reps >= 0) s += str;\n return s;\n}\nfunction pad(str, length, padchar, align) {\n var c = padchar || ' ',\n s = str + '',\n n = length - s.length;\n return n <= 0 ? s : align === 'left' ? repeat(c, n) + s : align === 'center' ? repeat(c, ~~(n / 2)) + s + repeat(c, Math.ceil(n / 2)) : s + repeat(c, n);\n}\n\n/**\n * Return the numerical span of an array: the difference between\n * the last and first values.\n */\nfunction span(array) {\n return array && peek(array) - array[0] || 0;\n}\nfunction $(x) {\n return isArray(x) ? '[' + x.map($) + ']' : isObject(x) || isString(x) ?\n // Output valid JSON and JS source strings.\n // See http://timelessrepo.com/json-isnt-a-javascript-subset\n JSON.stringify(x).replace(\"\\u2028\", \"\\\\u2028\").replace(\"\\u2029\", \"\\\\u2029\") : x;\n}\nfunction toBoolean(_) {\n return _ == null || _ === '' ? null : !_ || _ === 'false' || _ === '0' ? false : !!_;\n}\nvar defaultParser = function defaultParser(_) {\n return isNumber(_) ? _ : isDate(_) ? _ : Date.parse(_);\n};\nfunction toDate(_, parser) {\n parser = parser || defaultParser;\n return _ == null || _ === '' ? null : parser(_);\n}\nfunction toString(_) {\n return _ == null || _ === '' ? null : _ + '';\n}\nfunction toSet(_) {\n var s = {},\n n = _.length;\n for (var i = 0; i < n; ++i) s[_[i]] = true;\n return s;\n}\nfunction truncate(str, length, align, ellipsis) {\n var e = ellipsis != null ? ellipsis : \"\\u2026\",\n s = str + '',\n n = s.length,\n l = Math.max(0, length - e.length);\n return n <= length ? s : align === 'left' ? e + s.slice(n - l) : align === 'center' ? s.slice(0, Math.ceil(l / 2)) + e + s.slice(n - ~~(l / 2)) : s.slice(0, l) + e;\n}\nfunction visitArray(array, filter, visitor) {\n if (array) {\n if (filter) {\n var n = array.length;\n for (var i = 0; i < n; ++i) {\n var t = filter(array[i]);\n if (t) visitor(t, i, array);\n }\n } else {\n array.forEach(visitor);\n }\n }\n}\nexport { Debug, Error$1 as Error, Info, None, Warn, accessor, accessorFields, accessorName, array, ascending, clampRange, compare, constant, debounce, error, extend, extent, extentIndex, falsy, fastmap, field, flush, _has as hasOwnProperty, id, identity, inherits, inrange, isArray, isBoolean, isDate, isFunction, isIterable, isNumber, isObject, isRegExp, isString, key, lerp, logger, lruCache, merge, mergeConfig, one, pad, panLinear, panLog, panPow, panSymlog, peek, quarter, repeat, span, splitAccessPath, $ as stringValue, toBoolean, toDate, toNumber, toSet, toString, truncate, truthy, utcquarter, visitArray, writeConfig, zero, zoomLinear, zoomLog, zoomPow, zoomSymlog };","var EOL = {},\n EOF = {},\n QUOTE = 34,\n NEWLINE = 10,\n RETURN = 13;\nfunction objectConverter(columns) {\n return new Function(\"d\", \"return {\" + columns.map(function (name, i) {\n return JSON.stringify(name) + \": d[\" + i + \"] || \\\"\\\"\";\n }).join(\",\") + \"}\");\n}\nfunction customConverter(columns, f) {\n var object = objectConverter(columns);\n return function (row, i) {\n return f(object(row), i, columns);\n };\n}\n\n// Compute unique columns in order of discovery.\nfunction inferColumns(rows) {\n var columnSet = Object.create(null),\n columns = [];\n rows.forEach(function (row) {\n for (var column in row) {\n if (!(column in columnSet)) {\n columns.push(columnSet[column] = column);\n }\n }\n });\n return columns;\n}\nfunction pad(value, width) {\n var s = value + \"\",\n length = s.length;\n return length < width ? new Array(width - length + 1).join(0) + s : s;\n}\nfunction formatYear(year) {\n return year < 0 ? \"-\" + pad(-year, 6) : year > 9999 ? \"+\" + pad(year, 6) : pad(year, 4);\n}\nfunction formatDate(date) {\n var hours = date.getUTCHours(),\n minutes = date.getUTCMinutes(),\n seconds = date.getUTCSeconds(),\n milliseconds = date.getUTCMilliseconds();\n return isNaN(date) ? \"Invalid Date\" : formatYear(date.getUTCFullYear(), 4) + \"-\" + pad(date.getUTCMonth() + 1, 2) + \"-\" + pad(date.getUTCDate(), 2) + (milliseconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \".\" + pad(milliseconds, 3) + \"Z\" : seconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \"Z\" : minutes || hours ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \"Z\" : \"\");\n}\nexport default function (delimiter) {\n var reFormat = new RegExp(\"[\\\"\" + delimiter + \"\\n\\r]\"),\n DELIMITER = delimiter.charCodeAt(0);\n function parse(text, f) {\n var convert,\n columns,\n rows = parseRows(text, function (row, i) {\n if (convert) return convert(row, i - 1);\n columns = row, convert = f ? customConverter(row, f) : objectConverter(row);\n });\n rows.columns = columns || [];\n return rows;\n }\n function parseRows(text, f) {\n var rows = [],\n // output rows\n N = text.length,\n I = 0,\n // current character index\n n = 0,\n // current line number\n t,\n // current token\n eof = N <= 0,\n // current token followed by EOF?\n eol = false; // current token followed by EOL?\n\n // Strip the trailing newline.\n if (text.charCodeAt(N - 1) === NEWLINE) --N;\n if (text.charCodeAt(N - 1) === RETURN) --N;\n function token() {\n if (eof) return EOF;\n if (eol) return eol = false, EOL;\n\n // Unescape quotes.\n var i,\n j = I,\n c;\n if (text.charCodeAt(j) === QUOTE) {\n while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE);\n if ((i = I) >= N) eof = true;else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true;else if (c === RETURN) {\n eol = true;\n if (text.charCodeAt(I) === NEWLINE) ++I;\n }\n return text.slice(j + 1, i - 1).replace(/\"\"/g, \"\\\"\");\n }\n\n // Find next delimiter or newline.\n while (I < N) {\n if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true;else if (c === RETURN) {\n eol = true;\n if (text.charCodeAt(I) === NEWLINE) ++I;\n } else if (c !== DELIMITER) continue;\n return text.slice(j, i);\n }\n\n // Return last token before EOF.\n return eof = true, text.slice(j, N);\n }\n while ((t = token()) !== EOF) {\n var row = [];\n while (t !== EOL && t !== EOF) row.push(t), t = token();\n if (f && (row = f(row, n++)) == null) continue;\n rows.push(row);\n }\n return rows;\n }\n function preformatBody(rows, columns) {\n return rows.map(function (row) {\n return columns.map(function (column) {\n return formatValue(row[column]);\n }).join(delimiter);\n });\n }\n function format(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return [columns.map(formatValue).join(delimiter)].concat(preformatBody(rows, columns)).join(\"\\n\");\n }\n function formatBody(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return preformatBody(rows, columns).join(\"\\n\");\n }\n function formatRows(rows) {\n return rows.map(formatRow).join(\"\\n\");\n }\n function formatRow(row) {\n return row.map(formatValue).join(delimiter);\n }\n function formatValue(value) {\n return value == null ? \"\" : value instanceof Date ? formatDate(value) : reFormat.test(value += \"\") ? \"\\\"\" + value.replace(/\"/g, \"\\\"\\\"\") + \"\\\"\" : value;\n }\n return {\n parse: parse,\n parseRows: parseRows,\n format: format,\n formatBody: formatBody,\n formatRows: formatRows,\n formatRow: formatRow,\n formatValue: formatValue\n };\n}","export default function (x) {\n return x;\n}","import reverse from \"./reverse.js\";\nimport transform from \"./transform.js\";\nexport default function (topology, o) {\n if (typeof o === \"string\") o = topology.objects[o];\n return o.type === \"GeometryCollection\" ? {\n type: \"FeatureCollection\",\n features: o.geometries.map(function (o) {\n return feature(topology, o);\n })\n } : feature(topology, o);\n}\nfunction feature(topology, o) {\n var id = o.id,\n bbox = o.bbox,\n properties = o.properties == null ? {} : o.properties,\n geometry = object(topology, o);\n return id == null && bbox == null ? {\n type: \"Feature\",\n properties: properties,\n geometry: geometry\n } : bbox == null ? {\n type: \"Feature\",\n id: id,\n properties: properties,\n geometry: geometry\n } : {\n type: \"Feature\",\n id: id,\n bbox: bbox,\n properties: properties,\n geometry: geometry\n };\n}\nexport function object(topology, o) {\n var transformPoint = transform(topology.transform),\n arcs = topology.arcs;\n function arc(i, points) {\n if (points.length) points.pop();\n for (var a = arcs[i < 0 ? ~i : i], k = 0, n = a.length; k < n; ++k) {\n points.push(transformPoint(a[k], k));\n }\n if (i < 0) reverse(points, n);\n }\n function point(p) {\n return transformPoint(p);\n }\n function line(arcs) {\n var points = [];\n for (var i = 0, n = arcs.length; i < n; ++i) arc(arcs[i], points);\n if (points.length < 2) points.push(points[0]); // This should never happen per the specification.\n return points;\n }\n function ring(arcs) {\n var points = line(arcs);\n while (points.length < 4) points.push(points[0]); // This may happen if an arc has only two points.\n return points;\n }\n function polygon(arcs) {\n return arcs.map(ring);\n }\n function geometry(o) {\n var type = o.type,\n coordinates;\n switch (type) {\n case \"GeometryCollection\":\n return {\n type: type,\n geometries: o.geometries.map(geometry)\n };\n case \"Point\":\n coordinates = point(o.coordinates);\n break;\n case \"MultiPoint\":\n coordinates = o.coordinates.map(point);\n break;\n case \"LineString\":\n coordinates = line(o.arcs);\n break;\n case \"MultiLineString\":\n coordinates = o.arcs.map(line);\n break;\n case \"Polygon\":\n coordinates = polygon(o.arcs);\n break;\n case \"MultiPolygon\":\n coordinates = o.arcs.map(polygon);\n break;\n default:\n return null;\n }\n return {\n type: type,\n coordinates: coordinates\n };\n }\n return geometry(o);\n}","import identity from \"./identity.js\";\nexport default function (transform) {\n if (transform == null) return identity;\n var x0,\n y0,\n kx = transform.scale[0],\n ky = transform.scale[1],\n dx = transform.translate[0],\n dy = transform.translate[1];\n return function (input, i) {\n if (!i) x0 = y0 = 0;\n var j = 2,\n n = input.length,\n output = new Array(n);\n output[0] = (x0 += input[0]) * kx + dx;\n output[1] = (y0 += input[1]) * ky + dy;\n while (j < n) output[j] = input[j], ++j;\n return output;\n };\n}","export default function (array, n) {\n var t,\n j = array.length,\n i = j - n;\n while (i < --j) t = array[i], array[i++] = array[j], array[j] = t;\n}","export default function (topology, arcs) {\n var stitchedArcs = {},\n fragmentByStart = {},\n fragmentByEnd = {},\n fragments = [],\n emptyIndex = -1;\n\n // Stitch empty arcs first, since they may be subsumed by other arcs.\n arcs.forEach(function (i, j) {\n var arc = topology.arcs[i < 0 ? ~i : i],\n t;\n if (arc.length < 3 && !arc[1][0] && !arc[1][1]) {\n t = arcs[++emptyIndex], arcs[emptyIndex] = i, arcs[j] = t;\n }\n });\n arcs.forEach(function (i) {\n var e = ends(i),\n start = e[0],\n end = e[1],\n f,\n g;\n if (f = fragmentByEnd[start]) {\n delete fragmentByEnd[f.end];\n f.push(i);\n f.end = end;\n if (g = fragmentByStart[end]) {\n delete fragmentByStart[g.start];\n var fg = g === f ? f : f.concat(g);\n fragmentByStart[fg.start = f.start] = fragmentByEnd[fg.end = g.end] = fg;\n } else {\n fragmentByStart[f.start] = fragmentByEnd[f.end] = f;\n }\n } else if (f = fragmentByStart[end]) {\n delete fragmentByStart[f.start];\n f.unshift(i);\n f.start = start;\n if (g = fragmentByEnd[start]) {\n delete fragmentByEnd[g.end];\n var gf = g === f ? f : g.concat(f);\n fragmentByStart[gf.start = g.start] = fragmentByEnd[gf.end = f.end] = gf;\n } else {\n fragmentByStart[f.start] = fragmentByEnd[f.end] = f;\n }\n } else {\n f = [i];\n fragmentByStart[f.start = start] = fragmentByEnd[f.end = end] = f;\n }\n });\n function ends(i) {\n var arc = topology.arcs[i < 0 ? ~i : i],\n p0 = arc[0],\n p1;\n if (topology.transform) p1 = [0, 0], arc.forEach(function (dp) {\n p1[0] += dp[0], p1[1] += dp[1];\n });else p1 = arc[arc.length - 1];\n return i < 0 ? [p1, p0] : [p0, p1];\n }\n function flush(fragmentByEnd, fragmentByStart) {\n for (var k in fragmentByEnd) {\n var f = fragmentByEnd[k];\n delete fragmentByStart[f.start];\n delete f.start;\n delete f.end;\n f.forEach(function (i) {\n stitchedArcs[i < 0 ? ~i : i] = 1;\n });\n fragments.push(f);\n }\n }\n flush(fragmentByEnd, fragmentByStart);\n flush(fragmentByStart, fragmentByEnd);\n arcs.forEach(function (i) {\n if (!stitchedArcs[i < 0 ? ~i : i]) fragments.push([i]);\n });\n return fragments;\n}","import { object } from \"./feature.js\";\nimport stitch from \"./stitch.js\";\nexport default function (topology) {\n return object(topology, meshArcs.apply(this, arguments));\n}\nexport function meshArcs(topology, object, filter) {\n var arcs, i, n;\n if (arguments.length > 1) arcs = extractArcs(topology, object, filter);else for (i = 0, arcs = new Array(n = topology.arcs.length); i < n; ++i) arcs[i] = i;\n return {\n type: \"MultiLineString\",\n arcs: stitch(topology, arcs)\n };\n}\nfunction extractArcs(topology, object, filter) {\n var arcs = [],\n geomsByArc = [],\n geom;\n function extract0(i) {\n var j = i < 0 ? ~i : i;\n (geomsByArc[j] || (geomsByArc[j] = [])).push({\n i: i,\n g: geom\n });\n }\n function extract1(arcs) {\n arcs.forEach(extract0);\n }\n function extract2(arcs) {\n arcs.forEach(extract1);\n }\n function extract3(arcs) {\n arcs.forEach(extract2);\n }\n function geometry(o) {\n switch (geom = o, o.type) {\n case \"GeometryCollection\":\n o.geometries.forEach(geometry);\n break;\n case \"LineString\":\n extract1(o.arcs);\n break;\n case \"MultiLineString\":\n case \"Polygon\":\n extract2(o.arcs);\n break;\n case \"MultiPolygon\":\n extract3(o.arcs);\n break;\n }\n }\n geometry(object);\n geomsByArc.forEach(filter == null ? function (geoms) {\n arcs.push(geoms[0].i);\n } : function (geoms) {\n if (filter(geoms[0].g, geoms[geoms.length - 1].g)) arcs.push(geoms[0].i);\n });\n return arcs;\n}","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nvar e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\nfunction tickSpec(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log10(step)),\n error = step / Math.pow(10, power),\n factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;\n var i1, i2, inc;\n if (power < 0) {\n inc = Math.pow(10, -power) / factor;\n i1 = Math.round(start * inc);\n i2 = Math.round(stop * inc);\n if (i1 / inc < start) ++i1;\n if (i2 / inc > stop) --i2;\n inc = -inc;\n } else {\n inc = Math.pow(10, power) * factor;\n i1 = Math.round(start / inc);\n i2 = Math.round(stop / inc);\n if (i1 * inc < start) ++i1;\n if (i2 * inc > stop) --i2;\n }\n if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);\n return [i1, i2, inc];\n}\nexport default function ticks(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n if (!(count > 0)) return [];\n if (start === stop) return [start];\n var reverse = stop < start,\n _ref = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count),\n _ref2 = _slicedToArray(_ref, 3),\n i1 = _ref2[0],\n i2 = _ref2[1],\n inc = _ref2[2];\n if (!(i2 >= i1)) return [];\n var n = i2 - i1 + 1,\n ticks = new Array(n);\n if (reverse) {\n if (inc < 0) for (var i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;else for (var _i = 0; _i < n; ++_i) ticks[_i] = (i2 - _i) * inc;\n } else {\n if (inc < 0) for (var _i2 = 0; _i2 < n; ++_i2) ticks[_i2] = (i1 + _i2) / -inc;else for (var _i3 = 0; _i3 < n; ++_i3) ticks[_i3] = (i1 + _i3) * inc;\n }\n return ticks;\n}\nexport function tickIncrement(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n return tickSpec(start, stop, count)[2];\n}\nexport function tickStep(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n var reverse = stop < start,\n inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);\n}","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\nFormatSpecifier.prototype.toString = function () {\n return this.fill + this.align + this.sign + this.symbol + (this.zero ? \"0\" : \"\") + (this.width === undefined ? \"\" : Math.max(1, this.width | 0)) + (this.comma ? \",\" : \"\") + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0)) + (this.trim ? \"~\" : \"\") + this.type;\n};","import { formatDecimalParts } from \"./formatDecimal.js\";\nexport var prefixExponent;\nexport default function (x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient : i > n ? coefficient + new Array(i - n + 1).join(\"0\") : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i) : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}","export default function (x) {\n return Math.abs(x = Math.round(x)) >= 1e21 ? x.toLocaleString(\"en\").replace(/,/g, \"\") : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i,\n coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient, +x.slice(i + 1)];\n}","import { formatDecimalParts } from \"./formatDecimal.js\";\nexport default function (x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}","import { formatDecimalParts } from \"./formatDecimal.js\";\nexport default function (x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1) : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\nexport default {\n \"%\": function _(x, p) {\n return (x * 100).toFixed(p);\n },\n \"b\": function b(x) {\n return Math.round(x).toString(2);\n },\n \"c\": function c(x) {\n return x + \"\";\n },\n \"d\": formatDecimal,\n \"e\": function e(x, p) {\n return x.toExponential(p);\n },\n \"f\": function f(x, p) {\n return x.toFixed(p);\n },\n \"g\": function g(x, p) {\n return x.toPrecision(p);\n },\n \"o\": function o(x) {\n return Math.round(x).toString(8);\n },\n \"p\": function p(x, _p) {\n return formatRounded(x * 100, _p);\n },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function X(x) {\n return Math.round(x).toString(16).toUpperCase();\n },\n \"x\": function x(_x) {\n return Math.round(_x).toString(16);\n }\n};","export default function (x) {\n return x;\n}","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport { prefixExponent } from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\nvar map = Array.prototype.map,\n prefixes = [\"y\", \"z\", \"a\", \"f\", \"p\", \"n\", \"µ\", \"m\", \"\", \"k\", \"M\", \"G\", \"T\", \"P\", \"E\", \"Z\", \"Y\"];\nexport default function (locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || fill === \"0\" && align === \"=\") zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6 : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision)) : Math.max(0, Math.min(20, precision));\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i,\n n,\n c;\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? sign === \"(\" ? sign : minus : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\":\n value = valuePrefix + value + valueSuffix + padding;\n break;\n case \"=\":\n value = valuePrefix + padding + value + valueSuffix;\n break;\n case \"^\":\n value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length);\n break;\n default:\n value = padding + valuePrefix + value + valueSuffix;\n break;\n }\n return numerals(value);\n }\n format.toString = function () {\n return specifier + \"\";\n };\n return format;\n }\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function (value) {\n return f(k * value) + prefix;\n };\n }\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}","import formatLocale from \"./locale.js\";\nvar locale;\nexport var format;\nexport var formatPrefix;\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}","export default function (grouping, thousands) {\n return function (value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n return t.reverse().join(thousands);\n };\n}","export default function (numerals) {\n return function (value) {\n return value.replace(/[0-9]/g, function (i) {\n return numerals[+i];\n });\n };\n}","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function (s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\":\n i0 = i1 = i;\n break;\n case \"0\":\n if (i0 === 0) i0 = i;\n i1 = i;\n break;\n default:\n if (!+s[i]) break out;\n if (i0 > 0) i0 = 0;\n break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}","var t0 = new Date(),\n t1 = new Date();\nexport function timeInterval(floori, offseti, count, field) {\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date() : new Date(+date)), date;\n }\n interval.floor = function (date) {\n return floori(date = new Date(+date)), date;\n };\n interval.ceil = function (date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n interval.round = function (date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n interval.offset = function (date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n interval.range = function (start, stop, step) {\n var range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n var previous;\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start); while (previous < start && start < stop);\n return range;\n };\n interval.filter = function (test) {\n return timeInterval(function (date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function (date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function (start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n interval.every = function (step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null : !(step > 1) ? interval : interval.filter(field ? function (d) {\n return field(d) % step === 0;\n } : function (d) {\n return interval.count(0, d) % step === 0;\n });\n };\n }\n return interval;\n}","export var durationSecond = 1000;\nexport var durationMinute = durationSecond * 60;\nexport var durationHour = durationMinute * 60;\nexport var durationDay = durationHour * 24;\nexport var durationWeek = durationDay * 7;\nexport var durationMonth = durationDay * 30;\nexport var durationYear = durationDay * 365;","import { timeInterval } from \"./interval.js\";\nimport { durationDay, durationMinute } from \"./duration.js\";\nexport var timeDay = timeInterval(function (date) {\n return date.setHours(0, 0, 0, 0);\n}, function (date, step) {\n return date.setDate(date.getDate() + step);\n}, function (start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function (date) {\n return date.getDate() - 1;\n});\nexport var timeDays = timeDay.range;\nexport var utcDay = timeInterval(function (date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function (date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function (start, end) {\n return (end - start) / durationDay;\n}, function (date) {\n return date.getUTCDate() - 1;\n});\nexport var utcDays = utcDay.range;\nexport var unixDay = timeInterval(function (date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function (date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function (start, end) {\n return (end - start) / durationDay;\n}, function (date) {\n return Math.floor(date / durationDay);\n});\nexport var unixDays = unixDay.range;","import { timeInterval } from \"./interval.js\";\nimport { durationMinute, durationWeek } from \"./duration.js\";\nfunction timeWeekday(i) {\n return timeInterval(function (date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function (date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function (start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\nexport var timeSunday = timeWeekday(0);\nexport var timeMonday = timeWeekday(1);\nexport var timeTuesday = timeWeekday(2);\nexport var timeWednesday = timeWeekday(3);\nexport var timeThursday = timeWeekday(4);\nexport var timeFriday = timeWeekday(5);\nexport var timeSaturday = timeWeekday(6);\nexport var timeSundays = timeSunday.range;\nexport var timeMondays = timeMonday.range;\nexport var timeTuesdays = timeTuesday.range;\nexport var timeWednesdays = timeWednesday.range;\nexport var timeThursdays = timeThursday.range;\nexport var timeFridays = timeFriday.range;\nexport var timeSaturdays = timeSaturday.range;\nfunction utcWeekday(i) {\n return timeInterval(function (date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function (date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function (start, end) {\n return (end - start) / durationWeek;\n });\n}\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;","import { timeInterval } from \"./interval.js\";\nexport var timeYear = timeInterval(function (date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function (date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function (start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function (date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\ntimeYear.every = function (k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval(function (date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function (date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\nexport var timeYears = timeYear.range;\nexport var utcYear = timeInterval(function (date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function (date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function (start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function (date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function (k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval(function (date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function (date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\nexport var utcYears = utcYear.range;","import { timeInterval } from \"./interval.js\";\nexport var timeMonth = timeInterval(function (date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function (date, step) {\n date.setMonth(date.getMonth() + step);\n}, function (start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function (date) {\n return date.getMonth();\n});\nexport var timeMonths = timeMonth.range;\nexport var utcMonth = timeInterval(function (date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function (date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function (start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function (date) {\n return date.getUTCMonth();\n});\nexport var utcMonths = utcMonth.range;","import { timeInterval } from \"./interval.js\";\nimport { durationHour, durationMinute, durationSecond } from \"./duration.js\";\nexport var timeHour = timeInterval(function (date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function (date, step) {\n date.setTime(+date + step * durationHour);\n}, function (start, end) {\n return (end - start) / durationHour;\n}, function (date) {\n return date.getHours();\n});\nexport var timeHours = timeHour.range;\nexport var utcHour = timeInterval(function (date) {\n date.setUTCMinutes(0, 0, 0);\n}, function (date, step) {\n date.setTime(+date + step * durationHour);\n}, function (start, end) {\n return (end - start) / durationHour;\n}, function (date) {\n return date.getUTCHours();\n});\nexport var utcHours = utcHour.range;","import { timeInterval } from \"./interval.js\";\nimport { durationMinute, durationSecond } from \"./duration.js\";\nexport var timeMinute = timeInterval(function (date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function (date, step) {\n date.setTime(+date + step * durationMinute);\n}, function (start, end) {\n return (end - start) / durationMinute;\n}, function (date) {\n return date.getMinutes();\n});\nexport var timeMinutes = timeMinute.range;\nexport var utcMinute = timeInterval(function (date) {\n date.setUTCSeconds(0, 0);\n}, function (date, step) {\n date.setTime(+date + step * durationMinute);\n}, function (start, end) {\n return (end - start) / durationMinute;\n}, function (date) {\n return date.getUTCMinutes();\n});\nexport var utcMinutes = utcMinute.range;","import { timeInterval } from \"./interval.js\";\nimport { durationSecond } from \"./duration.js\";\nexport var second = timeInterval(function (date) {\n date.setTime(date - date.getMilliseconds());\n}, function (date, step) {\n date.setTime(+date + step * durationSecond);\n}, function (start, end) {\n return (end - start) / durationSecond;\n}, function (date) {\n return date.getUTCSeconds();\n});\nexport var seconds = second.range;","import { timeInterval } from \"./interval.js\";\nexport var millisecond = timeInterval(function () {\n // noop\n}, function (date, step) {\n date.setTime(+date + step);\n}, function (start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function (k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return timeInterval(function (date) {\n date.setTime(Math.floor(date / k) * k);\n }, function (date, step) {\n date.setTime(+date + step * k);\n }, function (start, end) {\n return (end - start) / k;\n });\n};\nexport var milliseconds = millisecond.range;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nvar _defaultSpecifiers, _localGet, _localInv, _utcGet, _utcInv, _timeIntervals, _utcIntervals;\nimport { array, error, hasOwnProperty, extend, peek, toSet, constant, zero, one, span } from 'vega-util';\nimport { timeDay, timeWeek, utcDay, utcWeek, timeYear, timeMonth, timeHour, timeMinute, timeSecond, timeMillisecond, utcYear, utcMonth, utcHour, utcMinute, utcSecond, utcMillisecond } from 'd3-time';\nimport { bisector, tickStep } from 'd3-array';\nvar YEAR = 'year';\nvar QUARTER = 'quarter';\nvar MONTH = 'month';\nvar WEEK = 'week';\nvar DATE = 'date';\nvar DAY = 'day';\nvar DAYOFYEAR = 'dayofyear';\nvar HOURS = 'hours';\nvar MINUTES = 'minutes';\nvar SECONDS = 'seconds';\nvar MILLISECONDS = 'milliseconds';\nvar TIME_UNITS = [YEAR, QUARTER, MONTH, WEEK, DATE, DAY, DAYOFYEAR, HOURS, MINUTES, SECONDS, MILLISECONDS];\nvar UNITS = TIME_UNITS.reduce(function (o, u, i) {\n return o[u] = 1 + i, o;\n}, {});\nfunction timeUnits(units) {\n var u = array(units).slice(),\n m = {};\n\n // check validity\n if (!u.length) error('Missing time unit.');\n u.forEach(function (unit) {\n if (hasOwnProperty(UNITS, unit)) {\n m[unit] = 1;\n } else {\n error(\"Invalid time unit: \".concat(unit, \".\"));\n }\n });\n var numTypes = (m[WEEK] || m[DAY] ? 1 : 0) + (m[QUARTER] || m[MONTH] || m[DATE] ? 1 : 0) + (m[DAYOFYEAR] ? 1 : 0);\n if (numTypes > 1) {\n error(\"Incompatible time units: \".concat(units));\n }\n\n // ensure proper sort order\n u.sort(function (a, b) {\n return UNITS[a] - UNITS[b];\n });\n return u;\n}\nvar defaultSpecifiers = (_defaultSpecifiers = {}, _defineProperty(_defaultSpecifiers, YEAR, '%Y '), _defineProperty(_defaultSpecifiers, QUARTER, 'Q%q '), _defineProperty(_defaultSpecifiers, MONTH, '%b '), _defineProperty(_defaultSpecifiers, DATE, '%d '), _defineProperty(_defaultSpecifiers, WEEK, 'W%U '), _defineProperty(_defaultSpecifiers, DAY, '%a '), _defineProperty(_defaultSpecifiers, DAYOFYEAR, '%j '), _defineProperty(_defaultSpecifiers, HOURS, '%H:00'), _defineProperty(_defaultSpecifiers, MINUTES, '00:%M'), _defineProperty(_defaultSpecifiers, SECONDS, ':%S'), _defineProperty(_defaultSpecifiers, MILLISECONDS, '.%L'), _defineProperty(_defaultSpecifiers, \"\".concat(YEAR, \"-\").concat(MONTH), '%Y-%m '), _defineProperty(_defaultSpecifiers, \"\".concat(YEAR, \"-\").concat(MONTH, \"-\").concat(DATE), '%Y-%m-%d '), _defineProperty(_defaultSpecifiers, \"\".concat(HOURS, \"-\").concat(MINUTES), '%H:%M'), _defaultSpecifiers);\nfunction timeUnitSpecifier(units, specifiers) {\n var s = extend({}, defaultSpecifiers, specifiers),\n u = timeUnits(units),\n n = u.length;\n var fmt = '',\n start = 0,\n end,\n key;\n for (start = 0; start < n;) {\n for (end = u.length; end > start; --end) {\n key = u.slice(start, end).join('-');\n if (s[key] != null) {\n fmt += s[key];\n start = end;\n break;\n }\n }\n }\n return fmt.trim();\n}\nvar t0 = new Date();\nfunction localYear(y) {\n t0.setFullYear(y);\n t0.setMonth(0);\n t0.setDate(1);\n t0.setHours(0, 0, 0, 0);\n return t0;\n}\nfunction dayofyear(d) {\n return localDayOfYear(new Date(d));\n}\nfunction week(d) {\n return localWeekNum(new Date(d));\n}\nfunction localDayOfYear(d) {\n return timeDay.count(localYear(d.getFullYear()) - 1, d);\n}\nfunction localWeekNum(d) {\n return timeWeek.count(localYear(d.getFullYear()) - 1, d);\n}\nfunction localFirst(y) {\n return localYear(y).getDay();\n}\nfunction localDate(y, m, d, H, M, S, L) {\n if (0 <= y && y < 100) {\n var date = new Date(-1, m, d, H, M, S, L);\n date.setFullYear(y);\n return date;\n }\n return new Date(y, m, d, H, M, S, L);\n}\nfunction utcdayofyear(d) {\n return utcDayOfYear(new Date(d));\n}\nfunction utcweek(d) {\n return utcWeekNum(new Date(d));\n}\nfunction utcDayOfYear(d) {\n var y = Date.UTC(d.getUTCFullYear(), 0, 1);\n return utcDay.count(y - 1, d);\n}\nfunction utcWeekNum(d) {\n var y = Date.UTC(d.getUTCFullYear(), 0, 1);\n return utcWeek.count(y - 1, d);\n}\nfunction utcFirst(y) {\n t0.setTime(Date.UTC(y, 0, 1));\n return t0.getUTCDay();\n}\nfunction utcDate(y, m, d, H, M, S, L) {\n if (0 <= y && y < 100) {\n var date = new Date(Date.UTC(-1, m, d, H, M, S, L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(y, m, d, H, M, S, L));\n}\nfunction floor(units, step, get, inv, newDate) {\n var s = step || 1,\n b = peek(units),\n _ = function _(unit, p, key) {\n key = key || unit;\n return getUnit(get[key], inv[key], unit === b && s, p);\n };\n var t = new Date(),\n u = toSet(units),\n y = u[YEAR] ? _(YEAR) : constant(2012),\n m = u[MONTH] ? _(MONTH) : u[QUARTER] ? _(QUARTER) : zero,\n d = u[WEEK] && u[DAY] ? _(DAY, 1, WEEK + DAY) : u[WEEK] ? _(WEEK, 1) : u[DAY] ? _(DAY, 1) : u[DATE] ? _(DATE, 1) : u[DAYOFYEAR] ? _(DAYOFYEAR, 1) : one,\n H = u[HOURS] ? _(HOURS) : zero,\n M = u[MINUTES] ? _(MINUTES) : zero,\n S = u[SECONDS] ? _(SECONDS) : zero,\n L = u[MILLISECONDS] ? _(MILLISECONDS) : zero;\n return function (v) {\n t.setTime(+v);\n var year = y(t);\n return newDate(year, m(t), d(t, year), H(t), M(t), S(t), L(t));\n };\n}\nfunction getUnit(f, inv, step, phase) {\n var u = step <= 1 ? f : phase ? function (d, y) {\n return phase + step * Math.floor((f(d, y) - phase) / step);\n } : function (d, y) {\n return step * Math.floor(f(d, y) / step);\n };\n return inv ? function (d, y) {\n return inv(u(d, y), y);\n } : u;\n}\n\n// returns the day of the year based on week number, day of week,\n// and the day of the week for the first day of the year\nfunction weekday(week, day, firstDay) {\n return day + week * 7 - (firstDay + 6) % 7;\n}\n\n// -- LOCAL TIME --\n\nvar localGet = (_localGet = {}, _defineProperty(_localGet, YEAR, function (d) {\n return d.getFullYear();\n}), _defineProperty(_localGet, QUARTER, function (d) {\n return Math.floor(d.getMonth() / 3);\n}), _defineProperty(_localGet, MONTH, function (d) {\n return d.getMonth();\n}), _defineProperty(_localGet, DATE, function (d) {\n return d.getDate();\n}), _defineProperty(_localGet, HOURS, function (d) {\n return d.getHours();\n}), _defineProperty(_localGet, MINUTES, function (d) {\n return d.getMinutes();\n}), _defineProperty(_localGet, SECONDS, function (d) {\n return d.getSeconds();\n}), _defineProperty(_localGet, MILLISECONDS, function (d) {\n return d.getMilliseconds();\n}), _defineProperty(_localGet, DAYOFYEAR, function (d) {\n return localDayOfYear(d);\n}), _defineProperty(_localGet, WEEK, function (d) {\n return localWeekNum(d);\n}), _defineProperty(_localGet, WEEK + DAY, function (d, y) {\n return weekday(localWeekNum(d), d.getDay(), localFirst(y));\n}), _defineProperty(_localGet, DAY, function (d, y) {\n return weekday(1, d.getDay(), localFirst(y));\n}), _localGet);\nvar localInv = (_localInv = {}, _defineProperty(_localInv, QUARTER, function (q) {\n return 3 * q;\n}), _defineProperty(_localInv, WEEK, function (w, y) {\n return weekday(w, 0, localFirst(y));\n}), _localInv);\nfunction timeFloor(units, step) {\n return floor(units, step || 1, localGet, localInv, localDate);\n}\n\n// -- UTC TIME --\n\nvar utcGet = (_utcGet = {}, _defineProperty(_utcGet, YEAR, function (d) {\n return d.getUTCFullYear();\n}), _defineProperty(_utcGet, QUARTER, function (d) {\n return Math.floor(d.getUTCMonth() / 3);\n}), _defineProperty(_utcGet, MONTH, function (d) {\n return d.getUTCMonth();\n}), _defineProperty(_utcGet, DATE, function (d) {\n return d.getUTCDate();\n}), _defineProperty(_utcGet, HOURS, function (d) {\n return d.getUTCHours();\n}), _defineProperty(_utcGet, MINUTES, function (d) {\n return d.getUTCMinutes();\n}), _defineProperty(_utcGet, SECONDS, function (d) {\n return d.getUTCSeconds();\n}), _defineProperty(_utcGet, MILLISECONDS, function (d) {\n return d.getUTCMilliseconds();\n}), _defineProperty(_utcGet, DAYOFYEAR, function (d) {\n return utcDayOfYear(d);\n}), _defineProperty(_utcGet, WEEK, function (d) {\n return utcWeekNum(d);\n}), _defineProperty(_utcGet, DAY, function (d, y) {\n return weekday(1, d.getUTCDay(), utcFirst(y));\n}), _defineProperty(_utcGet, WEEK + DAY, function (d, y) {\n return weekday(utcWeekNum(d), d.getUTCDay(), utcFirst(y));\n}), _utcGet);\nvar utcInv = (_utcInv = {}, _defineProperty(_utcInv, QUARTER, function (q) {\n return 3 * q;\n}), _defineProperty(_utcInv, WEEK, function (w, y) {\n return weekday(w, 0, utcFirst(y));\n}), _utcInv);\nfunction utcFloor(units, step) {\n return floor(units, step || 1, utcGet, utcInv, utcDate);\n}\nvar timeIntervals = (_timeIntervals = {}, _defineProperty(_timeIntervals, YEAR, timeYear), _defineProperty(_timeIntervals, QUARTER, timeMonth.every(3)), _defineProperty(_timeIntervals, MONTH, timeMonth), _defineProperty(_timeIntervals, WEEK, timeWeek), _defineProperty(_timeIntervals, DATE, timeDay), _defineProperty(_timeIntervals, DAY, timeDay), _defineProperty(_timeIntervals, DAYOFYEAR, timeDay), _defineProperty(_timeIntervals, HOURS, timeHour), _defineProperty(_timeIntervals, MINUTES, timeMinute), _defineProperty(_timeIntervals, SECONDS, timeSecond), _defineProperty(_timeIntervals, MILLISECONDS, timeMillisecond), _timeIntervals);\nvar utcIntervals = (_utcIntervals = {}, _defineProperty(_utcIntervals, YEAR, utcYear), _defineProperty(_utcIntervals, QUARTER, utcMonth.every(3)), _defineProperty(_utcIntervals, MONTH, utcMonth), _defineProperty(_utcIntervals, WEEK, utcWeek), _defineProperty(_utcIntervals, DATE, utcDay), _defineProperty(_utcIntervals, DAY, utcDay), _defineProperty(_utcIntervals, DAYOFYEAR, utcDay), _defineProperty(_utcIntervals, HOURS, utcHour), _defineProperty(_utcIntervals, MINUTES, utcMinute), _defineProperty(_utcIntervals, SECONDS, utcSecond), _defineProperty(_utcIntervals, MILLISECONDS, utcMillisecond), _utcIntervals);\nfunction timeInterval(unit) {\n return timeIntervals[unit];\n}\nfunction utcInterval(unit) {\n return utcIntervals[unit];\n}\nfunction offset(ival, date, step) {\n return ival ? ival.offset(date, step) : undefined;\n}\nfunction timeOffset(unit, date, step) {\n return offset(timeInterval(unit), date, step);\n}\nfunction utcOffset(unit, date, step) {\n return offset(utcInterval(unit), date, step);\n}\nfunction sequence(ival, start, stop, step) {\n return ival ? ival.range(start, stop, step) : undefined;\n}\nfunction timeSequence(unit, start, stop, step) {\n return sequence(timeInterval(unit), start, stop, step);\n}\nfunction utcSequence(unit, start, stop, step) {\n return sequence(utcInterval(unit), start, stop, step);\n}\nvar durationSecond = 1000,\n durationMinute = durationSecond * 60,\n durationHour = durationMinute * 60,\n durationDay = durationHour * 24,\n durationWeek = durationDay * 7,\n durationMonth = durationDay * 30,\n durationYear = durationDay * 365;\nvar Milli = [YEAR, MONTH, DATE, HOURS, MINUTES, SECONDS, MILLISECONDS],\n Seconds = Milli.slice(0, -1),\n Minutes = Seconds.slice(0, -1),\n Hours = Minutes.slice(0, -1),\n Day = Hours.slice(0, -1),\n Week = [YEAR, WEEK],\n Month = [YEAR, MONTH],\n Year = [YEAR];\nvar intervals = [[Seconds, 1, durationSecond], [Seconds, 5, 5 * durationSecond], [Seconds, 15, 15 * durationSecond], [Seconds, 30, 30 * durationSecond], [Minutes, 1, durationMinute], [Minutes, 5, 5 * durationMinute], [Minutes, 15, 15 * durationMinute], [Minutes, 30, 30 * durationMinute], [Hours, 1, durationHour], [Hours, 3, 3 * durationHour], [Hours, 6, 6 * durationHour], [Hours, 12, 12 * durationHour], [Day, 1, durationDay], [Week, 1, durationWeek], [Month, 1, durationMonth], [Month, 3, 3 * durationMonth], [Year, 1, durationYear]];\nfunction bin(opt) {\n var ext = opt.extent,\n max = opt.maxbins || 40,\n target = Math.abs(span(ext)) / max;\n var i = bisector(function (i) {\n return i[2];\n }).right(intervals, target),\n units,\n step;\n if (i === intervals.length) {\n units = Year, step = tickStep(ext[0] / durationYear, ext[1] / durationYear, max);\n } else if (i) {\n i = intervals[target / intervals[i - 1][2] < intervals[i][2] / target ? i - 1 : i];\n units = i[0];\n step = i[1];\n } else {\n units = Milli;\n step = Math.max(tickStep(ext[0], ext[1], max), 1);\n }\n return {\n units: units,\n step: step\n };\n}\nexport { DATE, DAY, DAYOFYEAR, HOURS, MILLISECONDS, MINUTES, MONTH, QUARTER, SECONDS, TIME_UNITS, WEEK, YEAR, dayofyear, bin as timeBin, timeFloor, timeInterval, timeOffset, timeSequence, timeUnitSpecifier, timeUnits, utcFloor, utcInterval, utcOffset, utcSequence, utcdayofyear, utcweek, week };","export default function ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}","export default function descending(a, b) {\n return a == null || b == null ? NaN : b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}","import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\nexport default function bisector(f) {\n var compare1, compare2, delta;\n\n // If an accessor is specified, promote it to a comparator. In this case we\n // can test whether the search value is (self-) comparable. We can’t do this\n // for a comparator (except for specific, known comparators) because we can’t\n // tell if the comparator is symmetric, and an asymmetric comparator can’t be\n // used to test whether a single value is comparable.\n if (f.length !== 2) {\n compare1 = ascending;\n compare2 = function compare2(d, x) {\n return ascending(f(d), x);\n };\n delta = function delta(d, x) {\n return f(d) - x;\n };\n } else {\n compare1 = f === ascending || f === descending ? f : zero;\n compare2 = f;\n delta = f;\n }\n function left(a, x) {\n var lo = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var hi = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : a.length;\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n var mid = lo + hi >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n function right(a, x) {\n var lo = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var hi = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : a.length;\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n var mid = lo + hi >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n function center(a, x) {\n var lo = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var hi = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : a.length;\n var i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n return {\n left: left,\n center: center,\n right: right\n };\n}\nfunction zero() {\n return 0;\n}","import { timeDay, timeSunday, timeMonday, timeThursday, timeYear, utcDay, utcSunday, utcMonday, utcThursday, utcYear } from \"d3-time\";\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\nfunction newDate(y, m, d) {\n return {\n y: y,\n m: m,\n d: d,\n H: 0,\n M: 0,\n S: 0,\n L: 0\n };\n}\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n function newFormat(specifier, formats) {\n return function (date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n if (!(date instanceof Date)) date = new Date(+date);\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n function newParse(specifier, Z) {\n return function (string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week,\n day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || (j = parse(d, string, j)) < 0) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n return j;\n }\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n return {\n format: function format(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function () {\n return specifier;\n };\n return f;\n },\n parse: function parse(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function () {\n return specifier;\n };\n return p;\n },\n utcFormat: function utcFormat(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function () {\n return specifier;\n };\n return f;\n },\n utcParse: function utcParse(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function () {\n return specifier;\n };\n return p;\n }\n };\n}\nvar pads = {\n \"-\": \"\",\n \"_\": \" \",\n \"0\": \"0\"\n },\n numberRe = /^\\s*\\d+/,\n // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\nfunction formatLookup(names) {\n return new Map(names.map(function (name, i) {\n return [name.toLowerCase(), i];\n }));\n}\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\nfunction dISO(d) {\n var day = d.getDay();\n return day >= 4 || day === 0 ? timeThursday(d) : timeThursday.ceil(d);\n}\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = day >= 4 || day === 0 ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\")) + pad(z / 60 | 0, \"0\", 2) + pad(z % 60, \"0\", 2);\n}\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return day >= 4 || day === 0 ? utcThursday(d) : utcThursday.ceil(d);\n}\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = day >= 4 || day === 0 ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\nfunction formatUTCZone() {\n return \"+0000\";\n}\nfunction formatLiteralPercent() {\n return \"%\";\n}\nfunction formatUnixTimestamp(d) {\n return +d;\n}\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}","import formatLocale from \"./locale.js\";\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}","import { tickStep } from 'd3-array';\nimport { formatSpecifier, precisionFixed, precisionRound, precisionPrefix, format, formatPrefix, formatLocale } from 'd3-format';\nimport { SECONDS, MINUTES, HOURS, DATE, WEEK, MONTH, QUARTER, YEAR, MILLISECONDS, DAY, timeInterval, utcInterval } from 'vega-time';\nimport { isString, isObject, error, extend } from 'vega-util';\nimport { timeFormat, timeParse, utcFormat, utcParse, timeFormatLocale as timeFormatLocale$1 } from 'd3-time-format';\nfunction memoize(method) {\n var cache = {};\n return function (spec) {\n return cache[spec] || (cache[spec] = method(spec));\n };\n}\nfunction trimZeroes(numberFormat, decimalChar) {\n return function (x) {\n var str = numberFormat(x),\n dec = str.indexOf(decimalChar);\n if (dec < 0) return str;\n var idx = rightmostDigit(str, dec);\n var end = idx < str.length ? str.slice(idx) : '';\n while (--idx > dec) if (str[idx] !== '0') {\n ++idx;\n break;\n }\n return str.slice(0, idx) + end;\n };\n}\nfunction rightmostDigit(str, dec) {\n var i = str.lastIndexOf('e'),\n c;\n if (i > 0) return i;\n for (i = str.length; --i > dec;) {\n c = str.charCodeAt(i);\n if (c >= 48 && c <= 57) return i + 1; // is digit\n }\n}\n\nfunction numberLocale(locale) {\n var format = memoize(locale.format),\n formatPrefix = locale.formatPrefix;\n return {\n format: format,\n formatPrefix: formatPrefix,\n formatFloat: function formatFloat(spec) {\n var s = formatSpecifier(spec || ',');\n if (s.precision == null) {\n s.precision = 12;\n switch (s.type) {\n case '%':\n s.precision -= 2;\n break;\n case 'e':\n s.precision -= 1;\n break;\n }\n return trimZeroes(format(s),\n // number format\n format('.1f')(1)[1] // decimal point character\n );\n } else {\n return format(s);\n }\n },\n formatSpan: function formatSpan(start, stop, count, specifier) {\n specifier = formatSpecifier(specifier == null ? ',f' : specifier);\n var step = tickStep(start, stop, count),\n value = Math.max(Math.abs(start), Math.abs(stop));\n var precision;\n if (specifier.precision == null) {\n switch (specifier.type) {\n case 's':\n {\n if (!isNaN(precision = precisionPrefix(step, value))) {\n specifier.precision = precision;\n }\n return formatPrefix(specifier, value);\n }\n case '':\n case 'e':\n case 'g':\n case 'p':\n case 'r':\n {\n if (!isNaN(precision = precisionRound(step, value))) {\n specifier.precision = precision - (specifier.type === 'e');\n }\n break;\n }\n case 'f':\n case '%':\n {\n if (!isNaN(precision = precisionFixed(step))) {\n specifier.precision = precision - (specifier.type === '%') * 2;\n }\n break;\n }\n }\n }\n return format(specifier);\n }\n };\n}\nvar defaultNumberLocale;\nresetNumberFormatDefaultLocale();\nfunction resetNumberFormatDefaultLocale() {\n return defaultNumberLocale = numberLocale({\n format: format,\n formatPrefix: formatPrefix\n });\n}\nfunction numberFormatLocale(definition) {\n return numberLocale(formatLocale(definition));\n}\nfunction numberFormatDefaultLocale(definition) {\n return arguments.length ? defaultNumberLocale = numberFormatLocale(definition) : defaultNumberLocale;\n}\nfunction timeMultiFormat(format, interval, spec) {\n spec = spec || {};\n if (!isObject(spec)) {\n error(\"Invalid time multi-format specifier: \".concat(spec));\n }\n var second = interval(SECONDS),\n minute = interval(MINUTES),\n hour = interval(HOURS),\n day = interval(DATE),\n week = interval(WEEK),\n month = interval(MONTH),\n quarter = interval(QUARTER),\n year = interval(YEAR),\n L = format(spec[MILLISECONDS] || '.%L'),\n S = format(spec[SECONDS] || ':%S'),\n M = format(spec[MINUTES] || '%I:%M'),\n H = format(spec[HOURS] || '%I %p'),\n d = format(spec[DATE] || spec[DAY] || '%a %d'),\n w = format(spec[WEEK] || '%b %d'),\n m = format(spec[MONTH] || '%B'),\n q = format(spec[QUARTER] || '%B'),\n y = format(spec[YEAR] || '%Y');\n return function (date) {\n return (second(date) < date ? L : minute(date) < date ? S : hour(date) < date ? M : day(date) < date ? H : month(date) < date ? week(date) < date ? d : w : year(date) < date ? quarter(date) < date ? m : q : y)(date);\n };\n}\nfunction timeLocale(locale) {\n var _timeFormat = memoize(locale.format),\n _utcFormat = memoize(locale.utcFormat);\n return {\n timeFormat: function timeFormat(spec) {\n return isString(spec) ? _timeFormat(spec) : timeMultiFormat(_timeFormat, timeInterval, spec);\n },\n utcFormat: function utcFormat(spec) {\n return isString(spec) ? _utcFormat(spec) : timeMultiFormat(_utcFormat, utcInterval, spec);\n },\n timeParse: memoize(locale.parse),\n utcParse: memoize(locale.utcParse)\n };\n}\nvar defaultTimeLocale;\nresetTimeFormatDefaultLocale();\nfunction resetTimeFormatDefaultLocale() {\n return defaultTimeLocale = timeLocale({\n format: timeFormat,\n parse: timeParse,\n utcFormat: utcFormat,\n utcParse: utcParse\n });\n}\nfunction timeFormatLocale(definition) {\n return timeLocale(timeFormatLocale$1(definition));\n}\nfunction timeFormatDefaultLocale(definition) {\n return arguments.length ? defaultTimeLocale = timeFormatLocale(definition) : defaultTimeLocale;\n}\nvar createLocale = function createLocale(number, time) {\n return extend({}, number, time);\n};\nfunction locale(numberSpec, timeSpec) {\n var number = numberSpec ? numberFormatLocale(numberSpec) : numberFormatDefaultLocale();\n var time = timeSpec ? timeFormatLocale(timeSpec) : timeFormatDefaultLocale();\n return createLocale(number, time);\n}\nfunction defaultLocale(numberSpec, timeSpec) {\n var args = arguments.length;\n if (args && args !== 2) {\n error('defaultLocale expects either zero or two arguments.');\n }\n return args ? createLocale(numberFormatDefaultLocale(numberSpec), timeFormatDefaultLocale(timeSpec)) : createLocale(numberFormatDefaultLocale(), timeFormatDefaultLocale());\n}\nfunction resetDefaultLocale() {\n resetNumberFormatDefaultLocale();\n resetTimeFormatDefaultLocale();\n return defaultLocale();\n}\nexport { defaultLocale, locale, numberFormatDefaultLocale, numberFormatLocale, resetDefaultLocale, resetNumberFormatDefaultLocale, resetTimeFormatDefaultLocale, timeFormatDefaultLocale, timeFormatLocale };","import exponent from \"./exponent.js\";\nexport default function (step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}","import exponent from \"./exponent.js\";\nexport default function (step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}","import exponent from \"./exponent.js\";\nexport default function (step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _asyncToGenerator from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\";\nimport _regeneratorRuntime from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/regenerator/index.js\";\nimport { extend, error, stringValue, isFunction, toBoolean, toNumber, toDate, toString, identity, field, isObject, isArray, isIterable, hasOwnProperty } from 'vega-util';\nimport { dsvFormat } from 'd3-dsv';\nimport { feature, mesh } from 'topojson-client';\nimport { timeFormatDefaultLocale } from 'vega-format';\n\n// Matches absolute URLs with optional protocol\n// https://... file://... //...\nvar protocol_re = /^(data:|([A-Za-z]+:)?\\/\\/)/;\n\n// Matches allowed URIs. From https://github.com/cure53/DOMPurify/blob/master/src/regexp.js with added file://\nvar allowed_re = /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i; // eslint-disable-line no-useless-escape\nvar whitespace_re = /[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205f\\u3000]/g; // eslint-disable-line no-control-regex\n\n// Special treatment in node.js for the file: protocol\nvar fileProtocol = 'file://';\n\n/**\n * Factory for a loader constructor that provides methods for requesting\n * files from either the network or disk, and for sanitizing request URIs.\n * @param {function} fetch - The Fetch API for HTTP network requests.\n * If null or undefined, HTTP loading will be disabled.\n * @param {object} fs - The file system interface for file loading.\n * If null or undefined, local file loading will be disabled.\n * @return {function} A loader constructor with the following signature:\n * param {object} [options] - Optional default loading options to use.\n * return {object} - A new loader instance.\n */\nfunction loaderFactory(fetch, fs) {\n return function (options) {\n return {\n options: options || {},\n sanitize: sanitize,\n load: load,\n fileAccess: !!fs,\n file: fileLoader(fs),\n http: httpLoader(fetch)\n };\n };\n}\n\n/**\n * Load an external resource, typically either from the web or from the local\n * filesystem. This function uses {@link sanitize} to first sanitize the uri,\n * then calls either {@link http} (for web requests) or {@link file} (for\n * filesystem loading).\n * @param {string} uri - The resource indicator (e.g., URL or filename).\n * @param {object} [options] - Optional loading options. These options will\n * override any existing default options.\n * @return {Promise} - A promise that resolves to the loaded content.\n */\nfunction load(_x, _x2) {\n return _load.apply(this, arguments);\n}\n/**\n * URI sanitizer function.\n * @param {string} uri - The uri (url or filename) to check.\n * @param {object} options - An options hash.\n * @return {Promise} - A promise that resolves to an object containing\n * sanitized uri data, or rejects it the input uri is deemed invalid.\n * The properties of the resolved object are assumed to be\n * valid attributes for an HTML 'a' tag. The sanitized uri *must* be\n * provided by the 'href' property of the returned object.\n */\nfunction _load() {\n _load = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(uri, options) {\n var opt, url;\n return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.sanitize(uri, options);\n case 2:\n opt = _context2.sent;\n url = opt.href;\n return _context2.abrupt(\"return\", opt.localFile ? this.file(url) : this.http(url, options));\n case 5:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n return _load.apply(this, arguments);\n}\nfunction sanitize(_x3, _x4) {\n return _sanitize.apply(this, arguments);\n}\n/**\n * File system loader factory.\n * @param {object} fs - The file system interface.\n * @return {function} - A file loader with the following signature:\n * param {string} filename - The file system path to load.\n * param {string} filename - The file system path to load.\n * return {Promise} A promise that resolves to the file contents.\n */\nfunction _sanitize() {\n _sanitize = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(uri, options) {\n var fileAccess, result, isFile, loadFile, base, isAllowed, hasProtocol;\n return _regeneratorRuntime.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n options = extend({}, this.options, options);\n fileAccess = this.fileAccess, result = {\n href: null\n };\n isAllowed = allowed_re.test(uri.replace(whitespace_re, ''));\n if (uri == null || typeof uri !== 'string' || !isAllowed) {\n error('Sanitize failure, invalid URI: ' + stringValue(uri));\n }\n hasProtocol = protocol_re.test(uri); // if relative url (no protocol/host), prepend baseURL\n if ((base = options.baseURL) && !hasProtocol) {\n // Ensure that there is a slash between the baseURL (e.g. hostname) and url\n if (!uri.startsWith('/') && !base.endsWith('/')) {\n uri = '/' + uri;\n }\n uri = base + uri;\n }\n\n // should we load from file system?\n loadFile = (isFile = uri.startsWith(fileProtocol)) || options.mode === 'file' || options.mode !== 'http' && !hasProtocol && fileAccess;\n if (isFile) {\n // strip file protocol\n uri = uri.slice(fileProtocol.length);\n } else if (uri.startsWith('//')) {\n if (options.defaultProtocol === 'file') {\n // if is file, strip protocol and set loadFile flag\n uri = uri.slice(2);\n loadFile = true;\n } else {\n // if relative protocol (starts with '//'), prepend default protocol\n uri = (options.defaultProtocol || 'http') + ':' + uri;\n }\n }\n\n // set non-enumerable mode flag to indicate local file load\n Object.defineProperty(result, 'localFile', {\n value: !!loadFile\n });\n\n // set uri\n result.href = uri;\n\n // set default result target, if specified\n if (options.target) {\n result.target = options.target + '';\n }\n\n // set default result rel, if specified (#1542)\n if (options.rel) {\n result.rel = options.rel + '';\n }\n\n // provide control over cross-origin image handling (#2238)\n // https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image\n if (options.context === 'image' && options.crossOrigin) {\n result.crossOrigin = options.crossOrigin + '';\n }\n\n // return\n return _context3.abrupt(\"return\", result);\n case 14:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n return _sanitize.apply(this, arguments);\n}\nfunction fileLoader(fs) {\n return fs ? function (filename) {\n return new Promise(function (accept, reject) {\n fs.readFile(filename, function (error, data) {\n if (error) reject(error);else accept(data);\n });\n });\n } : fileReject;\n}\n\n/**\n * Default file system loader that simply rejects.\n */\nfunction fileReject() {\n return _fileReject.apply(this, arguments);\n}\n/**\n * HTTP request handler factory.\n * @param {function} fetch - The Fetch API method.\n * @return {function} - An http loader with the following signature:\n * param {string} url - The url to request.\n * param {object} options - An options hash.\n * return {Promise} - A promise that resolves to the file contents.\n */\nfunction _fileReject() {\n _fileReject = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4() {\n return _regeneratorRuntime.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n error('No file system access.');\n case 1:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4);\n }));\n return _fileReject.apply(this, arguments);\n}\nfunction httpLoader(fetch) {\n return fetch ? /*#__PURE__*/function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(url, options) {\n var opt, type, response;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n opt = extend({}, this.options.http, options);\n type = options && options.response;\n _context.next = 4;\n return fetch(url, opt);\n case 4:\n response = _context.sent;\n return _context.abrupt(\"return\", !response.ok ? error(response.status + '' + response.statusText) : isFunction(response[type]) ? response[type]() : response.text());\n case 6:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n return function (_x5, _x6) {\n return _ref.apply(this, arguments);\n };\n }() : httpReject;\n}\n\n/**\n * Default http request handler that simply rejects.\n */\nfunction httpReject() {\n return _httpReject.apply(this, arguments);\n}\nfunction _httpReject() {\n _httpReject = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5() {\n return _regeneratorRuntime.wrap(function _callee5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n error('No HTTP fetch method available.');\n case 1:\n case \"end\":\n return _context5.stop();\n }\n }, _callee5);\n }));\n return _httpReject.apply(this, arguments);\n}\nvar isValid = function isValid(_) {\n return _ != null && _ === _;\n};\nvar isBoolean = function isBoolean(_) {\n return _ === 'true' || _ === 'false' || _ === true || _ === false;\n};\nvar isDate = function isDate(_) {\n return !Number.isNaN(Date.parse(_));\n};\nvar isNumber = function isNumber(_) {\n return !Number.isNaN(+_) && !(_ instanceof Date);\n};\nvar isInteger = function isInteger(_) {\n return isNumber(_) && Number.isInteger(+_);\n};\nvar typeParsers = {\n boolean: toBoolean,\n integer: toNumber,\n number: toNumber,\n date: toDate,\n string: toString,\n unknown: identity\n};\nvar typeTests = [isBoolean, isInteger, isNumber, isDate];\nvar typeList = ['boolean', 'integer', 'number', 'date'];\nfunction inferType(values, field) {\n if (!values || !values.length) return 'unknown';\n var n = values.length,\n m = typeTests.length,\n a = typeTests.map(function (_, i) {\n return i + 1;\n });\n for (var i = 0, t = 0, j, value; i < n; ++i) {\n value = field ? values[i][field] : values[i];\n for (j = 0; j < m; ++j) {\n if (a[j] && isValid(value) && !typeTests[j](value)) {\n a[j] = 0;\n ++t;\n if (t === typeTests.length) return 'string';\n }\n }\n }\n return typeList[a.reduce(function (u, v) {\n return u === 0 ? v : u;\n }, 0) - 1];\n}\nfunction inferTypes(data, fields) {\n return fields.reduce(function (types, field) {\n types[field] = inferType(data, field);\n return types;\n }, {});\n}\nfunction delimitedFormat(delimiter) {\n var parse = function parse(data, format) {\n var delim = {\n delimiter: delimiter\n };\n return dsv(data, format ? extend(format, delim) : delim);\n };\n parse.responseType = 'text';\n return parse;\n}\nfunction dsv(data, format) {\n if (format.header) {\n data = format.header.map(stringValue).join(format.delimiter) + '\\n' + data;\n }\n return dsvFormat(format.delimiter).parse(data + '');\n}\ndsv.responseType = 'text';\nfunction isBuffer(_) {\n return typeof Buffer === 'function' && isFunction(Buffer.isBuffer) ? Buffer.isBuffer(_) : false;\n}\nfunction json(data, format) {\n var prop = format && format.property ? field(format.property) : identity;\n return isObject(data) && !isBuffer(data) ? parseJSON(prop(data), format) : prop(JSON.parse(data));\n}\njson.responseType = 'json';\nfunction parseJSON(data, format) {\n if (!isArray(data) && isIterable(data)) {\n data = _toConsumableArray(data);\n }\n return format && format.copy ? JSON.parse(JSON.stringify(data)) : data;\n}\nvar filters = {\n interior: function interior(a, b) {\n return a !== b;\n },\n exterior: function exterior(a, b) {\n return a === b;\n }\n};\nfunction topojson(data, format) {\n var method, object, property, filter;\n data = json(data, format);\n if (format && format.feature) {\n method = feature;\n property = format.feature;\n } else if (format && format.mesh) {\n method = mesh;\n property = format.mesh;\n filter = filters[format.filter];\n } else {\n error('Missing TopoJSON feature or mesh parameter.');\n }\n object = (object = data.objects[property]) ? method(data, object, filter) : error('Invalid TopoJSON object: ' + property);\n return object && object.features || [object];\n}\ntopojson.responseType = 'json';\nvar format = {\n dsv: dsv,\n csv: delimitedFormat(','),\n tsv: delimitedFormat('\\t'),\n json: json,\n topojson: topojson\n};\nfunction formats(name, reader) {\n if (arguments.length > 1) {\n format[name] = reader;\n return this;\n } else {\n return hasOwnProperty(format, name) ? format[name] : null;\n }\n}\nfunction responseType(type) {\n var f = formats(type);\n return f && f.responseType || 'text';\n}\nfunction read(data, schema, timeParser, utcParser) {\n schema = schema || {};\n var reader = formats(schema.type || 'json');\n if (!reader) error('Unknown data format type: ' + schema.type);\n data = reader(data, schema);\n if (schema.parse) parse(data, schema.parse, timeParser, utcParser);\n if (hasOwnProperty(data, 'columns')) delete data.columns;\n return data;\n}\nfunction parse(data, types, timeParser, utcParser) {\n if (!data.length) return; // early exit for empty data\n\n var locale = timeFormatDefaultLocale();\n timeParser = timeParser || locale.timeParse;\n utcParser = utcParser || locale.utcParse;\n var fields = data.columns || Object.keys(data[0]),\n datum,\n field,\n i,\n j,\n n,\n m;\n if (types === 'auto') types = inferTypes(data, fields);\n fields = Object.keys(types);\n var parsers = fields.map(function (field) {\n var type = types[field];\n var parts, pattern;\n if (type && (type.startsWith('date:') || type.startsWith('utc:'))) {\n parts = type.split(/:(.+)?/, 2); // split on first :\n pattern = parts[1];\n if (pattern[0] === '\\'' && pattern[pattern.length - 1] === '\\'' || pattern[0] === '\"' && pattern[pattern.length - 1] === '\"') {\n pattern = pattern.slice(1, -1);\n }\n var _parse = parts[0] === 'utc' ? utcParser : timeParser;\n return _parse(pattern);\n }\n if (!typeParsers[type]) {\n throw Error('Illegal format pattern: ' + field + ':' + type);\n }\n return typeParsers[type];\n });\n for (i = 0, n = data.length, m = fields.length; i < n; ++i) {\n datum = data[i];\n for (j = 0; j < m; ++j) {\n field = fields[j];\n datum[field] = parsers[j](datum[field]);\n }\n }\n}\nvar loader = loaderFactory(typeof fetch !== 'undefined' && fetch,\n// use built-in fetch API\nnull // no file system access\n);\n\nexport { format, formats, inferType, inferTypes, loader, read, responseType, typeParsers };","import _asyncToGenerator from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\";\nimport _regeneratorRuntime from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/regenerator/index.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { identity, array, isFunction, constant, isArray, id, error, truthy, debounce as _debounce, extend, visitArray, inherits, logger, Error, hasOwnProperty } from 'vega-util';\nimport { read, responseType, loader } from 'vega-loader';\nimport { defaultLocale } from 'vega-format';\nfunction UniqueList(idFunc) {\n var $ = idFunc || identity,\n list = [],\n ids = {};\n list.add = function (_) {\n var id = $(_);\n if (!ids[id]) {\n ids[id] = 1;\n list.push(_);\n }\n return list;\n };\n list.remove = function (_) {\n var id = $(_);\n if (ids[id]) {\n ids[id] = 0;\n var idx = list.indexOf(_);\n if (idx >= 0) list.splice(idx, 1);\n }\n return list;\n };\n return list;\n}\n\n/**\n * Invoke and await a potentially async callback function. If\n * an error occurs, trap it and route to Dataflow.error.\n * @param {Dataflow} df - The dataflow instance\n * @param {function} callback - A callback function to invoke\n * and then await. The dataflow will be passed as the single\n * argument to the function.\n */\nfunction asyncCallback(_x, _x2) {\n return _asyncCallback.apply(this, arguments);\n}\nfunction _asyncCallback() {\n _asyncCallback = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(df, callback) {\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n _context.prev = 0;\n _context.next = 3;\n return callback(df);\n case 3:\n _context.next = 8;\n break;\n case 5:\n _context.prev = 5;\n _context.t0 = _context[\"catch\"](0);\n df.error(_context.t0);\n case 8:\n case \"end\":\n return _context.stop();\n }\n }, _callee, null, [[0, 5]]);\n }));\n return _asyncCallback.apply(this, arguments);\n}\nvar TUPLE_ID_KEY = Symbol('vega_id');\nvar TUPLE_ID = 1;\n\n/**\n * Checks if an input value is a registered tuple.\n * @param {*} t - The value to check.\n * @return {boolean} True if the input is a tuple, false otherwise.\n */\nfunction isTuple(t) {\n return !!(t && tupleid(t));\n}\n\n/**\n * Returns the id of a tuple.\n * @param {object} t - The input tuple.\n * @return {*} the tuple id.\n */\nfunction tupleid(t) {\n return t[TUPLE_ID_KEY];\n}\n\n/**\n * Sets the id of a tuple.\n * @param {object} t - The input tuple.\n * @param {*} id - The id value to set.\n * @return {object} the input tuple.\n */\nfunction setid(t, id) {\n t[TUPLE_ID_KEY] = id;\n return t;\n}\n\n/**\n * Ingest an object or value as a data tuple.\n * If the input value is an object, an id field will be added to it. For\n * efficiency, the input object is modified directly. A copy is not made.\n * If the input value is a literal, it will be wrapped in a new object\n * instance, with the value accessible as the 'data' property.\n * @param datum - The value to ingest.\n * @return {object} The ingested data tuple.\n */\nfunction ingest$1(datum) {\n var t = datum === Object(datum) ? datum : {\n data: datum\n };\n return tupleid(t) ? t : setid(t, TUPLE_ID++);\n}\n\n/**\n * Given a source tuple, return a derived copy.\n * @param {object} t - The source tuple.\n * @return {object} The derived tuple.\n */\nfunction derive(t) {\n return rederive(t, ingest$1({}));\n}\n\n/**\n * Rederive a derived tuple by copying values from the source tuple.\n * @param {object} t - The source tuple.\n * @param {object} d - The derived tuple.\n * @return {object} The derived tuple.\n */\nfunction rederive(t, d) {\n for (var k in t) d[k] = t[k];\n return d;\n}\n\n/**\n * Replace an existing tuple with a new tuple.\n * @param {object} t - The existing data tuple.\n * @param {object} d - The new tuple that replaces the old.\n * @return {object} The new tuple.\n */\nfunction replace(t, d) {\n return setid(d, tupleid(t));\n}\n\n/**\n * Generate an augmented comparator function that provides stable\n * sorting by tuple id when the given comparator produces ties.\n * @param {function} cmp - The comparator to augment.\n * @param {function} [f] - Optional tuple accessor function.\n * @return {function} An augmented comparator function.\n */\nfunction stableCompare(cmp, f) {\n return !cmp ? null : f ? function (a, b) {\n return cmp(a, b) || tupleid(f(a)) - tupleid(f(b));\n } : function (a, b) {\n return cmp(a, b) || tupleid(a) - tupleid(b);\n };\n}\nfunction isChangeSet(v) {\n return v && v.constructor === changeset;\n}\nfunction changeset() {\n var add = [],\n // insert tuples\n rem = [],\n // remove tuples\n mod = [],\n // modify tuples\n remp = [],\n // remove by predicate\n modp = []; // modify by predicate\n var _clean = null,\n _reflow = false;\n return {\n constructor: changeset,\n insert: function insert(t) {\n var d = array(t),\n n = d.length;\n for (var i = 0; i < n; ++i) add.push(d[i]);\n return this;\n },\n remove: function remove(t) {\n var a = isFunction(t) ? remp : rem,\n d = array(t),\n n = d.length;\n for (var i = 0; i < n; ++i) a.push(d[i]);\n return this;\n },\n modify: function modify(t, field, value) {\n var m = {\n field: field,\n value: constant(value)\n };\n if (isFunction(t)) {\n m.filter = t;\n modp.push(m);\n } else {\n m.tuple = t;\n mod.push(m);\n }\n return this;\n },\n encode: function encode(t, set) {\n if (isFunction(t)) modp.push({\n filter: t,\n field: set\n });else mod.push({\n tuple: t,\n field: set\n });\n return this;\n },\n clean: function clean(value) {\n _clean = value;\n return this;\n },\n reflow: function reflow() {\n _reflow = true;\n return this;\n },\n pulse: function pulse(_pulse, tuples) {\n var cur = {},\n out = {};\n var i, n, m, f, t, id;\n\n // build lookup table of current tuples\n for (i = 0, n = tuples.length; i < n; ++i) {\n cur[tupleid(tuples[i])] = 1;\n }\n\n // process individual tuples to remove\n for (i = 0, n = rem.length; i < n; ++i) {\n t = rem[i];\n cur[tupleid(t)] = -1;\n }\n\n // process predicate-based removals\n for (i = 0, n = remp.length; i < n; ++i) {\n f = remp[i];\n tuples.forEach(function (t) {\n if (f(t)) cur[tupleid(t)] = -1;\n });\n }\n\n // process all add tuples\n for (i = 0, n = add.length; i < n; ++i) {\n t = add[i];\n id = tupleid(t);\n if (cur[id]) {\n // tuple already resides in dataset\n // if flagged for both add and remove, cancel\n cur[id] = 1;\n } else {\n // tuple does not reside in dataset, add\n _pulse.add.push(ingest$1(add[i]));\n }\n }\n\n // populate pulse rem list\n for (i = 0, n = tuples.length; i < n; ++i) {\n t = tuples[i];\n if (cur[tupleid(t)] < 0) _pulse.rem.push(t);\n }\n\n // modify helper method\n function modify(t, f, v) {\n if (v) {\n t[f] = v(t);\n } else {\n _pulse.encode = f;\n }\n if (!_reflow) out[tupleid(t)] = t;\n }\n\n // process individual tuples to modify\n for (i = 0, n = mod.length; i < n; ++i) {\n m = mod[i];\n t = m.tuple;\n f = m.field;\n id = cur[tupleid(t)];\n if (id > 0) {\n modify(t, f, m.value);\n _pulse.modifies(f);\n }\n }\n\n // process predicate-based modifications\n for (i = 0, n = modp.length; i < n; ++i) {\n m = modp[i];\n f = m.filter;\n tuples.forEach(function (t) {\n if (f(t) && cur[tupleid(t)] > 0) {\n modify(t, m.field, m.value);\n }\n });\n _pulse.modifies(m.field);\n }\n\n // upon reflow request, populate mod with all non-removed tuples\n // otherwise, populate mod with modified tuples only\n if (_reflow) {\n _pulse.mod = rem.length || remp.length ? tuples.filter(function (t) {\n return cur[tupleid(t)] > 0;\n }) : tuples.slice();\n } else {\n for (id in out) _pulse.mod.push(out[id]);\n }\n\n // set pulse garbage collection request\n if (_clean || _clean == null && (rem.length || remp.length)) {\n _pulse.clean(true);\n }\n return _pulse;\n }\n };\n}\nvar CACHE = '_:mod:_';\n\n/**\n * Hash that tracks modifications to assigned values.\n * Callers *must* use the set method to update values.\n */\nfunction Parameters() {\n Object.defineProperty(this, CACHE, {\n writable: true,\n value: {}\n });\n}\nParameters.prototype = {\n /**\n * Set a parameter value. If the parameter value changes, the parameter\n * will be recorded as modified.\n * @param {string} name - The parameter name.\n * @param {number} index - The index into an array-value parameter. Ignored if\n * the argument is undefined, null or less than zero.\n * @param {*} value - The parameter value to set.\n * @param {boolean} [force=false] - If true, records the parameter as modified\n * even if the value is unchanged.\n * @return {Parameters} - This parameter object.\n */\n set: function set(name, index, value, force) {\n var o = this,\n v = o[name],\n mod = o[CACHE];\n if (index != null && index >= 0) {\n if (v[index] !== value || force) {\n v[index] = value;\n mod[index + ':' + name] = -1;\n mod[name] = -1;\n }\n } else if (v !== value || force) {\n o[name] = value;\n mod[name] = isArray(value) ? 1 + value.length : -1;\n }\n return o;\n },\n /**\n * Tests if one or more parameters has been modified. If invoked with no\n * arguments, returns true if any parameter value has changed. If the first\n * argument is array, returns trues if any parameter name in the array has\n * changed. Otherwise, tests if the given name and optional array index has\n * changed.\n * @param {string} name - The parameter name to test.\n * @param {number} [index=undefined] - The parameter array index to test.\n * @return {boolean} - Returns true if a queried parameter was modified.\n */\n modified: function modified(name, index) {\n var mod = this[CACHE];\n if (!arguments.length) {\n for (var k in mod) {\n if (mod[k]) return true;\n }\n return false;\n } else if (isArray(name)) {\n for (var _k = 0; _k < name.length; ++_k) {\n if (mod[name[_k]]) return true;\n }\n return false;\n }\n return index != null && index >= 0 ? index + 1 < mod[name] || !!mod[index + ':' + name] : !!mod[name];\n },\n /**\n * Clears the modification records. After calling this method,\n * all parameters are considered unmodified.\n */\n clear: function clear() {\n this[CACHE] = {};\n return this;\n }\n};\nvar OP_ID = 0;\nvar PULSE = 'pulse',\n NO_PARAMS = new Parameters();\n\n// Boolean Flags\nvar SKIP$1 = 1,\n MODIFIED = 2;\n\n/**\n * An Operator is a processing node in a dataflow graph.\n * Each operator stores a value and an optional value update function.\n * Operators can accept a hash of named parameters. Parameter values can\n * either be direct (JavaScript literals, arrays, objects) or indirect\n * (other operators whose values will be pulled dynamically). Operators\n * included as parameters will have this operator added as a dependency.\n * @constructor\n * @param {*} [init] - The initial value for this operator.\n * @param {function(object, Pulse)} [update] - An update function. Upon\n * evaluation of this operator, the update function will be invoked and the\n * return value will be used as the new value of this operator.\n * @param {object} [params] - The parameters for this operator.\n * @param {boolean} [react=true] - Flag indicating if this operator should\n * listen for changes to upstream operators included as parameters.\n * @see parameters\n */\nfunction Operator(init, update, params, react) {\n this.id = ++OP_ID;\n this.value = init;\n this.stamp = -1;\n this.rank = -1;\n this.qrank = -1;\n this.flags = 0;\n if (update) {\n this._update = update;\n }\n if (params) this.parameters(params, react);\n}\nfunction flag(bit) {\n return function (state) {\n var f = this.flags;\n if (arguments.length === 0) return !!(f & bit);\n this.flags = state ? f | bit : f & ~bit;\n return this;\n };\n}\nOperator.prototype = {\n /**\n * Returns a list of target operators dependent on this operator.\n * If this list does not exist, it is created and then returned.\n * @return {UniqueList}\n */\n targets: function targets() {\n return this._targets || (this._targets = UniqueList(id));\n },\n /**\n * Sets the value of this operator.\n * @param {*} value - the value to set.\n * @return {Number} Returns 1 if the operator value has changed\n * according to strict equality, returns 0 otherwise.\n */\n set: function set(value) {\n if (this.value !== value) {\n this.value = value;\n return 1;\n } else {\n return 0;\n }\n },\n /**\n * Indicates that operator evaluation should be skipped on the next pulse.\n * This operator will still propagate incoming pulses, but its update function\n * will not be invoked. The skip flag is reset after every pulse, so calling\n * this method will affect processing of the next pulse only.\n */\n skip: flag(SKIP$1),\n /**\n * Indicates that this operator's value has been modified on its most recent\n * pulse. Normally modification is checked via strict equality; however, in\n * some cases it is more efficient to update the internal state of an object.\n * In those cases, the modified flag can be used to trigger propagation. Once\n * set, the modification flag persists across pulses until unset. The flag can\n * be used with the last timestamp to test if a modification is recent.\n */\n modified: flag(MODIFIED),\n /**\n * Sets the parameters for this operator. The parameter values are analyzed for\n * operator instances. If found, this operator will be added as a dependency\n * of the parameterizing operator. Operator values are dynamically marshalled\n * from each operator parameter prior to evaluation. If a parameter value is\n * an array, the array will also be searched for Operator instances. However,\n * the search does not recurse into sub-arrays or object properties.\n * @param {object} params - A hash of operator parameters.\n * @param {boolean} [react=true] - A flag indicating if this operator should\n * automatically update (react) when parameter values change. In other words,\n * this flag determines if the operator registers itself as a listener on\n * any upstream operators included in the parameters.\n * @param {boolean} [initonly=false] - A flag indicating if this operator\n * should calculate an update only upon its initial evaluation, then\n * deregister dependencies and suppress all future update invocations.\n * @return {Operator[]} - An array of upstream dependencies.\n */\n parameters: function parameters(params, react, initonly) {\n var _this = this;\n react = react !== false;\n var argval = this._argval = this._argval || new Parameters(),\n argops = this._argops = this._argops || [],\n deps = [];\n var name, value, n, i;\n var add = function add(name, index, value) {\n if (value instanceof Operator) {\n if (value !== _this) {\n if (react) value.targets().add(_this);\n deps.push(value);\n }\n argops.push({\n op: value,\n name: name,\n index: index\n });\n } else {\n argval.set(name, index, value);\n }\n };\n for (name in params) {\n value = params[name];\n if (name === PULSE) {\n array(value).forEach(function (op) {\n if (!(op instanceof Operator)) {\n error('Pulse parameters must be operator instances.');\n } else if (op !== _this) {\n op.targets().add(_this);\n deps.push(op);\n }\n });\n this.source = value;\n } else if (isArray(value)) {\n argval.set(name, -1, Array(n = value.length));\n for (i = 0; i < n; ++i) add(name, i, value[i]);\n } else {\n add(name, -1, value);\n }\n }\n this.marshall().clear(); // initialize values\n if (initonly) argops.initonly = true;\n return deps;\n },\n /**\n * Internal method for marshalling parameter values.\n * Visits each operator dependency to pull the latest value.\n * @return {Parameters} A Parameters object to pass to the update function.\n */\n marshall: function marshall(stamp) {\n var argval = this._argval || NO_PARAMS,\n argops = this._argops;\n var item, i, op, mod;\n if (argops) {\n var n = argops.length;\n for (i = 0; i < n; ++i) {\n item = argops[i];\n op = item.op;\n mod = op.modified() && op.stamp === stamp;\n argval.set(item.name, item.index, op.value, mod);\n }\n if (argops.initonly) {\n for (i = 0; i < n; ++i) {\n item = argops[i];\n item.op.targets().remove(this);\n }\n this._argops = null;\n this._update = null;\n }\n }\n return argval;\n },\n /**\n * Detach this operator from the dataflow.\n * Unregisters listeners on upstream dependencies.\n */\n detach: function detach() {\n var argops = this._argops;\n var i, n, item, op;\n if (argops) {\n for (i = 0, n = argops.length; i < n; ++i) {\n item = argops[i];\n op = item.op;\n if (op._targets) {\n op._targets.remove(this);\n }\n }\n }\n\n // remove references to the source and pulse object,\n // if present, to prevent memory leaks of old data.\n this.pulse = null;\n this.source = null;\n },\n /**\n * Delegate method to perform operator processing.\n * Subclasses can override this method to perform custom processing.\n * By default, it marshalls parameters and calls the update function\n * if that function is defined. If the update function does not\n * change the operator value then StopPropagation is returned.\n * If no update function is defined, this method does nothing.\n * @param {Pulse} pulse - the current dataflow pulse.\n * @return The output pulse or StopPropagation. A falsy return value\n * (including undefined) will let the input pulse pass through.\n */\n evaluate: function evaluate(pulse) {\n var update = this._update;\n if (update) {\n var params = this.marshall(pulse.stamp),\n v = update.call(this, params, pulse);\n params.clear();\n if (v !== this.value) {\n this.value = v;\n } else if (!this.modified()) {\n return pulse.StopPropagation;\n }\n }\n },\n /**\n * Run this operator for the current pulse. If this operator has already\n * been run at (or after) the pulse timestamp, returns StopPropagation.\n * Internally, this method calls {@link evaluate} to perform processing.\n * If {@link evaluate} returns a falsy value, the input pulse is returned.\n * This method should NOT be overridden, instead overrride {@link evaluate}.\n * @param {Pulse} pulse - the current dataflow pulse.\n * @return the output pulse for this operator (or StopPropagation)\n */\n run: function run(pulse) {\n if (pulse.stamp < this.stamp) return pulse.StopPropagation;\n var rv;\n if (this.skip()) {\n this.skip(false);\n rv = 0;\n } else {\n rv = this.evaluate(pulse);\n }\n return this.pulse = rv || pulse;\n }\n};\n\n/**\n * Add an operator to the dataflow graph. This function accepts a\n * variety of input argument types. The basic signature supports an\n * initial value, update function and parameters. If the first parameter\n * is an Operator instance, it will be added directly. If it is a\n * constructor for an Operator subclass, a new instance will be instantiated.\n * Otherwise, if the first parameter is a function instance, it will be used\n * as the update function and a null initial value is assumed.\n * @param {*} init - One of: the operator to add, the initial value of\n * the operator, an operator class to instantiate, or an update function.\n * @param {function} [update] - The operator update function.\n * @param {object} [params] - The operator parameters.\n * @param {boolean} [react=true] - Flag indicating if this operator should\n * listen for changes to upstream operators included as parameters.\n * @return {Operator} - The added operator.\n */\nfunction add(init, update, params, react) {\n var shift = 1,\n op;\n if (init instanceof Operator) {\n op = init;\n } else if (init && init.prototype instanceof Operator) {\n op = new init();\n } else if (isFunction(init)) {\n op = new Operator(null, init);\n } else {\n shift = 0;\n op = new Operator(init, update);\n }\n this.rank(op);\n if (shift) {\n react = params;\n params = update;\n }\n if (params) this.connect(op, op.parameters(params, react));\n this.touch(op);\n return op;\n}\n\n/**\n * Connect a target operator as a dependent of source operators.\n * If necessary, this method will rerank the target operator and its\n * dependents to ensure propagation proceeds in a topologically sorted order.\n * @param {Operator} target - The target operator.\n * @param {Array} - The source operators that should propagate\n * to the target operator.\n */\nfunction connect(target, sources) {\n var targetRank = target.rank,\n n = sources.length;\n for (var i = 0; i < n; ++i) {\n if (targetRank < sources[i].rank) {\n this.rerank(target);\n return;\n }\n }\n}\nvar STREAM_ID = 0;\n\n/**\n * Models an event stream.\n * @constructor\n * @param {function(Object, number): boolean} [filter] - Filter predicate.\n * Events pass through when truthy, events are suppressed when falsy.\n * @param {function(Object): *} [apply] - Applied to input events to produce\n * new event values.\n * @param {function(Object)} [receive] - Event callback function to invoke\n * upon receipt of a new event. Use to override standard event processing.\n */\nfunction EventStream(filter, apply, receive) {\n this.id = ++STREAM_ID;\n this.value = null;\n if (receive) this.receive = receive;\n if (filter) this._filter = filter;\n if (apply) this._apply = apply;\n}\n\n/**\n * Creates a new event stream instance with the provided\n * (optional) filter, apply and receive functions.\n * @param {function(Object, number): boolean} [filter] - Filter predicate.\n * Events pass through when truthy, events are suppressed when falsy.\n * @param {function(Object): *} [apply] - Applied to input events to produce\n * new event values.\n * @see EventStream\n */\nfunction stream(filter, apply, receive) {\n return new EventStream(filter, apply, receive);\n}\nEventStream.prototype = {\n _filter: truthy,\n _apply: identity,\n targets: function targets() {\n return this._targets || (this._targets = UniqueList(id));\n },\n consume: function consume(_) {\n if (!arguments.length) return !!this._consume;\n this._consume = !!_;\n return this;\n },\n receive: function receive(evt) {\n if (this._filter(evt)) {\n var val = this.value = this._apply(evt),\n trg = this._targets,\n n = trg ? trg.length : 0;\n for (var i = 0; i < n; ++i) trg[i].receive(val);\n if (this._consume) {\n evt.preventDefault();\n evt.stopPropagation();\n }\n }\n },\n filter: function filter(_filter) {\n var s = stream(_filter);\n this.targets().add(s);\n return s;\n },\n apply: function apply(_apply) {\n var s = stream(null, _apply);\n this.targets().add(s);\n return s;\n },\n merge: function merge() {\n var s = stream();\n this.targets().add(s);\n for (var i = 0, n = arguments.length; i < n; ++i) {\n arguments[i].targets().add(s);\n }\n return s;\n },\n throttle: function throttle(pause) {\n var t = -1;\n return this.filter(function () {\n var now = Date.now();\n if (now - t > pause) {\n t = now;\n return 1;\n } else {\n return 0;\n }\n });\n },\n debounce: function debounce(delay) {\n var s = stream();\n this.targets().add(stream(null, null, _debounce(delay, function (e) {\n var df = e.dataflow;\n s.receive(e);\n if (df && df.run) df.run();\n })));\n return s;\n },\n between: function between(a, b) {\n var active = false;\n a.targets().add(stream(null, null, function () {\n return active = true;\n }));\n b.targets().add(stream(null, null, function () {\n return active = false;\n }));\n return this.filter(function () {\n return active;\n });\n },\n detach: function detach() {\n // ensures compatibility with operators (#2753)\n // remove references to other streams and filter functions that may\n // be bound to subcontexts that need to be garbage collected.\n this._filter = truthy;\n this._targets = null;\n }\n};\n\n/**\n * Create a new event stream from an event source.\n * @param {object} source - The event source to monitor. The input must\n * support the addEventListener method.\n * @param {string} type - The event type.\n * @param {function(object): boolean} [filter] - Event filter function.\n * @param {function(object): *} [apply] - Event application function.\n * If provided, this function will be invoked and the result will be\n * used as the downstream event value.\n * @return {EventStream}\n */\nfunction events(source, type, filter, apply) {\n var df = this,\n s = stream(filter, apply),\n send = function send(e) {\n e.dataflow = df;\n try {\n s.receive(e);\n } catch (error) {\n df.error(error);\n } finally {\n df.run();\n }\n };\n var sources;\n if (typeof source === 'string' && typeof document !== 'undefined') {\n sources = document.querySelectorAll(source);\n } else {\n sources = array(source);\n }\n var n = sources.length;\n for (var i = 0; i < n; ++i) {\n sources[i].addEventListener(type, send);\n }\n return s;\n}\nfunction parse(data, format) {\n var locale = this.locale();\n return read(data, format, locale.timeParse, locale.utcParse);\n}\n\n/**\n * Ingests new data into the dataflow. First parses the data using the\n * vega-loader read method, then pulses a changeset to the target operator.\n * @param {Operator} target - The Operator to target with ingested data,\n * typically a Collect transform instance.\n * @param {*} data - The input data, prior to parsing. For JSON this may\n * be a string or an object. For CSV, TSV, etc should be a string.\n * @param {object} format - The data format description for parsing\n * loaded data. This object is passed to the vega-loader read method.\n * @returns {Dataflow}\n */\nfunction ingest(target, data, format) {\n data = this.parse(data, format);\n return this.pulse(target, this.changeset().insert(data));\n}\n\n/**\n * Request data from an external source, parse it, and return a Promise.\n * @param {string} url - The URL from which to load the data. This string\n * is passed to the vega-loader load method.\n * @param {object} [format] - The data format description for parsing\n * loaded data. This object is passed to the vega-loader read method.\n * @return {Promise} A Promise that resolves upon completion of the request.\n * The resolved object contains the following properties:\n * - data: an array of parsed data (or null upon error)\n * - status: a code for success (0), load fail (-1), or parse fail (-2)\n */\nfunction request(_x3, _x4) {\n return _request.apply(this, arguments);\n}\nfunction _request() {\n _request = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(url, format) {\n var df, status, data;\n return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n df = this;\n status = 0;\n _context2.prev = 2;\n _context2.next = 5;\n return df.loader().load(url, {\n context: 'dataflow',\n response: responseType(format && format.type)\n });\n case 5:\n data = _context2.sent;\n try {\n data = df.parse(data, format);\n } catch (err) {\n status = -2;\n df.warn('Data ingestion failed', url, err);\n }\n _context2.next = 13;\n break;\n case 9:\n _context2.prev = 9;\n _context2.t0 = _context2[\"catch\"](2);\n status = -1;\n df.warn('Loading failed', url, _context2.t0);\n case 13:\n return _context2.abrupt(\"return\", {\n data: data,\n status: status\n });\n case 14:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this, [[2, 9]]);\n }));\n return _request.apply(this, arguments);\n}\nfunction preload(_x5, _x6, _x7) {\n return _preload.apply(this, arguments);\n}\nfunction _preload() {\n _preload = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(target, url, format) {\n var df, pending, res;\n return _regeneratorRuntime.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n df = this, pending = df._pending || loadPending(df);\n pending.requests += 1;\n _context3.next = 4;\n return df.request(url, format);\n case 4:\n res = _context3.sent;\n df.pulse(target, df.changeset().remove(truthy).insert(res.data || []));\n pending.done();\n return _context3.abrupt(\"return\", res);\n case 8:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n return _preload.apply(this, arguments);\n}\nfunction loadPending(df) {\n var accept;\n var pending = new Promise(function (a) {\n return accept = a;\n });\n pending.requests = 0;\n pending.done = function () {\n if (--pending.requests === 0) {\n df._pending = null;\n accept(df);\n }\n };\n return df._pending = pending;\n}\nvar SKIP = {\n skip: true\n};\n\n/**\n * Perform operator updates in response to events. Applies an\n * update function to compute a new operator value. If the update function\n * returns a {@link ChangeSet}, the operator will be pulsed with those tuple\n * changes. Otherwise, the operator value will be updated to the return value.\n * @param {EventStream|Operator} source - The event source to react to.\n * This argument can be either an EventStream or an Operator.\n * @param {Operator|function(object):Operator} target - The operator to update.\n * This argument can either be an Operator instance or (if the source\n * argument is an EventStream), a function that accepts an event object as\n * input and returns an Operator to target.\n * @param {function(Parameters,Event): *} [update] - Optional update function\n * to compute the new operator value, or a literal value to set. Update\n * functions expect to receive a parameter object and event as arguments.\n * This function can either return a new operator value or (if the source\n * argument is an EventStream) a {@link ChangeSet} instance to pulse\n * the target operator with tuple changes.\n * @param {object} [params] - The update function parameters.\n * @param {object} [options] - Additional options hash. If not overridden,\n * updated operators will be skipped by default.\n * @param {boolean} [options.skip] - If true, the operator will\n * be skipped: it will not be evaluated, but its dependents will be.\n * @param {boolean} [options.force] - If true, the operator will\n * be re-evaluated even if its value has not changed.\n * @return {Dataflow}\n */\nfunction on(source, target, update, params, options) {\n var fn = source instanceof Operator ? onOperator : onStream;\n fn(this, source, target, update, params, options);\n return this;\n}\nfunction onStream(df, stream, target, update, params, options) {\n var opt = extend({}, options, SKIP);\n var func, op;\n if (!isFunction(target)) target = constant(target);\n if (update === undefined) {\n func = function func(e) {\n return df.touch(target(e));\n };\n } else if (isFunction(update)) {\n op = new Operator(null, update, params, false);\n func = function func(e) {\n op.evaluate(e);\n var t = target(e),\n v = op.value;\n isChangeSet(v) ? df.pulse(t, v, options) : df.update(t, v, opt);\n };\n } else {\n func = function func(e) {\n return df.update(target(e), update, opt);\n };\n }\n stream.apply(func);\n}\nfunction onOperator(df, source, target, update, params, options) {\n if (update === undefined) {\n source.targets().add(target);\n } else {\n var opt = options || {},\n op = new Operator(null, updater(target, update), params, false);\n op.modified(opt.force);\n op.rank = source.rank; // immediately follow source\n source.targets().add(op); // add dependency\n\n if (target) {\n op.skip(true); // skip first invocation\n op.value = target.value; // initialize value\n op.targets().add(target); // chain dependencies\n df.connect(target, [op]); // rerank as needed, #1672\n }\n }\n}\n\nfunction updater(target, update) {\n update = isFunction(update) ? update : constant(update);\n return target ? function (_, pulse) {\n var value = update(_, pulse);\n if (!target.skip()) {\n target.skip(value !== this.value).value = value;\n }\n return value;\n } : update;\n}\n\n/**\n * Assigns a rank to an operator. Ranks are assigned in increasing order\n * by incrementing an internal rank counter.\n * @param {Operator} op - The operator to assign a rank.\n */\nfunction rank(op) {\n op.rank = ++this._rank;\n}\n\n/**\n * Re-ranks an operator and all downstream target dependencies. This\n * is necessary when upstream dependencies of higher rank are added to\n * a target operator.\n * @param {Operator} op - The operator to re-rank.\n */\nfunction rerank(op) {\n var queue = [op];\n var cur, list, i;\n while (queue.length) {\n this.rank(cur = queue.pop());\n if (list = cur._targets) {\n for (i = list.length; --i >= 0;) {\n queue.push(cur = list[i]);\n if (cur === op) error('Cycle detected in dataflow graph.');\n }\n }\n }\n}\n\n/**\n * Sentinel value indicating pulse propagation should stop.\n */\nvar StopPropagation = {};\n\n// Pulse visit type flags\nvar ADD = 1 << 0,\n REM = 1 << 1,\n MOD = 1 << 2,\n ADD_REM = ADD | REM,\n ADD_MOD = ADD | MOD,\n ALL = ADD | REM | MOD,\n REFLOW = 1 << 3,\n SOURCE = 1 << 4,\n NO_SOURCE = 1 << 5,\n NO_FIELDS = 1 << 6;\n\n/**\n * A Pulse enables inter-operator communication during a run of the\n * dataflow graph. In addition to the current timestamp, a pulse may also\n * contain a change-set of added, removed or modified data tuples, as well as\n * a pointer to a full backing data source. Tuple change sets may not\n * be fully materialized; for example, to prevent needless array creation\n * a change set may include larger arrays and corresponding filter functions.\n * The pulse provides a {@link visit} method to enable proper and efficient\n * iteration over requested data tuples.\n *\n * In addition, each pulse can track modification flags for data tuple fields.\n * Responsible transform operators should call the {@link modifies} method to\n * indicate changes to data fields. The {@link modified} method enables\n * querying of this modification state.\n *\n * @constructor\n * @param {Dataflow} dataflow - The backing dataflow instance.\n * @param {number} stamp - The current propagation timestamp.\n * @param {string} [encode] - An optional encoding set name, which is then\n * accessible as Pulse.encode. Operators can respond to (or ignore) this\n * setting as appropriate. This parameter can be used in conjunction with\n * the Encode transform in the vega-encode module.\n */\nfunction Pulse(dataflow, stamp, encode) {\n this.dataflow = dataflow;\n this.stamp = stamp == null ? -1 : stamp;\n this.add = [];\n this.rem = [];\n this.mod = [];\n this.fields = null;\n this.encode = encode || null;\n}\nfunction _materialize(data, filter) {\n var out = [];\n visitArray(data, filter, function (_) {\n return out.push(_);\n });\n return out;\n}\nfunction filter(pulse, flags) {\n var map = {};\n pulse.visit(flags, function (t) {\n map[tupleid(t)] = 1;\n });\n return function (t) {\n return map[tupleid(t)] ? null : t;\n };\n}\nfunction addFilter(a, b) {\n return a ? function (t, i) {\n return a(t, i) && b(t, i);\n } : b;\n}\nPulse.prototype = {\n /**\n * Sentinel value indicating pulse propagation should stop.\n */\n StopPropagation: StopPropagation,\n /**\n * Boolean flag indicating ADD (added) tuples.\n */\n ADD: ADD,\n /**\n * Boolean flag indicating REM (removed) tuples.\n */\n REM: REM,\n /**\n * Boolean flag indicating MOD (modified) tuples.\n */\n MOD: MOD,\n /**\n * Boolean flag indicating ADD (added) and REM (removed) tuples.\n */\n ADD_REM: ADD_REM,\n /**\n * Boolean flag indicating ADD (added) and MOD (modified) tuples.\n */\n ADD_MOD: ADD_MOD,\n /**\n * Boolean flag indicating ADD, REM and MOD tuples.\n */\n ALL: ALL,\n /**\n * Boolean flag indicating all tuples in a data source\n * except for the ADD, REM and MOD tuples.\n */\n REFLOW: REFLOW,\n /**\n * Boolean flag indicating a 'pass-through' to a\n * backing data source, ignoring ADD, REM and MOD tuples.\n */\n SOURCE: SOURCE,\n /**\n * Boolean flag indicating that source data should be\n * suppressed when creating a forked pulse.\n */\n NO_SOURCE: NO_SOURCE,\n /**\n * Boolean flag indicating that field modifications should be\n * suppressed when creating a forked pulse.\n */\n NO_FIELDS: NO_FIELDS,\n /**\n * Creates a new pulse based on the values of this pulse.\n * The dataflow, time stamp and field modification values are copied over.\n * By default, new empty ADD, REM and MOD arrays are created.\n * @param {number} flags - Integer of boolean flags indicating which (if any)\n * tuple arrays should be copied to the new pulse. The supported flag values\n * are ADD, REM and MOD. Array references are copied directly: new array\n * instances are not created.\n * @return {Pulse} - The forked pulse instance.\n * @see init\n */\n fork: function fork(flags) {\n return new Pulse(this.dataflow).init(this, flags);\n },\n /**\n * Creates a copy of this pulse with new materialized array\n * instances for the ADD, REM, MOD, and SOURCE arrays.\n * The dataflow, time stamp and field modification values are copied over.\n * @return {Pulse} - The cloned pulse instance.\n * @see init\n */\n clone: function clone() {\n var p = this.fork(ALL);\n p.add = p.add.slice();\n p.rem = p.rem.slice();\n p.mod = p.mod.slice();\n if (p.source) p.source = p.source.slice();\n return p.materialize(ALL | SOURCE);\n },\n /**\n * Returns a pulse that adds all tuples from a backing source. This is\n * useful for cases where operators are added to a dataflow after an\n * upstream data pipeline has already been processed, ensuring that\n * new operators can observe all tuples within a stream.\n * @return {Pulse} - A pulse instance with all source tuples included\n * in the add array. If the current pulse already has all source\n * tuples in its add array, it is returned directly. If the current\n * pulse does not have a backing source, it is returned directly.\n */\n addAll: function addAll() {\n var p = this;\n var reuse = !p.source || p.add === p.rem // special case for indexed set (e.g., crossfilter)\n || !p.rem.length && p.source.length === p.add.length;\n if (reuse) {\n return p;\n } else {\n p = new Pulse(this.dataflow).init(this);\n p.add = p.source;\n p.rem = []; // new operators can ignore rem #2769\n return p;\n }\n },\n /**\n * Initialize this pulse based on the values of another pulse. This method\n * is used internally by {@link fork} to initialize a new forked tuple.\n * The dataflow, time stamp and field modification values are copied over.\n * By default, new empty ADD, REM and MOD arrays are created.\n * @param {Pulse} src - The source pulse to copy from.\n * @param {number} flags - Integer of boolean flags indicating which (if any)\n * tuple arrays should be copied to the new pulse. The supported flag values\n * are ADD, REM and MOD. Array references are copied directly: new array\n * instances are not created. By default, source data arrays are copied\n * to the new pulse. Use the NO_SOURCE flag to enforce a null source.\n * @return {Pulse} - Returns this Pulse instance.\n */\n init: function init(src, flags) {\n var p = this;\n p.stamp = src.stamp;\n p.encode = src.encode;\n if (src.fields && !(flags & NO_FIELDS)) {\n p.fields = src.fields;\n }\n if (flags & ADD) {\n p.addF = src.addF;\n p.add = src.add;\n } else {\n p.addF = null;\n p.add = [];\n }\n if (flags & REM) {\n p.remF = src.remF;\n p.rem = src.rem;\n } else {\n p.remF = null;\n p.rem = [];\n }\n if (flags & MOD) {\n p.modF = src.modF;\n p.mod = src.mod;\n } else {\n p.modF = null;\n p.mod = [];\n }\n if (flags & NO_SOURCE) {\n p.srcF = null;\n p.source = null;\n } else {\n p.srcF = src.srcF;\n p.source = src.source;\n if (src.cleans) p.cleans = src.cleans;\n }\n return p;\n },\n /**\n * Schedules a function to run after pulse propagation completes.\n * @param {function} func - The function to run.\n */\n runAfter: function runAfter(func) {\n this.dataflow.runAfter(func);\n },\n /**\n * Indicates if tuples have been added, removed or modified.\n * @param {number} [flags] - The tuple types (ADD, REM or MOD) to query.\n * Defaults to ALL, returning true if any tuple type has changed.\n * @return {boolean} - Returns true if one or more queried tuple types have\n * changed, false otherwise.\n */\n changed: function changed(flags) {\n var f = flags || ALL;\n return f & ADD && this.add.length || f & REM && this.rem.length || f & MOD && this.mod.length;\n },\n /**\n * Forces a \"reflow\" of tuple values, such that all tuples in the backing\n * source are added to the MOD set, unless already present in the ADD set.\n * @param {boolean} [fork=false] - If true, returns a forked copy of this\n * pulse, and invokes reflow on that derived pulse.\n * @return {Pulse} - The reflowed pulse instance.\n */\n reflow: function reflow(fork) {\n if (fork) return this.fork(ALL).reflow();\n var len = this.add.length,\n src = this.source && this.source.length;\n if (src && src !== len) {\n this.mod = this.source;\n if (len) this.filter(MOD, filter(this, ADD));\n }\n return this;\n },\n /**\n * Get/set metadata to pulse requesting garbage collection\n * to reclaim currently unused resources.\n */\n clean: function clean(value) {\n if (arguments.length) {\n this.cleans = !!value;\n return this;\n } else {\n return this.cleans;\n }\n },\n /**\n * Marks one or more data field names as modified to assist dependency\n * tracking and incremental processing by transform operators.\n * @param {string|Array} _ - The field(s) to mark as modified.\n * @return {Pulse} - This pulse instance.\n */\n modifies: function modifies(_) {\n var hash = this.fields || (this.fields = {});\n if (isArray(_)) {\n _.forEach(function (f) {\n return hash[f] = true;\n });\n } else {\n hash[_] = true;\n }\n return this;\n },\n /**\n * Checks if one or more data fields have been modified during this pulse\n * propagation timestamp.\n * @param {string|Array} _ - The field(s) to check for modified.\n * @param {boolean} nomod - If true, will check the modified flag even if\n * no mod tuples exist. If false (default), mod tuples must be present.\n * @return {boolean} - Returns true if any of the provided fields has been\n * marked as modified, false otherwise.\n */\n modified: function modified(_, nomod) {\n var fields = this.fields;\n return !((nomod || this.mod.length) && fields) ? false : !arguments.length ? !!fields : isArray(_) ? _.some(function (f) {\n return fields[f];\n }) : fields[_];\n },\n /**\n * Adds a filter function to one more tuple sets. Filters are applied to\n * backing tuple arrays, to determine the actual set of tuples considered\n * added, removed or modified. They can be used to delay materialization of\n * a tuple set in order to avoid expensive array copies. In addition, the\n * filter functions can serve as value transformers: unlike standard predicate\n * function (which return boolean values), Pulse filters should return the\n * actual tuple value to process. If a tuple set is already filtered, the\n * new filter function will be appended into a conjuntive ('and') query.\n * @param {number} flags - Flags indicating the tuple set(s) to filter.\n * @param {function(*):object} filter - Filter function that will be applied\n * to the tuple set array, and should return a data tuple if the value\n * should be included in the tuple set, and falsy (or null) otherwise.\n * @return {Pulse} - Returns this pulse instance.\n */\n filter: function filter(flags, _filter2) {\n var p = this;\n if (flags & ADD) p.addF = addFilter(p.addF, _filter2);\n if (flags & REM) p.remF = addFilter(p.remF, _filter2);\n if (flags & MOD) p.modF = addFilter(p.modF, _filter2);\n if (flags & SOURCE) p.srcF = addFilter(p.srcF, _filter2);\n return p;\n },\n /**\n * Materialize one or more tuple sets in this pulse. If the tuple set(s) have\n * a registered filter function, it will be applied and the tuple set(s) will\n * be replaced with materialized tuple arrays.\n * @param {number} flags - Flags indicating the tuple set(s) to materialize.\n * @return {Pulse} - Returns this pulse instance.\n */\n materialize: function materialize(flags) {\n flags = flags || ALL;\n var p = this;\n if (flags & ADD && p.addF) {\n p.add = _materialize(p.add, p.addF);\n p.addF = null;\n }\n if (flags & REM && p.remF) {\n p.rem = _materialize(p.rem, p.remF);\n p.remF = null;\n }\n if (flags & MOD && p.modF) {\n p.mod = _materialize(p.mod, p.modF);\n p.modF = null;\n }\n if (flags & SOURCE && p.srcF) {\n p.source = p.source.filter(p.srcF);\n p.srcF = null;\n }\n return p;\n },\n /**\n * Visit one or more tuple sets in this pulse.\n * @param {number} flags - Flags indicating the tuple set(s) to visit.\n * Legal values are ADD, REM, MOD and SOURCE (if a backing data source\n * has been set).\n * @param {function(object):*} - Visitor function invoked per-tuple.\n * @return {Pulse} - Returns this pulse instance.\n */\n visit: function visit(flags, visitor) {\n var p = this,\n v = visitor;\n if (flags & SOURCE) {\n visitArray(p.source, p.srcF, v);\n return p;\n }\n if (flags & ADD) visitArray(p.add, p.addF, v);\n if (flags & REM) visitArray(p.rem, p.remF, v);\n if (flags & MOD) visitArray(p.mod, p.modF, v);\n var src = p.source;\n if (flags & REFLOW && src) {\n var sum = p.add.length + p.mod.length;\n if (sum === src.length) ;else if (sum) {\n visitArray(src, filter(p, ADD_MOD), v);\n } else {\n // if no add/rem/mod tuples, visit source\n visitArray(src, p.srcF, v);\n }\n }\n return p;\n }\n};\n\n/**\n * Represents a set of multiple pulses. Used as input for operators\n * that accept multiple pulses at a time. Contained pulses are\n * accessible via the public \"pulses\" array property. This pulse doe\n * not carry added, removed or modified tuples directly. However,\n * the visit method can be used to traverse all such tuples contained\n * in sub-pulses with a timestamp matching this parent multi-pulse.\n * @constructor\n * @param {Dataflow} dataflow - The backing dataflow instance.\n * @param {number} stamp - The timestamp.\n * @param {Array} pulses - The sub-pulses for this multi-pulse.\n */\nfunction MultiPulse(dataflow, stamp, pulses, encode) {\n var p = this;\n var c = 0;\n this.dataflow = dataflow;\n this.stamp = stamp;\n this.fields = null;\n this.encode = encode || null;\n this.pulses = pulses;\n var _iterator = _createForOfIteratorHelper(pulses),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _pulse2 = _step.value;\n if (_pulse2.stamp !== stamp) continue;\n if (_pulse2.fields) {\n var hash = p.fields || (p.fields = {});\n for (var f in _pulse2.fields) {\n hash[f] = 1;\n }\n }\n if (_pulse2.changed(p.ADD)) c |= p.ADD;\n if (_pulse2.changed(p.REM)) c |= p.REM;\n if (_pulse2.changed(p.MOD)) c |= p.MOD;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n this.changes = c;\n}\ninherits(MultiPulse, Pulse, {\n /**\n * Creates a new pulse based on the values of this pulse.\n * The dataflow, time stamp and field modification values are copied over.\n * @return {Pulse}\n */\n fork: function fork(flags) {\n var p = new Pulse(this.dataflow).init(this, flags & this.NO_FIELDS);\n if (flags !== undefined) {\n if (flags & p.ADD) this.visit(p.ADD, function (t) {\n return p.add.push(t);\n });\n if (flags & p.REM) this.visit(p.REM, function (t) {\n return p.rem.push(t);\n });\n if (flags & p.MOD) this.visit(p.MOD, function (t) {\n return p.mod.push(t);\n });\n }\n return p;\n },\n changed: function changed(flags) {\n return this.changes & flags;\n },\n modified: function modified(_) {\n var p = this,\n fields = p.fields;\n return !(fields && p.changes & p.MOD) ? 0 : isArray(_) ? _.some(function (f) {\n return fields[f];\n }) : fields[_];\n },\n filter: function filter() {\n error('MultiPulse does not support filtering.');\n },\n materialize: function materialize() {\n error('MultiPulse does not support materialization.');\n },\n visit: function visit(flags, visitor) {\n var p = this,\n pulses = p.pulses,\n n = pulses.length;\n var i = 0;\n if (flags & p.SOURCE) {\n for (; i < n; ++i) {\n pulses[i].visit(flags, visitor);\n }\n } else {\n for (; i < n; ++i) {\n if (pulses[i].stamp === p.stamp) {\n pulses[i].visit(flags, visitor);\n }\n }\n }\n return p;\n }\n});\n\n/* eslint-disable require-atomic-updates */\n\n/**\n * Evaluates the dataflow and returns a Promise that resolves when pulse\n * propagation completes. This method will increment the current timestamp\n * and process all updated, pulsed and touched operators. When invoked for\n * the first time, all registered operators will be processed. This method\n * should not be invoked by third-party clients, use {@link runAsync} or\n * {@link run} instead.\n * @param {string} [encode] - The name of an encoding set to invoke during\n * propagation. This value is added to generated Pulse instances;\n * operators can then respond to (or ignore) this setting as appropriate.\n * This parameter can be used in conjunction with the Encode transform in\n * the vega-encode package.\n * @param {function} [prerun] - An optional callback function to invoke\n * immediately before dataflow evaluation commences.\n * @param {function} [postrun] - An optional callback function to invoke\n * after dataflow evaluation completes. The callback will be invoked\n * after those registered via {@link runAfter}.\n * @return {Promise} - A promise that resolves to this dataflow after\n * evaluation completes.\n */\nfunction evaluate(_x8, _x9, _x10) {\n return _evaluate.apply(this, arguments);\n}\n/**\n * Queues dataflow evaluation to run once any other queued evaluations have\n * completed and returns a Promise that resolves when the queued pulse\n * propagation completes. If provided, a callback function will be invoked\n * immediately before evaluation commences. This method will ensure a\n * separate evaluation is invoked for each time it is called.\n * @param {string} [encode] - The name of an encoding set to invoke during\n * propagation. This value is added to generated Pulse instances;\n * operators can then respond to (or ignore) this setting as appropriate.\n * This parameter can be used in conjunction with the Encode transform in\n * the vega-encode package.\n * @param {function} [prerun] - An optional callback function to invoke\n * immediately before dataflow evaluation commences.\n * @param {function} [postrun] - An optional callback function to invoke\n * after dataflow evaluation completes. The callback will be invoked\n * after those registered via {@link runAfter}.\n * @return {Promise} - A promise that resolves to this dataflow after\n * evaluation completes.\n */\nfunction _evaluate() {\n _evaluate = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4(encode, prerun, postrun) {\n var df, async, stamp, count, op, next, error, pr, i;\n return _regeneratorRuntime.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n df = this, async = []; // if the pulse value is set, this is a re-entrant call\n if (!df._pulse) {\n _context4.next = 3;\n break;\n }\n return _context4.abrupt(\"return\", reentrant(df));\n case 3:\n if (!df._pending) {\n _context4.next = 6;\n break;\n }\n _context4.next = 6;\n return df._pending;\n case 6:\n if (!prerun) {\n _context4.next = 9;\n break;\n }\n _context4.next = 9;\n return asyncCallback(df, prerun);\n case 9:\n if (df._touched.length) {\n _context4.next = 12;\n break;\n }\n df.debug('Dataflow invoked, but nothing to do.');\n return _context4.abrupt(\"return\", df);\n case 12:\n // increment timestamp clock\n stamp = ++df._clock; // set the current pulse\n df._pulse = new Pulse(df, stamp, encode);\n\n // initialize priority queue, reset touched operators\n df._touched.forEach(function (op) {\n return df._enqueue(op, true);\n });\n df._touched = UniqueList(id);\n count = 0;\n _context4.prev = 17;\n case 18:\n if (!(df._heap.size() > 0)) {\n _context4.next = 35;\n break;\n }\n // dequeue operator with highest priority\n op = df._heap.pop();\n\n // re-queue if rank changed\n if (!(op.rank !== op.qrank)) {\n _context4.next = 23;\n break;\n }\n df._enqueue(op, true);\n return _context4.abrupt(\"continue\", 18);\n case 23:\n // otherwise, evaluate the operator\n next = op.run(df._getPulse(op, encode));\n if (!next.then) {\n _context4.next = 30;\n break;\n }\n _context4.next = 27;\n return next;\n case 27:\n next = _context4.sent;\n _context4.next = 31;\n break;\n case 30:\n if (next.async) {\n // queue parallel asynchronous execution\n async.push(next.async);\n next = StopPropagation;\n }\n case 31:\n // propagate evaluation, enqueue dependent operators\n if (next !== StopPropagation) {\n if (op._targets) op._targets.forEach(function (op) {\n return df._enqueue(op);\n });\n }\n\n // increment visit counter\n ++count;\n _context4.next = 18;\n break;\n case 35:\n _context4.next = 41;\n break;\n case 37:\n _context4.prev = 37;\n _context4.t0 = _context4[\"catch\"](17);\n df._heap.clear();\n error = _context4.t0;\n case 41:\n // reset pulse map\n df._input = {};\n df._pulse = null;\n df.debug(\"Pulse \".concat(stamp, \": \").concat(count, \" operators\"));\n if (error) {\n df._postrun = [];\n df.error(error);\n }\n\n // invoke callbacks queued via runAfter\n if (!df._postrun.length) {\n _context4.next = 55;\n break;\n }\n pr = df._postrun.sort(function (a, b) {\n return b.priority - a.priority;\n });\n df._postrun = [];\n i = 0;\n case 49:\n if (!(i < pr.length)) {\n _context4.next = 55;\n break;\n }\n _context4.next = 52;\n return asyncCallback(df, pr[i].callback);\n case 52:\n ++i;\n _context4.next = 49;\n break;\n case 55:\n if (!postrun) {\n _context4.next = 58;\n break;\n }\n _context4.next = 58;\n return asyncCallback(df, postrun);\n case 58:\n // handle non-blocking asynchronous callbacks\n if (async.length) {\n Promise.all(async).then(function (cb) {\n return df.runAsync(null, function () {\n cb.forEach(function (f) {\n try {\n f(df);\n } catch (err) {\n df.error(err);\n }\n });\n });\n });\n }\n return _context4.abrupt(\"return\", df);\n case 60:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4, this, [[17, 37]]);\n }));\n return _evaluate.apply(this, arguments);\n}\nfunction runAsync(_x11, _x12, _x13) {\n return _runAsync.apply(this, arguments);\n}\n/**\n * Requests dataflow evaluation and the immediately returns this dataflow\n * instance. If there are pending data loading or other asynchronous\n * operations, the dataflow will evaluate asynchronously after this method\n * has been invoked. To track when dataflow evaluation completes, use the\n * {@link runAsync} method instead. This method will raise an error if\n * invoked while the dataflow is already in the midst of evaluation.\n * @param {string} [encode] - The name of an encoding set to invoke during\n * propagation. This value is added to generated Pulse instances;\n * operators can then respond to (or ignore) this setting as appropriate.\n * This parameter can be used in conjunction with the Encode transform in\n * the vega-encode module.\n * @param {function} [prerun] - An optional callback function to invoke\n * immediately before dataflow evaluation commences.\n * @param {function} [postrun] - An optional callback function to invoke\n * after dataflow evaluation completes. The callback will be invoked\n * after those registered via {@link runAfter}.\n * @return {Dataflow} - This dataflow instance.\n */\nfunction _runAsync() {\n _runAsync = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5(encode, prerun, postrun) {\n var _this3 = this;\n var clear;\n return _regeneratorRuntime.wrap(function _callee5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n if (!this._running) {\n _context5.next = 5;\n break;\n }\n _context5.next = 3;\n return this._running;\n case 3:\n _context5.next = 0;\n break;\n case 5:\n // run dataflow, manage running promise\n clear = function clear() {\n return _this3._running = null;\n };\n (this._running = this.evaluate(encode, prerun, postrun)).then(clear, clear);\n return _context5.abrupt(\"return\", this._running);\n case 8:\n case \"end\":\n return _context5.stop();\n }\n }, _callee5, this);\n }));\n return _runAsync.apply(this, arguments);\n}\nfunction run(encode, prerun, postrun) {\n return this._pulse ? reentrant(this) : (this.evaluate(encode, prerun, postrun), this);\n}\n\n/**\n * Schedules a callback function to be invoked after the current pulse\n * propagation completes. If no propagation is currently occurring,\n * the function is invoked immediately. Callbacks scheduled via runAfter\n * are invoked immediately upon completion of the current cycle, before\n * any request queued via runAsync. This method is primarily intended for\n * internal use. Third-party callers using runAfter to schedule a callback\n * that invokes {@link run} or {@link runAsync} should not use this method,\n * but instead use {@link runAsync} with prerun or postrun arguments.\n * @param {function(Dataflow)} callback - The callback function to run.\n * The callback will be invoked with this Dataflow instance as its\n * sole argument.\n * @param {boolean} enqueue - A boolean flag indicating that the\n * callback should be queued up to run after the next propagation\n * cycle, suppressing immediate invocation when propagation is not\n * currently occurring.\n * @param {number} [priority] - A priority value used to sort registered\n * callbacks to determine execution order. This argument is intended\n * for internal Vega use only.\n */\nfunction runAfter(callback, enqueue, priority) {\n if (this._pulse || enqueue) {\n // pulse propagation is currently running, queue to run after\n this._postrun.push({\n priority: priority || 0,\n callback: callback\n });\n } else {\n // pulse propagation already complete, invoke immediately\n try {\n callback(this);\n } catch (err) {\n this.error(err);\n }\n }\n}\n\n/**\n * Raise an error for re-entrant dataflow evaluation.\n */\nfunction reentrant(df) {\n df.error('Dataflow already running. Use runAsync() to chain invocations.');\n return df;\n}\n\n/**\n * Enqueue an operator into the priority queue for evaluation. The operator\n * will be enqueued if it has no registered pulse for the current cycle, or if\n * the force argument is true. Upon enqueue, this method also sets the\n * operator's qrank to the current rank value.\n * @param {Operator} op - The operator to enqueue.\n * @param {boolean} [force] - A flag indicating if the operator should be\n * forceably added to the queue, even if it has already been previously\n * enqueued during the current pulse propagation. This is useful when the\n * dataflow graph is dynamically modified and the operator rank changes.\n */\nfunction enqueue(op, force) {\n var q = op.stamp < this._clock;\n if (q) op.stamp = this._clock;\n if (q || force) {\n op.qrank = op.rank;\n this._heap.push(op);\n }\n}\n\n/**\n * Provide a correct pulse for evaluating an operator. If the operator has an\n * explicit source operator, we will try to pull the pulse(s) from it.\n * If there is an array of source operators, we build a multi-pulse.\n * Otherwise, we return a current pulse with correct source data.\n * If the pulse is the pulse map has an explicit target set, we use that.\n * Else if the pulse on the upstream source operator is current, we use that.\n * Else we use the pulse from the pulse map, but copy the source tuple array.\n * @param {Operator} op - The operator for which to get an input pulse.\n * @param {string} [encode] - An (optional) encoding set name with which to\n * annotate the returned pulse. See {@link run} for more information.\n */\nfunction getPulse(op, encode) {\n var s = op.source,\n stamp = this._clock;\n return s && isArray(s) ? new MultiPulse(this, stamp, s.map(function (_) {\n return _.pulse;\n }), encode) : this._input[op.id] || singlePulse(this._pulse, s && s.pulse);\n}\nfunction singlePulse(p, s) {\n if (s && s.stamp === p.stamp) {\n return s;\n }\n p = p.fork();\n if (s && s !== StopPropagation) {\n p.source = s.source;\n }\n return p;\n}\nvar NO_OPT = {\n skip: false,\n force: false\n};\n\n/**\n * Touches an operator, scheduling it to be evaluated. If invoked outside of\n * a pulse propagation, the operator will be evaluated the next time this\n * dataflow is run. If invoked in the midst of pulse propagation, the operator\n * will be queued for evaluation if and only if the operator has not yet been\n * evaluated on the current propagation timestamp.\n * @param {Operator} op - The operator to touch.\n * @param {object} [options] - Additional options hash.\n * @param {boolean} [options.skip] - If true, the operator will\n * be skipped: it will not be evaluated, but its dependents will be.\n * @return {Dataflow}\n */\nfunction touch(op, options) {\n var opt = options || NO_OPT;\n if (this._pulse) {\n // if in midst of propagation, add to priority queue\n this._enqueue(op);\n } else {\n // otherwise, queue for next propagation\n this._touched.add(op);\n }\n if (opt.skip) op.skip(true);\n return this;\n}\n\n/**\n * Updates the value of the given operator.\n * @param {Operator} op - The operator to update.\n * @param {*} value - The value to set.\n * @param {object} [options] - Additional options hash.\n * @param {boolean} [options.force] - If true, the operator will\n * be re-evaluated even if its value has not changed.\n * @param {boolean} [options.skip] - If true, the operator will\n * be skipped: it will not be evaluated, but its dependents will be.\n * @return {Dataflow}\n */\nfunction update(op, value, options) {\n var opt = options || NO_OPT;\n if (op.set(value) || opt.force) {\n this.touch(op, opt);\n }\n return this;\n}\n\n/**\n * Pulses an operator with a changeset of tuples. If invoked outside of\n * a pulse propagation, the pulse will be applied the next time this\n * dataflow is run. If invoked in the midst of pulse propagation, the pulse\n * will be added to the set of active pulses and will be applied if and\n * only if the target operator has not yet been evaluated on the current\n * propagation timestamp.\n * @param {Operator} op - The operator to pulse.\n * @param {ChangeSet} value - The tuple changeset to apply.\n * @param {object} [options] - Additional options hash.\n * @param {boolean} [options.skip] - If true, the operator will\n * be skipped: it will not be evaluated, but its dependents will be.\n * @return {Dataflow}\n */\nfunction pulse(op, changeset, options) {\n this.touch(op, options || NO_OPT);\n var p = new Pulse(this, this._clock + (this._pulse ? 0 : 1)),\n t = op.pulse && op.pulse.source || [];\n p.target = op;\n this._input[op.id] = changeset.pulse(p, t);\n return this;\n}\nfunction Heap(cmp) {\n var nodes = [];\n return {\n clear: function clear() {\n return nodes = [];\n },\n size: function size() {\n return nodes.length;\n },\n peek: function peek() {\n return nodes[0];\n },\n push: function push(x) {\n nodes.push(x);\n return siftdown(nodes, 0, nodes.length - 1, cmp);\n },\n pop: function pop() {\n var last = nodes.pop();\n var item;\n if (nodes.length) {\n item = nodes[0];\n nodes[0] = last;\n siftup(nodes, 0, cmp);\n } else {\n item = last;\n }\n return item;\n }\n };\n}\nfunction siftdown(array, start, idx, cmp) {\n var parent, pidx;\n var item = array[idx];\n while (idx > start) {\n pidx = idx - 1 >> 1;\n parent = array[pidx];\n if (cmp(item, parent) < 0) {\n array[idx] = parent;\n idx = pidx;\n continue;\n }\n break;\n }\n return array[idx] = item;\n}\nfunction siftup(array, idx, cmp) {\n var start = idx,\n end = array.length,\n item = array[idx];\n var cidx = (idx << 1) + 1,\n ridx;\n while (cidx < end) {\n ridx = cidx + 1;\n if (ridx < end && cmp(array[cidx], array[ridx]) >= 0) {\n cidx = ridx;\n }\n array[idx] = array[cidx];\n idx = cidx;\n cidx = (idx << 1) + 1;\n }\n array[idx] = item;\n return siftdown(array, start, idx, cmp);\n}\n\n/**\n * A dataflow graph for reactive processing of data streams.\n * @constructor\n */\nfunction Dataflow() {\n this.logger(logger());\n this.logLevel(Error);\n this._clock = 0;\n this._rank = 0;\n this._locale = defaultLocale();\n try {\n this._loader = loader();\n } catch (e) {\n // do nothing if loader module is unavailable\n }\n this._touched = UniqueList(id);\n this._input = {};\n this._pulse = null;\n this._heap = Heap(function (a, b) {\n return a.qrank - b.qrank;\n });\n this._postrun = [];\n}\nfunction logMethod(method) {\n return function () {\n return this._log[method].apply(this, arguments);\n };\n}\nDataflow.prototype = {\n /**\n * The current timestamp of this dataflow. This value reflects the\n * timestamp of the previous dataflow run. The dataflow is initialized\n * with a stamp value of 0. The initial run of the dataflow will have\n * a timestap of 1, and so on. This value will match the\n * {@link Pulse.stamp} property.\n * @return {number} - The current timestamp value.\n */\n stamp: function stamp() {\n return this._clock;\n },\n /**\n * Gets or sets the loader instance to use for data file loading. A\n * loader object must provide a \"load\" method for loading files and a\n * \"sanitize\" method for checking URL/filename validity. Both methods\n * should accept a URI and options hash as arguments, and return a Promise\n * that resolves to the loaded file contents (load) or a hash containing\n * sanitized URI data with the sanitized url assigned to the \"href\" property\n * (sanitize).\n * @param {object} _ - The loader instance to use.\n * @return {object|Dataflow} - If no arguments are provided, returns\n * the current loader instance. Otherwise returns this Dataflow instance.\n */\n loader: function loader(_) {\n if (arguments.length) {\n this._loader = _;\n return this;\n } else {\n return this._loader;\n }\n },\n /**\n * Gets or sets the locale instance to use for formatting and parsing\n * string values. The locale object should be provided by the\n * vega-format library, and include methods such as format, timeFormat,\n * utcFormat, timeParse, and utcParse.\n * @param {object} _ - The locale instance to use.\n * @return {object|Dataflow} - If no arguments are provided, returns\n * the current locale instance. Otherwise returns this Dataflow instance.\n */\n locale: function locale(_) {\n if (arguments.length) {\n this._locale = _;\n return this;\n } else {\n return this._locale;\n }\n },\n /**\n * Get or set the logger instance used to log messages. If no arguments are\n * provided, returns the current logger instance. Otherwise, sets the logger\n * and return this Dataflow instance. Provided loggers must support the full\n * API of logger objects generated by the vega-util logger method. Note that\n * by default the log level of the new logger will be used; use the logLevel\n * method to adjust the log level as needed.\n */\n logger: function logger(_logger) {\n if (arguments.length) {\n this._log = _logger;\n return this;\n } else {\n return this._log;\n }\n },\n /**\n * Logs an error message. By default, logged messages are written to console\n * output. The message will only be logged if the current log level is high\n * enough to permit error messages.\n */\n error: logMethod('error'),\n /**\n * Logs a warning message. By default, logged messages are written to console\n * output. The message will only be logged if the current log level is high\n * enough to permit warning messages.\n */\n warn: logMethod('warn'),\n /**\n * Logs a information message. By default, logged messages are written to\n * console output. The message will only be logged if the current log level is\n * high enough to permit information messages.\n */\n info: logMethod('info'),\n /**\n * Logs a debug message. By default, logged messages are written to console\n * output. The message will only be logged if the current log level is high\n * enough to permit debug messages.\n */\n debug: logMethod('debug'),\n /**\n * Get or set the current log level. If an argument is provided, it\n * will be used as the new log level.\n * @param {number} [level] - Should be one of None, Warn, Info\n * @return {number} - The current log level.\n */\n logLevel: logMethod('level'),\n /**\n * Empty entry threshold for garbage cleaning. Map data structures will\n * perform cleaning once the number of empty entries exceeds this value.\n */\n cleanThreshold: 1e4,\n // OPERATOR REGISTRATION\n add: add,\n connect: connect,\n rank: rank,\n rerank: rerank,\n // OPERATOR UPDATES\n pulse: pulse,\n touch: touch,\n update: update,\n changeset: changeset,\n // DATA LOADING\n ingest: ingest,\n parse: parse,\n preload: preload,\n request: request,\n // EVENT HANDLING\n events: events,\n on: on,\n // PULSE PROPAGATION\n evaluate: evaluate,\n run: run,\n runAsync: runAsync,\n runAfter: runAfter,\n _enqueue: enqueue,\n _getPulse: getPulse\n};\n\n/**\n * Abstract class for operators that process data tuples.\n * Subclasses must provide a {@link transform} method for operator processing.\n * @constructor\n * @param {*} [init] - The initial value for this operator.\n * @param {object} [params] - The parameters for this operator.\n * @param {Operator} [source] - The operator from which to receive pulses.\n */\nfunction Transform(init, params) {\n Operator.call(this, init, null, params);\n}\ninherits(Transform, Operator, {\n /**\n * Overrides {@link Operator.evaluate} for transform operators.\n * Internally, this method calls {@link evaluate} to perform processing.\n * If {@link evaluate} returns a falsy value, the input pulse is returned.\n * This method should NOT be overridden, instead overrride {@link evaluate}.\n * @param {Pulse} pulse - the current dataflow pulse.\n * @return the output pulse for this operator (or StopPropagation)\n */\n run: function run(pulse) {\n var _this2 = this;\n if (pulse.stamp < this.stamp) return pulse.StopPropagation;\n var rv;\n if (this.skip()) {\n this.skip(false);\n } else {\n rv = this.evaluate(pulse);\n }\n rv = rv || pulse;\n if (rv.then) {\n rv = rv.then(function (_) {\n return _this2.pulse = _;\n });\n } else if (rv !== pulse.StopPropagation) {\n this.pulse = rv;\n }\n return rv;\n },\n /**\n * Overrides {@link Operator.evaluate} for transform operators.\n * Marshalls parameter values and then invokes {@link transform}.\n * @param {Pulse} pulse - the current dataflow pulse.\n * @return {Pulse} The output pulse (or StopPropagation). A falsy return\n value (including undefined) will let the input pulse pass through.\n */\n evaluate: function evaluate(pulse) {\n var params = this.marshall(pulse.stamp),\n out = this.transform(params, pulse);\n params.clear();\n return out;\n },\n /**\n * Process incoming pulses.\n * Subclasses should override this method to implement transforms.\n * @param {Parameters} _ - The operator parameter values.\n * @param {Pulse} pulse - The current dataflow pulse.\n * @return {Pulse} The output pulse (or StopPropagation). A falsy return\n * value (including undefined) will let the input pulse pass through.\n */\n transform: function transform() {}\n});\nvar transforms = {};\nfunction definition(type) {\n var t = transform(type);\n return t && t.Definition || null;\n}\nfunction transform(type) {\n type = type && type.toLowerCase();\n return hasOwnProperty(transforms, type) ? transforms[type] : null;\n}\nexport { Dataflow, EventStream, MultiPulse, Operator, Parameters, Pulse, Transform, UniqueList, asyncCallback, changeset, definition, derive, ingest$1 as ingest, isChangeSet, isTuple, rederive, replace, stableCompare, transform, transforms, tupleid };","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nexport default function max(values, valueof) {\n var max;\n if (valueof === undefined) {\n var _iterator = _createForOfIteratorHelper(values),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var value = _step.value;\n if (value != null && (max < value || max === undefined && value >= value)) {\n max = value;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n } else {\n var index = -1;\n var _iterator2 = _createForOfIteratorHelper(values),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _value = _step2.value;\n if ((_value = valueof(_value, ++index, values)) != null && (max < _value || max === undefined && _value >= _value)) {\n max = _value;\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n return max;\n}","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nexport default function min(values, valueof) {\n var min;\n if (valueof === undefined) {\n var _iterator = _createForOfIteratorHelper(values),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var value = _step.value;\n if (value != null && (min > value || min === undefined && value >= value)) {\n min = value;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n } else {\n var index = -1;\n var _iterator2 = _createForOfIteratorHelper(values),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _value = _step2.value;\n if ((_value = valueof(_value, ++index, values)) != null && (min > _value || min === undefined && _value >= _value)) {\n min = _value;\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n return min;\n}","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport ascending from \"./ascending.js\";\nimport permute from \"./permute.js\";\nexport default function sort(values) {\n for (var _len = arguments.length, F = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n F[_key - 1] = arguments[_key];\n }\n if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n values = Array.from(values);\n var _F = F,\n _F2 = _slicedToArray(_F, 1),\n f = _F2[0];\n if (f && f.length !== 2 || F.length > 1) {\n var index = Uint32Array.from(values, function (d, i) {\n return i;\n });\n if (F.length > 1) {\n F = F.map(function (f) {\n return values.map(f);\n });\n index.sort(function (i, j) {\n var _iterator = _createForOfIteratorHelper(F),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _f = _step.value;\n var c = ascendingDefined(_f[i], _f[j]);\n if (c) return c;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n });\n } else {\n f = values.map(f);\n index.sort(function (i, j) {\n return ascendingDefined(f[i], f[j]);\n });\n }\n return permute(values, index);\n }\n return values.sort(compareDefined(f));\n}\nexport function compareDefined() {\n var compare = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ascending;\n if (compare === ascending) return ascendingDefined;\n if (typeof compare !== \"function\") throw new TypeError(\"compare is not a function\");\n return function (a, b) {\n var x = compare(a, b);\n if (x || x === 0) return x;\n return (compare(b, b) === 0) - (compare(a, a) === 0);\n };\n}\nexport function ascendingDefined(a, b) {\n return (a == null || !(a >= a)) - (b == null || !(b >= b)) || (a < b ? -1 : a > b ? 1 : 0);\n}","import { ascendingDefined, compareDefined } from \"./sort.js\";\n\n// Based on https://github.com/mourner/quickselect\n// ISC license, Copyright 2018 Vladimir Agafonkin.\nexport default function quickselect(array, k) {\n var left = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var right = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Infinity;\n var compare = arguments.length > 4 ? arguments[4] : undefined;\n k = Math.floor(k);\n left = Math.floor(Math.max(0, left));\n right = Math.floor(Math.min(array.length - 1, right));\n if (!(left <= k && k <= right)) return array;\n compare = compare === undefined ? ascendingDefined : compareDefined(compare);\n while (right > left) {\n if (right - left > 600) {\n var n = right - left + 1;\n var m = k - left + 1;\n var z = Math.log(n);\n var s = 0.5 * Math.exp(2 * z / 3);\n var sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n var newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n var newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n quickselect(array, k, newLeft, newRight, compare);\n }\n var t = array[k];\n var i = left;\n var j = right;\n swap(array, left, k);\n if (compare(array[right], t) > 0) swap(array, left, right);\n while (i < j) {\n swap(array, i, j), ++i, --j;\n while (compare(array[i], t) < 0) ++i;\n while (compare(array[j], t) > 0) --j;\n }\n if (compare(array[left], t) === 0) swap(array, left, j);else ++j, swap(array, j, right);\n if (j <= k) left = j + 1;\n if (k <= j) right = j - 1;\n }\n return array;\n}\nfunction swap(array, i, j) {\n var t = array[i];\n array[i] = array[j];\n array[j] = t;\n}","import _regeneratorRuntime from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/regenerator/index.js\";\nvar _marked = /*#__PURE__*/_regeneratorRuntime.mark(numbers);\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nexport default function number(x) {\n return x === null ? NaN : +x;\n}\nexport function numbers(values, valueof) {\n var _iterator, _step, value, index, _iterator2, _step2, _value;\n return _regeneratorRuntime.wrap(function numbers$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n if (!(valueof === undefined)) {\n _context.next = 21;\n break;\n }\n _iterator = _createForOfIteratorHelper(values);\n _context.prev = 2;\n _iterator.s();\n case 4:\n if ((_step = _iterator.n()).done) {\n _context.next = 11;\n break;\n }\n value = _step.value;\n if (!(value != null && (value = +value) >= value)) {\n _context.next = 9;\n break;\n }\n _context.next = 9;\n return value;\n case 9:\n _context.next = 4;\n break;\n case 11:\n _context.next = 16;\n break;\n case 13:\n _context.prev = 13;\n _context.t0 = _context[\"catch\"](2);\n _iterator.e(_context.t0);\n case 16:\n _context.prev = 16;\n _iterator.f();\n return _context.finish(16);\n case 19:\n _context.next = 40;\n break;\n case 21:\n index = -1;\n _iterator2 = _createForOfIteratorHelper(values);\n _context.prev = 23;\n _iterator2.s();\n case 25:\n if ((_step2 = _iterator2.n()).done) {\n _context.next = 32;\n break;\n }\n _value = _step2.value;\n if (!((_value = valueof(_value, ++index, values)) != null && (_value = +_value) >= _value)) {\n _context.next = 30;\n break;\n }\n _context.next = 30;\n return _value;\n case 30:\n _context.next = 25;\n break;\n case 32:\n _context.next = 37;\n break;\n case 34:\n _context.prev = 34;\n _context.t1 = _context[\"catch\"](23);\n _iterator2.e(_context.t1);\n case 37:\n _context.prev = 37;\n _iterator2.f();\n return _context.finish(37);\n case 40:\n case \"end\":\n return _context.stop();\n }\n }, _marked, null, [[2, 13, 16, 19], [23, 34, 37, 40]]);\n}","import max from \"./max.js\";\nimport maxIndex from \"./maxIndex.js\";\nimport min from \"./min.js\";\nimport minIndex from \"./minIndex.js\";\nimport quickselect from \"./quickselect.js\";\nimport number, { numbers } from \"./number.js\";\nimport { ascendingDefined } from \"./sort.js\";\nimport greatest from \"./greatest.js\";\nexport default function quantile(values, p, valueof) {\n values = Float64Array.from(numbers(values, valueof));\n if (!(n = values.length) || isNaN(p = +p)) return;\n if (p <= 0 || n < 2) return min(values);\n if (p >= 1) return max(values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = max(quickselect(values, i0).subarray(0, i0 + 1)),\n value1 = min(values.subarray(i0 + 1));\n return value0 + (value1 - value0) * (i - i0);\n}\nexport function quantileSorted(values, p) {\n var valueof = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : number;\n if (!(n = values.length) || isNaN(p = +p)) return;\n if (p <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\nexport function quantileIndex(values, p) {\n var valueof = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : number;\n if (isNaN(p = +p)) return;\n numbers = Float64Array.from(values, function (_, i) {\n return number(valueof(values[i], i, values));\n });\n if (p <= 0) return minIndex(numbers);\n if (p >= 1) return maxIndex(numbers);\n var numbers,\n index = Uint32Array.from(values, function (_, i) {\n return i;\n }),\n j = numbers.length - 1,\n i = Math.floor(j * p);\n quickselect(index, i, 0, j, function (i, j) {\n return ascendingDefined(numbers[i], numbers[j]);\n });\n i = greatest(index.subarray(0, i + 1), function (i) {\n return numbers[i];\n });\n return i >= 0 ? i : -1;\n}","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nexport default function variance(values, valueof) {\n var count = 0;\n var delta;\n var mean = 0;\n var sum = 0;\n if (valueof === undefined) {\n var _iterator = _createForOfIteratorHelper(values),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var value = _step.value;\n if (value != null && (value = +value) >= value) {\n delta = value - mean;\n mean += delta / ++count;\n sum += delta * (value - mean);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n } else {\n var index = -1;\n var _iterator2 = _createForOfIteratorHelper(values),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _value = _step2.value;\n if ((_value = valueof(_value, ++index, values)) != null && (_value = +_value) >= _value) {\n delta = _value - mean;\n mean += delta / ++count;\n sum += delta * (_value - mean);\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n if (count > 1) return sum / (count - 1);\n}","import variance from \"./variance.js\";\nexport default function deviation(values, valueof) {\n var v = variance(values, valueof);\n return v ? Math.sqrt(v) : v;\n}","import quantile, { quantileIndex } from \"./quantile.js\";\nexport default function median(values, valueof) {\n return quantile(values, 0.5, valueof);\n}\nexport function medianIndex(values, valueof) {\n return quantileIndex(values, 0.5, valueof);\n}","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport _regeneratorRuntime from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/regenerator/index.js\";\nvar _marked = /*#__PURE__*/_regeneratorRuntime.mark(numbers);\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { ascending, quantileSorted, deviation, quantile, median } from 'd3-array';\nfunction numbers(values, valueof) {\n var _iterator, _step, value, index, _iterator2, _step2, _value;\n return _regeneratorRuntime.wrap(function numbers$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n if (!(valueof == null)) {\n _context.next = 21;\n break;\n }\n _iterator = _createForOfIteratorHelper(values);\n _context.prev = 2;\n _iterator.s();\n case 4:\n if ((_step = _iterator.n()).done) {\n _context.next = 11;\n break;\n }\n value = _step.value;\n if (!(value != null && value !== '' && (value = +value) >= value)) {\n _context.next = 9;\n break;\n }\n _context.next = 9;\n return value;\n case 9:\n _context.next = 4;\n break;\n case 11:\n _context.next = 16;\n break;\n case 13:\n _context.prev = 13;\n _context.t0 = _context[\"catch\"](2);\n _iterator.e(_context.t0);\n case 16:\n _context.prev = 16;\n _iterator.f();\n return _context.finish(16);\n case 19:\n _context.next = 41;\n break;\n case 21:\n index = -1;\n _iterator2 = _createForOfIteratorHelper(values);\n _context.prev = 23;\n _iterator2.s();\n case 25:\n if ((_step2 = _iterator2.n()).done) {\n _context.next = 33;\n break;\n }\n _value = _step2.value;\n _value = valueof(_value, ++index, values);\n if (!(_value != null && _value !== '' && (_value = +_value) >= _value)) {\n _context.next = 31;\n break;\n }\n _context.next = 31;\n return _value;\n case 31:\n _context.next = 25;\n break;\n case 33:\n _context.next = 38;\n break;\n case 35:\n _context.prev = 35;\n _context.t1 = _context[\"catch\"](23);\n _iterator2.e(_context.t1);\n case 38:\n _context.prev = 38;\n _iterator2.f();\n return _context.finish(38);\n case 41:\n case \"end\":\n return _context.stop();\n }\n }, _marked, null, [[2, 13, 16, 19], [23, 35, 38, 41]]);\n}\nfunction quantiles(array, p, f) {\n var values = Float64Array.from(numbers(array, f));\n\n // don't depend on return value from typed array sort call\n // protects against undefined sort results in Safari (vega/vega-lite#4964)\n values.sort(ascending);\n return p.map(function (_) {\n return quantileSorted(values, _);\n });\n}\nfunction quartiles(array, f) {\n return quantiles(array, [0.25, 0.50, 0.75], f);\n}\n\n// Scott, D. W. (1992) Multivariate Density Estimation:\n// Theory, Practice, and Visualization. Wiley.\nfunction estimateBandwidth(array, f) {\n var n = array.length,\n d = deviation(array, f),\n q = quartiles(array, f),\n h = (q[2] - q[0]) / 1.34,\n v = Math.min(d, h) || d || Math.abs(q[0]) || 1;\n return 1.06 * v * Math.pow(n, -0.2);\n}\nfunction bin(_) {\n // determine range\n var maxb = _.maxbins || 20,\n base = _.base || 10,\n logb = Math.log(base),\n div = _.divide || [5, 2];\n var min = _.extent[0],\n max = _.extent[1],\n step,\n level,\n minstep,\n v,\n i,\n n;\n var span = _.span || max - min || Math.abs(min) || 1;\n if (_.step) {\n // if step size is explicitly given, use that\n step = _.step;\n } else if (_.steps) {\n // if provided, limit choice to acceptable step sizes\n v = span / maxb;\n for (i = 0, n = _.steps.length; i < n && _.steps[i] < v; ++i);\n step = _.steps[Math.max(0, i - 1)];\n } else {\n // else use span to determine step size\n level = Math.ceil(Math.log(maxb) / logb);\n minstep = _.minstep || 0;\n step = Math.max(minstep, Math.pow(base, Math.round(Math.log(span) / logb) - level));\n\n // increase step size if too many bins\n while (Math.ceil(span / step) > maxb) {\n step *= base;\n }\n\n // decrease step size if allowed\n for (i = 0, n = div.length; i < n; ++i) {\n v = step / div[i];\n if (v >= minstep && span / v <= maxb) step = v;\n }\n }\n\n // update precision, min and max\n v = Math.log(step);\n var precision = v >= 0 ? 0 : ~~(-v / logb) + 1,\n eps = Math.pow(base, -precision - 1);\n if (_.nice || _.nice === undefined) {\n v = Math.floor(min / step + eps) * step;\n min = min < v ? v - step : v;\n max = Math.ceil(max / step) * step;\n }\n return {\n start: min,\n stop: max === min ? min + step : max,\n step: step\n };\n}\nvar random = Math.random;\nfunction setRandom(r) {\n random = r;\n}\nfunction bootstrapCI(array, samples, alpha, f) {\n if (!array.length) return [undefined, undefined];\n var values = Float64Array.from(numbers(array, f)),\n n = values.length,\n m = samples;\n var a, i, j, mu;\n for (j = 0, mu = Array(m); j < m; ++j) {\n for (a = 0, i = 0; i < n; ++i) {\n a += values[~~(random() * n)];\n }\n mu[j] = a / n;\n }\n mu.sort(ascending);\n return [quantile(mu, alpha / 2), quantile(mu, 1 - alpha / 2)];\n}\n\n// Dot density binning for dot plot construction.\n// Based on Leland Wilkinson, Dot Plots, The American Statistician, 1999.\n// https://www.cs.uic.edu/~wilkinson/Publications/dotplots.pdf\nfunction dotbin(array, step, smooth, f) {\n f = f || function (_) {\n return _;\n };\n var n = array.length,\n v = new Float64Array(n);\n var i = 0,\n j = 1,\n a = f(array[0]),\n b = a,\n w = a + step,\n x;\n for (; j < n; ++j) {\n x = f(array[j]);\n if (x >= w) {\n b = (a + b) / 2;\n for (; i < j; ++i) v[i] = b;\n w = x + step;\n a = x;\n }\n b = x;\n }\n b = (a + b) / 2;\n for (; i < j; ++i) v[i] = b;\n return smooth ? smoothing(v, step + step / 4) : v;\n}\n\n// perform smoothing to reduce variance\n// swap points between \"adjacent\" stacks\n// Wilkinson defines adjacent as within step/4 units\nfunction smoothing(v, thresh) {\n var n = v.length;\n var a = 0,\n b = 1,\n c,\n d;\n\n // get left stack\n while (v[a] === v[b]) ++b;\n while (b < n) {\n // get right stack\n c = b + 1;\n while (v[b] === v[c]) ++c;\n\n // are stacks adjacent?\n // if so, compare sizes and swap as needed\n if (v[b] - v[b - 1] < thresh) {\n d = b + (a + c - b - b >> 1);\n while (d < b) v[d++] = v[b];\n while (d > b) v[d--] = v[a];\n }\n\n // update left stack indices\n a = b;\n b = c;\n }\n return v;\n}\nfunction lcg(seed) {\n // Random numbers using a Linear Congruential Generator with seed value\n // Uses glibc values from https://en.wikipedia.org/wiki/Linear_congruential_generator\n return function () {\n seed = (1103515245 * seed + 12345) % 2147483647;\n return seed / 2147483647;\n };\n}\nfunction integer(min, max) {\n if (max == null) {\n max = min;\n min = 0;\n }\n var a, b, d;\n var dist = {\n min: function min(_) {\n if (arguments.length) {\n a = _ || 0;\n d = b - a;\n return dist;\n } else {\n return a;\n }\n },\n max: function max(_) {\n if (arguments.length) {\n b = _ || 0;\n d = b - a;\n return dist;\n } else {\n return b;\n }\n },\n sample: function sample() {\n return a + Math.floor(d * random());\n },\n pdf: function pdf(x) {\n return x === Math.floor(x) && x >= a && x < b ? 1 / d : 0;\n },\n cdf: function cdf(x) {\n var v = Math.floor(x);\n return v < a ? 0 : v >= b ? 1 : (v - a + 1) / d;\n },\n icdf: function icdf(p) {\n return p >= 0 && p <= 1 ? a - 1 + Math.floor(p * d) : NaN;\n }\n };\n return dist.min(min).max(max);\n}\nvar SQRT2PI = Math.sqrt(2 * Math.PI);\nvar SQRT2 = Math.SQRT2;\nvar nextSample = NaN;\nfunction sampleNormal(mean, stdev) {\n mean = mean || 0;\n stdev = stdev == null ? 1 : stdev;\n var x = 0,\n y = 0,\n rds,\n c;\n if (nextSample === nextSample) {\n x = nextSample;\n nextSample = NaN;\n } else {\n do {\n x = random() * 2 - 1;\n y = random() * 2 - 1;\n rds = x * x + y * y;\n } while (rds === 0 || rds > 1);\n c = Math.sqrt(-2 * Math.log(rds) / rds); // Box-Muller transform\n x *= c;\n nextSample = y * c;\n }\n return mean + x * stdev;\n}\nfunction densityNormal(value, mean, stdev) {\n stdev = stdev == null ? 1 : stdev;\n var z = (value - (mean || 0)) / stdev;\n return Math.exp(-0.5 * z * z) / (stdev * SQRT2PI);\n}\n\n// Approximation from West (2009)\n// Better Approximations to Cumulative Normal Functions\nfunction cumulativeNormal(value, mean, stdev) {\n mean = mean || 0;\n stdev = stdev == null ? 1 : stdev;\n var z = (value - mean) / stdev,\n Z = Math.abs(z);\n var cd;\n if (Z > 37) {\n cd = 0;\n } else {\n var _exp = Math.exp(-Z * Z / 2);\n var sum;\n if (Z < 7.07106781186547) {\n sum = 3.52624965998911e-02 * Z + 0.700383064443688;\n sum = sum * Z + 6.37396220353165;\n sum = sum * Z + 33.912866078383;\n sum = sum * Z + 112.079291497871;\n sum = sum * Z + 221.213596169931;\n sum = sum * Z + 220.206867912376;\n cd = _exp * sum;\n sum = 8.83883476483184e-02 * Z + 1.75566716318264;\n sum = sum * Z + 16.064177579207;\n sum = sum * Z + 86.7807322029461;\n sum = sum * Z + 296.564248779674;\n sum = sum * Z + 637.333633378831;\n sum = sum * Z + 793.826512519948;\n sum = sum * Z + 440.413735824752;\n cd = cd / sum;\n } else {\n sum = Z + 0.65;\n sum = Z + 4 / sum;\n sum = Z + 3 / sum;\n sum = Z + 2 / sum;\n sum = Z + 1 / sum;\n cd = _exp / sum / 2.506628274631;\n }\n }\n return z > 0 ? 1 - cd : cd;\n}\n\n// Approximation of Probit function using inverse error function.\nfunction quantileNormal(p, mean, stdev) {\n if (p < 0 || p > 1) return NaN;\n return (mean || 0) + (stdev == null ? 1 : stdev) * SQRT2 * erfinv(2 * p - 1);\n}\n\n// Approximate inverse error function. Implementation from \"Approximating\n// the erfinv function\" by Mike Giles, GPU Computing Gems, volume 2, 2010.\n// Ported from Apache Commons Math, http://www.apache.org/licenses/LICENSE-2.0\nfunction erfinv(x) {\n // beware that the logarithm argument must be\n // commputed as (1.0 - x) * (1.0 + x),\n // it must NOT be simplified as 1.0 - x * x as this\n // would induce rounding errors near the boundaries +/-1\n var w = -Math.log((1 - x) * (1 + x)),\n p;\n if (w < 6.25) {\n w -= 3.125;\n p = -3.6444120640178196996e-21;\n p = -1.685059138182016589e-19 + p * w;\n p = 1.2858480715256400167e-18 + p * w;\n p = 1.115787767802518096e-17 + p * w;\n p = -1.333171662854620906e-16 + p * w;\n p = 2.0972767875968561637e-17 + p * w;\n p = 6.6376381343583238325e-15 + p * w;\n p = -4.0545662729752068639e-14 + p * w;\n p = -8.1519341976054721522e-14 + p * w;\n p = 2.6335093153082322977e-12 + p * w;\n p = -1.2975133253453532498e-11 + p * w;\n p = -5.4154120542946279317e-11 + p * w;\n p = 1.051212273321532285e-09 + p * w;\n p = -4.1126339803469836976e-09 + p * w;\n p = -2.9070369957882005086e-08 + p * w;\n p = 4.2347877827932403518e-07 + p * w;\n p = -1.3654692000834678645e-06 + p * w;\n p = -1.3882523362786468719e-05 + p * w;\n p = 0.0001867342080340571352 + p * w;\n p = -0.00074070253416626697512 + p * w;\n p = -0.0060336708714301490533 + p * w;\n p = 0.24015818242558961693 + p * w;\n p = 1.6536545626831027356 + p * w;\n } else if (w < 16.0) {\n w = Math.sqrt(w) - 3.25;\n p = 2.2137376921775787049e-09;\n p = 9.0756561938885390979e-08 + p * w;\n p = -2.7517406297064545428e-07 + p * w;\n p = 1.8239629214389227755e-08 + p * w;\n p = 1.5027403968909827627e-06 + p * w;\n p = -4.013867526981545969e-06 + p * w;\n p = 2.9234449089955446044e-06 + p * w;\n p = 1.2475304481671778723e-05 + p * w;\n p = -4.7318229009055733981e-05 + p * w;\n p = 6.8284851459573175448e-05 + p * w;\n p = 2.4031110387097893999e-05 + p * w;\n p = -0.0003550375203628474796 + p * w;\n p = 0.00095328937973738049703 + p * w;\n p = -0.0016882755560235047313 + p * w;\n p = 0.0024914420961078508066 + p * w;\n p = -0.0037512085075692412107 + p * w;\n p = 0.005370914553590063617 + p * w;\n p = 1.0052589676941592334 + p * w;\n p = 3.0838856104922207635 + p * w;\n } else if (Number.isFinite(w)) {\n w = Math.sqrt(w) - 5.0;\n p = -2.7109920616438573243e-11;\n p = -2.5556418169965252055e-10 + p * w;\n p = 1.5076572693500548083e-09 + p * w;\n p = -3.7894654401267369937e-09 + p * w;\n p = 7.6157012080783393804e-09 + p * w;\n p = -1.4960026627149240478e-08 + p * w;\n p = 2.9147953450901080826e-08 + p * w;\n p = -6.7711997758452339498e-08 + p * w;\n p = 2.2900482228026654717e-07 + p * w;\n p = -9.9298272942317002539e-07 + p * w;\n p = 4.5260625972231537039e-06 + p * w;\n p = -1.9681778105531670567e-05 + p * w;\n p = 7.5995277030017761139e-05 + p * w;\n p = -0.00021503011930044477347 + p * w;\n p = -0.00013871931833623122026 + p * w;\n p = 1.0103004648645343977 + p * w;\n p = 4.8499064014085844221 + p * w;\n } else {\n p = Infinity;\n }\n return p * x;\n}\nfunction gaussian(mean, stdev) {\n var mu, sigma;\n var dist = {\n mean: function mean(_) {\n if (arguments.length) {\n mu = _ || 0;\n return dist;\n } else {\n return mu;\n }\n },\n stdev: function stdev(_) {\n if (arguments.length) {\n sigma = _ == null ? 1 : _;\n return dist;\n } else {\n return sigma;\n }\n },\n sample: function sample() {\n return sampleNormal(mu, sigma);\n },\n pdf: function pdf(value) {\n return densityNormal(value, mu, sigma);\n },\n cdf: function cdf(value) {\n return cumulativeNormal(value, mu, sigma);\n },\n icdf: function icdf(p) {\n return quantileNormal(p, mu, sigma);\n }\n };\n return dist.mean(mean).stdev(stdev);\n}\nfunction kde(support, _bandwidth) {\n var kernel = gaussian();\n var n = 0;\n var dist = {\n data: function data(_) {\n if (arguments.length) {\n support = _;\n n = _ ? _.length : 0;\n return dist.bandwidth(_bandwidth);\n } else {\n return support;\n }\n },\n bandwidth: function bandwidth(_) {\n if (!arguments.length) return _bandwidth;\n _bandwidth = _;\n if (!_bandwidth && support) _bandwidth = estimateBandwidth(support);\n return dist;\n },\n sample: function sample() {\n return support[~~(random() * n)] + _bandwidth * kernel.sample();\n },\n pdf: function pdf(x) {\n var y = 0,\n i = 0;\n for (; i < n; ++i) {\n y += kernel.pdf((x - support[i]) / _bandwidth);\n }\n return y / _bandwidth / n;\n },\n cdf: function cdf(x) {\n var y = 0,\n i = 0;\n for (; i < n; ++i) {\n y += kernel.cdf((x - support[i]) / _bandwidth);\n }\n return y / n;\n },\n icdf: function icdf() {\n throw Error('KDE icdf not supported.');\n }\n };\n return dist.data(support);\n}\nfunction sampleLogNormal(mean, stdev) {\n mean = mean || 0;\n stdev = stdev == null ? 1 : stdev;\n return Math.exp(mean + sampleNormal() * stdev);\n}\nfunction densityLogNormal(value, mean, stdev) {\n if (value <= 0) return 0;\n mean = mean || 0;\n stdev = stdev == null ? 1 : stdev;\n var z = (Math.log(value) - mean) / stdev;\n return Math.exp(-0.5 * z * z) / (stdev * SQRT2PI * value);\n}\nfunction cumulativeLogNormal(value, mean, stdev) {\n return cumulativeNormal(Math.log(value), mean, stdev);\n}\nfunction quantileLogNormal(p, mean, stdev) {\n return Math.exp(quantileNormal(p, mean, stdev));\n}\nfunction lognormal(mean, stdev) {\n var mu, sigma;\n var dist = {\n mean: function mean(_) {\n if (arguments.length) {\n mu = _ || 0;\n return dist;\n } else {\n return mu;\n }\n },\n stdev: function stdev(_) {\n if (arguments.length) {\n sigma = _ == null ? 1 : _;\n return dist;\n } else {\n return sigma;\n }\n },\n sample: function sample() {\n return sampleLogNormal(mu, sigma);\n },\n pdf: function pdf(value) {\n return densityLogNormal(value, mu, sigma);\n },\n cdf: function cdf(value) {\n return cumulativeLogNormal(value, mu, sigma);\n },\n icdf: function icdf(p) {\n return quantileLogNormal(p, mu, sigma);\n }\n };\n return dist.mean(mean).stdev(stdev);\n}\nfunction mixture(dists, _weights) {\n var m = 0,\n w;\n function normalize(x) {\n var w = [];\n var sum = 0,\n i;\n for (i = 0; i < m; ++i) {\n sum += w[i] = x[i] == null ? 1 : +x[i];\n }\n for (i = 0; i < m; ++i) {\n w[i] /= sum;\n }\n return w;\n }\n var dist = {\n weights: function weights(_) {\n if (arguments.length) {\n w = normalize(_weights = _ || []);\n return dist;\n }\n return _weights;\n },\n distributions: function distributions(_) {\n if (arguments.length) {\n if (_) {\n m = _.length;\n dists = _;\n } else {\n m = 0;\n dists = [];\n }\n return dist.weights(_weights);\n }\n return dists;\n },\n sample: function sample() {\n var r = random();\n var d = dists[m - 1],\n v = w[0],\n i = 0;\n\n // first select distribution\n for (; i < m - 1; v += w[++i]) {\n if (r < v) {\n d = dists[i];\n break;\n }\n }\n // then sample from it\n return d.sample();\n },\n pdf: function pdf(x) {\n var p = 0,\n i = 0;\n for (; i < m; ++i) {\n p += w[i] * dists[i].pdf(x);\n }\n return p;\n },\n cdf: function cdf(x) {\n var p = 0,\n i = 0;\n for (; i < m; ++i) {\n p += w[i] * dists[i].cdf(x);\n }\n return p;\n },\n icdf: function icdf() {\n throw Error('Mixture icdf not supported.');\n }\n };\n return dist.distributions(dists).weights(_weights);\n}\nfunction sampleUniform(min, max) {\n if (max == null) {\n max = min == null ? 1 : min;\n min = 0;\n }\n return min + (max - min) * random();\n}\nfunction densityUniform(value, min, max) {\n if (max == null) {\n max = min == null ? 1 : min;\n min = 0;\n }\n return value >= min && value <= max ? 1 / (max - min) : 0;\n}\nfunction cumulativeUniform(value, min, max) {\n if (max == null) {\n max = min == null ? 1 : min;\n min = 0;\n }\n return value < min ? 0 : value > max ? 1 : (value - min) / (max - min);\n}\nfunction quantileUniform(p, min, max) {\n if (max == null) {\n max = min == null ? 1 : min;\n min = 0;\n }\n return p >= 0 && p <= 1 ? min + p * (max - min) : NaN;\n}\nfunction uniform(min, max) {\n var a, b;\n var dist = {\n min: function min(_) {\n if (arguments.length) {\n a = _ || 0;\n return dist;\n } else {\n return a;\n }\n },\n max: function max(_) {\n if (arguments.length) {\n b = _ == null ? 1 : _;\n return dist;\n } else {\n return b;\n }\n },\n sample: function sample() {\n return sampleUniform(a, b);\n },\n pdf: function pdf(value) {\n return densityUniform(value, a, b);\n },\n cdf: function cdf(value) {\n return cumulativeUniform(value, a, b);\n },\n icdf: function icdf(p) {\n return quantileUniform(p, a, b);\n }\n };\n if (max == null) {\n max = min == null ? 1 : min;\n min = 0;\n }\n return dist.min(min).max(max);\n}\nfunction constant(data, x, y) {\n var mean = 0,\n n = 0;\n var _iterator3 = _createForOfIteratorHelper(data),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var d = _step3.value;\n var val = y(d);\n if (x(d) == null || val == null || isNaN(val)) continue;\n mean += (val - mean) / ++n;\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n return {\n coef: [mean],\n predict: function predict() {\n return mean;\n },\n rSquared: 0\n };\n}\n\n// Ordinary Least Squares\nfunction ols(uX, uY, uXY, uX2) {\n var delta = uX2 - uX * uX,\n slope = Math.abs(delta) < 1e-24 ? 0 : (uXY - uX * uY) / delta,\n intercept = uY - slope * uX;\n return [intercept, slope];\n}\nfunction points(data, x, y, sort) {\n data = data.filter(function (d) {\n var u = x(d),\n v = y(d);\n return u != null && (u = +u) >= u && v != null && (v = +v) >= v;\n });\n if (sort) {\n data.sort(function (a, b) {\n return x(a) - x(b);\n });\n }\n var n = data.length,\n X = new Float64Array(n),\n Y = new Float64Array(n);\n\n // extract values, calculate means\n var i = 0,\n ux = 0,\n uy = 0,\n xv,\n yv,\n d;\n var _iterator4 = _createForOfIteratorHelper(data),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n d = _step4.value;\n X[i] = xv = +x(d);\n Y[i] = yv = +y(d);\n ++i;\n ux += (xv - ux) / i;\n uy += (yv - uy) / i;\n }\n\n // mean center the data\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n for (i = 0; i < n; ++i) {\n X[i] -= ux;\n Y[i] -= uy;\n }\n return [X, Y, ux, uy];\n}\nfunction visitPoints(data, x, y, callback) {\n var i = -1,\n u,\n v;\n var _iterator5 = _createForOfIteratorHelper(data),\n _step5;\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var d = _step5.value;\n u = x(d);\n v = y(d);\n if (u != null && (u = +u) >= u && v != null && (v = +v) >= v) {\n callback(u, v, ++i);\n }\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n}\n\n// Adapted from d3-regression by Harry Stevens\n// License: https://github.com/HarryStevens/d3-regression/blob/master/LICENSE\nfunction rSquared(data, x, y, uY, predict) {\n var SSE = 0,\n SST = 0;\n visitPoints(data, x, y, function (dx, dy) {\n var sse = dy - predict(dx),\n sst = dy - uY;\n SSE += sse * sse;\n SST += sst * sst;\n });\n return 1 - SSE / SST;\n}\n\n// Adapted from d3-regression by Harry Stevens\n// License: https://github.com/HarryStevens/d3-regression/blob/master/LICENSE\nfunction linear(data, x, y) {\n var X = 0,\n Y = 0,\n XY = 0,\n X2 = 0,\n n = 0;\n visitPoints(data, x, y, function (dx, dy) {\n ++n;\n X += (dx - X) / n;\n Y += (dy - Y) / n;\n XY += (dx * dy - XY) / n;\n X2 += (dx * dx - X2) / n;\n });\n var coef = ols(X, Y, XY, X2),\n predict = function predict(x) {\n return coef[0] + coef[1] * x;\n };\n return {\n coef: coef,\n predict: predict,\n rSquared: rSquared(data, x, y, Y, predict)\n };\n}\n\n// Adapted from d3-regression by Harry Stevens\n// License: https://github.com/HarryStevens/d3-regression/blob/master/LICENSE\nfunction log(data, x, y) {\n var X = 0,\n Y = 0,\n XY = 0,\n X2 = 0,\n n = 0;\n visitPoints(data, x, y, function (dx, dy) {\n ++n;\n dx = Math.log(dx);\n X += (dx - X) / n;\n Y += (dy - Y) / n;\n XY += (dx * dy - XY) / n;\n X2 += (dx * dx - X2) / n;\n });\n var coef = ols(X, Y, XY, X2),\n predict = function predict(x) {\n return coef[0] + coef[1] * Math.log(x);\n };\n return {\n coef: coef,\n predict: predict,\n rSquared: rSquared(data, x, y, Y, predict)\n };\n}\nfunction exp(data, x, y) {\n // eslint-disable-next-line no-unused-vars\n var _points = points(data, x, y),\n _points2 = _slicedToArray(_points, 4),\n xv = _points2[0],\n yv = _points2[1],\n ux = _points2[2],\n uy = _points2[3];\n var YL = 0,\n XY = 0,\n XYL = 0,\n X2Y = 0,\n n = 0,\n dx,\n ly,\n xy;\n visitPoints(data, x, y, function (_, dy) {\n dx = xv[n++];\n ly = Math.log(dy);\n xy = dx * dy;\n YL += (dy * ly - YL) / n;\n XY += (xy - XY) / n;\n XYL += (xy * ly - XYL) / n;\n X2Y += (dx * xy - X2Y) / n;\n });\n var _ols = ols(XY / uy, YL / uy, XYL / uy, X2Y / uy),\n _ols2 = _slicedToArray(_ols, 2),\n c0 = _ols2[0],\n c1 = _ols2[1],\n predict = function predict(x) {\n return Math.exp(c0 + c1 * (x - ux));\n };\n return {\n coef: [Math.exp(c0 - c1 * ux), c1],\n predict: predict,\n rSquared: rSquared(data, x, y, uy, predict)\n };\n}\n\n// Adapted from d3-regression by Harry Stevens\n// License: https://github.com/HarryStevens/d3-regression/blob/master/LICENSE\nfunction pow(data, x, y) {\n var X = 0,\n Y = 0,\n XY = 0,\n X2 = 0,\n YS = 0,\n n = 0;\n visitPoints(data, x, y, function (dx, dy) {\n var lx = Math.log(dx),\n ly = Math.log(dy);\n ++n;\n X += (lx - X) / n;\n Y += (ly - Y) / n;\n XY += (lx * ly - XY) / n;\n X2 += (lx * lx - X2) / n;\n YS += (dy - YS) / n;\n });\n var coef = ols(X, Y, XY, X2),\n predict = function predict(x) {\n return coef[0] * Math.pow(x, coef[1]);\n };\n coef[0] = Math.exp(coef[0]);\n return {\n coef: coef,\n predict: predict,\n rSquared: rSquared(data, x, y, YS, predict)\n };\n}\nfunction quad(data, x, y) {\n var _points3 = points(data, x, y),\n _points4 = _slicedToArray(_points3, 4),\n xv = _points4[0],\n yv = _points4[1],\n ux = _points4[2],\n uy = _points4[3],\n n = xv.length;\n var X2 = 0,\n X3 = 0,\n X4 = 0,\n XY = 0,\n X2Y = 0,\n i,\n dx,\n dy,\n x2;\n for (i = 0; i < n;) {\n dx = xv[i];\n dy = yv[i++];\n x2 = dx * dx;\n X2 += (x2 - X2) / i;\n X3 += (x2 * dx - X3) / i;\n X4 += (x2 * x2 - X4) / i;\n XY += (dx * dy - XY) / i;\n X2Y += (x2 * dy - X2Y) / i;\n }\n var X2X2 = X4 - X2 * X2,\n d = X2 * X2X2 - X3 * X3,\n a = (X2Y * X2 - XY * X3) / d,\n b = (XY * X2X2 - X2Y * X3) / d,\n c = -a * X2,\n predict = function predict(x) {\n x = x - ux;\n return a * x * x + b * x + c + uy;\n };\n\n // transform coefficients back from mean-centered space\n return {\n coef: [c - b * ux + a * ux * ux + uy, b - 2 * a * ux, a],\n predict: predict,\n rSquared: rSquared(data, x, y, uy, predict)\n };\n}\n\n// Adapted from d3-regression by Harry Stevens\n// License: https://github.com/HarryStevens/d3-regression/blob/master/LICENSE\n// ... which was adapted from regression-js by Tom Alexander\n// Source: https://github.com/Tom-Alexander/regression-js/blob/master/src/regression.js#L246\n// License: https://github.com/Tom-Alexander/regression-js/blob/master/LICENSE\nfunction poly(data, x, y, order) {\n // use more efficient methods for lower orders\n if (order === 0) return constant(data, x, y);\n if (order === 1) return linear(data, x, y);\n if (order === 2) return quad(data, x, y);\n var _points5 = points(data, x, y),\n _points6 = _slicedToArray(_points5, 4),\n xv = _points6[0],\n yv = _points6[1],\n ux = _points6[2],\n uy = _points6[3],\n n = xv.length,\n lhs = [],\n rhs = [],\n k = order + 1;\n var i, j, l, v, c;\n for (i = 0; i < k; ++i) {\n for (l = 0, v = 0; l < n; ++l) {\n v += Math.pow(xv[l], i) * yv[l];\n }\n lhs.push(v);\n c = new Float64Array(k);\n for (j = 0; j < k; ++j) {\n for (l = 0, v = 0; l < n; ++l) {\n v += Math.pow(xv[l], i + j);\n }\n c[j] = v;\n }\n rhs.push(c);\n }\n rhs.push(lhs);\n var coef = gaussianElimination(rhs),\n predict = function predict(x) {\n x -= ux;\n var y = uy + coef[0] + coef[1] * x + coef[2] * x * x;\n for (i = 3; i < k; ++i) y += coef[i] * Math.pow(x, i);\n return y;\n };\n return {\n coef: uncenter(k, coef, -ux, uy),\n predict: predict,\n rSquared: rSquared(data, x, y, uy, predict)\n };\n}\nfunction uncenter(k, a, x, y) {\n var z = Array(k);\n var i, j, v, c;\n\n // initialize to zero\n for (i = 0; i < k; ++i) z[i] = 0;\n\n // polynomial expansion\n for (i = k - 1; i >= 0; --i) {\n v = a[i];\n c = 1;\n z[i] += v;\n for (j = 1; j <= i; ++j) {\n c *= (i + 1 - j) / j; // binomial coefficent\n z[i - j] += v * Math.pow(x, j) * c;\n }\n }\n\n // bias term\n z[0] += y;\n return z;\n}\n\n// Given an array for a two-dimensional matrix and the polynomial order,\n// solve A * x = b using Gaussian elimination.\nfunction gaussianElimination(matrix) {\n var n = matrix.length - 1,\n coef = [];\n var i, j, k, r, t;\n for (i = 0; i < n; ++i) {\n r = i; // max row\n for (j = i + 1; j < n; ++j) {\n if (Math.abs(matrix[i][j]) > Math.abs(matrix[i][r])) {\n r = j;\n }\n }\n for (k = i; k < n + 1; ++k) {\n t = matrix[k][i];\n matrix[k][i] = matrix[k][r];\n matrix[k][r] = t;\n }\n for (j = i + 1; j < n; ++j) {\n for (k = n; k >= i; k--) {\n matrix[k][j] -= matrix[k][i] * matrix[i][j] / matrix[i][i];\n }\n }\n }\n for (j = n - 1; j >= 0; --j) {\n t = 0;\n for (k = j + 1; k < n; ++k) {\n t += matrix[k][j] * coef[k];\n }\n coef[j] = (matrix[n][j] - t) / matrix[j][j];\n }\n return coef;\n}\nvar maxiters = 2,\n epsilon = 1e-12;\n\n// Adapted from science.js by Jason Davies\n// Source: https://github.com/jasondavies/science.js/blob/master/src/stats/loess.js\n// License: https://github.com/jasondavies/science.js/blob/master/LICENSE\nfunction loess(data, x, y, bandwidth) {\n var _points7 = points(data, x, y, true),\n _points8 = _slicedToArray(_points7, 4),\n xv = _points8[0],\n yv = _points8[1],\n ux = _points8[2],\n uy = _points8[3],\n n = xv.length,\n bw = Math.max(2, ~~(bandwidth * n)),\n yhat = new Float64Array(n),\n residuals = new Float64Array(n),\n robustWeights = new Float64Array(n).fill(1);\n for (var iter = -1; ++iter <= maxiters;) {\n var interval = [0, bw - 1];\n for (var i = 0; i < n; ++i) {\n var dx = xv[i],\n i0 = interval[0],\n i1 = interval[1],\n edge = dx - xv[i0] > xv[i1] - dx ? i0 : i1;\n var W = 0,\n X = 0,\n Y = 0,\n XY = 0,\n X2 = 0;\n var denom = 1 / Math.abs(xv[edge] - dx || 1); // avoid singularity!\n\n for (var k = i0; k <= i1; ++k) {\n var xk = xv[k],\n yk = yv[k],\n w = tricube(Math.abs(dx - xk) * denom) * robustWeights[k],\n xkw = xk * w;\n W += w;\n X += xkw;\n Y += yk * w;\n XY += yk * xkw;\n X2 += xk * xkw;\n }\n\n // linear regression fit\n var _ols3 = ols(X / W, Y / W, XY / W, X2 / W),\n _ols4 = _slicedToArray(_ols3, 2),\n a = _ols4[0],\n b = _ols4[1];\n yhat[i] = a + b * dx;\n residuals[i] = Math.abs(yv[i] - yhat[i]);\n updateInterval(xv, i + 1, interval);\n }\n if (iter === maxiters) {\n break;\n }\n var medianResidual = median(residuals);\n if (Math.abs(medianResidual) < epsilon) break;\n for (var _i = 0, arg, _w; _i < n; ++_i) {\n arg = residuals[_i] / (6 * medianResidual);\n // default to epsilon (rather than zero) for large deviations\n // keeping weights tiny but non-zero prevents singularites\n robustWeights[_i] = arg >= 1 ? epsilon : (_w = 1 - arg * arg) * _w;\n }\n }\n return output(xv, yhat, ux, uy);\n}\n\n// weighting kernel for local regression\nfunction tricube(x) {\n return (x = 1 - x * x * x) * x * x;\n}\n\n// advance sliding window interval of nearest neighbors\nfunction updateInterval(xv, i, interval) {\n var val = xv[i];\n var left = interval[0],\n right = interval[1] + 1;\n if (right >= xv.length) return;\n\n // step right if distance to new right edge is <= distance to old left edge\n // step when distance is equal to ensure movement over duplicate x values\n while (i > left && xv[right] - val <= val - xv[left]) {\n interval[0] = ++left;\n interval[1] = right;\n ++right;\n }\n}\n\n// generate smoothed output points\n// average points with repeated x values\nfunction output(xv, yhat, ux, uy) {\n var n = xv.length,\n out = [];\n var i = 0,\n cnt = 0,\n prev = [],\n v;\n for (; i < n; ++i) {\n v = xv[i] + ux;\n if (prev[0] === v) {\n // average output values via online update\n prev[1] += (yhat[i] - prev[1]) / ++cnt;\n } else {\n // add new output point\n cnt = 0;\n prev[1] += uy;\n prev = [v, yhat[i]];\n out.push(prev);\n }\n }\n prev[1] += uy;\n return out;\n}\n\n// subdivide up to accuracy of 0.5 degrees\nvar MIN_RADIANS = 0.5 * Math.PI / 180;\n\n// Adaptively sample an interpolated function over a domain extent\nfunction sampleCurve(f, extent, minSteps, maxSteps) {\n minSteps = minSteps || 25;\n maxSteps = Math.max(minSteps, maxSteps || 200);\n var point = function point(x) {\n return [x, f(x)];\n },\n minX = extent[0],\n maxX = extent[1],\n span = maxX - minX,\n stop = span / maxSteps,\n prev = [point(minX)],\n next = [];\n if (minSteps === maxSteps) {\n // no adaptation, sample uniform grid directly and return\n for (var i = 1; i < maxSteps; ++i) {\n prev.push(point(minX + i / minSteps * span));\n }\n prev.push(point(maxX));\n return prev;\n } else {\n // sample minimum points on uniform grid\n // then move on to perform adaptive refinement\n next.push(point(maxX));\n for (var _i2 = minSteps; --_i2 > 0;) {\n next.push(point(minX + _i2 / minSteps * span));\n }\n }\n var p0 = prev[0];\n var p1 = next[next.length - 1];\n var sx = 1 / span;\n var sy = scaleY(p0[1], next);\n while (p1) {\n // midpoint for potential curve subdivision\n var pm = point((p0[0] + p1[0]) / 2);\n var dx = pm[0] - p0[0] >= stop;\n if (dx && angleDelta(p0, pm, p1, sx, sy) > MIN_RADIANS) {\n // maximum resolution has not yet been met, and\n // subdivision midpoint is sufficiently different from endpoint\n // save subdivision, push midpoint onto the visitation stack\n next.push(pm);\n } else {\n // subdivision midpoint sufficiently similar to endpoint\n // skip subdivision, store endpoint, move to next point on the stack\n p0 = p1;\n prev.push(p1);\n next.pop();\n }\n p1 = next[next.length - 1];\n }\n return prev;\n}\nfunction scaleY(init, points) {\n var ymin = init;\n var ymax = init;\n var n = points.length;\n for (var i = 0; i < n; ++i) {\n var y = points[i][1];\n if (y < ymin) ymin = y;\n if (y > ymax) ymax = y;\n }\n return 1 / (ymax - ymin);\n}\nfunction angleDelta(p, q, r, sx, sy) {\n var a0 = Math.atan2(sy * (r[1] - p[1]), sx * (r[0] - p[0])),\n a1 = Math.atan2(sy * (q[1] - p[1]), sx * (q[0] - p[0]));\n return Math.abs(a0 - a1);\n}\nexport { estimateBandwidth as bandwidthNRD, bin, bootstrapCI, cumulativeLogNormal, cumulativeNormal, cumulativeUniform, densityLogNormal, densityNormal, densityUniform, dotbin, quantileLogNormal, quantileNormal, quantileUniform, quantiles, quartiles, random, integer as randomInteger, kde as randomKDE, lcg as randomLCG, lognormal as randomLogNormal, mixture as randomMixture, gaussian as randomNormal, uniform as randomUniform, constant as regressionConstant, exp as regressionExp, linear as regressionLinear, loess as regressionLoess, log as regressionLog, poly as regressionPoly, pow as regressionPow, quad as regressionQuad, sampleCurve, sampleLogNormal, sampleNormal, sampleUniform, setRandom };","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nexport default function mean(values, valueof) {\n var count = 0;\n var sum = 0;\n if (valueof === undefined) {\n var _iterator = _createForOfIteratorHelper(values),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var value = _step.value;\n if (value != null && (value = +value) >= value) {\n ++count, sum += value;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n } else {\n var index = -1;\n var _iterator2 = _createForOfIteratorHelper(values),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _value = _step2.value;\n if ((_value = valueof(_value, ++index, values)) != null && (_value = +_value) >= _value) {\n ++count, sum += _value;\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n if (count) return sum / count;\n}","export default function range(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n while (++i < n) {\n range[i] = start + i * step;\n }\n return range;\n}","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport \"core-js/modules/es.array.flat.js\";\nimport \"core-js/modules/es.array.unscopables.flat.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { extend, identity, field, hasOwnProperty, extentIndex, inherits, array, accessorName, error, accessorFields, accessor, toNumber, merge, compare, truthy, extent, span, fastmap, isArray, key, ascending, peek, zero, constant } from 'vega-util';\nimport { tupleid, Transform, replace, ingest, stableCompare, Operator, derive, rederive } from 'vega-dataflow';\nimport { quartiles, bootstrapCI, bin, randomKDE, randomMixture, randomNormal, randomLogNormal, randomUniform, sampleCurve, dotbin, quantiles, random } from 'vega-statistics';\nimport { median, mean, min, max, range, bisector } from 'd3-array';\nimport { TIME_UNITS, utcInterval, timeInterval, timeBin, timeUnits, utcFloor, timeFloor } from 'vega-time';\nfunction multikey(f) {\n return function (x) {\n var n = f.length;\n var i = 1,\n k = String(f[0](x));\n for (; i < n; ++i) {\n k += '|' + f[i](x);\n }\n return k;\n };\n}\nfunction groupkey(fields) {\n return !fields || !fields.length ? function () {\n return '';\n } : fields.length === 1 ? fields[0] : multikey(fields);\n}\nfunction measureName(op, field, as) {\n return as || op + (!field ? '' : '_' + field);\n}\nvar noop = function noop() {};\nvar base_op = {\n init: noop,\n add: noop,\n rem: noop,\n idx: 0\n};\nvar AggregateOps = {\n values: {\n init: function init(m) {\n return m.cell.store = true;\n },\n value: function value(m) {\n return m.cell.data.values();\n },\n idx: -1\n },\n count: {\n value: function value(m) {\n return m.cell.num;\n }\n },\n __count__: {\n value: function value(m) {\n return m.missing + m.valid;\n }\n },\n missing: {\n value: function value(m) {\n return m.missing;\n }\n },\n valid: {\n value: function value(m) {\n return m.valid;\n }\n },\n sum: {\n init: function init(m) {\n return m.sum = 0;\n },\n value: function value(m) {\n return m.sum;\n },\n add: function add(m, v) {\n return m.sum += +v;\n },\n rem: function rem(m, v) {\n return m.sum -= v;\n }\n },\n product: {\n init: function init(m) {\n return m.product = 1;\n },\n value: function value(m) {\n return m.valid ? m.product : undefined;\n },\n add: function add(m, v) {\n return m.product *= v;\n },\n rem: function rem(m, v) {\n return m.product /= v;\n }\n },\n mean: {\n init: function init(m) {\n return m.mean = 0;\n },\n value: function value(m) {\n return m.valid ? m.mean : undefined;\n },\n add: function add(m, v) {\n return m.mean_d = v - m.mean, m.mean += m.mean_d / m.valid;\n },\n rem: function rem(m, v) {\n return m.mean_d = v - m.mean, m.mean -= m.valid ? m.mean_d / m.valid : m.mean;\n }\n },\n average: {\n value: function value(m) {\n return m.valid ? m.mean : undefined;\n },\n req: ['mean'],\n idx: 1\n },\n variance: {\n init: function init(m) {\n return m.dev = 0;\n },\n value: function value(m) {\n return m.valid > 1 ? m.dev / (m.valid - 1) : undefined;\n },\n add: function add(m, v) {\n return m.dev += m.mean_d * (v - m.mean);\n },\n rem: function rem(m, v) {\n return m.dev -= m.mean_d * (v - m.mean);\n },\n req: ['mean'],\n idx: 1\n },\n variancep: {\n value: function value(m) {\n return m.valid > 1 ? m.dev / m.valid : undefined;\n },\n req: ['variance'],\n idx: 2\n },\n stdev: {\n value: function value(m) {\n return m.valid > 1 ? Math.sqrt(m.dev / (m.valid - 1)) : undefined;\n },\n req: ['variance'],\n idx: 2\n },\n stdevp: {\n value: function value(m) {\n return m.valid > 1 ? Math.sqrt(m.dev / m.valid) : undefined;\n },\n req: ['variance'],\n idx: 2\n },\n stderr: {\n value: function value(m) {\n return m.valid > 1 ? Math.sqrt(m.dev / (m.valid * (m.valid - 1))) : undefined;\n },\n req: ['variance'],\n idx: 2\n },\n distinct: {\n value: function value(m) {\n return m.cell.data.distinct(m.get);\n },\n req: ['values'],\n idx: 3\n },\n ci0: {\n value: function value(m) {\n return m.cell.data.ci0(m.get);\n },\n req: ['values'],\n idx: 3\n },\n ci1: {\n value: function value(m) {\n return m.cell.data.ci1(m.get);\n },\n req: ['values'],\n idx: 3\n },\n median: {\n value: function value(m) {\n return m.cell.data.q2(m.get);\n },\n req: ['values'],\n idx: 3\n },\n q1: {\n value: function value(m) {\n return m.cell.data.q1(m.get);\n },\n req: ['values'],\n idx: 3\n },\n q3: {\n value: function value(m) {\n return m.cell.data.q3(m.get);\n },\n req: ['values'],\n idx: 3\n },\n min: {\n init: function init(m) {\n return m.min = undefined;\n },\n value: function value(m) {\n return m.min = Number.isNaN(m.min) ? m.cell.data.min(m.get) : m.min;\n },\n add: function add(m, v) {\n if (v < m.min || m.min === undefined) m.min = v;\n },\n rem: function rem(m, v) {\n if (v <= m.min) m.min = NaN;\n },\n req: ['values'],\n idx: 4\n },\n max: {\n init: function init(m) {\n return m.max = undefined;\n },\n value: function value(m) {\n return m.max = Number.isNaN(m.max) ? m.cell.data.max(m.get) : m.max;\n },\n add: function add(m, v) {\n if (v > m.max || m.max === undefined) m.max = v;\n },\n rem: function rem(m, v) {\n if (v >= m.max) m.max = NaN;\n },\n req: ['values'],\n idx: 4\n },\n argmin: {\n init: function init(m) {\n return m.argmin = undefined;\n },\n value: function value(m) {\n return m.argmin || m.cell.data.argmin(m.get);\n },\n add: function add(m, v, t) {\n if (v < m.min) m.argmin = t;\n },\n rem: function rem(m, v) {\n if (v <= m.min) m.argmin = undefined;\n },\n req: ['min', 'values'],\n idx: 3\n },\n argmax: {\n init: function init(m) {\n return m.argmax = undefined;\n },\n value: function value(m) {\n return m.argmax || m.cell.data.argmax(m.get);\n },\n add: function add(m, v, t) {\n if (v > m.max) m.argmax = t;\n },\n rem: function rem(m, v) {\n if (v >= m.max) m.argmax = undefined;\n },\n req: ['max', 'values'],\n idx: 3\n }\n};\nvar ValidAggregateOps = Object.keys(AggregateOps).filter(function (d) {\n return d !== '__count__';\n});\nfunction measure(key, value) {\n return function (out) {\n return extend({\n name: key,\n out: out || key\n }, base_op, value);\n };\n}\n[].concat(_toConsumableArray(ValidAggregateOps), ['__count__']).forEach(function (key) {\n AggregateOps[key] = measure(key, AggregateOps[key]);\n});\nfunction createMeasure(op, name) {\n return AggregateOps[op](name);\n}\nfunction compareIndex(a, b) {\n return a.idx - b.idx;\n}\nfunction resolve(agg) {\n var map = {};\n agg.forEach(function (a) {\n return map[a.name] = a;\n });\n var getreqs = function getreqs(a) {\n if (!a.req) return;\n a.req.forEach(function (key) {\n if (!map[key]) getreqs(map[key] = AggregateOps[key]());\n });\n };\n agg.forEach(getreqs);\n return Object.values(map).sort(compareIndex);\n}\nfunction init() {\n var _this = this;\n this.valid = 0;\n this.missing = 0;\n this._ops.forEach(function (op) {\n return op.init(_this);\n });\n}\nfunction add(v, t) {\n var _this2 = this;\n if (v == null || v === '') {\n ++this.missing;\n return;\n }\n if (v !== v) return;\n ++this.valid;\n this._ops.forEach(function (op) {\n return op.add(_this2, v, t);\n });\n}\nfunction rem(v, t) {\n var _this3 = this;\n if (v == null || v === '') {\n --this.missing;\n return;\n }\n if (v !== v) return;\n --this.valid;\n this._ops.forEach(function (op) {\n return op.rem(_this3, v, t);\n });\n}\nfunction set(t) {\n var _this4 = this;\n this._out.forEach(function (op) {\n return t[op.out] = op.value(_this4);\n });\n return t;\n}\nfunction compileMeasures(agg, field) {\n var get = field || identity,\n ops = resolve(agg),\n out = agg.slice().sort(compareIndex);\n function ctr(cell) {\n this._ops = ops;\n this._out = out;\n this.cell = cell;\n this.init();\n }\n ctr.prototype.init = init;\n ctr.prototype.add = add;\n ctr.prototype.rem = rem;\n ctr.prototype.set = set;\n ctr.prototype.get = get;\n ctr.fields = agg.map(function (op) {\n return op.out;\n });\n return ctr;\n}\nfunction TupleStore(key) {\n this._key = key ? field(key) : tupleid;\n this.reset();\n}\nvar prototype$1 = TupleStore.prototype;\nprototype$1.reset = function () {\n this._add = [];\n this._rem = [];\n this._ext = null;\n this._get = null;\n this._q = null;\n};\nprototype$1.add = function (v) {\n this._add.push(v);\n};\nprototype$1.rem = function (v) {\n this._rem.push(v);\n};\nprototype$1.values = function () {\n this._get = null;\n if (this._rem.length === 0) return this._add;\n var a = this._add,\n r = this._rem,\n k = this._key,\n n = a.length,\n m = r.length,\n x = Array(n - m),\n map = {};\n var i, j, v;\n\n // use unique key field to clear removed values\n for (i = 0; i < m; ++i) {\n map[k(r[i])] = 1;\n }\n for (i = 0, j = 0; i < n; ++i) {\n if (map[k(v = a[i])]) {\n map[k(v)] = 0;\n } else {\n x[j++] = v;\n }\n }\n this._rem = [];\n return this._add = x;\n};\n\n// memoizing statistics methods\n\nprototype$1.distinct = function (get) {\n var v = this.values(),\n map = {};\n var n = v.length,\n count = 0,\n s;\n while (--n >= 0) {\n s = get(v[n]) + '';\n if (!hasOwnProperty(map, s)) {\n map[s] = 1;\n ++count;\n }\n }\n return count;\n};\nprototype$1.extent = function (get) {\n if (this._get !== get || !this._ext) {\n var v = this.values(),\n i = extentIndex(v, get);\n this._ext = [v[i[0]], v[i[1]]];\n this._get = get;\n }\n return this._ext;\n};\nprototype$1.argmin = function (get) {\n return this.extent(get)[0] || {};\n};\nprototype$1.argmax = function (get) {\n return this.extent(get)[1] || {};\n};\nprototype$1.min = function (get) {\n var m = this.extent(get)[0];\n return m != null ? get(m) : undefined;\n};\nprototype$1.max = function (get) {\n var m = this.extent(get)[1];\n return m != null ? get(m) : undefined;\n};\nprototype$1.quartile = function (get) {\n if (this._get !== get || !this._q) {\n this._q = quartiles(this.values(), get);\n this._get = get;\n }\n return this._q;\n};\nprototype$1.q1 = function (get) {\n return this.quartile(get)[0];\n};\nprototype$1.q2 = function (get) {\n return this.quartile(get)[1];\n};\nprototype$1.q3 = function (get) {\n return this.quartile(get)[2];\n};\nprototype$1.ci = function (get) {\n if (this._get !== get || !this._ci) {\n this._ci = bootstrapCI(this.values(), 1000, 0.05, get);\n this._get = get;\n }\n return this._ci;\n};\nprototype$1.ci0 = function (get) {\n return this.ci(get)[0];\n};\nprototype$1.ci1 = function (get) {\n return this.ci(get)[1];\n};\n\n/**\n * Group-by aggregation operator.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array} [params.groupby] - An array of accessors to groupby.\n * @param {Array} [params.fields] - An array of accessors to aggregate.\n * @param {Array} [params.ops] - An array of strings indicating aggregation operations.\n * @param {Array} [params.as] - An array of output field names for aggregated values.\n * @param {boolean} [params.cross=false] - A flag indicating that the full\n * cross-product of groupby values should be generated, including empty cells.\n * If true, the drop parameter is ignored and empty cells are retained.\n * @param {boolean} [params.drop=true] - A flag indicating if empty cells should be removed.\n */\nfunction Aggregate(params) {\n Transform.call(this, null, params);\n this._adds = []; // array of added output tuples\n this._mods = []; // array of modified output tuples\n this._alen = 0; // number of active added tuples\n this._mlen = 0; // number of active modified tuples\n this._drop = true; // should empty aggregation cells be removed\n this._cross = false; // produce full cross-product of group-by values\n\n this._dims = []; // group-by dimension accessors\n this._dnames = []; // group-by dimension names\n\n this._measures = []; // collection of aggregation monoids\n this._countOnly = false; // flag indicating only count aggregation\n this._counts = null; // collection of count fields\n this._prev = null; // previous aggregation cells\n\n this._inputs = null; // array of dependent input tuple field names\n this._outputs = null; // array of output tuple field names\n}\n\nAggregate.Definition = {\n 'type': 'Aggregate',\n 'metadata': {\n 'generates': true,\n 'changes': true\n },\n 'params': [{\n 'name': 'groupby',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'ops',\n 'type': 'enum',\n 'array': true,\n 'values': ValidAggregateOps\n }, {\n 'name': 'fields',\n 'type': 'field',\n 'null': true,\n 'array': true\n }, {\n 'name': 'as',\n 'type': 'string',\n 'null': true,\n 'array': true\n }, {\n 'name': 'drop',\n 'type': 'boolean',\n 'default': true\n }, {\n 'name': 'cross',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'key',\n 'type': 'field'\n }]\n};\ninherits(Aggregate, Transform, {\n transform: function transform(_, pulse) {\n var _this5 = this;\n var aggr = this,\n out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n mod = _.modified();\n aggr.stamp = out.stamp;\n if (aggr.value && (mod || pulse.modified(aggr._inputs, true))) {\n aggr._prev = aggr.value;\n aggr.value = mod ? aggr.init(_) : Object.create(null);\n pulse.visit(pulse.SOURCE, function (t) {\n return aggr.add(t);\n });\n } else {\n aggr.value = aggr.value || aggr.init(_);\n pulse.visit(pulse.REM, function (t) {\n return aggr.rem(t);\n });\n pulse.visit(pulse.ADD, function (t) {\n return aggr.add(t);\n });\n }\n\n // Indicate output fields and return aggregate tuples.\n out.modifies(aggr._outputs);\n\n // Should empty cells be dropped?\n aggr._drop = _.drop !== false;\n\n // If domain cross-product requested, generate empty cells as needed\n // and ensure that empty cells are not dropped\n if (_.cross && aggr._dims.length > 1) {\n aggr._drop = false;\n aggr.cross();\n }\n if (pulse.clean() && aggr._drop) {\n out.clean(true).runAfter(function () {\n return _this5.clean();\n });\n }\n return aggr.changes(out);\n },\n cross: function cross() {\n var aggr = this,\n curr = aggr.value,\n dims = aggr._dnames,\n vals = dims.map(function () {\n return {};\n }),\n n = dims.length;\n\n // collect all group-by domain values\n function collect(cells) {\n var key, i, t, v;\n for (key in cells) {\n t = cells[key].tuple;\n for (i = 0; i < n; ++i) {\n vals[i][v = t[dims[i]]] = v;\n }\n }\n }\n collect(aggr._prev);\n collect(curr);\n\n // iterate over key cross-product, create cells as needed\n function generate(base, tuple, index) {\n var name = dims[index],\n v = vals[index++];\n for (var k in v) {\n var _key = base ? base + '|' + k : k;\n tuple[name] = v[k];\n if (index < n) generate(_key, tuple, index);else if (!curr[_key]) aggr.cell(_key, tuple);\n }\n }\n generate('', {}, 0);\n },\n init: function init(_) {\n // initialize input and output fields\n var inputs = this._inputs = [],\n outputs = this._outputs = [],\n inputMap = {};\n function inputVisit(get) {\n var fields = array(accessorFields(get)),\n n = fields.length;\n var i = 0,\n f;\n for (; i < n; ++i) {\n if (!inputMap[f = fields[i]]) {\n inputMap[f] = 1;\n inputs.push(f);\n }\n }\n }\n\n // initialize group-by dimensions\n this._dims = array(_.groupby);\n this._dnames = this._dims.map(function (d) {\n var dname = accessorName(d);\n inputVisit(d);\n outputs.push(dname);\n return dname;\n });\n this.cellkey = _.key ? _.key : groupkey(this._dims);\n\n // initialize aggregate measures\n this._countOnly = true;\n this._counts = [];\n this._measures = [];\n var fields = _.fields || [null],\n ops = _.ops || ['count'],\n as = _.as || [],\n n = fields.length,\n map = {};\n var field, op, m, mname, outname, i;\n if (n !== ops.length) {\n error('Unmatched number of fields and aggregate ops.');\n }\n for (i = 0; i < n; ++i) {\n field = fields[i];\n op = ops[i];\n if (field == null && op !== 'count') {\n error('Null aggregate field specified.');\n }\n mname = accessorName(field);\n outname = measureName(op, mname, as[i]);\n outputs.push(outname);\n if (op === 'count') {\n this._counts.push(outname);\n continue;\n }\n m = map[mname];\n if (!m) {\n inputVisit(field);\n m = map[mname] = [];\n m.field = field;\n this._measures.push(m);\n }\n if (op !== 'count') this._countOnly = false;\n m.push(createMeasure(op, outname));\n }\n this._measures = this._measures.map(function (m) {\n return compileMeasures(m, m.field);\n });\n return Object.create(null); // aggregation cells (this.value)\n },\n\n // -- Cell Management -----\n\n cellkey: groupkey(),\n cell: function cell(key, t) {\n var cell = this.value[key];\n if (!cell) {\n cell = this.value[key] = this.newcell(key, t);\n this._adds[this._alen++] = cell;\n } else if (cell.num === 0 && this._drop && cell.stamp < this.stamp) {\n cell.stamp = this.stamp;\n this._adds[this._alen++] = cell;\n } else if (cell.stamp < this.stamp) {\n cell.stamp = this.stamp;\n this._mods[this._mlen++] = cell;\n }\n return cell;\n },\n newcell: function newcell(key, t) {\n var cell = {\n key: key,\n num: 0,\n agg: null,\n tuple: this.newtuple(t, this._prev && this._prev[key]),\n stamp: this.stamp,\n store: false\n };\n if (!this._countOnly) {\n var measures = this._measures,\n n = measures.length;\n cell.agg = Array(n);\n for (var i = 0; i < n; ++i) {\n cell.agg[i] = new measures[i](cell);\n }\n }\n if (cell.store) {\n cell.data = new TupleStore();\n }\n return cell;\n },\n newtuple: function newtuple(t, p) {\n var names = this._dnames,\n dims = this._dims,\n n = dims.length,\n x = {};\n for (var i = 0; i < n; ++i) {\n x[names[i]] = dims[i](t);\n }\n return p ? replace(p.tuple, x) : ingest(x);\n },\n clean: function clean() {\n var cells = this.value;\n for (var _key2 in cells) {\n if (cells[_key2].num === 0) {\n delete cells[_key2];\n }\n }\n },\n // -- Process Tuples -----\n add: function add(t) {\n var key = this.cellkey(t),\n cell = this.cell(key, t);\n cell.num += 1;\n if (this._countOnly) return;\n if (cell.store) cell.data.add(t);\n var agg = cell.agg;\n for (var i = 0, n = agg.length; i < n; ++i) {\n agg[i].add(agg[i].get(t), t);\n }\n },\n rem: function rem(t) {\n var key = this.cellkey(t),\n cell = this.cell(key, t);\n cell.num -= 1;\n if (this._countOnly) return;\n if (cell.store) cell.data.rem(t);\n var agg = cell.agg;\n for (var i = 0, n = agg.length; i < n; ++i) {\n agg[i].rem(agg[i].get(t), t);\n }\n },\n celltuple: function celltuple(cell) {\n var tuple = cell.tuple,\n counts = this._counts;\n\n // consolidate stored values\n if (cell.store) {\n cell.data.values();\n }\n\n // update tuple properties\n for (var i = 0, n = counts.length; i < n; ++i) {\n tuple[counts[i]] = cell.num;\n }\n if (!this._countOnly) {\n var agg = cell.agg;\n for (var _i = 0, _n = agg.length; _i < _n; ++_i) {\n agg[_i].set(tuple);\n }\n }\n return tuple;\n },\n changes: function changes(out) {\n var adds = this._adds,\n mods = this._mods,\n prev = this._prev,\n drop = this._drop,\n add = out.add,\n rem = out.rem,\n mod = out.mod;\n var cell, key, i, n;\n if (prev) for (key in prev) {\n cell = prev[key];\n if (!drop || cell.num) rem.push(cell.tuple);\n }\n for (i = 0, n = this._alen; i < n; ++i) {\n add.push(this.celltuple(adds[i]));\n adds[i] = null; // for garbage collection\n }\n\n for (i = 0, n = this._mlen; i < n; ++i) {\n cell = mods[i];\n (cell.num === 0 && drop ? rem : mod).push(this.celltuple(cell));\n mods[i] = null; // for garbage collection\n }\n\n this._alen = this._mlen = 0; // reset list of active cells\n this._prev = null;\n return out;\n }\n});\n\n// epsilon bias to offset floating point error (#1737)\nvar EPSILON$1 = 1e-14;\n\n/**\n * Generates a binning function for discretizing data.\n * @constructor\n * @param {object} params - The parameters for this operator. The\n * provided values should be valid options for the {@link bin} function.\n * @param {function(object): *} params.field - The data field to bin.\n */\nfunction Bin(params) {\n Transform.call(this, null, params);\n}\nBin.Definition = {\n 'type': 'Bin',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'interval',\n 'type': 'boolean',\n 'default': true\n }, {\n 'name': 'anchor',\n 'type': 'number'\n }, {\n 'name': 'maxbins',\n 'type': 'number',\n 'default': 20\n }, {\n 'name': 'base',\n 'type': 'number',\n 'default': 10\n }, {\n 'name': 'divide',\n 'type': 'number',\n 'array': true,\n 'default': [5, 2]\n }, {\n 'name': 'extent',\n 'type': 'number',\n 'array': true,\n 'length': 2,\n 'required': true\n }, {\n 'name': 'span',\n 'type': 'number'\n }, {\n 'name': 'step',\n 'type': 'number'\n }, {\n 'name': 'steps',\n 'type': 'number',\n 'array': true\n }, {\n 'name': 'minstep',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'nice',\n 'type': 'boolean',\n 'default': true\n }, {\n 'name': 'name',\n 'type': 'string'\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': 2,\n 'default': ['bin0', 'bin1']\n }]\n};\ninherits(Bin, Transform, {\n transform: function transform(_, pulse) {\n var band = _.interval !== false,\n bins = this._bins(_),\n start = bins.start,\n step = bins.step,\n as = _.as || ['bin0', 'bin1'],\n b0 = as[0],\n b1 = as[1];\n var flag;\n if (_.modified()) {\n pulse = pulse.reflow(true);\n flag = pulse.SOURCE;\n } else {\n flag = pulse.modified(accessorFields(_.field)) ? pulse.ADD_MOD : pulse.ADD;\n }\n pulse.visit(flag, band ? function (t) {\n var v = bins(t);\n // minimum bin value (inclusive)\n t[b0] = v;\n // maximum bin value (exclusive)\n // use convoluted math for better floating point agreement\n // see https://github.com/vega/vega/issues/830\n // infinite values propagate through this formula! #2227\n t[b1] = v == null ? null : start + step * (1 + (v - start) / step);\n } : function (t) {\n return t[b0] = bins(t);\n });\n return pulse.modifies(band ? as : b0);\n },\n _bins: function _bins(_) {\n if (this.value && !_.modified()) {\n return this.value;\n }\n var field = _.field,\n bins = bin(_),\n step = bins.step;\n var start = bins.start,\n stop = start + Math.ceil((bins.stop - start) / step) * step,\n a,\n d;\n if ((a = _.anchor) != null) {\n d = a - (start + step * Math.floor((a - start) / step));\n start += d;\n stop += d;\n }\n var f = function f(t) {\n var v = toNumber(field(t));\n return v == null ? null : v < start ? -Infinity : v > stop ? +Infinity : (v = Math.max(start, Math.min(v, stop - step)), start + step * Math.floor(EPSILON$1 + (v - start) / step));\n };\n f.start = start;\n f.stop = bins.stop;\n f.step = step;\n return this.value = accessor(f, accessorFields(field), _.name || 'bin_' + accessorName(field));\n }\n});\nfunction SortedList(idFunc, source, input) {\n var $ = idFunc;\n var _data = source || [],\n _add = input || [],\n rem = {},\n cnt = 0;\n return {\n add: function add(t) {\n return _add.push(t);\n },\n remove: function remove(t) {\n return rem[$(t)] = ++cnt;\n },\n size: function size() {\n return _data.length;\n },\n data: function data(compare, resort) {\n if (cnt) {\n _data = _data.filter(function (t) {\n return !rem[$(t)];\n });\n rem = {};\n cnt = 0;\n }\n if (resort && compare) {\n _data.sort(compare);\n }\n if (_add.length) {\n _data = compare ? merge(compare, _data, _add.sort(compare)) : _data.concat(_add);\n _add = [];\n }\n return _data;\n }\n };\n}\n\n/**\n * Collects all data tuples that pass through this operator.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(*,*): number} [params.sort] - An optional\n * comparator function for additionally sorting the collected tuples.\n */\nfunction Collect(params) {\n Transform.call(this, [], params);\n}\nCollect.Definition = {\n 'type': 'Collect',\n 'metadata': {\n 'source': true\n },\n 'params': [{\n 'name': 'sort',\n 'type': 'compare'\n }]\n};\ninherits(Collect, Transform, {\n transform: function transform(_, pulse) {\n var out = pulse.fork(pulse.ALL),\n list = SortedList(tupleid, this.value, out.materialize(out.ADD).add),\n sort = _.sort,\n mod = pulse.changed() || sort && (_.modified('sort') || pulse.modified(sort.fields));\n out.visit(out.REM, list.remove);\n this.modified(mod);\n this.value = out.source = list.data(stableCompare(sort), mod);\n\n // propagate tree root if defined\n if (pulse.source && pulse.source.root) {\n this.value.root = pulse.source.root;\n }\n return out;\n }\n});\n\n/**\n * Generates a comparator function.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array} params.fields - The fields to compare.\n * @param {Array} [params.orders] - The sort orders.\n * Each entry should be one of \"ascending\" (default) or \"descending\".\n */\nfunction Compare(params) {\n Operator.call(this, null, update$5, params);\n}\ninherits(Compare, Operator);\nfunction update$5(_) {\n return this.value && !_.modified() ? this.value : compare(_.fields, _.orders);\n}\n\n/**\n * Count regexp-defined pattern occurrences in a text field.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - An accessor for the text field.\n * @param {string} [params.pattern] - RegExp string defining the text pattern.\n * @param {string} [params.case] - One of 'lower', 'upper' or null (mixed) case.\n * @param {string} [params.stopwords] - RegExp string of words to ignore.\n */\nfunction CountPattern(params) {\n Transform.call(this, null, params);\n}\nCountPattern.Definition = {\n 'type': 'CountPattern',\n 'metadata': {\n 'generates': true,\n 'changes': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'case',\n 'type': 'enum',\n 'values': ['upper', 'lower', 'mixed'],\n 'default': 'mixed'\n }, {\n 'name': 'pattern',\n 'type': 'string',\n 'default': '[\\\\w\"]+'\n }, {\n 'name': 'stopwords',\n 'type': 'string',\n 'default': ''\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': 2,\n 'default': ['text', 'count']\n }]\n};\nfunction tokenize(text, tcase, match) {\n switch (tcase) {\n case 'upper':\n text = text.toUpperCase();\n break;\n case 'lower':\n text = text.toLowerCase();\n break;\n }\n return text.match(match);\n}\ninherits(CountPattern, Transform, {\n transform: function transform(_, pulse) {\n var process = function process(update) {\n return function (tuple) {\n var tokens = tokenize(get(tuple), _.case, match) || [],\n t;\n for (var i = 0, n = tokens.length; i < n; ++i) {\n if (!stop.test(t = tokens[i])) update(t);\n }\n };\n };\n var init = this._parameterCheck(_, pulse),\n counts = this._counts,\n match = this._match,\n stop = this._stop,\n get = _.field,\n as = _.as || ['text', 'count'],\n add = process(function (t) {\n return counts[t] = 1 + (counts[t] || 0);\n }),\n rem = process(function (t) {\n return counts[t] -= 1;\n });\n if (init) {\n pulse.visit(pulse.SOURCE, add);\n } else {\n pulse.visit(pulse.ADD, add);\n pulse.visit(pulse.REM, rem);\n }\n return this._finish(pulse, as); // generate output tuples\n },\n _parameterCheck: function _parameterCheck(_, pulse) {\n var init = false;\n if (_.modified('stopwords') || !this._stop) {\n this._stop = new RegExp('^' + (_.stopwords || '') + '$', 'i');\n init = true;\n }\n if (_.modified('pattern') || !this._match) {\n this._match = new RegExp(_.pattern || '[\\\\w\\']+', 'g');\n init = true;\n }\n if (_.modified('field') || pulse.modified(_.field.fields)) {\n init = true;\n }\n if (init) this._counts = {};\n return init;\n },\n _finish: function _finish(pulse, as) {\n var counts = this._counts,\n tuples = this._tuples || (this._tuples = {}),\n text = as[0],\n count = as[1],\n out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n var w, t, c;\n for (w in counts) {\n t = tuples[w];\n c = counts[w] || 0;\n if (!t && c) {\n tuples[w] = t = ingest({});\n t[text] = w;\n t[count] = c;\n out.add.push(t);\n } else if (c === 0) {\n if (t) out.rem.push(t);\n counts[w] = null;\n tuples[w] = null;\n } else if (t[count] !== c) {\n t[count] = c;\n out.mod.push(t);\n }\n }\n return out.modifies(as);\n }\n});\n\n/**\n * Perform a cross-product of a tuple stream with itself.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object):boolean} [params.filter] - An optional filter\n * function for selectively including tuples in the cross product.\n * @param {Array} [params.as] - The names of the output fields.\n */\nfunction Cross(params) {\n Transform.call(this, null, params);\n}\nCross.Definition = {\n 'type': 'Cross',\n 'metadata': {\n 'generates': true\n },\n 'params': [{\n 'name': 'filter',\n 'type': 'expr'\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': 2,\n 'default': ['a', 'b']\n }]\n};\ninherits(Cross, Transform, {\n transform: function transform(_, pulse) {\n var out = pulse.fork(pulse.NO_SOURCE),\n as = _.as || ['a', 'b'],\n a = as[0],\n b = as[1],\n reset = !this.value || pulse.changed(pulse.ADD_REM) || _.modified('as') || _.modified('filter');\n var data = this.value;\n if (reset) {\n if (data) out.rem = data;\n data = pulse.materialize(pulse.SOURCE).source;\n out.add = this.value = cross(data, a, b, _.filter || truthy);\n } else {\n out.mod = data;\n }\n out.source = this.value;\n return out.modifies(as);\n }\n});\nfunction cross(input, a, b, filter) {\n var data = [],\n t = {},\n n = input.length,\n i = 0,\n j,\n left;\n for (; i < n; ++i) {\n t[a] = left = input[i];\n for (j = 0; j < n; ++j) {\n t[b] = input[j];\n if (filter(t)) {\n data.push(ingest(t));\n t = {};\n t[a] = left;\n }\n }\n }\n return data;\n}\nvar Distributions = {\n kde: randomKDE,\n mixture: randomMixture,\n normal: randomNormal,\n lognormal: randomLogNormal,\n uniform: randomUniform\n};\nvar DISTRIBUTIONS = 'distributions',\n FUNCTION = 'function',\n FIELD = 'field';\n\n/**\n * Parse a parameter object for a probability distribution.\n * @param {object} def - The distribution parameter object.\n * @param {function():Array} - A method for requesting\n * source data. Used for distributions (such as KDE) that\n * require sample data points. This method will only be\n * invoked if the 'from' parameter for a target data source\n * is not provided. Typically this method returns backing\n * source data for a Pulse object.\n * @return {object} - The output distribution object.\n */\nfunction parse(def, data) {\n var func = def[FUNCTION];\n if (!hasOwnProperty(Distributions, func)) {\n error('Unknown distribution function: ' + func);\n }\n var d = Distributions[func]();\n for (var name in def) {\n // if data field, extract values\n if (name === FIELD) {\n d.data((def.from || data()).map(def[name]));\n }\n\n // if distribution mixture, recurse to parse each definition\n else if (name === DISTRIBUTIONS) {\n d[name](def[name].map(function (_) {\n return parse(_, data);\n }));\n }\n\n // otherwise, simply set the parameter\n else if (typeof d[name] === FUNCTION) {\n d[name](def[name]);\n }\n }\n return d;\n}\n\n/**\n * Grid sample points for a probability density. Given a distribution and\n * a sampling extent, will generate points suitable for plotting either\n * PDF (probability density function) or CDF (cumulative distribution\n * function) curves.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {object} params.distribution - The probability distribution. This\n * is an object parameter dependent on the distribution type.\n * @param {string} [params.method='pdf'] - The distribution method to sample.\n * One of 'pdf' or 'cdf'.\n * @param {Array} [params.extent] - The [min, max] extent over which\n * to sample the distribution. This argument is required in most cases, but\n * can be omitted if the distribution (e.g., 'kde') supports a 'data' method\n * that returns numerical sample points from which the extent can be deduced.\n * @param {number} [params.minsteps=25] - The minimum number of curve samples\n * for plotting the density.\n * @param {number} [params.maxsteps=200] - The maximum number of curve samples\n * for plotting the density.\n * @param {number} [params.steps] - The exact number of curve samples for\n * plotting the density. If specified, overrides both minsteps and maxsteps\n * to set an exact number of uniform samples. Useful in conjunction with\n * a fixed extent to ensure consistent sample points for stacked densities.\n */\nfunction Density(params) {\n Transform.call(this, null, params);\n}\nvar distributions = [{\n 'key': {\n 'function': 'normal'\n },\n 'params': [{\n 'name': 'mean',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'stdev',\n 'type': 'number',\n 'default': 1\n }]\n}, {\n 'key': {\n 'function': 'lognormal'\n },\n 'params': [{\n 'name': 'mean',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'stdev',\n 'type': 'number',\n 'default': 1\n }]\n}, {\n 'key': {\n 'function': 'uniform'\n },\n 'params': [{\n 'name': 'min',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'max',\n 'type': 'number',\n 'default': 1\n }]\n}, {\n 'key': {\n 'function': 'kde'\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'from',\n 'type': 'data'\n }, {\n 'name': 'bandwidth',\n 'type': 'number',\n 'default': 0\n }]\n}];\nvar mixture = {\n 'key': {\n 'function': 'mixture'\n },\n 'params': [{\n 'name': 'distributions',\n 'type': 'param',\n 'array': true,\n 'params': distributions\n }, {\n 'name': 'weights',\n 'type': 'number',\n 'array': true\n }]\n};\nDensity.Definition = {\n 'type': 'Density',\n 'metadata': {\n 'generates': true\n },\n 'params': [{\n 'name': 'extent',\n 'type': 'number',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'steps',\n 'type': 'number'\n }, {\n 'name': 'minsteps',\n 'type': 'number',\n 'default': 25\n }, {\n 'name': 'maxsteps',\n 'type': 'number',\n 'default': 200\n }, {\n 'name': 'method',\n 'type': 'string',\n 'default': 'pdf',\n 'values': ['pdf', 'cdf']\n }, {\n 'name': 'distribution',\n 'type': 'param',\n 'params': distributions.concat(mixture)\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'default': ['value', 'density']\n }]\n};\ninherits(Density, Transform, {\n transform: function transform(_, pulse) {\n var out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n if (!this.value || pulse.changed() || _.modified()) {\n var dist = parse(_.distribution, source(pulse)),\n minsteps = _.steps || _.minsteps || 25,\n maxsteps = _.steps || _.maxsteps || 200;\n var method = _.method || 'pdf';\n if (method !== 'pdf' && method !== 'cdf') {\n error('Invalid density method: ' + method);\n }\n if (!_.extent && !dist.data) {\n error('Missing density extent parameter.');\n }\n method = dist[method];\n var as = _.as || ['value', 'density'],\n domain = _.extent || extent(dist.data()),\n values = sampleCurve(method, domain, minsteps, maxsteps).map(function (v) {\n var tuple = {};\n tuple[as[0]] = v[0];\n tuple[as[1]] = v[1];\n return ingest(tuple);\n });\n if (this.value) out.rem = this.value;\n this.value = out.add = out.source = values;\n }\n return out;\n }\n});\nfunction source(pulse) {\n return function () {\n return pulse.materialize(pulse.SOURCE).source;\n };\n}\n\n// use either provided alias or accessor field name\nfunction fieldNames(fields, as) {\n if (!fields) return null;\n return fields.map(function (f, i) {\n return as[i] || accessorName(f);\n });\n}\nfunction partition$1(data, groupby, field) {\n var groups = [],\n get = function get(f) {\n return f(t);\n };\n var map, i, n, t, k, g;\n\n // partition data points into groups\n if (groupby == null) {\n groups.push(data.map(field));\n } else {\n for (map = {}, i = 0, n = data.length; i < n; ++i) {\n t = data[i];\n k = groupby.map(get);\n g = map[k];\n if (!g) {\n map[k] = g = [];\n g.dims = k;\n groups.push(g);\n }\n g.push(field(t));\n }\n }\n return groups;\n}\nvar Output = 'bin';\n\n/**\n * Dot density binning for dot plot construction.\n * Based on Leland Wilkinson, Dot Plots, The American Statistician, 1999.\n * https://www.cs.uic.edu/~wilkinson/Publications/dotplots.pdf\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to bin.\n * @param {Array} [params.groupby] - An array of accessors to groupby.\n * @param {number} [params.step] - The step size (bin width) within which dots should be\n * stacked. Defaults to 1/30 of the extent of the data *field*.\n * @param {boolean} [params.smooth=false] - A boolean flag indicating if dot density\n * stacks should be smoothed to reduce variance.\n */\nfunction DotBin(params) {\n Transform.call(this, null, params);\n}\nDotBin.Definition = {\n 'type': 'DotBin',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'groupby',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'step',\n 'type': 'number'\n }, {\n 'name': 'smooth',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'as',\n 'type': 'string',\n 'default': Output\n }]\n};\nvar autostep = function autostep(data, field) {\n return span(extent(data, field)) / 30;\n};\ninherits(DotBin, Transform, {\n transform: function transform(_, pulse) {\n if (this.value && !(_.modified() || pulse.changed())) {\n return pulse; // early exit\n }\n\n var source = pulse.materialize(pulse.SOURCE).source,\n groups = partition$1(pulse.source, _.groupby, identity),\n smooth = _.smooth || false,\n field = _.field,\n step = _.step || autostep(source, field),\n sort = stableCompare(function (a, b) {\n return field(a) - field(b);\n }),\n as = _.as || Output,\n n = groups.length;\n\n // compute dotplot bins per group\n var min = Infinity,\n max = -Infinity,\n i = 0,\n j;\n for (; i < n; ++i) {\n var g = groups[i].sort(sort);\n j = -1;\n var _iterator = _createForOfIteratorHelper(dotbin(g, step, smooth, field)),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var v = _step.value;\n if (v < min) min = v;\n if (v > max) max = v;\n g[++j][as] = v;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n this.value = {\n start: min,\n stop: max,\n step: step\n };\n return pulse.reflow(true).modifies(as);\n }\n});\n\n/**\n * Wraps an expression function with access to external parameters.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function} params.expr - The expression function. The\n * function should accept both a datum and a parameter object.\n * This operator's value will be a new function that wraps the\n * expression function with access to this operator's parameters.\n */\nfunction Expression(params) {\n Operator.call(this, null, update$4, params);\n this.modified(true);\n}\ninherits(Expression, Operator);\nfunction update$4(_) {\n var expr = _.expr;\n return this.value && !_.modified('expr') ? this.value : accessor(function (datum) {\n return expr(datum, _);\n }, accessorFields(expr), accessorName(expr));\n}\n\n/**\n * Computes extents (min/max) for a data field.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The field over which to compute extends.\n */\nfunction Extent(params) {\n Transform.call(this, [undefined, undefined], params);\n}\nExtent.Definition = {\n 'type': 'Extent',\n 'metadata': {},\n 'params': [{\n 'name': 'field',\n 'type': 'field',\n 'required': true\n }]\n};\ninherits(Extent, Transform, {\n transform: function transform(_, pulse) {\n var extent = this.value,\n field = _.field,\n mod = pulse.changed() || pulse.modified(field.fields) || _.modified('field');\n var min = extent[0],\n max = extent[1];\n if (mod || min == null) {\n min = +Infinity;\n max = -Infinity;\n }\n pulse.visit(mod ? pulse.SOURCE : pulse.ADD, function (t) {\n var v = toNumber(field(t));\n if (v != null) {\n // NaNs will fail all comparisons!\n if (v < min) min = v;\n if (v > max) max = v;\n }\n });\n if (!Number.isFinite(min) || !Number.isFinite(max)) {\n var name = accessorName(field);\n if (name) name = \" for field \\\"\".concat(name, \"\\\"\");\n pulse.dataflow.warn(\"Infinite extent\".concat(name, \": [\").concat(min, \", \").concat(max, \"]\"));\n min = max = undefined;\n }\n this.value = [min, max];\n }\n});\n\n/**\n * Provides a bridge between a parent transform and a target subflow that\n * consumes only a subset of the tuples that pass through the parent.\n * @constructor\n * @param {Pulse} pulse - A pulse to use as the value of this operator.\n * @param {Transform} parent - The parent transform (typically a Facet instance).\n */\nfunction Subflow(pulse, parent) {\n Operator.call(this, pulse);\n this.parent = parent;\n this.count = 0;\n}\ninherits(Subflow, Operator, {\n /**\n * Routes pulses from this subflow to a target transform.\n * @param {Transform} target - A transform that receives the subflow of tuples.\n */\n connect: function connect(target) {\n this.detachSubflow = target.detachSubflow;\n this.targets().add(target);\n return target.source = this;\n },\n /**\n * Add an 'add' tuple to the subflow pulse.\n * @param {Tuple} t - The tuple being added.\n */\n add: function add(t) {\n this.count += 1;\n this.value.add.push(t);\n },\n /**\n * Add a 'rem' tuple to the subflow pulse.\n * @param {Tuple} t - The tuple being removed.\n */\n rem: function rem(t) {\n this.count -= 1;\n this.value.rem.push(t);\n },\n /**\n * Add a 'mod' tuple to the subflow pulse.\n * @param {Tuple} t - The tuple being modified.\n */\n mod: function mod(t) {\n this.value.mod.push(t);\n },\n /**\n * Re-initialize this operator's pulse value.\n * @param {Pulse} pulse - The pulse to copy from.\n * @see Pulse.init\n */\n init: function init(pulse) {\n this.value.init(pulse, pulse.NO_SOURCE);\n },\n /**\n * Evaluate this operator. This method overrides the\n * default behavior to simply return the contained pulse value.\n * @return {Pulse}\n */\n evaluate: function evaluate() {\n // assert: this.value.stamp === pulse.stamp\n return this.value;\n }\n});\n\n/**\n * Facets a dataflow into a set of subflows based on a key.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(Dataflow, string): Operator} params.subflow - A function\n * that generates a subflow of operators and returns its root operator.\n * @param {function(object): *} params.key - The key field to facet by.\n */\nfunction Facet(params) {\n Transform.call(this, {}, params);\n this._keys = fastmap(); // cache previously calculated key values\n\n // keep track of active subflows, use as targets array for listeners\n // this allows us to limit propagation to only updated subflows\n var a = this._targets = [];\n a.active = 0;\n a.forEach = function (f) {\n for (var i = 0, n = a.active; i < n; ++i) {\n f(a[i], i, a);\n }\n };\n}\ninherits(Facet, Transform, {\n activate: function activate(flow) {\n this._targets[this._targets.active++] = flow;\n },\n // parent argument provided by PreFacet subclass\n subflow: function subflow(key, flow, pulse, parent) {\n var flows = this.value;\n var sf = hasOwnProperty(flows, key) && flows[key],\n df,\n p;\n if (!sf) {\n p = parent || (p = this._group[key]) && p.tuple;\n df = pulse.dataflow;\n sf = new Subflow(pulse.fork(pulse.NO_SOURCE), this);\n df.add(sf).connect(flow(df, key, p));\n flows[key] = sf;\n this.activate(sf);\n } else if (sf.value.stamp < pulse.stamp) {\n sf.init(pulse);\n this.activate(sf);\n }\n return sf;\n },\n clean: function clean() {\n var flows = this.value;\n var detached = 0;\n for (var _key3 in flows) {\n if (flows[_key3].count === 0) {\n var detach = flows[_key3].detachSubflow;\n if (detach) detach();\n delete flows[_key3];\n ++detached;\n }\n }\n\n // remove inactive targets from the active targets array\n if (detached) {\n var active = this._targets.filter(function (sf) {\n return sf && sf.count > 0;\n });\n this.initTargets(active);\n }\n },\n initTargets: function initTargets(act) {\n var a = this._targets,\n n = a.length,\n m = act ? act.length : 0;\n var i = 0;\n for (; i < m; ++i) {\n a[i] = act[i];\n }\n for (; i < n && a[i] != null; ++i) {\n a[i] = null; // ensure old flows can be garbage collected\n }\n\n a.active = m;\n },\n transform: function transform(_, pulse) {\n var _this6 = this;\n var df = pulse.dataflow,\n key = _.key,\n flow = _.subflow,\n cache = this._keys,\n rekey = _.modified('key'),\n subflow = function subflow(key) {\n return _this6.subflow(key, flow, pulse);\n };\n this._group = _.group || {};\n this.initTargets(); // reset list of active subflows\n\n pulse.visit(pulse.REM, function (t) {\n var id = tupleid(t),\n k = cache.get(id);\n if (k !== undefined) {\n cache.delete(id);\n subflow(k).rem(t);\n }\n });\n pulse.visit(pulse.ADD, function (t) {\n var k = key(t);\n cache.set(tupleid(t), k);\n subflow(k).add(t);\n });\n if (rekey || pulse.modified(key.fields)) {\n pulse.visit(pulse.MOD, function (t) {\n var id = tupleid(t),\n k0 = cache.get(id),\n k1 = key(t);\n if (k0 === k1) {\n subflow(k1).mod(t);\n } else {\n cache.set(id, k1);\n subflow(k0).rem(t);\n subflow(k1).add(t);\n }\n });\n } else if (pulse.changed(pulse.MOD)) {\n pulse.visit(pulse.MOD, function (t) {\n subflow(cache.get(tupleid(t))).mod(t);\n });\n }\n if (rekey) {\n pulse.visit(pulse.REFLOW, function (t) {\n var id = tupleid(t),\n k0 = cache.get(id),\n k1 = key(t);\n if (k0 !== k1) {\n cache.set(id, k1);\n subflow(k0).rem(t);\n subflow(k1).add(t);\n }\n });\n }\n if (pulse.clean()) {\n df.runAfter(function () {\n _this6.clean();\n cache.clean();\n });\n } else if (cache.empty > df.cleanThreshold) {\n df.runAfter(cache.clean);\n }\n return pulse;\n }\n});\n\n/**\n * Generates one or more field accessor functions.\n * If the 'name' parameter is an array, an array of field accessors\n * will be created and the 'as' parameter will be ignored.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {string} params.name - The field name(s) to access.\n * @param {string} params.as - The accessor function name.\n */\nfunction Field(params) {\n Operator.call(this, null, update$3, params);\n}\ninherits(Field, Operator);\nfunction update$3(_) {\n return this.value && !_.modified() ? this.value : isArray(_.name) ? array(_.name).map(function (f) {\n return field(f);\n }) : field(_.name, _.as);\n}\n\n/**\n * Filters data tuples according to a predicate function.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.expr - The predicate expression function\n * that determines a tuple's filter status. Truthy values pass the filter.\n */\nfunction Filter(params) {\n Transform.call(this, fastmap(), params);\n}\nFilter.Definition = {\n 'type': 'Filter',\n 'metadata': {\n 'changes': true\n },\n 'params': [{\n 'name': 'expr',\n 'type': 'expr',\n 'required': true\n }]\n};\ninherits(Filter, Transform, {\n transform: function transform(_, pulse) {\n var df = pulse.dataflow,\n cache = this.value,\n // cache ids of filtered tuples\n output = pulse.fork(),\n add = output.add,\n rem = output.rem,\n mod = output.mod,\n test = _.expr;\n var isMod = true;\n pulse.visit(pulse.REM, function (t) {\n var id = tupleid(t);\n if (!cache.has(id)) rem.push(t);else cache.delete(id);\n });\n pulse.visit(pulse.ADD, function (t) {\n if (test(t, _)) add.push(t);else cache.set(tupleid(t), 1);\n });\n function revisit(t) {\n var id = tupleid(t),\n b = test(t, _),\n s = cache.get(id);\n if (b && s) {\n cache.delete(id);\n add.push(t);\n } else if (!b && !s) {\n cache.set(id, 1);\n rem.push(t);\n } else if (isMod && b && !s) {\n mod.push(t);\n }\n }\n pulse.visit(pulse.MOD, revisit);\n if (_.modified()) {\n isMod = false;\n pulse.visit(pulse.REFLOW, revisit);\n }\n if (cache.empty > df.cleanThreshold) df.runAfter(cache.clean);\n return output;\n }\n});\n\n/**\n * Flattens array-typed field values into new data objects.\n * If multiple fields are specified, they are treated as parallel arrays,\n * with output values included for each matching index (or null if missing).\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array} params.fields - An array of field\n * accessors for the tuple fields that should be flattened.\n * @param {string} [params.index] - Optional output field name for index\n * value. If unspecified, no index field is included in the output.\n * @param {Array} [params.as] - Output field names for flattened\n * array fields. Any unspecified fields will use the field name provided\n * by the fields accessors.\n */\nfunction Flatten(params) {\n Transform.call(this, [], params);\n}\nFlatten.Definition = {\n 'type': 'Flatten',\n 'metadata': {\n 'generates': true\n },\n 'params': [{\n 'name': 'fields',\n 'type': 'field',\n 'array': true,\n 'required': true\n }, {\n 'name': 'index',\n 'type': 'string'\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true\n }]\n};\ninherits(Flatten, Transform, {\n transform: function transform(_, pulse) {\n var out = pulse.fork(pulse.NO_SOURCE),\n fields = _.fields,\n as = fieldNames(fields, _.as || []),\n index = _.index || null,\n m = as.length;\n\n // remove any previous results\n out.rem = this.value;\n\n // generate flattened tuples\n pulse.visit(pulse.SOURCE, function (t) {\n var arrays = fields.map(function (f) {\n return f(t);\n }),\n maxlen = arrays.reduce(function (l, a) {\n return Math.max(l, a.length);\n }, 0);\n var i = 0,\n j,\n d,\n v;\n for (; i < maxlen; ++i) {\n d = derive(t);\n for (j = 0; j < m; ++j) {\n d[as[j]] = (v = arrays[j][i]) == null ? null : v;\n }\n if (index) {\n d[index] = i;\n }\n out.add.push(d);\n }\n });\n this.value = out.source = out.add;\n if (index) out.modifies(index);\n return out.modifies(as);\n }\n});\n\n/**\n * Folds one more tuple fields into multiple tuples in which the field\n * name and values are available under new 'key' and 'value' fields.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.fields - An array of field accessors\n * for the tuple fields that should be folded.\n * @param {Array} [params.as] - Output field names for folded key\n * and value fields, defaults to ['key', 'value'].\n */\nfunction Fold(params) {\n Transform.call(this, [], params);\n}\nFold.Definition = {\n 'type': 'Fold',\n 'metadata': {\n 'generates': true\n },\n 'params': [{\n 'name': 'fields',\n 'type': 'field',\n 'array': true,\n 'required': true\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': 2,\n 'default': ['key', 'value']\n }]\n};\ninherits(Fold, Transform, {\n transform: function transform(_, pulse) {\n var out = pulse.fork(pulse.NO_SOURCE),\n fields = _.fields,\n fnames = fields.map(accessorName),\n as = _.as || ['key', 'value'],\n k = as[0],\n v = as[1],\n n = fields.length;\n out.rem = this.value;\n pulse.visit(pulse.SOURCE, function (t) {\n for (var i = 0, d; i < n; ++i) {\n d = derive(t);\n d[k] = fnames[i];\n d[v] = fields[i](t);\n out.add.push(d);\n }\n });\n this.value = out.source = out.add;\n return out.modifies(as);\n }\n});\n\n/**\n * Invokes a function for each data tuple and saves the results as a new field.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.expr - The formula function to invoke for each tuple.\n * @param {string} params.as - The field name under which to save the result.\n * @param {boolean} [params.initonly=false] - If true, the formula is applied to\n * added tuples only, and does not update in response to modifications.\n */\nfunction Formula(params) {\n Transform.call(this, null, params);\n}\nFormula.Definition = {\n 'type': 'Formula',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'expr',\n 'type': 'expr',\n 'required': true\n }, {\n 'name': 'as',\n 'type': 'string',\n 'required': true\n }, {\n 'name': 'initonly',\n 'type': 'boolean'\n }]\n};\ninherits(Formula, Transform, {\n transform: function transform(_, pulse) {\n var func = _.expr,\n as = _.as,\n mod = _.modified(),\n flag = _.initonly ? pulse.ADD : mod ? pulse.SOURCE : pulse.modified(func.fields) || pulse.modified(as) ? pulse.ADD_MOD : pulse.ADD;\n if (mod) {\n // parameters updated, need to reflow\n pulse = pulse.materialize().reflow(true);\n }\n if (!_.initonly) {\n pulse.modifies(as);\n }\n return pulse.visit(flag, function (t) {\n return t[as] = func(t, _);\n });\n }\n});\n\n/**\n * Generates data tuples using a provided generator function.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(Parameters): object} params.generator - A tuple generator\n * function. This function is given the operator parameters as input.\n * Changes to any additional parameters will not trigger re-calculation\n * of previously generated tuples. Only future tuples are affected.\n * @param {number} params.size - The number of tuples to produce.\n */\nfunction Generate(params) {\n Transform.call(this, [], params);\n}\ninherits(Generate, Transform, {\n transform: function transform(_, pulse) {\n var out = pulse.fork(pulse.ALL),\n gen = _.generator;\n var data = this.value,\n num = _.size - data.length,\n add,\n rem,\n t;\n if (num > 0) {\n // need more tuples, generate and add\n for (add = []; --num >= 0;) {\n add.push(t = ingest(gen(_)));\n data.push(t);\n }\n out.add = out.add.length ? out.materialize(out.ADD).add.concat(add) : add;\n } else {\n // need fewer tuples, remove\n rem = data.slice(0, -num);\n out.rem = out.rem.length ? out.materialize(out.REM).rem.concat(rem) : rem;\n data = data.slice(-num);\n }\n out.source = this.value = data;\n return out;\n }\n});\nvar Methods = {\n value: 'value',\n median: median,\n mean: mean,\n min: min,\n max: max\n};\nvar Empty = [];\n\n/**\n * Impute missing values.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to impute.\n * @param {Array} [params.groupby] - An array of\n * accessors to determine series within which to perform imputation.\n * @param {function(object): *} params.key - An accessor for a key value.\n * Each key value should be unique within a group. New tuples will be\n * imputed for any key values that are not found within a group.\n * @param {Array<*>} [params.keyvals] - Optional array of required key\n * values. New tuples will be imputed for any key values that are not\n * found within a group. In addition, these values will be automatically\n * augmented with the key values observed in the input data.\n * @param {string} [method='value'] - The imputation method to use. One of\n * 'value', 'mean', 'median', 'max', 'min'.\n * @param {*} [value=0] - The constant value to use for imputation\n * when using method 'value'.\n */\nfunction Impute(params) {\n Transform.call(this, [], params);\n}\nImpute.Definition = {\n 'type': 'Impute',\n 'metadata': {\n 'changes': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'key',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'keyvals',\n 'array': true\n }, {\n 'name': 'groupby',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'method',\n 'type': 'enum',\n 'default': 'value',\n 'values': ['value', 'mean', 'median', 'max', 'min']\n }, {\n 'name': 'value',\n 'default': 0\n }]\n};\nfunction getValue(_) {\n var m = _.method || Methods.value,\n v;\n if (Methods[m] == null) {\n error('Unrecognized imputation method: ' + m);\n } else if (m === Methods.value) {\n v = _.value !== undefined ? _.value : 0;\n return function () {\n return v;\n };\n } else {\n return Methods[m];\n }\n}\nfunction getField(_) {\n var f = _.field;\n return function (t) {\n return t ? f(t) : NaN;\n };\n}\ninherits(Impute, Transform, {\n transform: function transform(_, pulse) {\n var out = pulse.fork(pulse.ALL),\n impute = getValue(_),\n field = getField(_),\n fName = accessorName(_.field),\n kName = accessorName(_.key),\n gNames = (_.groupby || []).map(accessorName),\n groups = partition(pulse.source, _.groupby, _.key, _.keyvals),\n curr = [],\n prev = this.value,\n m = groups.domain.length,\n group,\n value,\n gVals,\n kVal,\n g,\n i,\n j,\n l,\n n,\n t;\n for (g = 0, l = groups.length; g < l; ++g) {\n group = groups[g];\n gVals = group.values;\n value = NaN;\n\n // add tuples for missing values\n for (j = 0; j < m; ++j) {\n if (group[j] != null) continue;\n kVal = groups.domain[j];\n t = {\n _impute: true\n };\n for (i = 0, n = gVals.length; i < n; ++i) t[gNames[i]] = gVals[i];\n t[kName] = kVal;\n t[fName] = Number.isNaN(value) ? value = impute(group, field) : value;\n curr.push(ingest(t));\n }\n }\n\n // update pulse with imputed tuples\n if (curr.length) out.add = out.materialize(out.ADD).add.concat(curr);\n if (prev.length) out.rem = out.materialize(out.REM).rem.concat(prev);\n this.value = curr;\n return out;\n }\n});\nfunction partition(data, groupby, key, keyvals) {\n var get = function get(f) {\n return f(t);\n },\n groups = [],\n domain = keyvals ? keyvals.slice() : [],\n kMap = {},\n gMap = {},\n gVals,\n gKey,\n group,\n i,\n j,\n k,\n n,\n t;\n domain.forEach(function (k, i) {\n return kMap[k] = i + 1;\n });\n for (i = 0, n = data.length; i < n; ++i) {\n t = data[i];\n k = key(t);\n j = kMap[k] || (kMap[k] = domain.push(k));\n gKey = (gVals = groupby ? groupby.map(get) : Empty) + '';\n if (!(group = gMap[gKey])) {\n group = gMap[gKey] = [];\n groups.push(group);\n group.values = gVals;\n }\n group[j - 1] = t;\n }\n groups.domain = domain;\n return groups;\n}\n\n/**\n * Extend input tuples with aggregate values.\n * Calcuates aggregate values and joins them with the input stream.\n * @constructor\n */\nfunction JoinAggregate(params) {\n Aggregate.call(this, params);\n}\nJoinAggregate.Definition = {\n 'type': 'JoinAggregate',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'groupby',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'fields',\n 'type': 'field',\n 'null': true,\n 'array': true\n }, {\n 'name': 'ops',\n 'type': 'enum',\n 'array': true,\n 'values': ValidAggregateOps\n }, {\n 'name': 'as',\n 'type': 'string',\n 'null': true,\n 'array': true\n }, {\n 'name': 'key',\n 'type': 'field'\n }]\n};\ninherits(JoinAggregate, Aggregate, {\n transform: function transform(_, pulse) {\n var aggr = this,\n mod = _.modified();\n var cells;\n\n // process all input tuples to calculate aggregates\n if (aggr.value && (mod || pulse.modified(aggr._inputs, true))) {\n cells = aggr.value = mod ? aggr.init(_) : {};\n pulse.visit(pulse.SOURCE, function (t) {\n return aggr.add(t);\n });\n } else {\n cells = aggr.value = aggr.value || this.init(_);\n pulse.visit(pulse.REM, function (t) {\n return aggr.rem(t);\n });\n pulse.visit(pulse.ADD, function (t) {\n return aggr.add(t);\n });\n }\n\n // update aggregation cells\n aggr.changes();\n\n // write aggregate values to input tuples\n pulse.visit(pulse.SOURCE, function (t) {\n extend(t, cells[aggr.cellkey(t)].tuple);\n });\n return pulse.reflow(mod).modifies(this._outputs);\n },\n changes: function changes() {\n var adds = this._adds,\n mods = this._mods;\n var i, n;\n for (i = 0, n = this._alen; i < n; ++i) {\n this.celltuple(adds[i]);\n adds[i] = null; // for garbage collection\n }\n\n for (i = 0, n = this._mlen; i < n; ++i) {\n this.celltuple(mods[i]);\n mods[i] = null; // for garbage collection\n }\n\n this._alen = this._mlen = 0; // reset list of active cells\n }\n});\n\n/**\n * Compute kernel density estimates (KDE) for one or more data groups.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array} [params.groupby] - An array of accessors\n * to groupby.\n * @param {function(object): *} params.field - An accessor for the data field\n * to estimate.\n * @param {number} [params.bandwidth=0] - The KDE kernel bandwidth.\n * If zero or unspecified, the bandwidth is automatically determined.\n * @param {boolean} [params.counts=false] - A boolean flag indicating if the\n * output values should be probability estimates (false, default) or\n * smoothed counts (true).\n * @param {string} [params.cumulative=false] - A boolean flag indicating if a\n * density (false) or cumulative distribution (true) should be generated.\n * @param {Array} [params.extent] - The domain extent over which to\n * plot the density. If unspecified, the [min, max] data extent is used.\n * @param {string} [params.resolve='independent'] - Indicates how parameters for\n * multiple densities should be resolved. If \"independent\" (the default), each\n * density may have its own domain extent and dynamic number of curve sample\n * steps. If \"shared\", the KDE transform will ensure that all densities are\n * defined over a shared domain and curve steps, enabling stacking.\n * @param {number} [params.minsteps=25] - The minimum number of curve samples\n * for plotting the density.\n * @param {number} [params.maxsteps=200] - The maximum number of curve samples\n * for plotting the density.\n * @param {number} [params.steps] - The exact number of curve samples for\n * plotting the density. If specified, overrides both minsteps and maxsteps\n * to set an exact number of uniform samples. Useful in conjunction with\n * a fixed extent to ensure consistent sample points for stacked densities.\n */\nfunction KDE(params) {\n Transform.call(this, null, params);\n}\nKDE.Definition = {\n 'type': 'KDE',\n 'metadata': {\n 'generates': true\n },\n 'params': [{\n 'name': 'groupby',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'field',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'cumulative',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'counts',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'bandwidth',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'extent',\n 'type': 'number',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'resolve',\n 'type': 'enum',\n 'values': ['shared', 'independent'],\n 'default': 'independent'\n }, {\n 'name': 'steps',\n 'type': 'number'\n }, {\n 'name': 'minsteps',\n 'type': 'number',\n 'default': 25\n }, {\n 'name': 'maxsteps',\n 'type': 'number',\n 'default': 200\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'default': ['value', 'density']\n }]\n};\ninherits(KDE, Transform, {\n transform: function transform(_, pulse) {\n var out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n if (!this.value || pulse.changed() || _.modified()) {\n var _source = pulse.materialize(pulse.SOURCE).source,\n groups = partition$1(_source, _.groupby, _.field),\n names = (_.groupby || []).map(accessorName),\n bandwidth = _.bandwidth,\n method = _.cumulative ? 'cdf' : 'pdf',\n as = _.as || ['value', 'density'],\n values = [];\n var domain = _.extent,\n minsteps = _.steps || _.minsteps || 25,\n maxsteps = _.steps || _.maxsteps || 200;\n if (method !== 'pdf' && method !== 'cdf') {\n error('Invalid density method: ' + method);\n }\n if (_.resolve === 'shared') {\n if (!domain) domain = extent(_source, _.field);\n minsteps = maxsteps = _.steps || maxsteps;\n }\n groups.forEach(function (g) {\n var density = randomKDE(g, bandwidth)[method],\n scale = _.counts ? g.length : 1,\n local = domain || extent(g);\n sampleCurve(density, local, minsteps, maxsteps).forEach(function (v) {\n var t = {};\n for (var i = 0; i < names.length; ++i) {\n t[names[i]] = g.dims[i];\n }\n t[as[0]] = v[0];\n t[as[1]] = v[1] * scale;\n values.push(ingest(t));\n });\n });\n if (this.value) out.rem = this.value;\n this.value = out.add = out.source = values;\n }\n return out;\n }\n});\n\n/**\n * Generates a key function.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array} params.fields - The field name(s) for the key function.\n * @param {boolean} params.flat - A boolean flag indicating if the field names\n * should be treated as flat property names, side-stepping nested field\n * lookups normally indicated by dot or bracket notation.\n */\nfunction Key(params) {\n Operator.call(this, null, update$2, params);\n}\ninherits(Key, Operator);\nfunction update$2(_) {\n return this.value && !_.modified() ? this.value : key(_.fields, _.flat);\n}\n\n/**\n * Load and parse data from an external source. Marshalls parameter\n * values and then invokes the Dataflow request method.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {string} params.url - The URL to load from.\n * @param {object} params.format - The data format options.\n */\nfunction Load(params) {\n Transform.call(this, [], params);\n this._pending = null;\n}\ninherits(Load, Transform, {\n transform: function transform(_, pulse) {\n var _this7 = this;\n var df = pulse.dataflow;\n if (this._pending) {\n // update state and return pulse\n return output(this, pulse, this._pending);\n }\n if (stop(_)) return pulse.StopPropagation;\n if (_.values) {\n // parse and ingest values, return output pulse\n return output(this, pulse, df.parse(_.values, _.format));\n } else if (_.async) {\n // return promise for non-blocking async loading\n var p = df.request(_.url, _.format).then(function (res) {\n _this7._pending = array(res.data);\n return function (df) {\n return df.touch(_this7);\n };\n });\n return {\n async: p\n };\n } else {\n // return promise for synchronous loading\n return df.request(_.url, _.format).then(function (res) {\n return output(_this7, pulse, array(res.data));\n });\n }\n }\n});\nfunction stop(_) {\n return _.modified('async') && !(_.modified('values') || _.modified('url') || _.modified('format'));\n}\nfunction output(op, pulse, data) {\n data.forEach(ingest);\n var out = pulse.fork(pulse.NO_FIELDS & pulse.NO_SOURCE);\n out.rem = op.value;\n op.value = out.source = out.add = data;\n op._pending = null;\n if (out.rem.length) out.clean(true);\n return out;\n}\n\n/**\n * Extend tuples by joining them with values from a lookup table.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Map} params.index - The lookup table map.\n * @param {Array} params.as - Output field names for each lookup value.\n * @param {*} [params.default] - A default value to use if lookup fails.\n */\nfunction Lookup(params) {\n Transform.call(this, {}, params);\n}\nLookup.Definition = {\n 'type': 'Lookup',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'index',\n 'type': 'index',\n 'params': [{\n 'name': 'from',\n 'type': 'data',\n 'required': true\n }, {\n 'name': 'key',\n 'type': 'field',\n 'required': true\n }]\n }, {\n 'name': 'values',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'fields',\n 'type': 'field',\n 'array': true,\n 'required': true\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true\n }, {\n 'name': 'default',\n 'default': null\n }]\n};\ninherits(Lookup, Transform, {\n transform: function transform(_, pulse) {\n var keys = _.fields,\n index = _.index,\n values = _.values,\n defaultValue = _.default == null ? null : _.default,\n reset = _.modified(),\n n = keys.length;\n var flag = reset ? pulse.SOURCE : pulse.ADD,\n out = pulse,\n as = _.as,\n set,\n m,\n mods;\n if (values) {\n m = values.length;\n if (n > 1 && !as) {\n error('Multi-field lookup requires explicit \"as\" parameter.');\n }\n if (as && as.length !== n * m) {\n error('The \"as\" parameter has too few output field names.');\n }\n as = as || values.map(accessorName);\n set = function set(t) {\n for (var i = 0, k = 0, j, v; i < n; ++i) {\n v = index.get(keys[i](t));\n if (v == null) for (j = 0; j < m; ++j, ++k) t[as[k]] = defaultValue;else for (j = 0; j < m; ++j, ++k) t[as[k]] = values[j](v);\n }\n };\n } else {\n if (!as) {\n error('Missing output field names.');\n }\n set = function set(t) {\n for (var i = 0, v; i < n; ++i) {\n v = index.get(keys[i](t));\n t[as[i]] = v == null ? defaultValue : v;\n }\n };\n }\n if (reset) {\n out = pulse.reflow(true);\n } else {\n mods = keys.some(function (k) {\n return pulse.modified(k.fields);\n });\n flag |= mods ? pulse.MOD : 0;\n }\n pulse.visit(flag, set);\n return out.modifies(as);\n }\n});\n\n/**\n * Computes global min/max extents over a collection of extents.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array>} params.extents - The input extents.\n */\nfunction MultiExtent(params) {\n Operator.call(this, null, update$1, params);\n}\ninherits(MultiExtent, Operator);\nfunction update$1(_) {\n if (this.value && !_.modified()) {\n return this.value;\n }\n var ext = _.extents,\n n = ext.length;\n var min = +Infinity,\n max = -Infinity,\n i,\n e;\n for (i = 0; i < n; ++i) {\n e = ext[i];\n if (e[0] < min) min = e[0];\n if (e[1] > max) max = e[1];\n }\n return [min, max];\n}\n\n/**\n * Merge a collection of value arrays.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array>} params.values - The input value arrrays.\n */\nfunction MultiValues(params) {\n Operator.call(this, null, update, params);\n}\ninherits(MultiValues, Operator);\nfunction update(_) {\n return this.value && !_.modified() ? this.value : _.values.reduce(function (data, _) {\n return data.concat(_);\n }, []);\n}\n\n/**\n * Operator whose value is simply its parameter hash. This operator is\n * useful for enabling reactive updates to values of nested objects.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nfunction Params(params) {\n Transform.call(this, null, params);\n}\ninherits(Params, Transform, {\n transform: function transform(_, pulse) {\n this.modified(_.modified());\n this.value = _;\n return pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS); // do not pass tuples\n }\n});\n\n/**\n * Aggregate and pivot selected field values to become new fields.\n * This operator is useful to construction cross-tabulations.\n * @constructor\n * @param {Array} [params.groupby] - An array of accessors\n * to groupby. These fields act just like groupby fields of an Aggregate transform.\n * @param {function(object): *} params.field - The field to pivot on. The unique\n * values of this field become new field names in the output stream.\n * @param {function(object): *} params.value - The field to populate pivoted fields.\n * The aggregate values of this field become the values of the new pivoted fields.\n * @param {string} [params.op] - The aggregation operation for the value field,\n * applied per cell in the output stream. The default is \"sum\".\n * @param {number} [params.limit] - An optional parameter indicating the maximum\n * number of pivoted fields to generate. The pivoted field names are sorted in\n * ascending order prior to enforcing the limit.\n */\nfunction Pivot(params) {\n Aggregate.call(this, params);\n}\nPivot.Definition = {\n 'type': 'Pivot',\n 'metadata': {\n 'generates': true,\n 'changes': true\n },\n 'params': [{\n 'name': 'groupby',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'field',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'value',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'op',\n 'type': 'enum',\n 'values': ValidAggregateOps,\n 'default': 'sum'\n }, {\n 'name': 'limit',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'key',\n 'type': 'field'\n }]\n};\ninherits(Pivot, Aggregate, {\n _transform: Aggregate.prototype.transform,\n transform: function transform(_, pulse) {\n return this._transform(aggregateParams(_, pulse), pulse);\n }\n});\n\n// Shoehorn a pivot transform into an aggregate transform!\n// First collect all unique pivot field values.\n// Then generate aggregate fields for each output pivot field.\nfunction aggregateParams(_, pulse) {\n var key = _.field,\n value = _.value,\n op = (_.op === 'count' ? '__count__' : _.op) || 'sum',\n fields = accessorFields(key).concat(accessorFields(value)),\n keys = pivotKeys(key, _.limit || 0, pulse);\n\n // if data stream content changes, pivot fields may change\n // flag parameter modification to ensure re-initialization\n if (pulse.changed()) _.set('__pivot__', null, null, true);\n return {\n key: _.key,\n groupby: _.groupby,\n ops: keys.map(function () {\n return op;\n }),\n fields: keys.map(function (k) {\n return get(k, key, value, fields);\n }),\n as: keys.map(function (k) {\n return k + '';\n }),\n modified: _.modified.bind(_)\n };\n}\n\n// Generate aggregate field accessor.\n// Output NaN for non-existent values; aggregator will ignore!\nfunction get(k, key, value, fields) {\n return accessor(function (d) {\n return key(d) === k ? value(d) : NaN;\n }, fields, k + '');\n}\n\n// Collect (and optionally limit) all unique pivot values.\nfunction pivotKeys(key, limit, pulse) {\n var map = {},\n list = [];\n pulse.visit(pulse.SOURCE, function (t) {\n var k = key(t);\n if (!map[k]) {\n map[k] = 1;\n list.push(k);\n }\n });\n list.sort(ascending);\n return limit ? list.slice(0, limit) : list;\n}\n\n/**\n * Partitions pre-faceted data into tuple subflows.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(Dataflow, string): Operator} params.subflow - A function\n * that generates a subflow of operators and returns its root operator.\n * @param {function(object): Array} params.field - The field\n * accessor for an array of subflow tuple objects.\n */\nfunction PreFacet(params) {\n Facet.call(this, params);\n}\ninherits(PreFacet, Facet, {\n transform: function transform(_, pulse) {\n var _this8 = this;\n var flow = _.subflow,\n field = _.field,\n subflow = function subflow(t) {\n return _this8.subflow(tupleid(t), flow, pulse, t);\n };\n if (_.modified('field') || field && pulse.modified(accessorFields(field))) {\n error('PreFacet does not support field modification.');\n }\n this.initTargets(); // reset list of active subflows\n\n if (field) {\n pulse.visit(pulse.MOD, function (t) {\n var sf = subflow(t);\n field(t).forEach(function (_) {\n return sf.mod(_);\n });\n });\n pulse.visit(pulse.ADD, function (t) {\n var sf = subflow(t);\n field(t).forEach(function (_) {\n return sf.add(ingest(_));\n });\n });\n pulse.visit(pulse.REM, function (t) {\n var sf = subflow(t);\n field(t).forEach(function (_) {\n return sf.rem(_);\n });\n });\n } else {\n pulse.visit(pulse.MOD, function (t) {\n return subflow(t).mod(t);\n });\n pulse.visit(pulse.ADD, function (t) {\n return subflow(t).add(t);\n });\n pulse.visit(pulse.REM, function (t) {\n return subflow(t).rem(t);\n });\n }\n if (pulse.clean()) {\n pulse.runAfter(function () {\n return _this8.clean();\n });\n }\n return pulse;\n }\n});\n\n/**\n * Performs a relational projection, copying selected fields from source\n * tuples to a new set of derived tuples.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array} [params.as] - Output field names for each projected\n * field. Any unspecified fields will use the field name provided by\n * the field accessor.\n */\nfunction Project(params) {\n Transform.call(this, null, params);\n}\nProject.Definition = {\n 'type': 'Project',\n 'metadata': {\n 'generates': true,\n 'changes': true\n },\n 'params': [{\n 'name': 'fields',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'as',\n 'type': 'string',\n 'null': true,\n 'array': true\n }]\n};\ninherits(Project, Transform, {\n transform: function transform(_, pulse) {\n var out = pulse.fork(pulse.NO_SOURCE),\n fields = _.fields,\n as = fieldNames(_.fields, _.as || []),\n derive = fields ? function (s, t) {\n return project(s, t, fields, as);\n } : rederive;\n var lut;\n if (this.value) {\n lut = this.value;\n } else {\n pulse = pulse.addAll();\n lut = this.value = {};\n }\n pulse.visit(pulse.REM, function (t) {\n var id = tupleid(t);\n out.rem.push(lut[id]);\n lut[id] = null;\n });\n pulse.visit(pulse.ADD, function (t) {\n var dt = derive(t, ingest({}));\n lut[tupleid(t)] = dt;\n out.add.push(dt);\n });\n pulse.visit(pulse.MOD, function (t) {\n out.mod.push(derive(t, lut[tupleid(t)]));\n });\n return out;\n }\n});\nfunction project(s, t, fields, as) {\n for (var i = 0, n = fields.length; i < n; ++i) {\n t[as[i]] = fields[i](s);\n }\n return t;\n}\n\n/**\n * Proxy the value of another operator as a pure signal value.\n * Ensures no tuples are propagated.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {*} params.value - The value to proxy, becomes the value of this operator.\n */\nfunction Proxy(params) {\n Transform.call(this, null, params);\n}\ninherits(Proxy, Transform, {\n transform: function transform(_, pulse) {\n this.value = _.value;\n return _.modified('value') ? pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS) : pulse.StopPropagation;\n }\n});\n\n/**\n * Generates sample quantile values from an input data stream.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - An accessor for the data field\n * over which to calculate quantile values.\n * @param {Array} [params.groupby] - An array of accessors\n * to groupby.\n * @param {Array} [params.probs] - An array of probabilities in\n * the range (0, 1) for which to compute quantile values. If not specified,\n * the *step* parameter will be used.\n * @param {Array} [params.step=0.01] - A probability step size for\n * sampling quantile values. All values from one-half the step size up to\n * 1 (exclusive) will be sampled. This parameter is only used if the\n * *quantiles* parameter is not provided.\n */\nfunction Quantile(params) {\n Transform.call(this, null, params);\n}\nQuantile.Definition = {\n 'type': 'Quantile',\n 'metadata': {\n 'generates': true,\n 'changes': true\n },\n 'params': [{\n 'name': 'groupby',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'field',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'probs',\n 'type': 'number',\n 'array': true\n }, {\n 'name': 'step',\n 'type': 'number',\n 'default': 0.01\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'default': ['prob', 'value']\n }]\n};\nvar EPSILON = 1e-14;\ninherits(Quantile, Transform, {\n transform: function transform(_, pulse) {\n var out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n as = _.as || ['prob', 'value'];\n if (this.value && !_.modified() && !pulse.changed()) {\n out.source = this.value;\n return out;\n }\n var source = pulse.materialize(pulse.SOURCE).source,\n groups = partition$1(source, _.groupby, _.field),\n names = (_.groupby || []).map(accessorName),\n values = [],\n step = _.step || 0.01,\n p = _.probs || range(step / 2, 1 - EPSILON, step),\n n = p.length;\n groups.forEach(function (g) {\n var q = quantiles(g, p);\n for (var i = 0; i < n; ++i) {\n var t = {};\n for (var _i2 = 0; _i2 < names.length; ++_i2) {\n t[names[_i2]] = g.dims[_i2];\n }\n t[as[0]] = p[i];\n t[as[1]] = q[i];\n values.push(ingest(t));\n }\n });\n if (this.value) out.rem = this.value;\n this.value = out.add = out.source = values;\n return out;\n }\n});\n\n/**\n * Relays a data stream between data processing pipelines.\n * If the derive parameter is set, this transform will create derived\n * copies of observed tuples. This provides derived data streams in which\n * modifications to the tuples do not pollute an upstream data source.\n * @param {object} params - The parameters for this operator.\n * @param {number} [params.derive=false] - Boolean flag indicating if\n * the transform should make derived copies of incoming tuples.\n * @constructor\n */\nfunction Relay(params) {\n Transform.call(this, null, params);\n}\ninherits(Relay, Transform, {\n transform: function transform(_, pulse) {\n var out, lut;\n if (this.value) {\n lut = this.value;\n } else {\n out = pulse = pulse.addAll();\n lut = this.value = {};\n }\n if (_.derive) {\n out = pulse.fork(pulse.NO_SOURCE);\n pulse.visit(pulse.REM, function (t) {\n var id = tupleid(t);\n out.rem.push(lut[id]);\n lut[id] = null;\n });\n pulse.visit(pulse.ADD, function (t) {\n var dt = derive(t);\n lut[tupleid(t)] = dt;\n out.add.push(dt);\n });\n pulse.visit(pulse.MOD, function (t) {\n var dt = lut[tupleid(t)];\n for (var k in t) {\n dt[k] = t[k];\n // down stream writes may overwrite re-derived tuples\n // conservatively mark all source fields as modified\n out.modifies(k);\n }\n out.mod.push(dt);\n });\n }\n return out;\n }\n});\n\n/**\n * Samples tuples passing through this operator.\n * Uses reservoir sampling to maintain a representative sample.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {number} [params.size=1000] - The maximum number of samples.\n */\nfunction Sample(params) {\n Transform.call(this, [], params);\n this.count = 0;\n}\nSample.Definition = {\n 'type': 'Sample',\n 'metadata': {},\n 'params': [{\n 'name': 'size',\n 'type': 'number',\n 'default': 1000\n }]\n};\ninherits(Sample, Transform, {\n transform: function transform(_, pulse) {\n var out = pulse.fork(pulse.NO_SOURCE),\n mod = _.modified('size'),\n num = _.size,\n map = this.value.reduce(function (m, t) {\n return m[tupleid(t)] = 1, m;\n }, {});\n var res = this.value,\n cnt = this.count,\n cap = 0;\n\n // sample reservoir update function\n function update(t) {\n var p, idx;\n if (res.length < num) {\n res.push(t);\n } else {\n idx = ~~((cnt + 1) * random());\n if (idx < res.length && idx >= cap) {\n p = res[idx];\n if (map[tupleid(p)]) out.rem.push(p); // eviction\n res[idx] = t;\n }\n }\n ++cnt;\n }\n if (pulse.rem.length) {\n // find all tuples that should be removed, add to output\n pulse.visit(pulse.REM, function (t) {\n var id = tupleid(t);\n if (map[id]) {\n map[id] = -1;\n out.rem.push(t);\n }\n --cnt;\n });\n\n // filter removed tuples out of the sample reservoir\n res = res.filter(function (t) {\n return map[tupleid(t)] !== -1;\n });\n }\n if ((pulse.rem.length || mod) && res.length < num && pulse.source) {\n // replenish sample if backing data source is available\n cap = cnt = res.length;\n pulse.visit(pulse.SOURCE, function (t) {\n // update, but skip previously sampled tuples\n if (!map[tupleid(t)]) update(t);\n });\n cap = -1;\n }\n if (mod && res.length > num) {\n var n = res.length - num;\n for (var i = 0; i < n; ++i) {\n map[tupleid(res[i])] = -1;\n out.rem.push(res[i]);\n }\n res = res.slice(n);\n }\n if (pulse.mod.length) {\n // propagate modified tuples in the sample reservoir\n pulse.visit(pulse.MOD, function (t) {\n if (map[tupleid(t)]) out.mod.push(t);\n });\n }\n if (pulse.add.length) {\n // update sample reservoir\n pulse.visit(pulse.ADD, update);\n }\n if (pulse.add.length || cap < 0) {\n // output newly added tuples\n out.add = res.filter(function (t) {\n return !map[tupleid(t)];\n });\n }\n this.count = cnt;\n this.value = out.source = res;\n return out;\n }\n});\n\n/**\n * Generates data tuples for a specified sequence range of numbers.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {number} params.start - The first number in the sequence.\n * @param {number} params.stop - The last number (exclusive) in the sequence.\n * @param {number} [params.step=1] - The step size between numbers in the sequence.\n */\nfunction Sequence(params) {\n Transform.call(this, null, params);\n}\nSequence.Definition = {\n 'type': 'Sequence',\n 'metadata': {\n 'generates': true,\n 'changes': true\n },\n 'params': [{\n 'name': 'start',\n 'type': 'number',\n 'required': true\n }, {\n 'name': 'stop',\n 'type': 'number',\n 'required': true\n }, {\n 'name': 'step',\n 'type': 'number',\n 'default': 1\n }, {\n 'name': 'as',\n 'type': 'string',\n 'default': 'data'\n }]\n};\ninherits(Sequence, Transform, {\n transform: function transform(_, pulse) {\n if (this.value && !_.modified()) return;\n var out = pulse.materialize().fork(pulse.MOD),\n as = _.as || 'data';\n out.rem = this.value ? pulse.rem.concat(this.value) : pulse.rem;\n this.value = range(_.start, _.stop, _.step || 1).map(function (v) {\n var t = {};\n t[as] = v;\n return ingest(t);\n });\n out.add = pulse.add.concat(this.value);\n return out;\n }\n});\n\n/**\n * Propagates a new pulse without any tuples so long as the input\n * pulse contains some added, removed or modified tuples.\n * @param {object} params - The parameters for this operator.\n * @constructor\n */\nfunction Sieve(params) {\n Transform.call(this, null, params);\n this.modified(true); // always treat as modified\n}\n\ninherits(Sieve, Transform, {\n transform: function transform(_, pulse) {\n this.value = pulse.source;\n return pulse.changed() ? pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS) : pulse.StopPropagation;\n }\n});\n\n/**\n * Discretize dates to specific time units.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The data field containing date/time values.\n */\nfunction TimeUnit(params) {\n Transform.call(this, null, params);\n}\nvar OUTPUT = ['unit0', 'unit1'];\nTimeUnit.Definition = {\n 'type': 'TimeUnit',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'interval',\n 'type': 'boolean',\n 'default': true\n }, {\n 'name': 'units',\n 'type': 'enum',\n 'values': TIME_UNITS,\n 'array': true\n }, {\n 'name': 'step',\n 'type': 'number',\n 'default': 1\n }, {\n 'name': 'maxbins',\n 'type': 'number',\n 'default': 40\n }, {\n 'name': 'extent',\n 'type': 'date',\n 'array': true\n }, {\n 'name': 'timezone',\n 'type': 'enum',\n 'default': 'local',\n 'values': ['local', 'utc']\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': 2,\n 'default': OUTPUT\n }]\n};\ninherits(TimeUnit, Transform, {\n transform: function transform(_, pulse) {\n var field = _.field,\n band = _.interval !== false,\n utc = _.timezone === 'utc',\n floor = this._floor(_, pulse),\n offset = (utc ? utcInterval : timeInterval)(floor.unit).offset,\n as = _.as || OUTPUT,\n u0 = as[0],\n u1 = as[1],\n step = floor.step;\n var min = floor.start || Infinity,\n max = floor.stop || -Infinity,\n flag = pulse.ADD;\n if (_.modified() || pulse.changed(pulse.REM) || pulse.modified(accessorFields(field))) {\n pulse = pulse.reflow(true);\n flag = pulse.SOURCE;\n min = Infinity;\n max = -Infinity;\n }\n pulse.visit(flag, function (t) {\n var v = field(t);\n var a, b;\n if (v == null) {\n t[u0] = null;\n if (band) t[u1] = null;\n } else {\n t[u0] = a = b = floor(v);\n if (band) t[u1] = b = offset(a, step);\n if (a < min) min = a;\n if (b > max) max = b;\n }\n });\n floor.start = min;\n floor.stop = max;\n return pulse.modifies(band ? as : u0);\n },\n _floor: function _floor(_, pulse) {\n var utc = _.timezone === 'utc';\n\n // get parameters\n var _ref = _.units ? {\n units: _.units,\n step: _.step || 1\n } : timeBin({\n extent: _.extent || extent(pulse.materialize(pulse.SOURCE).source, _.field),\n maxbins: _.maxbins\n }),\n units = _ref.units,\n step = _ref.step;\n\n // check / standardize time units\n var tunits = timeUnits(units),\n prev = this.value || {},\n floor = (utc ? utcFloor : timeFloor)(tunits, step);\n floor.unit = peek(tunits);\n floor.units = tunits;\n floor.step = step;\n floor.start = prev.start;\n floor.stop = prev.stop;\n return this.value = floor;\n }\n});\n\n/**\n * An index that maps from unique, string-coerced, field values to tuples.\n * Assumes that the field serves as a unique key with no duplicate values.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The field accessor to index.\n */\nfunction TupleIndex(params) {\n Transform.call(this, fastmap(), params);\n}\ninherits(TupleIndex, Transform, {\n transform: function transform(_, pulse) {\n var df = pulse.dataflow,\n field = _.field,\n index = this.value,\n set = function set(t) {\n return index.set(field(t), t);\n };\n var mod = true;\n if (_.modified('field') || pulse.modified(field.fields)) {\n index.clear();\n pulse.visit(pulse.SOURCE, set);\n } else if (pulse.changed()) {\n pulse.visit(pulse.REM, function (t) {\n return index.delete(field(t));\n });\n pulse.visit(pulse.ADD, set);\n } else {\n mod = false;\n }\n this.modified(mod);\n if (index.empty > df.cleanThreshold) df.runAfter(index.clean);\n return pulse.fork();\n }\n});\n\n/**\n * Extracts an array of values. Assumes the source data has already been\n * reduced as needed (e.g., by an upstream Aggregate transform).\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The domain field to extract.\n * @param {function(*,*): number} [params.sort] - An optional\n * comparator function for sorting the values. The comparator will be\n * applied to backing tuples prior to value extraction.\n */\nfunction Values(params) {\n Transform.call(this, null, params);\n}\ninherits(Values, Transform, {\n transform: function transform(_, pulse) {\n var run = !this.value || _.modified('field') || _.modified('sort') || pulse.changed() || _.sort && pulse.modified(_.sort.fields);\n if (run) {\n this.value = (_.sort ? pulse.source.slice().sort(stableCompare(_.sort)) : pulse.source).map(_.field);\n }\n }\n});\nfunction WindowOp(op, field, param, as) {\n var fn = WindowOps[op](field, param);\n return {\n init: fn.init || zero,\n update: function update(w, t) {\n t[as] = fn.next(w);\n }\n };\n}\nvar WindowOps = {\n row_number: function row_number() {\n return {\n next: function next(w) {\n return w.index + 1;\n }\n };\n },\n rank: function rank() {\n var rank;\n return {\n init: function init() {\n return rank = 1;\n },\n next: function next(w) {\n var i = w.index,\n data = w.data;\n return i && w.compare(data[i - 1], data[i]) ? rank = i + 1 : rank;\n }\n };\n },\n dense_rank: function dense_rank() {\n var drank;\n return {\n init: function init() {\n return drank = 1;\n },\n next: function next(w) {\n var i = w.index,\n d = w.data;\n return i && w.compare(d[i - 1], d[i]) ? ++drank : drank;\n }\n };\n },\n percent_rank: function percent_rank() {\n var rank = WindowOps.rank(),\n _next = rank.next;\n return {\n init: rank.init,\n next: function next(w) {\n return (_next(w) - 1) / (w.data.length - 1);\n }\n };\n },\n cume_dist: function cume_dist() {\n var cume;\n return {\n init: function init() {\n return cume = 0;\n },\n next: function next(w) {\n var d = w.data,\n c = w.compare;\n var i = w.index;\n if (cume < i) {\n while (i + 1 < d.length && !c(d[i], d[i + 1])) ++i;\n cume = i;\n }\n return (1 + cume) / d.length;\n }\n };\n },\n ntile: function ntile(field, num) {\n num = +num;\n if (!(num > 0)) error('ntile num must be greater than zero.');\n var cume = WindowOps.cume_dist(),\n _next2 = cume.next;\n return {\n init: cume.init,\n next: function next(w) {\n return Math.ceil(num * _next2(w));\n }\n };\n },\n lag: function lag(field, offset) {\n offset = +offset || 1;\n return {\n next: function next(w) {\n var i = w.index - offset;\n return i >= 0 ? field(w.data[i]) : null;\n }\n };\n },\n lead: function lead(field, offset) {\n offset = +offset || 1;\n return {\n next: function next(w) {\n var i = w.index + offset,\n d = w.data;\n return i < d.length ? field(d[i]) : null;\n }\n };\n },\n first_value: function first_value(field) {\n return {\n next: function next(w) {\n return field(w.data[w.i0]);\n }\n };\n },\n last_value: function last_value(field) {\n return {\n next: function next(w) {\n return field(w.data[w.i1 - 1]);\n }\n };\n },\n nth_value: function nth_value(field, nth) {\n nth = +nth;\n if (!(nth > 0)) error('nth_value nth must be greater than zero.');\n return {\n next: function next(w) {\n var i = w.i0 + (nth - 1);\n return i < w.i1 ? field(w.data[i]) : null;\n }\n };\n },\n prev_value: function prev_value(field) {\n var prev;\n return {\n init: function init() {\n return prev = null;\n },\n next: function next(w) {\n var v = field(w.data[w.index]);\n return v != null ? prev = v : prev;\n }\n };\n },\n next_value: function next_value(field) {\n var v, i;\n return {\n init: function init() {\n return v = null, i = -1;\n },\n next: function next(w) {\n var d = w.data;\n return w.index <= i ? v : (i = find(field, d, w.index)) < 0 ? (i = d.length, v = null) : v = field(d[i]);\n }\n };\n }\n};\nfunction find(field, data, index) {\n for (var n = data.length; index < n; ++index) {\n var v = field(data[index]);\n if (v != null) return index;\n }\n return -1;\n}\nvar ValidWindowOps = Object.keys(WindowOps);\nfunction WindowState(_) {\n var ops = array(_.ops),\n fields = array(_.fields),\n params = array(_.params),\n as = array(_.as),\n outputs = this.outputs = [],\n windows = this.windows = [],\n inputs = {},\n map = {},\n counts = [],\n measures = [];\n var countOnly = true;\n function visitInputs(f) {\n array(accessorFields(f)).forEach(function (_) {\n return inputs[_] = 1;\n });\n }\n visitInputs(_.sort);\n ops.forEach(function (op, i) {\n var field = fields[i],\n mname = accessorName(field),\n name = measureName(op, mname, as[i]);\n visitInputs(field);\n outputs.push(name);\n\n // Window operation\n if (hasOwnProperty(WindowOps, op)) {\n windows.push(WindowOp(op, fields[i], params[i], name));\n }\n\n // Aggregate operation\n else {\n if (field == null && op !== 'count') {\n error('Null aggregate field specified.');\n }\n if (op === 'count') {\n counts.push(name);\n return;\n }\n countOnly = false;\n var m = map[mname];\n if (!m) {\n m = map[mname] = [];\n m.field = field;\n measures.push(m);\n }\n m.push(createMeasure(op, name));\n }\n });\n if (counts.length || measures.length) {\n this.cell = cell(measures, counts, countOnly);\n }\n this.inputs = Object.keys(inputs);\n}\nvar prototype = WindowState.prototype;\nprototype.init = function () {\n this.windows.forEach(function (_) {\n return _.init();\n });\n if (this.cell) this.cell.init();\n};\nprototype.update = function (w, t) {\n var cell = this.cell,\n wind = this.windows,\n data = w.data,\n m = wind && wind.length;\n var j;\n if (cell) {\n for (j = w.p0; j < w.i0; ++j) cell.rem(data[j]);\n for (j = w.p1; j < w.i1; ++j) cell.add(data[j]);\n cell.set(t);\n }\n for (j = 0; j < m; ++j) wind[j].update(w, t);\n};\nfunction cell(measures, counts, countOnly) {\n measures = measures.map(function (m) {\n return compileMeasures(m, m.field);\n });\n var cell = {\n num: 0,\n agg: null,\n store: false,\n count: counts\n };\n if (!countOnly) {\n var n = measures.length,\n a = cell.agg = Array(n),\n i = 0;\n for (; i < n; ++i) a[i] = new measures[i](cell);\n }\n if (cell.store) {\n var store = cell.data = new TupleStore();\n }\n cell.add = function (t) {\n cell.num += 1;\n if (countOnly) return;\n if (store) store.add(t);\n for (var _i3 = 0; _i3 < n; ++_i3) {\n a[_i3].add(a[_i3].get(t), t);\n }\n };\n cell.rem = function (t) {\n cell.num -= 1;\n if (countOnly) return;\n if (store) store.rem(t);\n for (var _i4 = 0; _i4 < n; ++_i4) {\n a[_i4].rem(a[_i4].get(t), t);\n }\n };\n cell.set = function (t) {\n var i, n;\n\n // consolidate stored values\n if (store) store.values();\n\n // update tuple properties\n for (i = 0, n = counts.length; i < n; ++i) t[counts[i]] = cell.num;\n if (!countOnly) for (i = 0, n = a.length; i < n; ++i) a[i].set(t);\n };\n cell.init = function () {\n cell.num = 0;\n if (store) store.reset();\n for (var _i5 = 0; _i5 < n; ++_i5) a[_i5].init();\n };\n return cell;\n}\n\n/**\n * Perform window calculations and write results to the input stream.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(*,*): number} [params.sort] - A comparator function for sorting tuples within a window.\n * @param {Array} [params.groupby] - An array of accessors by which to partition tuples into separate windows.\n * @param {Array} params.ops - An array of strings indicating window operations to perform.\n * @param {Array} [params.fields] - An array of accessors\n * for data fields to use as inputs to window operations.\n * @param {Array<*>} [params.params] - An array of parameter values for window operations.\n * @param {Array} [params.as] - An array of output field names for window operations.\n * @param {Array} [params.frame] - Window frame definition as two-element array.\n * @param {boolean} [params.ignorePeers=false] - If true, base window frame boundaries on row\n * number alone, ignoring peers with identical sort values. If false (default),\n * the window boundaries will be adjusted to include peer values.\n */\nfunction Window(params) {\n Transform.call(this, {}, params);\n this._mlen = 0;\n this._mods = [];\n}\nWindow.Definition = {\n 'type': 'Window',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'sort',\n 'type': 'compare'\n }, {\n 'name': 'groupby',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'ops',\n 'type': 'enum',\n 'array': true,\n 'values': ValidWindowOps.concat(ValidAggregateOps)\n }, {\n 'name': 'params',\n 'type': 'number',\n 'null': true,\n 'array': true\n }, {\n 'name': 'fields',\n 'type': 'field',\n 'null': true,\n 'array': true\n }, {\n 'name': 'as',\n 'type': 'string',\n 'null': true,\n 'array': true\n }, {\n 'name': 'frame',\n 'type': 'number',\n 'null': true,\n 'array': true,\n 'length': 2,\n 'default': [null, 0]\n }, {\n 'name': 'ignorePeers',\n 'type': 'boolean',\n 'default': false\n }]\n};\ninherits(Window, Transform, {\n transform: function transform(_, pulse) {\n var _this9 = this;\n this.stamp = pulse.stamp;\n var mod = _.modified(),\n cmp = stableCompare(_.sort),\n key = groupkey(_.groupby),\n group = function group(t) {\n return _this9.group(key(t));\n };\n\n // initialize window state\n var state = this.state;\n if (!state || mod) {\n state = this.state = new WindowState(_);\n }\n\n // partition input tuples\n if (mod || pulse.modified(state.inputs)) {\n this.value = {};\n pulse.visit(pulse.SOURCE, function (t) {\n return group(t).add(t);\n });\n } else {\n pulse.visit(pulse.REM, function (t) {\n return group(t).remove(t);\n });\n pulse.visit(pulse.ADD, function (t) {\n return group(t).add(t);\n });\n }\n\n // perform window calculations for each modified partition\n for (var i = 0, n = this._mlen; i < n; ++i) {\n processPartition(this._mods[i], state, cmp, _);\n }\n this._mlen = 0;\n this._mods = [];\n\n // TODO don't reflow everything?\n return pulse.reflow(mod).modifies(state.outputs);\n },\n group: function group(key) {\n var group = this.value[key];\n if (!group) {\n group = this.value[key] = SortedList(tupleid);\n group.stamp = -1;\n }\n if (group.stamp < this.stamp) {\n group.stamp = this.stamp;\n this._mods[this._mlen++] = group;\n }\n return group;\n }\n});\nfunction processPartition(list, state, cmp, _) {\n var sort = _.sort,\n range = sort && !_.ignorePeers,\n frame = _.frame || [null, 0],\n data = list.data(cmp),\n // use cmp for stable sort\n n = data.length,\n b = range ? bisector(sort) : null,\n w = {\n i0: 0,\n i1: 0,\n p0: 0,\n p1: 0,\n index: 0,\n data: data,\n compare: sort || constant(-1)\n };\n state.init();\n for (var i = 0; i < n; ++i) {\n setWindow(w, frame, i, n);\n if (range) adjustRange(w, b);\n state.update(w, data[i]);\n }\n}\nfunction setWindow(w, f, i, n) {\n w.p0 = w.i0;\n w.p1 = w.i1;\n w.i0 = f[0] == null ? 0 : Math.max(0, i - Math.abs(f[0]));\n w.i1 = f[1] == null ? n : Math.min(n, i + Math.abs(f[1]) + 1);\n w.index = i;\n}\n\n// if frame type is 'range', adjust window for peer values\nfunction adjustRange(w, bisect) {\n var r0 = w.i0,\n r1 = w.i1 - 1,\n c = w.compare,\n d = w.data,\n n = d.length - 1;\n if (r0 > 0 && !c(d[r0], d[r0 - 1])) w.i0 = bisect.left(d, d[r0]);\n if (r1 < n && !c(d[r1], d[r1 + 1])) w.i1 = bisect.right(d, d[r1]);\n}\nexport { Aggregate as aggregate, Bin as bin, Collect as collect, Compare as compare, CountPattern as countpattern, Cross as cross, Density as density, DotBin as dotbin, Expression as expression, Extent as extent, Facet as facet, Field as field, Filter as filter, Flatten as flatten, Fold as fold, Formula as formula, Generate as generate, Impute as impute, JoinAggregate as joinaggregate, KDE as kde, Key as key, Load as load, Lookup as lookup, MultiExtent as multiextent, MultiValues as multivalues, Params as params, Pivot as pivot, PreFacet as prefacet, Project as project, Proxy as proxy, Quantile as quantile, Relay as relay, Sample as sample, Sequence as sequence, Sieve as sieve, Subflow as subflow, TimeUnit as timeunit, TupleIndex as tupleindex, Values as values, Window as window };","function _point(that, x, y) {\n that._context.bezierCurveTo((2 * that._x0 + that._x1) / 3, (2 * that._y0 + that._y1) / 3, (that._x0 + 2 * that._x1) / 3, (that._y0 + 2 * that._y1) / 3, (that._x0 + 4 * that._x1 + x) / 6, (that._y0 + 4 * that._y1 + y) / 6);\n}\nexport { _point as point };\nexport function Basis(context) {\n this._context = context;\n}\nBasis.prototype = {\n areaStart: function areaStart() {\n this._line = 0;\n },\n areaEnd: function areaEnd() {\n this._line = NaN;\n },\n lineStart: function lineStart() {\n this._x0 = this._x1 = this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function lineEnd() {\n switch (this._point) {\n case 3:\n _point(this, this._x1, this._y1);\n // falls through\n case 2:\n this._context.lineTo(this._x1, this._y1);\n break;\n }\n if (this._line || this._line !== 0 && this._point === 1) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function point(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0:\n this._point = 1;\n this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y);\n break;\n case 1:\n this._point = 2;\n break;\n case 2:\n this._point = 3;\n this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6);\n // falls through\n default:\n _point(this, x, y);\n break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\nexport default function (context) {\n return new Basis(context);\n}","export default function () {}","import noop from \"../noop.js\";\nimport { point as _point } from \"./basis.js\";\nfunction BasisClosed(context) {\n this._context = context;\n}\nBasisClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function lineStart() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n this._point = 0;\n },\n lineEnd: function lineEnd() {\n switch (this._point) {\n case 1:\n {\n this._context.moveTo(this._x2, this._y2);\n this._context.closePath();\n break;\n }\n case 2:\n {\n this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n this._context.closePath();\n break;\n }\n case 3:\n {\n this.point(this._x2, this._y2);\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n break;\n }\n }\n },\n point: function point(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0:\n this._point = 1;\n this._x2 = x, this._y2 = y;\n break;\n case 1:\n this._point = 2;\n this._x3 = x, this._y3 = y;\n break;\n case 2:\n this._point = 3;\n this._x4 = x, this._y4 = y;\n this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6);\n break;\n default:\n _point(this, x, y);\n break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\nexport default function (context) {\n return new BasisClosed(context);\n}","import { point as _point } from \"./basis.js\";\nfunction BasisOpen(context) {\n this._context = context;\n}\nBasisOpen.prototype = {\n areaStart: function areaStart() {\n this._line = 0;\n },\n areaEnd: function areaEnd() {\n this._line = NaN;\n },\n lineStart: function lineStart() {\n this._x0 = this._x1 = this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function lineEnd() {\n if (this._line || this._line !== 0 && this._point === 3) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function point(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0:\n this._point = 1;\n break;\n case 1:\n this._point = 2;\n break;\n case 2:\n this._point = 3;\n var x0 = (this._x0 + 4 * this._x1 + x) / 6,\n y0 = (this._y0 + 4 * this._y1 + y) / 6;\n this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0);\n break;\n case 3:\n this._point = 4;\n // falls through\n default:\n _point(this, x, y);\n break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\nexport default function (context) {\n return new BasisOpen(context);\n}","import { Basis } from \"./basis.js\";\nfunction Bundle(context, beta) {\n this._basis = new Basis(context);\n this._beta = beta;\n}\nBundle.prototype = {\n lineStart: function lineStart() {\n this._x = [];\n this._y = [];\n this._basis.lineStart();\n },\n lineEnd: function lineEnd() {\n var x = this._x,\n y = this._y,\n j = x.length - 1;\n if (j > 0) {\n var x0 = x[0],\n y0 = y[0],\n dx = x[j] - x0,\n dy = y[j] - y0,\n i = -1,\n t;\n while (++i <= j) {\n t = i / j;\n this._basis.point(this._beta * x[i] + (1 - this._beta) * (x0 + t * dx), this._beta * y[i] + (1 - this._beta) * (y0 + t * dy));\n }\n }\n this._x = this._y = null;\n this._basis.lineEnd();\n },\n point: function point(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\nexport default (function custom(beta) {\n function bundle(context) {\n return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n }\n bundle.beta = function (beta) {\n return custom(+beta);\n };\n return bundle;\n})(0.85);","function _point(that, x, y) {\n that._context.bezierCurveTo(that._x1 + that._k * (that._x2 - that._x0), that._y1 + that._k * (that._y2 - that._y0), that._x2 + that._k * (that._x1 - x), that._y2 + that._k * (that._y1 - y), that._x2, that._y2);\n}\nexport { _point as point };\nexport function Cardinal(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\nCardinal.prototype = {\n areaStart: function areaStart() {\n this._line = 0;\n },\n areaEnd: function areaEnd() {\n this._line = NaN;\n },\n lineStart: function lineStart() {\n this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function lineEnd() {\n switch (this._point) {\n case 2:\n this._context.lineTo(this._x2, this._y2);\n break;\n case 3:\n _point(this, this._x1, this._y1);\n break;\n }\n if (this._line || this._line !== 0 && this._point === 1) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function point(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0:\n this._point = 1;\n this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y);\n break;\n case 1:\n this._point = 2;\n this._x1 = x, this._y1 = y;\n break;\n case 2:\n this._point = 3;\n // falls through\n default:\n _point(this, x, y);\n break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\nexport default (function custom(tension) {\n function cardinal(context) {\n return new Cardinal(context, tension);\n }\n cardinal.tension = function (tension) {\n return custom(+tension);\n };\n return cardinal;\n})(0);","import { point as _point } from \"./cardinal.js\";\nexport function CardinalOpen(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\nCardinalOpen.prototype = {\n areaStart: function areaStart() {\n this._line = 0;\n },\n areaEnd: function areaEnd() {\n this._line = NaN;\n },\n lineStart: function lineStart() {\n this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function lineEnd() {\n if (this._line || this._line !== 0 && this._point === 3) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function point(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0:\n this._point = 1;\n break;\n case 1:\n this._point = 2;\n break;\n case 2:\n this._point = 3;\n this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2);\n break;\n case 3:\n this._point = 4;\n // falls through\n default:\n _point(this, x, y);\n break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\nexport default (function custom(tension) {\n function cardinal(context) {\n return new CardinalOpen(context, tension);\n }\n cardinal.tension = function (tension) {\n return custom(+tension);\n };\n return cardinal;\n})(0);","import noop from \"../noop.js\";\nimport { point as _point } from \"./cardinal.js\";\nexport function CardinalClosed(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\nCardinalClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function lineStart() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._point = 0;\n },\n lineEnd: function lineEnd() {\n switch (this._point) {\n case 1:\n {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2:\n {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3:\n {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function point(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0:\n this._point = 1;\n this._x3 = x, this._y3 = y;\n break;\n case 1:\n this._point = 2;\n this._context.moveTo(this._x4 = x, this._y4 = y);\n break;\n case 2:\n this._point = 3;\n this._x5 = x, this._y5 = y;\n break;\n default:\n _point(this, x, y);\n break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\nexport default (function custom(tension) {\n function cardinal(context) {\n return new CardinalClosed(context, tension);\n }\n cardinal.tension = function (tension) {\n return custom(+tension);\n };\n return cardinal;\n})(0);","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}","import { epsilon } from \"../math.js\";\nimport { Cardinal } from \"./cardinal.js\";\nfunction _point(that, x, y) {\n var x1 = that._x1,\n y1 = that._y1,\n x2 = that._x2,\n y2 = that._y2;\n if (that._l01_a > epsilon) {\n var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n }\n if (that._l23_a > epsilon) {\n var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n }\n that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\nexport { _point as point };\nfunction CatmullRom(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\nCatmullRom.prototype = {\n areaStart: function areaStart() {\n this._line = 0;\n },\n areaEnd: function areaEnd() {\n this._line = NaN;\n },\n lineStart: function lineStart() {\n this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0;\n },\n lineEnd: function lineEnd() {\n switch (this._point) {\n case 2:\n this._context.lineTo(this._x2, this._y2);\n break;\n case 3:\n this.point(this._x2, this._y2);\n break;\n }\n if (this._line || this._line !== 0 && this._point === 1) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function point(x, y) {\n x = +x, y = +y;\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n switch (this._point) {\n case 0:\n this._point = 1;\n this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y);\n break;\n case 1:\n this._point = 2;\n break;\n case 2:\n this._point = 3;\n // falls through\n default:\n _point(this, x, y);\n break;\n }\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\nexport default (function custom(alpha) {\n function catmullRom(context) {\n return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n }\n catmullRom.alpha = function (alpha) {\n return custom(+alpha);\n };\n return catmullRom;\n})(0.5);","import { CardinalClosed } from \"./cardinalClosed.js\";\nimport noop from \"../noop.js\";\nimport { point as _point } from \"./catmullRom.js\";\nfunction CatmullRomClosed(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\nCatmullRomClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function lineStart() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0;\n },\n lineEnd: function lineEnd() {\n switch (this._point) {\n case 1:\n {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2:\n {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3:\n {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function point(x, y) {\n x = +x, y = +y;\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n switch (this._point) {\n case 0:\n this._point = 1;\n this._x3 = x, this._y3 = y;\n break;\n case 1:\n this._point = 2;\n this._context.moveTo(this._x4 = x, this._y4 = y);\n break;\n case 2:\n this._point = 3;\n this._x5 = x, this._y5 = y;\n break;\n default:\n _point(this, x, y);\n break;\n }\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\nexport default (function custom(alpha) {\n function catmullRom(context) {\n return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);\n }\n catmullRom.alpha = function (alpha) {\n return custom(+alpha);\n };\n return catmullRom;\n})(0.5);","import { CardinalOpen } from \"./cardinalOpen.js\";\nimport { point as _point } from \"./catmullRom.js\";\nfunction CatmullRomOpen(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\nCatmullRomOpen.prototype = {\n areaStart: function areaStart() {\n this._line = 0;\n },\n areaEnd: function areaEnd() {\n this._line = NaN;\n },\n lineStart: function lineStart() {\n this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0;\n },\n lineEnd: function lineEnd() {\n if (this._line || this._line !== 0 && this._point === 3) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function point(x, y) {\n x = +x, y = +y;\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n switch (this._point) {\n case 0:\n this._point = 1;\n break;\n case 1:\n this._point = 2;\n break;\n case 2:\n this._point = 3;\n this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2);\n break;\n case 3:\n this._point = 4;\n // falls through\n default:\n _point(this, x, y);\n break;\n }\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\nexport default (function custom(alpha) {\n function catmullRom(context) {\n return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);\n }\n catmullRom.alpha = function (alpha) {\n return custom(+alpha);\n };\n return catmullRom;\n})(0.5);","import _taggedTemplateLiteral from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nvar _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14;\nvar pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\nfunction append(strings) {\n this._ += strings[0];\n for (var i = 1, n = strings.length; i < n; ++i) {\n this._ += arguments[i] + strings[i];\n }\n}\nfunction appendRound(digits) {\n var d = Math.floor(digits);\n if (!(d >= 0)) throw new Error(\"invalid digits: \".concat(digits));\n if (d > 15) return append;\n var k = Math.pow(10, d);\n return function (strings) {\n this._ += strings[0];\n for (var i = 1, n = strings.length; i < n; ++i) {\n this._ += Math.round(arguments[i] * k) / k + strings[i];\n }\n };\n}\nexport var Path = /*#__PURE__*/function () {\n function Path(digits) {\n _classCallCheck(this, Path);\n this._x0 = this._y0 =\n // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n this._append = digits == null ? append : appendRound(digits);\n }\n _createClass(Path, [{\n key: \"moveTo\",\n value: function moveTo(x, y) {\n this._append(_templateObject || (_templateObject = _taggedTemplateLiteral([\"M\", \",\", \"\"])), this._x0 = this._x1 = +x, this._y0 = this._y1 = +y);\n }\n }, {\n key: \"closePath\",\n value: function closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._append(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral([\"Z\"])));\n }\n }\n }, {\n key: \"lineTo\",\n value: function lineTo(x, y) {\n this._append(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral([\"L\", \",\", \"\"])), this._x1 = +x, this._y1 = +y);\n }\n }, {\n key: \"quadraticCurveTo\",\n value: function quadraticCurveTo(x1, y1, x, y) {\n this._append(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral([\"Q\", \",\", \",\", \",\", \"\"])), +x1, +y1, this._x1 = +x, this._y1 = +y);\n }\n }, {\n key: \"bezierCurveTo\",\n value: function bezierCurveTo(x1, y1, x2, y2, x, y) {\n this._append(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral([\"C\", \",\", \",\", \",\", \",\", \",\", \"\"])), +x1, +y1, +x2, +y2, this._x1 = +x, this._y1 = +y);\n }\n }, {\n key: \"arcTo\",\n value: function arcTo(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \".concat(r));\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._append(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral([\"M\", \",\", \"\"])), this._x1 = x1, this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon)) ;\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._append(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral([\"L\", \",\", \"\"])), this._x1 = x1, this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._append(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral([\"L\", \",\", \"\"])), x1 + t01 * x01, y1 + t01 * y01);\n }\n this._append(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral([\"A\", \",\", \",0,0,\", \",\", \",\", \"\"])), r, r, +(y01 * x20 > x01 * y20), this._x1 = x1 + t21 * x21, this._y1 = y1 + t21 * y21);\n }\n }\n }, {\n key: \"arc\",\n value: function arc(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \".concat(r));\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._append(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral([\"M\", \",\", \"\"])), x0, y0);\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._append(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral([\"L\", \",\", \"\"])), x0, y0);\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._append(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral([\"A\", \",\", \",0,1,\", \",\", \",\", \"A\", \",\", \",0,1,\", \",\", \",\", \"\"])), r, r, cw, x - dx, y - dy, r, r, cw, this._x1 = x0, this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._append(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral([\"A\", \",\", \",0,\", \",\", \",\", \",\", \"\"])), r, r, +(da >= pi), cw, this._x1 = x + r * Math.cos(a1), this._y1 = y + r * Math.sin(a1));\n }\n }\n }, {\n key: \"rect\",\n value: function rect(x, y, w, h) {\n this._append(_templateObject14 || (_templateObject14 = _taggedTemplateLiteral([\"M\", \",\", \"h\", \"v\", \"h\", \"Z\"])), this._x0 = this._x1 = +x, this._y0 = this._y1 = +y, w = +w, +h, -w);\n }\n }, {\n key: \"toString\",\n value: function toString() {\n return this._;\n }\n }]);\n return Path;\n}();\nexport function path() {\n return new Path();\n}\n\n// Allow instanceof d3.path\npath.prototype = Path.prototype;\nexport function pathRound() {\n var digits = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 3;\n return new Path(+digits);\n}","function Linear(context) {\n this._context = context;\n}\nLinear.prototype = {\n areaStart: function areaStart() {\n this._line = 0;\n },\n areaEnd: function areaEnd() {\n this._line = NaN;\n },\n lineStart: function lineStart() {\n this._point = 0;\n },\n lineEnd: function lineEnd() {\n if (this._line || this._line !== 0 && this._point === 1) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function point(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0:\n this._point = 1;\n this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y);\n break;\n case 1:\n this._point = 2;\n // falls through\n default:\n this._context.lineTo(x, y);\n break;\n }\n }\n};\nexport default function (context) {\n return new Linear(context);\n}","import noop from \"../noop.js\";\nfunction LinearClosed(context) {\n this._context = context;\n}\nLinearClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function lineStart() {\n this._point = 0;\n },\n lineEnd: function lineEnd() {\n if (this._point) this._context.closePath();\n },\n point: function point(x, y) {\n x = +x, y = +y;\n if (this._point) this._context.lineTo(x, y);else this._point = 1, this._context.moveTo(x, y);\n }\n};\nexport default function (context) {\n return new LinearClosed(context);\n}","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction _point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\nfunction MonotoneX(context) {\n this._context = context;\n}\nMonotoneX.prototype = {\n areaStart: function areaStart() {\n this._line = 0;\n },\n areaEnd: function areaEnd() {\n this._line = NaN;\n },\n lineStart: function lineStart() {\n this._x0 = this._x1 = this._y0 = this._y1 = this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function lineEnd() {\n switch (this._point) {\n case 2:\n this._context.lineTo(this._x1, this._y1);\n break;\n case 3:\n _point(this, this._t0, slope2(this, this._t0));\n break;\n }\n if (this._line || this._line !== 0 && this._point === 1) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function point(x, y) {\n var t1 = NaN;\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0:\n this._point = 1;\n this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y);\n break;\n case 1:\n this._point = 2;\n break;\n case 2:\n this._point = 3;\n _point(this, slope2(this, t1 = slope3(this, x, y)), t1);\n break;\n default:\n _point(this, this._t0, t1 = slope3(this, x, y));\n break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n};\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function (x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\nfunction ReflectContext(context) {\n this._context = context;\n}\nReflectContext.prototype = {\n moveTo: function moveTo(x, y) {\n this._context.moveTo(y, x);\n },\n closePath: function closePath() {\n this._context.closePath();\n },\n lineTo: function lineTo(x, y) {\n this._context.lineTo(y, x);\n },\n bezierCurveTo: function bezierCurveTo(x1, y1, x2, y2, x, y) {\n this._context.bezierCurveTo(y1, x1, y2, x2, y, x);\n }\n};\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}","function Natural(context) {\n this._context = context;\n}\nNatural.prototype = {\n areaStart: function areaStart() {\n this._line = 0;\n },\n areaEnd: function areaEnd() {\n this._line = NaN;\n },\n lineStart: function lineStart() {\n this._x = [];\n this._y = [];\n },\n lineEnd: function lineEnd() {\n var x = this._x,\n y = this._y,\n n = x.length;\n if (n) {\n this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n if (n === 2) {\n this._context.lineTo(x[1], y[1]);\n } else {\n var px = controlPoints(x),\n py = controlPoints(y);\n for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n }\n }\n }\n if (this._line || this._line !== 0 && n === 1) this._context.closePath();\n this._line = 1 - this._line;\n this._x = this._y = null;\n },\n point: function point(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n var i,\n n = x.length - 1,\n m,\n a = new Array(n),\n b = new Array(n),\n r = new Array(n);\n a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n a[n - 1] = r[n - 1] / b[n - 1];\n for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n b[n - 1] = (x[n] + a[n - 1]) / 2;\n for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n return [a, b];\n}\nexport default function (context) {\n return new Natural(context);\n}","function Step(context, t) {\n this._context = context;\n this._t = t;\n}\nStep.prototype = {\n areaStart: function areaStart() {\n this._line = 0;\n },\n areaEnd: function areaEnd() {\n this._line = NaN;\n },\n lineStart: function lineStart() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function lineEnd() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || this._line !== 0 && this._point === 1) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function point(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0:\n this._point = 1;\n this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y);\n break;\n case 1:\n this._point = 2;\n // falls through\n default:\n {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\nexport default function (context) {\n return new Step(context, 0.5);\n}\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\nexport function stepAfter(context) {\n return new Step(context, 1);\n}","export default function (x) {\n return function constant() {\n return x;\n };\n}","export default function _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n}","import { Path } from \"d3-path\";\nexport function withPath(shape) {\n var digits = 3;\n shape.digits = function (_) {\n if (!arguments.length) return digits;\n if (_ == null) {\n digits = null;\n } else {\n var d = Math.floor(_);\n if (!(d >= 0)) throw new RangeError(\"invalid digits: \".concat(_));\n digits = d;\n }\n return shape;\n };\n return function () {\n return new Path(digits);\n };\n}","import constant from \"./constant.js\";\nimport { abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau } from \"./math.js\";\nimport { withPath } from \"./path.js\";\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0,\n y10 = y1 - y0,\n x32 = x3 - x2,\n y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\nexport default function () {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null,\n path = withPath(arc);\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = ap > epsilon && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= cw ? 1 : -1, a00 += p0, a10 -= p0;else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= cw ? 1 : -1, a01 += p1, a11 -= p1;else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle. If this\n // intersection fails, it’s probably because the arc is too small, so\n // disable the corner radius entirely.\n if (da < pi) {\n if (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10)) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n } else {\n rc0 = rc1 = 0;\n }\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n context.closePath();\n if (buffer) return context = null, buffer + \"\" || null;\n }\n arc.centroid = function () {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n arc.innerRadius = function (_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n arc.outerRadius = function (_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n arc.cornerRadius = function (_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n arc.padRadius = function (_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n arc.startAngle = function (_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n arc.endAngle = function (_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n arc.padAngle = function (_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n arc.context = function (_) {\n return arguments.length ? (context = _ == null ? null : _, arc) : context;\n };\n return arc;\n}","export var slice = Array.prototype.slice;\nexport default function (x) {\n return typeof x === \"object\" && \"length\" in x ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}","export function x(p) {\n return p[0];\n}\nexport function y(p) {\n return p[1];\n}","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport { withPath } from \"./path.js\";\nimport { x as pointX, y as pointY } from \"./point.js\";\nexport default function (x, y) {\n var defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(line);\n x = typeof x === \"function\" ? x : x === undefined ? pointX : constant(x);\n y = typeof y === \"function\" ? y : y === undefined ? pointY : constant(y);\n function line(data) {\n var i,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer;\n if (context == null) output = curve(buffer = path());\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n if (buffer) return output = null, buffer + \"\" || null;\n }\n line.x = function (_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n line.y = function (_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n line.defined = function (_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n line.curve = function (_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n line.context = function (_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n return line;\n}","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport { withPath } from \"./path.js\";\nimport { x as pointX, y as pointY } from \"./point.js\";\nexport default function (x0, y0, y1) {\n var x1 = null,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(area);\n x0 = typeof x0 === \"function\" ? x0 : x0 === undefined ? pointX : constant(+x0);\n y0 = typeof y0 === \"function\" ? y0 : y0 === undefined ? constant(0) : constant(+y0);\n y1 = typeof y1 === \"function\" ? y1 : y1 === undefined ? pointY : constant(+y1);\n function area(data) {\n var i,\n j,\n k,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n if (context == null) output = curve(buffer = path());\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n if (buffer) return output = null, buffer + \"\" || null;\n }\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n area.x = function (_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n area.x0 = function (_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n area.x1 = function (_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n area.y = function (_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n area.y0 = function (_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n area.y1 = function (_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n area.lineX0 = area.lineY0 = function () {\n return arealine().x(x0).y(y0);\n };\n area.lineY1 = function () {\n return arealine().x(x0).y(y1);\n };\n area.lineX1 = function () {\n return arealine().x(x1).y(y0);\n };\n area.defined = function (_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n area.curve = function (_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n area.context = function (_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n return area;\n}","import { min, sqrt } from \"../math.js\";\nvar sqrt3 = sqrt(3);\nexport default {\n draw: function draw(context, size) {\n var r = sqrt(size + min(size / 28, 0.75)) * 0.59436;\n var t = r / 2;\n var u = t * sqrt3;\n context.moveTo(0, r);\n context.lineTo(0, -r);\n context.moveTo(-u, -t);\n context.lineTo(u, t);\n context.moveTo(-u, t);\n context.lineTo(u, -t);\n }\n};","import { pi, sqrt, tau } from \"../math.js\";\nexport default {\n draw: function draw(context, size) {\n var r = sqrt(size / pi);\n context.moveTo(r, 0);\n context.arc(0, 0, r, 0, tau);\n }\n};","import { sin, cos, sqrt, pi, tau } from \"../math.js\";\nvar ka = 0.89081309152928522810;\nvar kr = sin(pi / 10) / sin(7 * pi / 10);\nvar kx = sin(tau / 10) * kr;\nvar ky = -cos(tau / 10) * kr;\nexport default {\n draw: function draw(context, size) {\n var r = sqrt(size * ka);\n var x = kx * r;\n var y = ky * r;\n context.moveTo(0, -r);\n context.lineTo(x, y);\n for (var i = 1; i < 5; ++i) {\n var a = tau * i / 5;\n var c = cos(a);\n var s = sin(a);\n context.lineTo(s * r, -c * r);\n context.lineTo(c * x - s * y, s * x + c * y);\n }\n context.closePath();\n }\n};","import { sqrt } from \"../math.js\";\nvar tan30 = sqrt(1 / 3);\nvar tan30_2 = tan30 * 2;\nexport default {\n draw: function draw(context, size) {\n var y = sqrt(size / tan30_2);\n var x = y * tan30;\n context.moveTo(0, -y);\n context.lineTo(x, 0);\n context.lineTo(0, y);\n context.lineTo(-x, 0);\n context.closePath();\n }\n};","import { sqrt } from \"../math.js\";\nvar sqrt3 = sqrt(3);\nexport default {\n draw: function draw(context, size) {\n var y = -sqrt(size / (sqrt3 * 3));\n context.moveTo(0, y * 2);\n context.lineTo(-sqrt3 * y, -y);\n context.lineTo(sqrt3 * y, -y);\n context.closePath();\n }\n};","import { sqrt } from \"../math.js\";\nvar sqrt3 = sqrt(3);\nexport default {\n draw: function draw(context, size) {\n var s = sqrt(size) * 0.6824;\n var t = s / 2;\n var u = s * sqrt3 / 2; // cos(Math.PI / 6)\n context.moveTo(0, -s);\n context.lineTo(u, t);\n context.lineTo(-u, t);\n context.closePath();\n }\n};","import { sqrt } from \"../math.js\";\nvar c = -0.5;\nvar s = sqrt(3) / 2;\nvar k = 1 / sqrt(12);\nvar a = (k / 2 + 1) * 3;\nexport default {\n draw: function draw(context, size) {\n var r = sqrt(size / a);\n var x0 = r / 2,\n y0 = r * k;\n var x1 = x0,\n y1 = r * k + r;\n var x2 = -x1,\n y2 = y1;\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n context.lineTo(x2, y2);\n context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n context.closePath();\n }\n};","function domCanvas(w, h) {\n if (typeof document !== 'undefined' && document.createElement) {\n var c = document.createElement('canvas');\n if (c && c.getContext) {\n c.width = w;\n c.height = h;\n return c;\n }\n }\n return null;\n}\nvar domImage = function domImage() {\n return typeof Image !== 'undefined' ? Image : null;\n};\nexport { domCanvas as canvas, domCanvas, domImage as image };","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _asyncToGenerator from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\";\nimport _regeneratorRuntime from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/regenerator/index.js\";\nimport { extend, error, stringValue, isFunction, toBoolean, toNumber, toDate, toString, identity, field, isObject, isArray, isIterable, hasOwnProperty } from 'vega-util';\nimport { dsvFormat } from 'd3-dsv';\nimport { feature, mesh } from 'topojson-client';\nimport { timeFormatDefaultLocale } from 'vega-format';\n\n// Matches absolute URLs with optional protocol\n// https://... file://... //...\nvar protocol_re = /^(data:|([A-Za-z]+:)?\\/\\/)/;\n\n// Matches allowed URIs. From https://github.com/cure53/DOMPurify/blob/master/src/regexp.js with added file://\nvar allowed_re = /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i; // eslint-disable-line no-useless-escape\nvar whitespace_re = /[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205f\\u3000]/g; // eslint-disable-line no-control-regex\n\n// Special treatment in node.js for the file: protocol\nvar fileProtocol = 'file://';\n\n/**\n * Factory for a loader constructor that provides methods for requesting\n * files from either the network or disk, and for sanitizing request URIs.\n * @param {function} fetch - The Fetch API for HTTP network requests.\n * If null or undefined, HTTP loading will be disabled.\n * @param {object} fs - The file system interface for file loading.\n * If null or undefined, local file loading will be disabled.\n * @return {function} A loader constructor with the following signature:\n * param {object} [options] - Optional default loading options to use.\n * return {object} - A new loader instance.\n */\nfunction loaderFactory(fetch, fs) {\n return function (options) {\n return {\n options: options || {},\n sanitize: sanitize,\n load: load,\n fileAccess: !!fs,\n file: fileLoader(fs),\n http: httpLoader(fetch)\n };\n };\n}\n\n/**\n * Load an external resource, typically either from the web or from the local\n * filesystem. This function uses {@link sanitize} to first sanitize the uri,\n * then calls either {@link http} (for web requests) or {@link file} (for\n * filesystem loading).\n * @param {string} uri - The resource indicator (e.g., URL or filename).\n * @param {object} [options] - Optional loading options. These options will\n * override any existing default options.\n * @return {Promise} - A promise that resolves to the loaded content.\n */\nfunction load(_x, _x2) {\n return _load.apply(this, arguments);\n}\n/**\n * URI sanitizer function.\n * @param {string} uri - The uri (url or filename) to check.\n * @param {object} options - An options hash.\n * @return {Promise} - A promise that resolves to an object containing\n * sanitized uri data, or rejects it the input uri is deemed invalid.\n * The properties of the resolved object are assumed to be\n * valid attributes for an HTML 'a' tag. The sanitized uri *must* be\n * provided by the 'href' property of the returned object.\n */\nfunction _load() {\n _load = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(uri, options) {\n var opt, url;\n return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.sanitize(uri, options);\n case 2:\n opt = _context2.sent;\n url = opt.href;\n return _context2.abrupt(\"return\", opt.localFile ? this.file(url) : this.http(url, options));\n case 5:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n return _load.apply(this, arguments);\n}\nfunction sanitize(_x3, _x4) {\n return _sanitize.apply(this, arguments);\n}\n/**\n * File system loader factory.\n * @param {object} fs - The file system interface.\n * @return {function} - A file loader with the following signature:\n * param {string} filename - The file system path to load.\n * param {string} filename - The file system path to load.\n * return {Promise} A promise that resolves to the file contents.\n */\nfunction _sanitize() {\n _sanitize = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(uri, options) {\n var fileAccess, result, isFile, loadFile, base, isAllowed, hasProtocol;\n return _regeneratorRuntime.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n options = extend({}, this.options, options);\n fileAccess = this.fileAccess, result = {\n href: null\n };\n isAllowed = allowed_re.test(uri.replace(whitespace_re, ''));\n if (uri == null || typeof uri !== 'string' || !isAllowed) {\n error('Sanitize failure, invalid URI: ' + stringValue(uri));\n }\n hasProtocol = protocol_re.test(uri); // if relative url (no protocol/host), prepend baseURL\n if ((base = options.baseURL) && !hasProtocol) {\n // Ensure that there is a slash between the baseURL (e.g. hostname) and url\n if (!uri.startsWith('/') && !base.endsWith('/')) {\n uri = '/' + uri;\n }\n uri = base + uri;\n }\n\n // should we load from file system?\n loadFile = (isFile = uri.startsWith(fileProtocol)) || options.mode === 'file' || options.mode !== 'http' && !hasProtocol && fileAccess;\n if (isFile) {\n // strip file protocol\n uri = uri.slice(fileProtocol.length);\n } else if (uri.startsWith('//')) {\n if (options.defaultProtocol === 'file') {\n // if is file, strip protocol and set loadFile flag\n uri = uri.slice(2);\n loadFile = true;\n } else {\n // if relative protocol (starts with '//'), prepend default protocol\n uri = (options.defaultProtocol || 'http') + ':' + uri;\n }\n }\n\n // set non-enumerable mode flag to indicate local file load\n Object.defineProperty(result, 'localFile', {\n value: !!loadFile\n });\n\n // set uri\n result.href = uri;\n\n // set default result target, if specified\n if (options.target) {\n result.target = options.target + '';\n }\n\n // set default result rel, if specified (#1542)\n if (options.rel) {\n result.rel = options.rel + '';\n }\n\n // provide control over cross-origin image handling (#2238)\n // https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image\n if (options.context === 'image' && options.crossOrigin) {\n result.crossOrigin = options.crossOrigin + '';\n }\n\n // return\n return _context3.abrupt(\"return\", result);\n case 14:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n return _sanitize.apply(this, arguments);\n}\nfunction fileLoader(fs) {\n return fs ? function (filename) {\n return new Promise(function (accept, reject) {\n fs.readFile(filename, function (error, data) {\n if (error) reject(error);else accept(data);\n });\n });\n } : fileReject;\n}\n\n/**\n * Default file system loader that simply rejects.\n */\nfunction fileReject() {\n return _fileReject.apply(this, arguments);\n}\n/**\n * HTTP request handler factory.\n * @param {function} fetch - The Fetch API method.\n * @return {function} - An http loader with the following signature:\n * param {string} url - The url to request.\n * param {object} options - An options hash.\n * return {Promise} - A promise that resolves to the file contents.\n */\nfunction _fileReject() {\n _fileReject = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4() {\n return _regeneratorRuntime.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n error('No file system access.');\n case 1:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4);\n }));\n return _fileReject.apply(this, arguments);\n}\nfunction httpLoader(fetch) {\n return fetch ? /*#__PURE__*/function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(url, options) {\n var opt, type, response;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n opt = extend({}, this.options.http, options);\n type = options && options.response;\n _context.next = 4;\n return fetch(url, opt);\n case 4:\n response = _context.sent;\n return _context.abrupt(\"return\", !response.ok ? error(response.status + '' + response.statusText) : isFunction(response[type]) ? response[type]() : response.text());\n case 6:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n return function (_x5, _x6) {\n return _ref.apply(this, arguments);\n };\n }() : httpReject;\n}\n\n/**\n * Default http request handler that simply rejects.\n */\nfunction httpReject() {\n return _httpReject.apply(this, arguments);\n}\nfunction _httpReject() {\n _httpReject = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5() {\n return _regeneratorRuntime.wrap(function _callee5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n error('No HTTP fetch method available.');\n case 1:\n case \"end\":\n return _context5.stop();\n }\n }, _callee5);\n }));\n return _httpReject.apply(this, arguments);\n}\nvar isValid = function isValid(_) {\n return _ != null && _ === _;\n};\nvar isBoolean = function isBoolean(_) {\n return _ === 'true' || _ === 'false' || _ === true || _ === false;\n};\nvar isDate = function isDate(_) {\n return !Number.isNaN(Date.parse(_));\n};\nvar isNumber = function isNumber(_) {\n return !Number.isNaN(+_) && !(_ instanceof Date);\n};\nvar isInteger = function isInteger(_) {\n return isNumber(_) && Number.isInteger(+_);\n};\nvar typeParsers = {\n boolean: toBoolean,\n integer: toNumber,\n number: toNumber,\n date: toDate,\n string: toString,\n unknown: identity\n};\nvar typeTests = [isBoolean, isInteger, isNumber, isDate];\nvar typeList = ['boolean', 'integer', 'number', 'date'];\nfunction inferType(values, field) {\n if (!values || !values.length) return 'unknown';\n var n = values.length,\n m = typeTests.length,\n a = typeTests.map(function (_, i) {\n return i + 1;\n });\n for (var i = 0, t = 0, j, value; i < n; ++i) {\n value = field ? values[i][field] : values[i];\n for (j = 0; j < m; ++j) {\n if (a[j] && isValid(value) && !typeTests[j](value)) {\n a[j] = 0;\n ++t;\n if (t === typeTests.length) return 'string';\n }\n }\n }\n return typeList[a.reduce(function (u, v) {\n return u === 0 ? v : u;\n }, 0) - 1];\n}\nfunction inferTypes(data, fields) {\n return fields.reduce(function (types, field) {\n types[field] = inferType(data, field);\n return types;\n }, {});\n}\nfunction delimitedFormat(delimiter) {\n var parse = function parse(data, format) {\n var delim = {\n delimiter: delimiter\n };\n return dsv(data, format ? extend(format, delim) : delim);\n };\n parse.responseType = 'text';\n return parse;\n}\nfunction dsv(data, format) {\n if (format.header) {\n data = format.header.map(stringValue).join(format.delimiter) + '\\n' + data;\n }\n return dsvFormat(format.delimiter).parse(data + '');\n}\ndsv.responseType = 'text';\nfunction isBuffer(_) {\n return typeof Buffer === 'function' && isFunction(Buffer.isBuffer) ? Buffer.isBuffer(_) : false;\n}\nfunction json(data, format) {\n var prop = format && format.property ? field(format.property) : identity;\n return isObject(data) && !isBuffer(data) ? parseJSON(prop(data), format) : prop(JSON.parse(data));\n}\njson.responseType = 'json';\nfunction parseJSON(data, format) {\n if (!isArray(data) && isIterable(data)) {\n data = _toConsumableArray(data);\n }\n return format && format.copy ? JSON.parse(JSON.stringify(data)) : data;\n}\nvar filters = {\n interior: function interior(a, b) {\n return a !== b;\n },\n exterior: function exterior(a, b) {\n return a === b;\n }\n};\nfunction topojson(data, format) {\n var method, object, property, filter;\n data = json(data, format);\n if (format && format.feature) {\n method = feature;\n property = format.feature;\n } else if (format && format.mesh) {\n method = mesh;\n property = format.mesh;\n filter = filters[format.filter];\n } else {\n error('Missing TopoJSON feature or mesh parameter.');\n }\n object = (object = data.objects[property]) ? method(data, object, filter) : error('Invalid TopoJSON object: ' + property);\n return object && object.features || [object];\n}\ntopojson.responseType = 'json';\nvar format = {\n dsv: dsv,\n csv: delimitedFormat(','),\n tsv: delimitedFormat('\\t'),\n json: json,\n topojson: topojson\n};\nfunction formats(name, reader) {\n if (arguments.length > 1) {\n format[name] = reader;\n return this;\n } else {\n return hasOwnProperty(format, name) ? format[name] : null;\n }\n}\nfunction responseType(type) {\n var f = formats(type);\n return f && f.responseType || 'text';\n}\nfunction read(data, schema, timeParser, utcParser) {\n schema = schema || {};\n var reader = formats(schema.type || 'json');\n if (!reader) error('Unknown data format type: ' + schema.type);\n data = reader(data, schema);\n if (schema.parse) parse(data, schema.parse, timeParser, utcParser);\n if (hasOwnProperty(data, 'columns')) delete data.columns;\n return data;\n}\nfunction parse(data, types, timeParser, utcParser) {\n if (!data.length) return; // early exit for empty data\n\n var locale = timeFormatDefaultLocale();\n timeParser = timeParser || locale.timeParse;\n utcParser = utcParser || locale.utcParse;\n var fields = data.columns || Object.keys(data[0]),\n datum,\n field,\n i,\n j,\n n,\n m;\n if (types === 'auto') types = inferTypes(data, fields);\n fields = Object.keys(types);\n var parsers = fields.map(function (field) {\n var type = types[field];\n var parts, pattern;\n if (type && (type.startsWith('date:') || type.startsWith('utc:'))) {\n parts = type.split(/:(.+)?/, 2); // split on first :\n pattern = parts[1];\n if (pattern[0] === '\\'' && pattern[pattern.length - 1] === '\\'' || pattern[0] === '\"' && pattern[pattern.length - 1] === '\"') {\n pattern = pattern.slice(1, -1);\n }\n var _parse = parts[0] === 'utc' ? utcParser : timeParser;\n return _parse(pattern);\n }\n if (!typeParsers[type]) {\n throw Error('Illegal format pattern: ' + field + ':' + type);\n }\n return typeParsers[type];\n });\n for (i = 0, n = data.length, m = fields.length; i < n; ++i) {\n datum = data[i];\n for (j = 0; j < m; ++j) {\n field = fields[j];\n datum[field] = parsers[j](datum[field]);\n }\n }\n}\nvar loader = loaderFactory(typeof fetch !== 'undefined' && fetch,\n// use built-in fetch API\nnull // no file system access\n);\n\nexport { format, formats, inferType, inferTypes, loader, read, responseType, typeParsers };","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport var bisectCenter = bisector(number).center;\nexport default bisectRight;","export default function (a, b) {\n return a = +a, b = +b, function (t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}","export default function number(x) {\n return +x;\n}","import { bisect } from \"d3-array\";\nimport { interpolate as interpolateValue, interpolateNumber, interpolateRound } from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\nvar unit = [0, 1];\nexport function identity(x) {\n return x;\n}\nfunction normalize(a, b) {\n return (b -= a = +a) ? function (x) {\n return (x - a) / b;\n } : constant(isNaN(b) ? NaN : 0.5);\n}\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function (x) {\n return Math.max(a, Math.min(b, x));\n };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0],\n d1 = domain[1],\n r0 = range[0],\n r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function (x) {\n return r0(d0(x));\n };\n}\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n return function (x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\nexport function copy(source, target) {\n return target.domain(source.domain()).range(source.range()).interpolate(source.interpolate()).clamp(source.clamp()).unknown(source.unknown());\n}\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n scale.invert = function (y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n scale.domain = function (_) {\n return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n };\n scale.range = function (_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n scale.rangeRound = function (_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n scale.clamp = function (_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n scale.interpolate = function (_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n scale.unknown = function (_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n return function (t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\nexport default function continuous() {\n return transformer()(identity, identity);\n}","export default function constants(x) {\n return function () {\n return x;\n };\n}","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0:\n break;\n case 1:\n this.range(domain);\n break;\n default:\n this.range(range).domain(domain);\n break;\n }\n return this;\n}\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0:\n break;\n case 1:\n {\n if (typeof domain === \"function\") this.interpolator(domain);else this.range(domain);\n break;\n }\n default:\n {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);else this.range(interpolator);\n break;\n }\n }\n return this;\n}","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\nFormatSpecifier.prototype.toString = function () {\n return this.fill + this.align + this.sign + this.symbol + (this.zero ? \"0\" : \"\") + (this.width === undefined ? \"\" : Math.max(1, this.width | 0)) + (this.comma ? \",\" : \"\") + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0)) + (this.trim ? \"~\" : \"\") + this.type;\n};","import { formatDecimalParts } from \"./formatDecimal.js\";\nexport var prefixExponent;\nexport default function (x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient : i > n ? coefficient + new Array(i - n + 1).join(\"0\") : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i) : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}","export default function (x) {\n return Math.abs(x = Math.round(x)) >= 1e21 ? x.toLocaleString(\"en\").replace(/,/g, \"\") : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i,\n coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient, +x.slice(i + 1)];\n}","import { formatDecimalParts } from \"./formatDecimal.js\";\nexport default function (x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}","import { formatDecimalParts } from \"./formatDecimal.js\";\nexport default function (x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1) : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\nexport default {\n \"%\": function _(x, p) {\n return (x * 100).toFixed(p);\n },\n \"b\": function b(x) {\n return Math.round(x).toString(2);\n },\n \"c\": function c(x) {\n return x + \"\";\n },\n \"d\": formatDecimal,\n \"e\": function e(x, p) {\n return x.toExponential(p);\n },\n \"f\": function f(x, p) {\n return x.toFixed(p);\n },\n \"g\": function g(x, p) {\n return x.toPrecision(p);\n },\n \"o\": function o(x) {\n return Math.round(x).toString(8);\n },\n \"p\": function p(x, _p) {\n return formatRounded(x * 100, _p);\n },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function X(x) {\n return Math.round(x).toString(16).toUpperCase();\n },\n \"x\": function x(_x) {\n return Math.round(_x).toString(16);\n }\n};","export default function (x) {\n return x;\n}","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport { prefixExponent } from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\nvar map = Array.prototype.map,\n prefixes = [\"y\", \"z\", \"a\", \"f\", \"p\", \"n\", \"µ\", \"m\", \"\", \"k\", \"M\", \"G\", \"T\", \"P\", \"E\", \"Z\", \"Y\"];\nexport default function (locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || fill === \"0\" && align === \"=\") zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6 : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision)) : Math.max(0, Math.min(20, precision));\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i,\n n,\n c;\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? sign === \"(\" ? sign : minus : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\":\n value = valuePrefix + value + valueSuffix + padding;\n break;\n case \"=\":\n value = valuePrefix + padding + value + valueSuffix;\n break;\n case \"^\":\n value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length);\n break;\n default:\n value = padding + valuePrefix + value + valueSuffix;\n break;\n }\n return numerals(value);\n }\n format.toString = function () {\n return specifier + \"\";\n };\n return format;\n }\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function (value) {\n return f(k * value) + prefix;\n };\n }\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}","import formatLocale from \"./locale.js\";\nvar locale;\nexport var format;\nexport var formatPrefix;\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}","export default function (grouping, thousands) {\n return function (value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n return t.reverse().join(thousands);\n };\n}","export default function (numerals) {\n return function (value) {\n return value.replace(/[0-9]/g, function (i) {\n return numerals[+i];\n });\n };\n}","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function (s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\":\n i0 = i1 = i;\n break;\n case \"0\":\n if (i0 === 0) i0 = i;\n i1 = i;\n break;\n default:\n if (!+s[i]) break out;\n if (i0 > 0) i0 = 0;\n break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}","import { tickStep } from \"d3-array\";\nimport { format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound } from \"d3-format\";\nexport default function tickFormat(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\":\n {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\":\n {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\":\n {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}","import exponent from \"./exponent.js\";\nexport default function (step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}","import exponent from \"./exponent.js\";\nexport default function (step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}","import exponent from \"./exponent.js\";\nexport default function (step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}","import { ticks, tickIncrement } from \"d3-array\";\nimport continuous, { copy } from \"./continuous.js\";\nimport { initRange } from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\nexport function linearish(scale) {\n var domain = scale.domain;\n scale.ticks = function (count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n scale.tickFormat = function (count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n scale.nice = function (count) {\n if (count == null) count = 10;\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n while (maxIter-- > 0) {\n step = tickIncrement(start, stop, count);\n if (step === prestep) {\n d[i0] = start;\n d[i1] = stop;\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n prestep = step;\n }\n return scale;\n };\n return scale;\n}\nexport default function linear() {\n var scale = continuous();\n scale.copy = function () {\n return copy(scale, linear());\n };\n initRange.apply(scale, arguments);\n return linearish(scale);\n}","export default function nice(domain, interval) {\n domain = domain.slice();\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}","import { ticks } from \"d3-array\";\nimport { format, formatSpecifier } from \"d3-format\";\nimport nice from \"./nice.js\";\nimport { copy, transformer } from \"./continuous.js\";\nimport { initRange } from \"./init.js\";\nfunction transformLog(x) {\n return Math.log(x);\n}\nfunction transformExp(x) {\n return Math.exp(x);\n}\nfunction transformLogn(x) {\n return -Math.log(-x);\n}\nfunction transformExpn(x) {\n return -Math.exp(-x);\n}\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\nfunction powp(base) {\n return base === 10 ? pow10 : base === Math.E ? Math.exp : function (x) {\n return Math.pow(base, x);\n };\n}\nfunction logp(base) {\n return base === Math.E ? Math.log : base === 10 && Math.log10 || base === 2 && Math.log2 || (base = Math.log(base), function (x) {\n return Math.log(x) / base;\n });\n}\nfunction reflect(f) {\n return function (x, k) {\n return -f(-x, k);\n };\n}\nexport function loggish(transform) {\n var scale = transform(transformLog, transformExp);\n var domain = scale.domain;\n var base = 10;\n var logs;\n var pows;\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) {\n logs = reflect(logs), pows = reflect(pows);\n transform(transformLogn, transformExpn);\n } else {\n transform(transformLog, transformExp);\n }\n return scale;\n }\n scale.base = function (_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n scale.domain = function (_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n scale.ticks = function (count) {\n var d = domain();\n var u = d[0];\n var v = d[d.length - 1];\n var r = v < u;\n if (r) {\n var _ref = [v, u];\n u = _ref[0];\n v = _ref[1];\n }\n var i = logs(u);\n var j = logs(v);\n var k;\n var t;\n var n = count == null ? 10 : +count;\n var z = [];\n if (!(base % 1) && j - i < n) {\n i = Math.floor(i), j = Math.ceil(j);\n if (u > 0) for (; i <= j; ++i) {\n for (k = 1; k < base; ++k) {\n t = i < 0 ? k / pows(-i) : k * pows(i);\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i <= j; ++i) {\n for (k = base - 1; k >= 1; --k) {\n t = i > 0 ? k / pows(-i) : k * pows(i);\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n if (z.length * 2 < n) z = ticks(u, v, n);\n } else {\n z = ticks(i, j, Math.min(j - i, n)).map(pows);\n }\n return r ? z.reverse() : z;\n };\n scale.tickFormat = function (count, specifier) {\n if (count == null) count = 10;\n if (specifier == null) specifier = base === 10 ? \"s\" : \",\";\n if (typeof specifier !== \"function\") {\n if (!(base % 1) && (specifier = formatSpecifier(specifier)).precision == null) specifier.trim = true;\n specifier = format(specifier);\n }\n if (count === Infinity) return specifier;\n var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return function (d) {\n var i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n scale.nice = function () {\n return domain(nice(domain(), {\n floor: function floor(x) {\n return pows(Math.floor(logs(x)));\n },\n ceil: function ceil(x) {\n return pows(Math.ceil(logs(x)));\n }\n }));\n };\n return scale;\n}\nexport default function log() {\n var scale = loggish(transformer()).domain([1, 10]);\n scale.copy = function () {\n return copy(scale, log()).base(scale.base());\n };\n initRange.apply(scale, arguments);\n return scale;\n}","import { linearish } from \"./linear.js\";\nimport { copy, identity, transformer } from \"./continuous.js\";\nimport { initRange } from \"./init.js\";\nfunction transformPow(exponent) {\n return function (x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n}\nfunction transformSqrt(x) {\n return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\nfunction transformSquare(x) {\n return x < 0 ? -x * x : x * x;\n}\nexport function powish(transform) {\n var scale = transform(identity, identity),\n exponent = 1;\n function rescale() {\n return exponent === 1 ? transform(identity, identity) : exponent === 0.5 ? transform(transformSqrt, transformSquare) : transform(transformPow(exponent), transformPow(1 / exponent));\n }\n scale.exponent = function (_) {\n return arguments.length ? (exponent = +_, rescale()) : exponent;\n };\n return linearish(scale);\n}\nexport default function pow() {\n var scale = powish(transformer());\n scale.copy = function () {\n return copy(scale, pow()).exponent(scale.exponent());\n };\n initRange.apply(scale, arguments);\n return scale;\n}\nexport function sqrt() {\n return pow.apply(null, arguments).exponent(0.5);\n}","import { linearish } from \"./linear.js\";\nimport { copy, transformer } from \"./continuous.js\";\nimport { initRange } from \"./init.js\";\nfunction transformSymlog(c) {\n return function (x) {\n return Math.sign(x) * Math.log1p(Math.abs(x / c));\n };\n}\nfunction transformSymexp(c) {\n return function (x) {\n return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n };\n}\nexport function symlogish(transform) {\n var c = 1,\n scale = transform(transformSymlog(c), transformSymexp(c));\n scale.constant = function (_) {\n return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n };\n return linearish(scale);\n}\nexport default function symlog() {\n var scale = symlogish(transformer());\n scale.copy = function () {\n return copy(scale, symlog()).constant(scale.constant());\n };\n return initRange.apply(scale, arguments);\n}","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport { bisector, tickStep } from \"d3-array\";\nimport { durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear } from \"./duration.js\";\nimport { millisecond } from \"./millisecond.js\";\nimport { second } from \"./second.js\";\nimport { timeMinute, utcMinute } from \"./minute.js\";\nimport { timeHour, utcHour } from \"./hour.js\";\nimport { timeDay, unixDay } from \"./day.js\";\nimport { timeSunday, utcSunday } from \"./week.js\";\nimport { timeMonth, utcMonth } from \"./month.js\";\nimport { timeYear, utcYear } from \"./year.js\";\nfunction ticker(year, month, week, day, hour, minute) {\n var tickIntervals = [[second, 1, durationSecond], [second, 5, 5 * durationSecond], [second, 15, 15 * durationSecond], [second, 30, 30 * durationSecond], [minute, 1, durationMinute], [minute, 5, 5 * durationMinute], [minute, 15, 15 * durationMinute], [minute, 30, 30 * durationMinute], [hour, 1, durationHour], [hour, 3, 3 * durationHour], [hour, 6, 6 * durationHour], [hour, 12, 12 * durationHour], [day, 1, durationDay], [day, 2, 2 * durationDay], [week, 1, durationWeek], [month, 1, durationMonth], [month, 3, 3 * durationMonth], [year, 1, durationYear]];\n function ticks(start, stop, count) {\n var reverse = stop < start;\n if (reverse) {\n var _ref = [stop, start];\n start = _ref[0];\n stop = _ref[1];\n }\n var interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n var ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n return reverse ? ticks.reverse() : ticks;\n }\n function tickInterval(start, stop, count) {\n var target = Math.abs(stop - start) / count;\n var i = bisector(function (_ref2) {\n var _ref3 = _slicedToArray(_ref2, 3),\n step = _ref3[2];\n return step;\n }).right(tickIntervals, target);\n if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n var _tickIntervals = _slicedToArray(tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i], 2),\n t = _tickIntervals[0],\n step = _tickIntervals[1];\n return t.every(step);\n }\n return [ticks, tickInterval];\n}\nvar _ticker = ticker(utcYear, utcMonth, utcSunday, unixDay, utcHour, utcMinute),\n _ticker2 = _slicedToArray(_ticker, 2),\n utcTicks = _ticker2[0],\n utcTickInterval = _ticker2[1];\nvar _ticker3 = ticker(timeYear, timeMonth, timeSunday, timeDay, timeHour, timeMinute),\n _ticker4 = _slicedToArray(_ticker3, 2),\n timeTicks = _ticker4[0],\n timeTickInterval = _ticker4[1];\nexport { utcTicks, utcTickInterval, timeTicks, timeTickInterval };","import { timeDay, timeSunday, timeMonday, timeThursday, timeYear, utcDay, utcSunday, utcMonday, utcThursday, utcYear } from \"d3-time\";\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\nfunction newDate(y, m, d) {\n return {\n y: y,\n m: m,\n d: d,\n H: 0,\n M: 0,\n S: 0,\n L: 0\n };\n}\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n function newFormat(specifier, formats) {\n return function (date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n if (!(date instanceof Date)) date = new Date(+date);\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n function newParse(specifier, Z) {\n return function (string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week,\n day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || (j = parse(d, string, j)) < 0) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n return j;\n }\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n return {\n format: function format(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function () {\n return specifier;\n };\n return f;\n },\n parse: function parse(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function () {\n return specifier;\n };\n return p;\n },\n utcFormat: function utcFormat(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function () {\n return specifier;\n };\n return f;\n },\n utcParse: function utcParse(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function () {\n return specifier;\n };\n return p;\n }\n };\n}\nvar pads = {\n \"-\": \"\",\n \"_\": \" \",\n \"0\": \"0\"\n },\n numberRe = /^\\s*\\d+/,\n // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\nfunction formatLookup(names) {\n return new Map(names.map(function (name, i) {\n return [name.toLowerCase(), i];\n }));\n}\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\nfunction dISO(d) {\n var day = d.getDay();\n return day >= 4 || day === 0 ? timeThursday(d) : timeThursday.ceil(d);\n}\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = day >= 4 || day === 0 ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\")) + pad(z / 60 | 0, \"0\", 2) + pad(z % 60, \"0\", 2);\n}\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return day >= 4 || day === 0 ? utcThursday(d) : utcThursday.ceil(d);\n}\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = day >= 4 || day === 0 ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\nfunction formatUTCZone() {\n return \"+0000\";\n}\nfunction formatLiteralPercent() {\n return \"%\";\n}\nfunction formatUnixTimestamp(d) {\n return +d;\n}\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}","import formatLocale from \"./locale.js\";\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}","import { timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeTicks, timeTickInterval } from \"d3-time\";\nimport { timeFormat } from \"d3-time-format\";\nimport continuous, { copy } from \"./continuous.js\";\nimport { initRange } from \"./init.js\";\nimport nice from \"./nice.js\";\nfunction date(t) {\n return new Date(t);\n}\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\nexport function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n var scale = continuous(),\n invert = scale.invert,\n domain = scale.domain;\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond : minute(date) < date ? formatSecond : hour(date) < date ? formatMinute : day(date) < date ? formatHour : month(date) < date ? week(date) < date ? formatDay : formatWeek : year(date) < date ? formatMonth : formatYear)(date);\n }\n scale.invert = function (y) {\n return new Date(invert(y));\n };\n scale.domain = function (_) {\n return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n };\n scale.ticks = function (interval) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n };\n scale.tickFormat = function (count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n scale.nice = function (interval) {\n var d = domain();\n if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n return interval ? domain(nice(d, interval)) : scale;\n };\n scale.copy = function () {\n return copy(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n };\n return scale;\n}\nexport default function time() {\n return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport { interpolate, interpolateRound } from \"d3-interpolate\";\nimport { identity } from \"./continuous.js\";\nimport { initInterpolator } from \"./init.js\";\nimport { linearish } from \"./linear.js\";\nimport { loggish } from \"./log.js\";\nimport { symlogish } from \"./symlog.js\";\nimport { powish } from \"./pow.js\";\nfunction transformer() {\n var x0 = 0,\n x1 = 1,\n t0,\n t1,\n k10,\n transform,\n interpolator = identity,\n clamp = false,\n unknown;\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n scale.domain = function (_) {\n var _ref;\n return arguments.length ? ((_ref = _slicedToArray(_, 2), x0 = _ref[0], x1 = _ref[1]), t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n };\n scale.clamp = function (_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n scale.interpolator = function (_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n function range(interpolate) {\n return function (_) {\n var _ref2;\n var r0, r1;\n return arguments.length ? ((_ref2 = _slicedToArray(_, 2), r0 = _ref2[0], r1 = _ref2[1]), interpolator = interpolate(r0, r1), scale) : [interpolator(0), interpolator(1)];\n };\n }\n scale.range = range(interpolate);\n scale.rangeRound = range(interpolateRound);\n scale.unknown = function (_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n return function (t) {\n transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n return scale;\n };\n}\nexport function copy(source, target) {\n return target.domain(source.domain()).interpolator(source.interpolator()).clamp(source.clamp()).unknown(source.unknown());\n}\nexport default function sequential() {\n var scale = linearish(transformer()(identity));\n scale.copy = function () {\n return copy(scale, sequential());\n };\n return initInterpolator.apply(scale, arguments);\n}\nexport function sequentialLog() {\n var scale = loggish(transformer()).domain([1, 10]);\n scale.copy = function () {\n return copy(scale, sequentialLog()).base(scale.base());\n };\n return initInterpolator.apply(scale, arguments);\n}\nexport function sequentialSymlog() {\n var scale = symlogish(transformer());\n scale.copy = function () {\n return copy(scale, sequentialSymlog()).constant(scale.constant());\n };\n return initInterpolator.apply(scale, arguments);\n}\nexport function sequentialPow() {\n var scale = powish(transformer());\n scale.copy = function () {\n return copy(scale, sequentialPow()).exponent(scale.exponent());\n };\n return initInterpolator.apply(scale, arguments);\n}\nexport function sequentialSqrt() {\n return sequentialPow.apply(null, arguments).exponent(0.5);\n}","import { default as value } from \"./value.js\";\nexport default function piecewise(interpolate, values) {\n if (values === undefined) values = interpolate, interpolate = value;\n var i = 0,\n n = values.length - 1,\n v = values[0],\n I = new Array(n < 0 ? 0 : n);\n while (i < n) I[i] = interpolate(v, v = values[++i]);\n return function (t) {\n var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n return I[i](t - i);\n };\n}","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport { interpolate, interpolateRound, piecewise } from \"d3-interpolate\";\nimport { identity } from \"./continuous.js\";\nimport { initInterpolator } from \"./init.js\";\nimport { linearish } from \"./linear.js\";\nimport { loggish } from \"./log.js\";\nimport { copy } from \"./sequential.js\";\nimport { symlogish } from \"./symlog.js\";\nimport { powish } from \"./pow.js\";\nfunction transformer() {\n var x0 = 0,\n x1 = 0.5,\n x2 = 1,\n s = 1,\n t0,\n t1,\n t2,\n k10,\n k21,\n interpolator = identity,\n transform,\n clamp = false,\n unknown;\n function scale(x) {\n return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (s * x < s * t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n scale.domain = function (_) {\n var _ref;\n return arguments.length ? ((_ref = _slicedToArray(_, 3), x0 = _ref[0], x1 = _ref[1], x2 = _ref[2]), t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), t2 = transform(x2 = +x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1, scale) : [x0, x1, x2];\n };\n scale.clamp = function (_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n scale.interpolator = function (_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n function range(interpolate) {\n return function (_) {\n var _ref2;\n var r0, r1, r2;\n return arguments.length ? ((_ref2 = _slicedToArray(_, 3), r0 = _ref2[0], r1 = _ref2[1], r2 = _ref2[2]), interpolator = piecewise(interpolate, [r0, r1, r2]), scale) : [interpolator(0), interpolator(0.5), interpolator(1)];\n };\n }\n scale.range = range(interpolate);\n scale.rangeRound = range(interpolateRound);\n scale.unknown = function (_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n return function (t) {\n transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1;\n return scale;\n };\n}\nexport default function diverging() {\n var scale = linearish(transformer()(identity));\n scale.copy = function () {\n return copy(scale, diverging());\n };\n return initInterpolator.apply(scale, arguments);\n}\nexport function divergingLog() {\n var scale = loggish(transformer()).domain([0.1, 1, 10]);\n scale.copy = function () {\n return copy(scale, divergingLog()).base(scale.base());\n };\n return initInterpolator.apply(scale, arguments);\n}\nexport function divergingSymlog() {\n var scale = symlogish(transformer());\n scale.copy = function () {\n return copy(scale, divergingSymlog()).constant(scale.constant());\n };\n return initInterpolator.apply(scale, arguments);\n}\nexport function divergingPow() {\n var scale = powish(transformer());\n scale.copy = function () {\n return copy(scale, divergingPow()).exponent(scale.exponent());\n };\n return initInterpolator.apply(scale, arguments);\n}\nexport function divergingSqrt() {\n return divergingPow.apply(null, arguments).exponent(0.5);\n}","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { ascending, bisect, quantileSorted as threshold } from \"d3-array\";\nimport { initRange } from \"./init.js\";\nexport default function quantile() {\n var domain = [],\n range = [],\n thresholds = [],\n unknown;\n function rescale() {\n var i = 0,\n n = Math.max(1, range.length);\n thresholds = new Array(n - 1);\n while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n return scale;\n }\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : range[bisect(thresholds, x)];\n }\n scale.invertExtent = function (y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : [i > 0 ? thresholds[i - 1] : domain[0], i < thresholds.length ? thresholds[i] : domain[domain.length - 1]];\n };\n scale.domain = function (_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n var _iterator = _createForOfIteratorHelper(_),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var d = _step.value;\n if (d != null && !isNaN(d = +d)) domain.push(d);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n domain.sort(ascending);\n return rescale();\n };\n scale.range = function (_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n scale.unknown = function (_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n scale.quantiles = function () {\n return thresholds.slice();\n };\n scale.copy = function () {\n return quantile().domain(domain).range(range).unknown(unknown);\n };\n return initRange.apply(scale, arguments);\n}","import superPropBase from \"./superPropBase.js\";\nexport default function _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get.bind();\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n return desc.value;\n };\n }\n return _get.apply(this, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n return object;\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct.bind();\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _assertThisInitialized from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js\";\nimport _get from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/get.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nimport _wrapNativeSuper from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nexport var InternMap = /*#__PURE__*/function (_Map) {\n _inherits(InternMap, _Map);\n var _super = _createSuper(InternMap);\n function InternMap(entries) {\n var _this;\n var key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : keyof;\n _classCallCheck(this, InternMap);\n _this = _super.call(this);\n Object.defineProperties(_assertThisInitialized(_this), {\n _intern: {\n value: new Map()\n },\n _key: {\n value: key\n }\n });\n if (entries != null) {\n var _iterator = _createForOfIteratorHelper(entries),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _step$value = _slicedToArray(_step.value, 2),\n _key2 = _step$value[0],\n value = _step$value[1];\n _this.set(_key2, value);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n return _this;\n }\n _createClass(InternMap, [{\n key: \"get\",\n value: function get(key) {\n return _get(_getPrototypeOf(InternMap.prototype), \"get\", this).call(this, intern_get(this, key));\n }\n }, {\n key: \"has\",\n value: function has(key) {\n return _get(_getPrototypeOf(InternMap.prototype), \"has\", this).call(this, intern_get(this, key));\n }\n }, {\n key: \"set\",\n value: function set(key, value) {\n return _get(_getPrototypeOf(InternMap.prototype), \"set\", this).call(this, intern_set(this, key), value);\n }\n }, {\n key: \"delete\",\n value: function _delete(key) {\n return _get(_getPrototypeOf(InternMap.prototype), \"delete\", this).call(this, intern_delete(this, key));\n }\n }]);\n return InternMap;\n}( /*#__PURE__*/_wrapNativeSuper(Map));\nexport var InternSet = /*#__PURE__*/function (_Set) {\n _inherits(InternSet, _Set);\n var _super2 = _createSuper(InternSet);\n function InternSet(values) {\n var _this2;\n var key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : keyof;\n _classCallCheck(this, InternSet);\n _this2 = _super2.call(this);\n Object.defineProperties(_assertThisInitialized(_this2), {\n _intern: {\n value: new Map()\n },\n _key: {\n value: key\n }\n });\n if (values != null) {\n var _iterator2 = _createForOfIteratorHelper(values),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var value = _step2.value;\n _this2.add(value);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n return _this2;\n }\n _createClass(InternSet, [{\n key: \"has\",\n value: function has(value) {\n return _get(_getPrototypeOf(InternSet.prototype), \"has\", this).call(this, intern_get(this, value));\n }\n }, {\n key: \"add\",\n value: function add(value) {\n return _get(_getPrototypeOf(InternSet.prototype), \"add\", this).call(this, intern_set(this, value));\n }\n }, {\n key: \"delete\",\n value: function _delete(value) {\n return _get(_getPrototypeOf(InternSet.prototype), \"delete\", this).call(this, intern_delete(this, value));\n }\n }]);\n return InternSet;\n}( /*#__PURE__*/_wrapNativeSuper(Set));\nfunction intern_get(_ref, value) {\n var _intern = _ref._intern,\n _key = _ref._key;\n var key = _key(value);\n return _intern.has(key) ? _intern.get(key) : value;\n}\nfunction intern_set(_ref2, value) {\n var _intern = _ref2._intern,\n _key = _ref2._key;\n var key = _key(value);\n if (_intern.has(key)) return _intern.get(key);\n _intern.set(key, value);\n return value;\n}\nfunction intern_delete(_ref3, value) {\n var _intern = _ref3._intern,\n _key = _ref3._key;\n var key = _key(value);\n if (_intern.has(key)) {\n value = _intern.get(key);\n _intern.delete(key);\n }\n return value;\n}\nfunction keyof(value) {\n return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { InternMap } from \"d3-array\";\nimport { initRange } from \"./init.js\";\nexport var implicit = Symbol(\"implicit\");\nexport default function ordinal() {\n var index = new InternMap(),\n domain = [],\n range = [],\n unknown = implicit;\n function scale(d) {\n var i = index.get(d);\n if (i === undefined) {\n if (unknown !== implicit) return unknown;\n index.set(d, i = domain.push(d) - 1);\n }\n return range[i % range.length];\n }\n scale.domain = function (_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new InternMap();\n var _iterator = _createForOfIteratorHelper(_),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var value = _step.value;\n if (index.has(value)) continue;\n index.set(value, domain.push(value) - 1);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return scale;\n };\n scale.range = function (_) {\n return arguments.length ? (range = Array.from(_), scale) : range.slice();\n };\n scale.unknown = function (_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n scale.copy = function () {\n return ordinal(domain, range).unknown(unknown);\n };\n initRange.apply(scale, arguments);\n return scale;\n}","export default function (range) {\n var n = range.length;\n return function (t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}","import { hue } from \"./color.js\";\nexport default function (a, b) {\n var i = hue(+a, +b);\n return function (t) {\n var x = i(t);\n return x - 360 * Math.floor(x / 360);\n };\n}","import decompose, { identity } from \"./decompose.js\";\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n var m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}","var degrees = 180 / Math.PI;\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\nexport default function (a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}","import number from \"../number.js\";\nimport { parseCss, parseSvg } from \"./parse.js\";\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({\n i: i - 4,\n x: number(xa, xb)\n }, {\n i: i - 2,\n x: number(ya, yb)\n });\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360;else if (b - a > 180) a += 360; // shortest path\n q.push({\n i: s.push(pop(s) + \"rotate(\", null, degParen) - 2,\n x: number(a, b)\n });\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({\n i: s.push(pop(s) + \"skewX(\", null, degParen) - 2,\n x: number(a, b)\n });\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({\n i: i - 4,\n x: number(xa, xb)\n }, {\n i: i - 2,\n x: number(ya, yb)\n });\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n return function (a, b) {\n var s = [],\n // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function (t) {\n var i = -1,\n n = q.length,\n o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");","var epsilon2 = 1e-12;\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\nexport default (function zoomRho(rho, rho2, rho4) {\n // p0 = [ux0, uy0, w0]\n // p1 = [ux1, uy1, w1]\n function zoom(p0, p1) {\n var ux0 = p0[0],\n uy0 = p0[1],\n w0 = p0[2],\n ux1 = p1[0],\n uy1 = p1[1],\n w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function i(t) {\n return [ux0 + t * dx, uy0 + t * dy, w0 * Math.exp(rho * t * S)];\n };\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function i(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [ux0 + u * dx, uy0 + u * dy, w0 * coshr0 / cosh(rho * s + r0)];\n };\n }\n i.duration = S * 1000 * rho / Math.SQRT2;\n return i;\n }\n zoom.rho = function (_) {\n var _1 = Math.max(1e-3, +_),\n _2 = _1 * _1,\n _4 = _2 * _2;\n return zoomRho(_1, _2, _4);\n };\n return zoom;\n})(Math.SQRT2, 2, 4);","import { hsl as colorHsl } from \"d3-color\";\nimport color, { hue } from \"./color.js\";\nfunction hsl(hue) {\n return function (start, end) {\n var h = hue((start = colorHsl(start)).h, (end = colorHsl(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function (t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n };\n}\nexport default hsl(hue);\nexport var hslLong = hsl(color);","export var radians = Math.PI / 180;\nexport var degrees = 180 / Math.PI;","import define, { extend } from \"./define.js\";\nimport { Color, rgbConvert, Rgb } from \"./color.js\";\nimport { degrees, radians } from \"./math.js\";\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nvar K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) return hcl2lab(o);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn),\n x,\n z;\n if (r === g && g === b) x = z = y;else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\nexport function gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\nexport default function lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\nexport function Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\ndefine(Lab, lab, extend(Color, {\n brighter: function brighter(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker: function darker(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb: function rgb() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new Rgb(lrgb2rgb(3.1338561 * x - 1.6168667 * y - 0.4906146 * z), lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z), lrgb2rgb(0.0719453 * x - 0.2289914 * y + 1.4052427 * z), this.opacity);\n }\n}));\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * degrees;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\nexport function lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\nexport function hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\nexport function Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\nfunction hcl2lab(o) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * radians;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\ndefine(Hcl, hcl, extend(Color, {\n brighter: function brighter(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker: function darker(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb: function rgb() {\n return hcl2lab(this).rgb();\n }\n}));","import { lab as colorLab } from \"d3-color\";\nimport color from \"./color.js\";\nexport default function lab(start, end) {\n var l = color((start = colorLab(start)).l, (end = colorLab(end)).l),\n a = color(start.a, end.a),\n b = color(start.b, end.b),\n opacity = color(start.opacity, end.opacity);\n return function (t) {\n start.l = l(t);\n start.a = a(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n}","import { hcl as colorHcl } from \"d3-color\";\nimport color, { hue } from \"./color.js\";\nfunction hcl(hue) {\n return function (start, end) {\n var h = hue((start = colorHcl(start)).h, (end = colorHcl(end)).h),\n c = color(start.c, end.c),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function (t) {\n start.h = h(t);\n start.c = c(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n };\n}\nexport default hcl(hue);\nexport var hclLong = hcl(color);","import define, { extend } from \"./define.js\";\nimport { Color, rgbConvert, Rgb, darker as _darker, brighter as _brighter } from \"./color.js\";\nimport { degrees, radians } from \"./math.js\";\nvar A = -0.14861,\n B = +1.78277,\n C = -0.29227,\n D = -0.90649,\n E = +1.97294,\n ED = E * D,\n EB = E * B,\n BC_DA = B * C - D * A;\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)),\n // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * degrees - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\nexport default function cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\nexport function Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\ndefine(Cubehelix, cubehelix, extend(Color, {\n brighter: function brighter(k) {\n k = k == null ? _brighter : Math.pow(_brighter, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function darker(k) {\n k = k == null ? _darker : Math.pow(_darker, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function rgb() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * radians,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new Rgb(255 * (l + a * (A * cosh + B * sinh)), 255 * (l + a * (C * cosh + D * sinh)), 255 * (l + a * (E * cosh)), this.opacity);\n }\n}));","import { cubehelix as colorCubehelix } from \"d3-color\";\nimport color, { hue } from \"./color.js\";\nfunction cubehelix(hue) {\n return function cubehelixGamma(y) {\n y = +y;\n function cubehelix(start, end) {\n var h = hue((start = colorCubehelix(start)).h, (end = colorCubehelix(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function (t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(Math.pow(t, y));\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n cubehelix.gamma = cubehelixGamma;\n return cubehelix;\n }(1);\n}\nexport default cubehelix(hue);\nexport var cubehelixLong = cubehelix(color);","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nvar _symbols, _formats;\nimport { toNumber, peek, toSet, array, constant, isNumber, span, isObject, isString, error, isArray } from 'vega-util';\nimport { bisectRight, range, bisect } from 'd3-array';\nimport * as $ from 'd3-scale';\nimport { scaleOrdinal, tickFormat as tickFormat$1 } from 'd3-scale';\nexport { scaleImplicit } from 'd3-scale';\nimport * as $$1 from 'd3-interpolate';\nimport { timeInterval, utcInterval } from 'vega-time';\nfunction bandSpace(count, paddingInner, paddingOuter) {\n var space = count - paddingInner + paddingOuter * 2;\n return count ? space > 0 ? space : 1 : 0;\n}\nvar Identity = 'identity';\nvar Linear = 'linear';\nvar Log = 'log';\nvar Pow = 'pow';\nvar Sqrt = 'sqrt';\nvar Symlog = 'symlog';\nvar Time = 'time';\nvar UTC = 'utc';\nvar Sequential = 'sequential';\nvar Diverging = 'diverging';\nvar Quantile = 'quantile';\nvar Quantize = 'quantize';\nvar Threshold = 'threshold';\nvar Ordinal = 'ordinal';\nvar Point = 'point';\nvar Band = 'band';\nvar BinOrdinal = 'bin-ordinal';\n\n// categories\nvar Continuous = 'continuous';\nvar Discrete = 'discrete';\nvar Discretizing = 'discretizing';\nvar Interpolating = 'interpolating';\nvar Temporal = 'temporal';\nfunction invertRange(scale) {\n return function (_) {\n var lo = _[0],\n hi = _[1],\n t;\n if (hi < lo) {\n t = lo;\n lo = hi;\n hi = t;\n }\n return [scale.invert(lo), scale.invert(hi)];\n };\n}\nfunction invertRangeExtent(scale) {\n return function (_) {\n var range = scale.range();\n var lo = _[0],\n hi = _[1],\n min = -1,\n max,\n t,\n i,\n n;\n if (hi < lo) {\n t = lo;\n lo = hi;\n hi = t;\n }\n for (i = 0, n = range.length; i < n; ++i) {\n if (range[i] >= lo && range[i] <= hi) {\n if (min < 0) min = i;\n max = i;\n }\n }\n if (min < 0) return undefined;\n lo = scale.invertExtent(range[min]);\n hi = scale.invertExtent(range[max]);\n return [lo[0] === undefined ? lo[1] : lo[0], hi[1] === undefined ? hi[0] : hi[1]];\n };\n}\nfunction band() {\n var scale = scaleOrdinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range;\n var range$1 = [0, 1],\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n delete scale.unknown;\n function rescale() {\n var n = domain().length,\n reverse = range$1[1] < range$1[0],\n stop = range$1[1 - reverse],\n space = bandSpace(n, paddingInner, paddingOuter);\n var start = range$1[reverse - 0];\n step = (stop - start) / (space || 1);\n if (round) {\n step = Math.floor(step);\n }\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) {\n start = Math.round(start);\n bandwidth = Math.round(bandwidth);\n }\n var values = range(n).map(function (i) {\n return start + step * i;\n });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n scale.domain = function (_) {\n if (arguments.length) {\n domain(_);\n return rescale();\n } else {\n return domain();\n }\n };\n scale.range = function (_) {\n if (arguments.length) {\n range$1 = [+_[0], +_[1]];\n return rescale();\n } else {\n return range$1.slice();\n }\n };\n scale.rangeRound = function (_) {\n range$1 = [+_[0], +_[1]];\n round = true;\n return rescale();\n };\n scale.bandwidth = function () {\n return bandwidth;\n };\n scale.step = function () {\n return step;\n };\n scale.round = function (_) {\n if (arguments.length) {\n round = !!_;\n return rescale();\n } else {\n return round;\n }\n };\n scale.padding = function (_) {\n if (arguments.length) {\n paddingOuter = Math.max(0, Math.min(1, _));\n paddingInner = paddingOuter;\n return rescale();\n } else {\n return paddingInner;\n }\n };\n scale.paddingInner = function (_) {\n if (arguments.length) {\n paddingInner = Math.max(0, Math.min(1, _));\n return rescale();\n } else {\n return paddingInner;\n }\n };\n scale.paddingOuter = function (_) {\n if (arguments.length) {\n paddingOuter = Math.max(0, Math.min(1, _));\n return rescale();\n } else {\n return paddingOuter;\n }\n };\n scale.align = function (_) {\n if (arguments.length) {\n align = Math.max(0, Math.min(1, _));\n return rescale();\n } else {\n return align;\n }\n };\n scale.invertRange = function (_) {\n // bail if range has null or undefined values\n if (_[0] == null || _[1] == null) return;\n var reverse = range$1[1] < range$1[0],\n values = reverse ? ordinalRange().reverse() : ordinalRange(),\n n = values.length - 1;\n var lo = +_[0],\n hi = +_[1],\n a,\n b,\n t;\n\n // bail if either range endpoint is invalid\n if (lo !== lo || hi !== hi) return;\n\n // order range inputs, bail if outside of scale range\n if (hi < lo) {\n t = lo;\n lo = hi;\n hi = t;\n }\n if (hi < values[0] || lo > range$1[1 - reverse]) return;\n\n // binary search to index into scale range\n a = Math.max(0, bisectRight(values, lo) - 1);\n b = lo === hi ? a : bisectRight(values, hi) - 1;\n\n // increment index a if lo is within padding gap\n if (lo - values[a] > bandwidth + 1e-10) ++a;\n if (reverse) {\n // map + swap\n t = a;\n a = n - b;\n b = n - t;\n }\n return a > b ? undefined : domain().slice(a, b + 1);\n };\n scale.invert = function (_) {\n var value = scale.invertRange([_, _]);\n return value ? value[0] : value;\n };\n scale.copy = function () {\n return band().domain(domain()).range(range$1).round(round).paddingInner(paddingInner).paddingOuter(paddingOuter).align(align);\n };\n return rescale();\n}\nfunction pointish(scale) {\n var copy = scale.copy;\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n scale.copy = function () {\n return pointish(copy());\n };\n return scale;\n}\nfunction point() {\n return pointish(band().paddingInner(1));\n}\nvar map = Array.prototype.map;\nfunction numbers(_) {\n return map.call(_, toNumber);\n}\nvar slice = Array.prototype.slice;\nfunction scaleBinOrdinal() {\n var domain = [],\n range = [];\n function scale(x) {\n return x == null || x !== x ? undefined : range[(bisect(domain, x) - 1) % range.length];\n }\n scale.domain = function (_) {\n if (arguments.length) {\n domain = numbers(_);\n return scale;\n } else {\n return domain.slice();\n }\n };\n scale.range = function (_) {\n if (arguments.length) {\n range = slice.call(_);\n return scale;\n } else {\n return range.slice();\n }\n };\n scale.tickFormat = function (count, specifier) {\n return tickFormat$1(domain[0], peek(domain), count == null ? 10 : count, specifier);\n };\n scale.copy = function () {\n return scaleBinOrdinal().domain(scale.domain()).range(scale.range());\n };\n return scale;\n}\n\n/** Private scale registry: should not be exported */\nvar scales = new Map();\nvar VEGA_SCALE = Symbol('vega_scale');\nfunction registerScale(scale) {\n scale[VEGA_SCALE] = true;\n return scale;\n}\n\n/**\n * Return true if object was created by a constructor from the vega-scale `scale` function.\n */\nfunction isRegisteredScale(scale) {\n return scale && scale[VEGA_SCALE] === true;\n}\n\n/**\n * Augment scales with their type and needed inverse methods.\n */\nfunction create(type, constructor, metadata) {\n var ctr = function scale() {\n var s = constructor();\n if (!s.invertRange) {\n s.invertRange = s.invert ? invertRange(s) : s.invertExtent ? invertRangeExtent(s) : undefined;\n }\n s.type = type;\n return registerScale(s);\n };\n ctr.metadata = toSet(array(metadata));\n return ctr;\n}\n\n/**\n * Registry function for adding and accessing scale constructor functions.\n * The *type* argument is a String indicating the name of the scale type.\n *\n * If the *scale* argument is not specified, this method returns the matching scale constructor in the registry, or `null` if not found.\n * If the *scale* argument is provided, it must be a scale constructor function to add to the registry under the given *type* name.\n * The *metadata* argument provides additional information to guide appropriate use of scales within Vega.\n *\n * *metadata* can be either a string or string array. The valid string values are:\n * - `\"continuous\"` - the scale is defined over a continuous-valued domain.\n * - `\"discrete\"` - the scale is defined over a discrete domain and range.\n * - `\"discretizing\"` - the scale discretizes a continuous domain to a discrete range.\n * - `\"interpolating\"` - the scale range is defined using a color interpolator.\n * - `\"log\"` - the scale performs a logarithmic transform of the continuous domain.\n * - `\"temporal\"` - the scale domain is defined over date-time values.\n */\nfunction scale(type, scale, metadata) {\n if (arguments.length > 1) {\n scales.set(type, create(type, scale, metadata));\n return this;\n } else {\n return isValidScaleType(type) ? scales.get(type) : undefined;\n }\n}\n\n// identity scale\nscale(Identity, $.scaleIdentity);\n\n// continuous scales\nscale(Linear, $.scaleLinear, Continuous);\nscale(Log, $.scaleLog, [Continuous, Log]);\nscale(Pow, $.scalePow, Continuous);\nscale(Sqrt, $.scaleSqrt, Continuous);\nscale(Symlog, $.scaleSymlog, Continuous);\nscale(Time, $.scaleTime, [Continuous, Temporal]);\nscale(UTC, $.scaleUtc, [Continuous, Temporal]);\n\n// sequential scales\nscale(Sequential, $.scaleSequential, [Continuous, Interpolating]); // backwards compat\nscale(\"\".concat(Sequential, \"-\").concat(Linear), $.scaleSequential, [Continuous, Interpolating]);\nscale(\"\".concat(Sequential, \"-\").concat(Log), $.scaleSequentialLog, [Continuous, Interpolating, Log]);\nscale(\"\".concat(Sequential, \"-\").concat(Pow), $.scaleSequentialPow, [Continuous, Interpolating]);\nscale(\"\".concat(Sequential, \"-\").concat(Sqrt), $.scaleSequentialSqrt, [Continuous, Interpolating]);\nscale(\"\".concat(Sequential, \"-\").concat(Symlog), $.scaleSequentialSymlog, [Continuous, Interpolating]);\n\n// diverging scales\nscale(\"\".concat(Diverging, \"-\").concat(Linear), $.scaleDiverging, [Continuous, Interpolating]);\nscale(\"\".concat(Diverging, \"-\").concat(Log), $.scaleDivergingLog, [Continuous, Interpolating, Log]);\nscale(\"\".concat(Diverging, \"-\").concat(Pow), $.scaleDivergingPow, [Continuous, Interpolating]);\nscale(\"\".concat(Diverging, \"-\").concat(Sqrt), $.scaleDivergingSqrt, [Continuous, Interpolating]);\nscale(\"\".concat(Diverging, \"-\").concat(Symlog), $.scaleDivergingSymlog, [Continuous, Interpolating]);\n\n// discretizing scales\nscale(Quantile, $.scaleQuantile, [Discretizing, Quantile]);\nscale(Quantize, $.scaleQuantize, Discretizing);\nscale(Threshold, $.scaleThreshold, Discretizing);\n\n// discrete scales\nscale(BinOrdinal, scaleBinOrdinal, [Discrete, Discretizing]);\nscale(Ordinal, $.scaleOrdinal, Discrete);\nscale(Band, band, Discrete);\nscale(Point, point, Discrete);\nfunction isValidScaleType(type) {\n return scales.has(type);\n}\nfunction hasType(key, type) {\n var s = scales.get(key);\n return s && s.metadata[type];\n}\nfunction isContinuous(key) {\n return hasType(key, Continuous);\n}\nfunction isDiscrete(key) {\n return hasType(key, Discrete);\n}\nfunction isDiscretizing(key) {\n return hasType(key, Discretizing);\n}\nfunction isLogarithmic(key) {\n return hasType(key, Log);\n}\nfunction isTemporal(key) {\n return hasType(key, Temporal);\n}\nfunction isInterpolating(key) {\n return hasType(key, Interpolating);\n}\nfunction isQuantile(key) {\n return hasType(key, Quantile);\n}\nvar scaleProps = ['clamp', 'base', 'constant', 'exponent'];\nfunction interpolateRange(interpolator, range) {\n var start = range[0],\n span = peek(range) - start;\n return function (i) {\n return interpolator(start + i * span);\n };\n}\nfunction interpolateColors(colors, type, gamma) {\n return $$1.piecewise(interpolate(type || 'rgb', gamma), colors);\n}\nfunction quantizeInterpolator(interpolator, count) {\n var samples = new Array(count),\n n = count + 1;\n for (var i = 0; i < count;) samples[i] = interpolator(++i / n);\n return samples;\n}\nfunction scaleCopy(scale) {\n var t = scale.type,\n s = scale.copy();\n s.type = t;\n return s;\n}\nfunction scaleFraction(scale$1, min, max) {\n var delta = max - min;\n var i, t, s;\n if (!delta || !Number.isFinite(delta)) {\n return constant(0.5);\n } else {\n i = (t = scale$1.type).indexOf('-');\n t = i < 0 ? t : t.slice(i + 1);\n s = scale(t)().domain([min, max]).range([0, 1]);\n scaleProps.forEach(function (m) {\n return scale$1[m] ? s[m](scale$1[m]()) : 0;\n });\n return s;\n }\n}\nfunction interpolate(type, gamma) {\n var interp = $$1[method(type)];\n return gamma != null && interp && interp.gamma ? interp.gamma(gamma) : interp;\n}\nfunction method(type) {\n return 'interpolate' + type.toLowerCase().split('-').map(function (s) {\n return s[0].toUpperCase() + s.slice(1);\n }).join('');\n}\nvar continuous = {\n blues: 'cfe1f2bed8eca8cee58fc1de74b2d75ba3cf4592c63181bd206fb2125ca40a4a90',\n greens: 'd3eecdc0e6baabdda594d3917bc77d60ba6c46ab5e329a512089430e7735036429',\n greys: 'e2e2e2d4d4d4c4c4c4b1b1b19d9d9d8888887575756262624d4d4d3535351e1e1e',\n oranges: 'fdd8b3fdc998fdb87bfda55efc9244f87f2cf06b18e4580bd14904b93d029f3303',\n purples: 'e2e1efd4d4e8c4c5e0b4b3d6a3a0cc928ec3827cb97566ae684ea25c3696501f8c',\n reds: 'fdc9b4fcb49afc9e80fc8767fa7051f6573fec3f2fdc2a25c81b1db21218970b13',\n blueGreen: 'd5efedc1e8e0a7ddd18bd2be70c6a958ba9144ad77319c5d2089460e7736036429',\n bluePurple: 'ccddecbad0e4a8c2dd9ab0d4919cc98d85be8b6db28a55a6873c99822287730f71',\n greenBlue: 'd3eecec5e8c3b1e1bb9bd8bb82cec269c2ca51b2cd3c9fc7288abd1675b10b60a1',\n orangeRed: 'fddcaffdcf9bfdc18afdad77fb9562f67d53ee6545e24932d32d1ebf130da70403',\n purpleBlue: 'dbdaebc8cee4b1c3de97b7d87bacd15b9fc93a90c01e7fb70b70ab056199045281',\n purpleBlueGreen: 'dbd8eac8cee4b0c3de93b7d872acd1549fc83892bb1c88a3097f8702736b016353',\n purpleRed: 'dcc9e2d3b3d7ce9eccd186c0da6bb2e14da0e23189d91e6fc61159ab07498f023a',\n redPurple: 'fccfccfcbec0faa9b8f98faff571a5ec539ddb3695c41b8aa908808d0179700174',\n yellowGreen: 'e4f4acd1eca0b9e2949ed68880c97c62bb6e47aa5e3297502083440e723b036034',\n yellowOrangeBrown: 'feeaa1fedd84fecc63feb746fca031f68921eb7215db5e0bc54c05ab3d038f3204',\n yellowOrangeRed: 'fee087fed16ffebd59fea849fd903efc7335f9522bee3423de1b20ca0b22af0225',\n blueOrange: '134b852f78b35da2cb9dcae1d2e5eff2f0ebfce0bafbbf74e8932fc5690d994a07',\n brownBlueGreen: '704108a0651ac79548e3c78af3e6c6eef1eac9e9e48ed1c74da79e187a72025147',\n purpleGreen: '5b1667834792a67fb6c9aed3e6d6e8eff0efd9efd5aedda971bb75368e490e5e29',\n purpleOrange: '4114696647968f83b7b9b4d6dadbebf3eeeafce0bafbbf74e8932fc5690d994a07',\n redBlue: '8c0d25bf363adf745ef4ae91fbdbc9f2efeed2e5ef9dcae15da2cb2f78b3134b85',\n redGrey: '8c0d25bf363adf745ef4ae91fcdccbfaf4f1e2e2e2c0c0c0969696646464343434',\n yellowGreenBlue: 'eff9bddbf1b4bde5b594d5b969c5be45b4c22c9ec02182b82163aa23479c1c3185',\n redYellowBlue: 'a50026d4322cf16e43fcac64fedd90faf8c1dcf1ecabd6e875abd04a74b4313695',\n redYellowGreen: 'a50026d4322cf16e43fcac63fedd8df9f7aed7ee8ea4d86e64bc6122964f006837',\n pinkYellowGreen: '8e0152c0267edd72adf0b3d6faddedf5f3efe1f2cab6de8780bb474f9125276419',\n spectral: '9e0142d13c4bf0704afcac63fedd8dfbf8b0e0f3a1a9dda269bda94288b55e4fa2',\n viridis: '440154470e61481a6c482575472f7d443a834144873d4e8a39568c35608d31688e2d708e2a788e27818e23888e21918d1f988b1fa08822a8842ab07f35b77943bf7154c56866cc5d7ad1518fd744a5db36bcdf27d2e21be9e51afde725',\n magma: '0000040404130b0924150e3720114b2c11603b0f704a107957157e651a80721f817f24828c29819a2e80a8327db6377ac43c75d1426fde4968e95462f1605df76f5cfa7f5efc8f65fe9f6dfeaf78febf84fece91fddea0fcedaffcfdbf',\n inferno: '0000040403130c0826170c3b240c4f330a5f420a68500d6c5d126e6b176e781c6d86216b932667a12b62ae305cbb3755c73e4cd24644dd513ae65c30ed6925f3771af8850ffb9506fca50afcb519fac62df6d645f2e661f3f484fcffa4',\n plasma: '0d088723069033059742039d5002a25d01a66a00a87801a88405a7900da49c179ea72198b12a90ba3488c33d80cb4779d35171da5a69e16462e76e5bed7953f2834cf68f44fa9a3dfca636fdb32ffec029fcce25f9dc24f5ea27f0f921',\n cividis: '00205100235800265d002961012b65042e670831690d346b11366c16396d1c3c6e213f6e26426e2c456e31476e374a6e3c4d6e42506e47536d4c566d51586e555b6e5a5e6e5e616e62646f66676f6a6a706e6d717270717573727976737c79747f7c75827f758682768985778c8877908b78938e789691789a94789e9778a19b78a59e77a9a177aea575b2a874b6ab73bbaf71c0b26fc5b66dc9b96acebd68d3c065d8c462ddc85fe2cb5ce7cf58ebd355f0d652f3da4ff7de4cfae249fce647',\n rainbow: '6e40aa883eb1a43db3bf3cafd83fa4ee4395fe4b83ff576eff6659ff7847ff8c38f3a130e2b72fcfcc36bee044aff05b8ff4576ff65b52f6673af27828ea8d1ddfa319d0b81cbecb23abd82f96e03d82e14c6edb5a5dd0664dbf6e40aa',\n sinebow: 'ff4040fc582af47218e78d0bd5a703bfbf00a7d5038de70b72f41858fc2a40ff402afc5818f4720be78d03d5a700bfbf03a7d50b8de71872f42a58fc4040ff582afc7218f48d0be7a703d5bf00bfd503a7e70b8df41872fc2a58ff4040',\n turbo: '23171b32204a3e2a71453493493eae4b49c54a53d7485ee44569ee4074f53c7ff8378af93295f72e9ff42ba9ef28b3e926bce125c5d925cdcf27d5c629dcbc2de3b232e9a738ee9d3ff39347f68950f9805afc7765fd6e70fe667cfd5e88fc5795fb51a1f84badf545b9f140c5ec3cd0e637dae034e4d931ecd12ef4c92bfac029ffb626ffad24ffa223ff9821ff8d1fff821dff771cfd6c1af76118f05616e84b14df4111d5380fcb2f0dc0260ab61f07ac1805a313029b0f00950c00910b00',\n browns: 'eedbbdecca96e9b97ae4a865dc9856d18954c7784cc0673fb85536ad44339f3632',\n tealBlues: 'bce4d89dd3d181c3cb65b3c245a2b9368fae347da0306a932c5985',\n teals: 'bbdfdfa2d4d58ac9c975bcbb61b0af4da5a43799982b8b8c1e7f7f127273006667',\n warmGreys: 'dcd4d0cec5c1c0b8b4b3aaa7a59c9998908c8b827f7e7673726866665c5a59504e',\n goldGreen: 'f4d166d5ca60b6c35c98bb597cb25760a6564b9c533f8f4f33834a257740146c36',\n goldOrange: 'f4d166f8be5cf8aa4cf5983bf3852aef701be2621fd65322c54923b142239e3a26',\n goldRed: 'f4d166f6be59f9aa51fc964ef6834bee734ae56249db5247cf4244c43141b71d3e',\n lightGreyRed: 'efe9e6e1dad7d5cbc8c8bdb9bbaea9cd967ddc7b43e15f19df4011dc000b',\n lightGreyTeal: 'e4eaead6dcddc8ced2b7c2c7a6b4bc64b0bf22a6c32295c11f85be1876bc',\n lightMulti: 'e0f1f2c4e9d0b0de9fd0e181f6e072f6c053f3993ef77440ef4a3c',\n lightOrange: 'f2e7daf7d5baf9c499fab184fa9c73f68967ef7860e8645bde515bd43d5b',\n lightTealBlue: 'e3e9e0c0dccf9aceca7abfc859afc0389fb9328dad2f7ca0276b95255988',\n darkBlue: '3232322d46681a5c930074af008cbf05a7ce25c0dd38daed50f3faffffff',\n darkGold: '3c3c3c584b37725e348c7631ae8b2bcfa424ecc31ef9de30fff184ffffff',\n darkGreen: '3a3a3a215748006f4d048942489e4276b340a6c63dd2d836ffeb2cffffaa',\n darkMulti: '3737371f5287197d8c29a86995ce3fffe800ffffff',\n darkRed: '3434347036339e3c38cc4037e75d1eec8620eeab29f0ce32ffeb2c'\n};\nvar discrete = {\n category10: '1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf',\n category20: '1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5',\n category20b: '393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6',\n category20c: '3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9',\n tableau10: '4c78a8f58518e4575672b7b254a24beeca3bb279a2ff9da69d755dbab0ac',\n tableau20: '4c78a89ecae9f58518ffbf7954a24b88d27ab79a20f2cf5b43989483bcb6e45756ff9d9879706ebab0acd67195fcbfd2b279a2d6a5c99e765fd8b5a5',\n accent: '7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666',\n dark2: '1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666',\n paired: 'a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928',\n pastel1: 'fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2',\n pastel2: 'b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc',\n set1: 'e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999',\n set2: '66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3',\n set3: '8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f'\n};\nfunction colors(palette) {\n var n = palette.length / 6 | 0,\n c = new Array(n);\n for (var i = 0; i < n;) {\n c[i] = '#' + palette.slice(i * 6, ++i * 6);\n }\n return c;\n}\nfunction apply(_, f) {\n for (var k in _) scheme(k, f(_[k]));\n}\nvar schemes = {};\napply(discrete, colors);\napply(continuous, function (_) {\n return interpolateColors(colors(_));\n});\nfunction scheme(name, scheme) {\n name = name && name.toLowerCase();\n if (arguments.length > 1) {\n schemes[name] = scheme;\n return this;\n } else {\n return schemes[name];\n }\n}\nvar SymbolLegend = 'symbol';\nvar DiscreteLegend = 'discrete';\nvar GradientLegend = 'gradient';\nvar defaultFormatter = function defaultFormatter(value) {\n return isArray(value) ? value.map(function (v) {\n return String(v);\n }) : String(value);\n};\nvar ascending = function ascending(a, b) {\n return a[1] - b[1];\n};\nvar descending = function descending(a, b) {\n return b[1] - a[1];\n};\n\n/**\n * Determine the tick count or interval function.\n * @param {Scale} scale - The scale for which to generate tick values.\n * @param {*} count - The desired tick count or interval specifier.\n * @param {number} minStep - The desired minimum step between tick values.\n * @return {*} - The tick count or interval function.\n */\nfunction tickCount(scale, count, minStep) {\n var step;\n if (isNumber(count)) {\n if (scale.bins) {\n count = Math.max(count, scale.bins.length);\n }\n if (minStep != null) {\n count = Math.min(count, Math.floor(span(scale.domain()) / minStep || 1));\n }\n }\n if (isObject(count)) {\n step = count.step;\n count = count.interval;\n }\n if (isString(count)) {\n count = scale.type === Time ? timeInterval(count) : scale.type == UTC ? utcInterval(count) : error('Only time and utc scales accept interval strings.');\n if (step) count = count.every(step);\n }\n return count;\n}\n\n/**\n * Filter a set of candidate tick values, ensuring that only tick values\n * that lie within the scale range are included.\n * @param {Scale} scale - The scale for which to generate tick values.\n * @param {Array<*>} ticks - The candidate tick values.\n * @param {*} count - The tick count or interval function.\n * @return {Array<*>} - The filtered tick values.\n */\nfunction validTicks(scale, ticks, count) {\n var range = scale.range(),\n lo = range[0],\n hi = peek(range),\n cmp = ascending;\n if (lo > hi) {\n range = hi;\n hi = lo;\n lo = range;\n cmp = descending;\n }\n lo = Math.floor(lo);\n hi = Math.ceil(hi);\n\n // filter ticks to valid values within the range\n // additionally sort ticks in range order (#2579)\n ticks = ticks.map(function (v) {\n return [v, scale(v)];\n }).filter(function (_) {\n return lo <= _[1] && _[1] <= hi;\n }).sort(cmp).map(function (_) {\n return _[0];\n });\n if (count > 0 && ticks.length > 1) {\n var endpoints = [ticks[0], peek(ticks)];\n while (ticks.length > count && ticks.length >= 3) {\n ticks = ticks.filter(function (_, i) {\n return !(i % 2);\n });\n }\n if (ticks.length < 3) {\n ticks = endpoints;\n }\n }\n return ticks;\n}\n\n/**\n * Generate tick values for the given scale and approximate tick count or\n * interval value. If the scale has a 'ticks' method, it will be used to\n * generate the ticks, with the count argument passed as a parameter. If the\n * scale lacks a 'ticks' method, the full scale domain will be returned.\n * @param {Scale} scale - The scale for which to generate tick values.\n * @param {*} [count] - The approximate number of desired ticks.\n * @return {Array<*>} - The generated tick values.\n */\nfunction tickValues(scale, count) {\n return scale.bins ? validTicks(scale, scale.bins) : scale.ticks ? scale.ticks(count) : scale.domain();\n}\n\n/**\n * Generate a label format function for a scale. If the scale has a\n * 'tickFormat' method, it will be used to generate the formatter, with the\n * count and specifier arguments passed as parameters. If the scale lacks a\n * 'tickFormat' method, the returned formatter performs simple string coercion.\n * If the input scale is a logarithmic scale and the format specifier does not\n * indicate a desired decimal precision, a special variable precision formatter\n * that automatically trims trailing zeroes will be generated.\n * @param {Scale} scale - The scale for which to generate the label formatter.\n * @param {*} [count] - The approximate number of desired ticks.\n * @param {string} [specifier] - The format specifier. Must be a legal d3\n * specifier string (see https://github.com/d3/d3-format#formatSpecifier) or\n * time multi-format specifier object.\n * @return {function(*):string} - The generated label formatter.\n */\nfunction tickFormat(locale, scale, count, specifier, formatType, noSkip) {\n var type = scale.type;\n var format = defaultFormatter;\n if (type === Time || formatType === Time) {\n format = locale.timeFormat(specifier);\n } else if (type === UTC || formatType === UTC) {\n format = locale.utcFormat(specifier);\n } else if (isLogarithmic(type)) {\n var varfmt = locale.formatFloat(specifier);\n if (noSkip || scale.bins) {\n format = varfmt;\n } else {\n var test = tickLog(scale, count, false);\n format = function format(_) {\n return test(_) ? varfmt(_) : '';\n };\n }\n } else if (scale.tickFormat) {\n // if d3 scale has tickFormat, it must be continuous\n var d = scale.domain();\n format = locale.formatSpan(d[0], d[d.length - 1], count, specifier);\n } else if (specifier) {\n format = locale.format(specifier);\n }\n return format;\n}\nfunction tickLog(scale, count, values) {\n var ticks = tickValues(scale, count),\n base = scale.base(),\n logb = Math.log(base),\n k = Math.max(1, base * count / ticks.length);\n\n // apply d3-scale's log format filter criteria\n var test = function test(d) {\n var i = d / Math.pow(base, Math.round(Math.log(d) / logb));\n if (i * base < base - 0.5) i *= base;\n return i <= k;\n };\n return values ? ticks.filter(test) : test;\n}\nvar symbols = (_symbols = {}, _defineProperty(_symbols, Quantile, 'quantiles'), _defineProperty(_symbols, Quantize, 'thresholds'), _defineProperty(_symbols, Threshold, 'domain'), _symbols);\nvar formats = (_formats = {}, _defineProperty(_formats, Quantile, 'quantiles'), _defineProperty(_formats, Quantize, 'domain'), _formats);\nfunction labelValues(scale, count) {\n return scale.bins ? binValues(scale.bins) : scale.type === Log ? tickLog(scale, count, true) : symbols[scale.type] ? thresholdValues(scale[symbols[scale.type]]()) : tickValues(scale, count);\n}\nfunction thresholdFormat(locale, scale, specifier) {\n var _ = scale[formats[scale.type]](),\n n = _.length;\n var d = n > 1 ? _[1] - _[0] : _[0],\n i;\n for (i = 1; i < n; ++i) {\n d = Math.min(d, _[i] - _[i - 1]);\n }\n\n // tickCount = 3 ticks times 10 for increased resolution\n return locale.formatSpan(0, d, 3 * 10, specifier);\n}\nfunction thresholdValues(thresholds) {\n var values = [-Infinity].concat(thresholds);\n values.max = +Infinity;\n return values;\n}\nfunction binValues(bins) {\n var values = bins.slice(0, -1);\n values.max = peek(bins);\n return values;\n}\nvar isDiscreteRange = function isDiscreteRange(scale) {\n return symbols[scale.type] || scale.bins;\n};\nfunction labelFormat(locale, scale, count, type, specifier, formatType, noSkip) {\n var format = formats[scale.type] && formatType !== Time && formatType !== UTC ? thresholdFormat(locale, scale, specifier) : tickFormat(locale, scale, count, specifier, formatType, noSkip);\n return type === SymbolLegend && isDiscreteRange(scale) ? formatRange(format) : type === DiscreteLegend ? formatDiscrete(format) : formatPoint(format);\n}\nvar formatRange = function formatRange(format) {\n return function (value, index, array) {\n var limit = get(array[index + 1], get(array.max, +Infinity)),\n lo = formatValue(value, format),\n hi = formatValue(limit, format);\n return lo && hi ? lo + \" \\u2013 \" + hi : hi ? '< ' + hi : \"\\u2265 \" + lo;\n };\n};\nvar get = function get(value, dflt) {\n return value != null ? value : dflt;\n};\nvar formatDiscrete = function formatDiscrete(format) {\n return function (value, index) {\n return index ? format(value) : null;\n };\n};\nvar formatPoint = function formatPoint(format) {\n return function (value) {\n return format(value);\n };\n};\nvar formatValue = function formatValue(value, format) {\n return Number.isFinite(value) ? format(value) : null;\n};\nfunction labelFraction(scale) {\n var domain = scale.domain(),\n count = domain.length - 1;\n var lo = +domain[0],\n hi = +peek(domain),\n span = hi - lo;\n if (scale.type === Threshold) {\n var adjust = count ? span / count : 0.1;\n lo -= adjust;\n hi += adjust;\n span = hi - lo;\n }\n return function (value) {\n return (value - lo) / span;\n };\n}\nfunction format(locale, scale, specifier, formatType) {\n var type = formatType || scale.type;\n\n // replace abbreviated time specifiers to improve screen reader experience\n if (isString(specifier) && isTemporal(type)) {\n specifier = specifier.replace(/%a/g, '%A').replace(/%b/g, '%B');\n }\n return !specifier && type === Time ? locale.timeFormat('%A, %d %B %Y, %X') : !specifier && type === UTC ? locale.utcFormat('%A, %d %B %Y, %X UTC') : labelFormat(locale, scale, 5, null, specifier, formatType, true);\n}\nfunction domainCaption(locale, scale, opt) {\n opt = opt || {};\n var max = Math.max(3, opt.maxlen || 7),\n fmt = format(locale, scale, opt.format, opt.formatType);\n\n // if scale breaks domain into bins, describe boundaries\n if (isDiscretizing(scale.type)) {\n var v = labelValues(scale).slice(1).map(fmt),\n n = v.length;\n return \"\".concat(n, \" boundar\").concat(n === 1 ? 'y' : 'ies', \": \").concat(v.join(', '));\n }\n\n // if scale domain is discrete, list values\n else if (isDiscrete(scale.type)) {\n var d = scale.domain(),\n _n = d.length,\n _v = _n > max ? d.slice(0, max - 2).map(fmt).join(', ') + ', ending with ' + d.slice(-1).map(fmt) : d.map(fmt).join(', ');\n return \"\".concat(_n, \" value\").concat(_n === 1 ? '' : 's', \": \").concat(_v);\n }\n\n // if scale domain is continuous, describe value range\n else {\n var _d = scale.domain();\n return \"values from \".concat(fmt(_d[0]), \" to \").concat(fmt(peek(_d)));\n }\n}\nexport { Band, BinOrdinal, DiscreteLegend, Diverging, GradientLegend, Identity, Linear, Log, Ordinal, Point, Pow, Quantile, Quantize, Sequential, Sqrt, SymbolLegend, Symlog, Threshold, Time, UTC, bandSpace, domainCaption, interpolate, interpolateColors, interpolateRange, isContinuous, isDiscrete, isDiscretizing, isInterpolating, isLogarithmic, isQuantile, isRegisteredScale, isTemporal, isValidScaleType, labelFormat, labelFraction, labelValues, quantizeInterpolator, registerScale, scale, scaleCopy, scaleFraction, scheme, tickCount, tickFormat, tickValues, validTicks };","export default function (interpolator, n) {\n var samples = new Array(n);\n for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n return samples;\n}","import { linearish } from \"./linear.js\";\nimport number from \"./number.js\";\nexport default function identity(domain) {\n var unknown;\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : x;\n }\n scale.invert = scale;\n scale.domain = scale.range = function (_) {\n return arguments.length ? (domain = Array.from(_, number), scale) : domain.slice();\n };\n scale.unknown = function (_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n scale.copy = function () {\n return identity(domain).unknown(unknown);\n };\n domain = arguments.length ? Array.from(domain, number) : [0, 1];\n return linearish(scale);\n}","import { utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcTicks, utcTickInterval } from \"d3-time\";\nimport { utcFormat } from \"d3-time-format\";\nimport { calendar } from \"./time.js\";\nimport { initRange } from \"./init.js\";\nexport default function utcTime() {\n return initRange.apply(calendar(utcTicks, utcTickInterval, utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport { bisect } from \"d3-array\";\nimport { linearish } from \"./linear.js\";\nimport { initRange } from \"./init.js\";\nexport default function quantize() {\n var x0 = 0,\n x1 = 1,\n n = 1,\n domain = [0.5],\n range = [0, 1],\n unknown;\n function scale(x) {\n return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n function rescale() {\n var i = -1;\n domain = new Array(n);\n while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n return scale;\n }\n scale.domain = function (_) {\n var _ref;\n return arguments.length ? ((_ref = _slicedToArray(_, 2), x0 = _ref[0], x1 = _ref[1]), x0 = +x0, x1 = +x1, rescale()) : [x0, x1];\n };\n scale.range = function (_) {\n return arguments.length ? (n = (range = Array.from(_)).length - 1, rescale()) : range.slice();\n };\n scale.invertExtent = function (y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : i < 1 ? [x0, domain[0]] : i >= n ? [domain[n - 1], x1] : [domain[i - 1], domain[i]];\n };\n scale.unknown = function (_) {\n return arguments.length ? (unknown = _, scale) : scale;\n };\n scale.thresholds = function () {\n return domain.slice();\n };\n scale.copy = function () {\n return quantize().domain([x0, x1]).range(range).unknown(unknown);\n };\n return initRange.apply(linearish(scale), arguments);\n}","import { bisect } from \"d3-array\";\nimport { initRange } from \"./init.js\";\nexport default function threshold() {\n var domain = [0.5],\n range = [0, 1],\n unknown,\n n = 1;\n function scale(x) {\n return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n scale.domain = function (_) {\n return arguments.length ? (domain = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n };\n scale.range = function (_) {\n return arguments.length ? (range = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n };\n scale.invertExtent = function (y) {\n var i = range.indexOf(y);\n return [domain[i - 1], domain[i]];\n };\n scale.unknown = function (_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n scale.copy = function () {\n return threshold().domain(domain).range(range).unknown(unknown);\n };\n return initRange.apply(scale, arguments);\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { hasOwnProperty, isFunction, inherits, truthy, lruCache, isArray, error, toSet, array, peek, extend, isNumber, isObject } from 'vega-util';\nimport { curveBasis, curveBasisClosed, curveBasisOpen, curveBundle, curveCardinal, curveCardinalOpen, curveCardinalClosed, curveCatmullRom, curveCatmullRomClosed, curveCatmullRomOpen, curveLinear, curveLinearClosed, curveMonotoneY, curveMonotoneX, curveNatural, curveStep, curveStepAfter, curveStepBefore, arc as arc$2, area as area$2, line as line$2, symbol as symbol$2 } from 'd3-shape';\nimport { path as path$3 } from 'd3-path';\nexport { path } from 'd3-path';\nimport { image as image$1, canvas } from 'vega-canvas';\nimport { loader } from 'vega-loader';\nimport { isDiscrete, domainCaption } from 'vega-scale';\nvar gradient_id = 0;\nfunction resetSVGGradientId() {\n gradient_id = 0;\n}\nvar patternPrefix = 'p_';\nfunction isGradient(value) {\n return value && value.gradient;\n}\nfunction gradientRef(g, defs, base) {\n var type = g.gradient;\n var id = g.id,\n prefix = type === 'radial' ? patternPrefix : '';\n\n // check id, assign default values as needed\n if (!id) {\n id = g.id = 'gradient_' + gradient_id++;\n if (type === 'radial') {\n g.x1 = get(g.x1, 0.5);\n g.y1 = get(g.y1, 0.5);\n g.r1 = get(g.r1, 0);\n g.x2 = get(g.x2, 0.5);\n g.y2 = get(g.y2, 0.5);\n g.r2 = get(g.r2, 0.5);\n prefix = patternPrefix;\n } else {\n g.x1 = get(g.x1, 0);\n g.y1 = get(g.y1, 0);\n g.x2 = get(g.x2, 1);\n g.y2 = get(g.y2, 0);\n }\n }\n\n // register definition\n defs[id] = g;\n\n // return url reference\n return 'url(' + (base || '') + '#' + prefix + id + ')';\n}\nfunction get(val, def) {\n return val != null ? val : def;\n}\nfunction Gradient(p0, p1) {\n var stops = [],\n gradient;\n return gradient = {\n gradient: 'linear',\n x1: p0 ? p0[0] : 0,\n y1: p0 ? p0[1] : 0,\n x2: p1 ? p1[0] : 1,\n y2: p1 ? p1[1] : 0,\n stops: stops,\n stop: function stop(offset, color) {\n stops.push({\n offset: offset,\n color: color\n });\n return gradient;\n }\n };\n}\nvar lookup = {\n 'basis': {\n curve: curveBasis\n },\n 'basis-closed': {\n curve: curveBasisClosed\n },\n 'basis-open': {\n curve: curveBasisOpen\n },\n 'bundle': {\n curve: curveBundle,\n tension: 'beta',\n value: 0.85\n },\n 'cardinal': {\n curve: curveCardinal,\n tension: 'tension',\n value: 0\n },\n 'cardinal-open': {\n curve: curveCardinalOpen,\n tension: 'tension',\n value: 0\n },\n 'cardinal-closed': {\n curve: curveCardinalClosed,\n tension: 'tension',\n value: 0\n },\n 'catmull-rom': {\n curve: curveCatmullRom,\n tension: 'alpha',\n value: 0.5\n },\n 'catmull-rom-closed': {\n curve: curveCatmullRomClosed,\n tension: 'alpha',\n value: 0.5\n },\n 'catmull-rom-open': {\n curve: curveCatmullRomOpen,\n tension: 'alpha',\n value: 0.5\n },\n 'linear': {\n curve: curveLinear\n },\n 'linear-closed': {\n curve: curveLinearClosed\n },\n 'monotone': {\n horizontal: curveMonotoneY,\n vertical: curveMonotoneX\n },\n 'natural': {\n curve: curveNatural\n },\n 'step': {\n curve: curveStep\n },\n 'step-after': {\n curve: curveStepAfter\n },\n 'step-before': {\n curve: curveStepBefore\n }\n};\nfunction curves(type, orientation, tension) {\n var entry = hasOwnProperty(lookup, type) && lookup[type],\n curve = null;\n if (entry) {\n curve = entry.curve || entry[orientation || 'vertical'];\n if (entry.tension && tension != null) {\n curve = curve[entry.tension](tension);\n }\n }\n return curve;\n}\nvar paramCounts = {\n m: 2,\n l: 2,\n h: 1,\n v: 1,\n z: 0,\n c: 6,\n s: 4,\n q: 4,\n t: 2,\n a: 7\n};\nvar commandPattern = /[mlhvzcsqta]([^mlhvzcsqta]+|$)/gi;\nvar numberPattern = /^[+-]?(([0-9]*\\.[0-9]+)|([0-9]+\\.)|([0-9]+))([eE][+-]?[0-9]+)?/;\nvar spacePattern = /^((\\s+,?\\s*)|(,\\s*))/;\nvar flagPattern = /^[01]/;\nfunction parse(path) {\n var commands = [];\n var matches = path.match(commandPattern) || [];\n matches.forEach(function (str) {\n var cmd = str[0];\n var type = cmd.toLowerCase();\n\n // parse parameters\n var paramCount = paramCounts[type];\n var params = parseParams(type, paramCount, str.slice(1).trim());\n var count = params.length;\n\n // error checking based on parameter count\n if (count < paramCount || count && count % paramCount !== 0) {\n throw Error('Invalid SVG path, incorrect parameter count');\n }\n\n // register the command\n commands.push([cmd].concat(_toConsumableArray(params.slice(0, paramCount))));\n\n // exit now if we're done, also handles zero-param 'z'\n if (count === paramCount) {\n return;\n }\n\n // handle implicit line-to\n if (type === 'm') {\n cmd = cmd === 'M' ? 'L' : 'l';\n }\n\n // repeat command when given extended param list\n for (var i = paramCount; i < count; i += paramCount) {\n commands.push([cmd].concat(_toConsumableArray(params.slice(i, i + paramCount))));\n }\n });\n return commands;\n}\nfunction parseParams(type, paramCount, segment) {\n var params = [];\n for (var index = 0; paramCount && index < segment.length;) {\n for (var i = 0; i < paramCount; ++i) {\n var pattern = type === 'a' && (i === 3 || i === 4) ? flagPattern : numberPattern;\n var match = segment.slice(index).match(pattern);\n if (match === null) {\n throw Error('Invalid SVG path, incorrect parameter type');\n }\n index += match[0].length;\n params.push(+match[0]);\n var ws = segment.slice(index).match(spacePattern);\n if (ws !== null) {\n index += ws[0].length;\n }\n }\n }\n return params;\n}\nvar DegToRad = Math.PI / 180;\nvar Epsilon = 1e-14;\nvar HalfPi = Math.PI / 2;\nvar Tau = Math.PI * 2;\nvar HalfSqrt3 = Math.sqrt(3) / 2;\nvar segmentCache = {};\nvar bezierCache = {};\nvar join = [].join;\n\n// Copied from Inkscape svgtopdf, thanks!\nfunction segments(x, y, rx, ry, large, sweep, rotateX, ox, oy) {\n var key = join.call(arguments);\n if (segmentCache[key]) {\n return segmentCache[key];\n }\n var th = rotateX * DegToRad;\n var sin_th = Math.sin(th);\n var cos_th = Math.cos(th);\n rx = Math.abs(rx);\n ry = Math.abs(ry);\n var px = cos_th * (ox - x) * 0.5 + sin_th * (oy - y) * 0.5;\n var py = cos_th * (oy - y) * 0.5 - sin_th * (ox - x) * 0.5;\n var pl = px * px / (rx * rx) + py * py / (ry * ry);\n if (pl > 1) {\n pl = Math.sqrt(pl);\n rx *= pl;\n ry *= pl;\n }\n var a00 = cos_th / rx;\n var a01 = sin_th / rx;\n var a10 = -sin_th / ry;\n var a11 = cos_th / ry;\n var x0 = a00 * ox + a01 * oy;\n var y0 = a10 * ox + a11 * oy;\n var x1 = a00 * x + a01 * y;\n var y1 = a10 * x + a11 * y;\n var d = (x1 - x0) * (x1 - x0) + (y1 - y0) * (y1 - y0);\n var sfactor_sq = 1 / d - 0.25;\n if (sfactor_sq < 0) sfactor_sq = 0;\n var sfactor = Math.sqrt(sfactor_sq);\n if (sweep == large) sfactor = -sfactor;\n var xc = 0.5 * (x0 + x1) - sfactor * (y1 - y0);\n var yc = 0.5 * (y0 + y1) + sfactor * (x1 - x0);\n var th0 = Math.atan2(y0 - yc, x0 - xc);\n var th1 = Math.atan2(y1 - yc, x1 - xc);\n var th_arc = th1 - th0;\n if (th_arc < 0 && sweep === 1) {\n th_arc += Tau;\n } else if (th_arc > 0 && sweep === 0) {\n th_arc -= Tau;\n }\n var segs = Math.ceil(Math.abs(th_arc / (HalfPi + 0.001)));\n var result = [];\n for (var i = 0; i < segs; ++i) {\n var th2 = th0 + i * th_arc / segs;\n var th3 = th0 + (i + 1) * th_arc / segs;\n result[i] = [xc, yc, th2, th3, rx, ry, sin_th, cos_th];\n }\n return segmentCache[key] = result;\n}\nfunction bezier(params) {\n var key = join.call(params);\n if (bezierCache[key]) {\n return bezierCache[key];\n }\n var cx = params[0],\n cy = params[1],\n th0 = params[2],\n th1 = params[3],\n rx = params[4],\n ry = params[5],\n sin_th = params[6],\n cos_th = params[7];\n var a00 = cos_th * rx;\n var a01 = -sin_th * ry;\n var a10 = sin_th * rx;\n var a11 = cos_th * ry;\n var cos_th0 = Math.cos(th0);\n var sin_th0 = Math.sin(th0);\n var cos_th1 = Math.cos(th1);\n var sin_th1 = Math.sin(th1);\n var th_half = 0.5 * (th1 - th0);\n var sin_th_h2 = Math.sin(th_half * 0.5);\n var t = 8 / 3 * sin_th_h2 * sin_th_h2 / Math.sin(th_half);\n var x1 = cx + cos_th0 - t * sin_th0;\n var y1 = cy + sin_th0 + t * cos_th0;\n var x3 = cx + cos_th1;\n var y3 = cy + sin_th1;\n var x2 = x3 + t * sin_th1;\n var y2 = y3 - t * cos_th1;\n return bezierCache[key] = [a00 * x1 + a01 * y1, a10 * x1 + a11 * y1, a00 * x2 + a01 * y2, a10 * x2 + a11 * y2, a00 * x3 + a01 * y3, a10 * x3 + a11 * y3];\n}\nvar temp = ['l', 0, 0, 0, 0, 0, 0, 0];\nfunction scale$1(current, sX, sY) {\n var c = temp[0] = current[0];\n if (c === 'a' || c === 'A') {\n temp[1] = sX * current[1];\n temp[2] = sY * current[2];\n temp[3] = current[3];\n temp[4] = current[4];\n temp[5] = current[5];\n temp[6] = sX * current[6];\n temp[7] = sY * current[7];\n } else if (c === 'h' || c === 'H') {\n temp[1] = sX * current[1];\n } else if (c === 'v' || c === 'V') {\n temp[1] = sY * current[1];\n } else {\n for (var i = 1, n = current.length; i < n; ++i) {\n temp[i] = (i % 2 == 1 ? sX : sY) * current[i];\n }\n }\n return temp;\n}\nfunction pathRender(context, path, l, t, sX, sY) {\n var current,\n // current instruction\n previous = null,\n x = 0,\n // current x\n y = 0,\n // current y\n controlX = 0,\n // current control point x\n controlY = 0,\n // current control point y\n tempX,\n tempY,\n tempControlX,\n tempControlY,\n anchorX = 0,\n anchorY = 0;\n if (l == null) l = 0;\n if (t == null) t = 0;\n if (sX == null) sX = 1;\n if (sY == null) sY = sX;\n if (context.beginPath) context.beginPath();\n for (var i = 0, len = path.length; i < len; ++i) {\n current = path[i];\n if (sX !== 1 || sY !== 1) {\n current = scale$1(current, sX, sY);\n }\n switch (current[0]) {\n // first letter\n\n case 'l':\n // lineto, relative\n x += current[1];\n y += current[2];\n context.lineTo(x + l, y + t);\n break;\n case 'L':\n // lineto, absolute\n x = current[1];\n y = current[2];\n context.lineTo(x + l, y + t);\n break;\n case 'h':\n // horizontal lineto, relative\n x += current[1];\n context.lineTo(x + l, y + t);\n break;\n case 'H':\n // horizontal lineto, absolute\n x = current[1];\n context.lineTo(x + l, y + t);\n break;\n case 'v':\n // vertical lineto, relative\n y += current[1];\n context.lineTo(x + l, y + t);\n break;\n case 'V':\n // verical lineto, absolute\n y = current[1];\n context.lineTo(x + l, y + t);\n break;\n case 'm':\n // moveTo, relative\n x += current[1];\n y += current[2];\n anchorX = x;\n anchorY = y;\n context.moveTo(x + l, y + t);\n break;\n case 'M':\n // moveTo, absolute\n x = current[1];\n y = current[2];\n anchorX = x;\n anchorY = y;\n context.moveTo(x + l, y + t);\n break;\n case 'c':\n // bezierCurveTo, relative\n tempX = x + current[5];\n tempY = y + current[6];\n controlX = x + current[3];\n controlY = y + current[4];\n context.bezierCurveTo(x + current[1] + l,\n // x1\n y + current[2] + t,\n // y1\n controlX + l,\n // x2\n controlY + t,\n // y2\n tempX + l, tempY + t);\n x = tempX;\n y = tempY;\n break;\n case 'C':\n // bezierCurveTo, absolute\n x = current[5];\n y = current[6];\n controlX = current[3];\n controlY = current[4];\n context.bezierCurveTo(current[1] + l, current[2] + t, controlX + l, controlY + t, x + l, y + t);\n break;\n case 's':\n // shorthand cubic bezierCurveTo, relative\n // transform to absolute x,y\n tempX = x + current[3];\n tempY = y + current[4];\n // calculate reflection of previous control points\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n context.bezierCurveTo(controlX + l, controlY + t, x + current[1] + l, y + current[2] + t, tempX + l, tempY + t);\n\n // set control point to 2nd one of this command\n // the first control point is assumed to be the reflection of\n // the second control point on the previous command relative\n // to the current point.\n controlX = x + current[1];\n controlY = y + current[2];\n x = tempX;\n y = tempY;\n break;\n case 'S':\n // shorthand cubic bezierCurveTo, absolute\n tempX = current[3];\n tempY = current[4];\n // calculate reflection of previous control points\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n context.bezierCurveTo(controlX + l, controlY + t, current[1] + l, current[2] + t, tempX + l, tempY + t);\n x = tempX;\n y = tempY;\n // set control point to 2nd one of this command\n // the first control point is assumed to be the reflection of\n // the second control point on the previous command relative\n // to the current point.\n controlX = current[1];\n controlY = current[2];\n break;\n case 'q':\n // quadraticCurveTo, relative\n // transform to absolute x,y\n tempX = x + current[3];\n tempY = y + current[4];\n controlX = x + current[1];\n controlY = y + current[2];\n context.quadraticCurveTo(controlX + l, controlY + t, tempX + l, tempY + t);\n x = tempX;\n y = tempY;\n break;\n case 'Q':\n // quadraticCurveTo, absolute\n tempX = current[3];\n tempY = current[4];\n context.quadraticCurveTo(current[1] + l, current[2] + t, tempX + l, tempY + t);\n x = tempX;\n y = tempY;\n controlX = current[1];\n controlY = current[2];\n break;\n case 't':\n // shorthand quadraticCurveTo, relative\n\n // transform to absolute x,y\n tempX = x + current[1];\n tempY = y + current[2];\n if (previous[0].match(/[QqTt]/) === null) {\n // If there is no previous command or if the previous command was not a Q, q, T or t,\n // assume the control point is coincident with the current point\n controlX = x;\n controlY = y;\n } else if (previous[0] === 't') {\n // calculate reflection of previous control points for t\n controlX = 2 * x - tempControlX;\n controlY = 2 * y - tempControlY;\n } else if (previous[0] === 'q') {\n // calculate reflection of previous control points for q\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n }\n tempControlX = controlX;\n tempControlY = controlY;\n context.quadraticCurveTo(controlX + l, controlY + t, tempX + l, tempY + t);\n x = tempX;\n y = tempY;\n controlX = x + current[1];\n controlY = y + current[2];\n break;\n case 'T':\n tempX = current[1];\n tempY = current[2];\n\n // calculate reflection of previous control points\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n context.quadraticCurveTo(controlX + l, controlY + t, tempX + l, tempY + t);\n x = tempX;\n y = tempY;\n break;\n case 'a':\n drawArc(context, x + l, y + t, [current[1], current[2], current[3], current[4], current[5], current[6] + x + l, current[7] + y + t]);\n x += current[6];\n y += current[7];\n break;\n case 'A':\n drawArc(context, x + l, y + t, [current[1], current[2], current[3], current[4], current[5], current[6] + l, current[7] + t]);\n x = current[6];\n y = current[7];\n break;\n case 'z':\n case 'Z':\n x = anchorX;\n y = anchorY;\n context.closePath();\n break;\n }\n previous = current;\n }\n}\nfunction drawArc(context, x, y, coords) {\n var seg = segments(coords[5],\n // end x\n coords[6],\n // end y\n coords[0],\n // radius x\n coords[1],\n // radius y\n coords[3],\n // large flag\n coords[4],\n // sweep flag\n coords[2],\n // rotation\n x, y);\n for (var i = 0; i < seg.length; ++i) {\n var bez = bezier(seg[i]);\n context.bezierCurveTo(bez[0], bez[1], bez[2], bez[3], bez[4], bez[5]);\n }\n}\nvar Tan30 = 0.5773502691896257;\nvar builtins = {\n 'circle': {\n draw: function draw(context, size) {\n var r = Math.sqrt(size) / 2;\n context.moveTo(r, 0);\n context.arc(0, 0, r, 0, Tau);\n }\n },\n 'cross': {\n draw: function draw(context, size) {\n var r = Math.sqrt(size) / 2,\n s = r / 2.5;\n context.moveTo(-r, -s);\n context.lineTo(-r, s);\n context.lineTo(-s, s);\n context.lineTo(-s, r);\n context.lineTo(s, r);\n context.lineTo(s, s);\n context.lineTo(r, s);\n context.lineTo(r, -s);\n context.lineTo(s, -s);\n context.lineTo(s, -r);\n context.lineTo(-s, -r);\n context.lineTo(-s, -s);\n context.closePath();\n }\n },\n 'diamond': {\n draw: function draw(context, size) {\n var r = Math.sqrt(size) / 2;\n context.moveTo(-r, 0);\n context.lineTo(0, -r);\n context.lineTo(r, 0);\n context.lineTo(0, r);\n context.closePath();\n }\n },\n 'square': {\n draw: function draw(context, size) {\n var w = Math.sqrt(size),\n x = -w / 2;\n context.rect(x, x, w, w);\n }\n },\n 'arrow': {\n draw: function draw(context, size) {\n var r = Math.sqrt(size) / 2,\n s = r / 7,\n t = r / 2.5,\n v = r / 8;\n context.moveTo(-s, r);\n context.lineTo(s, r);\n context.lineTo(s, -v);\n context.lineTo(t, -v);\n context.lineTo(0, -r);\n context.lineTo(-t, -v);\n context.lineTo(-s, -v);\n context.closePath();\n }\n },\n 'wedge': {\n draw: function draw(context, size) {\n var r = Math.sqrt(size) / 2,\n h = HalfSqrt3 * r,\n o = h - r * Tan30,\n b = r / 4;\n context.moveTo(0, -h - o);\n context.lineTo(-b, h - o);\n context.lineTo(b, h - o);\n context.closePath();\n }\n },\n 'triangle': {\n draw: function draw(context, size) {\n var r = Math.sqrt(size) / 2,\n h = HalfSqrt3 * r,\n o = h - r * Tan30;\n context.moveTo(0, -h - o);\n context.lineTo(-r, h - o);\n context.lineTo(r, h - o);\n context.closePath();\n }\n },\n 'triangle-up': {\n draw: function draw(context, size) {\n var r = Math.sqrt(size) / 2,\n h = HalfSqrt3 * r;\n context.moveTo(0, -h);\n context.lineTo(-r, h);\n context.lineTo(r, h);\n context.closePath();\n }\n },\n 'triangle-down': {\n draw: function draw(context, size) {\n var r = Math.sqrt(size) / 2,\n h = HalfSqrt3 * r;\n context.moveTo(0, h);\n context.lineTo(-r, -h);\n context.lineTo(r, -h);\n context.closePath();\n }\n },\n 'triangle-right': {\n draw: function draw(context, size) {\n var r = Math.sqrt(size) / 2,\n h = HalfSqrt3 * r;\n context.moveTo(h, 0);\n context.lineTo(-h, -r);\n context.lineTo(-h, r);\n context.closePath();\n }\n },\n 'triangle-left': {\n draw: function draw(context, size) {\n var r = Math.sqrt(size) / 2,\n h = HalfSqrt3 * r;\n context.moveTo(-h, 0);\n context.lineTo(h, -r);\n context.lineTo(h, r);\n context.closePath();\n }\n },\n 'stroke': {\n draw: function draw(context, size) {\n var r = Math.sqrt(size) / 2;\n context.moveTo(-r, 0);\n context.lineTo(r, 0);\n }\n }\n};\nfunction symbols(_) {\n return hasOwnProperty(builtins, _) ? builtins[_] : customSymbol(_);\n}\nvar custom = {};\nfunction customSymbol(path) {\n if (!hasOwnProperty(custom, path)) {\n var parsed = parse(path);\n custom[path] = {\n draw: function draw(context, size) {\n pathRender(context, parsed, 0, 0, Math.sqrt(size) / 2);\n }\n };\n }\n return custom[path];\n}\n\n// See http://spencermortensen.com/articles/bezier-circle/\nvar C = 0.448084975506; // C = 1 - c\n\nfunction rectangleX(d) {\n return d.x;\n}\nfunction rectangleY(d) {\n return d.y;\n}\nfunction rectangleWidth(d) {\n return d.width;\n}\nfunction rectangleHeight(d) {\n return d.height;\n}\nfunction number(_) {\n return typeof _ === 'function' ? _ : function () {\n return +_;\n };\n}\nfunction clamp(value, min, max) {\n return Math.max(min, Math.min(value, max));\n}\nfunction vg_rect() {\n var x = rectangleX,\n y = rectangleY,\n width = rectangleWidth,\n height = rectangleHeight,\n crTL = number(0),\n crTR = crTL,\n crBL = crTL,\n crBR = crTL,\n context = null;\n function rectangle(_, x0, y0) {\n var buffer,\n x1 = x0 != null ? x0 : +x.call(this, _),\n y1 = y0 != null ? y0 : +y.call(this, _),\n w = +width.call(this, _),\n h = +height.call(this, _),\n s = Math.min(w, h) / 2,\n tl = clamp(+crTL.call(this, _), 0, s),\n tr = clamp(+crTR.call(this, _), 0, s),\n bl = clamp(+crBL.call(this, _), 0, s),\n br = clamp(+crBR.call(this, _), 0, s);\n if (!context) context = buffer = path$3();\n if (tl <= 0 && tr <= 0 && bl <= 0 && br <= 0) {\n context.rect(x1, y1, w, h);\n } else {\n var x2 = x1 + w,\n y2 = y1 + h;\n context.moveTo(x1 + tl, y1);\n context.lineTo(x2 - tr, y1);\n context.bezierCurveTo(x2 - C * tr, y1, x2, y1 + C * tr, x2, y1 + tr);\n context.lineTo(x2, y2 - br);\n context.bezierCurveTo(x2, y2 - C * br, x2 - C * br, y2, x2 - br, y2);\n context.lineTo(x1 + bl, y2);\n context.bezierCurveTo(x1 + C * bl, y2, x1, y2 - C * bl, x1, y2 - bl);\n context.lineTo(x1, y1 + tl);\n context.bezierCurveTo(x1, y1 + C * tl, x1 + C * tl, y1, x1 + tl, y1);\n context.closePath();\n }\n if (buffer) {\n context = null;\n return buffer + '' || null;\n }\n }\n rectangle.x = function (_) {\n if (arguments.length) {\n x = number(_);\n return rectangle;\n } else {\n return x;\n }\n };\n rectangle.y = function (_) {\n if (arguments.length) {\n y = number(_);\n return rectangle;\n } else {\n return y;\n }\n };\n rectangle.width = function (_) {\n if (arguments.length) {\n width = number(_);\n return rectangle;\n } else {\n return width;\n }\n };\n rectangle.height = function (_) {\n if (arguments.length) {\n height = number(_);\n return rectangle;\n } else {\n return height;\n }\n };\n rectangle.cornerRadius = function (tl, tr, br, bl) {\n if (arguments.length) {\n crTL = number(tl);\n crTR = tr != null ? number(tr) : crTL;\n crBR = br != null ? number(br) : crTL;\n crBL = bl != null ? number(bl) : crTR;\n return rectangle;\n } else {\n return crTL;\n }\n };\n rectangle.context = function (_) {\n if (arguments.length) {\n context = _ == null ? null : _;\n return rectangle;\n } else {\n return context;\n }\n };\n return rectangle;\n}\nfunction vg_trail() {\n var x,\n y,\n size,\n defined,\n context = null,\n ready,\n x1,\n y1,\n r1;\n function point(x2, y2, w2) {\n var r2 = w2 / 2;\n if (ready) {\n var ux = y1 - y2,\n uy = x2 - x1;\n if (ux || uy) {\n // get normal vector\n var ud = Math.sqrt(ux * ux + uy * uy),\n rx = (ux /= ud) * r1,\n ry = (uy /= ud) * r1,\n t = Math.atan2(uy, ux);\n\n // draw segment\n context.moveTo(x1 - rx, y1 - ry);\n context.lineTo(x2 - ux * r2, y2 - uy * r2);\n context.arc(x2, y2, r2, t - Math.PI, t);\n context.lineTo(x1 + rx, y1 + ry);\n context.arc(x1, y1, r1, t, t + Math.PI);\n } else {\n context.arc(x2, y2, r2, 0, Tau);\n }\n context.closePath();\n } else {\n ready = 1;\n }\n x1 = x2;\n y1 = y2;\n r1 = r2;\n }\n function trail(data) {\n var i,\n n = data.length,\n d,\n defined0 = false,\n buffer;\n if (context == null) context = buffer = path$3();\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) ready = 0;\n }\n if (defined0) point(+x(d, i, data), +y(d, i, data), +size(d, i, data));\n }\n if (buffer) {\n context = null;\n return buffer + '' || null;\n }\n }\n trail.x = function (_) {\n if (arguments.length) {\n x = _;\n return trail;\n } else {\n return x;\n }\n };\n trail.y = function (_) {\n if (arguments.length) {\n y = _;\n return trail;\n } else {\n return y;\n }\n };\n trail.size = function (_) {\n if (arguments.length) {\n size = _;\n return trail;\n } else {\n return size;\n }\n };\n trail.defined = function (_) {\n if (arguments.length) {\n defined = _;\n return trail;\n } else {\n return defined;\n }\n };\n trail.context = function (_) {\n if (arguments.length) {\n if (_ == null) {\n context = null;\n } else {\n context = _;\n }\n return trail;\n } else {\n return context;\n }\n };\n return trail;\n}\nfunction value$1(a, b) {\n return a != null ? a : b;\n}\nvar x = function x(item) {\n return item.x || 0;\n },\n y = function y(item) {\n return item.y || 0;\n },\n w = function w(item) {\n return item.width || 0;\n },\n h = function h(item) {\n return item.height || 0;\n },\n xw = function xw(item) {\n return (item.x || 0) + (item.width || 0);\n },\n yh = function yh(item) {\n return (item.y || 0) + (item.height || 0);\n },\n sa = function sa(item) {\n return item.startAngle || 0;\n },\n ea = function ea(item) {\n return item.endAngle || 0;\n },\n pa = function pa(item) {\n return item.padAngle || 0;\n },\n ir = function ir(item) {\n return item.innerRadius || 0;\n },\n or = function or(item) {\n return item.outerRadius || 0;\n },\n cr = function cr(item) {\n return item.cornerRadius || 0;\n },\n tl = function tl(item) {\n return value$1(item.cornerRadiusTopLeft, item.cornerRadius) || 0;\n },\n tr = function tr(item) {\n return value$1(item.cornerRadiusTopRight, item.cornerRadius) || 0;\n },\n br = function br(item) {\n return value$1(item.cornerRadiusBottomRight, item.cornerRadius) || 0;\n },\n bl = function bl(item) {\n return value$1(item.cornerRadiusBottomLeft, item.cornerRadius) || 0;\n },\n sz = function sz(item) {\n return value$1(item.size, 64);\n },\n ts = function ts(item) {\n return item.size || 1;\n },\n def = function def(item) {\n return !(item.defined === false);\n },\n type = function type(item) {\n return symbols(item.shape || 'circle');\n };\nvar arcShape = arc$2().startAngle(sa).endAngle(ea).padAngle(pa).innerRadius(ir).outerRadius(or).cornerRadius(cr),\n areavShape = area$2().x(x).y1(y).y0(yh).defined(def),\n areahShape = area$2().y(y).x1(x).x0(xw).defined(def),\n lineShape = line$2().x(x).y(y).defined(def),\n rectShape = vg_rect().x(x).y(y).width(w).height(h).cornerRadius(tl, tr, br, bl),\n symbolShape = symbol$2().type(type).size(sz),\n trailShape = vg_trail().x(x).y(y).defined(def).size(ts);\nfunction hasCornerRadius(item) {\n return item.cornerRadius || item.cornerRadiusTopLeft || item.cornerRadiusTopRight || item.cornerRadiusBottomRight || item.cornerRadiusBottomLeft;\n}\nfunction arc$1(context, item) {\n return arcShape.context(context)(item);\n}\nfunction area$1(context, items) {\n var item = items[0],\n interp = item.interpolate || 'linear';\n return (item.orient === 'horizontal' ? areahShape : areavShape).curve(curves(interp, item.orient, item.tension)).context(context)(items);\n}\nfunction line$1(context, items) {\n var item = items[0],\n interp = item.interpolate || 'linear';\n return lineShape.curve(curves(interp, item.orient, item.tension)).context(context)(items);\n}\nfunction rectangle(context, item, x, y) {\n return rectShape.context(context)(item, x, y);\n}\nfunction shape$1(context, item) {\n return (item.mark.shape || item.shape).context(context)(item);\n}\nfunction symbol$1(context, item) {\n return symbolShape.context(context)(item);\n}\nfunction trail$1(context, items) {\n return trailShape.context(context)(items);\n}\nvar clip_id = 1;\nfunction resetSVGClipId() {\n clip_id = 1;\n}\nfunction clip$1(renderer, item, size) {\n var clip = item.clip,\n defs = renderer._defs,\n id = item.clip_id || (item.clip_id = 'clip' + clip_id++),\n c = defs.clipping[id] || (defs.clipping[id] = {\n id: id\n });\n if (isFunction(clip)) {\n c.path = clip(null);\n } else if (hasCornerRadius(size)) {\n c.path = rectangle(null, size, 0, 0);\n } else {\n c.width = size.width || 0;\n c.height = size.height || 0;\n }\n return 'url(#' + id + ')';\n}\nfunction Bounds(b) {\n this.clear();\n if (b) this.union(b);\n}\nBounds.prototype = {\n clone: function clone() {\n return new Bounds(this);\n },\n clear: function clear() {\n this.x1 = +Number.MAX_VALUE;\n this.y1 = +Number.MAX_VALUE;\n this.x2 = -Number.MAX_VALUE;\n this.y2 = -Number.MAX_VALUE;\n return this;\n },\n empty: function empty() {\n return this.x1 === +Number.MAX_VALUE && this.y1 === +Number.MAX_VALUE && this.x2 === -Number.MAX_VALUE && this.y2 === -Number.MAX_VALUE;\n },\n equals: function equals(b) {\n return this.x1 === b.x1 && this.y1 === b.y1 && this.x2 === b.x2 && this.y2 === b.y2;\n },\n set: function set(x1, y1, x2, y2) {\n if (x2 < x1) {\n this.x2 = x1;\n this.x1 = x2;\n } else {\n this.x1 = x1;\n this.x2 = x2;\n }\n if (y2 < y1) {\n this.y2 = y1;\n this.y1 = y2;\n } else {\n this.y1 = y1;\n this.y2 = y2;\n }\n return this;\n },\n add: function add(x, y) {\n if (x < this.x1) this.x1 = x;\n if (y < this.y1) this.y1 = y;\n if (x > this.x2) this.x2 = x;\n if (y > this.y2) this.y2 = y;\n return this;\n },\n expand: function expand(d) {\n this.x1 -= d;\n this.y1 -= d;\n this.x2 += d;\n this.y2 += d;\n return this;\n },\n round: function round() {\n this.x1 = Math.floor(this.x1);\n this.y1 = Math.floor(this.y1);\n this.x2 = Math.ceil(this.x2);\n this.y2 = Math.ceil(this.y2);\n return this;\n },\n scale: function scale(s) {\n this.x1 *= s;\n this.y1 *= s;\n this.x2 *= s;\n this.y2 *= s;\n return this;\n },\n translate: function translate(dx, dy) {\n this.x1 += dx;\n this.x2 += dx;\n this.y1 += dy;\n this.y2 += dy;\n return this;\n },\n rotate: function rotate(angle, x, y) {\n var p = this.rotatedPoints(angle, x, y);\n return this.clear().add(p[0], p[1]).add(p[2], p[3]).add(p[4], p[5]).add(p[6], p[7]);\n },\n rotatedPoints: function rotatedPoints(angle, x, y) {\n var x1 = this.x1,\n y1 = this.y1,\n x2 = this.x2,\n y2 = this.y2,\n cos = Math.cos(angle),\n sin = Math.sin(angle),\n cx = x - x * cos + y * sin,\n cy = y - x * sin - y * cos;\n return [cos * x1 - sin * y1 + cx, sin * x1 + cos * y1 + cy, cos * x1 - sin * y2 + cx, sin * x1 + cos * y2 + cy, cos * x2 - sin * y1 + cx, sin * x2 + cos * y1 + cy, cos * x2 - sin * y2 + cx, sin * x2 + cos * y2 + cy];\n },\n union: function union(b) {\n if (b.x1 < this.x1) this.x1 = b.x1;\n if (b.y1 < this.y1) this.y1 = b.y1;\n if (b.x2 > this.x2) this.x2 = b.x2;\n if (b.y2 > this.y2) this.y2 = b.y2;\n return this;\n },\n intersect: function intersect(b) {\n if (b.x1 > this.x1) this.x1 = b.x1;\n if (b.y1 > this.y1) this.y1 = b.y1;\n if (b.x2 < this.x2) this.x2 = b.x2;\n if (b.y2 < this.y2) this.y2 = b.y2;\n return this;\n },\n encloses: function encloses(b) {\n return b && this.x1 <= b.x1 && this.x2 >= b.x2 && this.y1 <= b.y1 && this.y2 >= b.y2;\n },\n alignsWith: function alignsWith(b) {\n return b && (this.x1 == b.x1 || this.x2 == b.x2 || this.y1 == b.y1 || this.y2 == b.y2);\n },\n intersects: function intersects(b) {\n return b && !(this.x2 < b.x1 || this.x1 > b.x2 || this.y2 < b.y1 || this.y1 > b.y2);\n },\n contains: function contains(x, y) {\n return !(x < this.x1 || x > this.x2 || y < this.y1 || y > this.y2);\n },\n width: function width() {\n return this.x2 - this.x1;\n },\n height: function height() {\n return this.y2 - this.y1;\n }\n};\nfunction Item(mark) {\n this.mark = mark;\n this.bounds = this.bounds || new Bounds();\n}\nfunction GroupItem(mark) {\n Item.call(this, mark);\n this.items = this.items || [];\n}\ninherits(GroupItem, Item);\nfunction ResourceLoader(customLoader) {\n this._pending = 0;\n this._loader = customLoader || loader();\n}\nfunction increment(loader) {\n loader._pending += 1;\n}\nfunction decrement(loader) {\n loader._pending -= 1;\n}\nResourceLoader.prototype = {\n pending: function pending() {\n return this._pending;\n },\n sanitizeURL: function sanitizeURL(uri) {\n var loader = this;\n increment(loader);\n return loader._loader.sanitize(uri, {\n context: 'href'\n }).then(function (opt) {\n decrement(loader);\n return opt;\n }).catch(function () {\n decrement(loader);\n return null;\n });\n },\n loadImage: function loadImage(uri) {\n var loader = this,\n Image = image$1();\n increment(loader);\n return loader._loader.sanitize(uri, {\n context: 'image'\n }).then(function (opt) {\n var url = opt.href;\n if (!url || !Image) throw {\n url: url\n };\n var img = new Image();\n\n // set crossOrigin only if cors is defined; empty string sets anonymous mode\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/crossOrigin\n var cors = hasOwnProperty(opt, 'crossOrigin') ? opt.crossOrigin : 'anonymous';\n if (cors != null) img.crossOrigin = cors;\n\n // attempt to load image resource\n img.onload = function () {\n return decrement(loader);\n };\n img.onerror = function () {\n return decrement(loader);\n };\n img.src = url;\n return img;\n }).catch(function (e) {\n decrement(loader);\n return {\n complete: false,\n width: 0,\n height: 0,\n src: e && e.url || ''\n };\n });\n },\n ready: function ready() {\n var loader = this;\n return new Promise(function (accept) {\n function poll(value) {\n if (!loader.pending()) accept(value);else setTimeout(function () {\n poll(true);\n }, 10);\n }\n poll(false);\n });\n }\n};\nfunction boundStroke(bounds, item, miter) {\n if (item.stroke && item.opacity !== 0 && item.strokeOpacity !== 0) {\n var sw = item.strokeWidth != null ? +item.strokeWidth : 1;\n bounds.expand(sw + (miter ? miterAdjustment(item, sw) : 0));\n }\n return bounds;\n}\nfunction miterAdjustment(item, strokeWidth) {\n // TODO: more sophisticated adjustment? Or miter support in boundContext?\n return item.strokeJoin && item.strokeJoin !== 'miter' ? 0 : strokeWidth;\n}\nvar circleThreshold = Tau - 1e-8;\nvar bounds, lx, ly, rot, ma, mb, mc, md;\nvar add = function add(x, y) {\n return bounds.add(x, y);\n};\nvar addL = function addL(x, y) {\n return add(lx = x, ly = y);\n};\nvar addX = function addX(x) {\n return add(x, bounds.y1);\n};\nvar addY = function addY(y) {\n return add(bounds.x1, y);\n};\nvar px = function px(x, y) {\n return ma * x + mc * y;\n};\nvar py = function py(x, y) {\n return mb * x + md * y;\n};\nvar addp = function addp(x, y) {\n return add(px(x, y), py(x, y));\n};\nvar addpL = function addpL(x, y) {\n return addL(px(x, y), py(x, y));\n};\nfunction boundContext(_, deg) {\n bounds = _;\n if (deg) {\n rot = deg * DegToRad;\n ma = md = Math.cos(rot);\n mb = Math.sin(rot);\n mc = -mb;\n } else {\n ma = md = 1;\n rot = mb = mc = 0;\n }\n return context$1;\n}\nvar context$1 = {\n beginPath: function beginPath() {},\n closePath: function closePath() {},\n moveTo: addpL,\n lineTo: addpL,\n rect: function rect(x, y, w, h) {\n if (rot) {\n addp(x + w, y);\n addp(x + w, y + h);\n addp(x, y + h);\n addpL(x, y);\n } else {\n add(x + w, y + h);\n addL(x, y);\n }\n },\n quadraticCurveTo: function quadraticCurveTo(x1, y1, x2, y2) {\n var px1 = px(x1, y1),\n py1 = py(x1, y1),\n px2 = px(x2, y2),\n py2 = py(x2, y2);\n quadExtrema(lx, px1, px2, addX);\n quadExtrema(ly, py1, py2, addY);\n addL(px2, py2);\n },\n bezierCurveTo: function bezierCurveTo(x1, y1, x2, y2, x3, y3) {\n var px1 = px(x1, y1),\n py1 = py(x1, y1),\n px2 = px(x2, y2),\n py2 = py(x2, y2),\n px3 = px(x3, y3),\n py3 = py(x3, y3);\n cubicExtrema(lx, px1, px2, px3, addX);\n cubicExtrema(ly, py1, py2, py3, addY);\n addL(px3, py3);\n },\n arc: function arc(cx, cy, r, sa, ea, ccw) {\n sa += rot;\n ea += rot;\n\n // store last point on path\n lx = r * Math.cos(ea) + cx;\n ly = r * Math.sin(ea) + cy;\n if (Math.abs(ea - sa) > circleThreshold) {\n // treat as full circle\n add(cx - r, cy - r);\n add(cx + r, cy + r);\n } else {\n var update = function update(a) {\n return add(r * Math.cos(a) + cx, r * Math.sin(a) + cy);\n };\n var s, i;\n\n // sample end points\n update(sa);\n update(ea);\n\n // sample interior points aligned with 90 degrees\n if (ea !== sa) {\n sa = sa % Tau;\n if (sa < 0) sa += Tau;\n ea = ea % Tau;\n if (ea < 0) ea += Tau;\n if (ea < sa) {\n ccw = !ccw; // flip direction\n s = sa;\n sa = ea;\n ea = s; // swap end-points\n }\n\n if (ccw) {\n ea -= Tau;\n s = sa - sa % HalfPi;\n for (i = 0; i < 4 && s > ea; ++i, s -= HalfPi) update(s);\n } else {\n s = sa - sa % HalfPi + HalfPi;\n for (i = 0; i < 4 && s < ea; ++i, s = s + HalfPi) update(s);\n }\n }\n }\n }\n};\nfunction quadExtrema(x0, x1, x2, cb) {\n var t = (x0 - x1) / (x0 + x2 - 2 * x1);\n if (0 < t && t < 1) cb(x0 + (x1 - x0) * t);\n}\nfunction cubicExtrema(x0, x1, x2, x3, cb) {\n var a = x3 - x0 + 3 * x1 - 3 * x2,\n b = x0 + x2 - 2 * x1,\n c = x0 - x1;\n var t0 = 0,\n t1 = 0,\n r;\n\n // solve for parameter t\n if (Math.abs(a) > Epsilon) {\n // quadratic equation\n r = b * b + c * a;\n if (r >= 0) {\n r = Math.sqrt(r);\n t0 = (-b + r) / a;\n t1 = (-b - r) / a;\n }\n } else {\n // linear equation\n t0 = 0.5 * c / b;\n }\n\n // calculate position\n if (0 < t0 && t0 < 1) cb(cubic(t0, x0, x1, x2, x3));\n if (0 < t1 && t1 < 1) cb(cubic(t1, x0, x1, x2, x3));\n}\nfunction cubic(t, x0, x1, x2, x3) {\n var s = 1 - t,\n s2 = s * s,\n t2 = t * t;\n return s2 * s * x0 + 3 * s2 * t * x1 + 3 * s * t2 * x2 + t2 * t * x3;\n}\nvar context = (context = canvas(1, 1)) ? context.getContext('2d') : null;\nvar b = new Bounds();\nfunction intersectPath(draw) {\n return function (item, brush) {\n // rely on (inaccurate) bounds intersection if no context\n if (!context) return true;\n\n // add path to offscreen graphics context\n draw(context, item);\n\n // get bounds intersection region\n b.clear().union(item.bounds).intersect(brush).round();\n var x1 = b.x1,\n y1 = b.y1,\n x2 = b.x2,\n y2 = b.y2;\n\n // iterate over intersection region\n // perform fine grained inclusion test\n for (var _y = y1; _y <= y2; ++_y) {\n for (var _x = x1; _x <= x2; ++_x) {\n if (context.isPointInPath(_x, _y)) {\n return true;\n }\n }\n }\n\n // false if no hits in intersection region\n return false;\n };\n}\nfunction intersectPoint(item, box) {\n return box.contains(item.x || 0, item.y || 0);\n}\nfunction intersectRect(item, box) {\n var x = item.x || 0,\n y = item.y || 0,\n w = item.width || 0,\n h = item.height || 0;\n return box.intersects(b.set(x, y, x + w, y + h));\n}\nfunction intersectRule(item, box) {\n var x = item.x || 0,\n y = item.y || 0,\n x2 = item.x2 != null ? item.x2 : x,\n y2 = item.y2 != null ? item.y2 : y;\n return intersectBoxLine(box, x, y, x2, y2);\n}\nfunction intersectBoxLine(box, x, y, u, v) {\n var x1 = box.x1,\n y1 = box.y1,\n x2 = box.x2,\n y2 = box.y2,\n dx = u - x,\n dy = v - y;\n var t0 = 0,\n t1 = 1,\n p,\n q,\n r,\n e;\n for (e = 0; e < 4; ++e) {\n if (e === 0) {\n p = -dx;\n q = -(x1 - x);\n }\n if (e === 1) {\n p = dx;\n q = x2 - x;\n }\n if (e === 2) {\n p = -dy;\n q = -(y1 - y);\n }\n if (e === 3) {\n p = dy;\n q = y2 - y;\n }\n if (Math.abs(p) < 1e-10 && q < 0) return false;\n r = q / p;\n if (p < 0) {\n if (r > t1) return false;else if (r > t0) t0 = r;\n } else if (p > 0) {\n if (r < t0) return false;else if (r < t1) t1 = r;\n }\n }\n return true;\n}\nfunction blend(context, item) {\n context.globalCompositeOperation = item.blend || 'source-over';\n}\nfunction value(value, dflt) {\n return value == null ? dflt : value;\n}\nfunction addStops(gradient, stops) {\n var n = stops.length;\n for (var i = 0; i < n; ++i) {\n gradient.addColorStop(stops[i].offset, stops[i].color);\n }\n return gradient;\n}\nfunction gradient(context, spec, bounds) {\n var w = bounds.width(),\n h = bounds.height();\n var gradient;\n if (spec.gradient === 'radial') {\n gradient = context.createRadialGradient(bounds.x1 + value(spec.x1, 0.5) * w, bounds.y1 + value(spec.y1, 0.5) * h, Math.max(w, h) * value(spec.r1, 0), bounds.x1 + value(spec.x2, 0.5) * w, bounds.y1 + value(spec.y2, 0.5) * h, Math.max(w, h) * value(spec.r2, 0.5));\n } else {\n // linear gradient\n var x1 = value(spec.x1, 0),\n y1 = value(spec.y1, 0),\n x2 = value(spec.x2, 1),\n y2 = value(spec.y2, 0);\n if (x1 === x2 || y1 === y2 || w === h) {\n // axis aligned: use normal gradient\n gradient = context.createLinearGradient(bounds.x1 + x1 * w, bounds.y1 + y1 * h, bounds.x1 + x2 * w, bounds.y1 + y2 * h);\n } else {\n // not axis aligned: render gradient into a pattern (#2365)\n // this allows us to use normalized bounding box coordinates\n var _image = canvas(Math.ceil(w), Math.ceil(h)),\n ictx = _image.getContext('2d');\n ictx.scale(w, h);\n ictx.fillStyle = addStops(ictx.createLinearGradient(x1, y1, x2, y2), spec.stops);\n ictx.fillRect(0, 0, w, h);\n return context.createPattern(_image, 'no-repeat');\n }\n }\n return addStops(gradient, spec.stops);\n}\nfunction color(context, item, value) {\n return isGradient(value) ? gradient(context, value, item.bounds) : value;\n}\nfunction fill(context, item, opacity) {\n opacity *= item.fillOpacity == null ? 1 : item.fillOpacity;\n if (opacity > 0) {\n context.globalAlpha = opacity;\n context.fillStyle = color(context, item, item.fill);\n return true;\n } else {\n return false;\n }\n}\nvar Empty = [];\nfunction stroke(context, item, opacity) {\n var lw = (lw = item.strokeWidth) != null ? lw : 1;\n if (lw <= 0) return false;\n opacity *= item.strokeOpacity == null ? 1 : item.strokeOpacity;\n if (opacity > 0) {\n context.globalAlpha = opacity;\n context.strokeStyle = color(context, item, item.stroke);\n context.lineWidth = lw;\n context.lineCap = item.strokeCap || 'butt';\n context.lineJoin = item.strokeJoin || 'miter';\n context.miterLimit = item.strokeMiterLimit || 10;\n if (context.setLineDash) {\n context.setLineDash(item.strokeDash || Empty);\n context.lineDashOffset = item.strokeDashOffset || 0;\n }\n return true;\n } else {\n return false;\n }\n}\nfunction compare(a, b) {\n return a.zindex - b.zindex || a.index - b.index;\n}\nfunction zorder(scene) {\n if (!scene.zdirty) return scene.zitems;\n var items = scene.items,\n output = [],\n item,\n i,\n n;\n for (i = 0, n = items.length; i < n; ++i) {\n item = items[i];\n item.index = i;\n if (item.zindex) output.push(item);\n }\n scene.zdirty = false;\n return scene.zitems = output.sort(compare);\n}\nfunction visit(scene, visitor) {\n var items = scene.items,\n i,\n n;\n if (!items || !items.length) return;\n var zitems = zorder(scene);\n if (zitems && zitems.length) {\n for (i = 0, n = items.length; i < n; ++i) {\n if (!items[i].zindex) visitor(items[i]);\n }\n items = zitems;\n }\n for (i = 0, n = items.length; i < n; ++i) {\n visitor(items[i]);\n }\n}\nfunction pickVisit(scene, visitor) {\n var items = scene.items,\n hit,\n i;\n if (!items || !items.length) return null;\n var zitems = zorder(scene);\n if (zitems && zitems.length) items = zitems;\n for (i = items.length; --i >= 0;) {\n if (hit = visitor(items[i])) return hit;\n }\n if (items === zitems) {\n for (items = scene.items, i = items.length; --i >= 0;) {\n if (!items[i].zindex) {\n if (hit = visitor(items[i])) return hit;\n }\n }\n }\n return null;\n}\nfunction drawAll(path) {\n return function (context, scene, bounds) {\n visit(scene, function (item) {\n if (!bounds || bounds.intersects(item.bounds)) {\n drawPath(path, context, item, item);\n }\n });\n };\n}\nfunction drawOne(path) {\n return function (context, scene, bounds) {\n if (scene.items.length && (!bounds || bounds.intersects(scene.bounds))) {\n drawPath(path, context, scene.items[0], scene.items);\n }\n };\n}\nfunction drawPath(path, context, item, items) {\n var opacity = item.opacity == null ? 1 : item.opacity;\n if (opacity === 0) return;\n if (path(context, items)) return;\n blend(context, item);\n if (item.fill && fill(context, item, opacity)) {\n context.fill();\n }\n if (item.stroke && stroke(context, item, opacity)) {\n context.stroke();\n }\n}\nfunction pick$1(test) {\n test = test || truthy;\n return function (context, scene, x, y, gx, gy) {\n x *= context.pixelRatio;\n y *= context.pixelRatio;\n return pickVisit(scene, function (item) {\n var b = item.bounds;\n // first hit test against bounding box\n if (b && !b.contains(gx, gy) || !b) return;\n // if in bounding box, perform more careful test\n if (test(context, item, x, y, gx, gy)) return item;\n });\n };\n}\nfunction hitPath(path, filled) {\n return function (context, o, x, y) {\n var item = Array.isArray(o) ? o[0] : o,\n fill = filled == null ? item.fill : filled,\n stroke = item.stroke && context.isPointInStroke,\n lw,\n lc;\n if (stroke) {\n lw = item.strokeWidth;\n lc = item.strokeCap;\n context.lineWidth = lw != null ? lw : 1;\n context.lineCap = lc != null ? lc : 'butt';\n }\n return path(context, o) ? false : fill && context.isPointInPath(x, y) || stroke && context.isPointInStroke(x, y);\n };\n}\nfunction pickPath(path) {\n return pick$1(hitPath(path));\n}\nfunction translate(x, y) {\n return 'translate(' + x + ',' + y + ')';\n}\nfunction rotate(a) {\n return 'rotate(' + a + ')';\n}\nfunction scale(scaleX, scaleY) {\n return 'scale(' + scaleX + ',' + scaleY + ')';\n}\nfunction translateItem(item) {\n return translate(item.x || 0, item.y || 0);\n}\nfunction rotateItem(item) {\n return translate(item.x || 0, item.y || 0) + (item.angle ? ' ' + rotate(item.angle) : '');\n}\nfunction transformItem(item) {\n return translate(item.x || 0, item.y || 0) + (item.angle ? ' ' + rotate(item.angle) : '') + (item.scaleX || item.scaleY ? ' ' + scale(item.scaleX || 1, item.scaleY || 1) : '');\n}\nfunction markItemPath(type, shape, isect) {\n function attr(emit, item) {\n emit('transform', rotateItem(item));\n emit('d', shape(null, item));\n }\n function bound(bounds, item) {\n shape(boundContext(bounds, item.angle), item);\n return boundStroke(bounds, item).translate(item.x || 0, item.y || 0);\n }\n function draw(context, item) {\n var x = item.x || 0,\n y = item.y || 0,\n a = item.angle || 0;\n context.translate(x, y);\n if (a) context.rotate(a *= DegToRad);\n context.beginPath();\n shape(context, item);\n if (a) context.rotate(-a);\n context.translate(-x, -y);\n }\n return {\n type: type,\n tag: 'path',\n nested: false,\n attr: attr,\n bound: bound,\n draw: drawAll(draw),\n pick: pickPath(draw),\n isect: isect || intersectPath(draw)\n };\n}\nvar arc = markItemPath('arc', arc$1);\nfunction pickArea(a, p) {\n var v = a[0].orient === 'horizontal' ? p[1] : p[0],\n z = a[0].orient === 'horizontal' ? 'y' : 'x',\n i = a.length,\n min = +Infinity,\n hit,\n d;\n while (--i >= 0) {\n if (a[i].defined === false) continue;\n d = Math.abs(a[i][z] - v);\n if (d < min) {\n min = d;\n hit = a[i];\n }\n }\n return hit;\n}\nfunction pickLine(a, p) {\n var t = Math.pow(a[0].strokeWidth || 1, 2),\n i = a.length,\n dx,\n dy,\n dd;\n while (--i >= 0) {\n if (a[i].defined === false) continue;\n dx = a[i].x - p[0];\n dy = a[i].y - p[1];\n dd = dx * dx + dy * dy;\n if (dd < t) return a[i];\n }\n return null;\n}\nfunction pickTrail(a, p) {\n var i = a.length,\n dx,\n dy,\n dd;\n while (--i >= 0) {\n if (a[i].defined === false) continue;\n dx = a[i].x - p[0];\n dy = a[i].y - p[1];\n dd = dx * dx + dy * dy;\n dx = a[i].size || 1;\n if (dd < dx * dx) return a[i];\n }\n return null;\n}\nfunction markMultiItemPath(type, shape, tip) {\n function attr(emit, item) {\n var items = item.mark.items;\n if (items.length) emit('d', shape(null, items));\n }\n function bound(bounds, mark) {\n var items = mark.items;\n if (items.length === 0) {\n return bounds;\n } else {\n shape(boundContext(bounds), items);\n return boundStroke(bounds, items[0]);\n }\n }\n function draw(context, items) {\n context.beginPath();\n shape(context, items);\n }\n var hit = hitPath(draw);\n function pick(context, scene, x, y, gx, gy) {\n var items = scene.items,\n b = scene.bounds;\n if (!items || !items.length || b && !b.contains(gx, gy)) {\n return null;\n }\n x *= context.pixelRatio;\n y *= context.pixelRatio;\n return hit(context, items, x, y) ? items[0] : null;\n }\n return {\n type: type,\n tag: 'path',\n nested: true,\n attr: attr,\n bound: bound,\n draw: drawOne(draw),\n pick: pick,\n isect: intersectPoint,\n tip: tip\n };\n}\nvar area = markMultiItemPath('area', area$1, pickArea);\nfunction clip(context, scene) {\n var clip = scene.clip;\n context.save();\n if (isFunction(clip)) {\n context.beginPath();\n clip(context);\n context.clip();\n } else {\n clipGroup(context, scene.group);\n }\n}\nfunction clipGroup(context, group) {\n context.beginPath();\n hasCornerRadius(group) ? rectangle(context, group, 0, 0) : context.rect(0, 0, group.width || 0, group.height || 0);\n context.clip();\n}\nfunction offset$1(item) {\n var sw = value(item.strokeWidth, 1);\n return item.strokeOffset != null ? item.strokeOffset : item.stroke && sw > 0.5 && sw < 1.5 ? 0.5 - Math.abs(sw - 1) : 0;\n}\nfunction attr$5(emit, item) {\n emit('transform', translateItem(item));\n}\nfunction emitRectangle(emit, item) {\n var off = offset$1(item);\n emit('d', rectangle(null, item, off, off));\n}\nfunction background(emit, item) {\n emit('class', 'background');\n emit('aria-hidden', true);\n emitRectangle(emit, item);\n}\nfunction foreground(emit, item) {\n emit('class', 'foreground');\n emit('aria-hidden', true);\n if (item.strokeForeground) {\n emitRectangle(emit, item);\n } else {\n emit('d', '');\n }\n}\nfunction content(emit, item, renderer) {\n var url = item.clip ? clip$1(renderer, item, item) : null;\n emit('clip-path', url);\n}\nfunction bound$5(bounds, group) {\n if (!group.clip && group.items) {\n var items = group.items,\n m = items.length;\n for (var j = 0; j < m; ++j) {\n bounds.union(items[j].bounds);\n }\n }\n if ((group.clip || group.width || group.height) && !group.noBound) {\n bounds.add(0, 0).add(group.width || 0, group.height || 0);\n }\n boundStroke(bounds, group);\n return bounds.translate(group.x || 0, group.y || 0);\n}\nfunction rectanglePath(context, group, x, y) {\n var off = offset$1(group);\n context.beginPath();\n rectangle(context, group, (x || 0) + off, (y || 0) + off);\n}\nvar hitBackground = hitPath(rectanglePath);\nvar hitForeground = hitPath(rectanglePath, false);\nvar hitCorner = hitPath(rectanglePath, true);\nfunction draw$4(context, scene, bounds) {\n var _this = this;\n visit(scene, function (group) {\n var gx = group.x || 0,\n gy = group.y || 0,\n fore = group.strokeForeground,\n opacity = group.opacity == null ? 1 : group.opacity;\n\n // draw group background\n if ((group.stroke || group.fill) && opacity) {\n rectanglePath(context, group, gx, gy);\n blend(context, group);\n if (group.fill && fill(context, group, opacity)) {\n context.fill();\n }\n if (group.stroke && !fore && stroke(context, group, opacity)) {\n context.stroke();\n }\n }\n\n // setup graphics context, set clip and bounds\n context.save();\n context.translate(gx, gy);\n if (group.clip) clipGroup(context, group);\n if (bounds) bounds.translate(-gx, -gy);\n\n // draw group contents\n visit(group, function (item) {\n _this.draw(context, item, bounds);\n });\n\n // restore graphics context\n if (bounds) bounds.translate(gx, gy);\n context.restore();\n\n // draw group foreground\n if (fore && group.stroke && opacity) {\n rectanglePath(context, group, gx, gy);\n blend(context, group);\n if (stroke(context, group, opacity)) {\n context.stroke();\n }\n }\n });\n}\nfunction pick(context, scene, x, y, gx, gy) {\n var _this2 = this;\n if (scene.bounds && !scene.bounds.contains(gx, gy) || !scene.items) {\n return null;\n }\n var cx = x * context.pixelRatio,\n cy = y * context.pixelRatio;\n return pickVisit(scene, function (group) {\n var hit, dx, dy;\n\n // first hit test bounding box\n var b = group.bounds;\n if (b && !b.contains(gx, gy)) return;\n\n // passed bounds check, test rectangular clip\n dx = group.x || 0;\n dy = group.y || 0;\n var dw = dx + (group.width || 0),\n dh = dy + (group.height || 0),\n c = group.clip;\n if (c && (gx < dx || gx > dw || gy < dy || gy > dh)) return;\n\n // adjust coordinate system\n context.save();\n context.translate(dx, dy);\n dx = gx - dx;\n dy = gy - dy;\n\n // test background for rounded corner clip\n if (c && hasCornerRadius(group) && !hitCorner(context, group, cx, cy)) {\n context.restore();\n return null;\n }\n var fore = group.strokeForeground,\n ix = scene.interactive !== false;\n\n // hit test against group foreground\n if (ix && fore && group.stroke && hitForeground(context, group, cx, cy)) {\n context.restore();\n return group;\n }\n\n // hit test against contained marks\n hit = pickVisit(group, function (mark) {\n return pickMark(mark, dx, dy) ? _this2.pick(mark, x, y, dx, dy) : null;\n });\n\n // hit test against group background\n if (!hit && ix && (group.fill || !fore && group.stroke) && hitBackground(context, group, cx, cy)) {\n hit = group;\n }\n\n // restore state and return\n context.restore();\n return hit || null;\n });\n}\nfunction pickMark(mark, x, y) {\n return (mark.interactive !== false || mark.marktype === 'group') && mark.bounds && mark.bounds.contains(x, y);\n}\nvar group = {\n type: 'group',\n tag: 'g',\n nested: false,\n attr: attr$5,\n bound: bound$5,\n draw: draw$4,\n pick: pick,\n isect: intersectRect,\n content: content,\n background: background,\n foreground: foreground\n};\nvar metadata = {\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'xmlns:xlink': 'http://www.w3.org/1999/xlink',\n 'version': '1.1'\n};\nfunction getImage(item, renderer) {\n var image = item.image;\n if (!image || item.url && item.url !== image.url) {\n image = {\n complete: false,\n width: 0,\n height: 0\n };\n renderer.loadImage(item.url).then(function (image) {\n item.image = image;\n item.image.url = item.url;\n });\n }\n return image;\n}\nfunction imageWidth(item, image) {\n return item.width != null ? item.width : !image || !image.width ? 0 : item.aspect !== false && item.height ? item.height * image.width / image.height : image.width;\n}\nfunction imageHeight(item, image) {\n return item.height != null ? item.height : !image || !image.height ? 0 : item.aspect !== false && item.width ? item.width * image.height / image.width : image.height;\n}\nfunction imageXOffset(align, w) {\n return align === 'center' ? w / 2 : align === 'right' ? w : 0;\n}\nfunction imageYOffset(baseline, h) {\n return baseline === 'middle' ? h / 2 : baseline === 'bottom' ? h : 0;\n}\nfunction attr$4(emit, item, renderer) {\n var img = getImage(item, renderer),\n w = imageWidth(item, img),\n h = imageHeight(item, img),\n x = (item.x || 0) - imageXOffset(item.align, w),\n y = (item.y || 0) - imageYOffset(item.baseline, h),\n i = !img.src && img.toDataURL ? img.toDataURL() : img.src || '';\n emit('href', i, metadata['xmlns:xlink'], 'xlink:href');\n emit('transform', translate(x, y));\n emit('width', w);\n emit('height', h);\n emit('preserveAspectRatio', item.aspect === false ? 'none' : 'xMidYMid');\n}\nfunction bound$4(bounds, item) {\n var img = item.image,\n w = imageWidth(item, img),\n h = imageHeight(item, img),\n x = (item.x || 0) - imageXOffset(item.align, w),\n y = (item.y || 0) - imageYOffset(item.baseline, h);\n return bounds.set(x, y, x + w, y + h);\n}\nfunction draw$3(context, scene, bounds) {\n var _this3 = this;\n visit(scene, function (item) {\n if (bounds && !bounds.intersects(item.bounds)) return; // bounds check\n\n var img = getImage(item, _this3);\n var w = imageWidth(item, img);\n var h = imageHeight(item, img);\n if (w === 0 || h === 0) return; // early exit\n\n var x = (item.x || 0) - imageXOffset(item.align, w),\n y = (item.y || 0) - imageYOffset(item.baseline, h),\n opacity,\n ar0,\n ar1,\n t;\n if (item.aspect !== false) {\n ar0 = img.width / img.height;\n ar1 = item.width / item.height;\n if (ar0 === ar0 && ar1 === ar1 && ar0 !== ar1) {\n if (ar1 < ar0) {\n t = w / ar0;\n y += (h - t) / 2;\n h = t;\n } else {\n t = h * ar0;\n x += (w - t) / 2;\n w = t;\n }\n }\n }\n if (img.complete || img.toDataURL) {\n blend(context, item);\n context.globalAlpha = (opacity = item.opacity) != null ? opacity : 1;\n context.imageSmoothingEnabled = item.smooth !== false;\n context.drawImage(img, x, y, w, h);\n }\n });\n}\nvar image = {\n type: 'image',\n tag: 'image',\n nested: false,\n attr: attr$4,\n bound: bound$4,\n draw: draw$3,\n pick: pick$1(),\n isect: truthy,\n // bounds check is sufficient\n get: getImage,\n xOffset: imageXOffset,\n yOffset: imageYOffset\n};\nvar line = markMultiItemPath('line', line$1, pickLine);\nfunction attr$3(emit, item) {\n var sx = item.scaleX || 1,\n sy = item.scaleY || 1;\n if (sx !== 1 || sy !== 1) {\n emit('vector-effect', 'non-scaling-stroke');\n }\n emit('transform', transformItem(item));\n emit('d', item.path);\n}\nfunction path$1(context, item) {\n var path = item.path;\n if (path == null) return true;\n var x = item.x || 0,\n y = item.y || 0,\n sx = item.scaleX || 1,\n sy = item.scaleY || 1,\n a = (item.angle || 0) * DegToRad,\n cache = item.pathCache;\n if (!cache || cache.path !== path) {\n (item.pathCache = cache = parse(path)).path = path;\n }\n if (a && context.rotate && context.translate) {\n context.translate(x, y);\n context.rotate(a);\n pathRender(context, cache, 0, 0, sx, sy);\n context.rotate(-a);\n context.translate(-x, -y);\n } else {\n pathRender(context, cache, x, y, sx, sy);\n }\n}\nfunction bound$3(bounds, item) {\n return path$1(boundContext(bounds, item.angle), item) ? bounds.set(0, 0, 0, 0) : boundStroke(bounds, item, true);\n}\nvar path$2 = {\n type: 'path',\n tag: 'path',\n nested: false,\n attr: attr$3,\n bound: bound$3,\n draw: drawAll(path$1),\n pick: pickPath(path$1),\n isect: intersectPath(path$1)\n};\nfunction attr$2(emit, item) {\n emit('d', rectangle(null, item));\n}\nfunction bound$2(bounds, item) {\n var x, y;\n return boundStroke(bounds.set(x = item.x || 0, y = item.y || 0, x + item.width || 0, y + item.height || 0), item);\n}\nfunction draw$2(context, item) {\n context.beginPath();\n rectangle(context, item);\n}\nvar rect = {\n type: 'rect',\n tag: 'path',\n nested: false,\n attr: attr$2,\n bound: bound$2,\n draw: drawAll(draw$2),\n pick: pickPath(draw$2),\n isect: intersectRect\n};\nfunction attr$1(emit, item) {\n emit('transform', translateItem(item));\n emit('x2', item.x2 != null ? item.x2 - (item.x || 0) : 0);\n emit('y2', item.y2 != null ? item.y2 - (item.y || 0) : 0);\n}\nfunction bound$1(bounds, item) {\n var x1, y1;\n return boundStroke(bounds.set(x1 = item.x || 0, y1 = item.y || 0, item.x2 != null ? item.x2 : x1, item.y2 != null ? item.y2 : y1), item);\n}\nfunction path(context, item, opacity) {\n var x1, y1, x2, y2;\n if (item.stroke && stroke(context, item, opacity)) {\n x1 = item.x || 0;\n y1 = item.y || 0;\n x2 = item.x2 != null ? item.x2 : x1;\n y2 = item.y2 != null ? item.y2 : y1;\n context.beginPath();\n context.moveTo(x1, y1);\n context.lineTo(x2, y2);\n return true;\n }\n return false;\n}\nfunction draw$1(context, scene, bounds) {\n visit(scene, function (item) {\n if (bounds && !bounds.intersects(item.bounds)) return; // bounds check\n var opacity = item.opacity == null ? 1 : item.opacity;\n if (opacity && path(context, item, opacity)) {\n blend(context, item);\n context.stroke();\n }\n });\n}\nfunction hit$1(context, item, x, y) {\n if (!context.isPointInStroke) return false;\n return path(context, item, 1) && context.isPointInStroke(x, y);\n}\nvar rule = {\n type: 'rule',\n tag: 'line',\n nested: false,\n attr: attr$1,\n bound: bound$1,\n draw: draw$1,\n pick: pick$1(hit$1),\n isect: intersectRule\n};\nvar shape = markItemPath('shape', shape$1);\nvar symbol = markItemPath('symbol', symbol$1, intersectPoint);\n\n// memoize text width measurement\nvar widthCache = lruCache();\nvar textMetrics = {\n height: fontSize,\n measureWidth: measureWidth,\n estimateWidth: estimateWidth,\n width: estimateWidth,\n canvas: useCanvas\n};\nuseCanvas(true);\nfunction useCanvas(use) {\n textMetrics.width = use && context ? measureWidth : estimateWidth;\n}\n\n// make simple estimate if no canvas is available\nfunction estimateWidth(item, text) {\n return _estimateWidth(textValue(item, text), fontSize(item));\n}\nfunction _estimateWidth(text, currentFontHeight) {\n return ~~(0.8 * text.length * currentFontHeight);\n}\n\n// measure text width if canvas is available\nfunction measureWidth(item, text) {\n return fontSize(item) <= 0 || !(text = textValue(item, text)) ? 0 : _measureWidth(text, font(item));\n}\nfunction _measureWidth(text, currentFont) {\n var key = \"(\".concat(currentFont, \") \").concat(text);\n var width = widthCache.get(key);\n if (width === undefined) {\n context.font = currentFont;\n width = context.measureText(text).width;\n widthCache.set(key, width);\n }\n return width;\n}\nfunction fontSize(item) {\n return item.fontSize != null ? +item.fontSize || 0 : 11;\n}\nfunction lineHeight(item) {\n return item.lineHeight != null ? item.lineHeight : fontSize(item) + 2;\n}\nfunction lineArray(_) {\n return isArray(_) ? _.length > 1 ? _ : _[0] : _;\n}\nfunction textLines(item) {\n return lineArray(item.lineBreak && item.text && !isArray(item.text) ? item.text.split(item.lineBreak) : item.text);\n}\nfunction multiLineOffset(item) {\n var tl = textLines(item);\n return (isArray(tl) ? tl.length - 1 : 0) * lineHeight(item);\n}\nfunction textValue(item, line) {\n var text = line == null ? '' : (line + '').trim();\n return item.limit > 0 && text.length ? truncate(item, text) : text;\n}\nfunction widthGetter(item) {\n if (textMetrics.width === measureWidth) {\n // we are using canvas\n var currentFont = font(item);\n return function (text) {\n return _measureWidth(text, currentFont);\n };\n } else {\n // we are relying on estimates\n var currentFontHeight = fontSize(item);\n return function (text) {\n return _estimateWidth(text, currentFontHeight);\n };\n }\n}\nfunction truncate(item, text) {\n var limit = +item.limit,\n width = widthGetter(item);\n if (width(text) < limit) return text;\n var ellipsis = item.ellipsis || \"\\u2026\",\n rtl = item.dir === 'rtl',\n lo = 0,\n hi = text.length,\n mid;\n limit -= width(ellipsis);\n if (rtl) {\n while (lo < hi) {\n mid = lo + hi >>> 1;\n if (width(text.slice(mid)) > limit) lo = mid + 1;else hi = mid;\n }\n return ellipsis + text.slice(lo);\n } else {\n while (lo < hi) {\n mid = 1 + (lo + hi >>> 1);\n if (width(text.slice(0, mid)) < limit) lo = mid;else hi = mid - 1;\n }\n return text.slice(0, lo) + ellipsis;\n }\n}\nfunction fontFamily(item, quote) {\n var font = item.font;\n return (quote && font ? String(font).replace(/\"/g, '\\'') : font) || 'sans-serif';\n}\nfunction font(item, quote) {\n return '' + (item.fontStyle ? item.fontStyle + ' ' : '') + (item.fontVariant ? item.fontVariant + ' ' : '') + (item.fontWeight ? item.fontWeight + ' ' : '') + fontSize(item) + 'px ' + fontFamily(item, quote);\n}\nfunction offset(item) {\n // perform our own font baseline calculation\n // why? not all browsers support SVG 1.1 'alignment-baseline' :(\n // this also ensures consistent layout across renderers\n var baseline = item.baseline,\n h = fontSize(item);\n return Math.round(baseline === 'top' ? 0.79 * h : baseline === 'middle' ? 0.30 * h : baseline === 'bottom' ? -0.21 * h : baseline === 'line-top' ? 0.29 * h + 0.5 * lineHeight(item) : baseline === 'line-bottom' ? 0.29 * h - 0.5 * lineHeight(item) : 0);\n}\nvar textAlign = {\n 'left': 'start',\n 'center': 'middle',\n 'right': 'end'\n};\nvar tempBounds = new Bounds();\nfunction anchorPoint(item) {\n var x = item.x || 0,\n y = item.y || 0,\n r = item.radius || 0,\n t;\n if (r) {\n t = (item.theta || 0) - HalfPi;\n x += r * Math.cos(t);\n y += r * Math.sin(t);\n }\n tempBounds.x1 = x;\n tempBounds.y1 = y;\n return tempBounds;\n}\nfunction attr(emit, item) {\n var dx = item.dx || 0,\n dy = (item.dy || 0) + offset(item),\n p = anchorPoint(item),\n x = p.x1,\n y = p.y1,\n a = item.angle || 0,\n t;\n emit('text-anchor', textAlign[item.align] || 'start');\n if (a) {\n t = translate(x, y) + ' ' + rotate(a);\n if (dx || dy) t += ' ' + translate(dx, dy);\n } else {\n t = translate(x + dx, y + dy);\n }\n emit('transform', t);\n}\nfunction bound(bounds, item, mode) {\n var h = textMetrics.height(item),\n a = item.align,\n p = anchorPoint(item),\n x = p.x1,\n y = p.y1,\n dx = item.dx || 0,\n dy = (item.dy || 0) + offset(item) - Math.round(0.8 * h),\n // use 4/5 offset\n tl = textLines(item),\n w;\n\n // get dimensions\n if (isArray(tl)) {\n // multi-line text\n h += lineHeight(item) * (tl.length - 1);\n w = tl.reduce(function (w, t) {\n return Math.max(w, textMetrics.width(item, t));\n }, 0);\n } else {\n // single-line text\n w = textMetrics.width(item, tl);\n }\n\n // horizontal alignment\n if (a === 'center') {\n dx -= w / 2;\n } else if (a === 'right') {\n dx -= w;\n } else ;\n bounds.set(dx += x, dy += y, dx + w, dy + h);\n if (item.angle && !mode) {\n bounds.rotate(item.angle * DegToRad, x, y);\n } else if (mode === 2) {\n return bounds.rotatedPoints(item.angle * DegToRad, x, y);\n }\n return bounds;\n}\nfunction draw(context, scene, bounds) {\n visit(scene, function (item) {\n var opacity = item.opacity == null ? 1 : item.opacity,\n p,\n x,\n y,\n i,\n lh,\n tl,\n str;\n if (bounds && !bounds.intersects(item.bounds) ||\n // bounds check\n opacity === 0 || item.fontSize <= 0 || item.text == null || item.text.length === 0) return;\n context.font = font(item);\n context.textAlign = item.align || 'left';\n p = anchorPoint(item);\n x = p.x1, y = p.y1;\n if (item.angle) {\n context.save();\n context.translate(x, y);\n context.rotate(item.angle * DegToRad);\n x = y = 0; // reset x, y\n }\n\n x += item.dx || 0;\n y += (item.dy || 0) + offset(item);\n tl = textLines(item);\n blend(context, item);\n if (isArray(tl)) {\n lh = lineHeight(item);\n for (i = 0; i < tl.length; ++i) {\n str = textValue(item, tl[i]);\n if (item.fill && fill(context, item, opacity)) {\n context.fillText(str, x, y);\n }\n if (item.stroke && stroke(context, item, opacity)) {\n context.strokeText(str, x, y);\n }\n y += lh;\n }\n } else {\n str = textValue(item, tl);\n if (item.fill && fill(context, item, opacity)) {\n context.fillText(str, x, y);\n }\n if (item.stroke && stroke(context, item, opacity)) {\n context.strokeText(str, x, y);\n }\n }\n if (item.angle) context.restore();\n });\n}\nfunction hit(context, item, x, y, gx, gy) {\n if (item.fontSize <= 0) return false;\n if (!item.angle) return true; // bounds sufficient if no rotation\n\n // project point into space of unrotated bounds\n var p = anchorPoint(item),\n ax = p.x1,\n ay = p.y1,\n b = bound(tempBounds, item, 1),\n a = -item.angle * DegToRad,\n cos = Math.cos(a),\n sin = Math.sin(a),\n px = cos * gx - sin * gy + (ax - cos * ax + sin * ay),\n py = sin * gx + cos * gy + (ay - sin * ax - cos * ay);\n return b.contains(px, py);\n}\nfunction intersectText(item, box) {\n var p = bound(tempBounds, item, 2);\n return intersectBoxLine(box, p[0], p[1], p[2], p[3]) || intersectBoxLine(box, p[0], p[1], p[4], p[5]) || intersectBoxLine(box, p[4], p[5], p[6], p[7]) || intersectBoxLine(box, p[2], p[3], p[6], p[7]);\n}\nvar text = {\n type: 'text',\n tag: 'text',\n nested: false,\n attr: attr,\n bound: bound,\n draw: draw,\n pick: pick$1(hit),\n isect: intersectText\n};\nvar trail = markMultiItemPath('trail', trail$1, pickTrail);\nvar Marks = {\n arc: arc,\n area: area,\n group: group,\n image: image,\n line: line,\n path: path$2,\n rect: rect,\n rule: rule,\n shape: shape,\n symbol: symbol,\n text: text,\n trail: trail\n};\nfunction boundItem(item, func, opt) {\n var type = Marks[item.mark.marktype],\n bound = func || type.bound;\n if (type.nested) item = item.mark;\n return bound(item.bounds || (item.bounds = new Bounds()), item, opt);\n}\nvar DUMMY = {\n mark: null\n};\nfunction boundMark(mark, bounds, opt) {\n var type = Marks[mark.marktype],\n bound = type.bound,\n items = mark.items,\n hasItems = items && items.length,\n i,\n n,\n item,\n b;\n if (type.nested) {\n if (hasItems) {\n item = items[0];\n } else {\n // no items, fake it\n DUMMY.mark = mark;\n item = DUMMY;\n }\n b = boundItem(item, bound, opt);\n bounds = bounds && bounds.union(b) || b;\n return bounds;\n }\n bounds = bounds || mark.bounds && mark.bounds.clear() || new Bounds();\n if (hasItems) {\n for (i = 0, n = items.length; i < n; ++i) {\n bounds.union(boundItem(items[i], bound, opt));\n }\n }\n return mark.bounds = bounds;\n}\nvar keys = ['marktype', 'name', 'role', 'interactive', 'clip', 'items', 'zindex', 'x', 'y', 'width', 'height', 'align', 'baseline',\n// layout\n'fill', 'fillOpacity', 'opacity', 'blend',\n// fill\n'stroke', 'strokeOpacity', 'strokeWidth', 'strokeCap',\n// stroke\n'strokeDash', 'strokeDashOffset',\n// stroke dash\n'strokeForeground', 'strokeOffset',\n// group\n'startAngle', 'endAngle', 'innerRadius', 'outerRadius',\n// arc\n'cornerRadius', 'padAngle',\n// arc, rect\n'cornerRadiusTopLeft', 'cornerRadiusTopRight',\n// rect, group\n'cornerRadiusBottomLeft', 'cornerRadiusBottomRight', 'interpolate', 'tension', 'orient', 'defined',\n// area, line\n'url', 'aspect', 'smooth',\n// image\n'path', 'scaleX', 'scaleY',\n// path\n'x2', 'y2',\n// rule\n'size', 'shape',\n// symbol\n'text', 'angle', 'theta', 'radius', 'dir', 'dx', 'dy',\n// text\n'ellipsis', 'limit', 'lineBreak', 'lineHeight', 'font', 'fontSize', 'fontWeight', 'fontStyle', 'fontVariant',\n// font\n'description', 'aria', 'ariaRole', 'ariaRoleDescription' // aria\n];\n\nfunction sceneToJSON(scene, indent) {\n return JSON.stringify(scene, keys, indent);\n}\nfunction sceneFromJSON(json) {\n var scene = typeof json === 'string' ? JSON.parse(json) : json;\n return initialize(scene);\n}\nfunction initialize(scene) {\n var type = scene.marktype,\n items = scene.items,\n parent,\n i,\n n;\n if (items) {\n for (i = 0, n = items.length; i < n; ++i) {\n parent = type ? 'mark' : 'group';\n items[i][parent] = scene;\n if (items[i].zindex) items[i][parent].zdirty = true;\n if ('group' === (type || parent)) initialize(items[i]);\n }\n }\n if (type) boundMark(scene);\n return scene;\n}\nfunction Scenegraph(scene) {\n if (arguments.length) {\n this.root = sceneFromJSON(scene);\n } else {\n this.root = createMark({\n marktype: 'group',\n name: 'root',\n role: 'frame'\n });\n this.root.items = [new GroupItem(this.root)];\n }\n}\nScenegraph.prototype = {\n toJSON: function toJSON(indent) {\n return sceneToJSON(this.root, indent || 0);\n },\n mark: function mark(markdef, group, index) {\n group = group || this.root.items[0];\n var mark = createMark(markdef, group);\n group.items[index] = mark;\n if (mark.zindex) mark.group.zdirty = true;\n return mark;\n }\n};\nfunction createMark(def, group) {\n var mark = {\n bounds: new Bounds(),\n clip: !!def.clip,\n group: group,\n interactive: def.interactive === false ? false : true,\n items: [],\n marktype: def.marktype,\n name: def.name || undefined,\n role: def.role || undefined,\n zindex: def.zindex || 0\n };\n\n // add accessibility properties if defined\n if (def.aria != null) {\n mark.aria = def.aria;\n }\n if (def.description) {\n mark.description = def.description;\n }\n return mark;\n}\n\n// create a new DOM element\nfunction domCreate(doc, tag, ns) {\n if (!doc && typeof document !== 'undefined' && document.createElement) {\n doc = document;\n }\n return doc ? ns ? doc.createElementNS(ns, tag) : doc.createElement(tag) : null;\n}\n\n// find first child element with matching tag\nfunction domFind(el, tag) {\n tag = tag.toLowerCase();\n var nodes = el.childNodes,\n i = 0,\n n = nodes.length;\n for (; i < n; ++i) if (nodes[i].tagName.toLowerCase() === tag) {\n return nodes[i];\n }\n}\n\n// retrieve child element at given index\n// create & insert if doesn't exist or if tags do not match\nfunction domChild(el, index, tag, ns) {\n var a = el.childNodes[index],\n b;\n if (!a || a.tagName.toLowerCase() !== tag.toLowerCase()) {\n b = a || null;\n a = domCreate(el.ownerDocument, tag, ns);\n el.insertBefore(a, b);\n }\n return a;\n}\n\n// remove all child elements at or above the given index\nfunction domClear(el, index) {\n var nodes = el.childNodes,\n curr = nodes.length;\n while (curr > index) el.removeChild(nodes[--curr]);\n return el;\n}\n\n// generate css class name for mark\nfunction cssClass(mark) {\n return 'mark-' + mark.marktype + (mark.role ? ' role-' + mark.role : '') + (mark.name ? ' ' + mark.name : '');\n}\nfunction point(event, el) {\n var rect = el.getBoundingClientRect();\n return [event.clientX - rect.left - (el.clientLeft || 0), event.clientY - rect.top - (el.clientTop || 0)];\n}\nfunction resolveItem(item, event, el, origin) {\n var mark = item && item.mark,\n mdef,\n p;\n if (mark && (mdef = Marks[mark.marktype]).tip) {\n p = point(event, el);\n p[0] -= origin[0];\n p[1] -= origin[1];\n while (item = item.mark.group) {\n p[0] -= item.x || 0;\n p[1] -= item.y || 0;\n }\n item = mdef.tip(mark.items, p);\n }\n return item;\n}\n\n/**\n * Create a new Handler instance.\n * @param {object} [customLoader] - Optional loader instance for\n * href URL sanitization. If not specified, a standard loader\n * instance will be generated.\n * @param {function} [customTooltip] - Optional tooltip handler\n * function for custom tooltip display.\n * @constructor\n */\nfunction Handler(customLoader, customTooltip) {\n this._active = null;\n this._handlers = {};\n this._loader = customLoader || loader();\n this._tooltip = customTooltip || defaultTooltip;\n}\n\n// The default tooltip display handler.\n// Sets the HTML title attribute on the visualization container.\nfunction defaultTooltip(handler, event, item, value) {\n handler.element().setAttribute('title', value || '');\n}\nHandler.prototype = {\n /**\n * Initialize a new Handler instance.\n * @param {DOMElement} el - The containing DOM element for the display.\n * @param {Array} origin - The origin of the display, in pixels.\n * The coordinate system will be translated to this point.\n * @param {object} [obj] - Optional context object that should serve as\n * the \"this\" context for event callbacks.\n * @return {Handler} - This handler instance.\n */\n initialize: function initialize(el, origin, obj) {\n this._el = el;\n this._obj = obj || null;\n return this.origin(origin);\n },\n /**\n * Returns the parent container element for a visualization.\n * @return {DOMElement} - The containing DOM element.\n */\n element: function element() {\n return this._el;\n },\n /**\n * Returns the scene element (e.g., canvas or SVG) of the visualization\n * Subclasses must override if the first child is not the scene element.\n * @return {DOMElement} - The scene (e.g., canvas or SVG) element.\n */\n canvas: function canvas() {\n return this._el && this._el.firstChild;\n },\n /**\n * Get / set the origin coordinates of the visualization.\n */\n origin: function origin(_origin) {\n if (arguments.length) {\n this._origin = _origin || [0, 0];\n return this;\n } else {\n return this._origin.slice();\n }\n },\n /**\n * Get / set the scenegraph root.\n */\n scene: function scene(_scene) {\n if (!arguments.length) return this._scene;\n this._scene = _scene;\n return this;\n },\n /**\n * Add an event handler. Subclasses should override this method.\n */\n on: function on() {} /*type, handler*/,\n /**\n * Remove an event handler. Subclasses should override this method.\n */\n off: function off() {} /*type, handler*/,\n /**\n * Utility method for finding the array index of an event handler.\n * @param {Array} h - An array of registered event handlers.\n * @param {string} type - The event type.\n * @param {function} handler - The event handler instance to find.\n * @return {number} - The handler's array index or -1 if not registered.\n */\n _handlerIndex: function _handlerIndex(h, type, handler) {\n for (var i = h ? h.length : 0; --i >= 0;) {\n if (h[i].type === type && (!handler || h[i].handler === handler)) {\n return i;\n }\n }\n return -1;\n },\n /**\n * Returns an array with registered event handlers.\n * @param {string} [type] - The event type to query. Any annotations\n * are ignored; for example, for the argument \"click.foo\", \".foo\" will\n * be ignored and the method returns all \"click\" handlers. If type is\n * null or unspecified, this method returns handlers for all types.\n * @return {Array} - A new array containing all registered event handlers.\n */\n handlers: function handlers(type) {\n var h = this._handlers,\n a = [];\n if (type) {\n a.push.apply(a, _toConsumableArray(h[this.eventName(type)]));\n } else {\n for (var k in h) {\n a.push.apply(a, _toConsumableArray(h[k]));\n }\n }\n return a;\n },\n /**\n * Parses an event name string to return the specific event type.\n * For example, given \"click.foo\" returns \"click\"\n * @param {string} name - The input event type string.\n * @return {string} - A string with the event type only.\n */\n eventName: function eventName(name) {\n var i = name.indexOf('.');\n return i < 0 ? name : name.slice(0, i);\n },\n /**\n * Handle hyperlink navigation in response to an item.href value.\n * @param {Event} event - The event triggering hyperlink navigation.\n * @param {Item} item - The scenegraph item.\n * @param {string} href - The URL to navigate to.\n */\n handleHref: function handleHref(event, item, href) {\n this._loader.sanitize(href, {\n context: 'href'\n }).then(function (opt) {\n var e = new MouseEvent(event.type, event),\n a = domCreate(null, 'a');\n for (var name in opt) a.setAttribute(name, opt[name]);\n a.dispatchEvent(e);\n }).catch(function () {/* do nothing */});\n },\n /**\n * Handle tooltip display in response to an item.tooltip value.\n * @param {Event} event - The event triggering tooltip display.\n * @param {Item} item - The scenegraph item.\n * @param {boolean} show - A boolean flag indicating whether\n * to show or hide a tooltip for the given item.\n */\n handleTooltip: function handleTooltip(event, item, show) {\n if (item && item.tooltip != null) {\n item = resolveItem(item, event, this.canvas(), this._origin);\n var _value = show && item && item.tooltip || null;\n this._tooltip.call(this._obj, this, event, item, _value);\n }\n },\n /**\n * Returns the size of a scenegraph item and its position relative\n * to the viewport.\n * @param {Item} item - The scenegraph item.\n * @return {object} - A bounding box object (compatible with the\n * DOMRect type) consisting of x, y, width, heigh, top, left,\n * right, and bottom properties.\n */\n getItemBoundingClientRect: function getItemBoundingClientRect(item) {\n var el = this.canvas();\n if (!el) return;\n var rect = el.getBoundingClientRect(),\n origin = this._origin,\n bounds = item.bounds,\n width = bounds.width(),\n height = bounds.height();\n var x = bounds.x1 + origin[0] + rect.left,\n y = bounds.y1 + origin[1] + rect.top;\n\n // translate coordinate for each parent group\n while (item.mark && (item = item.mark.group)) {\n x += item.x || 0;\n y += item.y || 0;\n }\n\n // return DOMRect-compatible bounding box\n return {\n x: x,\n y: y,\n width: width,\n height: height,\n left: x,\n top: y,\n right: x + width,\n bottom: y + height\n };\n }\n};\n\n/**\n * Create a new Renderer instance.\n * @param {object} [loader] - Optional loader instance for\n * image and href URL sanitization. If not specified, a\n * standard loader instance will be generated.\n * @constructor\n */\nfunction Renderer(loader) {\n this._el = null;\n this._bgcolor = null;\n this._loader = new ResourceLoader(loader);\n}\nRenderer.prototype = {\n /**\n * Initialize a new Renderer instance.\n * @param {DOMElement} el - The containing DOM element for the display.\n * @param {number} width - The coordinate width of the display, in pixels.\n * @param {number} height - The coordinate height of the display, in pixels.\n * @param {Array} origin - The origin of the display, in pixels.\n * The coordinate system will be translated to this point.\n * @param {number} [scaleFactor=1] - Optional scaleFactor by which to multiply\n * the width and height to determine the final pixel size.\n * @return {Renderer} - This renderer instance.\n */\n initialize: function initialize(el, width, height, origin, scaleFactor) {\n this._el = el;\n return this.resize(width, height, origin, scaleFactor);\n },\n /**\n * Returns the parent container element for a visualization.\n * @return {DOMElement} - The containing DOM element.\n */\n element: function element() {\n return this._el;\n },\n /**\n * Returns the scene element (e.g., canvas or SVG) of the visualization\n * Subclasses must override if the first child is not the scene element.\n * @return {DOMElement} - The scene (e.g., canvas or SVG) element.\n */\n canvas: function canvas() {\n return this._el && this._el.firstChild;\n },\n /**\n * Get / set the background color.\n */\n background: function background(bgcolor) {\n if (arguments.length === 0) return this._bgcolor;\n this._bgcolor = bgcolor;\n return this;\n },\n /**\n * Resize the display.\n * @param {number} width - The new coordinate width of the display, in pixels.\n * @param {number} height - The new coordinate height of the display, in pixels.\n * @param {Array} origin - The new origin of the display, in pixels.\n * The coordinate system will be translated to this point.\n * @param {number} [scaleFactor=1] - Optional scaleFactor by which to multiply\n * the width and height to determine the final pixel size.\n * @return {Renderer} - This renderer instance;\n */\n resize: function resize(width, height, origin, scaleFactor) {\n this._width = width;\n this._height = height;\n this._origin = origin || [0, 0];\n this._scale = scaleFactor || 1;\n return this;\n },\n /**\n * Report a dirty item whose bounds should be redrawn.\n * This base class method does nothing. Subclasses that perform\n * incremental should implement this method.\n * @param {Item} item - The dirty item whose bounds should be redrawn.\n */\n dirty: function dirty() {} /*item*/,\n /**\n * Render an input scenegraph, potentially with a set of dirty items.\n * This method will perform an immediate rendering with available resources.\n * The renderer may also need to perform image loading to perform a complete\n * render. This process can lead to asynchronous re-rendering of the scene\n * after this method returns. To receive notification when rendering is\n * complete, use the renderAsync method instead.\n * @param {object} scene - The root mark of a scenegraph to render.\n * @return {Renderer} - This renderer instance.\n */\n render: function render(scene) {\n var r = this;\n\n // bind arguments into a render call, and cache it\n // this function may be subsequently called for async redraw\n r._call = function () {\n r._render(scene);\n };\n\n // invoke the renderer\n r._call();\n\n // clear the cached call for garbage collection\n // async redraws will stash their own copy\n r._call = null;\n return r;\n },\n /**\n * Internal rendering method. Renderer subclasses should override this\n * method to actually perform rendering.\n * @param {object} scene - The root mark of a scenegraph to render.\n */\n _render: function _render() {\n // subclasses to override\n } /*scene*/,\n /**\n * Asynchronous rendering method. Similar to render, but returns a Promise\n * that resolves when all rendering is completed. Sometimes a renderer must\n * perform image loading to get a complete rendering. The returned\n * Promise will not resolve until this process completes.\n * @param {object} scene - The root mark of a scenegraph to render.\n * @return {Promise} - A Promise that resolves when rendering is complete.\n */\n renderAsync: function renderAsync(scene) {\n var r = this.render(scene);\n return this._ready ? this._ready.then(function () {\n return r;\n }) : Promise.resolve(r);\n },\n /**\n * Internal method for asynchronous resource loading.\n * Proxies method calls to the ImageLoader, and tracks loading\n * progress to invoke a re-render once complete.\n * @param {string} method - The method name to invoke on the ImageLoader.\n * @param {string} uri - The URI for the requested resource.\n * @return {Promise} - A Promise that resolves to the requested resource.\n */\n _load: function _load(method, uri) {\n var r = this,\n p = r._loader[method](uri);\n if (!r._ready) {\n // re-render the scene when loading completes\n var call = r._call;\n r._ready = r._loader.ready().then(function (redraw) {\n if (redraw) call();\n r._ready = null;\n });\n }\n return p;\n },\n /**\n * Sanitize a URL to include as a hyperlink in the rendered scene.\n * This method proxies a call to ImageLoader.sanitizeURL, but also tracks\n * image loading progress and invokes a re-render once complete.\n * @param {string} uri - The URI string to sanitize.\n * @return {Promise} - A Promise that resolves to the sanitized URL.\n */\n sanitizeURL: function sanitizeURL(uri) {\n return this._load('sanitizeURL', uri);\n },\n /**\n * Requests an image to include in the rendered scene.\n * This method proxies a call to ImageLoader.loadImage, but also tracks\n * image loading progress and invokes a re-render once complete.\n * @param {string} uri - The URI string of the image.\n * @return {Promise} - A Promise that resolves to the loaded Image.\n */\n loadImage: function loadImage(uri) {\n return this._load('loadImage', uri);\n }\n};\nvar KeyDownEvent = 'keydown';\nvar KeyPressEvent = 'keypress';\nvar KeyUpEvent = 'keyup';\nvar DragEnterEvent = 'dragenter';\nvar DragLeaveEvent = 'dragleave';\nvar DragOverEvent = 'dragover';\nvar MouseDownEvent = 'mousedown';\nvar MouseUpEvent = 'mouseup';\nvar MouseMoveEvent = 'mousemove';\nvar MouseOutEvent = 'mouseout';\nvar MouseOverEvent = 'mouseover';\nvar ClickEvent = 'click';\nvar DoubleClickEvent = 'dblclick';\nvar WheelEvent = 'wheel';\nvar MouseWheelEvent = 'mousewheel';\nvar TouchStartEvent = 'touchstart';\nvar TouchMoveEvent = 'touchmove';\nvar TouchEndEvent = 'touchend';\nvar Events = [KeyDownEvent, KeyPressEvent, KeyUpEvent, DragEnterEvent, DragLeaveEvent, DragOverEvent, MouseDownEvent, MouseUpEvent, MouseMoveEvent, MouseOutEvent, MouseOverEvent, ClickEvent, DoubleClickEvent, WheelEvent, MouseWheelEvent, TouchStartEvent, TouchMoveEvent, TouchEndEvent];\nvar TooltipShowEvent = MouseMoveEvent;\nvar TooltipHideEvent = MouseOutEvent;\nvar HrefEvent = ClickEvent;\nfunction CanvasHandler(loader, tooltip) {\n Handler.call(this, loader, tooltip);\n this._down = null;\n this._touch = null;\n this._first = true;\n this._events = {};\n}\nvar eventBundle = function eventBundle(type) {\n return type === TouchStartEvent || type === TouchMoveEvent || type === TouchEndEvent ? [TouchStartEvent, TouchMoveEvent, TouchEndEvent] : [type];\n};\n\n// lazily add listeners to the canvas as needed\nfunction eventListenerCheck(handler, type) {\n eventBundle(type).forEach(function (_) {\n return addEventListener(handler, _);\n });\n}\nfunction addEventListener(handler, type) {\n var canvas = handler.canvas();\n if (canvas && !handler._events[type]) {\n handler._events[type] = 1;\n canvas.addEventListener(type, handler[type] ? function (evt) {\n return handler[type](evt);\n } : function (evt) {\n return handler.fire(type, evt);\n });\n }\n}\nfunction move(moveEvent, overEvent, outEvent) {\n return function (evt) {\n var a = this._active,\n p = this.pickEvent(evt);\n if (p === a) {\n // active item and picked item are the same\n this.fire(moveEvent, evt); // fire move\n } else {\n // active item and picked item are different\n if (!a || !a.exit) {\n // fire out for prior active item\n // suppress if active item was removed from scene\n this.fire(outEvent, evt);\n }\n this._active = p; // set new active item\n this.fire(overEvent, evt); // fire over for new active item\n this.fire(moveEvent, evt); // fire move for new active item\n }\n };\n}\n\nfunction inactive(type) {\n return function (evt) {\n this.fire(type, evt);\n this._active = null;\n };\n}\ninherits(CanvasHandler, Handler, {\n initialize: function initialize(el, origin, obj) {\n var _this4 = this;\n this._canvas = el && domFind(el, 'canvas');\n\n // add minimal events required for proper state management\n [ClickEvent, MouseDownEvent, MouseMoveEvent, MouseOutEvent, DragLeaveEvent].forEach(function (type) {\n return eventListenerCheck(_this4, type);\n });\n return Handler.prototype.initialize.call(this, el, origin, obj);\n },\n // return the backing canvas instance\n canvas: function canvas() {\n return this._canvas;\n },\n // retrieve the current canvas context\n context: function context() {\n return this._canvas.getContext('2d');\n },\n // supported events\n events: Events,\n // to keep old versions of firefox happy\n DOMMouseScroll: function DOMMouseScroll(evt) {\n this.fire(MouseWheelEvent, evt);\n },\n mousemove: move(MouseMoveEvent, MouseOverEvent, MouseOutEvent),\n dragover: move(DragOverEvent, DragEnterEvent, DragLeaveEvent),\n mouseout: inactive(MouseOutEvent),\n dragleave: inactive(DragLeaveEvent),\n mousedown: function mousedown(evt) {\n this._down = this._active;\n this.fire(MouseDownEvent, evt);\n },\n click: function click(evt) {\n if (this._down === this._active) {\n this.fire(ClickEvent, evt);\n this._down = null;\n }\n },\n touchstart: function touchstart(evt) {\n this._touch = this.pickEvent(evt.changedTouches[0]);\n if (this._first) {\n this._active = this._touch;\n this._first = false;\n }\n this.fire(TouchStartEvent, evt, true);\n },\n touchmove: function touchmove(evt) {\n this.fire(TouchMoveEvent, evt, true);\n },\n touchend: function touchend(evt) {\n this.fire(TouchEndEvent, evt, true);\n this._touch = null;\n },\n // fire an event\n fire: function fire(type, evt, touch) {\n var a = touch ? this._touch : this._active,\n h = this._handlers[type];\n\n // set event type relative to scenegraph items\n evt.vegaType = type;\n\n // handle hyperlinks and tooltips first\n if (type === HrefEvent && a && a.href) {\n this.handleHref(evt, a, a.href);\n } else if (type === TooltipShowEvent || type === TooltipHideEvent) {\n this.handleTooltip(evt, a, type !== TooltipHideEvent);\n }\n\n // invoke all registered handlers\n if (h) {\n for (var i = 0, len = h.length; i < len; ++i) {\n h[i].handler.call(this._obj, evt, a);\n }\n }\n },\n // add an event handler\n on: function on(type, handler) {\n var name = this.eventName(type),\n h = this._handlers,\n i = this._handlerIndex(h[name], type, handler);\n if (i < 0) {\n eventListenerCheck(this, type);\n (h[name] || (h[name] = [])).push({\n type: type,\n handler: handler\n });\n }\n return this;\n },\n // remove an event handler\n off: function off(type, handler) {\n var name = this.eventName(type),\n h = this._handlers[name],\n i = this._handlerIndex(h, type, handler);\n if (i >= 0) {\n h.splice(i, 1);\n }\n return this;\n },\n pickEvent: function pickEvent(evt) {\n var p = point(evt, this._canvas),\n o = this._origin;\n return this.pick(this._scene, p[0], p[1], p[0] - o[0], p[1] - o[1]);\n },\n // find the scenegraph item at the current mouse position\n // x, y -- the absolute x, y mouse coordinates on the canvas element\n // gx, gy -- the relative coordinates within the current group\n pick: function pick(scene, x, y, gx, gy) {\n var g = this.context(),\n mark = Marks[scene.marktype];\n return mark.pick.call(this, g, scene, x, y, gx, gy);\n }\n});\nfunction devicePixelRatio() {\n return typeof window !== 'undefined' ? window.devicePixelRatio || 1 : 1;\n}\nvar pixelRatio = devicePixelRatio();\nfunction _resize(canvas, width, height, origin, scaleFactor, opt) {\n var inDOM = typeof HTMLElement !== 'undefined' && canvas instanceof HTMLElement && canvas.parentNode != null,\n context = canvas.getContext('2d'),\n ratio = inDOM ? pixelRatio : scaleFactor;\n canvas.width = width * ratio;\n canvas.height = height * ratio;\n for (var key in opt) {\n context[key] = opt[key];\n }\n if (inDOM && ratio !== 1) {\n canvas.style.width = width + 'px';\n canvas.style.height = height + 'px';\n }\n context.pixelRatio = ratio;\n context.setTransform(ratio, 0, 0, ratio, ratio * origin[0], ratio * origin[1]);\n return canvas;\n}\nfunction CanvasRenderer(loader) {\n Renderer.call(this, loader);\n this._options = {};\n this._redraw = false;\n this._dirty = new Bounds();\n this._tempb = new Bounds();\n}\nvar base$1 = Renderer.prototype;\nvar viewBounds = function viewBounds(origin, width, height) {\n return new Bounds().set(0, 0, width, height).translate(-origin[0], -origin[1]);\n};\nfunction clipToBounds(g, b, origin) {\n // expand bounds by 1 pixel, then round to pixel boundaries\n b.expand(1).round();\n\n // align to base pixel grid in case of non-integer scaling (#2425)\n if (g.pixelRatio % 1) {\n b.scale(g.pixelRatio).round().scale(1 / g.pixelRatio);\n }\n\n // to avoid artifacts translate if origin has fractional pixels\n b.translate(-(origin[0] % 1), -(origin[1] % 1));\n\n // set clip path\n g.beginPath();\n g.rect(b.x1, b.y1, b.width(), b.height());\n g.clip();\n return b;\n}\ninherits(CanvasRenderer, Renderer, {\n initialize: function initialize(el, width, height, origin, scaleFactor, options) {\n this._options = options || {};\n this._canvas = this._options.externalContext ? null : canvas(1, 1, this._options.type); // instantiate a small canvas\n\n if (el && this._canvas) {\n domClear(el, 0).appendChild(this._canvas);\n this._canvas.setAttribute('class', 'marks');\n }\n\n // this method will invoke resize to size the canvas appropriately\n return base$1.initialize.call(this, el, width, height, origin, scaleFactor);\n },\n resize: function resize(width, height, origin, scaleFactor) {\n base$1.resize.call(this, width, height, origin, scaleFactor);\n if (this._canvas) {\n // configure canvas size and transform\n _resize(this._canvas, this._width, this._height, this._origin, this._scale, this._options.context);\n } else {\n // external context needs to be scaled and positioned to origin\n var ctx = this._options.externalContext;\n if (!ctx) error('CanvasRenderer is missing a valid canvas or context');\n ctx.scale(this._scale, this._scale);\n ctx.translate(this._origin[0], this._origin[1]);\n }\n this._redraw = true;\n return this;\n },\n canvas: function canvas() {\n return this._canvas;\n },\n context: function context() {\n return this._options.externalContext || (this._canvas ? this._canvas.getContext('2d') : null);\n },\n dirty: function dirty(item) {\n var b = this._tempb.clear().union(item.bounds);\n var g = item.mark.group;\n while (g) {\n b.translate(g.x || 0, g.y || 0);\n g = g.mark.group;\n }\n this._dirty.union(b);\n },\n _render: function _render(scene) {\n var g = this.context(),\n o = this._origin,\n w = this._width,\n h = this._height,\n db = this._dirty,\n vb = viewBounds(o, w, h);\n\n // setup\n g.save();\n var b = this._redraw || db.empty() ? (this._redraw = false, vb.expand(1)) : clipToBounds(g, vb.intersect(db), o);\n this.clear(-o[0], -o[1], w, h);\n\n // render\n this.draw(g, scene, b);\n\n // takedown\n g.restore();\n db.clear();\n return this;\n },\n draw: function draw(ctx, scene, bounds) {\n var mark = Marks[scene.marktype];\n if (scene.clip) clip(ctx, scene);\n mark.draw.call(this, ctx, scene, bounds);\n if (scene.clip) ctx.restore();\n },\n clear: function clear(x, y, w, h) {\n var opt = this._options,\n g = this.context();\n if (opt.type !== 'pdf' && !opt.externalContext) {\n // calling clear rect voids vector output in pdf mode\n // and could remove external context content (#2615)\n g.clearRect(x, y, w, h);\n }\n if (this._bgcolor != null) {\n g.fillStyle = this._bgcolor;\n g.fillRect(x, y, w, h);\n }\n }\n});\nfunction SVGHandler(loader, tooltip) {\n Handler.call(this, loader, tooltip);\n var h = this;\n h._hrefHandler = listener(h, function (evt, item) {\n if (item && item.href) h.handleHref(evt, item, item.href);\n });\n h._tooltipHandler = listener(h, function (evt, item) {\n h.handleTooltip(evt, item, evt.type !== TooltipHideEvent);\n });\n}\n\n// wrap an event listener for the SVG DOM\nvar listener = function listener(context, handler) {\n return function (evt) {\n var item = evt.target.__data__;\n item = Array.isArray(item) ? item[0] : item;\n evt.vegaType = evt.type;\n handler.call(context._obj, evt, item);\n };\n};\ninherits(SVGHandler, Handler, {\n initialize: function initialize(el, origin, obj) {\n var svg = this._svg;\n if (svg) {\n svg.removeEventListener(HrefEvent, this._hrefHandler);\n svg.removeEventListener(TooltipShowEvent, this._tooltipHandler);\n svg.removeEventListener(TooltipHideEvent, this._tooltipHandler);\n }\n this._svg = svg = el && domFind(el, 'svg');\n if (svg) {\n svg.addEventListener(HrefEvent, this._hrefHandler);\n svg.addEventListener(TooltipShowEvent, this._tooltipHandler);\n svg.addEventListener(TooltipHideEvent, this._tooltipHandler);\n }\n return Handler.prototype.initialize.call(this, el, origin, obj);\n },\n canvas: function canvas() {\n return this._svg;\n },\n // add an event handler\n on: function on(type, handler) {\n var name = this.eventName(type),\n h = this._handlers,\n i = this._handlerIndex(h[name], type, handler);\n if (i < 0) {\n var _x2 = {\n type: type,\n handler: handler,\n listener: listener(this, handler)\n };\n (h[name] || (h[name] = [])).push(_x2);\n if (this._svg) {\n this._svg.addEventListener(name, _x2.listener);\n }\n }\n return this;\n },\n // remove an event handler\n off: function off(type, handler) {\n var name = this.eventName(type),\n h = this._handlers[name],\n i = this._handlerIndex(h, type, handler);\n if (i >= 0) {\n if (this._svg) {\n this._svg.removeEventListener(name, h[i].listener);\n }\n h.splice(i, 1);\n }\n return this;\n }\n});\nvar ARIA_HIDDEN = 'aria-hidden';\nvar ARIA_LABEL = 'aria-label';\nvar ARIA_ROLE = 'role';\nvar ARIA_ROLEDESCRIPTION = 'aria-roledescription';\nvar GRAPHICS_OBJECT = 'graphics-object';\nvar GRAPHICS_SYMBOL = 'graphics-symbol';\nvar bundle = function bundle(role, roledesc, label) {\n var _ref;\n return _ref = {}, _defineProperty(_ref, ARIA_ROLE, role), _defineProperty(_ref, ARIA_ROLEDESCRIPTION, roledesc), _defineProperty(_ref, ARIA_LABEL, label || undefined), _ref;\n};\n\n// these roles are covered by related roles\n// we can ignore them, no need to generate attributes\nvar AriaIgnore = toSet(['axis-domain', 'axis-grid', 'axis-label', 'axis-tick', 'axis-title', 'legend-band', 'legend-entry', 'legend-gradient', 'legend-label', 'legend-title', 'legend-symbol', 'title']);\n\n// aria attribute generators for guide roles\nvar AriaGuides = {\n 'axis': {\n desc: 'axis',\n caption: axisCaption\n },\n 'legend': {\n desc: 'legend',\n caption: legendCaption\n },\n 'title-text': {\n desc: 'title',\n caption: function caption(item) {\n return \"Title text '\".concat(titleCaption(item), \"'\");\n }\n },\n 'title-subtitle': {\n desc: 'subtitle',\n caption: function caption(item) {\n return \"Subtitle text '\".concat(titleCaption(item), \"'\");\n }\n }\n};\n\n// aria properties generated for mark item encoding channels\nvar AriaEncode = {\n ariaRole: ARIA_ROLE,\n ariaRoleDescription: ARIA_ROLEDESCRIPTION,\n description: ARIA_LABEL\n};\nfunction ariaItemAttributes(emit, item) {\n var hide = item.aria === false;\n emit(ARIA_HIDDEN, hide || undefined);\n if (hide || item.description == null) {\n for (var prop in AriaEncode) {\n emit(AriaEncode[prop], undefined);\n }\n } else {\n var _type = item.mark.marktype;\n emit(ARIA_LABEL, item.description);\n emit(ARIA_ROLE, item.ariaRole || (_type === 'group' ? GRAPHICS_OBJECT : GRAPHICS_SYMBOL));\n emit(ARIA_ROLEDESCRIPTION, item.ariaRoleDescription || \"\".concat(_type, \" mark\"));\n }\n}\nfunction ariaMarkAttributes(mark) {\n return mark.aria === false ? _defineProperty({}, ARIA_HIDDEN, true) : AriaIgnore[mark.role] ? null : AriaGuides[mark.role] ? ariaGuide(mark, AriaGuides[mark.role]) : ariaMark(mark);\n}\nfunction ariaMark(mark) {\n var type = mark.marktype;\n var recurse = type === 'group' || type === 'text' || mark.items.some(function (_) {\n return _.description != null && _.aria !== false;\n });\n return bundle(recurse ? GRAPHICS_OBJECT : GRAPHICS_SYMBOL, \"\".concat(type, \" mark container\"), mark.description);\n}\nfunction ariaGuide(mark, opt) {\n try {\n var item = mark.items[0],\n caption = opt.caption || function () {\n return '';\n };\n return bundle(opt.role || GRAPHICS_SYMBOL, opt.desc, item.description || caption(item));\n } catch (err) {\n return null;\n }\n}\nfunction titleCaption(item) {\n return array(item.text).join(' ');\n}\nfunction axisCaption(item) {\n var datum = item.datum,\n orient = item.orient,\n title = datum.title ? extractTitle(item) : null,\n ctx = item.context,\n scale = ctx.scales[datum.scale].value,\n locale = ctx.dataflow.locale(),\n type = scale.type,\n xy = orient === 'left' || orient === 'right' ? 'Y' : 'X';\n return \"\".concat(xy, \"-axis\") + (title ? \" titled '\".concat(title, \"'\") : '') + \" for a \".concat(isDiscrete(type) ? 'discrete' : type, \" scale\") + \" with \".concat(domainCaption(locale, scale, item));\n}\nfunction legendCaption(item) {\n var datum = item.datum,\n title = datum.title ? extractTitle(item) : null,\n type = \"\".concat(datum.type || '', \" legend\").trim(),\n scales = datum.scales,\n props = Object.keys(scales),\n ctx = item.context,\n scale = ctx.scales[scales[props[0]]].value,\n locale = ctx.dataflow.locale();\n return capitalize(type) + (title ? \" titled '\".concat(title, \"'\") : '') + \" for \".concat(channelCaption(props)) + \" with \".concat(domainCaption(locale, scale, item));\n}\nfunction extractTitle(item) {\n try {\n return array(peek(item.items).items[0].text).join(' ');\n } catch (err) {\n return null;\n }\n}\nfunction channelCaption(props) {\n props = props.map(function (p) {\n return p + (p === 'fill' || p === 'stroke' ? ' color' : '');\n });\n return props.length < 2 ? props[0] : props.slice(0, -1).join(', ') + ' and ' + peek(props);\n}\nfunction capitalize(s) {\n return s.length ? s[0].toUpperCase() + s.slice(1) : s;\n}\nvar innerText = function innerText(val) {\n return (val + '').replace(/&/g, '&').replace(//g, '>');\n};\nvar attrText = function attrText(val) {\n return innerText(val).replace(/\"/g, '"').replace(/\\t/g, ' ').replace(/\\n/g, ' ').replace(/\\r/g, ' ');\n};\nfunction markup() {\n var buf = '',\n outer = '',\n inner = '';\n var stack = [],\n clear = function clear() {\n return outer = inner = '';\n },\n push = function push(tag) {\n if (outer) {\n buf += \"\".concat(outer, \">\").concat(inner);\n clear();\n }\n stack.push(tag);\n },\n attr = function attr(name, value) {\n if (value != null) outer += \" \".concat(name, \"=\\\"\").concat(attrText(value), \"\\\"\");\n return m;\n },\n m = {\n open: function open(tag) {\n push(tag);\n outer = '<' + tag;\n for (var _len = arguments.length, attrs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n attrs[_key - 1] = arguments[_key];\n }\n for (var _i = 0, _attrs = attrs; _i < _attrs.length; _i++) {\n var set = _attrs[_i];\n for (var key in set) attr(key, set[key]);\n }\n return m;\n },\n close: function close() {\n var tag = stack.pop();\n if (outer) {\n buf += outer + (inner ? \">\".concat(inner, \"\") : '/>');\n } else {\n buf += \"\");\n }\n clear();\n return m;\n },\n attr: attr,\n text: function text(t) {\n return inner += innerText(t), m;\n },\n toString: function toString() {\n return buf;\n }\n };\n return m;\n}\nvar serializeXML = function serializeXML(node) {\n return _serialize(markup(), node) + '';\n};\nfunction _serialize(m, node) {\n m.open(node.tagName);\n if (node.hasAttributes()) {\n var attrs = node.attributes,\n n = attrs.length;\n for (var i = 0; i < n; ++i) {\n m.attr(attrs[i].name, attrs[i].value);\n }\n }\n if (node.hasChildNodes()) {\n var children = node.childNodes;\n var _iterator = _createForOfIteratorHelper(children),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var child = _step.value;\n child.nodeType === 3 // text node\n ? m.text(child.nodeValue) : _serialize(m, child);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n return m.close();\n}\nvar stylesAttr = {\n fill: 'fill',\n fillOpacity: 'fill-opacity',\n stroke: 'stroke',\n strokeOpacity: 'stroke-opacity',\n strokeWidth: 'stroke-width',\n strokeCap: 'stroke-linecap',\n strokeJoin: 'stroke-linejoin',\n strokeDash: 'stroke-dasharray',\n strokeDashOffset: 'stroke-dashoffset',\n strokeMiterLimit: 'stroke-miterlimit',\n opacity: 'opacity'\n};\nvar stylesCss = {\n blend: 'mix-blend-mode'\n};\n\n// ensure miter limit default is consistent with canvas (#2498)\nvar rootAttributes = {\n 'fill': 'none',\n 'stroke-miterlimit': 10\n};\nvar RootIndex = 0,\n xmlns = 'http://www.w3.org/2000/xmlns/',\n svgns = metadata.xmlns;\nfunction SVGRenderer(loader) {\n Renderer.call(this, loader);\n this._dirtyID = 0;\n this._dirty = [];\n this._svg = null;\n this._root = null;\n this._defs = null;\n}\nvar base = Renderer.prototype;\ninherits(SVGRenderer, Renderer, {\n /**\n * Initialize a new SVGRenderer instance.\n * @param {DOMElement} el - The containing DOM element for the display.\n * @param {number} width - The coordinate width of the display, in pixels.\n * @param {number} height - The coordinate height of the display, in pixels.\n * @param {Array} origin - The origin of the display, in pixels.\n * The coordinate system will be translated to this point.\n * @param {number} [scaleFactor=1] - Optional scaleFactor by which to multiply\n * the width and height to determine the final pixel size.\n * @return {SVGRenderer} - This renderer instance.\n */\n initialize: function initialize(el, width, height, origin, scaleFactor) {\n // create the svg definitions cache\n this._defs = {};\n this._clearDefs();\n if (el) {\n this._svg = domChild(el, 0, 'svg', svgns);\n this._svg.setAttributeNS(xmlns, 'xmlns', svgns);\n this._svg.setAttributeNS(xmlns, 'xmlns:xlink', metadata['xmlns:xlink']);\n this._svg.setAttribute('version', metadata['version']);\n this._svg.setAttribute('class', 'marks');\n domClear(el, 1);\n\n // set the svg root group\n this._root = domChild(this._svg, RootIndex, 'g', svgns);\n setAttributes(this._root, rootAttributes);\n\n // ensure no additional child elements\n domClear(this._svg, RootIndex + 1);\n }\n\n // set background color if defined\n this.background(this._bgcolor);\n return base.initialize.call(this, el, width, height, origin, scaleFactor);\n },\n /**\n * Get / set the background color.\n */\n background: function background(bgcolor) {\n if (arguments.length && this._svg) {\n this._svg.style.setProperty('background-color', bgcolor);\n }\n return base.background.apply(this, arguments);\n },\n /**\n * Resize the display.\n * @param {number} width - The new coordinate width of the display, in pixels.\n * @param {number} height - The new coordinate height of the display, in pixels.\n * @param {Array} origin - The new origin of the display, in pixels.\n * The coordinate system will be translated to this point.\n * @param {number} [scaleFactor=1] - Optional scaleFactor by which to multiply\n * the width and height to determine the final pixel size.\n * @return {SVGRenderer} - This renderer instance;\n */\n resize: function resize(width, height, origin, scaleFactor) {\n base.resize.call(this, width, height, origin, scaleFactor);\n if (this._svg) {\n setAttributes(this._svg, {\n width: this._width * this._scale,\n height: this._height * this._scale,\n viewBox: \"0 0 \".concat(this._width, \" \").concat(this._height)\n });\n this._root.setAttribute('transform', \"translate(\".concat(this._origin, \")\"));\n }\n this._dirty = [];\n return this;\n },\n /**\n * Returns the SVG element of the visualization.\n * @return {DOMElement} - The SVG element.\n */\n canvas: function canvas() {\n return this._svg;\n },\n /**\n * Returns an SVG text string for the rendered content,\n * or null if this renderer is currently headless.\n */\n svg: function svg() {\n var svg = this._svg,\n bg = this._bgcolor;\n if (!svg) return null;\n var node;\n if (bg) {\n svg.removeAttribute('style');\n node = domChild(svg, RootIndex, 'rect', svgns);\n setAttributes(node, {\n width: this._width,\n height: this._height,\n fill: bg\n });\n }\n var text = serializeXML(svg);\n if (bg) {\n svg.removeChild(node);\n this._svg.style.setProperty('background-color', bg);\n }\n return text;\n },\n /**\n * Internal rendering method.\n * @param {object} scene - The root mark of a scenegraph to render.\n */\n _render: function _render(scene) {\n // perform spot updates and re-render markup\n if (this._dirtyCheck()) {\n if (this._dirtyAll) this._clearDefs();\n this.mark(this._root, scene);\n domClear(this._root, 1);\n }\n this.defs();\n this._dirty = [];\n ++this._dirtyID;\n return this;\n },\n // -- Manage rendering of items marked as dirty --\n /**\n * Flag a mark item as dirty.\n * @param {Item} item - The mark item.\n */\n dirty: function dirty(item) {\n if (item.dirty !== this._dirtyID) {\n item.dirty = this._dirtyID;\n this._dirty.push(item);\n }\n },\n /**\n * Check if a mark item is considered dirty.\n * @param {Item} item - The mark item.\n */\n isDirty: function isDirty(item) {\n return this._dirtyAll || !item._svg || !item._svg.ownerSVGElement || item.dirty === this._dirtyID;\n },\n /**\n * Internal method to check dirty status and, if possible,\n * make targetted updates without a full rendering pass.\n */\n _dirtyCheck: function _dirtyCheck() {\n this._dirtyAll = true;\n var items = this._dirty;\n if (!items.length || !this._dirtyID) return true;\n var id = ++this._dirtyID;\n var item, mark, type, mdef, i, n, o;\n for (i = 0, n = items.length; i < n; ++i) {\n item = items[i];\n mark = item.mark;\n if (mark.marktype !== type) {\n // memoize mark instance lookup\n type = mark.marktype;\n mdef = Marks[type];\n }\n if (mark.zdirty && mark.dirty !== id) {\n this._dirtyAll = false;\n dirtyParents(item, id);\n mark.items.forEach(function (i) {\n i.dirty = id;\n });\n }\n if (mark.zdirty) continue; // handle in standard drawing pass\n\n if (item.exit) {\n // EXIT\n if (mdef.nested && mark.items.length) {\n // if nested mark with remaining points, update instead\n o = mark.items[0];\n if (o._svg) this._update(mdef, o._svg, o);\n } else if (item._svg) {\n // otherwise remove from DOM\n o = item._svg.parentNode;\n if (o) o.removeChild(item._svg);\n }\n item._svg = null;\n continue;\n }\n item = mdef.nested ? mark.items[0] : item;\n if (item._update === id) continue; // already visited\n\n if (!item._svg || !item._svg.ownerSVGElement) {\n // ENTER\n this._dirtyAll = false;\n dirtyParents(item, id);\n } else {\n // IN-PLACE UPDATE\n this._update(mdef, item._svg, item);\n }\n item._update = id;\n }\n return !this._dirtyAll;\n },\n // -- Construct & maintain scenegraph to SVG mapping ---\n /**\n * Render a set of mark items.\n * @param {SVGElement} el - The parent element in the SVG tree.\n * @param {object} scene - The mark parent to render.\n * @param {SVGElement} prev - The previous sibling in the SVG tree.\n */\n mark: function mark(el, scene, prev) {\n var _this5 = this;\n if (!this.isDirty(scene)) {\n return scene._svg;\n }\n var svg = this._svg,\n mdef = Marks[scene.marktype],\n events = scene.interactive === false ? 'none' : null,\n isGroup = mdef.tag === 'g';\n var parent = bind(scene, el, prev, 'g', svg);\n parent.setAttribute('class', cssClass(scene));\n\n // apply aria attributes to parent container element\n var aria = ariaMarkAttributes(scene);\n for (var key in aria) setAttribute(parent, key, aria[key]);\n if (!isGroup) {\n setAttribute(parent, 'pointer-events', events);\n }\n setAttribute(parent, 'clip-path', scene.clip ? clip$1(this, scene, scene.group) : null);\n var sibling = null,\n i = 0;\n var process = function process(item) {\n var dirty = _this5.isDirty(item),\n node = bind(item, parent, sibling, mdef.tag, svg);\n if (dirty) {\n _this5._update(mdef, node, item);\n if (isGroup) recurse(_this5, node, item);\n }\n sibling = node;\n ++i;\n };\n if (mdef.nested) {\n if (scene.items.length) process(scene.items[0]);\n } else {\n visit(scene, process);\n }\n domClear(parent, i);\n return parent;\n },\n /**\n * Update the attributes of an SVG element for a mark item.\n * @param {object} mdef - The mark definition object\n * @param {SVGElement} el - The SVG element.\n * @param {Item} item - The mark item.\n */\n _update: function _update(mdef, el, item) {\n // set dom element and values cache\n // provides access to emit method\n element = el;\n values = el.__values__;\n\n // apply aria-specific properties\n ariaItemAttributes(emit, item);\n\n // apply svg attributes\n mdef.attr(emit, item, this);\n\n // some marks need special treatment\n var extra = mark_extras[mdef.type];\n if (extra) extra.call(this, mdef, el, item);\n\n // apply svg style attributes\n // note: element state may have been modified by 'extra' method\n if (element) this.style(element, item);\n },\n /**\n * Update the presentation attributes of an SVG element for a mark item.\n * @param {SVGElement} el - The SVG element.\n * @param {Item} item - The mark item.\n */\n style: function style(el, item) {\n if (item == null) return;\n for (var prop in stylesAttr) {\n var _value2 = prop === 'font' ? fontFamily(item) : item[prop];\n if (_value2 === values[prop]) continue;\n var name = stylesAttr[prop];\n if (_value2 == null) {\n el.removeAttribute(name);\n } else {\n if (isGradient(_value2)) {\n _value2 = gradientRef(_value2, this._defs.gradient, href());\n }\n el.setAttribute(name, _value2 + '');\n }\n values[prop] = _value2;\n }\n for (var _prop in stylesCss) {\n setStyle(el, stylesCss[_prop], item[_prop]);\n }\n },\n /**\n * Render SVG defs, as needed.\n * Must be called *after* marks have been processed to ensure the\n * collected state is current and accurate.\n */\n defs: function defs() {\n var svg = this._svg,\n defs = this._defs;\n var el = defs.el,\n index = 0;\n for (var id in defs.gradient) {\n if (!el) defs.el = el = domChild(svg, RootIndex + 1, 'defs', svgns);\n index = updateGradient(el, defs.gradient[id], index);\n }\n for (var _id in defs.clipping) {\n if (!el) defs.el = el = domChild(svg, RootIndex + 1, 'defs', svgns);\n index = updateClipping(el, defs.clipping[_id], index);\n }\n\n // clean-up\n if (el) {\n index === 0 ? (svg.removeChild(el), defs.el = null) : domClear(el, index);\n }\n },\n /**\n * Clear defs caches.\n */\n _clearDefs: function _clearDefs() {\n var def = this._defs;\n def.gradient = {};\n def.clipping = {};\n }\n});\n\n// mark ancestor chain with a dirty id\nfunction dirtyParents(item, id) {\n for (; item && item.dirty !== id; item = item.mark.group) {\n item.dirty = id;\n if (item.mark && item.mark.dirty !== id) {\n item.mark.dirty = id;\n } else return;\n }\n}\n\n// update gradient definitions\nfunction updateGradient(el, grad, index) {\n var i, n, stop;\n if (grad.gradient === 'radial') {\n // SVG radial gradients automatically transform to normalized bbox\n // coordinates, in a way that is cumbersome to replicate in canvas.\n // We wrap the radial gradient in a pattern element, allowing us to\n // maintain a circular gradient that matches what canvas provides.\n var pt = domChild(el, index++, 'pattern', svgns);\n setAttributes(pt, {\n id: patternPrefix + grad.id,\n viewBox: '0,0,1,1',\n width: '100%',\n height: '100%',\n preserveAspectRatio: 'xMidYMid slice'\n });\n pt = domChild(pt, 0, 'rect', svgns);\n setAttributes(pt, {\n width: 1,\n height: 1,\n fill: \"url(\".concat(href(), \"#\").concat(grad.id, \")\")\n });\n el = domChild(el, index++, 'radialGradient', svgns);\n setAttributes(el, {\n id: grad.id,\n fx: grad.x1,\n fy: grad.y1,\n fr: grad.r1,\n cx: grad.x2,\n cy: grad.y2,\n r: grad.r2\n });\n } else {\n el = domChild(el, index++, 'linearGradient', svgns);\n setAttributes(el, {\n id: grad.id,\n x1: grad.x1,\n x2: grad.x2,\n y1: grad.y1,\n y2: grad.y2\n });\n }\n for (i = 0, n = grad.stops.length; i < n; ++i) {\n stop = domChild(el, i, 'stop', svgns);\n stop.setAttribute('offset', grad.stops[i].offset);\n stop.setAttribute('stop-color', grad.stops[i].color);\n }\n domClear(el, i);\n return index;\n}\n\n// update clipping path definitions\nfunction updateClipping(el, clip, index) {\n var mask;\n el = domChild(el, index, 'clipPath', svgns);\n el.setAttribute('id', clip.id);\n if (clip.path) {\n mask = domChild(el, 0, 'path', svgns);\n mask.setAttribute('d', clip.path);\n } else {\n mask = domChild(el, 0, 'rect', svgns);\n setAttributes(mask, {\n x: 0,\n y: 0,\n width: clip.width,\n height: clip.height\n });\n }\n domClear(el, 1);\n return index + 1;\n}\n\n// Recursively process group contents.\nfunction recurse(renderer, el, group) {\n // child 'g' element is second to last among children (path, g, path)\n // other children here are foreground and background path elements\n el = el.lastChild.previousSibling;\n var prev,\n idx = 0;\n visit(group, function (item) {\n prev = renderer.mark(el, item, prev);\n ++idx;\n });\n\n // remove any extraneous DOM elements\n domClear(el, 1 + idx);\n}\n\n// Bind a scenegraph item to an SVG DOM element.\n// Create new SVG elements as needed.\nfunction bind(item, el, sibling, tag, svg) {\n var node = item._svg,\n doc;\n\n // create a new dom node if needed\n if (!node) {\n doc = el.ownerDocument;\n node = domCreate(doc, tag, svgns);\n item._svg = node;\n if (item.mark) {\n node.__data__ = item;\n node.__values__ = {\n fill: 'default'\n };\n\n // if group, create background, content, and foreground elements\n if (tag === 'g') {\n var bg = domCreate(doc, 'path', svgns);\n node.appendChild(bg);\n bg.__data__ = item;\n var cg = domCreate(doc, 'g', svgns);\n node.appendChild(cg);\n cg.__data__ = item;\n var fg = domCreate(doc, 'path', svgns);\n node.appendChild(fg);\n fg.__data__ = item;\n fg.__values__ = {\n fill: 'default'\n };\n }\n }\n }\n\n // (re-)insert if (a) not contained in SVG or (b) sibling order has changed\n if (node.ownerSVGElement !== svg || siblingCheck(node, sibling)) {\n el.insertBefore(node, sibling ? sibling.nextSibling : el.firstChild);\n }\n return node;\n}\n\n// check if two nodes are ordered siblings\nfunction siblingCheck(node, sibling) {\n return node.parentNode && node.parentNode.childNodes.length > 1 && node.previousSibling != sibling; // treat null/undefined the same\n}\n\n// -- Set attributes & styles on SVG elements ---\n\nvar element = null,\n // temp var for current SVG element\n values = null; // temp var for current values hash\n\n// Extra configuration for certain mark types\nvar mark_extras = {\n group: function group(mdef, el, item) {\n var fg = element = el.childNodes[2];\n values = fg.__values__;\n mdef.foreground(emit, item, this);\n values = el.__values__; // use parent's values hash\n element = el.childNodes[1];\n mdef.content(emit, item, this);\n var bg = element = el.childNodes[0];\n mdef.background(emit, item, this);\n var value = item.mark.interactive === false ? 'none' : null;\n if (value !== values.events) {\n setAttribute(fg, 'pointer-events', value);\n setAttribute(bg, 'pointer-events', value);\n values.events = value;\n }\n if (item.strokeForeground && item.stroke) {\n var _fill = item.fill;\n setAttribute(fg, 'display', null);\n\n // set style of background\n this.style(bg, item);\n setAttribute(bg, 'stroke', null);\n\n // set style of foreground\n if (_fill) item.fill = null;\n values = fg.__values__;\n this.style(fg, item);\n if (_fill) item.fill = _fill;\n\n // leave element null to prevent downstream styling\n element = null;\n } else {\n // ensure foreground is ignored\n setAttribute(fg, 'display', 'none');\n }\n },\n image: function image(mdef, el, item) {\n if (item.smooth === false) {\n setStyle(el, 'image-rendering', 'optimizeSpeed');\n setStyle(el, 'image-rendering', 'pixelated');\n } else {\n setStyle(el, 'image-rendering', null);\n }\n },\n text: function text(mdef, el, item) {\n var tl = textLines(item);\n var key, value, doc, lh;\n if (isArray(tl)) {\n // multi-line text\n value = tl.map(function (_) {\n return textValue(item, _);\n });\n key = value.join('\\n'); // content cache key\n\n if (key !== values.text) {\n domClear(el, 0);\n doc = el.ownerDocument;\n lh = lineHeight(item);\n value.forEach(function (t, i) {\n var ts = domCreate(doc, 'tspan', svgns);\n ts.__data__ = item; // data binding\n ts.textContent = t;\n if (i) {\n ts.setAttribute('x', 0);\n ts.setAttribute('dy', lh);\n }\n el.appendChild(ts);\n });\n values.text = key;\n }\n } else {\n // single-line text\n value = textValue(item, tl);\n if (value !== values.text) {\n el.textContent = value;\n values.text = value;\n }\n }\n setAttribute(el, 'font-family', fontFamily(item));\n setAttribute(el, 'font-size', fontSize(item) + 'px');\n setAttribute(el, 'font-style', item.fontStyle);\n setAttribute(el, 'font-variant', item.fontVariant);\n setAttribute(el, 'font-weight', item.fontWeight);\n }\n};\nfunction emit(name, value, ns) {\n // early exit if value is unchanged\n if (value === values[name]) return;\n\n // use appropriate method given namespace (ns)\n if (ns) {\n setAttributeNS(element, name, value, ns);\n } else {\n setAttribute(element, name, value);\n }\n\n // note current value for future comparison\n values[name] = value;\n}\nfunction setStyle(el, name, value) {\n if (value !== values[name]) {\n if (value == null) {\n el.style.removeProperty(name);\n } else {\n el.style.setProperty(name, value + '');\n }\n values[name] = value;\n }\n}\nfunction setAttributes(el, attrs) {\n for (var key in attrs) {\n setAttribute(el, key, attrs[key]);\n }\n}\nfunction setAttribute(el, name, value) {\n if (value != null) {\n // if value is provided, update DOM attribute\n el.setAttribute(name, value);\n } else {\n // else remove DOM attribute\n el.removeAttribute(name);\n }\n}\nfunction setAttributeNS(el, name, value, ns) {\n if (value != null) {\n // if value is provided, update DOM attribute\n el.setAttributeNS(ns, name, value);\n } else {\n // else remove DOM attribute\n el.removeAttributeNS(ns, name);\n }\n}\nfunction href() {\n var loc;\n return typeof window === 'undefined' ? '' : (loc = window.location).hash ? loc.href.slice(0, -loc.hash.length) : loc.href;\n}\nfunction SVGStringRenderer(loader) {\n Renderer.call(this, loader);\n this._text = null;\n this._defs = {\n gradient: {},\n clipping: {}\n };\n}\ninherits(SVGStringRenderer, Renderer, {\n /**\n * Returns the rendered SVG text string,\n * or null if rendering has not yet occurred.\n */\n svg: function svg() {\n return this._text;\n },\n /**\n * Internal rendering method.\n * @param {object} scene - The root mark of a scenegraph to render.\n */\n _render: function _render(scene) {\n var m = markup();\n\n // svg tag\n m.open('svg', extend({}, metadata, {\n class: 'marks',\n width: this._width * this._scale,\n height: this._height * this._scale,\n viewBox: \"0 0 \".concat(this._width, \" \").concat(this._height)\n }));\n\n // background, if defined\n var bg = this._bgcolor;\n if (bg && bg !== 'transparent' && bg !== 'none') {\n m.open('rect', {\n width: this._width,\n height: this._height,\n fill: bg\n }).close();\n }\n\n // root content group\n m.open('g', rootAttributes, {\n transform: 'translate(' + this._origin + ')'\n });\n this.mark(m, scene);\n m.close(); // \n\n // defs\n this.defs(m);\n\n // get SVG text string\n this._text = m.close() + '';\n return this;\n },\n /**\n * Render a set of mark items.\n * @param {object} m - The markup context.\n * @param {object} scene - The mark parent to render.\n */\n mark: function mark(m, scene) {\n var _this6 = this;\n var mdef = Marks[scene.marktype],\n tag = mdef.tag,\n attrList = [ariaItemAttributes, mdef.attr];\n\n // render opening group tag\n m.open('g', {\n 'class': cssClass(scene),\n 'clip-path': scene.clip ? clip$1(this, scene, scene.group) : null\n }, ariaMarkAttributes(scene), {\n 'pointer-events': tag !== 'g' && scene.interactive === false ? 'none' : null\n });\n\n // render contained elements\n var process = function process(item) {\n var href = _this6.href(item);\n if (href) m.open('a', href);\n m.open(tag, _this6.attr(scene, item, attrList, tag !== 'g' ? tag : null));\n if (tag === 'text') {\n var _tl = textLines(item);\n if (isArray(_tl)) {\n // multi-line text\n var attrs = {\n x: 0,\n dy: lineHeight(item)\n };\n for (var i = 0; i < _tl.length; ++i) {\n m.open('tspan', i ? attrs : null).text(textValue(item, _tl[i])).close();\n }\n } else {\n // single-line text\n m.text(textValue(item, _tl));\n }\n } else if (tag === 'g') {\n var fore = item.strokeForeground,\n _fill2 = item.fill,\n _stroke = item.stroke;\n if (fore && _stroke) {\n item.stroke = null;\n }\n m.open('path', _this6.attr(scene, item, mdef.background, 'bgrect')).close();\n\n // recurse for group content\n m.open('g', _this6.attr(scene, item, mdef.content));\n visit(item, function (scene) {\n return _this6.mark(m, scene);\n });\n m.close();\n if (fore && _stroke) {\n if (_fill2) item.fill = null;\n item.stroke = _stroke;\n m.open('path', _this6.attr(scene, item, mdef.foreground, 'bgrect')).close();\n if (_fill2) item.fill = _fill2;\n } else {\n m.open('path', _this6.attr(scene, item, mdef.foreground, 'bgfore')).close();\n }\n }\n m.close(); // \n if (href) m.close(); // \n };\n\n if (mdef.nested) {\n if (scene.items && scene.items.length) process(scene.items[0]);\n } else {\n visit(scene, process);\n }\n\n // render closing group tag\n return m.close(); // \n },\n /**\n * Get href attributes for a hyperlinked mark item.\n * @param {Item} item - The mark item.\n */\n href: function href(item) {\n var _this7 = this;\n var href = item.href;\n var attr;\n if (href) {\n if (attr = this._hrefs && this._hrefs[href]) {\n return attr;\n } else {\n this.sanitizeURL(href).then(function (attr) {\n // rewrite to use xlink namespace\n attr['xlink:href'] = attr.href;\n attr.href = null;\n (_this7._hrefs || (_this7._hrefs = {}))[href] = attr;\n });\n }\n }\n return null;\n },\n /**\n * Get an object of SVG attributes for a mark item.\n * @param {object} scene - The mark parent.\n * @param {Item} item - The mark item.\n * @param {array|function} attrs - One or more attribute emitters.\n * @param {string} tag - The tag being rendered.\n */\n attr: function attr(scene, item, attrs, tag) {\n var _this8 = this;\n var object = {},\n emit = function emit(name, value, ns, prefixed) {\n object[prefixed || name] = value;\n };\n\n // apply mark specific attributes\n if (Array.isArray(attrs)) {\n attrs.forEach(function (fn) {\n return fn(emit, item, _this8);\n });\n } else {\n attrs(emit, item, this);\n }\n\n // apply style attributes\n if (tag) {\n style(object, item, scene, tag, this._defs);\n }\n return object;\n },\n /**\n * Render SVG defs, as needed.\n * Must be called *after* marks have been processed to ensure the\n * collected state is current and accurate.\n * @param {object} m - The markup context.\n */\n defs: function defs(m) {\n var gradient = this._defs.gradient,\n clipping = this._defs.clipping,\n count = Object.keys(gradient).length + Object.keys(clipping).length;\n if (count === 0) return; // nothing to do\n\n m.open('defs');\n for (var id in gradient) {\n var _def = gradient[id],\n stops = _def.stops;\n if (_def.gradient === 'radial') {\n // SVG radial gradients automatically transform to normalized bbox\n // coordinates, in a way that is cumbersome to replicate in canvas.\n // We wrap the radial gradient in a pattern element, allowing us to\n // maintain a circular gradient that matches what canvas provides.\n\n m.open('pattern', {\n id: patternPrefix + id,\n viewBox: '0,0,1,1',\n width: '100%',\n height: '100%',\n preserveAspectRatio: 'xMidYMid slice'\n });\n m.open('rect', {\n width: '1',\n height: '1',\n fill: 'url(#' + id + ')'\n }).close();\n m.close(); // \n\n m.open('radialGradient', {\n id: id,\n fx: _def.x1,\n fy: _def.y1,\n fr: _def.r1,\n cx: _def.x2,\n cy: _def.y2,\n r: _def.r2\n });\n } else {\n m.open('linearGradient', {\n id: id,\n x1: _def.x1,\n x2: _def.x2,\n y1: _def.y1,\n y2: _def.y2\n });\n }\n for (var i = 0; i < stops.length; ++i) {\n m.open('stop', {\n offset: stops[i].offset,\n 'stop-color': stops[i].color\n }).close();\n }\n m.close();\n }\n for (var _id2 in clipping) {\n var _def2 = clipping[_id2];\n m.open('clipPath', {\n id: _id2\n });\n if (_def2.path) {\n m.open('path', {\n d: _def2.path\n }).close();\n } else {\n m.open('rect', {\n x: 0,\n y: 0,\n width: _def2.width,\n height: _def2.height\n }).close();\n }\n m.close();\n }\n m.close();\n }\n});\n\n// Helper function for attr for style presentation attributes\nfunction style(s, item, scene, tag, defs) {\n var styleList;\n if (item == null) return s;\n if (tag === 'bgrect' && scene.interactive === false) {\n s['pointer-events'] = 'none';\n }\n if (tag === 'bgfore') {\n if (scene.interactive === false) {\n s['pointer-events'] = 'none';\n }\n s.display = 'none';\n if (item.fill !== null) return s;\n }\n if (tag === 'image' && item.smooth === false) {\n styleList = ['image-rendering: optimizeSpeed;', 'image-rendering: pixelated;'];\n }\n if (tag === 'text') {\n s['font-family'] = fontFamily(item);\n s['font-size'] = fontSize(item) + 'px';\n s['font-style'] = item.fontStyle;\n s['font-variant'] = item.fontVariant;\n s['font-weight'] = item.fontWeight;\n }\n for (var prop in stylesAttr) {\n var _value3 = item[prop];\n var name = stylesAttr[prop];\n if (_value3 === 'transparent' && (name === 'fill' || name === 'stroke')) ;else if (_value3 != null) {\n if (isGradient(_value3)) {\n _value3 = gradientRef(_value3, defs.gradient, '');\n }\n s[name] = _value3;\n }\n }\n for (var _prop2 in stylesCss) {\n var _value4 = item[_prop2];\n if (_value4 != null) {\n styleList = styleList || [];\n styleList.push(\"\".concat(stylesCss[_prop2], \": \").concat(_value4, \";\"));\n }\n }\n if (styleList) {\n s.style = styleList.join(' ');\n }\n return s;\n}\nvar Canvas = 'canvas';\nvar PNG = 'png';\nvar SVG = 'svg';\nvar None = 'none';\nvar RenderType = {\n Canvas: Canvas,\n PNG: PNG,\n SVG: SVG,\n None: None\n};\nvar modules = {};\nmodules[Canvas] = modules[PNG] = {\n renderer: CanvasRenderer,\n headless: CanvasRenderer,\n handler: CanvasHandler\n};\nmodules[SVG] = {\n renderer: SVGRenderer,\n headless: SVGStringRenderer,\n handler: SVGHandler\n};\nmodules[None] = {};\nfunction renderModule(name, _) {\n name = String(name || '').toLowerCase();\n if (arguments.length > 1) {\n modules[name] = _;\n return this;\n } else {\n return modules[name];\n }\n}\nfunction intersect(scene, bounds, filter) {\n var hits = [],\n // intersection results\n box = new Bounds().union(bounds),\n // defensive copy\n type = scene.marktype;\n return type ? intersectMark(scene, box, filter, hits) : type === 'group' ? intersectGroup(scene, box, filter, hits) : error('Intersect scene must be mark node or group item.');\n}\nfunction intersectMark(mark, box, filter, hits) {\n if (visitMark(mark, box, filter)) {\n var items = mark.items,\n _type2 = mark.marktype,\n n = items.length;\n var i = 0;\n if (_type2 === 'group') {\n for (; i < n; ++i) {\n intersectGroup(items[i], box, filter, hits);\n }\n } else {\n for (var test = Marks[_type2].isect; i < n; ++i) {\n var item = items[i];\n if (intersectItem(item, box, test)) hits.push(item);\n }\n }\n }\n return hits;\n}\nfunction visitMark(mark, box, filter) {\n // process if bounds intersect and if\n // (1) mark is a group mark (so we must recurse), or\n // (2) mark is interactive and passes filter\n return mark.bounds && box.intersects(mark.bounds) && (mark.marktype === 'group' || mark.interactive !== false && (!filter || filter(mark)));\n}\nfunction intersectGroup(group, box, filter, hits) {\n // test intersect against group\n // skip groups by default unless filter says otherwise\n if (filter && filter(group.mark) && intersectItem(group, box, Marks.group.isect)) {\n hits.push(group);\n }\n\n // recursively test children marks\n // translate box to group coordinate space\n var marks = group.items,\n n = marks && marks.length;\n if (n) {\n var _x3 = group.x || 0,\n _y2 = group.y || 0;\n box.translate(-_x3, -_y2);\n for (var i = 0; i < n; ++i) {\n intersectMark(marks[i], box, filter, hits);\n }\n box.translate(_x3, _y2);\n }\n return hits;\n}\nfunction intersectItem(item, box, test) {\n // test bounds enclosure, bounds intersection, then detailed test\n var bounds = item.bounds;\n return box.encloses(bounds) || box.intersects(bounds) && test(item, box);\n}\nvar clipBounds = new Bounds();\nfunction boundClip(mark) {\n var clip = mark.clip;\n if (isFunction(clip)) {\n clip(boundContext(clipBounds.clear()));\n } else if (clip) {\n clipBounds.set(0, 0, mark.group.width, mark.group.height);\n } else return;\n mark.bounds.intersect(clipBounds);\n}\nvar TOLERANCE = 1e-9;\nfunction sceneEqual(a, b, key) {\n return a === b ? true : key === 'path' ? pathEqual(a, b) : a instanceof Date && b instanceof Date ? +a === +b : isNumber(a) && isNumber(b) ? Math.abs(a - b) <= TOLERANCE : !a || !b || !isObject(a) && !isObject(b) ? a == b : objectEqual(a, b);\n}\nfunction pathEqual(a, b) {\n return sceneEqual(parse(a), parse(b));\n}\nfunction objectEqual(a, b) {\n var ka = Object.keys(a),\n kb = Object.keys(b),\n key,\n i;\n if (ka.length !== kb.length) return false;\n ka.sort();\n kb.sort();\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i]) return false;\n }\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!sceneEqual(a[key], b[key], key)) return false;\n }\n return typeof a === typeof b;\n}\nfunction resetSVGDefIds() {\n resetSVGClipId();\n resetSVGGradientId();\n}\nexport { Bounds, CanvasHandler, CanvasRenderer, Gradient, GroupItem, Handler, Item, Marks, RenderType, Renderer, ResourceLoader, SVGHandler, SVGRenderer, SVGStringRenderer, Scenegraph, boundClip, boundContext, boundItem, boundMark, boundStroke, domChild, domClear, domCreate, domFind, font, fontFamily, fontSize, intersect, intersectBoxLine, intersectPath, intersectPoint, intersectRule, lineHeight, markup, multiLineOffset, curves as pathCurves, pathEqual, parse as pathParse, vg_rect as pathRectangle, pathRender, symbols as pathSymbols, vg_trail as pathTrail, point, renderModule, resetSVGClipId, resetSVGDefIds, sceneEqual, sceneFromJSON, pickVisit as scenePickVisit, sceneToJSON, visit as sceneVisit, zorder as sceneZOrder, serializeXML, textMetrics };","import constant from \"./constant.js\";\nimport { withPath } from \"./path.js\";\nimport asterisk from \"./symbol/asterisk.js\";\nimport circle from \"./symbol/circle.js\";\nimport cross from \"./symbol/cross.js\";\nimport diamond from \"./symbol/diamond.js\";\nimport diamond2 from \"./symbol/diamond2.js\";\nimport plus from \"./symbol/plus.js\";\nimport square from \"./symbol/square.js\";\nimport square2 from \"./symbol/square2.js\";\nimport star from \"./symbol/star.js\";\nimport triangle from \"./symbol/triangle.js\";\nimport triangle2 from \"./symbol/triangle2.js\";\nimport wye from \"./symbol/wye.js\";\nimport times from \"./symbol/times.js\";\n\n// These symbols are designed to be filled.\nexport var symbolsFill = [circle, cross, diamond, square, star, triangle, wye];\n\n// These symbols are designed to be stroked (with a width of 1.5px and round caps).\nexport var symbolsStroke = [circle, plus, times, triangle2, asterisk, square2, diamond2];\nexport default function Symbol(type, size) {\n var context = null,\n path = withPath(symbol);\n type = typeof type === \"function\" ? type : constant(type || circle);\n size = typeof size === \"function\" ? size : constant(size === undefined ? 64 : +size);\n function symbol() {\n var buffer;\n if (!context) context = buffer = path();\n type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n symbol.type = function (_) {\n return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n };\n symbol.size = function (_) {\n return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n };\n symbol.context = function (_) {\n return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n };\n return symbol;\n}","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport { Transform } from 'vega-dataflow';\nimport { Marks, boundClip, GroupItem, Item, Bounds, multiLineOffset, boundStroke } from 'vega-scenegraph';\nimport { inherits, peek, isObject } from 'vega-util';\nvar Top = 'top';\nvar Left = 'left';\nvar Right = 'right';\nvar Bottom = 'bottom';\nvar TopLeft = 'top-left';\nvar TopRight = 'top-right';\nvar BottomLeft = 'bottom-left';\nvar BottomRight = 'bottom-right';\nvar Start = 'start';\nvar Middle = 'middle';\nvar End = 'end';\nvar X = 'x';\nvar Y = 'y';\nvar Group = 'group';\nvar AxisRole = 'axis';\nvar TitleRole = 'title';\nvar FrameRole = 'frame';\nvar ScopeRole = 'scope';\nvar LegendRole = 'legend';\nvar RowHeader = 'row-header';\nvar RowFooter = 'row-footer';\nvar RowTitle = 'row-title';\nvar ColHeader = 'column-header';\nvar ColFooter = 'column-footer';\nvar ColTitle = 'column-title';\nvar Padding = 'padding';\nvar Symbols = 'symbol';\nvar Fit = 'fit';\nvar FitX = 'fit-x';\nvar FitY = 'fit-y';\nvar Pad = 'pad';\nvar None = 'none';\nvar All = 'all';\nvar Each = 'each';\nvar Flush = 'flush';\nvar Column = 'column';\nvar Row = 'row';\n\n/**\n * Calculate bounding boxes for scenegraph items.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {object} params.mark - The scenegraph mark instance to bound.\n */\nfunction Bound(params) {\n Transform.call(this, null, params);\n}\ninherits(Bound, Transform, {\n transform: function transform(_, pulse) {\n var view = pulse.dataflow,\n mark = _.mark,\n type = mark.marktype,\n entry = Marks[type],\n bound = entry.bound;\n var markBounds = mark.bounds,\n rebound;\n if (entry.nested) {\n // multi-item marks have a single bounds instance\n if (mark.items.length) view.dirty(mark.items[0]);\n markBounds = boundItem(mark, bound);\n mark.items.forEach(function (item) {\n item.bounds.clear().union(markBounds);\n });\n } else if (type === Group || _.modified()) {\n // operator parameters modified -> re-bound all items\n // updates group bounds in response to modified group content\n pulse.visit(pulse.MOD, function (item) {\n return view.dirty(item);\n });\n markBounds.clear();\n mark.items.forEach(function (item) {\n return markBounds.union(boundItem(item, bound));\n });\n\n // force reflow for axes/legends/titles to propagate any layout changes\n switch (mark.role) {\n case AxisRole:\n case LegendRole:\n case TitleRole:\n pulse.reflow();\n }\n } else {\n // incrementally update bounds, re-bound mark as needed\n rebound = pulse.changed(pulse.REM);\n pulse.visit(pulse.ADD, function (item) {\n markBounds.union(boundItem(item, bound));\n });\n pulse.visit(pulse.MOD, function (item) {\n rebound = rebound || markBounds.alignsWith(item.bounds);\n view.dirty(item);\n markBounds.union(boundItem(item, bound));\n });\n if (rebound) {\n markBounds.clear();\n mark.items.forEach(function (item) {\n return markBounds.union(item.bounds);\n });\n }\n }\n\n // ensure mark bounds do not exceed any clipping region\n boundClip(mark);\n return pulse.modifies('bounds');\n }\n});\nfunction boundItem(item, bound, opt) {\n return bound(item.bounds.clear(), item, opt);\n}\nvar COUNTER_NAME = ':vega_identifier:';\n\n/**\n * Adds a unique identifier to all added tuples.\n * This transform creates a new signal that serves as an id counter.\n * As a result, the id counter is shared across all instances of this\n * transform, generating unique ids across multiple data streams. In\n * addition, this signal value can be included in a snapshot of the\n * dataflow state, enabling correct resumption of id allocation.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {string} params.as - The field name for the generated identifier.\n */\nfunction Identifier(params) {\n Transform.call(this, 0, params);\n}\nIdentifier.Definition = {\n 'type': 'Identifier',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'as',\n 'type': 'string',\n 'required': true\n }]\n};\ninherits(Identifier, Transform, {\n transform: function transform(_, pulse) {\n var counter = getCounter(pulse.dataflow),\n as = _.as;\n var id = counter.value;\n pulse.visit(pulse.ADD, function (t) {\n return t[as] = t[as] || ++id;\n });\n counter.set(this.value = id);\n return pulse;\n }\n});\nfunction getCounter(view) {\n return view._signals[COUNTER_NAME] || (view._signals[COUNTER_NAME] = view.add(0));\n}\n\n/**\n * Bind scenegraph items to a scenegraph mark instance.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {object} params.markdef - The mark definition for creating the mark.\n * This is an object of legal scenegraph mark properties which *must* include\n * the 'marktype' property.\n */\nfunction Mark(params) {\n Transform.call(this, null, params);\n}\ninherits(Mark, Transform, {\n transform: function transform(_, pulse) {\n var mark = this.value;\n\n // acquire mark on first invocation, bind context and group\n if (!mark) {\n mark = pulse.dataflow.scenegraph().mark(_.markdef, lookup$1(_), _.index);\n mark.group.context = _.context;\n if (!_.context.group) _.context.group = mark.group;\n mark.source = this.source; // point to upstream collector\n mark.clip = _.clip;\n mark.interactive = _.interactive;\n this.value = mark;\n }\n\n // initialize entering items\n var Init = mark.marktype === Group ? GroupItem : Item;\n pulse.visit(pulse.ADD, function (item) {\n return Init.call(item, mark);\n });\n\n // update clipping and/or interactive status\n if (_.modified('clip') || _.modified('interactive')) {\n mark.clip = _.clip;\n mark.interactive = !!_.interactive;\n mark.zdirty = true; // force scenegraph re-eval\n pulse.reflow();\n }\n\n // bind items array to scenegraph mark\n mark.items = pulse.source;\n return pulse;\n }\n});\nfunction lookup$1(_) {\n var g = _.groups,\n p = _.parent;\n return g && g.size === 1 ? g.get(Object.keys(g.object)[0]) : g && p ? g.lookup(p) : null;\n}\n\n/**\n * Analyze items for overlap, changing opacity to hide items with\n * overlapping bounding boxes. This transform will preserve at least\n * two items (e.g., first and last) even if overlap persists.\n * @param {object} params - The parameters for this operator.\n * @param {function(*,*): number} [params.sort] - A comparator\n * function for sorting items.\n * @param {object} [params.method] - The overlap removal method to apply.\n * One of 'parity' (default, hide every other item until there is no\n * more overlap) or 'greedy' (sequentially scan and hide and items that\n * overlap with the last visible item).\n * @param {object} [params.boundScale] - A scale whose range should be used\n * to bound the items. Items exceeding the bounds of the scale range\n * will be treated as overlapping. If null or undefined, no bounds check\n * will be applied.\n * @param {object} [params.boundOrient] - The orientation of the scale\n * (top, bottom, left, or right) used to bound items. This parameter is\n * ignored if boundScale is null or undefined.\n * @param {object} [params.boundTolerance] - The tolerance in pixels for\n * bound inclusion testing (default 1). This specifies by how many pixels\n * an item's bounds may exceed the scale range bounds and not be culled.\n * @constructor\n */\nfunction Overlap(params) {\n Transform.call(this, null, params);\n}\nvar methods = {\n parity: function parity(items) {\n return items.filter(function (item, i) {\n return i % 2 ? item.opacity = 0 : 1;\n });\n },\n greedy: function greedy(items, sep) {\n var a;\n return items.filter(function (b, i) {\n return !i || !intersect(a.bounds, b.bounds, sep) ? (a = b, 1) : b.opacity = 0;\n });\n }\n};\n\n// compute bounding box intersection\n// including padding pixels of separation\nvar intersect = function intersect(a, b, sep) {\n return sep > Math.max(b.x1 - a.x2, a.x1 - b.x2, b.y1 - a.y2, a.y1 - b.y2);\n};\nvar hasOverlap = function hasOverlap(items, pad) {\n for (var i = 1, n = items.length, a = items[0].bounds, b; i < n; a = b, ++i) {\n if (intersect(a, b = items[i].bounds, pad)) return true;\n }\n};\nvar hasBounds = function hasBounds(item) {\n var b = item.bounds;\n return b.width() > 1 && b.height() > 1;\n};\nvar boundTest = function boundTest(scale, orient, tolerance) {\n var range = scale.range(),\n b = new Bounds();\n if (orient === Top || orient === Bottom) {\n b.set(range[0], -Infinity, range[1], +Infinity);\n } else {\n b.set(-Infinity, range[0], +Infinity, range[1]);\n }\n b.expand(tolerance || 1);\n return function (item) {\n return b.encloses(item.bounds);\n };\n};\n\n// reset all items to be fully opaque\nvar reset = function reset(source) {\n source.forEach(function (item) {\n return item.opacity = 1;\n });\n return source;\n};\n\n// add all tuples to mod, fork pulse if parameters were modified\n// fork prevents cross-stream tuple pollution (e.g., pulse from scale)\nvar reflow = function reflow(pulse, _) {\n return pulse.reflow(_.modified()).modifies('opacity');\n};\ninherits(Overlap, Transform, {\n transform: function transform(_, pulse) {\n var reduce = methods[_.method] || methods.parity,\n sep = _.separation || 0;\n var source = pulse.materialize(pulse.SOURCE).source,\n items,\n test;\n if (!source || !source.length) return;\n if (!_.method) {\n // early exit if method is falsy\n if (_.modified('method')) {\n reset(source);\n pulse = reflow(pulse, _);\n }\n return pulse;\n }\n\n // skip labels with no content\n source = source.filter(hasBounds);\n\n // early exit, nothing to do\n if (!source.length) return;\n if (_.sort) {\n source = source.slice().sort(_.sort);\n }\n items = reset(source);\n pulse = reflow(pulse, _);\n if (items.length >= 3 && hasOverlap(items, sep)) {\n do {\n items = reduce(items, sep);\n } while (items.length >= 3 && hasOverlap(items, sep));\n if (items.length < 3 && !peek(source).opacity) {\n if (items.length > 1) peek(items).opacity = 0;\n peek(source).opacity = 1;\n }\n }\n if (_.boundScale && _.boundTolerance >= 0) {\n test = boundTest(_.boundScale, _.boundOrient, +_.boundTolerance);\n source.forEach(function (item) {\n if (!test(item)) item.opacity = 0;\n });\n }\n\n // re-calculate mark bounds\n var bounds = items[0].mark.bounds.clear();\n source.forEach(function (item) {\n if (item.opacity) bounds.union(item.bounds);\n });\n return pulse;\n }\n});\n\n/**\n * Queue modified scenegraph items for rendering.\n * @constructor\n */\nfunction Render(params) {\n Transform.call(this, null, params);\n}\ninherits(Render, Transform, {\n transform: function transform(_, pulse) {\n var view = pulse.dataflow;\n pulse.visit(pulse.ALL, function (item) {\n return view.dirty(item);\n });\n\n // set z-index dirty flag as needed\n if (pulse.fields && pulse.fields['zindex']) {\n var item = pulse.source && pulse.source[0];\n if (item) item.mark.zdirty = true;\n }\n }\n});\nvar tempBounds = new Bounds();\nfunction set(item, property, value) {\n return item[property] === value ? 0 : (item[property] = value, 1);\n}\nfunction isYAxis(mark) {\n var orient = mark.items[0].orient;\n return orient === Left || orient === Right;\n}\nfunction axisIndices(datum) {\n var index = +datum.grid;\n return [datum.ticks ? index++ : -1,\n // ticks index\n datum.labels ? index++ : -1,\n // labels index\n index + +datum.domain // title index\n ];\n}\n\nfunction axisLayout(view, axis, width, height) {\n var item = axis.items[0],\n datum = item.datum,\n delta = item.translate != null ? item.translate : 0.5,\n orient = item.orient,\n indices = axisIndices(datum),\n range = item.range,\n offset = item.offset,\n position = item.position,\n minExtent = item.minExtent,\n maxExtent = item.maxExtent,\n title = datum.title && item.items[indices[2]].items[0],\n titlePadding = item.titlePadding,\n bounds = item.bounds,\n dl = title && multiLineOffset(title),\n x = 0,\n y = 0,\n i,\n s;\n tempBounds.clear().union(bounds);\n bounds.clear();\n if ((i = indices[0]) > -1) bounds.union(item.items[i].bounds);\n if ((i = indices[1]) > -1) bounds.union(item.items[i].bounds);\n\n // position axis group and title\n switch (orient) {\n case Top:\n x = position || 0;\n y = -offset;\n s = Math.max(minExtent, Math.min(maxExtent, -bounds.y1));\n bounds.add(0, -s).add(range, 0);\n if (title) axisTitleLayout(view, title, s, titlePadding, dl, 0, -1, bounds);\n break;\n case Left:\n x = -offset;\n y = position || 0;\n s = Math.max(minExtent, Math.min(maxExtent, -bounds.x1));\n bounds.add(-s, 0).add(0, range);\n if (title) axisTitleLayout(view, title, s, titlePadding, dl, 1, -1, bounds);\n break;\n case Right:\n x = width + offset;\n y = position || 0;\n s = Math.max(minExtent, Math.min(maxExtent, bounds.x2));\n bounds.add(0, 0).add(s, range);\n if (title) axisTitleLayout(view, title, s, titlePadding, dl, 1, 1, bounds);\n break;\n case Bottom:\n x = position || 0;\n y = height + offset;\n s = Math.max(minExtent, Math.min(maxExtent, bounds.y2));\n bounds.add(0, 0).add(range, s);\n if (title) axisTitleLayout(view, title, s, titlePadding, 0, 0, 1, bounds);\n break;\n default:\n x = item.x;\n y = item.y;\n }\n\n // update bounds\n boundStroke(bounds.translate(x, y), item);\n if (set(item, 'x', x + delta) | set(item, 'y', y + delta)) {\n item.bounds = tempBounds;\n view.dirty(item);\n item.bounds = bounds;\n view.dirty(item);\n }\n return item.mark.bounds.clear().union(bounds);\n}\nfunction axisTitleLayout(view, title, offset, pad, dl, isYAxis, sign, bounds) {\n var b = title.bounds;\n if (title.auto) {\n var v = sign * (offset + dl + pad);\n var dx = 0,\n dy = 0;\n view.dirty(title);\n isYAxis ? dx = (title.x || 0) - (title.x = v) : dy = (title.y || 0) - (title.y = v);\n title.mark.bounds.clear().union(b.translate(-dx, -dy));\n view.dirty(title);\n }\n bounds.union(b);\n}\n\n// aggregation functions for grid margin determination\nvar min = function min(a, b) {\n return Math.floor(Math.min(a, b));\n};\nvar max = function max(a, b) {\n return Math.ceil(Math.max(a, b));\n};\nfunction gridLayoutGroups(group) {\n var _views$rowheaders, _views$rowfooters, _views$colheaders, _views$colfooters, _views$marks;\n var groups = group.items,\n n = groups.length,\n i = 0,\n mark,\n items;\n var views = {\n marks: [],\n rowheaders: [],\n rowfooters: [],\n colheaders: [],\n colfooters: [],\n rowtitle: null,\n coltitle: null\n };\n\n // layout axes, gather legends, collect bounds\n for (; i < n; ++i) {\n mark = groups[i];\n items = mark.items;\n if (mark.marktype === Group) {\n switch (mark.role) {\n case AxisRole:\n case LegendRole:\n case TitleRole:\n break;\n case RowHeader:\n (_views$rowheaders = views.rowheaders).push.apply(_views$rowheaders, _toConsumableArray(items));\n break;\n case RowFooter:\n (_views$rowfooters = views.rowfooters).push.apply(_views$rowfooters, _toConsumableArray(items));\n break;\n case ColHeader:\n (_views$colheaders = views.colheaders).push.apply(_views$colheaders, _toConsumableArray(items));\n break;\n case ColFooter:\n (_views$colfooters = views.colfooters).push.apply(_views$colfooters, _toConsumableArray(items));\n break;\n case RowTitle:\n views.rowtitle = items[0];\n break;\n case ColTitle:\n views.coltitle = items[0];\n break;\n default:\n (_views$marks = views.marks).push.apply(_views$marks, _toConsumableArray(items));\n }\n }\n }\n return views;\n}\nfunction bboxFlush(item) {\n return new Bounds().set(0, 0, item.width || 0, item.height || 0);\n}\nfunction bboxFull(item) {\n var b = item.bounds.clone();\n return b.empty() ? b.set(0, 0, 0, 0) : b.translate(-(item.x || 0), -(item.y || 0));\n}\nfunction get(opt, key, d) {\n var v = isObject(opt) ? opt[key] : opt;\n return v != null ? v : d !== undefined ? d : 0;\n}\nfunction offsetValue(v) {\n return v < 0 ? Math.ceil(-v) : 0;\n}\nfunction gridLayout(view, groups, opt) {\n var dirty = !opt.nodirty,\n bbox = opt.bounds === Flush ? bboxFlush : bboxFull,\n bounds = tempBounds.set(0, 0, 0, 0),\n alignCol = get(opt.align, Column),\n alignRow = get(opt.align, Row),\n padCol = get(opt.padding, Column),\n padRow = get(opt.padding, Row),\n ncols = opt.columns || groups.length,\n nrows = ncols <= 0 ? 1 : Math.ceil(groups.length / ncols),\n n = groups.length,\n xOffset = Array(n),\n xExtent = Array(ncols),\n xMax = 0,\n yOffset = Array(n),\n yExtent = Array(nrows),\n yMax = 0,\n dx = Array(n),\n dy = Array(n),\n boxes = Array(n),\n m,\n i,\n c,\n r,\n b,\n g,\n px,\n py,\n x,\n y,\n offset;\n for (i = 0; i < ncols; ++i) xExtent[i] = 0;\n for (i = 0; i < nrows; ++i) yExtent[i] = 0;\n\n // determine offsets for each group\n for (i = 0; i < n; ++i) {\n g = groups[i];\n b = boxes[i] = bbox(g);\n g.x = g.x || 0;\n dx[i] = 0;\n g.y = g.y || 0;\n dy[i] = 0;\n c = i % ncols;\n r = ~~(i / ncols);\n xMax = Math.max(xMax, px = Math.ceil(b.x2));\n yMax = Math.max(yMax, py = Math.ceil(b.y2));\n xExtent[c] = Math.max(xExtent[c], px);\n yExtent[r] = Math.max(yExtent[r], py);\n xOffset[i] = padCol + offsetValue(b.x1);\n yOffset[i] = padRow + offsetValue(b.y1);\n if (dirty) view.dirty(groups[i]);\n }\n\n // set initial alignment offsets\n for (i = 0; i < n; ++i) {\n if (i % ncols === 0) xOffset[i] = 0;\n if (i < ncols) yOffset[i] = 0;\n }\n\n // enforce column alignment constraints\n if (alignCol === Each) {\n for (c = 1; c < ncols; ++c) {\n for (offset = 0, i = c; i < n; i += ncols) {\n if (offset < xOffset[i]) offset = xOffset[i];\n }\n for (i = c; i < n; i += ncols) {\n xOffset[i] = offset + xExtent[c - 1];\n }\n }\n } else if (alignCol === All) {\n for (offset = 0, i = 0; i < n; ++i) {\n if (i % ncols && offset < xOffset[i]) offset = xOffset[i];\n }\n for (i = 0; i < n; ++i) {\n if (i % ncols) xOffset[i] = offset + xMax;\n }\n } else {\n for (alignCol = false, c = 1; c < ncols; ++c) {\n for (i = c; i < n; i += ncols) {\n xOffset[i] += xExtent[c - 1];\n }\n }\n }\n\n // enforce row alignment constraints\n if (alignRow === Each) {\n for (r = 1; r < nrows; ++r) {\n for (offset = 0, i = r * ncols, m = i + ncols; i < m; ++i) {\n if (offset < yOffset[i]) offset = yOffset[i];\n }\n for (i = r * ncols; i < m; ++i) {\n yOffset[i] = offset + yExtent[r - 1];\n }\n }\n } else if (alignRow === All) {\n for (offset = 0, i = ncols; i < n; ++i) {\n if (offset < yOffset[i]) offset = yOffset[i];\n }\n for (i = ncols; i < n; ++i) {\n yOffset[i] = offset + yMax;\n }\n } else {\n for (alignRow = false, r = 1; r < nrows; ++r) {\n for (i = r * ncols, m = i + ncols; i < m; ++i) {\n yOffset[i] += yExtent[r - 1];\n }\n }\n }\n\n // perform horizontal grid layout\n for (x = 0, i = 0; i < n; ++i) {\n x = xOffset[i] + (i % ncols ? x : 0);\n dx[i] += x - groups[i].x;\n }\n\n // perform vertical grid layout\n for (c = 0; c < ncols; ++c) {\n for (y = 0, i = c; i < n; i += ncols) {\n y += yOffset[i];\n dy[i] += y - groups[i].y;\n }\n }\n\n // perform horizontal centering\n if (alignCol && get(opt.center, Column) && nrows > 1) {\n for (i = 0; i < n; ++i) {\n b = alignCol === All ? xMax : xExtent[i % ncols];\n x = b - boxes[i].x2 - groups[i].x - dx[i];\n if (x > 0) dx[i] += x / 2;\n }\n }\n\n // perform vertical centering\n if (alignRow && get(opt.center, Row) && ncols !== 1) {\n for (i = 0; i < n; ++i) {\n b = alignRow === All ? yMax : yExtent[~~(i / ncols)];\n y = b - boxes[i].y2 - groups[i].y - dy[i];\n if (y > 0) dy[i] += y / 2;\n }\n }\n\n // position grid relative to anchor\n for (i = 0; i < n; ++i) {\n bounds.union(boxes[i].translate(dx[i], dy[i]));\n }\n x = get(opt.anchor, X);\n y = get(opt.anchor, Y);\n switch (get(opt.anchor, Column)) {\n case End:\n x -= bounds.width();\n break;\n case Middle:\n x -= bounds.width() / 2;\n }\n switch (get(opt.anchor, Row)) {\n case End:\n y -= bounds.height();\n break;\n case Middle:\n y -= bounds.height() / 2;\n }\n x = Math.round(x);\n y = Math.round(y);\n\n // update mark positions, bounds, dirty\n bounds.clear();\n for (i = 0; i < n; ++i) {\n groups[i].mark.bounds.clear();\n }\n for (i = 0; i < n; ++i) {\n g = groups[i];\n g.x += dx[i] += x;\n g.y += dy[i] += y;\n bounds.union(g.mark.bounds.union(g.bounds.translate(dx[i], dy[i])));\n if (dirty) view.dirty(g);\n }\n return bounds;\n}\nfunction trellisLayout(view, group, opt) {\n var views = gridLayoutGroups(group),\n groups = views.marks,\n bbox = opt.bounds === Flush ? boundFlush : boundFull,\n off = opt.offset,\n ncols = opt.columns || groups.length,\n nrows = ncols <= 0 ? 1 : Math.ceil(groups.length / ncols),\n cells = nrows * ncols,\n x,\n y,\n x2,\n y2,\n anchor,\n band,\n offset;\n\n // -- initial grid layout\n var bounds = gridLayout(view, groups, opt);\n if (bounds.empty()) bounds.set(0, 0, 0, 0); // empty grid\n\n // -- layout grid headers and footers --\n\n // perform row header layout\n if (views.rowheaders) {\n band = get(opt.headerBand, Row, null);\n x = layoutHeaders(view, views.rowheaders, groups, ncols, nrows, -get(off, 'rowHeader'), min, 0, bbox, 'x1', 0, ncols, 1, band);\n }\n\n // perform column header layout\n if (views.colheaders) {\n band = get(opt.headerBand, Column, null);\n y = layoutHeaders(view, views.colheaders, groups, ncols, ncols, -get(off, 'columnHeader'), min, 1, bbox, 'y1', 0, 1, ncols, band);\n }\n\n // perform row footer layout\n if (views.rowfooters) {\n band = get(opt.footerBand, Row, null);\n x2 = layoutHeaders(view, views.rowfooters, groups, ncols, nrows, get(off, 'rowFooter'), max, 0, bbox, 'x2', ncols - 1, ncols, 1, band);\n }\n\n // perform column footer layout\n if (views.colfooters) {\n band = get(opt.footerBand, Column, null);\n y2 = layoutHeaders(view, views.colfooters, groups, ncols, ncols, get(off, 'columnFooter'), max, 1, bbox, 'y2', cells - ncols, 1, ncols, band);\n }\n\n // perform row title layout\n if (views.rowtitle) {\n anchor = get(opt.titleAnchor, Row);\n offset = get(off, 'rowTitle');\n offset = anchor === End ? x2 + offset : x - offset;\n band = get(opt.titleBand, Row, 0.5);\n layoutTitle(view, views.rowtitle, offset, 0, bounds, band);\n }\n\n // perform column title layout\n if (views.coltitle) {\n anchor = get(opt.titleAnchor, Column);\n offset = get(off, 'columnTitle');\n offset = anchor === End ? y2 + offset : y - offset;\n band = get(opt.titleBand, Column, 0.5);\n layoutTitle(view, views.coltitle, offset, 1, bounds, band);\n }\n}\nfunction boundFlush(item, field) {\n return field === 'x1' ? item.x || 0 : field === 'y1' ? item.y || 0 : field === 'x2' ? (item.x || 0) + (item.width || 0) : field === 'y2' ? (item.y || 0) + (item.height || 0) : undefined;\n}\nfunction boundFull(item, field) {\n return item.bounds[field];\n}\nfunction layoutHeaders(view, headers, groups, ncols, limit, offset, agg, isX, bound, bf, start, stride, back, band) {\n var n = groups.length,\n init = 0,\n edge = 0,\n i,\n j,\n k,\n m,\n b,\n h,\n g,\n x,\n y;\n\n // if no groups, early exit and return 0\n if (!n) return init;\n\n // compute margin\n for (i = start; i < n; i += stride) {\n if (groups[i]) init = agg(init, bound(groups[i], bf));\n }\n\n // if no headers, return margin calculation\n if (!headers.length) return init;\n\n // check if number of headers exceeds number of rows or columns\n if (headers.length > limit) {\n view.warn('Grid headers exceed limit: ' + limit);\n headers = headers.slice(0, limit);\n }\n\n // apply offset\n init += offset;\n\n // clear mark bounds for all headers\n for (j = 0, m = headers.length; j < m; ++j) {\n view.dirty(headers[j]);\n headers[j].mark.bounds.clear();\n }\n\n // layout each header\n for (i = start, j = 0, m = headers.length; j < m; ++j, i += stride) {\n h = headers[j];\n b = h.mark.bounds;\n\n // search for nearest group to align to\n // necessary if table has empty cells\n for (k = i; k >= 0 && (g = groups[k]) == null; k -= back);\n\n // assign coordinates and update bounds\n if (isX) {\n x = band == null ? g.x : Math.round(g.bounds.x1 + band * g.bounds.width());\n y = init;\n } else {\n x = init;\n y = band == null ? g.y : Math.round(g.bounds.y1 + band * g.bounds.height());\n }\n b.union(h.bounds.translate(x - (h.x || 0), y - (h.y || 0)));\n h.x = x;\n h.y = y;\n view.dirty(h);\n\n // update current edge of layout bounds\n edge = agg(edge, b[bf]);\n }\n return edge;\n}\nfunction layoutTitle(view, g, offset, isX, bounds, band) {\n if (!g) return;\n view.dirty(g);\n\n // compute title coordinates\n var x = offset,\n y = offset;\n isX ? x = Math.round(bounds.x1 + band * bounds.width()) : y = Math.round(bounds.y1 + band * bounds.height());\n\n // assign coordinates and update bounds\n g.bounds.translate(x - (g.x || 0), y - (g.y || 0));\n g.mark.bounds.clear().union(g.bounds);\n g.x = x;\n g.y = y;\n\n // queue title for redraw\n view.dirty(g);\n}\n\n// utility for looking up legend layout configuration\nfunction lookup(config, orient) {\n var opt = config[orient] || {};\n return function (key, d) {\n return opt[key] != null ? opt[key] : config[key] != null ? config[key] : d;\n };\n}\n\n// if legends specify offset directly, use the maximum specified value\nfunction offsets(legends, value) {\n var max = -Infinity;\n legends.forEach(function (item) {\n if (item.offset != null) max = Math.max(max, item.offset);\n });\n return max > -Infinity ? max : value;\n}\nfunction legendParams(g, orient, config, xb, yb, w, h) {\n var _ = lookup(config, orient),\n offset = offsets(g, _('offset', 0)),\n anchor = _('anchor', Start),\n mult = anchor === End ? 1 : anchor === Middle ? 0.5 : 0;\n var p = {\n align: Each,\n bounds: _('bounds', Flush),\n columns: _('direction') === 'vertical' ? 1 : g.length,\n padding: _('margin', 8),\n center: _('center'),\n nodirty: true\n };\n switch (orient) {\n case Left:\n p.anchor = {\n x: Math.floor(xb.x1) - offset,\n column: End,\n y: mult * (h || xb.height() + 2 * xb.y1),\n row: anchor\n };\n break;\n case Right:\n p.anchor = {\n x: Math.ceil(xb.x2) + offset,\n y: mult * (h || xb.height() + 2 * xb.y1),\n row: anchor\n };\n break;\n case Top:\n p.anchor = {\n y: Math.floor(yb.y1) - offset,\n row: End,\n x: mult * (w || yb.width() + 2 * yb.x1),\n column: anchor\n };\n break;\n case Bottom:\n p.anchor = {\n y: Math.ceil(yb.y2) + offset,\n x: mult * (w || yb.width() + 2 * yb.x1),\n column: anchor\n };\n break;\n case TopLeft:\n p.anchor = {\n x: offset,\n y: offset\n };\n break;\n case TopRight:\n p.anchor = {\n x: w - offset,\n y: offset,\n column: End\n };\n break;\n case BottomLeft:\n p.anchor = {\n x: offset,\n y: h - offset,\n row: End\n };\n break;\n case BottomRight:\n p.anchor = {\n x: w - offset,\n y: h - offset,\n column: End,\n row: End\n };\n break;\n }\n return p;\n}\nfunction legendLayout(view, legend) {\n var item = legend.items[0],\n datum = item.datum,\n orient = item.orient,\n bounds = item.bounds,\n x = item.x,\n y = item.y,\n w,\n h;\n\n // cache current bounds for later comparison\n item._bounds ? item._bounds.clear().union(bounds) : item._bounds = bounds.clone();\n bounds.clear();\n\n // adjust legend to accommodate padding and title\n legendGroupLayout(view, item, item.items[0].items[0]);\n\n // aggregate bounds to determine size, and include origin\n bounds = legendBounds(item, bounds);\n w = 2 * item.padding;\n h = 2 * item.padding;\n if (!bounds.empty()) {\n w = Math.ceil(bounds.width() + w);\n h = Math.ceil(bounds.height() + h);\n }\n if (datum.type === Symbols) {\n legendEntryLayout(item.items[0].items[0].items[0].items);\n }\n if (orient !== None) {\n item.x = x = 0;\n item.y = y = 0;\n }\n item.width = w;\n item.height = h;\n boundStroke(bounds.set(x, y, x + w, y + h), item);\n item.mark.bounds.clear().union(bounds);\n return item;\n}\nfunction legendBounds(item, b) {\n // aggregate item bounds\n item.items.forEach(function (_) {\n return b.union(_.bounds);\n });\n\n // anchor to legend origin\n b.x1 = item.padding;\n b.y1 = item.padding;\n return b;\n}\nfunction legendGroupLayout(view, item, entry) {\n var pad = item.padding,\n ex = pad - entry.x,\n ey = pad - entry.y;\n if (!item.datum.title) {\n if (ex || ey) translate(view, entry, ex, ey);\n } else {\n var title = item.items[1].items[0],\n anchor = title.anchor,\n tpad = item.titlePadding || 0,\n tx = pad - title.x,\n ty = pad - title.y;\n switch (title.orient) {\n case Left:\n ex += Math.ceil(title.bounds.width()) + tpad;\n break;\n case Right:\n case Bottom:\n break;\n default:\n ey += title.bounds.height() + tpad;\n }\n if (ex || ey) translate(view, entry, ex, ey);\n switch (title.orient) {\n case Left:\n ty += legendTitleOffset(item, entry, title, anchor, 1, 1);\n break;\n case Right:\n tx += legendTitleOffset(item, entry, title, End, 0, 0) + tpad;\n ty += legendTitleOffset(item, entry, title, anchor, 1, 1);\n break;\n case Bottom:\n tx += legendTitleOffset(item, entry, title, anchor, 0, 0);\n ty += legendTitleOffset(item, entry, title, End, -1, 0, 1) + tpad;\n break;\n default:\n tx += legendTitleOffset(item, entry, title, anchor, 0, 0);\n }\n if (tx || ty) translate(view, title, tx, ty);\n\n // translate legend if title pushes into negative coordinates\n if ((tx = Math.round(title.bounds.x1 - pad)) < 0) {\n translate(view, entry, -tx, 0);\n translate(view, title, -tx, 0);\n }\n }\n}\nfunction legendTitleOffset(item, entry, title, anchor, y, lr, noBar) {\n var grad = item.datum.type !== 'symbol',\n vgrad = title.datum.vgrad,\n e = grad && (lr || !vgrad) && !noBar ? entry.items[0] : entry,\n s = e.bounds[y ? 'y2' : 'x2'] - item.padding,\n u = vgrad && lr ? s : 0,\n v = vgrad && lr ? 0 : s,\n o = y <= 0 ? 0 : multiLineOffset(title);\n return Math.round(anchor === Start ? u : anchor === End ? v - o : 0.5 * (s - o));\n}\nfunction translate(view, item, dx, dy) {\n item.x += dx;\n item.y += dy;\n item.bounds.translate(dx, dy);\n item.mark.bounds.translate(dx, dy);\n view.dirty(item);\n}\nfunction legendEntryLayout(entries) {\n // get max widths for each column\n var widths = entries.reduce(function (w, g) {\n w[g.column] = Math.max(g.bounds.x2 - g.x, w[g.column] || 0);\n return w;\n }, {});\n\n // set dimensions of legend entry groups\n entries.forEach(function (g) {\n g.width = widths[g.column];\n g.height = g.bounds.y2 - g.y;\n });\n}\nfunction titleLayout(view, mark, width, height, viewBounds) {\n var group = mark.items[0],\n frame = group.frame,\n orient = group.orient,\n anchor = group.anchor,\n offset = group.offset,\n padding = group.padding,\n title = group.items[0].items[0],\n subtitle = group.items[1] && group.items[1].items[0],\n end = orient === Left || orient === Right ? height : width,\n start = 0,\n x = 0,\n y = 0,\n sx = 0,\n sy = 0,\n pos;\n if (frame !== Group) {\n orient === Left ? (start = viewBounds.y2, end = viewBounds.y1) : orient === Right ? (start = viewBounds.y1, end = viewBounds.y2) : (start = viewBounds.x1, end = viewBounds.x2);\n } else if (orient === Left) {\n start = height, end = 0;\n }\n pos = anchor === Start ? start : anchor === End ? end : (start + end) / 2;\n if (subtitle && subtitle.text) {\n // position subtitle\n switch (orient) {\n case Top:\n case Bottom:\n sy = title.bounds.height() + padding;\n break;\n case Left:\n sx = title.bounds.width() + padding;\n break;\n case Right:\n sx = -title.bounds.width() - padding;\n break;\n }\n tempBounds.clear().union(subtitle.bounds);\n tempBounds.translate(sx - (subtitle.x || 0), sy - (subtitle.y || 0));\n if (set(subtitle, 'x', sx) | set(subtitle, 'y', sy)) {\n view.dirty(subtitle);\n subtitle.bounds.clear().union(tempBounds);\n subtitle.mark.bounds.clear().union(tempBounds);\n view.dirty(subtitle);\n }\n tempBounds.clear().union(subtitle.bounds);\n } else {\n tempBounds.clear();\n }\n tempBounds.union(title.bounds);\n\n // position title group\n switch (orient) {\n case Top:\n x = pos;\n y = viewBounds.y1 - tempBounds.height() - offset;\n break;\n case Left:\n x = viewBounds.x1 - tempBounds.width() - offset;\n y = pos;\n break;\n case Right:\n x = viewBounds.x2 + tempBounds.width() + offset;\n y = pos;\n break;\n case Bottom:\n x = pos;\n y = viewBounds.y2 + offset;\n break;\n default:\n x = group.x;\n y = group.y;\n }\n if (set(group, 'x', x) | set(group, 'y', y)) {\n tempBounds.translate(x, y);\n view.dirty(group);\n group.bounds.clear().union(tempBounds);\n mark.bounds.clear().union(tempBounds);\n view.dirty(group);\n }\n return group.bounds;\n}\n\n/**\n * Layout view elements such as axes and legends.\n * Also performs size adjustments.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {object} params.mark - Scenegraph mark of groups to layout.\n */\nfunction ViewLayout(params) {\n Transform.call(this, null, params);\n}\ninherits(ViewLayout, Transform, {\n transform: function transform(_, pulse) {\n var view = pulse.dataflow;\n _.mark.items.forEach(function (group) {\n if (_.layout) trellisLayout(view, group, _.layout);\n layoutGroup(view, group, _);\n });\n return shouldReflow(_.mark.group) ? pulse.reflow() : pulse;\n }\n});\nfunction shouldReflow(group) {\n // We typically should reflow if layout is invoked (#2568), as child items\n // may have resized and reflow ensures group bounds are re-calculated.\n // However, legend entries have a special exception to avoid instability.\n // For example, if a selected legend symbol gains a stroke on hover,\n // we don't want to re-position subsequent elements in the legend.\n return group && group.mark.role !== 'legend-entry';\n}\nfunction layoutGroup(view, group, _) {\n var items = group.items,\n width = Math.max(0, group.width || 0),\n height = Math.max(0, group.height || 0),\n viewBounds = new Bounds().set(0, 0, width, height),\n xBounds = viewBounds.clone(),\n yBounds = viewBounds.clone(),\n legends = [],\n title,\n mark,\n orient,\n b,\n i,\n n;\n\n // layout axes, gather legends, collect bounds\n for (i = 0, n = items.length; i < n; ++i) {\n mark = items[i];\n switch (mark.role) {\n case AxisRole:\n b = isYAxis(mark) ? xBounds : yBounds;\n b.union(axisLayout(view, mark, width, height));\n break;\n case TitleRole:\n title = mark;\n break;\n case LegendRole:\n legends.push(legendLayout(view, mark));\n break;\n case FrameRole:\n case ScopeRole:\n case RowHeader:\n case RowFooter:\n case RowTitle:\n case ColHeader:\n case ColFooter:\n case ColTitle:\n xBounds.union(mark.bounds);\n yBounds.union(mark.bounds);\n break;\n default:\n viewBounds.union(mark.bounds);\n }\n }\n\n // layout legends, adjust viewBounds\n if (legends.length) {\n // group legends by orient\n var l = {};\n legends.forEach(function (item) {\n orient = item.orient || Right;\n if (orient !== None) (l[orient] || (l[orient] = [])).push(item);\n });\n\n // perform grid layout for each orient group\n for (var _orient in l) {\n var g = l[_orient];\n gridLayout(view, g, legendParams(g, _orient, _.legends, xBounds, yBounds, width, height));\n }\n\n // update view bounds\n legends.forEach(function (item) {\n var b = item.bounds;\n if (!b.equals(item._bounds)) {\n item.bounds = item._bounds;\n view.dirty(item); // dirty previous location\n item.bounds = b;\n view.dirty(item);\n }\n if (_.autosize && (_.autosize.type === Fit || _.autosize.type === FitX || _.autosize.type === FitY)) {\n // For autosize fit, incorporate the orthogonal dimension only.\n // Legends that overrun the chart area will then be clipped;\n // otherwise the chart area gets reduced to nothing!\n switch (item.orient) {\n case Left:\n case Right:\n viewBounds.add(b.x1, 0).add(b.x2, 0);\n break;\n case Top:\n case Bottom:\n viewBounds.add(0, b.y1).add(0, b.y2);\n }\n } else {\n viewBounds.union(b);\n }\n });\n }\n\n // combine bounding boxes\n viewBounds.union(xBounds).union(yBounds);\n\n // layout title, adjust bounds\n if (title) {\n viewBounds.union(titleLayout(view, title, width, height, viewBounds));\n }\n\n // override aggregated view bounds if content is clipped\n if (group.clip) {\n viewBounds.set(0, 0, group.width || 0, group.height || 0);\n }\n\n // perform size adjustment\n viewSizeLayout(view, group, viewBounds, _);\n}\nfunction viewSizeLayout(view, group, viewBounds, _) {\n var auto = _.autosize || {},\n type = auto.type;\n if (view._autosize < 1 || !type) return;\n var viewWidth = view._width,\n viewHeight = view._height,\n width = Math.max(0, group.width || 0),\n left = Math.max(0, Math.ceil(-viewBounds.x1)),\n height = Math.max(0, group.height || 0),\n top = Math.max(0, Math.ceil(-viewBounds.y1));\n var right = Math.max(0, Math.ceil(viewBounds.x2 - width)),\n bottom = Math.max(0, Math.ceil(viewBounds.y2 - height));\n if (auto.contains === Padding) {\n var padding = view.padding();\n viewWidth -= padding.left + padding.right;\n viewHeight -= padding.top + padding.bottom;\n }\n if (type === None) {\n left = 0;\n top = 0;\n width = viewWidth;\n height = viewHeight;\n } else if (type === Fit) {\n width = Math.max(0, viewWidth - left - right);\n height = Math.max(0, viewHeight - top - bottom);\n } else if (type === FitX) {\n width = Math.max(0, viewWidth - left - right);\n viewHeight = height + top + bottom;\n } else if (type === FitY) {\n viewWidth = width + left + right;\n height = Math.max(0, viewHeight - top - bottom);\n } else if (type === Pad) {\n viewWidth = width + left + right;\n viewHeight = height + top + bottom;\n }\n view._resizeView(viewWidth, viewHeight, width, height, [left, top], auto.resize);\n}\nexport { Bound as bound, Identifier as identifier, Mark as mark, Overlap as overlap, Render as render, ViewLayout as viewlayout };","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nexport default function sum(values, valueof) {\n var sum = 0;\n if (valueof === undefined) {\n var _iterator = _createForOfIteratorHelper(values),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var value = _step.value;\n if (value = +value) {\n sum += value;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n } else {\n var index = -1;\n var _iterator2 = _createForOfIteratorHelper(values),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _value = _step2.value;\n if (_value = +valueof(_value, ++index, values)) {\n sum += _value;\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n return sum;\n}","import \"core-js/modules/es.math.hypot.js\";\nimport { Transform, ingest, tupleid, stableCompare } from 'vega-dataflow';\nimport { tickCount, tickFormat, validTicks, tickValues, SymbolLegend, labelFormat, labelValues, GradientLegend, scaleFraction, labelFraction, scale, Sequential, Linear, isContinuous, Time, UTC, Ordinal, scaleImplicit, Log, Sqrt, Pow, Symlog, isLogarithmic, BinOrdinal, isInterpolating, interpolateColors, interpolate, Band, Point, bandSpace, scheme, Threshold, Quantile, Quantize, quantizeInterpolator, interpolateRange, Diverging } from 'vega-scale';\nimport { inherits, isArray, error, fastmap, falsy, isFunction, constant, peek, one, toSet, isString, zoomLog, zoomPow, zoomSymlog, zoomLinear, stringValue } from 'vega-util';\nimport { sum, range } from 'd3-array';\nimport { interpolateRound, interpolate as interpolate$1 } from 'd3-interpolate';\n\n/**\n * Generates axis ticks for visualizing a spatial scale.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Scale} params.scale - The scale to generate ticks for.\n * @param {*} [params.count=10] - The approximate number of ticks, or\n * desired tick interval, to use.\n * @param {Array<*>} [params.values] - The exact tick values to use.\n * These must be legal domain values for the provided scale.\n * If provided, the count argument is ignored.\n * @param {function(*):string} [params.formatSpecifier] - A format specifier\n * to use in conjunction with scale.tickFormat. Legal values are\n * any valid d3 4.0 format specifier.\n * @param {function(*):string} [params.format] - The format function to use.\n * If provided, the formatSpecifier argument is ignored.\n */\nfunction AxisTicks(params) {\n Transform.call(this, null, params);\n}\ninherits(AxisTicks, Transform, {\n transform: function transform(_, pulse) {\n if (this.value && !_.modified()) {\n return pulse.StopPropagation;\n }\n var locale = pulse.dataflow.locale(),\n out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n ticks = this.value,\n scale = _.scale,\n tally = _.count == null ? _.values ? _.values.length : 10 : _.count,\n count = tickCount(scale, tally, _.minstep),\n format = _.format || tickFormat(locale, scale, count, _.formatSpecifier, _.formatType, !!_.values),\n values = _.values ? validTicks(scale, _.values, count) : tickValues(scale, count);\n if (ticks) out.rem = ticks;\n ticks = values.map(function (value, i) {\n return ingest({\n index: i / (values.length - 1 || 1),\n value: value,\n label: format(value)\n });\n });\n if (_.extra && ticks.length) {\n // add an extra tick pegged to the initial domain value\n // this is used to generate axes with 'binned' domains\n ticks.push(ingest({\n index: -1,\n extra: {\n value: ticks[0].value\n },\n label: ''\n }));\n }\n out.source = ticks;\n out.add = ticks;\n this.value = ticks;\n return out;\n }\n});\n\n/**\n * Joins a set of data elements against a set of visual items.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): object} [params.item] - An item generator function.\n * @param {function(object): *} [params.key] - The key field associating data and visual items.\n */\nfunction DataJoin(params) {\n Transform.call(this, null, params);\n}\nfunction defaultItemCreate() {\n return ingest({});\n}\nfunction newMap(key) {\n var map = fastmap().test(function (t) {\n return t.exit;\n });\n map.lookup = function (t) {\n return map.get(key(t));\n };\n return map;\n}\ninherits(DataJoin, Transform, {\n transform: function transform(_, pulse) {\n var df = pulse.dataflow,\n out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n item = _.item || defaultItemCreate,\n key = _.key || tupleid,\n map = this.value;\n\n // prevent transient (e.g., hover) requests from\n // cascading across marks derived from marks\n if (isArray(out.encode)) {\n out.encode = null;\n }\n if (map && (_.modified('key') || pulse.modified(key))) {\n error('DataJoin does not support modified key function or fields.');\n }\n if (!map) {\n pulse = pulse.addAll();\n this.value = map = newMap(key);\n }\n pulse.visit(pulse.ADD, function (t) {\n var k = key(t);\n var x = map.get(k);\n if (x) {\n if (x.exit) {\n map.empty--;\n out.add.push(x);\n } else {\n out.mod.push(x);\n }\n } else {\n x = item(t);\n map.set(k, x);\n out.add.push(x);\n }\n x.datum = t;\n x.exit = false;\n });\n pulse.visit(pulse.MOD, function (t) {\n var k = key(t),\n x = map.get(k);\n if (x) {\n x.datum = t;\n out.mod.push(x);\n }\n });\n pulse.visit(pulse.REM, function (t) {\n var k = key(t),\n x = map.get(k);\n if (t === x.datum && !x.exit) {\n out.rem.push(x);\n x.exit = true;\n ++map.empty;\n }\n });\n if (pulse.changed(pulse.ADD_MOD)) out.modifies('datum');\n if (pulse.clean() || _.clean && map.empty > df.cleanThreshold) {\n df.runAfter(map.clean);\n }\n return out;\n }\n});\n\n/**\n * Invokes encoding functions for visual items.\n * @constructor\n * @param {object} params - The parameters to the encoding functions. This\n * parameter object will be passed through to all invoked encoding functions.\n * @param {object} [params.mod=false] - Flag indicating if tuples in the input\n * mod set that are unmodified by encoders should be included in the output.\n * @param {object} param.encoders - The encoding functions\n * @param {function(object, object): boolean} [param.encoders.update] - Update encoding set\n * @param {function(object, object): boolean} [param.encoders.enter] - Enter encoding set\n * @param {function(object, object): boolean} [param.encoders.exit] - Exit encoding set\n */\nfunction Encode(params) {\n Transform.call(this, null, params);\n}\ninherits(Encode, Transform, {\n transform: function transform(_, pulse) {\n var out = pulse.fork(pulse.ADD_REM),\n fmod = _.mod || false,\n encoders = _.encoders,\n encode = pulse.encode;\n\n // if an array, the encode directive includes additional sets\n // that must be defined in order for the primary set to be invoked\n // e.g., only run the update set if the hover set is defined\n if (isArray(encode)) {\n if (out.changed() || encode.every(function (e) {\n return encoders[e];\n })) {\n encode = encode[0];\n out.encode = null; // consume targeted encode directive\n } else {\n return pulse.StopPropagation;\n }\n }\n\n // marshall encoder functions\n var reenter = encode === 'enter',\n update = encoders.update || falsy,\n enter = encoders.enter || falsy,\n exit = encoders.exit || falsy,\n set = (encode && !reenter ? encoders[encode] : update) || falsy;\n if (pulse.changed(pulse.ADD)) {\n pulse.visit(pulse.ADD, function (t) {\n enter(t, _);\n update(t, _);\n });\n out.modifies(enter.output);\n out.modifies(update.output);\n if (set !== falsy && set !== update) {\n pulse.visit(pulse.ADD, function (t) {\n set(t, _);\n });\n out.modifies(set.output);\n }\n }\n if (pulse.changed(pulse.REM) && exit !== falsy) {\n pulse.visit(pulse.REM, function (t) {\n exit(t, _);\n });\n out.modifies(exit.output);\n }\n if (reenter || set !== falsy) {\n var flag = pulse.MOD | (_.modified() ? pulse.REFLOW : 0);\n if (reenter) {\n pulse.visit(flag, function (t) {\n var mod = enter(t, _) || fmod;\n if (set(t, _) || mod) out.mod.push(t);\n });\n if (out.mod.length) out.modifies(enter.output);\n } else {\n pulse.visit(flag, function (t) {\n if (set(t, _) || fmod) out.mod.push(t);\n });\n }\n if (out.mod.length) out.modifies(set.output);\n }\n return out.changed() ? out : pulse.StopPropagation;\n }\n});\n\n/**\n * Generates legend entries for visualizing a scale.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Scale} params.scale - The scale to generate items for.\n * @param {*} [params.count=5] - The approximate number of items, or\n * desired tick interval, to use.\n * @param {*} [params.limit] - The maximum number of entries to\n * include in a symbol legend.\n * @param {Array<*>} [params.values] - The exact tick values to use.\n * These must be legal domain values for the provided scale.\n * If provided, the count argument is ignored.\n * @param {string} [params.formatSpecifier] - A format specifier\n * to use in conjunction with scale.tickFormat. Legal values are\n * any valid D3 format specifier string.\n * @param {function(*):string} [params.format] - The format function to use.\n * If provided, the formatSpecifier argument is ignored.\n */\nfunction LegendEntries(params) {\n Transform.call(this, [], params);\n}\ninherits(LegendEntries, Transform, {\n transform: function transform(_, pulse) {\n if (this.value != null && !_.modified()) {\n return pulse.StopPropagation;\n }\n var locale = pulse.dataflow.locale(),\n out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n items = this.value,\n type = _.type || SymbolLegend,\n scale = _.scale,\n limit = +_.limit,\n count = tickCount(scale, _.count == null ? 5 : _.count, _.minstep),\n lskip = !!_.values || type === SymbolLegend,\n format = _.format || labelFormat(locale, scale, count, type, _.formatSpecifier, _.formatType, lskip),\n values = _.values || labelValues(scale, count),\n domain,\n fraction,\n size,\n offset,\n ellipsis;\n if (items) out.rem = items;\n if (type === SymbolLegend) {\n if (limit && values.length > limit) {\n pulse.dataflow.warn('Symbol legend count exceeds limit, filtering items.');\n items = values.slice(0, limit - 1);\n ellipsis = true;\n } else {\n items = values;\n }\n if (isFunction(size = _.size)) {\n // if first value maps to size zero, remove from list (vega#717)\n if (!_.values && scale(items[0]) === 0) {\n items = items.slice(1);\n }\n // compute size offset for legend entries\n offset = items.reduce(function (max, value) {\n return Math.max(max, size(value, _));\n }, 0);\n } else {\n size = constant(offset = size || 8);\n }\n items = items.map(function (value, index) {\n return ingest({\n index: index,\n label: format(value, index, items),\n value: value,\n offset: offset,\n size: size(value, _)\n });\n });\n if (ellipsis) {\n ellipsis = values[items.length];\n items.push(ingest({\n index: items.length,\n label: \"\\u2026\".concat(values.length - items.length, \" entries\"),\n value: ellipsis,\n offset: offset,\n size: size(ellipsis, _)\n }));\n }\n } else if (type === GradientLegend) {\n domain = scale.domain(), fraction = scaleFraction(scale, domain[0], peek(domain));\n\n // if automatic label generation produces 2 or fewer values,\n // use the domain end points instead (fixes vega/vega#1364)\n if (values.length < 3 && !_.values && domain[0] !== peek(domain)) {\n values = [domain[0], peek(domain)];\n }\n items = values.map(function (value, index) {\n return ingest({\n index: index,\n label: format(value, index, values),\n value: value,\n perc: fraction(value)\n });\n });\n } else {\n size = values.length - 1;\n fraction = labelFraction(scale);\n items = values.map(function (value, index) {\n return ingest({\n index: index,\n label: format(value, index, values),\n value: value,\n perc: index ? fraction(value) : 0,\n perc2: index === size ? 1 : fraction(values[index + 1])\n });\n });\n }\n out.source = items;\n out.add = items;\n this.value = items;\n return out;\n }\n});\nvar sourceX = function sourceX(t) {\n return t.source.x;\n};\nvar sourceY = function sourceY(t) {\n return t.source.y;\n};\nvar targetX = function targetX(t) {\n return t.target.x;\n};\nvar targetY = function targetY(t) {\n return t.target.y;\n};\n\n/**\n * Layout paths linking source and target elements.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nfunction LinkPath(params) {\n Transform.call(this, {}, params);\n}\nLinkPath.Definition = {\n 'type': 'LinkPath',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'sourceX',\n 'type': 'field',\n 'default': 'source.x'\n }, {\n 'name': 'sourceY',\n 'type': 'field',\n 'default': 'source.y'\n }, {\n 'name': 'targetX',\n 'type': 'field',\n 'default': 'target.x'\n }, {\n 'name': 'targetY',\n 'type': 'field',\n 'default': 'target.y'\n }, {\n 'name': 'orient',\n 'type': 'enum',\n 'default': 'vertical',\n 'values': ['horizontal', 'vertical', 'radial']\n }, {\n 'name': 'shape',\n 'type': 'enum',\n 'default': 'line',\n 'values': ['line', 'arc', 'curve', 'diagonal', 'orthogonal']\n }, {\n 'name': 'require',\n 'type': 'signal'\n }, {\n 'name': 'as',\n 'type': 'string',\n 'default': 'path'\n }]\n};\ninherits(LinkPath, Transform, {\n transform: function transform(_, pulse) {\n var sx = _.sourceX || sourceX,\n sy = _.sourceY || sourceY,\n tx = _.targetX || targetX,\n ty = _.targetY || targetY,\n as = _.as || 'path',\n orient = _.orient || 'vertical',\n shape = _.shape || 'line',\n path = Paths.get(shape + '-' + orient) || Paths.get(shape);\n if (!path) {\n error('LinkPath unsupported type: ' + _.shape + (_.orient ? '-' + _.orient : ''));\n }\n pulse.visit(pulse.SOURCE, function (t) {\n t[as] = path(sx(t), sy(t), tx(t), ty(t));\n });\n return pulse.reflow(_.modified()).modifies(as);\n }\n});\nvar line = function line(sx, sy, tx, ty) {\n return 'M' + sx + ',' + sy + 'L' + tx + ',' + ty;\n};\nvar lineR = function lineR(sa, sr, ta, tr) {\n return line(sr * Math.cos(sa), sr * Math.sin(sa), tr * Math.cos(ta), tr * Math.sin(ta));\n};\nvar arc = function arc(sx, sy, tx, ty) {\n var dx = tx - sx,\n dy = ty - sy,\n rr = Math.hypot(dx, dy) / 2,\n ra = 180 * Math.atan2(dy, dx) / Math.PI;\n return 'M' + sx + ',' + sy + 'A' + rr + ',' + rr + ' ' + ra + ' 0 1' + ' ' + tx + ',' + ty;\n};\nvar arcR = function arcR(sa, sr, ta, tr) {\n return arc(sr * Math.cos(sa), sr * Math.sin(sa), tr * Math.cos(ta), tr * Math.sin(ta));\n};\nvar curve = function curve(sx, sy, tx, ty) {\n var dx = tx - sx,\n dy = ty - sy,\n ix = 0.2 * (dx + dy),\n iy = 0.2 * (dy - dx);\n return 'M' + sx + ',' + sy + 'C' + (sx + ix) + ',' + (sy + iy) + ' ' + (tx + iy) + ',' + (ty - ix) + ' ' + tx + ',' + ty;\n};\nvar curveR = function curveR(sa, sr, ta, tr) {\n return curve(sr * Math.cos(sa), sr * Math.sin(sa), tr * Math.cos(ta), tr * Math.sin(ta));\n};\nvar orthoX = function orthoX(sx, sy, tx, ty) {\n return 'M' + sx + ',' + sy + 'V' + ty + 'H' + tx;\n};\nvar orthoY = function orthoY(sx, sy, tx, ty) {\n return 'M' + sx + ',' + sy + 'H' + tx + 'V' + ty;\n};\nvar orthoR = function orthoR(sa, sr, ta, tr) {\n var sc = Math.cos(sa),\n ss = Math.sin(sa),\n tc = Math.cos(ta),\n ts = Math.sin(ta),\n sf = Math.abs(ta - sa) > Math.PI ? ta <= sa : ta > sa;\n return 'M' + sr * sc + ',' + sr * ss + 'A' + sr + ',' + sr + ' 0 0,' + (sf ? 1 : 0) + ' ' + sr * tc + ',' + sr * ts + 'L' + tr * tc + ',' + tr * ts;\n};\nvar diagonalX = function diagonalX(sx, sy, tx, ty) {\n var m = (sx + tx) / 2;\n return 'M' + sx + ',' + sy + 'C' + m + ',' + sy + ' ' + m + ',' + ty + ' ' + tx + ',' + ty;\n};\nvar diagonalY = function diagonalY(sx, sy, tx, ty) {\n var m = (sy + ty) / 2;\n return 'M' + sx + ',' + sy + 'C' + sx + ',' + m + ' ' + tx + ',' + m + ' ' + tx + ',' + ty;\n};\nvar diagonalR = function diagonalR(sa, sr, ta, tr) {\n var sc = Math.cos(sa),\n ss = Math.sin(sa),\n tc = Math.cos(ta),\n ts = Math.sin(ta),\n mr = (sr + tr) / 2;\n return 'M' + sr * sc + ',' + sr * ss + 'C' + mr * sc + ',' + mr * ss + ' ' + mr * tc + ',' + mr * ts + ' ' + tr * tc + ',' + tr * ts;\n};\nvar Paths = fastmap({\n 'line': line,\n 'line-radial': lineR,\n 'arc': arc,\n 'arc-radial': arcR,\n 'curve': curve,\n 'curve-radial': curveR,\n 'orthogonal-horizontal': orthoX,\n 'orthogonal-vertical': orthoY,\n 'orthogonal-radial': orthoR,\n 'diagonal-horizontal': diagonalX,\n 'diagonal-vertical': diagonalY,\n 'diagonal-radial': diagonalR\n});\n\n/**\n * Pie and donut chart layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to size pie segments.\n * @param {number} [params.startAngle=0] - The start angle (in radians) of the layout.\n * @param {number} [params.endAngle=2π] - The end angle (in radians) of the layout.\n * @param {boolean} [params.sort] - Boolean flag for sorting sectors by value.\n */\nfunction Pie(params) {\n Transform.call(this, null, params);\n}\nPie.Definition = {\n 'type': 'Pie',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field'\n }, {\n 'name': 'startAngle',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'endAngle',\n 'type': 'number',\n 'default': 6.283185307179586\n }, {\n 'name': 'sort',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': 2,\n 'default': ['startAngle', 'endAngle']\n }]\n};\ninherits(Pie, Transform, {\n transform: function transform(_, pulse) {\n var as = _.as || ['startAngle', 'endAngle'],\n startAngle = as[0],\n endAngle = as[1],\n field = _.field || one,\n start = _.startAngle || 0,\n stop = _.endAngle != null ? _.endAngle : 2 * Math.PI,\n data = pulse.source,\n values = data.map(field),\n n = values.length,\n a = start,\n k = (stop - start) / sum(values),\n index = range(n),\n i,\n t,\n v;\n if (_.sort) {\n index.sort(function (a, b) {\n return values[a] - values[b];\n });\n }\n for (i = 0; i < n; ++i) {\n v = values[index[i]];\n t = data[index[i]];\n t[startAngle] = a;\n t[endAngle] = a += v * k;\n }\n this.value = values;\n return pulse.reflow(_.modified()).modifies(as);\n }\n});\nvar DEFAULT_COUNT = 5;\nfunction includeZero(scale) {\n var type = scale.type;\n return !scale.bins && (type === Linear || type === Pow || type === Sqrt);\n}\nfunction includePad(type) {\n return isContinuous(type) && type !== Sequential;\n}\nvar SKIP = toSet(['set', 'modified', 'clear', 'type', 'scheme', 'schemeExtent', 'schemeCount', 'domain', 'domainMin', 'domainMid', 'domainMax', 'domainRaw', 'domainImplicit', 'nice', 'zero', 'bins', 'range', 'rangeStep', 'round', 'reverse', 'interpolate', 'interpolateGamma']);\n\n/**\n * Maintains a scale function mapping data values to visual channels.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nfunction Scale(params) {\n Transform.call(this, null, params);\n this.modified(true); // always treat as modified\n}\n\ninherits(Scale, Transform, {\n transform: function transform(_, pulse) {\n var df = pulse.dataflow,\n scale$1 = this.value,\n key = scaleKey(_);\n if (!scale$1 || key !== scale$1.type) {\n this.value = scale$1 = scale(key)();\n }\n for (key in _) if (!SKIP[key]) {\n // padding is a scale property for band/point but not others\n if (key === 'padding' && includePad(scale$1.type)) continue;\n // invoke scale property setter, raise warning if not found\n isFunction(scale$1[key]) ? scale$1[key](_[key]) : df.warn('Unsupported scale property: ' + key);\n }\n configureRange(scale$1, _, configureBins(scale$1, _, configureDomain(scale$1, _, df)));\n return pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n }\n});\nfunction scaleKey(_) {\n var t = _.type,\n d = '',\n n;\n\n // backwards compatibility pre Vega 5.\n if (t === Sequential) return Sequential + '-' + Linear;\n if (isContinuousColor(_)) {\n n = _.rawDomain ? _.rawDomain.length : _.domain ? _.domain.length + +(_.domainMid != null) : 0;\n d = n === 2 ? Sequential + '-' : n === 3 ? Diverging + '-' : '';\n }\n return (d + t || Linear).toLowerCase();\n}\nfunction isContinuousColor(_) {\n var t = _.type;\n return isContinuous(t) && t !== Time && t !== UTC && (_.scheme || _.range && _.range.length && _.range.every(isString));\n}\nfunction configureDomain(scale, _, df) {\n // check raw domain, if provided use that and exit early\n var raw = rawDomain(scale, _.domainRaw, df);\n if (raw > -1) return raw;\n var domain = _.domain,\n type = scale.type,\n zero = _.zero || _.zero === undefined && includeZero(scale),\n n,\n mid;\n if (!domain) return 0;\n\n // adjust continuous domain for minimum pixel padding\n if (includePad(type) && _.padding && domain[0] !== peek(domain)) {\n domain = padDomain(type, domain, _.range, _.padding, _.exponent, _.constant);\n }\n\n // adjust domain based on zero, min, max settings\n if (zero || _.domainMin != null || _.domainMax != null || _.domainMid != null) {\n n = (domain = domain.slice()).length - 1 || 1;\n if (zero) {\n if (domain[0] > 0) domain[0] = 0;\n if (domain[n] < 0) domain[n] = 0;\n }\n if (_.domainMin != null) domain[0] = _.domainMin;\n if (_.domainMax != null) domain[n] = _.domainMax;\n if (_.domainMid != null) {\n mid = _.domainMid;\n var i = mid > domain[n] ? n + 1 : mid < domain[0] ? 0 : n;\n if (i !== n) df.warn('Scale domainMid exceeds domain min or max.', mid);\n domain.splice(i, 0, mid);\n }\n }\n\n // set the scale domain\n scale.domain(domainCheck(type, domain, df));\n\n // if ordinal scale domain is defined, prevent implicit\n // domain construction as side-effect of scale lookup\n if (type === Ordinal) {\n scale.unknown(_.domainImplicit ? scaleImplicit : undefined);\n }\n\n // perform 'nice' adjustment as requested\n if (_.nice && scale.nice) {\n scale.nice(_.nice !== true && tickCount(scale, _.nice) || null);\n }\n\n // return the cardinality of the domain\n return domain.length;\n}\nfunction rawDomain(scale, raw, df) {\n if (raw) {\n scale.domain(domainCheck(scale.type, raw, df));\n return raw.length;\n } else {\n return -1;\n }\n}\nfunction padDomain(type, domain, range, pad, exponent, constant) {\n var span = Math.abs(peek(range) - range[0]),\n frac = span / (span - 2 * pad),\n d = type === Log ? zoomLog(domain, null, frac) : type === Sqrt ? zoomPow(domain, null, frac, 0.5) : type === Pow ? zoomPow(domain, null, frac, exponent || 1) : type === Symlog ? zoomSymlog(domain, null, frac, constant || 1) : zoomLinear(domain, null, frac);\n domain = domain.slice();\n domain[0] = d[0];\n domain[domain.length - 1] = d[1];\n return domain;\n}\nfunction domainCheck(type, domain, df) {\n if (isLogarithmic(type)) {\n // sum signs of domain values\n // if all pos or all neg, abs(sum) === domain.length\n var s = Math.abs(domain.reduce(function (s, v) {\n return s + (v < 0 ? -1 : v > 0 ? 1 : 0);\n }, 0));\n if (s !== domain.length) {\n df.warn('Log scale domain includes zero: ' + stringValue(domain));\n }\n }\n return domain;\n}\nfunction configureBins(scale, _, count) {\n var bins = _.bins;\n if (bins && !isArray(bins)) {\n // generate bin boundary array\n var domain = scale.domain(),\n lo = domain[0],\n hi = peek(domain),\n step = bins.step;\n var start = bins.start == null ? lo : bins.start,\n stop = bins.stop == null ? hi : bins.stop;\n if (!step) error('Scale bins parameter missing step property.');\n if (start < lo) start = step * Math.ceil(lo / step);\n if (stop > hi) stop = step * Math.floor(hi / step);\n bins = range(start, stop + step / 2, step);\n }\n if (bins) {\n // assign bin boundaries to scale instance\n scale.bins = bins;\n } else if (scale.bins) {\n // no current bins, remove bins if previously set\n delete scale.bins;\n }\n\n // special handling for bin-ordinal scales\n if (scale.type === BinOrdinal) {\n if (!bins) {\n // the domain specifies the bins\n scale.bins = scale.domain();\n } else if (!_.domain && !_.domainRaw) {\n // the bins specify the domain\n scale.domain(bins);\n count = bins.length;\n }\n }\n\n // return domain cardinality\n return count;\n}\nfunction configureRange(scale, _, count) {\n var type = scale.type,\n round = _.round || false,\n range = _.range;\n\n // if range step specified, calculate full range extent\n if (_.rangeStep != null) {\n range = configureRangeStep(type, _, count);\n }\n\n // else if a range scheme is defined, use that\n else if (_.scheme) {\n range = configureScheme(type, _, count);\n if (isFunction(range)) {\n if (scale.interpolator) {\n return scale.interpolator(range);\n } else {\n error(\"Scale type \".concat(type, \" does not support interpolating color schemes.\"));\n }\n }\n }\n\n // given a range array for an interpolating scale, convert to interpolator\n if (range && isInterpolating(type)) {\n return scale.interpolator(interpolateColors(flip(range, _.reverse), _.interpolate, _.interpolateGamma));\n }\n\n // configure rounding / interpolation\n if (range && _.interpolate && scale.interpolate) {\n scale.interpolate(interpolate(_.interpolate, _.interpolateGamma));\n } else if (isFunction(scale.round)) {\n scale.round(round);\n } else if (isFunction(scale.rangeRound)) {\n scale.interpolate(round ? interpolateRound : interpolate$1);\n }\n if (range) scale.range(flip(range, _.reverse));\n}\nfunction configureRangeStep(type, _, count) {\n if (type !== Band && type !== Point) {\n error('Only band and point scales support rangeStep.');\n }\n\n // calculate full range based on requested step size and padding\n var outer = (_.paddingOuter != null ? _.paddingOuter : _.padding) || 0,\n inner = type === Point ? 1 : (_.paddingInner != null ? _.paddingInner : _.padding) || 0;\n return [0, _.rangeStep * bandSpace(count, inner, outer)];\n}\nfunction configureScheme(type, _, count) {\n var extent = _.schemeExtent,\n name,\n scheme$1;\n if (isArray(_.scheme)) {\n scheme$1 = interpolateColors(_.scheme, _.interpolate, _.interpolateGamma);\n } else {\n name = _.scheme.toLowerCase();\n scheme$1 = scheme(name);\n if (!scheme$1) error(\"Unrecognized scheme name: \".concat(_.scheme));\n }\n\n // determine size for potential discrete range\n count = type === Threshold ? count + 1 : type === BinOrdinal ? count - 1 : type === Quantile || type === Quantize ? +_.schemeCount || DEFAULT_COUNT : count;\n\n // adjust and/or quantize scheme as appropriate\n return isInterpolating(type) ? adjustScheme(scheme$1, extent, _.reverse) : isFunction(scheme$1) ? quantizeInterpolator(adjustScheme(scheme$1, extent), count) : type === Ordinal ? scheme$1 : scheme$1.slice(0, count);\n}\nfunction adjustScheme(scheme, extent, reverse) {\n return isFunction(scheme) && (extent || reverse) ? interpolateRange(scheme, flip(extent || [0, 1], reverse)) : scheme;\n}\nfunction flip(array, reverse) {\n return reverse ? array.slice().reverse() : array;\n}\n\n/**\n * Sorts scenegraph items in the pulse source array.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(*,*): number} [params.sort] - A comparator\n * function for sorting tuples.\n */\nfunction SortItems(params) {\n Transform.call(this, null, params);\n}\ninherits(SortItems, Transform, {\n transform: function transform(_, pulse) {\n var mod = _.modified('sort') || pulse.changed(pulse.ADD) || pulse.modified(_.sort.fields) || pulse.modified('datum');\n if (mod) pulse.source.sort(stableCompare(_.sort));\n this.modified(mod);\n return pulse;\n }\n});\nvar Zero = 'zero',\n Center = 'center',\n Normalize = 'normalize',\n DefOutput = ['y0', 'y1'];\n\n/**\n * Stack layout for visualization elements.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to stack.\n * @param {Array} [params.groupby] - An array of accessors to groupby.\n * @param {function(object,object): number} [params.sort] - A comparator for stack sorting.\n * @param {string} [offset='zero'] - Stack baseline offset. One of 'zero', 'center', 'normalize'.\n */\nfunction Stack(params) {\n Transform.call(this, null, params);\n}\nStack.Definition = {\n 'type': 'Stack',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field'\n }, {\n 'name': 'groupby',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'sort',\n 'type': 'compare'\n }, {\n 'name': 'offset',\n 'type': 'enum',\n 'default': Zero,\n 'values': [Zero, Center, Normalize]\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': 2,\n 'default': DefOutput\n }]\n};\ninherits(Stack, Transform, {\n transform: function transform(_, pulse) {\n var as = _.as || DefOutput,\n y0 = as[0],\n y1 = as[1],\n sort = stableCompare(_.sort),\n field = _.field || one,\n stack = _.offset === Center ? stackCenter : _.offset === Normalize ? stackNormalize : stackZero,\n groups,\n i,\n n,\n max;\n\n // partition, sum, and sort the stack groups\n groups = partition(pulse.source, _.groupby, sort, field);\n\n // compute stack layouts per group\n for (i = 0, n = groups.length, max = groups.max; i < n; ++i) {\n stack(groups[i], max, field, y0, y1);\n }\n return pulse.reflow(_.modified()).modifies(as);\n }\n});\nfunction stackCenter(group, max, field, y0, y1) {\n var last = (max - group.sum) / 2,\n m = group.length,\n j = 0,\n t;\n for (; j < m; ++j) {\n t = group[j];\n t[y0] = last;\n t[y1] = last += Math.abs(field(t));\n }\n}\nfunction stackNormalize(group, max, field, y0, y1) {\n var scale = 1 / group.sum,\n last = 0,\n m = group.length,\n j = 0,\n v = 0,\n t;\n for (; j < m; ++j) {\n t = group[j];\n t[y0] = last;\n t[y1] = last = scale * (v += Math.abs(field(t)));\n }\n}\nfunction stackZero(group, max, field, y0, y1) {\n var lastPos = 0,\n lastNeg = 0,\n m = group.length,\n j = 0,\n v,\n t;\n for (; j < m; ++j) {\n t = group[j];\n v = +field(t);\n if (v < 0) {\n t[y0] = lastNeg;\n t[y1] = lastNeg += v;\n } else {\n t[y0] = lastPos;\n t[y1] = lastPos += v;\n }\n }\n}\nfunction partition(data, groupby, sort, field) {\n var groups = [],\n get = function get(f) {\n return f(t);\n },\n map,\n i,\n n,\n m,\n t,\n k,\n g,\n s,\n max;\n\n // partition data points into stack groups\n if (groupby == null) {\n groups.push(data.slice());\n } else {\n for (map = {}, i = 0, n = data.length; i < n; ++i) {\n t = data[i];\n k = groupby.map(get);\n g = map[k];\n if (!g) {\n map[k] = g = [];\n groups.push(g);\n }\n g.push(t);\n }\n }\n\n // compute sums of groups, sort groups as needed\n for (k = 0, max = 0, m = groups.length; k < m; ++k) {\n g = groups[k];\n for (i = 0, s = 0, n = g.length; i < n; ++i) {\n s += Math.abs(field(g[i]));\n }\n g.sum = s;\n if (s > max) max = s;\n if (sort) g.sort(sort);\n }\n groups.max = max;\n return groups;\n}\nexport { AxisTicks as axisticks, DataJoin as datajoin, Encode as encode, LegendEntries as legendentries, LinkPath as linkpath, Pie as pie, Scale as scale, SortItems as sortitems, Stack as stack };","export default (function (x) {\n return x;\n});","function streamGeometry(geometry, stream) {\n if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n streamGeometryType[geometry.type](geometry, stream);\n }\n}\nvar streamObjectType = {\n Feature: function Feature(object, stream) {\n streamGeometry(object.geometry, stream);\n },\n FeatureCollection: function FeatureCollection(object, stream) {\n var features = object.features,\n i = -1,\n n = features.length;\n while (++i < n) streamGeometry(features[i].geometry, stream);\n }\n};\nvar streamGeometryType = {\n Sphere: function Sphere(object, stream) {\n stream.sphere();\n },\n Point: function Point(object, stream) {\n object = object.coordinates;\n stream.point(object[0], object[1], object[2]);\n },\n MultiPoint: function MultiPoint(object, stream) {\n var coordinates = object.coordinates,\n i = -1,\n n = coordinates.length;\n while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n },\n LineString: function LineString(object, stream) {\n streamLine(object.coordinates, stream, 0);\n },\n MultiLineString: function MultiLineString(object, stream) {\n var coordinates = object.coordinates,\n i = -1,\n n = coordinates.length;\n while (++i < n) streamLine(coordinates[i], stream, 0);\n },\n Polygon: function Polygon(object, stream) {\n streamPolygon(object.coordinates, stream);\n },\n MultiPolygon: function MultiPolygon(object, stream) {\n var coordinates = object.coordinates,\n i = -1,\n n = coordinates.length;\n while (++i < n) streamPolygon(coordinates[i], stream);\n },\n GeometryCollection: function GeometryCollection(object, stream) {\n var geometries = object.geometries,\n i = -1,\n n = geometries.length;\n while (++i < n) streamGeometry(geometries[i], stream);\n }\n};\nfunction streamLine(coordinates, stream, closed) {\n var i = -1,\n n = coordinates.length - closed,\n coordinate;\n stream.lineStart();\n while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n stream.lineEnd();\n}\nfunction streamPolygon(coordinates, stream) {\n var i = -1,\n n = coordinates.length;\n stream.polygonStart();\n while (++i < n) streamLine(coordinates[i], stream, 1);\n stream.polygonEnd();\n}\nexport default function (object, stream) {\n if (object && streamObjectType.hasOwnProperty(object.type)) {\n streamObjectType[object.type](object, stream);\n } else {\n streamGeometry(object, stream);\n }\n}","import _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\n// https://github.com/python/cpython/blob/a74eea238f5baba15797e2e8b570d153bc8690a7/Modules/mathmodule.c#L1423\nexport var Adder = /*#__PURE__*/function () {\n function Adder() {\n _classCallCheck(this, Adder);\n this._partials = new Float64Array(32);\n this._n = 0;\n }\n _createClass(Adder, [{\n key: \"add\",\n value: function add(x) {\n var p = this._partials;\n var i = 0;\n for (var j = 0; j < this._n && j < 32; j++) {\n var y = p[j],\n hi = x + y,\n lo = Math.abs(x) < Math.abs(y) ? x - (hi - y) : y - (hi - x);\n if (lo) p[i++] = lo;\n x = hi;\n }\n p[i] = x;\n this._n = i + 1;\n return this;\n }\n }, {\n key: \"valueOf\",\n value: function valueOf() {\n var p = this._partials;\n var n = this._n,\n x,\n y,\n lo,\n hi = 0;\n if (n > 0) {\n hi = p[--n];\n while (n > 0) {\n x = hi;\n y = p[--n];\n hi = x + y;\n lo = y - (hi - x);\n if (lo) break;\n }\n if (n > 0 && (lo < 0 && p[n - 1] < 0 || lo > 0 && p[n - 1] > 0)) {\n y = lo * 2;\n x = hi + y;\n if (y == x - hi) hi = x;\n }\n }\n return hi;\n }\n }]);\n return Adder;\n}();\nexport function fsum(values, valueof) {\n var adder = new Adder();\n if (valueof === undefined) {\n var _iterator = _createForOfIteratorHelper(values),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var value = _step.value;\n if (value = +value) {\n adder.add(value);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n } else {\n var index = -1;\n var _iterator2 = _createForOfIteratorHelper(values),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _value = _step2.value;\n if (_value = +valueof(_value, ++index, values)) {\n adder.add(_value);\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n return +adder;\n}\nexport function fcumsum(values, valueof) {\n var adder = new Adder();\n var index = -1;\n return Float64Array.from(values, valueof === undefined ? function (v) {\n return adder.add(+v || 0);\n } : function (v) {\n return adder.add(+valueof(v, ++index, values) || 0);\n });\n}","import \"core-js/modules/es.math.hypot.js\";\nexport var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var hypot = Math.hypot;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function (x) {\n return x > 0 ? 1 : x < 0 ? -1 : 0;\n};\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\nexport function asin(x) {\n return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\nexport function haversin(x) {\n return (x = sin(x / 2)) * x;\n}","export default function noop() {}","import { Adder } from \"d3-array\";\nimport { abs } from \"../math.js\";\nimport noop from \"../noop.js\";\nvar areaSum = new Adder(),\n areaRingSum = new Adder(),\n x00,\n y00,\n x0,\n y0;\nvar areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function polygonStart() {\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function polygonEnd() {\n areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n areaSum.add(abs(areaRingSum));\n areaRingSum = new Adder();\n },\n result: function result() {\n var area = areaSum / 2;\n areaSum = new Adder();\n return area;\n }\n};\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\nfunction areaPointFirst(x, y) {\n areaStream.point = areaPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\nfunction areaPoint(x, y) {\n areaRingSum.add(y0 * x - x0 * y);\n x0 = x, y0 = y;\n}\nfunction areaRingEnd() {\n areaPoint(x00, y00);\n}\nexport default areaStream;","import noop from \"../noop.js\";\nvar x0 = Infinity,\n y0 = x0,\n x1 = -x0,\n y1 = x1;\nvar boundsStream = {\n point: boundsPoint,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop,\n result: function result() {\n var bounds = [[x0, y0], [x1, y1]];\n x1 = y1 = -(y0 = x0 = Infinity);\n return bounds;\n }\n};\nfunction boundsPoint(x, y) {\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n}\nexport default boundsStream;","import { sqrt } from \"../math.js\";\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n Y0 = 0,\n Z0 = 0,\n X1 = 0,\n Y1 = 0,\n Z1 = 0,\n X2 = 0,\n Y2 = 0,\n Z2 = 0,\n x00,\n y00,\n x0,\n y0;\nvar centroidStream = {\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function polygonStart() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function polygonEnd() {\n centroidStream.point = centroidPoint;\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n },\n result: function result() {\n var centroid = Z2 ? [X2 / Z2, Y2 / Z2] : Z1 ? [X1 / Z1, Y1 / Z1] : Z0 ? [X0 / Z0, Y0 / Z0] : [NaN, NaN];\n X0 = Y0 = Z0 = X1 = Y1 = Z1 = X2 = Y2 = Z2 = 0;\n return centroid;\n }\n};\nfunction centroidPoint(x, y) {\n X0 += x;\n Y0 += y;\n ++Z0;\n}\nfunction centroidLineStart() {\n centroidStream.point = centroidPointFirstLine;\n}\nfunction centroidPointFirstLine(x, y) {\n centroidStream.point = centroidPointLine;\n centroidPoint(x0 = x, y0 = y);\n}\nfunction centroidPointLine(x, y) {\n var dx = x - x0,\n dy = y - y0,\n z = sqrt(dx * dx + dy * dy);\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n centroidPoint(x0 = x, y0 = y);\n}\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\nfunction centroidRingStart() {\n centroidStream.point = centroidPointFirstRing;\n}\nfunction centroidRingEnd() {\n centroidPointRing(x00, y00);\n}\nfunction centroidPointFirstRing(x, y) {\n centroidStream.point = centroidPointRing;\n centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\nfunction centroidPointRing(x, y) {\n var dx = x - x0,\n dy = y - y0,\n z = sqrt(dx * dx + dy * dy);\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n z = y0 * x - x0 * y;\n X2 += z * (x0 + x);\n Y2 += z * (y0 + y);\n Z2 += z * 3;\n centroidPoint(x0 = x, y0 = y);\n}\nexport default centroidStream;","import { tau } from \"../math.js\";\nimport noop from \"../noop.js\";\nexport default function PathContext(context) {\n this._context = context;\n}\nPathContext.prototype = {\n _radius: 4.5,\n pointRadius: function pointRadius(_) {\n return this._radius = _, this;\n },\n polygonStart: function polygonStart() {\n this._line = 0;\n },\n polygonEnd: function polygonEnd() {\n this._line = NaN;\n },\n lineStart: function lineStart() {\n this._point = 0;\n },\n lineEnd: function lineEnd() {\n if (this._line === 0) this._context.closePath();\n this._point = NaN;\n },\n point: function point(x, y) {\n switch (this._point) {\n case 0:\n {\n this._context.moveTo(x, y);\n this._point = 1;\n break;\n }\n case 1:\n {\n this._context.lineTo(x, y);\n break;\n }\n default:\n {\n this._context.moveTo(x + this._radius, y);\n this._context.arc(x, y, this._radius, 0, tau);\n break;\n }\n }\n },\n result: noop\n};","import { Adder } from \"d3-array\";\nimport { sqrt } from \"../math.js\";\nimport noop from \"../noop.js\";\nvar lengthSum = new Adder(),\n lengthRing,\n x00,\n y00,\n x0,\n y0;\nvar lengthStream = {\n point: noop,\n lineStart: function lineStart() {\n lengthStream.point = lengthPointFirst;\n },\n lineEnd: function lineEnd() {\n if (lengthRing) lengthPoint(x00, y00);\n lengthStream.point = noop;\n },\n polygonStart: function polygonStart() {\n lengthRing = true;\n },\n polygonEnd: function polygonEnd() {\n lengthRing = null;\n },\n result: function result() {\n var length = +lengthSum;\n lengthSum = new Adder();\n return length;\n }\n};\nfunction lengthPointFirst(x, y) {\n lengthStream.point = lengthPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\nfunction lengthPoint(x, y) {\n x0 -= x, y0 -= y;\n lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n x0 = x, y0 = y;\n}\nexport default lengthStream;","import _taggedTemplateLiteral from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nvar _templateObject, _templateObject2, _templateObject3, _templateObject4;\n// Simple caching for constant-radius points.\nvar cacheDigits, cacheAppend, cacheRadius, cacheCircle;\nvar PathString = /*#__PURE__*/function () {\n function PathString(digits) {\n _classCallCheck(this, PathString);\n this._append = digits == null ? append : appendRound(digits);\n this._radius = 4.5;\n this._ = \"\";\n }\n _createClass(PathString, [{\n key: \"pointRadius\",\n value: function pointRadius(_) {\n this._radius = +_;\n return this;\n }\n }, {\n key: \"polygonStart\",\n value: function polygonStart() {\n this._line = 0;\n }\n }, {\n key: \"polygonEnd\",\n value: function polygonEnd() {\n this._line = NaN;\n }\n }, {\n key: \"lineStart\",\n value: function lineStart() {\n this._point = 0;\n }\n }, {\n key: \"lineEnd\",\n value: function lineEnd() {\n if (this._line === 0) this._ += \"Z\";\n this._point = NaN;\n }\n }, {\n key: \"point\",\n value: function point(x, y) {\n switch (this._point) {\n case 0:\n {\n this._append(_templateObject || (_templateObject = _taggedTemplateLiteral([\"M\", \",\", \"\"])), x, y);\n this._point = 1;\n break;\n }\n case 1:\n {\n this._append(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral([\"L\", \",\", \"\"])), x, y);\n break;\n }\n default:\n {\n this._append(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral([\"M\", \",\", \"\"])), x, y);\n if (this._radius !== cacheRadius || this._append !== cacheAppend) {\n var r = this._radius;\n var s = this._;\n this._ = \"\"; // stash the old string so we can cache the circle path fragment\n this._append(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral([\"m0,\", \"a\", \",\", \" 0 1,1 0,\", \"a\", \",\", \" 0 1,1 0,\", \"z\"])), r, r, r, -2 * r, r, r, 2 * r);\n cacheRadius = r;\n cacheAppend = this._append;\n cacheCircle = this._;\n this._ = s;\n }\n this._ += cacheCircle;\n break;\n }\n }\n }\n }, {\n key: \"result\",\n value: function result() {\n var result = this._;\n this._ = \"\";\n return result.length ? result : null;\n }\n }]);\n return PathString;\n}();\nexport { PathString as default };\nfunction append(strings) {\n var i = 1;\n this._ += strings[0];\n for (var j = strings.length; i < j; ++i) {\n this._ += arguments[i] + strings[i];\n }\n}\nfunction appendRound(digits) {\n var d = Math.floor(digits);\n if (!(d >= 0)) throw new RangeError(\"invalid digits: \".concat(digits));\n if (d > 15) return append;\n if (d !== cacheDigits) {\n var k = Math.pow(10, d);\n cacheDigits = d;\n cacheAppend = function append(strings) {\n var i = 1;\n this._ += strings[0];\n for (var j = strings.length; i < j; ++i) {\n this._ += Math.round(arguments[i] * k) / k + strings[i];\n }\n };\n }\n return cacheAppend;\n}","import identity from \"../identity.js\";\nimport stream from \"../stream.js\";\nimport pathArea from \"./area.js\";\nimport pathBounds from \"./bounds.js\";\nimport pathCentroid from \"./centroid.js\";\nimport PathContext from \"./context.js\";\nimport pathMeasure from \"./measure.js\";\nimport PathString from \"./string.js\";\nexport default function (projection, context) {\n var digits = 3,\n pointRadius = 4.5,\n projectionStream,\n contextStream;\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n stream(object, projectionStream(contextStream));\n }\n return contextStream.result();\n }\n path.area = function (object) {\n stream(object, projectionStream(pathArea));\n return pathArea.result();\n };\n path.measure = function (object) {\n stream(object, projectionStream(pathMeasure));\n return pathMeasure.result();\n };\n path.bounds = function (object) {\n stream(object, projectionStream(pathBounds));\n return pathBounds.result();\n };\n path.centroid = function (object) {\n stream(object, projectionStream(pathCentroid));\n return pathCentroid.result();\n };\n path.projection = function (_) {\n if (!arguments.length) return projection;\n projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream;\n return path;\n };\n path.context = function (_) {\n if (!arguments.length) return context;\n contextStream = _ == null ? (context = null, new PathString(digits)) : new PathContext(context = _);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return path;\n };\n path.pointRadius = function (_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n path.digits = function (_) {\n if (!arguments.length) return digits;\n if (_ == null) digits = null;else {\n var d = Math.floor(_);\n if (!(d >= 0)) throw new RangeError(\"invalid digits: \".concat(_));\n digits = d;\n }\n if (context === null) contextStream = new PathString(digits);\n return path;\n };\n return path.projection(projection).digits(digits).context(context);\n}","import noop from \"../noop.js\";\nexport default function () {\n var lines = [],\n line;\n return {\n point: function point(x, y, m) {\n line.push([x, y, m]);\n },\n lineStart: function lineStart() {\n lines.push(line = []);\n },\n lineEnd: noop,\n rejoin: function rejoin() {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n },\n result: function result() {\n var result = lines;\n lines = [];\n line = null;\n return result;\n }\n };\n}","import { abs, epsilon } from \"./math.js\";\nexport default function (a, b) {\n return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;\n}","import pointEqual from \"../pointEqual.js\";\nimport { epsilon } from \"../math.js\";\nfunction Intersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other; // another intersection\n this.e = entry; // is an entry?\n this.v = false; // visited\n this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\nexport default function (segments, compareIntersection, startInside, interpolate, stream) {\n var subject = [],\n clip = [],\n i,\n n;\n segments.forEach(function (segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n,\n p0 = segment[0],\n p1 = segment[n],\n x;\n if (pointEqual(p0, p1)) {\n if (!p0[2] && !p1[2]) {\n stream.lineStart();\n for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n stream.lineEnd();\n return;\n }\n // handle degenerate cases by moving the point\n p1[0] += 2 * epsilon;\n }\n subject.push(x = new Intersection(p0, segment, null, true));\n clip.push(x.o = new Intersection(p0, null, x, false));\n subject.push(x = new Intersection(p1, segment, null, false));\n clip.push(x.o = new Intersection(p1, null, x, true));\n });\n if (!subject.length) return;\n clip.sort(compareIntersection);\n link(subject);\n link(clip);\n for (i = 0, n = clip.length; i < n; ++i) {\n clip[i].e = startInside = !startInside;\n }\n var start = subject[0],\n points,\n point;\n while (1) {\n // Find first unvisited intersection.\n var current = start,\n isSubject = true;\n while (current.v) if ((current = current.n) === start) return;\n points = current.z;\n stream.lineStart();\n do {\n current.v = current.o.v = true;\n if (current.e) {\n if (isSubject) {\n for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.n.x, 1, stream);\n }\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.p.x, -1, stream);\n }\n current = current.p;\n }\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n } while (!current.v);\n stream.lineEnd();\n }\n}\nfunction link(array) {\n if (!(n = array.length)) return;\n var n,\n i = 0,\n a = array[0],\n b;\n while (++i < n) {\n a.n = b = array[i];\n b.p = a;\n a = b;\n }\n a.n = b = array[0];\n b.p = a;\n}","import { asin, atan2, cos, sin, sqrt } from \"./math.js\";\nexport function spherical(cartesian) {\n return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];\n}\nexport function cartesian(spherical) {\n var lambda = spherical[0],\n phi = spherical[1],\n cosPhi = cos(phi);\n return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];\n}\nexport function cartesianDot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\nexport function cartesianCross(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nexport function cartesianAddInPlace(a, b) {\n a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\nexport function cartesianScale(vector, k) {\n return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nexport function cartesianNormalizeInPlace(d) {\n var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l, d[1] /= l, d[2] /= l;\n}","import { Adder } from \"d3-array\";\nimport { cartesian, cartesianCross, cartesianNormalizeInPlace } from \"./cartesian.js\";\nimport { abs, asin, atan2, cos, epsilon, epsilon2, halfPi, pi, quarterPi, sign, sin, tau } from \"./math.js\";\nfunction longitude(point) {\n return abs(point[0]) <= pi ? point[0] : sign(point[0]) * ((abs(point[0]) + pi) % tau - pi);\n}\nexport default function (polygon, point) {\n var lambda = longitude(point),\n phi = point[1],\n sinPhi = sin(phi),\n normal = [sin(lambda), -cos(lambda), 0],\n angle = 0,\n winding = 0;\n var sum = new Adder();\n if (sinPhi === 1) phi = halfPi + epsilon;else if (sinPhi === -1) phi = -halfPi - epsilon;\n for (var i = 0, n = polygon.length; i < n; ++i) {\n if (!(m = (ring = polygon[i]).length)) continue;\n var ring,\n m,\n point0 = ring[m - 1],\n lambda0 = longitude(point0),\n phi0 = point0[1] / 2 + quarterPi,\n sinPhi0 = sin(phi0),\n cosPhi0 = cos(phi0);\n for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n var point1 = ring[j],\n lambda1 = longitude(point1),\n phi1 = point1[1] / 2 + quarterPi,\n sinPhi1 = sin(phi1),\n cosPhi1 = cos(phi1),\n delta = lambda1 - lambda0,\n sign = delta >= 0 ? 1 : -1,\n absDelta = sign * delta,\n antimeridian = absDelta > pi,\n k = sinPhi0 * sinPhi1;\n sum.add(atan2(k * sign * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta)));\n angle += antimeridian ? delta + sign * tau : delta;\n\n // Are the longitudes either side of the point’s meridian (lambda),\n // and are the latitudes smaller than the parallel (phi)?\n if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n var arc = cartesianCross(cartesian(point0), cartesian(point1));\n cartesianNormalizeInPlace(arc);\n var intersection = cartesianCross(normal, arc);\n cartesianNormalizeInPlace(intersection);\n var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);\n if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n winding += antimeridian ^ delta >= 0 ? 1 : -1;\n }\n }\n }\n }\n\n // First, determine whether the South pole is inside or outside:\n //\n // It is inside if:\n // * the polygon winds around it in a clockwise direction.\n // * the polygon does not (cumulatively) wind around it, but has a negative\n // (counter-clockwise) area.\n //\n // Second, count the (signed) number of times a segment crosses a lambda\n // from the point to the South pole. If it is zero, then the point is the\n // same side as the South pole.\n\n return (angle < -epsilon || angle < epsilon && sum < -epsilon2) ^ winding & 1;\n}","import _regeneratorRuntime from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/regenerator/index.js\";\nvar _marked = /*#__PURE__*/_regeneratorRuntime.mark(flatten);\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction flatten(arrays) {\n var _iterator, _step, array;\n return _regeneratorRuntime.wrap(function flatten$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n _iterator = _createForOfIteratorHelper(arrays);\n _context.prev = 1;\n _iterator.s();\n case 3:\n if ((_step = _iterator.n()).done) {\n _context.next = 8;\n break;\n }\n array = _step.value;\n return _context.delegateYield(array, \"t0\", 6);\n case 6:\n _context.next = 3;\n break;\n case 8:\n _context.next = 13;\n break;\n case 10:\n _context.prev = 10;\n _context.t1 = _context[\"catch\"](1);\n _iterator.e(_context.t1);\n case 13:\n _context.prev = 13;\n _iterator.f();\n return _context.finish(13);\n case 16:\n case \"end\":\n return _context.stop();\n }\n }, _marked, null, [[1, 10, 13, 16]]);\n}\nexport default function merge(arrays) {\n return Array.from(flatten(arrays));\n}","import clipBuffer from \"./buffer.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport { epsilon, halfPi } from \"../math.js\";\nimport polygonContains from \"../polygonContains.js\";\nimport { merge } from \"d3-array\";\nexport default function (pointVisible, clipLine, interpolate, start) {\n return function (sink) {\n var line = clipLine(sink),\n ringBuffer = clipBuffer(),\n ringSink = clipLine(ringBuffer),\n polygonStarted = false,\n polygon,\n segments,\n ring;\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function polygonStart() {\n clip.point = pointRing;\n clip.lineStart = ringStart;\n clip.lineEnd = ringEnd;\n segments = [];\n polygon = [];\n },\n polygonEnd: function polygonEnd() {\n clip.point = point;\n clip.lineStart = lineStart;\n clip.lineEnd = lineEnd;\n segments = merge(segments);\n var startInside = polygonContains(polygon, start);\n if (segments.length) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n clipRejoin(segments, compareIntersection, startInside, interpolate, sink);\n } else if (startInside) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n }\n if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n segments = polygon = null;\n },\n sphere: function sphere() {\n sink.polygonStart();\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n sink.polygonEnd();\n }\n };\n function point(lambda, phi) {\n if (pointVisible(lambda, phi)) sink.point(lambda, phi);\n }\n function pointLine(lambda, phi) {\n line.point(lambda, phi);\n }\n function lineStart() {\n clip.point = pointLine;\n line.lineStart();\n }\n function lineEnd() {\n clip.point = point;\n line.lineEnd();\n }\n function pointRing(lambda, phi) {\n ring.push([lambda, phi]);\n ringSink.point(lambda, phi);\n }\n function ringStart() {\n ringSink.lineStart();\n ring = [];\n }\n function ringEnd() {\n pointRing(ring[0][0], ring[0][1]);\n ringSink.lineEnd();\n var clean = ringSink.clean(),\n ringSegments = ringBuffer.result(),\n i,\n n = ringSegments.length,\n m,\n segment,\n point;\n ring.pop();\n polygon.push(ring);\n ring = null;\n if (!n) return;\n\n // No intersections.\n if (clean & 1) {\n segment = ringSegments[0];\n if ((m = segment.length - 1) > 0) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n sink.lineEnd();\n }\n return;\n }\n\n // Rejoin connected segments.\n // TODO reuse ringBuffer.rejoin()?\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n segments.push(ringSegments.filter(validSegment));\n }\n return clip;\n };\n}\nfunction validSegment(segment) {\n return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1]) - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]);\n}","import clip from \"./index.js\";\nimport { abs, atan, cos, epsilon, halfPi, pi, sin } from \"../math.js\";\nexport default clip(function () {\n return true;\n}, clipAntimeridianLine, clipAntimeridianInterpolate, [-pi, -halfPi]);\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n var lambda0 = NaN,\n phi0 = NaN,\n sign0 = NaN,\n _clean; // no intersections\n\n return {\n lineStart: function lineStart() {\n stream.lineStart();\n _clean = 1;\n },\n point: function point(lambda1, phi1) {\n var sign1 = lambda1 > 0 ? pi : -pi,\n delta = abs(lambda1 - lambda0);\n if (abs(delta - pi) < epsilon) {\n // line crosses a pole\n stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n stream.point(lambda1, phi0);\n _clean = 0;\n } else if (sign0 !== sign1 && delta >= pi) {\n // line crosses antimeridian\n if (abs(lambda0 - sign0) < epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies\n if (abs(lambda1 - sign1) < epsilon) lambda1 -= sign1 * epsilon;\n phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n _clean = 0;\n }\n stream.point(lambda0 = lambda1, phi0 = phi1);\n sign0 = sign1;\n },\n lineEnd: function lineEnd() {\n stream.lineEnd();\n lambda0 = phi0 = NaN;\n },\n clean: function clean() {\n return 2 - _clean; // if intersections, rejoin first and last segments\n }\n };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n var cosPhi0,\n cosPhi1,\n sinLambda0Lambda1 = sin(lambda0 - lambda1);\n return abs(sinLambda0Lambda1) > epsilon ? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1) - sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0)) / (cosPhi0 * cosPhi1 * sinLambda0Lambda1)) : (phi0 + phi1) / 2;\n}\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n var phi;\n if (from == null) {\n phi = direction * halfPi;\n stream.point(-pi, phi);\n stream.point(0, phi);\n stream.point(pi, phi);\n stream.point(pi, 0);\n stream.point(pi, -phi);\n stream.point(0, -phi);\n stream.point(-pi, -phi);\n stream.point(-pi, 0);\n stream.point(-pi, phi);\n } else if (abs(from[0] - to[0]) > epsilon) {\n var lambda = from[0] < to[0] ? pi : -pi;\n phi = direction * lambda / 2;\n stream.point(-lambda, phi);\n stream.point(0, phi);\n stream.point(lambda, phi);\n } else {\n stream.point(to[0], to[1]);\n }\n}","import { cartesian, cartesianNormalizeInPlace, spherical } from \"./cartesian.js\";\nimport constant from \"./constant.js\";\nimport { acos, cos, degrees, epsilon, radians, sin, tau } from \"./math.js\";\nimport { rotateRadians } from \"./rotation.js\";\n\n// Generates a circle centered at [0°, 0°], with a given radius and precision.\nexport function circleStream(stream, radius, delta, direction, t0, t1) {\n if (!delta) return;\n var cosRadius = cos(radius),\n sinRadius = sin(radius),\n step = direction * delta;\n if (t0 == null) {\n t0 = radius + direction * tau;\n t1 = radius - step / 2;\n } else {\n t0 = circleRadius(cosRadius, t0);\n t1 = circleRadius(cosRadius, t1);\n if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau;\n }\n for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]);\n stream.point(point[0], point[1]);\n }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n point = cartesian(point), point[0] -= cosRadius;\n cartesianNormalizeInPlace(point);\n var radius = acos(-point[1]);\n return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau;\n}\nexport default function () {\n var center = constant([0, 0]),\n radius = constant(90),\n precision = constant(6),\n ring,\n rotate,\n stream = {\n point: point\n };\n function point(x, y) {\n ring.push(x = rotate(x, y));\n x[0] *= degrees, x[1] *= degrees;\n }\n function circle() {\n var c = center.apply(this, arguments),\n r = radius.apply(this, arguments) * radians,\n p = precision.apply(this, arguments) * radians;\n ring = [];\n rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;\n circleStream(stream, r, p, 1);\n c = {\n type: \"Polygon\",\n coordinates: [ring]\n };\n ring = rotate = null;\n return c;\n }\n circle.center = function (_) {\n return arguments.length ? (center = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), circle) : center;\n };\n circle.radius = function (_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), circle) : radius;\n };\n circle.precision = function (_) {\n return arguments.length ? (precision = typeof _ === \"function\" ? _ : constant(+_), circle) : precision;\n };\n return circle;\n}","import { abs, epsilon } from \"../math.js\";\nimport clipBuffer from \"./buffer.js\";\nimport clipLine from \"./line.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport { merge } from \"d3-array\";\nvar clipMax = 1e9,\n clipMin = -clipMax;\n\n// TODO Use d3-polygon’s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nexport default function clipRectangle(x0, y0, x1, y1) {\n function visible(x, y) {\n return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n }\n function interpolate(from, to, direction, stream) {\n var a = 0,\n a1 = 0;\n if (from == null || (a = corner(from, direction)) !== (a1 = corner(to, direction)) || comparePoint(from, to) < 0 ^ direction > 0) {\n do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0); while ((a = (a + direction + 4) % 4) !== a1);\n } else {\n stream.point(to[0], to[1]);\n }\n }\n function corner(p, direction) {\n return abs(p[0] - x0) < epsilon ? direction > 0 ? 0 : 3 : abs(p[0] - x1) < epsilon ? direction > 0 ? 2 : 1 : abs(p[1] - y0) < epsilon ? direction > 0 ? 1 : 0 : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n }\n\n function compareIntersection(a, b) {\n return comparePoint(a.x, b.x);\n }\n function comparePoint(a, b) {\n var ca = corner(a, 1),\n cb = corner(b, 1);\n return ca !== cb ? ca - cb : ca === 0 ? b[1] - a[1] : ca === 1 ? a[0] - b[0] : ca === 2 ? a[1] - b[1] : b[0] - a[0];\n }\n return function (stream) {\n var activeStream = stream,\n bufferStream = clipBuffer(),\n segments,\n polygon,\n ring,\n x__,\n y__,\n v__,\n // first point\n x_,\n y_,\n v_,\n // previous point\n first,\n clean;\n var clipStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: polygonStart,\n polygonEnd: polygonEnd\n };\n function point(x, y) {\n if (visible(x, y)) activeStream.point(x, y);\n }\n function polygonInside() {\n var winding = 0;\n for (var i = 0, n = polygon.length; i < n; ++i) {\n for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n if (a1 <= y1) {\n if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding;\n } else {\n if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding;\n }\n }\n }\n return winding;\n }\n\n // Buffer geometry within a polygon and then clip it en masse.\n function polygonStart() {\n activeStream = bufferStream, segments = [], polygon = [], clean = true;\n }\n function polygonEnd() {\n var startInside = polygonInside(),\n cleanInside = clean && startInside,\n visible = (segments = merge(segments)).length;\n if (cleanInside || visible) {\n stream.polygonStart();\n if (cleanInside) {\n stream.lineStart();\n interpolate(null, null, 1, stream);\n stream.lineEnd();\n }\n if (visible) {\n clipRejoin(segments, compareIntersection, startInside, interpolate, stream);\n }\n stream.polygonEnd();\n }\n activeStream = stream, segments = polygon = ring = null;\n }\n function lineStart() {\n clipStream.point = linePoint;\n if (polygon) polygon.push(ring = []);\n first = true;\n v_ = false;\n x_ = y_ = NaN;\n }\n\n // TODO rather than special-case polygons, simply handle them separately.\n // Ideally, coincident intersection points should be jittered to avoid\n // clipping issues.\n function lineEnd() {\n if (segments) {\n linePoint(x__, y__);\n if (v__ && v_) bufferStream.rejoin();\n segments.push(bufferStream.result());\n }\n clipStream.point = point;\n if (v_) activeStream.lineEnd();\n }\n function linePoint(x, y) {\n var v = visible(x, y);\n if (polygon) ring.push([x, y]);\n if (first) {\n x__ = x, y__ = y, v__ = v;\n first = false;\n if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n }\n } else {\n if (v && v_) activeStream.point(x, y);else {\n var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n if (clipLine(a, b, x0, y0, x1, y1)) {\n if (!v_) {\n activeStream.lineStart();\n activeStream.point(a[0], a[1]);\n }\n activeStream.point(b[0], b[1]);\n if (!v) activeStream.lineEnd();\n clean = false;\n } else if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n clean = false;\n }\n }\n }\n x_ = x, y_ = y, v_ = v;\n }\n return clipStream;\n };\n}","export default function (a, b, x0, y0, x1, y1) {\n var ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n return true;\n}","export default function (a, b) {\n function compose(x, y) {\n return x = a(x, y), b(x[0], x[1]);\n }\n if (a.invert && b.invert) compose.invert = function (x, y) {\n return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n };\n return compose;\n}","import compose from \"./compose.js\";\nimport { abs, asin, atan2, cos, degrees, pi, radians, sin, tau } from \"./math.js\";\nfunction rotationIdentity(lambda, phi) {\n if (abs(lambda) > pi) lambda -= Math.round(lambda / tau) * tau;\n return [lambda, phi];\n}\nrotationIdentity.invert = rotationIdentity;\nexport function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n return (deltaLambda %= tau) ? deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma)) : rotationLambda(deltaLambda) : deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma) : rotationIdentity;\n}\nfunction forwardRotationLambda(deltaLambda) {\n return function (lambda, phi) {\n lambda += deltaLambda;\n if (abs(lambda) > pi) lambda -= Math.round(lambda / tau) * tau;\n return [lambda, phi];\n };\n}\nfunction rotationLambda(deltaLambda) {\n var rotation = forwardRotationLambda(deltaLambda);\n rotation.invert = forwardRotationLambda(-deltaLambda);\n return rotation;\n}\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n var cosDeltaPhi = cos(deltaPhi),\n sinDeltaPhi = sin(deltaPhi),\n cosDeltaGamma = cos(deltaGamma),\n sinDeltaGamma = sin(deltaGamma);\n function rotation(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaPhi + x * sinDeltaPhi;\n return [atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi), asin(k * cosDeltaGamma + y * sinDeltaGamma)];\n }\n rotation.invert = function (lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaGamma - y * sinDeltaGamma;\n return [atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi), asin(k * cosDeltaPhi - x * sinDeltaPhi)];\n };\n return rotation;\n}\nexport default function (rotate) {\n rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);\n function forward(coordinates) {\n coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n }\n forward.invert = function (coordinates) {\n coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n };\n return forward;\n}","export default function (methods) {\n return {\n stream: transformer(methods)\n };\n}\nexport function transformer(methods) {\n return function (stream) {\n var s = new TransformStream();\n for (var key in methods) s[key] = methods[key];\n s.stream = stream;\n return s;\n };\n}\nfunction TransformStream() {}\nTransformStream.prototype = {\n constructor: TransformStream,\n point: function point(x, y) {\n this.stream.point(x, y);\n },\n sphere: function sphere() {\n this.stream.sphere();\n },\n lineStart: function lineStart() {\n this.stream.lineStart();\n },\n lineEnd: function lineEnd() {\n this.stream.lineEnd();\n },\n polygonStart: function polygonStart() {\n this.stream.polygonStart();\n },\n polygonEnd: function polygonEnd() {\n this.stream.polygonEnd();\n }\n};","import { default as geoStream } from \"../stream.js\";\nimport boundsStream from \"../path/bounds.js\";\nfunction fit(projection, fitBounds, object) {\n var clip = projection.clipExtent && projection.clipExtent();\n projection.scale(150).translate([0, 0]);\n if (clip != null) projection.clipExtent(null);\n geoStream(object, projection.stream(boundsStream));\n fitBounds(boundsStream.result());\n if (clip != null) projection.clipExtent(clip);\n return projection;\n}\nexport function fitExtent(projection, extent, object) {\n return fit(projection, function (b) {\n var w = extent[1][0] - extent[0][0],\n h = extent[1][1] - extent[0][1],\n k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\nexport function fitSize(projection, size, object) {\n return fitExtent(projection, [[0, 0], size], object);\n}\nexport function fitWidth(projection, width, object) {\n return fit(projection, function (b) {\n var w = +width,\n k = w / (b[1][0] - b[0][0]),\n x = (w - k * (b[1][0] + b[0][0])) / 2,\n y = -k * b[0][1];\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\nexport function fitHeight(projection, height, object) {\n return fit(projection, function (b) {\n var h = +height,\n k = h / (b[1][1] - b[0][1]),\n x = -k * b[0][0],\n y = (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}","import { cartesian } from \"../cartesian.js\";\nimport { abs, asin, atan2, cos, epsilon, radians, sqrt } from \"../math.js\";\nimport { transformer } from \"../transform.js\";\nvar maxDepth = 16,\n // maximum depth of subdivision\n cosMinDistance = cos(30 * radians); // cos(minimum angular distance)\n\nexport default function (project, delta2) {\n return +delta2 ? resample(project, delta2) : resampleNone(project);\n}\nfunction resampleNone(project) {\n return transformer({\n point: function point(x, y) {\n x = project(x, y);\n this.stream.point(x[0], x[1]);\n }\n });\n}\nfunction resample(project, delta2) {\n function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n var dx = x1 - x0,\n dy = y1 - y0,\n d2 = dx * dx + dy * dy;\n if (d2 > 4 * delta2 && depth--) {\n var a = a0 + a1,\n b = b0 + b1,\n c = c0 + c1,\n m = sqrt(a * a + b * b + c * c),\n phi2 = asin(c /= m),\n lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a),\n p = project(lambda2, phi2),\n x2 = p[0],\n y2 = p[1],\n dx2 = x2 - x0,\n dy2 = y2 - y0,\n dz = dy * dx2 - dx * dy2;\n if (dz * dz / d2 > delta2 // perpendicular projected distance\n || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) {\n // angular distance\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n stream.point(x2, y2);\n resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n }\n }\n }\n return function (stream) {\n var lambda00, x00, y00, a00, b00, c00,\n // first point\n lambda0, x0, y0, a0, b0, c0; // previous point\n\n var resampleStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function polygonStart() {\n stream.polygonStart();\n resampleStream.lineStart = ringStart;\n },\n polygonEnd: function polygonEnd() {\n stream.polygonEnd();\n resampleStream.lineStart = lineStart;\n }\n };\n function point(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n }\n function lineStart() {\n x0 = NaN;\n resampleStream.point = linePoint;\n stream.lineStart();\n }\n function linePoint(lambda, phi) {\n var c = cartesian([lambda, phi]),\n p = project(lambda, phi);\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n stream.point(x0, y0);\n }\n function lineEnd() {\n resampleStream.point = point;\n stream.lineEnd();\n }\n function ringStart() {\n lineStart();\n resampleStream.point = ringPoint;\n resampleStream.lineEnd = ringEnd;\n }\n function ringPoint(lambda, phi) {\n linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n resampleStream.point = linePoint;\n }\n function ringEnd() {\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n resampleStream.lineEnd = lineEnd;\n lineEnd();\n }\n return resampleStream;\n };\n}","import clipAntimeridian from \"../clip/antimeridian.js\";\nimport clipCircle from \"../clip/circle.js\";\nimport clipRectangle from \"../clip/rectangle.js\";\nimport compose from \"../compose.js\";\nimport identity from \"../identity.js\";\nimport { cos, degrees, radians, sin, sqrt } from \"../math.js\";\nimport { rotateRadians } from \"../rotation.js\";\nimport { transformer } from \"../transform.js\";\nimport { fitExtent, fitSize, fitWidth, fitHeight } from \"./fit.js\";\nimport resample from \"./resample.js\";\nvar transformRadians = transformer({\n point: function point(x, y) {\n this.stream.point(x * radians, y * radians);\n }\n});\nfunction transformRotate(rotate) {\n return transformer({\n point: function point(x, y) {\n var r = rotate(x, y);\n return this.stream.point(r[0], r[1]);\n }\n });\n}\nfunction scaleTranslate(k, dx, dy, sx, sy) {\n function transform(x, y) {\n x *= sx;\n y *= sy;\n return [dx + k * x, dy - k * y];\n }\n transform.invert = function (x, y) {\n return [(x - dx) / k * sx, (dy - y) / k * sy];\n };\n return transform;\n}\nfunction scaleTranslateRotate(k, dx, dy, sx, sy, alpha) {\n if (!alpha) return scaleTranslate(k, dx, dy, sx, sy);\n var cosAlpha = cos(alpha),\n sinAlpha = sin(alpha),\n a = cosAlpha * k,\n b = sinAlpha * k,\n ai = cosAlpha / k,\n bi = sinAlpha / k,\n ci = (sinAlpha * dy - cosAlpha * dx) / k,\n fi = (sinAlpha * dx + cosAlpha * dy) / k;\n function transform(x, y) {\n x *= sx;\n y *= sy;\n return [a * x - b * y + dx, dy - b * x - a * y];\n }\n transform.invert = function (x, y) {\n return [sx * (ai * x - bi * y + ci), sy * (fi - bi * x - ai * y)];\n };\n return transform;\n}\nexport default function projection(project) {\n return projectionMutator(function () {\n return project;\n })();\n}\nexport function projectionMutator(projectAt) {\n var project,\n k = 150,\n // scale\n x = 480,\n y = 250,\n // translate\n lambda = 0,\n phi = 0,\n // center\n deltaLambda = 0,\n deltaPhi = 0,\n deltaGamma = 0,\n rotate,\n // pre-rotate\n alpha = 0,\n // post-rotate angle\n sx = 1,\n // reflectX\n sy = 1,\n // reflectX\n theta = null,\n preclip = clipAntimeridian,\n // pre-clip angle\n x0 = null,\n y0,\n x1,\n y1,\n postclip = identity,\n // post-clip extent\n delta2 = 0.5,\n // precision\n projectResample,\n projectTransform,\n projectRotateTransform,\n cache,\n cacheStream;\n function projection(point) {\n return projectRotateTransform(point[0] * radians, point[1] * radians);\n }\n function invert(point) {\n point = projectRotateTransform.invert(point[0], point[1]);\n return point && [point[0] * degrees, point[1] * degrees];\n }\n projection.stream = function (stream) {\n return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream)))));\n };\n projection.preclip = function (_) {\n return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip;\n };\n projection.postclip = function (_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n };\n projection.clipAngle = function (_) {\n return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees;\n };\n projection.clipExtent = function (_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n projection.scale = function (_) {\n return arguments.length ? (k = +_, recenter()) : k;\n };\n projection.translate = function (_) {\n return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n };\n projection.center = function (_) {\n return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];\n };\n projection.rotate = function (_) {\n return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];\n };\n projection.angle = function (_) {\n return arguments.length ? (alpha = _ % 360 * radians, recenter()) : alpha * degrees;\n };\n projection.reflectX = function (_) {\n return arguments.length ? (sx = _ ? -1 : 1, recenter()) : sx < 0;\n };\n projection.reflectY = function (_) {\n return arguments.length ? (sy = _ ? -1 : 1, recenter()) : sy < 0;\n };\n projection.precision = function (_) {\n return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);\n };\n projection.fitExtent = function (extent, object) {\n return fitExtent(projection, extent, object);\n };\n projection.fitSize = function (size, object) {\n return fitSize(projection, size, object);\n };\n projection.fitWidth = function (width, object) {\n return fitWidth(projection, width, object);\n };\n projection.fitHeight = function (height, object) {\n return fitHeight(projection, height, object);\n };\n function recenter() {\n var center = scaleTranslateRotate(k, 0, 0, sx, sy, alpha).apply(null, project(lambda, phi)),\n transform = scaleTranslateRotate(k, x - center[0], y - center[1], sx, sy, alpha);\n rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma);\n projectTransform = compose(project, transform);\n projectRotateTransform = compose(rotate, projectTransform);\n projectResample = resample(projectTransform, delta2);\n return reset();\n }\n function reset() {\n cache = cacheStream = null;\n return projection;\n }\n return function () {\n project = projectAt.apply(this, arguments);\n projection.invert = project.invert && invert;\n return recenter();\n };\n}","import { cartesian, cartesianAddInPlace, cartesianCross, cartesianDot, cartesianScale, spherical } from \"../cartesian.js\";\nimport { circleStream } from \"../circle.js\";\nimport { abs, cos, epsilon, pi, radians, sqrt } from \"../math.js\";\nimport pointEqual from \"../pointEqual.js\";\nimport clip from \"./index.js\";\nexport default function (radius) {\n var cr = cos(radius),\n delta = 6 * radians,\n smallRadius = cr > 0,\n notHemisphere = abs(cr) > epsilon; // TODO optimise for this common case\n\n function interpolate(from, to, direction, stream) {\n circleStream(stream, radius, delta, direction, from, to);\n }\n function visible(lambda, phi) {\n return cos(lambda) * cos(phi) > cr;\n }\n\n // Takes a line and cuts into visible segments. Return values used for polygon\n // clipping: 0 - there were intersections or the line was empty; 1 - no\n // intersections 2 - there were intersections, and the first and last segments\n // should be rejoined.\n function clipLine(stream) {\n var point0,\n // previous point\n c0,\n // code for previous point\n v0,\n // visibility of previous point\n v00,\n // visibility of first point\n _clean; // no intersections\n return {\n lineStart: function lineStart() {\n v00 = v0 = false;\n _clean = 1;\n },\n point: function point(lambda, phi) {\n var point1 = [lambda, phi],\n point2,\n v = visible(lambda, phi),\n c = smallRadius ? v ? 0 : code(lambda, phi) : v ? code(lambda + (lambda < 0 ? pi : -pi), phi) : 0;\n if (!point0 && (v00 = v0 = v)) stream.lineStart();\n if (v !== v0) {\n point2 = intersect(point0, point1);\n if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2)) point1[2] = 1;\n }\n if (v !== v0) {\n _clean = 0;\n if (v) {\n // outside going in\n stream.lineStart();\n point2 = intersect(point1, point0);\n stream.point(point2[0], point2[1]);\n } else {\n // inside going out\n point2 = intersect(point0, point1);\n stream.point(point2[0], point2[1], 2);\n stream.lineEnd();\n }\n point0 = point2;\n } else if (notHemisphere && point0 && smallRadius ^ v) {\n var t;\n // If the codes for two points are different, or are both zero,\n // and there this segment intersects with the small circle.\n if (!(c & c0) && (t = intersect(point1, point0, true))) {\n _clean = 0;\n if (smallRadius) {\n stream.lineStart();\n stream.point(t[0][0], t[0][1]);\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n } else {\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n stream.lineStart();\n stream.point(t[0][0], t[0][1], 3);\n }\n }\n }\n if (v && (!point0 || !pointEqual(point0, point1))) {\n stream.point(point1[0], point1[1]);\n }\n point0 = point1, v0 = v, c0 = c;\n },\n lineEnd: function lineEnd() {\n if (v0) stream.lineEnd();\n point0 = null;\n },\n // Rejoin first and last segments if there were intersections and the first\n // and last points were visible.\n clean: function clean() {\n return _clean | (v00 && v0) << 1;\n }\n };\n }\n\n // Intersects the great circle between a and b with the clip circle.\n function intersect(a, b, two) {\n var pa = cartesian(a),\n pb = cartesian(b);\n\n // We have two planes, n1.p = d1 and n2.p = d2.\n // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).\n var n1 = [1, 0, 0],\n // normal\n n2 = cartesianCross(pa, pb),\n n2n2 = cartesianDot(n2, n2),\n n1n2 = n2[0],\n // cartesianDot(n1, n2),\n determinant = n2n2 - n1n2 * n1n2;\n\n // Two polar points.\n if (!determinant) return !two && a;\n var c1 = cr * n2n2 / determinant,\n c2 = -cr * n1n2 / determinant,\n n1xn2 = cartesianCross(n1, n2),\n A = cartesianScale(n1, c1),\n B = cartesianScale(n2, c2);\n cartesianAddInPlace(A, B);\n\n // Solve |p(t)|^2 = 1.\n var u = n1xn2,\n w = cartesianDot(A, u),\n uu = cartesianDot(u, u),\n t2 = w * w - uu * (cartesianDot(A, A) - 1);\n if (t2 < 0) return;\n var t = sqrt(t2),\n q = cartesianScale(u, (-w - t) / uu);\n cartesianAddInPlace(q, A);\n q = spherical(q);\n if (!two) return q;\n\n // Two intersection points.\n var lambda0 = a[0],\n lambda1 = b[0],\n phi0 = a[1],\n phi1 = b[1],\n z;\n if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n var delta = lambda1 - lambda0,\n polar = abs(delta - pi) < epsilon,\n meridian = polar || delta < epsilon;\n if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n // Check that the first point is between a and b.\n if (meridian ? polar ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon ? phi0 : phi1) : phi0 <= q[1] && q[1] <= phi1 : delta > pi ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n var q1 = cartesianScale(u, (-w + t) / uu);\n cartesianAddInPlace(q1, A);\n return [q, spherical(q1)];\n }\n }\n\n // Generates a 4-bit vector representing the location of a point relative to\n // the small circle's bounding box.\n function code(lambda, phi) {\n var r = smallRadius ? radius : pi - radius,\n code = 0;\n if (lambda < -r) code |= 1; // left\n else if (lambda > r) code |= 2; // right\n if (phi < -r) code |= 4; // below\n else if (phi > r) code |= 8; // above\n return code;\n }\n return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi, radius - pi]);\n}","import { degrees, pi, radians } from \"../math.js\";\nimport { projectionMutator } from \"./index.js\";\nexport function conicProjection(projectAt) {\n var phi0 = 0,\n phi1 = pi / 3,\n m = projectionMutator(projectAt),\n p = m(phi0, phi1);\n p.parallels = function (_) {\n return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees, phi1 * degrees];\n };\n return p;\n}","import { abs, asin, atan2, cos, epsilon, pi, sign, sin, sqrt } from \"../math.js\";\nimport { conicProjection } from \"./conic.js\";\nimport { cylindricalEqualAreaRaw } from \"./cylindricalEqualArea.js\";\nexport function conicEqualAreaRaw(y0, y1) {\n var sy0 = sin(y0),\n n = (sy0 + sin(y1)) / 2;\n\n // Are the parallels symmetrical around the Equator?\n if (abs(n) < epsilon) return cylindricalEqualAreaRaw(y0);\n var c = 1 + sy0 * (2 * n - sy0),\n r0 = sqrt(c) / n;\n function project(x, y) {\n var r = sqrt(c - 2 * n * sin(y)) / n;\n return [r * sin(x *= n), r0 - r * cos(x)];\n }\n project.invert = function (x, y) {\n var r0y = r0 - y,\n l = atan2(x, abs(r0y)) * sign(r0y);\n if (r0y * n < 0) l -= pi * sign(x) * sign(r0y);\n return [l / n, asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))];\n };\n return project;\n}\nexport default function () {\n return conicProjection(conicEqualAreaRaw).scale(155.424).center([0, 33.6442]);\n}","import { asin, cos, sin } from \"../math.js\";\nexport function cylindricalEqualAreaRaw(phi0) {\n var cosPhi0 = cos(phi0);\n function forward(lambda, phi) {\n return [lambda * cosPhi0, sin(phi) / cosPhi0];\n }\n forward.invert = function (x, y) {\n return [x / cosPhi0, asin(y * cosPhi0)];\n };\n return forward;\n}","import conicEqualArea from \"./conicEqualArea.js\";\nexport default function () {\n return conicEqualArea().parallels([29.5, 45.5]).scale(1070).translate([480, 250]).rotate([96, 0]).center([-0.6, 38.7]);\n}","import { asin, atan2, cos, sin, sqrt } from \"../math.js\";\nexport function azimuthalRaw(scale) {\n return function (x, y) {\n var cx = cos(x),\n cy = cos(y),\n k = scale(cx * cy);\n if (k === Infinity) return [2, 0];\n return [k * cy * sin(x), k * sin(y)];\n };\n}\nexport function azimuthalInvert(angle) {\n return function (x, y) {\n var z = sqrt(x * x + y * y),\n c = angle(z),\n sc = sin(c),\n cc = cos(c);\n return [atan2(x * sc, z * cc), asin(z && y * sc / z)];\n };\n}","import { asin, sqrt } from \"../math.js\";\nimport { azimuthalRaw, azimuthalInvert } from \"./azimuthal.js\";\nimport projection from \"./index.js\";\nexport var azimuthalEqualAreaRaw = azimuthalRaw(function (cxcy) {\n return sqrt(2 / (1 + cxcy));\n});\nazimuthalEqualAreaRaw.invert = azimuthalInvert(function (z) {\n return 2 * asin(z / 2);\n});\nexport default function () {\n return projection(azimuthalEqualAreaRaw).scale(124.75).clipAngle(180 - 1e-3);\n}","import { acos, sin } from \"../math.js\";\nimport { azimuthalRaw, azimuthalInvert } from \"./azimuthal.js\";\nimport projection from \"./index.js\";\nexport var azimuthalEquidistantRaw = azimuthalRaw(function (c) {\n return (c = acos(c)) && c / sin(c);\n});\nazimuthalEquidistantRaw.invert = azimuthalInvert(function (z) {\n return z;\n});\nexport default function () {\n return projection(azimuthalEquidistantRaw).scale(79.4188).clipAngle(180 - 1e-3);\n}","import { atan, exp, halfPi, log, pi, tan, tau } from \"../math.js\";\nimport rotation from \"../rotation.js\";\nimport projection from \"./index.js\";\nexport function mercatorRaw(lambda, phi) {\n return [lambda, log(tan((halfPi + phi) / 2))];\n}\nmercatorRaw.invert = function (x, y) {\n return [x, 2 * atan(exp(y)) - halfPi];\n};\nexport default function () {\n return mercatorProjection(mercatorRaw).scale(961 / tau);\n}\nexport function mercatorProjection(project) {\n var m = projection(project),\n center = m.center,\n scale = m.scale,\n translate = m.translate,\n clipExtent = m.clipExtent,\n x0 = null,\n y0,\n x1,\n y1; // clip extent\n\n m.scale = function (_) {\n return arguments.length ? (scale(_), reclip()) : scale();\n };\n m.translate = function (_) {\n return arguments.length ? (translate(_), reclip()) : translate();\n };\n m.center = function (_) {\n return arguments.length ? (center(_), reclip()) : center();\n };\n m.clipExtent = function (_) {\n return arguments.length ? (_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n function reclip() {\n var k = pi * scale(),\n t = m(rotation(m.rotate()).invert([0, 0]));\n return clipExtent(x0 == null ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]] : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);\n }\n return reclip();\n}","import { abs, atan, atan2, cos, epsilon, halfPi, log, pi, pow, sign, sin, sqrt, tan } from \"../math.js\";\nimport { conicProjection } from \"./conic.js\";\nimport { mercatorRaw } from \"./mercator.js\";\nfunction tany(y) {\n return tan((halfPi + y) / 2);\n}\nexport function conicConformalRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : log(cy0 / cos(y1)) / log(tany(y1) / tany(y0)),\n f = cy0 * pow(tany(y0), n) / n;\n if (!n) return mercatorRaw;\n function project(x, y) {\n if (f > 0) {\n if (y < -halfPi + epsilon) y = -halfPi + epsilon;\n } else {\n if (y > halfPi - epsilon) y = halfPi - epsilon;\n }\n var r = f / pow(tany(y), n);\n return [r * sin(n * x), f - r * cos(n * x)];\n }\n project.invert = function (x, y) {\n var fy = f - y,\n r = sign(n) * sqrt(x * x + fy * fy),\n l = atan2(x, abs(fy)) * sign(fy);\n if (fy * n < 0) l -= pi * sign(x) * sign(fy);\n return [l / n, 2 * atan(pow(f / r, 1 / n)) - halfPi];\n };\n return project;\n}\nexport default function () {\n return conicProjection(conicConformalRaw).scale(109.5).parallels([30, 30]);\n}","import projection from \"./index.js\";\nexport function equirectangularRaw(lambda, phi) {\n return [lambda, phi];\n}\nequirectangularRaw.invert = equirectangularRaw;\nexport default function () {\n return projection(equirectangularRaw).scale(152.63);\n}","import { abs, atan2, cos, epsilon, pi, sign, sin, sqrt } from \"../math.js\";\nimport { conicProjection } from \"./conic.js\";\nimport { equirectangularRaw } from \"./equirectangular.js\";\nexport function conicEquidistantRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : (cy0 - cos(y1)) / (y1 - y0),\n g = cy0 / n + y0;\n if (abs(n) < epsilon) return equirectangularRaw;\n function project(x, y) {\n var gy = g - y,\n nx = n * x;\n return [gy * sin(nx), g - gy * cos(nx)];\n }\n project.invert = function (x, y) {\n var gy = g - y,\n l = atan2(x, abs(gy)) * sign(gy);\n if (gy * n < 0) l -= pi * sign(x) * sign(gy);\n return [l / n, g - sign(n) * sqrt(x * x + gy * gy)];\n };\n return project;\n}\nexport default function () {\n return conicProjection(conicEquidistantRaw).scale(131.154).center([0, 13.9389]);\n}","import projection from \"./index.js\";\nimport { abs, asin, cos, epsilon2, sin, sqrt } from \"../math.js\";\nvar A1 = 1.340264,\n A2 = -0.081106,\n A3 = 0.000893,\n A4 = 0.003796,\n M = sqrt(3) / 2,\n iterations = 12;\nexport function equalEarthRaw(lambda, phi) {\n var l = asin(M * sin(phi)),\n l2 = l * l,\n l6 = l2 * l2 * l2;\n return [lambda * cos(l) / (M * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))), l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2))];\n}\nequalEarthRaw.invert = function (x, y) {\n var l = y,\n l2 = l * l,\n l6 = l2 * l2 * l2;\n for (var i = 0, delta, fy, fpy; i < iterations; ++i) {\n fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y;\n fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2);\n l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2;\n if (abs(delta) < epsilon2) break;\n }\n return [M * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / cos(l), asin(sin(l) / M)];\n};\nexport default function () {\n return projection(equalEarthRaw).scale(177.158);\n}","import { atan, cos, sin } from \"../math.js\";\nimport { azimuthalInvert } from \"./azimuthal.js\";\nimport projection from \"./index.js\";\nexport function gnomonicRaw(x, y) {\n var cy = cos(y),\n k = cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\ngnomonicRaw.invert = azimuthalInvert(atan);\nexport default function () {\n return projection(gnomonicRaw).scale(144.049).clipAngle(60);\n}","import projection from \"./index.js\";\nimport { abs, epsilon } from \"../math.js\";\nexport function naturalEarth1Raw(lambda, phi) {\n var phi2 = phi * phi,\n phi4 = phi2 * phi2;\n return [lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))), phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))];\n}\nnaturalEarth1Raw.invert = function (x, y) {\n var phi = y,\n i = 25,\n delta;\n do {\n var phi2 = phi * phi,\n phi4 = phi2 * phi2;\n phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) / (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));\n } while (abs(delta) > epsilon && --i > 0);\n return [x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))), phi];\n};\nexport default function () {\n return projection(naturalEarth1Raw).scale(175.295);\n}","import { asin, cos, epsilon, sin } from \"../math.js\";\nimport { azimuthalInvert } from \"./azimuthal.js\";\nimport projection from \"./index.js\";\nexport function orthographicRaw(x, y) {\n return [cos(y) * sin(x), sin(y)];\n}\northographicRaw.invert = azimuthalInvert(asin);\nexport default function () {\n return projection(orthographicRaw).scale(249.5).clipAngle(90 + epsilon);\n}","import { atan, cos, sin } from \"../math.js\";\nimport { azimuthalInvert } from \"./azimuthal.js\";\nimport projection from \"./index.js\";\nexport function stereographicRaw(x, y) {\n var cy = cos(y),\n k = 1 + cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\nstereographicRaw.invert = azimuthalInvert(function (z) {\n return 2 * atan(z);\n});\nexport default function () {\n return projection(stereographicRaw).scale(250).clipAngle(142);\n}","import { atan, exp, halfPi, log, tan } from \"../math.js\";\nimport { mercatorProjection } from \"./mercator.js\";\nexport function transverseMercatorRaw(lambda, phi) {\n return [log(tan((halfPi + phi) / 2)), -lambda];\n}\ntransverseMercatorRaw.invert = function (x, y) {\n return [-y, 2 * atan(exp(x)) - halfPi];\n};\nexport default function () {\n var m = mercatorProjection(transverseMercatorRaw),\n center = m.center,\n rotate = m.rotate;\n m.center = function (_) {\n return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);\n };\n m.rotate = function (_) {\n return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);\n };\n return rotate([0, 0, 90]).scale(159.155);\n}","export var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var ceil = Math.ceil;\nexport var cos = Math.cos;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var log = Math.log;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var pow = Math.pow;\nexport var round = Math.round;\nexport var sign = Math.sign || function (x) {\n return x > 0 ? 1 : x < 0 ? -1 : 0;\n};\nexport var sin = Math.sin;\nexport var tan = Math.tan;\nexport var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var sqrt1_2 = Math.SQRT1_2;\nexport var sqrt2 = sqrt(2);\nexport var sqrtPi = sqrt(pi);\nexport var tau = pi * 2;\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\nexport function sinci(x) {\n return x ? x / Math.sin(x) : 1;\n}\nexport function asin(x) {\n return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\nexport function sqrt(x) {\n return x > 0 ? Math.sqrt(x) : 0;\n}\nexport function tanh(x) {\n x = exp(2 * x);\n return (x - 1) / (x + 1);\n}\nexport function sinh(x) {\n return (exp(x) - exp(-x)) / 2;\n}\nexport function cosh(x) {\n return (exp(x) + exp(-x)) / 2;\n}\nexport function arsinh(x) {\n return log(x + sqrt(x * x + 1));\n}\nexport function arcosh(x) {\n return log(x + sqrt(x * x - 1));\n}","import { geoProjection as projection } from \"d3-geo\";\nimport { abs, asin, cos, epsilon, halfPi, pi, sin, sqrt2 } from \"./math.js\";\nexport function mollweideBromleyTheta(cp, phi) {\n var cpsinPhi = cp * sin(phi),\n i = 30,\n delta;\n do phi -= delta = (phi + sin(phi) - cpsinPhi) / (1 + cos(phi)); while (abs(delta) > epsilon && --i > 0);\n return phi / 2;\n}\nexport function mollweideBromleyRaw(cx, cy, cp) {\n function forward(lambda, phi) {\n return [cx * lambda * cos(phi = mollweideBromleyTheta(cp, phi)), cy * sin(phi)];\n }\n forward.invert = function (x, y) {\n return y = asin(y / cy), [x / (cx * cos(y)), asin((2 * y + sin(2 * y)) / cp)];\n };\n return forward;\n}\nexport var mollweideRaw = mollweideBromleyRaw(sqrt2 / halfPi, sqrt2, pi);\nexport default function () {\n return projection(mollweideRaw).scale(169.529);\n}","import { geoPath, geoAlbers, geoAlbersUsa, geoAzimuthalEqualArea, geoAzimuthalEquidistant, geoConicConformal, geoConicEqualArea, geoConicEquidistant, geoEqualEarth, geoEquirectangular, geoGnomonic, geoIdentity, geoMercator, geoNaturalEarth1, geoOrthographic, geoStereographic, geoTransverseMercator } from 'd3-geo';\nimport { geoMollweide } from 'd3-geo-projection';\nimport { registerScale } from 'vega-scale';\nvar defaultPath = geoPath();\nvar projectionProperties = [\n// standard properties in d3-geo\n'clipAngle', 'clipExtent', 'scale', 'translate', 'center', 'rotate', 'parallels', 'precision', 'reflectX', 'reflectY',\n// extended properties in d3-geo-projections\n'coefficient', 'distance', 'fraction', 'lobes', 'parallel', 'radius', 'ratio', 'spacing', 'tilt'];\n\n/**\n * Augment projections with their type and a copy method.\n */\nfunction create(type, constructor) {\n return function projection() {\n var p = constructor();\n p.type = type;\n p.path = geoPath().projection(p);\n p.copy = p.copy || function () {\n var c = projection();\n projectionProperties.forEach(function (prop) {\n if (p[prop]) c[prop](p[prop]());\n });\n c.path.pointRadius(p.path.pointRadius());\n return c;\n };\n return registerScale(p);\n };\n}\nfunction projection(type, proj) {\n if (!type || typeof type !== 'string') {\n throw new Error('Projection type must be a name string.');\n }\n type = type.toLowerCase();\n if (arguments.length > 1) {\n projections[type] = create(type, proj);\n return this;\n } else {\n return projections[type] || null;\n }\n}\nfunction getProjectionPath(proj) {\n return proj && proj.path || defaultPath;\n}\nvar projections = {\n // base d3-geo projection types\n albers: geoAlbers,\n albersusa: geoAlbersUsa,\n azimuthalequalarea: geoAzimuthalEqualArea,\n azimuthalequidistant: geoAzimuthalEquidistant,\n conicconformal: geoConicConformal,\n conicequalarea: geoConicEqualArea,\n conicequidistant: geoConicEquidistant,\n equalEarth: geoEqualEarth,\n equirectangular: geoEquirectangular,\n gnomonic: geoGnomonic,\n identity: geoIdentity,\n mercator: geoMercator,\n mollweide: geoMollweide,\n naturalEarth1: geoNaturalEarth1,\n orthographic: geoOrthographic,\n stereographic: geoStereographic,\n transversemercator: geoTransverseMercator\n};\nfor (var key in projections) {\n projection(key, projections[key]);\n}\nexport { getProjectionPath, projection, projectionProperties };","import { epsilon } from \"../math.js\";\nimport albers from \"./albers.js\";\nimport conicEqualArea from \"./conicEqualArea.js\";\nimport { fitExtent, fitSize, fitWidth, fitHeight } from \"./fit.js\";\n\n// The projections must have mutually exclusive clip regions on the sphere,\n// as this will avoid emitting interleaving lines and polygons.\nfunction multiplex(streams) {\n var n = streams.length;\n return {\n point: function point(x, y) {\n var i = -1;\n while (++i < n) streams[i].point(x, y);\n },\n sphere: function sphere() {\n var i = -1;\n while (++i < n) streams[i].sphere();\n },\n lineStart: function lineStart() {\n var i = -1;\n while (++i < n) streams[i].lineStart();\n },\n lineEnd: function lineEnd() {\n var i = -1;\n while (++i < n) streams[i].lineEnd();\n },\n polygonStart: function polygonStart() {\n var i = -1;\n while (++i < n) streams[i].polygonStart();\n },\n polygonEnd: function polygonEnd() {\n var i = -1;\n while (++i < n) streams[i].polygonEnd();\n }\n };\n}\n\n// A composite projection for the United States, configured by default for\n// 960×500. The projection also works quite well at 960×600 if you change the\n// scale to 1285 and adjust the translate accordingly. The set of standard\n// parallels for each region comes from USGS, which is published here:\n// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers\nexport default function () {\n var cache,\n cacheStream,\n lower48 = albers(),\n lower48Point,\n alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]),\n alaskaPoint,\n // EPSG:3338\n hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]),\n hawaiiPoint,\n // ESRI:102007\n _point,\n pointStream = {\n point: function point(x, y) {\n _point = [x, y];\n }\n };\n function albersUsa(coordinates) {\n var x = coordinates[0],\n y = coordinates[1];\n return _point = null, (lower48Point.point(x, y), _point) || (alaskaPoint.point(x, y), _point) || (hawaiiPoint.point(x, y), _point);\n }\n albersUsa.invert = function (coordinates) {\n var k = lower48.scale(),\n t = lower48.translate(),\n x = (coordinates[0] - t[0]) / k,\n y = (coordinates[1] - t[1]) / k;\n return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii : lower48).invert(coordinates);\n };\n albersUsa.stream = function (stream) {\n return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]);\n };\n albersUsa.precision = function (_) {\n if (!arguments.length) return lower48.precision();\n lower48.precision(_), alaska.precision(_), hawaii.precision(_);\n return reset();\n };\n albersUsa.scale = function (_) {\n if (!arguments.length) return lower48.scale();\n lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_);\n return albersUsa.translate(lower48.translate());\n };\n albersUsa.translate = function (_) {\n if (!arguments.length) return lower48.translate();\n var k = lower48.scale(),\n x = +_[0],\n y = +_[1];\n lower48Point = lower48.translate(_).clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]]).stream(pointStream);\n alaskaPoint = alaska.translate([x - 0.307 * k, y + 0.201 * k]).clipExtent([[x - 0.425 * k + epsilon, y + 0.120 * k + epsilon], [x - 0.214 * k - epsilon, y + 0.234 * k - epsilon]]).stream(pointStream);\n hawaiiPoint = hawaii.translate([x - 0.205 * k, y + 0.212 * k]).clipExtent([[x - 0.214 * k + epsilon, y + 0.166 * k + epsilon], [x - 0.115 * k - epsilon, y + 0.234 * k - epsilon]]).stream(pointStream);\n return reset();\n };\n albersUsa.fitExtent = function (extent, object) {\n return fitExtent(albersUsa, extent, object);\n };\n albersUsa.fitSize = function (size, object) {\n return fitSize(albersUsa, size, object);\n };\n albersUsa.fitWidth = function (width, object) {\n return fitWidth(albersUsa, width, object);\n };\n albersUsa.fitHeight = function (height, object) {\n return fitHeight(albersUsa, height, object);\n };\n function reset() {\n cache = cacheStream = null;\n return albersUsa;\n }\n return albersUsa.scale(1070);\n}","import clipRectangle from \"../clip/rectangle.js\";\nimport identity from \"../identity.js\";\nimport { transformer } from \"../transform.js\";\nimport { fitExtent, fitSize, fitWidth, fitHeight } from \"./fit.js\";\nimport { cos, degrees, radians, sin } from \"../math.js\";\nexport default function () {\n var k = 1,\n tx = 0,\n ty = 0,\n sx = 1,\n sy = 1,\n // scale, translate and reflect\n alpha = 0,\n ca,\n sa,\n // angle\n x0 = null,\n y0,\n x1,\n y1,\n // clip extent\n kx = 1,\n ky = 1,\n transform = transformer({\n point: function point(x, y) {\n var p = projection([x, y]);\n this.stream.point(p[0], p[1]);\n }\n }),\n postclip = identity,\n cache,\n cacheStream;\n function reset() {\n kx = k * sx;\n ky = k * sy;\n cache = cacheStream = null;\n return projection;\n }\n function projection(p) {\n var x = p[0] * kx,\n y = p[1] * ky;\n if (alpha) {\n var t = y * ca - x * sa;\n x = x * ca + y * sa;\n y = t;\n }\n return [x + tx, y + ty];\n }\n projection.invert = function (p) {\n var x = p[0] - tx,\n y = p[1] - ty;\n if (alpha) {\n var t = y * ca + x * sa;\n x = x * ca - y * sa;\n y = t;\n }\n return [x / kx, y / ky];\n };\n projection.stream = function (stream) {\n return cache && cacheStream === stream ? cache : cache = transform(postclip(cacheStream = stream));\n };\n projection.postclip = function (_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n };\n projection.clipExtent = function (_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n projection.scale = function (_) {\n return arguments.length ? (k = +_, reset()) : k;\n };\n projection.translate = function (_) {\n return arguments.length ? (tx = +_[0], ty = +_[1], reset()) : [tx, ty];\n };\n projection.angle = function (_) {\n return arguments.length ? (alpha = _ % 360 * radians, sa = sin(alpha), ca = cos(alpha), reset()) : alpha * degrees;\n };\n projection.reflectX = function (_) {\n return arguments.length ? (sx = _ ? -1 : 1, reset()) : sx < 0;\n };\n projection.reflectY = function (_) {\n return arguments.length ? (sy = _ ? -1 : 1, reset()) : sy < 0;\n };\n projection.fitExtent = function (extent, object) {\n return fitExtent(projection, extent, object);\n };\n projection.fitSize = function (size, object) {\n return fitSize(projection, size, object);\n };\n projection.fitWidth = function (width, object) {\n return fitWidth(projection, width, object);\n };\n projection.fitHeight = function (height, object) {\n return fitHeight(projection, height, object);\n };\n return projection;\n}","import { range } from \"d3-array\";\nimport { abs, ceil, epsilon } from \"./math.js\";\nfunction graticuleX(y0, y1, dy) {\n var y = range(y0, y1 - epsilon, dy).concat(y1);\n return function (x) {\n return y.map(function (y) {\n return [x, y];\n });\n };\n}\nfunction graticuleY(x0, x1, dx) {\n var x = range(x0, x1 - epsilon, dx).concat(x1);\n return function (y) {\n return x.map(function (x) {\n return [x, y];\n });\n };\n}\nexport default function graticule() {\n var x1,\n x0,\n X1,\n X0,\n y1,\n y0,\n Y1,\n Y0,\n dx = 10,\n dy = dx,\n DX = 90,\n DY = 360,\n x,\n y,\n X,\n Y,\n precision = 2.5;\n function graticule() {\n return {\n type: \"MultiLineString\",\n coordinates: lines()\n };\n }\n function lines() {\n return range(ceil(X0 / DX) * DX, X1, DX).map(X).concat(range(ceil(Y0 / DY) * DY, Y1, DY).map(Y)).concat(range(ceil(x0 / dx) * dx, x1, dx).filter(function (x) {\n return abs(x % DX) > epsilon;\n }).map(x)).concat(range(ceil(y0 / dy) * dy, y1, dy).filter(function (y) {\n return abs(y % DY) > epsilon;\n }).map(y));\n }\n graticule.lines = function () {\n return lines().map(function (coordinates) {\n return {\n type: \"LineString\",\n coordinates: coordinates\n };\n });\n };\n graticule.outline = function () {\n return {\n type: \"Polygon\",\n coordinates: [X(X0).concat(Y(Y1).slice(1), X(X1).reverse().slice(1), Y(Y0).reverse().slice(1))]\n };\n };\n graticule.extent = function (_) {\n if (!arguments.length) return graticule.extentMinor();\n return graticule.extentMajor(_).extentMinor(_);\n };\n graticule.extentMajor = function (_) {\n if (!arguments.length) return [[X0, Y0], [X1, Y1]];\n X0 = +_[0][0], X1 = +_[1][0];\n Y0 = +_[0][1], Y1 = +_[1][1];\n if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n return graticule.precision(precision);\n };\n graticule.extentMinor = function (_) {\n if (!arguments.length) return [[x0, y0], [x1, y1]];\n x0 = +_[0][0], x1 = +_[1][0];\n y0 = +_[0][1], y1 = +_[1][1];\n if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n return graticule.precision(precision);\n };\n graticule.step = function (_) {\n if (!arguments.length) return graticule.stepMinor();\n return graticule.stepMajor(_).stepMinor(_);\n };\n graticule.stepMajor = function (_) {\n if (!arguments.length) return [DX, DY];\n DX = +_[0], DY = +_[1];\n return graticule;\n };\n graticule.stepMinor = function (_) {\n if (!arguments.length) return [dx, dy];\n dx = +_[0], dy = +_[1];\n return graticule;\n };\n graticule.precision = function (_) {\n if (!arguments.length) return precision;\n precision = +_;\n x = graticuleX(y0, y1, 90);\n y = graticuleY(x0, x1, precision);\n X = graticuleX(Y0, Y1, 90);\n Y = graticuleY(X0, X1, precision);\n return graticule;\n };\n return graticule.extentMajor([[-180, -90 + epsilon], [180, 90 - epsilon]]).extentMinor([[-180, -80 - epsilon], [180, 80 + epsilon]]);\n}\nexport function graticule10() {\n return graticule()();\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { Transform, rederive, ingest, replace } from 'vega-dataflow';\nimport { error, extent, inherits, identity, isArray, isFunction, isNumber, array, constant, one, accessorName, accessorFields, field, extend, toSet, zero } from 'vega-util';\nimport { tickStep, range, max, sum } from 'd3-array';\nimport { bandwidthNRD } from 'vega-statistics';\nimport { getProjectionPath, projectionProperties, projection } from 'vega-projection';\nimport { geoGraticule } from 'd3-geo';\nimport { rgb } from 'd3-color';\nimport { canvas } from 'vega-canvas';\nfunction noop() {}\nvar cases = [[], [[[1.0, 1.5], [0.5, 1.0]]], [[[1.5, 1.0], [1.0, 1.5]]], [[[1.5, 1.0], [0.5, 1.0]]], [[[1.0, 0.5], [1.5, 1.0]]], [[[1.0, 1.5], [0.5, 1.0]], [[1.0, 0.5], [1.5, 1.0]]], [[[1.0, 0.5], [1.0, 1.5]]], [[[1.0, 0.5], [0.5, 1.0]]], [[[0.5, 1.0], [1.0, 0.5]]], [[[1.0, 1.5], [1.0, 0.5]]], [[[0.5, 1.0], [1.0, 0.5]], [[1.5, 1.0], [1.0, 1.5]]], [[[1.5, 1.0], [1.0, 0.5]]], [[[0.5, 1.0], [1.5, 1.0]]], [[[1.0, 1.5], [1.5, 1.0]]], [[[0.5, 1.0], [1.0, 1.5]]], []];\n\n// Implementation adapted from d3/d3-contour. Thanks!\nfunction contours() {\n var dx = 1,\n dy = 1,\n smooth = smoothLinear;\n function contours(values, tz) {\n return tz.map(function (value) {\n return contour(values, value);\n });\n }\n\n // Accumulate, smooth contour rings, assign holes to exterior rings.\n // Based on https://github.com/mbostock/shapefile/blob/v0.6.2/shp/polygon.js\n function contour(values, value) {\n var polygons = [],\n holes = [];\n isorings(values, value, function (ring) {\n smooth(ring, values, value);\n if (area(ring) > 0) polygons.push([ring]);else holes.push(ring);\n });\n holes.forEach(function (hole) {\n for (var i = 0, n = polygons.length, polygon; i < n; ++i) {\n if (contains((polygon = polygons[i])[0], hole) !== -1) {\n polygon.push(hole);\n return;\n }\n }\n });\n return {\n type: 'MultiPolygon',\n value: value,\n coordinates: polygons\n };\n }\n\n // Marching squares with isolines stitched into rings.\n // Based on https://github.com/topojson/topojson-client/blob/v3.0.0/src/stitch.js\n function isorings(values, value, callback) {\n var fragmentByStart = new Array(),\n fragmentByEnd = new Array(),\n x,\n y,\n t0,\n t1,\n t2,\n t3;\n\n // Special case for the first row (y = -1, t2 = t3 = 0).\n x = y = -1;\n t1 = values[0] >= value;\n cases[t1 << 1].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[x + 1] >= value;\n cases[t0 | t1 << 1].forEach(stitch);\n }\n cases[t1 << 0].forEach(stitch);\n\n // General case for the intermediate rows.\n while (++y < dy - 1) {\n x = -1;\n t1 = values[y * dx + dx] >= value;\n t2 = values[y * dx] >= value;\n cases[t1 << 1 | t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[y * dx + dx + x + 1] >= value;\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t0 | t1 << 1 | t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t1 | t2 << 3].forEach(stitch);\n }\n\n // Special case for the last row (y = dy - 1, t0 = t1 = 0).\n x = -1;\n t2 = values[y * dx] >= value;\n cases[t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t2 << 3].forEach(stitch);\n function stitch(line) {\n var start = [line[0][0] + x, line[0][1] + y],\n end = [line[1][0] + x, line[1][1] + y],\n startIndex = index(start),\n endIndex = index(end),\n f,\n g;\n if (f = fragmentByEnd[startIndex]) {\n if (g = fragmentByStart[endIndex]) {\n delete fragmentByEnd[f.end];\n delete fragmentByStart[g.start];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[f.start] = fragmentByEnd[g.end] = {\n start: f.start,\n end: g.end,\n ring: f.ring.concat(g.ring)\n };\n }\n } else {\n delete fragmentByEnd[f.end];\n f.ring.push(end);\n fragmentByEnd[f.end = endIndex] = f;\n }\n } else if (f = fragmentByStart[endIndex]) {\n if (g = fragmentByEnd[startIndex]) {\n delete fragmentByStart[f.start];\n delete fragmentByEnd[g.end];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[g.start] = fragmentByEnd[f.end] = {\n start: g.start,\n end: f.end,\n ring: g.ring.concat(f.ring)\n };\n }\n } else {\n delete fragmentByStart[f.start];\n f.ring.unshift(start);\n fragmentByStart[f.start = startIndex] = f;\n }\n } else {\n fragmentByStart[startIndex] = fragmentByEnd[endIndex] = {\n start: startIndex,\n end: endIndex,\n ring: [start, end]\n };\n }\n }\n }\n function index(point) {\n return point[0] * 2 + point[1] * (dx + 1) * 4;\n }\n function smoothLinear(ring, values, value) {\n ring.forEach(function (point) {\n var x = point[0],\n y = point[1],\n xt = x | 0,\n yt = y | 0,\n v0,\n v1 = values[yt * dx + xt];\n if (x > 0 && x < dx && xt === x) {\n v0 = values[yt * dx + xt - 1];\n point[0] = x + (value - v0) / (v1 - v0) - 0.5;\n }\n if (y > 0 && y < dy && yt === y) {\n v0 = values[(yt - 1) * dx + xt];\n point[1] = y + (value - v0) / (v1 - v0) - 0.5;\n }\n });\n }\n contours.contour = contour;\n contours.size = function (_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.floor(_[0]),\n _1 = Math.floor(_[1]);\n if (!(_0 >= 0 && _1 >= 0)) error('invalid size');\n return dx = _0, dy = _1, contours;\n };\n contours.smooth = function (_) {\n return arguments.length ? (smooth = _ ? smoothLinear : noop, contours) : smooth === smoothLinear;\n };\n return contours;\n}\nfunction area(ring) {\n var i = 0,\n n = ring.length,\n area = ring[n - 1][1] * ring[0][0] - ring[n - 1][0] * ring[0][1];\n while (++i < n) area += ring[i - 1][1] * ring[i][0] - ring[i - 1][0] * ring[i][1];\n return area;\n}\nfunction contains(ring, hole) {\n var i = -1,\n n = hole.length,\n c;\n while (++i < n) if (c = ringContains(ring, hole[i])) return c;\n return 0;\n}\nfunction ringContains(ring, point) {\n var x = point[0],\n y = point[1],\n contains = -1;\n for (var i = 0, n = ring.length, j = n - 1; i < n; j = i++) {\n var pi = ring[i],\n xi = pi[0],\n yi = pi[1],\n pj = ring[j],\n xj = pj[0],\n yj = pj[1];\n if (segmentContains(pi, pj, point)) return 0;\n if (yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi) contains = -contains;\n }\n return contains;\n}\nfunction segmentContains(a, b, c) {\n var i;\n return collinear(a, b, c) && within(a[i = +(a[0] === b[0])], c[i], b[i]);\n}\nfunction collinear(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) === (c[0] - a[0]) * (b[1] - a[1]);\n}\nfunction within(p, q, r) {\n return p <= q && q <= r || r <= q && q <= p;\n}\nfunction quantize(k, nice, zero) {\n return function (values) {\n var ex = extent(values),\n start = zero ? Math.min(ex[0], 0) : ex[0],\n stop = ex[1],\n span = stop - start,\n step = nice ? tickStep(start, stop, k) : span / (k + 1);\n return range(start + step, stop, step);\n };\n}\n\n/**\n * Generate isocontours (level sets) based on input raster grid data.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} [params.field] - The field with raster grid\n * data. If unspecified, the tuple itself is interpreted as a raster grid.\n * @param {Array} [params.thresholds] - Contour threshold array. If\n * specified, the levels, nice, resolve, and zero parameters are ignored.\n * @param {number} [params.levels] - The desired number of contour levels.\n * @param {boolean} [params.nice] - Boolean flag indicating if the contour\n * threshold values should be automatically aligned to \"nice\"\n * human-friendly values. Setting this flag may cause the number of\n * thresholds to deviate from the specified levels.\n * @param {string} [params.resolve] - The method for resolving thresholds\n * across multiple input grids. If 'independent' (the default), threshold\n * calculation will be performed separately for each grid. If 'shared', a\n * single set of threshold values will be used for all input grids.\n * @param {boolean} [params.zero] - Boolean flag indicating if the contour\n * threshold values should include zero.\n * @param {boolean} [params.smooth] - Boolean flag indicating if the contour\n * polygons should be smoothed using linear interpolation. The default is\n * true. The parameter is ignored when using density estimation.\n * @param {boolean} [params.scale] - Optional numerical value by which to\n * scale the output isocontour coordinates. This parameter can be useful\n * to scale the contours to match a desired output resolution.\n * @param {string} [params.as='contour'] - The output field in which to store\n * the generated isocontour data (default 'contour').\n */\nfunction Isocontour(params) {\n Transform.call(this, null, params);\n}\nIsocontour.Definition = {\n 'type': 'Isocontour',\n 'metadata': {\n 'generates': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field'\n }, {\n 'name': 'thresholds',\n 'type': 'number',\n 'array': true\n }, {\n 'name': 'levels',\n 'type': 'number'\n }, {\n 'name': 'nice',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'resolve',\n 'type': 'enum',\n 'values': ['shared', 'independent'],\n 'default': 'independent'\n }, {\n 'name': 'zero',\n 'type': 'boolean',\n 'default': true\n }, {\n 'name': 'smooth',\n 'type': 'boolean',\n 'default': true\n }, {\n 'name': 'scale',\n 'type': 'number',\n 'expr': true\n }, {\n 'name': 'translate',\n 'type': 'number',\n 'array': true,\n 'expr': true\n }, {\n 'name': 'as',\n 'type': 'string',\n 'null': true,\n 'default': 'contour'\n }]\n};\ninherits(Isocontour, Transform, {\n transform: function transform(_, pulse) {\n if (this.value && !pulse.changed() && !_.modified()) {\n return pulse.StopPropagation;\n }\n var out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n source = pulse.materialize(pulse.SOURCE).source,\n field = _.field || identity,\n contour = contours().smooth(_.smooth !== false),\n tz = _.thresholds || levels(source, field, _),\n as = _.as === null ? null : _.as || 'contour',\n values = [];\n source.forEach(function (t) {\n var grid = field(t);\n\n // generate contour paths in GeoJSON format\n var paths = contour.size([grid.width, grid.height])(grid.values, isArray(tz) ? tz : tz(grid.values));\n\n // adjust contour path coordinates as needed\n transformPaths(paths, grid, t, _);\n\n // ingest; copy source data properties to output\n paths.forEach(function (p) {\n values.push(rederive(t, ingest(as != null ? _defineProperty({}, as, p) : p)));\n });\n });\n if (this.value) out.rem = this.value;\n this.value = out.source = out.add = values;\n return out;\n }\n});\nfunction levels(values, f, _) {\n var q = quantize(_.levels || 10, _.nice, _.zero !== false);\n return _.resolve !== 'shared' ? q : q(values.map(function (t) {\n return max(f(t).values);\n }));\n}\nfunction transformPaths(paths, grid, datum, _) {\n var s = _.scale || grid.scale,\n t = _.translate || grid.translate;\n if (isFunction(s)) s = s(datum, _);\n if (isFunction(t)) t = t(datum, _);\n if ((s === 1 || s == null) && !t) return;\n var sx = (isNumber(s) ? s : s[0]) || 1,\n sy = (isNumber(s) ? s : s[1]) || 1,\n tx = t && t[0] || 0,\n ty = t && t[1] || 0;\n paths.forEach(_transform(grid, sx, sy, tx, ty));\n}\nfunction _transform(grid, sx, sy, tx, ty) {\n var x1 = grid.x1 || 0,\n y1 = grid.y1 || 0,\n flip = sx * sy < 0;\n function transformPolygon(coordinates) {\n coordinates.forEach(transformRing);\n }\n function transformRing(coordinates) {\n if (flip) coordinates.reverse(); // maintain winding order\n coordinates.forEach(transformPoint);\n }\n function transformPoint(coordinates) {\n coordinates[0] = (coordinates[0] - x1) * sx + tx;\n coordinates[1] = (coordinates[1] - y1) * sy + ty;\n }\n return function (geometry) {\n geometry.coordinates.forEach(transformPolygon);\n return geometry;\n };\n}\nfunction radius(bw, data, f) {\n var v = bw >= 0 ? bw : bandwidthNRD(data, f);\n return Math.round((Math.sqrt(4 * v * v + 1) - 1) / 2);\n}\nfunction number(_) {\n return isFunction(_) ? _ : constant(+_);\n}\n\n// Implementation adapted from d3/d3-contour. Thanks!\nfunction density2D() {\n var x = function x(d) {\n return d[0];\n },\n y = function y(d) {\n return d[1];\n },\n weight = one,\n bandwidth = [-1, -1],\n dx = 960,\n dy = 500,\n k = 2; // log2(cellSize)\n\n function density(data, counts) {\n var rx = radius(bandwidth[0], data, x) >> k,\n // blur x-radius\n ry = radius(bandwidth[1], data, y) >> k,\n // blur y-radius\n ox = rx ? rx + 2 : 0,\n // x-offset padding for blur\n oy = ry ? ry + 2 : 0,\n // y-offset padding for blur\n n = 2 * ox + (dx >> k),\n // grid width\n m = 2 * oy + (dy >> k),\n // grid height\n values0 = new Float32Array(n * m),\n values1 = new Float32Array(n * m);\n var values = values0;\n data.forEach(function (d) {\n var xi = ox + (+x(d) >> k),\n yi = oy + (+y(d) >> k);\n if (xi >= 0 && xi < n && yi >= 0 && yi < m) {\n values0[xi + yi * n] += +weight(d);\n }\n });\n if (rx > 0 && ry > 0) {\n blurX(n, m, values0, values1, rx);\n blurY(n, m, values1, values0, ry);\n blurX(n, m, values0, values1, rx);\n blurY(n, m, values1, values0, ry);\n blurX(n, m, values0, values1, rx);\n blurY(n, m, values1, values0, ry);\n } else if (rx > 0) {\n blurX(n, m, values0, values1, rx);\n blurX(n, m, values1, values0, rx);\n blurX(n, m, values0, values1, rx);\n values = values1;\n } else if (ry > 0) {\n blurY(n, m, values0, values1, ry);\n blurY(n, m, values1, values0, ry);\n blurY(n, m, values0, values1, ry);\n values = values1;\n }\n\n // scale density estimates\n // density in points per square pixel or probability density\n var s = counts ? Math.pow(2, -2 * k) : 1 / sum(values);\n for (var i = 0, sz = n * m; i < sz; ++i) values[i] *= s;\n return {\n values: values,\n scale: 1 << k,\n width: n,\n height: m,\n x1: ox,\n y1: oy,\n x2: ox + (dx >> k),\n y2: oy + (dy >> k)\n };\n }\n density.x = function (_) {\n return arguments.length ? (x = number(_), density) : x;\n };\n density.y = function (_) {\n return arguments.length ? (y = number(_), density) : y;\n };\n density.weight = function (_) {\n return arguments.length ? (weight = number(_), density) : weight;\n };\n density.size = function (_) {\n if (!arguments.length) return [dx, dy];\n var _0 = +_[0],\n _1 = +_[1];\n if (!(_0 >= 0 && _1 >= 0)) error('invalid size');\n return dx = _0, dy = _1, density;\n };\n density.cellSize = function (_) {\n if (!arguments.length) return 1 << k;\n if (!((_ = +_) >= 1)) error('invalid cell size');\n k = Math.floor(Math.log(_) / Math.LN2);\n return density;\n };\n density.bandwidth = function (_) {\n if (!arguments.length) return bandwidth;\n _ = array(_);\n if (_.length === 1) _ = [+_[0], +_[0]];\n if (_.length !== 2) error('invalid bandwidth');\n return bandwidth = _, density;\n };\n return density;\n}\nfunction blurX(n, m, source, target, r) {\n var w = (r << 1) + 1;\n for (var j = 0; j < m; ++j) {\n for (var i = 0, sr = 0; i < n + r; ++i) {\n if (i < n) {\n sr += source[i + j * n];\n }\n if (i >= r) {\n if (i >= w) {\n sr -= source[i - w + j * n];\n }\n target[i - r + j * n] = sr / Math.min(i + 1, n - 1 + w - i, w);\n }\n }\n }\n}\nfunction blurY(n, m, source, target, r) {\n var w = (r << 1) + 1;\n for (var i = 0; i < n; ++i) {\n for (var j = 0, sr = 0; j < m + r; ++j) {\n if (j < m) {\n sr += source[i + j * n];\n }\n if (j >= r) {\n if (j >= w) {\n sr -= source[i + (j - w) * n];\n }\n target[i + (j - r) * n] = sr / Math.min(j + 1, m - 1 + w - j, w);\n }\n }\n }\n}\n\n/**\n * Perform 2D kernel-density estimation of point data.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array} params.size - The [width, height] extent (in\n * units of input pixels) over which to perform density estimation.\n * @param {function(object): number} params.x - The x-coordinate accessor.\n * @param {function(object): number} params.y - The y-coordinate accessor.\n * @param {function(object): number} [params.weight] - The weight accessor.\n * @param {Array} [params.groupby] - An array of accessors\n * to groupby.\n * @param {number} [params.cellSize] - Contour density calculation cell size.\n * This parameter determines the level of spatial approximation. For example,\n * the default value of 4 maps to 2x reductions in both x- and y- dimensions.\n * A value of 1 will result in an output raster grid whose dimensions exactly\n * matches the size parameter.\n * @param {Array} [params.bandwidth] - The KDE kernel bandwidths,\n * in pixels. The input can be a two-element array specifying separate\n * x and y bandwidths, or a single-element array specifying both. If the\n * bandwidth is unspecified or less than zero, the bandwidth will be\n * automatically determined.\n * @param {boolean} [params.counts=false] - A boolean flag indicating if the\n * output values should be probability estimates (false, default) or\n * smoothed counts (true).\n * @param {string} [params.as='grid'] - The output field in which to store\n * the generated raster grid (default 'grid').\n */\nfunction KDE2D(params) {\n Transform.call(this, null, params);\n}\nKDE2D.Definition = {\n 'type': 'KDE2D',\n 'metadata': {\n 'generates': true\n },\n 'params': [{\n 'name': 'size',\n 'type': 'number',\n 'array': true,\n 'length': 2,\n 'required': true\n }, {\n 'name': 'x',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'y',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'weight',\n 'type': 'field'\n }, {\n 'name': 'groupby',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'cellSize',\n 'type': 'number'\n }, {\n 'name': 'bandwidth',\n 'type': 'number',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'counts',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'as',\n 'type': 'string',\n 'default': 'grid'\n }]\n};\nvar PARAMS = ['x', 'y', 'weight', 'size', 'cellSize', 'bandwidth'];\nfunction params(obj, _) {\n PARAMS.forEach(function (param) {\n return _[param] != null ? obj[param](_[param]) : 0;\n });\n return obj;\n}\ninherits(KDE2D, Transform, {\n transform: function transform(_, pulse) {\n if (this.value && !pulse.changed() && !_.modified()) return pulse.StopPropagation;\n var out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n source = pulse.materialize(pulse.SOURCE).source,\n groups = partition(source, _.groupby),\n names = (_.groupby || []).map(accessorName),\n kde = params(density2D(), _),\n as = _.as || 'grid',\n values = [];\n function set(t, vals) {\n for (var i = 0; i < names.length; ++i) t[names[i]] = vals[i];\n return t;\n }\n\n // generate density raster grids\n values = groups.map(function (g) {\n return ingest(set(_defineProperty({}, as, kde(g, _.counts)), g.dims));\n });\n if (this.value) out.rem = this.value;\n this.value = out.source = out.add = values;\n return out;\n }\n});\nfunction partition(data, groupby) {\n var groups = [],\n get = function get(f) {\n return f(t);\n },\n map,\n i,\n n,\n t,\n k,\n g;\n\n // partition data points into groups\n if (groupby == null) {\n groups.push(data);\n } else {\n for (map = {}, i = 0, n = data.length; i < n; ++i) {\n t = data[i];\n k = groupby.map(get);\n g = map[k];\n if (!g) {\n map[k] = g = [];\n g.dims = k;\n groups.push(g);\n }\n g.push(t);\n }\n }\n return groups;\n}\n\n/**\n * Generate contours based on kernel-density estimation of point data.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array} params.size - The dimensions [width, height] over which to compute contours.\n * If the values parameter is provided, this must be the dimensions of the input data.\n * If density estimation is performed, this is the output view dimensions in pixels.\n * @param {Array} [params.values] - An array of numeric values representing an\n * width x height grid of values over which to compute contours. If unspecified, this\n * transform will instead attempt to compute contours for the kernel density estimate\n * using values drawn from data tuples in the input pulse.\n * @param {function(object): number} [params.x] - The pixel x-coordinate accessor for density estimation.\n * @param {function(object): number} [params.y] - The pixel y-coordinate accessor for density estimation.\n * @param {function(object): number} [params.weight] - The data point weight accessor for density estimation.\n * @param {number} [params.cellSize] - Contour density calculation cell size.\n * @param {number} [params.bandwidth] - Kernel density estimation bandwidth.\n * @param {Array} [params.thresholds] - Contour threshold array. If\n * this parameter is set, the count and nice parameters will be ignored.\n * @param {number} [params.count] - The desired number of contours.\n * @param {boolean} [params.nice] - Boolean flag indicating if the contour\n * threshold values should be automatically aligned to \"nice\"\n * human-friendly values. Setting this flag may cause the number of\n * thresholds to deviate from the specified count.\n * @param {boolean} [params.smooth] - Boolean flag indicating if the contour\n * polygons should be smoothed using linear interpolation. The default is\n * true. The parameter is ignored when using density estimation.\n */\nfunction Contour(params) {\n Transform.call(this, null, params);\n}\nContour.Definition = {\n 'type': 'Contour',\n 'metadata': {\n 'generates': true\n },\n 'params': [{\n 'name': 'size',\n 'type': 'number',\n 'array': true,\n 'length': 2,\n 'required': true\n }, {\n 'name': 'values',\n 'type': 'number',\n 'array': true\n }, {\n 'name': 'x',\n 'type': 'field'\n }, {\n 'name': 'y',\n 'type': 'field'\n }, {\n 'name': 'weight',\n 'type': 'field'\n }, {\n 'name': 'cellSize',\n 'type': 'number'\n }, {\n 'name': 'bandwidth',\n 'type': 'number'\n }, {\n 'name': 'count',\n 'type': 'number'\n }, {\n 'name': 'nice',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'thresholds',\n 'type': 'number',\n 'array': true\n }, {\n 'name': 'smooth',\n 'type': 'boolean',\n 'default': true\n }]\n};\ninherits(Contour, Transform, {\n transform: function transform(_, pulse) {\n if (this.value && !pulse.changed() && !_.modified()) {\n return pulse.StopPropagation;\n }\n var out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n contour = contours().smooth(_.smooth !== false),\n values = _.values,\n thresh = _.thresholds || quantize(_.count || 10, _.nice, !!values),\n size = _.size,\n grid,\n post;\n if (!values) {\n values = pulse.materialize(pulse.SOURCE).source;\n grid = params(density2D(), _)(values, true);\n post = _transform(grid, grid.scale || 1, grid.scale || 1, 0, 0);\n size = [grid.width, grid.height];\n values = grid.values;\n }\n thresh = isArray(thresh) ? thresh : thresh(values);\n values = contour.size(size)(values, thresh);\n if (post) values.forEach(post);\n if (this.value) out.rem = this.value;\n this.value = out.source = out.add = (values || []).map(ingest);\n return out;\n }\n});\nvar Feature = 'Feature';\nvar FeatureCollection = 'FeatureCollection';\nvar MultiPoint = 'MultiPoint';\n\n/**\n * Consolidate an array of [longitude, latitude] points or GeoJSON features\n * into a combined GeoJSON object. This transform is particularly useful for\n * combining geo data for a Projection's fit argument. The resulting GeoJSON\n * data is available as this transform's value. Input pulses are unchanged.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array} [params.fields] - A two-element array\n * of field accessors for the longitude and latitude values.\n * @param {function(object): *} params.geojson - A field accessor for\n * retrieving GeoJSON feature data.\n */\nfunction GeoJSON(params) {\n Transform.call(this, null, params);\n}\nGeoJSON.Definition = {\n 'type': 'GeoJSON',\n 'metadata': {},\n 'params': [{\n 'name': 'fields',\n 'type': 'field',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'geojson',\n 'type': 'field'\n }]\n};\ninherits(GeoJSON, Transform, {\n transform: function transform(_, pulse) {\n var features = this._features,\n points = this._points,\n fields = _.fields,\n lon = fields && fields[0],\n lat = fields && fields[1],\n geojson = _.geojson || !fields && identity,\n flag = pulse.ADD,\n mod;\n mod = _.modified() || pulse.changed(pulse.REM) || pulse.modified(accessorFields(geojson)) || lon && pulse.modified(accessorFields(lon)) || lat && pulse.modified(accessorFields(lat));\n if (!this.value || mod) {\n flag = pulse.SOURCE;\n this._features = features = [];\n this._points = points = [];\n }\n if (geojson) {\n pulse.visit(flag, function (t) {\n return features.push(geojson(t));\n });\n }\n if (lon && lat) {\n pulse.visit(flag, function (t) {\n var x = lon(t),\n y = lat(t);\n if (x != null && y != null && (x = +x) === x && (y = +y) === y) {\n points.push([x, y]);\n }\n });\n features = features.concat({\n type: Feature,\n geometry: {\n type: MultiPoint,\n coordinates: points\n }\n });\n }\n this.value = {\n type: FeatureCollection,\n features: features\n };\n }\n});\n\n/**\n * Map GeoJSON data to an SVG path string.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(number, number): *} params.projection - The cartographic\n * projection to apply.\n * @param {function(object): *} [params.field] - The field with GeoJSON data,\n * or null if the tuple itself is a GeoJSON feature.\n * @param {string} [params.as='path'] - The output field in which to store\n * the generated path data (default 'path').\n */\nfunction GeoPath(params) {\n Transform.call(this, null, params);\n}\nGeoPath.Definition = {\n 'type': 'GeoPath',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'projection',\n 'type': 'projection'\n }, {\n 'name': 'field',\n 'type': 'field'\n }, {\n 'name': 'pointRadius',\n 'type': 'number',\n 'expr': true\n }, {\n 'name': 'as',\n 'type': 'string',\n 'default': 'path'\n }]\n};\ninherits(GeoPath, Transform, {\n transform: function transform(_, pulse) {\n var out = pulse.fork(pulse.ALL),\n path = this.value,\n field = _.field || identity,\n as = _.as || 'path',\n flag = out.SOURCE;\n if (!path || _.modified()) {\n // parameters updated, reset and reflow\n this.value = path = getProjectionPath(_.projection);\n out.materialize().reflow();\n } else {\n flag = field === identity || pulse.modified(field.fields) ? out.ADD_MOD : out.ADD;\n }\n var prev = initPath(path, _.pointRadius);\n out.visit(flag, function (t) {\n return t[as] = path(field(t));\n });\n path.pointRadius(prev);\n return out.modifies(as);\n }\n});\nfunction initPath(path, pointRadius) {\n var prev = path.pointRadius();\n path.context(null);\n if (pointRadius != null) {\n path.pointRadius(pointRadius);\n }\n return prev;\n}\n\n/**\n * Geo-code a longitude/latitude point to an x/y coordinate.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(number, number): *} params.projection - The cartographic\n * projection to apply.\n * @param {Array} params.fields - A two-element array of\n * field accessors for the longitude and latitude values.\n * @param {Array} [params.as] - A two-element array of field names\n * under which to store the result. Defaults to ['x','y'].\n */\nfunction GeoPoint(params) {\n Transform.call(this, null, params);\n}\nGeoPoint.Definition = {\n 'type': 'GeoPoint',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'projection',\n 'type': 'projection',\n 'required': true\n }, {\n 'name': 'fields',\n 'type': 'field',\n 'array': true,\n 'required': true,\n 'length': 2\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': 2,\n 'default': ['x', 'y']\n }]\n};\ninherits(GeoPoint, Transform, {\n transform: function transform(_, pulse) {\n var proj = _.projection,\n lon = _.fields[0],\n lat = _.fields[1],\n as = _.as || ['x', 'y'],\n x = as[0],\n y = as[1],\n mod;\n function set(t) {\n var xy = proj([lon(t), lat(t)]);\n if (xy) {\n t[x] = xy[0];\n t[y] = xy[1];\n } else {\n t[x] = undefined;\n t[y] = undefined;\n }\n }\n if (_.modified()) {\n // parameters updated, reflow\n pulse = pulse.materialize().reflow(true).visit(pulse.SOURCE, set);\n } else {\n mod = pulse.modified(lon.fields) || pulse.modified(lat.fields);\n pulse.visit(mod ? pulse.ADD_MOD : pulse.ADD, set);\n }\n return pulse.modifies(as);\n }\n});\n\n/**\n * Annotate items with a geopath shape generator.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(number, number): *} params.projection - The cartographic\n * projection to apply.\n * @param {function(object): *} [params.field] - The field with GeoJSON data,\n * or null if the tuple itself is a GeoJSON feature.\n * @param {string} [params.as='shape'] - The output field in which to store\n * the generated path data (default 'shape').\n */\nfunction GeoShape(params) {\n Transform.call(this, null, params);\n}\nGeoShape.Definition = {\n 'type': 'GeoShape',\n 'metadata': {\n 'modifies': true,\n 'nomod': true\n },\n 'params': [{\n 'name': 'projection',\n 'type': 'projection'\n }, {\n 'name': 'field',\n 'type': 'field',\n 'default': 'datum'\n }, {\n 'name': 'pointRadius',\n 'type': 'number',\n 'expr': true\n }, {\n 'name': 'as',\n 'type': 'string',\n 'default': 'shape'\n }]\n};\ninherits(GeoShape, Transform, {\n transform: function transform(_, pulse) {\n var out = pulse.fork(pulse.ALL),\n shape = this.value,\n as = _.as || 'shape',\n flag = out.ADD;\n if (!shape || _.modified()) {\n // parameters updated, reset and reflow\n this.value = shape = shapeGenerator(getProjectionPath(_.projection), _.field || field('datum'), _.pointRadius);\n out.materialize().reflow();\n flag = out.SOURCE;\n }\n out.visit(flag, function (t) {\n return t[as] = shape;\n });\n return out.modifies(as);\n }\n});\nfunction shapeGenerator(path, field, pointRadius) {\n var shape = pointRadius == null ? function (_) {\n return path(field(_));\n } : function (_) {\n var prev = path.pointRadius(),\n value = path.pointRadius(pointRadius)(field(_));\n path.pointRadius(prev);\n return value;\n };\n shape.context = function (_) {\n path.context(_);\n return shape;\n };\n return shape;\n}\n\n/**\n * GeoJSON feature generator for creating graticules.\n * @constructor\n */\nfunction Graticule(params) {\n Transform.call(this, [], params);\n this.generator = geoGraticule();\n}\nGraticule.Definition = {\n 'type': 'Graticule',\n 'metadata': {\n 'changes': true,\n 'generates': true\n },\n 'params': [{\n 'name': 'extent',\n 'type': 'array',\n 'array': true,\n 'length': 2,\n 'content': {\n 'type': 'number',\n 'array': true,\n 'length': 2\n }\n }, {\n 'name': 'extentMajor',\n 'type': 'array',\n 'array': true,\n 'length': 2,\n 'content': {\n 'type': 'number',\n 'array': true,\n 'length': 2\n }\n }, {\n 'name': 'extentMinor',\n 'type': 'array',\n 'array': true,\n 'length': 2,\n 'content': {\n 'type': 'number',\n 'array': true,\n 'length': 2\n }\n }, {\n 'name': 'step',\n 'type': 'number',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'stepMajor',\n 'type': 'number',\n 'array': true,\n 'length': 2,\n 'default': [90, 360]\n }, {\n 'name': 'stepMinor',\n 'type': 'number',\n 'array': true,\n 'length': 2,\n 'default': [10, 10]\n }, {\n 'name': 'precision',\n 'type': 'number',\n 'default': 2.5\n }]\n};\ninherits(Graticule, Transform, {\n transform: function transform(_, pulse) {\n var src = this.value,\n gen = this.generator,\n t;\n if (!src.length || _.modified()) {\n for (var prop in _) {\n if (isFunction(gen[prop])) {\n gen[prop](_[prop]);\n }\n }\n }\n t = gen();\n if (src.length) {\n pulse.mod.push(replace(src[0], t));\n } else {\n pulse.add.push(ingest(t));\n }\n src[0] = t;\n return pulse;\n }\n});\n\n/**\n * Render a heatmap image for input raster grid data.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} [params.field] - The field with raster grid\n * data. If unspecified, the tuple itself is interpreted as a raster grid.\n * @param {string} [params.color] - A constant color value or function for\n * individual pixel color. If a function, it will be invoked with an input\n * object that includes $x, $y, $value, and $max fields for the grid.\n * @param {number} [params.opacity] - A constant opacity value or function for\n * individual pixel opacity. If a function, it will be invoked with an input\n * object that includes $x, $y, $value, and $max fields for the grid.\n * @param {string} [params.resolve] - The method for resolving maximum values\n * across multiple input grids. If 'independent' (the default), maximum\n * calculation will be performed separately for each grid. If 'shared',\n * a single global maximum will be used for all input grids.\n * @param {string} [params.as='image'] - The output field in which to store\n * the generated bitmap canvas images (default 'image').\n */\nfunction Heatmap(params) {\n Transform.call(this, null, params);\n}\nHeatmap.Definition = {\n 'type': 'heatmap',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field'\n }, {\n 'name': 'color',\n 'type': 'string',\n 'expr': true\n }, {\n 'name': 'opacity',\n 'type': 'number',\n 'expr': true\n }, {\n 'name': 'resolve',\n 'type': 'enum',\n 'values': ['shared', 'independent'],\n 'default': 'independent'\n }, {\n 'name': 'as',\n 'type': 'string',\n 'default': 'image'\n }]\n};\ninherits(Heatmap, Transform, {\n transform: function transform(_, pulse) {\n if (!pulse.changed() && !_.modified()) {\n return pulse.StopPropagation;\n }\n var source = pulse.materialize(pulse.SOURCE).source,\n shared = _.resolve === 'shared',\n field = _.field || identity,\n opacity = opacity_(_.opacity, _),\n color = color_(_.color, _),\n as = _.as || 'image',\n obj = {\n $x: 0,\n $y: 0,\n $value: 0,\n $max: shared ? max(source.map(function (t) {\n return max(field(t).values);\n })) : 0\n };\n source.forEach(function (t) {\n var v = field(t);\n\n // build proxy data object\n var o = extend({}, t, obj);\n // set maximum value if not globally shared\n if (!shared) o.$max = max(v.values || []);\n\n // generate canvas image\n // optimize color/opacity if not pixel-dependent\n t[as] = toCanvas(v, o, color.dep ? color : constant(color(o)), opacity.dep ? opacity : constant(opacity(o)));\n });\n return pulse.reflow(true).modifies(as);\n }\n});\n\n// get image color function\nfunction color_(color, _) {\n var f;\n if (isFunction(color)) {\n f = function f(obj) {\n return rgb(color(obj, _));\n };\n f.dep = dependency(color);\n } else {\n // default to mid-grey\n f = constant(rgb(color || '#888'));\n }\n return f;\n}\n\n// get image opacity function\nfunction opacity_(opacity, _) {\n var f;\n if (isFunction(opacity)) {\n f = function f(obj) {\n return opacity(obj, _);\n };\n f.dep = dependency(opacity);\n } else if (opacity) {\n f = constant(opacity);\n } else {\n // default to [0, max] opacity gradient\n f = function f(obj) {\n return obj.$value / obj.$max || 0;\n };\n f.dep = true;\n }\n return f;\n}\n\n// check if function depends on individual pixel data\nfunction dependency(f) {\n if (!isFunction(f)) return false;\n var set = toSet(accessorFields(f));\n return set.$x || set.$y || set.$value || set.$max;\n}\n\n// render raster grid to canvas\nfunction toCanvas(grid, obj, color, opacity) {\n var n = grid.width,\n m = grid.height,\n x1 = grid.x1 || 0,\n y1 = grid.y1 || 0,\n x2 = grid.x2 || n,\n y2 = grid.y2 || m,\n val = grid.values,\n value = val ? function (i) {\n return val[i];\n } : zero,\n can = canvas(x2 - x1, y2 - y1),\n ctx = can.getContext('2d'),\n img = ctx.getImageData(0, 0, x2 - x1, y2 - y1),\n pix = img.data;\n for (var j = y1, k = 0; j < y2; ++j) {\n obj.$y = j - y1;\n for (var i = x1, r = j * n; i < x2; ++i, k += 4) {\n obj.$x = i - x1;\n obj.$value = value(i + r);\n var v = color(obj);\n pix[k + 0] = v.r;\n pix[k + 1] = v.g;\n pix[k + 2] = v.b;\n pix[k + 3] = ~~(255 * opacity(obj));\n }\n }\n ctx.putImageData(img, 0, 0);\n return can;\n}\n\n/**\n * Maintains a cartographic projection.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nfunction Projection(params) {\n Transform.call(this, null, params);\n this.modified(true); // always treat as modified\n}\n\ninherits(Projection, Transform, {\n transform: function transform(_, pulse) {\n var proj = this.value;\n if (!proj || _.modified('type')) {\n this.value = proj = create(_.type);\n projectionProperties.forEach(function (prop) {\n if (_[prop] != null) set(proj, prop, _[prop]);\n });\n } else {\n projectionProperties.forEach(function (prop) {\n if (_.modified(prop)) set(proj, prop, _[prop]);\n });\n }\n if (_.pointRadius != null) proj.path.pointRadius(_.pointRadius);\n if (_.fit) fit(proj, _);\n return pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n }\n});\nfunction fit(proj, _) {\n var data = collectGeoJSON(_.fit);\n _.extent ? proj.fitExtent(_.extent, data) : _.size ? proj.fitSize(_.size, data) : 0;\n}\nfunction create(type) {\n var constructor = projection((type || 'mercator').toLowerCase());\n if (!constructor) error('Unrecognized projection type: ' + type);\n return constructor();\n}\nfunction set(proj, key, value) {\n if (isFunction(proj[key])) proj[key](value);\n}\nfunction collectGeoJSON(data) {\n data = array(data);\n return data.length === 1 ? data[0] : {\n type: FeatureCollection,\n features: data.reduce(function (a, f) {\n return a.concat(featurize(f));\n }, [])\n };\n}\nfunction featurize(f) {\n return f.type === FeatureCollection ? f.features : array(f).filter(function (d) {\n return d != null;\n }).map(function (d) {\n return d.type === Feature ? d : {\n type: Feature,\n geometry: d\n };\n });\n}\nexport { Contour as contour, GeoJSON as geojson, GeoPath as geopath, GeoPoint as geopoint, GeoShape as geoshape, Graticule as graticule, Heatmap as heatmap, Isocontour as isocontour, KDE2D as kde2d, Projection as projection };","export default function (d) {\n var x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n}\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {\n data: d\n },\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm;else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym;else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm;else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym;else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | xp >= xm));\n return parent[j] = node, parent[i] = leaf, tree;\n}\nexport function addAll(data) {\n var d,\n i,\n n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n return this;\n}","export default function (node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n}","export function defaultX(d) {\n return d[0];\n}\nexport default function (_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}","export function defaultY(d) {\n return d[1];\n}\nexport default function (_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}","import tree_add, { addAll as tree_addAll } from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, { removeAll as tree_removeAll } from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, { defaultX } from \"./x.js\";\nimport tree_y, { defaultY } from \"./y.js\";\nexport default function quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\nfunction leaf_copy(leaf) {\n var copy = {\n data: leaf.data\n },\n next = copy;\n while (leaf = leaf.next) next = next.next = {\n data: leaf.data\n };\n return copy;\n}\nvar treeProto = quadtree.prototype = Quadtree.prototype;\ntreeProto.copy = function () {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n if (!node) return copy;\n if (!node.length) return copy._root = leaf_copy(node), copy;\n nodes = [{\n source: node,\n target: copy._root = new Array(4)\n }];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({\n source: child,\n target: node.target[i] = new Array(4)\n });else node.target[i] = leaf_copy(child);\n }\n }\n }\n return copy;\n};\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;","export default function (x) {\n return function () {\n return x;\n };\n}","export default function (random) {\n return (random() - 0.5) * 1e-6;\n}","import { quadtree } from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\nfunction x(d) {\n return d.x + d.vx;\n}\nfunction y(d) {\n return d.y + d.vy;\n}\nexport default function (radius) {\n var nodes,\n radii,\n random,\n strength = 1,\n iterations = 1;\n if (typeof radius !== \"function\") radius = constant(radius == null ? 1 : +radius);\n function force() {\n var i,\n n = nodes.length,\n tree,\n node,\n xi,\n yi,\n ri,\n ri2;\n for (var k = 0; k < iterations; ++k) {\n tree = quadtree(nodes, x, y).visitAfter(prepare);\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n ri = radii[node.index], ri2 = ri * ri;\n xi = node.x + node.vx;\n yi = node.y + node.vy;\n tree.visit(apply);\n }\n }\n function apply(quad, x0, y0, x1, y1) {\n var data = quad.data,\n rj = quad.r,\n r = ri + rj;\n if (data) {\n if (data.index > node.index) {\n var x = xi - data.x - data.vx,\n y = yi - data.y - data.vy,\n l = x * x + y * y;\n if (l < r * r) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n l = (r - (l = Math.sqrt(l))) / l * strength;\n node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));\n node.vy += (y *= l) * r;\n data.vx -= x * (r = 1 - r);\n data.vy -= y * r;\n }\n }\n return;\n }\n return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r;\n }\n }\n function prepare(quad) {\n if (quad.data) return quad.r = radii[quad.data.index];\n for (var i = quad.r = 0; i < 4; ++i) {\n if (quad[i] && quad[i].r > quad.r) {\n quad.r = quad[i].r;\n }\n }\n }\n function initialize() {\n if (!nodes) return;\n var i,\n n = nodes.length,\n node;\n radii = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);\n }\n force.initialize = function (_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n force.iterations = function (_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n force.strength = function (_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n force.radius = function (_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n return force;\n}","export default function (x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0 || 1,\n node = this._root,\n parent,\n i;\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | x < x0;\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0:\n x1 = x0 + z, y1 = y0 + z;\n break;\n case 1:\n x0 = x1 - z, y1 = y0 + z;\n break;\n case 2:\n x1 = x0 + z, y0 = y1 - z;\n break;\n case 3:\n x0 = x1 - z, y0 = y1 - z;\n break;\n }\n }\n if (this._root && this._root.length) this._root = node;\n }\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n}","export default function () {\n var data = [];\n this.visit(function (node) {\n if (!node.length) do data.push(node.data); while (node = node.next);\n });\n return data;\n}","export default function (_) {\n return arguments.length ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1]) : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}","import Quad from \"./quad.js\";\nexport default function (x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n while (q = quads.pop()) {\n // Stop searching if this quadrant can’t contain a closer node.\n if (!(node = q.node) || (x1 = q.x0) > x3 || (y1 = q.y0) > y3 || (x2 = q.x1) < x0 || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n quads.push(new Quad(node[3], xm, ym, x2, y2), new Quad(node[2], x1, ym, xm, y2), new Quad(node[1], xm, y1, x2, ym), new Quad(node[0], x1, y1, xm, ym));\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | x >= xm) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n return data;\n}","export default function (d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm;else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym;else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[i + 1 & 3] || parent[i + 2 & 3] || parent[i + 3 & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return next ? previous.next = next : delete previous.next, this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3]) && node === (parent[3] || parent[2] || parent[1] || parent[0]) && !node.length) {\n if (retainer) retainer[j] = node;else this._root = node;\n }\n return this;\n}\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}","export default function () {\n return this._root;\n}","export default function () {\n var size = 0;\n this.visit(function (node) {\n if (!node.length) do ++size; while (node = node.next);\n });\n return size;\n}","import Quad from \"./quad.js\";\nexport default function (callback) {\n var quads = [],\n q,\n node = this._root,\n child,\n x0,\n y0,\n x1,\n y1;\n if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2,\n ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n }\n }\n return this;\n}","import Quad from \"./quad.js\";\nexport default function (callback) {\n var quads = [],\n next = [],\n q;\n if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child,\n x0 = q.x0,\n y0 = q.y0,\n x1 = q.x1,\n y1 = q.y1,\n xm = (x0 + x1) / 2,\n ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n}","var noop = {\n value: function value() {}\n};\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || t in _ || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\nfunction Dispatch(_) {\n this._ = _;\n}\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function (t) {\n var name = \"\",\n i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {\n type: t,\n name: name\n };\n });\n}\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function on(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n return this;\n },\n copy: function copy() {\n var copy = {},\n _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function call(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function apply(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({\n name: name,\n value: callback\n });\n return type;\n}\nexport default dispatch;","var frame = 0,\n // is an animation frame pending?\n timeout = 0,\n // is a timeout pending?\n interval = 0,\n // are any timers active?\n pokeDelay = 1000,\n // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function (f) {\n setTimeout(f, 17);\n };\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\nfunction clearNow() {\n clockNow = 0;\n}\nexport function Timer() {\n this._call = this._time = this._next = null;\n}\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function restart(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function stop() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\nexport function timer(callback, delay, time) {\n var t = new Timer();\n t.restart(callback, delay, time);\n return t;\n}\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead,\n e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\nfunction poke() {\n var now = clock.now(),\n delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\nfunction nap() {\n var t0,\n t1 = taskHead,\n t2,\n time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}","// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nvar a = 1664525;\nvar c = 1013904223;\nvar m = 4294967296; // 2^32\n\nexport default function () {\n var s = 1;\n return function () {\n return (s = (a * s + c) % m) / m;\n };\n}","import { dispatch } from \"d3-dispatch\";\nimport { timer } from \"d3-timer\";\nimport lcg from \"./lcg.js\";\nexport function x(d) {\n return d.x;\n}\nexport function y(d) {\n return d.y;\n}\nvar initialRadius = 10,\n initialAngle = Math.PI * (3 - Math.sqrt(5));\nexport default function (_nodes) {\n var simulation,\n _alpha = 1,\n _alphaMin = 0.001,\n _alphaDecay = 1 - Math.pow(_alphaMin, 1 / 300),\n _alphaTarget = 0,\n _velocityDecay = 0.6,\n forces = new Map(),\n stepper = timer(step),\n event = dispatch(\"tick\", \"end\"),\n random = lcg();\n if (_nodes == null) _nodes = [];\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (_alpha < _alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n function tick(iterations) {\n var i,\n n = _nodes.length,\n node;\n if (iterations === undefined) iterations = 1;\n for (var k = 0; k < iterations; ++k) {\n _alpha += (_alphaTarget - _alpha) * _alphaDecay;\n forces.forEach(function (force) {\n force(_alpha);\n });\n for (i = 0; i < n; ++i) {\n node = _nodes[i];\n if (node.fx == null) node.x += node.vx *= _velocityDecay;else node.x = node.fx, node.vx = 0;\n if (node.fy == null) node.y += node.vy *= _velocityDecay;else node.y = node.fy, node.vy = 0;\n }\n }\n return simulation;\n }\n function initializeNodes() {\n for (var i = 0, n = _nodes.length, node; i < n; ++i) {\n node = _nodes[i], node.index = i;\n if (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n if (isNaN(node.x) || isNaN(node.y)) {\n var radius = initialRadius * Math.sqrt(0.5 + i),\n angle = i * initialAngle;\n node.x = radius * Math.cos(angle);\n node.y = radius * Math.sin(angle);\n }\n if (isNaN(node.vx) || isNaN(node.vy)) {\n node.vx = node.vy = 0;\n }\n }\n }\n function initializeForce(force) {\n if (force.initialize) force.initialize(_nodes, random);\n return force;\n }\n initializeNodes();\n return simulation = {\n tick: tick,\n restart: function restart() {\n return stepper.restart(step), simulation;\n },\n stop: function stop() {\n return stepper.stop(), simulation;\n },\n nodes: function nodes(_) {\n return arguments.length ? (_nodes = _, initializeNodes(), forces.forEach(initializeForce), simulation) : _nodes;\n },\n alpha: function alpha(_) {\n return arguments.length ? (_alpha = +_, simulation) : _alpha;\n },\n alphaMin: function alphaMin(_) {\n return arguments.length ? (_alphaMin = +_, simulation) : _alphaMin;\n },\n alphaDecay: function alphaDecay(_) {\n return arguments.length ? (_alphaDecay = +_, simulation) : +_alphaDecay;\n },\n alphaTarget: function alphaTarget(_) {\n return arguments.length ? (_alphaTarget = +_, simulation) : _alphaTarget;\n },\n velocityDecay: function velocityDecay(_) {\n return arguments.length ? (_velocityDecay = 1 - _, simulation) : 1 - _velocityDecay;\n },\n randomSource: function randomSource(_) {\n return arguments.length ? (random = _, forces.forEach(initializeForce), simulation) : random;\n },\n force: function force(name, _) {\n return arguments.length > 1 ? (_ == null ? forces.delete(name) : forces.set(name, initializeForce(_)), simulation) : forces.get(name);\n },\n find: function find(x, y, radius) {\n var i = 0,\n n = _nodes.length,\n dx,\n dy,\n d2,\n node,\n closest;\n if (radius == null) radius = Infinity;else radius *= radius;\n for (i = 0; i < n; ++i) {\n node = _nodes[i];\n dx = x - node.x;\n dy = y - node.y;\n d2 = dx * dx + dy * dy;\n if (d2 < radius) closest = node, radius = d2;\n }\n return closest;\n },\n on: function on(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}","import constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\nfunction index(d) {\n return d.index;\n}\nfunction find(nodeById, nodeId) {\n var node = nodeById.get(nodeId);\n if (!node) throw new Error(\"node not found: \" + nodeId);\n return node;\n}\nexport default function (links) {\n var id = index,\n strength = defaultStrength,\n strengths,\n distance = constant(30),\n distances,\n nodes,\n count,\n bias,\n random,\n iterations = 1;\n if (links == null) links = [];\n function defaultStrength(link) {\n return 1 / Math.min(count[link.source.index], count[link.target.index]);\n }\n function force(alpha) {\n for (var k = 0, n = links.length; k < iterations; ++k) {\n for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n link = links[i], source = link.source, target = link.target;\n x = target.x + target.vx - source.x - source.vx || jiggle(random);\n y = target.y + target.vy - source.y - source.vy || jiggle(random);\n l = Math.sqrt(x * x + y * y);\n l = (l - distances[i]) / l * alpha * strengths[i];\n x *= l, y *= l;\n target.vx -= x * (b = bias[i]);\n target.vy -= y * b;\n source.vx += x * (b = 1 - b);\n source.vy += y * b;\n }\n }\n }\n function initialize() {\n if (!nodes) return;\n var i,\n n = nodes.length,\n m = links.length,\n nodeById = new Map(nodes.map(function (d, i) {\n return [id(d, i, nodes), d];\n })),\n link;\n for (i = 0, count = new Array(n); i < m; ++i) {\n link = links[i], link.index = i;\n if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n count[link.source.index] = (count[link.source.index] || 0) + 1;\n count[link.target.index] = (count[link.target.index] || 0) + 1;\n }\n for (i = 0, bias = new Array(m); i < m; ++i) {\n link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n }\n strengths = new Array(m), initializeStrength();\n distances = new Array(m), initializeDistance();\n }\n function initializeStrength() {\n if (!nodes) return;\n for (var i = 0, n = links.length; i < n; ++i) {\n strengths[i] = +strength(links[i], i, links);\n }\n }\n function initializeDistance() {\n if (!nodes) return;\n for (var i = 0, n = links.length; i < n; ++i) {\n distances[i] = +distance(links[i], i, links);\n }\n }\n force.initialize = function (_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n force.links = function (_) {\n return arguments.length ? (links = _, initialize(), force) : links;\n };\n force.id = function (_) {\n return arguments.length ? (id = _, force) : id;\n };\n force.iterations = function (_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n force.strength = function (_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initializeStrength(), force) : strength;\n };\n force.distance = function (_) {\n return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant(+_), initializeDistance(), force) : distance;\n };\n return force;\n}","import { Transform } from 'vega-dataflow';\nimport { inherits, array, isFunction, accessorFields, hasOwnProperty, error } from 'vega-util';\nimport { forceSimulation, forceCenter, forceCollide, forceManyBody, forceLink, forceX, forceY } from 'd3-force';\nvar ForceMap = {\n center: forceCenter,\n collide: forceCollide,\n nbody: forceManyBody,\n link: forceLink,\n x: forceX,\n y: forceY\n};\nvar Forces = 'forces',\n ForceParams = ['alpha', 'alphaMin', 'alphaTarget', 'velocityDecay', 'forces'],\n ForceConfig = ['static', 'iterations'],\n ForceOutput = ['x', 'y', 'vx', 'vy'];\n\n/**\n * Force simulation layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array} params.forces - The forces to apply.\n */\nfunction Force(params) {\n Transform.call(this, null, params);\n}\nForce.Definition = {\n 'type': 'Force',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'static',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'restart',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'iterations',\n 'type': 'number',\n 'default': 300\n }, {\n 'name': 'alpha',\n 'type': 'number',\n 'default': 1\n }, {\n 'name': 'alphaMin',\n 'type': 'number',\n 'default': 0.001\n }, {\n 'name': 'alphaTarget',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'velocityDecay',\n 'type': 'number',\n 'default': 0.4\n }, {\n 'name': 'forces',\n 'type': 'param',\n 'array': true,\n 'params': [{\n 'key': {\n 'force': 'center'\n },\n 'params': [{\n 'name': 'x',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'y',\n 'type': 'number',\n 'default': 0\n }]\n }, {\n 'key': {\n 'force': 'collide'\n },\n 'params': [{\n 'name': 'radius',\n 'type': 'number',\n 'expr': true\n }, {\n 'name': 'strength',\n 'type': 'number',\n 'default': 0.7\n }, {\n 'name': 'iterations',\n 'type': 'number',\n 'default': 1\n }]\n }, {\n 'key': {\n 'force': 'nbody'\n },\n 'params': [{\n 'name': 'strength',\n 'type': 'number',\n 'default': -30,\n 'expr': true\n }, {\n 'name': 'theta',\n 'type': 'number',\n 'default': 0.9\n }, {\n 'name': 'distanceMin',\n 'type': 'number',\n 'default': 1\n }, {\n 'name': 'distanceMax',\n 'type': 'number'\n }]\n }, {\n 'key': {\n 'force': 'link'\n },\n 'params': [{\n 'name': 'links',\n 'type': 'data'\n }, {\n 'name': 'id',\n 'type': 'field'\n }, {\n 'name': 'distance',\n 'type': 'number',\n 'default': 30,\n 'expr': true\n }, {\n 'name': 'strength',\n 'type': 'number',\n 'expr': true\n }, {\n 'name': 'iterations',\n 'type': 'number',\n 'default': 1\n }]\n }, {\n 'key': {\n 'force': 'x'\n },\n 'params': [{\n 'name': 'strength',\n 'type': 'number',\n 'default': 0.1\n }, {\n 'name': 'x',\n 'type': 'field'\n }]\n }, {\n 'key': {\n 'force': 'y'\n },\n 'params': [{\n 'name': 'strength',\n 'type': 'number',\n 'default': 0.1\n }, {\n 'name': 'y',\n 'type': 'field'\n }]\n }]\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'modify': false,\n 'default': ForceOutput\n }]\n};\ninherits(Force, Transform, {\n transform: function transform(_, pulse) {\n var sim = this.value,\n change = pulse.changed(pulse.ADD_REM),\n params = _.modified(ForceParams),\n iters = _.iterations || 300;\n\n // configure simulation\n if (!sim) {\n this.value = sim = simulation(pulse.source, _);\n sim.on('tick', rerun(pulse.dataflow, this));\n if (!_.static) {\n change = true;\n sim.tick(); // ensure we run on init\n }\n\n pulse.modifies('index');\n } else {\n if (change) {\n pulse.modifies('index');\n sim.nodes(pulse.source);\n }\n if (params || pulse.changed(pulse.MOD)) {\n setup(sim, _, 0, pulse);\n }\n }\n\n // run simulation\n if (params || change || _.modified(ForceConfig) || pulse.changed() && _.restart) {\n sim.alpha(Math.max(sim.alpha(), _.alpha || 1)).alphaDecay(1 - Math.pow(sim.alphaMin(), 1 / iters));\n if (_.static) {\n for (sim.stop(); --iters >= 0;) sim.tick();\n } else {\n if (sim.stopped()) sim.restart();\n if (!change) return pulse.StopPropagation; // defer to sim ticks\n }\n }\n\n return this.finish(_, pulse);\n },\n finish: function finish(_, pulse) {\n var dataflow = pulse.dataflow;\n\n // inspect dependencies, touch link source data\n for (var args = this._argops, j = 0, m = args.length, arg; j < m; ++j) {\n arg = args[j];\n if (arg.name !== Forces || arg.op._argval.force !== 'link') {\n continue;\n }\n for (var ops = arg.op._argops, i = 0, n = ops.length, op; i < n; ++i) {\n if (ops[i].name === 'links' && (op = ops[i].op.source)) {\n dataflow.pulse(op, dataflow.changeset().reflow());\n break;\n }\n }\n }\n\n // reflow all nodes\n return pulse.reflow(_.modified()).modifies(ForceOutput);\n }\n});\nfunction rerun(df, op) {\n return function () {\n return df.touch(op).run();\n };\n}\nfunction simulation(nodes, _) {\n var sim = forceSimulation(nodes),\n stop = sim.stop,\n restart = sim.restart;\n var stopped = false;\n sim.stopped = function () {\n return stopped;\n };\n sim.restart = function () {\n return stopped = false, restart();\n };\n sim.stop = function () {\n return stopped = true, stop();\n };\n return setup(sim, _, true).on('end', function () {\n return stopped = true;\n });\n}\nfunction setup(sim, _, init, pulse) {\n var f = array(_.forces),\n i,\n n,\n p,\n name;\n for (i = 0, n = ForceParams.length; i < n; ++i) {\n p = ForceParams[i];\n if (p !== Forces && _.modified(p)) sim[p](_[p]);\n }\n for (i = 0, n = f.length; i < n; ++i) {\n name = Forces + i;\n p = init || _.modified(Forces, i) ? getForce(f[i]) : pulse && modified(f[i], pulse) ? sim.force(name) : null;\n if (p) sim.force(name, p);\n }\n for (n = sim.numForces || 0; i < n; ++i) {\n sim.force(Forces + i, null); // remove\n }\n\n sim.numForces = f.length;\n return sim;\n}\nfunction modified(f, pulse) {\n var k, v;\n for (k in f) {\n if (isFunction(v = f[k]) && pulse.modified(accessorFields(v))) return 1;\n }\n return 0;\n}\nfunction getForce(_) {\n var f, p;\n if (!hasOwnProperty(ForceMap, _.force)) {\n error('Unrecognized force: ' + _.force);\n }\n f = ForceMap[_.force]();\n for (p in _) {\n if (isFunction(f[p])) setForceParam(f[p], _[p], _);\n }\n return f;\n}\nfunction setForceParam(f, v, _) {\n f(isFunction(v) ? function (d) {\n return v(d, _);\n } : v);\n}\nexport { Force as force };","export default function (x, y) {\n var nodes,\n strength = 1;\n if (x == null) x = 0;\n if (y == null) y = 0;\n function force() {\n var i,\n n = nodes.length,\n node,\n sx = 0,\n sy = 0;\n for (i = 0; i < n; ++i) {\n node = nodes[i], sx += node.x, sy += node.y;\n }\n for (sx = (sx / n - x) * strength, sy = (sy / n - y) * strength, i = 0; i < n; ++i) {\n node = nodes[i], node.x -= sx, node.y -= sy;\n }\n }\n force.initialize = function (_) {\n nodes = _;\n };\n force.x = function (_) {\n return arguments.length ? (x = +_, force) : x;\n };\n force.y = function (_) {\n return arguments.length ? (y = +_, force) : y;\n };\n force.strength = function (_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n return force;\n}","import { quadtree } from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\nimport { x, y } from \"./simulation.js\";\nexport default function () {\n var nodes,\n node,\n random,\n alpha,\n strength = constant(-30),\n strengths,\n distanceMin2 = 1,\n distanceMax2 = Infinity,\n theta2 = 0.81;\n function force(_) {\n var i,\n n = nodes.length,\n tree = quadtree(nodes, x, y).visitAfter(accumulate);\n for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n }\n function initialize() {\n if (!nodes) return;\n var i,\n n = nodes.length,\n node;\n strengths = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n }\n function accumulate(quad) {\n var strength = 0,\n q,\n c,\n weight = 0,\n x,\n y,\n i;\n\n // For internal nodes, accumulate forces from child quadrants.\n if (quad.length) {\n for (x = y = i = 0; i < 4; ++i) {\n if ((q = quad[i]) && (c = Math.abs(q.value))) {\n strength += q.value, weight += c, x += c * q.x, y += c * q.y;\n }\n }\n quad.x = x / weight;\n quad.y = y / weight;\n }\n\n // For leaf nodes, accumulate forces from coincident quadrants.\n else {\n q = quad;\n q.x = q.data.x;\n q.y = q.data.y;\n do strength += strengths[q.data.index]; while (q = q.next);\n }\n quad.value = strength;\n }\n function apply(quad, x1, _, x2) {\n if (!quad.value) return true;\n var x = quad.x - node.x,\n y = quad.y - node.y,\n w = x2 - x1,\n l = x * x + y * y;\n\n // Apply the Barnes-Hut approximation if possible.\n // Limit forces for very close nodes; randomize direction if coincident.\n if (w * w / theta2 < l) {\n if (l < distanceMax2) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n node.vx += x * quad.value * alpha / l;\n node.vy += y * quad.value * alpha / l;\n }\n return true;\n }\n\n // Otherwise, process points directly.\n else if (quad.length || l >= distanceMax2) return;\n\n // Limit forces for very close nodes; randomize direction if coincident.\n if (quad.data !== node || quad.next) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n }\n do if (quad.data !== node) {\n w = strengths[quad.data.index] * alpha / l;\n node.vx += x * w;\n node.vy += y * w;\n } while (quad = quad.next);\n }\n force.initialize = function (_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n force.strength = function (_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n force.distanceMin = function (_) {\n return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n };\n force.distanceMax = function (_) {\n return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n };\n force.theta = function (_) {\n return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n };\n return force;\n}","import constant from \"./constant.js\";\nexport default function (x) {\n var strength = constant(0.1),\n nodes,\n strengths,\n xz;\n if (typeof x !== \"function\") x = constant(x == null ? 0 : +x);\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha;\n }\n }\n function initialize() {\n if (!nodes) return;\n var i,\n n = nodes.length;\n strengths = new Array(n);\n xz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n force.initialize = function (_) {\n nodes = _;\n initialize();\n };\n force.strength = function (_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n force.x = function (_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : x;\n };\n return force;\n}","import constant from \"./constant.js\";\nexport default function (y) {\n var strength = constant(0.1),\n nodes,\n strengths,\n yz;\n if (typeof y !== \"function\") y = constant(y == null ? 0 : +y);\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha;\n }\n }\n function initialize() {\n if (!nodes) return;\n var i,\n n = nodes.length;\n strengths = new Array(n);\n yz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n force.initialize = function (_) {\n nodes = _;\n initialize();\n };\n force.strength = function (_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n force.y = function (_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : y;\n };\n return force;\n}","function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\nexport default function () {\n return this.eachAfter(count);\n}","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nexport default function (callback, that) {\n var index = -1;\n var _iterator = _createForOfIteratorHelper(this),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var node = _step.value;\n callback.call(that, node, ++index, this);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return this;\n}","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nexport default function (callback, that) {\n var index = -1;\n var _iterator = _createForOfIteratorHelper(this),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var node = _step.value;\n if (callback.call(that, node, ++index, this)) {\n return node;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n}","import _regeneratorRuntime from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/regenerator/index.js\";\nvar _marked = /*#__PURE__*/_regeneratorRuntime.mark(_callee);\nexport default function _callee() {\n var node, current, next, children, i, n;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n node = this, next = [node];\n case 1:\n current = next.reverse(), next = [];\n case 2:\n if (!(node = current.pop())) {\n _context.next = 8;\n break;\n }\n _context.next = 5;\n return node;\n case 5:\n if (children = node.children) {\n for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n _context.next = 2;\n break;\n case 8:\n if (next.length) {\n _context.next = 1;\n break;\n }\n case 9:\n case \"end\":\n return _context.stop();\n }\n }, _marked, this);\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_find from \"./find.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\nimport node_iterator from \"./iterator.js\";\nexport default function hierarchy(data, children) {\n if (data instanceof Map) {\n data = [undefined, data];\n if (children === undefined) children = mapChildren;\n } else if (children === undefined) {\n children = objectChildren;\n }\n var root = new Node(data),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n while (node = nodes.pop()) {\n if ((childs = children(node.data)) && (n = (childs = Array.from(childs)).length)) {\n node.children = childs;\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = childs[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n return root.eachBefore(computeHeight);\n}\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\nfunction objectChildren(d) {\n return d.children;\n}\nfunction mapChildren(d) {\n return Array.isArray(d) ? d[1] : null;\n}\nfunction copyData(node) {\n if (node.data.value !== undefined) node.value = node.data.value;\n node.data = node.data.data;\n}\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height; while ((node = node.parent) && node.height < ++height);\n}\nexport function Node(data) {\n this.data = data;\n this.depth = this.height = 0;\n this.parent = null;\n}\nNode.prototype = hierarchy.prototype = _defineProperty({\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n find: node_find,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy\n}, Symbol.iterator, node_iterator);","export function optional(f) {\n return f == null ? null : required(f);\n}\nexport function required(f) {\n if (typeof f !== \"function\") throw new Error();\n return f;\n}","export function constantZero() {\n return 0;\n}\nexport default function (x) {\n return function () {\n return x;\n };\n}","export default function (callback, that) {\n var node = this,\n nodes = [node],\n next = [],\n children,\n i,\n n,\n index = -1;\n while (node = nodes.pop()) {\n next.push(node);\n if (children = node.children) {\n for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n }\n while (node = next.pop()) {\n callback.call(that, node, ++index, this);\n }\n return this;\n}","export default function (callback, that) {\n var node = this,\n nodes = [node],\n children,\n i,\n index = -1;\n while (node = nodes.pop()) {\n callback.call(that, node, ++index, this);\n if (children = node.children) {\n for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n }\n return this;\n}","export default function (value) {\n return this.eachAfter(function (node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}","export default function (compare) {\n return this.eachBefore(function (node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}","export default function (end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}","export default function () {\n var node = this,\n nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}","export default function () {\n return Array.from(this);\n}","export default function () {\n var leaves = [];\n this.eachBefore(function (node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}","export default function () {\n var root = this,\n links = [];\n root.each(function (node) {\n if (node !== root) {\n // Don’t include the root’s parent, if any.\n links.push({\n source: node.parent,\n target: node\n });\n }\n });\n return links;\n}","// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nvar a = 1664525;\nvar c = 1013904223;\nvar m = 4294967296; // 2^32\n\nexport default function () {\n var s = 1;\n return function () {\n return (s = (a * s + c) % m) / m;\n };\n}","import { shuffle } from \"../array.js\";\nimport lcg from \"../lcg.js\";\nexport default function (circles) {\n return packEncloseRandom(circles, lcg());\n}\nexport function packEncloseRandom(circles, random) {\n var i = 0,\n n = (circles = shuffle(Array.from(circles), random)).length,\n B = [],\n p,\n e;\n while (i < n) {\n p = circles[i];\n if (e && enclosesWeak(e, p)) ++i;else e = encloseBasis(B = extendBasis(B, p)), i = 0;\n }\n return e;\n}\nfunction extendBasis(B, p) {\n var i, j;\n if (enclosesWeakAll(p, B)) return [p];\n\n // If we get here then B must have at least one element.\n for (i = 0; i < B.length; ++i) {\n if (enclosesNot(p, B[i]) && enclosesWeakAll(encloseBasis2(B[i], p), B)) {\n return [B[i], p];\n }\n }\n\n // If we get here then B must have at least two elements.\n for (i = 0; i < B.length - 1; ++i) {\n for (j = i + 1; j < B.length; ++j) {\n if (enclosesNot(encloseBasis2(B[i], B[j]), p) && enclosesNot(encloseBasis2(B[i], p), B[j]) && enclosesNot(encloseBasis2(B[j], p), B[i]) && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {\n return [B[i], B[j], p];\n }\n }\n }\n\n // If we get here then something is very wrong.\n throw new Error();\n}\nfunction enclosesNot(a, b) {\n var dr = a.r - b.r,\n dx = b.x - a.x,\n dy = b.y - a.y;\n return dr < 0 || dr * dr < dx * dx + dy * dy;\n}\nfunction enclosesWeak(a, b) {\n var dr = a.r - b.r + Math.max(a.r, b.r, 1) * 1e-9,\n dx = b.x - a.x,\n dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\nfunction enclosesWeakAll(a, B) {\n for (var i = 0; i < B.length; ++i) {\n if (!enclosesWeak(a, B[i])) {\n return false;\n }\n }\n return true;\n}\nfunction encloseBasis(B) {\n switch (B.length) {\n case 1:\n return encloseBasis1(B[0]);\n case 2:\n return encloseBasis2(B[0], B[1]);\n case 3:\n return encloseBasis3(B[0], B[1], B[2]);\n }\n}\nfunction encloseBasis1(a) {\n return {\n x: a.x,\n y: a.y,\n r: a.r\n };\n}\nfunction encloseBasis2(a, b) {\n var x1 = a.x,\n y1 = a.y,\n r1 = a.r,\n x2 = b.x,\n y2 = b.y,\n r2 = b.r,\n x21 = x2 - x1,\n y21 = y2 - y1,\n r21 = r2 - r1,\n l = Math.sqrt(x21 * x21 + y21 * y21);\n return {\n x: (x1 + x2 + x21 / l * r21) / 2,\n y: (y1 + y2 + y21 / l * r21) / 2,\n r: (l + r1 + r2) / 2\n };\n}\nfunction encloseBasis3(a, b, c) {\n var x1 = a.x,\n y1 = a.y,\n r1 = a.r,\n x2 = b.x,\n y2 = b.y,\n r2 = b.r,\n x3 = c.x,\n y3 = c.y,\n r3 = c.r,\n a2 = x1 - x2,\n a3 = x1 - x3,\n b2 = y1 - y2,\n b3 = y1 - y3,\n c2 = r2 - r1,\n c3 = r3 - r1,\n d1 = x1 * x1 + y1 * y1 - r1 * r1,\n d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,\n d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,\n ab = a3 * b2 - a2 * b3,\n xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,\n xb = (b3 * c2 - b2 * c3) / ab,\n ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,\n yb = (a2 * c3 - a3 * c2) / ab,\n A = xb * xb + yb * yb - 1,\n B = 2 * (r1 + xa * xb + ya * yb),\n C = xa * xa + ya * ya - r1 * r1,\n r = -(Math.abs(A) > 1e-6 ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);\n return {\n x: x1 + xa + xb * r,\n y: y1 + ya + yb * r,\n r: r\n };\n}","export default function (x) {\n return typeof x === \"object\" && \"length\" in x ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n\nexport function shuffle(array, random) {\n var m = array.length,\n t,\n i;\n while (m) {\n i = random() * m-- | 0;\n t = array[m];\n array[m] = array[i];\n array[i] = t;\n }\n return array;\n}","import array from \"../array.js\";\nimport lcg from \"../lcg.js\";\nimport { packEncloseRandom } from \"./enclose.js\";\nfunction place(b, a, c) {\n var dx = b.x - a.x,\n x,\n a2,\n dy = b.y - a.y,\n y,\n b2,\n d2 = dx * dx + dy * dy;\n if (d2) {\n a2 = a.r + c.r, a2 *= a2;\n b2 = b.r + c.r, b2 *= b2;\n if (a2 > b2) {\n x = (d2 + b2 - a2) / (2 * d2);\n y = Math.sqrt(Math.max(0, b2 / d2 - x * x));\n c.x = b.x - x * dx - y * dy;\n c.y = b.y - x * dy + y * dx;\n } else {\n x = (d2 + a2 - b2) / (2 * d2);\n y = Math.sqrt(Math.max(0, a2 / d2 - x * x));\n c.x = a.x + x * dx - y * dy;\n c.y = a.y + x * dy + y * dx;\n }\n } else {\n c.x = a.x + c.r;\n c.y = a.y;\n }\n}\nfunction intersects(a, b) {\n var dr = a.r + b.r - 1e-6,\n dx = b.x - a.x,\n dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\nfunction score(node) {\n var a = node._,\n b = node.next._,\n ab = a.r + b.r,\n dx = (a.x * b.r + b.x * a.r) / ab,\n dy = (a.y * b.r + b.y * a.r) / ab;\n return dx * dx + dy * dy;\n}\nfunction Node(circle) {\n this._ = circle;\n this.next = null;\n this.previous = null;\n}\nexport function packSiblingsRandom(circles, random) {\n if (!(n = (circles = array(circles)).length)) return 0;\n var a, b, c, n, aa, ca, i, j, k, sj, sk;\n\n // Place the first circle.\n a = circles[0], a.x = 0, a.y = 0;\n if (!(n > 1)) return a.r;\n\n // Place the second circle.\n b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;\n if (!(n > 2)) return a.r + b.r;\n\n // Place the third circle.\n place(b, a, c = circles[2]);\n\n // Initialize the front-chain using the first three circles a, b and c.\n a = new Node(a), b = new Node(b), c = new Node(c);\n a.next = c.previous = b;\n b.next = a.previous = c;\n c.next = b.previous = a;\n\n // Attempt to place each remaining circle…\n pack: for (i = 3; i < n; ++i) {\n place(a._, b._, c = circles[i]), c = new Node(c);\n\n // Find the closest intersecting circle on the front-chain, if any.\n // “Closeness” is determined by linear distance along the front-chain.\n // “Ahead” or “behind” is likewise determined by linear distance.\n j = b.next, k = a.previous, sj = b._.r, sk = a._.r;\n do {\n if (sj <= sk) {\n if (intersects(j._, c._)) {\n b = j, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sj += j._.r, j = j.next;\n } else {\n if (intersects(k._, c._)) {\n a = k, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sk += k._.r, k = k.previous;\n }\n } while (j !== k.next);\n\n // Success! Insert the new circle c between a and b.\n c.previous = a, c.next = b, a.next = b.previous = b = c;\n\n // Compute the new closest circle pair to the centroid.\n aa = score(a);\n while ((c = c.next) !== b) {\n if ((ca = score(c)) < aa) {\n a = c, aa = ca;\n }\n }\n b = a.next;\n }\n\n // Compute the enclosing circle of the front chain.\n a = [b._], c = b;\n while ((c = c.next) !== b) a.push(c._);\n c = packEncloseRandom(a, random);\n\n // Translate the circles to put the enclosing circle around the origin.\n for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;\n return c.r;\n}\nexport default function (circles) {\n packSiblingsRandom(circles, lcg());\n return circles;\n}","import { optional } from \"../accessors.js\";\nimport constant, { constantZero } from \"../constant.js\";\nimport lcg from \"../lcg.js\";\nimport { packSiblingsRandom } from \"./siblings.js\";\nfunction defaultRadius(d) {\n return Math.sqrt(d.value);\n}\nexport default function () {\n var radius = null,\n dx = 1,\n dy = 1,\n padding = constantZero;\n function pack(root) {\n var random = lcg();\n root.x = dx / 2, root.y = dy / 2;\n if (radius) {\n root.eachBefore(radiusLeaf(radius)).eachAfter(packChildrenRandom(padding, 0.5, random)).eachBefore(translateChild(1));\n } else {\n root.eachBefore(radiusLeaf(defaultRadius)).eachAfter(packChildrenRandom(constantZero, 1, random)).eachAfter(packChildrenRandom(padding, root.r / Math.min(dx, dy), random)).eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));\n }\n return root;\n }\n pack.radius = function (x) {\n return arguments.length ? (radius = optional(x), pack) : radius;\n };\n pack.size = function (x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];\n };\n pack.padding = function (x) {\n return arguments.length ? (padding = typeof x === \"function\" ? x : constant(+x), pack) : padding;\n };\n return pack;\n}\nfunction radiusLeaf(radius) {\n return function (node) {\n if (!node.children) {\n node.r = Math.max(0, +radius(node) || 0);\n }\n };\n}\nfunction packChildrenRandom(padding, k, random) {\n return function (node) {\n if (children = node.children) {\n var children,\n i,\n n = children.length,\n r = padding(node) * k || 0,\n e;\n if (r) for (i = 0; i < n; ++i) children[i].r += r;\n e = packSiblingsRandom(children, random);\n if (r) for (i = 0; i < n; ++i) children[i].r -= r;\n node.r = e + r;\n }\n };\n}\nfunction translateChild(k) {\n return function (node) {\n var parent = node.parent;\n node.r *= k;\n if (parent) {\n node.x = parent.x + k * node.x;\n node.y = parent.y + k * node.y;\n }\n };\n}","export default function (node) {\n node.x0 = Math.round(node.x0);\n node.y0 = Math.round(node.y0);\n node.x1 = Math.round(node.x1);\n node.y1 = Math.round(node.y1);\n}","export default function (parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (x1 - x0) / parent.value;\n while (++i < n) {\n node = nodes[i], node.y0 = y0, node.y1 = y1;\n node.x0 = x0, node.x1 = x0 += node.value * k;\n }\n}","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { optional } from \"./accessors.js\";\nimport { Node, computeHeight } from \"./hierarchy/index.js\";\nvar preroot = {\n depth: -1\n },\n ambiguous = {},\n imputed = {};\nfunction defaultId(d) {\n return d.id;\n}\nfunction defaultParentId(d) {\n return d.parentId;\n}\nexport default function () {\n var id = defaultId,\n parentId = defaultParentId,\n path;\n function stratify(data) {\n var nodes = Array.from(data),\n currentId = id,\n currentParentId = parentId,\n n,\n d,\n i,\n root,\n parent,\n node,\n nodeId,\n nodeKey,\n nodeByKey = new Map();\n if (path != null) {\n var I = nodes.map(function (d, i) {\n return normalize(path(d, i, data));\n });\n var P = I.map(parentof);\n var S = new Set(I).add(\"\");\n var _iterator = _createForOfIteratorHelper(P),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _i = _step.value;\n if (!S.has(_i)) {\n S.add(_i);\n I.push(_i);\n P.push(parentof(_i));\n nodes.push(imputed);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n currentId = function currentId(_, i) {\n return I[i];\n };\n currentParentId = function currentParentId(_, i) {\n return P[i];\n };\n }\n for (i = 0, n = nodes.length; i < n; ++i) {\n d = nodes[i], node = nodes[i] = new Node(d);\n if ((nodeId = currentId(d, i, data)) != null && (nodeId += \"\")) {\n nodeKey = node.id = nodeId;\n nodeByKey.set(nodeKey, nodeByKey.has(nodeKey) ? ambiguous : node);\n }\n if ((nodeId = currentParentId(d, i, data)) != null && (nodeId += \"\")) {\n node.parent = nodeId;\n }\n }\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (nodeId = node.parent) {\n parent = nodeByKey.get(nodeId);\n if (!parent) throw new Error(\"missing: \" + nodeId);\n if (parent === ambiguous) throw new Error(\"ambiguous: \" + nodeId);\n if (parent.children) parent.children.push(node);else parent.children = [node];\n node.parent = parent;\n } else {\n if (root) throw new Error(\"multiple roots\");\n root = node;\n }\n }\n if (!root) throw new Error(\"no root\");\n\n // When imputing internal nodes, only introduce roots if needed.\n // Then replace the imputed marker data with null.\n if (path != null) {\n while (root.data === imputed && root.children.length === 1) {\n root = root.children[0], --n;\n }\n for (var _i2 = nodes.length - 1; _i2 >= 0; --_i2) {\n node = nodes[_i2];\n if (node.data !== imputed) break;\n node.data = null;\n }\n }\n root.parent = preroot;\n root.eachBefore(function (node) {\n node.depth = node.parent.depth + 1;\n --n;\n }).eachBefore(computeHeight);\n root.parent = null;\n if (n > 0) throw new Error(\"cycle\");\n return root;\n }\n stratify.id = function (x) {\n return arguments.length ? (id = optional(x), stratify) : id;\n };\n stratify.parentId = function (x) {\n return arguments.length ? (parentId = optional(x), stratify) : parentId;\n };\n stratify.path = function (x) {\n return arguments.length ? (path = optional(x), stratify) : path;\n };\n return stratify;\n}\n\n// To normalize a path, we coerce to a string, strip the trailing slash if any\n// (as long as the trailing slash is not immediately preceded by another slash),\n// and add leading slash if missing.\nfunction normalize(path) {\n path = \"\".concat(path);\n var i = path.length;\n if (slash(path, i - 1) && !slash(path, i - 2)) path = path.slice(0, -1);\n return path[0] === \"/\" ? path : \"/\".concat(path);\n}\n\n// Walk backwards to find the first slash that is not the leading slash, e.g.:\n// \"/foo/bar\" ⇥ \"/foo\", \"/foo\" ⇥ \"/\", \"/\" ↦ \"\". (The root is special-cased\n// because the id of the root must be a truthy value.)\nfunction parentof(path) {\n var i = path.length;\n if (i < 2) return \"\";\n while (--i > 1) if (slash(path, i)) break;\n return path.slice(0, i);\n}\n\n// Slashes can be escaped; to determine whether a slash is a path delimiter, we\n// count the number of preceding backslashes escaping the forward slash: an odd\n// number indicates an escaped forward slash.\nfunction slash(path, i) {\n if (path[i] === \"/\") {\n var k = 0;\n while (i > 0 && path[--i] === \"\\\\\") ++k;\n if ((k & 1) === 0) return true;\n }\n return false;\n}","import { Node } from \"./hierarchy/index.js\";\nfunction defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\n// function radialSeparation(a, b) {\n// return (a.parent === b.parent ? 1 : 2) / a.depth;\n// }\n\n// This function is used to traverse the left contour of a subtree (or\n// subforest). It returns the successor of v on this contour. This successor is\n// either given by the leftmost child of v or by the thread of v. The function\n// returns null if and only if v is on the highest level of its subtree.\nfunction nextLeft(v) {\n var children = v.children;\n return children ? children[0] : v.t;\n}\n\n// This function works analogously to nextLeft.\nfunction nextRight(v) {\n var children = v.children;\n return children ? children[children.length - 1] : v.t;\n}\n\n// Shifts the current subtree rooted at w+. This is done by increasing\n// prelim(w+) and mod(w+) by shift.\nfunction moveSubtree(wm, wp, shift) {\n var change = shift / (wp.i - wm.i);\n wp.c -= change;\n wp.s += shift;\n wm.c += change;\n wp.z += shift;\n wp.m += shift;\n}\n\n// All other shifts, applied to the smaller subtrees between w- and w+, are\n// performed by this function. To prepare the shifts, we have to adjust\n// change(w+), shift(w+), and change(w-).\nfunction executeShifts(v) {\n var shift = 0,\n change = 0,\n children = v.children,\n i = children.length,\n w;\n while (--i >= 0) {\n w = children[i];\n w.z += shift;\n w.m += shift;\n shift += w.s + (change += w.c);\n }\n}\n\n// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise,\n// returns the specified (default) ancestor.\nfunction nextAncestor(vim, v, ancestor) {\n return vim.a.parent === v.parent ? vim.a : ancestor;\n}\nfunction TreeNode(node, i) {\n this._ = node;\n this.parent = null;\n this.children = null;\n this.A = null; // default ancestor\n this.a = this; // ancestor\n this.z = 0; // prelim\n this.m = 0; // mod\n this.c = 0; // change\n this.s = 0; // shift\n this.t = null; // thread\n this.i = i; // number\n}\n\nTreeNode.prototype = Object.create(Node.prototype);\nfunction treeRoot(root) {\n var tree = new TreeNode(root, 0),\n node,\n nodes = [tree],\n child,\n children,\n i,\n n;\n while (node = nodes.pop()) {\n if (children = node._.children) {\n node.children = new Array(n = children.length);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new TreeNode(children[i], i));\n child.parent = node;\n }\n }\n }\n (tree.parent = new TreeNode(null, 0)).children = [tree];\n return tree;\n}\n\n// Node-link tree diagram using the Reingold-Tilford \"tidy\" algorithm\nexport default function () {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = null;\n function tree(root) {\n var t = treeRoot(root);\n\n // Compute the layout using Buchheim et al.’s algorithm.\n t.eachAfter(firstWalk), t.parent.m = -t.z;\n t.eachBefore(secondWalk);\n\n // If a fixed node size is specified, scale x and y.\n if (nodeSize) root.eachBefore(sizeNode);\n\n // If a fixed tree size is specified, scale x and y based on the extent.\n // Compute the left-most, right-most, and depth-most nodes for extents.\n else {\n var left = root,\n right = root,\n bottom = root;\n root.eachBefore(function (node) {\n if (node.x < left.x) left = node;\n if (node.x > right.x) right = node;\n if (node.depth > bottom.depth) bottom = node;\n });\n var s = left === right ? 1 : separation(left, right) / 2,\n tx = s - left.x,\n kx = dx / (right.x + s + tx),\n ky = dy / (bottom.depth || 1);\n root.eachBefore(function (node) {\n node.x = (node.x + tx) * kx;\n node.y = node.depth * ky;\n });\n }\n return root;\n }\n\n // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is\n // applied recursively to the children of v, as well as the function\n // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the\n // node v is placed to the midpoint of its outermost children.\n function firstWalk(v) {\n var children = v.children,\n siblings = v.parent.children,\n w = v.i ? siblings[v.i - 1] : null;\n if (children) {\n executeShifts(v);\n var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n if (w) {\n v.z = w.z + separation(v._, w._);\n v.m = v.z - midpoint;\n } else {\n v.z = midpoint;\n }\n } else if (w) {\n v.z = w.z + separation(v._, w._);\n }\n v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n }\n\n // Computes all real x-coordinates by summing up the modifiers recursively.\n function secondWalk(v) {\n v._.x = v.z + v.parent.m;\n v.m += v.parent.m;\n }\n\n // The core of the algorithm. Here, a new subtree is combined with the\n // previous subtrees. Threads are used to traverse the inside and outside\n // contours of the left and right subtree up to the highest common level. The\n // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the\n // superscript o means outside and i means inside, the subscript - means left\n // subtree and + means right subtree. For summing up the modifiers along the\n // contour, we use respective variables si+, si-, so-, and so+. Whenever two\n // nodes of the inside contours conflict, we compute the left one of the\n // greatest uncommon ancestors using the function ANCESTOR and call MOVE\n // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.\n // Finally, we add a new thread (if necessary).\n function apportion(v, w, ancestor) {\n if (w) {\n var vip = v,\n vop = v,\n vim = w,\n vom = vip.parent.children[0],\n sip = vip.m,\n sop = vop.m,\n sim = vim.m,\n som = vom.m,\n shift;\n while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {\n vom = nextLeft(vom);\n vop = nextRight(vop);\n vop.a = v;\n shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n if (shift > 0) {\n moveSubtree(nextAncestor(vim, v, ancestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.m;\n sip += vip.m;\n som += vom.m;\n sop += vop.m;\n }\n if (vim && !nextRight(vop)) {\n vop.t = vim;\n vop.m += sim - sop;\n }\n if (vip && !nextLeft(vom)) {\n vom.t = vip;\n vom.m += sip - som;\n ancestor = v;\n }\n }\n return ancestor;\n }\n function sizeNode(node) {\n node.x *= dx;\n node.y = node.depth * dy;\n }\n tree.separation = function (x) {\n return arguments.length ? (separation = x, tree) : separation;\n };\n tree.size = function (x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : nodeSize ? null : [dx, dy];\n };\n tree.nodeSize = function (x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : nodeSize ? [dx, dy] : null;\n };\n return tree;\n}","function defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\nfunction meanX(children) {\n return children.reduce(meanXReduce, 0) / children.length;\n}\nfunction meanXReduce(x, c) {\n return x + c.x;\n}\nfunction maxY(children) {\n return 1 + children.reduce(maxYReduce, 0);\n}\nfunction maxYReduce(y, c) {\n return Math.max(y, c.y);\n}\nfunction leafLeft(node) {\n var children;\n while (children = node.children) node = children[0];\n return node;\n}\nfunction leafRight(node) {\n var children;\n while (children = node.children) node = children[children.length - 1];\n return node;\n}\nexport default function () {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = false;\n function cluster(root) {\n var previousNode,\n x = 0;\n\n // First walk, computing the initial x & y values.\n root.eachAfter(function (node) {\n var children = node.children;\n if (children) {\n node.x = meanX(children);\n node.y = maxY(children);\n } else {\n node.x = previousNode ? x += separation(node, previousNode) : 0;\n node.y = 0;\n previousNode = node;\n }\n });\n var left = leafLeft(root),\n right = leafRight(root),\n x0 = left.x - separation(left, right) / 2,\n x1 = right.x + separation(right, left) / 2;\n\n // Second walk, normalizing x & y to the desired size.\n return root.eachAfter(nodeSize ? function (node) {\n node.x = (node.x - root.x) * dx;\n node.y = (root.y - node.y) * dy;\n } : function (node) {\n node.x = (node.x - x0) / (x1 - x0) * dx;\n node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;\n });\n }\n cluster.separation = function (x) {\n return arguments.length ? (separation = x, cluster) : separation;\n };\n cluster.size = function (x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : nodeSize ? null : [dx, dy];\n };\n cluster.nodeSize = function (x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : nodeSize ? [dx, dy] : null;\n };\n return cluster;\n}","export default function (parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (y1 - y0) / parent.value;\n while (++i < n) {\n node = nodes[i], node.x0 = x0, node.x1 = x1;\n node.y0 = y0, node.y1 = y0 += node.value * k;\n }\n}","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\nexport var phi = (1 + Math.sqrt(5)) / 2;\nexport function squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n var rows = [],\n nodes = parent.children,\n row,\n nodeValue,\n i0 = 0,\n i1 = 0,\n n = nodes.length,\n dx,\n dy,\n value = parent.value,\n sumValue,\n minValue,\n maxValue,\n newRatio,\n minRatio,\n alpha,\n beta;\n while (i0 < n) {\n dx = x1 - x0, dy = y1 - y0;\n\n // Find the next non-empty node.\n do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n minValue = maxValue = sumValue;\n alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n beta = sumValue * sumValue * alpha;\n minRatio = Math.max(maxValue / beta, beta / minValue);\n\n // Keep adding nodes while the aspect ratio maintains or improves.\n for (; i1 < n; ++i1) {\n sumValue += nodeValue = nodes[i1].value;\n if (nodeValue < minValue) minValue = nodeValue;\n if (nodeValue > maxValue) maxValue = nodeValue;\n beta = sumValue * sumValue * alpha;\n newRatio = Math.max(maxValue / beta, beta / minValue);\n if (newRatio > minRatio) {\n sumValue -= nodeValue;\n break;\n }\n minRatio = newRatio;\n }\n\n // Position and record the row orientation.\n rows.push(row = {\n value: sumValue,\n dice: dx < dy,\n children: nodes.slice(i0, i1)\n });\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n value -= sumValue, i0 = i1;\n }\n return rows;\n}\nexport default (function custom(ratio) {\n function squarify(parent, x0, y0, x1, y1) {\n squarifyRatio(ratio, parent, x0, y0, x1, y1);\n }\n squarify.ratio = function (x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n return squarify;\n})(phi);","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\nimport { phi, squarifyRatio } from \"./squarify.js\";\nexport default (function custom(ratio) {\n function resquarify(parent, x0, y0, x1, y1) {\n if ((rows = parent._squarify) && rows.ratio === ratio) {\n var rows,\n row,\n nodes,\n i,\n j = -1,\n n,\n m = rows.length,\n value = parent.value;\n while (++j < m) {\n row = rows[j], nodes = row.children;\n for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += (y1 - y0) * row.value / value : y1);else treemapSlice(row, x0, y0, value ? x0 += (x1 - x0) * row.value / value : x1, y1);\n value -= row.value;\n }\n } else {\n parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1);\n rows.ratio = ratio;\n }\n }\n resquarify.ratio = function (x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n return resquarify;\n})(phi);","import { Transform, isTuple, ingest, tupleid, stableCompare } from 'vega-dataflow';\nimport { inherits, error, array, one, truthy, hasOwnProperty } from 'vega-util';\nimport { hierarchy, pack, partition, stratify, tree, cluster, treemap, treemapBinary, treemapDice, treemapSlice, treemapSliceDice, treemapSquarify, treemapResquarify } from 'd3-hierarchy';\n\n// Build lookup table mapping tuple keys to tree node instances\nfunction lookup(tree, key, filter) {\n var map = {};\n tree.each(function (node) {\n var t = node.data;\n if (filter(t)) map[key(t)] = node;\n });\n tree.lookup = map;\n return tree;\n}\n\n/**\n * Nest tuples into a tree structure, grouped by key values.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array} params.keys - The key fields to nest by, in order.\n * @param {boolean} [params.generate=false] - A boolean flag indicating if\n * non-leaf nodes generated by this transform should be included in the\n * output. The default (false) includes only the input data (leaf nodes)\n * in the data stream.\n */\nfunction Nest(params) {\n Transform.call(this, null, params);\n}\nNest.Definition = {\n 'type': 'Nest',\n 'metadata': {\n 'treesource': true,\n 'changes': true\n },\n 'params': [{\n 'name': 'keys',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'generate',\n 'type': 'boolean'\n }]\n};\nvar children = function children(n) {\n return n.values;\n};\ninherits(Nest, Transform, {\n transform: function transform(_, pulse) {\n if (!pulse.source) {\n error('Nest transform requires an upstream data source.');\n }\n var gen = _.generate,\n mod = _.modified(),\n out = pulse.clone(),\n tree = this.value;\n if (!tree || mod || pulse.changed()) {\n // collect nodes to remove\n if (tree) {\n tree.each(function (node) {\n if (node.children && isTuple(node.data)) {\n out.rem.push(node.data);\n }\n });\n }\n\n // generate new tree structure\n this.value = tree = hierarchy({\n values: array(_.keys).reduce(function (n, k) {\n n.key(k);\n return n;\n }, nest()).entries(out.source)\n }, children);\n\n // collect nodes to add\n if (gen) {\n tree.each(function (node) {\n if (node.children) {\n node = ingest(node.data);\n out.add.push(node);\n out.source.push(node);\n }\n });\n }\n\n // build lookup table\n lookup(tree, tupleid, tupleid);\n }\n out.source.root = tree;\n return out;\n }\n});\nfunction nest() {\n var keys = [],\n nest = {\n entries: function entries(array) {\n return _entries(apply(array, 0), 0);\n },\n key: function key(d) {\n return keys.push(d), nest;\n }\n };\n function apply(array, depth) {\n if (depth >= keys.length) {\n return array;\n }\n var n = array.length,\n key = keys[depth++],\n valuesByKey = {},\n result = {};\n var i = -1,\n keyValue,\n value,\n values;\n while (++i < n) {\n keyValue = key(value = array[i]) + '';\n if (values = valuesByKey[keyValue]) {\n values.push(value);\n } else {\n valuesByKey[keyValue] = [value];\n }\n }\n for (keyValue in valuesByKey) {\n result[keyValue] = apply(valuesByKey[keyValue], depth);\n }\n return result;\n }\n function _entries(map, depth) {\n if (++depth > keys.length) return map;\n var array = [];\n for (var key in map) {\n array.push({\n key: key,\n values: _entries(map[key], depth)\n });\n }\n return array;\n }\n return nest;\n}\n\n/**\n * Abstract class for tree layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nfunction HierarchyLayout(params) {\n Transform.call(this, null, params);\n}\nvar defaultSeparation = function defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n};\ninherits(HierarchyLayout, Transform, {\n transform: function transform(_, pulse) {\n if (!pulse.source || !pulse.source.root) {\n error(this.constructor.name + ' transform requires a backing tree data source.');\n }\n var layout = this.layout(_.method),\n fields = this.fields,\n root = pulse.source.root,\n as = _.as || fields;\n if (_.field) root.sum(_.field);else root.count();\n if (_.sort) root.sort(stableCompare(_.sort, function (d) {\n return d.data;\n }));\n setParams(layout, this.params, _);\n if (layout.separation) {\n layout.separation(_.separation !== false ? defaultSeparation : one);\n }\n try {\n this.value = layout(root);\n } catch (err) {\n error(err);\n }\n root.each(function (node) {\n return setFields(node, fields, as);\n });\n return pulse.reflow(_.modified()).modifies(as).modifies('leaf');\n }\n});\nfunction setParams(layout, params, _) {\n for (var p, i = 0, n = params.length; i < n; ++i) {\n p = params[i];\n if (p in _) layout[p](_[p]);\n }\n}\nfunction setFields(node, fields, as) {\n var t = node.data,\n n = fields.length - 1;\n for (var i = 0; i < n; ++i) {\n t[as[i]] = node[fields[i]];\n }\n t[as[n]] = node.children ? node.children.length : 0;\n}\nvar Output$3 = ['x', 'y', 'r', 'depth', 'children'];\n\n/**\n * Packed circle tree layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to size nodes.\n */\nfunction Pack(params) {\n HierarchyLayout.call(this, params);\n}\nPack.Definition = {\n 'type': 'Pack',\n 'metadata': {\n 'tree': true,\n 'modifies': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field'\n }, {\n 'name': 'sort',\n 'type': 'compare'\n }, {\n 'name': 'padding',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'radius',\n 'type': 'field',\n 'default': null\n }, {\n 'name': 'size',\n 'type': 'number',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': Output$3.length,\n 'default': Output$3\n }]\n};\ninherits(Pack, HierarchyLayout, {\n layout: pack,\n params: ['radius', 'size', 'padding'],\n fields: Output$3\n});\nvar Output$2 = ['x0', 'y0', 'x1', 'y1', 'depth', 'children'];\n\n/**\n * Partition tree layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to size nodes.\n */\nfunction Partition(params) {\n HierarchyLayout.call(this, params);\n}\nPartition.Definition = {\n 'type': 'Partition',\n 'metadata': {\n 'tree': true,\n 'modifies': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field'\n }, {\n 'name': 'sort',\n 'type': 'compare'\n }, {\n 'name': 'padding',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'round',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'size',\n 'type': 'number',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': Output$2.length,\n 'default': Output$2\n }]\n};\ninherits(Partition, HierarchyLayout, {\n layout: partition,\n params: ['size', 'round', 'padding'],\n fields: Output$2\n});\n\n/**\n * Stratify a collection of tuples into a tree structure based on\n * id and parent id fields.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.key - Unique key field for each tuple.\n * @param {function(object): *} params.parentKey - Field with key for parent tuple.\n */\nfunction Stratify(params) {\n Transform.call(this, null, params);\n}\nStratify.Definition = {\n 'type': 'Stratify',\n 'metadata': {\n 'treesource': true\n },\n 'params': [{\n 'name': 'key',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'parentKey',\n 'type': 'field',\n 'required': true\n }]\n};\ninherits(Stratify, Transform, {\n transform: function transform(_, pulse) {\n if (!pulse.source) {\n error('Stratify transform requires an upstream data source.');\n }\n var tree = this.value;\n var mod = _.modified(),\n out = pulse.fork(pulse.ALL).materialize(pulse.SOURCE),\n run = !tree || mod || pulse.changed(pulse.ADD_REM) || pulse.modified(_.key.fields) || pulse.modified(_.parentKey.fields);\n\n // prevent upstream source pollution\n out.source = out.source.slice();\n if (run) {\n tree = out.source.length ? lookup(stratify().id(_.key).parentId(_.parentKey)(out.source), _.key, truthy) : lookup(stratify()([{}]), _.key, _.key);\n }\n out.source.root = this.value = tree;\n return out;\n }\n});\nvar Layouts = {\n tidy: tree,\n cluster: cluster\n};\nvar Output$1 = ['x', 'y', 'depth', 'children'];\n\n/**\n * Tree layout. Depending on the method parameter, performs either\n * Reingold-Tilford 'tidy' layout or dendrogram 'cluster' layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nfunction Tree(params) {\n HierarchyLayout.call(this, params);\n}\nTree.Definition = {\n 'type': 'Tree',\n 'metadata': {\n 'tree': true,\n 'modifies': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field'\n }, {\n 'name': 'sort',\n 'type': 'compare'\n }, {\n 'name': 'method',\n 'type': 'enum',\n 'default': 'tidy',\n 'values': ['tidy', 'cluster']\n }, {\n 'name': 'size',\n 'type': 'number',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'nodeSize',\n 'type': 'number',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'separation',\n 'type': 'boolean',\n 'default': true\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': Output$1.length,\n 'default': Output$1\n }]\n};\ninherits(Tree, HierarchyLayout, {\n /**\n * Tree layout generator. Supports both 'tidy' and 'cluster' layouts.\n */\n layout: function layout(method) {\n var m = method || 'tidy';\n if (hasOwnProperty(Layouts, m)) return Layouts[m]();else error('Unrecognized Tree layout method: ' + m);\n },\n params: ['size', 'nodeSize'],\n fields: Output$1\n});\n\n/**\n * Generate tuples representing links between tree nodes.\n * The resulting tuples will contain 'source' and 'target' fields,\n * which point to parent and child node tuples, respectively.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nfunction TreeLinks(params) {\n Transform.call(this, [], params);\n}\nTreeLinks.Definition = {\n 'type': 'TreeLinks',\n 'metadata': {\n 'tree': true,\n 'generates': true,\n 'changes': true\n },\n 'params': []\n};\ninherits(TreeLinks, Transform, {\n transform: function transform(_, pulse) {\n var links = this.value,\n tree = pulse.source && pulse.source.root,\n out = pulse.fork(pulse.NO_SOURCE),\n lut = {};\n if (!tree) error('TreeLinks transform requires a tree data source.');\n if (pulse.changed(pulse.ADD_REM)) {\n // remove previous links\n out.rem = links;\n\n // build lookup table of valid tuples\n pulse.visit(pulse.SOURCE, function (t) {\n return lut[tupleid(t)] = 1;\n });\n\n // generate links for all edges incident on valid tuples\n tree.each(function (node) {\n var t = node.data,\n p = node.parent && node.parent.data;\n if (p && lut[tupleid(t)] && lut[tupleid(p)]) {\n out.add.push(ingest({\n source: p,\n target: t\n }));\n }\n });\n this.value = out.add;\n } else if (pulse.changed(pulse.MOD)) {\n // build lookup table of modified tuples\n pulse.visit(pulse.MOD, function (t) {\n return lut[tupleid(t)] = 1;\n });\n\n // gather links incident on modified tuples\n links.forEach(function (link) {\n if (lut[tupleid(link.source)] || lut[tupleid(link.target)]) {\n out.mod.push(link);\n }\n });\n }\n return out;\n }\n});\nvar Tiles = {\n binary: treemapBinary,\n dice: treemapDice,\n slice: treemapSlice,\n slicedice: treemapSliceDice,\n squarify: treemapSquarify,\n resquarify: treemapResquarify\n};\nvar Output = ['x0', 'y0', 'x1', 'y1', 'depth', 'children'];\n\n/**\n * Treemap layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to size nodes.\n */\nfunction Treemap(params) {\n HierarchyLayout.call(this, params);\n}\nTreemap.Definition = {\n 'type': 'Treemap',\n 'metadata': {\n 'tree': true,\n 'modifies': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field'\n }, {\n 'name': 'sort',\n 'type': 'compare'\n }, {\n 'name': 'method',\n 'type': 'enum',\n 'default': 'squarify',\n 'values': ['squarify', 'resquarify', 'binary', 'dice', 'slice', 'slicedice']\n }, {\n 'name': 'padding',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'paddingInner',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'paddingOuter',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'paddingTop',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'paddingRight',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'paddingBottom',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'paddingLeft',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'ratio',\n 'type': 'number',\n 'default': 1.618033988749895\n }, {\n 'name': 'round',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'size',\n 'type': 'number',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': Output.length,\n 'default': Output\n }]\n};\ninherits(Treemap, HierarchyLayout, {\n /**\n * Treemap layout generator. Adds 'method' and 'ratio' parameters\n * to configure the underlying tile method.\n */\n layout: function layout() {\n var x = treemap();\n x.ratio = function (_) {\n var t = x.tile();\n if (t.ratio) x.tile(t.ratio(_));\n };\n x.method = function (_) {\n if (hasOwnProperty(Tiles, _)) x.tile(Tiles[_]);else error('Unrecognized Treemap layout method: ' + _);\n };\n return x;\n },\n params: ['method', 'ratio', 'size', 'round', 'padding', 'paddingInner', 'paddingOuter', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft'],\n fields: Output\n});\nexport { Nest as nest, Pack as pack, Partition as partition, Stratify as stratify, Tree as tree, TreeLinks as treelinks, Treemap as treemap };","import roundNode from \"./treemap/round.js\";\nimport treemapDice from \"./treemap/dice.js\";\nexport default function () {\n var dx = 1,\n dy = 1,\n padding = 0,\n round = false;\n function partition(root) {\n var n = root.height + 1;\n root.x0 = root.y0 = padding;\n root.x1 = dx;\n root.y1 = dy / n;\n root.eachBefore(positionNode(dy, n));\n if (round) root.eachBefore(roundNode);\n return root;\n }\n function positionNode(dy, n) {\n return function (node) {\n if (node.children) {\n treemapDice(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n);\n }\n var x0 = node.x0,\n y0 = node.y0,\n x1 = node.x1 - padding,\n y1 = node.y1 - padding;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n };\n }\n partition.round = function (x) {\n return arguments.length ? (round = !!x, partition) : round;\n };\n partition.size = function (x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy];\n };\n partition.padding = function (x) {\n return arguments.length ? (padding = +x, partition) : padding;\n };\n return partition;\n}","export default function (parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n i,\n n = nodes.length,\n sum,\n sums = new Array(n + 1);\n for (sums[0] = sum = i = 0; i < n; ++i) {\n sums[i + 1] = sum += nodes[i].value;\n }\n partition(0, n, parent.value, x0, y0, x1, y1);\n function partition(i, j, value, x0, y0, x1, y1) {\n if (i >= j - 1) {\n var node = nodes[i];\n node.x0 = x0, node.y0 = y0;\n node.x1 = x1, node.y1 = y1;\n return;\n }\n var valueOffset = sums[i],\n valueTarget = value / 2 + valueOffset,\n k = i + 1,\n hi = j - 1;\n while (k < hi) {\n var mid = k + hi >>> 1;\n if (sums[mid] < valueTarget) k = mid + 1;else hi = mid;\n }\n if (valueTarget - sums[k - 1] < sums[k] - valueTarget && i + 1 < k) --k;\n var valueLeft = sums[k] - valueOffset,\n valueRight = value - valueLeft;\n if (x1 - x0 > y1 - y0) {\n var xk = value ? (x0 * valueRight + x1 * valueLeft) / value : x1;\n partition(i, k, valueLeft, x0, y0, xk, y1);\n partition(k, j, valueRight, xk, y0, x1, y1);\n } else {\n var yk = value ? (y0 * valueRight + y1 * valueLeft) / value : y1;\n partition(i, k, valueLeft, x0, y0, x1, yk);\n partition(k, j, valueRight, x0, yk, x1, y1);\n }\n }\n}","import dice from \"./dice.js\";\nimport slice from \"./slice.js\";\nexport default function (parent, x0, y0, x1, y1) {\n (parent.depth & 1 ? slice : dice)(parent, x0, y0, x1, y1);\n}","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { Marks, textMetrics } from 'vega-scenegraph';\nimport { canvas } from 'vega-canvas';\nimport { rederive, Transform } from 'vega-dataflow';\nimport { inherits, error, array, isFunction } from 'vega-util';\n\n// bit mask for getting first 2 bytes of alpha value\nvar ALPHA_MASK = 0xff000000;\nfunction baseBitmaps($, data) {\n var bitmap = $.bitmap();\n // when there is no base mark but data points are to be avoided\n (data || []).forEach(function (d) {\n return bitmap.set($(d.boundary[0]), $(d.boundary[3]));\n });\n return [bitmap, undefined];\n}\nfunction markBitmaps($, baseMark, avoidMarks, labelInside, isGroupArea) {\n // create canvas\n var width = $.width,\n height = $.height,\n border = labelInside || isGroupArea,\n context = canvas(width, height).getContext('2d'),\n baseMarkContext = canvas(width, height).getContext('2d'),\n strokeContext = border && canvas(width, height).getContext('2d');\n\n // render all marks to be avoided into canvas\n avoidMarks.forEach(function (items) {\n return draw(context, items, false);\n });\n draw(baseMarkContext, baseMark, false);\n if (border) {\n draw(strokeContext, baseMark, true);\n }\n\n // get canvas buffer, create bitmaps\n var buffer = getBuffer(context, width, height),\n baseMarkBuffer = getBuffer(baseMarkContext, width, height),\n strokeBuffer = border && getBuffer(strokeContext, width, height),\n layer1 = $.bitmap(),\n layer2 = border && $.bitmap();\n\n // populate bitmap layers\n var x, y, u, v, index, alpha, strokeAlpha, baseMarkAlpha;\n for (y = 0; y < height; ++y) {\n for (x = 0; x < width; ++x) {\n index = y * width + x;\n alpha = buffer[index] & ALPHA_MASK;\n baseMarkAlpha = baseMarkBuffer[index] & ALPHA_MASK;\n strokeAlpha = border && strokeBuffer[index] & ALPHA_MASK;\n if (alpha || strokeAlpha || baseMarkAlpha) {\n u = $(x);\n v = $(y);\n if (!isGroupArea && (alpha || baseMarkAlpha)) layer1.set(u, v); // update interior bitmap\n if (border && (alpha || strokeAlpha)) layer2.set(u, v); // update border bitmap\n }\n }\n }\n\n return [layer1, layer2];\n}\nfunction getBuffer(context, width, height) {\n return new Uint32Array(context.getImageData(0, 0, width, height).data.buffer);\n}\nfunction draw(context, items, interior) {\n if (!items.length) return;\n var type = items[0].mark.marktype;\n if (type === 'group') {\n items.forEach(function (group) {\n group.items.forEach(function (mark) {\n return draw(context, mark.items, interior);\n });\n });\n } else {\n Marks[type].draw(context, {\n items: interior ? items.map(prepare) : items\n });\n }\n}\n\n/**\n * Prepare item before drawing into canvas (setting stroke and opacity)\n * @param {object} source item to be prepared\n * @returns prepared item\n */\nfunction prepare(source) {\n var item = rederive(source, {});\n if (item.stroke && item.strokeOpacity !== 0 || item.fill && item.fillOpacity !== 0) {\n return _objectSpread(_objectSpread({}, item), {}, {\n strokeOpacity: 1,\n stroke: '#000',\n fillOpacity: 0\n });\n }\n return item;\n}\nvar DIV = 5,\n // bit shift from x, y index to bit vector array index\n MOD = 31,\n // bit mask for index lookup within a bit vector\n SIZE = 32,\n // individual bit vector size\n RIGHT0 = new Uint32Array(SIZE + 1),\n // left-anchored bit vectors, full -> 0\n RIGHT1 = new Uint32Array(SIZE + 1); // right-anchored bit vectors, 0 -> full\n\nRIGHT1[0] = 0;\nRIGHT0[0] = ~RIGHT1[0];\nfor (var i = 1; i <= SIZE; ++i) {\n RIGHT1[i] = RIGHT1[i - 1] << 1 | 1;\n RIGHT0[i] = ~RIGHT1[i];\n}\nfunction Bitmap(w, h) {\n var array = new Uint32Array(~~((w * h + SIZE) / SIZE));\n function _set(index, mask) {\n array[index] |= mask;\n }\n function _clear(index, mask) {\n array[index] &= mask;\n }\n return {\n array: array,\n get: function get(x, y) {\n var index = y * w + x;\n return array[index >>> DIV] & 1 << (index & MOD);\n },\n set: function set(x, y) {\n var index = y * w + x;\n _set(index >>> DIV, 1 << (index & MOD));\n },\n clear: function clear(x, y) {\n var index = y * w + x;\n _clear(index >>> DIV, ~(1 << (index & MOD)));\n },\n getRange: function getRange(x, y, x2, y2) {\n var r = y2,\n start,\n end,\n indexStart,\n indexEnd;\n for (; r >= y; --r) {\n start = r * w + x;\n end = r * w + x2;\n indexStart = start >>> DIV;\n indexEnd = end >>> DIV;\n if (indexStart === indexEnd) {\n if (array[indexStart] & RIGHT0[start & MOD] & RIGHT1[(end & MOD) + 1]) {\n return true;\n }\n } else {\n if (array[indexStart] & RIGHT0[start & MOD]) return true;\n if (array[indexEnd] & RIGHT1[(end & MOD) + 1]) return true;\n for (var _i = indexStart + 1; _i < indexEnd; ++_i) {\n if (array[_i]) return true;\n }\n }\n }\n return false;\n },\n setRange: function setRange(x, y, x2, y2) {\n var start, end, indexStart, indexEnd, i;\n for (; y <= y2; ++y) {\n start = y * w + x;\n end = y * w + x2;\n indexStart = start >>> DIV;\n indexEnd = end >>> DIV;\n if (indexStart === indexEnd) {\n _set(indexStart, RIGHT0[start & MOD] & RIGHT1[(end & MOD) + 1]);\n } else {\n _set(indexStart, RIGHT0[start & MOD]);\n _set(indexEnd, RIGHT1[(end & MOD) + 1]);\n for (i = indexStart + 1; i < indexEnd; ++i) _set(i, 0xffffffff);\n }\n }\n },\n clearRange: function clearRange(x, y, x2, y2) {\n var start, end, indexStart, indexEnd, i;\n for (; y <= y2; ++y) {\n start = y * w + x;\n end = y * w + x2;\n indexStart = start >>> DIV;\n indexEnd = end >>> DIV;\n if (indexStart === indexEnd) {\n _clear(indexStart, RIGHT1[start & MOD] | RIGHT0[(end & MOD) + 1]);\n } else {\n _clear(indexStart, RIGHT1[start & MOD]);\n _clear(indexEnd, RIGHT0[(end & MOD) + 1]);\n for (i = indexStart + 1; i < indexEnd; ++i) _clear(i, 0);\n }\n }\n },\n outOfBounds: function outOfBounds(x, y, x2, y2) {\n return x < 0 || y < 0 || y2 >= h || x2 >= w;\n }\n };\n}\nfunction scaler(width, height, padding) {\n var ratio = Math.max(1, Math.sqrt(width * height / 1e6)),\n w = ~~((width + 2 * padding + ratio) / ratio),\n h = ~~((height + 2 * padding + ratio) / ratio),\n scale = function scale(_) {\n return ~~((_ + padding) / ratio);\n };\n scale.invert = function (_) {\n return _ * ratio - padding;\n };\n scale.bitmap = function () {\n return Bitmap(w, h);\n };\n scale.ratio = ratio;\n scale.padding = padding;\n scale.width = width;\n scale.height = height;\n return scale;\n}\nfunction placeAreaLabelNaive($, bitmaps, avoidBaseMark, markIndex) {\n var width = $.width,\n height = $.height;\n\n // try to place a label within an input area mark\n return function (d) {\n var items = d.datum.datum.items[markIndex].items,\n // area points\n n = items.length,\n // number of points\n textHeight = d.datum.fontSize,\n // label width\n textWidth = textMetrics.width(d.datum, d.datum.text); // label height\n\n var maxAreaWidth = 0,\n x1,\n x2,\n y1,\n y2,\n x,\n y,\n areaWidth;\n\n // for each area sample point\n for (var _i2 = 0; _i2 < n; ++_i2) {\n x1 = items[_i2].x;\n y1 = items[_i2].y;\n x2 = items[_i2].x2 === undefined ? x1 : items[_i2].x2;\n y2 = items[_i2].y2 === undefined ? y1 : items[_i2].y2;\n x = (x1 + x2) / 2;\n y = (y1 + y2) / 2;\n areaWidth = Math.abs(x2 - x1 + y2 - y1);\n if (areaWidth >= maxAreaWidth) {\n maxAreaWidth = areaWidth;\n d.x = x;\n d.y = y;\n }\n }\n x = textWidth / 2;\n y = textHeight / 2;\n x1 = d.x - x;\n x2 = d.x + x;\n y1 = d.y - y;\n y2 = d.y + y;\n d.align = 'center';\n if (x1 < 0 && x2 <= width) {\n d.align = 'left';\n } else if (0 <= x1 && width < x2) {\n d.align = 'right';\n }\n d.baseline = 'middle';\n if (y1 < 0 && y2 <= height) {\n d.baseline = 'top';\n } else if (0 <= y1 && height < y2) {\n d.baseline = 'bottom';\n }\n return true;\n };\n}\nfunction outOfBounds(x, y, textWidth, textHeight, width, height) {\n var r = textWidth / 2;\n return x - r < 0 || x + r > width || y - (r = textHeight / 2) < 0 || y + r > height;\n}\nfunction collision($, x, y, textHeight, textWidth, h, bm0, bm1) {\n var w = textWidth * h / (textHeight * 2),\n x1 = $(x - w),\n x2 = $(x + w),\n y1 = $(y - (h = h / 2)),\n y2 = $(y + h);\n return bm0.outOfBounds(x1, y1, x2, y2) || bm0.getRange(x1, y1, x2, y2) || bm1 && bm1.getRange(x1, y1, x2, y2);\n}\nfunction placeAreaLabelReducedSearch($, bitmaps, avoidBaseMark, markIndex) {\n var width = $.width,\n height = $.height,\n bm0 = bitmaps[0],\n // where labels have been placed\n bm1 = bitmaps[1]; // area outlines\n\n function tryLabel(_x, _y, maxSize, textWidth, textHeight) {\n var x = $.invert(_x),\n y = $.invert(_y);\n var lo = maxSize,\n hi = height,\n mid;\n if (!outOfBounds(x, y, textWidth, textHeight, width, height) && !collision($, x, y, textHeight, textWidth, lo, bm0, bm1) && !collision($, x, y, textHeight, textWidth, textHeight, bm0, null)) {\n // if the label fits at the current sample point,\n // perform binary search to find the largest font size that fits\n while (hi - lo >= 1) {\n mid = (lo + hi) / 2;\n if (collision($, x, y, textHeight, textWidth, mid, bm0, bm1)) {\n hi = mid;\n } else {\n lo = mid;\n }\n }\n // place label if current lower bound exceeds prior max font size\n if (lo > maxSize) {\n return [x, y, lo, true];\n }\n }\n }\n\n // try to place a label within an input area mark\n return function (d) {\n var items = d.datum.datum.items[markIndex].items,\n // area points\n n = items.length,\n // number of points\n textHeight = d.datum.fontSize,\n // label width\n textWidth = textMetrics.width(d.datum, d.datum.text); // label height\n\n var maxSize = avoidBaseMark ? textHeight : 0,\n labelPlaced = false,\n labelPlaced2 = false,\n maxAreaWidth = 0,\n x1,\n x2,\n y1,\n y2,\n x,\n y,\n _x,\n _y,\n _x1,\n _xMid,\n _x2,\n _y1,\n _yMid,\n _y2,\n areaWidth,\n result,\n swapTmp;\n\n // for each area sample point\n for (var _i3 = 0; _i3 < n; ++_i3) {\n x1 = items[_i3].x;\n y1 = items[_i3].y;\n x2 = items[_i3].x2 === undefined ? x1 : items[_i3].x2;\n y2 = items[_i3].y2 === undefined ? y1 : items[_i3].y2;\n if (x1 > x2) {\n swapTmp = x1;\n x1 = x2;\n x2 = swapTmp;\n }\n if (y1 > y2) {\n swapTmp = y1;\n y1 = y2;\n y2 = swapTmp;\n }\n _x1 = $(x1);\n _x2 = $(x2);\n _xMid = ~~((_x1 + _x2) / 2);\n _y1 = $(y1);\n _y2 = $(y2);\n _yMid = ~~((_y1 + _y2) / 2);\n\n // search along the line from mid point between the 2 border to lower border\n for (_x = _xMid; _x >= _x1; --_x) {\n for (_y = _yMid; _y >= _y1; --_y) {\n result = tryLabel(_x, _y, maxSize, textWidth, textHeight);\n if (result) {\n var _result = result;\n var _result2 = _slicedToArray(_result, 4);\n d.x = _result2[0];\n d.y = _result2[1];\n maxSize = _result2[2];\n labelPlaced = _result2[3];\n }\n }\n }\n\n // search along the line from mid point between the 2 border to upper border\n for (_x = _xMid; _x <= _x2; ++_x) {\n for (_y = _yMid; _y <= _y2; ++_y) {\n result = tryLabel(_x, _y, maxSize, textWidth, textHeight);\n if (result) {\n var _result3 = result;\n var _result4 = _slicedToArray(_result3, 4);\n d.x = _result4[0];\n d.y = _result4[1];\n maxSize = _result4[2];\n labelPlaced = _result4[3];\n }\n }\n }\n\n // place label at slice center if not placed through other means\n // and if we're not avoiding overlap with other areas\n if (!labelPlaced && !avoidBaseMark) {\n // one span is zero, hence we can add\n areaWidth = Math.abs(x2 - x1 + y2 - y1);\n x = (x1 + x2) / 2;\n y = (y1 + y2) / 2;\n\n // place label if it fits and improves the max area width\n if (areaWidth >= maxAreaWidth && !outOfBounds(x, y, textWidth, textHeight, width, height) && !collision($, x, y, textHeight, textWidth, textHeight, bm0, null)) {\n maxAreaWidth = areaWidth;\n d.x = x;\n d.y = y;\n labelPlaced2 = true;\n }\n }\n }\n\n // record current label placement information, update label bitmap\n if (labelPlaced || labelPlaced2) {\n x = textWidth / 2;\n y = textHeight / 2;\n bm0.setRange($(d.x - x), $(d.y - y), $(d.x + x), $(d.y + y));\n d.align = 'center';\n d.baseline = 'middle';\n return true;\n } else {\n return false;\n }\n };\n}\n\n// pixel direction offsets for flood fill search\nvar X_DIR = [-1, -1, 1, 1];\nvar Y_DIR = [-1, 1, -1, 1];\nfunction placeAreaLabelFloodFill($, bitmaps, avoidBaseMark, markIndex) {\n var width = $.width,\n height = $.height,\n bm0 = bitmaps[0],\n // where labels have been placed\n bm1 = bitmaps[1],\n // area outlines\n bm2 = $.bitmap(); // flood-fill visitations\n\n // try to place a label within an input area mark\n return function (d) {\n var items = d.datum.datum.items[markIndex].items,\n // area points\n n = items.length,\n // number of points\n textHeight = d.datum.fontSize,\n // label width\n textWidth = textMetrics.width(d.datum, d.datum.text),\n // label height\n stack = []; // flood fill stack\n\n var maxSize = avoidBaseMark ? textHeight : 0,\n labelPlaced = false,\n labelPlaced2 = false,\n maxAreaWidth = 0,\n x1,\n x2,\n y1,\n y2,\n x,\n y,\n _x,\n _y,\n lo,\n hi,\n mid,\n areaWidth;\n\n // for each area sample point\n for (var _i4 = 0; _i4 < n; ++_i4) {\n x1 = items[_i4].x;\n y1 = items[_i4].y;\n x2 = items[_i4].x2 === undefined ? x1 : items[_i4].x2;\n y2 = items[_i4].y2 === undefined ? y1 : items[_i4].y2;\n\n // add scaled center point to stack\n stack.push([$((x1 + x2) / 2), $((y1 + y2) / 2)]);\n\n // perform flood fill, visit points\n while (stack.length) {\n // exit if point already marked\n var _stack$pop = stack.pop();\n var _stack$pop2 = _slicedToArray(_stack$pop, 2);\n _x = _stack$pop2[0];\n _y = _stack$pop2[1];\n if (bm0.get(_x, _y) || bm1.get(_x, _y) || bm2.get(_x, _y)) continue;\n\n // mark point in flood fill bitmap\n // add search points for all (in bound) directions\n bm2.set(_x, _y);\n for (var j = 0; j < 4; ++j) {\n x = _x + X_DIR[j];\n y = _y + Y_DIR[j];\n if (!bm2.outOfBounds(x, y, x, y)) stack.push([x, y]);\n }\n\n // unscale point back to x, y space\n x = $.invert(_x);\n y = $.invert(_y);\n lo = maxSize;\n hi = height; // TODO: make this bound smaller\n\n if (!outOfBounds(x, y, textWidth, textHeight, width, height) && !collision($, x, y, textHeight, textWidth, lo, bm0, bm1) && !collision($, x, y, textHeight, textWidth, textHeight, bm0, null)) {\n // if the label fits at the current sample point,\n // perform binary search to find the largest font size that fits\n while (hi - lo >= 1) {\n mid = (lo + hi) / 2;\n if (collision($, x, y, textHeight, textWidth, mid, bm0, bm1)) {\n hi = mid;\n } else {\n lo = mid;\n }\n }\n // place label if current lower bound exceeds prior max font size\n if (lo > maxSize) {\n d.x = x;\n d.y = y;\n maxSize = lo;\n labelPlaced = true;\n }\n }\n }\n\n // place label at slice center if not placed through other means\n // and if we're not avoiding overlap with other areas\n if (!labelPlaced && !avoidBaseMark) {\n // one span is zero, hence we can add\n areaWidth = Math.abs(x2 - x1 + y2 - y1);\n x = (x1 + x2) / 2;\n y = (y1 + y2) / 2;\n\n // place label if it fits and improves the max area width\n if (areaWidth >= maxAreaWidth && !outOfBounds(x, y, textWidth, textHeight, width, height) && !collision($, x, y, textHeight, textWidth, textHeight, bm0, null)) {\n maxAreaWidth = areaWidth;\n d.x = x;\n d.y = y;\n labelPlaced2 = true;\n }\n }\n }\n\n // record current label placement information, update label bitmap\n if (labelPlaced || labelPlaced2) {\n x = textWidth / 2;\n y = textHeight / 2;\n bm0.setRange($(d.x - x), $(d.y - y), $(d.x + x), $(d.y + y));\n d.align = 'center';\n d.baseline = 'middle';\n return true;\n } else {\n return false;\n }\n };\n}\nvar Aligns = ['right', 'center', 'left'],\n Baselines = ['bottom', 'middle', 'top'];\nfunction placeMarkLabel($, bitmaps, anchors, offsets) {\n var width = $.width,\n height = $.height,\n bm0 = bitmaps[0],\n bm1 = bitmaps[1],\n n = offsets.length;\n return function (d) {\n var _d$textWidth;\n var boundary = d.boundary,\n textHeight = d.datum.fontSize;\n\n // can not be placed if the mark is not visible in the graph bound\n if (boundary[2] < 0 || boundary[5] < 0 || boundary[0] > width || boundary[3] > height) {\n return false;\n }\n var textWidth = (_d$textWidth = d.textWidth) !== null && _d$textWidth !== void 0 ? _d$textWidth : 0,\n dx,\n dy,\n isInside,\n sizeFactor,\n insideFactor,\n x1,\n x2,\n y1,\n y2,\n xc,\n yc,\n _x1,\n _x2,\n _y1,\n _y2;\n\n // for each anchor and offset\n for (var _i5 = 0; _i5 < n; ++_i5) {\n dx = (anchors[_i5] & 0x3) - 1;\n dy = (anchors[_i5] >>> 0x2 & 0x3) - 1;\n isInside = dx === 0 && dy === 0 || offsets[_i5] < 0;\n sizeFactor = dx && dy ? Math.SQRT1_2 : 1;\n insideFactor = offsets[_i5] < 0 ? -1 : 1;\n x1 = boundary[1 + dx] + offsets[_i5] * dx * sizeFactor;\n yc = boundary[4 + dy] + insideFactor * textHeight * dy / 2 + offsets[_i5] * dy * sizeFactor;\n y1 = yc - textHeight / 2;\n y2 = yc + textHeight / 2;\n _x1 = $(x1);\n _y1 = $(y1);\n _y2 = $(y2);\n if (!textWidth) {\n // to avoid finding width of text label,\n if (!test(_x1, _x1, _y1, _y2, bm0, bm1, x1, x1, y1, y2, boundary, isInside)) {\n // skip this anchor/offset option if we fail to place a label with 1px width\n continue;\n } else {\n // Otherwise, find the label width\n textWidth = textMetrics.width(d.datum, d.datum.text);\n }\n }\n xc = x1 + insideFactor * textWidth * dx / 2;\n x1 = xc - textWidth / 2;\n x2 = xc + textWidth / 2;\n _x1 = $(x1);\n _x2 = $(x2);\n if (test(_x1, _x2, _y1, _y2, bm0, bm1, x1, x2, y1, y2, boundary, isInside)) {\n // place label if the position is placeable\n d.x = !dx ? xc : dx * insideFactor < 0 ? x2 : x1;\n d.y = !dy ? yc : dy * insideFactor < 0 ? y2 : y1;\n d.align = Aligns[dx * insideFactor + 1];\n d.baseline = Baselines[dy * insideFactor + 1];\n bm0.setRange(_x1, _y1, _x2, _y2);\n return true;\n }\n }\n return false;\n };\n}\n\n// Test if a label with the given dimensions can be added without overlap\nfunction test(_x1, _x2, _y1, _y2, bm0, bm1, x1, x2, y1, y2, boundary, isInside) {\n return !(bm0.outOfBounds(_x1, _y1, _x2, _y2) || (isInside && bm1 || bm0).getRange(_x1, _y1, _x2, _y2));\n}\n\n// 8-bit representation of anchors\nvar TOP = 0x0,\n MIDDLE = 0x4,\n BOTTOM = 0x8,\n LEFT = 0x0,\n CENTER = 0x1,\n RIGHT = 0x2;\n\n// Mapping from text anchor to number representation\nvar anchorCode = {\n 'top-left': TOP + LEFT,\n 'top': TOP + CENTER,\n 'top-right': TOP + RIGHT,\n 'left': MIDDLE + LEFT,\n 'middle': MIDDLE + CENTER,\n 'right': MIDDLE + RIGHT,\n 'bottom-left': BOTTOM + LEFT,\n 'bottom': BOTTOM + CENTER,\n 'bottom-right': BOTTOM + RIGHT\n};\nvar placeAreaLabel = {\n 'naive': placeAreaLabelNaive,\n 'reduced-search': placeAreaLabelReducedSearch,\n 'floodfill': placeAreaLabelFloodFill\n};\nfunction labelLayout(texts, size, compare, offset, anchor, avoidMarks, avoidBaseMark, lineAnchor, markIndex, padding, method) {\n // early exit for empty data\n if (!texts.length) return texts;\n var positions = Math.max(offset.length, anchor.length),\n offsets = getOffsets(offset, positions),\n anchors = getAnchors(anchor, positions),\n marktype = markType(texts[0].datum),\n grouptype = marktype === 'group' && texts[0].datum.items[markIndex].marktype,\n isGroupArea = grouptype === 'area',\n boundary = markBoundary(marktype, grouptype, lineAnchor, markIndex),\n infPadding = padding === null || padding === Infinity,\n isNaiveGroupArea = isGroupArea && method === 'naive';\n var maxTextWidth = -1,\n maxTextHeight = -1;\n\n // prepare text mark data for placing\n var data = texts.map(function (d) {\n var textWidth = infPadding ? textMetrics.width(d, d.text) : undefined;\n maxTextWidth = Math.max(maxTextWidth, textWidth);\n maxTextHeight = Math.max(maxTextHeight, d.fontSize);\n return {\n datum: d,\n opacity: 0,\n x: undefined,\n y: undefined,\n align: undefined,\n baseline: undefined,\n boundary: boundary(d),\n textWidth: textWidth\n };\n });\n padding = padding === null || padding === Infinity ? Math.max(maxTextWidth, maxTextHeight) + Math.max.apply(Math, _toConsumableArray(offset)) : padding;\n var $ = scaler(size[0], size[1], padding);\n var bitmaps;\n if (!isNaiveGroupArea) {\n // sort labels in priority order, if comparator is provided\n if (compare) {\n data.sort(function (a, b) {\n return compare(a.datum, b.datum);\n });\n }\n\n // flag indicating if label can be placed inside its base mark\n var labelInside = false;\n for (var _i6 = 0; _i6 < anchors.length && !labelInside; ++_i6) {\n // label inside if anchor is at center\n // label inside if offset to be inside the mark bound\n labelInside = anchors[_i6] === 0x5 || offsets[_i6] < 0;\n }\n\n // extract data information from base mark when base mark is to be avoided\n // base mark is implicitly avoided if it is a group area\n var baseMark = (marktype && avoidBaseMark || isGroupArea) && texts.map(function (d) {\n return d.datum;\n });\n\n // generate bitmaps for layout calculation\n bitmaps = avoidMarks.length || baseMark ? markBitmaps($, baseMark || [], avoidMarks, labelInside, isGroupArea) : baseBitmaps($, avoidBaseMark && data);\n }\n\n // generate label placement function\n var place = isGroupArea ? placeAreaLabel[method]($, bitmaps, avoidBaseMark, markIndex) : placeMarkLabel($, bitmaps, anchors, offsets);\n\n // place all labels\n data.forEach(function (d) {\n return d.opacity = +place(d);\n });\n return data;\n}\nfunction getOffsets(_, count) {\n var offsets = new Float64Array(count),\n n = _.length;\n for (var _i7 = 0; _i7 < n; ++_i7) offsets[_i7] = _[_i7] || 0;\n for (var _i8 = n; _i8 < count; ++_i8) offsets[_i8] = offsets[n - 1];\n return offsets;\n}\nfunction getAnchors(_, count) {\n var anchors = new Int8Array(count),\n n = _.length;\n for (var _i9 = 0; _i9 < n; ++_i9) anchors[_i9] |= anchorCode[_[_i9]];\n for (var _i10 = n; _i10 < count; ++_i10) anchors[_i10] = anchors[n - 1];\n return anchors;\n}\nfunction markType(item) {\n return item && item.mark && item.mark.marktype;\n}\n\n/**\n * Factory function for function for getting base mark boundary, depending\n * on mark and group type. When mark type is undefined, line or area: boundary\n * is the coordinate of each data point. When base mark is grouped line,\n * boundary is either at the start or end of the line depending on the\n * value of lineAnchor. Otherwise, use bounds of base mark.\n */\nfunction markBoundary(marktype, grouptype, lineAnchor, markIndex) {\n var xy = function xy(d) {\n return [d.x, d.x, d.x, d.y, d.y, d.y];\n };\n if (!marktype) {\n return xy; // no reactive geometry\n } else if (marktype === 'line' || marktype === 'area') {\n return function (d) {\n return xy(d.datum);\n };\n } else if (grouptype === 'line') {\n return function (d) {\n var items = d.datum.items[markIndex].items;\n return xy(items.length ? items[lineAnchor === 'start' ? 0 : items.length - 1] : {\n x: NaN,\n y: NaN\n });\n };\n } else {\n return function (d) {\n var b = d.datum.bounds;\n return [b.x1, (b.x1 + b.x2) / 2, b.x2, b.y1, (b.y1 + b.y2) / 2, b.y2];\n };\n }\n}\nvar Output = ['x', 'y', 'opacity', 'align', 'baseline'];\nvar Anchors = ['top-left', 'left', 'bottom-left', 'top', 'bottom', 'top-right', 'right', 'bottom-right'];\n\n/**\n * Compute text label layout to annotate marks.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array} params.size - The size of the layout, provided as a [width, height] array.\n * @param {function(*,*): number} [params.sort] - An optional\n * comparator function for sorting label data in priority order.\n * @param {Array} [params.anchor] - Label anchor points relative to the base mark bounding box.\n * The available options are 'top-left', 'left', 'bottom-left', 'top',\n * 'bottom', 'top-right', 'right', 'bottom-right', 'middle'.\n * @param {Array} [params.offset] - Label offsets (in pixels) from the base mark bounding box.\n * This parameter is parallel to the list of anchor points.\n * @param {number | null} [params.padding=0] - The amount (in pixels) that a label may exceed the layout size.\n * If this parameter is null, a label may exceed the layout size without any boundary.\n * @param {string} [params.lineAnchor='end'] - For group line mark labels only, indicates the anchor\n * position for labels. One of 'start' or 'end'.\n * @param {string} [params.markIndex=0] - For group mark labels only, an index indicating\n * which mark within the group should be labeled.\n * @param {Array} [params.avoidMarks] - A list of additional mark names for which the label\n * layout should avoid overlap.\n * @param {boolean} [params.avoidBaseMark=true] - Boolean flag indicating if labels should avoid\n * overlap with the underlying base mark being labeled.\n * @param {string} [params.method='naive'] - For area make labels only, a method for\n * place labels. One of 'naive', 'reduced-search', or 'floodfill'.\n * @param {Array} [params.as] - The output fields written by the transform.\n * The default is ['x', 'y', 'opacity', 'align', 'baseline'].\n */\nfunction Label(params) {\n Transform.call(this, null, params);\n}\nLabel.Definition = {\n type: 'Label',\n metadata: {\n modifies: true\n },\n params: [{\n name: 'size',\n type: 'number',\n array: true,\n length: 2,\n required: true\n }, {\n name: 'sort',\n type: 'compare'\n }, {\n name: 'anchor',\n type: 'string',\n array: true,\n default: Anchors\n }, {\n name: 'offset',\n type: 'number',\n array: true,\n default: [1]\n }, {\n name: 'padding',\n type: 'number',\n default: 0,\n null: true\n }, {\n name: 'lineAnchor',\n type: 'string',\n values: ['start', 'end'],\n default: 'end'\n }, {\n name: 'markIndex',\n type: 'number',\n default: 0\n }, {\n name: 'avoidBaseMark',\n type: 'boolean',\n default: true\n }, {\n name: 'avoidMarks',\n type: 'data',\n array: true\n }, {\n name: 'method',\n type: 'string',\n default: 'naive'\n }, {\n name: 'as',\n type: 'string',\n array: true,\n length: Output.length,\n default: Output\n }]\n};\ninherits(Label, Transform, {\n transform: function transform(_, pulse) {\n function modp(param) {\n var p = _[param];\n return isFunction(p) && pulse.modified(p.fields);\n }\n var mod = _.modified();\n if (!(mod || pulse.changed(pulse.ADD_REM) || modp('sort'))) return;\n if (!_.size || _.size.length !== 2) {\n error('Size parameter should be specified as a [width, height] array.');\n }\n var as = _.as || Output;\n\n // run label layout\n labelLayout(pulse.materialize(pulse.SOURCE).source || [], _.size, _.sort, array(_.offset == null ? 1 : _.offset), array(_.anchor || Anchors), _.avoidMarks || [], _.avoidBaseMark !== false, _.lineAnchor || 'end', _.markIndex || 0, _.padding === undefined ? 0 : _.padding, _.method || 'naive').forEach(function (l) {\n // write layout results to data stream\n var t = l.datum;\n t[as[0]] = l.x;\n t[as[1]] = l.y;\n t[as[2]] = l.opacity;\n t[as[3]] = l.align;\n t[as[4]] = l.baseline;\n });\n return pulse.reflow(mod).modifies(as);\n }\n});\nexport { Label as label };","import roundNode from \"./round.js\";\nimport squarify from \"./squarify.js\";\nimport { required } from \"../accessors.js\";\nimport constant, { constantZero } from \"../constant.js\";\nexport default function () {\n var tile = squarify,\n round = false,\n dx = 1,\n dy = 1,\n paddingStack = [0],\n paddingInner = constantZero,\n paddingTop = constantZero,\n paddingRight = constantZero,\n paddingBottom = constantZero,\n paddingLeft = constantZero;\n function treemap(root) {\n root.x0 = root.y0 = 0;\n root.x1 = dx;\n root.y1 = dy;\n root.eachBefore(positionNode);\n paddingStack = [0];\n if (round) root.eachBefore(roundNode);\n return root;\n }\n function positionNode(node) {\n var p = paddingStack[node.depth],\n x0 = node.x0 + p,\n y0 = node.y0 + p,\n x1 = node.x1 - p,\n y1 = node.y1 - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n if (node.children) {\n p = paddingStack[node.depth + 1] = paddingInner(node) / 2;\n x0 += paddingLeft(node) - p;\n y0 += paddingTop(node) - p;\n x1 -= paddingRight(node) - p;\n y1 -= paddingBottom(node) - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n tile(node, x0, y0, x1, y1);\n }\n }\n treemap.round = function (x) {\n return arguments.length ? (round = !!x, treemap) : round;\n };\n treemap.size = function (x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];\n };\n treemap.tile = function (x) {\n return arguments.length ? (tile = required(x), treemap) : tile;\n };\n treemap.padding = function (x) {\n return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();\n };\n treemap.paddingInner = function (x) {\n return arguments.length ? (paddingInner = typeof x === \"function\" ? x : constant(+x), treemap) : paddingInner;\n };\n treemap.paddingOuter = function (x) {\n return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();\n };\n treemap.paddingTop = function (x) {\n return arguments.length ? (paddingTop = typeof x === \"function\" ? x : constant(+x), treemap) : paddingTop;\n };\n treemap.paddingRight = function (x) {\n return arguments.length ? (paddingRight = typeof x === \"function\" ? x : constant(+x), treemap) : paddingRight;\n };\n treemap.paddingBottom = function (x) {\n return arguments.length ? (paddingBottom = typeof x === \"function\" ? x : constant(+x), treemap) : paddingBottom;\n };\n treemap.paddingLeft = function (x) {\n return arguments.length ? (paddingLeft = typeof x === \"function\" ? x : constant(+x), treemap) : paddingLeft;\n };\n return treemap;\n}","import { regressionLoess, sampleCurve, regressionConstant, regressionLinear, regressionLog, regressionExp, regressionPow, regressionQuad, regressionPoly } from 'vega-statistics';\nimport { Transform, ingest } from 'vega-dataflow';\nimport { inherits, accessorName, hasOwnProperty, error, extent } from 'vega-util';\nfunction partition(data, groupby) {\n var groups = [],\n get = function get(f) {\n return f(t);\n },\n map,\n i,\n n,\n t,\n k,\n g;\n\n // partition data points into stack groups\n if (groupby == null) {\n groups.push(data);\n } else {\n for (map = {}, i = 0, n = data.length; i < n; ++i) {\n t = data[i];\n k = groupby.map(get);\n g = map[k];\n if (!g) {\n map[k] = g = [];\n g.dims = k;\n groups.push(g);\n }\n g.push(t);\n }\n }\n return groups;\n}\n\n/**\n * Compute locally-weighted regression fits for one or more data groups.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.x - An accessor for the predictor data field.\n * @param {function(object): *} params.y - An accessor for the predicted data field.\n * @param {Array} [params.groupby] - An array of accessors to groupby.\n * @param {number} [params.bandwidth=0.3] - The loess bandwidth.\n */\nfunction Loess(params) {\n Transform.call(this, null, params);\n}\nLoess.Definition = {\n 'type': 'Loess',\n 'metadata': {\n 'generates': true\n },\n 'params': [{\n 'name': 'x',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'y',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'groupby',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'bandwidth',\n 'type': 'number',\n 'default': 0.3\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true\n }]\n};\ninherits(Loess, Transform, {\n transform: function transform(_, pulse) {\n var out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n if (!this.value || pulse.changed() || _.modified()) {\n var source = pulse.materialize(pulse.SOURCE).source,\n groups = partition(source, _.groupby),\n names = (_.groupby || []).map(accessorName),\n m = names.length,\n as = _.as || [accessorName(_.x), accessorName(_.y)],\n values = [];\n groups.forEach(function (g) {\n regressionLoess(g, _.x, _.y, _.bandwidth || 0.3).forEach(function (p) {\n var t = {};\n for (var i = 0; i < m; ++i) {\n t[names[i]] = g.dims[i];\n }\n t[as[0]] = p[0];\n t[as[1]] = p[1];\n values.push(ingest(t));\n });\n });\n if (this.value) out.rem = this.value;\n this.value = out.add = out.source = values;\n }\n return out;\n }\n});\nvar Methods = {\n constant: regressionConstant,\n linear: regressionLinear,\n log: regressionLog,\n exp: regressionExp,\n pow: regressionPow,\n quad: regressionQuad,\n poly: regressionPoly\n};\nvar degreesOfFreedom = function degreesOfFreedom(method, order) {\n return method === 'poly' ? order : method === 'quad' ? 2 : 1;\n};\n\n/**\n * Compute regression fits for one or more data groups.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.x - An accessor for the predictor data field.\n * @param {function(object): *} params.y - An accessor for the predicted data field.\n * @param {string} [params.method='linear'] - The regression method to apply.\n * @param {Array} [params.groupby] - An array of accessors to groupby.\n * @param {Array} [params.extent] - The domain extent over which to plot the regression line.\n * @param {number} [params.order=3] - The polynomial order. Only applies to the 'poly' method.\n */\nfunction Regression(params) {\n Transform.call(this, null, params);\n}\nRegression.Definition = {\n 'type': 'Regression',\n 'metadata': {\n 'generates': true\n },\n 'params': [{\n 'name': 'x',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'y',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'groupby',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'method',\n 'type': 'string',\n 'default': 'linear',\n 'values': Object.keys(Methods)\n }, {\n 'name': 'order',\n 'type': 'number',\n 'default': 3\n }, {\n 'name': 'extent',\n 'type': 'number',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'params',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true\n }]\n};\ninherits(Regression, Transform, {\n transform: function transform(_, pulse) {\n var out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n if (!this.value || pulse.changed() || _.modified()) {\n var source = pulse.materialize(pulse.SOURCE).source,\n groups = partition(source, _.groupby),\n names = (_.groupby || []).map(accessorName),\n method = _.method || 'linear',\n order = _.order == null ? 3 : _.order,\n dof = degreesOfFreedom(method, order),\n as = _.as || [accessorName(_.x), accessorName(_.y)],\n fit = Methods[method],\n values = [];\n var domain = _.extent;\n if (!hasOwnProperty(Methods, method)) {\n error('Invalid regression method: ' + method);\n }\n if (domain != null) {\n if (method === 'log' && domain[0] <= 0) {\n pulse.dataflow.warn('Ignoring extent with values <= 0 for log regression.');\n domain = null;\n }\n }\n groups.forEach(function (g) {\n var n = g.length;\n if (n <= dof) {\n pulse.dataflow.warn('Skipping regression with more parameters than data points.');\n return;\n }\n var model = fit(g, _.x, _.y, order);\n if (_.params) {\n // if parameter vectors requested return those\n values.push(ingest({\n keys: g.dims,\n coef: model.coef,\n rSquared: model.rSquared\n }));\n return;\n }\n var dom = domain || extent(g, _.x),\n add = function add(p) {\n var t = {};\n for (var i = 0; i < names.length; ++i) {\n t[names[i]] = g.dims[i];\n }\n t[as[0]] = p[0];\n t[as[1]] = p[1];\n values.push(ingest(t));\n };\n if (method === 'linear' || method === 'constant') {\n // for linear or constant regression we only need the end points\n dom.forEach(function (x) {\n return add([x, model.predict(x)]);\n });\n } else {\n // otherwise return trend line sample points\n sampleCurve(model.predict, dom, 25, 200).forEach(add);\n }\n });\n if (this.value) out.rem = this.value;\n this.value = out.add = out.source = values;\n }\n return out;\n }\n});\nexport { Loess as loess, Regression as regression };","export var epsilon = 1.1102230246251565e-16;\nexport var splitter = 134217729;\nexport var resulterrbound = (3 + 8 * epsilon) * epsilon;\n\n// fast_expansion_sum_zeroelim routine from oritinal code\nexport function sum(elen, e, flen, f, h) {\n var Q, Qnew, hh, bvirt;\n var enow = e[0];\n var fnow = f[0];\n var eindex = 0;\n var findex = 0;\n if (fnow > enow === fnow > -enow) {\n Q = enow;\n enow = e[++eindex];\n } else {\n Q = fnow;\n fnow = f[++findex];\n }\n var hindex = 0;\n if (eindex < elen && findex < flen) {\n if (fnow > enow === fnow > -enow) {\n Qnew = enow + Q;\n hh = Q - (Qnew - enow);\n enow = e[++eindex];\n } else {\n Qnew = fnow + Q;\n hh = Q - (Qnew - fnow);\n fnow = f[++findex];\n }\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n while (eindex < elen && findex < flen) {\n if (fnow > enow === fnow > -enow) {\n Qnew = Q + enow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (enow - bvirt);\n enow = e[++eindex];\n } else {\n Qnew = Q + fnow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n fnow = f[++findex];\n }\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n }\n while (eindex < elen) {\n Qnew = Q + enow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (enow - bvirt);\n enow = e[++eindex];\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n while (findex < flen) {\n Qnew = Q + fnow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n fnow = f[++findex];\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n if (Q !== 0 || hindex === 0) {\n h[hindex++] = Q;\n }\n return hindex;\n}\nexport function sum_three(alen, a, blen, b, clen, c, tmp, out) {\n return sum(sum(alen, a, blen, b, tmp), tmp, clen, c, out);\n}\n\n// scale_expansion_zeroelim routine from oritinal code\nexport function scale(elen, e, b, h) {\n var Q, sum, hh, product1, product0;\n var bvirt, c, ahi, alo, bhi, blo;\n c = splitter * b;\n bhi = c - (c - b);\n blo = b - bhi;\n var enow = e[0];\n Q = enow * b;\n c = splitter * enow;\n ahi = c - (c - enow);\n alo = enow - ahi;\n hh = alo * blo - (Q - ahi * bhi - alo * bhi - ahi * blo);\n var hindex = 0;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n for (var i = 1; i < elen; i++) {\n enow = e[i];\n product1 = enow * b;\n c = splitter * enow;\n ahi = c - (c - enow);\n alo = enow - ahi;\n product0 = alo * blo - (product1 - ahi * bhi - alo * bhi - ahi * blo);\n sum = Q + product0;\n bvirt = sum - Q;\n hh = Q - (sum - bvirt) + (product0 - bvirt);\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n Q = product1 + sum;\n hh = sum - (Q - product1);\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n if (Q !== 0 || hindex === 0) {\n h[hindex++] = Q;\n }\n return hindex;\n}\nexport function negate(elen, e) {\n for (var i = 0; i < elen; i++) e[i] = -e[i];\n return elen;\n}\nexport function estimate(elen, e) {\n var Q = e[0];\n for (var i = 1; i < elen; i++) Q += e[i];\n return Q;\n}\nexport function vec(n) {\n return new Float64Array(n);\n}","import { epsilon, splitter, resulterrbound, estimate, vec, sum } from './util.js';\nvar ccwerrboundA = (3 + 16 * epsilon) * epsilon;\nvar ccwerrboundB = (2 + 12 * epsilon) * epsilon;\nvar ccwerrboundC = (9 + 64 * epsilon) * epsilon * epsilon;\nvar B = vec(4);\nvar C1 = vec(8);\nvar C2 = vec(12);\nvar D = vec(16);\nvar u = vec(4);\nfunction orient2dadapt(ax, ay, bx, by, cx, cy, detsum) {\n var acxtail, acytail, bcxtail, bcytail;\n var bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;\n var acx = ax - cx;\n var bcx = bx - cx;\n var acy = ay - cy;\n var bcy = by - cy;\n s1 = acx * bcy;\n c = splitter * acx;\n ahi = c - (c - acx);\n alo = acx - ahi;\n c = splitter * bcy;\n bhi = c - (c - bcy);\n blo = bcy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acy * bcx;\n c = splitter * acy;\n ahi = c - (c - acy);\n alo = acy - ahi;\n c = splitter * bcx;\n bhi = c - (c - bcx);\n blo = bcx - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n B[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n B[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n B[2] = _j - (u3 - bvirt) + (_i - bvirt);\n B[3] = u3;\n var det = estimate(4, B);\n var errbound = ccwerrboundB * detsum;\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n bvirt = ax - acx;\n acxtail = ax - (acx + bvirt) + (bvirt - cx);\n bvirt = bx - bcx;\n bcxtail = bx - (bcx + bvirt) + (bvirt - cx);\n bvirt = ay - acy;\n acytail = ay - (acy + bvirt) + (bvirt - cy);\n bvirt = by - bcy;\n bcytail = by - (bcy + bvirt) + (bvirt - cy);\n if (acxtail === 0 && acytail === 0 && bcxtail === 0 && bcytail === 0) {\n return det;\n }\n errbound = ccwerrboundC * detsum + resulterrbound * Math.abs(det);\n det += acx * bcytail + bcy * acxtail - (acy * bcxtail + bcx * acytail);\n if (det >= errbound || -det >= errbound) return det;\n s1 = acxtail * bcy;\n c = splitter * acxtail;\n ahi = c - (c - acxtail);\n alo = acxtail - ahi;\n c = splitter * bcy;\n bhi = c - (c - bcy);\n blo = bcy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acytail * bcx;\n c = splitter * acytail;\n ahi = c - (c - acytail);\n alo = acytail - ahi;\n c = splitter * bcx;\n bhi = c - (c - bcx);\n blo = bcx - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n var C1len = sum(4, B, 4, u, C1);\n s1 = acx * bcytail;\n c = splitter * acx;\n ahi = c - (c - acx);\n alo = acx - ahi;\n c = splitter * bcytail;\n bhi = c - (c - bcytail);\n blo = bcytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acy * bcxtail;\n c = splitter * acy;\n ahi = c - (c - acy);\n alo = acy - ahi;\n c = splitter * bcxtail;\n bhi = c - (c - bcxtail);\n blo = bcxtail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n var C2len = sum(C1len, C1, 4, u, C2);\n s1 = acxtail * bcytail;\n c = splitter * acxtail;\n ahi = c - (c - acxtail);\n alo = acxtail - ahi;\n c = splitter * bcytail;\n bhi = c - (c - bcytail);\n blo = bcytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acytail * bcxtail;\n c = splitter * acytail;\n ahi = c - (c - acytail);\n alo = acytail - ahi;\n c = splitter * bcxtail;\n bhi = c - (c - bcxtail);\n blo = bcxtail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n var Dlen = sum(C2len, C2, 4, u, D);\n return D[Dlen - 1];\n}\nexport function orient2d(ax, ay, bx, by, cx, cy) {\n var detleft = (ay - cy) * (bx - cx);\n var detright = (ax - cx) * (by - cy);\n var det = detleft - detright;\n var detsum = Math.abs(detleft + detright);\n if (Math.abs(det) >= ccwerrboundA * detsum) return det;\n return -orient2dadapt(ax, ay, bx, by, cx, cy, detsum);\n}\nexport function orient2dfast(ax, ay, bx, by, cx, cy) {\n return (ay - cy) * (bx - cx) - (ax - cx) * (by - cy);\n}","import { epsilon, splitter, resulterrbound, estimate, vec, sum, scale } from './util.js';\nvar o3derrboundA = (7 + 56 * epsilon) * epsilon;\nvar o3derrboundB = (3 + 28 * epsilon) * epsilon;\nvar o3derrboundC = (26 + 288 * epsilon) * epsilon * epsilon;\nvar bc = vec(4);\nvar ca = vec(4);\nvar ab = vec(4);\nvar at_b = vec(4);\nvar at_c = vec(4);\nvar bt_c = vec(4);\nvar bt_a = vec(4);\nvar ct_a = vec(4);\nvar ct_b = vec(4);\nvar bct = vec(8);\nvar cat = vec(8);\nvar abt = vec(8);\nvar u = vec(4);\nvar _8 = vec(8);\nvar _8b = vec(8);\nvar _16 = vec(8);\nvar _12 = vec(12);\nvar fin = vec(192);\nvar fin2 = vec(192);\nfunction finadd(finlen, alen, a) {\n finlen = sum(finlen, fin, alen, a, fin2);\n var tmp = fin;\n fin = fin2;\n fin2 = tmp;\n return finlen;\n}\nfunction tailinit(xtail, ytail, ax, ay, bx, by, a, b) {\n var bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, t1, t0, u3, negate;\n if (xtail === 0) {\n if (ytail === 0) {\n a[0] = 0;\n b[0] = 0;\n return 1;\n } else {\n negate = -ytail;\n s1 = negate * ax;\n c = splitter * negate;\n ahi = c - (c - negate);\n alo = negate - ahi;\n c = splitter * ax;\n bhi = c - (c - ax);\n blo = ax - bhi;\n a[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n a[1] = s1;\n s1 = ytail * bx;\n c = splitter * ytail;\n ahi = c - (c - ytail);\n alo = ytail - ahi;\n c = splitter * bx;\n bhi = c - (c - bx);\n blo = bx - bhi;\n b[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n b[1] = s1;\n return 2;\n }\n } else {\n if (ytail === 0) {\n s1 = xtail * ay;\n c = splitter * xtail;\n ahi = c - (c - xtail);\n alo = xtail - ahi;\n c = splitter * ay;\n bhi = c - (c - ay);\n blo = ay - bhi;\n a[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n a[1] = s1;\n negate = -xtail;\n s1 = negate * by;\n c = splitter * negate;\n ahi = c - (c - negate);\n alo = negate - ahi;\n c = splitter * by;\n bhi = c - (c - by);\n blo = by - bhi;\n b[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n b[1] = s1;\n return 2;\n } else {\n s1 = xtail * ay;\n c = splitter * xtail;\n ahi = c - (c - xtail);\n alo = xtail - ahi;\n c = splitter * ay;\n bhi = c - (c - ay);\n blo = ay - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = ytail * ax;\n c = splitter * ytail;\n ahi = c - (c - ytail);\n alo = ytail - ahi;\n c = splitter * ax;\n bhi = c - (c - ax);\n blo = ax - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n a[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n a[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n a[2] = _j - (u3 - bvirt) + (_i - bvirt);\n a[3] = u3;\n s1 = ytail * bx;\n c = splitter * ytail;\n ahi = c - (c - ytail);\n alo = ytail - ahi;\n c = splitter * bx;\n bhi = c - (c - bx);\n blo = bx - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = xtail * by;\n c = splitter * xtail;\n ahi = c - (c - xtail);\n alo = xtail - ahi;\n c = splitter * by;\n bhi = c - (c - by);\n blo = by - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n b[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n b[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n b[2] = _j - (u3 - bvirt) + (_i - bvirt);\n b[3] = u3;\n return 4;\n }\n }\n}\nfunction tailadd(finlen, a, b, k, z) {\n var bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, u3;\n s1 = a * b;\n c = splitter * a;\n ahi = c - (c - a);\n alo = a - ahi;\n c = splitter * b;\n bhi = c - (c - b);\n blo = b - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n c = splitter * k;\n bhi = c - (c - k);\n blo = k - bhi;\n _i = s0 * k;\n c = splitter * s0;\n ahi = c - (c - s0);\n alo = s0 - ahi;\n u[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo);\n _j = s1 * k;\n c = splitter * s1;\n ahi = c - (c - s1);\n alo = s1 - ahi;\n _0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo);\n _k = _i + _0;\n bvirt = _k - _i;\n u[1] = _i - (_k - bvirt) + (_0 - bvirt);\n u3 = _j + _k;\n u[2] = _k - (u3 - _j);\n u[3] = u3;\n finlen = finadd(finlen, 4, u);\n if (z !== 0) {\n c = splitter * z;\n bhi = c - (c - z);\n blo = z - bhi;\n _i = s0 * z;\n c = splitter * s0;\n ahi = c - (c - s0);\n alo = s0 - ahi;\n u[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo);\n _j = s1 * z;\n c = splitter * s1;\n ahi = c - (c - s1);\n alo = s1 - ahi;\n _0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo);\n _k = _i + _0;\n bvirt = _k - _i;\n u[1] = _i - (_k - bvirt) + (_0 - bvirt);\n u3 = _j + _k;\n u[2] = _k - (u3 - _j);\n u[3] = u3;\n finlen = finadd(finlen, 4, u);\n }\n return finlen;\n}\nfunction orient3dadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, permanent) {\n var finlen;\n var adxtail, bdxtail, cdxtail;\n var adytail, bdytail, cdytail;\n var adztail, bdztail, cdztail;\n var bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, t1, t0, u3;\n var adx = ax - dx;\n var bdx = bx - dx;\n var cdx = cx - dx;\n var ady = ay - dy;\n var bdy = by - dy;\n var cdy = cy - dy;\n var adz = az - dz;\n var bdz = bz - dz;\n var cdz = cz - dz;\n s1 = bdx * cdy;\n c = splitter * bdx;\n ahi = c - (c - bdx);\n alo = bdx - ahi;\n c = splitter * cdy;\n bhi = c - (c - cdy);\n blo = cdy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cdx * bdy;\n c = splitter * cdx;\n ahi = c - (c - cdx);\n alo = cdx - ahi;\n c = splitter * bdy;\n bhi = c - (c - bdy);\n blo = bdy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n bc[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n bc[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n bc[2] = _j - (u3 - bvirt) + (_i - bvirt);\n bc[3] = u3;\n s1 = cdx * ady;\n c = splitter * cdx;\n ahi = c - (c - cdx);\n alo = cdx - ahi;\n c = splitter * ady;\n bhi = c - (c - ady);\n blo = ady - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = adx * cdy;\n c = splitter * adx;\n ahi = c - (c - adx);\n alo = adx - ahi;\n c = splitter * cdy;\n bhi = c - (c - cdy);\n blo = cdy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ca[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ca[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ca[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ca[3] = u3;\n s1 = adx * bdy;\n c = splitter * adx;\n ahi = c - (c - adx);\n alo = adx - ahi;\n c = splitter * bdy;\n bhi = c - (c - bdy);\n blo = bdy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bdx * ady;\n c = splitter * bdx;\n ahi = c - (c - bdx);\n alo = bdx - ahi;\n c = splitter * ady;\n bhi = c - (c - ady);\n blo = ady - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ab[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ab[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ab[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ab[3] = u3;\n finlen = sum(sum(scale(4, bc, adz, _8), _8, scale(4, ca, bdz, _8b), _8b, _16), _16, scale(4, ab, cdz, _8), _8, fin);\n var det = estimate(finlen, fin);\n var errbound = o3derrboundB * permanent;\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n bvirt = ax - adx;\n adxtail = ax - (adx + bvirt) + (bvirt - dx);\n bvirt = bx - bdx;\n bdxtail = bx - (bdx + bvirt) + (bvirt - dx);\n bvirt = cx - cdx;\n cdxtail = cx - (cdx + bvirt) + (bvirt - dx);\n bvirt = ay - ady;\n adytail = ay - (ady + bvirt) + (bvirt - dy);\n bvirt = by - bdy;\n bdytail = by - (bdy + bvirt) + (bvirt - dy);\n bvirt = cy - cdy;\n cdytail = cy - (cdy + bvirt) + (bvirt - dy);\n bvirt = az - adz;\n adztail = az - (adz + bvirt) + (bvirt - dz);\n bvirt = bz - bdz;\n bdztail = bz - (bdz + bvirt) + (bvirt - dz);\n bvirt = cz - cdz;\n cdztail = cz - (cdz + bvirt) + (bvirt - dz);\n if (adxtail === 0 && bdxtail === 0 && cdxtail === 0 && adytail === 0 && bdytail === 0 && cdytail === 0 && adztail === 0 && bdztail === 0 && cdztail === 0) {\n return det;\n }\n errbound = o3derrboundC * permanent + resulterrbound * Math.abs(det);\n det += adz * (bdx * cdytail + cdy * bdxtail - (bdy * cdxtail + cdx * bdytail)) + adztail * (bdx * cdy - bdy * cdx) + bdz * (cdx * adytail + ady * cdxtail - (cdy * adxtail + adx * cdytail)) + bdztail * (cdx * ady - cdy * adx) + cdz * (adx * bdytail + bdy * adxtail - (ady * bdxtail + bdx * adytail)) + cdztail * (adx * bdy - ady * bdx);\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n var at_len = tailinit(adxtail, adytail, bdx, bdy, cdx, cdy, at_b, at_c);\n var bt_len = tailinit(bdxtail, bdytail, cdx, cdy, adx, ady, bt_c, bt_a);\n var ct_len = tailinit(cdxtail, cdytail, adx, ady, bdx, bdy, ct_a, ct_b);\n var bctlen = sum(bt_len, bt_c, ct_len, ct_b, bct);\n finlen = finadd(finlen, scale(bctlen, bct, adz, _16), _16);\n var catlen = sum(ct_len, ct_a, at_len, at_c, cat);\n finlen = finadd(finlen, scale(catlen, cat, bdz, _16), _16);\n var abtlen = sum(at_len, at_b, bt_len, bt_a, abt);\n finlen = finadd(finlen, scale(abtlen, abt, cdz, _16), _16);\n if (adztail !== 0) {\n finlen = finadd(finlen, scale(4, bc, adztail, _12), _12);\n finlen = finadd(finlen, scale(bctlen, bct, adztail, _16), _16);\n }\n if (bdztail !== 0) {\n finlen = finadd(finlen, scale(4, ca, bdztail, _12), _12);\n finlen = finadd(finlen, scale(catlen, cat, bdztail, _16), _16);\n }\n if (cdztail !== 0) {\n finlen = finadd(finlen, scale(4, ab, cdztail, _12), _12);\n finlen = finadd(finlen, scale(abtlen, abt, cdztail, _16), _16);\n }\n if (adxtail !== 0) {\n if (bdytail !== 0) {\n finlen = tailadd(finlen, adxtail, bdytail, cdz, cdztail);\n }\n if (cdytail !== 0) {\n finlen = tailadd(finlen, -adxtail, cdytail, bdz, bdztail);\n }\n }\n if (bdxtail !== 0) {\n if (cdytail !== 0) {\n finlen = tailadd(finlen, bdxtail, cdytail, adz, adztail);\n }\n if (adytail !== 0) {\n finlen = tailadd(finlen, -bdxtail, adytail, cdz, cdztail);\n }\n }\n if (cdxtail !== 0) {\n if (adytail !== 0) {\n finlen = tailadd(finlen, cdxtail, adytail, bdz, bdztail);\n }\n if (bdytail !== 0) {\n finlen = tailadd(finlen, -cdxtail, bdytail, adz, adztail);\n }\n }\n return fin[finlen - 1];\n}\nexport function orient3d(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz) {\n var adx = ax - dx;\n var bdx = bx - dx;\n var cdx = cx - dx;\n var ady = ay - dy;\n var bdy = by - dy;\n var cdy = cy - dy;\n var adz = az - dz;\n var bdz = bz - dz;\n var cdz = cz - dz;\n var bdxcdy = bdx * cdy;\n var cdxbdy = cdx * bdy;\n var cdxady = cdx * ady;\n var adxcdy = adx * cdy;\n var adxbdy = adx * bdy;\n var bdxady = bdx * ady;\n var det = adz * (bdxcdy - cdxbdy) + bdz * (cdxady - adxcdy) + cdz * (adxbdy - bdxady);\n var permanent = (Math.abs(bdxcdy) + Math.abs(cdxbdy)) * Math.abs(adz) + (Math.abs(cdxady) + Math.abs(adxcdy)) * Math.abs(bdz) + (Math.abs(adxbdy) + Math.abs(bdxady)) * Math.abs(cdz);\n var errbound = o3derrboundA * permanent;\n if (det > errbound || -det > errbound) {\n return det;\n }\n return orient3dadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, permanent);\n}\nexport function orient3dfast(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz) {\n var adx = ax - dx;\n var bdx = bx - dx;\n var cdx = cx - dx;\n var ady = ay - dy;\n var bdy = by - dy;\n var cdy = cy - dy;\n var adz = az - dz;\n var bdz = bz - dz;\n var cdz = cz - dz;\n return adx * (bdy * cdz - bdz * cdy) + bdx * (cdy * adz - cdz * ady) + cdx * (ady * bdz - adz * bdy);\n}","import { epsilon, splitter, resulterrbound, estimate, vec, sum, sum_three, scale } from './util.js';\nvar iccerrboundA = (10 + 96 * epsilon) * epsilon;\nvar iccerrboundB = (4 + 48 * epsilon) * epsilon;\nvar iccerrboundC = (44 + 576 * epsilon) * epsilon * epsilon;\nvar bc = vec(4);\nvar ca = vec(4);\nvar ab = vec(4);\nvar aa = vec(4);\nvar bb = vec(4);\nvar cc = vec(4);\nvar u = vec(4);\nvar v = vec(4);\nvar axtbc = vec(8);\nvar aytbc = vec(8);\nvar bxtca = vec(8);\nvar bytca = vec(8);\nvar cxtab = vec(8);\nvar cytab = vec(8);\nvar abt = vec(8);\nvar bct = vec(8);\nvar cat = vec(8);\nvar abtt = vec(4);\nvar bctt = vec(4);\nvar catt = vec(4);\nvar _8 = vec(8);\nvar _16 = vec(16);\nvar _16b = vec(16);\nvar _16c = vec(16);\nvar _32 = vec(32);\nvar _32b = vec(32);\nvar _48 = vec(48);\nvar _64 = vec(64);\nvar fin = vec(1152);\nvar fin2 = vec(1152);\nfunction finadd(finlen, a, alen) {\n finlen = sum(finlen, fin, a, alen, fin2);\n var tmp = fin;\n fin = fin2;\n fin2 = tmp;\n return finlen;\n}\nfunction incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent) {\n var finlen;\n var adxtail, bdxtail, cdxtail, adytail, bdytail, cdytail;\n var axtbclen, aytbclen, bxtcalen, bytcalen, cxtablen, cytablen;\n var abtlen, bctlen, catlen;\n var abttlen, bcttlen, cattlen;\n var n1, n0;\n var bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;\n var adx = ax - dx;\n var bdx = bx - dx;\n var cdx = cx - dx;\n var ady = ay - dy;\n var bdy = by - dy;\n var cdy = cy - dy;\n s1 = bdx * cdy;\n c = splitter * bdx;\n ahi = c - (c - bdx);\n alo = bdx - ahi;\n c = splitter * cdy;\n bhi = c - (c - cdy);\n blo = cdy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cdx * bdy;\n c = splitter * cdx;\n ahi = c - (c - cdx);\n alo = cdx - ahi;\n c = splitter * bdy;\n bhi = c - (c - bdy);\n blo = bdy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n bc[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n bc[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n bc[2] = _j - (u3 - bvirt) + (_i - bvirt);\n bc[3] = u3;\n s1 = cdx * ady;\n c = splitter * cdx;\n ahi = c - (c - cdx);\n alo = cdx - ahi;\n c = splitter * ady;\n bhi = c - (c - ady);\n blo = ady - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = adx * cdy;\n c = splitter * adx;\n ahi = c - (c - adx);\n alo = adx - ahi;\n c = splitter * cdy;\n bhi = c - (c - cdy);\n blo = cdy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ca[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ca[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ca[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ca[3] = u3;\n s1 = adx * bdy;\n c = splitter * adx;\n ahi = c - (c - adx);\n alo = adx - ahi;\n c = splitter * bdy;\n bhi = c - (c - bdy);\n blo = bdy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bdx * ady;\n c = splitter * bdx;\n ahi = c - (c - bdx);\n alo = bdx - ahi;\n c = splitter * ady;\n bhi = c - (c - ady);\n blo = ady - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ab[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ab[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ab[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ab[3] = u3;\n finlen = sum(sum(sum(scale(scale(4, bc, adx, _8), _8, adx, _16), _16, scale(scale(4, bc, ady, _8), _8, ady, _16b), _16b, _32), _32, sum(scale(scale(4, ca, bdx, _8), _8, bdx, _16), _16, scale(scale(4, ca, bdy, _8), _8, bdy, _16b), _16b, _32b), _32b, _64), _64, sum(scale(scale(4, ab, cdx, _8), _8, cdx, _16), _16, scale(scale(4, ab, cdy, _8), _8, cdy, _16b), _16b, _32), _32, fin);\n var det = estimate(finlen, fin);\n var errbound = iccerrboundB * permanent;\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n bvirt = ax - adx;\n adxtail = ax - (adx + bvirt) + (bvirt - dx);\n bvirt = ay - ady;\n adytail = ay - (ady + bvirt) + (bvirt - dy);\n bvirt = bx - bdx;\n bdxtail = bx - (bdx + bvirt) + (bvirt - dx);\n bvirt = by - bdy;\n bdytail = by - (bdy + bvirt) + (bvirt - dy);\n bvirt = cx - cdx;\n cdxtail = cx - (cdx + bvirt) + (bvirt - dx);\n bvirt = cy - cdy;\n cdytail = cy - (cdy + bvirt) + (bvirt - dy);\n if (adxtail === 0 && bdxtail === 0 && cdxtail === 0 && adytail === 0 && bdytail === 0 && cdytail === 0) {\n return det;\n }\n errbound = iccerrboundC * permanent + resulterrbound * Math.abs(det);\n det += (adx * adx + ady * ady) * (bdx * cdytail + cdy * bdxtail - (bdy * cdxtail + cdx * bdytail)) + 2 * (adx * adxtail + ady * adytail) * (bdx * cdy - bdy * cdx) + ((bdx * bdx + bdy * bdy) * (cdx * adytail + ady * cdxtail - (cdy * adxtail + adx * cdytail)) + 2 * (bdx * bdxtail + bdy * bdytail) * (cdx * ady - cdy * adx)) + ((cdx * cdx + cdy * cdy) * (adx * bdytail + bdy * adxtail - (ady * bdxtail + bdx * adytail)) + 2 * (cdx * cdxtail + cdy * cdytail) * (adx * bdy - ady * bdx));\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n if (bdxtail !== 0 || bdytail !== 0 || cdxtail !== 0 || cdytail !== 0) {\n s1 = adx * adx;\n c = splitter * adx;\n ahi = c - (c - adx);\n alo = adx - ahi;\n s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo);\n t1 = ady * ady;\n c = splitter * ady;\n ahi = c - (c - ady);\n alo = ady - ahi;\n t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo);\n _i = s0 + t0;\n bvirt = _i - s0;\n aa[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n aa[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n aa[2] = _j - (u3 - bvirt) + (_i - bvirt);\n aa[3] = u3;\n }\n if (cdxtail !== 0 || cdytail !== 0 || adxtail !== 0 || adytail !== 0) {\n s1 = bdx * bdx;\n c = splitter * bdx;\n ahi = c - (c - bdx);\n alo = bdx - ahi;\n s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo);\n t1 = bdy * bdy;\n c = splitter * bdy;\n ahi = c - (c - bdy);\n alo = bdy - ahi;\n t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo);\n _i = s0 + t0;\n bvirt = _i - s0;\n bb[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n bb[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n bb[2] = _j - (u3 - bvirt) + (_i - bvirt);\n bb[3] = u3;\n }\n if (adxtail !== 0 || adytail !== 0 || bdxtail !== 0 || bdytail !== 0) {\n s1 = cdx * cdx;\n c = splitter * cdx;\n ahi = c - (c - cdx);\n alo = cdx - ahi;\n s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo);\n t1 = cdy * cdy;\n c = splitter * cdy;\n ahi = c - (c - cdy);\n alo = cdy - ahi;\n t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo);\n _i = s0 + t0;\n bvirt = _i - s0;\n cc[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n cc[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n cc[2] = _j - (u3 - bvirt) + (_i - bvirt);\n cc[3] = u3;\n }\n if (adxtail !== 0) {\n axtbclen = scale(4, bc, adxtail, axtbc);\n finlen = finadd(finlen, sum_three(scale(axtbclen, axtbc, 2 * adx, _16), _16, scale(scale(4, cc, adxtail, _8), _8, bdy, _16b), _16b, scale(scale(4, bb, adxtail, _8), _8, -cdy, _16c), _16c, _32, _48), _48);\n }\n if (adytail !== 0) {\n aytbclen = scale(4, bc, adytail, aytbc);\n finlen = finadd(finlen, sum_three(scale(aytbclen, aytbc, 2 * ady, _16), _16, scale(scale(4, bb, adytail, _8), _8, cdx, _16b), _16b, scale(scale(4, cc, adytail, _8), _8, -bdx, _16c), _16c, _32, _48), _48);\n }\n if (bdxtail !== 0) {\n bxtcalen = scale(4, ca, bdxtail, bxtca);\n finlen = finadd(finlen, sum_three(scale(bxtcalen, bxtca, 2 * bdx, _16), _16, scale(scale(4, aa, bdxtail, _8), _8, cdy, _16b), _16b, scale(scale(4, cc, bdxtail, _8), _8, -ady, _16c), _16c, _32, _48), _48);\n }\n if (bdytail !== 0) {\n bytcalen = scale(4, ca, bdytail, bytca);\n finlen = finadd(finlen, sum_three(scale(bytcalen, bytca, 2 * bdy, _16), _16, scale(scale(4, cc, bdytail, _8), _8, adx, _16b), _16b, scale(scale(4, aa, bdytail, _8), _8, -cdx, _16c), _16c, _32, _48), _48);\n }\n if (cdxtail !== 0) {\n cxtablen = scale(4, ab, cdxtail, cxtab);\n finlen = finadd(finlen, sum_three(scale(cxtablen, cxtab, 2 * cdx, _16), _16, scale(scale(4, bb, cdxtail, _8), _8, ady, _16b), _16b, scale(scale(4, aa, cdxtail, _8), _8, -bdy, _16c), _16c, _32, _48), _48);\n }\n if (cdytail !== 0) {\n cytablen = scale(4, ab, cdytail, cytab);\n finlen = finadd(finlen, sum_three(scale(cytablen, cytab, 2 * cdy, _16), _16, scale(scale(4, aa, cdytail, _8), _8, bdx, _16b), _16b, scale(scale(4, bb, cdytail, _8), _8, -adx, _16c), _16c, _32, _48), _48);\n }\n if (adxtail !== 0 || adytail !== 0) {\n if (bdxtail !== 0 || bdytail !== 0 || cdxtail !== 0 || cdytail !== 0) {\n s1 = bdxtail * cdy;\n c = splitter * bdxtail;\n ahi = c - (c - bdxtail);\n alo = bdxtail - ahi;\n c = splitter * cdy;\n bhi = c - (c - cdy);\n blo = cdy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bdx * cdytail;\n c = splitter * bdx;\n ahi = c - (c - bdx);\n alo = bdx - ahi;\n c = splitter * cdytail;\n bhi = c - (c - cdytail);\n blo = cdytail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 + t0;\n bvirt = _i - s0;\n u[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n u[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n s1 = cdxtail * -bdy;\n c = splitter * cdxtail;\n ahi = c - (c - cdxtail);\n alo = cdxtail - ahi;\n c = splitter * -bdy;\n bhi = c - (c - -bdy);\n blo = -bdy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cdx * -bdytail;\n c = splitter * cdx;\n ahi = c - (c - cdx);\n alo = cdx - ahi;\n c = splitter * -bdytail;\n bhi = c - (c - -bdytail);\n blo = -bdytail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 + t0;\n bvirt = _i - s0;\n v[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n v[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n v[2] = _j - (u3 - bvirt) + (_i - bvirt);\n v[3] = u3;\n bctlen = sum(4, u, 4, v, bct);\n s1 = bdxtail * cdytail;\n c = splitter * bdxtail;\n ahi = c - (c - bdxtail);\n alo = bdxtail - ahi;\n c = splitter * cdytail;\n bhi = c - (c - cdytail);\n blo = cdytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cdxtail * bdytail;\n c = splitter * cdxtail;\n ahi = c - (c - cdxtail);\n alo = cdxtail - ahi;\n c = splitter * bdytail;\n bhi = c - (c - bdytail);\n blo = bdytail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n bctt[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n bctt[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n bctt[2] = _j - (u3 - bvirt) + (_i - bvirt);\n bctt[3] = u3;\n bcttlen = 4;\n } else {\n bct[0] = 0;\n bctlen = 1;\n bctt[0] = 0;\n bcttlen = 1;\n }\n if (adxtail !== 0) {\n var len = scale(bctlen, bct, adxtail, _16c);\n finlen = finadd(finlen, sum(scale(axtbclen, axtbc, adxtail, _16), _16, scale(len, _16c, 2 * adx, _32), _32, _48), _48);\n var len2 = scale(bcttlen, bctt, adxtail, _8);\n finlen = finadd(finlen, sum_three(scale(len2, _8, 2 * adx, _16), _16, scale(len2, _8, adxtail, _16b), _16b, scale(len, _16c, adxtail, _32), _32, _32b, _64), _64);\n if (bdytail !== 0) {\n finlen = finadd(finlen, scale(scale(4, cc, adxtail, _8), _8, bdytail, _16), _16);\n }\n if (cdytail !== 0) {\n finlen = finadd(finlen, scale(scale(4, bb, -adxtail, _8), _8, cdytail, _16), _16);\n }\n }\n if (adytail !== 0) {\n var _len = scale(bctlen, bct, adytail, _16c);\n finlen = finadd(finlen, sum(scale(aytbclen, aytbc, adytail, _16), _16, scale(_len, _16c, 2 * ady, _32), _32, _48), _48);\n var _len2 = scale(bcttlen, bctt, adytail, _8);\n finlen = finadd(finlen, sum_three(scale(_len2, _8, 2 * ady, _16), _16, scale(_len2, _8, adytail, _16b), _16b, scale(_len, _16c, adytail, _32), _32, _32b, _64), _64);\n }\n }\n if (bdxtail !== 0 || bdytail !== 0) {\n if (cdxtail !== 0 || cdytail !== 0 || adxtail !== 0 || adytail !== 0) {\n s1 = cdxtail * ady;\n c = splitter * cdxtail;\n ahi = c - (c - cdxtail);\n alo = cdxtail - ahi;\n c = splitter * ady;\n bhi = c - (c - ady);\n blo = ady - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cdx * adytail;\n c = splitter * cdx;\n ahi = c - (c - cdx);\n alo = cdx - ahi;\n c = splitter * adytail;\n bhi = c - (c - adytail);\n blo = adytail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 + t0;\n bvirt = _i - s0;\n u[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n u[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n n1 = -cdy;\n n0 = -cdytail;\n s1 = adxtail * n1;\n c = splitter * adxtail;\n ahi = c - (c - adxtail);\n alo = adxtail - ahi;\n c = splitter * n1;\n bhi = c - (c - n1);\n blo = n1 - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = adx * n0;\n c = splitter * adx;\n ahi = c - (c - adx);\n alo = adx - ahi;\n c = splitter * n0;\n bhi = c - (c - n0);\n blo = n0 - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 + t0;\n bvirt = _i - s0;\n v[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n v[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n v[2] = _j - (u3 - bvirt) + (_i - bvirt);\n v[3] = u3;\n catlen = sum(4, u, 4, v, cat);\n s1 = cdxtail * adytail;\n c = splitter * cdxtail;\n ahi = c - (c - cdxtail);\n alo = cdxtail - ahi;\n c = splitter * adytail;\n bhi = c - (c - adytail);\n blo = adytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = adxtail * cdytail;\n c = splitter * adxtail;\n ahi = c - (c - adxtail);\n alo = adxtail - ahi;\n c = splitter * cdytail;\n bhi = c - (c - cdytail);\n blo = cdytail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n catt[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n catt[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n catt[2] = _j - (u3 - bvirt) + (_i - bvirt);\n catt[3] = u3;\n cattlen = 4;\n } else {\n cat[0] = 0;\n catlen = 1;\n catt[0] = 0;\n cattlen = 1;\n }\n if (bdxtail !== 0) {\n var _len3 = scale(catlen, cat, bdxtail, _16c);\n finlen = finadd(finlen, sum(scale(bxtcalen, bxtca, bdxtail, _16), _16, scale(_len3, _16c, 2 * bdx, _32), _32, _48), _48);\n var _len4 = scale(cattlen, catt, bdxtail, _8);\n finlen = finadd(finlen, sum_three(scale(_len4, _8, 2 * bdx, _16), _16, scale(_len4, _8, bdxtail, _16b), _16b, scale(_len3, _16c, bdxtail, _32), _32, _32b, _64), _64);\n if (cdytail !== 0) {\n finlen = finadd(finlen, scale(scale(4, aa, bdxtail, _8), _8, cdytail, _16), _16);\n }\n if (adytail !== 0) {\n finlen = finadd(finlen, scale(scale(4, cc, -bdxtail, _8), _8, adytail, _16), _16);\n }\n }\n if (bdytail !== 0) {\n var _len5 = scale(catlen, cat, bdytail, _16c);\n finlen = finadd(finlen, sum(scale(bytcalen, bytca, bdytail, _16), _16, scale(_len5, _16c, 2 * bdy, _32), _32, _48), _48);\n var _len6 = scale(cattlen, catt, bdytail, _8);\n finlen = finadd(finlen, sum_three(scale(_len6, _8, 2 * bdy, _16), _16, scale(_len6, _8, bdytail, _16b), _16b, scale(_len5, _16c, bdytail, _32), _32, _32b, _64), _64);\n }\n }\n if (cdxtail !== 0 || cdytail !== 0) {\n if (adxtail !== 0 || adytail !== 0 || bdxtail !== 0 || bdytail !== 0) {\n s1 = adxtail * bdy;\n c = splitter * adxtail;\n ahi = c - (c - adxtail);\n alo = adxtail - ahi;\n c = splitter * bdy;\n bhi = c - (c - bdy);\n blo = bdy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = adx * bdytail;\n c = splitter * adx;\n ahi = c - (c - adx);\n alo = adx - ahi;\n c = splitter * bdytail;\n bhi = c - (c - bdytail);\n blo = bdytail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 + t0;\n bvirt = _i - s0;\n u[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n u[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n n1 = -ady;\n n0 = -adytail;\n s1 = bdxtail * n1;\n c = splitter * bdxtail;\n ahi = c - (c - bdxtail);\n alo = bdxtail - ahi;\n c = splitter * n1;\n bhi = c - (c - n1);\n blo = n1 - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bdx * n0;\n c = splitter * bdx;\n ahi = c - (c - bdx);\n alo = bdx - ahi;\n c = splitter * n0;\n bhi = c - (c - n0);\n blo = n0 - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 + t0;\n bvirt = _i - s0;\n v[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n v[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n v[2] = _j - (u3 - bvirt) + (_i - bvirt);\n v[3] = u3;\n abtlen = sum(4, u, 4, v, abt);\n s1 = adxtail * bdytail;\n c = splitter * adxtail;\n ahi = c - (c - adxtail);\n alo = adxtail - ahi;\n c = splitter * bdytail;\n bhi = c - (c - bdytail);\n blo = bdytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bdxtail * adytail;\n c = splitter * bdxtail;\n ahi = c - (c - bdxtail);\n alo = bdxtail - ahi;\n c = splitter * adytail;\n bhi = c - (c - adytail);\n blo = adytail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n abtt[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n abtt[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n abtt[2] = _j - (u3 - bvirt) + (_i - bvirt);\n abtt[3] = u3;\n abttlen = 4;\n } else {\n abt[0] = 0;\n abtlen = 1;\n abtt[0] = 0;\n abttlen = 1;\n }\n if (cdxtail !== 0) {\n var _len7 = scale(abtlen, abt, cdxtail, _16c);\n finlen = finadd(finlen, sum(scale(cxtablen, cxtab, cdxtail, _16), _16, scale(_len7, _16c, 2 * cdx, _32), _32, _48), _48);\n var _len8 = scale(abttlen, abtt, cdxtail, _8);\n finlen = finadd(finlen, sum_three(scale(_len8, _8, 2 * cdx, _16), _16, scale(_len8, _8, cdxtail, _16b), _16b, scale(_len7, _16c, cdxtail, _32), _32, _32b, _64), _64);\n if (adytail !== 0) {\n finlen = finadd(finlen, scale(scale(4, bb, cdxtail, _8), _8, adytail, _16), _16);\n }\n if (bdytail !== 0) {\n finlen = finadd(finlen, scale(scale(4, aa, -cdxtail, _8), _8, bdytail, _16), _16);\n }\n }\n if (cdytail !== 0) {\n var _len9 = scale(abtlen, abt, cdytail, _16c);\n finlen = finadd(finlen, sum(scale(cytablen, cytab, cdytail, _16), _16, scale(_len9, _16c, 2 * cdy, _32), _32, _48), _48);\n var _len10 = scale(abttlen, abtt, cdytail, _8);\n finlen = finadd(finlen, sum_three(scale(_len10, _8, 2 * cdy, _16), _16, scale(_len10, _8, cdytail, _16b), _16b, scale(_len9, _16c, cdytail, _32), _32, _32b, _64), _64);\n }\n }\n return fin[finlen - 1];\n}\nexport function incircle(ax, ay, bx, by, cx, cy, dx, dy) {\n var adx = ax - dx;\n var bdx = bx - dx;\n var cdx = cx - dx;\n var ady = ay - dy;\n var bdy = by - dy;\n var cdy = cy - dy;\n var bdxcdy = bdx * cdy;\n var cdxbdy = cdx * bdy;\n var alift = adx * adx + ady * ady;\n var cdxady = cdx * ady;\n var adxcdy = adx * cdy;\n var blift = bdx * bdx + bdy * bdy;\n var adxbdy = adx * bdy;\n var bdxady = bdx * ady;\n var clift = cdx * cdx + cdy * cdy;\n var det = alift * (bdxcdy - cdxbdy) + blift * (cdxady - adxcdy) + clift * (adxbdy - bdxady);\n var permanent = (Math.abs(bdxcdy) + Math.abs(cdxbdy)) * alift + (Math.abs(cdxady) + Math.abs(adxcdy)) * blift + (Math.abs(adxbdy) + Math.abs(bdxady)) * clift;\n var errbound = iccerrboundA * permanent;\n if (det > errbound || -det > errbound) {\n return det;\n }\n return incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent);\n}\nexport function incirclefast(ax, ay, bx, by, cx, cy, dx, dy) {\n var adx = ax - dx;\n var ady = ay - dy;\n var bdx = bx - dx;\n var bdy = by - dy;\n var cdx = cx - dx;\n var cdy = cy - dy;\n var abdet = adx * bdy - bdx * ady;\n var bcdet = bdx * cdy - cdx * bdy;\n var cadet = cdx * ady - adx * cdy;\n var alift = adx * adx + ady * ady;\n var blift = bdx * bdx + bdy * bdy;\n var clift = cdx * cdx + cdy * cdy;\n return alift * bcdet + blift * cadet + clift * abdet;\n}","import { epsilon, splitter, resulterrbound, estimate, vec, sum, sum_three, scale, negate } from './util.js';\nvar isperrboundA = (16 + 224 * epsilon) * epsilon;\nvar isperrboundB = (5 + 72 * epsilon) * epsilon;\nvar isperrboundC = (71 + 1408 * epsilon) * epsilon * epsilon;\nvar ab = vec(4);\nvar bc = vec(4);\nvar cd = vec(4);\nvar de = vec(4);\nvar ea = vec(4);\nvar ac = vec(4);\nvar bd = vec(4);\nvar ce = vec(4);\nvar da = vec(4);\nvar eb = vec(4);\nvar abc = vec(24);\nvar bcd = vec(24);\nvar cde = vec(24);\nvar dea = vec(24);\nvar eab = vec(24);\nvar abd = vec(24);\nvar bce = vec(24);\nvar cda = vec(24);\nvar deb = vec(24);\nvar eac = vec(24);\nvar adet = vec(1152);\nvar bdet = vec(1152);\nvar cdet = vec(1152);\nvar ddet = vec(1152);\nvar edet = vec(1152);\nvar abdet = vec(2304);\nvar cddet = vec(2304);\nvar cdedet = vec(3456);\nvar deter = vec(5760);\nvar _8 = vec(8);\nvar _8b = vec(8);\nvar _8c = vec(8);\nvar _16 = vec(16);\nvar _24 = vec(24);\nvar _48 = vec(48);\nvar _48b = vec(48);\nvar _96 = vec(96);\nvar _192 = vec(192);\nvar _384x = vec(384);\nvar _384y = vec(384);\nvar _384z = vec(384);\nvar _768 = vec(768);\nfunction sum_three_scale(a, b, c, az, bz, cz, out) {\n return sum_three(scale(4, a, az, _8), _8, scale(4, b, bz, _8b), _8b, scale(4, c, cz, _8c), _8c, _16, out);\n}\nfunction liftexact(alen, a, blen, b, clen, c, dlen, d, x, y, z, out) {\n var len = sum(sum(alen, a, blen, b, _48), _48, negate(sum(clen, c, dlen, d, _48b), _48b), _48b, _96);\n return sum_three(scale(scale(len, _96, x, _192), _192, x, _384x), _384x, scale(scale(len, _96, y, _192), _192, y, _384y), _384y, scale(scale(len, _96, z, _192), _192, z, _384z), _384z, _768, out);\n}\nfunction insphereexact(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez) {\n var bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;\n s1 = ax * by;\n c = splitter * ax;\n ahi = c - (c - ax);\n alo = ax - ahi;\n c = splitter * by;\n bhi = c - (c - by);\n blo = by - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bx * ay;\n c = splitter * bx;\n ahi = c - (c - bx);\n alo = bx - ahi;\n c = splitter * ay;\n bhi = c - (c - ay);\n blo = ay - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ab[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ab[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ab[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ab[3] = u3;\n s1 = bx * cy;\n c = splitter * bx;\n ahi = c - (c - bx);\n alo = bx - ahi;\n c = splitter * cy;\n bhi = c - (c - cy);\n blo = cy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cx * by;\n c = splitter * cx;\n ahi = c - (c - cx);\n alo = cx - ahi;\n c = splitter * by;\n bhi = c - (c - by);\n blo = by - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n bc[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n bc[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n bc[2] = _j - (u3 - bvirt) + (_i - bvirt);\n bc[3] = u3;\n s1 = cx * dy;\n c = splitter * cx;\n ahi = c - (c - cx);\n alo = cx - ahi;\n c = splitter * dy;\n bhi = c - (c - dy);\n blo = dy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = dx * cy;\n c = splitter * dx;\n ahi = c - (c - dx);\n alo = dx - ahi;\n c = splitter * cy;\n bhi = c - (c - cy);\n blo = cy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n cd[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n cd[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n cd[2] = _j - (u3 - bvirt) + (_i - bvirt);\n cd[3] = u3;\n s1 = dx * ey;\n c = splitter * dx;\n ahi = c - (c - dx);\n alo = dx - ahi;\n c = splitter * ey;\n bhi = c - (c - ey);\n blo = ey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = ex * dy;\n c = splitter * ex;\n ahi = c - (c - ex);\n alo = ex - ahi;\n c = splitter * dy;\n bhi = c - (c - dy);\n blo = dy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n de[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n de[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n de[2] = _j - (u3 - bvirt) + (_i - bvirt);\n de[3] = u3;\n s1 = ex * ay;\n c = splitter * ex;\n ahi = c - (c - ex);\n alo = ex - ahi;\n c = splitter * ay;\n bhi = c - (c - ay);\n blo = ay - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = ax * ey;\n c = splitter * ax;\n ahi = c - (c - ax);\n alo = ax - ahi;\n c = splitter * ey;\n bhi = c - (c - ey);\n blo = ey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ea[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ea[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ea[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ea[3] = u3;\n s1 = ax * cy;\n c = splitter * ax;\n ahi = c - (c - ax);\n alo = ax - ahi;\n c = splitter * cy;\n bhi = c - (c - cy);\n blo = cy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cx * ay;\n c = splitter * cx;\n ahi = c - (c - cx);\n alo = cx - ahi;\n c = splitter * ay;\n bhi = c - (c - ay);\n blo = ay - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ac[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ac[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ac[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ac[3] = u3;\n s1 = bx * dy;\n c = splitter * bx;\n ahi = c - (c - bx);\n alo = bx - ahi;\n c = splitter * dy;\n bhi = c - (c - dy);\n blo = dy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = dx * by;\n c = splitter * dx;\n ahi = c - (c - dx);\n alo = dx - ahi;\n c = splitter * by;\n bhi = c - (c - by);\n blo = by - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n bd[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n bd[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n bd[2] = _j - (u3 - bvirt) + (_i - bvirt);\n bd[3] = u3;\n s1 = cx * ey;\n c = splitter * cx;\n ahi = c - (c - cx);\n alo = cx - ahi;\n c = splitter * ey;\n bhi = c - (c - ey);\n blo = ey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = ex * cy;\n c = splitter * ex;\n ahi = c - (c - ex);\n alo = ex - ahi;\n c = splitter * cy;\n bhi = c - (c - cy);\n blo = cy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ce[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ce[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ce[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ce[3] = u3;\n s1 = dx * ay;\n c = splitter * dx;\n ahi = c - (c - dx);\n alo = dx - ahi;\n c = splitter * ay;\n bhi = c - (c - ay);\n blo = ay - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = ax * dy;\n c = splitter * ax;\n ahi = c - (c - ax);\n alo = ax - ahi;\n c = splitter * dy;\n bhi = c - (c - dy);\n blo = dy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n da[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n da[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n da[2] = _j - (u3 - bvirt) + (_i - bvirt);\n da[3] = u3;\n s1 = ex * by;\n c = splitter * ex;\n ahi = c - (c - ex);\n alo = ex - ahi;\n c = splitter * by;\n bhi = c - (c - by);\n blo = by - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bx * ey;\n c = splitter * bx;\n ahi = c - (c - bx);\n alo = bx - ahi;\n c = splitter * ey;\n bhi = c - (c - ey);\n blo = ey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n eb[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n eb[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n eb[2] = _j - (u3 - bvirt) + (_i - bvirt);\n eb[3] = u3;\n var abclen = sum_three_scale(ab, bc, ac, cz, az, -bz, abc);\n var bcdlen = sum_three_scale(bc, cd, bd, dz, bz, -cz, bcd);\n var cdelen = sum_three_scale(cd, de, ce, ez, cz, -dz, cde);\n var dealen = sum_three_scale(de, ea, da, az, dz, -ez, dea);\n var eablen = sum_three_scale(ea, ab, eb, bz, ez, -az, eab);\n var abdlen = sum_three_scale(ab, bd, da, dz, az, bz, abd);\n var bcelen = sum_three_scale(bc, ce, eb, ez, bz, cz, bce);\n var cdalen = sum_three_scale(cd, da, ac, az, cz, dz, cda);\n var deblen = sum_three_scale(de, eb, bd, bz, dz, ez, deb);\n var eaclen = sum_three_scale(ea, ac, ce, cz, ez, az, eac);\n var deterlen = sum_three(liftexact(cdelen, cde, bcelen, bce, deblen, deb, bcdlen, bcd, ax, ay, az, adet), adet, liftexact(dealen, dea, cdalen, cda, eaclen, eac, cdelen, cde, bx, by, bz, bdet), bdet, sum_three(liftexact(eablen, eab, deblen, deb, abdlen, abd, dealen, dea, cx, cy, cz, cdet), cdet, liftexact(abclen, abc, eaclen, eac, bcelen, bce, eablen, eab, dx, dy, dz, ddet), ddet, liftexact(bcdlen, bcd, abdlen, abd, cdalen, cda, abclen, abc, ex, ey, ez, edet), edet, cddet, cdedet), cdedet, abdet, deter);\n return deter[deterlen - 1];\n}\nvar xdet = vec(96);\nvar ydet = vec(96);\nvar zdet = vec(96);\nvar fin = vec(1152);\nfunction liftadapt(a, b, c, az, bz, cz, x, y, z, out) {\n var len = sum_three_scale(a, b, c, az, bz, cz, _24);\n return sum_three(scale(scale(len, _24, x, _48), _48, x, xdet), xdet, scale(scale(len, _24, y, _48), _48, y, ydet), ydet, scale(scale(len, _24, z, _48), _48, z, zdet), zdet, _192, out);\n}\nfunction insphereadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez, permanent) {\n var ab3, bc3, cd3, da3, ac3, bd3;\n var aextail, bextail, cextail, dextail;\n var aeytail, beytail, ceytail, deytail;\n var aeztail, beztail, ceztail, deztail;\n var bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0;\n var aex = ax - ex;\n var bex = bx - ex;\n var cex = cx - ex;\n var dex = dx - ex;\n var aey = ay - ey;\n var bey = by - ey;\n var cey = cy - ey;\n var dey = dy - ey;\n var aez = az - ez;\n var bez = bz - ez;\n var cez = cz - ez;\n var dez = dz - ez;\n s1 = aex * bey;\n c = splitter * aex;\n ahi = c - (c - aex);\n alo = aex - ahi;\n c = splitter * bey;\n bhi = c - (c - bey);\n blo = bey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bex * aey;\n c = splitter * bex;\n ahi = c - (c - bex);\n alo = bex - ahi;\n c = splitter * aey;\n bhi = c - (c - aey);\n blo = aey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ab[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ab[1] = _0 - (_i + bvirt) + (bvirt - t1);\n ab3 = _j + _i;\n bvirt = ab3 - _j;\n ab[2] = _j - (ab3 - bvirt) + (_i - bvirt);\n ab[3] = ab3;\n s1 = bex * cey;\n c = splitter * bex;\n ahi = c - (c - bex);\n alo = bex - ahi;\n c = splitter * cey;\n bhi = c - (c - cey);\n blo = cey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cex * bey;\n c = splitter * cex;\n ahi = c - (c - cex);\n alo = cex - ahi;\n c = splitter * bey;\n bhi = c - (c - bey);\n blo = bey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n bc[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n bc[1] = _0 - (_i + bvirt) + (bvirt - t1);\n bc3 = _j + _i;\n bvirt = bc3 - _j;\n bc[2] = _j - (bc3 - bvirt) + (_i - bvirt);\n bc[3] = bc3;\n s1 = cex * dey;\n c = splitter * cex;\n ahi = c - (c - cex);\n alo = cex - ahi;\n c = splitter * dey;\n bhi = c - (c - dey);\n blo = dey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = dex * cey;\n c = splitter * dex;\n ahi = c - (c - dex);\n alo = dex - ahi;\n c = splitter * cey;\n bhi = c - (c - cey);\n blo = cey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n cd[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n cd[1] = _0 - (_i + bvirt) + (bvirt - t1);\n cd3 = _j + _i;\n bvirt = cd3 - _j;\n cd[2] = _j - (cd3 - bvirt) + (_i - bvirt);\n cd[3] = cd3;\n s1 = dex * aey;\n c = splitter * dex;\n ahi = c - (c - dex);\n alo = dex - ahi;\n c = splitter * aey;\n bhi = c - (c - aey);\n blo = aey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = aex * dey;\n c = splitter * aex;\n ahi = c - (c - aex);\n alo = aex - ahi;\n c = splitter * dey;\n bhi = c - (c - dey);\n blo = dey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n da[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n da[1] = _0 - (_i + bvirt) + (bvirt - t1);\n da3 = _j + _i;\n bvirt = da3 - _j;\n da[2] = _j - (da3 - bvirt) + (_i - bvirt);\n da[3] = da3;\n s1 = aex * cey;\n c = splitter * aex;\n ahi = c - (c - aex);\n alo = aex - ahi;\n c = splitter * cey;\n bhi = c - (c - cey);\n blo = cey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cex * aey;\n c = splitter * cex;\n ahi = c - (c - cex);\n alo = cex - ahi;\n c = splitter * aey;\n bhi = c - (c - aey);\n blo = aey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ac[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ac[1] = _0 - (_i + bvirt) + (bvirt - t1);\n ac3 = _j + _i;\n bvirt = ac3 - _j;\n ac[2] = _j - (ac3 - bvirt) + (_i - bvirt);\n ac[3] = ac3;\n s1 = bex * dey;\n c = splitter * bex;\n ahi = c - (c - bex);\n alo = bex - ahi;\n c = splitter * dey;\n bhi = c - (c - dey);\n blo = dey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = dex * bey;\n c = splitter * dex;\n ahi = c - (c - dex);\n alo = dex - ahi;\n c = splitter * bey;\n bhi = c - (c - bey);\n blo = bey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n bd[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n bd[1] = _0 - (_i + bvirt) + (bvirt - t1);\n bd3 = _j + _i;\n bvirt = bd3 - _j;\n bd[2] = _j - (bd3 - bvirt) + (_i - bvirt);\n bd[3] = bd3;\n var finlen = sum(sum(negate(liftadapt(bc, cd, bd, dez, bez, -cez, aex, aey, aez, adet), adet), adet, liftadapt(cd, da, ac, aez, cez, dez, bex, bey, bez, bdet), bdet, abdet), abdet, sum(negate(liftadapt(da, ab, bd, bez, dez, aez, cex, cey, cez, cdet), cdet), cdet, liftadapt(ab, bc, ac, cez, aez, -bez, dex, dey, dez, ddet), ddet, cddet), cddet, fin);\n var det = estimate(finlen, fin);\n var errbound = isperrboundB * permanent;\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n bvirt = ax - aex;\n aextail = ax - (aex + bvirt) + (bvirt - ex);\n bvirt = ay - aey;\n aeytail = ay - (aey + bvirt) + (bvirt - ey);\n bvirt = az - aez;\n aeztail = az - (aez + bvirt) + (bvirt - ez);\n bvirt = bx - bex;\n bextail = bx - (bex + bvirt) + (bvirt - ex);\n bvirt = by - bey;\n beytail = by - (bey + bvirt) + (bvirt - ey);\n bvirt = bz - bez;\n beztail = bz - (bez + bvirt) + (bvirt - ez);\n bvirt = cx - cex;\n cextail = cx - (cex + bvirt) + (bvirt - ex);\n bvirt = cy - cey;\n ceytail = cy - (cey + bvirt) + (bvirt - ey);\n bvirt = cz - cez;\n ceztail = cz - (cez + bvirt) + (bvirt - ez);\n bvirt = dx - dex;\n dextail = dx - (dex + bvirt) + (bvirt - ex);\n bvirt = dy - dey;\n deytail = dy - (dey + bvirt) + (bvirt - ey);\n bvirt = dz - dez;\n deztail = dz - (dez + bvirt) + (bvirt - ez);\n if (aextail === 0 && aeytail === 0 && aeztail === 0 && bextail === 0 && beytail === 0 && beztail === 0 && cextail === 0 && ceytail === 0 && ceztail === 0 && dextail === 0 && deytail === 0 && deztail === 0) {\n return det;\n }\n errbound = isperrboundC * permanent + resulterrbound * Math.abs(det);\n var abeps = aex * beytail + bey * aextail - (aey * bextail + bex * aeytail);\n var bceps = bex * ceytail + cey * bextail - (bey * cextail + cex * beytail);\n var cdeps = cex * deytail + dey * cextail - (cey * dextail + dex * ceytail);\n var daeps = dex * aeytail + aey * dextail - (dey * aextail + aex * deytail);\n var aceps = aex * ceytail + cey * aextail - (aey * cextail + cex * aeytail);\n var bdeps = bex * deytail + dey * bextail - (bey * dextail + dex * beytail);\n det += (bex * bex + bey * bey + bez * bez) * (cez * daeps + dez * aceps + aez * cdeps + (ceztail * da3 + deztail * ac3 + aeztail * cd3)) + (dex * dex + dey * dey + dez * dez) * (aez * bceps - bez * aceps + cez * abeps + (aeztail * bc3 - beztail * ac3 + ceztail * ab3)) - ((aex * aex + aey * aey + aez * aez) * (bez * cdeps - cez * bdeps + dez * bceps + (beztail * cd3 - ceztail * bd3 + deztail * bc3)) + (cex * cex + cey * cey + cez * cez) * (dez * abeps + aez * bdeps + bez * daeps + (deztail * ab3 + aeztail * bd3 + beztail * da3))) + 2 * ((bex * bextail + bey * beytail + bez * beztail) * (cez * da3 + dez * ac3 + aez * cd3) + (dex * dextail + dey * deytail + dez * deztail) * (aez * bc3 - bez * ac3 + cez * ab3) - ((aex * aextail + aey * aeytail + aez * aeztail) * (bez * cd3 - cez * bd3 + dez * bc3) + (cex * cextail + cey * ceytail + cez * ceztail) * (dez * ab3 + aez * bd3 + bez * da3)));\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n return insphereexact(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez);\n}\nexport function insphere(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez) {\n var aex = ax - ex;\n var bex = bx - ex;\n var cex = cx - ex;\n var dex = dx - ex;\n var aey = ay - ey;\n var bey = by - ey;\n var cey = cy - ey;\n var dey = dy - ey;\n var aez = az - ez;\n var bez = bz - ez;\n var cez = cz - ez;\n var dez = dz - ez;\n var aexbey = aex * bey;\n var bexaey = bex * aey;\n var ab = aexbey - bexaey;\n var bexcey = bex * cey;\n var cexbey = cex * bey;\n var bc = bexcey - cexbey;\n var cexdey = cex * dey;\n var dexcey = dex * cey;\n var cd = cexdey - dexcey;\n var dexaey = dex * aey;\n var aexdey = aex * dey;\n var da = dexaey - aexdey;\n var aexcey = aex * cey;\n var cexaey = cex * aey;\n var ac = aexcey - cexaey;\n var bexdey = bex * dey;\n var dexbey = dex * bey;\n var bd = bexdey - dexbey;\n var alift = aex * aex + aey * aey + aez * aez;\n var blift = bex * bex + bey * bey + bez * bez;\n var clift = cex * cex + cey * cey + cez * cez;\n var dlift = dex * dex + dey * dey + dez * dez;\n var det = clift * (dez * ab + aez * bd + bez * da) - dlift * (aez * bc - bez * ac + cez * ab) + (alift * (bez * cd - cez * bd + dez * bc) - blift * (cez * da + dez * ac + aez * cd));\n var aezplus = Math.abs(aez);\n var bezplus = Math.abs(bez);\n var cezplus = Math.abs(cez);\n var dezplus = Math.abs(dez);\n var aexbeyplus = Math.abs(aexbey) + Math.abs(bexaey);\n var bexceyplus = Math.abs(bexcey) + Math.abs(cexbey);\n var cexdeyplus = Math.abs(cexdey) + Math.abs(dexcey);\n var dexaeyplus = Math.abs(dexaey) + Math.abs(aexdey);\n var aexceyplus = Math.abs(aexcey) + Math.abs(cexaey);\n var bexdeyplus = Math.abs(bexdey) + Math.abs(dexbey);\n var permanent = (cexdeyplus * bezplus + bexdeyplus * cezplus + bexceyplus * dezplus) * alift + (dexaeyplus * cezplus + aexceyplus * dezplus + cexdeyplus * aezplus) * blift + (aexbeyplus * dezplus + bexdeyplus * aezplus + dexaeyplus * bezplus) * clift + (bexceyplus * aezplus + aexceyplus * bezplus + aexbeyplus * cezplus) * dlift;\n var errbound = isperrboundA * permanent;\n if (det > errbound || -det > errbound) {\n return det;\n }\n return -insphereadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez, permanent);\n}\nexport function inspherefast(pax, pay, paz, pbx, pby, pbz, pcx, pcy, pcz, pdx, pdy, pdz, pex, pey, pez) {\n var aex = pax - pex;\n var bex = pbx - pex;\n var cex = pcx - pex;\n var dex = pdx - pex;\n var aey = pay - pey;\n var bey = pby - pey;\n var cey = pcy - pey;\n var dey = pdy - pey;\n var aez = paz - pez;\n var bez = pbz - pez;\n var cez = pcz - pez;\n var dez = pdz - pez;\n var ab = aex * bey - bex * aey;\n var bc = bex * cey - cex * bey;\n var cd = cex * dey - dex * cey;\n var da = dex * aey - aex * dey;\n var ac = aex * cey - cex * aey;\n var bd = bex * dey - dex * bey;\n var abc = aez * bc - bez * ac + cez * ab;\n var bcd = bez * cd - cez * bd + dez * bc;\n var cda = cez * da + dez * ac + aez * cd;\n var dab = dez * ab + aez * bd + bez * da;\n var alift = aex * aex + aey * aey + aez * aez;\n var blift = bex * bex + bey * bey + bez * bez;\n var clift = cex * cex + cey * cey + cez * cez;\n var dlift = dex * dex + dey * dey + dez * dez;\n return clift * dab - dlift * abc + (alift * bcd - blift * cda);\n}","import _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nvar EPSILON = Math.pow(2, -52);\nvar EDGE_STACK = new Uint32Array(512);\nimport { orient2d } from 'robust-predicates';\nvar Delaunator = /*#__PURE__*/function () {\n function Delaunator(coords) {\n _classCallCheck(this, Delaunator);\n var n = coords.length >> 1;\n if (n > 0 && typeof coords[0] !== 'number') throw new Error('Expected coords to contain numbers.');\n this.coords = coords;\n\n // arrays that will store the triangulation graph\n var maxTriangles = Math.max(2 * n - 5, 0);\n this._triangles = new Uint32Array(maxTriangles * 3);\n this._halfedges = new Int32Array(maxTriangles * 3);\n\n // temporary arrays for tracking the edges of the advancing convex hull\n this._hashSize = Math.ceil(Math.sqrt(n));\n this._hullPrev = new Uint32Array(n); // edge to prev edge\n this._hullNext = new Uint32Array(n); // edge to next edge\n this._hullTri = new Uint32Array(n); // edge to adjacent triangle\n this._hullHash = new Int32Array(this._hashSize).fill(-1); // angular edge hash\n\n // temporary arrays for sorting points\n this._ids = new Uint32Array(n);\n this._dists = new Float64Array(n);\n this.update();\n }\n _createClass(Delaunator, [{\n key: \"update\",\n value: function update() {\n var coords = this.coords,\n hullPrev = this._hullPrev,\n hullNext = this._hullNext,\n hullTri = this._hullTri,\n hullHash = this._hullHash;\n var n = coords.length >> 1;\n\n // populate an array of point indices; calculate input data bbox\n var minX = Infinity;\n var minY = Infinity;\n var maxX = -Infinity;\n var maxY = -Infinity;\n for (var i = 0; i < n; i++) {\n var x = coords[2 * i];\n var y = coords[2 * 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 this._ids[i] = i;\n }\n var cx = (minX + maxX) / 2;\n var cy = (minY + maxY) / 2;\n var minDist = Infinity;\n var i0, i1, i2;\n\n // pick a seed point close to the center\n for (var _i = 0; _i < n; _i++) {\n var d = dist(cx, cy, coords[2 * _i], coords[2 * _i + 1]);\n if (d < minDist) {\n i0 = _i;\n minDist = d;\n }\n }\n var i0x = coords[2 * i0];\n var i0y = coords[2 * i0 + 1];\n minDist = Infinity;\n\n // find the point closest to the seed\n for (var _i2 = 0; _i2 < n; _i2++) {\n if (_i2 === i0) continue;\n var _d = dist(i0x, i0y, coords[2 * _i2], coords[2 * _i2 + 1]);\n if (_d < minDist && _d > 0) {\n i1 = _i2;\n minDist = _d;\n }\n }\n var i1x = coords[2 * i1];\n var i1y = coords[2 * i1 + 1];\n var minRadius = Infinity;\n\n // find the third point which forms the smallest circumcircle with the first two\n for (var _i3 = 0; _i3 < n; _i3++) {\n if (_i3 === i0 || _i3 === i1) continue;\n var r = circumradius(i0x, i0y, i1x, i1y, coords[2 * _i3], coords[2 * _i3 + 1]);\n if (r < minRadius) {\n i2 = _i3;\n minRadius = r;\n }\n }\n var i2x = coords[2 * i2];\n var i2y = coords[2 * i2 + 1];\n if (minRadius === Infinity) {\n // order collinear points by dx (or dy if all x are identical)\n // and return the list as a hull\n for (var _i4 = 0; _i4 < n; _i4++) {\n this._dists[_i4] = coords[2 * _i4] - coords[0] || coords[2 * _i4 + 1] - coords[1];\n }\n quicksort(this._ids, this._dists, 0, n - 1);\n var hull = new Uint32Array(n);\n var j = 0;\n for (var _i5 = 0, d0 = -Infinity; _i5 < n; _i5++) {\n var id = this._ids[_i5];\n if (this._dists[id] > d0) {\n hull[j++] = id;\n d0 = this._dists[id];\n }\n }\n this.hull = hull.subarray(0, j);\n this.triangles = new Uint32Array(0);\n this.halfedges = new Uint32Array(0);\n return;\n }\n\n // swap the order of the seed points for counter-clockwise orientation\n if (orient2d(i0x, i0y, i1x, i1y, i2x, i2y) < 0) {\n var _i6 = i1;\n var _x = i1x;\n var _y = i1y;\n i1 = i2;\n i1x = i2x;\n i1y = i2y;\n i2 = _i6;\n i2x = _x;\n i2y = _y;\n }\n var center = circumcenter(i0x, i0y, i1x, i1y, i2x, i2y);\n this._cx = center.x;\n this._cy = center.y;\n for (var _i7 = 0; _i7 < n; _i7++) {\n this._dists[_i7] = dist(coords[2 * _i7], coords[2 * _i7 + 1], center.x, center.y);\n }\n\n // sort the points by distance from the seed triangle circumcenter\n quicksort(this._ids, this._dists, 0, n - 1);\n\n // set up the seed triangle as the starting hull\n this._hullStart = i0;\n var hullSize = 3;\n hullNext[i0] = hullPrev[i2] = i1;\n hullNext[i1] = hullPrev[i0] = i2;\n hullNext[i2] = hullPrev[i1] = i0;\n hullTri[i0] = 0;\n hullTri[i1] = 1;\n hullTri[i2] = 2;\n hullHash.fill(-1);\n hullHash[this._hashKey(i0x, i0y)] = i0;\n hullHash[this._hashKey(i1x, i1y)] = i1;\n hullHash[this._hashKey(i2x, i2y)] = i2;\n this.trianglesLen = 0;\n this._addTriangle(i0, i1, i2, -1, -1, -1);\n for (var k = 0, xp, yp; k < this._ids.length; k++) {\n var _i8 = this._ids[k];\n var _x2 = coords[2 * _i8];\n var _y2 = coords[2 * _i8 + 1];\n\n // skip near-duplicate points\n if (k > 0 && Math.abs(_x2 - xp) <= EPSILON && Math.abs(_y2 - yp) <= EPSILON) continue;\n xp = _x2;\n yp = _y2;\n\n // skip seed triangle points\n if (_i8 === i0 || _i8 === i1 || _i8 === i2) continue;\n\n // find a visible edge on the convex hull using edge hash\n var start = 0;\n for (var _j = 0, key = this._hashKey(_x2, _y2); _j < this._hashSize; _j++) {\n start = hullHash[(key + _j) % this._hashSize];\n if (start !== -1 && start !== hullNext[start]) break;\n }\n start = hullPrev[start];\n var e = start,\n q = void 0;\n while (q = hullNext[e], orient2d(_x2, _y2, coords[2 * e], coords[2 * e + 1], coords[2 * q], coords[2 * q + 1]) >= 0) {\n e = q;\n if (e === start) {\n e = -1;\n break;\n }\n }\n if (e === -1) continue; // likely a near-duplicate point; skip it\n\n // add the first triangle from the point\n var t = this._addTriangle(e, _i8, hullNext[e], -1, -1, hullTri[e]);\n\n // recursively flip triangles from the point until they satisfy the Delaunay condition\n hullTri[_i8] = this._legalize(t + 2);\n hullTri[e] = t; // keep track of boundary triangles on the hull\n hullSize++;\n\n // walk forward through the hull, adding more triangles and flipping recursively\n var _n = hullNext[e];\n while (q = hullNext[_n], orient2d(_x2, _y2, coords[2 * _n], coords[2 * _n + 1], coords[2 * q], coords[2 * q + 1]) < 0) {\n t = this._addTriangle(_n, _i8, q, hullTri[_i8], -1, hullTri[_n]);\n hullTri[_i8] = this._legalize(t + 2);\n hullNext[_n] = _n; // mark as removed\n hullSize--;\n _n = q;\n }\n\n // walk backward from the other side, adding more triangles and flipping\n if (e === start) {\n while (q = hullPrev[e], orient2d(_x2, _y2, coords[2 * q], coords[2 * q + 1], coords[2 * e], coords[2 * e + 1]) < 0) {\n t = this._addTriangle(q, _i8, e, -1, hullTri[e], hullTri[q]);\n this._legalize(t + 2);\n hullTri[q] = t;\n hullNext[e] = e; // mark as removed\n hullSize--;\n e = q;\n }\n }\n\n // update the hull indices\n this._hullStart = hullPrev[_i8] = e;\n hullNext[e] = hullPrev[_n] = _i8;\n hullNext[_i8] = _n;\n\n // save the two new edges in the hash table\n hullHash[this._hashKey(_x2, _y2)] = _i8;\n hullHash[this._hashKey(coords[2 * e], coords[2 * e + 1])] = e;\n }\n this.hull = new Uint32Array(hullSize);\n for (var _i9 = 0, _e = this._hullStart; _i9 < hullSize; _i9++) {\n this.hull[_i9] = _e;\n _e = hullNext[_e];\n }\n\n // trim typed triangle mesh arrays\n this.triangles = this._triangles.subarray(0, this.trianglesLen);\n this.halfedges = this._halfedges.subarray(0, this.trianglesLen);\n }\n }, {\n key: \"_hashKey\",\n value: function _hashKey(x, y) {\n return Math.floor(pseudoAngle(x - this._cx, y - this._cy) * this._hashSize) % this._hashSize;\n }\n }, {\n key: \"_legalize\",\n value: function _legalize(a) {\n var triangles = this._triangles,\n halfedges = this._halfedges,\n coords = this.coords;\n var i = 0;\n var ar = 0;\n\n // recursion eliminated with a fixed-size stack\n while (true) {\n var b = halfedges[a];\n\n /* if the pair of triangles doesn't satisfy the Delaunay condition\n * (p1 is inside the circumcircle of [p0, pl, pr]), flip them,\n * then do the same check/flip recursively for the new pair of triangles\n *\n * pl pl\n * /||\\ / \\\n * al/ || \\bl al/ \\a\n * / || \\ / \\\n * / a||b \\ flip /___ar___\\\n * p0\\ || /p1 => p0\\---bl---/p1\n * \\ || / \\ /\n * ar\\ || /br b\\ /br\n * \\||/ \\ /\n * pr pr\n */\n var a0 = a - a % 3;\n ar = a0 + (a + 2) % 3;\n if (b === -1) {\n // convex hull edge\n if (i === 0) break;\n a = EDGE_STACK[--i];\n continue;\n }\n var b0 = b - b % 3;\n var al = a0 + (a + 1) % 3;\n var bl = b0 + (b + 2) % 3;\n var p0 = triangles[ar];\n var pr = triangles[a];\n var pl = triangles[al];\n var p1 = triangles[bl];\n var illegal = inCircle(coords[2 * p0], coords[2 * p0 + 1], coords[2 * pr], coords[2 * pr + 1], coords[2 * pl], coords[2 * pl + 1], coords[2 * p1], coords[2 * p1 + 1]);\n if (illegal) {\n triangles[a] = p1;\n triangles[b] = p0;\n var hbl = halfedges[bl];\n\n // edge swapped on the other side of the hull (rare); fix the halfedge reference\n if (hbl === -1) {\n var e = this._hullStart;\n do {\n if (this._hullTri[e] === bl) {\n this._hullTri[e] = a;\n break;\n }\n e = this._hullPrev[e];\n } while (e !== this._hullStart);\n }\n this._link(a, hbl);\n this._link(b, halfedges[ar]);\n this._link(ar, bl);\n var br = b0 + (b + 1) % 3;\n\n // don't worry about hitting the cap: it can only happen on extremely degenerate input\n if (i < EDGE_STACK.length) {\n EDGE_STACK[i++] = br;\n }\n } else {\n if (i === 0) break;\n a = EDGE_STACK[--i];\n }\n }\n return ar;\n }\n }, {\n key: \"_link\",\n value: function _link(a, b) {\n this._halfedges[a] = b;\n if (b !== -1) this._halfedges[b] = a;\n }\n\n // add a new triangle given vertex indices and adjacent half-edge ids\n }, {\n key: \"_addTriangle\",\n value: function _addTriangle(i0, i1, i2, a, b, c) {\n var t = this.trianglesLen;\n this._triangles[t] = i0;\n this._triangles[t + 1] = i1;\n this._triangles[t + 2] = i2;\n this._link(t, a);\n this._link(t + 1, b);\n this._link(t + 2, c);\n this.trianglesLen += 3;\n return t;\n }\n }], [{\n key: \"from\",\n value: function from(points) {\n var getX = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultGetX;\n var getY = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultGetY;\n var n = points.length;\n var coords = new Float64Array(n * 2);\n for (var i = 0; i < n; i++) {\n var p = points[i];\n coords[2 * i] = getX(p);\n coords[2 * i + 1] = getY(p);\n }\n return new Delaunator(coords);\n }\n }]);\n return Delaunator;\n}(); // monotonically increases with real angle, but doesn't need expensive trigonometry\nexport { Delaunator as default };\nfunction pseudoAngle(dx, dy) {\n var p = dx / (Math.abs(dx) + Math.abs(dy));\n return (dy > 0 ? 3 - p : 1 + p) / 4; // [0..1]\n}\n\nfunction dist(ax, ay, bx, by) {\n var dx = ax - bx;\n var dy = ay - by;\n return dx * dx + dy * dy;\n}\nfunction inCircle(ax, ay, bx, by, cx, cy, px, py) {\n var dx = ax - px;\n var dy = ay - py;\n var ex = bx - px;\n var ey = by - py;\n var fx = cx - px;\n var fy = cy - py;\n var ap = dx * dx + dy * dy;\n var bp = ex * ex + ey * ey;\n var cp = fx * fx + fy * fy;\n return dx * (ey * cp - bp * fy) - dy * (ex * cp - bp * fx) + ap * (ex * fy - ey * fx) < 0;\n}\nfunction circumradius(ax, ay, bx, by, cx, cy) {\n var dx = bx - ax;\n var dy = by - ay;\n var ex = cx - ax;\n var ey = cy - ay;\n var bl = dx * dx + dy * dy;\n var cl = ex * ex + ey * ey;\n var d = 0.5 / (dx * ey - dy * ex);\n var x = (ey * bl - dy * cl) * d;\n var y = (dx * cl - ex * bl) * d;\n return x * x + y * y;\n}\nfunction circumcenter(ax, ay, bx, by, cx, cy) {\n var dx = bx - ax;\n var dy = by - ay;\n var ex = cx - ax;\n var ey = cy - ay;\n var bl = dx * dx + dy * dy;\n var cl = ex * ex + ey * ey;\n var d = 0.5 / (dx * ey - dy * ex);\n var x = ax + (ey * bl - dy * cl) * d;\n var y = ay + (dx * cl - ex * bl) * d;\n return {\n x: x,\n y: y\n };\n}\nfunction quicksort(ids, dists, left, right) {\n if (right - left <= 20) {\n for (var i = left + 1; i <= right; i++) {\n var temp = ids[i];\n var tempDist = dists[temp];\n var j = i - 1;\n while (j >= left && dists[ids[j]] > tempDist) ids[j + 1] = ids[j--];\n ids[j + 1] = temp;\n }\n } else {\n var median = left + right >> 1;\n var _i10 = left + 1;\n var _j2 = right;\n swap(ids, median, _i10);\n if (dists[ids[left]] > dists[ids[right]]) swap(ids, left, right);\n if (dists[ids[_i10]] > dists[ids[right]]) swap(ids, _i10, right);\n if (dists[ids[left]] > dists[ids[_i10]]) swap(ids, left, _i10);\n var _temp = ids[_i10];\n var _tempDist = dists[_temp];\n while (true) {\n do _i10++; while (dists[ids[_i10]] < _tempDist);\n do _j2--; while (dists[ids[_j2]] > _tempDist);\n if (_j2 < _i10) break;\n swap(ids, _i10, _j2);\n }\n ids[left + 1] = ids[_j2];\n ids[_j2] = _temp;\n if (right - _i10 + 1 >= _j2 - left) {\n quicksort(ids, dists, _i10, right);\n quicksort(ids, dists, left, _j2 - 1);\n } else {\n quicksort(ids, dists, left, _j2 - 1);\n quicksort(ids, dists, _i10, right);\n }\n }\n}\nfunction swap(arr, i, j) {\n var tmp = arr[i];\n arr[i] = arr[j];\n arr[j] = tmp;\n}\nfunction defaultGetX(p) {\n return p[0];\n}\nfunction defaultGetY(p) {\n return p[1];\n}","import _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nvar epsilon = 1e-6;\nvar Path = /*#__PURE__*/function () {\n function Path() {\n _classCallCheck(this, Path);\n this._x0 = this._y0 =\n // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n }\n _createClass(Path, [{\n key: \"moveTo\",\n value: function moveTo(x, y) {\n this._ += \"M\".concat(this._x0 = this._x1 = +x, \",\").concat(this._y0 = this._y1 = +y);\n }\n }, {\n key: \"closePath\",\n value: function closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n }\n }, {\n key: \"lineTo\",\n value: function lineTo(x, y) {\n this._ += \"L\".concat(this._x1 = +x, \",\").concat(this._y1 = +y);\n }\n }, {\n key: \"arc\",\n value: function arc(x, y, r) {\n x = +x, y = +y, r = +r;\n var x0 = x + r;\n var y0 = y;\n if (r < 0) throw new Error(\"negative radius\");\n if (this._x1 === null) this._ += \"M\".concat(x0, \",\").concat(y0);else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) this._ += \"L\" + x0 + \",\" + y0;\n if (!r) return;\n this._ += \"A\".concat(r, \",\").concat(r, \",0,1,1,\").concat(x - r, \",\").concat(y, \"A\").concat(r, \",\").concat(r, \",0,1,1,\").concat(this._x1 = x0, \",\").concat(this._y1 = y0);\n }\n }, {\n key: \"rect\",\n value: function rect(x, y, w, h) {\n this._ += \"M\".concat(this._x0 = this._x1 = +x, \",\").concat(this._y0 = this._y1 = +y, \"h\").concat(+w, \"v\").concat(+h, \"h\").concat(-w, \"Z\");\n }\n }, {\n key: \"value\",\n value: function value() {\n return this._ || null;\n }\n }]);\n return Path;\n}();\nexport { Path as default };","import _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nvar Polygon = /*#__PURE__*/function () {\n function Polygon() {\n _classCallCheck(this, Polygon);\n this._ = [];\n }\n _createClass(Polygon, [{\n key: \"moveTo\",\n value: function moveTo(x, y) {\n this._.push([x, y]);\n }\n }, {\n key: \"closePath\",\n value: function closePath() {\n this._.push(this._[0].slice());\n }\n }, {\n key: \"lineTo\",\n value: function lineTo(x, y) {\n this._.push([x, y]);\n }\n }, {\n key: \"value\",\n value: function value() {\n return this._.length ? this._ : null;\n }\n }]);\n return Polygon;\n}();\nexport { Polygon as default };","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _regeneratorRuntime from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/regenerator/index.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport Path from \"./path.js\";\nimport Polygon from \"./polygon.js\";\nvar Voronoi = /*#__PURE__*/function () {\n function Voronoi(delaunay) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [0, 0, 960, 500],\n _ref2 = _slicedToArray(_ref, 4),\n xmin = _ref2[0],\n ymin = _ref2[1],\n xmax = _ref2[2],\n ymax = _ref2[3];\n _classCallCheck(this, Voronoi);\n if (!((xmax = +xmax) >= (xmin = +xmin)) || !((ymax = +ymax) >= (ymin = +ymin))) throw new Error(\"invalid bounds\");\n this.delaunay = delaunay;\n this._circumcenters = new Float64Array(delaunay.points.length * 2);\n this.vectors = new Float64Array(delaunay.points.length * 2);\n this.xmax = xmax, this.xmin = xmin;\n this.ymax = ymax, this.ymin = ymin;\n this._init();\n }\n _createClass(Voronoi, [{\n key: \"update\",\n value: function update() {\n this.delaunay.update();\n this._init();\n return this;\n }\n }, {\n key: \"_init\",\n value: function _init() {\n var _this$delaunay = this.delaunay,\n points = _this$delaunay.points,\n hull = _this$delaunay.hull,\n triangles = _this$delaunay.triangles,\n vectors = this.vectors;\n var bx, by; // lazily computed barycenter of the hull\n\n // Compute circumcenters.\n var circumcenters = this.circumcenters = this._circumcenters.subarray(0, triangles.length / 3 * 2);\n for (var i = 0, j = 0, n = triangles.length, x, y; i < n; i += 3, j += 2) {\n var t1 = triangles[i] * 2;\n var t2 = triangles[i + 1] * 2;\n var t3 = triangles[i + 2] * 2;\n var _x = points[t1];\n var _y = points[t1 + 1];\n var x2 = points[t2];\n var y2 = points[t2 + 1];\n var x3 = points[t3];\n var y3 = points[t3 + 1];\n var dx = x2 - _x;\n var dy = y2 - _y;\n var ex = x3 - _x;\n var ey = y3 - _y;\n var ab = (dx * ey - dy * ex) * 2;\n if (Math.abs(ab) < 1e-9) {\n // For a degenerate triangle, the circumcenter is at the infinity, in a\n // direction orthogonal to the halfedge and away from the “center” of\n // the diagram , defined as the hull’s barycenter.\n if (bx === undefined) {\n bx = by = 0;\n var _iterator = _createForOfIteratorHelper(hull),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _i = _step.value;\n bx += points[_i * 2], by += points[_i * 2 + 1];\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n bx /= hull.length, by /= hull.length;\n }\n var a = 1e9 * Math.sign((bx - _x) * ey - (by - _y) * ex);\n x = (_x + x3) / 2 - a * ey;\n y = (_y + y3) / 2 + a * ex;\n } else {\n var d = 1 / ab;\n var bl = dx * dx + dy * dy;\n var cl = ex * ex + ey * ey;\n x = _x + (ey * bl - dy * cl) * d;\n y = _y + (dx * cl - ex * bl) * d;\n }\n circumcenters[j] = x;\n circumcenters[j + 1] = y;\n }\n\n // Compute exterior cell rays.\n var h = hull[hull.length - 1];\n var p0,\n p1 = h * 4;\n var x0,\n x1 = points[2 * h];\n var y0,\n y1 = points[2 * h + 1];\n vectors.fill(0);\n for (var _i2 = 0; _i2 < hull.length; ++_i2) {\n h = hull[_i2];\n p0 = p1, x0 = x1, y0 = y1;\n p1 = h * 4, x1 = points[2 * h], y1 = points[2 * h + 1];\n vectors[p0 + 2] = vectors[p1] = y0 - y1;\n vectors[p0 + 3] = vectors[p1 + 1] = x1 - x0;\n }\n }\n }, {\n key: \"render\",\n value: function render(context) {\n var buffer = context == null ? context = new Path() : undefined;\n var _this$delaunay2 = this.delaunay,\n halfedges = _this$delaunay2.halfedges,\n inedges = _this$delaunay2.inedges,\n hull = _this$delaunay2.hull,\n circumcenters = this.circumcenters,\n vectors = this.vectors;\n if (hull.length <= 1) return null;\n for (var i = 0, n = halfedges.length; i < n; ++i) {\n var j = halfedges[i];\n if (j < i) continue;\n var ti = Math.floor(i / 3) * 2;\n var tj = Math.floor(j / 3) * 2;\n var xi = circumcenters[ti];\n var yi = circumcenters[ti + 1];\n var xj = circumcenters[tj];\n var yj = circumcenters[tj + 1];\n this._renderSegment(xi, yi, xj, yj, context);\n }\n var h0,\n h1 = hull[hull.length - 1];\n for (var _i3 = 0; _i3 < hull.length; ++_i3) {\n h0 = h1, h1 = hull[_i3];\n var t = Math.floor(inedges[h1] / 3) * 2;\n var x = circumcenters[t];\n var y = circumcenters[t + 1];\n var v = h0 * 4;\n var p = this._project(x, y, vectors[v + 2], vectors[v + 3]);\n if (p) this._renderSegment(x, y, p[0], p[1], context);\n }\n return buffer && buffer.value();\n }\n }, {\n key: \"renderBounds\",\n value: function renderBounds(context) {\n var buffer = context == null ? context = new Path() : undefined;\n context.rect(this.xmin, this.ymin, this.xmax - this.xmin, this.ymax - this.ymin);\n return buffer && buffer.value();\n }\n }, {\n key: \"renderCell\",\n value: function renderCell(i, context) {\n var buffer = context == null ? context = new Path() : undefined;\n var points = this._clip(i);\n if (points === null || !points.length) return;\n context.moveTo(points[0], points[1]);\n var n = points.length;\n while (points[0] === points[n - 2] && points[1] === points[n - 1] && n > 1) n -= 2;\n for (var _i4 = 2; _i4 < n; _i4 += 2) {\n if (points[_i4] !== points[_i4 - 2] || points[_i4 + 1] !== points[_i4 - 1]) context.lineTo(points[_i4], points[_i4 + 1]);\n }\n context.closePath();\n return buffer && buffer.value();\n }\n }, {\n key: \"cellPolygons\",\n value: /*#__PURE__*/_regeneratorRuntime.mark(function cellPolygons() {\n var points, i, n, cell;\n return _regeneratorRuntime.wrap(function cellPolygons$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n points = this.delaunay.points;\n i = 0, n = points.length / 2;\n case 2:\n if (!(i < n)) {\n _context.next = 11;\n break;\n }\n cell = this.cellPolygon(i);\n if (!cell) {\n _context.next = 8;\n break;\n }\n cell.index = i;\n _context.next = 8;\n return cell;\n case 8:\n ++i;\n _context.next = 2;\n break;\n case 11:\n case \"end\":\n return _context.stop();\n }\n }, cellPolygons, this);\n })\n }, {\n key: \"cellPolygon\",\n value: function cellPolygon(i) {\n var polygon = new Polygon();\n this.renderCell(i, polygon);\n return polygon.value();\n }\n }, {\n key: \"_renderSegment\",\n value: function _renderSegment(x0, y0, x1, y1, context) {\n var S;\n var c0 = this._regioncode(x0, y0);\n var c1 = this._regioncode(x1, y1);\n if (c0 === 0 && c1 === 0) {\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n } else if (S = this._clipSegment(x0, y0, x1, y1, c0, c1)) {\n context.moveTo(S[0], S[1]);\n context.lineTo(S[2], S[3]);\n }\n }\n }, {\n key: \"contains\",\n value: function contains(i, x, y) {\n if ((x = +x, x !== x) || (y = +y, y !== y)) return false;\n return this.delaunay._step(i, x, y) === i;\n }\n }, {\n key: \"neighbors\",\n value: /*#__PURE__*/_regeneratorRuntime.mark(function neighbors(i) {\n var ci, _iterator2, _step2, j, cj, ai, li, aj, lj;\n return _regeneratorRuntime.wrap(function neighbors$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n ci = this._clip(i);\n if (!ci) {\n _context2.next = 33;\n break;\n }\n _iterator2 = _createForOfIteratorHelper(this.delaunay.neighbors(i));\n _context2.prev = 3;\n _iterator2.s();\n case 5:\n if ((_step2 = _iterator2.n()).done) {\n _context2.next = 25;\n break;\n }\n j = _step2.value;\n cj = this._clip(j); // find the common edge\n if (!cj) {\n _context2.next = 23;\n break;\n }\n ai = 0, li = ci.length;\n case 10:\n if (!(ai < li)) {\n _context2.next = 23;\n break;\n }\n aj = 0, lj = cj.length;\n case 12:\n if (!(aj < lj)) {\n _context2.next = 20;\n break;\n }\n if (!(ci[ai] === cj[aj] && ci[ai + 1] === cj[aj + 1] && ci[(ai + 2) % li] === cj[(aj + lj - 2) % lj] && ci[(ai + 3) % li] === cj[(aj + lj - 1) % lj])) {\n _context2.next = 17;\n break;\n }\n _context2.next = 16;\n return j;\n case 16:\n return _context2.abrupt(\"break\", 23);\n case 17:\n aj += 2;\n _context2.next = 12;\n break;\n case 20:\n ai += 2;\n _context2.next = 10;\n break;\n case 23:\n _context2.next = 5;\n break;\n case 25:\n _context2.next = 30;\n break;\n case 27:\n _context2.prev = 27;\n _context2.t0 = _context2[\"catch\"](3);\n _iterator2.e(_context2.t0);\n case 30:\n _context2.prev = 30;\n _iterator2.f();\n return _context2.finish(30);\n case 33:\n case \"end\":\n return _context2.stop();\n }\n }, neighbors, this, [[3, 27, 30, 33]]);\n })\n }, {\n key: \"_cell\",\n value: function _cell(i) {\n var circumcenters = this.circumcenters,\n _this$delaunay3 = this.delaunay,\n inedges = _this$delaunay3.inedges,\n halfedges = _this$delaunay3.halfedges,\n triangles = _this$delaunay3.triangles;\n var e0 = inedges[i];\n if (e0 === -1) return null; // coincident point\n var points = [];\n var e = e0;\n do {\n var t = Math.floor(e / 3);\n points.push(circumcenters[t * 2], circumcenters[t * 2 + 1]);\n e = e % 3 === 2 ? e - 2 : e + 1;\n if (triangles[e] !== i) break; // bad triangulation\n e = halfedges[e];\n } while (e !== e0 && e !== -1);\n return points;\n }\n }, {\n key: \"_clip\",\n value: function _clip(i) {\n // degenerate case (1 valid point: return the box)\n if (i === 0 && this.delaunay.hull.length === 1) {\n return [this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax, this.xmin, this.ymin];\n }\n var points = this._cell(i);\n if (points === null) return null;\n var V = this.vectors;\n var v = i * 4;\n return this._simplify(V[v] || V[v + 1] ? this._clipInfinite(i, points, V[v], V[v + 1], V[v + 2], V[v + 3]) : this._clipFinite(i, points));\n }\n }, {\n key: \"_clipFinite\",\n value: function _clipFinite(i, points) {\n var n = points.length;\n var P = null;\n var x0,\n y0,\n x1 = points[n - 2],\n y1 = points[n - 1];\n var c0,\n c1 = this._regioncode(x1, y1);\n var e0,\n e1 = 0;\n for (var j = 0; j < n; j += 2) {\n x0 = x1, y0 = y1, x1 = points[j], y1 = points[j + 1];\n c0 = c1, c1 = this._regioncode(x1, y1);\n if (c0 === 0 && c1 === 0) {\n e0 = e1, e1 = 0;\n if (P) P.push(x1, y1);else P = [x1, y1];\n } else {\n var S = void 0,\n sx0 = void 0,\n sy0 = void 0,\n sx1 = void 0,\n sy1 = void 0;\n if (c0 === 0) {\n if ((S = this._clipSegment(x0, y0, x1, y1, c0, c1)) === null) continue;\n var _S = S;\n var _S2 = _slicedToArray(_S, 4);\n sx0 = _S2[0];\n sy0 = _S2[1];\n sx1 = _S2[2];\n sy1 = _S2[3];\n } else {\n if ((S = this._clipSegment(x1, y1, x0, y0, c1, c0)) === null) continue;\n var _S3 = S;\n var _S4 = _slicedToArray(_S3, 4);\n sx1 = _S4[0];\n sy1 = _S4[1];\n sx0 = _S4[2];\n sy0 = _S4[3];\n e0 = e1, e1 = this._edgecode(sx0, sy0);\n if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n if (P) P.push(sx0, sy0);else P = [sx0, sy0];\n }\n e0 = e1, e1 = this._edgecode(sx1, sy1);\n if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n if (P) P.push(sx1, sy1);else P = [sx1, sy1];\n }\n }\n if (P) {\n e0 = e1, e1 = this._edgecode(P[0], P[1]);\n if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n } else if (this.contains(i, (this.xmin + this.xmax) / 2, (this.ymin + this.ymax) / 2)) {\n return [this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax, this.xmin, this.ymin];\n }\n return P;\n }\n }, {\n key: \"_clipSegment\",\n value: function _clipSegment(x0, y0, x1, y1, c0, c1) {\n // for more robustness, always consider the segment in the same order\n var flip = c0 < c1;\n if (flip) {\n var _ref3 = [x1, y1, x0, y0, c1, c0];\n x0 = _ref3[0];\n y0 = _ref3[1];\n x1 = _ref3[2];\n y1 = _ref3[3];\n c0 = _ref3[4];\n c1 = _ref3[5];\n }\n while (true) {\n if (c0 === 0 && c1 === 0) return flip ? [x1, y1, x0, y0] : [x0, y0, x1, y1];\n if (c0 & c1) return null;\n var x = void 0,\n y = void 0,\n c = c0 || c1;\n if (c & 8) x = x0 + (x1 - x0) * (this.ymax - y0) / (y1 - y0), y = this.ymax;else if (c & 4) x = x0 + (x1 - x0) * (this.ymin - y0) / (y1 - y0), y = this.ymin;else if (c & 2) y = y0 + (y1 - y0) * (this.xmax - x0) / (x1 - x0), x = this.xmax;else y = y0 + (y1 - y0) * (this.xmin - x0) / (x1 - x0), x = this.xmin;\n if (c0) x0 = x, y0 = y, c0 = this._regioncode(x0, y0);else x1 = x, y1 = y, c1 = this._regioncode(x1, y1);\n }\n }\n }, {\n key: \"_clipInfinite\",\n value: function _clipInfinite(i, points, vx0, vy0, vxn, vyn) {\n var P = Array.from(points),\n p;\n if (p = this._project(P[0], P[1], vx0, vy0)) P.unshift(p[0], p[1]);\n if (p = this._project(P[P.length - 2], P[P.length - 1], vxn, vyn)) P.push(p[0], p[1]);\n if (P = this._clipFinite(i, P)) {\n for (var j = 0, n = P.length, c0, c1 = this._edgecode(P[n - 2], P[n - 1]); j < n; j += 2) {\n c0 = c1, c1 = this._edgecode(P[j], P[j + 1]);\n if (c0 && c1) j = this._edge(i, c0, c1, P, j), n = P.length;\n }\n } else if (this.contains(i, (this.xmin + this.xmax) / 2, (this.ymin + this.ymax) / 2)) {\n P = [this.xmin, this.ymin, this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax];\n }\n return P;\n }\n }, {\n key: \"_edge\",\n value: function _edge(i, e0, e1, P, j) {\n while (e0 !== e1) {\n var x = void 0,\n y = void 0;\n switch (e0) {\n case 5:\n e0 = 4;\n continue;\n // top-left\n case 4:\n e0 = 6, x = this.xmax, y = this.ymin;\n break;\n // top\n case 6:\n e0 = 2;\n continue;\n // top-right\n case 2:\n e0 = 10, x = this.xmax, y = this.ymax;\n break;\n // right\n case 10:\n e0 = 8;\n continue;\n // bottom-right\n case 8:\n e0 = 9, x = this.xmin, y = this.ymax;\n break;\n // bottom\n case 9:\n e0 = 1;\n continue;\n // bottom-left\n case 1:\n e0 = 5, x = this.xmin, y = this.ymin;\n break;\n // left\n }\n // Note: this implicitly checks for out of bounds: if P[j] or P[j+1] are\n // undefined, the conditional statement will be executed.\n if ((P[j] !== x || P[j + 1] !== y) && this.contains(i, x, y)) {\n P.splice(j, 0, x, y), j += 2;\n }\n }\n return j;\n }\n }, {\n key: \"_project\",\n value: function _project(x0, y0, vx, vy) {\n var t = Infinity,\n c,\n x,\n y;\n if (vy < 0) {\n // top\n if (y0 <= this.ymin) return null;\n if ((c = (this.ymin - y0) / vy) < t) y = this.ymin, x = x0 + (t = c) * vx;\n } else if (vy > 0) {\n // bottom\n if (y0 >= this.ymax) return null;\n if ((c = (this.ymax - y0) / vy) < t) y = this.ymax, x = x0 + (t = c) * vx;\n }\n if (vx > 0) {\n // right\n if (x0 >= this.xmax) return null;\n if ((c = (this.xmax - x0) / vx) < t) x = this.xmax, y = y0 + (t = c) * vy;\n } else if (vx < 0) {\n // left\n if (x0 <= this.xmin) return null;\n if ((c = (this.xmin - x0) / vx) < t) x = this.xmin, y = y0 + (t = c) * vy;\n }\n return [x, y];\n }\n }, {\n key: \"_edgecode\",\n value: function _edgecode(x, y) {\n return (x === this.xmin ? 1 : x === this.xmax ? 2 : 0) | (y === this.ymin ? 4 : y === this.ymax ? 8 : 0);\n }\n }, {\n key: \"_regioncode\",\n value: function _regioncode(x, y) {\n return (x < this.xmin ? 1 : x > this.xmax ? 2 : 0) | (y < this.ymin ? 4 : y > this.ymax ? 8 : 0);\n }\n }, {\n key: \"_simplify\",\n value: function _simplify(P) {\n if (P && P.length > 4) {\n for (var i = 0; i < P.length; i += 2) {\n var j = (i + 2) % P.length,\n k = (i + 4) % P.length;\n if (P[i] === P[j] && P[j] === P[k] || P[i + 1] === P[j + 1] && P[j + 1] === P[k + 1]) {\n P.splice(j, 2), i -= 2;\n }\n }\n if (!P.length) P = null;\n }\n return P;\n }\n }]);\n return Voronoi;\n}();\nexport { Voronoi as default };","import _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nvar _marked = /*#__PURE__*/_regeneratorRuntime.mark(flatIterable);\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport _regeneratorRuntime from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/regenerator/index.js\";\nimport \"core-js/modules/es.math.hypot.js\";\nimport Delaunator from \"delaunator\";\nimport Path from \"./path.js\";\nimport Polygon from \"./polygon.js\";\nimport Voronoi from \"./voronoi.js\";\nvar tau = 2 * Math.PI,\n pow = Math.pow;\nfunction pointX(p) {\n return p[0];\n}\nfunction pointY(p) {\n return p[1];\n}\n\n// A triangulation is collinear if all its triangles have a non-null area\nfunction collinear(d) {\n var triangles = d.triangles,\n coords = d.coords;\n for (var i = 0; i < triangles.length; i += 3) {\n var a = 2 * triangles[i],\n b = 2 * triangles[i + 1],\n c = 2 * triangles[i + 2],\n cross = (coords[c] - coords[a]) * (coords[b + 1] - coords[a + 1]) - (coords[b] - coords[a]) * (coords[c + 1] - coords[a + 1]);\n if (cross > 1e-10) return false;\n }\n return true;\n}\nfunction jitter(x, y, r) {\n return [x + Math.sin(x + y) * r, y + Math.cos(x - y) * r];\n}\nvar Delaunay = /*#__PURE__*/function () {\n function Delaunay(points) {\n _classCallCheck(this, Delaunay);\n this._delaunator = new Delaunator(points);\n this.inedges = new Int32Array(points.length / 2);\n this._hullIndex = new Int32Array(points.length / 2);\n this.points = this._delaunator.coords;\n this._init();\n }\n _createClass(Delaunay, [{\n key: \"update\",\n value: function update() {\n this._delaunator.update();\n this._init();\n return this;\n }\n }, {\n key: \"_init\",\n value: function _init() {\n var d = this._delaunator,\n points = this.points;\n\n // check for collinear\n if (d.hull && d.hull.length > 2 && collinear(d)) {\n this.collinear = Int32Array.from({\n length: points.length / 2\n }, function (_, i) {\n return i;\n }).sort(function (i, j) {\n return points[2 * i] - points[2 * j] || points[2 * i + 1] - points[2 * j + 1];\n }); // for exact neighbors\n var e = this.collinear[0],\n f = this.collinear[this.collinear.length - 1],\n bounds = [points[2 * e], points[2 * e + 1], points[2 * f], points[2 * f + 1]],\n r = 1e-8 * Math.hypot(bounds[3] - bounds[1], bounds[2] - bounds[0]);\n for (var i = 0, n = points.length / 2; i < n; ++i) {\n var p = jitter(points[2 * i], points[2 * i + 1], r);\n points[2 * i] = p[0];\n points[2 * i + 1] = p[1];\n }\n this._delaunator = new Delaunator(points);\n } else {\n delete this.collinear;\n }\n var halfedges = this.halfedges = this._delaunator.halfedges;\n var hull = this.hull = this._delaunator.hull;\n var triangles = this.triangles = this._delaunator.triangles;\n var inedges = this.inedges.fill(-1);\n var hullIndex = this._hullIndex.fill(-1);\n\n // Compute an index from each point to an (arbitrary) incoming halfedge\n // Used to give the first neighbor of each point; for this reason,\n // on the hull we give priority to exterior halfedges\n for (var _e = 0, _n = halfedges.length; _e < _n; ++_e) {\n var _p = triangles[_e % 3 === 2 ? _e - 2 : _e + 1];\n if (halfedges[_e] === -1 || inedges[_p] === -1) inedges[_p] = _e;\n }\n for (var _i = 0, _n2 = hull.length; _i < _n2; ++_i) {\n hullIndex[hull[_i]] = _i;\n }\n\n // degenerate case: 1 or 2 (distinct) points\n if (hull.length <= 2 && hull.length > 0) {\n this.triangles = new Int32Array(3).fill(-1);\n this.halfedges = new Int32Array(3).fill(-1);\n this.triangles[0] = hull[0];\n inedges[hull[0]] = 1;\n if (hull.length === 2) {\n inedges[hull[1]] = 0;\n this.triangles[1] = hull[1];\n this.triangles[2] = hull[1];\n }\n }\n }\n }, {\n key: \"voronoi\",\n value: function voronoi(bounds) {\n return new Voronoi(this, bounds);\n }\n }, {\n key: \"neighbors\",\n value: /*#__PURE__*/_regeneratorRuntime.mark(function neighbors(i) {\n var inedges, hull, _hullIndex, halfedges, triangles, collinear, l, e0, e, p0, p;\n return _regeneratorRuntime.wrap(function neighbors$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n inedges = this.inedges, hull = this.hull, _hullIndex = this._hullIndex, halfedges = this.halfedges, triangles = this.triangles, collinear = this.collinear; // degenerate case with several collinear points\n if (!collinear) {\n _context.next = 10;\n break;\n }\n l = collinear.indexOf(i);\n if (!(l > 0)) {\n _context.next = 6;\n break;\n }\n _context.next = 6;\n return collinear[l - 1];\n case 6:\n if (!(l < collinear.length - 1)) {\n _context.next = 9;\n break;\n }\n _context.next = 9;\n return collinear[l + 1];\n case 9:\n return _context.abrupt(\"return\");\n case 10:\n e0 = inedges[i];\n if (!(e0 === -1)) {\n _context.next = 13;\n break;\n }\n return _context.abrupt(\"return\");\n case 13:\n // coincident point\n e = e0, p0 = -1;\n case 14:\n _context.next = 16;\n return p0 = triangles[e];\n case 16:\n e = e % 3 === 2 ? e - 2 : e + 1;\n if (!(triangles[e] !== i)) {\n _context.next = 19;\n break;\n }\n return _context.abrupt(\"return\");\n case 19:\n // bad triangulation\n e = halfedges[e];\n if (!(e === -1)) {\n _context.next = 26;\n break;\n }\n p = hull[(_hullIndex[i] + 1) % hull.length];\n if (!(p !== p0)) {\n _context.next = 25;\n break;\n }\n _context.next = 25;\n return p;\n case 25:\n return _context.abrupt(\"return\");\n case 26:\n if (e !== e0) {\n _context.next = 14;\n break;\n }\n case 27:\n case \"end\":\n return _context.stop();\n }\n }, neighbors, this);\n })\n }, {\n key: \"find\",\n value: function find(x, y) {\n var i = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n if ((x = +x, x !== x) || (y = +y, y !== y)) return -1;\n var i0 = i;\n var c;\n while ((c = this._step(i, x, y)) >= 0 && c !== i && c !== i0) i = c;\n return c;\n }\n }, {\n key: \"_step\",\n value: function _step(i, x, y) {\n var inedges = this.inedges,\n hull = this.hull,\n _hullIndex = this._hullIndex,\n halfedges = this.halfedges,\n triangles = this.triangles,\n points = this.points;\n if (inedges[i] === -1 || !points.length) return (i + 1) % (points.length >> 1);\n var c = i;\n var dc = pow(x - points[i * 2], 2) + pow(y - points[i * 2 + 1], 2);\n var e0 = inedges[i];\n var e = e0;\n do {\n var t = triangles[e];\n var dt = pow(x - points[t * 2], 2) + pow(y - points[t * 2 + 1], 2);\n if (dt < dc) dc = dt, c = t;\n e = e % 3 === 2 ? e - 2 : e + 1;\n if (triangles[e] !== i) break; // bad triangulation\n e = halfedges[e];\n if (e === -1) {\n e = hull[(_hullIndex[i] + 1) % hull.length];\n if (e !== t) {\n if (pow(x - points[e * 2], 2) + pow(y - points[e * 2 + 1], 2) < dc) return e;\n }\n break;\n }\n } while (e !== e0);\n return c;\n }\n }, {\n key: \"render\",\n value: function render(context) {\n var buffer = context == null ? context = new Path() : undefined;\n var points = this.points,\n halfedges = this.halfedges,\n triangles = this.triangles;\n for (var i = 0, n = halfedges.length; i < n; ++i) {\n var j = halfedges[i];\n if (j < i) continue;\n var ti = triangles[i] * 2;\n var tj = triangles[j] * 2;\n context.moveTo(points[ti], points[ti + 1]);\n context.lineTo(points[tj], points[tj + 1]);\n }\n this.renderHull(context);\n return buffer && buffer.value();\n }\n }, {\n key: \"renderPoints\",\n value: function renderPoints(context, r) {\n if (r === undefined && (!context || typeof context.moveTo !== \"function\")) r = context, context = null;\n r = r == undefined ? 2 : +r;\n var buffer = context == null ? context = new Path() : undefined;\n var points = this.points;\n for (var i = 0, n = points.length; i < n; i += 2) {\n var x = points[i],\n y = points[i + 1];\n context.moveTo(x + r, y);\n context.arc(x, y, r, 0, tau);\n }\n return buffer && buffer.value();\n }\n }, {\n key: \"renderHull\",\n value: function renderHull(context) {\n var buffer = context == null ? context = new Path() : undefined;\n var hull = this.hull,\n points = this.points;\n var h = hull[0] * 2,\n n = hull.length;\n context.moveTo(points[h], points[h + 1]);\n for (var i = 1; i < n; ++i) {\n var _h = 2 * hull[i];\n context.lineTo(points[_h], points[_h + 1]);\n }\n context.closePath();\n return buffer && buffer.value();\n }\n }, {\n key: \"hullPolygon\",\n value: function hullPolygon() {\n var polygon = new Polygon();\n this.renderHull(polygon);\n return polygon.value();\n }\n }, {\n key: \"renderTriangle\",\n value: function renderTriangle(i, context) {\n var buffer = context == null ? context = new Path() : undefined;\n var points = this.points,\n triangles = this.triangles;\n var t0 = triangles[i *= 3] * 2;\n var t1 = triangles[i + 1] * 2;\n var t2 = triangles[i + 2] * 2;\n context.moveTo(points[t0], points[t0 + 1]);\n context.lineTo(points[t1], points[t1 + 1]);\n context.lineTo(points[t2], points[t2 + 1]);\n context.closePath();\n return buffer && buffer.value();\n }\n }, {\n key: \"trianglePolygons\",\n value: /*#__PURE__*/_regeneratorRuntime.mark(function trianglePolygons() {\n var triangles, i, n;\n return _regeneratorRuntime.wrap(function trianglePolygons$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n triangles = this.triangles;\n i = 0, n = triangles.length / 3;\n case 2:\n if (!(i < n)) {\n _context2.next = 8;\n break;\n }\n _context2.next = 5;\n return this.trianglePolygon(i);\n case 5:\n ++i;\n _context2.next = 2;\n break;\n case 8:\n case \"end\":\n return _context2.stop();\n }\n }, trianglePolygons, this);\n })\n }, {\n key: \"trianglePolygon\",\n value: function trianglePolygon(i) {\n var polygon = new Polygon();\n this.renderTriangle(i, polygon);\n return polygon.value();\n }\n }], [{\n key: \"from\",\n value: function from(points) {\n var fx = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : pointX;\n var fy = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : pointY;\n var that = arguments.length > 3 ? arguments[3] : undefined;\n return new Delaunay(\"length\" in points ? flatArray(points, fx, fy, that) : Float64Array.from(flatIterable(points, fx, fy, that)));\n }\n }]);\n return Delaunay;\n}();\nexport { Delaunay as default };\nfunction flatArray(points, fx, fy, that) {\n var n = points.length;\n var array = new Float64Array(n * 2);\n for (var i = 0; i < n; ++i) {\n var p = points[i];\n array[i * 2] = fx.call(that, p, i, points);\n array[i * 2 + 1] = fy.call(that, p, i, points);\n }\n return array;\n}\nfunction flatIterable(points, fx, fy, that) {\n var i, _iterator, _step2, p;\n return _regeneratorRuntime.wrap(function flatIterable$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n i = 0;\n _iterator = _createForOfIteratorHelper(points);\n _context3.prev = 2;\n _iterator.s();\n case 4:\n if ((_step2 = _iterator.n()).done) {\n _context3.next = 13;\n break;\n }\n p = _step2.value;\n _context3.next = 8;\n return fx.call(that, p, i, points);\n case 8:\n _context3.next = 10;\n return fy.call(that, p, i, points);\n case 10:\n ++i;\n case 11:\n _context3.next = 4;\n break;\n case 13:\n _context3.next = 18;\n break;\n case 15:\n _context3.prev = 15;\n _context3.t0 = _context3[\"catch\"](2);\n _iterator.e(_context3.t0);\n case 18:\n _context3.prev = 18;\n _iterator.f();\n return _context3.finish(18);\n case 21:\n case \"end\":\n return _context3.stop();\n }\n }, _marked, null, [[2, 15, 18, 21]]);\n}","import { Transform } from 'vega-dataflow';\nimport { inherits } from 'vega-util';\nimport { Delaunay } from 'd3-delaunay';\nfunction Voronoi(params) {\n Transform.call(this, null, params);\n}\nVoronoi.Definition = {\n 'type': 'Voronoi',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'x',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'y',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'size',\n 'type': 'number',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'extent',\n 'type': 'array',\n 'array': true,\n 'length': 2,\n 'default': [[-1e5, -1e5], [1e5, 1e5]],\n 'content': {\n 'type': 'number',\n 'array': true,\n 'length': 2\n }\n }, {\n 'name': 'as',\n 'type': 'string',\n 'default': 'path'\n }]\n};\nvar defaultExtent = [-1e5, -1e5, 1e5, 1e5];\ninherits(Voronoi, Transform, {\n transform: function transform(_, pulse) {\n var as = _.as || 'path',\n data = pulse.source;\n\n // nothing to do if no data\n if (!data || !data.length) return pulse;\n\n // configure and construct voronoi diagram\n var s = _.size;\n s = s ? [0, 0, s[0], s[1]] : (s = _.extent) ? [s[0][0], s[0][1], s[1][0], s[1][1]] : defaultExtent;\n var voronoi = this.value = Delaunay.from(data, _.x, _.y).voronoi(s);\n\n // map polygons to paths\n for (var i = 0, n = data.length; i < n; ++i) {\n var polygon = voronoi.cellPolygon(i);\n data[i][as] = polygon ? toPathString(polygon) : null;\n }\n return pulse.reflow(_.modified()).modifies(as);\n }\n});\n\n// suppress duplicated end point vertices\nfunction toPathString(p) {\n var x = p[0][0],\n y = p[0][1];\n var n = p.length - 1;\n for (; p[n][0] === x && p[n][1] === y; --n);\n return 'M' + p.slice(0, n + 1).join('L') + 'Z';\n}\nexport { Voronoi as voronoi };","import { canvas } from 'vega-canvas';\nimport { Transform } from 'vega-dataflow';\nimport { inherits, error, isFunction, constant, extent } from 'vega-util';\nimport { scale } from 'vega-scale';\nimport { random } from 'vega-statistics';\n\n/*\nCopyright (c) 2013, Jason Davies.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n * Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n * The name Jason Davies may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL JASON DAVIES BE LIABLE FOR ANY DIRECT, INDIRECT,\nINCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE\nOR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF\nADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\n// Word cloud layout by Jason Davies, https://www.jasondavies.com/wordcloud/\n// Algorithm due to Jonathan Feinberg, http://static.mrfeinberg.com/bv_ch03.pdf\n\nvar cloudRadians = Math.PI / 180,\n cw = 1 << 11 >> 5,\n ch = 1 << 11;\nfunction cloud() {\n var size = [256, 256],\n text,\n font,\n fontSize,\n fontStyle,\n fontWeight,\n rotate,\n padding,\n spiral = archimedeanSpiral,\n words = [],\n random = Math.random,\n cloud = {};\n cloud.layout = function () {\n var contextAndRatio = getContext(canvas()),\n board = zeroArray((size[0] >> 5) * size[1]),\n bounds = null,\n n = words.length,\n i = -1,\n tags = [],\n data = words.map(function (d) {\n return {\n text: text(d),\n font: font(d),\n style: fontStyle(d),\n weight: fontWeight(d),\n rotate: rotate(d),\n size: ~~(fontSize(d) + 1e-14),\n padding: padding(d),\n xoff: 0,\n yoff: 0,\n x1: 0,\n y1: 0,\n x0: 0,\n y0: 0,\n hasText: false,\n sprite: null,\n datum: d\n };\n }).sort(function (a, b) {\n return b.size - a.size;\n });\n while (++i < n) {\n var d = data[i];\n d.x = size[0] * (random() + .5) >> 1;\n d.y = size[1] * (random() + .5) >> 1;\n cloudSprite(contextAndRatio, d, data, i);\n if (d.hasText && place(board, d, bounds)) {\n tags.push(d);\n if (bounds) cloudBounds(bounds, d);else bounds = [{\n x: d.x + d.x0,\n y: d.y + d.y0\n }, {\n x: d.x + d.x1,\n y: d.y + d.y1\n }];\n // Temporary hack\n d.x -= size[0] >> 1;\n d.y -= size[1] >> 1;\n }\n }\n return tags;\n };\n function getContext(canvas) {\n canvas.width = canvas.height = 1;\n var ratio = Math.sqrt(canvas.getContext('2d').getImageData(0, 0, 1, 1).data.length >> 2);\n canvas.width = (cw << 5) / ratio;\n canvas.height = ch / ratio;\n var context = canvas.getContext('2d');\n context.fillStyle = context.strokeStyle = 'red';\n context.textAlign = 'center';\n return {\n context: context,\n ratio: ratio\n };\n }\n function place(board, tag, bounds) {\n var startX = tag.x,\n startY = tag.y,\n maxDelta = Math.sqrt(size[0] * size[0] + size[1] * size[1]),\n s = spiral(size),\n dt = random() < .5 ? 1 : -1,\n t = -dt,\n dxdy,\n dx,\n dy;\n while (dxdy = s(t += dt)) {\n dx = ~~dxdy[0];\n dy = ~~dxdy[1];\n if (Math.min(Math.abs(dx), Math.abs(dy)) >= maxDelta) break;\n tag.x = startX + dx;\n tag.y = startY + dy;\n if (tag.x + tag.x0 < 0 || tag.y + tag.y0 < 0 || tag.x + tag.x1 > size[0] || tag.y + tag.y1 > size[1]) continue;\n // TODO only check for collisions within current bounds.\n if (!bounds || !cloudCollide(tag, board, size[0])) {\n if (!bounds || collideRects(tag, bounds)) {\n var sprite = tag.sprite,\n w = tag.width >> 5,\n sw = size[0] >> 5,\n lx = tag.x - (w << 4),\n sx = lx & 0x7f,\n msx = 32 - sx,\n h = tag.y1 - tag.y0,\n x = (tag.y + tag.y0) * sw + (lx >> 5),\n last;\n for (var j = 0; j < h; j++) {\n last = 0;\n for (var i = 0; i <= w; i++) {\n board[x + i] |= last << msx | (i < w ? (last = sprite[j * w + i]) >>> sx : 0);\n }\n x += sw;\n }\n tag.sprite = null;\n return true;\n }\n }\n }\n return false;\n }\n cloud.words = function (_) {\n if (arguments.length) {\n words = _;\n return cloud;\n } else {\n return words;\n }\n };\n cloud.size = function (_) {\n if (arguments.length) {\n size = [+_[0], +_[1]];\n return cloud;\n } else {\n return size;\n }\n };\n cloud.font = function (_) {\n if (arguments.length) {\n font = functor(_);\n return cloud;\n } else {\n return font;\n }\n };\n cloud.fontStyle = function (_) {\n if (arguments.length) {\n fontStyle = functor(_);\n return cloud;\n } else {\n return fontStyle;\n }\n };\n cloud.fontWeight = function (_) {\n if (arguments.length) {\n fontWeight = functor(_);\n return cloud;\n } else {\n return fontWeight;\n }\n };\n cloud.rotate = function (_) {\n if (arguments.length) {\n rotate = functor(_);\n return cloud;\n } else {\n return rotate;\n }\n };\n cloud.text = function (_) {\n if (arguments.length) {\n text = functor(_);\n return cloud;\n } else {\n return text;\n }\n };\n cloud.spiral = function (_) {\n if (arguments.length) {\n spiral = spirals[_] || _;\n return cloud;\n } else {\n return spiral;\n }\n };\n cloud.fontSize = function (_) {\n if (arguments.length) {\n fontSize = functor(_);\n return cloud;\n } else {\n return fontSize;\n }\n };\n cloud.padding = function (_) {\n if (arguments.length) {\n padding = functor(_);\n return cloud;\n } else {\n return padding;\n }\n };\n cloud.random = function (_) {\n if (arguments.length) {\n random = _;\n return cloud;\n } else {\n return random;\n }\n };\n return cloud;\n}\n\n// Fetches a monochrome sprite bitmap for the specified text.\n// Load in batches for speed.\nfunction cloudSprite(contextAndRatio, d, data, di) {\n if (d.sprite) return;\n var c = contextAndRatio.context,\n ratio = contextAndRatio.ratio;\n c.clearRect(0, 0, (cw << 5) / ratio, ch / ratio);\n var x = 0,\n y = 0,\n maxh = 0,\n n = data.length,\n w,\n w32,\n h,\n i,\n j;\n --di;\n while (++di < n) {\n d = data[di];\n c.save();\n c.font = d.style + ' ' + d.weight + ' ' + ~~((d.size + 1) / ratio) + 'px ' + d.font;\n w = c.measureText(d.text + 'm').width * ratio;\n h = d.size << 1;\n if (d.rotate) {\n var sr = Math.sin(d.rotate * cloudRadians),\n cr = Math.cos(d.rotate * cloudRadians),\n wcr = w * cr,\n wsr = w * sr,\n hcr = h * cr,\n hsr = h * sr;\n w = Math.max(Math.abs(wcr + hsr), Math.abs(wcr - hsr)) + 0x1f >> 5 << 5;\n h = ~~Math.max(Math.abs(wsr + hcr), Math.abs(wsr - hcr));\n } else {\n w = w + 0x1f >> 5 << 5;\n }\n if (h > maxh) maxh = h;\n if (x + w >= cw << 5) {\n x = 0;\n y += maxh;\n maxh = 0;\n }\n if (y + h >= ch) break;\n c.translate((x + (w >> 1)) / ratio, (y + (h >> 1)) / ratio);\n if (d.rotate) c.rotate(d.rotate * cloudRadians);\n c.fillText(d.text, 0, 0);\n if (d.padding) {\n c.lineWidth = 2 * d.padding;\n c.strokeText(d.text, 0, 0);\n }\n c.restore();\n d.width = w;\n d.height = h;\n d.xoff = x;\n d.yoff = y;\n d.x1 = w >> 1;\n d.y1 = h >> 1;\n d.x0 = -d.x1;\n d.y0 = -d.y1;\n d.hasText = true;\n x += w;\n }\n var pixels = c.getImageData(0, 0, (cw << 5) / ratio, ch / ratio).data,\n sprite = [];\n while (--di >= 0) {\n d = data[di];\n if (!d.hasText) continue;\n w = d.width;\n w32 = w >> 5;\n h = d.y1 - d.y0;\n // Zero the buffer\n for (i = 0; i < h * w32; i++) sprite[i] = 0;\n x = d.xoff;\n if (x == null) return;\n y = d.yoff;\n var seen = 0,\n seenRow = -1;\n for (j = 0; j < h; j++) {\n for (i = 0; i < w; i++) {\n var k = w32 * j + (i >> 5),\n m = pixels[(y + j) * (cw << 5) + (x + i) << 2] ? 1 << 31 - i % 32 : 0;\n sprite[k] |= m;\n seen |= m;\n }\n if (seen) seenRow = j;else {\n d.y0++;\n h--;\n j--;\n y++;\n }\n }\n d.y1 = d.y0 + seenRow;\n d.sprite = sprite.slice(0, (d.y1 - d.y0) * w32);\n }\n}\n\n// Use mask-based collision detection.\nfunction cloudCollide(tag, board, sw) {\n sw >>= 5;\n var sprite = tag.sprite,\n w = tag.width >> 5,\n lx = tag.x - (w << 4),\n sx = lx & 0x7f,\n msx = 32 - sx,\n h = tag.y1 - tag.y0,\n x = (tag.y + tag.y0) * sw + (lx >> 5),\n last;\n for (var j = 0; j < h; j++) {\n last = 0;\n for (var i = 0; i <= w; i++) {\n if ((last << msx | (i < w ? (last = sprite[j * w + i]) >>> sx : 0)) & board[x + i]) return true;\n }\n x += sw;\n }\n return false;\n}\nfunction cloudBounds(bounds, d) {\n var b0 = bounds[0],\n b1 = bounds[1];\n if (d.x + d.x0 < b0.x) b0.x = d.x + d.x0;\n if (d.y + d.y0 < b0.y) b0.y = d.y + d.y0;\n if (d.x + d.x1 > b1.x) b1.x = d.x + d.x1;\n if (d.y + d.y1 > b1.y) b1.y = d.y + d.y1;\n}\nfunction collideRects(a, b) {\n return a.x + a.x1 > b[0].x && a.x + a.x0 < b[1].x && a.y + a.y1 > b[0].y && a.y + a.y0 < b[1].y;\n}\nfunction archimedeanSpiral(size) {\n var e = size[0] / size[1];\n return function (t) {\n return [e * (t *= .1) * Math.cos(t), t * Math.sin(t)];\n };\n}\nfunction rectangularSpiral(size) {\n var dy = 4,\n dx = dy * size[0] / size[1],\n x = 0,\n y = 0;\n return function (t) {\n var sign = t < 0 ? -1 : 1;\n // See triangular numbers: T_n = n * (n + 1) / 2.\n switch (Math.sqrt(1 + 4 * sign * t) - sign & 3) {\n case 0:\n x += dx;\n break;\n case 1:\n y += dy;\n break;\n case 2:\n x -= dx;\n break;\n default:\n y -= dy;\n break;\n }\n return [x, y];\n };\n}\n\n// TODO reuse arrays?\nfunction zeroArray(n) {\n var a = [],\n i = -1;\n while (++i < n) a[i] = 0;\n return a;\n}\nfunction functor(d) {\n return typeof d === 'function' ? d : function () {\n return d;\n };\n}\nvar spirals = {\n archimedean: archimedeanSpiral,\n rectangular: rectangularSpiral\n};\nvar Output = ['x', 'y', 'font', 'fontSize', 'fontStyle', 'fontWeight', 'angle'];\nvar Params = ['text', 'font', 'rotate', 'fontSize', 'fontStyle', 'fontWeight'];\nfunction Wordcloud(params) {\n Transform.call(this, cloud(), params);\n}\nWordcloud.Definition = {\n 'type': 'Wordcloud',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'size',\n 'type': 'number',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'font',\n 'type': 'string',\n 'expr': true,\n 'default': 'sans-serif'\n }, {\n 'name': 'fontStyle',\n 'type': 'string',\n 'expr': true,\n 'default': 'normal'\n }, {\n 'name': 'fontWeight',\n 'type': 'string',\n 'expr': true,\n 'default': 'normal'\n }, {\n 'name': 'fontSize',\n 'type': 'number',\n 'expr': true,\n 'default': 14\n }, {\n 'name': 'fontSizeRange',\n 'type': 'number',\n 'array': 'nullable',\n 'default': [10, 50]\n }, {\n 'name': 'rotate',\n 'type': 'number',\n 'expr': true,\n 'default': 0\n }, {\n 'name': 'text',\n 'type': 'field'\n }, {\n 'name': 'spiral',\n 'type': 'string',\n 'values': ['archimedean', 'rectangular']\n }, {\n 'name': 'padding',\n 'type': 'number',\n 'expr': true\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': 7,\n 'default': Output\n }]\n};\ninherits(Wordcloud, Transform, {\n transform: function transform(_, pulse) {\n if (_.size && !(_.size[0] && _.size[1])) {\n error('Wordcloud size dimensions must be non-zero.');\n }\n function modp(param) {\n var p = _[param];\n return isFunction(p) && pulse.modified(p.fields);\n }\n var mod = _.modified();\n if (!(mod || pulse.changed(pulse.ADD_REM) || Params.some(modp))) return;\n var data = pulse.materialize(pulse.SOURCE).source,\n layout = this.value,\n as = _.as || Output;\n var fontSize = _.fontSize || 14,\n range;\n isFunction(fontSize) ? range = _.fontSizeRange : fontSize = constant(fontSize);\n\n // create font size scaling function as needed\n if (range) {\n var fsize = fontSize,\n sizeScale = scale('sqrt')().domain(extent(data, fsize)).range(range);\n fontSize = function fontSize(x) {\n return sizeScale(fsize(x));\n };\n }\n data.forEach(function (t) {\n t[as[0]] = NaN;\n t[as[1]] = NaN;\n t[as[3]] = 0;\n });\n\n // configure layout\n var words = layout.words(data).text(_.text).size(_.size || [500, 500]).padding(_.padding || 1).spiral(_.spiral || 'archimedean').rotate(_.rotate || 0).font(_.font || 'sans-serif').fontStyle(_.fontStyle || 'normal').fontWeight(_.fontWeight || 'normal').fontSize(fontSize).random(random).layout();\n var size = layout.size(),\n dx = size[0] >> 1,\n dy = size[1] >> 1,\n n = words.length;\n for (var i = 0, w, t; i < n; ++i) {\n w = words[i];\n t = w.datum;\n t[as[0]] = w.x + dx;\n t[as[1]] = w.y + dy;\n t[as[2]] = w.font;\n t[as[3]] = w.size;\n t[as[4]] = w.style;\n t[as[5]] = w.weight;\n t[as[6]] = w.rotate;\n }\n return pulse.reflow(mod).modifies(as);\n }\n});\nexport { Wordcloud as wordcloud };","import { bisectLeft, bisectRight, permute } from 'd3-array';\nimport { Transform } from 'vega-dataflow';\nimport { inherits } from 'vega-util';\nvar array8 = function array8(n) {\n return new Uint8Array(n);\n};\nvar array16 = function array16(n) {\n return new Uint16Array(n);\n};\nvar array32 = function array32(n) {\n return new Uint32Array(n);\n};\n\n/**\n * Maintains CrossFilter state.\n */\nfunction Bitmaps() {\n var width = 8,\n _data = [],\n _seen = array32(0),\n _curr = array(0, width),\n _prev = array(0, width);\n return {\n data: function data() {\n return _data;\n },\n seen: function seen() {\n return _seen = lengthen(_seen, _data.length);\n },\n add: function add(array) {\n for (var i = 0, j = _data.length, n = array.length, t; i < n; ++i) {\n t = array[i];\n t._index = j++;\n _data.push(t);\n }\n },\n remove: function remove(num, map) {\n // map: index -> boolean (true => remove)\n var n = _data.length,\n copy = Array(n - num),\n reindex = _data; // reuse old data array for index map\n var t, i, j;\n\n // seek forward to first removal\n for (i = 0; !map[i] && i < n; ++i) {\n copy[i] = _data[i];\n reindex[i] = i;\n }\n\n // condense arrays\n for (j = i; i < n; ++i) {\n t = _data[i];\n if (!map[i]) {\n reindex[i] = j;\n _curr[j] = _curr[i];\n _prev[j] = _prev[i];\n copy[j] = t;\n t._index = j++;\n } else {\n reindex[i] = -1;\n }\n _curr[i] = 0; // clear unused bits\n }\n\n _data = copy;\n return reindex;\n },\n size: function size() {\n return _data.length;\n },\n curr: function curr() {\n return _curr;\n },\n prev: function prev() {\n return _prev;\n },\n reset: function reset(k) {\n return _prev[k] = _curr[k];\n },\n all: function all() {\n return width < 0x101 ? 0xff : width < 0x10001 ? 0xffff : 0xffffffff;\n },\n set: function set(k, one) {\n _curr[k] |= one;\n },\n clear: function clear(k, one) {\n _curr[k] &= ~one;\n },\n resize: function resize(n, m) {\n var k = _curr.length;\n if (n > k || m > width) {\n width = Math.max(m, width);\n _curr = array(n, width, _curr);\n _prev = array(n, width);\n }\n }\n };\n}\nfunction lengthen(array, length, copy) {\n if (array.length >= length) return array;\n copy = copy || new array.constructor(length);\n copy.set(array);\n return copy;\n}\nfunction array(n, m, array) {\n var copy = (m < 0x101 ? array8 : m < 0x10001 ? array16 : array32)(n);\n if (array) copy.set(array);\n return copy;\n}\nfunction Dimension(index, i, query) {\n var bit = 1 << i;\n return {\n one: bit,\n zero: ~bit,\n range: query.slice(),\n bisect: index.bisect,\n index: index.index,\n size: index.size,\n onAdd: function onAdd(added, curr) {\n var dim = this,\n range = dim.bisect(dim.range, added.value),\n idx = added.index,\n lo = range[0],\n hi = range[1],\n n1 = idx.length;\n var i;\n for (i = 0; i < lo; ++i) curr[idx[i]] |= bit;\n for (i = hi; i < n1; ++i) curr[idx[i]] |= bit;\n return dim;\n }\n };\n}\n\n/**\n * Maintains a list of values, sorted by key.\n */\nfunction SortedIndex() {\n var _index = array32(0),\n value = [],\n _size = 0;\n function insert(key, data, base) {\n if (!data.length) return [];\n var n0 = _size,\n n1 = data.length,\n addi = array32(n1);\n var addv = Array(n1),\n oldv,\n oldi,\n i;\n for (i = 0; i < n1; ++i) {\n addv[i] = key(data[i]);\n addi[i] = i;\n }\n addv = sort(addv, addi);\n if (n0) {\n oldv = value;\n oldi = _index;\n value = Array(n0 + n1);\n _index = array32(n0 + n1);\n merge(base, oldv, oldi, n0, addv, addi, n1, value, _index);\n } else {\n if (base > 0) for (i = 0; i < n1; ++i) {\n addi[i] += base;\n }\n value = addv;\n _index = addi;\n }\n _size = n0 + n1;\n return {\n index: addi,\n value: addv\n };\n }\n function remove(num, map) {\n // map: index -> remove\n var n = _size;\n var idx, i, j;\n\n // seek forward to first removal\n for (i = 0; !map[_index[i]] && i < n; ++i);\n\n // condense index and value arrays\n for (j = i; i < n; ++i) {\n if (!map[idx = _index[i]]) {\n _index[j] = idx;\n value[j] = value[i];\n ++j;\n }\n }\n _size = n - num;\n }\n function reindex(map) {\n for (var i = 0, n = _size; i < n; ++i) {\n _index[i] = map[_index[i]];\n }\n }\n function bisect(range, array) {\n var n;\n if (array) {\n n = array.length;\n } else {\n array = value;\n n = _size;\n }\n return [bisectLeft(array, range[0], 0, n), bisectRight(array, range[1], 0, n)];\n }\n return {\n insert: insert,\n remove: remove,\n bisect: bisect,\n reindex: reindex,\n index: function index() {\n return _index;\n },\n size: function size() {\n return _size;\n }\n };\n}\nfunction sort(values, index) {\n values.sort.call(index, function (a, b) {\n var x = values[a],\n y = values[b];\n return x < y ? -1 : x > y ? 1 : 0;\n });\n return permute(values, index);\n}\nfunction merge(base, value0, index0, n0, value1, index1, n1, value, index) {\n var i0 = 0,\n i1 = 0,\n i;\n for (i = 0; i0 < n0 && i1 < n1; ++i) {\n if (value0[i0] < value1[i1]) {\n value[i] = value0[i0];\n index[i] = index0[i0++];\n } else {\n value[i] = value1[i1];\n index[i] = index1[i1++] + base;\n }\n }\n for (; i0 < n0; ++i0, ++i) {\n value[i] = value0[i0];\n index[i] = index0[i0];\n }\n for (; i1 < n1; ++i1, ++i) {\n value[i] = value1[i1];\n index[i] = index1[i1] + base;\n }\n}\n\n/**\n * An indexed multi-dimensional filter.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array} params.fields - An array of dimension accessors to filter.\n * @param {Array} params.query - An array of per-dimension range queries.\n */\nfunction CrossFilter(params) {\n Transform.call(this, Bitmaps(), params);\n this._indices = null;\n this._dims = null;\n}\nCrossFilter.Definition = {\n 'type': 'CrossFilter',\n 'metadata': {},\n 'params': [{\n 'name': 'fields',\n 'type': 'field',\n 'array': true,\n 'required': true\n }, {\n 'name': 'query',\n 'type': 'array',\n 'array': true,\n 'required': true,\n 'content': {\n 'type': 'number',\n 'array': true,\n 'length': 2\n }\n }]\n};\ninherits(CrossFilter, Transform, {\n transform: function transform(_, pulse) {\n if (!this._dims) {\n return this.init(_, pulse);\n } else {\n var init = _.modified('fields') || _.fields.some(function (f) {\n return pulse.modified(f.fields);\n });\n return init ? this.reinit(_, pulse) : this.eval(_, pulse);\n }\n },\n init: function init(_, pulse) {\n var fields = _.fields,\n query = _.query,\n indices = this._indices = {},\n dims = this._dims = [],\n m = query.length;\n var i = 0,\n key,\n index;\n\n // instantiate indices and dimensions\n for (; i < m; ++i) {\n key = fields[i].fname;\n index = indices[key] || (indices[key] = SortedIndex());\n dims.push(Dimension(index, i, query[i]));\n }\n return this.eval(_, pulse);\n },\n reinit: function reinit(_, pulse) {\n var output = pulse.materialize().fork(),\n fields = _.fields,\n query = _.query,\n indices = this._indices,\n dims = this._dims,\n bits = this.value,\n curr = bits.curr(),\n prev = bits.prev(),\n all = bits.all(),\n out = output.rem = output.add,\n mod = output.mod,\n m = query.length,\n adds = {};\n var add, index, key, mods, remMap, modMap, i, n, f;\n\n // set prev to current state\n prev.set(curr);\n\n // if pulse has remove tuples, process them first\n if (pulse.rem.length) {\n remMap = this.remove(_, pulse, output);\n }\n\n // if pulse has added tuples, add them to state\n if (pulse.add.length) {\n bits.add(pulse.add);\n }\n\n // if pulse has modified tuples, create an index map\n if (pulse.mod.length) {\n modMap = {};\n for (mods = pulse.mod, i = 0, n = mods.length; i < n; ++i) {\n modMap[mods[i]._index] = 1;\n }\n }\n\n // re-initialize indices as needed, update curr bitmap\n for (i = 0; i < m; ++i) {\n f = fields[i];\n if (!dims[i] || _.modified('fields', i) || pulse.modified(f.fields)) {\n key = f.fname;\n if (!(add = adds[key])) {\n indices[key] = index = SortedIndex();\n adds[key] = add = index.insert(f, pulse.source, 0);\n }\n dims[i] = Dimension(index, i, query[i]).onAdd(add, curr);\n }\n }\n\n // visit each tuple\n // if filter state changed, push index to add/rem\n // else if in mod and passes a filter, push index to mod\n for (i = 0, n = bits.data().length; i < n; ++i) {\n if (remMap[i]) {\n // skip if removed tuple\n continue;\n } else if (prev[i] !== curr[i]) {\n // add if state changed\n out.push(i);\n } else if (modMap[i] && curr[i] !== all) {\n // otherwise, pass mods through\n mod.push(i);\n }\n }\n bits.mask = (1 << m) - 1;\n return output;\n },\n eval: function _eval(_, pulse) {\n var output = pulse.materialize().fork(),\n m = this._dims.length;\n var mask = 0;\n if (pulse.rem.length) {\n this.remove(_, pulse, output);\n mask |= (1 << m) - 1;\n }\n if (_.modified('query') && !_.modified('fields')) {\n mask |= this.update(_, pulse, output);\n }\n if (pulse.add.length) {\n this.insert(_, pulse, output);\n mask |= (1 << m) - 1;\n }\n if (pulse.mod.length) {\n this.modify(pulse, output);\n mask |= (1 << m) - 1;\n }\n this.value.mask = mask;\n return output;\n },\n insert: function insert(_, pulse, output) {\n var tuples = pulse.add,\n bits = this.value,\n dims = this._dims,\n indices = this._indices,\n fields = _.fields,\n adds = {},\n out = output.add,\n n = bits.size() + tuples.length,\n m = dims.length;\n var k = bits.size(),\n j,\n key,\n add;\n\n // resize bitmaps and add tuples as needed\n bits.resize(n, m);\n bits.add(tuples);\n var curr = bits.curr(),\n prev = bits.prev(),\n all = bits.all();\n\n // add to dimensional indices\n for (j = 0; j < m; ++j) {\n key = fields[j].fname;\n add = adds[key] || (adds[key] = indices[key].insert(fields[j], tuples, k));\n dims[j].onAdd(add, curr);\n }\n\n // set previous filters, output if passes at least one filter\n for (; k < n; ++k) {\n prev[k] = all;\n if (curr[k] !== all) out.push(k);\n }\n },\n modify: function modify(pulse, output) {\n var out = output.mod,\n bits = this.value,\n curr = bits.curr(),\n all = bits.all(),\n tuples = pulse.mod;\n var i, n, k;\n for (i = 0, n = tuples.length; i < n; ++i) {\n k = tuples[i]._index;\n if (curr[k] !== all) out.push(k);\n }\n },\n remove: function remove(_, pulse, output) {\n var indices = this._indices,\n bits = this.value,\n curr = bits.curr(),\n prev = bits.prev(),\n all = bits.all(),\n map = {},\n out = output.rem,\n tuples = pulse.rem;\n var i, n, k, f;\n\n // process tuples, output if passes at least one filter\n for (i = 0, n = tuples.length; i < n; ++i) {\n k = tuples[i]._index;\n map[k] = 1; // build index map\n prev[k] = f = curr[k];\n curr[k] = all;\n if (f !== all) out.push(k);\n }\n\n // remove from dimensional indices\n for (k in indices) {\n indices[k].remove(n, map);\n }\n this.reindex(pulse, n, map);\n return map;\n },\n // reindex filters and indices after propagation completes\n reindex: function reindex(pulse, num, map) {\n var indices = this._indices,\n bits = this.value;\n pulse.runAfter(function () {\n var indexMap = bits.remove(num, map);\n for (var key in indices) indices[key].reindex(indexMap);\n });\n },\n update: function update(_, pulse, output) {\n var dims = this._dims,\n query = _.query,\n stamp = pulse.stamp,\n m = dims.length;\n var mask = 0,\n i,\n q;\n\n // survey how many queries have changed\n output.filters = 0;\n for (q = 0; q < m; ++q) {\n if (_.modified('query', q)) {\n i = q;\n ++mask;\n }\n }\n if (mask === 1) {\n // only one query changed, use more efficient update\n mask = dims[i].one;\n this.incrementOne(dims[i], query[i], output.add, output.rem);\n } else {\n // multiple queries changed, perform full record keeping\n for (q = 0, mask = 0; q < m; ++q) {\n if (!_.modified('query', q)) continue;\n mask |= dims[q].one;\n this.incrementAll(dims[q], query[q], stamp, output.add);\n output.rem = output.add; // duplicate add/rem for downstream resolve\n }\n }\n\n return mask;\n },\n incrementAll: function incrementAll(dim, query, stamp, out) {\n var bits = this.value,\n seen = bits.seen(),\n curr = bits.curr(),\n prev = bits.prev(),\n index = dim.index(),\n old = dim.bisect(dim.range),\n range = dim.bisect(query),\n lo1 = range[0],\n hi1 = range[1],\n lo0 = old[0],\n hi0 = old[1],\n one = dim.one;\n var i, j, k;\n\n // Fast incremental update based on previous lo index.\n if (lo1 < lo0) {\n for (i = lo1, j = Math.min(lo0, hi1); i < j; ++i) {\n k = index[i];\n if (seen[k] !== stamp) {\n prev[k] = curr[k];\n seen[k] = stamp;\n out.push(k);\n }\n curr[k] ^= one;\n }\n } else if (lo1 > lo0) {\n for (i = lo0, j = Math.min(lo1, hi0); i < j; ++i) {\n k = index[i];\n if (seen[k] !== stamp) {\n prev[k] = curr[k];\n seen[k] = stamp;\n out.push(k);\n }\n curr[k] ^= one;\n }\n }\n\n // Fast incremental update based on previous hi index.\n if (hi1 > hi0) {\n for (i = Math.max(lo1, hi0), j = hi1; i < j; ++i) {\n k = index[i];\n if (seen[k] !== stamp) {\n prev[k] = curr[k];\n seen[k] = stamp;\n out.push(k);\n }\n curr[k] ^= one;\n }\n } else if (hi1 < hi0) {\n for (i = Math.max(lo0, hi1), j = hi0; i < j; ++i) {\n k = index[i];\n if (seen[k] !== stamp) {\n prev[k] = curr[k];\n seen[k] = stamp;\n out.push(k);\n }\n curr[k] ^= one;\n }\n }\n dim.range = query.slice();\n },\n incrementOne: function incrementOne(dim, query, add, rem) {\n var bits = this.value,\n curr = bits.curr(),\n index = dim.index(),\n old = dim.bisect(dim.range),\n range = dim.bisect(query),\n lo1 = range[0],\n hi1 = range[1],\n lo0 = old[0],\n hi0 = old[1],\n one = dim.one;\n var i, j, k;\n\n // Fast incremental update based on previous lo index.\n if (lo1 < lo0) {\n for (i = lo1, j = Math.min(lo0, hi1); i < j; ++i) {\n k = index[i];\n curr[k] ^= one;\n add.push(k);\n }\n } else if (lo1 > lo0) {\n for (i = lo0, j = Math.min(lo1, hi0); i < j; ++i) {\n k = index[i];\n curr[k] ^= one;\n rem.push(k);\n }\n }\n\n // Fast incremental update based on previous hi index.\n if (hi1 > hi0) {\n for (i = Math.max(lo1, hi0), j = hi1; i < j; ++i) {\n k = index[i];\n curr[k] ^= one;\n add.push(k);\n }\n } else if (hi1 < hi0) {\n for (i = Math.max(lo0, hi1), j = hi0; i < j; ++i) {\n k = index[i];\n curr[k] ^= one;\n rem.push(k);\n }\n }\n dim.range = query.slice();\n }\n});\n\n/**\n * Selectively filters tuples by resolving against a filter bitmap.\n * Useful for processing the output of a cross-filter transform.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {object} params.ignore - A bit mask indicating which filters to ignore.\n * @param {object} params.filter - The per-tuple filter bitmaps. Typically this\n * parameter value is a reference to a {@link CrossFilter} transform.\n */\nfunction ResolveFilter(params) {\n Transform.call(this, null, params);\n}\nResolveFilter.Definition = {\n 'type': 'ResolveFilter',\n 'metadata': {},\n 'params': [{\n 'name': 'ignore',\n 'type': 'number',\n 'required': true,\n 'description': 'A bit mask indicating which filters to ignore.'\n }, {\n 'name': 'filter',\n 'type': 'object',\n 'required': true,\n 'description': 'Per-tuple filter bitmaps from a CrossFilter transform.'\n }]\n};\ninherits(ResolveFilter, Transform, {\n transform: function transform(_, pulse) {\n var ignore = ~(_.ignore || 0),\n // bit mask where zeros -> dims to ignore\n bitmap = _.filter,\n mask = bitmap.mask;\n\n // exit early if no relevant filter changes\n if ((mask & ignore) === 0) return pulse.StopPropagation;\n var output = pulse.fork(pulse.ALL),\n data = bitmap.data(),\n curr = bitmap.curr(),\n prev = bitmap.prev(),\n pass = function pass(k) {\n return !(curr[k] & ignore) ? data[k] : null;\n };\n\n // propagate all mod tuples that pass the filter\n output.filter(output.MOD, pass);\n\n // determine add & rem tuples via filter functions\n // for efficiency, we do *not* populate new arrays,\n // instead we add filter functions applied downstream\n\n if (!(mask & mask - 1)) {\n // only one filter changed\n output.filter(output.ADD, pass);\n output.filter(output.REM, function (k) {\n return (curr[k] & ignore) === mask ? data[k] : null;\n });\n } else {\n // multiple filters changed\n output.filter(output.ADD, function (k) {\n var c = curr[k] & ignore,\n f = !c && c ^ prev[k] & ignore;\n return f ? data[k] : null;\n });\n output.filter(output.REM, function (k) {\n var c = curr[k] & ignore,\n f = c && !(c ^ (c ^ prev[k] & ignore));\n return f ? data[k] : null;\n });\n }\n\n // add filter to source data in case of reflow...\n return output.filter(output.SOURCE, function (t) {\n return pass(t._index);\n });\n }\n});\nexport { CrossFilter as crossfilter, ResolveFilter as resolvefilter };","export default function permute(source, keys) {\n return Array.from(keys, function (key) {\n return source[key];\n });\n}","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _asyncToGenerator from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\";\nimport _regeneratorRuntime from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/regenerator/index.js\";\nimport { extend, error, stringValue, isFunction, toBoolean, toNumber, toDate, toString, identity, field, isObject, isArray, isIterable, hasOwnProperty } from 'vega-util';\nimport { dsvFormat } from 'd3-dsv';\nimport { feature, mesh } from 'topojson-client';\nimport { timeFormatDefaultLocale } from 'vega-format';\n\n// Matches absolute URLs with optional protocol\n// https://... file://... //...\nvar protocol_re = /^(data:|([A-Za-z]+:)?\\/\\/)/;\n\n// Matches allowed URIs. From https://github.com/cure53/DOMPurify/blob/master/src/regexp.js with added file://\nvar allowed_re = /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i; // eslint-disable-line no-useless-escape\nvar whitespace_re = /[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205f\\u3000]/g; // eslint-disable-line no-control-regex\n\n// Special treatment in node.js for the file: protocol\nvar fileProtocol = 'file://';\n\n/**\n * Factory for a loader constructor that provides methods for requesting\n * files from either the network or disk, and for sanitizing request URIs.\n * @param {function} fetch - The Fetch API for HTTP network requests.\n * If null or undefined, HTTP loading will be disabled.\n * @param {object} fs - The file system interface for file loading.\n * If null or undefined, local file loading will be disabled.\n * @return {function} A loader constructor with the following signature:\n * param {object} [options] - Optional default loading options to use.\n * return {object} - A new loader instance.\n */\nfunction loaderFactory(fetch, fs) {\n return function (options) {\n return {\n options: options || {},\n sanitize: sanitize,\n load: load,\n fileAccess: !!fs,\n file: fileLoader(fs),\n http: httpLoader(fetch)\n };\n };\n}\n\n/**\n * Load an external resource, typically either from the web or from the local\n * filesystem. This function uses {@link sanitize} to first sanitize the uri,\n * then calls either {@link http} (for web requests) or {@link file} (for\n * filesystem loading).\n * @param {string} uri - The resource indicator (e.g., URL or filename).\n * @param {object} [options] - Optional loading options. These options will\n * override any existing default options.\n * @return {Promise} - A promise that resolves to the loaded content.\n */\nfunction load(_x, _x2) {\n return _load.apply(this, arguments);\n}\n/**\n * URI sanitizer function.\n * @param {string} uri - The uri (url or filename) to check.\n * @param {object} options - An options hash.\n * @return {Promise} - A promise that resolves to an object containing\n * sanitized uri data, or rejects it the input uri is deemed invalid.\n * The properties of the resolved object are assumed to be\n * valid attributes for an HTML 'a' tag. The sanitized uri *must* be\n * provided by the 'href' property of the returned object.\n */\nfunction _load() {\n _load = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(uri, options) {\n var opt, url;\n return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.sanitize(uri, options);\n case 2:\n opt = _context2.sent;\n url = opt.href;\n return _context2.abrupt(\"return\", opt.localFile ? this.file(url) : this.http(url, options));\n case 5:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n return _load.apply(this, arguments);\n}\nfunction sanitize(_x3, _x4) {\n return _sanitize.apply(this, arguments);\n}\n/**\n * File system loader factory.\n * @param {object} fs - The file system interface.\n * @return {function} - A file loader with the following signature:\n * param {string} filename - The file system path to load.\n * param {string} filename - The file system path to load.\n * return {Promise} A promise that resolves to the file contents.\n */\nfunction _sanitize() {\n _sanitize = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(uri, options) {\n var fileAccess, result, isFile, loadFile, base, isAllowed, hasProtocol;\n return _regeneratorRuntime.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n options = extend({}, this.options, options);\n fileAccess = this.fileAccess, result = {\n href: null\n };\n isAllowed = allowed_re.test(uri.replace(whitespace_re, ''));\n if (uri == null || typeof uri !== 'string' || !isAllowed) {\n error('Sanitize failure, invalid URI: ' + stringValue(uri));\n }\n hasProtocol = protocol_re.test(uri); // if relative url (no protocol/host), prepend baseURL\n if ((base = options.baseURL) && !hasProtocol) {\n // Ensure that there is a slash between the baseURL (e.g. hostname) and url\n if (!uri.startsWith('/') && !base.endsWith('/')) {\n uri = '/' + uri;\n }\n uri = base + uri;\n }\n\n // should we load from file system?\n loadFile = (isFile = uri.startsWith(fileProtocol)) || options.mode === 'file' || options.mode !== 'http' && !hasProtocol && fileAccess;\n if (isFile) {\n // strip file protocol\n uri = uri.slice(fileProtocol.length);\n } else if (uri.startsWith('//')) {\n if (options.defaultProtocol === 'file') {\n // if is file, strip protocol and set loadFile flag\n uri = uri.slice(2);\n loadFile = true;\n } else {\n // if relative protocol (starts with '//'), prepend default protocol\n uri = (options.defaultProtocol || 'http') + ':' + uri;\n }\n }\n\n // set non-enumerable mode flag to indicate local file load\n Object.defineProperty(result, 'localFile', {\n value: !!loadFile\n });\n\n // set uri\n result.href = uri;\n\n // set default result target, if specified\n if (options.target) {\n result.target = options.target + '';\n }\n\n // set default result rel, if specified (#1542)\n if (options.rel) {\n result.rel = options.rel + '';\n }\n\n // provide control over cross-origin image handling (#2238)\n // https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image\n if (options.context === 'image' && options.crossOrigin) {\n result.crossOrigin = options.crossOrigin + '';\n }\n\n // return\n return _context3.abrupt(\"return\", result);\n case 14:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n return _sanitize.apply(this, arguments);\n}\nfunction fileLoader(fs) {\n return fs ? function (filename) {\n return new Promise(function (accept, reject) {\n fs.readFile(filename, function (error, data) {\n if (error) reject(error);else accept(data);\n });\n });\n } : fileReject;\n}\n\n/**\n * Default file system loader that simply rejects.\n */\nfunction fileReject() {\n return _fileReject.apply(this, arguments);\n}\n/**\n * HTTP request handler factory.\n * @param {function} fetch - The Fetch API method.\n * @return {function} - An http loader with the following signature:\n * param {string} url - The url to request.\n * param {object} options - An options hash.\n * return {Promise} - A promise that resolves to the file contents.\n */\nfunction _fileReject() {\n _fileReject = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4() {\n return _regeneratorRuntime.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n error('No file system access.');\n case 1:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4);\n }));\n return _fileReject.apply(this, arguments);\n}\nfunction httpLoader(fetch) {\n return fetch ? /*#__PURE__*/function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(url, options) {\n var opt, type, response;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n opt = extend({}, this.options.http, options);\n type = options && options.response;\n _context.next = 4;\n return fetch(url, opt);\n case 4:\n response = _context.sent;\n return _context.abrupt(\"return\", !response.ok ? error(response.status + '' + response.statusText) : isFunction(response[type]) ? response[type]() : response.text());\n case 6:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n return function (_x5, _x6) {\n return _ref.apply(this, arguments);\n };\n }() : httpReject;\n}\n\n/**\n * Default http request handler that simply rejects.\n */\nfunction httpReject() {\n return _httpReject.apply(this, arguments);\n}\nfunction _httpReject() {\n _httpReject = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5() {\n return _regeneratorRuntime.wrap(function _callee5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n error('No HTTP fetch method available.');\n case 1:\n case \"end\":\n return _context5.stop();\n }\n }, _callee5);\n }));\n return _httpReject.apply(this, arguments);\n}\nvar isValid = function isValid(_) {\n return _ != null && _ === _;\n};\nvar isBoolean = function isBoolean(_) {\n return _ === 'true' || _ === 'false' || _ === true || _ === false;\n};\nvar isDate = function isDate(_) {\n return !Number.isNaN(Date.parse(_));\n};\nvar isNumber = function isNumber(_) {\n return !Number.isNaN(+_) && !(_ instanceof Date);\n};\nvar isInteger = function isInteger(_) {\n return isNumber(_) && Number.isInteger(+_);\n};\nvar typeParsers = {\n boolean: toBoolean,\n integer: toNumber,\n number: toNumber,\n date: toDate,\n string: toString,\n unknown: identity\n};\nvar typeTests = [isBoolean, isInteger, isNumber, isDate];\nvar typeList = ['boolean', 'integer', 'number', 'date'];\nfunction inferType(values, field) {\n if (!values || !values.length) return 'unknown';\n var n = values.length,\n m = typeTests.length,\n a = typeTests.map(function (_, i) {\n return i + 1;\n });\n for (var i = 0, t = 0, j, value; i < n; ++i) {\n value = field ? values[i][field] : values[i];\n for (j = 0; j < m; ++j) {\n if (a[j] && isValid(value) && !typeTests[j](value)) {\n a[j] = 0;\n ++t;\n if (t === typeTests.length) return 'string';\n }\n }\n }\n return typeList[a.reduce(function (u, v) {\n return u === 0 ? v : u;\n }, 0) - 1];\n}\nfunction inferTypes(data, fields) {\n return fields.reduce(function (types, field) {\n types[field] = inferType(data, field);\n return types;\n }, {});\n}\nfunction delimitedFormat(delimiter) {\n var parse = function parse(data, format) {\n var delim = {\n delimiter: delimiter\n };\n return dsv(data, format ? extend(format, delim) : delim);\n };\n parse.responseType = 'text';\n return parse;\n}\nfunction dsv(data, format) {\n if (format.header) {\n data = format.header.map(stringValue).join(format.delimiter) + '\\n' + data;\n }\n return dsvFormat(format.delimiter).parse(data + '');\n}\ndsv.responseType = 'text';\nfunction isBuffer(_) {\n return typeof Buffer === 'function' && isFunction(Buffer.isBuffer) ? Buffer.isBuffer(_) : false;\n}\nfunction json(data, format) {\n var prop = format && format.property ? field(format.property) : identity;\n return isObject(data) && !isBuffer(data) ? parseJSON(prop(data), format) : prop(JSON.parse(data));\n}\njson.responseType = 'json';\nfunction parseJSON(data, format) {\n if (!isArray(data) && isIterable(data)) {\n data = _toConsumableArray(data);\n }\n return format && format.copy ? JSON.parse(JSON.stringify(data)) : data;\n}\nvar filters = {\n interior: function interior(a, b) {\n return a !== b;\n },\n exterior: function exterior(a, b) {\n return a === b;\n }\n};\nfunction topojson(data, format) {\n var method, object, property, filter;\n data = json(data, format);\n if (format && format.feature) {\n method = feature;\n property = format.feature;\n } else if (format && format.mesh) {\n method = mesh;\n property = format.mesh;\n filter = filters[format.filter];\n } else {\n error('Missing TopoJSON feature or mesh parameter.');\n }\n object = (object = data.objects[property]) ? method(data, object, filter) : error('Invalid TopoJSON object: ' + property);\n return object && object.features || [object];\n}\ntopojson.responseType = 'json';\nvar format = {\n dsv: dsv,\n csv: delimitedFormat(','),\n tsv: delimitedFormat('\\t'),\n json: json,\n topojson: topojson\n};\nfunction formats(name, reader) {\n if (arguments.length > 1) {\n format[name] = reader;\n return this;\n } else {\n return hasOwnProperty(format, name) ? format[name] : null;\n }\n}\nfunction responseType(type) {\n var f = formats(type);\n return f && f.responseType || 'text';\n}\nfunction read(data, schema, timeParser, utcParser) {\n schema = schema || {};\n var reader = formats(schema.type || 'json');\n if (!reader) error('Unknown data format type: ' + schema.type);\n data = reader(data, schema);\n if (schema.parse) parse(data, schema.parse, timeParser, utcParser);\n if (hasOwnProperty(data, 'columns')) delete data.columns;\n return data;\n}\nfunction parse(data, types, timeParser, utcParser) {\n if (!data.length) return; // early exit for empty data\n\n var locale = timeFormatDefaultLocale();\n timeParser = timeParser || locale.timeParse;\n utcParser = utcParser || locale.utcParse;\n var fields = data.columns || Object.keys(data[0]),\n datum,\n field,\n i,\n j,\n n,\n m;\n if (types === 'auto') types = inferTypes(data, fields);\n fields = Object.keys(types);\n var parsers = fields.map(function (field) {\n var type = types[field];\n var parts, pattern;\n if (type && (type.startsWith('date:') || type.startsWith('utc:'))) {\n parts = type.split(/:(.+)?/, 2); // split on first :\n pattern = parts[1];\n if (pattern[0] === '\\'' && pattern[pattern.length - 1] === '\\'' || pattern[0] === '\"' && pattern[pattern.length - 1] === '\"') {\n pattern = pattern.slice(1, -1);\n }\n var _parse = parts[0] === 'utc' ? utcParser : timeParser;\n return _parse(pattern);\n }\n if (!typeParsers[type]) {\n throw Error('Illegal format pattern: ' + field + ':' + type);\n }\n return typeParsers[type];\n });\n for (i = 0, n = data.length, m = fields.length; i < n; ++i) {\n datum = data[i];\n for (j = 0; j < m; ++j) {\n field = fields[j];\n datum[field] = parsers[j](datum[field]);\n }\n }\n}\nvar loader = loaderFactory(typeof fetch !== 'undefined' && fetch,\n// use built-in fetch API\nnull // no file system access\n);\n\nexport { format, formats, inferType, inferTypes, loader, read, responseType, typeParsers };","import { error, toSet, isFunction, isString, hasOwnProperty } from 'vega-util';\nvar RawCode = 'RawCode';\nvar Literal = 'Literal';\nvar Property = 'Property';\nvar Identifier = 'Identifier';\nvar ArrayExpression = 'ArrayExpression';\nvar BinaryExpression = 'BinaryExpression';\nvar CallExpression = 'CallExpression';\nvar ConditionalExpression = 'ConditionalExpression';\nvar LogicalExpression = 'LogicalExpression';\nvar MemberExpression = 'MemberExpression';\nvar ObjectExpression = 'ObjectExpression';\nvar UnaryExpression = 'UnaryExpression';\nfunction ASTNode(type) {\n this.type = type;\n}\nASTNode.prototype.visit = function (visitor) {\n var c, i, n;\n if (visitor(this)) return 1;\n for (c = children(this), i = 0, n = c.length; i < n; ++i) {\n if (c[i].visit(visitor)) return 1;\n }\n};\nfunction children(node) {\n switch (node.type) {\n case ArrayExpression:\n return node.elements;\n case BinaryExpression:\n case LogicalExpression:\n return [node.left, node.right];\n case CallExpression:\n return [node.callee].concat(node.arguments);\n case ConditionalExpression:\n return [node.test, node.consequent, node.alternate];\n case MemberExpression:\n return [node.object, node.property];\n case ObjectExpression:\n return node.properties;\n case Property:\n return [node.key, node.value];\n case UnaryExpression:\n return [node.argument];\n case Identifier:\n case Literal:\n case RawCode:\n default:\n return [];\n }\n}\n\n/*\n The following expression parser is based on Esprima (http://esprima.org/).\n Original header comment and license for Esprima is included here:\n\n Copyright (C) 2013 Ariya Hidayat \n Copyright (C) 2013 Thaddee Tyl \n Copyright (C) 2013 Mathias Bynens \n Copyright (C) 2012 Ariya Hidayat \n Copyright (C) 2012 Mathias Bynens \n Copyright (C) 2012 Joost-Wim Boekesteijn \n Copyright (C) 2012 Kris Kowal \n Copyright (C) 2012 Yusuke Suzuki \n Copyright (C) 2012 Arpad Borsos \n Copyright (C) 2011 Ariya Hidayat \n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY\n DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\nvar TokenName, source, index, length, lookahead;\nvar TokenBooleanLiteral = 1,\n TokenEOF = 2,\n TokenIdentifier = 3,\n TokenKeyword = 4,\n TokenNullLiteral = 5,\n TokenNumericLiteral = 6,\n TokenPunctuator = 7,\n TokenStringLiteral = 8,\n TokenRegularExpression = 9;\nTokenName = {};\nTokenName[TokenBooleanLiteral] = 'Boolean';\nTokenName[TokenEOF] = '';\nTokenName[TokenIdentifier] = 'Identifier';\nTokenName[TokenKeyword] = 'Keyword';\nTokenName[TokenNullLiteral] = 'Null';\nTokenName[TokenNumericLiteral] = 'Numeric';\nTokenName[TokenPunctuator] = 'Punctuator';\nTokenName[TokenStringLiteral] = 'String';\nTokenName[TokenRegularExpression] = 'RegularExpression';\nvar SyntaxArrayExpression = 'ArrayExpression',\n SyntaxBinaryExpression = 'BinaryExpression',\n SyntaxCallExpression = 'CallExpression',\n SyntaxConditionalExpression = 'ConditionalExpression',\n SyntaxIdentifier = 'Identifier',\n SyntaxLiteral = 'Literal',\n SyntaxLogicalExpression = 'LogicalExpression',\n SyntaxMemberExpression = 'MemberExpression',\n SyntaxObjectExpression = 'ObjectExpression',\n SyntaxProperty = 'Property',\n SyntaxUnaryExpression = 'UnaryExpression';\n\n// Error messages should be identical to V8.\nvar MessageUnexpectedToken = 'Unexpected token %0',\n MessageUnexpectedNumber = 'Unexpected number',\n MessageUnexpectedString = 'Unexpected string',\n MessageUnexpectedIdentifier = 'Unexpected identifier',\n MessageUnexpectedReserved = 'Unexpected reserved word',\n MessageUnexpectedEOS = 'Unexpected end of input',\n MessageInvalidRegExp = 'Invalid regular expression',\n MessageUnterminatedRegExp = 'Invalid regular expression: missing /',\n MessageStrictOctalLiteral = 'Octal literals are not allowed in strict mode.',\n MessageStrictDuplicateProperty = 'Duplicate data property in object literal not allowed in strict mode';\nvar ILLEGAL = 'ILLEGAL',\n DISABLED = 'Disabled.';\n\n// See also tools/generate-unicode-regex.py.\nvar RegexNonAsciiIdentifierStart = new RegExp(\"[\\\\xAA\\\\xB5\\\\xBA\\\\xC0-\\\\xD6\\\\xD8-\\\\xF6\\\\xF8-\\\\u02C1\\\\u02C6-\\\\u02D1\\\\u02E0-\\\\u02E4\\\\u02EC\\\\u02EE\\\\u0370-\\\\u0374\\\\u0376\\\\u0377\\\\u037A-\\\\u037D\\\\u037F\\\\u0386\\\\u0388-\\\\u038A\\\\u038C\\\\u038E-\\\\u03A1\\\\u03A3-\\\\u03F5\\\\u03F7-\\\\u0481\\\\u048A-\\\\u052F\\\\u0531-\\\\u0556\\\\u0559\\\\u0561-\\\\u0587\\\\u05D0-\\\\u05EA\\\\u05F0-\\\\u05F2\\\\u0620-\\\\u064A\\\\u066E\\\\u066F\\\\u0671-\\\\u06D3\\\\u06D5\\\\u06E5\\\\u06E6\\\\u06EE\\\\u06EF\\\\u06FA-\\\\u06FC\\\\u06FF\\\\u0710\\\\u0712-\\\\u072F\\\\u074D-\\\\u07A5\\\\u07B1\\\\u07CA-\\\\u07EA\\\\u07F4\\\\u07F5\\\\u07FA\\\\u0800-\\\\u0815\\\\u081A\\\\u0824\\\\u0828\\\\u0840-\\\\u0858\\\\u08A0-\\\\u08B2\\\\u0904-\\\\u0939\\\\u093D\\\\u0950\\\\u0958-\\\\u0961\\\\u0971-\\\\u0980\\\\u0985-\\\\u098C\\\\u098F\\\\u0990\\\\u0993-\\\\u09A8\\\\u09AA-\\\\u09B0\\\\u09B2\\\\u09B6-\\\\u09B9\\\\u09BD\\\\u09CE\\\\u09DC\\\\u09DD\\\\u09DF-\\\\u09E1\\\\u09F0\\\\u09F1\\\\u0A05-\\\\u0A0A\\\\u0A0F\\\\u0A10\\\\u0A13-\\\\u0A28\\\\u0A2A-\\\\u0A30\\\\u0A32\\\\u0A33\\\\u0A35\\\\u0A36\\\\u0A38\\\\u0A39\\\\u0A59-\\\\u0A5C\\\\u0A5E\\\\u0A72-\\\\u0A74\\\\u0A85-\\\\u0A8D\\\\u0A8F-\\\\u0A91\\\\u0A93-\\\\u0AA8\\\\u0AAA-\\\\u0AB0\\\\u0AB2\\\\u0AB3\\\\u0AB5-\\\\u0AB9\\\\u0ABD\\\\u0AD0\\\\u0AE0\\\\u0AE1\\\\u0B05-\\\\u0B0C\\\\u0B0F\\\\u0B10\\\\u0B13-\\\\u0B28\\\\u0B2A-\\\\u0B30\\\\u0B32\\\\u0B33\\\\u0B35-\\\\u0B39\\\\u0B3D\\\\u0B5C\\\\u0B5D\\\\u0B5F-\\\\u0B61\\\\u0B71\\\\u0B83\\\\u0B85-\\\\u0B8A\\\\u0B8E-\\\\u0B90\\\\u0B92-\\\\u0B95\\\\u0B99\\\\u0B9A\\\\u0B9C\\\\u0B9E\\\\u0B9F\\\\u0BA3\\\\u0BA4\\\\u0BA8-\\\\u0BAA\\\\u0BAE-\\\\u0BB9\\\\u0BD0\\\\u0C05-\\\\u0C0C\\\\u0C0E-\\\\u0C10\\\\u0C12-\\\\u0C28\\\\u0C2A-\\\\u0C39\\\\u0C3D\\\\u0C58\\\\u0C59\\\\u0C60\\\\u0C61\\\\u0C85-\\\\u0C8C\\\\u0C8E-\\\\u0C90\\\\u0C92-\\\\u0CA8\\\\u0CAA-\\\\u0CB3\\\\u0CB5-\\\\u0CB9\\\\u0CBD\\\\u0CDE\\\\u0CE0\\\\u0CE1\\\\u0CF1\\\\u0CF2\\\\u0D05-\\\\u0D0C\\\\u0D0E-\\\\u0D10\\\\u0D12-\\\\u0D3A\\\\u0D3D\\\\u0D4E\\\\u0D60\\\\u0D61\\\\u0D7A-\\\\u0D7F\\\\u0D85-\\\\u0D96\\\\u0D9A-\\\\u0DB1\\\\u0DB3-\\\\u0DBB\\\\u0DBD\\\\u0DC0-\\\\u0DC6\\\\u0E01-\\\\u0E30\\\\u0E32\\\\u0E33\\\\u0E40-\\\\u0E46\\\\u0E81\\\\u0E82\\\\u0E84\\\\u0E87\\\\u0E88\\\\u0E8A\\\\u0E8D\\\\u0E94-\\\\u0E97\\\\u0E99-\\\\u0E9F\\\\u0EA1-\\\\u0EA3\\\\u0EA5\\\\u0EA7\\\\u0EAA\\\\u0EAB\\\\u0EAD-\\\\u0EB0\\\\u0EB2\\\\u0EB3\\\\u0EBD\\\\u0EC0-\\\\u0EC4\\\\u0EC6\\\\u0EDC-\\\\u0EDF\\\\u0F00\\\\u0F40-\\\\u0F47\\\\u0F49-\\\\u0F6C\\\\u0F88-\\\\u0F8C\\\\u1000-\\\\u102A\\\\u103F\\\\u1050-\\\\u1055\\\\u105A-\\\\u105D\\\\u1061\\\\u1065\\\\u1066\\\\u106E-\\\\u1070\\\\u1075-\\\\u1081\\\\u108E\\\\u10A0-\\\\u10C5\\\\u10C7\\\\u10CD\\\\u10D0-\\\\u10FA\\\\u10FC-\\\\u1248\\\\u124A-\\\\u124D\\\\u1250-\\\\u1256\\\\u1258\\\\u125A-\\\\u125D\\\\u1260-\\\\u1288\\\\u128A-\\\\u128D\\\\u1290-\\\\u12B0\\\\u12B2-\\\\u12B5\\\\u12B8-\\\\u12BE\\\\u12C0\\\\u12C2-\\\\u12C5\\\\u12C8-\\\\u12D6\\\\u12D8-\\\\u1310\\\\u1312-\\\\u1315\\\\u1318-\\\\u135A\\\\u1380-\\\\u138F\\\\u13A0-\\\\u13F4\\\\u1401-\\\\u166C\\\\u166F-\\\\u167F\\\\u1681-\\\\u169A\\\\u16A0-\\\\u16EA\\\\u16EE-\\\\u16F8\\\\u1700-\\\\u170C\\\\u170E-\\\\u1711\\\\u1720-\\\\u1731\\\\u1740-\\\\u1751\\\\u1760-\\\\u176C\\\\u176E-\\\\u1770\\\\u1780-\\\\u17B3\\\\u17D7\\\\u17DC\\\\u1820-\\\\u1877\\\\u1880-\\\\u18A8\\\\u18AA\\\\u18B0-\\\\u18F5\\\\u1900-\\\\u191E\\\\u1950-\\\\u196D\\\\u1970-\\\\u1974\\\\u1980-\\\\u19AB\\\\u19C1-\\\\u19C7\\\\u1A00-\\\\u1A16\\\\u1A20-\\\\u1A54\\\\u1AA7\\\\u1B05-\\\\u1B33\\\\u1B45-\\\\u1B4B\\\\u1B83-\\\\u1BA0\\\\u1BAE\\\\u1BAF\\\\u1BBA-\\\\u1BE5\\\\u1C00-\\\\u1C23\\\\u1C4D-\\\\u1C4F\\\\u1C5A-\\\\u1C7D\\\\u1CE9-\\\\u1CEC\\\\u1CEE-\\\\u1CF1\\\\u1CF5\\\\u1CF6\\\\u1D00-\\\\u1DBF\\\\u1E00-\\\\u1F15\\\\u1F18-\\\\u1F1D\\\\u1F20-\\\\u1F45\\\\u1F48-\\\\u1F4D\\\\u1F50-\\\\u1F57\\\\u1F59\\\\u1F5B\\\\u1F5D\\\\u1F5F-\\\\u1F7D\\\\u1F80-\\\\u1FB4\\\\u1FB6-\\\\u1FBC\\\\u1FBE\\\\u1FC2-\\\\u1FC4\\\\u1FC6-\\\\u1FCC\\\\u1FD0-\\\\u1FD3\\\\u1FD6-\\\\u1FDB\\\\u1FE0-\\\\u1FEC\\\\u1FF2-\\\\u1FF4\\\\u1FF6-\\\\u1FFC\\\\u2071\\\\u207F\\\\u2090-\\\\u209C\\\\u2102\\\\u2107\\\\u210A-\\\\u2113\\\\u2115\\\\u2119-\\\\u211D\\\\u2124\\\\u2126\\\\u2128\\\\u212A-\\\\u212D\\\\u212F-\\\\u2139\\\\u213C-\\\\u213F\\\\u2145-\\\\u2149\\\\u214E\\\\u2160-\\\\u2188\\\\u2C00-\\\\u2C2E\\\\u2C30-\\\\u2C5E\\\\u2C60-\\\\u2CE4\\\\u2CEB-\\\\u2CEE\\\\u2CF2\\\\u2CF3\\\\u2D00-\\\\u2D25\\\\u2D27\\\\u2D2D\\\\u2D30-\\\\u2D67\\\\u2D6F\\\\u2D80-\\\\u2D96\\\\u2DA0-\\\\u2DA6\\\\u2DA8-\\\\u2DAE\\\\u2DB0-\\\\u2DB6\\\\u2DB8-\\\\u2DBE\\\\u2DC0-\\\\u2DC6\\\\u2DC8-\\\\u2DCE\\\\u2DD0-\\\\u2DD6\\\\u2DD8-\\\\u2DDE\\\\u2E2F\\\\u3005-\\\\u3007\\\\u3021-\\\\u3029\\\\u3031-\\\\u3035\\\\u3038-\\\\u303C\\\\u3041-\\\\u3096\\\\u309D-\\\\u309F\\\\u30A1-\\\\u30FA\\\\u30FC-\\\\u30FF\\\\u3105-\\\\u312D\\\\u3131-\\\\u318E\\\\u31A0-\\\\u31BA\\\\u31F0-\\\\u31FF\\\\u3400-\\\\u4DB5\\\\u4E00-\\\\u9FCC\\\\uA000-\\\\uA48C\\\\uA4D0-\\\\uA4FD\\\\uA500-\\\\uA60C\\\\uA610-\\\\uA61F\\\\uA62A\\\\uA62B\\\\uA640-\\\\uA66E\\\\uA67F-\\\\uA69D\\\\uA6A0-\\\\uA6EF\\\\uA717-\\\\uA71F\\\\uA722-\\\\uA788\\\\uA78B-\\\\uA78E\\\\uA790-\\\\uA7AD\\\\uA7B0\\\\uA7B1\\\\uA7F7-\\\\uA801\\\\uA803-\\\\uA805\\\\uA807-\\\\uA80A\\\\uA80C-\\\\uA822\\\\uA840-\\\\uA873\\\\uA882-\\\\uA8B3\\\\uA8F2-\\\\uA8F7\\\\uA8FB\\\\uA90A-\\\\uA925\\\\uA930-\\\\uA946\\\\uA960-\\\\uA97C\\\\uA984-\\\\uA9B2\\\\uA9CF\\\\uA9E0-\\\\uA9E4\\\\uA9E6-\\\\uA9EF\\\\uA9FA-\\\\uA9FE\\\\uAA00-\\\\uAA28\\\\uAA40-\\\\uAA42\\\\uAA44-\\\\uAA4B\\\\uAA60-\\\\uAA76\\\\uAA7A\\\\uAA7E-\\\\uAAAF\\\\uAAB1\\\\uAAB5\\\\uAAB6\\\\uAAB9-\\\\uAABD\\\\uAAC0\\\\uAAC2\\\\uAADB-\\\\uAADD\\\\uAAE0-\\\\uAAEA\\\\uAAF2-\\\\uAAF4\\\\uAB01-\\\\uAB06\\\\uAB09-\\\\uAB0E\\\\uAB11-\\\\uAB16\\\\uAB20-\\\\uAB26\\\\uAB28-\\\\uAB2E\\\\uAB30-\\\\uAB5A\\\\uAB5C-\\\\uAB5F\\\\uAB64\\\\uAB65\\\\uABC0-\\\\uABE2\\\\uAC00-\\\\uD7A3\\\\uD7B0-\\\\uD7C6\\\\uD7CB-\\\\uD7FB\\\\uF900-\\\\uFA6D\\\\uFA70-\\\\uFAD9\\\\uFB00-\\\\uFB06\\\\uFB13-\\\\uFB17\\\\uFB1D\\\\uFB1F-\\\\uFB28\\\\uFB2A-\\\\uFB36\\\\uFB38-\\\\uFB3C\\\\uFB3E\\\\uFB40\\\\uFB41\\\\uFB43\\\\uFB44\\\\uFB46-\\\\uFBB1\\\\uFBD3-\\\\uFD3D\\\\uFD50-\\\\uFD8F\\\\uFD92-\\\\uFDC7\\\\uFDF0-\\\\uFDFB\\\\uFE70-\\\\uFE74\\\\uFE76-\\\\uFEFC\\\\uFF21-\\\\uFF3A\\\\uFF41-\\\\uFF5A\\\\uFF66-\\\\uFFBE\\\\uFFC2-\\\\uFFC7\\\\uFFCA-\\\\uFFCF\\\\uFFD2-\\\\uFFD7\\\\uFFDA-\\\\uFFDC]\"),\n // eslint-disable-next-line no-misleading-character-class\n RegexNonAsciiIdentifierPart = new RegExp(\"[\\\\xAA\\\\xB5\\\\xBA\\\\xC0-\\\\xD6\\\\xD8-\\\\xF6\\\\xF8-\\\\u02C1\\\\u02C6-\\\\u02D1\\\\u02E0-\\\\u02E4\\\\u02EC\\\\u02EE\\\\u0300-\\\\u0374\\\\u0376\\\\u0377\\\\u037A-\\\\u037D\\\\u037F\\\\u0386\\\\u0388-\\\\u038A\\\\u038C\\\\u038E-\\\\u03A1\\\\u03A3-\\\\u03F5\\\\u03F7-\\\\u0481\\\\u0483-\\\\u0487\\\\u048A-\\\\u052F\\\\u0531-\\\\u0556\\\\u0559\\\\u0561-\\\\u0587\\\\u0591-\\\\u05BD\\\\u05BF\\\\u05C1\\\\u05C2\\\\u05C4\\\\u05C5\\\\u05C7\\\\u05D0-\\\\u05EA\\\\u05F0-\\\\u05F2\\\\u0610-\\\\u061A\\\\u0620-\\\\u0669\\\\u066E-\\\\u06D3\\\\u06D5-\\\\u06DC\\\\u06DF-\\\\u06E8\\\\u06EA-\\\\u06FC\\\\u06FF\\\\u0710-\\\\u074A\\\\u074D-\\\\u07B1\\\\u07C0-\\\\u07F5\\\\u07FA\\\\u0800-\\\\u082D\\\\u0840-\\\\u085B\\\\u08A0-\\\\u08B2\\\\u08E4-\\\\u0963\\\\u0966-\\\\u096F\\\\u0971-\\\\u0983\\\\u0985-\\\\u098C\\\\u098F\\\\u0990\\\\u0993-\\\\u09A8\\\\u09AA-\\\\u09B0\\\\u09B2\\\\u09B6-\\\\u09B9\\\\u09BC-\\\\u09C4\\\\u09C7\\\\u09C8\\\\u09CB-\\\\u09CE\\\\u09D7\\\\u09DC\\\\u09DD\\\\u09DF-\\\\u09E3\\\\u09E6-\\\\u09F1\\\\u0A01-\\\\u0A03\\\\u0A05-\\\\u0A0A\\\\u0A0F\\\\u0A10\\\\u0A13-\\\\u0A28\\\\u0A2A-\\\\u0A30\\\\u0A32\\\\u0A33\\\\u0A35\\\\u0A36\\\\u0A38\\\\u0A39\\\\u0A3C\\\\u0A3E-\\\\u0A42\\\\u0A47\\\\u0A48\\\\u0A4B-\\\\u0A4D\\\\u0A51\\\\u0A59-\\\\u0A5C\\\\u0A5E\\\\u0A66-\\\\u0A75\\\\u0A81-\\\\u0A83\\\\u0A85-\\\\u0A8D\\\\u0A8F-\\\\u0A91\\\\u0A93-\\\\u0AA8\\\\u0AAA-\\\\u0AB0\\\\u0AB2\\\\u0AB3\\\\u0AB5-\\\\u0AB9\\\\u0ABC-\\\\u0AC5\\\\u0AC7-\\\\u0AC9\\\\u0ACB-\\\\u0ACD\\\\u0AD0\\\\u0AE0-\\\\u0AE3\\\\u0AE6-\\\\u0AEF\\\\u0B01-\\\\u0B03\\\\u0B05-\\\\u0B0C\\\\u0B0F\\\\u0B10\\\\u0B13-\\\\u0B28\\\\u0B2A-\\\\u0B30\\\\u0B32\\\\u0B33\\\\u0B35-\\\\u0B39\\\\u0B3C-\\\\u0B44\\\\u0B47\\\\u0B48\\\\u0B4B-\\\\u0B4D\\\\u0B56\\\\u0B57\\\\u0B5C\\\\u0B5D\\\\u0B5F-\\\\u0B63\\\\u0B66-\\\\u0B6F\\\\u0B71\\\\u0B82\\\\u0B83\\\\u0B85-\\\\u0B8A\\\\u0B8E-\\\\u0B90\\\\u0B92-\\\\u0B95\\\\u0B99\\\\u0B9A\\\\u0B9C\\\\u0B9E\\\\u0B9F\\\\u0BA3\\\\u0BA4\\\\u0BA8-\\\\u0BAA\\\\u0BAE-\\\\u0BB9\\\\u0BBE-\\\\u0BC2\\\\u0BC6-\\\\u0BC8\\\\u0BCA-\\\\u0BCD\\\\u0BD0\\\\u0BD7\\\\u0BE6-\\\\u0BEF\\\\u0C00-\\\\u0C03\\\\u0C05-\\\\u0C0C\\\\u0C0E-\\\\u0C10\\\\u0C12-\\\\u0C28\\\\u0C2A-\\\\u0C39\\\\u0C3D-\\\\u0C44\\\\u0C46-\\\\u0C48\\\\u0C4A-\\\\u0C4D\\\\u0C55\\\\u0C56\\\\u0C58\\\\u0C59\\\\u0C60-\\\\u0C63\\\\u0C66-\\\\u0C6F\\\\u0C81-\\\\u0C83\\\\u0C85-\\\\u0C8C\\\\u0C8E-\\\\u0C90\\\\u0C92-\\\\u0CA8\\\\u0CAA-\\\\u0CB3\\\\u0CB5-\\\\u0CB9\\\\u0CBC-\\\\u0CC4\\\\u0CC6-\\\\u0CC8\\\\u0CCA-\\\\u0CCD\\\\u0CD5\\\\u0CD6\\\\u0CDE\\\\u0CE0-\\\\u0CE3\\\\u0CE6-\\\\u0CEF\\\\u0CF1\\\\u0CF2\\\\u0D01-\\\\u0D03\\\\u0D05-\\\\u0D0C\\\\u0D0E-\\\\u0D10\\\\u0D12-\\\\u0D3A\\\\u0D3D-\\\\u0D44\\\\u0D46-\\\\u0D48\\\\u0D4A-\\\\u0D4E\\\\u0D57\\\\u0D60-\\\\u0D63\\\\u0D66-\\\\u0D6F\\\\u0D7A-\\\\u0D7F\\\\u0D82\\\\u0D83\\\\u0D85-\\\\u0D96\\\\u0D9A-\\\\u0DB1\\\\u0DB3-\\\\u0DBB\\\\u0DBD\\\\u0DC0-\\\\u0DC6\\\\u0DCA\\\\u0DCF-\\\\u0DD4\\\\u0DD6\\\\u0DD8-\\\\u0DDF\\\\u0DE6-\\\\u0DEF\\\\u0DF2\\\\u0DF3\\\\u0E01-\\\\u0E3A\\\\u0E40-\\\\u0E4E\\\\u0E50-\\\\u0E59\\\\u0E81\\\\u0E82\\\\u0E84\\\\u0E87\\\\u0E88\\\\u0E8A\\\\u0E8D\\\\u0E94-\\\\u0E97\\\\u0E99-\\\\u0E9F\\\\u0EA1-\\\\u0EA3\\\\u0EA5\\\\u0EA7\\\\u0EAA\\\\u0EAB\\\\u0EAD-\\\\u0EB9\\\\u0EBB-\\\\u0EBD\\\\u0EC0-\\\\u0EC4\\\\u0EC6\\\\u0EC8-\\\\u0ECD\\\\u0ED0-\\\\u0ED9\\\\u0EDC-\\\\u0EDF\\\\u0F00\\\\u0F18\\\\u0F19\\\\u0F20-\\\\u0F29\\\\u0F35\\\\u0F37\\\\u0F39\\\\u0F3E-\\\\u0F47\\\\u0F49-\\\\u0F6C\\\\u0F71-\\\\u0F84\\\\u0F86-\\\\u0F97\\\\u0F99-\\\\u0FBC\\\\u0FC6\\\\u1000-\\\\u1049\\\\u1050-\\\\u109D\\\\u10A0-\\\\u10C5\\\\u10C7\\\\u10CD\\\\u10D0-\\\\u10FA\\\\u10FC-\\\\u1248\\\\u124A-\\\\u124D\\\\u1250-\\\\u1256\\\\u1258\\\\u125A-\\\\u125D\\\\u1260-\\\\u1288\\\\u128A-\\\\u128D\\\\u1290-\\\\u12B0\\\\u12B2-\\\\u12B5\\\\u12B8-\\\\u12BE\\\\u12C0\\\\u12C2-\\\\u12C5\\\\u12C8-\\\\u12D6\\\\u12D8-\\\\u1310\\\\u1312-\\\\u1315\\\\u1318-\\\\u135A\\\\u135D-\\\\u135F\\\\u1380-\\\\u138F\\\\u13A0-\\\\u13F4\\\\u1401-\\\\u166C\\\\u166F-\\\\u167F\\\\u1681-\\\\u169A\\\\u16A0-\\\\u16EA\\\\u16EE-\\\\u16F8\\\\u1700-\\\\u170C\\\\u170E-\\\\u1714\\\\u1720-\\\\u1734\\\\u1740-\\\\u1753\\\\u1760-\\\\u176C\\\\u176E-\\\\u1770\\\\u1772\\\\u1773\\\\u1780-\\\\u17D3\\\\u17D7\\\\u17DC\\\\u17DD\\\\u17E0-\\\\u17E9\\\\u180B-\\\\u180D\\\\u1810-\\\\u1819\\\\u1820-\\\\u1877\\\\u1880-\\\\u18AA\\\\u18B0-\\\\u18F5\\\\u1900-\\\\u191E\\\\u1920-\\\\u192B\\\\u1930-\\\\u193B\\\\u1946-\\\\u196D\\\\u1970-\\\\u1974\\\\u1980-\\\\u19AB\\\\u19B0-\\\\u19C9\\\\u19D0-\\\\u19D9\\\\u1A00-\\\\u1A1B\\\\u1A20-\\\\u1A5E\\\\u1A60-\\\\u1A7C\\\\u1A7F-\\\\u1A89\\\\u1A90-\\\\u1A99\\\\u1AA7\\\\u1AB0-\\\\u1ABD\\\\u1B00-\\\\u1B4B\\\\u1B50-\\\\u1B59\\\\u1B6B-\\\\u1B73\\\\u1B80-\\\\u1BF3\\\\u1C00-\\\\u1C37\\\\u1C40-\\\\u1C49\\\\u1C4D-\\\\u1C7D\\\\u1CD0-\\\\u1CD2\\\\u1CD4-\\\\u1CF6\\\\u1CF8\\\\u1CF9\\\\u1D00-\\\\u1DF5\\\\u1DFC-\\\\u1F15\\\\u1F18-\\\\u1F1D\\\\u1F20-\\\\u1F45\\\\u1F48-\\\\u1F4D\\\\u1F50-\\\\u1F57\\\\u1F59\\\\u1F5B\\\\u1F5D\\\\u1F5F-\\\\u1F7D\\\\u1F80-\\\\u1FB4\\\\u1FB6-\\\\u1FBC\\\\u1FBE\\\\u1FC2-\\\\u1FC4\\\\u1FC6-\\\\u1FCC\\\\u1FD0-\\\\u1FD3\\\\u1FD6-\\\\u1FDB\\\\u1FE0-\\\\u1FEC\\\\u1FF2-\\\\u1FF4\\\\u1FF6-\\\\u1FFC\\\\u200C\\\\u200D\\\\u203F\\\\u2040\\\\u2054\\\\u2071\\\\u207F\\\\u2090-\\\\u209C\\\\u20D0-\\\\u20DC\\\\u20E1\\\\u20E5-\\\\u20F0\\\\u2102\\\\u2107\\\\u210A-\\\\u2113\\\\u2115\\\\u2119-\\\\u211D\\\\u2124\\\\u2126\\\\u2128\\\\u212A-\\\\u212D\\\\u212F-\\\\u2139\\\\u213C-\\\\u213F\\\\u2145-\\\\u2149\\\\u214E\\\\u2160-\\\\u2188\\\\u2C00-\\\\u2C2E\\\\u2C30-\\\\u2C5E\\\\u2C60-\\\\u2CE4\\\\u2CEB-\\\\u2CF3\\\\u2D00-\\\\u2D25\\\\u2D27\\\\u2D2D\\\\u2D30-\\\\u2D67\\\\u2D6F\\\\u2D7F-\\\\u2D96\\\\u2DA0-\\\\u2DA6\\\\u2DA8-\\\\u2DAE\\\\u2DB0-\\\\u2DB6\\\\u2DB8-\\\\u2DBE\\\\u2DC0-\\\\u2DC6\\\\u2DC8-\\\\u2DCE\\\\u2DD0-\\\\u2DD6\\\\u2DD8-\\\\u2DDE\\\\u2DE0-\\\\u2DFF\\\\u2E2F\\\\u3005-\\\\u3007\\\\u3021-\\\\u302F\\\\u3031-\\\\u3035\\\\u3038-\\\\u303C\\\\u3041-\\\\u3096\\\\u3099\\\\u309A\\\\u309D-\\\\u309F\\\\u30A1-\\\\u30FA\\\\u30FC-\\\\u30FF\\\\u3105-\\\\u312D\\\\u3131-\\\\u318E\\\\u31A0-\\\\u31BA\\\\u31F0-\\\\u31FF\\\\u3400-\\\\u4DB5\\\\u4E00-\\\\u9FCC\\\\uA000-\\\\uA48C\\\\uA4D0-\\\\uA4FD\\\\uA500-\\\\uA60C\\\\uA610-\\\\uA62B\\\\uA640-\\\\uA66F\\\\uA674-\\\\uA67D\\\\uA67F-\\\\uA69D\\\\uA69F-\\\\uA6F1\\\\uA717-\\\\uA71F\\\\uA722-\\\\uA788\\\\uA78B-\\\\uA78E\\\\uA790-\\\\uA7AD\\\\uA7B0\\\\uA7B1\\\\uA7F7-\\\\uA827\\\\uA840-\\\\uA873\\\\uA880-\\\\uA8C4\\\\uA8D0-\\\\uA8D9\\\\uA8E0-\\\\uA8F7\\\\uA8FB\\\\uA900-\\\\uA92D\\\\uA930-\\\\uA953\\\\uA960-\\\\uA97C\\\\uA980-\\\\uA9C0\\\\uA9CF-\\\\uA9D9\\\\uA9E0-\\\\uA9FE\\\\uAA00-\\\\uAA36\\\\uAA40-\\\\uAA4D\\\\uAA50-\\\\uAA59\\\\uAA60-\\\\uAA76\\\\uAA7A-\\\\uAAC2\\\\uAADB-\\\\uAADD\\\\uAAE0-\\\\uAAEF\\\\uAAF2-\\\\uAAF6\\\\uAB01-\\\\uAB06\\\\uAB09-\\\\uAB0E\\\\uAB11-\\\\uAB16\\\\uAB20-\\\\uAB26\\\\uAB28-\\\\uAB2E\\\\uAB30-\\\\uAB5A\\\\uAB5C-\\\\uAB5F\\\\uAB64\\\\uAB65\\\\uABC0-\\\\uABEA\\\\uABEC\\\\uABED\\\\uABF0-\\\\uABF9\\\\uAC00-\\\\uD7A3\\\\uD7B0-\\\\uD7C6\\\\uD7CB-\\\\uD7FB\\\\uF900-\\\\uFA6D\\\\uFA70-\\\\uFAD9\\\\uFB00-\\\\uFB06\\\\uFB13-\\\\uFB17\\\\uFB1D-\\\\uFB28\\\\uFB2A-\\\\uFB36\\\\uFB38-\\\\uFB3C\\\\uFB3E\\\\uFB40\\\\uFB41\\\\uFB43\\\\uFB44\\\\uFB46-\\\\uFBB1\\\\uFBD3-\\\\uFD3D\\\\uFD50-\\\\uFD8F\\\\uFD92-\\\\uFDC7\\\\uFDF0-\\\\uFDFB\\\\uFE00-\\\\uFE0F\\\\uFE20-\\\\uFE2D\\\\uFE33\\\\uFE34\\\\uFE4D-\\\\uFE4F\\\\uFE70-\\\\uFE74\\\\uFE76-\\\\uFEFC\\\\uFF10-\\\\uFF19\\\\uFF21-\\\\uFF3A\\\\uFF3F\\\\uFF41-\\\\uFF5A\\\\uFF66-\\\\uFFBE\\\\uFFC2-\\\\uFFC7\\\\uFFCA-\\\\uFFCF\\\\uFFD2-\\\\uFFD7\\\\uFFDA-\\\\uFFDC]\");\n\n// Ensure the condition is true, otherwise throw an error.\n// This is only to have a better contract semantic, i.e. another safety net\n// to catch a logic error. The condition shall be fulfilled in normal case.\n// Do NOT use this to enforce a certain condition on any user input.\n\nfunction assert(condition, message) {\n /* istanbul ignore next */\n if (!condition) {\n throw new Error('ASSERT: ' + message);\n }\n}\nfunction isDecimalDigit(ch) {\n return ch >= 0x30 && ch <= 0x39; // 0..9\n}\n\nfunction isHexDigit(ch) {\n return '0123456789abcdefABCDEF'.indexOf(ch) >= 0;\n}\nfunction isOctalDigit(ch) {\n return '01234567'.indexOf(ch) >= 0;\n}\n\n// 7.2 White Space\n\nfunction isWhiteSpace(ch) {\n return ch === 0x20 || ch === 0x09 || ch === 0x0B || ch === 0x0C || ch === 0xA0 || ch >= 0x1680 && [0x1680, 0x180E, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202F, 0x205F, 0x3000, 0xFEFF].indexOf(ch) >= 0;\n}\n\n// 7.3 Line Terminators\n\nfunction isLineTerminator(ch) {\n return ch === 0x0A || ch === 0x0D || ch === 0x2028 || ch === 0x2029;\n}\n\n// 7.6 Identifier Names and Identifiers\n\nfunction isIdentifierStart(ch) {\n return ch === 0x24 || ch === 0x5F ||\n // $ (dollar) and _ (underscore)\n ch >= 0x41 && ch <= 0x5A ||\n // A..Z\n ch >= 0x61 && ch <= 0x7A ||\n // a..z\n ch === 0x5C ||\n // \\ (backslash)\n ch >= 0x80 && RegexNonAsciiIdentifierStart.test(String.fromCharCode(ch));\n}\nfunction isIdentifierPart(ch) {\n return ch === 0x24 || ch === 0x5F ||\n // $ (dollar) and _ (underscore)\n ch >= 0x41 && ch <= 0x5A ||\n // A..Z\n ch >= 0x61 && ch <= 0x7A ||\n // a..z\n ch >= 0x30 && ch <= 0x39 ||\n // 0..9\n ch === 0x5C ||\n // \\ (backslash)\n ch >= 0x80 && RegexNonAsciiIdentifierPart.test(String.fromCharCode(ch));\n}\n\n// 7.6.1.1 Keywords\n\nvar keywords = {\n 'if': 1,\n 'in': 1,\n 'do': 1,\n 'var': 1,\n 'for': 1,\n 'new': 1,\n 'try': 1,\n 'let': 1,\n 'this': 1,\n 'else': 1,\n 'case': 1,\n 'void': 1,\n 'with': 1,\n 'enum': 1,\n 'while': 1,\n 'break': 1,\n 'catch': 1,\n 'throw': 1,\n 'const': 1,\n 'yield': 1,\n 'class': 1,\n 'super': 1,\n 'return': 1,\n 'typeof': 1,\n 'delete': 1,\n 'switch': 1,\n 'export': 1,\n 'import': 1,\n 'public': 1,\n 'static': 1,\n 'default': 1,\n 'finally': 1,\n 'extends': 1,\n 'package': 1,\n 'private': 1,\n 'function': 1,\n 'continue': 1,\n 'debugger': 1,\n 'interface': 1,\n 'protected': 1,\n 'instanceof': 1,\n 'implements': 1\n};\nfunction skipComment() {\n while (index < length) {\n var ch = source.charCodeAt(index);\n if (isWhiteSpace(ch) || isLineTerminator(ch)) {\n ++index;\n } else {\n break;\n }\n }\n}\nfunction scanHexEscape(prefix) {\n var i,\n len,\n ch,\n code = 0;\n len = prefix === 'u' ? 4 : 2;\n for (i = 0; i < len; ++i) {\n if (index < length && isHexDigit(source[index])) {\n ch = source[index++];\n code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase());\n } else {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n }\n return String.fromCharCode(code);\n}\nfunction scanUnicodeCodePointEscape() {\n var ch, code, cu1, cu2;\n ch = source[index];\n code = 0;\n\n // At least, one hex digit is required.\n if (ch === '}') {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n while (index < length) {\n ch = source[index++];\n if (!isHexDigit(ch)) {\n break;\n }\n code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase());\n }\n if (code > 0x10FFFF || ch !== '}') {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n\n // UTF-16 Encoding\n if (code <= 0xFFFF) {\n return String.fromCharCode(code);\n }\n cu1 = (code - 0x10000 >> 10) + 0xD800;\n cu2 = (code - 0x10000 & 1023) + 0xDC00;\n return String.fromCharCode(cu1, cu2);\n}\nfunction getEscapedIdentifier() {\n var ch, id;\n ch = source.charCodeAt(index++);\n id = String.fromCharCode(ch);\n\n // '\\u' (U+005C, U+0075) denotes an escaped character.\n if (ch === 0x5C) {\n if (source.charCodeAt(index) !== 0x75) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n ++index;\n ch = scanHexEscape('u');\n if (!ch || ch === '\\\\' || !isIdentifierStart(ch.charCodeAt(0))) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n id = ch;\n }\n while (index < length) {\n ch = source.charCodeAt(index);\n if (!isIdentifierPart(ch)) {\n break;\n }\n ++index;\n id += String.fromCharCode(ch);\n\n // '\\u' (U+005C, U+0075) denotes an escaped character.\n if (ch === 0x5C) {\n id = id.substr(0, id.length - 1);\n if (source.charCodeAt(index) !== 0x75) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n ++index;\n ch = scanHexEscape('u');\n if (!ch || ch === '\\\\' || !isIdentifierPart(ch.charCodeAt(0))) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n id += ch;\n }\n }\n return id;\n}\nfunction getIdentifier() {\n var start, ch;\n start = index++;\n while (index < length) {\n ch = source.charCodeAt(index);\n if (ch === 0x5C) {\n // Blackslash (U+005C) marks Unicode escape sequence.\n index = start;\n return getEscapedIdentifier();\n }\n if (isIdentifierPart(ch)) {\n ++index;\n } else {\n break;\n }\n }\n return source.slice(start, index);\n}\nfunction scanIdentifier() {\n var start, id, type;\n start = index;\n\n // Backslash (U+005C) starts an escaped character.\n id = source.charCodeAt(index) === 0x5C ? getEscapedIdentifier() : getIdentifier();\n\n // There is no keyword or literal with only one character.\n // Thus, it must be an identifier.\n if (id.length === 1) {\n type = TokenIdentifier;\n } else if (keywords.hasOwnProperty(id)) {\n // eslint-disable-line no-prototype-builtins\n type = TokenKeyword;\n } else if (id === 'null') {\n type = TokenNullLiteral;\n } else if (id === 'true' || id === 'false') {\n type = TokenBooleanLiteral;\n } else {\n type = TokenIdentifier;\n }\n return {\n type: type,\n value: id,\n start: start,\n end: index\n };\n}\n\n// 7.7 Punctuators\n\nfunction scanPunctuator() {\n var start = index,\n code = source.charCodeAt(index),\n code2,\n ch1 = source[index],\n ch2,\n ch3,\n ch4;\n switch (code) {\n // Check for most common single-character punctuators.\n case 0x2E: // . dot\n case 0x28: // ( open bracket\n case 0x29: // ) close bracket\n case 0x3B: // ; semicolon\n case 0x2C: // , comma\n case 0x7B: // { open curly brace\n case 0x7D: // } close curly brace\n case 0x5B: // [\n case 0x5D: // ]\n case 0x3A: // :\n case 0x3F: // ?\n case 0x7E:\n // ~\n ++index;\n return {\n type: TokenPunctuator,\n value: String.fromCharCode(code),\n start: start,\n end: index\n };\n default:\n code2 = source.charCodeAt(index + 1);\n\n // '=' (U+003D) marks an assignment or comparison operator.\n if (code2 === 0x3D) {\n switch (code) {\n case 0x2B: // +\n case 0x2D: // -\n case 0x2F: // /\n case 0x3C: // <\n case 0x3E: // >\n case 0x5E: // ^\n case 0x7C: // |\n case 0x25: // %\n case 0x26: // &\n case 0x2A:\n // *\n index += 2;\n return {\n type: TokenPunctuator,\n value: String.fromCharCode(code) + String.fromCharCode(code2),\n start: start,\n end: index\n };\n case 0x21: // !\n case 0x3D:\n // =\n index += 2;\n\n // !== and ===\n if (source.charCodeAt(index) === 0x3D) {\n ++index;\n }\n return {\n type: TokenPunctuator,\n value: source.slice(start, index),\n start: start,\n end: index\n };\n }\n }\n }\n\n // 4-character punctuator: >>>=\n\n ch4 = source.substr(index, 4);\n if (ch4 === '>>>=') {\n index += 4;\n return {\n type: TokenPunctuator,\n value: ch4,\n start: start,\n end: index\n };\n }\n\n // 3-character punctuators: === !== >>> <<= >>=\n\n ch3 = ch4.substr(0, 3);\n if (ch3 === '>>>' || ch3 === '<<=' || ch3 === '>>=') {\n index += 3;\n return {\n type: TokenPunctuator,\n value: ch3,\n start: start,\n end: index\n };\n }\n\n // Other 2-character punctuators: ++ -- << >> && ||\n ch2 = ch3.substr(0, 2);\n if (ch1 === ch2[1] && '+-<>&|'.indexOf(ch1) >= 0 || ch2 === '=>') {\n index += 2;\n return {\n type: TokenPunctuator,\n value: ch2,\n start: start,\n end: index\n };\n }\n if (ch2 === '//') {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n\n // 1-character punctuators: < > = ! + - * % & | ^ /\n\n if ('<>=!+-*%&|^/'.indexOf(ch1) >= 0) {\n ++index;\n return {\n type: TokenPunctuator,\n value: ch1,\n start: start,\n end: index\n };\n }\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n}\n\n// 7.8.3 Numeric Literals\n\nfunction scanHexLiteral(start) {\n var number = '';\n while (index < length) {\n if (!isHexDigit(source[index])) {\n break;\n }\n number += source[index++];\n }\n if (number.length === 0) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n if (isIdentifierStart(source.charCodeAt(index))) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n return {\n type: TokenNumericLiteral,\n value: parseInt('0x' + number, 16),\n start: start,\n end: index\n };\n}\nfunction scanOctalLiteral(start) {\n var number = '0' + source[index++];\n while (index < length) {\n if (!isOctalDigit(source[index])) {\n break;\n }\n number += source[index++];\n }\n if (isIdentifierStart(source.charCodeAt(index)) || isDecimalDigit(source.charCodeAt(index))) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n return {\n type: TokenNumericLiteral,\n value: parseInt(number, 8),\n octal: true,\n start: start,\n end: index\n };\n}\nfunction scanNumericLiteral() {\n var number, start, ch;\n ch = source[index];\n assert(isDecimalDigit(ch.charCodeAt(0)) || ch === '.', 'Numeric literal must start with a decimal digit or a decimal point');\n start = index;\n number = '';\n if (ch !== '.') {\n number = source[index++];\n ch = source[index];\n\n // Hex number starts with '0x'.\n // Octal number starts with '0'.\n if (number === '0') {\n if (ch === 'x' || ch === 'X') {\n ++index;\n return scanHexLiteral(start);\n }\n if (isOctalDigit(ch)) {\n return scanOctalLiteral(start);\n }\n\n // decimal number starts with '0' such as '09' is illegal.\n if (ch && isDecimalDigit(ch.charCodeAt(0))) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n }\n while (isDecimalDigit(source.charCodeAt(index))) {\n number += source[index++];\n }\n ch = source[index];\n }\n if (ch === '.') {\n number += source[index++];\n while (isDecimalDigit(source.charCodeAt(index))) {\n number += source[index++];\n }\n ch = source[index];\n }\n if (ch === 'e' || ch === 'E') {\n number += source[index++];\n ch = source[index];\n if (ch === '+' || ch === '-') {\n number += source[index++];\n }\n if (isDecimalDigit(source.charCodeAt(index))) {\n while (isDecimalDigit(source.charCodeAt(index))) {\n number += source[index++];\n }\n } else {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n }\n if (isIdentifierStart(source.charCodeAt(index))) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n return {\n type: TokenNumericLiteral,\n value: parseFloat(number),\n start: start,\n end: index\n };\n}\n\n// 7.8.4 String Literals\n\nfunction scanStringLiteral() {\n var str = '',\n quote,\n start,\n ch,\n code,\n octal = false;\n quote = source[index];\n assert(quote === '\\'' || quote === '\"', 'String literal must starts with a quote');\n start = index;\n ++index;\n while (index < length) {\n ch = source[index++];\n if (ch === quote) {\n quote = '';\n break;\n } else if (ch === '\\\\') {\n ch = source[index++];\n if (!ch || !isLineTerminator(ch.charCodeAt(0))) {\n switch (ch) {\n case 'u':\n case 'x':\n if (source[index] === '{') {\n ++index;\n str += scanUnicodeCodePointEscape();\n } else {\n str += scanHexEscape(ch);\n }\n break;\n case 'n':\n str += '\\n';\n break;\n case 'r':\n str += '\\r';\n break;\n case 't':\n str += '\\t';\n break;\n case 'b':\n str += '\\b';\n break;\n case 'f':\n str += '\\f';\n break;\n case 'v':\n str += '\\x0B';\n break;\n default:\n if (isOctalDigit(ch)) {\n code = '01234567'.indexOf(ch);\n\n // \\0 is not octal escape sequence\n if (code !== 0) {\n octal = true;\n }\n if (index < length && isOctalDigit(source[index])) {\n octal = true;\n code = code * 8 + '01234567'.indexOf(source[index++]);\n\n // 3 digits are only allowed when string starts\n // with 0, 1, 2, 3\n if ('0123'.indexOf(ch) >= 0 && index < length && isOctalDigit(source[index])) {\n code = code * 8 + '01234567'.indexOf(source[index++]);\n }\n }\n str += String.fromCharCode(code);\n } else {\n str += ch;\n }\n break;\n }\n } else {\n if (ch === '\\r' && source[index] === '\\n') {\n ++index;\n }\n }\n } else if (isLineTerminator(ch.charCodeAt(0))) {\n break;\n } else {\n str += ch;\n }\n }\n if (quote !== '') {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n return {\n type: TokenStringLiteral,\n value: str,\n octal: octal,\n start: start,\n end: index\n };\n}\nfunction testRegExp(pattern, flags) {\n var tmp = pattern;\n if (flags.indexOf('u') >= 0) {\n // Replace each astral symbol and every Unicode code point\n // escape sequence with a single ASCII symbol to avoid throwing on\n // regular expressions that are only valid in combination with the\n // `/u` flag.\n // Note: replacing with the ASCII symbol `x` might cause false\n // negatives in unlikely scenarios. For example, `[\\u{61}-b]` is a\n // perfectly valid pattern that is equivalent to `[a-b]`, but it\n // would be replaced by `[x-b]` which throws an error.\n tmp = tmp.replace(/\\\\u\\{([0-9a-fA-F]+)\\}/g, function ($0, $1) {\n if (parseInt($1, 16) <= 0x10FFFF) {\n return 'x';\n }\n throwError({}, MessageInvalidRegExp);\n }).replace(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g, 'x');\n }\n\n // First, detect invalid regular expressions.\n try {\n new RegExp(tmp);\n } catch (e) {\n throwError({}, MessageInvalidRegExp);\n }\n\n // Return a regular expression object for this pattern-flag pair, or\n // `null` in case the current environment doesn't support the flags it\n // uses.\n try {\n return new RegExp(pattern, flags);\n } catch (exception) {\n return null;\n }\n}\nfunction scanRegExpBody() {\n var ch, str, classMarker, terminated, body;\n ch = source[index];\n assert(ch === '/', 'Regular expression literal must start with a slash');\n str = source[index++];\n classMarker = false;\n terminated = false;\n while (index < length) {\n ch = source[index++];\n str += ch;\n if (ch === '\\\\') {\n ch = source[index++];\n // ECMA-262 7.8.5\n if (isLineTerminator(ch.charCodeAt(0))) {\n throwError({}, MessageUnterminatedRegExp);\n }\n str += ch;\n } else if (isLineTerminator(ch.charCodeAt(0))) {\n throwError({}, MessageUnterminatedRegExp);\n } else if (classMarker) {\n if (ch === ']') {\n classMarker = false;\n }\n } else {\n if (ch === '/') {\n terminated = true;\n break;\n } else if (ch === '[') {\n classMarker = true;\n }\n }\n }\n if (!terminated) {\n throwError({}, MessageUnterminatedRegExp);\n }\n\n // Exclude leading and trailing slash.\n body = str.substr(1, str.length - 2);\n return {\n value: body,\n literal: str\n };\n}\nfunction scanRegExpFlags() {\n var ch, str, flags;\n str = '';\n flags = '';\n while (index < length) {\n ch = source[index];\n if (!isIdentifierPart(ch.charCodeAt(0))) {\n break;\n }\n ++index;\n if (ch === '\\\\' && index < length) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n } else {\n flags += ch;\n str += ch;\n }\n }\n if (flags.search(/[^gimuy]/g) >= 0) {\n throwError({}, MessageInvalidRegExp, flags);\n }\n return {\n value: flags,\n literal: str\n };\n}\nfunction scanRegExp() {\n var start, body, flags, value;\n lookahead = null;\n skipComment();\n start = index;\n body = scanRegExpBody();\n flags = scanRegExpFlags();\n value = testRegExp(body.value, flags.value);\n return {\n literal: body.literal + flags.literal,\n value: value,\n regex: {\n pattern: body.value,\n flags: flags.value\n },\n start: start,\n end: index\n };\n}\nfunction isIdentifierName(token) {\n return token.type === TokenIdentifier || token.type === TokenKeyword || token.type === TokenBooleanLiteral || token.type === TokenNullLiteral;\n}\nfunction advance() {\n skipComment();\n if (index >= length) {\n return {\n type: TokenEOF,\n start: index,\n end: index\n };\n }\n var ch = source.charCodeAt(index);\n if (isIdentifierStart(ch)) {\n return scanIdentifier();\n }\n\n // Very common: ( and ) and ;\n if (ch === 0x28 || ch === 0x29 || ch === 0x3B) {\n return scanPunctuator();\n }\n\n // String literal starts with single quote (U+0027) or double quote (U+0022).\n if (ch === 0x27 || ch === 0x22) {\n return scanStringLiteral();\n }\n\n // Dot (.) U+002E can also start a floating-point number, hence the need\n // to check the next character.\n if (ch === 0x2E) {\n if (isDecimalDigit(source.charCodeAt(index + 1))) {\n return scanNumericLiteral();\n }\n return scanPunctuator();\n }\n if (isDecimalDigit(ch)) {\n return scanNumericLiteral();\n }\n return scanPunctuator();\n}\nfunction lex() {\n var token = lookahead;\n index = token.end;\n lookahead = advance();\n index = token.end;\n return token;\n}\nfunction peek() {\n var pos = index;\n lookahead = advance();\n index = pos;\n}\nfunction finishArrayExpression(elements) {\n var node = new ASTNode(SyntaxArrayExpression);\n node.elements = elements;\n return node;\n}\nfunction finishBinaryExpression(operator, left, right) {\n var node = new ASTNode(operator === '||' || operator === '&&' ? SyntaxLogicalExpression : SyntaxBinaryExpression);\n node.operator = operator;\n node.left = left;\n node.right = right;\n return node;\n}\nfunction finishCallExpression(callee, args) {\n var node = new ASTNode(SyntaxCallExpression);\n node.callee = callee;\n node.arguments = args;\n return node;\n}\nfunction finishConditionalExpression(test, consequent, alternate) {\n var node = new ASTNode(SyntaxConditionalExpression);\n node.test = test;\n node.consequent = consequent;\n node.alternate = alternate;\n return node;\n}\nfunction finishIdentifier(name) {\n var node = new ASTNode(SyntaxIdentifier);\n node.name = name;\n return node;\n}\nfunction finishLiteral(token) {\n var node = new ASTNode(SyntaxLiteral);\n node.value = token.value;\n node.raw = source.slice(token.start, token.end);\n if (token.regex) {\n if (node.raw === '//') {\n node.raw = '/(?:)/';\n }\n node.regex = token.regex;\n }\n return node;\n}\nfunction finishMemberExpression(accessor, object, property) {\n var node = new ASTNode(SyntaxMemberExpression);\n node.computed = accessor === '[';\n node.object = object;\n node.property = property;\n if (!node.computed) property.member = true;\n return node;\n}\nfunction finishObjectExpression(properties) {\n var node = new ASTNode(SyntaxObjectExpression);\n node.properties = properties;\n return node;\n}\nfunction finishProperty(kind, key, value) {\n var node = new ASTNode(SyntaxProperty);\n node.key = key;\n node.value = value;\n node.kind = kind;\n return node;\n}\nfunction finishUnaryExpression(operator, argument) {\n var node = new ASTNode(SyntaxUnaryExpression);\n node.operator = operator;\n node.argument = argument;\n node.prefix = true;\n return node;\n}\n\n// Throw an exception\n\nfunction throwError(token, messageFormat) {\n var error,\n args = Array.prototype.slice.call(arguments, 2),\n msg = messageFormat.replace(/%(\\d)/g, function (whole, index) {\n assert(index < args.length, 'Message reference must be in range');\n return args[index];\n });\n error = new Error(msg);\n error.index = index;\n error.description = msg;\n throw error;\n}\n\n// Throw an exception because of the token.\n\nfunction throwUnexpected(token) {\n if (token.type === TokenEOF) {\n throwError(token, MessageUnexpectedEOS);\n }\n if (token.type === TokenNumericLiteral) {\n throwError(token, MessageUnexpectedNumber);\n }\n if (token.type === TokenStringLiteral) {\n throwError(token, MessageUnexpectedString);\n }\n if (token.type === TokenIdentifier) {\n throwError(token, MessageUnexpectedIdentifier);\n }\n if (token.type === TokenKeyword) {\n throwError(token, MessageUnexpectedReserved);\n }\n\n // BooleanLiteral, NullLiteral, or Punctuator.\n throwError(token, MessageUnexpectedToken, token.value);\n}\n\n// Expect the next token to match the specified punctuator.\n// If not, an exception will be thrown.\n\nfunction expect(value) {\n var token = lex();\n if (token.type !== TokenPunctuator || token.value !== value) {\n throwUnexpected(token);\n }\n}\n\n// Return true if the next token matches the specified punctuator.\n\nfunction match(value) {\n return lookahead.type === TokenPunctuator && lookahead.value === value;\n}\n\n// Return true if the next token matches the specified keyword\n\nfunction matchKeyword(keyword) {\n return lookahead.type === TokenKeyword && lookahead.value === keyword;\n}\n\n// 11.1.4 Array Initialiser\n\nfunction parseArrayInitialiser() {\n var elements = [];\n index = lookahead.start;\n expect('[');\n while (!match(']')) {\n if (match(',')) {\n lex();\n elements.push(null);\n } else {\n elements.push(parseConditionalExpression());\n if (!match(']')) {\n expect(',');\n }\n }\n }\n lex();\n return finishArrayExpression(elements);\n}\n\n// 11.1.5 Object Initialiser\n\nfunction parseObjectPropertyKey() {\n index = lookahead.start;\n var token = lex();\n\n // Note: This function is called only from parseObjectProperty(), where\n // EOF and Punctuator tokens are already filtered out.\n\n if (token.type === TokenStringLiteral || token.type === TokenNumericLiteral) {\n if (token.octal) {\n throwError(token, MessageStrictOctalLiteral);\n }\n return finishLiteral(token);\n }\n return finishIdentifier(token.value);\n}\nfunction parseObjectProperty() {\n var token, key, id, value;\n index = lookahead.start;\n token = lookahead;\n if (token.type === TokenIdentifier) {\n id = parseObjectPropertyKey();\n expect(':');\n value = parseConditionalExpression();\n return finishProperty('init', id, value);\n }\n if (token.type === TokenEOF || token.type === TokenPunctuator) {\n throwUnexpected(token);\n } else {\n key = parseObjectPropertyKey();\n expect(':');\n value = parseConditionalExpression();\n return finishProperty('init', key, value);\n }\n}\nfunction parseObjectInitialiser() {\n var properties = [],\n property,\n name,\n key,\n map = {},\n toString = String;\n index = lookahead.start;\n expect('{');\n while (!match('}')) {\n property = parseObjectProperty();\n if (property.key.type === SyntaxIdentifier) {\n name = property.key.name;\n } else {\n name = toString(property.key.value);\n }\n key = '$' + name;\n if (Object.prototype.hasOwnProperty.call(map, key)) {\n throwError({}, MessageStrictDuplicateProperty);\n } else {\n map[key] = true;\n }\n properties.push(property);\n if (!match('}')) {\n expect(',');\n }\n }\n expect('}');\n return finishObjectExpression(properties);\n}\n\n// 11.1.6 The Grouping Operator\n\nfunction parseGroupExpression() {\n expect('(');\n var expr = parseExpression();\n expect(')');\n return expr;\n}\n\n// 11.1 Primary Expressions\n\nvar legalKeywords = {\n 'if': 1\n};\nfunction parsePrimaryExpression() {\n var type, token, expr;\n if (match('(')) {\n return parseGroupExpression();\n }\n if (match('[')) {\n return parseArrayInitialiser();\n }\n if (match('{')) {\n return parseObjectInitialiser();\n }\n type = lookahead.type;\n index = lookahead.start;\n if (type === TokenIdentifier || legalKeywords[lookahead.value]) {\n expr = finishIdentifier(lex().value);\n } else if (type === TokenStringLiteral || type === TokenNumericLiteral) {\n if (lookahead.octal) {\n throwError(lookahead, MessageStrictOctalLiteral);\n }\n expr = finishLiteral(lex());\n } else if (type === TokenKeyword) {\n throw new Error(DISABLED);\n } else if (type === TokenBooleanLiteral) {\n token = lex();\n token.value = token.value === 'true';\n expr = finishLiteral(token);\n } else if (type === TokenNullLiteral) {\n token = lex();\n token.value = null;\n expr = finishLiteral(token);\n } else if (match('/') || match('/=')) {\n expr = finishLiteral(scanRegExp());\n peek();\n } else {\n throwUnexpected(lex());\n }\n return expr;\n}\n\n// 11.2 Left-Hand-Side Expressions\n\nfunction parseArguments() {\n var args = [];\n expect('(');\n if (!match(')')) {\n while (index < length) {\n args.push(parseConditionalExpression());\n if (match(')')) {\n break;\n }\n expect(',');\n }\n }\n expect(')');\n return args;\n}\nfunction parseNonComputedProperty() {\n index = lookahead.start;\n var token = lex();\n if (!isIdentifierName(token)) {\n throwUnexpected(token);\n }\n return finishIdentifier(token.value);\n}\nfunction parseNonComputedMember() {\n expect('.');\n return parseNonComputedProperty();\n}\nfunction parseComputedMember() {\n expect('[');\n var expr = parseExpression();\n expect(']');\n return expr;\n}\nfunction parseLeftHandSideExpressionAllowCall() {\n var expr, args, property;\n expr = parsePrimaryExpression();\n for (;;) {\n if (match('.')) {\n property = parseNonComputedMember();\n expr = finishMemberExpression('.', expr, property);\n } else if (match('(')) {\n args = parseArguments();\n expr = finishCallExpression(expr, args);\n } else if (match('[')) {\n property = parseComputedMember();\n expr = finishMemberExpression('[', expr, property);\n } else {\n break;\n }\n }\n return expr;\n}\n\n// 11.3 Postfix Expressions\n\nfunction parsePostfixExpression() {\n var expr = parseLeftHandSideExpressionAllowCall();\n if (lookahead.type === TokenPunctuator) {\n if (match('++') || match('--')) {\n throw new Error(DISABLED);\n }\n }\n return expr;\n}\n\n// 11.4 Unary Operators\n\nfunction parseUnaryExpression() {\n var token, expr;\n if (lookahead.type !== TokenPunctuator && lookahead.type !== TokenKeyword) {\n expr = parsePostfixExpression();\n } else if (match('++') || match('--')) {\n throw new Error(DISABLED);\n } else if (match('+') || match('-') || match('~') || match('!')) {\n token = lex();\n expr = parseUnaryExpression();\n expr = finishUnaryExpression(token.value, expr);\n } else if (matchKeyword('delete') || matchKeyword('void') || matchKeyword('typeof')) {\n throw new Error(DISABLED);\n } else {\n expr = parsePostfixExpression();\n }\n return expr;\n}\nfunction binaryPrecedence(token) {\n var prec = 0;\n if (token.type !== TokenPunctuator && token.type !== TokenKeyword) {\n return 0;\n }\n switch (token.value) {\n case '||':\n prec = 1;\n break;\n case '&&':\n prec = 2;\n break;\n case '|':\n prec = 3;\n break;\n case '^':\n prec = 4;\n break;\n case '&':\n prec = 5;\n break;\n case '==':\n case '!=':\n case '===':\n case '!==':\n prec = 6;\n break;\n case '<':\n case '>':\n case '<=':\n case '>=':\n case 'instanceof':\n case 'in':\n prec = 7;\n break;\n case '<<':\n case '>>':\n case '>>>':\n prec = 8;\n break;\n case '+':\n case '-':\n prec = 9;\n break;\n case '*':\n case '/':\n case '%':\n prec = 11;\n break;\n }\n return prec;\n}\n\n// 11.5 Multiplicative Operators\n// 11.6 Additive Operators\n// 11.7 Bitwise Shift Operators\n// 11.8 Relational Operators\n// 11.9 Equality Operators\n// 11.10 Binary Bitwise Operators\n// 11.11 Binary Logical Operators\n\nfunction parseBinaryExpression() {\n var marker, markers, expr, token, prec, stack, right, operator, left, i;\n marker = lookahead;\n left = parseUnaryExpression();\n token = lookahead;\n prec = binaryPrecedence(token);\n if (prec === 0) {\n return left;\n }\n token.prec = prec;\n lex();\n markers = [marker, lookahead];\n right = parseUnaryExpression();\n stack = [left, token, right];\n while ((prec = binaryPrecedence(lookahead)) > 0) {\n // Reduce: make a binary expression from the three topmost entries.\n while (stack.length > 2 && prec <= stack[stack.length - 2].prec) {\n right = stack.pop();\n operator = stack.pop().value;\n left = stack.pop();\n markers.pop();\n expr = finishBinaryExpression(operator, left, right);\n stack.push(expr);\n }\n\n // Shift.\n token = lex();\n token.prec = prec;\n stack.push(token);\n markers.push(lookahead);\n expr = parseUnaryExpression();\n stack.push(expr);\n }\n\n // Final reduce to clean-up the stack.\n i = stack.length - 1;\n expr = stack[i];\n markers.pop();\n while (i > 1) {\n markers.pop();\n expr = finishBinaryExpression(stack[i - 1].value, stack[i - 2], expr);\n i -= 2;\n }\n return expr;\n}\n\n// 11.12 Conditional Operator\n\nfunction parseConditionalExpression() {\n var expr, consequent, alternate;\n expr = parseBinaryExpression();\n if (match('?')) {\n lex();\n consequent = parseConditionalExpression();\n expect(':');\n alternate = parseConditionalExpression();\n expr = finishConditionalExpression(expr, consequent, alternate);\n }\n return expr;\n}\n\n// 11.14 Comma Operator\n\nfunction parseExpression() {\n var expr = parseConditionalExpression();\n if (match(',')) {\n throw new Error(DISABLED); // no sequence expressions\n }\n\n return expr;\n}\nfunction parser(code) {\n source = code;\n index = 0;\n length = source.length;\n lookahead = null;\n peek();\n var expr = parseExpression();\n if (lookahead.type !== TokenEOF) {\n throw new Error('Unexpect token after expression.');\n }\n return expr;\n}\nvar Constants = {\n NaN: 'NaN',\n E: 'Math.E',\n LN2: 'Math.LN2',\n LN10: 'Math.LN10',\n LOG2E: 'Math.LOG2E',\n LOG10E: 'Math.LOG10E',\n PI: 'Math.PI',\n SQRT1_2: 'Math.SQRT1_2',\n SQRT2: 'Math.SQRT2',\n MIN_VALUE: 'Number.MIN_VALUE',\n MAX_VALUE: 'Number.MAX_VALUE'\n};\nfunction Functions(codegen) {\n function fncall(name, args, cast, type) {\n var obj = codegen(args[0]);\n if (cast) {\n obj = cast + '(' + obj + ')';\n if (cast.lastIndexOf('new ', 0) === 0) obj = '(' + obj + ')';\n }\n return obj + '.' + name + (type < 0 ? '' : type === 0 ? '()' : '(' + args.slice(1).map(codegen).join(',') + ')');\n }\n function fn(name, cast, type) {\n return function (args) {\n return fncall(name, args, cast, type);\n };\n }\n var DATE = 'new Date',\n STRING = 'String',\n REGEXP = 'RegExp';\n return {\n // MATH functions\n isNaN: 'Number.isNaN',\n isFinite: 'Number.isFinite',\n abs: 'Math.abs',\n acos: 'Math.acos',\n asin: 'Math.asin',\n atan: 'Math.atan',\n atan2: 'Math.atan2',\n ceil: 'Math.ceil',\n cos: 'Math.cos',\n exp: 'Math.exp',\n floor: 'Math.floor',\n hypot: 'Math.hypot',\n log: 'Math.log',\n max: 'Math.max',\n min: 'Math.min',\n pow: 'Math.pow',\n random: 'Math.random',\n round: 'Math.round',\n sin: 'Math.sin',\n sqrt: 'Math.sqrt',\n tan: 'Math.tan',\n clamp: function clamp(args) {\n if (args.length < 3) error('Missing arguments to clamp function.');\n if (args.length > 3) error('Too many arguments to clamp function.');\n var a = args.map(codegen);\n return 'Math.max(' + a[1] + ', Math.min(' + a[2] + ',' + a[0] + '))';\n },\n // DATE functions\n now: 'Date.now',\n utc: 'Date.UTC',\n datetime: DATE,\n date: fn('getDate', DATE, 0),\n day: fn('getDay', DATE, 0),\n year: fn('getFullYear', DATE, 0),\n month: fn('getMonth', DATE, 0),\n hours: fn('getHours', DATE, 0),\n minutes: fn('getMinutes', DATE, 0),\n seconds: fn('getSeconds', DATE, 0),\n milliseconds: fn('getMilliseconds', DATE, 0),\n time: fn('getTime', DATE, 0),\n timezoneoffset: fn('getTimezoneOffset', DATE, 0),\n utcdate: fn('getUTCDate', DATE, 0),\n utcday: fn('getUTCDay', DATE, 0),\n utcyear: fn('getUTCFullYear', DATE, 0),\n utcmonth: fn('getUTCMonth', DATE, 0),\n utchours: fn('getUTCHours', DATE, 0),\n utcminutes: fn('getUTCMinutes', DATE, 0),\n utcseconds: fn('getUTCSeconds', DATE, 0),\n utcmilliseconds: fn('getUTCMilliseconds', DATE, 0),\n // sequence functions\n length: fn('length', null, -1),\n // STRING functions\n parseFloat: 'parseFloat',\n parseInt: 'parseInt',\n upper: fn('toUpperCase', STRING, 0),\n lower: fn('toLowerCase', STRING, 0),\n substring: fn('substring', STRING),\n split: fn('split', STRING),\n trim: fn('trim', STRING, 0),\n // REGEXP functions\n regexp: REGEXP,\n test: fn('test', REGEXP),\n // Control Flow functions\n if: function _if(args) {\n if (args.length < 3) error('Missing arguments to if function.');\n if (args.length > 3) error('Too many arguments to if function.');\n var a = args.map(codegen);\n return '(' + a[0] + '?' + a[1] + ':' + a[2] + ')';\n }\n };\n}\nfunction stripQuotes(s) {\n var n = s && s.length - 1;\n return n && (s[0] === '\"' && s[n] === '\"' || s[0] === '\\'' && s[n] === '\\'') ? s.slice(1, -1) : s;\n}\nfunction codegen(opt) {\n opt = opt || {};\n var allowed = opt.allowed ? toSet(opt.allowed) : {},\n forbidden = opt.forbidden ? toSet(opt.forbidden) : {},\n constants = opt.constants || Constants,\n functions = (opt.functions || Functions)(visit),\n globalvar = opt.globalvar,\n fieldvar = opt.fieldvar,\n outputGlobal = isFunction(globalvar) ? globalvar : function (id) {\n return \"\".concat(globalvar, \"[\\\"\").concat(id, \"\\\"]\");\n };\n var globals = {},\n fields = {},\n memberDepth = 0;\n function visit(ast) {\n if (isString(ast)) return ast;\n var generator = Generators[ast.type];\n if (generator == null) error('Unsupported type: ' + ast.type);\n return generator(ast);\n }\n var Generators = {\n Literal: function Literal(n) {\n return n.raw;\n },\n Identifier: function Identifier(n) {\n var id = n.name;\n if (memberDepth > 0) {\n return id;\n } else if (hasOwnProperty(forbidden, id)) {\n return error('Illegal identifier: ' + id);\n } else if (hasOwnProperty(constants, id)) {\n return constants[id];\n } else if (hasOwnProperty(allowed, id)) {\n return id;\n } else {\n globals[id] = 1;\n return outputGlobal(id);\n }\n },\n MemberExpression: function MemberExpression(n) {\n var d = !n.computed,\n o = visit(n.object);\n if (d) memberDepth += 1;\n var p = visit(n.property);\n if (o === fieldvar) {\n // strip quotes to sanitize field name (#1653)\n fields[stripQuotes(p)] = 1;\n }\n if (d) memberDepth -= 1;\n return o + (d ? '.' + p : '[' + p + ']');\n },\n CallExpression: function CallExpression(n) {\n if (n.callee.type !== 'Identifier') {\n error('Illegal callee type: ' + n.callee.type);\n }\n var callee = n.callee.name,\n args = n.arguments,\n fn = hasOwnProperty(functions, callee) && functions[callee];\n if (!fn) error('Unrecognized function: ' + callee);\n return isFunction(fn) ? fn(args) : fn + '(' + args.map(visit).join(',') + ')';\n },\n ArrayExpression: function ArrayExpression(n) {\n return '[' + n.elements.map(visit).join(',') + ']';\n },\n BinaryExpression: function BinaryExpression(n) {\n return '(' + visit(n.left) + ' ' + n.operator + ' ' + visit(n.right) + ')';\n },\n UnaryExpression: function UnaryExpression(n) {\n return '(' + n.operator + visit(n.argument) + ')';\n },\n ConditionalExpression: function ConditionalExpression(n) {\n return '(' + visit(n.test) + '?' + visit(n.consequent) + ':' + visit(n.alternate) + ')';\n },\n LogicalExpression: function LogicalExpression(n) {\n return '(' + visit(n.left) + n.operator + visit(n.right) + ')';\n },\n ObjectExpression: function ObjectExpression(n) {\n return '{' + n.properties.map(visit).join(',') + '}';\n },\n Property: function Property(n) {\n memberDepth += 1;\n var k = visit(n.key);\n memberDepth -= 1;\n return k + ':' + visit(n.value);\n }\n };\n function codegen(ast) {\n var result = {\n code: visit(ast),\n globals: Object.keys(globals),\n fields: Object.keys(fields)\n };\n globals = {};\n fields = {};\n return result;\n }\n codegen.functions = functions;\n codegen.constants = constants;\n return codegen;\n}\nexport { ASTNode, ArrayExpression, BinaryExpression, CallExpression, ConditionalExpression, Identifier, Literal, LogicalExpression, MemberExpression, ObjectExpression, Property, RawCode, UnaryExpression, codegen as codegenExpression, Constants as constants, Functions as functions, parser as parseExpression };","import { Adder } from \"d3-array\";\nimport { atan2, cos, quarterPi, radians, sin, tau } from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\nexport var areaRingSum = new Adder();\n\n// hello?\n\nvar areaSum = new Adder(),\n lambda00,\n phi00,\n lambda0,\n cosPhi0,\n sinPhi0;\nexport var areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function polygonStart() {\n areaRingSum = new Adder();\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function polygonEnd() {\n var areaRing = +areaRingSum;\n areaSum.add(areaRing < 0 ? tau + areaRing : areaRing);\n this.lineStart = this.lineEnd = this.point = noop;\n },\n sphere: function sphere() {\n areaSum.add(tau);\n }\n};\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\nfunction areaRingEnd() {\n areaPoint(lambda00, phi00);\n}\nfunction areaPointFirst(lambda, phi) {\n areaStream.point = areaPoint;\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n lambda0 = lambda, cosPhi0 = cos(phi = phi / 2 + quarterPi), sinPhi0 = sin(phi);\n}\nfunction areaPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n phi = phi / 2 + quarterPi; // half the angular distance from south pole\n\n // Spherical excess E for a spherical triangle with vertices: south pole,\n // previous point, current point. Uses a formula derived from Cagnoli’s\n // theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n var dLambda = lambda - lambda0,\n sdLambda = dLambda >= 0 ? 1 : -1,\n adLambda = sdLambda * dLambda,\n cosPhi = cos(phi),\n sinPhi = sin(phi),\n k = sinPhi0 * sinPhi,\n u = cosPhi0 * cosPhi + k * cos(adLambda),\n v = k * sdLambda * sin(adLambda);\n areaRingSum.add(atan2(v, u));\n\n // Advance the previous points.\n lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\nexport default function (object) {\n areaSum = new Adder();\n stream(object, areaStream);\n return areaSum * 2;\n}","import { Adder } from \"d3-array\";\nimport { areaStream, areaRingSum } from \"./area.js\";\nimport { cartesian, cartesianCross, cartesianNormalizeInPlace, spherical } from \"./cartesian.js\";\nimport { abs, degrees, epsilon, radians } from \"./math.js\";\nimport stream from \"./stream.js\";\nvar lambda0, phi0, lambda1, phi1,\n // bounds\n lambda2,\n // previous lambda-coordinate\n lambda00, phi00,\n // first point\n p0,\n // previous 3D point\n deltaSum, ranges, range;\nvar boundsStream = {\n point: boundsPoint,\n lineStart: boundsLineStart,\n lineEnd: boundsLineEnd,\n polygonStart: function polygonStart() {\n boundsStream.point = boundsRingPoint;\n boundsStream.lineStart = boundsRingStart;\n boundsStream.lineEnd = boundsRingEnd;\n deltaSum = new Adder();\n areaStream.polygonStart();\n },\n polygonEnd: function polygonEnd() {\n areaStream.polygonEnd();\n boundsStream.point = boundsPoint;\n boundsStream.lineStart = boundsLineStart;\n boundsStream.lineEnd = boundsLineEnd;\n if (areaRingSum < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);else if (deltaSum > epsilon) phi1 = 90;else if (deltaSum < -epsilon) phi0 = -90;\n range[0] = lambda0, range[1] = lambda1;\n },\n sphere: function sphere() {\n lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n }\n};\nfunction boundsPoint(lambda, phi) {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n}\nfunction linePoint(lambda, phi) {\n var p = cartesian([lambda * radians, phi * radians]);\n if (p0) {\n var normal = cartesianCross(p0, p),\n equatorial = [normal[1], -normal[0], 0],\n inflection = cartesianCross(equatorial, normal);\n cartesianNormalizeInPlace(inflection);\n inflection = spherical(inflection);\n var delta = lambda - lambda2,\n sign = delta > 0 ? 1 : -1,\n lambdai = inflection[0] * degrees * sign,\n phii,\n antimeridian = abs(delta) > 180;\n if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = inflection[1] * degrees;\n if (phii > phi1) phi1 = phii;\n } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = -inflection[1] * degrees;\n if (phii < phi0) phi0 = phii;\n } else {\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n }\n if (antimeridian) {\n if (lambda < lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n } else {\n if (lambda1 >= lambda0) {\n if (lambda < lambda0) lambda0 = lambda;\n if (lambda > lambda1) lambda1 = lambda;\n } else {\n if (lambda > lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n }\n }\n } else {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n }\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n p0 = p, lambda2 = lambda;\n}\nfunction boundsLineStart() {\n boundsStream.point = linePoint;\n}\nfunction boundsLineEnd() {\n range[0] = lambda0, range[1] = lambda1;\n boundsStream.point = boundsPoint;\n p0 = null;\n}\nfunction boundsRingPoint(lambda, phi) {\n if (p0) {\n var delta = lambda - lambda2;\n deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n } else {\n lambda00 = lambda, phi00 = phi;\n }\n areaStream.point(lambda, phi);\n linePoint(lambda, phi);\n}\nfunction boundsRingStart() {\n areaStream.lineStart();\n}\nfunction boundsRingEnd() {\n boundsRingPoint(lambda00, phi00);\n areaStream.lineEnd();\n if (abs(deltaSum) > epsilon) lambda0 = -(lambda1 = 180);\n range[0] = lambda0, range[1] = lambda1;\n p0 = null;\n}\n\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want\n// the distance between ±180° to be 360°.\nfunction angle(lambda0, lambda1) {\n return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n}\nfunction rangeCompare(a, b) {\n return a[0] - b[0];\n}\nfunction rangeContains(range, x) {\n return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n}\nexport default function (feature) {\n var i, n, a, b, merged, deltaMax, delta;\n phi1 = lambda1 = -(lambda0 = phi0 = Infinity);\n ranges = [];\n stream(feature, boundsStream);\n\n // First, sort ranges by their minimum longitudes.\n if (n = ranges.length) {\n ranges.sort(rangeCompare);\n\n // Then, merge any ranges that overlap.\n for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {\n b = ranges[i];\n if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\n if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n } else {\n merged.push(a = b);\n }\n }\n\n // Finally, find the largest gap between the merged ranges.\n // The final bounding box will be the inverse of this gap.\n for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {\n b = merged[i];\n if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];\n }\n }\n ranges = range = null;\n return lambda0 === Infinity || phi0 === Infinity ? [[NaN, NaN], [NaN, NaN]] : [[lambda0, phi0], [lambda1, phi1]];\n}","import { Adder } from \"d3-array\";\nimport { asin, atan2, cos, degrees, epsilon, epsilon2, hypot, radians, sin, sqrt } from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\nvar W0, W1, X0, Y0, Z0, X1, Y1, Z1, X2, Y2, Z2, lambda00, phi00,\n // first point\n x0, y0, z0; // previous point\n\nvar centroidStream = {\n sphere: noop,\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function polygonStart() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function polygonEnd() {\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n }\n};\n\n// Arithmetic mean of Cartesian vectors.\nfunction centroidPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n centroidPointCartesian(cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi));\n}\nfunction centroidPointCartesian(x, y, z) {\n ++W0;\n X0 += (x - X0) / W0;\n Y0 += (y - Y0) / W0;\n Z0 += (z - Z0) / W0;\n}\nfunction centroidLineStart() {\n centroidStream.point = centroidLinePointFirst;\n}\nfunction centroidLinePointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidStream.point = centroidLinePoint;\n centroidPointCartesian(x0, y0, z0);\n}\nfunction centroidLinePoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n w = atan2(sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\n// See J. E. Brock, The Inertia Tensor for a Spherical Triangle,\n// J. Applied Mechanics 42, 239 (1975).\nfunction centroidRingStart() {\n centroidStream.point = centroidRingPointFirst;\n}\nfunction centroidRingEnd() {\n centroidRingPoint(lambda00, phi00);\n centroidStream.point = centroidPoint;\n}\nfunction centroidRingPointFirst(lambda, phi) {\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n centroidStream.point = centroidRingPoint;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidPointCartesian(x0, y0, z0);\n}\nfunction centroidRingPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n cx = y0 * z - z0 * y,\n cy = z0 * x - x0 * z,\n cz = x0 * y - y0 * x,\n m = hypot(cx, cy, cz),\n w = asin(m),\n // line weight = angle\n v = m && -w / m; // area weight multiplier\n X2.add(v * cx);\n Y2.add(v * cy);\n Z2.add(v * cz);\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\nexport default function (object) {\n W0 = W1 = X0 = Y0 = Z0 = X1 = Y1 = Z1 = 0;\n X2 = new Adder();\n Y2 = new Adder();\n Z2 = new Adder();\n stream(object, centroidStream);\n var x = +X2,\n y = +Y2,\n z = +Z2,\n m = hypot(x, y, z);\n\n // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.\n if (m < epsilon2) {\n x = X1, y = Y1, z = Z1;\n // If the feature has zero length, fall back to arithmetic mean of point vectors.\n if (W1 < epsilon) x = X0, y = Y0, z = Z0;\n m = hypot(x, y, z);\n // If the feature still has an undefined ccentroid, then return.\n if (m < epsilon2) return [NaN, NaN];\n }\n return [atan2(y, x) * degrees, asin(z / m) * degrees];\n}","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nvar _ops;\nimport { bisector, union, intersection } from 'd3-array';\nimport { field, isDate, toNumber, isArray, inrange, extend, array, error, peek, hasOwnProperty } from 'vega-util';\nimport { Literal } from 'vega-expression';\nvar Intersect = 'intersect';\nvar Union = 'union';\nvar VlMulti = 'vlMulti';\nvar VlPoint = 'vlPoint';\nvar Or = 'or';\nvar And = 'and';\nvar SelectionId = '_vgsid_';\nvar $selectionId = field(SelectionId);\nvar TYPE_ENUM = 'E',\n TYPE_RANGE_INC = 'R',\n TYPE_RANGE_EXC = 'R-E',\n TYPE_RANGE_LE = 'R-LE',\n TYPE_RANGE_RE = 'R-RE',\n UNIT_INDEX = 'index:unit';\n\n// TODO: revisit date coercion?\nfunction testPoint(datum, entry) {\n var fields = entry.fields,\n values = entry.values,\n n = fields.length,\n i = 0,\n dval,\n f;\n for (; i < n; ++i) {\n f = fields[i];\n f.getter = field.getter || field(f.field);\n dval = f.getter(datum);\n if (isDate(dval)) dval = toNumber(dval);\n if (isDate(values[i])) values[i] = toNumber(values[i]);\n if (isDate(values[i][0])) values[i] = values[i].map(toNumber);\n if (f.type === TYPE_ENUM) {\n // Enumerated fields can either specify individual values (single/multi selections)\n // or an array of values (interval selections).\n if (isArray(values[i]) ? values[i].indexOf(dval) < 0 : dval !== values[i]) {\n return false;\n }\n } else {\n if (f.type === TYPE_RANGE_INC) {\n if (!inrange(dval, values[i])) return false;\n } else if (f.type === TYPE_RANGE_RE) {\n // Discrete selection of bins test within the range [bin_start, bin_end).\n if (!inrange(dval, values[i], true, false)) return false;\n } else if (f.type === TYPE_RANGE_EXC) {\n // 'R-E'/'R-LE' included for completeness.\n if (!inrange(dval, values[i], false, false)) return false;\n } else if (f.type === TYPE_RANGE_LE) {\n if (!inrange(dval, values[i], false, true)) return false;\n }\n }\n }\n return true;\n}\n\n/**\n * Tests if a tuple is contained within an interactive selection.\n * @param {string} name - The name of the data set representing the selection.\n * Tuples in the dataset are of the form\n * {unit: string, fields: array, values: array<*>}.\n * Fielddef is of the form\n * {field: string, channel: string, type: 'E' | 'R'} where\n * 'type' identifies whether tuples in the dataset enumerate\n * values for the field, or specify a continuous range.\n * @param {object} datum - The tuple to test for inclusion.\n * @param {string} op - The set operation for combining selections.\n * One of 'intersect' or 'union' (default).\n * @return {boolean} - True if the datum is in the selection, false otherwise.\n */\nfunction selectionTest(name, datum, op) {\n var data = this.context.data[name],\n entries = data ? data.values.value : [],\n unitIdx = data ? data[UNIT_INDEX] && data[UNIT_INDEX].value : undefined,\n intersect = op === Intersect,\n n = entries.length,\n i = 0,\n entry,\n miss,\n count,\n unit,\n b;\n for (; i < n; ++i) {\n entry = entries[i];\n if (unitIdx && intersect) {\n // multi selections union within the same unit and intersect across units.\n miss = miss || {};\n count = miss[unit = entry.unit] || 0;\n\n // if we've already matched this unit, skip.\n if (count === -1) continue;\n b = testPoint(datum, entry);\n miss[unit] = b ? -1 : ++count;\n\n // if we match and there are no other units return true\n // if we've missed against all tuples in this unit return false\n if (b && unitIdx.size === 1) return true;\n if (!b && count === unitIdx.get(unit).count) return false;\n } else {\n b = testPoint(datum, entry);\n\n // if we find a miss and we do require intersection return false\n // if we find a match and we don't require intersection return true\n if (intersect ^ b) return b;\n }\n }\n\n // if intersecting and we made it here, then we saw no misses\n // if not intersecting, then we saw no matches\n // if no active selections, return false\n return n && intersect;\n}\nvar bisect = bisector($selectionId),\n bisectLeft = bisect.left,\n bisectRight = bisect.right;\nfunction selectionIdTest(name, datum, op) {\n var data = this.context.data[name],\n entries = data ? data.values.value : [],\n unitIdx = data ? data[UNIT_INDEX] && data[UNIT_INDEX].value : undefined,\n intersect = op === Intersect,\n value = $selectionId(datum),\n index = bisectLeft(entries, value);\n if (index === entries.length) return false;\n if ($selectionId(entries[index]) !== value) return false;\n if (unitIdx && intersect) {\n if (unitIdx.size === 1) return true;\n if (bisectRight(entries, value) - index < unitIdx.size) return false;\n }\n return true;\n}\n\n/**\n * Maps an array of scene graph items to an array of selection tuples.\n * @param {string} name - The name of the dataset representing the selection.\n * @param {string} base - The base object that generated tuples extend.\n *\n * @returns {array} An array of selection entries for the given unit.\n */\nfunction selectionTuples(array, base) {\n return array.map(function (x) {\n return extend(base.fields ? {\n values: base.fields.map(function (f) {\n return (f.getter || (f.getter = field(f.field)))(x.datum);\n })\n } : _defineProperty({}, SelectionId, $selectionId(x.datum)), base);\n });\n}\n\n/**\n * Resolves selection for use as a scale domain or reads via the API.\n * @param {string} name - The name of the dataset representing the selection\n * @param {string} [op='union'] - The set operation for combining selections.\n * One of 'intersect' or 'union' (default).\n * @param {boolean} isMulti - Identifies a \"multi\" selection to perform more\n * expensive resolution computation.\n * @param {boolean} vl5 - With Vega-Lite v5, \"multi\" selections are now called \"point\"\n * selections, and thus the resolved tuple should reflect this name.\n * This parameter allows us to reflect this change without triggering\n * a major version bump for Vega.\n * @returns {object} An object of selected fields and values.\n */\nfunction selectionResolve(name, op, isMulti, vl5) {\n var data = this.context.data[name],\n entries = data ? data.values.value : [],\n resolved = {},\n multiRes = {},\n types = {},\n entry,\n fields,\n values,\n unit,\n field,\n value,\n res,\n resUnit,\n type,\n union,\n n = entries.length,\n i = 0,\n j,\n m;\n\n // First union all entries within the same unit.\n for (; i < n; ++i) {\n entry = entries[i];\n unit = entry.unit;\n fields = entry.fields;\n values = entry.values;\n if (fields && values) {\n // Intentional selection stores\n for (j = 0, m = fields.length; j < m; ++j) {\n field = fields[j];\n res = resolved[field.field] || (resolved[field.field] = {});\n resUnit = res[unit] || (res[unit] = []);\n types[field.field] = type = field.type.charAt(0);\n union = ops[\"\".concat(type, \"_union\")];\n res[unit] = union(resUnit, array(values[j]));\n }\n\n // If the same multi-selection is repeated over views and projected over\n // an encoding, it may operate over different fields making it especially\n // tricky to reliably resolve it. At best, we can de-dupe identical entries\n // but doing so may be more computationally expensive than it is worth.\n // Instead, for now, we simply transform our store representation into\n // a more human-friendly one.\n if (isMulti) {\n resUnit = multiRes[unit] || (multiRes[unit] = []);\n resUnit.push(array(values).reduce(function (obj, curr, j) {\n return obj[fields[j].field] = curr, obj;\n }, {}));\n }\n } else {\n // Short circuit extensional selectionId stores which hold sorted IDs unique to each unit.\n field = SelectionId;\n value = $selectionId(entry);\n res = resolved[field] || (resolved[field] = {});\n resUnit = res[unit] || (res[unit] = []);\n resUnit.push(value);\n if (isMulti) {\n resUnit = multiRes[unit] || (multiRes[unit] = []);\n resUnit.push(_defineProperty({}, SelectionId, value));\n }\n }\n }\n\n // Then resolve fields across units as per the op.\n op = op || Union;\n if (resolved[SelectionId]) {\n resolved[SelectionId] = ops[\"\".concat(SelectionId, \"_\").concat(op)].apply(ops, _toConsumableArray(Object.values(resolved[SelectionId])));\n } else {\n Object.keys(resolved).forEach(function (field) {\n resolved[field] = Object.keys(resolved[field]).map(function (unit) {\n return resolved[field][unit];\n }).reduce(function (acc, curr) {\n return acc === undefined ? curr : ops[\"\".concat(types[field], \"_\").concat(op)](acc, curr);\n });\n });\n }\n entries = Object.keys(multiRes);\n if (isMulti && entries.length) {\n var key = vl5 ? VlPoint : VlMulti;\n resolved[key] = op === Union ? _defineProperty({}, Or, entries.reduce(function (acc, k) {\n return acc.push.apply(acc, _toConsumableArray(multiRes[k])), acc;\n }, [])) : _defineProperty({}, And, entries.map(function (k) {\n return _defineProperty({}, Or, multiRes[k]);\n }));\n }\n return resolved;\n}\nvar ops = (_ops = {}, _defineProperty(_ops, \"\".concat(SelectionId, \"_union\"), union), _defineProperty(_ops, \"\".concat(SelectionId, \"_intersect\"), intersection), _defineProperty(_ops, \"E_union\", function E_union(base, value) {\n if (!base.length) return value;\n var i = 0,\n n = value.length;\n for (; i < n; ++i) if (base.indexOf(value[i]) < 0) base.push(value[i]);\n return base;\n}), _defineProperty(_ops, \"E_intersect\", function E_intersect(base, value) {\n return !base.length ? value : base.filter(function (v) {\n return value.indexOf(v) >= 0;\n });\n}), _defineProperty(_ops, \"R_union\", function R_union(base, value) {\n var lo = toNumber(value[0]),\n hi = toNumber(value[1]);\n if (lo > hi) {\n lo = value[1];\n hi = value[0];\n }\n if (!base.length) return [lo, hi];\n if (base[0] > lo) base[0] = lo;\n if (base[1] < hi) base[1] = hi;\n return base;\n}), _defineProperty(_ops, \"R_intersect\", function R_intersect(base, value) {\n var lo = toNumber(value[0]),\n hi = toNumber(value[1]);\n if (lo > hi) {\n lo = value[1];\n hi = value[0];\n }\n if (!base.length) return [lo, hi];\n if (hi < base[0] || base[1] < lo) {\n return [];\n } else {\n if (base[0] < lo) base[0] = lo;\n if (base[1] > hi) base[1] = hi;\n }\n return base;\n}), _ops);\nvar DataPrefix = ':',\n IndexPrefix = '@';\nfunction selectionVisitor(name, args, scope, params) {\n if (args[0].type !== Literal) error('First argument to selection functions must be a string literal.');\n var data = args[0].value,\n op = args.length >= 2 && peek(args).value,\n field = 'unit',\n indexName = IndexPrefix + field,\n dataName = DataPrefix + data;\n\n // eslint-disable-next-line no-prototype-builtins\n if (op === Intersect && !hasOwnProperty(params, indexName)) {\n params[indexName] = scope.getData(data).indataRef(scope, field);\n }\n\n // eslint-disable-next-line no-prototype-builtins\n if (!hasOwnProperty(params, dataName)) {\n params[dataName] = scope.getData(data).tuplesRef();\n }\n}\nexport { selectionIdTest, selectionResolve, selectionTest, selectionTuples, selectionVisitor };","export default function ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}","export default function descending(a, b) {\n return a == null || b == null ? NaN : b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}","import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\nexport default function bisector(f) {\n var compare1, compare2, delta;\n\n // If an accessor is specified, promote it to a comparator. In this case we\n // can test whether the search value is (self-) comparable. We can’t do this\n // for a comparator (except for specific, known comparators) because we can’t\n // tell if the comparator is symmetric, and an asymmetric comparator can’t be\n // used to test whether a single value is comparable.\n if (f.length !== 2) {\n compare1 = ascending;\n compare2 = function compare2(d, x) {\n return ascending(f(d), x);\n };\n delta = function delta(d, x) {\n return f(d) - x;\n };\n } else {\n compare1 = f === ascending || f === descending ? f : zero;\n compare2 = f;\n delta = f;\n }\n function left(a, x) {\n var lo = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var hi = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : a.length;\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n var mid = lo + hi >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n function right(a, x) {\n var lo = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var hi = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : a.length;\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n var mid = lo + hi >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n function center(a, x) {\n var lo = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var hi = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : a.length;\n var i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n return {\n left: left,\n center: center,\n right: right\n };\n}\nfunction zero() {\n return 0;\n}","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { InternSet } from \"internmap\";\nexport default function union() {\n var set = new InternSet();\n for (var _len = arguments.length, others = new Array(_len), _key = 0; _key < _len; _key++) {\n others[_key] = arguments[_key];\n }\n for (var _i = 0, _others = others; _i < _others.length; _i++) {\n var other = _others[_i];\n var _iterator = _createForOfIteratorHelper(other),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var o = _step.value;\n set.add(o);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n return set;\n}","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { InternSet } from \"internmap\";\nexport default function intersection(values) {\n for (var _len = arguments.length, others = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n others[_key - 1] = arguments[_key];\n }\n values = new InternSet(values);\n others = others.map(set);\n var _iterator = _createForOfIteratorHelper(values),\n _step;\n try {\n out: for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var value = _step.value;\n var _iterator2 = _createForOfIteratorHelper(others),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var other = _step2.value;\n if (!other.has(value)) {\n values.delete(value);\n continue out;\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return values;\n}\nfunction set(values) {\n return values instanceof InternSet ? values : new InternSet(values);\n}","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport \"core-js/modules/es.math.hypot.js\";\nimport { truthy, error, hasOwnProperty, isFunction, isString, stringValue, extend, isArray, isObject, field, peek, identity, array as array$1, isBoolean, isDate, isNumber, isRegExp, toBoolean, toDate as _toDate, toNumber, toString, flush, lerp, pad, span, inrange, truncate, quarter, utcquarter, extent as _extent, clampRange, panLinear, panLog, panPow, panSymlog, zoomLinear, zoomLog, zoomPow, zoomSymlog } from 'vega-util';\nimport { Literal, codegenExpression, constants, functions, parseExpression, CallExpression } from 'vega-expression';\nimport { isRegisteredScale, bandSpace, scale as scale$1, scaleFraction } from 'vega-scale';\nimport { geoArea as geoArea$1, geoBounds as geoBounds$1, geoCentroid as geoCentroid$1 } from 'd3-geo';\nimport { rgb, lab, hcl, hsl } from 'd3-color';\nimport { isTuple } from 'vega-dataflow';\nimport { Gradient, pathRender, pathParse, Bounds, intersect as intersect$1 } from 'vega-scenegraph';\nimport { selectionVisitor, selectionTest, selectionIdTest, selectionResolve, selectionTuples } from 'vega-selections';\nimport { random as _random, cumulativeNormal, cumulativeLogNormal, cumulativeUniform, densityNormal, densityLogNormal, densityUniform, quantileNormal, quantileLogNormal, quantileUniform, sampleNormal, sampleLogNormal, sampleUniform } from 'vega-statistics';\nimport { utcOffset, utcSequence, timeOffset, timeSequence, timeUnitSpecifier, week, utcweek, dayofyear, utcdayofyear } from 'vega-time';\nimport { range as range$1 } from 'd3-array';\nfunction data(name) {\n var data = this.context.data[name];\n return data ? data.values.value : [];\n}\nfunction indata(name, field, value) {\n var index = this.context.data[name]['index:' + field],\n entry = index ? index.value.get(value) : undefined;\n return entry ? entry.count : entry;\n}\nfunction setdata(name, tuples) {\n var df = this.context.dataflow,\n data = this.context.data[name],\n input = data.input;\n df.pulse(input, df.changeset().remove(truthy).insert(tuples));\n return 1;\n}\nfunction encode(item, name, retval) {\n if (item) {\n var df = this.context.dataflow,\n target = item.mark.source;\n df.pulse(target, df.changeset().encode(item, name));\n }\n return retval !== undefined ? retval : item;\n}\nvar wrap = function wrap(method) {\n return function (value, spec) {\n var locale = this.context.dataflow.locale();\n return locale[method](spec)(value);\n };\n};\nvar format = wrap('format');\nvar timeFormat = wrap('timeFormat');\nvar utcFormat = wrap('utcFormat');\nvar timeParse = wrap('timeParse');\nvar utcParse = wrap('utcParse');\nvar dateObj = new Date(2000, 0, 1);\nfunction time(month, day, specifier) {\n if (!Number.isInteger(month) || !Number.isInteger(day)) return '';\n dateObj.setYear(2000);\n dateObj.setMonth(month);\n dateObj.setDate(day);\n return timeFormat.call(this, dateObj, specifier);\n}\nfunction monthFormat(month) {\n return time.call(this, month, 1, '%B');\n}\nfunction monthAbbrevFormat(month) {\n return time.call(this, month, 1, '%b');\n}\nfunction dayFormat(day) {\n return time.call(this, 0, 2 + day, '%A');\n}\nfunction dayAbbrevFormat(day) {\n return time.call(this, 0, 2 + day, '%a');\n}\nvar DataPrefix = ':';\nvar IndexPrefix = '@';\nvar ScalePrefix = '%';\nvar SignalPrefix = '$';\nfunction dataVisitor(name, args, scope, params) {\n if (args[0].type !== Literal) {\n error('First argument to data functions must be a string literal.');\n }\n var data = args[0].value,\n dataName = DataPrefix + data;\n if (!hasOwnProperty(dataName, params)) {\n try {\n params[dataName] = scope.getData(data).tuplesRef();\n } catch (err) {\n // if data set does not exist, there's nothing to track\n }\n }\n}\nfunction indataVisitor(name, args, scope, params) {\n if (args[0].type !== Literal) error('First argument to indata must be a string literal.');\n if (args[1].type !== Literal) error('Second argument to indata must be a string literal.');\n var data = args[0].value,\n field = args[1].value,\n indexName = IndexPrefix + field;\n if (!hasOwnProperty(indexName, params)) {\n params[indexName] = scope.getData(data).indataRef(scope, field);\n }\n}\nfunction scaleVisitor(name, args, scope, params) {\n if (args[0].type === Literal) {\n // add scale dependency\n addScaleDependency(scope, params, args[0].value);\n } else {\n // indirect scale lookup; add all scales as parameters\n for (name in scope.scales) {\n addScaleDependency(scope, params, name);\n }\n }\n}\nfunction addScaleDependency(scope, params, name) {\n var scaleName = ScalePrefix + name;\n if (!hasOwnProperty(params, scaleName)) {\n try {\n params[scaleName] = scope.scaleRef(name);\n } catch (err) {\n // TODO: error handling? warning?\n }\n }\n}\nfunction getScale(nameOrFunction, ctx) {\n if (isFunction(nameOrFunction)) {\n return nameOrFunction;\n }\n if (isString(nameOrFunction)) {\n var maybeScale = ctx.scales[nameOrFunction];\n return maybeScale && isRegisteredScale(maybeScale.value) ? maybeScale.value : undefined;\n }\n return undefined;\n}\nfunction internalScaleFunctions(codegen, fnctx, visitors) {\n // add helper method to the 'this' expression function context\n fnctx.__bandwidth = function (s) {\n return s && s.bandwidth ? s.bandwidth() : 0;\n };\n\n // register AST visitors for internal scale functions\n visitors._bandwidth = scaleVisitor;\n visitors._range = scaleVisitor;\n visitors._scale = scaleVisitor;\n\n // resolve scale reference directly to the signal hash argument\n var ref = function ref(arg) {\n return '_[' + (arg.type === Literal ? stringValue(ScalePrefix + arg.value) : stringValue(ScalePrefix) + '+' + codegen(arg)) + ']';\n };\n\n // define and return internal scale function code generators\n // these internal functions are called by mark encoders\n return {\n _bandwidth: function _bandwidth(args) {\n return \"this.__bandwidth(\".concat(ref(args[0]), \")\");\n },\n _range: function _range(args) {\n return \"\".concat(ref(args[0]), \".range()\");\n },\n _scale: function _scale(args) {\n return \"\".concat(ref(args[0]), \"(\").concat(codegen(args[1]), \")\");\n }\n };\n}\nfunction geoMethod(methodName, globalMethod) {\n return function (projection, geojson, group) {\n if (projection) {\n // projection defined, use it\n var p = getScale(projection, (group || this).context);\n return p && p.path[methodName](geojson);\n } else {\n // projection undefined, use global method\n return globalMethod(geojson);\n }\n };\n}\nvar geoArea = geoMethod('area', geoArea$1);\nvar geoBounds = geoMethod('bounds', geoBounds$1);\nvar geoCentroid = geoMethod('centroid', geoCentroid$1);\nfunction inScope(item) {\n var group = this.context.group;\n var value = false;\n if (group) while (item) {\n if (item === group) {\n value = true;\n break;\n }\n item = item.mark.group;\n }\n return value;\n}\nfunction log(df, method, args) {\n try {\n df[method].apply(df, ['EXPRESSION'].concat([].slice.call(args)));\n } catch (err) {\n df.warn(err);\n }\n return args[args.length - 1];\n}\nfunction warn() {\n return log(this.context.dataflow, 'warn', arguments);\n}\nfunction info() {\n return log(this.context.dataflow, 'info', arguments);\n}\nfunction debug() {\n return log(this.context.dataflow, 'debug', arguments);\n}\n\n// https://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\nfunction channel_luminance_value(channelValue) {\n var val = channelValue / 255;\n if (val <= 0.03928) {\n return val / 12.92;\n }\n return Math.pow((val + 0.055) / 1.055, 2.4);\n}\nfunction luminance(color) {\n var c = rgb(color),\n r = channel_luminance_value(c.r),\n g = channel_luminance_value(c.g),\n b = channel_luminance_value(c.b);\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n}\n\n// https://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef\nfunction contrast(color1, color2) {\n var lum1 = luminance(color1),\n lum2 = luminance(color2),\n lumL = Math.max(lum1, lum2),\n lumD = Math.min(lum1, lum2);\n return (lumL + 0.05) / (lumD + 0.05);\n}\nfunction merge() {\n var args = [].slice.call(arguments);\n args.unshift({});\n return extend.apply(void 0, _toConsumableArray(args));\n}\nfunction equal(a, b) {\n return a === b || a !== a && b !== b ? true : isArray(a) ? isArray(b) && a.length === b.length ? equalArray(a, b) : false : isObject(a) && isObject(b) ? equalObject(a, b) : false;\n}\nfunction equalArray(a, b) {\n for (var i = 0, n = a.length; i < n; ++i) {\n if (!equal(a[i], b[i])) return false;\n }\n return true;\n}\nfunction equalObject(a, b) {\n for (var key in a) {\n if (!equal(a[key], b[key])) return false;\n }\n return true;\n}\nfunction removePredicate(props) {\n return function (_) {\n return equalObject(props, _);\n };\n}\nfunction modify(name, insert, remove, toggle, modify, values) {\n var df = this.context.dataflow,\n data = this.context.data[name],\n input = data.input,\n stamp = df.stamp();\n var changes = data.changes,\n predicate,\n key;\n if (df._trigger === false || !(input.value.length || insert || toggle)) {\n // nothing to do!\n return 0;\n }\n if (!changes || changes.stamp < stamp) {\n data.changes = changes = df.changeset();\n changes.stamp = stamp;\n df.runAfter(function () {\n data.modified = true;\n df.pulse(input, changes).run();\n }, true, 1);\n }\n if (remove) {\n predicate = remove === true ? truthy : isArray(remove) || isTuple(remove) ? remove : removePredicate(remove);\n changes.remove(predicate);\n }\n if (insert) {\n changes.insert(insert);\n }\n if (toggle) {\n predicate = removePredicate(toggle);\n if (input.value.some(predicate)) {\n changes.remove(predicate);\n } else {\n changes.insert(toggle);\n }\n }\n if (modify) {\n for (key in values) {\n changes.modify(modify, key, values[key]);\n }\n }\n return 1;\n}\nfunction pinchDistance(event) {\n var t = event.touches,\n dx = t[0].clientX - t[1].clientX,\n dy = t[0].clientY - t[1].clientY;\n return Math.hypot(dx, dy);\n}\nfunction pinchAngle(event) {\n var t = event.touches;\n return Math.atan2(t[0].clientY - t[1].clientY, t[0].clientX - t[1].clientX);\n}\n\n// memoize accessor functions\nvar accessors = {};\nfunction pluck(data, name) {\n var accessor = accessors[name] || (accessors[name] = field(name));\n return isArray(data) ? data.map(accessor) : accessor(data);\n}\nfunction array(seq) {\n return isArray(seq) || ArrayBuffer.isView(seq) ? seq : null;\n}\nfunction sequence(seq) {\n return array(seq) || (isString(seq) ? seq : null);\n}\nfunction join(seq) {\n var _array;\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n return (_array = array(seq)).join.apply(_array, args);\n}\nfunction indexof(seq) {\n var _sequence;\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n return (_sequence = sequence(seq)).indexOf.apply(_sequence, args);\n}\nfunction lastindexof(seq) {\n var _sequence2;\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n return (_sequence2 = sequence(seq)).lastIndexOf.apply(_sequence2, args);\n}\nfunction slice(seq) {\n var _sequence3;\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n return (_sequence3 = sequence(seq)).slice.apply(_sequence3, args);\n}\nfunction replace(str, pattern, repl) {\n if (isFunction(repl)) error('Function argument passed to replace.');\n return String(str).replace(pattern, repl);\n}\nfunction reverse(seq) {\n return array(seq).slice().reverse();\n}\nfunction bandspace(count, paddingInner, paddingOuter) {\n return bandSpace(count || 0, paddingInner || 0, paddingOuter || 0);\n}\nfunction bandwidth(name, group) {\n var s = getScale(name, (group || this).context);\n return s && s.bandwidth ? s.bandwidth() : 0;\n}\nfunction copy(name, group) {\n var s = getScale(name, (group || this).context);\n return s ? s.copy() : undefined;\n}\nfunction domain(name, group) {\n var s = getScale(name, (group || this).context);\n return s ? s.domain() : [];\n}\nfunction invert(name, range, group) {\n var s = getScale(name, (group || this).context);\n return !s ? undefined : isArray(range) ? (s.invertRange || s.invert)(range) : (s.invert || s.invertExtent)(range);\n}\nfunction range(name, group) {\n var s = getScale(name, (group || this).context);\n return s && s.range ? s.range() : [];\n}\nfunction scale(name, value, group) {\n var s = getScale(name, (group || this).context);\n return s ? s(value) : undefined;\n}\nfunction scaleGradient(scale, p0, p1, count, group) {\n scale = getScale(scale, (group || this).context);\n var gradient = Gradient(p0, p1);\n var stops = scale.domain(),\n min = stops[0],\n max = peek(stops),\n fraction = identity;\n if (!(max - min)) {\n // expand scale if domain has zero span, fix #1479\n scale = (scale.interpolator ? scale$1('sequential')().interpolator(scale.interpolator()) : scale$1('linear')().interpolate(scale.interpolate()).range(scale.range())).domain([min = 0, max = 1]);\n } else {\n fraction = scaleFraction(scale, min, max);\n }\n if (scale.ticks) {\n stops = scale.ticks(+count || 15);\n if (min !== stops[0]) stops.unshift(min);\n if (max !== peek(stops)) stops.push(max);\n }\n stops.forEach(function (_) {\n return gradient.stop(fraction(_), scale(_));\n });\n return gradient;\n}\nfunction geoShape(projection, geojson, group) {\n var p = getScale(projection, (group || this).context);\n return function (context) {\n return p ? p.path.context(context)(geojson) : '';\n };\n}\nfunction pathShape(path) {\n var p = null;\n return function (context) {\n return context ? pathRender(context, p = p || pathParse(path)) : path;\n };\n}\nvar datum = function datum(d) {\n return d.data;\n};\nfunction treeNodes(name, context) {\n var tree = data.call(context, name);\n return tree.root && tree.root.lookup || {};\n}\nfunction treePath(name, source, target) {\n var nodes = treeNodes(name, this),\n s = nodes[source],\n t = nodes[target];\n return s && t ? s.path(t).map(datum) : undefined;\n}\nfunction treeAncestors(name, node) {\n var n = treeNodes(name, this)[node];\n return n ? n.ancestors().map(datum) : undefined;\n}\nvar _window = function _window() {\n return typeof window !== 'undefined' && window || null;\n};\nfunction screen() {\n var w = _window();\n return w ? w.screen : {};\n}\nfunction windowSize() {\n var w = _window();\n return w ? [w.innerWidth, w.innerHeight] : [undefined, undefined];\n}\nfunction containerSize() {\n var view = this.context.dataflow,\n el = view.container && view.container();\n return el ? [el.clientWidth, el.clientHeight] : [undefined, undefined];\n}\nfunction intersect(b, opt, group) {\n if (!b) return [];\n var _b = _slicedToArray(b, 2),\n u = _b[0],\n v = _b[1],\n box = new Bounds().set(u[0], u[1], v[0], v[1]),\n scene = group || this.context.dataflow.scenegraph().root;\n return intersect$1(scene, box, filter(opt));\n}\nfunction filter(opt) {\n var p = null;\n if (opt) {\n var types = array$1(opt.marktype),\n names = array$1(opt.markname);\n p = function p(_) {\n return (!types.length || types.some(function (t) {\n return _.marktype === t;\n })) && (!names.length || names.some(function (s) {\n return _.name === s;\n }));\n };\n }\n return p;\n}\n\n/**\n * Appends a new point to the lasso\n *\n * @param {*} lasso the lasso in pixel space\n * @param {*} x the x coordinate in pixel space\n * @param {*} y the y coordinate in pixel space\n * @param {*} minDist the minimum distance, in pixels, that thenew point needs to be apart from the last point\n * @returns a new array containing the lasso with the new point\n */\nfunction lassoAppend(lasso, x, y) {\n var minDist = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 5;\n lasso = array$1(lasso);\n var last = lasso[lasso.length - 1];\n\n // Add point to lasso if its the first point or distance to last point exceed minDist\n return last === undefined || Math.hypot(last[0] - x, last[1] - y) > minDist ? [].concat(_toConsumableArray(lasso), [[x, y]]) : lasso;\n}\n\n/**\n * Generates a svg path command which draws a lasso\n *\n * @param {*} lasso the lasso in pixel space in the form [[x,y], [x,y], ...]\n * @returns the svg path command that draws the lasso\n */\nfunction lassoPath(lasso) {\n return array$1(lasso).reduce(function (svg, _ref, i) {\n var _ref2 = _slicedToArray(_ref, 2),\n x = _ref2[0],\n y = _ref2[1];\n return svg += i == 0 ? \"M \".concat(x, \",\").concat(y, \" \") : i === lasso.length - 1 ? ' Z' : \"L \".concat(x, \",\").concat(y, \" \");\n }, '');\n}\n\n/**\n * Inverts the lasso from pixel space to an array of vega scenegraph tuples\n *\n * @param {*} data the dataset\n * @param {*} pixelLasso the lasso in pixel space, [[x,y], [x,y], ...]\n * @param {*} unit the unit where the lasso is defined\n *\n * @returns an array of vega scenegraph tuples\n */\nfunction intersectLasso(markname, pixelLasso, unit) {\n var x = unit.x,\n y = unit.y,\n mark = unit.mark;\n var bb = new Bounds().set(Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER, Number.MIN_SAFE_INTEGER, Number.MIN_SAFE_INTEGER);\n\n // Get bounding box around lasso\n var _iterator = _createForOfIteratorHelper(pixelLasso),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _step$value = _slicedToArray(_step.value, 2),\n px = _step$value[0],\n py = _step$value[1];\n if (px < bb.x1) bb.x1 = px;\n if (px > bb.x2) bb.x2 = px;\n if (py < bb.y1) bb.y1 = py;\n if (py > bb.y2) bb.y2 = py;\n }\n\n // Translate bb against unit coordinates\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n bb.translate(x, y);\n var intersection = intersect([[bb.x1, bb.y1], [bb.x2, bb.y2]], markname, mark);\n\n // Check every point against the lasso\n return intersection.filter(function (tuple) {\n return pointInPolygon(tuple.x, tuple.y, pixelLasso);\n });\n}\n\n/**\n * Performs a test if a point is inside a polygon based on the idea from\n * https://wrf.ecse.rpi.edu/Research/Short_Notes/pnpoly.html\n *\n * This method will not need the same start/end point since it wraps around the edges of the array\n *\n * @param {*} test a point to test against\n * @param {*} polygon a polygon in the form [[x,y], [x,y], ...]\n * @returns true if the point lies inside the polygon, false otherwise\n */\nfunction pointInPolygon(testx, testy, polygon) {\n var intersections = 0;\n for (var i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n var _polygon$j = _slicedToArray(polygon[j], 2),\n prevX = _polygon$j[0],\n prevY = _polygon$j[1];\n var _polygon$i = _slicedToArray(polygon[i], 2),\n x = _polygon$i[0],\n y = _polygon$i[1];\n\n // count intersections\n if (y > testy != prevY > testy && testx < (prevX - x) * (testy - y) / (prevY - y) + x) {\n intersections++;\n }\n }\n\n // point is in polygon if intersection count is odd\n return intersections & 1;\n}\n\n// Expression function context object\nvar functionContext = {\n random: function random() {\n return _random();\n },\n // override default\n cumulativeNormal: cumulativeNormal,\n cumulativeLogNormal: cumulativeLogNormal,\n cumulativeUniform: cumulativeUniform,\n densityNormal: densityNormal,\n densityLogNormal: densityLogNormal,\n densityUniform: densityUniform,\n quantileNormal: quantileNormal,\n quantileLogNormal: quantileLogNormal,\n quantileUniform: quantileUniform,\n sampleNormal: sampleNormal,\n sampleLogNormal: sampleLogNormal,\n sampleUniform: sampleUniform,\n isArray: isArray,\n isBoolean: isBoolean,\n isDate: isDate,\n isDefined: function isDefined(_) {\n return _ !== undefined;\n },\n isNumber: isNumber,\n isObject: isObject,\n isRegExp: isRegExp,\n isString: isString,\n isTuple: isTuple,\n isValid: function isValid(_) {\n return _ != null && _ === _;\n },\n toBoolean: toBoolean,\n toDate: function toDate(_) {\n return _toDate(_);\n },\n // suppress extra arguments\n toNumber: toNumber,\n toString: toString,\n indexof: indexof,\n join: join,\n lastindexof: lastindexof,\n replace: replace,\n reverse: reverse,\n slice: slice,\n flush: flush,\n lerp: lerp,\n merge: merge,\n pad: pad,\n peek: peek,\n pluck: pluck,\n span: span,\n inrange: inrange,\n truncate: truncate,\n rgb: rgb,\n lab: lab,\n hcl: hcl,\n hsl: hsl,\n luminance: luminance,\n contrast: contrast,\n sequence: range$1,\n format: format,\n utcFormat: utcFormat,\n utcParse: utcParse,\n utcOffset: utcOffset,\n utcSequence: utcSequence,\n timeFormat: timeFormat,\n timeParse: timeParse,\n timeOffset: timeOffset,\n timeSequence: timeSequence,\n timeUnitSpecifier: timeUnitSpecifier,\n monthFormat: monthFormat,\n monthAbbrevFormat: monthAbbrevFormat,\n dayFormat: dayFormat,\n dayAbbrevFormat: dayAbbrevFormat,\n quarter: quarter,\n utcquarter: utcquarter,\n week: week,\n utcweek: utcweek,\n dayofyear: dayofyear,\n utcdayofyear: utcdayofyear,\n warn: warn,\n info: info,\n debug: debug,\n extent: function extent(_) {\n return _extent(_);\n },\n // suppress extra arguments\n inScope: inScope,\n intersect: intersect,\n clampRange: clampRange,\n pinchDistance: pinchDistance,\n pinchAngle: pinchAngle,\n screen: screen,\n containerSize: containerSize,\n windowSize: windowSize,\n bandspace: bandspace,\n setdata: setdata,\n pathShape: pathShape,\n panLinear: panLinear,\n panLog: panLog,\n panPow: panPow,\n panSymlog: panSymlog,\n zoomLinear: zoomLinear,\n zoomLog: zoomLog,\n zoomPow: zoomPow,\n zoomSymlog: zoomSymlog,\n encode: encode,\n modify: modify,\n lassoAppend: lassoAppend,\n lassoPath: lassoPath,\n intersectLasso: intersectLasso\n};\nvar eventFunctions = ['view', 'item', 'group', 'xy', 'x', 'y'],\n // event functions\n eventPrefix = 'event.vega.',\n // event function prefix\n thisPrefix = 'this.',\n // function context prefix\n astVisitors = {}; // AST visitors for dependency analysis\n\n// export code generator parameters\nvar codegenParams = {\n forbidden: ['_'],\n allowed: ['datum', 'event', 'item'],\n fieldvar: 'datum',\n globalvar: function globalvar(id) {\n return \"_[\".concat(stringValue(SignalPrefix + id), \"]\");\n },\n functions: buildFunctions,\n constants: constants,\n visitors: astVisitors\n};\n\n// export code generator\nvar codeGenerator = codegenExpression(codegenParams);\n\n// Build expression function registry\nfunction buildFunctions(codegen) {\n var fn = functions(codegen);\n eventFunctions.forEach(function (name) {\n return fn[name] = eventPrefix + name;\n });\n for (var name in functionContext) {\n fn[name] = thisPrefix + name;\n }\n extend(fn, internalScaleFunctions(codegen, functionContext, astVisitors));\n return fn;\n}\n\n// Register an expression function\nfunction expressionFunction(name, fn, visitor) {\n if (arguments.length === 1) {\n return functionContext[name];\n }\n\n // register with the functionContext\n functionContext[name] = fn;\n\n // if there is an astVisitor register that, too\n if (visitor) astVisitors[name] = visitor;\n\n // if the code generator has already been initialized,\n // we need to also register the function with it\n if (codeGenerator) codeGenerator.functions[name] = thisPrefix + name;\n return this;\n}\n\n// register expression functions with ast visitors\nexpressionFunction('bandwidth', bandwidth, scaleVisitor);\nexpressionFunction('copy', copy, scaleVisitor);\nexpressionFunction('domain', domain, scaleVisitor);\nexpressionFunction('range', range, scaleVisitor);\nexpressionFunction('invert', invert, scaleVisitor);\nexpressionFunction('scale', scale, scaleVisitor);\nexpressionFunction('gradient', scaleGradient, scaleVisitor);\nexpressionFunction('geoArea', geoArea, scaleVisitor);\nexpressionFunction('geoBounds', geoBounds, scaleVisitor);\nexpressionFunction('geoCentroid', geoCentroid, scaleVisitor);\nexpressionFunction('geoShape', geoShape, scaleVisitor);\nexpressionFunction('indata', indata, indataVisitor);\nexpressionFunction('data', data, dataVisitor);\nexpressionFunction('treePath', treePath, dataVisitor);\nexpressionFunction('treeAncestors', treeAncestors, dataVisitor);\n\n// register Vega-Lite selection functions\nexpressionFunction('vlSelectionTest', selectionTest, selectionVisitor);\nexpressionFunction('vlSelectionIdTest', selectionIdTest, selectionVisitor);\nexpressionFunction('vlSelectionResolve', selectionResolve, selectionVisitor);\nexpressionFunction('vlSelectionTuples', selectionTuples);\nfunction parser(expr, scope) {\n var params = {};\n\n // parse the expression to an abstract syntax tree (ast)\n var ast;\n try {\n expr = isString(expr) ? expr : stringValue(expr) + '';\n ast = parseExpression(expr);\n } catch (err) {\n error('Expression parse error: ' + expr);\n }\n\n // analyze ast function calls for dependencies\n ast.visit(function (node) {\n if (node.type !== CallExpression) return;\n var name = node.callee.name,\n visit = codegenParams.visitors[name];\n if (visit) visit(name, node.arguments, scope, params);\n });\n\n // perform code generation\n var gen = codeGenerator(ast);\n\n // collect signal dependencies\n gen.globals.forEach(function (name) {\n var signalName = SignalPrefix + name;\n if (!hasOwnProperty(params, signalName) && scope.getSignal(name)) {\n params[signalName] = scope.signalRef(name);\n }\n });\n\n // return generated expression code and dependencies\n return {\n $expr: extend({\n code: gen.code\n }, scope.options.ast ? {\n ast: ast\n } : null),\n $fields: gen.fields,\n $params: params\n };\n}\nexport { DataPrefix, IndexPrefix, ScalePrefix, SignalPrefix, bandspace, bandwidth, codeGenerator, codegenParams, containerSize, contrast, copy, data, dataVisitor, dayAbbrevFormat, dayFormat, debug, domain, encode, expressionFunction, format, functionContext, geoArea, geoBounds, geoCentroid, geoShape, inScope, indata, indataVisitor, indexof, info, invert, join, lastindexof, luminance, merge, modify, monthAbbrevFormat, monthFormat, parser as parseExpression, pathShape, pinchAngle, pinchDistance, pluck, range, replace, reverse, scale, scaleGradient, scaleVisitor, screen, setdata, slice, timeFormat, timeParse, treeAncestors, treePath, utcFormat, utcParse, warn, windowSize };","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport { toSet, stringValue, error, isArray, isObject, hasOwnProperty, accessor, key, field, array, compare, truthy } from 'vega-util';\nimport { tupleid } from 'vega-dataflow';\n\n/**\n * Parse a serialized dataflow specification.\n */\nfunction parse(spec) {\n var ctx = this,\n operators = spec.operators || [];\n\n // parse background\n if (spec.background) {\n ctx.background = spec.background;\n }\n\n // parse event configuration\n if (spec.eventConfig) {\n ctx.eventConfig = spec.eventConfig;\n }\n\n // parse locale configuration\n if (spec.locale) {\n ctx.locale = spec.locale;\n }\n\n // parse operators\n operators.forEach(function (entry) {\n return ctx.parseOperator(entry);\n });\n\n // parse operator parameters\n operators.forEach(function (entry) {\n return ctx.parseOperatorParameters(entry);\n });\n\n // parse streams\n (spec.streams || []).forEach(function (entry) {\n return ctx.parseStream(entry);\n });\n\n // parse updates\n (spec.updates || []).forEach(function (entry) {\n return ctx.parseUpdate(entry);\n });\n return ctx.resolve();\n}\nvar Skip = toSet(['rule']),\n Swap = toSet(['group', 'image', 'rect']);\nfunction adjustSpatial(encode, marktype) {\n var code = '';\n if (Skip[marktype]) return code;\n if (encode.x2) {\n if (encode.x) {\n if (Swap[marktype]) {\n code += 'if(o.x>o.x2)$=o.x,o.x=o.x2,o.x2=$;';\n }\n code += 'o.width=o.x2-o.x;';\n } else {\n code += 'o.x=o.x2-(o.width||0);';\n }\n }\n if (encode.xc) {\n code += 'o.x=o.xc-(o.width||0)/2;';\n }\n if (encode.y2) {\n if (encode.y) {\n if (Swap[marktype]) {\n code += 'if(o.y>o.y2)$=o.y,o.y=o.y2,o.y2=$;';\n }\n code += 'o.height=o.y2-o.y;';\n } else {\n code += 'o.y=o.y2-(o.height||0);';\n }\n }\n if (encode.yc) {\n code += 'o.y=o.yc-(o.height||0)/2;';\n }\n return code;\n}\nfunction canonicalType(type) {\n return (type + '').toLowerCase();\n}\nfunction isOperator(type) {\n return canonicalType(type) === 'operator';\n}\nfunction isCollect(type) {\n return canonicalType(type) === 'collect';\n}\nfunction expression(ctx, args, code) {\n // wrap code in return statement if expression does not terminate\n if (!code.endsWith(';')) {\n code = 'return(' + code + ');';\n }\n var fn = Function.apply(void 0, _toConsumableArray(args.concat(code)));\n return ctx && ctx.functions ? fn.bind(ctx.functions) : fn;\n}\n\n// generate code for comparing a single field\nfunction _compare(u, v, lt, gt) {\n return \"((u = \".concat(u, \") < (v = \").concat(v, \") || u == null) && v != null ? \").concat(lt, \"\\n : (u > v || v == null) && u != null ? \").concat(gt, \"\\n : ((v = v instanceof Date ? +v : v), (u = u instanceof Date ? +u : u)) !== u && v === v ? \").concat(lt, \"\\n : v !== v && u === u ? \").concat(gt, \" : \");\n}\nvar expressionCodegen = {\n /**\n * Parse an expression used to update an operator value.\n */\n operator: function operator(ctx, expr) {\n return expression(ctx, ['_'], expr.code);\n },\n /**\n * Parse an expression provided as an operator parameter value.\n */\n parameter: function parameter(ctx, expr) {\n return expression(ctx, ['datum', '_'], expr.code);\n },\n /**\n * Parse an expression applied to an event stream.\n */\n event: function event(ctx, expr) {\n return expression(ctx, ['event'], expr.code);\n },\n /**\n * Parse an expression used to handle an event-driven operator update.\n */\n handler: function handler(ctx, expr) {\n var code = \"var datum=event.item&&event.item.datum;return \".concat(expr.code, \";\");\n return expression(ctx, ['_', 'event'], code);\n },\n /**\n * Parse an expression that performs visual encoding.\n */\n encode: function encode(ctx, _encode) {\n var marktype = _encode.marktype,\n channels = _encode.channels;\n var code = 'var o=item,datum=o.datum,m=0,$;';\n for (var name in channels) {\n var o = 'o[' + stringValue(name) + ']';\n code += \"$=\".concat(channels[name].code, \";if(\").concat(o, \"!==$)\").concat(o, \"=$,m=1;\");\n }\n code += adjustSpatial(channels, marktype);\n code += 'return m;';\n return expression(ctx, ['item', '_'], code);\n },\n /**\n * Optimized code generators for access and comparison.\n */\n codegen: {\n get: function get(path) {\n var ref = \"[\".concat(path.map(stringValue).join(']['), \"]\");\n var get = Function('_', \"return _\".concat(ref, \";\"));\n get.path = ref;\n return get;\n },\n comparator: function comparator(fields, orders) {\n var t;\n var map = function map(f, i) {\n var o = orders[i];\n var u, v;\n if (f.path) {\n u = \"a\".concat(f.path);\n v = \"b\".concat(f.path);\n } else {\n (t = t || {})['f' + i] = f;\n u = \"this.f\".concat(i, \"(a)\");\n v = \"this.f\".concat(i, \"(b)\");\n }\n return _compare(u, v, -o, o);\n };\n var fn = Function('a', 'b', 'var u, v; return ' + fields.map(map).join('') + '0;');\n return t ? fn.bind(t) : fn;\n }\n }\n};\n\n/**\n * Parse a dataflow operator.\n */\nfunction parseOperator(spec) {\n var ctx = this;\n if (isOperator(spec.type) || !spec.type) {\n ctx.operator(spec, spec.update ? ctx.operatorExpression(spec.update) : null);\n } else {\n ctx.transform(spec, spec.type);\n }\n}\n\n/**\n * Parse and assign operator parameters.\n */\nfunction parseOperatorParameters(spec) {\n var ctx = this;\n if (spec.params) {\n var op = ctx.get(spec.id);\n if (!op) error('Invalid operator id: ' + spec.id);\n ctx.dataflow.connect(op, op.parameters(ctx.parseParameters(spec.params), spec.react, spec.initonly));\n }\n}\n\n/**\n * Parse a set of operator parameters.\n */\nfunction parseParameters(spec, params) {\n params = params || {};\n var ctx = this;\n for (var _key in spec) {\n var value = spec[_key];\n params[_key] = isArray(value) ? value.map(function (v) {\n return parseParameter(v, ctx, params);\n }) : parseParameter(value, ctx, params);\n }\n return params;\n}\n\n/**\n * Parse a single parameter.\n */\nfunction parseParameter(spec, ctx, params) {\n if (!spec || !isObject(spec)) return spec;\n for (var i = 0, n = PARSERS.length, p; i < n; ++i) {\n p = PARSERS[i];\n if (hasOwnProperty(spec, p.key)) {\n return p.parse(spec, ctx, params);\n }\n }\n return spec;\n}\n\n/** Reference parsers. */\nvar PARSERS = [{\n key: '$ref',\n parse: getOperator\n}, {\n key: '$key',\n parse: getKey\n}, {\n key: '$expr',\n parse: getExpression\n}, {\n key: '$field',\n parse: getField\n}, {\n key: '$encode',\n parse: getEncode\n}, {\n key: '$compare',\n parse: getCompare\n}, {\n key: '$context',\n parse: getContext\n}, {\n key: '$subflow',\n parse: getSubflow\n}, {\n key: '$tupleid',\n parse: getTupleId\n}];\n\n/**\n * Resolve an operator reference.\n */\nfunction getOperator(_, ctx) {\n return ctx.get(_.$ref) || error('Operator not defined: ' + _.$ref);\n}\n\n/**\n * Resolve an expression reference.\n */\nfunction getExpression(_, ctx, params) {\n if (_.$params) {\n // parse expression parameters\n ctx.parseParameters(_.$params, params);\n }\n var k = 'e:' + _.$expr.code;\n return ctx.fn[k] || (ctx.fn[k] = accessor(ctx.parameterExpression(_.$expr), _.$fields));\n}\n\n/**\n * Resolve a key accessor reference.\n */\nfunction getKey(_, ctx) {\n var k = 'k:' + _.$key + '_' + !!_.$flat;\n return ctx.fn[k] || (ctx.fn[k] = key(_.$key, _.$flat, ctx.expr.codegen));\n}\n\n/**\n * Resolve a field accessor reference.\n */\nfunction getField(_, ctx) {\n if (!_.$field) return null;\n var k = 'f:' + _.$field + '_' + _.$name;\n return ctx.fn[k] || (ctx.fn[k] = field(_.$field, _.$name, ctx.expr.codegen));\n}\n\n/**\n * Resolve a comparator function reference.\n */\nfunction getCompare(_, ctx) {\n // As of Vega 5.5.3, $tupleid sort is no longer used.\n // Keep here for now for backwards compatibility.\n var k = 'c:' + _.$compare + '_' + _.$order,\n c = array(_.$compare).map(function (_) {\n return _ && _.$tupleid ? tupleid : _;\n });\n return ctx.fn[k] || (ctx.fn[k] = compare(c, _.$order, ctx.expr.codegen));\n}\n\n/**\n * Resolve an encode operator reference.\n */\nfunction getEncode(_, ctx) {\n var spec = _.$encode,\n encode = {};\n for (var name in spec) {\n var enc = spec[name];\n encode[name] = accessor(ctx.encodeExpression(enc.$expr), enc.$fields);\n encode[name].output = enc.$output;\n }\n return encode;\n}\n\n/**\n * Resolve a context reference.\n */\nfunction getContext(_, ctx) {\n return ctx;\n}\n\n/**\n * Resolve a recursive subflow specification.\n */\nfunction getSubflow(_, ctx) {\n var spec = _.$subflow;\n return function (dataflow, key, parent) {\n var subctx = ctx.fork().parse(spec),\n op = subctx.get(spec.operators[0].id),\n p = subctx.signals.parent;\n if (p) p.set(parent);\n op.detachSubflow = function () {\n return ctx.detach(subctx);\n };\n return op;\n };\n}\n\n/**\n * Resolve a tuple id reference.\n */\nfunction getTupleId() {\n return tupleid;\n}\n\n/**\n * Parse an event stream specification.\n */\nfunction parseStream(spec) {\n var ctx = this,\n filter = spec.filter != null ? ctx.eventExpression(spec.filter) : undefined,\n stream = spec.stream != null ? ctx.get(spec.stream) : undefined,\n args;\n if (spec.source) {\n stream = ctx.events(spec.source, spec.type, filter);\n } else if (spec.merge) {\n args = spec.merge.map(function (_) {\n return ctx.get(_);\n });\n stream = args[0].merge.apply(args[0], args.slice(1));\n }\n if (spec.between) {\n args = spec.between.map(function (_) {\n return ctx.get(_);\n });\n stream = stream.between(args[0], args[1]);\n }\n if (spec.filter) {\n stream = stream.filter(filter);\n }\n if (spec.throttle != null) {\n stream = stream.throttle(+spec.throttle);\n }\n if (spec.debounce != null) {\n stream = stream.debounce(+spec.debounce);\n }\n if (stream == null) {\n error('Invalid stream definition: ' + JSON.stringify(spec));\n }\n if (spec.consume) stream.consume(true);\n ctx.stream(spec, stream);\n}\n\n/**\n * Parse an event-driven operator update.\n */\nfunction parseUpdate(spec) {\n var ctx = this,\n srcid = isObject(srcid = spec.source) ? srcid.$ref : srcid,\n source = ctx.get(srcid),\n target = null,\n update = spec.update,\n params = undefined;\n if (!source) error('Source not defined: ' + spec.source);\n target = spec.target && spec.target.$expr ? ctx.eventExpression(spec.target.$expr) : ctx.get(spec.target);\n if (update && update.$expr) {\n if (update.$params) {\n params = ctx.parseParameters(update.$params);\n }\n update = ctx.handlerExpression(update.$expr);\n }\n ctx.update(spec, source, target, update, params);\n}\nvar SKIP = {\n skip: true\n};\nfunction getState(options) {\n var ctx = this,\n state = {};\n if (options.signals) {\n var signals = state.signals = {};\n Object.keys(ctx.signals).forEach(function (key) {\n var op = ctx.signals[key];\n if (options.signals(key, op)) {\n signals[key] = op.value;\n }\n });\n }\n if (options.data) {\n var data = state.data = {};\n Object.keys(ctx.data).forEach(function (key) {\n var dataset = ctx.data[key];\n if (options.data(key, dataset)) {\n data[key] = dataset.input.value;\n }\n });\n }\n if (ctx.subcontext && options.recurse !== false) {\n state.subcontext = ctx.subcontext.map(function (ctx) {\n return ctx.getState(options);\n });\n }\n return state;\n}\nfunction setState(state) {\n var ctx = this,\n df = ctx.dataflow,\n data = state.data,\n signals = state.signals;\n Object.keys(signals || {}).forEach(function (key) {\n df.update(ctx.signals[key], signals[key], SKIP);\n });\n Object.keys(data || {}).forEach(function (key) {\n df.pulse(ctx.data[key].input, df.changeset().remove(truthy).insert(data[key]));\n });\n (state.subcontext || []).forEach(function (substate, i) {\n var subctx = ctx.subcontext[i];\n if (subctx) subctx.setState(substate);\n });\n}\n\n/**\n * Context objects store the current parse state.\n * Enables lookup of parsed operators, event streams, accessors, etc.\n * Provides a 'fork' method for creating child contexts for subflows.\n */\nfunction context(df, transforms, functions, expr) {\n return new Context(df, transforms, functions, expr);\n}\nfunction Context(df, transforms, functions, expr) {\n this.dataflow = df;\n this.transforms = transforms;\n this.events = df.events.bind(df);\n this.expr = expr || expressionCodegen, this.signals = {};\n this.scales = {};\n this.nodes = {};\n this.data = {};\n this.fn = {};\n if (functions) {\n this.functions = Object.create(functions);\n this.functions.context = this;\n }\n}\nfunction Subcontext(ctx) {\n this.dataflow = ctx.dataflow;\n this.transforms = ctx.transforms;\n this.events = ctx.events;\n this.expr = ctx.expr;\n this.signals = Object.create(ctx.signals);\n this.scales = Object.create(ctx.scales);\n this.nodes = Object.create(ctx.nodes);\n this.data = Object.create(ctx.data);\n this.fn = Object.create(ctx.fn);\n if (ctx.functions) {\n this.functions = Object.create(ctx.functions);\n this.functions.context = this;\n }\n}\nContext.prototype = Subcontext.prototype = {\n fork: function fork() {\n var ctx = new Subcontext(this);\n (this.subcontext || (this.subcontext = [])).push(ctx);\n return ctx;\n },\n detach: function detach(ctx) {\n this.subcontext = this.subcontext.filter(function (c) {\n return c !== ctx;\n });\n\n // disconnect all nodes in the subcontext\n // wipe out targets first for better efficiency\n var keys = Object.keys(ctx.nodes);\n for (var _i = 0, _keys = keys; _i < _keys.length; _i++) {\n var _key2 = _keys[_i];\n ctx.nodes[_key2]._targets = null;\n }\n for (var _i2 = 0, _keys2 = keys; _i2 < _keys2.length; _i2++) {\n var _key3 = _keys2[_i2];\n ctx.nodes[_key3].detach();\n }\n ctx.nodes = null;\n },\n get: function get(id) {\n return this.nodes[id];\n },\n set: function set(id, node) {\n return this.nodes[id] = node;\n },\n add: function add(spec, op) {\n var ctx = this,\n df = ctx.dataflow,\n data = spec.value;\n ctx.set(spec.id, op);\n if (isCollect(spec.type) && data) {\n if (data.$ingest) {\n df.ingest(op, data.$ingest, data.$format);\n } else if (data.$request) {\n df.preload(op, data.$request, data.$format);\n } else {\n df.pulse(op, df.changeset().insert(data));\n }\n }\n if (spec.root) {\n ctx.root = op;\n }\n if (spec.parent) {\n var p = ctx.get(spec.parent.$ref);\n if (p) {\n df.connect(p, [op]);\n op.targets().add(p);\n } else {\n (ctx.unresolved = ctx.unresolved || []).push(function () {\n p = ctx.get(spec.parent.$ref);\n df.connect(p, [op]);\n op.targets().add(p);\n });\n }\n }\n if (spec.signal) {\n ctx.signals[spec.signal] = op;\n }\n if (spec.scale) {\n ctx.scales[spec.scale] = op;\n }\n if (spec.data) {\n var _loop = function _loop() {\n var data = ctx.data[name] || (ctx.data[name] = {});\n spec.data[name].forEach(function (role) {\n return data[role] = op;\n });\n };\n for (var name in spec.data) {\n _loop();\n }\n }\n },\n resolve: function resolve() {\n (this.unresolved || []).forEach(function (fn) {\n return fn();\n });\n delete this.unresolved;\n return this;\n },\n operator: function operator(spec, update) {\n this.add(spec, this.dataflow.add(spec.value, update));\n },\n transform: function transform(spec, type) {\n this.add(spec, this.dataflow.add(this.transforms[canonicalType(type)]));\n },\n stream: function stream(spec, _stream) {\n this.set(spec.id, _stream);\n },\n update: function update(spec, stream, target, _update, params) {\n this.dataflow.on(stream, target, _update, params, spec.options);\n },\n // expression parsing\n operatorExpression: function operatorExpression(expr) {\n return this.expr.operator(this, expr);\n },\n parameterExpression: function parameterExpression(expr) {\n return this.expr.parameter(this, expr);\n },\n eventExpression: function eventExpression(expr) {\n return this.expr.event(this, expr);\n },\n handlerExpression: function handlerExpression(expr) {\n return this.expr.handler(this, expr);\n },\n encodeExpression: function encodeExpression(encode) {\n return this.expr.encode(this, encode);\n },\n // parse methods\n parse: parse,\n parseOperator: parseOperator,\n parseOperatorParameters: parseOperatorParameters,\n parseParameters: parseParameters,\n parseStream: parseStream,\n parseUpdate: parseUpdate,\n // state methods\n getState: getState,\n setState: setState\n};\nexport { context };","import _asyncToGenerator from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\";\nimport _regeneratorRuntime from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/regenerator/index.js\";\nimport { isString, hasOwnProperty, error, truthy, constant, extend, array, isObject, isArray, toSet, debounce, isDate, inherits, stringValue } from 'vega-util';\nimport { changeset, isChangeSet, EventStream, transforms, Dataflow, asyncCallback } from 'vega-dataflow';\nimport { point, renderModule, CanvasHandler, RenderType, Scenegraph } from 'vega-scenegraph';\nimport { tickStep } from 'd3-array';\nimport { functionContext } from 'vega-functions';\nimport { context } from 'vega-runtime';\nimport { interval } from 'd3-timer';\nimport { locale } from 'vega-format';\n\n// initialize aria role and label attributes\nfunction initializeAria(view) {\n var el = view.container();\n if (el) {\n el.setAttribute('role', 'graphics-document');\n el.setAttribute('aria-roleDescription', 'visualization');\n ariaLabel(el, view.description());\n }\n}\n\n// update aria-label if we have a DOM container element\nfunction ariaLabel(el, desc) {\n if (el) desc == null ? el.removeAttribute('aria-label') : el.setAttribute('aria-label', desc);\n}\nfunction background(view) {\n // respond to background signal\n view.add(null, function (_) {\n view._background = _.bg;\n view._resize = 1;\n return _.bg;\n }, {\n bg: view._signals.background\n });\n}\nvar Default = 'default';\nfunction cursor(view) {\n // get cursor signal, add to dataflow if needed\n var cursor = view._signals.cursor || (view._signals.cursor = view.add({\n user: Default,\n item: null\n }));\n\n // evaluate cursor on each mousemove event\n view.on(view.events('view', 'mousemove'), cursor, function (_, event) {\n var value = cursor.value,\n user = value ? isString(value) ? value : value.user : Default,\n item = event.item && event.item.cursor || null;\n return value && user === value.user && item == value.item ? value : {\n user: user,\n item: item\n };\n });\n\n // when cursor signal updates, set visible cursor\n view.add(null, function (_) {\n var user = _.cursor,\n item = this.value;\n if (!isString(user)) {\n item = user.item;\n user = user.user;\n }\n setCursor(view, user && user !== Default ? user : item || user);\n return item;\n }, {\n cursor: cursor\n });\n}\nfunction setCursor(view, cursor) {\n var el = view.globalCursor() ? typeof document !== 'undefined' && document.body : view.container();\n if (el) {\n return cursor == null ? el.style.removeProperty('cursor') : el.style.cursor = cursor;\n }\n}\nfunction dataref(view, name) {\n var data = view._runtime.data;\n if (!hasOwnProperty(data, name)) {\n error('Unrecognized data set: ' + name);\n }\n return data[name];\n}\nfunction data(name, values) {\n return arguments.length < 2 ? dataref(this, name).values.value : change.call(this, name, changeset().remove(truthy).insert(values));\n}\nfunction change(name, changes) {\n if (!isChangeSet(changes)) {\n error('Second argument to changes must be a changeset.');\n }\n var dataset = dataref(this, name);\n dataset.modified = true;\n return this.pulse(dataset.input, changes);\n}\nfunction insert(name, _) {\n return change.call(this, name, changeset().insert(_));\n}\nfunction remove(name, _) {\n return change.call(this, name, changeset().remove(_));\n}\nfunction width(view) {\n var padding = view.padding();\n return Math.max(0, view._viewWidth + padding.left + padding.right);\n}\nfunction height(view) {\n var padding = view.padding();\n return Math.max(0, view._viewHeight + padding.top + padding.bottom);\n}\nfunction offset(view) {\n var padding = view.padding(),\n origin = view._origin;\n return [padding.left + origin[0], padding.top + origin[1]];\n}\nfunction resizeRenderer(view) {\n var origin = offset(view),\n w = width(view),\n h = height(view);\n view._renderer.background(view.background());\n view._renderer.resize(w, h, origin);\n view._handler.origin(origin);\n view._resizeListeners.forEach(function (handler) {\n try {\n handler(w, h);\n } catch (error) {\n view.error(error);\n }\n });\n}\n\n/**\n * Extend an event with additional view-specific methods.\n * Adds a new property ('vega') to an event that provides a number\n * of methods for querying information about the current interaction.\n * The vega object provides the following methods:\n * view - Returns the backing View instance.\n * item - Returns the currently active scenegraph item (if any).\n * group - Returns the currently active scenegraph group (if any).\n * This method accepts a single string-typed argument indicating the name\n * of the desired parent group. The scenegraph will be traversed from\n * the item up towards the root to search for a matching group. If no\n * argument is provided the enclosing group for the active item is\n * returned, unless the item it itself a group, in which case it is\n * returned directly.\n * xy - Returns a two-element array containing the x and y coordinates for\n * mouse or touch events. For touch events, this is based on the first\n * elements in the changedTouches array. This method accepts a single\n * argument: either an item instance or mark name that should serve as\n * the reference coordinate system. If no argument is provided the\n * top-level view coordinate system is assumed.\n * x - Returns the current x-coordinate, accepts the same arguments as xy.\n * y - Returns the current y-coordinate, accepts the same arguments as xy.\n * @param {Event} event - The input event to extend.\n * @param {Item} item - The currently active scenegraph item (if any).\n * @return {Event} - The extended input event.\n */\nfunction eventExtend(view, event, item) {\n var r = view._renderer,\n el = r && r.canvas(),\n p,\n e,\n translate;\n if (el) {\n translate = offset(view);\n e = event.changedTouches ? event.changedTouches[0] : event;\n p = point(e, el);\n p[0] -= translate[0];\n p[1] -= translate[1];\n }\n event.dataflow = view;\n event.item = item;\n event.vega = extension(view, item, p);\n return event;\n}\nfunction extension(view, item, point) {\n var itemGroup = item ? item.mark.marktype === 'group' ? item : item.mark.group : null;\n function group(name) {\n var g = itemGroup,\n i;\n if (name) for (i = item; i; i = i.mark.group) {\n if (i.mark.name === name) {\n g = i;\n break;\n }\n }\n return g && g.mark && g.mark.interactive ? g : {};\n }\n function xy(item) {\n if (!item) return point;\n if (isString(item)) item = group(item);\n var p = point.slice();\n while (item) {\n p[0] -= item.x || 0;\n p[1] -= item.y || 0;\n item = item.mark && item.mark.group;\n }\n return p;\n }\n return {\n view: constant(view),\n item: constant(item || {}),\n group: group,\n xy: xy,\n x: function x(item) {\n return xy(item)[0];\n },\n y: function y(item) {\n return xy(item)[1];\n }\n };\n}\nvar VIEW = 'view',\n TIMER = 'timer',\n WINDOW = 'window',\n NO_TRAP = {\n trap: false\n };\n\n/**\n * Initialize event handling configuration.\n * @param {object} config - The configuration settings.\n * @return {object}\n */\nfunction initializeEventConfig(config) {\n var events = extend({\n defaults: {}\n }, config);\n var unpack = function unpack(obj, keys) {\n keys.forEach(function (k) {\n if (isArray(obj[k])) obj[k] = toSet(obj[k]);\n });\n };\n unpack(events.defaults, ['prevent', 'allow']);\n unpack(events, ['view', 'window', 'selector']);\n return events;\n}\nfunction trackEventListener(view, sources, type, handler) {\n view._eventListeners.push({\n type: type,\n sources: array(sources),\n handler: handler\n });\n}\nfunction prevent(view, type) {\n var def = view._eventConfig.defaults,\n prevent = def.prevent,\n allow = def.allow;\n return prevent === false || allow === true ? false : prevent === true || allow === false ? true : prevent ? prevent[type] : allow ? !allow[type] : view.preventDefault();\n}\nfunction permit(view, key, type) {\n var rule = view._eventConfig && view._eventConfig[key];\n if (rule === false || isObject(rule) && !rule[type]) {\n view.warn(\"Blocked \".concat(key, \" \").concat(type, \" event listener.\"));\n return false;\n }\n return true;\n}\n\n/**\n * Create a new event stream from an event source.\n * @param {object} source - The event source to monitor.\n * @param {string} type - The event type.\n * @param {function(object): boolean} [filter] - Event filter function.\n * @return {EventStream}\n */\nfunction events(source, type, filter) {\n var view = this,\n s = new EventStream(filter),\n send = function send(e, item) {\n view.runAsync(null, function () {\n if (source === VIEW && prevent(view, type)) {\n e.preventDefault();\n }\n s.receive(eventExtend(view, e, item));\n });\n },\n sources;\n if (source === TIMER) {\n if (permit(view, 'timer', type)) {\n view.timer(send, type);\n }\n } else if (source === VIEW) {\n if (permit(view, 'view', type)) {\n // send traps errors, so use {trap: false} option\n view.addEventListener(type, send, NO_TRAP);\n }\n } else {\n if (source === WINDOW) {\n if (permit(view, 'window', type) && typeof window !== 'undefined') {\n sources = [window];\n }\n } else if (typeof document !== 'undefined') {\n if (permit(view, 'selector', type)) {\n sources = Array.from(document.querySelectorAll(source));\n }\n }\n if (!sources) {\n view.warn('Can not resolve event source: ' + source);\n } else {\n for (var i = 0, n = sources.length; i < n; ++i) {\n sources[i].addEventListener(type, send);\n }\n trackEventListener(view, sources, type, send);\n }\n }\n return s;\n}\nfunction itemFilter(event) {\n return event.item;\n}\nfunction markTarget(event) {\n // grab upstream collector feeding the mark operator\n return event.item.mark.source;\n}\nfunction invoke(name) {\n return function (_, event) {\n return event.vega.view().changeset().encode(event.item, name);\n };\n}\nfunction hover(hoverSet, leaveSet) {\n hoverSet = [hoverSet || 'hover'];\n leaveSet = [leaveSet || 'update', hoverSet[0]];\n\n // invoke hover set upon mouseover\n this.on(this.events('view', 'mouseover', itemFilter), markTarget, invoke(hoverSet));\n\n // invoke leave set upon mouseout\n this.on(this.events('view', 'mouseout', itemFilter), markTarget, invoke(leaveSet));\n return this;\n}\n\n/**\n * Finalize a View instance that is being removed.\n * Cancel any running timers.\n * Remove all external event listeners.\n * Remove any currently displayed tooltip.\n */\nfunction finalize() {\n var tooltip = this._tooltip,\n timers = this._timers,\n listeners = this._eventListeners,\n n,\n m,\n e;\n n = timers.length;\n while (--n >= 0) {\n timers[n].stop();\n }\n n = listeners.length;\n while (--n >= 0) {\n e = listeners[n];\n m = e.sources.length;\n while (--m >= 0) {\n e.sources[m].removeEventListener(e.type, e.handler);\n }\n }\n if (tooltip) {\n tooltip.call(this, this._handler, null, null, null);\n }\n return this;\n}\nfunction element(tag, attr, text) {\n var el = document.createElement(tag);\n for (var key in attr) el.setAttribute(key, attr[key]);\n if (text != null) el.textContent = text;\n return el;\n}\nvar BindClass = 'vega-bind',\n NameClass = 'vega-bind-name',\n RadioClass = 'vega-bind-radio';\n\n/**\n * Bind a signal to an external HTML input element. The resulting two-way\n * binding will propagate input changes to signals, and propagate signal\n * changes to the input element state. If this view instance has no parent\n * element, we assume the view is headless and no bindings are created.\n * @param {Element|string} el - The parent DOM element to which the input\n * element should be appended as a child. If string-valued, this argument\n * will be treated as a CSS selector. If null or undefined, the parent\n * element of this view will be used as the element.\n * @param {object} param - The binding parameters which specify the signal\n * to bind to, the input element type, and type-specific configuration.\n * @return {View} - This view instance.\n */\nfunction bind(view, el, binding) {\n if (!el) return;\n var param = binding.param;\n var bind = binding.state;\n if (!bind) {\n bind = binding.state = {\n elements: null,\n active: false,\n set: null,\n update: function update(value) {\n if (value != view.signal(param.signal)) {\n view.runAsync(null, function () {\n bind.source = true;\n view.signal(param.signal, value);\n });\n }\n }\n };\n if (param.debounce) {\n bind.update = debounce(param.debounce, bind.update);\n }\n }\n var create = param.input == null && param.element ? target : generate;\n create(bind, el, param, view);\n if (!bind.active) {\n view.on(view._signals[param.signal], null, function () {\n bind.source ? bind.source = false : bind.set(view.signal(param.signal));\n });\n bind.active = true;\n }\n return bind;\n}\n\n/**\n * Bind the signal to an external EventTarget.\n */\nfunction target(bind, node, param, view) {\n var type = param.event || 'input';\n var handler = function handler() {\n return bind.update(node.value);\n };\n\n // initialize signal value to external input value\n view.signal(param.signal, node.value);\n\n // listen for changes on the element\n node.addEventListener(type, handler);\n\n // register with view, so we can remove it upon finalization\n trackEventListener(view, node, type, handler);\n\n // propagate change to element\n bind.set = function (value) {\n node.value = value;\n node.dispatchEvent(event(type));\n };\n}\nfunction event(type) {\n return typeof Event !== 'undefined' ? new Event(type) : {\n type: type\n };\n}\n\n/**\n * Generate an HTML input form element and bind it to a signal.\n */\nfunction generate(bind, el, param, view) {\n var value = view.signal(param.signal);\n var div = element('div', {\n 'class': BindClass\n });\n var wrapper = param.input === 'radio' ? div : div.appendChild(element('label'));\n wrapper.appendChild(element('span', {\n 'class': NameClass\n }, param.name || param.signal));\n el.appendChild(div);\n var input = form;\n switch (param.input) {\n case 'checkbox':\n input = checkbox;\n break;\n case 'select':\n input = select;\n break;\n case 'radio':\n input = radio;\n break;\n case 'range':\n input = range;\n break;\n }\n input(bind, wrapper, param, value);\n}\n\n/**\n * Generates an arbitrary input form element.\n * The input type is controlled via user-provided parameters.\n */\nfunction form(bind, el, param, value) {\n var node = element('input');\n for (var key in param) {\n if (key !== 'signal' && key !== 'element') {\n node.setAttribute(key === 'input' ? 'type' : key, param[key]);\n }\n }\n node.setAttribute('name', param.signal);\n node.value = value;\n el.appendChild(node);\n node.addEventListener('input', function () {\n return bind.update(node.value);\n });\n bind.elements = [node];\n bind.set = function (value) {\n return node.value = value;\n };\n}\n\n/**\n * Generates a checkbox input element.\n */\nfunction checkbox(bind, el, param, value) {\n var attr = {\n type: 'checkbox',\n name: param.signal\n };\n if (value) attr.checked = true;\n var node = element('input', attr);\n el.appendChild(node);\n node.addEventListener('change', function () {\n return bind.update(node.checked);\n });\n bind.elements = [node];\n bind.set = function (value) {\n return node.checked = !!value || null;\n };\n}\n\n/**\n * Generates a selection list input element.\n */\nfunction select(bind, el, param, value) {\n var node = element('select', {\n name: param.signal\n }),\n labels = param.labels || [];\n param.options.forEach(function (option, i) {\n var attr = {\n value: option\n };\n if (valuesEqual(option, value)) attr.selected = true;\n node.appendChild(element('option', attr, (labels[i] || option) + ''));\n });\n el.appendChild(node);\n node.addEventListener('change', function () {\n bind.update(param.options[node.selectedIndex]);\n });\n bind.elements = [node];\n bind.set = function (value) {\n for (var i = 0, n = param.options.length; i < n; ++i) {\n if (valuesEqual(param.options[i], value)) {\n node.selectedIndex = i;\n return;\n }\n }\n };\n}\n\n/**\n * Generates a radio button group.\n */\nfunction radio(bind, el, param, value) {\n var group = element('span', {\n 'class': RadioClass\n }),\n labels = param.labels || [];\n el.appendChild(group);\n bind.elements = param.options.map(function (option, i) {\n var attr = {\n type: 'radio',\n name: param.signal,\n value: option\n };\n if (valuesEqual(option, value)) attr.checked = true;\n var input = element('input', attr);\n input.addEventListener('change', function () {\n return bind.update(option);\n });\n var label = element('label', {}, (labels[i] || option) + '');\n label.prepend(input);\n group.appendChild(label);\n return input;\n });\n bind.set = function (value) {\n var nodes = bind.elements,\n n = nodes.length;\n for (var i = 0; i < n; ++i) {\n if (valuesEqual(nodes[i].value, value)) nodes[i].checked = true;\n }\n };\n}\n\n/**\n * Generates a slider input element.\n */\nfunction range(bind, el, param, value) {\n value = value !== undefined ? value : (+param.max + +param.min) / 2;\n var max = param.max != null ? param.max : Math.max(100, +value) || 100,\n min = param.min || Math.min(0, max, +value) || 0,\n step = param.step || tickStep(min, max, 100);\n var node = element('input', {\n type: 'range',\n name: param.signal,\n min: min,\n max: max,\n step: step\n });\n node.value = value;\n var span = element('span', {}, +value);\n el.appendChild(node);\n el.appendChild(span);\n var update = function update() {\n span.textContent = node.value;\n bind.update(+node.value);\n };\n\n // subscribe to both input and change\n node.addEventListener('input', update);\n node.addEventListener('change', update);\n bind.elements = [node];\n bind.set = function (value) {\n node.value = value;\n span.textContent = value;\n };\n}\nfunction valuesEqual(a, b) {\n return a === b || a + '' === b + '';\n}\nfunction initializeRenderer(view, r, el, constructor, scaleFactor, opt) {\n r = r || new constructor(view.loader());\n return r.initialize(el, width(view), height(view), offset(view), scaleFactor, opt).background(view.background());\n}\nfunction trap(view, fn) {\n return !fn ? null : function () {\n try {\n fn.apply(this, arguments);\n } catch (error) {\n view.error(error);\n }\n };\n}\nfunction initializeHandler(view, prevHandler, el, constructor) {\n // instantiate scenegraph handler\n var handler = new constructor(view.loader(), trap(view, view.tooltip())).scene(view.scenegraph().root).initialize(el, offset(view), view);\n\n // transfer event handlers\n if (prevHandler) {\n prevHandler.handlers().forEach(function (h) {\n handler.on(h.type, h.handler);\n });\n }\n return handler;\n}\nfunction initialize(el, elBind) {\n var view = this,\n type = view._renderType,\n config = view._eventConfig.bind,\n module = renderModule(type);\n\n // containing dom element\n el = view._el = el ? lookup(view, el, true) : null;\n\n // initialize aria attributes\n initializeAria(view);\n\n // select appropriate renderer & handler\n if (!module) view.error('Unrecognized renderer type: ' + type);\n var Handler = module.handler || CanvasHandler,\n Renderer = el ? module.renderer : module.headless;\n\n // initialize renderer and input handler\n view._renderer = !Renderer ? null : initializeRenderer(view, view._renderer, el, Renderer);\n view._handler = initializeHandler(view, view._handler, el, Handler);\n view._redraw = true;\n\n // initialize signal bindings\n if (el && config !== 'none') {\n elBind = elBind ? view._elBind = lookup(view, elBind, true) : el.appendChild(element('form', {\n 'class': 'vega-bindings'\n }));\n view._bind.forEach(function (_) {\n if (_.param.element && config !== 'container') {\n _.element = lookup(view, _.param.element, !!_.param.input);\n }\n });\n view._bind.forEach(function (_) {\n bind(view, _.element || elBind, _);\n });\n }\n return view;\n}\nfunction lookup(view, el, clear) {\n if (typeof el === 'string') {\n if (typeof document !== 'undefined') {\n el = document.querySelector(el);\n if (!el) {\n view.error('Signal bind element not found: ' + el);\n return null;\n }\n } else {\n view.error('DOM document instance not found.');\n return null;\n }\n }\n if (el && clear) {\n try {\n el.textContent = '';\n } catch (e) {\n el = null;\n view.error(e);\n }\n }\n return el;\n}\nvar number = function number(_) {\n return +_ || 0;\n};\nvar paddingObject = function paddingObject(_) {\n return {\n top: _,\n bottom: _,\n left: _,\n right: _\n };\n};\nfunction _padding(_) {\n return isObject(_) ? {\n top: number(_.top),\n bottom: number(_.bottom),\n left: number(_.left),\n right: number(_.right)\n } : paddingObject(number(_));\n}\n\n/**\n * Render the current scene in a headless fashion.\n * This method is asynchronous, returning a Promise instance.\n * @return {Promise} - A Promise that resolves to a renderer.\n */\nfunction renderHeadless(_x, _x2, _x3, _x4) {\n return _renderHeadless.apply(this, arguments);\n}\n/**\n * Produce an image URL for the visualization. Depending on the type\n * parameter, the generated URL contains data for either a PNG or SVG image.\n * The URL can be used (for example) to download images of the visualization.\n * This method is asynchronous, returning a Promise instance.\n * @param {string} type - The image type. One of 'svg', 'png' or 'canvas'.\n * The 'canvas' and 'png' types are synonyms for a PNG image.\n * @return {Promise} - A promise that resolves to an image URL.\n */\nfunction _renderHeadless() {\n _renderHeadless = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(view, type, scaleFactor, opt) {\n var module, ctr;\n return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n module = renderModule(type), ctr = module && module.headless;\n if (!ctr) error('Unrecognized renderer type: ' + type);\n _context2.next = 4;\n return view.runAsync();\n case 4:\n return _context2.abrupt(\"return\", initializeRenderer(view, null, null, ctr, scaleFactor, opt).renderAsync(view._scenegraph.root));\n case 5:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }));\n return _renderHeadless.apply(this, arguments);\n}\nfunction renderToImageURL(_x5, _x6) {\n return _renderToImageURL.apply(this, arguments);\n}\nfunction _renderToImageURL() {\n _renderToImageURL = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(type, scaleFactor) {\n var r;\n return _regeneratorRuntime.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n if (type !== RenderType.Canvas && type !== RenderType.SVG && type !== RenderType.PNG) {\n error('Unrecognized image type: ' + type);\n }\n _context3.next = 3;\n return renderHeadless(this, type, scaleFactor);\n case 3:\n r = _context3.sent;\n return _context3.abrupt(\"return\", type === RenderType.SVG ? toBlobURL(r.svg(), 'image/svg+xml') : r.canvas().toDataURL('image/png'));\n case 5:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n return _renderToImageURL.apply(this, arguments);\n}\nfunction toBlobURL(data, mime) {\n var blob = new Blob([data], {\n type: mime\n });\n return window.URL.createObjectURL(blob);\n}\n\n/**\n * Produce a Canvas instance containing a rendered visualization.\n * This method is asynchronous, returning a Promise instance.\n * @return {Promise} - A promise that resolves to a Canvas instance.\n */\nfunction renderToCanvas(_x7, _x8) {\n return _renderToCanvas.apply(this, arguments);\n}\n/**\n * Produce a rendered SVG string of the visualization.\n * This method is asynchronous, returning a Promise instance.\n * @return {Promise} - A promise that resolves to an SVG string.\n */\nfunction _renderToCanvas() {\n _renderToCanvas = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4(scaleFactor, opt) {\n var r;\n return _regeneratorRuntime.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return renderHeadless(this, RenderType.Canvas, scaleFactor, opt);\n case 2:\n r = _context4.sent;\n return _context4.abrupt(\"return\", r.canvas());\n case 4:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4, this);\n }));\n return _renderToCanvas.apply(this, arguments);\n}\nfunction renderToSVG(_x9) {\n return _renderToSVG.apply(this, arguments);\n}\nfunction _renderToSVG() {\n _renderToSVG = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5(scaleFactor) {\n var r;\n return _regeneratorRuntime.wrap(function _callee5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n _context5.next = 2;\n return renderHeadless(this, RenderType.SVG, scaleFactor);\n case 2:\n r = _context5.sent;\n return _context5.abrupt(\"return\", r.svg());\n case 4:\n case \"end\":\n return _context5.stop();\n }\n }, _callee5, this);\n }));\n return _renderToSVG.apply(this, arguments);\n}\nfunction runtime(view, spec, expr) {\n return context(view, transforms, functionContext, expr).parse(spec);\n}\nfunction scale(name) {\n var scales = this._runtime.scales;\n if (!hasOwnProperty(scales, name)) {\n error('Unrecognized scale or projection: ' + name);\n }\n return scales[name].value;\n}\nvar Width = 'width',\n Height = 'height',\n Padding = 'padding',\n Skip = {\n skip: true\n };\nfunction viewWidth(view, width) {\n var a = view.autosize(),\n p = view.padding();\n return width - (a && a.contains === Padding ? p.left + p.right : 0);\n}\nfunction viewHeight(view, height) {\n var a = view.autosize(),\n p = view.padding();\n return height - (a && a.contains === Padding ? p.top + p.bottom : 0);\n}\nfunction initializeResize(view) {\n var s = view._signals,\n w = s[Width],\n h = s[Height],\n p = s[Padding];\n function resetSize() {\n view._autosize = view._resize = 1;\n }\n\n // respond to width signal\n view._resizeWidth = view.add(null, function (_) {\n view._width = _.size;\n view._viewWidth = viewWidth(view, _.size);\n resetSize();\n }, {\n size: w\n });\n\n // respond to height signal\n view._resizeHeight = view.add(null, function (_) {\n view._height = _.size;\n view._viewHeight = viewHeight(view, _.size);\n resetSize();\n }, {\n size: h\n });\n\n // respond to padding signal\n var resizePadding = view.add(null, resetSize, {\n pad: p\n });\n\n // set rank to run immediately after source signal\n view._resizeWidth.rank = w.rank + 1;\n view._resizeHeight.rank = h.rank + 1;\n resizePadding.rank = p.rank + 1;\n}\nfunction resizeView(viewWidth, viewHeight, width, height, origin, auto) {\n this.runAfter(function (view) {\n var rerun = 0;\n\n // reset autosize flag\n view._autosize = 0;\n\n // width value changed: update signal, skip resize op\n if (view.width() !== width) {\n rerun = 1;\n view.signal(Width, width, Skip); // set width, skip update calc\n view._resizeWidth.skip(true); // skip width resize handler\n }\n\n // height value changed: update signal, skip resize op\n if (view.height() !== height) {\n rerun = 1;\n view.signal(Height, height, Skip); // set height, skip update calc\n view._resizeHeight.skip(true); // skip height resize handler\n }\n\n // view width changed: update view property, set resize flag\n if (view._viewWidth !== viewWidth) {\n view._resize = 1;\n view._viewWidth = viewWidth;\n }\n\n // view height changed: update view property, set resize flag\n if (view._viewHeight !== viewHeight) {\n view._resize = 1;\n view._viewHeight = viewHeight;\n }\n\n // origin changed: update view property, set resize flag\n if (view._origin[0] !== origin[0] || view._origin[1] !== origin[1]) {\n view._resize = 1;\n view._origin = origin;\n }\n\n // run dataflow on width/height signal change\n if (rerun) view.run('enter');\n if (auto) view.runAfter(function (v) {\n return v.resize();\n });\n }, false, 1);\n}\n\n/**\n * Get the current view state, consisting of signal values and/or data sets.\n * @param {object} [options] - Options flags indicating which state to export.\n * If unspecified, all signals and data sets will be exported.\n * @param {function(string, Operator):boolean} [options.signals] - Optional\n * predicate function for testing if a signal should be included in the\n * exported state. If unspecified, all signals will be included, except for\n * those named 'parent' or those which refer to a Transform value.\n * @param {function(string, object):boolean} [options.data] - Optional\n * predicate function for testing if a data set's input should be included\n * in the exported state. If unspecified, all data sets that have been\n * explicitly modified will be included.\n * @param {boolean} [options.recurse=true] - Flag indicating if the exported\n * state should recursively include state from group mark sub-contexts.\n * @return {object} - An object containing the exported state values.\n */\nfunction getState(options) {\n return this._runtime.getState(options || {\n data: dataTest,\n signals: signalTest,\n recurse: true\n });\n}\nfunction dataTest(name, data) {\n return data.modified && isArray(data.input.value) && name.indexOf('_:vega:_');\n}\nfunction signalTest(name, op) {\n return !(name === 'parent' || op instanceof transforms.proxy);\n}\n\n/**\n * Sets the current view state and updates the view by invoking run.\n * @param {object} state - A state object containing signal and/or\n * data set values, following the format used by the getState method.\n * @return {View} - This view instance.\n */\nfunction setState(state) {\n this.runAsync(null, function (v) {\n v._trigger = false;\n v._runtime.setState(state);\n }, function (v) {\n v._trigger = true;\n });\n return this;\n}\nfunction timer(callback, delay) {\n function tick(elapsed) {\n callback({\n timestamp: Date.now(),\n elapsed: elapsed\n });\n }\n this._timers.push(interval(tick, delay));\n}\nfunction defaultTooltip(handler, event, item, value) {\n var el = handler.element();\n if (el) el.setAttribute('title', formatTooltip(value));\n}\nfunction formatTooltip(value) {\n return value == null ? '' : isArray(value) ? formatArray(value) : isObject(value) && !isDate(value) ? formatObject(value) : value + '';\n}\nfunction formatObject(obj) {\n return Object.keys(obj).map(function (key) {\n var v = obj[key];\n return key + ': ' + (isArray(v) ? formatArray(v) : formatValue(v));\n }).join('\\n');\n}\nfunction formatArray(value) {\n return '[' + value.map(formatValue).join(', ') + ']';\n}\nfunction formatValue(value) {\n return isArray(value) ? \"[\\u2026]\" : isObject(value) && !isDate(value) ? \"{\\u2026}\" : value;\n}\n\n/**\n * Create a new View instance from a Vega dataflow runtime specification.\n * The generated View will not immediately be ready for display. Callers\n * should also invoke the initialize method (e.g., to set the parent\n * DOM element in browser-based deployment) and then invoke the run\n * method to evaluate the dataflow graph. Rendering will automatically\n * be performed upon dataflow runs.\n * @constructor\n * @param {object} spec - The Vega dataflow runtime specification.\n */\nfunction View(spec, options) {\n var view = this;\n options = options || {};\n Dataflow.call(view);\n if (options.loader) view.loader(options.loader);\n if (options.logger) view.logger(options.logger);\n if (options.logLevel != null) view.logLevel(options.logLevel);\n if (options.locale || spec.locale) {\n var loc = extend({}, spec.locale, options.locale);\n view.locale(locale(loc.number, loc.time));\n }\n view._el = null;\n view._elBind = null;\n view._renderType = options.renderer || RenderType.Canvas;\n view._scenegraph = new Scenegraph();\n var root = view._scenegraph.root;\n\n // initialize renderer, handler and event management\n view._renderer = null;\n view._tooltip = options.tooltip || defaultTooltip, view._redraw = true;\n view._handler = new CanvasHandler().scene(root);\n view._globalCursor = false;\n view._preventDefault = false;\n view._timers = [];\n view._eventListeners = [];\n view._resizeListeners = [];\n\n // initialize event configuration\n view._eventConfig = initializeEventConfig(spec.eventConfig);\n view.globalCursor(view._eventConfig.globalCursor);\n\n // initialize dataflow graph\n var ctx = runtime(view, spec, options.expr);\n view._runtime = ctx;\n view._signals = ctx.signals;\n view._bind = (spec.bindings || []).map(function (_) {\n return {\n state: null,\n param: extend({}, _)\n };\n });\n\n // initialize scenegraph\n if (ctx.root) ctx.root.set(root);\n root.source = ctx.data.root.input;\n view.pulse(ctx.data.root.input, view.changeset().insert(root.items));\n\n // initialize view size\n view._width = view.width();\n view._height = view.height();\n view._viewWidth = viewWidth(view, view._width);\n view._viewHeight = viewHeight(view, view._height);\n view._origin = [0, 0];\n view._resize = 0;\n view._autosize = 1;\n initializeResize(view);\n\n // initialize background color\n background(view);\n\n // initialize cursor\n cursor(view);\n\n // initialize view description\n view.description(spec.description);\n\n // initialize hover proessing, if requested\n if (options.hover) view.hover();\n\n // initialize DOM container(s) and renderer\n if (options.container) view.initialize(options.container, options.bind);\n}\nfunction lookupSignal(view, name) {\n return hasOwnProperty(view._signals, name) ? view._signals[name] : error('Unrecognized signal name: ' + stringValue(name));\n}\nfunction findOperatorHandler(op, handler) {\n var h = (op._targets || []).filter(function (op) {\n return op._update && op._update.handler === handler;\n });\n return h.length ? h[0] : null;\n}\nfunction addOperatorListener(view, name, op, handler) {\n var h = findOperatorHandler(op, handler);\n if (!h) {\n h = trap(view, function () {\n return handler(name, op.value);\n });\n h.handler = handler;\n view.on(op, null, h);\n }\n return view;\n}\nfunction removeOperatorListener(view, op, handler) {\n var h = findOperatorHandler(op, handler);\n if (h) op._targets.remove(h);\n return view;\n}\ninherits(View, Dataflow, {\n // -- DATAFLOW / RENDERING ----\n evaluate: function evaluate(encode, prerun, postrun) {\n var _this = this;\n return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return Dataflow.prototype.evaluate.call(_this, encode, prerun);\n case 2:\n if (!(_this._redraw || _this._resize)) {\n _context.next = 14;\n break;\n }\n _context.prev = 3;\n if (!_this._renderer) {\n _context.next = 8;\n break;\n }\n if (_this._resize) {\n _this._resize = 0;\n resizeRenderer(_this);\n }\n _context.next = 8;\n return _this._renderer.renderAsync(_this._scenegraph.root);\n case 8:\n _this._redraw = false;\n _context.next = 14;\n break;\n case 11:\n _context.prev = 11;\n _context.t0 = _context[\"catch\"](3);\n _this.error(_context.t0);\n case 14:\n // evaluate postrun\n if (postrun) asyncCallback(_this, postrun);\n return _context.abrupt(\"return\", _this);\n case 16:\n case \"end\":\n return _context.stop();\n }\n }, _callee, null, [[3, 11]]);\n }))();\n },\n dirty: function dirty(item) {\n this._redraw = true;\n this._renderer && this._renderer.dirty(item);\n },\n // -- GET / SET ----\n description: function description(text) {\n if (arguments.length) {\n var desc = text != null ? text + '' : null;\n if (desc !== this._desc) ariaLabel(this._el, this._desc = desc);\n return this;\n }\n return this._desc;\n },\n container: function container() {\n return this._el;\n },\n scenegraph: function scenegraph() {\n return this._scenegraph;\n },\n origin: function origin() {\n return this._origin.slice();\n },\n signal: function signal(name, value, options) {\n var op = lookupSignal(this, name);\n return arguments.length === 1 ? op.value : this.update(op, value, options);\n },\n width: function width(_) {\n return arguments.length ? this.signal('width', _) : this.signal('width');\n },\n height: function height(_) {\n return arguments.length ? this.signal('height', _) : this.signal('height');\n },\n padding: function padding(_) {\n return arguments.length ? this.signal('padding', _padding(_)) : _padding(this.signal('padding'));\n },\n autosize: function autosize(_) {\n return arguments.length ? this.signal('autosize', _) : this.signal('autosize');\n },\n background: function background(_) {\n return arguments.length ? this.signal('background', _) : this.signal('background');\n },\n renderer: function renderer(type) {\n if (!arguments.length) return this._renderType;\n if (!renderModule(type)) error('Unrecognized renderer type: ' + type);\n if (type !== this._renderType) {\n this._renderType = type;\n this._resetRenderer();\n }\n return this;\n },\n tooltip: function tooltip(handler) {\n if (!arguments.length) return this._tooltip;\n if (handler !== this._tooltip) {\n this._tooltip = handler;\n this._resetRenderer();\n }\n return this;\n },\n loader: function loader(_loader) {\n if (!arguments.length) return this._loader;\n if (_loader !== this._loader) {\n Dataflow.prototype.loader.call(this, _loader);\n this._resetRenderer();\n }\n return this;\n },\n resize: function resize() {\n // set flag to perform autosize\n this._autosize = 1;\n // touch autosize signal to ensure top-level ViewLayout runs\n return this.touch(lookupSignal(this, 'autosize'));\n },\n _resetRenderer: function _resetRenderer() {\n if (this._renderer) {\n this._renderer = null;\n this.initialize(this._el, this._elBind);\n }\n },\n // -- SIZING ----\n _resizeView: resizeView,\n // -- EVENT HANDLING ----\n addEventListener: function addEventListener(type, handler, options) {\n var callback = handler;\n if (!(options && options.trap === false)) {\n // wrap callback in error handler\n callback = trap(this, handler);\n callback.raw = handler;\n }\n this._handler.on(type, callback);\n return this;\n },\n removeEventListener: function removeEventListener(type, handler) {\n var handlers = this._handler.handlers(type),\n i = handlers.length,\n h,\n t;\n\n // search registered handlers, remove if match found\n while (--i >= 0) {\n t = handlers[i].type;\n h = handlers[i].handler;\n if (type === t && (handler === h || handler === h.raw)) {\n this._handler.off(t, h);\n break;\n }\n }\n return this;\n },\n addResizeListener: function addResizeListener(handler) {\n var l = this._resizeListeners;\n if (l.indexOf(handler) < 0) {\n // add handler if it isn't already registered\n // note: error trapping handled elsewhere, so\n // no need to wrap handlers here\n l.push(handler);\n }\n return this;\n },\n removeResizeListener: function removeResizeListener(handler) {\n var l = this._resizeListeners,\n i = l.indexOf(handler);\n if (i >= 0) {\n l.splice(i, 1);\n }\n return this;\n },\n addSignalListener: function addSignalListener(name, handler) {\n return addOperatorListener(this, name, lookupSignal(this, name), handler);\n },\n removeSignalListener: function removeSignalListener(name, handler) {\n return removeOperatorListener(this, lookupSignal(this, name), handler);\n },\n addDataListener: function addDataListener(name, handler) {\n return addOperatorListener(this, name, dataref(this, name).values, handler);\n },\n removeDataListener: function removeDataListener(name, handler) {\n return removeOperatorListener(this, dataref(this, name).values, handler);\n },\n globalCursor: function globalCursor(_) {\n if (arguments.length) {\n if (this._globalCursor !== !!_) {\n var prev = setCursor(this, null); // clear previous cursor\n this._globalCursor = !!_;\n if (prev) setCursor(this, prev); // swap cursor\n }\n\n return this;\n } else {\n return this._globalCursor;\n }\n },\n preventDefault: function preventDefault(_) {\n if (arguments.length) {\n this._preventDefault = _;\n return this;\n } else {\n return this._preventDefault;\n }\n },\n timer: timer,\n events: events,\n finalize: finalize,\n hover: hover,\n // -- DATA ----\n data: data,\n change: change,\n insert: insert,\n remove: remove,\n // -- SCALES --\n scale: scale,\n // -- INITIALIZATION ----\n initialize: initialize,\n // -- HEADLESS RENDERING ----\n toImageURL: renderToImageURL,\n toCanvas: renderToCanvas,\n toSVG: renderToSVG,\n // -- SAVE / RESTORE STATE ----\n getState: getState,\n setState: setState\n});\nexport { View };","import { Timer, now } from \"./timer.js\";\nexport default function (callback, delay, time) {\n var t = new Timer(),\n total = delay;\n if (delay == null) return t.restart(callback, delay, time), t;\n t._restart = t.restart;\n t.restart = function (callback, delay, time) {\n delay = +delay, time = time == null ? now() : +time;\n t._restart(function tick(elapsed) {\n elapsed += total;\n t._restart(tick, total += delay, time);\n callback(elapsed);\n }, delay, time);\n };\n t.restart(callback, delay, time);\n return t;\n}","var VIEW = 'view',\n LBRACK = '[',\n RBRACK = ']',\n LBRACE = '{',\n RBRACE = '}',\n COLON = ':',\n COMMA = ',',\n NAME = '@',\n GT = '>',\n ILLEGAL = /[[\\]{}]/,\n DEFAULT_MARKS = {\n '*': 1,\n arc: 1,\n area: 1,\n group: 1,\n image: 1,\n line: 1,\n path: 1,\n rect: 1,\n rule: 1,\n shape: 1,\n symbol: 1,\n text: 1,\n trail: 1\n };\nvar DEFAULT_SOURCE, MARKS;\n\n/**\n * Parse an event selector string.\n * Returns an array of event stream definitions.\n */\nfunction eventSelector(selector, source, marks) {\n DEFAULT_SOURCE = source || VIEW;\n MARKS = marks || DEFAULT_MARKS;\n return parseMerge(selector.trim()).map(parseSelector);\n}\nfunction isMarkType(type) {\n return MARKS[type];\n}\nfunction find(s, i, endChar, pushChar, popChar) {\n var n = s.length;\n var count = 0,\n c;\n for (; i < n; ++i) {\n c = s[i];\n if (!count && c === endChar) return i;else if (popChar && popChar.indexOf(c) >= 0) --count;else if (pushChar && pushChar.indexOf(c) >= 0) ++count;\n }\n return i;\n}\nfunction parseMerge(s) {\n var output = [],\n n = s.length;\n var start = 0,\n i = 0;\n while (i < n) {\n i = find(s, i, COMMA, LBRACK + LBRACE, RBRACK + RBRACE);\n output.push(s.substring(start, i).trim());\n start = ++i;\n }\n if (output.length === 0) {\n throw 'Empty event selector: ' + s;\n }\n return output;\n}\nfunction parseSelector(s) {\n return s[0] === '[' ? parseBetween(s) : parseStream(s);\n}\nfunction parseBetween(s) {\n var n = s.length;\n var i = 1,\n b;\n i = find(s, i, RBRACK, LBRACK, RBRACK);\n if (i === n) {\n throw 'Empty between selector: ' + s;\n }\n b = parseMerge(s.substring(1, i));\n if (b.length !== 2) {\n throw 'Between selector must have two elements: ' + s;\n }\n s = s.slice(i + 1).trim();\n if (s[0] !== GT) {\n throw 'Expected \\'>\\' after between selector: ' + s;\n }\n b = b.map(parseSelector);\n var stream = parseSelector(s.slice(1).trim());\n if (stream.between) {\n return {\n between: b,\n stream: stream\n };\n } else {\n stream.between = b;\n }\n return stream;\n}\nfunction parseStream(s) {\n var stream = {\n source: DEFAULT_SOURCE\n },\n source = [];\n var throttle = [0, 0],\n markname = 0,\n start = 0,\n n = s.length,\n i = 0,\n j,\n filter;\n\n // extract throttle from end\n if (s[n - 1] === RBRACE) {\n i = s.lastIndexOf(LBRACE);\n if (i >= 0) {\n try {\n throttle = parseThrottle(s.substring(i + 1, n - 1));\n } catch (e) {\n throw 'Invalid throttle specification: ' + s;\n }\n s = s.slice(0, i).trim();\n n = s.length;\n } else throw 'Unmatched right brace: ' + s;\n i = 0;\n }\n if (!n) throw s;\n\n // set name flag based on first char\n if (s[0] === NAME) markname = ++i;\n\n // extract first part of multi-part stream selector\n j = find(s, i, COLON);\n if (j < n) {\n source.push(s.substring(start, j).trim());\n start = i = ++j;\n }\n\n // extract remaining part of stream selector\n i = find(s, i, LBRACK);\n if (i === n) {\n source.push(s.substring(start, n).trim());\n } else {\n source.push(s.substring(start, i).trim());\n filter = [];\n start = ++i;\n if (start === n) throw 'Unmatched left bracket: ' + s;\n }\n\n // extract filters\n while (i < n) {\n i = find(s, i, RBRACK);\n if (i === n) throw 'Unmatched left bracket: ' + s;\n filter.push(s.substring(start, i).trim());\n if (i < n - 1 && s[++i] !== LBRACK) throw 'Expected left bracket: ' + s;\n start = ++i;\n }\n\n // marshall event stream specification\n if (!(n = source.length) || ILLEGAL.test(source[n - 1])) {\n throw 'Invalid event selector: ' + s;\n }\n if (n > 1) {\n stream.type = source[1];\n if (markname) {\n stream.markname = source[0].slice(1);\n } else if (isMarkType(source[0])) {\n stream.marktype = source[0];\n } else {\n stream.source = source[0];\n }\n } else {\n stream.type = source[0];\n }\n if (stream.type.slice(-1) === '!') {\n stream.consume = true;\n stream.type = stream.type.slice(0, -1);\n }\n if (filter != null) stream.filter = filter;\n if (throttle[0]) stream.throttle = throttle[0];\n if (throttle[1]) stream.debounce = throttle[1];\n return stream;\n}\nfunction parseThrottle(s) {\n var a = s.split(COMMA);\n if (!s.length || a.length > 2) throw s;\n return a.map(function (_) {\n var x = +_;\n if (x !== x) throw s;\n return x;\n });\n}\nexport { eventSelector as parseSelector };","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { isObject, isArray, extend, hasOwnProperty, array, stringValue, peek, error, isString, splitAccessPath, mergeConfig } from 'vega-util';\nimport { parseExpression } from 'vega-functions';\nimport { parseSelector } from 'vega-event-selector';\nimport { isValidScaleType, isDiscrete, isQuantile, isContinuous, isDiscretizing } from 'vega-scale';\nimport { definition as definition$1 } from 'vega-dataflow';\nfunction parseAutosize(spec) {\n return isObject(spec) ? spec : {\n type: spec || 'pad'\n };\n}\nvar number = function number(_) {\n return +_ || 0;\n};\nvar paddingObject = function paddingObject(_) {\n return {\n top: _,\n bottom: _,\n left: _,\n right: _\n };\n};\nfunction parsePadding(spec) {\n return !isObject(spec) ? paddingObject(number(spec)) : spec.signal ? spec : {\n top: number(spec.top),\n bottom: number(spec.bottom),\n left: number(spec.left),\n right: number(spec.right)\n };\n}\nvar encoder = function encoder(_) {\n return isObject(_) && !isArray(_) ? extend({}, _) : {\n value: _\n };\n};\nfunction addEncode(object, name, value, set) {\n if (value != null) {\n var isEncoder = isObject(value) && !isArray(value) || isArray(value) && value.length && isObject(value[0]);\n\n // Always assign signal to update, even if the signal is from the enter block\n if (isEncoder) {\n object.update[name] = value;\n } else {\n object[set || 'enter'][name] = {\n value: value\n };\n }\n return 1;\n } else {\n return 0;\n }\n}\nfunction addEncoders(object, enter, update) {\n for (var name in enter) {\n addEncode(object, name, enter[name]);\n }\n for (var _name in update) {\n addEncode(object, _name, update[_name], 'update');\n }\n}\nfunction extendEncode(encode, extra, skip) {\n for (var name in extra) {\n if (skip && hasOwnProperty(skip, name)) continue;\n encode[name] = extend(encode[name] || {}, extra[name]);\n }\n return encode;\n}\nfunction has(key, encode) {\n return encode && (encode.enter && encode.enter[key] || encode.update && encode.update[key]);\n}\nvar MarkRole = 'mark';\nvar FrameRole = 'frame';\nvar ScopeRole = 'scope';\nvar AxisRole = 'axis';\nvar AxisDomainRole = 'axis-domain';\nvar AxisGridRole = 'axis-grid';\nvar AxisLabelRole = 'axis-label';\nvar AxisTickRole = 'axis-tick';\nvar AxisTitleRole = 'axis-title';\nvar LegendRole = 'legend';\nvar LegendBandRole = 'legend-band';\nvar LegendEntryRole = 'legend-entry';\nvar LegendGradientRole = 'legend-gradient';\nvar LegendLabelRole = 'legend-label';\nvar LegendSymbolRole = 'legend-symbol';\nvar LegendTitleRole = 'legend-title';\nvar TitleRole = 'title';\nvar TitleTextRole = 'title-text';\nvar TitleSubtitleRole = 'title-subtitle';\nfunction applyDefaults(encode, type, role, style, config) {\n var defaults = {},\n enter = {};\n var update, key, skip, props;\n\n // if text mark, apply global lineBreak settings (#2370)\n key = 'lineBreak';\n if (type === 'text' && config[key] != null && !has(key, encode)) {\n applyDefault(defaults, key, config[key]);\n }\n\n // ignore legend and axis roles\n if (role == 'legend' || String(role).startsWith('axis')) {\n role = null;\n }\n\n // resolve mark config\n props = role === FrameRole ? config.group : role === MarkRole ? extend({}, config.mark, config[type]) : null;\n for (key in props) {\n // do not apply defaults if relevant fields are defined\n skip = has(key, encode) || (key === 'fill' || key === 'stroke') && (has('fill', encode) || has('stroke', encode));\n if (!skip) applyDefault(defaults, key, props[key]);\n }\n\n // resolve styles, apply with increasing precedence\n array(style).forEach(function (name) {\n var props = config.style && config.style[name];\n for (var _key in props) {\n if (!has(_key, encode)) {\n applyDefault(defaults, _key, props[_key]);\n }\n }\n });\n encode = extend({}, encode); // defensive copy\n for (key in defaults) {\n props = defaults[key];\n if (props.signal) {\n (update = update || {})[key] = props;\n } else {\n enter[key] = props;\n }\n }\n encode.enter = extend(enter, encode.enter);\n if (update) encode.update = extend(update, encode.update);\n return encode;\n}\nfunction applyDefault(defaults, key, value) {\n defaults[key] = value && value.signal ? {\n signal: value.signal\n } : {\n value: value\n };\n}\nvar scaleRef = function scaleRef(scale) {\n return isString(scale) ? stringValue(scale) : scale.signal ? \"(\".concat(scale.signal, \")\") : field(scale);\n};\nfunction entry$1(enc) {\n if (enc.gradient != null) {\n return gradient(enc);\n }\n var value = enc.signal ? \"(\".concat(enc.signal, \")\") : enc.color ? color(enc.color) : enc.field != null ? field(enc.field) : enc.value !== undefined ? stringValue(enc.value) : undefined;\n if (enc.scale != null) {\n value = scale(enc, value);\n }\n if (value === undefined) {\n value = null;\n }\n if (enc.exponent != null) {\n value = \"pow(\".concat(value, \",\").concat(property(enc.exponent), \")\");\n }\n if (enc.mult != null) {\n value += \"*\".concat(property(enc.mult));\n }\n if (enc.offset != null) {\n value += \"+\".concat(property(enc.offset));\n }\n if (enc.round) {\n value = \"round(\".concat(value, \")\");\n }\n return value;\n}\nvar _color = function _color(type, x, y, z) {\n return \"(\".concat(type, \"(\").concat([x, y, z].map(entry$1).join(','), \")+'')\");\n};\nfunction color(enc) {\n return enc.c ? _color('hcl', enc.h, enc.c, enc.l) : enc.h || enc.s ? _color('hsl', enc.h, enc.s, enc.l) : enc.l || enc.a ? _color('lab', enc.l, enc.a, enc.b) : enc.r || enc.g || enc.b ? _color('rgb', enc.r, enc.g, enc.b) : null;\n}\nfunction gradient(enc) {\n // map undefined to null; expression lang does not allow undefined\n var args = [enc.start, enc.stop, enc.count].map(function (_) {\n return _ == null ? null : stringValue(_);\n });\n\n // trim null inputs from the end\n while (args.length && peek(args) == null) args.pop();\n args.unshift(scaleRef(enc.gradient));\n return \"gradient(\".concat(args.join(','), \")\");\n}\nfunction property(property) {\n return isObject(property) ? '(' + entry$1(property) + ')' : property;\n}\nfunction field(ref) {\n return resolveField(isObject(ref) ? ref : {\n datum: ref\n });\n}\nfunction resolveField(ref) {\n var object, level, field;\n if (ref.signal) {\n object = 'datum';\n field = ref.signal;\n } else if (ref.group || ref.parent) {\n level = Math.max(1, ref.level || 1);\n object = 'item';\n while (level-- > 0) {\n object += '.mark.group';\n }\n if (ref.parent) {\n field = ref.parent;\n object += '.datum';\n } else {\n field = ref.group;\n }\n } else if (ref.datum) {\n object = 'datum';\n field = ref.datum;\n } else {\n error('Invalid field reference: ' + stringValue(ref));\n }\n if (!ref.signal) {\n field = isString(field) ? splitAccessPath(field).map(stringValue).join('][') : resolveField(field);\n }\n return object + '[' + field + ']';\n}\nfunction scale(enc, value) {\n var scale = scaleRef(enc.scale);\n if (enc.range != null) {\n // pull value from scale range\n value = \"lerp(_range(\".concat(scale, \"), \").concat(+enc.range, \")\");\n } else {\n // run value through scale and/or pull scale bandwidth\n if (value !== undefined) value = \"_scale(\".concat(scale, \", \").concat(value, \")\");\n if (enc.band) {\n value = (value ? value + '+' : '') + \"_bandwidth(\".concat(scale, \")\") + (+enc.band === 1 ? '' : '*' + property(enc.band));\n if (enc.extra) {\n // include logic to handle extraneous elements\n value = \"(datum.extra ? _scale(\".concat(scale, \", datum.extra.value) : \").concat(value, \")\");\n }\n }\n if (value == null) value = '0';\n }\n return value;\n}\nfunction rule(enc) {\n var code = '';\n enc.forEach(function (rule) {\n var value = entry$1(rule);\n code += rule.test ? \"(\".concat(rule.test, \")?\").concat(value, \":\") : value;\n });\n\n // if no else clause, terminate with null (#1366)\n if (peek(code) === ':') {\n code += 'null';\n }\n return code;\n}\nfunction parseEncode(encode, type, role, style, scope, params) {\n var enc = {};\n params = params || {};\n params.encoders = {\n $encode: enc\n };\n encode = applyDefaults(encode, type, role, style, scope.config);\n for (var key in encode) {\n enc[key] = parseBlock(encode[key], type, params, scope);\n }\n return params;\n}\nfunction parseBlock(block, marktype, params, scope) {\n var channels = {},\n fields = {};\n for (var name in block) {\n if (block[name] != null) {\n // skip any null entries\n channels[name] = parse$1(expr(block[name]), scope, params, fields);\n }\n }\n return {\n $expr: {\n marktype: marktype,\n channels: channels\n },\n $fields: Object.keys(fields),\n $output: Object.keys(block)\n };\n}\nfunction expr(enc) {\n return isArray(enc) ? rule(enc) : entry$1(enc);\n}\nfunction parse$1(code, scope, params, fields) {\n var expr = parseExpression(code, scope);\n expr.$fields.forEach(function (name) {\n return fields[name] = 1;\n });\n extend(params, expr.$params);\n return expr.$expr;\n}\nvar OUTER = 'outer',\n OUTER_INVALID = ['value', 'update', 'init', 'react', 'bind'];\nfunction outerError(prefix, name) {\n error(prefix + ' for \"outer\" push: ' + stringValue(name));\n}\nfunction parseSignal(signal, scope) {\n var name = signal.name;\n if (signal.push === OUTER) {\n // signal must already be defined, raise error if not\n if (!scope.signals[name]) outerError('No prior signal definition', name);\n // signal push must not use properties reserved for standard definition\n OUTER_INVALID.forEach(function (prop) {\n if (signal[prop] !== undefined) outerError('Invalid property ', prop);\n });\n } else {\n // define a new signal in the current scope\n var op = scope.addSignal(name, signal.value);\n if (signal.react === false) op.react = false;\n if (signal.bind) scope.addBinding(name, signal.bind);\n }\n}\nfunction Entry(type, value, params, parent) {\n this.id = -1;\n this.type = type;\n this.value = value;\n this.params = params;\n if (parent) this.parent = parent;\n}\nfunction entry(type, value, params, parent) {\n return new Entry(type, value, params, parent);\n}\nfunction operator(value, params) {\n return entry('operator', value, params);\n}\n\n// -----\n\nfunction ref(op) {\n var ref = {\n $ref: op.id\n };\n // if operator not yet registered, cache ref to resolve later\n if (op.id < 0) (op.refs = op.refs || []).push(ref);\n return ref;\n}\nfunction fieldRef$1(field, name) {\n return name ? {\n $field: field,\n $name: name\n } : {\n $field: field\n };\n}\nvar keyFieldRef = fieldRef$1('key');\nfunction _compareRef(fields, orders) {\n return {\n $compare: fields,\n $order: orders\n };\n}\nfunction _keyRef(fields, flat) {\n var ref = {\n $key: fields\n };\n if (flat) ref.$flat = true;\n return ref;\n}\n\n// -----\n\nvar Ascending = 'ascending';\nvar Descending = 'descending';\nfunction sortKey(sort) {\n return !isObject(sort) ? '' : (sort.order === Descending ? '-' : '+') + aggrField(sort.op, sort.field);\n}\nfunction aggrField(op, field) {\n return (op && op.signal ? '$' + op.signal : op || '') + (op && field ? '_' : '') + (field && field.signal ? '$' + field.signal : field || '');\n}\n\n// -----\n\nvar Scope$1 = 'scope';\nvar View = 'view';\nfunction isSignal(_) {\n return _ && _.signal;\n}\nfunction isExpr$1(_) {\n return _ && _.expr;\n}\nfunction hasSignal(_) {\n if (isSignal(_)) return true;\n if (isObject(_)) for (var key in _) {\n if (hasSignal(_[key])) return true;\n }\n return false;\n}\nfunction value(specValue, defaultValue) {\n return specValue != null ? specValue : defaultValue;\n}\nfunction deref(v) {\n return v && v.signal || v;\n}\nvar Timer = 'timer';\nfunction parseStream(stream, scope) {\n var method = stream.merge ? mergeStream : stream.stream ? nestedStream : stream.type ? eventStream : error('Invalid stream specification: ' + stringValue(stream));\n return method(stream, scope);\n}\nfunction eventSource(source) {\n return source === Scope$1 ? View : source || View;\n}\nfunction mergeStream(stream, scope) {\n var list = stream.merge.map(function (s) {\n return parseStream(s, scope);\n }),\n entry = streamParameters({\n merge: list\n }, stream, scope);\n return scope.addStream(entry).id;\n}\nfunction nestedStream(stream, scope) {\n var id = parseStream(stream.stream, scope),\n entry = streamParameters({\n stream: id\n }, stream, scope);\n return scope.addStream(entry).id;\n}\nfunction eventStream(stream, scope) {\n var id;\n if (stream.type === Timer) {\n id = scope.event(Timer, stream.throttle);\n stream = {\n between: stream.between,\n filter: stream.filter\n };\n } else {\n id = scope.event(eventSource(stream.source), stream.type);\n }\n var entry = streamParameters({\n stream: id\n }, stream, scope);\n return Object.keys(entry).length === 1 ? id : scope.addStream(entry).id;\n}\nfunction streamParameters(entry, stream, scope) {\n var param = stream.between;\n if (param) {\n if (param.length !== 2) {\n error('Stream \"between\" parameter must have 2 entries: ' + stringValue(stream));\n }\n entry.between = [parseStream(param[0], scope), parseStream(param[1], scope)];\n }\n param = stream.filter ? [].concat(stream.filter) : [];\n if (stream.marktype || stream.markname || stream.markrole) {\n // add filter for mark type, name and/or role\n param.push(filterMark(stream.marktype, stream.markname, stream.markrole));\n }\n if (stream.source === Scope$1) {\n // add filter to limit events from sub-scope only\n param.push('inScope(event.item)');\n }\n if (param.length) {\n entry.filter = parseExpression('(' + param.join(')&&(') + ')', scope).$expr;\n }\n if ((param = stream.throttle) != null) {\n entry.throttle = +param;\n }\n if ((param = stream.debounce) != null) {\n entry.debounce = +param;\n }\n if (stream.consume) {\n entry.consume = true;\n }\n return entry;\n}\nfunction filterMark(type, name, role) {\n var item = 'event.item';\n return item + (type && type !== '*' ? '&&' + item + '.mark.marktype===\\'' + type + '\\'' : '') + (role ? '&&' + item + '.mark.role===\\'' + role + '\\'' : '') + (name ? '&&' + item + '.mark.name===\\'' + name + '\\'' : '');\n}\n\n// bypass expression parser for internal operator references\nvar OP_VALUE_EXPR = {\n code: '_.$value',\n ast: {\n type: 'Identifier',\n value: 'value'\n }\n};\nfunction parseUpdate(spec, scope, target) {\n var encode = spec.encode,\n entry = {\n target: target\n };\n var events = spec.events,\n update = spec.update,\n sources = [];\n if (!events) {\n error('Signal update missing events specification.');\n }\n\n // interpret as an event selector string\n if (isString(events)) {\n events = parseSelector(events, scope.isSubscope() ? Scope$1 : View);\n }\n\n // separate event streams from signal updates\n events = array(events).filter(function (s) {\n return s.signal || s.scale ? (sources.push(s), 0) : 1;\n });\n\n // merge internal operator listeners\n if (sources.length > 1) {\n sources = [mergeSources(sources)];\n }\n\n // merge event streams, include as source\n if (events.length) {\n sources.push(events.length > 1 ? {\n merge: events\n } : events[0]);\n }\n if (encode != null) {\n if (update) error('Signal encode and update are mutually exclusive.');\n update = 'encode(item(),' + stringValue(encode) + ')';\n }\n\n // resolve update value\n entry.update = isString(update) ? parseExpression(update, scope) : update.expr != null ? parseExpression(update.expr, scope) : update.value != null ? update.value : update.signal != null ? {\n $expr: OP_VALUE_EXPR,\n $params: {\n $value: scope.signalRef(update.signal)\n }\n } : error('Invalid signal update specification.');\n if (spec.force) {\n entry.options = {\n force: true\n };\n }\n sources.forEach(function (source) {\n return scope.addUpdate(extend(streamSource(source, scope), entry));\n });\n}\nfunction streamSource(stream, scope) {\n return {\n source: stream.signal ? scope.signalRef(stream.signal) : stream.scale ? scope.scaleRef(stream.scale) : parseStream(stream, scope)\n };\n}\nfunction mergeSources(sources) {\n return {\n signal: '[' + sources.map(function (s) {\n return s.scale ? 'scale(\"' + s.scale + '\")' : s.signal;\n }) + ']'\n };\n}\nfunction parseSignalUpdates(signal, scope) {\n var op = scope.getSignal(signal.name);\n var expr = signal.update;\n if (signal.init) {\n if (expr) {\n error('Signals can not include both init and update expressions.');\n } else {\n expr = signal.init;\n op.initonly = true;\n }\n }\n if (expr) {\n expr = parseExpression(expr, scope);\n op.update = expr.$expr;\n op.params = expr.$params;\n }\n if (signal.on) {\n signal.on.forEach(function (_) {\n return parseUpdate(_, scope, op.id);\n });\n }\n}\nvar transform = function transform(name) {\n return function (params, value, parent) {\n return entry(name, value, params || undefined, parent);\n };\n};\nvar Aggregate = transform('aggregate');\nvar AxisTicks = transform('axisticks');\nvar Bound = transform('bound');\nvar Collect = transform('collect');\nvar Compare = transform('compare');\nvar DataJoin = transform('datajoin');\nvar Encode = transform('encode');\nvar Expression = transform('expression');\nvar Facet = transform('facet');\nvar Field = transform('field');\nvar Key = transform('key');\nvar LegendEntries = transform('legendentries');\nvar Load = transform('load');\nvar Mark = transform('mark');\nvar MultiExtent = transform('multiextent');\nvar MultiValues = transform('multivalues');\nvar Overlap = transform('overlap');\nvar Params = transform('params');\nvar PreFacet = transform('prefacet');\nvar Projection = transform('projection');\nvar Proxy = transform('proxy');\nvar Relay = transform('relay');\nvar Render = transform('render');\nvar Scale = transform('scale');\nvar Sieve = transform('sieve');\nvar SortItems = transform('sortitems');\nvar ViewLayout = transform('viewlayout');\nvar Values = transform('values');\nvar FIELD_REF_ID = 0;\nvar MULTIDOMAIN_SORT_OPS = {\n min: 'min',\n max: 'max',\n count: 'sum'\n};\nfunction initScale(spec, scope) {\n var type = spec.type || 'linear';\n if (!isValidScaleType(type)) {\n error('Unrecognized scale type: ' + stringValue(type));\n }\n scope.addScale(spec.name, {\n type: type,\n domain: undefined\n });\n}\nfunction parseScale(spec, scope) {\n var params = scope.getScale(spec.name).params;\n var key;\n params.domain = parseScaleDomain(spec.domain, spec, scope);\n if (spec.range != null) {\n params.range = parseScaleRange(spec, scope, params);\n }\n if (spec.interpolate != null) {\n parseScaleInterpolate(spec.interpolate, params);\n }\n if (spec.nice != null) {\n params.nice = parseScaleNice(spec.nice);\n }\n if (spec.bins != null) {\n params.bins = parseScaleBins(spec.bins, scope);\n }\n for (key in spec) {\n if (hasOwnProperty(params, key) || key === 'name') continue;\n params[key] = parseLiteral(spec[key], scope);\n }\n}\nfunction parseLiteral(v, scope) {\n return !isObject(v) ? v : v.signal ? scope.signalRef(v.signal) : error('Unsupported object: ' + stringValue(v));\n}\nfunction parseArray(v, scope) {\n return v.signal ? scope.signalRef(v.signal) : v.map(function (v) {\n return parseLiteral(v, scope);\n });\n}\nfunction dataLookupError(name) {\n error('Can not find data set: ' + stringValue(name));\n}\n\n// -- SCALE DOMAIN ----\n\nfunction parseScaleDomain(domain, spec, scope) {\n if (!domain) {\n if (spec.domainMin != null || spec.domainMax != null) {\n error('No scale domain defined for domainMin/domainMax to override.');\n }\n return; // default domain\n }\n\n return domain.signal ? scope.signalRef(domain.signal) : (isArray(domain) ? explicitDomain : domain.fields ? multipleDomain : singularDomain)(domain, spec, scope);\n}\nfunction explicitDomain(domain, spec, scope) {\n return domain.map(function (v) {\n return parseLiteral(v, scope);\n });\n}\nfunction singularDomain(domain, spec, scope) {\n var data = scope.getData(domain.data);\n if (!data) dataLookupError(domain.data);\n return isDiscrete(spec.type) ? data.valuesRef(scope, domain.field, parseSort(domain.sort, false)) : isQuantile(spec.type) ? data.domainRef(scope, domain.field) : data.extentRef(scope, domain.field);\n}\nfunction multipleDomain(domain, spec, scope) {\n var data = domain.data,\n fields = domain.fields.reduce(function (dom, d) {\n d = isString(d) ? {\n data: data,\n field: d\n } : isArray(d) || d.signal ? fieldRef(d, scope) : d;\n dom.push(d);\n return dom;\n }, []);\n return (isDiscrete(spec.type) ? ordinalMultipleDomain : isQuantile(spec.type) ? quantileMultipleDomain : numericMultipleDomain)(domain, scope, fields);\n}\nfunction fieldRef(data, scope) {\n var name = '_:vega:_' + FIELD_REF_ID++,\n coll = Collect({});\n if (isArray(data)) {\n coll.value = {\n $ingest: data\n };\n } else if (data.signal) {\n var code = 'setdata(' + stringValue(name) + ',' + data.signal + ')';\n coll.params.input = scope.signalRef(code);\n }\n scope.addDataPipeline(name, [coll, Sieve({})]);\n return {\n data: name,\n field: 'data'\n };\n}\nfunction ordinalMultipleDomain(domain, scope, fields) {\n var sort = parseSort(domain.sort, true);\n var a, v;\n\n // get value counts for each domain field\n var counts = fields.map(function (f) {\n var data = scope.getData(f.data);\n if (!data) dataLookupError(f.data);\n return data.countsRef(scope, f.field, sort);\n });\n\n // aggregate the results from each domain field\n var p = {\n groupby: keyFieldRef,\n pulse: counts\n };\n if (sort) {\n a = sort.op || 'count';\n v = sort.field ? aggrField(a, sort.field) : 'count';\n p.ops = [MULTIDOMAIN_SORT_OPS[a]];\n p.fields = [scope.fieldRef(v)];\n p.as = [v];\n }\n a = scope.add(Aggregate(p));\n\n // collect aggregate output\n var c = scope.add(Collect({\n pulse: ref(a)\n }));\n\n // extract values for combined domain\n v = scope.add(Values({\n field: keyFieldRef,\n sort: scope.sortRef(sort),\n pulse: ref(c)\n }));\n return ref(v);\n}\nfunction parseSort(sort, multidomain) {\n if (sort) {\n if (!sort.field && !sort.op) {\n if (isObject(sort)) sort.field = 'key';else sort = {\n field: 'key'\n };\n } else if (!sort.field && sort.op !== 'count') {\n error('No field provided for sort aggregate op: ' + sort.op);\n } else if (multidomain && sort.field) {\n if (sort.op && !MULTIDOMAIN_SORT_OPS[sort.op]) {\n error('Multiple domain scales can not be sorted using ' + sort.op);\n }\n }\n }\n return sort;\n}\nfunction quantileMultipleDomain(domain, scope, fields) {\n // get value arrays for each domain field\n var values = fields.map(function (f) {\n var data = scope.getData(f.data);\n if (!data) dataLookupError(f.data);\n return data.domainRef(scope, f.field);\n });\n\n // combine value arrays\n return ref(scope.add(MultiValues({\n values: values\n })));\n}\nfunction numericMultipleDomain(domain, scope, fields) {\n // get extents for each domain field\n var extents = fields.map(function (f) {\n var data = scope.getData(f.data);\n if (!data) dataLookupError(f.data);\n return data.extentRef(scope, f.field);\n });\n\n // combine extents\n return ref(scope.add(MultiExtent({\n extents: extents\n })));\n}\n\n// -- SCALE BINS -----\n\nfunction parseScaleBins(v, scope) {\n return v.signal || isArray(v) ? parseArray(v, scope) : scope.objectProperty(v);\n}\n\n// -- SCALE NICE -----\n\nfunction parseScaleNice(nice) {\n return isObject(nice) ? {\n interval: parseLiteral(nice.interval),\n step: parseLiteral(nice.step)\n } : parseLiteral(nice);\n}\n\n// -- SCALE INTERPOLATION -----\n\nfunction parseScaleInterpolate(interpolate, params) {\n params.interpolate = parseLiteral(interpolate.type || interpolate);\n if (interpolate.gamma != null) {\n params.interpolateGamma = parseLiteral(interpolate.gamma);\n }\n}\n\n// -- SCALE RANGE -----\n\nfunction parseScaleRange(spec, scope, params) {\n var config = scope.config.range;\n var range = spec.range;\n if (range.signal) {\n return scope.signalRef(range.signal);\n } else if (isString(range)) {\n if (config && hasOwnProperty(config, range)) {\n spec = extend({}, spec, {\n range: config[range]\n });\n return parseScaleRange(spec, scope, params);\n } else if (range === 'width') {\n range = [0, {\n signal: 'width'\n }];\n } else if (range === 'height') {\n range = isDiscrete(spec.type) ? [0, {\n signal: 'height'\n }] : [{\n signal: 'height'\n }, 0];\n } else {\n error('Unrecognized scale range value: ' + stringValue(range));\n }\n } else if (range.scheme) {\n params.scheme = isArray(range.scheme) ? parseArray(range.scheme, scope) : parseLiteral(range.scheme, scope);\n if (range.extent) params.schemeExtent = parseArray(range.extent, scope);\n if (range.count) params.schemeCount = parseLiteral(range.count, scope);\n return;\n } else if (range.step) {\n params.rangeStep = parseLiteral(range.step, scope);\n return;\n } else if (isDiscrete(spec.type) && !isArray(range)) {\n return parseScaleDomain(range, spec, scope);\n } else if (!isArray(range)) {\n error('Unsupported range type: ' + stringValue(range));\n }\n return range.map(function (v) {\n return (isArray(v) ? parseArray : parseLiteral)(v, scope);\n });\n}\nfunction parseProjection(proj, scope) {\n var config = scope.config.projection || {},\n params = {};\n for (var name in proj) {\n if (name === 'name') continue;\n params[name] = parseParameter$1(proj[name], name, scope);\n }\n\n // apply projection defaults from config\n for (var _name2 in config) {\n if (params[_name2] == null) {\n params[_name2] = parseParameter$1(config[_name2], _name2, scope);\n }\n }\n scope.addProjection(proj.name, params);\n}\nfunction parseParameter$1(_, name, scope) {\n return isArray(_) ? _.map(function (_) {\n return parseParameter$1(_, name, scope);\n }) : !isObject(_) ? _ : _.signal ? scope.signalRef(_.signal) : name === 'fit' ? _ : error('Unsupported parameter object: ' + stringValue(_));\n}\nvar Top = 'top';\nvar Left = 'left';\nvar Right = 'right';\nvar Bottom = 'bottom';\nvar Center = 'center';\nvar Vertical = 'vertical';\nvar Start = 'start';\nvar Middle = 'middle';\nvar End = 'end';\nvar Index = 'index';\nvar Label = 'label';\nvar Offset = 'offset';\nvar Perc = 'perc';\nvar Perc2 = 'perc2';\nvar Value = 'value';\nvar GuideLabelStyle = 'guide-label';\nvar GuideTitleStyle = 'guide-title';\nvar GroupTitleStyle = 'group-title';\nvar GroupSubtitleStyle = 'group-subtitle';\nvar Symbols = 'symbol';\nvar Gradient = 'gradient';\nvar Discrete = 'discrete';\nvar Size = 'size';\nvar Shape = 'shape';\nvar Fill = 'fill';\nvar Stroke = 'stroke';\nvar StrokeWidth = 'strokeWidth';\nvar StrokeDash = 'strokeDash';\nvar Opacity = 'opacity';\n\n// Encoding channels supported by legends\n// In priority order of 'canonical' scale\nvar LegendScales = [Size, Shape, Fill, Stroke, StrokeWidth, StrokeDash, Opacity];\nvar Skip = {\n name: 1,\n style: 1,\n interactive: 1\n};\nvar zero = {\n value: 0\n};\nvar one = {\n value: 1\n};\nvar GroupMark = 'group';\nvar RectMark = 'rect';\nvar RuleMark = 'rule';\nvar SymbolMark = 'symbol';\nvar TextMark = 'text';\nfunction guideGroup(mark) {\n mark.type = GroupMark;\n mark.interactive = mark.interactive || false;\n return mark;\n}\nfunction lookup(spec, config) {\n var _ = function _(name, dflt) {\n return value(spec[name], value(config[name], dflt));\n };\n _.isVertical = function (s) {\n return Vertical === value(spec.direction, config.direction || (s ? config.symbolDirection : config.gradientDirection));\n };\n _.gradientLength = function () {\n return value(spec.gradientLength, config.gradientLength || config.gradientWidth);\n };\n _.gradientThickness = function () {\n return value(spec.gradientThickness, config.gradientThickness || config.gradientHeight);\n };\n _.entryColumns = function () {\n return value(spec.columns, value(config.columns, +_.isVertical(true)));\n };\n return _;\n}\nfunction getEncoding(name, encode) {\n var v = encode && (encode.update && encode.update[name] || encode.enter && encode.enter[name]);\n return v && v.signal ? v : v ? v.value : null;\n}\nfunction getStyle(name, scope, style) {\n var s = scope.config.style[style];\n return s && s[name];\n}\nfunction anchorExpr(s, e, m) {\n return \"item.anchor === '\".concat(Start, \"' ? \").concat(s, \" : item.anchor === '\").concat(End, \"' ? \").concat(e, \" : \").concat(m);\n}\nvar alignExpr$1 = anchorExpr(stringValue(Left), stringValue(Right), stringValue(Center));\nfunction tickBand(_) {\n var v = _('tickBand');\n var offset = _('tickOffset'),\n band,\n extra;\n if (!v) {\n // if no tick band entry, fall back on other properties\n band = _('bandPosition');\n extra = _('tickExtra');\n } else if (v.signal) {\n // if signal, augment code to interpret values\n band = {\n signal: \"(\".concat(v.signal, \") === 'extent' ? 1 : 0.5\")\n };\n extra = {\n signal: \"(\".concat(v.signal, \") === 'extent'\")\n };\n if (!isObject(offset)) {\n offset = {\n signal: \"(\".concat(v.signal, \") === 'extent' ? 0 : \").concat(offset)\n };\n }\n } else if (v === 'extent') {\n // if constant, simply set values\n band = 1;\n extra = true;\n offset = 0;\n } else {\n band = 0.5;\n extra = false;\n }\n return {\n extra: extra,\n band: band,\n offset: offset\n };\n}\nfunction extendOffset(value, offset) {\n return !offset ? value : !value ? offset : !isObject(value) ? {\n value: value,\n offset: offset\n } : Object.assign({}, value, {\n offset: extendOffset(value.offset, offset)\n });\n}\nfunction guideMark(mark, extras) {\n if (extras) {\n mark.name = extras.name;\n mark.style = extras.style || mark.style;\n mark.interactive = !!extras.interactive;\n mark.encode = extendEncode(mark.encode, extras, Skip);\n } else {\n mark.interactive = false;\n }\n return mark;\n}\nfunction legendGradient(spec, scale, config, userEncode) {\n var _ = lookup(spec, config),\n vertical = _.isVertical(),\n thickness = _.gradientThickness(),\n length = _.gradientLength();\n var enter, start, stop, width, height;\n if (vertical) {\n start = [0, 1];\n stop = [0, 0];\n width = thickness;\n height = length;\n } else {\n start = [0, 0];\n stop = [1, 0];\n width = length;\n height = thickness;\n }\n var encode = {\n enter: enter = {\n opacity: zero,\n x: zero,\n y: zero,\n width: encoder(width),\n height: encoder(height)\n },\n update: extend({}, enter, {\n opacity: one,\n fill: {\n gradient: scale,\n start: start,\n stop: stop\n }\n }),\n exit: {\n opacity: zero\n }\n };\n addEncoders(encode, {\n stroke: _('gradientStrokeColor'),\n strokeWidth: _('gradientStrokeWidth')\n }, {\n // update\n opacity: _('gradientOpacity')\n });\n return guideMark({\n type: RectMark,\n role: LegendGradientRole,\n encode: encode\n }, userEncode);\n}\nfunction legendGradientDiscrete(spec, scale, config, userEncode, dataRef) {\n var _ = lookup(spec, config),\n vertical = _.isVertical(),\n thickness = _.gradientThickness(),\n length = _.gradientLength();\n var u,\n v,\n uu,\n vv,\n adjust = '';\n vertical ? (u = 'y', uu = 'y2', v = 'x', vv = 'width', adjust = '1-') : (u = 'x', uu = 'x2', v = 'y', vv = 'height');\n var enter = {\n opacity: zero,\n fill: {\n scale: scale,\n field: Value\n }\n };\n enter[u] = {\n signal: adjust + 'datum.' + Perc,\n mult: length\n };\n enter[v] = zero;\n enter[uu] = {\n signal: adjust + 'datum.' + Perc2,\n mult: length\n };\n enter[vv] = encoder(thickness);\n var encode = {\n enter: enter,\n update: extend({}, enter, {\n opacity: one\n }),\n exit: {\n opacity: zero\n }\n };\n addEncoders(encode, {\n stroke: _('gradientStrokeColor'),\n strokeWidth: _('gradientStrokeWidth')\n }, {\n // update\n opacity: _('gradientOpacity')\n });\n return guideMark({\n type: RectMark,\n role: LegendBandRole,\n key: Value,\n from: dataRef,\n encode: encode\n }, userEncode);\n}\nvar alignExpr = \"datum.\".concat(Perc, \"<=0?\\\"\").concat(Left, \"\\\":datum.\").concat(Perc, \">=1?\\\"\").concat(Right, \"\\\":\\\"\").concat(Center, \"\\\"\"),\n baselineExpr = \"datum.\".concat(Perc, \"<=0?\\\"\").concat(Bottom, \"\\\":datum.\").concat(Perc, \">=1?\\\"\").concat(Top, \"\\\":\\\"\").concat(Middle, \"\\\"\");\nfunction legendGradientLabels(spec, config, userEncode, dataRef) {\n var _ = lookup(spec, config),\n vertical = _.isVertical(),\n thickness = encoder(_.gradientThickness()),\n length = _.gradientLength();\n var overlap = _('labelOverlap'),\n enter,\n update,\n u,\n v,\n adjust = '';\n var encode = {\n enter: enter = {\n opacity: zero\n },\n update: update = {\n opacity: one,\n text: {\n field: Label\n }\n },\n exit: {\n opacity: zero\n }\n };\n addEncoders(encode, {\n fill: _('labelColor'),\n fillOpacity: _('labelOpacity'),\n font: _('labelFont'),\n fontSize: _('labelFontSize'),\n fontStyle: _('labelFontStyle'),\n fontWeight: _('labelFontWeight'),\n limit: value(spec.labelLimit, config.gradientLabelLimit)\n });\n if (vertical) {\n enter.align = {\n value: 'left'\n };\n enter.baseline = update.baseline = {\n signal: baselineExpr\n };\n u = 'y';\n v = 'x';\n adjust = '1-';\n } else {\n enter.align = update.align = {\n signal: alignExpr\n };\n enter.baseline = {\n value: 'top'\n };\n u = 'x';\n v = 'y';\n }\n enter[u] = update[u] = {\n signal: adjust + 'datum.' + Perc,\n mult: length\n };\n enter[v] = update[v] = thickness;\n thickness.offset = value(spec.labelOffset, config.gradientLabelOffset) || 0;\n overlap = overlap ? {\n separation: _('labelSeparation'),\n method: overlap,\n order: 'datum.' + Index\n } : undefined;\n\n // type, role, style, key, dataRef, encode, extras\n return guideMark({\n type: TextMark,\n role: LegendLabelRole,\n style: GuideLabelStyle,\n key: Value,\n from: dataRef,\n encode: encode,\n overlap: overlap\n }, userEncode);\n}\n\n// userEncode is top-level, includes entries, symbols, labels\nfunction legendSymbolGroups(spec, config, userEncode, dataRef, columns) {\n var _ = lookup(spec, config),\n entries = userEncode.entries,\n interactive = !!(entries && entries.interactive),\n name = entries ? entries.name : undefined,\n height = _('clipHeight'),\n symbolOffset = _('symbolOffset'),\n valueRef = {\n data: 'value'\n },\n xSignal = \"(\".concat(columns, \") ? datum.\").concat(Offset, \" : datum.\").concat(Size),\n yEncode = height ? encoder(height) : {\n field: Size\n },\n index = \"datum.\".concat(Index),\n ncols = \"max(1, \".concat(columns, \")\");\n var encode, enter, update, nrows, sort;\n yEncode.mult = 0.5;\n\n // -- LEGEND SYMBOLS --\n encode = {\n enter: enter = {\n opacity: zero,\n x: {\n signal: xSignal,\n mult: 0.5,\n offset: symbolOffset\n },\n y: yEncode\n },\n update: update = {\n opacity: one,\n x: enter.x,\n y: enter.y\n },\n exit: {\n opacity: zero\n }\n };\n var baseFill = null,\n baseStroke = null;\n if (!spec.fill) {\n baseFill = config.symbolBaseFillColor;\n baseStroke = config.symbolBaseStrokeColor;\n }\n addEncoders(encode, {\n fill: _('symbolFillColor', baseFill),\n shape: _('symbolType'),\n size: _('symbolSize'),\n stroke: _('symbolStrokeColor', baseStroke),\n strokeDash: _('symbolDash'),\n strokeDashOffset: _('symbolDashOffset'),\n strokeWidth: _('symbolStrokeWidth')\n }, {\n // update\n opacity: _('symbolOpacity')\n });\n LegendScales.forEach(function (scale) {\n if (spec[scale]) {\n update[scale] = enter[scale] = {\n scale: spec[scale],\n field: Value\n };\n }\n });\n var symbols = guideMark({\n type: SymbolMark,\n role: LegendSymbolRole,\n key: Value,\n from: valueRef,\n clip: height ? true : undefined,\n encode: encode\n }, userEncode.symbols);\n\n // -- LEGEND LABELS --\n var labelOffset = encoder(symbolOffset);\n labelOffset.offset = _('labelOffset');\n encode = {\n enter: enter = {\n opacity: zero,\n x: {\n signal: xSignal,\n offset: labelOffset\n },\n y: yEncode\n },\n update: update = {\n opacity: one,\n text: {\n field: Label\n },\n x: enter.x,\n y: enter.y\n },\n exit: {\n opacity: zero\n }\n };\n addEncoders(encode, {\n align: _('labelAlign'),\n baseline: _('labelBaseline'),\n fill: _('labelColor'),\n fillOpacity: _('labelOpacity'),\n font: _('labelFont'),\n fontSize: _('labelFontSize'),\n fontStyle: _('labelFontStyle'),\n fontWeight: _('labelFontWeight'),\n limit: _('labelLimit')\n });\n var labels = guideMark({\n type: TextMark,\n role: LegendLabelRole,\n style: GuideLabelStyle,\n key: Value,\n from: valueRef,\n encode: encode\n }, userEncode.labels);\n\n // -- LEGEND ENTRY GROUPS --\n encode = {\n enter: {\n noBound: {\n value: !height\n },\n // ignore width/height in bounds calc\n width: zero,\n height: height ? encoder(height) : zero,\n opacity: zero\n },\n exit: {\n opacity: zero\n },\n update: update = {\n opacity: one,\n row: {\n signal: null\n },\n column: {\n signal: null\n }\n }\n };\n\n // annotate and sort groups to ensure correct ordering\n if (_.isVertical(true)) {\n nrows = \"ceil(item.mark.items.length / \".concat(ncols, \")\");\n update.row.signal = \"\".concat(index, \"%\").concat(nrows);\n update.column.signal = \"floor(\".concat(index, \" / \").concat(nrows, \")\");\n sort = {\n field: ['row', index]\n };\n } else {\n update.row.signal = \"floor(\".concat(index, \" / \").concat(ncols, \")\");\n update.column.signal = \"\".concat(index, \" % \").concat(ncols);\n sort = {\n field: index\n };\n }\n // handle zero column case (implies infinite columns)\n update.column.signal = \"(\".concat(columns, \")?\").concat(update.column.signal, \":\").concat(index);\n\n // facet legend entries into sub-groups\n dataRef = {\n facet: {\n data: dataRef,\n name: 'value',\n groupby: Index\n }\n };\n return guideGroup({\n role: ScopeRole,\n from: dataRef,\n encode: extendEncode(encode, entries, Skip),\n marks: [symbols, labels],\n name: name,\n interactive: interactive,\n sort: sort\n });\n}\nfunction legendSymbolLayout(spec, config) {\n var _ = lookup(spec, config);\n\n // layout parameters for legend entries\n return {\n align: _('gridAlign'),\n columns: _.entryColumns(),\n center: {\n row: true,\n column: false\n },\n padding: {\n row: _('rowPadding'),\n column: _('columnPadding')\n }\n };\n}\n\n// expression logic for align, anchor, angle, and baseline calculation\nvar isL = 'item.orient === \"left\"',\n isR = 'item.orient === \"right\"',\n isLR = \"(\".concat(isL, \" || \").concat(isR, \")\"),\n isVG = \"datum.vgrad && \".concat(isLR),\n baseline = anchorExpr('\"top\"', '\"bottom\"', '\"middle\"'),\n alignFlip = anchorExpr('\"right\"', '\"left\"', '\"center\"'),\n exprAlign = \"datum.vgrad && \".concat(isR, \" ? (\").concat(alignFlip, \") : (\").concat(isLR, \" && !(datum.vgrad && \").concat(isL, \")) ? \\\"left\\\" : \").concat(alignExpr$1),\n exprAnchor = \"item._anchor || (\".concat(isLR, \" ? \\\"middle\\\" : \\\"start\\\")\"),\n exprAngle = \"\".concat(isVG, \" ? (\").concat(isL, \" ? -90 : 90) : 0\"),\n exprBaseline = \"\".concat(isLR, \" ? (datum.vgrad ? (\").concat(isR, \" ? \\\"bottom\\\" : \\\"top\\\") : \").concat(baseline, \") : \\\"top\\\"\");\nfunction legendTitle(spec, config, userEncode, dataRef) {\n var _ = lookup(spec, config);\n var encode = {\n enter: {\n opacity: zero\n },\n update: {\n opacity: one,\n x: {\n field: {\n group: 'padding'\n }\n },\n y: {\n field: {\n group: 'padding'\n }\n }\n },\n exit: {\n opacity: zero\n }\n };\n addEncoders(encode, {\n orient: _('titleOrient'),\n _anchor: _('titleAnchor'),\n anchor: {\n signal: exprAnchor\n },\n angle: {\n signal: exprAngle\n },\n align: {\n signal: exprAlign\n },\n baseline: {\n signal: exprBaseline\n },\n text: spec.title,\n fill: _('titleColor'),\n fillOpacity: _('titleOpacity'),\n font: _('titleFont'),\n fontSize: _('titleFontSize'),\n fontStyle: _('titleFontStyle'),\n fontWeight: _('titleFontWeight'),\n limit: _('titleLimit'),\n lineHeight: _('titleLineHeight')\n }, {\n // require update\n align: _('titleAlign'),\n baseline: _('titleBaseline')\n });\n return guideMark({\n type: TextMark,\n role: LegendTitleRole,\n style: GuideTitleStyle,\n from: dataRef,\n encode: encode\n }, userEncode);\n}\nfunction clip(clip, scope) {\n var expr;\n if (isObject(clip)) {\n if (clip.signal) {\n expr = clip.signal;\n } else if (clip.path) {\n expr = 'pathShape(' + param(clip.path) + ')';\n } else if (clip.sphere) {\n expr = 'geoShape(' + param(clip.sphere) + ', {type: \"Sphere\"})';\n }\n }\n return expr ? scope.signalRef(expr) : !!clip;\n}\nfunction param(value) {\n return isObject(value) && value.signal ? value.signal : stringValue(value);\n}\nfunction getRole(spec) {\n var role = spec.role || '';\n return !role.indexOf('axis') || !role.indexOf('legend') || !role.indexOf('title') ? role : spec.type === GroupMark ? ScopeRole : role || MarkRole;\n}\nfunction definition(spec) {\n return {\n marktype: spec.type,\n name: spec.name || undefined,\n role: spec.role || getRole(spec),\n zindex: +spec.zindex || undefined,\n aria: spec.aria,\n description: spec.description\n };\n}\nfunction interactive(spec, scope) {\n return spec && spec.signal ? scope.signalRef(spec.signal) : spec === false ? false : true;\n}\n\n/**\n * Parse a data transform specification.\n */\nfunction parseTransform(spec, scope) {\n var def = definition$1(spec.type);\n if (!def) error('Unrecognized transform type: ' + stringValue(spec.type));\n var t = entry(def.type.toLowerCase(), null, parseParameters(def, spec, scope));\n if (spec.signal) scope.addSignal(spec.signal, scope.proxy(t));\n t.metadata = def.metadata || {};\n return t;\n}\n\n/**\n * Parse all parameters of a data transform.\n */\nfunction parseParameters(def, spec, scope) {\n var params = {},\n n = def.params.length;\n for (var i = 0; i < n; ++i) {\n var pdef = def.params[i];\n params[pdef.name] = parseParameter(pdef, spec, scope);\n }\n return params;\n}\n\n/**\n * Parse a data transform parameter.\n */\nfunction parseParameter(def, spec, scope) {\n var type = def.type,\n value = spec[def.name];\n if (type === 'index') {\n return parseIndexParameter(def, spec, scope);\n } else if (value === undefined) {\n if (def.required) {\n error('Missing required ' + stringValue(spec.type) + ' parameter: ' + stringValue(def.name));\n }\n return;\n } else if (type === 'param') {\n return parseSubParameters(def, spec, scope);\n } else if (type === 'projection') {\n return scope.projectionRef(spec[def.name]);\n }\n return def.array && !isSignal(value) ? value.map(function (v) {\n return parameterValue(def, v, scope);\n }) : parameterValue(def, value, scope);\n}\n\n/**\n * Parse a single parameter value.\n */\nfunction parameterValue(def, value, scope) {\n var type = def.type;\n if (isSignal(value)) {\n return isExpr(type) ? error('Expression references can not be signals.') : isField(type) ? scope.fieldRef(value) : isCompare(type) ? scope.compareRef(value) : scope.signalRef(value.signal);\n } else {\n var _expr = def.expr || isField(type);\n return _expr && outerExpr(value) ? scope.exprRef(value.expr, value.as) : _expr && outerField(value) ? fieldRef$1(value.field, value.as) : isExpr(type) ? parseExpression(value, scope) : isData(type) ? ref(scope.getData(value).values) : isField(type) ? fieldRef$1(value) : isCompare(type) ? scope.compareRef(value) : value;\n }\n}\n\n/**\n * Parse parameter for accessing an index of another data set.\n */\nfunction parseIndexParameter(def, spec, scope) {\n if (!isString(spec.from)) {\n error('Lookup \"from\" parameter must be a string literal.');\n }\n return scope.getData(spec.from).lookupRef(scope, spec.key);\n}\n\n/**\n * Parse a parameter that contains one or more sub-parameter objects.\n */\nfunction parseSubParameters(def, spec, scope) {\n var value = spec[def.name];\n if (def.array) {\n if (!isArray(value)) {\n // signals not allowed!\n error('Expected an array of sub-parameters. Instead: ' + stringValue(value));\n }\n return value.map(function (v) {\n return parseSubParameter(def, v, scope);\n });\n } else {\n return parseSubParameter(def, value, scope);\n }\n}\n\n/**\n * Parse a sub-parameter object.\n */\nfunction parseSubParameter(def, value, scope) {\n var n = def.params.length;\n var pdef;\n\n // loop over defs to find matching key\n for (var i = 0; i < n; ++i) {\n pdef = def.params[i];\n for (var k in pdef.key) {\n if (pdef.key[k] !== value[k]) {\n pdef = null;\n break;\n }\n }\n if (pdef) break;\n }\n // raise error if matching key not found\n if (!pdef) error('Unsupported parameter: ' + stringValue(value));\n\n // parse params, create Params transform, return ref\n var params = extend(parseParameters(pdef, value, scope), pdef.key);\n return ref(scope.add(Params(params)));\n}\n\n// -- Utilities -----\n\nvar outerExpr = function outerExpr(_) {\n return _ && _.expr;\n};\nvar outerField = function outerField(_) {\n return _ && _.field;\n};\nvar isData = function isData(_) {\n return _ === 'data';\n};\nvar isExpr = function isExpr(_) {\n return _ === 'expr';\n};\nvar isField = function isField(_) {\n return _ === 'field';\n};\nvar isCompare = function isCompare(_) {\n return _ === 'compare';\n};\nfunction parseData$1(from, group, scope) {\n var facet, key, op, dataRef, parent;\n\n // if no source data, generate singleton datum\n if (!from) {\n dataRef = ref(scope.add(Collect(null, [{}])));\n }\n\n // if faceted, process facet specification\n else if (facet = from.facet) {\n if (!group) error('Only group marks can be faceted.');\n\n // use pre-faceted source data, if available\n if (facet.field != null) {\n dataRef = parent = getDataRef(facet, scope);\n } else {\n // generate facet aggregates if no direct data specification\n if (!from.data) {\n op = parseTransform(extend({\n type: 'aggregate',\n groupby: array(facet.groupby)\n }, facet.aggregate), scope);\n op.params.key = scope.keyRef(facet.groupby);\n op.params.pulse = getDataRef(facet, scope);\n dataRef = parent = ref(scope.add(op));\n } else {\n parent = ref(scope.getData(from.data).aggregate);\n }\n key = scope.keyRef(facet.groupby, true);\n }\n }\n\n // if not yet defined, get source data reference\n if (!dataRef) {\n dataRef = getDataRef(from, scope);\n }\n return {\n key: key,\n pulse: dataRef,\n parent: parent\n };\n}\nfunction getDataRef(from, scope) {\n return from.$ref ? from : from.data && from.data.$ref ? from.data : ref(scope.getData(from.data).output);\n}\nfunction DataScope(scope, input, output, values, aggr) {\n this.scope = scope; // parent scope object\n this.input = input; // first operator in pipeline (tuple input)\n this.output = output; // last operator in pipeline (tuple output)\n this.values = values; // operator for accessing tuples (but not tuple flow)\n\n // last aggregate in transform pipeline\n this.aggregate = aggr;\n\n // lookup table of field indices\n this.index = {};\n}\nDataScope.fromEntries = function (scope, entries) {\n var n = entries.length,\n values = entries[n - 1],\n output = entries[n - 2];\n var input = entries[0],\n aggr = null,\n i = 1;\n if (input && input.type === 'load') {\n input = entries[1];\n }\n\n // add operator entries to this scope, wire up pulse chain\n scope.add(entries[0]);\n for (; i < n; ++i) {\n entries[i].params.pulse = ref(entries[i - 1]);\n scope.add(entries[i]);\n if (entries[i].type === 'aggregate') aggr = entries[i];\n }\n return new DataScope(scope, input, output, values, aggr);\n};\nfunction fieldKey(field) {\n return isString(field) ? field : null;\n}\nfunction addSortField(scope, p, sort) {\n var as = aggrField(sort.op, sort.field);\n var s;\n if (p.ops) {\n for (var i = 0, n = p.as.length; i < n; ++i) {\n if (p.as[i] === as) return;\n }\n } else {\n p.ops = ['count'];\n p.fields = [null];\n p.as = ['count'];\n }\n if (sort.op) {\n p.ops.push((s = sort.op.signal) ? scope.signalRef(s) : sort.op);\n p.fields.push(scope.fieldRef(sort.field));\n p.as.push(as);\n }\n}\nfunction cache(scope, ds, name, optype, field, counts, index) {\n var cache = ds[name] || (ds[name] = {}),\n sort = sortKey(counts);\n var k = fieldKey(field),\n v,\n op;\n if (k != null) {\n scope = ds.scope;\n k = k + (sort ? '|' + sort : '');\n v = cache[k];\n }\n if (!v) {\n var params = counts ? {\n field: keyFieldRef,\n pulse: ds.countsRef(scope, field, counts)\n } : {\n field: scope.fieldRef(field),\n pulse: ref(ds.output)\n };\n if (sort) params.sort = scope.sortRef(counts);\n op = scope.add(entry(optype, undefined, params));\n if (index) ds.index[field] = op;\n v = ref(op);\n if (k != null) cache[k] = v;\n }\n return v;\n}\nDataScope.prototype = {\n countsRef: function countsRef(scope, field, sort) {\n var ds = this,\n cache = ds.counts || (ds.counts = {}),\n k = fieldKey(field);\n var v, a, p;\n if (k != null) {\n scope = ds.scope;\n v = cache[k];\n }\n if (!v) {\n p = {\n groupby: scope.fieldRef(field, 'key'),\n pulse: ref(ds.output)\n };\n if (sort && sort.field) addSortField(scope, p, sort);\n a = scope.add(Aggregate(p));\n v = scope.add(Collect({\n pulse: ref(a)\n }));\n v = {\n agg: a,\n ref: ref(v)\n };\n if (k != null) cache[k] = v;\n } else if (sort && sort.field) {\n addSortField(scope, v.agg.params, sort);\n }\n return v.ref;\n },\n tuplesRef: function tuplesRef() {\n return ref(this.values);\n },\n extentRef: function extentRef(scope, field) {\n return cache(scope, this, 'extent', 'extent', field, false);\n },\n domainRef: function domainRef(scope, field) {\n return cache(scope, this, 'domain', 'values', field, false);\n },\n valuesRef: function valuesRef(scope, field, sort) {\n return cache(scope, this, 'vals', 'values', field, sort || true);\n },\n lookupRef: function lookupRef(scope, field) {\n return cache(scope, this, 'lookup', 'tupleindex', field, false);\n },\n indataRef: function indataRef(scope, field) {\n return cache(scope, this, 'indata', 'tupleindex', field, true, true);\n }\n};\nfunction parseFacet(spec, scope, group) {\n var facet = spec.from.facet,\n name = facet.name,\n data = getDataRef(facet, scope);\n var op;\n if (!facet.name) {\n error('Facet must have a name: ' + stringValue(facet));\n }\n if (!facet.data) {\n error('Facet must reference a data set: ' + stringValue(facet));\n }\n if (facet.field) {\n op = scope.add(PreFacet({\n field: scope.fieldRef(facet.field),\n pulse: data\n }));\n } else if (facet.groupby) {\n op = scope.add(Facet({\n key: scope.keyRef(facet.groupby),\n group: ref(scope.proxy(group.parent)),\n pulse: data\n }));\n } else {\n error('Facet must specify groupby or field: ' + stringValue(facet));\n }\n\n // initialize facet subscope\n var subscope = scope.fork(),\n source = subscope.add(Collect()),\n values = subscope.add(Sieve({\n pulse: ref(source)\n }));\n subscope.addData(name, new DataScope(subscope, source, source, values));\n subscope.addSignal('parent', null);\n\n // parse faceted subflow\n op.params.subflow = {\n $subflow: subscope.parse(spec).toRuntime()\n };\n}\nfunction parseSubflow(spec, scope, input) {\n var op = scope.add(PreFacet({\n pulse: input.pulse\n })),\n subscope = scope.fork();\n subscope.add(Sieve());\n subscope.addSignal('parent', null);\n\n // parse group mark subflow\n op.params.subflow = {\n $subflow: subscope.parse(spec).toRuntime()\n };\n}\nfunction parseTrigger(spec, scope, name) {\n var remove = spec.remove,\n insert = spec.insert,\n toggle = spec.toggle,\n modify = spec.modify,\n values = spec.values,\n op = scope.add(operator());\n var update = 'if(' + spec.trigger + ',modify(\"' + name + '\",' + [insert, remove, toggle, modify, values].map(function (_) {\n return _ == null ? 'null' : _;\n }).join(',') + '),0)';\n var expr = parseExpression(update, scope);\n op.update = expr.$expr;\n op.params = expr.$params;\n}\nfunction parseMark(spec, scope) {\n var role = getRole(spec),\n group = spec.type === GroupMark,\n facet = spec.from && spec.from.facet,\n overlap = spec.overlap;\n var layout = spec.layout || role === ScopeRole || role === FrameRole,\n ops,\n op,\n store,\n enc,\n name,\n layoutRef,\n boundRef;\n var nested = role === MarkRole || layout || facet;\n\n // resolve input data\n var input = parseData$1(spec.from, group, scope);\n\n // data join to map tuples to visual items\n op = scope.add(DataJoin({\n key: input.key || (spec.key ? fieldRef$1(spec.key) : undefined),\n pulse: input.pulse,\n clean: !group\n }));\n var joinRef = ref(op);\n\n // collect visual items\n op = store = scope.add(Collect({\n pulse: joinRef\n }));\n\n // connect visual items to scenegraph\n op = scope.add(Mark({\n markdef: definition(spec),\n interactive: interactive(spec.interactive, scope),\n clip: clip(spec.clip, scope),\n context: {\n $context: true\n },\n groups: scope.lookup(),\n parent: scope.signals.parent ? scope.signalRef('parent') : null,\n index: scope.markpath(),\n pulse: ref(op)\n }));\n var markRef = ref(op);\n\n // add visual encoders\n op = enc = scope.add(Encode(parseEncode(spec.encode, spec.type, role, spec.style, scope, {\n mod: false,\n pulse: markRef\n })));\n\n // monitor parent marks to propagate changes\n op.params.parent = scope.encode();\n\n // add post-encoding transforms, if defined\n if (spec.transform) {\n spec.transform.forEach(function (_) {\n var tx = parseTransform(_, scope),\n md = tx.metadata;\n if (md.generates || md.changes) {\n error('Mark transforms should not generate new data.');\n }\n if (!md.nomod) enc.params.mod = true; // update encode mod handling\n tx.params.pulse = ref(op);\n scope.add(op = tx);\n });\n }\n\n // if item sort specified, perform post-encoding\n if (spec.sort) {\n op = scope.add(SortItems({\n sort: scope.compareRef(spec.sort),\n pulse: ref(op)\n }));\n }\n var encodeRef = ref(op);\n\n // add view layout operator if needed\n if (facet || layout) {\n layout = scope.add(ViewLayout({\n layout: scope.objectProperty(spec.layout),\n legends: scope.legends,\n mark: markRef,\n pulse: encodeRef\n }));\n layoutRef = ref(layout);\n }\n\n // compute bounding boxes\n var bound = scope.add(Bound({\n mark: markRef,\n pulse: layoutRef || encodeRef\n }));\n boundRef = ref(bound);\n\n // if group mark, recurse to parse nested content\n if (group) {\n // juggle layout & bounds to ensure they run *after* any faceting transforms\n if (nested) {\n ops = scope.operators;\n ops.pop();\n if (layout) ops.pop();\n }\n scope.pushState(encodeRef, layoutRef || boundRef, joinRef);\n facet ? parseFacet(spec, scope, input) // explicit facet\n : nested ? parseSubflow(spec, scope, input) // standard mark group\n : scope.parse(spec); // guide group, we can avoid nested scopes\n scope.popState();\n if (nested) {\n if (layout) ops.push(layout);\n ops.push(bound);\n }\n }\n\n // if requested, add overlap removal transform\n if (overlap) {\n boundRef = parseOverlap(overlap, boundRef, scope);\n }\n\n // render / sieve items\n var render = scope.add(Render({\n pulse: boundRef\n })),\n sieve = scope.add(Sieve({\n pulse: ref(render)\n }, undefined, scope.parent()));\n\n // if mark is named, make accessible as reactive geometry\n // add trigger updates if defined\n if (spec.name != null) {\n name = spec.name;\n scope.addData(name, new DataScope(scope, store, render, sieve));\n if (spec.on) spec.on.forEach(function (on) {\n if (on.insert || on.remove || on.toggle) {\n error('Marks only support modify triggers.');\n }\n parseTrigger(on, scope, name);\n });\n }\n}\nfunction parseOverlap(overlap, source, scope) {\n var method = overlap.method,\n bound = overlap.bound,\n sep = overlap.separation;\n var params = {\n separation: isSignal(sep) ? scope.signalRef(sep.signal) : sep,\n method: isSignal(method) ? scope.signalRef(method.signal) : method,\n pulse: source\n };\n if (overlap.order) {\n params.sort = scope.compareRef({\n field: overlap.order\n });\n }\n if (bound) {\n var tol = bound.tolerance;\n params.boundTolerance = isSignal(tol) ? scope.signalRef(tol.signal) : +tol;\n params.boundScale = scope.scaleRef(bound.scale);\n params.boundOrient = bound.orient;\n }\n return ref(scope.add(Overlap(params)));\n}\nfunction parseLegend(spec, scope) {\n var config = scope.config.legend,\n encode = spec.encode || {},\n _ = lookup(spec, config),\n legendEncode = encode.legend || {},\n name = legendEncode.name || undefined,\n interactive = legendEncode.interactive,\n style = legendEncode.style,\n scales = {};\n var scale = 0,\n entryLayout,\n params,\n children;\n\n // resolve scales and 'canonical' scale name\n LegendScales.forEach(function (s) {\n return spec[s] ? (scales[s] = spec[s], scale = scale || spec[s]) : 0;\n });\n if (!scale) error('Missing valid scale for legend.');\n\n // resolve legend type (symbol, gradient, or discrete gradient)\n var type = legendType(spec, scope.scaleType(scale));\n\n // single-element data source for legend group\n var datum = {\n title: spec.title != null,\n scales: scales,\n type: type,\n vgrad: type !== 'symbol' && _.isVertical()\n };\n var dataRef = ref(scope.add(Collect(null, [datum])));\n\n // encoding properties for legend entry sub-group\n var entryEncode = {\n enter: {\n x: {\n value: 0\n },\n y: {\n value: 0\n }\n }\n };\n\n // data source for legend values\n var entryRef = ref(scope.add(LegendEntries(params = {\n type: type,\n scale: scope.scaleRef(scale),\n count: scope.objectProperty(_('tickCount')),\n limit: scope.property(_('symbolLimit')),\n values: scope.objectProperty(spec.values),\n minstep: scope.property(spec.tickMinStep),\n formatType: scope.property(spec.formatType),\n formatSpecifier: scope.property(spec.format)\n })));\n\n // continuous gradient legend\n if (type === Gradient) {\n children = [legendGradient(spec, scale, config, encode.gradient), legendGradientLabels(spec, config, encode.labels, entryRef)];\n // adjust default tick count based on the gradient length\n params.count = params.count || scope.signalRef(\"max(2,2*floor((\".concat(deref(_.gradientLength()), \")/100))\"));\n }\n\n // discrete gradient legend\n else if (type === Discrete) {\n children = [legendGradientDiscrete(spec, scale, config, encode.gradient, entryRef), legendGradientLabels(spec, config, encode.labels, entryRef)];\n }\n\n // symbol legend\n else {\n // determine legend symbol group layout\n entryLayout = legendSymbolLayout(spec, config);\n children = [legendSymbolGroups(spec, config, encode, entryRef, deref(entryLayout.columns))];\n // pass symbol size information to legend entry generator\n params.size = sizeExpression(spec, scope, children[0].marks);\n }\n\n // generate legend marks\n children = [guideGroup({\n role: LegendEntryRole,\n from: dataRef,\n encode: entryEncode,\n marks: children,\n layout: entryLayout,\n interactive: interactive\n })];\n\n // include legend title if defined\n if (datum.title) {\n children.push(legendTitle(spec, config, encode.title, dataRef));\n }\n\n // parse legend specification\n return parseMark(guideGroup({\n role: LegendRole,\n from: dataRef,\n encode: extendEncode(buildLegendEncode(_, spec, config), legendEncode, Skip),\n marks: children,\n aria: _('aria'),\n description: _('description'),\n zindex: _('zindex'),\n name: name,\n interactive: interactive,\n style: style\n }), scope);\n}\nfunction legendType(spec, scaleType) {\n var type = spec.type || Symbols;\n if (!spec.type && scaleCount(spec) === 1 && (spec.fill || spec.stroke)) {\n type = isContinuous(scaleType) ? Gradient : isDiscretizing(scaleType) ? Discrete : Symbols;\n }\n return type !== Gradient ? type : isDiscretizing(scaleType) ? Discrete : Gradient;\n}\nfunction scaleCount(spec) {\n return LegendScales.reduce(function (count, type) {\n return count + (spec[type] ? 1 : 0);\n }, 0);\n}\nfunction buildLegendEncode(_, spec, config) {\n var encode = {\n enter: {},\n update: {}\n };\n addEncoders(encode, {\n orient: _('orient'),\n offset: _('offset'),\n padding: _('padding'),\n titlePadding: _('titlePadding'),\n cornerRadius: _('cornerRadius'),\n fill: _('fillColor'),\n stroke: _('strokeColor'),\n strokeWidth: config.strokeWidth,\n strokeDash: config.strokeDash,\n x: _('legendX'),\n y: _('legendY'),\n // accessibility support\n format: spec.format,\n formatType: spec.formatType\n });\n return encode;\n}\nfunction sizeExpression(spec, scope, marks) {\n var size = deref(getChannel('size', spec, marks)),\n strokeWidth = deref(getChannel('strokeWidth', spec, marks)),\n fontSize = deref(getFontSize(marks[1].encode, scope, GuideLabelStyle));\n return parseExpression(\"max(ceil(sqrt(\".concat(size, \")+\").concat(strokeWidth, \"),\").concat(fontSize, \")\"), scope);\n}\nfunction getChannel(name, spec, marks) {\n return spec[name] ? \"scale(\\\"\".concat(spec[name], \"\\\",datum)\") : getEncoding(name, marks[0].encode);\n}\nfunction getFontSize(encode, scope, style) {\n return getEncoding('fontSize', encode) || getStyle('fontSize', scope, style);\n}\nvar angleExpr = \"item.orient===\\\"\".concat(Left, \"\\\"?-90:item.orient===\\\"\").concat(Right, \"\\\"?90:0\");\nfunction parseTitle(spec, scope) {\n spec = isString(spec) ? {\n text: spec\n } : spec;\n var _ = lookup(spec, scope.config.title),\n encode = spec.encode || {},\n userEncode = encode.group || {},\n name = userEncode.name || undefined,\n interactive = userEncode.interactive,\n style = userEncode.style,\n children = [];\n\n // single-element data source for group title\n var datum = {},\n dataRef = ref(scope.add(Collect(null, [datum])));\n\n // include title text\n children.push(buildTitle(spec, _, titleEncode(spec), dataRef));\n\n // include subtitle text\n if (spec.subtitle) {\n children.push(buildSubTitle(spec, _, encode.subtitle, dataRef));\n }\n\n // parse title specification\n return parseMark(guideGroup({\n role: TitleRole,\n from: dataRef,\n encode: groupEncode(_, userEncode),\n marks: children,\n aria: _('aria'),\n description: _('description'),\n zindex: _('zindex'),\n name: name,\n interactive: interactive,\n style: style\n }), scope);\n}\n\n// provide backwards-compatibility for title custom encode;\n// the top-level encode block has been *deprecated*.\nfunction titleEncode(spec) {\n var encode = spec.encode;\n return encode && encode.title || extend({\n name: spec.name,\n interactive: spec.interactive,\n style: spec.style\n }, encode);\n}\nfunction groupEncode(_, userEncode) {\n var encode = {\n enter: {},\n update: {}\n };\n addEncoders(encode, {\n orient: _('orient'),\n anchor: _('anchor'),\n align: {\n signal: alignExpr$1\n },\n angle: {\n signal: angleExpr\n },\n limit: _('limit'),\n frame: _('frame'),\n offset: _('offset') || 0,\n padding: _('subtitlePadding')\n });\n return extendEncode(encode, userEncode, Skip);\n}\nfunction buildTitle(spec, _, userEncode, dataRef) {\n var zero = {\n value: 0\n },\n text = spec.text,\n encode = {\n enter: {\n opacity: zero\n },\n update: {\n opacity: {\n value: 1\n }\n },\n exit: {\n opacity: zero\n }\n };\n addEncoders(encode, {\n text: text,\n align: {\n signal: 'item.mark.group.align'\n },\n angle: {\n signal: 'item.mark.group.angle'\n },\n limit: {\n signal: 'item.mark.group.limit'\n },\n baseline: 'top',\n dx: _('dx'),\n dy: _('dy'),\n fill: _('color'),\n font: _('font'),\n fontSize: _('fontSize'),\n fontStyle: _('fontStyle'),\n fontWeight: _('fontWeight'),\n lineHeight: _('lineHeight')\n }, {\n // update\n align: _('align'),\n angle: _('angle'),\n baseline: _('baseline')\n });\n return guideMark({\n type: TextMark,\n role: TitleTextRole,\n style: GroupTitleStyle,\n from: dataRef,\n encode: encode\n }, userEncode);\n}\nfunction buildSubTitle(spec, _, userEncode, dataRef) {\n var zero = {\n value: 0\n },\n text = spec.subtitle,\n encode = {\n enter: {\n opacity: zero\n },\n update: {\n opacity: {\n value: 1\n }\n },\n exit: {\n opacity: zero\n }\n };\n addEncoders(encode, {\n text: text,\n align: {\n signal: 'item.mark.group.align'\n },\n angle: {\n signal: 'item.mark.group.angle'\n },\n limit: {\n signal: 'item.mark.group.limit'\n },\n baseline: 'top',\n dx: _('dx'),\n dy: _('dy'),\n fill: _('subtitleColor'),\n font: _('subtitleFont'),\n fontSize: _('subtitleFontSize'),\n fontStyle: _('subtitleFontStyle'),\n fontWeight: _('subtitleFontWeight'),\n lineHeight: _('subtitleLineHeight')\n }, {\n // update\n align: _('align'),\n angle: _('angle'),\n baseline: _('baseline')\n });\n return guideMark({\n type: TextMark,\n role: TitleSubtitleRole,\n style: GroupSubtitleStyle,\n from: dataRef,\n encode: encode\n }, userEncode);\n}\nfunction parseData(data, scope) {\n var transforms = [];\n if (data.transform) {\n data.transform.forEach(function (tx) {\n transforms.push(parseTransform(tx, scope));\n });\n }\n if (data.on) {\n data.on.forEach(function (on) {\n parseTrigger(on, scope, data.name);\n });\n }\n scope.addDataPipeline(data.name, analyze(data, scope, transforms));\n}\n\n/**\n * Analyze a data pipeline, add needed operators.\n */\nfunction analyze(data, scope, ops) {\n var output = [];\n var source = null,\n modify = false,\n generate = false,\n upstream,\n i,\n n,\n t,\n m;\n if (data.values) {\n // hard-wired input data set\n if (isSignal(data.values) || hasSignal(data.format)) {\n // if either values is signal or format has signal, use dynamic loader\n output.push(load(scope, data));\n output.push(source = collect());\n } else {\n // otherwise, ingest upon dataflow init\n output.push(source = collect({\n $ingest: data.values,\n $format: data.format\n }));\n }\n } else if (data.url) {\n // load data from external source\n if (hasSignal(data.url) || hasSignal(data.format)) {\n // if either url or format has signal, use dynamic loader\n output.push(load(scope, data));\n output.push(source = collect());\n } else {\n // otherwise, request load upon dataflow init\n output.push(source = collect({\n $request: data.url,\n $format: data.format\n }));\n }\n } else if (data.source) {\n // derives from one or more other data sets\n source = upstream = array(data.source).map(function (d) {\n return ref(scope.getData(d).output);\n });\n output.push(null); // populate later\n }\n\n // scan data transforms, add collectors as needed\n for (i = 0, n = ops.length; i < n; ++i) {\n t = ops[i];\n m = t.metadata;\n if (!source && !m.source) {\n output.push(source = collect());\n }\n output.push(t);\n if (m.generates) generate = true;\n if (m.modifies && !generate) modify = true;\n if (m.source) source = t;else if (m.changes) source = null;\n }\n if (upstream) {\n n = upstream.length - 1;\n output[0] = Relay({\n derive: modify,\n pulse: n ? upstream : upstream[0]\n });\n if (modify || n) {\n // collect derived and multi-pulse tuples\n output.splice(1, 0, collect());\n }\n }\n if (!source) output.push(collect());\n output.push(Sieve({}));\n return output;\n}\nfunction collect(values) {\n var s = Collect({}, values);\n s.metadata = {\n source: true\n };\n return s;\n}\nfunction load(scope, data) {\n return Load({\n url: data.url ? scope.property(data.url) : undefined,\n async: data.async ? scope.property(data.async) : undefined,\n values: data.values ? scope.property(data.values) : undefined,\n format: scope.objectProperty(data.format)\n });\n}\nvar isX = function isX(orient) {\n return orient === Bottom || orient === Top;\n};\n\n// get sign coefficient based on axis orient\nvar getSign = function getSign(orient, a, b) {\n return isSignal(orient) ? ifLeftTopExpr(orient.signal, a, b) : orient === Left || orient === Top ? a : b;\n};\n\n// condition on axis x-direction\nvar ifX = function ifX(orient, a, b) {\n return isSignal(orient) ? ifXEnc(orient.signal, a, b) : isX(orient) ? a : b;\n};\n\n// condition on axis y-direction\nvar ifY = function ifY(orient, a, b) {\n return isSignal(orient) ? ifYEnc(orient.signal, a, b) : isX(orient) ? b : a;\n};\nvar ifTop = function ifTop(orient, a, b) {\n return isSignal(orient) ? ifTopExpr(orient.signal, a, b) : orient === Top ? {\n value: a\n } : {\n value: b\n };\n};\nvar ifRight = function ifRight(orient, a, b) {\n return isSignal(orient) ? ifRightExpr(orient.signal, a, b) : orient === Right ? {\n value: a\n } : {\n value: b\n };\n};\nvar ifXEnc = function ifXEnc($orient, a, b) {\n return ifEnc(\"\".concat($orient, \" === '\").concat(Top, \"' || \").concat($orient, \" === '\").concat(Bottom, \"'\"), a, b);\n};\nvar ifYEnc = function ifYEnc($orient, a, b) {\n return ifEnc(\"\".concat($orient, \" !== '\").concat(Top, \"' && \").concat($orient, \" !== '\").concat(Bottom, \"'\"), a, b);\n};\nvar ifLeftTopExpr = function ifLeftTopExpr($orient, a, b) {\n return ifExpr(\"\".concat($orient, \" === '\").concat(Left, \"' || \").concat($orient, \" === '\").concat(Top, \"'\"), a, b);\n};\nvar ifTopExpr = function ifTopExpr($orient, a, b) {\n return ifExpr(\"\".concat($orient, \" === '\").concat(Top, \"'\"), a, b);\n};\nvar ifRightExpr = function ifRightExpr($orient, a, b) {\n return ifExpr(\"\".concat($orient, \" === '\").concat(Right, \"'\"), a, b);\n};\nvar ifEnc = function ifEnc(test, a, b) {\n // ensure inputs are encoder objects (or null)\n a = a != null ? encoder(a) : a;\n b = b != null ? encoder(b) : b;\n if (isSimple(a) && isSimple(b)) {\n // if possible generate simple signal expression\n a = a ? a.signal || stringValue(a.value) : null;\n b = b ? b.signal || stringValue(b.value) : null;\n return {\n signal: \"\".concat(test, \" ? (\").concat(a, \") : (\").concat(b, \")\")\n };\n } else {\n // otherwise generate rule set\n return [extend({\n test: test\n }, a)].concat(b || []);\n }\n};\nvar isSimple = function isSimple(enc) {\n return enc == null || Object.keys(enc).length === 1;\n};\nvar ifExpr = function ifExpr(test, a, b) {\n return {\n signal: \"\".concat(test, \" ? (\").concat(toExpr(a), \") : (\").concat(toExpr(b), \")\")\n };\n};\nvar ifOrient = function ifOrient($orient, t, b, l, r) {\n return {\n signal: (l != null ? \"\".concat($orient, \" === '\").concat(Left, \"' ? (\").concat(toExpr(l), \") : \") : '') + (b != null ? \"\".concat($orient, \" === '\").concat(Bottom, \"' ? (\").concat(toExpr(b), \") : \") : '') + (r != null ? \"\".concat($orient, \" === '\").concat(Right, \"' ? (\").concat(toExpr(r), \") : \") : '') + (t != null ? \"\".concat($orient, \" === '\").concat(Top, \"' ? (\").concat(toExpr(t), \") : \") : '') + '(null)'\n };\n};\nvar toExpr = function toExpr(v) {\n return isSignal(v) ? v.signal : v == null ? null : stringValue(v);\n};\nvar mult = function mult(sign, value) {\n return value === 0 ? 0 : isSignal(sign) ? {\n signal: \"(\".concat(sign.signal, \") * \").concat(value)\n } : {\n value: sign * value\n };\n};\nvar patch = function patch(value, base) {\n var s = value.signal;\n return s && s.endsWith('(null)') ? {\n signal: s.slice(0, -6) + base.signal\n } : value;\n};\nfunction fallback(prop, config, axisConfig, style) {\n var styleProp;\n if (config && hasOwnProperty(config, prop)) {\n return config[prop];\n } else if (hasOwnProperty(axisConfig, prop)) {\n return axisConfig[prop];\n } else if (prop.startsWith('title')) {\n switch (prop) {\n case 'titleColor':\n styleProp = 'fill';\n break;\n case 'titleFont':\n case 'titleFontSize':\n case 'titleFontWeight':\n styleProp = prop[5].toLowerCase() + prop.slice(6);\n }\n return style[GuideTitleStyle][styleProp];\n } else if (prop.startsWith('label')) {\n switch (prop) {\n case 'labelColor':\n styleProp = 'fill';\n break;\n case 'labelFont':\n case 'labelFontSize':\n styleProp = prop[5].toLowerCase() + prop.slice(6);\n }\n return style[GuideLabelStyle][styleProp];\n }\n return null;\n}\nfunction keys(objects) {\n var map = {};\n var _iterator = _createForOfIteratorHelper(objects),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var obj = _step.value;\n if (!obj) continue;\n for (var key in obj) map[key] = 1;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return Object.keys(map);\n}\nfunction axisConfig(spec, scope) {\n var config = scope.config,\n style = config.style,\n axis = config.axis,\n band = scope.scaleType(spec.scale) === 'band' && config.axisBand,\n orient = spec.orient,\n xy,\n or,\n key;\n if (isSignal(orient)) {\n var xyKeys = keys([config.axisX, config.axisY]),\n orientKeys = keys([config.axisTop, config.axisBottom, config.axisLeft, config.axisRight]);\n xy = {};\n var _iterator2 = _createForOfIteratorHelper(xyKeys),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n key = _step2.value;\n xy[key] = ifX(orient, fallback(key, config.axisX, axis, style), fallback(key, config.axisY, axis, style));\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n or = {};\n var _iterator3 = _createForOfIteratorHelper(orientKeys),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n key = _step3.value;\n or[key] = ifOrient(orient.signal, fallback(key, config.axisTop, axis, style), fallback(key, config.axisBottom, axis, style), fallback(key, config.axisLeft, axis, style), fallback(key, config.axisRight, axis, style));\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n } else {\n xy = orient === Top || orient === Bottom ? config.axisX : config.axisY;\n or = config['axis' + orient[0].toUpperCase() + orient.slice(1)];\n }\n var result = xy || or || band ? extend({}, axis, xy, or, band) : axis;\n return result;\n}\nfunction axisDomain(spec, config, userEncode, dataRef) {\n var _ = lookup(spec, config),\n orient = spec.orient;\n var enter, update;\n var encode = {\n enter: enter = {\n opacity: zero\n },\n update: update = {\n opacity: one\n },\n exit: {\n opacity: zero\n }\n };\n addEncoders(encode, {\n stroke: _('domainColor'),\n strokeCap: _('domainCap'),\n strokeDash: _('domainDash'),\n strokeDashOffset: _('domainDashOffset'),\n strokeWidth: _('domainWidth'),\n strokeOpacity: _('domainOpacity')\n });\n var pos0 = position(spec, 0);\n var pos1 = position(spec, 1);\n enter.x = update.x = ifX(orient, pos0, zero);\n enter.x2 = update.x2 = ifX(orient, pos1);\n enter.y = update.y = ifY(orient, pos0, zero);\n enter.y2 = update.y2 = ifY(orient, pos1);\n return guideMark({\n type: RuleMark,\n role: AxisDomainRole,\n from: dataRef,\n encode: encode\n }, userEncode);\n}\nfunction position(spec, pos) {\n return {\n scale: spec.scale,\n range: pos\n };\n}\nfunction axisGrid(spec, config, userEncode, dataRef, band) {\n var _ = lookup(spec, config),\n orient = spec.orient,\n vscale = spec.gridScale,\n sign = getSign(orient, 1, -1),\n offset = offsetValue(spec.offset, sign);\n var enter, exit, update;\n var encode = {\n enter: enter = {\n opacity: zero\n },\n update: update = {\n opacity: one\n },\n exit: exit = {\n opacity: zero\n }\n };\n addEncoders(encode, {\n stroke: _('gridColor'),\n strokeCap: _('gridCap'),\n strokeDash: _('gridDash'),\n strokeDashOffset: _('gridDashOffset'),\n strokeOpacity: _('gridOpacity'),\n strokeWidth: _('gridWidth')\n });\n var tickPos = {\n scale: spec.scale,\n field: Value,\n band: band.band,\n extra: band.extra,\n offset: band.offset,\n round: _('tickRound')\n };\n var sz = ifX(orient, {\n signal: 'height'\n }, {\n signal: 'width'\n });\n var gridStart = vscale ? {\n scale: vscale,\n range: 0,\n mult: sign,\n offset: offset\n } : {\n value: 0,\n offset: offset\n };\n var gridEnd = vscale ? {\n scale: vscale,\n range: 1,\n mult: sign,\n offset: offset\n } : extend(sz, {\n mult: sign,\n offset: offset\n });\n enter.x = update.x = ifX(orient, tickPos, gridStart);\n enter.y = update.y = ifY(orient, tickPos, gridStart);\n enter.x2 = update.x2 = ifY(orient, gridEnd);\n enter.y2 = update.y2 = ifX(orient, gridEnd);\n exit.x = ifX(orient, tickPos);\n exit.y = ifY(orient, tickPos);\n return guideMark({\n type: RuleMark,\n role: AxisGridRole,\n key: Value,\n from: dataRef,\n encode: encode\n }, userEncode);\n}\nfunction offsetValue(offset, sign) {\n if (sign === 1) ;else if (!isObject(offset)) {\n offset = isSignal(sign) ? {\n signal: \"(\".concat(sign.signal, \") * (\").concat(offset || 0, \")\")\n } : sign * (offset || 0);\n } else {\n var _entry = offset = extend({}, offset);\n while (_entry.mult != null) {\n if (!isObject(_entry.mult)) {\n _entry.mult = isSignal(sign) // no offset if sign === 1\n ? {\n signal: \"(\".concat(_entry.mult, \") * (\").concat(sign.signal, \")\")\n } : _entry.mult * sign;\n return offset;\n } else {\n _entry = _entry.mult = extend({}, _entry.mult);\n }\n }\n _entry.mult = sign;\n }\n return offset;\n}\nfunction axisTicks(spec, config, userEncode, dataRef, size, band) {\n var _ = lookup(spec, config),\n orient = spec.orient,\n sign = getSign(orient, -1, 1);\n var enter, exit, update;\n var encode = {\n enter: enter = {\n opacity: zero\n },\n update: update = {\n opacity: one\n },\n exit: exit = {\n opacity: zero\n }\n };\n addEncoders(encode, {\n stroke: _('tickColor'),\n strokeCap: _('tickCap'),\n strokeDash: _('tickDash'),\n strokeDashOffset: _('tickDashOffset'),\n strokeOpacity: _('tickOpacity'),\n strokeWidth: _('tickWidth')\n });\n var tickSize = encoder(size);\n tickSize.mult = sign;\n var tickPos = {\n scale: spec.scale,\n field: Value,\n band: band.band,\n extra: band.extra,\n offset: band.offset,\n round: _('tickRound')\n };\n update.y = enter.y = ifX(orient, zero, tickPos);\n update.y2 = enter.y2 = ifX(orient, tickSize);\n exit.x = ifX(orient, tickPos);\n update.x = enter.x = ifY(orient, zero, tickPos);\n update.x2 = enter.x2 = ifY(orient, tickSize);\n exit.y = ifY(orient, tickPos);\n return guideMark({\n type: RuleMark,\n role: AxisTickRole,\n key: Value,\n from: dataRef,\n encode: encode\n }, userEncode);\n}\nfunction flushExpr(scale, threshold, a, b, c) {\n return {\n signal: 'flush(range(\"' + scale + '\"), ' + 'scale(\"' + scale + '\", datum.value), ' + threshold + ',' + a + ',' + b + ',' + c + ')'\n };\n}\nfunction axisLabels(spec, config, userEncode, dataRef, size, band) {\n var _ = lookup(spec, config),\n orient = spec.orient,\n scale = spec.scale,\n sign = getSign(orient, -1, 1),\n flush = deref(_('labelFlush')),\n flushOffset = deref(_('labelFlushOffset')),\n labelAlign = _('labelAlign'),\n labelBaseline = _('labelBaseline');\n var flushOn = flush === 0 || !!flush,\n update;\n var tickSize = encoder(size);\n tickSize.mult = sign;\n tickSize.offset = encoder(_('labelPadding') || 0);\n tickSize.offset.mult = sign;\n var tickPos = {\n scale: scale,\n field: Value,\n band: 0.5,\n offset: extendOffset(band.offset, _('labelOffset'))\n };\n var align = ifX(orient, flushOn ? flushExpr(scale, flush, '\"left\"', '\"right\"', '\"center\"') : {\n value: 'center'\n }, ifRight(orient, 'left', 'right'));\n var baseline = ifX(orient, ifTop(orient, 'bottom', 'top'), flushOn ? flushExpr(scale, flush, '\"top\"', '\"bottom\"', '\"middle\"') : {\n value: 'middle'\n });\n var offsetExpr = flushExpr(scale, flush, \"-(\".concat(flushOffset, \")\"), flushOffset, 0);\n flushOn = flushOn && flushOffset;\n var enter = {\n opacity: zero,\n x: ifX(orient, tickPos, tickSize),\n y: ifY(orient, tickPos, tickSize)\n };\n var encode = {\n enter: enter,\n update: update = {\n opacity: one,\n text: {\n field: Label\n },\n x: enter.x,\n y: enter.y,\n align: align,\n baseline: baseline\n },\n exit: {\n opacity: zero,\n x: enter.x,\n y: enter.y\n }\n };\n addEncoders(encode, {\n dx: !labelAlign && flushOn ? ifX(orient, offsetExpr) : null,\n dy: !labelBaseline && flushOn ? ifY(orient, offsetExpr) : null\n });\n addEncoders(encode, {\n angle: _('labelAngle'),\n fill: _('labelColor'),\n fillOpacity: _('labelOpacity'),\n font: _('labelFont'),\n fontSize: _('labelFontSize'),\n fontWeight: _('labelFontWeight'),\n fontStyle: _('labelFontStyle'),\n limit: _('labelLimit'),\n lineHeight: _('labelLineHeight')\n }, {\n align: labelAlign,\n baseline: labelBaseline\n });\n var bound = _('labelBound');\n var overlap = _('labelOverlap');\n\n // if overlap method or bound defined, request label overlap removal\n overlap = overlap || bound ? {\n separation: _('labelSeparation'),\n method: overlap,\n order: 'datum.index',\n bound: bound ? {\n scale: scale,\n orient: orient,\n tolerance: bound\n } : null\n } : undefined;\n if (update.align !== align) {\n update.align = patch(update.align, align);\n }\n if (update.baseline !== baseline) {\n update.baseline = patch(update.baseline, baseline);\n }\n return guideMark({\n type: TextMark,\n role: AxisLabelRole,\n style: GuideLabelStyle,\n key: Value,\n from: dataRef,\n encode: encode,\n overlap: overlap\n }, userEncode);\n}\nfunction axisTitle(spec, config, userEncode, dataRef) {\n var _ = lookup(spec, config),\n orient = spec.orient,\n sign = getSign(orient, -1, 1);\n var enter, update;\n var encode = {\n enter: enter = {\n opacity: zero,\n anchor: encoder(_('titleAnchor', null)),\n align: {\n signal: alignExpr$1\n }\n },\n update: update = extend({}, enter, {\n opacity: one,\n text: encoder(spec.title)\n }),\n exit: {\n opacity: zero\n }\n };\n var titlePos = {\n signal: \"lerp(range(\\\"\".concat(spec.scale, \"\\\"), \").concat(anchorExpr(0, 1, 0.5), \")\")\n };\n update.x = ifX(orient, titlePos);\n update.y = ifY(orient, titlePos);\n enter.angle = ifX(orient, zero, mult(sign, 90));\n enter.baseline = ifX(orient, ifTop(orient, Bottom, Top), {\n value: Bottom\n });\n update.angle = enter.angle;\n update.baseline = enter.baseline;\n addEncoders(encode, {\n fill: _('titleColor'),\n fillOpacity: _('titleOpacity'),\n font: _('titleFont'),\n fontSize: _('titleFontSize'),\n fontStyle: _('titleFontStyle'),\n fontWeight: _('titleFontWeight'),\n limit: _('titleLimit'),\n lineHeight: _('titleLineHeight')\n }, {\n // require update\n align: _('titleAlign'),\n angle: _('titleAngle'),\n baseline: _('titleBaseline')\n });\n autoLayout(_, orient, encode, userEncode);\n encode.update.align = patch(encode.update.align, enter.align);\n encode.update.angle = patch(encode.update.angle, enter.angle);\n encode.update.baseline = patch(encode.update.baseline, enter.baseline);\n return guideMark({\n type: TextMark,\n role: AxisTitleRole,\n style: GuideTitleStyle,\n from: dataRef,\n encode: encode\n }, userEncode);\n}\nfunction autoLayout(_, orient, encode, userEncode) {\n var auto = function auto(value, dim) {\n return value != null ? (encode.update[dim] = patch(encoder(value), encode.update[dim]), false) : !has(dim, userEncode) ? true : false;\n };\n var autoY = auto(_('titleX'), 'x'),\n autoX = auto(_('titleY'), 'y');\n encode.enter.auto = autoX === autoY ? encoder(autoX) : ifX(orient, encoder(autoX), encoder(autoY));\n}\nfunction parseAxis(spec, scope) {\n var config = axisConfig(spec, scope),\n encode = spec.encode || {},\n axisEncode = encode.axis || {},\n name = axisEncode.name || undefined,\n interactive = axisEncode.interactive,\n style = axisEncode.style,\n _ = lookup(spec, config),\n band = tickBand(_);\n\n // single-element data source for axis group\n var datum = {\n scale: spec.scale,\n ticks: !!_('ticks'),\n labels: !!_('labels'),\n grid: !!_('grid'),\n domain: !!_('domain'),\n title: spec.title != null\n };\n var dataRef = ref(scope.add(Collect({}, [datum])));\n\n // data source for axis ticks\n var ticksRef = ref(scope.add(AxisTicks({\n scale: scope.scaleRef(spec.scale),\n extra: scope.property(band.extra),\n count: scope.objectProperty(spec.tickCount),\n values: scope.objectProperty(spec.values),\n minstep: scope.property(spec.tickMinStep),\n formatType: scope.property(spec.formatType),\n formatSpecifier: scope.property(spec.format)\n })));\n\n // generate axis marks\n var children = [];\n var size;\n\n // include axis gridlines if requested\n if (datum.grid) {\n children.push(axisGrid(spec, config, encode.grid, ticksRef, band));\n }\n\n // include axis ticks if requested\n if (datum.ticks) {\n size = _('tickSize');\n children.push(axisTicks(spec, config, encode.ticks, ticksRef, size, band));\n }\n\n // include axis labels if requested\n if (datum.labels) {\n size = datum.ticks ? size : 0;\n children.push(axisLabels(spec, config, encode.labels, ticksRef, size, band));\n }\n\n // include axis domain path if requested\n if (datum.domain) {\n children.push(axisDomain(spec, config, encode.domain, dataRef));\n }\n\n // include axis title if defined\n if (datum.title) {\n children.push(axisTitle(spec, config, encode.title, dataRef));\n }\n\n // parse axis specification\n return parseMark(guideGroup({\n role: AxisRole,\n from: dataRef,\n encode: extendEncode(buildAxisEncode(_, spec), axisEncode, Skip),\n marks: children,\n aria: _('aria'),\n description: _('description'),\n zindex: _('zindex'),\n name: name,\n interactive: interactive,\n style: style\n }), scope);\n}\nfunction buildAxisEncode(_, spec) {\n var encode = {\n enter: {},\n update: {}\n };\n addEncoders(encode, {\n orient: _('orient'),\n offset: _('offset') || 0,\n position: value(spec.position, 0),\n titlePadding: _('titlePadding'),\n minExtent: _('minExtent'),\n maxExtent: _('maxExtent'),\n range: {\n signal: \"abs(span(range(\\\"\".concat(spec.scale, \"\\\")))\")\n },\n translate: _('translate'),\n // accessibility support\n format: spec.format,\n formatType: spec.formatType\n });\n return encode;\n}\nfunction parseScope(spec, scope, preprocessed) {\n var signals = array(spec.signals),\n scales = array(spec.scales);\n\n // parse signal definitions, if not already preprocessed\n if (!preprocessed) signals.forEach(function (_) {\n return parseSignal(_, scope);\n });\n\n // parse cartographic projection definitions\n array(spec.projections).forEach(function (_) {\n return parseProjection(_, scope);\n });\n\n // initialize scale references\n scales.forEach(function (_) {\n return initScale(_, scope);\n });\n\n // parse data sources\n array(spec.data).forEach(function (_) {\n return parseData(_, scope);\n });\n\n // parse scale definitions\n scales.forEach(function (_) {\n return parseScale(_, scope);\n });\n\n // parse signal updates\n (preprocessed || signals).forEach(function (_) {\n return parseSignalUpdates(_, scope);\n });\n\n // parse axis definitions\n array(spec.axes).forEach(function (_) {\n return parseAxis(_, scope);\n });\n\n // parse mark definitions\n array(spec.marks).forEach(function (_) {\n return parseMark(_, scope);\n });\n\n // parse legend definitions\n array(spec.legends).forEach(function (_) {\n return parseLegend(_, scope);\n });\n\n // parse title, if defined\n if (spec.title) parseTitle(spec.title, scope);\n\n // parse collected lambda (anonymous) expressions\n scope.parseLambdas();\n return scope;\n}\nvar rootEncode = function rootEncode(spec) {\n return extendEncode({\n enter: {\n x: {\n value: 0\n },\n y: {\n value: 0\n }\n },\n update: {\n width: {\n signal: 'width'\n },\n height: {\n signal: 'height'\n }\n }\n }, spec);\n};\nfunction parseView(spec, scope) {\n var config = scope.config;\n\n // add scenegraph root\n var root = ref(scope.root = scope.add(operator()));\n\n // parse top-level signal definitions\n var signals = collectSignals(spec, config);\n signals.forEach(function (_) {\n return parseSignal(_, scope);\n });\n\n // assign description, event, legend, and locale configuration\n scope.description = spec.description || config.description;\n scope.eventConfig = config.events;\n scope.legends = scope.objectProperty(config.legend && config.legend.layout);\n scope.locale = config.locale;\n\n // store root group item\n var input = scope.add(Collect());\n\n // encode root group item\n var encode = scope.add(Encode(parseEncode(rootEncode(spec.encode), GroupMark, FrameRole, spec.style, scope, {\n pulse: ref(input)\n })));\n\n // perform view layout\n var parent = scope.add(ViewLayout({\n layout: scope.objectProperty(spec.layout),\n legends: scope.legends,\n autosize: scope.signalRef('autosize'),\n mark: root,\n pulse: ref(encode)\n }));\n scope.operators.pop();\n\n // parse remainder of specification\n scope.pushState(ref(encode), ref(parent), null);\n parseScope(spec, scope, signals);\n scope.operators.push(parent);\n\n // bound / render / sieve root item\n var op = scope.add(Bound({\n mark: root,\n pulse: ref(parent)\n }));\n op = scope.add(Render({\n pulse: ref(op)\n }));\n op = scope.add(Sieve({\n pulse: ref(op)\n }));\n\n // track metadata for root item\n scope.addData('root', new DataScope(scope, input, input, op));\n return scope;\n}\nfunction signalObject(name, value) {\n return value && value.signal ? {\n name: name,\n update: value.signal\n } : {\n name: name,\n value: value\n };\n}\n\n/**\n * Collect top-level signals, merging values as needed. Signals\n * defined in the config signals arrays are added only if that\n * signal is not explicitly defined in the specification.\n * Built-in signals (autosize, background, padding, width, height)\n * receive special treatment. They are initialized using the\n * top-level spec property, or, if undefined in the spec, using\n * the corresponding top-level config property. If this property\n * is a signal reference object, the signal expression maps to the\n * signal 'update' property. If the spec's top-level signal array\n * contains an entry that matches a built-in signal, that entry\n * will be merged with the built-in specification, potentially\n * overwriting existing 'value' or 'update' properties.\n */\nfunction collectSignals(spec, config) {\n var _ = function _(name) {\n return value(spec[name], config[name]);\n },\n signals = [signalObject('background', _('background')), signalObject('autosize', parseAutosize(_('autosize'))), signalObject('padding', parsePadding(_('padding'))), signalObject('width', _('width') || 0), signalObject('height', _('height') || 0)],\n pre = signals.reduce(function (p, s) {\n return p[s.name] = s, p;\n }, {}),\n map = {};\n\n // add spec signal array\n array(spec.signals).forEach(function (s) {\n if (hasOwnProperty(pre, s.name)) {\n // merge if built-in signal\n s = extend(pre[s.name], s);\n } else {\n // otherwise add to signal list\n signals.push(s);\n }\n map[s.name] = s;\n });\n\n // add config signal array\n array(config.signals).forEach(function (s) {\n if (!hasOwnProperty(map, s.name) && !hasOwnProperty(pre, s.name)) {\n // add to signal list if not already defined\n signals.push(s);\n }\n });\n return signals;\n}\nfunction Scope(config, options) {\n this.config = config || {};\n this.options = options || {};\n this.bindings = [];\n this.field = {};\n this.signals = {};\n this.lambdas = {};\n this.scales = {};\n this.events = {};\n this.data = {};\n this.streams = [];\n this.updates = [];\n this.operators = [];\n this.eventConfig = null;\n this.locale = null;\n this._id = 0;\n this._subid = 0;\n this._nextsub = [0];\n this._parent = [];\n this._encode = [];\n this._lookup = [];\n this._markpath = [];\n}\nfunction Subscope(scope) {\n this.config = scope.config;\n this.options = scope.options;\n this.legends = scope.legends;\n this.field = Object.create(scope.field);\n this.signals = Object.create(scope.signals);\n this.lambdas = Object.create(scope.lambdas);\n this.scales = Object.create(scope.scales);\n this.events = Object.create(scope.events);\n this.data = Object.create(scope.data);\n this.streams = [];\n this.updates = [];\n this.operators = [];\n this._id = 0;\n this._subid = ++scope._nextsub[0];\n this._nextsub = scope._nextsub;\n this._parent = scope._parent.slice();\n this._encode = scope._encode.slice();\n this._lookup = scope._lookup.slice();\n this._markpath = scope._markpath;\n}\nScope.prototype = Subscope.prototype = {\n parse: function parse(spec) {\n return parseScope(spec, this);\n },\n fork: function fork() {\n return new Subscope(this);\n },\n isSubscope: function isSubscope() {\n return this._subid > 0;\n },\n toRuntime: function toRuntime() {\n this.finish();\n return {\n description: this.description,\n operators: this.operators,\n streams: this.streams,\n updates: this.updates,\n bindings: this.bindings,\n eventConfig: this.eventConfig,\n locale: this.locale\n };\n },\n id: function id() {\n return (this._subid ? this._subid + ':' : 0) + this._id++;\n },\n add: function add(op) {\n this.operators.push(op);\n op.id = this.id();\n // if pre-registration references exist, resolve them now\n if (op.refs) {\n op.refs.forEach(function (ref) {\n ref.$ref = op.id;\n });\n op.refs = null;\n }\n return op;\n },\n proxy: function proxy(op) {\n var vref = op instanceof Entry ? ref(op) : op;\n return this.add(Proxy({\n value: vref\n }));\n },\n addStream: function addStream(stream) {\n this.streams.push(stream);\n stream.id = this.id();\n return stream;\n },\n addUpdate: function addUpdate(update) {\n this.updates.push(update);\n return update;\n },\n // Apply metadata\n finish: function finish() {\n var name, ds;\n\n // annotate root\n if (this.root) this.root.root = true;\n\n // annotate signals\n for (name in this.signals) {\n this.signals[name].signal = name;\n }\n\n // annotate scales\n for (name in this.scales) {\n this.scales[name].scale = name;\n }\n\n // annotate data sets\n function annotate(op, name, type) {\n var data, list;\n if (op) {\n data = op.data || (op.data = {});\n list = data[name] || (data[name] = []);\n list.push(type);\n }\n }\n for (name in this.data) {\n ds = this.data[name];\n annotate(ds.input, name, 'input');\n annotate(ds.output, name, 'output');\n annotate(ds.values, name, 'values');\n for (var _field in ds.index) {\n annotate(ds.index[_field], name, 'index:' + _field);\n }\n }\n return this;\n },\n // ----\n pushState: function pushState(encode, parent, lookup) {\n this._encode.push(ref(this.add(Sieve({\n pulse: encode\n }))));\n this._parent.push(parent);\n this._lookup.push(lookup ? ref(this.proxy(lookup)) : null);\n this._markpath.push(-1);\n },\n popState: function popState() {\n this._encode.pop();\n this._parent.pop();\n this._lookup.pop();\n this._markpath.pop();\n },\n parent: function parent() {\n return peek(this._parent);\n },\n encode: function encode() {\n return peek(this._encode);\n },\n lookup: function lookup() {\n return peek(this._lookup);\n },\n markpath: function markpath() {\n var p = this._markpath;\n return ++p[p.length - 1];\n },\n // ----\n fieldRef: function fieldRef(field, name) {\n if (isString(field)) return fieldRef$1(field, name);\n if (!field.signal) {\n error('Unsupported field reference: ' + stringValue(field));\n }\n var s = field.signal;\n var f = this.field[s];\n if (!f) {\n var params = {\n name: this.signalRef(s)\n };\n if (name) params.as = name;\n this.field[s] = f = ref(this.add(Field(params)));\n }\n return f;\n },\n compareRef: function compareRef(cmp) {\n var _this = this;\n var signal = false;\n var check = function check(_) {\n return isSignal(_) ? (signal = true, _this.signalRef(_.signal)) : isExpr$1(_) ? (signal = true, _this.exprRef(_.expr)) : _;\n };\n var fields = array(cmp.field).map(check),\n orders = array(cmp.order).map(check);\n return signal ? ref(this.add(Compare({\n fields: fields,\n orders: orders\n }))) : _compareRef(fields, orders);\n },\n keyRef: function keyRef(fields, flat) {\n var signal = false;\n var check = function check(_) {\n return isSignal(_) ? (signal = true, ref(sig[_.signal])) : _;\n };\n var sig = this.signals;\n fields = array(fields).map(check);\n return signal ? ref(this.add(Key({\n fields: fields,\n flat: flat\n }))) : _keyRef(fields, flat);\n },\n sortRef: function sortRef(sort) {\n if (!sort) return sort;\n\n // including id ensures stable sorting\n var a = aggrField(sort.op, sort.field),\n o = sort.order || Ascending;\n return o.signal ? ref(this.add(Compare({\n fields: a,\n orders: this.signalRef(o.signal)\n }))) : _compareRef(a, o);\n },\n // ----\n event: function event(source, type) {\n var key = source + ':' + type;\n if (!this.events[key]) {\n var id = this.id();\n this.streams.push({\n id: id,\n source: source,\n type: type\n });\n this.events[key] = id;\n }\n return this.events[key];\n },\n // ----\n hasOwnSignal: function hasOwnSignal(name) {\n return hasOwnProperty(this.signals, name);\n },\n addSignal: function addSignal(name, value) {\n if (this.hasOwnSignal(name)) {\n error('Duplicate signal name: ' + stringValue(name));\n }\n var op = value instanceof Entry ? value : this.add(operator(value));\n return this.signals[name] = op;\n },\n getSignal: function getSignal(name) {\n if (!this.signals[name]) {\n error('Unrecognized signal name: ' + stringValue(name));\n }\n return this.signals[name];\n },\n signalRef: function signalRef(s) {\n if (this.signals[s]) {\n return ref(this.signals[s]);\n } else if (!hasOwnProperty(this.lambdas, s)) {\n this.lambdas[s] = this.add(operator(null));\n }\n return ref(this.lambdas[s]);\n },\n parseLambdas: function parseLambdas() {\n var code = Object.keys(this.lambdas);\n for (var i = 0, n = code.length; i < n; ++i) {\n var s = code[i],\n e = parseExpression(s, this),\n op = this.lambdas[s];\n op.params = e.$params;\n op.update = e.$expr;\n }\n },\n property: function property(spec) {\n return spec && spec.signal ? this.signalRef(spec.signal) : spec;\n },\n objectProperty: function objectProperty(spec) {\n return !spec || !isObject(spec) ? spec : this.signalRef(spec.signal || propertyLambda(spec));\n },\n exprRef: function exprRef(code, name) {\n var params = {\n expr: parseExpression(code, this)\n };\n if (name) params.expr.$name = name;\n return ref(this.add(Expression(params)));\n },\n addBinding: function addBinding(name, bind) {\n if (!this.bindings) {\n error('Nested signals do not support binding: ' + stringValue(name));\n }\n this.bindings.push(extend({\n signal: name\n }, bind));\n },\n // ----\n addScaleProj: function addScaleProj(name, transform) {\n if (hasOwnProperty(this.scales, name)) {\n error('Duplicate scale or projection name: ' + stringValue(name));\n }\n this.scales[name] = this.add(transform);\n },\n addScale: function addScale(name, params) {\n this.addScaleProj(name, Scale(params));\n },\n addProjection: function addProjection(name, params) {\n this.addScaleProj(name, Projection(params));\n },\n getScale: function getScale(name) {\n if (!this.scales[name]) {\n error('Unrecognized scale name: ' + stringValue(name));\n }\n return this.scales[name];\n },\n scaleRef: function scaleRef(name) {\n return ref(this.getScale(name));\n },\n scaleType: function scaleType(name) {\n return this.getScale(name).params.type;\n },\n projectionRef: function projectionRef(name) {\n return this.scaleRef(name);\n },\n projectionType: function projectionType(name) {\n return this.scaleType(name);\n },\n // ----\n addData: function addData(name, dataScope) {\n if (hasOwnProperty(this.data, name)) {\n error('Duplicate data set name: ' + stringValue(name));\n }\n return this.data[name] = dataScope;\n },\n getData: function getData(name) {\n if (!this.data[name]) {\n error('Undefined data set name: ' + stringValue(name));\n }\n return this.data[name];\n },\n addDataPipeline: function addDataPipeline(name, entries) {\n if (hasOwnProperty(this.data, name)) {\n error('Duplicate data set name: ' + stringValue(name));\n }\n return this.addData(name, DataScope.fromEntries(this, entries));\n }\n};\nfunction propertyLambda(spec) {\n return (isArray(spec) ? arrayLambda : objectLambda)(spec);\n}\nfunction arrayLambda(array) {\n var n = array.length;\n var code = '[';\n for (var i = 0; i < n; ++i) {\n var _value = array[i];\n code += (i > 0 ? ',' : '') + (isObject(_value) ? _value.signal || propertyLambda(_value) : stringValue(_value));\n }\n return code + ']';\n}\nfunction objectLambda(obj) {\n var code = '{',\n i = 0,\n key,\n value;\n for (key in obj) {\n value = obj[key];\n code += (++i > 1 ? ',' : '') + stringValue(key) + ':' + (isObject(value) ? value.signal || propertyLambda(value) : stringValue(value));\n }\n return code + '}';\n}\n\n/**\n * Standard configuration defaults for Vega specification parsing.\n * Users can provide their own (sub-)set of these default values\n * by passing in a config object to the top-level parse method.\n */\nfunction defaults() {\n var defaultFont = 'sans-serif',\n defaultSymbolSize = 30,\n defaultStrokeWidth = 2,\n defaultColor = '#4c78a8',\n black = '#000',\n gray = '#888',\n lightGray = '#ddd';\n return {\n // default visualization description\n description: 'Vega visualization',\n // default padding around visualization\n padding: 0,\n // default for automatic sizing; options: 'none', 'pad', 'fit'\n // or provide an object (e.g., {'type': 'pad', 'resize': true})\n autosize: 'pad',\n // default view background color\n // covers the entire view component\n background: null,\n // default event handling configuration\n // preventDefault for view-sourced event types except 'wheel'\n events: {\n defaults: {\n allow: ['wheel']\n }\n },\n // defaults for top-level group marks\n // accepts mark properties (fill, stroke, etc)\n // covers the data rectangle within group width/height\n group: null,\n // defaults for basic mark types\n // each subset accepts mark properties (fill, stroke, etc)\n mark: null,\n arc: {\n fill: defaultColor\n },\n area: {\n fill: defaultColor\n },\n image: null,\n line: {\n stroke: defaultColor,\n strokeWidth: defaultStrokeWidth\n },\n path: {\n stroke: defaultColor\n },\n rect: {\n fill: defaultColor\n },\n rule: {\n stroke: black\n },\n shape: {\n stroke: defaultColor\n },\n symbol: {\n fill: defaultColor,\n size: 64\n },\n text: {\n fill: black,\n font: defaultFont,\n fontSize: 11\n },\n trail: {\n fill: defaultColor,\n size: defaultStrokeWidth\n },\n // style definitions\n style: {\n // axis & legend labels\n 'guide-label': {\n fill: black,\n font: defaultFont,\n fontSize: 10\n },\n // axis & legend titles\n 'guide-title': {\n fill: black,\n font: defaultFont,\n fontSize: 11,\n fontWeight: 'bold'\n },\n // headers, including chart title\n 'group-title': {\n fill: black,\n font: defaultFont,\n fontSize: 13,\n fontWeight: 'bold'\n },\n // chart subtitle\n 'group-subtitle': {\n fill: black,\n font: defaultFont,\n fontSize: 12\n },\n // defaults for styled point marks in Vega-Lite\n point: {\n size: defaultSymbolSize,\n strokeWidth: defaultStrokeWidth,\n shape: 'circle'\n },\n circle: {\n size: defaultSymbolSize,\n strokeWidth: defaultStrokeWidth\n },\n square: {\n size: defaultSymbolSize,\n strokeWidth: defaultStrokeWidth,\n shape: 'square'\n },\n // defaults for styled group marks in Vega-Lite\n cell: {\n fill: 'transparent',\n stroke: lightGray\n },\n view: {\n fill: 'transparent'\n }\n },\n // defaults for title\n title: {\n orient: 'top',\n anchor: 'middle',\n offset: 4,\n subtitlePadding: 3\n },\n // defaults for axes\n axis: {\n minExtent: 0,\n maxExtent: 200,\n bandPosition: 0.5,\n domain: true,\n domainWidth: 1,\n domainColor: gray,\n grid: false,\n gridWidth: 1,\n gridColor: lightGray,\n labels: true,\n labelAngle: 0,\n labelLimit: 180,\n labelOffset: 0,\n labelPadding: 2,\n ticks: true,\n tickColor: gray,\n tickOffset: 0,\n tickRound: true,\n tickSize: 5,\n tickWidth: 1,\n titlePadding: 4\n },\n // correction for centering bias\n axisBand: {\n tickOffset: -0.5\n },\n // defaults for cartographic projection\n projection: {\n type: 'mercator'\n },\n // defaults for legends\n legend: {\n orient: 'right',\n padding: 0,\n gridAlign: 'each',\n columnPadding: 10,\n rowPadding: 2,\n symbolDirection: 'vertical',\n gradientDirection: 'vertical',\n gradientLength: 200,\n gradientThickness: 16,\n gradientStrokeColor: lightGray,\n gradientStrokeWidth: 0,\n gradientLabelOffset: 2,\n labelAlign: 'left',\n labelBaseline: 'middle',\n labelLimit: 160,\n labelOffset: 4,\n labelOverlap: true,\n symbolLimit: 30,\n symbolType: 'circle',\n symbolSize: 100,\n symbolOffset: 0,\n symbolStrokeWidth: 1.5,\n symbolBaseFillColor: 'transparent',\n symbolBaseStrokeColor: gray,\n titleLimit: 180,\n titleOrient: 'top',\n titlePadding: 5,\n layout: {\n offset: 18,\n direction: 'horizontal',\n left: {\n direction: 'vertical'\n },\n right: {\n direction: 'vertical'\n }\n }\n },\n // defaults for scale ranges\n range: {\n category: {\n scheme: 'tableau10'\n },\n ordinal: {\n scheme: 'blues'\n },\n heatmap: {\n scheme: 'yellowgreenblue'\n },\n ramp: {\n scheme: 'blues'\n },\n diverging: {\n scheme: 'blueorange',\n extent: [1, 0]\n },\n symbol: ['circle', 'square', 'triangle-up', 'cross', 'diamond', 'triangle-right', 'triangle-down', 'triangle-left']\n }\n };\n}\nfunction parse(spec, config, options) {\n if (!isObject(spec)) {\n error('Input Vega specification must be an object.');\n }\n config = mergeConfig(defaults(), config, spec.config);\n return parseView(spec, new Scope(config, options)).toRuntime();\n}\nexport { AxisDomainRole, AxisGridRole, AxisLabelRole, AxisRole, AxisTickRole, AxisTitleRole, DataScope, FrameRole, LegendEntryRole, LegendLabelRole, LegendRole, LegendSymbolRole, LegendTitleRole, MarkRole, Scope, ScopeRole, defaults as config, parse, parseSignal as signal, parseSignalUpdates as signalUpdates, parseStream as stream };","import { extend } from 'vega-util';\nexport * from 'vega-util';\nimport { transforms } from 'vega-dataflow';\nexport { Dataflow, EventStream, MultiPulse, Operator, Parameters, Pulse, Transform, changeset, definition, ingest, isTuple, transform, transforms, tupleid } from 'vega-dataflow';\nimport * as tx from 'vega-transforms';\nimport * as vtx from 'vega-view-transforms';\nimport * as encode from 'vega-encode';\nimport * as geo from 'vega-geo';\nimport * as force from 'vega-force';\nimport * as tree from 'vega-hierarchy';\nimport * as label from 'vega-label';\nimport * as reg from 'vega-regression';\nimport * as voronoi from 'vega-voronoi';\nimport * as wordcloud from 'vega-wordcloud';\nimport * as xf from 'vega-crossfilter';\nexport * from 'vega-statistics';\nexport * from 'vega-time';\nexport * from 'vega-loader';\nexport * from 'vega-scenegraph';\nexport { interpolate, interpolateColors, interpolateRange, quantizeInterpolator, scale, scheme } from 'vega-scale';\nexport { projection } from 'vega-projection';\nexport { View } from 'vega-view';\nexport { defaultLocale, numberFormatDefaultLocale as formatLocale, locale, resetDefaultLocale, timeFormatDefaultLocale as timeFormatLocale } from 'vega-format';\nexport { expressionFunction } from 'vega-functions';\nexport { parse } from 'vega-parser';\nexport { context as runtimeContext } from 'vega-runtime';\nexport { codegenExpression, parseExpression } from 'vega-expression';\nexport { parseSelector } from 'vega-event-selector';\nvar version = \"5.25.0\";\n\n// -- Transforms -----\nextend(transforms, tx, vtx, encode, geo, force, label, tree, reg, voronoi, wordcloud, xf);\nexport { version };","function adjustSpatial(item, encode, swap) {\n var t;\n if (encode.x2) {\n if (encode.x) {\n if (swap && item.x > item.x2) {\n t = item.x;\n item.x = item.x2;\n item.x2 = t;\n }\n item.width = item.x2 - item.x;\n } else {\n item.x = item.x2 - (item.width || 0);\n }\n }\n if (encode.xc) {\n item.x = item.xc - (item.width || 0) / 2;\n }\n if (encode.y2) {\n if (encode.y) {\n if (swap && item.y > item.y2) {\n t = item.y;\n item.y = item.y2;\n item.y2 = t;\n }\n item.height = item.y2 - item.y;\n } else {\n item.y = item.y2 - (item.height || 0);\n }\n }\n if (encode.yc) {\n item.y = item.yc - (item.height || 0) / 2;\n }\n}\nvar Constants = {\n NaN: NaN,\n E: Math.E,\n LN2: Math.LN2,\n LN10: Math.LN10,\n LOG2E: Math.LOG2E,\n LOG10E: Math.LOG10E,\n PI: Math.PI,\n SQRT1_2: Math.SQRT1_2,\n SQRT2: Math.SQRT2,\n MIN_VALUE: Number.MIN_VALUE,\n MAX_VALUE: Number.MAX_VALUE\n};\nvar Ops = {\n '*': function _(a, b) {\n return a * b;\n },\n '+': function _(a, b) {\n return a + b;\n },\n '-': function _(a, b) {\n return a - b;\n },\n '/': function _(a, b) {\n return a / b;\n },\n '%': function _(a, b) {\n return a % b;\n },\n '>': function _(a, b) {\n return a > b;\n },\n '<': function _(a, b) {\n return a < b;\n },\n '<=': function _(a, b) {\n return a <= b;\n },\n '>=': function _(a, b) {\n return a >= b;\n },\n '==': function _(a, b) {\n return a == b;\n },\n '!=': function _(a, b) {\n return a != b;\n },\n '===': function _(a, b) {\n return a === b;\n },\n '!==': function _(a, b) {\n return a !== b;\n },\n '&': function _(a, b) {\n return a & b;\n },\n '|': function _(a, b) {\n return a | b;\n },\n '^': function _(a, b) {\n return a ^ b;\n },\n '<<': function _(a, b) {\n return a << b;\n },\n '>>': function _(a, b) {\n return a >> b;\n },\n '>>>': function _(a, b) {\n return a >>> b;\n }\n};\nvar Unary = {\n '+': function _(a) {\n return +a;\n },\n '-': function _(a) {\n return -a;\n },\n '~': function _(a) {\n return ~a;\n },\n '!': function _(a) {\n return !a;\n }\n};\nvar slice = Array.prototype.slice;\nvar apply = function apply(m, args, cast) {\n var obj = cast ? cast(args[0]) : args[0];\n return obj[m].apply(obj, slice.call(args, 1));\n};\nvar datetime = function datetime(y, m, d, H, M, S, ms) {\n return new Date(y, m || 0, d != null ? d : 1, H || 0, M || 0, S || 0, ms || 0);\n};\nvar Functions = {\n // math functions\n isNaN: Number.isNaN,\n isFinite: Number.isFinite,\n abs: Math.abs,\n acos: Math.acos,\n asin: Math.asin,\n atan: Math.atan,\n atan2: Math.atan2,\n ceil: Math.ceil,\n cos: Math.cos,\n exp: Math.exp,\n floor: Math.floor,\n log: Math.log,\n max: Math.max,\n min: Math.min,\n pow: Math.pow,\n random: Math.random,\n round: Math.round,\n sin: Math.sin,\n sqrt: Math.sqrt,\n tan: Math.tan,\n clamp: function clamp(a, b, c) {\n return Math.max(b, Math.min(c, a));\n },\n // date functions\n now: Date.now,\n utc: Date.UTC,\n datetime: datetime,\n date: function date(d) {\n return new Date(d).getDate();\n },\n day: function day(d) {\n return new Date(d).getDay();\n },\n year: function year(d) {\n return new Date(d).getFullYear();\n },\n month: function month(d) {\n return new Date(d).getMonth();\n },\n hours: function hours(d) {\n return new Date(d).getHours();\n },\n minutes: function minutes(d) {\n return new Date(d).getMinutes();\n },\n seconds: function seconds(d) {\n return new Date(d).getSeconds();\n },\n milliseconds: function milliseconds(d) {\n return new Date(d).getMilliseconds();\n },\n time: function time(d) {\n return new Date(d).getTime();\n },\n timezoneoffset: function timezoneoffset(d) {\n return new Date(d).getTimezoneOffset();\n },\n utcdate: function utcdate(d) {\n return new Date(d).getUTCDate();\n },\n utcday: function utcday(d) {\n return new Date(d).getUTCDay();\n },\n utcyear: function utcyear(d) {\n return new Date(d).getUTCFullYear();\n },\n utcmonth: function utcmonth(d) {\n return new Date(d).getUTCMonth();\n },\n utchours: function utchours(d) {\n return new Date(d).getUTCHours();\n },\n utcminutes: function utcminutes(d) {\n return new Date(d).getUTCMinutes();\n },\n utcseconds: function utcseconds(d) {\n return new Date(d).getUTCSeconds();\n },\n utcmilliseconds: function utcmilliseconds(d) {\n return new Date(d).getUTCMilliseconds();\n },\n // sequence functions\n length: function length(x) {\n return x.length;\n },\n join: function join() {\n return apply('join', arguments);\n },\n indexof: function indexof() {\n return apply('indexOf', arguments);\n },\n lastindexof: function lastindexof() {\n return apply('lastIndexOf', arguments);\n },\n slice: function slice() {\n return apply('slice', arguments);\n },\n reverse: function reverse(x) {\n return x.slice().reverse();\n },\n // string functions\n parseFloat: parseFloat,\n parseInt: parseInt,\n upper: function upper(x) {\n return String(x).toUpperCase();\n },\n lower: function lower(x) {\n return String(x).toLowerCase();\n },\n substring: function substring() {\n return apply('substring', arguments, String);\n },\n split: function split() {\n return apply('split', arguments, String);\n },\n replace: function replace() {\n return apply('replace', arguments, String);\n },\n trim: function trim(x) {\n return String(x).trim();\n },\n // regexp functions\n regexp: RegExp,\n test: function test(r, t) {\n return RegExp(r).test(t);\n }\n};\nvar EventFunctions = ['view', 'item', 'group', 'xy', 'x', 'y'];\nvar DisallowedMethods = new Set([Function, eval, setTimeout, setInterval]);\nif (typeof setImmediate === 'function') DisallowedMethods.add(setImmediate);\nvar Visitors = {\n Literal: function Literal($, n) {\n return n.value;\n },\n Identifier: function Identifier($, n) {\n var id = n.name;\n return $.memberDepth > 0 ? id : id === 'datum' ? $.datum : id === 'event' ? $.event : id === 'item' ? $.item : Constants[id] || $.params['$' + id];\n },\n MemberExpression: function MemberExpression($, n) {\n var d = !n.computed,\n o = $(n.object);\n if (d) $.memberDepth += 1;\n var p = $(n.property);\n if (d) $.memberDepth -= 1;\n if (DisallowedMethods.has(o[p])) {\n // eslint-disable-next-line no-console\n console.error(\"Prevented interpretation of member \\\"\".concat(p, \"\\\" which could lead to insecure code execution\"));\n return;\n }\n return o[p];\n },\n CallExpression: function CallExpression($, n) {\n var args = n.arguments;\n var name = n.callee.name;\n\n // handle special internal functions used by encoders\n // re-route to corresponding standard function\n if (name.startsWith('_')) {\n name = name.slice(1);\n }\n\n // special case \"if\" due to conditional evaluation of branches\n return name === 'if' ? $(args[0]) ? $(args[1]) : $(args[2]) : ($.fn[name] || Functions[name]).apply($.fn, args.map($));\n },\n ArrayExpression: function ArrayExpression($, n) {\n return n.elements.map($);\n },\n BinaryExpression: function BinaryExpression($, n) {\n return Ops[n.operator]($(n.left), $(n.right));\n },\n UnaryExpression: function UnaryExpression($, n) {\n return Unary[n.operator]($(n.argument));\n },\n ConditionalExpression: function ConditionalExpression($, n) {\n return $(n.test) ? $(n.consequent) : $(n.alternate);\n },\n LogicalExpression: function LogicalExpression($, n) {\n return n.operator === '&&' ? $(n.left) && $(n.right) : $(n.left) || $(n.right);\n },\n ObjectExpression: function ObjectExpression($, n) {\n return n.properties.reduce(function (o, p) {\n $.memberDepth += 1;\n var k = $(p.key);\n $.memberDepth -= 1;\n if (DisallowedMethods.has($(p.value))) {\n // eslint-disable-next-line no-console\n console.error(\"Prevented interpretation of property \\\"\".concat(k, \"\\\" which could lead to insecure code execution\"));\n } else {\n o[k] = $(p.value);\n }\n return o;\n }, {});\n }\n};\nfunction interpret(ast, fn, params, datum, event, item) {\n var $ = function $(n) {\n return Visitors[n.type]($, n);\n };\n $.memberDepth = 0;\n $.fn = Object.create(fn);\n $.params = params;\n $.datum = datum;\n $.event = event;\n $.item = item;\n\n // route event functions to annotated vega event context\n EventFunctions.forEach(function (f) {\n return $.fn[f] = function () {\n var _event$vega;\n return (_event$vega = event.vega)[f].apply(_event$vega, arguments);\n };\n });\n return $(ast);\n}\nvar expression = {\n /**\n * Parse an expression used to update an operator value.\n */\n operator: function operator(ctx, expr) {\n var ast = expr.ast,\n fn = ctx.functions;\n return function (_) {\n return interpret(ast, fn, _);\n };\n },\n /**\n * Parse an expression provided as an operator parameter value.\n */\n parameter: function parameter(ctx, expr) {\n var ast = expr.ast,\n fn = ctx.functions;\n return function (datum, _) {\n return interpret(ast, fn, _, datum);\n };\n },\n /**\n * Parse an expression applied to an event stream.\n */\n event: function event(ctx, expr) {\n var ast = expr.ast,\n fn = ctx.functions;\n return function (event) {\n return interpret(ast, fn, undefined, undefined, event);\n };\n },\n /**\n * Parse an expression used to handle an event-driven operator update.\n */\n handler: function handler(ctx, expr) {\n var ast = expr.ast,\n fn = ctx.functions;\n return function (_, event) {\n var datum = event.item && event.item.datum;\n return interpret(ast, fn, _, datum, event);\n };\n },\n /**\n * Parse an expression that performs visual encoding.\n */\n encode: function encode(ctx, _encode) {\n var marktype = _encode.marktype,\n channels = _encode.channels,\n fn = ctx.functions,\n swap = marktype === 'group' || marktype === 'image' || marktype === 'rect';\n return function (item, _) {\n var datum = item.datum;\n var m = 0,\n v;\n for (var name in channels) {\n v = interpret(channels[name].ast, fn, _, datum, undefined, item);\n if (item[name] !== v) {\n item[name] = v;\n m = 1;\n }\n }\n if (marktype !== 'rule') {\n adjustSpatial(item, channels, swap);\n }\n return m;\n };\n }\n};\nexport { expression as expressionInterpreter };","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nexport function isLogicalOr(op) {\n return !!op.or;\n}\nexport function isLogicalAnd(op) {\n return !!op.and;\n}\nexport function isLogicalNot(op) {\n return !!op.not;\n}\nexport function forEachLeaf(op, fn) {\n if (isLogicalNot(op)) {\n forEachLeaf(op.not, fn);\n } else if (isLogicalAnd(op)) {\n var _iterator = _createForOfIteratorHelper(op.and),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var subop = _step.value;\n forEachLeaf(subop, fn);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n } else if (isLogicalOr(op)) {\n var _iterator2 = _createForOfIteratorHelper(op.or),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _subop = _step2.value;\n forEachLeaf(_subop, fn);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n } else {\n fn(op);\n }\n}\nexport function normalizeLogicalComposition(op, normalizer) {\n if (isLogicalNot(op)) {\n return {\n not: normalizeLogicalComposition(op.not, normalizer)\n };\n } else if (isLogicalAnd(op)) {\n return {\n and: op.and.map(function (o) {\n return normalizeLogicalComposition(o, normalizer);\n })\n };\n } else if (isLogicalOr(op)) {\n return {\n or: op.or.map(function (o) {\n return normalizeLogicalComposition(o, normalizer);\n })\n };\n } else {\n return normalizer(op);\n }\n}","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { default as clone_ } from 'clone';\nimport deepEqual_ from 'fast-deep-equal';\nimport stableStringify from 'fast-json-stable-stringify';\nimport { hasOwnProperty, isNumber, isString, splitAccessPath, stringValue, writeConfig } from 'vega-util';\nimport { isLogicalAnd, isLogicalNot, isLogicalOr } from './logical';\nexport var deepEqual = deepEqual_;\nexport var duplicate = clone_;\nexport function never(message) {\n throw new Error(message);\n}\n/**\n * Creates an object composed of the picked object properties.\n *\n * var object = {'a': 1, 'b': '2', 'c': 3};\n * pick(object, ['a', 'c']);\n * // → {'a': 1, 'c': 3}\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function pick(obj, props) {\n var copy = {};\n var _iterator = _createForOfIteratorHelper(props),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var prop = _step.value;\n if (hasOwnProperty(obj, prop)) {\n copy[prop] = obj[prop];\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return copy;\n}\n/**\n * The opposite of _.pick; this method creates an object composed of the own\n * and inherited enumerable string keyed properties of object that are not omitted.\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function omit(obj, props) {\n var copy = _objectSpread({}, obj);\n var _iterator2 = _createForOfIteratorHelper(props),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var prop = _step2.value;\n delete copy[prop];\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n return copy;\n}\n/**\n * Monkey patch Set so that `stringify` produces a string representation of sets.\n */\nSet.prototype['toJSON'] = function () {\n return \"Set(\".concat(_toConsumableArray(this).map(function (x) {\n return stableStringify(x);\n }).join(','), \")\");\n};\n/**\n * Converts any object to a string representation that can be consumed by humans.\n */\nexport var stringify = stableStringify;\n/**\n * Converts any object to a string of limited size, or a number.\n */\nexport function hash(a) {\n if (isNumber(a)) {\n return a;\n }\n var str = isString(a) ? a : stableStringify(a);\n // short strings can be used as hash directly, longer strings are hashed to reduce memory usage\n if (str.length < 250) {\n return str;\n }\n // from http://werxltd.com/wp/2010/05/13/javascript-implementation-of-javas-string-hashcode-method/\n var h = 0;\n for (var i = 0; i < str.length; i++) {\n var char = str.charCodeAt(i);\n h = (h << 5) - h + char;\n h = h & h; // Convert to 32bit integer\n }\n\n return h;\n}\nexport function isNullOrFalse(x) {\n return x === false || x === null;\n}\nexport function contains(array, item) {\n return array.includes(item);\n}\n/**\n * Returns true if any item returns true.\n */\nexport function some(arr, f) {\n var i = 0;\n var _iterator3 = _createForOfIteratorHelper(arr.entries()),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var _step3$value = _slicedToArray(_step3.value, 2),\n k = _step3$value[0],\n a = _step3$value[1];\n if (f(a, k, i++)) {\n return true;\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n return false;\n}\n/**\n * Returns true if all items return true.\n */\nexport function every(arr, f) {\n var i = 0;\n var _iterator4 = _createForOfIteratorHelper(arr.entries()),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var _step4$value = _slicedToArray(_step4.value, 2),\n k = _step4$value[0],\n a = _step4$value[1];\n if (!f(a, k, i++)) {\n return false;\n }\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n return true;\n}\n/**\n * recursively merges src into dest\n */\nexport function mergeDeep(dest) {\n for (var _len = arguments.length, src = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n src[_key - 1] = arguments[_key];\n }\n for (var _i = 0, _src = src; _i < _src.length; _i++) {\n var s = _src[_i];\n deepMerge_(dest, s !== null && s !== void 0 ? s : {});\n }\n return dest;\n}\nfunction deepMerge_(dest, src) {\n var _iterator5 = _createForOfIteratorHelper(keys(src)),\n _step5;\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var property = _step5.value;\n writeConfig(dest, property, src[property], true);\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n}\nexport function unique(values, f) {\n var results = [];\n var u = {};\n var v;\n var _iterator6 = _createForOfIteratorHelper(values),\n _step6;\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var val = _step6.value;\n v = f(val);\n if (v in u) {\n continue;\n }\n u[v] = 1;\n results.push(val);\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n return results;\n}\n/**\n * Returns true if the two dictionaries disagree. Applies only to defined values.\n */\nexport function isEqual(dict, other) {\n var dictKeys = keys(dict);\n var otherKeys = keys(other);\n if (dictKeys.length !== otherKeys.length) {\n return false;\n }\n var _iterator7 = _createForOfIteratorHelper(dictKeys),\n _step7;\n try {\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n var key = _step7.value;\n if (dict[key] !== other[key]) {\n return false;\n }\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n return true;\n}\nexport function setEqual(a, b) {\n if (a.size !== b.size) {\n return false;\n }\n var _iterator8 = _createForOfIteratorHelper(a),\n _step8;\n try {\n for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {\n var e = _step8.value;\n if (!b.has(e)) {\n return false;\n }\n }\n } catch (err) {\n _iterator8.e(err);\n } finally {\n _iterator8.f();\n }\n return true;\n}\nexport function hasIntersection(a, b) {\n var _iterator9 = _createForOfIteratorHelper(a),\n _step9;\n try {\n for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {\n var key = _step9.value;\n if (b.has(key)) {\n return true;\n }\n }\n } catch (err) {\n _iterator9.e(err);\n } finally {\n _iterator9.f();\n }\n return false;\n}\nexport function prefixGenerator(a) {\n var prefixes = new Set();\n var _iterator10 = _createForOfIteratorHelper(a),\n _step10;\n try {\n var _loop = function _loop() {\n var x = _step10.value;\n var splitField = splitAccessPath(x);\n // Wrap every element other than the first in `[]`\n var wrappedWithAccessors = splitField.map(function (y, i) {\n return i === 0 ? y : \"[\".concat(y, \"]\");\n });\n var computedPrefixes = wrappedWithAccessors.map(function (_, i) {\n return wrappedWithAccessors.slice(0, i + 1).join('');\n });\n var _iterator11 = _createForOfIteratorHelper(computedPrefixes),\n _step11;\n try {\n for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {\n var y = _step11.value;\n prefixes.add(y);\n }\n } catch (err) {\n _iterator11.e(err);\n } finally {\n _iterator11.f();\n }\n };\n for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {\n _loop();\n }\n } catch (err) {\n _iterator10.e(err);\n } finally {\n _iterator10.f();\n }\n return prefixes;\n}\n/**\n * Returns true if a and b have an intersection. Also return true if a or b are undefined\n * since this means we don't know what fields a node produces or depends on.\n */\nexport function fieldIntersection(a, b) {\n if (a === undefined || b === undefined) {\n return true;\n }\n return hasIntersection(prefixGenerator(a), prefixGenerator(b));\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function isEmpty(obj) {\n return keys(obj).length === 0;\n}\n// This is a stricter version of Object.keys but with better types. See https://github.com/Microsoft/TypeScript/pull/12253#issuecomment-263132208\nexport var keys = Object.keys;\nexport var vals = Object.values;\nexport var entries = Object.entries;\nexport function isBoolean(b) {\n return b === true || b === false;\n}\n/**\n * Convert a string into a valid variable name\n */\nexport function varName(s) {\n // Replace non-alphanumeric characters (anything besides a-zA-Z0-9_) with _\n var alphanumericS = s.replace(/\\W/g, '_');\n // Add _ if the string has leading numbers.\n return (s.match(/^\\d+/) ? '_' : '') + alphanumericS;\n}\nexport function logicalExpr(op, cb) {\n if (isLogicalNot(op)) {\n return \"!(\".concat(logicalExpr(op.not, cb), \")\");\n } else if (isLogicalAnd(op)) {\n return \"(\".concat(op.and.map(function (and) {\n return logicalExpr(and, cb);\n }).join(') && ('), \")\");\n } else if (isLogicalOr(op)) {\n return \"(\".concat(op.or.map(function (or) {\n return logicalExpr(or, cb);\n }).join(') || ('), \")\");\n } else {\n return cb(op);\n }\n}\n/**\n * Delete nested property of an object, and delete the ancestors of the property if they become empty.\n */\nexport function deleteNestedProperty(obj, orderedProps) {\n if (orderedProps.length === 0) {\n return true;\n }\n var prop = orderedProps.shift(); // eslint-disable-line @typescript-eslint/no-non-null-assertion\n if (prop in obj && deleteNestedProperty(obj[prop], orderedProps)) {\n delete obj[prop];\n }\n return isEmpty(obj);\n}\nexport function titleCase(s) {\n return s.charAt(0).toUpperCase() + s.substr(1);\n}\n/**\n * Converts a path to an access path with datum.\n * @param path The field name.\n * @param datum The string to use for `datum`.\n */\nexport function accessPathWithDatum(path) {\n var datum = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'datum';\n var pieces = splitAccessPath(path);\n var prefixes = [];\n for (var i = 1; i <= pieces.length; i++) {\n var prefix = \"[\".concat(pieces.slice(0, i).map(stringValue).join(']['), \"]\");\n prefixes.push(\"\".concat(datum).concat(prefix));\n }\n return prefixes.join(' && ');\n}\n/**\n * Return access with datum to the flattened field.\n *\n * @param path The field name.\n * @param datum The string to use for `datum`.\n */\nexport function flatAccessWithDatum(path) {\n var datum = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'datum';\n return \"\".concat(datum, \"[\").concat(stringValue(splitAccessPath(path).join('.')), \"]\");\n}\nfunction escapePathAccess(string) {\n return string.replace(/(\\[|\\]|\\.|'|\")/g, '\\\\$1');\n}\n/**\n * Replaces path accesses with access to non-nested field.\n * For example, `foo[\"bar\"].baz` becomes `foo\\\\.bar\\\\.baz`.\n */\nexport function replacePathInField(path) {\n return \"\".concat(splitAccessPath(path).map(escapePathAccess).join('\\\\.'));\n}\n/**\n * Replace all occurrences of a string with another string.\n *\n * @param string the string to replace in\n * @param find the string to replace\n * @param replacement the replacement\n */\nexport function replaceAll(string, find, replacement) {\n return string.replace(new RegExp(find.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&'), 'g'), replacement);\n}\n/**\n * Remove path accesses with access from field.\n * For example, `foo[\"bar\"].baz` becomes `foo.bar.baz`.\n */\nexport function removePathFromField(path) {\n return \"\".concat(splitAccessPath(path).join('.'));\n}\n/**\n * Count the depth of the path. Returns 1 for fields that are not nested.\n */\nexport function accessPathDepth(path) {\n if (!path) {\n return 0;\n }\n return splitAccessPath(path).length;\n}\n/**\n * This is a replacement for chained || for numeric properties or properties that respect null so that 0 will be included.\n */\nexport function getFirstDefined() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n for (var _i2 = 0, _args = args; _i2 < _args.length; _i2++) {\n var arg = _args[_i2];\n if (arg !== undefined) {\n return arg;\n }\n }\n return undefined;\n}\n// variable used to generate id\nvar idCounter = 42;\n/**\n * Returns a new random id every time it gets called.\n *\n * Has side effect!\n */\nexport function uniqueId(prefix) {\n var id = ++idCounter;\n return prefix ? String(prefix) + id : id;\n}\n/**\n * Resets the id counter used in uniqueId. This can be useful for testing.\n */\nexport function resetIdCounter() {\n idCounter = 42;\n}\nexport function internalField(name) {\n return isInternalField(name) ? name : \"__\".concat(name);\n}\nexport function isInternalField(name) {\n return name.startsWith('__');\n}\n/**\n * Normalize angle to be within [0,360).\n */\nexport function normalizeAngle(angle) {\n if (angle === undefined) {\n return undefined;\n }\n return (angle % 360 + 360) % 360;\n}\n/**\n * Returns whether the passed in value is a valid number.\n */\nexport function isNumeric(value) {\n if (isNumber(value)) {\n return true;\n }\n return !isNaN(value) && !isNaN(parseFloat(value));\n}","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n/*\n * Constants and utilities for encoding channels (Visual variables)\n * such as 'x', 'y', 'color'.\n */\nimport { keys } from './util';\n// Facet\nexport var ROW = 'row';\nexport var COLUMN = 'column';\nexport var FACET = 'facet';\n// Position\nexport var X = 'x';\nexport var Y = 'y';\nexport var X2 = 'x2';\nexport var Y2 = 'y2';\n// Position Offset\nexport var XOFFSET = 'xOffset';\nexport var YOFFSET = 'yOffset';\n// Arc-Position\nexport var RADIUS = 'radius';\nexport var RADIUS2 = 'radius2';\nexport var THETA = 'theta';\nexport var THETA2 = 'theta2';\n// Geo Position\nexport var LATITUDE = 'latitude';\nexport var LONGITUDE = 'longitude';\nexport var LATITUDE2 = 'latitude2';\nexport var LONGITUDE2 = 'longitude2';\n// Mark property with scale\nexport var COLOR = 'color';\nexport var FILL = 'fill';\nexport var STROKE = 'stroke';\nexport var SHAPE = 'shape';\nexport var SIZE = 'size';\nexport var ANGLE = 'angle';\nexport var OPACITY = 'opacity';\nexport var FILLOPACITY = 'fillOpacity';\nexport var STROKEOPACITY = 'strokeOpacity';\nexport var STROKEWIDTH = 'strokeWidth';\nexport var STROKEDASH = 'strokeDash';\n// Non-scale channel\nexport var TEXT = 'text';\nexport var ORDER = 'order';\nexport var DETAIL = 'detail';\nexport var KEY = 'key';\nexport var TOOLTIP = 'tooltip';\nexport var HREF = 'href';\nexport var URL = 'url';\nexport var DESCRIPTION = 'description';\nvar POSITION_CHANNEL_INDEX = {\n x: 1,\n y: 1,\n x2: 1,\n y2: 1\n};\nvar POLAR_POSITION_CHANNEL_INDEX = {\n theta: 1,\n theta2: 1,\n radius: 1,\n radius2: 1\n};\nexport function isPolarPositionChannel(c) {\n return c in POLAR_POSITION_CHANNEL_INDEX;\n}\nvar GEO_POSIITON_CHANNEL_INDEX = {\n longitude: 1,\n longitude2: 1,\n latitude: 1,\n latitude2: 1\n};\nexport function getPositionChannelFromLatLong(channel) {\n switch (channel) {\n case LATITUDE:\n return 'y';\n case LATITUDE2:\n return 'y2';\n case LONGITUDE:\n return 'x';\n case LONGITUDE2:\n return 'x2';\n }\n}\nexport function isGeoPositionChannel(c) {\n return c in GEO_POSIITON_CHANNEL_INDEX;\n}\nexport var GEOPOSITION_CHANNELS = keys(GEO_POSIITON_CHANNEL_INDEX);\nvar UNIT_CHANNEL_INDEX = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, POSITION_CHANNEL_INDEX), POLAR_POSITION_CHANNEL_INDEX), GEO_POSIITON_CHANNEL_INDEX), {}, {\n xOffset: 1,\n yOffset: 1,\n // color\n color: 1,\n fill: 1,\n stroke: 1,\n // other non-position with scale\n opacity: 1,\n fillOpacity: 1,\n strokeOpacity: 1,\n strokeWidth: 1,\n strokeDash: 1,\n size: 1,\n angle: 1,\n shape: 1,\n // channels without scales\n order: 1,\n text: 1,\n detail: 1,\n key: 1,\n tooltip: 1,\n href: 1,\n url: 1,\n description: 1\n});\nexport function isColorChannel(channel) {\n return channel === COLOR || channel === FILL || channel === STROKE;\n}\nvar FACET_CHANNEL_INDEX = {\n row: 1,\n column: 1,\n facet: 1\n};\nexport var FACET_CHANNELS = keys(FACET_CHANNEL_INDEX);\nvar CHANNEL_INDEX = _objectSpread(_objectSpread({}, UNIT_CHANNEL_INDEX), FACET_CHANNEL_INDEX);\nexport var CHANNELS = keys(CHANNEL_INDEX);\nvar _o = CHANNEL_INDEX.order,\n _d = CHANNEL_INDEX.detail,\n _tt1 = CHANNEL_INDEX.tooltip,\n SINGLE_DEF_CHANNEL_INDEX = _objectWithoutProperties(CHANNEL_INDEX, [\"order\", \"detail\", \"tooltip\"]);\nvar _r = SINGLE_DEF_CHANNEL_INDEX.row,\n _c = SINGLE_DEF_CHANNEL_INDEX.column,\n _f = SINGLE_DEF_CHANNEL_INDEX.facet,\n SINGLE_DEF_UNIT_CHANNEL_INDEX = _objectWithoutProperties(SINGLE_DEF_CHANNEL_INDEX, [\"row\", \"column\", \"facet\"]);\n/**\n * Channels that cannot have an array of channelDef.\n * model.fieldDef, getFieldDef only work for these channels.\n *\n * (The only two channels that can have an array of channelDefs are \"detail\" and \"order\".\n * Since there can be multiple fieldDefs for detail and order, getFieldDef/model.fieldDef\n * are not applicable for them. Similarly, selection projection won't work with \"detail\" and \"order\".)\n */\nexport var SINGLE_DEF_CHANNELS = keys(SINGLE_DEF_CHANNEL_INDEX);\nexport var SINGLE_DEF_UNIT_CHANNELS = keys(SINGLE_DEF_UNIT_CHANNEL_INDEX);\nexport function isSingleDefUnitChannel(str) {\n return !!SINGLE_DEF_UNIT_CHANNEL_INDEX[str];\n}\nexport function isChannel(str) {\n return !!CHANNEL_INDEX[str];\n}\nexport var SECONDARY_RANGE_CHANNEL = [X2, Y2, LATITUDE2, LONGITUDE2, THETA2, RADIUS2];\nexport function isSecondaryRangeChannel(c) {\n var main = getMainRangeChannel(c);\n return main !== c;\n}\n/**\n * Get the main channel for a range channel. E.g. `x` for `x2`.\n */\nexport function getMainRangeChannel(channel) {\n switch (channel) {\n case X2:\n return X;\n case Y2:\n return Y;\n case LATITUDE2:\n return LATITUDE;\n case LONGITUDE2:\n return LONGITUDE;\n case THETA2:\n return THETA;\n case RADIUS2:\n return RADIUS;\n }\n return channel;\n}\nexport function getVgPositionChannel(channel) {\n if (isPolarPositionChannel(channel)) {\n switch (channel) {\n case THETA:\n return 'startAngle';\n case THETA2:\n return 'endAngle';\n case RADIUS:\n return 'outerRadius';\n case RADIUS2:\n return 'innerRadius';\n }\n }\n return channel;\n}\n/**\n * Get the main channel for a range channel. E.g. `x` for `x2`.\n */\nexport function getSecondaryRangeChannel(channel) {\n switch (channel) {\n case X:\n return X2;\n case Y:\n return Y2;\n case LATITUDE:\n return LATITUDE2;\n case LONGITUDE:\n return LONGITUDE2;\n case THETA:\n return THETA2;\n case RADIUS:\n return RADIUS2;\n }\n return undefined;\n}\nexport function getSizeChannel(channel) {\n switch (channel) {\n case X:\n case X2:\n return 'width';\n case Y:\n case Y2:\n return 'height';\n }\n return undefined;\n}\n/**\n * Get the main channel for a range channel. E.g. `x` for `x2`.\n */\nexport function getOffsetChannel(channel) {\n switch (channel) {\n case X:\n return 'xOffset';\n case Y:\n return 'yOffset';\n case X2:\n return 'x2Offset';\n case Y2:\n return 'y2Offset';\n case THETA:\n return 'thetaOffset';\n case RADIUS:\n return 'radiusOffset';\n case THETA2:\n return 'theta2Offset';\n case RADIUS2:\n return 'radius2Offset';\n }\n return undefined;\n}\n/**\n * Get the main channel for a range channel. E.g. `x` for `x2`.\n */\nexport function getOffsetScaleChannel(channel) {\n switch (channel) {\n case X:\n return 'xOffset';\n case Y:\n return 'yOffset';\n }\n return undefined;\n}\nexport function getMainChannelFromOffsetChannel(channel) {\n switch (channel) {\n case 'xOffset':\n return 'x';\n case 'yOffset':\n return 'y';\n }\n}\n// CHANNELS without COLUMN, ROW\nexport var UNIT_CHANNELS = keys(UNIT_CHANNEL_INDEX);\n// NONPOSITION_CHANNELS = UNIT_CHANNELS without X, Y, X2, Y2;\nvar _x = UNIT_CHANNEL_INDEX.x,\n _y = UNIT_CHANNEL_INDEX.y,\n _x2 = UNIT_CHANNEL_INDEX.x2,\n _y2 = UNIT_CHANNEL_INDEX.y2,\n _xo = UNIT_CHANNEL_INDEX.xOffset,\n _yo = UNIT_CHANNEL_INDEX.yOffset,\n _latitude = UNIT_CHANNEL_INDEX.latitude,\n _longitude = UNIT_CHANNEL_INDEX.longitude,\n _latitude2 = UNIT_CHANNEL_INDEX.latitude2,\n _longitude2 = UNIT_CHANNEL_INDEX.longitude2,\n _theta = UNIT_CHANNEL_INDEX.theta,\n _theta2 = UNIT_CHANNEL_INDEX.theta2,\n _radius = UNIT_CHANNEL_INDEX.radius,\n _radius2 = UNIT_CHANNEL_INDEX.radius2,\n NONPOSITION_CHANNEL_INDEX = _objectWithoutProperties(UNIT_CHANNEL_INDEX, [\"x\", \"y\", \"x2\", \"y2\", \"xOffset\", \"yOffset\", \"latitude\", \"longitude\", \"latitude2\", \"longitude2\", \"theta\", \"theta2\", \"radius\", \"radius2\"]);\nexport var NONPOSITION_CHANNELS = keys(NONPOSITION_CHANNEL_INDEX);\nvar POSITION_SCALE_CHANNEL_INDEX = {\n x: 1,\n y: 1\n};\nexport var POSITION_SCALE_CHANNELS = keys(POSITION_SCALE_CHANNEL_INDEX);\nexport function isXorY(channel) {\n return channel in POSITION_SCALE_CHANNEL_INDEX;\n}\nexport var POLAR_POSITION_SCALE_CHANNEL_INDEX = {\n theta: 1,\n radius: 1\n};\nexport var POLAR_POSITION_SCALE_CHANNELS = keys(POLAR_POSITION_SCALE_CHANNEL_INDEX);\nexport function getPositionScaleChannel(sizeType) {\n return sizeType === 'width' ? X : Y;\n}\nvar OFFSET_SCALE_CHANNEL_INDEX = {\n xOffset: 1,\n yOffset: 1\n};\nexport var OFFSET_SCALE_CHANNELS = keys(OFFSET_SCALE_CHANNEL_INDEX);\nexport function isXorYOffset(channel) {\n return channel in OFFSET_SCALE_CHANNEL_INDEX;\n}\n// NON_POSITION_SCALE_CHANNEL = SCALE_CHANNELS without position / offset\nvar _t = NONPOSITION_CHANNEL_INDEX.text,\n _tt = NONPOSITION_CHANNEL_INDEX.tooltip,\n _hr = NONPOSITION_CHANNEL_INDEX.href,\n _u = NONPOSITION_CHANNEL_INDEX.url,\n _al = NONPOSITION_CHANNEL_INDEX.description,\n _dd = NONPOSITION_CHANNEL_INDEX.detail,\n _k = NONPOSITION_CHANNEL_INDEX.key,\n _oo = NONPOSITION_CHANNEL_INDEX.order,\n NONPOSITION_SCALE_CHANNEL_INDEX = _objectWithoutProperties(NONPOSITION_CHANNEL_INDEX, [\"text\", \"tooltip\", \"href\", \"url\", \"description\", \"detail\", \"key\", \"order\"]);\nexport var NONPOSITION_SCALE_CHANNELS = keys(NONPOSITION_SCALE_CHANNEL_INDEX);\nexport function isNonPositionScaleChannel(channel) {\n return !!NONPOSITION_CHANNEL_INDEX[channel];\n}\n/**\n * @returns whether Vega supports legends for a particular channel\n */\nexport function supportLegend(channel) {\n switch (channel) {\n case COLOR:\n case FILL:\n case STROKE:\n case SIZE:\n case SHAPE:\n case OPACITY:\n case STROKEWIDTH:\n case STROKEDASH:\n return true;\n case FILLOPACITY:\n case STROKEOPACITY:\n case ANGLE:\n return false;\n }\n}\n// Declare SCALE_CHANNEL_INDEX\nvar SCALE_CHANNEL_INDEX = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, POSITION_SCALE_CHANNEL_INDEX), POLAR_POSITION_SCALE_CHANNEL_INDEX), OFFSET_SCALE_CHANNEL_INDEX), NONPOSITION_SCALE_CHANNEL_INDEX);\n/** List of channels with scales */\nexport var SCALE_CHANNELS = keys(SCALE_CHANNEL_INDEX);\nexport function isScaleChannel(channel) {\n return !!SCALE_CHANNEL_INDEX[channel];\n}\n/**\n * Return whether a channel supports a particular mark type.\n * @param channel channel name\n * @param mark the mark type\n * @return whether the mark supports the channel\n */\nexport function supportMark(channel, mark) {\n return getSupportedMark(channel)[mark];\n}\nvar ALL_MARKS = {\n // all marks\n arc: 'always',\n area: 'always',\n bar: 'always',\n circle: 'always',\n geoshape: 'always',\n image: 'always',\n line: 'always',\n rule: 'always',\n point: 'always',\n rect: 'always',\n square: 'always',\n trail: 'always',\n text: 'always',\n tick: 'always'\n};\nvar _g = ALL_MARKS.geoshape,\n ALL_MARKS_EXCEPT_GEOSHAPE = _objectWithoutProperties(ALL_MARKS, [\"geoshape\"]);\n/**\n * Return a dictionary showing whether a channel supports mark type.\n * @param channel\n * @return A dictionary mapping mark types to 'always', 'binned', or undefined\n */\nfunction getSupportedMark(channel) {\n switch (channel) {\n case COLOR:\n case FILL:\n case STROKE:\n // falls through\n case DESCRIPTION:\n case DETAIL:\n case KEY:\n case TOOLTIP:\n case HREF:\n case ORDER: // TODO: revise (order might not support rect, which is not stackable?)\n case OPACITY:\n case FILLOPACITY:\n case STROKEOPACITY:\n case STROKEWIDTH:\n // falls through\n case FACET:\n case ROW: // falls through\n case COLUMN:\n return ALL_MARKS;\n case X:\n case Y:\n case XOFFSET:\n case YOFFSET:\n case LATITUDE:\n case LONGITUDE:\n // all marks except geoshape. geoshape does not use X, Y -- it uses a projection\n return ALL_MARKS_EXCEPT_GEOSHAPE;\n case X2:\n case Y2:\n case LATITUDE2:\n case LONGITUDE2:\n return {\n area: 'always',\n bar: 'always',\n image: 'always',\n rect: 'always',\n rule: 'always',\n circle: 'binned',\n point: 'binned',\n square: 'binned',\n tick: 'binned',\n line: 'binned',\n trail: 'binned'\n };\n case SIZE:\n return {\n point: 'always',\n tick: 'always',\n rule: 'always',\n circle: 'always',\n square: 'always',\n bar: 'always',\n text: 'always',\n line: 'always',\n trail: 'always'\n };\n case STROKEDASH:\n return {\n line: 'always',\n point: 'always',\n tick: 'always',\n rule: 'always',\n circle: 'always',\n square: 'always',\n bar: 'always',\n geoshape: 'always'\n };\n case SHAPE:\n return {\n point: 'always',\n geoshape: 'always'\n };\n case TEXT:\n return {\n text: 'always'\n };\n case ANGLE:\n return {\n point: 'always',\n square: 'always',\n text: 'always'\n };\n case URL:\n return {\n image: 'always'\n };\n case THETA:\n return {\n text: 'always',\n arc: 'always'\n };\n case RADIUS:\n return {\n text: 'always',\n arc: 'always'\n };\n case THETA2:\n case RADIUS2:\n return {\n arc: 'always'\n };\n }\n}\nexport function rangeType(channel) {\n switch (channel) {\n case X:\n case Y:\n case THETA:\n case RADIUS:\n case XOFFSET:\n case YOFFSET:\n case SIZE:\n case ANGLE:\n case STROKEWIDTH:\n case OPACITY:\n case FILLOPACITY:\n case STROKEOPACITY:\n // X2 and Y2 use X and Y scales, so they similarly have continuous range. [falls through]\n case X2:\n case Y2:\n case THETA2:\n case RADIUS2:\n return undefined;\n case FACET:\n case ROW:\n case COLUMN:\n case SHAPE:\n case STROKEDASH:\n // TEXT, TOOLTIP, URL, and HREF have no scale but have discrete output [falls through]\n case TEXT:\n case TOOLTIP:\n case HREF:\n case URL:\n case DESCRIPTION:\n return 'discrete';\n // Color can be either continuous or discrete, depending on scale type.\n case COLOR:\n case FILL:\n case STROKE:\n return 'flexible';\n // No scale, no range type.\n case LATITUDE:\n case LONGITUDE:\n case LATITUDE2:\n case LONGITUDE2:\n case DETAIL:\n case KEY:\n case ORDER:\n return undefined;\n }\n}","import { isString } from 'vega-util';\nimport { contains } from './util';\nvar AGGREGATE_OP_INDEX = {\n argmax: 1,\n argmin: 1,\n average: 1,\n count: 1,\n distinct: 1,\n product: 1,\n max: 1,\n mean: 1,\n median: 1,\n min: 1,\n missing: 1,\n q1: 1,\n q3: 1,\n ci0: 1,\n ci1: 1,\n stderr: 1,\n stdev: 1,\n stdevp: 1,\n sum: 1,\n valid: 1,\n values: 1,\n variance: 1,\n variancep: 1\n};\nexport var MULTIDOMAIN_SORT_OP_INDEX = {\n count: 1,\n min: 1,\n max: 1\n};\nexport function isArgminDef(a) {\n return !!a && !!a['argmin'];\n}\nexport function isArgmaxDef(a) {\n return !!a && !!a['argmax'];\n}\nexport function isAggregateOp(a) {\n return isString(a) && !!AGGREGATE_OP_INDEX[a];\n}\nexport var COUNTING_OPS = new Set(['count', 'valid', 'missing', 'distinct']);\nexport function isCountingAggregateOp(aggregate) {\n return isString(aggregate) && COUNTING_OPS.has(aggregate);\n}\nexport function isMinMaxOp(aggregate) {\n return isString(aggregate) && contains(['min', 'max'], aggregate);\n}\n/** Additive-based aggregation operations. These can be applied to stack. */\nexport var SUM_OPS = new Set(['count', 'sum', 'distinct', 'valid', 'missing']);\n/**\n * Aggregation operators that always produce values within the range [domainMin, domainMax].\n */\nexport var SHARED_DOMAIN_OPS = new Set(['mean', 'average', 'median', 'q1', 'q3', 'min', 'max']);","import { isBoolean, isObject } from 'vega-util';\nimport { COLOR, COLUMN, FILL, FILLOPACITY, OPACITY, ROW, SHAPE, SIZE, STROKE, STROKEDASH, STROKEOPACITY, STROKEWIDTH } from './channel';\nimport { normalizeBin } from './channeldef';\nimport { entries, keys, varName } from './util';\n/**\n * Create a key for the bin configuration. Not for prebinned bin.\n */\nexport function binToString(bin) {\n if (isBoolean(bin)) {\n bin = normalizeBin(bin, undefined);\n }\n return 'bin' + keys(bin).map(function (p) {\n return isParameterExtent(bin[p]) ? varName(\"_\".concat(p, \"_\").concat(entries(bin[p]))) : varName(\"_\".concat(p, \"_\").concat(bin[p]));\n }).join('');\n}\n/**\n * Vega-Lite should bin the data.\n */\nexport function isBinning(bin) {\n return bin === true || isBinParams(bin) && !bin.binned;\n}\n/**\n * The data is already binned and so Vega-Lite should not bin it again.\n */\nexport function isBinned(bin) {\n return bin === 'binned' || isBinParams(bin) && bin.binned === true;\n}\nexport function isBinParams(bin) {\n return isObject(bin);\n}\nexport function isParameterExtent(extent) {\n return extent === null || extent === void 0 ? void 0 : extent['param'];\n}\nexport function autoMaxBins(channel) {\n switch (channel) {\n case ROW:\n case COLUMN:\n case SIZE:\n case COLOR:\n case FILL:\n case STROKE:\n case STROKEWIDTH:\n case OPACITY:\n case FILLOPACITY:\n case STROKEOPACITY:\n // Facets and Size shouldn't have too many bins\n // We choose 6 like shape to simplify the rule [falls through]\n case SHAPE:\n return 6;\n // Vega's \"shape\" has 6 distinct values\n case STROKEDASH:\n return 4;\n // We only provide 5 different stroke dash values (but 4 is more effective)\n default:\n return 10;\n }\n}","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { signalRefOrValue } from './compile/common';\nimport { keys } from './util';\nexport function isExprRef(o) {\n return !!(o !== null && o !== void 0 && o.expr);\n}\nexport function replaceExprRef(index) {\n var props = keys(index || {});\n var newIndex = {};\n var _iterator = _createForOfIteratorHelper(props),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var prop = _step.value;\n newIndex[prop] = signalRefOrValue(index[prop]);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return newIndex;\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"anchor\", \"frame\", \"offset\", \"orient\", \"angle\", \"limit\", \"color\", \"subtitleColor\", \"subtitleFont\", \"subtitleFontSize\", \"subtitleFontStyle\", \"subtitleFontWeight\", \"subtitleLineHeight\", \"subtitlePadding\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { isArray, isString } from 'vega-util';\nimport { pick } from './util';\nexport function extractTitleConfig(titleConfig) {\n var anchor = titleConfig.anchor,\n frame = titleConfig.frame,\n offset = titleConfig.offset,\n orient = titleConfig.orient,\n angle = titleConfig.angle,\n limit = titleConfig.limit,\n color = titleConfig.color,\n subtitleColor = titleConfig.subtitleColor,\n subtitleFont = titleConfig.subtitleFont,\n subtitleFontSize = titleConfig.subtitleFontSize,\n subtitleFontStyle = titleConfig.subtitleFontStyle,\n subtitleFontWeight = titleConfig.subtitleFontWeight,\n subtitleLineHeight = titleConfig.subtitleLineHeight,\n subtitlePadding = titleConfig.subtitlePadding,\n rest = _objectWithoutProperties(titleConfig, _excluded);\n var titleMarkConfig = _objectSpread(_objectSpread({}, rest), color ? {\n fill: color\n } : {});\n // These are non-mark title config that need to be hardcoded\n var nonMarkTitleProperties = _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, anchor ? {\n anchor: anchor\n } : {}), frame ? {\n frame: frame\n } : {}), offset ? {\n offset: offset\n } : {}), orient ? {\n orient: orient\n } : {}), angle !== undefined ? {\n angle: angle\n } : {}), limit !== undefined ? {\n limit: limit\n } : {});\n // subtitle part can stay in config.title since header titles do not use subtitle\n var subtitle = _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, subtitleColor ? {\n subtitleColor: subtitleColor\n } : {}), subtitleFont ? {\n subtitleFont: subtitleFont\n } : {}), subtitleFontSize ? {\n subtitleFontSize: subtitleFontSize\n } : {}), subtitleFontStyle ? {\n subtitleFontStyle: subtitleFontStyle\n } : {}), subtitleFontWeight ? {\n subtitleFontWeight: subtitleFontWeight\n } : {}), subtitleLineHeight ? {\n subtitleLineHeight: subtitleLineHeight\n } : {}), subtitlePadding ? {\n subtitlePadding: subtitlePadding\n } : {});\n var subtitleMarkConfig = pick(titleConfig, ['align', 'baseline', 'dx', 'dy', 'limit']);\n return {\n titleMarkConfig: titleMarkConfig,\n subtitleMarkConfig: subtitleMarkConfig,\n nonMarkTitleProperties: nonMarkTitleProperties,\n subtitle: subtitle\n };\n}\nexport function isText(v) {\n return isString(v) || isArray(v) && isString(v[0]);\n}","import { isArray } from 'vega-util';\nimport { keys } from './util';\nexport function isSignalRef(o) {\n return !!(o !== null && o !== void 0 && o.signal);\n}\nexport function isVgRangeStep(range) {\n return !!range['step'];\n}\nexport function isDataRefUnionedDomain(domain) {\n if (!isArray(domain)) {\n return 'fields' in domain && !('data' in domain);\n }\n return false;\n}\nexport function isFieldRefUnionDomain(domain) {\n if (!isArray(domain)) {\n return 'fields' in domain && 'data' in domain;\n }\n return false;\n}\nexport function isDataRefDomain(domain) {\n if (!isArray(domain)) {\n return 'field' in domain && 'data' in domain;\n }\n return false;\n}\nvar VG_MARK_CONFIG_INDEX = {\n aria: 1,\n description: 1,\n ariaRole: 1,\n ariaRoleDescription: 1,\n blend: 1,\n opacity: 1,\n fill: 1,\n fillOpacity: 1,\n stroke: 1,\n strokeCap: 1,\n strokeWidth: 1,\n strokeOpacity: 1,\n strokeDash: 1,\n strokeDashOffset: 1,\n strokeJoin: 1,\n strokeOffset: 1,\n strokeMiterLimit: 1,\n startAngle: 1,\n endAngle: 1,\n padAngle: 1,\n innerRadius: 1,\n outerRadius: 1,\n size: 1,\n shape: 1,\n interpolate: 1,\n tension: 1,\n orient: 1,\n align: 1,\n baseline: 1,\n text: 1,\n dir: 1,\n dx: 1,\n dy: 1,\n ellipsis: 1,\n limit: 1,\n radius: 1,\n theta: 1,\n angle: 1,\n font: 1,\n fontSize: 1,\n fontWeight: 1,\n fontStyle: 1,\n lineBreak: 1,\n lineHeight: 1,\n cursor: 1,\n href: 1,\n tooltip: 1,\n cornerRadius: 1,\n cornerRadiusTopLeft: 1,\n cornerRadiusTopRight: 1,\n cornerRadiusBottomLeft: 1,\n cornerRadiusBottomRight: 1,\n aspect: 1,\n width: 1,\n height: 1,\n url: 1,\n smooth: 1\n // commented below are vg channel that do not have mark config.\n // x: 1,\n // y: 1,\n // x2: 1,\n // y2: 1,\n // xc'|'yc'\n // clip: 1,\n // path: 1,\n // url: 1,\n};\n\nexport var VG_MARK_CONFIGS = keys(VG_MARK_CONFIG_INDEX);\nexport var VG_MARK_INDEX = {\n arc: 1,\n area: 1,\n group: 1,\n image: 1,\n line: 1,\n path: 1,\n rect: 1,\n rule: 1,\n shape: 1,\n symbol: 1,\n text: 1,\n trail: 1\n};\n// Vega's cornerRadius channels.\nexport var VG_CORNERRADIUS_CHANNELS = ['cornerRadius', 'cornerRadiusTopLeft', 'cornerRadiusTopRight', 'cornerRadiusBottomLeft', 'cornerRadiusBottomRight'];","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nvar _excluded = [\"expr\"],\n _excluded2 = [\"expr\"],\n _excluded3 = [\"expr\"];\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { array, isArray, stringValue } from 'vega-util';\nimport { vgField } from '../channeldef';\nimport { isExprRef } from '../expr';\nimport { isText } from '../title';\nimport { deepEqual, getFirstDefined } from '../util';\nimport { isSignalRef } from '../vega.schema';\nexport var BIN_RANGE_DELIMITER = \" \\u2013 \";\nexport function signalOrValueRefWithCondition(val) {\n var condition = isArray(val.condition) ? val.condition.map(conditionalSignalRefOrValue) : conditionalSignalRefOrValue(val.condition);\n return _objectSpread(_objectSpread({}, signalRefOrValue(val)), {}, {\n condition: condition\n });\n}\nexport function signalRefOrValue(value) {\n if (isExprRef(value)) {\n var expr = value.expr,\n rest = _objectWithoutProperties(value, _excluded);\n return _objectSpread({\n signal: expr\n }, rest);\n }\n return value;\n}\nexport function conditionalSignalRefOrValue(value) {\n if (isExprRef(value)) {\n var expr = value.expr,\n rest = _objectWithoutProperties(value, _excluded2);\n return _objectSpread({\n signal: expr\n }, rest);\n }\n return value;\n}\nexport function signalOrValueRef(value) {\n if (isExprRef(value)) {\n var expr = value.expr,\n rest = _objectWithoutProperties(value, _excluded3);\n return _objectSpread({\n signal: expr\n }, rest);\n }\n if (isSignalRef(value)) {\n return value;\n }\n return value !== undefined ? {\n value: value\n } : undefined;\n}\nexport function exprFromSignalRefOrValue(ref) {\n if (isSignalRef(ref)) {\n return ref.signal;\n }\n return stringValue(ref);\n}\nexport function exprFromValueRefOrSignalRef(ref) {\n if (isSignalRef(ref)) {\n return ref.signal;\n }\n return stringValue(ref.value);\n}\nexport function signalOrStringValue(v) {\n if (isSignalRef(v)) {\n return v.signal;\n }\n return v == null ? null : stringValue(v);\n}\nexport function applyMarkConfig(e, model, propsList) {\n var _iterator = _createForOfIteratorHelper(propsList),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var property = _step.value;\n var value = getMarkConfig(property, model.markDef, model.config);\n if (value !== undefined) {\n e[property] = signalOrValueRef(value);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return e;\n}\nexport function getStyles(mark) {\n var _mark$style;\n return [].concat(mark.type, (_mark$style = mark.style) !== null && _mark$style !== void 0 ? _mark$style : []);\n}\nexport function getMarkPropOrConfig(channel, mark, config) {\n var opt = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var vgChannel = opt.vgChannel,\n ignoreVgConfig = opt.ignoreVgConfig;\n if (vgChannel && mark[vgChannel] !== undefined) {\n return mark[vgChannel];\n } else if (mark[channel] !== undefined) {\n return mark[channel];\n } else if (ignoreVgConfig && (!vgChannel || vgChannel === channel)) {\n return undefined;\n }\n return getMarkConfig(channel, mark, config, opt);\n}\n/**\n * Return property value from style or mark specific config property if exists.\n * Otherwise, return general mark specific config.\n */\nexport function getMarkConfig(channel, mark, config) {\n var _ref = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {},\n vgChannel = _ref.vgChannel;\n return getFirstDefined(\n // style config has highest precedence\n vgChannel ? getMarkStyleConfig(channel, mark, config.style) : undefined, getMarkStyleConfig(channel, mark, config.style),\n // then mark-specific config\n vgChannel ? config[mark.type][vgChannel] : undefined, config[mark.type][channel],\n // Need to cast because MarkDef doesn't perfectly match with AnyMarkConfig, but if the type isn't available, we'll get nothing here, which is fine\n // If there is vgChannel, skip vl channel.\n // For example, vl size for text is vg fontSize, but config.mark.size is only for point size.\n vgChannel ? config.mark[vgChannel] : config.mark[channel] // Need to cast for the same reason as above\n );\n}\n\nexport function getMarkStyleConfig(prop, mark, styleConfigIndex) {\n return getStyleConfig(prop, getStyles(mark), styleConfigIndex);\n}\nexport function getStyleConfig(p, styles, styleConfigIndex) {\n styles = array(styles);\n var value;\n var _iterator2 = _createForOfIteratorHelper(styles),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var style = _step2.value;\n var styleConfig = styleConfigIndex[style];\n if (styleConfig && styleConfig[p] !== undefined) {\n value = styleConfig[p];\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n return value;\n}\n/**\n * Return Vega sort parameters (tuple of field and order).\n */\nexport function sortParams(orderDef, fieldRefOption) {\n return array(orderDef).reduce(function (s, orderChannelDef) {\n var _orderChannelDef$sort;\n s.field.push(vgField(orderChannelDef, fieldRefOption));\n s.order.push((_orderChannelDef$sort = orderChannelDef.sort) !== null && _orderChannelDef$sort !== void 0 ? _orderChannelDef$sort : 'ascending');\n return s;\n }, {\n field: [],\n order: []\n });\n}\nexport function mergeTitleFieldDefs(f1, f2) {\n var merged = _toConsumableArray(f1);\n f2.forEach(function (fdToMerge) {\n var _iterator3 = _createForOfIteratorHelper(merged),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var fieldDef1 = _step3.value;\n // If already exists, no need to append to merged array\n if (deepEqual(fieldDef1, fdToMerge)) {\n return;\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n merged.push(fdToMerge);\n });\n return merged;\n}\nexport function mergeTitle(title1, title2) {\n if (deepEqual(title1, title2) || !title2) {\n // if titles are the same or title2 is falsy\n return title1;\n } else if (!title1) {\n // if title1 is falsy\n return title2;\n } else {\n return [].concat(_toConsumableArray(array(title1)), _toConsumableArray(array(title2))).join(', ');\n }\n}\nexport function mergeTitleComponent(v1, v2) {\n var v1Val = v1.value;\n var v2Val = v2.value;\n if (v1Val == null || v2Val === null) {\n return {\n explicit: v1.explicit,\n value: null\n };\n } else if ((isText(v1Val) || isSignalRef(v1Val)) && (isText(v2Val) || isSignalRef(v2Val))) {\n return {\n explicit: v1.explicit,\n value: mergeTitle(v1Val, v2Val)\n };\n } else if (isText(v1Val) || isSignalRef(v1Val)) {\n return {\n explicit: v1.explicit,\n value: v1Val\n };\n } else if (isText(v2Val) || isSignalRef(v2Val)) {\n return {\n explicit: v1.explicit,\n value: v2Val\n };\n } else if (!isText(v1Val) && !isSignalRef(v1Val) && !isText(v2Val) && !isSignalRef(v2Val)) {\n return {\n explicit: v1.explicit,\n value: mergeTitleFieldDefs(v1Val, v2Val)\n };\n }\n /* istanbul ignore next: Condition should not happen -- only for warning in development. */\n throw new Error('It should never reach here');\n}","import { getSizeChannel } from '../channel';\nimport { stringify } from '../util';\nexport function invalidSpec(spec) {\n return \"Invalid specification \".concat(stringify(spec), \". Make sure the specification includes at least one of the following properties: \\\"mark\\\", \\\"layer\\\", \\\"facet\\\", \\\"hconcat\\\", \\\"vconcat\\\", \\\"concat\\\", or \\\"repeat\\\".\");\n}\n// FIT\nexport var FIT_NON_SINGLE = 'Autosize \"fit\" only works for single views and layered views.';\nexport function containerSizeNonSingle(name) {\n var uName = name == 'width' ? 'Width' : 'Height';\n return \"\".concat(uName, \" \\\"container\\\" only works for single views and layered views.\");\n}\nexport function containerSizeNotCompatibleWithAutosize(name) {\n var uName = name == 'width' ? 'Width' : 'Height';\n var fitDirection = name == 'width' ? 'x' : 'y';\n return \"\".concat(uName, \" \\\"container\\\" only works well with autosize \\\"fit\\\" or \\\"fit-\").concat(fitDirection, \"\\\".\");\n}\nexport function droppingFit(channel) {\n return channel ? \"Dropping \\\"fit-\".concat(channel, \"\\\" because spec has discrete \").concat(getSizeChannel(channel), \".\") : \"Dropping \\\"fit\\\" because spec has discrete size.\";\n}\n// VIEW SIZE\nexport function unknownField(channel) {\n return \"Unknown field for \".concat(channel, \". Cannot calculate view size.\");\n}\n// SELECTION\nexport function cannotProjectOnChannelWithoutField(channel) {\n return \"Cannot project a selection on encoding channel \\\"\".concat(channel, \"\\\", which has no field.\");\n}\nexport function cannotProjectAggregate(channel, aggregate) {\n return \"Cannot project a selection on encoding channel \\\"\".concat(channel, \"\\\" as it uses an aggregate function (\\\"\").concat(aggregate, \"\\\").\");\n}\nexport function nearestNotSupportForContinuous(mark) {\n return \"The \\\"nearest\\\" transform is not supported for \".concat(mark, \" marks.\");\n}\nexport function selectionNotSupported(mark) {\n return \"Selection not supported for \".concat(mark, \" yet.\");\n}\nexport function selectionNotFound(name) {\n return \"Cannot find a selection named \\\"\".concat(name, \"\\\".\");\n}\nexport var SCALE_BINDINGS_CONTINUOUS = 'Scale bindings are currently only supported for scales with unbinned, continuous domains.';\nexport var LEGEND_BINDINGS_MUST_HAVE_PROJECTION = 'Legend bindings are only supported for selections over an individual field or encoding channel.';\nexport function cannotLookupVariableParameter(name) {\n return \"Lookups can only be performed on selection parameters. \\\"\".concat(name, \"\\\" is a variable parameter.\");\n}\nexport function noSameUnitLookup(name) {\n return \"Cannot define and lookup the \\\"\".concat(name, \"\\\" selection in the same view. \") + \"Try moving the lookup into a second, layered view?\";\n}\nexport var NEEDS_SAME_SELECTION = 'The same selection must be used to override scale domains in a layered view.';\nexport var INTERVAL_INITIALIZED_WITH_POS = 'Interval selections should be initialized using \"x\", \"y\", \"longitude\", or \"latitude\" keys.';\n// REPEAT\nexport function noSuchRepeatedValue(field) {\n return \"Unknown repeated value \\\"\".concat(field, \"\\\".\");\n}\nexport function columnsNotSupportByRowCol(type) {\n return \"The \\\"columns\\\" property cannot be used when \\\"\".concat(type, \"\\\" has nested row/column.\");\n}\n// CONCAT / REPEAT\nexport var CONCAT_CANNOT_SHARE_AXIS = 'Axes cannot be shared in concatenated or repeated views yet (https://github.com/vega/vega-lite/issues/2415).';\n// DATA\nexport function unrecognizedParse(p) {\n return \"Unrecognized parse \\\"\".concat(p, \"\\\".\");\n}\nexport function differentParse(field, local, ancestor) {\n return \"An ancestor parsed field \\\"\".concat(field, \"\\\" as \").concat(ancestor, \" but a child wants to parse the field as \").concat(local, \".\");\n}\nexport var ADD_SAME_CHILD_TWICE = 'Attempt to add the same child twice.';\n// TRANSFORMS\nexport function invalidTransformIgnored(transform) {\n return \"Ignoring an invalid transform: \".concat(stringify(transform), \".\");\n}\nexport var NO_FIELDS_NEEDS_AS = 'If \"from.fields\" is not specified, \"as\" has to be a string that specifies the key to be used for the data from the secondary source.';\n// ENCODING & FACET\nexport function customFormatTypeNotAllowed(channel) {\n return \"Config.customFormatTypes is not true, thus custom format type and format for channel \".concat(channel, \" are dropped.\");\n}\nexport function projectionOverridden(opt) {\n var parentProjection = opt.parentProjection,\n projection = opt.projection;\n return \"Layer's shared projection \".concat(stringify(parentProjection), \" is overridden by a child projection \").concat(stringify(projection), \".\");\n}\nexport var REPLACE_ANGLE_WITH_THETA = 'Arc marks uses theta channel rather than angle, replacing angle with theta.';\nexport function offsetNestedInsideContinuousPositionScaleDropped(mainChannel) {\n return \"\".concat(mainChannel, \"Offset dropped because \").concat(mainChannel, \" is continuous\");\n}\nexport function replaceOffsetWithMainChannel(mainChannel) {\n return \"There is no \".concat(mainChannel, \" encoding. Replacing \").concat(mainChannel, \"Offset encoding as \").concat(mainChannel, \".\");\n}\nexport function primitiveChannelDef(channel, type, value) {\n return \"Channel \".concat(channel, \" is a \").concat(type, \". Converted to {value: \").concat(stringify(value), \"}.\");\n}\nexport function invalidFieldType(type) {\n return \"Invalid field type \\\"\".concat(type, \"\\\".\");\n}\nexport function invalidFieldTypeForCountAggregate(type, aggregate) {\n return \"Invalid field type \\\"\".concat(type, \"\\\" for aggregate: \\\"\").concat(aggregate, \"\\\", using \\\"quantitative\\\" instead.\");\n}\nexport function invalidAggregate(aggregate) {\n return \"Invalid aggregation operator \\\"\".concat(aggregate, \"\\\".\");\n}\nexport function missingFieldType(channel, newType) {\n return \"Missing type for channel \\\"\".concat(channel, \"\\\", using \\\"\").concat(newType, \"\\\" instead.\");\n}\nexport function droppingColor(type, opt) {\n var fill = opt.fill,\n stroke = opt.stroke;\n return \"Dropping color \".concat(type, \" as the plot also has \").concat(fill && stroke ? 'fill and stroke' : fill ? 'fill' : 'stroke', \".\");\n}\nexport function relativeBandSizeNotSupported(sizeChannel) {\n return \"Position range does not support relative band size for \".concat(sizeChannel, \".\");\n}\nexport function emptyFieldDef(fieldDef, channel) {\n return \"Dropping \".concat(stringify(fieldDef), \" from channel \\\"\").concat(channel, \"\\\" since it does not contain any data field, datum, value, or signal.\");\n}\nexport var LINE_WITH_VARYING_SIZE = 'Line marks cannot encode size with a non-groupby field. You may want to use trail marks instead.';\nexport function incompatibleChannel(channel, markOrFacet, when) {\n return \"\".concat(channel, \" dropped as it is incompatible with \\\"\").concat(markOrFacet, \"\\\"\").concat(when ? \" when \".concat(when) : '', \".\");\n}\nexport function offsetEncodingScaleIgnored(channel) {\n return \"\".concat(channel, \" encoding has no scale, so specified scale is ignored.\");\n}\nexport function invalidEncodingChannel(channel) {\n return \"\".concat(channel, \"-encoding is dropped as \").concat(channel, \" is not a valid encoding channel.\");\n}\nexport function channelShouldBeDiscrete(channel) {\n return \"\".concat(channel, \" encoding should be discrete (ordinal / nominal / binned).\");\n}\nexport function channelShouldBeDiscreteOrDiscretizing(channel) {\n return \"\".concat(channel, \" encoding should be discrete (ordinal / nominal / binned) or use a discretizing scale (e.g. threshold).\");\n}\nexport function facetChannelDropped(channels) {\n return \"Facet encoding dropped as \".concat(channels.join(' and '), \" \").concat(channels.length > 1 ? 'are' : 'is', \" also specified.\");\n}\nexport function discreteChannelCannotEncode(channel, type) {\n return \"Using discrete channel \\\"\".concat(channel, \"\\\" to encode \\\"\").concat(type, \"\\\" field can be misleading as it does not encode \").concat(type === 'ordinal' ? 'order' : 'magnitude', \".\");\n}\n// MARK\nexport function rangeMarkAlignmentCannotBeExpression(align) {\n return \"The \".concat(align, \" for range marks cannot be an expression\");\n}\nexport function lineWithRange(hasX2, hasY2) {\n var channels = hasX2 && hasY2 ? 'x2 and y2' : hasX2 ? 'x2' : 'y2';\n return \"Line mark is for continuous lines and thus cannot be used with \".concat(channels, \". We will use the rule mark (line segments) instead.\");\n}\nexport function orientOverridden(original, actual) {\n return \"Specified orient \\\"\".concat(original, \"\\\" overridden with \\\"\").concat(actual, \"\\\".\");\n}\n// SCALE\nexport var CANNOT_UNION_CUSTOM_DOMAIN_WITH_FIELD_DOMAIN = 'Custom domain scale cannot be unioned with default field-based domain.';\nexport function cannotUseScalePropertyWithNonColor(prop) {\n return \"Cannot use the scale property \\\"\".concat(prop, \"\\\" with non-color channel.\");\n}\nexport function cannotUseRelativeBandSizeWithNonBandScale(scaleType) {\n return \"Cannot use the relative band size with \".concat(scaleType, \" scale.\");\n}\nexport function unaggregateDomainHasNoEffectForRawField(fieldDef) {\n return \"Using unaggregated domain with raw field has no effect (\".concat(stringify(fieldDef), \").\");\n}\nexport function unaggregateDomainWithNonSharedDomainOp(aggregate) {\n return \"Unaggregated domain not applicable for \\\"\".concat(aggregate, \"\\\" since it produces values outside the origin domain of the source data.\");\n}\nexport function unaggregatedDomainWithLogScale(fieldDef) {\n return \"Unaggregated domain is currently unsupported for log scale (\".concat(stringify(fieldDef), \").\");\n}\nexport function cannotApplySizeToNonOrientedMark(mark) {\n return \"Cannot apply size to non-oriented mark \\\"\".concat(mark, \"\\\".\");\n}\nexport function scaleTypeNotWorkWithChannel(channel, scaleType, defaultScaleType) {\n return \"Channel \\\"\".concat(channel, \"\\\" does not work with \\\"\").concat(scaleType, \"\\\" scale. We are using \\\"\").concat(defaultScaleType, \"\\\" scale instead.\");\n}\nexport function scaleTypeNotWorkWithFieldDef(scaleType, defaultScaleType) {\n return \"FieldDef does not work with \\\"\".concat(scaleType, \"\\\" scale. We are using \\\"\").concat(defaultScaleType, \"\\\" scale instead.\");\n}\nexport function scalePropertyNotWorkWithScaleType(scaleType, propName, channel) {\n return \"\".concat(channel, \"-scale's \\\"\").concat(propName, \"\\\" is dropped as it does not work with \").concat(scaleType, \" scale.\");\n}\nexport function scaleTypeNotWorkWithMark(mark, scaleType) {\n return \"Scale type \\\"\".concat(scaleType, \"\\\" does not work with mark \\\"\").concat(mark, \"\\\".\");\n}\nexport function stepDropped(channel) {\n return \"The step for \\\"\".concat(channel, \"\\\" is dropped because the \").concat(channel === 'width' ? 'x' : 'y', \" is continuous.\");\n}\nexport function mergeConflictingProperty(property, propertyOf, v1, v2) {\n return \"Conflicting \".concat(propertyOf.toString(), \" property \\\"\").concat(property.toString(), \"\\\" (\").concat(stringify(v1), \" and \").concat(stringify(v2), \"). Using \").concat(stringify(v1), \".\");\n}\nexport function mergeConflictingDomainProperty(property, propertyOf, v1, v2) {\n return \"Conflicting \".concat(propertyOf.toString(), \" property \\\"\").concat(property.toString(), \"\\\" (\").concat(stringify(v1), \" and \").concat(stringify(v2), \"). Using the union of the two domains.\");\n}\nexport function independentScaleMeansIndependentGuide(channel) {\n return \"Setting the scale to be independent for \\\"\".concat(channel, \"\\\" means we also have to set the guide (axis or legend) to be independent.\");\n}\nexport function domainSortDropped(sort) {\n return \"Dropping sort property \".concat(stringify(sort), \" as unioned domains only support boolean or op \\\"count\\\", \\\"min\\\", and \\\"max\\\".\");\n}\nexport var MORE_THAN_ONE_SORT = 'Domains that should be unioned has conflicting sort properties. Sort will be set to true.';\nexport var FACETED_INDEPENDENT_DIFFERENT_SOURCES = 'Detected faceted independent scales that union domain of multiple fields from different data sources. We will use the first field. The result view size may be incorrect.';\nexport var FACETED_INDEPENDENT_SAME_FIELDS_DIFFERENT_SOURCES = 'Detected faceted independent scales that union domain of the same fields from different source. We will assume that this is the same field from a different fork of the same data source. However, if this is not the case, the result view size may be incorrect.';\nexport var FACETED_INDEPENDENT_SAME_SOURCE = 'Detected faceted independent scales that union domain of multiple fields from the same data source. We will use the first field. The result view size may be incorrect.';\n// AXIS\nexport var INVALID_CHANNEL_FOR_AXIS = 'Invalid channel for axis.';\n// STACK\nexport function cannotStackRangedMark(channel) {\n return \"Cannot stack \\\"\".concat(channel, \"\\\" if there is already \\\"\").concat(channel, \"2\\\".\");\n}\nexport function cannotStackNonLinearScale(scaleType) {\n return \"Cannot stack non-linear scale (\".concat(scaleType, \").\");\n}\nexport function stackNonSummativeAggregate(aggregate) {\n return \"Stacking is applied even though the aggregate function is non-summative (\\\"\".concat(aggregate, \"\\\").\");\n}\n// TIMEUNIT\nexport function invalidTimeUnit(unitName, value) {\n return \"Invalid \".concat(unitName, \": \").concat(stringify(value), \".\");\n}\nexport function droppedDay(d) {\n return \"Dropping day from datetime \".concat(stringify(d), \" as day cannot be combined with other units.\");\n}\nexport function errorBarCenterAndExtentAreNotNeeded(center, extent) {\n return \"\".concat(extent ? 'extent ' : '').concat(extent && center ? 'and ' : '').concat(center ? 'center ' : '').concat(extent && center ? 'are ' : 'is ', \"not needed when data are aggregated.\");\n}\nexport function errorBarCenterIsUsedWithWrongExtent(center, extent, mark) {\n return \"\".concat(center, \" is not usually used with \").concat(extent, \" for \").concat(mark, \".\");\n}\nexport function errorBarContinuousAxisHasCustomizedAggregate(aggregate, compositeMark) {\n return \"Continuous axis should not have customized aggregation function \".concat(aggregate, \"; \").concat(compositeMark, \" already agregates the axis.\");\n}\nexport function errorBand1DNotSupport(property) {\n return \"1D error band does not support \".concat(property, \".\");\n}\n// CHANNEL\nexport function channelRequiredForBinned(channel) {\n return \"Channel \".concat(channel, \" is required for \\\"binned\\\" bin.\");\n}\nexport function channelShouldNotBeUsedForBinned(channel) {\n return \"Channel \".concat(channel, \" should not be used with \\\"binned\\\" bin.\");\n}\nexport function domainRequiredForThresholdScale(channel) {\n return \"Domain for \".concat(channel, \" is required for threshold scale.\");\n}","import _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\n/**\n * Vega-Lite's singleton logger utility.\n */\nvar __classPrivateFieldSet = this && this.__classPrivateFieldSet || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value), value;\n};\nvar __classPrivateFieldGet = this && this.__classPrivateFieldGet || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _LocalLogger_level;\nimport { Debug, Error as ErrorLevel, Info, logger, Warn } from 'vega-util';\nimport * as _message from './message';\nexport { _message as message };\n/**\n * Main (default) Vega Logger instance for Vega-Lite.\n */\nvar main = logger(Warn);\nvar current = main;\n/**\n * Logger tool for checking if the code throws correct warning.\n */\nexport var LocalLogger = /*#__PURE__*/function () {\n function LocalLogger() {\n _classCallCheck(this, LocalLogger);\n this.warns = [];\n this.infos = [];\n this.debugs = [];\n _LocalLogger_level.set(this, Warn);\n }\n _createClass(LocalLogger, [{\n key: \"level\",\n value: function level(_) {\n if (_) {\n __classPrivateFieldSet(this, _LocalLogger_level, _, \"f\");\n return this;\n }\n return __classPrivateFieldGet(this, _LocalLogger_level, \"f\");\n }\n }, {\n key: \"warn\",\n value: function warn() {\n var _this$warns;\n if (__classPrivateFieldGet(this, _LocalLogger_level, \"f\") >= Warn) (_this$warns = this.warns).push.apply(_this$warns, arguments);\n return this;\n }\n }, {\n key: \"info\",\n value: function info() {\n var _this$infos;\n if (__classPrivateFieldGet(this, _LocalLogger_level, \"f\") >= Info) (_this$infos = this.infos).push.apply(_this$infos, arguments);\n return this;\n }\n }, {\n key: \"debug\",\n value: function debug() {\n var _this$debugs;\n if (__classPrivateFieldGet(this, _LocalLogger_level, \"f\") >= Debug) (_this$debugs = this.debugs).push.apply(_this$debugs, arguments);\n return this;\n }\n }, {\n key: \"error\",\n value: function error() {\n if (__classPrivateFieldGet(this, _LocalLogger_level, \"f\") >= ErrorLevel) throw Error.apply(void 0, arguments);\n return this;\n }\n }]);\n return LocalLogger;\n}();\n_LocalLogger_level = new WeakMap();\nexport function wrap(f) {\n return function () {\n current = new LocalLogger();\n f(current);\n reset();\n };\n}\n/**\n * Set the singleton logger to be a custom logger.\n */\nexport function set(newLogger) {\n current = newLogger;\n return current;\n}\n/**\n * Reset the main logger to use the default Vega Logger.\n */\nexport function reset() {\n current = main;\n return current;\n}\nexport function error() {\n var _current;\n (_current = current).error.apply(_current, arguments);\n}\nexport function warn() {\n var _current2;\n (_current2 = current).warn.apply(_current2, arguments);\n}\nexport function info() {\n var _current3;\n (_current3 = current).info.apply(_current3, arguments);\n}\nexport function debug() {\n var _current4;\n (_current4 = current).debug.apply(_current4, arguments);\n}","import _construct from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/construct.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\n// DateTime definition object\nimport { isNumber, isObject } from 'vega-util';\nimport * as log from './log';\nimport { TIMEUNIT_PARTS } from './timeunit';\nimport { duplicate, isNumeric, keys } from './util';\nexport function isDateTime(o) {\n if (o && isObject(o)) {\n var _iterator = _createForOfIteratorHelper(TIMEUNIT_PARTS),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var part = _step.value;\n if (part in o) {\n return true;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n return false;\n}\nexport var MONTHS = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december'];\nexport var SHORT_MONTHS = MONTHS.map(function (m) {\n return m.substr(0, 3);\n});\nexport var DAYS = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];\nexport var SHORT_DAYS = DAYS.map(function (d) {\n return d.substr(0, 3);\n});\nfunction normalizeQuarter(q) {\n if (isNumeric(q)) {\n q = +q;\n }\n if (isNumber(q)) {\n if (q > 4) {\n log.warn(log.message.invalidTimeUnit('quarter', q));\n }\n // We accept 1-based quarter, so need to readjust to 0-based quarter\n return q - 1;\n } else {\n // Invalid quarter\n throw new Error(log.message.invalidTimeUnit('quarter', q));\n }\n}\nfunction normalizeMonth(m) {\n if (isNumeric(m)) {\n m = +m;\n }\n if (isNumber(m)) {\n // We accept 1-based month, so need to readjust to 0-based month\n return m - 1;\n } else {\n var lowerM = m.toLowerCase();\n var monthIndex = MONTHS.indexOf(lowerM);\n if (monthIndex !== -1) {\n return monthIndex; // 0 for january, ...\n }\n\n var shortM = lowerM.substr(0, 3);\n var shortMonthIndex = SHORT_MONTHS.indexOf(shortM);\n if (shortMonthIndex !== -1) {\n return shortMonthIndex;\n }\n // Invalid month\n throw new Error(log.message.invalidTimeUnit('month', m));\n }\n}\nfunction normalizeDay(d) {\n if (isNumeric(d)) {\n d = +d;\n }\n if (isNumber(d)) {\n // mod so that this can be both 0-based where 0 = sunday\n // and 1-based where 7=sunday\n return d % 7;\n } else {\n var lowerD = d.toLowerCase();\n var dayIndex = DAYS.indexOf(lowerD);\n if (dayIndex !== -1) {\n return dayIndex; // 0 for january, ...\n }\n\n var shortD = lowerD.substr(0, 3);\n var shortDayIndex = SHORT_DAYS.indexOf(shortD);\n if (shortDayIndex !== -1) {\n return shortDayIndex;\n }\n // Invalid day\n throw new Error(log.message.invalidTimeUnit('day', d));\n }\n}\n/**\n * @param d the date.\n * @param normalize whether to normalize quarter, month, day. This should probably be true if d is a DateTime.\n * @returns array of date time parts [year, month, day, hours, minutes, seconds, milliseconds]\n */\nfunction dateTimeParts(d, normalize) {\n var parts = [];\n if (normalize && d.day !== undefined) {\n if (keys(d).length > 1) {\n log.warn(log.message.droppedDay(d));\n d = duplicate(d);\n delete d.day;\n }\n }\n if (d.year !== undefined) {\n parts.push(d.year);\n } else {\n // Just like Vega's timeunit transform, set default year to 2012, so domain conversion will be compatible with Vega\n // Note: 2012 is a leap year (and so the date February 29 is respected) that begins on a Sunday (and so days of the week will order properly at the beginning of the year).\n parts.push(2012);\n }\n if (d.month !== undefined) {\n var month = normalize ? normalizeMonth(d.month) : d.month;\n parts.push(month);\n } else if (d.quarter !== undefined) {\n var quarter = normalize ? normalizeQuarter(d.quarter) : d.quarter;\n parts.push(isNumber(quarter) ? quarter * 3 : \"\".concat(quarter, \"*3\"));\n } else {\n parts.push(0); // months start at zero in JS\n }\n\n if (d.date !== undefined) {\n parts.push(d.date);\n } else if (d.day !== undefined) {\n // HACK: Day only works as a standalone unit\n // This is only correct because we always set year to 2006 for day\n var day = normalize ? normalizeDay(d.day) : d.day;\n parts.push(isNumber(day) ? day + 1 : \"\".concat(day, \"+1\"));\n } else {\n parts.push(1); // Date starts at 1 in JS\n }\n // Note: can't use TimeUnit enum here as importing it will create\n // circular dependency problem!\n for (var _i = 0, _arr = ['hours', 'minutes', 'seconds', 'milliseconds']; _i < _arr.length; _i++) {\n var timeUnit = _arr[_i];\n var unit = d[timeUnit];\n parts.push(typeof unit === 'undefined' ? 0 : unit);\n }\n return parts;\n}\n/**\n * Return Vega expression for a date time.\n *\n * @param d the date time.\n * @returns the Vega expression.\n */\nexport function dateTimeToExpr(d) {\n var parts = dateTimeParts(d, true);\n var string = parts.join(', ');\n if (d.utc) {\n return \"utc(\".concat(string, \")\");\n } else {\n return \"datetime(\".concat(string, \")\");\n }\n}\n/**\n * Return Vega expression for a date time expression.\n *\n * @param d the internal date time object with expression.\n * @returns the Vega expression.\n */\nexport function dateTimeExprToExpr(d) {\n var parts = dateTimeParts(d, false);\n var string = parts.join(', ');\n if (d.utc) {\n return \"utc(\".concat(string, \")\");\n } else {\n return \"datetime(\".concat(string, \")\");\n }\n}\n/**\n * @param d the date time.\n * @returns the timestamp.\n */\nexport function dateTimeToTimestamp(d) {\n var parts = dateTimeParts(d, true);\n if (d.utc) {\n return +new Date(Date.UTC.apply(Date, _toConsumableArray(parts)));\n } else {\n return +_construct(Date, _toConsumableArray(parts));\n }\n}","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nvar _excluded = [\"utc\"];\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { isObject, isString } from 'vega-util';\nimport { dateTimeExprToExpr, dateTimeToExpr } from './datetime';\nimport { accessPathWithDatum, keys, stringify, varName } from './util';\n/** Time Unit that only corresponds to only one part of Date objects. */\nexport var LOCAL_SINGLE_TIMEUNIT_INDEX = {\n year: 1,\n quarter: 1,\n month: 1,\n week: 1,\n day: 1,\n dayofyear: 1,\n date: 1,\n hours: 1,\n minutes: 1,\n seconds: 1,\n milliseconds: 1\n};\nexport var TIMEUNIT_PARTS = keys(LOCAL_SINGLE_TIMEUNIT_INDEX);\nexport function isLocalSingleTimeUnit(timeUnit) {\n return !!LOCAL_SINGLE_TIMEUNIT_INDEX[timeUnit];\n}\nexport var UTC_SINGLE_TIMEUNIT_INDEX = {\n utcyear: 1,\n utcquarter: 1,\n utcmonth: 1,\n utcweek: 1,\n utcday: 1,\n utcdayofyear: 1,\n utcdate: 1,\n utchours: 1,\n utcminutes: 1,\n utcseconds: 1,\n utcmilliseconds: 1\n};\nexport var LOCAL_MULTI_TIMEUNIT_INDEX = {\n yearquarter: 1,\n yearquartermonth: 1,\n yearmonth: 1,\n yearmonthdate: 1,\n yearmonthdatehours: 1,\n yearmonthdatehoursminutes: 1,\n yearmonthdatehoursminutesseconds: 1,\n yearweek: 1,\n yearweekday: 1,\n yearweekdayhours: 1,\n yearweekdayhoursminutes: 1,\n yearweekdayhoursminutesseconds: 1,\n yeardayofyear: 1,\n quartermonth: 1,\n monthdate: 1,\n monthdatehours: 1,\n monthdatehoursminutes: 1,\n monthdatehoursminutesseconds: 1,\n weekday: 1,\n weeksdayhours: 1,\n weekdayhoursminutes: 1,\n weekdayhoursminutesseconds: 1,\n dayhours: 1,\n dayhoursminutes: 1,\n dayhoursminutesseconds: 1,\n hoursminutes: 1,\n hoursminutesseconds: 1,\n minutesseconds: 1,\n secondsmilliseconds: 1\n};\nvar BINNED_LOCAL_TIMEUNIT_INDEX = {\n binnedyear: 1,\n binnedyearquarter: 1,\n binnedyearquartermonth: 1,\n binnedyearmonth: 1,\n binnedyearmonthdate: 1,\n binnedyearmonthdatehours: 1,\n binnedyearmonthdatehoursminutes: 1,\n binnedyearmonthdatehoursminutesseconds: 1,\n binnedyearweek: 1,\n binnedyearweekday: 1,\n binnedyearweekdayhours: 1,\n binnedyearweekdayhoursminutes: 1,\n binnedyearweekdayhoursminutesseconds: 1,\n binnedyeardayofyear: 1\n};\nvar BINNED_UTC_TIMEUNIT_INDEX = {\n binnedutcyear: 1,\n binnedutcyearquarter: 1,\n binnedutcyearquartermonth: 1,\n binnedutcyearmonth: 1,\n binnedutcyearmonthdate: 1,\n binnedutcyearmonthdatehours: 1,\n binnedutcyearmonthdatehoursminutes: 1,\n binnedutcyearmonthdatehoursminutesseconds: 1,\n binnedutcyearweek: 1,\n binnedutcyearweekday: 1,\n binnedutcyearweekdayhours: 1,\n binnedutcyearweekdayhoursminutes: 1,\n binnedutcyearweekdayhoursminutesseconds: 1,\n binnedutcyeardayofyear: 1\n};\nexport var BINNED_TIMEUNIT_INDEX = _objectSpread(_objectSpread({}, BINNED_LOCAL_TIMEUNIT_INDEX), BINNED_UTC_TIMEUNIT_INDEX);\nexport function isBinnedTimeUnit(timeUnit) {\n if (isObject(timeUnit)) {\n return timeUnit.binned;\n }\n return isBinnedTimeUnitString(timeUnit);\n}\nexport function isBinnedTimeUnitString(timeUnit) {\n return timeUnit && timeUnit.startsWith('binned');\n}\nexport var UTC_MULTI_TIMEUNIT_INDEX = {\n utcyearquarter: 1,\n utcyearquartermonth: 1,\n utcyearmonth: 1,\n utcyearmonthdate: 1,\n utcyearmonthdatehours: 1,\n utcyearmonthdatehoursminutes: 1,\n utcyearmonthdatehoursminutesseconds: 1,\n utcyearweek: 1,\n utcyearweekday: 1,\n utcyearweekdayhours: 1,\n utcyearweekdayhoursminutes: 1,\n utcyearweekdayhoursminutesseconds: 1,\n utcyeardayofyear: 1,\n utcquartermonth: 1,\n utcmonthdate: 1,\n utcmonthdatehours: 1,\n utcmonthdatehoursminutes: 1,\n utcmonthdatehoursminutesseconds: 1,\n utcweekday: 1,\n utcweeksdayhours: 1,\n utcweekdayhoursminutes: 1,\n utcweekdayhoursminutesseconds: 1,\n utcdayhours: 1,\n utcdayhoursminutes: 1,\n utcdayhoursminutesseconds: 1,\n utchoursminutes: 1,\n utchoursminutesseconds: 1,\n utcminutesseconds: 1,\n utcsecondsmilliseconds: 1\n};\nexport function isUTCTimeUnit(t) {\n return t.startsWith('utc');\n}\nexport function getLocalTimeUnitFromUTCTimeUnit(t) {\n return t.substring(3);\n}\n// In order of increasing specificity\nexport var VEGALITE_TIMEFORMAT = {\n 'year-month': '%b %Y ',\n 'year-month-date': '%b %d, %Y '\n};\nexport function getTimeUnitParts(timeUnit) {\n return TIMEUNIT_PARTS.filter(function (part) {\n return containsTimeUnit(timeUnit, part);\n });\n}\nexport function getSmallestTimeUnitPart(timeUnit) {\n var parts = getTimeUnitParts(timeUnit);\n return parts[parts.length - 1];\n}\n/** Returns true if fullTimeUnit contains the timeUnit, false otherwise. */\nexport function containsTimeUnit(fullTimeUnit, timeUnit) {\n var index = fullTimeUnit.indexOf(timeUnit);\n if (index < 0) {\n return false;\n }\n // exclude milliseconds\n if (index > 0 && timeUnit === 'seconds' && fullTimeUnit.charAt(index - 1) === 'i') {\n return false;\n }\n // exclude dayofyear\n if (fullTimeUnit.length > index + 3 && timeUnit === 'day' && fullTimeUnit.charAt(index + 3) === 'o') {\n return false;\n }\n if (index > 0 && timeUnit === 'year' && fullTimeUnit.charAt(index - 1) === 'f') {\n return false;\n }\n return true;\n}\n/**\n * Returns Vega expression for a given timeUnit and fieldRef\n */\nexport function fieldExpr(fullTimeUnit, field) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n end: false\n },\n end = _ref.end;\n var fieldRef = accessPathWithDatum(field);\n var utc = isUTCTimeUnit(fullTimeUnit) ? 'utc' : '';\n function func(timeUnit) {\n if (timeUnit === 'quarter') {\n // quarter starting at 0 (0,3,6,9).\n return \"(\".concat(utc, \"quarter(\").concat(fieldRef, \")-1)\");\n } else {\n return \"\".concat(utc).concat(timeUnit, \"(\").concat(fieldRef, \")\");\n }\n }\n var lastTimeUnit;\n var dateExpr = {};\n var _iterator = _createForOfIteratorHelper(TIMEUNIT_PARTS),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var part = _step.value;\n if (containsTimeUnit(fullTimeUnit, part)) {\n dateExpr[part] = func(part);\n lastTimeUnit = part;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n if (end) {\n dateExpr[lastTimeUnit] += '+1';\n }\n return dateTimeExprToExpr(dateExpr);\n}\nexport function timeUnitSpecifierExpression(timeUnit) {\n if (!timeUnit) {\n return undefined;\n }\n var timeUnitParts = getTimeUnitParts(timeUnit);\n return \"timeUnitSpecifier(\".concat(stringify(timeUnitParts), \", \").concat(stringify(VEGALITE_TIMEFORMAT), \")\");\n}\n/**\n * Returns the signal expression used for axis labels for a time unit.\n */\nexport function formatExpression(timeUnit, field, isUTCScale) {\n if (!timeUnit) {\n return undefined;\n }\n var expr = timeUnitSpecifierExpression(timeUnit);\n // We only use utcFormat for utc scale\n // For utc time units, the data is already converted as a part of timeUnit transform.\n // Thus, utc time units should use timeFormat to avoid shifting the time twice.\n var utc = isUTCScale || isUTCTimeUnit(timeUnit);\n return \"\".concat(utc ? 'utc' : 'time', \"Format(\").concat(field, \", \").concat(expr, \")\");\n}\nexport function normalizeTimeUnit(timeUnit) {\n if (!timeUnit) {\n return undefined;\n }\n var params;\n if (isString(timeUnit)) {\n if (isBinnedTimeUnitString(timeUnit)) {\n params = {\n unit: timeUnit.substring(6),\n binned: true\n };\n } else {\n params = {\n unit: timeUnit\n };\n }\n } else if (isObject(timeUnit)) {\n params = _objectSpread(_objectSpread({}, timeUnit), timeUnit.unit ? {\n unit: timeUnit.unit\n } : {});\n }\n if (isUTCTimeUnit(params.unit)) {\n params.utc = true;\n params.unit = getLocalTimeUnitFromUTCTimeUnit(params.unit);\n }\n return params;\n}\nexport function timeUnitToString(tu) {\n var _normalizeTimeUnit = normalizeTimeUnit(tu),\n utc = _normalizeTimeUnit.utc,\n rest = _objectWithoutProperties(_normalizeTimeUnit, _excluded);\n if (rest.unit) {\n return (utc ? 'utc' : '') + keys(rest).map(function (p) {\n return varName(\"\".concat(p === 'unit' ? '' : \"_\".concat(p, \"_\")).concat(rest[p]));\n }).join('');\n } else {\n // when maxbins is specified instead of units\n return (utc ? 'utc' : '') + 'timeunit' + keys(rest).map(function (p) {\n return varName(\"_\".concat(p, \"_\").concat(rest[p]));\n }).join('');\n }\n}\nexport function durationExpr(timeUnit) {\n var wrap = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (x) {\n return x;\n };\n var normalizedTimeUnit = normalizeTimeUnit(timeUnit);\n var smallestUnitPart = getSmallestTimeUnitPart(normalizedTimeUnit.unit);\n if (smallestUnitPart && smallestUnitPart !== 'day') {\n var startDate = {\n year: 2001,\n month: 1,\n date: 1,\n hours: 0,\n minutes: 0,\n seconds: 0,\n milliseconds: 0\n };\n var _getDateTimePartAndSt = getDateTimePartAndStep(smallestUnitPart, normalizedTimeUnit.step),\n step = _getDateTimePartAndSt.step,\n part = _getDateTimePartAndSt.part;\n var endDate = _objectSpread(_objectSpread({}, startDate), {}, _defineProperty({}, part, +startDate[part] + step));\n // Calculate timestamp duration for the smallest unit listed\n return \"\".concat(wrap(dateTimeToExpr(endDate)), \" - \").concat(wrap(dateTimeToExpr(startDate)));\n }\n return undefined;\n}\nvar DATE_PARTS = {\n year: 1,\n month: 1,\n date: 1,\n hours: 1,\n minutes: 1,\n seconds: 1,\n milliseconds: 1\n};\nexport function isDatePart(timeUnit) {\n return !!DATE_PARTS[timeUnit];\n}\nexport function getDateTimePartAndStep(timeUnit) {\n var step = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n if (isDatePart(timeUnit)) {\n return {\n part: timeUnit,\n step: step\n };\n }\n switch (timeUnit) {\n case 'day':\n case 'dayofyear':\n return {\n part: 'date',\n step: step\n };\n case 'quarter':\n return {\n part: 'month',\n step: step * 3\n };\n case 'week':\n return {\n part: 'date',\n step: step * 7\n };\n }\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { isArray } from 'vega-util';\nimport { valueExpr, vgField } from './channeldef';\nimport { fieldExpr as timeUnitFieldExpr, normalizeTimeUnit } from './timeunit';\nimport { stringify } from './util';\nimport { isSignalRef } from './vega.schema';\nexport function isSelectionPredicate(predicate) {\n return predicate === null || predicate === void 0 ? void 0 : predicate['param'];\n}\nexport function isFieldEqualPredicate(predicate) {\n return !!(predicate !== null && predicate !== void 0 && predicate.field) && predicate.equal !== undefined;\n}\nexport function isFieldLTPredicate(predicate) {\n return !!(predicate !== null && predicate !== void 0 && predicate.field) && predicate.lt !== undefined;\n}\nexport function isFieldLTEPredicate(predicate) {\n return !!(predicate !== null && predicate !== void 0 && predicate.field) && predicate.lte !== undefined;\n}\nexport function isFieldGTPredicate(predicate) {\n return !!(predicate !== null && predicate !== void 0 && predicate.field) && predicate.gt !== undefined;\n}\nexport function isFieldGTEPredicate(predicate) {\n return !!(predicate !== null && predicate !== void 0 && predicate.field) && predicate.gte !== undefined;\n}\nexport function isFieldRangePredicate(predicate) {\n if (predicate !== null && predicate !== void 0 && predicate.field) {\n if (isArray(predicate.range) && predicate.range.length === 2) {\n return true;\n } else if (isSignalRef(predicate.range)) {\n return true;\n }\n }\n return false;\n}\nexport function isFieldOneOfPredicate(predicate) {\n return !!(predicate !== null && predicate !== void 0 && predicate.field) && (isArray(predicate.oneOf) || isArray(predicate.in)) // backward compatibility\n ;\n}\n\nexport function isFieldValidPredicate(predicate) {\n return !!(predicate !== null && predicate !== void 0 && predicate.field) && predicate.valid !== undefined;\n}\nexport function isFieldPredicate(predicate) {\n return isFieldOneOfPredicate(predicate) || isFieldEqualPredicate(predicate) || isFieldRangePredicate(predicate) || isFieldLTPredicate(predicate) || isFieldGTPredicate(predicate) || isFieldLTEPredicate(predicate) || isFieldGTEPredicate(predicate);\n}\nfunction predicateValueExpr(v, timeUnit) {\n return valueExpr(v, {\n timeUnit: timeUnit,\n wrapTime: true\n });\n}\nfunction predicateValuesExpr(vals, timeUnit) {\n return vals.map(function (v) {\n return predicateValueExpr(v, timeUnit);\n });\n}\n// This method is used by Voyager. Do not change its behavior without changing Voyager.\nexport function fieldFilterExpression(predicate) {\n var useInRange = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var field = predicate.field;\n var normalizedTimeUnit = normalizeTimeUnit(predicate.timeUnit);\n var _ref = normalizedTimeUnit || {},\n unit = _ref.unit,\n binned = _ref.binned;\n var rawFieldExpr = vgField(predicate, {\n expr: 'datum'\n });\n var fieldExpr = unit ? // For timeUnit, cast into integer with time() so we can use ===, inrange, indexOf to compare values directly.\n // TODO: We calculate timeUnit on the fly here. Consider if we would like to consolidate this with timeUnit pipeline\n // TODO: support utc\n \"time(\".concat(!binned ? timeUnitFieldExpr(unit, field) : rawFieldExpr, \")\") : rawFieldExpr;\n if (isFieldEqualPredicate(predicate)) {\n return \"\".concat(fieldExpr, \"===\").concat(predicateValueExpr(predicate.equal, unit));\n } else if (isFieldLTPredicate(predicate)) {\n var upper = predicate.lt;\n return \"\".concat(fieldExpr, \"<\").concat(predicateValueExpr(upper, unit));\n } else if (isFieldGTPredicate(predicate)) {\n var lower = predicate.gt;\n return \"\".concat(fieldExpr, \">\").concat(predicateValueExpr(lower, unit));\n } else if (isFieldLTEPredicate(predicate)) {\n var _upper = predicate.lte;\n return \"\".concat(fieldExpr, \"<=\").concat(predicateValueExpr(_upper, unit));\n } else if (isFieldGTEPredicate(predicate)) {\n var _lower = predicate.gte;\n return \"\".concat(fieldExpr, \">=\").concat(predicateValueExpr(_lower, unit));\n } else if (isFieldOneOfPredicate(predicate)) {\n return \"indexof([\".concat(predicateValuesExpr(predicate.oneOf, unit).join(','), \"], \").concat(fieldExpr, \") !== -1\");\n } else if (isFieldValidPredicate(predicate)) {\n return fieldValidPredicate(fieldExpr, predicate.valid);\n } else if (isFieldRangePredicate(predicate)) {\n var range = predicate.range;\n var _lower2 = isSignalRef(range) ? {\n signal: \"\".concat(range.signal, \"[0]\")\n } : range[0];\n var _upper2 = isSignalRef(range) ? {\n signal: \"\".concat(range.signal, \"[1]\")\n } : range[1];\n if (_lower2 !== null && _upper2 !== null && useInRange) {\n return 'inrange(' + fieldExpr + ', [' + predicateValueExpr(_lower2, unit) + ', ' + predicateValueExpr(_upper2, unit) + '])';\n }\n var exprs = [];\n if (_lower2 !== null) {\n exprs.push(\"\".concat(fieldExpr, \" >= \").concat(predicateValueExpr(_lower2, unit)));\n }\n if (_upper2 !== null) {\n exprs.push(\"\".concat(fieldExpr, \" <= \").concat(predicateValueExpr(_upper2, unit)));\n }\n return exprs.length > 0 ? exprs.join(' && ') : 'true';\n }\n /* istanbul ignore next: it should never reach here */\n throw new Error(\"Invalid field predicate: \".concat(stringify(predicate)));\n}\nexport function fieldValidPredicate(fieldExpr) {\n var valid = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n if (valid) {\n return \"isValid(\".concat(fieldExpr, \") && isFinite(+\").concat(fieldExpr, \")\");\n } else {\n return \"!isValid(\".concat(fieldExpr, \") || !isFinite(+\").concat(fieldExpr, \")\");\n }\n}\nexport function normalizePredicate(f) {\n if (isFieldPredicate(f) && f.timeUnit) {\n return _objectSpread(_objectSpread({}, f), {}, {\n timeUnit: normalizeTimeUnit(f.timeUnit)\n });\n }\n return f;\n}","import { keys } from './util';\n/**\n * Data type based on level of measurement\n */\nexport var Type = {\n quantitative: 'quantitative',\n ordinal: 'ordinal',\n temporal: 'temporal',\n nominal: 'nominal',\n geojson: 'geojson'\n};\nexport function isType(t) {\n return t in Type;\n}\nexport function isContinuous(type) {\n return type === 'quantitative' || type === 'temporal';\n}\nexport function isDiscrete(type) {\n return type === 'ordinal' || type === 'nominal';\n}\nexport var QUANTITATIVE = Type.quantitative;\nexport var ORDINAL = Type.ordinal;\nexport var TEMPORAL = Type.temporal;\nexport var NOMINAL = Type.nominal;\nexport var GEOJSON = Type.geojson;\nexport var TYPES = keys(Type);\n/**\n * Get full, lowercase type name for a given type.\n * @param type\n * @return Full type name.\n */\nexport function getFullName(type) {\n if (type) {\n type = type.toLowerCase();\n switch (type) {\n case 'q':\n case QUANTITATIVE:\n return 'quantitative';\n case 't':\n case TEMPORAL:\n return 'temporal';\n case 'o':\n case ORDINAL:\n return 'ordinal';\n case 'n':\n case NOMINAL:\n return 'nominal';\n case GEOJSON:\n return 'geojson';\n }\n }\n // If we get invalid input, return undefined type.\n return undefined;\n}","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport { isObject } from 'vega';\nimport { isString } from 'vega-util';\nimport * as CHANNEL from './channel';\nimport { isColorChannel } from './channel';\nimport * as log from './log';\nimport { NOMINAL, ORDINAL, QUANTITATIVE, TEMPORAL } from './type';\nimport { contains, keys } from './util';\nexport var ScaleType = {\n // Continuous - Quantitative\n LINEAR: 'linear',\n LOG: 'log',\n POW: 'pow',\n SQRT: 'sqrt',\n SYMLOG: 'symlog',\n IDENTITY: 'identity',\n SEQUENTIAL: 'sequential',\n // Continuous - Time\n TIME: 'time',\n UTC: 'utc',\n // Discretizing scales\n QUANTILE: 'quantile',\n QUANTIZE: 'quantize',\n THRESHOLD: 'threshold',\n BIN_ORDINAL: 'bin-ordinal',\n // Discrete scales\n ORDINAL: 'ordinal',\n POINT: 'point',\n BAND: 'band'\n};\n/**\n * Index for scale categories -- only scale of the same categories can be merged together.\n * Current implementation is trying to be conservative and avoid merging scale type that might not work together\n */\nexport var SCALE_CATEGORY_INDEX = {\n linear: 'numeric',\n log: 'numeric',\n pow: 'numeric',\n sqrt: 'numeric',\n symlog: 'numeric',\n identity: 'numeric',\n sequential: 'numeric',\n time: 'time',\n utc: 'time',\n ordinal: 'ordinal',\n 'bin-ordinal': 'bin-ordinal',\n point: 'ordinal-position',\n band: 'ordinal-position',\n quantile: 'discretizing',\n quantize: 'discretizing',\n threshold: 'discretizing'\n};\nexport var SCALE_TYPES = keys(SCALE_CATEGORY_INDEX);\n/**\n * Whether the two given scale types can be merged together.\n */\nexport function scaleCompatible(scaleType1, scaleType2) {\n var scaleCategory1 = SCALE_CATEGORY_INDEX[scaleType1];\n var scaleCategory2 = SCALE_CATEGORY_INDEX[scaleType2];\n return scaleCategory1 === scaleCategory2 || scaleCategory1 === 'ordinal-position' && scaleCategory2 === 'time' || scaleCategory2 === 'ordinal-position' && scaleCategory1 === 'time';\n}\n/**\n * Index for scale precedence -- high score = higher priority for merging.\n */\nvar SCALE_PRECEDENCE_INDEX = {\n // numeric\n linear: 0,\n log: 1,\n pow: 1,\n sqrt: 1,\n symlog: 1,\n identity: 1,\n sequential: 1,\n // time\n time: 0,\n utc: 0,\n // ordinal-position -- these have higher precedence than continuous scales as they support more types of data\n point: 10,\n band: 11,\n // non grouped types\n ordinal: 0,\n 'bin-ordinal': 0,\n quantile: 0,\n quantize: 0,\n threshold: 0\n};\n/**\n * Return scale categories -- only scale of the same categories can be merged together.\n */\nexport function scaleTypePrecedence(scaleType) {\n return SCALE_PRECEDENCE_INDEX[scaleType];\n}\nexport var QUANTITATIVE_SCALES = new Set(['linear', 'log', 'pow', 'sqrt', 'symlog']);\nexport var CONTINUOUS_TO_CONTINUOUS_SCALES = new Set([].concat(_toConsumableArray(QUANTITATIVE_SCALES), ['time', 'utc']));\nexport function isQuantitative(type) {\n return QUANTITATIVE_SCALES.has(type);\n}\nexport var CONTINUOUS_TO_DISCRETE_SCALES = new Set(['quantile', 'quantize', 'threshold']);\nexport var CONTINUOUS_DOMAIN_SCALES = new Set([].concat(_toConsumableArray(CONTINUOUS_TO_CONTINUOUS_SCALES), _toConsumableArray(CONTINUOUS_TO_DISCRETE_SCALES), ['sequential', 'identity']));\nexport var DISCRETE_DOMAIN_SCALES = new Set(['ordinal', 'bin-ordinal', 'point', 'band']);\nexport var TIME_SCALE_TYPES = new Set(['time', 'utc']);\nexport function hasDiscreteDomain(type) {\n return DISCRETE_DOMAIN_SCALES.has(type);\n}\nexport function hasContinuousDomain(type) {\n return CONTINUOUS_DOMAIN_SCALES.has(type);\n}\nexport function isContinuousToContinuous(type) {\n return CONTINUOUS_TO_CONTINUOUS_SCALES.has(type);\n}\nexport function isContinuousToDiscrete(type) {\n return CONTINUOUS_TO_DISCRETE_SCALES.has(type);\n}\nexport var defaultScaleConfig = {\n pointPadding: 0.5,\n barBandPaddingInner: 0.1,\n rectBandPaddingInner: 0,\n bandWithNestedOffsetPaddingInner: 0.2,\n bandWithNestedOffsetPaddingOuter: 0.2,\n minBandSize: 2,\n minFontSize: 8,\n maxFontSize: 40,\n minOpacity: 0.3,\n maxOpacity: 0.8,\n // FIXME: revise if these *can* become ratios of width/height step\n minSize: 9,\n minStrokeWidth: 1,\n maxStrokeWidth: 4,\n quantileCount: 4,\n quantizeCount: 4,\n zero: true\n};\nexport function isExtendedScheme(scheme) {\n return !isString(scheme) && !!scheme['name'];\n}\nexport function isParameterDomain(domain) {\n return domain === null || domain === void 0 ? void 0 : domain['param'];\n}\nexport function isDomainUnionWith(domain) {\n return domain === null || domain === void 0 ? void 0 : domain['unionWith'];\n}\nexport function isFieldRange(range) {\n return isObject(range) && 'field' in range;\n}\nvar SCALE_PROPERTY_INDEX = {\n type: 1,\n domain: 1,\n domainMax: 1,\n domainMin: 1,\n domainMid: 1,\n domainRaw: 1,\n align: 1,\n range: 1,\n rangeMax: 1,\n rangeMin: 1,\n scheme: 1,\n bins: 1,\n // Other properties\n reverse: 1,\n round: 1,\n // quantitative / time\n clamp: 1,\n nice: 1,\n // quantitative\n base: 1,\n exponent: 1,\n constant: 1,\n interpolate: 1,\n zero: 1,\n // band/point\n padding: 1,\n paddingInner: 1,\n paddingOuter: 1\n};\nexport var SCALE_PROPERTIES = keys(SCALE_PROPERTY_INDEX);\nvar type = SCALE_PROPERTY_INDEX.type,\n domain = SCALE_PROPERTY_INDEX.domain,\n range = SCALE_PROPERTY_INDEX.range,\n rangeMax = SCALE_PROPERTY_INDEX.rangeMax,\n rangeMin = SCALE_PROPERTY_INDEX.rangeMin,\n scheme = SCALE_PROPERTY_INDEX.scheme,\n NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTY_INDEX = _objectWithoutProperties(SCALE_PROPERTY_INDEX, [\"type\", \"domain\", \"range\", \"rangeMax\", \"rangeMin\", \"scheme\"]);\nexport var NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTIES = keys(NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTY_INDEX);\nexport function scaleTypeSupportProperty(scaleType, propName) {\n switch (propName) {\n case 'type':\n case 'domain':\n case 'reverse':\n case 'range':\n return true;\n case 'scheme':\n case 'interpolate':\n return !['point', 'band', 'identity'].includes(scaleType);\n case 'bins':\n return !['point', 'band', 'identity', 'ordinal'].includes(scaleType);\n case 'round':\n return isContinuousToContinuous(scaleType) || scaleType === 'band' || scaleType === 'point';\n case 'padding':\n case 'rangeMin':\n case 'rangeMax':\n return isContinuousToContinuous(scaleType) || ['point', 'band'].includes(scaleType);\n case 'paddingOuter':\n case 'align':\n return ['point', 'band'].includes(scaleType);\n case 'paddingInner':\n return scaleType === 'band';\n case 'domainMax':\n case 'domainMid':\n case 'domainMin':\n case 'domainRaw':\n case 'clamp':\n return isContinuousToContinuous(scaleType);\n case 'nice':\n return isContinuousToContinuous(scaleType) || scaleType === 'quantize' || scaleType === 'threshold';\n case 'exponent':\n return scaleType === 'pow';\n case 'base':\n return scaleType === 'log';\n case 'constant':\n return scaleType === 'symlog';\n case 'zero':\n return hasContinuousDomain(scaleType) && !contains(['log', 'time', 'utc', 'threshold', 'quantile' // quantile depends on distribution so zero does not matter\n ], scaleType);\n }\n}\n/**\n * Returns undefined if the input channel supports the input scale property name\n */\nexport function channelScalePropertyIncompatability(channel, propName) {\n switch (propName) {\n case 'interpolate':\n case 'scheme':\n case 'domainMid':\n if (!isColorChannel(channel)) {\n return log.message.cannotUseScalePropertyWithNonColor(propName);\n }\n return undefined;\n case 'align':\n case 'type':\n case 'bins':\n case 'domain':\n case 'domainMax':\n case 'domainMin':\n case 'domainRaw':\n case 'range':\n case 'base':\n case 'exponent':\n case 'constant':\n case 'nice':\n case 'padding':\n case 'paddingInner':\n case 'paddingOuter':\n case 'rangeMax':\n case 'rangeMin':\n case 'reverse':\n case 'round':\n case 'clamp':\n case 'zero':\n return undefined;\n // GOOD!\n }\n}\n\nexport function scaleTypeSupportDataType(specifiedType, fieldDefType) {\n if (contains([ORDINAL, NOMINAL], fieldDefType)) {\n return specifiedType === undefined || hasDiscreteDomain(specifiedType);\n } else if (fieldDefType === TEMPORAL) {\n return contains([ScaleType.TIME, ScaleType.UTC, undefined], specifiedType);\n } else if (fieldDefType === QUANTITATIVE) {\n return isQuantitative(specifiedType) || isContinuousToDiscrete(specifiedType) || specifiedType === undefined;\n }\n return true;\n}\nexport function channelSupportScaleType(channel, scaleType) {\n var hasNestedOffsetScale = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n if (!CHANNEL.isScaleChannel(channel)) {\n return false;\n }\n switch (channel) {\n case CHANNEL.X:\n case CHANNEL.Y:\n case CHANNEL.XOFFSET:\n case CHANNEL.YOFFSET:\n case CHANNEL.THETA:\n case CHANNEL.RADIUS:\n if (isContinuousToContinuous(scaleType)) {\n return true;\n } else if (scaleType === 'band') {\n return true;\n } else if (scaleType === 'point') {\n /*\n Point scale can't be use if the position has a nested offset scale\n because if there is a nested scale, then it's band.\n */\n return !hasNestedOffsetScale;\n }\n return false;\n case CHANNEL.SIZE: // TODO: size and opacity can support ordinal with more modification\n case CHANNEL.STROKEWIDTH:\n case CHANNEL.OPACITY:\n case CHANNEL.FILLOPACITY:\n case CHANNEL.STROKEOPACITY:\n case CHANNEL.ANGLE:\n // Although it generally doesn't make sense to use band with size and opacity,\n // it can also work since we use band: 0.5 to get midpoint.\n return isContinuousToContinuous(scaleType) || isContinuousToDiscrete(scaleType) || contains(['band', 'point', 'ordinal'], scaleType);\n case CHANNEL.COLOR:\n case CHANNEL.FILL:\n case CHANNEL.STROKE:\n return scaleType !== 'band';\n // band does not make sense with color\n case CHANNEL.STROKEDASH:\n case CHANNEL.SHAPE:\n return scaleType === 'ordinal' || isContinuousToDiscrete(scaleType);\n }\n}","import { keys } from './util';\n/**\n * All types of primitive marks.\n */\nexport var Mark = {\n arc: 'arc',\n area: 'area',\n bar: 'bar',\n image: 'image',\n line: 'line',\n point: 'point',\n rect: 'rect',\n rule: 'rule',\n text: 'text',\n tick: 'tick',\n trail: 'trail',\n circle: 'circle',\n square: 'square',\n geoshape: 'geoshape'\n};\nexport var ARC = Mark.arc;\nexport var AREA = Mark.area;\nexport var BAR = Mark.bar;\nexport var IMAGE = Mark.image;\nexport var LINE = Mark.line;\nexport var POINT = Mark.point;\nexport var RECT = Mark.rect;\nexport var RULE = Mark.rule;\nexport var TEXT = Mark.text;\nexport var TICK = Mark.tick;\nexport var TRAIL = Mark.trail;\nexport var CIRCLE = Mark.circle;\nexport var SQUARE = Mark.square;\nexport var GEOSHAPE = Mark.geoshape;\nexport function isMark(m) {\n return m in Mark;\n}\nexport function isPathMark(m) {\n return ['line', 'area', 'trail'].includes(m);\n}\nexport function isRectBasedMark(m) {\n return ['rect', 'bar', 'image', 'arc' /* arc is rect/interval in polar coordinate */].includes(m);\n}\nexport var PRIMITIVE_MARKS = new Set(keys(Mark));\nexport function isMarkDef(mark) {\n return mark['type'];\n}\nexport function isPrimitiveMark(mark) {\n var markType = isMarkDef(mark) ? mark.type : mark;\n return PRIMITIVE_MARKS.has(markType);\n}\nexport var STROKE_CONFIG = ['stroke', 'strokeWidth', 'strokeDash', 'strokeDashOffset', 'strokeOpacity', 'strokeJoin', 'strokeMiterLimit'];\nexport var FILL_CONFIG = ['fill', 'fillOpacity'];\nexport var FILL_STROKE_CONFIG = [].concat(STROKE_CONFIG, FILL_CONFIG);\nvar VL_ONLY_MARK_CONFIG_INDEX = {\n color: 1,\n filled: 1,\n invalid: 1,\n order: 1,\n radius2: 1,\n theta2: 1,\n timeUnitBandSize: 1,\n timeUnitBandPosition: 1\n};\nexport var VL_ONLY_MARK_CONFIG_PROPERTIES = keys(VL_ONLY_MARK_CONFIG_INDEX);\nexport var VL_ONLY_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX = {\n area: ['line', 'point'],\n bar: ['binSpacing', 'continuousBandSize', 'discreteBandSize', 'minBandSize'],\n rect: ['binSpacing', 'continuousBandSize', 'discreteBandSize', 'minBandSize'],\n line: ['point'],\n tick: ['bandSize', 'thickness']\n};\nexport var defaultMarkConfig = {\n color: '#4c78a8',\n invalid: 'filter',\n timeUnitBandSize: 1\n};\nvar MARK_CONFIG_INDEX = {\n mark: 1,\n arc: 1,\n area: 1,\n bar: 1,\n circle: 1,\n image: 1,\n line: 1,\n point: 1,\n rect: 1,\n rule: 1,\n square: 1,\n text: 1,\n tick: 1,\n trail: 1,\n geoshape: 1\n};\nexport var MARK_CONFIGS = keys(MARK_CONFIG_INDEX);\nexport function isRelativeBandSize(o) {\n return o && o['band'] != undefined;\n}\nexport var BAR_CORNER_RADIUS_INDEX = {\n horizontal: ['cornerRadiusTopRight', 'cornerRadiusBottomRight'],\n vertical: ['cornerRadiusTopLeft', 'cornerRadiusTopRight']\n};\nvar DEFAULT_RECT_BAND_SIZE = 5;\nexport var defaultBarConfig = {\n binSpacing: 1,\n continuousBandSize: DEFAULT_RECT_BAND_SIZE,\n minBandSize: 0.25,\n timeUnitBandPosition: 0.5\n};\nexport var defaultRectConfig = {\n binSpacing: 0,\n continuousBandSize: DEFAULT_RECT_BAND_SIZE,\n minBandSize: 0.25,\n timeUnitBandPosition: 0.5\n};\nexport var defaultTickConfig = {\n thickness: 1\n};\nexport function getMarkType(m) {\n return isMarkDef(m) ? m.type : m;\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { isFunction, isString } from 'vega-util';\nimport { isCountingAggregateOp } from '../../../aggregate';\nimport { isBinned, isBinning } from '../../../bin';\nimport { getMainRangeChannel, X, X2, Y2 } from '../../../channel';\nimport { binRequiresRange, getBandPosition, isDatumDef, isFieldDef, isFieldOrDatumDef, isTypedFieldDef, isValueDef, vgField } from '../../../channeldef';\nimport { dateTimeToExpr, isDateTime } from '../../../datetime';\nimport { isExprRef } from '../../../expr';\nimport * as log from '../../../log';\nimport { isPathMark } from '../../../mark';\nimport { fieldValidPredicate } from '../../../predicate';\nimport { hasDiscreteDomain, isContinuousToContinuous } from '../../../scale';\nimport { TEMPORAL } from '../../../type';\nimport { contains, stringify } from '../../../util';\nimport { isSignalRef } from '../../../vega.schema';\nimport { getMarkPropOrConfig, signalOrValueRef } from '../../common';\nexport function midPointRefWithPositionInvalidTest(params) {\n var channel = params.channel,\n channelDef = params.channelDef,\n markDef = params.markDef,\n scale = params.scale,\n config = params.config;\n var ref = midPoint(params);\n // Wrap to check if the positional value is invalid, if so, plot the point on the min value\n if (\n // Only this for field def without counting aggregate (as count wouldn't be null)\n isFieldDef(channelDef) && !isCountingAggregateOp(channelDef.aggregate) &&\n // and only for continuous scale\n scale && isContinuousToContinuous(scale.get('type'))) {\n return wrapPositionInvalidTest({\n fieldDef: channelDef,\n channel: channel,\n markDef: markDef,\n ref: ref,\n config: config\n });\n }\n return ref;\n}\nexport function wrapPositionInvalidTest(_ref) {\n var fieldDef = _ref.fieldDef,\n channel = _ref.channel,\n markDef = _ref.markDef,\n ref = _ref.ref,\n config = _ref.config;\n if (isPathMark(markDef.type)) {\n // path mark already use defined to skip points, no need to do it here.\n return ref;\n }\n var invalid = getMarkPropOrConfig('invalid', markDef, config);\n if (invalid === null) {\n // if there is no invalid filter, don't do the invalid test\n return [fieldInvalidTestValueRef(fieldDef, channel), ref];\n }\n return ref;\n}\nexport function fieldInvalidTestValueRef(fieldDef, channel) {\n var test = fieldInvalidPredicate(fieldDef, true);\n var mainChannel = getMainRangeChannel(channel); // we can cast here as the output can't be other things.\n var zeroValueRef = mainChannel === 'y' ? {\n field: {\n group: 'height'\n }\n } :\n // x / angle / radius can all use 0\n {\n value: 0\n };\n return _objectSpread({\n test: test\n }, zeroValueRef);\n}\nexport function fieldInvalidPredicate(field) {\n var invalid = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n return fieldValidPredicate(isString(field) ? field : vgField(field, {\n expr: 'datum'\n }), !invalid);\n}\nexport function datumDefToExpr(datumDef) {\n var datum = datumDef.datum;\n if (isDateTime(datum)) {\n return dateTimeToExpr(datum);\n }\n return \"\".concat(stringify(datum));\n}\nexport function valueRefForFieldOrDatumDef(fieldDef, scaleName, opt, encode) {\n var ref = {};\n if (scaleName) {\n ref.scale = scaleName;\n }\n if (isDatumDef(fieldDef)) {\n var datum = fieldDef.datum;\n if (isDateTime(datum)) {\n ref.signal = dateTimeToExpr(datum);\n } else if (isSignalRef(datum)) {\n ref.signal = datum.signal;\n } else if (isExprRef(datum)) {\n ref.signal = datum.expr;\n } else {\n ref.value = datum;\n }\n } else {\n ref.field = vgField(fieldDef, opt);\n }\n if (encode) {\n var offset = encode.offset,\n band = encode.band;\n if (offset) {\n ref.offset = offset;\n }\n if (band) {\n ref.band = band;\n }\n }\n return ref;\n}\n/**\n * Signal that returns the middle of a bin from start and end field. Should only be used with x and y.\n */\nexport function interpolatedSignalRef(_ref2) {\n var scaleName = _ref2.scaleName,\n fieldOrDatumDef = _ref2.fieldOrDatumDef,\n fieldOrDatumDef2 = _ref2.fieldOrDatumDef2,\n offset = _ref2.offset,\n startSuffix = _ref2.startSuffix,\n _ref2$bandPosition = _ref2.bandPosition,\n bandPosition = _ref2$bandPosition === void 0 ? 0.5 : _ref2$bandPosition;\n var expr = 0 < bandPosition && bandPosition < 1 ? 'datum' : undefined;\n var start = vgField(fieldOrDatumDef, {\n expr: expr,\n suffix: startSuffix\n });\n var end = fieldOrDatumDef2 !== undefined ? vgField(fieldOrDatumDef2, {\n expr: expr\n }) : vgField(fieldOrDatumDef, {\n suffix: 'end',\n expr: expr\n });\n var ref = {};\n if (bandPosition === 0 || bandPosition === 1) {\n ref.scale = scaleName;\n var field = bandPosition === 0 ? start : end;\n ref.field = field;\n } else {\n var datum = isSignalRef(bandPosition) ? \"\".concat(bandPosition.signal, \" * \").concat(start, \" + (1-\").concat(bandPosition.signal, \") * \").concat(end) : \"\".concat(bandPosition, \" * \").concat(start, \" + \").concat(1 - bandPosition, \" * \").concat(end);\n ref.signal = \"scale(\\\"\".concat(scaleName, \"\\\", \").concat(datum, \")\");\n }\n if (offset) {\n ref.offset = offset;\n }\n return ref;\n}\nexport function binSizeExpr(_ref3) {\n var scaleName = _ref3.scaleName,\n fieldDef = _ref3.fieldDef;\n var start = vgField(fieldDef, {\n expr: 'datum'\n });\n var end = vgField(fieldDef, {\n expr: 'datum',\n suffix: 'end'\n });\n return \"abs(scale(\\\"\".concat(scaleName, \"\\\", \").concat(end, \") - scale(\\\"\").concat(scaleName, \"\\\", \").concat(start, \"))\");\n}\n/**\n * @returns {VgValueRef} Value Ref for xc / yc or mid point for other channels.\n */\nexport function midPoint(_ref4) {\n var channel = _ref4.channel,\n channelDef = _ref4.channelDef,\n channel2Def = _ref4.channel2Def,\n markDef = _ref4.markDef,\n config = _ref4.config,\n scaleName = _ref4.scaleName,\n scale = _ref4.scale,\n stack = _ref4.stack,\n offset = _ref4.offset,\n defaultRef = _ref4.defaultRef,\n bandPosition = _ref4.bandPosition;\n // TODO: datum support\n if (channelDef) {\n /* istanbul ignore else */\n if (isFieldOrDatumDef(channelDef)) {\n var _ref5, _bandPosition2;\n var scaleType = scale === null || scale === void 0 ? void 0 : scale.get('type');\n if (isTypedFieldDef(channelDef)) {\n var _bandPosition;\n (_bandPosition = bandPosition) !== null && _bandPosition !== void 0 ? _bandPosition : bandPosition = getBandPosition({\n fieldDef: channelDef,\n fieldDef2: channel2Def,\n markDef: markDef,\n config: config\n });\n var bin = channelDef.bin,\n timeUnit = channelDef.timeUnit,\n type = channelDef.type;\n if (isBinning(bin) || bandPosition && timeUnit && type === TEMPORAL) {\n // Use middle only for x an y to place marks in the center between start and end of the bin range.\n // We do not use the mid point for other channels (e.g. size) so that properties of legends and marks match.\n if (stack !== null && stack !== void 0 && stack.impute) {\n // For stack, we computed bin_mid so we can impute.\n return valueRefForFieldOrDatumDef(channelDef, scaleName, {\n binSuffix: 'mid'\n }, {\n offset: offset\n });\n }\n if (bandPosition && !hasDiscreteDomain(scaleType)) {\n // if band = 0, no need to call interpolation\n // For non-stack, we can just calculate bin mid on the fly using signal.\n return interpolatedSignalRef({\n scaleName: scaleName,\n fieldOrDatumDef: channelDef,\n bandPosition: bandPosition,\n offset: offset\n });\n }\n return valueRefForFieldOrDatumDef(channelDef, scaleName, binRequiresRange(channelDef, channel) ? {\n binSuffix: 'range'\n } : {}, {\n offset: offset\n });\n } else if (isBinned(bin)) {\n if (isFieldDef(channel2Def)) {\n return interpolatedSignalRef({\n scaleName: scaleName,\n fieldOrDatumDef: channelDef,\n fieldOrDatumDef2: channel2Def,\n bandPosition: bandPosition,\n offset: offset\n });\n } else {\n var channel2 = channel === X ? X2 : Y2;\n log.warn(log.message.channelRequiredForBinned(channel2));\n }\n }\n }\n return valueRefForFieldOrDatumDef(channelDef, scaleName, hasDiscreteDomain(scaleType) ? {\n binSuffix: 'range'\n } : {},\n // no need for bin suffix if there is no scale\n {\n offset: offset,\n // For band, to get mid point, need to offset by half of the band\n band: scaleType === 'band' ? (_ref5 = (_bandPosition2 = bandPosition) !== null && _bandPosition2 !== void 0 ? _bandPosition2 : channelDef.bandPosition) !== null && _ref5 !== void 0 ? _ref5 : 0.5 : undefined\n });\n } else if (isValueDef(channelDef)) {\n var value = channelDef.value;\n var offsetMixins = offset ? {\n offset: offset\n } : {};\n return _objectSpread(_objectSpread({}, widthHeightValueOrSignalRef(channel, value)), offsetMixins);\n }\n // If channelDef is neither field def or value def, it's a condition-only def.\n // In such case, we will use default ref.\n }\n\n if (isFunction(defaultRef)) {\n defaultRef = defaultRef();\n }\n if (defaultRef) {\n // for non-position, ref could be undefined.\n return _objectSpread(_objectSpread({}, defaultRef), offset ? {\n offset: offset\n } : {});\n }\n return defaultRef;\n}\n/**\n * Convert special \"width\" and \"height\" values in Vega-Lite into Vega value ref.\n */\nexport function widthHeightValueOrSignalRef(channel, value) {\n if (contains(['x', 'x2'], channel) && value === 'width') {\n return {\n field: {\n group: 'width'\n }\n };\n } else if (contains(['y', 'y2'], channel) && value === 'height') {\n return {\n field: {\n group: 'height'\n }\n };\n }\n return signalOrValueRef(value);\n}","import { isString } from 'vega-util';\nimport { isBinning } from '../bin';\nimport { channelDefType, isFieldDef, isFieldOrDatumDefForTimeFormat, isPositionFieldOrDatumDef, isScaleFieldDef, vgField } from '../channeldef';\nimport { fieldValidPredicate } from '../predicate';\nimport { ScaleType } from '../scale';\nimport { formatExpression, normalizeTimeUnit, timeUnitSpecifierExpression } from '../timeunit';\nimport { QUANTITATIVE } from '../type';\nimport { stringify } from '../util';\nimport { isSignalRef } from '../vega.schema';\nimport { datumDefToExpr } from './mark/encode/valueref';\nexport function isCustomFormatType(formatType) {\n return formatType && formatType !== 'number' && formatType !== 'time';\n}\nfunction customFormatExpr(formatType, field, format) {\n return \"\".concat(formatType, \"(\").concat(field).concat(format ? \", \".concat(stringify(format)) : '', \")\");\n}\nexport var BIN_RANGE_DELIMITER = \" \\u2013 \";\nexport function formatSignalRef(_ref) {\n var fieldOrDatumDef = _ref.fieldOrDatumDef,\n format = _ref.format,\n formatType = _ref.formatType,\n expr = _ref.expr,\n normalizeStack = _ref.normalizeStack,\n config = _ref.config;\n if (isCustomFormatType(formatType)) {\n return formatCustomType({\n fieldOrDatumDef: fieldOrDatumDef,\n format: format,\n formatType: formatType,\n expr: expr,\n config: config\n });\n }\n var field = fieldToFormat(fieldOrDatumDef, expr, normalizeStack);\n var type = channelDefType(fieldOrDatumDef);\n if (format === undefined && formatType === undefined && config.customFormatTypes) {\n if (type === 'quantitative') {\n if (normalizeStack && config.normalizedNumberFormatType) return formatCustomType({\n fieldOrDatumDef: fieldOrDatumDef,\n format: config.normalizedNumberFormat,\n formatType: config.normalizedNumberFormatType,\n expr: expr,\n config: config\n });\n if (config.numberFormatType) {\n return formatCustomType({\n fieldOrDatumDef: fieldOrDatumDef,\n format: config.numberFormat,\n formatType: config.numberFormatType,\n expr: expr,\n config: config\n });\n }\n }\n if (type === 'temporal' && config.timeFormatType && isFieldDef(fieldOrDatumDef) && fieldOrDatumDef.timeUnit === undefined) {\n return formatCustomType({\n fieldOrDatumDef: fieldOrDatumDef,\n format: config.timeFormat,\n formatType: config.timeFormatType,\n expr: expr,\n config: config\n });\n }\n }\n if (isFieldOrDatumDefForTimeFormat(fieldOrDatumDef)) {\n var _normalizeTimeUnit, _fieldOrDatumDef$scal;\n var signal = timeFormatExpression({\n field: field,\n timeUnit: isFieldDef(fieldOrDatumDef) ? (_normalizeTimeUnit = normalizeTimeUnit(fieldOrDatumDef.timeUnit)) === null || _normalizeTimeUnit === void 0 ? void 0 : _normalizeTimeUnit.unit : undefined,\n format: format,\n formatType: config.timeFormatType,\n rawTimeFormat: config.timeFormat,\n isUTCScale: isScaleFieldDef(fieldOrDatumDef) && ((_fieldOrDatumDef$scal = fieldOrDatumDef.scale) === null || _fieldOrDatumDef$scal === void 0 ? void 0 : _fieldOrDatumDef$scal.type) === ScaleType.UTC\n });\n return signal ? {\n signal: signal\n } : undefined;\n }\n format = numberFormat({\n type: type,\n specifiedFormat: format,\n config: config,\n normalizeStack: normalizeStack\n });\n if (isFieldDef(fieldOrDatumDef) && isBinning(fieldOrDatumDef.bin)) {\n var endField = vgField(fieldOrDatumDef, {\n expr: expr,\n binSuffix: 'end'\n });\n return {\n signal: binFormatExpression(field, endField, format, formatType, config)\n };\n } else if (format || channelDefType(fieldOrDatumDef) === 'quantitative') {\n return {\n signal: \"\".concat(formatExpr(field, format))\n };\n } else {\n return {\n signal: \"isValid(\".concat(field, \") ? \").concat(field, \" : \\\"\\\"+\").concat(field)\n };\n }\n}\nfunction fieldToFormat(fieldOrDatumDef, expr, normalizeStack) {\n if (isFieldDef(fieldOrDatumDef)) {\n if (normalizeStack) {\n return \"\".concat(vgField(fieldOrDatumDef, {\n expr: expr,\n suffix: 'end'\n }), \"-\").concat(vgField(fieldOrDatumDef, {\n expr: expr,\n suffix: 'start'\n }));\n } else {\n return vgField(fieldOrDatumDef, {\n expr: expr\n });\n }\n } else {\n return datumDefToExpr(fieldOrDatumDef);\n }\n}\nexport function formatCustomType(_ref2) {\n var _field;\n var fieldOrDatumDef = _ref2.fieldOrDatumDef,\n format = _ref2.format,\n formatType = _ref2.formatType,\n expr = _ref2.expr,\n normalizeStack = _ref2.normalizeStack,\n config = _ref2.config,\n field = _ref2.field;\n (_field = field) !== null && _field !== void 0 ? _field : field = fieldToFormat(fieldOrDatumDef, expr, normalizeStack);\n if (field !== 'datum.value' &&\n // For axis/legend, we can't correctly know the end of the bin from `datum`\n isFieldDef(fieldOrDatumDef) && isBinning(fieldOrDatumDef.bin)) {\n var endField = vgField(fieldOrDatumDef, {\n expr: expr,\n binSuffix: 'end'\n });\n return {\n signal: binFormatExpression(field, endField, format, formatType, config)\n };\n }\n return {\n signal: customFormatExpr(formatType, field, format)\n };\n}\nexport function guideFormat(fieldOrDatumDef, type, format, formatType, config, omitTimeFormatConfig // axis doesn't use config.timeFormat\n) {\n if (isString(formatType) && isCustomFormatType(formatType)) {\n return undefined; // handled in encode block\n } else if (format === undefined && formatType === undefined && config.customFormatTypes) {\n if (channelDefType(fieldOrDatumDef) === 'quantitative') {\n if (config.normalizedNumberFormatType && isPositionFieldOrDatumDef(fieldOrDatumDef) && fieldOrDatumDef.stack === 'normalize') {\n return undefined; // handled in encode block\n }\n\n if (config.numberFormatType) {\n return undefined; // handled in encode block\n }\n }\n }\n\n if (isPositionFieldOrDatumDef(fieldOrDatumDef) && fieldOrDatumDef.stack === 'normalize' && config.normalizedNumberFormat) {\n return numberFormat({\n type: 'quantitative',\n config: config,\n normalizeStack: true\n });\n }\n if (isFieldOrDatumDefForTimeFormat(fieldOrDatumDef)) {\n var _normalizeTimeUnit2;\n var timeUnit = isFieldDef(fieldOrDatumDef) ? (_normalizeTimeUnit2 = normalizeTimeUnit(fieldOrDatumDef.timeUnit)) === null || _normalizeTimeUnit2 === void 0 ? void 0 : _normalizeTimeUnit2.unit : undefined;\n if (timeUnit === undefined && config.customFormatTypes && config.timeFormatType) {\n return undefined; // hanlded in encode block\n }\n\n return timeFormat({\n specifiedFormat: format,\n timeUnit: timeUnit,\n config: config,\n omitTimeFormatConfig: omitTimeFormatConfig\n });\n }\n return numberFormat({\n type: type,\n specifiedFormat: format,\n config: config\n });\n}\nexport function guideFormatType(formatType, fieldOrDatumDef, scaleType) {\n if (formatType && (isSignalRef(formatType) || formatType === 'number' || formatType === 'time')) {\n return formatType;\n }\n if (isFieldOrDatumDefForTimeFormat(fieldOrDatumDef) && scaleType !== 'time' && scaleType !== 'utc') {\n var _normalizeTimeUnit3;\n return isFieldDef(fieldOrDatumDef) && (_normalizeTimeUnit3 = normalizeTimeUnit(fieldOrDatumDef === null || fieldOrDatumDef === void 0 ? void 0 : fieldOrDatumDef.timeUnit)) !== null && _normalizeTimeUnit3 !== void 0 && _normalizeTimeUnit3.utc ? 'utc' : 'time';\n }\n return undefined;\n}\n/**\n * Returns number format for a fieldDef.\n */\nexport function numberFormat(_ref3) {\n var type = _ref3.type,\n specifiedFormat = _ref3.specifiedFormat,\n config = _ref3.config,\n normalizeStack = _ref3.normalizeStack;\n // Specified format in axis/legend has higher precedence than fieldDef.format\n if (isString(specifiedFormat)) {\n return specifiedFormat;\n }\n if (type === QUANTITATIVE) {\n // we only apply the default if the field is quantitative\n return normalizeStack ? config.normalizedNumberFormat : config.numberFormat;\n }\n return undefined;\n}\n/**\n * Returns time format for a fieldDef for use in guides.\n */\nexport function timeFormat(_ref4) {\n var specifiedFormat = _ref4.specifiedFormat,\n timeUnit = _ref4.timeUnit,\n config = _ref4.config,\n omitTimeFormatConfig = _ref4.omitTimeFormatConfig;\n if (specifiedFormat) {\n return specifiedFormat;\n }\n if (timeUnit) {\n return {\n signal: timeUnitSpecifierExpression(timeUnit)\n };\n }\n return omitTimeFormatConfig ? undefined : config.timeFormat;\n}\nfunction formatExpr(field, format) {\n return \"format(\".concat(field, \", \\\"\").concat(format || '', \"\\\")\");\n}\nfunction binNumberFormatExpr(field, format, formatType, config) {\n var _ref5;\n if (isCustomFormatType(formatType)) {\n return customFormatExpr(formatType, field, format);\n }\n return formatExpr(field, (_ref5 = isString(format) ? format : undefined) !== null && _ref5 !== void 0 ? _ref5 : config.numberFormat);\n}\nexport function binFormatExpression(startField, endField, format, formatType, config) {\n if (format === undefined && formatType === undefined && config.customFormatTypes && config.numberFormatType) {\n return binFormatExpression(startField, endField, config.numberFormat, config.numberFormatType, config);\n }\n var start = binNumberFormatExpr(startField, format, formatType, config);\n var end = binNumberFormatExpr(endField, format, formatType, config);\n return \"\".concat(fieldValidPredicate(startField, false), \" ? \\\"null\\\" : \").concat(start, \" + \\\"\").concat(BIN_RANGE_DELIMITER, \"\\\" + \").concat(end);\n}\n/**\n * Returns the time expression used for axis/legend labels or text mark for a temporal field\n */\nexport function timeFormatExpression(_ref6) {\n var field = _ref6.field,\n timeUnit = _ref6.timeUnit,\n format = _ref6.format,\n formatType = _ref6.formatType,\n rawTimeFormat = _ref6.rawTimeFormat,\n isUTCScale = _ref6.isUTCScale;\n if (!timeUnit || format) {\n // If there is no time unit, or if user explicitly specifies format for axis/legend/text.\n if (!timeUnit && formatType) {\n return \"\".concat(formatType, \"(\").concat(field, \", '\").concat(format, \"')\");\n }\n format = isString(format) ? format : rawTimeFormat; // only use provided timeFormat if there is no timeUnit.\n return \"\".concat(isUTCScale ? 'utc' : 'time', \"Format(\").concat(field, \", '\").concat(format, \"')\");\n } else {\n return formatExpression(timeUnit, field, isUTCScale);\n }\n}","import { isArray } from 'vega-util';\nexport var DEFAULT_SORT_OP = 'min';\nvar SORT_BY_CHANNEL_INDEX = {\n x: 1,\n y: 1,\n color: 1,\n fill: 1,\n stroke: 1,\n strokeWidth: 1,\n size: 1,\n shape: 1,\n fillOpacity: 1,\n strokeOpacity: 1,\n opacity: 1,\n text: 1\n};\nexport function isSortByChannel(c) {\n return c in SORT_BY_CHANNEL_INDEX;\n}\nexport function isSortByEncoding(sort) {\n return !!(sort !== null && sort !== void 0 && sort['encoding']);\n}\nexport function isSortField(sort) {\n return sort && (sort['op'] === 'count' || !!sort['field']);\n}\nexport function isSortArray(sort) {\n return sort && isArray(sort);\n}","export function isFacetMapping(f) {\n return 'row' in f || 'column' in f;\n}\nexport function isFacetFieldDef(channelDef) {\n return !!channelDef && 'header' in channelDef;\n}\nexport function isFacetSpec(spec) {\n return 'facet' in spec;\n}","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nvar _excluded = [\"format\", \"formatType\"],\n _excluded2 = [\"format\", \"formatType\"],\n _excluded3 = [\"orient\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { isArray, isBoolean, isNumber, isString } from 'vega-util';\nimport { isAggregateOp, isArgmaxDef, isArgminDef, isCountingAggregateOp } from './aggregate';\nimport { autoMaxBins, binToString, isBinned, isBinning } from './bin';\nimport { ANGLE, COLOR, COLUMN, DESCRIPTION, DETAIL, FACET, FILL, FILLOPACITY, getSizeChannel, HREF, isScaleChannel, isSecondaryRangeChannel, isXorY, KEY, LATITUDE, LATITUDE2, LONGITUDE, LONGITUDE2, OPACITY, ORDER, RADIUS, RADIUS2, ROW, SHAPE, SIZE, STROKE, STROKEDASH, STROKEOPACITY, STROKEWIDTH, TEXT, THETA, THETA2, TOOLTIP, URL, X, X2, XOFFSET, Y, Y2, YOFFSET } from './channel';\nimport { getMarkConfig, getMarkPropOrConfig } from './compile/common';\nimport { isCustomFormatType } from './compile/format';\nimport { dateTimeToExpr, isDateTime } from './datetime';\nimport { isExprRef } from './expr';\nimport * as log from './log';\nimport { isRectBasedMark } from './mark';\nimport { hasDiscreteDomain, isContinuousToDiscrete, SCALE_CATEGORY_INDEX } from './scale';\nimport { isSortByChannel } from './sort';\nimport { isFacetFieldDef } from './spec/facet';\nimport { getTimeUnitParts, isBinnedTimeUnit, isLocalSingleTimeUnit, normalizeTimeUnit, timeUnitToString } from './timeunit';\nimport { getFullName, QUANTITATIVE } from './type';\nimport { flatAccessWithDatum, getFirstDefined, internalField, omit, removePathFromField, replacePathInField, stringify, titleCase } from './util';\nimport { isSignalRef } from './vega.schema';\nexport function isConditionalParameter(c) {\n return c['param'];\n}\nexport function isRepeatRef(field) {\n return field && !isString(field) && 'repeat' in field;\n}\nexport function toFieldDefBase(fieldDef) {\n var field = fieldDef.field,\n timeUnit = fieldDef.timeUnit,\n bin = fieldDef.bin,\n aggregate = fieldDef.aggregate;\n return _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, timeUnit ? {\n timeUnit: timeUnit\n } : {}), bin ? {\n bin: bin\n } : {}), aggregate ? {\n aggregate: aggregate\n } : {}), {}, {\n field: field\n });\n}\nexport function isSortableFieldDef(fieldDef) {\n return 'sort' in fieldDef;\n}\nexport function getBandPosition(_ref) {\n var fieldDef = _ref.fieldDef,\n fieldDef2 = _ref.fieldDef2,\n mark = _ref.markDef,\n config = _ref.config;\n if (isFieldOrDatumDef(fieldDef) && fieldDef.bandPosition !== undefined) {\n return fieldDef.bandPosition;\n }\n if (isFieldDef(fieldDef)) {\n var timeUnit = fieldDef.timeUnit,\n bin = fieldDef.bin;\n if (timeUnit && !fieldDef2) {\n return isRectBasedMark(mark.type) ? 0 : getMarkConfig('timeUnitBandPosition', mark, config);\n } else if (isBinning(bin)) {\n return 0.5;\n }\n }\n return undefined;\n}\nexport function getBandSize(_ref2) {\n var channel = _ref2.channel,\n fieldDef = _ref2.fieldDef,\n fieldDef2 = _ref2.fieldDef2,\n mark = _ref2.markDef,\n config = _ref2.config,\n scaleType = _ref2.scaleType,\n useVlSizeChannel = _ref2.useVlSizeChannel;\n var sizeChannel = getSizeChannel(channel);\n var size = getMarkPropOrConfig(useVlSizeChannel ? 'size' : sizeChannel, mark, config, {\n vgChannel: sizeChannel\n });\n if (size !== undefined) {\n return size;\n }\n if (isFieldDef(fieldDef)) {\n var timeUnit = fieldDef.timeUnit,\n bin = fieldDef.bin;\n if (timeUnit && !fieldDef2) {\n return {\n band: getMarkConfig('timeUnitBandSize', mark, config)\n };\n } else if (isBinning(bin) && !hasDiscreteDomain(scaleType)) {\n return {\n band: 1\n };\n }\n }\n if (isRectBasedMark(mark.type)) {\n var _config$mark$type3;\n if (scaleType) {\n if (hasDiscreteDomain(scaleType)) {\n var _config$mark$type;\n return ((_config$mark$type = config[mark.type]) === null || _config$mark$type === void 0 ? void 0 : _config$mark$type.discreteBandSize) || {\n band: 1\n };\n } else {\n var _config$mark$type2;\n return (_config$mark$type2 = config[mark.type]) === null || _config$mark$type2 === void 0 ? void 0 : _config$mark$type2.continuousBandSize;\n }\n }\n return (_config$mark$type3 = config[mark.type]) === null || _config$mark$type3 === void 0 ? void 0 : _config$mark$type3.discreteBandSize;\n }\n return undefined;\n}\nexport function hasBandEnd(fieldDef, fieldDef2, markDef, config) {\n if (isBinning(fieldDef.bin) || fieldDef.timeUnit && isTypedFieldDef(fieldDef) && fieldDef.type === 'temporal') {\n // Need to check bandPosition because non-rect marks (e.g., point) with timeUnit\n // doesn't have to use bandEnd if there is no bandPosition.\n return getBandPosition({\n fieldDef: fieldDef,\n fieldDef2: fieldDef2,\n markDef: markDef,\n config: config\n }) !== undefined;\n }\n return false;\n}\nexport function isOrderOnlyDef(orderDef) {\n return orderDef && !!orderDef.sort && !orderDef['field'];\n}\nexport function isConditionalDef(channelDef) {\n return channelDef && 'condition' in channelDef;\n}\n/**\n * Return if a channelDef is a ConditionalValueDef with ConditionFieldDef\n */\nexport function hasConditionalFieldDef(channelDef) {\n var condition = channelDef === null || channelDef === void 0 ? void 0 : channelDef['condition'];\n return !!condition && !isArray(condition) && isFieldDef(condition);\n}\nexport function hasConditionalFieldOrDatumDef(channelDef) {\n var condition = channelDef === null || channelDef === void 0 ? void 0 : channelDef['condition'];\n return !!condition && !isArray(condition) && isFieldOrDatumDef(condition);\n}\nexport function hasConditionalValueDef(channelDef) {\n var condition = channelDef === null || channelDef === void 0 ? void 0 : channelDef['condition'];\n return !!condition && (isArray(condition) || isValueDef(condition));\n}\nexport function isFieldDef(channelDef) {\n // TODO: we can't use field in channelDef here as it's somehow failing runtime test\n return channelDef && (!!channelDef['field'] || channelDef['aggregate'] === 'count');\n}\nexport function channelDefType(channelDef) {\n return channelDef === null || channelDef === void 0 ? void 0 : channelDef['type'];\n}\nexport function isDatumDef(channelDef) {\n return channelDef && 'datum' in channelDef;\n}\nexport function isContinuousFieldOrDatumDef(cd) {\n // TODO: make datum support DateTime object\n return isTypedFieldDef(cd) && !isDiscrete(cd) || isNumericDataDef(cd);\n}\nexport function isUnbinnedQuantitativeFieldOrDatumDef(cd) {\n // TODO: make datum support DateTime object\n return isTypedFieldDef(cd) && cd.type === 'quantitative' && !cd.bin || isNumericDataDef(cd);\n}\nexport function isNumericDataDef(cd) {\n return isDatumDef(cd) && isNumber(cd.datum);\n}\nexport function isFieldOrDatumDef(channelDef) {\n return isFieldDef(channelDef) || isDatumDef(channelDef);\n}\nexport function isTypedFieldDef(channelDef) {\n return channelDef && ('field' in channelDef || channelDef['aggregate'] === 'count') && 'type' in channelDef;\n}\nexport function isValueDef(channelDef) {\n return channelDef && 'value' in channelDef && 'value' in channelDef;\n}\nexport function isScaleFieldDef(channelDef) {\n return channelDef && ('scale' in channelDef || 'sort' in channelDef);\n}\nexport function isPositionFieldOrDatumDef(channelDef) {\n return channelDef && ('axis' in channelDef || 'stack' in channelDef || 'impute' in channelDef);\n}\nexport function isMarkPropFieldOrDatumDef(channelDef) {\n return channelDef && 'legend' in channelDef;\n}\nexport function isStringFieldOrDatumDef(channelDef) {\n return channelDef && ('format' in channelDef || 'formatType' in channelDef);\n}\nexport function toStringFieldDef(fieldDef) {\n // omit properties that don't exist in string field defs\n return omit(fieldDef, ['legend', 'axis', 'header', 'scale']);\n}\nfunction isOpFieldDef(fieldDef) {\n return 'op' in fieldDef;\n}\n/**\n * Get a Vega field reference from a Vega-Lite field def.\n */\nexport function vgField(fieldDef) {\n var opt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var field = fieldDef.field;\n var prefix = opt.prefix;\n var suffix = opt.suffix;\n var argAccessor = ''; // for accessing argmin/argmax field at the end without getting escaped\n if (isCount(fieldDef)) {\n field = internalField('count');\n } else {\n var fn;\n if (!opt.nofn) {\n if (isOpFieldDef(fieldDef)) {\n fn = fieldDef.op;\n } else {\n var bin = fieldDef.bin,\n aggregate = fieldDef.aggregate,\n timeUnit = fieldDef.timeUnit;\n if (isBinning(bin)) {\n var _opt$binSuffix, _opt$suffix;\n fn = binToString(bin);\n suffix = ((_opt$binSuffix = opt.binSuffix) !== null && _opt$binSuffix !== void 0 ? _opt$binSuffix : '') + ((_opt$suffix = opt.suffix) !== null && _opt$suffix !== void 0 ? _opt$suffix : '');\n } else if (aggregate) {\n if (isArgmaxDef(aggregate)) {\n argAccessor = \"[\\\"\".concat(field, \"\\\"]\");\n field = \"argmax_\".concat(aggregate.argmax);\n } else if (isArgminDef(aggregate)) {\n argAccessor = \"[\\\"\".concat(field, \"\\\"]\");\n field = \"argmin_\".concat(aggregate.argmin);\n } else {\n fn = String(aggregate);\n }\n } else if (timeUnit && !isBinnedTimeUnit(timeUnit)) {\n var _opt$suffix2;\n fn = timeUnitToString(timeUnit);\n suffix = (!['range', 'mid'].includes(opt.binSuffix) && opt.binSuffix || '') + ((_opt$suffix2 = opt.suffix) !== null && _opt$suffix2 !== void 0 ? _opt$suffix2 : '');\n }\n }\n }\n if (fn) {\n field = field ? \"\".concat(fn, \"_\").concat(field) : fn;\n }\n }\n if (suffix) {\n field = \"\".concat(field, \"_\").concat(suffix);\n }\n if (prefix) {\n field = \"\".concat(prefix, \"_\").concat(field);\n }\n if (opt.forAs) {\n return removePathFromField(field);\n } else if (opt.expr) {\n // Expression to access flattened field. No need to escape dots.\n return flatAccessWithDatum(field, opt.expr) + argAccessor;\n } else {\n // We flattened all fields so paths should have become dot.\n return replacePathInField(field) + argAccessor;\n }\n}\nexport function isDiscrete(def) {\n switch (def.type) {\n case 'nominal':\n case 'ordinal':\n case 'geojson':\n return true;\n case 'quantitative':\n return isFieldDef(def) && !!def.bin;\n case 'temporal':\n return false;\n }\n throw new Error(log.message.invalidFieldType(def.type));\n}\nexport function isDiscretizing(def) {\n var _def$scale;\n return isScaleFieldDef(def) && isContinuousToDiscrete((_def$scale = def.scale) === null || _def$scale === void 0 ? void 0 : _def$scale.type);\n}\nexport function isCount(fieldDef) {\n return fieldDef.aggregate === 'count';\n}\nexport function verbalTitleFormatter(fieldDef, config) {\n var field = fieldDef.field,\n bin = fieldDef.bin,\n timeUnit = fieldDef.timeUnit,\n aggregate = fieldDef.aggregate;\n if (aggregate === 'count') {\n return config.countTitle;\n } else if (isBinning(bin)) {\n return \"\".concat(field, \" (binned)\");\n } else if (timeUnit && !isBinnedTimeUnit(timeUnit)) {\n var _normalizeTimeUnit;\n var unit = (_normalizeTimeUnit = normalizeTimeUnit(timeUnit)) === null || _normalizeTimeUnit === void 0 ? void 0 : _normalizeTimeUnit.unit;\n if (unit) {\n return \"\".concat(field, \" (\").concat(getTimeUnitParts(unit).join('-'), \")\");\n }\n } else if (aggregate) {\n if (isArgmaxDef(aggregate)) {\n return \"\".concat(field, \" for max \").concat(aggregate.argmax);\n } else if (isArgminDef(aggregate)) {\n return \"\".concat(field, \" for min \").concat(aggregate.argmin);\n } else {\n return \"\".concat(titleCase(aggregate), \" of \").concat(field);\n }\n }\n return field;\n}\nexport function functionalTitleFormatter(fieldDef) {\n var aggregate = fieldDef.aggregate,\n bin = fieldDef.bin,\n timeUnit = fieldDef.timeUnit,\n field = fieldDef.field;\n if (isArgmaxDef(aggregate)) {\n return \"\".concat(field, \" for argmax(\").concat(aggregate.argmax, \")\");\n } else if (isArgminDef(aggregate)) {\n return \"\".concat(field, \" for argmin(\").concat(aggregate.argmin, \")\");\n }\n var timeUnitParams = timeUnit && !isBinnedTimeUnit(timeUnit) ? normalizeTimeUnit(timeUnit) : undefined;\n var fn = aggregate || (timeUnitParams === null || timeUnitParams === void 0 ? void 0 : timeUnitParams.unit) || (timeUnitParams === null || timeUnitParams === void 0 ? void 0 : timeUnitParams.maxbins) && 'timeunit' || isBinning(bin) && 'bin';\n if (fn) {\n return \"\".concat(fn.toUpperCase(), \"(\").concat(field, \")\");\n } else {\n return field;\n }\n}\nexport var defaultTitleFormatter = function defaultTitleFormatter(fieldDef, config) {\n switch (config.fieldTitle) {\n case 'plain':\n return fieldDef.field;\n case 'functional':\n return functionalTitleFormatter(fieldDef);\n default:\n return verbalTitleFormatter(fieldDef, config);\n }\n};\nvar titleFormatter = defaultTitleFormatter;\nexport function setTitleFormatter(formatter) {\n titleFormatter = formatter;\n}\nexport function resetTitleFormatter() {\n setTitleFormatter(defaultTitleFormatter);\n}\nexport function title(fieldOrDatumDef, config, _ref3) {\n var _getGuide;\n var allowDisabling = _ref3.allowDisabling,\n _ref3$includeDefault = _ref3.includeDefault,\n includeDefault = _ref3$includeDefault === void 0 ? true : _ref3$includeDefault;\n var guideTitle = (_getGuide = getGuide(fieldOrDatumDef)) === null || _getGuide === void 0 ? void 0 : _getGuide.title;\n if (!isFieldDef(fieldOrDatumDef)) {\n return guideTitle !== null && guideTitle !== void 0 ? guideTitle : fieldOrDatumDef.title;\n }\n var fieldDef = fieldOrDatumDef;\n var def = includeDefault ? defaultTitle(fieldDef, config) : undefined;\n if (allowDisabling) {\n return getFirstDefined(guideTitle, fieldDef.title, def);\n } else {\n var _ref4;\n return (_ref4 = guideTitle !== null && guideTitle !== void 0 ? guideTitle : fieldDef.title) !== null && _ref4 !== void 0 ? _ref4 : def;\n }\n}\nexport function getGuide(fieldDef) {\n if (isPositionFieldOrDatumDef(fieldDef) && fieldDef.axis) {\n return fieldDef.axis;\n } else if (isMarkPropFieldOrDatumDef(fieldDef) && fieldDef.legend) {\n return fieldDef.legend;\n } else if (isFacetFieldDef(fieldDef) && fieldDef.header) {\n return fieldDef.header;\n }\n return undefined;\n}\nexport function defaultTitle(fieldDef, config) {\n return titleFormatter(fieldDef, config);\n}\nexport function getFormatMixins(fieldDef) {\n if (isStringFieldOrDatumDef(fieldDef)) {\n var format = fieldDef.format,\n formatType = fieldDef.formatType;\n return {\n format: format,\n formatType: formatType\n };\n } else {\n var _getGuide2;\n var guide = (_getGuide2 = getGuide(fieldDef)) !== null && _getGuide2 !== void 0 ? _getGuide2 : {};\n var _format = guide.format,\n _formatType = guide.formatType;\n return {\n format: _format,\n formatType: _formatType\n };\n }\n}\nexport function defaultType(fieldDef, channel) {\n var _fieldDef$scale;\n switch (channel) {\n case 'latitude':\n case 'longitude':\n return 'quantitative';\n case 'row':\n case 'column':\n case 'facet':\n case 'shape':\n case 'strokeDash':\n return 'nominal';\n case 'order':\n return 'ordinal';\n }\n if (isSortableFieldDef(fieldDef) && isArray(fieldDef.sort)) {\n return 'ordinal';\n }\n var aggregate = fieldDef.aggregate,\n bin = fieldDef.bin,\n timeUnit = fieldDef.timeUnit;\n if (timeUnit) {\n return 'temporal';\n }\n if (bin || aggregate && !isArgmaxDef(aggregate) && !isArgminDef(aggregate)) {\n return 'quantitative';\n }\n if (isScaleFieldDef(fieldDef) && (_fieldDef$scale = fieldDef.scale) !== null && _fieldDef$scale !== void 0 && _fieldDef$scale.type) {\n switch (SCALE_CATEGORY_INDEX[fieldDef.scale.type]) {\n case 'numeric':\n case 'discretizing':\n return 'quantitative';\n case 'time':\n return 'temporal';\n }\n }\n return 'nominal';\n}\n/**\n * Returns the fieldDef -- either from the outer channelDef or from the condition of channelDef.\n * @param channelDef\n */\nexport function getFieldDef(channelDef) {\n if (isFieldDef(channelDef)) {\n return channelDef;\n } else if (hasConditionalFieldDef(channelDef)) {\n return channelDef.condition;\n }\n return undefined;\n}\nexport function getFieldOrDatumDef(channelDef) {\n if (isFieldOrDatumDef(channelDef)) {\n return channelDef;\n } else if (hasConditionalFieldOrDatumDef(channelDef)) {\n return channelDef.condition;\n }\n return undefined;\n}\n/**\n * Convert type to full, lowercase type, or augment the fieldDef with a default type if missing.\n */\nexport function initChannelDef(channelDef, channel, config) {\n var opt = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n if (isString(channelDef) || isNumber(channelDef) || isBoolean(channelDef)) {\n var primitiveType = isString(channelDef) ? 'string' : isNumber(channelDef) ? 'number' : 'boolean';\n log.warn(log.message.primitiveChannelDef(channel, primitiveType, channelDef));\n return {\n value: channelDef\n };\n }\n // If a fieldDef contains a field, we need type.\n if (isFieldOrDatumDef(channelDef)) {\n return initFieldOrDatumDef(channelDef, channel, config, opt);\n } else if (hasConditionalFieldOrDatumDef(channelDef)) {\n return _objectSpread(_objectSpread({}, channelDef), {}, {\n // Need to cast as normalizeFieldDef normally return FieldDef, but here we know that it is definitely Condition\n condition: initFieldOrDatumDef(channelDef.condition, channel, config, opt)\n });\n }\n return channelDef;\n}\nexport function initFieldOrDatumDef(fd, channel, config, opt) {\n if (isStringFieldOrDatumDef(fd)) {\n var format = fd.format,\n formatType = fd.formatType,\n rest = _objectWithoutProperties(fd, _excluded);\n if (isCustomFormatType(formatType) && !config.customFormatTypes) {\n log.warn(log.message.customFormatTypeNotAllowed(channel));\n return initFieldOrDatumDef(rest, channel, config, opt);\n }\n } else {\n var guideType = isPositionFieldOrDatumDef(fd) ? 'axis' : isMarkPropFieldOrDatumDef(fd) ? 'legend' : isFacetFieldDef(fd) ? 'header' : null;\n if (guideType && fd[guideType]) {\n var _fd$guideType = fd[guideType],\n _format2 = _fd$guideType.format,\n _formatType2 = _fd$guideType.formatType,\n newGuide = _objectWithoutProperties(_fd$guideType, _excluded2);\n if (isCustomFormatType(_formatType2) && !config.customFormatTypes) {\n log.warn(log.message.customFormatTypeNotAllowed(channel));\n return initFieldOrDatumDef(_objectSpread(_objectSpread({}, fd), {}, _defineProperty({}, guideType, newGuide)), channel, config, opt);\n }\n }\n }\n if (isFieldDef(fd)) {\n return initFieldDef(fd, channel, opt);\n }\n return initDatumDef(fd);\n}\nfunction initDatumDef(datumDef) {\n var type = datumDef['type'];\n if (type) {\n return datumDef;\n }\n var datum = datumDef.datum;\n type = isNumber(datum) ? 'quantitative' : isString(datum) ? 'nominal' : isDateTime(datum) ? 'temporal' : undefined;\n return _objectSpread(_objectSpread({}, datumDef), {}, {\n type: type\n });\n}\nexport function initFieldDef(fd, channel) {\n var _ref5 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n _ref5$compositeMark = _ref5.compositeMark,\n compositeMark = _ref5$compositeMark === void 0 ? false : _ref5$compositeMark;\n var aggregate = fd.aggregate,\n timeUnit = fd.timeUnit,\n bin = fd.bin,\n field = fd.field;\n var fieldDef = _objectSpread({}, fd);\n // Drop invalid aggregate\n if (!compositeMark && aggregate && !isAggregateOp(aggregate) && !isArgmaxDef(aggregate) && !isArgminDef(aggregate)) {\n log.warn(log.message.invalidAggregate(aggregate));\n delete fieldDef.aggregate;\n }\n // Normalize Time Unit\n if (timeUnit) {\n fieldDef.timeUnit = normalizeTimeUnit(timeUnit);\n }\n if (field) {\n fieldDef.field = \"\".concat(field);\n }\n // Normalize bin\n if (isBinning(bin)) {\n fieldDef.bin = normalizeBin(bin, channel);\n }\n if (isBinned(bin) && !isXorY(channel)) {\n log.warn(log.message.channelShouldNotBeUsedForBinned(channel));\n }\n // Normalize Type\n if (isTypedFieldDef(fieldDef)) {\n var type = fieldDef.type;\n var fullType = getFullName(type);\n if (type !== fullType) {\n // convert short type to full type\n fieldDef.type = fullType;\n }\n if (type !== 'quantitative') {\n if (isCountingAggregateOp(aggregate)) {\n log.warn(log.message.invalidFieldTypeForCountAggregate(type, aggregate));\n fieldDef.type = 'quantitative';\n }\n }\n } else if (!isSecondaryRangeChannel(channel)) {\n // If type is empty / invalid, then augment with default type\n var newType = defaultType(fieldDef, channel);\n fieldDef['type'] = newType;\n }\n if (isTypedFieldDef(fieldDef)) {\n var _ref6 = channelCompatibility(fieldDef, channel) || {},\n compatible = _ref6.compatible,\n warning = _ref6.warning;\n if (compatible === false) {\n log.warn(warning);\n }\n }\n if (isSortableFieldDef(fieldDef) && isString(fieldDef.sort)) {\n var sort = fieldDef.sort;\n if (isSortByChannel(sort)) {\n return _objectSpread(_objectSpread({}, fieldDef), {}, {\n sort: {\n encoding: sort\n }\n });\n }\n var sub = sort.substr(1);\n if (sort.charAt(0) === '-' && isSortByChannel(sub)) {\n return _objectSpread(_objectSpread({}, fieldDef), {}, {\n sort: {\n encoding: sub,\n order: 'descending'\n }\n });\n }\n }\n if (isFacetFieldDef(fieldDef)) {\n var header = fieldDef.header;\n if (header) {\n var orient = header.orient,\n rest = _objectWithoutProperties(header, _excluded3);\n if (orient) {\n return _objectSpread(_objectSpread({}, fieldDef), {}, {\n header: _objectSpread(_objectSpread({}, rest), {}, {\n labelOrient: header.labelOrient || orient,\n titleOrient: header.titleOrient || orient\n })\n });\n }\n }\n }\n return fieldDef;\n}\nexport function normalizeBin(bin, channel) {\n if (isBoolean(bin)) {\n return {\n maxbins: autoMaxBins(channel)\n };\n } else if (bin === 'binned') {\n return {\n binned: true\n };\n } else if (!bin.maxbins && !bin.step) {\n return _objectSpread(_objectSpread({}, bin), {}, {\n maxbins: autoMaxBins(channel)\n });\n } else {\n return bin;\n }\n}\nvar COMPATIBLE = {\n compatible: true\n};\nexport function channelCompatibility(fieldDef, channel) {\n var type = fieldDef.type;\n if (type === 'geojson' && channel !== 'shape') {\n return {\n compatible: false,\n warning: \"Channel \".concat(channel, \" should not be used with a geojson data.\")\n };\n }\n switch (channel) {\n case ROW:\n case COLUMN:\n case FACET:\n if (!isDiscrete(fieldDef)) {\n return {\n compatible: false,\n warning: log.message.channelShouldBeDiscrete(channel)\n };\n }\n return COMPATIBLE;\n case X:\n case Y:\n case XOFFSET:\n case YOFFSET:\n case COLOR:\n case FILL:\n case STROKE:\n case TEXT:\n case DETAIL:\n case KEY:\n case TOOLTIP:\n case HREF:\n case URL:\n case ANGLE:\n case THETA:\n case RADIUS:\n case DESCRIPTION:\n return COMPATIBLE;\n case LONGITUDE:\n case LONGITUDE2:\n case LATITUDE:\n case LATITUDE2:\n if (type !== QUANTITATIVE) {\n return {\n compatible: false,\n warning: \"Channel \".concat(channel, \" should be used with a quantitative field only, not \").concat(fieldDef.type, \" field.\")\n };\n }\n return COMPATIBLE;\n case OPACITY:\n case FILLOPACITY:\n case STROKEOPACITY:\n case STROKEWIDTH:\n case SIZE:\n case THETA2:\n case RADIUS2:\n case X2:\n case Y2:\n if (type === 'nominal' && !fieldDef['sort']) {\n return {\n compatible: false,\n warning: \"Channel \".concat(channel, \" should not be used with an unsorted discrete field.\")\n };\n }\n return COMPATIBLE;\n case SHAPE:\n case STROKEDASH:\n if (!isDiscrete(fieldDef) && !isDiscretizing(fieldDef)) {\n return {\n compatible: false,\n warning: log.message.channelShouldBeDiscreteOrDiscretizing(channel)\n };\n }\n return COMPATIBLE;\n case ORDER:\n if (fieldDef.type === 'nominal' && !('sort' in fieldDef)) {\n return {\n compatible: false,\n warning: \"Channel order is inappropriate for nominal field, which has no inherent order.\"\n };\n }\n return COMPATIBLE;\n }\n}\n/**\n * Check if the field def uses a time format or does not use any format but is temporal\n * (this does not cover field defs that are temporal but use a number format).\n */\nexport function isFieldOrDatumDefForTimeFormat(fieldOrDatumDef) {\n var _getFormatMixins = getFormatMixins(fieldOrDatumDef),\n formatType = _getFormatMixins.formatType;\n return formatType === 'time' || !formatType && isTimeFieldDef(fieldOrDatumDef);\n}\n/**\n * Check if field def has type `temporal`. If you want to also cover field defs that use a time format, use `isTimeFormatFieldDef`.\n */\nexport function isTimeFieldDef(def) {\n return def && (def['type'] === 'temporal' || isFieldDef(def) && !!def.timeUnit);\n}\n/**\n * Getting a value associated with a fielddef.\n * Convert the value to Vega expression if applicable (for datetime object, or string if the field def is temporal or has timeUnit)\n */\nexport function valueExpr(v, _ref7) {\n var _normalizeTimeUnit2;\n var timeUnit = _ref7.timeUnit,\n type = _ref7.type,\n wrapTime = _ref7.wrapTime,\n undefinedIfExprNotRequired = _ref7.undefinedIfExprNotRequired;\n var unit = timeUnit && ((_normalizeTimeUnit2 = normalizeTimeUnit(timeUnit)) === null || _normalizeTimeUnit2 === void 0 ? void 0 : _normalizeTimeUnit2.unit);\n var isTime = unit || type === 'temporal';\n var expr;\n if (isExprRef(v)) {\n expr = v.expr;\n } else if (isSignalRef(v)) {\n expr = v.signal;\n } else if (isDateTime(v)) {\n isTime = true;\n expr = dateTimeToExpr(v);\n } else if (isString(v) || isNumber(v)) {\n if (isTime) {\n expr = \"datetime(\".concat(stringify(v), \")\");\n if (isLocalSingleTimeUnit(unit)) {\n // for single timeUnit, we will use dateTimeToExpr to convert number/string to match the timeUnit\n if (isNumber(v) && v < 10000 || isString(v) && isNaN(Date.parse(v))) {\n expr = dateTimeToExpr(_defineProperty({}, unit, v));\n }\n }\n }\n }\n if (expr) {\n return wrapTime && isTime ? \"time(\".concat(expr, \")\") : expr;\n }\n // number or boolean or normal string\n return undefinedIfExprNotRequired ? undefined : stringify(v);\n}\n/**\n * Standardize value array -- convert each value to Vega expression if applicable\n */\nexport function valueArray(fieldOrDatumDef, values) {\n var type = fieldOrDatumDef.type;\n return values.map(function (v) {\n var timeUnit = isFieldDef(fieldOrDatumDef) && !isBinnedTimeUnit(fieldOrDatumDef.timeUnit) ? fieldOrDatumDef.timeUnit : undefined;\n var expr = valueExpr(v, {\n timeUnit: timeUnit,\n type: type,\n undefinedIfExprNotRequired: true\n });\n // return signal for the expression if we need an expression\n if (expr !== undefined) {\n return {\n signal: expr\n };\n }\n // otherwise just return the original value\n return v;\n });\n}\n/**\n * Checks whether a fieldDef for a particular channel requires a computed bin range.\n */\nexport function binRequiresRange(fieldDef, channel) {\n if (!isBinning(fieldDef.bin)) {\n console.warn('Only call this method for binned field defs.');\n return false;\n }\n // We need the range only when the user explicitly forces a binned field to be use discrete scale. In this case, bin range is used in axis and legend labels.\n // We could check whether the axis or legend exists (not disabled) but that seems overkill.\n return isScaleChannel(channel) && ['ordinal', 'nominal'].includes(fieldDef.type);\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { keys } from './util';\nexport var CONDITIONAL_AXIS_PROP_INDEX = {\n labelAlign: {\n part: 'labels',\n vgProp: 'align'\n },\n labelBaseline: {\n part: 'labels',\n vgProp: 'baseline'\n },\n labelColor: {\n part: 'labels',\n vgProp: 'fill'\n },\n labelFont: {\n part: 'labels',\n vgProp: 'font'\n },\n labelFontSize: {\n part: 'labels',\n vgProp: 'fontSize'\n },\n labelFontStyle: {\n part: 'labels',\n vgProp: 'fontStyle'\n },\n labelFontWeight: {\n part: 'labels',\n vgProp: 'fontWeight'\n },\n labelOpacity: {\n part: 'labels',\n vgProp: 'opacity'\n },\n labelOffset: null,\n labelPadding: null,\n gridColor: {\n part: 'grid',\n vgProp: 'stroke'\n },\n gridDash: {\n part: 'grid',\n vgProp: 'strokeDash'\n },\n gridDashOffset: {\n part: 'grid',\n vgProp: 'strokeDashOffset'\n },\n gridOpacity: {\n part: 'grid',\n vgProp: 'opacity'\n },\n gridWidth: {\n part: 'grid',\n vgProp: 'strokeWidth'\n },\n tickColor: {\n part: 'ticks',\n vgProp: 'stroke'\n },\n tickDash: {\n part: 'ticks',\n vgProp: 'strokeDash'\n },\n tickDashOffset: {\n part: 'ticks',\n vgProp: 'strokeDashOffset'\n },\n tickOpacity: {\n part: 'ticks',\n vgProp: 'opacity'\n },\n tickSize: null,\n tickWidth: {\n part: 'ticks',\n vgProp: 'strokeWidth'\n }\n};\nexport function isConditionalAxisValue(v) {\n return v === null || v === void 0 ? void 0 : v.condition;\n}\nexport var AXIS_PARTS = ['domain', 'grid', 'labels', 'ticks', 'title'];\n/**\n * A dictionary listing whether a certain axis property is applicable for only main axes or only grid axes.\n */\nexport var AXIS_PROPERTY_TYPE = {\n grid: 'grid',\n gridCap: 'grid',\n gridColor: 'grid',\n gridDash: 'grid',\n gridDashOffset: 'grid',\n gridOpacity: 'grid',\n gridScale: 'grid',\n gridWidth: 'grid',\n orient: 'main',\n bandPosition: 'both',\n aria: 'main',\n description: 'main',\n domain: 'main',\n domainCap: 'main',\n domainColor: 'main',\n domainDash: 'main',\n domainDashOffset: 'main',\n domainOpacity: 'main',\n domainWidth: 'main',\n format: 'main',\n formatType: 'main',\n labelAlign: 'main',\n labelAngle: 'main',\n labelBaseline: 'main',\n labelBound: 'main',\n labelColor: 'main',\n labelFlush: 'main',\n labelFlushOffset: 'main',\n labelFont: 'main',\n labelFontSize: 'main',\n labelFontStyle: 'main',\n labelFontWeight: 'main',\n labelLimit: 'main',\n labelLineHeight: 'main',\n labelOffset: 'main',\n labelOpacity: 'main',\n labelOverlap: 'main',\n labelPadding: 'main',\n labels: 'main',\n labelSeparation: 'main',\n maxExtent: 'main',\n minExtent: 'main',\n offset: 'both',\n position: 'main',\n tickCap: 'main',\n tickColor: 'main',\n tickDash: 'main',\n tickDashOffset: 'main',\n tickMinStep: 'both',\n tickOffset: 'both',\n tickOpacity: 'main',\n tickRound: 'both',\n ticks: 'main',\n tickSize: 'main',\n tickWidth: 'both',\n title: 'main',\n titleAlign: 'main',\n titleAnchor: 'main',\n titleAngle: 'main',\n titleBaseline: 'main',\n titleColor: 'main',\n titleFont: 'main',\n titleFontSize: 'main',\n titleFontStyle: 'main',\n titleFontWeight: 'main',\n titleLimit: 'main',\n titleLineHeight: 'main',\n titleOpacity: 'main',\n titlePadding: 'main',\n titleX: 'main',\n titleY: 'main',\n encode: 'both',\n scale: 'both',\n tickBand: 'both',\n tickCount: 'both',\n tickExtra: 'both',\n translate: 'both',\n values: 'both',\n zindex: 'both' // this is actually set afterward, so it doesn't matter\n};\n\nexport var COMMON_AXIS_PROPERTIES_INDEX = {\n orient: 1,\n aria: 1,\n bandPosition: 1,\n description: 1,\n domain: 1,\n domainCap: 1,\n domainColor: 1,\n domainDash: 1,\n domainDashOffset: 1,\n domainOpacity: 1,\n domainWidth: 1,\n format: 1,\n formatType: 1,\n grid: 1,\n gridCap: 1,\n gridColor: 1,\n gridDash: 1,\n gridDashOffset: 1,\n gridOpacity: 1,\n gridWidth: 1,\n labelAlign: 1,\n labelAngle: 1,\n labelBaseline: 1,\n labelBound: 1,\n labelColor: 1,\n labelFlush: 1,\n labelFlushOffset: 1,\n labelFont: 1,\n labelFontSize: 1,\n labelFontStyle: 1,\n labelFontWeight: 1,\n labelLimit: 1,\n labelLineHeight: 1,\n labelOffset: 1,\n labelOpacity: 1,\n labelOverlap: 1,\n labelPadding: 1,\n labels: 1,\n labelSeparation: 1,\n maxExtent: 1,\n minExtent: 1,\n offset: 1,\n position: 1,\n tickBand: 1,\n tickCap: 1,\n tickColor: 1,\n tickCount: 1,\n tickDash: 1,\n tickDashOffset: 1,\n tickExtra: 1,\n tickMinStep: 1,\n tickOffset: 1,\n tickOpacity: 1,\n tickRound: 1,\n ticks: 1,\n tickSize: 1,\n tickWidth: 1,\n title: 1,\n titleAlign: 1,\n titleAnchor: 1,\n titleAngle: 1,\n titleBaseline: 1,\n titleColor: 1,\n titleFont: 1,\n titleFontSize: 1,\n titleFontStyle: 1,\n titleFontWeight: 1,\n titleLimit: 1,\n titleLineHeight: 1,\n titleOpacity: 1,\n titlePadding: 1,\n titleX: 1,\n titleY: 1,\n translate: 1,\n values: 1,\n zindex: 1\n};\nvar AXIS_PROPERTIES_INDEX = _objectSpread(_objectSpread({}, COMMON_AXIS_PROPERTIES_INDEX), {}, {\n style: 1,\n labelExpr: 1,\n encoding: 1\n});\nexport function isAxisProperty(prop) {\n return !!AXIS_PROPERTIES_INDEX[prop];\n}\n// Export for dependent projects\nexport var AXIS_PROPERTIES = keys(AXIS_PROPERTIES_INDEX);\nvar AXIS_CONFIGS_INDEX = {\n axis: 1,\n axisBand: 1,\n axisBottom: 1,\n axisDiscrete: 1,\n axisLeft: 1,\n axisPoint: 1,\n axisQuantitative: 1,\n axisRight: 1,\n axisTemporal: 1,\n axisTop: 1,\n axisX: 1,\n axisXBand: 1,\n axisXDiscrete: 1,\n axisXPoint: 1,\n axisXQuantitative: 1,\n axisXTemporal: 1,\n axisY: 1,\n axisYBand: 1,\n axisYDiscrete: 1,\n axisYPoint: 1,\n axisYQuantitative: 1,\n axisYTemporal: 1\n};\nexport var AXIS_CONFIGS = keys(AXIS_CONFIGS_INDEX);","export function isUnitSpec(spec) {\n return 'mark' in spec;\n}","import _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport { getMarkType } from '../mark';\nimport { isUnitSpec } from '../spec/unit';\nexport var CompositeMarkNormalizer = /*#__PURE__*/function () {\n function CompositeMarkNormalizer(name, run) {\n _classCallCheck(this, CompositeMarkNormalizer);\n this.name = name;\n this.run = run;\n }\n _createClass(CompositeMarkNormalizer, [{\n key: \"hasMatchingType\",\n value: function hasMatchingType(spec) {\n if (isUnitSpec(spec)) {\n return getMarkType(spec.mark) === this.name;\n }\n return false;\n }\n }]);\n return CompositeMarkNormalizer;\n}();","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"field\", \"aggregate\", \"bin\", \"timeUnit\"];\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { array, isArray } from 'vega-util';\nimport { isArgmaxDef, isArgminDef } from './aggregate';\nimport { isBinned, isBinning } from './bin';\nimport { ANGLE, CHANNELS, COLOR, DESCRIPTION, DETAIL, FILL, FILLOPACITY, getMainChannelFromOffsetChannel, getOffsetScaleChannel, HREF, isChannel, isNonPositionScaleChannel, isSecondaryRangeChannel, isXorY, isXorYOffset, KEY, LATITUDE, LATITUDE2, LONGITUDE, LONGITUDE2, OPACITY, ORDER, RADIUS, RADIUS2, SHAPE, SIZE, STROKE, STROKEDASH, STROKEOPACITY, STROKEWIDTH, supportMark, TEXT, THETA, THETA2, TOOLTIP, UNIT_CHANNELS, URL, X, X2, XOFFSET, Y, Y2, YOFFSET } from './channel';\nimport { binRequiresRange, getFieldDef, getGuide, hasConditionalFieldDef, hasConditionalFieldOrDatumDef, initChannelDef, initFieldDef, isConditionalDef, isDatumDef, isFieldDef, isOrderOnlyDef, isTypedFieldDef, isValueDef, title, vgField } from './channeldef';\nimport * as log from './log';\nimport { isContinuous, isDiscrete, QUANTITATIVE, TEMPORAL } from './type';\nimport { keys, some } from './util';\nimport { isSignalRef } from './vega.schema';\nimport { isBinnedTimeUnit } from './timeunit';\nexport function channelHasField(encoding, channel) {\n var channelDef = encoding && encoding[channel];\n if (channelDef) {\n if (isArray(channelDef)) {\n return some(channelDef, function (fieldDef) {\n return !!fieldDef.field;\n });\n } else {\n return isFieldDef(channelDef) || hasConditionalFieldDef(channelDef);\n }\n }\n return false;\n}\nexport function channelHasFieldOrDatum(encoding, channel) {\n var channelDef = encoding && encoding[channel];\n if (channelDef) {\n if (isArray(channelDef)) {\n return some(channelDef, function (fieldDef) {\n return !!fieldDef.field;\n });\n } else {\n return isFieldDef(channelDef) || isDatumDef(channelDef) || hasConditionalFieldOrDatumDef(channelDef);\n }\n }\n return false;\n}\nexport function channelHasNestedOffsetScale(encoding, channel) {\n if (isXorY(channel)) {\n var fieldDef = encoding[channel];\n if ((isFieldDef(fieldDef) || isDatumDef(fieldDef)) && (isDiscrete(fieldDef.type) || isFieldDef(fieldDef) && fieldDef.timeUnit)) {\n var offsetChannel = getOffsetScaleChannel(channel);\n return channelHasFieldOrDatum(encoding, offsetChannel);\n }\n }\n return false;\n}\nexport function isAggregate(encoding) {\n return some(CHANNELS, function (channel) {\n if (channelHasField(encoding, channel)) {\n var channelDef = encoding[channel];\n if (isArray(channelDef)) {\n return some(channelDef, function (fieldDef) {\n return !!fieldDef.aggregate;\n });\n } else {\n var fieldDef = getFieldDef(channelDef);\n return fieldDef && !!fieldDef.aggregate;\n }\n }\n return false;\n });\n}\nexport function extractTransformsFromEncoding(oldEncoding, config) {\n var groupby = [];\n var bins = [];\n var timeUnits = [];\n var aggregate = [];\n var encoding = {};\n forEach(oldEncoding, function (channelDef, channel) {\n // Extract potential embedded transformations along with remaining properties\n if (isFieldDef(channelDef)) {\n var field = channelDef.field,\n aggOp = channelDef.aggregate,\n bin = channelDef.bin,\n timeUnit = channelDef.timeUnit,\n remaining = _objectWithoutProperties(channelDef, _excluded);\n if (aggOp || timeUnit || bin) {\n var guide = getGuide(channelDef);\n var isTitleDefined = guide === null || guide === void 0 ? void 0 : guide.title;\n var newField = vgField(channelDef, {\n forAs: true\n });\n var newFieldDef = _objectSpread(_objectSpread(_objectSpread({}, isTitleDefined ? [] : {\n title: title(channelDef, config, {\n allowDisabling: true\n })\n }), remaining), {}, {\n // Always overwrite field\n field: newField\n });\n if (aggOp) {\n var op;\n if (isArgmaxDef(aggOp)) {\n op = 'argmax';\n newField = vgField({\n op: 'argmax',\n field: aggOp.argmax\n }, {\n forAs: true\n });\n newFieldDef.field = \"\".concat(newField, \".\").concat(field);\n } else if (isArgminDef(aggOp)) {\n op = 'argmin';\n newField = vgField({\n op: 'argmin',\n field: aggOp.argmin\n }, {\n forAs: true\n });\n newFieldDef.field = \"\".concat(newField, \".\").concat(field);\n } else if (aggOp !== 'boxplot' && aggOp !== 'errorbar' && aggOp !== 'errorband') {\n op = aggOp;\n }\n if (op) {\n var aggregateEntry = {\n op: op,\n as: newField\n };\n if (field) {\n aggregateEntry.field = field;\n }\n aggregate.push(aggregateEntry);\n }\n } else {\n groupby.push(newField);\n if (isTypedFieldDef(channelDef) && isBinning(bin)) {\n bins.push({\n bin: bin,\n field: field,\n as: newField\n });\n // Add additional groupbys for range and end of bins\n groupby.push(vgField(channelDef, {\n binSuffix: 'end'\n }));\n if (binRequiresRange(channelDef, channel)) {\n groupby.push(vgField(channelDef, {\n binSuffix: 'range'\n }));\n }\n // Create accompanying 'x2' or 'y2' field if channel is 'x' or 'y' respectively\n if (isXorY(channel)) {\n var secondaryChannel = {\n field: \"\".concat(newField, \"_end\")\n };\n encoding[\"\".concat(channel, \"2\")] = secondaryChannel;\n }\n newFieldDef.bin = 'binned';\n if (!isSecondaryRangeChannel(channel)) {\n newFieldDef['type'] = QUANTITATIVE;\n }\n } else if (timeUnit && !isBinnedTimeUnit(timeUnit)) {\n timeUnits.push({\n timeUnit: timeUnit,\n field: field,\n as: newField\n });\n // define the format type for later compilation\n var formatType = isTypedFieldDef(channelDef) && channelDef.type !== TEMPORAL && 'time';\n if (formatType) {\n if (channel === TEXT || channel === TOOLTIP) {\n newFieldDef['formatType'] = formatType;\n } else if (isNonPositionScaleChannel(channel)) {\n newFieldDef['legend'] = _objectSpread({\n formatType: formatType\n }, newFieldDef['legend']);\n } else if (isXorY(channel)) {\n newFieldDef['axis'] = _objectSpread({\n formatType: formatType\n }, newFieldDef['axis']);\n }\n }\n }\n }\n // now the field should refer to post-transformed field instead\n encoding[channel] = newFieldDef;\n } else {\n groupby.push(field);\n encoding[channel] = oldEncoding[channel];\n }\n } else {\n // For value def / signal ref / datum def, just copy\n encoding[channel] = oldEncoding[channel];\n }\n });\n return {\n bins: bins,\n timeUnits: timeUnits,\n aggregate: aggregate,\n groupby: groupby,\n encoding: encoding\n };\n}\nexport function markChannelCompatible(encoding, channel, mark) {\n var markSupported = supportMark(channel, mark);\n if (!markSupported) {\n return false;\n } else if (markSupported === 'binned') {\n var primaryFieldDef = encoding[channel === X2 ? X : Y];\n // circle, point, square and tick only support x2/y2 when their corresponding x/y fieldDef\n // has \"binned\" data and thus need x2/y2 to specify the bin-end field.\n if (isFieldDef(primaryFieldDef) && isFieldDef(encoding[channel]) && isBinned(primaryFieldDef.bin)) {\n return true;\n } else {\n return false;\n }\n }\n return true;\n}\nexport function initEncoding(encoding, mark, filled, config) {\n var normalizedEncoding = {};\n var _iterator = _createForOfIteratorHelper(keys(encoding)),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var key = _step.value;\n if (!isChannel(key)) {\n // Drop invalid channel\n log.warn(log.message.invalidEncodingChannel(key));\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n var _iterator2 = _createForOfIteratorHelper(UNIT_CHANNELS),\n _step2;\n try {\n var _loop = function _loop() {\n var channel = _step2.value;\n if (!encoding[channel]) {\n return \"continue\";\n }\n var channelDef = encoding[channel];\n if (isXorYOffset(channel)) {\n var mainChannel = getMainChannelFromOffsetChannel(channel);\n var positionDef = normalizedEncoding[mainChannel];\n if (isFieldDef(positionDef)) {\n if (isContinuous(positionDef.type)) {\n if (isFieldDef(channelDef) && !positionDef.timeUnit) {\n // TODO: nesting continuous field instead continuous field should\n // behave like offsetting the data in data domain\n log.warn(log.message.offsetNestedInsideContinuousPositionScaleDropped(mainChannel));\n return \"continue\";\n }\n }\n } else {\n // no x/y, replace it with main channel\n channel = mainChannel;\n log.warn(log.message.replaceOffsetWithMainChannel(mainChannel));\n }\n }\n if (channel === 'angle' && mark === 'arc' && !encoding.theta) {\n log.warn(log.message.REPLACE_ANGLE_WITH_THETA);\n channel = THETA;\n }\n if (!markChannelCompatible(encoding, channel, mark)) {\n // Drop unsupported channel\n log.warn(log.message.incompatibleChannel(channel, mark));\n return \"continue\";\n }\n // Drop line's size if the field is aggregated.\n if (channel === SIZE && mark === 'line') {\n var fieldDef = getFieldDef(encoding[channel]);\n if (fieldDef !== null && fieldDef !== void 0 && fieldDef.aggregate) {\n log.warn(log.message.LINE_WITH_VARYING_SIZE);\n return \"continue\";\n }\n }\n // Drop color if either fill or stroke is specified\n if (channel === COLOR && (filled ? 'fill' in encoding : 'stroke' in encoding)) {\n log.warn(log.message.droppingColor('encoding', {\n fill: 'fill' in encoding,\n stroke: 'stroke' in encoding\n }));\n return \"continue\";\n }\n if (channel === DETAIL || channel === ORDER && !isArray(channelDef) && !isValueDef(channelDef) || channel === TOOLTIP && isArray(channelDef)) {\n if (channelDef) {\n if (channel === ORDER) {\n var def = encoding[channel];\n if (isOrderOnlyDef(def)) {\n normalizedEncoding[channel] = def;\n return \"continue\";\n }\n }\n // Array of fieldDefs for detail channel (or production rule)\n normalizedEncoding[channel] = array(channelDef).reduce(function (defs, fieldDef) {\n if (!isFieldDef(fieldDef)) {\n log.warn(log.message.emptyFieldDef(fieldDef, channel));\n } else {\n defs.push(initFieldDef(fieldDef, channel));\n }\n return defs;\n }, []);\n }\n } else {\n if (channel === TOOLTIP && channelDef === null) {\n // Preserve null so we can use it to disable tooltip\n normalizedEncoding[channel] = null;\n } else if (!isFieldDef(channelDef) && !isDatumDef(channelDef) && !isValueDef(channelDef) && !isConditionalDef(channelDef) && !isSignalRef(channelDef)) {\n log.warn(log.message.emptyFieldDef(channelDef, channel));\n return \"continue\";\n }\n normalizedEncoding[channel] = initChannelDef(channelDef, channel, config);\n }\n };\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _ret = _loop();\n if (_ret === \"continue\") continue;\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n return normalizedEncoding;\n}\n/**\n * For composite marks, we have to call initChannelDef during init so we can infer types earlier.\n */\nexport function normalizeEncoding(encoding, config) {\n var normalizedEncoding = {};\n var _iterator3 = _createForOfIteratorHelper(keys(encoding)),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var channel = _step3.value;\n var newChannelDef = initChannelDef(encoding[channel], channel, config, {\n compositeMark: true\n });\n normalizedEncoding[channel] = newChannelDef;\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n return normalizedEncoding;\n}\nexport function fieldDefs(encoding) {\n var arr = [];\n var _iterator4 = _createForOfIteratorHelper(keys(encoding)),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var channel = _step4.value;\n if (channelHasField(encoding, channel)) {\n var channelDef = encoding[channel];\n var channelDefArray = array(channelDef);\n var _iterator5 = _createForOfIteratorHelper(channelDefArray),\n _step5;\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var def = _step5.value;\n if (isFieldDef(def)) {\n arr.push(def);\n } else if (hasConditionalFieldDef(def)) {\n arr.push(def.condition);\n }\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n }\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n return arr;\n}\nexport function forEach(mapping, f, thisArg) {\n if (!mapping) {\n return;\n }\n var _iterator6 = _createForOfIteratorHelper(keys(mapping)),\n _step6;\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var channel = _step6.value;\n var el = mapping[channel];\n if (isArray(el)) {\n var _iterator7 = _createForOfIteratorHelper(el),\n _step7;\n try {\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n var channelDef = _step7.value;\n f.call(thisArg, channelDef, channel);\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n } else {\n f.call(thisArg, el, channel);\n }\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n}\nexport function reduce(mapping, f, init, thisArg) {\n if (!mapping) {\n return init;\n }\n return keys(mapping).reduce(function (r, channel) {\n var map = mapping[channel];\n if (isArray(map)) {\n return map.reduce(function (r1, channelDef) {\n return f.call(thisArg, r1, channelDef, channel);\n }, r);\n } else {\n return f.call(thisArg, r, map, channel);\n }\n }, init);\n}\n/**\n * Returns list of path grouping fields for the given encoding\n */\nexport function pathGroupingFields(mark, encoding) {\n return keys(encoding).reduce(function (details, channel) {\n switch (channel) {\n // x, y, x2, y2, lat, long, lat1, long2, order, tooltip, href, aria label, cursor should not cause lines to group\n case X:\n case Y:\n case HREF:\n case DESCRIPTION:\n case URL:\n case X2:\n case Y2:\n case XOFFSET:\n case YOFFSET:\n case THETA:\n case THETA2:\n case RADIUS:\n case RADIUS2:\n // falls through\n case LATITUDE:\n case LONGITUDE:\n case LATITUDE2:\n case LONGITUDE2:\n // TODO: case 'cursor':\n // text, shape, shouldn't be a part of line/trail/area [falls through]\n case TEXT:\n case SHAPE:\n case ANGLE:\n // falls through\n // tooltip fields should not be added to group by [falls through]\n case TOOLTIP:\n return details;\n case ORDER:\n // order should not group line / trail\n if (mark === 'line' || mark === 'trail') {\n return details;\n }\n // but order should group area for stacking (falls through)\n case DETAIL:\n case KEY:\n {\n var channelDef = encoding[channel];\n if (isArray(channelDef) || isFieldDef(channelDef)) {\n var _iterator8 = _createForOfIteratorHelper(array(channelDef)),\n _step8;\n try {\n for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {\n var fieldDef = _step8.value;\n if (!fieldDef.aggregate) {\n details.push(vgField(fieldDef, {}));\n }\n }\n } catch (err) {\n _iterator8.e(err);\n } finally {\n _iterator8.f();\n }\n }\n return details;\n }\n case SIZE:\n if (mark === 'trail') {\n // For trail, size should not group trail lines.\n return details;\n }\n // For line, size should group lines.\n // falls through\n case COLOR:\n case FILL:\n case STROKE:\n case OPACITY:\n case FILLOPACITY:\n case STROKEOPACITY:\n case STROKEDASH:\n case STROKEWIDTH:\n {\n // TODO strokeDashOffset:\n // falls through\n var _fieldDef = getFieldDef(encoding[channel]);\n if (_fieldDef && !_fieldDef.aggregate) {\n details.push(vgField(_fieldDef, {}));\n }\n return details;\n }\n }\n }, []);\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"tooltip\"],\n _excluded2 = [\"aggregate\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { isArray, isBoolean, isString } from 'vega-util';\nimport { isContinuousFieldOrDatumDef, isFieldDef, isFieldOrDatumDefForTimeFormat } from '../channeldef';\nimport { fieldDefs } from '../encoding';\nimport * as log from '../log';\nimport { isMarkDef } from '../mark';\nimport { getFirstDefined, hash, unique } from '../util';\nimport { isSignalRef } from '../vega.schema';\nimport { toStringFieldDef } from './../channeldef';\nexport function filterTooltipWithAggregatedField(oldEncoding) {\n var tooltip = oldEncoding.tooltip,\n filteredEncoding = _objectWithoutProperties(oldEncoding, _excluded);\n if (!tooltip) {\n return {\n filteredEncoding: filteredEncoding\n };\n }\n var customTooltipWithAggregatedField;\n var customTooltipWithoutAggregatedField;\n if (isArray(tooltip)) {\n var _iterator = _createForOfIteratorHelper(tooltip),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var t = _step.value;\n if (t.aggregate) {\n if (!customTooltipWithAggregatedField) {\n customTooltipWithAggregatedField = [];\n }\n customTooltipWithAggregatedField.push(t);\n } else {\n if (!customTooltipWithoutAggregatedField) {\n customTooltipWithoutAggregatedField = [];\n }\n customTooltipWithoutAggregatedField.push(t);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n if (customTooltipWithAggregatedField) {\n filteredEncoding.tooltip = customTooltipWithAggregatedField;\n }\n } else {\n if (tooltip['aggregate']) {\n filteredEncoding.tooltip = tooltip;\n } else {\n customTooltipWithoutAggregatedField = tooltip;\n }\n }\n if (isArray(customTooltipWithoutAggregatedField) && customTooltipWithoutAggregatedField.length === 1) {\n customTooltipWithoutAggregatedField = customTooltipWithoutAggregatedField[0];\n }\n return {\n customTooltipWithoutAggregatedField: customTooltipWithoutAggregatedField,\n filteredEncoding: filteredEncoding\n };\n}\nexport function getCompositeMarkTooltip(tooltipSummary, continuousAxisChannelDef, encodingWithoutContinuousAxis) {\n var withFieldName = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n if ('tooltip' in encodingWithoutContinuousAxis) {\n return {\n tooltip: encodingWithoutContinuousAxis.tooltip\n };\n }\n var fiveSummaryTooltip = tooltipSummary.map(function (_ref) {\n var fieldPrefix = _ref.fieldPrefix,\n titlePrefix = _ref.titlePrefix;\n var mainTitle = withFieldName ? \" of \".concat(getTitle(continuousAxisChannelDef)) : '';\n return {\n field: fieldPrefix + continuousAxisChannelDef.field,\n type: continuousAxisChannelDef.type,\n title: isSignalRef(titlePrefix) ? {\n signal: \"\".concat(titlePrefix, \"\\\"\").concat(escape(mainTitle), \"\\\"\")\n } : titlePrefix + mainTitle\n };\n });\n var tooltipFieldDefs = fieldDefs(encodingWithoutContinuousAxis).map(toStringFieldDef);\n return {\n tooltip: [].concat(_toConsumableArray(fiveSummaryTooltip), _toConsumableArray(unique(tooltipFieldDefs, hash)))\n };\n}\nexport function getTitle(continuousAxisChannelDef) {\n var title = continuousAxisChannelDef.title,\n field = continuousAxisChannelDef.field;\n return getFirstDefined(title, field);\n}\nexport function makeCompositeAggregatePartFactory(compositeMarkDef, continuousAxis, continuousAxisChannelDef, sharedEncoding, compositeMarkConfig) {\n var scale = continuousAxisChannelDef.scale,\n axis = continuousAxisChannelDef.axis;\n return function (_ref2) {\n var partName = _ref2.partName,\n mark = _ref2.mark,\n positionPrefix = _ref2.positionPrefix,\n _ref2$endPositionPref = _ref2.endPositionPrefix,\n endPositionPrefix = _ref2$endPositionPref === void 0 ? undefined : _ref2$endPositionPref,\n _ref2$extraEncoding = _ref2.extraEncoding,\n extraEncoding = _ref2$extraEncoding === void 0 ? {} : _ref2$extraEncoding;\n var title = getTitle(continuousAxisChannelDef);\n return partLayerMixins(compositeMarkDef, partName, compositeMarkConfig, {\n mark: mark,\n encoding: _objectSpread(_objectSpread(_objectSpread(_defineProperty({}, continuousAxis, _objectSpread(_objectSpread(_objectSpread({\n field: \"\".concat(positionPrefix, \"_\").concat(continuousAxisChannelDef.field),\n type: continuousAxisChannelDef.type\n }, title !== undefined ? {\n title: title\n } : {}), scale !== undefined ? {\n scale: scale\n } : {}), axis !== undefined ? {\n axis: axis\n } : {})), isString(endPositionPrefix) ? _defineProperty({}, \"\".concat(continuousAxis, \"2\"), {\n field: \"\".concat(endPositionPrefix, \"_\").concat(continuousAxisChannelDef.field)\n }) : {}), sharedEncoding), extraEncoding)\n });\n };\n}\nexport function partLayerMixins(markDef, part, compositeMarkConfig, partBaseSpec) {\n var clip = markDef.clip,\n color = markDef.color,\n opacity = markDef.opacity;\n var mark = markDef.type;\n if (markDef[part] || markDef[part] === undefined && compositeMarkConfig[part]) {\n return [_objectSpread(_objectSpread({}, partBaseSpec), {}, {\n mark: _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, compositeMarkConfig[part]), clip ? {\n clip: clip\n } : {}), color ? {\n color: color\n } : {}), opacity ? {\n opacity: opacity\n } : {}), isMarkDef(partBaseSpec.mark) ? partBaseSpec.mark : {\n type: partBaseSpec.mark\n }), {}, {\n style: \"\".concat(mark, \"-\").concat(String(part))\n }, isBoolean(markDef[part]) ? {} : markDef[part])\n })];\n }\n return [];\n}\nexport function compositeMarkContinuousAxis(spec, orient, compositeMark) {\n var encoding = spec.encoding;\n var continuousAxis = orient === 'vertical' ? 'y' : 'x';\n var continuousAxisChannelDef = encoding[continuousAxis]; // Safe to cast because if x is not continuous fielddef, the orient would not be horizontal.\n var continuousAxisChannelDef2 = encoding[\"\".concat(continuousAxis, \"2\")];\n var continuousAxisChannelDefError = encoding[\"\".concat(continuousAxis, \"Error\")];\n var continuousAxisChannelDefError2 = encoding[\"\".concat(continuousAxis, \"Error2\")];\n return {\n continuousAxisChannelDef: filterAggregateFromChannelDef(continuousAxisChannelDef, compositeMark),\n continuousAxisChannelDef2: filterAggregateFromChannelDef(continuousAxisChannelDef2, compositeMark),\n continuousAxisChannelDefError: filterAggregateFromChannelDef(continuousAxisChannelDefError, compositeMark),\n continuousAxisChannelDefError2: filterAggregateFromChannelDef(continuousAxisChannelDefError2, compositeMark),\n continuousAxis: continuousAxis\n };\n}\nfunction filterAggregateFromChannelDef(continuousAxisChannelDef, compositeMark) {\n if (continuousAxisChannelDef !== null && continuousAxisChannelDef !== void 0 && continuousAxisChannelDef.aggregate) {\n var aggregate = continuousAxisChannelDef.aggregate,\n continuousAxisWithoutAggregate = _objectWithoutProperties(continuousAxisChannelDef, _excluded2);\n if (aggregate !== compositeMark) {\n log.warn(log.message.errorBarContinuousAxisHasCustomizedAggregate(aggregate, compositeMark));\n }\n return continuousAxisWithoutAggregate;\n } else {\n return continuousAxisChannelDef;\n }\n}\nexport function compositeMarkOrient(spec, compositeMark) {\n var mark = spec.mark,\n encoding = spec.encoding;\n var x = encoding.x,\n y = encoding.y;\n if (isMarkDef(mark) && mark.orient) {\n return mark.orient;\n }\n if (isContinuousFieldOrDatumDef(x)) {\n // x is continuous\n if (isContinuousFieldOrDatumDef(y)) {\n // both x and y are continuous\n var xAggregate = isFieldDef(x) && x.aggregate;\n var yAggregate = isFieldDef(y) && y.aggregate;\n if (!xAggregate && yAggregate === compositeMark) {\n return 'vertical';\n } else if (!yAggregate && xAggregate === compositeMark) {\n return 'horizontal';\n } else if (xAggregate === compositeMark && yAggregate === compositeMark) {\n throw new Error('Both x and y cannot have aggregate');\n } else {\n if (isFieldOrDatumDefForTimeFormat(y) && !isFieldOrDatumDefForTimeFormat(x)) {\n // y is temporal but x is not\n return 'horizontal';\n }\n // default orientation for two continuous\n return 'vertical';\n }\n }\n return 'horizontal';\n } else if (isContinuousFieldOrDatumDef(y)) {\n // y is continuous but x is not\n return 'vertical';\n } else {\n // Neither x nor y is continuous.\n throw new Error(\"Need a valid continuous axis for \".concat(compositeMark, \"s\"));\n }\n}","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nvar _excluded = [\"mark\", \"encoding\", \"params\", \"projection\"],\n _excluded2 = [\"color\", \"size\"],\n _excluded3 = [\"tooltip\"];\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { isNumber, isObject } from 'vega-util';\nimport { getMarkPropOrConfig } from '../compile/common';\nimport { extractTransformsFromEncoding, normalizeEncoding } from '../encoding';\nimport * as log from '../log';\nimport { isMarkDef } from '../mark';\nimport { isEmpty, omit } from '../util';\nimport { CompositeMarkNormalizer } from './base';\nimport { compositeMarkContinuousAxis, compositeMarkOrient, filterTooltipWithAggregatedField, getCompositeMarkTooltip, getTitle, makeCompositeAggregatePartFactory, partLayerMixins } from './common';\nexport var BOXPLOT = 'boxplot';\nexport var BOXPLOT_PARTS = ['box', 'median', 'outliers', 'rule', 'ticks'];\nexport var boxPlotNormalizer = new CompositeMarkNormalizer(BOXPLOT, normalizeBoxPlot);\nexport function getBoxPlotType(extent) {\n if (isNumber(extent)) {\n return 'tukey';\n }\n // Ham: If we ever want to, we could add another extent syntax `{kIQR: number}` for the original [Q1-k*IQR, Q3+k*IQR] whisker and call this boxPlotType = `kIQR`. However, I'm not exposing this for now.\n return extent;\n}\nexport function normalizeBoxPlot(spec, _ref) {\n var _markDef$extent;\n var config = _ref.config;\n // Need to initEncoding first so we can infer type\n spec = _objectSpread(_objectSpread({}, spec), {}, {\n encoding: normalizeEncoding(spec.encoding, config)\n });\n var _spec = spec,\n mark = _spec.mark,\n _encoding = _spec.encoding,\n params = _spec.params,\n _p = _spec.projection,\n outerSpec = _objectWithoutProperties(_spec, _excluded);\n var markDef = isMarkDef(mark) ? mark : {\n type: mark\n };\n // TODO(https://github.com/vega/vega-lite/issues/3702): add selection support\n if (params) {\n log.warn(log.message.selectionNotSupported('boxplot'));\n }\n var extent = (_markDef$extent = markDef.extent) !== null && _markDef$extent !== void 0 ? _markDef$extent : config.boxplot.extent;\n var sizeValue = getMarkPropOrConfig('size', markDef,\n // TODO: https://github.com/vega/vega-lite/issues/6245\n config);\n var invalid = markDef.invalid;\n var boxPlotType = getBoxPlotType(extent);\n var _boxParams = boxParams(spec, extent, config),\n bins = _boxParams.bins,\n timeUnits = _boxParams.timeUnits,\n transform = _boxParams.transform,\n continuousAxisChannelDef = _boxParams.continuousAxisChannelDef,\n continuousAxis = _boxParams.continuousAxis,\n groupby = _boxParams.groupby,\n aggregate = _boxParams.aggregate,\n encodingWithoutContinuousAxis = _boxParams.encodingWithoutContinuousAxis,\n ticksOrient = _boxParams.ticksOrient,\n boxOrient = _boxParams.boxOrient,\n customTooltipWithoutAggregatedField = _boxParams.customTooltipWithoutAggregatedField;\n var color = encodingWithoutContinuousAxis.color,\n size = encodingWithoutContinuousAxis.size,\n encodingWithoutSizeColorAndContinuousAxis = _objectWithoutProperties(encodingWithoutContinuousAxis, _excluded2);\n var makeBoxPlotPart = function makeBoxPlotPart(sharedEncoding) {\n return makeCompositeAggregatePartFactory(markDef, continuousAxis, continuousAxisChannelDef, sharedEncoding, config.boxplot);\n };\n var makeBoxPlotExtent = makeBoxPlotPart(encodingWithoutSizeColorAndContinuousAxis);\n var makeBoxPlotBox = makeBoxPlotPart(encodingWithoutContinuousAxis);\n var makeBoxPlotMidTick = makeBoxPlotPart(_objectSpread(_objectSpread({}, encodingWithoutSizeColorAndContinuousAxis), size ? {\n size: size\n } : {}));\n var fiveSummaryTooltipEncoding = getCompositeMarkTooltip([{\n fieldPrefix: boxPlotType === 'min-max' ? 'upper_whisker_' : 'max_',\n titlePrefix: 'Max'\n }, {\n fieldPrefix: 'upper_box_',\n titlePrefix: 'Q3'\n }, {\n fieldPrefix: 'mid_box_',\n titlePrefix: 'Median'\n }, {\n fieldPrefix: 'lower_box_',\n titlePrefix: 'Q1'\n }, {\n fieldPrefix: boxPlotType === 'min-max' ? 'lower_whisker_' : 'min_',\n titlePrefix: 'Min'\n }], continuousAxisChannelDef, encodingWithoutContinuousAxis);\n // ## Whisker Layers\n var endTick = {\n type: 'tick',\n color: 'black',\n opacity: 1,\n orient: ticksOrient,\n invalid: invalid,\n aria: false\n };\n var whiskerTooltipEncoding = boxPlotType === 'min-max' ? fiveSummaryTooltipEncoding // for min-max, show five-summary tooltip for whisker\n :\n // for tukey / k-IQR, just show upper/lower-whisker\n getCompositeMarkTooltip([{\n fieldPrefix: 'upper_whisker_',\n titlePrefix: 'Upper Whisker'\n }, {\n fieldPrefix: 'lower_whisker_',\n titlePrefix: 'Lower Whisker'\n }], continuousAxisChannelDef, encodingWithoutContinuousAxis);\n var whiskerLayers = [].concat(_toConsumableArray(makeBoxPlotExtent({\n partName: 'rule',\n mark: {\n type: 'rule',\n invalid: invalid,\n aria: false\n },\n positionPrefix: 'lower_whisker',\n endPositionPrefix: 'lower_box',\n extraEncoding: whiskerTooltipEncoding\n })), _toConsumableArray(makeBoxPlotExtent({\n partName: 'rule',\n mark: {\n type: 'rule',\n invalid: invalid,\n aria: false\n },\n positionPrefix: 'upper_box',\n endPositionPrefix: 'upper_whisker',\n extraEncoding: whiskerTooltipEncoding\n })), _toConsumableArray(makeBoxPlotExtent({\n partName: 'ticks',\n mark: endTick,\n positionPrefix: 'lower_whisker',\n extraEncoding: whiskerTooltipEncoding\n })), _toConsumableArray(makeBoxPlotExtent({\n partName: 'ticks',\n mark: endTick,\n positionPrefix: 'upper_whisker',\n extraEncoding: whiskerTooltipEncoding\n })));\n // ## Box Layers\n // TODO: support hiding certain mark parts\n var boxLayers = [].concat(_toConsumableArray(boxPlotType !== 'tukey' ? whiskerLayers : []), _toConsumableArray(makeBoxPlotBox({\n partName: 'box',\n mark: _objectSpread(_objectSpread({\n type: 'bar'\n }, sizeValue ? {\n size: sizeValue\n } : {}), {}, {\n orient: boxOrient,\n invalid: invalid,\n ariaRoleDescription: 'box'\n }),\n positionPrefix: 'lower_box',\n endPositionPrefix: 'upper_box',\n extraEncoding: fiveSummaryTooltipEncoding\n })), _toConsumableArray(makeBoxPlotMidTick({\n partName: 'median',\n mark: _objectSpread(_objectSpread(_objectSpread({\n type: 'tick',\n invalid: invalid\n }, isObject(config.boxplot.median) && config.boxplot.median.color ? {\n color: config.boxplot.median.color\n } : {}), sizeValue ? {\n size: sizeValue\n } : {}), {}, {\n orient: ticksOrient,\n aria: false\n }),\n positionPrefix: 'mid_box',\n extraEncoding: fiveSummaryTooltipEncoding\n })));\n if (boxPlotType === 'min-max') {\n var _outerSpec$transform;\n return _objectSpread(_objectSpread({}, outerSpec), {}, {\n transform: ((_outerSpec$transform = outerSpec.transform) !== null && _outerSpec$transform !== void 0 ? _outerSpec$transform : []).concat(transform),\n layer: boxLayers\n });\n }\n // Tukey Box Plot\n var lowerBoxExpr = \"datum[\\\"lower_box_\".concat(continuousAxisChannelDef.field, \"\\\"]\");\n var upperBoxExpr = \"datum[\\\"upper_box_\".concat(continuousAxisChannelDef.field, \"\\\"]\");\n var iqrExpr = \"(\".concat(upperBoxExpr, \" - \").concat(lowerBoxExpr, \")\");\n var lowerWhiskerExpr = \"\".concat(lowerBoxExpr, \" - \").concat(extent, \" * \").concat(iqrExpr);\n var upperWhiskerExpr = \"\".concat(upperBoxExpr, \" + \").concat(extent, \" * \").concat(iqrExpr);\n var fieldExpr = \"datum[\\\"\".concat(continuousAxisChannelDef.field, \"\\\"]\");\n var joinaggregateTransform = {\n joinaggregate: boxParamsQuartiles(continuousAxisChannelDef.field),\n groupby: groupby\n };\n var filteredWhiskerSpec = {\n transform: [{\n filter: \"(\".concat(lowerWhiskerExpr, \" <= \").concat(fieldExpr, \") && (\").concat(fieldExpr, \" <= \").concat(upperWhiskerExpr, \")\")\n }, {\n aggregate: [{\n op: 'min',\n field: continuousAxisChannelDef.field,\n as: \"lower_whisker_\".concat(continuousAxisChannelDef.field)\n }, {\n op: 'max',\n field: continuousAxisChannelDef.field,\n as: \"upper_whisker_\".concat(continuousAxisChannelDef.field)\n },\n // preserve lower_box / upper_box\n {\n op: 'min',\n field: \"lower_box_\".concat(continuousAxisChannelDef.field),\n as: \"lower_box_\".concat(continuousAxisChannelDef.field)\n }, {\n op: 'max',\n field: \"upper_box_\".concat(continuousAxisChannelDef.field),\n as: \"upper_box_\".concat(continuousAxisChannelDef.field)\n }].concat(_toConsumableArray(aggregate)),\n groupby: groupby\n }],\n layer: whiskerLayers\n };\n var tooltip = encodingWithoutSizeColorAndContinuousAxis.tooltip,\n encodingWithoutSizeColorContinuousAxisAndTooltip = _objectWithoutProperties(encodingWithoutSizeColorAndContinuousAxis, _excluded3);\n var scale = continuousAxisChannelDef.scale,\n axis = continuousAxisChannelDef.axis;\n var title = getTitle(continuousAxisChannelDef);\n var axisWithoutTitle = omit(axis, ['title']);\n var outlierLayersMixins = partLayerMixins(markDef, 'outliers', config.boxplot, {\n transform: [{\n filter: \"(\".concat(fieldExpr, \" < \").concat(lowerWhiskerExpr, \") || (\").concat(fieldExpr, \" > \").concat(upperWhiskerExpr, \")\")\n }],\n mark: 'point',\n encoding: _objectSpread(_objectSpread(_objectSpread(_defineProperty({}, continuousAxis, _objectSpread(_objectSpread(_objectSpread({\n field: continuousAxisChannelDef.field,\n type: continuousAxisChannelDef.type\n }, title !== undefined ? {\n title: title\n } : {}), scale !== undefined ? {\n scale: scale\n } : {}), isEmpty(axisWithoutTitle) ? {} : {\n axis: axisWithoutTitle\n })), encodingWithoutSizeColorContinuousAxisAndTooltip), color ? {\n color: color\n } : {}), customTooltipWithoutAggregatedField ? {\n tooltip: customTooltipWithoutAggregatedField\n } : {})\n })[0];\n var filteredLayersMixins;\n var filteredLayersMixinsTransforms = [].concat(_toConsumableArray(bins), _toConsumableArray(timeUnits), [joinaggregateTransform]);\n if (outlierLayersMixins) {\n filteredLayersMixins = {\n transform: filteredLayersMixinsTransforms,\n layer: [outlierLayersMixins, filteredWhiskerSpec]\n };\n } else {\n var _filteredLayersMixins;\n filteredLayersMixins = filteredWhiskerSpec;\n (_filteredLayersMixins = filteredLayersMixins.transform).unshift.apply(_filteredLayersMixins, _toConsumableArray(filteredLayersMixinsTransforms));\n }\n return _objectSpread(_objectSpread({}, outerSpec), {}, {\n layer: [filteredLayersMixins, {\n // boxplot\n transform: transform,\n layer: boxLayers\n }]\n });\n}\nfunction boxParamsQuartiles(continousAxisField) {\n return [{\n op: 'q1',\n field: continousAxisField,\n as: \"lower_box_\".concat(continousAxisField)\n }, {\n op: 'q3',\n field: continousAxisField,\n as: \"upper_box_\".concat(continousAxisField)\n }];\n}\nfunction boxParams(spec, extent, config) {\n var orient = compositeMarkOrient(spec, BOXPLOT);\n var _compositeMarkContinu = compositeMarkContinuousAxis(spec, orient, BOXPLOT),\n continuousAxisChannelDef = _compositeMarkContinu.continuousAxisChannelDef,\n continuousAxis = _compositeMarkContinu.continuousAxis;\n var continuousFieldName = continuousAxisChannelDef.field;\n var boxPlotType = getBoxPlotType(extent);\n var boxplotSpecificAggregate = [].concat(_toConsumableArray(boxParamsQuartiles(continuousFieldName)), [{\n op: 'median',\n field: continuousFieldName,\n as: \"mid_box_\".concat(continuousFieldName)\n }, {\n op: 'min',\n field: continuousFieldName,\n as: (boxPlotType === 'min-max' ? 'lower_whisker_' : 'min_') + continuousFieldName\n }, {\n op: 'max',\n field: continuousFieldName,\n as: (boxPlotType === 'min-max' ? 'upper_whisker_' : 'max_') + continuousFieldName\n }]);\n var postAggregateCalculates = boxPlotType === 'min-max' || boxPlotType === 'tukey' ? [] : [\n // This is for the original k-IQR, which we do not expose\n {\n calculate: \"datum[\\\"upper_box_\".concat(continuousFieldName, \"\\\"] - datum[\\\"lower_box_\").concat(continuousFieldName, \"\\\"]\"),\n as: \"iqr_\".concat(continuousFieldName)\n }, {\n calculate: \"min(datum[\\\"upper_box_\".concat(continuousFieldName, \"\\\"] + datum[\\\"iqr_\").concat(continuousFieldName, \"\\\"] * \").concat(extent, \", datum[\\\"max_\").concat(continuousFieldName, \"\\\"])\"),\n as: \"upper_whisker_\".concat(continuousFieldName)\n }, {\n calculate: \"max(datum[\\\"lower_box_\".concat(continuousFieldName, \"\\\"] - datum[\\\"iqr_\").concat(continuousFieldName, \"\\\"] * \").concat(extent, \", datum[\\\"min_\").concat(continuousFieldName, \"\\\"])\"),\n as: \"lower_whisker_\".concat(continuousFieldName)\n }];\n var _spec$encoding = spec.encoding,\n oldContinuousAxisChannelDef = _spec$encoding[continuousAxis],\n oldEncodingWithoutContinuousAxis = _objectWithoutProperties(_spec$encoding, [continuousAxis].map(_toPropertyKey));\n var _filterTooltipWithAgg = filterTooltipWithAggregatedField(oldEncodingWithoutContinuousAxis),\n customTooltipWithoutAggregatedField = _filterTooltipWithAgg.customTooltipWithoutAggregatedField,\n filteredEncoding = _filterTooltipWithAgg.filteredEncoding;\n var _extractTransformsFro = extractTransformsFromEncoding(filteredEncoding, config),\n bins = _extractTransformsFro.bins,\n timeUnits = _extractTransformsFro.timeUnits,\n aggregate = _extractTransformsFro.aggregate,\n groupby = _extractTransformsFro.groupby,\n encodingWithoutContinuousAxis = _extractTransformsFro.encoding;\n var ticksOrient = orient === 'vertical' ? 'horizontal' : 'vertical';\n var boxOrient = orient;\n var transform = [].concat(_toConsumableArray(bins), _toConsumableArray(timeUnits), [{\n aggregate: [].concat(_toConsumableArray(aggregate), _toConsumableArray(boxplotSpecificAggregate)),\n groupby: groupby\n }], postAggregateCalculates);\n return {\n bins: bins,\n timeUnits: timeUnits,\n transform: transform,\n groupby: groupby,\n aggregate: aggregate,\n continuousAxisChannelDef: continuousAxisChannelDef,\n continuousAxis: continuousAxis,\n encodingWithoutContinuousAxis: encodingWithoutContinuousAxis,\n ticksOrient: ticksOrient,\n boxOrient: boxOrient,\n customTooltipWithoutAggregatedField: customTooltipWithoutAggregatedField\n };\n}","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nvar _excluded = [\"mark\", \"encoding\", \"params\", \"projection\"];\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { isContinuousFieldOrDatumDef, isFieldOrDatumDef, title } from '../channeldef';\nimport { extractTransformsFromEncoding, normalizeEncoding } from '../encoding';\nimport * as log from '../log';\nimport { isMarkDef } from '../mark';\nimport { replaceAll, titleCase } from '../util';\nimport { CompositeMarkNormalizer } from './base';\nimport { compositeMarkContinuousAxis, compositeMarkOrient, getCompositeMarkTooltip, makeCompositeAggregatePartFactory } from './common';\nexport var ERRORBAR = 'errorbar';\nexport var ERRORBAR_PARTS = ['ticks', 'rule'];\nexport var errorBarNormalizer = new CompositeMarkNormalizer(ERRORBAR, normalizeErrorBar);\nexport function normalizeErrorBar(spec, _ref) {\n var config = _ref.config;\n // Need to initEncoding first so we can infer type\n spec = _objectSpread(_objectSpread({}, spec), {}, {\n encoding: normalizeEncoding(spec.encoding, config)\n });\n var _errorBarParams = errorBarParams(spec, ERRORBAR, config),\n transform = _errorBarParams.transform,\n continuousAxisChannelDef = _errorBarParams.continuousAxisChannelDef,\n continuousAxis = _errorBarParams.continuousAxis,\n encodingWithoutContinuousAxis = _errorBarParams.encodingWithoutContinuousAxis,\n ticksOrient = _errorBarParams.ticksOrient,\n markDef = _errorBarParams.markDef,\n outerSpec = _errorBarParams.outerSpec,\n tooltipEncoding = _errorBarParams.tooltipEncoding;\n delete encodingWithoutContinuousAxis['size'];\n var makeErrorBarPart = makeCompositeAggregatePartFactory(markDef, continuousAxis, continuousAxisChannelDef, encodingWithoutContinuousAxis, config.errorbar);\n var thickness = markDef.thickness;\n var size = markDef.size;\n var tick = _objectSpread(_objectSpread({\n type: 'tick',\n orient: ticksOrient,\n aria: false\n }, thickness !== undefined ? {\n thickness: thickness\n } : {}), size !== undefined ? {\n size: size\n } : {});\n var layer = [].concat(_toConsumableArray(makeErrorBarPart({\n partName: 'ticks',\n mark: tick,\n positionPrefix: 'lower',\n extraEncoding: tooltipEncoding\n })), _toConsumableArray(makeErrorBarPart({\n partName: 'ticks',\n mark: tick,\n positionPrefix: 'upper',\n extraEncoding: tooltipEncoding\n })), _toConsumableArray(makeErrorBarPart({\n partName: 'rule',\n mark: _objectSpread({\n type: 'rule',\n ariaRoleDescription: 'errorbar'\n }, thickness !== undefined ? {\n size: thickness\n } : {}),\n positionPrefix: 'lower',\n endPositionPrefix: 'upper',\n extraEncoding: tooltipEncoding\n })));\n return _objectSpread(_objectSpread({}, outerSpec), {}, {\n transform: transform\n }, layer.length > 1 ? {\n layer: layer\n } : _objectSpread({}, layer[0]));\n}\nfunction errorBarOrientAndInputType(spec, compositeMark) {\n var encoding = spec.encoding;\n if (errorBarIsInputTypeRaw(encoding)) {\n return {\n orient: compositeMarkOrient(spec, compositeMark),\n inputType: 'raw'\n };\n }\n var isTypeAggregatedUpperLower = errorBarIsInputTypeAggregatedUpperLower(encoding);\n var isTypeAggregatedError = errorBarIsInputTypeAggregatedError(encoding);\n var x = encoding.x;\n var y = encoding.y;\n if (isTypeAggregatedUpperLower) {\n // type is aggregated-upper-lower\n if (isTypeAggregatedError) {\n throw new Error(\"\".concat(compositeMark, \" cannot be both type aggregated-upper-lower and aggregated-error\"));\n }\n var x2 = encoding.x2;\n var y2 = encoding.y2;\n if (isFieldOrDatumDef(x2) && isFieldOrDatumDef(y2)) {\n // having both x, x2 and y, y2\n throw new Error(\"\".concat(compositeMark, \" cannot have both x2 and y2\"));\n } else if (isFieldOrDatumDef(x2)) {\n if (isContinuousFieldOrDatumDef(x)) {\n // having x, x2 quantitative and field y, y2 are not specified\n return {\n orient: 'horizontal',\n inputType: 'aggregated-upper-lower'\n };\n } else {\n // having x, x2 that are not both quantitative\n throw new Error(\"Both x and x2 have to be quantitative in \".concat(compositeMark));\n }\n } else if (isFieldOrDatumDef(y2)) {\n // y2 is a FieldDef\n if (isContinuousFieldOrDatumDef(y)) {\n // having y, y2 quantitative and field x, x2 are not specified\n return {\n orient: 'vertical',\n inputType: 'aggregated-upper-lower'\n };\n } else {\n // having y, y2 that are not both quantitative\n throw new Error(\"Both y and y2 have to be quantitative in \".concat(compositeMark));\n }\n }\n throw new Error('No ranged axis');\n } else {\n // type is aggregated-error\n var xError = encoding.xError;\n var xError2 = encoding.xError2;\n var yError = encoding.yError;\n var yError2 = encoding.yError2;\n if (isFieldOrDatumDef(xError2) && !isFieldOrDatumDef(xError)) {\n // having xError2 without xError\n throw new Error(\"\".concat(compositeMark, \" cannot have xError2 without xError\"));\n }\n if (isFieldOrDatumDef(yError2) && !isFieldOrDatumDef(yError)) {\n // having yError2 without yError\n throw new Error(\"\".concat(compositeMark, \" cannot have yError2 without yError\"));\n }\n if (isFieldOrDatumDef(xError) && isFieldOrDatumDef(yError)) {\n // having both xError and yError\n throw new Error(\"\".concat(compositeMark, \" cannot have both xError and yError with both are quantiative\"));\n } else if (isFieldOrDatumDef(xError)) {\n if (isContinuousFieldOrDatumDef(x)) {\n // having x and xError that are all quantitative\n return {\n orient: 'horizontal',\n inputType: 'aggregated-error'\n };\n } else {\n // having x, xError, and xError2 that are not all quantitative\n throw new Error('All x, xError, and xError2 (if exist) have to be quantitative');\n }\n } else if (isFieldOrDatumDef(yError)) {\n if (isContinuousFieldOrDatumDef(y)) {\n // having y and yError that are all quantitative\n return {\n orient: 'vertical',\n inputType: 'aggregated-error'\n };\n } else {\n // having y, yError, and yError2 that are not all quantitative\n throw new Error('All y, yError, and yError2 (if exist) have to be quantitative');\n }\n }\n throw new Error('No ranged axis');\n }\n}\nfunction errorBarIsInputTypeRaw(encoding) {\n return (isFieldOrDatumDef(encoding.x) || isFieldOrDatumDef(encoding.y)) && !isFieldOrDatumDef(encoding.x2) && !isFieldOrDatumDef(encoding.y2) && !isFieldOrDatumDef(encoding.xError) && !isFieldOrDatumDef(encoding.xError2) && !isFieldOrDatumDef(encoding.yError) && !isFieldOrDatumDef(encoding.yError2);\n}\nfunction errorBarIsInputTypeAggregatedUpperLower(encoding) {\n return isFieldOrDatumDef(encoding.x2) || isFieldOrDatumDef(encoding.y2);\n}\nfunction errorBarIsInputTypeAggregatedError(encoding) {\n return isFieldOrDatumDef(encoding.xError) || isFieldOrDatumDef(encoding.xError2) || isFieldOrDatumDef(encoding.yError) || isFieldOrDatumDef(encoding.yError2);\n}\nexport function errorBarParams(spec, compositeMark, config) {\n var _outerSpec$transform;\n // TODO: use selection\n var mark = spec.mark,\n encoding = spec.encoding,\n params = spec.params,\n _p = spec.projection,\n outerSpec = _objectWithoutProperties(spec, _excluded);\n var markDef = isMarkDef(mark) ? mark : {\n type: mark\n };\n // TODO(https://github.com/vega/vega-lite/issues/3702): add selection support\n if (params) {\n log.warn(log.message.selectionNotSupported(compositeMark));\n }\n var _errorBarOrientAndInp = errorBarOrientAndInputType(spec, compositeMark),\n orient = _errorBarOrientAndInp.orient,\n inputType = _errorBarOrientAndInp.inputType;\n var _compositeMarkContinu = compositeMarkContinuousAxis(spec, orient, compositeMark),\n continuousAxisChannelDef = _compositeMarkContinu.continuousAxisChannelDef,\n continuousAxisChannelDef2 = _compositeMarkContinu.continuousAxisChannelDef2,\n continuousAxisChannelDefError = _compositeMarkContinu.continuousAxisChannelDefError,\n continuousAxisChannelDefError2 = _compositeMarkContinu.continuousAxisChannelDefError2,\n continuousAxis = _compositeMarkContinu.continuousAxis;\n var _errorBarAggregationA = errorBarAggregationAndCalculation(markDef, continuousAxisChannelDef, continuousAxisChannelDef2, continuousAxisChannelDefError, continuousAxisChannelDefError2, inputType, compositeMark, config),\n errorBarSpecificAggregate = _errorBarAggregationA.errorBarSpecificAggregate,\n postAggregateCalculates = _errorBarAggregationA.postAggregateCalculates,\n tooltipSummary = _errorBarAggregationA.tooltipSummary,\n tooltipTitleWithFieldName = _errorBarAggregationA.tooltipTitleWithFieldName;\n var _ref2 = continuousAxis === 'x' ? 'x2' : 'y2',\n _ref3 = continuousAxis === 'x' ? 'xError' : 'yError',\n _ref4 = continuousAxis === 'x' ? 'xError2' : 'yError2',\n oldContinuousAxisChannelDef = encoding[continuousAxis],\n oldContinuousAxisChannelDef2 = encoding[_ref2],\n oldContinuousAxisChannelDefError = encoding[_ref3],\n oldContinuousAxisChannelDefError2 = encoding[_ref4],\n oldEncodingWithoutContinuousAxis = _objectWithoutProperties(encoding, [continuousAxis, _ref2, _ref3, _ref4].map(_toPropertyKey));\n var _extractTransformsFro = extractTransformsFromEncoding(oldEncodingWithoutContinuousAxis, config),\n bins = _extractTransformsFro.bins,\n timeUnits = _extractTransformsFro.timeUnits,\n oldAggregate = _extractTransformsFro.aggregate,\n oldGroupBy = _extractTransformsFro.groupby,\n encodingWithoutContinuousAxis = _extractTransformsFro.encoding;\n var aggregate = [].concat(_toConsumableArray(oldAggregate), _toConsumableArray(errorBarSpecificAggregate));\n var groupby = inputType !== 'raw' ? [] : oldGroupBy;\n var tooltipEncoding = getCompositeMarkTooltip(tooltipSummary, continuousAxisChannelDef, encodingWithoutContinuousAxis, tooltipTitleWithFieldName);\n return {\n transform: [].concat(_toConsumableArray((_outerSpec$transform = outerSpec.transform) !== null && _outerSpec$transform !== void 0 ? _outerSpec$transform : []), _toConsumableArray(bins), _toConsumableArray(timeUnits), _toConsumableArray(aggregate.length === 0 ? [] : [{\n aggregate: aggregate,\n groupby: groupby\n }]), _toConsumableArray(postAggregateCalculates)),\n groupby: groupby,\n continuousAxisChannelDef: continuousAxisChannelDef,\n continuousAxis: continuousAxis,\n encodingWithoutContinuousAxis: encodingWithoutContinuousAxis,\n ticksOrient: orient === 'vertical' ? 'horizontal' : 'vertical',\n markDef: markDef,\n outerSpec: outerSpec,\n tooltipEncoding: tooltipEncoding\n };\n}\nfunction errorBarAggregationAndCalculation(markDef, continuousAxisChannelDef, continuousAxisChannelDef2, continuousAxisChannelDefError, continuousAxisChannelDefError2, inputType, compositeMark, config) {\n var errorBarSpecificAggregate = [];\n var postAggregateCalculates = [];\n var continuousFieldName = continuousAxisChannelDef.field;\n var tooltipSummary;\n var tooltipTitleWithFieldName = false;\n if (inputType === 'raw') {\n var center = markDef.center ? markDef.center : markDef.extent ? markDef.extent === 'iqr' ? 'median' : 'mean' : config.errorbar.center;\n var extent = markDef.extent ? markDef.extent : center === 'mean' ? 'stderr' : 'iqr';\n if (center === 'median' !== (extent === 'iqr')) {\n log.warn(log.message.errorBarCenterIsUsedWithWrongExtent(center, extent, compositeMark));\n }\n if (extent === 'stderr' || extent === 'stdev') {\n errorBarSpecificAggregate = [{\n op: extent,\n field: continuousFieldName,\n as: \"extent_\".concat(continuousFieldName)\n }, {\n op: center,\n field: continuousFieldName,\n as: \"center_\".concat(continuousFieldName)\n }];\n postAggregateCalculates = [{\n calculate: \"datum[\\\"center_\".concat(continuousFieldName, \"\\\"] + datum[\\\"extent_\").concat(continuousFieldName, \"\\\"]\"),\n as: \"upper_\".concat(continuousFieldName)\n }, {\n calculate: \"datum[\\\"center_\".concat(continuousFieldName, \"\\\"] - datum[\\\"extent_\").concat(continuousFieldName, \"\\\"]\"),\n as: \"lower_\".concat(continuousFieldName)\n }];\n tooltipSummary = [{\n fieldPrefix: 'center_',\n titlePrefix: titleCase(center)\n }, {\n fieldPrefix: 'upper_',\n titlePrefix: getTitlePrefix(center, extent, '+')\n }, {\n fieldPrefix: 'lower_',\n titlePrefix: getTitlePrefix(center, extent, '-')\n }];\n tooltipTitleWithFieldName = true;\n } else {\n var centerOp;\n var lowerExtentOp;\n var upperExtentOp;\n if (extent === 'ci') {\n centerOp = 'mean';\n lowerExtentOp = 'ci0';\n upperExtentOp = 'ci1';\n } else {\n centerOp = 'median';\n lowerExtentOp = 'q1';\n upperExtentOp = 'q3';\n }\n errorBarSpecificAggregate = [{\n op: lowerExtentOp,\n field: continuousFieldName,\n as: \"lower_\".concat(continuousFieldName)\n }, {\n op: upperExtentOp,\n field: continuousFieldName,\n as: \"upper_\".concat(continuousFieldName)\n }, {\n op: centerOp,\n field: continuousFieldName,\n as: \"center_\".concat(continuousFieldName)\n }];\n tooltipSummary = [{\n fieldPrefix: 'upper_',\n titlePrefix: title({\n field: continuousFieldName,\n aggregate: upperExtentOp,\n type: 'quantitative'\n }, config, {\n allowDisabling: false\n })\n }, {\n fieldPrefix: 'lower_',\n titlePrefix: title({\n field: continuousFieldName,\n aggregate: lowerExtentOp,\n type: 'quantitative'\n }, config, {\n allowDisabling: false\n })\n }, {\n fieldPrefix: 'center_',\n titlePrefix: title({\n field: continuousFieldName,\n aggregate: centerOp,\n type: 'quantitative'\n }, config, {\n allowDisabling: false\n })\n }];\n }\n } else {\n if (markDef.center || markDef.extent) {\n log.warn(log.message.errorBarCenterAndExtentAreNotNeeded(markDef.center, markDef.extent));\n }\n if (inputType === 'aggregated-upper-lower') {\n tooltipSummary = [];\n postAggregateCalculates = [{\n calculate: \"datum[\\\"\".concat(continuousAxisChannelDef2.field, \"\\\"]\"),\n as: \"upper_\".concat(continuousFieldName)\n }, {\n calculate: \"datum[\\\"\".concat(continuousFieldName, \"\\\"]\"),\n as: \"lower_\".concat(continuousFieldName)\n }];\n } else if (inputType === 'aggregated-error') {\n tooltipSummary = [{\n fieldPrefix: '',\n titlePrefix: continuousFieldName\n }];\n postAggregateCalculates = [{\n calculate: \"datum[\\\"\".concat(continuousFieldName, \"\\\"] + datum[\\\"\").concat(continuousAxisChannelDefError.field, \"\\\"]\"),\n as: \"upper_\".concat(continuousFieldName)\n }];\n if (continuousAxisChannelDefError2) {\n postAggregateCalculates.push({\n calculate: \"datum[\\\"\".concat(continuousFieldName, \"\\\"] + datum[\\\"\").concat(continuousAxisChannelDefError2.field, \"\\\"]\"),\n as: \"lower_\".concat(continuousFieldName)\n });\n } else {\n postAggregateCalculates.push({\n calculate: \"datum[\\\"\".concat(continuousFieldName, \"\\\"] - datum[\\\"\").concat(continuousAxisChannelDefError.field, \"\\\"]\"),\n as: \"lower_\".concat(continuousFieldName)\n });\n }\n }\n var _iterator = _createForOfIteratorHelper(postAggregateCalculates),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var postAggregateCalculate = _step.value;\n tooltipSummary.push({\n fieldPrefix: postAggregateCalculate.as.substring(0, 6),\n titlePrefix: replaceAll(replaceAll(postAggregateCalculate.calculate, 'datum[\"', ''), '\"]', '')\n });\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n return {\n postAggregateCalculates: postAggregateCalculates,\n errorBarSpecificAggregate: errorBarSpecificAggregate,\n tooltipSummary: tooltipSummary,\n tooltipTitleWithFieldName: tooltipTitleWithFieldName\n };\n}\nfunction getTitlePrefix(center, extent, operation) {\n return \"\".concat(titleCase(center), \" \").concat(operation, \" \").concat(extent);\n}","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { normalizeEncoding } from '../encoding';\nimport * as log from '../log';\nimport { CompositeMarkNormalizer } from './base';\nimport { makeCompositeAggregatePartFactory } from './common';\nimport { errorBarParams } from './errorbar';\nexport var ERRORBAND = 'errorband';\nexport var ERRORBAND_PARTS = ['band', 'borders'];\nexport var errorBandNormalizer = new CompositeMarkNormalizer(ERRORBAND, normalizeErrorBand);\nexport function normalizeErrorBand(spec, _ref) {\n var config = _ref.config;\n // Need to initEncoding first so we can infer type\n spec = _objectSpread(_objectSpread({}, spec), {}, {\n encoding: normalizeEncoding(spec.encoding, config)\n });\n var _errorBarParams = errorBarParams(spec, ERRORBAND, config),\n transform = _errorBarParams.transform,\n continuousAxisChannelDef = _errorBarParams.continuousAxisChannelDef,\n continuousAxis = _errorBarParams.continuousAxis,\n encodingWithoutContinuousAxis = _errorBarParams.encodingWithoutContinuousAxis,\n markDef = _errorBarParams.markDef,\n outerSpec = _errorBarParams.outerSpec,\n tooltipEncoding = _errorBarParams.tooltipEncoding;\n var errorBandDef = markDef;\n var makeErrorBandPart = makeCompositeAggregatePartFactory(errorBandDef, continuousAxis, continuousAxisChannelDef, encodingWithoutContinuousAxis, config.errorband);\n var is2D = spec.encoding.x !== undefined && spec.encoding.y !== undefined;\n var bandMark = {\n type: is2D ? 'area' : 'rect'\n };\n var bordersMark = {\n type: is2D ? 'line' : 'rule'\n };\n var interpolate = _objectSpread(_objectSpread({}, errorBandDef.interpolate ? {\n interpolate: errorBandDef.interpolate\n } : {}), errorBandDef.tension && errorBandDef.interpolate ? {\n tension: errorBandDef.tension\n } : {});\n if (is2D) {\n bandMark = _objectSpread(_objectSpread(_objectSpread({}, bandMark), interpolate), {}, {\n ariaRoleDescription: 'errorband'\n });\n bordersMark = _objectSpread(_objectSpread(_objectSpread({}, bordersMark), interpolate), {}, {\n aria: false\n });\n } else if (errorBandDef.interpolate) {\n log.warn(log.message.errorBand1DNotSupport('interpolate'));\n } else if (errorBandDef.tension) {\n log.warn(log.message.errorBand1DNotSupport('tension'));\n }\n return _objectSpread(_objectSpread({}, outerSpec), {}, {\n transform: transform,\n layer: [].concat(_toConsumableArray(makeErrorBandPart({\n partName: 'band',\n mark: bandMark,\n positionPrefix: 'lower',\n endPositionPrefix: 'upper',\n extraEncoding: tooltipEncoding\n })), _toConsumableArray(makeErrorBandPart({\n partName: 'borders',\n mark: bordersMark,\n positionPrefix: 'lower',\n extraEncoding: tooltipEncoding\n })), _toConsumableArray(makeErrorBandPart({\n partName: 'borders',\n mark: bordersMark,\n positionPrefix: 'upper',\n extraEncoding: tooltipEncoding\n })))\n });\n}","import { keys } from '../util';\nimport { CompositeMarkNormalizer } from './base';\nimport { BOXPLOT, BOXPLOT_PARTS, normalizeBoxPlot } from './boxplot';\nimport { ERRORBAND, ERRORBAND_PARTS, normalizeErrorBand } from './errorband';\nimport { ERRORBAR, ERRORBAR_PARTS, normalizeErrorBar } from './errorbar';\n/**\n * Registry index for all composite mark's normalizer\n */\nvar compositeMarkRegistry = {};\nexport function add(mark, run, parts) {\n var normalizer = new CompositeMarkNormalizer(mark, run);\n compositeMarkRegistry[mark] = {\n normalizer: normalizer,\n parts: parts\n };\n}\nexport function remove(mark) {\n delete compositeMarkRegistry[mark];\n}\nexport function getAllCompositeMarks() {\n return keys(compositeMarkRegistry);\n}\nadd(BOXPLOT, normalizeBoxPlot, BOXPLOT_PARTS);\nadd(ERRORBAR, normalizeErrorBar, ERRORBAR_PARTS);\nadd(ERRORBAND, normalizeErrorBand, ERRORBAND_PARTS);","export var VL_ONLY_LEGEND_CONFIG = ['gradientHorizontalMaxLength', 'gradientHorizontalMinLength', 'gradientVerticalMaxLength', 'gradientVerticalMinLength', 'unselectedOpacity'];","import { keys } from './util';\nexport var HEADER_TITLE_PROPERTIES_MAP = {\n titleAlign: 'align',\n titleAnchor: 'anchor',\n titleAngle: 'angle',\n titleBaseline: 'baseline',\n titleColor: 'color',\n titleFont: 'font',\n titleFontSize: 'fontSize',\n titleFontStyle: 'fontStyle',\n titleFontWeight: 'fontWeight',\n titleLimit: 'limit',\n titleLineHeight: 'lineHeight',\n titleOrient: 'orient',\n titlePadding: 'offset'\n};\nexport var HEADER_LABEL_PROPERTIES_MAP = {\n labelAlign: 'align',\n labelAnchor: 'anchor',\n labelAngle: 'angle',\n labelBaseline: 'baseline',\n labelColor: 'color',\n labelFont: 'font',\n labelFontSize: 'fontSize',\n labelFontStyle: 'fontStyle',\n labelFontWeight: 'fontWeight',\n labelLimit: 'limit',\n labelLineHeight: 'lineHeight',\n labelOrient: 'orient',\n labelPadding: 'offset'\n};\nexport var HEADER_TITLE_PROPERTIES = keys(HEADER_TITLE_PROPERTIES_MAP);\nexport var HEADER_LABEL_PROPERTIES = keys(HEADER_LABEL_PROPERTIES_MAP);\nvar HEADER_CONFIGS_INDEX = {\n header: 1,\n headerRow: 1,\n headerColumn: 1,\n headerFacet: 1\n};\nexport var HEADER_CONFIGS = keys(HEADER_CONFIGS_INDEX);","import { keys } from './util';\nexport var LEGEND_SCALE_CHANNELS = ['size', 'shape', 'fill', 'stroke', 'strokeDash', 'strokeWidth', 'opacity'];\nexport var defaultLegendConfig = {\n gradientHorizontalMaxLength: 200,\n gradientHorizontalMinLength: 100,\n gradientVerticalMaxLength: 200,\n gradientVerticalMinLength: 64,\n unselectedOpacity: 0.35\n};\nexport var COMMON_LEGEND_PROPERTY_INDEX = {\n aria: 1,\n clipHeight: 1,\n columnPadding: 1,\n columns: 1,\n cornerRadius: 1,\n description: 1,\n direction: 1,\n fillColor: 1,\n format: 1,\n formatType: 1,\n gradientLength: 1,\n gradientOpacity: 1,\n gradientStrokeColor: 1,\n gradientStrokeWidth: 1,\n gradientThickness: 1,\n gridAlign: 1,\n labelAlign: 1,\n labelBaseline: 1,\n labelColor: 1,\n labelFont: 1,\n labelFontSize: 1,\n labelFontStyle: 1,\n labelFontWeight: 1,\n labelLimit: 1,\n labelOffset: 1,\n labelOpacity: 1,\n labelOverlap: 1,\n labelPadding: 1,\n labelSeparation: 1,\n legendX: 1,\n legendY: 1,\n offset: 1,\n orient: 1,\n padding: 1,\n rowPadding: 1,\n strokeColor: 1,\n symbolDash: 1,\n symbolDashOffset: 1,\n symbolFillColor: 1,\n symbolLimit: 1,\n symbolOffset: 1,\n symbolOpacity: 1,\n symbolSize: 1,\n symbolStrokeColor: 1,\n symbolStrokeWidth: 1,\n symbolType: 1,\n tickCount: 1,\n tickMinStep: 1,\n title: 1,\n titleAlign: 1,\n titleAnchor: 1,\n titleBaseline: 1,\n titleColor: 1,\n titleFont: 1,\n titleFontSize: 1,\n titleFontStyle: 1,\n titleFontWeight: 1,\n titleLimit: 1,\n titleLineHeight: 1,\n titleOpacity: 1,\n titleOrient: 1,\n titlePadding: 1,\n type: 1,\n values: 1,\n zindex: 1\n};\nexport var LEGEND_PROPERTIES = keys(COMMON_LEGEND_PROPERTY_INDEX);","import { isObject } from 'vega-util';\nexport var SELECTION_ID = '_vgsid_';\nexport var defaultConfig = {\n point: {\n on: 'click',\n fields: [SELECTION_ID],\n toggle: 'event.shiftKey',\n resolve: 'global',\n clear: 'dblclick'\n },\n interval: {\n on: '[mousedown, window:mouseup] > window:mousemove!',\n encodings: ['x', 'y'],\n translate: '[mousedown, window:mouseup] > window:mousemove!',\n zoom: 'wheel!',\n mark: {\n fill: '#333',\n fillOpacity: 0.125,\n stroke: 'white'\n },\n resolve: 'global',\n clear: 'dblclick'\n }\n};\nexport function isLegendBinding(bind) {\n return bind === 'legend' || !!(bind !== null && bind !== void 0 && bind.legend);\n}\nexport function isLegendStreamBinding(bind) {\n return isLegendBinding(bind) && isObject(bind);\n}\nexport function isSelectionParameter(param) {\n return !!(param !== null && param !== void 0 && param['select']);\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"expr\", \"bind\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { isSelectionParameter } from './selection';\nexport function assembleParameterSignals(params) {\n var signals = [];\n var _iterator = _createForOfIteratorHelper(params || []),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var param = _step.value;\n // Selection parameters are handled separately via assembleSelectionTopLevelSignals\n // and assembleSignals methods registered on the Model.\n if (isSelectionParameter(param)) continue;\n var expr = param.expr,\n bind = param.bind,\n rest = _objectWithoutProperties(param, _excluded);\n if (bind && expr) {\n // Vega's InitSignal -- apply expr to \"init\"\n var signal = _objectSpread(_objectSpread({}, rest), {}, {\n bind: bind,\n init: expr\n });\n signals.push(signal);\n } else {\n var _signal = _objectSpread(_objectSpread(_objectSpread({}, rest), expr ? {\n update: expr\n } : {}), bind ? {\n bind: bind\n } : {});\n signals.push(_signal);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return signals;\n}","export function isAnyConcatSpec(spec) {\n return isVConcatSpec(spec) || isHConcatSpec(spec) || isConcatSpec(spec);\n}\nexport function isConcatSpec(spec) {\n return 'concat' in spec;\n}\nexport function isVConcatSpec(spec) {\n return 'vconcat' in spec;\n}\nexport function isHConcatSpec(spec) {\n return 'hconcat' in spec;\n}","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { isNumber, isObject } from 'vega-util';\nimport { keys } from '../util';\nimport { isConcatSpec, isVConcatSpec } from './concat';\nimport { isFacetMapping, isFacetSpec } from './facet';\nexport function getStepFor(_ref) {\n var step = _ref.step,\n offsetIsDiscrete = _ref.offsetIsDiscrete;\n if (offsetIsDiscrete) {\n var _step$for;\n return (_step$for = step.for) !== null && _step$for !== void 0 ? _step$for : 'offset';\n } else {\n return 'position';\n }\n}\nexport function isStep(size) {\n return isObject(size) && size['step'] !== undefined;\n}\nexport function isFrameMixins(o) {\n return o['view'] || o['width'] || o['height'];\n}\nexport var DEFAULT_SPACING = 20;\nvar COMPOSITION_LAYOUT_INDEX = {\n align: 1,\n bounds: 1,\n center: 1,\n columns: 1,\n spacing: 1\n};\nvar COMPOSITION_LAYOUT_PROPERTIES = keys(COMPOSITION_LAYOUT_INDEX);\nexport function extractCompositionLayout(spec, specType, config) {\n var compositionConfig = config[specType];\n var layout = {};\n // Apply config first\n var spacingConfig = compositionConfig.spacing,\n columns = compositionConfig.columns;\n if (spacingConfig !== undefined) {\n layout.spacing = spacingConfig;\n }\n if (columns !== undefined) {\n if (isFacetSpec(spec) && !isFacetMapping(spec.facet) || isConcatSpec(spec)) {\n layout.columns = columns;\n }\n }\n if (isVConcatSpec(spec)) {\n layout.columns = 1;\n }\n // Then copy properties from the spec\n var _iterator = _createForOfIteratorHelper(COMPOSITION_LAYOUT_PROPERTIES),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var prop = _step.value;\n if (spec[prop] !== undefined) {\n if (prop === 'spacing') {\n var _spacing$row, _spacing$column;\n var spacing = spec[prop];\n layout[prop] = isNumber(spacing) ? spacing : {\n row: (_spacing$row = spacing.row) !== null && _spacing$row !== void 0 ? _spacing$row : spacingConfig,\n column: (_spacing$column = spacing.column) !== null && _spacing$column !== void 0 ? _spacing$column : spacingConfig\n };\n } else {\n layout[prop] = spec[prop];\n }\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return layout;\n}","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nvar _excluded = [\"color\", \"font\", \"fontSize\", \"selection\"];\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { writeConfig } from 'vega';\nimport { isObject, mergeConfig } from 'vega-util';\nimport { AXIS_CONFIGS, isConditionalAxisValue } from './axis';\nimport { signalOrValueRefWithCondition, signalRefOrValue } from './compile/common';\nimport { getAllCompositeMarks } from './compositemark';\nimport { replaceExprRef } from './expr';\nimport { VL_ONLY_LEGEND_CONFIG } from './guide';\nimport { HEADER_CONFIGS } from './header';\nimport { defaultLegendConfig } from './legend';\nimport * as mark from './mark';\nimport { MARK_CONFIGS, PRIMITIVE_MARKS, VL_ONLY_MARK_CONFIG_PROPERTIES, VL_ONLY_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX } from './mark';\nimport { assembleParameterSignals } from './parameter';\nimport { defaultScaleConfig } from './scale';\nimport { defaultConfig as defaultSelectionConfig } from './selection';\nimport { DEFAULT_SPACING, isStep } from './spec/base';\nimport { extractTitleConfig } from './title';\nimport { duplicate, getFirstDefined, isEmpty, keys, omit } from './util';\nexport function getViewConfigContinuousSize(viewConfig, channel) {\n var _viewConfig$channel;\n return (_viewConfig$channel = viewConfig[channel]) !== null && _viewConfig$channel !== void 0 ? _viewConfig$channel : viewConfig[channel === 'width' ? 'continuousWidth' : 'continuousHeight']; // get width/height for backwards compatibility\n}\n\nexport function getViewConfigDiscreteStep(viewConfig, channel) {\n var size = getViewConfigDiscreteSize(viewConfig, channel);\n return isStep(size) ? size.step : DEFAULT_STEP;\n}\nexport function getViewConfigDiscreteSize(viewConfig, channel) {\n var _viewConfig$channel2;\n var size = (_viewConfig$channel2 = viewConfig[channel]) !== null && _viewConfig$channel2 !== void 0 ? _viewConfig$channel2 : viewConfig[channel === 'width' ? 'discreteWidth' : 'discreteHeight']; // get width/height for backwards compatibility\n return getFirstDefined(size, {\n step: viewConfig.step\n });\n}\nexport var DEFAULT_STEP = 20;\nexport var defaultViewConfig = {\n continuousWidth: 200,\n continuousHeight: 200,\n step: DEFAULT_STEP\n};\nexport function isVgScheme(rangeScheme) {\n return rangeScheme && !!rangeScheme['scheme'];\n}\nexport var defaultConfig = {\n background: 'white',\n padding: 5,\n timeFormat: '%b %d, %Y',\n countTitle: 'Count of Records',\n view: defaultViewConfig,\n mark: mark.defaultMarkConfig,\n arc: {},\n area: {},\n bar: mark.defaultBarConfig,\n circle: {},\n geoshape: {},\n image: {},\n line: {},\n point: {},\n rect: mark.defaultRectConfig,\n rule: {\n color: 'black'\n },\n square: {},\n text: {\n color: 'black'\n },\n tick: mark.defaultTickConfig,\n trail: {},\n boxplot: {\n size: 14,\n extent: 1.5,\n box: {},\n median: {\n color: 'white'\n },\n outliers: {},\n rule: {},\n ticks: null\n },\n errorbar: {\n center: 'mean',\n rule: true,\n ticks: false\n },\n errorband: {\n band: {\n opacity: 0.3\n },\n borders: false\n },\n scale: defaultScaleConfig,\n projection: {},\n legend: defaultLegendConfig,\n header: {\n titlePadding: 10,\n labelPadding: 10\n },\n headerColumn: {},\n headerRow: {},\n headerFacet: {},\n selection: defaultSelectionConfig,\n style: {},\n title: {},\n facet: {\n spacing: DEFAULT_SPACING\n },\n concat: {\n spacing: DEFAULT_SPACING\n },\n normalizedNumberFormat: '.0%'\n};\n// Tableau10 color palette, copied from `vegaScale.scheme('tableau10')`\nvar tab10 = ['#4c78a8', '#f58518', '#e45756', '#72b7b2', '#54a24b', '#eeca3b', '#b279a2', '#ff9da6', '#9d755d', '#bab0ac'];\nexport var DEFAULT_FONT_SIZE = {\n text: 11,\n guideLabel: 10,\n guideTitle: 11,\n groupTitle: 13,\n groupSubtitle: 12\n};\nexport var DEFAULT_COLOR = {\n blue: tab10[0],\n orange: tab10[1],\n red: tab10[2],\n teal: tab10[3],\n green: tab10[4],\n yellow: tab10[5],\n purple: tab10[6],\n pink: tab10[7],\n brown: tab10[8],\n gray0: '#000',\n gray1: '#111',\n gray2: '#222',\n gray3: '#333',\n gray4: '#444',\n gray5: '#555',\n gray6: '#666',\n gray7: '#777',\n gray8: '#888',\n gray9: '#999',\n gray10: '#aaa',\n gray11: '#bbb',\n gray12: '#ccc',\n gray13: '#ddd',\n gray14: '#eee',\n gray15: '#fff'\n};\nexport function colorSignalConfig() {\n var color = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return {\n signals: [{\n name: 'color',\n value: isObject(color) ? _objectSpread(_objectSpread({}, DEFAULT_COLOR), color) : DEFAULT_COLOR\n }],\n mark: {\n color: {\n signal: 'color.blue'\n }\n },\n rule: {\n color: {\n signal: 'color.gray0'\n }\n },\n text: {\n color: {\n signal: 'color.gray0'\n }\n },\n style: {\n 'guide-label': {\n fill: {\n signal: 'color.gray0'\n }\n },\n 'guide-title': {\n fill: {\n signal: 'color.gray0'\n }\n },\n 'group-title': {\n fill: {\n signal: 'color.gray0'\n }\n },\n 'group-subtitle': {\n fill: {\n signal: 'color.gray0'\n }\n },\n cell: {\n stroke: {\n signal: 'color.gray8'\n }\n }\n },\n axis: {\n domainColor: {\n signal: 'color.gray13'\n },\n gridColor: {\n signal: 'color.gray8'\n },\n tickColor: {\n signal: 'color.gray13'\n }\n },\n range: {\n category: [{\n signal: 'color.blue'\n }, {\n signal: 'color.orange'\n }, {\n signal: 'color.red'\n }, {\n signal: 'color.teal'\n }, {\n signal: 'color.green'\n }, {\n signal: 'color.yellow'\n }, {\n signal: 'color.purple'\n }, {\n signal: 'color.pink'\n }, {\n signal: 'color.brown'\n }, {\n signal: 'color.grey8'\n }]\n }\n };\n}\nexport function fontSizeSignalConfig(fontSize) {\n return {\n signals: [{\n name: 'fontSize',\n value: isObject(fontSize) ? _objectSpread(_objectSpread({}, DEFAULT_FONT_SIZE), fontSize) : DEFAULT_FONT_SIZE\n }],\n text: {\n fontSize: {\n signal: 'fontSize.text'\n }\n },\n style: {\n 'guide-label': {\n fontSize: {\n signal: 'fontSize.guideLabel'\n }\n },\n 'guide-title': {\n fontSize: {\n signal: 'fontSize.guideTitle'\n }\n },\n 'group-title': {\n fontSize: {\n signal: 'fontSize.groupTitle'\n }\n },\n 'group-subtitle': {\n fontSize: {\n signal: 'fontSize.groupSubtitle'\n }\n }\n }\n };\n}\nexport function fontConfig(font) {\n return {\n text: {\n font: font\n },\n style: {\n 'guide-label': {\n font: font\n },\n 'guide-title': {\n font: font\n },\n 'group-title': {\n font: font\n },\n 'group-subtitle': {\n font: font\n }\n }\n };\n}\nfunction getAxisConfigInternal(axisConfig) {\n var props = keys(axisConfig || {});\n var axisConfigInternal = {};\n var _iterator = _createForOfIteratorHelper(props),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var prop = _step.value;\n var val = axisConfig[prop];\n axisConfigInternal[prop] = isConditionalAxisValue(val) ? signalOrValueRefWithCondition(val) : signalRefOrValue(val);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return axisConfigInternal;\n}\nfunction getStyleConfigInternal(styleConfig) {\n var props = keys(styleConfig);\n var styleConfigInternal = {};\n var _iterator2 = _createForOfIteratorHelper(props),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var prop = _step2.value;\n // We need to cast to cheat a bit here since styleConfig can be either mark config or axis config\n styleConfigInternal[prop] = getAxisConfigInternal(styleConfig[prop]);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n return styleConfigInternal;\n}\nvar configPropsWithExpr = [].concat(_toConsumableArray(MARK_CONFIGS), _toConsumableArray(AXIS_CONFIGS), _toConsumableArray(HEADER_CONFIGS), ['background', 'padding', 'legend', 'lineBreak', 'scale', 'style', 'title', 'view']);\n/**\n * Merge specified config with default config and config for the `color` flag,\n * then replace all expressions with signals\n */\nexport function initConfig() {\n var specifiedConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var color = specifiedConfig.color,\n font = specifiedConfig.font,\n fontSize = specifiedConfig.fontSize,\n selection = specifiedConfig.selection,\n restConfig = _objectWithoutProperties(specifiedConfig, _excluded);\n var mergedConfig = mergeConfig({}, duplicate(defaultConfig), font ? fontConfig(font) : {}, color ? colorSignalConfig(color) : {}, fontSize ? fontSizeSignalConfig(fontSize) : {}, restConfig || {});\n // mergeConfig doesn't recurse and overrides object values.\n if (selection) {\n writeConfig(mergedConfig, 'selection', selection, true);\n }\n var outputConfig = omit(mergedConfig, configPropsWithExpr);\n for (var _i = 0, _arr = ['background', 'lineBreak', 'padding']; _i < _arr.length; _i++) {\n var prop = _arr[_i];\n if (mergedConfig[prop]) {\n outputConfig[prop] = signalRefOrValue(mergedConfig[prop]);\n }\n }\n var _iterator3 = _createForOfIteratorHelper(mark.MARK_CONFIGS),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var markConfigType = _step3.value;\n if (mergedConfig[markConfigType]) {\n // FIXME: outputConfig[markConfigType] expects that types are replaced recursively but replaceExprRef only replaces one level deep\n outputConfig[markConfigType] = replaceExprRef(mergedConfig[markConfigType]);\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n var _iterator4 = _createForOfIteratorHelper(AXIS_CONFIGS),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var axisConfigType = _step4.value;\n if (mergedConfig[axisConfigType]) {\n outputConfig[axisConfigType] = getAxisConfigInternal(mergedConfig[axisConfigType]);\n }\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n var _iterator5 = _createForOfIteratorHelper(HEADER_CONFIGS),\n _step5;\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var headerConfigType = _step5.value;\n if (mergedConfig[headerConfigType]) {\n outputConfig[headerConfigType] = replaceExprRef(mergedConfig[headerConfigType]);\n }\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n if (mergedConfig.legend) {\n outputConfig.legend = replaceExprRef(mergedConfig.legend);\n }\n if (mergedConfig.scale) {\n outputConfig.scale = replaceExprRef(mergedConfig.scale);\n }\n if (mergedConfig.style) {\n outputConfig.style = getStyleConfigInternal(mergedConfig.style);\n }\n if (mergedConfig.title) {\n outputConfig.title = replaceExprRef(mergedConfig.title);\n }\n if (mergedConfig.view) {\n outputConfig.view = replaceExprRef(mergedConfig.view);\n }\n return outputConfig;\n}\nvar MARK_STYLES = new Set(['view'].concat(_toConsumableArray(PRIMITIVE_MARKS)));\nvar VL_ONLY_CONFIG_PROPERTIES = ['color', 'fontSize', 'background', 'padding', 'facet', 'concat', 'numberFormat', 'numberFormatType', 'normalizedNumberFormat', 'normalizedNumberFormatType', 'timeFormat', 'countTitle', 'header', 'axisQuantitative', 'axisTemporal', 'axisDiscrete', 'axisPoint', 'axisXBand', 'axisXPoint', 'axisXDiscrete', 'axisXQuantitative', 'axisXTemporal', 'axisYBand', 'axisYPoint', 'axisYDiscrete', 'axisYQuantitative', 'axisYTemporal', 'scale', 'selection', 'overlay' // FIXME: Redesign and unhide this\n];\n\nvar VL_ONLY_ALL_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX = _objectSpread({\n view: ['continuousWidth', 'continuousHeight', 'discreteWidth', 'discreteHeight', 'step']\n}, VL_ONLY_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX);\nexport function stripAndRedirectConfig(config) {\n config = duplicate(config);\n var _iterator6 = _createForOfIteratorHelper(VL_ONLY_CONFIG_PROPERTIES),\n _step6;\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var _prop4 = _step6.value;\n delete config[_prop4];\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n if (config.axis) {\n // delete condition axis config\n for (var prop in config.axis) {\n if (isConditionalAxisValue(config.axis[prop])) {\n delete config.axis[prop];\n }\n }\n }\n if (config.legend) {\n var _iterator7 = _createForOfIteratorHelper(VL_ONLY_LEGEND_CONFIG),\n _step7;\n try {\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n var _prop = _step7.value;\n delete config.legend[_prop];\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n }\n // Remove Vega-Lite only generic mark config\n if (config.mark) {\n var _iterator8 = _createForOfIteratorHelper(VL_ONLY_MARK_CONFIG_PROPERTIES),\n _step8;\n try {\n for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {\n var _prop2 = _step8.value;\n delete config.mark[_prop2];\n }\n } catch (err) {\n _iterator8.e(err);\n } finally {\n _iterator8.f();\n }\n if (config.mark.tooltip && isObject(config.mark.tooltip)) {\n delete config.mark.tooltip;\n }\n }\n if (config.params) {\n config.signals = (config.signals || []).concat(assembleParameterSignals(config.params));\n delete config.params;\n }\n var _iterator9 = _createForOfIteratorHelper(MARK_STYLES),\n _step9;\n try {\n for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {\n var markType = _step9.value;\n // Remove Vega-Lite-only mark config\n var _iterator11 = _createForOfIteratorHelper(VL_ONLY_MARK_CONFIG_PROPERTIES),\n _step11;\n try {\n for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {\n var _prop6 = _step11.value;\n delete config[markType][_prop6];\n }\n // Remove Vega-Lite only mark-specific config\n } catch (err) {\n _iterator11.e(err);\n } finally {\n _iterator11.f();\n }\n var vlOnlyMarkSpecificConfigs = VL_ONLY_ALL_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX[markType];\n if (vlOnlyMarkSpecificConfigs) {\n var _iterator12 = _createForOfIteratorHelper(vlOnlyMarkSpecificConfigs),\n _step12;\n try {\n for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {\n var _prop5 = _step12.value;\n delete config[markType][_prop5];\n }\n } catch (err) {\n _iterator12.e(err);\n } finally {\n _iterator12.f();\n }\n }\n // Redirect mark config to config.style so that mark config only affect its own mark type\n // without affecting other marks that share the same underlying Vega marks.\n // For example, config.rect should not affect bar marks.\n redirectConfigToStyleConfig(config, markType);\n }\n } catch (err) {\n _iterator9.e(err);\n } finally {\n _iterator9.f();\n }\n var _iterator10 = _createForOfIteratorHelper(getAllCompositeMarks()),\n _step10;\n try {\n for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {\n var m = _step10.value;\n // Clean up the composite mark config as we don't need them in the output specs anymore\n delete config[m];\n }\n } catch (err) {\n _iterator10.e(err);\n } finally {\n _iterator10.f();\n }\n redirectTitleConfig(config);\n // Remove empty config objects.\n for (var _prop3 in config) {\n if (isObject(config[_prop3]) && isEmpty(config[_prop3])) {\n delete config[_prop3];\n }\n }\n return isEmpty(config) ? undefined : config;\n}\n/**\n *\n * Redirect config.title -- so that title config do not affect header labels,\n * which also uses `title` directive to implement.\n *\n * For subtitle configs in config.title, keep them in config.title as header titles never have subtitles.\n */\nfunction redirectTitleConfig(config) {\n var _extractTitleConfig = extractTitleConfig(config.title),\n titleMarkConfig = _extractTitleConfig.titleMarkConfig,\n subtitleMarkConfig = _extractTitleConfig.subtitleMarkConfig,\n subtitle = _extractTitleConfig.subtitle;\n // set config.style if title/subtitleMarkConfig is not an empty object\n if (!isEmpty(titleMarkConfig)) {\n config.style['group-title'] = _objectSpread(_objectSpread({}, config.style['group-title']), titleMarkConfig);\n }\n if (!isEmpty(subtitleMarkConfig)) {\n config.style['group-subtitle'] = _objectSpread(_objectSpread({}, config.style['group-subtitle']), subtitleMarkConfig);\n }\n // subtitle part can stay in config.title since header titles do not use subtitle\n if (!isEmpty(subtitle)) {\n config.title = subtitle;\n } else {\n delete config.title;\n }\n}\nfunction redirectConfigToStyleConfig(config, prop,\n// string = composite mark\ntoProp, compositeMarkPart) {\n var _toProp;\n var propConfig = compositeMarkPart ? config[prop][compositeMarkPart] : config[prop];\n if (prop === 'view') {\n toProp = 'cell'; // View's default style is \"cell\"\n }\n\n var style = _objectSpread(_objectSpread({}, propConfig), config.style[(_toProp = toProp) !== null && _toProp !== void 0 ? _toProp : prop]);\n // set config.style if it is not an empty object\n if (!isEmpty(style)) {\n var _toProp2;\n config.style[(_toProp2 = toProp) !== null && _toProp2 !== void 0 ? _toProp2 : prop] = style;\n }\n if (!compositeMarkPart) {\n // For composite mark, so don't delete the whole config yet as we have to do multiple redirections.\n delete config[prop];\n }\n}","export function isLayerSpec(spec) {\n return 'layer' in spec;\n}","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nvar _excluded = [\"concat\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport * as log from '../log';\nimport { isConcatSpec, isHConcatSpec, isVConcatSpec } from './concat';\nimport { isFacetSpec } from './facet';\nimport { isLayerSpec } from './layer';\nimport { isRepeatSpec } from './repeat';\nimport { isUnitSpec } from './unit';\nexport var SpecMapper = /*#__PURE__*/function () {\n function SpecMapper() {\n _classCallCheck(this, SpecMapper);\n }\n _createClass(SpecMapper, [{\n key: \"map\",\n value: function map(spec, params) {\n if (isFacetSpec(spec)) {\n return this.mapFacet(spec, params);\n } else if (isRepeatSpec(spec)) {\n return this.mapRepeat(spec, params);\n } else if (isHConcatSpec(spec)) {\n return this.mapHConcat(spec, params);\n } else if (isVConcatSpec(spec)) {\n return this.mapVConcat(spec, params);\n } else if (isConcatSpec(spec)) {\n return this.mapConcat(spec, params);\n } else {\n return this.mapLayerOrUnit(spec, params);\n }\n }\n }, {\n key: \"mapLayerOrUnit\",\n value: function mapLayerOrUnit(spec, params) {\n if (isLayerSpec(spec)) {\n return this.mapLayer(spec, params);\n } else if (isUnitSpec(spec)) {\n return this.mapUnit(spec, params);\n }\n throw new Error(log.message.invalidSpec(spec));\n }\n }, {\n key: \"mapLayer\",\n value: function mapLayer(spec, params) {\n var _this = this;\n return _objectSpread(_objectSpread({}, spec), {}, {\n layer: spec.layer.map(function (subspec) {\n return _this.mapLayerOrUnit(subspec, params);\n })\n });\n }\n }, {\n key: \"mapHConcat\",\n value: function mapHConcat(spec, params) {\n var _this2 = this;\n return _objectSpread(_objectSpread({}, spec), {}, {\n hconcat: spec.hconcat.map(function (subspec) {\n return _this2.map(subspec, params);\n })\n });\n }\n }, {\n key: \"mapVConcat\",\n value: function mapVConcat(spec, params) {\n var _this3 = this;\n return _objectSpread(_objectSpread({}, spec), {}, {\n vconcat: spec.vconcat.map(function (subspec) {\n return _this3.map(subspec, params);\n })\n });\n }\n }, {\n key: \"mapConcat\",\n value: function mapConcat(spec, params) {\n var _this4 = this;\n var concat = spec.concat,\n rest = _objectWithoutProperties(spec, _excluded);\n return _objectSpread(_objectSpread({}, rest), {}, {\n concat: concat.map(function (subspec) {\n return _this4.map(subspec, params);\n })\n });\n }\n }, {\n key: \"mapFacet\",\n value: function mapFacet(spec, params) {\n return _objectSpread(_objectSpread({}, spec), {}, {\n // TODO: remove \"any\" once we support all facet listed in https://github.com/vega/vega-lite/issues/2760\n spec: this.map(spec.spec, params)\n });\n }\n }, {\n key: \"mapRepeat\",\n value: function mapRepeat(spec, params) {\n return _objectSpread(_objectSpread({}, spec), {}, {\n // as any is required here since TS cannot infer that the output type satisfies the input type\n spec: this.map(spec.spec, params)\n });\n }\n }]);\n return SpecMapper;\n}();","import { isArray } from 'vega-util';\nexport function isRepeatSpec(spec) {\n return 'repeat' in spec;\n}\nexport function isLayerRepeatSpec(spec) {\n return !isArray(spec.repeat) && spec.repeat['layer'];\n}","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { array, isBoolean } from 'vega-util';\nimport { SUM_OPS } from './aggregate';\nimport { getSecondaryRangeChannel, NONPOSITION_CHANNELS } from './channel';\nimport { channelDefType, getFieldDef, isFieldDef, isFieldOrDatumDef, vgField } from './channeldef';\nimport { channelHasField, isAggregate } from './encoding';\nimport * as log from './log';\nimport { ARC, AREA, BAR, CIRCLE, isMarkDef, isPathMark, LINE, POINT, RULE, SQUARE, TEXT, TICK } from './mark';\nimport { ScaleType } from './scale';\nvar STACK_OFFSET_INDEX = {\n zero: 1,\n center: 1,\n normalize: 1\n};\nexport function isStackOffset(s) {\n return s in STACK_OFFSET_INDEX;\n}\nexport var STACKABLE_MARKS = new Set([ARC, BAR, AREA, RULE, POINT, CIRCLE, SQUARE, LINE, TEXT, TICK]);\nexport var STACK_BY_DEFAULT_MARKS = new Set([BAR, AREA, ARC]);\nfunction isUnbinnedQuantitative(channelDef) {\n return isFieldDef(channelDef) && channelDefType(channelDef) === 'quantitative' && !channelDef.bin;\n}\nfunction potentialStackedChannel(encoding, x, _ref) {\n var orient = _ref.orient,\n mark = _ref.type;\n var y = x === 'x' ? 'y' : 'radius';\n var isCartesian = x === 'x';\n var xDef = encoding[x];\n var yDef = encoding[y];\n if (isFieldDef(xDef) && isFieldDef(yDef)) {\n if (isUnbinnedQuantitative(xDef) && isUnbinnedQuantitative(yDef)) {\n if (xDef.stack) {\n return x;\n } else if (yDef.stack) {\n return y;\n }\n var xAggregate = isFieldDef(xDef) && !!xDef.aggregate;\n var yAggregate = isFieldDef(yDef) && !!yDef.aggregate;\n // if there is no explicit stacking, only apply stack if there is only one aggregate for x or y\n if (xAggregate !== yAggregate) {\n return xAggregate ? x : y;\n }\n if (isCartesian && ['bar', 'area'].includes(mark)) {\n if (orient === 'vertical') {\n return y;\n } else if (orient === 'horizontal') {\n return x;\n }\n }\n } else if (isUnbinnedQuantitative(xDef)) {\n return x;\n } else if (isUnbinnedQuantitative(yDef)) {\n return y;\n }\n } else if (isUnbinnedQuantitative(xDef)) {\n return x;\n } else if (isUnbinnedQuantitative(yDef)) {\n return y;\n }\n return undefined;\n}\nfunction getDimensionChannel(channel) {\n switch (channel) {\n case 'x':\n return 'y';\n case 'y':\n return 'x';\n case 'theta':\n return 'radius';\n case 'radius':\n return 'theta';\n }\n}\nexport function stack(m, encoding) {\n var _stackedFieldDef$scal, _stackedFieldDef$scal2;\n var markDef = isMarkDef(m) ? m : {\n type: m\n };\n var mark = markDef.type;\n // Should have stackable mark\n if (!STACKABLE_MARKS.has(mark)) {\n return null;\n }\n // Run potential stacked twice, one for Cartesian and another for Polar,\n // so text marks can be stacked in any of the coordinates.\n // Note: The logic here is not perfectly correct. If we want to support stacked dot plots where each dot is a pie chart with label, we have to change the stack logic here to separate Cartesian stacking for polar stacking.\n // However, since we probably never want to do that, let's just note the limitation here.\n var fieldChannel = potentialStackedChannel(encoding, 'x', markDef) || potentialStackedChannel(encoding, 'theta', markDef);\n if (!fieldChannel) {\n return null;\n }\n var stackedFieldDef = encoding[fieldChannel];\n var stackedField = isFieldDef(stackedFieldDef) ? vgField(stackedFieldDef, {}) : undefined;\n var dimensionChannel = getDimensionChannel(fieldChannel);\n var groupbyChannels = [];\n var groupbyFields = new Set();\n if (encoding[dimensionChannel]) {\n var dimensionDef = encoding[dimensionChannel];\n var dimensionField = isFieldDef(dimensionDef) ? vgField(dimensionDef, {}) : undefined;\n if (dimensionField && dimensionField !== stackedField) {\n // avoid grouping by the stacked field\n groupbyChannels.push(dimensionChannel);\n groupbyFields.add(dimensionField);\n }\n var dimensionOffsetChannel = dimensionChannel === 'x' ? 'xOffset' : 'yOffset';\n var dimensionOffsetDef = encoding[dimensionOffsetChannel];\n var dimensionOffsetField = isFieldDef(dimensionOffsetDef) ? vgField(dimensionOffsetDef, {}) : undefined;\n if (dimensionOffsetField && dimensionOffsetField !== stackedField) {\n // avoid grouping by the stacked field\n groupbyChannels.push(dimensionOffsetChannel);\n groupbyFields.add(dimensionOffsetField);\n }\n }\n // If the dimension has offset, don't stack anymore\n // Should have grouping level of detail that is different from the dimension field\n var stackBy = NONPOSITION_CHANNELS.reduce(function (sc, channel) {\n // Ignore tooltip in stackBy (https://github.com/vega/vega-lite/issues/4001)\n if (channel !== 'tooltip' && channelHasField(encoding, channel)) {\n var channelDef = encoding[channel];\n var _iterator = _createForOfIteratorHelper(array(channelDef)),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var cDef = _step.value;\n var fieldDef = getFieldDef(cDef);\n if (fieldDef.aggregate) {\n continue;\n }\n // Check whether the channel's field is identical to x/y's field or if the channel is a repeat\n var f = vgField(fieldDef, {});\n if (\n // if fielddef is a repeat, just include it in the stack by\n !f ||\n // otherwise, the field must be different from the groupBy fields.\n !groupbyFields.has(f)) {\n sc.push({\n channel: channel,\n fieldDef: fieldDef\n });\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n return sc;\n }, []);\n // Automatically determine offset\n var offset;\n if (stackedFieldDef.stack !== undefined) {\n if (isBoolean(stackedFieldDef.stack)) {\n offset = stackedFieldDef.stack ? 'zero' : null;\n } else {\n offset = stackedFieldDef.stack;\n }\n } else if (STACK_BY_DEFAULT_MARKS.has(mark)) {\n offset = 'zero';\n }\n if (!offset || !isStackOffset(offset)) {\n return null;\n }\n if (isAggregate(encoding) && stackBy.length === 0) {\n return null;\n }\n // warn when stacking non-linear\n if (stackedFieldDef !== null && stackedFieldDef !== void 0 && (_stackedFieldDef$scal = stackedFieldDef.scale) !== null && _stackedFieldDef$scal !== void 0 && _stackedFieldDef$scal.type && (stackedFieldDef === null || stackedFieldDef === void 0 || (_stackedFieldDef$scal2 = stackedFieldDef.scale) === null || _stackedFieldDef$scal2 === void 0 ? void 0 : _stackedFieldDef$scal2.type) !== ScaleType.LINEAR) {\n if (stackedFieldDef !== null && stackedFieldDef !== void 0 && stackedFieldDef.stack) {\n log.warn(log.message.cannotStackNonLinearScale(stackedFieldDef.scale.type));\n }\n return null;\n }\n // Check if it is a ranged mark\n if (isFieldOrDatumDef(encoding[getSecondaryRangeChannel(fieldChannel)])) {\n if (stackedFieldDef.stack !== undefined) {\n log.warn(log.message.cannotStackRangedMark(fieldChannel));\n }\n return null;\n }\n // Warn if stacking non-summative aggregate\n if (isFieldDef(stackedFieldDef) && stackedFieldDef.aggregate && !SUM_OPS.has(stackedFieldDef.aggregate)) {\n log.warn(log.message.stackNonSummativeAggregate(stackedFieldDef.aggregate));\n }\n return {\n groupbyChannels: groupbyChannels,\n groupbyFields: groupbyFields,\n fieldChannel: fieldChannel,\n impute: stackedFieldDef.impute === null ? false : isPathMark(mark),\n stackBy: stackBy,\n offset: offset\n };\n}","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { isBinned, isBinning } from '../../bin';\nimport { isFieldDef, isNumericDataDef, isUnbinnedQuantitativeFieldOrDatumDef, isTypedFieldDef } from '../../channeldef';\nimport { isAggregate } from '../../encoding';\nimport { replaceExprRef } from '../../expr';\nimport * as log from '../../log';\nimport { AREA, BAR, BAR_CORNER_RADIUS_INDEX as BAR_CORNER_RADIUS_END_INDEX, CIRCLE, IMAGE, LINE, POINT, RECT, RULE, SQUARE, TEXT, TICK } from '../../mark';\nimport { QUANTITATIVE, TEMPORAL } from '../../type';\nimport { contains, getFirstDefined } from '../../util';\nimport { getMarkConfig, getMarkPropOrConfig } from '../common';\nexport function initMarkdef(originalMarkDef, encoding, config) {\n // FIXME: markDef expects that exprRefs are replaced recursively but replaceExprRef only replaces the top level\n var markDef = replaceExprRef(originalMarkDef);\n // set orient, which can be overridden by rules as sometimes the specified orient is invalid.\n var specifiedOrient = getMarkPropOrConfig('orient', markDef, config);\n markDef.orient = orient(markDef.type, encoding, specifiedOrient);\n if (specifiedOrient !== undefined && specifiedOrient !== markDef.orient) {\n log.warn(log.message.orientOverridden(markDef.orient, specifiedOrient));\n }\n if (markDef.type === 'bar' && markDef.orient) {\n var cornerRadiusEnd = getMarkPropOrConfig('cornerRadiusEnd', markDef, config);\n if (cornerRadiusEnd !== undefined) {\n var newProps = markDef.orient === 'horizontal' && encoding.x2 || markDef.orient === 'vertical' && encoding.y2 ? ['cornerRadius'] : BAR_CORNER_RADIUS_END_INDEX[markDef.orient];\n var _iterator = _createForOfIteratorHelper(newProps),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var newProp = _step.value;\n markDef[newProp] = cornerRadiusEnd;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n if (markDef.cornerRadiusEnd !== undefined) {\n delete markDef.cornerRadiusEnd; // no need to keep the original cap cornerRadius\n }\n }\n }\n // set opacity and filled if not specified in mark config\n var specifiedOpacity = getMarkPropOrConfig('opacity', markDef, config);\n if (specifiedOpacity === undefined) {\n markDef.opacity = opacity(markDef.type, encoding);\n }\n // set cursor, which should be pointer if href channel is present unless otherwise specified\n var specifiedCursor = getMarkPropOrConfig('cursor', markDef, config);\n if (specifiedCursor === undefined) {\n markDef.cursor = cursor(markDef, encoding, config);\n }\n return markDef;\n}\nfunction cursor(markDef, encoding, config) {\n if (encoding.href || markDef.href || getMarkPropOrConfig('href', markDef, config)) {\n return 'pointer';\n }\n return markDef.cursor;\n}\nfunction opacity(mark, encoding) {\n if (contains([POINT, TICK, CIRCLE, SQUARE], mark)) {\n // point-based marks\n if (!isAggregate(encoding)) {\n return 0.7;\n }\n }\n return undefined;\n}\nexport function defaultFilled(markDef, config, _ref) {\n var graticule = _ref.graticule;\n if (graticule) {\n return false;\n }\n var filledConfig = getMarkConfig('filled', markDef, config);\n var mark = markDef.type;\n return getFirstDefined(filledConfig, mark !== POINT && mark !== LINE && mark !== RULE);\n}\nfunction orient(mark, encoding, specifiedOrient) {\n switch (mark) {\n case POINT:\n case CIRCLE:\n case SQUARE:\n case TEXT:\n case RECT:\n case IMAGE:\n // orient is meaningless for these marks.\n return undefined;\n }\n var x = encoding.x,\n y = encoding.y,\n x2 = encoding.x2,\n y2 = encoding.y2;\n switch (mark) {\n case BAR:\n if (isFieldDef(x) && (isBinned(x.bin) || isFieldDef(y) && y.aggregate && !x.aggregate)) {\n return 'vertical';\n }\n if (isFieldDef(y) && (isBinned(y.bin) || isFieldDef(x) && x.aggregate && !y.aggregate)) {\n return 'horizontal';\n }\n if (y2 || x2) {\n // Ranged bar does not always have clear orientation, so we allow overriding\n if (specifiedOrient) {\n return specifiedOrient;\n }\n // If y is range and x is non-range, non-bin Q\n if (!x2) {\n if (isFieldDef(x) && x.type === QUANTITATIVE && !isBinning(x.bin) || isNumericDataDef(x)) {\n if (isFieldDef(y) && isBinned(y.bin)) {\n return 'horizontal';\n }\n }\n return 'vertical';\n }\n // If x is range and y is non-range, non-bin Q\n if (!y2) {\n if (isFieldDef(y) && y.type === QUANTITATIVE && !isBinning(y.bin) || isNumericDataDef(y)) {\n if (isFieldDef(x) && isBinned(x.bin)) {\n return 'vertical';\n }\n }\n return 'horizontal';\n }\n }\n // falls through\n case RULE:\n // return undefined for line segment rule and bar with both axis ranged\n // we have to ignore the case that the data are already binned\n if (x2 && !(isFieldDef(x) && isBinned(x.bin)) && y2 && !(isFieldDef(y) && isBinned(y.bin))) {\n return undefined;\n }\n // falls through\n case AREA:\n // If there are range for both x and y, y (vertical) has higher precedence.\n if (y2) {\n if (isFieldDef(y) && isBinned(y.bin)) {\n return 'horizontal';\n } else {\n return 'vertical';\n }\n } else if (x2) {\n if (isFieldDef(x) && isBinned(x.bin)) {\n return 'vertical';\n } else {\n return 'horizontal';\n }\n } else if (mark === RULE) {\n if (x && !y) {\n return 'vertical';\n } else if (y && !x) {\n return 'horizontal';\n }\n }\n // falls through\n case LINE:\n case TICK:\n {\n var xIsMeasure = isUnbinnedQuantitativeFieldOrDatumDef(x);\n var yIsMeasure = isUnbinnedQuantitativeFieldOrDatumDef(y);\n if (specifiedOrient) {\n return specifiedOrient;\n } else if (xIsMeasure && !yIsMeasure) {\n // Tick is opposite to bar, line, area\n return mark !== 'tick' ? 'horizontal' : 'vertical';\n } else if (!xIsMeasure && yIsMeasure) {\n // Tick is opposite to bar, line, area\n return mark !== 'tick' ? 'vertical' : 'horizontal';\n } else if (xIsMeasure && yIsMeasure) {\n return 'vertical';\n } else {\n var xIsTemporal = isTypedFieldDef(x) && x.type === TEMPORAL;\n var yIsTemporal = isTypedFieldDef(y) && y.type === TEMPORAL;\n // x: T, y: N --> vertical tick\n if (xIsTemporal && !yIsTemporal) {\n return 'vertical';\n } else if (!xIsTemporal && yIsTemporal) {\n return 'horizontal';\n }\n }\n return undefined;\n }\n }\n return 'vertical';\n}","import _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"point\", \"line\"],\n _excluded2 = [\"params\", \"projection\", \"mark\", \"name\", \"encoding\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { isObject } from 'vega-util';\nimport { normalizeEncoding } from '../encoding';\nimport { isMarkDef } from '../mark';\nimport { isUnitSpec } from '../spec/unit';\nimport { stack } from '../stack';\nimport { keys, omit, pick } from '../util';\nimport { initMarkdef } from '../compile/mark/init';\nfunction dropLineAndPoint(markDef) {\n var _point = markDef.point,\n _line = markDef.line,\n mark = _objectWithoutProperties(markDef, _excluded);\n return keys(mark).length > 1 ? mark : mark.type;\n}\nfunction dropLineAndPointFromConfig(config) {\n for (var _i = 0, _arr = ['line', 'area', 'rule', 'trail']; _i < _arr.length; _i++) {\n var mark = _arr[_i];\n if (config[mark]) {\n config = _objectSpread(_objectSpread({}, config), {}, _defineProperty({}, mark, omit(config[mark], ['point', 'line'])));\n }\n }\n return config;\n}\nfunction getPointOverlay(markDef) {\n var markConfig = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var encoding = arguments.length > 2 ? arguments[2] : undefined;\n if (markDef.point === 'transparent') {\n return {\n opacity: 0\n };\n } else if (markDef.point) {\n // truthy : true or object\n return isObject(markDef.point) ? markDef.point : {};\n } else if (markDef.point !== undefined) {\n // false or null\n return null;\n } else {\n // undefined (not disabled)\n if (markConfig.point || encoding.shape) {\n // enable point overlay if config[mark].point is truthy or if encoding.shape is provided\n return isObject(markConfig.point) ? markConfig.point : {};\n }\n // markDef.point is defined as falsy\n return undefined;\n }\n}\nfunction getLineOverlay(markDef) {\n var markConfig = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (markDef.line) {\n // true or object\n return markDef.line === true ? {} : markDef.line;\n } else if (markDef.line !== undefined) {\n // false or null\n return null;\n } else {\n // undefined (not disabled)\n if (markConfig.line) {\n // enable line overlay if config[mark].line is truthy\n return markConfig.line === true ? {} : markConfig.line;\n }\n // markDef.point is defined as falsy\n return undefined;\n }\n}\nexport var PathOverlayNormalizer = /*#__PURE__*/function () {\n function PathOverlayNormalizer() {\n _classCallCheck(this, PathOverlayNormalizer);\n this.name = 'path-overlay';\n }\n _createClass(PathOverlayNormalizer, [{\n key: \"hasMatchingType\",\n value: function hasMatchingType(spec, config) {\n if (isUnitSpec(spec)) {\n var mark = spec.mark,\n encoding = spec.encoding;\n var markDef = isMarkDef(mark) ? mark : {\n type: mark\n };\n switch (markDef.type) {\n case 'line':\n case 'rule':\n case 'trail':\n return !!getPointOverlay(markDef, config[markDef.type], encoding);\n case 'area':\n return (\n // false / null are also included as we want to remove the properties\n !!getPointOverlay(markDef, config[markDef.type], encoding) || !!getLineOverlay(markDef, config[markDef.type])\n );\n }\n }\n return false;\n }\n }, {\n key: \"run\",\n value: function run(spec, normParams, normalize) {\n var config = normParams.config;\n var params = spec.params,\n projection = spec.projection,\n mark = spec.mark,\n name = spec.name,\n e = spec.encoding,\n outerSpec = _objectWithoutProperties(spec, _excluded2);\n // Need to call normalizeEncoding because we need the inferred types to correctly determine stack\n var encoding = normalizeEncoding(e, config);\n var markDef = isMarkDef(mark) ? mark : {\n type: mark\n };\n var pointOverlay = getPointOverlay(markDef, config[markDef.type], encoding);\n var lineOverlay = markDef.type === 'area' && getLineOverlay(markDef, config[markDef.type]);\n var layer = [_objectSpread(_objectSpread({\n name: name\n }, params ? {\n params: params\n } : {}), {}, {\n mark: dropLineAndPoint(_objectSpread(_objectSpread({}, markDef.type === 'area' && markDef.opacity === undefined && markDef.fillOpacity === undefined ? {\n opacity: 0.7\n } : {}), markDef)),\n // drop shape from encoding as this might be used to trigger point overlay\n encoding: omit(encoding, ['shape'])\n })];\n // FIXME: determine rules for applying selections.\n // Need to copy stack config to overlayed layer\n // FIXME: normalizer shouldn't call `initMarkdef`, a method from an init phase.\n var stackProps = stack(initMarkdef(markDef, encoding, config), encoding);\n var overlayEncoding = encoding;\n if (stackProps) {\n var stackFieldChannel = stackProps.fieldChannel,\n offset = stackProps.offset;\n overlayEncoding = _objectSpread(_objectSpread({}, encoding), {}, _defineProperty({}, stackFieldChannel, _objectSpread(_objectSpread({}, encoding[stackFieldChannel]), offset ? {\n stack: offset\n } : {})));\n }\n // overlay line layer should be on the edge of area but passing y2/x2 makes\n // it as \"rule\" mark so that it draws unwanted vertical/horizontal lines.\n // point overlay also should not have y2/x2 as it does not support.\n overlayEncoding = omit(overlayEncoding, ['y2', 'x2']);\n if (lineOverlay) {\n layer.push(_objectSpread(_objectSpread({}, projection ? {\n projection: projection\n } : {}), {}, {\n mark: _objectSpread(_objectSpread({\n type: 'line'\n }, pick(markDef, ['clip', 'interpolate', 'tension', 'tooltip'])), lineOverlay),\n encoding: overlayEncoding\n }));\n }\n if (pointOverlay) {\n layer.push(_objectSpread(_objectSpread({}, projection ? {\n projection: projection\n } : {}), {}, {\n mark: _objectSpread(_objectSpread({\n type: 'point',\n opacity: 1,\n filled: true\n }, pick(markDef, ['clip', 'tooltip'])), pointOverlay),\n encoding: overlayEncoding\n }));\n }\n return normalize(_objectSpread(_objectSpread({}, outerSpec), {}, {\n layer: layer\n }), _objectSpread(_objectSpread({}, normParams), {}, {\n config: dropLineAndPointFromConfig(config)\n }));\n }\n }]);\n return PathOverlayNormalizer;\n}();","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nvar _excluded = [\"condition\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { hasOwnProperty, isArray } from 'vega-util';\nimport { hasConditionalFieldOrDatumDef, isConditionalDef, isFieldDef, isFieldOrDatumDef, isRepeatRef, isSortableFieldDef } from '../channeldef';\nimport * as log from '../log';\nimport { isSortField } from '../sort';\nimport { isFacetMapping } from '../spec/facet';\nexport function replaceRepeaterInFacet(facet, repeater) {\n if (!repeater) {\n return facet;\n }\n if (isFacetMapping(facet)) {\n return replaceRepeaterInMapping(facet, repeater);\n }\n return replaceRepeaterInFieldDef(facet, repeater);\n}\nexport function replaceRepeaterInEncoding(encoding, repeater) {\n if (!repeater) {\n return encoding;\n }\n return replaceRepeaterInMapping(encoding, repeater);\n}\n/**\n * Replaces repeated value and returns if the repeated value is valid.\n */\nfunction replaceRepeatInProp(prop, o, repeater) {\n var val = o[prop];\n if (isRepeatRef(val)) {\n if (val.repeat in repeater) {\n return _objectSpread(_objectSpread({}, o), {}, _defineProperty({}, prop, repeater[val.repeat]));\n } else {\n log.warn(log.message.noSuchRepeatedValue(val.repeat));\n return undefined;\n }\n }\n return o;\n}\n/**\n * Replace repeater values in a field def with the concrete field name.\n */\nfunction replaceRepeaterInFieldDef(fieldDef, repeater) {\n fieldDef = replaceRepeatInProp('field', fieldDef, repeater);\n if (fieldDef === undefined) {\n // the field def should be ignored\n return undefined;\n } else if (fieldDef === null) {\n return null;\n }\n if (isSortableFieldDef(fieldDef) && isSortField(fieldDef.sort)) {\n var sort = replaceRepeatInProp('field', fieldDef.sort, repeater);\n fieldDef = _objectSpread(_objectSpread({}, fieldDef), sort ? {\n sort: sort\n } : {});\n }\n return fieldDef;\n}\nfunction replaceRepeaterInFieldOrDatumDef(def, repeater) {\n if (isFieldDef(def)) {\n return replaceRepeaterInFieldDef(def, repeater);\n } else {\n var datumDef = replaceRepeatInProp('datum', def, repeater);\n if (datumDef !== def && !datumDef.type) {\n datumDef.type = 'nominal';\n }\n return datumDef;\n }\n}\nfunction replaceRepeaterInChannelDef(channelDef, repeater) {\n if (isFieldOrDatumDef(channelDef)) {\n var fd = replaceRepeaterInFieldOrDatumDef(channelDef, repeater);\n if (fd) {\n return fd;\n } else if (isConditionalDef(channelDef)) {\n return {\n condition: channelDef.condition\n };\n }\n } else {\n if (hasConditionalFieldOrDatumDef(channelDef)) {\n var _fd = replaceRepeaterInFieldOrDatumDef(channelDef.condition, repeater);\n if (_fd) {\n return _objectSpread(_objectSpread({}, channelDef), {}, {\n condition: _fd\n });\n } else {\n var condition = channelDef.condition,\n channelDefWithoutCondition = _objectWithoutProperties(channelDef, _excluded);\n return channelDefWithoutCondition;\n }\n }\n return channelDef;\n }\n return undefined;\n}\nfunction replaceRepeaterInMapping(mapping, repeater) {\n var out = {};\n for (var channel in mapping) {\n if (hasOwnProperty(mapping, channel)) {\n var channelDef = mapping[channel];\n if (isArray(channelDef)) {\n // array cannot have condition\n out[channel] = channelDef // somehow we need to cast it here\n .map(function (cd) {\n return replaceRepeaterInChannelDef(cd, repeater);\n }).filter(function (cd) {\n return cd;\n });\n } else {\n var cd = replaceRepeaterInChannelDef(channelDef, repeater);\n if (cd !== undefined) {\n out[channel] = cd;\n }\n }\n }\n }\n return out;\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { isObject } from 'vega-util';\nimport { isBinned } from '../bin';\nimport { getMainRangeChannel, SECONDARY_RANGE_CHANNEL } from '../channel';\nimport { isDatumDef, isFieldDef } from '../channeldef';\nimport * as log from '../log';\nimport { isMarkDef } from '../mark';\nimport { isUnitSpec } from '../spec/unit';\nexport var RuleForRangedLineNormalizer = /*#__PURE__*/function () {\n function RuleForRangedLineNormalizer() {\n _classCallCheck(this, RuleForRangedLineNormalizer);\n this.name = 'RuleForRangedLine';\n }\n _createClass(RuleForRangedLineNormalizer, [{\n key: \"hasMatchingType\",\n value: function hasMatchingType(spec) {\n if (isUnitSpec(spec)) {\n var encoding = spec.encoding,\n mark = spec.mark;\n if (mark === 'line' || isMarkDef(mark) && mark.type === 'line') {\n var _iterator = _createForOfIteratorHelper(SECONDARY_RANGE_CHANNEL),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var channel = _step.value;\n var mainChannel = getMainRangeChannel(channel);\n var mainChannelDef = encoding[mainChannel];\n if (encoding[channel]) {\n if (isFieldDef(mainChannelDef) && !isBinned(mainChannelDef.bin) || isDatumDef(mainChannelDef)) {\n return true;\n }\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n }\n return false;\n }\n }, {\n key: \"run\",\n value: function run(spec, params, normalize) {\n var encoding = spec.encoding,\n mark = spec.mark;\n log.warn(log.message.lineWithRange(!!encoding.x2, !!encoding.y2));\n return normalize(_objectSpread(_objectSpread({}, spec), {}, {\n mark: isObject(mark) ? _objectSpread(_objectSpread({}, mark), {}, {\n type: 'rule'\n }) : 'rule'\n }), params);\n }\n }]);\n return RuleForRangedLineNormalizer;\n}();","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _get from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/get.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nvar _excluded = [\"repeat\", \"spec\"],\n _excluded2 = [\"repeat\", \"spec\", \"data\"],\n _excluded3 = [\"row\", \"column\", \"facet\"],\n _excluded4 = [\"mark\", \"width\", \"projection\", \"height\", \"view\", \"params\", \"encoding\"],\n _excluded5 = [\"align\", \"center\", \"spacing\", \"columns\"],\n _excluded6 = [\"align\", \"center\", \"spacing\", \"columns\"],\n _excluded7 = [\"parentEncoding\", \"parentProjection\"],\n _excluded8 = [\"encoding\", \"projection\"];\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { isArray } from 'vega-util';\nimport { COLUMN, FACET, ROW } from '../channel';\nimport { hasConditionalFieldOrDatumDef, isFieldOrDatumDef, isValueDef } from '../channeldef';\nimport { boxPlotNormalizer } from '../compositemark/boxplot';\nimport { errorBandNormalizer } from '../compositemark/errorband';\nimport { errorBarNormalizer } from '../compositemark/errorbar';\nimport { channelHasField } from '../encoding';\nimport * as log from '../log';\nimport { isFacetMapping } from '../spec/facet';\nimport { SpecMapper } from '../spec/map';\nimport { isLayerRepeatSpec } from '../spec/repeat';\nimport { isUnitSpec } from '../spec/unit';\nimport { isEmpty, keys, omit, varName } from '../util';\nimport { isSignalRef } from '../vega.schema';\nimport { PathOverlayNormalizer } from './pathoverlay';\nimport { replaceRepeaterInEncoding, replaceRepeaterInFacet } from './repeater';\nimport { RuleForRangedLineNormalizer } from './ruleforrangedline';\nexport var CoreNormalizer = /*#__PURE__*/function (_SpecMapper) {\n _inherits(CoreNormalizer, _SpecMapper);\n var _super = _createSuper(CoreNormalizer);\n function CoreNormalizer() {\n var _this;\n _classCallCheck(this, CoreNormalizer);\n _this = _super.apply(this, arguments);\n _this.nonFacetUnitNormalizers = [boxPlotNormalizer, errorBarNormalizer, errorBandNormalizer, new PathOverlayNormalizer(), new RuleForRangedLineNormalizer()];\n return _this;\n }\n _createClass(CoreNormalizer, [{\n key: \"map\",\n value: function map(spec, params) {\n // Special handling for a faceted unit spec as it can return a facet spec, not just a layer or unit spec like a normal unit spec.\n if (isUnitSpec(spec)) {\n var hasRow = channelHasField(spec.encoding, ROW);\n var hasColumn = channelHasField(spec.encoding, COLUMN);\n var hasFacet = channelHasField(spec.encoding, FACET);\n if (hasRow || hasColumn || hasFacet) {\n return this.mapFacetedUnit(spec, params);\n }\n }\n return _get(_getPrototypeOf(CoreNormalizer.prototype), \"map\", this).call(this, spec, params);\n }\n // This is for normalizing non-facet unit\n }, {\n key: \"mapUnit\",\n value: function mapUnit(spec, params) {\n var parentEncoding = params.parentEncoding,\n parentProjection = params.parentProjection;\n var encoding = replaceRepeaterInEncoding(spec.encoding, params.repeater);\n var specWithReplacedEncoding = _objectSpread(_objectSpread(_objectSpread({}, spec), spec.name ? {\n name: [params.repeaterPrefix, spec.name].filter(function (n) {\n return n;\n }).join('_')\n } : {}), encoding ? {\n encoding: encoding\n } : {});\n if (parentEncoding || parentProjection) {\n return this.mapUnitWithParentEncodingOrProjection(specWithReplacedEncoding, params);\n }\n var normalizeLayerOrUnit = this.mapLayerOrUnit.bind(this);\n var _iterator = _createForOfIteratorHelper(this.nonFacetUnitNormalizers),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var unitNormalizer = _step.value;\n if (unitNormalizer.hasMatchingType(specWithReplacedEncoding, params.config)) {\n return unitNormalizer.run(specWithReplacedEncoding, params, normalizeLayerOrUnit);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return specWithReplacedEncoding;\n }\n }, {\n key: \"mapRepeat\",\n value: function mapRepeat(spec, params) {\n if (isLayerRepeatSpec(spec)) {\n return this.mapLayerRepeat(spec, params);\n } else {\n return this.mapNonLayerRepeat(spec, params);\n }\n }\n }, {\n key: \"mapLayerRepeat\",\n value: function mapLayerRepeat(spec, params) {\n var _this2 = this;\n var repeat = spec.repeat,\n childSpec = spec.spec,\n rest = _objectWithoutProperties(spec, _excluded);\n var row = repeat.row,\n column = repeat.column,\n layer = repeat.layer;\n var _params$repeater = params.repeater,\n repeater = _params$repeater === void 0 ? {} : _params$repeater,\n _params$repeaterPrefi = params.repeaterPrefix,\n repeaterPrefix = _params$repeaterPrefi === void 0 ? '' : _params$repeaterPrefi;\n if (row || column) {\n return this.mapRepeat(_objectSpread(_objectSpread({}, spec), {}, {\n repeat: _objectSpread(_objectSpread({}, row ? {\n row: row\n } : {}), column ? {\n column: column\n } : {}),\n spec: {\n repeat: {\n layer: layer\n },\n spec: childSpec\n }\n }), params);\n } else {\n return _objectSpread(_objectSpread({}, rest), {}, {\n layer: layer.map(function (layerValue) {\n var childRepeater = _objectSpread(_objectSpread({}, repeater), {}, {\n layer: layerValue\n });\n var childName = \"\".concat((childSpec.name ? \"\".concat(childSpec.name, \"_\") : '') + repeaterPrefix, \"child__layer_\").concat(varName(layerValue));\n var child = _this2.mapLayerOrUnit(childSpec, _objectSpread(_objectSpread({}, params), {}, {\n repeater: childRepeater,\n repeaterPrefix: childName\n }));\n child.name = childName;\n return child;\n })\n });\n }\n }\n }, {\n key: \"mapNonLayerRepeat\",\n value: function mapNonLayerRepeat(spec, params) {\n var _childSpec$data;\n var _spec = spec,\n repeat = _spec.repeat,\n childSpec = _spec.spec,\n data = _spec.data,\n remainingProperties = _objectWithoutProperties(_spec, _excluded2);\n if (!isArray(repeat) && spec.columns) {\n // is repeat with row/column\n spec = omit(spec, ['columns']);\n log.warn(log.message.columnsNotSupportByRowCol('repeat'));\n }\n var concat = [];\n var _params$repeater2 = params.repeater,\n repeater = _params$repeater2 === void 0 ? {} : _params$repeater2,\n _params$repeaterPrefi2 = params.repeaterPrefix,\n repeaterPrefix = _params$repeaterPrefi2 === void 0 ? '' : _params$repeaterPrefi2;\n var row = !isArray(repeat) && repeat.row || [repeater ? repeater.row : null];\n var column = !isArray(repeat) && repeat.column || [repeater ? repeater.column : null];\n var repeatValues = isArray(repeat) && repeat || [repeater ? repeater.repeat : null];\n // cross product\n var _iterator2 = _createForOfIteratorHelper(repeatValues),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var repeatValue = _step2.value;\n var _iterator3 = _createForOfIteratorHelper(row),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var rowValue = _step3.value;\n var _iterator4 = _createForOfIteratorHelper(column),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var columnValue = _step4.value;\n var childRepeater = {\n repeat: repeatValue,\n row: rowValue,\n column: columnValue,\n layer: repeater.layer\n };\n var childName = (childSpec.name ? \"\".concat(childSpec.name, \"_\") : '') + repeaterPrefix + 'child__' + (isArray(repeat) ? \"\".concat(varName(repeatValue)) : (repeat.row ? \"row_\".concat(varName(rowValue)) : '') + (repeat.column ? \"column_\".concat(varName(columnValue)) : ''));\n var child = this.map(childSpec, _objectSpread(_objectSpread({}, params), {}, {\n repeater: childRepeater,\n repeaterPrefix: childName\n }));\n child.name = childName;\n // we move data up\n concat.push(omit(child, ['data']));\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n var columns = isArray(repeat) ? spec.columns : repeat.column ? repeat.column.length : 1;\n return _objectSpread(_objectSpread({\n data: (_childSpec$data = childSpec.data) !== null && _childSpec$data !== void 0 ? _childSpec$data : data,\n align: 'all'\n }, remainingProperties), {}, {\n columns: columns,\n concat: concat\n });\n }\n }, {\n key: \"mapFacet\",\n value: function mapFacet(spec, params) {\n var _spec2 = spec,\n facet = _spec2.facet;\n if (isFacetMapping(facet) && spec.columns) {\n // is facet with row/column\n spec = omit(spec, ['columns']);\n log.warn(log.message.columnsNotSupportByRowCol('facet'));\n }\n return _get(_getPrototypeOf(CoreNormalizer.prototype), \"mapFacet\", this).call(this, spec, params);\n }\n }, {\n key: \"mapUnitWithParentEncodingOrProjection\",\n value: function mapUnitWithParentEncodingOrProjection(spec, params) {\n var encoding = spec.encoding,\n projection = spec.projection;\n var parentEncoding = params.parentEncoding,\n parentProjection = params.parentProjection,\n config = params.config;\n var mergedProjection = mergeProjection({\n parentProjection: parentProjection,\n projection: projection\n });\n var mergedEncoding = mergeEncoding({\n parentEncoding: parentEncoding,\n encoding: replaceRepeaterInEncoding(encoding, params.repeater)\n });\n return this.mapUnit(_objectSpread(_objectSpread(_objectSpread({}, spec), mergedProjection ? {\n projection: mergedProjection\n } : {}), mergedEncoding ? {\n encoding: mergedEncoding\n } : {}), {\n config: config\n });\n }\n }, {\n key: \"mapFacetedUnit\",\n value: function mapFacetedUnit(spec, normParams) {\n // New encoding in the inside spec should not contain row / column\n // as row/column should be moved to facet\n var _spec$encoding = spec.encoding,\n row = _spec$encoding.row,\n column = _spec$encoding.column,\n facet = _spec$encoding.facet,\n encoding = _objectWithoutProperties(_spec$encoding, _excluded3);\n // Mark and encoding should be moved into the inner spec\n var mark = spec.mark,\n width = spec.width,\n projection = spec.projection,\n height = spec.height,\n view = spec.view,\n params = spec.params,\n _ = spec.encoding,\n outerSpec = _objectWithoutProperties(spec, _excluded4);\n var _this$getFacetMapping = this.getFacetMappingAndLayout({\n row: row,\n column: column,\n facet: facet\n }, normParams),\n facetMapping = _this$getFacetMapping.facetMapping,\n layout = _this$getFacetMapping.layout;\n var newEncoding = replaceRepeaterInEncoding(encoding, normParams.repeater);\n return this.mapFacet(_objectSpread(_objectSpread(_objectSpread({}, outerSpec), layout), {}, {\n // row / column has higher precedence than facet\n facet: facetMapping,\n spec: _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, width ? {\n width: width\n } : {}), height ? {\n height: height\n } : {}), view ? {\n view: view\n } : {}), projection ? {\n projection: projection\n } : {}), {}, {\n mark: mark,\n encoding: newEncoding\n }, params ? {\n params: params\n } : {})\n }), normParams);\n }\n }, {\n key: \"getFacetMappingAndLayout\",\n value: function getFacetMappingAndLayout(facets, params) {\n var row = facets.row,\n column = facets.column,\n facet = facets.facet;\n if (row || column) {\n if (facet) {\n log.warn(log.message.facetChannelDropped([].concat(_toConsumableArray(row ? [ROW] : []), _toConsumableArray(column ? [COLUMN] : []))));\n }\n var facetMapping = {};\n var layout = {};\n for (var _i = 0, _arr = [ROW, COLUMN]; _i < _arr.length; _i++) {\n var channel = _arr[_i];\n var def = facets[channel];\n if (def) {\n var align = def.align,\n center = def.center,\n spacing = def.spacing,\n columns = def.columns,\n defWithoutLayout = _objectWithoutProperties(def, _excluded5);\n facetMapping[channel] = defWithoutLayout;\n for (var _i2 = 0, _arr2 = ['align', 'center', 'spacing']; _i2 < _arr2.length; _i2++) {\n var prop = _arr2[_i2];\n if (def[prop] !== undefined) {\n var _layout$prop;\n (_layout$prop = layout[prop]) !== null && _layout$prop !== void 0 ? _layout$prop : layout[prop] = {};\n layout[prop][channel] = def[prop];\n }\n }\n }\n }\n return {\n facetMapping: facetMapping,\n layout: layout\n };\n } else {\n var _align = facet.align,\n _center = facet.center,\n _spacing = facet.spacing,\n _columns = facet.columns,\n _facetMapping = _objectWithoutProperties(facet, _excluded6);\n return {\n facetMapping: replaceRepeaterInFacet(_facetMapping, params.repeater),\n layout: _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, _align ? {\n align: _align\n } : {}), _center ? {\n center: _center\n } : {}), _spacing ? {\n spacing: _spacing\n } : {}), _columns ? {\n columns: _columns\n } : {})\n };\n }\n }\n }, {\n key: \"mapLayer\",\n value: function mapLayer(spec, _ref) {\n var parentEncoding = _ref.parentEncoding,\n parentProjection = _ref.parentProjection,\n otherParams = _objectWithoutProperties(_ref, _excluded7);\n // Special handling for extended layer spec\n var encoding = spec.encoding,\n projection = spec.projection,\n rest = _objectWithoutProperties(spec, _excluded8);\n var params = _objectSpread(_objectSpread({}, otherParams), {}, {\n parentEncoding: mergeEncoding({\n parentEncoding: parentEncoding,\n encoding: encoding,\n layer: true\n }),\n parentProjection: mergeProjection({\n parentProjection: parentProjection,\n projection: projection\n })\n });\n return _get(_getPrototypeOf(CoreNormalizer.prototype), \"mapLayer\", this).call(this, _objectSpread(_objectSpread({}, rest), spec.name ? {\n name: [params.repeaterPrefix, spec.name].filter(function (n) {\n return n;\n }).join('_')\n } : {}), params);\n }\n }]);\n return CoreNormalizer;\n}(SpecMapper);\nfunction mergeEncoding(_ref2) {\n var parentEncoding = _ref2.parentEncoding,\n _ref2$encoding = _ref2.encoding,\n encoding = _ref2$encoding === void 0 ? {} : _ref2$encoding,\n layer = _ref2.layer;\n var merged = {};\n if (parentEncoding) {\n var channels = new Set([].concat(_toConsumableArray(keys(parentEncoding)), _toConsumableArray(keys(encoding))));\n var _iterator5 = _createForOfIteratorHelper(channels),\n _step5;\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var channel = _step5.value;\n var channelDef = encoding[channel];\n var parentChannelDef = parentEncoding[channel];\n if (isFieldOrDatumDef(channelDef)) {\n // Field/Datum Def can inherit properties from its parent\n // Note that parentChannelDef doesn't have to be a field/datum def if the channelDef is already one.\n var mergedChannelDef = _objectSpread(_objectSpread({}, parentChannelDef), channelDef);\n merged[channel] = mergedChannelDef;\n } else if (hasConditionalFieldOrDatumDef(channelDef)) {\n merged[channel] = _objectSpread(_objectSpread({}, channelDef), {}, {\n condition: _objectSpread(_objectSpread({}, parentChannelDef), channelDef.condition)\n });\n } else if (channelDef || channelDef === null) {\n merged[channel] = channelDef;\n } else if (layer || isValueDef(parentChannelDef) || isSignalRef(parentChannelDef) || isFieldOrDatumDef(parentChannelDef) || isArray(parentChannelDef)) {\n merged[channel] = parentChannelDef;\n }\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n } else {\n merged = encoding;\n }\n return !merged || isEmpty(merged) ? undefined : merged;\n}\nfunction mergeProjection(opt) {\n var parentProjection = opt.parentProjection,\n projection = opt.projection;\n if (parentProjection && projection) {\n log.warn(log.message.projectionOverridden({\n parentProjection: parentProjection,\n projection: projection\n }));\n }\n return projection !== null && projection !== void 0 ? projection : parentProjection;\n}","import { normalizeLogicalComposition } from './logical';\nimport { normalizePredicate } from './predicate';\nexport function isFilter(t) {\n return 'filter' in t;\n}\nexport function isImputeSequence(t) {\n return (t === null || t === void 0 ? void 0 : t['stop']) !== undefined;\n}\nexport function isLookup(t) {\n return 'lookup' in t;\n}\nexport function isLookupData(from) {\n return 'data' in from;\n}\nexport function isLookupSelection(from) {\n return 'param' in from;\n}\nexport function isPivot(t) {\n return 'pivot' in t;\n}\nexport function isDensity(t) {\n return 'density' in t;\n}\nexport function isQuantile(t) {\n return 'quantile' in t;\n}\nexport function isRegression(t) {\n return 'regression' in t;\n}\nexport function isLoess(t) {\n return 'loess' in t;\n}\nexport function isSample(t) {\n return 'sample' in t;\n}\nexport function isWindow(t) {\n return 'window' in t;\n}\nexport function isJoinAggregate(t) {\n return 'joinaggregate' in t;\n}\nexport function isFlatten(t) {\n return 'flatten' in t;\n}\nexport function isCalculate(t) {\n return 'calculate' in t;\n}\nexport function isBin(t) {\n return 'bin' in t;\n}\nexport function isImpute(t) {\n return 'impute' in t;\n}\nexport function isTimeUnit(t) {\n return 'timeUnit' in t;\n}\nexport function isAggregate(t) {\n return 'aggregate' in t;\n}\nexport function isStack(t) {\n return 'stack' in t;\n}\nexport function isFold(t) {\n return 'fold' in t;\n}\nexport function isExtent(t) {\n return 'extent' in t && !('density' in t);\n}\nexport function normalizeTransform(transform) {\n return transform.map(function (t) {\n if (isFilter(t)) {\n return {\n filter: normalizeLogicalComposition(t.filter, normalizePredicate)\n };\n }\n return t;\n });\n}","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _get from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/get.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nvar _excluded = [\"selection\"],\n _excluded2 = [\"init\", \"bind\", \"empty\"],\n _excluded3 = [\"transform\"],\n _excluded4 = [\"selection\"],\n _excluded5 = [\"selection\"],\n _excluded6 = [\"selection\", \"param\", \"test\"],\n _excluded7 = [\"selection\", \"param\", \"test\"],\n _excluded8 = [\"selection\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { isArray } from 'vega';\nimport { isBinParams } from '../bin';\nimport { isConditionalDef, isFieldDef, isScaleFieldDef } from '../channeldef';\nimport { normalizeLogicalComposition } from '../logical';\nimport { SpecMapper } from '../spec/map';\nimport { isBin, isFilter, isLookup } from '../transform';\nimport { duplicate, entries, vals } from '../util';\nexport var SelectionCompatibilityNormalizer = /*#__PURE__*/function (_SpecMapper) {\n _inherits(SelectionCompatibilityNormalizer, _SpecMapper);\n var _super = _createSuper(SelectionCompatibilityNormalizer);\n function SelectionCompatibilityNormalizer() {\n _classCallCheck(this, SelectionCompatibilityNormalizer);\n return _super.apply(this, arguments);\n }\n _createClass(SelectionCompatibilityNormalizer, [{\n key: \"map\",\n value: function map(spec, normParams) {\n var _normParams$emptySele, _normParams$selection;\n (_normParams$emptySele = normParams.emptySelections) !== null && _normParams$emptySele !== void 0 ? _normParams$emptySele : normParams.emptySelections = {};\n (_normParams$selection = normParams.selectionPredicates) !== null && _normParams$selection !== void 0 ? _normParams$selection : normParams.selectionPredicates = {};\n spec = normalizeTransforms(spec, normParams);\n return _get(_getPrototypeOf(SelectionCompatibilityNormalizer.prototype), \"map\", this).call(this, spec, normParams);\n }\n }, {\n key: \"mapLayerOrUnit\",\n value: function mapLayerOrUnit(spec, normParams) {\n spec = normalizeTransforms(spec, normParams);\n if (spec.encoding) {\n var encoding = {};\n var _iterator = _createForOfIteratorHelper(entries(spec.encoding)),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _step$value = _slicedToArray(_step.value, 2),\n channel = _step$value[0],\n enc = _step$value[1];\n encoding[channel] = normalizeChannelDef(enc, normParams);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n spec = _objectSpread(_objectSpread({}, spec), {}, {\n encoding: encoding\n });\n }\n return _get(_getPrototypeOf(SelectionCompatibilityNormalizer.prototype), \"mapLayerOrUnit\", this).call(this, spec, normParams);\n }\n }, {\n key: \"mapUnit\",\n value: function mapUnit(spec, normParams) {\n var selection = spec.selection,\n rest = _objectWithoutProperties(spec, _excluded);\n if (selection) {\n return _objectSpread(_objectSpread({}, rest), {}, {\n params: entries(selection).map(function (_ref) {\n var _normParams$selection2;\n var _ref2 = _slicedToArray(_ref, 2),\n name = _ref2[0],\n selDef = _ref2[1];\n var value = selDef.init,\n bind = selDef.bind,\n empty = selDef.empty,\n select = _objectWithoutProperties(selDef, _excluded2);\n if (select.type === 'single') {\n select.type = 'point';\n select.toggle = false;\n } else if (select.type === 'multi') {\n select.type = 'point';\n }\n // Propagate emptiness forwards and backwards\n normParams.emptySelections[name] = empty !== 'none';\n var _iterator2 = _createForOfIteratorHelper(vals((_normParams$selection2 = normParams.selectionPredicates[name]) !== null && _normParams$selection2 !== void 0 ? _normParams$selection2 : {})),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var pred = _step2.value;\n pred.empty = empty !== 'none';\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n return {\n name: name,\n value: value,\n select: select,\n bind: bind\n };\n })\n });\n }\n return spec;\n }\n }]);\n return SelectionCompatibilityNormalizer;\n}(SpecMapper);\nfunction normalizeTransforms(spec, normParams) {\n var tx = spec.transform,\n rest = _objectWithoutProperties(spec, _excluded3);\n if (tx) {\n var transform = tx.map(function (t) {\n if (isFilter(t)) {\n return {\n filter: normalizePredicate(t, normParams)\n };\n } else if (isBin(t) && isBinParams(t.bin)) {\n return _objectSpread(_objectSpread({}, t), {}, {\n bin: normalizeBinExtent(t.bin)\n });\n } else if (isLookup(t)) {\n var _t$from = t.from,\n param = _t$from.selection,\n from = _objectWithoutProperties(_t$from, _excluded4);\n return param ? _objectSpread(_objectSpread({}, t), {}, {\n from: _objectSpread({\n param: param\n }, from)\n }) : t;\n }\n return t;\n });\n return _objectSpread(_objectSpread({}, rest), {}, {\n transform: transform\n });\n }\n return spec;\n}\nfunction normalizeChannelDef(obj, normParams) {\n var _enc$scale;\n var enc = duplicate(obj);\n if (isFieldDef(enc) && isBinParams(enc.bin)) {\n enc.bin = normalizeBinExtent(enc.bin);\n }\n if (isScaleFieldDef(enc) && (_enc$scale = enc.scale) !== null && _enc$scale !== void 0 && (_enc$scale = _enc$scale.domain) !== null && _enc$scale !== void 0 && _enc$scale.selection) {\n var _enc$scale$domain = enc.scale.domain,\n param = _enc$scale$domain.selection,\n domain = _objectWithoutProperties(_enc$scale$domain, _excluded5);\n enc.scale.domain = _objectSpread(_objectSpread({}, domain), param ? {\n param: param\n } : {});\n }\n if (isConditionalDef(enc)) {\n if (isArray(enc.condition)) {\n enc.condition = enc.condition.map(function (c) {\n var selection = c.selection,\n param = c.param,\n test = c.test,\n cond = _objectWithoutProperties(c, _excluded6);\n return param ? c : _objectSpread(_objectSpread({}, cond), {}, {\n test: normalizePredicate(c, normParams)\n });\n });\n } else {\n var _normalizeChannelDef = normalizeChannelDef(enc.condition, normParams),\n selection = _normalizeChannelDef.selection,\n _param = _normalizeChannelDef.param,\n test = _normalizeChannelDef.test,\n cond = _objectWithoutProperties(_normalizeChannelDef, _excluded7);\n enc.condition = _param ? enc.condition : _objectSpread(_objectSpread({}, cond), {}, {\n test: normalizePredicate(enc.condition, normParams)\n });\n }\n }\n return enc;\n}\nfunction normalizeBinExtent(bin) {\n var ext = bin.extent;\n if (ext !== null && ext !== void 0 && ext.selection) {\n var param = ext.selection,\n rest = _objectWithoutProperties(ext, _excluded8);\n return _objectSpread(_objectSpread({}, bin), {}, {\n extent: _objectSpread(_objectSpread({}, rest), {}, {\n param: param\n })\n });\n }\n return bin;\n}\nfunction normalizePredicate(op, normParams) {\n // Normalize old compositions of selection names (e.g., selection: {and: [\"one\", \"two\"]})\n var normalizeSelectionComposition = function normalizeSelectionComposition(o) {\n return normalizeLogicalComposition(o, function (param) {\n var _normParams$emptySele2, _a$param;\n var _a;\n var empty = (_normParams$emptySele2 = normParams.emptySelections[param]) !== null && _normParams$emptySele2 !== void 0 ? _normParams$emptySele2 : true;\n var pred = {\n param: param,\n empty: empty\n };\n (_a$param = (_a = normParams.selectionPredicates)[param]) !== null && _a$param !== void 0 ? _a$param : _a[param] = [];\n normParams.selectionPredicates[param].push(pred);\n return pred;\n });\n };\n return op.selection ? normalizeSelectionComposition(op.selection) : normalizeLogicalComposition(op.test || op.filter, function (o) {\n return o.selection ? normalizeSelectionComposition(o.selection) : o;\n });\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _get from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/get.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { isArray, isString } from 'vega';\nimport { isSelectionParameter } from '../selection';\nimport { isUnitSpec } from '../spec';\nimport { SpecMapper } from '../spec/map';\nexport var TopLevelSelectionsNormalizer = /*#__PURE__*/function (_SpecMapper) {\n _inherits(TopLevelSelectionsNormalizer, _SpecMapper);\n var _super = _createSuper(TopLevelSelectionsNormalizer);\n function TopLevelSelectionsNormalizer() {\n _classCallCheck(this, TopLevelSelectionsNormalizer);\n return _super.apply(this, arguments);\n }\n _createClass(TopLevelSelectionsNormalizer, [{\n key: \"map\",\n value: function map(spec, normParams) {\n var _normParams$selection;\n var selections = (_normParams$selection = normParams.selections) !== null && _normParams$selection !== void 0 ? _normParams$selection : [];\n if (spec.params && !isUnitSpec(spec)) {\n var params = [];\n var _iterator = _createForOfIteratorHelper(spec.params),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var param = _step.value;\n if (isSelectionParameter(param)) {\n selections.push(param);\n } else {\n params.push(param);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n spec.params = params;\n }\n normParams.selections = selections;\n return _get(_getPrototypeOf(TopLevelSelectionsNormalizer.prototype), \"map\", this).call(this, spec, normParams);\n }\n }, {\n key: \"mapUnit\",\n value: function mapUnit(spec, normParams) {\n var _normParams$path;\n var selections = normParams.selections;\n if (!selections || !selections.length) return spec;\n var path = ((_normParams$path = normParams.path) !== null && _normParams$path !== void 0 ? _normParams$path : []).concat(spec.name);\n var params = [];\n var _iterator2 = _createForOfIteratorHelper(selections),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var selection = _step2.value;\n // By default, apply selections to all unit views.\n if (!selection.views || !selection.views.length) {\n params.push(selection);\n } else {\n var _iterator3 = _createForOfIteratorHelper(selection.views),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var view = _step3.value;\n // view is either a specific unit name, or a partial path through the spec tree.\n if (isString(view) && (view === spec.name || path.includes(view)) || isArray(view) &&\n // logic for backwards compatibility with view paths before we had unique names\n // @ts-ignore\n view.map(function (v) {\n return path.indexOf(v);\n }).every(function (v, i, arr) {\n return v !== -1 && (i === 0 || v > arr[i - 1]);\n })) {\n params.push(selection);\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n if (params.length) spec.params = params;\n return spec;\n }\n }]);\n return TopLevelSelectionsNormalizer;\n}(SpecMapper);\nvar _loop = function _loop() {\n var method = _arr[_i];\n var proto = TopLevelSelectionsNormalizer.prototype[method];\n TopLevelSelectionsNormalizer.prototype[method] = function (spec, params) {\n return proto.call(this, spec, addSpecNameToParams(spec, params));\n };\n};\nfor (var _i = 0, _arr = ['mapFacet', 'mapRepeat', 'mapHConcat', 'mapVConcat', 'mapLayer']; _i < _arr.length; _i++) {\n _loop();\n}\nfunction addSpecNameToParams(spec, params) {\n var _params$path;\n return spec.name ? _objectSpread(_objectSpread({}, params), {}, {\n path: ((_params$path = params.path) !== null && _params$path !== void 0 ? _params$path : []).concat(spec.name)\n }) : params;\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { isString } from 'vega-util';\nimport { initConfig } from '../config';\nimport * as log from '../log';\nimport { isLayerSpec, isUnitSpec } from '../spec';\nimport { deepEqual } from '../util';\nimport { CoreNormalizer } from './core';\nimport { SelectionCompatibilityNormalizer } from './selectioncompat';\nimport { TopLevelSelectionsNormalizer } from './toplevelselection';\nexport function normalize(spec, config) {\n if (config === undefined) {\n config = initConfig(spec.config);\n }\n var normalizedSpec = normalizeGenericSpec(spec, config);\n var width = spec.width,\n height = spec.height;\n var autosize = normalizeAutoSize(normalizedSpec, {\n width: width,\n height: height,\n autosize: spec.autosize\n }, config);\n return _objectSpread(_objectSpread({}, normalizedSpec), autosize ? {\n autosize: autosize\n } : {});\n}\nvar coreNormalizer = new CoreNormalizer();\nvar selectionCompatNormalizer = new SelectionCompatibilityNormalizer();\nvar topLevelSelectionNormalizer = new TopLevelSelectionsNormalizer();\n/**\n * Decompose extended unit specs into composition of pure unit specs.\n * And push top-level selection definitions down to unit specs.\n */\nfunction normalizeGenericSpec(spec) {\n var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var normParams = {\n config: config\n };\n return topLevelSelectionNormalizer.map(coreNormalizer.map(selectionCompatNormalizer.map(spec, normParams), normParams), normParams);\n}\nfunction _normalizeAutoSize(autosize) {\n return isString(autosize) ? {\n type: autosize\n } : autosize !== null && autosize !== void 0 ? autosize : {};\n}\n/**\n * Normalize autosize and deal with width or height == \"container\".\n */\nexport function normalizeAutoSize(spec, sizeInfo, config) {\n var width = sizeInfo.width,\n height = sizeInfo.height;\n var isFitCompatible = isUnitSpec(spec) || isLayerSpec(spec);\n var autosizeDefault = {};\n if (!isFitCompatible) {\n // If spec is not compatible with autosize == \"fit\", discard width/height == container\n if (width == 'container') {\n log.warn(log.message.containerSizeNonSingle('width'));\n width = undefined;\n }\n if (height == 'container') {\n log.warn(log.message.containerSizeNonSingle('height'));\n height = undefined;\n }\n } else {\n // Default autosize parameters to fit when width/height is \"container\"\n if (width == 'container' && height == 'container') {\n autosizeDefault.type = 'fit';\n autosizeDefault.contains = 'padding';\n } else if (width == 'container') {\n autosizeDefault.type = 'fit-x';\n autosizeDefault.contains = 'padding';\n } else if (height == 'container') {\n autosizeDefault.type = 'fit-y';\n autosizeDefault.contains = 'padding';\n }\n }\n var autosize = _objectSpread(_objectSpread(_objectSpread({\n type: 'pad'\n }, autosizeDefault), config ? _normalizeAutoSize(config.autosize) : {}), _normalizeAutoSize(spec.autosize));\n if (autosize.type === 'fit' && !isFitCompatible) {\n log.warn(log.message.FIT_NON_SINGLE);\n autosize.type = 'pad';\n }\n if (width == 'container' && !(autosize.type == 'fit' || autosize.type == 'fit-x')) {\n log.warn(log.message.containerSizeNotCompatibleWithAutosize('width'));\n }\n if (height == 'container' && !(autosize.type == 'fit' || autosize.type == 'fit-y')) {\n log.warn(log.message.containerSizeNotCompatibleWithAutosize('height'));\n }\n // Delete autosize property if it's Vega's default\n if (deepEqual(autosize, {\n type: 'pad'\n })) {\n return undefined;\n }\n return autosize;\n}","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { getPositionScaleChannel } from '../channel';\nimport { signalRefOrValue } from '../compile/common';\nexport function isFitType(autoSizeType) {\n return autoSizeType === 'fit' || autoSizeType === 'fit-x' || autoSizeType === 'fit-y';\n}\nexport function getFitType(sizeType) {\n return sizeType ? \"fit-\".concat(getPositionScaleChannel(sizeType)) : 'fit';\n}\nvar TOP_LEVEL_PROPERTIES = ['background', 'padding'\n// We do not include \"autosize\" here as it is supported by only unit and layer specs and thus need to be normalized\n];\n\nexport function extractTopLevelProperties(t, includeParams) {\n var o = {};\n var _iterator = _createForOfIteratorHelper(TOP_LEVEL_PROPERTIES),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var p = _step.value;\n if (t && t[p] !== undefined) {\n o[p] = signalRefOrValue(t[p]);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n if (includeParams) {\n o.params = t.params;\n }\n return o;\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport * as log from '../log';\nimport { deepEqual, duplicate, getFirstDefined, keys } from '../util';\n/**\n * Generic class for storing properties that are explicitly specified\n * and implicitly determined by the compiler.\n * This is important for scale/axis/legend merging as\n * we want to prioritize properties that users explicitly specified.\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport var Split = /*#__PURE__*/function () {\n function Split() {\n var explicit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var implicit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _classCallCheck(this, Split);\n this.explicit = explicit;\n this.implicit = implicit;\n }\n _createClass(Split, [{\n key: \"clone\",\n value: function clone() {\n return new Split(duplicate(this.explicit), duplicate(this.implicit));\n }\n }, {\n key: \"combine\",\n value: function combine() {\n return _objectSpread(_objectSpread({}, this.explicit), this.implicit);\n }\n }, {\n key: \"get\",\n value: function get(key) {\n // Explicit has higher precedence\n return getFirstDefined(this.explicit[key], this.implicit[key]);\n }\n }, {\n key: \"getWithExplicit\",\n value: function getWithExplicit(key) {\n // Explicit has higher precedence\n if (this.explicit[key] !== undefined) {\n return {\n explicit: true,\n value: this.explicit[key]\n };\n } else if (this.implicit[key] !== undefined) {\n return {\n explicit: false,\n value: this.implicit[key]\n };\n }\n return {\n explicit: false,\n value: undefined\n };\n }\n }, {\n key: \"setWithExplicit\",\n value: function setWithExplicit(key, _ref) {\n var value = _ref.value,\n explicit = _ref.explicit;\n if (value !== undefined) {\n this.set(key, value, explicit);\n }\n }\n }, {\n key: \"set\",\n value: function set(key, value, explicit) {\n delete this[explicit ? 'implicit' : 'explicit'][key];\n this[explicit ? 'explicit' : 'implicit'][key] = value;\n return this;\n }\n }, {\n key: \"copyKeyFromSplit\",\n value: function copyKeyFromSplit(key, _ref2) {\n var explicit = _ref2.explicit,\n implicit = _ref2.implicit;\n // Explicit has higher precedence\n if (explicit[key] !== undefined) {\n this.set(key, explicit[key], true);\n } else if (implicit[key] !== undefined) {\n this.set(key, implicit[key], false);\n }\n }\n }, {\n key: \"copyKeyFromObject\",\n value: function copyKeyFromObject(key, s) {\n // Explicit has higher precedence\n if (s[key] !== undefined) {\n this.set(key, s[key], true);\n }\n }\n /**\n * Merge split object into this split object. Properties from the other split\n * overwrite properties from this split.\n */\n }, {\n key: \"copyAll\",\n value: function copyAll(other) {\n var _iterator = _createForOfIteratorHelper(keys(other.combine())),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var key = _step.value;\n var val = other.getWithExplicit(key);\n this.setWithExplicit(key, val);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n }]);\n return Split;\n}();\nexport function makeExplicit(value) {\n return {\n explicit: true,\n value: value\n };\n}\nexport function makeImplicit(value) {\n return {\n explicit: false,\n value: value\n };\n}\nexport function tieBreakByComparing(compare) {\n return function (v1, v2, property, propertyOf) {\n var diff = compare(v1.value, v2.value);\n if (diff > 0) {\n return v1;\n } else if (diff < 0) {\n return v2;\n }\n return defaultTieBreaker(v1, v2, property, propertyOf);\n };\n}\nexport function defaultTieBreaker(v1, v2, property, propertyOf) {\n if (v1.explicit && v2.explicit) {\n log.warn(log.message.mergeConflictingProperty(property, propertyOf, v1.value, v2.value));\n }\n // If equal score, prefer v1.\n return v1;\n}\nexport function mergeValuesWithExplicit(v1, v2, property, propertyOf) {\n var tieBreaker = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : defaultTieBreaker;\n if (v1 === undefined || v1.value === undefined) {\n // For first run\n return v2;\n }\n if (v1.explicit && !v2.explicit) {\n return v1;\n } else if (v2.explicit && !v1.explicit) {\n return v2;\n } else if (deepEqual(v1.value, v2.value)) {\n return v1;\n } else {\n return tieBreaker(v1, v2, property, propertyOf);\n }\n}","import _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _get from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/get.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { Split } from '../split';\n/**\n * Class to track interesting properties (see https://15721.courses.cs.cmu.edu/spring2016/papers/graefe-ieee1995.pdf)\n * about how fields have been parsed or whether they have been derived in a transform. We use this to not parse the\n * same field again (or differently).\n */\nexport var AncestorParse = /*#__PURE__*/function (_Split) {\n _inherits(AncestorParse, _Split);\n var _super = _createSuper(AncestorParse);\n function AncestorParse() {\n var _this;\n var explicit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var implicit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var parseNothing = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n _classCallCheck(this, AncestorParse);\n _this = _super.call(this, explicit, implicit);\n _this.explicit = explicit;\n _this.implicit = implicit;\n _this.parseNothing = parseNothing;\n return _this;\n }\n _createClass(AncestorParse, [{\n key: \"clone\",\n value: function clone() {\n var clone = _get(_getPrototypeOf(AncestorParse.prototype), \"clone\", this).call(this);\n clone.parseNothing = this.parseNothing;\n return clone;\n }\n }]);\n return AncestorParse;\n}(Split);","export function isUrlData(data) {\n return 'url' in data;\n}\nexport function isInlineData(data) {\n return 'values' in data;\n}\nexport function isNamedData(data) {\n return 'name' in data && !isUrlData(data) && !isInlineData(data) && !isGenerator(data);\n}\nexport function isGenerator(data) {\n return data && (isSequenceGenerator(data) || isSphereGenerator(data) || isGraticuleGenerator(data));\n}\nexport function isSequenceGenerator(data) {\n return 'sequence' in data;\n}\nexport function isSphereGenerator(data) {\n return 'sphere' in data;\n}\nexport function isGraticuleGenerator(data) {\n return 'graticule' in data;\n}\nexport var DataSourceType;\n(function (DataSourceType) {\n DataSourceType[DataSourceType[\"Raw\"] = 0] = \"Raw\";\n DataSourceType[DataSourceType[\"Main\"] = 1] = \"Main\";\n DataSourceType[DataSourceType[\"Row\"] = 2] = \"Row\";\n DataSourceType[DataSourceType[\"Column\"] = 3] = \"Column\";\n DataSourceType[DataSourceType[\"Lookup\"] = 4] = \"Lookup\";\n})(DataSourceType || (DataSourceType = {}));","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"signals\", \"hasLegend\", \"index\"];\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { parseSelector } from 'vega-event-selector';\nimport { identity, isArray, stringValue } from 'vega-util';\nimport { MODIFY, STORE, unitName, VL_SELECTION_RESOLVE, TUPLE, selectionCompilers } from '.';\nimport { dateTimeToExpr, isDateTime, dateTimeToTimestamp } from '../../datetime';\nimport { hasContinuousDomain } from '../../scale';\nimport { SELECTION_ID } from '../../selection';\nimport { keys, replacePathInField, stringify, vals } from '../../util';\nimport { isUnitModel } from '../model';\nimport { parseSelectionExtent } from './parse';\nexport function assembleProjection(proj) {\n var signals = proj.signals,\n hasLegend = proj.hasLegend,\n index = proj.index,\n rest = _objectWithoutProperties(proj, _excluded);\n rest.field = replacePathInField(rest.field);\n return rest;\n}\nexport function assembleInit(init) {\n var isExpr = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var wrap = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : identity;\n if (isArray(init)) {\n var assembled = init.map(function (v) {\n return assembleInit(v, isExpr, wrap);\n });\n return isExpr ? \"[\".concat(assembled.join(', '), \"]\") : assembled;\n } else if (isDateTime(init)) {\n if (isExpr) {\n return wrap(dateTimeToExpr(init));\n } else {\n return wrap(dateTimeToTimestamp(init));\n }\n }\n return isExpr ? wrap(stringify(init)) : init;\n}\nexport function assembleUnitSelectionSignals(model, signals) {\n var _model$component$sele;\n var _iterator = _createForOfIteratorHelper(vals((_model$component$sele = model.component.selection) !== null && _model$component$sele !== void 0 ? _model$component$sele : {})),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var selCmpt = _step.value;\n var name = selCmpt.name;\n var modifyExpr = \"\".concat(name).concat(TUPLE, \", \").concat(selCmpt.resolve === 'global' ? 'true' : \"{unit: \".concat(unitName(model), \"}\"));\n var _iterator2 = _createForOfIteratorHelper(selectionCompilers),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var c = _step2.value;\n if (!c.defined(selCmpt)) continue;\n if (c.signals) signals = c.signals(model, selCmpt, signals);\n if (c.modifyExpr) modifyExpr = c.modifyExpr(model, selCmpt, modifyExpr);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n signals.push({\n name: name + MODIFY,\n on: [{\n events: {\n signal: selCmpt.name + TUPLE\n },\n update: \"modify(\".concat(stringValue(selCmpt.name + STORE), \", \").concat(modifyExpr, \")\")\n }]\n });\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return cleanupEmptyOnArray(signals);\n}\nexport function assembleFacetSignals(model, signals) {\n if (model.component.selection && keys(model.component.selection).length) {\n var name = stringValue(model.getName('cell'));\n signals.unshift({\n name: 'facet',\n value: {},\n on: [{\n events: parseSelector('mousemove', 'scope'),\n update: \"isTuple(facet) ? facet : group(\".concat(name, \").datum\")\n }]\n });\n }\n return cleanupEmptyOnArray(signals);\n}\nexport function assembleTopLevelSignals(model, signals) {\n var _model$component$sele2;\n var hasSelections = false;\n var _iterator3 = _createForOfIteratorHelper(vals((_model$component$sele2 = model.component.selection) !== null && _model$component$sele2 !== void 0 ? _model$component$sele2 : {})),\n _step3;\n try {\n var _loop = function _loop() {\n var selCmpt = _step3.value;\n var name = selCmpt.name;\n var store = stringValue(name + STORE);\n var hasSg = signals.filter(function (s) {\n return s.name === name;\n });\n if (hasSg.length === 0) {\n var resolve = selCmpt.resolve === 'global' ? 'union' : selCmpt.resolve;\n var isPoint = selCmpt.type === 'point' ? ', true, true)' : ')';\n signals.push({\n name: selCmpt.name,\n update: \"\".concat(VL_SELECTION_RESOLVE, \"(\").concat(store, \", \").concat(stringValue(resolve)).concat(isPoint)\n });\n }\n hasSelections = true;\n var _iterator4 = _createForOfIteratorHelper(selectionCompilers),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var c = _step4.value;\n if (c.defined(selCmpt) && c.topLevelSignals) {\n signals = c.topLevelSignals(model, selCmpt, signals);\n }\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n };\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n _loop();\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n if (hasSelections) {\n var hasUnit = signals.filter(function (s) {\n return s.name === 'unit';\n });\n if (hasUnit.length === 0) {\n signals.unshift({\n name: 'unit',\n value: {},\n on: [{\n events: 'mousemove',\n update: 'isTuple(group()) ? group() : unit'\n }]\n });\n }\n }\n return cleanupEmptyOnArray(signals);\n}\nexport function assembleUnitSelectionData(model, data) {\n var _model$component$sele3;\n var dataCopy = _toConsumableArray(data);\n var unit = unitName(model, {\n escape: false\n });\n var _iterator5 = _createForOfIteratorHelper(vals((_model$component$sele3 = model.component.selection) !== null && _model$component$sele3 !== void 0 ? _model$component$sele3 : {})),\n _step5;\n try {\n var _loop2 = function _loop2() {\n var selCmpt = _step5.value;\n var store = {\n name: selCmpt.name + STORE\n };\n if (selCmpt.project.hasSelectionId) {\n store.transform = [{\n type: 'collect',\n sort: {\n field: SELECTION_ID\n }\n }];\n }\n if (selCmpt.init) {\n var fields = selCmpt.project.items.map(assembleProjection);\n store.values = selCmpt.project.hasSelectionId ? selCmpt.init.map(function (i) {\n return _defineProperty({\n unit: unit\n }, SELECTION_ID, assembleInit(i, false)[0]);\n }) : selCmpt.init.map(function (i) {\n return {\n unit: unit,\n fields: fields,\n values: assembleInit(i, false)\n };\n });\n }\n var contains = dataCopy.filter(function (d) {\n return d.name === selCmpt.name + STORE;\n });\n if (!contains.length) {\n dataCopy.push(store);\n }\n };\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n _loop2();\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n return dataCopy;\n}\nexport function assembleUnitSelectionMarks(model, marks) {\n var _model$component$sele4;\n var _iterator6 = _createForOfIteratorHelper(vals((_model$component$sele4 = model.component.selection) !== null && _model$component$sele4 !== void 0 ? _model$component$sele4 : {})),\n _step6;\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var selCmpt = _step6.value;\n var _iterator7 = _createForOfIteratorHelper(selectionCompilers),\n _step7;\n try {\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n var c = _step7.value;\n if (c.defined(selCmpt) && c.marks) {\n marks = c.marks(model, selCmpt, marks);\n }\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n return marks;\n}\nexport function assembleLayerSelectionMarks(model, marks) {\n var _iterator8 = _createForOfIteratorHelper(model.children),\n _step8;\n try {\n for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {\n var child = _step8.value;\n if (isUnitModel(child)) {\n marks = assembleUnitSelectionMarks(child, marks);\n }\n }\n } catch (err) {\n _iterator8.e(err);\n } finally {\n _iterator8.f();\n }\n return marks;\n}\nexport function assembleSelectionScaleDomain(model, extent, scaleCmpt, domain) {\n var parsedExtent = parseSelectionExtent(model, extent.param, extent);\n return {\n signal: hasContinuousDomain(scaleCmpt.get('type')) && isArray(domain) && domain[0] > domain[1] ? \"isValid(\".concat(parsedExtent, \") && reverse(\").concat(parsedExtent, \")\") : parsedExtent\n };\n}\nfunction cleanupEmptyOnArray(signals) {\n return signals.map(function (s) {\n if (s.on && !s.on.length) delete s.on;\n return s;\n });\n}","import _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport * as log from '../../log';\nimport { uniqueId } from '../../util';\n/**\n * A node in the dataflow tree.\n */\nexport var DataFlowNode = /*#__PURE__*/function () {\n function DataFlowNode(parent, debugName) {\n _classCallCheck(this, DataFlowNode);\n this.debugName = debugName;\n this._children = [];\n this._parent = null;\n if (parent) {\n this.parent = parent;\n }\n }\n /**\n * Clone this node with a deep copy but don't clone links to children or parents.\n */\n _createClass(DataFlowNode, [{\n key: \"clone\",\n value: function clone() {\n throw new Error('Cannot clone node');\n }\n }, {\n key: \"parent\",\n get: function get() {\n return this._parent;\n }\n /**\n * Set the parent of the node and also add this node to the parent's children.\n */,\n set: function set(parent) {\n this._parent = parent;\n if (parent) {\n parent.addChild(this);\n }\n }\n }, {\n key: \"children\",\n get: function get() {\n return this._children;\n }\n }, {\n key: \"numChildren\",\n value: function numChildren() {\n return this._children.length;\n }\n }, {\n key: \"addChild\",\n value: function addChild(child, loc) {\n // do not add the same child twice\n if (this._children.includes(child)) {\n log.warn(log.message.ADD_SAME_CHILD_TWICE);\n return;\n }\n if (loc !== undefined) {\n this._children.splice(loc, 0, child);\n } else {\n this._children.push(child);\n }\n }\n }, {\n key: \"removeChild\",\n value: function removeChild(oldChild) {\n var loc = this._children.indexOf(oldChild);\n this._children.splice(loc, 1);\n return loc;\n }\n /**\n * Remove node from the dataflow.\n */\n }, {\n key: \"remove\",\n value: function remove() {\n var loc = this._parent.removeChild(this);\n var _iterator = _createForOfIteratorHelper(this._children),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var child = _step.value;\n // do not use the set method because we want to insert at a particular location\n child._parent = this._parent;\n this._parent.addChild(child, loc++);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n /**\n * Insert another node as a parent of this node.\n */\n }, {\n key: \"insertAsParentOf\",\n value: function insertAsParentOf(other) {\n var parent = other.parent;\n parent.removeChild(this);\n this.parent = parent;\n other.parent = this;\n }\n }, {\n key: \"swapWithParent\",\n value: function swapWithParent() {\n var parent = this._parent;\n var newParent = parent.parent;\n // reconnect the children\n var _iterator2 = _createForOfIteratorHelper(this._children),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var child = _step2.value;\n child.parent = parent;\n }\n // remove old links\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n this._children = []; // equivalent to removing every child link one by one\n parent.removeChild(this);\n var loc = parent.parent.removeChild(parent);\n // swap two nodes but maintain order in children\n this._parent = newParent;\n newParent.addChild(this, loc);\n parent.parent = this;\n }\n }]);\n return DataFlowNode;\n}();\nexport var OutputNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(OutputNode, _DataFlowNode);\n var _super = _createSuper(OutputNode);\n /**\n * @param source The name of the source. Will change in assemble.\n * @param type The type of the output node.\n * @param refCounts A global ref counter map.\n */\n function OutputNode(parent, source, type, refCounts) {\n var _this;\n _classCallCheck(this, OutputNode);\n _this = _super.call(this, parent, source);\n _this.type = type;\n _this.refCounts = refCounts;\n _this._source = _this._name = source;\n if (_this.refCounts && !(_this._name in _this.refCounts)) {\n _this.refCounts[_this._name] = 0;\n }\n return _this;\n }\n _createClass(OutputNode, [{\n key: \"clone\",\n value: function clone() {\n var cloneObj = new this.constructor();\n cloneObj.debugName = \"clone_\".concat(this.debugName);\n cloneObj._source = this._source;\n cloneObj._name = \"clone_\".concat(this._name);\n cloneObj.type = this.type;\n cloneObj.refCounts = this.refCounts;\n cloneObj.refCounts[cloneObj._name] = 0;\n return cloneObj;\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n return new Set();\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return new Set();\n }\n }, {\n key: \"hash\",\n value: function hash() {\n if (this._hash === undefined) {\n this._hash = \"Output \".concat(uniqueId());\n }\n return this._hash;\n }\n /**\n * Request the datasource name and increase the ref counter.\n *\n * During the parsing phase, this will return the simple name such as 'main' or 'raw'.\n * It is crucial to request the name from an output node to mark it as a required node.\n * If nobody ever requests the name, this datasource will not be instantiated in the assemble phase.\n *\n * In the assemble phase, this will return the correct name.\n */\n }, {\n key: \"getSource\",\n value: function getSource() {\n this.refCounts[this._name]++;\n return this._source;\n }\n }, {\n key: \"isRequired\",\n value: function isRequired() {\n return !!this.refCounts[this._name];\n }\n }, {\n key: \"setSource\",\n value: function setSource(source) {\n this._source = source;\n }\n }]);\n return OutputNode;\n}(DataFlowNode);","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nvar _excluded = [\"unit\", \"utc\"],\n _excluded2 = [\"timeUnit\"];\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { vgField } from '../../channeldef';\nimport { getDateTimePartAndStep, getSmallestTimeUnitPart, getTimeUnitParts, isBinnedTimeUnit, normalizeTimeUnit } from '../../timeunit';\nimport { duplicate, entries, hash as _hash, isEmpty, replacePathInField, vals } from '../../util';\nimport { isUnitModel } from '../model';\nimport { DataFlowNode } from './dataflow';\nimport { isRectBasedMark } from '../../mark';\nfunction isTimeUnitTransformComponent(timeUnitComponent) {\n return timeUnitComponent.as !== undefined;\n}\nfunction offsetAs(field) {\n return \"\".concat(field, \"_end\");\n}\nexport var TimeUnitNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(TimeUnitNode, _DataFlowNode);\n var _super = _createSuper(TimeUnitNode);\n function TimeUnitNode(parent, formula) {\n var _this;\n _classCallCheck(this, TimeUnitNode);\n _this = _super.call(this, parent);\n _this.formula = formula;\n return _this;\n }\n _createClass(TimeUnitNode, [{\n key: \"clone\",\n value: function clone() {\n return new TimeUnitNode(null, duplicate(this.formula));\n }\n }, {\n key: \"merge\",\n value:\n /**\n * Merge together TimeUnitNodes assigning the children of `other` to `this`\n * and removing `other`.\n */\n function merge(other) {\n this.formula = _objectSpread({}, this.formula);\n // if the same hash happen twice, merge\n for (var key in other.formula) {\n if (!this.formula[key]) {\n // copy if it's not a duplicate\n this.formula[key] = other.formula[key];\n }\n }\n var _iterator = _createForOfIteratorHelper(other.children),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var child = _step.value;\n other.removeChild(child);\n child.parent = this;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n other.remove();\n }\n /**\n * Remove time units coming from the other node.\n */\n }, {\n key: \"removeFormulas\",\n value: function removeFormulas(fields) {\n var newFormula = {};\n var _iterator2 = _createForOfIteratorHelper(entries(this.formula)),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _step2$value = _slicedToArray(_step2.value, 2),\n key = _step2$value[0],\n timeUnitComponent = _step2$value[1];\n var fieldAs = isTimeUnitTransformComponent(timeUnitComponent) ? timeUnitComponent.as : \"\".concat(timeUnitComponent.field, \"_end\");\n if (!fields.has(fieldAs)) {\n newFormula[key] = timeUnitComponent;\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n this.formula = newFormula;\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return new Set(vals(this.formula).map(function (f) {\n return isTimeUnitTransformComponent(f) ? f.as : offsetAs(f.field);\n }));\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n return new Set(vals(this.formula).map(function (f) {\n return f.field;\n }));\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return \"TimeUnit \".concat(_hash(this.formula));\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n var transforms = [];\n var _iterator3 = _createForOfIteratorHelper(vals(this.formula)),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var f = _step3.value;\n if (isTimeUnitTransformComponent(f)) {\n var field = f.field,\n as = f.as,\n timeUnit = f.timeUnit;\n var _normalizeTimeUnit = normalizeTimeUnit(timeUnit),\n unit = _normalizeTimeUnit.unit,\n utc = _normalizeTimeUnit.utc,\n params = _objectWithoutProperties(_normalizeTimeUnit, _excluded);\n transforms.push(_objectSpread(_objectSpread(_objectSpread(_objectSpread({\n field: replacePathInField(field),\n type: 'timeunit'\n }, unit ? {\n units: getTimeUnitParts(unit)\n } : {}), utc ? {\n timezone: 'utc'\n } : {}), params), {}, {\n as: [as, \"\".concat(as, \"_end\")]\n }));\n } else if (f) {\n var _field = f.field,\n _timeUnit = f.timeUnit;\n var smallestUnit = getSmallestTimeUnitPart(_timeUnit === null || _timeUnit === void 0 ? void 0 : _timeUnit.unit);\n var _getDateTimePartAndSt = getDateTimePartAndStep(smallestUnit, _timeUnit.step),\n part = _getDateTimePartAndSt.part,\n step = _getDateTimePartAndSt.step;\n transforms.push({\n type: 'formula',\n expr: \"timeOffset('\".concat(part, \"', datum['\").concat(_field, \"'], \").concat(step, \")\"),\n as: offsetAs(_field)\n });\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n return transforms;\n }\n }], [{\n key: \"makeFromEncoding\",\n value: function makeFromEncoding(parent, model) {\n var formula = model.reduceFieldDef(function (timeUnitComponent, fieldDef) {\n var field = fieldDef.field,\n timeUnit = fieldDef.timeUnit;\n if (timeUnit) {\n var component;\n if (isBinnedTimeUnit(timeUnit)) {\n // For binned time unit, only produce end if the mark is a rect-based mark (rect, bar, image, arc), which needs \"range\".\n if (isUnitModel(model)) {\n var mark = model.mark;\n if (isRectBasedMark(mark) || !!fieldDef.bandPosition) {\n component = {\n timeUnit: normalizeTimeUnit(timeUnit),\n field: field\n };\n }\n }\n } else {\n component = {\n as: vgField(fieldDef, {\n forAs: true\n }),\n field: field,\n timeUnit: timeUnit\n };\n }\n if (component) {\n timeUnitComponent[_hash(component)] = component;\n }\n }\n return timeUnitComponent;\n }, {});\n if (isEmpty(formula)) {\n return null;\n }\n return new TimeUnitNode(parent, formula);\n }\n }, {\n key: \"makeFromTransform\",\n value: function makeFromTransform(parent, t) {\n var _t = _objectSpread({}, t),\n timeUnit = _t.timeUnit,\n other = _objectWithoutProperties(_t, _excluded2);\n var normalizedTimeUnit = normalizeTimeUnit(timeUnit);\n var component = _objectSpread(_objectSpread({}, other), {}, {\n timeUnit: normalizedTimeUnit\n });\n return new TimeUnitNode(parent, _defineProperty({}, _hash(component), component));\n }\n }]);\n return TimeUnitNode;\n}(DataFlowNode);","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { array, isObject } from 'vega-util';\nimport { getPositionChannelFromLatLong, isGeoPositionChannel, isScaleChannel, isSingleDefUnitChannel } from '../../channel';\nimport * as log from '../../log';\nimport { hasContinuousDomain } from '../../scale';\nimport { SELECTION_ID } from '../../selection';\nimport { hash, keys, varName, isEmpty } from '../../util';\nimport { TimeUnitNode } from '../data/timeunit';\nimport { assembleProjection } from './assemble';\nimport { isBinnedTimeUnit } from '../../timeunit';\nexport var TUPLE_FIELDS = '_tuple_fields';\nexport var SelectionProjectionComponent = /*#__PURE__*/_createClass(function SelectionProjectionComponent() {\n _classCallCheck(this, SelectionProjectionComponent);\n for (var _len = arguments.length, items = new Array(_len), _key = 0; _key < _len; _key++) {\n items[_key] = arguments[_key];\n }\n this.items = items;\n this.hasChannel = {};\n this.hasField = {};\n this.hasSelectionId = false;\n});\nvar project = {\n defined: function defined() {\n return true; // This transform handles its own defaults, so always run parse.\n },\n\n parse: function parse(model, selCmpt, selDef) {\n var _selCmpt$project, _encodings, _fields2;\n var name = selCmpt.name;\n var proj = (_selCmpt$project = selCmpt.project) !== null && _selCmpt$project !== void 0 ? _selCmpt$project : selCmpt.project = new SelectionProjectionComponent();\n var parsed = {};\n var timeUnits = {};\n var signals = new Set();\n var signalName = function signalName(p, range) {\n var suffix = range === 'visual' ? p.channel : p.field;\n var sg = varName(\"\".concat(name, \"_\").concat(suffix));\n for (var counter = 1; signals.has(sg); counter++) {\n sg = varName(\"\".concat(name, \"_\").concat(suffix, \"_\").concat(counter));\n }\n signals.add(sg);\n return _defineProperty({}, range, sg);\n };\n var type = selCmpt.type;\n var cfg = model.config.selection[type];\n var init = selDef.value !== undefined ? array(selDef.value) : null;\n // If no explicit projection (either fields or encodings) is specified, set some defaults.\n // If an initial value is set, try to infer projections.\n var _ref2 = isObject(selDef.select) ? selDef.select : {},\n fields = _ref2.fields,\n encodings = _ref2.encodings;\n if (!fields && !encodings && init) {\n var _iterator = _createForOfIteratorHelper(init),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var initVal = _step.value;\n // initVal may be a scalar value to smoothen varParam -> pointSelection gradient.\n if (!isObject(initVal)) {\n continue;\n }\n var _iterator2 = _createForOfIteratorHelper(keys(initVal)),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var key = _step2.value;\n if (isSingleDefUnitChannel(key)) {\n (encodings || (encodings = [])).push(key);\n } else {\n if (type === 'interval') {\n log.warn(log.message.INTERVAL_INITIALIZED_WITH_POS);\n encodings = cfg.encodings;\n } else {\n var _fields;\n ((_fields = fields) !== null && _fields !== void 0 ? _fields : fields = []).push(key);\n }\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n // If no initial value is specified, use the default configuration.\n // We break this out as a separate if block (instead of an else condition)\n // to account for unprojected point selections that have scalar initial values\n if (!fields && !encodings) {\n encodings = cfg.encodings;\n if ('fields' in cfg) {\n fields = cfg.fields;\n }\n }\n var _iterator3 = _createForOfIteratorHelper((_encodings = encodings) !== null && _encodings !== void 0 ? _encodings : []),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var channel = _step3.value;\n var fieldDef = model.fieldDef(channel);\n if (fieldDef) {\n var field = fieldDef.field;\n if (fieldDef.aggregate) {\n log.warn(log.message.cannotProjectAggregate(channel, fieldDef.aggregate));\n continue;\n } else if (!field) {\n log.warn(log.message.cannotProjectOnChannelWithoutField(channel));\n continue;\n }\n if (fieldDef.timeUnit && !isBinnedTimeUnit(fieldDef.timeUnit)) {\n field = model.vgField(channel);\n // Construct TimeUnitComponents which will be combined into a\n // TimeUnitNode. This node may need to be inserted into the\n // dataflow if the selection is used across views that do not\n // have these time units defined.\n var component = {\n timeUnit: fieldDef.timeUnit,\n as: field,\n field: fieldDef.field\n };\n timeUnits[hash(component)] = component;\n }\n // Prevent duplicate projections on the same field.\n // TODO: what if the same field is bound to multiple channels (e.g., SPLOM diag).\n if (!parsed[field]) {\n // Determine whether the tuple will store enumerated or ranged values.\n // Interval selections store ranges for continuous scales, and enumerations otherwise.\n // Single/multi selections store ranges for binned fields, and enumerations otherwise.\n var tplType = type === 'interval' && isScaleChannel(channel) && hasContinuousDomain(model.getScaleComponent(channel).get('type')) ? 'R' : fieldDef.bin ? 'R-RE' : 'E';\n var p = {\n field: field,\n channel: channel,\n type: tplType,\n index: proj.items.length\n };\n p.signals = _objectSpread(_objectSpread({}, signalName(p, 'data')), signalName(p, 'visual'));\n proj.items.push(parsed[field] = p);\n proj.hasField[field] = parsed[field];\n proj.hasSelectionId = proj.hasSelectionId || field === SELECTION_ID;\n if (isGeoPositionChannel(channel)) {\n p.geoChannel = channel;\n p.channel = getPositionChannelFromLatLong(channel);\n proj.hasChannel[p.channel] = parsed[field];\n } else {\n proj.hasChannel[channel] = parsed[field];\n }\n }\n } else {\n log.warn(log.message.cannotProjectOnChannelWithoutField(channel));\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n var _iterator4 = _createForOfIteratorHelper((_fields2 = fields) !== null && _fields2 !== void 0 ? _fields2 : []),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var _field = _step4.value;\n if (proj.hasField[_field]) continue;\n var _p = {\n type: 'E',\n field: _field,\n index: proj.items.length\n };\n _p.signals = _objectSpread({}, signalName(_p, 'data'));\n proj.items.push(_p);\n proj.hasField[_field] = _p;\n proj.hasSelectionId = proj.hasSelectionId || _field === SELECTION_ID;\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n if (init) {\n selCmpt.init = init.map(function (v) {\n // Selections can be initialized either with a full object that maps projections to values\n // or scalar values to smoothen the abstraction gradient from variable params to point selections.\n return proj.items.map(function (p) {\n return isObject(v) ? v[p.geoChannel || p.channel] !== undefined ? v[p.geoChannel || p.channel] : v[p.field] : v;\n });\n });\n }\n if (!isEmpty(timeUnits)) {\n proj.timeUnit = new TimeUnitNode(null, timeUnits);\n }\n },\n signals: function signals(model, selCmpt, allSignals) {\n var name = selCmpt.name + TUPLE_FIELDS;\n var hasSignal = allSignals.filter(function (s) {\n return s.name === name;\n });\n return hasSignal.length > 0 || selCmpt.project.hasSelectionId ? allSignals : allSignals.concat({\n name: name,\n value: selCmpt.project.items.map(assembleProjection)\n });\n }\n};\nexport default project;","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { stringValue } from 'vega-util';\nimport { VL_SELECTION_RESOLVE } from '.';\nimport { isScaleChannel } from '../../channel';\nimport * as log from '../../log';\nimport { hasContinuousDomain } from '../../scale';\nimport { isLayerModel } from '../model';\nimport { replacePathInField } from '../../util';\nvar scaleBindings = {\n defined: function defined(selCmpt) {\n return selCmpt.type === 'interval' && selCmpt.resolve === 'global' && selCmpt.bind && selCmpt.bind === 'scales';\n },\n parse: function parse(model, selCmpt) {\n var bound = selCmpt.scales = [];\n var _iterator = _createForOfIteratorHelper(selCmpt.project.items),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var proj = _step.value;\n var channel = proj.channel;\n if (!isScaleChannel(channel)) {\n continue;\n }\n var scale = model.getScaleComponent(channel);\n var scaleType = scale ? scale.get('type') : undefined;\n if (!scale || !hasContinuousDomain(scaleType)) {\n log.warn(log.message.SCALE_BINDINGS_CONTINUOUS);\n continue;\n }\n scale.set('selectionExtent', {\n param: selCmpt.name,\n field: proj.field\n }, true);\n bound.push(proj);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n },\n topLevelSignals: function topLevelSignals(model, selCmpt, signals) {\n var bound = selCmpt.scales.filter(function (proj) {\n return signals.filter(function (s) {\n return s.name === proj.signals.data;\n }).length === 0;\n });\n // Top-level signals are only needed for multiview displays and if this\n // view's top-level signals haven't already been generated.\n if (!model.parent || isTopLevelLayer(model) || bound.length === 0) {\n return signals;\n }\n // vlSelectionResolve does not account for the behavior of bound scales in\n // multiview displays. Each unit view adds a tuple to the store, but the\n // state of the selection is the unit selection most recently updated. This\n // state is captured by the top-level signals that we insert and \"push\n // outer\" to from within the units. We need to reassemble this state into\n // the top-level named signal, except no single selCmpt has a global view.\n var namedSg = signals.filter(function (s) {\n return s.name === selCmpt.name;\n })[0];\n var update = namedSg.update;\n if (update.indexOf(VL_SELECTION_RESOLVE) >= 0) {\n namedSg.update = \"{\".concat(bound.map(function (proj) {\n return \"\".concat(stringValue(replacePathInField(proj.field)), \": \").concat(proj.signals.data);\n }).join(', '), \"}\");\n } else {\n var _iterator2 = _createForOfIteratorHelper(bound),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var proj = _step2.value;\n var mapping = \"\".concat(stringValue(replacePathInField(proj.field)), \": \").concat(proj.signals.data);\n if (!update.includes(mapping)) {\n update = \"\".concat(update.substring(0, update.length - 1), \", \").concat(mapping, \"}\");\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n namedSg.update = update;\n }\n return signals.concat(bound.map(function (proj) {\n return {\n name: proj.signals.data\n };\n }));\n },\n signals: function signals(model, selCmpt, _signals) {\n // Nested signals need only push to top-level signals with multiview displays.\n if (model.parent && !isTopLevelLayer(model)) {\n var _iterator3 = _createForOfIteratorHelper(selCmpt.scales),\n _step3;\n try {\n var _loop = function _loop() {\n var proj = _step3.value;\n var signal = _signals.filter(function (s) {\n return s.name === proj.signals.data;\n })[0];\n signal.push = 'outer';\n delete signal.value;\n delete signal.update;\n };\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n _loop();\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n }\n return _signals;\n }\n};\nexport default scaleBindings;\nexport function domain(model, channel) {\n var scale = stringValue(model.scaleName(channel));\n return \"domain(\".concat(scale, \")\");\n}\nfunction isTopLevelLayer(model) {\n var _model$parent$parent;\n return model.parent && isLayerModel(model.parent) && ((_model$parent$parent = !model.parent.parent) !== null && _model$parent$parent !== void 0 ? _model$parent$parent : isTopLevelLayer(model.parent.parent));\n}","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nvar _excluded = [\"fill\", \"fillOpacity\", \"cursor\"];\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { isObject } from 'vega';\nimport { array, stringValue } from 'vega-util';\nimport { STORE, TUPLE, unitName } from '.';\nimport { LATITUDE, LONGITUDE, X, Y } from '../../channel';\nimport { warn } from '../../log';\nimport { hasContinuousDomain } from '../../scale';\nimport { SELECTION_ID } from '../../selection';\nimport { keys, vals } from '../../util';\nimport { isUnitModel } from '../model';\nimport { assembleInit } from './assemble';\nimport { TUPLE_FIELDS } from './project';\nimport scales from './scales';\nexport var BRUSH = '_brush';\nexport var SCALE_TRIGGER = '_scale_trigger';\nexport var GEO_INIT_TICK = 'geo_interval_init_tick'; // Workaround for https://github.com/vega/vega/issues/3481\nvar INIT = '_init';\nvar CENTER = '_center';\nvar interval = {\n defined: function defined(selCmpt) {\n return selCmpt.type === 'interval';\n },\n parse: function parse(model, selCmpt, selDef) {\n var _a;\n if (model.hasProjection) {\n var def = _objectSpread({}, isObject(selDef.select) ? selDef.select : {});\n def.fields = [SELECTION_ID];\n if (!def.encodings) {\n // Remap default x/y projection\n def.encodings = selDef.value ? keys(selDef.value) : [LONGITUDE, LATITUDE];\n }\n selDef.select = _objectSpread({\n type: 'interval'\n }, def);\n }\n if (selCmpt.translate && !scales.defined(selCmpt)) {\n var filterExpr = \"!event.item || event.item.mark.name !== \".concat(stringValue(selCmpt.name + BRUSH));\n var _iterator = _createForOfIteratorHelper(selCmpt.events),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _a$filter;\n var evt = _step.value;\n if (!evt.between) {\n warn(\"\".concat(evt, \" is not an ordered event stream for interval selections.\"));\n continue;\n }\n var filters = array((_a$filter = (_a = evt.between[0]).filter) !== null && _a$filter !== void 0 ? _a$filter : _a.filter = []);\n if (filters.indexOf(filterExpr) < 0) {\n filters.push(filterExpr);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n },\n signals: function signals(model, selCmpt, _signals) {\n var name = selCmpt.name;\n var tupleSg = name + TUPLE;\n var channels = vals(selCmpt.project.hasChannel).filter(function (p) {\n return p.channel === X || p.channel === Y;\n });\n var init = selCmpt.init ? selCmpt.init[0] : null;\n _signals.push.apply(_signals, _toConsumableArray(channels.reduce(function (arr, proj) {\n return arr.concat(channelSignals(model, selCmpt, proj, init && init[proj.index]));\n }, [])));\n if (!model.hasProjection) {\n // Proxy scale reactions to ensure that an infinite loop doesn't occur\n // when an interval selection filter touches the scale.\n if (!scales.defined(selCmpt)) {\n var triggerSg = name + SCALE_TRIGGER;\n var scaleTriggers = channels.map(function (proj) {\n var channel = proj.channel;\n var _proj$signals = proj.signals,\n dname = _proj$signals.data,\n vname = _proj$signals.visual;\n var scaleName = stringValue(model.scaleName(channel));\n var scaleType = model.getScaleComponent(channel).get('type');\n var toNum = hasContinuousDomain(scaleType) ? '+' : '';\n return \"(!isArray(\".concat(dname, \") || \") + \"(\".concat(toNum, \"invert(\").concat(scaleName, \", \").concat(vname, \")[0] === \").concat(toNum).concat(dname, \"[0] && \") + \"\".concat(toNum, \"invert(\").concat(scaleName, \", \").concat(vname, \")[1] === \").concat(toNum).concat(dname, \"[1]))\");\n });\n if (scaleTriggers.length) {\n _signals.push({\n name: triggerSg,\n value: {},\n on: [{\n events: channels.map(function (proj) {\n return {\n scale: model.scaleName(proj.channel)\n };\n }),\n update: scaleTriggers.join(' && ') + \" ? \".concat(triggerSg, \" : {}\")\n }]\n });\n }\n }\n // Only add an interval to the store if it has valid data extents. Data extents\n // are set to null if pixel extents are equal to account for intervals over\n // ordinal/nominal domains which, when inverted, will still produce a valid datum.\n var dataSignals = channels.map(function (proj) {\n return proj.signals.data;\n });\n var update = \"unit: \".concat(unitName(model), \", fields: \").concat(name + TUPLE_FIELDS, \", values\");\n return _signals.concat(_objectSpread(_objectSpread({\n name: tupleSg\n }, init ? {\n init: \"{\".concat(update, \": \").concat(assembleInit(init), \"}\")\n } : {}), dataSignals.length ? {\n on: [{\n events: [{\n signal: dataSignals.join(' || ')\n }],\n update: \"\".concat(dataSignals.join(' && '), \" ? {\").concat(update, \": [\").concat(dataSignals, \"]} : null\")\n }]\n } : {}));\n } else {\n var projection = stringValue(model.projectionName());\n var centerSg = model.projectionName() + CENTER;\n var _selCmpt$project$hasC = selCmpt.project.hasChannel,\n x = _selCmpt$project$hasC.x,\n y = _selCmpt$project$hasC.y;\n var xvname = x && x.signals.visual;\n var yvname = y && y.signals.visual;\n var xinit = x ? init && init[x.index] : \"\".concat(centerSg, \"[0]\");\n var yinit = y ? init && init[y.index] : \"\".concat(centerSg, \"[1]\");\n var sizeSg = function sizeSg(layout) {\n return model.getSizeSignalRef(layout).signal;\n };\n var bbox = \"[\" + \"[\".concat(xvname ? xvname + '[0]' : '0', \", \").concat(yvname ? yvname + '[0]' : '0', \"],\") + \"[\".concat(xvname ? xvname + '[1]' : sizeSg('width'), \", \") + \"\".concat(yvname ? yvname + '[1]' : sizeSg('height'), \"]\") + \"]\";\n if (init) {\n _signals.unshift({\n name: name + INIT,\n init: \"[scale(\".concat(projection, \", [\").concat(x ? xinit[0] : xinit, \", \").concat(y ? yinit[0] : yinit, \"]), \") + \"scale(\".concat(projection, \", [\").concat(x ? xinit[1] : xinit, \", \").concat(y ? yinit[1] : yinit, \"])]\")\n });\n if (!x || !y) {\n // If initializing a uni-dimensional brush, use the center of the view to determine the other coord\n var hasCenterSg = _signals.find(function (s) {\n return s.name === centerSg;\n });\n if (!hasCenterSg) {\n _signals.unshift({\n name: centerSg,\n update: \"invert(\".concat(projection, \", [\").concat(sizeSg('width'), \"/2, \").concat(sizeSg('height'), \"/2])\")\n });\n }\n }\n }\n var intersect = \"intersect(\".concat(bbox, \", {markname: \").concat(stringValue(model.getName('marks')), \"}, unit.mark)\");\n var base = \"{unit: \".concat(unitName(model), \"}\");\n var _update = \"vlSelectionTuples(\".concat(intersect, \", \").concat(base, \")\");\n var visualSignals = channels.map(function (proj) {\n return proj.signals.visual;\n });\n return _signals.concat({\n name: tupleSg,\n on: [{\n events: [].concat(_toConsumableArray(visualSignals.length ? [{\n signal: visualSignals.join(' || ')\n }] : []), _toConsumableArray(init ? [{\n signal: GEO_INIT_TICK\n }] : [])),\n update: _update\n }]\n });\n }\n },\n topLevelSignals: function topLevelSignals(model, selCmpt, signals) {\n if (isUnitModel(model) && model.hasProjection && selCmpt.init) {\n // Workaround for https://github.com/vega/vega/issues/3481\n // The scenegraph isn't populated on the first pulse. So we use a timer signal\n // to re-pulse the dataflow as soon as possible. We return an object to ensure\n // this only occurs once.\n var hasTick = signals.filter(function (s) {\n return s.name === GEO_INIT_TICK;\n });\n if (!hasTick.length) {\n signals.unshift({\n name: GEO_INIT_TICK,\n value: null,\n on: [{\n events: 'timer{1}',\n update: \"\".concat(GEO_INIT_TICK, \" === null ? {} : \").concat(GEO_INIT_TICK)\n }]\n });\n }\n }\n return signals;\n },\n marks: function marks(model, selCmpt, _marks) {\n var name = selCmpt.name;\n var _selCmpt$project$hasC2 = selCmpt.project.hasChannel,\n x = _selCmpt$project$hasC2.x,\n y = _selCmpt$project$hasC2.y;\n var xvname = x === null || x === void 0 ? void 0 : x.signals.visual;\n var yvname = y === null || y === void 0 ? void 0 : y.signals.visual;\n var store = \"data(\".concat(stringValue(selCmpt.name + STORE), \")\");\n // Do not add a brush if we're binding to scales\n // or we don't have a valid interval projection\n if (scales.defined(selCmpt) || !x && !y) {\n return _marks;\n }\n var update = {\n x: x !== undefined ? {\n signal: \"\".concat(xvname, \"[0]\")\n } : {\n value: 0\n },\n y: y !== undefined ? {\n signal: \"\".concat(yvname, \"[0]\")\n } : {\n value: 0\n },\n x2: x !== undefined ? {\n signal: \"\".concat(xvname, \"[1]\")\n } : {\n field: {\n group: 'width'\n }\n },\n y2: y !== undefined ? {\n signal: \"\".concat(yvname, \"[1]\")\n } : {\n field: {\n group: 'height'\n }\n }\n };\n // If the selection is resolved to global, only a single interval is in\n // the store. Wrap brush mark's encodings with a production rule to test\n // this based on the `unit` property. Hide the brush mark if it corresponds\n // to a unit different from the one in the store.\n if (selCmpt.resolve === 'global') {\n var _iterator2 = _createForOfIteratorHelper(keys(update)),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var key = _step2.value;\n update[key] = [_objectSpread({\n test: \"\".concat(store, \".length && \").concat(store, \"[0].unit === \").concat(unitName(model))\n }, update[key]), {\n value: 0\n }];\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n // Two brush marks ensure that fill colors and other aesthetic choices do\n // not interefere with the core marks, but that the brushed region can still\n // be interacted with (e.g., dragging it around).\n var _selCmpt$mark = selCmpt.mark,\n fill = _selCmpt$mark.fill,\n fillOpacity = _selCmpt$mark.fillOpacity,\n cursor = _selCmpt$mark.cursor,\n stroke = _objectWithoutProperties(_selCmpt$mark, _excluded);\n var vgStroke = keys(stroke).reduce(function (def, k) {\n def[k] = [{\n test: [x !== undefined && \"\".concat(xvname, \"[0] !== \").concat(xvname, \"[1]\"), y !== undefined && \"\".concat(yvname, \"[0] !== \").concat(yvname, \"[1]\")].filter(function (t) {\n return t;\n }).join(' && '),\n value: stroke[k]\n }, {\n value: null\n }];\n return def;\n }, {});\n return [{\n name: \"\".concat(name + BRUSH, \"_bg\"),\n type: 'rect',\n clip: true,\n encode: {\n enter: {\n fill: {\n value: fill\n },\n fillOpacity: {\n value: fillOpacity\n }\n },\n update: update\n }\n }].concat(_toConsumableArray(_marks), [{\n name: name + BRUSH,\n type: 'rect',\n clip: true,\n encode: {\n enter: _objectSpread(_objectSpread({}, cursor ? {\n cursor: {\n value: cursor\n }\n } : {}), {}, {\n fill: {\n value: 'transparent'\n }\n }),\n update: _objectSpread(_objectSpread({}, update), vgStroke)\n }\n }]);\n }\n};\nexport default interval;\n/**\n * Returns the visual and data signals for an interval selection.\n */\nfunction channelSignals(model, selCmpt, proj, init) {\n var scaledInterval = !model.hasProjection;\n var channel = proj.channel;\n var vname = proj.signals.visual;\n var scaleName = stringValue(scaledInterval ? model.scaleName(channel) : model.projectionName());\n var scaled = function scaled(str) {\n return \"scale(\".concat(scaleName, \", \").concat(str, \")\");\n };\n var size = model.getSizeSignalRef(channel === X ? 'width' : 'height').signal;\n var coord = \"\".concat(channel, \"(unit)\");\n var von = selCmpt.events.reduce(function (def, evt) {\n return [].concat(_toConsumableArray(def), [{\n events: evt.between[0],\n update: \"[\".concat(coord, \", \").concat(coord, \"]\")\n }, {\n events: evt,\n update: \"[\".concat(vname, \"[0], clamp(\").concat(coord, \", 0, \").concat(size, \")]\")\n } // Brush End\n ]);\n }, []);\n if (scaledInterval) {\n var dname = proj.signals.data;\n var hasScales = scales.defined(selCmpt);\n var scale = model.getScaleComponent(channel);\n var scaleType = scale ? scale.get('type') : undefined;\n var vinit = init ? {\n init: assembleInit(init, true, scaled)\n } : {\n value: []\n };\n // React to pan/zooms of continuous scales. Non-continuous scales\n // (band, point) cannot be pan/zoomed and any other changes\n // to their domains (e.g., filtering) should clear the brushes.\n von.push({\n events: {\n signal: selCmpt.name + SCALE_TRIGGER\n },\n update: hasContinuousDomain(scaleType) ? \"[\".concat(scaled(\"\".concat(dname, \"[0]\")), \", \").concat(scaled(\"\".concat(dname, \"[1]\")), \"]\") : \"[0, 0]\"\n });\n return hasScales ? [{\n name: dname,\n on: []\n }] : [_objectSpread(_objectSpread({\n name: vname\n }, vinit), {}, {\n on: von\n }), _objectSpread(_objectSpread({\n name: dname\n }, init ? {\n init: assembleInit(init)\n } : {}), {}, {\n on: [{\n events: {\n signal: vname\n },\n update: \"\".concat(vname, \"[0] === \").concat(vname, \"[1] ? null : invert(\").concat(scaleName, \", \").concat(vname, \")\")\n }]\n })];\n } else {\n var initIdx = channel === X ? 0 : 1;\n var initSg = selCmpt.name + INIT;\n var _vinit = init ? {\n init: \"[\".concat(initSg, \"[0][\").concat(initIdx, \"], \").concat(initSg, \"[1][\").concat(initIdx, \"]]\")\n } : {\n value: []\n };\n return [_objectSpread(_objectSpread({\n name: vname\n }, _vinit), {}, {\n on: von\n })];\n }\n}","import { stringValue } from 'vega-util';\nimport { TUPLE, unitName } from '.';\nimport { SELECTION_ID } from '../../selection';\nimport { vals } from '../../util';\nimport { BRUSH } from './interval';\nimport { TUPLE_FIELDS } from './project';\nvar point = {\n defined: function defined(selCmpt) {\n return selCmpt.type === 'point';\n },\n signals: function signals(model, selCmpt, _signals) {\n var _model$component$sele;\n var name = selCmpt.name;\n var fieldsSg = name + TUPLE_FIELDS;\n var project = selCmpt.project;\n var datum = '(item().isVoronoi ? datum.datum : datum)';\n // Only add a discrete selection to the store if a datum is present _and_\n // the interaction isn't occurring on a group mark. This guards against\n // polluting interactive state with invalid values in faceted displays\n // as the group marks are also data-driven. We force the update to account\n // for constant null states but varying toggles (e.g., shift-click in\n // whitespace followed by a click in whitespace; the store should only\n // be cleared on the second click).\n var brushes = vals((_model$component$sele = model.component.selection) !== null && _model$component$sele !== void 0 ? _model$component$sele : {}).reduce(function (acc, cmpt) {\n return cmpt.type === 'interval' ? acc.concat(cmpt.name + BRUSH) : acc;\n }, []).map(function (b) {\n return \"indexof(item().mark.name, '\".concat(b, \"') < 0\");\n }).join(' && ');\n var test = \"datum && item().mark.marktype !== 'group' && indexof(item().mark.role, 'legend') < 0\".concat(brushes ? \" && \".concat(brushes) : '');\n var update = \"unit: \".concat(unitName(model), \", \");\n if (selCmpt.project.hasSelectionId) {\n update += \"\".concat(SELECTION_ID, \": \").concat(datum, \"[\").concat(stringValue(SELECTION_ID), \"]\");\n } else {\n var values = project.items.map(function (p) {\n var fieldDef = model.fieldDef(p.channel);\n // Binned fields should capture extents, for a range test against the raw field.\n return fieldDef !== null && fieldDef !== void 0 && fieldDef.bin ? \"[\".concat(datum, \"[\").concat(stringValue(model.vgField(p.channel, {})), \"], \") + \"\".concat(datum, \"[\").concat(stringValue(model.vgField(p.channel, {\n binSuffix: 'end'\n })), \"]]\") : \"\".concat(datum, \"[\").concat(stringValue(p.field), \"]\");\n }).join(', ');\n update += \"fields: \".concat(fieldsSg, \", values: [\").concat(values, \"]\");\n }\n var events = selCmpt.events;\n return _signals.concat([{\n name: name + TUPLE,\n on: events ? [{\n events: events,\n update: \"\".concat(test, \" ? {\").concat(update, \"} : null\"),\n force: true\n }] : []\n }]);\n }\n};\nexport default point;","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { array } from 'vega-util';\nimport { isConditionalDef, isConditionalParameter } from '../../../channeldef';\nimport { expression } from '../../predicate';\nimport { parseSelectionPredicate } from '../../selection/parse';\n/**\n * Return a mixin that includes a Vega production rule for a Vega-Lite conditional channel definition\n * or a simple mixin if channel def has no condition.\n */\nexport function wrapCondition(model, channelDef, vgChannel, refFn) {\n var condition = isConditionalDef(channelDef) && channelDef.condition;\n var valueRef = refFn(channelDef);\n if (condition) {\n var conditions = array(condition);\n var vgConditions = conditions.map(function (c) {\n var conditionValueRef = refFn(c);\n if (isConditionalParameter(c)) {\n var param = c.param,\n empty = c.empty;\n var test = parseSelectionPredicate(model, {\n param: param,\n empty: empty\n });\n return _objectSpread({\n test: test\n }, conditionValueRef);\n } else {\n var _test = expression(model, c.test); // FIXME: remove casting once TS is no longer dumb about it\n return _objectSpread({\n test: _test\n }, conditionValueRef);\n }\n });\n return _defineProperty({}, vgChannel, [].concat(_toConsumableArray(vgConditions), _toConsumableArray(valueRef !== undefined ? [valueRef] : [])));\n } else {\n return valueRef !== undefined ? _defineProperty({}, vgChannel, valueRef) : {};\n }\n}","import { getFormatMixins, isFieldOrDatumDef, isValueDef } from '../../../channeldef';\nimport { signalOrValueRef } from '../../common';\nimport { formatSignalRef } from '../../format';\nimport { wrapCondition } from './conditional';\nexport function text(model) {\n var channel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'text';\n var channelDef = model.encoding[channel];\n return wrapCondition(model, channelDef, channel, function (cDef) {\n return textRef(cDef, model.config);\n });\n}\nexport function textRef(channelDef, config) {\n var expr = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'datum';\n // text\n if (channelDef) {\n if (isValueDef(channelDef)) {\n return signalOrValueRef(channelDef.value);\n }\n if (isFieldOrDatumDef(channelDef)) {\n var _getFormatMixins = getFormatMixins(channelDef),\n format = _getFormatMixins.format,\n formatType = _getFormatMixins.formatType;\n return formatSignalRef({\n fieldOrDatumDef: channelDef,\n format: format,\n formatType: formatType,\n expr: expr,\n config: config\n });\n }\n }\n return undefined;\n}","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport \"core-js/modules/esnext.string.replace-all.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { array, isArray, isObject, isString } from 'vega-util';\nimport { isBinned } from '../../../bin';\nimport { getMainRangeChannel, isXorY, THETA, RADIUS } from '../../../channel';\nimport { defaultTitle, getFieldDef, getFormatMixins, hasConditionalFieldDef, isFieldDef, isTypedFieldDef, vgField } from '../../../channeldef';\nimport { forEach } from '../../../encoding';\nimport { entries } from '../../../util';\nimport { isSignalRef } from '../../../vega.schema';\nimport { getMarkPropOrConfig } from '../../common';\nimport { binFormatExpression, formatSignalRef } from '../../format';\nimport { wrapCondition } from './conditional';\nimport { textRef } from './text';\nexport function tooltip(model) {\n var opt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var encoding = model.encoding,\n markDef = model.markDef,\n config = model.config,\n stack = model.stack;\n var channelDef = encoding.tooltip;\n if (isArray(channelDef)) {\n return {\n tooltip: tooltipRefForEncoding({\n tooltip: channelDef\n }, stack, config, opt)\n };\n } else {\n var datum = opt.reactiveGeom ? 'datum.datum' : 'datum';\n return wrapCondition(model, channelDef, 'tooltip', function (cDef) {\n // use valueRef based on channelDef first\n var tooltipRefFromChannelDef = textRef(cDef, config, datum);\n if (tooltipRefFromChannelDef) {\n return tooltipRefFromChannelDef;\n }\n if (cDef === null) {\n // Allow using encoding.tooltip = null to disable tooltip\n return undefined;\n }\n var markTooltip = getMarkPropOrConfig('tooltip', markDef, config);\n if (markTooltip === true) {\n markTooltip = {\n content: 'encoding'\n };\n }\n if (isString(markTooltip)) {\n return {\n value: markTooltip\n };\n } else if (isObject(markTooltip)) {\n // `tooltip` is `{fields: 'encodings' | 'fields'}`\n if (isSignalRef(markTooltip)) {\n return markTooltip;\n } else if (markTooltip.content === 'encoding') {\n return tooltipRefForEncoding(encoding, stack, config, opt);\n } else {\n return {\n signal: datum\n };\n }\n }\n return undefined;\n });\n }\n}\nexport function tooltipData(encoding, stack, config) {\n var _ref = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {},\n reactiveGeom = _ref.reactiveGeom;\n var formatConfig = _objectSpread(_objectSpread({}, config), config.tooltipFormat);\n var toSkip = {};\n var expr = reactiveGeom ? 'datum.datum' : 'datum';\n var tuples = [];\n function add(fDef, channel) {\n var _value;\n var mainChannel = getMainRangeChannel(channel);\n var fieldDef = isTypedFieldDef(fDef) ? fDef : _objectSpread(_objectSpread({}, fDef), {}, {\n type: encoding[mainChannel].type // for secondary field def, copy type from main channel\n });\n\n var title = fieldDef.title || defaultTitle(fieldDef, formatConfig);\n var key = array(title).join(', ').replaceAll(/\"/g, '\\\\\"');\n var value;\n if (isXorY(channel)) {\n var channel2 = channel === 'x' ? 'x2' : 'y2';\n var fieldDef2 = getFieldDef(encoding[channel2]);\n if (isBinned(fieldDef.bin) && fieldDef2) {\n var startField = vgField(fieldDef, {\n expr: expr\n });\n var endField = vgField(fieldDef2, {\n expr: expr\n });\n var _getFormatMixins = getFormatMixins(fieldDef),\n format = _getFormatMixins.format,\n formatType = _getFormatMixins.formatType;\n value = binFormatExpression(startField, endField, format, formatType, formatConfig);\n toSkip[channel2] = true;\n }\n }\n if ((isXorY(channel) || channel === THETA || channel === RADIUS) && stack && stack.fieldChannel === channel && stack.offset === 'normalize') {\n var _getFormatMixins2 = getFormatMixins(fieldDef),\n _format = _getFormatMixins2.format,\n _formatType = _getFormatMixins2.formatType;\n value = formatSignalRef({\n fieldOrDatumDef: fieldDef,\n format: _format,\n formatType: _formatType,\n expr: expr,\n config: formatConfig,\n normalizeStack: true\n }).signal;\n }\n (_value = value) !== null && _value !== void 0 ? _value : value = textRef(fieldDef, formatConfig, expr).signal;\n tuples.push({\n channel: channel,\n key: key,\n value: value\n });\n }\n forEach(encoding, function (channelDef, channel) {\n if (isFieldDef(channelDef)) {\n add(channelDef, channel);\n } else if (hasConditionalFieldDef(channelDef)) {\n add(channelDef.condition, channel);\n }\n });\n var out = {};\n for (var _i = 0, _tuples = tuples; _i < _tuples.length; _i++) {\n var _tuples$_i = _tuples[_i],\n channel = _tuples$_i.channel,\n key = _tuples$_i.key,\n value = _tuples$_i.value;\n if (!toSkip[channel] && !out[key]) {\n out[key] = value;\n }\n }\n return out;\n}\nexport function tooltipRefForEncoding(encoding, stack, config) {\n var _ref2 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {},\n reactiveGeom = _ref2.reactiveGeom;\n var data = tooltipData(encoding, stack, config, {\n reactiveGeom: reactiveGeom\n });\n var keyValues = entries(data).map(function (_ref3) {\n var _ref4 = _slicedToArray(_ref3, 2),\n key = _ref4[0],\n value = _ref4[1];\n return \"\\\"\".concat(key, \"\\\": \").concat(value);\n });\n return keyValues.length > 0 ? {\n signal: \"{\".concat(keyValues.join(', '), \"}\")\n } : undefined;\n}","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { entries, isEmpty } from '../../../util';\nimport { getMarkPropOrConfig, signalOrValueRef } from '../../common';\nimport { VG_MARK_INDEX } from './../../../vega.schema';\nimport { wrapCondition } from './conditional';\nimport { textRef } from './text';\nimport { tooltipData } from './tooltip';\nexport function aria(model) {\n var markDef = model.markDef,\n config = model.config;\n var enableAria = getMarkPropOrConfig('aria', markDef, config);\n // We can ignore other aria properties if ariaHidden is true.\n if (enableAria === false) {\n // getMarkGroups sets aria to false already so we don't have to set it in the encode block\n return {};\n }\n return _objectSpread(_objectSpread(_objectSpread({}, enableAria ? {\n aria: enableAria\n } : {}), ariaRoleDescription(model)), description(model));\n}\nfunction ariaRoleDescription(model) {\n var mark = model.mark,\n markDef = model.markDef,\n config = model.config;\n if (config.aria === false) {\n return {};\n }\n var ariaRoleDesc = getMarkPropOrConfig('ariaRoleDescription', markDef, config);\n if (ariaRoleDesc != null) {\n return {\n ariaRoleDescription: {\n value: ariaRoleDesc\n }\n };\n }\n return mark in VG_MARK_INDEX ? {} : {\n ariaRoleDescription: {\n value: mark\n }\n };\n}\nexport function description(model) {\n var encoding = model.encoding,\n markDef = model.markDef,\n config = model.config,\n stack = model.stack;\n var channelDef = encoding.description;\n if (channelDef) {\n return wrapCondition(model, channelDef, 'description', function (cDef) {\n return textRef(cDef, model.config);\n });\n }\n // Use default from mark def or config if defined.\n // Functions in encode usually just return undefined but since we are defining a default below, we need to check the default here.\n var descriptionValue = getMarkPropOrConfig('description', markDef, config);\n if (descriptionValue != null) {\n return {\n description: signalOrValueRef(descriptionValue)\n };\n }\n if (config.aria === false) {\n return {};\n }\n var data = tooltipData(encoding, stack, config);\n if (isEmpty(data)) {\n return undefined;\n }\n return {\n description: {\n signal: entries(data).map(function (_ref, index) {\n var _ref2 = _slicedToArray(_ref, 2),\n key = _ref2[0],\n value = _ref2[1];\n return \"\\\"\".concat(index > 0 ? '; ' : '').concat(key, \": \\\" + (\").concat(value, \")\");\n }).join(' + ')\n }\n };\n}","import { getMarkPropOrConfig, signalOrValueRef } from '../../common';\nimport { wrapCondition } from './conditional';\nimport * as ref from './valueref';\n/**\n * Return encode for non-positional channels with scales. (Text doesn't have scale.)\n */\nexport function nonPosition(channel, model) {\n var opt = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var markDef = model.markDef,\n encoding = model.encoding,\n config = model.config;\n var vgChannel = opt.vgChannel;\n var defaultRef = opt.defaultRef,\n defaultValue = opt.defaultValue;\n if (defaultRef === undefined) {\n var _defaultValue;\n // prettier-ignore\n (_defaultValue = defaultValue) !== null && _defaultValue !== void 0 ? _defaultValue : defaultValue = getMarkPropOrConfig(channel, markDef, config, {\n vgChannel: vgChannel,\n ignoreVgConfig: true\n });\n if (defaultValue !== undefined) {\n defaultRef = signalOrValueRef(defaultValue);\n }\n }\n var channelDef = encoding[channel];\n return wrapCondition(model, channelDef, vgChannel !== null && vgChannel !== void 0 ? vgChannel : channel, function (cDef) {\n return ref.midPoint({\n channel: channel,\n channelDef: cDef,\n markDef: markDef,\n config: config,\n scaleName: model.scaleName(channel),\n scale: model.getScaleComponent(channel),\n stack: null,\n defaultRef: defaultRef\n });\n });\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport * as log from '../../../log';\nimport { contains } from '../../../util';\nimport { getMarkPropOrConfig, signalOrValueRef } from '../../common';\nimport { nonPosition } from './nonposition';\nexport function color(model) {\n var _opt$filled, _ref, _getMarkPropOrConfig, _getMarkPropOrConfig2;\n var opt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n filled: undefined\n };\n var markDef = model.markDef,\n encoding = model.encoding,\n config = model.config;\n var markType = markDef.type;\n // Allow filled to be overridden (for trail's \"filled\")\n var filled = (_opt$filled = opt.filled) !== null && _opt$filled !== void 0 ? _opt$filled : getMarkPropOrConfig('filled', markDef, config);\n var transparentIfNeeded = contains(['bar', 'point', 'circle', 'square', 'geoshape'], markType) ? 'transparent' : undefined;\n var defaultFill = (_ref = (_getMarkPropOrConfig = getMarkPropOrConfig(filled === true ? 'color' : undefined, markDef, config, {\n vgChannel: 'fill'\n })) !== null && _getMarkPropOrConfig !== void 0 ? _getMarkPropOrConfig :\n // need to add this manually as getMarkConfig normally drops config.mark[channel] if vgChannel is specified\n config.mark[filled === true && 'color']) !== null && _ref !== void 0 ? _ref :\n // If there is no fill, always fill symbols, bar, geoshape\n // with transparent fills https://github.com/vega/vega-lite/issues/1316\n transparentIfNeeded;\n var defaultStroke = (_getMarkPropOrConfig2 = getMarkPropOrConfig(filled === false ? 'color' : undefined, markDef, config, {\n vgChannel: 'stroke'\n })) !== null && _getMarkPropOrConfig2 !== void 0 ? _getMarkPropOrConfig2 :\n // need to add this manually as getMarkConfig normally drops config.mark[channel] if vgChannel is specified\n config.mark[filled === false && 'color'];\n var colorVgChannel = filled ? 'fill' : 'stroke';\n var fillStrokeMarkDefAndConfig = _objectSpread(_objectSpread({}, defaultFill ? {\n fill: signalOrValueRef(defaultFill)\n } : {}), defaultStroke ? {\n stroke: signalOrValueRef(defaultStroke)\n } : {});\n if (markDef.color && (filled ? markDef.fill : markDef.stroke)) {\n log.warn(log.message.droppingColor('property', {\n fill: 'fill' in markDef,\n stroke: 'stroke' in markDef\n }));\n }\n return _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, fillStrokeMarkDefAndConfig), nonPosition('color', model, {\n vgChannel: colorVgChannel,\n defaultValue: filled ? defaultFill : defaultStroke\n })), nonPosition('fill', model, {\n // if there is encoding.fill, include default fill just in case we have conditional-only fill encoding\n defaultValue: encoding.fill ? defaultFill : undefined\n })), nonPosition('stroke', model, {\n // if there is encoding.stroke, include default fill just in case we have conditional-only stroke encoding\n defaultValue: encoding.stroke ? defaultStroke : undefined\n }));\n}","import { signalOrValueRef } from '../../common';\nimport { midPoint } from './valueref';\nexport function positionOffset(_ref) {\n var baseChannel = _ref.channel,\n markDef = _ref.markDef,\n _ref$encoding = _ref.encoding,\n encoding = _ref$encoding === void 0 ? {} : _ref$encoding,\n model = _ref.model,\n bandPosition = _ref.bandPosition;\n var channel = \"\".concat(baseChannel, \"Offset\"); // Need to cast as the type can't be inferred automatically\n var defaultValue = markDef[channel];\n var channelDef = encoding[channel];\n if ((channel === 'xOffset' || channel === 'yOffset') && channelDef) {\n var ref = midPoint({\n channel: channel,\n channelDef: channelDef,\n markDef: markDef,\n config: model === null || model === void 0 ? void 0 : model.config,\n scaleName: model.scaleName(channel),\n scale: model.getScaleComponent(channel),\n stack: null,\n defaultRef: signalOrValueRef(defaultValue),\n bandPosition: bandPosition\n });\n return {\n offsetType: 'encoding',\n offset: ref\n };\n }\n var markDefOffsetValue = markDef[channel];\n if (markDefOffsetValue) {\n return {\n offsetType: 'visual',\n offset: markDefOffsetValue\n };\n }\n return {};\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { getMainRangeChannel, getSecondaryRangeChannel, getSizeChannel, getVgPositionChannel, isXorY } from '../../../channel';\nimport { isFieldDef, isFieldOrDatumDef } from '../../../channeldef';\nimport { ScaleType } from '../../../scale';\nimport { contains } from '../../../util';\nimport { getMarkPropOrConfig } from '../../common';\nimport { positionOffset } from './offset';\nimport * as ref from './valueref';\n/**\n * Return encode for point (non-band) position channels.\n */\nexport function pointPosition(channel, model, _ref) {\n var defaultPos = _ref.defaultPos,\n vgChannel = _ref.vgChannel;\n var encoding = model.encoding,\n markDef = model.markDef,\n config = model.config,\n stack = model.stack;\n var channelDef = encoding[channel];\n var channel2Def = encoding[getSecondaryRangeChannel(channel)];\n var scaleName = model.scaleName(channel);\n var scale = model.getScaleComponent(channel);\n var _positionOffset = positionOffset({\n channel: channel,\n markDef: markDef,\n encoding: encoding,\n model: model,\n bandPosition: 0.5\n }),\n offset = _positionOffset.offset,\n offsetType = _positionOffset.offsetType;\n // Get default position or position from mark def\n var defaultRef = pointPositionDefaultRef({\n model: model,\n defaultPos: defaultPos,\n channel: channel,\n scaleName: scaleName,\n scale: scale\n });\n var valueRef = !channelDef && isXorY(channel) && (encoding.latitude || encoding.longitude) ?\n // use geopoint output if there are lat/long and there is no point position overriding lat/long.\n {\n field: model.getName(channel)\n } : positionRef({\n channel: channel,\n channelDef: channelDef,\n channel2Def: channel2Def,\n markDef: markDef,\n config: config,\n scaleName: scaleName,\n scale: scale,\n stack: stack,\n offset: offset,\n defaultRef: defaultRef,\n bandPosition: offsetType === 'encoding' ? 0 : undefined\n });\n return valueRef ? _defineProperty({}, vgChannel || channel, valueRef) : undefined;\n}\n// TODO: we need to find a way to refactor these so that scaleName is a part of scale\n// but that's complicated. For now, this is a huge step moving forward.\n/**\n * @return Vega ValueRef for normal x- or y-position without projection\n */\nexport function positionRef(params) {\n var channel = params.channel,\n channelDef = params.channelDef,\n scaleName = params.scaleName,\n stack = params.stack,\n offset = params.offset,\n markDef = params.markDef;\n // This isn't a part of midPoint because we use midPoint for non-position too\n if (isFieldOrDatumDef(channelDef) && stack && channel === stack.fieldChannel) {\n if (isFieldDef(channelDef)) {\n var bandPosition = channelDef.bandPosition;\n if (bandPosition === undefined && markDef.type === 'text' && (channel === 'radius' || channel === 'theta')) {\n // theta and radius of text mark should use bandPosition = 0.5 by default\n // so that labels for arc marks are centered automatically\n bandPosition = 0.5;\n }\n if (bandPosition !== undefined) {\n return ref.interpolatedSignalRef({\n scaleName: scaleName,\n fieldOrDatumDef: channelDef,\n startSuffix: 'start',\n bandPosition: bandPosition,\n offset: offset\n });\n }\n }\n // x or y use stack_end so that stacked line's point mark use stack_end too.\n return ref.valueRefForFieldOrDatumDef(channelDef, scaleName, {\n suffix: 'end'\n }, {\n offset: offset\n });\n }\n return ref.midPointRefWithPositionInvalidTest(params);\n}\nexport function pointPositionDefaultRef(_ref3) {\n var model = _ref3.model,\n defaultPos = _ref3.defaultPos,\n channel = _ref3.channel,\n scaleName = _ref3.scaleName,\n scale = _ref3.scale;\n var markDef = model.markDef,\n config = model.config;\n return function () {\n var mainChannel = getMainRangeChannel(channel);\n var vgChannel = getVgPositionChannel(channel);\n var definedValueOrConfig = getMarkPropOrConfig(channel, markDef, config, {\n vgChannel: vgChannel\n });\n if (definedValueOrConfig !== undefined) {\n return ref.widthHeightValueOrSignalRef(channel, definedValueOrConfig);\n }\n switch (defaultPos) {\n case 'zeroOrMin':\n case 'zeroOrMax':\n if (scaleName) {\n var scaleType = scale.get('type');\n if (contains([ScaleType.LOG, ScaleType.TIME, ScaleType.UTC], scaleType)) {\n // Log scales cannot have zero.\n // Zero in time scale is arbitrary, and does not affect ratio.\n // (Time is an interval level of measurement, not ratio).\n // See https://en.wikipedia.org/wiki/Level_of_measurement for more info.\n } else {\n if (scale.domainDefinitelyIncludesZero()) {\n return {\n scale: scaleName,\n value: 0\n };\n }\n }\n }\n if (defaultPos === 'zeroOrMin') {\n return mainChannel === 'y' ? {\n field: {\n group: 'height'\n }\n } : {\n value: 0\n };\n } else {\n // zeroOrMax\n switch (mainChannel) {\n case 'radius':\n // max of radius is min(width, height) / 2\n return {\n signal: \"min(\".concat(model.width.signal, \",\").concat(model.height.signal, \")/2\")\n };\n case 'theta':\n return {\n signal: '2*PI'\n };\n case 'x':\n return {\n field: {\n group: 'width'\n }\n };\n case 'y':\n return {\n value: 0\n };\n }\n }\n break;\n case 'mid':\n {\n var sizeRef = model[getSizeChannel(channel)];\n return _objectSpread(_objectSpread({}, sizeRef), {}, {\n mult: 0.5\n });\n }\n }\n // defaultPos === null\n return undefined;\n };\n}","import { getVgPositionChannel } from '../../../channel';\nimport * as log from '../../../log';\nimport { isSignalRef } from '../../../vega.schema';\nimport { getMarkPropOrConfig } from '../../common';\nvar ALIGNED_X_CHANNEL = {\n left: 'x',\n center: 'xc',\n right: 'x2'\n};\nvar BASELINED_Y_CHANNEL = {\n top: 'y',\n middle: 'yc',\n bottom: 'y2'\n};\nexport function vgAlignedPositionChannel(channel, markDef, config) {\n var defaultAlign = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'middle';\n if (channel === 'radius' || channel === 'theta') {\n return getVgPositionChannel(channel);\n }\n var alignChannel = channel === 'x' ? 'align' : 'baseline';\n var align = getMarkPropOrConfig(alignChannel, markDef, config);\n var alignExcludingSignal;\n if (isSignalRef(align)) {\n log.warn(log.message.rangeMarkAlignmentCannotBeExpression(alignChannel));\n alignExcludingSignal = undefined;\n } else {\n alignExcludingSignal = align;\n }\n if (channel === 'x') {\n return ALIGNED_X_CHANNEL[alignExcludingSignal || (defaultAlign === 'top' ? 'left' : 'center')];\n } else {\n return BASELINED_Y_CHANNEL[alignExcludingSignal || defaultAlign];\n }\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { getMainRangeChannel, getSecondaryRangeChannel, getSizeChannel, getVgPositionChannel } from '../../../channel';\nimport { isFieldOrDatumDef } from '../../../channeldef';\nimport * as log from '../../../log';\nimport { isRelativeBandSize } from '../../../mark';\nimport { getMarkStyleConfig } from '../../common';\nimport { positionOffset } from './offset';\nimport { vgAlignedPositionChannel } from './position-align';\nimport { pointPosition, pointPositionDefaultRef } from './position-point';\nimport * as ref from './valueref';\n/**\n * Utility for area/rule position, which can be either point or range.\n * (One of the axes should be point and the other should be range.)\n */\nexport function pointOrRangePosition(channel, model, _ref) {\n var defaultPos = _ref.defaultPos,\n defaultPos2 = _ref.defaultPos2,\n range = _ref.range;\n if (range) {\n return rangePosition(channel, model, {\n defaultPos: defaultPos,\n defaultPos2: defaultPos2\n });\n }\n return pointPosition(channel, model, {\n defaultPos: defaultPos\n });\n}\nexport function rangePosition(channel, model, _ref2) {\n var defaultPos = _ref2.defaultPos,\n defaultPos2 = _ref2.defaultPos2;\n var markDef = model.markDef,\n config = model.config;\n var channel2 = getSecondaryRangeChannel(channel);\n var sizeChannel = getSizeChannel(channel);\n var pos2Mixins = pointPosition2OrSize(model, defaultPos2, channel2);\n var vgChannel = pos2Mixins[sizeChannel] ?\n // If there is width/height, we need to position the marks based on the alignment.\n vgAlignedPositionChannel(channel, markDef, config) :\n // Otherwise, make sure to apply to the right Vg Channel (for arc mark)\n getVgPositionChannel(channel);\n return _objectSpread(_objectSpread({}, pointPosition(channel, model, {\n defaultPos: defaultPos,\n vgChannel: vgChannel\n })), pos2Mixins);\n}\n/**\n * Return encode for x2, y2.\n * If channel is not specified, return one channel based on orientation.\n */\nfunction pointPosition2OrSize(model, defaultPos, channel) {\n var _position2orSize;\n var encoding = model.encoding,\n mark = model.mark,\n markDef = model.markDef,\n stack = model.stack,\n config = model.config;\n var baseChannel = getMainRangeChannel(channel);\n var sizeChannel = getSizeChannel(channel);\n var vgChannel = getVgPositionChannel(channel);\n var channelDef = encoding[baseChannel];\n var scaleName = model.scaleName(baseChannel);\n var scale = model.getScaleComponent(baseChannel);\n var _ref3 = channel in encoding || channel in markDef ? positionOffset({\n channel: channel,\n markDef: markDef,\n encoding: encoding,\n model: model\n }) : positionOffset({\n channel: baseChannel,\n markDef: markDef,\n encoding: encoding,\n model: model\n }),\n offset = _ref3.offset;\n if (!channelDef && (channel === 'x2' || channel === 'y2') && (encoding.latitude || encoding.longitude)) {\n var vgSizeChannel = getSizeChannel(channel);\n var size = model.markDef[vgSizeChannel];\n if (size != null) {\n return _defineProperty({}, vgSizeChannel, {\n value: size\n });\n } else {\n return _defineProperty({}, vgChannel, {\n field: model.getName(channel)\n });\n }\n }\n var valueRef = position2Ref({\n channel: channel,\n channelDef: channelDef,\n channel2Def: encoding[channel],\n markDef: markDef,\n config: config,\n scaleName: scaleName,\n scale: scale,\n stack: stack,\n offset: offset,\n defaultRef: undefined\n });\n if (valueRef !== undefined) {\n return _defineProperty({}, vgChannel, valueRef);\n }\n // TODO: check width/height encoding here once we add them\n // no x2/y2 encoding, then try to read x2/y2 or width/height based on precedence:\n // markDef > config.style > mark-specific config (config[mark]) > general mark config (config.mark)\n return position2orSize(channel, markDef) || position2orSize(channel, (_position2orSize = {}, _defineProperty(_position2orSize, channel, getMarkStyleConfig(channel, markDef, config.style)), _defineProperty(_position2orSize, sizeChannel, getMarkStyleConfig(sizeChannel, markDef, config.style)), _position2orSize)) || position2orSize(channel, config[mark]) || position2orSize(channel, config.mark) || _defineProperty({}, vgChannel, pointPositionDefaultRef({\n model: model,\n defaultPos: defaultPos,\n channel: channel,\n scaleName: scaleName,\n scale: scale\n })());\n}\nexport function position2Ref(_ref8) {\n var channel = _ref8.channel,\n channelDef = _ref8.channelDef,\n channel2Def = _ref8.channel2Def,\n markDef = _ref8.markDef,\n config = _ref8.config,\n scaleName = _ref8.scaleName,\n scale = _ref8.scale,\n stack = _ref8.stack,\n offset = _ref8.offset,\n defaultRef = _ref8.defaultRef;\n if (isFieldOrDatumDef(channelDef) && stack &&\n // If fieldChannel is X and channel is X2 (or Y and Y2)\n channel.charAt(0) === stack.fieldChannel.charAt(0)) {\n return ref.valueRefForFieldOrDatumDef(channelDef, scaleName, {\n suffix: 'start'\n }, {\n offset: offset\n });\n }\n return ref.midPointRefWithPositionInvalidTest({\n channel: channel,\n channelDef: channel2Def,\n scaleName: scaleName,\n scale: scale,\n stack: stack,\n markDef: markDef,\n config: config,\n offset: offset,\n defaultRef: defaultRef\n });\n}\nfunction position2orSize(channel, markDef) {\n var sizeChannel = getSizeChannel(channel);\n var vgChannel = getVgPositionChannel(channel);\n if (markDef[vgChannel] !== undefined) {\n return _defineProperty({}, vgChannel, ref.widthHeightValueOrSignalRef(channel, markDef[vgChannel]));\n } else if (markDef[channel] !== undefined) {\n return _defineProperty({}, vgChannel, ref.widthHeightValueOrSignalRef(channel, markDef[channel]));\n } else if (markDef[sizeChannel]) {\n var dimensionSize = markDef[sizeChannel];\n if (isRelativeBandSize(dimensionSize)) {\n log.warn(log.message.relativeBandSizeNotSupported(sizeChannel));\n } else {\n return _defineProperty({}, sizeChannel, ref.widthHeightValueOrSignalRef(channel, dimensionSize));\n }\n }\n return undefined;\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { isArray, isNumber } from 'vega-util';\nimport { isBinned, isBinning, isBinParams } from '../../../bin';\nimport { getOffsetChannel, getSecondaryRangeChannel, getSizeChannel, getVgPositionChannel, isPolarPositionChannel, isXorY } from '../../../channel';\nimport { getBandSize, isFieldDef, isFieldOrDatumDef, vgField } from '../../../channeldef';\nimport { getViewConfigDiscreteStep } from '../../../config';\nimport * as log from '../../../log';\nimport { isRelativeBandSize } from '../../../mark';\nimport { hasDiscreteDomain } from '../../../scale';\nimport { isSignalRef, isVgRangeStep } from '../../../vega.schema';\nimport { getMarkConfig, getMarkPropOrConfig, signalOrStringValue, signalOrValueRef } from '../../common';\nimport { nonPosition } from './nonposition';\nimport { positionOffset } from './offset';\nimport { vgAlignedPositionChannel } from './position-align';\nimport { pointPositionDefaultRef } from './position-point';\nimport { rangePosition } from './position-range';\nimport * as ref from './valueref';\nimport { getOffsetScaleChannel } from '../../../channel';\nimport { getFirstDefined } from '../../../util';\nexport function rectPosition(model, channel) {\n var _ref, _encoding$sizeChannel;\n var config = model.config,\n encoding = model.encoding,\n markDef = model.markDef;\n var mark = markDef.type;\n var channel2 = getSecondaryRangeChannel(channel);\n var sizeChannel = getSizeChannel(channel);\n var channelDef = encoding[channel];\n var channelDef2 = encoding[channel2];\n var scale = model.getScaleComponent(channel);\n var scaleType = scale ? scale.get('type') : undefined;\n var orient = markDef.orient;\n var hasSizeDef = (_ref = (_encoding$sizeChannel = encoding[sizeChannel]) !== null && _encoding$sizeChannel !== void 0 ? _encoding$sizeChannel : encoding.size) !== null && _ref !== void 0 ? _ref : getMarkPropOrConfig('size', markDef, config, {\n vgChannel: sizeChannel\n });\n var offsetScaleChannel = getOffsetChannel(channel);\n var isBarBand = mark === 'bar' && (channel === 'x' ? orient === 'vertical' : orient === 'horizontal');\n // x, x2, and width -- we must specify two of these in all conditions\n if (isFieldDef(channelDef) && (isBinning(channelDef.bin) || isBinned(channelDef.bin) || channelDef.timeUnit && !channelDef2) && !(hasSizeDef && !isRelativeBandSize(hasSizeDef)) && !encoding[offsetScaleChannel] && !hasDiscreteDomain(scaleType)) {\n return rectBinPosition({\n fieldDef: channelDef,\n fieldDef2: channelDef2,\n channel: channel,\n model: model\n });\n } else if ((isFieldOrDatumDef(channelDef) && hasDiscreteDomain(scaleType) || isBarBand) && !channelDef2) {\n return positionAndSize(channelDef, channel, model);\n } else {\n return rangePosition(channel, model, {\n defaultPos: 'zeroOrMax',\n defaultPos2: 'zeroOrMin'\n });\n }\n}\nfunction defaultSizeRef(sizeChannel, scaleName, scale, config, bandSize, hasFieldDef, mark) {\n if (isRelativeBandSize(bandSize)) {\n if (scale) {\n var scaleType = scale.get('type');\n if (scaleType === 'band') {\n var bandWidth = \"bandwidth('\".concat(scaleName, \"')\");\n if (bandSize.band !== 1) {\n bandWidth = \"\".concat(bandSize.band, \" * \").concat(bandWidth);\n }\n var minBandSize = getMarkConfig('minBandSize', {\n type: mark\n }, config);\n return {\n signal: minBandSize ? \"max(\".concat(signalOrStringValue(minBandSize), \", \").concat(bandWidth, \")\") : bandWidth\n };\n } else if (bandSize.band !== 1) {\n log.warn(log.message.cannotUseRelativeBandSizeWithNonBandScale(scaleType));\n bandSize = undefined;\n }\n } else {\n return {\n mult: bandSize.band,\n field: {\n group: sizeChannel\n }\n };\n }\n } else if (isSignalRef(bandSize)) {\n return bandSize;\n } else if (bandSize) {\n return {\n value: bandSize\n };\n }\n // no valid band size\n if (scale) {\n var scaleRange = scale.get('range');\n if (isVgRangeStep(scaleRange) && isNumber(scaleRange.step)) {\n return {\n value: scaleRange.step - 2\n };\n }\n }\n if (!hasFieldDef) {\n var _config$scale = config.scale,\n bandPaddingInner = _config$scale.bandPaddingInner,\n barBandPaddingInner = _config$scale.barBandPaddingInner,\n rectBandPaddingInner = _config$scale.rectBandPaddingInner;\n var padding = getFirstDefined(bandPaddingInner, mark === 'bar' ? barBandPaddingInner : rectBandPaddingInner); // this part is like paddingInner in scale.ts\n if (isSignalRef(padding)) {\n return {\n signal: \"(1 - (\".concat(padding.signal, \")) * \").concat(sizeChannel)\n };\n } else if (isNumber(padding)) {\n return {\n signal: \"\".concat(1 - padding, \" * \").concat(sizeChannel)\n };\n }\n }\n var defaultStep = getViewConfigDiscreteStep(config.view, sizeChannel);\n return {\n value: defaultStep - 2\n };\n}\n/**\n * Output position encoding and its size encoding for continuous, point, and band scales.\n */\nfunction positionAndSize(fieldDef, channel, model) {\n var markDef = model.markDef,\n encoding = model.encoding,\n config = model.config,\n stack = model.stack;\n var orient = markDef.orient;\n var scaleName = model.scaleName(channel);\n var scale = model.getScaleComponent(channel);\n var vgSizeChannel = getSizeChannel(channel);\n var channel2 = getSecondaryRangeChannel(channel);\n var offsetScaleChannel = getOffsetChannel(channel);\n var offsetScaleName = model.scaleName(offsetScaleChannel);\n var offsetScale = model.getScaleComponent(getOffsetScaleChannel(channel));\n // use \"size\" channel for bars, if there is orient and the channel matches the right orientation\n var useVlSizeChannel = orient === 'horizontal' && channel === 'y' || orient === 'vertical' && channel === 'x';\n // Use size encoding / mark property / config if it exists\n var sizeMixins;\n if (encoding.size || markDef.size) {\n if (useVlSizeChannel) {\n sizeMixins = nonPosition('size', model, {\n vgChannel: vgSizeChannel,\n defaultRef: signalOrValueRef(markDef.size)\n });\n } else {\n log.warn(log.message.cannotApplySizeToNonOrientedMark(markDef.type));\n }\n }\n var hasSizeFromMarkOrEncoding = !!sizeMixins;\n // Otherwise, apply default value\n var bandSize = getBandSize({\n channel: channel,\n fieldDef: fieldDef,\n markDef: markDef,\n config: config,\n scaleType: scale === null || scale === void 0 ? void 0 : scale.get('type'),\n useVlSizeChannel: useVlSizeChannel\n });\n sizeMixins = sizeMixins || _defineProperty({}, vgSizeChannel, defaultSizeRef(vgSizeChannel, offsetScaleName || scaleName, offsetScale || scale, config, bandSize, !!fieldDef, markDef.type));\n /*\n Band scales with size value and all point scales, use xc/yc + band=0.5\n Otherwise (band scales that has size based on a band ref), use x/y with position band = (1 - size_band) / 2.\n In this case, size_band is the band specified in the x/y-encoding.\n By default band is 1, so `(1 - band) / 2` = 0.\n If band is 0.6, the the x/y position in such case should be `(1 - band) / 2` = 0.2\n */\n var defaultBandAlign = (scale === null || scale === void 0 ? void 0 : scale.get('type')) === 'band' && isRelativeBandSize(bandSize) && !hasSizeFromMarkOrEncoding ? 'top' : 'middle';\n var vgChannel = vgAlignedPositionChannel(channel, markDef, config, defaultBandAlign);\n var center = vgChannel === 'xc' || vgChannel === 'yc';\n var _positionOffset = positionOffset({\n channel: channel,\n markDef: markDef,\n encoding: encoding,\n model: model,\n bandPosition: center ? 0.5 : 0\n }),\n offset = _positionOffset.offset,\n offsetType = _positionOffset.offsetType;\n var posRef = ref.midPointRefWithPositionInvalidTest({\n channel: channel,\n channelDef: fieldDef,\n markDef: markDef,\n config: config,\n scaleName: scaleName,\n scale: scale,\n stack: stack,\n offset: offset,\n defaultRef: pointPositionDefaultRef({\n model: model,\n defaultPos: 'mid',\n channel: channel,\n scaleName: scaleName,\n scale: scale\n }),\n bandPosition: center ? offsetType === 'encoding' ? 0 : 0.5 : isSignalRef(bandSize) ? {\n signal: \"(1-\".concat(bandSize, \")/2\")\n } : isRelativeBandSize(bandSize) ? (1 - bandSize.band) / 2 : 0\n });\n if (vgSizeChannel) {\n return _objectSpread(_defineProperty({}, vgChannel, posRef), sizeMixins);\n } else {\n var _ref3;\n // otherwise, we must simulate size by setting position2 = position + size\n // (for theta/radius since Vega doesn't have thetaWidth/radiusWidth)\n var vgChannel2 = getVgPositionChannel(channel2);\n var sizeRef = sizeMixins[vgSizeChannel];\n var sizeOffset = offset ? _objectSpread(_objectSpread({}, sizeRef), {}, {\n offset: offset\n }) : sizeRef;\n return _ref3 = {}, _defineProperty(_ref3, vgChannel, posRef), _defineProperty(_ref3, vgChannel2, isArray(posRef) ? [posRef[0], _objectSpread(_objectSpread({}, posRef[1]), {}, {\n offset: sizeOffset\n })] : _objectSpread(_objectSpread({}, posRef), {}, {\n offset: sizeOffset\n })), _ref3;\n }\n}\nfunction getBinSpacing(channel, spacing, reverse, translate, offset, minBandSize, bandSizeExpr) {\n if (isPolarPositionChannel(channel)) {\n return 0;\n }\n var isEnd = channel === 'x' || channel === 'y2';\n var spacingOffset = isEnd ? -spacing / 2 : spacing / 2;\n if (isSignalRef(reverse) || isSignalRef(offset) || isSignalRef(translate) || minBandSize) {\n var reverseExpr = signalOrStringValue(reverse);\n var offsetExpr = signalOrStringValue(offset);\n var translateExpr = signalOrStringValue(translate);\n var minBandSizeExpr = signalOrStringValue(minBandSize);\n var sign = isEnd ? '' : '-';\n var spacingAndSizeOffset = minBandSize ? \"(\".concat(bandSizeExpr, \" < \").concat(minBandSizeExpr, \" ? \").concat(sign, \"0.5 * (\").concat(minBandSizeExpr, \" - (\").concat(bandSizeExpr, \")) : \").concat(spacingOffset, \")\") : spacingOffset;\n var t = translateExpr ? \"\".concat(translateExpr, \" + \") : '';\n var r = reverseExpr ? \"(\".concat(reverseExpr, \" ? -1 : 1) * \") : '';\n var o = offsetExpr ? \"(\".concat(offsetExpr, \" + \").concat(spacingAndSizeOffset, \")\") : spacingAndSizeOffset;\n return {\n signal: t + r + o\n };\n } else {\n offset = offset || 0;\n return translate + (reverse ? -offset - spacingOffset : +offset + spacingOffset);\n }\n}\nfunction rectBinPosition(_ref4) {\n var _model$component$axes, _axis$get, _getMarkPropOrConfig;\n var fieldDef = _ref4.fieldDef,\n fieldDef2 = _ref4.fieldDef2,\n channel = _ref4.channel,\n model = _ref4.model;\n var config = model.config,\n markDef = model.markDef,\n encoding = model.encoding;\n var scale = model.getScaleComponent(channel);\n var scaleName = model.scaleName(channel);\n var scaleType = scale ? scale.get('type') : undefined;\n var reverse = scale.get('reverse');\n var bandSize = getBandSize({\n channel: channel,\n fieldDef: fieldDef,\n markDef: markDef,\n config: config,\n scaleType: scaleType\n });\n var axis = (_model$component$axes = model.component.axes[channel]) === null || _model$component$axes === void 0 ? void 0 : _model$component$axes[0];\n var axisTranslate = (_axis$get = axis === null || axis === void 0 ? void 0 : axis.get('translate')) !== null && _axis$get !== void 0 ? _axis$get : 0.5; // vega default is 0.5\n var spacing = isXorY(channel) ? (_getMarkPropOrConfig = getMarkPropOrConfig('binSpacing', markDef, config)) !== null && _getMarkPropOrConfig !== void 0 ? _getMarkPropOrConfig : 0 : 0;\n var channel2 = getSecondaryRangeChannel(channel);\n var vgChannel = getVgPositionChannel(channel);\n var vgChannel2 = getVgPositionChannel(channel2);\n var minBandSize = getMarkConfig('minBandSize', markDef, config);\n var _positionOffset2 = positionOffset({\n channel: channel,\n markDef: markDef,\n encoding: encoding,\n model: model,\n bandPosition: 0\n }),\n offset = _positionOffset2.offset;\n var _positionOffset3 = positionOffset({\n channel: channel2,\n markDef: markDef,\n encoding: encoding,\n model: model,\n bandPosition: 0\n }),\n offset2 = _positionOffset3.offset;\n var bandSizeExpr = ref.binSizeExpr({\n fieldDef: fieldDef,\n scaleName: scaleName\n });\n var binSpacingOffset = getBinSpacing(channel, spacing, reverse, axisTranslate, offset, minBandSize, bandSizeExpr);\n var binSpacingOffset2 = getBinSpacing(channel2, spacing, reverse, axisTranslate, offset2 !== null && offset2 !== void 0 ? offset2 : offset, minBandSize, bandSizeExpr);\n var bandPosition = isSignalRef(bandSize) ? {\n signal: \"(1-\".concat(bandSize.signal, \")/2\")\n } : isRelativeBandSize(bandSize) ? (1 - bandSize.band) / 2 : 0.5;\n if (isBinning(fieldDef.bin) || fieldDef.timeUnit) {\n var _ref5;\n return _ref5 = {}, _defineProperty(_ref5, vgChannel2, rectBinRef({\n fieldDef: fieldDef,\n scaleName: scaleName,\n bandPosition: bandPosition,\n offset: binSpacingOffset2\n })), _defineProperty(_ref5, vgChannel, rectBinRef({\n fieldDef: fieldDef,\n scaleName: scaleName,\n bandPosition: isSignalRef(bandPosition) ? {\n signal: \"1-\".concat(bandPosition.signal)\n } : 1 - bandPosition,\n offset: binSpacingOffset\n })), _ref5;\n } else if (isBinned(fieldDef.bin)) {\n var startRef = ref.valueRefForFieldOrDatumDef(fieldDef, scaleName, {}, {\n offset: binSpacingOffset2\n });\n if (isFieldDef(fieldDef2)) {\n var _ref6;\n return _ref6 = {}, _defineProperty(_ref6, vgChannel2, startRef), _defineProperty(_ref6, vgChannel, ref.valueRefForFieldOrDatumDef(fieldDef2, scaleName, {}, {\n offset: binSpacingOffset\n })), _ref6;\n } else if (isBinParams(fieldDef.bin) && fieldDef.bin.step) {\n var _ref7;\n return _ref7 = {}, _defineProperty(_ref7, vgChannel2, startRef), _defineProperty(_ref7, vgChannel, {\n signal: \"scale(\\\"\".concat(scaleName, \"\\\", \").concat(vgField(fieldDef, {\n expr: 'datum'\n }), \" + \").concat(fieldDef.bin.step, \")\"),\n offset: binSpacingOffset\n }), _ref7;\n }\n }\n log.warn(log.message.channelRequiredForBinned(channel2));\n return undefined;\n}\n/**\n * Value Ref for binned fields\n */\nexport function rectBinRef(_ref8) {\n var fieldDef = _ref8.fieldDef,\n scaleName = _ref8.scaleName,\n bandPosition = _ref8.bandPosition,\n offset = _ref8.offset;\n return ref.interpolatedSignalRef({\n scaleName: scaleName,\n fieldOrDatumDef: fieldDef,\n bandPosition: bandPosition,\n offset: offset\n });\n}","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { array } from 'vega-util';\nimport { SCALE_CHANNELS } from '../../../channel';\nimport { isPathMark } from '../../../mark';\nimport { hasContinuousDomain } from '../../../scale';\nimport { keys } from '../../../util';\nimport { VG_MARK_CONFIGS } from '../../../vega.schema';\nimport { getMarkPropOrConfig, signalOrValueRef } from '../../common';\nimport { aria } from './aria';\nimport { color } from './color';\nimport { nonPosition } from './nonposition';\nimport { text } from './text';\nimport { tooltip } from './tooltip';\nimport { fieldInvalidPredicate } from './valueref';\nimport { zindex } from './zindex';\nexport { color } from './color';\nexport { wrapCondition } from './conditional';\nexport { nonPosition } from './nonposition';\nexport { pointPosition } from './position-point';\nexport { pointOrRangePosition, rangePosition } from './position-range';\nexport { rectPosition } from './position-rect';\nexport { text } from './text';\nexport { tooltip } from './tooltip';\nvar ALWAYS_IGNORE = new Set(['aria', 'width', 'height']);\nexport function baseEncodeEntry(model, ignore) {\n var _ref = ignore.color === 'include' ? color(model) : {},\n _ref$fill = _ref.fill,\n fill = _ref$fill === void 0 ? undefined : _ref$fill,\n _ref$stroke = _ref.stroke,\n stroke = _ref$stroke === void 0 ? undefined : _ref$stroke;\n return _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, markDefProperties(model.markDef, ignore)), wrapAllFieldsInvalid(model, 'fill', fill)), wrapAllFieldsInvalid(model, 'stroke', stroke)), nonPosition('opacity', model)), nonPosition('fillOpacity', model)), nonPosition('strokeOpacity', model)), nonPosition('strokeWidth', model)), nonPosition('strokeDash', model)), zindex(model)), tooltip(model)), text(model, 'href')), aria(model));\n}\n// TODO: mark VgValueRef[] as readonly after https://github.com/vega/vega/pull/1987\nfunction wrapAllFieldsInvalid(model, channel, valueRef) {\n var config = model.config,\n mark = model.mark,\n markDef = model.markDef;\n var invalid = getMarkPropOrConfig('invalid', markDef, config);\n if (invalid === 'hide' && valueRef && !isPathMark(mark)) {\n // For non-path marks, we have to exclude invalid values (null and NaN) for scales with continuous domains.\n // For path marks, we will use \"defined\" property and skip these values instead.\n var test = allFieldsInvalidPredicate(model, {\n invalid: true,\n channels: SCALE_CHANNELS\n });\n if (test) {\n return _defineProperty({}, channel, [\n // prepend the invalid case\n // TODO: support custom value\n {\n test: test,\n value: null\n }].concat(_toConsumableArray(array(valueRef))));\n }\n }\n return valueRef ? _defineProperty({}, channel, valueRef) : {};\n}\nfunction markDefProperties(mark, ignore) {\n return VG_MARK_CONFIGS.reduce(function (m, prop) {\n if (!ALWAYS_IGNORE.has(prop) && mark[prop] !== undefined && ignore[prop] !== 'ignore') {\n m[prop] = signalOrValueRef(mark[prop]);\n }\n return m;\n }, {});\n}\nfunction allFieldsInvalidPredicate(model, _ref4) {\n var _ref4$invalid = _ref4.invalid,\n invalid = _ref4$invalid === void 0 ? false : _ref4$invalid,\n channels = _ref4.channels;\n var filterIndex = channels.reduce(function (aggregator, channel) {\n var scaleComponent = model.getScaleComponent(channel);\n if (scaleComponent) {\n var scaleType = scaleComponent.get('type');\n var field = model.vgField(channel, {\n expr: 'datum'\n });\n // While discrete domain scales can handle invalid values, continuous scales can't.\n if (field && hasContinuousDomain(scaleType)) {\n aggregator[field] = true;\n }\n }\n return aggregator;\n }, {});\n var fields = keys(filterIndex);\n if (fields.length > 0) {\n var op = invalid ? '||' : '&&';\n return fields.map(function (field) {\n return fieldInvalidPredicate(field, invalid);\n }).join(\" \".concat(op, \" \"));\n }\n return undefined;\n}","import { isValueDef } from '../../../channeldef';\nimport { isPathMark } from '../../../mark';\nimport { signalOrValueRef } from '../../common';\nimport { wrapCondition } from './conditional';\nexport function zindex(model) {\n var encoding = model.encoding,\n mark = model.mark;\n var order = encoding.order;\n if (!isPathMark(mark) && isValueDef(order)) {\n return wrapCondition(model, order, 'zindex', function (cd) {\n return signalOrValueRef(cd.value);\n });\n }\n return {};\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { POSITION_SCALE_CHANNELS } from '../../../channel';\nimport { hasContinuousDomain } from '../../../scale';\nimport { keys } from '../../../util';\nimport { getMarkPropOrConfig, signalOrValueRef } from '../../common';\nimport { fieldInvalidPredicate } from './valueref';\nexport function defined(model) {\n var config = model.config,\n markDef = model.markDef;\n var invalid = getMarkPropOrConfig('invalid', markDef, config);\n if (invalid) {\n var signal = allFieldsInvalidPredicate(model, {\n channels: POSITION_SCALE_CHANNELS\n });\n if (signal) {\n return {\n defined: {\n signal: signal\n }\n };\n }\n }\n return {};\n}\nfunction allFieldsInvalidPredicate(model, _ref) {\n var _ref$invalid = _ref.invalid,\n invalid = _ref$invalid === void 0 ? false : _ref$invalid,\n channels = _ref.channels;\n var filterIndex = channels.reduce(function (aggregator, channel) {\n var scaleComponent = model.getScaleComponent(channel);\n if (scaleComponent) {\n var _model$stack;\n var scaleType = scaleComponent.get('type');\n var field = model.vgField(channel, {\n expr: 'datum',\n binSuffix: (_model$stack = model.stack) !== null && _model$stack !== void 0 && _model$stack.impute ? 'mid' : undefined\n });\n // While discrete domain scales can handle invalid values, continuous scales can't.\n if (field && hasContinuousDomain(scaleType)) {\n aggregator[field] = true;\n }\n }\n return aggregator;\n }, {});\n var fields = keys(filterIndex);\n if (fields.length > 0) {\n var op = invalid ? '||' : '&&';\n return fields.map(function (field) {\n return fieldInvalidPredicate(field, invalid);\n }).join(\" \".concat(op, \" \"));\n }\n return undefined;\n}\nexport function valueIfDefined(prop, value) {\n if (value !== undefined) {\n return _defineProperty({}, prop, signalOrValueRef(value));\n }\n return undefined;\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport * as log from '../../log';\nimport { isPathMark } from '../../mark';\nimport { tooltip } from '../mark/encode';\nvar VORONOI = 'voronoi';\nvar nearest = {\n defined: function defined(selCmpt) {\n return selCmpt.type === 'point' && selCmpt.nearest;\n },\n parse: function parse(model, selCmpt) {\n // Scope selection events to the voronoi mark to prevent capturing\n // events that occur on the group mark (https://github.com/vega/vega/issues/2112).\n if (selCmpt.events) {\n var _iterator = _createForOfIteratorHelper(selCmpt.events),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var s = _step.value;\n s.markname = model.getName(VORONOI);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n },\n marks: function marks(model, selCmpt, _marks) {\n var _selCmpt$project$hasC = selCmpt.project.hasChannel,\n x = _selCmpt$project$hasC.x,\n y = _selCmpt$project$hasC.y;\n var markType = model.mark;\n if (isPathMark(markType)) {\n log.warn(log.message.nearestNotSupportForContinuous(markType));\n return _marks;\n }\n var cellDef = {\n name: model.getName(VORONOI),\n type: 'path',\n interactive: true,\n from: {\n data: model.getName('marks')\n },\n encode: {\n update: _objectSpread({\n fill: {\n value: 'transparent'\n },\n strokeWidth: {\n value: 0.35\n },\n stroke: {\n value: 'transparent'\n },\n isVoronoi: {\n value: true\n }\n }, tooltip(model, {\n reactiveGeom: true\n }))\n },\n transform: [{\n type: 'voronoi',\n x: {\n expr: x || !y ? 'datum.datum.x || 0' : '0'\n },\n y: {\n expr: y || !x ? 'datum.datum.y || 0' : '0'\n },\n size: [model.getSizeSignalRef('width'), model.getSizeSignalRef('height')]\n }]\n };\n var index = 0;\n var exists = false;\n _marks.forEach(function (mark, i) {\n var _mark$name;\n var name = (_mark$name = mark.name) !== null && _mark$name !== void 0 ? _mark$name : '';\n if (name === model.component.mark[0].name) {\n index = i;\n } else if (name.indexOf(VORONOI) >= 0) {\n exists = true;\n }\n });\n if (!exists) {\n _marks.splice(index + 1, 0, cellDef);\n }\n return _marks;\n }\n};\nexport default nearest;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { stringValue } from 'vega-util';\nimport { disableDirectManipulation, TUPLE } from '.';\nimport { varName } from '../../util';\nimport { assembleInit } from './assemble';\nimport nearest from './nearest';\nimport { TUPLE_FIELDS } from './project';\nimport { isLegendBinding } from '../../selection';\nvar inputBindings = {\n defined: function defined(selCmpt) {\n return selCmpt.type === 'point' && selCmpt.resolve === 'global' && selCmpt.bind && selCmpt.bind !== 'scales' && !isLegendBinding(selCmpt.bind);\n },\n parse: function parse(model, selCmpt, selDef) {\n return disableDirectManipulation(selCmpt, selDef);\n },\n topLevelSignals: function topLevelSignals(model, selCmpt, signals) {\n var name = selCmpt.name;\n var proj = selCmpt.project;\n var bind = selCmpt.bind;\n var init = selCmpt.init && selCmpt.init[0]; // Can only exist on single selections (one initial value).\n var datum = nearest.defined(selCmpt) ? '(item().isVoronoi ? datum.datum : datum)' : 'datum';\n proj.items.forEach(function (p, i) {\n var sgname = varName(\"\".concat(name, \"_\").concat(p.field));\n var hasSignal = signals.filter(function (s) {\n return s.name === sgname;\n });\n if (!hasSignal.length) {\n var _ref, _bind$p$field;\n signals.unshift(_objectSpread(_objectSpread({\n name: sgname\n }, init ? {\n init: assembleInit(init[i])\n } : {\n value: null\n }), {}, {\n on: selCmpt.events ? [{\n events: selCmpt.events,\n update: \"datum && item().mark.marktype !== 'group' ? \".concat(datum, \"[\").concat(stringValue(p.field), \"] : null\")\n }] : [],\n bind: (_ref = (_bind$p$field = bind[p.field]) !== null && _bind$p$field !== void 0 ? _bind$p$field : bind[p.channel]) !== null && _ref !== void 0 ? _ref : bind\n }));\n }\n });\n return signals;\n },\n signals: function signals(model, selCmpt, _signals) {\n var name = selCmpt.name;\n var proj = selCmpt.project;\n var signal = _signals.filter(function (s) {\n return s.name === name + TUPLE;\n })[0];\n var fields = name + TUPLE_FIELDS;\n var values = proj.items.map(function (p) {\n return varName(\"\".concat(name, \"_\").concat(p.field));\n });\n var valid = values.map(function (v) {\n return \"\".concat(v, \" !== null\");\n }).join(' && ');\n if (values.length) {\n signal.update = \"\".concat(valid, \" ? {fields: \").concat(fields, \", values: [\").concat(values.join(', '), \"]} : null\");\n }\n delete signal.value;\n delete signal.on;\n return _signals;\n }\n};\nexport default inputBindings;","import { TUPLE, unitName } from '.';\nexport var TOGGLE = '_toggle';\nvar toggle = {\n defined: function defined(selCmpt) {\n return selCmpt.type === 'point' && !!selCmpt.toggle;\n },\n signals: function signals(model, selCmpt, _signals) {\n return _signals.concat({\n name: selCmpt.name + TOGGLE,\n value: false,\n on: [{\n events: selCmpt.events,\n update: selCmpt.toggle\n }]\n });\n },\n modifyExpr: function modifyExpr(model, selCmpt) {\n var tpl = selCmpt.name + TUPLE;\n var signal = selCmpt.name + TOGGLE;\n return \"\".concat(signal, \" ? null : \").concat(tpl, \", \") + (selCmpt.resolve === 'global' ? \"\".concat(signal, \" ? null : true, \") : \"\".concat(signal, \" ? null : {unit: \").concat(unitName(model), \"}, \")) + \"\".concat(signal, \" ? \").concat(tpl, \" : null\");\n }\n};\nexport default toggle;","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { parseSelector } from 'vega-event-selector';\nimport { isString } from 'vega-util';\nimport { TUPLE } from '.';\nimport { varName } from '../../util';\nimport inputBindings from './inputs';\nimport toggle, { TOGGLE } from './toggle';\nvar clear = {\n defined: function defined(selCmpt) {\n return selCmpt.clear !== undefined && selCmpt.clear !== false;\n },\n parse: function parse(model, selCmpt) {\n if (selCmpt.clear) {\n selCmpt.clear = isString(selCmpt.clear) ? parseSelector(selCmpt.clear, 'view') : selCmpt.clear;\n }\n },\n topLevelSignals: function topLevelSignals(model, selCmpt, signals) {\n if (inputBindings.defined(selCmpt)) {\n var _iterator = _createForOfIteratorHelper(selCmpt.project.items),\n _step;\n try {\n var _loop = function _loop() {\n var proj = _step.value;\n var idx = signals.findIndex(function (n) {\n return n.name === varName(\"\".concat(selCmpt.name, \"_\").concat(proj.field));\n });\n if (idx !== -1) {\n signals[idx].on.push({\n events: selCmpt.clear,\n update: 'null'\n });\n }\n };\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n _loop();\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n return signals;\n },\n signals: function signals(model, selCmpt, _signals) {\n function addClear(idx, update) {\n if (idx !== -1 && _signals[idx].on) {\n _signals[idx].on.push({\n events: selCmpt.clear,\n update: update\n });\n }\n }\n // Be as minimalist as possible when adding clear triggers to minimize dataflow execution.\n if (selCmpt.type === 'interval') {\n var _iterator2 = _createForOfIteratorHelper(selCmpt.project.items),\n _step2;\n try {\n var _loop2 = function _loop2() {\n var proj = _step2.value;\n var vIdx = _signals.findIndex(function (n) {\n return n.name === proj.signals.visual;\n });\n addClear(vIdx, '[0, 0]');\n if (vIdx === -1) {\n var dIdx = _signals.findIndex(function (n) {\n return n.name === proj.signals.data;\n });\n addClear(dIdx, 'null');\n }\n };\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n _loop2();\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n } else {\n var tIdx = _signals.findIndex(function (n) {\n return n.name === selCmpt.name + TUPLE;\n });\n addClear(tIdx, 'null');\n if (toggle.defined(selCmpt)) {\n tIdx = _signals.findIndex(function (n) {\n return n.name === selCmpt.name + TOGGLE;\n });\n addClear(tIdx, 'false');\n }\n }\n return _signals;\n }\n};\nexport default clear;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { isObject } from 'vega';\nimport { parseSelector } from 'vega-event-selector';\nimport { array, isString } from 'vega-util';\nimport { disableDirectManipulation, TUPLE } from '.';\nimport * as log from '../../log';\nimport { isLegendBinding, isLegendStreamBinding, SELECTION_ID } from '../../selection';\nimport { duplicate, vals, varName } from '../../util';\nimport { TUPLE_FIELDS } from './project';\nimport { TOGGLE } from './toggle';\nvar legendBindings = {\n defined: function defined(selCmpt) {\n var spec = selCmpt.resolve === 'global' && selCmpt.bind && isLegendBinding(selCmpt.bind);\n var projLen = selCmpt.project.items.length === 1 && selCmpt.project.items[0].field !== SELECTION_ID;\n if (spec && !projLen) {\n log.warn(log.message.LEGEND_BINDINGS_MUST_HAVE_PROJECTION);\n }\n return spec && projLen;\n },\n parse: function parse(model, selCmpt, selDef) {\n // Allow legend items to be toggleable by default even though direct manipulation is disabled.\n var selDef_ = duplicate(selDef);\n selDef_.select = isString(selDef_.select) ? {\n type: selDef_.select,\n toggle: selCmpt.toggle\n } : _objectSpread(_objectSpread({}, selDef_.select), {}, {\n toggle: selCmpt.toggle\n });\n disableDirectManipulation(selCmpt, selDef_);\n if (isObject(selDef.select) && (selDef.select.on || selDef.select.clear)) {\n var legendFilter = 'event.item && indexof(event.item.mark.role, \"legend\") < 0';\n var _iterator = _createForOfIteratorHelper(selCmpt.events),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _evt$filter;\n var _evt = _step.value;\n _evt.filter = array((_evt$filter = _evt.filter) !== null && _evt$filter !== void 0 ? _evt$filter : []);\n if (!_evt.filter.includes(legendFilter)) {\n _evt.filter.push(legendFilter);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n var evt = isLegendStreamBinding(selCmpt.bind) ? selCmpt.bind.legend : 'click';\n var stream = isString(evt) ? parseSelector(evt, 'view') : array(evt);\n selCmpt.bind = {\n legend: {\n merge: stream\n }\n };\n },\n topLevelSignals: function topLevelSignals(model, selCmpt, signals) {\n var selName = selCmpt.name;\n var stream = isLegendStreamBinding(selCmpt.bind) && selCmpt.bind.legend;\n var markName = function markName(name) {\n return function (s) {\n var ds = duplicate(s);\n ds.markname = name;\n return ds;\n };\n };\n var _iterator2 = _createForOfIteratorHelper(selCmpt.project.items),\n _step2;\n try {\n var _loop = function _loop() {\n var proj = _step2.value;\n if (!proj.hasLegend) return \"continue\";\n var prefix = \"\".concat(varName(proj.field), \"_legend\");\n var sgName = \"\".concat(selName, \"_\").concat(prefix);\n var hasSignal = signals.filter(function (s) {\n return s.name === sgName;\n });\n if (hasSignal.length === 0) {\n var events = stream.merge.map(markName(\"\".concat(prefix, \"_symbols\"))).concat(stream.merge.map(markName(\"\".concat(prefix, \"_labels\")))).concat(stream.merge.map(markName(\"\".concat(prefix, \"_entries\"))));\n signals.unshift(_objectSpread(_objectSpread({\n name: sgName\n }, !selCmpt.init ? {\n value: null\n } : {}), {}, {\n on: [\n // Legend entries do not store values, so we need to walk the scenegraph to the symbol datum.\n {\n events: events,\n update: 'isDefined(datum.value) ? datum.value : item().items[0].items[0].datum.value',\n force: true\n }, {\n events: stream.merge,\n update: \"!event.item || !datum ? null : \".concat(sgName),\n force: true\n }]\n }));\n }\n };\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _ret = _loop();\n if (_ret === \"continue\") continue;\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n return signals;\n },\n signals: function signals(model, selCmpt, _signals) {\n var name = selCmpt.name;\n var proj = selCmpt.project;\n var tuple = _signals.find(function (s) {\n return s.name === name + TUPLE;\n });\n var fields = name + TUPLE_FIELDS;\n var values = proj.items.filter(function (p) {\n return p.hasLegend;\n }).map(function (p) {\n return varName(\"\".concat(name, \"_\").concat(varName(p.field), \"_legend\"));\n });\n var valid = values.map(function (v) {\n return \"\".concat(v, \" !== null\");\n }).join(' && ');\n var update = \"\".concat(valid, \" ? {fields: \").concat(fields, \", values: [\").concat(values.join(', '), \"]} : null\");\n if (selCmpt.events && values.length > 0) {\n tuple.on.push({\n events: values.map(function (signal) {\n return {\n signal: signal\n };\n }),\n update: update\n });\n } else if (values.length > 0) {\n tuple.update = update;\n delete tuple.value;\n delete tuple.on;\n }\n var toggle = _signals.find(function (s) {\n return s.name === name + TOGGLE;\n });\n var events = isLegendStreamBinding(selCmpt.bind) && selCmpt.bind.legend;\n if (toggle) {\n if (!selCmpt.events) toggle.on[0].events = events;else toggle.on.push(_objectSpread(_objectSpread({}, toggle.on[0]), {}, {\n events: events\n }));\n }\n return _signals;\n }\n};\nexport default legendBindings;\nexport function parseInteractiveLegend(model, channel, legendCmpt) {\n var _model$fieldDef, _model$component$sele;\n var field = (_model$fieldDef = model.fieldDef(channel)) === null || _model$fieldDef === void 0 ? void 0 : _model$fieldDef.field;\n var _iterator3 = _createForOfIteratorHelper(vals((_model$component$sele = model.component.selection) !== null && _model$component$sele !== void 0 ? _model$component$sele : {})),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var _selCmpt$project$hasF;\n var selCmpt = _step3.value;\n var proj = (_selCmpt$project$hasF = selCmpt.project.hasField[field]) !== null && _selCmpt$project$hasF !== void 0 ? _selCmpt$project$hasF : selCmpt.project.hasChannel[channel];\n if (proj && legendBindings.defined(selCmpt)) {\n var _legendCmpt$get;\n var legendSelections = (_legendCmpt$get = legendCmpt.get('selections')) !== null && _legendCmpt$get !== void 0 ? _legendCmpt$get : [];\n legendSelections.push(selCmpt.name);\n legendCmpt.set('selections', legendSelections, false);\n proj.hasLegend = true;\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n}","import { parseSelector } from 'vega-event-selector';\nimport { X, Y } from '../../channel';\nimport { BRUSH as INTERVAL_BRUSH } from './interval';\nimport scalesCompiler, { domain } from './scales';\nvar ANCHOR = '_translate_anchor';\nvar DELTA = '_translate_delta';\nvar translate = {\n defined: function defined(selCmpt) {\n return selCmpt.type === 'interval' && selCmpt.translate;\n },\n signals: function signals(model, selCmpt, _signals) {\n var name = selCmpt.name;\n var boundScales = scalesCompiler.defined(selCmpt);\n var anchor = name + ANCHOR;\n var _selCmpt$project$hasC = selCmpt.project.hasChannel,\n x = _selCmpt$project$hasC.x,\n y = _selCmpt$project$hasC.y;\n var events = parseSelector(selCmpt.translate, 'scope');\n if (!boundScales) {\n events = events.map(function (e) {\n return e.between[0].markname = name + INTERVAL_BRUSH, e;\n });\n }\n _signals.push({\n name: anchor,\n value: {},\n on: [{\n events: events.map(function (e) {\n return e.between[0];\n }),\n update: '{x: x(unit), y: y(unit)' + (x !== undefined ? \", extent_x: \".concat(boundScales ? domain(model, X) : \"slice(\".concat(x.signals.visual, \")\")) : '') + (y !== undefined ? \", extent_y: \".concat(boundScales ? domain(model, Y) : \"slice(\".concat(y.signals.visual, \")\")) : '') + '}'\n }]\n }, {\n name: name + DELTA,\n value: {},\n on: [{\n events: events,\n update: \"{x: \".concat(anchor, \".x - x(unit), y: \").concat(anchor, \".y - y(unit)}\")\n }]\n });\n if (x !== undefined) {\n onDelta(model, selCmpt, x, 'width', _signals);\n }\n if (y !== undefined) {\n onDelta(model, selCmpt, y, 'height', _signals);\n }\n return _signals;\n }\n};\nexport default translate;\nfunction onDelta(model, selCmpt, proj, size, signals) {\n var _scaleCmpt$get, _scaleCmpt$get2;\n var name = selCmpt.name;\n var anchor = name + ANCHOR;\n var delta = name + DELTA;\n var channel = proj.channel;\n var boundScales = scalesCompiler.defined(selCmpt);\n var signal = signals.filter(function (s) {\n return s.name === proj.signals[boundScales ? 'data' : 'visual'];\n })[0];\n var sizeSg = model.getSizeSignalRef(size).signal;\n var scaleCmpt = model.getScaleComponent(channel);\n var scaleType = scaleCmpt && scaleCmpt.get('type');\n var reversed = scaleCmpt && scaleCmpt.get('reverse'); // scale parsing sets this flag for fieldDef.sort\n var sign = !boundScales ? '' : channel === X ? reversed ? '' : '-' : reversed ? '-' : '';\n var extent = \"\".concat(anchor, \".extent_\").concat(channel);\n var offset = \"\".concat(sign).concat(delta, \".\").concat(channel, \" / \").concat(boundScales ? \"\".concat(sizeSg) : \"span(\".concat(extent, \")\"));\n var panFn = !boundScales || !scaleCmpt ? 'panLinear' : scaleType === 'log' ? 'panLog' : scaleType === 'symlog' ? 'panSymlog' : scaleType === 'pow' ? 'panPow' : 'panLinear';\n var arg = !boundScales ? '' : scaleType === 'pow' ? \", \".concat((_scaleCmpt$get = scaleCmpt.get('exponent')) !== null && _scaleCmpt$get !== void 0 ? _scaleCmpt$get : 1) : scaleType === 'symlog' ? \", \".concat((_scaleCmpt$get2 = scaleCmpt.get('constant')) !== null && _scaleCmpt$get2 !== void 0 ? _scaleCmpt$get2 : 1) : '';\n var update = \"\".concat(panFn, \"(\").concat(extent, \", \").concat(offset).concat(arg, \")\");\n signal.on.push({\n events: {\n signal: delta\n },\n update: boundScales ? update : \"clampRange(\".concat(update, \", 0, \").concat(sizeSg, \")\")\n });\n}","import { parseSelector } from 'vega-event-selector';\nimport { stringValue } from 'vega-util';\nimport { X, Y } from '../../channel';\nimport { BRUSH as INTERVAL_BRUSH } from './interval';\nimport { default as scalesCompiler, domain } from './scales';\nvar ANCHOR = '_zoom_anchor';\nvar DELTA = '_zoom_delta';\nvar zoom = {\n defined: function defined(selCmpt) {\n return selCmpt.type === 'interval' && selCmpt.zoom;\n },\n signals: function signals(model, selCmpt, _signals) {\n var name = selCmpt.name;\n var boundScales = scalesCompiler.defined(selCmpt);\n var delta = name + DELTA;\n var _selCmpt$project$hasC = selCmpt.project.hasChannel,\n x = _selCmpt$project$hasC.x,\n y = _selCmpt$project$hasC.y;\n var sx = stringValue(model.scaleName(X));\n var sy = stringValue(model.scaleName(Y));\n var events = parseSelector(selCmpt.zoom, 'scope');\n if (!boundScales) {\n events = events.map(function (e) {\n return e.markname = name + INTERVAL_BRUSH, e;\n });\n }\n _signals.push({\n name: name + ANCHOR,\n on: [{\n events: events,\n update: !boundScales ? \"{x: x(unit), y: y(unit)}\" : '{' + [sx ? \"x: invert(\".concat(sx, \", x(unit))\") : '', sy ? \"y: invert(\".concat(sy, \", y(unit))\") : ''].filter(function (expr) {\n return expr;\n }).join(', ') + '}'\n }]\n }, {\n name: delta,\n on: [{\n events: events,\n force: true,\n update: 'pow(1.001, event.deltaY * pow(16, event.deltaMode))'\n }]\n });\n if (x !== undefined) {\n onDelta(model, selCmpt, x, 'width', _signals);\n }\n if (y !== undefined) {\n onDelta(model, selCmpt, y, 'height', _signals);\n }\n return _signals;\n }\n};\nexport default zoom;\nfunction onDelta(model, selCmpt, proj, size, signals) {\n var _scaleCmpt$get, _scaleCmpt$get2;\n var name = selCmpt.name;\n var channel = proj.channel;\n var boundScales = scalesCompiler.defined(selCmpt);\n var signal = signals.filter(function (s) {\n return s.name === proj.signals[boundScales ? 'data' : 'visual'];\n })[0];\n var sizeSg = model.getSizeSignalRef(size).signal;\n var scaleCmpt = model.getScaleComponent(channel);\n var scaleType = scaleCmpt && scaleCmpt.get('type');\n var base = boundScales ? domain(model, channel) : signal.name;\n var delta = name + DELTA;\n var anchor = \"\".concat(name).concat(ANCHOR, \".\").concat(channel);\n var zoomFn = !boundScales || !scaleCmpt ? 'zoomLinear' : scaleType === 'log' ? 'zoomLog' : scaleType === 'symlog' ? 'zoomSymlog' : scaleType === 'pow' ? 'zoomPow' : 'zoomLinear';\n var arg = !boundScales ? '' : scaleType === 'pow' ? \", \".concat((_scaleCmpt$get = scaleCmpt.get('exponent')) !== null && _scaleCmpt$get !== void 0 ? _scaleCmpt$get : 1) : scaleType === 'symlog' ? \", \".concat((_scaleCmpt$get2 = scaleCmpt.get('constant')) !== null && _scaleCmpt$get2 !== void 0 ? _scaleCmpt$get2 : 1) : '';\n var update = \"\".concat(zoomFn, \"(\").concat(base, \", \").concat(anchor, \", \").concat(delta).concat(arg, \")\");\n signal.on.push({\n events: {\n signal: delta\n },\n update: boundScales ? update : \"clampRange(\".concat(update, \", 0, \").concat(sizeSg, \")\")\n });\n}","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { isString } from 'vega';\nimport { stringValue } from 'vega-util';\nimport { FACET_CHANNELS } from '../../channel';\nimport { vals } from '../../util';\nimport { isFacetModel } from '../model';\nimport interval from './interval';\nimport point from './point';\nimport clear from './clear';\nimport inputs from './inputs';\nimport nearest from './nearest';\nimport project from './project';\nimport scales from './scales';\nimport legends from './legends';\nimport toggle from './toggle';\nimport translate from './translate';\nimport zoom from './zoom';\nexport var STORE = '_store';\nexport var TUPLE = '_tuple';\nexport var MODIFY = '_modify';\nexport var SELECTION_DOMAIN = '_selection_domain_';\nexport var VL_SELECTION_RESOLVE = 'vlSelectionResolve';\n// Order matters for parsing and assembly.\nexport var selectionCompilers = [point, interval, project, toggle,\n// Bindings may disable direct manipulation.\ninputs, scales, legends, clear, translate, zoom, nearest];\nfunction getFacetModel(model) {\n var parent = model.parent;\n while (parent) {\n if (isFacetModel(parent)) break;\n parent = parent.parent;\n }\n return parent;\n}\nexport function unitName(model) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n escape: true\n },\n escape = _ref.escape;\n var name = escape ? stringValue(model.name) : model.name;\n var facetModel = getFacetModel(model);\n if (facetModel) {\n var facet = facetModel.facet;\n var _iterator = _createForOfIteratorHelper(FACET_CHANNELS),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var channel = _step.value;\n if (facet[channel]) {\n name += \" + '__facet_\".concat(channel, \"_' + (facet[\").concat(stringValue(facetModel.vgField(channel)), \"])\");\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n return name;\n}\nexport function requiresSelectionId(model) {\n var _model$component$sele;\n return vals((_model$component$sele = model.component.selection) !== null && _model$component$sele !== void 0 ? _model$component$sele : {}).reduce(function (identifier, selCmpt) {\n return identifier || selCmpt.project.hasSelectionId;\n }, false);\n}\n// Binding a point selection to query widgets or legends disables default direct manipulation interaction.\n// A user can choose to re-enable it by explicitly specifying triggering input events.\nexport function disableDirectManipulation(selCmpt, selDef) {\n if (isString(selDef.select) || !selDef.select.on) delete selCmpt.events;\n if (isString(selDef.select) || !selDef.select.clear) delete selCmpt.clear;\n if (isString(selDef.select) || !selDef.select.toggle) delete selCmpt.toggle;\n}","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport { parseExpression } from 'vega-expression';\nfunction getName(node) {\n var name = [];\n if (node.type === 'Identifier') {\n return [node.name];\n }\n if (node.type === 'Literal') {\n return [node.value];\n }\n if (node.type === 'MemberExpression') {\n name.push.apply(name, _toConsumableArray(getName(node.object)));\n name.push.apply(name, _toConsumableArray(getName(node.property)));\n }\n return name;\n}\nfunction startsWithDatum(node) {\n if (node.object.type === 'MemberExpression') {\n return startsWithDatum(node.object);\n }\n return node.object.name === 'datum';\n}\nexport function getDependentFields(expression) {\n var ast = parseExpression(expression);\n var dependents = new Set();\n // visit is missing in types https://github.com/vega/vega/issues/3298\n ast.visit(function (node) {\n if (node.type === 'MemberExpression' && startsWithDatum(node)) {\n dependents.add(getName(node).slice(1).join('.'));\n }\n });\n return dependents;\n}","import _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _assertThisInitialized from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { duplicate } from '../../util';\nimport { expression } from '../predicate';\nimport { DataFlowNode } from './dataflow';\nimport { getDependentFields } from './expressions';\nexport var FilterNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(FilterNode, _DataFlowNode);\n var _super = _createSuper(FilterNode);\n function FilterNode(parent, model, filter) {\n var _this;\n _classCallCheck(this, FilterNode);\n _this = _super.call(this, parent);\n _this.model = model;\n _this.filter = filter;\n // TODO: refactor this to not take a node and\n // then add a static function makeFromOperand and make the constructor take only an expression\n _this.expr = expression(_this.model, _this.filter, _assertThisInitialized(_this));\n _this._dependentFields = getDependentFields(_this.expr);\n return _this;\n }\n _createClass(FilterNode, [{\n key: \"clone\",\n value: function clone() {\n return new FilterNode(null, this.model, duplicate(this.filter));\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n return this._dependentFields;\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return new Set(); // filter does not produce any new fields\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n return {\n type: 'filter',\n expr: this.expr\n };\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return \"Filter \".concat(this.expr);\n }\n }]);\n return FilterNode;\n}(DataFlowNode);","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { parseSelector } from 'vega-event-selector';\nimport { array, isObject, isString, stringValue } from 'vega-util';\nimport { selectionCompilers, STORE } from '.';\nimport { warn } from '../../log';\nimport { duplicate, entries, replacePathInField, varName } from '../../util';\nimport { OutputNode } from '../data/dataflow';\nimport { FilterNode } from '../data/filter';\nimport { DataSourceType } from '../../data';\nexport function parseUnitSelection(model, selDefs) {\n var selCmpts = {};\n var selectionConfig = model.config.selection;\n if (!selDefs || !selDefs.length) return selCmpts;\n var _iterator = _createForOfIteratorHelper(selDefs),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var def = _step.value;\n var name = varName(def.name);\n var selDef = def.select;\n var type = isString(selDef) ? selDef : selDef.type;\n var defaults = isObject(selDef) ? duplicate(selDef) : {\n type: type\n };\n // Set default values from config if a property hasn't been specified,\n // or if it is true. E.g., \"translate\": true should use the default\n // event handlers for translate. However, true may be a valid value for\n // a property (e.g., \"nearest\": true).\n var cfg = selectionConfig[type];\n for (var key in cfg) {\n // Project transform applies its defaults.\n if (key === 'fields' || key === 'encodings') {\n continue;\n }\n if (key === 'mark') {\n defaults[key] = _objectSpread(_objectSpread({}, cfg[key]), defaults[key]);\n }\n if (defaults[key] === undefined || defaults[key] === true) {\n var _cfg$key;\n defaults[key] = duplicate((_cfg$key = cfg[key]) !== null && _cfg$key !== void 0 ? _cfg$key : defaults[key]);\n }\n }\n var selCmpt = selCmpts[name] = _objectSpread(_objectSpread({}, defaults), {}, {\n name: name,\n type: type,\n init: def.value,\n bind: def.bind,\n events: isString(defaults.on) ? parseSelector(defaults.on, 'scope') : array(duplicate(defaults.on))\n });\n var def_ = duplicate(def); // defensive copy to prevent compilers from causing side effects\n var _iterator2 = _createForOfIteratorHelper(selectionCompilers),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var c = _step2.value;\n if (c.defined(selCmpt) && c.parse) {\n c.parse(model, selCmpt, def_);\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return selCmpts;\n}\nexport function parseSelectionPredicate(model, pred, dfnode) {\n var datum = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'datum';\n var name = isString(pred) ? pred : pred.param;\n var vname = varName(name);\n var store = stringValue(vname + STORE);\n var selCmpt;\n try {\n selCmpt = model.getSelectionComponent(vname, name);\n } catch (e) {\n // If a selection isn't found, treat as a variable parameter and coerce to boolean.\n return \"!!\".concat(vname);\n }\n if (selCmpt.project.timeUnit) {\n var child = dfnode !== null && dfnode !== void 0 ? dfnode : model.component.data.raw;\n var tunode = selCmpt.project.timeUnit.clone();\n if (child.parent) {\n tunode.insertAsParentOf(child);\n } else {\n child.parent = tunode;\n }\n }\n var fn = selCmpt.project.hasSelectionId ? 'vlSelectionIdTest(' : 'vlSelectionTest(';\n var resolve = selCmpt.resolve === 'global' ? ')' : \", \".concat(stringValue(selCmpt.resolve), \")\");\n var test = \"\".concat(fn).concat(store, \", \").concat(datum).concat(resolve);\n var length = \"length(data(\".concat(store, \"))\");\n return pred.empty === false ? \"\".concat(length, \" && \").concat(test) : \"!\".concat(length, \" || \").concat(test);\n}\nexport function parseSelectionExtent(model, name, extent) {\n var vname = varName(name);\n var encoding = extent['encoding'];\n var field = extent['field'];\n var selCmpt;\n try {\n selCmpt = model.getSelectionComponent(vname, name);\n } catch (e) {\n // If a selection isn't found, treat it as a variable parameter.\n return vname;\n }\n if (!encoding && !field) {\n field = selCmpt.project.items[0].field;\n if (selCmpt.project.items.length > 1) {\n warn('A \"field\" or \"encoding\" must be specified when using a selection as a scale domain. ' + \"Using \\\"field\\\": \".concat(stringValue(field), \".\"));\n }\n } else if (encoding && !field) {\n var encodings = selCmpt.project.items.filter(function (p) {\n return p.channel === encoding;\n });\n if (!encodings.length || encodings.length > 1) {\n field = selCmpt.project.items[0].field;\n warn((!encodings.length ? 'No ' : 'Multiple ') + \"matching \".concat(stringValue(encoding), \" encoding found for selection \").concat(stringValue(extent.param), \". \") + \"Using \\\"field\\\": \".concat(stringValue(field), \".\"));\n } else {\n field = encodings[0].field;\n }\n }\n return \"\".concat(selCmpt.name, \"[\").concat(stringValue(replacePathInField(field)), \"]\");\n}\nexport function materializeSelections(model, main) {\n var _model$component$sele;\n var _iterator3 = _createForOfIteratorHelper(entries((_model$component$sele = model.component.selection) !== null && _model$component$sele !== void 0 ? _model$component$sele : {})),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var _step3$value = _slicedToArray(_step3.value, 2),\n selection = _step3$value[0],\n selCmpt = _step3$value[1];\n var lookupName = model.getName(\"lookup_\".concat(selection));\n model.component.data.outputNodes[lookupName] = selCmpt.materialized = new OutputNode(new FilterNode(main, model, {\n param: selection\n }), lookupName, DataSourceType.Lookup, model.component.data.outputNodeRefCounts);\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n}","import { isString } from 'vega-util';\nimport { fieldFilterExpression, isSelectionPredicate } from '../predicate';\nimport { logicalExpr } from '../util';\nimport { parseSelectionPredicate } from './selection/parse';\n/**\n * Converts a predicate into an expression.\n */\n// model is only used for selection filters.\nexport function expression(model, filterOp, node) {\n return logicalExpr(filterOp, function (predicate) {\n if (isString(predicate)) {\n return predicate;\n } else if (isSelectionPredicate(predicate)) {\n return parseSelectionPredicate(model, predicate, node);\n } else {\n // Filter Object\n return fieldFilterExpression(predicate);\n }\n });\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"disable\", \"orient\", \"scale\", \"labelExpr\", \"title\", \"zindex\"],\n _excluded2 = [\"condition\"],\n _excluded3 = [\"test\"],\n _excluded4 = [\"test\"];\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { array, isArray } from 'vega-util';\nimport { AXIS_PARTS, AXIS_PROPERTY_TYPE, CONDITIONAL_AXIS_PROP_INDEX, isConditionalAxisValue } from '../../axis';\nimport { POSITION_SCALE_CHANNELS } from '../../channel';\nimport { defaultTitle } from '../../channeldef';\nimport { isText } from '../../title';\nimport { contains, getFirstDefined, isEmpty, replaceAll } from '../../util';\nimport { isSignalRef } from '../../vega.schema';\nimport { exprFromValueRefOrSignalRef } from '../common';\nimport { expression } from '../predicate';\nfunction assembleTitle(title, config) {\n if (!title) {\n return undefined;\n }\n if (isArray(title) && !isText(title)) {\n return title.map(function (fieldDef) {\n return defaultTitle(fieldDef, config);\n }).join(', ');\n }\n return title;\n}\nfunction setAxisEncode(axis, part, vgProp, vgRef) {\n var _axis$encode, _a$part, _b$update;\n var _a, _b;\n (_axis$encode = axis.encode) !== null && _axis$encode !== void 0 ? _axis$encode : axis.encode = {};\n (_a$part = (_a = axis.encode)[part]) !== null && _a$part !== void 0 ? _a$part : _a[part] = {};\n (_b$update = (_b = axis.encode[part]).update) !== null && _b$update !== void 0 ? _b$update : _b.update = {};\n // TODO: remove as any after https://github.com/prisma/nexus-prisma/issues/291\n axis.encode[part].update[vgProp] = vgRef;\n}\nexport function assembleAxis(axisCmpt, kind, config) {\n var opt = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n header: false\n };\n var _axisCmpt$combine = axisCmpt.combine(),\n disable = _axisCmpt$combine.disable,\n orient = _axisCmpt$combine.orient,\n scale = _axisCmpt$combine.scale,\n labelExpr = _axisCmpt$combine.labelExpr,\n title = _axisCmpt$combine.title,\n zindex = _axisCmpt$combine.zindex,\n axis = _objectWithoutProperties(_axisCmpt$combine, _excluded);\n if (disable) {\n return undefined;\n }\n for (var prop in axis) {\n var propType = AXIS_PROPERTY_TYPE[prop];\n var propValue = axis[prop];\n if (propType && propType !== kind && propType !== 'both') {\n // Remove properties that are not valid for this kind of axis\n delete axis[prop];\n } else if (isConditionalAxisValue(propValue)) {\n // deal with conditional axis value\n var condition = propValue.condition,\n valueOrSignalRef = _objectWithoutProperties(propValue, _excluded2);\n var conditions = array(condition);\n var propIndex = CONDITIONAL_AXIS_PROP_INDEX[prop];\n if (propIndex) {\n var vgProp = propIndex.vgProp,\n part = propIndex.part;\n // If there is a corresponding Vega property for the channel,\n // use Vega's custom axis encoding and delete the original axis property to avoid conflicts\n var vgRef = [].concat(_toConsumableArray(conditions.map(function (c) {\n var test = c.test,\n valueOrSignalCRef = _objectWithoutProperties(c, _excluded3);\n return _objectSpread({\n test: expression(null, test)\n }, valueOrSignalCRef);\n })), [valueOrSignalRef]);\n setAxisEncode(axis, part, vgProp, vgRef);\n delete axis[prop];\n } else if (propIndex === null) {\n // If propIndex is null, this means we support conditional axis property by converting the condition to signal instead.\n var signalRef = {\n signal: conditions.map(function (c) {\n var test = c.test,\n valueOrSignalCRef = _objectWithoutProperties(c, _excluded4);\n return \"\".concat(expression(null, test), \" ? \").concat(exprFromValueRefOrSignalRef(valueOrSignalCRef), \" : \");\n }).join('') + exprFromValueRefOrSignalRef(valueOrSignalRef)\n };\n axis[prop] = signalRef;\n }\n } else if (isSignalRef(propValue)) {\n var _propIndex = CONDITIONAL_AXIS_PROP_INDEX[prop];\n if (_propIndex) {\n var _vgProp = _propIndex.vgProp,\n _part = _propIndex.part;\n setAxisEncode(axis, _part, _vgProp, propValue);\n delete axis[prop];\n } // else do nothing since the property already supports signal\n }\n // Do not pass labelAlign/Baseline = null to Vega since it won't pass the schema\n // Note that we need to use null so the default labelAlign is preserved.\n if (contains(['labelAlign', 'labelBaseline'], prop) && axis[prop] === null) {\n delete axis[prop];\n }\n }\n if (kind === 'grid') {\n if (!axis.grid) {\n return undefined;\n }\n // Remove unnecessary encode block\n if (axis.encode) {\n // Only need to keep encode block for grid\n var grid = axis.encode.grid;\n axis.encode = _objectSpread({}, grid ? {\n grid: grid\n } : {});\n if (isEmpty(axis.encode)) {\n delete axis.encode;\n }\n }\n return _objectSpread(_objectSpread({\n scale: scale,\n orient: orient\n }, axis), {}, {\n domain: false,\n labels: false,\n aria: false,\n // Always set min/maxExtent to 0 to ensure that `config.axis*.minExtent` and `config.axis*.maxExtent`\n // would not affect gridAxis\n maxExtent: 0,\n minExtent: 0,\n ticks: false,\n zindex: getFirstDefined(zindex, 0) // put grid behind marks by default\n });\n } else {\n // kind === 'main'\n if (!opt.header && axisCmpt.mainExtracted) {\n // if mainExtracted has been extracted to a separate facet\n return undefined;\n }\n if (labelExpr !== undefined) {\n var _axis$encode2;\n var expr = labelExpr;\n if ((_axis$encode2 = axis.encode) !== null && _axis$encode2 !== void 0 && (_axis$encode2 = _axis$encode2.labels) !== null && _axis$encode2 !== void 0 && _axis$encode2.update && isSignalRef(axis.encode.labels.update.text)) {\n expr = replaceAll(labelExpr, 'datum.label', axis.encode.labels.update.text.signal);\n }\n setAxisEncode(axis, 'labels', 'text', {\n signal: expr\n });\n }\n if (axis.labelAlign === null) {\n delete axis.labelAlign;\n }\n // Remove unnecessary encode block\n if (axis.encode) {\n var _iterator = _createForOfIteratorHelper(AXIS_PARTS),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _part2 = _step.value;\n if (!axisCmpt.hasAxisPart(_part2)) {\n delete axis.encode[_part2];\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n if (isEmpty(axis.encode)) {\n delete axis.encode;\n }\n }\n var titleString = assembleTitle(title, config);\n return _objectSpread(_objectSpread(_objectSpread(_objectSpread({\n scale: scale,\n orient: orient,\n grid: false\n }, titleString ? {\n title: titleString\n } : {}), axis), config.aria === false ? {\n aria: false\n } : {}), {}, {\n zindex: getFirstDefined(zindex, 0) // put axis line above marks by default\n });\n }\n}\n/**\n * Add axis signals so grid line works correctly\n * (Fix https://github.com/vega/vega-lite/issues/4226)\n */\nexport function assembleAxisSignals(model) {\n var axes = model.component.axes;\n var signals = [];\n var _iterator2 = _createForOfIteratorHelper(POSITION_SCALE_CHANNELS),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var channel = _step2.value;\n if (axes[channel]) {\n var _iterator3 = _createForOfIteratorHelper(axes[channel]),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var axis = _step3.value;\n if (!axis.get('disable') && !axis.get('gridScale')) {\n // If there is x-axis but no y-scale for gridScale, need to set height/width so x-axis can draw the grid with the right height. Same for y-axis and width.\n var sizeType = channel === 'x' ? 'height' : 'width';\n var update = model.getSizeSignalRef(sizeType).signal;\n if (sizeType !== update) {\n signals.push({\n name: sizeType,\n update: update\n });\n }\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n return signals;\n}\nexport function assembleAxes(axisComponents, config) {\n var _axisComponents$x = axisComponents.x,\n x = _axisComponents$x === void 0 ? [] : _axisComponents$x,\n _axisComponents$y = axisComponents.y,\n y = _axisComponents$y === void 0 ? [] : _axisComponents$y;\n return [].concat(_toConsumableArray(x.map(function (a) {\n return assembleAxis(a, 'grid', config);\n })), _toConsumableArray(y.map(function (a) {\n return assembleAxis(a, 'grid', config);\n })), _toConsumableArray(x.map(function (a) {\n return assembleAxis(a, 'main', config);\n })), _toConsumableArray(y.map(function (a) {\n return assembleAxis(a, 'main', config);\n }))).filter(function (a) {\n return a;\n }); // filter undefined\n}","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { array } from 'vega-util';\nimport { isQuantitative } from '../../scale';\nimport { keys, titleCase } from '../../util';\nimport { isSignalRef } from '../../vega.schema';\nimport { getStyleConfig, signalOrStringValue } from '../common';\nfunction getAxisConfigFromConfigTypes(configTypes, config, channel, orient) {\n // TODO: add special casing to add conditional value based on orient signal\n return Object.assign.apply(null, [{}].concat(_toConsumableArray(configTypes.map(function (configType) {\n if (configType === 'axisOrient') {\n var orient1 = channel === 'x' ? 'bottom' : 'left';\n var orientConfig1 = config[channel === 'x' ? 'axisBottom' : 'axisLeft'] || {};\n var orientConfig2 = config[channel === 'x' ? 'axisTop' : 'axisRight'] || {};\n var props = new Set([].concat(_toConsumableArray(keys(orientConfig1)), _toConsumableArray(keys(orientConfig2))));\n var conditionalOrientAxisConfig = {};\n var _iterator = _createForOfIteratorHelper(props.values()),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var prop = _step.value;\n conditionalOrientAxisConfig[prop] = {\n // orient is surely signal in this case\n signal: \"\".concat(orient['signal'], \" === \\\"\").concat(orient1, \"\\\" ? \").concat(signalOrStringValue(orientConfig1[prop]), \" : \").concat(signalOrStringValue(orientConfig2[prop]))\n };\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return conditionalOrientAxisConfig;\n }\n return config[configType];\n }))));\n}\nexport function getAxisConfigs(channel, scaleType, orient, config) {\n var typeBasedConfigTypes = scaleType === 'band' ? ['axisDiscrete', 'axisBand'] : scaleType === 'point' ? ['axisDiscrete', 'axisPoint'] : isQuantitative(scaleType) ? ['axisQuantitative'] : scaleType === 'time' || scaleType === 'utc' ? ['axisTemporal'] : [];\n var axisChannel = channel === 'x' ? 'axisX' : 'axisY';\n var axisOrient = isSignalRef(orient) ? 'axisOrient' : \"axis\".concat(titleCase(orient)); // axisTop, axisBottom, ...\n var vlOnlyConfigTypes = [].concat(typeBasedConfigTypes, _toConsumableArray(typeBasedConfigTypes.map(function (c) {\n return axisChannel + c.substr(4);\n })));\n var vgConfigTypes = ['axis', axisOrient, axisChannel];\n return {\n vlOnlyAxisConfig: getAxisConfigFromConfigTypes(vlOnlyConfigTypes, config, channel, orient),\n vgAxisConfig: getAxisConfigFromConfigTypes(vgConfigTypes, config, channel, orient),\n axisConfigStyle: getAxisConfigStyle([].concat(vgConfigTypes, _toConsumableArray(vlOnlyConfigTypes)), config)\n };\n}\nexport function getAxisConfigStyle(axisConfigTypes, config) {\n var toMerge = [{}];\n var _iterator2 = _createForOfIteratorHelper(axisConfigTypes),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _config$configType;\n var configType = _step2.value;\n // TODO: add special casing to add conditional value based on orient signal\n var style = (_config$configType = config[configType]) === null || _config$configType === void 0 ? void 0 : _config$configType.style;\n if (style) {\n style = array(style);\n var _iterator3 = _createForOfIteratorHelper(style),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var s = _step3.value;\n toMerge.push(config.style[s]);\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n return Object.assign.apply(null, toMerge);\n}\nexport function getAxisConfig(property, styleConfigIndex, style) {\n var axisConfigs = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var styleConfig = getStyleConfig(property, style, styleConfigIndex);\n if (styleConfig !== undefined) {\n return {\n configFrom: 'style',\n configValue: styleConfig\n };\n }\n for (var _i = 0, _arr = ['vlOnlyAxisConfig', 'vgAxisConfig', 'axisConfigStyle']; _i < _arr.length; _i++) {\n var _axisConfigs$configFr;\n var configFrom = _arr[_i];\n if (((_axisConfigs$configFr = axisConfigs[configFrom]) === null || _axisConfigs$configFr === void 0 ? void 0 : _axisConfigs$configFr[property]) !== undefined) {\n return {\n configFrom: configFrom,\n configValue: axisConfigs[configFrom][property]\n };\n }\n }\n return {};\n}","import { isArray, isObject } from 'vega-util';\nimport { isBinned, isBinning } from '../../bin';\nimport { X } from '../../channel';\nimport { isDiscrete, isFieldDef, toFieldDefBase, valueArray } from '../../channeldef';\nimport { hasDiscreteDomain } from '../../scale';\nimport { durationExpr, normalizeTimeUnit } from '../../timeunit';\nimport { NOMINAL, ORDINAL } from '../../type';\nimport { contains, normalizeAngle } from '../../util';\nimport { isSignalRef } from '../../vega.schema';\nimport { mergeTitle, mergeTitleFieldDefs } from '../common';\nimport { getAxisConfig } from './config';\nexport var axisRules = {\n scale: function scale(_ref) {\n var model = _ref.model,\n channel = _ref.channel;\n return model.scaleName(channel);\n },\n format: function format(_ref2) {\n var _format = _ref2.format;\n return _format;\n },\n formatType: function formatType(_ref3) {\n var _formatType = _ref3.formatType;\n return _formatType;\n },\n grid: function grid(_ref4) {\n var _axis$grid;\n var fieldOrDatumDef = _ref4.fieldOrDatumDef,\n axis = _ref4.axis,\n scaleType = _ref4.scaleType;\n return (_axis$grid = axis.grid) !== null && _axis$grid !== void 0 ? _axis$grid : defaultGrid(scaleType, fieldOrDatumDef);\n },\n gridScale: function gridScale(_ref5) {\n var model = _ref5.model,\n channel = _ref5.channel;\n return _gridScale(model, channel);\n },\n labelAlign: function labelAlign(_ref6) {\n var axis = _ref6.axis,\n labelAngle = _ref6.labelAngle,\n orient = _ref6.orient,\n channel = _ref6.channel;\n return axis.labelAlign || defaultLabelAlign(labelAngle, orient, channel);\n },\n labelAngle: function labelAngle(_ref7) {\n var _labelAngle = _ref7.labelAngle;\n return _labelAngle;\n },\n labelBaseline: function labelBaseline(_ref8) {\n var axis = _ref8.axis,\n labelAngle = _ref8.labelAngle,\n orient = _ref8.orient,\n channel = _ref8.channel;\n return axis.labelBaseline || defaultLabelBaseline(labelAngle, orient, channel);\n },\n labelFlush: function labelFlush(_ref9) {\n var _axis$labelFlush;\n var axis = _ref9.axis,\n fieldOrDatumDef = _ref9.fieldOrDatumDef,\n channel = _ref9.channel;\n return (_axis$labelFlush = axis.labelFlush) !== null && _axis$labelFlush !== void 0 ? _axis$labelFlush : defaultLabelFlush(fieldOrDatumDef.type, channel);\n },\n labelOverlap: function labelOverlap(_ref10) {\n var _axis$labelOverlap;\n var axis = _ref10.axis,\n fieldOrDatumDef = _ref10.fieldOrDatumDef,\n scaleType = _ref10.scaleType;\n return (_axis$labelOverlap = axis.labelOverlap) !== null && _axis$labelOverlap !== void 0 ? _axis$labelOverlap : defaultLabelOverlap(fieldOrDatumDef.type, scaleType, isFieldDef(fieldOrDatumDef) && !!fieldOrDatumDef.timeUnit, isFieldDef(fieldOrDatumDef) ? fieldOrDatumDef.sort : undefined);\n },\n // we already calculate orient in parse\n orient: function orient(_ref11) {\n var _orient = _ref11.orient;\n return _orient;\n },\n tickCount: function tickCount(_ref12) {\n var _axis$tickCount;\n var channel = _ref12.channel,\n model = _ref12.model,\n axis = _ref12.axis,\n fieldOrDatumDef = _ref12.fieldOrDatumDef,\n scaleType = _ref12.scaleType;\n var sizeType = channel === 'x' ? 'width' : channel === 'y' ? 'height' : undefined;\n var size = sizeType ? model.getSizeSignalRef(sizeType) : undefined;\n return (_axis$tickCount = axis.tickCount) !== null && _axis$tickCount !== void 0 ? _axis$tickCount : defaultTickCount({\n fieldOrDatumDef: fieldOrDatumDef,\n scaleType: scaleType,\n size: size,\n values: axis.values\n });\n },\n tickMinStep: defaultTickMinStep,\n title: function title(_ref13) {\n var axis = _ref13.axis,\n model = _ref13.model,\n channel = _ref13.channel;\n if (axis.title !== undefined) {\n return axis.title;\n }\n var fieldDefTitle = getFieldDefTitle(model, channel);\n if (fieldDefTitle !== undefined) {\n return fieldDefTitle;\n }\n var fieldDef = model.typedFieldDef(channel);\n var channel2 = channel === 'x' ? 'x2' : 'y2';\n var fieldDef2 = model.fieldDef(channel2);\n // If title not specified, store base parts of fieldDef (and fieldDef2 if exists)\n return mergeTitleFieldDefs(fieldDef ? [toFieldDefBase(fieldDef)] : [], isFieldDef(fieldDef2) ? [toFieldDefBase(fieldDef2)] : []);\n },\n values: function values(_ref14) {\n var axis = _ref14.axis,\n fieldOrDatumDef = _ref14.fieldOrDatumDef;\n return _values(axis, fieldOrDatumDef);\n },\n zindex: function zindex(_ref15) {\n var _axis$zindex;\n var axis = _ref15.axis,\n fieldOrDatumDef = _ref15.fieldOrDatumDef,\n mark = _ref15.mark;\n return (_axis$zindex = axis.zindex) !== null && _axis$zindex !== void 0 ? _axis$zindex : defaultZindex(mark, fieldOrDatumDef);\n }\n};\n// TODO: we need to refactor this method after we take care of config refactoring\n/**\n * Default rules for whether to show a grid should be shown for a channel.\n * If `grid` is unspecified, the default value is `true` for ordinal scales that are not binned\n */\nexport function defaultGrid(scaleType, fieldDef) {\n return !hasDiscreteDomain(scaleType) && isFieldDef(fieldDef) && !isBinning(fieldDef === null || fieldDef === void 0 ? void 0 : fieldDef.bin) && !isBinned(fieldDef === null || fieldDef === void 0 ? void 0 : fieldDef.bin);\n}\nfunction _gridScale(model, channel) {\n var gridChannel = channel === 'x' ? 'y' : 'x';\n if (model.getScaleComponent(gridChannel)) {\n return model.scaleName(gridChannel);\n }\n return undefined;\n}\nexport { _gridScale as gridScale };\nexport function getLabelAngle(fieldOrDatumDef, axis, channel, styleConfig, axisConfigs) {\n var labelAngle = axis === null || axis === void 0 ? void 0 : axis.labelAngle;\n // try axis value\n if (labelAngle !== undefined) {\n return isSignalRef(labelAngle) ? labelAngle : normalizeAngle(labelAngle);\n } else {\n // try axis config value\n var _getAxisConfig = getAxisConfig('labelAngle', styleConfig, axis === null || axis === void 0 ? void 0 : axis.style, axisConfigs),\n angle = _getAxisConfig.configValue;\n if (angle !== undefined) {\n return normalizeAngle(angle);\n } else {\n // get default value\n if (channel === X && contains([NOMINAL, ORDINAL], fieldOrDatumDef.type) && !(isFieldDef(fieldOrDatumDef) && fieldOrDatumDef.timeUnit)) {\n return 270;\n }\n // no default\n return undefined;\n }\n }\n}\nexport function normalizeAngleExpr(angle) {\n return \"(((\".concat(angle.signal, \" % 360) + 360) % 360)\");\n}\nexport function defaultLabelBaseline(angle, orient, channel, alwaysIncludeMiddle) {\n if (angle !== undefined) {\n if (channel === 'x') {\n if (isSignalRef(angle)) {\n var a = normalizeAngleExpr(angle);\n var orientIsTop = isSignalRef(orient) ? \"(\".concat(orient.signal, \" === \\\"top\\\")\") : orient === 'top';\n return {\n signal: \"(45 < \".concat(a, \" && \").concat(a, \" < 135) || (225 < \").concat(a, \" && \").concat(a, \" < 315) ? \\\"middle\\\" :\") + \"(\".concat(a, \" <= 45 || 315 <= \").concat(a, \") === \").concat(orientIsTop, \" ? \\\"bottom\\\" : \\\"top\\\"\")\n };\n }\n if (45 < angle && angle < 135 || 225 < angle && angle < 315) {\n return 'middle';\n }\n if (isSignalRef(orient)) {\n var op = angle <= 45 || 315 <= angle ? '===' : '!==';\n return {\n signal: \"\".concat(orient.signal, \" \").concat(op, \" \\\"top\\\" ? \\\"bottom\\\" : \\\"top\\\"\")\n };\n }\n return (angle <= 45 || 315 <= angle) === (orient === 'top') ? 'bottom' : 'top';\n } else {\n if (isSignalRef(angle)) {\n var _a = normalizeAngleExpr(angle);\n var orientIsLeft = isSignalRef(orient) ? \"(\".concat(orient.signal, \" === \\\"left\\\")\") : orient === 'left';\n var middle = alwaysIncludeMiddle ? '\"middle\"' : 'null';\n return {\n signal: \"\".concat(_a, \" <= 45 || 315 <= \").concat(_a, \" || (135 <= \").concat(_a, \" && \").concat(_a, \" <= 225) ? \").concat(middle, \" : (45 <= \").concat(_a, \" && \").concat(_a, \" <= 135) === \").concat(orientIsLeft, \" ? \\\"top\\\" : \\\"bottom\\\"\")\n };\n }\n if (angle <= 45 || 315 <= angle || 135 <= angle && angle <= 225) {\n return alwaysIncludeMiddle ? 'middle' : null;\n }\n if (isSignalRef(orient)) {\n var _op = 45 <= angle && angle <= 135 ? '===' : '!==';\n return {\n signal: \"\".concat(orient.signal, \" \").concat(_op, \" \\\"left\\\" ? \\\"top\\\" : \\\"bottom\\\"\")\n };\n }\n return (45 <= angle && angle <= 135) === (orient === 'left') ? 'top' : 'bottom';\n }\n }\n return undefined;\n}\nexport function defaultLabelAlign(angle, orient, channel) {\n if (angle === undefined) {\n return undefined;\n }\n var isX = channel === 'x';\n var startAngle = isX ? 0 : 90;\n var mainOrient = isX ? 'bottom' : 'left';\n if (isSignalRef(angle)) {\n var a = normalizeAngleExpr(angle);\n var orientIsMain = isSignalRef(orient) ? \"(\".concat(orient.signal, \" === \\\"\").concat(mainOrient, \"\\\")\") : orient === mainOrient;\n return {\n signal: \"(\".concat(startAngle ? \"(\".concat(a, \" + 90)\") : a, \" % 180 === 0) ? \").concat(isX ? null : '\"center\"', \" :\") + \"(\".concat(startAngle, \" < \").concat(a, \" && \").concat(a, \" < \").concat(180 + startAngle, \") === \").concat(orientIsMain, \" ? \\\"left\\\" : \\\"right\\\"\")\n };\n }\n if ((angle + startAngle) % 180 === 0) {\n // For bottom, use default label align so label flush still works\n return isX ? null : 'center';\n }\n if (isSignalRef(orient)) {\n var op = startAngle < angle && angle < 180 + startAngle ? '===' : '!==';\n var _orientIsMain = \"\".concat(orient.signal, \" \").concat(op, \" \\\"\").concat(mainOrient, \"\\\"\");\n return {\n signal: \"\".concat(_orientIsMain, \" ? \\\"left\\\" : \\\"right\\\"\")\n };\n }\n if ((startAngle < angle && angle < 180 + startAngle) === (orient === mainOrient)) {\n return 'left';\n }\n return 'right';\n}\nexport function defaultLabelFlush(type, channel) {\n if (channel === 'x' && contains(['quantitative', 'temporal'], type)) {\n return true;\n }\n return undefined;\n}\nexport function defaultLabelOverlap(type, scaleType, hasTimeUnit, sort) {\n // do not prevent overlap for nominal data because there is no way to infer what the missing labels are\n if (hasTimeUnit && !isObject(sort) || type !== 'nominal' && type !== 'ordinal') {\n if (scaleType === 'log' || scaleType === 'symlog') {\n return 'greedy';\n }\n return true;\n }\n return undefined;\n}\nexport function defaultOrient(channel) {\n return channel === 'x' ? 'bottom' : 'left';\n}\nexport function defaultTickCount(_ref16) {\n var fieldOrDatumDef = _ref16.fieldOrDatumDef,\n scaleType = _ref16.scaleType,\n size = _ref16.size,\n vals = _ref16.values;\n if (!vals && !hasDiscreteDomain(scaleType) && scaleType !== 'log') {\n if (isFieldDef(fieldOrDatumDef)) {\n var _normalizeTimeUnit;\n if (isBinning(fieldOrDatumDef.bin)) {\n // for binned data, we don't want more ticks than maxbins\n return {\n signal: \"ceil(\".concat(size.signal, \"/10)\")\n };\n }\n if (fieldOrDatumDef.timeUnit && contains(['month', 'hours', 'day', 'quarter'], (_normalizeTimeUnit = normalizeTimeUnit(fieldOrDatumDef.timeUnit)) === null || _normalizeTimeUnit === void 0 ? void 0 : _normalizeTimeUnit.unit)) {\n return undefined;\n }\n }\n return {\n signal: \"ceil(\".concat(size.signal, \"/40)\")\n };\n }\n return undefined;\n}\nexport function defaultTickMinStep(_ref17) {\n var format = _ref17.format,\n fieldOrDatumDef = _ref17.fieldOrDatumDef;\n if (format === 'd') {\n return 1;\n }\n if (isFieldDef(fieldOrDatumDef)) {\n var timeUnit = fieldOrDatumDef.timeUnit;\n if (timeUnit) {\n var signal = durationExpr(timeUnit);\n if (signal) {\n return {\n signal: signal\n };\n }\n }\n }\n return undefined;\n}\nexport function getFieldDefTitle(model, channel) {\n var channel2 = channel === 'x' ? 'x2' : 'y2';\n var fieldDef = model.fieldDef(channel);\n var fieldDef2 = model.fieldDef(channel2);\n var title1 = fieldDef ? fieldDef.title : undefined;\n var title2 = fieldDef2 ? fieldDef2.title : undefined;\n if (title1 && title2) {\n return mergeTitle(title1, title2);\n } else if (title1) {\n return title1;\n } else if (title2) {\n return title2;\n } else if (title1 !== undefined) {\n // falsy value to disable config\n return title1;\n } else if (title2 !== undefined) {\n // falsy value to disable config\n return title2;\n }\n return undefined;\n}\nfunction _values(axis, fieldOrDatumDef) {\n var vals = axis.values;\n if (isArray(vals)) {\n return valueArray(fieldOrDatumDef, vals);\n } else if (isSignalRef(vals)) {\n return vals;\n }\n return undefined;\n}\nexport { _values as values };\nexport function defaultZindex(mark, fieldDef) {\n if (mark === 'rect' && isDiscrete(fieldDef)) {\n return 1;\n }\n return 0;\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { isScaleFieldDef, vgField } from '../../channeldef';\nimport { fieldFilterExpression } from '../../predicate';\nimport { isSortArray } from '../../sort';\nimport { duplicate, hash as _hash } from '../../util';\nimport { DataFlowNode } from './dataflow';\nimport { getDependentFields } from './expressions';\nexport var CalculateNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(CalculateNode, _DataFlowNode);\n var _super = _createSuper(CalculateNode);\n function CalculateNode(parent, transform) {\n var _this;\n _classCallCheck(this, CalculateNode);\n _this = _super.call(this, parent);\n _this.transform = transform;\n _this._dependentFields = getDependentFields(_this.transform.calculate);\n return _this;\n }\n _createClass(CalculateNode, [{\n key: \"clone\",\n value: function clone() {\n return new CalculateNode(null, duplicate(this.transform));\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return new Set([this.transform.as]);\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n return this._dependentFields;\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n return {\n type: 'formula',\n expr: this.transform.calculate,\n as: this.transform.as\n };\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return \"Calculate \".concat(_hash(this.transform));\n }\n }], [{\n key: \"parseAllForSortIndex\",\n value: function parseAllForSortIndex(parent, model) {\n // get all the encoding with sort fields from model\n model.forEachFieldDef(function (fieldDef, channel) {\n if (!isScaleFieldDef(fieldDef)) {\n return;\n }\n if (isSortArray(fieldDef.sort)) {\n var field = fieldDef.field,\n timeUnit = fieldDef.timeUnit;\n var sort = fieldDef.sort;\n // generate `datum[\"a\"] === val0 ? 0 : datum[\"a\"] === val1 ? 1 : ... : n` via FieldEqualPredicate\n var calculate = sort.map(function (sortValue, i) {\n return \"\".concat(fieldFilterExpression({\n field: field,\n timeUnit: timeUnit,\n equal: sortValue\n }), \" ? \").concat(i, \" : \");\n }).join('') + sort.length;\n parent = new CalculateNode(parent, {\n calculate: calculate,\n as: sortArrayIndexField(fieldDef, channel, {\n forAs: true\n })\n });\n }\n });\n return parent;\n }\n }]);\n return CalculateNode;\n}(DataFlowNode);\nexport function sortArrayIndexField(fieldDef, channel, opt) {\n return vgField(fieldDef, _objectSpread({\n prefix: channel,\n suffix: 'sort_index'\n }, opt !== null && opt !== void 0 ? opt : {}));\n}","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { contains, getFirstDefined } from '../../util';\n/**\n * Get header channel, which can be different from facet channel when orient is specified or when the facet channel is facet.\n */\nexport function getHeaderChannel(channel, orient) {\n if (contains(['top', 'bottom'], orient)) {\n return 'column';\n } else if (contains(['left', 'right'], orient)) {\n return 'row';\n }\n return channel === 'row' ? 'row' : 'column';\n}\nexport function getHeaderProperty(prop, header, config, channel) {\n var headerSpecificConfig = channel === 'row' ? config.headerRow : channel === 'column' ? config.headerColumn : config.headerFacet;\n return getFirstDefined((header || {})[prop], headerSpecificConfig[prop], config.header[prop]);\n}\nexport function getHeaderProperties(properties, header, config, channel) {\n var props = {};\n var _iterator = _createForOfIteratorHelper(properties),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var prop = _step.value;\n var value = getHeaderProperty(prop, header || {}, config, channel);\n if (value !== undefined) {\n props[prop] = value;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return props;\n}","export var HEADER_CHANNELS = ['row', 'column'];\nexport var HEADER_TYPES = ['header', 'footer'];","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n/**\n * Utility for generating row / column headers\n */\nimport { isArray } from 'vega-util';\nimport { FACET_CHANNELS } from '../../channel';\nimport { vgField } from '../../channeldef';\nimport { HEADER_LABEL_PROPERTIES, HEADER_LABEL_PROPERTIES_MAP, HEADER_TITLE_PROPERTIES, HEADER_TITLE_PROPERTIES_MAP } from '../../header';\nimport { isSortField } from '../../sort';\nimport { isFacetMapping } from '../../spec/facet';\nimport { contains, isEmpty, normalizeAngle, replaceAll } from '../../util';\nimport { defaultLabelAlign, defaultLabelBaseline } from '../axis/properties';\nimport { sortArrayIndexField } from '../data/calculate';\nimport { formatSignalRef } from '../format';\nimport { isFacetModel } from '../model';\nimport { getHeaderChannel, getHeaderProperties, getHeaderProperty } from './common';\nimport { HEADER_TYPES } from './component';\n// TODO: rename to assembleHeaderTitleGroup\nexport function assembleTitleGroup(model, channel) {\n var title = model.component.layoutHeaders[channel].title;\n var config = model.config ? model.config : undefined;\n var facetFieldDef = model.component.layoutHeaders[channel].facetFieldDef ? model.component.layoutHeaders[channel].facetFieldDef : undefined;\n var _getHeaderProperties = getHeaderProperties(['titleAnchor', 'titleAngle', 'titleOrient'], facetFieldDef.header, config, channel),\n titleAnchor = _getHeaderProperties.titleAnchor,\n ta = _getHeaderProperties.titleAngle,\n titleOrient = _getHeaderProperties.titleOrient;\n var headerChannel = getHeaderChannel(channel, titleOrient);\n var titleAngle = normalizeAngle(ta);\n return {\n name: \"\".concat(channel, \"-title\"),\n type: 'group',\n role: \"\".concat(headerChannel, \"-title\"),\n title: _objectSpread(_objectSpread(_objectSpread(_objectSpread({\n text: title\n }, channel === 'row' ? {\n orient: 'left'\n } : {}), {}, {\n style: 'guide-title'\n }, defaultHeaderGuideBaseline(titleAngle, headerChannel)), defaultHeaderGuideAlign(headerChannel, titleAngle, titleAnchor)), assembleHeaderProperties(config, facetFieldDef, channel, HEADER_TITLE_PROPERTIES, HEADER_TITLE_PROPERTIES_MAP))\n };\n}\nexport function defaultHeaderGuideAlign(headerChannel, angle) {\n var anchor = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'middle';\n switch (anchor) {\n case 'start':\n return {\n align: 'left'\n };\n case 'end':\n return {\n align: 'right'\n };\n }\n var align = defaultLabelAlign(angle, headerChannel === 'row' ? 'left' : 'top', headerChannel === 'row' ? 'y' : 'x');\n return align ? {\n align: align\n } : {};\n}\nexport function defaultHeaderGuideBaseline(angle, channel) {\n var baseline = defaultLabelBaseline(angle, channel === 'row' ? 'left' : 'top', channel === 'row' ? 'y' : 'x', true);\n return baseline ? {\n baseline: baseline\n } : {};\n}\nexport function assembleHeaderGroups(model, channel) {\n var layoutHeader = model.component.layoutHeaders[channel];\n var groups = [];\n var _iterator = _createForOfIteratorHelper(HEADER_TYPES),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var headerType = _step.value;\n if (layoutHeader[headerType]) {\n var _iterator2 = _createForOfIteratorHelper(layoutHeader[headerType]),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var headerComponent = _step2.value;\n var group = assembleHeaderGroup(model, channel, headerType, layoutHeader, headerComponent);\n if (group != null) {\n groups.push(group);\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return groups;\n}\nfunction getSort(facetFieldDef, channel) {\n var sort = facetFieldDef.sort;\n if (isSortField(sort)) {\n var _sort$order;\n return {\n field: vgField(sort, {\n expr: 'datum'\n }),\n order: (_sort$order = sort.order) !== null && _sort$order !== void 0 ? _sort$order : 'ascending'\n };\n } else if (isArray(sort)) {\n return {\n field: sortArrayIndexField(facetFieldDef, channel, {\n expr: 'datum'\n }),\n order: 'ascending'\n };\n } else {\n return {\n field: vgField(facetFieldDef, {\n expr: 'datum'\n }),\n order: sort !== null && sort !== void 0 ? sort : 'ascending'\n };\n }\n}\nexport function assembleLabelTitle(facetFieldDef, channel, config) {\n var _getHeaderProperties2 = getHeaderProperties(['format', 'formatType', 'labelAngle', 'labelAnchor', 'labelOrient', 'labelExpr'], facetFieldDef.header, config, channel),\n format = _getHeaderProperties2.format,\n formatType = _getHeaderProperties2.formatType,\n labelAngle = _getHeaderProperties2.labelAngle,\n labelAnchor = _getHeaderProperties2.labelAnchor,\n labelOrient = _getHeaderProperties2.labelOrient,\n labelExpr = _getHeaderProperties2.labelExpr;\n var titleTextExpr = formatSignalRef({\n fieldOrDatumDef: facetFieldDef,\n format: format,\n formatType: formatType,\n expr: 'parent',\n config: config\n }).signal;\n var headerChannel = getHeaderChannel(channel, labelOrient);\n return _objectSpread(_objectSpread(_objectSpread(_objectSpread({\n text: {\n signal: labelExpr ? replaceAll(replaceAll(labelExpr, 'datum.label', titleTextExpr), 'datum.value', vgField(facetFieldDef, {\n expr: 'parent'\n })) : titleTextExpr\n }\n }, channel === 'row' ? {\n orient: 'left'\n } : {}), {}, {\n style: 'guide-label',\n frame: 'group'\n }, defaultHeaderGuideBaseline(labelAngle, headerChannel)), defaultHeaderGuideAlign(headerChannel, labelAngle, labelAnchor)), assembleHeaderProperties(config, facetFieldDef, channel, HEADER_LABEL_PROPERTIES, HEADER_LABEL_PROPERTIES_MAP));\n}\nexport function assembleHeaderGroup(model, channel, headerType, layoutHeader, headerComponent) {\n if (headerComponent) {\n var title = null;\n var facetFieldDef = layoutHeader.facetFieldDef;\n var config = model.config ? model.config : undefined;\n if (facetFieldDef && headerComponent.labels) {\n var _getHeaderProperties3 = getHeaderProperties(['labelOrient'], facetFieldDef.header, config, channel),\n labelOrient = _getHeaderProperties3.labelOrient;\n // Include label title in the header if orient aligns with the channel\n if (channel === 'row' && !contains(['top', 'bottom'], labelOrient) || channel === 'column' && !contains(['left', 'right'], labelOrient)) {\n title = assembleLabelTitle(facetFieldDef, channel, config);\n }\n }\n var isFacetWithoutRowCol = isFacetModel(model) && !isFacetMapping(model.facet);\n var axes = headerComponent.axes;\n var hasAxes = (axes === null || axes === void 0 ? void 0 : axes.length) > 0;\n if (title || hasAxes) {\n var sizeChannel = channel === 'row' ? 'height' : 'width';\n return _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({\n name: model.getName(\"\".concat(channel, \"_\").concat(headerType)),\n type: 'group',\n role: \"\".concat(channel, \"-\").concat(headerType)\n }, layoutHeader.facetFieldDef ? {\n from: {\n data: model.getName(\"\".concat(channel, \"_domain\"))\n },\n sort: getSort(facetFieldDef, channel)\n } : {}), hasAxes && isFacetWithoutRowCol ? {\n from: {\n data: model.getName(\"facet_domain_\".concat(channel))\n }\n } : {}), title ? {\n title: title\n } : {}), headerComponent.sizeSignal ? {\n encode: {\n update: _defineProperty({}, sizeChannel, headerComponent.sizeSignal)\n }\n } : {}), hasAxes ? {\n axes: axes\n } : {});\n }\n }\n return null;\n}\nvar LAYOUT_TITLE_BAND = {\n column: {\n start: 0,\n end: 1\n },\n row: {\n start: 1,\n end: 0\n }\n};\nexport function getLayoutTitleBand(titleAnchor, headerChannel) {\n return LAYOUT_TITLE_BAND[headerChannel][titleAnchor];\n}\nexport function assembleLayoutTitleBand(headerComponentIndex, config) {\n var titleBand = {};\n var _iterator3 = _createForOfIteratorHelper(FACET_CHANNELS),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var channel = _step3.value;\n var headerComponent = headerComponentIndex[channel];\n if (headerComponent !== null && headerComponent !== void 0 && headerComponent.facetFieldDef) {\n var _getHeaderProperties4 = getHeaderProperties(['titleAnchor', 'titleOrient'], headerComponent.facetFieldDef.header, config, channel),\n titleAnchor = _getHeaderProperties4.titleAnchor,\n titleOrient = _getHeaderProperties4.titleOrient;\n var headerChannel = getHeaderChannel(channel, titleOrient);\n var band = getLayoutTitleBand(titleAnchor, headerChannel);\n if (band !== undefined) {\n titleBand[headerChannel] = band;\n }\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n return isEmpty(titleBand) ? undefined : titleBand;\n}\nexport function assembleHeaderProperties(config, facetFieldDef, channel, properties, propertiesMap) {\n var props = {};\n var _iterator4 = _createForOfIteratorHelper(properties),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var prop = _step4.value;\n if (!propertiesMap[prop]) {\n continue;\n }\n var value = getHeaderProperty(prop, facetFieldDef === null || facetFieldDef === void 0 ? void 0 : facetFieldDef.header, config, channel);\n if (value !== undefined) {\n props[propertiesMap[prop]] = value;\n }\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n return props;\n}","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport { getViewConfigContinuousSize } from '../../config';\nimport { hasDiscreteDomain } from '../../scale';\nimport { getFirstDefined } from '../../util';\nimport { isSignalRef, isVgRangeStep } from '../../vega.schema';\nimport { signalOrStringValue } from '../common';\nimport { isFacetModel } from '../model';\nexport function assembleLayoutSignals(model) {\n return [].concat(_toConsumableArray(sizeSignals(model, 'width')), _toConsumableArray(sizeSignals(model, 'height')), _toConsumableArray(sizeSignals(model, 'childWidth')), _toConsumableArray(sizeSignals(model, 'childHeight')));\n}\nexport function sizeSignals(model, sizeType) {\n var channel = sizeType === 'width' ? 'x' : 'y';\n var size = model.component.layoutSize.get(sizeType);\n if (!size || size === 'merged') {\n return [];\n }\n // Read size signal name from name map, just in case it is the top-level size signal that got renamed.\n var name = model.getSizeSignalRef(sizeType).signal;\n if (size === 'step') {\n var scaleComponent = model.getScaleComponent(channel);\n if (scaleComponent) {\n var type = scaleComponent.get('type');\n var range = scaleComponent.get('range');\n if (hasDiscreteDomain(type) && isVgRangeStep(range)) {\n var scaleName = model.scaleName(channel);\n if (isFacetModel(model.parent)) {\n // If parent is facet and this is an independent scale, return only signal signal\n // as the width/height will be calculated using the cardinality from\n // facet's aggregate rather than reading from scale domain\n var parentResolve = model.parent.component.resolve;\n if (parentResolve.scale[channel] === 'independent') {\n return [stepSignal(scaleName, range)];\n }\n }\n return [stepSignal(scaleName, range), {\n name: name,\n update: sizeExpr(scaleName, scaleComponent, \"domain('\".concat(scaleName, \"').length\"))\n }];\n }\n }\n /* istanbul ignore next: Condition should not happen -- only for warning in development. */\n throw new Error('layout size is step although width/height is not step.');\n } else if (size == 'container') {\n var isWidth = name.endsWith('width');\n var expr = isWidth ? 'containerSize()[0]' : 'containerSize()[1]';\n var defaultValue = getViewConfigContinuousSize(model.config.view, isWidth ? 'width' : 'height');\n var safeExpr = \"isFinite(\".concat(expr, \") ? \").concat(expr, \" : \").concat(defaultValue);\n return [{\n name: name,\n init: safeExpr,\n on: [{\n update: safeExpr,\n events: 'window:resize'\n }]\n }];\n } else {\n return [{\n name: name,\n value: size\n }];\n }\n}\nfunction stepSignal(scaleName, range) {\n var name = \"\".concat(scaleName, \"_step\");\n if (isSignalRef(range.step)) {\n return {\n name: name,\n update: range.step.signal\n };\n } else {\n return {\n name: name,\n value: range.step\n };\n }\n}\nexport function sizeExpr(scaleName, scaleComponent, cardinality) {\n var type = scaleComponent.get('type');\n var padding = scaleComponent.get('padding');\n var paddingOuter = getFirstDefined(scaleComponent.get('paddingOuter'), padding);\n var paddingInner = scaleComponent.get('paddingInner');\n paddingInner = type === 'band' ?\n // only band has real paddingInner\n paddingInner !== undefined ? paddingInner : padding :\n // For point, as calculated in https://github.com/vega/vega-scale/blob/master/src/band.js#L128,\n // it's equivalent to have paddingInner = 1 since there is only n-1 steps between n points.\n 1;\n return \"bandspace(\".concat(cardinality, \", \").concat(signalOrStringValue(paddingInner), \", \").concat(signalOrStringValue(paddingOuter), \") * \").concat(scaleName, \"_step\");\n}","export function getSizeTypeFromLayoutSizeType(layoutSizeType) {\n return layoutSizeType === 'childWidth' ? 'width' : layoutSizeType === 'childHeight' ? 'height' : layoutSizeType;\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { keys } from '../util';\nimport { signalOrValueRef } from './common';\nimport { wrapCondition } from './mark/encode';\nexport function guideEncodeEntry(encoding, model) {\n return keys(encoding).reduce(function (encode, channel) {\n var valueDef = encoding[channel];\n return _objectSpread(_objectSpread({}, encode), wrapCondition(model, valueDef, channel, function (def) {\n return signalOrValueRef(def.value);\n }));\n }, {});\n}","import { isXorY } from '../channel';\nimport * as log from '../log';\nimport { isConcatModel, isFacetModel, isLayerModel } from './model';\nexport function defaultScaleResolve(channel, model) {\n if (isFacetModel(model)) {\n return channel === 'theta' ? 'independent' : 'shared';\n } else if (isLayerModel(model)) {\n return 'shared';\n } else if (isConcatModel(model)) {\n return isXorY(channel) || channel === 'theta' || channel === 'radius' ? 'independent' : 'shared';\n }\n /* istanbul ignore next: should never reach here. */\n throw new Error('invalid model type for resolve');\n}\nexport function parseGuideResolve(resolve, channel) {\n var channelScaleResolve = resolve.scale[channel];\n var guide = isXorY(channel) ? 'axis' : 'legend';\n if (channelScaleResolve === 'independent') {\n if (resolve[guide][channel] === 'shared') {\n log.warn(log.message.independentScaleMeansIndependentGuide(channel));\n }\n return 'independent';\n }\n return resolve[guide][channel] || 'shared';\n}","import _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { COMMON_LEGEND_PROPERTY_INDEX } from '../../legend';\nimport { keys } from '../../util';\nimport { Split } from '../split';\nvar LEGEND_COMPONENT_PROPERTY_INDEX = _objectSpread(_objectSpread({}, COMMON_LEGEND_PROPERTY_INDEX), {}, {\n disable: 1,\n labelExpr: 1,\n selections: 1,\n // channel scales\n opacity: 1,\n shape: 1,\n stroke: 1,\n fill: 1,\n size: 1,\n strokeWidth: 1,\n strokeDash: 1,\n // encode\n encode: 1\n});\nexport var LEGEND_COMPONENT_PROPERTIES = keys(LEGEND_COMPONENT_PROPERTY_INDEX);\nexport var LegendComponent = /*#__PURE__*/function (_Split) {\n _inherits(LegendComponent, _Split);\n var _super = _createSuper(LegendComponent);\n function LegendComponent() {\n _classCallCheck(this, LegendComponent);\n return _super.apply(this, arguments);\n }\n return _createClass(LegendComponent);\n}(Split);","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { array, isArray, stringValue } from 'vega-util';\nimport { COLOR, OPACITY } from '../../channel';\nimport { hasConditionalValueDef, isFieldDef, isValueDef } from '../../channeldef';\nimport { FILL_STROKE_CONFIG } from '../../mark';\nimport { getFirstDefined, isEmpty, varName } from '../../util';\nimport { applyMarkConfig, signalOrValueRef } from '../common';\nimport { formatCustomType, isCustomFormatType } from '../format';\nimport * as mixins from '../mark/encode';\nimport { STORE } from '../selection';\nexport var legendEncodeRules = {\n symbols: symbols,\n gradient: gradient,\n labels: labels,\n entries: entries\n};\nexport function symbols(symbolsSpec, _ref) {\n var _legendCmpt$get, _legendCmpt$get2, _legendCmpt$get3, _getMaxValue;\n var fieldOrDatumDef = _ref.fieldOrDatumDef,\n model = _ref.model,\n channel = _ref.channel,\n legendCmpt = _ref.legendCmpt,\n legendType = _ref.legendType;\n if (legendType !== 'symbol') {\n return undefined;\n }\n var markDef = model.markDef,\n encoding = model.encoding,\n config = model.config,\n mark = model.mark;\n var filled = markDef.filled && mark !== 'trail';\n var out = _objectSpread(_objectSpread({}, applyMarkConfig({}, model, FILL_STROKE_CONFIG)), mixins.color(model, {\n filled: filled\n })); // FIXME: remove this when VgEncodeEntry is compatible with SymbolEncodeEntry\n var symbolOpacity = (_legendCmpt$get = legendCmpt.get('symbolOpacity')) !== null && _legendCmpt$get !== void 0 ? _legendCmpt$get : config.legend.symbolOpacity;\n var symbolFillColor = (_legendCmpt$get2 = legendCmpt.get('symbolFillColor')) !== null && _legendCmpt$get2 !== void 0 ? _legendCmpt$get2 : config.legend.symbolFillColor;\n var symbolStrokeColor = (_legendCmpt$get3 = legendCmpt.get('symbolStrokeColor')) !== null && _legendCmpt$get3 !== void 0 ? _legendCmpt$get3 : config.legend.symbolStrokeColor;\n var opacity = symbolOpacity === undefined ? (_getMaxValue = getMaxValue(encoding.opacity)) !== null && _getMaxValue !== void 0 ? _getMaxValue : markDef.opacity : undefined;\n if (out.fill) {\n // for fill legend, we don't want any fill in symbol\n if (channel === 'fill' || filled && channel === COLOR) {\n delete out.fill;\n } else {\n if (out.fill['field']) {\n // For others, set fill to some opaque value (or nothing if a color is already set)\n if (symbolFillColor) {\n delete out.fill;\n } else {\n var _config$legend$symbol;\n out.fill = signalOrValueRef((_config$legend$symbol = config.legend.symbolBaseFillColor) !== null && _config$legend$symbol !== void 0 ? _config$legend$symbol : 'black');\n out.fillOpacity = signalOrValueRef(opacity !== null && opacity !== void 0 ? opacity : 1);\n }\n } else if (isArray(out.fill)) {\n var _ref2, _getFirstConditionVal, _encoding$fill;\n var fill = (_ref2 = (_getFirstConditionVal = getFirstConditionValue((_encoding$fill = encoding.fill) !== null && _encoding$fill !== void 0 ? _encoding$fill : encoding.color)) !== null && _getFirstConditionVal !== void 0 ? _getFirstConditionVal : markDef.fill) !== null && _ref2 !== void 0 ? _ref2 : filled && markDef.color;\n if (fill) {\n out.fill = signalOrValueRef(fill);\n }\n }\n }\n }\n if (out.stroke) {\n if (channel === 'stroke' || !filled && channel === COLOR) {\n delete out.stroke;\n } else {\n if (out.stroke['field'] || symbolStrokeColor) {\n // For others, remove stroke field\n delete out.stroke;\n } else if (isArray(out.stroke)) {\n var stroke = getFirstDefined(getFirstConditionValue(encoding.stroke || encoding.color), markDef.stroke, filled ? markDef.color : undefined);\n if (stroke) {\n out.stroke = {\n value: stroke\n };\n }\n }\n }\n }\n if (channel !== OPACITY) {\n var condition = isFieldDef(fieldOrDatumDef) && selectedCondition(model, legendCmpt, fieldOrDatumDef);\n if (condition) {\n out.opacity = [_objectSpread({\n test: condition\n }, signalOrValueRef(opacity !== null && opacity !== void 0 ? opacity : 1)), signalOrValueRef(config.legend.unselectedOpacity)];\n } else if (opacity) {\n out.opacity = signalOrValueRef(opacity);\n }\n }\n out = _objectSpread(_objectSpread({}, out), symbolsSpec);\n return isEmpty(out) ? undefined : out;\n}\nexport function gradient(gradientSpec, _ref3) {\n var _legendCmpt$get4;\n var model = _ref3.model,\n legendType = _ref3.legendType,\n legendCmpt = _ref3.legendCmpt;\n if (legendType !== 'gradient') {\n return undefined;\n }\n var config = model.config,\n markDef = model.markDef,\n encoding = model.encoding;\n var out = {};\n var gradientOpacity = (_legendCmpt$get4 = legendCmpt.get('gradientOpacity')) !== null && _legendCmpt$get4 !== void 0 ? _legendCmpt$get4 : config.legend.gradientOpacity;\n var opacity = gradientOpacity === undefined ? getMaxValue(encoding.opacity) || markDef.opacity : undefined;\n if (opacity) {\n // only apply opacity if it is neither zero or undefined\n out.opacity = signalOrValueRef(opacity);\n }\n out = _objectSpread(_objectSpread({}, out), gradientSpec);\n return isEmpty(out) ? undefined : out;\n}\nexport function labels(specifiedlabelsSpec, _ref4) {\n var fieldOrDatumDef = _ref4.fieldOrDatumDef,\n model = _ref4.model,\n channel = _ref4.channel,\n legendCmpt = _ref4.legendCmpt;\n var legend = model.legend(channel) || {};\n var config = model.config;\n var condition = isFieldDef(fieldOrDatumDef) ? selectedCondition(model, legendCmpt, fieldOrDatumDef) : undefined;\n var opacity = condition ? [{\n test: condition,\n value: 1\n }, {\n value: config.legend.unselectedOpacity\n }] : undefined;\n var format = legend.format,\n formatType = legend.formatType;\n var text = undefined;\n if (isCustomFormatType(formatType)) {\n text = formatCustomType({\n fieldOrDatumDef: fieldOrDatumDef,\n field: 'datum.value',\n format: format,\n formatType: formatType,\n config: config\n });\n } else if (format === undefined && formatType === undefined && config.customFormatTypes) {\n if (fieldOrDatumDef.type === 'quantitative' && config.numberFormatType) {\n text = formatCustomType({\n fieldOrDatumDef: fieldOrDatumDef,\n field: 'datum.value',\n format: config.numberFormat,\n formatType: config.numberFormatType,\n config: config\n });\n } else if (fieldOrDatumDef.type === 'temporal' && config.timeFormatType && isFieldDef(fieldOrDatumDef) && fieldOrDatumDef.timeUnit === undefined) {\n text = formatCustomType({\n fieldOrDatumDef: fieldOrDatumDef,\n field: 'datum.value',\n format: config.timeFormat,\n formatType: config.timeFormatType,\n config: config\n });\n }\n }\n var labelsSpec = _objectSpread(_objectSpread(_objectSpread({}, opacity ? {\n opacity: opacity\n } : {}), text ? {\n text: text\n } : {}), specifiedlabelsSpec);\n return isEmpty(labelsSpec) ? undefined : labelsSpec;\n}\nexport function entries(entriesSpec, _ref5) {\n var legendCmpt = _ref5.legendCmpt;\n var selections = legendCmpt.get('selections');\n return selections !== null && selections !== void 0 && selections.length ? _objectSpread(_objectSpread({}, entriesSpec), {}, {\n fill: {\n value: 'transparent'\n }\n }) : entriesSpec;\n}\nfunction getMaxValue(channelDef) {\n return getConditionValue(channelDef, function (v, conditionalDef) {\n return Math.max(v, conditionalDef.value);\n });\n}\nexport function getFirstConditionValue(channelDef) {\n return getConditionValue(channelDef, function (v, conditionalDef) {\n return getFirstDefined(v, conditionalDef.value);\n });\n}\nfunction getConditionValue(channelDef, reducer) {\n if (hasConditionalValueDef(channelDef)) {\n return array(channelDef.condition).reduce(reducer, channelDef.value);\n } else if (isValueDef(channelDef)) {\n return channelDef.value;\n }\n return undefined;\n}\nfunction selectedCondition(model, legendCmpt, fieldDef) {\n var selections = legendCmpt.get('selections');\n if (!(selections !== null && selections !== void 0 && selections.length)) return undefined;\n var field = stringValue(fieldDef.field);\n return selections.map(function (name) {\n var store = stringValue(varName(name) + STORE);\n return \"(!length(data(\".concat(store, \")) || (\").concat(name, \"[\").concat(field, \"] && indexof(\").concat(name, \"[\").concat(field, \"], datum.value) >= 0))\");\n }).join(' || ');\n}","import { isArray } from 'vega-util';\nimport { isColorChannel } from '../../channel';\nimport { title as fieldDefTitle, valueArray } from '../../channeldef';\nimport { isContinuousToContinuous } from '../../scale';\nimport { contains, getFirstDefined } from '../../util';\nimport { isSignalRef } from '../../vega.schema';\nimport { guideFormat, guideFormatType } from '../format';\nimport { getFirstConditionValue } from './encode';\nexport var legendRules = {\n direction: function direction(_ref) {\n var _direction = _ref.direction;\n return _direction;\n },\n format: function format(_ref2) {\n var fieldOrDatumDef = _ref2.fieldOrDatumDef,\n legend = _ref2.legend,\n config = _ref2.config;\n var format = legend.format,\n formatType = legend.formatType;\n return guideFormat(fieldOrDatumDef, fieldOrDatumDef.type, format, formatType, config, false);\n },\n formatType: function formatType(_ref3) {\n var legend = _ref3.legend,\n fieldOrDatumDef = _ref3.fieldOrDatumDef,\n scaleType = _ref3.scaleType;\n var formatType = legend.formatType;\n return guideFormatType(formatType, fieldOrDatumDef, scaleType);\n },\n gradientLength: function gradientLength(params) {\n var _ref4, _legend$gradientLengt;\n var legend = params.legend,\n legendConfig = params.legendConfig;\n return (_ref4 = (_legend$gradientLengt = legend.gradientLength) !== null && _legend$gradientLengt !== void 0 ? _legend$gradientLengt : legendConfig.gradientLength) !== null && _ref4 !== void 0 ? _ref4 : defaultGradientLength(params);\n },\n labelOverlap: function labelOverlap(_ref5) {\n var _ref6, _legend$labelOverlap;\n var legend = _ref5.legend,\n legendConfig = _ref5.legendConfig,\n scaleType = _ref5.scaleType;\n return (_ref6 = (_legend$labelOverlap = legend.labelOverlap) !== null && _legend$labelOverlap !== void 0 ? _legend$labelOverlap : legendConfig.labelOverlap) !== null && _ref6 !== void 0 ? _ref6 : defaultLabelOverlap(scaleType);\n },\n symbolType: function symbolType(_ref7) {\n var _legend$symbolType;\n var legend = _ref7.legend,\n markDef = _ref7.markDef,\n channel = _ref7.channel,\n encoding = _ref7.encoding;\n return (_legend$symbolType = legend.symbolType) !== null && _legend$symbolType !== void 0 ? _legend$symbolType : defaultSymbolType(markDef.type, channel, encoding.shape, markDef.shape);\n },\n title: function title(_ref8) {\n var fieldOrDatumDef = _ref8.fieldOrDatumDef,\n config = _ref8.config;\n return fieldDefTitle(fieldOrDatumDef, config, {\n allowDisabling: true\n });\n },\n type: function type(_ref9) {\n var legendType = _ref9.legendType,\n scaleType = _ref9.scaleType,\n channel = _ref9.channel;\n if (isColorChannel(channel) && isContinuousToContinuous(scaleType)) {\n if (legendType === 'gradient') {\n return undefined;\n }\n } else if (legendType === 'symbol') {\n return undefined;\n }\n return legendType;\n },\n values: function values(_ref10) {\n var fieldOrDatumDef = _ref10.fieldOrDatumDef,\n legend = _ref10.legend;\n return _values(legend, fieldOrDatumDef);\n }\n};\nfunction _values(legend, fieldOrDatumDef) {\n var vals = legend.values;\n if (isArray(vals)) {\n return valueArray(fieldOrDatumDef, vals);\n } else if (isSignalRef(vals)) {\n return vals;\n }\n return undefined;\n}\nexport { _values as values };\nexport function defaultSymbolType(mark, channel, shapeChannelDef, markShape) {\n if (channel !== 'shape') {\n var _getFirstConditionVal;\n // use the value from the shape encoding or the mark config if they exist\n var shape = (_getFirstConditionVal = getFirstConditionValue(shapeChannelDef)) !== null && _getFirstConditionVal !== void 0 ? _getFirstConditionVal : markShape;\n if (shape) {\n return shape;\n }\n }\n switch (mark) {\n case 'bar':\n case 'rect':\n case 'image':\n case 'square':\n return 'square';\n case 'line':\n case 'trail':\n case 'rule':\n return 'stroke';\n case 'arc':\n case 'point':\n case 'circle':\n case 'tick':\n case 'geoshape':\n case 'area':\n case 'text':\n return 'circle';\n }\n}\nexport function clipHeight(legendType) {\n if (legendType === 'gradient') {\n return 20;\n }\n return undefined;\n}\nexport function getLegendType(params) {\n var legend = params.legend;\n return getFirstDefined(legend.type, defaultType(params));\n}\nexport function defaultType(_ref11) {\n var channel = _ref11.channel,\n timeUnit = _ref11.timeUnit,\n scaleType = _ref11.scaleType;\n // Following the logic in https://github.com/vega/vega-parser/blob/master/src/parsers/legend.js\n if (isColorChannel(channel)) {\n if (contains(['quarter', 'month', 'day'], timeUnit)) {\n return 'symbol';\n }\n if (isContinuousToContinuous(scaleType)) {\n return 'gradient';\n }\n }\n return 'symbol';\n}\nexport function getDirection(_ref12) {\n var _ref13, _legend$direction;\n var legendConfig = _ref12.legendConfig,\n legendType = _ref12.legendType,\n orient = _ref12.orient,\n legend = _ref12.legend;\n return (_ref13 = (_legend$direction = legend.direction) !== null && _legend$direction !== void 0 ? _legend$direction : legendConfig[legendType ? 'gradientDirection' : 'symbolDirection']) !== null && _ref13 !== void 0 ? _ref13 : defaultDirection(orient, legendType);\n}\nexport function defaultDirection(orient, legendType) {\n switch (orient) {\n case 'top':\n case 'bottom':\n return 'horizontal';\n case 'left':\n case 'right':\n case 'none':\n case undefined:\n // undefined = \"right\" in Vega\n return undefined;\n // vertical is Vega's default\n default:\n // top-left / ...\n // For inner legend, uses compact layout like Tableau\n return legendType === 'gradient' ? 'horizontal' : undefined;\n }\n}\nexport function defaultGradientLength(_ref14) {\n var legendConfig = _ref14.legendConfig,\n model = _ref14.model,\n direction = _ref14.direction,\n orient = _ref14.orient,\n scaleType = _ref14.scaleType;\n var gradientHorizontalMaxLength = legendConfig.gradientHorizontalMaxLength,\n gradientHorizontalMinLength = legendConfig.gradientHorizontalMinLength,\n gradientVerticalMaxLength = legendConfig.gradientVerticalMaxLength,\n gradientVerticalMinLength = legendConfig.gradientVerticalMinLength;\n if (isContinuousToContinuous(scaleType)) {\n if (direction === 'horizontal') {\n if (orient === 'top' || orient === 'bottom') {\n return gradientLengthSignal(model, 'width', gradientHorizontalMinLength, gradientHorizontalMaxLength);\n } else {\n return gradientHorizontalMinLength;\n }\n } else {\n // vertical / undefined (Vega uses vertical by default)\n return gradientLengthSignal(model, 'height', gradientVerticalMinLength, gradientVerticalMaxLength);\n }\n }\n return undefined;\n}\nfunction gradientLengthSignal(model, sizeType, min, max) {\n var sizeSignal = model.getSizeSignalRef(sizeType).signal;\n return {\n signal: \"clamp(\".concat(sizeSignal, \", \").concat(min, \", \").concat(max, \")\")\n };\n}\nexport function defaultLabelOverlap(scaleType) {\n if (contains(['quantile', 'threshold', 'log', 'symlog'], scaleType)) {\n return 'greedy';\n }\n return undefined;\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { COLOR, SHAPE } from '../../channel';\nimport { getFieldOrDatumDef, isFieldDef } from '../../channeldef';\nimport { LEGEND_SCALE_CHANNELS } from '../../legend';\nimport { normalizeTimeUnit } from '../../timeunit';\nimport { GEOJSON } from '../../type';\nimport { deleteNestedProperty, isEmpty, keys, varName } from '../../util';\nimport { mergeTitleComponent } from '../common';\nimport { guideEncodeEntry } from '../guide';\nimport { isUnitModel } from '../model';\nimport { parseGuideResolve } from '../resolve';\nimport { parseInteractiveLegend } from '../selection/legends';\nimport { defaultTieBreaker, makeImplicit, mergeValuesWithExplicit } from '../split';\nimport { LegendComponent, LEGEND_COMPONENT_PROPERTIES } from './component';\nimport { legendEncodeRules } from './encode';\nimport { getDirection, getLegendType, legendRules } from './properties';\nexport function parseLegend(model) {\n var legendComponent = isUnitModel(model) ? parseUnitLegend(model) : parseNonUnitLegend(model);\n model.component.legends = legendComponent;\n return legendComponent;\n}\nfunction parseUnitLegend(model) {\n var encoding = model.encoding;\n var legendComponent = {};\n for (var _i = 0, _arr = [COLOR].concat(_toConsumableArray(LEGEND_SCALE_CHANNELS)); _i < _arr.length; _i++) {\n var channel = _arr[_i];\n var def = getFieldOrDatumDef(encoding[channel]);\n if (!def || !model.getScaleComponent(channel)) {\n continue;\n }\n if (channel === SHAPE && isFieldDef(def) && def.type === GEOJSON) {\n continue;\n }\n legendComponent[channel] = parseLegendForChannel(model, channel);\n }\n return legendComponent;\n}\nfunction getLegendDefWithScale(model, channel) {\n var scale = model.scaleName(channel);\n if (model.mark === 'trail') {\n if (channel === 'color') {\n // trail is a filled mark, but its default symbolType (\"stroke\") should use \"stroke\"\n return {\n stroke: scale\n };\n } else if (channel === 'size') {\n return {\n strokeWidth: scale\n };\n }\n }\n if (channel === 'color') {\n return model.markDef.filled ? {\n fill: scale\n } : {\n stroke: scale\n };\n }\n return _defineProperty({}, channel, scale);\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction isExplicit(value, property, legend, fieldDef) {\n switch (property) {\n case 'disable':\n return legend !== undefined;\n // if axis is specified or null/false, then its enable/disable state is explicit\n case 'values':\n // specified legend.values is already respected, but may get transformed.\n return !!(legend !== null && legend !== void 0 && legend.values);\n case 'title':\n // title can be explicit if fieldDef.title is set\n if (property === 'title' && value === (fieldDef === null || fieldDef === void 0 ? void 0 : fieldDef.title)) {\n return true;\n }\n }\n // Otherwise, things are explicit if the returned value matches the specified property\n return value === (legend || {})[property];\n}\nexport function parseLegendForChannel(model, channel) {\n var _normalizeTimeUnit, _legend$encoding, _legend;\n var legend = model.legend(channel);\n var markDef = model.markDef,\n encoding = model.encoding,\n config = model.config;\n var legendConfig = config.legend;\n var legendCmpt = new LegendComponent({}, getLegendDefWithScale(model, channel));\n parseInteractiveLegend(model, channel, legendCmpt);\n var disable = legend !== undefined ? !legend : legendConfig.disable;\n legendCmpt.set('disable', disable, legend !== undefined);\n if (disable) {\n return legendCmpt;\n }\n legend = legend || {};\n var scaleType = model.getScaleComponent(channel).get('type');\n var fieldOrDatumDef = getFieldOrDatumDef(encoding[channel]);\n var timeUnit = isFieldDef(fieldOrDatumDef) ? (_normalizeTimeUnit = normalizeTimeUnit(fieldOrDatumDef.timeUnit)) === null || _normalizeTimeUnit === void 0 ? void 0 : _normalizeTimeUnit.unit : undefined;\n var orient = legend.orient || config.legend.orient || 'right';\n var legendType = getLegendType({\n legend: legend,\n channel: channel,\n timeUnit: timeUnit,\n scaleType: scaleType\n });\n var direction = getDirection({\n legend: legend,\n legendType: legendType,\n orient: orient,\n legendConfig: legendConfig\n });\n var ruleParams = {\n legend: legend,\n channel: channel,\n model: model,\n markDef: markDef,\n encoding: encoding,\n fieldOrDatumDef: fieldOrDatumDef,\n legendConfig: legendConfig,\n config: config,\n scaleType: scaleType,\n orient: orient,\n legendType: legendType,\n direction: direction\n };\n var _iterator = _createForOfIteratorHelper(LEGEND_COMPONENT_PROPERTIES),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var property = _step.value;\n if (legendType === 'gradient' && property.startsWith('symbol') || legendType === 'symbol' && property.startsWith('gradient')) {\n continue;\n }\n var _value = property in legendRules ? legendRules[property](ruleParams) : legend[property];\n if (_value !== undefined) {\n var explicit = isExplicit(_value, property, legend, model.fieldDef(channel));\n if (explicit || config.legend[property] === undefined) {\n legendCmpt.set(property, _value, explicit);\n }\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n var legendEncoding = (_legend$encoding = (_legend = legend) === null || _legend === void 0 ? void 0 : _legend.encoding) !== null && _legend$encoding !== void 0 ? _legend$encoding : {};\n var selections = legendCmpt.get('selections');\n var legendEncode = {};\n var legendEncodeParams = {\n fieldOrDatumDef: fieldOrDatumDef,\n model: model,\n channel: channel,\n legendCmpt: legendCmpt,\n legendType: legendType\n };\n for (var _i2 = 0, _arr2 = ['labels', 'legend', 'title', 'symbols', 'gradient', 'entries']; _i2 < _arr2.length; _i2++) {\n var _legendEncoding$part;\n var part = _arr2[_i2];\n var legendEncodingPart = guideEncodeEntry((_legendEncoding$part = legendEncoding[part]) !== null && _legendEncoding$part !== void 0 ? _legendEncoding$part : {}, model);\n var value = part in legendEncodeRules ? legendEncodeRules[part](legendEncodingPart, legendEncodeParams) // apply rule\n : legendEncodingPart; // no rule -- just default values\n if (value !== undefined && !isEmpty(value)) {\n legendEncode[part] = _objectSpread(_objectSpread(_objectSpread({}, selections !== null && selections !== void 0 && selections.length && isFieldDef(fieldOrDatumDef) ? {\n name: \"\".concat(varName(fieldOrDatumDef.field), \"_legend_\").concat(part)\n } : {}), selections !== null && selections !== void 0 && selections.length ? {\n interactive: !!selections\n } : {}), {}, {\n update: value\n });\n }\n }\n if (!isEmpty(legendEncode)) {\n var _legend2;\n legendCmpt.set('encode', legendEncode, !!((_legend2 = legend) !== null && _legend2 !== void 0 && _legend2.encoding));\n }\n return legendCmpt;\n}\nfunction parseNonUnitLegend(model) {\n var _model$component = model.component,\n legends = _model$component.legends,\n resolve = _model$component.resolve;\n var _iterator2 = _createForOfIteratorHelper(model.children),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var child = _step2.value;\n parseLegend(child);\n var _iterator4 = _createForOfIteratorHelper(keys(child.component.legends)),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var channel = _step4.value;\n resolve.legend[channel] = parseGuideResolve(model.component.resolve, channel);\n if (resolve.legend[channel] === 'shared') {\n // If the resolve says shared (and has not been overridden)\n // We will try to merge and see if there is a conflict\n legends[channel] = mergeLegendComponent(legends[channel], child.component.legends[channel]);\n if (!legends[channel]) {\n // If merge returns nothing, there is a conflict so we cannot make the legend shared.\n // Thus, mark legend as independent and remove the legend component.\n resolve.legend[channel] = 'independent';\n delete legends[channel];\n }\n }\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n var _iterator3 = _createForOfIteratorHelper(keys(legends)),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var _channel = _step3.value;\n var _iterator5 = _createForOfIteratorHelper(model.children),\n _step5;\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var _child = _step5.value;\n if (!_child.component.legends[_channel]) {\n // skip if the child does not have a particular legend\n continue;\n }\n if (resolve.legend[_channel] === 'shared') {\n // After merging shared legend, make sure to remove legend from child\n delete _child.component.legends[_channel];\n }\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n return legends;\n}\nexport function mergeLegendComponent(mergedLegend, childLegend) {\n if (!mergedLegend) {\n return childLegend.clone();\n }\n var mergedOrient = mergedLegend.getWithExplicit('orient');\n var childOrient = childLegend.getWithExplicit('orient');\n if (mergedOrient.explicit && childOrient.explicit && mergedOrient.value !== childOrient.value) {\n // TODO: throw warning if resolve is explicit (We don't have info about explicit/implicit resolve yet.)\n // Cannot merge due to inconsistent orient\n return undefined;\n }\n var typeMerged = false;\n // Otherwise, let's merge\n var _iterator6 = _createForOfIteratorHelper(LEGEND_COMPONENT_PROPERTIES),\n _step6;\n try {\n var _loop = function _loop() {\n var prop = _step6.value;\n var mergedValueWithExplicit = mergeValuesWithExplicit(mergedLegend.getWithExplicit(prop), childLegend.getWithExplicit(prop), prop, 'legend',\n // Tie breaker function\n function (v1, v2) {\n switch (prop) {\n case 'symbolType':\n return mergeSymbolType(v1, v2);\n case 'title':\n return mergeTitleComponent(v1, v2);\n case 'type':\n // There are only two types. If we have different types, then prefer symbol over gradient.\n typeMerged = true;\n return makeImplicit('symbol');\n }\n return defaultTieBreaker(v1, v2, prop, 'legend');\n });\n mergedLegend.setWithExplicit(prop, mergedValueWithExplicit);\n };\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n _loop();\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n if (typeMerged) {\n var _mergedLegend$implici, _mergedLegend$explici;\n if ((_mergedLegend$implici = mergedLegend.implicit) !== null && _mergedLegend$implici !== void 0 && (_mergedLegend$implici = _mergedLegend$implici.encode) !== null && _mergedLegend$implici !== void 0 && _mergedLegend$implici.gradient) {\n deleteNestedProperty(mergedLegend.implicit, ['encode', 'gradient']);\n }\n if ((_mergedLegend$explici = mergedLegend.explicit) !== null && _mergedLegend$explici !== void 0 && (_mergedLegend$explici = _mergedLegend$explici.encode) !== null && _mergedLegend$explici !== void 0 && _mergedLegend$explici.gradient) {\n deleteNestedProperty(mergedLegend.explicit, ['encode', 'gradient']);\n }\n }\n return mergedLegend;\n}\nfunction mergeSymbolType(st1, st2) {\n if (st2.value === 'circle') {\n // prefer \"circle\" over \"stroke\"\n return st2;\n }\n return st1;\n}","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"disable\", \"labelExpr\", \"selections\"];\nimport \"core-js/modules/es.array.flat.js\";\nimport \"core-js/modules/es.array.unscopables.flat.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { LEGEND_SCALE_CHANNELS } from '../../legend';\nimport { keys, replaceAll, stringify, vals } from '../../util';\nimport { isSignalRef } from '../../vega.schema';\nimport { mergeLegendComponent } from './parse';\nfunction setLegendEncode(legend, part, vgProp, vgRef) {\n var _legend$encode, _a$part, _b$update;\n var _a, _b;\n (_legend$encode = legend.encode) !== null && _legend$encode !== void 0 ? _legend$encode : legend.encode = {};\n (_a$part = (_a = legend.encode)[part]) !== null && _a$part !== void 0 ? _a$part : _a[part] = {};\n (_b$update = (_b = legend.encode[part]).update) !== null && _b$update !== void 0 ? _b$update : _b.update = {};\n // TODO: remove as any after https://github.com/prisma/nexus-prisma/issues/291\n legend.encode[part].update[vgProp] = vgRef;\n}\nexport function assembleLegends(model) {\n var legendComponentIndex = model.component.legends;\n var legendByDomain = {};\n var _iterator = _createForOfIteratorHelper(keys(legendComponentIndex)),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var channel = _step.value;\n var scaleComponent = model.getScaleComponent(channel);\n var domainHash = stringify(scaleComponent.get('domains'));\n if (legendByDomain[domainHash]) {\n var _iterator2 = _createForOfIteratorHelper(legendByDomain[domainHash]),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var mergedLegendComponent = _step2.value;\n var merged = mergeLegendComponent(mergedLegendComponent, legendComponentIndex[channel]);\n if (!merged) {\n // If cannot merge, need to add this legend separately\n legendByDomain[domainHash].push(legendComponentIndex[channel]);\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n } else {\n legendByDomain[domainHash] = [legendComponentIndex[channel].clone()];\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n var legends = vals(legendByDomain).flat().map(function (l) {\n return assembleLegend(l, model.config);\n }).filter(function (l) {\n return l !== undefined;\n });\n return legends;\n}\nexport function assembleLegend(legendCmpt, config) {\n var _legend$encode2;\n var _legendCmpt$combine = legendCmpt.combine(),\n disable = _legendCmpt$combine.disable,\n labelExpr = _legendCmpt$combine.labelExpr,\n selections = _legendCmpt$combine.selections,\n legend = _objectWithoutProperties(_legendCmpt$combine, _excluded);\n if (disable) {\n return undefined;\n }\n if (config.aria === false && legend.aria == undefined) {\n legend.aria = false;\n }\n if ((_legend$encode2 = legend.encode) !== null && _legend$encode2 !== void 0 && _legend$encode2.symbols) {\n var out = legend.encode.symbols.update;\n if (out.fill && out.fill['value'] !== 'transparent' && !out.stroke && !legend.stroke) {\n // For non color channel's legend, we need to override symbol stroke config from Vega config if stroke channel is not used.\n out.stroke = {\n value: 'transparent'\n };\n }\n // Remove properties that the legend is encoding.\n var _iterator3 = _createForOfIteratorHelper(LEGEND_SCALE_CHANNELS),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var property = _step3.value;\n if (legend[property]) {\n delete out[property];\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n }\n if (!legend.title) {\n // title schema doesn't include null, ''\n delete legend.title;\n }\n if (labelExpr !== undefined) {\n var _legend$encode3;\n var expr = labelExpr;\n if ((_legend$encode3 = legend.encode) !== null && _legend$encode3 !== void 0 && (_legend$encode3 = _legend$encode3.labels) !== null && _legend$encode3 !== void 0 && _legend$encode3.update && isSignalRef(legend.encode.labels.update.text)) {\n expr = replaceAll(labelExpr, 'datum.label', legend.encode.labels.update.text.signal);\n }\n setLegendEncode(legend, 'labels', 'text', {\n signal: expr\n });\n }\n return legend;\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { contains } from '../../util';\nimport { isSignalRef } from '../../vega.schema';\nimport { isConcatModel, isLayerModel } from '../model';\nexport function assembleProjections(model) {\n if (isLayerModel(model) || isConcatModel(model)) {\n return assembleProjectionsForModelAndChildren(model);\n } else {\n return assembleProjectionForModel(model);\n }\n}\nexport function assembleProjectionsForModelAndChildren(model) {\n return model.children.reduce(function (projections, child) {\n return projections.concat(child.assembleProjections());\n }, assembleProjectionForModel(model));\n}\nexport function assembleProjectionForModel(model) {\n var component = model.component.projection;\n if (!component || component.merged) {\n return [];\n }\n var projection = component.combine();\n var name = projection.name; // we need to extract name so that it is always present in the output and pass TS type validation\n if (!component.data) {\n // generate custom projection, no automatic fitting\n return [_objectSpread(_objectSpread({\n name: name\n }, {\n translate: {\n signal: '[width / 2, height / 2]'\n }\n }), projection)];\n } else {\n // generate projection that uses extent fitting\n var size = {\n signal: \"[\".concat(component.size.map(function (ref) {\n return ref.signal;\n }).join(', '), \"]\")\n };\n var fits = component.data.reduce(function (sources, data) {\n var source = isSignalRef(data) ? data.signal : \"data('\".concat(model.lookupDataSource(data), \"')\");\n if (!contains(sources, source)) {\n // build a unique list of sources\n sources.push(source);\n }\n return sources;\n }, []);\n if (fits.length <= 0) {\n throw new Error(\"Projection's fit didn't find any data sources\");\n }\n return [_objectSpread({\n name: name,\n size: size,\n fit: {\n signal: fits.length > 1 ? \"[\".concat(fits.join(', '), \"]\") : fits[0]\n }\n }, projection)];\n }\n}","export var PROJECTION_PROPERTIES = ['type', 'clipAngle', 'clipExtent', 'center', 'rotate', 'precision', 'reflectX', 'reflectY', 'coefficient', 'distance', 'fraction', 'lobes', 'parallel', 'radius', 'ratio', 'spacing', 'tilt'];","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { Split } from '../split';\nexport var ProjectionComponent = /*#__PURE__*/function (_Split) {\n _inherits(ProjectionComponent, _Split);\n var _super = _createSuper(ProjectionComponent);\n function ProjectionComponent(name, specifiedProjection, size, data) {\n var _this;\n _classCallCheck(this, ProjectionComponent);\n _this = _super.call(this, _objectSpread({}, specifiedProjection),\n // all explicit properties of projection\n {\n name: name\n } // name as initial implicit property\n );\n\n _this.specifiedProjection = specifiedProjection;\n _this.size = size;\n _this.data = data;\n _this.merged = false;\n return _this;\n }\n /**\n * Whether the projection parameters should fit provided data.\n */\n _createClass(ProjectionComponent, [{\n key: \"isFit\",\n get: function get() {\n return !!this.data;\n }\n }]);\n return ProjectionComponent;\n}(Split);","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { hasOwnProperty } from 'vega-util';\nimport { LATITUDE, LATITUDE2, LONGITUDE, LONGITUDE2, SHAPE } from '../../channel';\nimport { getFieldOrDatumDef } from '../../channeldef';\nimport { DataSourceType } from '../../data';\nimport { replaceExprRef } from '../../expr';\nimport { PROJECTION_PROPERTIES } from '../../projection';\nimport { GEOJSON } from '../../type';\nimport { deepEqual, duplicate, every } from '../../util';\nimport { isUnitModel } from '../model';\nimport { ProjectionComponent } from './component';\nexport function parseProjection(model) {\n model.component.projection = isUnitModel(model) ? parseUnitProjection(model) : parseNonUnitProjections(model);\n}\nfunction parseUnitProjection(model) {\n if (model.hasProjection) {\n var _replaceExprRef;\n var proj = replaceExprRef(model.specifiedProjection);\n var fit = !(proj && (proj.scale != null || proj.translate != null));\n var size = fit ? [model.getSizeSignalRef('width'), model.getSizeSignalRef('height')] : undefined;\n var data = fit ? gatherFitData(model) : undefined;\n var projComp = new ProjectionComponent(model.projectionName(true), _objectSpread(_objectSpread({}, (_replaceExprRef = replaceExprRef(model.config.projection)) !== null && _replaceExprRef !== void 0 ? _replaceExprRef : {}), proj !== null && proj !== void 0 ? proj : {}), size, data);\n if (!projComp.get('type')) {\n projComp.set('type', 'equalEarth', false);\n }\n return projComp;\n }\n return undefined;\n}\nfunction gatherFitData(model) {\n var data = [];\n var encoding = model.encoding;\n for (var _i = 0, _arr = [[LONGITUDE, LATITUDE], [LONGITUDE2, LATITUDE2]]; _i < _arr.length; _i++) {\n var posssiblePair = _arr[_i];\n if (getFieldOrDatumDef(encoding[posssiblePair[0]]) || getFieldOrDatumDef(encoding[posssiblePair[1]])) {\n data.push({\n signal: model.getName(\"geojson_\".concat(data.length))\n });\n }\n }\n if (model.channelHasField(SHAPE) && model.typedFieldDef(SHAPE).type === GEOJSON) {\n data.push({\n signal: model.getName(\"geojson_\".concat(data.length))\n });\n }\n if (data.length === 0) {\n // main source is geojson, so we can just use that\n data.push(model.requestDataName(DataSourceType.Main));\n }\n return data;\n}\nfunction mergeIfNoConflict(first, second) {\n var allPropertiesShared = every(PROJECTION_PROPERTIES, function (prop) {\n // neither has the property\n if (!hasOwnProperty(first.explicit, prop) && !hasOwnProperty(second.explicit, prop)) {\n return true;\n }\n // both have property and an equal value for property\n if (hasOwnProperty(first.explicit, prop) && hasOwnProperty(second.explicit, prop) &&\n // some properties might be signals or objects and require hashing for comparison\n deepEqual(first.get(prop), second.get(prop))) {\n return true;\n }\n return false;\n });\n var size = deepEqual(first.size, second.size);\n if (size) {\n if (allPropertiesShared) {\n return first;\n } else if (deepEqual(first.explicit, {})) {\n return second;\n } else if (deepEqual(second.explicit, {})) {\n return first;\n }\n }\n // if all properties don't match, let each unit spec have its own projection\n return null;\n}\nfunction parseNonUnitProjections(model) {\n if (model.children.length === 0) {\n return undefined;\n }\n var nonUnitProjection;\n // parse all children first\n var _iterator = _createForOfIteratorHelper(model.children),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _child = _step.value;\n parseProjection(_child);\n }\n // analyze parsed projections, attempt to merge\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n var mergable = every(model.children, function (child) {\n var projection = child.component.projection;\n if (!projection) {\n // child layer does not use a projection\n return true;\n } else if (!nonUnitProjection) {\n // cached 'projection' is null, cache this one\n nonUnitProjection = projection;\n return true;\n } else {\n var merge = mergeIfNoConflict(nonUnitProjection, projection);\n if (merge) {\n nonUnitProjection = merge;\n }\n return !!merge;\n }\n });\n // if cached one and all other children share the same projection,\n if (nonUnitProjection && mergable) {\n // so we can elevate it to the layer level\n var name = model.projectionName(true);\n var modelProjection = new ProjectionComponent(name, nonUnitProjection.specifiedProjection, nonUnitProjection.size, duplicate(nonUnitProjection.data));\n // rename and assign all others as merged\n var _iterator2 = _createForOfIteratorHelper(model.children),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var child = _step2.value;\n var projection = child.component.projection;\n if (projection) {\n if (projection.isFit) {\n var _modelProjection$data;\n (_modelProjection$data = modelProjection.data).push.apply(_modelProjection$data, _toConsumableArray(child.component.projection.data));\n }\n child.renameProjection(projection.get('name'), name);\n projection.merged = true;\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n return modelProjection;\n }\n return undefined;\n}","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nimport _toArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toArray.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nvar _excluded = [\"extent\"];\nimport \"core-js/modules/es.array.flat.js\";\nimport \"core-js/modules/es.array.unscopables.flat.js\";\nimport \"core-js/modules/es.array.flat-map.js\";\nimport \"core-js/modules/es.array.unscopables.flat-map.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { isString } from 'vega-util';\nimport { binToString, isBinning, isParameterExtent } from '../../bin';\nimport { binRequiresRange, isTypedFieldDef, normalizeBin, vgField } from '../../channeldef';\nimport { duplicate, hash as _hash, isEmpty, keys, replacePathInField, unique, vals } from '../../util';\nimport { binFormatExpression } from '../format';\nimport { isUnitModel } from '../model';\nimport { parseSelectionExtent } from '../selection/parse';\nimport { DataFlowNode } from './dataflow';\nfunction rangeFormula(model, fieldDef, channel, config) {\n if (binRequiresRange(fieldDef, channel)) {\n var _ref, _model$axis;\n // read format from axis or legend, if there is no format then use config.numberFormat\n var guide = isUnitModel(model) ? (_ref = (_model$axis = model.axis(channel)) !== null && _model$axis !== void 0 ? _model$axis : model.legend(channel)) !== null && _ref !== void 0 ? _ref : {} : {};\n var startField = vgField(fieldDef, {\n expr: 'datum'\n });\n var endField = vgField(fieldDef, {\n expr: 'datum',\n binSuffix: 'end'\n });\n return {\n formulaAs: vgField(fieldDef, {\n binSuffix: 'range',\n forAs: true\n }),\n formula: binFormatExpression(startField, endField, guide.format, guide.formatType, config)\n };\n }\n return {};\n}\nfunction binKey(bin, field) {\n return \"\".concat(binToString(bin), \"_\").concat(field);\n}\nfunction getSignalsFromModel(model, key) {\n return {\n signal: model.getName(\"\".concat(key, \"_bins\")),\n extentSignal: model.getName(\"\".concat(key, \"_extent\"))\n };\n}\nexport function getBinSignalName(model, field, bin) {\n var _normalizeBin;\n var normalizedBin = (_normalizeBin = normalizeBin(bin, undefined)) !== null && _normalizeBin !== void 0 ? _normalizeBin : {};\n var key = binKey(normalizedBin, field);\n return model.getName(\"\".concat(key, \"_bins\"));\n}\nfunction isBinTransform(t) {\n return 'as' in t;\n}\nfunction createBinComponent(t, bin, model) {\n var as;\n var span;\n if (isBinTransform(t)) {\n as = isString(t.as) ? [t.as, \"\".concat(t.as, \"_end\")] : [t.as[0], t.as[1]];\n } else {\n as = [vgField(t, {\n forAs: true\n }), vgField(t, {\n binSuffix: 'end',\n forAs: true\n })];\n }\n var normalizedBin = _objectSpread({}, normalizeBin(bin, undefined));\n var key = binKey(normalizedBin, t.field);\n var _getSignalsFromModel = getSignalsFromModel(model, key),\n signal = _getSignalsFromModel.signal,\n extentSignal = _getSignalsFromModel.extentSignal;\n if (isParameterExtent(normalizedBin.extent)) {\n var ext = normalizedBin.extent;\n span = parseSelectionExtent(model, ext.param, ext);\n delete normalizedBin.extent; // Vega-Lite selection extent map to Vega's span property.\n }\n\n var binComponent = _objectSpread(_objectSpread(_objectSpread({\n bin: normalizedBin,\n field: t.field,\n as: [as]\n }, signal ? {\n signal: signal\n } : {}), extentSignal ? {\n extentSignal: extentSignal\n } : {}), span ? {\n span: span\n } : {});\n return {\n key: key,\n binComponent: binComponent\n };\n}\nexport var BinNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(BinNode, _DataFlowNode);\n var _super = _createSuper(BinNode);\n function BinNode(parent, bins) {\n var _this;\n _classCallCheck(this, BinNode);\n _this = _super.call(this, parent);\n _this.bins = bins;\n return _this;\n }\n _createClass(BinNode, [{\n key: \"clone\",\n value: function clone() {\n return new BinNode(null, duplicate(this.bins));\n }\n }, {\n key: \"merge\",\n value:\n /**\n * Merge bin nodes. This method either integrates the bin config from the other node\n * or if this node already has a bin config, renames the corresponding signal in the model.\n */\n function merge(other, renameSignal) {\n var _iterator = _createForOfIteratorHelper(keys(other.bins)),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var key = _step.value;\n if (key in this.bins) {\n renameSignal(other.bins[key].signal, this.bins[key].signal);\n // Ensure that we don't have duplicate names for signal pairs\n this.bins[key].as = unique([].concat(_toConsumableArray(this.bins[key].as), _toConsumableArray(other.bins[key].as)), _hash);\n } else {\n this.bins[key] = other.bins[key];\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n var _iterator2 = _createForOfIteratorHelper(other.children),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var child = _step2.value;\n other.removeChild(child);\n child.parent = this;\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n other.remove();\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return new Set(vals(this.bins).map(function (c) {\n return c.as;\n }).flat(2));\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n return new Set(vals(this.bins).map(function (c) {\n return c.field;\n }));\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return \"Bin \".concat(_hash(this.bins));\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n return vals(this.bins).flatMap(function (bin) {\n var transform = [];\n var _bin$as = _toArray(bin.as),\n binAs = _bin$as[0],\n remainingAs = _bin$as.slice(1);\n var _bin$bin = bin.bin,\n extent = _bin$bin.extent,\n params = _objectWithoutProperties(_bin$bin, _excluded);\n var binTrans = _objectSpread(_objectSpread(_objectSpread({\n type: 'bin',\n field: replacePathInField(bin.field),\n as: binAs,\n signal: bin.signal\n }, !isParameterExtent(extent) ? {\n extent: extent\n } : {\n extent: null\n }), bin.span ? {\n span: {\n signal: \"span(\".concat(bin.span, \")\")\n }\n } : {}), params);\n if (!extent && bin.extentSignal) {\n transform.push({\n type: 'extent',\n field: replacePathInField(bin.field),\n signal: bin.extentSignal\n });\n binTrans.extent = {\n signal: bin.extentSignal\n };\n }\n transform.push(binTrans);\n var _iterator3 = _createForOfIteratorHelper(remainingAs),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var as = _step3.value;\n for (var i = 0; i < 2; i++) {\n transform.push({\n type: 'formula',\n expr: vgField({\n field: binAs[i]\n }, {\n expr: 'datum'\n }),\n as: as[i]\n });\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n if (bin.formula) {\n transform.push({\n type: 'formula',\n expr: bin.formula,\n as: bin.formulaAs\n });\n }\n return transform;\n });\n }\n }], [{\n key: \"makeFromEncoding\",\n value: function makeFromEncoding(parent, model) {\n var bins = model.reduceFieldDef(function (binComponentIndex, fieldDef, channel) {\n if (isTypedFieldDef(fieldDef) && isBinning(fieldDef.bin)) {\n var _createBinComponent = createBinComponent(fieldDef, fieldDef.bin, model),\n key = _createBinComponent.key,\n binComponent = _createBinComponent.binComponent;\n binComponentIndex[key] = _objectSpread(_objectSpread(_objectSpread({}, binComponent), binComponentIndex[key]), rangeFormula(model, fieldDef, channel, model.config));\n }\n return binComponentIndex;\n }, {});\n if (isEmpty(bins)) {\n return null;\n }\n return new BinNode(parent, bins);\n }\n /**\n * Creates a bin node from BinTransform.\n * The optional parameter should provide\n */\n }, {\n key: \"makeFromTransform\",\n value: function makeFromTransform(parent, t, model) {\n var _createBinComponent2 = createBinComponent(t, t.bin, model),\n key = _createBinComponent2.key,\n binComponent = _createBinComponent2.binComponent;\n return new BinNode(parent, _defineProperty({}, key, binComponent));\n }\n }]);\n return BinNode;\n}(DataFlowNode);","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}","import _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { isArgmaxDef, isArgminDef } from '../../aggregate';\nimport { getPositionChannelFromLatLong, getSecondaryRangeChannel, isGeoPositionChannel, isScaleChannel } from '../../channel';\nimport { binRequiresRange, hasBandEnd, isScaleFieldDef, isTypedFieldDef, vgField } from '../../channeldef';\nimport * as log from '../../log';\nimport { isFieldRange } from '../../scale';\nimport { duplicate, hash as _hash, keys, replacePathInField, setEqual } from '../../util';\nimport { isUnitModel } from '../model';\nimport { DataFlowNode } from './dataflow';\nfunction addDimension(dims, channel, fieldDef, model) {\n var _fieldDef$scale;\n var channelDef2 = isUnitModel(model) ? model.encoding[getSecondaryRangeChannel(channel)] : undefined;\n if (isTypedFieldDef(fieldDef) && isUnitModel(model) && hasBandEnd(fieldDef, channelDef2, model.markDef, model.config)) {\n dims.add(vgField(fieldDef, {}));\n dims.add(vgField(fieldDef, {\n suffix: 'end'\n }));\n if (fieldDef.bin && binRequiresRange(fieldDef, channel)) {\n dims.add(vgField(fieldDef, {\n binSuffix: 'range'\n }));\n }\n } else if (isGeoPositionChannel(channel)) {\n var posChannel = getPositionChannelFromLatLong(channel);\n dims.add(model.getName(posChannel));\n } else {\n dims.add(vgField(fieldDef));\n }\n if (isScaleFieldDef(fieldDef) && isFieldRange((_fieldDef$scale = fieldDef.scale) === null || _fieldDef$scale === void 0 ? void 0 : _fieldDef$scale.range)) {\n dims.add(fieldDef.scale.range.field);\n }\n return dims;\n}\nfunction mergeMeasures(parentMeasures, childMeasures) {\n var _iterator = _createForOfIteratorHelper(keys(childMeasures)),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var field = _step.value;\n // when we merge a measure, we either have to add an aggregation operator or even a new field\n var ops = childMeasures[field];\n var _iterator2 = _createForOfIteratorHelper(keys(ops)),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var op = _step2.value;\n if (field in parentMeasures) {\n var _parentMeasures$field;\n // add operator to existing measure field\n parentMeasures[field][op] = new Set([].concat(_toConsumableArray((_parentMeasures$field = parentMeasures[field][op]) !== null && _parentMeasures$field !== void 0 ? _parentMeasures$field : []), _toConsumableArray(ops[op])));\n } else {\n parentMeasures[field] = _defineProperty({}, op, ops[op]);\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n}\nexport var AggregateNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(AggregateNode, _DataFlowNode);\n var _super = _createSuper(AggregateNode);\n /**\n * @param dimensions string set for dimensions\n * @param measures dictionary mapping field name => dict of aggregation functions and names to use\n */\n function AggregateNode(parent, dimensions, measures) {\n var _this;\n _classCallCheck(this, AggregateNode);\n _this = _super.call(this, parent);\n _this.dimensions = dimensions;\n _this.measures = measures;\n return _this;\n }\n _createClass(AggregateNode, [{\n key: \"clone\",\n value: function clone() {\n return new AggregateNode(null, new Set(this.dimensions), duplicate(this.measures));\n }\n }, {\n key: \"groupBy\",\n get: function get() {\n return this.dimensions;\n }\n }, {\n key: \"merge\",\n value: function merge(other) {\n if (setEqual(this.dimensions, other.dimensions)) {\n mergeMeasures(this.measures, other.measures);\n return true;\n }\n log.debug('different dimensions, cannot merge');\n return false;\n }\n }, {\n key: \"addDimensions\",\n value: function addDimensions(fields) {\n fields.forEach(this.dimensions.add, this.dimensions);\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n return new Set([].concat(_toConsumableArray(this.dimensions), _toConsumableArray(keys(this.measures))));\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n var out = new Set();\n var _iterator3 = _createForOfIteratorHelper(keys(this.measures)),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var field = _step3.value;\n var _iterator4 = _createForOfIteratorHelper(keys(this.measures[field])),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var op = _step4.value;\n var m = this.measures[field][op];\n if (m.size === 0) {\n out.add(\"\".concat(op, \"_\").concat(field));\n } else {\n m.forEach(out.add, out);\n }\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n return out;\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return \"Aggregate \".concat(_hash({\n dimensions: this.dimensions,\n measures: this.measures\n }));\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n var ops = [];\n var fields = [];\n var as = [];\n var _iterator5 = _createForOfIteratorHelper(keys(this.measures)),\n _step5;\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var field = _step5.value;\n var _iterator6 = _createForOfIteratorHelper(keys(this.measures[field])),\n _step6;\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var op = _step6.value;\n var _iterator7 = _createForOfIteratorHelper(this.measures[field][op]),\n _step7;\n try {\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n var alias = _step7.value;\n as.push(alias);\n ops.push(op);\n fields.push(field === '*' ? null : replacePathInField(field));\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n var result = {\n type: 'aggregate',\n groupby: _toConsumableArray(this.dimensions).map(replacePathInField),\n ops: ops,\n fields: fields,\n as: as\n };\n return result;\n }\n }], [{\n key: \"makeFromEncoding\",\n value: function makeFromEncoding(parent, model) {\n var isAggregate = false;\n model.forEachFieldDef(function (fd) {\n if (fd.aggregate) {\n isAggregate = true;\n }\n });\n var meas = {};\n var dims = new Set();\n if (!isAggregate) {\n // no need to create this node if the model has no aggregation\n return null;\n }\n model.forEachFieldDef(function (fieldDef, channel) {\n var aggregate = fieldDef.aggregate,\n field = fieldDef.field;\n if (aggregate) {\n if (aggregate === 'count') {\n var _meas$;\n (_meas$ = meas['*']) !== null && _meas$ !== void 0 ? _meas$ : meas['*'] = {};\n meas['*']['count'] = new Set([vgField(fieldDef, {\n forAs: true\n })]);\n } else {\n if (isArgminDef(aggregate) || isArgmaxDef(aggregate)) {\n var _meas$argField;\n var op = isArgminDef(aggregate) ? 'argmin' : 'argmax';\n var argField = aggregate[op];\n (_meas$argField = meas[argField]) !== null && _meas$argField !== void 0 ? _meas$argField : meas[argField] = {};\n meas[argField][op] = new Set([vgField({\n op: op,\n field: argField\n }, {\n forAs: true\n })]);\n } else {\n var _meas$field;\n (_meas$field = meas[field]) !== null && _meas$field !== void 0 ? _meas$field : meas[field] = {};\n meas[field][aggregate] = new Set([vgField(fieldDef, {\n forAs: true\n })]);\n }\n // For scale channel with domain === 'unaggregated', add min/max so we can use their union as unaggregated domain\n if (isScaleChannel(channel) && model.scaleDomain(channel) === 'unaggregated') {\n var _meas$field2;\n (_meas$field2 = meas[field]) !== null && _meas$field2 !== void 0 ? _meas$field2 : meas[field] = {};\n meas[field]['min'] = new Set([vgField({\n field: field,\n aggregate: 'min'\n }, {\n forAs: true\n })]);\n meas[field]['max'] = new Set([vgField({\n field: field,\n aggregate: 'max'\n }, {\n forAs: true\n })]);\n }\n }\n } else {\n addDimension(dims, channel, fieldDef, model);\n }\n });\n if (dims.size + keys(meas).length === 0) {\n return null;\n }\n return new AggregateNode(parent, dims, meas);\n }\n }, {\n key: \"makeFromTransform\",\n value: function makeFromTransform(parent, t) {\n var _t$groupby;\n var dims = new Set();\n var meas = {};\n var _iterator8 = _createForOfIteratorHelper(t.aggregate),\n _step8;\n try {\n for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {\n var s = _step8.value;\n var op = s.op,\n field = s.field,\n as = s.as;\n if (op) {\n if (op === 'count') {\n var _meas$2;\n (_meas$2 = meas['*']) !== null && _meas$2 !== void 0 ? _meas$2 : meas['*'] = {};\n meas['*']['count'] = new Set([as ? as : vgField(s, {\n forAs: true\n })]);\n } else {\n var _meas$field3;\n (_meas$field3 = meas[field]) !== null && _meas$field3 !== void 0 ? _meas$field3 : meas[field] = {};\n meas[field][op] = new Set([as ? as : vgField(s, {\n forAs: true\n })]);\n }\n }\n }\n } catch (err) {\n _iterator8.e(err);\n } finally {\n _iterator8.f();\n }\n var _iterator9 = _createForOfIteratorHelper((_t$groupby = t.groupby) !== null && _t$groupby !== void 0 ? _t$groupby : []),\n _step9;\n try {\n for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {\n var _s = _step9.value;\n dims.add(_s);\n }\n } catch (err) {\n _iterator9.e(err);\n } finally {\n _iterator9.f();\n }\n if (dims.size + keys(meas).length === 0) {\n return null;\n }\n return new AggregateNode(parent, dims, meas);\n }\n }]);\n return AggregateNode;\n}(DataFlowNode);","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { isArray } from 'vega-util';\nimport { isBinning } from '../../bin';\nimport { COLUMN, FACET_CHANNELS, POSITION_SCALE_CHANNELS, ROW } from '../../channel';\nimport { vgField } from '../../channeldef';\nimport * as log from '../../log';\nimport { hasDiscreteDomain } from '../../scale';\nimport { DEFAULT_SORT_OP, isSortField } from '../../sort';\nimport { hash as _hash } from '../../util';\nimport { isVgRangeStep } from '../../vega.schema';\nimport { HEADER_CHANNELS, HEADER_TYPES } from '../header/component';\nimport { assembleDomain, getFieldFromDomain } from '../scale/domain';\nimport { sortArrayIndexField } from './calculate';\nimport { DataFlowNode } from './dataflow';\n/**\n * A node that helps us track what fields we are faceting by.\n */\nexport var FacetNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(FacetNode, _DataFlowNode);\n var _super = _createSuper(FacetNode);\n /**\n * @param model The facet model.\n * @param name The name that this facet source will have.\n * @param data The source data for this facet data.\n */\n function FacetNode(parent, model, name, data) {\n var _this;\n _classCallCheck(this, FacetNode);\n _this = _super.call(this, parent);\n _this.model = model;\n _this.name = name;\n _this.data = data;\n var _iterator = _createForOfIteratorHelper(FACET_CHANNELS),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var channel = _step.value;\n var fieldDef = model.facet[channel];\n if (fieldDef) {\n var bin = fieldDef.bin,\n sort = fieldDef.sort;\n _this[channel] = _objectSpread({\n name: model.getName(\"\".concat(channel, \"_domain\")),\n fields: [vgField(fieldDef)].concat(_toConsumableArray(isBinning(bin) ? [vgField(fieldDef, {\n binSuffix: 'end'\n })] : []))\n }, isSortField(sort) ? {\n sortField: sort\n } : isArray(sort) ? {\n sortIndexField: sortArrayIndexField(fieldDef, channel)\n } : {});\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n _this.childModel = model.child;\n return _this;\n }\n _createClass(FacetNode, [{\n key: \"hash\",\n value: function hash() {\n var out = \"Facet\";\n var _iterator2 = _createForOfIteratorHelper(FACET_CHANNELS),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var channel = _step2.value;\n if (this[channel]) {\n out += \" \".concat(channel.charAt(0), \":\").concat(_hash(this[channel]));\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n return out;\n }\n }, {\n key: \"fields\",\n get: function get() {\n var f = [];\n var _iterator3 = _createForOfIteratorHelper(FACET_CHANNELS),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var _this$channel;\n var channel = _step3.value;\n if ((_this$channel = this[channel]) !== null && _this$channel !== void 0 && _this$channel.fields) {\n f.push.apply(f, _toConsumableArray(this[channel].fields));\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n return f;\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n var depFields = new Set(this.fields);\n var _iterator4 = _createForOfIteratorHelper(FACET_CHANNELS),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var channel = _step4.value;\n if (this[channel]) {\n if (this[channel].sortField) {\n depFields.add(this[channel].sortField.field);\n }\n if (this[channel].sortIndexField) {\n depFields.add(this[channel].sortIndexField);\n }\n }\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n return depFields;\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return new Set(); // facet does not produce any new fields\n }\n /**\n * The name to reference this source is its name.\n */\n }, {\n key: \"getSource\",\n value: function getSource() {\n return this.name;\n }\n }, {\n key: \"getChildIndependentFieldsWithStep\",\n value: function getChildIndependentFieldsWithStep() {\n var childIndependentFieldsWithStep = {};\n var _iterator5 = _createForOfIteratorHelper(POSITION_SCALE_CHANNELS),\n _step5;\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var channel = _step5.value;\n var childScaleComponent = this.childModel.component.scales[channel];\n if (childScaleComponent && !childScaleComponent.merged) {\n // independent scale\n var type = childScaleComponent.get('type');\n var range = childScaleComponent.get('range');\n if (hasDiscreteDomain(type) && isVgRangeStep(range)) {\n var domain = assembleDomain(this.childModel, channel);\n var field = getFieldFromDomain(domain);\n if (field) {\n childIndependentFieldsWithStep[channel] = field;\n } else {\n log.warn(log.message.unknownField(channel));\n }\n }\n }\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n return childIndependentFieldsWithStep;\n }\n }, {\n key: \"assembleRowColumnHeaderData\",\n value: function assembleRowColumnHeaderData(channel, crossedDataName, childIndependentFieldsWithStep) {\n var childChannel = {\n row: 'y',\n column: 'x',\n facet: undefined\n }[channel];\n var fields = [];\n var ops = [];\n var as = [];\n if (childChannel && childIndependentFieldsWithStep && childIndependentFieldsWithStep[childChannel]) {\n if (crossedDataName) {\n // If there is a crossed data, calculate max\n fields.push(\"distinct_\".concat(childIndependentFieldsWithStep[childChannel]));\n ops.push('max');\n } else {\n // If there is no crossed data, just calculate distinct\n fields.push(childIndependentFieldsWithStep[childChannel]);\n ops.push('distinct');\n }\n // Although it is technically a max, just name it distinct so it's easier to refer to it\n as.push(\"distinct_\".concat(childIndependentFieldsWithStep[childChannel]));\n }\n var _this$channel2 = this[channel],\n sortField = _this$channel2.sortField,\n sortIndexField = _this$channel2.sortIndexField;\n if (sortField) {\n var _sortField$op = sortField.op,\n op = _sortField$op === void 0 ? DEFAULT_SORT_OP : _sortField$op,\n field = sortField.field;\n fields.push(field);\n ops.push(op);\n as.push(vgField(sortField, {\n forAs: true\n }));\n } else if (sortIndexField) {\n fields.push(sortIndexField);\n ops.push('max');\n as.push(sortIndexField);\n }\n return {\n name: this[channel].name,\n // Use data from the crossed one if it exist\n source: crossedDataName !== null && crossedDataName !== void 0 ? crossedDataName : this.data,\n transform: [_objectSpread({\n type: 'aggregate',\n groupby: this[channel].fields\n }, fields.length ? {\n fields: fields,\n ops: ops,\n as: as\n } : {})]\n };\n }\n }, {\n key: \"assembleFacetHeaderData\",\n value: function assembleFacetHeaderData(childIndependentFieldsWithStep) {\n var columns = this.model.layout.columns;\n var layoutHeaders = this.model.component.layoutHeaders;\n var data = [];\n var hasSharedAxis = {};\n var _iterator6 = _createForOfIteratorHelper(HEADER_CHANNELS),\n _step6;\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var headerChannel = _step6.value;\n var _iterator7 = _createForOfIteratorHelper(HEADER_TYPES),\n _step7;\n try {\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n var _ref;\n var headerType = _step7.value;\n var headers = (_ref = layoutHeaders[headerChannel] && layoutHeaders[headerChannel][headerType]) !== null && _ref !== void 0 ? _ref : [];\n var _iterator8 = _createForOfIteratorHelper(headers),\n _step8;\n try {\n for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {\n var _header$axes;\n var header = _step8.value;\n if (((_header$axes = header.axes) === null || _header$axes === void 0 ? void 0 : _header$axes.length) > 0) {\n hasSharedAxis[headerChannel] = true;\n break;\n }\n }\n } catch (err) {\n _iterator8.e(err);\n } finally {\n _iterator8.f();\n }\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n if (hasSharedAxis[headerChannel]) {\n var cardinality = \"length(data(\\\"\".concat(this.facet.name, \"\\\"))\");\n var stop = headerChannel === 'row' ? columns ? {\n signal: \"ceil(\".concat(cardinality, \" / \").concat(columns, \")\")\n } : 1 : columns ? {\n signal: \"min(\".concat(cardinality, \", \").concat(columns, \")\")\n } : {\n signal: cardinality\n };\n data.push({\n name: \"\".concat(this.facet.name, \"_\").concat(headerChannel),\n transform: [{\n type: 'sequence',\n start: 0,\n stop: stop\n }]\n });\n }\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n var row = hasSharedAxis.row,\n column = hasSharedAxis.column;\n if (row || column) {\n data.unshift(this.assembleRowColumnHeaderData('facet', null, childIndependentFieldsWithStep));\n }\n return data;\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n var data = [];\n var crossedDataName = null;\n var childIndependentFieldsWithStep = this.getChildIndependentFieldsWithStep();\n var column = this.column,\n row = this.row,\n facet = this.facet;\n if (column && row && (childIndependentFieldsWithStep.x || childIndependentFieldsWithStep.y)) {\n var _childIndependentFiel, _childIndependentFiel2;\n // Need to create a cross dataset to correctly calculate cardinality\n crossedDataName = \"cross_\".concat(this.column.name, \"_\").concat(this.row.name);\n var fields = [].concat((_childIndependentFiel = childIndependentFieldsWithStep.x) !== null && _childIndependentFiel !== void 0 ? _childIndependentFiel : [], (_childIndependentFiel2 = childIndependentFieldsWithStep.y) !== null && _childIndependentFiel2 !== void 0 ? _childIndependentFiel2 : []);\n var ops = fields.map(function () {\n return 'distinct';\n });\n data.push({\n name: crossedDataName,\n source: this.data,\n transform: [{\n type: 'aggregate',\n groupby: this.fields,\n fields: fields,\n ops: ops\n }]\n });\n }\n for (var _i = 0, _arr = [COLUMN, ROW]; _i < _arr.length; _i++) {\n var channel = _arr[_i];\n if (this[channel]) {\n data.push(this.assembleRowColumnHeaderData(channel, crossedDataName, childIndependentFieldsWithStep));\n }\n }\n if (facet) {\n var facetData = this.assembleFacetHeaderData(childIndependentFieldsWithStep);\n if (facetData) {\n data.push.apply(data, _toConsumableArray(facetData));\n }\n }\n return data;\n }\n }]);\n return FacetNode;\n}(DataFlowNode);","import _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { isNumber, isString } from 'vega-util';\nimport { isMinMaxOp } from '../../aggregate';\nimport { getMainRangeChannel } from '../../channel';\nimport { isFieldDef, isFieldOrDatumDefForTimeFormat, isScaleFieldDef, isTypedFieldDef } from '../../channeldef';\nimport { isGenerator } from '../../data';\nimport { isDateTime } from '../../datetime';\nimport * as log from '../../log';\nimport { forEachLeaf } from '../../logical';\nimport { isPathMark } from '../../mark';\nimport { isFieldEqualPredicate, isFieldGTEPredicate, isFieldGTPredicate, isFieldLTEPredicate, isFieldLTPredicate, isFieldOneOfPredicate, isFieldPredicate, isFieldRangePredicate } from '../../predicate';\nimport { isSortField } from '../../sort';\nimport { accessPathDepth, accessPathWithDatum, duplicate, hash as _hash, keys, removePathFromField } from '../../util';\nimport { signalRefOrValue } from '../common';\nimport { isFacetModel, isUnitModel } from '../model';\nimport { Split } from '../split';\nimport { DataFlowNode } from './dataflow';\n/**\n * Remove quotes from a string.\n */\nfunction unquote(pattern) {\n if (pattern.startsWith(\"'\") && pattern.endsWith(\"'\") || pattern.startsWith('\"') && pattern.endsWith('\"')) {\n return pattern.slice(1, -1);\n }\n return pattern;\n}\n/**\n * @param field The field.\n * @param parse What to parse the field as.\n */\nfunction parseExpression(field, parse) {\n var f = accessPathWithDatum(field);\n if (parse === 'number') {\n return \"toNumber(\".concat(f, \")\");\n } else if (parse === 'boolean') {\n return \"toBoolean(\".concat(f, \")\");\n } else if (parse === 'string') {\n return \"toString(\".concat(f, \")\");\n } else if (parse === 'date') {\n return \"toDate(\".concat(f, \")\");\n } else if (parse === 'flatten') {\n return f;\n } else if (parse.startsWith('date:')) {\n var specifier = unquote(parse.slice(5, parse.length));\n return \"timeParse(\".concat(f, \",'\").concat(specifier, \"')\");\n } else if (parse.startsWith('utc:')) {\n var _specifier = unquote(parse.slice(4, parse.length));\n return \"utcParse(\".concat(f, \",'\").concat(_specifier, \"')\");\n } else {\n log.warn(log.message.unrecognizedParse(parse));\n return null;\n }\n}\nexport function getImplicitFromFilterTransform(transform) {\n var implicit = {};\n forEachLeaf(transform.filter, function (filter) {\n if (isFieldPredicate(filter)) {\n // Automatically add a parse node for filters with filter objects\n var val = null;\n // For EqualFilter, just use the equal property.\n // For RangeFilter and OneOfFilter, all array members should have\n // the same type, so we only use the first one.\n if (isFieldEqualPredicate(filter)) {\n val = signalRefOrValue(filter.equal);\n } else if (isFieldLTEPredicate(filter)) {\n val = signalRefOrValue(filter.lte);\n } else if (isFieldLTPredicate(filter)) {\n val = signalRefOrValue(filter.lt);\n } else if (isFieldGTPredicate(filter)) {\n val = signalRefOrValue(filter.gt);\n } else if (isFieldGTEPredicate(filter)) {\n val = signalRefOrValue(filter.gte);\n } else if (isFieldRangePredicate(filter)) {\n val = filter.range[0];\n } else if (isFieldOneOfPredicate(filter)) {\n var _filter$oneOf;\n val = ((_filter$oneOf = filter.oneOf) !== null && _filter$oneOf !== void 0 ? _filter$oneOf : filter['in'])[0];\n } // else -- for filter expression, we can't infer anything\n if (val) {\n if (isDateTime(val)) {\n implicit[filter.field] = 'date';\n } else if (isNumber(val)) {\n implicit[filter.field] = 'number';\n } else if (isString(val)) {\n implicit[filter.field] = 'string';\n }\n }\n if (filter.timeUnit) {\n implicit[filter.field] = 'date';\n }\n }\n });\n return implicit;\n}\n/**\n * Creates a parse node for implicit parsing from a model and updates ancestorParse.\n */\nexport function getImplicitFromEncoding(model) {\n var implicit = {};\n function add(fieldDef) {\n if (isFieldOrDatumDefForTimeFormat(fieldDef)) {\n implicit[fieldDef.field] = 'date';\n } else if (fieldDef.type === 'quantitative' && isMinMaxOp(fieldDef.aggregate) // we need to parse numbers to support correct min and max\n ) {\n implicit[fieldDef.field] = 'number';\n } else if (accessPathDepth(fieldDef.field) > 1) {\n // For non-date/non-number (strings and booleans), derive a flattened field for a referenced nested field.\n // (Parsing numbers / dates already flattens numeric and temporal fields.)\n if (!(fieldDef.field in implicit)) {\n implicit[fieldDef.field] = 'flatten';\n }\n } else if (isScaleFieldDef(fieldDef) && isSortField(fieldDef.sort) && accessPathDepth(fieldDef.sort.field) > 1) {\n // Flatten fields that we sort by but that are not otherwise flattened.\n if (!(fieldDef.sort.field in implicit)) {\n implicit[fieldDef.sort.field] = 'flatten';\n }\n }\n }\n if (isUnitModel(model) || isFacetModel(model)) {\n // Parse encoded fields\n model.forEachFieldDef(function (fieldDef, channel) {\n if (isTypedFieldDef(fieldDef)) {\n add(fieldDef);\n } else {\n var mainChannel = getMainRangeChannel(channel);\n var mainFieldDef = model.fieldDef(mainChannel);\n add(_objectSpread(_objectSpread({}, fieldDef), {}, {\n type: mainFieldDef.type\n }));\n }\n });\n }\n // Parse quantitative dimension fields of path marks as numbers so that we sort them correctly.\n if (isUnitModel(model)) {\n var mark = model.mark,\n markDef = model.markDef,\n encoding = model.encoding;\n if (isPathMark(mark) &&\n // No need to sort by dimension if we have a connected scatterplot (order channel is present)\n !model.encoding.order) {\n var dimensionChannel = markDef.orient === 'horizontal' ? 'y' : 'x';\n var dimensionChannelDef = encoding[dimensionChannel];\n if (isFieldDef(dimensionChannelDef) && dimensionChannelDef.type === 'quantitative' && !(dimensionChannelDef.field in implicit)) {\n implicit[dimensionChannelDef.field] = 'number';\n }\n }\n }\n return implicit;\n}\n/**\n * Creates a parse node for implicit parsing from a model and updates ancestorParse.\n */\nexport function getImplicitFromSelection(model) {\n var implicit = {};\n if (isUnitModel(model) && model.component.selection) {\n var _iterator = _createForOfIteratorHelper(keys(model.component.selection)),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var name = _step.value;\n var selCmpt = model.component.selection[name];\n var _iterator2 = _createForOfIteratorHelper(selCmpt.project.items),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var proj = _step2.value;\n if (!proj.channel && accessPathDepth(proj.field) > 1) {\n implicit[proj.field] = 'flatten';\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n return implicit;\n}\nexport var ParseNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(ParseNode, _DataFlowNode);\n var _super = _createSuper(ParseNode);\n function ParseNode(parent, parse) {\n var _this;\n _classCallCheck(this, ParseNode);\n _this = _super.call(this, parent);\n _this._parse = parse;\n return _this;\n }\n _createClass(ParseNode, [{\n key: \"clone\",\n value: function clone() {\n return new ParseNode(null, duplicate(this._parse));\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return \"Parse \".concat(_hash(this._parse));\n }\n /**\n * Creates a parse node from a data.format.parse and updates ancestorParse.\n */\n }, {\n key: \"parse\",\n get: function get() {\n return this._parse;\n }\n }, {\n key: \"merge\",\n value: function merge(other) {\n this._parse = _objectSpread(_objectSpread({}, this._parse), other.parse);\n other.remove();\n }\n /**\n * Assemble an object for Vega's format.parse property.\n */\n }, {\n key: \"assembleFormatParse\",\n value: function assembleFormatParse() {\n var formatParse = {};\n var _iterator3 = _createForOfIteratorHelper(keys(this._parse)),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var field = _step3.value;\n var p = this._parse[field];\n if (accessPathDepth(field) === 1) {\n formatParse[field] = p;\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n return formatParse;\n }\n // format parse depends and produces all fields in its parse\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return new Set(keys(this._parse));\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n return new Set(keys(this._parse));\n }\n }, {\n key: \"assembleTransforms\",\n value: function assembleTransforms() {\n var _this2 = this;\n var onlyNested = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n return keys(this._parse).filter(function (field) {\n return onlyNested ? accessPathDepth(field) > 1 : true;\n }).map(function (field) {\n var expr = parseExpression(field, _this2._parse[field]);\n if (!expr) {\n return null;\n }\n var formula = {\n type: 'formula',\n expr: expr,\n as: removePathFromField(field) // Vega output is always flattened\n };\n\n return formula;\n }).filter(function (t) {\n return t !== null;\n });\n }\n }], [{\n key: \"makeExplicit\",\n value: function makeExplicit(parent, model, ancestorParse) {\n var _data$format;\n // Custom parse\n var explicit = {};\n var data = model.data;\n if (!isGenerator(data) && data !== null && data !== void 0 && (_data$format = data.format) !== null && _data$format !== void 0 && _data$format.parse) {\n explicit = data.format.parse;\n }\n return this.makeWithAncestors(parent, explicit, {}, ancestorParse);\n }\n /**\n * Creates a parse node from \"explicit\" parse and \"implicit\" parse and updates ancestorParse.\n */\n }, {\n key: \"makeWithAncestors\",\n value: function makeWithAncestors(parent, explicit, implicit, ancestorParse) {\n // We should not parse what has already been parsed in a parent (explicitly or implicitly) or what has been derived (maked as \"derived\"). We also don't need to flatten a field that has already been parsed.\n var _iterator4 = _createForOfIteratorHelper(keys(implicit)),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var field = _step4.value;\n var parsedAs = ancestorParse.getWithExplicit(field);\n if (parsedAs.value !== undefined) {\n // We always ignore derived fields even if they are implicitly defined because we expect users to create the right types.\n if (parsedAs.explicit || parsedAs.value === implicit[field] || parsedAs.value === 'derived' || implicit[field] === 'flatten') {\n delete implicit[field];\n } else {\n log.warn(log.message.differentParse(field, implicit[field], parsedAs.value));\n }\n }\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n var _iterator5 = _createForOfIteratorHelper(keys(explicit)),\n _step5;\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var _field = _step5.value;\n var _parsedAs = ancestorParse.get(_field);\n if (_parsedAs !== undefined) {\n // Don't parse a field again if it has been parsed with the same type already.\n if (_parsedAs === explicit[_field]) {\n delete explicit[_field];\n } else {\n log.warn(log.message.differentParse(_field, explicit[_field], _parsedAs));\n }\n }\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n var parse = new Split(explicit, implicit);\n // add the format parse from this model so that children don't parse the same field again\n ancestorParse.copyAll(parse);\n // copy only non-null parses\n var p = {};\n var _iterator6 = _createForOfIteratorHelper(keys(parse.combine())),\n _step6;\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var key = _step6.value;\n var val = parse.get(key);\n if (val !== null) {\n p[key] = val;\n }\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n if (keys(p).length === 0 || ancestorParse.parseNothing) {\n return null;\n }\n return new ParseNode(parent, p);\n }\n }]);\n return ParseNode;\n}(DataFlowNode);","import _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { SELECTION_ID } from '../../selection';\nimport { DataFlowNode } from './dataflow';\nexport var IdentifierNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(IdentifierNode, _DataFlowNode);\n var _super = _createSuper(IdentifierNode);\n function IdentifierNode(parent) {\n _classCallCheck(this, IdentifierNode);\n return _super.call(this, parent);\n }\n _createClass(IdentifierNode, [{\n key: \"clone\",\n value: function clone() {\n return new IdentifierNode(null);\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n return new Set();\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return new Set([SELECTION_ID]);\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return 'Identifier';\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n return {\n type: 'identifier',\n as: SELECTION_ID\n };\n }\n }]);\n return IdentifierNode;\n}(DataFlowNode);","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { hash as _hash } from '../../util';\nimport { DataFlowNode } from './dataflow';\nexport var GraticuleNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(GraticuleNode, _DataFlowNode);\n var _super = _createSuper(GraticuleNode);\n function GraticuleNode(parent, params) {\n var _this;\n _classCallCheck(this, GraticuleNode);\n _this = _super.call(this, parent);\n _this.params = params;\n return _this;\n }\n _createClass(GraticuleNode, [{\n key: \"clone\",\n value: function clone() {\n return new GraticuleNode(null, this.params);\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n return new Set();\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return undefined; // there should never be a node before graticule\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return \"Graticule \".concat(_hash(this.params));\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n return _objectSpread({\n type: 'graticule'\n }, this.params === true ? {} : this.params);\n }\n }]);\n return GraticuleNode;\n}(DataFlowNode);","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { hash as _hash } from '../../util';\nimport { DataFlowNode } from './dataflow';\nexport var SequenceNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(SequenceNode, _DataFlowNode);\n var _super = _createSuper(SequenceNode);\n function SequenceNode(parent, params) {\n var _this;\n _classCallCheck(this, SequenceNode);\n _this = _super.call(this, parent);\n _this.params = params;\n return _this;\n }\n _createClass(SequenceNode, [{\n key: \"clone\",\n value: function clone() {\n return new SequenceNode(null, this.params);\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n return new Set();\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n var _this$params$as;\n return new Set([(_this$params$as = this.params.as) !== null && _this$params$as !== void 0 ? _this$params$as : 'data']);\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return \"Hash \".concat(_hash(this.params));\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n return _objectSpread({\n type: 'sequence'\n }, this.params);\n }\n }]);\n return SequenceNode;\n}(DataFlowNode);","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { isGenerator, isInlineData, isNamedData, isSphereGenerator, isUrlData } from '../../data';\nimport { contains, isEmpty, omit } from '../../util';\nimport { DataFlowNode } from './dataflow';\nexport var SourceNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(SourceNode, _DataFlowNode);\n var _super = _createSuper(SourceNode);\n function SourceNode(data) {\n var _data;\n var _this;\n _classCallCheck(this, SourceNode);\n _this = _super.call(this, null); // source cannot have parent\n (_data = data) !== null && _data !== void 0 ? _data : data = {\n name: 'source'\n };\n var format;\n if (!isGenerator(data)) {\n format = data.format ? _objectSpread({}, omit(data.format, ['parse'])) : {};\n }\n if (isInlineData(data)) {\n _this._data = {\n values: data.values\n };\n } else if (isUrlData(data)) {\n _this._data = {\n url: data.url\n };\n if (!format.type) {\n // Extract extension from URL using snippet from\n // http://stackoverflow.com/questions/680929/how-to-extract-extension-from-filename-string-in-javascript\n var defaultExtension = /(?:\\.([^.]+))?$/.exec(data.url)[1];\n if (!contains(['json', 'csv', 'tsv', 'dsv', 'topojson'], defaultExtension)) {\n defaultExtension = 'json';\n }\n // defaultExtension has type string but we ensure that it is DataFormatType above\n format.type = defaultExtension;\n }\n } else if (isSphereGenerator(data)) {\n // hardwire GeoJSON sphere data into output specification\n _this._data = {\n values: [{\n type: 'Sphere'\n }]\n };\n } else if (isNamedData(data) || isGenerator(data)) {\n _this._data = {};\n }\n // set flag to check if generator\n _this._generator = isGenerator(data);\n // any dataset can be named\n if (data.name) {\n _this._name = data.name;\n }\n if (format && !isEmpty(format)) {\n _this._data.format = format;\n }\n return _this;\n }\n _createClass(SourceNode, [{\n key: \"dependentFields\",\n value: function dependentFields() {\n return new Set();\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return undefined; // we don't know what this source produces\n }\n }, {\n key: \"data\",\n get: function get() {\n return this._data;\n }\n }, {\n key: \"hasName\",\n value: function hasName() {\n return !!this._name;\n }\n }, {\n key: \"isGenerator\",\n get: function get() {\n return this._generator;\n }\n }, {\n key: \"dataName\",\n get: function get() {\n return this._name;\n },\n set: function set(name) {\n this._name = name;\n }\n }, {\n key: \"parent\",\n set: function set(parent) {\n throw new Error('Source nodes have to be roots.');\n }\n }, {\n key: \"remove\",\n value: function remove() {\n throw new Error('Source nodes are roots and cannot be removed.');\n }\n }, {\n key: \"hash\",\n value: function hash() {\n throw new Error('Cannot hash sources');\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n return _objectSpread(_objectSpread({\n name: this._name\n }, this._data), {}, {\n transform: []\n });\n }\n }]);\n return SourceNode;\n}(DataFlowNode);","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nvar __classPrivateFieldSet = this && this.__classPrivateFieldSet || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value), value;\n};\nvar __classPrivateFieldGet = this && this.__classPrivateFieldGet || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Optimizer_modified;\nimport { GraticuleNode } from './graticule';\nimport { SequenceNode } from './sequence';\nimport { SourceNode } from './source';\n/**\n * Whether this dataflow node is the source of the dataflow that produces data i.e. a source or a generator.\n */\nexport function isDataSourceNode(node) {\n return node instanceof SourceNode || node instanceof GraticuleNode || node instanceof SequenceNode;\n}\n/**\n * Abstract base class for Dataflow optimizers.\n * Contains only mutation handling logic. Subclasses need to implement iteration logic.\n */\nexport var Optimizer = /*#__PURE__*/function () {\n function Optimizer() {\n _classCallCheck(this, Optimizer);\n _Optimizer_modified.set(this, void 0);\n __classPrivateFieldSet(this, _Optimizer_modified, false, \"f\");\n }\n // Once true, #modified is never set to false\n _createClass(Optimizer, [{\n key: \"setModified\",\n value: function setModified() {\n __classPrivateFieldSet(this, _Optimizer_modified, true, \"f\");\n }\n }, {\n key: \"modifiedFlag\",\n get: function get() {\n return __classPrivateFieldGet(this, _Optimizer_modified, \"f\");\n }\n }]);\n return Optimizer;\n}();\n_Optimizer_modified = new WeakMap();\n/**\n * Starts from a node and runs the optimization function (the \"run\" method) upwards to the root,\n * depending on the continue and modified flag values returned by the optimization function.\n */\nexport var BottomUpOptimizer = /*#__PURE__*/function (_Optimizer) {\n _inherits(BottomUpOptimizer, _Optimizer);\n var _super = _createSuper(BottomUpOptimizer);\n function BottomUpOptimizer() {\n _classCallCheck(this, BottomUpOptimizer);\n return _super.apply(this, arguments);\n }\n _createClass(BottomUpOptimizer, [{\n key: \"getNodeDepths\",\n value:\n /**\n * Compute a map of node depths that we can use to determine a topological sort order.\n */\n function getNodeDepths(node, depth, depths) {\n depths.set(node, depth);\n var _iterator = _createForOfIteratorHelper(node.children),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var child = _step.value;\n this.getNodeDepths(child, depth + 1, depths);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return depths;\n }\n /**\n * Run the optimizer on all nodes starting from the leaves.\n */\n }, {\n key: \"optimize\",\n value: function optimize(node) {\n var depths = this.getNodeDepths(node, 0, new Map());\n var topologicalSort = _toConsumableArray(depths.entries()).sort(function (a, b) {\n return b[1] - a[1];\n });\n var _iterator2 = _createForOfIteratorHelper(topologicalSort),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var tuple = _step2.value;\n this.run(tuple[0]);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n return this.modifiedFlag;\n }\n }]);\n return BottomUpOptimizer;\n}(Optimizer);\n/**\n * The optimizer function (the \"run\" method), is invoked on the given node and then continues recursively.\n */\nexport var TopDownOptimizer = /*#__PURE__*/function (_Optimizer2) {\n _inherits(TopDownOptimizer, _Optimizer2);\n var _super2 = _createSuper(TopDownOptimizer);\n function TopDownOptimizer() {\n _classCallCheck(this, TopDownOptimizer);\n return _super2.apply(this, arguments);\n }\n _createClass(TopDownOptimizer, [{\n key: \"optimize\",\n value:\n /**\n * Run the optimizer depth first on all nodes starting from the roots.\n */\n function optimize(node) {\n this.run(node);\n var _iterator3 = _createForOfIteratorHelper(node.children),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var child = _step3.value;\n this.optimize(child);\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n return this.modifiedFlag;\n }\n }]);\n return TopDownOptimizer;\n}(Optimizer);","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { fieldIntersection, hash, hasIntersection, isEmpty, keys, some } from '../../util';\nimport { requiresSelectionId } from '../selection';\nimport { AggregateNode } from './aggregate';\nimport { BinNode } from './bin';\nimport { OutputNode } from './dataflow';\nimport { FacetNode } from './facet';\nimport { FilterNode } from './filter';\nimport { ParseNode } from './formatparse';\nimport { IdentifierNode } from './identifier';\nimport { BottomUpOptimizer, isDataSourceNode, Optimizer, TopDownOptimizer } from './optimizer';\nimport { SourceNode } from './source';\nimport { TimeUnitNode } from './timeunit';\n/**\n * Merge identical nodes at forks by comparing hashes.\n *\n * Does not need to iterate from leaves so we implement this with recursion as it's a bit simpler.\n */\nexport var MergeIdenticalNodes = /*#__PURE__*/function (_TopDownOptimizer) {\n _inherits(MergeIdenticalNodes, _TopDownOptimizer);\n var _super = _createSuper(MergeIdenticalNodes);\n function MergeIdenticalNodes() {\n _classCallCheck(this, MergeIdenticalNodes);\n return _super.apply(this, arguments);\n }\n _createClass(MergeIdenticalNodes, [{\n key: \"mergeNodes\",\n value: function mergeNodes(parent, nodes) {\n var mergedNode = nodes.shift();\n var _iterator = _createForOfIteratorHelper(nodes),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var node = _step.value;\n parent.removeChild(node);\n node.parent = mergedNode;\n node.remove();\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n }, {\n key: \"run\",\n value: function run(node) {\n var hashes = node.children.map(function (x) {\n return x.hash();\n });\n var buckets = {};\n for (var i = 0; i < hashes.length; i++) {\n if (buckets[hashes[i]] === undefined) {\n buckets[hashes[i]] = [node.children[i]];\n } else {\n buckets[hashes[i]].push(node.children[i]);\n }\n }\n var _iterator2 = _createForOfIteratorHelper(keys(buckets)),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var k = _step2.value;\n if (buckets[k].length > 1) {\n this.setModified();\n this.mergeNodes(node, buckets[k]);\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n }]);\n return MergeIdenticalNodes;\n}(TopDownOptimizer);\n/**\n * Optimizer that removes identifier nodes that are not needed for selections.\n */\nexport var RemoveUnnecessaryIdentifierNodes = /*#__PURE__*/function (_TopDownOptimizer2) {\n _inherits(RemoveUnnecessaryIdentifierNodes, _TopDownOptimizer2);\n var _super2 = _createSuper(RemoveUnnecessaryIdentifierNodes);\n function RemoveUnnecessaryIdentifierNodes(model) {\n var _this;\n _classCallCheck(this, RemoveUnnecessaryIdentifierNodes);\n _this = _super2.call(this);\n _this.requiresSelectionId = model && requiresSelectionId(model);\n return _this;\n }\n _createClass(RemoveUnnecessaryIdentifierNodes, [{\n key: \"run\",\n value: function run(node) {\n if (node instanceof IdentifierNode) {\n // Only preserve IdentifierNodes if we have default discrete selections\n // in our model tree, and if the nodes come after tuple producing nodes.\n if (!(this.requiresSelectionId && (isDataSourceNode(node.parent) || node.parent instanceof AggregateNode || node.parent instanceof ParseNode))) {\n this.setModified();\n node.remove();\n }\n }\n }\n }]);\n return RemoveUnnecessaryIdentifierNodes;\n}(TopDownOptimizer);\n/**\n * Removes duplicate time unit nodes (as determined by the name of the output field) that may be generated due to\n * selections projected over time units. Only keeps the first time unit in any branch.\n *\n * This optimizer is a custom top down optimizer that keep track of produced fields in a branch.\n */\nexport var RemoveDuplicateTimeUnits = /*#__PURE__*/function (_Optimizer) {\n _inherits(RemoveDuplicateTimeUnits, _Optimizer);\n var _super3 = _createSuper(RemoveDuplicateTimeUnits);\n function RemoveDuplicateTimeUnits() {\n _classCallCheck(this, RemoveDuplicateTimeUnits);\n return _super3.apply(this, arguments);\n }\n _createClass(RemoveDuplicateTimeUnits, [{\n key: \"optimize\",\n value: function optimize(node) {\n this.run(node, new Set());\n return this.modifiedFlag;\n }\n }, {\n key: \"run\",\n value: function run(node, timeUnitFields) {\n var producedFields = new Set();\n if (node instanceof TimeUnitNode) {\n producedFields = node.producedFields();\n if (hasIntersection(producedFields, timeUnitFields)) {\n this.setModified();\n node.removeFormulas(timeUnitFields);\n if (node.producedFields.length === 0) {\n node.remove();\n }\n }\n }\n var _iterator3 = _createForOfIteratorHelper(node.children),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var child = _step3.value;\n this.run(child, new Set([].concat(_toConsumableArray(timeUnitFields), _toConsumableArray(producedFields))));\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n }\n }]);\n return RemoveDuplicateTimeUnits;\n}(Optimizer);\n/**\n * Remove output nodes that are not required.\n */\nexport var RemoveUnnecessaryOutputNodes = /*#__PURE__*/function (_TopDownOptimizer3) {\n _inherits(RemoveUnnecessaryOutputNodes, _TopDownOptimizer3);\n var _super4 = _createSuper(RemoveUnnecessaryOutputNodes);\n function RemoveUnnecessaryOutputNodes() {\n _classCallCheck(this, RemoveUnnecessaryOutputNodes);\n return _super4.call(this);\n }\n _createClass(RemoveUnnecessaryOutputNodes, [{\n key: \"run\",\n value: function run(node) {\n if (node instanceof OutputNode && !node.isRequired()) {\n this.setModified();\n node.remove();\n }\n }\n }]);\n return RemoveUnnecessaryOutputNodes;\n}(TopDownOptimizer);\n/**\n * Move parse nodes up to forks and merges them if possible.\n */\nexport var MoveParseUp = /*#__PURE__*/function (_BottomUpOptimizer) {\n _inherits(MoveParseUp, _BottomUpOptimizer);\n var _super5 = _createSuper(MoveParseUp);\n function MoveParseUp() {\n _classCallCheck(this, MoveParseUp);\n return _super5.apply(this, arguments);\n }\n _createClass(MoveParseUp, [{\n key: \"run\",\n value: function run(node) {\n if (isDataSourceNode(node)) {\n return;\n }\n if (node.numChildren() > 1) {\n // Don't move parse further up but continue with parent.\n return;\n }\n var _iterator4 = _createForOfIteratorHelper(node.children),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var child = _step4.value;\n if (child instanceof ParseNode) {\n if (node instanceof ParseNode) {\n this.setModified();\n node.merge(child);\n } else {\n // Don't swap with nodes that produce something that the parse node depends on (e.g. lookup).\n if (fieldIntersection(node.producedFields(), child.dependentFields())) {\n continue;\n }\n this.setModified();\n child.swapWithParent();\n }\n }\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n return;\n }\n }]);\n return MoveParseUp;\n}(BottomUpOptimizer);\n/**\n * Inserts an intermediate ParseNode containing all non-conflicting parse fields and removes the empty ParseNodes.\n *\n * We assume that dependent paths that do not have a parse node can be just merged.\n */\nexport var MergeParse = /*#__PURE__*/function (_BottomUpOptimizer2) {\n _inherits(MergeParse, _BottomUpOptimizer2);\n var _super6 = _createSuper(MergeParse);\n function MergeParse() {\n _classCallCheck(this, MergeParse);\n return _super6.apply(this, arguments);\n }\n _createClass(MergeParse, [{\n key: \"run\",\n value: function run(node) {\n var originalChildren = _toConsumableArray(node.children);\n var parseChildren = node.children.filter(function (child) {\n return child instanceof ParseNode;\n });\n if (node.numChildren() > 1 && parseChildren.length >= 1) {\n var commonParse = {};\n var conflictingParse = new Set();\n var _iterator5 = _createForOfIteratorHelper(parseChildren),\n _step5;\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var parseNode = _step5.value;\n var parse = parseNode.parse;\n var _iterator9 = _createForOfIteratorHelper(keys(parse)),\n _step9;\n try {\n for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {\n var k = _step9.value;\n if (!(k in commonParse)) {\n commonParse[k] = parse[k];\n } else if (commonParse[k] !== parse[k]) {\n conflictingParse.add(k);\n }\n }\n } catch (err) {\n _iterator9.e(err);\n } finally {\n _iterator9.f();\n }\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n var _iterator6 = _createForOfIteratorHelper(conflictingParse),\n _step6;\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var field = _step6.value;\n delete commonParse[field];\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n if (!isEmpty(commonParse)) {\n this.setModified();\n var mergedParseNode = new ParseNode(node, commonParse);\n var _iterator7 = _createForOfIteratorHelper(originalChildren),\n _step7;\n try {\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n var childNode = _step7.value;\n if (childNode instanceof ParseNode) {\n var _iterator8 = _createForOfIteratorHelper(keys(commonParse)),\n _step8;\n try {\n for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {\n var key = _step8.value;\n delete childNode.parse[key];\n }\n } catch (err) {\n _iterator8.e(err);\n } finally {\n _iterator8.f();\n }\n }\n node.removeChild(childNode);\n childNode.parent = mergedParseNode;\n // remove empty parse nodes\n if (childNode instanceof ParseNode && keys(childNode.parse).length === 0) {\n childNode.remove();\n }\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n }\n }\n }\n }]);\n return MergeParse;\n}(BottomUpOptimizer);\n/**\n * Repeatedly remove leaf nodes that are not output or facet nodes.\n * The reason is that we don't need subtrees that don't have any output nodes.\n * Facet nodes are needed for the row or column domains.\n */\nexport var RemoveUnusedSubtrees = /*#__PURE__*/function (_BottomUpOptimizer3) {\n _inherits(RemoveUnusedSubtrees, _BottomUpOptimizer3);\n var _super7 = _createSuper(RemoveUnusedSubtrees);\n function RemoveUnusedSubtrees() {\n _classCallCheck(this, RemoveUnusedSubtrees);\n return _super7.apply(this, arguments);\n }\n _createClass(RemoveUnusedSubtrees, [{\n key: \"run\",\n value: function run(node) {\n if (node instanceof OutputNode || node.numChildren() > 0 || node instanceof FacetNode) {\n // no need to continue with parent because it is output node or will have children (there was a fork)\n } else if (node instanceof SourceNode) {\n // ignore empty unused sources as they will be removed in optimizationDataflowHelper\n } else {\n this.setModified();\n node.remove();\n }\n }\n }]);\n return RemoveUnusedSubtrees;\n}(BottomUpOptimizer);\n/**\n * Merge adjacent time unit nodes.\n */\nexport var MergeTimeUnits = /*#__PURE__*/function (_BottomUpOptimizer4) {\n _inherits(MergeTimeUnits, _BottomUpOptimizer4);\n var _super8 = _createSuper(MergeTimeUnits);\n function MergeTimeUnits() {\n _classCallCheck(this, MergeTimeUnits);\n return _super8.apply(this, arguments);\n }\n _createClass(MergeTimeUnits, [{\n key: \"run\",\n value: function run(node) {\n var timeUnitChildren = node.children.filter(function (x) {\n return x instanceof TimeUnitNode;\n });\n var combination = timeUnitChildren.pop();\n var _iterator10 = _createForOfIteratorHelper(timeUnitChildren),\n _step10;\n try {\n for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {\n var timeUnit = _step10.value;\n this.setModified();\n combination.merge(timeUnit);\n }\n } catch (err) {\n _iterator10.e(err);\n } finally {\n _iterator10.f();\n }\n }\n }]);\n return MergeTimeUnits;\n}(BottomUpOptimizer);\nexport var MergeAggregates = /*#__PURE__*/function (_BottomUpOptimizer5) {\n _inherits(MergeAggregates, _BottomUpOptimizer5);\n var _super9 = _createSuper(MergeAggregates);\n function MergeAggregates() {\n _classCallCheck(this, MergeAggregates);\n return _super9.apply(this, arguments);\n }\n _createClass(MergeAggregates, [{\n key: \"run\",\n value: function run(node) {\n var aggChildren = node.children.filter(function (child) {\n return child instanceof AggregateNode;\n });\n // Object which we'll use to map the fields which an aggregate is grouped by to\n // the set of aggregates with that grouping. This is useful as only aggregates\n // with the same group by can be merged\n var groupedAggregates = {};\n // Build groupedAggregates\n var _iterator11 = _createForOfIteratorHelper(aggChildren),\n _step11;\n try {\n for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {\n var agg = _step11.value;\n var groupBys = hash(agg.groupBy);\n if (!(groupBys in groupedAggregates)) {\n groupedAggregates[groupBys] = [];\n }\n groupedAggregates[groupBys].push(agg);\n }\n // Merge aggregateNodes with same key in groupedAggregates\n } catch (err) {\n _iterator11.e(err);\n } finally {\n _iterator11.f();\n }\n var _iterator12 = _createForOfIteratorHelper(keys(groupedAggregates)),\n _step12;\n try {\n for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {\n var group = _step12.value;\n var mergeableAggs = groupedAggregates[group];\n if (mergeableAggs.length > 1) {\n var mergedAggs = mergeableAggs.pop();\n var _iterator13 = _createForOfIteratorHelper(mergeableAggs),\n _step13;\n try {\n for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {\n var _agg = _step13.value;\n if (mergedAggs.merge(_agg)) {\n node.removeChild(_agg);\n _agg.parent = mergedAggs;\n _agg.remove();\n this.setModified();\n }\n }\n } catch (err) {\n _iterator13.e(err);\n } finally {\n _iterator13.f();\n }\n }\n }\n } catch (err) {\n _iterator12.e(err);\n } finally {\n _iterator12.f();\n }\n }\n }]);\n return MergeAggregates;\n}(BottomUpOptimizer);\n/**\n * Merge bin nodes and move them up through forks. Stop at filters, parse, identifier as we want them to stay before the bin node.\n */\nexport var MergeBins = /*#__PURE__*/function (_BottomUpOptimizer6) {\n _inherits(MergeBins, _BottomUpOptimizer6);\n var _super10 = _createSuper(MergeBins);\n function MergeBins(model) {\n var _this2;\n _classCallCheck(this, MergeBins);\n _this2 = _super10.call(this);\n _this2.model = model;\n return _this2;\n }\n _createClass(MergeBins, [{\n key: \"run\",\n value: function run(node) {\n var moveBinsUp = !(isDataSourceNode(node) || node instanceof FilterNode || node instanceof ParseNode || node instanceof IdentifierNode);\n var promotableBins = [];\n var remainingBins = [];\n var _iterator14 = _createForOfIteratorHelper(node.children),\n _step14;\n try {\n for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) {\n var child = _step14.value;\n if (child instanceof BinNode) {\n if (moveBinsUp && !fieldIntersection(node.producedFields(), child.dependentFields())) {\n promotableBins.push(child);\n } else {\n remainingBins.push(child);\n }\n }\n }\n } catch (err) {\n _iterator14.e(err);\n } finally {\n _iterator14.f();\n }\n if (promotableBins.length > 0) {\n var promotedBin = promotableBins.pop();\n var _iterator15 = _createForOfIteratorHelper(promotableBins),\n _step15;\n try {\n for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) {\n var bin = _step15.value;\n promotedBin.merge(bin, this.model.renameSignal.bind(this.model));\n }\n } catch (err) {\n _iterator15.e(err);\n } finally {\n _iterator15.f();\n }\n this.setModified();\n if (node instanceof BinNode) {\n node.merge(promotedBin, this.model.renameSignal.bind(this.model));\n } else {\n promotedBin.swapWithParent();\n }\n }\n if (remainingBins.length > 1) {\n var remainingBin = remainingBins.pop();\n var _iterator16 = _createForOfIteratorHelper(remainingBins),\n _step16;\n try {\n for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) {\n var _bin = _step16.value;\n remainingBin.merge(_bin, this.model.renameSignal.bind(this.model));\n }\n } catch (err) {\n _iterator16.e(err);\n } finally {\n _iterator16.f();\n }\n this.setModified();\n }\n }\n }]);\n return MergeBins;\n}(BottomUpOptimizer);\n/**\n * This optimizer takes output nodes that are at a fork and moves them before the fork.\n *\n * The algorithm iterates over the children and tries to find the last output node in a chain of output nodes.\n * It then moves all output nodes before that main output node. All other children (and the children of the output nodes)\n * are inserted after the main output node.\n */\nexport var MergeOutputs = /*#__PURE__*/function (_BottomUpOptimizer7) {\n _inherits(MergeOutputs, _BottomUpOptimizer7);\n var _super11 = _createSuper(MergeOutputs);\n function MergeOutputs() {\n _classCallCheck(this, MergeOutputs);\n return _super11.apply(this, arguments);\n }\n _createClass(MergeOutputs, [{\n key: \"run\",\n value: function run(node) {\n var children = _toConsumableArray(node.children);\n var hasOutputChild = some(children, function (child) {\n return child instanceof OutputNode;\n });\n if (!hasOutputChild || node.numChildren() <= 1) {\n return;\n }\n var otherChildren = [];\n // The output node we will connect all other nodes to.\n // Output nodes will be added before the new node, other nodes after.\n var mainOutput;\n var _iterator17 = _createForOfIteratorHelper(children),\n _step17;\n try {\n for (_iterator17.s(); !(_step17 = _iterator17.n()).done;) {\n var _child = _step17.value;\n if (_child instanceof OutputNode) {\n var lastOutput = _child;\n while (lastOutput.numChildren() === 1) {\n var _lastOutput$children = _slicedToArray(lastOutput.children, 1),\n theChild = _lastOutput$children[0];\n if (theChild instanceof OutputNode) {\n lastOutput = theChild;\n } else {\n break;\n }\n }\n otherChildren.push.apply(otherChildren, _toConsumableArray(lastOutput.children));\n if (mainOutput) {\n // Move the output nodes before the mainOutput. We do this by setting\n // the parent of the first not to the parent of the main output and\n // the main output's parent to the last output.\n // note: the child is the first output\n node.removeChild(_child);\n _child.parent = mainOutput.parent;\n mainOutput.parent.removeChild(mainOutput);\n mainOutput.parent = lastOutput;\n this.setModified();\n } else {\n mainOutput = lastOutput;\n }\n } else {\n otherChildren.push(_child);\n }\n }\n } catch (err) {\n _iterator17.e(err);\n } finally {\n _iterator17.f();\n }\n if (otherChildren.length) {\n this.setModified();\n var _iterator18 = _createForOfIteratorHelper(otherChildren),\n _step18;\n try {\n for (_iterator18.s(); !(_step18 = _iterator18.n()).done;) {\n var child = _step18.value;\n child.parent.removeChild(child);\n child.parent = mainOutput;\n }\n } catch (err) {\n _iterator18.e(err);\n } finally {\n _iterator18.f();\n }\n }\n }\n }]);\n return MergeOutputs;\n}(BottomUpOptimizer);","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { vgField } from '../../channeldef';\nimport { duplicate, hash as _hash } from '../../util';\nimport { unique } from '../../util';\nimport { DataFlowNode } from './dataflow';\n/**\n * A class for the join aggregate transform nodes.\n */\nexport var JoinAggregateTransformNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(JoinAggregateTransformNode, _DataFlowNode);\n var _super = _createSuper(JoinAggregateTransformNode);\n function JoinAggregateTransformNode(parent, transform) {\n var _this;\n _classCallCheck(this, JoinAggregateTransformNode);\n _this = _super.call(this, parent);\n _this.transform = transform;\n return _this;\n }\n _createClass(JoinAggregateTransformNode, [{\n key: \"clone\",\n value: function clone() {\n return new JoinAggregateTransformNode(null, duplicate(this.transform));\n }\n }, {\n key: \"addDimensions\",\n value: function addDimensions(fields) {\n this.transform.groupby = unique(this.transform.groupby.concat(fields), function (d) {\n return d;\n });\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n var out = new Set();\n if (this.transform.groupby) {\n this.transform.groupby.forEach(out.add, out);\n }\n this.transform.joinaggregate.map(function (w) {\n return w.field;\n }).filter(function (f) {\n return f !== undefined;\n }).forEach(out.add, out);\n return out;\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return new Set(this.transform.joinaggregate.map(this.getDefaultName));\n }\n }, {\n key: \"getDefaultName\",\n value: function getDefaultName(joinAggregateFieldDef) {\n var _joinAggregateFieldDe;\n return (_joinAggregateFieldDe = joinAggregateFieldDef.as) !== null && _joinAggregateFieldDe !== void 0 ? _joinAggregateFieldDe : vgField(joinAggregateFieldDef);\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return \"JoinAggregateTransform \".concat(_hash(this.transform));\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n var fields = [];\n var ops = [];\n var as = [];\n var _iterator = _createForOfIteratorHelper(this.transform.joinaggregate),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var joinaggregate = _step.value;\n ops.push(joinaggregate.op);\n as.push(this.getDefaultName(joinaggregate));\n fields.push(joinaggregate.field === undefined ? null : joinaggregate.field);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n var groupby = this.transform.groupby;\n return _objectSpread({\n type: 'joinaggregate',\n as: as,\n ops: ops,\n fields: fields\n }, groupby !== undefined ? {\n groupby: groupby\n } : {});\n }\n }]);\n return JoinAggregateTransformNode;\n}(DataFlowNode);","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport \"core-js/modules/es.array.flat.js\";\nimport \"core-js/modules/es.array.unscopables.flat.js\";\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { isArray, isString } from 'vega-util';\nimport { getFieldDef, isFieldDef, isOrderOnlyDef, vgField } from '../../channeldef';\nimport { duplicate, getFirstDefined, hash as _hash } from '../../util';\nimport { sortParams } from '../common';\nimport { DataFlowNode } from './dataflow';\nfunction getStackByFields(model) {\n return model.stack.stackBy.reduce(function (fields, by) {\n var fieldDef = by.fieldDef;\n var _field = vgField(fieldDef);\n if (_field) {\n fields.push(_field);\n }\n return fields;\n }, []);\n}\nfunction isValidAsArray(as) {\n return isArray(as) && as.every(function (s) {\n return isString(s);\n }) && as.length > 1;\n}\nexport var StackNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(StackNode, _DataFlowNode);\n var _super = _createSuper(StackNode);\n function StackNode(parent, stack) {\n var _this;\n _classCallCheck(this, StackNode);\n _this = _super.call(this, parent);\n _this._stack = stack;\n return _this;\n }\n _createClass(StackNode, [{\n key: \"clone\",\n value: function clone() {\n return new StackNode(null, duplicate(this._stack));\n }\n }, {\n key: \"stack\",\n get: function get() {\n return this._stack;\n }\n }, {\n key: \"addDimensions\",\n value: function addDimensions(fields) {\n var _this$_stack$facetby;\n (_this$_stack$facetby = this._stack.facetby).push.apply(_this$_stack$facetby, _toConsumableArray(fields));\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n var out = new Set();\n out.add(this._stack.stackField);\n this.getGroupbyFields().forEach(out.add, out);\n this._stack.facetby.forEach(out.add, out);\n this._stack.sort.field.forEach(out.add, out);\n return out;\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return new Set(this._stack.as);\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return \"Stack \".concat(_hash(this._stack));\n }\n }, {\n key: \"getGroupbyFields\",\n value: function getGroupbyFields() {\n var _this$_stack = this._stack,\n dimensionFieldDefs = _this$_stack.dimensionFieldDefs,\n impute = _this$_stack.impute,\n groupby = _this$_stack.groupby;\n if (dimensionFieldDefs.length > 0) {\n return dimensionFieldDefs.map(function (dimensionFieldDef) {\n if (dimensionFieldDef.bin) {\n if (impute) {\n // For binned group by field with impute, we calculate bin_mid\n // as we cannot impute two fields simultaneously\n return [vgField(dimensionFieldDef, {\n binSuffix: 'mid'\n })];\n }\n return [\n // For binned group by field without impute, we need both bin (start) and bin_end\n vgField(dimensionFieldDef, {}), vgField(dimensionFieldDef, {\n binSuffix: 'end'\n })];\n }\n return [vgField(dimensionFieldDef)];\n }).flat();\n }\n return groupby !== null && groupby !== void 0 ? groupby : [];\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n var transform = [];\n var _this$_stack2 = this._stack,\n facetby = _this$_stack2.facetby,\n dimensionFieldDefs = _this$_stack2.dimensionFieldDefs,\n field = _this$_stack2.stackField,\n stackby = _this$_stack2.stackby,\n sort = _this$_stack2.sort,\n offset = _this$_stack2.offset,\n impute = _this$_stack2.impute,\n as = _this$_stack2.as;\n // Impute\n if (impute) {\n var _iterator = _createForOfIteratorHelper(dimensionFieldDefs),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var dimensionFieldDef = _step.value;\n var _dimensionFieldDef$ba = dimensionFieldDef.bandPosition,\n bandPosition = _dimensionFieldDef$ba === void 0 ? 0.5 : _dimensionFieldDef$ba,\n bin = dimensionFieldDef.bin;\n if (bin) {\n // As we can only impute one field at a time, we need to calculate\n // mid point for a binned field\n var binStart = vgField(dimensionFieldDef, {\n expr: 'datum'\n });\n var binEnd = vgField(dimensionFieldDef, {\n expr: 'datum',\n binSuffix: 'end'\n });\n transform.push({\n type: 'formula',\n expr: \"\".concat(bandPosition, \"*\").concat(binStart, \"+\").concat(1 - bandPosition, \"*\").concat(binEnd),\n as: vgField(dimensionFieldDef, {\n binSuffix: 'mid',\n forAs: true\n })\n });\n }\n transform.push({\n type: 'impute',\n field: field,\n groupby: [].concat(_toConsumableArray(stackby), _toConsumableArray(facetby)),\n key: vgField(dimensionFieldDef, {\n binSuffix: 'mid'\n }),\n method: 'value',\n value: 0\n });\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n // Stack\n transform.push({\n type: 'stack',\n groupby: [].concat(_toConsumableArray(this.getGroupbyFields()), _toConsumableArray(facetby)),\n field: field,\n sort: sort,\n as: as,\n offset: offset\n });\n return transform;\n }\n }], [{\n key: \"makeFromTransform\",\n value: function makeFromTransform(parent, stackTransform) {\n var stack = stackTransform.stack,\n groupby = stackTransform.groupby,\n as = stackTransform.as,\n _stackTransform$offse = stackTransform.offset,\n offset = _stackTransform$offse === void 0 ? 'zero' : _stackTransform$offse;\n var sortFields = [];\n var sortOrder = [];\n if (stackTransform.sort !== undefined) {\n var _iterator2 = _createForOfIteratorHelper(stackTransform.sort),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var sortField = _step2.value;\n sortFields.push(sortField.field);\n sortOrder.push(getFirstDefined(sortField.order, 'ascending'));\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n var sort = {\n field: sortFields,\n order: sortOrder\n };\n var normalizedAs;\n if (isValidAsArray(as)) {\n normalizedAs = as;\n } else if (isString(as)) {\n normalizedAs = [as, \"\".concat(as, \"_end\")];\n } else {\n normalizedAs = [\"\".concat(stackTransform.stack, \"_start\"), \"\".concat(stackTransform.stack, \"_end\")];\n }\n return new StackNode(parent, {\n dimensionFieldDefs: [],\n stackField: stack,\n groupby: groupby,\n offset: offset,\n sort: sort,\n facetby: [],\n as: normalizedAs\n });\n }\n }, {\n key: \"makeFromEncoding\",\n value: function makeFromEncoding(parent, model) {\n var stackProperties = model.stack;\n var encoding = model.encoding;\n if (!stackProperties) {\n return null;\n }\n var groupbyChannels = stackProperties.groupbyChannels,\n fieldChannel = stackProperties.fieldChannel,\n offset = stackProperties.offset,\n impute = stackProperties.impute;\n var dimensionFieldDefs = groupbyChannels.map(function (groupbyChannel) {\n var cDef = encoding[groupbyChannel];\n return getFieldDef(cDef);\n }).filter(function (def) {\n return !!def;\n });\n var stackby = getStackByFields(model);\n var orderDef = model.encoding.order;\n var sort;\n if (isArray(orderDef) || isFieldDef(orderDef)) {\n sort = sortParams(orderDef);\n } else {\n var sortOrder = isOrderOnlyDef(orderDef) ? orderDef.sort : fieldChannel === 'y' ? 'descending' : 'ascending';\n // default = descending by stackFields\n // FIXME is the default here correct for binned fields?\n sort = stackby.reduce(function (s, field) {\n s.field.push(field);\n s.order.push(sortOrder);\n return s;\n }, {\n field: [],\n order: []\n });\n }\n return new StackNode(parent, {\n dimensionFieldDefs: dimensionFieldDefs,\n stackField: model.vgField(fieldChannel),\n facetby: [],\n stackby: stackby,\n sort: sort,\n offset: offset,\n impute: impute,\n as: [model.vgField(fieldChannel, {\n suffix: 'start',\n forAs: true\n }), model.vgField(fieldChannel, {\n suffix: 'end',\n forAs: true\n })]\n });\n }\n }]);\n return StackNode;\n}(DataFlowNode);","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { isAggregateOp } from '../../aggregate';\nimport { vgField } from '../../channeldef';\nimport { duplicate, hash as _hash } from '../../util';\nimport { unique } from '../../util';\nimport { DataFlowNode } from './dataflow';\n/**\n * A class for the window transform nodes\n */\nexport var WindowTransformNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(WindowTransformNode, _DataFlowNode);\n var _super = _createSuper(WindowTransformNode);\n function WindowTransformNode(parent, transform) {\n var _this;\n _classCallCheck(this, WindowTransformNode);\n _this = _super.call(this, parent);\n _this.transform = transform;\n return _this;\n }\n _createClass(WindowTransformNode, [{\n key: \"clone\",\n value: function clone() {\n return new WindowTransformNode(null, duplicate(this.transform));\n }\n }, {\n key: \"addDimensions\",\n value: function addDimensions(fields) {\n this.transform.groupby = unique(this.transform.groupby.concat(fields), function (d) {\n return d;\n });\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n var _this$transform$group, _this$transform$sort;\n var out = new Set();\n ((_this$transform$group = this.transform.groupby) !== null && _this$transform$group !== void 0 ? _this$transform$group : []).forEach(out.add, out);\n ((_this$transform$sort = this.transform.sort) !== null && _this$transform$sort !== void 0 ? _this$transform$sort : []).forEach(function (m) {\n return out.add(m.field);\n });\n this.transform.window.map(function (w) {\n return w.field;\n }).filter(function (f) {\n return f !== undefined;\n }).forEach(out.add, out);\n return out;\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return new Set(this.transform.window.map(this.getDefaultName));\n }\n }, {\n key: \"getDefaultName\",\n value: function getDefaultName(windowFieldDef) {\n var _windowFieldDef$as;\n return (_windowFieldDef$as = windowFieldDef.as) !== null && _windowFieldDef$as !== void 0 ? _windowFieldDef$as : vgField(windowFieldDef);\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return \"WindowTransform \".concat(_hash(this.transform));\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n var fields = [];\n var ops = [];\n var as = [];\n var params = [];\n var _iterator = _createForOfIteratorHelper(this.transform.window),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var window = _step.value;\n ops.push(window.op);\n as.push(this.getDefaultName(window));\n params.push(window.param === undefined ? null : window.param);\n fields.push(window.field === undefined ? null : window.field);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n var frame = this.transform.frame;\n var groupby = this.transform.groupby;\n if (frame && frame[0] === null && frame[1] === null && ops.every(function (o) {\n return isAggregateOp(o);\n })) {\n // when the window does not rely on any particular window ops or frame, switch to a simpler and more efficient joinaggregate\n return _objectSpread({\n type: 'joinaggregate',\n as: as,\n ops: ops,\n fields: fields\n }, groupby !== undefined ? {\n groupby: groupby\n } : {});\n }\n var sortFields = [];\n var sortOrder = [];\n if (this.transform.sort !== undefined) {\n var _iterator2 = _createForOfIteratorHelper(this.transform.sort),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _sortField$order;\n var sortField = _step2.value;\n sortFields.push(sortField.field);\n sortOrder.push((_sortField$order = sortField.order) !== null && _sortField$order !== void 0 ? _sortField$order : 'ascending');\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n var sort = {\n field: sortFields,\n order: sortOrder\n };\n var ignorePeers = this.transform.ignorePeers;\n return _objectSpread(_objectSpread(_objectSpread({\n type: 'window',\n params: params,\n as: as,\n ops: ops,\n fields: fields,\n sort: sort\n }, ignorePeers !== undefined ? {\n ignorePeers: ignorePeers\n } : {}), groupby !== undefined ? {\n groupby: groupby\n } : {}), frame !== undefined ? {\n frame: frame\n } : {});\n }\n }]);\n return WindowTransformNode;\n}(DataFlowNode);","import \"core-js/modules/es.array.flat-map.js\";\nimport \"core-js/modules/es.array.unscopables.flat-map.js\";\nimport \"core-js/modules/es.array.flat.js\";\nimport \"core-js/modules/es.array.unscopables.flat.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { DataSourceType } from '../../data';\nimport { AggregateNode } from './aggregate';\nimport { OutputNode } from './dataflow';\nimport { FacetNode } from './facet';\nimport { JoinAggregateTransformNode } from './joinaggregate';\nimport { FACET_SCALE_PREFIX } from './optimize';\nimport { StackNode } from './stack';\nimport { WindowTransformNode } from './window';\n/**\n * Clones the subtree and ignores output nodes except for the leaves, which are renamed.\n */\nfunction cloneSubtree(facet) {\n function clone(node) {\n if (!(node instanceof FacetNode)) {\n var copy = node.clone();\n if (copy instanceof OutputNode) {\n var newName = FACET_SCALE_PREFIX + copy.getSource();\n copy.setSource(newName);\n facet.model.component.data.outputNodes[newName] = copy;\n } else if (copy instanceof AggregateNode || copy instanceof StackNode || copy instanceof WindowTransformNode || copy instanceof JoinAggregateTransformNode) {\n copy.addDimensions(facet.fields);\n }\n var _iterator = _createForOfIteratorHelper(node.children.flatMap(clone)),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var n = _step.value;\n n.parent = copy;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return [copy];\n }\n return node.children.flatMap(clone);\n }\n return clone;\n}\n/**\n * Move facet nodes down to the next fork or output node. Also pull the main output with the facet node.\n * After moving down the facet node, make a copy of the subtree and make it a child of the main output.\n */\nexport function moveFacetDown(node) {\n if (node instanceof FacetNode) {\n if (node.numChildren() === 1 && !(node.children[0] instanceof OutputNode)) {\n // move down until we hit a fork or output node\n var child = node.children[0];\n if (child instanceof AggregateNode || child instanceof StackNode || child instanceof WindowTransformNode || child instanceof JoinAggregateTransformNode) {\n child.addDimensions(node.fields);\n }\n child.swapWithParent();\n moveFacetDown(node);\n } else {\n // move main to facet\n var facetMain = node.model.component.data.main;\n moveMainDownToFacet(facetMain);\n // replicate the subtree and place it before the facet's main node\n var cloner = cloneSubtree(node);\n var copy = node.children.map(cloner).flat();\n var _iterator2 = _createForOfIteratorHelper(copy),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var c = _step2.value;\n c.parent = facetMain;\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n } else {\n node.children.map(moveFacetDown);\n }\n}\nfunction moveMainDownToFacet(node) {\n if (node instanceof OutputNode && node.type === DataSourceType.Main) {\n if (node.numChildren() === 1) {\n var child = node.children[0];\n if (!(child instanceof FacetNode)) {\n child.swapWithParent();\n moveMainDownToFacet(node);\n }\n }\n }\n}","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport * as log from '../../log';\nimport * as optimizers from './optimizers';\nimport { moveFacetDown } from './subtree';\nexport var FACET_SCALE_PREFIX = 'scale_';\nexport var MAX_OPTIMIZATION_RUNS = 5;\n/**\n * Iterates over a dataflow graph and checks whether all links are consistent.\n */\nexport function checkLinks(nodes) {\n var _iterator = _createForOfIteratorHelper(nodes),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var node = _step.value;\n var _iterator2 = _createForOfIteratorHelper(node.children),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var child = _step2.value;\n if (child.parent !== node) {\n // log.error('Dataflow graph is inconsistent.', node, child);\n return false;\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n if (!checkLinks(node.children)) {\n return false;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return true;\n}\n/**\n * Run the specified optimizer on the provided nodes.\n *\n * @param optimizer The optimizer instance to run.\n * @param nodes A set of nodes to optimize.\n */\nfunction runOptimizer(optimizer, nodes) {\n var modified = false;\n var _iterator3 = _createForOfIteratorHelper(nodes),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var node = _step3.value;\n modified = optimizer.optimize(node) || modified;\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n return modified;\n}\nfunction optimizationDataflowHelper(dataComponent, model, firstPass) {\n var roots = dataComponent.sources;\n var modified = false;\n modified = runOptimizer(new optimizers.RemoveUnnecessaryOutputNodes(), roots) || modified;\n modified = runOptimizer(new optimizers.RemoveUnnecessaryIdentifierNodes(model), roots) || modified;\n // remove source nodes that don't have any children because they also don't have output nodes\n roots = roots.filter(function (r) {\n return r.numChildren() > 0;\n });\n modified = runOptimizer(new optimizers.RemoveUnusedSubtrees(), roots) || modified;\n roots = roots.filter(function (r) {\n return r.numChildren() > 0;\n });\n if (!firstPass) {\n // Only run these optimizations after the optimizer has moved down the facet node.\n // With this change, we can be more aggressive in the optimizations.\n modified = runOptimizer(new optimizers.MoveParseUp(), roots) || modified;\n modified = runOptimizer(new optimizers.MergeBins(model), roots) || modified;\n modified = runOptimizer(new optimizers.RemoveDuplicateTimeUnits(), roots) || modified;\n modified = runOptimizer(new optimizers.MergeParse(), roots) || modified;\n modified = runOptimizer(new optimizers.MergeAggregates(), roots) || modified;\n modified = runOptimizer(new optimizers.MergeTimeUnits(), roots) || modified;\n modified = runOptimizer(new optimizers.MergeIdenticalNodes(), roots) || modified;\n modified = runOptimizer(new optimizers.MergeOutputs(), roots) || modified;\n }\n dataComponent.sources = roots;\n return modified;\n}\n/**\n * Optimizes the dataflow of the passed in data component.\n */\nexport function optimizeDataflow(data, model) {\n // check before optimizations\n checkLinks(data.sources);\n var firstPassCounter = 0;\n var secondPassCounter = 0;\n for (var i = 0; i < MAX_OPTIMIZATION_RUNS; i++) {\n if (!optimizationDataflowHelper(data, model, true)) {\n break;\n }\n firstPassCounter++;\n }\n // move facets down and make a copy of the subtree so that we can have scales at the top level\n data.sources.map(moveFacetDown);\n for (var _i = 0; _i < MAX_OPTIMIZATION_RUNS; _i++) {\n if (!optimizationDataflowHelper(data, model, false)) {\n break;\n }\n secondPassCounter++;\n }\n // check after optimizations\n checkLinks(data.sources);\n if (Math.max(firstPassCounter, secondPassCounter) === MAX_OPTIMIZATION_RUNS) {\n log.warn(\"Maximum optimization runs(\".concat(MAX_OPTIMIZATION_RUNS, \") reached.\"));\n }\n}","import _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\n/**\n * A class that behaves like a SignalRef but lazily generates the signal.\n * The provided generator function should use `Model.getSignalName` to use the correct signal name.\n */\nexport var SignalRefWrapper = /*#__PURE__*/function () {\n function SignalRefWrapper(exprGenerator) {\n _classCallCheck(this, SignalRefWrapper);\n Object.defineProperty(this, 'signal', {\n enumerable: true,\n get: exprGenerator\n });\n }\n _createClass(SignalRefWrapper, null, [{\n key: \"fromName\",\n value: function fromName(rename, signalName) {\n return new SignalRefWrapper(function () {\n return rename(signalName);\n });\n }\n }]);\n return SignalRefWrapper;\n}();","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nvar _excluded = [\"sort\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { isObject, isString } from 'vega-util';\nimport { isAggregateOp, isArgmaxDef, isArgminDef, MULTIDOMAIN_SORT_OP_INDEX as UNIONDOMAIN_SORT_OP_INDEX, SHARED_DOMAIN_OPS } from '../../aggregate';\nimport { isBinning, isBinParams, isParameterExtent } from '../../bin';\nimport { getSecondaryRangeChannel, isScaleChannel } from '../../channel';\nimport { binRequiresRange, getFieldOrDatumDef, hasBandEnd, isDatumDef, isFieldDef, valueExpr, vgField } from '../../channeldef';\nimport { DataSourceType } from '../../data';\nimport * as log from '../../log';\nimport { hasDiscreteDomain, isDomainUnionWith, isParameterDomain } from '../../scale';\nimport { DEFAULT_SORT_OP, isSortArray, isSortByEncoding, isSortField } from '../../sort';\nimport { normalizeTimeUnit } from '../../timeunit';\nimport * as util from '../../util';\nimport { isDataRefDomain, isDataRefUnionedDomain, isFieldRefUnionDomain, isSignalRef } from '../../vega.schema';\nimport { getBinSignalName } from '../data/bin';\nimport { sortArrayIndexField } from '../data/calculate';\nimport { FACET_SCALE_PREFIX } from '../data/optimize';\nimport { isFacetModel, isUnitModel } from '../model';\nimport { SignalRefWrapper } from '../signal';\nimport { makeExplicit, makeImplicit, mergeValuesWithExplicit } from '../split';\nexport function parseScaleDomain(model) {\n if (isUnitModel(model)) {\n parseUnitScaleDomain(model);\n } else {\n parseNonUnitScaleDomain(model);\n }\n}\nfunction parseUnitScaleDomain(model) {\n var localScaleComponents = model.component.scales;\n var _iterator = _createForOfIteratorHelper(util.keys(localScaleComponents)),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var channel = _step.value;\n var domains = parseDomainForChannel(model, channel);\n var localScaleCmpt = localScaleComponents[channel];\n localScaleCmpt.setWithExplicit('domains', domains);\n parseSelectionDomain(model, channel);\n if (model.component.data.isFaceted) {\n // get resolve from closest facet parent as this decides whether we need to refer to cloned subtree or not\n var facetParent = model;\n while (!isFacetModel(facetParent) && facetParent.parent) {\n facetParent = facetParent.parent;\n }\n var resolve = facetParent.component.resolve.scale[channel];\n if (resolve === 'shared') {\n var _iterator2 = _createForOfIteratorHelper(domains.value),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var domain = _step2.value;\n // Replace the scale domain with data output from a cloned subtree after the facet.\n if (isDataRefDomain(domain)) {\n // use data from cloned subtree (which is the same as data but with a prefix added once)\n domain.data = FACET_SCALE_PREFIX + domain.data.replace(FACET_SCALE_PREFIX, '');\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n}\nfunction parseNonUnitScaleDomain(model) {\n var _iterator3 = _createForOfIteratorHelper(model.children),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var child = _step3.value;\n parseScaleDomain(child);\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n var localScaleComponents = model.component.scales;\n var _iterator4 = _createForOfIteratorHelper(util.keys(localScaleComponents)),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var channel = _step4.value;\n var domains = void 0;\n var selectionExtent = null;\n var _iterator5 = _createForOfIteratorHelper(model.children),\n _step5;\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var _child = _step5.value;\n var childComponent = _child.component.scales[channel];\n if (childComponent) {\n if (domains === undefined) {\n domains = childComponent.getWithExplicit('domains');\n } else {\n domains = mergeValuesWithExplicit(domains, childComponent.getWithExplicit('domains'), 'domains', 'scale', domainsTieBreaker);\n }\n var se = childComponent.get('selectionExtent');\n if (selectionExtent && se && selectionExtent.param !== se.param) {\n log.warn(log.message.NEEDS_SAME_SELECTION);\n }\n selectionExtent = se;\n }\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n localScaleComponents[channel].setWithExplicit('domains', domains);\n if (selectionExtent) {\n localScaleComponents[channel].set('selectionExtent', selectionExtent, true);\n }\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n}\n/**\n * Remove unaggregated domain if it is not applicable\n * Add unaggregated domain if domain is not specified and config.scale.useUnaggregatedDomain is true.\n */\nfunction normalizeUnaggregatedDomain(domain, fieldDef, scaleType, scaleConfig) {\n if (domain === 'unaggregated') {\n var _canUseUnaggregatedDo = canUseUnaggregatedDomain(fieldDef, scaleType),\n valid = _canUseUnaggregatedDo.valid,\n reason = _canUseUnaggregatedDo.reason;\n if (!valid) {\n log.warn(reason);\n return undefined;\n }\n } else if (domain === undefined && scaleConfig.useUnaggregatedDomain) {\n // Apply config if domain is not specified.\n var _canUseUnaggregatedDo2 = canUseUnaggregatedDomain(fieldDef, scaleType),\n _valid = _canUseUnaggregatedDo2.valid;\n if (_valid) {\n return 'unaggregated';\n }\n }\n return domain;\n}\nexport function parseDomainForChannel(model, channel) {\n var scaleType = model.getScaleComponent(channel).get('type');\n var encoding = model.encoding;\n var domain = normalizeUnaggregatedDomain(model.scaleDomain(channel), model.typedFieldDef(channel), scaleType, model.config.scale);\n if (domain !== model.scaleDomain(channel)) {\n model.specifiedScales[channel] = _objectSpread(_objectSpread({}, model.specifiedScales[channel]), {}, {\n domain: domain\n });\n }\n // If channel is either X or Y then union them with X2 & Y2 if they exist\n if (channel === 'x' && getFieldOrDatumDef(encoding.x2)) {\n if (getFieldOrDatumDef(encoding.x)) {\n return mergeValuesWithExplicit(parseSingleChannelDomain(scaleType, domain, model, 'x'), parseSingleChannelDomain(scaleType, domain, model, 'x2'), 'domain', 'scale', domainsTieBreaker);\n } else {\n return parseSingleChannelDomain(scaleType, domain, model, 'x2');\n }\n } else if (channel === 'y' && getFieldOrDatumDef(encoding.y2)) {\n if (getFieldOrDatumDef(encoding.y)) {\n return mergeValuesWithExplicit(parseSingleChannelDomain(scaleType, domain, model, 'y'), parseSingleChannelDomain(scaleType, domain, model, 'y2'), 'domain', 'scale', domainsTieBreaker);\n } else {\n return parseSingleChannelDomain(scaleType, domain, model, 'y2');\n }\n }\n return parseSingleChannelDomain(scaleType, domain, model, channel);\n}\nfunction mapDomainToDataSignal(domain, type, timeUnit) {\n return domain.map(function (v) {\n var data = valueExpr(v, {\n timeUnit: timeUnit,\n type: type\n });\n return {\n signal: \"{data: \".concat(data, \"}\")\n };\n });\n}\nfunction convertDomainIfItIsDateTime(domain, type, timeUnit) {\n var _normalizeTimeUnit;\n // explicit value\n var normalizedTimeUnit = (_normalizeTimeUnit = normalizeTimeUnit(timeUnit)) === null || _normalizeTimeUnit === void 0 ? void 0 : _normalizeTimeUnit.unit;\n if (type === 'temporal' || normalizedTimeUnit) {\n return mapDomainToDataSignal(domain, type, normalizedTimeUnit);\n }\n return [domain]; // Date time won't make sense\n}\n\nfunction parseSingleChannelDomain(scaleType, domain, model, channel) {\n var encoding = model.encoding;\n var fieldOrDatumDef = getFieldOrDatumDef(encoding[channel]);\n var type = fieldOrDatumDef.type;\n var timeUnit = fieldOrDatumDef['timeUnit'];\n if (isDomainUnionWith(domain)) {\n var defaultDomain = parseSingleChannelDomain(scaleType, undefined, model, channel);\n var unionWith = convertDomainIfItIsDateTime(domain.unionWith, type, timeUnit);\n return makeExplicit([].concat(_toConsumableArray(unionWith), _toConsumableArray(defaultDomain.value)));\n } else if (isSignalRef(domain)) {\n return makeExplicit([domain]);\n } else if (domain && domain !== 'unaggregated' && !isParameterDomain(domain)) {\n return makeExplicit(convertDomainIfItIsDateTime(domain, type, timeUnit));\n }\n var stack = model.stack;\n if (stack && channel === stack.fieldChannel) {\n if (stack.offset === 'normalize') {\n return makeImplicit([[0, 1]]);\n }\n var data = model.requestDataName(DataSourceType.Main);\n return makeImplicit([{\n data: data,\n field: model.vgField(channel, {\n suffix: 'start'\n })\n }, {\n data: data,\n field: model.vgField(channel, {\n suffix: 'end'\n })\n }]);\n }\n var sort = isScaleChannel(channel) && isFieldDef(fieldOrDatumDef) ? domainSort(model, channel, scaleType) : undefined;\n if (isDatumDef(fieldOrDatumDef)) {\n var d = convertDomainIfItIsDateTime([fieldOrDatumDef.datum], type, timeUnit);\n return makeImplicit(d);\n }\n var fieldDef = fieldOrDatumDef; // now we can be sure it's a fieldDef\n if (domain === 'unaggregated') {\n var _data = model.requestDataName(DataSourceType.Main);\n var field = fieldOrDatumDef.field;\n return makeImplicit([{\n data: _data,\n field: vgField({\n field: field,\n aggregate: 'min'\n })\n }, {\n data: _data,\n field: vgField({\n field: field,\n aggregate: 'max'\n })\n }]);\n } else if (isBinning(fieldDef.bin)) {\n if (hasDiscreteDomain(scaleType)) {\n if (scaleType === 'bin-ordinal') {\n // we can omit the domain as it is inferred from the `bins` property\n return makeImplicit([]);\n }\n // ordinal bin scale takes domain from bin_range, ordered by bin start\n // This is useful for both axis-based scale (x/y) and legend-based scale (other channels).\n return makeImplicit([{\n // If sort by aggregation of a specified sort field, we need to use RAW table,\n // so we can aggregate values for the scale independently from the main aggregation.\n data: util.isBoolean(sort) ? model.requestDataName(DataSourceType.Main) : model.requestDataName(DataSourceType.Raw),\n // Use range if we added it and the scale does not support computing a range as a signal.\n field: model.vgField(channel, binRequiresRange(fieldDef, channel) ? {\n binSuffix: 'range'\n } : {}),\n // we have to use a sort object if sort = true to make the sort correct by bin start\n sort: sort === true || !isObject(sort) ? {\n field: model.vgField(channel, {}),\n op: 'min' // min or max doesn't matter since we sort by the start of the bin range\n } : sort\n }]);\n } else {\n // continuous scales\n var bin = fieldDef.bin;\n if (isBinning(bin)) {\n var binSignal = getBinSignalName(model, fieldDef.field, bin);\n return makeImplicit([new SignalRefWrapper(function () {\n var signal = model.getSignalName(binSignal);\n return \"[\".concat(signal, \".start, \").concat(signal, \".stop]\");\n })]);\n } else {\n return makeImplicit([{\n data: model.requestDataName(DataSourceType.Main),\n field: model.vgField(channel, {})\n }]);\n }\n }\n } else if (fieldDef.timeUnit && util.contains(['time', 'utc'], scaleType) && hasBandEnd(fieldDef, isUnitModel(model) ? model.encoding[getSecondaryRangeChannel(channel)] : undefined, model.markDef, model.config)) {\n var _data2 = model.requestDataName(DataSourceType.Main);\n return makeImplicit([{\n data: _data2,\n field: model.vgField(channel)\n }, {\n data: _data2,\n field: model.vgField(channel, {\n suffix: 'end'\n })\n }]);\n } else if (sort) {\n return makeImplicit([{\n // If sort by aggregation of a specified sort field, we need to use RAW table,\n // so we can aggregate values for the scale independently from the main aggregation.\n data: util.isBoolean(sort) ? model.requestDataName(DataSourceType.Main) : model.requestDataName(DataSourceType.Raw),\n field: model.vgField(channel),\n sort: sort\n }]);\n } else {\n return makeImplicit([{\n data: model.requestDataName(DataSourceType.Main),\n field: model.vgField(channel)\n }]);\n }\n}\nfunction normalizeSortField(sort, isStackedMeasure) {\n var op = sort.op,\n field = sort.field,\n order = sort.order;\n return _objectSpread(_objectSpread({\n // Apply default op\n op: op !== null && op !== void 0 ? op : isStackedMeasure ? 'sum' : DEFAULT_SORT_OP\n }, field ? {\n field: util.replacePathInField(field)\n } : {}), order ? {\n order: order\n } : {});\n}\nfunction parseSelectionDomain(model, channel) {\n var _model$fieldDef;\n var scale = model.component.scales[channel];\n var spec = model.specifiedScales[channel].domain;\n var bin = (_model$fieldDef = model.fieldDef(channel)) === null || _model$fieldDef === void 0 ? void 0 : _model$fieldDef.bin;\n var domain = isParameterDomain(spec) && spec;\n var extent = isBinParams(bin) && isParameterExtent(bin.extent) && bin.extent;\n if (domain || extent) {\n // As scale parsing occurs before selection parsing, we cannot set\n // domainRaw directly. So instead, we store the selectionExtent on\n // the scale component, and then add domainRaw during scale assembly.\n scale.set('selectionExtent', domain !== null && domain !== void 0 ? domain : extent, true);\n }\n}\nexport function domainSort(model, channel, scaleType) {\n if (!hasDiscreteDomain(scaleType)) {\n return undefined;\n }\n // save to cast as the only exception is the geojson type for shape, which would not generate a scale\n var fieldDef = model.fieldDef(channel);\n var sort = fieldDef.sort;\n // if the sort is specified with array, use the derived sort index field\n if (isSortArray(sort)) {\n return {\n op: 'min',\n field: sortArrayIndexField(fieldDef, channel),\n order: 'ascending'\n };\n }\n var stack = model.stack;\n var stackDimensions = stack ? new Set([].concat(_toConsumableArray(stack.groupbyFields), _toConsumableArray(stack.stackBy.map(function (s) {\n return s.fieldDef.field;\n })))) : undefined;\n // Sorted based on an aggregate calculation over a specified sort field (only for ordinal scale)\n if (isSortField(sort)) {\n var isStackedMeasure = stack && !stackDimensions.has(sort.field);\n return normalizeSortField(sort, isStackedMeasure);\n } else if (isSortByEncoding(sort)) {\n var encoding = sort.encoding,\n order = sort.order;\n var fieldDefToSortBy = model.fieldDef(encoding);\n var aggregate = fieldDefToSortBy.aggregate,\n field = fieldDefToSortBy.field;\n var _isStackedMeasure = stack && !stackDimensions.has(field);\n if (isArgminDef(aggregate) || isArgmaxDef(aggregate)) {\n return normalizeSortField({\n field: vgField(fieldDefToSortBy),\n order: order\n }, _isStackedMeasure);\n } else if (isAggregateOp(aggregate) || !aggregate) {\n return normalizeSortField({\n op: aggregate,\n field: field,\n order: order\n }, _isStackedMeasure);\n }\n } else if (sort === 'descending') {\n return {\n op: 'min',\n field: model.vgField(channel),\n order: 'descending'\n };\n } else if (util.contains(['ascending', undefined /* default =ascending*/], sort)) {\n return true;\n }\n // sort == null\n return undefined;\n}\n/**\n * Determine if a scale can use unaggregated domain.\n * @return {Boolean} Returns true if all of the following conditions apply:\n * 1. `scale.domain` is `unaggregated`\n * 2. Aggregation function is not `count` or `sum`\n * 3. The scale is quantitative or time scale.\n */\nexport function canUseUnaggregatedDomain(fieldDef, scaleType) {\n var aggregate = fieldDef.aggregate,\n type = fieldDef.type;\n if (!aggregate) {\n return {\n valid: false,\n reason: log.message.unaggregateDomainHasNoEffectForRawField(fieldDef)\n };\n }\n if (isString(aggregate) && !SHARED_DOMAIN_OPS.has(aggregate)) {\n return {\n valid: false,\n reason: log.message.unaggregateDomainWithNonSharedDomainOp(aggregate)\n };\n }\n if (type === 'quantitative') {\n if (scaleType === 'log') {\n return {\n valid: false,\n reason: log.message.unaggregatedDomainWithLogScale(fieldDef)\n };\n }\n }\n return {\n valid: true\n };\n}\n/**\n * Tie breaker for mergeValuesWithExplicit for domains. We concat the specified values.\n */\nfunction domainsTieBreaker(v1, v2, property, propertyOf) {\n if (v1.explicit && v2.explicit) {\n log.warn(log.message.mergeConflictingDomainProperty(property, propertyOf, v1.value, v2.value));\n }\n // If equal score, concat the domains so that we union them later.\n return {\n explicit: v1.explicit,\n value: [].concat(_toConsumableArray(v1.value), _toConsumableArray(v2.value))\n };\n}\n/**\n * Converts an array of domains to a single Vega scale domain.\n */\nexport function mergeDomains(domains) {\n var uniqueDomains = util.unique(domains.map(function (domain) {\n // ignore sort property when computing the unique domains\n if (isDataRefDomain(domain)) {\n var _s = domain.sort,\n domainWithoutSort = _objectWithoutProperties(domain, _excluded);\n return domainWithoutSort;\n }\n return domain;\n }), util.hash);\n var sorts = util.unique(domains.map(function (d) {\n if (isDataRefDomain(d)) {\n var s = d.sort;\n if (s !== undefined && !util.isBoolean(s)) {\n if ('op' in s && s.op === 'count') {\n // let's make sure that if op is count, we don't use a field\n delete s.field;\n }\n if (s.order === 'ascending') {\n // drop order: ascending as it is the default\n delete s.order;\n }\n }\n return s;\n }\n return undefined;\n }).filter(function (s) {\n return s !== undefined;\n }), util.hash);\n if (uniqueDomains.length === 0) {\n return undefined;\n } else if (uniqueDomains.length === 1) {\n var domain = domains[0];\n if (isDataRefDomain(domain) && sorts.length > 0) {\n var _sort = sorts[0];\n if (sorts.length > 1) {\n log.warn(log.message.MORE_THAN_ONE_SORT);\n // Get sorts with non-default ops\n var filteredSorts = sorts.filter(function (s) {\n return isObject(s) && 'op' in s && s.op !== 'min';\n });\n if (sorts.every(function (s) {\n return isObject(s) && 'op' in s;\n }) && filteredSorts.length === 1) {\n _sort = filteredSorts[0];\n } else {\n _sort = true;\n }\n } else {\n // Simplify domain sort by removing field and op when the field is the same as the domain field.\n if (isObject(_sort) && 'field' in _sort) {\n var sortField = _sort.field;\n if (domain.field === sortField) {\n _sort = _sort.order ? {\n order: _sort.order\n } : true;\n }\n }\n }\n return _objectSpread(_objectSpread({}, domain), {}, {\n sort: _sort\n });\n }\n return domain;\n }\n // only keep sort properties that work with unioned domains\n var unionDomainSorts = util.unique(sorts.map(function (s) {\n if (util.isBoolean(s) || !('op' in s) || isString(s.op) && s.op in UNIONDOMAIN_SORT_OP_INDEX) {\n return s;\n }\n log.warn(log.message.domainSortDropped(s));\n return true;\n }), util.hash);\n var sort;\n if (unionDomainSorts.length === 1) {\n sort = unionDomainSorts[0];\n } else if (unionDomainSorts.length > 1) {\n log.warn(log.message.MORE_THAN_ONE_SORT);\n sort = true;\n }\n var allData = util.unique(domains.map(function (d) {\n if (isDataRefDomain(d)) {\n return d.data;\n }\n return null;\n }), function (x) {\n return x;\n });\n if (allData.length === 1 && allData[0] !== null) {\n // create a union domain of different fields with a single data source\n var _domain = _objectSpread({\n data: allData[0],\n fields: uniqueDomains.map(function (d) {\n return d.field;\n })\n }, sort ? {\n sort: sort\n } : {});\n return _domain;\n }\n return _objectSpread({\n fields: uniqueDomains\n }, sort ? {\n sort: sort\n } : {});\n}\n/**\n * Return a field if a scale uses a single field.\n * Return `undefined` otherwise.\n */\nexport function getFieldFromDomain(domain) {\n if (isDataRefDomain(domain) && isString(domain.field)) {\n return domain.field;\n } else if (isDataRefUnionedDomain(domain)) {\n var field;\n var _iterator6 = _createForOfIteratorHelper(domain.fields),\n _step6;\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var nonUnionDomain = _step6.value;\n if (isDataRefDomain(nonUnionDomain) && isString(nonUnionDomain.field)) {\n if (!field) {\n field = nonUnionDomain.field;\n } else if (field !== nonUnionDomain.field) {\n log.warn(log.message.FACETED_INDEPENDENT_DIFFERENT_SOURCES);\n return field;\n }\n }\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n log.warn(log.message.FACETED_INDEPENDENT_SAME_FIELDS_DIFFERENT_SOURCES);\n return field;\n } else if (isFieldRefUnionDomain(domain)) {\n log.warn(log.message.FACETED_INDEPENDENT_SAME_SOURCE);\n var _field = domain.fields[0];\n return isString(_field) ? _field : undefined;\n }\n return undefined;\n}\nexport function assembleDomain(model, channel) {\n var scaleComponent = model.component.scales[channel];\n var domains = scaleComponent.get('domains').map(function (domain) {\n // Correct references to data as the original domain's data was determined\n // in parseScale, which happens before parseData. Thus the original data\n // reference can be incorrect.\n if (isDataRefDomain(domain)) {\n domain.data = model.lookupDataSource(domain.data);\n }\n return domain;\n });\n // domains is an array that has to be merged into a single vega domain\n return mergeDomains(domains);\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"name\", \"type\", \"selectionExtent\", \"domains\", \"range\", \"reverse\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { isObject } from 'vega-util';\nimport { isXorY } from '../../channel';\nimport { keys } from '../../util';\nimport { isDataRefDomain, isVgRangeStep } from '../../vega.schema';\nimport { isConcatModel, isLayerModel } from '../model';\nimport { assembleSelectionScaleDomain } from '../selection/assemble';\nimport { assembleDomain } from './domain';\nexport function assembleScales(model) {\n if (isLayerModel(model) || isConcatModel(model)) {\n // For concat and layer, include scales of children too\n return model.children.reduce(function (scales, child) {\n return scales.concat(assembleScales(child));\n }, assembleScalesForModel(model));\n } else {\n // For facet, child scales would not be included in the parent's scope.\n // For unit, there is no child.\n return assembleScalesForModel(model);\n }\n}\nexport function assembleScalesForModel(model) {\n return keys(model.component.scales).reduce(function (scales, channel) {\n var scaleComponent = model.component.scales[channel];\n if (scaleComponent.merged) {\n // Skipped merged scales\n return scales;\n }\n var scale = scaleComponent.combine();\n var name = scale.name,\n type = scale.type,\n selectionExtent = scale.selectionExtent,\n _d = scale.domains,\n _r = scale.range,\n reverse = scale.reverse,\n otherScaleProps = _objectWithoutProperties(scale, _excluded);\n var range = assembleScaleRange(scale.range, name, channel, model);\n var domain = assembleDomain(model, channel);\n var domainRaw = selectionExtent ? assembleSelectionScaleDomain(model, selectionExtent, scaleComponent, domain) : null;\n scales.push(_objectSpread(_objectSpread(_objectSpread(_objectSpread({\n name: name,\n type: type\n }, domain ? {\n domain: domain\n } : {}), domainRaw ? {\n domainRaw: domainRaw\n } : {}), {}, {\n range: range\n }, reverse !== undefined ? {\n reverse: reverse\n } : {}), otherScaleProps));\n return scales;\n }, []);\n}\nexport function assembleScaleRange(scaleRange, scaleName, channel, model) {\n // add signals to x/y range\n if (isXorY(channel)) {\n if (isVgRangeStep(scaleRange)) {\n // For width/height step, use a signal created in layout assemble instead of a constant step.\n return {\n step: {\n signal: \"\".concat(scaleName, \"_step\")\n }\n };\n }\n } else if (isObject(scaleRange) && isDataRefDomain(scaleRange)) {\n return _objectSpread(_objectSpread({}, scaleRange), {}, {\n data: model.lookupDataSource(scaleRange.data)\n });\n }\n return scaleRange;\n}","import _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { isArray } from 'vega-util';\nimport { some } from '../../util';\nimport { Split } from '../split';\nexport var ScaleComponent = /*#__PURE__*/function (_Split) {\n _inherits(ScaleComponent, _Split);\n var _super = _createSuper(ScaleComponent);\n function ScaleComponent(name, typeWithExplicit) {\n var _this;\n _classCallCheck(this, ScaleComponent);\n _this = _super.call(this, {},\n // no initial explicit property\n {\n name: name\n } // name as initial implicit property\n );\n\n _this.merged = false;\n _this.setWithExplicit('type', typeWithExplicit);\n return _this;\n }\n /**\n * Whether the scale definitely includes zero in the domain\n */\n _createClass(ScaleComponent, [{\n key: \"domainDefinitelyIncludesZero\",\n value: function domainDefinitelyIncludesZero() {\n if (this.get('zero') !== false) {\n return true;\n }\n return some(this.get('domains'), function (d) {\n return isArray(d) && d.length === 2 && d[0] <= 0 && d[1] >= 0;\n });\n }\n }]);\n return ScaleComponent;\n}(Split);","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { isArray, isNumber, isObject } from 'vega-util';\nimport { isBinning } from '../../bin';\nimport { ANGLE, COLOR, FILL, FILLOPACITY, getOffsetScaleChannel, getSizeChannel, isXorY, isXorYOffset, OPACITY, RADIUS, SCALE_CHANNELS, SHAPE, SIZE, STROKE, STROKEDASH, STROKEOPACITY, STROKEWIDTH, THETA, X, XOFFSET, Y, YOFFSET } from '../../channel';\nimport { getFieldOrDatumDef, isFieldDef, isFieldOrDatumDef } from '../../channeldef';\nimport { getViewConfigDiscreteSize, getViewConfigDiscreteStep } from '../../config';\nimport { DataSourceType } from '../../data';\nimport { channelHasFieldOrDatum } from '../../encoding';\nimport * as log from '../../log';\nimport { channelScalePropertyIncompatability, hasContinuousDomain, hasDiscreteDomain, isContinuousToDiscrete, isExtendedScheme, scaleTypeSupportProperty } from '../../scale';\nimport { getStepFor, isStep } from '../../spec/base';\nimport { isDiscrete } from '../../type';\nimport * as util from '../../util';\nimport { isSignalRef } from '../../vega.schema';\nimport { exprFromSignalRefOrValue, signalOrStringValue } from '../common';\nimport { getBinSignalName } from '../data/bin';\nimport { SignalRefWrapper } from '../signal';\nimport { makeExplicit, makeImplicit } from '../split';\nimport { durationExpr } from '../../timeunit';\nexport var RANGE_PROPERTIES = ['range', 'scheme'];\nexport function parseUnitScaleRange(model) {\n var localScaleComponents = model.component.scales;\n // use SCALE_CHANNELS instead of scales[channel] to ensure that x, y come first!\n var _iterator = _createForOfIteratorHelper(SCALE_CHANNELS),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var channel = _step.value;\n var localScaleCmpt = localScaleComponents[channel];\n if (!localScaleCmpt) {\n continue;\n }\n var rangeWithExplicit = parseRangeForChannel(channel, model);\n localScaleCmpt.setWithExplicit('range', rangeWithExplicit);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n}\nfunction getBinStepSignal(model, channel) {\n var fieldDef = model.fieldDef(channel);\n if (fieldDef !== null && fieldDef !== void 0 && fieldDef.bin) {\n var bin = fieldDef.bin,\n field = fieldDef.field;\n var sizeType = getSizeChannel(channel);\n var sizeSignal = model.getName(sizeType);\n if (isObject(bin) && bin.binned && bin.step !== undefined) {\n return new SignalRefWrapper(function () {\n var scaleName = model.scaleName(channel);\n var binCount = \"(domain(\\\"\".concat(scaleName, \"\\\")[1] - domain(\\\"\").concat(scaleName, \"\\\")[0]) / \").concat(bin.step);\n return \"\".concat(model.getSignalName(sizeSignal), \" / (\").concat(binCount, \")\");\n });\n } else if (isBinning(bin)) {\n var binSignal = getBinSignalName(model, field, bin);\n // TODO: extract this to be range step signal\n return new SignalRefWrapper(function () {\n var updatedName = model.getSignalName(binSignal);\n var binCount = \"(\".concat(updatedName, \".stop - \").concat(updatedName, \".start) / \").concat(updatedName, \".step\");\n return \"\".concat(model.getSignalName(sizeSignal), \" / (\").concat(binCount, \")\");\n });\n }\n }\n return undefined;\n}\n/**\n * Return mixins that includes one of the Vega range types (explicit range, range.step, range.scheme).\n */\nexport function parseRangeForChannel(channel, model) {\n var specifiedScale = model.specifiedScales[channel];\n var size = model.size;\n var mergedScaleCmpt = model.getScaleComponent(channel);\n var scaleType = mergedScaleCmpt.get('type');\n // Check if any of the range properties is specified.\n // If so, check if it is compatible and make sure that we only output one of the properties\n var _iterator2 = _createForOfIteratorHelper(RANGE_PROPERTIES),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var property = _step2.value;\n if (specifiedScale[property] !== undefined) {\n var supportedByScaleType = scaleTypeSupportProperty(scaleType, property);\n var channelIncompatability = channelScalePropertyIncompatability(channel, property);\n if (!supportedByScaleType) {\n log.warn(log.message.scalePropertyNotWorkWithScaleType(scaleType, property, channel));\n } else if (channelIncompatability) {\n // channel\n log.warn(channelIncompatability);\n } else {\n switch (property) {\n case 'range':\n {\n var range = specifiedScale.range;\n if (isArray(range)) {\n if (isXorY(channel)) {\n return makeExplicit(range.map(function (v) {\n if (v === 'width' || v === 'height') {\n // get signal for width/height\n // Just like default range logic below, we use SignalRefWrapper to account for potential merges and renames.\n var sizeSignal = model.getName(v);\n var getSignalName = model.getSignalName.bind(model);\n return SignalRefWrapper.fromName(getSignalName, sizeSignal);\n }\n return v;\n }));\n }\n } else if (isObject(range)) {\n return makeExplicit({\n data: model.requestDataName(DataSourceType.Main),\n field: range.field,\n sort: {\n op: 'min',\n field: model.vgField(channel)\n }\n });\n }\n return makeExplicit(range);\n }\n case 'scheme':\n return makeExplicit(parseScheme(specifiedScale[property]));\n }\n }\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n var sizeChannel = channel === X || channel === 'xOffset' ? 'width' : 'height';\n var sizeValue = size[sizeChannel];\n if (isStep(sizeValue)) {\n if (isXorY(channel)) {\n if (hasDiscreteDomain(scaleType)) {\n var step = getPositionStep(sizeValue, model, channel);\n // Need to be explicit so layer with step wins over layer without step\n if (step) {\n return makeExplicit({\n step: step\n });\n }\n } else {\n log.warn(log.message.stepDropped(sizeChannel));\n }\n } else if (isXorYOffset(channel)) {\n var positionChannel = channel === XOFFSET ? 'x' : 'y';\n var positionScaleCmpt = model.getScaleComponent(positionChannel);\n var positionScaleType = positionScaleCmpt.get('type');\n if (positionScaleType === 'band') {\n var _step3 = getOffsetStep(sizeValue, scaleType);\n if (_step3) {\n return makeExplicit(_step3);\n }\n }\n }\n }\n var rangeMin = specifiedScale.rangeMin,\n rangeMax = specifiedScale.rangeMax;\n var d = defaultRange(channel, model);\n if ((rangeMin !== undefined || rangeMax !== undefined) &&\n // it's ok to check just rangeMin's compatibility since rangeMin/rangeMax are the same\n scaleTypeSupportProperty(scaleType, 'rangeMin') && isArray(d) && d.length === 2) {\n return makeExplicit([rangeMin !== null && rangeMin !== void 0 ? rangeMin : d[0], rangeMax !== null && rangeMax !== void 0 ? rangeMax : d[1]]);\n }\n return makeImplicit(d);\n}\nfunction parseScheme(scheme) {\n if (isExtendedScheme(scheme)) {\n return _objectSpread({\n scheme: scheme.name\n }, util.omit(scheme, ['name']));\n }\n return {\n scheme: scheme\n };\n}\nfunction defaultRange(channel, model) {\n var size = model.size,\n config = model.config,\n mark = model.mark,\n encoding = model.encoding;\n var getSignalName = model.getSignalName.bind(model);\n var _getFieldOrDatumDef = getFieldOrDatumDef(encoding[channel]),\n type = _getFieldOrDatumDef.type;\n var mergedScaleCmpt = model.getScaleComponent(channel);\n var scaleType = mergedScaleCmpt.get('type');\n var _model$specifiedScale = model.specifiedScales[channel],\n domain = _model$specifiedScale.domain,\n domainMid = _model$specifiedScale.domainMid;\n switch (channel) {\n case X:\n case Y:\n {\n // If there is no explicit width/height for discrete x/y scales\n if (util.contains(['point', 'band'], scaleType)) {\n var positionSize = getDiscretePositionSize(channel, size, config.view);\n if (isStep(positionSize)) {\n var step = getPositionStep(positionSize, model, channel);\n return {\n step: step\n };\n }\n }\n // If step is null, use zero to width or height.\n // Note that we use SignalRefWrapper to account for potential merges and renames.\n var sizeType = getSizeChannel(channel);\n var sizeSignal = model.getName(sizeType);\n if (channel === Y && hasContinuousDomain(scaleType)) {\n // For y continuous scale, we have to start from the height as the bottom part has the max value.\n return [SignalRefWrapper.fromName(getSignalName, sizeSignal), 0];\n } else {\n return [0, SignalRefWrapper.fromName(getSignalName, sizeSignal)];\n }\n }\n case XOFFSET:\n case YOFFSET:\n return getOffsetRange(channel, model, scaleType);\n case SIZE:\n {\n // TODO: support custom rangeMin, rangeMax\n var zero = model.component.scales[channel].get('zero');\n var rangeMin = sizeRangeMin(mark, zero, config);\n var rangeMax = sizeRangeMax(mark, size, model, config);\n if (isContinuousToDiscrete(scaleType)) {\n return interpolateRange(rangeMin, rangeMax, defaultContinuousToDiscreteCount(scaleType, config, domain, channel));\n } else {\n return [rangeMin, rangeMax];\n }\n }\n case THETA:\n return [0, Math.PI * 2];\n case ANGLE:\n // TODO: add config.scale.min/maxAngleDegree (for point and text) and config.scale.min/maxAngleRadian (for arc) once we add arc marks.\n // (It's weird to add just config.scale.min/maxAngleDegree for now)\n return [0, 360];\n case RADIUS:\n {\n // max radius = half od min(width,height)\n return [0, new SignalRefWrapper(function () {\n var w = model.getSignalName('width');\n var h = model.getSignalName('height');\n return \"min(\".concat(w, \",\").concat(h, \")/2\");\n })];\n }\n case STROKEWIDTH:\n // TODO: support custom rangeMin, rangeMax\n return [config.scale.minStrokeWidth, config.scale.maxStrokeWidth];\n case STROKEDASH:\n return [\n // TODO: add this to Vega's config.range?\n [1, 0], [4, 2], [2, 1], [1, 1], [1, 2, 4, 2]];\n case SHAPE:\n return 'symbol';\n case COLOR:\n case FILL:\n case STROKE:\n if (scaleType === 'ordinal') {\n // Only nominal data uses ordinal scale by default\n return type === 'nominal' ? 'category' : 'ordinal';\n } else {\n if (domainMid !== undefined) {\n return 'diverging';\n } else {\n return mark === 'rect' || mark === 'geoshape' ? 'heatmap' : 'ramp';\n }\n }\n case OPACITY:\n case FILLOPACITY:\n case STROKEOPACITY:\n // TODO: support custom rangeMin, rangeMax\n return [config.scale.minOpacity, config.scale.maxOpacity];\n }\n}\nfunction getPositionStep(step, model, channel) {\n var encoding = model.encoding;\n var mergedScaleCmpt = model.getScaleComponent(channel);\n var offsetChannel = getOffsetScaleChannel(channel);\n var offsetDef = encoding[offsetChannel];\n var stepFor = getStepFor({\n step: step,\n offsetIsDiscrete: isFieldOrDatumDef(offsetDef) && isDiscrete(offsetDef.type)\n });\n if (stepFor === 'offset' && channelHasFieldOrDatum(encoding, offsetChannel)) {\n var _mergedScaleCmpt$get;\n var offsetScaleCmpt = model.getScaleComponent(offsetChannel);\n var offsetScaleName = model.scaleName(offsetChannel);\n var stepCount = \"domain('\".concat(offsetScaleName, \"').length\");\n if (offsetScaleCmpt.get('type') === 'band') {\n var _ref, _offsetScaleCmpt$get, _ref2, _offsetScaleCmpt$get2;\n var offsetPaddingInner = (_ref = (_offsetScaleCmpt$get = offsetScaleCmpt.get('paddingInner')) !== null && _offsetScaleCmpt$get !== void 0 ? _offsetScaleCmpt$get : offsetScaleCmpt.get('padding')) !== null && _ref !== void 0 ? _ref : 0;\n var offsetPaddingOuter = (_ref2 = (_offsetScaleCmpt$get2 = offsetScaleCmpt.get('paddingOuter')) !== null && _offsetScaleCmpt$get2 !== void 0 ? _offsetScaleCmpt$get2 : offsetScaleCmpt.get('padding')) !== null && _ref2 !== void 0 ? _ref2 : 0;\n stepCount = \"bandspace(\".concat(stepCount, \", \").concat(offsetPaddingInner, \", \").concat(offsetPaddingOuter, \")\");\n }\n var paddingInner = (_mergedScaleCmpt$get = mergedScaleCmpt.get('paddingInner')) !== null && _mergedScaleCmpt$get !== void 0 ? _mergedScaleCmpt$get : mergedScaleCmpt.get('padding');\n return {\n signal: \"\".concat(step.step, \" * \").concat(stepCount, \" / (1-\").concat(exprFromSignalRefOrValue(paddingInner), \")\")\n };\n } else {\n return step.step;\n }\n}\nfunction getOffsetStep(step, offsetScaleType) {\n var stepFor = getStepFor({\n step: step,\n offsetIsDiscrete: hasDiscreteDomain(offsetScaleType)\n });\n if (stepFor === 'offset') {\n return {\n step: step.step\n };\n }\n return undefined;\n}\nfunction getOffsetRange(channel, model, offsetScaleType) {\n var positionChannel = channel === XOFFSET ? 'x' : 'y';\n var positionScaleCmpt = model.getScaleComponent(positionChannel);\n var positionScaleType = positionScaleCmpt.get('type');\n var positionScaleName = model.scaleName(positionChannel);\n if (positionScaleType === 'band') {\n var size = getDiscretePositionSize(positionChannel, model.size, model.config.view);\n if (isStep(size)) {\n // step is for offset\n var step = getOffsetStep(size, offsetScaleType);\n if (step) {\n return step;\n }\n }\n // otherwise use the position\n return [0, {\n signal: \"bandwidth('\".concat(positionScaleName, \"')\")\n }];\n } else {\n // continuous scale\n var positionDef = model.encoding[positionChannel];\n if (isFieldDef(positionDef) && positionDef.timeUnit) {\n var duration = durationExpr(positionDef.timeUnit, function (expr) {\n return \"scale('\".concat(positionScaleName, \"', \").concat(expr, \")\");\n });\n var padding = model.config.scale.bandWithNestedOffsetPaddingInner;\n if (padding) {\n var startRatio = isSignalRef(padding) ? \"\".concat(padding.signal, \"/2\") : \"\".concat(padding / 2);\n var endRatio = isSignalRef(padding) ? \"(1 - \".concat(padding.signal, \"/2)\") : \"\".concat(1 - padding / 2);\n return [{\n signal: \"\".concat(startRatio, \" * (\").concat(duration, \")\")\n }, {\n signal: \"\".concat(endRatio, \" * (\").concat(duration, \")\")\n }];\n }\n return [0, {\n signal: duration\n }];\n }\n return util.never(\"Cannot use \".concat(channel, \" scale if \").concat(positionChannel, \" scale is not discrete.\"));\n }\n}\nfunction getDiscretePositionSize(channel, size, viewConfig) {\n var sizeChannel = channel === X ? 'width' : 'height';\n var sizeValue = size[sizeChannel];\n if (sizeValue) {\n return sizeValue;\n }\n return getViewConfigDiscreteSize(viewConfig, sizeChannel);\n}\nexport function defaultContinuousToDiscreteCount(scaleType, config, domain, channel) {\n switch (scaleType) {\n case 'quantile':\n return config.scale.quantileCount;\n case 'quantize':\n return config.scale.quantizeCount;\n case 'threshold':\n if (domain !== undefined && isArray(domain)) {\n return domain.length + 1;\n } else {\n log.warn(log.message.domainRequiredForThresholdScale(channel));\n // default threshold boundaries for threshold scale since domain has cardinality of 2\n return 3;\n }\n }\n}\n/**\n * Returns the linear interpolation of the range according to the cardinality\n *\n * @param rangeMin start of the range\n * @param rangeMax end of the range\n * @param cardinality number of values in the output range\n */\nexport function interpolateRange(rangeMin, rangeMax, cardinality) {\n // always return a signal since it's better to compute the sequence in Vega later\n var f = function f() {\n var rMax = signalOrStringValue(rangeMax);\n var rMin = signalOrStringValue(rangeMin);\n var step = \"(\".concat(rMax, \" - \").concat(rMin, \") / (\").concat(cardinality, \" - 1)\");\n return \"sequence(\".concat(rMin, \", \").concat(rMax, \" + \").concat(step, \", \").concat(step, \")\");\n };\n if (isSignalRef(rangeMax)) {\n return new SignalRefWrapper(f);\n } else {\n return {\n signal: f()\n };\n }\n}\nfunction sizeRangeMin(mark, zero, config) {\n if (zero) {\n if (isSignalRef(zero)) {\n return {\n signal: \"\".concat(zero.signal, \" ? 0 : \").concat(sizeRangeMin(mark, false, config))\n };\n } else {\n return 0;\n }\n }\n switch (mark) {\n case 'bar':\n case 'tick':\n return config.scale.minBandSize;\n case 'line':\n case 'trail':\n case 'rule':\n return config.scale.minStrokeWidth;\n case 'text':\n return config.scale.minFontSize;\n case 'point':\n case 'square':\n case 'circle':\n return config.scale.minSize;\n }\n /* istanbul ignore next: should never reach here */\n // sizeRangeMin not implemented for the mark\n throw new Error(log.message.incompatibleChannel('size', mark));\n}\nexport var MAX_SIZE_RANGE_STEP_RATIO = 0.95;\nfunction sizeRangeMax(mark, size, model, config) {\n var xyStepSignals = {\n x: getBinStepSignal(model, 'x'),\n y: getBinStepSignal(model, 'y')\n };\n switch (mark) {\n case 'bar':\n case 'tick':\n {\n if (config.scale.maxBandSize !== undefined) {\n return config.scale.maxBandSize;\n }\n var min = minXYStep(size, xyStepSignals, config.view);\n if (isNumber(min)) {\n return min - 1;\n } else {\n return new SignalRefWrapper(function () {\n return \"\".concat(min.signal, \" - 1\");\n });\n }\n }\n case 'line':\n case 'trail':\n case 'rule':\n return config.scale.maxStrokeWidth;\n case 'text':\n return config.scale.maxFontSize;\n case 'point':\n case 'square':\n case 'circle':\n {\n if (config.scale.maxSize) {\n return config.scale.maxSize;\n }\n var pointStep = minXYStep(size, xyStepSignals, config.view);\n if (isNumber(pointStep)) {\n return Math.pow(MAX_SIZE_RANGE_STEP_RATIO * pointStep, 2);\n } else {\n return new SignalRefWrapper(function () {\n return \"pow(\".concat(MAX_SIZE_RANGE_STEP_RATIO, \" * \").concat(pointStep.signal, \", 2)\");\n });\n }\n }\n }\n /* istanbul ignore next: should never reach here */\n // sizeRangeMax not implemented for the mark\n throw new Error(log.message.incompatibleChannel('size', mark));\n}\n/**\n * @returns {number} Range step of x or y or minimum between the two if both are ordinal scale.\n */\nfunction minXYStep(size, xyStepSignals, viewConfig) {\n var widthStep = isStep(size.width) ? size.width.step : getViewConfigDiscreteStep(viewConfig, 'width');\n var heightStep = isStep(size.height) ? size.height.step : getViewConfigDiscreteStep(viewConfig, 'height');\n if (xyStepSignals.x || xyStepSignals.y) {\n return new SignalRefWrapper(function () {\n var exprs = [xyStepSignals.x ? xyStepSignals.x.signal : widthStep, xyStepSignals.y ? xyStepSignals.y.signal : heightStep];\n return \"min(\".concat(exprs.join(', '), \")\");\n });\n }\n return Math.min(widthStep, heightStep);\n}","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { isArray } from 'vega-util';\nimport { isBinned, isBinning, isBinParams } from '../../bin';\nimport { COLOR, FILL, getSecondaryRangeChannel, isXorY, isXorYOffset, POLAR_POSITION_SCALE_CHANNELS, POSITION_SCALE_CHANNELS, STROKE } from '../../channel';\nimport { getFieldDef, getFieldOrDatumDef, isFieldDef, valueExpr } from '../../channeldef';\nimport { isDateTime } from '../../datetime';\nimport { channelHasNestedOffsetScale } from '../../encoding';\nimport * as log from '../../log';\nimport { channelScalePropertyIncompatability, hasContinuousDomain, isContinuousToContinuous, isContinuousToDiscrete, ScaleType, scaleTypeSupportProperty } from '../../scale';\nimport * as util from '../../util';\nimport { contains, getFirstDefined, keys } from '../../util';\nimport { isSignalRef } from '../../vega.schema';\nimport { getBinSignalName } from '../data/bin';\nimport { isUnitModel } from '../model';\nimport { SignalRefWrapper } from '../signal';\nimport { mergeValuesWithExplicit, tieBreakByComparing } from '../split';\nimport { parseUnitScaleRange } from './range';\nexport function parseScaleProperty(model, property) {\n if (isUnitModel(model)) {\n parseUnitScaleProperty(model, property);\n } else {\n parseNonUnitScaleProperty(model, property);\n }\n}\nfunction parseUnitScaleProperty(model, property) {\n var localScaleComponents = model.component.scales;\n var config = model.config,\n encoding = model.encoding,\n markDef = model.markDef,\n specifiedScales = model.specifiedScales;\n var _iterator = _createForOfIteratorHelper(keys(localScaleComponents)),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var channel = _step.value;\n var specifiedScale = specifiedScales[channel];\n var localScaleCmpt = localScaleComponents[channel];\n var mergedScaleCmpt = model.getScaleComponent(channel);\n var fieldOrDatumDef = getFieldOrDatumDef(encoding[channel]);\n var specifiedValue = specifiedScale[property];\n var scaleType = mergedScaleCmpt.get('type');\n var scalePadding = mergedScaleCmpt.get('padding');\n var scalePaddingInner = mergedScaleCmpt.get('paddingInner');\n var supportedByScaleType = scaleTypeSupportProperty(scaleType, property);\n var channelIncompatability = channelScalePropertyIncompatability(channel, property);\n if (specifiedValue !== undefined) {\n // If there is a specified value, check if it is compatible with scale type and channel\n if (!supportedByScaleType) {\n log.warn(log.message.scalePropertyNotWorkWithScaleType(scaleType, property, channel));\n } else if (channelIncompatability) {\n // channel\n log.warn(channelIncompatability);\n }\n }\n if (supportedByScaleType && channelIncompatability === undefined) {\n if (specifiedValue !== undefined) {\n var timeUnit = fieldOrDatumDef['timeUnit'];\n var type = fieldOrDatumDef.type;\n switch (property) {\n // domainMax/Min to signal if the value is a datetime object\n case 'domainMax':\n case 'domainMin':\n if (isDateTime(specifiedScale[property]) || type === 'temporal' || timeUnit) {\n localScaleCmpt.set(property, {\n signal: valueExpr(specifiedScale[property], {\n type: type,\n timeUnit: timeUnit\n })\n }, true);\n } else {\n localScaleCmpt.set(property, specifiedScale[property], true);\n }\n break;\n default:\n localScaleCmpt.copyKeyFromObject(property, specifiedScale);\n }\n } else {\n var value = property in scaleRules ? scaleRules[property]({\n model: model,\n channel: channel,\n fieldOrDatumDef: fieldOrDatumDef,\n scaleType: scaleType,\n scalePadding: scalePadding,\n scalePaddingInner: scalePaddingInner,\n domain: specifiedScale.domain,\n domainMin: specifiedScale.domainMin,\n domainMax: specifiedScale.domainMax,\n markDef: markDef,\n config: config,\n hasNestedOffsetScale: channelHasNestedOffsetScale(encoding, channel),\n hasSecondaryRangeChannel: !!encoding[getSecondaryRangeChannel(channel)]\n }) : config.scale[property];\n if (value !== undefined) {\n localScaleCmpt.set(property, value, false);\n }\n }\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n}\nexport var scaleRules = {\n bins: function bins(_ref) {\n var model = _ref.model,\n fieldOrDatumDef = _ref.fieldOrDatumDef;\n return isFieldDef(fieldOrDatumDef) ? _bins(model, fieldOrDatumDef) : undefined;\n },\n interpolate: function interpolate(_ref2) {\n var channel = _ref2.channel,\n fieldOrDatumDef = _ref2.fieldOrDatumDef;\n return _interpolate(channel, fieldOrDatumDef.type);\n },\n nice: function nice(_ref3) {\n var scaleType = _ref3.scaleType,\n channel = _ref3.channel,\n domain = _ref3.domain,\n domainMin = _ref3.domainMin,\n domainMax = _ref3.domainMax,\n fieldOrDatumDef = _ref3.fieldOrDatumDef;\n return _nice(scaleType, channel, domain, domainMin, domainMax, fieldOrDatumDef);\n },\n padding: function padding(_ref4) {\n var channel = _ref4.channel,\n scaleType = _ref4.scaleType,\n fieldOrDatumDef = _ref4.fieldOrDatumDef,\n markDef = _ref4.markDef,\n config = _ref4.config;\n return _padding(channel, scaleType, config.scale, fieldOrDatumDef, markDef, config.bar);\n },\n paddingInner: function paddingInner(_ref5) {\n var scalePadding = _ref5.scalePadding,\n channel = _ref5.channel,\n markDef = _ref5.markDef,\n scaleType = _ref5.scaleType,\n config = _ref5.config,\n hasNestedOffsetScale = _ref5.hasNestedOffsetScale;\n return _paddingInner(scalePadding, channel, markDef.type, scaleType, config.scale, hasNestedOffsetScale);\n },\n paddingOuter: function paddingOuter(_ref6) {\n var scalePadding = _ref6.scalePadding,\n channel = _ref6.channel,\n scaleType = _ref6.scaleType,\n scalePaddingInner = _ref6.scalePaddingInner,\n config = _ref6.config,\n hasNestedOffsetScale = _ref6.hasNestedOffsetScale;\n return _paddingOuter(scalePadding, channel, scaleType, scalePaddingInner, config.scale, hasNestedOffsetScale);\n },\n reverse: function reverse(_ref7) {\n var fieldOrDatumDef = _ref7.fieldOrDatumDef,\n scaleType = _ref7.scaleType,\n channel = _ref7.channel,\n config = _ref7.config;\n var sort = isFieldDef(fieldOrDatumDef) ? fieldOrDatumDef.sort : undefined;\n return _reverse(scaleType, sort, channel, config.scale);\n },\n zero: function zero(_ref8) {\n var channel = _ref8.channel,\n fieldOrDatumDef = _ref8.fieldOrDatumDef,\n domain = _ref8.domain,\n markDef = _ref8.markDef,\n scaleType = _ref8.scaleType,\n config = _ref8.config,\n hasSecondaryRangeChannel = _ref8.hasSecondaryRangeChannel;\n return _zero(channel, fieldOrDatumDef, domain, markDef, scaleType, config.scale, hasSecondaryRangeChannel);\n }\n};\n// This method is here rather than in range.ts to avoid circular dependency.\nexport function parseScaleRange(model) {\n if (isUnitModel(model)) {\n parseUnitScaleRange(model);\n } else {\n parseNonUnitScaleProperty(model, 'range');\n }\n}\nexport function parseNonUnitScaleProperty(model, property) {\n var localScaleComponents = model.component.scales;\n var _iterator2 = _createForOfIteratorHelper(model.children),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var child = _step2.value;\n if (property === 'range') {\n parseScaleRange(child);\n } else {\n parseScaleProperty(child, property);\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n var _iterator3 = _createForOfIteratorHelper(keys(localScaleComponents)),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var channel = _step3.value;\n var valueWithExplicit = void 0;\n var _iterator4 = _createForOfIteratorHelper(model.children),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var _child = _step4.value;\n var childComponent = _child.component.scales[channel];\n if (childComponent) {\n var childValueWithExplicit = childComponent.getWithExplicit(property);\n valueWithExplicit = mergeValuesWithExplicit(valueWithExplicit, childValueWithExplicit, property, 'scale', tieBreakByComparing(function (v1, v2) {\n switch (property) {\n case 'range':\n // For step, prefer larger step\n if (v1.step && v2.step) {\n return v1.step - v2.step;\n }\n return 0;\n // TODO: precedence rule for other properties\n }\n\n return 0;\n }));\n }\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n localScaleComponents[channel].setWithExplicit(property, valueWithExplicit);\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n}\nfunction _bins(model, fieldDef) {\n var bin = fieldDef.bin;\n if (isBinning(bin)) {\n var binSignal = getBinSignalName(model, fieldDef.field, bin);\n return new SignalRefWrapper(function () {\n return model.getSignalName(binSignal);\n });\n } else if (isBinned(bin) && isBinParams(bin) && bin.step !== undefined) {\n // start and stop will be determined from the scale domain\n return {\n step: bin.step\n };\n }\n return undefined;\n}\nexport { _bins as bins };\nfunction _interpolate(channel, type) {\n if (contains([COLOR, FILL, STROKE], channel) && type !== 'nominal') {\n return 'hcl';\n }\n return undefined;\n}\nexport { _interpolate as interpolate };\nfunction _nice(scaleType, channel, specifiedDomain, domainMin, domainMax, fieldOrDatumDef) {\n var _getFieldDef;\n if ((_getFieldDef = getFieldDef(fieldOrDatumDef)) !== null && _getFieldDef !== void 0 && _getFieldDef.bin || isArray(specifiedDomain) || domainMax != null || domainMin != null || util.contains([ScaleType.TIME, ScaleType.UTC], scaleType)) {\n return undefined;\n }\n return isXorY(channel) ? true : undefined;\n}\nexport { _nice as nice };\nfunction _padding(channel, scaleType, scaleConfig, fieldOrDatumDef, markDef, barConfig) {\n if (isXorY(channel)) {\n if (isContinuousToContinuous(scaleType)) {\n if (scaleConfig.continuousPadding !== undefined) {\n return scaleConfig.continuousPadding;\n }\n var type = markDef.type,\n orient = markDef.orient;\n if (type === 'bar' && !(isFieldDef(fieldOrDatumDef) && (fieldOrDatumDef.bin || fieldOrDatumDef.timeUnit))) {\n if (orient === 'vertical' && channel === 'x' || orient === 'horizontal' && channel === 'y') {\n return barConfig.continuousBandSize;\n }\n }\n }\n if (scaleType === ScaleType.POINT) {\n return scaleConfig.pointPadding;\n }\n }\n return undefined;\n}\nexport { _padding as padding };\nfunction _paddingInner(paddingValue, channel, mark, scaleType, scaleConfig) {\n var hasNestedOffsetScale = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;\n if (paddingValue !== undefined) {\n // If user has already manually specified \"padding\", no need to add default paddingInner.\n return undefined;\n }\n if (isXorY(channel)) {\n // Padding is only set for X and Y by default.\n // Basically it doesn't make sense to add padding for color and size.\n // paddingOuter would only be called if it's a band scale, just return the default for bandScale.\n var bandPaddingInner = scaleConfig.bandPaddingInner,\n barBandPaddingInner = scaleConfig.barBandPaddingInner,\n rectBandPaddingInner = scaleConfig.rectBandPaddingInner,\n bandWithNestedOffsetPaddingInner = scaleConfig.bandWithNestedOffsetPaddingInner;\n if (hasNestedOffsetScale) {\n return bandWithNestedOffsetPaddingInner;\n }\n return getFirstDefined(bandPaddingInner, mark === 'bar' ? barBandPaddingInner : rectBandPaddingInner);\n } else if (isXorYOffset(channel)) {\n if (scaleType === ScaleType.BAND) {\n return scaleConfig.offsetBandPaddingInner;\n }\n }\n return undefined;\n}\nexport { _paddingInner as paddingInner };\nfunction _paddingOuter(paddingValue, channel, scaleType, paddingInnerValue, scaleConfig) {\n var hasNestedOffsetScale = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;\n if (paddingValue !== undefined) {\n // If user has already manually specified \"padding\", no need to add default paddingOuter.\n return undefined;\n }\n if (isXorY(channel)) {\n var bandPaddingOuter = scaleConfig.bandPaddingOuter,\n bandWithNestedOffsetPaddingOuter = scaleConfig.bandWithNestedOffsetPaddingOuter;\n if (hasNestedOffsetScale) {\n return bandWithNestedOffsetPaddingOuter;\n }\n // Padding is only set for X and Y by default.\n // Basically it doesn't make sense to add padding for color and size.\n if (scaleType === ScaleType.BAND) {\n return getFirstDefined(bandPaddingOuter,\n /* By default, paddingOuter is paddingInner / 2. The reason is that\n size (width/height) = step * (cardinality - paddingInner + 2 * paddingOuter).\n and we want the width/height to be integer by default.\n Note that step (by default) and cardinality are integers.) */\n isSignalRef(paddingInnerValue) ? {\n signal: \"\".concat(paddingInnerValue.signal, \"/2\")\n } : paddingInnerValue / 2);\n }\n } else if (isXorYOffset(channel)) {\n if (scaleType === ScaleType.POINT) {\n return 0.5; // so the point positions align with centers of band scales.\n } else if (scaleType === ScaleType.BAND) {\n return scaleConfig.offsetBandPaddingOuter;\n }\n }\n return undefined;\n}\nexport { _paddingOuter as paddingOuter };\nfunction _reverse(scaleType, sort, channel, scaleConfig) {\n if (channel === 'x' && scaleConfig.xReverse !== undefined) {\n if (hasContinuousDomain(scaleType) && sort === 'descending') {\n if (isSignalRef(scaleConfig.xReverse)) {\n return {\n signal: \"!\".concat(scaleConfig.xReverse.signal)\n };\n } else {\n return !scaleConfig.xReverse;\n }\n }\n return scaleConfig.xReverse;\n }\n if (hasContinuousDomain(scaleType) && sort === 'descending') {\n // For continuous domain scales, Vega does not support domain sort.\n // Thus, we reverse range instead if sort is descending\n return true;\n }\n return undefined;\n}\nexport { _reverse as reverse };\nfunction _zero(channel, fieldDef, specifiedDomain, markDef, scaleType, scaleConfig, hasSecondaryRangeChannel) {\n // If users explicitly provide a domain, we should not augment zero as that will be unexpected.\n var hasCustomDomain = !!specifiedDomain && specifiedDomain !== 'unaggregated';\n if (hasCustomDomain) {\n if (hasContinuousDomain(scaleType)) {\n if (isArray(specifiedDomain)) {\n var first = specifiedDomain[0];\n var last = specifiedDomain[specifiedDomain.length - 1];\n if (first <= 0 && last >= 0) {\n // if the domain includes zero, make zero remains true\n return true;\n }\n }\n return false;\n }\n }\n // If there is no custom domain, return configZero value (=`true` as default) only for the following cases:\n // 1) using quantitative field with size\n // While this can be either ratio or interval fields, our assumption is that\n // ratio are more common. However, if the scaleType is discretizing scale, we want to return\n // false so that range doesn't start at zero\n if (channel === 'size' && fieldDef.type === 'quantitative' && !isContinuousToDiscrete(scaleType)) {\n return true;\n }\n // 2) non-binned, quantitative x-scale or y-scale\n // (For binning, we should not include zero by default because binning are calculated without zero.)\n // (For area/bar charts with ratio scale chart, we should always include zero.)\n if (!(isFieldDef(fieldDef) && fieldDef.bin) && util.contains([].concat(_toConsumableArray(POSITION_SCALE_CHANNELS), _toConsumableArray(POLAR_POSITION_SCALE_CHANNELS)), channel)) {\n var orient = markDef.orient,\n type = markDef.type;\n if (contains(['bar', 'area', 'line', 'trail'], type)) {\n if (orient === 'horizontal' && channel === 'y' || orient === 'vertical' && channel === 'x') {\n return false;\n }\n }\n if (contains(['bar', 'area'], type) && !hasSecondaryRangeChannel) {\n return true;\n }\n return scaleConfig === null || scaleConfig === void 0 ? void 0 : scaleConfig.zero;\n }\n return false;\n}\nexport { _zero as zero };","import { isBinning } from '../../bin';\nimport { getSizeChannel, isColorChannel, isScaleChannel, isXorY, isXorYOffset, rangeType } from '../../channel';\nimport { isFieldDef, isPositionFieldOrDatumDef } from '../../channeldef';\nimport * as log from '../../log';\nimport { isRelativeBandSize } from '../../mark';\nimport { channelSupportScaleType, scaleTypeSupportDataType } from '../../scale';\nimport { normalizeTimeUnit } from '../../timeunit';\nimport * as util from '../../util';\nimport { POLAR_POSITION_SCALE_CHANNEL_INDEX } from './../../channel';\n/**\n * Determine if there is a specified scale type and if it is appropriate,\n * or determine default type if type is unspecified or inappropriate.\n */\n// NOTE: CompassQL uses this method.\nexport function scaleType(specifiedScale, channel, fieldDef, mark) {\n var hasNestedOffsetScale = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n var defaultScaleType = defaultType(channel, fieldDef, mark, hasNestedOffsetScale);\n var type = specifiedScale.type;\n if (!isScaleChannel(channel)) {\n // There is no scale for these channels\n return null;\n }\n if (type !== undefined) {\n // Check if explicitly specified scale type is supported by the channel\n if (!channelSupportScaleType(channel, type)) {\n log.warn(log.message.scaleTypeNotWorkWithChannel(channel, type, defaultScaleType));\n return defaultScaleType;\n }\n // Check if explicitly specified scale type is supported by the data type\n if (isFieldDef(fieldDef) && !scaleTypeSupportDataType(type, fieldDef.type)) {\n log.warn(log.message.scaleTypeNotWorkWithFieldDef(type, defaultScaleType));\n return defaultScaleType;\n }\n return type;\n }\n return defaultScaleType;\n}\n/**\n * Determine appropriate default scale type.\n */\n// NOTE: Voyager uses this method.\nfunction defaultType(channel, fieldDef, mark, hasNestedOffsetScale) {\n switch (fieldDef.type) {\n case 'nominal':\n case 'ordinal':\n {\n var _fieldDef$axis;\n if (isColorChannel(channel) || rangeType(channel) === 'discrete') {\n if (channel === 'shape' && fieldDef.type === 'ordinal') {\n log.warn(log.message.discreteChannelCannotEncode(channel, 'ordinal'));\n }\n return 'ordinal';\n }\n if (isXorY(channel) || isXorYOffset(channel)) {\n if (util.contains(['rect', 'bar', 'image', 'rule'], mark.type)) {\n // The rect/bar mark should fit into a band.\n // For rule, using band scale to make rule align with axis ticks better https://github.com/vega/vega-lite/issues/3429\n return 'band';\n }\n if (hasNestedOffsetScale) {\n // If there is a nested offset scale, then there is a \"band\" for the span of the nested scale.\n return 'band';\n }\n } else if (mark.type === 'arc' && channel in POLAR_POSITION_SCALE_CHANNEL_INDEX) {\n return 'band';\n }\n var dimensionSize = mark[getSizeChannel(channel)];\n if (isRelativeBandSize(dimensionSize)) {\n return 'band';\n }\n if (isPositionFieldOrDatumDef(fieldDef) && (_fieldDef$axis = fieldDef.axis) !== null && _fieldDef$axis !== void 0 && _fieldDef$axis.tickBand) {\n return 'band';\n }\n // Otherwise, use ordinal point scale so we can easily get center positions of the marks.\n return 'point';\n }\n case 'temporal':\n if (isColorChannel(channel)) {\n return 'time';\n } else if (rangeType(channel) === 'discrete') {\n log.warn(log.message.discreteChannelCannotEncode(channel, 'temporal'));\n // TODO: consider using quantize (equivalent to binning) once we have it\n return 'ordinal';\n } else if (isFieldDef(fieldDef) && fieldDef.timeUnit && normalizeTimeUnit(fieldDef.timeUnit).utc) {\n return 'utc';\n }\n return 'time';\n case 'quantitative':\n if (isColorChannel(channel)) {\n if (isFieldDef(fieldDef) && isBinning(fieldDef.bin)) {\n return 'bin-ordinal';\n }\n return 'linear';\n } else if (rangeType(channel) === 'discrete') {\n log.warn(log.message.discreteChannelCannotEncode(channel, 'quantitative'));\n // TODO: consider using quantize (equivalent to binning) once we have it\n return 'ordinal';\n }\n return 'linear';\n case 'geojson':\n return undefined;\n }\n /* istanbul ignore next: should never reach this */\n throw new Error(log.message.invalidFieldType(fieldDef.type));\n}","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { getMainChannelFromOffsetChannel, isXorYOffset, SCALE_CHANNELS, SHAPE } from '../../channel';\nimport { getFieldOrDatumDef } from '../../channeldef';\nimport { channelHasNestedOffsetScale } from '../../encoding';\nimport * as log from '../../log';\nimport { GEOSHAPE } from '../../mark';\nimport { NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTIES, scaleCompatible, scaleTypePrecedence } from '../../scale';\nimport { GEOJSON } from '../../type';\nimport { keys } from '../../util';\nimport { isUnitModel } from '../model';\nimport { defaultScaleResolve } from '../resolve';\nimport { mergeValuesWithExplicit, tieBreakByComparing } from '../split';\nimport { ScaleComponent } from './component';\nimport { parseScaleDomain } from './domain';\nimport { parseScaleProperty, parseScaleRange } from './properties';\nimport { scaleType } from './type';\nexport function parseScales(model) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n ignoreRange = _ref.ignoreRange;\n parseScaleCore(model);\n parseScaleDomain(model);\n var _iterator = _createForOfIteratorHelper(NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTIES),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var prop = _step.value;\n parseScaleProperty(model, prop);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n if (!ignoreRange) {\n // range depends on zero\n parseScaleRange(model);\n }\n}\nexport function parseScaleCore(model) {\n if (isUnitModel(model)) {\n model.component.scales = parseUnitScaleCore(model);\n } else {\n model.component.scales = parseNonUnitScaleCore(model);\n }\n}\n/**\n * Parse scales for all channels of a model.\n */\nfunction parseUnitScaleCore(model) {\n var encoding = model.encoding,\n mark = model.mark,\n markDef = model.markDef;\n var scaleComponents = {};\n var _iterator2 = _createForOfIteratorHelper(SCALE_CHANNELS),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var channel = _step2.value;\n var fieldOrDatumDef = getFieldOrDatumDef(encoding[channel]); // must be typed def to have scale\n // Don't generate scale for shape of geoshape\n if (fieldOrDatumDef && mark === GEOSHAPE && channel === SHAPE && fieldOrDatumDef.type === GEOJSON) {\n continue;\n }\n var specifiedScale = fieldOrDatumDef && fieldOrDatumDef['scale'];\n if (isXorYOffset(channel)) {\n var mainChannel = getMainChannelFromOffsetChannel(channel);\n if (!channelHasNestedOffsetScale(encoding, mainChannel)) {\n // Don't generate scale when the offset encoding shouldn't yield a nested scale\n if (specifiedScale) {\n log.warn(log.message.offsetEncodingScaleIgnored(channel));\n }\n continue;\n }\n }\n if (fieldOrDatumDef && specifiedScale !== null && specifiedScale !== false) {\n var _specifiedScale;\n (_specifiedScale = specifiedScale) !== null && _specifiedScale !== void 0 ? _specifiedScale : specifiedScale = {};\n var hasNestedOffsetScale = channelHasNestedOffsetScale(encoding, channel);\n var sType = scaleType(specifiedScale, channel, fieldOrDatumDef, markDef, hasNestedOffsetScale);\n scaleComponents[channel] = new ScaleComponent(model.scaleName(\"\".concat(channel), true), {\n value: sType,\n explicit: specifiedScale.type === sType\n });\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n return scaleComponents;\n}\nvar scaleTypeTieBreaker = tieBreakByComparing(function (st1, st2) {\n return scaleTypePrecedence(st1) - scaleTypePrecedence(st2);\n});\nfunction parseNonUnitScaleCore(model) {\n var _a;\n var scaleComponents = model.component.scales = {};\n var scaleTypeWithExplicitIndex = {};\n var resolve = model.component.resolve;\n // Parse each child scale and determine if a particular channel can be merged.\n var _iterator3 = _createForOfIteratorHelper(model.children),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var child = _step3.value;\n parseScaleCore(child);\n // Instead of always merging right away -- check if it is compatible to merge first!\n var _iterator5 = _createForOfIteratorHelper(keys(child.component.scales)),\n _step5;\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var _a$channel;\n var channel = _step5.value;\n // if resolve is undefined, set default first\n (_a$channel = (_a = resolve.scale)[channel]) !== null && _a$channel !== void 0 ? _a$channel : _a[channel] = defaultScaleResolve(channel, model);\n if (resolve.scale[channel] === 'shared') {\n var explicitScaleType = scaleTypeWithExplicitIndex[channel];\n var childScaleType = child.component.scales[channel].getWithExplicit('type');\n if (explicitScaleType) {\n if (scaleCompatible(explicitScaleType.value, childScaleType.value)) {\n // merge scale component if type are compatible\n scaleTypeWithExplicitIndex[channel] = mergeValuesWithExplicit(explicitScaleType, childScaleType, 'type', 'scale', scaleTypeTieBreaker);\n } else {\n // Otherwise, update conflicting channel to be independent\n resolve.scale[channel] = 'independent';\n // Remove from the index so they don't get merged\n delete scaleTypeWithExplicitIndex[channel];\n }\n } else {\n scaleTypeWithExplicitIndex[channel] = childScaleType;\n }\n }\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n }\n // Merge each channel listed in the index\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n var _iterator4 = _createForOfIteratorHelper(keys(scaleTypeWithExplicitIndex)),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var _channel = _step4.value;\n // Create new merged scale component\n var name = model.scaleName(_channel, true);\n var typeWithExplicit = scaleTypeWithExplicitIndex[_channel];\n scaleComponents[_channel] = new ScaleComponent(name, typeWithExplicit);\n // rename each child and mark them as merged\n var _iterator6 = _createForOfIteratorHelper(model.children),\n _step6;\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var _child = _step6.value;\n var childScale = _child.component.scales[_channel];\n if (childScale) {\n _child.renameScale(childScale.get('name'), name);\n childScale.merged = true;\n }\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n return scaleComponents;\n}","import _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nimport _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nvar _excluded = [\"style\"],\n _excluded2 = [\"spacing\"],\n _excluded3 = [\"encoding\"];\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { FACET_CHANNELS, getPositionScaleChannel, isChannel, isScaleChannel } from '../channel';\nimport { getFieldDef, vgField as _vgField } from '../channeldef';\nimport { DataSourceType } from '../data';\nimport { forEach, reduce } from '../encoding';\nimport { replaceExprRef } from '../expr';\nimport * as log from '../log';\nimport { hasDiscreteDomain } from '../scale';\nimport { isFacetSpec } from '../spec';\nimport { extractCompositionLayout } from '../spec/base';\nimport { extractTitleConfig, isText } from '../title';\nimport { normalizeTransform } from '../transform';\nimport { contains, duplicate, isEmpty, keys, varName } from '../util';\nimport { isVgRangeStep } from '../vega.schema';\nimport { assembleAxes as _assembleAxes } from './axis/assemble';\nimport { signalOrValueRef } from './common';\nimport { assembleHeaderGroups, assembleLayoutTitleBand, assembleTitleGroup } from './header/assemble';\nimport { HEADER_CHANNELS } from './header/component';\nimport { sizeExpr } from './layoutsize/assemble';\nimport { getSizeTypeFromLayoutSizeType } from './layoutsize/component';\nimport { assembleLegends as _assembleLegends } from './legend/assemble';\nimport { parseLegend } from './legend/parse';\nimport { assembleProjections as _assembleProjections } from './projection/assemble';\nimport { parseProjection as _parseProjection } from './projection/parse';\nimport { assembleScales } from './scale/assemble';\nimport { assembleDomain, getFieldFromDomain } from './scale/domain';\nimport { parseScales } from './scale/parse';\nimport { Split } from './split';\nexport var NameMap = /*#__PURE__*/function () {\n function NameMap() {\n _classCallCheck(this, NameMap);\n this.nameMap = {};\n }\n _createClass(NameMap, [{\n key: \"rename\",\n value: function rename(oldName, newName) {\n this.nameMap[oldName] = newName;\n }\n }, {\n key: \"has\",\n value: function has(name) {\n return this.nameMap[name] !== undefined;\n }\n }, {\n key: \"get\",\n value: function get(name) {\n // If the name appears in the _nameMap, we need to read its new name.\n // We have to loop over the dict just in case the new name also gets renamed.\n while (this.nameMap[name] && name !== this.nameMap[name]) {\n name = this.nameMap[name];\n }\n return name;\n }\n }]);\n return NameMap;\n}();\n/*\n We use type guards instead of `instanceof` as `instanceof` makes\n different parts of the compiler depend on the actual implementation of\n the model classes, which in turn depend on different parts of the compiler.\n Thus, `instanceof` leads to circular dependency problems.\n\n On the other hand, type guards only make different parts of the compiler\n depend on the type of the model classes, but not the actual implementation.\n*/\nexport function isUnitModel(model) {\n return (model === null || model === void 0 ? void 0 : model.type) === 'unit';\n}\nexport function isFacetModel(model) {\n return (model === null || model === void 0 ? void 0 : model.type) === 'facet';\n}\nexport function isConcatModel(model) {\n return (model === null || model === void 0 ? void 0 : model.type) === 'concat';\n}\nexport function isLayerModel(model) {\n return (model === null || model === void 0 ? void 0 : model.type) === 'layer';\n}\nexport var Model = /*#__PURE__*/function () {\n function Model(spec, type, parent, parentGivenName, config, resolve, view) {\n var _this = this,\n _spec$name,\n _spec$transform;\n _classCallCheck(this, Model);\n this.type = type;\n this.parent = parent;\n this.config = config;\n /**\n * Corrects the data references in marks after assemble.\n */\n this.correctDataNames = function (mark) {\n var _mark$from, _mark$from2;\n // TODO: make this correct\n // for normal data references\n if ((_mark$from = mark.from) !== null && _mark$from !== void 0 && _mark$from.data) {\n mark.from.data = _this.lookupDataSource(mark.from.data);\n }\n // for access to facet data\n if ((_mark$from2 = mark.from) !== null && _mark$from2 !== void 0 && (_mark$from2 = _mark$from2.facet) !== null && _mark$from2 !== void 0 && _mark$from2.data) {\n mark.from.facet.data = _this.lookupDataSource(mark.from.facet.data);\n }\n return mark;\n };\n this.parent = parent;\n this.config = config;\n this.view = replaceExprRef(view);\n // If name is not provided, always use parent's givenName to avoid name conflicts.\n this.name = (_spec$name = spec.name) !== null && _spec$name !== void 0 ? _spec$name : parentGivenName;\n this.title = isText(spec.title) ? {\n text: spec.title\n } : spec.title ? replaceExprRef(spec.title) : undefined;\n // Shared name maps\n this.scaleNameMap = parent ? parent.scaleNameMap : new NameMap();\n this.projectionNameMap = parent ? parent.projectionNameMap : new NameMap();\n this.signalNameMap = parent ? parent.signalNameMap : new NameMap();\n this.data = spec.data;\n this.description = spec.description;\n this.transforms = normalizeTransform((_spec$transform = spec.transform) !== null && _spec$transform !== void 0 ? _spec$transform : []);\n this.layout = type === 'layer' || type === 'unit' ? {} : extractCompositionLayout(spec, type, config);\n this.component = {\n data: {\n sources: parent ? parent.component.data.sources : [],\n outputNodes: parent ? parent.component.data.outputNodes : {},\n outputNodeRefCounts: parent ? parent.component.data.outputNodeRefCounts : {},\n // data is faceted if the spec is a facet spec or the parent has faceted data and data is undefined\n isFaceted: isFacetSpec(spec) || (parent === null || parent === void 0 ? void 0 : parent.component.data.isFaceted) && spec.data === undefined\n },\n layoutSize: new Split(),\n layoutHeaders: {\n row: {},\n column: {},\n facet: {}\n },\n mark: null,\n resolve: _objectSpread({\n scale: {},\n axis: {},\n legend: {}\n }, resolve ? duplicate(resolve) : {}),\n selection: null,\n scales: null,\n projection: null,\n axes: {},\n legends: {}\n };\n }\n _createClass(Model, [{\n key: \"width\",\n get: function get() {\n return this.getSizeSignalRef('width');\n }\n }, {\n key: \"height\",\n get: function get() {\n return this.getSizeSignalRef('height');\n }\n }, {\n key: \"parse\",\n value: function parse() {\n this.parseScale();\n this.parseLayoutSize(); // depends on scale\n this.renameTopLevelLayoutSizeSignal();\n this.parseSelections();\n this.parseProjection();\n this.parseData(); // (pathorder) depends on markDef; selection filters depend on parsed selections; depends on projection because some transforms require the finalized projection name.\n this.parseAxesAndHeaders(); // depends on scale and layout size\n this.parseLegends(); // depends on scale, markDef\n this.parseMarkGroup(); // depends on data name, scale, layout size, axisGroup, and children's scale, axis, legend and mark.\n }\n }, {\n key: \"parseScale\",\n value: function parseScale() {\n parseScales(this);\n }\n }, {\n key: \"parseProjection\",\n value: function parseProjection() {\n _parseProjection(this);\n }\n /**\n * Rename top-level spec's size to be just width / height, ignoring model name.\n * This essentially merges the top-level spec's width/height signals with the width/height signals\n * to help us reduce redundant signals declaration.\n */\n }, {\n key: \"renameTopLevelLayoutSizeSignal\",\n value: function renameTopLevelLayoutSizeSignal() {\n if (this.getName('width') !== 'width') {\n this.renameSignal(this.getName('width'), 'width');\n }\n if (this.getName('height') !== 'height') {\n this.renameSignal(this.getName('height'), 'height');\n }\n }\n }, {\n key: \"parseLegends\",\n value: function parseLegends() {\n parseLegend(this);\n }\n }, {\n key: \"assembleEncodeFromView\",\n value: function assembleEncodeFromView(view) {\n // Exclude \"style\"\n var _ = view.style,\n baseView = _objectWithoutProperties(view, _excluded);\n var e = {};\n var _iterator = _createForOfIteratorHelper(keys(baseView)),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var property = _step.value;\n var value = baseView[property];\n if (value !== undefined) {\n e[property] = signalOrValueRef(value);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return e;\n }\n }, {\n key: \"assembleGroupEncodeEntry\",\n value: function assembleGroupEncodeEntry(isTopLevel) {\n var encodeEntry = {};\n if (this.view) {\n encodeEntry = this.assembleEncodeFromView(this.view);\n }\n if (!isTopLevel) {\n // Descriptions are already added to the top-level description so we only need to add them to the inner views.\n if (this.description) {\n encodeEntry['description'] = signalOrValueRef(this.description);\n }\n // For top-level spec, we can set the global width and height signal to adjust the group size.\n // For other child specs, we have to manually set width and height in the encode entry.\n if (this.type === 'unit' || this.type === 'layer') {\n var _encodeEntry;\n return _objectSpread({\n width: this.getSizeSignalRef('width'),\n height: this.getSizeSignalRef('height')\n }, (_encodeEntry = encodeEntry) !== null && _encodeEntry !== void 0 ? _encodeEntry : {});\n }\n }\n return isEmpty(encodeEntry) ? undefined : encodeEntry;\n }\n }, {\n key: \"assembleLayout\",\n value: function assembleLayout() {\n if (!this.layout) {\n return undefined;\n }\n var _this$layout = this.layout,\n spacing = _this$layout.spacing,\n layout = _objectWithoutProperties(_this$layout, _excluded2);\n var component = this.component,\n config = this.config;\n var titleBand = assembleLayoutTitleBand(component.layoutHeaders, config);\n return _objectSpread(_objectSpread(_objectSpread({\n padding: spacing\n }, this.assembleDefaultLayout()), layout), titleBand ? {\n titleBand: titleBand\n } : {});\n }\n }, {\n key: \"assembleDefaultLayout\",\n value: function assembleDefaultLayout() {\n return {};\n }\n }, {\n key: \"assembleHeaderMarks\",\n value: function assembleHeaderMarks() {\n var layoutHeaders = this.component.layoutHeaders;\n var headerMarks = [];\n var _iterator2 = _createForOfIteratorHelper(FACET_CHANNELS),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var channel = _step2.value;\n if (layoutHeaders[channel].title) {\n headerMarks.push(assembleTitleGroup(this, channel));\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n var _iterator3 = _createForOfIteratorHelper(HEADER_CHANNELS),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var _channel = _step3.value;\n headerMarks = headerMarks.concat(assembleHeaderGroups(this, _channel));\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n return headerMarks;\n }\n }, {\n key: \"assembleAxes\",\n value: function assembleAxes() {\n return _assembleAxes(this.component.axes, this.config);\n }\n }, {\n key: \"assembleLegends\",\n value: function assembleLegends() {\n return _assembleLegends(this);\n }\n }, {\n key: \"assembleProjections\",\n value: function assembleProjections() {\n return _assembleProjections(this);\n }\n }, {\n key: \"assembleTitle\",\n value: function assembleTitle() {\n var _this$title;\n var _ref = (_this$title = this.title) !== null && _this$title !== void 0 ? _this$title : {},\n encoding = _ref.encoding,\n titleNoEncoding = _objectWithoutProperties(_ref, _excluded3);\n var title = _objectSpread(_objectSpread(_objectSpread({}, extractTitleConfig(this.config.title).nonMarkTitleProperties), titleNoEncoding), encoding ? {\n encode: {\n update: encoding\n }\n } : {});\n if (title.text) {\n if (contains(['unit', 'layer'], this.type)) {\n // Unit/Layer\n if (contains(['middle', undefined], title.anchor)) {\n var _title$frame;\n (_title$frame = title.frame) !== null && _title$frame !== void 0 ? _title$frame : title.frame = 'group';\n }\n } else {\n var _title$anchor;\n // composition with Vega layout\n // Set title = \"start\" by default for composition as \"middle\" does not look nice\n // https://github.com/vega/vega/issues/960#issuecomment-471360328\n (_title$anchor = title.anchor) !== null && _title$anchor !== void 0 ? _title$anchor : title.anchor = 'start';\n }\n return isEmpty(title) ? undefined : title;\n }\n return undefined;\n }\n /**\n * Assemble the mark group for this model. We accept optional `signals` so that we can include concat top-level signals with the top-level model's local signals.\n */\n }, {\n key: \"assembleGroup\",\n value: function assembleGroup() {\n var signals = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var group = {};\n signals = signals.concat(this.assembleSignals());\n if (signals.length > 0) {\n group.signals = signals;\n }\n var layout = this.assembleLayout();\n if (layout) {\n group.layout = layout;\n }\n group.marks = [].concat(this.assembleHeaderMarks(), this.assembleMarks());\n // Only include scales if this spec is top-level or if parent is facet.\n // (Otherwise, it will be merged with upper-level's scope.)\n var scales = !this.parent || isFacetModel(this.parent) ? assembleScales(this) : [];\n if (scales.length > 0) {\n group.scales = scales;\n }\n var axes = this.assembleAxes();\n if (axes.length > 0) {\n group.axes = axes;\n }\n var legends = this.assembleLegends();\n if (legends.length > 0) {\n group.legends = legends;\n }\n return group;\n }\n }, {\n key: \"getName\",\n value: function getName(text) {\n return varName((this.name ? \"\".concat(this.name, \"_\") : '') + text);\n }\n }, {\n key: \"getDataName\",\n value: function getDataName(type) {\n return this.getName(DataSourceType[type].toLowerCase());\n }\n /**\n * Request a data source name for the given data source type and mark that data source as required.\n * This method should be called in parse, so that all used data source can be correctly instantiated in assembleData().\n * You can lookup the correct dataset name in assemble with `lookupDataSource`.\n */\n }, {\n key: \"requestDataName\",\n value: function requestDataName(name) {\n var fullName = this.getDataName(name);\n // Increase ref count. This is critical because otherwise we won't create a data source.\n // We also increase the ref counts on OutputNode.getSource() calls.\n var refCounts = this.component.data.outputNodeRefCounts;\n refCounts[fullName] = (refCounts[fullName] || 0) + 1;\n return fullName;\n }\n }, {\n key: \"getSizeSignalRef\",\n value: function getSizeSignalRef(layoutSizeType) {\n if (isFacetModel(this.parent)) {\n var sizeType = getSizeTypeFromLayoutSizeType(layoutSizeType);\n var channel = getPositionScaleChannel(sizeType);\n var scaleComponent = this.component.scales[channel];\n if (scaleComponent && !scaleComponent.merged) {\n // independent scale\n var type = scaleComponent.get('type');\n var range = scaleComponent.get('range');\n if (hasDiscreteDomain(type) && isVgRangeStep(range)) {\n var scaleName = scaleComponent.get('name');\n var domain = assembleDomain(this, channel);\n var field = getFieldFromDomain(domain);\n if (field) {\n var fieldRef = _vgField({\n aggregate: 'distinct',\n field: field\n }, {\n expr: 'datum'\n });\n return {\n signal: sizeExpr(scaleName, scaleComponent, fieldRef)\n };\n } else {\n log.warn(log.message.unknownField(channel));\n return null;\n }\n }\n }\n }\n return {\n signal: this.signalNameMap.get(this.getName(layoutSizeType))\n };\n }\n /**\n * Lookup the name of the datasource for an output node. You probably want to call this in assemble.\n */\n }, {\n key: \"lookupDataSource\",\n value: function lookupDataSource(name) {\n var node = this.component.data.outputNodes[name];\n if (!node) {\n // Name not found in map so let's just return what we got.\n // This can happen if we already have the correct name.\n return name;\n }\n return node.getSource();\n }\n }, {\n key: \"getSignalName\",\n value: function getSignalName(oldSignalName) {\n return this.signalNameMap.get(oldSignalName);\n }\n }, {\n key: \"renameSignal\",\n value: function renameSignal(oldName, newName) {\n this.signalNameMap.rename(oldName, newName);\n }\n }, {\n key: \"renameScale\",\n value: function renameScale(oldName, newName) {\n this.scaleNameMap.rename(oldName, newName);\n }\n }, {\n key: \"renameProjection\",\n value: function renameProjection(oldName, newName) {\n this.projectionNameMap.rename(oldName, newName);\n }\n /**\n * @return scale name for a given channel after the scale has been parsed and named.\n */\n }, {\n key: \"scaleName\",\n value: function scaleName(originalScaleName, parse) {\n if (parse) {\n // During the parse phase always return a value\n // No need to refer to rename map because a scale can't be renamed\n // before it has the original name.\n return this.getName(originalScaleName);\n }\n // If there is a scale for the channel, it should either\n // be in the scale component or exist in the name map\n if (\n // If there is a scale for the channel, there should be a local scale component for it\n isChannel(originalScaleName) && isScaleChannel(originalScaleName) && this.component.scales[originalScaleName] ||\n // in the scale name map (the scale get merged by its parent)\n this.scaleNameMap.has(this.getName(originalScaleName))) {\n return this.scaleNameMap.get(this.getName(originalScaleName));\n }\n return undefined;\n }\n /**\n * @return projection name after the projection has been parsed and named.\n */\n }, {\n key: \"projectionName\",\n value: function projectionName(parse) {\n if (parse) {\n // During the parse phase always return a value\n // No need to refer to rename map because a projection can't be renamed\n // before it has the original name.\n return this.getName('projection');\n }\n if (this.component.projection && !this.component.projection.merged || this.projectionNameMap.has(this.getName('projection'))) {\n return this.projectionNameMap.get(this.getName('projection'));\n }\n return undefined;\n }\n /**\n * Traverse a model's hierarchy to get the scale component for a particular channel.\n */\n }, {\n key: \"getScaleComponent\",\n value: function getScaleComponent(channel) {\n /* istanbul ignore next: This is warning for debugging test */\n if (!this.component.scales) {\n throw new Error('getScaleComponent cannot be called before parseScale(). Make sure you have called parseScale or use parseUnitModelWithScale().');\n }\n var localScaleComponent = this.component.scales[channel];\n if (localScaleComponent && !localScaleComponent.merged) {\n return localScaleComponent;\n }\n return this.parent ? this.parent.getScaleComponent(channel) : undefined;\n }\n /**\n * Traverse a model's hierarchy to get a particular selection component.\n */\n }, {\n key: \"getSelectionComponent\",\n value: function getSelectionComponent(variableName, origName) {\n var sel = this.component.selection[variableName];\n if (!sel && this.parent) {\n sel = this.parent.getSelectionComponent(variableName, origName);\n }\n if (!sel) {\n throw new Error(log.message.selectionNotFound(origName));\n }\n return sel;\n }\n /**\n * Returns true if the model has a signalRef for an axis orient.\n */\n }, {\n key: \"hasAxisOrientSignalRef\",\n value: function hasAxisOrientSignalRef() {\n var _this$component$axes$, _this$component$axes$2;\n return ((_this$component$axes$ = this.component.axes.x) === null || _this$component$axes$ === void 0 ? void 0 : _this$component$axes$.some(function (a) {\n return a.hasOrientSignalRef();\n })) || ((_this$component$axes$2 = this.component.axes.y) === null || _this$component$axes$2 === void 0 ? void 0 : _this$component$axes$2.some(function (a) {\n return a.hasOrientSignalRef();\n }));\n }\n }]);\n return Model;\n}();\n/** Abstract class for UnitModel and FacetModel. Both of which can contain fieldDefs as a part of its own specification. */\nexport var ModelWithField = /*#__PURE__*/function (_Model) {\n _inherits(ModelWithField, _Model);\n var _super = _createSuper(ModelWithField);\n function ModelWithField() {\n _classCallCheck(this, ModelWithField);\n return _super.apply(this, arguments);\n }\n _createClass(ModelWithField, [{\n key: \"vgField\",\n value: /** Get \"field\" reference for Vega */\n function vgField(channel) {\n var opt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var fieldDef = this.fieldDef(channel);\n if (!fieldDef) {\n return undefined;\n }\n return _vgField(fieldDef, opt);\n }\n }, {\n key: \"reduceFieldDef\",\n value: function reduceFieldDef(f, init) {\n return reduce(this.getMapping(), function (acc, cd, c) {\n var fieldDef = getFieldDef(cd);\n if (fieldDef) {\n return f(acc, fieldDef, c);\n }\n return acc;\n }, init);\n }\n }, {\n key: \"forEachFieldDef\",\n value: function forEachFieldDef(f, t) {\n forEach(this.getMapping(), function (cd, c) {\n var fieldDef = getFieldDef(cd);\n if (fieldDef) {\n f(fieldDef, c);\n }\n }, t);\n }\n }]);\n return ModelWithField;\n}(Model);","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nvar _excluded = [\"density\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { duplicate, hash as _hash } from '../../util';\nimport { DataFlowNode } from './dataflow';\n/**\n * A class for density transform nodes\n */\nexport var DensityTransformNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(DensityTransformNode, _DataFlowNode);\n var _super = _createSuper(DensityTransformNode);\n function DensityTransformNode(parent, transform) {\n var _this$transform$as, _specifiedAs$, _specifiedAs$2;\n var _this;\n _classCallCheck(this, DensityTransformNode);\n _this = _super.call(this, parent);\n _this.transform = transform;\n _this.transform = duplicate(transform); // duplicate to prevent side effects\n var specifiedAs = (_this$transform$as = _this.transform.as) !== null && _this$transform$as !== void 0 ? _this$transform$as : [undefined, undefined];\n _this.transform.as = [(_specifiedAs$ = specifiedAs[0]) !== null && _specifiedAs$ !== void 0 ? _specifiedAs$ : 'value', (_specifiedAs$2 = specifiedAs[1]) !== null && _specifiedAs$2 !== void 0 ? _specifiedAs$2 : 'density'];\n // set steps when we are grouping so that we get consitent sampling points for imputing and grouping\n if (transform.groupby && transform.minsteps == null && transform.maxsteps == null && transform.steps == null) {\n _this.transform.steps = 200;\n }\n return _this;\n }\n _createClass(DensityTransformNode, [{\n key: \"clone\",\n value: function clone() {\n return new DensityTransformNode(null, duplicate(this.transform));\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n var _this$transform$group;\n return new Set([this.transform.density].concat(_toConsumableArray((_this$transform$group = this.transform.groupby) !== null && _this$transform$group !== void 0 ? _this$transform$group : [])));\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return new Set(this.transform.as);\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return \"DensityTransform \".concat(_hash(this.transform));\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n var _this$transform = this.transform,\n density = _this$transform.density,\n rest = _objectWithoutProperties(_this$transform, _excluded);\n var result = _objectSpread({\n type: 'kde',\n field: density\n }, rest);\n return result;\n }\n }]);\n return DensityTransformNode;\n}(DataFlowNode);","import _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { duplicate, hash as _hash } from '../../util';\nimport { DataFlowNode } from './dataflow';\n/**\n * A class for flatten transform nodes\n */\nexport var ExtentTransformNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(ExtentTransformNode, _DataFlowNode);\n var _super = _createSuper(ExtentTransformNode);\n function ExtentTransformNode(parent, transform) {\n var _this;\n _classCallCheck(this, ExtentTransformNode);\n _this = _super.call(this, parent);\n _this.transform = transform;\n _this.transform = duplicate(transform);\n return _this;\n }\n _createClass(ExtentTransformNode, [{\n key: \"clone\",\n value: function clone() {\n return new ExtentTransformNode(null, duplicate(this.transform));\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n return new Set([this.transform.extent]);\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return new Set([]);\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return \"ExtentTransform \".concat(_hash(this.transform));\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n var _this$transform = this.transform,\n extent = _this$transform.extent,\n param = _this$transform.param;\n var result = {\n type: 'extent',\n field: extent,\n signal: param\n };\n return result;\n }\n }]);\n return ExtentTransformNode;\n}(DataFlowNode);","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { isScaleChannel } from '../../channel';\nimport { vgField as fieldRef } from '../../channeldef';\nimport { isPathMark } from '../../mark';\nimport { hasContinuousDomain } from '../../scale';\nimport { hash as _hash, keys } from '../../util';\nimport { getMarkPropOrConfig } from '../common';\nimport { DataFlowNode } from './dataflow';\nexport var FilterInvalidNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(FilterInvalidNode, _DataFlowNode);\n var _super = _createSuper(FilterInvalidNode);\n function FilterInvalidNode(parent, filter) {\n var _this;\n _classCallCheck(this, FilterInvalidNode);\n _this = _super.call(this, parent);\n _this.filter = filter;\n return _this;\n }\n _createClass(FilterInvalidNode, [{\n key: \"clone\",\n value: function clone() {\n return new FilterInvalidNode(null, _objectSpread({}, this.filter));\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n return new Set(keys(this.filter));\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return new Set(); // filter does not produce any new fields\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return \"FilterInvalid \".concat(_hash(this.filter));\n }\n /**\n * Create the VgTransforms for each of the filtered fields.\n */\n }, {\n key: \"assemble\",\n value: function assemble() {\n var _this2 = this;\n var filters = keys(this.filter).reduce(function (vegaFilters, field) {\n var fieldDef = _this2.filter[field];\n var ref = fieldRef(fieldDef, {\n expr: 'datum'\n });\n if (fieldDef !== null) {\n if (fieldDef.type === 'temporal') {\n vegaFilters.push(\"(isDate(\".concat(ref, \") || (isValid(\").concat(ref, \") && isFinite(+\").concat(ref, \")))\"));\n } else if (fieldDef.type === 'quantitative') {\n vegaFilters.push(\"isValid(\".concat(ref, \")\"));\n vegaFilters.push(\"isFinite(+\".concat(ref, \")\"));\n } else {\n // should never get here\n }\n }\n return vegaFilters;\n }, []);\n return filters.length > 0 ? {\n type: 'filter',\n expr: filters.join(' && ')\n } : null;\n }\n }], [{\n key: \"make\",\n value: function make(parent, model) {\n var config = model.config,\n mark = model.mark,\n markDef = model.markDef;\n var invalid = getMarkPropOrConfig('invalid', markDef, config);\n if (invalid !== 'filter') {\n return null;\n }\n var filter = model.reduceFieldDef(function (aggregator, fieldDef, channel) {\n var scaleComponent = isScaleChannel(channel) && model.getScaleComponent(channel);\n if (scaleComponent) {\n var scaleType = scaleComponent.get('type');\n // While discrete domain scales can handle invalid values, continuous scales can't.\n // Thus, for non-path marks, we have to filter null for scales with continuous domains.\n // (For path marks, we will use \"defined\" property and skip these values instead.)\n if (hasContinuousDomain(scaleType) && fieldDef.aggregate !== 'count' && !isPathMark(mark)) {\n aggregator[fieldDef.field] = fieldDef; // we know that the fieldDef is a typed field def\n }\n }\n\n return aggregator;\n }, {});\n if (!keys(filter).length) {\n return null;\n }\n return new FilterInvalidNode(parent, filter);\n }\n }]);\n return FilterInvalidNode;\n}(DataFlowNode);","import _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { duplicate, hash as _hash } from '../../util';\nimport { DataFlowNode } from './dataflow';\n/**\n * A class for flatten transform nodes\n */\nexport var FlattenTransformNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(FlattenTransformNode, _DataFlowNode);\n var _super = _createSuper(FlattenTransformNode);\n function FlattenTransformNode(parent, transform) {\n var _this;\n _classCallCheck(this, FlattenTransformNode);\n _this = _super.call(this, parent);\n _this.transform = transform;\n _this.transform = duplicate(transform); // duplicate to prevent side effects\n var _this$transform = _this.transform,\n flatten = _this$transform.flatten,\n _this$transform$as = _this$transform.as,\n as = _this$transform$as === void 0 ? [] : _this$transform$as;\n _this.transform.as = flatten.map(function (f, i) {\n var _as$i;\n return (_as$i = as[i]) !== null && _as$i !== void 0 ? _as$i : f;\n });\n return _this;\n }\n _createClass(FlattenTransformNode, [{\n key: \"clone\",\n value: function clone() {\n return new FlattenTransformNode(this.parent, duplicate(this.transform));\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n return new Set(this.transform.flatten);\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return new Set(this.transform.as);\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return \"FlattenTransform \".concat(_hash(this.transform));\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n var _this$transform2 = this.transform,\n fields = _this$transform2.flatten,\n as = _this$transform2.as;\n var result = {\n type: 'flatten',\n fields: fields,\n as: as\n };\n return result;\n }\n }]);\n return FlattenTransformNode;\n}(DataFlowNode);","import _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { duplicate, hash as _hash } from '../../util';\nimport { DataFlowNode } from './dataflow';\n/**\n * A class for flatten transform nodes\n */\nexport var FoldTransformNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(FoldTransformNode, _DataFlowNode);\n var _super = _createSuper(FoldTransformNode);\n function FoldTransformNode(parent, transform) {\n var _this$transform$as, _specifiedAs$, _specifiedAs$2;\n var _this;\n _classCallCheck(this, FoldTransformNode);\n _this = _super.call(this, parent);\n _this.transform = transform;\n _this.transform = duplicate(transform); // duplicate to prevent side effects\n var specifiedAs = (_this$transform$as = _this.transform.as) !== null && _this$transform$as !== void 0 ? _this$transform$as : [undefined, undefined];\n _this.transform.as = [(_specifiedAs$ = specifiedAs[0]) !== null && _specifiedAs$ !== void 0 ? _specifiedAs$ : 'key', (_specifiedAs$2 = specifiedAs[1]) !== null && _specifiedAs$2 !== void 0 ? _specifiedAs$2 : 'value'];\n return _this;\n }\n _createClass(FoldTransformNode, [{\n key: \"clone\",\n value: function clone() {\n return new FoldTransformNode(null, duplicate(this.transform));\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n return new Set(this.transform.fold);\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return new Set(this.transform.as);\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return \"FoldTransform \".concat(_hash(this.transform));\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n var _this$transform = this.transform,\n fold = _this$transform.fold,\n as = _this$transform.as;\n var result = {\n type: 'fold',\n fields: fold,\n as: as\n };\n return result;\n }\n }]);\n return FoldTransformNode;\n}(DataFlowNode);","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { isString } from 'vega-util';\nimport { LATITUDE, LATITUDE2, LONGITUDE, LONGITUDE2, SHAPE } from '../../channel';\nimport { getFieldOrDatumDef, isDatumDef, isFieldDef, isValueDef } from '../../channeldef';\nimport { GEOJSON } from '../../type';\nimport { duplicate, hash as _hash } from '../../util';\nimport { DataFlowNode } from './dataflow';\nexport var GeoJSONNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(GeoJSONNode, _DataFlowNode);\n var _super = _createSuper(GeoJSONNode);\n function GeoJSONNode(parent, fields, geojson, signal) {\n var _this;\n _classCallCheck(this, GeoJSONNode);\n _this = _super.call(this, parent);\n _this.fields = fields;\n _this.geojson = geojson;\n _this.signal = signal;\n return _this;\n }\n _createClass(GeoJSONNode, [{\n key: \"clone\",\n value: function clone() {\n return new GeoJSONNode(null, duplicate(this.fields), this.geojson, this.signal);\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n var _this$fields;\n var fields = ((_this$fields = this.fields) !== null && _this$fields !== void 0 ? _this$fields : []).filter(isString);\n return new Set([].concat(_toConsumableArray(this.geojson ? [this.geojson] : []), _toConsumableArray(fields)));\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return new Set();\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return \"GeoJSON \".concat(this.geojson, \" \").concat(this.signal, \" \").concat(_hash(this.fields));\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n return [].concat(_toConsumableArray(this.geojson ? [{\n type: 'filter',\n expr: \"isValid(datum[\\\"\".concat(this.geojson, \"\\\"])\")\n }] : []), [_objectSpread(_objectSpread(_objectSpread({\n type: 'geojson'\n }, this.fields ? {\n fields: this.fields\n } : {}), this.geojson ? {\n geojson: this.geojson\n } : {}), {}, {\n signal: this.signal\n })]);\n }\n }], [{\n key: \"parseAll\",\n value: function parseAll(parent, model) {\n if (model.component.projection && !model.component.projection.isFit) {\n return parent;\n }\n var geoJsonCounter = 0;\n for (var _i = 0, _arr = [[LONGITUDE, LATITUDE], [LONGITUDE2, LATITUDE2]]; _i < _arr.length; _i++) {\n var coordinates = _arr[_i];\n var pair = coordinates.map(function (channel) {\n var def = getFieldOrDatumDef(model.encoding[channel]);\n return isFieldDef(def) ? def.field : isDatumDef(def) ? {\n expr: \"\".concat(def.datum)\n } : isValueDef(def) ? {\n expr: \"\".concat(def['value'])\n } : undefined;\n });\n if (pair[0] || pair[1]) {\n parent = new GeoJSONNode(parent, pair, null, model.getName(\"geojson_\".concat(geoJsonCounter++)));\n }\n }\n if (model.channelHasField(SHAPE)) {\n var fieldDef = model.typedFieldDef(SHAPE);\n if (fieldDef.type === GEOJSON) {\n parent = new GeoJSONNode(parent, null, fieldDef.field, model.getName(\"geojson_\".concat(geoJsonCounter++)));\n }\n }\n return parent;\n }\n }]);\n return GeoJSONNode;\n}(DataFlowNode);","import _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { isString } from 'vega-util';\nimport { LATITUDE, LATITUDE2, LONGITUDE, LONGITUDE2 } from '../../channel';\nimport { getFieldOrDatumDef, isDatumDef, isFieldDef, isValueDef } from '../../channeldef';\nimport { duplicate, hash as _hash } from '../../util';\nimport { DataFlowNode } from './dataflow';\nexport var GeoPointNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(GeoPointNode, _DataFlowNode);\n var _super = _createSuper(GeoPointNode);\n function GeoPointNode(parent, projection, fields, as) {\n var _this;\n _classCallCheck(this, GeoPointNode);\n _this = _super.call(this, parent);\n _this.projection = projection;\n _this.fields = fields;\n _this.as = as;\n return _this;\n }\n _createClass(GeoPointNode, [{\n key: \"clone\",\n value: function clone() {\n return new GeoPointNode(null, this.projection, duplicate(this.fields), duplicate(this.as));\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n return new Set(this.fields.filter(isString));\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return new Set(this.as);\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return \"Geopoint \".concat(this.projection, \" \").concat(_hash(this.fields), \" \").concat(_hash(this.as));\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n return {\n type: 'geopoint',\n projection: this.projection,\n fields: this.fields,\n as: this.as\n };\n }\n }], [{\n key: \"parseAll\",\n value: function parseAll(parent, model) {\n if (!model.projectionName()) {\n return parent;\n }\n for (var _i = 0, _arr = [[LONGITUDE, LATITUDE], [LONGITUDE2, LATITUDE2]]; _i < _arr.length; _i++) {\n var coordinates = _arr[_i];\n var pair = coordinates.map(function (channel) {\n var def = getFieldOrDatumDef(model.encoding[channel]);\n return isFieldDef(def) ? def.field : isDatumDef(def) ? {\n expr: \"\".concat(def.datum)\n } : isValueDef(def) ? {\n expr: \"\".concat(def['value'])\n } : undefined;\n });\n var suffix = coordinates[0] === LONGITUDE2 ? '2' : '';\n if (pair[0] || pair[1]) {\n parent = new GeoPointNode(parent, model.projectionName(), pair, [model.getName(\"x\".concat(suffix)), model.getName(\"y\".concat(suffix))]);\n }\n }\n return parent;\n }\n }]);\n return GeoPointNode;\n}(DataFlowNode);","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { isFieldDef } from '../../channeldef';\nimport { pathGroupingFields } from '../../encoding';\nimport { isImputeSequence } from '../../transform';\nimport { duplicate, hash as _hash } from '../../util';\nimport { DataFlowNode } from './dataflow';\nexport var ImputeNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(ImputeNode, _DataFlowNode);\n var _super = _createSuper(ImputeNode);\n function ImputeNode(parent, transform) {\n var _this;\n _classCallCheck(this, ImputeNode);\n _this = _super.call(this, parent);\n _this.transform = transform;\n return _this;\n }\n _createClass(ImputeNode, [{\n key: \"clone\",\n value: function clone() {\n return new ImputeNode(null, duplicate(this.transform));\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n var _this$transform$group;\n return new Set([this.transform.impute, this.transform.key].concat(_toConsumableArray((_this$transform$group = this.transform.groupby) !== null && _this$transform$group !== void 0 ? _this$transform$group : [])));\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return new Set([this.transform.impute]);\n }\n }, {\n key: \"processSequence\",\n value: function processSequence(keyvals) {\n var _keyvals$start = keyvals.start,\n start = _keyvals$start === void 0 ? 0 : _keyvals$start,\n stop = keyvals.stop,\n step = keyvals.step;\n var result = [start, stop].concat(_toConsumableArray(step ? [step] : [])).join(',');\n return {\n signal: \"sequence(\".concat(result, \")\")\n };\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return \"Impute \".concat(_hash(this.transform));\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n var _this$transform = this.transform,\n impute = _this$transform.impute,\n key = _this$transform.key,\n keyvals = _this$transform.keyvals,\n method = _this$transform.method,\n groupby = _this$transform.groupby,\n value = _this$transform.value,\n _this$transform$frame = _this$transform.frame,\n frame = _this$transform$frame === void 0 ? [null, null] : _this$transform$frame;\n var imputeTransform = _objectSpread(_objectSpread(_objectSpread({\n type: 'impute',\n field: impute,\n key: key\n }, keyvals ? {\n keyvals: isImputeSequence(keyvals) ? this.processSequence(keyvals) : keyvals\n } : {}), {}, {\n method: 'value'\n }, groupby ? {\n groupby: groupby\n } : {}), {}, {\n value: !method || method === 'value' ? value : null\n });\n if (method && method !== 'value') {\n var deriveNewField = _objectSpread({\n type: 'window',\n as: [\"imputed_\".concat(impute, \"_value\")],\n ops: [method],\n fields: [impute],\n frame: frame,\n ignorePeers: false\n }, groupby ? {\n groupby: groupby\n } : {});\n var replaceOriginal = {\n type: 'formula',\n expr: \"datum.\".concat(impute, \" === null ? datum.imputed_\").concat(impute, \"_value : datum.\").concat(impute),\n as: impute\n };\n return [imputeTransform, deriveNewField, replaceOriginal];\n } else {\n return [imputeTransform];\n }\n }\n }], [{\n key: \"makeFromTransform\",\n value: function makeFromTransform(parent, imputeTransform) {\n return new ImputeNode(parent, imputeTransform);\n }\n }, {\n key: \"makeFromEncoding\",\n value: function makeFromEncoding(parent, model) {\n var encoding = model.encoding;\n var xDef = encoding.x;\n var yDef = encoding.y;\n if (isFieldDef(xDef) && isFieldDef(yDef)) {\n var imputedChannel = xDef.impute ? xDef : yDef.impute ? yDef : undefined;\n if (imputedChannel === undefined) {\n return undefined;\n }\n var keyChannel = xDef.impute ? yDef : yDef.impute ? xDef : undefined;\n var _imputedChannel$imput = imputedChannel.impute,\n method = _imputedChannel$imput.method,\n value = _imputedChannel$imput.value,\n frame = _imputedChannel$imput.frame,\n keyvals = _imputedChannel$imput.keyvals;\n var groupbyFields = pathGroupingFields(model.mark, encoding);\n return new ImputeNode(parent, _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({\n impute: imputedChannel.field,\n key: keyChannel.field\n }, method ? {\n method: method\n } : {}), value !== undefined ? {\n value: value\n } : {}), frame ? {\n frame: frame\n } : {}), keyvals !== undefined ? {\n keyvals: keyvals\n } : {}), groupbyFields.length ? {\n groupby: groupbyFields\n } : {}));\n }\n return null;\n }\n }]);\n return ImputeNode;\n}(DataFlowNode);","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nvar _excluded = [\"loess\", \"on\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { duplicate, hash as _hash } from '../../util';\nimport { DataFlowNode } from './dataflow';\n/**\n * A class for loess transform nodes\n */\nexport var LoessTransformNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(LoessTransformNode, _DataFlowNode);\n var _super = _createSuper(LoessTransformNode);\n function LoessTransformNode(parent, transform) {\n var _this$transform$as, _specifiedAs$, _specifiedAs$2;\n var _this;\n _classCallCheck(this, LoessTransformNode);\n _this = _super.call(this, parent);\n _this.transform = transform;\n _this.transform = duplicate(transform); // duplicate to prevent side effects\n var specifiedAs = (_this$transform$as = _this.transform.as) !== null && _this$transform$as !== void 0 ? _this$transform$as : [undefined, undefined];\n _this.transform.as = [(_specifiedAs$ = specifiedAs[0]) !== null && _specifiedAs$ !== void 0 ? _specifiedAs$ : transform.on, (_specifiedAs$2 = specifiedAs[1]) !== null && _specifiedAs$2 !== void 0 ? _specifiedAs$2 : transform.loess];\n return _this;\n }\n _createClass(LoessTransformNode, [{\n key: \"clone\",\n value: function clone() {\n return new LoessTransformNode(null, duplicate(this.transform));\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n var _this$transform$group;\n return new Set([this.transform.loess, this.transform.on].concat(_toConsumableArray((_this$transform$group = this.transform.groupby) !== null && _this$transform$group !== void 0 ? _this$transform$group : [])));\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return new Set(this.transform.as);\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return \"LoessTransform \".concat(_hash(this.transform));\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n var _this$transform = this.transform,\n loess = _this$transform.loess,\n on = _this$transform.on,\n rest = _objectWithoutProperties(_this$transform, _excluded);\n var result = _objectSpread({\n type: 'loess',\n x: on,\n y: loess\n }, rest);\n return result;\n }\n }]);\n return LoessTransformNode;\n}(DataFlowNode);","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { array, isString } from 'vega-util';\nimport * as log from '../../log';\nimport { isLookupData, isLookupSelection } from '../../transform';\nimport { duplicate, hash as _hash, varName } from '../../util';\nimport { DataFlowNode, OutputNode } from './dataflow';\nimport { findSource } from './parse';\nimport { SourceNode } from './source';\nimport { DataSourceType } from '../../data';\nexport var LookupNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(LookupNode, _DataFlowNode);\n var _super = _createSuper(LookupNode);\n function LookupNode(parent, transform, secondary) {\n var _this;\n _classCallCheck(this, LookupNode);\n _this = _super.call(this, parent);\n _this.transform = transform;\n _this.secondary = secondary;\n return _this;\n }\n _createClass(LookupNode, [{\n key: \"clone\",\n value: function clone() {\n return new LookupNode(null, duplicate(this.transform), this.secondary);\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n return new Set([this.transform.lookup]);\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return new Set(this.transform.as ? array(this.transform.as) : this.transform.from.fields);\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return \"Lookup \".concat(_hash({\n transform: this.transform,\n secondary: this.secondary\n }));\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n var foreign;\n if (this.transform.from.fields) {\n // lookup a few fields and add create a flat output\n foreign = _objectSpread({\n values: this.transform.from.fields\n }, this.transform.as ? {\n as: array(this.transform.as)\n } : {});\n } else {\n // lookup full record and nest it\n var asName = this.transform.as;\n if (!isString(asName)) {\n log.warn(log.message.NO_FIELDS_NEEDS_AS);\n asName = '_lookup';\n }\n foreign = {\n as: [asName]\n };\n }\n return _objectSpread(_objectSpread({\n type: 'lookup',\n from: this.secondary,\n key: this.transform.from.key,\n fields: [this.transform.lookup]\n }, foreign), this.transform.default ? {\n default: this.transform.default\n } : {});\n }\n }], [{\n key: \"make\",\n value: function make(parent, model, transform, counter) {\n var sources = model.component.data.sources;\n var _transform = transform,\n from = _transform.from;\n var fromOutputNode = null;\n if (isLookupData(from)) {\n var fromSource = findSource(from.data, sources);\n if (!fromSource) {\n fromSource = new SourceNode(from.data);\n sources.push(fromSource);\n }\n var fromOutputName = model.getName(\"lookup_\".concat(counter));\n fromOutputNode = new OutputNode(fromSource, fromOutputName, DataSourceType.Lookup, model.component.data.outputNodeRefCounts);\n model.component.data.outputNodes[fromOutputName] = fromOutputNode;\n } else if (isLookupSelection(from)) {\n var selName = from.param;\n transform = _objectSpread({\n as: selName\n }, transform);\n var selCmpt;\n try {\n selCmpt = model.getSelectionComponent(varName(selName), selName);\n } catch (e) {\n throw new Error(log.message.cannotLookupVariableParameter(selName));\n }\n fromOutputNode = selCmpt.materialized;\n if (!fromOutputNode) {\n throw new Error(log.message.noSameUnitLookup(selName));\n }\n }\n return new LookupNode(parent, transform, fromOutputNode.getSource());\n }\n }]);\n return LookupNode;\n}(DataFlowNode);","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nvar _excluded = [\"quantile\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { duplicate, hash as _hash } from '../../util';\nimport { DataFlowNode } from './dataflow';\n/**\n * A class for quantile transform nodes\n */\nexport var QuantileTransformNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(QuantileTransformNode, _DataFlowNode);\n var _super = _createSuper(QuantileTransformNode);\n function QuantileTransformNode(parent, transform) {\n var _this$transform$as, _specifiedAs$, _specifiedAs$2;\n var _this;\n _classCallCheck(this, QuantileTransformNode);\n _this = _super.call(this, parent);\n _this.transform = transform;\n _this.transform = duplicate(transform); // duplicate to prevent side effects\n var specifiedAs = (_this$transform$as = _this.transform.as) !== null && _this$transform$as !== void 0 ? _this$transform$as : [undefined, undefined];\n _this.transform.as = [(_specifiedAs$ = specifiedAs[0]) !== null && _specifiedAs$ !== void 0 ? _specifiedAs$ : 'prob', (_specifiedAs$2 = specifiedAs[1]) !== null && _specifiedAs$2 !== void 0 ? _specifiedAs$2 : 'value'];\n return _this;\n }\n _createClass(QuantileTransformNode, [{\n key: \"clone\",\n value: function clone() {\n return new QuantileTransformNode(null, duplicate(this.transform));\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n var _this$transform$group;\n return new Set([this.transform.quantile].concat(_toConsumableArray((_this$transform$group = this.transform.groupby) !== null && _this$transform$group !== void 0 ? _this$transform$group : [])));\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return new Set(this.transform.as);\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return \"QuantileTransform \".concat(_hash(this.transform));\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n var _this$transform = this.transform,\n quantile = _this$transform.quantile,\n rest = _objectWithoutProperties(_this$transform, _excluded);\n var result = _objectSpread({\n type: 'quantile',\n field: quantile\n }, rest);\n return result;\n }\n }]);\n return QuantileTransformNode;\n}(DataFlowNode);","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nvar _excluded = [\"regression\", \"on\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { duplicate, hash as _hash } from '../../util';\nimport { DataFlowNode } from './dataflow';\n/**\n * A class for regression transform nodes\n */\nexport var RegressionTransformNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(RegressionTransformNode, _DataFlowNode);\n var _super = _createSuper(RegressionTransformNode);\n function RegressionTransformNode(parent, transform) {\n var _this$transform$as, _specifiedAs$, _specifiedAs$2;\n var _this;\n _classCallCheck(this, RegressionTransformNode);\n _this = _super.call(this, parent);\n _this.transform = transform;\n _this.transform = duplicate(transform); // duplicate to prevent side effects\n var specifiedAs = (_this$transform$as = _this.transform.as) !== null && _this$transform$as !== void 0 ? _this$transform$as : [undefined, undefined];\n _this.transform.as = [(_specifiedAs$ = specifiedAs[0]) !== null && _specifiedAs$ !== void 0 ? _specifiedAs$ : transform.on, (_specifiedAs$2 = specifiedAs[1]) !== null && _specifiedAs$2 !== void 0 ? _specifiedAs$2 : transform.regression];\n return _this;\n }\n _createClass(RegressionTransformNode, [{\n key: \"clone\",\n value: function clone() {\n return new RegressionTransformNode(null, duplicate(this.transform));\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n var _this$transform$group;\n return new Set([this.transform.regression, this.transform.on].concat(_toConsumableArray((_this$transform$group = this.transform.groupby) !== null && _this$transform$group !== void 0 ? _this$transform$group : [])));\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return new Set(this.transform.as);\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return \"RegressionTransform \".concat(_hash(this.transform));\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n var _this$transform = this.transform,\n regression = _this$transform.regression,\n on = _this$transform.on,\n rest = _objectWithoutProperties(_this$transform, _excluded);\n var result = _objectSpread({\n type: 'regression',\n x: on,\n y: regression\n }, rest);\n return result;\n }\n }]);\n return RegressionTransformNode;\n}(DataFlowNode);","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { duplicate, hash as _hash, unique } from '../../util';\nimport { DataFlowNode } from './dataflow';\n/**\n * A class for pivot transform nodes.\n */\nexport var PivotTransformNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(PivotTransformNode, _DataFlowNode);\n var _super = _createSuper(PivotTransformNode);\n function PivotTransformNode(parent, transform) {\n var _this;\n _classCallCheck(this, PivotTransformNode);\n _this = _super.call(this, parent);\n _this.transform = transform;\n return _this;\n }\n _createClass(PivotTransformNode, [{\n key: \"clone\",\n value: function clone() {\n return new PivotTransformNode(null, duplicate(this.transform));\n }\n }, {\n key: \"addDimensions\",\n value: function addDimensions(fields) {\n var _this$transform$group;\n this.transform.groupby = unique(((_this$transform$group = this.transform.groupby) !== null && _this$transform$group !== void 0 ? _this$transform$group : []).concat(fields), function (d) {\n return d;\n });\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return undefined; // return undefined so that potentially everything can depend on the pivot\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n var _this$transform$group2;\n return new Set([this.transform.pivot, this.transform.value].concat(_toConsumableArray((_this$transform$group2 = this.transform.groupby) !== null && _this$transform$group2 !== void 0 ? _this$transform$group2 : [])));\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return \"PivotTransform \".concat(_hash(this.transform));\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n var _this$transform = this.transform,\n pivot = _this$transform.pivot,\n value = _this$transform.value,\n groupby = _this$transform.groupby,\n limit = _this$transform.limit,\n op = _this$transform.op;\n return _objectSpread(_objectSpread(_objectSpread({\n type: 'pivot',\n field: pivot,\n value: value\n }, limit !== undefined ? {\n limit: limit\n } : {}), op !== undefined ? {\n op: op\n } : {}), groupby !== undefined ? {\n groupby: groupby\n } : {});\n }\n }]);\n return PivotTransformNode;\n}(DataFlowNode);","import _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { duplicate, hash as _hash } from '../../util';\nimport { DataFlowNode } from './dataflow';\n/**\n * A class for the sample transform nodes\n */\nexport var SampleTransformNode = /*#__PURE__*/function (_DataFlowNode) {\n _inherits(SampleTransformNode, _DataFlowNode);\n var _super = _createSuper(SampleTransformNode);\n function SampleTransformNode(parent, transform) {\n var _this;\n _classCallCheck(this, SampleTransformNode);\n _this = _super.call(this, parent);\n _this.transform = transform;\n return _this;\n }\n _createClass(SampleTransformNode, [{\n key: \"clone\",\n value: function clone() {\n return new SampleTransformNode(null, duplicate(this.transform));\n }\n }, {\n key: \"dependentFields\",\n value: function dependentFields() {\n return new Set();\n }\n }, {\n key: \"producedFields\",\n value: function producedFields() {\n return new Set();\n }\n }, {\n key: \"hash\",\n value: function hash() {\n return \"SampleTransform \".concat(_hash(this.transform));\n }\n }, {\n key: \"assemble\",\n value: function assemble() {\n return {\n type: 'sample',\n size: this.transform.sample\n };\n }\n }]);\n return SampleTransformNode;\n}(DataFlowNode);","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { isUrlData } from '../../data';\nimport { AggregateNode } from './aggregate';\nimport { BinNode } from './bin';\nimport { CalculateNode } from './calculate';\nimport { OutputNode } from './dataflow';\nimport { DensityTransformNode } from './density';\nimport { ExtentTransformNode } from './extent';\nimport { FacetNode } from './facet';\nimport { FilterNode } from './filter';\nimport { FilterInvalidNode } from './filterinvalid';\nimport { FlattenTransformNode } from './flatten';\nimport { FoldTransformNode } from './fold';\nimport { ParseNode } from './formatparse';\nimport { GeoJSONNode } from './geojson';\nimport { GeoPointNode } from './geopoint';\nimport { GraticuleNode } from './graticule';\nimport { IdentifierNode } from './identifier';\nimport { ImputeNode } from './impute';\nimport { JoinAggregateTransformNode } from './joinaggregate';\nimport { LoessTransformNode } from './loess';\nimport { LookupNode } from './lookup';\nimport { QuantileTransformNode } from './quantile';\nimport { RegressionTransformNode } from './regression';\nimport { PivotTransformNode } from './pivot';\nimport { SampleTransformNode } from './sample';\nimport { SequenceNode } from './sequence';\nimport { SourceNode } from './source';\nimport { StackNode } from './stack';\nimport { TimeUnitNode } from './timeunit';\nimport { WindowTransformNode } from './window';\nfunction makeWalkTree(data) {\n // to name datasources\n var datasetIndex = 0;\n /**\n * Recursively walk down the tree.\n */\n function walkTree(node, dataSource) {\n if (node instanceof SourceNode) {\n // If the source is a named data source or a data source with values, we need\n // to put it in a different data source. Otherwise, Vega may override the data.\n if (!node.isGenerator && !isUrlData(node.data)) {\n data.push(dataSource);\n var newData = {\n name: null,\n source: dataSource.name,\n transform: []\n };\n dataSource = newData;\n }\n }\n if (node instanceof ParseNode) {\n if (node.parent instanceof SourceNode && !dataSource.source) {\n var _dataSource$format, _dataSource$transform;\n // If node's parent is a root source and the data source does not refer to another data source, use normal format parse\n dataSource.format = _objectSpread(_objectSpread({}, (_dataSource$format = dataSource.format) !== null && _dataSource$format !== void 0 ? _dataSource$format : {}), {}, {\n parse: node.assembleFormatParse()\n });\n // add calculates for all nested fields\n (_dataSource$transform = dataSource.transform).push.apply(_dataSource$transform, _toConsumableArray(node.assembleTransforms(true)));\n } else {\n var _dataSource$transform2;\n // Otherwise use Vega expression to parse\n (_dataSource$transform2 = dataSource.transform).push.apply(_dataSource$transform2, _toConsumableArray(node.assembleTransforms()));\n }\n }\n if (node instanceof FacetNode) {\n if (!dataSource.name) {\n dataSource.name = \"data_\".concat(datasetIndex++);\n }\n if (!dataSource.source || dataSource.transform.length > 0) {\n data.push(dataSource);\n node.data = dataSource.name;\n } else {\n node.data = dataSource.source;\n }\n data.push.apply(data, _toConsumableArray(node.assemble()));\n // break here because the rest of the tree has to be taken care of by the facet.\n return;\n }\n if (node instanceof GraticuleNode || node instanceof SequenceNode || node instanceof FilterInvalidNode || node instanceof FilterNode || node instanceof CalculateNode || node instanceof GeoPointNode || node instanceof AggregateNode || node instanceof LookupNode || node instanceof WindowTransformNode || node instanceof JoinAggregateTransformNode || node instanceof FoldTransformNode || node instanceof FlattenTransformNode || node instanceof DensityTransformNode || node instanceof LoessTransformNode || node instanceof QuantileTransformNode || node instanceof RegressionTransformNode || node instanceof IdentifierNode || node instanceof SampleTransformNode || node instanceof PivotTransformNode || node instanceof ExtentTransformNode) {\n dataSource.transform.push(node.assemble());\n }\n if (node instanceof BinNode || node instanceof TimeUnitNode || node instanceof ImputeNode || node instanceof StackNode || node instanceof GeoJSONNode) {\n var _dataSource$transform3;\n (_dataSource$transform3 = dataSource.transform).push.apply(_dataSource$transform3, _toConsumableArray(node.assemble()));\n }\n if (node instanceof OutputNode) {\n if (dataSource.source && dataSource.transform.length === 0) {\n node.setSource(dataSource.source);\n } else if (node.parent instanceof OutputNode) {\n // Note that an output node may be required but we still do not assemble a\n // separate data source for it.\n node.setSource(dataSource.name);\n } else {\n if (!dataSource.name) {\n dataSource.name = \"data_\".concat(datasetIndex++);\n }\n // Here we set the name of the datasource we generated. From now on\n // other assemblers can use it.\n node.setSource(dataSource.name);\n // if this node has more than one child, we will add a datasource automatically\n if (node.numChildren() === 1) {\n data.push(dataSource);\n var _newData = {\n name: null,\n source: dataSource.name,\n transform: []\n };\n dataSource = _newData;\n }\n }\n }\n switch (node.numChildren()) {\n case 0:\n // done\n if (node instanceof OutputNode && (!dataSource.source || dataSource.transform.length > 0)) {\n // do not push empty datasources that are simply references\n data.push(dataSource);\n }\n break;\n case 1:\n walkTree(node.children[0], dataSource);\n break;\n default:\n {\n if (!dataSource.name) {\n dataSource.name = \"data_\".concat(datasetIndex++);\n }\n var source = dataSource.name;\n if (!dataSource.source || dataSource.transform.length > 0) {\n data.push(dataSource);\n } else {\n source = dataSource.source;\n }\n var _iterator = _createForOfIteratorHelper(node.children),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var child = _step.value;\n var _newData2 = {\n name: null,\n source: source,\n transform: []\n };\n walkTree(child, _newData2);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n break;\n }\n }\n }\n return walkTree;\n}\n/**\n * Assemble data sources that are derived from faceted data.\n */\nexport function assembleFacetData(root) {\n var data = [];\n var walkTree = makeWalkTree(data);\n var _iterator2 = _createForOfIteratorHelper(root.children),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var child = _step2.value;\n walkTree(child, {\n source: root.name,\n name: null,\n transform: []\n });\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n return data;\n}\n/**\n * Create Vega data array from a given compiled model and append all of them to the given array\n *\n * @param model\n * @param data array\n * @return modified data array\n */\nexport function assembleRootData(dataComponent, datasets) {\n var data = [];\n // dataComponent.sources.forEach(debug);\n // draw(dataComponent.sources);\n var walkTree = makeWalkTree(data);\n var sourceIndex = 0;\n var _iterator3 = _createForOfIteratorHelper(dataComponent.sources),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var root = _step3.value;\n // assign a name if the source does not have a name yet\n if (!root.hasName()) {\n root.dataName = \"source_\".concat(sourceIndex++);\n }\n var newData = root.assemble();\n walkTree(root, newData);\n }\n // remove empty transform arrays for cleaner output\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n for (var _i = 0, _data = data; _i < _data.length; _i++) {\n var d = _data[_i];\n if (d.transform.length === 0) {\n delete d.transform;\n }\n }\n // move sources without transforms (the ones that are potentially used in lookups) to the beginning\n var whereTo = 0;\n var _iterator4 = _createForOfIteratorHelper(data.entries()),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var _d3$transform;\n var _step4$value = _slicedToArray(_step4.value, 2),\n i = _step4$value[0],\n _d3 = _step4$value[1];\n if (((_d3$transform = _d3.transform) !== null && _d3$transform !== void 0 ? _d3$transform : []).length === 0 && !_d3.source) {\n data.splice(whereTo++, 0, data.splice(i, 1)[0]);\n }\n }\n // now fix the from references in lookup transforms\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n for (var _i2 = 0, _data2 = data; _i2 < _data2.length; _i2++) {\n var _d$transform;\n var _d = _data2[_i2];\n var _iterator5 = _createForOfIteratorHelper((_d$transform = _d.transform) !== null && _d$transform !== void 0 ? _d$transform : []),\n _step5;\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var t = _step5.value;\n if (t.type === 'lookup') {\n t.from = dataComponent.outputNodes[t.from].getSource();\n }\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n }\n // inline values for datasets that are in the datastore\n for (var _i3 = 0, _data3 = data; _i3 < _data3.length; _i3++) {\n var _d2 = _data3[_i3];\n if (_d2.name in datasets) {\n _d2.values = datasets[_d2.name];\n }\n }\n return data;\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { isArray } from 'vega-util';\nimport { FACET_CHANNELS } from '../../channel';\nimport { title as fieldDefTitle } from '../../channeldef';\nimport { contains, getFirstDefined } from '../../util';\nimport { isSignalRef } from '../../vega.schema';\nimport { assembleAxis } from '../axis/assemble';\nimport { parseGuideResolve } from '../resolve';\nimport { getHeaderProperty } from './common';\nexport function getHeaderType(orient) {\n if (orient === 'top' || orient === 'left' || isSignalRef(orient)) {\n // we always use header for orient signal since we can't dynamically make header becomes footer\n return 'header';\n }\n return 'footer';\n}\nexport function parseFacetHeaders(model) {\n var _iterator = _createForOfIteratorHelper(FACET_CHANNELS),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var channel = _step.value;\n parseFacetHeader(model, channel);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n mergeChildAxis(model, 'x');\n mergeChildAxis(model, 'y');\n}\nfunction parseFacetHeader(model, channel) {\n var facet = model.facet,\n config = model.config,\n child = model.child,\n component = model.component;\n if (model.channelHasField(channel)) {\n var _fieldDef$header;\n var fieldDef = facet[channel];\n var titleConfig = getHeaderProperty('title', null, config, channel);\n var title = fieldDefTitle(fieldDef, config, {\n allowDisabling: true,\n includeDefault: titleConfig === undefined || !!titleConfig\n });\n if (child.component.layoutHeaders[channel].title) {\n // TODO: better handle multiline titles\n title = isArray(title) ? title.join(', ') : title;\n // merge title with child to produce \"Title / Subtitle / Sub-subtitle\"\n title += \" / \".concat(child.component.layoutHeaders[channel].title);\n child.component.layoutHeaders[channel].title = null;\n }\n var labelOrient = getHeaderProperty('labelOrient', fieldDef.header, config, channel);\n var labels = fieldDef.header !== null ? getFirstDefined((_fieldDef$header = fieldDef.header) === null || _fieldDef$header === void 0 ? void 0 : _fieldDef$header.labels, config.header.labels, true) : false;\n var headerType = contains(['bottom', 'right'], labelOrient) ? 'footer' : 'header';\n component.layoutHeaders[channel] = _defineProperty({\n title: fieldDef.header !== null ? title : null,\n facetFieldDef: fieldDef\n }, headerType, channel === 'facet' ? [] : [makeHeaderComponent(model, channel, labels)]);\n }\n}\nfunction makeHeaderComponent(model, channel, labels) {\n var sizeType = channel === 'row' ? 'height' : 'width';\n return {\n labels: labels,\n sizeSignal: model.child.component.layoutSize.get(sizeType) ? model.child.getSizeSignalRef(sizeType) : undefined,\n axes: []\n };\n}\nfunction mergeChildAxis(model, channel) {\n var child = model.child;\n if (child.component.axes[channel]) {\n var _model$component = model.component,\n layoutHeaders = _model$component.layoutHeaders,\n resolve = _model$component.resolve;\n resolve.axis[channel] = parseGuideResolve(resolve, channel);\n if (resolve.axis[channel] === 'shared') {\n // For shared axis, move the axes to facet's header or footer\n var headerChannel = channel === 'x' ? 'column' : 'row';\n var layoutHeader = layoutHeaders[headerChannel];\n var _iterator2 = _createForOfIteratorHelper(child.component.axes[channel]),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _layoutHeader$headerT;\n var axisComponent = _step2.value;\n var headerType = getHeaderType(axisComponent.get('orient'));\n (_layoutHeader$headerT = layoutHeader[headerType]) !== null && _layoutHeader$headerT !== void 0 ? _layoutHeader$headerT : layoutHeader[headerType] = [makeHeaderComponent(model, headerChannel, false)];\n // FIXME: assemble shouldn't be called here, but we do it this way so we only extract the main part of the axes\n var mainAxis = assembleAxis(axisComponent, 'main', model.config, {\n header: true\n });\n if (mainAxis) {\n // LayoutHeader no longer keep track of property precedence, thus let's combine.\n layoutHeader[headerType][0].axes.push(mainAxis);\n }\n axisComponent.mainExtracted = true;\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n } else {\n // Otherwise do nothing for independent axes\n }\n }\n}","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { getPositionScaleChannel, getSizeChannel, POSITION_SCALE_CHANNELS } from '../../channel';\nimport { getViewConfigContinuousSize, getViewConfigDiscreteSize } from '../../config';\nimport { hasDiscreteDomain } from '../../scale';\nimport { isStep } from '../../spec/base';\nimport { isVgRangeStep } from '../../vega.schema';\nimport { defaultScaleResolve } from '../resolve';\nimport { mergeValuesWithExplicit } from '../split';\nimport { getSizeTypeFromLayoutSizeType } from './component';\nexport function parseLayerLayoutSize(model) {\n parseChildrenLayoutSize(model);\n parseNonUnitLayoutSizeForChannel(model, 'width');\n parseNonUnitLayoutSizeForChannel(model, 'height');\n}\nexport function parseConcatLayoutSize(model) {\n parseChildrenLayoutSize(model);\n // for columns === 1 (vconcat), we can completely merge width. Otherwise, we can treat merged width as childWidth.\n var widthType = model.layout.columns === 1 ? 'width' : 'childWidth';\n // for columns === undefined (hconcat), we can completely merge height. Otherwise, we can treat merged height as childHeight.\n var heightType = model.layout.columns === undefined ? 'height' : 'childHeight';\n parseNonUnitLayoutSizeForChannel(model, widthType);\n parseNonUnitLayoutSizeForChannel(model, heightType);\n}\nexport function parseChildrenLayoutSize(model) {\n var _iterator = _createForOfIteratorHelper(model.children),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var child = _step.value;\n child.parseLayoutSize();\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n}\n/**\n * Merge child layout size (width or height).\n */\nfunction parseNonUnitLayoutSizeForChannel(model, layoutSizeType) {\n /*\n * For concat, the parent width or height might not be the same as the children's shared height.\n * For example, hconcat's subviews may share width, but the shared width is not the hconcat view's width.\n *\n * layoutSizeType represents the output of the view (could be childWidth/childHeight/width/height)\n * while the sizeType represents the properties of the child.\n */\n var sizeType = getSizeTypeFromLayoutSizeType(layoutSizeType);\n var channel = getPositionScaleChannel(sizeType);\n var resolve = model.component.resolve;\n var layoutSizeCmpt = model.component.layoutSize;\n var mergedSize;\n // Try to merge layout size\n var _iterator2 = _createForOfIteratorHelper(model.children),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _resolve$scale$channe;\n var _child = _step2.value;\n var childSize = _child.component.layoutSize.getWithExplicit(sizeType);\n var scaleResolve = (_resolve$scale$channe = resolve.scale[channel]) !== null && _resolve$scale$channe !== void 0 ? _resolve$scale$channe : defaultScaleResolve(channel, model);\n if (scaleResolve === 'independent' && childSize.value === 'step') {\n // Do not merge independent scales with range-step as their size depends\n // on the scale domains, which can be different between scales.\n mergedSize = undefined;\n break;\n }\n if (mergedSize) {\n if (scaleResolve === 'independent' && mergedSize.value !== childSize.value) {\n // For independent scale, only merge if all the sizes are the same.\n // If the values are different, abandon the merge!\n mergedSize = undefined;\n break;\n }\n mergedSize = mergeValuesWithExplicit(mergedSize, childSize, sizeType, '');\n } else {\n mergedSize = childSize;\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n if (mergedSize) {\n // If merged, rename size and set size of all children.\n var _iterator3 = _createForOfIteratorHelper(model.children),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var child = _step3.value;\n model.renameSignal(child.getName(sizeType), model.getName(layoutSizeType));\n child.component.layoutSize.set(sizeType, 'merged', false);\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n layoutSizeCmpt.setWithExplicit(layoutSizeType, mergedSize);\n } else {\n layoutSizeCmpt.setWithExplicit(layoutSizeType, {\n explicit: false,\n value: undefined\n });\n }\n}\nexport function parseUnitLayoutSize(model) {\n var size = model.size,\n component = model.component;\n var _iterator4 = _createForOfIteratorHelper(POSITION_SCALE_CHANNELS),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var channel = _step4.value;\n var sizeType = getSizeChannel(channel);\n if (size[sizeType]) {\n var specifiedSize = size[sizeType];\n component.layoutSize.set(sizeType, isStep(specifiedSize) ? 'step' : specifiedSize, true);\n } else {\n var defaultSize = defaultUnitSize(model, sizeType);\n component.layoutSize.set(sizeType, defaultSize, false);\n }\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n}\nfunction defaultUnitSize(model, sizeType) {\n var channel = sizeType === 'width' ? 'x' : 'y';\n var config = model.config;\n var scaleComponent = model.getScaleComponent(channel);\n if (scaleComponent) {\n var scaleType = scaleComponent.get('type');\n var range = scaleComponent.get('range');\n if (hasDiscreteDomain(scaleType)) {\n var size = getViewConfigDiscreteSize(config.view, sizeType);\n if (isVgRangeStep(range) || isStep(size)) {\n // For discrete domain with range.step, use dynamic width/height\n return 'step';\n } else {\n return size;\n }\n } else {\n return getViewConfigContinuousSize(config.view, sizeType);\n }\n } else if (model.hasProjection || model.mark === 'arc') {\n // arc should use continuous size by default otherwise the pie is extremely small\n return getViewConfigContinuousSize(config.view, sizeType);\n } else {\n var _size = getViewConfigDiscreteSize(config.view, sizeType);\n return isStep(_size) ? _size.step : _size;\n }\n}","import _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _assertThisInitialized from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js\";\nimport _get from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/get.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport \"core-js/modules/es.array.flat.js\";\nimport \"core-js/modules/es.array.unscopables.flat.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { isArray } from 'vega-util';\nimport { isBinning } from '../bin';\nimport { COLUMN, FACET_CHANNELS, POSITION_SCALE_CHANNELS, ROW } from '../channel';\nimport { initFieldDef, vgField } from '../channeldef';\nimport { replaceExprRef } from '../expr';\nimport * as log from '../log';\nimport { hasDiscreteDomain } from '../scale';\nimport { DEFAULT_SORT_OP, isSortField } from '../sort';\nimport { isFacetMapping } from '../spec/facet';\nimport { keys } from '../util';\nimport { isVgRangeStep } from '../vega.schema';\nimport { buildModel } from './buildmodel';\nimport { assembleFacetData } from './data/assemble';\nimport { sortArrayIndexField } from './data/calculate';\nimport { parseData as _parseData } from './data/parse';\nimport { assembleLabelTitle as _assembleLabelTitle } from './header/assemble';\nimport { getHeaderChannel, getHeaderProperty } from './header/common';\nimport { HEADER_CHANNELS, HEADER_TYPES } from './header/component';\nimport { parseFacetHeaders } from './header/parse';\nimport { parseChildrenLayoutSize } from './layoutsize/parse';\nimport { ModelWithField } from './model';\nimport { assembleDomain, getFieldFromDomain } from './scale/domain';\nimport { assembleFacetSignals } from './selection/assemble';\nexport function facetSortFieldName(fieldDef, sort, opt) {\n return vgField(sort, _objectSpread({\n suffix: \"by_\".concat(vgField(fieldDef))\n }, opt !== null && opt !== void 0 ? opt : {}));\n}\nexport var FacetModel = /*#__PURE__*/function (_ModelWithField) {\n _inherits(FacetModel, _ModelWithField);\n var _super = _createSuper(FacetModel);\n function FacetModel(spec, parent, parentGivenName, config) {\n var _this;\n _classCallCheck(this, FacetModel);\n _this = _super.call(this, spec, 'facet', parent, parentGivenName, config, spec.resolve);\n _this.child = buildModel(spec.spec, _assertThisInitialized(_this), _this.getName('child'), undefined, config);\n _this.children = [_this.child];\n _this.facet = _this.initFacet(spec.facet);\n return _this;\n }\n _createClass(FacetModel, [{\n key: \"initFacet\",\n value: function initFacet(facet) {\n // clone to prevent side effect to the original spec\n if (!isFacetMapping(facet)) {\n return {\n facet: this.initFacetFieldDef(facet, 'facet')\n };\n }\n var channels = keys(facet);\n var normalizedFacet = {};\n var _iterator = _createForOfIteratorHelper(channels),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var channel = _step.value;\n if (![ROW, COLUMN].includes(channel)) {\n // Drop unsupported channel\n log.warn(log.message.incompatibleChannel(channel, 'facet'));\n break;\n }\n var fieldDef = facet[channel];\n if (fieldDef.field === undefined) {\n log.warn(log.message.emptyFieldDef(fieldDef, channel));\n break;\n }\n normalizedFacet[channel] = this.initFacetFieldDef(fieldDef, channel);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return normalizedFacet;\n }\n }, {\n key: \"initFacetFieldDef\",\n value: function initFacetFieldDef(fieldDef, channel) {\n // Cast because we call initFieldDef, which assumes general FieldDef.\n // However, FacetFieldDef is a bit more constrained than the general FieldDef\n var facetFieldDef = initFieldDef(fieldDef, channel);\n if (facetFieldDef.header) {\n facetFieldDef.header = replaceExprRef(facetFieldDef.header);\n } else if (facetFieldDef.header === null) {\n facetFieldDef.header = null;\n }\n return facetFieldDef;\n }\n }, {\n key: \"channelHasField\",\n value: function channelHasField(channel) {\n return !!this.facet[channel];\n }\n }, {\n key: \"fieldDef\",\n value: function fieldDef(channel) {\n return this.facet[channel];\n }\n }, {\n key: \"parseData\",\n value: function parseData() {\n this.component.data = _parseData(this);\n this.child.parseData();\n }\n }, {\n key: \"parseLayoutSize\",\n value: function parseLayoutSize() {\n parseChildrenLayoutSize(this);\n }\n }, {\n key: \"parseSelections\",\n value: function parseSelections() {\n // As a facet has a single child, the selection components are the same.\n // The child maintains its selections to assemble signals, which remain\n // within its unit.\n this.child.parseSelections();\n this.component.selection = this.child.component.selection;\n }\n }, {\n key: \"parseMarkGroup\",\n value: function parseMarkGroup() {\n this.child.parseMarkGroup();\n }\n }, {\n key: \"parseAxesAndHeaders\",\n value: function parseAxesAndHeaders() {\n this.child.parseAxesAndHeaders();\n parseFacetHeaders(this);\n }\n }, {\n key: \"assembleSelectionTopLevelSignals\",\n value: function assembleSelectionTopLevelSignals(signals) {\n return this.child.assembleSelectionTopLevelSignals(signals);\n }\n }, {\n key: \"assembleSignals\",\n value: function assembleSignals() {\n this.child.assembleSignals();\n return [];\n }\n }, {\n key: \"assembleSelectionData\",\n value: function assembleSelectionData(data) {\n return this.child.assembleSelectionData(data);\n }\n }, {\n key: \"getHeaderLayoutMixins\",\n value: function getHeaderLayoutMixins() {\n var layoutMixins = {};\n var _iterator2 = _createForOfIteratorHelper(FACET_CHANNELS),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var channel = _step2.value;\n var _iterator3 = _createForOfIteratorHelper(HEADER_TYPES),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var headerType = _step3.value;\n var layoutHeaderComponent = this.component.layoutHeaders[channel];\n var headerComponent = layoutHeaderComponent[headerType];\n var facetFieldDef = layoutHeaderComponent.facetFieldDef;\n if (facetFieldDef) {\n var titleOrient = getHeaderProperty('titleOrient', facetFieldDef.header, this.config, channel);\n if (['right', 'bottom'].includes(titleOrient)) {\n var _layoutMixins$titleAn;\n var headerChannel = getHeaderChannel(channel, titleOrient);\n (_layoutMixins$titleAn = layoutMixins.titleAnchor) !== null && _layoutMixins$titleAn !== void 0 ? _layoutMixins$titleAn : layoutMixins.titleAnchor = {};\n layoutMixins.titleAnchor[headerChannel] = 'end';\n }\n }\n if (headerComponent !== null && headerComponent !== void 0 && headerComponent[0]) {\n // set header/footerBand\n var sizeType = channel === 'row' ? 'height' : 'width';\n var bandType = headerType === 'header' ? 'headerBand' : 'footerBand';\n if (channel !== 'facet' && !this.child.component.layoutSize.get(sizeType)) {\n var _layoutMixins$bandTyp;\n // If facet child does not have size signal, then apply headerBand\n (_layoutMixins$bandTyp = layoutMixins[bandType]) !== null && _layoutMixins$bandTyp !== void 0 ? _layoutMixins$bandTyp : layoutMixins[bandType] = {};\n layoutMixins[bandType][channel] = 0.5;\n }\n if (layoutHeaderComponent.title) {\n var _layoutMixins$offset;\n (_layoutMixins$offset = layoutMixins.offset) !== null && _layoutMixins$offset !== void 0 ? _layoutMixins$offset : layoutMixins.offset = {};\n layoutMixins.offset[channel === 'row' ? 'rowTitle' : 'columnTitle'] = 10;\n }\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n return layoutMixins;\n }\n }, {\n key: \"assembleDefaultLayout\",\n value: function assembleDefaultLayout() {\n var _this$facet = this.facet,\n column = _this$facet.column,\n row = _this$facet.row;\n var columns = column ? this.columnDistinctSignal() : row ? 1 : undefined;\n var align = 'all';\n // Do not align the cells if the scale corresponding to the direction is indepent.\n // We always align when we facet into both row and column.\n if (!row && this.component.resolve.scale.x === 'independent') {\n align = 'none';\n } else if (!column && this.component.resolve.scale.y === 'independent') {\n align = 'none';\n }\n return _objectSpread(_objectSpread(_objectSpread({}, this.getHeaderLayoutMixins()), columns ? {\n columns: columns\n } : {}), {}, {\n bounds: 'full',\n align: align\n });\n }\n }, {\n key: \"assembleLayoutSignals\",\n value: function assembleLayoutSignals() {\n // FIXME(https://github.com/vega/vega-lite/issues/1193): this can be incorrect if we have independent scales.\n return this.child.assembleLayoutSignals();\n }\n }, {\n key: \"columnDistinctSignal\",\n value: function columnDistinctSignal() {\n if (this.parent && this.parent instanceof FacetModel) {\n // For nested facet, we will add columns to group mark instead\n // See discussion in https://github.com/vega/vega/issues/952\n // and https://github.com/vega/vega-view/releases/tag/v1.2.6\n return undefined;\n } else {\n // In facetNode.assemble(), the name is always this.getName('column') + '_layout'.\n var facetLayoutDataName = this.getName('column_domain');\n return {\n signal: \"length(data('\".concat(facetLayoutDataName, \"'))\")\n };\n }\n }\n }, {\n key: \"assembleGroupStyle\",\n value: function assembleGroupStyle() {\n return undefined;\n }\n }, {\n key: \"assembleGroup\",\n value: function assembleGroup(signals) {\n if (this.parent && this.parent instanceof FacetModel) {\n // Provide number of columns for layout.\n // See discussion in https://github.com/vega/vega/issues/952\n // and https://github.com/vega/vega-view/releases/tag/v1.2.6\n return _objectSpread(_objectSpread({}, this.channelHasField('column') ? {\n encode: {\n update: {\n // TODO(https://github.com/vega/vega-lite/issues/2759):\n // Correct the signal for facet of concat of facet_column\n columns: {\n field: vgField(this.facet.column, {\n prefix: 'distinct'\n })\n }\n }\n }\n } : {}), _get(_getPrototypeOf(FacetModel.prototype), \"assembleGroup\", this).call(this, signals));\n }\n return _get(_getPrototypeOf(FacetModel.prototype), \"assembleGroup\", this).call(this, signals);\n }\n /**\n * Aggregate cardinality for calculating size\n */\n }, {\n key: \"getCardinalityAggregateForChild\",\n value: function getCardinalityAggregateForChild() {\n var fields = [];\n var ops = [];\n var as = [];\n if (this.child instanceof FacetModel) {\n if (this.child.channelHasField('column')) {\n var field = vgField(this.child.facet.column);\n fields.push(field);\n ops.push('distinct');\n as.push(\"distinct_\".concat(field));\n }\n } else {\n var _iterator4 = _createForOfIteratorHelper(POSITION_SCALE_CHANNELS),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var channel = _step4.value;\n var childScaleComponent = this.child.component.scales[channel];\n if (childScaleComponent && !childScaleComponent.merged) {\n var type = childScaleComponent.get('type');\n var range = childScaleComponent.get('range');\n if (hasDiscreteDomain(type) && isVgRangeStep(range)) {\n var domain = assembleDomain(this.child, channel);\n var _field = getFieldFromDomain(domain);\n if (_field) {\n fields.push(_field);\n ops.push('distinct');\n as.push(\"distinct_\".concat(_field));\n } else {\n log.warn(log.message.unknownField(channel));\n }\n }\n }\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n }\n return {\n fields: fields,\n ops: ops,\n as: as\n };\n }\n }, {\n key: \"assembleFacet\",\n value: function assembleFacet() {\n var _this$component$data$ = this.component.data.facetRoot,\n name = _this$component$data$.name,\n data = _this$component$data$.data;\n var _this$facet2 = this.facet,\n row = _this$facet2.row,\n column = _this$facet2.column;\n var _this$getCardinalityA = this.getCardinalityAggregateForChild(),\n fields = _this$getCardinalityA.fields,\n ops = _this$getCardinalityA.ops,\n as = _this$getCardinalityA.as;\n var groupby = [];\n var _iterator5 = _createForOfIteratorHelper(FACET_CHANNELS),\n _step5;\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var channel = _step5.value;\n var fieldDef = this.facet[channel];\n if (fieldDef) {\n groupby.push(vgField(fieldDef));\n var bin = fieldDef.bin,\n sort = fieldDef.sort;\n if (isBinning(bin)) {\n groupby.push(vgField(fieldDef, {\n binSuffix: 'end'\n }));\n }\n if (isSortField(sort)) {\n var field = sort.field,\n _sort$op = sort.op,\n op = _sort$op === void 0 ? DEFAULT_SORT_OP : _sort$op;\n var outputName = facetSortFieldName(fieldDef, sort);\n if (row && column) {\n // For crossed facet, use pre-calculate field as it requires a different groupby\n // For each calculated field, apply max and assign them to the same name as\n // all values of the same group should be the same anyway.\n fields.push(outputName);\n ops.push('max');\n as.push(outputName);\n } else {\n fields.push(field);\n ops.push(op);\n as.push(outputName);\n }\n } else if (isArray(sort)) {\n var _outputName = sortArrayIndexField(fieldDef, channel);\n fields.push(_outputName);\n ops.push('max');\n as.push(_outputName);\n }\n }\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n var cross = !!row && !!column;\n return _objectSpread({\n name: name,\n data: data,\n groupby: groupby\n }, cross || fields.length > 0 ? {\n aggregate: _objectSpread(_objectSpread({}, cross ? {\n cross: cross\n } : {}), fields.length ? {\n fields: fields,\n ops: ops,\n as: as\n } : {})\n } : {});\n }\n }, {\n key: \"facetSortFields\",\n value: function facetSortFields(channel) {\n var facet = this.facet;\n var fieldDef = facet[channel];\n if (fieldDef) {\n if (isSortField(fieldDef.sort)) {\n return [facetSortFieldName(fieldDef, fieldDef.sort, {\n expr: 'datum'\n })];\n } else if (isArray(fieldDef.sort)) {\n return [sortArrayIndexField(fieldDef, channel, {\n expr: 'datum'\n })];\n }\n return [vgField(fieldDef, {\n expr: 'datum'\n })];\n }\n return [];\n }\n }, {\n key: \"facetSortOrder\",\n value: function facetSortOrder(channel) {\n var facet = this.facet;\n var fieldDef = facet[channel];\n if (fieldDef) {\n var sort = fieldDef.sort;\n var order = (isSortField(sort) ? sort.order : !isArray(sort) && sort) || 'ascending';\n return [order];\n }\n return [];\n }\n }, {\n key: \"assembleLabelTitle\",\n value: function assembleLabelTitle() {\n var facet = this.facet,\n config = this.config;\n if (facet.facet) {\n // Facet always uses title to display labels\n return _assembleLabelTitle(facet.facet, 'facet', config);\n }\n var ORTHOGONAL_ORIENT = {\n row: ['top', 'bottom'],\n column: ['left', 'right']\n };\n var _iterator6 = _createForOfIteratorHelper(HEADER_CHANNELS),\n _step6;\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var channel = _step6.value;\n if (facet[channel]) {\n var _facet$channel;\n var labelOrient = getHeaderProperty('labelOrient', (_facet$channel = facet[channel]) === null || _facet$channel === void 0 ? void 0 : _facet$channel.header, config, channel);\n if (ORTHOGONAL_ORIENT[channel].includes(labelOrient)) {\n // Row/Column with orthogonal labelOrient must use title to display labels\n return _assembleLabelTitle(facet[channel], channel, config);\n }\n }\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n return undefined;\n }\n }, {\n key: \"assembleMarks\",\n value: function assembleMarks() {\n var _this2 = this;\n var child = this.child;\n // If we facet by two dimensions, we need to add a cross operator to the aggregation\n // so that we create all groups\n var facetRoot = this.component.data.facetRoot;\n var data = assembleFacetData(facetRoot);\n var encodeEntry = child.assembleGroupEncodeEntry(false);\n var title = this.assembleLabelTitle() || child.assembleTitle();\n var style = child.assembleGroupStyle();\n var markGroup = _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({\n name: this.getName('cell'),\n type: 'group'\n }, title ? {\n title: title\n } : {}), style ? {\n style: style\n } : {}), {}, {\n from: {\n facet: this.assembleFacet()\n },\n // TODO: move this to after data\n sort: {\n field: FACET_CHANNELS.map(function (c) {\n return _this2.facetSortFields(c);\n }).flat(),\n order: FACET_CHANNELS.map(function (c) {\n return _this2.facetSortOrder(c);\n }).flat()\n }\n }, data.length > 0 ? {\n data: data\n } : {}), encodeEntry ? {\n encode: {\n update: encodeEntry\n }\n } : {}), child.assembleGroup(assembleFacetSignals(this, [])));\n return [markGroup];\n }\n }, {\n key: \"getMapping\",\n value: function getMapping() {\n return this.facet;\n }\n }]);\n return FacetModel;\n}(ModelWithField);","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { AncestorParse } from '.';\nimport { isGenerator, isGraticuleGenerator, isInlineData, isNamedData, isSequenceGenerator, isUrlData, DataSourceType } from '../../data';\nimport * as log from '../../log';\nimport { isAggregate, isBin, isCalculate, isDensity, isExtent, isFilter, isFlatten, isFold, isImpute, isJoinAggregate, isLoess, isLookup, isPivot, isQuantile, isRegression, isSample, isStack, isTimeUnit, isWindow } from '../../transform';\nimport { deepEqual, mergeDeep } from '../../util';\nimport { isFacetModel, isLayerModel, isUnitModel } from '../model';\nimport { requiresSelectionId } from '../selection';\nimport { materializeSelections } from '../selection/parse';\nimport { AggregateNode } from './aggregate';\nimport { BinNode } from './bin';\nimport { CalculateNode } from './calculate';\nimport { OutputNode } from './dataflow';\nimport { DensityTransformNode } from './density';\nimport { ExtentTransformNode } from './extent';\nimport { FacetNode } from './facet';\nimport { FilterNode } from './filter';\nimport { FilterInvalidNode } from './filterinvalid';\nimport { FlattenTransformNode } from './flatten';\nimport { FoldTransformNode } from './fold';\nimport { getImplicitFromEncoding, getImplicitFromFilterTransform, getImplicitFromSelection, ParseNode } from './formatparse';\nimport { GeoJSONNode } from './geojson';\nimport { GeoPointNode } from './geopoint';\nimport { GraticuleNode } from './graticule';\nimport { IdentifierNode } from './identifier';\nimport { ImputeNode } from './impute';\nimport { JoinAggregateTransformNode } from './joinaggregate';\nimport { makeJoinAggregateFromFacet } from './joinaggregatefacet';\nimport { LoessTransformNode } from './loess';\nimport { LookupNode } from './lookup';\nimport { PivotTransformNode } from './pivot';\nimport { QuantileTransformNode } from './quantile';\nimport { RegressionTransformNode } from './regression';\nimport { SampleTransformNode } from './sample';\nimport { SequenceNode } from './sequence';\nimport { SourceNode } from './source';\nimport { StackNode } from './stack';\nimport { TimeUnitNode } from './timeunit';\nimport { WindowTransformNode } from './window';\nexport function findSource(data, sources) {\n var _iterator = _createForOfIteratorHelper(sources),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _data$format, _otherData$format, _data$format2, _otherData$format2;\n var other = _step.value;\n var otherData = other.data;\n // if both datasets have a name defined, we cannot merge\n if (data.name && other.hasName() && data.name !== other.dataName) {\n continue;\n }\n var formatMesh = (_data$format = data['format']) === null || _data$format === void 0 ? void 0 : _data$format.mesh;\n var otherFeature = (_otherData$format = otherData.format) === null || _otherData$format === void 0 ? void 0 : _otherData$format.feature;\n // feature and mesh are mutually exclusive\n if (formatMesh && otherFeature) {\n continue;\n }\n // we have to extract the same feature or mesh\n var formatFeature = (_data$format2 = data['format']) === null || _data$format2 === void 0 ? void 0 : _data$format2.feature;\n if ((formatFeature || otherFeature) && formatFeature !== otherFeature) {\n continue;\n }\n var otherMesh = (_otherData$format2 = otherData.format) === null || _otherData$format2 === void 0 ? void 0 : _otherData$format2.mesh;\n if ((formatMesh || otherMesh) && formatMesh !== otherMesh) {\n continue;\n }\n if (isInlineData(data) && isInlineData(otherData)) {\n if (deepEqual(data.values, otherData.values)) {\n return other;\n }\n } else if (isUrlData(data) && isUrlData(otherData)) {\n if (data.url === otherData.url) {\n return other;\n }\n } else if (isNamedData(data)) {\n if (data.name === other.dataName) {\n return other;\n }\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return null;\n}\nfunction parseRoot(model, sources) {\n if (model.data || !model.parent) {\n // if the model defines a data source or is the root, create a source node\n if (model.data === null) {\n // data: null means we should ignore the parent's data so we just create a new data source\n var source = new SourceNode({\n values: []\n });\n sources.push(source);\n return source;\n }\n var existingSource = findSource(model.data, sources);\n if (existingSource) {\n if (!isGenerator(model.data)) {\n existingSource.data.format = mergeDeep({}, model.data.format, existingSource.data.format);\n }\n // if the new source has a name but the existing one does not, we can set it\n if (!existingSource.hasName() && model.data.name) {\n existingSource.dataName = model.data.name;\n }\n return existingSource;\n } else {\n var _source = new SourceNode(model.data);\n sources.push(_source);\n return _source;\n }\n } else {\n // If we don't have a source defined (overriding parent's data), use the parent's facet root or main.\n return model.parent.component.data.facetRoot ? model.parent.component.data.facetRoot : model.parent.component.data.main;\n }\n}\n/**\n * Parses a transform array into a chain of connected dataflow nodes.\n */\nexport function parseTransformArray(head, model, ancestorParse) {\n var lookupCounter = 0;\n var _iterator2 = _createForOfIteratorHelper(model.transforms),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var t = _step2.value;\n var derivedType = undefined;\n var transformNode = void 0;\n if (isCalculate(t)) {\n transformNode = head = new CalculateNode(head, t);\n derivedType = 'derived';\n } else if (isFilter(t)) {\n var _ParseNode$makeWithAn;\n var implicit = getImplicitFromFilterTransform(t);\n transformNode = head = (_ParseNode$makeWithAn = ParseNode.makeWithAncestors(head, {}, implicit, ancestorParse)) !== null && _ParseNode$makeWithAn !== void 0 ? _ParseNode$makeWithAn : head;\n head = new FilterNode(head, model, t.filter);\n } else if (isBin(t)) {\n transformNode = head = BinNode.makeFromTransform(head, t, model);\n derivedType = 'number';\n } else if (isTimeUnit(t)) {\n derivedType = 'date';\n var parsedAs = ancestorParse.getWithExplicit(t.field);\n // Create parse node because the input to time unit is always date.\n if (parsedAs.value === undefined) {\n head = new ParseNode(head, _defineProperty({}, t.field, derivedType));\n ancestorParse.set(t.field, derivedType, false);\n }\n transformNode = head = TimeUnitNode.makeFromTransform(head, t);\n } else if (isAggregate(t)) {\n transformNode = head = AggregateNode.makeFromTransform(head, t);\n derivedType = 'number';\n if (requiresSelectionId(model)) {\n head = new IdentifierNode(head);\n }\n } else if (isLookup(t)) {\n transformNode = head = LookupNode.make(head, model, t, lookupCounter++);\n derivedType = 'derived';\n } else if (isWindow(t)) {\n transformNode = head = new WindowTransformNode(head, t);\n derivedType = 'number';\n } else if (isJoinAggregate(t)) {\n transformNode = head = new JoinAggregateTransformNode(head, t);\n derivedType = 'number';\n } else if (isStack(t)) {\n transformNode = head = StackNode.makeFromTransform(head, t);\n derivedType = 'derived';\n } else if (isFold(t)) {\n transformNode = head = new FoldTransformNode(head, t);\n derivedType = 'derived';\n } else if (isExtent(t)) {\n transformNode = head = new ExtentTransformNode(head, t);\n derivedType = 'derived';\n } else if (isFlatten(t)) {\n transformNode = head = new FlattenTransformNode(head, t);\n derivedType = 'derived';\n } else if (isPivot(t)) {\n transformNode = head = new PivotTransformNode(head, t);\n derivedType = 'derived';\n } else if (isSample(t)) {\n head = new SampleTransformNode(head, t);\n } else if (isImpute(t)) {\n transformNode = head = ImputeNode.makeFromTransform(head, t);\n derivedType = 'derived';\n } else if (isDensity(t)) {\n transformNode = head = new DensityTransformNode(head, t);\n derivedType = 'derived';\n } else if (isQuantile(t)) {\n transformNode = head = new QuantileTransformNode(head, t);\n derivedType = 'derived';\n } else if (isRegression(t)) {\n transformNode = head = new RegressionTransformNode(head, t);\n derivedType = 'derived';\n } else if (isLoess(t)) {\n transformNode = head = new LoessTransformNode(head, t);\n derivedType = 'derived';\n } else {\n log.warn(log.message.invalidTransformIgnored(t));\n continue;\n }\n if (transformNode && derivedType !== undefined) {\n var _transformNode$produc;\n var _iterator3 = _createForOfIteratorHelper((_transformNode$produc = transformNode.producedFields()) !== null && _transformNode$produc !== void 0 ? _transformNode$produc : []),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var field = _step3.value;\n ancestorParse.set(field, derivedType, false);\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n return head;\n}\n/*\nDescription of the dataflow (http://asciiflow.com/):\n +--------+\n | Source |\n +---+----+\n |\n v\n FormatParse\n (explicit)\n |\n v\n Transforms\n(Filter, Calculate, Binning, TimeUnit, Aggregate, Window, ...)\n |\n v\n FormatParse\n (implicit)\n |\n v\n Binning (in `encoding`)\n |\n v\n Timeunit (in `encoding`)\n |\n v\nFormula From Sort Array\n |\n v\n +--+--+\n | Raw |\n +-----+\n |\n v\n Aggregate (in `encoding`)\n |\n v\n Stack (in `encoding`)\n |\n v\n Invalid Filter\n |\n v\n +----------+\n | Main |\n +----------+\n |\n v\n +-------+\n | Facet |----> \"column\", \"column-layout\", and \"row\"\n +-------+\n |\n v\n ...Child data...\n*/\nexport function parseData(model) {\n var _data$format3, _ParseNode$makeExplic, _ParseNode$makeWithAn2;\n var head = parseRoot(model, model.component.data.sources);\n var _model$component$data = model.component.data,\n outputNodes = _model$component$data.outputNodes,\n outputNodeRefCounts = _model$component$data.outputNodeRefCounts;\n var data = model.data;\n var newData = data && (isGenerator(data) || isUrlData(data) || isInlineData(data));\n var ancestorParse = !newData && model.parent ? model.parent.component.data.ancestorParse.clone() : new AncestorParse();\n if (isGenerator(data)) {\n // insert generator transform\n if (isSequenceGenerator(data)) {\n head = new SequenceNode(head, data.sequence);\n } else if (isGraticuleGenerator(data)) {\n head = new GraticuleNode(head, data.graticule);\n }\n // no parsing necessary for generator\n ancestorParse.parseNothing = true;\n } else if ((data === null || data === void 0 || (_data$format3 = data.format) === null || _data$format3 === void 0 ? void 0 : _data$format3.parse) === null) {\n // format.parse: null means disable parsing\n ancestorParse.parseNothing = true;\n }\n head = (_ParseNode$makeExplic = ParseNode.makeExplicit(head, model, ancestorParse)) !== null && _ParseNode$makeExplic !== void 0 ? _ParseNode$makeExplic : head;\n // Default discrete selections require an identifer transform to\n // uniquely identify data points. Add this transform at the head of\n // the pipeline such that the identifier field is available for all\n // subsequent datasets. During optimization, we will remove this\n // transform if it proves to be unnecessary. Additional identifier\n // transforms will be necessary when new tuples are constructed\n // (e.g., post-aggregation).\n head = new IdentifierNode(head);\n // HACK: This is equivalent for merging bin extent for union scale.\n // FIXME(https://github.com/vega/vega-lite/issues/2270): Correctly merge extent / bin node for shared bin scale\n var parentIsLayer = model.parent && isLayerModel(model.parent);\n if (isUnitModel(model) || isFacetModel(model)) {\n if (parentIsLayer) {\n var _BinNode$makeFromEnco;\n head = (_BinNode$makeFromEnco = BinNode.makeFromEncoding(head, model)) !== null && _BinNode$makeFromEnco !== void 0 ? _BinNode$makeFromEnco : head;\n }\n }\n if (model.transforms.length > 0) {\n head = parseTransformArray(head, model, ancestorParse);\n }\n // create parse nodes for fields that need to be parsed (or flattened) implicitly\n var implicitSelection = getImplicitFromSelection(model);\n var implicitEncoding = getImplicitFromEncoding(model);\n head = (_ParseNode$makeWithAn2 = ParseNode.makeWithAncestors(head, {}, _objectSpread(_objectSpread({}, implicitSelection), implicitEncoding), ancestorParse)) !== null && _ParseNode$makeWithAn2 !== void 0 ? _ParseNode$makeWithAn2 : head;\n if (isUnitModel(model)) {\n head = GeoJSONNode.parseAll(head, model);\n head = GeoPointNode.parseAll(head, model);\n }\n if (isUnitModel(model) || isFacetModel(model)) {\n var _TimeUnitNode$makeFro;\n if (!parentIsLayer) {\n var _BinNode$makeFromEnco2;\n head = (_BinNode$makeFromEnco2 = BinNode.makeFromEncoding(head, model)) !== null && _BinNode$makeFromEnco2 !== void 0 ? _BinNode$makeFromEnco2 : head;\n }\n head = (_TimeUnitNode$makeFro = TimeUnitNode.makeFromEncoding(head, model)) !== null && _TimeUnitNode$makeFro !== void 0 ? _TimeUnitNode$makeFro : head;\n head = CalculateNode.parseAllForSortIndex(head, model);\n }\n // add an output node pre aggregation\n var rawName = model.getDataName(DataSourceType.Raw);\n var raw = new OutputNode(head, rawName, DataSourceType.Raw, outputNodeRefCounts);\n outputNodes[rawName] = raw;\n head = raw;\n if (isUnitModel(model)) {\n var _ImputeNode$makeFromE, _StackNode$makeFromEn;\n var agg = AggregateNode.makeFromEncoding(head, model);\n if (agg) {\n head = agg;\n if (requiresSelectionId(model)) {\n head = new IdentifierNode(head);\n }\n }\n head = (_ImputeNode$makeFromE = ImputeNode.makeFromEncoding(head, model)) !== null && _ImputeNode$makeFromE !== void 0 ? _ImputeNode$makeFromE : head;\n head = (_StackNode$makeFromEn = StackNode.makeFromEncoding(head, model)) !== null && _StackNode$makeFromEn !== void 0 ? _StackNode$makeFromEn : head;\n }\n if (isUnitModel(model)) {\n var _FilterInvalidNode$ma;\n head = (_FilterInvalidNode$ma = FilterInvalidNode.make(head, model)) !== null && _FilterInvalidNode$ma !== void 0 ? _FilterInvalidNode$ma : head;\n }\n // output node for marks\n var mainName = model.getDataName(DataSourceType.Main);\n var main = new OutputNode(head, mainName, DataSourceType.Main, outputNodeRefCounts);\n outputNodes[mainName] = main;\n head = main;\n if (isUnitModel(model)) {\n materializeSelections(model, main);\n }\n // add facet marker\n var facetRoot = null;\n if (isFacetModel(model)) {\n var _makeJoinAggregateFro;\n var facetName = model.getName('facet');\n // Derive new aggregate for facet's sort field\n // augment data source with new fields for crossed facet\n head = (_makeJoinAggregateFro = makeJoinAggregateFromFacet(head, model.facet)) !== null && _makeJoinAggregateFro !== void 0 ? _makeJoinAggregateFro : head;\n facetRoot = new FacetNode(head, model, facetName, main.getSource());\n outputNodes[facetName] = facetRoot;\n }\n return _objectSpread(_objectSpread({}, model.component.data), {}, {\n outputNodes: outputNodes,\n outputNodeRefCounts: outputNodeRefCounts,\n raw: raw,\n main: main,\n facetRoot: facetRoot,\n ancestorParse: ancestorParse\n });\n}","import { vgField } from '../../channeldef';\nimport { DEFAULT_SORT_OP, isSortField } from '../../sort';\nimport { facetSortFieldName } from '../facet';\nimport { JoinAggregateTransformNode } from './joinaggregate';\nexport function makeJoinAggregateFromFacet(parent, facet) {\n var row = facet.row,\n column = facet.column;\n if (row && column) {\n var newParent = null;\n // only need to make one for crossed facet\n for (var _i = 0, _arr = [row, column]; _i < _arr.length; _i++) {\n var fieldDef = _arr[_i];\n if (isSortField(fieldDef.sort)) {\n var _fieldDef$sort = fieldDef.sort,\n field = _fieldDef$sort.field,\n _fieldDef$sort$op = _fieldDef$sort.op,\n op = _fieldDef$sort$op === void 0 ? DEFAULT_SORT_OP : _fieldDef$sort$op;\n parent = newParent = new JoinAggregateTransformNode(parent, {\n joinaggregate: [{\n op: op,\n field: field,\n as: facetSortFieldName(fieldDef, fieldDef.sort, {\n forAs: true\n })\n }],\n groupby: [vgField(fieldDef)]\n });\n }\n }\n return newParent;\n }\n return null;\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _assertThisInitialized from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport * as log from '../log';\nimport { isHConcatSpec, isVConcatSpec } from '../spec';\nimport { keys } from '../util';\nimport { buildModel } from './buildmodel';\nimport { parseData as _parseData } from './data/parse';\nimport { assembleLayoutSignals as _assembleLayoutSignals } from './layoutsize/assemble';\nimport { parseConcatLayoutSize } from './layoutsize/parse';\nimport { Model } from './model';\nexport var ConcatModel = /*#__PURE__*/function (_Model) {\n _inherits(ConcatModel, _Model);\n var _super = _createSuper(ConcatModel);\n function ConcatModel(spec, parent, parentGivenName, config) {\n var _spec$resolve, _spec$resolve2;\n var _this;\n _classCallCheck(this, ConcatModel);\n _this = _super.call(this, spec, 'concat', parent, parentGivenName, config, spec.resolve);\n if (((_spec$resolve = spec.resolve) === null || _spec$resolve === void 0 || (_spec$resolve = _spec$resolve.axis) === null || _spec$resolve === void 0 ? void 0 : _spec$resolve.x) === 'shared' || ((_spec$resolve2 = spec.resolve) === null || _spec$resolve2 === void 0 || (_spec$resolve2 = _spec$resolve2.axis) === null || _spec$resolve2 === void 0 ? void 0 : _spec$resolve2.y) === 'shared') {\n log.warn(log.message.CONCAT_CANNOT_SHARE_AXIS);\n }\n _this.children = _this.getChildren(spec).map(function (child, i) {\n return buildModel(child, _assertThisInitialized(_this), _this.getName(\"concat_\".concat(i)), undefined, config);\n });\n return _this;\n }\n _createClass(ConcatModel, [{\n key: \"parseData\",\n value: function parseData() {\n this.component.data = _parseData(this);\n var _iterator = _createForOfIteratorHelper(this.children),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var child = _step.value;\n child.parseData();\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n }, {\n key: \"parseSelections\",\n value: function parseSelections() {\n // Merge selections up the hierarchy so that they may be referenced\n // across unit specs. Persist their definitions within each child\n // to assemble signals which remain within output Vega unit groups.\n this.component.selection = {};\n var _iterator2 = _createForOfIteratorHelper(this.children),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var child = _step2.value;\n child.parseSelections();\n var _iterator3 = _createForOfIteratorHelper(keys(child.component.selection)),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var key = _step3.value;\n this.component.selection[key] = child.component.selection[key];\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n }, {\n key: \"parseMarkGroup\",\n value: function parseMarkGroup() {\n var _iterator4 = _createForOfIteratorHelper(this.children),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var child = _step4.value;\n child.parseMarkGroup();\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n }\n }, {\n key: \"parseAxesAndHeaders\",\n value: function parseAxesAndHeaders() {\n var _iterator5 = _createForOfIteratorHelper(this.children),\n _step5;\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var child = _step5.value;\n child.parseAxesAndHeaders();\n }\n // TODO(#2415): support shared axes\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n }\n }, {\n key: \"getChildren\",\n value: function getChildren(spec) {\n if (isVConcatSpec(spec)) {\n return spec.vconcat;\n } else if (isHConcatSpec(spec)) {\n return spec.hconcat;\n }\n return spec.concat;\n }\n }, {\n key: \"parseLayoutSize\",\n value: function parseLayoutSize() {\n parseConcatLayoutSize(this);\n }\n }, {\n key: \"parseAxisGroup\",\n value: function parseAxisGroup() {\n return null;\n }\n }, {\n key: \"assembleSelectionTopLevelSignals\",\n value: function assembleSelectionTopLevelSignals(signals) {\n return this.children.reduce(function (sg, child) {\n return child.assembleSelectionTopLevelSignals(sg);\n }, signals);\n }\n }, {\n key: \"assembleSignals\",\n value: function assembleSignals() {\n this.children.forEach(function (child) {\n return child.assembleSignals();\n });\n return [];\n }\n }, {\n key: \"assembleLayoutSignals\",\n value: function assembleLayoutSignals() {\n var layoutSignals = _assembleLayoutSignals(this);\n var _iterator6 = _createForOfIteratorHelper(this.children),\n _step6;\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var child = _step6.value;\n layoutSignals.push.apply(layoutSignals, _toConsumableArray(child.assembleLayoutSignals()));\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n return layoutSignals;\n }\n }, {\n key: \"assembleSelectionData\",\n value: function assembleSelectionData(data) {\n return this.children.reduce(function (db, child) {\n return child.assembleSelectionData(db);\n }, data);\n }\n }, {\n key: \"assembleMarks\",\n value: function assembleMarks() {\n // only children have marks\n return this.children.map(function (child) {\n var title = child.assembleTitle();\n var style = child.assembleGroupStyle();\n var encodeEntry = child.assembleGroupEncodeEntry(false);\n return _objectSpread(_objectSpread(_objectSpread(_objectSpread({\n type: 'group',\n name: child.getName('group')\n }, title ? {\n title: title\n } : {}), style ? {\n style: style\n } : {}), encodeEntry ? {\n encode: {\n update: encodeEntry\n }\n } : {}), child.assembleGroup());\n });\n }\n }, {\n key: \"assembleGroupStyle\",\n value: function assembleGroupStyle() {\n return undefined;\n }\n }, {\n key: \"assembleDefaultLayout\",\n value: function assembleDefaultLayout() {\n var columns = this.layout.columns;\n return _objectSpread(_objectSpread({}, columns != null ? {\n columns: columns\n } : {}), {}, {\n bounds: 'full',\n // Use align each so it can work with multiple plots with different size\n align: 'each'\n });\n }\n }]);\n return ConcatModel;\n}(Model);","import _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { COMMON_AXIS_PROPERTIES_INDEX } from '../../axis';\nimport { duplicate, keys } from '../../util';\nimport { isSignalRef } from '../../vega.schema';\nimport { Split } from '../split';\nfunction isFalseOrNull(v) {\n return v === false || v === null;\n}\nvar AXIS_COMPONENT_PROPERTIES_INDEX = _objectSpread(_objectSpread({\n disable: 1,\n gridScale: 1,\n scale: 1\n}, COMMON_AXIS_PROPERTIES_INDEX), {}, {\n labelExpr: 1,\n encode: 1\n});\nexport var AXIS_COMPONENT_PROPERTIES = keys(AXIS_COMPONENT_PROPERTIES_INDEX);\nexport var AxisComponent = /*#__PURE__*/function (_Split) {\n _inherits(AxisComponent, _Split);\n var _super = _createSuper(AxisComponent);\n function AxisComponent() {\n var _this;\n var explicit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var implicit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var mainExtracted = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n _classCallCheck(this, AxisComponent);\n _this = _super.call(this);\n _this.explicit = explicit;\n _this.implicit = implicit;\n _this.mainExtracted = mainExtracted;\n return _this;\n }\n _createClass(AxisComponent, [{\n key: \"clone\",\n value: function clone() {\n return new AxisComponent(duplicate(this.explicit), duplicate(this.implicit), this.mainExtracted);\n }\n }, {\n key: \"hasAxisPart\",\n value: function hasAxisPart(part) {\n // FIXME(https://github.com/vega/vega-lite/issues/2552) this method can be wrong if users use a Vega theme.\n if (part === 'axis') {\n // always has the axis container part\n return true;\n }\n if (part === 'grid' || part === 'title') {\n return !!this.get(part);\n }\n // Other parts are enabled by default, so they should not be false or null.\n return !isFalseOrNull(this.get(part));\n }\n }, {\n key: \"hasOrientSignalRef\",\n value: function hasOrientSignalRef() {\n return isSignalRef(this.explicit.orient);\n }\n }]);\n return AxisComponent;\n}(Split);","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { getSecondaryRangeChannel } from '../../channel';\nimport { channelDefType, getFieldOrDatumDef, isFieldDef, isPositionFieldOrDatumDef } from '../../channeldef';\nimport { formatCustomType, isCustomFormatType } from '../format';\nexport function labels(model, channel, specifiedLabelsSpec) {\n var _getFieldOrDatumDef;\n var encoding = model.encoding,\n config = model.config;\n var fieldOrDatumDef = (_getFieldOrDatumDef = getFieldOrDatumDef(encoding[channel])) !== null && _getFieldOrDatumDef !== void 0 ? _getFieldOrDatumDef : getFieldOrDatumDef(encoding[getSecondaryRangeChannel(channel)]);\n var axis = model.axis(channel) || {};\n var format = axis.format,\n formatType = axis.formatType;\n if (isCustomFormatType(formatType)) {\n return _objectSpread({\n text: formatCustomType({\n fieldOrDatumDef: fieldOrDatumDef,\n field: 'datum.value',\n format: format,\n formatType: formatType,\n config: config\n })\n }, specifiedLabelsSpec);\n } else if (format === undefined && formatType === undefined && config.customFormatTypes) {\n if (channelDefType(fieldOrDatumDef) === 'quantitative') {\n if (isPositionFieldOrDatumDef(fieldOrDatumDef) && fieldOrDatumDef.stack === 'normalize' && config.normalizedNumberFormatType) {\n return _objectSpread({\n text: formatCustomType({\n fieldOrDatumDef: fieldOrDatumDef,\n field: 'datum.value',\n format: config.normalizedNumberFormat,\n formatType: config.normalizedNumberFormatType,\n config: config\n })\n }, specifiedLabelsSpec);\n } else if (config.numberFormatType) {\n return _objectSpread({\n text: formatCustomType({\n fieldOrDatumDef: fieldOrDatumDef,\n field: 'datum.value',\n format: config.numberFormat,\n formatType: config.numberFormatType,\n config: config\n })\n }, specifiedLabelsSpec);\n }\n }\n if (channelDefType(fieldOrDatumDef) === 'temporal' && config.timeFormatType && isFieldDef(fieldOrDatumDef) && !fieldOrDatumDef.timeUnit) {\n return _objectSpread({\n text: formatCustomType({\n fieldOrDatumDef: fieldOrDatumDef,\n field: 'datum.value',\n format: config.timeFormat,\n formatType: config.timeFormatType,\n config: config\n })\n }, specifiedLabelsSpec);\n }\n }\n return specifiedLabelsSpec;\n}","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { AXIS_PARTS, isAxisProperty, isConditionalAxisValue } from '../../axis';\nimport { POSITION_SCALE_CHANNELS } from '../../channel';\nimport { getFieldOrDatumDef } from '../../channeldef';\nimport { getFirstDefined, isEmpty, keys, normalizeAngle } from '../../util';\nimport { isSignalRef } from '../../vega.schema';\nimport { mergeTitleComponent } from '../common';\nimport { guideEncodeEntry } from '../guide';\nimport { parseGuideResolve } from '../resolve';\nimport { defaultTieBreaker, mergeValuesWithExplicit } from '../split';\nimport { AxisComponent, AXIS_COMPONENT_PROPERTIES } from './component';\nimport { getAxisConfig, getAxisConfigs } from './config';\nimport * as encode from './encode';\nimport { axisRules, defaultOrient, getFieldDefTitle, getLabelAngle } from './properties';\nimport { guideFormat, guideFormatType } from '../format';\nexport function parseUnitAxes(model) {\n return POSITION_SCALE_CHANNELS.reduce(function (axis, channel) {\n if (model.component.scales[channel]) {\n axis[channel] = [parseAxis(channel, model)];\n }\n return axis;\n }, {});\n}\nvar OPPOSITE_ORIENT = {\n bottom: 'top',\n top: 'bottom',\n left: 'right',\n right: 'left'\n};\nexport function parseLayerAxes(model) {\n var _model$component = model.component,\n axes = _model$component.axes,\n resolve = _model$component.resolve;\n var axisCount = {\n top: 0,\n bottom: 0,\n right: 0,\n left: 0\n };\n var _iterator = _createForOfIteratorHelper(model.children),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var child = _step.value;\n child.parseAxesAndHeaders();\n var _iterator3 = _createForOfIteratorHelper(keys(child.component.axes)),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var channel = _step3.value;\n resolve.axis[channel] = parseGuideResolve(model.component.resolve, channel);\n if (resolve.axis[channel] === 'shared') {\n // If the resolve says shared (and has not been overridden)\n // We will try to merge and see if there is a conflict\n axes[channel] = mergeAxisComponents(axes[channel], child.component.axes[channel]);\n if (!axes[channel]) {\n // If merge returns nothing, there is a conflict so we cannot make the axis shared.\n // Thus, mark axis as independent and remove the axis component.\n resolve.axis[channel] = 'independent';\n delete axes[channel];\n }\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n }\n // Move axes to layer's axis component and merge shared axes\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n var _iterator2 = _createForOfIteratorHelper(POSITION_SCALE_CHANNELS),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _channel = _step2.value;\n var _iterator4 = _createForOfIteratorHelper(model.children),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var _child = _step4.value;\n if (!_child.component.axes[_channel]) {\n // skip if the child does not have a particular axis\n continue;\n }\n if (resolve.axis[_channel] === 'independent') {\n var _axes$_channel;\n // If axes are independent, concat the axisComponent array.\n axes[_channel] = ((_axes$_channel = axes[_channel]) !== null && _axes$_channel !== void 0 ? _axes$_channel : []).concat(_child.component.axes[_channel]);\n // Automatically adjust orient\n var _iterator6 = _createForOfIteratorHelper(_child.component.axes[_channel]),\n _step6;\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var axisComponent = _step6.value;\n var _axisComponent$getWit = axisComponent.getWithExplicit('orient'),\n orient = _axisComponent$getWit.value,\n explicit = _axisComponent$getWit.explicit;\n if (isSignalRef(orient)) {\n continue;\n }\n if (axisCount[orient] > 0 && !explicit) {\n // Change axis orient if the number do not match\n var oppositeOrient = OPPOSITE_ORIENT[orient];\n if (axisCount[orient] > axisCount[oppositeOrient]) {\n axisComponent.set('orient', oppositeOrient, false);\n }\n }\n axisCount[orient]++;\n // TODO(https://github.com/vega/vega-lite/issues/2634): automatically add extra offset?\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n }\n // After merging, make sure to remove axes from child\n delete _child.component.axes[_channel];\n }\n // Show gridlines for first axis only for dual-axis chart\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n if (resolve.axis[_channel] === 'independent' && axes[_channel] && axes[_channel].length > 1) {\n var _iterator5 = _createForOfIteratorHelper((axes[_channel] || []).entries()),\n _step5;\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var _step5$value = _slicedToArray(_step5.value, 2),\n index = _step5$value[0],\n axisCmpt = _step5$value[1];\n if (index > 0 && !!axisCmpt.get('grid') && !axisCmpt.explicit.grid) {\n axisCmpt.implicit.grid = false;\n }\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n}\nfunction mergeAxisComponents(mergedAxisCmpts, childAxisCmpts) {\n if (mergedAxisCmpts) {\n // FIXME: this is a bit wrong once we support multiple axes\n if (mergedAxisCmpts.length !== childAxisCmpts.length) {\n return undefined; // Cannot merge axis component with different number of axes.\n }\n\n var length = mergedAxisCmpts.length;\n for (var i = 0; i < length; i++) {\n var merged = mergedAxisCmpts[i];\n var child = childAxisCmpts[i];\n if (!!merged !== !!child) {\n return undefined;\n } else if (merged && child) {\n var mergedOrient = merged.getWithExplicit('orient');\n var childOrient = child.getWithExplicit('orient');\n if (mergedOrient.explicit && childOrient.explicit && mergedOrient.value !== childOrient.value) {\n // TODO: throw warning if resolve is explicit (We don't have info about explicit/implicit resolve yet.)\n // Cannot merge due to inconsistent orient\n return undefined;\n } else {\n mergedAxisCmpts[i] = mergeAxisComponent(merged, child);\n }\n }\n }\n } else {\n // For first one, return a copy of the child\n return childAxisCmpts.map(function (axisComponent) {\n return axisComponent.clone();\n });\n }\n return mergedAxisCmpts;\n}\nfunction mergeAxisComponent(merged, child) {\n var _iterator7 = _createForOfIteratorHelper(AXIS_COMPONENT_PROPERTIES),\n _step7;\n try {\n var _loop = function _loop() {\n var prop = _step7.value;\n var mergedValueWithExplicit = mergeValuesWithExplicit(merged.getWithExplicit(prop), child.getWithExplicit(prop), prop, 'axis',\n // Tie breaker function\n function (v1, v2) {\n switch (prop) {\n case 'title':\n return mergeTitleComponent(v1, v2);\n case 'gridScale':\n return {\n explicit: v1.explicit,\n value: getFirstDefined(v1.value, v2.value)\n };\n }\n return defaultTieBreaker(v1, v2, prop, 'axis');\n });\n merged.setWithExplicit(prop, mergedValueWithExplicit);\n };\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n _loop();\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n return merged;\n}\nfunction isExplicit(value, property, axis, model, channel) {\n if (property === 'disable') {\n return axis !== undefined; // if axis is specified or null/false, then its enable/disable state is explicit\n }\n\n axis = axis || {};\n switch (property) {\n case 'titleAngle':\n case 'labelAngle':\n return value === (isSignalRef(axis.labelAngle) ? axis.labelAngle : normalizeAngle(axis.labelAngle));\n case 'values':\n return !!axis.values;\n // specified axis.values is already respected, but may get transformed.\n case 'encode':\n // both VL axis.encoding and axis.labelAngle affect VG axis.encode\n return !!axis.encoding || !!axis.labelAngle;\n case 'title':\n // title can be explicit if fieldDef.title is set\n if (value === getFieldDefTitle(model, channel)) {\n return true;\n }\n }\n // Otherwise, things are explicit if the returned value matches the specified property\n return value === axis[property];\n}\n/**\n * Properties to always include values from config\n */\nvar propsToAlwaysIncludeConfig = new Set(['grid', 'translate',\n// the rest are not axis configs in Vega, but are in VL, so we need to set too.\n'format', 'formatType', 'orient', 'labelExpr', 'tickCount', 'position', 'tickMinStep']);\nfunction parseAxis(channel, model) {\n var _axis, _config, _config$axis, _axis2, _axis$encoding;\n var axis = model.axis(channel);\n var axisComponent = new AxisComponent();\n var fieldOrDatumDef = getFieldOrDatumDef(model.encoding[channel]);\n var mark = model.mark,\n config = model.config;\n var orient = ((_axis = axis) === null || _axis === void 0 ? void 0 : _axis.orient) || ((_config = config[channel === 'x' ? 'axisX' : 'axisY']) === null || _config === void 0 ? void 0 : _config.orient) || ((_config$axis = config.axis) === null || _config$axis === void 0 ? void 0 : _config$axis.orient) || defaultOrient(channel);\n var scaleType = model.getScaleComponent(channel).get('type');\n var axisConfigs = getAxisConfigs(channel, scaleType, orient, model.config);\n var disable = axis !== undefined ? !axis : getAxisConfig('disable', config.style, (_axis2 = axis) === null || _axis2 === void 0 ? void 0 : _axis2.style, axisConfigs).configValue;\n axisComponent.set('disable', disable, axis !== undefined);\n if (disable) {\n return axisComponent;\n }\n axis = axis || {};\n var labelAngle = getLabelAngle(fieldOrDatumDef, axis, channel, config.style, axisConfigs);\n var formatType = guideFormatType(axis.formatType, fieldOrDatumDef, scaleType);\n var format = guideFormat(fieldOrDatumDef, fieldOrDatumDef.type, axis.format, axis.formatType, config, true);\n var ruleParams = {\n fieldOrDatumDef: fieldOrDatumDef,\n axis: axis,\n channel: channel,\n model: model,\n scaleType: scaleType,\n orient: orient,\n labelAngle: labelAngle,\n format: format,\n formatType: formatType,\n mark: mark,\n config: config\n };\n // 1.2. Add properties\n var _iterator8 = _createForOfIteratorHelper(AXIS_COMPONENT_PROPERTIES),\n _step8;\n try {\n for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {\n var property = _step8.value;\n var value = property in axisRules ? axisRules[property](ruleParams) : isAxisProperty(property) ? axis[property] : undefined;\n var hasValue = value !== undefined;\n var explicit = isExplicit(value, property, axis, model, channel);\n if (hasValue && explicit) {\n axisComponent.set(property, value, explicit);\n } else {\n var _ref = isAxisProperty(property) && property !== 'values' ? getAxisConfig(property, config.style, axis.style, axisConfigs) : {},\n _ref$configValue = _ref.configValue,\n configValue = _ref$configValue === void 0 ? undefined : _ref$configValue,\n _ref$configFrom = _ref.configFrom,\n configFrom = _ref$configFrom === void 0 ? undefined : _ref$configFrom;\n var hasConfigValue = configValue !== undefined;\n if (hasValue && !hasConfigValue) {\n // only set property if it is explicitly set or has no config value (otherwise we will accidentally override config)\n axisComponent.set(property, value, explicit);\n } else if (\n // Cases need implicit values\n // 1. Axis config that aren't available in Vega\n !(configFrom === 'vgAxisConfig') ||\n // 2. Certain properties are always included (see `propsToAlwaysIncludeConfig`'s declaration for more details)\n propsToAlwaysIncludeConfig.has(property) && hasConfigValue ||\n // 3. Conditional axis values and signals\n isConditionalAxisValue(configValue) || isSignalRef(configValue)) {\n // If a config is specified and is conditional, copy conditional value from axis config\n axisComponent.set(property, configValue, false);\n }\n }\n }\n // 2) Add guide encode definition groups\n } catch (err) {\n _iterator8.e(err);\n } finally {\n _iterator8.f();\n }\n var axisEncoding = (_axis$encoding = axis.encoding) !== null && _axis$encoding !== void 0 ? _axis$encoding : {};\n var axisEncode = AXIS_PARTS.reduce(function (e, part) {\n var _axisEncoding$part;\n if (!axisComponent.hasAxisPart(part)) {\n // No need to create encode for a disabled part.\n return e;\n }\n var axisEncodingPart = guideEncodeEntry((_axisEncoding$part = axisEncoding[part]) !== null && _axisEncoding$part !== void 0 ? _axisEncoding$part : {}, model);\n var value = part === 'labels' ? encode.labels(model, channel, axisEncodingPart) : axisEncodingPart;\n if (value !== undefined && !isEmpty(value)) {\n e[part] = {\n update: value\n };\n }\n return e;\n }, {});\n // FIXME: By having encode as one property, we won't have fine grained encode merging.\n if (!isEmpty(axisEncode)) {\n axisComponent.set('encode', axisEncode, !!axis.encoding || axis.labelAngle !== undefined);\n }\n return axisComponent;\n}","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { getSizeChannel, POSITION_SCALE_CHANNELS } from '../../channel';\nimport { isContinuousFieldOrDatumDef } from '../../channeldef';\nimport * as log from '../../log';\nimport { isStep } from '../../spec/base';\nexport function initLayoutSize(_ref) {\n var encoding = _ref.encoding,\n size = _ref.size;\n var _iterator = _createForOfIteratorHelper(POSITION_SCALE_CHANNELS),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var channel = _step.value;\n var sizeType = getSizeChannel(channel);\n if (isStep(size[sizeType])) {\n if (isContinuousFieldOrDatumDef(encoding[channel])) {\n delete size[sizeType];\n log.warn(log.message.stepDropped(sizeType));\n }\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return size;\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport * as encode from './encode';\nexport var arc = {\n vgMark: 'arc',\n encodeEntry: function encodeEntry(model) {\n return _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, encode.baseEncodeEntry(model, {\n align: 'ignore',\n baseline: 'ignore',\n color: 'include',\n size: 'ignore',\n orient: 'ignore',\n theta: 'ignore'\n })), encode.pointPosition('x', model, {\n defaultPos: 'mid'\n })), encode.pointPosition('y', model, {\n defaultPos: 'mid'\n })), encode.rectPosition(model, 'radius')), encode.rectPosition(model, 'theta'));\n }\n};","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport * as encode from './encode';\nexport var area = {\n vgMark: 'area',\n encodeEntry: function encodeEntry(model) {\n return _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, encode.baseEncodeEntry(model, {\n align: 'ignore',\n baseline: 'ignore',\n color: 'include',\n orient: 'include',\n size: 'ignore',\n theta: 'ignore'\n })), encode.pointOrRangePosition('x', model, {\n defaultPos: 'zeroOrMin',\n defaultPos2: 'zeroOrMin',\n range: model.markDef.orient === 'horizontal'\n })), encode.pointOrRangePosition('y', model, {\n defaultPos: 'zeroOrMin',\n defaultPos2: 'zeroOrMin',\n range: model.markDef.orient === 'vertical'\n })), encode.defined(model));\n }\n};","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport * as encode from './encode';\nexport var bar = {\n vgMark: 'rect',\n encodeEntry: function encodeEntry(model) {\n return _objectSpread(_objectSpread(_objectSpread({}, encode.baseEncodeEntry(model, {\n align: 'ignore',\n baseline: 'ignore',\n color: 'include',\n orient: 'ignore',\n size: 'ignore',\n theta: 'ignore'\n })), encode.rectPosition(model, 'x')), encode.rectPosition(model, 'y'));\n }\n};","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { isFieldDef, vgField } from '../../channeldef';\nimport { GEOJSON } from '../../type';\nimport * as encode from './encode';\nexport var geoshape = {\n vgMark: 'shape',\n encodeEntry: function encodeEntry(model) {\n return _objectSpread({}, encode.baseEncodeEntry(model, {\n align: 'ignore',\n baseline: 'ignore',\n color: 'include',\n size: 'ignore',\n orient: 'ignore',\n theta: 'ignore'\n }));\n },\n postEncodingTransform: function postEncodingTransform(model) {\n var encoding = model.encoding;\n var shapeDef = encoding.shape;\n var transform = _objectSpread({\n type: 'geoshape',\n projection: model.projectionName()\n }, shapeDef && isFieldDef(shapeDef) && shapeDef.type === GEOJSON ? {\n field: vgField(shapeDef, {\n expr: 'datum'\n })\n } : {});\n return [transform];\n }\n};","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport * as encode from './encode';\nexport var image = {\n vgMark: 'image',\n encodeEntry: function encodeEntry(model) {\n return _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, encode.baseEncodeEntry(model, {\n align: 'ignore',\n baseline: 'ignore',\n color: 'ignore',\n orient: 'ignore',\n size: 'ignore',\n theta: 'ignore'\n })), encode.rectPosition(model, 'x')), encode.rectPosition(model, 'y')), encode.text(model, 'url'));\n }\n};","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport * as encode from './encode';\nexport var line = {\n vgMark: 'line',\n encodeEntry: function encodeEntry(model) {\n return _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, encode.baseEncodeEntry(model, {\n align: 'ignore',\n baseline: 'ignore',\n color: 'include',\n size: 'ignore',\n orient: 'ignore',\n theta: 'ignore'\n })), encode.pointPosition('x', model, {\n defaultPos: 'mid'\n })), encode.pointPosition('y', model, {\n defaultPos: 'mid'\n })), encode.nonPosition('size', model, {\n vgChannel: 'strokeWidth' // VL's line size is strokeWidth\n })), encode.defined(model));\n }\n};\nexport var trail = {\n vgMark: 'trail',\n encodeEntry: function encodeEntry(model) {\n return _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, encode.baseEncodeEntry(model, {\n align: 'ignore',\n baseline: 'ignore',\n color: 'include',\n size: 'include',\n orient: 'ignore',\n theta: 'ignore'\n })), encode.pointPosition('x', model, {\n defaultPos: 'mid'\n })), encode.pointPosition('y', model, {\n defaultPos: 'mid'\n })), encode.nonPosition('size', model)), encode.defined(model));\n }\n};","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport * as encode from './encode';\nfunction _encodeEntry(model, fixedShape) {\n var config = model.config;\n return _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, encode.baseEncodeEntry(model, {\n align: 'ignore',\n baseline: 'ignore',\n color: 'include',\n size: 'include',\n orient: 'ignore',\n theta: 'ignore'\n })), encode.pointPosition('x', model, {\n defaultPos: 'mid'\n })), encode.pointPosition('y', model, {\n defaultPos: 'mid'\n })), encode.nonPosition('size', model)), encode.nonPosition('angle', model)), shapeMixins(model, config, fixedShape));\n}\nexport function shapeMixins(model, config, fixedShape) {\n if (fixedShape) {\n return {\n shape: {\n value: fixedShape\n }\n };\n }\n return encode.nonPosition('shape', model);\n}\nexport var point = {\n vgMark: 'symbol',\n encodeEntry: function encodeEntry(model) {\n return _encodeEntry(model);\n }\n};\nexport var circle = {\n vgMark: 'symbol',\n encodeEntry: function encodeEntry(model) {\n return _encodeEntry(model, 'circle');\n }\n};\nexport var square = {\n vgMark: 'symbol',\n encodeEntry: function encodeEntry(model) {\n return _encodeEntry(model, 'square');\n }\n};","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport * as encode from './encode';\nexport var rect = {\n vgMark: 'rect',\n encodeEntry: function encodeEntry(model) {\n return _objectSpread(_objectSpread(_objectSpread({}, encode.baseEncodeEntry(model, {\n align: 'ignore',\n baseline: 'ignore',\n color: 'include',\n orient: 'ignore',\n size: 'ignore',\n theta: 'ignore'\n })), encode.rectPosition(model, 'x')), encode.rectPosition(model, 'y'));\n }\n};","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport * as encode from './encode';\nexport var rule = {\n vgMark: 'rule',\n encodeEntry: function encodeEntry(model) {\n var markDef = model.markDef;\n var orient = markDef.orient;\n if (!model.encoding.x && !model.encoding.y && !model.encoding.latitude && !model.encoding.longitude) {\n // Show nothing if we have none of x, y, lat, and long.\n return {};\n }\n return _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, encode.baseEncodeEntry(model, {\n align: 'ignore',\n baseline: 'ignore',\n color: 'include',\n orient: 'ignore',\n size: 'ignore',\n theta: 'ignore'\n })), encode.pointOrRangePosition('x', model, {\n defaultPos: orient === 'horizontal' ? 'zeroOrMax' : 'mid',\n defaultPos2: 'zeroOrMin',\n range: orient !== 'vertical' // include x2 for horizontal or line segment rule\n })), encode.pointOrRangePosition('y', model, {\n defaultPos: orient === 'vertical' ? 'zeroOrMax' : 'mid',\n defaultPos2: 'zeroOrMin',\n range: orient !== 'horizontal' // include y2 for vertical or line segment rule\n })), encode.nonPosition('size', model, {\n vgChannel: 'strokeWidth' // VL's rule size is strokeWidth\n }));\n }\n};","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { getMarkPropOrConfig } from '../common';\nimport * as encode from './encode';\nexport var text = {\n vgMark: 'text',\n encodeEntry: function encodeEntry(model) {\n var config = model.config,\n encoding = model.encoding;\n return _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, encode.baseEncodeEntry(model, {\n align: 'include',\n baseline: 'include',\n color: 'include',\n size: 'ignore',\n orient: 'ignore',\n theta: 'include'\n })), encode.pointPosition('x', model, {\n defaultPos: 'mid'\n })), encode.pointPosition('y', model, {\n defaultPos: 'mid'\n })), encode.text(model)), encode.nonPosition('size', model, {\n vgChannel: 'fontSize' // VL's text size is fontSize\n })), encode.nonPosition('angle', model)), encode.valueIfDefined('align', align(model.markDef, encoding, config))), encode.valueIfDefined('baseline', baseline(model.markDef, encoding, config))), encode.pointPosition('radius', model, {\n defaultPos: null\n })), encode.pointPosition('theta', model, {\n defaultPos: null\n }));\n }\n};\nfunction align(markDef, encoding, config) {\n var a = getMarkPropOrConfig('align', markDef, config);\n if (a === undefined) {\n return 'center';\n }\n // If there is a config, Vega-parser will process this already.\n return undefined;\n}\nfunction baseline(markDef, encoding, config) {\n var b = getMarkPropOrConfig('baseline', markDef, config);\n if (b === undefined) {\n return 'middle';\n }\n // If there is a config, Vega-parser will process this already.\n return undefined;\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { isNumber } from 'vega-util';\nimport { getViewConfigDiscreteStep } from '../../config';\nimport { isVgRangeStep } from '../../vega.schema';\nimport { getMarkPropOrConfig, signalOrValueRef } from '../common';\nimport * as encode from './encode';\nexport var tick = {\n vgMark: 'rect',\n encodeEntry: function encodeEntry(model) {\n var config = model.config,\n markDef = model.markDef;\n var orient = markDef.orient;\n var vgSizeChannel = orient === 'horizontal' ? 'width' : 'height';\n var vgThicknessChannel = orient === 'horizontal' ? 'height' : 'width';\n return _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, encode.baseEncodeEntry(model, {\n align: 'ignore',\n baseline: 'ignore',\n color: 'include',\n orient: 'ignore',\n size: 'ignore',\n theta: 'ignore'\n })), encode.pointPosition('x', model, {\n defaultPos: 'mid',\n vgChannel: 'xc'\n })), encode.pointPosition('y', model, {\n defaultPos: 'mid',\n vgChannel: 'yc'\n })), encode.nonPosition('size', model, {\n defaultValue: defaultSize(model),\n vgChannel: vgSizeChannel\n })), {}, _defineProperty({}, vgThicknessChannel, signalOrValueRef(getMarkPropOrConfig('thickness', markDef, config))));\n }\n};\nfunction defaultSize(model) {\n var _getMarkPropOrConfig;\n var config = model.config,\n markDef = model.markDef;\n var orient = markDef.orient;\n var vgSizeChannel = orient === 'horizontal' ? 'width' : 'height';\n var scale = model.getScaleComponent(orient === 'horizontal' ? 'x' : 'y');\n var markPropOrConfig = (_getMarkPropOrConfig = getMarkPropOrConfig('size', markDef, config, {\n vgChannel: vgSizeChannel\n })) !== null && _getMarkPropOrConfig !== void 0 ? _getMarkPropOrConfig : config.tick.bandSize;\n if (markPropOrConfig !== undefined) {\n return markPropOrConfig;\n } else {\n var scaleRange = scale ? scale.get('range') : undefined;\n if (scaleRange && isVgRangeStep(scaleRange) && isNumber(scaleRange.step)) {\n return scaleRange.step * 3 / 4;\n }\n var defaultViewStep = getViewConfigDiscreteStep(config.view, vgSizeChannel);\n return defaultViewStep * 3 / 4;\n }\n}","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { isArray } from 'vega-util';\nimport { isFieldDef, isValueDef, vgField } from '../../channeldef';\nimport { DataSourceType } from '../../data';\nimport { isAggregate, pathGroupingFields } from '../../encoding';\nimport { AREA, BAR, isPathMark, LINE, TRAIL } from '../../mark';\nimport { isSortByEncoding, isSortField } from '../../sort';\nimport { contains, getFirstDefined, isNullOrFalse, keys, omit, pick } from '../../util';\nimport { VG_CORNERRADIUS_CHANNELS } from '../../vega.schema';\nimport { getMarkConfig, getMarkPropOrConfig, getStyles, signalOrValueRef, sortParams } from '../common';\nimport { arc } from './arc';\nimport { area } from './area';\nimport { bar } from './bar';\nimport { geoshape } from './geoshape';\nimport { image } from './image';\nimport { line, trail } from './line';\nimport { circle, point, square } from './point';\nimport { rect } from './rect';\nimport { rule } from './rule';\nimport { text } from './text';\nimport { tick } from './tick';\nvar markCompiler = {\n arc: arc,\n area: area,\n bar: bar,\n circle: circle,\n geoshape: geoshape,\n image: image,\n line: line,\n point: point,\n rect: rect,\n rule: rule,\n square: square,\n text: text,\n tick: tick,\n trail: trail\n};\nexport function parseMarkGroups(model) {\n if (contains([LINE, AREA, TRAIL], model.mark)) {\n var details = pathGroupingFields(model.mark, model.encoding);\n if (details.length > 0) {\n return getPathGroups(model, details);\n }\n // otherwise use standard mark groups\n } else if (model.mark === BAR) {\n var hasCornerRadius = VG_CORNERRADIUS_CHANNELS.some(function (prop) {\n return getMarkPropOrConfig(prop, model.markDef, model.config);\n });\n if (model.stack && !model.fieldDef('size') && hasCornerRadius) {\n return getGroupsForStackedBarWithCornerRadius(model);\n }\n }\n return getMarkGroup(model);\n}\nvar FACETED_PATH_PREFIX = 'faceted_path_';\nfunction getPathGroups(model, details) {\n // TODO: for non-stacked plot, map order to zindex. (Maybe rename order for layer to zindex?)\n return [{\n name: model.getName('pathgroup'),\n type: 'group',\n from: {\n facet: {\n name: FACETED_PATH_PREFIX + model.requestDataName(DataSourceType.Main),\n data: model.requestDataName(DataSourceType.Main),\n groupby: details\n }\n },\n encode: {\n update: {\n width: {\n field: {\n group: 'width'\n }\n },\n height: {\n field: {\n group: 'height'\n }\n }\n }\n },\n // With subfacet for line/area group, need to use faceted data from above.\n marks: getMarkGroup(model, {\n fromPrefix: FACETED_PATH_PREFIX\n })\n }];\n}\nvar STACK_GROUP_PREFIX = 'stack_group_';\n/**\n * We need to put stacked bars into groups in order to enable cornerRadius for stacks.\n * If stack is used and the model doesn't have size encoding, we put the mark into groups,\n * and apply cornerRadius properties at the group.\n */\nfunction getGroupsForStackedBarWithCornerRadius(model) {\n var _model$stack$groupbyC;\n // Generate the mark\n var _getMarkGroup = getMarkGroup(model, {\n fromPrefix: STACK_GROUP_PREFIX\n }),\n _getMarkGroup2 = _slicedToArray(_getMarkGroup, 1),\n mark = _getMarkGroup2[0];\n // Get the scale for the stacked field\n var fieldScale = model.scaleName(model.stack.fieldChannel);\n var stackField = function stackField() {\n var opt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return model.vgField(model.stack.fieldChannel, opt);\n };\n // Find the min/max of the pixel value on the stacked direction\n var stackFieldGroup = function stackFieldGroup(func, expr) {\n var vgFieldMinMax = [stackField({\n prefix: 'min',\n suffix: 'start',\n expr: expr\n }), stackField({\n prefix: 'max',\n suffix: 'start',\n expr: expr\n }), stackField({\n prefix: 'min',\n suffix: 'end',\n expr: expr\n }), stackField({\n prefix: 'max',\n suffix: 'end',\n expr: expr\n })];\n return \"\".concat(func, \"(\").concat(vgFieldMinMax.map(function (field) {\n return \"scale('\".concat(fieldScale, \"',\").concat(field, \")\");\n }).join(','), \")\");\n };\n var groupUpdate;\n var innerGroupUpdate;\n // Build the encoding for group and an inner group\n if (model.stack.fieldChannel === 'x') {\n // Move cornerRadius, y/yc/y2/height properties to group\n // Group x/x2 should be the min/max of the marks within\n groupUpdate = _objectSpread(_objectSpread({}, pick(mark.encode.update, ['y', 'yc', 'y2', 'height'].concat(_toConsumableArray(VG_CORNERRADIUS_CHANNELS)))), {}, {\n x: {\n signal: stackFieldGroup('min', 'datum')\n },\n x2: {\n signal: stackFieldGroup('max', 'datum')\n },\n clip: {\n value: true\n }\n });\n // Inner group should revert the x translation, and pass height through\n innerGroupUpdate = {\n x: {\n field: {\n group: 'x'\n },\n mult: -1\n },\n height: {\n field: {\n group: 'height'\n }\n }\n };\n // The marks should use the same height as group, without y/yc/y2 properties (because it's already done by group)\n // This is why size encoding is not supported yet\n mark.encode.update = _objectSpread(_objectSpread({}, omit(mark.encode.update, ['y', 'yc', 'y2'])), {}, {\n height: {\n field: {\n group: 'height'\n }\n }\n });\n } else {\n groupUpdate = _objectSpread(_objectSpread({}, pick(mark.encode.update, ['x', 'xc', 'x2', 'width'])), {}, {\n y: {\n signal: stackFieldGroup('min', 'datum')\n },\n y2: {\n signal: stackFieldGroup('max', 'datum')\n },\n clip: {\n value: true\n }\n });\n innerGroupUpdate = {\n y: {\n field: {\n group: 'y'\n },\n mult: -1\n },\n width: {\n field: {\n group: 'width'\n }\n }\n };\n mark.encode.update = _objectSpread(_objectSpread({}, omit(mark.encode.update, ['x', 'xc', 'x2'])), {}, {\n width: {\n field: {\n group: 'width'\n }\n }\n });\n }\n // Deal with cornerRadius properties\n var _iterator = _createForOfIteratorHelper(VG_CORNERRADIUS_CHANNELS),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var key = _step.value;\n var configValue = getMarkConfig(key, model.markDef, model.config);\n // Move from mark to group\n if (mark.encode.update[key]) {\n groupUpdate[key] = mark.encode.update[key];\n delete mark.encode.update[key];\n } else if (configValue) {\n groupUpdate[key] = signalOrValueRef(configValue);\n }\n // Overwrite any cornerRadius on mark set by config --- they are already moved to the group\n if (configValue) {\n mark.encode.update[key] = {\n value: 0\n };\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n var groupby = [];\n if (((_model$stack$groupbyC = model.stack.groupbyChannels) === null || _model$stack$groupbyC === void 0 ? void 0 : _model$stack$groupbyC.length) > 0) {\n var _iterator2 = _createForOfIteratorHelper(model.stack.groupbyChannels),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var groupbyChannel = _step2.value;\n // For bin and time unit, we have to add bin/timeunit -end channels.\n var groupByField = model.fieldDef(groupbyChannel);\n var field = vgField(groupByField);\n if (field) {\n groupby.push(field);\n }\n if (groupByField !== null && groupByField !== void 0 && groupByField.bin || groupByField !== null && groupByField !== void 0 && groupByField.timeUnit) {\n groupby.push(vgField(groupByField, {\n binSuffix: 'end'\n }));\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n var strokeProperties = ['stroke', 'strokeWidth', 'strokeJoin', 'strokeCap', 'strokeDash', 'strokeDashOffset', 'strokeMiterLimit', 'strokeOpacity'];\n // Generate stroke properties for the group\n groupUpdate = strokeProperties.reduce(function (encode, prop) {\n if (mark.encode.update[prop]) {\n return _objectSpread(_objectSpread({}, encode), {}, _defineProperty({}, prop, mark.encode.update[prop]));\n } else {\n var configValue = getMarkConfig(prop, model.markDef, model.config);\n if (configValue !== undefined) {\n return _objectSpread(_objectSpread({}, encode), {}, _defineProperty({}, prop, signalOrValueRef(configValue)));\n } else {\n return encode;\n }\n }\n }, groupUpdate);\n // Apply strokeForeground and strokeOffset if stroke is used\n if (groupUpdate.stroke) {\n groupUpdate.strokeForeground = {\n value: true\n };\n groupUpdate.strokeOffset = {\n value: 0\n };\n }\n return [{\n type: 'group',\n from: {\n facet: {\n data: model.requestDataName(DataSourceType.Main),\n name: STACK_GROUP_PREFIX + model.requestDataName(DataSourceType.Main),\n groupby: groupby,\n aggregate: {\n fields: [stackField({\n suffix: 'start'\n }), stackField({\n suffix: 'start'\n }), stackField({\n suffix: 'end'\n }), stackField({\n suffix: 'end'\n })],\n ops: ['min', 'max', 'min', 'max']\n }\n }\n },\n encode: {\n update: groupUpdate\n },\n marks: [{\n type: 'group',\n encode: {\n update: innerGroupUpdate\n },\n marks: [mark]\n }]\n }];\n}\nexport function getSort(model) {\n var encoding = model.encoding,\n stack = model.stack,\n mark = model.mark,\n markDef = model.markDef,\n config = model.config;\n var order = encoding.order;\n if (!isArray(order) && isValueDef(order) && isNullOrFalse(order.value) || !order && isNullOrFalse(getMarkPropOrConfig('order', markDef, config))) {\n return undefined;\n } else if ((isArray(order) || isFieldDef(order)) && !stack) {\n // Sort by the order field if it is specified and the field is not stacked. (For stacked field, order specify stack order.)\n return sortParams(order, {\n expr: 'datum'\n });\n } else if (isPathMark(mark)) {\n // For both line and area, we sort values based on dimension by default\n var dimensionChannel = markDef.orient === 'horizontal' ? 'y' : 'x';\n var dimensionChannelDef = encoding[dimensionChannel];\n if (isFieldDef(dimensionChannelDef)) {\n var s = dimensionChannelDef.sort;\n if (isArray(s)) {\n return {\n field: vgField(dimensionChannelDef, {\n prefix: dimensionChannel,\n suffix: 'sort_index',\n expr: 'datum'\n })\n };\n } else if (isSortField(s)) {\n return {\n field: vgField({\n // FIXME: this op might not already exist?\n // FIXME: what if dimensionChannel (x or y) contains custom domain?\n aggregate: isAggregate(model.encoding) ? s.op : undefined,\n field: s.field\n }, {\n expr: 'datum'\n })\n };\n } else if (isSortByEncoding(s)) {\n var fieldDefToSort = model.fieldDef(s.encoding);\n return {\n field: vgField(fieldDefToSort, {\n expr: 'datum'\n }),\n order: s.order\n };\n } else if (s === null) {\n return undefined;\n } else {\n var _model$stack;\n return {\n field: vgField(dimensionChannelDef, {\n // For stack with imputation, we only have bin_mid\n binSuffix: (_model$stack = model.stack) !== null && _model$stack !== void 0 && _model$stack.impute ? 'mid' : undefined,\n expr: 'datum'\n })\n };\n }\n }\n return undefined;\n }\n return undefined;\n}\nfunction getMarkGroup(model) {\n var opt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n fromPrefix: ''\n };\n var mark = model.mark,\n markDef = model.markDef,\n encoding = model.encoding,\n config = model.config;\n var clip = getFirstDefined(markDef.clip, scaleClip(model), projectionClip(model));\n var style = getStyles(markDef);\n var key = encoding.key;\n var sort = getSort(model);\n var interactive = interactiveFlag(model);\n var aria = getMarkPropOrConfig('aria', markDef, config);\n var postEncodingTransform = markCompiler[mark].postEncodingTransform ? markCompiler[mark].postEncodingTransform(model) : null;\n return [_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({\n name: model.getName('marks'),\n type: markCompiler[mark].vgMark\n }, clip ? {\n clip: true\n } : {}), style ? {\n style: style\n } : {}), key ? {\n key: key.field\n } : {}), sort ? {\n sort: sort\n } : {}), interactive ? interactive : {}), aria === false ? {\n aria: aria\n } : {}), {}, {\n from: {\n data: opt.fromPrefix + model.requestDataName(DataSourceType.Main)\n },\n encode: {\n update: markCompiler[mark].encodeEntry(model)\n }\n }, postEncodingTransform ? {\n transform: postEncodingTransform\n } : {})];\n}\n/**\n * If scales are bound to interval selections, we want to automatically clip\n * marks to account for panning/zooming interactions. We identify bound scales\n * by the selectionExtent property, which gets added during scale parsing.\n */\nfunction scaleClip(model) {\n var xScale = model.getScaleComponent('x');\n var yScale = model.getScaleComponent('y');\n return xScale !== null && xScale !== void 0 && xScale.get('selectionExtent') || yScale !== null && yScale !== void 0 && yScale.get('selectionExtent') ? true : undefined;\n}\n/**\n * If we use a custom projection with auto-fitting to the geodata extent,\n * we need to clip to ensure the chart size doesn't explode.\n */\nfunction projectionClip(model) {\n var projection = model.component.projection;\n return projection && !projection.isFit ? true : undefined;\n}\n/**\n * Only output interactive flags if we have selections defined somewhere in our model hierarchy.\n */\nfunction interactiveFlag(model) {\n if (!model.component.selection) return null;\n var unitCount = keys(model.component.selection).length;\n var parentCount = unitCount;\n var parent = model.parent;\n while (parent && parentCount === 0) {\n parentCount = keys(parent.component.selection).length;\n parent = parent.parent;\n }\n return parentCount ? {\n interactive: unitCount > 0 || model.mark === 'geoshape' || !!model.encoding.tooltip\n } : null;\n}","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { isArray } from 'vega-util';\nimport { isConditionalAxisValue } from '../axis';\nimport { GEOPOSITION_CHANNELS, NONPOSITION_SCALE_CHANNELS, POSITION_SCALE_CHANNELS, SCALE_CHANNELS, supportLegend, X, Y } from '../channel';\nimport { getFieldDef, getFieldOrDatumDef, isFieldOrDatumDef, isTypedFieldDef } from '../channeldef';\nimport { isGraticuleGenerator } from '../data';\nimport * as vlEncoding from '../encoding';\nimport { initEncoding } from '../encoding';\nimport { replaceExprRef } from '../expr';\nimport { GEOSHAPE, isMarkDef } from '../mark';\nimport { isSelectionParameter } from '../selection';\nimport { isFrameMixins } from '../spec/base';\nimport { stack } from '../stack';\nimport { keys } from '../util';\nimport { assembleAxisSignals } from './axis/assemble';\nimport { parseUnitAxes } from './axis/parse';\nimport { signalOrValueRefWithCondition, signalRefOrValue } from './common';\nimport { parseData as _parseData } from './data/parse';\nimport { assembleLayoutSignals as _assembleLayoutSignals } from './layoutsize/assemble';\nimport { initLayoutSize } from './layoutsize/init';\nimport { parseUnitLayoutSize } from './layoutsize/parse';\nimport { defaultFilled, initMarkdef } from './mark/init';\nimport { parseMarkGroups } from './mark/mark';\nimport { isLayerModel, ModelWithField } from './model';\nimport { assembleTopLevelSignals, assembleUnitSelectionData, assembleUnitSelectionMarks, assembleUnitSelectionSignals } from './selection/assemble';\nimport { parseUnitSelection } from './selection/parse';\n/**\n * Internal model of Vega-Lite specification for the compiler.\n */\nexport var UnitModel = /*#__PURE__*/function (_ModelWithField) {\n _inherits(UnitModel, _ModelWithField);\n var _super = _createSuper(UnitModel);\n function UnitModel(spec, parent, parentGivenName) {\n var _spec$params;\n var _this;\n var parentGivenSize = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var config = arguments.length > 4 ? arguments[4] : undefined;\n _classCallCheck(this, UnitModel);\n _this = _super.call(this, spec, 'unit', parent, parentGivenName, config, undefined, isFrameMixins(spec) ? spec.view : undefined);\n _this.specifiedScales = {};\n _this.specifiedAxes = {};\n _this.specifiedLegends = {};\n _this.specifiedProjection = {};\n _this.selection = [];\n _this.children = [];\n var markDef = isMarkDef(spec.mark) ? _objectSpread({}, spec.mark) : {\n type: spec.mark\n };\n var mark = markDef.type;\n // Need to init filled before other mark properties because encoding depends on filled but other mark properties depend on types inside encoding\n if (markDef.filled === undefined) {\n markDef.filled = defaultFilled(markDef, config, {\n graticule: spec.data && isGraticuleGenerator(spec.data)\n });\n }\n var encoding = _this.encoding = initEncoding(spec.encoding || {}, mark, markDef.filled, config);\n _this.markDef = initMarkdef(markDef, encoding, config);\n _this.size = initLayoutSize({\n encoding: encoding,\n size: isFrameMixins(spec) ? _objectSpread(_objectSpread(_objectSpread({}, parentGivenSize), spec.width ? {\n width: spec.width\n } : {}), spec.height ? {\n height: spec.height\n } : {}) : parentGivenSize\n });\n // calculate stack properties\n _this.stack = stack(_this.markDef, encoding);\n _this.specifiedScales = _this.initScales(mark, encoding);\n _this.specifiedAxes = _this.initAxes(encoding);\n _this.specifiedLegends = _this.initLegends(encoding);\n _this.specifiedProjection = spec.projection;\n // Selections will be initialized upon parse.\n _this.selection = ((_spec$params = spec.params) !== null && _spec$params !== void 0 ? _spec$params : []).filter(function (p) {\n return isSelectionParameter(p);\n });\n return _this;\n }\n _createClass(UnitModel, [{\n key: \"hasProjection\",\n get: function get() {\n var encoding = this.encoding;\n var isGeoShapeMark = this.mark === GEOSHAPE;\n var hasGeoPosition = encoding && GEOPOSITION_CHANNELS.some(function (channel) {\n return isFieldOrDatumDef(encoding[channel]);\n });\n return isGeoShapeMark || hasGeoPosition;\n }\n /**\n * Return specified Vega-Lite scale domain for a particular channel\n * @param channel\n */\n }, {\n key: \"scaleDomain\",\n value: function scaleDomain(channel) {\n var scale = this.specifiedScales[channel];\n return scale ? scale.domain : undefined;\n }\n }, {\n key: \"axis\",\n value: function axis(channel) {\n return this.specifiedAxes[channel];\n }\n }, {\n key: \"legend\",\n value: function legend(channel) {\n return this.specifiedLegends[channel];\n }\n }, {\n key: \"initScales\",\n value: function initScales(mark, encoding) {\n var _this2 = this;\n return SCALE_CHANNELS.reduce(function (scales, channel) {\n var fieldOrDatumDef = getFieldOrDatumDef(encoding[channel]);\n if (fieldOrDatumDef) {\n var _fieldOrDatumDef$scal;\n scales[channel] = _this2.initScale((_fieldOrDatumDef$scal = fieldOrDatumDef.scale) !== null && _fieldOrDatumDef$scal !== void 0 ? _fieldOrDatumDef$scal : {});\n }\n return scales;\n }, {});\n }\n }, {\n key: \"initScale\",\n value: function initScale(scale) {\n var domain = scale.domain,\n range = scale.range;\n // TODO: we could simplify this function if we had a recursive replace function\n var scaleInternal = replaceExprRef(scale);\n if (isArray(domain)) {\n scaleInternal.domain = domain.map(signalRefOrValue);\n }\n if (isArray(range)) {\n scaleInternal.range = range.map(signalRefOrValue);\n }\n return scaleInternal;\n }\n }, {\n key: \"initAxes\",\n value: function initAxes(encoding) {\n var _this3 = this;\n return POSITION_SCALE_CHANNELS.reduce(function (_axis, channel) {\n // Position Axis\n // TODO: handle ConditionFieldDef\n var channelDef = encoding[channel];\n if (isFieldOrDatumDef(channelDef) || channel === X && isFieldOrDatumDef(encoding.x2) || channel === Y && isFieldOrDatumDef(encoding.y2)) {\n var axisSpec = isFieldOrDatumDef(channelDef) ? channelDef.axis : undefined;\n _axis[channel] = axisSpec ? _this3.initAxis(_objectSpread({}, axisSpec)) // convert truthy value to object\n : axisSpec;\n }\n return _axis;\n }, {});\n }\n }, {\n key: \"initAxis\",\n value: function initAxis(axis) {\n var props = keys(axis);\n var axisInternal = {};\n var _iterator = _createForOfIteratorHelper(props),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var prop = _step.value;\n var val = axis[prop];\n axisInternal[prop] = isConditionalAxisValue(val) ? signalOrValueRefWithCondition(val) : signalRefOrValue(val);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return axisInternal;\n }\n }, {\n key: \"initLegends\",\n value: function initLegends(encoding) {\n return NONPOSITION_SCALE_CHANNELS.reduce(function (_legend, channel) {\n var fieldOrDatumDef = getFieldOrDatumDef(encoding[channel]);\n if (fieldOrDatumDef && supportLegend(channel)) {\n var legend = fieldOrDatumDef.legend;\n _legend[channel] = legend ? replaceExprRef(legend) // convert truthy value to object\n : legend;\n }\n return _legend;\n }, {});\n }\n }, {\n key: \"parseData\",\n value: function parseData() {\n this.component.data = _parseData(this);\n }\n }, {\n key: \"parseLayoutSize\",\n value: function parseLayoutSize() {\n parseUnitLayoutSize(this);\n }\n }, {\n key: \"parseSelections\",\n value: function parseSelections() {\n this.component.selection = parseUnitSelection(this, this.selection);\n }\n }, {\n key: \"parseMarkGroup\",\n value: function parseMarkGroup() {\n this.component.mark = parseMarkGroups(this);\n }\n }, {\n key: \"parseAxesAndHeaders\",\n value: function parseAxesAndHeaders() {\n this.component.axes = parseUnitAxes(this);\n }\n }, {\n key: \"assembleSelectionTopLevelSignals\",\n value: function assembleSelectionTopLevelSignals(signals) {\n return assembleTopLevelSignals(this, signals);\n }\n }, {\n key: \"assembleSignals\",\n value: function assembleSignals() {\n return [].concat(_toConsumableArray(assembleAxisSignals(this)), _toConsumableArray(assembleUnitSelectionSignals(this, [])));\n }\n }, {\n key: \"assembleSelectionData\",\n value: function assembleSelectionData(data) {\n return assembleUnitSelectionData(this, data);\n }\n }, {\n key: \"assembleLayout\",\n value: function assembleLayout() {\n return null;\n }\n }, {\n key: \"assembleLayoutSignals\",\n value: function assembleLayoutSignals() {\n return _assembleLayoutSignals(this);\n }\n }, {\n key: \"assembleMarks\",\n value: function assembleMarks() {\n var _this$component$mark;\n var marks = (_this$component$mark = this.component.mark) !== null && _this$component$mark !== void 0 ? _this$component$mark : [];\n // If this unit is part of a layer, selections should augment\n // all in concert rather than each unit individually. This\n // ensures correct interleaving of clipping and brushed marks.\n if (!this.parent || !isLayerModel(this.parent)) {\n marks = assembleUnitSelectionMarks(this, marks);\n }\n return marks.map(this.correctDataNames);\n }\n }, {\n key: \"assembleGroupStyle\",\n value: function assembleGroupStyle() {\n var _ref = this.view || {},\n style = _ref.style;\n if (style !== undefined) {\n return style;\n }\n if (this.encoding.x || this.encoding.y) {\n return 'cell';\n } else {\n return 'view';\n }\n }\n }, {\n key: \"getMapping\",\n value: function getMapping() {\n return this.encoding;\n }\n }, {\n key: \"mark\",\n get: function get() {\n return this.markDef.type;\n }\n }, {\n key: \"channelHasField\",\n value: function channelHasField(channel) {\n return vlEncoding.channelHasField(this.encoding, channel);\n }\n }, {\n key: \"fieldDef\",\n value: function fieldDef(channel) {\n var channelDef = this.encoding[channel];\n return getFieldDef(channelDef);\n }\n }, {\n key: \"typedFieldDef\",\n value: function typedFieldDef(channel) {\n var fieldDef = this.fieldDef(channel);\n if (isTypedFieldDef(fieldDef)) {\n return fieldDef;\n }\n return null;\n }\n }]);\n return UnitModel;\n}(ModelWithField);","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _assertThisInitialized from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js\";\nimport _get from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/get.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nimport \"core-js/modules/es.array.flat-map.js\";\nimport \"core-js/modules/es.array.unscopables.flat-map.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { array } from 'vega-util';\nimport * as log from '../log';\nimport { isLayerSpec, isUnitSpec } from '../spec';\nimport { keys } from '../util';\nimport { assembleAxisSignals } from './axis/assemble';\nimport { parseLayerAxes } from './axis/parse';\nimport { parseData as _parseData } from './data/parse';\nimport { assembleLayoutSignals as _assembleLayoutSignals } from './layoutsize/assemble';\nimport { parseLayerLayoutSize } from './layoutsize/parse';\nimport { assembleLegends as _assembleLegends } from './legend/assemble';\nimport { Model } from './model';\nimport { assembleLayerSelectionMarks } from './selection/assemble';\nimport { UnitModel } from './unit';\nexport var LayerModel = /*#__PURE__*/function (_Model) {\n _inherits(LayerModel, _Model);\n var _super = _createSuper(LayerModel);\n function LayerModel(spec, parent, parentGivenName, parentGivenSize, config) {\n var _this;\n _classCallCheck(this, LayerModel);\n _this = _super.call(this, spec, 'layer', parent, parentGivenName, config, spec.resolve, spec.view);\n var layoutSize = _objectSpread(_objectSpread(_objectSpread({}, parentGivenSize), spec.width ? {\n width: spec.width\n } : {}), spec.height ? {\n height: spec.height\n } : {});\n _this.children = spec.layer.map(function (layer, i) {\n if (isLayerSpec(layer)) {\n return new LayerModel(layer, _assertThisInitialized(_this), _this.getName(\"layer_\".concat(i)), layoutSize, config);\n } else if (isUnitSpec(layer)) {\n return new UnitModel(layer, _assertThisInitialized(_this), _this.getName(\"layer_\".concat(i)), layoutSize, config);\n }\n throw new Error(log.message.invalidSpec(layer));\n });\n return _this;\n }\n _createClass(LayerModel, [{\n key: \"parseData\",\n value: function parseData() {\n this.component.data = _parseData(this);\n var _iterator = _createForOfIteratorHelper(this.children),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var child = _step.value;\n child.parseData();\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n }, {\n key: \"parseLayoutSize\",\n value: function parseLayoutSize() {\n parseLayerLayoutSize(this);\n }\n }, {\n key: \"parseSelections\",\n value: function parseSelections() {\n // Merge selections up the hierarchy so that they may be referenced\n // across unit specs. Persist their definitions within each child\n // to assemble signals which remain within output Vega unit groups.\n this.component.selection = {};\n var _iterator2 = _createForOfIteratorHelper(this.children),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var child = _step2.value;\n child.parseSelections();\n var _iterator3 = _createForOfIteratorHelper(keys(child.component.selection)),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var key = _step3.value;\n this.component.selection[key] = child.component.selection[key];\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n }, {\n key: \"parseMarkGroup\",\n value: function parseMarkGroup() {\n var _iterator4 = _createForOfIteratorHelper(this.children),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var child = _step4.value;\n child.parseMarkGroup();\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n }\n }, {\n key: \"parseAxesAndHeaders\",\n value: function parseAxesAndHeaders() {\n parseLayerAxes(this);\n }\n }, {\n key: \"assembleSelectionTopLevelSignals\",\n value: function assembleSelectionTopLevelSignals(signals) {\n return this.children.reduce(function (sg, child) {\n return child.assembleSelectionTopLevelSignals(sg);\n }, signals);\n }\n // TODO: Support same named selections across children.\n }, {\n key: \"assembleSignals\",\n value: function assembleSignals() {\n return this.children.reduce(function (signals, child) {\n return signals.concat(child.assembleSignals());\n }, assembleAxisSignals(this));\n }\n }, {\n key: \"assembleLayoutSignals\",\n value: function assembleLayoutSignals() {\n return this.children.reduce(function (signals, child) {\n return signals.concat(child.assembleLayoutSignals());\n }, _assembleLayoutSignals(this));\n }\n }, {\n key: \"assembleSelectionData\",\n value: function assembleSelectionData(data) {\n return this.children.reduce(function (db, child) {\n return child.assembleSelectionData(db);\n }, data);\n }\n }, {\n key: \"assembleGroupStyle\",\n value: function assembleGroupStyle() {\n var uniqueStyles = new Set();\n var _iterator5 = _createForOfIteratorHelper(this.children),\n _step5;\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var child = _step5.value;\n var _iterator6 = _createForOfIteratorHelper(array(child.assembleGroupStyle())),\n _step6;\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var style = _step6.value;\n uniqueStyles.add(style);\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n var styles = Array.from(uniqueStyles);\n return styles.length > 1 ? styles : styles.length === 1 ? styles[0] : undefined;\n }\n }, {\n key: \"assembleTitle\",\n value: function assembleTitle() {\n var title = _get(_getPrototypeOf(LayerModel.prototype), \"assembleTitle\", this).call(this);\n if (title) {\n return title;\n }\n // If title does not provide layer, look into children\n var _iterator7 = _createForOfIteratorHelper(this.children),\n _step7;\n try {\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n var child = _step7.value;\n title = child.assembleTitle();\n if (title) {\n return title;\n }\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n return undefined;\n }\n }, {\n key: \"assembleLayout\",\n value: function assembleLayout() {\n return null;\n }\n }, {\n key: \"assembleMarks\",\n value: function assembleMarks() {\n return assembleLayerSelectionMarks(this, this.children.flatMap(function (child) {\n return child.assembleMarks();\n }));\n }\n }, {\n key: \"assembleLegends\",\n value: function assembleLegends() {\n return this.children.reduce(function (legends, child) {\n return legends.concat(child.assembleLegends());\n }, _assembleLegends(this));\n }\n }]);\n return LayerModel;\n}(Model);","import * as log from '../log';\nimport { isAnyConcatSpec, isFacetSpec, isLayerSpec, isUnitSpec } from '../spec';\nimport { ConcatModel } from './concat';\nimport { FacetModel } from './facet';\nimport { LayerModel } from './layer';\nimport { UnitModel } from './unit';\nexport function buildModel(spec, parent, parentGivenName, unitSize, config) {\n if (isFacetSpec(spec)) {\n return new FacetModel(spec, parent, parentGivenName, config);\n } else if (isLayerSpec(spec)) {\n return new LayerModel(spec, parent, parentGivenName, unitSize, config);\n } else if (isUnitSpec(spec)) {\n return new UnitModel(spec, parent, parentGivenName, unitSize, config);\n } else if (isAnyConcatSpec(spec)) {\n return new ConcatModel(spec, parent, parentGivenName, config);\n }\n throw new Error(log.message.invalidSpec(spec));\n}","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nvar _excluded = [\"params\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { isString, mergeConfig } from 'vega-util';\nimport { getPositionScaleChannel } from '../channel';\nimport * as vlFieldDef from '../channeldef';\nimport { initConfig, stripAndRedirectConfig } from '../config';\nimport * as log from '../log';\nimport { normalize } from '../normalize';\nimport { assembleParameterSignals } from '../parameter';\nimport { extractTopLevelProperties, getFitType, isFitType } from '../spec/toplevel';\nimport { keys } from '../util';\nimport { buildModel } from './buildmodel';\nimport { assembleRootData } from './data/assemble';\nimport { optimizeDataflow } from './data/optimize';\n/**\n * Vega-Lite's main function, for compiling Vega-Lite spec into Vega spec.\n *\n * At a high-level, we make the following transformations in different phases:\n *\n * Input spec\n * |\n * | (Normalization)\n * v\n * Normalized Spec (Row/Column channels in single-view specs becomes faceted specs, composite marks becomes layered specs.)\n * |\n * | (Build Model)\n * v\n * A model tree of the spec\n * |\n * | (Parse)\n * v\n * A model tree with parsed components (intermediate structure of visualization primitives in a format that can be easily merged)\n * |\n * | (Optimize)\n * v\n * A model tree with parsed components with the data component optimized\n * |\n * | (Assemble)\n * v\n * Vega spec\n *\n * @param inputSpec The Vega-Lite specification.\n * @param opt Optional arguments passed to the Vega-Lite compiler.\n * @returns An object containing the compiled Vega spec and normalized Vega-Lite spec.\n */\nexport function compile(inputSpec) {\n var opt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // 0. Augment opt with default opts\n if (opt.logger) {\n // set the singleton logger to the provided logger\n log.set(opt.logger);\n }\n if (opt.fieldTitle) {\n // set the singleton field title formatter\n vlFieldDef.setTitleFormatter(opt.fieldTitle);\n }\n try {\n // 1. Initialize config by deep merging default config with the config provided via option and the input spec.\n var config = initConfig(mergeConfig(opt.config, inputSpec.config));\n // 2. Normalize: Convert input spec -> normalized spec\n // - Decompose all extended unit specs into composition of unit spec. For example, a box plot get expanded into multiple layers of bars, ticks, and rules. The shorthand row/column channel is also expanded to a facet spec.\n // - Normalize autosize and width or height spec\n var spec = normalize(inputSpec, config);\n // 3. Build Model: normalized spec -> Model (a tree structure)\n // This phases instantiates the models with default config by doing a top-down traversal. This allows us to pass properties that child models derive from their parents via their constructors.\n // See the abstract `Model` class and its children (UnitModel, LayerModel, FacetModel, ConcatModel) for different types of models.\n var model = buildModel(spec, null, '', undefined, config);\n // 4 Parse: Model --> Model with components\n // Note that components = intermediate representations that are equivalent to Vega specs.\n // We need these intermediate representation because we need to merge many visualization \"components\" like projections, scales, axes, and legends.\n // We will later convert these components into actual Vega specs in the assemble phase.\n // In this phase, we do a bottom-up traversal over the whole tree to\n // parse for each type of components once (e.g., data, layout, mark, scale).\n // By doing bottom-up traversal, we start parsing components of unit specs and\n // then merge child components of parent composite specs.\n //\n // Please see inside model.parse() for order of different components parsed.\n model.parse();\n // drawDataflow(model.component.data.sources);\n // 5. Optimize the dataflow. This will modify the data component of the model.\n optimizeDataflow(model.component.data, model);\n // drawDataflow(model.component.data.sources);\n // 6. Assemble: convert model components --> Vega Spec.\n var vgSpec = assembleTopLevelModel(model, getTopLevelProperties(inputSpec, spec.autosize, config, model), inputSpec.datasets, inputSpec.usermeta);\n return {\n spec: vgSpec,\n normalized: spec\n };\n } finally {\n // Reset the singleton logger if a logger is provided\n if (opt.logger) {\n log.reset();\n }\n // Reset the singleton field title formatter if provided\n if (opt.fieldTitle) {\n vlFieldDef.resetTitleFormatter();\n }\n }\n}\nfunction getTopLevelProperties(inputSpec, autosize, config, model) {\n var width = model.component.layoutSize.get('width');\n var height = model.component.layoutSize.get('height');\n if (autosize === undefined) {\n autosize = {\n type: 'pad'\n };\n if (model.hasAxisOrientSignalRef()) {\n autosize.resize = true;\n }\n } else if (isString(autosize)) {\n autosize = {\n type: autosize\n };\n }\n if (width && height && isFitType(autosize.type)) {\n if (width === 'step' && height === 'step') {\n log.warn(log.message.droppingFit());\n autosize.type = 'pad';\n } else if (width === 'step' || height === 'step') {\n // effectively XOR, because else if\n // get step dimension\n var sizeType = width === 'step' ? 'width' : 'height';\n // log that we're dropping fit for respective channel\n log.warn(log.message.droppingFit(getPositionScaleChannel(sizeType)));\n // setting type to inverse fit (so if we dropped fit-x, type is now fit-y)\n var inverseSizeType = sizeType === 'width' ? 'height' : 'width';\n autosize.type = getFitType(inverseSizeType);\n }\n }\n return _objectSpread(_objectSpread(_objectSpread({}, keys(autosize).length === 1 && autosize.type ? autosize.type === 'pad' ? {} : {\n autosize: autosize.type\n } : {\n autosize: autosize\n }), extractTopLevelProperties(config, false)), extractTopLevelProperties(inputSpec, true));\n}\n/*\n * Assemble the top-level model to a Vega spec.\n *\n * Note: this couldn't be `model.assemble()` since the top-level model\n * needs some special treatment to generate top-level properties.\n */\nfunction assembleTopLevelModel(model, topLevelProperties) {\n var datasets = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var usermeta = arguments.length > 3 ? arguments[3] : undefined;\n // Config with Vega-Lite only config removed.\n var vgConfig = model.config ? stripAndRedirectConfig(model.config) : undefined;\n var data = [].concat(model.assembleSelectionData([]),\n // only assemble data in the root\n assembleRootData(model.component.data, datasets));\n var projections = model.assembleProjections();\n var title = model.assembleTitle();\n var style = model.assembleGroupStyle();\n var encodeEntry = model.assembleGroupEncodeEntry(true);\n var layoutSignals = model.assembleLayoutSignals();\n // move width and height signals with values to top level\n layoutSignals = layoutSignals.filter(function (signal) {\n if ((signal.name === 'width' || signal.name === 'height') && signal.value !== undefined) {\n topLevelProperties[signal.name] = +signal.value;\n return false;\n }\n return true;\n });\n var params = topLevelProperties.params,\n otherTopLevelProps = _objectWithoutProperties(topLevelProperties, _excluded);\n return _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({\n $schema: 'https://vega.github.io/schema/vega/v5.json'\n }, model.description ? {\n description: model.description\n } : {}), otherTopLevelProps), title ? {\n title: title\n } : {}), style ? {\n style: style\n } : {}), encodeEntry ? {\n encode: {\n update: encodeEntry\n }\n } : {}), {}, {\n data: data\n }, projections.length > 0 ? {\n projections: projections\n } : {}), model.assembleGroup([].concat(_toConsumableArray(layoutSignals), _toConsumableArray(model.assembleSelectionTopLevelSignals([])), _toConsumableArray(assembleParameterSignals(params))))), vgConfig ? {\n config: vgConfig\n } : {}), usermeta ? {\n usermeta: usermeta\n } : {});\n}","import pkg from '../package.json';\nexport var version = pkg.version;\nexport { compile } from './compile/compile';\nexport { normalize } from './normalize';\nexport * from './util';","import _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nfunction e(e) {\n var _exec$slice = /schema\\/([\\w-]+)\\/([\\w\\.\\-]+)\\.json$/g.exec(e).slice(1, 3),\n _exec$slice2 = _slicedToArray(_exec$slice, 2),\n n = _exec$slice2[0],\n r = _exec$slice2[1];\n return {\n library: n,\n version: r\n };\n}\nexport default e;","var name = \"vega-themes\";\nvar version$1 = \"2.14.0\";\nvar description = \"Themes for stylized Vega and Vega-Lite visualizations.\";\nvar keywords = [\"vega\", \"vega-lite\", \"themes\", \"style\"];\nvar license = \"BSD-3-Clause\";\nvar author = {\n name: \"UW Interactive Data Lab\",\n url: \"https://idl.cs.washington.edu\"\n};\nvar contributors = [{\n name: \"Emily Gu\",\n url: \"https://github.com/emilygu\"\n}, {\n name: \"Arvind Satyanarayan\",\n url: \"http://arvindsatya.com\"\n}, {\n name: \"Jeffrey Heer\",\n url: \"https://idl.cs.washington.edu\"\n}, {\n name: \"Dominik Moritz\",\n url: \"https://www.domoritz.de\"\n}];\nvar main = \"build/vega-themes.js\";\nvar module = \"build/vega-themes.module.js\";\nvar unpkg = \"build/vega-themes.min.js\";\nvar jsdelivr = \"build/vega-themes.min.js\";\nvar types = \"build/vega-themes.module.d.ts\";\nvar repository = {\n type: \"git\",\n url: \"https://github.com/vega/vega-themes.git\"\n};\nvar files = [\"src\", \"build\"];\nvar scripts = {\n prebuild: \"yarn clean\",\n build: \"rollup -c\",\n clean: \"rimraf build && rimraf examples/build\",\n \"copy:data\": \"rsync -r node_modules/vega-datasets/data/* examples/data\",\n \"copy:build\": \"rsync -r build/* examples/build\",\n \"deploy:gh\": \"yarn build && mkdir -p examples/build && rsync -r build/* examples/build && gh-pages -d examples\",\n preversion: \"yarn lint\",\n serve: \"browser-sync start -s -f build examples --serveStatic examples\",\n start: \"yarn build && concurrently --kill-others -n Server,Rollup 'yarn serve' 'rollup -c -w'\",\n format: \"eslint . --fix\",\n lint: \"eslint .\",\n release: \"release-it\"\n};\nvar devDependencies = {\n \"@babel/core\": \"^7.22.9\",\n \"@babel/plugin-proposal-async-generator-functions\": \"^7.20.7\",\n \"@babel/plugin-proposal-json-strings\": \"^7.18.6\",\n \"@babel/plugin-proposal-object-rest-spread\": \"^7.20.7\",\n \"@babel/plugin-proposal-optional-catch-binding\": \"^7.18.6\",\n \"@babel/plugin-transform-runtime\": \"^7.22.9\",\n \"@babel/preset-env\": \"^7.22.9\",\n \"@babel/preset-typescript\": \"^7.22.5\",\n \"@release-it/conventional-changelog\": \"^7.0.0\",\n \"@rollup/plugin-json\": \"^6.0.0\",\n \"@rollup/plugin-node-resolve\": \"^15.1.0\",\n \"@rollup/plugin-terser\": \"^0.4.3\",\n \"@typescript-eslint/eslint-plugin\": \"^6.0.0\",\n \"@typescript-eslint/parser\": \"^6.0.0\",\n \"browser-sync\": \"^2.29.3\",\n concurrently: \"^8.2.0\",\n eslint: \"^8.45.0\",\n \"eslint-config-prettier\": \"^8.8.0\",\n \"eslint-plugin-prettier\": \"^5.0.0\",\n \"gh-pages\": \"^5.0.0\",\n prettier: \"^3.0.0\",\n \"release-it\": \"^16.1.0\",\n rollup: \"^3.26.2\",\n \"rollup-plugin-bundle-size\": \"^1.0.3\",\n \"rollup-plugin-ts\": \"^3.2.0\",\n typescript: \"^5.1.6\",\n vega: \"^5.25.0\",\n \"vega-lite\": \"^5.9.3\"\n};\nvar peerDependencies = {\n vega: \"*\",\n \"vega-lite\": \"*\"\n};\nvar dependencies = {};\nvar pkg = {\n name: name,\n version: version$1,\n description: description,\n keywords: keywords,\n license: license,\n author: author,\n contributors: contributors,\n main: main,\n module: module,\n unpkg: unpkg,\n jsdelivr: jsdelivr,\n types: types,\n repository: repository,\n files: files,\n scripts: scripts,\n devDependencies: devDependencies,\n peerDependencies: peerDependencies,\n dependencies: dependencies\n};\nvar lightColor = '#fff';\nvar medColor = '#888';\nvar darkTheme = {\n background: '#333',\n view: {\n stroke: medColor\n },\n title: {\n color: lightColor,\n subtitleColor: lightColor\n },\n style: {\n 'guide-label': {\n fill: lightColor\n },\n 'guide-title': {\n fill: lightColor\n }\n },\n axis: {\n domainColor: lightColor,\n gridColor: medColor,\n tickColor: lightColor\n }\n};\nvar markColor$7 = '#4572a7';\nvar excelTheme = {\n background: '#fff',\n arc: {\n fill: markColor$7\n },\n area: {\n fill: markColor$7\n },\n line: {\n stroke: markColor$7,\n strokeWidth: 2\n },\n path: {\n stroke: markColor$7\n },\n rect: {\n fill: markColor$7\n },\n shape: {\n stroke: markColor$7\n },\n symbol: {\n fill: markColor$7,\n strokeWidth: 1.5,\n size: 50\n },\n axis: {\n bandPosition: 0.5,\n grid: true,\n gridColor: '#000000',\n gridOpacity: 1,\n gridWidth: 0.5,\n labelPadding: 10,\n tickSize: 5,\n tickWidth: 0.5\n },\n axisBand: {\n grid: false,\n tickExtra: true\n },\n legend: {\n labelBaseline: 'middle',\n labelFontSize: 11,\n symbolSize: 50,\n symbolType: 'square'\n },\n range: {\n category: ['#4572a7', '#aa4643', '#8aa453', '#71598e', '#4598ae', '#d98445', '#94aace', '#d09393', '#b9cc98', '#a99cbc']\n }\n};\nvar markColor$6 = '#30a2da';\nvar axisColor$2 = '#cbcbcb';\nvar guideLabelColor = '#999';\nvar guideTitleColor = '#333';\nvar backgroundColor$2 = '#f0f0f0';\nvar blackTitle = '#333';\nvar fiveThirtyEightTheme = {\n arc: {\n fill: markColor$6\n },\n area: {\n fill: markColor$6\n },\n axis: {\n domainColor: axisColor$2,\n grid: true,\n gridColor: axisColor$2,\n gridWidth: 1,\n labelColor: guideLabelColor,\n labelFontSize: 10,\n titleColor: guideTitleColor,\n tickColor: axisColor$2,\n tickSize: 10,\n titleFontSize: 14,\n titlePadding: 10,\n labelPadding: 4\n },\n axisBand: {\n grid: false\n },\n background: backgroundColor$2,\n group: {\n fill: backgroundColor$2\n },\n legend: {\n labelColor: blackTitle,\n labelFontSize: 11,\n padding: 1,\n symbolSize: 30,\n symbolType: 'square',\n titleColor: blackTitle,\n titleFontSize: 14,\n titlePadding: 10\n },\n line: {\n stroke: markColor$6,\n strokeWidth: 2\n },\n path: {\n stroke: markColor$6,\n strokeWidth: 0.5\n },\n rect: {\n fill: markColor$6\n },\n range: {\n category: ['#30a2da', '#fc4f30', '#e5ae38', '#6d904f', '#8b8b8b', '#b96db8', '#ff9e27', '#56cc60', '#52d2ca', '#52689e', '#545454', '#9fe4f8'],\n diverging: ['#cc0020', '#e77866', '#f6e7e1', '#d6e8ed', '#91bfd9', '#1d78b5'],\n heatmap: ['#d6e8ed', '#cee0e5', '#91bfd9', '#549cc6', '#1d78b5']\n },\n point: {\n filled: true,\n shape: 'circle'\n },\n shape: {\n stroke: markColor$6\n },\n bar: {\n binSpacing: 2,\n fill: markColor$6,\n stroke: null\n },\n title: {\n anchor: 'start',\n fontSize: 24,\n fontWeight: 600,\n offset: 20\n }\n};\nvar markColor$5 = '#000';\nvar ggplot2Theme = {\n group: {\n fill: '#e5e5e5'\n },\n arc: {\n fill: markColor$5\n },\n area: {\n fill: markColor$5\n },\n line: {\n stroke: markColor$5\n },\n path: {\n stroke: markColor$5\n },\n rect: {\n fill: markColor$5\n },\n shape: {\n stroke: markColor$5\n },\n symbol: {\n fill: markColor$5,\n size: 40\n },\n axis: {\n domain: false,\n grid: true,\n gridColor: '#FFFFFF',\n gridOpacity: 1,\n labelColor: '#7F7F7F',\n labelPadding: 4,\n tickColor: '#7F7F7F',\n tickSize: 5.67,\n titleFontSize: 16,\n titleFontWeight: 'normal'\n },\n legend: {\n labelBaseline: 'middle',\n labelFontSize: 11,\n symbolSize: 40\n },\n range: {\n category: ['#000000', '#7F7F7F', '#1A1A1A', '#999999', '#333333', '#B0B0B0', '#4D4D4D', '#C9C9C9', '#666666', '#DCDCDC']\n }\n};\nvar headlineFontSize = 22;\nvar headlineFontWeight = 'normal';\nvar labelFont$1 = 'Benton Gothic, sans-serif';\nvar labelFontSize = 11.5;\nvar labelFontWeight = 'normal';\nvar markColor$4 = '#82c6df';\n// const markHighlight = '#006d8f';\n// const markDemocrat = '#5789b8';\n// const markRepublican = '#d94f54';\nvar titleFont = 'Benton Gothic Bold, sans-serif';\nvar titleFontWeight = 'normal';\nvar titleFontSize$1 = 13;\nvar colorSchemes$1 = {\n 'category-6': ['#ec8431', '#829eb1', '#c89d29', '#3580b1', '#adc839', '#ab7fb4'],\n 'fire-7': ['#fbf2c7', '#f9e39c', '#f8d36e', '#f4bb6a', '#e68a4f', '#d15a40', '#ab4232'],\n 'fireandice-6': ['#e68a4f', '#f4bb6a', '#f9e39c', '#dadfe2', '#a6b7c6', '#849eae'],\n 'ice-7': ['#edefee', '#dadfe2', '#c4ccd2', '#a6b7c6', '#849eae', '#607785', '#47525d']\n};\nvar latimesTheme = {\n background: '#ffffff',\n title: {\n anchor: 'start',\n color: '#000000',\n font: titleFont,\n fontSize: headlineFontSize,\n fontWeight: headlineFontWeight\n },\n arc: {\n fill: markColor$4\n },\n area: {\n fill: markColor$4\n },\n line: {\n stroke: markColor$4,\n strokeWidth: 2\n },\n path: {\n stroke: markColor$4\n },\n rect: {\n fill: markColor$4\n },\n shape: {\n stroke: markColor$4\n },\n symbol: {\n fill: markColor$4,\n size: 30\n },\n axis: {\n labelFont: labelFont$1,\n labelFontSize: labelFontSize,\n labelFontWeight: labelFontWeight,\n titleFont: titleFont,\n titleFontSize: titleFontSize$1,\n titleFontWeight: titleFontWeight\n },\n axisX: {\n labelAngle: 0,\n labelPadding: 4,\n tickSize: 3\n },\n axisY: {\n labelBaseline: 'middle',\n maxExtent: 45,\n minExtent: 45,\n tickSize: 2,\n titleAlign: 'left',\n titleAngle: 0,\n titleX: -45,\n titleY: -11\n },\n legend: {\n labelFont: labelFont$1,\n labelFontSize: labelFontSize,\n symbolType: 'square',\n titleFont: titleFont,\n titleFontSize: titleFontSize$1,\n titleFontWeight: titleFontWeight\n },\n range: {\n category: colorSchemes$1['category-6'],\n diverging: colorSchemes$1['fireandice-6'],\n heatmap: colorSchemes$1['fire-7'],\n ordinal: colorSchemes$1['fire-7'],\n ramp: colorSchemes$1['fire-7']\n }\n};\nvar markColor$3 = '#ab5787';\nvar axisColor$1 = '#979797';\nvar quartzTheme = {\n background: '#f9f9f9',\n arc: {\n fill: markColor$3\n },\n area: {\n fill: markColor$3\n },\n line: {\n stroke: markColor$3\n },\n path: {\n stroke: markColor$3\n },\n rect: {\n fill: markColor$3\n },\n shape: {\n stroke: markColor$3\n },\n symbol: {\n fill: markColor$3,\n size: 30\n },\n axis: {\n domainColor: axisColor$1,\n domainWidth: 0.5,\n gridWidth: 0.2,\n labelColor: axisColor$1,\n tickColor: axisColor$1,\n tickWidth: 0.2,\n titleColor: axisColor$1\n },\n axisBand: {\n grid: false\n },\n axisX: {\n grid: true,\n tickSize: 10\n },\n axisY: {\n domain: false,\n grid: true,\n tickSize: 0\n },\n legend: {\n labelFontSize: 11,\n padding: 1,\n symbolSize: 30,\n symbolType: 'square'\n },\n range: {\n category: ['#ab5787', '#51b2e5', '#703c5c', '#168dd9', '#d190b6', '#00609f', '#d365ba', '#154866', '#666666', '#c4c4c4']\n }\n};\nvar markColor$2 = '#3e5c69';\nvar voxTheme = {\n background: '#fff',\n arc: {\n fill: markColor$2\n },\n area: {\n fill: markColor$2\n },\n line: {\n stroke: markColor$2\n },\n path: {\n stroke: markColor$2\n },\n rect: {\n fill: markColor$2\n },\n shape: {\n stroke: markColor$2\n },\n symbol: {\n fill: markColor$2\n },\n axis: {\n domainWidth: 0.5,\n grid: true,\n labelPadding: 2,\n tickSize: 5,\n tickWidth: 0.5,\n titleFontWeight: 'normal'\n },\n axisBand: {\n grid: false\n },\n axisX: {\n gridWidth: 0.2\n },\n axisY: {\n gridDash: [3],\n gridWidth: 0.4\n },\n legend: {\n labelFontSize: 11,\n padding: 1,\n symbolType: 'square'\n },\n range: {\n category: ['#3e5c69', '#6793a6', '#182429', '#0570b0', '#3690c0', '#74a9cf', '#a6bddb', '#e2ddf2']\n }\n};\nvar markColor$1 = '#1696d2';\nvar axisColor = '#000000';\nvar backgroundColor$1 = '#FFFFFF';\nvar font = 'Lato';\nvar labelFont = 'Lato';\nvar sourceFont = 'Lato';\nvar gridColor$1 = '#DEDDDD';\nvar titleFontSize = 18;\nvar colorSchemes = {\n 'main-colors': ['#1696d2', '#d2d2d2', '#000000', '#fdbf11', '#ec008b', '#55b748', '#5c5859', '#db2b27'],\n 'shades-blue': ['#CFE8F3', '#A2D4EC', '#73BFE2', '#46ABDB', '#1696D2', '#12719E', '#0A4C6A', '#062635'],\n 'shades-gray': ['#F5F5F5', '#ECECEC', '#E3E3E3', '#DCDBDB', '#D2D2D2', '#9D9D9D', '#696969', '#353535'],\n 'shades-yellow': ['#FFF2CF', '#FCE39E', '#FDD870', '#FCCB41', '#FDBF11', '#E88E2D', '#CA5800', '#843215'],\n 'shades-magenta': ['#F5CBDF', '#EB99C2', '#E46AA7', '#E54096', '#EC008B', '#AF1F6B', '#761548', '#351123'],\n 'shades-green': ['#DCEDD9', '#BCDEB4', '#98CF90', '#78C26D', '#55B748', '#408941', '#2C5C2D', '#1A2E19'],\n 'shades-black': ['#D5D5D4', '#ADABAC', '#848081', '#5C5859', '#332D2F', '#262223', '#1A1717', '#0E0C0D'],\n 'shades-red': ['#F8D5D4', '#F1AAA9', '#E9807D', '#E25552', '#DB2B27', '#A4201D', '#6E1614', '#370B0A'],\n 'one-group': ['#1696d2', '#000000'],\n 'two-groups-cat-1': ['#1696d2', '#000000'],\n 'two-groups-cat-2': ['#1696d2', '#fdbf11'],\n 'two-groups-cat-3': ['#1696d2', '#db2b27'],\n 'two-groups-seq': ['#a2d4ec', '#1696d2'],\n 'three-groups-cat': ['#1696d2', '#fdbf11', '#000000'],\n 'three-groups-seq': ['#a2d4ec', '#1696d2', '#0a4c6a'],\n 'four-groups-cat-1': ['#000000', '#d2d2d2', '#fdbf11', '#1696d2'],\n 'four-groups-cat-2': ['#1696d2', '#ec0008b', '#fdbf11', '#5c5859'],\n 'four-groups-seq': ['#cfe8f3', '#73bf42', '#1696d2', '#0a4c6a'],\n 'five-groups-cat-1': ['#1696d2', '#fdbf11', '#d2d2d2', '#ec008b', '#000000'],\n 'five-groups-cat-2': ['#1696d2', '#0a4c6a', '#d2d2d2', '#fdbf11', '#332d2f'],\n 'five-groups-seq': ['#cfe8f3', '#73bf42', '#1696d2', '#0a4c6a', '#000000'],\n 'six-groups-cat-1': ['#1696d2', '#ec008b', '#fdbf11', '#000000', '#d2d2d2', '#55b748'],\n 'six-groups-cat-2': ['#1696d2', '#d2d2d2', '#ec008b', '#fdbf11', '#332d2f', '#0a4c6a'],\n 'six-groups-seq': ['#cfe8f3', '#a2d4ec', '#73bfe2', '#46abdb', '#1696d2', '#12719e'],\n 'diverging-colors': ['#ca5800', '#fdbf11', '#fdd870', '#fff2cf', '#cfe8f3', '#73bfe2', '#1696d2', '#0a4c6a']\n};\nvar urbanInstituteTheme = {\n background: backgroundColor$1,\n title: {\n anchor: 'start',\n fontSize: titleFontSize,\n font: font\n },\n axisX: {\n domain: true,\n domainColor: axisColor,\n domainWidth: 1,\n grid: false,\n labelFontSize: 12,\n labelFont: labelFont,\n labelAngle: 0,\n tickColor: axisColor,\n tickSize: 5,\n titleFontSize: 12,\n titlePadding: 10,\n titleFont: font\n },\n axisY: {\n domain: false,\n domainWidth: 1,\n grid: true,\n gridColor: gridColor$1,\n gridWidth: 1,\n labelFontSize: 12,\n labelFont: labelFont,\n labelPadding: 8,\n ticks: false,\n titleFontSize: 12,\n titlePadding: 10,\n titleFont: font,\n titleAngle: 0,\n titleY: -10,\n titleX: 18\n },\n legend: {\n labelFontSize: 12,\n labelFont: labelFont,\n symbolSize: 100,\n titleFontSize: 12,\n titlePadding: 10,\n titleFont: font,\n orient: 'right',\n offset: 10\n },\n view: {\n stroke: 'transparent'\n },\n range: {\n category: colorSchemes['six-groups-cat-1'],\n diverging: colorSchemes['diverging-colors'],\n heatmap: colorSchemes['diverging-colors'],\n ordinal: colorSchemes['six-groups-seq'],\n ramp: colorSchemes['shades-blue']\n },\n area: {\n fill: markColor$1\n },\n rect: {\n fill: markColor$1\n },\n line: {\n color: markColor$1,\n stroke: markColor$1,\n strokeWidth: 5\n },\n trail: {\n color: markColor$1,\n stroke: markColor$1,\n strokeWidth: 0,\n size: 1\n },\n path: {\n stroke: markColor$1,\n strokeWidth: 0.5\n },\n point: {\n filled: true\n },\n text: {\n font: sourceFont,\n color: markColor$1,\n fontSize: 11,\n align: 'center',\n fontWeight: 400,\n size: 11\n },\n style: {\n bar: {\n fill: markColor$1,\n stroke: null\n }\n },\n arc: {\n fill: markColor$1\n },\n shape: {\n stroke: markColor$1\n },\n symbol: {\n fill: markColor$1,\n size: 30\n }\n};\n\n/**\n * Copyright 2020 Google LLC.\n *\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file or at\n * https://developers.google.com/open-source/licenses/bsd\n */\n\nvar markColor = '#3366CC';\nvar gridColor = '#ccc';\nvar defaultFont$1 = 'Arial, sans-serif';\nvar googlechartsTheme = {\n arc: {\n fill: markColor\n },\n area: {\n fill: markColor\n },\n path: {\n stroke: markColor\n },\n rect: {\n fill: markColor\n },\n shape: {\n stroke: markColor\n },\n symbol: {\n stroke: markColor\n },\n circle: {\n fill: markColor\n },\n background: '#fff',\n padding: {\n top: 10,\n right: 10,\n bottom: 10,\n left: 10\n },\n style: {\n 'guide-label': {\n font: defaultFont$1,\n fontSize: 12\n },\n 'guide-title': {\n font: defaultFont$1,\n fontSize: 12\n },\n 'group-title': {\n font: defaultFont$1,\n fontSize: 12\n }\n },\n title: {\n font: defaultFont$1,\n fontSize: 14,\n fontWeight: 'bold',\n dy: -3,\n anchor: 'start'\n },\n axis: {\n gridColor: gridColor,\n tickColor: gridColor,\n domain: false,\n grid: true\n },\n range: {\n category: ['#4285F4', '#DB4437', '#F4B400', '#0F9D58', '#AB47BC', '#00ACC1', '#FF7043', '#9E9D24', '#5C6BC0', '#F06292', '#00796B', '#C2185B'],\n heatmap: ['#c6dafc', '#5e97f6', '#2a56c6']\n }\n};\nvar ptToPx = function ptToPx(value) {\n return value * (1 / 3 + 1);\n};\nvar fontSmallPx = ptToPx(9);\nvar legendFontPx = ptToPx(10);\nvar fontLargePx = ptToPx(12);\nvar fontStandard = 'Segoe UI';\nvar fontTitle = 'wf_standard-font, helvetica, arial, sans-serif';\nvar firstLevelElementColor = '#252423';\nvar secondLevelElementColor = '#605E5C';\nvar backgroundColor = 'transparent';\nvar backgroundSecondaryColor = '#C8C6C4';\nvar paletteColor1 = '#118DFF';\nvar paletteColor2 = '#12239E';\nvar paletteColor3 = '#E66C37';\nvar paletteColor4 = '#6B007B';\nvar paletteColor5 = '#E044A7';\nvar paletteColor6 = '#744EC2';\nvar paletteColor7 = '#D9B300';\nvar paletteColor8 = '#D64550';\nvar divergentColorMax = paletteColor1;\nvar divergentColorMin = '#DEEFFF';\nvar divergentPalette = [divergentColorMin, divergentColorMax];\nvar ordinalPalette = [divergentColorMin, '#c7e4ff', '#b0d9ff', '#9aceff', '#83c3ff', '#6cb9ff', '#55aeff', '#3fa3ff', '#2898ff', divergentColorMax];\nvar powerbiTheme = {\n view: {\n stroke: backgroundColor\n },\n background: backgroundColor,\n font: fontStandard,\n header: {\n titleFont: fontTitle,\n titleFontSize: fontLargePx,\n titleColor: firstLevelElementColor,\n labelFont: fontStandard,\n labelFontSize: legendFontPx,\n labelColor: secondLevelElementColor\n },\n axis: {\n ticks: false,\n grid: false,\n domain: false,\n labelColor: secondLevelElementColor,\n labelFontSize: fontSmallPx,\n titleFont: fontTitle,\n titleColor: firstLevelElementColor,\n titleFontSize: fontLargePx,\n titleFontWeight: 'normal'\n },\n axisQuantitative: {\n tickCount: 3,\n grid: true,\n gridColor: backgroundSecondaryColor,\n gridDash: [1, 5],\n labelFlush: false\n },\n axisBand: {\n tickExtra: true\n },\n axisX: {\n labelPadding: 5\n },\n axisY: {\n labelPadding: 10\n },\n bar: {\n fill: paletteColor1\n },\n line: {\n stroke: paletteColor1,\n strokeWidth: 3,\n strokeCap: 'round',\n strokeJoin: 'round'\n },\n text: {\n font: fontStandard,\n fontSize: fontSmallPx,\n fill: secondLevelElementColor\n },\n arc: {\n fill: paletteColor1\n },\n area: {\n fill: paletteColor1,\n line: true,\n opacity: 0.6\n },\n path: {\n stroke: paletteColor1\n },\n rect: {\n fill: paletteColor1\n },\n point: {\n fill: paletteColor1,\n filled: true,\n size: 75\n },\n shape: {\n stroke: paletteColor1\n },\n symbol: {\n fill: paletteColor1,\n strokeWidth: 1.5,\n size: 50\n },\n legend: {\n titleFont: fontStandard,\n titleFontWeight: 'bold',\n titleColor: secondLevelElementColor,\n labelFont: fontStandard,\n labelFontSize: legendFontPx,\n labelColor: secondLevelElementColor,\n symbolType: 'circle',\n symbolSize: 75\n },\n range: {\n category: [paletteColor1, paletteColor2, paletteColor3, paletteColor4, paletteColor5, paletteColor6, paletteColor7, paletteColor8],\n diverging: divergentPalette,\n heatmap: divergentPalette,\n ordinal: ordinalPalette\n }\n};\nvar defaultFont = 'IBM Plex Sans,system-ui,-apple-system,BlinkMacSystemFont,\".sfnstext-regular\",sans-serif';\nvar fontWeight = 400;\nvar darkCategories = ['#8a3ffc', '#33b1ff', '#007d79', '#ff7eb6', '#fa4d56', '#fff1f1', '#6fdc8c', '#4589ff', '#d12771', '#d2a106', '#08bdba', '#bae6ff', '#ba4e00', '#d4bbff'];\nvar lightCategories = ['#6929c4', '#1192e8', '#005d5d', '#9f1853', '#fa4d56', '#570408', '#198038', '#002d9c', '#ee538b', '#b28600', '#009d9a', '#012749', '#8a3800', '#a56eff'];\nfunction genCarbonConfig(_ref) {\n var type = _ref.type,\n background = _ref.background;\n var viewbg = type === 'dark' ? '#161616' : '#ffffff';\n var textColor = type === 'dark' ? '#f4f4f4' : '#161616';\n var category = type === 'dark' ? darkCategories : lightCategories;\n var markColor = type === 'dark' ? '#d4bbff' : '#6929c4';\n return {\n background: background,\n arc: {\n fill: markColor\n },\n area: {\n fill: markColor\n },\n path: {\n stroke: markColor\n },\n rect: {\n fill: markColor\n },\n shape: {\n stroke: markColor\n },\n symbol: {\n stroke: markColor\n },\n circle: {\n fill: markColor\n },\n view: {\n fill: viewbg,\n stroke: viewbg\n },\n group: {\n fill: viewbg\n },\n title: {\n color: textColor,\n anchor: 'start',\n dy: -15,\n fontSize: 16,\n font: defaultFont,\n fontWeight: 600\n },\n axis: {\n labelColor: textColor,\n labelFontSize: 12,\n grid: true,\n gridColor: '#525252',\n titleColor: textColor,\n labelAngle: 0\n },\n style: {\n 'guide-label': {\n font: defaultFont,\n fill: textColor,\n fontWeight: fontWeight\n },\n 'guide-title': {\n font: defaultFont,\n fill: textColor,\n fontWeight: fontWeight\n }\n },\n range: {\n category: category,\n diverging: ['#750e13', '#a2191f', '#da1e28', '#fa4d56', '#ff8389', '#ffb3b8', '#ffd7d9', '#fff1f1', '#e5f6ff', '#bae6ff', '#82cfff', '#33b1ff', '#1192e8', '#0072c3', '#00539a', '#003a6d'],\n heatmap: ['#f6f2ff', '#e8daff', '#d4bbff', '#be95ff', '#a56eff', '#8a3ffc', '#6929c4', '#491d8b', '#31135e', '#1c0f30']\n }\n };\n}\nvar carbonwhite = genCarbonConfig({\n type: 'light',\n background: '#ffffff'\n});\nvar carbong10 = genCarbonConfig({\n type: 'light',\n background: '#f4f4f4'\n});\nvar carbong90 = genCarbonConfig({\n type: 'dark',\n background: '#262626'\n});\nvar carbong100 = genCarbonConfig({\n type: 'dark',\n background: '#161616'\n});\nvar version = pkg.version;\nexport { carbong10, carbong100, carbong90, carbonwhite, darkTheme as dark, excelTheme as excel, fiveThirtyEightTheme as fivethirtyeight, ggplot2Theme as ggplot2, googlechartsTheme as googlecharts, latimesTheme as latimes, powerbiTheme as powerbi, quartzTheme as quartz, urbanInstituteTheme as urbaninstitute, version, voxTheme as vox };","import _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { isArray, isString, isObject } from 'vega-util';\nvar name = \"vega-tooltip\";\nvar version$1 = \"0.32.0\";\nvar description = \"A tooltip plugin for Vega-Lite and Vega visualizations.\";\nvar keywords = [\"vega-lite\", \"vega\", \"tooltip\"];\nvar repository = {\n type: \"git\",\n url: \"https://github.com/vega/vega-tooltip.git\"\n};\nvar author = {\n name: \"UW Interactive Data Lab\",\n url: \"https://idl.cs.washington.edu\"\n};\nvar collaborators = [\"Dominik Moritz\", \"Sira Horradarn\", \"Zening Qu\", \"Kanit Wongsuphasawat\", \"Yuri Astrakhan\", \"Jeffrey Heer\"];\nvar license = \"BSD-3-Clause\";\nvar bugs = {\n url: \"https://github.com/vega/vega-tooltip/issues\"\n};\nvar homepage = \"https://github.com/vega/vega-tooltip#readme\";\nvar main = \"build/vega-tooltip.js\";\nvar module = \"build/vega-tooltip.module.js\";\nvar unpkg = \"build/vega-tooltip.min.js\";\nvar jsdelivr = \"build/vega-tooltip.min.js\";\nvar types = \"build/vega-tooltip.module.d.ts\";\nvar files = [\"src\", \"build\", \"types\"];\nvar scripts = {\n prebuild: \"yarn clean && yarn build:style\",\n build: \"rollup -c\",\n \"build:style\": \"./build-style.sh\",\n clean: \"rimraf build && rimraf src/style.ts\",\n \"copy:data\": \"rsync -r node_modules/vega-datasets/data/* examples/data\",\n \"copy:build\": \"rsync -r build/* examples/build\",\n \"deploy:gh\": \"yarn build && yarn copy:build && gh-pages -d examples && yarn clean\",\n prepublishOnly: \"yarn clean && yarn build\",\n preversion: \"yarn lint && yarn test\",\n serve: \"browser-sync start -s -f build examples --serveStatic examples\",\n start: \"yarn build && concurrently --kill-others -n Server,Rollup 'yarn serve' 'rollup -c -w'\",\n pretest: \"yarn build:style\",\n test: \"jest\",\n \"test:inspect\": \"node --inspect-brk ./node_modules/.bin/jest --runInBand\",\n prepare: \"yarn copy:data\",\n prettierbase: \"prettier '*.{css,scss,html}'\",\n format: \"eslint . --fix && yarn prettierbase --write\",\n lint: \"eslint . && yarn prettierbase --check\",\n release: \"release-it\"\n};\nvar devDependencies = {\n \"@babel/core\": \"^7.21.4\",\n \"@babel/plugin-transform-runtime\": \"^7.21.4\",\n \"@babel/preset-env\": \"^7.21.4\",\n \"@babel/preset-typescript\": \"^7.21.4\",\n \"@release-it/conventional-changelog\": \"^5.1.1\",\n \"@rollup/plugin-json\": \"^6.0.0\",\n \"@rollup/plugin-node-resolve\": \"^15.0.2\",\n \"@rollup/plugin-terser\": \"^0.4.1\",\n \"@types/jest\": \"^29.5.1\",\n \"@typescript-eslint/eslint-plugin\": \"^5.59.0\",\n \"@typescript-eslint/parser\": \"^5.59.0\",\n \"browser-sync\": \"^2.29.1\",\n concurrently: \"^8.0.1\",\n eslint: \"^8.38.0\",\n \"eslint-config-prettier\": \"^8.8.0\",\n \"eslint-plugin-jest\": \"^27.2.1\",\n \"eslint-plugin-prettier\": \"^4.2.1\",\n \"gh-pages\": \"^5.0.0\",\n jest: \"^29.5.0\",\n \"jest-environment-jsdom\": \"^29.5.0\",\n path: \"^0.12.7\",\n prettier: \"^2.8.7\",\n \"release-it\": \"^15.10.1\",\n rollup: \"^3.20.6\",\n \"rollup-plugin-bundle-size\": \"^1.0.3\",\n \"rollup-plugin-ts\": \"^3.2.0\",\n sass: \"^1.62.0\",\n typescript: \"~5.0.4\",\n \"vega-datasets\": \"^2.7.0\",\n \"vega-typings\": \"^0.24.0\"\n};\nvar dependencies = {\n \"vega-util\": \"^1.17.1\"\n};\nvar pkg = {\n name: name,\n version: version$1,\n description: description,\n keywords: keywords,\n repository: repository,\n author: author,\n collaborators: collaborators,\n license: license,\n bugs: bugs,\n homepage: homepage,\n main: main,\n module: module,\n unpkg: unpkg,\n jsdelivr: jsdelivr,\n types: types,\n files: files,\n scripts: scripts,\n devDependencies: devDependencies,\n dependencies: dependencies\n};\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\nfunction _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\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 return obj;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nvar _excluded = [\"title\", \"image\"];\n\n/**\n * Format the value to be shown in the tooltip.\n *\n * @param value The value to show in the tooltip.\n * @param valueToHtml Function to convert a single cell value to an HTML string\n */\nfunction formatValue(value, valueToHtml, maxDepth) {\n if (isArray(value)) {\n return \"[\".concat(value.map(function (v) {\n return valueToHtml(isString(v) ? v : stringify(v, maxDepth));\n }).join(', '), \"]\");\n }\n if (isObject(value)) {\n var content = '';\n var _ref = value,\n title = _ref.title,\n image = _ref.image,\n rest = _objectWithoutProperties(_ref, _excluded);\n if (title) {\n content += \"

        \".concat(valueToHtml(title), \"

        \");\n }\n if (image) {\n content += \"\");\n }\n var keys = Object.keys(rest);\n if (keys.length > 0) {\n content += '';\n var _iterator = _createForOfIteratorHelper(keys),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var key = _step.value;\n var val = rest[key];\n\n // ignore undefined properties\n if (val === undefined) {\n continue;\n }\n if (isObject(val)) {\n val = stringify(val, maxDepth);\n }\n content += \"\");\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n content += \"
        \".concat(valueToHtml(key), \":\").concat(valueToHtml(val), \"
        \";\n }\n return content || '{}'; // show empty object if there are no properties\n }\n\n return valueToHtml(value);\n}\nfunction replacer(maxDepth) {\n var stack = [];\n return function (key, value) {\n if (typeof value !== 'object' || value === null) {\n return value;\n }\n var pos = stack.indexOf(this) + 1;\n stack.length = pos;\n if (stack.length > maxDepth) {\n return '[Object]';\n }\n if (stack.indexOf(value) >= 0) {\n return '[Circular]';\n }\n stack.push(value);\n return value;\n };\n}\n\n/**\n * Stringify any JS object to valid JSON\n */\nfunction stringify(obj, maxDepth) {\n return JSON.stringify(obj, replacer(maxDepth));\n}\n\n// generated with build-style.sh\nvar defaultStyle = \"#vg-tooltip-element {\\n visibility: hidden;\\n padding: 8px;\\n position: fixed;\\n z-index: 1000;\\n font-family: sans-serif;\\n font-size: 11px;\\n border-radius: 3px;\\n box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.1);\\n /* The default theme is the light theme. */\\n background-color: rgba(255, 255, 255, 0.95);\\n border: 1px solid #d9d9d9;\\n color: black;\\n}\\n#vg-tooltip-element.visible {\\n visibility: visible;\\n}\\n#vg-tooltip-element h2 {\\n margin-top: 0;\\n margin-bottom: 10px;\\n font-size: 13px;\\n}\\n#vg-tooltip-element table {\\n border-spacing: 0;\\n}\\n#vg-tooltip-element table tr {\\n border: none;\\n}\\n#vg-tooltip-element table tr td {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n padding-top: 2px;\\n padding-bottom: 2px;\\n}\\n#vg-tooltip-element table tr td.key {\\n color: #808080;\\n max-width: 150px;\\n text-align: right;\\n padding-right: 4px;\\n}\\n#vg-tooltip-element table tr td.value {\\n display: block;\\n max-width: 300px;\\n max-height: 7em;\\n text-align: left;\\n}\\n#vg-tooltip-element.dark-theme {\\n background-color: rgba(32, 32, 32, 0.9);\\n border: 1px solid #f5f5f5;\\n color: white;\\n}\\n#vg-tooltip-element.dark-theme td.key {\\n color: #bfbfbf;\\n}\\n\";\nvar EL_ID = 'vg-tooltip-element';\nvar DEFAULT_OPTIONS = {\n /**\n * X offset.\n */\n offsetX: 10,\n /**\n * Y offset.\n */\n offsetY: 10,\n /**\n * ID of the tooltip element.\n */\n id: EL_ID,\n /**\n * ID of the tooltip CSS style.\n */\n styleId: 'vega-tooltip-style',\n /**\n * The name of the theme. You can use the CSS class called [THEME]-theme to style the tooltips.\n *\n * There are two predefined themes: \"light\" (default) and \"dark\".\n */\n theme: 'light',\n /**\n * Do not use the default styles provided by Vega Tooltip. If you enable this option, you need to use your own styles. It is not necessary to disable the default style when using a custom theme.\n */\n disableDefaultStyle: false,\n /**\n * HTML sanitizer function that removes dangerous HTML to prevent XSS.\n *\n * This should be a function from string to string. You may replace it with a formatter such as a markdown formatter.\n */\n sanitize: escapeHTML,\n /**\n * The maximum recursion depth when printing objects in the tooltip.\n */\n maxDepth: 2,\n /**\n * A function to customize the rendered HTML of the tooltip.\n * @param value A value string, or object of value strings keyed by field\n * @param sanitize The `sanitize` function from `options.sanitize`\n * @returns {string} The returned string will become the `innerHTML` of the tooltip element\n */\n formatTooltip: formatValue\n};\n/**\n * Escape special HTML characters.\n *\n * @param value A value to convert to string and HTML-escape.\n */\nfunction escapeHTML(value) {\n return String(value).replace(/&/g, '&').replace(/ window.innerWidth) {\n x = +event.clientX - offsetX - tooltipBox.width;\n }\n var y = event.clientY + offsetY;\n if (y + tooltipBox.height > window.innerHeight) {\n y = +event.clientY - offsetY - tooltipBox.height;\n }\n return {\n x: x,\n y: y\n };\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\n\n/**\n * The tooltip handler class.\n */\nvar Handler = /*#__PURE__*/function () {\n /**\n * The handler function. We bind this to this function in the constructor.\n */\n\n /**\n * Complete tooltip options.\n */\n\n /**\n * The tooltip html element.\n */\n\n /**\n * Create the tooltip handler and initialize the element and style.\n *\n * @param options Tooltip Options\n */\n function Handler(options) {\n _classCallCheck(this, Handler);\n this.options = _objectSpread(_objectSpread({}, DEFAULT_OPTIONS), options);\n var elementId = this.options.id;\n this.el = null;\n\n // bind this to call\n this.call = this.tooltipHandler.bind(this);\n\n // prepend a default stylesheet for tooltips to the head\n if (!this.options.disableDefaultStyle && !document.getElementById(this.options.styleId)) {\n var style = document.createElement('style');\n style.setAttribute('id', this.options.styleId);\n style.innerHTML = createDefaultStyle(elementId);\n var head = document.head;\n if (head.childNodes.length > 0) {\n head.insertBefore(style, head.childNodes[0]);\n } else {\n head.appendChild(style);\n }\n }\n }\n\n /**\n * The tooltip handler function.\n */\n _createClass(Handler, [{\n key: \"tooltipHandler\",\n value: function tooltipHandler(handler, event, item, value) {\n // console.log(handler, event, item, value);\n\n // append a div element that we use as a tooltip unless it already exists\n this.el = document.getElementById(this.options.id);\n if (!this.el) {\n var _document$fullscreenE;\n this.el = document.createElement('div');\n this.el.setAttribute('id', this.options.id);\n this.el.classList.add('vg-tooltip');\n var tooltipContainer = (_document$fullscreenE = document.fullscreenElement) !== null && _document$fullscreenE !== void 0 ? _document$fullscreenE : document.body;\n tooltipContainer.appendChild(this.el);\n }\n\n // hide tooltip for null, undefined, or empty string values\n if (value == null || value === '') {\n this.el.classList.remove('visible', \"\".concat(this.options.theme, \"-theme\"));\n return;\n }\n\n // set the tooltip content\n this.el.innerHTML = this.options.formatTooltip(value, this.options.sanitize, this.options.maxDepth);\n\n // make the tooltip visible\n this.el.classList.add('visible', \"\".concat(this.options.theme, \"-theme\"));\n var _calculatePosition = calculatePosition(event, this.el.getBoundingClientRect(), this.options.offsetX, this.options.offsetY),\n x = _calculatePosition.x,\n y = _calculatePosition.y;\n this.el.style.top = \"\".concat(y, \"px\");\n this.el.style.left = \"\".concat(x, \"px\");\n }\n }]);\n return Handler;\n}();\nvar version = pkg.version;\n\n/**\n * Create a tooltip handler and register it with the provided view.\n *\n * @param view The Vega view.\n * @param opt Tooltip options.\n */\nfunction index(view, opt) {\n var handler = new Handler(opt);\n view.tooltip(handler.call).run();\n return handler;\n}\nexport { DEFAULT_OPTIONS, Handler, calculatePosition, createDefaultStyle, index as default, escapeHTML, formatValue, replacer, stringify, version };","import _asyncToGenerator from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\";\nimport _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nvar _w$vl;\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport _regeneratorRuntime from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/regenerator/index.js\";\nimport { applyPatch } from 'fast-json-patch';\nimport stringify from 'json-stringify-pretty-compact';\nimport * as vegaImport from 'vega';\nimport { writeConfig, isString, mergeConfig, isBoolean, isObject } from 'vega';\nimport { expressionInterpreter } from 'vega-interpreter';\nimport * as vegaLiteImport from 'vega-lite';\nimport schemaParser from 'vega-schema-url-parser';\nimport * as themes from 'vega-themes';\nimport { Handler } from 'vega-tooltip';\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\nfunction _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\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 return obj;\n}\nfunction getDefaultExportFromCjs(x) {\n return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\nvar iterator;\nvar hasRequiredIterator;\nfunction requireIterator() {\n if (hasRequiredIterator) return iterator;\n hasRequiredIterator = 1;\n iterator = function iterator(Yallist) {\n Yallist.prototype[Symbol.iterator] = /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {\n var walker;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n walker = this.head;\n case 1:\n if (!walker) {\n _context.next = 7;\n break;\n }\n _context.next = 4;\n return walker.value;\n case 4:\n walker = walker.next;\n _context.next = 1;\n break;\n case 7:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n });\n };\n return iterator;\n}\nvar yallist = Yallist$1;\nYallist$1.Node = Node;\nYallist$1.create = Yallist$1;\nfunction Yallist$1(list) {\n var self = this;\n if (!(self instanceof Yallist$1)) {\n self = new Yallist$1();\n }\n self.tail = null;\n self.head = null;\n self.length = 0;\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item);\n });\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i]);\n }\n }\n return self;\n}\nYallist$1.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list');\n }\n var next = node.next;\n var prev = node.prev;\n if (next) {\n next.prev = prev;\n }\n if (prev) {\n prev.next = next;\n }\n if (node === this.head) {\n this.head = next;\n }\n if (node === this.tail) {\n this.tail = prev;\n }\n node.list.length--;\n node.next = null;\n node.prev = null;\n node.list = null;\n return next;\n};\nYallist$1.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return;\n }\n if (node.list) {\n node.list.removeNode(node);\n }\n var head = this.head;\n node.list = this;\n node.next = head;\n if (head) {\n head.prev = node;\n }\n this.head = node;\n if (!this.tail) {\n this.tail = node;\n }\n this.length++;\n};\nYallist$1.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return;\n }\n if (node.list) {\n node.list.removeNode(node);\n }\n var tail = this.tail;\n node.list = this;\n node.prev = tail;\n if (tail) {\n tail.next = node;\n }\n this.tail = node;\n if (!this.head) {\n this.head = node;\n }\n this.length++;\n};\nYallist$1.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i]);\n }\n return this.length;\n};\nYallist$1.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i]);\n }\n return this.length;\n};\nYallist$1.prototype.pop = function () {\n if (!this.tail) {\n return undefined;\n }\n var res = this.tail.value;\n this.tail = this.tail.prev;\n if (this.tail) {\n this.tail.next = null;\n } else {\n this.head = null;\n }\n this.length--;\n return res;\n};\nYallist$1.prototype.shift = function () {\n if (!this.head) {\n return undefined;\n }\n var res = this.head.value;\n this.head = this.head.next;\n if (this.head) {\n this.head.prev = null;\n } else {\n this.tail = null;\n }\n this.length--;\n return res;\n};\nYallist$1.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this;\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this);\n walker = walker.next;\n }\n};\nYallist$1.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this;\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this);\n walker = walker.prev;\n }\n};\nYallist$1.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next;\n }\n if (i === n && walker !== null) {\n return walker.value;\n }\n};\nYallist$1.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev;\n }\n if (i === n && walker !== null) {\n return walker.value;\n }\n};\nYallist$1.prototype.map = function (fn, thisp) {\n thisp = thisp || this;\n var res = new Yallist$1();\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this));\n walker = walker.next;\n }\n return res;\n};\nYallist$1.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this;\n var res = new Yallist$1();\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this));\n walker = walker.prev;\n }\n return res;\n};\nYallist$1.prototype.reduce = function (fn, initial) {\n var acc;\n var walker = this.head;\n if (arguments.length > 1) {\n acc = initial;\n } else if (this.head) {\n walker = this.head.next;\n acc = this.head.value;\n } else {\n throw new TypeError('Reduce of empty list with no initial value');\n }\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i);\n walker = walker.next;\n }\n return acc;\n};\nYallist$1.prototype.reduceReverse = function (fn, initial) {\n var acc;\n var walker = this.tail;\n if (arguments.length > 1) {\n acc = initial;\n } else if (this.tail) {\n walker = this.tail.prev;\n acc = this.tail.value;\n } else {\n throw new TypeError('Reduce of empty list with no initial value');\n }\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i);\n walker = walker.prev;\n }\n return acc;\n};\nYallist$1.prototype.toArray = function () {\n var arr = new Array(this.length);\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value;\n walker = walker.next;\n }\n return arr;\n};\nYallist$1.prototype.toArrayReverse = function () {\n var arr = new Array(this.length);\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value;\n walker = walker.prev;\n }\n return arr;\n};\nYallist$1.prototype.slice = function (from, to) {\n to = to || this.length;\n if (to < 0) {\n to += this.length;\n }\n from = from || 0;\n if (from < 0) {\n from += this.length;\n }\n var ret = new Yallist$1();\n if (to < from || to < 0) {\n return ret;\n }\n if (from < 0) {\n from = 0;\n }\n if (to > this.length) {\n to = this.length;\n }\n for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next;\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value);\n }\n return ret;\n};\nYallist$1.prototype.sliceReverse = function (from, to) {\n to = to || this.length;\n if (to < 0) {\n to += this.length;\n }\n from = from || 0;\n if (from < 0) {\n from += this.length;\n }\n var ret = new Yallist$1();\n if (to < from || to < 0) {\n return ret;\n }\n if (from < 0) {\n from = 0;\n }\n if (to > this.length) {\n to = this.length;\n }\n for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev;\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value);\n }\n return ret;\n};\nYallist$1.prototype.splice = function (start, deleteCount) {\n if (start > this.length) {\n start = this.length - 1;\n }\n if (start < 0) {\n start = this.length + start;\n }\n for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n walker = walker.next;\n }\n var ret = [];\n for (var i = 0; walker && i < deleteCount; i++) {\n ret.push(walker.value);\n walker = this.removeNode(walker);\n }\n if (walker === null) {\n walker = this.tail;\n }\n if (walker !== this.head && walker !== this.tail) {\n walker = walker.prev;\n }\n for (var i = 0; i < (arguments.length <= 2 ? 0 : arguments.length - 2); i++) {\n walker = insert(this, walker, i + 2 < 2 || arguments.length <= i + 2 ? undefined : arguments[i + 2]);\n }\n return ret;\n};\nYallist$1.prototype.reverse = function () {\n var head = this.head;\n var tail = this.tail;\n for (var walker = head; walker !== null; walker = walker.prev) {\n var p = walker.prev;\n walker.prev = walker.next;\n walker.next = p;\n }\n this.head = tail;\n this.tail = head;\n return this;\n};\nfunction insert(self, node, value) {\n var inserted = node === self.head ? new Node(value, null, node, self) : new Node(value, node, node.next, self);\n if (inserted.next === null) {\n self.tail = inserted;\n }\n if (inserted.prev === null) {\n self.head = inserted;\n }\n self.length++;\n return inserted;\n}\nfunction push(self, item) {\n self.tail = new Node(item, self.tail, null, self);\n if (!self.head) {\n self.head = self.tail;\n }\n self.length++;\n}\nfunction unshift(self, item) {\n self.head = new Node(item, null, self.head, self);\n if (!self.tail) {\n self.tail = self.head;\n }\n self.length++;\n}\nfunction Node(value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list);\n }\n this.list = list;\n this.value = value;\n if (prev) {\n prev.next = this;\n this.prev = prev;\n } else {\n this.prev = null;\n }\n if (next) {\n next.prev = this;\n this.next = next;\n } else {\n this.next = null;\n }\n}\ntry {\n // add if support for Symbol.iterator is present\n requireIterator()(Yallist$1);\n} catch (er) {}\n\n// A linked list to keep track of recently-used-ness\nvar Yallist = yallist;\nvar MAX = Symbol('max');\nvar LENGTH = Symbol('length');\nvar LENGTH_CALCULATOR = Symbol('lengthCalculator');\nvar ALLOW_STALE = Symbol('allowStale');\nvar MAX_AGE = Symbol('maxAge');\nvar DISPOSE = Symbol('dispose');\nvar NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet');\nvar LRU_LIST = Symbol('lruList');\nvar CACHE = Symbol('cache');\nvar UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet');\nvar naiveLength = function naiveLength() {\n return 1;\n};\n\n// lruList is a yallist where the head is the youngest\n// item, and the tail is the oldest. the list contains the Hit\n// objects as the entries.\n// Each Hit object has a reference to its Yallist.Node. This\n// never changes.\n//\n// cache is a Map (or PseudoMap) that matches the keys to\n// the Yallist.Node object.\nvar LRUCache = /*#__PURE__*/function () {\n function LRUCache(options) {\n _classCallCheck(this, LRUCache);\n if (typeof options === 'number') options = {\n max: options\n };\n if (!options) options = {};\n if (options.max && (typeof options.max !== 'number' || options.max < 0)) throw new TypeError('max must be a non-negative number');\n // Kind of weird to have a default max of Infinity, but oh well.\n this[MAX] = options.max || Infinity;\n var lc = options.length || naiveLength;\n this[LENGTH_CALCULATOR] = typeof lc !== 'function' ? naiveLength : lc;\n this[ALLOW_STALE] = options.stale || false;\n if (options.maxAge && typeof options.maxAge !== 'number') throw new TypeError('maxAge must be a number');\n this[MAX_AGE] = options.maxAge || 0;\n this[DISPOSE] = options.dispose;\n this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false;\n this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false;\n this.reset();\n }\n\n // resize the cache when the max changes.\n _createClass(LRUCache, [{\n key: \"max\",\n get: function get() {\n return this[MAX];\n },\n set: function set(mL) {\n if (typeof mL !== 'number' || mL < 0) throw new TypeError('max must be a non-negative number');\n this[MAX] = mL || Infinity;\n trim(this);\n }\n }, {\n key: \"allowStale\",\n get: function get() {\n return this[ALLOW_STALE];\n },\n set: function set(allowStale) {\n this[ALLOW_STALE] = !!allowStale;\n }\n }, {\n key: \"maxAge\",\n get: function get() {\n return this[MAX_AGE];\n }\n\n // resize the cache when the lengthCalculator changes.\n ,\n set: function set(mA) {\n if (typeof mA !== 'number') throw new TypeError('maxAge must be a non-negative number');\n this[MAX_AGE] = mA;\n trim(this);\n }\n }, {\n key: \"lengthCalculator\",\n get: function get() {\n return this[LENGTH_CALCULATOR];\n },\n set: function set(lC) {\n var _this = this;\n if (typeof lC !== 'function') lC = naiveLength;\n if (lC !== this[LENGTH_CALCULATOR]) {\n this[LENGTH_CALCULATOR] = lC;\n this[LENGTH] = 0;\n this[LRU_LIST].forEach(function (hit) {\n hit.length = _this[LENGTH_CALCULATOR](hit.value, hit.key);\n _this[LENGTH] += hit.length;\n });\n }\n trim(this);\n }\n }, {\n key: \"length\",\n get: function get() {\n return this[LENGTH];\n }\n }, {\n key: \"itemCount\",\n get: function get() {\n return this[LRU_LIST].length;\n }\n }, {\n key: \"rforEach\",\n value: function rforEach(fn, thisp) {\n thisp = thisp || this;\n for (var walker = this[LRU_LIST].tail; walker !== null;) {\n var prev = walker.prev;\n forEachStep(this, fn, walker, thisp);\n walker = prev;\n }\n }\n }, {\n key: \"forEach\",\n value: function forEach(fn, thisp) {\n thisp = thisp || this;\n for (var walker = this[LRU_LIST].head; walker !== null;) {\n var next = walker.next;\n forEachStep(this, fn, walker, thisp);\n walker = next;\n }\n }\n }, {\n key: \"keys\",\n value: function keys() {\n return this[LRU_LIST].toArray().map(function (k) {\n return k.key;\n });\n }\n }, {\n key: \"values\",\n value: function values() {\n return this[LRU_LIST].toArray().map(function (k) {\n return k.value;\n });\n }\n }, {\n key: \"reset\",\n value: function reset() {\n var _this2 = this;\n if (this[DISPOSE] && this[LRU_LIST] && this[LRU_LIST].length) {\n this[LRU_LIST].forEach(function (hit) {\n return _this2[DISPOSE](hit.key, hit.value);\n });\n }\n this[CACHE] = new Map(); // hash of items by key\n this[LRU_LIST] = new Yallist(); // list of items in order of use recency\n this[LENGTH] = 0; // length of items in the list\n }\n }, {\n key: \"dump\",\n value: function dump() {\n var _this3 = this;\n return this[LRU_LIST].map(function (hit) {\n return isStale(_this3, hit) ? false : {\n k: hit.key,\n v: hit.value,\n e: hit.now + (hit.maxAge || 0)\n };\n }).toArray().filter(function (h) {\n return h;\n });\n }\n }, {\n key: \"dumpLru\",\n value: function dumpLru() {\n return this[LRU_LIST];\n }\n }, {\n key: \"set\",\n value: function set(key, value, maxAge) {\n maxAge = maxAge || this[MAX_AGE];\n if (maxAge && typeof maxAge !== 'number') throw new TypeError('maxAge must be a number');\n var now = maxAge ? Date.now() : 0;\n var len = this[LENGTH_CALCULATOR](value, key);\n if (this[CACHE].has(key)) {\n if (len > this[MAX]) {\n _del(this, this[CACHE].get(key));\n return false;\n }\n var node = this[CACHE].get(key);\n var item = node.value;\n\n // dispose of the old one before overwriting\n // split out into 2 ifs for better coverage tracking\n if (this[DISPOSE]) {\n if (!this[NO_DISPOSE_ON_SET]) this[DISPOSE](key, item.value);\n }\n item.now = now;\n item.maxAge = maxAge;\n item.value = value;\n this[LENGTH] += len - item.length;\n item.length = len;\n this.get(key);\n trim(this);\n return true;\n }\n var hit = new Entry(key, value, len, now, maxAge);\n\n // oversized objects fall out of cache automatically.\n if (hit.length > this[MAX]) {\n if (this[DISPOSE]) this[DISPOSE](key, value);\n return false;\n }\n this[LENGTH] += hit.length;\n this[LRU_LIST].unshift(hit);\n this[CACHE].set(key, this[LRU_LIST].head);\n trim(this);\n return true;\n }\n }, {\n key: \"has\",\n value: function has(key) {\n if (!this[CACHE].has(key)) return false;\n var hit = this[CACHE].get(key).value;\n return !isStale(this, hit);\n }\n }, {\n key: \"get\",\n value: function get(key) {\n return _get(this, key, true);\n }\n }, {\n key: \"peek\",\n value: function peek(key) {\n return _get(this, key, false);\n }\n }, {\n key: \"pop\",\n value: function pop() {\n var node = this[LRU_LIST].tail;\n if (!node) return null;\n _del(this, node);\n return node.value;\n }\n }, {\n key: \"del\",\n value: function del(key) {\n _del(this, this[CACHE].get(key));\n }\n }, {\n key: \"load\",\n value: function load(arr) {\n // reset the cache\n this.reset();\n var now = Date.now();\n // A previous serialized cache has the most recent items first\n for (var l = arr.length - 1; l >= 0; l--) {\n var hit = arr[l];\n var expiresAt = hit.e || 0;\n if (expiresAt === 0)\n // the item was created without expiration in a non aged cache\n this.set(hit.k, hit.v);else {\n var maxAge = expiresAt - now;\n // dont add already expired items\n if (maxAge > 0) {\n this.set(hit.k, hit.v, maxAge);\n }\n }\n }\n }\n }, {\n key: \"prune\",\n value: function prune() {\n var _this4 = this;\n this[CACHE].forEach(function (value, key) {\n return _get(_this4, key, false);\n });\n }\n }]);\n return LRUCache;\n}();\nvar _get = function _get(self, key, doUse) {\n var node = self[CACHE].get(key);\n if (node) {\n var hit = node.value;\n if (isStale(self, hit)) {\n _del(self, node);\n if (!self[ALLOW_STALE]) return undefined;\n } else {\n if (doUse) {\n if (self[UPDATE_AGE_ON_GET]) node.value.now = Date.now();\n self[LRU_LIST].unshiftNode(node);\n }\n }\n return hit.value;\n }\n};\nvar isStale = function isStale(self, hit) {\n if (!hit || !hit.maxAge && !self[MAX_AGE]) return false;\n var diff = Date.now() - hit.now;\n return hit.maxAge ? diff > hit.maxAge : self[MAX_AGE] && diff > self[MAX_AGE];\n};\nvar trim = function trim(self) {\n if (self[LENGTH] > self[MAX]) {\n for (var walker = self[LRU_LIST].tail; self[LENGTH] > self[MAX] && walker !== null;) {\n // We know that we're about to delete this one, and also\n // what the next least recently used key will be, so just\n // go ahead and set it now.\n var prev = walker.prev;\n _del(self, walker);\n walker = prev;\n }\n }\n};\nvar _del = function _del(self, node) {\n if (node) {\n var hit = node.value;\n if (self[DISPOSE]) self[DISPOSE](hit.key, hit.value);\n self[LENGTH] -= hit.length;\n self[CACHE].delete(hit.key);\n self[LRU_LIST].removeNode(node);\n }\n};\nvar Entry = /*#__PURE__*/_createClass(function Entry(key, value, length, now, maxAge) {\n _classCallCheck(this, Entry);\n this.key = key;\n this.value = value;\n this.length = length;\n this.now = now;\n this.maxAge = maxAge || 0;\n});\nvar forEachStep = function forEachStep(self, fn, node, thisp) {\n var hit = node.value;\n if (isStale(self, hit)) {\n _del(self, node);\n if (!self[ALLOW_STALE]) hit = undefined;\n }\n if (hit) fn.call(thisp, hit.value, hit.key, self);\n};\nvar lruCache = LRUCache;\n\n// parse out just the options we care about\nvar looseOption = Object.freeze({\n loose: true\n});\nvar emptyOpts = Object.freeze({});\nvar parseOptions$1 = function parseOptions$1(options) {\n if (!options) {\n return emptyOpts;\n }\n if (typeof options !== 'object') {\n return looseOption;\n }\n return options;\n};\nvar parseOptions_1 = parseOptions$1;\nvar re$1 = {\n exports: {}\n};\n\n// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nvar SEMVER_SPEC_VERSION = '2.0.0';\nvar MAX_LENGTH$1 = 256;\nvar MAX_SAFE_INTEGER$1 = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */9007199254740991;\n\n// Max safe segment length for coercion.\nvar MAX_SAFE_COMPONENT_LENGTH = 16;\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nvar MAX_SAFE_BUILD_LENGTH = MAX_LENGTH$1 - 6;\nvar RELEASE_TYPES = ['major', 'premajor', 'minor', 'preminor', 'patch', 'prepatch', 'prerelease'];\nvar constants = {\n MAX_LENGTH: MAX_LENGTH$1,\n MAX_SAFE_COMPONENT_LENGTH: MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH: MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER: MAX_SAFE_INTEGER$1,\n RELEASE_TYPES: RELEASE_TYPES,\n SEMVER_SPEC_VERSION: SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 1,\n FLAG_LOOSE: 2\n};\nvar debug$1 = typeof process === 'object' && process.env && process.env.NODE_DEBUG && /\\bsemver\\b/i.test(process.env.NODE_DEBUG) ? function () {\n var _console;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return (_console = console).error.apply(_console, ['SEMVER'].concat(args));\n} : function () {};\nvar debug_1 = debug$1;\n(function (module, exports) {\n var MAX_SAFE_COMPONENT_LENGTH = constants.MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH = constants.MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH = constants.MAX_LENGTH;\n var debug = debug_1;\n exports = module.exports = {};\n\n // The actual regexps go on exports.re\n var re = exports.re = [];\n var safeRe = exports.safeRe = [];\n var src = exports.src = [];\n var t = exports.t = {};\n var R = 0;\n var LETTERDASHNUMBER = '[a-zA-Z0-9-]';\n\n // Replace some greedy regex tokens to prevent regex dos issues. These regex are\n // used internally via the safeRe object since all inputs in this library get\n // normalized first to trim and collapse all extra whitespace. The original\n // regexes are exported for userland consumption and lower level usage. A\n // future breaking change could export the safer regex only with a note that\n // all input should have extra whitespace removed.\n var safeRegexReplacements = [['\\\\s', 1], ['\\\\d', MAX_LENGTH], [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH]];\n var makeSafeRegex = function makeSafeRegex(value) {\n for (var _i = 0, _safeRegexReplacement = safeRegexReplacements; _i < _safeRegexReplacement.length; _i++) {\n var _safeRegexReplacement2 = _slicedToArray(_safeRegexReplacement[_i], 2),\n token = _safeRegexReplacement2[0],\n max = _safeRegexReplacement2[1];\n value = value.split(\"\".concat(token, \"*\")).join(\"\".concat(token, \"{0,\").concat(max, \"}\")).split(\"\".concat(token, \"+\")).join(\"\".concat(token, \"{1,\").concat(max, \"}\"));\n }\n return value;\n };\n var createToken = function createToken(name, value, isGlobal) {\n var safe = makeSafeRegex(value);\n var index = R++;\n debug(name, index, value);\n t[name] = index;\n src[index] = value;\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined);\n safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined);\n };\n\n // The following Regular Expressions can be used for tokenizing,\n // validating, and parsing SemVer version strings.\n\n // ## Numeric Identifier\n // A single `0`, or a non-zero digit followed by zero or more digits.\n\n createToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*');\n createToken('NUMERICIDENTIFIERLOOSE', '\\\\d+');\n\n // ## Non-numeric Identifier\n // Zero or more digits, followed by a letter or hyphen, and then zero or\n // more letters, digits, or hyphens.\n\n createToken('NONNUMERICIDENTIFIER', \"\\\\d*[a-zA-Z-]\".concat(LETTERDASHNUMBER, \"*\"));\n\n // ## Main Version\n // Three dot-separated numeric identifiers.\n\n createToken('MAINVERSION', \"(\".concat(src[t.NUMERICIDENTIFIER], \")\\\\.\") + \"(\".concat(src[t.NUMERICIDENTIFIER], \")\\\\.\") + \"(\".concat(src[t.NUMERICIDENTIFIER], \")\"));\n createToken('MAINVERSIONLOOSE', \"(\".concat(src[t.NUMERICIDENTIFIERLOOSE], \")\\\\.\") + \"(\".concat(src[t.NUMERICIDENTIFIERLOOSE], \")\\\\.\") + \"(\".concat(src[t.NUMERICIDENTIFIERLOOSE], \")\"));\n\n // ## Pre-release Version Identifier\n // A numeric identifier, or a non-numeric identifier.\n\n createToken('PRERELEASEIDENTIFIER', \"(?:\".concat(src[t.NUMERICIDENTIFIER], \"|\").concat(src[t.NONNUMERICIDENTIFIER], \")\"));\n createToken('PRERELEASEIDENTIFIERLOOSE', \"(?:\".concat(src[t.NUMERICIDENTIFIERLOOSE], \"|\").concat(src[t.NONNUMERICIDENTIFIER], \")\"));\n\n // ## Pre-release Version\n // Hyphen, followed by one or more dot-separated pre-release version\n // identifiers.\n\n createToken('PRERELEASE', \"(?:-(\".concat(src[t.PRERELEASEIDENTIFIER], \"(?:\\\\.\").concat(src[t.PRERELEASEIDENTIFIER], \")*))\"));\n createToken('PRERELEASELOOSE', \"(?:-?(\".concat(src[t.PRERELEASEIDENTIFIERLOOSE], \"(?:\\\\.\").concat(src[t.PRERELEASEIDENTIFIERLOOSE], \")*))\"));\n\n // ## Build Metadata Identifier\n // Any combination of digits, letters, or hyphens.\n\n createToken('BUILDIDENTIFIER', \"\".concat(LETTERDASHNUMBER, \"+\"));\n\n // ## Build Metadata\n // Plus sign, followed by one or more period-separated build metadata\n // identifiers.\n\n createToken('BUILD', \"(?:\\\\+(\".concat(src[t.BUILDIDENTIFIER], \"(?:\\\\.\").concat(src[t.BUILDIDENTIFIER], \")*))\"));\n\n // ## Full Version String\n // A main version, followed optionally by a pre-release version and\n // build metadata.\n\n // Note that the only major, minor, patch, and pre-release sections of\n // the version string are capturing groups. The build metadata is not a\n // capturing group, because it should not ever be used in version\n // comparison.\n\n createToken('FULLPLAIN', \"v?\".concat(src[t.MAINVERSION]).concat(src[t.PRERELEASE], \"?\").concat(src[t.BUILD], \"?\"));\n createToken('FULL', \"^\".concat(src[t.FULLPLAIN], \"$\"));\n\n // like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n // also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n // common in the npm registry.\n createToken('LOOSEPLAIN', \"[v=\\\\s]*\".concat(src[t.MAINVERSIONLOOSE]).concat(src[t.PRERELEASELOOSE], \"?\").concat(src[t.BUILD], \"?\"));\n createToken('LOOSE', \"^\".concat(src[t.LOOSEPLAIN], \"$\"));\n createToken('GTLT', '((?:<|>)?=?)');\n\n // Something like \"2.*\" or \"1.2.x\".\n // Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n // Only the first item is strictly required.\n createToken('XRANGEIDENTIFIERLOOSE', \"\".concat(src[t.NUMERICIDENTIFIERLOOSE], \"|x|X|\\\\*\"));\n createToken('XRANGEIDENTIFIER', \"\".concat(src[t.NUMERICIDENTIFIER], \"|x|X|\\\\*\"));\n createToken('XRANGEPLAIN', \"[v=\\\\s]*(\".concat(src[t.XRANGEIDENTIFIER], \")\") + \"(?:\\\\.(\".concat(src[t.XRANGEIDENTIFIER], \")\") + \"(?:\\\\.(\".concat(src[t.XRANGEIDENTIFIER], \")\") + \"(?:\".concat(src[t.PRERELEASE], \")?\").concat(src[t.BUILD], \"?\") + \")?)?\");\n createToken('XRANGEPLAINLOOSE', \"[v=\\\\s]*(\".concat(src[t.XRANGEIDENTIFIERLOOSE], \")\") + \"(?:\\\\.(\".concat(src[t.XRANGEIDENTIFIERLOOSE], \")\") + \"(?:\\\\.(\".concat(src[t.XRANGEIDENTIFIERLOOSE], \")\") + \"(?:\".concat(src[t.PRERELEASELOOSE], \")?\").concat(src[t.BUILD], \"?\") + \")?)?\");\n createToken('XRANGE', \"^\".concat(src[t.GTLT], \"\\\\s*\").concat(src[t.XRANGEPLAIN], \"$\"));\n createToken('XRANGELOOSE', \"^\".concat(src[t.GTLT], \"\\\\s*\").concat(src[t.XRANGEPLAINLOOSE], \"$\"));\n\n // Coercion.\n // Extract anything that could conceivably be a part of a valid semver\n createToken('COERCE', \"\".concat('(^|[^\\\\d])' + '(\\\\d{1,').concat(MAX_SAFE_COMPONENT_LENGTH, \"})\") + \"(?:\\\\.(\\\\d{1,\".concat(MAX_SAFE_COMPONENT_LENGTH, \"}))?\") + \"(?:\\\\.(\\\\d{1,\".concat(MAX_SAFE_COMPONENT_LENGTH, \"}))?\") + \"(?:$|[^\\\\d])\");\n createToken('COERCERTL', src[t.COERCE], true);\n\n // Tilde ranges.\n // Meaning is \"reasonably at or greater than\"\n createToken('LONETILDE', '(?:~>?)');\n createToken('TILDETRIM', \"(\\\\s*)\".concat(src[t.LONETILDE], \"\\\\s+\"), true);\n exports.tildeTrimReplace = '$1~';\n createToken('TILDE', \"^\".concat(src[t.LONETILDE]).concat(src[t.XRANGEPLAIN], \"$\"));\n createToken('TILDELOOSE', \"^\".concat(src[t.LONETILDE]).concat(src[t.XRANGEPLAINLOOSE], \"$\"));\n\n // Caret ranges.\n // Meaning is \"at least and backwards compatible with\"\n createToken('LONECARET', '(?:\\\\^)');\n createToken('CARETTRIM', \"(\\\\s*)\".concat(src[t.LONECARET], \"\\\\s+\"), true);\n exports.caretTrimReplace = '$1^';\n createToken('CARET', \"^\".concat(src[t.LONECARET]).concat(src[t.XRANGEPLAIN], \"$\"));\n createToken('CARETLOOSE', \"^\".concat(src[t.LONECARET]).concat(src[t.XRANGEPLAINLOOSE], \"$\"));\n\n // A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\n createToken('COMPARATORLOOSE', \"^\".concat(src[t.GTLT], \"\\\\s*(\").concat(src[t.LOOSEPLAIN], \")$|^$\"));\n createToken('COMPARATOR', \"^\".concat(src[t.GTLT], \"\\\\s*(\").concat(src[t.FULLPLAIN], \")$|^$\"));\n\n // An expression to strip any whitespace between the gtlt and the thing\n // it modifies, so that `> 1.2.3` ==> `>1.2.3`\n createToken('COMPARATORTRIM', \"(\\\\s*)\".concat(src[t.GTLT], \"\\\\s*(\").concat(src[t.LOOSEPLAIN], \"|\").concat(src[t.XRANGEPLAIN], \")\"), true);\n exports.comparatorTrimReplace = '$1$2$3';\n\n // Something like `1.2.3 - 1.2.4`\n // Note that these all use the loose form, because they'll be\n // checked against either the strict or loose comparator form\n // later.\n createToken('HYPHENRANGE', \"^\\\\s*(\".concat(src[t.XRANGEPLAIN], \")\") + \"\\\\s+-\\\\s+\" + \"(\".concat(src[t.XRANGEPLAIN], \")\") + \"\\\\s*$\");\n createToken('HYPHENRANGELOOSE', \"^\\\\s*(\".concat(src[t.XRANGEPLAINLOOSE], \")\") + \"\\\\s+-\\\\s+\" + \"(\".concat(src[t.XRANGEPLAINLOOSE], \")\") + \"\\\\s*$\");\n\n // Star ranges basically just allow anything at all.\n createToken('STAR', '(<|>)?=?\\\\s*\\\\*');\n // >=0.0.0 is like a star\n createToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$');\n createToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$');\n})(re$1, re$1.exports);\nvar reExports = re$1.exports;\nvar numeric = /^[0-9]+$/;\nvar compareIdentifiers$1 = function compareIdentifiers$1(a, b) {\n var anum = numeric.test(a);\n var bnum = numeric.test(b);\n if (anum && bnum) {\n a = +a;\n b = +b;\n }\n return a === b ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a < b ? -1 : 1;\n};\nvar rcompareIdentifiers = function rcompareIdentifiers(a, b) {\n return compareIdentifiers$1(b, a);\n};\nvar identifiers = {\n compareIdentifiers: compareIdentifiers$1,\n rcompareIdentifiers: rcompareIdentifiers\n};\nvar debug = debug_1;\nvar MAX_LENGTH = constants.MAX_LENGTH,\n MAX_SAFE_INTEGER = constants.MAX_SAFE_INTEGER;\nvar re = reExports.safeRe,\n t = reExports.t;\nvar parseOptions = parseOptions_1;\nvar compareIdentifiers = identifiers.compareIdentifiers;\nvar SemVer$1 = /*#__PURE__*/function () {\n function SemVer(version, options) {\n _classCallCheck(this, SemVer);\n options = parseOptions(options);\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose && version.includePrerelease === !!options.includePrerelease) {\n return version;\n } else {\n version = version.version;\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(\"Invalid version. Must be a string. Got type \\\"\".concat(typeof version, \"\\\".\"));\n }\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\"version is longer than \".concat(MAX_LENGTH, \" characters\"));\n }\n debug('SemVer', version, options);\n this.options = options;\n this.loose = !!options.loose;\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease;\n var m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]);\n if (!m) {\n throw new TypeError(\"Invalid Version: \".concat(version));\n }\n this.raw = version;\n\n // these are actually numbers\n this.major = +m[1];\n this.minor = +m[2];\n this.patch = +m[3];\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version');\n }\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version');\n }\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version');\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = [];\n } else {\n this.prerelease = m[4].split('.').map(function (id) {\n if (/^[0-9]+$/.test(id)) {\n var num = +id;\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num;\n }\n }\n return id;\n });\n }\n this.build = m[5] ? m[5].split('.') : [];\n this.format();\n }\n _createClass(SemVer, [{\n key: \"format\",\n value: function format() {\n this.version = \"\".concat(this.major, \".\").concat(this.minor, \".\").concat(this.patch);\n if (this.prerelease.length) {\n this.version += \"-\".concat(this.prerelease.join('.'));\n }\n return this.version;\n }\n }, {\n key: \"toString\",\n value: function toString() {\n return this.version;\n }\n }, {\n key: \"compare\",\n value: function compare(other) {\n debug('SemVer.compare', this.version, this.options, other);\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0;\n }\n other = new SemVer(other, this.options);\n }\n if (other.version === this.version) {\n return 0;\n }\n return this.compareMain(other) || this.comparePre(other);\n }\n }, {\n key: \"compareMain\",\n value: function compareMain(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch);\n }\n }, {\n key: \"comparePre\",\n value: function comparePre(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1;\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1;\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0;\n }\n var i = 0;\n do {\n var a = this.prerelease[i];\n var b = other.prerelease[i];\n debug('prerelease compare', i, a, b);\n if (a === undefined && b === undefined) {\n return 0;\n } else if (b === undefined) {\n return 1;\n } else if (a === undefined) {\n return -1;\n } else if (a === b) {\n continue;\n } else {\n return compareIdentifiers(a, b);\n }\n } while (++i);\n }\n }, {\n key: \"compareBuild\",\n value: function compareBuild(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n var i = 0;\n do {\n var a = this.build[i];\n var b = other.build[i];\n debug('prerelease compare', i, a, b);\n if (a === undefined && b === undefined) {\n return 0;\n } else if (b === undefined) {\n return 1;\n } else if (a === undefined) {\n return -1;\n } else if (a === b) {\n continue;\n } else {\n return compareIdentifiers(a, b);\n }\n } while (++i);\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n }, {\n key: \"inc\",\n value: function inc(release, identifier, identifierBase) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor = 0;\n this.major++;\n this.inc('pre', identifier, identifierBase);\n break;\n case 'preminor':\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor++;\n this.inc('pre', identifier, identifierBase);\n break;\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0;\n this.inc('patch', identifier, identifierBase);\n this.inc('pre', identifier, identifierBase);\n break;\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier, identifierBase);\n }\n this.inc('pre', identifier, identifierBase);\n break;\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {\n this.major++;\n }\n this.minor = 0;\n this.patch = 0;\n this.prerelease = [];\n break;\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++;\n }\n this.patch = 0;\n this.prerelease = [];\n break;\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++;\n }\n this.prerelease = [];\n break;\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre':\n {\n var base = Number(identifierBase) ? 1 : 0;\n if (!identifier && identifierBase === false) {\n throw new Error('invalid increment argument: identifier is empty');\n }\n if (this.prerelease.length === 0) {\n this.prerelease = [base];\n } else {\n var i = this.prerelease.length;\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++;\n i = -2;\n }\n }\n if (i === -1) {\n // didn't increment anything\n if (identifier === this.prerelease.join('.') && identifierBase === false) {\n throw new Error('invalid increment argument: identifier already exists');\n }\n this.prerelease.push(base);\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n var prerelease = [identifier, base];\n if (identifierBase === false) {\n prerelease = [identifier];\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease;\n }\n } else {\n this.prerelease = prerelease;\n }\n }\n break;\n }\n default:\n throw new Error(\"invalid increment argument: \".concat(release));\n }\n this.raw = this.format();\n if (this.build.length) {\n this.raw += \"+\".concat(this.build.join('.'));\n }\n return this;\n }\n }]);\n return SemVer;\n}();\nvar semver = SemVer$1;\nvar SemVer = semver;\nvar compare$6 = function compare$6(a, b, loose) {\n return new SemVer(a, loose).compare(new SemVer(b, loose));\n};\nvar compare_1 = compare$6;\nvar compare$5 = compare_1;\nvar eq$1 = function eq$1(a, b, loose) {\n return compare$5(a, b, loose) === 0;\n};\nvar eq_1 = eq$1;\nvar compare$4 = compare_1;\nvar neq$1 = function neq$1(a, b, loose) {\n return compare$4(a, b, loose) !== 0;\n};\nvar neq_1 = neq$1;\nvar compare$3 = compare_1;\nvar gt$1 = function gt$1(a, b, loose) {\n return compare$3(a, b, loose) > 0;\n};\nvar gt_1 = gt$1;\nvar compare$2 = compare_1;\nvar gte$1 = function gte$1(a, b, loose) {\n return compare$2(a, b, loose) >= 0;\n};\nvar gte_1 = gte$1;\nvar compare$1 = compare_1;\nvar lt$1 = function lt$1(a, b, loose) {\n return compare$1(a, b, loose) < 0;\n};\nvar lt_1 = lt$1;\nvar compare = compare_1;\nvar lte$1 = function lte$1(a, b, loose) {\n return compare(a, b, loose) <= 0;\n};\nvar lte_1 = lte$1;\nvar eq = eq_1;\nvar neq = neq_1;\nvar gt = gt_1;\nvar gte = gte_1;\nvar lt = lt_1;\nvar lte = lte_1;\nvar cmp = function cmp(a, op, b, loose) {\n switch (op) {\n case '===':\n if (typeof a === 'object') {\n a = a.version;\n }\n if (typeof b === 'object') {\n b = b.version;\n }\n return a === b;\n case '!==':\n if (typeof a === 'object') {\n a = a.version;\n }\n if (typeof b === 'object') {\n b = b.version;\n }\n return a !== b;\n case '':\n case '=':\n case '==':\n return eq(a, b, loose);\n case '!=':\n return neq(a, b, loose);\n case '>':\n return gt(a, b, loose);\n case '>=':\n return gte(a, b, loose);\n case '<':\n return lt(a, b, loose);\n case '<=':\n return lte(a, b, loose);\n default:\n throw new TypeError(\"Invalid operator: \".concat(op));\n }\n};\nvar cmp_1 = cmp;\nvar comparator;\nvar hasRequiredComparator;\nfunction requireComparator() {\n if (hasRequiredComparator) return comparator;\n hasRequiredComparator = 1;\n var ANY = Symbol('SemVer ANY');\n // hoisted class for cyclic dependency\n var Comparator = /*#__PURE__*/function () {\n function Comparator(comp, options) {\n _classCallCheck(this, Comparator);\n options = parseOptions(options);\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp;\n } else {\n comp = comp.value;\n }\n }\n comp = comp.trim().split(/\\s+/).join(' ');\n debug('comparator', comp, options);\n this.options = options;\n this.loose = !!options.loose;\n this.parse(comp);\n if (this.semver === ANY) {\n this.value = '';\n } else {\n this.value = this.operator + this.semver.version;\n }\n debug('comp', this);\n }\n _createClass(Comparator, [{\n key: \"parse\",\n value: function parse(comp) {\n var r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR];\n var m = comp.match(r);\n if (!m) {\n throw new TypeError(\"Invalid comparator: \".concat(comp));\n }\n this.operator = m[1] !== undefined ? m[1] : '';\n if (this.operator === '=') {\n this.operator = '';\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY;\n } else {\n this.semver = new SemVer(m[2], this.options.loose);\n }\n }\n }, {\n key: \"toString\",\n value: function toString() {\n return this.value;\n }\n }, {\n key: \"test\",\n value: function test(version) {\n debug('Comparator.test', version, this.options.loose);\n if (this.semver === ANY || version === ANY) {\n return true;\n }\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options);\n } catch (er) {\n return false;\n }\n }\n return cmp(version, this.operator, this.semver, this.options);\n }\n }, {\n key: \"intersects\",\n value: function intersects(comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required');\n }\n if (this.operator === '') {\n if (this.value === '') {\n return true;\n }\n return new Range(comp.value, options).test(this.value);\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true;\n }\n return new Range(this.value, options).test(comp.semver);\n }\n options = parseOptions(options);\n\n // Special cases where nothing can possibly be lower\n if (options.includePrerelease && (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n return false;\n }\n if (!options.includePrerelease && (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n return false;\n }\n\n // Same direction increasing (> or >=)\n if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n return true;\n }\n // Same direction decreasing (< or <=)\n if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n return true;\n }\n // same SemVer and both sides are inclusive (<= or >=)\n if (this.semver.version === comp.semver.version && this.operator.includes('=') && comp.operator.includes('=')) {\n return true;\n }\n // opposite directions less than\n if (cmp(this.semver, '<', comp.semver, options) && this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n return true;\n }\n // opposite directions greater than\n if (cmp(this.semver, '>', comp.semver, options) && this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n return true;\n }\n return false;\n }\n }], [{\n key: \"ANY\",\n get: function get() {\n return ANY;\n }\n }]);\n return Comparator;\n }();\n comparator = Comparator;\n var parseOptions = parseOptions_1;\n var re = reExports.safeRe,\n t = reExports.t;\n var cmp = cmp_1;\n var debug = debug_1;\n var SemVer = semver;\n var Range = requireRange();\n return comparator;\n}\nvar range;\nvar hasRequiredRange;\nfunction requireRange() {\n if (hasRequiredRange) return range;\n hasRequiredRange = 1;\n // hoisted class for cyclic dependency\n var Range = /*#__PURE__*/function () {\n function Range(range, options) {\n var _this5 = this;\n _classCallCheck(this, Range);\n options = parseOptions(options);\n if (range instanceof Range) {\n if (range.loose === !!options.loose && range.includePrerelease === !!options.includePrerelease) {\n return range;\n } else {\n return new Range(range.raw, options);\n }\n }\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value;\n this.set = [[range]];\n this.format();\n return this;\n }\n this.options = options;\n this.loose = !!options.loose;\n this.includePrerelease = !!options.includePrerelease;\n\n // First reduce all whitespace as much as possible so we do not have to rely\n // on potentially slow regexes like \\s*. This is then stored and used for\n // future error messages as well.\n this.raw = range.trim().split(/\\s+/).join(' ');\n\n // First, split on ||\n this.set = this.raw.split('||')\n // map the range to a 2d array of comparators\n .map(function (r) {\n return _this5.parseRange(r.trim());\n })\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(function (c) {\n return c.length;\n });\n if (!this.set.length) {\n throw new TypeError(\"Invalid SemVer Range: \".concat(this.raw));\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n var first = this.set[0];\n this.set = this.set.filter(function (c) {\n return !isNullSet(c[0]);\n });\n if (this.set.length === 0) {\n this.set = [first];\n } else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n var _iterator = _createForOfIteratorHelper(this.set),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var c = _step.value;\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c];\n break;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n }\n this.format();\n }\n _createClass(Range, [{\n key: \"format\",\n value: function format() {\n this.range = this.set.map(function (comps) {\n return comps.join(' ').trim();\n }).join('||').trim();\n return this.range;\n }\n }, {\n key: \"toString\",\n value: function toString() {\n return this.range;\n }\n }, {\n key: \"parseRange\",\n value: function parseRange(range) {\n var _this6 = this;\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n var memoOpts = (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) | (this.options.loose && FLAG_LOOSE);\n var memoKey = memoOpts + ':' + range;\n var cached = cache.get(memoKey);\n if (cached) {\n return cached;\n }\n var loose = this.options.loose;\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n var hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE];\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease));\n debug('hyphen replace', range);\n\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace);\n debug('comparator trim', range);\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace);\n debug('tilde trim', range);\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace);\n debug('caret trim', range);\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n var rangeList = range.split(' ').map(function (comp) {\n return parseComparator(comp, _this6.options);\n }).join(' ').split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(function (comp) {\n return replaceGTE0(comp, _this6.options);\n });\n if (loose) {\n // in loose mode, throw out any that are not valid comparators\n rangeList = rangeList.filter(function (comp) {\n debug('loose invalid filter', comp, _this6.options);\n return !!comp.match(re[t.COMPARATORLOOSE]);\n });\n }\n debug('range list', rangeList);\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n var rangeMap = new Map();\n var comparators = rangeList.map(function (comp) {\n return new Comparator(comp, _this6.options);\n });\n var _iterator2 = _createForOfIteratorHelper(comparators),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var comp = _step2.value;\n if (isNullSet(comp)) {\n return [comp];\n }\n rangeMap.set(comp.value, comp);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n if (rangeMap.size > 1 && rangeMap.has('')) {\n rangeMap.delete('');\n }\n var result = _toConsumableArray(rangeMap.values());\n cache.set(memoKey, result);\n return result;\n }\n }, {\n key: \"intersects\",\n value: function intersects(range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required');\n }\n return this.set.some(function (thisComparators) {\n return isSatisfiable(thisComparators, options) && range.set.some(function (rangeComparators) {\n return isSatisfiable(rangeComparators, options) && thisComparators.every(function (thisComparator) {\n return rangeComparators.every(function (rangeComparator) {\n return thisComparator.intersects(rangeComparator, options);\n });\n });\n });\n });\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n }, {\n key: \"test\",\n value: function test(version) {\n if (!version) {\n return false;\n }\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options);\n } catch (er) {\n return false;\n }\n }\n for (var i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true;\n }\n }\n return false;\n }\n }]);\n return Range;\n }();\n range = Range;\n var LRU = lruCache;\n var cache = new LRU({\n max: 1000\n });\n var parseOptions = parseOptions_1;\n var Comparator = requireComparator();\n var debug = debug_1;\n var SemVer = semver;\n var re = reExports.safeRe,\n t = reExports.t,\n comparatorTrimReplace = reExports.comparatorTrimReplace,\n tildeTrimReplace = reExports.tildeTrimReplace,\n caretTrimReplace = reExports.caretTrimReplace;\n var FLAG_INCLUDE_PRERELEASE = constants.FLAG_INCLUDE_PRERELEASE,\n FLAG_LOOSE = constants.FLAG_LOOSE;\n var isNullSet = function isNullSet(c) {\n return c.value === '<0.0.0-0';\n };\n var isAny = function isAny(c) {\n return c.value === '';\n };\n\n // take a set of comparators and determine whether there\n // exists a version which can satisfy it\n var isSatisfiable = function isSatisfiable(comparators, options) {\n var result = true;\n var remainingComparators = comparators.slice();\n var testComparator = remainingComparators.pop();\n while (result && remainingComparators.length) {\n result = remainingComparators.every(function (otherComparator) {\n return testComparator.intersects(otherComparator, options);\n });\n testComparator = remainingComparators.pop();\n }\n return result;\n };\n\n // comprised of xranges, tildes, stars, and gtlt's at this point.\n // already replaced the hyphen ranges\n // turn into a set of JUST comparators.\n var parseComparator = function parseComparator(comp, options) {\n debug('comp', comp, options);\n comp = replaceCarets(comp, options);\n debug('caret', comp);\n comp = replaceTildes(comp, options);\n debug('tildes', comp);\n comp = replaceXRanges(comp, options);\n debug('xrange', comp);\n comp = replaceStars(comp, options);\n debug('stars', comp);\n return comp;\n };\n var isX = function isX(id) {\n return !id || id.toLowerCase() === 'x' || id === '*';\n };\n\n // ~, ~> --> * (any, kinda silly)\n // ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n // ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n // ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n // ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n // ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n // ~0.0.1 --> >=0.0.1 <0.1.0-0\n var replaceTildes = function replaceTildes(comp, options) {\n return comp.trim().split(/\\s+/).map(function (c) {\n return replaceTilde(c, options);\n }).join(' ');\n };\n var replaceTilde = function replaceTilde(comp, options) {\n var r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE];\n return comp.replace(r, function (_, M, m, p, pr) {\n debug('tilde', comp, _, M, m, p, pr);\n var ret;\n if (isX(M)) {\n ret = '';\n } else if (isX(m)) {\n ret = \">=\".concat(M, \".0.0 <\").concat(+M + 1, \".0.0-0\");\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = \">=\".concat(M, \".\").concat(m, \".0 <\").concat(M, \".\").concat(+m + 1, \".0-0\");\n } else if (pr) {\n debug('replaceTilde pr', pr);\n ret = \">=\".concat(M, \".\").concat(m, \".\").concat(p, \"-\").concat(pr, \" <\").concat(M, \".\").concat(+m + 1, \".0-0\");\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = \">=\".concat(M, \".\").concat(m, \".\").concat(p, \" <\").concat(M, \".\").concat(+m + 1, \".0-0\");\n }\n debug('tilde return', ret);\n return ret;\n });\n };\n\n // ^ --> * (any, kinda silly)\n // ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n // ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n // ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n // ^1.2.3 --> >=1.2.3 <2.0.0-0\n // ^1.2.0 --> >=1.2.0 <2.0.0-0\n // ^0.0.1 --> >=0.0.1 <0.0.2-0\n // ^0.1.0 --> >=0.1.0 <0.2.0-0\n var replaceCarets = function replaceCarets(comp, options) {\n return comp.trim().split(/\\s+/).map(function (c) {\n return replaceCaret(c, options);\n }).join(' ');\n };\n var replaceCaret = function replaceCaret(comp, options) {\n debug('caret', comp, options);\n var r = options.loose ? re[t.CARETLOOSE] : re[t.CARET];\n var z = options.includePrerelease ? '-0' : '';\n return comp.replace(r, function (_, M, m, p, pr) {\n debug('caret', comp, _, M, m, p, pr);\n var ret;\n if (isX(M)) {\n ret = '';\n } else if (isX(m)) {\n ret = \">=\".concat(M, \".0.0\").concat(z, \" <\").concat(+M + 1, \".0.0-0\");\n } else if (isX(p)) {\n if (M === '0') {\n ret = \">=\".concat(M, \".\").concat(m, \".0\").concat(z, \" <\").concat(M, \".\").concat(+m + 1, \".0-0\");\n } else {\n ret = \">=\".concat(M, \".\").concat(m, \".0\").concat(z, \" <\").concat(+M + 1, \".0.0-0\");\n }\n } else if (pr) {\n debug('replaceCaret pr', pr);\n if (M === '0') {\n if (m === '0') {\n ret = \">=\".concat(M, \".\").concat(m, \".\").concat(p, \"-\").concat(pr, \" <\").concat(M, \".\").concat(m, \".\").concat(+p + 1, \"-0\");\n } else {\n ret = \">=\".concat(M, \".\").concat(m, \".\").concat(p, \"-\").concat(pr, \" <\").concat(M, \".\").concat(+m + 1, \".0-0\");\n }\n } else {\n ret = \">=\".concat(M, \".\").concat(m, \".\").concat(p, \"-\").concat(pr, \" <\").concat(+M + 1, \".0.0-0\");\n }\n } else {\n debug('no pr');\n if (M === '0') {\n if (m === '0') {\n ret = \">=\".concat(M, \".\").concat(m, \".\").concat(p).concat(z, \" <\").concat(M, \".\").concat(m, \".\").concat(+p + 1, \"-0\");\n } else {\n ret = \">=\".concat(M, \".\").concat(m, \".\").concat(p).concat(z, \" <\").concat(M, \".\").concat(+m + 1, \".0-0\");\n }\n } else {\n ret = \">=\".concat(M, \".\").concat(m, \".\").concat(p, \" <\").concat(+M + 1, \".0.0-0\");\n }\n }\n debug('caret return', ret);\n return ret;\n });\n };\n var replaceXRanges = function replaceXRanges(comp, options) {\n debug('replaceXRanges', comp, options);\n return comp.split(/\\s+/).map(function (c) {\n return replaceXRange(c, options);\n }).join(' ');\n };\n var replaceXRange = function replaceXRange(comp, options) {\n comp = comp.trim();\n var r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE];\n return comp.replace(r, function (ret, gtlt, M, m, p, pr) {\n debug('xRange', comp, ret, gtlt, M, m, p, pr);\n var xM = isX(M);\n var xm = xM || isX(m);\n var xp = xm || isX(p);\n var anyX = xp;\n if (gtlt === '=' && anyX) {\n gtlt = '';\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : '';\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0';\n } else {\n // nothing is forbidden\n ret = '*';\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0;\n }\n p = 0;\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>=';\n if (xm) {\n M = +M + 1;\n m = 0;\n p = 0;\n } else {\n m = +m + 1;\n p = 0;\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<';\n if (xm) {\n M = +M + 1;\n } else {\n m = +m + 1;\n }\n }\n if (gtlt === '<') {\n pr = '-0';\n }\n ret = \"\".concat(gtlt + M, \".\").concat(m, \".\").concat(p).concat(pr);\n } else if (xm) {\n ret = \">=\".concat(M, \".0.0\").concat(pr, \" <\").concat(+M + 1, \".0.0-0\");\n } else if (xp) {\n ret = \">=\".concat(M, \".\").concat(m, \".0\").concat(pr, \" <\").concat(M, \".\").concat(+m + 1, \".0-0\");\n }\n debug('xRange return', ret);\n return ret;\n });\n };\n\n // Because * is AND-ed with everything else in the comparator,\n // and '' means \"any version\", just remove the *s entirely.\n var replaceStars = function replaceStars(comp, options) {\n debug('replaceStars', comp, options);\n // Looseness is ignored here. star is always as loose as it gets!\n return comp.trim().replace(re[t.STAR], '');\n };\n var replaceGTE0 = function replaceGTE0(comp, options) {\n debug('replaceGTE0', comp, options);\n return comp.trim().replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '');\n };\n\n // This function is passed to string.replace(re[t.HYPHENRANGE])\n // M, m, patch, prerelease, build\n // 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n // 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n // 1.2 - 3.4 => >=1.2.0 <3.5.0-0\n var hyphenReplace = function hyphenReplace(incPr) {\n return function ($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr, tb) {\n if (isX(fM)) {\n from = '';\n } else if (isX(fm)) {\n from = \">=\".concat(fM, \".0.0\").concat(incPr ? '-0' : '');\n } else if (isX(fp)) {\n from = \">=\".concat(fM, \".\").concat(fm, \".0\").concat(incPr ? '-0' : '');\n } else if (fpr) {\n from = \">=\".concat(from);\n } else {\n from = \">=\".concat(from).concat(incPr ? '-0' : '');\n }\n if (isX(tM)) {\n to = '';\n } else if (isX(tm)) {\n to = \"<\".concat(+tM + 1, \".0.0-0\");\n } else if (isX(tp)) {\n to = \"<\".concat(tM, \".\").concat(+tm + 1, \".0-0\");\n } else if (tpr) {\n to = \"<=\".concat(tM, \".\").concat(tm, \".\").concat(tp, \"-\").concat(tpr);\n } else if (incPr) {\n to = \"<\".concat(tM, \".\").concat(tm, \".\").concat(+tp + 1, \"-0\");\n } else {\n to = \"<=\".concat(to);\n }\n return \"\".concat(from, \" \").concat(to).trim();\n };\n };\n var testSet = function testSet(set, version, options) {\n for (var i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false;\n }\n }\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (var _i2 = 0; _i2 < set.length; _i2++) {\n debug(set[_i2].semver);\n if (set[_i2].semver === Comparator.ANY) {\n continue;\n }\n if (set[_i2].semver.prerelease.length > 0) {\n var allowed = set[_i2].semver;\n if (allowed.major === version.major && allowed.minor === version.minor && allowed.patch === version.patch) {\n return true;\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false;\n }\n return true;\n };\n return range;\n}\nvar Range = requireRange();\nvar satisfies = function satisfies(version, range, options) {\n try {\n range = new Range(range, options);\n } catch (er) {\n return false;\n }\n return range.test(version);\n};\nvar satisfies_1 = satisfies;\nvar satisfies$1 = /*@__PURE__*/getDefaultExportFromCjs(satisfies_1);\n\n/**\n * Open editor url in a new window, and pass a message.\n */\nfunction post(window, url, data) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n var editor = window.open(url);\n var wait = 10000;\n var step = 250;\n var _URL = new URL(url),\n origin = _URL.origin;\n // eslint-disable-next-line no-bitwise\n var count = ~~(wait / step);\n function listen(evt) {\n if (evt.source === editor) {\n count = 0;\n window.removeEventListener('message', listen, false);\n }\n }\n window.addEventListener('message', listen, false);\n\n // send message\n // periodically resend until ack received or timeout\n function send() {\n if (count <= 0) {\n return;\n }\n editor.postMessage(data, origin);\n setTimeout(send, step);\n count -= 1;\n }\n setTimeout(send, step);\n}\n\n// generated with build-style.sh\nvar embedStyle = \".vega-embed {\\n position: relative;\\n display: inline-block;\\n box-sizing: border-box;\\n}\\n.vega-embed.has-actions {\\n padding-right: 38px;\\n}\\n.vega-embed details:not([open]) > :not(summary) {\\n display: none !important;\\n}\\n.vega-embed summary {\\n list-style: none;\\n position: absolute;\\n top: 0;\\n right: 0;\\n padding: 6px;\\n z-index: 1000;\\n background: white;\\n box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.1);\\n color: #1b1e23;\\n border: 1px solid #aaa;\\n border-radius: 999px;\\n opacity: 0.2;\\n transition: opacity 0.4s ease-in;\\n cursor: pointer;\\n line-height: 0px;\\n}\\n.vega-embed summary::-webkit-details-marker {\\n display: none;\\n}\\n.vega-embed summary:active {\\n box-shadow: #aaa 0px 0px 0px 1px inset;\\n}\\n.vega-embed summary svg {\\n width: 14px;\\n height: 14px;\\n}\\n.vega-embed details[open] summary {\\n opacity: 0.7;\\n}\\n.vega-embed:hover summary, .vega-embed:focus-within summary {\\n opacity: 1 !important;\\n transition: opacity 0.2s ease;\\n}\\n.vega-embed .vega-actions {\\n position: absolute;\\n z-index: 1001;\\n top: 35px;\\n right: -9px;\\n display: flex;\\n flex-direction: column;\\n padding-bottom: 8px;\\n padding-top: 8px;\\n border-radius: 4px;\\n box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.2);\\n border: 1px solid #d9d9d9;\\n background: white;\\n animation-duration: 0.15s;\\n animation-name: scale-in;\\n animation-timing-function: cubic-bezier(0.2, 0, 0.13, 1.5);\\n text-align: left;\\n}\\n.vega-embed .vega-actions a {\\n padding: 8px 16px;\\n font-family: sans-serif;\\n font-size: 14px;\\n font-weight: 600;\\n white-space: nowrap;\\n color: #434a56;\\n text-decoration: none;\\n}\\n.vega-embed .vega-actions a:hover, .vega-embed .vega-actions a:focus {\\n background-color: #f7f7f9;\\n color: black;\\n}\\n.vega-embed .vega-actions::before, .vega-embed .vega-actions::after {\\n content: \\\"\\\";\\n display: inline-block;\\n position: absolute;\\n}\\n.vega-embed .vega-actions::before {\\n left: auto;\\n right: 14px;\\n top: -16px;\\n border: 8px solid rgba(0, 0, 0, 0);\\n border-bottom-color: #d9d9d9;\\n}\\n.vega-embed .vega-actions::after {\\n left: auto;\\n right: 15px;\\n top: -14px;\\n border: 7px solid rgba(0, 0, 0, 0);\\n border-bottom-color: #fff;\\n}\\n.vega-embed .chart-wrapper.fit-x {\\n width: 100%;\\n}\\n.vega-embed .chart-wrapper.fit-y {\\n height: 100%;\\n}\\n\\n.vega-embed-wrapper {\\n max-width: 100%;\\n overflow: auto;\\n padding-right: 14px;\\n}\\n\\n@keyframes scale-in {\\n from {\\n opacity: 0;\\n transform: scale(0.6);\\n }\\n to {\\n opacity: 1;\\n transform: scale(1);\\n }\\n}\\n\";\nfunction mergeDeep(dest) {\n for (var _len2 = arguments.length, src = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n src[_key2 - 1] = arguments[_key2];\n }\n for (var _i3 = 0, _src = src; _i3 < _src.length; _i3++) {\n var s = _src[_i3];\n deepMerge_(dest, s);\n }\n return dest;\n}\nfunction deepMerge_(dest, src) {\n for (var _i4 = 0, _Object$keys = Object.keys(src); _i4 < _Object$keys.length; _i4++) {\n var property = _Object$keys[_i4];\n writeConfig(dest, property, src[property], true);\n }\n}\nvar name = \"vega-embed\";\nvar version$1 = \"6.22.2\";\nvar description = \"Publish Vega visualizations as embedded web components.\";\nvar keywords = [\"vega\", \"data\", \"visualization\", \"component\", \"embed\"];\nvar repository = {\n type: \"git\",\n url: \"http://github.com/vega/vega-embed.git\"\n};\nvar author = {\n name: \"UW Interactive Data Lab\",\n url: \"http://idl.cs.washington.edu\"\n};\nvar contributors = [{\n name: \"Dominik Moritz\",\n url: \"https://www.domoritz.de\"\n}];\nvar bugs = {\n url: \"https://github.com/vega/vega-embed/issues\"\n};\nvar homepage = \"https://github.com/vega/vega-embed#readme\";\nvar license = \"BSD-3-Clause\";\nvar main = \"build/vega-embed.js\";\nvar module = \"build/vega-embed.module.js\";\nvar unpkg = \"build/vega-embed.min.js\";\nvar jsdelivr = \"build/vega-embed.min.js\";\nvar types = \"build/vega-embed.module.d.ts\";\nvar files = [\"src\", \"build\", \"patches\"];\nvar devDependencies = {\n \"@babel/core\": \"^7.22.9\",\n \"@babel/plugin-proposal-async-generator-functions\": \"^7.20.7\",\n \"@babel/plugin-proposal-json-strings\": \"^7.18.6\",\n \"@babel/plugin-proposal-object-rest-spread\": \"^7.20.7\",\n \"@babel/plugin-proposal-optional-catch-binding\": \"^7.18.6\",\n \"@babel/plugin-transform-runtime\": \"^7.22.9\",\n \"@babel/preset-env\": \"^7.22.9\",\n \"@babel/preset-typescript\": \"^7.22.5\",\n \"@release-it/conventional-changelog\": \"^7.0.0\",\n \"@rollup/plugin-commonjs\": \"25.0.3\",\n \"@rollup/plugin-json\": \"^6.0.0\",\n \"@rollup/plugin-node-resolve\": \"^15.1.0\",\n \"@rollup/plugin-terser\": \"^0.4.3\",\n \"@types/semver\": \"^7.5.0\",\n \"@typescript-eslint/eslint-plugin\": \"^6.2.0\",\n \"@typescript-eslint/parser\": \"^6.2.0\",\n \"browser-sync\": \"^2.29.3\",\n concurrently: \"^8.2.0\",\n \"del-cli\": \"^5.0.0\",\n eslint: \"^8.46.0\",\n \"eslint-config-prettier\": \"^8.9.0\",\n \"eslint-plugin-jest\": \"^27.2.3\",\n \"eslint-plugin-prettier\": \"^5.0.0\",\n jest: \"^29.6.2\",\n \"jest-canvas-mock\": \"^2.5.2\",\n \"jest-environment-jsdom\": \"^29.6.2\",\n \"patch-package\": \"^8.0.0\",\n \"postinstall-postinstall\": \"^2.1.0\",\n prettier: \"^3.0.0\",\n \"release-it\": \"^16.1.3\",\n rollup: \"3.27.0\",\n \"rollup-plugin-bundle-size\": \"^1.0.3\",\n \"rollup-plugin-ts\": \"^3.2.0\",\n sass: \"^1.64.1\",\n typescript: \"^5.1.6\",\n vega: \"^5.22.1\",\n \"vega-lite\": \"^5.2.0\"\n};\nvar peerDependencies = {\n vega: \"^5.21.0\",\n \"vega-lite\": \"*\"\n};\nvar dependencies = {\n \"fast-json-patch\": \"^3.1.1\",\n \"json-stringify-pretty-compact\": \"^3.0.0\",\n semver: \"^7.5.4\",\n tslib: \"^2.6.1\",\n \"vega-interpreter\": \"^1.0.5\",\n \"vega-schema-url-parser\": \"^2.2.0\",\n \"vega-themes\": \"^2.14.0\",\n \"vega-tooltip\": \"^0.32.0\"\n};\nvar bundledDependencies = [\"yallist\"];\nvar scripts = {\n prebuild: \"yarn clean && yarn build:style\",\n build: \"rollup -c\",\n \"build:style\": \"./build-style.sh\",\n clean: \"del-cli build src/style.ts\",\n prepublishOnly: \"yarn clean && yarn build\",\n preversion: \"yarn lint && yarn test\",\n serve: \"browser-sync start --directory -s -f build *.html\",\n start: \"yarn build && concurrently --kill-others -n Server,Rollup 'yarn serve' 'rollup -c -w'\",\n pretest: \"yarn build:style\",\n test: \"jest\",\n \"test:inspect\": \"node --inspect-brk ./node_modules/.bin/jest --runInBand\",\n prettierbase: \"prettier '*.{css,scss,html}'\",\n format: \"eslint . --fix && yarn prettierbase --write\",\n lint: \"eslint . && yarn prettierbase --check\",\n release: \"release-it\"\n};\nvar pkg = {\n name: name,\n version: version$1,\n description: description,\n keywords: keywords,\n repository: repository,\n author: author,\n contributors: contributors,\n bugs: bugs,\n homepage: homepage,\n license: license,\n main: main,\n module: module,\n unpkg: unpkg,\n jsdelivr: jsdelivr,\n types: types,\n files: files,\n devDependencies: devDependencies,\n peerDependencies: peerDependencies,\n dependencies: dependencies,\n bundledDependencies: bundledDependencies,\n scripts: scripts\n};\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nvar version = pkg.version;\nvar vega = vegaImport;\nvar _vegaLite = vegaLiteImport;\n\n// For backwards compatibility with Vega-Lite before v4.\nvar w = typeof window !== 'undefined' ? window : undefined;\nif (_vegaLite === undefined && w !== null && w !== void 0 && (_w$vl = w.vl) !== null && _w$vl !== void 0 && _w$vl.compile) {\n _vegaLite = w.vl;\n}\nvar DEFAULT_ACTIONS = {\n export: {\n svg: true,\n png: true\n },\n source: true,\n compiled: true,\n editor: true\n};\nvar I18N = {\n CLICK_TO_VIEW_ACTIONS: 'Click to view actions',\n COMPILED_ACTION: 'View Compiled Vega',\n EDITOR_ACTION: 'Open in Vega Editor',\n PNG_ACTION: 'Save as PNG',\n SOURCE_ACTION: 'View Source',\n SVG_ACTION: 'Save as SVG'\n};\nvar NAMES = {\n vega: 'Vega',\n 'vega-lite': 'Vega-Lite'\n};\nvar VERSION = {\n vega: vega.version,\n 'vega-lite': _vegaLite ? _vegaLite.version : 'not available'\n};\nvar PREPROCESSOR = {\n vega: function vega(vgSpec) {\n return vgSpec;\n },\n 'vega-lite': function vegaLite(vlSpec, config) {\n return _vegaLite.compile(vlSpec, {\n config: config\n }).spec;\n }\n};\nvar SVG_CIRCLES = \"\\n\\n \\n \\n \\n\";\nvar CHART_WRAPPER_CLASS = 'chart-wrapper';\nfunction isTooltipHandler(h) {\n return typeof h === 'function';\n}\nfunction viewSource(source, sourceHeader, sourceFooter, mode) {\n var header = \"\".concat(sourceHeader, \"
        \");\n  var footer = \"
        \".concat(sourceFooter, \"\");\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n var win = window.open('');\n win.document.write(header + source + footer);\n win.document.title = \"\".concat(NAMES[mode], \" JSON Source\");\n}\n\n/**\n * Try to guess the type of spec.\n *\n * @param spec Vega or Vega-Lite spec.\n */\nfunction guessMode(spec, providedMode) {\n // Decide mode\n if (spec.$schema) {\n var parsed = schemaParser(spec.$schema);\n if (providedMode && providedMode !== parsed.library) {\n var _NAMES$providedMode;\n console.warn(\"The given visualization spec is written in \".concat(NAMES[parsed.library], \", but mode argument sets \").concat((_NAMES$providedMode = NAMES[providedMode]) !== null && _NAMES$providedMode !== void 0 ? _NAMES$providedMode : providedMode, \".\"));\n }\n var mode = parsed.library;\n if (!satisfies$1(VERSION[mode], \"^\".concat(parsed.version.slice(1)))) {\n console.warn(\"The input spec uses \".concat(NAMES[mode], \" \").concat(parsed.version, \", but the current version of \").concat(NAMES[mode], \" is v\").concat(VERSION[mode], \".\"));\n }\n return mode;\n }\n\n // try to guess from the provided spec\n if ('mark' in spec || 'encoding' in spec || 'layer' in spec || 'hconcat' in spec || 'vconcat' in spec || 'facet' in spec || 'repeat' in spec) {\n return 'vega-lite';\n }\n if ('marks' in spec || 'signals' in spec || 'scales' in spec || 'axes' in spec) {\n return 'vega';\n }\n return providedMode !== null && providedMode !== void 0 ? providedMode : 'vega';\n}\nfunction isLoader(o) {\n return !!(o && 'load' in o);\n}\nfunction createLoader(opts) {\n return isLoader(opts) ? opts : vega.loader(opts);\n}\nfunction embedOptionsFromUsermeta(parsedSpec) {\n var _parsedSpec$usermeta$, _parsedSpec$usermeta;\n var opts = (_parsedSpec$usermeta$ = (_parsedSpec$usermeta = parsedSpec.usermeta) === null || _parsedSpec$usermeta === void 0 ? void 0 : _parsedSpec$usermeta.embedOptions) !== null && _parsedSpec$usermeta$ !== void 0 ? _parsedSpec$usermeta$ : {};\n if (isString(opts.defaultStyle)) {\n // we don't allow styles set via usermeta since it would allow injection of logic (we set the style via innerHTML)\n opts.defaultStyle = false;\n }\n return opts;\n}\n\n/**\n * Embed a Vega visualization component in a web page. This function returns a promise.\n *\n * @param el DOM element in which to place component (DOM node or CSS selector).\n * @param spec String : A URL string from which to load the Vega specification.\n * Object : The Vega/Vega-Lite specification as a parsed JSON object.\n * @param opts A JavaScript object containing options for embedding.\n */\nfunction embed(_x, _x2) {\n return _embed2.apply(this, arguments);\n}\nfunction _embed2() {\n _embed2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(el, spec) {\n var _parsedOpts$config, _usermetaOpts$config;\n var opts,\n parsedSpec,\n loader,\n loadedEmbedOptions,\n usermetaLoader,\n _opts$loader,\n usermetaOpts,\n parsedOpts,\n mergedOpts,\n _args = arguments;\n return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n opts = _args.length > 2 && _args[2] !== undefined ? _args[2] : {};\n if (!isString(spec)) {\n _context2.next = 10;\n break;\n }\n loader = createLoader(opts.loader);\n _context2.t0 = JSON;\n _context2.next = 6;\n return loader.load(spec);\n case 6:\n _context2.t1 = _context2.sent;\n parsedSpec = _context2.t0.parse.call(_context2.t0, _context2.t1);\n _context2.next = 11;\n break;\n case 10:\n parsedSpec = spec;\n case 11:\n loadedEmbedOptions = embedOptionsFromUsermeta(parsedSpec);\n usermetaLoader = loadedEmbedOptions.loader; // either create the loader for the first time or create a new loader if the spec has new loader options\n if (!loader || usermetaLoader) {\n loader = createLoader((_opts$loader = opts.loader) !== null && _opts$loader !== void 0 ? _opts$loader : usermetaLoader);\n }\n _context2.next = 16;\n return loadOpts(loadedEmbedOptions, loader);\n case 16:\n usermetaOpts = _context2.sent;\n _context2.next = 19;\n return loadOpts(opts, loader);\n case 19:\n parsedOpts = _context2.sent;\n mergedOpts = _objectSpread(_objectSpread({}, mergeDeep(parsedOpts, usermetaOpts)), {}, {\n config: mergeConfig((_parsedOpts$config = parsedOpts.config) !== null && _parsedOpts$config !== void 0 ? _parsedOpts$config : {}, (_usermetaOpts$config = usermetaOpts.config) !== null && _usermetaOpts$config !== void 0 ? _usermetaOpts$config : {})\n });\n _context2.next = 23;\n return _embed(el, parsedSpec, mergedOpts, loader);\n case 23:\n return _context2.abrupt(\"return\", _context2.sent);\n case 24:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }));\n return _embed2.apply(this, arguments);\n}\nfunction loadOpts(_x3, _x4) {\n return _loadOpts.apply(this, arguments);\n}\nfunction _loadOpts() {\n _loadOpts = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(opt, loader) {\n var _opt$config;\n var config, patch;\n return _regeneratorRuntime.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n if (!isString(opt.config)) {\n _context3.next = 8;\n break;\n }\n _context3.t1 = JSON;\n _context3.next = 4;\n return loader.load(opt.config);\n case 4:\n _context3.t2 = _context3.sent;\n _context3.t0 = _context3.t1.parse.call(_context3.t1, _context3.t2);\n _context3.next = 9;\n break;\n case 8:\n _context3.t0 = (_opt$config = opt.config) !== null && _opt$config !== void 0 ? _opt$config : {};\n case 9:\n config = _context3.t0;\n if (!isString(opt.patch)) {\n _context3.next = 18;\n break;\n }\n _context3.t4 = JSON;\n _context3.next = 14;\n return loader.load(opt.patch);\n case 14:\n _context3.t5 = _context3.sent;\n _context3.t3 = _context3.t4.parse.call(_context3.t4, _context3.t5);\n _context3.next = 19;\n break;\n case 18:\n _context3.t3 = opt.patch;\n case 19:\n patch = _context3.t3;\n return _context3.abrupt(\"return\", _objectSpread(_objectSpread(_objectSpread({}, opt), patch ? {\n patch: patch\n } : {}), config ? {\n config: config\n } : {}));\n case 21:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3);\n }));\n return _loadOpts.apply(this, arguments);\n}\nfunction getRoot(el) {\n var _document$head;\n var possibleRoot = el.getRootNode ? el.getRootNode() : document;\n return possibleRoot instanceof ShadowRoot ? {\n root: possibleRoot,\n rootContainer: possibleRoot\n } : {\n root: document,\n rootContainer: (_document$head = document.head) !== null && _document$head !== void 0 ? _document$head : document.body\n };\n}\nfunction _embed(_x5, _x6) {\n return _embed3.apply(this, arguments);\n}\nfunction _embed3() {\n _embed3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5(el, spec) {\n var _opts$config, _opts$actions, _opts$renderer, _opts$logLevel, _opts$downloadFileNam, _ref, _vega$expressionInter;\n var opts,\n loader,\n config,\n actions,\n i18n,\n renderer,\n logLevel,\n downloadFileName,\n element,\n ID,\n _getRoot,\n root,\n rootContainer,\n style,\n mode,\n vgSpec,\n parsed,\n container,\n chartWrapper,\n patch,\n _name,\n expressionFunction,\n ast,\n runtime,\n view,\n handler,\n hover,\n _ref2,\n hoverSet,\n updateSet,\n documentClickHandler,\n wrapper,\n details,\n summary,\n ctrl,\n _loop,\n _i5,\n _arr,\n viewSourceLink,\n compileLink,\n _opts$editorUrl,\n editorUrl,\n editorLink,\n finalize,\n _args5 = arguments;\n return _regeneratorRuntime.wrap(function _callee5$(_context6) {\n while (1) switch (_context6.prev = _context6.next) {\n case 0:\n finalize = function _finalize() {\n if (documentClickHandler) {\n document.removeEventListener('click', documentClickHandler);\n }\n view.finalize();\n };\n opts = _args5.length > 2 && _args5[2] !== undefined ? _args5[2] : {};\n loader = _args5.length > 3 ? _args5[3] : undefined;\n config = opts.theme ? mergeConfig(themes[opts.theme], (_opts$config = opts.config) !== null && _opts$config !== void 0 ? _opts$config : {}) : opts.config;\n actions = isBoolean(opts.actions) ? opts.actions : mergeDeep({}, DEFAULT_ACTIONS, (_opts$actions = opts.actions) !== null && _opts$actions !== void 0 ? _opts$actions : {});\n i18n = _objectSpread(_objectSpread({}, I18N), opts.i18n);\n renderer = (_opts$renderer = opts.renderer) !== null && _opts$renderer !== void 0 ? _opts$renderer : 'canvas';\n logLevel = (_opts$logLevel = opts.logLevel) !== null && _opts$logLevel !== void 0 ? _opts$logLevel : vega.Warn;\n downloadFileName = (_opts$downloadFileNam = opts.downloadFileName) !== null && _opts$downloadFileNam !== void 0 ? _opts$downloadFileNam : 'visualization';\n element = typeof el === 'string' ? document.querySelector(el) : el;\n if (element) {\n _context6.next = 12;\n break;\n }\n throw new Error(\"\".concat(el, \" does not exist\"));\n case 12:\n if (opts.defaultStyle !== false) {\n ID = 'vega-embed-style';\n _getRoot = getRoot(element), root = _getRoot.root, rootContainer = _getRoot.rootContainer;\n if (!root.getElementById(ID)) {\n style = document.createElement('style');\n style.id = ID;\n style.innerHTML = opts.defaultStyle === undefined || opts.defaultStyle === true ? embedStyle.toString() : opts.defaultStyle;\n rootContainer.appendChild(style);\n }\n }\n mode = guessMode(spec, opts.mode);\n vgSpec = PREPROCESSOR[mode](spec, config);\n if (mode === 'vega-lite') {\n if (vgSpec.$schema) {\n parsed = schemaParser(vgSpec.$schema);\n if (!satisfies$1(VERSION.vega, \"^\".concat(parsed.version.slice(1)))) {\n console.warn(\"The compiled spec uses Vega \".concat(parsed.version, \", but current version is v\").concat(VERSION.vega, \".\"));\n }\n }\n }\n element.classList.add('vega-embed');\n if (actions) {\n element.classList.add('has-actions');\n }\n element.innerHTML = ''; // clear container\n container = element;\n if (actions) {\n chartWrapper = document.createElement('div');\n chartWrapper.classList.add(CHART_WRAPPER_CLASS);\n element.appendChild(chartWrapper);\n container = chartWrapper;\n }\n patch = opts.patch;\n if (patch) {\n vgSpec = patch instanceof Function ? patch(vgSpec) : applyPatch(vgSpec, patch, true, false).newDocument;\n }\n\n // Set locale. Note that this is a global setting.\n if (opts.formatLocale) {\n vega.formatLocale(opts.formatLocale);\n }\n if (opts.timeFormatLocale) {\n vega.timeFormatLocale(opts.timeFormatLocale);\n }\n\n // Set custom expression functions\n if (opts.expressionFunctions) {\n for (_name in opts.expressionFunctions) {\n expressionFunction = opts.expressionFunctions[_name];\n if ('fn' in expressionFunction) {\n vega.expressionFunction(_name, expressionFunction.fn, expressionFunction['visitor']);\n } else if (expressionFunction instanceof Function) {\n vega.expressionFunction(_name, expressionFunction);\n }\n }\n }\n ast = opts.ast; // Do not apply the config to Vega when we have already applied it to Vega-Lite.\n // This call may throw an Error if parsing fails.\n runtime = vega.parse(vgSpec, mode === 'vega-lite' ? {} : config, {\n ast: ast\n });\n view = new (opts.viewClass || vega.View)(runtime, _objectSpread({\n loader: loader,\n logLevel: logLevel,\n renderer: renderer\n }, ast ? {\n expr: (_ref = (_vega$expressionInter = vega.expressionInterpreter) !== null && _vega$expressionInter !== void 0 ? _vega$expressionInter : opts.expr) !== null && _ref !== void 0 ? _ref : expressionInterpreter\n } : {}));\n view.addSignalListener('autosize', function (_, autosize) {\n var type = autosize.type;\n if (type == 'fit-x') {\n container.classList.add('fit-x');\n container.classList.remove('fit-y');\n } else if (type == 'fit-y') {\n container.classList.remove('fit-x');\n container.classList.add('fit-y');\n } else if (type == 'fit') {\n container.classList.add('fit-x', 'fit-y');\n } else {\n container.classList.remove('fit-x', 'fit-y');\n }\n });\n if (opts.tooltip !== false) {\n handler = isTooltipHandler(opts.tooltip) ? opts.tooltip :\n // user provided boolean true or tooltip options\n new Handler(opts.tooltip === true ? {} : opts.tooltip).call;\n view.tooltip(handler);\n }\n hover = opts.hover;\n if (hover === undefined) {\n hover = mode === 'vega';\n }\n if (hover) {\n _ref2 = typeof hover === 'boolean' ? {} : hover, hoverSet = _ref2.hoverSet, updateSet = _ref2.updateSet;\n view.hover(hoverSet, updateSet);\n }\n if (opts) {\n if (opts.width != null) {\n view.width(opts.width);\n }\n if (opts.height != null) {\n view.height(opts.height);\n }\n if (opts.padding != null) {\n view.padding(opts.padding);\n }\n }\n _context6.next = 37;\n return view.initialize(container, opts.bind).runAsync();\n case 37:\n if (!(actions !== false)) {\n _context6.next = 54;\n break;\n }\n wrapper = element;\n if (opts.defaultStyle !== false) {\n details = document.createElement('details');\n details.title = i18n.CLICK_TO_VIEW_ACTIONS;\n element.append(details);\n wrapper = details;\n summary = document.createElement('summary');\n summary.innerHTML = SVG_CIRCLES;\n details.append(summary);\n documentClickHandler = function documentClickHandler(ev) {\n if (!details.contains(ev.target)) {\n details.removeAttribute('open');\n }\n };\n document.addEventListener('click', documentClickHandler);\n }\n ctrl = document.createElement('div');\n wrapper.append(ctrl);\n ctrl.classList.add('vega-actions');\n\n // add 'Export' action\n if (!(actions === true || actions.export !== false)) {\n _context6.next = 51;\n break;\n }\n _loop = /*#__PURE__*/_regeneratorRuntime.mark(function _loop() {\n var ext, i18nExportAction, exportLink, scaleFactor;\n return _regeneratorRuntime.wrap(function _loop$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n ext = _arr[_i5];\n if (actions === true || actions.export === true || actions.export[ext]) {\n i18nExportAction = i18n[\"\".concat(ext.toUpperCase(), \"_ACTION\")];\n exportLink = document.createElement('a');\n scaleFactor = isObject(opts.scaleFactor) ? opts.scaleFactor[ext] : opts.scaleFactor;\n exportLink.text = i18nExportAction;\n exportLink.href = '#';\n exportLink.target = '_blank';\n exportLink.download = \"\".concat(downloadFileName, \".\").concat(ext);\n // add link on mousedown so that it's correct when the click happens\n exportLink.addEventListener('mousedown', /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4(e) {\n var url;\n return _regeneratorRuntime.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n e.preventDefault();\n _context4.next = 3;\n return view.toImageURL(ext, scaleFactor);\n case 3:\n url = _context4.sent;\n this.href = url;\n case 5:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4, this);\n }));\n return function (_x7) {\n return _ref3.apply(this, arguments);\n };\n }());\n ctrl.append(exportLink);\n }\n case 2:\n case \"end\":\n return _context5.stop();\n }\n }, _loop);\n });\n _i5 = 0, _arr = ['svg', 'png'];\n case 46:\n if (!(_i5 < _arr.length)) {\n _context6.next = 51;\n break;\n }\n return _context6.delegateYield(_loop(), \"t0\", 48);\n case 48:\n _i5++;\n _context6.next = 46;\n break;\n case 51:\n // add 'View Source' action\n if (actions === true || actions.source !== false) {\n viewSourceLink = document.createElement('a');\n viewSourceLink.text = i18n.SOURCE_ACTION;\n viewSourceLink.href = '#';\n viewSourceLink.addEventListener('click', function (e) {\n var _opts$sourceHeader, _opts$sourceFooter;\n viewSource(stringify(spec), (_opts$sourceHeader = opts.sourceHeader) !== null && _opts$sourceHeader !== void 0 ? _opts$sourceHeader : '', (_opts$sourceFooter = opts.sourceFooter) !== null && _opts$sourceFooter !== void 0 ? _opts$sourceFooter : '', mode);\n e.preventDefault();\n });\n ctrl.append(viewSourceLink);\n }\n\n // add 'View Compiled' action\n if (mode === 'vega-lite' && (actions === true || actions.compiled !== false)) {\n compileLink = document.createElement('a');\n compileLink.text = i18n.COMPILED_ACTION;\n compileLink.href = '#';\n compileLink.addEventListener('click', function (e) {\n var _opts$sourceHeader2, _opts$sourceFooter2;\n viewSource(stringify(vgSpec), (_opts$sourceHeader2 = opts.sourceHeader) !== null && _opts$sourceHeader2 !== void 0 ? _opts$sourceHeader2 : '', (_opts$sourceFooter2 = opts.sourceFooter) !== null && _opts$sourceFooter2 !== void 0 ? _opts$sourceFooter2 : '', 'vega');\n e.preventDefault();\n });\n ctrl.append(compileLink);\n }\n\n // add 'Open in Vega Editor' action\n if (actions === true || actions.editor !== false) {\n editorUrl = (_opts$editorUrl = opts.editorUrl) !== null && _opts$editorUrl !== void 0 ? _opts$editorUrl : 'https://vega.github.io/editor/';\n editorLink = document.createElement('a');\n editorLink.text = i18n.EDITOR_ACTION;\n editorLink.href = '#';\n editorLink.addEventListener('click', function (e) {\n post(window, editorUrl, {\n config: config,\n mode: mode,\n renderer: renderer,\n spec: stringify(spec)\n });\n e.preventDefault();\n });\n ctrl.append(editorLink);\n }\n case 54:\n return _context6.abrupt(\"return\", {\n view: view,\n spec: spec,\n vgSpec: vgSpec,\n finalize: finalize,\n embedOptions: opts\n });\n case 55:\n case \"end\":\n return _context6.stop();\n }\n }, _callee5);\n }));\n return _embed3.apply(this, arguments);\n}\nexport { DEFAULT_ACTIONS, embed as default, guessMode, vega, _vegaLite as vegaLite, version };","import updateSingleDatasetInView from './updateSingleDatasetInView';\nexport default function updateMultipleDatasetsInView(view, data) {\n Object.keys(data).forEach(function (name) {\n updateSingleDatasetInView(view, name, data[name]);\n });\n}","import { vega } from 'vega-embed';\nimport isFunction from './isFunction';\nexport default function updateSingleDatasetInView(view, name, value) {\n if (value) {\n if (isFunction(value)) {\n value(view.data(name));\n } else {\n view.change(name, vega.changeset().remove(function () {\n return true;\n }).insert(value));\n }\n }\n}","export default function isFunction(functionToCheck) {\n var getType = {};\n return !!functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}","export default function getUniqueFieldNames(objects) {\n var fields = new Set();\n objects.forEach(function (o) {\n Object.keys(o).forEach(function (field) {\n fields.add(field);\n });\n });\n return fields;\n}","// eslint-disable-next-line import/prefer-default-export\nexport var NOOP = function NOOP() {};","export default function addSignalListenersToView(view, signalListeners) {\n var signalNames = Object.keys(signalListeners);\n signalNames.forEach(function (signalName) {\n try {\n view.addSignalListener(signalName, signalListeners[signalName]);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.warn('Cannot add invalid signal listener.', error);\n }\n });\n return signalNames.length > 0;\n}","export default function removeSignalListenersFromView(view, signalListeners) {\n var signalNames = Object.keys(signalListeners);\n signalNames.forEach(function (signalName) {\n try {\n view.removeSignalListener(signalName, signalListeners[signalName]);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.warn('Cannot remove invalid signal listener.', error);\n }\n });\n return signalNames.length > 0;\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nexport default function combineSpecWithDimension(props) {\n var spec = props.spec,\n width = props.width,\n height = props.height;\n if (typeof width !== 'undefined' && typeof height !== 'undefined') {\n return _objectSpread(_objectSpread({}, spec), {}, {\n width: width,\n height: height\n });\n }\n if (typeof width !== 'undefined') {\n return _objectSpread(_objectSpread({}, spec), {}, {\n width: width\n });\n }\n if (typeof height !== 'undefined') {\n return _objectSpread(_objectSpread({}, spec), {}, {\n height: height\n });\n }\n return spec;\n}","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _assertThisInitialized from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nvar _excluded = [\"spec\", \"onNewView\", \"signalListeners\", \"width\", \"height\"];\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport _pt from \"prop-types\";\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 return obj;\n}\nimport React from 'react';\nimport vegaEmbed from 'vega-embed';\nimport shallowEqual from './utils/shallowEqual';\nimport getUniqueFieldNames from './utils/getUniqueFieldNames';\nimport { NOOP } from './constants';\nimport addSignalListenersToView from './utils/addSignalListenersToView';\nimport computeSpecChanges from './utils/computeSpecChanges';\nimport removeSignalListenersFromView from './utils/removeSignalListenersFromView';\nimport combineSpecWithDimension from './utils/combineSpecWithDimension';\nvar VegaEmbed = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(VegaEmbed, _React$PureComponent);\n var _super = _createSuper(VegaEmbed);\n function VegaEmbed() {\n var _this;\n _classCallCheck(this, VegaEmbed);\n _this = _super.apply(this, arguments);\n _defineProperty(_assertThisInitialized(_this), \"containerRef\", /*#__PURE__*/React.createRef());\n _defineProperty(_assertThisInitialized(_this), \"resultPromise\", void 0);\n _defineProperty(_assertThisInitialized(_this), \"handleError\", function (error) {\n var _this$props$onError = _this.props.onError,\n onError = _this$props$onError === void 0 ? NOOP : _this$props$onError;\n onError(error, _this.containerRef.current); // eslint-disable-next-line no-console\n\n console.warn(error);\n return undefined;\n });\n _defineProperty(_assertThisInitialized(_this), \"modifyView\", function (action) {\n if (_this.resultPromise) {\n _this.resultPromise.then(function (result) {\n if (result) {\n action(result.view);\n }\n return true;\n }).catch(_this.handleError);\n }\n });\n return _this;\n }\n _createClass(VegaEmbed, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.createView();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var _this2 = this;\n var fieldSet = getUniqueFieldNames([this.props, prevProps]);\n fieldSet.delete('className');\n fieldSet.delete('signalListeners');\n fieldSet.delete('spec');\n fieldSet.delete('style');\n fieldSet.delete('width');\n fieldSet.delete('height'); // Only create a new view if necessary\n\n if (Array.from(fieldSet).some(function (f) {\n return _this2.props[f] !== prevProps[f];\n })) {\n this.clearView();\n this.createView();\n } else {\n var specChanges = computeSpecChanges(combineSpecWithDimension(this.props), combineSpecWithDimension(prevProps));\n var newSignalListeners = this.props.signalListeners;\n var oldSignalListeners = prevProps.signalListeners;\n if (specChanges) {\n if (specChanges.isExpensive) {\n this.clearView();\n this.createView();\n } else {\n var areSignalListenersChanged = !shallowEqual(newSignalListeners, oldSignalListeners);\n this.modifyView(function (view) {\n if (specChanges.width !== false) {\n view.width(specChanges.width);\n }\n if (specChanges.height !== false) {\n view.height(specChanges.height);\n }\n if (areSignalListenersChanged) {\n if (oldSignalListeners) {\n removeSignalListenersFromView(view, oldSignalListeners);\n }\n if (newSignalListeners) {\n addSignalListenersToView(view, newSignalListeners);\n }\n }\n view.run();\n });\n }\n } else if (!shallowEqual(newSignalListeners, oldSignalListeners)) {\n this.modifyView(function (view) {\n if (oldSignalListeners) {\n removeSignalListenersFromView(view, oldSignalListeners);\n }\n if (newSignalListeners) {\n addSignalListenersToView(view, newSignalListeners);\n }\n view.run();\n });\n }\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.clearView();\n }\n }, {\n key: \"createView\",\n value: function createView() {\n var _this$props = this.props,\n spec = _this$props.spec,\n onNewView = _this$props.onNewView,\n _this$props$signalLis = _this$props.signalListeners,\n signalListeners = _this$props$signalLis === void 0 ? {} : _this$props$signalLis,\n width = _this$props.width,\n height = _this$props.height,\n options = _objectWithoutProperties(_this$props, _excluded);\n if (this.containerRef.current) {\n var finalSpec = combineSpecWithDimension(this.props);\n this.resultPromise = vegaEmbed(this.containerRef.current, finalSpec, options).then(function (result) {\n if (result) {\n var view = result.view;\n if (addSignalListenersToView(view, signalListeners)) {\n view.run();\n }\n }\n return result;\n }).catch(this.handleError);\n if (onNewView) {\n this.modifyView(onNewView);\n }\n }\n }\n }, {\n key: \"clearView\",\n value: function clearView() {\n if (this.resultPromise) {\n this.resultPromise.then(function (result) {\n if (result) {\n result.finalize();\n }\n }).catch(this.handleError);\n }\n this.resultPromise = undefined;\n return this;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n className = _this$props2.className,\n style = _this$props2.style; // Create the container Vega draws inside\n\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: this.containerRef,\n className: className,\n style: style\n });\n }\n }]);\n return VegaEmbed;\n}(React.PureComponent);\nexport { VegaEmbed as default };\n_defineProperty(VegaEmbed, \"propTypes\", {\n className: _pt.string,\n onError: _pt.func\n});","import _toConsumableArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport equal from 'fast-deep-equal';\nimport getUniqueFieldNames from './getUniqueFieldNames';\nexport default function computeSpecChanges(newSpec, oldSpec) {\n if (newSpec === oldSpec) return false;\n var changes = {\n width: false,\n height: false,\n isExpensive: false\n };\n var fieldNames = getUniqueFieldNames([newSpec, oldSpec]);\n if (fieldNames.has('width') && (!('width' in newSpec) || !('width' in oldSpec) || newSpec.width !== oldSpec.width)) {\n if ('width' in newSpec && typeof newSpec.width === 'number') {\n changes.width = newSpec.width;\n } else {\n changes.isExpensive = true;\n }\n }\n if (fieldNames.has('height') && (!('height' in newSpec) || !('height' in oldSpec) || newSpec.height !== oldSpec.height)) {\n if ('height' in newSpec && typeof newSpec.height === 'number') {\n changes.height = newSpec.height;\n } else {\n changes.isExpensive = true;\n }\n } // Delete cheap fields\n\n fieldNames.delete('width');\n fieldNames.delete('height');\n if (_toConsumableArray(fieldNames).some(function (field) {\n return !(field in newSpec) || !(field in oldSpec) || !equal(newSpec[field], oldSpec[field]);\n })) {\n changes.isExpensive = true;\n }\n return changes.width !== false || changes.height !== false || changes.isExpensive ? changes : false;\n}","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nimport _classCallCheck from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _assertThisInitialized from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js\";\nimport _inherits from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nvar _excluded = [\"data\"];\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\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 return obj;\n}\nimport React from 'react';\nimport shallowEqual from './utils/shallowEqual';\nimport updateMultipleDatasetsInView from './utils/updateMultipleDatasetsInView';\nimport VegaEmbed from './VegaEmbed';\nimport { NOOP } from './constants';\nvar EMPTY = {};\nvar Vega = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(Vega, _React$PureComponent);\n var _super = _createSuper(Vega);\n function Vega() {\n var _this;\n _classCallCheck(this, Vega);\n _this = _super.apply(this, arguments);\n _defineProperty(_assertThisInitialized(_this), \"vegaEmbed\", /*#__PURE__*/React.createRef());\n _defineProperty(_assertThisInitialized(_this), \"handleNewView\", function (view) {\n _this.update();\n var _this$props$onNewView = _this.props.onNewView,\n onNewView = _this$props$onNewView === void 0 ? NOOP : _this$props$onNewView;\n onNewView(view);\n });\n return _this;\n }\n _createClass(Vega, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.update();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n if (!shallowEqual(this.props.data, prevProps.data)) {\n this.update();\n }\n }\n }, {\n key: \"update\",\n value: function update() {\n var data = this.props.data;\n if (this.vegaEmbed.current && data && Object.keys(data).length > 0) {\n this.vegaEmbed.current.modifyView(function (view) {\n updateMultipleDatasetsInView(view, data);\n view.resize().run();\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n data = _this$props.data,\n restProps = _objectWithoutProperties(_this$props, _excluded);\n return /*#__PURE__*/React.createElement(VegaEmbed, _extends({\n ref: this.vegaEmbed\n }, restProps, {\n onNewView: this.handleNewView\n }));\n }\n }]);\n return Vega;\n}(React.PureComponent);\nexport { Vega as default };\n_defineProperty(Vega, \"defaultProps\", {\n data: EMPTY\n});","import {\n ArchiveBoxXMarkIcon,\n ChartBarIcon,\n ExclamationTriangleIcon,\n InformationCircleIcon,\n} from \"@heroicons/react/24/outline\";\nimport { message, Modal } from \"antd\";\nimport * as React from \"react\";\nimport { IGoal } from \"../../types\";\nimport ChartView from \"./chartview\";\n\nconst ChartRasterView = ({\n raster,\n library,\n goal,\n}: {\n raster: string | null;\n library: string | null | undefined;\n goal: IGoal | null;\n}) => {\n const [isModalOpen, setIsModalOpen] = React.useState(false);\n const showModal = () => {\n setIsModalOpen(true);\n };\n\n const handleOk = () => {\n setIsModalOpen(false);\n };\n\n const handleCancel = () => {\n setIsModalOpen(false);\n };\n\n return (\n
        \n {raster && (\n
        \n \n
        \n )}\n {!raster && (\n
        \n {\" \"}\n {\" \"}\n No visualization image generated.\n
        \n )}\n\n \n {library} Chart\n \n }\n open={isModalOpen}\n onOk={handleOk}\n onCancel={handleCancel}\n width={800}\n >\n
        {goal?.question}
        \n
        {goal?.rationale}
        \n \n \n
        \n );\n};\n\nexport default ChartRasterView;\n","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"title\", \"titleId\"];\nimport * as React from \"react\";\nfunction CodeBracketIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M17.25 6.75L22.5 12l-5.25 5.25m-10.5 0L1.5 12l5.25-5.25m7.5-3l-4.5 16.5\"\n }));\n}\nvar ForwardRef = React.forwardRef(CodeBracketIcon);\nexport default ForwardRef;","import {\n ChartPieIcon,\n CodeBracketIcon,\n DocumentChartBarIcon,\n ExclamationTriangleIcon,\n} from \"@heroicons/react/24/outline\";\nimport { Tabs } from \"antd\";\nimport * as React from \"react\";\nimport { Vega } from \"react-vega\";\nimport { CodeBlock } from \"./codeblock\";\nimport VegaVizView from \"./chartview\";\n\nconst CodeView = ({ spec, code, error, status }: any) => {\n // delete spec.datasets;\n\n const tabs = [];\n if (spec !== null) {\n tabs.push({\n label: (\n
        \n {\" \"}\n Vega-Lite Spec\n
        \n ),\n key: \"1\",\n children: (\n
        \n \n
        \n ),\n });\n }\n tabs.push({\n label: (\n
        \n {\" \"}\n Python Code\n
        \n ),\n key: \"2\",\n children: (\n
        \n \n
        \n ),\n });\n\n if (status === false && error) {\n tabs.push({\n label: (\n
        \n {\" \"}\n {\" \"}\n Error\n
        \n ),\n key: \"3\",\n children: (\n
        \n
        Error Message
        \n \n
        Traceback
        \n \n
        \n ),\n });\n }\n\n return (\n
        \n {}} items={tabs} />\n
        \n );\n};\nexport default CodeView;\n","import * as React from \"react\";\nimport { ChatBubbleOvalLeftEllipsisIcon } from \"@heroicons/react/24/outline\";\nimport { IStatus, IVizConfig } from \"../../types\";\nimport { Skeleton, message } from \"antd\";\nimport { fetchJSON, scrollToElement } from \"../../utils\";\nimport { LoadBox } from \"../../atoms\";\nimport { CodeBlock } from \"./codeblock\";\n\nconst ChartExplainer = ({\n vizData,\n vizConfig,\n}: {\n vizData: any;\n vizConfig: IVizConfig;\n}) => {\n const [loading, setLoading] = React.useState(false);\n const [error, setError] = React.useState(null);\n const [explanations, setExplanations] = React.useState([]);\n const serverUrl = process.env.GATSBY_API_URL;\n\n const explanationsDivRef = React.useRef(null);\n\n React.useEffect(() => {\n setExplanations([]);\n }, [vizData]);\n\n const fetchExplanation = () => {\n setError(null);\n setLoading(true);\n setExplanations([]);\n setTimeout(() => {\n scrollToElement(explanationsDivRef);\n }, 600);\n\n const payLoad = {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n code: vizData.code,\n library: vizConfig.library,\n textgen_config: vizConfig.textgen_config,\n }),\n };\n // console.log(config.goal);\n\n const onSuccess = (data: any) => {\n if (data && data.status) {\n // setVizspecs(data.charts);\n console.log(\"Explanation data\", data);\n setExplanations(data.explanations);\n message.success(data.message);\n setTimeout(() => {\n scrollToElement(explanationsDivRef);\n }, 400);\n } else {\n message.error(data.message);\n setError(data);\n }\n setLoading(false);\n };\n const onError = (err: any) => {\n message.error(err.message);\n setLoading(false);\n setError(err);\n };\n fetchJSON(`${serverUrl}/visualize/explain`, payLoad, onSuccess, onError);\n };\n\n const explanationsView = explanations?.map((exp, i) => {\n const isAccessibility = exp.section === \"accessibility\";\n return (\n
        \n
        {exp.section}
        \n
        \n
        \n {exp.explanation}\n {/*
        {exp.rationale}
        */}\n
        \n {!isAccessibility && (\n
        \n \n
        \n )}\n
        \n
        \n );\n });\n return (\n
        \n fetchExplanation()}\n role={\"button\"}\n className={`px-5 bg-accent duration-300 hover:brightness-110 text-white inline-block rounded p-2 ${\n loading ? \"opacity-50 pointer-events-none\" : \"\"\n } `}\n >\n {!loading && (\n \n )}\n {loading && } Explain the\n chart.\n
        \n\n {/* {loading && (\n \n {\" \"}\n loading explanations\n \n )} */}\n\n {loading && (\n
        \n \n \n
        \n )}\n\n
        \n {explanationsView}\n
        \n \n );\n};\nexport default ChartExplainer;\n","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"title\", \"titleId\"];\nimport * as React from \"react\";\nfunction StarIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M10.788 3.21c.448-1.077 1.976-1.077 2.424 0l2.082 5.007 5.404.433c1.164.093 1.636 1.545.749 2.305l-4.117 3.527 1.257 5.273c.271 1.136-.964 2.033-1.96 1.425L12 18.354 7.373 21.18c-.996.608-2.231-.29-1.96-1.425l1.257-5.273-4.117-3.527c-.887-.76-.415-2.212.749-2.305l5.404-.433 2.082-5.006z\",\n clipRule: \"evenodd\"\n }));\n}\nvar ForwardRef = React.forwardRef(StarIcon);\nexport default ForwardRef;","/**\n * view 中三层 group 分层 key\n */\nexport var LAYER;\n(function (LAYER) {\n /** 前景层 */\n LAYER[\"FORE\"] = \"fore\";\n /** 中间层 */\n LAYER[\"MID\"] = \"mid\";\n /** 背景层 */\n LAYER[\"BG\"] = \"bg\";\n})(LAYER || (LAYER = {}));\n/**\n * 组件在画布的布局方位 12 方位\n */\nexport var DIRECTION;\n(function (DIRECTION) {\n DIRECTION[\"TOP\"] = \"top\";\n DIRECTION[\"TOP_LEFT\"] = \"top-left\";\n DIRECTION[\"TOP_RIGHT\"] = \"top-right\";\n DIRECTION[\"RIGHT\"] = \"right\";\n DIRECTION[\"RIGHT_TOP\"] = \"right-top\";\n DIRECTION[\"RIGHT_BOTTOM\"] = \"right-bottom\";\n DIRECTION[\"LEFT\"] = \"left\";\n DIRECTION[\"LEFT_TOP\"] = \"left-top\";\n DIRECTION[\"LEFT_BOTTOM\"] = \"left-bottom\";\n DIRECTION[\"BOTTOM\"] = \"bottom\";\n DIRECTION[\"BOTTOM_LEFT\"] = \"bottom-left\";\n DIRECTION[\"BOTTOM_RIGHT\"] = \"bottom-right\";\n DIRECTION[\"RADIUS\"] = \"radius\";\n DIRECTION[\"CIRCLE\"] = \"circle\";\n // no direction information\n DIRECTION[\"NONE\"] = \"none\";\n})(DIRECTION || (DIRECTION = {}));\n/**\n * 组件的类型,可能会影响到布局算法\n */\nexport var COMPONENT_TYPE;\n(function (COMPONENT_TYPE) {\n /** axis 组件 */\n COMPONENT_TYPE[\"AXIS\"] = \"axis\";\n /** grid 组件 */\n COMPONENT_TYPE[\"GRID\"] = \"grid\";\n /** legend 组件 */\n COMPONENT_TYPE[\"LEGEND\"] = \"legend\";\n /** tooltip 组件 */\n COMPONENT_TYPE[\"TOOLTIP\"] = \"tooltip\";\n /** annotation 组件 */\n COMPONENT_TYPE[\"ANNOTATION\"] = \"annotation\";\n /** 缩略轴组件 */\n COMPONENT_TYPE[\"SLIDER\"] = \"slider\";\n /** 滚动条组件 */\n COMPONENT_TYPE[\"SCROLLBAR\"] = \"scrollbar\";\n /** 其他组件,自定义组件 */\n COMPONENT_TYPE[\"OTHER\"] = \"other\";\n})(COMPONENT_TYPE || (COMPONENT_TYPE = {}));\n/**\n * 三层 group 的 z index\n */\nexport var GROUP_Z_INDEX = {\n FORE: 3,\n MID: 2,\n BG: 1\n};\n/**\n * View 的生命周期阶段(和 3.x 的生命周期略有不同)\n * 我们需要先确定在那写场景需要用到生命周期,如果只是为了在生命周期插入一下什么组件之类的,那么在现有架构就是不需要的\n */\nexport var VIEW_LIFE_CIRCLE;\n(function (VIEW_LIFE_CIRCLE) {\n VIEW_LIFE_CIRCLE[\"BEFORE_RENDER\"] = \"beforerender\";\n VIEW_LIFE_CIRCLE[\"AFTER_RENDER\"] = \"afterrender\";\n VIEW_LIFE_CIRCLE[\"BEFORE_PAINT\"] = \"beforepaint\";\n VIEW_LIFE_CIRCLE[\"AFTER_PAINT\"] = \"afterpaint\";\n VIEW_LIFE_CIRCLE[\"BEFORE_CHANGE_DATA\"] = \"beforechangedata\";\n VIEW_LIFE_CIRCLE[\"AFTER_CHANGE_DATA\"] = \"afterchangedata\";\n VIEW_LIFE_CIRCLE[\"BEFORE_CLEAR\"] = \"beforeclear\";\n VIEW_LIFE_CIRCLE[\"AFTER_CLEAR\"] = \"afterclear\";\n VIEW_LIFE_CIRCLE[\"BEFORE_DESTROY\"] = \"beforedestroy\";\n VIEW_LIFE_CIRCLE[\"BEFORE_CHANGE_SIZE\"] = \"beforechangesize\";\n VIEW_LIFE_CIRCLE[\"AFTER_CHANGE_SIZE\"] = \"afterchangesize\";\n})(VIEW_LIFE_CIRCLE || (VIEW_LIFE_CIRCLE = {}));\n/**\n * geometry 的生命周期\n */\nexport var GEOMETRY_LIFE_CIRCLE;\n(function (GEOMETRY_LIFE_CIRCLE) {\n GEOMETRY_LIFE_CIRCLE[\"BEFORE_DRAW_ANIMATE\"] = \"beforeanimate\";\n GEOMETRY_LIFE_CIRCLE[\"AFTER_DRAW_ANIMATE\"] = \"afteranimate\";\n GEOMETRY_LIFE_CIRCLE[\"BEFORE_RENDER_LABEL\"] = \"beforerenderlabel\";\n GEOMETRY_LIFE_CIRCLE[\"AFTER_RENDER_LABEL\"] = \"afterrenderlabel\";\n})(GEOMETRY_LIFE_CIRCLE || (GEOMETRY_LIFE_CIRCLE = {}));\n/**\n * 绘图区的事件列表\n */\nexport var PLOT_EVENTS;\n(function (PLOT_EVENTS) {\n // mouse 事件\n PLOT_EVENTS[\"MOUSE_ENTER\"] = \"plot:mouseenter\";\n PLOT_EVENTS[\"MOUSE_DOWN\"] = \"plot:mousedown\";\n PLOT_EVENTS[\"MOUSE_MOVE\"] = \"plot:mousemove\";\n PLOT_EVENTS[\"MOUSE_UP\"] = \"plot:mouseup\";\n PLOT_EVENTS[\"MOUSE_LEAVE\"] = \"plot:mouseleave\";\n // 移动端事件\n PLOT_EVENTS[\"TOUCH_START\"] = \"plot:touchstart\";\n PLOT_EVENTS[\"TOUCH_MOVE\"] = \"plot:touchmove\";\n PLOT_EVENTS[\"TOUCH_END\"] = \"plot:touchend\";\n PLOT_EVENTS[\"TOUCH_CANCEL\"] = \"plot:touchcancel\";\n // click 事件\n PLOT_EVENTS[\"CLICK\"] = \"plot:click\";\n PLOT_EVENTS[\"DBLCLICK\"] = \"plot:dblclick\";\n PLOT_EVENTS[\"CONTEXTMENU\"] = \"plot:contextmenu\";\n PLOT_EVENTS[\"LEAVE\"] = \"plot:leave\";\n PLOT_EVENTS[\"ENTER\"] = \"plot:enter\";\n})(PLOT_EVENTS || (PLOT_EVENTS = {}));\n/**\n * Element 图形交互状态\n */\nexport var ELEMENT_STATE;\n(function (ELEMENT_STATE) {\n ELEMENT_STATE[\"ACTIVE\"] = \"active\";\n ELEMENT_STATE[\"INACTIVE\"] = \"inactive\";\n ELEMENT_STATE[\"SELECTED\"] = \"selected\";\n ELEMENT_STATE[\"DEFAULT\"] = \"default\";\n})(ELEMENT_STATE || (ELEMENT_STATE = {}));\n/** 参与分组的图形属性名 */\nexport var GROUP_ATTRS = ['color', 'shape', 'size'];\n/** 存储原始数据的字段名 */\nexport var FIELD_ORIGIN = '_origin';\n/** 最小的图表宽度 */\nexport var MIN_CHART_WIDTH = 1;\n/** 最小的图表高度 */\nexport var MIN_CHART_HEIGHT = 1;\n/** 辅助组件占图表的尺寸的最大比例:如图表上方的图例最多占图表高度的25% */\nexport var COMPONENT_MAX_VIEW_PERCENTAGE = 0.25;","/**\n * 创建DOM 节点\n * @param {String} str Dom 字符串\n * @return {HTMLElement} DOM 节点\n */\nvar TABLE;\nvar TABLE_TR;\nvar FRAGMENT_REG;\nvar CONTAINERS;\nfunction initConstants() {\n TABLE = document.createElement('table');\n TABLE_TR = document.createElement('tr');\n FRAGMENT_REG = /^\\s*<(\\w+|!)[^>]*>/;\n CONTAINERS = {\n tr: document.createElement('tbody'),\n tbody: TABLE,\n thead: TABLE,\n tfoot: TABLE,\n td: TABLE_TR,\n th: TABLE_TR,\n '*': document.createElement('div')\n };\n}\nexport default function createDom(str) {\n if (!TABLE) {\n initConstants();\n }\n var name = FRAGMENT_REG.test(str) && RegExp.$1;\n if (!name || !(name in CONTAINERS)) {\n name = '*';\n }\n var container = CONTAINERS[name];\n str = typeof str === 'string' ? str.replace(/(^\\s*)|(\\s*$)/g, '') : str;\n container.innerHTML = '' + str;\n var dom = container.childNodes[0];\n if (dom && container.contains(dom)) {\n container.removeChild(dom);\n }\n return dom;\n}","var ENGINES = {};\n/**\n * 通过名字获取渲染 engine\n * @param name 渲染引擎名字\n * @returns G engine\n */\nexport function getEngine(name) {\n var G = ENGINES[name];\n if (!G) {\n throw new Error(\"G engine '\".concat(name, \"' is not exist, please register it at first.\"));\n }\n return G;\n}\n/**\n * 注册渲染引擎\n * @param name\n * @param engine\n */\nexport function registerEngine(name, engine) {\n ENGINES[name] = engine;\n}","export default function modifyCSS(dom, css) {\n if (dom) {\n for (var key in css) {\n if (css.hasOwnProperty(key)) {\n dom.style[key] = css[key];\n }\n }\n }\n return dom;\n}","import { MIN_CHART_HEIGHT, MIN_CHART_WIDTH } from '../constant';\n/**\n * get the element's bounding size\n * @param ele dom element\n * @returns the element width and height\n */\nfunction getElementSize(ele) {\n var style = getComputedStyle(ele);\n return {\n width: (ele.clientWidth || parseInt(style.width, 10)) - parseInt(style.paddingLeft, 10) - parseInt(style.paddingRight, 10),\n height: (ele.clientHeight || parseInt(style.height, 10)) - parseInt(style.paddingTop, 10) - parseInt(style.paddingBottom, 10)\n };\n}\n/**\n * is value a valid number\n * @param v the input value\n * @returns whether it is a number\n */\nfunction isNumber(v) {\n return typeof v === 'number' && !isNaN(v);\n}\n/**\n * @ignore\n * calculate the chart size\n * @param ele DOM element\n * @param autoFit should auto fit\n * @param width chart width which is set by user\n * @param height chart height which is set by user\n * @returns the chart width and height\n */\nexport function getChartSize(ele, autoFit, width, height) {\n var w = width;\n var h = height;\n if (autoFit) {\n var size = getElementSize(ele);\n w = size.width ? size.width : w;\n h = size.height ? size.height : h;\n }\n return {\n width: Math.max(isNumber(w) ? w : MIN_CHART_WIDTH, MIN_CHART_WIDTH),\n height: Math.max(isNumber(h) ? h : MIN_CHART_HEIGHT, MIN_CHART_HEIGHT)\n };\n}\n/**\n * @ignore\n * remove html element from its parent\n * @param dom\n */\nexport function removeDom(dom) {\n var parent = dom.parentNode;\n if (parent) {\n parent.removeChild(dom);\n }\n}\n/** @ignore */\nexport { createDom, modifyCSS } from '@antv/dom-util';","import { __extends } from \"tslib\";\nimport EE from '@antv/event-emitter';\n/**\n * G2 Chart、View、Geometry 以及 Element 等的基类,提供事件以及一些通用的方法。\n */\nvar Base = /** @class */function (_super) {\n __extends(Base, _super);\n function Base(cfg) {\n var _this = _super.call(this) || this;\n /** 标识对象是否已销毁 */\n _this.destroyed = false;\n var _a = cfg.visible,\n visible = _a === void 0 ? true : _a;\n _this.visible = visible;\n return _this;\n }\n /**\n * 显示。\n */\n Base.prototype.show = function () {\n var visible = this.visible;\n if (!visible) {\n this.changeVisible(true);\n }\n };\n /**\n * 隐藏。\n */\n Base.prototype.hide = function () {\n var visible = this.visible;\n if (visible) {\n this.changeVisible(false);\n }\n };\n /**\n * 销毁。\n */\n Base.prototype.destroy = function () {\n this.off();\n this.destroyed = true;\n };\n /**\n * 显示或者隐藏。\n * @param visible\n * @returns\n */\n Base.prototype.changeVisible = function (visible) {\n if (this.visible === visible) {\n return;\n }\n this.visible = visible;\n };\n return Base;\n}(EE);\nexport default Base;","import * as _ from '@antv/util';\nimport { DEFAULT_Y } from '../constant';\nvar Adjust = /** @class */function () {\n function Adjust(cfg) {\n var xField = cfg.xField,\n yField = cfg.yField,\n _a = cfg.adjustNames,\n adjustNames = _a === void 0 ? ['x', 'y'] : _a,\n dimValuesMap = cfg.dimValuesMap;\n this.adjustNames = adjustNames;\n this.xField = xField;\n this.yField = yField;\n this.dimValuesMap = dimValuesMap;\n }\n /**\n * 查看维度是否是 adjust 字段\n * @param dim\n */\n Adjust.prototype.isAdjust = function (dim) {\n return this.adjustNames.indexOf(dim) >= 0;\n };\n Adjust.prototype.getAdjustRange = function (dim, dimValue, values) {\n var yField = this.yField;\n var index = values.indexOf(dimValue);\n var length = values.length;\n var pre;\n var next;\n // 没有 y 字段,但是需要根据 y 调整\n if (!yField && this.isAdjust('y')) {\n pre = 0;\n next = 1;\n } else if (length > 1) {\n // 如果以其开头,则取之,否则取他前面一个\n pre = values[index === 0 ? 0 : index - 1];\n // 如果以其结尾,则取之,否则取他后面一个\n next = values[index === length - 1 ? length - 1 : index + 1];\n if (index !== 0) {\n pre += (dimValue - pre) / 2;\n } else {\n pre -= (next - dimValue) / 2;\n }\n if (index !== length - 1) {\n next -= (next - dimValue) / 2;\n } else {\n next += (dimValue - values[length - 2]) / 2;\n }\n } else {\n pre = dimValue === 0 ? 0 : dimValue - 0.5;\n next = dimValue === 0 ? 1 : dimValue + 0.5;\n }\n return {\n pre: pre,\n next: next\n };\n };\n Adjust.prototype.adjustData = function (groupedDataArray, mergedData) {\n var _this = this;\n // 所有调整维度的值数组\n var dimValuesMap = this.getDimValues(mergedData);\n // 按照每一个分组来进行调整\n _.each(groupedDataArray, function (dataArray, index) {\n // 遍历所有数据集合\n // 每个分组中,分别按照不同的 dim 进行调整\n _.each(dimValuesMap, function (values, dim) {\n // 根据不同的度量分别调整位置\n _this.adjustDim(dim, values, dataArray, index);\n });\n });\n };\n /**\n * 对数据进行分组adjustData\n * @param data 数据\n * @param dim 分组的字段\n * @return 分组结果\n */\n Adjust.prototype.groupData = function (data, dim) {\n // 补齐数据空数据为默认值\n _.each(data, function (record) {\n if (record[dim] === undefined) {\n record[dim] = DEFAULT_Y;\n }\n });\n // 按照 dim 维度分组\n return _.groupBy(data, dim);\n };\n /** @override */\n Adjust.prototype.adjustDim = function (dim, values, data, index) {};\n /**\n * 获取可调整度量对应的值\n * @param mergedData 数据\n * @return 值的映射\n */\n Adjust.prototype.getDimValues = function (mergedData) {\n var _a = this,\n xField = _a.xField,\n yField = _a.yField;\n var dimValuesMap = _.assign({}, this.dimValuesMap);\n // 所有的维度\n var dims = [];\n if (xField && this.isAdjust('x')) {\n dims.push(xField);\n }\n if (yField && this.isAdjust('y')) {\n dims.push(yField);\n }\n dims.forEach(function (dim) {\n if (dimValuesMap && dimValuesMap[dim]) {\n return;\n }\n // 在每个维度上,所有的值\n dimValuesMap[dim] = _.valuesOfKey(mergedData, dim).sort(function (v1, v2) {\n return v1 - v2;\n });\n });\n // 只有一维的情况下,同时调整 y,赋予默认值\n if (!yField && this.isAdjust('y')) {\n var dim = 'y';\n dimValuesMap[dim] = [DEFAULT_Y, 1]; // 默认分布在 y 轴的 0 与 1 之间\n }\n\n return dimValuesMap;\n };\n return Adjust;\n}();\nexport default Adjust;","export var DEFAULT_Y = 0; // 默认的 y 的值\n// 偏移之后,间距\nexport var MARGIN_RATIO = 1 / 2;\nexport var DODGE_RATIO = 1 / 2;\n// 散点分开之后,距离边界的距离\nexport var GAP = 0.05;","import Adjust from './adjusts/adjust';\nvar ADJUST_MAP = {};\n/**\n * 根据类型获取 Adjust 类\n * @param type\n */\nvar getAdjust = function getAdjust(type) {\n return ADJUST_MAP[type.toLowerCase()];\n};\n/**\n * 注册自定义 Adjust\n * @param type\n * @param ctor\n */\nvar registerAdjust = function registerAdjust(type, ctor) {\n // 注册的时候,需要校验 type 重名,不区分大小写\n if (getAdjust(type)) {\n throw new Error(\"Adjust type '\" + type + \"' existed.\");\n }\n // 存储到 map 中\n ADJUST_MAP[type.toLowerCase()] = ctor;\n};\nexport { getAdjust, registerAdjust, Adjust };\nexport * from './interface';","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\n/* global Reflect, Promise */\n\nvar _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return _extendStatics(d, b);\n};\nexport function __extends(d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\nvar _assign = function __assign() {\n _assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return _assign.apply(this, arguments);\n};\nexport { _assign as __assign };\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n}\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\nexport function __param(paramIndex, decorator) {\n return function (target, key) {\n decorator(target, key, paramIndex);\n };\n}\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\nexport function __generator(thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\nexport function __createBinding(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}\nexport function __exportStar(m, exports) {\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function next() {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n}\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n}\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j];\n return r;\n}\n;\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []),\n i,\n q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i;\n function verb(n) {\n if (g[n]) i[n] = function (v) {\n return new Promise(function (a, b) {\n q.push([n, v, a, b]) > 1 || resume(n, v);\n });\n };\n }\n function resume(n, v) {\n try {\n step(g[n](v));\n } catch (e) {\n settle(q[0][3], e);\n }\n }\n function step(r) {\n r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);\n }\n function fulfill(value) {\n resume(\"next\", value);\n }\n function reject(value) {\n resume(\"throw\", value);\n }\n function settle(f, v) {\n if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]);\n }\n}\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) {\n throw e;\n }), verb(\"return\"), i[Symbol.iterator] = function () {\n return this;\n }, i;\n function verb(n, f) {\n i[n] = o[n] ? function (v) {\n return (p = !p) ? {\n value: __await(o[n](v)),\n done: n === \"return\"\n } : f ? f(v) : v;\n } : f;\n }\n}\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator],\n i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i);\n function verb(n) {\n i[n] = o[n] && function (v) {\n return new Promise(function (resolve, reject) {\n v = o[n](v), settle(resolve, reject, v.done, v.value);\n });\n };\n }\n function settle(resolve, reject, d, v) {\n Promise.resolve(v).then(function (v) {\n resolve({\n value: v,\n done: d\n });\n }, reject);\n }\n}\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n return cooked;\n}\n;\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result.default = mod;\n return result;\n}\nexport function __importDefault(mod) {\n return mod && mod.__esModule ? mod : {\n default: mod\n };\n}\nexport function __classPrivateFieldGet(receiver, privateMap) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to get private field on non-instance\");\n }\n return privateMap.get(receiver);\n}\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to set private field on non-instance\");\n }\n privateMap.set(receiver, value);\n return value;\n}","import { __extends } from \"tslib\";\nimport * as _ from '@antv/util';\nimport { DODGE_RATIO, MARGIN_RATIO } from '../constant';\nimport Adjust from './adjust';\nvar Dodge = /** @class */function (_super) {\n __extends(Dodge, _super);\n function Dodge(cfg) {\n var _this = _super.call(this, cfg) || this;\n _this.cacheMap = {};\n _this.adjustDataArray = [];\n _this.mergeData = [];\n var _a = cfg.marginRatio,\n marginRatio = _a === void 0 ? MARGIN_RATIO : _a,\n _b = cfg.dodgeRatio,\n dodgeRatio = _b === void 0 ? DODGE_RATIO : _b,\n dodgeBy = cfg.dodgeBy,\n intervalPadding = cfg.intervalPadding,\n dodgePadding = cfg.dodgePadding,\n xDimensionLength = cfg.xDimensionLength,\n groupNum = cfg.groupNum,\n defaultSize = cfg.defaultSize,\n maxColumnWidth = cfg.maxColumnWidth,\n minColumnWidth = cfg.minColumnWidth,\n columnWidthRatio = cfg.columnWidthRatio,\n customOffset = cfg.customOffset;\n _this.marginRatio = marginRatio;\n _this.dodgeRatio = dodgeRatio;\n _this.dodgeBy = dodgeBy;\n _this.intervalPadding = intervalPadding;\n _this.dodgePadding = dodgePadding;\n _this.xDimensionLegenth = xDimensionLength;\n _this.groupNum = groupNum;\n _this.defaultSize = defaultSize;\n _this.maxColumnWidth = maxColumnWidth;\n _this.minColumnWidth = minColumnWidth;\n _this.columnWidthRatio = columnWidthRatio;\n _this.customOffset = customOffset;\n return _this;\n }\n Dodge.prototype.process = function (groupDataArray) {\n var groupedDataArray = _.clone(groupDataArray);\n // 将数据数组展开一层\n var mergeData = _.flatten(groupedDataArray);\n var dodgeBy = this.dodgeBy;\n // 如果指定了分组 dim 的字段\n var adjustDataArray = dodgeBy ? _.group(mergeData, dodgeBy) : groupedDataArray;\n this.cacheMap = {};\n this.adjustDataArray = adjustDataArray;\n this.mergeData = mergeData;\n this.adjustData(adjustDataArray, mergeData);\n this.adjustDataArray = [];\n this.mergeData = [];\n return groupedDataArray;\n };\n Dodge.prototype.adjustDim = function (dim, values, data, frameIndex) {\n var _this = this;\n var customOffset = this.customOffset;\n var map = this.getDistribution(dim);\n var groupData = this.groupData(data, dim); // 根据值分组\n _.each(groupData, function (group, key) {\n var range;\n // xField 中只有一个值,不需要做 dodge\n if (values.length === 1) {\n range = {\n pre: values[0] - 1,\n next: values[0] + 1\n };\n } else {\n // 如果有多个,则需要获取调整的范围\n range = _this.getAdjustRange(dim, parseFloat(key), values);\n }\n _.each(group, function (d) {\n var value = d[dim];\n var valueArr = map[value];\n var valIndex = valueArr.indexOf(frameIndex);\n if (!_.isNil(customOffset)) {\n var pre = range.pre,\n next = range.next;\n d[dim] = _.isFunction(customOffset) ? customOffset(d, range) : (pre + next) / 2 + customOffset;\n } else {\n d[dim] = _this.getDodgeOffset(range, valIndex, valueArr.length);\n }\n });\n });\n return [];\n };\n Dodge.prototype.getDodgeOffset = function (range, idx, len) {\n var _a = this,\n dodgeRatio = _a.dodgeRatio,\n marginRatio = _a.marginRatio,\n intervalPadding = _a.intervalPadding,\n dodgePadding = _a.dodgePadding;\n var pre = range.pre,\n next = range.next;\n var tickLength = next - pre;\n var position;\n // 分多种输入情况\n if (!_.isNil(intervalPadding) && _.isNil(dodgePadding) && intervalPadding >= 0) {\n // 仅配置intervalPadding\n var offset = this.getIntervalOnlyOffset(len, idx);\n position = pre + offset;\n } else if (!_.isNil(dodgePadding) && _.isNil(intervalPadding) && dodgePadding >= 0) {\n // 仅配置dodgePadding\n var offset = this.getDodgeOnlyOffset(len, idx);\n position = pre + offset;\n } else if (!_.isNil(intervalPadding) && !_.isNil(dodgePadding) && intervalPadding >= 0 && dodgePadding >= 0) {\n // 同时配置intervalPadding和dodgePadding\n var offset = this.getIntervalAndDodgeOffset(len, idx);\n position = pre + offset;\n } else {\n // 默认情况\n var width = tickLength * dodgeRatio / len;\n var margin = marginRatio * width;\n var offset = 1 / 2 * (tickLength - len * width - (len - 1) * margin) + ((idx + 1) * width + idx * margin) - 1 / 2 * width - 1 / 2 * tickLength;\n position = (pre + next) / 2 + offset;\n }\n return position;\n };\n Dodge.prototype.getIntervalOnlyOffset = function (len, idx) {\n var _a = this,\n defaultSize = _a.defaultSize,\n intervalPadding = _a.intervalPadding,\n xDimensionLegenth = _a.xDimensionLegenth,\n groupNum = _a.groupNum,\n dodgeRatio = _a.dodgeRatio,\n maxColumnWidth = _a.maxColumnWidth,\n minColumnWidth = _a.minColumnWidth,\n columnWidthRatio = _a.columnWidthRatio;\n var normalizedIntervalPadding = intervalPadding / xDimensionLegenth;\n var normalizedDodgePadding = (1 - (groupNum - 1) * normalizedIntervalPadding) / groupNum * dodgeRatio / (len - 1);\n var geomWidth = ((1 - normalizedIntervalPadding * (groupNum - 1)) / groupNum - normalizedDodgePadding * (len - 1)) / len;\n // 根据columnWidthRatio/defaultSize/maxColumnWidth/minColumnWidth调整宽度\n geomWidth = !_.isNil(columnWidthRatio) ? 1 / groupNum / len * columnWidthRatio : geomWidth;\n if (!_.isNil(maxColumnWidth)) {\n var normalizedMaxWidht = maxColumnWidth / xDimensionLegenth;\n geomWidth = Math.min(geomWidth, normalizedMaxWidht);\n }\n if (!_.isNil(minColumnWidth)) {\n var normalizedMinWidht = minColumnWidth / xDimensionLegenth;\n geomWidth = Math.max(geomWidth, normalizedMinWidht);\n }\n geomWidth = defaultSize ? defaultSize / xDimensionLegenth : geomWidth;\n // 调整组内间隔\n normalizedDodgePadding = ((1 - (groupNum - 1) * normalizedIntervalPadding) / groupNum - len * geomWidth) / (len - 1);\n var offset = ((1 / 2 + idx) * geomWidth + idx * normalizedDodgePadding + 1 / 2 * normalizedIntervalPadding) * groupNum - normalizedIntervalPadding / 2;\n return offset;\n };\n Dodge.prototype.getDodgeOnlyOffset = function (len, idx) {\n var _a = this,\n defaultSize = _a.defaultSize,\n dodgePadding = _a.dodgePadding,\n xDimensionLegenth = _a.xDimensionLegenth,\n groupNum = _a.groupNum,\n marginRatio = _a.marginRatio,\n maxColumnWidth = _a.maxColumnWidth,\n minColumnWidth = _a.minColumnWidth,\n columnWidthRatio = _a.columnWidthRatio;\n var normalizedDodgePadding = dodgePadding / xDimensionLegenth;\n var normalizedIntervalPadding = 1 * marginRatio / (groupNum - 1);\n var geomWidth = ((1 - normalizedIntervalPadding * (groupNum - 1)) / groupNum - normalizedDodgePadding * (len - 1)) / len;\n // 根据columnWidthRatio/defaultSize/maxColumnWidth/minColumnWidth调整宽度\n geomWidth = columnWidthRatio ? 1 / groupNum / len * columnWidthRatio : geomWidth;\n if (!_.isNil(maxColumnWidth)) {\n var normalizedMaxWidht = maxColumnWidth / xDimensionLegenth;\n geomWidth = Math.min(geomWidth, normalizedMaxWidht);\n }\n if (!_.isNil(minColumnWidth)) {\n var normalizedMinWidht = minColumnWidth / xDimensionLegenth;\n geomWidth = Math.max(geomWidth, normalizedMinWidht);\n }\n geomWidth = defaultSize ? defaultSize / xDimensionLegenth : geomWidth;\n // 调整组间距\n normalizedIntervalPadding = (1 - (geomWidth * len + normalizedDodgePadding * (len - 1)) * groupNum) / (groupNum - 1);\n var offset = ((1 / 2 + idx) * geomWidth + idx * normalizedDodgePadding + 1 / 2 * normalizedIntervalPadding) * groupNum - normalizedIntervalPadding / 2;\n return offset;\n };\n Dodge.prototype.getIntervalAndDodgeOffset = function (len, idx) {\n var _a = this,\n intervalPadding = _a.intervalPadding,\n dodgePadding = _a.dodgePadding,\n xDimensionLegenth = _a.xDimensionLegenth,\n groupNum = _a.groupNum;\n var normalizedIntervalPadding = intervalPadding / xDimensionLegenth;\n var normalizedDodgePadding = dodgePadding / xDimensionLegenth;\n var geomWidth = ((1 - normalizedIntervalPadding * (groupNum - 1)) / groupNum - normalizedDodgePadding * (len - 1)) / len;\n var offset = ((1 / 2 + idx) * geomWidth + idx * normalizedDodgePadding + 1 / 2 * normalizedIntervalPadding) * groupNum - normalizedIntervalPadding / 2;\n return offset;\n };\n Dodge.prototype.getDistribution = function (dim) {\n var groupedDataArray = this.adjustDataArray;\n var cacheMap = this.cacheMap;\n var map = cacheMap[dim];\n if (!map) {\n map = {};\n _.each(groupedDataArray, function (data, index) {\n var values = _.valuesOfKey(data, dim);\n if (!values.length) {\n values.push(0);\n }\n _.each(values, function (val) {\n if (!map[val]) {\n map[val] = [];\n }\n map[val].push(index);\n });\n });\n cacheMap[dim] = map;\n }\n return map;\n };\n return Dodge;\n}(Adjust);\nexport default Dodge;","import { __extends } from \"tslib\";\nimport * as _ from '@antv/util';\nimport { GAP } from '../constant';\nimport Adjust from './adjust';\nfunction randomNumber(min, max) {\n return (max - min) * Math.random() + min;\n}\nvar Jitter = /** @class */function (_super) {\n __extends(Jitter, _super);\n function Jitter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Jitter.prototype.process = function (groupDataArray) {\n var groupedDataArray = _.clone(groupDataArray);\n // 之前分组之后的数据,然后有合并回去(和分组前可以理解成是一样的)\n var mergeData = _.flatten(groupedDataArray);\n // 返回值\n this.adjustData(groupedDataArray, mergeData);\n return groupedDataArray;\n };\n /**\n * 当前数据分组(index)中,按照维度 dim 进行 jitter 调整\n * @param dim\n * @param values\n * @param dataArray\n */\n Jitter.prototype.adjustDim = function (dim, values, dataArray) {\n var _this = this;\n // 在每一个分组中,将数据再按照 dim 分组,用于散列\n var groupDataArray = this.groupData(dataArray, dim);\n return _.each(groupDataArray, function (data, dimValue) {\n return _this.adjustGroup(data, dim, parseFloat(dimValue), values);\n });\n };\n // 随机出来的字段值\n Jitter.prototype.getAdjustOffset = function (range) {\n var pre = range.pre,\n next = range.next;\n // 随机的范围\n var margin = (next - pre) * GAP;\n return randomNumber(pre + margin, next - margin);\n };\n // adjust group data\n Jitter.prototype.adjustGroup = function (group, dim, dimValue, values) {\n var _this = this;\n // 调整范围\n var range = this.getAdjustRange(dim, dimValue, values);\n _.each(group, function (data) {\n data[dim] = _this.getAdjustOffset(range); // 获取调整的位置\n });\n\n return group;\n };\n return Jitter;\n}(Adjust);\nexport default Jitter;","import { __assign, __extends } from \"tslib\";\nimport * as _ from '@antv/util';\nimport Adjust from './adjust';\nvar Cache = _.Cache;\nvar Stack = /** @class */function (_super) {\n __extends(Stack, _super);\n function Stack(cfg) {\n var _this = _super.call(this, cfg) || this;\n var _a = cfg.adjustNames,\n adjustNames = _a === void 0 ? ['y'] : _a,\n _b = cfg.height,\n height = _b === void 0 ? NaN : _b,\n _c = cfg.size,\n size = _c === void 0 ? 10 : _c,\n _d = cfg.reverseOrder,\n reverseOrder = _d === void 0 ? false : _d;\n _this.adjustNames = adjustNames;\n _this.height = height;\n _this.size = size;\n _this.reverseOrder = reverseOrder;\n return _this;\n }\n /**\n * 方法入参是经过数据分组、数据数字化之后的二维数组\n * @param groupDataArray 分组之后的数据\n */\n Stack.prototype.process = function (groupDataArray) {\n var _a = this,\n yField = _a.yField,\n reverseOrder = _a.reverseOrder;\n // 如果有指定 y 字段,那么按照 y 字段来 stack\n // 否则,按照高度均分\n var d = yField ? this.processStack(groupDataArray) : this.processOneDimStack(groupDataArray);\n return reverseOrder ? this.reverse(d) : d;\n };\n Stack.prototype.reverse = function (groupedDataArray) {\n return groupedDataArray.slice(0).reverse();\n };\n Stack.prototype.processStack = function (groupDataArray) {\n var _a = this,\n xField = _a.xField,\n yField = _a.yField,\n reverseOrder = _a.reverseOrder;\n // 层叠顺序翻转\n var groupedDataArray = reverseOrder ? this.reverse(groupDataArray) : groupDataArray;\n // 用来缓存,正数和负数的堆叠问题\n var positive = new Cache();\n var negative = new Cache();\n return groupedDataArray.map(function (dataArray) {\n return dataArray.map(function (data) {\n var _a;\n var x = _.get(data, xField, 0);\n var y = _.get(data, [yField]);\n var xKey = x.toString();\n // todo 是否应该取 _origin?因为 y 可能取到的值不正确,比如先 symmetric,再 stack!\n y = _.isArray(y) ? y[1] : y;\n if (!_.isNil(y)) {\n var cache = y >= 0 ? positive : negative;\n if (!cache.has(xKey)) {\n cache.set(xKey, 0);\n }\n var xValue = cache.get(xKey);\n var newXValue = y + xValue;\n // 存起来\n cache.set(xKey, newXValue);\n return __assign(__assign({}, data), (_a = {}, _a[yField] = [xValue, newXValue], _a));\n }\n // 没有修改,则直接返回\n return data;\n });\n });\n };\n Stack.prototype.processOneDimStack = function (groupDataArray) {\n var _this = this;\n var _a = this,\n xField = _a.xField,\n height = _a.height,\n reverseOrder = _a.reverseOrder;\n var yField = 'y';\n // 如果层叠的顺序翻转\n var groupedDataArray = reverseOrder ? this.reverse(groupDataArray) : groupDataArray;\n // 缓存累加数据\n var cache = new Cache();\n return groupedDataArray.map(function (dataArray) {\n return dataArray.map(function (data) {\n var _a;\n var size = _this.size;\n var xValue = data[xField];\n // todo 没有看到这个 stack 计算原理\n var stackHeight = size * 2 / height;\n if (!cache.has(xValue)) {\n cache.set(xValue, stackHeight / 2); // 初始值大小\n }\n\n var stackValue = cache.get(xValue);\n // 增加一层 stackHeight\n cache.set(xValue, stackValue + stackHeight);\n return __assign(__assign({}, data), (_a = {}, _a[yField] = stackValue, _a));\n });\n });\n };\n return Stack;\n}(Adjust);\nexport default Stack;","import { __assign, __extends } from \"tslib\";\nimport * as _ from '@antv/util';\nimport Adjust from './adjust';\nvar Symmetric = /** @class */function (_super) {\n __extends(Symmetric, _super);\n function Symmetric() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Symmetric.prototype.process = function (groupDataArray) {\n var mergeData = _.flatten(groupDataArray);\n var _a = this,\n xField = _a.xField,\n yField = _a.yField;\n // 每个 x 值对应的 最大值\n var cache = this.getXValuesMaxMap(mergeData);\n // 所有数据的最大的值\n var max = Math.max.apply(Math, Object.keys(cache).map(function (key) {\n return cache[key];\n }));\n return _.map(groupDataArray, function (dataArray) {\n return _.map(dataArray, function (data) {\n var _a, _b;\n var yValue = data[yField];\n var xValue = data[xField];\n // 数组处理逻辑\n if (_.isArray(yValue)) {\n var off_1 = (max - cache[xValue]) / 2;\n return __assign(__assign({}, data), (_a = {}, _a[yField] = _.map(yValue, function (y) {\n return off_1 + y;\n }), _a));\n }\n // 非数组处理逻辑\n var offset = (max - yValue) / 2;\n return __assign(__assign({}, data), (_b = {}, _b[yField] = [offset, yValue + offset], _b));\n });\n });\n };\n // 获取每个 x 对应的最大的值\n Symmetric.prototype.getXValuesMaxMap = function (mergeData) {\n var _this = this;\n var _a = this,\n xField = _a.xField,\n yField = _a.yField;\n // 根据 xField 的值进行分组\n var groupDataArray = _.groupBy(mergeData, function (data) {\n return data[xField];\n });\n // 获取每个 xField 值中的最大值\n return _.mapValues(groupDataArray, function (dataArray) {\n return _this.getDimMaxValue(dataArray, yField);\n });\n };\n Symmetric.prototype.getDimMaxValue = function (mergeData, dim) {\n // 所有的 value 值\n var dimValues = _.map(mergeData, function (data) {\n return _.get(data, dim, []);\n });\n // 将数组打平(dim value 有可能是数组,比如 stack 之后的)\n var flattenValues = _.flatten(dimValues);\n // 求出数组的最大值\n return Math.max.apply(Math, flattenValues);\n };\n return Symmetric;\n}(Adjust);\nexport default Symmetric;","import { getAdjust, registerAdjust } from './factory';\nimport Adjust from './adjusts/adjust';\nimport Dodge from './adjusts/dodge';\nimport Jitter from './adjusts/jitter';\nimport Stack from './adjusts/stack';\nimport Symmetric from './adjusts/symmetric';\n// 注册内置的 adjust\nregisterAdjust('Dodge', Dodge);\nregisterAdjust('Jitter', Jitter);\nregisterAdjust('Stack', Stack);\nregisterAdjust('Symmetric', Symmetric);\n// 最终暴露给外部的方法\nexport { getAdjust, registerAdjust, Adjust };\nexport * from './interface';","import { isArray, isNil, isString } from '@antv/util';\n// todo 这个到底目的是什么?\nvar toScaleString = function toScaleString(scale, value) {\n if (isString(value)) {\n return value;\n }\n return scale.invert(scale.scale(value));\n};\n/**\n * 所有视觉通道属性的基类\n * @class Base\n */\nvar Attribute = /** @class */function () {\n function Attribute(cfg) {\n this.names = [];\n this.scales = [];\n this.linear = false;\n this.values = [];\n this.callback = function () {\n return [];\n };\n // 解析配置\n this._parseCfg(cfg);\n }\n /**\n * 映射的值组成的数组\n * @param params 对应 scale 顺序的值传入\n */\n Attribute.prototype.mapping = function () {\n var _this = this;\n var params = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n params[_i] = arguments[_i];\n }\n var values = params.map(function (param, idx) {\n return _this._toOriginParam(param, _this.scales[idx]);\n });\n return this.callback.apply(this, values);\n };\n /**\n * 如果进行线性映射,返回对应的映射值\n * @param percent\n */\n Attribute.prototype.getLinearValue = function (percent) {\n // 分段数量\n var steps = this.values.length - 1;\n var step = Math.floor(steps * percent);\n var leftPercent = steps * percent - step;\n // todo 不懂这个逻辑\n var start = this.values[step];\n var end = step === steps ? start : this.values[step + 1];\n // 线性方程\n return start + (end - start) * leftPercent;\n };\n /**\n * 根据度量获取属性名\n */\n Attribute.prototype.getNames = function () {\n var scales = this.scales;\n var names = this.names;\n var length = Math.min(scales.length, names.length);\n var rst = [];\n for (var i = 0; i < length; i += 1) {\n rst.push(names[i]);\n }\n return rst;\n };\n /**\n * 获取所有的维度名\n */\n Attribute.prototype.getFields = function () {\n return this.scales.map(function (scale) {\n return scale.field;\n });\n };\n /**\n * 根据名称获取度量\n * @param name\n */\n Attribute.prototype.getScale = function (name) {\n return this.scales[this.names.indexOf(name)];\n };\n /**\n * 默认的回调函数(用户没有自定义 callback,或者用户自定义 callback 返回空的时候,使用 values 映射)\n * @param params\n */\n Attribute.prototype.defaultCallback = function () {\n var _this = this;\n var params = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n params[_i] = arguments[_i];\n }\n // 没有 params 的情况,是指没有指定 fields,直接返回配置的 values 常量\n if (params.length === 0) {\n return this.values;\n }\n return params.map(function (param, idx) {\n var scale = _this.scales[idx];\n return scale.type === 'identity' ? scale.values[0] : _this._getAttributeValue(scale, param);\n });\n };\n // 解析配置\n Attribute.prototype._parseCfg = function (cfg) {\n var _this = this;\n var _a = cfg.type,\n type = _a === void 0 ? 'base' : _a,\n _b = cfg.names,\n names = _b === void 0 ? [] : _b,\n _c = cfg.scales,\n scales = _c === void 0 ? [] : _c,\n _d = cfg.values,\n values = _d === void 0 ? [] : _d,\n callback = cfg.callback;\n this.type = type;\n this.scales = scales;\n this.values = values;\n this.names = names;\n // 构造 callback 方法\n this.callback = function () {\n var params = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n params[_i] = arguments[_i];\n }\n /**\n * 当用户设置的 callback 返回 null 时, 应该返回默认 callback 中的值\n */\n if (callback) {\n // 使用用户返回的值处理\n var ret = callback.apply(void 0, params);\n if (!isNil(ret)) {\n return [ret];\n }\n }\n // 没有 callback 或者用户 callback 返回值为空,则使用默认的逻辑处理\n return _this.defaultCallback.apply(_this, params);\n };\n };\n // 获取属性值,将值映射到视觉通道\n Attribute.prototype._getAttributeValue = function (scale, value) {\n // 如果是非线性的字段,直接从 values 中取值即可\n if (scale.isCategory && !this.linear) {\n // 离散 scale 变换成索引\n var idx = scale.translate(value);\n return this.values[idx % this.values.length];\n }\n // 线性则使用线性值\n var percent = scale.scale(value);\n return this.getLinearValue(percent);\n };\n /**\n * 通过 scale 拿到数据对应的原始的参数\n * @param param\n * @param scale\n * @private\n */\n Attribute.prototype._toOriginParam = function (param, scale) {\n // 是线性,直接返回\n // 非线性,使用 scale 变换\n return !scale.isLinear ? isArray(param) ? param.map(function (p) {\n return toScaleString(scale, p);\n }) : toScaleString(scale, param) : param;\n };\n return Attribute;\n}();\nexport default Attribute;","import { map, memoize, isString, each } from '@antv/util';\nvar RGB_REG = /rgba?\\(([\\s.,0-9]+)\\)/;\nvar regexLG = /^l\\s*\\(\\s*([\\d.]+)\\s*\\)\\s*(.*)/i;\nvar regexRG = /^r\\s*\\(\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*\\)\\s*(.*)/i;\nvar regexColorStop = /[\\d.]+:(#[^\\s]+|[^\\)]+\\))/gi;\nvar isGradientColor = function isGradientColor(val) {\n return /^[r,R,L,l]{1}[\\s]*\\(/.test(val);\n};\n// 创建辅助 tag 取颜色\nvar createTmp = function createTmp() {\n var i = document.createElement('i');\n i.title = 'Web Colour Picker';\n i.style.display = 'none';\n document.body.appendChild(i);\n return i;\n};\n// 获取颜色之间的插值\nvar getValue = function getValue(start, end, percent, index) {\n return start[index] + (end[index] - start[index]) * percent;\n};\n// 数组转换成颜色\nfunction arr2rgb(arr) {\n return \"#\" + toHex(arr[0]) + toHex(arr[1]) + toHex(arr[2]);\n}\n// rgb 颜色转换成数组\nvar rgb2arr = function rgb2arr(str) {\n return [parseInt(str.substr(1, 2), 16), parseInt(str.substr(3, 2), 16), parseInt(str.substr(5, 2), 16)];\n};\n// 将数值从 0-255 转换成16进制字符串\nvar toHex = function toHex(value) {\n var x16Value = Math.round(value).toString(16);\n return x16Value.length === 1 ? \"0\" + x16Value : x16Value;\n};\n// 计算颜色\nvar calColor = function calColor(points, percent) {\n var fixedPercent = isNaN(Number(percent)) || percent < 0 ? 0 : percent > 1 ? 1 : Number(percent);\n var steps = points.length - 1;\n var step = Math.floor(steps * fixedPercent);\n var left = steps * fixedPercent - step;\n var start = points[step];\n var end = step === steps ? start : points[step + 1];\n return arr2rgb([getValue(start, end, left, 0), getValue(start, end, left, 1), getValue(start, end, left, 2)]);\n};\n// 用于给 toRGB 的缓存(使用 memoize 方法替换)\n// const colorCache = {};\nvar iEl;\n/**\n * 将颜色转换到 rgb 的格式\n * @param {color} color 颜色\n * @return 将颜色转换到 '#ffffff' 的格式\n */\nvar toRGB = function toRGB(color) {\n // 如果已经是 rgb的格式\n if (color[0] === '#' && color.length === 7) {\n return color;\n }\n if (!iEl) {\n // 防止防止在页头报错\n iEl = createTmp();\n }\n iEl.style.color = color;\n var rst = document.defaultView.getComputedStyle(iEl, '').getPropertyValue('color');\n var matches = RGB_REG.exec(rst);\n var cArray = matches[1].split(/\\s*,\\s*/).map(function (s) {\n return Number(s);\n });\n rst = arr2rgb(cArray);\n return rst;\n};\n/**\n * 获取渐变函数\n * @param colors 多个颜色\n * @return 颜色值\n */\nvar gradient = function gradient(colors) {\n var colorArray = isString(colors) ? colors.split('-') : colors;\n var points = map(colorArray, function (color) {\n return rgb2arr(color.indexOf('#') === -1 ? toRGB(color) : color);\n });\n // 返回一个函数\n return function (percent) {\n return calColor(points, percent);\n };\n};\nvar toCSSGradient = function toCSSGradient(gradientColor) {\n if (isGradientColor(gradientColor)) {\n var cssColor_1;\n var steps = void 0;\n if (gradientColor[0] === 'l') {\n // 线性渐变\n var arr = regexLG.exec(gradientColor);\n var angle = +arr[1] + 90; // css 和 g 的渐变起始角度不同\n steps = arr[2];\n cssColor_1 = \"linear-gradient(\" + angle + \"deg, \";\n } else if (gradientColor[0] === 'r') {\n // 径向渐变\n cssColor_1 = 'radial-gradient(';\n var arr = regexRG.exec(gradientColor);\n steps = arr[4];\n }\n var colorStops_1 = steps.match(regexColorStop);\n each(colorStops_1, function (item, index) {\n var itemArr = item.split(':');\n cssColor_1 += itemArr[1] + \" \" + itemArr[0] * 100 + \"%\";\n if (index !== colorStops_1.length - 1) {\n cssColor_1 += ', ';\n }\n });\n cssColor_1 += ')';\n return cssColor_1;\n }\n return gradientColor;\n};\nexport default {\n rgb2arr: rgb2arr,\n gradient: gradient,\n toRGB: memoize(toRGB),\n toCSSGradient: toCSSGradient\n};","import { __extends } from \"tslib\";\nimport colorUtil from '@antv/color-util';\nimport { isString } from '@antv/util';\nimport Attribute from './base';\nvar Color = /** @class */function (_super) {\n __extends(Color, _super);\n function Color(cfg) {\n var _this = _super.call(this, cfg) || this;\n _this.type = 'color';\n _this.names = ['color'];\n if (isString(_this.values)) {\n _this.linear = true;\n }\n _this.gradient = colorUtil.gradient(_this.values);\n return _this;\n }\n /**\n * @override\n */\n Color.prototype.getLinearValue = function (percent) {\n return this.gradient(percent);\n };\n return Color;\n}(Attribute);\nexport default Color;","import { __extends } from \"tslib\";\nimport Attribute from './base';\nvar Opacity = /** @class */function (_super) {\n __extends(Opacity, _super);\n function Opacity(cfg) {\n var _this = _super.call(this, cfg) || this;\n _this.type = 'opacity';\n _this.names = ['opacity'];\n return _this;\n }\n return Opacity;\n}(Attribute);\nexport default Opacity;","import { __extends } from \"tslib\";\nimport { isArray, isNil } from '@antv/util';\nimport Attribute from './base';\nvar Position = /** @class */function (_super) {\n __extends(Position, _super);\n function Position(cfg) {\n var _this = _super.call(this, cfg) || this;\n _this.names = ['x', 'y'];\n _this.type = 'position';\n return _this;\n }\n Position.prototype.mapping = function (x, y) {\n var _a = this.scales,\n scaleX = _a[0],\n scaleY = _a[1];\n if (isNil(x) || isNil(y)) {\n return [];\n }\n return [isArray(x) ? x.map(function (xi) {\n return scaleX.scale(xi);\n }) : scaleX.scale(x), isArray(y) ? y.map(function (yi) {\n return scaleY.scale(yi);\n }) : scaleY.scale(y)];\n };\n return Position;\n}(Attribute);\nexport default Position;","import { __extends } from \"tslib\";\nimport Attribute from './base';\nvar Shape = /** @class */function (_super) {\n __extends(Shape, _super);\n function Shape(cfg) {\n var _this = _super.call(this, cfg) || this;\n _this.type = 'shape';\n _this.names = ['shape'];\n return _this;\n }\n /**\n * @override\n */\n Shape.prototype.getLinearValue = function (percent) {\n var idx = Math.round((this.values.length - 1) * percent);\n return this.values[idx];\n };\n return Shape;\n}(Attribute);\nexport default Shape;","import { __extends } from \"tslib\";\nimport Attribute from './base';\nvar Size = /** @class */function (_super) {\n __extends(Size, _super);\n function Size(cfg) {\n var _this = _super.call(this, cfg) || this;\n _this.type = 'size';\n _this.names = ['size'];\n return _this;\n }\n return Size;\n}(Attribute);\nexport default Size;","var methodCache = {};\n/**\n * 获取计算 ticks 的方法\n * @param key 键值\n * @returns 计算 ticks 的方法\n */\nexport function getTickMethod(key) {\n return methodCache[key];\n}\n/**\n * 注册计算 ticks 的方法\n * @param key 键值\n * @param method 方法\n */\nexport function registerTickMethod(key, method) {\n methodCache[key] = method;\n}","import { assign, isEmpty, isFunction, isNil, isNumber, isObject, isString, map } from '@antv/util';\nimport { getTickMethod } from './tick-method/register';\nvar Scale = /** @class */function () {\n function Scale(cfg) {\n /**\n * 度量的类型\n */\n this.type = 'base';\n /**\n * 是否分类类型的度量\n */\n this.isCategory = false;\n /**\n * 是否线性度量,有linear, time 度量\n */\n this.isLinear = false;\n /**\n * 是否连续类型的度量,linear,time,log, pow, quantile, quantize 都支持\n */\n this.isContinuous = false;\n /**\n * 是否是常量的度量,传入和传出一致\n */\n this.isIdentity = false;\n this.values = [];\n this.range = [0, 1];\n this.ticks = [];\n this.__cfg__ = cfg;\n this.initCfg();\n this.init();\n }\n // 对于原始值的必要转换,如分类、时间字段需转换成数值,用transform/map命名可能更好\n Scale.prototype.translate = function (v) {\n return v;\n };\n /** 重新初始化 */\n Scale.prototype.change = function (cfg) {\n // 覆盖配置项,而不替代\n assign(this.__cfg__, cfg);\n this.init();\n };\n Scale.prototype.clone = function () {\n return this.constructor(this.__cfg__);\n };\n /** 获取坐标轴需要的ticks */\n Scale.prototype.getTicks = function () {\n var _this = this;\n return map(this.ticks, function (tick, idx) {\n if (isObject(tick)) {\n // 仅当符合Tick类型时才有意义\n return tick;\n }\n return {\n text: _this.getText(tick, idx),\n tickValue: tick,\n value: _this.scale(tick)\n };\n });\n };\n /** 获取Tick的格式化结果 */\n Scale.prototype.getText = function (value, key) {\n var formatter = this.formatter;\n var res = formatter ? formatter(value, key) : value;\n if (isNil(res) || !isFunction(res.toString)) {\n return '';\n }\n return res.toString();\n };\n // 获取配置项中的值,当前 scale 上的值可能会被修改\n Scale.prototype.getConfig = function (key) {\n return this.__cfg__[key];\n };\n // scale初始化\n Scale.prototype.init = function () {\n assign(this, this.__cfg__);\n this.setDomain();\n if (isEmpty(this.getConfig('ticks'))) {\n this.ticks = this.calculateTicks();\n }\n };\n // 子类上覆盖某些属性,不能直接在类上声明,否则会被覆盖\n Scale.prototype.initCfg = function () {};\n Scale.prototype.setDomain = function () {};\n Scale.prototype.calculateTicks = function () {\n var tickMethod = this.tickMethod;\n var ticks = [];\n if (isString(tickMethod)) {\n var method = getTickMethod(tickMethod);\n if (!method) {\n throw new Error('There is no method to to calculate ticks!');\n }\n ticks = method(this);\n } else if (isFunction(tickMethod)) {\n ticks = tickMethod(this);\n }\n return ticks;\n };\n // range 的最小值\n Scale.prototype.rangeMin = function () {\n return this.range[0];\n };\n // range 的最大值\n Scale.prototype.rangeMax = function () {\n return this.range[1];\n };\n /** 定义域转 0~1 */\n Scale.prototype.calcPercent = function (value, min, max) {\n if (isNumber(value)) {\n return (value - min) / (max - min);\n }\n return NaN;\n };\n /** 0~1转定义域 */\n Scale.prototype.calcValue = function (percent, min, max) {\n return min + percent * (max - min);\n };\n return Scale;\n}();\nexport default Scale;","import { __extends, __spreadArrays } from \"tslib\";\nimport { isNil, isNumber } from '@antv/util';\nimport Base from '../base';\n/**\n * 分类度量\n * @class\n */\nvar Category = /** @class */function (_super) {\n __extends(Category, _super);\n function Category() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'cat';\n _this.isCategory = true;\n return _this;\n }\n Category.prototype.buildIndexMap = function () {\n if (!this.translateIndexMap) {\n this.translateIndexMap = new Map();\n // 重新构建缓存\n for (var i = 0; i < this.values.length; i++) {\n this.translateIndexMap.set(this.values[i], i);\n }\n }\n };\n Category.prototype.translate = function (value) {\n // 按需构建 map\n this.buildIndexMap();\n // 找得到\n var idx = this.translateIndexMap.get(value);\n if (idx === undefined) {\n idx = isNumber(value) ? value : NaN;\n }\n return idx;\n };\n Category.prototype.scale = function (value) {\n var order = this.translate(value);\n // 分类数据允许 0.5 范围内调整\n // if (order < this.min - 0.5 || order > this.max + 0.5) {\n // return NaN;\n // }\n var percent = this.calcPercent(order, this.min, this.max);\n return this.calcValue(percent, this.rangeMin(), this.rangeMax());\n };\n Category.prototype.invert = function (scaledValue) {\n var domainRange = this.max - this.min;\n var percent = this.calcPercent(scaledValue, this.rangeMin(), this.rangeMax());\n var idx = Math.round(domainRange * percent) + this.min;\n if (idx < this.min || idx > this.max) {\n return NaN;\n }\n return this.values[idx];\n };\n Category.prototype.getText = function (value) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var v = value;\n // value为index\n if (isNumber(value) && !this.values.includes(value)) {\n v = this.values[v];\n }\n return _super.prototype.getText.apply(this, __spreadArrays([v], args));\n };\n // 复写属性\n Category.prototype.initCfg = function () {\n this.tickMethod = 'cat';\n };\n // 设置 min, max\n Category.prototype.setDomain = function () {\n // 用户有可能设置 min\n if (isNil(this.getConfig('min'))) {\n this.min = 0;\n }\n if (isNil(this.getConfig('max'))) {\n var size = this.values.length;\n this.max = size > 1 ? size - 1 : size;\n }\n // scale.init 的时候清除缓存\n if (this.translateIndexMap) {\n this.translateIndexMap = undefined;\n }\n };\n return Category;\n}(Base);\nexport default Category;","var token = /d{1,4}|M{1,4}|YY(?:YY)?|S{1,3}|Do|ZZ|Z|([HhMsDm])\\1?|[aA]|\"[^\"]*\"|'[^']*'/g;\nvar twoDigitsOptional = \"\\\\d\\\\d?\";\nvar twoDigits = \"\\\\d\\\\d\";\nvar threeDigits = \"\\\\d{3}\";\nvar fourDigits = \"\\\\d{4}\";\nvar word = \"[^\\\\s]+\";\nvar literal = /\\[([^]*?)\\]/gm;\nfunction shorten(arr, sLen) {\n var newArr = [];\n for (var i = 0, len = arr.length; i < len; i++) {\n newArr.push(arr[i].substr(0, sLen));\n }\n return newArr;\n}\nvar monthUpdate = function monthUpdate(arrName) {\n return function (v, i18n) {\n var lowerCaseArr = i18n[arrName].map(function (v) {\n return v.toLowerCase();\n });\n var index = lowerCaseArr.indexOf(v.toLowerCase());\n if (index > -1) {\n return index;\n }\n return null;\n };\n};\nfunction assign(origObj) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n var obj = args_1[_a];\n for (var key in obj) {\n // @ts-ignore ex\n origObj[key] = obj[key];\n }\n }\n return origObj;\n}\nvar dayNames = [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"];\nvar monthNames = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"];\nvar monthNamesShort = shorten(monthNames, 3);\nvar dayNamesShort = shorten(dayNames, 3);\nvar defaultI18n = {\n dayNamesShort: dayNamesShort,\n dayNames: dayNames,\n monthNamesShort: monthNamesShort,\n monthNames: monthNames,\n amPm: [\"am\", \"pm\"],\n DoFn: function DoFn(dayOfMonth) {\n return dayOfMonth + [\"th\", \"st\", \"nd\", \"rd\"][dayOfMonth % 10 > 3 ? 0 : (dayOfMonth - dayOfMonth % 10 !== 10 ? 1 : 0) * dayOfMonth % 10];\n }\n};\nvar globalI18n = assign({}, defaultI18n);\nvar setGlobalDateI18n = function setGlobalDateI18n(i18n) {\n return globalI18n = assign(globalI18n, i18n);\n};\nvar regexEscape = function regexEscape(str) {\n return str.replace(/[|\\\\{()[^$+*?.-]/g, \"\\\\$&\");\n};\nvar pad = function pad(val, len) {\n if (len === void 0) {\n len = 2;\n }\n val = String(val);\n while (val.length < len) {\n val = \"0\" + val;\n }\n return val;\n};\nvar formatFlags = {\n D: function D(dateObj) {\n return String(dateObj.getDate());\n },\n DD: function DD(dateObj) {\n return pad(dateObj.getDate());\n },\n Do: function Do(dateObj, i18n) {\n return i18n.DoFn(dateObj.getDate());\n },\n d: function d(dateObj) {\n return String(dateObj.getDay());\n },\n dd: function dd(dateObj) {\n return pad(dateObj.getDay());\n },\n ddd: function ddd(dateObj, i18n) {\n return i18n.dayNamesShort[dateObj.getDay()];\n },\n dddd: function dddd(dateObj, i18n) {\n return i18n.dayNames[dateObj.getDay()];\n },\n M: function M(dateObj) {\n return String(dateObj.getMonth() + 1);\n },\n MM: function MM(dateObj) {\n return pad(dateObj.getMonth() + 1);\n },\n MMM: function MMM(dateObj, i18n) {\n return i18n.monthNamesShort[dateObj.getMonth()];\n },\n MMMM: function MMMM(dateObj, i18n) {\n return i18n.monthNames[dateObj.getMonth()];\n },\n YY: function YY(dateObj) {\n return pad(String(dateObj.getFullYear()), 4).substr(2);\n },\n YYYY: function YYYY(dateObj) {\n return pad(dateObj.getFullYear(), 4);\n },\n h: function h(dateObj) {\n return String(dateObj.getHours() % 12 || 12);\n },\n hh: function hh(dateObj) {\n return pad(dateObj.getHours() % 12 || 12);\n },\n H: function H(dateObj) {\n return String(dateObj.getHours());\n },\n HH: function HH(dateObj) {\n return pad(dateObj.getHours());\n },\n m: function m(dateObj) {\n return String(dateObj.getMinutes());\n },\n mm: function mm(dateObj) {\n return pad(dateObj.getMinutes());\n },\n s: function s(dateObj) {\n return String(dateObj.getSeconds());\n },\n ss: function ss(dateObj) {\n return pad(dateObj.getSeconds());\n },\n S: function S(dateObj) {\n return String(Math.round(dateObj.getMilliseconds() / 100));\n },\n SS: function SS(dateObj) {\n return pad(Math.round(dateObj.getMilliseconds() / 10), 2);\n },\n SSS: function SSS(dateObj) {\n return pad(dateObj.getMilliseconds(), 3);\n },\n a: function a(dateObj, i18n) {\n return dateObj.getHours() < 12 ? i18n.amPm[0] : i18n.amPm[1];\n },\n A: function A(dateObj, i18n) {\n return dateObj.getHours() < 12 ? i18n.amPm[0].toUpperCase() : i18n.amPm[1].toUpperCase();\n },\n ZZ: function ZZ(dateObj) {\n var offset = dateObj.getTimezoneOffset();\n return (offset > 0 ? \"-\" : \"+\") + pad(Math.floor(Math.abs(offset) / 60) * 100 + Math.abs(offset) % 60, 4);\n },\n Z: function Z(dateObj) {\n var offset = dateObj.getTimezoneOffset();\n return (offset > 0 ? \"-\" : \"+\") + pad(Math.floor(Math.abs(offset) / 60), 2) + \":\" + pad(Math.abs(offset) % 60, 2);\n }\n};\nvar monthParse = function monthParse(v) {\n return +v - 1;\n};\nvar emptyDigits = [null, twoDigitsOptional];\nvar emptyWord = [null, word];\nvar amPm = [\"isPm\", word, function (v, i18n) {\n var val = v.toLowerCase();\n if (val === i18n.amPm[0]) {\n return 0;\n } else if (val === i18n.amPm[1]) {\n return 1;\n }\n return null;\n}];\nvar timezoneOffset = [\"timezoneOffset\", \"[^\\\\s]*?[\\\\+\\\\-]\\\\d\\\\d:?\\\\d\\\\d|[^\\\\s]*?Z?\", function (v) {\n var parts = (v + \"\").match(/([+-]|\\d\\d)/gi);\n if (parts) {\n var minutes = +parts[1] * 60 + parseInt(parts[2], 10);\n return parts[0] === \"+\" ? minutes : -minutes;\n }\n return 0;\n}];\nvar parseFlags = {\n D: [\"day\", twoDigitsOptional],\n DD: [\"day\", twoDigits],\n Do: [\"day\", twoDigitsOptional + word, function (v) {\n return parseInt(v, 10);\n }],\n M: [\"month\", twoDigitsOptional, monthParse],\n MM: [\"month\", twoDigits, monthParse],\n YY: [\"year\", twoDigits, function (v) {\n var now = new Date();\n var cent = +(\"\" + now.getFullYear()).substr(0, 2);\n return +(\"\" + (+v > 68 ? cent - 1 : cent) + v);\n }],\n h: [\"hour\", twoDigitsOptional, undefined, \"isPm\"],\n hh: [\"hour\", twoDigits, undefined, \"isPm\"],\n H: [\"hour\", twoDigitsOptional],\n HH: [\"hour\", twoDigits],\n m: [\"minute\", twoDigitsOptional],\n mm: [\"minute\", twoDigits],\n s: [\"second\", twoDigitsOptional],\n ss: [\"second\", twoDigits],\n YYYY: [\"year\", fourDigits],\n S: [\"millisecond\", \"\\\\d\", function (v) {\n return +v * 100;\n }],\n SS: [\"millisecond\", twoDigits, function (v) {\n return +v * 10;\n }],\n SSS: [\"millisecond\", threeDigits],\n d: emptyDigits,\n dd: emptyDigits,\n ddd: emptyWord,\n dddd: emptyWord,\n MMM: [\"month\", word, monthUpdate(\"monthNamesShort\")],\n MMMM: [\"month\", word, monthUpdate(\"monthNames\")],\n a: amPm,\n A: amPm,\n ZZ: timezoneOffset,\n Z: timezoneOffset\n};\n// Some common format strings\nvar globalMasks = {\n default: \"ddd MMM DD YYYY HH:mm:ss\",\n shortDate: \"M/D/YY\",\n mediumDate: \"MMM D, YYYY\",\n longDate: \"MMMM D, YYYY\",\n fullDate: \"dddd, MMMM D, YYYY\",\n isoDate: \"YYYY-MM-DD\",\n isoDateTime: \"YYYY-MM-DDTHH:mm:ssZ\",\n shortTime: \"HH:mm\",\n mediumTime: \"HH:mm:ss\",\n longTime: \"HH:mm:ss.SSS\"\n};\nvar setGlobalDateMasks = function setGlobalDateMasks(masks) {\n return assign(globalMasks, masks);\n};\n/***\n * Format a date\n * @method format\n * @param {Date|number} dateObj\n * @param {string} mask Format of the date, i.e. 'mm-dd-yy' or 'shortDate'\n * @returns {string} Formatted date string\n */\nvar format = function format(dateObj, mask, i18n) {\n if (mask === void 0) {\n mask = globalMasks[\"default\"];\n }\n if (i18n === void 0) {\n i18n = {};\n }\n if (typeof dateObj === \"number\") {\n dateObj = new Date(dateObj);\n }\n if (Object.prototype.toString.call(dateObj) !== \"[object Date]\" || isNaN(dateObj.getTime())) {\n throw new Error(\"Invalid Date pass to format\");\n }\n mask = globalMasks[mask] || mask;\n var literals = [];\n // Make literals inactive by replacing them with @@@\n mask = mask.replace(literal, function ($0, $1) {\n literals.push($1);\n return \"@@@\";\n });\n var combinedI18nSettings = assign(assign({}, globalI18n), i18n);\n // Apply formatting rules\n mask = mask.replace(token, function ($0) {\n return formatFlags[$0](dateObj, combinedI18nSettings);\n });\n // Inline literal values back into the formatted value\n return mask.replace(/@@@/g, function () {\n return literals.shift();\n });\n};\n/**\n * Parse a date string into a Javascript Date object /\n * @method parse\n * @param {string} dateStr Date string\n * @param {string} format Date parse format\n * @param {i18n} I18nSettingsOptional Full or subset of I18N settings\n * @returns {Date|null} Returns Date object. Returns null what date string is invalid or doesn't match format\n */\nfunction parse(dateStr, format, i18n) {\n if (i18n === void 0) {\n i18n = {};\n }\n if (typeof format !== \"string\") {\n throw new Error(\"Invalid format in fecha parse\");\n }\n // Check to see if the format is actually a mask\n format = globalMasks[format] || format;\n // Avoid regular expression denial of service, fail early for really long strings\n // https://www.owasp.org/index.php/Regular_expression_Denial_of_Service_-_ReDoS\n if (dateStr.length > 1000) {\n return null;\n }\n // Default to the beginning of the year.\n var today = new Date();\n var dateInfo = {\n year: today.getFullYear(),\n month: 0,\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n isPm: null,\n timezoneOffset: null\n };\n var parseInfo = [];\n var literals = [];\n // Replace all the literals with @@@. Hopefully a string that won't exist in the format\n var newFormat = format.replace(literal, function ($0, $1) {\n literals.push(regexEscape($1));\n return \"@@@\";\n });\n var specifiedFields = {};\n var requiredFields = {};\n // Change every token that we find into the correct regex\n newFormat = regexEscape(newFormat).replace(token, function ($0) {\n var info = parseFlags[$0];\n var field = info[0],\n regex = info[1],\n requiredField = info[3];\n // Check if the person has specified the same field twice. This will lead to confusing results.\n if (specifiedFields[field]) {\n throw new Error(\"Invalid format. \" + field + \" specified twice in format\");\n }\n specifiedFields[field] = true;\n // Check if there are any required fields. For instance, 12 hour time requires AM/PM specified\n if (requiredField) {\n requiredFields[requiredField] = true;\n }\n parseInfo.push(info);\n return \"(\" + regex + \")\";\n });\n // Check all the required fields are present\n Object.keys(requiredFields).forEach(function (field) {\n if (!specifiedFields[field]) {\n throw new Error(\"Invalid format. \" + field + \" is required in specified format\");\n }\n });\n // Add back all the literals after\n newFormat = newFormat.replace(/@@@/g, function () {\n return literals.shift();\n });\n // Check if the date string matches the format. If it doesn't return null\n var matches = dateStr.match(new RegExp(newFormat, \"i\"));\n if (!matches) {\n return null;\n }\n var combinedI18nSettings = assign(assign({}, globalI18n), i18n);\n // For each match, call the parser function for that date part\n for (var i = 1; i < matches.length; i++) {\n var _a = parseInfo[i - 1],\n field = _a[0],\n parser = _a[2];\n var value = parser ? parser(matches[i], combinedI18nSettings) : +matches[i];\n // If the parser can't make sense of the value, return null\n if (value == null) {\n return null;\n }\n dateInfo[field] = value;\n }\n if (dateInfo.isPm === 1 && dateInfo.hour != null && +dateInfo.hour !== 12) {\n dateInfo.hour = +dateInfo.hour + 12;\n } else if (dateInfo.isPm === 0 && +dateInfo.hour === 12) {\n dateInfo.hour = 0;\n }\n var dateTZ;\n if (dateInfo.timezoneOffset == null) {\n dateTZ = new Date(dateInfo.year, dateInfo.month, dateInfo.day, dateInfo.hour, dateInfo.minute, dateInfo.second, dateInfo.millisecond);\n var validateFields = [[\"month\", \"getMonth\"], [\"day\", \"getDate\"], [\"hour\", \"getHours\"], [\"minute\", \"getMinutes\"], [\"second\", \"getSeconds\"]];\n for (var i = 0, len = validateFields.length; i < len; i++) {\n // Check to make sure the date field is within the allowed range. Javascript dates allows values\n // outside the allowed range. If the values don't match the value was invalid\n if (specifiedFields[validateFields[i][0]] && dateInfo[validateFields[i][0]] !== dateTZ[validateFields[i][1]]()) {\n return null;\n }\n }\n } else {\n dateTZ = new Date(Date.UTC(dateInfo.year, dateInfo.month, dateInfo.day, dateInfo.hour, dateInfo.minute - dateInfo.timezoneOffset, dateInfo.second, dateInfo.millisecond));\n // We can't validate dates in another timezone unfortunately. Do a basic check instead\n if (dateInfo.month > 11 || dateInfo.month < 0 || dateInfo.day > 31 || dateInfo.day < 1 || dateInfo.hour > 23 || dateInfo.hour < 0 || dateInfo.minute > 59 || dateInfo.minute < 0 || dateInfo.second > 59 || dateInfo.second < 0) {\n return null;\n }\n }\n // Don't allow invalid dates\n return dateTZ;\n}\nvar fecha = {\n format: format,\n parse: parse,\n defaultI18n: defaultI18n,\n setGlobalDateI18n: setGlobalDateI18n,\n setGlobalDateMasks: setGlobalDateMasks\n};\nexport default fecha;\nexport { assign, format, parse, defaultI18n, setGlobalDateI18n, setGlobalDateMasks };","import { isDate, isString, last } from '@antv/util';\nimport fecha from 'fecha';\nimport * as fecha1 from 'fecha';\nimport bisector from './bisector';\nvar FORMAT_METHOD = 'format';\nexport function timeFormat(time, mask) {\n var method = fecha1[FORMAT_METHOD] || fecha[FORMAT_METHOD];\n return method(time, mask);\n}\n/**\n * 转换成时间戳\n * @param value 时间值\n */\nexport function toTimeStamp(value) {\n if (isString(value)) {\n if (value.indexOf('T') > 0) {\n value = new Date(value).getTime();\n } else {\n // new Date('2010/01/10') 和 new Date('2010-01-10') 的差别在于:\n // 如果仅有年月日时,前者是带有时区的: Fri Jan 10 2020 02:40:13 GMT+0800 (中国标准时间)\n // 后者会格式化成 Sun Jan 10 2010 08:00:00 GMT+0800 (中国标准时间)\n value = new Date(value.replace(/-/gi, '/')).getTime();\n }\n }\n if (isDate(value)) {\n value = value.getTime();\n }\n return value;\n}\nvar SECOND = 1000;\nvar MINUTE = 60 * SECOND;\nvar HOUR = 60 * MINUTE;\nvar DAY = 24 * HOUR;\nvar MONTH = DAY * 31;\nvar YEAR = DAY * 365;\nexport { SECOND, MINUTE, HOUR, DAY, MONTH, YEAR };\nvar intervals = [['HH:mm:ss', SECOND], ['HH:mm:ss', SECOND * 10], ['HH:mm:ss', SECOND * 30], ['HH:mm', MINUTE], ['HH:mm', MINUTE * 10], ['HH:mm', MINUTE * 30], ['HH', HOUR], ['HH', HOUR * 6], ['HH', HOUR * 12], ['YYYY-MM-DD', DAY], ['YYYY-MM-DD', DAY * 4], ['YYYY-WW', DAY * 7], ['YYYY-MM', MONTH], ['YYYY-MM', MONTH * 4], ['YYYY-MM', MONTH * 6], ['YYYY', DAY * 380]];\nexport function getTickInterval(min, max, tickCount) {\n var target = (max - min) / tickCount;\n var idx = bisector(function (o) {\n return o[1];\n })(intervals, target) - 1;\n var interval = intervals[idx];\n if (idx < 0) {\n interval = intervals[0];\n } else if (idx >= intervals.length) {\n interval = last(intervals);\n }\n return interval;\n}","import { isNil } from '@antv/util';\n/**\n * 二分右侧查找\n * https://github.com/d3/d3-array/blob/master/src/bisector.js\n */\nexport default function (getter) {\n /**\n * x: 目标值\n * lo: 起始位置\n * hi: 结束位置\n */\n return function (a, x, _lo, _hi) {\n var lo = isNil(_lo) ? 0 : _lo;\n var hi = isNil(_hi) ? a.length : _hi;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (getter(a[mid]) > x) {\n hi = mid;\n } else {\n lo = mid + 1;\n }\n }\n return lo;\n };\n}","import { __extends } from \"tslib\";\nimport { each, isNumber } from '@antv/util';\nimport { timeFormat, toTimeStamp } from '../util/time';\nimport Category from './base';\n/**\n * 时间分类度量\n * @class\n */\nvar TimeCat = /** @class */function (_super) {\n __extends(TimeCat, _super);\n function TimeCat() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'timeCat';\n return _this;\n }\n /**\n * @override\n */\n TimeCat.prototype.translate = function (value) {\n value = toTimeStamp(value);\n var index = this.values.indexOf(value);\n if (index === -1) {\n if (isNumber(value) && value < this.values.length) {\n index = value;\n } else {\n index = NaN;\n }\n }\n return index;\n };\n /**\n * 由于时间类型数据需要转换一下,所以复写 getText\n * @override\n */\n TimeCat.prototype.getText = function (value, tickIndex) {\n var index = this.translate(value);\n if (index > -1) {\n var result = this.values[index];\n var formatter = this.formatter;\n result = formatter ? formatter(result, tickIndex) : timeFormat(result, this.mask);\n return result;\n }\n return value;\n };\n TimeCat.prototype.initCfg = function () {\n this.tickMethod = 'time-cat';\n this.mask = 'YYYY-MM-DD';\n this.tickCount = 7; // 一般时间数据会显示 7, 14, 30 天的数字\n };\n\n TimeCat.prototype.setDomain = function () {\n var values = this.values;\n // 针对时间分类类型,会将时间统一转换为时间戳\n each(values, function (v, i) {\n values[i] = toTimeStamp(v);\n });\n values.sort(function (v1, v2) {\n return v1 - v2;\n });\n _super.prototype.setDomain.call(this);\n };\n return TimeCat;\n}(Category);\nexport default TimeCat;","import { __extends } from \"tslib\";\nimport { filter, getRange, head, isNil, last } from '@antv/util';\nimport Base from '../base';\n/**\n * 连续度量的基类\n * @class\n */\nvar Continuous = /** @class */function (_super) {\n __extends(Continuous, _super);\n function Continuous() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.isContinuous = true;\n return _this;\n }\n Continuous.prototype.scale = function (value) {\n if (isNil(value)) {\n return NaN;\n }\n var rangeMin = this.rangeMin();\n var rangeMax = this.rangeMax();\n var max = this.max;\n var min = this.min;\n if (max === min) {\n return rangeMin;\n }\n var percent = this.getScalePercent(value);\n return rangeMin + percent * (rangeMax - rangeMin);\n };\n Continuous.prototype.init = function () {\n _super.prototype.init.call(this);\n // init 完成后保证 min, max 包含 ticks 的范围\n var ticks = this.ticks;\n var firstTick = head(ticks);\n var lastTick = last(ticks);\n if (firstTick < this.min) {\n this.min = firstTick;\n }\n if (lastTick > this.max) {\n this.max = lastTick;\n }\n // strict-limit 方式\n if (!isNil(this.minLimit)) {\n this.min = firstTick;\n }\n if (!isNil(this.maxLimit)) {\n this.max = lastTick;\n }\n };\n Continuous.prototype.setDomain = function () {\n var _a = getRange(this.values),\n min = _a.min,\n max = _a.max;\n if (isNil(this.min)) {\n this.min = min;\n }\n if (isNil(this.max)) {\n this.max = max;\n }\n if (this.min > this.max) {\n this.min = min;\n this.max = max;\n }\n };\n Continuous.prototype.calculateTicks = function () {\n var _this = this;\n var ticks = _super.prototype.calculateTicks.call(this);\n if (!this.nice) {\n ticks = filter(ticks, function (tick) {\n return tick >= _this.min && tick <= _this.max;\n });\n }\n return ticks;\n };\n // 计算原始值值占的百分比\n Continuous.prototype.getScalePercent = function (value) {\n var max = this.max;\n var min = this.min;\n return (value - min) / (max - min);\n };\n Continuous.prototype.getInvertPercent = function (value) {\n return (value - this.rangeMin()) / (this.rangeMax() - this.rangeMin());\n };\n return Continuous;\n}(Base);\nexport default Continuous;","import { __extends } from \"tslib\";\nimport Continuous from './base';\n/**\n * 线性度量\n * @class\n */\nvar Linear = /** @class */function (_super) {\n __extends(Linear, _super);\n function Linear() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'linear';\n _this.isLinear = true;\n return _this;\n }\n Linear.prototype.invert = function (value) {\n var percent = this.getInvertPercent(value);\n return this.min + percent * (this.max - this.min);\n };\n Linear.prototype.initCfg = function () {\n this.tickMethod = 'wilkinson-extended';\n this.nice = false;\n };\n return Linear;\n}(Continuous);\nexport default Linear;","import { each, isNil } from '@antv/util';\n// 求以a为次幂,结果为b的基数,如 x^^a = b;求x\n// 虽然数学上 b 不支持负数,但是这里需要支持 负数\nexport function calBase(a, b) {\n var e = Math.E;\n var value;\n if (b >= 0) {\n value = Math.pow(e, Math.log(b) / a); // 使用换底公式求底\n } else {\n value = Math.pow(e, Math.log(-b) / a) * -1; // 使用换底公式求底\n }\n\n return value;\n}\nexport function log(a, b) {\n if (a === 1) {\n return 1;\n }\n return Math.log(b) / Math.log(a);\n}\nexport function getLogPositiveMin(values, base, max) {\n if (isNil(max)) {\n max = Math.max.apply(null, values);\n }\n var positiveMin = max;\n each(values, function (value) {\n if (value > 0 && value < positiveMin) {\n positiveMin = value;\n }\n });\n if (positiveMin === max) {\n positiveMin = max / base;\n }\n if (positiveMin > 1) {\n positiveMin = 1;\n }\n return positiveMin;\n}\nfunction digitLength(num) {\n // Get digit length of e\n var eSplit = num.toString().split(/[eE]/);\n var len = (eSplit[0].split('.')[1] || '').length - +(eSplit[1] || 0);\n return len > 0 ? len : 0;\n}\n/**\n * 高精度加法,解决 0.1 + 0.2 !== 0.3 的经典问题\n *\n * @param num1 加数\n * @param num2 被加数\n * @return {number} 返回值\n */\nexport function precisionAdd(num1, num2) {\n var num1Digits = digitLength(num1);\n var num2Digits = digitLength(num2);\n var baseNum = Math.pow(10, Math.max(num1Digits, num2Digits));\n return (num1 * baseNum + num2 * baseNum) / baseNum;\n}","import { __extends } from \"tslib\";\nimport { getLogPositiveMin, log } from '../util/math';\nimport Continuous from './base';\n/**\n * Log 度量,处理非均匀分布\n */\nvar Log = /** @class */function (_super) {\n __extends(Log, _super);\n function Log() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'log';\n return _this;\n }\n /**\n * @override\n */\n Log.prototype.invert = function (value) {\n var base = this.base;\n var max = log(base, this.max);\n var rangeMin = this.rangeMin();\n var range = this.rangeMax() - rangeMin;\n var min;\n var positiveMin = this.positiveMin;\n if (positiveMin) {\n if (value === 0) {\n return 0;\n }\n min = log(base, positiveMin / base);\n var appendPercent = 1 / (max - min) * range; // 0 到 positiveMin的占比\n if (value < appendPercent) {\n // 落到 0 - positiveMin 之间\n return value / appendPercent * positiveMin;\n }\n } else {\n min = log(base, this.min);\n }\n var percent = (value - rangeMin) / range;\n var tmp = percent * (max - min) + min;\n return Math.pow(base, tmp);\n };\n Log.prototype.initCfg = function () {\n this.tickMethod = 'log';\n this.base = 10;\n this.tickCount = 6;\n this.nice = true;\n };\n // 设置\n Log.prototype.setDomain = function () {\n _super.prototype.setDomain.call(this);\n var min = this.min;\n if (min < 0) {\n throw new Error('When you use log scale, the minimum value must be greater than zero!');\n }\n if (min === 0) {\n this.positiveMin = getLogPositiveMin(this.values, this.base, this.max);\n }\n };\n // 根据当前值获取占比\n Log.prototype.getScalePercent = function (value) {\n var max = this.max;\n var min = this.min;\n if (max === min) {\n return 0;\n }\n // 如果值小于等于0,则按照0处理\n if (value <= 0) {\n return 0;\n }\n var base = this.base;\n var positiveMin = this.positiveMin;\n // 如果min == 0, 则根据比0大的最小值,计算比例关系。这个最小值作为坐标轴上的第二个tick,第一个是0但是不显示\n if (positiveMin) {\n min = positiveMin * 1 / base;\n }\n var percent;\n // 如果数值小于次小值,那么就计算 value / 次小值 占整体的比例\n if (value < positiveMin) {\n percent = value / positiveMin / (log(base, max) - log(base, min));\n } else {\n percent = (log(base, value) - log(base, min)) / (log(base, max) - log(base, min));\n }\n return percent;\n };\n return Log;\n}(Continuous);\nexport default Log;","import { __extends } from \"tslib\";\nimport { calBase } from '../util/math';\nimport Continuous from './base';\n/**\n * Pow 度量,处理非均匀分布\n */\nvar Pow = /** @class */function (_super) {\n __extends(Pow, _super);\n function Pow() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'pow';\n return _this;\n }\n /**\n * @override\n */\n Pow.prototype.invert = function (value) {\n var percent = this.getInvertPercent(value);\n var exponent = this.exponent;\n var max = calBase(exponent, this.max);\n var min = calBase(exponent, this.min);\n var tmp = percent * (max - min) + min;\n var factor = tmp >= 0 ? 1 : -1;\n return Math.pow(tmp, exponent) * factor;\n };\n Pow.prototype.initCfg = function () {\n this.tickMethod = 'pow';\n this.exponent = 2;\n this.tickCount = 5;\n this.nice = true;\n };\n // 获取度量计算时,value占的定义域百分比\n Pow.prototype.getScalePercent = function (value) {\n var max = this.max;\n var min = this.min;\n if (max === min) {\n return 0;\n }\n var exponent = this.exponent;\n var percent = (calBase(exponent, value) - calBase(exponent, min)) / (calBase(exponent, max) - calBase(exponent, min));\n return percent;\n };\n return Pow;\n}(Continuous);\nexport default Pow;","import { __extends } from \"tslib\";\nimport { each, isDate, isNil, isNumber, isString } from '@antv/util';\nimport { timeFormat, toTimeStamp } from '../util/time';\nimport Linear from './linear';\n/**\n * 时间度量\n * @class\n */\nvar Time = /** @class */function (_super) {\n __extends(Time, _super);\n function Time() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'time';\n return _this;\n }\n /**\n * @override\n */\n Time.prototype.getText = function (value, index) {\n var numberValue = this.translate(value);\n var formatter = this.formatter;\n return formatter ? formatter(numberValue, index) : timeFormat(numberValue, this.mask);\n };\n /**\n * @override\n */\n Time.prototype.scale = function (value) {\n var v = value;\n if (isString(v) || isDate(v)) {\n v = this.translate(v);\n }\n return _super.prototype.scale.call(this, v);\n };\n /**\n * 将时间转换成数字\n * @override\n */\n Time.prototype.translate = function (v) {\n return toTimeStamp(v);\n };\n Time.prototype.initCfg = function () {\n this.tickMethod = 'time-pretty';\n this.mask = 'YYYY-MM-DD';\n this.tickCount = 7;\n this.nice = false;\n };\n Time.prototype.setDomain = function () {\n var values = this.values;\n // 是否设置了 min, max,而不是直接取 this.min, this.max\n var minConfig = this.getConfig('min');\n var maxConfig = this.getConfig('max');\n // 如果设置了 min,max 则转换成时间戳\n if (!isNil(minConfig) || !isNumber(minConfig)) {\n this.min = this.translate(this.min);\n }\n if (!isNil(maxConfig) || !isNumber(maxConfig)) {\n this.max = this.translate(this.max);\n }\n // 没有设置 min, max 时\n if (values && values.length) {\n // 重新计算最大最小值\n var timeStamps_1 = [];\n var min_1 = Infinity; // 最小值\n var secondMin_1 = min_1; // 次小值\n var max_1 = 0;\n // 使用一个循环,计算min,max,secondMin\n each(values, function (v) {\n var timeStamp = toTimeStamp(v);\n if (isNaN(timeStamp)) {\n throw new TypeError(\"Invalid Time: \" + v + \" in time scale!\");\n }\n if (min_1 > timeStamp) {\n secondMin_1 = min_1;\n min_1 = timeStamp;\n } else if (secondMin_1 > timeStamp) {\n secondMin_1 = timeStamp;\n }\n if (max_1 < timeStamp) {\n max_1 = timeStamp;\n }\n timeStamps_1.push(timeStamp);\n });\n // 存在多个值时,设置最小间距\n if (values.length > 1) {\n this.minTickInterval = secondMin_1 - min_1;\n }\n if (isNil(minConfig)) {\n this.min = min_1;\n }\n if (isNil(maxConfig)) {\n this.max = max_1;\n }\n }\n };\n return Time;\n}(Linear);\nexport default Time;","import { __extends } from \"tslib\";\nimport { each, head, last } from '@antv/util';\nimport Continuous from './base';\n/**\n * 分段度量\n */\nvar Quantize = /** @class */function (_super) {\n __extends(Quantize, _super);\n function Quantize() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'quantize';\n return _this;\n }\n Quantize.prototype.invert = function (value) {\n var ticks = this.ticks;\n var length = ticks.length;\n var percent = this.getInvertPercent(value);\n var minIndex = Math.floor(percent * (length - 1));\n // 最后一个\n if (minIndex >= length - 1) {\n return last(ticks);\n }\n // 超出左边界, 则取第一个\n if (minIndex < 0) {\n return head(ticks);\n }\n var minTick = ticks[minIndex];\n var nextTick = ticks[minIndex + 1];\n // 比当前值小的 tick 在度量上的占比\n var minIndexPercent = minIndex / (length - 1);\n var maxIndexPercent = (minIndex + 1) / (length - 1);\n return minTick + (percent - minIndexPercent) / (maxIndexPercent - minIndexPercent) * (nextTick - minTick);\n };\n Quantize.prototype.initCfg = function () {\n this.tickMethod = 'r-pretty';\n this.tickCount = 5;\n this.nice = true;\n };\n Quantize.prototype.calculateTicks = function () {\n var ticks = _super.prototype.calculateTicks.call(this);\n if (!this.nice) {\n // 如果 nice = false ,补充 min, max\n if (last(ticks) !== this.max) {\n ticks.push(this.max);\n }\n if (head(ticks) !== this.min) {\n ticks.unshift(this.min);\n }\n }\n return ticks;\n };\n // 计算当前值在刻度中的占比\n Quantize.prototype.getScalePercent = function (value) {\n var ticks = this.ticks;\n // 超出左边界\n if (value < head(ticks)) {\n return 0;\n }\n // 超出右边界\n if (value > last(ticks)) {\n return 1;\n }\n var minIndex = 0;\n each(ticks, function (tick, index) {\n if (value >= tick) {\n minIndex = index;\n } else {\n return false;\n }\n });\n return minIndex / (ticks.length - 1);\n };\n return Quantize;\n}(Continuous);\nexport default Quantize;","import { __extends } from \"tslib\";\nimport Quantize from './quantize';\nvar Quantile = /** @class */function (_super) {\n __extends(Quantile, _super);\n function Quantile() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'quantile';\n return _this;\n }\n Quantile.prototype.initCfg = function () {\n this.tickMethod = 'quantile';\n this.tickCount = 5;\n this.nice = true;\n };\n return Quantile;\n}(Quantize);\nexport default Quantile;","import Scale from './base';\nvar map = {};\nfunction getClass(key) {\n return map[key];\n}\nfunction registerClass(key, cls) {\n if (getClass(key)) {\n throw new Error(\"type '\" + key + \"' existed.\");\n }\n map[key] = cls;\n}\nexport { Scale, getClass as getScale, registerClass as registerScale };","import { __extends } from \"tslib\";\nimport { isNumber } from '@antv/util';\nimport Base from '../base';\n/**\n * identity scale原则上是定义域和值域一致,scale/invert方法也是一致的\n * 参考R的实现:https://github.com/r-lib/scales/blob/master/R/pal-identity.r\n * 参考d3的实现(做了下转型):https://github.com/d3/d3-scale/blob/master/src/identity.js\n */\nvar Identity = /** @class */function (_super) {\n __extends(Identity, _super);\n function Identity() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'identity';\n _this.isIdentity = true;\n return _this;\n }\n Identity.prototype.calculateTicks = function () {\n return this.values;\n };\n Identity.prototype.scale = function (value) {\n // 如果传入的值不等于 identity 的值,则直接返回,用于一维图时的 dodge\n if (this.values[0] !== value && isNumber(value)) {\n return value;\n }\n return this.range[0];\n };\n Identity.prototype.invert = function (value) {\n var range = this.range;\n if (value < range[0] || value > range[1]) {\n return NaN;\n }\n return this.values[0];\n };\n return Identity;\n}(Base);\nexport default Identity;","import { filter, isNil, isNumber, last } from '@antv/util';\n/**\n * 计算分类 ticks\n * @param cfg 度量的配置项\n * @returns 计算后的 ticks\n */\nexport default function calculateCatTicks(cfg) {\n var values = cfg.values,\n tickInterval = cfg.tickInterval,\n tickCount = cfg.tickCount,\n showLast = cfg.showLast;\n if (isNumber(tickInterval)) {\n var ticks_1 = filter(values, function (__, i) {\n return i % tickInterval === 0;\n });\n var lastValue = last(values);\n if (showLast && last(ticks_1) !== lastValue) {\n ticks_1.push(lastValue);\n }\n return ticks_1;\n }\n var len = values.length;\n var min = cfg.min,\n max = cfg.max;\n if (isNil(min)) {\n min = 0;\n }\n if (isNil(max)) {\n max = values.length - 1;\n }\n if (!isNumber(tickCount) || tickCount >= len) return values.slice(min, max + 1);\n if (tickCount <= 0 || max <= 0) return [];\n var interval = tickCount === 1 ? len : Math.floor(len / (tickCount - 1));\n var ticks = [];\n var idx = min;\n for (var i = 0; i < tickCount; i++) {\n if (idx >= max) break;\n idx = Math.min(min + i * interval, max);\n if (i === tickCount - 1 && showLast) ticks.push(values[max]);else ticks.push(values[idx]);\n }\n return ticks;\n}","export default function d3Linear(cfg) {\n var min = cfg.min,\n max = cfg.max,\n nice = cfg.nice,\n tickCount = cfg.tickCount;\n var linear = new D3Linear();\n linear.domain([min, max]);\n if (nice) {\n linear.nice(tickCount);\n }\n return linear.ticks(tickCount);\n}\nvar DEFAULT_COUNT = 5;\nvar e10 = Math.sqrt(50);\nvar e5 = Math.sqrt(10);\nvar e2 = Math.sqrt(2);\n// https://github.com/d3/d3-scale\nvar D3Linear = /** @class */function () {\n function D3Linear() {\n this._domain = [0, 1];\n }\n D3Linear.prototype.domain = function (domain) {\n if (domain) {\n this._domain = Array.from(domain, Number);\n return this;\n }\n return this._domain.slice();\n };\n D3Linear.prototype.nice = function (count) {\n var _a, _b;\n if (count === void 0) {\n count = DEFAULT_COUNT;\n }\n var d = this._domain.slice();\n var i0 = 0;\n var i1 = this._domain.length - 1;\n var start = this._domain[i0];\n var stop = this._domain[i1];\n var step;\n if (stop < start) {\n _a = [stop, start], start = _a[0], stop = _a[1];\n _b = [i1, i0], i0 = _b[0], i1 = _b[1];\n }\n step = tickIncrement(start, stop, count);\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n this.domain(d);\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n this.domain(d);\n }\n return this;\n };\n D3Linear.prototype.ticks = function (count) {\n if (count === void 0) {\n count = DEFAULT_COUNT;\n }\n return d3ArrayTicks(this._domain[0], this._domain[this._domain.length - 1], count || DEFAULT_COUNT);\n };\n return D3Linear;\n}();\nexport { D3Linear };\nfunction d3ArrayTicks(start, stop, count) {\n var reverse;\n var i = -1;\n var n;\n var ticks;\n var step;\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) {\n return [start];\n }\n // tslint:disable-next-line\n if (reverse = stop < start) {\n n = start, start = stop, stop = n;\n }\n // tslint:disable-next-line\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) {\n return [];\n }\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) {\n ticks[i] = (start + i) * step;\n }\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) {\n ticks[i] = (start - i) / step;\n }\n }\n if (reverse) {\n ticks.reverse();\n }\n return ticks;\n}\nfunction tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count);\n var power = Math.floor(Math.log(step) / Math.LN10);\n var error = step / Math.pow(10, power);\n return power >= 0 ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power) : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}","import { fixedBase } from '@antv/util';\nfunction snapMultiple(v, base, snapType) {\n var div;\n if (snapType === 'ceil') {\n div = Math.ceil(v / base);\n } else if (snapType === 'floor') {\n div = Math.floor(v / base);\n } else {\n div = Math.round(v / base);\n }\n return div * base;\n}\nexport default function intervalTicks(min, max, interval) {\n // 变成 interval 的倍数\n var minTick = snapMultiple(min, interval, 'floor');\n var maxTick = snapMultiple(max, interval, 'ceil');\n // 统一小数位数\n minTick = fixedBase(minTick, interval);\n maxTick = fixedBase(maxTick, interval);\n var ticks = [];\n // https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Errors/Invalid_array_length\n var availableInterval = Math.max((maxTick - minTick) / (Math.pow(2, 12) - 1), interval);\n for (var i = minTick; i <= maxTick; i = i + availableInterval) {\n var tickValue = fixedBase(i, availableInterval); // 防止浮点数加法出现问题\n ticks.push(tickValue);\n }\n return {\n min: minTick,\n max: maxTick,\n ticks: ticks\n };\n}","import { isNil } from '@antv/util';\n/**\n * 按照给定的 minLimit/maxLimit/tickCount 均匀计算出刻度 ticks\n *\n * @param cfg Scale 配置项\n * @return ticks\n */\nexport default function strictLimit(cfg, defaultMin, defaultMax) {\n var _a;\n var minLimit = cfg.minLimit,\n maxLimit = cfg.maxLimit,\n min = cfg.min,\n max = cfg.max,\n _b = cfg.tickCount,\n tickCount = _b === void 0 ? 5 : _b;\n var tickMin = isNil(minLimit) ? isNil(defaultMin) ? min : defaultMin : minLimit;\n var tickMax = isNil(maxLimit) ? isNil(defaultMax) ? max : defaultMax : maxLimit;\n if (tickMin > tickMax) {\n _a = [tickMin, tickMax], tickMax = _a[0], tickMin = _a[1];\n }\n if (tickCount <= 2) {\n return [tickMin, tickMax];\n }\n var step = (tickMax - tickMin) / (tickCount - 1);\n var ticks = [];\n for (var i = 0; i < tickCount; i++) {\n ticks.push(tickMin + step * i);\n }\n return ticks;\n}","// 为了解决 js 运算的精度问题\nexport function prettyNumber(n) {\n return Math.abs(n) < 1e-15 ? n : parseFloat(n.toFixed(15));\n}","import { head, indexOf, size, last } from '@antv/util';\nimport { prettyNumber } from './pretty-number';\nexport var DEFAULT_Q = [1, 5, 2, 2.5, 4, 3];\nexport var ALL_Q = [1, 5, 2, 2.5, 4, 3, 1.5, 7, 6, 8, 9];\nvar eps = Number.EPSILON * 100;\nfunction mod(n, m) {\n return (n % m + m) % m;\n}\nfunction round(n) {\n return Math.round(n * 1e12) / 1e12;\n}\nfunction simplicity(q, Q, j, lmin, lmax, lstep) {\n var n = size(Q);\n var i = indexOf(Q, q);\n var v = 0;\n var m = mod(lmin, lstep);\n if ((m < eps || lstep - m < eps) && lmin <= 0 && lmax >= 0) {\n v = 1;\n }\n return 1 - i / (n - 1) - j + v;\n}\nfunction simplicityMax(q, Q, j) {\n var n = size(Q);\n var i = indexOf(Q, q);\n var v = 1;\n return 1 - i / (n - 1) - j + v;\n}\nfunction density(k, m, dMin, dMax, lMin, lMax) {\n var r = (k - 1) / (lMax - lMin);\n var rt = (m - 1) / (Math.max(lMax, dMax) - Math.min(dMin, lMin));\n return 2 - Math.max(r / rt, rt / r);\n}\nfunction densityMax(k, m) {\n if (k >= m) {\n return 2 - (k - 1) / (m - 1);\n }\n return 1;\n}\nfunction coverage(dMin, dMax, lMin, lMax) {\n var range = dMax - dMin;\n return 1 - 0.5 * (Math.pow(dMax - lMax, 2) + Math.pow(dMin - lMin, 2)) / Math.pow(0.1 * range, 2);\n}\nfunction coverageMax(dMin, dMax, span) {\n var range = dMax - dMin;\n if (span > range) {\n var half = (span - range) / 2;\n return 1 - Math.pow(half, 2) / Math.pow(0.1 * range, 2);\n }\n return 1;\n}\nfunction legibility() {\n return 1;\n}\n/**\n * An Extension of Wilkinson's Algorithm for Position Tick Labels on Axes\n * https://www.yuque.com/preview/yuque/0/2019/pdf/185317/1546999150858-45c3b9c2-4e86-4223-bf1a-8a732e8195ed.pdf\n * @param dMin 最小值\n * @param dMax 最大值\n * @param m tick个数\n * @param onlyLoose 是否允许扩展min、max,不绝对强制,例如[3, 97]\n * @param Q nice numbers集合\n * @param w 四个优化组件的权重\n */\nexport default function extended(dMin, dMax, n, onlyLoose, Q, w) {\n if (n === void 0) {\n n = 5;\n }\n if (onlyLoose === void 0) {\n onlyLoose = true;\n }\n if (Q === void 0) {\n Q = DEFAULT_Q;\n }\n if (w === void 0) {\n w = [0.25, 0.2, 0.5, 0.05];\n }\n // 处理小于 0 和小数的 tickCount\n var m = n < 0 ? 0 : Math.round(n);\n // nan 也会导致异常\n if (Number.isNaN(dMin) || Number.isNaN(dMax) || typeof dMin !== 'number' || typeof dMax !== 'number' || !m) {\n return {\n min: 0,\n max: 0,\n ticks: []\n };\n }\n // js 极大值极小值问题,差值小于 1e-15 会导致计算出错\n if (dMax - dMin < 1e-15 || m === 1) {\n return {\n min: dMin,\n max: dMax,\n ticks: [dMin]\n };\n }\n // js 超大值问题\n if (dMax - dMin > 1e148) {\n var count = n || 5;\n var step_1 = (dMax - dMin) / count;\n return {\n min: dMin,\n max: dMax,\n ticks: Array(count).fill(null).map(function (_, idx) {\n return prettyNumber(dMin + step_1 * idx);\n })\n };\n }\n var best = {\n score: -2,\n lmin: 0,\n lmax: 0,\n lstep: 0\n };\n var j = 1;\n while (j < Infinity) {\n for (var i = 0; i < Q.length; i += 1) {\n var q = Q[i];\n var sm = simplicityMax(q, Q, j);\n if (w[0] * sm + w[1] + w[2] + w[3] < best.score) {\n j = Infinity;\n break;\n }\n var k = 2;\n while (k < Infinity) {\n var dm = densityMax(k, m);\n if (w[0] * sm + w[1] + w[2] * dm + w[3] < best.score) {\n break;\n }\n var delta = (dMax - dMin) / (k + 1) / j / q;\n var z = Math.ceil(Math.log10(delta));\n while (z < Infinity) {\n var step = j * q * Math.pow(10, z);\n var cm = coverageMax(dMin, dMax, step * (k - 1));\n if (w[0] * sm + w[1] * cm + w[2] * dm + w[3] < best.score) {\n break;\n }\n var minStart = Math.floor(dMax / step) * j - (k - 1) * j;\n var maxStart = Math.ceil(dMin / step) * j;\n if (minStart <= maxStart) {\n var count = maxStart - minStart;\n for (var i_1 = 0; i_1 <= count; i_1 += 1) {\n var start = minStart + i_1;\n var lMin = start * (step / j);\n var lMax = lMin + step * (k - 1);\n var lStep = step;\n var s = simplicity(q, Q, j, lMin, lMax, lStep);\n var c = coverage(dMin, dMax, lMin, lMax);\n var g = density(k, m, dMin, dMax, lMin, lMax);\n var l = legibility();\n var score = w[0] * s + w[1] * c + w[2] * g + w[3] * l;\n if (score > best.score && (!onlyLoose || lMin <= dMin && lMax >= dMax)) {\n best.lmin = lMin;\n best.lmax = lMax;\n best.lstep = lStep;\n best.score = score;\n }\n }\n }\n z += 1;\n }\n k += 1;\n }\n }\n j += 1;\n }\n // 处理精度问题,保证这三个数没有精度问题\n var lmax = prettyNumber(best.lmax);\n var lmin = prettyNumber(best.lmin);\n var lstep = prettyNumber(best.lstep);\n // 加 round 是为处理 extended(0.94, 1, 5)\n // 保证生成的 tickCount 没有精度问题\n var tickCount = Math.floor(round((lmax - lmin) / lstep)) + 1;\n var ticks = new Array(tickCount);\n // 少用乘法:防止出现 -1.2 + 1.2 * 3 = 2.3999999999999995 的情况\n ticks[0] = prettyNumber(lmin);\n for (var i = 1; i < tickCount; i++) {\n ticks[i] = prettyNumber(ticks[i - 1] + lstep);\n }\n return {\n min: Math.min(dMin, head(ticks)),\n max: Math.max(dMax, last(ticks)),\n ticks: ticks\n };\n}","import { prettyNumber } from './pretty-number';\nexport default function pretty(min, max, m) {\n if (m === void 0) {\n m = 5;\n }\n if (min === max) {\n return {\n max: max,\n min: min,\n ticks: [min]\n };\n }\n var n = m < 0 ? 0 : Math.round(m);\n if (n === 0) return {\n max: max,\n min: min,\n ticks: []\n };\n /*\n R pretty:\n https://svn.r-project.org/R/trunk/src/appl/pretty.c\n https://www.rdocumentation.org/packages/base/versions/3.5.2/topics/pretty\n */\n var h = 1.5; // high.u.bias\n var h5 = 0.5 + 1.5 * h; // u5.bias\n // 反正我也不会调参,跳过所有判断步骤\n var d = max - min;\n var c = d / n;\n // 当d非常小的时候触发,但似乎没什么用\n // const min_n = Math.floor(n / 3);\n // const shrink_sml = Math.pow(2, 5);\n // if (Math.log10(d) < -2) {\n // c = (_.max([ Math.abs(max), Math.abs(min) ]) * shrink_sml) / min_n;\n // }\n var base = Math.pow(10, Math.floor(Math.log10(c)));\n var unit = base;\n if (2 * base - c < h * (c - unit)) {\n unit = 2 * base;\n if (5 * base - c < h5 * (c - unit)) {\n unit = 5 * base;\n if (10 * base - c < h * (c - unit)) {\n unit = 10 * base;\n }\n }\n }\n var nu = Math.ceil(max / unit);\n var ns = Math.floor(min / unit);\n var hi = Math.max(nu * unit, max);\n var lo = Math.min(ns * unit, min);\n var size = Math.floor((hi - lo) / unit) + 1;\n var ticks = new Array(size);\n for (var i = 0; i < size; i++) {\n ticks[i] = prettyNumber(lo + i * unit);\n }\n return {\n min: lo,\n max: hi,\n ticks: ticks\n };\n}","/**\n * 计算几分位 https://github.com/simple-statistics/simple-statistics/blob/master/src/quantile_sorted.js\n * @param x 数组\n * @param p 百分比\n */\nfunction quantileSorted(x, p) {\n var idx = x.length * p;\n /*if (x.length === 0) { // 当前场景这些条件不可能命中\n throw new Error('quantile requires at least one value.');\n } else if (p < 0 || p > 1) {\n throw new Error('quantiles must be between 0 and 1');\n } else */\n if (p === 1) {\n // If p is 1, directly return the last element\n return x[x.length - 1];\n } else if (p === 0) {\n // If p is 0, directly return the first element\n return x[0];\n } else if (idx % 1 !== 0) {\n // If p is not integer, return the next element in array\n return x[Math.ceil(idx) - 1];\n } else if (x.length % 2 === 0) {\n // If the list has even-length, we'll take the average of this number\n // and the next value, if there is one\n return (x[idx - 1] + x[idx]) / 2;\n } else {\n // Finally, in the simple case of an integer value\n // with an odd-length list, return the x value at the index.\n return x[idx];\n }\n}\nexport default function calculateTicks(cfg) {\n var tickCount = cfg.tickCount,\n values = cfg.values;\n if (!values || !values.length) {\n return [];\n }\n var sorted = values.slice().sort(function (a, b) {\n return a - b;\n });\n var ticks = [];\n for (var i = 0; i < tickCount; i++) {\n var p = i / (tickCount - 1);\n ticks.push(quantileSorted(sorted, p));\n }\n return ticks;\n}","import { DAY, HOUR, MINUTE, MONTH, SECOND, YEAR } from '../util/time';\nfunction getYear(date) {\n return new Date(date).getFullYear();\n}\nfunction createYear(year) {\n return new Date(year, 0, 1).getTime();\n}\nfunction getMonth(date) {\n return new Date(date).getMonth();\n}\nfunction diffMonth(min, max) {\n var minYear = getYear(min);\n var maxYear = getYear(max);\n var minMonth = getMonth(min);\n var maxMonth = getMonth(max);\n return (maxYear - minYear) * 12 + (maxMonth - minMonth) % 12;\n}\nfunction creatMonth(year, month) {\n return new Date(year, month, 1).getTime();\n}\nfunction diffDay(min, max) {\n return Math.ceil((max - min) / DAY);\n}\nfunction diffHour(min, max) {\n return Math.ceil((max - min) / HOUR);\n}\nfunction diffMinus(min, max) {\n return Math.ceil((max - min) / (60 * 1000));\n}\n/**\n * 计算 time 的 ticks,对 month, year 进行 pretty 处理\n * @param cfg 度量的配置项\n * @returns 计算后的 ticks\n */\nexport default function timePretty(cfg) {\n var min = cfg.min,\n max = cfg.max,\n minTickInterval = cfg.minTickInterval,\n tickCount = cfg.tickCount;\n var tickInterval = cfg.tickInterval;\n var ticks = [];\n // 指定 tickInterval 后 tickCount 不生效,需要重新计算\n if (!tickInterval) {\n tickInterval = (max - min) / tickCount;\n // 如果设置了最小间距,则使用最小间距\n if (minTickInterval && tickInterval < minTickInterval) {\n tickInterval = minTickInterval;\n }\n }\n tickInterval = Math.max(Math.floor((max - min) / (Math.pow(2, 12) - 1)), tickInterval);\n var minYear = getYear(min);\n // 如果间距大于 1 年,则将开始日期从整年开始\n if (tickInterval > YEAR) {\n var maxYear = getYear(max);\n var yearInterval = Math.ceil(tickInterval / YEAR);\n for (var i = minYear; i <= maxYear + yearInterval; i = i + yearInterval) {\n ticks.push(createYear(i));\n }\n } else if (tickInterval > MONTH) {\n // 大于月时\n var monthInterval = Math.ceil(tickInterval / MONTH);\n var mmMoth = getMonth(min);\n var dMonths = diffMonth(min, max);\n for (var i = 0; i <= dMonths + monthInterval; i = i + monthInterval) {\n ticks.push(creatMonth(minYear, i + mmMoth));\n }\n } else if (tickInterval > DAY) {\n // 大于天\n var date = new Date(min);\n var year = date.getFullYear();\n var month = date.getMonth();\n var mday = date.getDate();\n var day = Math.ceil(tickInterval / DAY);\n var ddays = diffDay(min, max);\n for (var i = 0; i < ddays + day; i = i + day) {\n ticks.push(new Date(year, month, mday + i).getTime());\n }\n } else if (tickInterval > HOUR) {\n // 大于小时\n var date = new Date(min);\n var year = date.getFullYear();\n var month = date.getMonth();\n var day = date.getDate();\n var hour = date.getHours();\n var hours = Math.ceil(tickInterval / HOUR);\n var dHours = diffHour(min, max);\n for (var i = 0; i <= dHours + hours; i = i + hours) {\n ticks.push(new Date(year, month, day, hour + i).getTime());\n }\n } else if (tickInterval > MINUTE) {\n // 大于分钟\n var dMinus = diffMinus(min, max);\n var minutes = Math.ceil(tickInterval / MINUTE);\n for (var i = 0; i <= dMinus + minutes; i = i + minutes) {\n ticks.push(min + i * MINUTE);\n }\n } else {\n // 小于分钟\n var interval = tickInterval;\n if (interval < SECOND) {\n interval = SECOND;\n }\n var minSecond = Math.floor(min / SECOND) * SECOND;\n var dSeconds = Math.ceil((max - min) / SECOND);\n var seconds = Math.ceil(interval / SECOND);\n for (var i = 0; i < dSeconds + seconds; i = i + seconds) {\n ticks.push(minSecond + i * SECOND);\n }\n }\n // 最好是能从算法能解决这个问题,但是如果指定了 tickInterval,计算 ticks,也只能这么算,所以\n // 打印警告提示\n if (ticks.length >= 512) {\n console.warn(\"Notice: current ticks length(\" + ticks.length + \") >= 512, may cause performance issues, even out of memory. Because of the configure \\\"tickInterval\\\"(in milliseconds, current is \" + tickInterval + \") is too small, increase the value to solve the problem!\");\n }\n return ticks;\n}","import cat from './cat';\nimport d3Linear from './d3-linear';\nimport linear from './linear';\nimport log from './log';\nimport pow from './pow';\nimport quantile from './quantile';\nimport rPretty from './r-prettry';\nimport { getTickMethod, registerTickMethod } from './register';\nimport time from './time';\nimport timeCat from './time-cat';\nimport timePretty from './time-pretty';\nregisterTickMethod('cat', cat);\nregisterTickMethod('time-cat', timeCat);\nregisterTickMethod('wilkinson-extended', linear);\nregisterTickMethod('r-pretty', rPretty);\nregisterTickMethod('time', time);\nregisterTickMethod('time-pretty', timePretty);\nregisterTickMethod('log', log);\nregisterTickMethod('pow', pow);\nregisterTickMethod('quantile', quantile);\nregisterTickMethod('d3-linear', d3Linear);\nexport { getTickMethod, registerTickMethod };","import { __assign } from \"tslib\";\nimport catTicks from './cat';\n/**\n * 计算时间分类的 ticks, 保头,保尾\n * @param cfg 度量的配置项\n * @returns 计算后的 ticks\n */\nexport default function timeCat(cfg) {\n // 默认保留最后一条\n var ticks = catTicks(__assign({\n showLast: true\n }, cfg));\n return ticks;\n}","import { head, isNil, last } from '@antv/util';\nimport extended from '../util/extended';\nimport interval from '../util/interval';\nimport strictLimit from '../util/strict-limit';\n/**\n * 计算线性的 ticks,使用 wilkinson extended 方法\n * @param cfg 度量的配置项\n * @returns 计算后的 ticks\n */\nexport default function linear(cfg) {\n var min = cfg.min,\n max = cfg.max,\n tickCount = cfg.tickCount,\n nice = cfg.nice,\n tickInterval = cfg.tickInterval,\n minLimit = cfg.minLimit,\n maxLimit = cfg.maxLimit;\n var ticks = extended(min, max, tickCount, nice).ticks;\n if (!isNil(minLimit) || !isNil(maxLimit)) {\n return strictLimit(cfg, head(ticks), last(ticks));\n }\n if (tickInterval) {\n return interval(min, max, tickInterval).ticks;\n }\n return ticks;\n}","import { head, isNil, last } from '@antv/util';\nimport interval from '../util/interval';\nimport pretty from '../util/pretty';\nimport strictLimit from '../util/strict-limit';\n/**\n * 计算线性的 ticks,使用 R's pretty 方法\n * @param cfg 度量的配置项\n * @returns 计算后的 ticks\n */\nexport default function linearPretty(cfg) {\n var min = cfg.min,\n max = cfg.max,\n tickCount = cfg.tickCount,\n tickInterval = cfg.tickInterval,\n minLimit = cfg.minLimit,\n maxLimit = cfg.maxLimit;\n var ticks = pretty(min, max, tickCount).ticks;\n if (!isNil(minLimit) || !isNil(maxLimit)) {\n return strictLimit(cfg, head(ticks), last(ticks));\n }\n if (tickInterval) {\n return interval(min, max, tickInterval).ticks;\n }\n return ticks;\n}","import { getTickInterval } from '../util/time';\nexport default function calculateTimeTicks(cfg) {\n var min = cfg.min,\n max = cfg.max,\n minTickInterval = cfg.minTickInterval;\n var tickInterval = cfg.tickInterval;\n var tickCount = cfg.tickCount;\n // 指定 tickInterval 后 tickCount 不生效,需要重新计算\n if (tickInterval) {\n tickCount = Math.ceil((max - min) / tickInterval);\n } else {\n tickInterval = getTickInterval(min, max, tickCount)[1];\n var count = (max - min) / tickInterval;\n var ratio = count / tickCount;\n if (ratio > 1) {\n tickInterval = tickInterval * Math.ceil(ratio);\n }\n // 如果设置了最小间距,则使用最小间距\n if (minTickInterval && tickInterval < minTickInterval) {\n tickInterval = minTickInterval;\n }\n }\n tickInterval = Math.max(Math.floor((max - min) / (Math.pow(2, 12) - 1)), tickInterval);\n var ticks = [];\n for (var i = min; i < max + tickInterval; i += tickInterval) {\n ticks.push(i);\n }\n return ticks;\n}","import { getLogPositiveMin, log } from '../util/math';\n/**\n * 计算 log 的 ticks,考虑 min = 0 的场景\n * @param cfg 度量的配置项\n * @returns 计算后的 ticks\n */\nexport default function calculateLogTicks(cfg) {\n var base = cfg.base,\n tickCount = cfg.tickCount,\n min = cfg.min,\n max = cfg.max,\n values = cfg.values;\n var minTick;\n var maxTick = log(base, max);\n if (min > 0) {\n minTick = Math.floor(log(base, min));\n } else {\n var positiveMin = getLogPositiveMin(values, base, max);\n minTick = Math.floor(log(base, positiveMin));\n }\n var count = maxTick - minTick;\n var avg = Math.ceil(count / tickCount);\n var ticks = [];\n for (var i = minTick; i < maxTick + avg; i = i + avg) {\n ticks.push(Math.pow(base, i));\n }\n if (min <= 0) {\n // 最小值 <= 0 时显示 0\n ticks.unshift(0);\n }\n return ticks;\n}","import { calBase } from '../util/math';\nimport pretty from '../util/pretty';\n/**\n * 计算 Pow 的 ticks\n * @param cfg 度量的配置项\n * @returns 计算后的 ticks\n */\nexport default function calculatePowTicks(cfg) {\n var exponent = cfg.exponent,\n tickCount = cfg.tickCount;\n var max = Math.ceil(calBase(exponent, cfg.max));\n var min = Math.floor(calBase(exponent, cfg.min));\n var ticks = pretty(min, max, tickCount).ticks;\n return ticks.map(function (tick) {\n var factor = tick >= 0 ? 1 : -1;\n return Math.pow(tick, exponent) * factor;\n });\n}","import { head, isNil, last } from '@antv/util';\nimport d3Linear from '../util/d3-linear';\nimport interval from '../util/interval';\nimport strictLimit from '../util/strict-limit';\nexport default function d3LinearTickMethod(cfg) {\n var min = cfg.min,\n max = cfg.max,\n tickInterval = cfg.tickInterval,\n minLimit = cfg.minLimit,\n maxLimit = cfg.maxLimit;\n var ticks = d3Linear(cfg);\n if (!isNil(minLimit) || !isNil(maxLimit)) {\n return strictLimit(cfg, head(ticks), last(ticks));\n }\n if (tickInterval) {\n return interval(min, max, tickInterval).ticks;\n }\n return ticks;\n}","import Scale from './base';\nimport Category from './category/base';\nimport TimeCat from './category/time';\nimport Linear from './continuous/linear';\nimport Log from './continuous/log';\nimport Pow from './continuous/pow';\nimport Time from './continuous/time';\nimport Quantize from './continuous/quantize';\nimport Quantile from './continuous/quantile';\nimport { getScale, registerScale } from './factory';\nimport Identity from './identity/index';\nimport { getTickMethod, registerTickMethod } from './tick-method/index';\nregisterScale('cat', Category);\nregisterScale('category', Category);\nregisterScale('identity', Identity);\nregisterScale('linear', Linear);\nregisterScale('log', Log);\nregisterScale('pow', Pow);\nregisterScale('time', Time);\nregisterScale('timeCat', TimeCat);\nregisterScale('quantize', Quantize);\nregisterScale('quantile', Quantile);\nexport { Category, Identity, Linear, Log, Pow, Time, TimeCat, Quantile, Quantize, Scale, getScale, registerScale, getTickMethod, registerTickMethod };","import Attribute from './attributes/base';\n// 所有的 attribute map\nvar ATTRIBUTE_MAP = {};\n/**\n * 通过类型获得 Attribute 类\n * @param type\n */\nvar getAttribute = function getAttribute(type) {\n return ATTRIBUTE_MAP[type.toLowerCase()];\n};\nvar registerAttribute = function registerAttribute(type, ctor) {\n // 注册的时候,需要校验 type 重名,不区分大小写\n if (getAttribute(type)) {\n throw new Error(\"Attribute type '\".concat(type, \"' existed.\"));\n }\n // 存储到 map 中\n ATTRIBUTE_MAP[type.toLowerCase()] = ctor;\n};\nexport { getAttribute, registerAttribute, Attribute };\nexport * from './interface';","import Attribute from './attributes/base';\nimport Color from './attributes/color';\nimport Opacity from './attributes/opacity';\nimport Position from './attributes/position';\nimport Shape from './attributes/shape';\nimport Size from './attributes/size';\nimport { getAttribute, registerAttribute } from './factory';\nregisterAttribute('Color', Color);\nregisterAttribute('Opacity', Opacity);\nregisterAttribute('Position', Position);\nregisterAttribute('Shape', Shape);\nregisterAttribute('Size', Size);\nexport { registerAttribute, getAttribute, Attribute,\n// 以下 export 是为了兼容,理论上是不需要的\nColor, Opacity, Position, Shape, Size };\nexport * from './interface';","import \"core-js/modules/es.math.hypot.js\";\nimport * as glMatrix from \"./common.js\";\n/**\n * 3 Dimensional Vector\n * @module vec3\n */\n\n/**\n * Creates a new, empty vec3\n *\n * @returns {vec3} a new 3D vector\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(3);\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n }\n return out;\n}\n/**\n * Creates a new vec3 initialized with values from an existing vector\n *\n * @param {ReadonlyVec3} a vector to clone\n * @returns {vec3} a new 3D vector\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(3);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\n/**\n * Calculates the length of a vec3\n *\n * @param {ReadonlyVec3} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport function length(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return Math.hypot(x, y, z);\n}\n/**\n * Creates a new vec3 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @returns {vec3} a new 3D vector\n */\n\nexport function fromValues(x, y, z) {\n var out = new glMatrix.ARRAY_TYPE(3);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n/**\n * Copy the values from one vec3 to another\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the source vector\n * @returns {vec3} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\n/**\n * Set the components of a vec3 to the given values\n *\n * @param {vec3} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @returns {vec3} out\n */\n\nexport function set(out, x, y, z) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n/**\n * Adds two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n return out;\n}\n/**\n * Multiplies two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n return out;\n}\n/**\n * Divides two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n return out;\n}\n/**\n * Math.ceil the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to ceil\n * @returns {vec3} out\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n return out;\n}\n/**\n * Math.floor the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to floor\n * @returns {vec3} out\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n return out;\n}\n/**\n * Returns the minimum of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n return out;\n}\n/**\n * Returns the maximum of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n return out;\n}\n/**\n * Math.round the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to round\n * @returns {vec3} out\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n out[2] = Math.round(a[2]);\n return out;\n}\n/**\n * Scales a vec3 by a scalar number\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec3} out\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n return out;\n}\n/**\n * Adds two vec3's after scaling the second operand by a scalar value\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec3} out\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n return out;\n}\n/**\n * Calculates the euclidian distance between two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} distance between a and b\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return Math.hypot(x, y, z);\n}\n/**\n * Calculates the squared euclidian distance between two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return x * x + y * y + z * z;\n}\n/**\n * Calculates the squared length of a vec3\n *\n * @param {ReadonlyVec3} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nexport function squaredLength(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return x * x + y * y + z * z;\n}\n/**\n * Negates the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to negate\n * @returns {vec3} out\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n return out;\n}\n/**\n * Returns the inverse of the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to invert\n * @returns {vec3} out\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n return out;\n}\n/**\n * Normalize a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to normalize\n * @returns {vec3} out\n */\n\nexport function normalize(out, a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var len = x * x + y * y + z * z;\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n }\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n out[2] = a[2] * len;\n return out;\n}\n/**\n * Calculates the dot product of two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n/**\n * Computes the cross product of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function cross(out, a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2];\n var bx = b[0],\n by = b[1],\n bz = b[2];\n out[0] = ay * bz - az * by;\n out[1] = az * bx - ax * bz;\n out[2] = ax * by - ay * bx;\n return out;\n}\n/**\n * Performs a linear interpolation between two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n return out;\n}\n/**\n * Performs a hermite interpolation with two control points\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {ReadonlyVec3} c the third operand\n * @param {ReadonlyVec3} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nexport function hermite(out, a, b, c, d, t) {\n var factorTimes2 = t * t;\n var factor1 = factorTimes2 * (2 * t - 3) + 1;\n var factor2 = factorTimes2 * (t - 2) + t;\n var factor3 = factorTimes2 * (t - 1);\n var factor4 = factorTimes2 * (3 - 2 * t);\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\n/**\n * Performs a bezier interpolation with two control points\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {ReadonlyVec3} c the third operand\n * @param {ReadonlyVec3} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nexport function bezier(out, a, b, c, d, t) {\n var inverseFactor = 1 - t;\n var inverseFactorTimesTwo = inverseFactor * inverseFactor;\n var factorTimes2 = t * t;\n var factor1 = inverseFactorTimesTwo * inverseFactor;\n var factor2 = 3 * t * inverseFactorTimesTwo;\n var factor3 = 3 * factorTimes2 * inverseFactor;\n var factor4 = factorTimes2 * t;\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec3} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec3} out\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0;\n var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n var z = glMatrix.RANDOM() * 2.0 - 1.0;\n var zScale = Math.sqrt(1.0 - z * z) * scale;\n out[0] = Math.cos(r) * zScale;\n out[1] = Math.sin(r) * zScale;\n out[2] = z * scale;\n return out;\n}\n/**\n * Transforms the vec3 with a mat4.\n * 4th vector component is implicitly '1'\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec3} out\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2];\n var w = m[3] * x + m[7] * y + m[11] * z + m[15];\n w = w || 1.0;\n out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w;\n out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w;\n out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w;\n return out;\n}\n/**\n * Transforms the vec3 with a mat3.\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyMat3} m the 3x3 matrix to transform with\n * @returns {vec3} out\n */\n\nexport function transformMat3(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2];\n out[0] = x * m[0] + y * m[3] + z * m[6];\n out[1] = x * m[1] + y * m[4] + z * m[7];\n out[2] = x * m[2] + y * m[5] + z * m[8];\n return out;\n}\n/**\n * Transforms the vec3 with a quat\n * Can also be used for dual quaternions. (Multiply it with the real part)\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyQuat} q quaternion to transform with\n * @returns {vec3} out\n */\n\nexport function transformQuat(out, a, q) {\n // benchmarks: https://jsperf.com/quaternion-transform-vec3-implementations-fixed\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3];\n var x = a[0],\n y = a[1],\n z = a[2]; // var qvec = [qx, qy, qz];\n // var uv = vec3.cross([], qvec, a);\n\n var uvx = qy * z - qz * y,\n uvy = qz * x - qx * z,\n uvz = qx * y - qy * x; // var uuv = vec3.cross([], qvec, uv);\n\n var uuvx = qy * uvz - qz * uvy,\n uuvy = qz * uvx - qx * uvz,\n uuvz = qx * uvy - qy * uvx; // vec3.scale(uv, uv, 2 * w);\n\n var w2 = qw * 2;\n uvx *= w2;\n uvy *= w2;\n uvz *= w2; // vec3.scale(uuv, uuv, 2);\n\n uuvx *= 2;\n uuvy *= 2;\n uuvz *= 2; // return vec3.add(out, a, vec3.add(out, uv, uuv));\n\n out[0] = x + uvx + uuvx;\n out[1] = y + uvy + uuvy;\n out[2] = z + uvz + uuvz;\n return out;\n}\n/**\n * Rotate a 3D vector around the x-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nexport function rotateX(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[0];\n r[1] = p[1] * Math.cos(rad) - p[2] * Math.sin(rad);\n r[2] = p[1] * Math.sin(rad) + p[2] * Math.cos(rad); //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\n * Rotate a 3D vector around the y-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nexport function rotateY(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[2] * Math.sin(rad) + p[0] * Math.cos(rad);\n r[1] = p[1];\n r[2] = p[2] * Math.cos(rad) - p[0] * Math.sin(rad); //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\n * Rotate a 3D vector around the z-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nexport function rotateZ(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[0] * Math.cos(rad) - p[1] * Math.sin(rad);\n r[1] = p[0] * Math.sin(rad) + p[1] * Math.cos(rad);\n r[2] = p[2]; //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\n * Get the angle between two 3D vectors\n * @param {ReadonlyVec3} a The first operand\n * @param {ReadonlyVec3} b The second operand\n * @returns {Number} The angle in radians\n */\n\nexport function angle(a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2],\n bx = b[0],\n by = b[1],\n bz = b[2],\n mag1 = Math.sqrt(ax * ax + ay * ay + az * az),\n mag2 = Math.sqrt(bx * bx + by * by + bz * bz),\n mag = mag1 * mag2,\n cosine = mag && dot(a, b) / mag;\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n/**\n * Set the components of a vec3 to zero\n *\n * @param {vec3} out the receiving vector\n * @returns {vec3} out\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec3} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n return \"vec3(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \")\";\n}\n/**\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec3} a The first vector.\n * @param {ReadonlyVec3} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec3} a The first vector.\n * @param {ReadonlyVec3} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2));\n}\n/**\n * Alias for {@link vec3.subtract}\n * @function\n */\n\nexport var sub = subtract;\n/**\n * Alias for {@link vec3.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link vec3.divide}\n * @function\n */\n\nexport var div = divide;\n/**\n * Alias for {@link vec3.distance}\n * @function\n */\n\nexport var dist = distance;\n/**\n * Alias for {@link vec3.squaredDistance}\n * @function\n */\n\nexport var sqrDist = squaredDistance;\n/**\n * Alias for {@link vec3.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Alias for {@link vec3.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec3s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec3. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec3s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n if (!stride) {\n stride = 3;\n }\n if (!offset) {\n offset = 0;\n }\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n }\n return a;\n };\n}();","import { __spreadArray } from \"tslib\";\nimport { ext, mat3, vec3 } from '@antv/matrix-util';\nimport { assign } from '@antv/util';\n/**\n * Coordinate Base Class\n */\nvar Coordinate = /** @class */function () {\n function Coordinate(cfg) {\n // 自身属性\n this.type = 'coordinate';\n this.isRect = false;\n this.isHelix = false;\n this.isPolar = false;\n this.isReflectX = false;\n this.isReflectY = false;\n var start = cfg.start,\n end = cfg.end,\n _a = cfg.matrix,\n matrix = _a === void 0 ? [1, 0, 0, 0, 1, 0, 0, 0, 1] : _a,\n _b = cfg.isTransposed,\n isTransposed = _b === void 0 ? false : _b;\n this.start = start;\n this.end = end;\n this.matrix = matrix;\n this.originalMatrix = __spreadArray([], matrix); // 去除引用\n this.isTransposed = isTransposed;\n }\n /**\n * 初始化流程\n */\n Coordinate.prototype.initial = function () {\n // center、width、height\n this.center = {\n x: (this.start.x + this.end.x) / 2,\n y: (this.start.y + this.end.y) / 2\n };\n this.width = Math.abs(this.end.x - this.start.x);\n this.height = Math.abs(this.end.y - this.start.y);\n };\n /**\n * 更新配置\n * @param cfg\n */\n Coordinate.prototype.update = function (cfg) {\n assign(this, cfg);\n this.initial();\n };\n Coordinate.prototype.convertDim = function (percent, dim) {\n var _a;\n var _b = this[dim],\n start = _b.start,\n end = _b.end;\n // 交换\n if (this.isReflect(dim)) {\n _a = [end, start], start = _a[0], end = _a[1];\n }\n return start + percent * (end - start);\n };\n Coordinate.prototype.invertDim = function (value, dim) {\n var _a;\n var _b = this[dim],\n start = _b.start,\n end = _b.end;\n // 交换\n if (this.isReflect(dim)) {\n _a = [end, start], start = _a[0], end = _a[1];\n }\n return (value - start) / (end - start);\n };\n /**\n * 将坐标点进行矩阵变换\n * @param x 对应 x 轴画布坐标\n * @param y 对应 y 轴画布坐标\n * @param tag 默认为 0,可取值 0, 1\n * @return 返回变换后的三阶向量 [x, y, z]\n */\n Coordinate.prototype.applyMatrix = function (x, y, tag) {\n if (tag === void 0) {\n tag = 0;\n }\n var matrix = this.matrix;\n var vector = [x, y, tag];\n vec3.transformMat3(vector, vector, matrix);\n return vector;\n };\n /**\n * 将坐标点进行矩阵逆变换\n * @param x 对应 x 轴画布坐标\n * @param y 对应 y 轴画布坐标\n * @param tag 默认为 0,可取值 0, 1\n * @return 返回矩阵逆变换后的三阶向量 [x, y, z]\n */\n Coordinate.prototype.invertMatrix = function (x, y, tag) {\n if (tag === void 0) {\n tag = 0;\n }\n var matrix = this.matrix;\n var inverted = mat3.invert([0, 0, 0, 0, 0, 0, 0, 0, 0], matrix);\n var vector = [x, y, tag];\n if (inverted) {\n // 如果为空则不进行矩阵变化,防止报错\n vec3.transformMat3(vector, vector, inverted);\n }\n return vector;\n };\n /**\n * 将归一化的坐标点数据转换为画布坐标,并根据坐标系当前矩阵进行变换\n * @param point 归一化的坐标点\n * @return 返回进行矩阵变换后的画布坐标\n */\n Coordinate.prototype.convert = function (point) {\n var _a = this.convertPoint(point),\n x = _a.x,\n y = _a.y;\n var vector = this.applyMatrix(x, y, 1);\n return {\n x: vector[0],\n y: vector[1]\n };\n };\n /**\n * 将进行过矩阵变换画布坐标转换为归一化坐标\n * @param point 画布坐标\n * @return 返回归一化的坐标点\n */\n Coordinate.prototype.invert = function (point) {\n var vector = this.invertMatrix(point.x, point.y, 1);\n return this.invertPoint({\n x: vector[0],\n y: vector[1]\n });\n };\n /**\n * 坐标系旋转变换\n * @param radian 旋转弧度\n * @return 返回坐标系对象\n */\n Coordinate.prototype.rotate = function (radian) {\n var matrix = this.matrix;\n var center = this.center;\n ext.leftTranslate(matrix, matrix, [-center.x, -center.y]);\n ext.leftRotate(matrix, matrix, radian);\n ext.leftTranslate(matrix, matrix, [center.x, center.y]);\n return this;\n };\n /**\n * 坐标系反射变换\n * @param dim 反射维度\n * @return 返回坐标系对象\n */\n Coordinate.prototype.reflect = function (dim) {\n if (dim === 'x') {\n this.isReflectX = !this.isReflectX;\n } else {\n this.isReflectY = !this.isReflectY;\n }\n return this;\n };\n /**\n * 坐标系比例变换\n * @param s1 x 方向缩放比例\n * @param s2 y 方向缩放比例\n * @return 返回坐标系对象\n */\n Coordinate.prototype.scale = function (s1, s2) {\n var matrix = this.matrix;\n var center = this.center;\n ext.leftTranslate(matrix, matrix, [-center.x, -center.y]);\n ext.leftScale(matrix, matrix, [s1, s2]);\n ext.leftTranslate(matrix, matrix, [center.x, center.y]);\n return this;\n };\n /**\n * 坐标系平移变换\n * @param x x 方向平移像素\n * @param y y 方向平移像素\n * @return 返回坐标系对象\n */\n Coordinate.prototype.translate = function (x, y) {\n var matrix = this.matrix;\n ext.leftTranslate(matrix, matrix, [x, y]);\n return this;\n };\n /**\n * 将坐标系 x y 两个轴进行转置\n * @return 返回坐标系对象\n */\n Coordinate.prototype.transpose = function () {\n this.isTransposed = !this.isTransposed;\n return this;\n };\n Coordinate.prototype.getCenter = function () {\n return this.center;\n };\n Coordinate.prototype.getWidth = function () {\n return this.width;\n };\n Coordinate.prototype.getHeight = function () {\n return this.height;\n };\n Coordinate.prototype.getRadius = function () {\n return this.radius;\n };\n /**\n * whether has reflect\n * @param dim\n */\n Coordinate.prototype.isReflect = function (dim) {\n return dim === 'x' ? this.isReflectX : this.isReflectY;\n };\n /**\n * 重置 matrix\n * @param matrix 如果传入,则使用,否则使用构造函数中传入的默认 matrix\n */\n Coordinate.prototype.resetMatrix = function (matrix) {\n // 去除引用关系\n this.matrix = matrix ? matrix : __spreadArray([], this.originalMatrix);\n };\n return Coordinate;\n}();\nexport default Coordinate;","import { __extends } from \"tslib\";\nimport Coordinate from './base';\n/**\n * 笛卡尔坐标系\n * https://www.zhihu.com/question/20665303\n */\nvar Cartesian = /** @class */function (_super) {\n __extends(Cartesian, _super);\n function Cartesian(cfg) {\n var _this = _super.call(this, cfg) || this;\n _this.isRect = true;\n _this.type = 'cartesian';\n _this.initial();\n return _this;\n }\n Cartesian.prototype.initial = function () {\n _super.prototype.initial.call(this);\n var start = this.start;\n var end = this.end;\n this.x = {\n start: start.x,\n end: end.x\n };\n this.y = {\n start: start.y,\n end: end.y\n };\n };\n Cartesian.prototype.convertPoint = function (point) {\n var _a;\n var x = point.x,\n y = point.y;\n // 交换\n if (this.isTransposed) {\n _a = [y, x], x = _a[0], y = _a[1];\n }\n return {\n x: this.convertDim(x, 'x'),\n y: this.convertDim(y, 'y')\n };\n };\n Cartesian.prototype.invertPoint = function (point) {\n var _a;\n var x = this.invertDim(point.x, 'x');\n var y = this.invertDim(point.y, 'y');\n if (this.isTransposed) {\n _a = [y, x], x = _a[0], y = _a[1];\n }\n return {\n x: x,\n y: y\n };\n };\n return Cartesian;\n}(Coordinate);\nexport default Cartesian;","import { __extends } from \"tslib\";\nimport { ext, vec2 } from '@antv/matrix-util';\nimport { isNumberEqual } from '@antv/util';\nimport Coordinate from './base';\n/**\n * 螺旋坐标系\n */\nvar Helix = /** @class */function (_super) {\n __extends(Helix, _super);\n function Helix(cfg) {\n var _this = _super.call(this, cfg) || this;\n _this.isHelix = true;\n _this.type = 'helix';\n var _a = cfg.startAngle,\n startAngle = _a === void 0 ? 1.25 * Math.PI : _a,\n _b = cfg.endAngle,\n endAngle = _b === void 0 ? 7.25 * Math.PI : _b,\n _c = cfg.innerRadius,\n innerRadius = _c === void 0 ? 0 : _c,\n radius = cfg.radius;\n _this.startAngle = startAngle;\n _this.endAngle = endAngle;\n _this.innerRadius = innerRadius;\n _this.radius = radius;\n _this.initial();\n return _this;\n }\n Helix.prototype.initial = function () {\n _super.prototype.initial.call(this);\n var index = (this.endAngle - this.startAngle) / (2 * Math.PI) + 1; // 螺线圈数\n var maxRadius = Math.min(this.width, this.height) / 2;\n if (this.radius && this.radius >= 0 && this.radius <= 1) {\n maxRadius = maxRadius * this.radius;\n }\n this.d = Math.floor(maxRadius * (1 - this.innerRadius) / index);\n this.a = this.d / (Math.PI * 2); // 螺线系数\n this.x = {\n start: this.startAngle,\n end: this.endAngle\n };\n this.y = {\n start: this.innerRadius * maxRadius,\n end: this.innerRadius * maxRadius + this.d * 0.99\n };\n };\n /**\n * 将百分比数据变成屏幕坐标\n * @param point 归一化的点坐标\n * @return 返回对应的屏幕坐标\n */\n Helix.prototype.convertPoint = function (point) {\n var _a;\n var x = point.x,\n y = point.y;\n if (this.isTransposed) {\n _a = [y, x], x = _a[0], y = _a[1];\n }\n var thi = this.convertDim(x, 'x');\n var r = this.a * thi;\n var newY = this.convertDim(y, 'y');\n return {\n x: this.center.x + Math.cos(thi) * (r + newY),\n y: this.center.y + Math.sin(thi) * (r + newY)\n };\n };\n /**\n * 将屏幕坐标点还原成百分比数据\n * @param point 屏幕坐标\n * @return 返回对应的归一化后的数据\n */\n Helix.prototype.invertPoint = function (point) {\n var _a;\n var d = this.d + this.y.start;\n var v = vec2.subtract([0, 0], [point.x, point.y], [this.center.x, this.center.y]);\n var thi = ext.angleTo(v, [1, 0], true);\n var rMin = thi * this.a; // 坐标与原点的连线在第一圈上的交点,最小r值\n if (vec2.length(v) < rMin) {\n // 坐标与原点的连线不可能小于最小r值,但不排除因小数计算产生的略小于rMin的情况\n rMin = vec2.length(v);\n }\n var index = Math.floor((vec2.length(v) - rMin) / d); // 当前点位于第index圈\n thi = 2 * index * Math.PI + thi;\n var r = this.a * thi;\n var newY = vec2.length(v) - r;\n newY = isNumberEqual(newY, 0) ? 0 : newY;\n var x = this.invertDim(thi, 'x');\n var y = this.invertDim(newY, 'y');\n x = isNumberEqual(x, 0) ? 0 : x;\n y = isNumberEqual(y, 0) ? 0 : y;\n if (this.isTransposed) {\n _a = [y, x], x = _a[0], y = _a[1];\n }\n return {\n x: x,\n y: y\n };\n };\n return Helix;\n}(Coordinate);\nexport default Helix;","import { __extends } from \"tslib\";\nimport { ext, vec2, vec3 } from '@antv/matrix-util';\nimport { isNumberEqual } from '@antv/util';\nimport Coordinate from './base';\nvar Polar = /** @class */function (_super) {\n __extends(Polar, _super);\n function Polar(cfg) {\n var _this = _super.call(this, cfg) || this;\n _this.isPolar = true;\n _this.type = 'polar';\n var _a = cfg.startAngle,\n startAngle = _a === void 0 ? -Math.PI / 2 : _a,\n _b = cfg.endAngle,\n endAngle = _b === void 0 ? Math.PI * 3 / 2 : _b,\n _c = cfg.innerRadius,\n innerRadius = _c === void 0 ? 0 : _c,\n radius = cfg.radius;\n _this.startAngle = startAngle;\n _this.endAngle = endAngle;\n _this.innerRadius = innerRadius;\n _this.radius = radius;\n _this.initial();\n return _this;\n }\n Polar.prototype.initial = function () {\n _super.prototype.initial.call(this);\n while (this.endAngle < this.startAngle) {\n this.endAngle += Math.PI * 2;\n }\n var oneBox = this.getOneBox();\n var oneWidth = oneBox.maxX - oneBox.minX;\n var oneHeight = oneBox.maxY - oneBox.minY;\n var left = Math.abs(oneBox.minX) / oneWidth;\n var top = Math.abs(oneBox.minY) / oneHeight;\n var maxRadius;\n if (this.height / oneHeight > this.width / oneWidth) {\n // width 为主\n maxRadius = this.width / oneWidth;\n this.circleCenter = {\n x: this.center.x - (0.5 - left) * this.width,\n y: this.center.y - (0.5 - top) * maxRadius * oneHeight\n };\n } else {\n // height 为主\n maxRadius = this.height / oneHeight;\n this.circleCenter = {\n x: this.center.x - (0.5 - left) * maxRadius * oneWidth,\n y: this.center.y - (0.5 - top) * this.height\n };\n }\n this.polarRadius = this.radius;\n if (!this.radius) {\n this.polarRadius = maxRadius;\n } else if (this.radius > 0 && this.radius <= 1) {\n this.polarRadius = maxRadius * this.radius;\n } else if (this.radius <= 0 || this.radius > maxRadius) {\n this.polarRadius = maxRadius;\n }\n this.x = {\n start: this.startAngle,\n end: this.endAngle\n };\n this.y = {\n start: this.innerRadius * this.polarRadius,\n end: this.polarRadius\n };\n };\n Polar.prototype.getRadius = function () {\n return this.polarRadius;\n };\n Polar.prototype.convertPoint = function (point) {\n var _a;\n var center = this.getCenter();\n var x = point.x,\n y = point.y;\n if (this.isTransposed) {\n _a = [y, x], x = _a[0], y = _a[1];\n }\n x = this.convertDim(x, 'x');\n y = this.convertDim(y, 'y');\n return {\n x: center.x + Math.cos(x) * y,\n y: center.y + Math.sin(x) * y\n };\n };\n Polar.prototype.invertPoint = function (point) {\n var _a;\n var center = this.getCenter();\n var vPoint = [point.x - center.x, point.y - center.y];\n var _b = this,\n startAngle = _b.startAngle,\n endAngle = _b.endAngle;\n if (this.isReflect('x')) {\n _a = [endAngle, startAngle], startAngle = _a[0], endAngle = _a[1];\n }\n var m = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n ext.leftRotate(m, m, startAngle);\n var vStart3 = [1, 0, 0];\n vec3.transformMat3(vStart3, vStart3, m);\n var vStart2 = [vStart3[0], vStart3[1]];\n var angle = ext.angleTo(vStart2, vPoint, endAngle < startAngle);\n if (isNumberEqual(angle, Math.PI * 2)) {\n angle = 0;\n }\n var radius = vec2.length(vPoint);\n var xPercent = angle / (endAngle - startAngle);\n xPercent = endAngle - startAngle > 0 ? xPercent : -xPercent;\n var yPercent = this.invertDim(radius, 'y');\n var rst = {\n x: 0,\n y: 0\n };\n rst.x = this.isTransposed ? yPercent : xPercent;\n rst.y = this.isTransposed ? xPercent : yPercent;\n return rst;\n };\n Polar.prototype.getCenter = function () {\n return this.circleCenter;\n };\n Polar.prototype.getOneBox = function () {\n var startAngle = this.startAngle;\n var endAngle = this.endAngle;\n if (Math.abs(endAngle - startAngle) >= Math.PI * 2) {\n return {\n minX: -1,\n maxX: 1,\n minY: -1,\n maxY: 1\n };\n }\n var xs = [0, Math.cos(startAngle), Math.cos(endAngle)];\n var ys = [0, Math.sin(startAngle), Math.sin(endAngle)];\n for (var i = Math.min(startAngle, endAngle); i < Math.max(startAngle, endAngle); i += Math.PI / 18) {\n xs.push(Math.cos(i));\n ys.push(Math.sin(i));\n }\n return {\n minX: Math.min.apply(Math, xs),\n maxX: Math.max.apply(Math, xs),\n minY: Math.min.apply(Math, ys),\n maxY: Math.max.apply(Math, ys)\n };\n };\n return Polar;\n}(Coordinate);\nexport default Polar;","// 所有的 Coordinate map\nvar COORDINATE_MAP = {};\n/**\n * 通过类型获得 coordinate 类\n * @param type\n */\nexport var getCoordinate = function getCoordinate(type) {\n return COORDINATE_MAP[type.toLowerCase()];\n};\n/**\n * 注册 coordinate 类\n * @param type\n * @param ctor\n */\nexport var registerCoordinate = function registerCoordinate(type, ctor) {\n // 存储到 map 中\n COORDINATE_MAP[type.toLowerCase()] = ctor;\n};\nexport * from './interface';","import { Event as GraphEvent } from '@antv/g-base';\n/**\n *\n * @param group 分组\n * @param eventName 事件名\n * @param eventObject 事件对象\n */\nexport function propagationDelegate(group, eventName, eventObject) {\n var event = new GraphEvent(eventName, eventObject);\n event.target = group;\n event.propagationPath.push(group); // 从当前 group 开始触发 delegation\n group.emitDelegation(eventName, event);\n var parent = group.getParent();\n // 执行冒泡\n while (parent) {\n // 委托事件要先触发\n parent.emitDelegation(eventName, event);\n event.propagationPath.push(parent);\n parent = parent.getParent();\n }\n}","import Coordinate from './coord/base';\nimport Cartesian from './coord/cartesian';\nimport Helix from './coord/helix';\nimport Polar from './coord/polar';\nimport { getCoordinate, registerCoordinate } from './factory';\nregisterCoordinate('rect', Cartesian);\nregisterCoordinate('cartesian', Cartesian);\nregisterCoordinate('polar', Polar);\nregisterCoordinate('helix', Helix);\nexport { getCoordinate, registerCoordinate, Coordinate };","import { ext, vec2, vec3 } from '@antv/matrix-util';\nvar identityMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\nexport function getMatrixByAngle(point, angle, matrix) {\n if (matrix === void 0) {\n matrix = identityMatrix;\n }\n if (!angle) {\n // 角度为 0 或者 null 时返回 null\n return null;\n }\n var m = ext.transform(matrix, [['t', -point.x, -point.y], ['r', angle], ['t', point.x, point.y]]);\n return m;\n}\nexport function getMatrixByTranslate(point, currentMatrix) {\n if (!point.x && !point.y) {\n // 0,0 或者 nan 的情况下返回 null\n return null;\n }\n return ext.transform(currentMatrix || identityMatrix, [['t', point.x, point.y]]);\n}\n// 从矩阵获取旋转的角度\nexport function getAngleByMatrix(matrix) {\n var xVector = [1, 0, 0];\n var out = [0, 0, 0];\n vec3.transformMat3(out, xVector, matrix);\n return Math.atan2(out[1], out[0]);\n}\n// 矩阵 * 向量\nfunction multiplyVec2(matrix, v) {\n var out = [0, 0];\n vec2.transformMat3(out, v, matrix);\n return out;\n}\nexport function applyMatrix2BBox(matrix, bbox) {\n var topLeft = multiplyVec2(matrix, [bbox.minX, bbox.minY]);\n var topRight = multiplyVec2(matrix, [bbox.maxX, bbox.minY]);\n var bottomLeft = multiplyVec2(matrix, [bbox.minX, bbox.maxY]);\n var bottomRight = multiplyVec2(matrix, [bbox.maxX, bbox.maxY]);\n var minX = Math.min(topLeft[0], topRight[0], bottomLeft[0], bottomRight[0]);\n var maxX = Math.max(topLeft[0], topRight[0], bottomLeft[0], bottomRight[0]);\n var minY = Math.min(topLeft[1], topRight[1], bottomLeft[1], bottomRight[1]);\n var maxY = Math.max(topLeft[1], topRight[1], bottomLeft[1], bottomRight[1]);\n return {\n x: minX,\n y: minY,\n minX: minX,\n minY: minY,\n maxX: maxX,\n maxY: maxY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nexport function applyRotate(shape, rotate, x, y) {\n if (rotate) {\n var matrix = getMatrixByAngle({\n x: x,\n y: y\n }, rotate, shape.getMatrix());\n shape.setMatrix(matrix);\n }\n}\nexport function applyTranslate(shape, x, y) {\n var translateMatrix = getMatrixByTranslate({\n x: x,\n y: y\n });\n shape.attr('matrix', translateMatrix);\n}","import { each, isArray, isNil, isNumber } from '@antv/util';\nexport function formatPadding(padding) {\n var top = 0;\n var left = 0;\n var right = 0;\n var bottom = 0;\n if (isNumber(padding)) {\n top = left = right = bottom = padding;\n } else if (isArray(padding)) {\n top = padding[0];\n right = !isNil(padding[1]) ? padding[1] : padding[0];\n bottom = !isNil(padding[2]) ? padding[2] : padding[0];\n left = !isNil(padding[3]) ? padding[3] : right;\n }\n return [top, right, bottom, left];\n}\nexport function clearDom(container) {\n var children = container.childNodes;\n var length = children.length;\n for (var i = length - 1; i >= 0; i--) {\n container.removeChild(children[i]);\n }\n}\nexport function hasClass(elements, cName) {\n return !!elements.className.match(new RegExp(\"(\\\\s|^)\" + cName + \"(\\\\s|$)\"));\n}\nexport function regionToBBox(region) {\n var start = region.start,\n end = region.end;\n var minX = Math.min(start.x, end.x);\n var minY = Math.min(start.y, end.y);\n var maxX = Math.max(start.x, end.x);\n var maxY = Math.max(start.y, end.y);\n return {\n x: minX,\n y: minY,\n minX: minX,\n minY: minY,\n maxX: maxX,\n maxY: maxY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nexport function pointsToBBox(points) {\n var xs = points.map(function (point) {\n return point.x;\n });\n var ys = points.map(function (point) {\n return point.y;\n });\n var minX = Math.min.apply(Math, xs);\n var minY = Math.min.apply(Math, ys);\n var maxX = Math.max.apply(Math, xs);\n var maxY = Math.max.apply(Math, ys);\n return {\n x: minX,\n y: minY,\n minX: minX,\n minY: minY,\n maxX: maxX,\n maxY: maxY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nexport function createBBox(x, y, width, height) {\n var maxX = x + width;\n var maxY = y + height;\n return {\n x: x,\n y: y,\n width: width,\n height: height,\n minX: x,\n minY: y,\n // 非常奇葩的 js 特性\n // Infinity + Infinity = Infinity\n // Infinity - Infinity = NaN\n // fixed https://github.com/antvis/G2Plot/issues/1243\n maxX: isNaN(maxX) ? 0 : maxX,\n maxY: isNaN(maxY) ? 0 : maxY\n };\n}\nexport function getValueByPercent(min, max, percent) {\n return (1 - percent) * min + max * percent;\n}\nexport function getCirclePoint(center, radius, angle) {\n return {\n x: center.x + Math.cos(angle) * radius,\n y: center.y + Math.sin(angle) * radius\n };\n}\nexport function distance(p1, p2) {\n var dx = p2.x - p1.x;\n var dy = p2.y - p1.y;\n return Math.sqrt(dx * dx + dy * dy);\n}\nexport var wait = function wait(interval) {\n return new Promise(function (resolve) {\n setTimeout(resolve, interval);\n });\n};\n/**\n * 判断两个数值 是否接近\n * - 解决精度问题(由于无法确定精度上限,根据具体场景可传入 精度 参数)\n */\nexport var near = function near(x, y, e) {\n if (e === void 0) {\n e = Math.pow(Number.EPSILON, 0.5);\n }\n return [x, y].includes(Infinity) ? Math.abs(x) === Math.abs(y) : Math.abs(x - y) < e;\n};\nexport function intersectBBox(box1, box2) {\n var minX = Math.max(box1.minX, box2.minX);\n var minY = Math.max(box1.minY, box2.minY);\n var maxX = Math.min(box1.maxX, box2.maxX);\n var maxY = Math.min(box1.maxY, box2.maxY);\n return createBBox(minX, minY, maxX - minX, maxY - minY);\n}\nexport function mergeBBox(box1, box2) {\n var minX = Math.min(box1.minX, box2.minX);\n var minY = Math.min(box1.minY, box2.minY);\n var maxX = Math.max(box1.maxX, box2.maxX);\n var maxY = Math.max(box1.maxY, box2.maxY);\n return createBBox(minX, minY, maxX - minX, maxY - minY);\n}\nexport function getBBoxWithClip(element) {\n var clipShape = element.getClip();\n var clipBBox = clipShape && clipShape.getBBox();\n var bbox;\n if (!element.isGroup()) {\n // 如果是普通的图形\n bbox = element.getBBox();\n } else {\n var minX_1 = Infinity;\n var maxX_1 = -Infinity;\n var minY_1 = Infinity;\n var maxY_1 = -Infinity;\n var children = element.getChildren();\n if (children.length > 0) {\n each(children, function (child) {\n if (child.get('visible')) {\n // 如果分组没有子元素,则直接跳过\n if (child.isGroup() && child.get('children').length === 0) {\n return true;\n }\n var box = getBBoxWithClip(child);\n // 计算 4 个顶点\n var leftTop = child.applyToMatrix([box.minX, box.minY, 1]);\n var leftBottom = child.applyToMatrix([box.minX, box.maxY, 1]);\n var rightTop = child.applyToMatrix([box.maxX, box.minY, 1]);\n var rightBottom = child.applyToMatrix([box.maxX, box.maxY, 1]);\n // 从中取最小的范围\n var boxMinX = Math.min(leftTop[0], leftBottom[0], rightTop[0], rightBottom[0]);\n var boxMaxX = Math.max(leftTop[0], leftBottom[0], rightTop[0], rightBottom[0]);\n var boxMinY = Math.min(leftTop[1], leftBottom[1], rightTop[1], rightBottom[1]);\n var boxMaxY = Math.max(leftTop[1], leftBottom[1], rightTop[1], rightBottom[1]);\n if (boxMinX < minX_1) {\n minX_1 = boxMinX;\n }\n if (boxMaxX > maxX_1) {\n maxX_1 = boxMaxX;\n }\n if (boxMinY < minY_1) {\n minY_1 = boxMinY;\n }\n if (boxMaxY > maxY_1) {\n maxY_1 = boxMaxY;\n }\n }\n });\n } else {\n minX_1 = 0;\n maxX_1 = 0;\n minY_1 = 0;\n maxY_1 = 0;\n }\n bbox = createBBox(minX_1, minY_1, maxX_1 - minX_1, maxY_1 - minY_1);\n }\n if (clipBBox) {\n return intersectBBox(bbox, clipBBox);\n } else {\n return bbox;\n }\n}\nexport function updateClip(element, newElement) {\n if (!element.getClip() && !newElement.getClip()) {\n // 两者都没有 clip\n return;\n }\n var newClipShape = newElement.getClip();\n if (!newClipShape) {\n // 新的 element 没有 clip\n element.setClip(null); // 移除 clip\n return;\n }\n var clipCfg = {\n type: newClipShape.get('type'),\n attrs: newClipShape.attr()\n };\n element.setClip(clipCfg);\n}\nexport function toPx(number) {\n return number + \"px\";\n}\nexport function getTextPoint(start, end, position, offset) {\n var lineLength = distance(start, end);\n var offsetPercent = offset / lineLength; // 计算间距同线的比例,用于计算最终的位置\n var percent = 0;\n if (position === 'start') {\n percent = 0 - offsetPercent;\n } else if (position === 'end') {\n percent = 1 + offsetPercent;\n }\n return {\n x: getValueByPercent(start.x, end.x, percent),\n y: getValueByPercent(start.y, end.y, percent)\n };\n}","import { __assign, __extends } from \"tslib\";\nimport { Base } from '@antv/g-base';\nimport { deepMix, each, hasKey, isObject } from '@antv/util';\nvar LOCATION_FIELD_MAP = {\n none: [],\n point: ['x', 'y'],\n region: ['start', 'end'],\n points: ['points'],\n circle: ['center', 'radius', 'startAngle', 'endAngle']\n};\nvar Component = /** @class */function (_super) {\n __extends(Component, _super);\n function Component(cfg) {\n var _this = _super.call(this, cfg) || this;\n _this.initCfg();\n return _this;\n }\n /**\n * @protected\n * 默认的配置项\n * @returns {object} 默认的配置项\n */\n Component.prototype.getDefaultCfg = function () {\n return {\n id: '',\n name: '',\n type: '',\n locationType: 'none',\n offsetX: 0,\n offsetY: 0,\n animate: false,\n capture: true,\n updateAutoRender: false,\n animateOption: {\n appear: null,\n update: {\n duration: 400,\n easing: 'easeQuadInOut'\n },\n enter: {\n duration: 400,\n easing: 'easeQuadInOut'\n },\n leave: {\n duration: 350,\n easing: 'easeQuadIn'\n }\n },\n events: null,\n defaultCfg: {},\n visible: true\n };\n };\n /**\n * 清理组件的内容,一般配合 render 使用\n * @example\n * axis.clear();\n * axis.render();\n */\n Component.prototype.clear = function () {};\n /**\n * 更新组件\n * @param {object} cfg 更新属性\n */\n Component.prototype.update = function (cfg) {\n var _this = this;\n var defaultCfg = this.get('defaultCfg') || {};\n each(cfg, function (value, name) {\n var originCfg = _this.get(name);\n var newCfg = value;\n if (originCfg !== value) {\n // 判断两者是否相等,主要是进行 null 的判定\n if (isObject(value) && defaultCfg[name]) {\n // 新设置的属性与默认值进行合并\n newCfg = deepMix({}, defaultCfg[name], value);\n }\n _this.set(name, newCfg);\n }\n });\n this.updateInner(cfg);\n this.afterUpdate(cfg);\n };\n // 更新内部\n Component.prototype.updateInner = function (cfg) {};\n Component.prototype.afterUpdate = function (cfg) {\n // 更新时考虑显示、隐藏\n if (hasKey(cfg, 'visible')) {\n if (cfg.visible) {\n this.show();\n } else {\n this.hide();\n }\n }\n // 更新时考虑capture\n if (hasKey(cfg, 'capture')) {\n this.setCapture(cfg.capture);\n }\n };\n Component.prototype.getLayoutBBox = function () {\n return this.getBBox(); // 默认返回 getBBox,不同的组件内部单独实现\n };\n\n Component.prototype.getLocationType = function () {\n return this.get('locationType');\n };\n Component.prototype.getOffset = function () {\n return {\n offsetX: this.get('offsetX'),\n offsetY: this.get('offsetY')\n };\n };\n // 默认使用 update\n Component.prototype.setOffset = function (offsetX, offsetY) {\n this.update({\n offsetX: offsetX,\n offsetY: offsetY\n });\n };\n Component.prototype.setLocation = function (cfg) {\n var location = __assign({}, cfg);\n this.update(location);\n };\n // 实现 ILocation 接口的 getLocation\n Component.prototype.getLocation = function () {\n var _this = this;\n var location = {};\n var locationType = this.get('locationType');\n var fields = LOCATION_FIELD_MAP[locationType];\n each(fields, function (field) {\n location[field] = _this.get(field);\n });\n return location;\n };\n Component.prototype.isList = function () {\n return false;\n };\n Component.prototype.isSlider = function () {\n return false;\n };\n /**\n * @protected\n * 初始化,用于具体的组件继承\n */\n Component.prototype.init = function () {};\n // 将组件默认的配置项设置合并到传入的配置项\n Component.prototype.initCfg = function () {\n var _this = this;\n var defaultCfg = this.get('defaultCfg');\n each(defaultCfg, function (value, name) {\n var cfg = _this.get(name);\n if (isObject(cfg)) {\n var newCfg = deepMix({}, value, cfg);\n _this.set(name, newCfg);\n }\n });\n };\n return Component;\n}(Base);\nexport default Component;","import { __assign, __extends, __rest } from \"tslib\";\nimport { difference, each, isNil, keys, mix, pick } from '@antv/util';\nimport { propagationDelegate } from '../util/event';\nimport { applyMatrix2BBox, getMatrixByTranslate } from '../util/matrix';\nimport { getBBoxWithClip, updateClip } from '../util/util';\nimport Component from './component';\nvar STATUS_UPDATE = 'update_status';\nvar COPY_PROPERTIES = ['visible', 'tip', 'delegateObject']; // 更新对象时需要复制的属性\nvar COPY_PROPERTIES_EXCLUDES = ['container', 'group', 'shapesMap', 'isRegister', 'isUpdating', 'destroyed']; // 更新子组件时排除的属性\nvar GroupComponent = /** @class */function (_super) {\n __extends(GroupComponent, _super);\n function GroupComponent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n GroupComponent.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n container: null,\n /**\n * @private\n * 缓存图形的 Map\n */\n shapesMap: {},\n group: null,\n capture: true,\n /**\n * @private 组件或者图形是否允许注册\n * @type {false}\n */\n isRegister: false,\n /**\n * @private 是否正在更新\n * @type {false}\n */\n isUpdating: false,\n /**\n * @private\n * 是否初始状态,一旦 render,update 后,这个状态就变成 false, clear 后恢复\n */\n isInit: true\n });\n };\n GroupComponent.prototype.remove = function () {\n this.clear();\n var group = this.get('group');\n group.remove();\n };\n GroupComponent.prototype.clear = function () {\n var group = this.get('group');\n group.clear();\n this.set('shapesMap', {});\n this.clearOffScreenCache();\n this.set('isInit', true);\n };\n GroupComponent.prototype.getChildComponentById = function (id) {\n var group = this.getElementById(id);\n var inst = group && group.get('component');\n return inst;\n };\n GroupComponent.prototype.getElementById = function (id) {\n return this.get('shapesMap')[id];\n };\n GroupComponent.prototype.getElementByLocalId = function (localId) {\n var id = this.getElementId(localId);\n return this.getElementById(id);\n };\n GroupComponent.prototype.getElementsByName = function (name) {\n var rst = [];\n each(this.get('shapesMap'), function (elem) {\n if (elem.get('name') === name) {\n rst.push(elem);\n }\n });\n return rst;\n };\n GroupComponent.prototype.getContainer = function () {\n return this.get('container');\n };\n GroupComponent.prototype.updateInner = function (cfg) {\n // this.updateInner();\n // this.set('isUpdating', false);\n this.offScreenRender();\n if (this.get('updateAutoRender')) {\n this.render();\n }\n };\n GroupComponent.prototype.render = function () {\n var offScreenGroup = this.get('offScreenGroup');\n if (!offScreenGroup) {\n offScreenGroup = this.offScreenRender();\n }\n var group = this.get('group');\n this.updateElements(offScreenGroup, group);\n this.deleteElements();\n this.applyOffset();\n if (!this.get('eventInitted')) {\n this.initEvent();\n this.set('eventInitted', true);\n }\n this.set('isInit', false);\n };\n GroupComponent.prototype.show = function () {\n var group = this.get('group');\n group.show();\n this.set('visible', true);\n };\n GroupComponent.prototype.hide = function () {\n var group = this.get('group');\n group.hide();\n this.set('visible', false);\n };\n GroupComponent.prototype.setCapture = function (capture) {\n var group = this.get('group');\n group.set('capture', capture);\n this.set('capture', capture);\n };\n GroupComponent.prototype.destroy = function () {\n this.removeEvent();\n this.remove();\n _super.prototype.destroy.call(this);\n };\n GroupComponent.prototype.getBBox = function () {\n return this.get('group').getCanvasBBox();\n };\n GroupComponent.prototype.getLayoutBBox = function () {\n var group = this.get('group');\n // 防止被 clear 了,offScreenBBox 不存在\n var bbox = this.getInnerLayoutBBox();\n var matrix = group.getTotalMatrix();\n if (matrix) {\n bbox = applyMatrix2BBox(matrix, bbox);\n }\n return bbox; // 默认返回 getBBox,不同的组件内部单独实现\n };\n // 复写 on, off, emit 透传到 group\n GroupComponent.prototype.on = function (evt, callback, once) {\n var group = this.get('group');\n group.on(evt, callback, once);\n return this;\n };\n GroupComponent.prototype.off = function (evt, callback) {\n var group = this.get('group');\n group && group.off(evt, callback);\n return this;\n };\n GroupComponent.prototype.emit = function (eventName, eventObject) {\n var group = this.get('group');\n group.emit(eventName, eventObject);\n };\n GroupComponent.prototype.init = function () {\n _super.prototype.init.call(this);\n if (!this.get('group')) {\n this.initGroup();\n }\n this.offScreenRender(); // 绘制离屏 group\n };\n // 获取组件内部布局占的包围盒\n GroupComponent.prototype.getInnerLayoutBBox = function () {\n return this.get('offScreenBBox') || this.get('group').getBBox();\n };\n // 抛出委托对象\n GroupComponent.prototype.delegateEmit = function (eventName, eventObject) {\n var group = this.get('group');\n eventObject.target = group;\n group.emit(eventName, eventObject);\n propagationDelegate(group, eventName, eventObject);\n };\n // 创建离屏的 group ,不添加在 canvas 中\n GroupComponent.prototype.createOffScreenGroup = function () {\n var group = this.get('group');\n var GroupClass = group.getGroupBase(); // 获取分组的构造函数\n var newGroup = new GroupClass({\n delegateObject: this.getDelegateObject()\n });\n return newGroup;\n };\n // 应用 offset\n GroupComponent.prototype.applyOffset = function () {\n var offsetX = this.get('offsetX');\n var offsetY = this.get('offsetY');\n this.moveElementTo(this.get('group'), {\n x: offsetX,\n y: offsetY\n });\n };\n GroupComponent.prototype.initGroup = function () {\n var container = this.get('container');\n this.set('group', container.addGroup({\n id: this.get('id'),\n name: this.get('name'),\n capture: this.get('capture'),\n visible: this.get('visible'),\n isComponent: true,\n component: this,\n delegateObject: this.getDelegateObject()\n }));\n };\n // 离屏渲染\n GroupComponent.prototype.offScreenRender = function () {\n this.clearOffScreenCache();\n var offScreenGroup = this.createOffScreenGroup();\n this.renderInner(offScreenGroup);\n this.set('offScreenGroup', offScreenGroup);\n // 包含包围盒的 bbox\n this.set('offScreenBBox', getBBoxWithClip(offScreenGroup));\n return offScreenGroup;\n };\n /**\n * @protected\n * 在组件上添加分组,主要解决 isReigeter 的问题\n * @param {IGroup} parent 父元素\n * @param {object} cfg 分组的配置项\n */\n GroupComponent.prototype.addGroup = function (parent, cfg) {\n this.appendDelegateObject(parent, cfg);\n var group = parent.addGroup(cfg);\n if (this.get('isRegister')) {\n this.registerElement(group);\n }\n return group;\n };\n /**\n * @protected\n * 在组件上添加图形,主要解决 isReigeter 的问题\n * @param {IGroup} parent 父元素\n * @param {object} cfg 分组的配置项\n */\n GroupComponent.prototype.addShape = function (parent, cfg) {\n this.appendDelegateObject(parent, cfg);\n var shape = parent.addShape(cfg);\n if (this.get('isRegister')) {\n this.registerElement(shape);\n }\n return shape;\n };\n /**\n * 在组件上添加子组件\n *\n * @param parent 父元素\n * @param cfg 子组件配置项\n */\n GroupComponent.prototype.addComponent = function (parent, cfg) {\n var id = cfg.id,\n Ctor = cfg.component,\n restCfg = __rest(cfg, [\"id\", \"component\"]);\n // @ts-ignore\n var inst = new Ctor(__assign(__assign({}, restCfg), {\n id: id,\n container: parent,\n updateAutoRender: this.get('updateAutoRender')\n }));\n inst.init();\n inst.render();\n if (this.get('isRegister')) {\n this.registerElement(inst.get('group'));\n }\n return inst;\n };\n GroupComponent.prototype.initEvent = function () {};\n GroupComponent.prototype.removeEvent = function () {\n var group = this.get('group');\n group.off();\n };\n GroupComponent.prototype.getElementId = function (localId) {\n var id = this.get('id'); // 组件的 Id\n var name = this.get('name'); // 组件的名称\n return id + \"-\" + name + \"-\" + localId;\n };\n GroupComponent.prototype.registerElement = function (element) {\n var id = element.get('id');\n this.get('shapesMap')[id] = element;\n };\n GroupComponent.prototype.unregisterElement = function (element) {\n var id = element.get('id');\n delete this.get('shapesMap')[id];\n };\n // 移动元素\n GroupComponent.prototype.moveElementTo = function (element, point) {\n var matrix = getMatrixByTranslate(point);\n element.attr('matrix', matrix);\n };\n /**\n * 图形元素新出现时的动画,默认图形从透明度 0 到当前透明度\n * @protected\n * @param {string} elmentName 图形元素名称\n * @param {IElement} newElement 新的图形元素\n * @param {object} animateCfg 动画的配置项\n */\n GroupComponent.prototype.addAnimation = function (elmentName, newElement, animateCfg) {\n // 缓存透明度\n var originOpacity = newElement.attr('opacity');\n if (isNil(originOpacity)) {\n originOpacity = 1;\n }\n newElement.attr('opacity', 0);\n newElement.animate({\n opacity: originOpacity\n }, animateCfg);\n };\n /**\n * 图形元素新出现时的动画,默认图形从透明度 0 到当前透明度\n * @protected\n * @param {string} elmentName 图形元素名称\n * @param {IElement} originElement 要删除的图形元素\n * @param {object} animateCfg 动画的配置项\n */\n GroupComponent.prototype.removeAnimation = function (elementName, originElement, animateCfg) {\n originElement.animate({\n opacity: 0\n }, animateCfg);\n };\n /**\n * 图形元素的更新动画\n * @param {string} elmentName 图形元素名称\n * @param {IElement} originElement 现有的图形元素\n * @param {object} newAttrs 新的图形元素\n * @param {object} animateCfg 动画的配置项\n */\n GroupComponent.prototype.updateAnimation = function (elementName, originElement, newAttrs, animateCfg) {\n originElement.animate(newAttrs, animateCfg);\n };\n // 更新组件的图形\n GroupComponent.prototype.updateElements = function (newGroup, originGroup) {\n var _this = this;\n var animate = this.get('animate');\n var animateOption = this.get('animateOption');\n var children = newGroup.getChildren().slice(0); // 创建一个新数组,防止添加到 originGroup 时, children 变动\n var preElement; // 前面已经匹配到的图形元素,用于\n each(children, function (element) {\n var elementId = element.get('id');\n var originElement = _this.getElementById(elementId);\n var elementName = element.get('name');\n if (originElement) {\n if (element.get('isComponent')) {\n // 嵌套子组件更新\n var childComponent = element.get('component');\n var origChildComponent = originElement.get('component');\n var newCfg = pick(childComponent.cfg, difference(keys(childComponent.cfg), COPY_PROPERTIES_EXCLUDES));\n origChildComponent.update(newCfg);\n originElement.set(STATUS_UPDATE, 'update');\n } else {\n var replaceAttrs = _this.getReplaceAttrs(originElement, element);\n // 更新\n if (animate && animateOption.update) {\n // 没有动画\n _this.updateAnimation(elementName, originElement, replaceAttrs, animateOption.update);\n } else {\n // originElement.attrs = replaceAttrs; // 直接替换\n originElement.attr(replaceAttrs);\n }\n // 如果是分组,则继续执行\n if (element.isGroup()) {\n _this.updateElements(element, originElement);\n }\n // 复制属性\n each(COPY_PROPERTIES, function (name) {\n originElement.set(name, element.get(name));\n });\n updateClip(originElement, element);\n preElement = originElement;\n // 执行完更新后设置状态位为更新\n originElement.set(STATUS_UPDATE, 'update');\n }\n } else {\n // 没有对应的图形,则插入当前图形\n originGroup.add(element); // 应该在 group 加个 insertAt 的方法\n var siblings = originGroup.getChildren(); // 兄弟节点\n siblings.splice(siblings.length - 1, 1); // 先从数组中移除,然后放到合适的位置\n if (preElement) {\n // 前面已经有更新的图形或者插入的图形,则在这个图形后面插入\n var index = siblings.indexOf(preElement);\n siblings.splice(index + 1, 0, element); // 在已经更新的图形元素后面插入\n } else {\n siblings.unshift(element);\n }\n _this.registerElement(element); // 注册节点\n element.set(STATUS_UPDATE, 'add'); // 执行完更新后设置状态位为添加\n if (element.get('isComponent')) {\n // 直接新增子组件container属性,实例不变\n var childComponent = element.get('component');\n childComponent.set('container', originGroup);\n } else if (element.isGroup()) {\n // 如果元素是新增加的元素,则遍历注册所有的子节点\n _this.registerNewGroup(element);\n }\n preElement = element;\n if (animate) {\n var animateCfg = _this.get('isInit') ? animateOption.appear : animateOption.enter;\n if (animateCfg) {\n _this.addAnimation(elementName, element, animateCfg);\n }\n }\n }\n });\n };\n GroupComponent.prototype.clearUpdateStatus = function (group) {\n var children = group.getChildren();\n each(children, function (el) {\n el.set(STATUS_UPDATE, null); // 清理掉更新状态\n });\n };\n // 清理离屏缓存\n GroupComponent.prototype.clearOffScreenCache = function () {\n var offScreenGroup = this.get('offScreenGroup');\n if (offScreenGroup) {\n // 销毁原先的离线 Group\n offScreenGroup.destroy();\n }\n this.set('offScreenGroup', null);\n this.set('offScreenBBox', null);\n };\n // private updateInner() {\n // const group = this.get('group');\n // const newGroup = this.createOffScreenGroup();\n // this.renderInner(newGroup);\n // this.applyOffset();\n // this.updateElements(newGroup, group);\n // this.deleteElements();\n // newGroup.destroy(); // 销毁虚拟分组\n // }\n // 获取发生委托时的对象,在事件中抛出\n GroupComponent.prototype.getDelegateObject = function () {\n var _a;\n var name = this.get('name');\n var delegateObject = (_a = {}, _a[name] = this, _a.component = this, _a);\n return delegateObject;\n };\n // 附加委托信息,用于事件\n GroupComponent.prototype.appendDelegateObject = function (parent, cfg) {\n var parentObject = parent.get('delegateObject');\n if (!cfg.delegateObject) {\n cfg.delegateObject = {};\n }\n mix(cfg.delegateObject, parentObject); // 将父元素上的委托信息复制到自身\n };\n // 获取需要替换的属性,如果原先图形元素存在,而新图形不存在,则设置 undefined\n GroupComponent.prototype.getReplaceAttrs = function (originElement, newElement) {\n var originAttrs = originElement.attr();\n var newAttrs = newElement.attr();\n each(originAttrs, function (v, k) {\n if (newAttrs[k] === undefined) {\n newAttrs[k] = undefined;\n }\n });\n return newAttrs;\n };\n GroupComponent.prototype.registerNewGroup = function (group) {\n var _this = this;\n var children = group.getChildren();\n each(children, function (element) {\n _this.registerElement(element); // 注册节点\n element.set(STATUS_UPDATE, 'add'); // 执行完更新后设置状态位为添加\n if (element.isGroup()) {\n _this.registerNewGroup(element);\n }\n });\n };\n // 移除多余的元素\n GroupComponent.prototype.deleteElements = function () {\n var _this = this;\n var shapesMap = this.get('shapesMap');\n var deleteArray = [];\n // 遍历获取需要删除的图形元素\n each(shapesMap, function (element, id) {\n if (!element.get(STATUS_UPDATE) || element.destroyed) {\n deleteArray.push([id, element]);\n } else {\n element.set(STATUS_UPDATE, null); // 清理掉更新状态\n }\n });\n\n var animate = this.get('animate');\n var animateOption = this.get('animateOption');\n // 删除图形元素\n each(deleteArray, function (item) {\n var id = item[0],\n element = item[1];\n if (!element.destroyed) {\n var elementName = element.get('name');\n if (animate && animateOption.leave) {\n // 需要动画结束时移除图形\n var callbackAnimCfg = mix({\n callback: function callback() {\n _this.removeElement(element);\n }\n }, animateOption.leave);\n _this.removeAnimation(elementName, element, callbackAnimCfg);\n } else {\n _this.removeElement(element);\n }\n }\n delete shapesMap[id]; // 从缓存中移除\n });\n };\n\n GroupComponent.prototype.removeElement = function (element) {\n if (element.get('isGroup')) {\n var component = element.get('component');\n if (component) {\n component.destroy();\n }\n }\n element.remove();\n };\n return GroupComponent;\n}(Component);\nexport default GroupComponent;","var ELLIPSIS_CODE = \"\\u2026\";\n/** 获取字符串长度 */\nexport function strLen(str) {\n var len = 0;\n for (var i = 0; i < str.length; i++) {\n len += charAtLength(str, i);\n }\n return len;\n}\n/** 是否属于ASCII编码范畴 */\nexport function charAtLength(str, i) {\n if (str.charCodeAt(i) > 0 && str.charCodeAt(i) < 128) {\n return 1;\n } else {\n return 2;\n }\n}\n/** 文本省略 */\nexport function ellipsisString(str, reseveLength, position) {\n if (position === void 0) {\n position = 'tail';\n }\n var count = str.length;\n var rst = '';\n if (position === 'tail') {\n for (var i = 0, index = 0; i < reseveLength;) {\n var charLength = charAtLength(str, index);\n if (i + charLength <= reseveLength) {\n rst += str[index];\n i += charAtLength(str, index);\n index++;\n } else {\n break;\n }\n }\n rst += ELLIPSIS_CODE;\n } else if (position === 'head') {\n for (var i = 0, index = count - 1; i < reseveLength;) {\n var charLength = charAtLength(str, index);\n if (i + charLength <= reseveLength) {\n rst += str[index];\n i += charAtLength(str, index);\n index--;\n } else {\n break;\n }\n }\n rst = ELLIPSIS_CODE + rst;\n } else {\n var startStr = '';\n var endStr = '';\n for (var i = 0, startIndex = 0, endIndex = count - 1; i < reseveLength;) {\n var startCodeLen = charAtLength(str, startIndex);\n var hasAdd = false; // 设置标志位,防止头尾都没有附加字符\n if (startCodeLen + i <= reseveLength) {\n startStr += str[startIndex];\n startIndex++;\n i += startCodeLen;\n hasAdd = true;\n }\n var endCodeLen = charAtLength(str, endIndex);\n if (endCodeLen + i <= reseveLength) {\n endStr = str[endIndex] + endStr;\n i += endCodeLen;\n endIndex--;\n hasAdd = true;\n }\n if (!hasAdd) {\n // 如果都没有增加字符,说明都不适合则中断\n break;\n }\n }\n rst = startStr + ELLIPSIS_CODE + endStr;\n }\n return rst;\n}","import { each, isNil, getEllipsisText, pick } from '@antv/util';\nimport { ellipsisString, strLen } from './text';\nvar ELLIPSIS_CODE = \"\\u2026\";\nvar ELLIPSIS_CODE_LENGTH = 2; // 省略号的长度\n/** 大数据量阈值 */\nvar OPTIMIZE_THRESHOLD = 400;\n/**\n * 针对大数据量做优化的 getMaxLabelWidth,做法不是直接去比较每一个 label 的最大宽度\n * 而是先通过比较每个 label 每个的字符串的长度,这里区分了下中英文字符\n * 最终是去字符串最“长”的那个 label 的宽度。\n * @param labels\n */\nfunction getMaxLabelWidthOptimized(labels) {\n var texts = labels.map(function (label) {\n var text = label.attr('text');\n return isNil(text) ? '' : \"\" + text;\n });\n var maxLen = 0;\n var maxIdx = 0;\n for (var i = 0; i < texts.length; i += 1) {\n var len = 0;\n for (var j = 0; j <= texts[i].length; j += 1) {\n var code = texts[i].charCodeAt(j);\n if (code >= 19968 && code <= 40869) {\n len += 2;\n } else {\n len += 1;\n }\n }\n if (len > maxLen) {\n maxLen = len;\n maxIdx = i;\n }\n }\n return labels[maxIdx].getBBox().width;\n}\n/** 获取最长的 label */\nexport function getMaxLabelWidth(labels) {\n if (labels.length > OPTIMIZE_THRESHOLD) {\n return getMaxLabelWidthOptimized(labels);\n }\n var max = 0;\n each(labels, function (label) {\n var bbox = label.getBBox();\n var width = bbox.width;\n if (max < width) {\n max = width;\n }\n });\n return max;\n}\n/** 获取label长度 */\nexport function getLabelLength(isVertical, label) {\n var bbox = label.getCanvasBBox();\n return isVertical ? bbox.width : bbox.height;\n}\n/* label长度是否超过约束值 */\nexport function testLabel(label, limitLength) {\n return label.getBBox().width < limitLength;\n}\n/** 处理 text shape 的自动省略 */\nexport function ellipsisLabel(isVertical, label, limitLength, position) {\n var _a;\n if (position === void 0) {\n position = 'tail';\n }\n var text = (_a = label.attr('text')) !== null && _a !== void 0 ? _a : ''; // 避免出现null、undefined\n if (position === 'tail') {\n // component 里的缩略处理做得很糟糕,文字长度测算完全不准确\n // 这里暂时只对 tail 做处理\n var font = pick(label.attr(), ['fontSize', 'fontFamily', 'fontWeight', 'fontStyle', 'fontVariant']);\n var ellipsisText = getEllipsisText(text, limitLength, font, '…');\n if (text !== ellipsisText) {\n label.attr('text', ellipsisText);\n label.set('tip', text);\n return true;\n }\n label.set('tip', null);\n return false;\n }\n var labelLength = getLabelLength(isVertical, label);\n var codeLength = strLen(text);\n var ellipsisFlag = false;\n if (limitLength < labelLength) {\n var reserveLength = Math.floor(limitLength / labelLength * codeLength) - ELLIPSIS_CODE_LENGTH; // 计算出来的应该保存的长度\n var newText = void 0;\n if (reserveLength >= 0) {\n newText = ellipsisString(text, reserveLength, position);\n } else {\n newText = ELLIPSIS_CODE;\n }\n if (newText) {\n label.attr('text', newText);\n ellipsisFlag = true;\n }\n }\n if (ellipsisFlag) {\n label.set('tip', text);\n } else {\n label.set('tip', null);\n }\n return ellipsisFlag;\n}","import { __assign } from \"tslib\";\nimport { get } from '@antv/util';\nimport { ellipsisLabel } from './label';\nimport { applyRotate, applyTranslate } from './matrix';\nimport { formatPadding } from './util';\nexport function renderTag(container, tagCfg) {\n var x = tagCfg.x,\n y = tagCfg.y,\n content = tagCfg.content,\n style = tagCfg.style,\n id = tagCfg.id,\n name = tagCfg.name,\n rotate = tagCfg.rotate,\n maxLength = tagCfg.maxLength,\n autoEllipsis = tagCfg.autoEllipsis,\n isVertical = tagCfg.isVertical,\n ellipsisPosition = tagCfg.ellipsisPosition,\n background = tagCfg.background;\n var tagGroup = container.addGroup({\n id: id + \"-group\",\n name: name + \"-group\",\n attrs: {\n x: x,\n y: y\n }\n });\n // Text shape\n var text = tagGroup.addShape({\n type: 'text',\n id: id,\n name: name,\n attrs: __assign({\n x: 0,\n y: 0,\n text: content\n }, style)\n });\n // maxLength 应包含 background 中的 padding 值\n var padding = formatPadding(get(background, 'padding', 0));\n if (maxLength && autoEllipsis) {\n var maxTextLength = maxLength - (padding[1] + padding[3]);\n // 超出自动省略\n ellipsisLabel(!isVertical, text, maxTextLength, ellipsisPosition);\n }\n if (background) {\n // 渲染文本背景\n var backgroundStyle = get(background, 'style', {});\n var _a = text.getCanvasBBox(),\n minX = _a.minX,\n minY = _a.minY,\n width = _a.width,\n height = _a.height;\n var tagBg = tagGroup.addShape('rect', {\n id: id + \"-bg\",\n name: id + \"-bg\",\n attrs: __assign({\n x: minX - padding[3],\n y: minY - padding[0],\n width: width + padding[1] + padding[3],\n height: height + padding[0] + padding[2]\n }, backgroundStyle)\n });\n tagBg.toBack();\n }\n applyTranslate(tagGroup, x, y);\n applyRotate(tagGroup, rotate, x, y);\n}","export default {\n fontFamily: \"\\n BlinkMacSystemFont, \\\"Segoe UI\\\", Roboto,\\\"Helvetica Neue\\\",\\n Helvetica, \\\"PingFang SC\\\", \\\"Hiragino Sans GB\\\", \\\"Microsoft YaHei\\\",\\n SimSun, \\\"sans-serif\\\"\",\n textColor: '#2C3542',\n activeTextColor: '#333333',\n uncheckedColor: '#D8D8D8',\n lineColor: '#416180',\n regionColor: '#CCD7EB',\n verticalAxisRotate: -Math.PI / 4,\n horizontalAxisRotate: Math.PI / 4,\n // descriptionIcon theme\n descriptionIconStroke: '#fff',\n descriptionIconFill: 'rgba(58, 73, 101, .25)'\n};","import { __assign, __extends } from \"tslib\";\nimport { isNumber, isString } from '@antv/util';\nimport GroupComponent from '../abstract/group-component';\nimport { renderTag } from '../util/graphic';\nimport Theme from '../util/theme';\nimport { getValueByPercent } from '../util/util';\nvar LineAnnotation = /** @class */function (_super) {\n __extends(LineAnnotation, _super);\n function LineAnnotation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @protected\n * 默认的配置项\n * @returns {object} 默认的配置项\n */\n LineAnnotation.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n name: 'annotation',\n type: 'line',\n locationType: 'region',\n start: null,\n end: null,\n style: {},\n text: null,\n defaultCfg: {\n style: {\n fill: Theme.textColor,\n fontSize: 12,\n textAlign: 'center',\n textBaseline: 'bottom',\n fontFamily: Theme.fontFamily\n },\n text: {\n position: 'center',\n autoRotate: true,\n content: null,\n offsetX: 0,\n offsetY: 0,\n style: {\n stroke: Theme.lineColor,\n lineWidth: 1\n }\n }\n }\n });\n };\n LineAnnotation.prototype.renderInner = function (group) {\n this.renderLine(group);\n if (this.get('text')) {\n this.renderLabel(group);\n }\n };\n // 绘制线\n LineAnnotation.prototype.renderLine = function (group) {\n var start = this.get('start');\n var end = this.get('end');\n var style = this.get('style');\n this.addShape(group, {\n type: 'line',\n id: this.getElementId('line'),\n name: 'annotation-line',\n attrs: __assign({\n x1: start.x,\n y1: start.y,\n x2: end.x,\n y2: end.y\n }, style)\n });\n };\n // 获取 label 的位置\n LineAnnotation.prototype.getLabelPoint = function (start, end, position) {\n var percent;\n if (position === 'start') {\n percent = 0;\n } else if (position === 'center') {\n percent = 0.5;\n } else if (isString(position) && position.indexOf('%') !== -1) {\n percent = parseInt(position, 10) / 100;\n } else if (isNumber(position)) {\n percent = position;\n } else {\n percent = 1;\n }\n if (percent > 1 || percent < 0) {\n percent = 1;\n }\n return {\n x: getValueByPercent(start.x, end.x, percent),\n y: getValueByPercent(start.y, end.y, percent)\n };\n };\n // 绘制 label\n LineAnnotation.prototype.renderLabel = function (group) {\n var text = this.get('text');\n var start = this.get('start');\n var end = this.get('end');\n var position = text.position,\n content = text.content,\n style = text.style,\n offsetX = text.offsetX,\n offsetY = text.offsetY,\n autoRotate = text.autoRotate,\n maxLength = text.maxLength,\n autoEllipsis = text.autoEllipsis,\n ellipsisPosition = text.ellipsisPosition,\n background = text.background,\n _a = text.isVertical,\n isVertical = _a === void 0 ? false : _a;\n var point = this.getLabelPoint(start, end, position);\n var x = point.x + offsetX;\n var y = point.y + offsetY;\n var cfg = {\n id: this.getElementId('line-text'),\n name: 'annotation-line-text',\n x: x,\n y: y,\n content: content,\n style: style,\n maxLength: maxLength,\n autoEllipsis: autoEllipsis,\n ellipsisPosition: ellipsisPosition,\n background: background,\n isVertical: isVertical\n };\n // 如果自动旋转\n if (autoRotate) {\n var vector = [end.x - start.x, end.y - start.y];\n cfg.rotate = Math.atan2(vector[1], vector[0]);\n }\n renderTag(group, cfg);\n };\n return LineAnnotation;\n}(GroupComponent);\nexport default LineAnnotation;","import { __assign, __extends } from \"tslib\";\nimport GroupComponent from '../abstract/group-component';\nimport { renderTag } from '../util/graphic';\nimport { applyRotate, applyTranslate } from '../util/matrix';\nimport Theme from '../util/theme';\nvar TextAnnotation = /** @class */function (_super) {\n __extends(TextAnnotation, _super);\n function TextAnnotation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @protected\n * 默认的配置项\n * @returns {object} 默认的配置项\n */\n TextAnnotation.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n name: 'annotation',\n type: 'text',\n locationType: 'point',\n x: 0,\n y: 0,\n content: '',\n rotate: null,\n style: {},\n background: null,\n maxLength: null,\n autoEllipsis: true,\n isVertical: false,\n ellipsisPosition: 'tail',\n defaultCfg: {\n style: {\n fill: Theme.textColor,\n fontSize: 12,\n textAlign: 'center',\n textBaseline: 'middle',\n fontFamily: Theme.fontFamily\n }\n }\n });\n };\n // 复写 setLocation 方法,不需要重新创建 text\n TextAnnotation.prototype.setLocation = function (location) {\n this.set('x', location.x);\n this.set('y', location.y);\n this.resetLocation();\n };\n TextAnnotation.prototype.renderInner = function (group) {\n var _a = this.getLocation(),\n x = _a.x,\n y = _a.y;\n var content = this.get('content');\n var style = this.get('style');\n var id = this.getElementId('text');\n var name = this.get('name') + \"-text\";\n var maxLength = this.get('maxLength');\n var autoEllipsis = this.get('autoEllipsis');\n var isVertical = this.get('isVertical');\n var ellipsisPosition = this.get('ellipsisPosition');\n var background = this.get('background');\n var rotate = this.get('rotate');\n var cfg = {\n id: id,\n name: name,\n x: x,\n y: y,\n content: content,\n style: style,\n maxLength: maxLength,\n autoEllipsis: autoEllipsis,\n isVertical: isVertical,\n ellipsisPosition: ellipsisPosition,\n background: background,\n rotate: rotate\n };\n renderTag(group, cfg);\n };\n TextAnnotation.prototype.resetLocation = function () {\n var textGroup = this.getElementByLocalId('text-group');\n if (textGroup) {\n var _a = this.getLocation(),\n x = _a.x,\n y = _a.y;\n var rotate = this.get('rotate');\n applyTranslate(textGroup, x, y);\n applyRotate(textGroup, rotate, x, y);\n }\n };\n return TextAnnotation;\n}(GroupComponent);\nexport default TextAnnotation;","import { __assign, __extends } from \"tslib\";\nimport GroupComponent from '../abstract/group-component';\nimport { getCirclePoint } from '../util/util';\nvar ArcAnnotation = /** @class */function (_super) {\n __extends(ArcAnnotation, _super);\n function ArcAnnotation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @protected\n * 默认的配置项\n * @returns {object} 默认的配置项\n */\n ArcAnnotation.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n name: 'annotation',\n type: 'arc',\n locationType: 'circle',\n center: null,\n radius: 100,\n startAngle: -Math.PI / 2,\n endAngle: Math.PI * 3 / 2,\n style: {\n stroke: '#999',\n lineWidth: 1\n }\n });\n };\n ArcAnnotation.prototype.renderInner = function (group) {\n this.renderArc(group);\n };\n ArcAnnotation.prototype.getArcPath = function () {\n var _a = this.getLocation(),\n center = _a.center,\n radius = _a.radius,\n startAngle = _a.startAngle,\n endAngle = _a.endAngle;\n var startPoint = getCirclePoint(center, radius, startAngle);\n var endPoint = getCirclePoint(center, radius, endAngle);\n var largeFlag = endAngle - startAngle > Math.PI ? 1 : 0;\n var path = [['M', startPoint.x, startPoint.y]];\n if (endAngle - startAngle === Math.PI * 2) {\n // 整个圆是分割成两个圆\n var middlePoint = getCirclePoint(center, radius, startAngle + Math.PI);\n path.push(['A', radius, radius, 0, largeFlag, 1, middlePoint.x, middlePoint.y]);\n path.push(['A', radius, radius, 0, largeFlag, 1, endPoint.x, endPoint.y]);\n } else {\n path.push(['A', radius, radius, 0, largeFlag, 1, endPoint.x, endPoint.y]);\n }\n return path;\n };\n // 绘制 arc\n ArcAnnotation.prototype.renderArc = function (group) {\n // 也可以 通过 get('center') 类似的方式逐个获取\n var path = this.getArcPath();\n var style = this.get('style');\n this.addShape(group, {\n type: 'path',\n id: this.getElementId('arc'),\n name: 'annotation-arc',\n attrs: __assign({\n path: path\n }, style)\n });\n };\n return ArcAnnotation;\n}(GroupComponent);\nexport default ArcAnnotation;","import { __assign, __extends } from \"tslib\";\nimport GroupComponent from '../abstract/group-component';\nimport Theme from '../util/theme';\nimport { regionToBBox } from '../util/util';\nvar RegionAnnotation = /** @class */function (_super) {\n __extends(RegionAnnotation, _super);\n function RegionAnnotation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @protected\n * 默认的配置项\n * @returns {object} 默认的配置项\n */\n RegionAnnotation.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n name: 'annotation',\n type: 'region',\n locationType: 'region',\n start: null,\n end: null,\n style: {},\n defaultCfg: {\n style: {\n lineWidth: 0,\n fill: Theme.regionColor,\n opacity: 0.4\n }\n }\n });\n };\n RegionAnnotation.prototype.renderInner = function (group) {\n this.renderRegion(group);\n };\n RegionAnnotation.prototype.renderRegion = function (group) {\n var start = this.get('start');\n var end = this.get('end');\n var style = this.get('style');\n var bbox = regionToBBox({\n start: start,\n end: end\n });\n this.addShape(group, {\n type: 'rect',\n id: this.getElementId('region'),\n name: 'annotation-region',\n attrs: __assign({\n x: bbox.x,\n y: bbox.y,\n width: bbox.width,\n height: bbox.height\n }, style)\n });\n };\n return RegionAnnotation;\n}(GroupComponent);\nexport default RegionAnnotation;","import { __assign, __extends } from \"tslib\";\nimport GroupComponent from '../abstract/group-component';\nimport { regionToBBox } from '../util/util';\nvar ImageAnnotation = /** @class */function (_super) {\n __extends(ImageAnnotation, _super);\n function ImageAnnotation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @protected\n * 默认的配置项\n * @returns {object} 默认的配置项\n */\n ImageAnnotation.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n name: 'annotation',\n type: 'image',\n locationType: 'region',\n start: null,\n end: null,\n src: null,\n style: {}\n });\n };\n ImageAnnotation.prototype.renderInner = function (group) {\n this.renderImage(group);\n };\n ImageAnnotation.prototype.getImageAttrs = function () {\n var start = this.get('start');\n var end = this.get('end');\n var style = this.get('style');\n var bbox = regionToBBox({\n start: start,\n end: end\n });\n var src = this.get('src');\n return __assign({\n x: bbox.x,\n y: bbox.y,\n img: src,\n width: bbox.width,\n height: bbox.height\n }, style);\n };\n // 绘制图片\n ImageAnnotation.prototype.renderImage = function (group) {\n this.addShape(group, {\n type: 'image',\n id: this.getElementId('image'),\n name: 'annotation-image',\n attrs: this.getImageAttrs()\n });\n };\n return ImageAnnotation;\n}(GroupComponent);\nexport default ImageAnnotation;","import { __assign, __extends, __rest } from \"tslib\";\nimport { get } from '@antv/util';\nimport GroupComponent from '../abstract/group-component';\nimport { renderTag } from '../util/graphic';\nimport { applyTranslate } from '../util/matrix';\nimport Theme from '../util/theme';\nvar DataMarkerAnnotation = /** @class */function (_super) {\n __extends(DataMarkerAnnotation, _super);\n function DataMarkerAnnotation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * 默认的配置项\n * @returns {object} 默认的配置项\n */\n DataMarkerAnnotation.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n name: 'annotation',\n type: 'dataMarker',\n locationType: 'point',\n x: 0,\n y: 0,\n point: {},\n line: {},\n text: {},\n direction: 'upward',\n autoAdjust: true,\n coordinateBBox: null,\n defaultCfg: {\n point: {\n display: true,\n style: {\n r: 3,\n fill: '#FFFFFF',\n stroke: '#1890FF',\n lineWidth: 2\n }\n },\n line: {\n display: true,\n length: 20,\n style: {\n stroke: Theme.lineColor,\n lineWidth: 1\n }\n },\n text: {\n content: '',\n display: true,\n style: {\n fill: Theme.textColor,\n opacity: 0.65,\n fontSize: 12,\n textAlign: 'start',\n fontFamily: Theme.fontFamily\n }\n }\n }\n });\n };\n DataMarkerAnnotation.prototype.renderInner = function (group) {\n if (get(this.get('line'), 'display')) {\n this.renderLine(group);\n }\n if (get(this.get('text'), 'display')) {\n this.renderText(group);\n }\n if (get(this.get('point'), 'display')) {\n this.renderPoint(group);\n }\n if (this.get('autoAdjust')) {\n this.autoAdjust(group);\n }\n };\n DataMarkerAnnotation.prototype.applyOffset = function () {\n this.moveElementTo(this.get('group'), {\n x: this.get('x') + this.get('offsetX'),\n y: this.get('y') + this.get('offsetY')\n });\n };\n DataMarkerAnnotation.prototype.renderPoint = function (group) {\n var point = this.getShapeAttrs().point;\n this.addShape(group, {\n type: 'circle',\n id: this.getElementId('point'),\n name: 'annotation-point',\n attrs: point\n });\n };\n DataMarkerAnnotation.prototype.renderLine = function (group) {\n var line = this.getShapeAttrs().line;\n this.addShape(group, {\n type: 'path',\n id: this.getElementId('line'),\n name: 'annotation-line',\n attrs: line\n });\n };\n DataMarkerAnnotation.prototype.renderText = function (group) {\n var textAttrs = this.getShapeAttrs().text;\n var x = textAttrs.x,\n y = textAttrs.y,\n text = textAttrs.text,\n style = __rest(textAttrs, [\"x\", \"y\", \"text\"]);\n var _a = this.get('text'),\n background = _a.background,\n maxLength = _a.maxLength,\n autoEllipsis = _a.autoEllipsis,\n isVertival = _a.isVertival,\n ellipsisPosition = _a.ellipsisPosition;\n var tagCfg = {\n x: x,\n y: y,\n id: this.getElementId('text'),\n name: 'annotation-text',\n content: text,\n style: style,\n background: background,\n maxLength: maxLength,\n autoEllipsis: autoEllipsis,\n isVertival: isVertival,\n ellipsisPosition: ellipsisPosition\n };\n renderTag(group, tagCfg);\n };\n DataMarkerAnnotation.prototype.autoAdjust = function (group) {\n var direction = this.get('direction');\n var x = this.get('x');\n var y = this.get('y');\n var lineLength = get(this.get('line'), 'length', 0);\n var coordinateBBox = this.get('coordinateBBox');\n var _a = group.getBBox(),\n minX = _a.minX,\n maxX = _a.maxX,\n minY = _a.minY,\n maxY = _a.maxY;\n var textGroup = group.findById(this.getElementId('text-group'));\n var textShape = group.findById(this.getElementId('text'));\n var lineShape = group.findById(this.getElementId('line'));\n if (!coordinateBBox) {\n return;\n }\n if (textGroup) {\n var translateX = textGroup.attr('x'),\n translateY = textGroup.attr('y');\n var _b = textShape.getCanvasBBox(),\n width = _b.width,\n height = _b.height;\n var xFactor = 0,\n yFactor = 0;\n if (x + minX <= coordinateBBox.minX) {\n // 左侧超出\n if (direction === 'leftward') {\n xFactor = 1;\n } else {\n var overflow = coordinateBBox.minX - (x + minX);\n translateX = textGroup.attr('x') + overflow;\n }\n } else if (x + maxX >= coordinateBBox.maxX) {\n // 右侧超出\n if (direction === 'rightward') {\n xFactor = -1;\n } else {\n var overflow = x + maxX - coordinateBBox.maxX;\n translateX = textGroup.attr('x') - overflow;\n }\n }\n if (!!xFactor) {\n if (lineShape) {\n lineShape.attr('path', [['M', 0, 0], ['L', lineLength * xFactor, 0]]);\n }\n translateX = (lineLength + 2 + width) * xFactor;\n }\n if (y + minY <= coordinateBBox.minY) {\n // 上方超出\n if (direction === 'upward') {\n yFactor = 1;\n } else {\n var overflow = coordinateBBox.minY - (y + minY);\n translateY = textGroup.attr('y') + overflow;\n }\n } else if (y + maxY >= coordinateBBox.maxY) {\n // 下方超出\n if (direction === 'downward') {\n yFactor = -1;\n } else {\n var overflow = y + maxY - coordinateBBox.maxY;\n translateY = textGroup.attr('y') - overflow;\n }\n }\n if (!!yFactor) {\n if (lineShape) {\n lineShape.attr('path', [['M', 0, 0], ['L', 0, lineLength * yFactor]]);\n }\n translateY = (lineLength + 2 + height) * yFactor;\n }\n if (translateX !== textGroup.attr('x') || translateY !== textGroup.attr('y')) applyTranslate(textGroup, translateX, translateY);\n }\n };\n DataMarkerAnnotation.prototype.getShapeAttrs = function () {\n var lineDisplay = get(this.get('line'), 'display');\n var pointStyle = get(this.get('point'), 'style', {});\n var lineStyle = get(this.get('line'), 'style', {});\n var textStyle = get(this.get('text'), 'style', {});\n var direction = this.get('direction');\n var lineLength = lineDisplay ? get(this.get('line'), 'length', 0) : 0;\n var xFactor = 0,\n yFactor = 0;\n var textBaseline = 'top',\n textAlign = 'start';\n switch (direction) {\n case 'upward':\n yFactor = -1;\n textBaseline = 'bottom';\n break;\n case 'downward':\n yFactor = 1;\n textBaseline = 'top';\n break;\n case 'leftward':\n xFactor = -1;\n textAlign = 'end';\n break;\n case 'rightward':\n xFactor = 1;\n textAlign = 'start';\n break;\n }\n return {\n point: __assign({\n x: 0,\n y: 0\n }, pointStyle),\n line: __assign({\n path: [['M', 0, 0], ['L', lineLength * xFactor, lineLength * yFactor]]\n }, lineStyle),\n text: __assign({\n x: (lineLength + 2) * xFactor,\n y: (lineLength + 2) * yFactor,\n text: get(this.get('text'), 'content', ''),\n textBaseline: textBaseline,\n textAlign: textAlign\n }, textStyle)\n };\n };\n return DataMarkerAnnotation;\n}(GroupComponent);\nexport default DataMarkerAnnotation;","import { __assign, __extends } from \"tslib\";\nimport { get } from '@antv/util';\nimport GroupComponent from '../abstract/group-component';\nimport Theme from '../util/theme';\nimport { pointsToBBox } from '../util/util';\nimport { renderTag } from '../util/graphic';\nvar DataRegionAnnotation = /** @class */function (_super) {\n __extends(DataRegionAnnotation, _super);\n function DataRegionAnnotation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * 默认的配置项\n * @returns {object} 默认的配置项\n */\n DataRegionAnnotation.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n name: 'annotation',\n type: 'dataRegion',\n locationType: 'points',\n points: [],\n lineLength: 0,\n region: {},\n text: {},\n defaultCfg: {\n region: {\n style: {\n lineWidth: 0,\n fill: Theme.regionColor,\n opacity: 0.4\n }\n },\n text: {\n content: '',\n style: {\n textAlign: 'center',\n textBaseline: 'bottom',\n fontSize: 12,\n fill: Theme.textColor,\n fontFamily: Theme.fontFamily\n }\n }\n }\n });\n };\n DataRegionAnnotation.prototype.renderInner = function (group) {\n var regionStyle = get(this.get('region'), 'style', {});\n var textStyle = get(this.get('text'), 'style', {});\n var lineLength = this.get('lineLength') || 0;\n var points = this.get('points');\n if (!points.length) {\n return;\n }\n var bbox = pointsToBBox(points);\n // render region\n var path = [];\n path.push(['M', points[0].x, bbox.minY - lineLength]);\n points.forEach(function (point) {\n path.push(['L', point.x, point.y]);\n });\n path.push(['L', points[points.length - 1].x, points[points.length - 1].y - lineLength]);\n this.addShape(group, {\n type: 'path',\n id: this.getElementId('region'),\n name: 'annotation-region',\n attrs: __assign({\n path: path\n }, regionStyle)\n });\n // render text\n var textCfg = __assign({\n id: this.getElementId('text'),\n name: 'annotation-text',\n x: (bbox.minX + bbox.maxX) / 2,\n y: bbox.minY - lineLength\n }, this.get('text'));\n renderTag(group, textCfg);\n };\n return DataRegionAnnotation;\n}(GroupComponent);\nexport default DataRegionAnnotation;","import { __assign, __extends } from \"tslib\";\nimport { clone, each } from '@antv/util';\nimport GroupComponent from '../abstract/group-component';\nimport { regionToBBox } from '../util/util';\nvar RegionFilterAnnotation = /** @class */function (_super) {\n __extends(RegionFilterAnnotation, _super);\n function RegionFilterAnnotation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * 默认的配置项\n * @returns {object} 默认的配置项\n */\n RegionFilterAnnotation.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n name: 'annotation',\n type: 'regionFilter',\n locationType: 'region',\n start: null,\n end: null,\n color: null,\n shape: []\n });\n };\n RegionFilterAnnotation.prototype.renderInner = function (group) {\n var _this = this;\n var start = this.get('start');\n var end = this.get('end');\n // 1. add region layer\n var layer = this.addGroup(group, {\n id: this.getElementId('region-filter'),\n capture: false\n });\n // 2. clone shape & color it\n each(this.get('shapes'), function (shape, shapeIdx) {\n var type = shape.get('type');\n var attrs = clone(shape.attr());\n _this.adjustShapeAttrs(attrs);\n _this.addShape(layer, {\n id: _this.getElementId(\"shape-\" + type + \"-\" + shapeIdx),\n capture: false,\n type: type,\n attrs: attrs\n });\n });\n // 3. clip\n var clipBBox = regionToBBox({\n start: start,\n end: end\n });\n layer.setClip({\n type: 'rect',\n attrs: {\n x: clipBBox.minX,\n y: clipBBox.minY,\n width: clipBBox.width,\n height: clipBBox.height\n }\n });\n };\n RegionFilterAnnotation.prototype.adjustShapeAttrs = function (attr) {\n var color = this.get('color');\n if (attr.fill) {\n attr.fill = attr.fillStyle = color;\n }\n attr.stroke = attr.strokeStyle = color;\n };\n return RegionFilterAnnotation;\n}(GroupComponent);\nexport default RegionFilterAnnotation;","import { __assign, __extends } from \"tslib\";\nimport { isFunction, noop } from '@antv/util';\nimport GroupComponent from '../abstract/group-component';\nvar ShapeAnnotation = /** @class */function (_super) {\n __extends(ShapeAnnotation, _super);\n function ShapeAnnotation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ShapeAnnotation.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n name: 'annotation',\n type: 'shape',\n draw: noop\n });\n };\n ShapeAnnotation.prototype.renderInner = function (group) {\n var render = this.get('render');\n if (isFunction(render)) {\n render(group);\n }\n };\n return ShapeAnnotation;\n}(GroupComponent);\nexport default ShapeAnnotation;","/**\n * 获取样式\n * @param {Object} dom DOM节点\n * @param {String} name 样式名\n * @param {Any} defaultValue 默认值\n * @return {String} 属性值\n */\nexport default function getStyle(dom, name, defaultValue) {\n var v;\n try {\n v = window.getComputedStyle ? window.getComputedStyle(dom, null)[name] : dom.style[name]; // 一般不会走到这个逻辑,dom.style 获取的是标签 style 属性,也不准确\n } catch (e) {\n // do nothing\n } finally {\n v = v === undefined ? defaultValue : v;\n }\n return v;\n}","import getStyle from './get-style';\nimport getWidth from './get-width';\nexport default function getOuterWidth(el, defaultValue) {\n var width = getWidth(el, defaultValue);\n var bLeft = parseFloat(getStyle(el, 'borderLeftWidth')) || 0;\n var pLeft = parseFloat(getStyle(el, 'paddingLeft')) || 0;\n var pRight = parseFloat(getStyle(el, 'paddingRight')) || 0;\n var bRight = parseFloat(getStyle(el, 'borderRightWidth')) || 0;\n var mRight = parseFloat(getStyle(el, 'marginRight')) || 0;\n var mLeft = parseFloat(getStyle(el, 'marginLeft')) || 0;\n return width + bLeft + bRight + pLeft + pRight + mLeft + mRight;\n}","import getStyle from './get-style';\nexport default function getHeight(el, defaultValue) {\n var width = getStyle(el, 'width', defaultValue);\n if (width === 'auto') {\n width = el.offsetWidth;\n }\n return parseFloat(width);\n}","import getStyle from './get-style';\nimport getHeight from './get-height';\nexport default function getOuterHeight(el, defaultValue) {\n var height = getHeight(el, defaultValue);\n var bTop = parseFloat(getStyle(el, 'borderTopWidth')) || 0;\n var pTop = parseFloat(getStyle(el, 'paddingTop')) || 0;\n var pBottom = parseFloat(getStyle(el, 'paddingBottom')) || 0;\n var bBottom = parseFloat(getStyle(el, 'borderBottomWidth')) || 0;\n var mTop = parseFloat(getStyle(el, 'marginTop')) || 0;\n var mBottom = parseFloat(getStyle(el, 'marginBottom')) || 0;\n return height + bTop + bBottom + pTop + pBottom + mTop + mBottom;\n}","import getStyle from './get-style';\nexport default function getHeight(el, defaultValue) {\n var height = getStyle(el, 'height', defaultValue);\n if (height === 'auto') {\n height = el.offsetHeight;\n }\n return parseFloat(height);\n}","import { __assign, __extends } from \"tslib\";\nimport { createDom, modifyCSS } from '@antv/dom-util';\nimport { isNil, isString, deepMix, each, hasKey } from '@antv/util';\nimport { clearDom, createBBox, hasClass } from '../util/util';\nimport Component from './component';\nvar HtmlComponent = /** @class */function (_super) {\n __extends(HtmlComponent, _super);\n function HtmlComponent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n HtmlComponent.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n container: null,\n containerTpl: '
        ',\n updateAutoRender: true,\n containerClassName: '',\n parent: null\n });\n };\n HtmlComponent.prototype.getContainer = function () {\n return this.get('container');\n };\n /**\n * 显示组件\n */\n HtmlComponent.prototype.show = function () {\n var container = this.get('container');\n container.style.display = '';\n this.set('visible', true);\n };\n /**\n * 隐藏组件\n */\n HtmlComponent.prototype.hide = function () {\n var container = this.get('container');\n container.style.display = 'none';\n this.set('visible', false);\n };\n /**\n * 是否允许捕捉事件\n * @param capture 事件捕捉\n */\n HtmlComponent.prototype.setCapture = function (capture) {\n var container = this.getContainer();\n var value = capture ? 'auto' : 'none';\n container.style.pointerEvents = value;\n this.set('capture', capture);\n };\n HtmlComponent.prototype.getBBox = function () {\n var container = this.getContainer();\n var x = parseFloat(container.style.left) || 0;\n var y = parseFloat(container.style.top) || 0;\n return createBBox(x, y, container.clientWidth, container.clientHeight);\n };\n HtmlComponent.prototype.clear = function () {\n var container = this.get('container');\n clearDom(container);\n };\n HtmlComponent.prototype.destroy = function () {\n this.removeEvent();\n this.removeDom();\n _super.prototype.destroy.call(this);\n };\n /**\n * 复写 init,主要是初始化 DOM 和事件\n */\n HtmlComponent.prototype.init = function () {\n _super.prototype.init.call(this);\n this.initContainer();\n this.initDom();\n this.resetStyles(); // 初始化样式\n this.applyStyles(); // 应用样式\n this.initEvent();\n this.initCapture();\n this.initVisible();\n };\n HtmlComponent.prototype.initCapture = function () {\n this.setCapture(this.get('capture'));\n };\n HtmlComponent.prototype.initVisible = function () {\n if (!this.get('visible')) {\n // 设置初始显示状态\n this.hide();\n } else {\n this.show();\n }\n };\n HtmlComponent.prototype.initDom = function () {};\n HtmlComponent.prototype.initContainer = function () {\n var container = this.get('container');\n if (isNil(container)) {\n // 未指定 container 则创建\n container = this.createDom();\n var parent_1 = this.get('parent');\n if (isString(parent_1)) {\n parent_1 = document.getElementById(parent_1);\n this.set('parent', parent_1);\n }\n parent_1.appendChild(container);\n if (this.get('containerId')) {\n container.setAttribute('id', this.get('containerId'));\n }\n this.set('container', container);\n } else if (isString(container)) {\n // 用户传入的 id, 作为 container\n container = document.getElementById(container);\n this.set('container', container);\n } // else container 是 DOM\n if (!this.get('parent')) {\n this.set('parent', container.parentNode);\n }\n };\n // 样式需要进行合并,不能单纯的替换,否则使用非常不方便\n HtmlComponent.prototype.resetStyles = function () {\n var style = this.get('domStyles');\n var defaultStyles = this.get('defaultStyles');\n if (!style) {\n style = defaultStyles;\n } else {\n style = deepMix({}, defaultStyles, style);\n }\n this.set('domStyles', style);\n };\n // 应用所有的样式\n HtmlComponent.prototype.applyStyles = function () {\n var domStyles = this.get('domStyles');\n if (!domStyles) {\n return;\n }\n var container = this.getContainer();\n this.applyChildrenStyles(container, domStyles);\n var containerClassName = this.get('containerClassName');\n if (containerClassName && hasClass(container, containerClassName)) {\n var containerCss = domStyles[containerClassName];\n modifyCSS(container, containerCss);\n }\n };\n HtmlComponent.prototype.applyChildrenStyles = function (element, styles) {\n each(styles, function (style, name) {\n var elements = element.getElementsByClassName(name);\n each(elements, function (el) {\n modifyCSS(el, style);\n });\n });\n };\n // 应用到单个 DOM\n HtmlComponent.prototype.applyStyle = function (cssName, dom) {\n var domStyles = this.get('domStyles');\n modifyCSS(dom, domStyles[cssName]);\n };\n /**\n * @protected\n */\n HtmlComponent.prototype.createDom = function () {\n var containerTpl = this.get('containerTpl');\n return createDom(containerTpl);\n };\n /**\n * @protected\n * 初始化事件\n */\n HtmlComponent.prototype.initEvent = function () {};\n /**\n * @protected\n * 清理 DOM\n */\n HtmlComponent.prototype.removeDom = function () {\n var container = this.get('container');\n // 节点不一定有parentNode\n container && container.parentNode && container.parentNode.removeChild(container);\n };\n /**\n * @protected\n * 清理事件\n */\n HtmlComponent.prototype.removeEvent = function () {};\n HtmlComponent.prototype.updateInner = function (cfg) {\n // 更新样式\n if (hasKey(cfg, 'domStyles')) {\n this.resetStyles();\n this.applyStyles();\n }\n // 只要属性发生变化,都调整一些位置\n this.resetPosition();\n };\n HtmlComponent.prototype.resetPosition = function () {};\n ;\n return HtmlComponent;\n}(Component);\nexport default HtmlComponent;","import { __assign, __extends } from \"tslib\";\nimport { createDom, getOuterHeight, getOuterWidth, modifyCSS } from '@antv/dom-util';\nimport { isElement, isFunction, isNumber, isString } from '@antv/util';\nimport HtmlComponent from '../abstract/html-component';\nimport { clearDom } from '../util/util';\nvar HtmlAnnotation = /** @class */function (_super) {\n __extends(HtmlAnnotation, _super);\n function HtmlAnnotation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n HtmlAnnotation.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n name: 'annotation',\n type: 'html',\n locationType: 'point',\n x: 0,\n y: 0,\n containerTpl: \"
        \",\n alignX: 'left',\n alignY: 'top',\n html: '',\n zIndex: 7\n });\n };\n HtmlAnnotation.prototype.render = function () {\n var container = this.getContainer();\n var html = this.get('html');\n clearDom(container);\n var rst = isFunction(html) ? html(container) : html;\n if (isElement(rst)) {\n container.appendChild(rst);\n } else if (isString(rst) || isNumber(rst)) {\n var dom = createDom(\"\" + rst);\n if (dom) {\n container.appendChild(dom);\n }\n }\n this.resetPosition();\n };\n HtmlAnnotation.prototype.resetPosition = function () {\n var container = this.getContainer();\n var _a = this.getLocation(),\n x = _a.x,\n y = _a.y;\n var alignX = this.get('alignX');\n var alignY = this.get('alignY');\n var offsetX = this.get('offsetX');\n var offsetY = this.get('offsetY');\n var domWidth = getOuterWidth(container);\n var domHeight = getOuterHeight(container);\n var position = {\n x: x,\n y: y\n };\n if (alignX === 'middle') {\n position.x -= Math.round(domWidth / 2);\n } else if (alignX === 'right') {\n position.x -= Math.round(domWidth);\n }\n if (alignY === 'middle') {\n position.y -= Math.round(domHeight / 2);\n } else if (alignY === 'bottom') {\n position.y -= Math.round(domHeight);\n }\n if (offsetX) {\n position.x += offsetX;\n }\n if (offsetY) {\n position.y += offsetY;\n }\n modifyCSS(container, {\n position: 'absolute',\n left: position.x + \"px\",\n top: position.y + \"px\",\n zIndex: this.get('zIndex')\n });\n };\n return HtmlAnnotation;\n}(HtmlComponent);\nexport default HtmlAnnotation;","import { each, mix } from '@antv/util';\n// 获取多个状态量的合并值\nexport function getStatesStyle(item, elementName, stateStyles) {\n var styleName = elementName + \"Style\"; // activeStyle\n var styles = null;\n each(stateStyles, function (v, state) {\n if (item[state] && v[styleName]) {\n if (!styles) {\n styles = {};\n }\n mix(styles, v[styleName]); // 合并样式\n }\n });\n\n return styles;\n}","import { __assign, __extends } from \"tslib\";\nimport { ext } from '@antv/matrix-util';\nimport { each, filter, get, isFunction, isNil, isNumberEqual, mix, size } from '@antv/util';\nimport GroupComponent from '../abstract/group-component';\nimport { getMatrixByAngle } from '../util/matrix';\nimport { getStatesStyle } from '../util/state';\nimport Theme from '../util/theme';\nvar AxisBase = /** @class */function (_super) {\n __extends(AxisBase, _super);\n function AxisBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AxisBase.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n name: 'axis',\n ticks: [],\n line: {},\n tickLine: {},\n subTickLine: null,\n title: null,\n /**\n * 文本标签的配置项\n */\n label: {},\n /**\n * 垂直于坐标轴方向的因子,决定文本、title、tickLine 在坐标轴的哪一侧\n */\n verticalFactor: 1,\n // 垂直方向限制的长度,对文本自适应有很大影响\n verticalLimitLength: null,\n overlapOrder: ['autoRotate', 'autoEllipsis', 'autoHide'],\n tickStates: {},\n optimize: {},\n defaultCfg: {\n line: {\n // @type {Attrs} 坐标轴线的图形属性,如果设置成null,则不显示轴线\n style: {\n lineWidth: 1,\n stroke: Theme.lineColor\n }\n },\n tickLine: {\n // @type {Attrs} 标注坐标线的图形属性\n style: {\n lineWidth: 1,\n stroke: Theme.lineColor\n },\n alignTick: true,\n length: 5,\n displayWithLabel: true\n },\n subTickLine: {\n // @type {Attrs} 标注坐标线的图形属性\n style: {\n lineWidth: 1,\n stroke: Theme.lineColor\n },\n count: 4,\n length: 2\n },\n label: {\n autoRotate: true,\n autoHide: false,\n autoEllipsis: false,\n style: {\n fontSize: 12,\n fill: Theme.textColor,\n fontFamily: Theme.fontFamily,\n fontWeight: 'normal'\n },\n offset: 10,\n offsetX: 0,\n offsetY: 0\n },\n title: {\n autoRotate: true,\n spacing: 5,\n position: 'center',\n style: {\n fontSize: 12,\n fill: Theme.textColor,\n textBaseline: 'middle',\n fontFamily: Theme.fontFamily,\n textAlign: 'center'\n },\n iconStyle: {\n fill: Theme.descriptionIconFill,\n stroke: Theme.descriptionIconStroke\n },\n description: ''\n },\n tickStates: {\n active: {\n labelStyle: {\n fontWeight: 500\n },\n tickLineStyle: {\n lineWidth: 2\n }\n },\n inactive: {\n labelStyle: {\n fill: Theme.uncheckedColor\n }\n }\n },\n // 针对大数据量进行优化配置\n optimize: {\n enable: true,\n threshold: 400\n }\n },\n theme: {}\n });\n };\n /**\n * 绘制组件\n */\n AxisBase.prototype.renderInner = function (group) {\n if (this.get('line')) {\n this.drawLine(group);\n }\n // drawTicks 包括 drawLabels 和 drawTickLines\n this.drawTicks(group);\n if (this.get('title')) {\n this.drawTitle(group);\n }\n };\n // 实现 IList 接口\n AxisBase.prototype.isList = function () {\n return true;\n };\n /**\n * 获取图例项\n * @return {ListItem[]} 列表项集合\n */\n AxisBase.prototype.getItems = function () {\n return this.get('ticks');\n };\n /**\n * 设置列表项\n * @param {ListItem[]} items 列表项集合\n */\n AxisBase.prototype.setItems = function (items) {\n this.update({\n ticks: items\n });\n };\n /**\n * 更新列表项\n * @param {ListItem} item 列表项\n * @param {object} cfg 列表项\n */\n AxisBase.prototype.updateItem = function (item, cfg) {\n mix(item, cfg);\n this.clear(); // 由于单个图例项变化,会引起全局变化,所以全部更新\n this.render();\n };\n /**\n * 清空列表\n */\n AxisBase.prototype.clearItems = function () {\n var itemGroup = this.getElementByLocalId('label-group');\n itemGroup && itemGroup.clear();\n };\n /**\n * 设置列表项的状态\n * @param {ListItem} item 列表项\n * @param {string} state 状态名\n * @param {boolean} value 状态值, true, false\n */\n AxisBase.prototype.setItemState = function (item, state, value) {\n item[state] = value;\n this.updateTickStates(item); // 应用状态样式\n };\n /**\n * 是否存在指定的状态\n * @param {ListItem} item 列表项\n * @param {boolean} state 状态名\n */\n AxisBase.prototype.hasState = function (item, state) {\n return !!item[state];\n };\n AxisBase.prototype.getItemStates = function (item) {\n var tickStates = this.get('tickStates');\n var rst = [];\n each(tickStates, function (v, k) {\n if (item[k]) {\n // item.selected\n rst.push(k);\n }\n });\n return rst;\n };\n /**\n * 清楚所有列表项的状态\n * @param {string} state 状态值\n */\n AxisBase.prototype.clearItemsState = function (state) {\n var _this = this;\n var items = this.getItemsByState(state);\n each(items, function (item) {\n _this.setItemState(item, state, false);\n });\n };\n /**\n * 根据状态获取图例项\n * @param {string} state [description]\n * @return {ListItem[]} [description]\n */\n AxisBase.prototype.getItemsByState = function (state) {\n var _this = this;\n var items = this.getItems();\n return filter(items, function (item) {\n return _this.hasState(item, state);\n });\n };\n AxisBase.prototype.getSidePoint = function (point, offset) {\n var self = this;\n var vector = self.getSideVector(offset, point);\n return {\n x: point.x + vector[0],\n y: point.y + vector[1]\n };\n };\n AxisBase.prototype.getTextAnchor = function (vector) {\n var align;\n if (isNumberEqual(vector[0], 0)) {\n align = 'center';\n } else if (vector[0] > 0) {\n align = 'start';\n } else if (vector[0] < 0) {\n align = 'end';\n }\n return align;\n };\n AxisBase.prototype.getTextBaseline = function (vector) {\n var base;\n if (isNumberEqual(vector[1], 0)) {\n base = 'middle';\n } else if (vector[1] > 0) {\n base = 'top';\n } else if (vector[1] < 0) {\n base = 'bottom';\n }\n return base;\n };\n AxisBase.prototype.processOverlap = function (labelGroup) {};\n // 绘制坐标轴线\n AxisBase.prototype.drawLine = function (group) {\n var path = this.getLinePath();\n var line = this.get('line'); // line 的判空在调用 drawLine 之前,不在这里判定\n this.addShape(group, {\n type: 'path',\n id: this.getElementId('line'),\n name: 'axis-line',\n attrs: mix({\n path: path\n }, line.style)\n });\n };\n AxisBase.prototype.getTickLineItems = function (ticks) {\n var _this = this;\n var tickLineItems = [];\n var tickLine = this.get('tickLine');\n var alignTick = tickLine.alignTick;\n var tickLineLength = tickLine.length;\n var tickSegment = 1;\n var tickCount = ticks.length;\n if (tickCount >= 2) {\n tickSegment = ticks[1].value - ticks[0].value;\n }\n each(ticks, function (tick) {\n var point = tick.point;\n if (!alignTick) {\n // tickLine 不同 tick 对齐时需要调整 point\n point = _this.getTickPoint(tick.value - tickSegment / 2);\n }\n var endPoint = _this.getSidePoint(point, tickLineLength);\n tickLineItems.push({\n startPoint: point,\n tickValue: tick.value,\n endPoint: endPoint,\n tickId: tick.id,\n id: \"tickline-\" + tick.id\n });\n });\n // 如果 tickLine 不居中对齐,则需要在最后面补充一个 tickLine\n // if (!alignTick && tickCount > 0) {\n // const tick = ticks[tickCount - 1];\n // const point = this.getTickPoint(tick.value + tickSegment / 2);\n // }\n return tickLineItems;\n };\n AxisBase.prototype.getSubTickLineItems = function (tickLineItems) {\n var subTickLineItems = [];\n var subTickLine = this.get('subTickLine');\n var subCount = subTickLine.count;\n var tickLineCount = tickLineItems.length;\n // 刻度线的数量大于 2 时,才绘制子刻度\n if (tickLineCount >= 2) {\n for (var i = 0; i < tickLineCount - 1; i++) {\n var pre = tickLineItems[i];\n var next = tickLineItems[i + 1];\n for (var j = 0; j < subCount; j++) {\n var percent = (j + 1) / (subCount + 1);\n var tickValue = (1 - percent) * pre.tickValue + percent * next.tickValue;\n var point = this.getTickPoint(tickValue);\n var endPoint = this.getSidePoint(point, subTickLine.length);\n subTickLineItems.push({\n startPoint: point,\n endPoint: endPoint,\n tickValue: tickValue,\n id: \"sub-\" + pre.id + \"-\" + j\n });\n }\n }\n }\n return subTickLineItems;\n };\n AxisBase.prototype.getTickLineAttrs = function (tickItem, type, index, tickItems) {\n var style = this.get(type).style;\n // 保持和 grid 相同的数据结构\n var item = {\n points: [tickItem.startPoint, tickItem.endPoint]\n };\n var defaultTickLineStyle = get(this.get('theme'), ['tickLine', 'style'], {});\n style = isFunction(style) ? mix({}, defaultTickLineStyle, style(item, index, tickItems)) : style;\n var startPoint = tickItem.startPoint,\n endPoint = tickItem.endPoint;\n return __assign({\n x1: startPoint.x,\n y1: startPoint.y,\n x2: endPoint.x,\n y2: endPoint.y\n }, style);\n };\n // 绘制坐标轴刻度线\n AxisBase.prototype.drawTick = function (tickItem, tickLineGroup, type, index, tickItems) {\n this.addShape(tickLineGroup, {\n type: 'line',\n id: this.getElementId(tickItem.id),\n name: \"axis-\" + type,\n attrs: this.getTickLineAttrs(tickItem, type, index, tickItems)\n });\n };\n // 绘制坐标轴刻度线,包括子刻度线\n AxisBase.prototype.drawTickLines = function (group) {\n var _this = this;\n var ticks = this.get('ticks');\n var subTickLine = this.get('subTickLine');\n var tickLineItems = this.getTickLineItems(ticks);\n var tickLineGroup = this.addGroup(group, {\n name: 'axis-tickline-group',\n id: this.getElementId('tickline-group')\n });\n var tickCfg = this.get('tickLine');\n each(tickLineItems, function (item, index) {\n if (tickCfg.displayWithLabel) {\n // 如果跟随 label 显示,则检测是否存在对应的 label\n var labelId = _this.getElementId(\"label-\" + item.tickId);\n if (group.findById(labelId)) {\n _this.drawTick(item, tickLineGroup, 'tickLine', index, tickLineItems);\n }\n } else {\n _this.drawTick(item, tickLineGroup, 'tickLine', index, tickLineItems);\n }\n });\n if (subTickLine) {\n var subTickLineItems_1 = this.getSubTickLineItems(tickLineItems);\n each(subTickLineItems_1, function (item, index) {\n _this.drawTick(item, tickLineGroup, 'subTickLine', index, subTickLineItems_1);\n });\n }\n };\n // 预处理 ticks 确定位置和补充 id\n AxisBase.prototype.processTicks = function () {\n var _this = this;\n var ticks = this.get('ticks');\n each(ticks, function (tick) {\n tick.point = _this.getTickPoint(tick.value);\n // 补充 tick 的 id,为动画和更新做准备\n if (isNil(tick.id)) {\n // 默认使用 tick.name 作为id\n tick.id = tick.name;\n }\n });\n };\n // 绘制 ticks 包括文本和 tickLine\n AxisBase.prototype.drawTicks = function (group) {\n var _this = this;\n this.optimizeTicks();\n this.processTicks();\n if (this.get('label')) {\n this.drawLabels(group);\n }\n if (this.get('tickLine')) {\n this.drawTickLines(group);\n }\n var ticks = this.get('ticks');\n each(ticks, function (tick) {\n _this.applyTickStates(tick, group);\n });\n };\n /**\n * 根据 optimize 配置对 ticks 进行抽样,对抽样过后的 ticks 才进行真实的渲染\n */\n AxisBase.prototype.optimizeTicks = function () {\n var optimize = this.get('optimize');\n var ticks = this.get('ticks');\n if (optimize && optimize.enable && optimize.threshold > 0) {\n var len = size(ticks);\n if (len > optimize.threshold) {\n var page_1 = Math.ceil(len / optimize.threshold);\n var optimizedTicks = ticks.filter(function (tick, idx) {\n return idx % page_1 === 0;\n });\n this.set('ticks', optimizedTicks);\n this.set('originalTicks', ticks);\n }\n }\n };\n // 获取 label 的配置项\n AxisBase.prototype.getLabelAttrs = function (tick, index, ticks) {\n var labelCfg = this.get('label');\n var offset = labelCfg.offset,\n offsetX = labelCfg.offsetX,\n offsetY = labelCfg.offsetY,\n rotate = labelCfg.rotate,\n formatter = labelCfg.formatter;\n var point = this.getSidePoint(tick.point, offset);\n var vector = this.getSideVector(offset, point);\n var text = formatter ? formatter(tick.name, tick, index) : tick.name;\n var style = labelCfg.style;\n style = isFunction(style) ? get(this.get('theme'), ['label', 'style'], {}) : style;\n var attrs = mix({\n x: point.x + offsetX,\n y: point.y + offsetY,\n text: text,\n textAlign: this.getTextAnchor(vector),\n textBaseline: this.getTextBaseline(vector)\n }, style);\n if (rotate) {\n attrs.matrix = getMatrixByAngle(point, rotate);\n }\n return attrs;\n };\n // 绘制文本\n AxisBase.prototype.drawLabels = function (group) {\n var _this = this;\n var ticks = this.get('ticks');\n var labelGroup = this.addGroup(group, {\n name: 'axis-label-group',\n id: this.getElementId('label-group')\n });\n each(ticks, function (tick, index) {\n _this.addShape(labelGroup, {\n type: 'text',\n name: 'axis-label',\n id: _this.getElementId(\"label-\" + tick.id),\n attrs: _this.getLabelAttrs(tick, index, ticks),\n delegateObject: {\n tick: tick,\n item: tick,\n index: index\n }\n });\n });\n this.processOverlap(labelGroup);\n // 处理完后再进行 style 回调处理\n var labels = labelGroup.getChildren();\n var defaultLabelStyle = get(this.get('theme'), ['label', 'style'], {});\n var _a = this.get('label'),\n style = _a.style,\n formatter = _a.formatter;\n if (isFunction(style)) {\n var afterProcessTicks_1 = labels.map(function (label) {\n return get(label.get('delegateObject'), 'tick');\n });\n each(labels, function (label, index) {\n var tick = label.get('delegateObject').tick;\n var text = formatter ? formatter(tick.name, tick, index) : tick.name;\n var newStyle = mix({}, defaultLabelStyle, style(text, index, afterProcessTicks_1));\n label.attr(newStyle);\n });\n }\n };\n // 标题的属性\n AxisBase.prototype.getTitleAttrs = function () {\n var titleCfg = this.get('title');\n var style = titleCfg.style,\n position = titleCfg.position,\n offset = titleCfg.offset,\n _a = titleCfg.spacing,\n spacing = _a === void 0 ? 0 : _a,\n autoRotate = titleCfg.autoRotate;\n var titleHeight = style.fontSize;\n var percent = 0.5;\n if (position === 'start') {\n percent = 0;\n } else if (position === 'end') {\n percent = 1;\n }\n var point = this.getTickPoint(percent); // 标题对应的坐标轴上的点\n // 如果没有指定 titleOffset 也没有渲染 label,这里需要自动计算 offset\n var titlePoint = this.getSidePoint(point, offset || spacing + titleHeight / 2); // 标题的点\n var attrs = mix({\n x: titlePoint.x,\n y: titlePoint.y,\n text: titleCfg.text\n }, style);\n var rotate = titleCfg.rotate; // rotate 是角度值\n var angle = rotate;\n if (isNil(rotate) && autoRotate) {\n // 用户没有设定旋转角度,同时设置自动旋转\n var vector = this.getAxisVector(point);\n var v1 = [1, 0]; // 水平方向的向量\n angle = ext.angleTo(vector, v1, true);\n }\n if (angle) {\n var matrix = getMatrixByAngle(titlePoint, angle);\n attrs.matrix = matrix;\n }\n return attrs;\n };\n // 绘制标题\n AxisBase.prototype.drawTitle = function (group) {\n var _a;\n var titleAttrs = this.getTitleAttrs();\n var titleShape = this.addShape(group, {\n type: 'text',\n id: this.getElementId('title'),\n name: 'axis-title',\n attrs: titleAttrs\n });\n // description字段存在时,显示icon\n if ((_a = this.get('title')) === null || _a === void 0 ? void 0 : _a.description) {\n this.drawDescriptionIcon(group, titleShape, titleAttrs.matrix);\n }\n };\n AxisBase.prototype.drawDescriptionIcon = function (group, titleShape, matrix) {\n var descriptionShape = this.addGroup(group, {\n name: 'axis-description',\n id: this.getElementById('description')\n });\n var _a = titleShape.getBBox(),\n maxX = _a.maxX,\n maxY = _a.maxY,\n height = _a.height;\n var iconStyle = this.get('title').iconStyle;\n var spacing = 4; // 设置icon与文本之间距离\n var r = height / 2;\n var lineWidth = r / 6;\n var startX = maxX + spacing;\n var startY = maxY - height / 2;\n // 绘制 information icon 路径\n // 外圆环path\n var _b = [startX + r, startY - r],\n x0 = _b[0],\n y0 = _b[1];\n var _c = [x0 + r, y0 + r],\n x1 = _c[0],\n y1 = _c[1];\n var _d = [x0, y1 + r],\n x2 = _d[0],\n y2 = _d[1];\n var _e = [startX, y0 + r],\n x3 = _e[0],\n y3 = _e[1];\n // i path\n var _f = [startX + r, startY - height / 4],\n x4 = _f[0],\n y4 = _f[1];\n var _g = [x4, y4 + lineWidth],\n x5 = _g[0],\n y5 = _g[1];\n var _h = [x5, y5 + lineWidth],\n x6 = _h[0],\n y6 = _h[1];\n var _j = [x6, y6 + r * 3 / 4],\n x7 = _j[0],\n y7 = _j[1];\n this.addShape(descriptionShape, {\n type: 'path',\n id: this.getElementId('title-description-icon'),\n name: 'axis-title-description-icon',\n attrs: __assign({\n path: [['M', x0, y0], ['A', r, r, 0, 0, 1, x1, y1], ['A', r, r, 0, 0, 1, x2, y2], ['A', r, r, 0, 0, 1, x3, y3], ['A', r, r, 0, 0, 1, x0, y0], ['M', x4, y4], ['L', x5, y5], ['M', x6, y6], ['L', x7, y7]],\n lineWidth: lineWidth,\n matrix: matrix\n }, iconStyle)\n });\n // 点击热区,设置透明矩形\n this.addShape(descriptionShape, {\n type: 'rect',\n id: this.getElementId('title-description-rect'),\n name: 'axis-title-description-rect',\n attrs: {\n x: startX,\n y: startY - height / 2,\n width: height,\n height: height,\n stroke: '#000',\n fill: '#000',\n opacity: 0,\n matrix: matrix,\n cursor: 'pointer'\n }\n });\n };\n AxisBase.prototype.applyTickStates = function (tick, group) {\n var states = this.getItemStates(tick);\n if (states.length) {\n var tickStates = this.get('tickStates');\n // 分别更新 label 和 tickLine\n var labelId = this.getElementId(\"label-\" + tick.id);\n var labelShape = group.findById(labelId);\n if (labelShape) {\n var labelStateStyle = getStatesStyle(tick, 'label', tickStates);\n labelStateStyle && labelShape.attr(labelStateStyle);\n }\n var tickLineId = this.getElementId(\"tickline-\" + tick.id);\n var tickLineShape = group.findById(tickLineId);\n if (tickLineShape) {\n var tickLineStateStyle = getStatesStyle(tick, 'tickLine', tickStates);\n tickLineStateStyle && tickLineShape.attr(tickLineStateStyle);\n }\n }\n };\n AxisBase.prototype.updateTickStates = function (tick) {\n var states = this.getItemStates(tick);\n var tickStates = this.get('tickStates');\n var labelCfg = this.get('label');\n var labelShape = this.getElementByLocalId(\"label-\" + tick.id);\n var tickLineCfg = this.get('tickLine');\n var tickLineShape = this.getElementByLocalId(\"tickline-\" + tick.id);\n if (states.length) {\n if (labelShape) {\n var labelStateStyle = getStatesStyle(tick, 'label', tickStates);\n labelStateStyle && labelShape.attr(labelStateStyle);\n }\n if (tickLineShape) {\n var tickLineStateStyle = getStatesStyle(tick, 'tickLine', tickStates);\n tickLineStateStyle && tickLineShape.attr(tickLineStateStyle);\n }\n } else {\n if (labelShape) {\n labelShape.attr(labelCfg.style);\n }\n if (tickLineShape) {\n tickLineShape.attr(tickLineCfg.style);\n }\n }\n };\n return AxisBase;\n}(GroupComponent);\nexport default AxisBase;","import { each } from '@antv/util';\nimport { ellipsisLabel } from '../../util/label';\nfunction ellipseLabels(isVertical, labelGroup, limitLength, position) {\n var children = labelGroup.getChildren();\n var ellipsisFlag = false;\n each(children, function (label) {\n var rst = ellipsisLabel(isVertical, label, limitLength, position);\n ellipsisFlag = ellipsisFlag || rst;\n });\n return ellipsisFlag;\n}\nexport function getDefault() {\n return ellipsisTail;\n}\nexport function ellipsisHead(isVertical, labelGroup, limitLength) {\n return ellipseLabels(isVertical, labelGroup, limitLength, 'head');\n}\nexport function ellipsisTail(isVertical, labelGroup, limitLength) {\n return ellipseLabels(isVertical, labelGroup, limitLength, 'tail');\n}\nexport function ellipsisMiddle(isVertical, labelGroup, limitLength) {\n return ellipseLabels(isVertical, labelGroup, limitLength, 'middle');\n}","import { getMaxLabelWidth } from '../../util/label';\nimport { getAngleByMatrix } from '../../util/matrix';\nimport { near } from '../../util/util';\n// 文本是否旋转\nfunction isRotate(label) {\n var matrix = label.attr('matrix');\n return matrix && matrix[0] !== 1; // 仅在这个场景下判定\n}\n\nfunction getRotateAngle(label) {\n var angle = isRotate(label) ? getAngleByMatrix(label.attr('matrix')) : 0;\n return angle % 360;\n}\n// autohide 不再考虑超出限制\n// function isOutLimit(isVertical: boolean, label: IElement, limitLength: number) {\n// if (!limitLength) {\n// // 如果没限制 limitLength 则直接返回 false\n// return false;\n// }\n// const canvasBBox = label.getCanvasBBox();\n// let isOut = false;\n// if (isVertical) {\n// isOut = canvasBBox.width > limitLength;\n// } else {\n// isOut = canvasBBox.height > limitLength;\n// }\n// return isOut;\n// }\n// 是否重叠\nfunction isOverlap(isVertical, first, second, minGap) {\n var overlap = false;\n var angle = getRotateAngle(first);\n var distance = isVertical ? Math.abs(second.attr('y') - first.attr('y')) : Math.abs(second.attr('x') - first.attr('x'));\n var prevBBox = (isVertical ? second.attr('y') > first.attr('y') : second.attr('x') > first.attr('x')) ? first.getBBox() : second.getBBox();\n if (isVertical) {\n var ratio = Math.abs(Math.cos(angle));\n if (near(ratio, 0, Math.PI / 180)) {\n overlap = prevBBox.width + minGap > distance;\n } else {\n overlap = prevBBox.height / ratio + minGap > distance;\n }\n } else {\n var ratio = Math.abs(Math.sin(angle));\n if (near(ratio, 0, Math.PI / 180)) {\n overlap = prevBBox.width + minGap > distance;\n } else {\n overlap = prevBBox.height / ratio + minGap > distance;\n }\n }\n return overlap;\n}\n// 保留第一个或者最后一个\nfunction reserveOne(isVertical, labelsGroup, reversed, autoHideCfg) {\n var minGap = (autoHideCfg === null || autoHideCfg === void 0 ? void 0 : autoHideCfg.minGap) || 0;\n var labels = labelsGroup.getChildren().slice() // 复制数组\n .filter(function (item) {\n return item.get('visible');\n });\n if (!labels.length) {\n return false;\n }\n var hasHide = false;\n if (reversed) {\n // 翻转\n labels.reverse();\n }\n var count = labels.length;\n var first = labels[0];\n var prev = first;\n for (var i = 1; i < count; i++) {\n var label = labels[i];\n var curBBox = label.getBBox();\n // 不再考虑超出限制,而仅仅根据是否重叠进行隐藏 isOutLimit(isVertical, label, limitLength) ||\n var isHide = isOverlap(isVertical, prev, label, minGap);\n if (isHide) {\n label.hide();\n hasHide = true;\n } else {\n prev = label;\n }\n }\n return hasHide;\n}\n// 均匀抽样隐藏标签,注意这里假设 label/tick 是均匀的\nfunction parityHide(isVertical, labelsGroup, autoHideCfg) {\n var minGap = (autoHideCfg === null || autoHideCfg === void 0 ? void 0 : autoHideCfg.minGap) || 0;\n var labels = labelsGroup.getChildren().slice(); // 复制数组\n if (labels.length < 2) {\n // 如果数量小于 2 则直接返回,等于 2 时可能也会重合\n return false;\n }\n var hasHide = false;\n var first = labels[0];\n var firstBBox = first.getBBox();\n var second = labels[1];\n var count = labels.length;\n var angle = getRotateAngle(first);\n var distance = isVertical ? Math.abs(second.attr('y') - first.attr('y')) : Math.abs(second.attr('x') - first.attr('x'));\n var interval = 0; // 不重叠的坐标文本间距个数\n if (isVertical) {\n // 垂直的坐标轴计算垂直方向的间距\n var ratio = Math.abs(Math.cos(angle));\n if (near(ratio, 0, Math.PI / 180)) {\n var maxWidth = getMaxLabelWidth(labels);\n interval = (maxWidth + minGap) / distance;\n } else {\n interval = (firstBBox.height / ratio + minGap) / distance;\n }\n } else {\n // 水平坐标轴\n var ratio = Math.abs(Math.sin(angle));\n if (near(ratio, 0, Math.PI / 180)) {\n var maxWidth = getMaxLabelWidth(labels);\n interval = (maxWidth + minGap) / distance;\n } else {\n interval = (firstBBox.height / ratio + minGap) / distance;\n }\n }\n // interval > 1 时需要对 label 进行隐藏\n if (interval > 1) {\n interval = Math.ceil(interval);\n for (var i = 0; i < count; i++) {\n if (i % interval !== 0) {\n // 仅保留被整除的 label\n labels[i].hide();\n hasHide = true;\n }\n }\n }\n return hasHide;\n}\nexport function getDefault() {\n return equidistance;\n}\n/**\n * 保证首个 label 可见,即使超过 limitLength 也不隐藏\n * @param {boolean} isVertical 是否垂直\n * @param {IGroup} labelsGroup label 的分组\n * @param {number} limitLength 另一个方向的长度限制,autoHide 不关心\n * @param {AxisLabelAutoHideCfg} autoHideCfg autoHide overlap 的可选配置参数\n */\nexport function reserveFirst(isVertical, labelsGroup, limitLength, autoHideCfg) {\n return reserveOne(isVertical, labelsGroup, false, autoHideCfg);\n}\n/**\n * 保证最后一个 label 可见,即使超过 limitLength 也不隐藏\n * @param {boolean} isVertical 是否垂直\n * @param {IGroup} labelsGroup label 的分组\n * @param {number} limitLength 另一个方向的长度限制,autoHide 不关心\n * @param {AxisLabelAutoHideCfg} autoHideCfg autoHide overlap 的可选配置参数\n */\nexport function reserveLast(isVertical, labelsGroup, limitLength, autoHideCfg) {\n return reserveOne(isVertical, labelsGroup, true, autoHideCfg);\n}\n/**\n * 保证第一个最后一个 label 可见,即使超过 limitLength 也不隐藏\n * @param {boolean} isVertical 是否垂直\n * @param {IGroup} labelsGroup label 的分组\n * @param {number} limitLength 另一个方向的长度限制,autoHide 不关心\n * @param {AxisLabelAutoHideCfg} autoHideCfg autoHide overlap 的可选配置参数\n */\nexport function reserveBoth(isVertical, labelsGroup, limitLength, autoHideCfg) {\n var minGap = (autoHideCfg === null || autoHideCfg === void 0 ? void 0 : autoHideCfg.minGap) || 0;\n var labels = labelsGroup.getChildren().slice(); // 复制数组\n if (labels.length <= 2) {\n // 如果数量小于或等于 2 则直接返回\n return false;\n }\n var hasHide = false;\n var count = labels.length;\n var first = labels[0];\n var last = labels[count - 1];\n var preLabel = first;\n // 按照先保存第一个的逻辑循环一遍,最后一个不参与循环\n for (var i = 1; i < count - 1; i++) {\n var label = labels[i];\n var curBBox = label.getBBox();\n // 废弃 isOutLimit(isVertical, label, limitLength) ||\n var isHide = isOverlap(isVertical, preLabel, label, minGap);\n if (isHide) {\n label.hide();\n hasHide = true;\n } else {\n preLabel = label;\n }\n }\n var overlap = isOverlap(isVertical, preLabel, last, minGap);\n if (overlap) {\n // 发生冲突,则隐藏前一个保留后一个\n preLabel.hide();\n hasHide = true;\n }\n return hasHide;\n}\n/**\n * 保证 label 均匀显示 和 不出现重叠,主要解决文本层叠的问题,对于 limitLength 不处理\n * @param {boolean} isVertical 是否垂直\n * @param {IGroup} labelsGroup label 的分组\n * @param {number} limitLength 另一个方向的长度限制,autoHide 不关心\n * @param {AxisLabelAutoHideCfg} autoHideCfg autoHide overlap 的可选配置参数\n */\nexport function equidistance(isVertical, labelsGroup, limitLength, autoHideCfg) {\n var hasHide = parityHide(isVertical, labelsGroup, autoHideCfg);\n // 处理 timeCat 类型的 tick,在均匀的基础上,再次检查出现重叠的进行隐藏\n if (reserveOne(isVertical, labelsGroup, false)) {\n hasHide = true;\n }\n return hasHide;\n}\n/**\n * 同 equidistance, 首先会保证 labels 均匀显示,然后会保留首尾\n * @param isVertical\n * @param labelsGroup\n * @param {number} limitLength 另一个方向的长度限制,autoHide 不关心\n * @param {AxisLabelAutoHideCfg} autoHideCfg autoHide overlap 的可选配置参数\n */\nexport function equidistanceWithReverseBoth(isVertical, labelsGroup, limitLength, autoHideCfg) {\n var labels = labelsGroup.getChildren().slice(); // 复制数组\n var hasHide = parityHide(isVertical, labelsGroup, autoHideCfg);\n if (labels.length > 2) {\n var first = labels[0];\n var last = labels[labels.length - 1];\n // 如果第一个被隐藏了\n if (!first.get('visible')) {\n first.show();\n if (reserveOne(isVertical, labelsGroup, false, autoHideCfg)) {\n hasHide = true;\n }\n }\n // 如果最后一个被隐藏了\n if (!last.get('visible')) {\n last.show();\n if (reserveOne(isVertical, labelsGroup, true, autoHideCfg)) {\n hasHide = true;\n }\n }\n }\n return hasHide;\n}","import { each, isNumber } from '@antv/util';\nimport { getMaxLabelWidth } from '../../util/label';\nimport { getMatrixByAngle } from '../../util/matrix';\nimport Theme from '../../util/theme';\n// 统一设置文本的角度\nfunction setLabelsAngle(labels, angle) {\n each(labels, function (label) {\n var x = label.attr('x');\n var y = label.attr('y');\n var matrix = getMatrixByAngle({\n x: x,\n y: y\n }, angle);\n label.attr('matrix', matrix);\n });\n}\n// 旋转文本\nfunction labelRotate(isVertical, labelsGroup, limitLength, getAngle) {\n var labels = labelsGroup.getChildren();\n if (!labels.length) {\n return false;\n }\n if (!isVertical && labels.length < 2) {\n // 水平时至少有两个时才旋转\n return false;\n }\n var maxWidth = getMaxLabelWidth(labels);\n var isOverlap = false;\n if (isVertical) {\n // limitLength 为 0 或者 null 时不生效\n isOverlap = !!limitLength && maxWidth > limitLength;\n } else {\n // 同 limitLength 无关\n var tickWidth = Math.abs(labels[1].attr('x') - labels[0].attr('x'));\n isOverlap = maxWidth > tickWidth;\n }\n if (isOverlap) {\n var angle = getAngle(limitLength, maxWidth);\n setLabelsAngle(labels, angle);\n }\n return isOverlap;\n}\nexport function getDefault() {\n return fixedAngle;\n}\n/**\n * 固定角度旋转文本\n * @param {boolean} isVertical 是否垂直方向\n * @param {IGroup} labelsGroup 文本的 group\n * @param {number} limitLength 限定长度\n * @param {number} customRotate 自定义旋转角度\n * @return {boolean} 是否发生了旋转\n */\nexport function fixedAngle(isVertical, labelsGroup, limitLength, customRotate) {\n return labelRotate(isVertical, labelsGroup, limitLength, function () {\n if (isNumber(customRotate)) {\n return customRotate;\n }\n return isVertical ? Theme.verticalAxisRotate : Theme.horizontalAxisRotate;\n });\n}\n/**\n * 非固定角度旋转文本\n * @param {boolean} isVertical 是否垂直方向\n * @param {IGroup} labelsGroup 文本的 group\n * @param {number} limitLength 限定长度\n * @return {boolean} 是否发生了旋转\n */\nexport function unfixedAngle(isVertical, labelsGroup, limitLength) {\n return labelRotate(isVertical, labelsGroup, limitLength, function (length, maxWidth) {\n if (!length) {\n // 如果没有设置 limitLength,则使用固定的角度旋转\n return isVertical ? Theme.verticalAxisRotate : Theme.horizontalAxisRotate;\n }\n if (isVertical) {\n // 垂直时不需要判定 limitLength > maxWidth ,因为此时不会 overlap\n return -Math.acos(length / maxWidth);\n } else {\n var angle = 0;\n if (length > maxWidth) {\n // 需要判定,asin 的参数 -1, 1\n angle = Math.PI / 4;\n } else {\n angle = Math.asin(length / maxWidth);\n if (angle > Math.PI / 4) {\n // 大于 Math.PI / 4 时没意义\n angle = Math.PI / 4;\n }\n }\n return angle;\n }\n });\n}","import { __assign, __extends } from \"tslib\";\nimport { vec2 } from '@antv/matrix-util';\nimport { each, isFunction, isNil, isNumberEqual, isObject } from '@antv/util';\nimport AxisBase from './base';\nimport * as OverlapUtil from './overlap';\nvar Line = /** @class */function (_super) {\n __extends(Line, _super);\n function Line() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Line.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n type: 'line',\n locationType: 'region',\n /**\n * 起始点, x, y\n * @type {object}\n */\n start: null,\n /**\n * 结束点, x, y\n * @type {object}\n */\n end: null\n });\n };\n // 获取坐标轴线的 path\n Line.prototype.getLinePath = function () {\n var start = this.get('start');\n var end = this.get('end');\n var path = [];\n path.push(['M', start.x, start.y]);\n path.push(['L', end.x, end.y]);\n return path;\n };\n // 重新计算 layout bbox,考虑到 line 不显示\n Line.prototype.getInnerLayoutBBox = function () {\n var start = this.get('start');\n var end = this.get('end');\n var bbox = _super.prototype.getInnerLayoutBBox.call(this);\n var minX = Math.min(start.x, end.x, bbox.x);\n var minY = Math.min(start.y, end.y, bbox.y);\n var maxX = Math.max(start.x, end.x, bbox.maxX);\n var maxY = Math.max(start.y, end.y, bbox.maxY);\n return {\n x: minX,\n y: minY,\n minX: minX,\n minY: minY,\n maxX: maxX,\n maxY: maxY,\n width: maxX - minX,\n height: maxY - minY\n };\n };\n Line.prototype.isVertical = function () {\n var start = this.get('start');\n var end = this.get('end');\n return isNumberEqual(start.x, end.x);\n };\n Line.prototype.isHorizontal = function () {\n var start = this.get('start');\n var end = this.get('end');\n return isNumberEqual(start.y, end.y);\n };\n Line.prototype.getTickPoint = function (tickValue) {\n var self = this;\n var start = self.get('start');\n var end = self.get('end');\n var regionX = end.x - start.x;\n var regionY = end.y - start.y;\n return {\n x: start.x + regionX * tickValue,\n y: start.y + regionY * tickValue\n };\n };\n // 直线坐标轴下任一点的向量方向都相同\n Line.prototype.getSideVector = function (offset) {\n var axisVector = this.getAxisVector();\n var normal = vec2.normalize([0, 0], axisVector);\n var factor = this.get('verticalFactor');\n var verticalVector = [normal[1], normal[0] * -1]; // 垂直方向,逆时针方向\n return vec2.scale([0, 0], verticalVector, offset * factor);\n };\n // 获取坐标轴的向量\n Line.prototype.getAxisVector = function () {\n var start = this.get('start');\n var end = this.get('end');\n return [end.x - start.x, end.y - start.y];\n };\n Line.prototype.processOverlap = function (labelGroup) {\n var _this = this;\n var isVertical = this.isVertical();\n var isHorizontal = this.isHorizontal();\n // 非垂直,或者非水平时不处理遮挡问题\n if (!isVertical && !isHorizontal) {\n return;\n }\n var labelCfg = this.get('label');\n var titleCfg = this.get('title');\n var verticalLimitLength = this.get('verticalLimitLength');\n var labelOffset = labelCfg.offset;\n var limitLength = verticalLimitLength;\n var titleHeight = 0;\n var titleSpacing = 0;\n if (titleCfg) {\n titleHeight = titleCfg.style.fontSize;\n titleSpacing = titleCfg.spacing;\n }\n if (limitLength) {\n limitLength = limitLength - labelOffset - titleSpacing - titleHeight;\n }\n var overlapOrder = this.get('overlapOrder');\n each(overlapOrder, function (name) {\n if (labelCfg[name] && _this.canProcessOverlap(name)) {\n _this.autoProcessOverlap(name, labelCfg[name], labelGroup, limitLength);\n }\n });\n if (titleCfg) {\n if (isNil(titleCfg.offset)) {\n // 调整 title 的 offset\n var bbox = labelGroup.getCanvasBBox();\n var length_1 = isVertical ? bbox.width : bbox.height;\n // 如果用户没有设置 offset,则自动计算\n titleCfg.offset = labelOffset + length_1 + titleSpacing + titleHeight / 2;\n }\n }\n };\n /**\n * 是否可以执行某一 overlap\n * @param name\n */\n Line.prototype.canProcessOverlap = function (name) {\n var labelCfg = this.get('label');\n // 对 autoRotate,如果配置了旋转角度,直接进行固定角度旋转\n if (name === 'autoRotate') {\n return isNil(labelCfg.rotate);\n }\n // 默认所有 overlap 都可执行\n return true;\n };\n Line.prototype.autoProcessOverlap = function (name, value, labelGroup, limitLength) {\n var _this = this;\n var isVertical = this.isVertical();\n var hasAdjusted = false;\n var util = OverlapUtil[name];\n if (value === true) {\n var labelCfg = this.get('label');\n // true 形式的配置:使用 overlap 默认的的处理方法进行处理\n hasAdjusted = util.getDefault()(isVertical, labelGroup, limitLength);\n } else if (isFunction(value)) {\n // 回调函数形式的配置: 用户可以传入回调函数\n hasAdjusted = value(isVertical, labelGroup, limitLength);\n } else if (isObject(value)) {\n // object 形式的配置方式:包括 处理方法 type, 和可选参数配置 cfg\n var overlapCfg = value;\n if (util[overlapCfg.type]) {\n hasAdjusted = util[overlapCfg.type](isVertical, labelGroup, limitLength, overlapCfg.cfg);\n }\n } else if (util[value]) {\n // 字符串类型的配置:按照名称执行 overlap 处理方法\n hasAdjusted = util[value](isVertical, labelGroup, limitLength);\n }\n if (name === 'autoRotate') {\n // 文本旋转后,文本的对齐方式可能就不合适了\n if (hasAdjusted) {\n var labels = labelGroup.getChildren();\n var verticalFactor_1 = this.get('verticalFactor');\n each(labels, function (label) {\n var textAlign = label.attr('textAlign');\n if (textAlign === 'center') {\n // 居中的文本需要调整旋转度\n var newAlign = verticalFactor_1 > 0 ? 'end' : 'start';\n label.attr('textAlign', newAlign);\n }\n });\n }\n } else if (name === 'autoHide') {\n var children = labelGroup.getChildren().slice(0); // 复制数组,删除时不会出错\n each(children, function (label) {\n if (!label.get('visible')) {\n if (_this.get('isRegister')) {\n // 已经注册过了,则删除\n _this.unregisterElement(label);\n }\n label.remove(); // 防止 label 数量太多,所以统一删除\n }\n });\n }\n };\n\n return Line;\n}(AxisBase);\nexport default Line;","var _a;\nimport Theme from '../util/theme';\n// tooltip 相关 dom 的 css 类名\nimport * as CssConst from './css-const';\nexport default (_a = {},\n// css style for tooltip\n_a[\"\" + CssConst.CONTAINER_CLASS] = {\n position: 'relative'\n}, _a[\"\" + CssConst.CROSSHAIR_LINE] = {\n position: 'absolute',\n backgroundColor: 'rgba(0, 0, 0, 0.25)'\n}, _a[\"\" + CssConst.CROSSHAIR_TEXT] = {\n position: 'absolute',\n color: Theme.textColor,\n fontFamily: Theme.fontFamily\n}, _a);","import { __assign, __extends } from \"tslib\";\nimport { each, isNil, isFunction, isObject } from '@antv/util';\nimport { vec2 } from '@antv/matrix-util';\nimport AxisBase from './base';\nimport * as OverlapUtil from './overlap';\nvar Circle = /** @class */function (_super) {\n __extends(Circle, _super);\n function Circle() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Circle.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n type: 'circle',\n locationType: 'circle',\n center: null,\n radius: null,\n startAngle: -Math.PI / 2,\n endAngle: Math.PI * 3 / 2\n });\n };\n Circle.prototype.getLinePath = function () {\n var center = this.get('center');\n var x = center.x;\n var y = center.y;\n var rx = this.get('radius');\n var ry = rx;\n var startAngle = this.get('startAngle');\n var endAngle = this.get('endAngle');\n var path = [];\n if (Math.abs(endAngle - startAngle) === Math.PI * 2) {\n path = [['M', x, y - ry], ['A', rx, ry, 0, 1, 1, x, y + ry], ['A', rx, ry, 0, 1, 1, x, y - ry], ['Z']];\n } else {\n var startPoint = this.getCirclePoint(startAngle);\n var endPoint = this.getCirclePoint(endAngle);\n var large = Math.abs(endAngle - startAngle) > Math.PI ? 1 : 0;\n var sweep = startAngle > endAngle ? 0 : 1;\n path = [['M', x, y], ['L', startPoint.x, startPoint.y], ['A', rx, ry, 0, large, sweep, endPoint.x, endPoint.y], ['L', x, y]];\n }\n return path;\n };\n Circle.prototype.getTickPoint = function (tickValue) {\n var startAngle = this.get('startAngle');\n var endAngle = this.get('endAngle');\n var angle = startAngle + (endAngle - startAngle) * tickValue;\n return this.getCirclePoint(angle);\n };\n // 获取垂直于坐标轴的向量\n Circle.prototype.getSideVector = function (offset, point) {\n var center = this.get('center');\n var vector = [point.x - center.x, point.y - center.y];\n var factor = this.get('verticalFactor');\n var vecLen = vec2.length(vector);\n vec2.scale(vector, vector, factor * offset / vecLen);\n return vector;\n };\n // 获取沿坐标轴方向的向量\n Circle.prototype.getAxisVector = function (point) {\n var center = this.get('center');\n var vector = [point.x - center.x, point.y - center.y];\n return [vector[1], -1 * vector[0]]; // 获取顺时针方向的向量\n };\n // 根据圆心和半径获取点\n Circle.prototype.getCirclePoint = function (angle, radius) {\n var center = this.get('center');\n radius = radius || this.get('radius');\n return {\n x: center.x + Math.cos(angle) * radius,\n y: center.y + Math.sin(angle) * radius\n };\n };\n /**\n * 是否可以执行某一 overlap\n * @param name\n */\n Circle.prototype.canProcessOverlap = function (name) {\n var labelCfg = this.get('label');\n // 对 autoRotate,如果配置了旋转角度,直接进行固定角度旋转\n if (name === 'autoRotate') {\n return isNil(labelCfg.rotate);\n }\n // 默认所有 overlap 都可执行\n return true;\n };\n Circle.prototype.processOverlap = function (labelGroup) {\n var _this = this;\n var labelCfg = this.get('label');\n var titleCfg = this.get('title');\n var verticalLimitLength = this.get('verticalLimitLength');\n var labelOffset = labelCfg.offset;\n var limitLength = verticalLimitLength;\n var titleHeight = 0;\n var titleSpacing = 0;\n if (titleCfg) {\n titleHeight = titleCfg.style.fontSize;\n titleSpacing = titleCfg.spacing;\n }\n if (limitLength) {\n limitLength = limitLength - labelOffset - titleSpacing - titleHeight;\n }\n var overlapOrder = this.get('overlapOrder');\n each(overlapOrder, function (name) {\n if (labelCfg[name] && _this.canProcessOverlap(name)) {\n _this.autoProcessOverlap(name, labelCfg[name], labelGroup, limitLength);\n }\n });\n if (titleCfg) {\n if (isNil(titleCfg.offset)) {\n // 调整 title 的 offset\n var length_1 = labelGroup.getCanvasBBox().height;\n // 如果用户没有设置 offset,则自动计算\n titleCfg.offset = labelOffset + length_1 + titleSpacing + titleHeight / 2;\n }\n }\n };\n Circle.prototype.autoProcessOverlap = function (name, value, labelGroup, limitLength) {\n var _this = this;\n var hasAdjusted = false;\n var util = OverlapUtil[name];\n if (limitLength > 0) {\n if (value === true) {\n // true 形式的配置:使用 overlap 默认的的处理方法进行处理\n hasAdjusted = util.getDefault()(false, labelGroup, limitLength);\n } else if (isFunction(value)) {\n // 回调函数形式的配置: 用户可以传入回调函数\n hasAdjusted = value(false, labelGroup, limitLength);\n } else if (isObject(value)) {\n // object 形式的配置方式:包括 处理方法 type, 和可选参数配置 cfg\n var overlapCfg = value;\n if (util[overlapCfg.type]) {\n hasAdjusted = util[overlapCfg.type](false, labelGroup, limitLength, overlapCfg.cfg);\n }\n } else if (util[value]) {\n // 字符串类型的配置:按照名称执行 overlap 处理方法\n hasAdjusted = util[value](false, labelGroup, limitLength);\n }\n }\n if (name === 'autoRotate') {\n // 文本旋转后,文本的对齐方式可能就不合适了\n if (hasAdjusted) {\n var labels = labelGroup.getChildren();\n var verticalFactor_1 = this.get('verticalFactor');\n each(labels, function (label) {\n var textAlign = label.attr('textAlign');\n if (textAlign === 'center') {\n // 居中的文本需要调整旋转度\n var newAlign = verticalFactor_1 > 0 ? 'end' : 'start';\n label.attr('textAlign', newAlign);\n }\n });\n }\n } else if (name === 'autoHide') {\n var children = labelGroup.getChildren().slice(0); // 复制数组,删除时不会出错\n each(children, function (label) {\n if (!label.get('visible')) {\n if (_this.get('isRegister')) {\n // 已经注册过了,则删除\n _this.unregisterElement(label);\n }\n label.remove(); // 防止 label 数量太多,所以统一删除\n }\n });\n }\n };\n\n return Circle;\n}(AxisBase);\nexport default Circle;","import { __assign, __extends } from \"tslib\";\nimport { isNil } from '@antv/util';\nimport GroupComponent from '../abstract/group-component';\nimport { getMatrixByAngle } from '../util/matrix';\nimport Theme from '../util/theme';\nimport { formatPadding } from '../util/util';\nvar CrosshairBase = /** @class */function (_super) {\n __extends(CrosshairBase, _super);\n function CrosshairBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n CrosshairBase.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n name: 'crosshair',\n type: 'base',\n line: {},\n text: null,\n textBackground: {},\n capture: false,\n defaultCfg: {\n line: {\n style: {\n lineWidth: 1,\n stroke: Theme.lineColor\n }\n },\n text: {\n position: 'start',\n offset: 10,\n autoRotate: false,\n content: null,\n style: {\n fill: Theme.textColor,\n textAlign: 'center',\n textBaseline: 'middle',\n fontFamily: Theme.fontFamily\n }\n },\n textBackground: {\n padding: 5,\n style: {\n stroke: Theme.lineColor\n }\n }\n }\n });\n };\n CrosshairBase.prototype.renderInner = function (group) {\n if (this.get('line')) {\n this.renderLine(group);\n }\n if (this.get('text')) {\n this.renderText(group);\n this.renderBackground(group);\n }\n };\n CrosshairBase.prototype.renderText = function (group) {\n var text = this.get('text');\n var style = text.style,\n autoRotate = text.autoRotate,\n content = text.content;\n if (!isNil(content)) {\n var textPoint = this.getTextPoint();\n var matrix = null;\n if (autoRotate) {\n var angle = this.getRotateAngle();\n matrix = getMatrixByAngle(textPoint, angle);\n }\n this.addShape(group, {\n type: 'text',\n name: 'crosshair-text',\n id: this.getElementId('text'),\n attrs: __assign(__assign(__assign({}, textPoint), {\n text: content,\n matrix: matrix\n }), style)\n });\n }\n };\n CrosshairBase.prototype.renderLine = function (group) {\n var path = this.getLinePath();\n var line = this.get('line');\n var style = line.style;\n this.addShape(group, {\n type: 'path',\n name: 'crosshair-line',\n id: this.getElementId('line'),\n attrs: __assign({\n path: path\n }, style)\n });\n };\n // 绘制文本的背景\n CrosshairBase.prototype.renderBackground = function (group) {\n var textId = this.getElementId('text');\n var textShape = group.findById(textId); // 查找文本\n var textBackground = this.get('textBackground');\n if (textBackground && textShape) {\n var textBBox = textShape.getBBox();\n var padding = formatPadding(textBackground.padding); // 用户传入的 padding 格式不定\n var style = textBackground.style;\n var backgroundShape = this.addShape(group, {\n type: 'rect',\n name: 'crosshair-text-background',\n id: this.getElementId('text-background'),\n attrs: __assign({\n x: textBBox.x - padding[3],\n y: textBBox.y - padding[0],\n width: textBBox.width + padding[1] + padding[3],\n height: textBBox.height + padding[0] + padding[2],\n matrix: textShape.attr('matrix')\n }, style)\n });\n backgroundShape.toBack();\n }\n };\n return CrosshairBase;\n}(GroupComponent);\nexport default CrosshairBase;","import { __assign, __extends } from \"tslib\";\nimport { getTextPoint } from '../util/util';\nimport CrosshairBase from './base';\nvar LineCrosshair = /** @class */function (_super) {\n __extends(LineCrosshair, _super);\n function LineCrosshair() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n LineCrosshair.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n type: 'line',\n locationType: 'region',\n start: null,\n end: null\n });\n };\n // 直线的文本需要同直线垂直\n LineCrosshair.prototype.getRotateAngle = function () {\n var _a = this.getLocation(),\n start = _a.start,\n end = _a.end;\n var position = this.get('text').position;\n var angle = Math.atan2(end.y - start.y, end.x - start.x);\n var tangentAngle = position === 'start' ? angle - Math.PI / 2 : angle + Math.PI / 2;\n return tangentAngle;\n };\n LineCrosshair.prototype.getTextPoint = function () {\n var _a = this.getLocation(),\n start = _a.start,\n end = _a.end;\n var _b = this.get('text'),\n position = _b.position,\n offset = _b.offset;\n return getTextPoint(start, end, position, offset);\n };\n LineCrosshair.prototype.getLinePath = function () {\n var _a = this.getLocation(),\n start = _a.start,\n end = _a.end;\n return [['M', start.x, start.y], ['L', end.x, end.y]];\n };\n return LineCrosshair;\n}(CrosshairBase);\nexport default LineCrosshair;","import { __assign, __extends } from \"tslib\";\nimport { getCirclePoint } from '../util/util';\nimport CrosshairBase from './base';\nvar LineCrosshair = /** @class */function (_super) {\n __extends(LineCrosshair, _super);\n function LineCrosshair() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n LineCrosshair.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n type: 'circle',\n locationType: 'circle',\n center: null,\n radius: 100,\n startAngle: -Math.PI / 2,\n endAngle: Math.PI * 3 / 2\n });\n };\n LineCrosshair.prototype.getRotateAngle = function () {\n var _a = this.getLocation(),\n startAngle = _a.startAngle,\n endAngle = _a.endAngle;\n var position = this.get('text').position;\n var tangentAngle = position === 'start' ? startAngle + Math.PI / 2 : endAngle - Math.PI / 2;\n return tangentAngle;\n };\n LineCrosshair.prototype.getTextPoint = function () {\n var text = this.get('text');\n var position = text.position,\n offset = text.offset;\n var _a = this.getLocation(),\n center = _a.center,\n radius = _a.radius,\n startAngle = _a.startAngle,\n endAngle = _a.endAngle;\n var angle = position === 'start' ? startAngle : endAngle;\n var tangentAngle = this.getRotateAngle() - Math.PI;\n var point = getCirclePoint(center, radius, angle);\n // 这个地方其实应该求切线向量然后在乘以 offset,但是太啰嗦了,直接给出结果\n // const tangent = [Math.cos(tangentAngle), Math.sin(tangentAngle)];\n // const offsetVector = vec2.scale([], tangent, offset);\n var offsetX = Math.cos(tangentAngle) * offset;\n var offsetY = Math.sin(tangentAngle) * offset;\n return {\n x: point.x + offsetX,\n y: point.y + offsetY\n };\n };\n LineCrosshair.prototype.getLinePath = function () {\n var _a = this.getLocation(),\n center = _a.center,\n radius = _a.radius,\n startAngle = _a.startAngle,\n endAngle = _a.endAngle;\n var path = null;\n if (endAngle - startAngle === Math.PI * 2) {\n // 整圆\n var x = center.x,\n y = center.y;\n path = [['M', x, y - radius], ['A', radius, radius, 0, 1, 1, x, y + radius], ['A', radius, radius, 0, 1, 1, x, y - radius], ['Z']];\n } else {\n var startPoint = getCirclePoint(center, radius, startAngle);\n var endPoint = getCirclePoint(center, radius, endAngle);\n var large = Math.abs(endAngle - startAngle) > Math.PI ? 1 : 0;\n var sweep = startAngle > endAngle ? 0 : 1;\n path = [['M', startPoint.x, startPoint.y], ['A', radius, radius, 0, large, sweep, endPoint.x, endPoint.y]];\n }\n return path;\n };\n return LineCrosshair;\n}(CrosshairBase);\nexport default LineCrosshair;","export var CONTAINER_CLASS = 'g2-crosshair';\nexport var CROSSHAIR_LINE = CONTAINER_CLASS + \"-line\";\nexport var CROSSHAIR_TEXT = CONTAINER_CLASS + \"-text\";","import { __assign, __extends } from \"tslib\";\nimport { createDom, modifyCSS } from '@antv/dom-util';\nimport { substitute, hasKey } from '@antv/util';\nimport { toPx, getTextPoint } from '../util/util';\nimport HtmlComponent from '../abstract/html-component';\nimport * as CssConst from './css-const';\nimport HtmlTheme from './html-theme';\nvar HtmlCrosshair = /** @class */function (_super) {\n __extends(HtmlCrosshair, _super);\n function HtmlCrosshair() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n HtmlCrosshair.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n name: 'crosshair',\n type: 'html',\n locationType: 'region',\n start: {\n x: 0,\n y: 0\n },\n end: {\n x: 0,\n y: 0\n },\n capture: false,\n text: null,\n containerTpl: \"
        \",\n crosshairTpl: \"
        \",\n textTpl: \"{content}\",\n domStyles: null,\n containerClassName: CssConst.CONTAINER_CLASS,\n defaultStyles: HtmlTheme,\n defaultCfg: {\n text: {\n position: 'start',\n content: null,\n align: 'center',\n offset: 10\n }\n }\n });\n };\n HtmlCrosshair.prototype.render = function () {\n this.resetText();\n this.resetPosition();\n };\n // 绘制 crosshair\n HtmlCrosshair.prototype.initCrossHair = function () {\n var container = this.getContainer();\n var crosshairTpl = this.get('crosshairTpl');\n var crosshairEl = createDom(crosshairTpl);\n container.appendChild(crosshairEl);\n this.applyStyle(CssConst.CROSSHAIR_LINE, crosshairEl);\n this.set('crosshairEl', crosshairEl);\n };\n // 获取文本的位置\n HtmlCrosshair.prototype.getTextPoint = function () {\n var _a = this.getLocation(),\n start = _a.start,\n end = _a.end;\n var _b = this.get('text'),\n position = _b.position,\n offset = _b.offset;\n return getTextPoint(start, end, position, offset);\n };\n // 设置 text\n HtmlCrosshair.prototype.resetText = function () {\n var text = this.get('text');\n var textEl = this.get('textEl');\n if (text) {\n var content = text.content;\n if (!textEl) {\n var container = this.getContainer();\n var textTpl = substitute(this.get('textTpl'), text);\n textEl = createDom(textTpl);\n container.appendChild(textEl);\n this.applyStyle(CssConst.CROSSHAIR_TEXT, textEl);\n this.set('textEl', textEl);\n }\n textEl.innerHTML = content;\n } else if (textEl) {\n textEl.remove();\n }\n };\n // 是否垂直\n HtmlCrosshair.prototype.isVertical = function (start, end) {\n return start.x === end.x;\n };\n // 重新调整位置\n HtmlCrosshair.prototype.resetPosition = function () {\n var crosshairEl = this.get('crosshairEl');\n if (!crosshairEl) {\n this.initCrossHair();\n crosshairEl = this.get('crosshairEl');\n }\n var start = this.get('start');\n var end = this.get('end');\n var minX = Math.min(start.x, end.x);\n var minY = Math.min(start.y, end.y);\n if (this.isVertical(start, end)) {\n modifyCSS(crosshairEl, {\n width: '1px',\n height: toPx(Math.abs(end.y - start.y))\n });\n } else {\n modifyCSS(crosshairEl, {\n height: '1px',\n width: toPx(Math.abs(end.x - start.x))\n });\n }\n modifyCSS(crosshairEl, {\n top: toPx(minY),\n left: toPx(minX)\n });\n this.alignText();\n };\n HtmlCrosshair.prototype.alignText = function () {\n // 重新设置 text 位置\n var textEl = this.get('textEl');\n if (textEl) {\n var align = this.get('text').align;\n var clientWidth = textEl.clientWidth;\n var point = this.getTextPoint();\n switch (align) {\n case 'center':\n point.x = point.x - clientWidth / 2;\n break;\n case 'right':\n point.x = point.x - clientWidth;\n case 'left':\n break;\n }\n modifyCSS(textEl, {\n top: toPx(point.y),\n left: toPx(point.x)\n });\n }\n };\n HtmlCrosshair.prototype.updateInner = function (cfg) {\n if (hasKey(cfg, 'text')) {\n this.resetText();\n }\n _super.prototype.updateInner.call(this, cfg);\n };\n return HtmlCrosshair;\n}(HtmlComponent);\nexport default HtmlCrosshair;","import { __assign, __extends } from \"tslib\";\nimport { each, isString, mix, isFunction } from '@antv/util';\nimport GroupComponent from '../abstract/group-component';\nimport Theme from '../util/theme';\nvar GridBase = /** @class */function (_super) {\n __extends(GridBase, _super);\n function GridBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n GridBase.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n name: 'grid',\n line: {},\n alternateColor: null,\n capture: false,\n items: [],\n closed: false,\n defaultCfg: {\n line: {\n type: 'line',\n style: {\n lineWidth: 1,\n stroke: Theme.lineColor\n }\n }\n }\n });\n };\n /**\n * 获取栅格线的类型\n * @return {string} 栅格线类型\n */\n GridBase.prototype.getLineType = function () {\n var line = this.get('line') || this.get('defaultCfg').line;\n return line.type;\n };\n GridBase.prototype.renderInner = function (group) {\n this.drawGrid(group);\n };\n GridBase.prototype.getAlternatePath = function (prePoints, points) {\n var regionPath = this.getGridPath(prePoints);\n var reversePoints = points.slice(0).reverse();\n var nextPath = this.getGridPath(reversePoints, true);\n var closed = this.get('closed');\n if (closed) {\n regionPath = regionPath.concat(nextPath);\n } else {\n nextPath[0][0] = 'L'; // 更新第一个节点\n regionPath = regionPath.concat(nextPath);\n regionPath.push(['Z']);\n }\n return regionPath;\n };\n // 获取路径的配置项\n GridBase.prototype.getPathStyle = function () {\n return this.get('line').style;\n };\n // 绘制栅格\n GridBase.prototype.drawGrid = function (group) {\n var _this = this;\n var line = this.get('line');\n var items = this.get('items');\n var alternateColor = this.get('alternateColor');\n var preItem = null;\n each(items, function (item, index) {\n var id = item.id || index;\n // 绘制栅格线\n if (line) {\n var style = _this.getPathStyle();\n style = isFunction(style) ? style(item, index, items) : style;\n var lineId = _this.getElementId(\"line-\" + id);\n var gridPath = _this.getGridPath(item.points);\n _this.addShape(group, {\n type: 'path',\n name: 'grid-line',\n id: lineId,\n attrs: mix({\n path: gridPath\n }, style)\n });\n }\n // 如果存在 alternateColor 则绘制矩形\n // 从第二个栅格线开始绘制\n if (alternateColor && index > 0) {\n var regionId = _this.getElementId(\"region-\" + id);\n var isEven = index % 2 === 0;\n if (isString(alternateColor)) {\n // 如果颜色是单值,则是仅绘制偶数时的区域\n if (isEven) {\n _this.drawAlternateRegion(regionId, group, preItem.points, item.points, alternateColor);\n }\n } else {\n var color = isEven ? alternateColor[1] : alternateColor[0];\n _this.drawAlternateRegion(regionId, group, preItem.points, item.points, color);\n }\n }\n preItem = item;\n });\n };\n // 绘制栅格线间的间隔\n GridBase.prototype.drawAlternateRegion = function (id, group, prePoints, points, color) {\n var regionPath = this.getAlternatePath(prePoints, points);\n this.addShape(group, {\n type: 'path',\n id: id,\n name: 'grid-region',\n attrs: {\n path: regionPath,\n fill: color\n }\n });\n };\n return GridBase;\n}(GroupComponent);\nexport default GridBase;","import { __assign, __extends } from \"tslib\";\nimport { each } from '@antv/util';\nimport GridBase from './base';\nfunction distance(x1, y1, x2, y2) {\n var dx = x2 - x1;\n var dy = y2 - y1;\n return Math.sqrt(dx * dx + dy * dy);\n}\nvar Circle = /** @class */function (_super) {\n __extends(Circle, _super);\n function Circle() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Circle.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n type: 'circle',\n /**\n * 中心点\n * @type {object}\n */\n center: null,\n /**\n * 栅格线是否封闭\n * @type {true}\n */\n closed: true\n });\n };\n Circle.prototype.getGridPath = function (points, reversed) {\n var lineType = this.getLineType();\n var closed = this.get('closed');\n var path = [];\n if (points.length) {\n // 防止出错\n if (lineType === 'circle') {\n var center = this.get('center');\n var firstPoint = points[0];\n var radius_1 = distance(center.x, center.y, firstPoint.x, firstPoint.y);\n var sweepFlag_1 = reversed ? 0 : 1; // 顺时针还是逆时针\n if (closed) {\n // 封闭时,绘制整个圆\n path.push(['M', center.x, center.y - radius_1]);\n path.push(['A', radius_1, radius_1, 0, 0, sweepFlag_1, center.x, center.y + radius_1]);\n path.push(['A', radius_1, radius_1, 0, 0, sweepFlag_1, center.x, center.y - radius_1]);\n path.push(['Z']);\n } else {\n each(points, function (point, index) {\n if (index === 0) {\n path.push(['M', point.x, point.y]);\n } else {\n path.push(['A', radius_1, radius_1, 0, 0, sweepFlag_1, point.x, point.y]);\n }\n });\n }\n } else {\n each(points, function (point, index) {\n if (index === 0) {\n path.push(['M', point.x, point.y]);\n } else {\n path.push(['L', point.x, point.y]);\n }\n });\n if (closed) {\n path.push(['Z']);\n }\n }\n }\n return path;\n };\n return Circle;\n}(GridBase);\nexport default Circle;","var _a;\nimport Theme from '../util/theme';\n// tooltip 相关 dom 的 css 类名\nimport * as CssConst from './css-const';\nexport default (_a = {},\n// css style for tooltip\n_a[\"\" + CssConst.CONTAINER_CLASS] = {\n position: 'absolute',\n visibility: 'visible',\n // @2018-07-25 by blue.lb 这里去掉浮动,火狐上存在样式错位\n // whiteSpace: 'nowrap',\n zIndex: 8,\n transition: 'visibility 0.2s cubic-bezier(0.23, 1, 0.32, 1), ' + 'left 0.4s cubic-bezier(0.23, 1, 0.32, 1), ' + 'top 0.4s cubic-bezier(0.23, 1, 0.32, 1)',\n backgroundColor: 'rgba(255, 255, 255, 0.9)',\n boxShadow: '0px 0px 10px #aeaeae',\n borderRadius: '3px',\n color: 'rgb(87, 87, 87)',\n fontSize: '12px',\n fontFamily: Theme.fontFamily,\n lineHeight: '20px',\n padding: '10px 10px 6px 10px'\n}, _a[\"\" + CssConst.TITLE_CLASS] = {\n marginBottom: '4px'\n}, _a[\"\" + CssConst.LIST_CLASS] = {\n margin: '0px',\n listStyleType: 'none',\n padding: '0px'\n}, _a[\"\" + CssConst.LIST_ITEM_CLASS] = {\n listStyleType: 'none',\n marginBottom: '4px'\n}, _a[\"\" + CssConst.MARKER_CLASS] = {\n width: '8px',\n height: '8px',\n borderRadius: '50%',\n display: 'inline-block',\n marginRight: '8px'\n}, _a[\"\" + CssConst.VALUE_CLASS] = {\n display: 'inline-block',\n float: 'right',\n marginLeft: '30px'\n}, _a[\"\" + CssConst.CROSSHAIR_X] = {\n position: 'absolute',\n width: '1px',\n backgroundColor: 'rgba(0, 0, 0, 0.25)'\n}, _a[\"\" + CssConst.CROSSHAIR_Y] = {\n position: 'absolute',\n height: '1px',\n backgroundColor: 'rgba(0, 0, 0, 0.25)'\n}, _a);","import { __assign, __extends } from \"tslib\";\nimport { each } from '@antv/util';\nimport GridBase from './base';\nvar Line = /** @class */function (_super) {\n __extends(Line, _super);\n function Line() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Line.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n type: 'line'\n });\n };\n Line.prototype.getGridPath = function (points) {\n var path = [];\n each(points, function (point, index) {\n if (index === 0) {\n path.push(['M', point.x, point.y]);\n } else {\n path.push(['L', point.x, point.y]);\n }\n });\n return path;\n };\n return Line;\n}(GridBase);\nexport default Line;","import { __assign, __extends } from \"tslib\";\nimport GroupComponent from '../abstract/group-component';\nimport { createBBox, formatPadding } from '../util/util';\nvar LegendBase = /** @class */function (_super) {\n __extends(LegendBase, _super);\n function LegendBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n LegendBase.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n name: 'legend',\n /**\n * 布局方式: horizontal,vertical\n * @type {String}\n */\n layout: 'horizontal',\n locationType: 'point',\n x: 0,\n y: 0,\n offsetX: 0,\n offsetY: 0,\n title: null,\n background: null\n });\n };\n LegendBase.prototype.getLayoutBBox = function () {\n var bbox = _super.prototype.getLayoutBBox.call(this);\n var maxWidth = this.get('maxWidth');\n var maxHeight = this.get('maxHeight');\n var width = bbox.width,\n height = bbox.height;\n if (maxWidth) {\n width = Math.min(width, maxWidth);\n }\n if (maxHeight) {\n height = Math.min(height, maxHeight);\n }\n return createBBox(bbox.minX, bbox.minY, width, height);\n };\n LegendBase.prototype.setLocation = function (cfg) {\n this.set('x', cfg.x);\n this.set('y', cfg.y);\n this.resetLocation();\n };\n LegendBase.prototype.resetLocation = function () {\n var x = this.get('x');\n var y = this.get('y');\n var offsetX = this.get('offsetX');\n var offsetY = this.get('offsetY');\n this.moveElementTo(this.get('group'), {\n x: x + offsetX,\n y: y + offsetY\n });\n };\n LegendBase.prototype.applyOffset = function () {\n this.resetLocation();\n };\n // 获取当前绘制的点\n LegendBase.prototype.getDrawPoint = function () {\n return this.get('currentPoint');\n };\n LegendBase.prototype.setDrawPoint = function (point) {\n return this.set('currentPoint', point);\n };\n // 复写父类定义的绘制方法\n LegendBase.prototype.renderInner = function (group) {\n this.resetDraw();\n if (this.get('title')) {\n this.drawTitle(group);\n }\n this.drawLegendContent(group);\n if (this.get('background')) {\n this.drawBackground(group);\n }\n // this.resetLocation(); // 在顶层已经在处理偏移时一起处理了\n };\n // 绘制背景\n LegendBase.prototype.drawBackground = function (group) {\n var background = this.get('background');\n var bbox = group.getBBox();\n var padding = formatPadding(background.padding);\n var attrs = __assign({\n // 背景从 (0,0) 开始绘制\n x: 0,\n y: 0,\n width: bbox.width + padding[1] + padding[3],\n height: bbox.height + padding[0] + padding[2]\n }, background.style);\n var backgroundShape = this.addShape(group, {\n type: 'rect',\n id: this.getElementId('background'),\n name: 'legend-background',\n attrs: attrs\n });\n backgroundShape.toBack();\n };\n // 绘制标题,标题在图例项的上面\n LegendBase.prototype.drawTitle = function (group) {\n var currentPoint = this.get('currentPoint');\n var titleCfg = this.get('title');\n var spacing = titleCfg.spacing,\n style = titleCfg.style,\n text = titleCfg.text;\n var shape = this.addShape(group, {\n type: 'text',\n id: this.getElementId('title'),\n name: 'legend-title',\n attrs: __assign({\n text: text,\n x: currentPoint.x,\n y: currentPoint.y\n }, style)\n });\n var bbox = shape.getBBox();\n // 标题单独在一行\n this.set('currentPoint', {\n x: currentPoint.x,\n y: bbox.maxY + spacing\n });\n };\n // 重置绘制时开始的位置,如果绘制边框,考虑边框的 padding\n LegendBase.prototype.resetDraw = function () {\n var background = this.get('background');\n var currentPoint = {\n x: 0,\n y: 0\n };\n if (background) {\n var padding = formatPadding(background.padding);\n currentPoint.x = padding[3]; // 左边 padding\n currentPoint.y = padding[0]; // 上面 padding\n }\n\n this.set('currentPoint', currentPoint); // 设置绘制的初始位置\n };\n\n return LegendBase;\n}(GroupComponent);\nexport default LegendBase;","import { __assign, __extends, __rest } from \"tslib\";\nimport { clamp, deepMix, each, filter, get, mix, isNumber, isFunction } from '@antv/util';\nimport { ellipsisLabel } from '../util/label';\nimport { getMatrixByAngle, getMatrixByTranslate } from '../util/matrix';\nimport { getStatesStyle } from '../util/state';\nimport Theme from '../util/theme';\nimport LegendBase from './base';\n/**\n * 分页器 默认配置\n */\nvar DEFAULT_PAGE_NAVIGATOR = {\n marker: {\n style: {\n inactiveFill: '#000',\n inactiveOpacity: 0.45,\n fill: '#000',\n opacity: 1,\n size: 12\n }\n },\n text: {\n style: {\n fill: '#ccc',\n fontSize: 12\n }\n }\n};\n// 默认 文本style\nvar textStyle = {\n fill: Theme.textColor,\n fontSize: 12,\n textAlign: 'start',\n textBaseline: 'middle',\n fontFamily: Theme.fontFamily,\n fontWeight: 'normal',\n lineHeight: 12\n};\nvar RIGHT_ARROW_NAME = 'navigation-arrow-right';\nvar LEFT_ARROW_NAME = 'navigation-arrow-left';\nvar ROTATE_MAP = {\n right: 90 * Math.PI / 180,\n left: (360 - 90) * Math.PI / 180,\n up: 0,\n down: 180 * Math.PI / 180\n};\nvar Category = /** @class */function (_super) {\n __extends(Category, _super);\n function Category() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.currentPageIndex = 1;\n _this.totalPagesCnt = 1;\n _this.pageWidth = 0;\n _this.pageHeight = 0;\n _this.startX = 0;\n _this.startY = 0;\n _this.onNavigationBack = function () {\n var itemGroup = _this.getElementByLocalId('item-group');\n if (_this.currentPageIndex > 1) {\n _this.currentPageIndex -= 1;\n _this.updateNavigation();\n var matrix = _this.getCurrentNavigationMatrix();\n if (_this.get('animate')) {\n itemGroup.animate({\n matrix: matrix\n }, 100);\n } else {\n itemGroup.attr({\n matrix: matrix\n });\n }\n }\n };\n _this.onNavigationAfter = function () {\n var itemGroup = _this.getElementByLocalId('item-group');\n if (_this.currentPageIndex < _this.totalPagesCnt) {\n _this.currentPageIndex += 1;\n _this.updateNavigation();\n var matrix = _this.getCurrentNavigationMatrix();\n if (_this.get('animate')) {\n itemGroup.animate({\n matrix: matrix\n }, 100);\n } else {\n itemGroup.attr({\n matrix: matrix\n });\n }\n }\n };\n return _this;\n }\n Category.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n name: 'legend',\n type: 'category',\n itemSpacing: 24,\n itemMarginBottom: 8,\n maxItemWidth: null,\n itemWidth: null,\n itemHeight: null,\n itemName: {},\n itemValue: null,\n maxWidth: null,\n maxHeight: null,\n marker: {},\n radio: null,\n items: [],\n itemStates: {},\n itemBackground: {},\n pageNavigator: {},\n defaultCfg: {\n title: {\n spacing: 5,\n style: {\n fill: Theme.textColor,\n fontSize: 12,\n textAlign: 'start',\n textBaseline: 'top'\n }\n },\n background: {\n padding: 5,\n style: {\n stroke: Theme.lineColor\n }\n },\n itemBackground: {\n style: {\n opacity: 0,\n fill: '#fff'\n }\n },\n pageNavigator: DEFAULT_PAGE_NAVIGATOR,\n itemName: {\n spacing: 16,\n style: textStyle\n },\n marker: {\n spacing: 8,\n style: {\n r: 6,\n symbol: 'circle'\n }\n },\n itemValue: {\n alignRight: false,\n formatter: null,\n style: textStyle,\n spacing: 6\n },\n itemStates: {\n active: {\n nameStyle: {\n opacity: 0.8\n }\n },\n unchecked: {\n nameStyle: {\n fill: Theme.uncheckedColor\n },\n markerStyle: {\n fill: Theme.uncheckedColor,\n stroke: Theme.uncheckedColor\n }\n },\n inactive: {\n nameStyle: {\n fill: Theme.uncheckedColor\n },\n markerStyle: {\n opacity: 0.2\n }\n }\n }\n }\n });\n };\n // 实现 IList 接口\n Category.prototype.isList = function () {\n return true;\n };\n /**\n * 获取图例项\n * @return {ListItem[]} 列表项集合\n */\n Category.prototype.getItems = function () {\n return this.get('items');\n };\n /**\n * 设置列表项\n * @param {ListItem[]} items 列表项集合\n */\n Category.prototype.setItems = function (items) {\n this.update({\n items: items\n });\n };\n /**\n * 更新列表项\n * @param {ListItem} item 列表项\n * @param {object} cfg 列表项\n */\n Category.prototype.updateItem = function (item, cfg) {\n mix(item, cfg);\n this.clear(); // 由于单个图例项变化,会引起全局变化,所以全部更新\n this.render();\n };\n /**\n * 清空列表\n */\n Category.prototype.clearItems = function () {\n var itemGroup = this.getElementByLocalId('item-group');\n itemGroup && itemGroup.clear();\n };\n /**\n * 设置列表项的状态\n * @param {ListItem} item 列表项\n * @param {string} state 状态名\n * @param {boolean} value 状态值, true, false\n */\n Category.prototype.setItemState = function (item, state, value) {\n item[state] = value;\n var itemElement = this.getElementByLocalId(\"item-\" + item.id);\n if (itemElement) {\n var items = this.getItems();\n var index = items.indexOf(item);\n var offsetGroup = this.createOffScreenGroup(); // 离屏的 group\n var newElement = this.drawItem(item, index, this.getItemHeight(), offsetGroup);\n this.updateElements(newElement, itemElement); // 更新整个分组\n this.clearUpdateStatus(itemElement); // 清理更新状态,防止出现 bug\n }\n };\n /**\n * 是否存在指定的状态\n * @param {ListItem} item 列表项\n * @param {boolean} state 状态名\n */\n Category.prototype.hasState = function (item, state) {\n return !!item[state];\n };\n Category.prototype.getItemStates = function (item) {\n var itemStates = this.get('itemStates');\n var rst = [];\n each(itemStates, function (v, k) {\n if (item[k]) {\n // item.selected\n rst.push(k);\n }\n });\n return rst;\n };\n /**\n * 清楚所有列表项的状态\n * @param {string} state 状态值\n */\n Category.prototype.clearItemsState = function (state) {\n var _this = this;\n var items = this.getItemsByState(state);\n each(items, function (item) {\n _this.setItemState(item, state, false);\n });\n };\n /**\n * 根据状态获取图例项\n * @param {string} state [description]\n * @return {ListItem[]} [description]\n */\n Category.prototype.getItemsByState = function (state) {\n var _this = this;\n var items = this.getItems();\n return filter(items, function (item) {\n return _this.hasState(item, state);\n });\n };\n // 绘制 legend 的选项\n Category.prototype.drawLegendContent = function (group) {\n this.processItems();\n this.drawItems(group);\n };\n // 防止未设置 id\n Category.prototype.processItems = function () {\n var items = this.get('items');\n each(items, function (item) {\n if (!item.id) {\n // 如果没有设置 id,默认使用 name\n item.id = item.name;\n }\n });\n };\n // 绘制所有的图例选项\n Category.prototype.drawItems = function (group) {\n var _this = this;\n var itemContainerGroup = this.addGroup(group, {\n id: this.getElementId('item-container-group'),\n name: 'legend-item-container-group'\n });\n var itemGroup = this.addGroup(itemContainerGroup, {\n id: this.getElementId('item-group'),\n name: 'legend-item-group'\n });\n var itemHeight = this.getItemHeight();\n var itemWidth = this.get('itemWidth');\n var itemSpacing = this.get('itemSpacing');\n var itemMarginBottom = this.get('itemMarginBottom');\n var currentPoint = this.get('currentPoint');\n var startX = currentPoint.x;\n var startY = currentPoint.y;\n var layout = this.get('layout');\n var items = this.get('items');\n var wrapped = false;\n var pageWidth = 0;\n var maxWidth = this.get('maxWidth'); // 最大宽度,会导致 layout : 'horizontal' 时自动换行\n var maxHeight = this.get('maxHeight'); // 最大高度,会导致出现分页\n // 暂时不考虑分页\n each(items, function (item, index) {\n var subGroup = _this.drawItem(item, index, itemHeight, itemGroup);\n var bbox = subGroup.getBBox();\n var width = itemWidth || bbox.width;\n if (width > pageWidth) {\n pageWidth = width;\n }\n if (layout === 'horizontal') {\n // 如果水平布局\n if (maxWidth && maxWidth < currentPoint.x + width - startX) {\n // 检测是否换行\n wrapped = true;\n currentPoint.x = startX;\n currentPoint.y += itemHeight + itemMarginBottom;\n }\n _this.moveElementTo(subGroup, currentPoint);\n currentPoint.x += width + itemSpacing;\n } else {\n // 如果垂直布局\n if (maxHeight && maxHeight < currentPoint.y + itemHeight + itemMarginBottom - startY) {\n // 换行\n wrapped = true;\n currentPoint.x += pageWidth + itemSpacing;\n currentPoint.y = startY;\n pageWidth = 0;\n }\n _this.moveElementTo(subGroup, currentPoint);\n currentPoint.y += itemHeight + itemMarginBottom; // itemSpacing 仅影响水平间距\n }\n });\n\n if (wrapped && this.get('flipPage')) {\n this.pageHeight = 0;\n this.pageWidth = 0;\n this.totalPagesCnt = 1;\n this.startX = startX;\n this.startY = startY;\n this.adjustNavigation(group, itemGroup);\n }\n };\n // 获取图例项的高度,如果未定义,则按照 name 的高度计算\n Category.prototype.getItemHeight = function () {\n var itemHeight = this.get('itemHeight');\n if (!itemHeight) {\n var style_1 = (this.get('itemName') || {}).style;\n if (isFunction(style_1)) {\n var items_1 = this.getItems();\n items_1.forEach(function (item, index) {\n var fontSize = __assign(__assign({}, textStyle), style_1(item, index, items_1)).fontSize;\n if (itemHeight < fontSize) {\n itemHeight = fontSize;\n }\n });\n } else if (style_1) {\n itemHeight = style_1.fontSize;\n }\n }\n return itemHeight;\n };\n // 绘制 marker\n Category.prototype.drawMarker = function (container, markerCfg, item, itemHeight) {\n var markerAttrs = __assign(__assign(__assign({\n x: 0,\n y: itemHeight / 2\n }, markerCfg.style), {\n symbol: get(item.marker, 'symbol', 'circle')\n }), get(item.marker, 'style', {}));\n var shape = this.addShape(container, {\n type: 'marker',\n id: this.getElementId(\"item-\" + item.id + \"-marker\"),\n name: 'legend-item-marker',\n attrs: markerAttrs\n });\n var bbox = shape.getBBox();\n shape.attr('x', bbox.width / 2); // marker 需要左对齐,所以不能占用左侧的空间\n var _a = shape.attr(),\n stroke = _a.stroke,\n fill = _a.fill;\n if (stroke) {\n shape.set('isStroke', true);\n }\n if (fill) {\n shape.set('isFill', true);\n }\n return shape;\n };\n // 绘制文本\n Category.prototype.drawItemText = function (container, textName, cfg, item, itemHeight, xPosition, index) {\n var formatter = cfg.formatter;\n var style = cfg.style;\n var attrs = __assign(__assign({\n x: xPosition,\n y: itemHeight / 2,\n text: formatter ? formatter(item[textName], item, index) : item[textName]\n }, textStyle), isFunction(style) ? style(item, index, this.getItems()) : style);\n return this.addShape(container, {\n type: 'text',\n id: this.getElementId(\"item-\" + item.id + \"-\" + textName),\n name: \"legend-item-\" + textName,\n attrs: attrs\n });\n };\n Category.prototype.drawRadio = function (container, radioCfg, item, itemHeight, x) {\n var _a, _b;\n var style = radioCfg.style || {};\n // 以用户设置的 r 为主\n var r = (_a = style.r) !== null && _a !== void 0 ? _a : itemHeight / 2;\n var lineWidth = r * 3.6 / 8;\n var _c = [x + r, itemHeight / 2 - r],\n x0 = _c[0],\n y0 = _c[1];\n var _d = [x0 + r, y0 + r],\n x1 = _d[0],\n y1 = _d[1];\n var _e = [x0, y1 + r],\n x2 = _e[0],\n y2 = _e[1];\n var _f = [x, y0 + r],\n x3 = _f[0],\n y3 = _f[1];\n var showRadio = item.showRadio;\n var attrs = __assign(__assign({\n path: [['M', x0, y0], ['A', r, r, 0, 0, 1, x1, y1], ['L', x1 - lineWidth, y1], ['L', x1, y1], ['A', r, r, 0, 0, 1, x2, y2], ['L', x2, y2 - lineWidth], ['L', x2, y2], ['A', r, r, 0, 0, 1, x3, y3], ['L', x3 + lineWidth, y3], ['L', x3, y3], ['A', r, r, 0, 0, 1, x0, y0], ['L', x0, y0 + lineWidth]],\n stroke: '#000000',\n fill: '#ffffff'\n }, style), {\n opacity: showRadio ? (_b = style === null || style === void 0 ? void 0 : style.opacity) !== null && _b !== void 0 ? _b : 0.45 : 0\n });\n var radioShape = this.addShape(container, {\n type: 'path',\n id: this.getElementId(\"item-\" + item.id + \"-radio\"),\n name: 'legend-item-radio',\n attrs: attrs\n });\n radioShape.set('tip', radioCfg.tip);\n return radioShape;\n };\n // 绘制图例项\n Category.prototype.drawItem = function (item, index, itemHeight, itemGroup) {\n var groupId = \"item-\" + item.id;\n // 设置单独的 Group 用于 setClip\n var subContainer = this.addGroup(itemGroup, {\n name: 'legend-item-container',\n id: this.getElementId(\"item-container-\" + groupId),\n delegateObject: {\n item: item,\n index: index\n }\n });\n var subGroup = this.addGroup(subContainer, {\n name: 'legend-item',\n id: this.getElementId(groupId),\n delegateObject: {\n item: item,\n index: index\n }\n });\n var marker = this.get('marker');\n var itemName = this.get('itemName');\n var itemValue = this.get('itemValue');\n var itemBackground = this.get('itemBackground');\n var radio = this.get('radio');\n var itemWidth = this.getLimitItemWidth();\n var curX = 0; // 记录当前 x 的位置\n if (marker) {\n var markerShape = this.drawMarker(subGroup, marker, item, itemHeight);\n var spacing = marker.spacing;\n var itemMarkerSpacing = get(item, ['marker', 'spacing']);\n if (isNumber(itemMarkerSpacing)) {\n // 如果 item 有配置 marker.spacing,采用 item 的配置\n spacing = itemMarkerSpacing;\n }\n curX = markerShape.getBBox().maxX + spacing;\n }\n if (itemName) {\n var nameShape = this.drawItemText(subGroup, 'name', itemName, item, itemHeight, curX, index);\n if (itemWidth) {\n // 设置了 item 的最大宽度限制,并且超出了,进行省略处理\n ellipsisLabel(true, nameShape, clamp(itemWidth - curX, 0, itemWidth));\n }\n curX = nameShape.getBBox().maxX + itemName.spacing;\n }\n if (itemValue) {\n var valueShape = this.drawItemText(subGroup, 'value', itemValue, item, itemHeight, curX, index);\n if (itemWidth) {\n if (itemValue.alignRight) {\n valueShape.attr({\n textAlign: 'right',\n x: itemWidth\n });\n ellipsisLabel(true, valueShape, clamp(itemWidth - curX, 0, itemWidth), 'head');\n } else {\n ellipsisLabel(true, valueShape, clamp(itemWidth - curX, 0, itemWidth));\n }\n }\n curX = valueShape.getBBox().maxX + itemValue.spacing;\n }\n if (radio) {\n this.drawRadio(subGroup, radio, item, itemHeight, curX);\n }\n // 添加透明的背景,便于拾取和包围盒计算\n if (itemBackground) {\n var bbox = subGroup.getBBox();\n var backShape = this.addShape(subGroup, {\n type: 'rect',\n name: 'legend-item-background',\n id: this.getElementId(groupId + \"-background\"),\n attrs: __assign({\n x: 0,\n y: 0,\n width: bbox.width,\n height: itemHeight\n }, itemBackground.style)\n });\n backShape.toBack();\n }\n this.applyItemStates(item, subGroup);\n return subGroup;\n };\n // 加上分页器并重新排序 items\n Category.prototype.adjustNavigation = function (container, itemGroup) {\n var _this = this;\n var startX = this.startX;\n var startY = this.startY;\n var layout = this.get('layout');\n var subGroups = itemGroup.findAll(function (item) {\n return item.get('name') === 'legend-item';\n });\n var maxWidth = this.get('maxWidth');\n var maxHeight = this.get('maxHeight');\n var itemWidth = this.get('itemWidth');\n var itemSpacing = this.get('itemSpacing');\n var itemHeight = this.getItemHeight();\n var pageNavigator = deepMix({}, DEFAULT_PAGE_NAVIGATOR, this.get('pageNavigator'));\n var navigation = this.drawNavigation(container, layout, '00/00', pageNavigator);\n var navigationBBox = navigation.getBBox();\n var currentPoint = {\n x: startX,\n y: startY\n };\n var pages = 1;\n var widthLimit = 0;\n var pageWidth = 0;\n var maxItemWidth = 0;\n var itemMarginBottom = this.get('itemMarginBottom');\n /** 判断当前 item 是否溢出当前页。是的话,需要换行 */\n function shouldWrap(item, currentPoint) {\n var bbox = item.getBBox();\n var width = itemWidth || bbox.width;\n var newItemXPos = currentPoint.x + width + itemSpacing + navigationBBox.width;\n return newItemXPos > maxWidth;\n }\n if (layout === 'horizontal') {\n var maxRow = this.get('maxRow') || 1;\n var maxRowHeight_1 = itemHeight + (maxRow === 1 ? 0 : itemMarginBottom);\n // 分页器一直靠右上角\n var navigationX_1 = maxWidth - itemSpacing - navigationBBox.width - navigationBBox.minX; // 理论上不需要减 navigationBBox.minX\n this.pageHeight = maxRowHeight_1 * maxRow;\n this.pageWidth = navigationX_1;\n each(subGroups, function (item) {\n var bbox = item.getBBox();\n var width = itemWidth || bbox.width;\n if (widthLimit && widthLimit < currentPoint.x + width + itemSpacing || shouldWrap(item, currentPoint)) {\n if (pages === 1) {\n widthLimit = currentPoint.x + itemSpacing;\n _this.moveElementTo(navigation, {\n x: navigationX_1,\n y: currentPoint.y + itemHeight / 2 - navigationBBox.height / 2 - navigationBBox.minY\n });\n }\n pages += 1;\n currentPoint.x = startX;\n currentPoint.y += maxRowHeight_1;\n }\n _this.moveElementTo(item, currentPoint);\n item.getParent().setClip({\n type: 'rect',\n attrs: {\n x: currentPoint.x,\n y: currentPoint.y,\n width: width + itemSpacing,\n height: itemHeight\n }\n });\n currentPoint.x += width + itemSpacing;\n });\n } else {\n each(subGroups, function (item) {\n var bbox = item.getBBox();\n if (bbox.width > pageWidth) {\n pageWidth = bbox.width;\n }\n });\n maxItemWidth = pageWidth;\n pageWidth += itemSpacing;\n if (maxWidth) {\n // maxWidth 限制加上\n pageWidth = Math.min(maxWidth, pageWidth);\n maxItemWidth = Math.min(maxWidth, maxItemWidth);\n }\n this.pageWidth = pageWidth;\n this.pageHeight = maxHeight - Math.max(navigationBBox.height, itemHeight + itemMarginBottom);\n var cntPerPage_1 = Math.floor(this.pageHeight / (itemHeight + itemMarginBottom));\n each(subGroups, function (item, index) {\n if (index !== 0 && index % cntPerPage_1 === 0) {\n pages += 1;\n currentPoint.x += pageWidth;\n currentPoint.y = startY;\n }\n _this.moveElementTo(item, currentPoint);\n item.getParent().setClip({\n type: 'rect',\n attrs: {\n x: currentPoint.x,\n y: currentPoint.y,\n width: pageWidth,\n height: itemHeight\n }\n });\n currentPoint.y += itemHeight + itemMarginBottom;\n });\n this.totalPagesCnt = pages;\n this.moveElementTo(navigation, {\n x: startX + maxItemWidth / 2 - navigationBBox.width / 2 - navigationBBox.minX,\n y: maxHeight - navigationBBox.height - navigationBBox.minY\n });\n }\n if (this.pageHeight && this.pageWidth) {\n // 为了使固定的 clip 生效,clip 设置在 itemContainerGroup 上,itemGroup 需要在翻页时会设置 matrix\n itemGroup.getParent().setClip({\n type: 'rect',\n attrs: {\n x: this.startX,\n y: this.startY,\n width: this.pageWidth,\n height: this.pageHeight\n }\n });\n }\n // 重新计算 totalPagesCnt\n if (layout === 'horizontal' && this.get('maxRow')) {\n this.totalPagesCnt = Math.ceil(pages / this.get('maxRow'));\n } else {\n this.totalPagesCnt = pages;\n }\n if (this.currentPageIndex > this.totalPagesCnt) {\n this.currentPageIndex = 1;\n }\n this.updateNavigation(navigation);\n // update initial matrix\n itemGroup.attr('matrix', this.getCurrentNavigationMatrix());\n };\n /**\n * 绘制分页器\n */\n Category.prototype.drawNavigation = function (group, layout, text, styleCfg) {\n var currentPoint = {\n x: 0,\n y: 0\n };\n var subGroup = this.addGroup(group, {\n id: this.getElementId('navigation-group'),\n name: 'legend-navigation'\n });\n var _a = get(styleCfg.marker, 'style', {}),\n _b = _a.size,\n size = _b === void 0 ? 12 : _b,\n arrowStyle = __rest(_a, [\"size\"]);\n var leftArrow = this.drawArrow(subGroup, currentPoint, LEFT_ARROW_NAME, layout === 'horizontal' ? 'up' : 'left', size, arrowStyle);\n leftArrow.on('click', this.onNavigationBack);\n var leftArrowBBox = leftArrow.getBBox();\n currentPoint.x += leftArrowBBox.width + 2;\n var textShape = this.addShape(subGroup, {\n type: 'text',\n id: this.getElementId('navigation-text'),\n name: 'navigation-text',\n attrs: __assign({\n x: currentPoint.x,\n y: currentPoint.y + size / 2,\n text: text,\n textBaseline: 'middle'\n }, get(styleCfg.text, 'style'))\n });\n var textBBox = textShape.getBBox();\n currentPoint.x += textBBox.width + 2;\n var rightArrow = this.drawArrow(subGroup, currentPoint, RIGHT_ARROW_NAME, layout === 'horizontal' ? 'down' : 'right', size, arrowStyle);\n rightArrow.on('click', this.onNavigationAfter);\n return subGroup;\n };\n Category.prototype.updateNavigation = function (navigation) {\n var pageNavigator = deepMix({}, DEFAULT_PAGE_NAVIGATOR, this.get('pageNavigator'));\n var _a = pageNavigator.marker.style,\n fill = _a.fill,\n opacity = _a.opacity,\n inactiveFill = _a.inactiveFill,\n inactiveOpacity = _a.inactiveOpacity;\n var text = this.currentPageIndex + \"/\" + this.totalPagesCnt;\n var textShape = navigation ? navigation.getChildren()[1] : this.getElementByLocalId('navigation-text');\n var leftArrow = navigation ? navigation.findById(this.getElementId(LEFT_ARROW_NAME)) : this.getElementByLocalId(LEFT_ARROW_NAME);\n var rightArrow = navigation ? navigation.findById(this.getElementId(RIGHT_ARROW_NAME)) : this.getElementByLocalId(RIGHT_ARROW_NAME);\n textShape.attr('text', text);\n // 更新 left-arrow marker\n leftArrow.attr('opacity', this.currentPageIndex === 1 ? inactiveOpacity : opacity);\n leftArrow.attr('fill', this.currentPageIndex === 1 ? inactiveFill : fill);\n leftArrow.attr('cursor', this.currentPageIndex === 1 ? 'not-allowed' : 'pointer');\n // 更新 right-arrow marker\n rightArrow.attr('opacity', this.currentPageIndex === this.totalPagesCnt ? inactiveOpacity : opacity);\n rightArrow.attr('fill', this.currentPageIndex === this.totalPagesCnt ? inactiveFill : fill);\n rightArrow.attr('cursor', this.currentPageIndex === this.totalPagesCnt ? 'not-allowed' : 'pointer');\n // 更新位置\n var cursorX = leftArrow.getBBox().maxX + 2;\n textShape.attr('x', cursorX);\n cursorX += textShape.getBBox().width + 2;\n this.updateArrowPath(rightArrow, {\n x: cursorX,\n y: 0\n });\n };\n Category.prototype.drawArrow = function (group, currentPoint, name, direction, size, style) {\n var x = currentPoint.x,\n y = currentPoint.y;\n var shape = this.addShape(group, {\n type: 'path',\n id: this.getElementId(name),\n name: name,\n attrs: __assign({\n size: size,\n direction: direction,\n path: [['M', x + size / 2, y], ['L', x, y + size], ['L', x + size, y + size], ['Z']],\n cursor: 'pointer'\n }, style)\n });\n shape.attr('matrix', getMatrixByAngle({\n x: x + size / 2,\n y: y + size / 2\n }, ROTATE_MAP[direction]));\n return shape;\n };\n /**\n * 更新分页器 arrow 组件\n */\n Category.prototype.updateArrowPath = function (arrow, point) {\n var x = point.x,\n y = point.y;\n var _a = arrow.attr(),\n size = _a.size,\n direction = _a.direction;\n var matrix = getMatrixByAngle({\n x: x + size / 2,\n y: y + size / 2\n }, ROTATE_MAP[direction]);\n arrow.attr('path', [['M', x + size / 2, y], ['L', x, y + size], ['L', x + size, y + size], ['Z']]);\n arrow.attr('matrix', matrix);\n };\n Category.prototype.getCurrentNavigationMatrix = function () {\n var _a = this,\n currentPageIndex = _a.currentPageIndex,\n pageWidth = _a.pageWidth,\n pageHeight = _a.pageHeight;\n var layout = this.get('layout');\n var translate = layout === 'horizontal' ? {\n x: 0,\n y: pageHeight * (1 - currentPageIndex)\n } : {\n x: pageWidth * (1 - currentPageIndex),\n y: 0\n };\n return getMatrixByTranslate(translate);\n };\n // 附加状态对应的样式\n Category.prototype.applyItemStates = function (item, subGroup) {\n var states = this.getItemStates(item);\n var hasStates = states.length > 0;\n if (hasStates) {\n var children = subGroup.getChildren();\n var itemStates_1 = this.get('itemStates');\n each(children, function (element) {\n var name = element.get('name');\n var elName = name.split('-')[2]; // marker, name, value\n var statesStyle = getStatesStyle(item, elName, itemStates_1);\n if (statesStyle) {\n element.attr(statesStyle);\n if (elName === 'marker' && !(element.get('isStroke') && element.get('isFill'))) {\n // 如果 marker 是单填充或者单描边的话,就不要额外添加 stroke 或这 fill 属性,否则会影响 unchecked 后的显示\n if (element.get('isStroke')) {\n element.attr('fill', null);\n }\n if (element.get('isFill')) {\n element.attr('stroke', null);\n }\n }\n }\n });\n }\n };\n // 获取 itemWidth 的最终设置\n Category.prototype.getLimitItemWidth = function () {\n var itemWidth = this.get('itemWidth');\n var maxItemWidth = this.get('maxItemWidth');\n if (maxItemWidth) {\n // 设置了最大宽度\n if (itemWidth) {\n maxItemWidth = itemWidth <= maxItemWidth ? itemWidth : maxItemWidth;\n }\n } else if (itemWidth) {\n maxItemWidth = itemWidth;\n }\n return maxItemWidth;\n };\n return Category;\n}(LegendBase);\nexport default Category;","import { __assign, __extends, __spreadArrays } from \"tslib\";\nimport { clone, isFunction, mix, upperFirst } from '@antv/util';\nimport Theme from '../util/theme';\nimport { getValueByPercent } from '../util/util';\nimport LegendBase from './base';\nvar HANDLER_HEIGHT_RATIO = 1.4;\nvar HANDLER_TRIANGLE_RATIO = 0.4;\nvar ContinueLegend = /** @class */function (_super) {\n __extends(ContinueLegend, _super);\n function ContinueLegend() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ContinueLegend.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n type: 'continue',\n min: 0,\n max: 100,\n value: null,\n colors: [],\n track: {},\n rail: {},\n label: {},\n handler: {},\n slidable: true,\n tip: null,\n step: null,\n maxWidth: null,\n maxHeight: null,\n defaultCfg: {\n label: {\n align: 'rail',\n spacing: 5,\n formatter: null,\n style: {\n fontSize: 12,\n fill: Theme.textColor,\n textBaseline: 'middle',\n fontFamily: Theme.fontFamily\n }\n },\n handler: {\n size: 10,\n style: {\n fill: '#fff',\n stroke: '#333'\n }\n },\n track: {},\n rail: {\n type: 'color',\n size: 20,\n defaultLength: 100,\n style: {\n fill: '#DCDEE2'\n }\n },\n title: {\n spacing: 5,\n style: {\n fill: Theme.textColor,\n fontSize: 12,\n textAlign: 'start',\n textBaseline: 'top'\n }\n }\n }\n });\n };\n ContinueLegend.prototype.isSlider = function () {\n return true;\n };\n // 实现 IList 接口\n ContinueLegend.prototype.getValue = function () {\n return this.getCurrentValue();\n };\n ContinueLegend.prototype.getRange = function () {\n return {\n min: this.get('min'),\n max: this.get('max')\n };\n };\n // 改变 range\n ContinueLegend.prototype.setRange = function (min, max) {\n this.update({\n min: min,\n max: max\n });\n };\n ContinueLegend.prototype.setValue = function (value) {\n var originValue = this.getValue();\n this.set('value', value);\n var group = this.get('group');\n this.resetTrackClip();\n if (this.get('slidable')) {\n this.resetHandlers(group);\n }\n this.delegateEmit('valuechanged', {\n originValue: originValue,\n value: value\n });\n };\n ContinueLegend.prototype.initEvent = function () {\n var group = this.get('group');\n this.bindSliderEvent(group);\n this.bindRailEvent(group);\n this.bindTrackEvent(group);\n };\n ContinueLegend.prototype.drawLegendContent = function (group) {\n this.drawRail(group);\n this.drawLabels(group);\n this.fixedElements(group); // 调整各个图形位置,适应宽高的限制\n this.resetTrack(group);\n this.resetTrackClip(group);\n if (this.get('slidable')) {\n this.resetHandlers(group);\n }\n };\n ContinueLegend.prototype.bindSliderEvent = function (group) {\n this.bindHandlersEvent(group);\n };\n ContinueLegend.prototype.bindHandlersEvent = function (group) {\n var _this = this;\n group.on('legend-handler-min:drag', function (ev) {\n var minValue = _this.getValueByCanvasPoint(ev.x, ev.y);\n var currentValue = _this.getCurrentValue();\n var maxValue = currentValue[1];\n if (maxValue < minValue) {\n // 如果小于最小值,则调整最小值\n maxValue = minValue;\n }\n _this.setValue([minValue, maxValue]);\n });\n group.on('legend-handler-max:drag', function (ev) {\n var maxValue = _this.getValueByCanvasPoint(ev.x, ev.y);\n var currentValue = _this.getCurrentValue();\n var minValue = currentValue[0];\n if (minValue > maxValue) {\n // 如果小于最小值,则调整最小值\n minValue = maxValue;\n }\n _this.setValue([minValue, maxValue]);\n });\n };\n ContinueLegend.prototype.bindRailEvent = function (group) {};\n ContinueLegend.prototype.bindTrackEvent = function (group) {\n var _this = this;\n var prePoint = null;\n group.on('legend-track:dragstart', function (ev) {\n prePoint = {\n x: ev.x,\n y: ev.y\n };\n });\n group.on('legend-track:drag', function (ev) {\n if (!prePoint) {\n return;\n }\n var preValue = _this.getValueByCanvasPoint(prePoint.x, prePoint.y);\n var curValue = _this.getValueByCanvasPoint(ev.x, ev.y);\n var currentValue = _this.getCurrentValue();\n var curDiff = currentValue[1] - currentValue[0];\n var range = _this.getRange();\n var dValue = curValue - preValue;\n if (dValue < 0) {\n // 减小, 同时未出边界\n if (currentValue[0] + dValue > range.min) {\n _this.setValue([currentValue[0] + dValue, currentValue[1] + dValue]);\n } else {\n _this.setValue([range.min, range.min + curDiff]);\n }\n // && ||\n } else if (dValue > 0) {\n if (dValue > 0 && currentValue[1] + dValue < range.max) {\n _this.setValue([currentValue[0] + dValue, currentValue[1] + dValue]);\n } else {\n _this.setValue([range.max - curDiff, range.max]);\n }\n }\n prePoint = {\n x: ev.x,\n y: ev.y\n };\n });\n group.on('legend-track:dragend', function (ev) {\n prePoint = null;\n });\n };\n ContinueLegend.prototype.drawLabels = function (group) {\n this.drawLabel('min', group);\n this.drawLabel('max', group);\n };\n ContinueLegend.prototype.drawLabel = function (name, group) {\n var labelCfg = this.get('label');\n var style = labelCfg.style;\n var labelAlign = labelCfg.align;\n var labelFormatter = labelCfg.formatter;\n var value = this.get(name);\n var alignAttrs = this.getLabelAlignAttrs(name, labelAlign);\n var localId = \"label-\" + name;\n this.addShape(group, {\n type: 'text',\n id: this.getElementId(localId),\n name: \"legend-label-\" + name,\n attrs: __assign(__assign({\n x: 0,\n y: 0,\n text: isFunction(labelFormatter) ? labelFormatter(value) : value\n }, style), alignAttrs)\n });\n };\n // 获取文本的对齐方式,为了自适应真实操碎了心\n ContinueLegend.prototype.getLabelAlignAttrs = function (name, align) {\n var isVertical = this.isVertical();\n var textAlign = 'center';\n var textBaseline = 'middle';\n if (isVertical) {\n // 垂直布局的所有的文本都左对齐\n textAlign = 'start';\n if (align !== 'rail') {\n if (name === 'min') {\n textBaseline = 'top';\n } else {\n textBaseline = 'bottom';\n }\n } else {\n textBaseline = 'top';\n }\n } else {\n if (align !== 'rail') {\n textBaseline = 'top';\n if (name === 'min') {\n textAlign = 'start';\n } else {\n textAlign = 'end';\n }\n } else {\n textAlign = 'start';\n textBaseline = 'middle';\n }\n }\n return {\n textAlign: textAlign,\n textBaseline: textBaseline\n };\n };\n ContinueLegend.prototype.getRailPath = function (x, y, w, h) {\n var railCfg = this.get('rail');\n var size = railCfg.size,\n defaultLength = railCfg.defaultLength,\n type = railCfg.type;\n var isVertical = this.isVertical();\n var length = defaultLength;\n var width = w;\n var height = h;\n if (!width) {\n width = isVertical ? size : length;\n }\n if (!height) {\n height = isVertical ? length : size;\n }\n var path = [];\n if (type === 'color') {\n path.push(['M', x, y]);\n path.push(['L', x + width, y]);\n path.push(['L', x + width, y + height]);\n path.push(['L', x, y + height]);\n path.push(['Z']);\n } else {\n path.push(['M', x + width, y]);\n path.push(['L', x + width, y + height]);\n path.push(['L', x, y + height]);\n path.push(['Z']);\n }\n return path;\n };\n ContinueLegend.prototype.drawRail = function (group) {\n var railCfg = this.get('rail');\n var style = railCfg.style;\n this.addShape(group, {\n type: 'path',\n id: this.getElementId('rail'),\n name: 'legend-rail',\n attrs: __assign({\n path: this.getRailPath(0, 0)\n }, style)\n });\n };\n // 将传入的颜色转换成渐变色\n ContinueLegend.prototype.getTrackColor = function (colors) {\n var count = colors.length;\n if (!count) {\n return null;\n }\n if (count === 1) {\n return colors[0];\n }\n var color; // 最终形态 l(0) 0:colors[0] 0.5:colors[1] 1:colors[2];\n if (this.isVertical()) {\n // 根据方向设置渐变方向\n color = 'l(90)';\n } else {\n color = 'l(0)';\n }\n for (var i = 0; i < count; i++) {\n var percent = i / (count - 1);\n color += \" \" + percent + \":\" + colors[i];\n }\n return color;\n };\n ContinueLegend.prototype.getTrackPath = function (group) {\n var railShape = this.getRailShape(group);\n var path = railShape.attr('path');\n return clone(path);\n };\n ContinueLegend.prototype.getClipTrackAttrs = function (group) {\n var value = this.getCurrentValue();\n var min = value[0],\n max = value[1];\n var railBBox = this.getRailBBox(group);\n var startPoint = this.getPointByValue(min, group);\n var endPoint = this.getPointByValue(max, group);\n var isVertical = this.isVertical();\n var x;\n var y;\n var width;\n var height;\n if (isVertical) {\n x = railBBox.minX;\n y = startPoint.y;\n width = railBBox.width;\n height = endPoint.y - startPoint.y;\n } else {\n x = startPoint.x;\n y = railBBox.minY;\n width = endPoint.x - startPoint.x;\n height = railBBox.height;\n }\n return {\n x: x,\n y: y,\n width: width,\n height: height\n };\n };\n // 获取 track 的属性,由 path 和 颜色构成\n ContinueLegend.prototype.getTrackAttrs = function (group) {\n var trackCfg = this.get('track');\n var colors = this.get('colors');\n var path = this.getTrackPath(group);\n return mix({\n path: path,\n fill: this.getTrackColor(colors)\n }, trackCfg.style);\n };\n ContinueLegend.prototype.resetTrackClip = function (group) {\n var container = group || this.get('group');\n var trackId = this.getElementId('track');\n var trackShape = container.findById(trackId);\n var clipShape = trackShape.getClip();\n var attrs = this.getClipTrackAttrs(group);\n if (!clipShape) {\n trackShape.setClip({\n type: 'rect',\n attrs: attrs\n });\n } else {\n clipShape.attr(attrs);\n }\n };\n ContinueLegend.prototype.resetTrack = function (group) {\n var trackId = this.getElementId('track');\n var trackShape = group.findById(trackId);\n var trackAttrs = this.getTrackAttrs(group);\n if (trackShape) {\n trackShape.attr(trackAttrs);\n } else {\n this.addShape(group, {\n type: 'path',\n id: trackId,\n draggable: this.get('slidable'),\n name: 'legend-track',\n attrs: trackAttrs\n });\n }\n };\n ContinueLegend.prototype.getPointByValue = function (value, group) {\n var _a = this.getRange(),\n min = _a.min,\n max = _a.max;\n var percent = (value - min) / (max - min);\n var bbox = this.getRailBBox(group);\n var isVertcal = this.isVertical();\n var point = {\n x: 0,\n y: 0\n };\n if (isVertcal) {\n point.x = bbox.minX + bbox.width / 2;\n point.y = getValueByPercent(bbox.minY, bbox.maxY, percent);\n } else {\n point.x = getValueByPercent(bbox.minX, bbox.maxX, percent);\n point.y = bbox.minY + bbox.height / 2;\n }\n return point;\n };\n ContinueLegend.prototype.getRailShape = function (group) {\n var container = group || this.get('group');\n return container.findById(this.getElementId('rail'));\n };\n // 获取滑轨的宽高信息\n ContinueLegend.prototype.getRailBBox = function (group) {\n var railShape = this.getRailShape(group);\n var bbox = railShape.getBBox();\n return bbox;\n };\n ContinueLegend.prototype.getRailCanvasBBox = function () {\n var container = this.get('group');\n var railShape = container.findById(this.getElementId('rail'));\n var bbox = railShape.getCanvasBBox();\n return bbox;\n };\n // 是否垂直\n ContinueLegend.prototype.isVertical = function () {\n return this.get('layout') === 'vertical';\n };\n // 用于交互时\n ContinueLegend.prototype.getValueByCanvasPoint = function (x, y) {\n var _a = this.getRange(),\n min = _a.min,\n max = _a.max;\n var bbox = this.getRailCanvasBBox(); // 因为 x, y 是画布坐标\n var isVertcal = this.isVertical();\n var step = this.get('step');\n var percent;\n if (isVertcal) {\n // 垂直时计算 y\n percent = (y - bbox.minY) / bbox.height;\n } else {\n // 水平时计算 x\n percent = (x - bbox.minX) / bbox.width;\n }\n var value = getValueByPercent(min, max, percent);\n if (step) {\n var count = Math.round((value - min) / step);\n value = min + count * step; // 移动到最近的\n }\n\n if (value > max) {\n value = max;\n }\n if (value < min) {\n value = min;\n }\n return value;\n };\n // 当前选中的范围\n ContinueLegend.prototype.getCurrentValue = function () {\n var value = this.get('value');\n if (!value) {\n var values = this.get('values');\n if (!values) {\n return [this.get('min'), this.get('max')];\n }\n // 如果没有定义,取最大范围 最小值 为 values 中的最小值, 如果最小值 超过了 定义的最大值 则 做限制 最大值 反之\n return [Math.max(Math.min.apply(Math, __spreadArrays(values, [this.get('max')])), this.get('min')), Math.min(Math.max.apply(Math, __spreadArrays(values, [this.get('min')])), this.get('max'))];\n }\n return value;\n };\n // 重置滑块 handler\n ContinueLegend.prototype.resetHandlers = function (group) {\n var currentValue = this.getCurrentValue();\n var min = currentValue[0],\n max = currentValue[1];\n this.resetHandler(group, 'min', min);\n this.resetHandler(group, 'max', max);\n };\n // 获取滑块的 path\n ContinueLegend.prototype.getHandlerPath = function (handlerCfg, point) {\n var isVertical = this.isVertical();\n var path = [];\n var width = handlerCfg.size;\n var x = point.x,\n y = point.y;\n var height = width * HANDLER_HEIGHT_RATIO;\n var halfWidth = width / 2;\n var oneSixthWidth = width / 6;\n if (isVertical) {\n /**\n * 竖直情况下的滑块 handler,左侧顶点是 x,y\n * /----|\n * -- |\n * -- |\n * \\----|\n */\n var triangleX = x + height * HANDLER_TRIANGLE_RATIO;\n path.push(['M', x, y]);\n path.push(['L', triangleX, y + halfWidth]);\n path.push(['L', x + height, y + halfWidth]);\n path.push(['L', x + height, y - halfWidth]);\n path.push(['L', triangleX, y - halfWidth]);\n path.push(['Z']);\n // 绘制两条横线\n path.push(['M', triangleX, y + oneSixthWidth]);\n path.push(['L', x + height - 2, y + oneSixthWidth]);\n path.push(['M', triangleX, y - oneSixthWidth]);\n path.push(['L', x + height - 2, y - oneSixthWidth]);\n } else {\n /**\n * 水平情况下的滑块,上面顶点处是 x,y\n * / \\\n * | | | |\n * | | | |\n * -----\n */\n var triangleY = y + height * HANDLER_TRIANGLE_RATIO;\n path.push(['M', x, y]);\n path.push(['L', x - halfWidth, triangleY]);\n path.push(['L', x - halfWidth, y + height]);\n path.push(['L', x + halfWidth, y + height]);\n path.push(['L', x + halfWidth, triangleY]);\n path.push(['Z']);\n // 绘制两条竖线\n path.push(['M', x - oneSixthWidth, triangleY]);\n path.push(['L', x - oneSixthWidth, y + height - 2]);\n path.push(['M', x + oneSixthWidth, triangleY]);\n path.push(['L', x + oneSixthWidth, y + height - 2]);\n }\n return path;\n };\n // 调整 handler 的位置,如果未存在则绘制\n ContinueLegend.prototype.resetHandler = function (group, name, value) {\n var point = this.getPointByValue(value, group);\n var handlerCfg = this.get('handler');\n var path = this.getHandlerPath(handlerCfg, point);\n var id = this.getElementId(\"handler-\" + name);\n var handlerShape = group.findById(id);\n var isVertical = this.isVertical();\n if (handlerShape) {\n handlerShape.attr('path', path);\n } else {\n this.addShape(group, {\n type: 'path',\n name: \"legend-handler-\" + name,\n draggable: true,\n id: id,\n attrs: __assign(__assign({\n path: path\n }, handlerCfg.style), {\n cursor: isVertical ? 'ns-resize' : 'ew-resize'\n })\n });\n }\n };\n // 当设置了 maxWidth, maxHeight 时调整 rail 的宽度,\n // 文本的位置\n ContinueLegend.prototype.fixedElements = function (group) {\n var railShape = group.findById(this.getElementId('rail'));\n var minLabel = group.findById(this.getElementId('label-min'));\n var maxLabel = group.findById(this.getElementId('label-max'));\n var startPoint = this.getDrawPoint();\n if (this.isVertical()) {\n // 横向布局\n this.fixedVertail(minLabel, maxLabel, railShape, startPoint);\n } else {\n // 水平布局\n this.fixedHorizontal(minLabel, maxLabel, railShape, startPoint);\n }\n };\n ContinueLegend.prototype.fitRailLength = function (minLabelBBox, maxLabelBBox, railBBox, railShape) {\n var isVertical = this.isVertical();\n var lengthField = isVertical ? 'height' : 'width';\n var labelCfg = this.get('label');\n var labelAlign = labelCfg.align;\n var spacing = labelCfg.spacing;\n var maxLength = this.get(\"max\" + upperFirst(lengthField)); // get('maxWidth')\n if (maxLength) {\n var elementsLength = labelAlign === 'rail' ? railBBox[lengthField] + minLabelBBox[lengthField] + maxLabelBBox[lengthField] + spacing * 2 : railBBox[lengthField];\n var diff = elementsLength - maxLength;\n if (diff > 0) {\n // 大于限制的长度\n this.changeRailLength(railShape, lengthField, railBBox[lengthField] - diff);\n }\n }\n };\n ContinueLegend.prototype.changeRailLength = function (railShape, lengthField, length) {\n var bbox = railShape.getBBox();\n var path;\n if (lengthField === 'height') {\n path = this.getRailPath(bbox.x, bbox.y, bbox.width, length);\n } else {\n path = this.getRailPath(bbox.x, bbox.y, length, bbox.height);\n }\n railShape.attr('path', path);\n };\n ContinueLegend.prototype.changeRailPosition = function (railShape, x, y) {\n var bbox = railShape.getBBox();\n var path = this.getRailPath(x, y, bbox.width, bbox.height);\n railShape.attr('path', path);\n };\n ContinueLegend.prototype.fixedHorizontal = function (minLabel, maxLabel, railShape, startPoint) {\n var labelCfg = this.get('label');\n var labelAlign = labelCfg.align;\n var spacing = labelCfg.spacing;\n var railBBox = railShape.getBBox();\n var minLabelBBox = minLabel.getBBox();\n var maxLabelBBox = maxLabel.getBBox();\n var railHeight = railBBox.height; // 取 rail 的高度,作为高度\n this.fitRailLength(minLabelBBox, maxLabelBBox, railBBox, railShape);\n railBBox = railShape.getBBox();\n if (labelAlign === 'rail') {\n // 沿着 rail 方向\n minLabel.attr({\n x: startPoint.x,\n y: startPoint.y + railHeight / 2\n });\n this.changeRailPosition(railShape, startPoint.x + minLabelBBox.width + spacing, startPoint.y);\n maxLabel.attr({\n x: startPoint.x + minLabelBBox.width + railBBox.width + spacing * 2,\n y: startPoint.y + railHeight / 2\n });\n } else if (labelAlign === 'top') {\n minLabel.attr({\n x: startPoint.x,\n y: startPoint.y\n });\n maxLabel.attr({\n x: startPoint.x + railBBox.width,\n y: startPoint.y\n });\n this.changeRailPosition(railShape, startPoint.x, startPoint.y + minLabelBBox.height + spacing);\n } else {\n this.changeRailPosition(railShape, startPoint.x, startPoint.y);\n minLabel.attr({\n x: startPoint.x,\n y: startPoint.y + railBBox.height + spacing\n });\n maxLabel.attr({\n x: startPoint.x + railBBox.width,\n y: startPoint.y + railBBox.height + spacing\n });\n }\n };\n ContinueLegend.prototype.fixedVertail = function (minLabel, maxLabel, railShape, startPoint) {\n var labelCfg = this.get('label');\n var labelAlign = labelCfg.align;\n var spacing = labelCfg.spacing;\n var railBBox = railShape.getBBox();\n var minLabelBBox = minLabel.getBBox();\n var maxLabelBBox = maxLabel.getBBox();\n this.fitRailLength(minLabelBBox, maxLabelBBox, railBBox, railShape);\n railBBox = railShape.getBBox();\n if (labelAlign === 'rail') {\n // 沿着 rail 方向\n minLabel.attr({\n x: startPoint.x,\n y: startPoint.y\n });\n this.changeRailPosition(railShape, startPoint.x, startPoint.y + minLabelBBox.height + spacing);\n maxLabel.attr({\n x: startPoint.x,\n y: startPoint.y + minLabelBBox.height + railBBox.height + spacing * 2\n });\n } else if (labelAlign === 'right') {\n minLabel.attr({\n x: startPoint.x + railBBox.width + spacing,\n y: startPoint.y\n });\n this.changeRailPosition(railShape, startPoint.x, startPoint.y);\n maxLabel.attr({\n x: startPoint.x + railBBox.width + spacing,\n y: startPoint.y + railBBox.height\n });\n } else {\n // left\n var maxLabelWidth = Math.max(minLabelBBox.width, maxLabelBBox.width);\n minLabel.attr({\n x: startPoint.x,\n y: startPoint.y\n });\n this.changeRailPosition(railShape, startPoint.x + maxLabelWidth + spacing, startPoint.y);\n maxLabel.attr({\n x: startPoint.x,\n y: startPoint.y + railBBox.height\n });\n }\n };\n return ContinueLegend;\n}(LegendBase);\nexport default ContinueLegend;","export var CONTAINER_CLASS = 'g2-tooltip';\nexport var TITLE_CLASS = 'g2-tooltip-title';\nexport var LIST_CLASS = 'g2-tooltip-list';\nexport var LIST_ITEM_CLASS = 'g2-tooltip-list-item';\nexport var MARKER_CLASS = 'g2-tooltip-marker';\nexport var VALUE_CLASS = 'g2-tooltip-value';\nexport var NAME_CLASS = 'g2-tooltip-name';\nexport var CROSSHAIR_X = 'g2-tooltip-crosshair-x';\nexport var CROSSHAIR_Y = 'g2-tooltip-crosshair-y';","import { __assign, __extends } from \"tslib\";\nimport colorUtil from '@antv/color-util';\nimport { createDom, modifyCSS } from '@antv/dom-util';\nimport { each, hasKey, isElement, substitute } from '@antv/util';\nimport HtmlComponent from '../abstract/html-component';\nimport { clearDom, regionToBBox, toPx } from '../util/util';\nimport * as CssConst from './css-const';\nimport TooltipTheme from './html-theme';\nimport { getAlignPoint } from '../util/align';\nfunction hasOneKey(obj, keys) {\n var result = false;\n each(keys, function (key) {\n if (hasKey(obj, key)) {\n result = true;\n return false;\n }\n });\n return result;\n}\nvar Tooltip = /** @class */function (_super) {\n __extends(Tooltip, _super);\n function Tooltip() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Tooltip.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n name: 'tooltip',\n type: 'html',\n x: 0,\n y: 0,\n items: [],\n customContent: null,\n containerTpl: \"
          \",\n itemTpl: \"
        • \\n \\n {name}:\\n {value}\\n
        • \",\n xCrosshairTpl: \"
          \",\n yCrosshairTpl: \"
          \",\n title: null,\n showTitle: true,\n /**\n * tooltip 限制的区域\n * @type {Region}\n */\n region: null,\n // crosshair 的限制区域\n crosshairsRegion: null,\n containerClassName: CssConst.CONTAINER_CLASS,\n // x, y, xy\n crosshairs: null,\n offset: 10,\n position: 'right',\n domStyles: null,\n defaultStyles: TooltipTheme\n });\n };\n // tooltip 渲染时,渲染 title,items 和 corosshairs\n Tooltip.prototype.render = function () {\n if (this.get('customContent')) {\n this.renderCustomContent();\n } else {\n this.resetTitle();\n this.renderItems();\n }\n // 绘制完成后,再定位\n this.resetPosition();\n };\n // 复写清空函数,因为有模板的存在,所以默认的写法不合适\n Tooltip.prototype.clear = function () {\n // 由于 crosshair 没有在 container 内,所以需要单独清理\n this.clearCrosshairs();\n this.setTitle(''); // 清空标题\n this.clearItemDoms();\n };\n Tooltip.prototype.show = function () {\n var container = this.getContainer();\n if (!container || this.destroyed) {\n // 防止容器不存在或者被销毁时报错\n return;\n }\n this.set('visible', true);\n modifyCSS(container, {\n visibility: 'visible'\n });\n this.setCrossHairsVisible(true);\n };\n Tooltip.prototype.hide = function () {\n var container = this.getContainer();\n // relative: https://github.com/antvis/g2/issues/1221\n if (!container || this.destroyed) {\n return;\n }\n this.set('visible', false);\n modifyCSS(container, {\n visibility: 'hidden'\n });\n this.setCrossHairsVisible(false);\n };\n // 实现 IPointLocation 的接口\n Tooltip.prototype.getLocation = function () {\n return {\n x: this.get('x'),\n y: this.get('y')\n };\n };\n // 实现 IPointLocation 的接口\n Tooltip.prototype.setLocation = function (point) {\n this.set('x', point.x);\n this.set('y', point.y);\n this.resetPosition();\n };\n Tooltip.prototype.setCrossHairsVisible = function (visible) {\n var display = visible ? '' : 'none';\n var xCrosshairDom = this.get('xCrosshairDom');\n var yCrosshairDom = this.get('yCrosshairDom');\n xCrosshairDom && modifyCSS(xCrosshairDom, {\n display: display\n });\n yCrosshairDom && modifyCSS(yCrosshairDom, {\n display: display\n });\n };\n // 如有 customContent 则根据 customContent 设置 container\n Tooltip.prototype.initContainer = function () {\n _super.prototype.initContainer.call(this);\n if (this.get('customContent')) {\n if (this.get('container')) {\n this.get('container').remove();\n }\n var container = this.getHtmlContentNode();\n this.get('parent').appendChild(container);\n this.set('container', container);\n this.resetStyles();\n this.applyStyles();\n }\n };\n // 更新属性的同时,可能会引起 DOM 的变化,这里对可能引起 DOM 变化的场景做了处理\n Tooltip.prototype.updateInner = function (cfg) {\n if (this.get('customContent')) {\n this.renderCustomContent();\n } else {\n // 更新标题\n if (hasOneKey(cfg, ['title', 'showTitle'])) {\n this.resetTitle();\n }\n // 更新内容\n if (hasKey(cfg, 'items')) {\n this.renderItems();\n }\n }\n _super.prototype.updateInner.call(this, cfg);\n };\n Tooltip.prototype.initDom = function () {\n this.cacheDoms();\n };\n // 清理 DOM\n Tooltip.prototype.removeDom = function () {\n _super.prototype.removeDom.call(this);\n this.clearCrosshairs();\n };\n // 调整位置\n Tooltip.prototype.resetPosition = function () {\n var x = this.get('x');\n var y = this.get('y');\n var offset = this.get('offset');\n var _a = this.getOffset(),\n offsetX = _a.offsetX,\n offsetY = _a.offsetY;\n var position = this.get('position');\n var region = this.get('region');\n var container = this.getContainer();\n var bbox = this.getBBox();\n var width = bbox.width,\n height = bbox.height;\n var limitBox;\n if (region) {\n // 不限制位置\n limitBox = regionToBBox(region);\n }\n var point = getAlignPoint(x, y, offset, width, height, position, limitBox);\n modifyCSS(container, {\n left: toPx(point.x + offsetX),\n top: toPx(point.y + offsetY)\n });\n this.resetCrosshairs();\n };\n // 根据 customContent 渲染\n Tooltip.prototype.renderCustomContent = function () {\n var node = this.getHtmlContentNode();\n var parent = this.get('parent');\n var curContainer = this.get('container');\n if (curContainer && curContainer.parentNode === parent) {\n parent.replaceChild(node, curContainer);\n } else {\n parent.appendChild(node);\n }\n this.set('container', node);\n this.resetStyles();\n this.applyStyles();\n };\n Tooltip.prototype.getHtmlContentNode = function () {\n var node;\n var customContent = this.get('customContent');\n if (customContent) {\n var elem = customContent(this.get('title'), this.get('items'));\n if (isElement(elem)) {\n node = elem;\n } else {\n node = createDom(elem);\n }\n }\n return node;\n };\n // 缓存模板设置的各种 DOM\n Tooltip.prototype.cacheDoms = function () {\n var container = this.getContainer();\n var titleDom = container.getElementsByClassName(CssConst.TITLE_CLASS)[0];\n var listDom = container.getElementsByClassName(CssConst.LIST_CLASS)[0];\n this.set('titleDom', titleDom);\n this.set('listDom', listDom);\n };\n // 重置 title\n Tooltip.prototype.resetTitle = function () {\n var title = this.get('title');\n var showTitle = this.get('showTitle');\n if (showTitle && title) {\n this.setTitle(title);\n } else {\n this.setTitle('');\n }\n };\n // 设置 title 文本\n Tooltip.prototype.setTitle = function (text) {\n var titleDom = this.get('titleDom');\n if (titleDom) {\n titleDom.innerText = text;\n }\n };\n // 终止 crosshair\n Tooltip.prototype.resetCrosshairs = function () {\n var crosshairsRegion = this.get('crosshairsRegion');\n var crosshairs = this.get('crosshairs');\n if (!crosshairsRegion || !crosshairs) {\n // 不显示 crosshair,都移除,没有设定 region 也都移除掉\n this.clearCrosshairs();\n } else {\n var crosshairBox = regionToBBox(crosshairsRegion);\n var xCrosshairDom = this.get('xCrosshairDom');\n var yCrosshairDom = this.get('yCrosshairDom');\n if (crosshairs === 'x') {\n this.resetCrosshair('x', crosshairBox);\n // 仅显示 x 的 crosshair,y 移除\n if (yCrosshairDom) {\n yCrosshairDom.remove();\n this.set('yCrosshairDom', null);\n }\n } else if (crosshairs === 'y') {\n this.resetCrosshair('y', crosshairBox);\n // 仅显示 y 的 crosshair,x 移除\n if (xCrosshairDom) {\n xCrosshairDom.remove();\n this.set('xCrosshairDom', null);\n }\n } else {\n this.resetCrosshair('x', crosshairBox);\n this.resetCrosshair('y', crosshairBox);\n }\n this.setCrossHairsVisible(this.get('visible'));\n }\n };\n // 设定 crosshair 的位置,需要区分 x,y\n Tooltip.prototype.resetCrosshair = function (name, bbox) {\n var croshairDom = this.checkCrosshair(name);\n var value = this.get(name);\n if (name === 'x') {\n modifyCSS(croshairDom, {\n left: toPx(value),\n top: toPx(bbox.y),\n height: toPx(bbox.height)\n });\n } else {\n modifyCSS(croshairDom, {\n top: toPx(value),\n left: toPx(bbox.x),\n width: toPx(bbox.width)\n });\n }\n };\n // 如果 crosshair 对应的 dom 不存在,则创建\n Tooltip.prototype.checkCrosshair = function (name) {\n var domName = name + \"CrosshairDom\";\n var tplName = name + \"CrosshairTpl\";\n var constName = \"CROSSHAIR_\" + name.toUpperCase();\n var styleName = CssConst[constName];\n var croshairDom = this.get(domName);\n var parent = this.get('parent');\n if (!croshairDom) {\n croshairDom = createDom(this.get(tplName)); // 创建\n this.applyStyle(styleName, croshairDom); // 设置初始样式\n parent.appendChild(croshairDom); // 添加到跟 tooltip 同级的目录下\n this.set(domName, croshairDom);\n }\n return croshairDom;\n };\n Tooltip.prototype.renderItems = function () {\n this.clearItemDoms();\n var items = this.get('items');\n var itemTpl = this.get('itemTpl');\n var listDom = this.get('listDom');\n if (listDom) {\n each(items, function (item) {\n var color = colorUtil.toCSSGradient(item.color);\n var substituteObj = __assign(__assign({}, item), {\n color: color\n });\n var domStr = substitute(itemTpl, substituteObj);\n var itemDom = createDom(domStr);\n listDom.appendChild(itemDom);\n });\n this.applyChildrenStyles(listDom, this.get('domStyles'));\n }\n };\n Tooltip.prototype.clearItemDoms = function () {\n if (this.get('listDom')) {\n clearDom(this.get('listDom'));\n }\n };\n Tooltip.prototype.clearCrosshairs = function () {\n var xCrosshairDom = this.get('xCrosshairDom');\n var yCrosshairDom = this.get('yCrosshairDom');\n xCrosshairDom && xCrosshairDom.remove();\n yCrosshairDom && yCrosshairDom.remove();\n this.set('xCrosshairDom', null);\n this.set('yCrosshairDom', null);\n };\n return Tooltip;\n}(HtmlComponent);\nexport default Tooltip;","// 检测各边是否超出\nexport function getOutSides(x, y, width, height, limitBox) {\n var hits = {\n left: x < limitBox.x,\n right: x + width > limitBox.x + limitBox.width,\n top: y < limitBox.y,\n bottom: y + height > limitBox.y + limitBox.height\n };\n return hits;\n}\nexport function getPointByPosition(x, y, offset, width, height, position) {\n var px = x;\n var py = y;\n switch (position) {\n case 'left':\n // left center\n px = x - width - offset;\n py = y - height / 2;\n break;\n case 'right':\n px = x + offset;\n py = y - height / 2;\n break;\n case 'top':\n px = x - width / 2;\n py = y - height - offset;\n break;\n case 'bottom':\n // bottom\n px = x - width / 2;\n py = y + offset;\n break;\n default:\n // auto, 在 top-right\n px = x + offset;\n py = y - height - offset;\n break;\n }\n return {\n x: px,\n y: py\n };\n}\nexport function getAlignPoint(x, y, offset, width, height, position, limitBox) {\n var point = getPointByPosition(x, y, offset, width, height, position);\n if (limitBox) {\n var outSides = getOutSides(point.x, point.y, width, height, limitBox);\n if (position === 'auto') {\n // 如果是 auto,默认 tooltip 在右上角,仅需要判定右侧和上测冲突即可\n if (outSides.right) {\n point.x = Math.max(0, x - width - offset);\n }\n if (outSides.top) {\n point.y = Math.max(0, y - height - offset);\n }\n } else if (position === 'top' || position === 'bottom') {\n if (outSides.left) {\n // 左侧躲避\n point.x = limitBox.x;\n }\n if (outSides.right) {\n // 右侧躲避\n point.x = limitBox.x + limitBox.width - width;\n }\n if (position === 'top' && outSides.top) {\n // 如果上面对齐检测上面,不检测下面\n point.y = y + offset;\n }\n if (position === 'bottom' && outSides.bottom) {\n point.y = y - height - offset;\n }\n } else {\n // 检测左右位置\n if (outSides.top) {\n point.y = limitBox.y;\n }\n if (outSides.bottom) {\n point.y = limitBox.y + limitBox.height - height;\n }\n if (position === 'left' && outSides.left) {\n point.x = x + offset;\n }\n if (position === 'right' && outSides.right) {\n point.x = x - width - offset;\n }\n }\n }\n return point;\n}","export var BACKGROUND_STYLE = {\n // fill: 'red',\n opacity: 0\n};\nexport var LINE_STYLE = {\n stroke: '#C5C5C5',\n strokeOpacity: 0.85\n};\nexport var AREA_STYLE = {\n fill: '#CACED4',\n opacity: 0.85\n};","import { __spreadArrays } from \"tslib\";\nimport { catmullRom2Bezier } from '@antv/path-util';\nimport { Category, Linear } from '@antv/scale';\nimport { each, head, isEqual, map } from '@antv/util';\n/**\n * 点数组转 path\n * @param points\n */\nfunction pointsToPath(points) {\n return map(points, function (p, idx) {\n var command = idx === 0 ? 'M' : 'L';\n var x = p[0],\n y = p[1];\n return [command, x, y];\n });\n}\n/**\n * 将点连接成路径 path\n * @param points\n */\nexport function getLinePath(points) {\n return pointsToPath(points);\n}\n/**\n * 将点连成平滑的曲线\n * @param points\n */\nexport function getSmoothLinePath(points) {\n if (points.length <= 2) {\n // 两点以内直接绘制成路径\n return getLinePath(points);\n }\n var data = [];\n each(points, function (p) {\n // 当前点和上一个点一样的时候,忽略掉\n if (!isEqual(p, data.slice(data.length - 2))) {\n data.push(p[0], p[1]);\n }\n });\n // const constraint = [ // 范围\n // [ 0, 0 ],\n // [ 1, 1 ],\n // ];\n var path = catmullRom2Bezier(data, false);\n var _a = head(points),\n x = _a[0],\n y = _a[1];\n path.unshift(['M', x, y]);\n return path;\n}\n/**\n * 将数据转成 path,利用 scale 的归一化能力\n * @param data\n * @param width\n * @param height\n * @param smooth\n */\nexport function dataToPath(data, width, height, smooth) {\n if (smooth === void 0) {\n smooth = true;\n }\n // 利用 scale 来获取 y 上的映射\n var y = new Linear({\n values: data\n });\n var x = new Category({\n values: map(data, function (v, idx) {\n return idx;\n })\n });\n var points = map(data, function (v, idx) {\n return [x.scale(idx) * width, height - y.scale(v) * height];\n });\n return smooth ? getSmoothLinePath(points) : getLinePath(points);\n}\n/**\n * 获得 area 面积的横向连接线的 px 位置\n * @param data\n * @param width\n * @param height\n */\nexport function getAreaLineY(data, height) {\n var y = new Linear({\n values: data\n });\n // 当曲线全部为负数时,取最大值,当曲线全部为正数时,取最小值,当曲线有正有负,则取零点\n var lineY = y.max < 0 ? y.max : Math.max(0, y.min);\n return height - y.scale(lineY) * height;\n}\n/**\n * 线 path 转 area path\n * @param path\n * @param width\n * @param height\n */\nexport function linePathToAreaPath(path, width, height, data) {\n var areaPath = __spreadArrays(path);\n var lineYPx = getAreaLineY(data, height);\n areaPath.push(['L', width, lineYPx]);\n areaPath.push(['L', 0, lineYPx]);\n areaPath.push(['Z']);\n return areaPath;\n}","import { __assign, __extends } from \"tslib\";\nimport GroupComponent from '../abstract/group-component';\nimport { AREA_STYLE, BACKGROUND_STYLE, LINE_STYLE } from './constant';\nimport { dataToPath, linePathToAreaPath } from './path';\nvar Trend = /** @class */function (_super) {\n __extends(Trend, _super);\n function Trend() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Trend.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n name: 'trend',\n x: 0,\n y: 0,\n width: 200,\n height: 16,\n smooth: true,\n isArea: false,\n data: [],\n backgroundStyle: BACKGROUND_STYLE,\n lineStyle: LINE_STYLE,\n areaStyle: AREA_STYLE\n });\n };\n Trend.prototype.renderInner = function (group) {\n var _a = this.cfg,\n width = _a.width,\n height = _a.height,\n data = _a.data,\n smooth = _a.smooth,\n isArea = _a.isArea,\n backgroundStyle = _a.backgroundStyle,\n lineStyle = _a.lineStyle,\n areaStyle = _a.areaStyle;\n // 背景\n this.addShape(group, {\n id: this.getElementId('background'),\n type: 'rect',\n attrs: __assign({\n x: 0,\n y: 0,\n width: width,\n height: height\n }, backgroundStyle)\n });\n var path = dataToPath(data, width, height, smooth);\n // 线\n this.addShape(group, {\n id: this.getElementId('line'),\n type: 'path',\n attrs: __assign({\n path: path\n }, lineStyle)\n });\n // area\n // 在 path 的基础上,增加两个坐标点\n if (isArea) {\n var areaPath = linePathToAreaPath(path, width, height, data);\n this.addShape(group, {\n id: this.getElementId('area'),\n type: 'path',\n attrs: __assign({\n path: areaPath\n }, areaStyle)\n });\n }\n };\n Trend.prototype.applyOffset = function () {\n var _a = this.cfg,\n x = _a.x,\n y = _a.y;\n // 统一移动到对应的位置\n this.moveElementTo(this.get('group'), {\n x: x,\n y: y\n });\n };\n return Trend;\n}(GroupComponent);\nexport { Trend };\nexport default Trend;","import { __assign, __extends } from \"tslib\";\nimport GroupComponent from '../abstract/group-component';\nexport var DEFAULT_HANDLER_STYLE = {\n fill: '#F7F7F7',\n stroke: '#BFBFBF',\n radius: 2,\n opacity: 1,\n cursor: 'ew-resize',\n // 高亮的颜色\n highLightFill: '#FFF'\n};\nvar Handler = /** @class */function (_super) {\n __extends(Handler, _super);\n function Handler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Handler.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n name: 'handler',\n x: 0,\n y: 0,\n width: 10,\n height: 24,\n style: DEFAULT_HANDLER_STYLE\n });\n };\n Handler.prototype.renderInner = function (group) {\n var _a = this.cfg,\n width = _a.width,\n height = _a.height,\n style = _a.style;\n var fill = style.fill,\n stroke = style.stroke,\n radius = style.radius,\n opacity = style.opacity,\n cursor = style.cursor;\n // 按钮框框\n this.addShape(group, {\n type: 'rect',\n id: this.getElementId('background'),\n attrs: {\n x: 0,\n y: 0,\n width: width,\n height: height,\n fill: fill,\n stroke: stroke,\n radius: radius,\n opacity: opacity,\n cursor: cursor\n }\n });\n // 两根竖线\n var x1 = 1 / 3 * width;\n var x2 = 2 / 3 * width;\n var y1 = 1 / 4 * height;\n var y2 = 3 / 4 * height;\n this.addShape(group, {\n id: this.getElementId('line-left'),\n type: 'line',\n attrs: {\n x1: x1,\n y1: y1,\n x2: x1,\n y2: y2,\n stroke: stroke,\n cursor: cursor\n }\n });\n this.addShape(group, {\n id: this.getElementId('line-right'),\n type: 'line',\n attrs: {\n x1: x2,\n y1: y1,\n x2: x2,\n y2: y2,\n stroke: stroke,\n cursor: cursor\n }\n });\n };\n Handler.prototype.applyOffset = function () {\n this.moveElementTo(this.get('group'), {\n x: this.get('x'),\n y: this.get('y')\n });\n };\n Handler.prototype.initEvent = function () {\n this.bindEvents();\n };\n Handler.prototype.bindEvents = function () {\n var _this = this;\n this.get('group').on('mouseenter', function () {\n var highLightFill = _this.get('style').highLightFill;\n _this.getElementByLocalId('background').attr('fill', highLightFill);\n _this.draw();\n });\n this.get('group').on('mouseleave', function () {\n var fill = _this.get('style').fill;\n _this.getElementByLocalId('background').attr('fill', fill);\n _this.draw();\n });\n };\n Handler.prototype.draw = function () {\n var canvas = this.get('container').get('canvas');\n if (canvas) {\n canvas.draw();\n }\n };\n return Handler;\n}(GroupComponent);\nexport { Handler };\nexport default Handler;","/**\n * 一些默认的样式配置\n */\nexport var BACKGROUND_STYLE = {\n fill: '#416180',\n opacity: 0.05\n};\nexport var FOREGROUND_STYLE = {\n fill: '#5B8FF9',\n opacity: 0.15,\n cursor: 'move'\n};\nexport var DEFAULT_HANDLER_WIDTH = 10;\nexport var HANDLER_STYLE = {\n width: DEFAULT_HANDLER_WIDTH,\n height: 24\n};\nexport var TEXT_STYLE = {\n textBaseline: 'middle',\n fill: '#000',\n opacity: 0.45\n};\nexport var SLIDER_CHANGE = 'sliderchange';","import { __assign, __extends } from \"tslib\";\nimport { clamp, deepMix, each, get, isArray, isNil, size } from '@antv/util';\nimport GroupComponent from '../abstract/group-component';\nimport { Trend } from '../trend/trend';\nimport { DEFAULT_HANDLER_STYLE, Handler } from './handler';\nimport { BACKGROUND_STYLE, DEFAULT_HANDLER_WIDTH, FOREGROUND_STYLE, HANDLER_STYLE, SLIDER_CHANGE, TEXT_STYLE } from './constant';\nvar Slider = /** @class */function (_super) {\n __extends(Slider, _super);\n function Slider() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.onMouseDown = function (target) {\n return function (e) {\n _this.currentTarget = target;\n // 取出原生事件\n var event = e.originalEvent;\n // 2. 存储当前点击位置\n event.stopPropagation();\n event.preventDefault();\n // 兼容移动端获取数据\n _this.prevX = get(event, 'touches.0.pageX', event.pageX);\n _this.prevY = get(event, 'touches.0.pageY', event.pageY);\n // 3. 开始滑动的时候,绑定 move 和 up 事件\n var containerDOM = _this.getContainerDOM();\n containerDOM.addEventListener('mousemove', _this.onMouseMove);\n containerDOM.addEventListener('mouseup', _this.onMouseUp);\n containerDOM.addEventListener('mouseleave', _this.onMouseUp);\n // 移动端事件\n containerDOM.addEventListener('touchmove', _this.onMouseMove);\n containerDOM.addEventListener('touchend', _this.onMouseUp);\n containerDOM.addEventListener('touchcancel', _this.onMouseUp);\n };\n };\n _this.onMouseMove = function (event) {\n var width = _this.cfg.width;\n var originValue = [_this.get('start'), _this.get('end')];\n // 滑动过程中,计算偏移,更新滑块,然后 emit 数据出去\n event.stopPropagation();\n event.preventDefault();\n var x = get(event, 'touches.0.pageX', event.pageX);\n var y = get(event, 'touches.0.pageY', event.pageY);\n // 横向的 slider 只处理 x\n var offsetX = x - _this.prevX;\n var offsetXRange = _this.adjustOffsetRange(offsetX / width);\n // 更新 start end range 范围\n _this.updateStartEnd(offsetXRange);\n // 更新 ui\n _this.updateUI(_this.getElementByLocalId('foreground'), _this.getElementByLocalId('minText'), _this.getElementByLocalId('maxText'));\n _this.prevX = x;\n _this.prevY = y;\n _this.draw();\n // 因为存储的 start、end 可能不一定是按大小存储的,所以排序一下,对外是 end >= start\n _this.emit(SLIDER_CHANGE, [_this.get('start'), _this.get('end')].sort());\n _this.delegateEmit('valuechanged', {\n originValue: originValue,\n value: [_this.get('start'), _this.get('end')]\n });\n };\n _this.onMouseUp = function () {\n // 结束之后,取消绑定的事件\n if (_this.currentTarget) {\n _this.currentTarget = undefined;\n }\n var containerDOM = _this.getContainerDOM();\n if (containerDOM) {\n containerDOM.removeEventListener('mousemove', _this.onMouseMove);\n containerDOM.removeEventListener('mouseup', _this.onMouseUp);\n // 防止滑动到 canvas 外部之后,状态丢失\n containerDOM.removeEventListener('mouseleave', _this.onMouseUp);\n // 移动端事件\n containerDOM.removeEventListener('touchmove', _this.onMouseMove);\n containerDOM.removeEventListener('touchend', _this.onMouseUp);\n containerDOM.removeEventListener('touchcancel', _this.onMouseUp);\n }\n };\n return _this;\n }\n Slider.prototype.setRange = function (min, max) {\n this.set('minLimit', min);\n this.set('maxLimit', max);\n var oldStart = this.get('start');\n var oldEnd = this.get('end');\n var newStart = clamp(oldStart, min, max);\n var newEnd = clamp(oldEnd, min, max);\n if (!this.get('isInit') && (oldStart !== newStart || oldEnd !== newEnd)) {\n this.setValue([newStart, newEnd]);\n }\n };\n Slider.prototype.getRange = function () {\n return {\n min: this.get('minLimit') || 0,\n max: this.get('maxLimit') || 1\n };\n };\n Slider.prototype.setValue = function (value) {\n var range = this.getRange();\n if (isArray(value) && value.length === 2) {\n var originValue = [this.get('start'), this.get('end')];\n this.update({\n start: clamp(value[0], range.min, range.max),\n end: clamp(value[1], range.min, range.max)\n });\n if (!this.get('updateAutoRender')) {\n this.render();\n }\n this.delegateEmit('valuechanged', {\n originValue: originValue,\n value: value\n });\n }\n };\n Slider.prototype.getValue = function () {\n return [this.get('start'), this.get('end')];\n };\n Slider.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n name: 'slider',\n x: 0,\n y: 0,\n width: 100,\n height: 16,\n backgroundStyle: {},\n foregroundStyle: {},\n handlerStyle: {},\n textStyle: {},\n defaultCfg: {\n backgroundStyle: BACKGROUND_STYLE,\n foregroundStyle: FOREGROUND_STYLE,\n handlerStyle: HANDLER_STYLE,\n textStyle: TEXT_STYLE\n }\n });\n };\n Slider.prototype.update = function (cfg) {\n var start = cfg.start,\n end = cfg.end;\n var validCfg = __assign({}, cfg);\n if (!isNil(start)) {\n validCfg.start = clamp(start, 0, 1);\n }\n if (!isNil(end)) {\n validCfg.end = clamp(end, 0, 1);\n }\n _super.prototype.update.call(this, validCfg);\n this.minHandler = this.getChildComponentById(this.getElementId('minHandler'));\n this.maxHandler = this.getChildComponentById(this.getElementId('maxHandler'));\n this.trend = this.getChildComponentById(this.getElementId('trend'));\n };\n Slider.prototype.init = function () {\n this.set('start', clamp(this.get('start'), 0, 1));\n this.set('end', clamp(this.get('end'), 0, 1));\n _super.prototype.init.call(this);\n };\n Slider.prototype.render = function () {\n _super.prototype.render.call(this);\n this.updateUI(this.getElementByLocalId('foreground'), this.getElementByLocalId('minText'), this.getElementByLocalId('maxText'));\n };\n Slider.prototype.renderInner = function (group) {\n var _a = this.cfg,\n start = _a.start,\n end = _a.end,\n width = _a.width,\n height = _a.height,\n _b = _a.trendCfg,\n trendCfg = _b === void 0 ? {} : _b,\n minText = _a.minText,\n maxText = _a.maxText,\n _c = _a.backgroundStyle,\n backgroundStyle = _c === void 0 ? {} : _c,\n _d = _a.foregroundStyle,\n foregroundStyle = _d === void 0 ? {} : _d,\n _e = _a.textStyle,\n textStyle = _e === void 0 ? {} : _e;\n var handlerStyle = deepMix({}, DEFAULT_HANDLER_STYLE, this.cfg.handlerStyle);\n var min = start * width;\n var max = end * width;\n // 趋势图数据\n if (size(get(trendCfg, 'data'))) {\n this.trend = this.addComponent(group, __assign({\n component: Trend,\n id: this.getElementId('trend'),\n x: 0,\n y: 0,\n width: width,\n height: height\n }, trendCfg));\n }\n // 1. 背景\n this.addShape(group, {\n id: this.getElementId('background'),\n type: 'rect',\n attrs: __assign({\n x: 0,\n y: 0,\n width: width,\n height: height\n }, backgroundStyle)\n });\n // 2. 左右文字\n var minTextShape = this.addShape(group, {\n id: this.getElementId('minText'),\n type: 'text',\n attrs: __assign({\n // x: 0,\n y: height / 2,\n textAlign: 'right',\n text: minText,\n silent: false\n }, textStyle)\n });\n var maxTextShape = this.addShape(group, {\n id: this.getElementId('maxText'),\n type: 'text',\n attrs: __assign({\n // x: 0,\n y: height / 2,\n textAlign: 'left',\n text: maxText,\n silent: false\n }, textStyle)\n });\n // 3. 前景 选中背景框\n var foregroundShape = this.addShape(group, {\n id: this.getElementId('foreground'),\n name: 'foreground',\n type: 'rect',\n attrs: __assign({\n // x: 0,\n y: 0,\n // width: 0,\n height: height\n }, foregroundStyle)\n });\n // 滑块相关的大小信息\n var handlerWidth = get(handlerStyle, 'width', DEFAULT_HANDLER_WIDTH);\n var handlerHeight = get(handlerStyle, 'height', 24);\n // 4. 左右滑块\n this.minHandler = this.addComponent(group, {\n component: Handler,\n id: this.getElementId('minHandler'),\n name: 'handler-min',\n x: 0,\n y: (height - handlerHeight) / 2,\n width: handlerWidth,\n height: handlerHeight,\n cursor: 'ew-resize',\n style: handlerStyle\n });\n this.maxHandler = this.addComponent(group, {\n component: Handler,\n id: this.getElementId('maxHandler'),\n name: 'handler-max',\n x: 0,\n y: (height - handlerHeight) / 2,\n width: handlerWidth,\n height: handlerHeight,\n cursor: 'ew-resize',\n style: handlerStyle\n });\n };\n Slider.prototype.applyOffset = function () {\n this.moveElementTo(this.get('group'), {\n x: this.get('x'),\n y: this.get('y')\n });\n };\n Slider.prototype.initEvent = function () {\n this.bindEvents();\n };\n Slider.prototype.updateUI = function (foregroundShape, minTextShape, maxTextShape) {\n var _a = this.cfg,\n start = _a.start,\n end = _a.end,\n width = _a.width,\n minText = _a.minText,\n maxText = _a.maxText,\n handlerStyle = _a.handlerStyle,\n height = _a.height;\n var min = start * width;\n var max = end * width;\n if (this.trend) {\n this.trend.update({\n width: width,\n height: height\n });\n if (!this.get('updateAutoRender')) {\n this.trend.render();\n }\n }\n // 1. foreground\n foregroundShape.attr('x', min);\n foregroundShape.attr('width', max - min);\n // 滑块相关的大小信息\n var handlerWidth = get(handlerStyle, 'width', DEFAULT_HANDLER_WIDTH);\n // 设置文本\n minTextShape.attr('text', minText);\n maxTextShape.attr('text', maxText);\n var _b = this._dodgeText([min, max], minTextShape, maxTextShape),\n minAttrs = _b[0],\n maxAttrs = _b[1];\n // 2. 左侧滑块和文字位置\n if (this.minHandler) {\n this.minHandler.update({\n x: min - handlerWidth / 2\n });\n if (!this.get('updateAutoRender')) {\n this.minHandler.render();\n }\n }\n each(minAttrs, function (v, k) {\n return minTextShape.attr(k, v);\n });\n // 3. 右侧滑块和文字位置\n if (this.maxHandler) {\n this.maxHandler.update({\n x: max - handlerWidth / 2\n });\n if (!this.get('updateAutoRender')) {\n this.maxHandler.render();\n }\n }\n each(maxAttrs, function (v, k) {\n return maxTextShape.attr(k, v);\n });\n };\n Slider.prototype.bindEvents = function () {\n var group = this.get('group');\n group.on('handler-min:mousedown', this.onMouseDown('minHandler'));\n group.on('handler-min:touchstart', this.onMouseDown('minHandler'));\n // 2. 右滑块的滑动\n group.on('handler-max:mousedown', this.onMouseDown('maxHandler'));\n group.on('handler-max:touchstart', this.onMouseDown('maxHandler'));\n // 3. 前景选中区域\n var foreground = group.findById(this.getElementId('foreground'));\n foreground.on('mousedown', this.onMouseDown('foreground'));\n foreground.on('touchstart', this.onMouseDown('foreground'));\n };\n /**\n * 调整 offsetRange,因为一些范围的限制\n * @param offsetRange\n */\n Slider.prototype.adjustOffsetRange = function (offsetRange) {\n var _a = this.cfg,\n start = _a.start,\n end = _a.end;\n // 针对不同的滑动组件,处理的方式不同\n switch (this.currentTarget) {\n case 'minHandler':\n {\n var min = 0 - start;\n var max = 1 - start;\n return Math.min(max, Math.max(min, offsetRange));\n }\n case 'maxHandler':\n {\n var min = 0 - end;\n var max = 1 - end;\n return Math.min(max, Math.max(min, offsetRange));\n }\n case 'foreground':\n {\n var min = 0 - start;\n var max = 1 - end;\n return Math.min(max, Math.max(min, offsetRange));\n }\n }\n };\n Slider.prototype.updateStartEnd = function (offsetRange) {\n var _a = this.cfg,\n start = _a.start,\n end = _a.end;\n // 操作不同的组件,反馈不一样\n switch (this.currentTarget) {\n case 'minHandler':\n start += offsetRange;\n break;\n case 'maxHandler':\n end += offsetRange;\n break;\n case 'foreground':\n start += offsetRange;\n end += offsetRange;\n break;\n }\n this.set('start', start);\n this.set('end', end);\n };\n /**\n * 调整 text 的位置,自动躲避\n * 根据位置,调整返回新的位置\n * @param range\n */\n Slider.prototype._dodgeText = function (range, minTextShape, maxTextShape) {\n var _a, _b;\n var _c = this.cfg,\n handlerStyle = _c.handlerStyle,\n width = _c.width;\n var PADDING = 2;\n var handlerWidth = get(handlerStyle, 'width', DEFAULT_HANDLER_WIDTH);\n var min = range[0],\n max = range[1];\n var sorted = false;\n // 如果交换了位置,则对应的 min max 也交互\n if (min > max) {\n _a = [max, min], min = _a[0], max = _a[1];\n _b = [maxTextShape, minTextShape], minTextShape = _b[0], maxTextShape = _b[1];\n sorted = true;\n }\n // 避让规则,优先显示在两侧,只有显示不下的时候,才显示在中间\n var minBBox = minTextShape.getBBox();\n var maxBBox = maxTextShape.getBBox();\n var minAttrs = minBBox.width > min - PADDING ? {\n x: min + handlerWidth / 2 + PADDING,\n textAlign: 'left'\n } : {\n x: min - handlerWidth / 2 - PADDING,\n textAlign: 'right'\n };\n var maxAttrs = maxBBox.width > width - max - PADDING ? {\n x: max - handlerWidth / 2 - PADDING,\n textAlign: 'right'\n } : {\n x: max + handlerWidth / 2 + PADDING,\n textAlign: 'left'\n };\n return !sorted ? [minAttrs, maxAttrs] : [maxAttrs, minAttrs];\n };\n Slider.prototype.draw = function () {\n var container = this.get('container');\n var canvas = container && container.get('canvas');\n if (canvas) {\n canvas.draw();\n }\n };\n Slider.prototype.getContainerDOM = function () {\n var container = this.get('container');\n var canvas = container && container.get('canvas');\n return canvas && canvas.get('container');\n };\n return Slider;\n}(GroupComponent);\nexport { Slider };\nexport default Slider;","export default function addEventListener(target, eventType, callback) {\n if (target) {\n if (typeof target.addEventListener === 'function') {\n target.addEventListener(eventType, callback, false);\n return {\n remove: function remove() {\n target.removeEventListener(eventType, callback, false);\n }\n };\n // @ts-ignore\n }\n\n if (typeof target.attachEvent === 'function') {\n // @ts-ignore\n target.attachEvent('on' + eventType, callback);\n return {\n remove: function remove() {\n // @ts-ignore\n target.detachEvent('on' + eventType, callback);\n }\n };\n }\n }\n}","import { __assign, __extends } from \"tslib\";\nimport { addEventListener } from '@antv/dom-util';\nimport { clamp, deepMix, get, noop } from '@antv/util';\nimport GroupComponent from '../abstract/group-component';\nvar DEFAULT_STYLE = {\n trackColor: 'rgba(0,0,0,0)',\n thumbColor: 'rgba(0,0,0,0.15)',\n size: 8,\n lineCap: 'round'\n};\nexport var DEFAULT_THEME = {\n // 默认样式\n default: DEFAULT_STYLE,\n // 鼠标 hover 的样式\n hover: {\n thumbColor: 'rgba(0,0,0,0.2)'\n }\n};\nvar Scrollbar = /** @class */function (_super) {\n __extends(Scrollbar, _super);\n function Scrollbar() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.clearEvents = noop;\n _this.onStartEvent = function (isMobile) {\n return function (e) {\n _this.isMobile = isMobile;\n e.originalEvent.preventDefault();\n var clientX = isMobile ? get(e.originalEvent, 'touches.0.clientX') : e.clientX;\n var clientY = isMobile ? get(e.originalEvent, 'touches.0.clientY') : e.clientY;\n // 将开始的点记录下来\n _this.startPos = _this.cfg.isHorizontal ? clientX : clientY;\n _this.bindLaterEvent();\n };\n };\n _this.bindLaterEvent = function () {\n var containerDOM = _this.getContainerDOM();\n var events = [];\n if (_this.isMobile) {\n events = [addEventListener(containerDOM, 'touchmove', _this.onMouseMove), addEventListener(containerDOM, 'touchend', _this.onMouseUp), addEventListener(containerDOM, 'touchcancel', _this.onMouseUp)];\n } else {\n events = [addEventListener(containerDOM, 'mousemove', _this.onMouseMove), addEventListener(containerDOM, 'mouseup', _this.onMouseUp),\n // 为了保证划出 canvas containerDom 时还没触发 mouseup\n addEventListener(containerDOM, 'mouseleave', _this.onMouseUp)];\n }\n _this.clearEvents = function () {\n events.forEach(function (e) {\n e.remove();\n });\n };\n };\n // 拖拽滑块的事件回调\n // 这里是 dom 原生事件,绑定在 dom 元素上的\n _this.onMouseMove = function (e) {\n var _a = _this.cfg,\n isHorizontal = _a.isHorizontal,\n thumbOffset = _a.thumbOffset;\n e.preventDefault();\n var clientX = _this.isMobile ? get(e, 'touches.0.clientX') : e.clientX;\n var clientY = _this.isMobile ? get(e, 'touches.0.clientY') : e.clientY;\n // 鼠标松开的位置\n var endPos = isHorizontal ? clientX : clientY;\n // 滑块需要移动的距离, 由于这里是对滑块监听,所以移动的距离就是 diffDis, 如果监听对象是 container dom,则需要算比例\n var diff = endPos - _this.startPos;\n // 更新 _startPos\n _this.startPos = endPos;\n _this.updateThumbOffset(thumbOffset + diff);\n };\n _this.onMouseUp = function (e) {\n e.preventDefault();\n _this.clearEvents();\n };\n // 点击滑道的事件回调,移动滑块位置\n _this.onTrackClick = function (e) {\n var _a = _this.cfg,\n isHorizontal = _a.isHorizontal,\n x = _a.x,\n y = _a.y,\n thumbLen = _a.thumbLen;\n var containerDOM = _this.getContainerDOM();\n var rect = containerDOM.getBoundingClientRect();\n var clientX = e.clientX,\n clientY = e.clientY;\n var offset = isHorizontal ? clientX - rect.left - x - thumbLen / 2 : clientY - rect.top - y - thumbLen / 2;\n var newOffset = _this.validateRange(offset);\n _this.updateThumbOffset(newOffset);\n };\n _this.onThumbMouseOver = function () {\n var thumbColor = _this.cfg.theme.hover.thumbColor;\n _this.getElementByLocalId('thumb').attr('stroke', thumbColor);\n _this.draw();\n };\n _this.onThumbMouseOut = function () {\n var thumbColor = _this.cfg.theme.default.thumbColor;\n _this.getElementByLocalId('thumb').attr('stroke', thumbColor);\n _this.draw();\n };\n return _this;\n }\n Scrollbar.prototype.setRange = function (min, max) {\n this.set('minLimit', min);\n this.set('maxLimit', max);\n var curValue = this.getValue();\n var newValue = clamp(curValue, min, max);\n if (curValue !== newValue && !this.get('isInit')) {\n this.setValue(newValue);\n }\n };\n Scrollbar.prototype.getRange = function () {\n var min = this.get('minLimit') || 0;\n var max = this.get('maxLimit') || 1;\n return {\n min: min,\n max: max\n };\n };\n Scrollbar.prototype.setValue = function (value) {\n var range = this.getRange();\n var originalValue = this.getValue();\n this.update({\n thumbOffset: (this.get('trackLen') - this.get('thumbLen')) * clamp(value, range.min, range.max)\n });\n this.delegateEmit('valuechange', {\n originalValue: originalValue,\n value: this.getValue()\n });\n };\n Scrollbar.prototype.getValue = function () {\n return clamp(this.get('thumbOffset') / (this.get('trackLen') - this.get('thumbLen')), 0, 1);\n };\n Scrollbar.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n return __assign(__assign({}, cfg), {\n name: 'scrollbar',\n isHorizontal: true,\n minThumbLen: 20,\n thumbOffset: 0,\n theme: DEFAULT_THEME\n });\n };\n Scrollbar.prototype.renderInner = function (group) {\n this.renderTrackShape(group);\n this.renderThumbShape(group);\n };\n Scrollbar.prototype.applyOffset = function () {\n this.moveElementTo(this.get('group'), {\n x: this.get('x'),\n y: this.get('y')\n });\n };\n Scrollbar.prototype.initEvent = function () {\n this.bindEvents();\n };\n // 创建滑道的 shape\n Scrollbar.prototype.renderTrackShape = function (group) {\n var _a = this.cfg,\n trackLen = _a.trackLen,\n _b = _a.theme,\n theme = _b === void 0 ? {\n default: {}\n } : _b;\n var _c = deepMix({}, DEFAULT_THEME, theme).default,\n lineCap = _c.lineCap,\n trackColor = _c.trackColor,\n themeSize = _c.size;\n var size = get(this.cfg, 'size', themeSize);\n var attrs = this.get('isHorizontal') ? {\n x1: 0 + size / 2,\n y1: size / 2,\n x2: trackLen - size / 2,\n y2: size / 2,\n lineWidth: size,\n stroke: trackColor,\n lineCap: lineCap\n } : {\n x1: size / 2,\n y1: 0 + size / 2,\n x2: size / 2,\n y2: trackLen - size / 2,\n lineWidth: size,\n stroke: trackColor,\n lineCap: lineCap\n };\n return this.addShape(group, {\n id: this.getElementId('track'),\n name: 'track',\n type: 'line',\n attrs: attrs\n });\n };\n // 创建滑块的 shape\n Scrollbar.prototype.renderThumbShape = function (group) {\n var _a = this.cfg,\n thumbOffset = _a.thumbOffset,\n thumbLen = _a.thumbLen,\n theme = _a.theme;\n var _b = deepMix({}, DEFAULT_THEME, theme).default,\n themeSize = _b.size,\n lineCap = _b.lineCap,\n thumbColor = _b.thumbColor;\n var size = get(this.cfg, 'size', themeSize);\n var attrs = this.get('isHorizontal') ? {\n x1: thumbOffset + size / 2,\n y1: size / 2,\n x2: thumbOffset + thumbLen - size / 2,\n y2: size / 2,\n lineWidth: size,\n stroke: thumbColor,\n lineCap: lineCap,\n cursor: 'default'\n } : {\n x1: size / 2,\n y1: thumbOffset + size / 2,\n x2: size / 2,\n y2: thumbOffset + thumbLen - size / 2,\n lineWidth: size,\n stroke: thumbColor,\n lineCap: lineCap,\n cursor: 'default'\n };\n return this.addShape(group, {\n id: this.getElementId('thumb'),\n name: 'thumb',\n type: 'line',\n attrs: attrs\n });\n };\n Scrollbar.prototype.bindEvents = function () {\n var group = this.get('group');\n group.on('mousedown', this.onStartEvent(false));\n group.on('mouseup', this.onMouseUp);\n group.on('touchstart', this.onStartEvent(true));\n group.on('touchend', this.onMouseUp);\n var trackShape = group.findById(this.getElementId('track'));\n trackShape.on('click', this.onTrackClick);\n var thumbShape = group.findById(this.getElementId('thumb'));\n thumbShape.on('mouseover', this.onThumbMouseOver);\n thumbShape.on('mouseout', this.onThumbMouseOut);\n };\n Scrollbar.prototype.getContainerDOM = function () {\n var container = this.get('container');\n var canvas = container && container.get('canvas');\n return canvas && canvas.get('container');\n };\n Scrollbar.prototype.validateRange = function (offset) {\n var _a = this.cfg,\n thumbLen = _a.thumbLen,\n trackLen = _a.trackLen;\n var newOffset = offset;\n if (offset + thumbLen > trackLen) {\n newOffset = trackLen - thumbLen;\n } else if (offset + thumbLen < thumbLen) {\n newOffset = 0;\n }\n return newOffset;\n };\n Scrollbar.prototype.draw = function () {\n var container = this.get('container');\n var canvas = container && container.get('canvas');\n if (canvas) {\n canvas.draw();\n }\n };\n Scrollbar.prototype.updateThumbOffset = function (offset) {\n var _a = this.cfg,\n thumbOffset = _a.thumbOffset,\n isHorizontal = _a.isHorizontal,\n thumbLen = _a.thumbLen,\n size = _a.size;\n var newOffset = this.validateRange(offset);\n if (newOffset === thumbOffset) {\n // 如果更新后的 offset 与原值相同,则不改变\n return;\n }\n var thumbShape = this.getElementByLocalId('thumb');\n if (isHorizontal) {\n thumbShape.attr({\n x1: newOffset + size / 2,\n x2: newOffset + thumbLen - size / 2\n });\n } else {\n thumbShape.attr({\n y1: newOffset + size / 2,\n y2: newOffset + thumbLen - size / 2\n });\n }\n this.emitOffsetChange(newOffset);\n };\n Scrollbar.prototype.emitOffsetChange = function (offset) {\n var _a = this.cfg,\n originalValue = _a.thumbOffset,\n trackLen = _a.trackLen,\n thumbLen = _a.thumbLen;\n this.cfg.thumbOffset = offset;\n // 发送事件\n this.emit('scrollchange', {\n thumbOffset: offset,\n ratio: clamp(offset / (trackLen - thumbLen), 0, 1)\n });\n this.delegateEmit('valuechange', {\n originalValue: originalValue,\n value: offset\n });\n };\n return Scrollbar;\n}(GroupComponent);\nexport { Scrollbar };","/* 依赖的模块,在这里统一引入,方便打包优化 */\n// G\nexport { Event, AbstractGroup, AbstractShape } from '@antv/g-base';\n// adjust\nexport { registerAdjust, getAdjust, Adjust } from '@antv/adjust';\n// attr\nexport { getAttribute, Attribute } from '@antv/attr';\nexport { Color } from '@antv/attr';\n// coordinate\nexport { getCoordinate, registerCoordinate, Coordinate } from '@antv/coord';\n// scale\nexport { getScale, registerScale, Scale } from '@antv/scale';\n// component\nimport { Annotation, Axis, Component, Crosshair, Grid, GroupComponent, HtmlComponent, Legend, Slider, Tooltip, Scrollbar } from '@antv/component';\nexport { HtmlComponent, GroupComponent, Component, Crosshair };\nexport { Annotation };\n// axis\nvar LineAxis = Axis.Line,\n CircleAxis = Axis.Circle;\nexport { LineAxis, CircleAxis };\n// grid\nvar LineGrid = Grid.Line,\n CircleGrid = Grid.Circle;\nexport { LineGrid, CircleGrid };\n// legend\nvar CategoryLegend = Legend.Category,\n ContinuousLegend = Legend.Continuous;\nexport { CategoryLegend, ContinuousLegend };\n// Tooltip\nvar HtmlTooltip = Tooltip.Html;\nexport { HtmlTooltip };\n// Slider\nexport { Slider };\n// Scrollbar\nexport { Scrollbar };","import { each, isEmpty, isNumber, isNumberEqual, max, min } from '@antv/util';\n// 获取图形的包围盒\nfunction getPointsBox(points) {\n if (isEmpty(points)) {\n return null;\n }\n var minX = points[0].x;\n var maxX = points[0].x;\n var minY = points[0].y;\n var maxY = points[0].y;\n each(points, function (point) {\n minX = minX > point.x ? point.x : minX;\n maxX = maxX < point.x ? point.x : maxX;\n minY = minY > point.y ? point.y : minY;\n maxY = maxY < point.y ? point.y : maxY;\n });\n return {\n minX: minX,\n maxX: maxX,\n minY: minY,\n maxY: maxY,\n centerX: (minX + maxX) / 2,\n centerY: (minY + maxY) / 2\n };\n}\nfunction uniqueValues(array) {\n return Array.from(new Set(array)).length === 1;\n}\nfunction mid(array) {\n return (min(array) + max(array)) / 2;\n}\n/**\n * @ignore\n * 根据弧度计算极坐标系下的坐标点\n * @param centerX\n * @param centerY\n * @param radius\n * @param angleInRadian\n * @returns\n */\nexport function polarToCartesian(centerX, centerY, radius, angleInRadian) {\n return {\n x: centerX + radius * Math.cos(angleInRadian),\n y: centerY + radius * Math.sin(angleInRadian)\n };\n}\n/**\n * @ignore\n * 根据起始角度计算绘制扇形的 path\n * @param centerX\n * @param centerY\n * @param radius\n * @param startAngleInRadian\n * @param endAngleInRadian\n * @returns\n */\nexport function getSectorPath(centerX, centerY, radius, startAngleInRadian, endAngleInRadian, innerRadius) {\n if (innerRadius === void 0) {\n innerRadius = 0;\n }\n var start = polarToCartesian(centerX, centerY, radius, startAngleInRadian);\n var end = polarToCartesian(centerX, centerY, radius, endAngleInRadian);\n var innerStart = polarToCartesian(centerX, centerY, innerRadius, startAngleInRadian);\n var innerEnd = polarToCartesian(centerX, centerY, innerRadius, endAngleInRadian);\n if (endAngleInRadian - startAngleInRadian === Math.PI * 2) {\n // 整个圆是分割成两个圆\n var middlePoint = polarToCartesian(centerX, centerY, radius, startAngleInRadian + Math.PI);\n var innerMiddlePoint = polarToCartesian(centerX, centerY, innerRadius, startAngleInRadian + Math.PI);\n var circlePathCommands = [['M', start.x, start.y], ['A', radius, radius, 0, 1, 1, middlePoint.x, middlePoint.y], ['A', radius, radius, 0, 1, 1, end.x, end.y], ['M', innerStart.x, innerStart.y]];\n if (innerRadius) {\n circlePathCommands.push(['A', innerRadius, innerRadius, 0, 1, 0, innerMiddlePoint.x, innerMiddlePoint.y]);\n circlePathCommands.push(['A', innerRadius, innerRadius, 0, 1, 0, innerEnd.x, innerEnd.y]);\n }\n circlePathCommands.push(['M', start.x, start.y]);\n circlePathCommands.push(['Z']);\n return circlePathCommands;\n }\n var arcSweep = endAngleInRadian - startAngleInRadian <= Math.PI ? 0 : 1;\n var sectorPathCommands = [['M', start.x, start.y], ['A', radius, radius, 0, arcSweep, 1, end.x, end.y], ['L', innerEnd.x, innerEnd.y]];\n if (innerRadius) {\n sectorPathCommands.push(['A', innerRadius, innerRadius, 0, arcSweep, 0, innerStart.x, innerStart.y]);\n }\n sectorPathCommands.push(['L', start.x, start.y]);\n sectorPathCommands.push(['Z']);\n return sectorPathCommands;\n}\n/**\n * @ignore\n * Gets arc path\n * @param centerX\n * @param centerY\n * @param radius\n * @param startAngleInRadian\n * @param endAngleInRadian\n * @returns\n */\nexport function getArcPath(centerX, centerY, radius, startAngleInRadian, endAngleInRadian) {\n var start = polarToCartesian(centerX, centerY, radius, startAngleInRadian);\n var end = polarToCartesian(centerX, centerY, radius, endAngleInRadian);\n if (isNumberEqual(endAngleInRadian - startAngleInRadian, Math.PI * 2)) {\n var middlePoint = polarToCartesian(centerX, centerY, radius, startAngleInRadian + Math.PI);\n return [['M', start.x, start.y], ['A', radius, radius, 0, 1, 1, middlePoint.x, middlePoint.y], ['A', radius, radius, 0, 1, 1, start.x, start.y], ['A', radius, radius, 0, 1, 0, middlePoint.x, middlePoint.y], ['A', radius, radius, 0, 1, 0, start.x, start.y], ['Z']];\n }\n var arcSweep = endAngleInRadian - startAngleInRadian <= Math.PI ? 0 : 1;\n return [['M', start.x, start.y], ['A', radius, radius, 0, arcSweep, 1, end.x, end.y]];\n}\n/**\n * @ignore\n * 从数据模型中的 points 换算角度\n * @param shapeModel\n * @param coordinate\n * @returns\n */\nexport function getAngle(shapeModel, coordinate) {\n var points = shapeModel.points;\n var box = getPointsBox(points);\n var endAngle;\n var startAngle;\n var coordStartAngle = coordinate.startAngle,\n coordEndAngle = coordinate.endAngle;\n var diffAngle = coordEndAngle - coordStartAngle;\n if (coordinate.isTransposed) {\n endAngle = box.maxY * diffAngle;\n startAngle = box.minY * diffAngle;\n } else {\n endAngle = box.maxX * diffAngle;\n startAngle = box.minX * diffAngle;\n }\n endAngle += coordStartAngle;\n startAngle += coordStartAngle;\n return {\n startAngle: startAngle,\n endAngle: endAngle\n };\n}\n/**\n * @ignore\n * 计算多边形重心: https://en.wikipedia.org/wiki/Centroid#Of_a_polygon\n */\nexport function getPolygonCentroid(xs, ys) {\n if (isNumber(xs) && isNumber(ys)) {\n // 普通色块图,xs 和 ys 是数值\n return [xs, ys];\n }\n xs = xs;\n ys = ys;\n // 当这个 polygon 的点在一条线上的时候\n // 也就是说 xs 里面的值都相同,比如:[1, 1, 1, 1]\n // 或者说 ys 里面的值都相同,比如:[0, 0, 0, 0]\n // 下面计算得到的 k = 0\n // 导致返回的值是 [NaN, NaN]\n // 所以这里做相应的处理\n if (uniqueValues(xs) || uniqueValues(ys)) return [mid(xs), mid(ys)];\n var i = -1;\n var x = 0;\n var y = 0;\n var former;\n var current = xs.length - 1;\n var diff;\n var k = 0;\n while (++i < xs.length) {\n former = current;\n current = i;\n k += diff = xs[former] * ys[current] - xs[current] * ys[former];\n x += (xs[former] + xs[current]) * diff;\n y += (ys[former] + ys[current]) * diff;\n }\n k *= 3;\n return [x / k, y / k];\n}\n/**\n * @ignore\n * 获取需要替换的属性,如果原先图形元素存在,而新图形不存在,则设置 undefined\n */\nexport function getReplaceAttrs(sourceShape, targetShape) {\n var originAttrs = sourceShape.attr();\n var newAttrs = targetShape.attr();\n each(originAttrs, function (v, k) {\n if (newAttrs[k] === undefined) {\n newAttrs[k] = undefined;\n }\n });\n return newAttrs;\n}","import { __values } from \"tslib\";\nimport { isArray, isString } from '@antv/util';\n/**\n * @ignore\n * Determines whether between is\n * @param value\n * @param start\n * @param end\n * @returns true if between\n */\nexport function isBetween(value, start, end) {\n var min = Math.min(start, end);\n var max = Math.max(start, end);\n return value >= min && value <= max;\n}\n/**\n * @ignore\n * pads the current string/array with a given value (repeated, if needed) so that the resulting reaches a given length.\n * The padding is applied from the end of the current value.\n *\n * @param source\n * @param targetLength\n * @param padValue\n * @returns\n */\nexport function padEnd(source, targetLength, padValue) {\n if (isString(source)) {\n return source.padEnd(targetLength, padValue);\n } else if (isArray(source)) {\n var sourceLength = source.length;\n if (sourceLength < targetLength) {\n var diff = targetLength - sourceLength;\n for (var i = 0; i < diff; i++) {\n source.push(padValue);\n }\n }\n }\n return source;\n}\n/**\n * @ignore\n * omit keys of an object.\n * @param obj\n * @param keys\n */\nexport function omit(obj, keys) {\n if (typeof obj === 'object') {\n keys.forEach(function (key) {\n delete obj[key];\n });\n }\n return obj;\n}\n/**\n * @ignore\n * @param sourceArray\n * @param targetArray\n * @param map\n */\nexport function uniq(sourceArray, targetArray, map) {\n var e_1, _a;\n if (targetArray === void 0) {\n targetArray = [];\n }\n if (map === void 0) {\n map = new Map();\n }\n try {\n for (var sourceArray_1 = __values(sourceArray), sourceArray_1_1 = sourceArray_1.next(); !sourceArray_1_1.done; sourceArray_1_1 = sourceArray_1.next()) {\n var source = sourceArray_1_1.value;\n if (!map.has(source)) {\n targetArray.push(source);\n map.set(source, true);\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (sourceArray_1_1 && !sourceArray_1_1.done && (_a = sourceArray_1.return)) _a.call(sourceArray_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n return targetArray;\n}","import { __read } from \"tslib\";\nimport { each } from '@antv/util';\nimport { DIRECTION } from '../constant';\n/**\n * 用于包围盒计算。\n */\nvar BBox = /** @class */function () {\n function BBox(x, y, width, height) {\n if (x === void 0) {\n x = 0;\n }\n if (y === void 0) {\n y = 0;\n }\n if (width === void 0) {\n width = 0;\n }\n if (height === void 0) {\n height = 0;\n }\n this.x = x;\n this.y = y;\n this.height = height;\n this.width = width;\n }\n BBox.fromRange = function (minX, minY, maxX, maxY) {\n return new BBox(minX, minY, maxX - minX, maxY - minY);\n };\n BBox.fromObject = function (bbox) {\n return new BBox(bbox.minX, bbox.minY, bbox.width, bbox.height);\n };\n Object.defineProperty(BBox.prototype, \"minX\", {\n get: function get() {\n return this.x;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BBox.prototype, \"maxX\", {\n get: function get() {\n return this.x + this.width;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BBox.prototype, \"minY\", {\n get: function get() {\n return this.y;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BBox.prototype, \"maxY\", {\n get: function get() {\n return this.y + this.height;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BBox.prototype, \"tl\", {\n get: function get() {\n return {\n x: this.x,\n y: this.y\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BBox.prototype, \"tr\", {\n get: function get() {\n return {\n x: this.maxX,\n y: this.y\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BBox.prototype, \"bl\", {\n get: function get() {\n return {\n x: this.x,\n y: this.maxY\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BBox.prototype, \"br\", {\n get: function get() {\n return {\n x: this.maxX,\n y: this.maxY\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BBox.prototype, \"top\", {\n get: function get() {\n return {\n x: this.x + this.width / 2,\n y: this.minY\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BBox.prototype, \"right\", {\n get: function get() {\n return {\n x: this.maxX,\n y: this.y + this.height / 2\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BBox.prototype, \"bottom\", {\n get: function get() {\n return {\n x: this.x + this.width / 2,\n y: this.maxY\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BBox.prototype, \"left\", {\n get: function get() {\n return {\n x: this.minX,\n y: this.y + this.height / 2\n };\n },\n enumerable: false,\n configurable: true\n });\n // end 计算属性\n /**\n * 包围盒是否相等\n * @param {BBox} bbox 包围盒\n * @returns 包围盒是否相等\n */\n BBox.prototype.isEqual = function (bbox) {\n return this.x === bbox.x && this.y === bbox.y && this.width === bbox.width && this.height === bbox.height;\n };\n /**\n * 是否包含了另一个包围盒\n * @param child\n */\n BBox.prototype.contains = function (child) {\n return child.minX >= this.minX && child.maxX <= this.maxX && child.minY >= this.minY && child.maxY <= this.maxY;\n };\n /**\n * 克隆包围盒\n * @returns 包围盒\n */\n BBox.prototype.clone = function () {\n return new BBox(this.x, this.y, this.width, this.height);\n };\n /**\n * 取并集\n * @param subBBox\n */\n BBox.prototype.add = function () {\n var subBBox = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n subBBox[_i] = arguments[_i];\n }\n var bbox = this.clone();\n each(subBBox, function (b) {\n bbox.x = Math.min(b.x, bbox.x);\n bbox.y = Math.min(b.y, bbox.y);\n bbox.width = Math.max(b.maxX, bbox.maxX) - bbox.x;\n bbox.height = Math.max(b.maxY, bbox.maxY) - bbox.y;\n });\n return bbox;\n };\n /**\n * 取交集\n * @param subBBox\n */\n BBox.prototype.merge = function () {\n var subBBox = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n subBBox[_i] = arguments[_i];\n }\n var bbox = this.clone();\n each(subBBox, function (b) {\n bbox.x = Math.max(b.x, bbox.x);\n bbox.y = Math.max(b.y, bbox.y);\n bbox.width = Math.min(b.maxX, bbox.maxX) - bbox.x;\n bbox.height = Math.min(b.maxY, bbox.maxY) - bbox.y;\n });\n return bbox;\n };\n /**\n * bbox 剪裁\n * @param subBBox\n * @param direction\n */\n BBox.prototype.cut = function (subBBox, direction) {\n var width = subBBox.width;\n var height = subBBox.height;\n switch (direction) {\n case DIRECTION.TOP:\n case DIRECTION.TOP_LEFT:\n case DIRECTION.TOP_RIGHT:\n return BBox.fromRange(this.minX, this.minY + height, this.maxX, this.maxY);\n case DIRECTION.RIGHT:\n case DIRECTION.RIGHT_TOP:\n case DIRECTION.RIGHT_BOTTOM:\n return BBox.fromRange(this.minX, this.minY, this.maxX - width, this.maxY);\n case DIRECTION.BOTTOM:\n case DIRECTION.BOTTOM_LEFT:\n case DIRECTION.BOTTOM_RIGHT:\n return BBox.fromRange(this.minX, this.minY, this.maxX, this.maxY - height);\n case DIRECTION.LEFT:\n case DIRECTION.LEFT_TOP:\n case DIRECTION.LEFT_BOTTOM:\n return BBox.fromRange(this.minX + width, this.minY, this.maxX, this.maxY);\n default:\n // 其他情况不裁剪,原样返回\n return this;\n }\n };\n /**\n * 收缩形成新的\n * @param gap\n */\n BBox.prototype.shrink = function (gap) {\n var _a = __read(gap, 4),\n top = _a[0],\n right = _a[1],\n bottom = _a[2],\n left = _a[3];\n return new BBox(this.x + left, this.y + top, this.width - left - right, this.height - top - bottom);\n };\n /**\n * 扩张形成新的\n * @param gap\n */\n BBox.prototype.expand = function (gap) {\n var _a = __read(gap, 4),\n top = _a[0],\n right = _a[1],\n bottom = _a[2],\n left = _a[3];\n return new BBox(this.x - left, this.y - top, this.width + left + right, this.height + top + bottom);\n };\n /**\n * get the gap of two bbox, if not exceed, then 0\n * @param bbox\n * @returns [top, right, bottom, left]\n */\n BBox.prototype.exceed = function (bbox) {\n return [Math.max(-this.minY + bbox.minY, 0), Math.max(this.maxX - bbox.maxX, 0), Math.max(this.maxY - bbox.maxY, 0), Math.max(-this.minX + bbox.minX, 0)];\n };\n /**\n * 是否碰撞\n * @param bbox\n */\n BBox.prototype.collide = function (bbox) {\n return this.minX < bbox.maxX && this.maxX > bbox.minX && this.minY < bbox.maxY && this.maxY > bbox.minY;\n };\n /**\n * 获取包围盒大小\n * @returns 包围盒大小\n */\n BBox.prototype.size = function () {\n return this.width * this.height;\n };\n /**\n * 点是否在 bbox 中\n * @param p\n */\n BBox.prototype.isPointIn = function (p) {\n return p.x >= this.minX && p.x <= this.maxX && p.y >= this.minY && p.y <= this.maxY;\n };\n return BBox;\n}();\nexport { BBox };\n/**\n * 从一个 bbox 的 region 获取 bbox\n * @param bbox\n * @param region\n */\nexport var getRegionBBox = function getRegionBBox(bbox, region) {\n var start = region.start,\n end = region.end;\n return new BBox(bbox.x + bbox.width * start.x, bbox.y + bbox.height * start.y, bbox.width * Math.abs(end.x - start.x), bbox.height * Math.abs(end.y - start.y));\n};\n/**\n * 将 bbox 转换成 points\n * @param bbox\n */\nexport function toPoints(bbox) {\n return [[bbox.minX, bbox.minY], [bbox.maxX, bbox.minY], [bbox.maxX, bbox.maxY], [bbox.minX, bbox.maxY]];\n}","import { getSectorPath } from './graphics';\nimport { isBetween } from './helper';\nimport { BBox } from './bbox';\n/**\n * @ignore\n * Gets x dimension length\n * @param coordinate\n * @returns x dimension length\n */\nexport function getXDimensionLength(coordinate) {\n if (coordinate.isPolar && !coordinate.isTransposed) {\n // 极坐标系下 width 为弧长\n return (coordinate.endAngle - coordinate.startAngle) * coordinate.getRadius();\n }\n // 直角坐标系\n var start = coordinate.convert({\n x: 0,\n y: 0\n });\n var end = coordinate.convert({\n x: 1,\n y: 0\n });\n // 坐标系有可能发生 transpose 等变换,所有通过两点之间的距离进行计算\n return Math.sqrt(Math.pow(end.x - start.x, 2) + Math.pow(end.y - start.y, 2));\n}\n/**\n * @ignore\n * Determines whether full circle is\n * @param coordinate\n * @returns true if full circle\n */\nexport function isFullCircle(coordinate) {\n if (coordinate.isPolar) {\n var startAngle = coordinate.startAngle,\n endAngle = coordinate.endAngle;\n return endAngle - startAngle === Math.PI * 2;\n }\n return false;\n}\n/**\n * @ignore\n * 获取当前点到坐标系圆心的距离\n * @param coordinate 坐标系\n * @param point 当前点\n * @returns distance to center\n */\nexport function getDistanceToCenter(coordinate, point) {\n var center = coordinate.getCenter();\n return Math.sqrt(Math.pow(point.x - center.x, 2) + Math.pow(point.y - center.y, 2));\n}\n/**\n * @ignore\n * 坐标点是否在坐标系中\n * @param coordinate\n * @param point\n */\nexport function isPointInCoordinate(coordinate, point) {\n var result = false;\n if (coordinate) {\n if (coordinate.type === 'theta') {\n var start = coordinate.start,\n end = coordinate.end;\n result = isBetween(point.x, start.x, end.x) && isBetween(point.y, start.y, end.y);\n } else {\n var invertPoint = coordinate.invert(point);\n result = isBetween(invertPoint.x, 0, 1) && isBetween(invertPoint.y, 0, 1);\n }\n }\n return result;\n}\n/**\n * @ignore\n * 获取点到圆心的连线与水平方向的夹角\n */\nexport function getAngleByPoint(coordinate, point) {\n var center = coordinate.getCenter();\n return Math.atan2(point.y - center.y, point.x - center.x);\n}\n/**\n * @ignore\n * 获取同坐标系范围相同的剪切区域\n * @param coordinate\n * @returns\n */\nexport function getCoordinateClipCfg(coordinate, margin) {\n if (margin === void 0) {\n margin = 0;\n }\n var start = coordinate.start,\n end = coordinate.end;\n var width = coordinate.getWidth();\n var height = coordinate.getHeight();\n if (coordinate.isPolar) {\n var startAngle_1 = coordinate.startAngle,\n endAngle_1 = coordinate.endAngle;\n var center_1 = coordinate.getCenter();\n var radius_1 = coordinate.getRadius();\n return {\n type: 'path',\n startState: {\n path: getSectorPath(center_1.x, center_1.y, radius_1 + margin, startAngle_1, startAngle_1)\n },\n endState: function endState(ratio) {\n var diff = (endAngle_1 - startAngle_1) * ratio + startAngle_1;\n var path = getSectorPath(center_1.x, center_1.y, radius_1 + margin, startAngle_1, diff);\n return {\n path: path\n };\n },\n attrs: {\n path: getSectorPath(center_1.x, center_1.y, radius_1 + margin, startAngle_1, endAngle_1)\n }\n };\n }\n var endState;\n if (coordinate.isTransposed) {\n endState = {\n height: height + margin * 2\n };\n } else {\n endState = {\n width: width + margin * 2\n };\n }\n return {\n type: 'rect',\n startState: {\n x: start.x - margin,\n y: end.y - margin,\n width: coordinate.isTransposed ? width + margin * 2 : 0,\n height: coordinate.isTransposed ? 0 : height + margin * 2\n },\n endState: endState,\n attrs: {\n x: start.x - margin,\n y: end.y - margin,\n width: width + margin * 2,\n height: height + margin * 2\n }\n };\n}\n/**\n * 获取坐标系范围的 BBox\n * @param coordinate\n * @param margin\n */\nexport function getCoordinateBBox(coordinate, margin) {\n if (margin === void 0) {\n margin = 0;\n }\n var start = coordinate.start,\n end = coordinate.end;\n var width = coordinate.getWidth();\n var height = coordinate.getHeight();\n var minX = Math.min(start.x, end.x);\n var minY = Math.min(start.y, end.y);\n return BBox.fromRange(minX - margin, minY - margin, minX + width + margin, minY + height + margin);\n}","import { __assign, __read, __spreadArray } from \"tslib\";\nimport { firstValue, get, isEmpty, isNil, isNumber, isString, valuesOfKey } from '@antv/util';\nimport { GROUP_ATTRS } from '../constant';\nimport { getScale } from '../dependents';\nimport { isFullCircle } from './coordinate';\nvar dateRegex = /^(?:(?!0000)[0-9]{4}([-/.]+)(?:(?:0?[1-9]|1[0-2])\\1(?:0?[1-9]|1[0-9]|2[0-8])|(?:0?[13-9]|1[0-2])\\1(?:29|30)|(?:0?[13578]|1[02])\\1(?:31))|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)([-/.]+)0?2\\2(?:29))(\\s+([01]|([01][0-9]|2[0-3])):([0-9]|[0-5][0-9]):([0-9]|[0-5][0-9]))?$/;\n/**\n * 获取字段对应数据的类型\n * @param field 数据字段名\n * @param data 数据源\n * @returns default type 返回对应的数据类型\n */\nfunction getDefaultType(value) {\n var type = 'linear';\n if (dateRegex.test(value)) {\n type = 'timeCat';\n } else if (isString(value)) {\n type = 'cat';\n }\n return type;\n}\n/**\n * using the scale type if user specified, otherwise infer the type\n */\nexport function inferScaleType(scale, scaleDef, attrType, geometryType) {\n if (scaleDef === void 0) {\n scaleDef = {};\n }\n if (scaleDef.type) return scaleDef.type;\n // identity scale 直接返回\n // geometry 类型有: edge,heatmap,interval,line,path,point,polygon,schema,voilin等;理论上,interval 下,可以用 linear scale 作为分组字段\n if (scale.type !== 'identity' && GROUP_ATTRS.includes(attrType) && ['interval'].includes(geometryType)) {\n return 'cat';\n }\n return scale.isCategory ? 'cat' : scale.type;\n}\n/**\n * @ignore\n * 为指定的 `field` 字段数据创建 scale\n * @param field 字段名\n * @param [data] 数据集,可为空\n * @param [scaleDef] 列定义,可为空\n * @returns scale 返回创建的 Scale 实例\n */\nexport function createScaleByField(field, data, scaleDef) {\n var validData = data || [];\n if (isNumber(field) || isNil(firstValue(validData, field)) && isEmpty(scaleDef)) {\n var Identity = getScale('identity');\n return new Identity({\n field: field.toString(),\n values: [field]\n });\n }\n var values = valuesOfKey(validData, field);\n // 如果已经定义过这个度量 (fix-later 单纯从数据中,推断 scale type 是不精确的)\n var type = get(scaleDef, 'type', getDefaultType(values[0]));\n var ScaleCtor = getScale(type);\n return new ScaleCtor(__assign({\n field: field,\n values: values\n }, scaleDef));\n}\n/**\n * @ignore\n * 同步 scale\n * @todo 是否可以通过 scale.update() 方法进行更新\n * @param scale 需要同步的 scale 实例\n * @param newScale 同步源 Scale\n */\nexport function syncScale(scale, newScale) {\n if (scale.type !== 'identity' && newScale.type !== 'identity') {\n var obj = {};\n for (var k in newScale) {\n if (Object.prototype.hasOwnProperty.call(newScale, k)) {\n obj[k] = newScale[k];\n }\n }\n scale.change(obj);\n }\n}\n/**\n * @ignore\n * get the scale name, if alias exist, return alias, or else field\n * @param scale\n * @returns the name of field\n */\nexport function getName(scale) {\n return scale.alias || scale.field;\n}\n/**\n * 根据 scale values 和 coordinate 获取分类默认 range\n * @param scale 需要获取的 scale 实例\n * @param coordinate coordinate 实例\n * @param theme theme\n */\nexport function getDefaultCategoryScaleRange(scale, coordinate, theme) {\n var values = scale.values;\n var count = values.length;\n var range;\n if (count === 1) {\n range = [0.5, 1]; // 只有一个分类时,防止计算出现 [0.5,0.5] 的状态\n } else {\n var widthRatio = 1;\n var offset = 0;\n if (isFullCircle(coordinate)) {\n if (!coordinate.isTransposed) {\n range = [0, 1 - 1 / count];\n } else {\n widthRatio = get(theme, 'widthRatio.multiplePie', 1 / 1.3);\n offset = 1 / count * widthRatio;\n range = [offset / 2, 1 - offset / 2];\n }\n } else {\n offset = 1 / count / 2; // 两边留下分类空间的一半\n range = [offset, 1 - offset]; // 坐标轴最前面和最后面留下空白防止绘制柱状图时\n }\n }\n\n return range;\n}\n/**\n * @function y轴scale的max\n * @param {yScale}\n */\nexport function getMaxScale(scale) {\n // 过滤values[]中 NaN/undefined/null 等\n var values = scale.values.filter(function (item) {\n return !isNil(item) && !isNaN(item);\n });\n return Math.max.apply(Math, __spreadArray(__spreadArray([], __read(values), false), [isNil(scale.max) ? -Infinity : scale.max], false));\n}","import { deepMix, get, isBoolean } from '@antv/util';\nimport { DIRECTION } from '../constant';\nimport { getName } from './scale';\nimport { vec2 } from '@antv/matrix-util';\n/**\n * @ignore\n * get axis relative region ( 0 ~ 1) by direction when coordinate is rect\n * @param direction\n * @returns axis coordinate region\n */\nexport function getLineAxisRelativeRegion(direction) {\n var start;\n var end;\n switch (direction) {\n case DIRECTION.TOP:\n start = {\n x: 0,\n y: 1\n };\n end = {\n x: 1,\n y: 1\n };\n break;\n case DIRECTION.RIGHT:\n start = {\n x: 1,\n y: 0\n };\n end = {\n x: 1,\n y: 1\n };\n break;\n case DIRECTION.BOTTOM:\n start = {\n x: 0,\n y: 0\n };\n end = {\n x: 1,\n y: 0\n };\n break;\n case DIRECTION.LEFT:\n start = {\n x: 0,\n y: 0\n };\n end = {\n x: 0,\n y: 1\n };\n break;\n default:\n start = end = {\n x: 0,\n y: 0\n };\n }\n return {\n start: start,\n end: end\n };\n}\n/**\n * @ignore\n * get axis relative region ( 0 ~ 1) by direction when coordinate is polar\n * @param coordinate\n * @returns axis coordinate region\n */\nexport function getCircleAxisRelativeRegion(coordinate) {\n var start;\n var end;\n if (coordinate.isTransposed) {\n start = {\n x: 0,\n y: 0\n };\n end = {\n x: 1,\n y: 0\n };\n } else {\n start = {\n x: 0,\n y: 0\n };\n end = {\n x: 0,\n y: 1\n };\n }\n return {\n start: start,\n end: end\n };\n}\n/**\n * @ignore\n * get the axis region from coordinate\n * @param coordinate\n * @param direction\n * @returns the axis region (start point, end point)\n */\nexport function getAxisRegion(coordinate, direction) {\n var region = {\n start: {\n x: 0,\n y: 0\n },\n end: {\n x: 0,\n y: 0\n }\n };\n if (coordinate.isRect) {\n region = getLineAxisRelativeRegion(direction);\n } else if (coordinate.isPolar) {\n region = getCircleAxisRelativeRegion(coordinate);\n }\n var start = region.start,\n end = region.end;\n return {\n start: coordinate.convert(start),\n end: coordinate.convert(end)\n };\n}\n/**\n * @ignore\n * get axis factor\n * @param coordinate\n * @param direction\n * @returns factor\n */\nexport function getAxisFactor(coordinate, direction) {\n // rect coordinate, by direction\n if (coordinate.isRect) {\n return coordinate.isTransposed ? [DIRECTION.RIGHT, DIRECTION.BOTTOM].includes(direction) ? 1 : -1 : [DIRECTION.BOTTOM, DIRECTION.RIGHT].includes(direction) ? -1 : 1;\n }\n // polar y axis, by angle\n if (coordinate.isPolar) {\n var startAngle = coordinate.x.start;\n return startAngle < 0 ? -1 : 1;\n }\n return 1;\n}\n/**\n * @ignore\n * whether the axis isVertical\n * @param region\n * @returns isVertical\n */\nexport function isVertical(region) {\n var start = region.start,\n end = region.end;\n return start.x === end.x;\n}\n/**\n * @ignore\n * get factor by region (real position)\n * @param region\n * @param center\n * @returns factor\n */\nexport function getAxisFactorByRegion(region, center) {\n var start = region.start,\n end = region.end;\n var isAxisVertical = isVertical(region);\n // 垂直\n if (isAxisVertical) {\n // 左方,从下到上、右方,从上到下\n if ((start.y - end.y) * (center.x - start.x) > 0) {\n return 1;\n } else {\n return -1;\n }\n } else {\n // 下方,从左到右、上方,从右到做\n if ((end.x - start.x) * (start.y - center.y) > 0) {\n return -1;\n } else {\n return 1;\n }\n }\n}\n/**\n * @ignore\n * get the axis cfg from theme, will mix the common cfg of legend theme\n *\n * @param theme view theme object\n * @param direction axis direction\n * @returns axis theme cfg\n */\nexport function getAxisThemeCfg(theme, direction) {\n var axisTheme = get(theme, ['components', 'axis'], {});\n return deepMix({}, get(axisTheme, ['common'], {}), deepMix({}, get(axisTheme, [direction], {})));\n}\n/**\n * get the options of axis title,mix the cfg from theme, avoid common themeCfg not work\n * @param theme\n * @param direction\n * @param axisOptions\n * @returns axis title options\n */\nexport function getAxisTitleOptions(theme, direction, axisOptions) {\n var axisTheme = get(theme, ['components', 'axis'], {});\n return deepMix({}, get(axisTheme, ['common', 'title'], {}), deepMix({}, get(axisTheme, [direction, 'title'], {})), axisOptions);\n}\n/**\n * @ignore\n * get circle axis center and radius\n * @param coordinate\n */\nexport function getCircleAxisCenterRadius(coordinate) {\n // @ts-ignore\n var x = coordinate.x,\n y = coordinate.y,\n center = coordinate.circleCenter;\n var isReflectY = y.start > y.end;\n var start = coordinate.isTransposed ? coordinate.convert({\n x: isReflectY ? 0 : 1,\n y: 0\n }) : coordinate.convert({\n x: 0,\n y: isReflectY ? 0 : 1\n });\n var startVector = [start.x - center.x, start.y - center.y];\n var normalVector = [1, 0];\n var startAngle = start.y > center.y ? vec2.angle(startVector, normalVector) : vec2.angle(startVector, normalVector) * -1;\n var endAngle = startAngle + (x.end - x.start);\n var radius = Math.sqrt(Math.pow(start.x - center.x, 2) + Math.pow(start.y - center.y, 2));\n return {\n center: center,\n radius: radius,\n startAngle: startAngle,\n endAngle: endAngle\n };\n}\n/**\n * @ignore\n * 从配置中获取单个字段的 axis 配置\n * @param axes\n * @param field\n * @returns the axis option of field\n */\nexport function getAxisOption(axes, field) {\n if (isBoolean(axes)) {\n return axes === false ? false : {};\n }\n return get(axes, [field]);\n}\n/**\n * @ignore\n * 如果配置了 position,则使用配置\n * @param axisOption\n * @param def\n */\nexport function getAxisDirection(axisOption, def) {\n return get(axisOption, 'position', def);\n}\n/**\n * 获取 axis 的 title 文本\n * @param scale\n * @param axisOption\n */\nexport function getAxisTitleText(scale, axisOption) {\n return get(axisOption, ['title', 'text'], getName(scale));\n}","import { __read } from \"tslib\";\nimport { deepMix, each, every, get, isNil, isNumber } from '@antv/util';\nimport { LAYER } from '../constant';\nimport { getAxisOption } from '../util/axis';\n/**\n * facet 基类\n * - 定义生命周期,方便自定义 facet\n * - 提供基础的生命流程方法\n *\n * 生命周期:\n *\n * 初始化 init\n * 1. 初始化容器\n * 2. 数据分面,生成分面布局信息\n *\n * 渲染阶段 render\n * 1. view 创建\n * 2. title\n * 3. axis\n *\n * 清除阶段 clear\n * 1. 清除 view\n *\n * 销毁阶段 destroy\n * 1. clear\n * 2. 清除事件\n * 3. 清除 group\n */\nvar Facet = /** @class */function () {\n function Facet(view, cfg) {\n /** 是否销毁 */\n this.destroyed = false;\n /** 分面之后的所有分面数据结构 */\n this.facets = [];\n this.view = view;\n this.cfg = deepMix({}, this.getDefaultCfg(), cfg);\n }\n /**\n * 初始化过程\n */\n Facet.prototype.init = function () {\n // 初始化容器\n if (!this.container) {\n this.container = this.createContainer();\n }\n // 生成分面布局信息\n var data = this.view.getData();\n this.facets = this.generateFacets(data);\n };\n /**\n * 渲染分面,由上层 view 调用。包括:\n * - 分面 view\n * - 轴\n * - title\n *\n * 子类可以复写,添加一些其他组件,比如滚动条等\n */\n Facet.prototype.render = function () {\n this.renderViews();\n };\n /**\n * 更新 facet\n */\n Facet.prototype.update = function () {\n // 其实不用做任何事情,因为 facet 最终生成的 View 和 Geometry 都在父 view 的更新中处理了\n };\n /**\n * 清空,clear 之后如果还需要使用,需要重新调用 init 初始化过程\n * 一般在数据有变更的时候调用,重新进行数据的分面逻辑\n */\n Facet.prototype.clear = function () {\n this.clearFacetViews();\n };\n /**\n * 销毁\n */\n Facet.prototype.destroy = function () {\n this.clear();\n if (this.container) {\n this.container.remove(true);\n this.container = undefined;\n }\n this.destroyed = true;\n this.view = undefined;\n this.facets = [];\n };\n /**\n * 根据 facet 生成 view,可以给上层自定义使用\n * @param facet\n */\n Facet.prototype.facetToView = function (facet) {\n var region = facet.region,\n data = facet.data,\n _a = facet.padding,\n padding = _a === void 0 ? this.cfg.padding : _a;\n var view = this.view.createView({\n region: region,\n padding: padding\n });\n // 设置分面的数据\n view.data(data || []);\n facet.view = view;\n // 前置钩子\n this.beforeEachView(view, facet);\n var eachView = this.cfg.eachView;\n if (eachView) {\n eachView(view, facet);\n }\n // 后置钩子\n this.afterEachView(view, facet);\n return view;\n };\n // 创建容器\n Facet.prototype.createContainer = function () {\n var foregroundGroup = this.view.getLayer(LAYER.FORE);\n return foregroundGroup.addGroup();\n };\n /**\n * 初始化 view\n */\n Facet.prototype.renderViews = function () {\n this.createFacetViews();\n };\n /**\n * 创建 分面 view\n */\n Facet.prototype.createFacetViews = function () {\n var _this = this;\n // 使用分面数据 创建分面 view\n return this.facets.map(function (facet) {\n return _this.facetToView(facet);\n });\n };\n /**\n * 从 view 中清除 facetView\n */\n Facet.prototype.clearFacetViews = function () {\n var _this = this;\n // 从 view 中移除分面 view\n each(this.facets, function (facet) {\n if (facet.view) {\n _this.view.removeView(facet.view);\n facet.view = undefined;\n }\n });\n };\n /**\n * 解析 spacing\n */\n Facet.prototype.parseSpacing = function () {\n /**\n * @example\n *\n * // 仅使用百分比或像素值\n * // 横向间隔为 10%,纵向间隔为 10%\n * ['10%', '10%']\n * // 横向间隔为 10px,纵向间隔为 10px\n * [10, 10]\n *\n * // 同时使用百分比和像素值\n * ['10%', 10]\n * // 横向间隔为 10%,纵向间隔为 10px\n */\n var _a = this.view.viewBBox,\n width = _a.width,\n height = _a.height;\n var spacing = this.cfg.spacing;\n return spacing.map(function (s, idx) {\n if (isNumber(s)) return s / (idx === 0 ? width : height);else return parseFloat(s) / 100;\n });\n };\n // 其他一些提供给子类使用的方法\n /**\n * 获取这个字段对应的所有值,数组\n * @protected\n * @param data 数据\n * @param field 字段名\n * @return 字段对应的值\n */\n Facet.prototype.getFieldValues = function (data, field) {\n var rst = [];\n var cache = {};\n // 去重、去除 Nil 值\n each(data, function (d) {\n var value = d[field];\n if (!isNil(value) && !cache[value]) {\n rst.push(value);\n cache[value] = true;\n }\n });\n return rst;\n };\n /**\n * 获得每个分面的 region,平分区域\n * @param rows row 总数\n * @param cols col 总数\n * @param xIndex x 方向 index\n * @param yIndex y 方向 index\n */\n Facet.prototype.getRegion = function (rows, cols, xIndex, yIndex) {\n var _a = __read(this.parseSpacing(), 2),\n xSpacing = _a[0],\n ySpacing = _a[1];\n // 每两个分面区域横向间隔xSPacing, 纵向间隔ySpacing\n // 每个分面区域的横纵占比\n /**\n * ratio * num + spacing * (num - 1) = 1\n * => ratio = (1 - (spacing * (num - 1))) / num\n * = (1 + spacing) / num - spacing\n *\n * num 对应 cols/rows\n * spacing 对应 xSpacing/ySpacing\n */\n var xRatio = (1 + xSpacing) / (cols === 0 ? 1 : cols) - xSpacing;\n var yRatio = (1 + ySpacing) / (rows === 0 ? 1 : rows) - ySpacing;\n // 得到第 index 个分面区域百分比位置\n var start = {\n x: (xRatio + xSpacing) * xIndex,\n y: (yRatio + ySpacing) * yIndex\n };\n var end = {\n x: start.x + xRatio,\n y: start.y + yRatio\n };\n return {\n start: start,\n end: end\n };\n };\n Facet.prototype.getDefaultCfg = function () {\n return {\n eachView: undefined,\n showTitle: true,\n spacing: [0, 0],\n padding: 10,\n fields: []\n };\n };\n /**\n * 默认的 title 样式,因为有的分面是 title,有的分面配置是 columnTitle、rowTitle\n */\n Facet.prototype.getDefaultTitleCfg = function () {\n // @ts-ignore\n var fontFamily = this.view.getTheme().fontFamily;\n return {\n style: {\n fontSize: 14,\n fill: '#666',\n fontFamily: fontFamily\n }\n };\n };\n /**\n * 处理 axis 的默认配置\n * @param view\n * @param facet\n */\n Facet.prototype.processAxis = function (view, facet) {\n var options = view.getOptions();\n var coordinateOption = options.coordinate;\n var geometries = view.geometries;\n var coordinateType = get(coordinateOption, 'type', 'rect');\n if (coordinateType === 'rect' && geometries.length) {\n if (isNil(options.axes)) {\n // @ts-ignore\n options.axes = {};\n }\n var axes = options.axes;\n var _a = __read(geometries[0].getXYFields(), 2),\n x = _a[0],\n y = _a[1];\n var xOption = getAxisOption(axes, x);\n var yOption = getAxisOption(axes, y);\n if (xOption !== false) {\n options.axes[x] = this.getXAxisOption(x, axes, xOption, facet);\n }\n if (yOption !== false) {\n options.axes[y] = this.getYAxisOption(y, axes, yOption, facet);\n }\n }\n };\n /**\n * 获取分面数据\n * @param conditions\n */\n Facet.prototype.getFacetDataFilter = function (conditions) {\n return function (datum) {\n // 过滤出全部满足条件的数据\n return every(conditions, function (condition) {\n var field = condition.field,\n value = condition.value;\n if (!isNil(value) && field) {\n return datum[field] === value;\n }\n return true;\n });\n };\n };\n return Facet;\n}();\nexport { Facet };","import { lowerCase } from '@antv/util';\nexport { Facet } from './facet';\n/**\n * 所有的 Facet 类\n */\nvar Facets = {};\n/**\n * 根据 type 获取 facet 类\n * @param type 分面类型\n */\nexport var getFacet = function getFacet(type) {\n return Facets[lowerCase(type)];\n};\n/**\n * 注册一个 Facet 类\n * @param type 分面类型\n * @param ctor 分面类\n */\nexport var registerFacet = function registerFacet(type, ctor) {\n Facets[lowerCase(type)] = ctor;\n};","import { assign } from '@antv/util';\n/**\n * Action 的基类\n */\nvar Action = /** @class */function () {\n function Action(context, cfg) {\n this.context = context;\n this.cfg = cfg;\n context.addAction(this);\n }\n /**\n * 设置配置项传入的值\n * @param cfg\n */\n Action.prototype.applyCfg = function (cfg) {\n assign(this, cfg);\n };\n /**\n * Inits action,提供给子类用于继承\n */\n Action.prototype.init = function () {\n this.applyCfg(this.cfg);\n };\n /**\n * Destroys action\n */\n Action.prototype.destroy = function () {\n // 移除 action\n this.context.removeAction(this);\n // 清空\n this.context = null;\n };\n return Action;\n}();\nexport default Action;","import { __extends } from \"tslib\";\nimport Action from './base';\n/** 回调函数构建的 Action */\nvar CallbackAction = /** @class */function (_super) {\n __extends(CallbackAction, _super);\n function CallbackAction() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * 执行\n */\n CallbackAction.prototype.execute = function () {\n if (this.callback) {\n this.callback(this.context);\n }\n };\n /**\n * 销毁\n */\n CallbackAction.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.callback = null;\n };\n return CallbackAction;\n}(Action);\nexport default CallbackAction;","import CallbackAction from './callback';\nimport { get } from '@antv/util';\n// Action 类的缓存\nvar ActionCache = {};\n/**\n * 根据名称获取 Action 实例\n * @param actionName - action 的名称\n * @param context 上下文\n * @returns Action 实例\n */\nexport function createAction(actionName, context) {\n var actionOption = ActionCache[actionName];\n var action = null;\n if (actionOption) {\n var ActionClass = actionOption.ActionClass,\n cfg = actionOption.cfg;\n action = new ActionClass(context, cfg);\n action.name = actionName;\n action.init();\n }\n return action;\n}\n/**\n * 根据 action 的 name 获取定义的类\n * @param actionName action 的 name\n */\nexport function getActionClass(actionName) {\n var actionOption = ActionCache[actionName];\n return get(actionOption, 'ActionClass');\n}\n/**\n * 注册 Action\n * @param actionName - action 的名称\n * @param ActionClass - 继承自 action 的类\n */\nexport function registerAction(actionName, ActionClass, cfg) {\n ActionCache[actionName] = {\n ActionClass: ActionClass,\n cfg: cfg\n };\n}\n/**\n * 取消注册 Action\n * @param actionName action 名称\n */\nexport function unregisterAction(actionName) {\n delete ActionCache[actionName];\n}\n/**\n * 根据回调函数获取 Action 实例\n * @param callback - action 的回调函数\n * @param context 上下文\n * @returns Action 实例\n */\nexport function createCallbackAction(callback, context) {\n var action = new CallbackAction(context);\n action.callback = callback;\n action.name = 'callback';\n return action;\n}","import { __read } from \"tslib\";\nimport { vec2 } from '@antv/matrix-util';\nimport { each } from '@antv/util';\nimport { getDistanceToCenter } from '../../../util/coordinate';\nfunction _points2path(points, isInCircle) {\n var path = [];\n if (points.length) {\n path.push(['M', points[0].x, points[0].y]);\n for (var i = 1, length_1 = points.length; i < length_1; i += 1) {\n var item = points[i];\n path.push(['L', item.x, item.y]);\n }\n if (isInCircle) {\n path.push(['Z']);\n }\n }\n return path;\n}\nfunction _convertArr(arr, coord) {\n var tmp = [arr[0]];\n for (var i = 1, len = arr.length; i < len; i = i + 2) {\n var point = coord.convert({\n x: arr[i],\n y: arr[i + 1]\n });\n tmp.push(point.x, point.y);\n }\n return tmp;\n}\nfunction _convertArcPath(path, coord) {\n var isTransposed = coord.isTransposed;\n var r = path[1];\n var x = path[6];\n var y = path[7];\n var point = coord.convert({\n x: x,\n y: y\n });\n var direction = isTransposed ? 0 : 1;\n return ['A', r, r, 0, 0, direction, point.x, point.y];\n}\nfunction _convertPolarPath(pre, cur, coord) {\n var isTransposed = coord.isTransposed,\n startAngle = coord.startAngle,\n endAngle = coord.endAngle;\n var prePoint = pre[0].toLowerCase() === 'a' ? {\n x: pre[6],\n y: pre[7]\n } : {\n x: pre[1],\n y: pre[2]\n };\n var curPoint = {\n x: cur[1],\n y: cur[2]\n };\n var rst = [];\n var xDim = isTransposed ? 'y' : 'x';\n var angleRange = Math.abs(curPoint[xDim] - prePoint[xDim]) * (endAngle - startAngle);\n var direction = curPoint[xDim] >= prePoint[xDim] ? 1 : 0; // 圆弧的方向\n var flag = angleRange > Math.PI ? 1 : 0; // 大弧还是小弧标志位\n var convertPoint = coord.convert(curPoint);\n var r = getDistanceToCenter(coord, convertPoint);\n if (r >= 0.5) {\n // 小于1像素的圆在图像上无法识别\n if (angleRange === Math.PI * 2) {\n var middlePoint = {\n x: (curPoint.x + prePoint.x) / 2,\n y: (curPoint.y + prePoint.y) / 2\n };\n var middleConvertPoint = coord.convert(middlePoint);\n rst.push(['A', r, r, 0, flag, direction, middleConvertPoint.x, middleConvertPoint.y]);\n rst.push(['A', r, r, 0, flag, direction, convertPoint.x, convertPoint.y]);\n } else {\n rst.push(['A', r, r, 0, flag, direction, convertPoint.x, convertPoint.y]);\n }\n }\n return rst;\n}\n// 当存在整体的圆时,去除圆前面和后面的线,防止出现直线穿过整个圆的情形\nfunction _filterFullCirleLine(path) {\n each(path, function (subPath, index) {\n var cur = subPath;\n if (cur[0].toLowerCase() === 'a') {\n var pre = path[index - 1];\n var next = path[index + 1];\n if (next && next[0].toLowerCase() === 'a') {\n if (pre && pre[0].toLowerCase() === 'l') {\n pre[0] = 'M';\n }\n } else if (pre && pre[0].toLowerCase() === 'a') {\n if (next && next[0].toLowerCase() === 'l') {\n next[0] = 'M';\n }\n }\n }\n });\n}\n/**\n * @ignore\n * 计算光滑的贝塞尔曲线\n */\nexport var smoothBezier = function smoothBezier(points, smooth, isLoop, constraint) {\n var _a;\n var cps = [];\n var hasConstraint = !!constraint;\n var prevPoint;\n var nextPoint;\n var min;\n var max;\n var nextCp0;\n var cp1;\n var cp0;\n if (hasConstraint) {\n _a = __read(constraint, 2), min = _a[0], max = _a[1];\n for (var i = 0, l = points.length; i < l; i++) {\n var point = points[i];\n min = vec2.min([0, 0], min, point);\n max = vec2.max([0, 0], max, point);\n }\n }\n for (var i = 0, len = points.length; i < len; i++) {\n var point = points[i];\n if (i === 0 && !isLoop) {\n cp0 = point;\n } else if (i === len - 1 && !isLoop) {\n cp1 = point;\n cps.push(cp0);\n cps.push(cp1);\n } else {\n prevPoint = points[isLoop ? i ? i - 1 : len - 1 : i - 1];\n nextPoint = points[isLoop ? (i + 1) % len : i + 1];\n var v = [0, 0];\n v = vec2.sub(v, nextPoint, prevPoint);\n v = vec2.scale(v, v, smooth);\n var d0 = vec2.distance(point, prevPoint);\n var d1 = vec2.distance(point, nextPoint);\n var sum = d0 + d1;\n if (sum !== 0) {\n d0 /= sum;\n d1 /= sum;\n }\n var v1 = vec2.scale([0, 0], v, -d0);\n var v2 = vec2.scale([0, 0], v, d1);\n cp1 = vec2.add([0, 0], point, v1);\n nextCp0 = vec2.add([0, 0], point, v2);\n // 下一个控制点必须在这个点和下一个点之间\n nextCp0 = vec2.min([0, 0], nextCp0, vec2.max([0, 0], nextPoint, point));\n nextCp0 = vec2.max([0, 0], nextCp0, vec2.min([0, 0], nextPoint, point));\n // 重新计算 cp1 的值\n v1 = vec2.sub([0, 0], nextCp0, point);\n v1 = vec2.scale([0, 0], v1, -d0 / d1);\n cp1 = vec2.add([0, 0], point, v1);\n // 上一个控制点必须要在上一个点和这一个点之间\n cp1 = vec2.min([0, 0], cp1, vec2.max([0, 0], prevPoint, point));\n cp1 = vec2.max([0, 0], cp1, vec2.min([0, 0], prevPoint, point));\n // 重新计算 nextCp0 的值\n v2 = vec2.sub([0, 0], point, cp1);\n v2 = vec2.scale([0, 0], v2, d1 / d0);\n nextCp0 = vec2.add([0, 0], point, v2);\n if (hasConstraint) {\n cp1 = vec2.max([0, 0], cp1, min);\n cp1 = vec2.min([0, 0], cp1, max);\n nextCp0 = vec2.max([0, 0], nextCp0, min);\n nextCp0 = vec2.min([0, 0], nextCp0, max);\n }\n cps.push(cp0);\n cps.push(cp1);\n cp0 = nextCp0;\n }\n }\n if (isLoop) {\n cps.push(cps.shift());\n }\n return cps;\n};\n/**\n * @ignore\n * 贝塞尔曲线\n */\nexport function catmullRom2bezier(crp, z, constraint) {\n var isLoop = !!z;\n var pointList = [];\n for (var i = 0, l = crp.length; i < l; i += 2) {\n pointList.push([crp[i], crp[i + 1]]);\n }\n var controlPointList = smoothBezier(pointList, 0.4, isLoop, constraint);\n var len = pointList.length;\n var d1 = [];\n var cp1;\n var cp2;\n var p;\n for (var i = 0; i < len - 1; i++) {\n cp1 = controlPointList[i * 2];\n cp2 = controlPointList[i * 2 + 1];\n p = pointList[i + 1];\n d1.push(['C', cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1]]);\n }\n if (isLoop) {\n cp1 = controlPointList[len];\n cp2 = controlPointList[len + 1];\n p = pointList[0];\n d1.push(['C', cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1]]);\n }\n return d1;\n}\n/**\n * @ignore\n * 将点连接成路径 path\n */\nexport function getLinePath(points, isInCircle) {\n return _points2path(points, isInCircle);\n}\n/**\n * @ignore\n * 根据关键点获取限定了范围的平滑线\n */\nexport function getSplinePath(points, isInCircle, constaint) {\n var data = [];\n var first = points[0];\n var prePoint = null;\n if (points.length <= 2) {\n // 两点以内直接绘制成路径\n return getLinePath(points, isInCircle);\n }\n for (var i = 0, len = points.length; i < len; i++) {\n var point = points[i];\n if (!prePoint || !(prePoint.x === point.x && prePoint.y === point.y)) {\n data.push(point.x);\n data.push(point.y);\n prePoint = point;\n }\n }\n var constraint = constaint || [\n // 范围\n [0, 0], [1, 1]];\n var splinePath = catmullRom2bezier(data, isInCircle, constraint);\n splinePath.unshift(['M', first.x, first.y]);\n return splinePath;\n}\n/**\n * @ignore\n * 将归一化后的路径数据转换成坐标\n */\nexport function convertNormalPath(coord, path) {\n var tmp = [];\n each(path, function (subPath) {\n var action = subPath[0];\n switch (action.toLowerCase()) {\n case 'm':\n case 'l':\n case 'c':\n tmp.push(_convertArr(subPath, coord));\n break;\n case 'a':\n tmp.push(_convertArcPath(subPath, coord));\n break;\n case 'z':\n default:\n tmp.push(subPath);\n break;\n }\n });\n return tmp;\n}\n/**\n * @ignore\n * 将路径转换为极坐标下的真实路径\n */\nexport function convertPolarPath(coord, path) {\n var tmp = [];\n var pre;\n var cur;\n var transposed;\n var equals;\n each(path, function (subPath, index) {\n var action = subPath[0];\n switch (action.toLowerCase()) {\n case 'm':\n case 'c':\n case 'q':\n tmp.push(_convertArr(subPath, coord));\n break;\n case 'l':\n pre = path[index - 1];\n cur = subPath;\n transposed = coord.isTransposed;\n // 是否半径相同,转换成圆弧\n equals = transposed ? pre[pre.length - 2] === cur[1] : pre[pre.length - 1] === cur[2];\n if (equals) {\n tmp = tmp.concat(_convertPolarPath(pre, cur, coord));\n } else {\n // y 不相等,所以直接转换\n tmp.push(_convertArr(subPath, coord));\n }\n break;\n case 'a':\n tmp.push(_convertArcPath(subPath, coord));\n break;\n case 'z':\n default:\n tmp.push(subPath);\n break;\n }\n });\n _filterFullCirleLine(tmp); // 过滤多余的直线\n return tmp;\n}","import \"core-js/modules/es.array.flat-map.js\";\nimport \"core-js/modules/es.array.unscopables.flat-map.js\";\nimport { each, isArray } from '@antv/util';\nimport { catmullRom2bezier, getLinePath } from '../../geometry/shape/util/path';\nimport { toPoints } from '../../util/bbox';\nimport { isPolygonsIntersect } from '@antv/path-util';\nfunction getMaskBBox(context, tolerance) {\n var event = context.event;\n var maskShape = event.target;\n return getMaskBBoxByShape(maskShape, tolerance);\n}\n/**\n * 如果 mask BBox 过小则不返回\n */\nfunction isValidMaskBBox(maskShape, tolerance) {\n var maskBBox = maskShape.getCanvasBBox();\n var width = maskBBox.width,\n height = maskBBox.height;\n return width > 0 && height > 0 && (width >= tolerance || height >= tolerance);\n}\n/**\n * 通过 maskShape 获取 mask 的 canvasBBox\n * @param maskShape\n * @param tolerance\n * @returns\n */\nfunction getMaskBBoxByShape(maskShape, tolerance) {\n var maskBBox = maskShape.getCanvasBBox();\n return isValidMaskBBox(maskShape, tolerance) ? maskBBox : null;\n}\n/**\n * 获取 multiple 模式下 mask 的 canvasBBox 数组\n * @param context 上下文\n * @param tolerance box 宽高小于则不返回\n * @returns\n */\nfunction getMultiMaskBBoxList(context, tolerance) {\n var maskShapes = context.event.maskShapes;\n return maskShapes.map(function (maskShape) {\n return getMaskBBoxByShape(maskShape, tolerance);\n }).filter(function (bBox) {\n return !!bBox;\n });\n}\nfunction getMaskPath(context, tolerance) {\n var event = context.event;\n var maskShape = event.target;\n return getMaskPathByMaskShape(maskShape, tolerance);\n}\n/**\n * 通过 maskShape 获取 mask path\n * @param maskShape\n * @param tolerance box 宽高小于则不返回\n * @returns\n */\nfunction getMaskPathByMaskShape(maskShape, tolerance) {\n return isValidMaskBBox(maskShape, tolerance) ? maskShape.attr('path') : null;\n}\n/**\n * 获取 multiple 模式下 mask path 数组\n * @param context 上下文\n * @param tolerance box 宽高小于则不返回\n * @returns\n */\nfunction getMultiMaskPathList(context, tolerance) {\n var maskShapes = context.event.maskShapes;\n return maskShapes.map(function (maskShape) {\n return getMaskPathByMaskShape(maskShape, tolerance);\n });\n}\n/**\n * 获取当前事件相关的图表元素\n * @param context 交互的上下文\n * @ignore\n */\nexport function getCurrentElement(context) {\n var event = context.event;\n var element;\n var target = event.target;\n if (target) {\n element = target.get('element');\n }\n return element;\n}\n/**\n * 获取委托对象\n * @param context 上下文\n * @ignore\n */\nexport function getDelegationObject(context) {\n var event = context.event;\n var target = event.target;\n var delegateObject;\n if (target) {\n delegateObject = target.get('delegateObject');\n }\n return delegateObject;\n}\nexport function isElementChange(context) {\n var event = context.event.gEvent;\n // 在同一个 element 内部移动,label 和 shape 之间\n if (event && event.fromShape && event.toShape && event.fromShape.get('element') === event.toShape.get('element')) {\n return false;\n }\n return true;\n}\n/**\n * 是否是列表组件\n * @param delegateObject 委托对象\n * @ignore\n */\nexport function isList(delegateObject) {\n return delegateObject && delegateObject.component && delegateObject.component.isList();\n}\n/**\n * 是否是滑块组件\n * @param delegateObject 委托对象\n * @ignore\n */\nexport function isSlider(delegateObject) {\n return delegateObject && delegateObject.component && delegateObject.component.isSlider();\n}\n/**\n * 是否由 mask 触发\n * @param context 上下文\n * @ignore\n */\nexport function isMask(context) {\n var event = context.event;\n var target = event.target;\n return target && (target === null || target === void 0 ? void 0 : target.get('name')) === 'mask' || isMultipleMask(context);\n}\n/**\n * 是否由 multiple mask 触发\n * @param context\n * @returns\n */\nexport function isMultipleMask(context) {\n var _a;\n return ((_a = context.event.target) === null || _a === void 0 ? void 0 : _a.get('name')) === 'multi-mask';\n}\n/**\n * 获取被遮挡的 elements\n * @param context 上下文\n * @ignore\n */\nexport function getMaskedElements(context, tolerance) {\n var target = context.event.target;\n // multiple 模式下\n if (isMultipleMask(context)) {\n return getMultiMaskedElements(context, tolerance);\n }\n // 正常模式下\n if (target.get('type') === 'path') {\n var maskPath = getMaskPath(context, tolerance);\n if (!maskPath) {\n return;\n }\n return getElementsByPath(context.view, maskPath);\n }\n var maskBBox = getMaskBBox(context, tolerance);\n // 如果 bbox 过小则不返回\n if (!maskBBox) {\n return null;\n }\n return getIntersectElements(context.view, maskBBox);\n}\n/**\n * 获取 multiple 模式下被 mask 遮挡的 elements\n * @param context 上下文\n * @returns\n */\nfunction getMultiMaskedElements(context, tolerance) {\n var target = context.event.target;\n if (target.get('type') === 'path') {\n var maskPathList = getMultiMaskPathList(context, tolerance);\n if (maskPathList.length > 0) {\n return maskPathList.flatMap(function (maskPath) {\n return getElementsByPath(context.view, maskPath);\n });\n }\n return null;\n }\n var maskBBoxList = getMultiMaskBBoxList(context, tolerance);\n if (maskBBoxList.length > 0) {\n return maskBBoxList.flatMap(function (maskBBox) {\n return getIntersectElements(context.view, maskBBox);\n });\n }\n return null;\n}\n/**\n * @ignore\n */\nexport function getSiblingMaskElements(context, sibling, tolerance) {\n // multiple 模式下\n if (isMultipleMask(context)) {\n return getSiblingMultiMaskedElements(context, sibling, tolerance);\n }\n // 正常模式下\n var maskBBox = getMaskBBox(context, tolerance);\n // 如果 bbox 过小则不返回\n if (!maskBBox) {\n return null;\n }\n return getSiblingMaskElementsByBBox(maskBBox, context, sibling);\n}\n/**\n * 通过 mashBBox 获取 sibling 模式下被 mask 遮挡的 elements\n * @param maskBBox\n * @param context 上下文\n * @param sibling sibling view\n * @returns\n */\nfunction getSiblingMaskElementsByBBox(maskBBox, context, sibling) {\n var view = context.view;\n var start = getSiblingPoint(view, sibling, {\n x: maskBBox.x,\n y: maskBBox.y\n });\n var end = getSiblingPoint(view, sibling, {\n x: maskBBox.maxX,\n y: maskBBox.maxY\n });\n var box = {\n minX: start.x,\n minY: start.y,\n maxX: end.x,\n maxY: end.y\n };\n return getIntersectElements(sibling, box);\n}\n/**\n * 获取 sibling 模式下被 multiple mask 遮挡的 elements\n * @param context 上下文\n * @param sibling sibling view\n * @param tolerance box 宽高小于则不返回\n * @returns\n */\nfunction getSiblingMultiMaskedElements(context, sibling, tolerance) {\n var maskBBoxList = getMultiMaskBBoxList(context, tolerance);\n if (maskBBoxList.length > 0) {\n return maskBBoxList.flatMap(function (maskBBox) {\n return getSiblingMaskElementsByBBox(maskBBox, context, sibling);\n });\n }\n return null;\n}\n/**\n * 获取所有的图表元素\n * @param view View/Chart\n * @ignore\n */\nexport function getElements(view) {\n var geometries = view.geometries;\n var rst = [];\n each(geometries, function (geom) {\n var elements = geom.elements;\n rst = rst.concat(elements);\n });\n if (view.views && view.views.length) {\n each(view.views, function (subView) {\n rst = rst.concat(getElements(subView));\n });\n }\n return rst;\n}\n/**\n * 获取所有的图表元素\n * @param view View/Chart\n * @param field 字段名\n * @param value 字段值\n * @ignore\n */\nexport function getElementsByField(view, field, value) {\n var elements = getElements(view);\n return elements.filter(function (el) {\n return getElementValue(el, field) === value;\n });\n}\n/**\n * 根据状态名获取图表元素\n * @param view View/Chart\n * @param stateName 状态名\n * @ignore\n */\nexport function getElementsByState(view, stateName) {\n var geometries = view.geometries;\n var rst = [];\n each(geometries, function (geom) {\n var elements = geom.getElementsBy(function (el) {\n return el.hasState(stateName);\n });\n rst = rst.concat(elements);\n });\n return rst;\n}\n/**\n * 获取图表元素对应字段的值\n * @param element 图表元素\n * @param field 字段名\n * @ignore\n */\nexport function getElementValue(element, field) {\n var model = element.getModel();\n var record = model.data;\n var value;\n if (isArray(record)) {\n value = record[0][field];\n } else {\n value = record[field];\n }\n return value;\n}\n/**\n * 两个包围盒是否相交\n * @param box1 包围盒1\n * @param box2 包围盒2\n * @ignore\n */\nexport function intersectRect(box1, box2) {\n return !(box2.minX > box1.maxX || box2.maxX < box1.minX || box2.minY > box1.maxY || box2.maxY < box1.minY);\n}\n/**\n * 获取包围盒内的图表元素\n * @param view View/Chart\n * @param box 包围盒\n * @ignore\n */\nexport function getIntersectElements(view, box) {\n var elements = getElements(view);\n var rst = [];\n each(elements, function (el) {\n var shape = el.shape;\n var shapeBBox = shape.getCanvasBBox();\n if (intersectRect(box, shapeBBox)) {\n rst.push(el);\n }\n });\n return rst;\n}\nfunction pathToPoints(path) {\n var points = [];\n each(path, function (seg) {\n var command = seg[0];\n if (command !== 'A') {\n for (var i = 1; i < seg.length; i = i + 2) {\n points.push([seg[i], seg[i + 1]]);\n }\n } else {\n var length_1 = seg.length;\n points.push([seg[length_1 - 2], seg[length_1 - 1]]);\n }\n });\n return points;\n}\n/**\n * 获取包围盒内的图表元素\n * @param view View/Chart\n * @param path 路径\n * @ignore\n */\nexport function getElementsByPath(view, path) {\n var elements = getElements(view);\n var points = pathToPoints(path);\n var rst = elements.filter(function (el) {\n var shape = el.shape;\n var shapePoints;\n if (shape.get('type') === 'path') {\n shapePoints = pathToPoints(shape.attr('path'));\n } else {\n var shapeBBox = shape.getCanvasBBox();\n shapePoints = toPoints(shapeBBox);\n }\n return isPolygonsIntersect(points, shapePoints);\n });\n return rst;\n}\n/**\n * 获取当前 View 的所有组件\n * @param view View/Chart\n * @ignore\n */\nexport function getComponents(view) {\n return view.getComponents().map(function (co) {\n return co.component;\n });\n}\n/** @ignore */\nexport function distance(p1, p2) {\n var dx = p2.x - p1.x;\n var dy = p2.y - p1.y;\n return Math.sqrt(dx * dx + dy * dy);\n}\n/** @ignore */\nexport function getSpline(points, z) {\n if (points.length <= 2) {\n return getLinePath(points, false);\n }\n var first = points[0];\n var arr = [];\n each(points, function (point) {\n arr.push(point.x);\n arr.push(point.y);\n });\n var path = catmullRom2bezier(arr, z, null);\n path.unshift(['M', first.x, first.y]);\n return path;\n}\n/**\n * 检测点是否在包围盒内\n * @param box 包围盒\n * @param point 点\n * @ignore\n */\nexport function isInBox(box, point) {\n return box.x <= point.x && box.maxX >= point.x && box.y <= point.y && box.maxY > point.y;\n}\n/**\n * 获取同 view 同一级的 views\n * @param view 当前 view\n * @returns 同一级的 views\n * @ignore\n */\nexport function getSilbings(view) {\n var parent = view.parent;\n var siblings = null;\n if (parent) {\n siblings = parent.views.filter(function (sub) {\n return sub !== view;\n });\n }\n return siblings;\n}\nfunction point2Normalize(view, point) {\n var coord = view.getCoordinate();\n return coord.invert(point);\n}\n/**\n * 将 view 上的一点转换成另一个 view 的点\n * @param view 当前的 view\n * @param sibling 同一层级的 view\n * @param point 指定点\n * @ignore\n */\nexport function getSiblingPoint(view, sibling, point) {\n var normalPoint = point2Normalize(view, point);\n return sibling.getCoordinate().convert(normalPoint);\n}\n/**\n * 是否在记录中,临时因为所有的 view 中的数据不是引用,而使用的方法\n * 不同 view 上对数据的引用不相等,导致无法直接用 includes\n * 假设 x, y 值相等时是同一条数据,这个假设不完全正确,而改成 isEqual 则成本太高\n * 后面改成同一个引用时可以修改回来\n * @param records\n * @param record\n * @param xFiled\n * @param yField\n * @returns\n * @ignore\n */\nexport function isInRecords(records, record, xFiled, yField) {\n var isIn = false;\n each(records, function (r) {\n if (r[xFiled] === record[xFiled] && r[yField] === record[yField]) {\n isIn = true;\n return false;\n }\n });\n return isIn;\n}\n// 级联获取 field 对应的 scale,如果 view 上没有,遍历子 view\nexport function getScaleByField(view, field) {\n var scale = view.getScaleByField(field);\n if (!scale && view.views) {\n each(view.views, function (subView) {\n scale = getScaleByField(subView, field);\n if (scale) {\n return false; // 终止循环\n }\n });\n }\n\n return scale;\n}","import { each, get } from '@antv/util';\nimport { getComponents, isInBox } from './action/util';\n/**\n * 交互的上下文\n */\nvar Context = /** @class */function () {\n function Context(view) {\n /** 当前所有的 Action */\n this.actions = [];\n /** 当前事件对象 */\n this.event = null;\n this.cacheMap = {};\n this.view = view;\n }\n /**\n * 缓存信息\n * @param params 缓存的字段\n * - 如果一个字段则获取缓存\n * - 两个字段则设置缓存\n */\n Context.prototype.cache = function () {\n var params = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n params[_i] = arguments[_i];\n }\n if (params.length === 1) {\n return this.cacheMap[params[0]];\n } else if (params.length === 2) {\n this.cacheMap[params[0]] = params[1];\n }\n };\n /**\n * 获取 Action\n * @param name Action 的名称\n */\n Context.prototype.getAction = function (name) {\n return this.actions.find(function (action) {\n return action.name === name;\n });\n };\n /**\n * 获取 Action\n * @param action Action 对象\n */\n Context.prototype.addAction = function (action) {\n this.actions.push(action);\n };\n /**\n * 移除 Action\n * @param action Action 对象\n */\n Context.prototype.removeAction = function (action) {\n var actions = this.actions;\n var index = this.actions.indexOf(action);\n if (index >= 0) {\n actions.splice(index, 1);\n }\n };\n /**\n * 获取当前的点\n */\n Context.prototype.getCurrentPoint = function () {\n var event = this.event;\n if (event) {\n if (event.target instanceof HTMLElement) {\n var canvas = this.view.getCanvas();\n var point = canvas.getPointByClient(event.clientX, event.clientY);\n return point;\n } else {\n return {\n x: event.x,\n y: event.y\n };\n }\n }\n return null;\n };\n /**\n * 获取当前 shape\n * @returns current shape\n */\n Context.prototype.getCurrentShape = function () {\n return get(this.event, ['gEvent', 'shape']);\n };\n /**\n * 当前的触发是否在 View 内\n */\n Context.prototype.isInPlot = function () {\n var point = this.getCurrentPoint();\n if (point) {\n return this.view.isPointInPlot(point);\n }\n return false;\n };\n /**\n * 是否在指定的图形内\n * @param name shape 的 name\n */\n Context.prototype.isInShape = function (name) {\n var shape = this.getCurrentShape(); // 不再考虑在 shape 的 parent 内的情况\n if (shape) {\n return shape.get('name') === name;\n }\n return false;\n };\n /**\n * 当前的触发是组件内部\n * @param name 组件名,可以为空\n */\n Context.prototype.isInComponent = function (name) {\n var components = getComponents(this.view);\n var point = this.getCurrentPoint();\n if (point) {\n return !!components.find(function (component) {\n var bbox = component.getBBox();\n if (name) {\n return component.get('name') === name && isInBox(bbox, point);\n } else {\n return isInBox(bbox, point);\n }\n });\n }\n return false;\n };\n /**\n * 销毁\n */\n Context.prototype.destroy = function () {\n // 先销毁 action 再清空,一边遍历,一边删除,所以数组需要更新引用\n each(this.actions.slice(), function (action) {\n action.destroy();\n });\n this.view = null;\n this.event = null;\n this.actions = null;\n this.cacheMap = null;\n };\n return Context;\n}();\nexport default Context;","/**\n * 交互的基类。\n */\nvar Interaction = /** @class */function () {\n function Interaction(view, cfg) {\n this.view = view;\n this.cfg = cfg;\n }\n /**\n * 初始化。\n */\n Interaction.prototype.init = function () {\n this.initEvents();\n };\n /**\n * 绑定事件\n */\n Interaction.prototype.initEvents = function () {};\n /**\n * 销毁事件\n */\n Interaction.prototype.clearEvents = function () {};\n /**\n * 销毁。\n */\n Interaction.prototype.destroy = function () {\n this.clearEvents();\n };\n return Interaction;\n}();\nexport default Interaction;","import { __extends } from \"tslib\";\nimport { each, isArray, isFunction, isString, debounce, throttle } from '@antv/util';\nimport { createAction, createCallbackAction } from './action/register';\nimport InteractionContext from './context';\nimport Interaction from './interaction';\n// 将字符串转换成 action\nexport function parseAction(actionStr, context, arg) {\n var arr = actionStr.split(':');\n var actionName = arr[0];\n // 如果已经初始化过 action ,则直接引用之前的 action\n var action = context.getAction(actionName) || createAction(actionName, context);\n if (!action) {\n throw new Error(\"There is no action named \".concat(actionName));\n }\n var methodName = arr[1];\n return {\n action: action,\n methodName: methodName,\n arg: arg\n };\n}\n// 执行 Action\nfunction executeAction(actionObject) {\n var action = actionObject.action,\n methodName = actionObject.methodName,\n arg = actionObject.arg;\n if (action[methodName]) {\n action[methodName](arg);\n } else {\n throw new Error(\"Action(\".concat(action.name, \") doesn't have a method called \").concat(methodName));\n }\n}\nvar STEP_NAMES = {\n START: 'start',\n SHOW_ENABLE: 'showEnable',\n END: 'end',\n ROLLBACK: 'rollback',\n PROCESSING: 'processing'\n};\n/**\n * 支持语法的交互类\n */\nvar GrammarInteraction = /** @class */function (_super) {\n __extends(GrammarInteraction, _super);\n function GrammarInteraction(view, steps) {\n var _this = _super.call(this, view, steps) || this;\n _this.callbackCaches = {};\n // 某个触发和反馈在本环节是否执行或\n _this.emitCaches = {};\n _this.steps = steps;\n return _this;\n }\n /**\n * 初始化\n */\n GrammarInteraction.prototype.init = function () {\n this.initContext();\n _super.prototype.init.call(this);\n };\n /**\n * 清理资源\n */\n GrammarInteraction.prototype.destroy = function () {\n _super.prototype.destroy.call(this); // 先清理事件\n this.steps = null;\n if (this.context) {\n this.context.destroy();\n this.context = null;\n }\n this.callbackCaches = null;\n this.view = null;\n };\n /**\n * 绑定事件\n */\n GrammarInteraction.prototype.initEvents = function () {\n var _this = this;\n each(this.steps, function (stepArr, stepName) {\n each(stepArr, function (step) {\n var callback = _this.getActionCallback(stepName, step);\n if (callback) {\n // 如果存在 callback,才绑定,有时候会出现无 callback 的情况\n _this.bindEvent(step.trigger, callback);\n }\n });\n });\n };\n /**\n * 清理绑定的事件\n */\n GrammarInteraction.prototype.clearEvents = function () {\n var _this = this;\n each(this.steps, function (stepArr, stepName) {\n each(stepArr, function (step) {\n var callback = _this.getActionCallback(stepName, step);\n if (callback) {\n _this.offEvent(step.trigger, callback);\n }\n });\n });\n };\n // 初始化上下文,并初始化 action\n GrammarInteraction.prototype.initContext = function () {\n var view = this.view;\n var context = new InteractionContext(view);\n this.context = context;\n var steps = this.steps;\n // 生成具体的 Action\n each(steps, function (subSteps) {\n each(subSteps, function (step) {\n if (isFunction(step.action)) {\n // 如果传入回调函数,则直接生成 CallbackAction\n step.actionObject = {\n action: createCallbackAction(step.action, context),\n methodName: 'execute'\n };\n } else if (isString(step.action)) {\n // 如果是字符串\n step.actionObject = parseAction(step.action, context, step.arg);\n } else if (isArray(step.action)) {\n // 如果是数组\n var actionArr = step.action;\n var argArr_1 = isArray(step.arg) ? step.arg : [step.arg];\n step.actionObject = [];\n each(actionArr, function (actionStr, idx) {\n step.actionObject.push(parseAction(actionStr, context, argArr_1[idx]));\n });\n }\n // 如果 action 既不是字符串,也不是函数,则不会生成 actionObject\n });\n });\n };\n // 是否允许指定阶段名称执行\n GrammarInteraction.prototype.isAllowStep = function (stepName) {\n var currentStepName = this.currentStepName;\n var steps = this.steps;\n // 相同的阶段允许同时执行\n if (currentStepName === stepName) {\n return true;\n }\n if (stepName === STEP_NAMES.SHOW_ENABLE) {\n // 示能在整个过程中都可用\n return true;\n }\n if (stepName === STEP_NAMES.PROCESSING) {\n // 只有当前是 start 时,才允许 processing\n return currentStepName === STEP_NAMES.START;\n }\n if (stepName === STEP_NAMES.START) {\n // 如果当前是 processing,则无法 start,必须等待 end 后才能执行\n return currentStepName !== STEP_NAMES.PROCESSING;\n }\n if (stepName === STEP_NAMES.END) {\n return currentStepName === STEP_NAMES.PROCESSING || currentStepName === STEP_NAMES.START;\n }\n if (stepName === STEP_NAMES.ROLLBACK) {\n if (steps[STEP_NAMES.END]) {\n // 如果定义了 end, 只有 end 时才允许回滚\n return currentStepName === STEP_NAMES.END;\n } else if (currentStepName === STEP_NAMES.START) {\n // 如果未定义 end, 则判断是否是开始\n return true;\n }\n }\n return false;\n };\n // 具体的指定阶段是否允许执行\n GrammarInteraction.prototype.isAllowExecute = function (stepName, step) {\n if (this.isAllowStep(stepName)) {\n var key = this.getKey(stepName, step);\n // 如果是在本环节内仅允许触发一次,同时已经触发过,则不允许再触发\n if (step.once && this.emitCaches[key]) {\n return false;\n }\n // 如果是允许的阶段,则验证 isEnable 方法\n if (step.isEnable) {\n return step.isEnable(this.context);\n }\n return true; // 如果没有 isEnable 则允许执行\n }\n\n return false;\n };\n GrammarInteraction.prototype.enterStep = function (stepName) {\n this.currentStepName = stepName;\n this.emitCaches = {}; // 清除所有本环节触发的缓存\n };\n // 执行完某个触发和反馈(子环节)\n GrammarInteraction.prototype.afterExecute = function (stepName, step) {\n // show enable 不计入正常的流程,其他情况则设置当前的 step\n if (stepName !== STEP_NAMES.SHOW_ENABLE && this.currentStepName !== stepName) {\n this.enterStep(stepName);\n }\n var key = this.getKey(stepName, step);\n // 一旦执行,则缓存标记为,一直保持到跳出改环节\n this.emitCaches[key] = true;\n };\n // 获取某个环节的唯一的键值\n GrammarInteraction.prototype.getKey = function (stepName, step) {\n return stepName + step.trigger + step.action;\n };\n // 获取 step 的回调函数,如果已经生成,则直接返回,如果未生成,则创建\n GrammarInteraction.prototype.getActionCallback = function (stepName, step) {\n var _this = this;\n var context = this.context;\n var callbackCaches = this.callbackCaches;\n var actionObject = step.actionObject;\n if (step.action && actionObject) {\n var key = this.getKey(stepName, step);\n if (!callbackCaches[key]) {\n // 动态生成执行的方法,执行对应 action 的名称\n var actionCallback = function actionCallback(event) {\n context.event = event; // 保证检测时的 event\n if (_this.isAllowExecute(stepName, step)) {\n // 如果是数组时,则依次执行\n if (isArray(actionObject)) {\n each(actionObject, function (obj) {\n context.event = event; // 可能触发新的事件,保证执行前的 context.event 是正确的\n executeAction(obj);\n });\n } else {\n context.event = event; // 保证执行前的 context.event 是正确的\n executeAction(actionObject);\n }\n _this.afterExecute(stepName, step);\n if (step.callback) {\n context.event = event; // 保证执行前的 context.event 是正确的\n step.callback(context);\n }\n } else {\n // 如果未通过验证,则事件不要绑定在上面\n context.event = null;\n }\n };\n // 如果设置了 debounce\n if (step.debounce) {\n callbackCaches[key] = debounce(actionCallback, step.debounce.wait, step.debounce.immediate);\n } else if (step.throttle) {\n // 设置 throttle\n callbackCaches[key] = throttle(actionCallback, step.throttle.wait, {\n leading: step.throttle.leading,\n trailing: step.throttle.trailing\n });\n } else {\n // 直接设置\n callbackCaches[key] = actionCallback;\n }\n }\n return callbackCaches[key];\n }\n return null;\n };\n GrammarInteraction.prototype.bindEvent = function (eventName, callback) {\n var nameArr = eventName.split(':');\n if (nameArr[0] === 'window') {\n window.addEventListener(nameArr[1], callback);\n } else if (nameArr[0] === 'document') {\n document.addEventListener(nameArr[1], callback);\n } else {\n this.view.on(eventName, callback);\n }\n };\n GrammarInteraction.prototype.offEvent = function (eventName, callback) {\n var nameArr = eventName.split(':');\n if (nameArr[0] === 'window') {\n window.removeEventListener(nameArr[1], callback);\n } else if (nameArr[0] === 'document') {\n document.removeEventListener(nameArr[1], callback);\n } else {\n this.view.off(eventName, callback);\n }\n };\n return GrammarInteraction;\n}(Interaction);\nexport default GrammarInteraction;","import { clone, isPlainObject, lowerCase, mix } from '@antv/util';\nimport GrammarInteraction from './grammar-interaction';\nvar Interactions = {};\n/**\n * 根据交互行为名字获取对应的交互类\n * @param name 交互名字\n * @returns 交互类\n */\nexport function getInteraction(name) {\n return Interactions[lowerCase(name)];\n}\n/**\n * 注册交互行为\n * @param name 交互行为名字\n * @param interaction 交互类\n */\nexport function registerInteraction(name, interaction) {\n Interactions[lowerCase(name)] = interaction;\n}\n/**\n * 创建交互实例\n * @param name 交互名\n * @param view 交互应用的 View 实例\n * @param cfg 交互行为配置\n */\nexport function createInteraction(name, view, cfg) {\n var interaciton = getInteraction(name);\n if (!interaciton) {\n return null;\n }\n if (isPlainObject(interaciton)) {\n // 如果不 clone 则会多个 interaction 实例共享 step 的定义\n var steps = mix(clone(interaciton), cfg);\n return new GrammarInteraction(view, steps);\n } else {\n var cls = interaciton;\n return new cls(view, cfg);\n }\n}\nexport { default as Interaction } from './interaction';\nexport { Action, registerAction, getActionClass } from './action';","import { __assign } from \"tslib\";\nimport { TOOLTIP_CSS_CONST } from '@antv/component';\nimport { ext } from '@antv/matrix-util';\nimport { deepMix } from '@antv/util';\nimport { getAngle } from '../../util/graphics';\n/**\n * 根据样式表创建 axis 组件主题样式\n * @param styleSheet\n */\nfunction createAxisStyles(styleSheet) {\n return {\n title: {\n autoRotate: true,\n position: 'center',\n spacing: styleSheet.axisTitleSpacing,\n style: {\n fill: styleSheet.axisTitleTextFillColor,\n fontSize: styleSheet.axisTitleTextFontSize,\n lineHeight: styleSheet.axisTitleTextLineHeight,\n textBaseline: 'middle',\n fontFamily: styleSheet.fontFamily\n },\n iconStyle: {\n fill: styleSheet.axisDescriptionIconFillColor\n }\n },\n label: {\n autoRotate: false,\n autoEllipsis: false,\n autoHide: {\n type: 'equidistance',\n cfg: {\n minGap: 6\n }\n },\n offset: styleSheet.axisLabelOffset,\n style: {\n fill: styleSheet.axisLabelFillColor,\n fontSize: styleSheet.axisLabelFontSize,\n lineHeight: styleSheet.axisLabelLineHeight,\n fontFamily: styleSheet.fontFamily\n }\n },\n line: {\n style: {\n lineWidth: styleSheet.axisLineBorder,\n stroke: styleSheet.axisLineBorderColor\n }\n },\n grid: {\n line: {\n type: 'line',\n style: {\n stroke: styleSheet.axisGridBorderColor,\n lineWidth: styleSheet.axisGridBorder,\n lineDash: styleSheet.axisGridLineDash\n }\n },\n alignTick: true,\n animate: true\n },\n tickLine: {\n style: {\n lineWidth: styleSheet.axisTickLineBorder,\n stroke: styleSheet.axisTickLineBorderColor\n },\n alignTick: true,\n length: styleSheet.axisTickLineLength\n },\n subTickLine: null,\n animate: true\n };\n}\n/**\n *\n * @param styleSheet\n */\n// export function\n/**\n * 根据样式表创建 legend 组件主题样式\n * @param styleSheet\n */\nfunction createLegendStyles(styleSheet) {\n return {\n title: null,\n marker: {\n symbol: 'circle',\n spacing: styleSheet.legendMarkerSpacing,\n style: {\n r: styleSheet.legendCircleMarkerSize,\n fill: styleSheet.legendMarkerColor\n }\n },\n itemName: {\n spacing: 5,\n style: {\n fill: styleSheet.legendItemNameFillColor,\n fontFamily: styleSheet.fontFamily,\n fontSize: styleSheet.legendItemNameFontSize,\n lineHeight: styleSheet.legendItemNameLineHeight,\n fontWeight: styleSheet.legendItemNameFontWeight,\n textAlign: 'start',\n textBaseline: 'middle'\n }\n },\n itemStates: {\n active: {\n nameStyle: {\n opacity: 0.8\n }\n },\n unchecked: {\n nameStyle: {\n fill: '#D8D8D8'\n },\n markerStyle: {\n fill: '#D8D8D8',\n stroke: '#D8D8D8'\n }\n },\n inactive: {\n nameStyle: {\n fill: '#D8D8D8'\n },\n markerStyle: {\n opacity: 0.2\n }\n }\n },\n flipPage: true,\n pageNavigator: {\n marker: {\n style: {\n size: styleSheet.legendPageNavigatorMarkerSize,\n inactiveFill: styleSheet.legendPageNavigatorMarkerInactiveFillColor,\n inactiveOpacity: styleSheet.legendPageNavigatorMarkerInactiveFillOpacity,\n fill: styleSheet.legendPageNavigatorMarkerFillColor,\n opacity: styleSheet.legendPageNavigatorMarkerFillOpacity\n }\n },\n text: {\n style: {\n fill: styleSheet.legendPageNavigatorTextFillColor,\n fontSize: styleSheet.legendPageNavigatorTextFontSize\n }\n }\n },\n animate: false,\n maxItemWidth: 200,\n itemSpacing: styleSheet.legendItemSpacing,\n itemMarginBottom: styleSheet.legendItemMarginBottom,\n padding: styleSheet.legendPadding // 图例组件自己的外边距\n };\n}\n/**\n * 根据主题样式表生成主题结构\n * @param styleSheet 主题样式表\n */\nexport function createThemeByStyleSheet(styleSheet) {\n var _a;\n var shapeStyles = {\n point: {\n default: {\n fill: styleSheet.pointFillColor,\n r: styleSheet.pointSize,\n stroke: styleSheet.pointBorderColor,\n lineWidth: styleSheet.pointBorder,\n fillOpacity: styleSheet.pointFillOpacity\n },\n active: {\n stroke: styleSheet.pointActiveBorderColor,\n lineWidth: styleSheet.pointActiveBorder\n },\n selected: {\n stroke: styleSheet.pointSelectedBorderColor,\n lineWidth: styleSheet.pointSelectedBorder\n },\n inactive: {\n fillOpacity: styleSheet.pointInactiveFillOpacity,\n strokeOpacity: styleSheet.pointInactiveBorderOpacity\n }\n },\n hollowPoint: {\n default: {\n fill: styleSheet.hollowPointFillColor,\n lineWidth: styleSheet.hollowPointBorder,\n stroke: styleSheet.hollowPointBorderColor,\n strokeOpacity: styleSheet.hollowPointBorderOpacity,\n r: styleSheet.hollowPointSize\n },\n active: {\n stroke: styleSheet.hollowPointActiveBorderColor,\n strokeOpacity: styleSheet.hollowPointActiveBorderOpacity\n },\n selected: {\n lineWidth: styleSheet.hollowPointSelectedBorder,\n stroke: styleSheet.hollowPointSelectedBorderColor,\n strokeOpacity: styleSheet.hollowPointSelectedBorderOpacity\n },\n inactive: {\n strokeOpacity: styleSheet.hollowPointInactiveBorderOpacity\n }\n },\n area: {\n default: {\n fill: styleSheet.areaFillColor,\n fillOpacity: styleSheet.areaFillOpacity,\n stroke: null\n },\n active: {\n fillOpacity: styleSheet.areaActiveFillOpacity\n },\n selected: {\n fillOpacity: styleSheet.areaSelectedFillOpacity\n },\n inactive: {\n fillOpacity: styleSheet.areaInactiveFillOpacity\n }\n },\n hollowArea: {\n default: {\n fill: null,\n stroke: styleSheet.hollowAreaBorderColor,\n lineWidth: styleSheet.hollowAreaBorder,\n strokeOpacity: styleSheet.hollowAreaBorderOpacity\n },\n active: {\n fill: null,\n lineWidth: styleSheet.hollowAreaActiveBorder\n },\n selected: {\n fill: null,\n lineWidth: styleSheet.hollowAreaSelectedBorder\n },\n inactive: {\n strokeOpacity: styleSheet.hollowAreaInactiveBorderOpacity\n }\n },\n interval: {\n default: {\n fill: styleSheet.intervalFillColor,\n fillOpacity: styleSheet.intervalFillOpacity\n },\n active: {\n stroke: styleSheet.intervalActiveBorderColor,\n lineWidth: styleSheet.intervalActiveBorder\n },\n selected: {\n stroke: styleSheet.intervalSelectedBorderColor,\n lineWidth: styleSheet.intervalSelectedBorder\n },\n inactive: {\n fillOpacity: styleSheet.intervalInactiveFillOpacity,\n strokeOpacity: styleSheet.intervalInactiveBorderOpacity\n }\n },\n hollowInterval: {\n default: {\n fill: styleSheet.hollowIntervalFillColor,\n stroke: styleSheet.hollowIntervalBorderColor,\n lineWidth: styleSheet.hollowIntervalBorder,\n strokeOpacity: styleSheet.hollowIntervalBorderOpacity\n },\n active: {\n stroke: styleSheet.hollowIntervalActiveBorderColor,\n lineWidth: styleSheet.hollowIntervalActiveBorder,\n strokeOpacity: styleSheet.hollowIntervalActiveBorderOpacity\n },\n selected: {\n stroke: styleSheet.hollowIntervalSelectedBorderColor,\n lineWidth: styleSheet.hollowIntervalSelectedBorder,\n strokeOpacity: styleSheet.hollowIntervalSelectedBorderOpacity\n },\n inactive: {\n stroke: styleSheet.hollowIntervalInactiveBorderColor,\n lineWidth: styleSheet.hollowIntervalInactiveBorder,\n strokeOpacity: styleSheet.hollowIntervalInactiveBorderOpacity\n }\n },\n line: {\n default: {\n stroke: styleSheet.lineBorderColor,\n lineWidth: styleSheet.lineBorder,\n strokeOpacity: styleSheet.lineBorderOpacity,\n fill: null,\n lineAppendWidth: 10,\n lineCap: 'round',\n lineJoin: 'round'\n },\n active: {\n lineWidth: styleSheet.lineActiveBorder\n },\n selected: {\n lineWidth: styleSheet.lineSelectedBorder\n },\n inactive: {\n strokeOpacity: styleSheet.lineInactiveBorderOpacity\n }\n }\n };\n var axisStyles = createAxisStyles(styleSheet);\n var legendStyles = createLegendStyles(styleSheet);\n return {\n background: styleSheet.backgroundColor,\n defaultColor: styleSheet.brandColor,\n subColor: styleSheet.subColor,\n semanticRed: styleSheet.paletteSemanticRed,\n semanticGreen: styleSheet.paletteSemanticGreen,\n padding: 'auto',\n fontFamily: styleSheet.fontFamily,\n // 兼容Theme配置\n /** 一般柱状图宽度占比,geometry中已添加默认值,为了geometry配置生效默认值为null */\n columnWidthRatio: 1 / 2,\n /** 柱状图最大宽度 */\n maxColumnWidth: null,\n /** 柱状图最小宽度 */\n minColumnWidth: null,\n /** 玫瑰图占比 */\n roseWidthRatio: 0.9999999,\n /** 多层饼图/环图占比 */\n multiplePieWidthRatio: 1 / 1.3,\n colors10: styleSheet.paletteQualitative10,\n colors20: styleSheet.paletteQualitative20,\n sequenceColors: styleSheet.paletteSequence,\n shapes: {\n point: ['hollow-circle', 'hollow-square', 'hollow-bowtie', 'hollow-diamond', 'hollow-hexagon', 'hollow-triangle', 'hollow-triangle-down', 'circle', 'square', 'bowtie', 'diamond', 'hexagon', 'triangle', 'triangle-down', 'cross', 'tick', 'plus', 'hyphen', 'line'],\n line: ['line', 'dash', 'dot', 'smooth'],\n area: ['area', 'smooth', 'line', 'smooth-line'],\n interval: ['rect', 'hollow-rect', 'line', 'tick']\n },\n sizes: [1, 10],\n geometries: {\n interval: {\n rect: {\n default: {\n style: shapeStyles.interval.default\n },\n active: {\n style: shapeStyles.interval.active\n },\n inactive: {\n style: shapeStyles.interval.inactive\n },\n selected: {\n style: function style(element) {\n var coordinate = element.geometry.coordinate;\n if (coordinate.isPolar && coordinate.isTransposed) {\n var _a = getAngle(element.getModel(), coordinate),\n startAngle = _a.startAngle,\n endAngle = _a.endAngle;\n var middleAngle = (startAngle + endAngle) / 2;\n var r = 7.5;\n var x = r * Math.cos(middleAngle);\n var y = r * Math.sin(middleAngle);\n return {\n matrix: ext.transform(null, [['t', x, y]])\n };\n }\n return shapeStyles.interval.selected;\n }\n }\n },\n 'hollow-rect': {\n default: {\n style: shapeStyles.hollowInterval.default\n },\n active: {\n style: shapeStyles.hollowInterval.active\n },\n inactive: {\n style: shapeStyles.hollowInterval.inactive\n },\n selected: {\n style: shapeStyles.hollowInterval.selected\n }\n },\n line: {\n default: {\n style: shapeStyles.hollowInterval.default\n },\n active: {\n style: shapeStyles.hollowInterval.active\n },\n inactive: {\n style: shapeStyles.hollowInterval.inactive\n },\n selected: {\n style: shapeStyles.hollowInterval.selected\n }\n },\n tick: {\n default: {\n style: shapeStyles.hollowInterval.default\n },\n active: {\n style: shapeStyles.hollowInterval.active\n },\n inactive: {\n style: shapeStyles.hollowInterval.inactive\n },\n selected: {\n style: shapeStyles.hollowInterval.selected\n }\n },\n funnel: {\n default: {\n style: shapeStyles.interval.default\n },\n active: {\n style: shapeStyles.interval.active\n },\n inactive: {\n style: shapeStyles.interval.inactive\n },\n selected: {\n style: shapeStyles.interval.selected\n }\n },\n pyramid: {\n default: {\n style: shapeStyles.interval.default\n },\n active: {\n style: shapeStyles.interval.active\n },\n inactive: {\n style: shapeStyles.interval.inactive\n },\n selected: {\n style: shapeStyles.interval.selected\n }\n }\n },\n line: {\n line: {\n default: {\n style: shapeStyles.line.default\n },\n active: {\n style: shapeStyles.line.active\n },\n inactive: {\n style: shapeStyles.line.inactive\n },\n selected: {\n style: shapeStyles.line.selected\n }\n },\n dot: {\n default: {\n style: __assign(__assign({}, shapeStyles.line.default), {\n lineCap: null,\n lineDash: [1, 1]\n })\n },\n active: {\n style: __assign(__assign({}, shapeStyles.line.active), {\n lineCap: null,\n lineDash: [1, 1]\n })\n },\n inactive: {\n style: __assign(__assign({}, shapeStyles.line.inactive), {\n lineCap: null,\n lineDash: [1, 1]\n })\n },\n selected: {\n style: __assign(__assign({}, shapeStyles.line.selected), {\n lineCap: null,\n lineDash: [1, 1]\n })\n }\n },\n dash: {\n default: {\n style: __assign(__assign({}, shapeStyles.line.default), {\n lineCap: null,\n lineDash: [5.5, 1]\n })\n },\n active: {\n style: __assign(__assign({}, shapeStyles.line.active), {\n lineCap: null,\n lineDash: [5.5, 1]\n })\n },\n inactive: {\n style: __assign(__assign({}, shapeStyles.line.inactive), {\n lineCap: null,\n lineDash: [5.5, 1]\n })\n },\n selected: {\n style: __assign(__assign({}, shapeStyles.line.selected), {\n lineCap: null,\n lineDash: [5.5, 1]\n })\n }\n },\n smooth: {\n default: {\n style: shapeStyles.line.default\n },\n active: {\n style: shapeStyles.line.active\n },\n inactive: {\n style: shapeStyles.line.inactive\n },\n selected: {\n style: shapeStyles.line.selected\n }\n },\n hv: {\n default: {\n style: shapeStyles.line.default\n },\n active: {\n style: shapeStyles.line.active\n },\n inactive: {\n style: shapeStyles.line.inactive\n },\n selected: {\n style: shapeStyles.line.selected\n }\n },\n vh: {\n default: {\n style: shapeStyles.line.default\n },\n active: {\n style: shapeStyles.line.active\n },\n inactive: {\n style: shapeStyles.line.inactive\n },\n selected: {\n style: shapeStyles.line.selected\n }\n },\n hvh: {\n default: {\n style: shapeStyles.line.default\n },\n active: {\n style: shapeStyles.line.active\n },\n inactive: {\n style: shapeStyles.line.inactive\n },\n selected: {\n style: shapeStyles.line.selected\n }\n },\n vhv: {\n default: {\n style: shapeStyles.line.default\n },\n active: {\n style: shapeStyles.line.active\n },\n inactive: {\n style: shapeStyles.line.inactive\n },\n selected: {\n style: shapeStyles.line.selected\n }\n }\n },\n polygon: {\n polygon: {\n default: {\n style: shapeStyles.interval.default\n },\n active: {\n style: shapeStyles.interval.active\n },\n inactive: {\n style: shapeStyles.interval.inactive\n },\n selected: {\n style: shapeStyles.interval.selected\n }\n }\n },\n point: {\n circle: {\n default: {\n style: shapeStyles.point.default\n },\n active: {\n style: shapeStyles.point.active\n },\n inactive: {\n style: shapeStyles.point.inactive\n },\n selected: {\n style: shapeStyles.point.selected\n }\n },\n square: {\n default: {\n style: shapeStyles.point.default\n },\n active: {\n style: shapeStyles.point.active\n },\n inactive: {\n style: shapeStyles.point.inactive\n },\n selected: {\n style: shapeStyles.point.selected\n }\n },\n bowtie: {\n default: {\n style: shapeStyles.point.default\n },\n active: {\n style: shapeStyles.point.active\n },\n inactive: {\n style: shapeStyles.point.inactive\n },\n selected: {\n style: shapeStyles.point.selected\n }\n },\n diamond: {\n default: {\n style: shapeStyles.point.default\n },\n active: {\n style: shapeStyles.point.active\n },\n inactive: {\n style: shapeStyles.point.inactive\n },\n selected: {\n style: shapeStyles.point.selected\n }\n },\n hexagon: {\n default: {\n style: shapeStyles.point.default\n },\n active: {\n style: shapeStyles.point.active\n },\n inactive: {\n style: shapeStyles.point.inactive\n },\n selected: {\n style: shapeStyles.point.selected\n }\n },\n triangle: {\n default: {\n style: shapeStyles.point.default\n },\n active: {\n style: shapeStyles.point.active\n },\n inactive: {\n style: shapeStyles.point.inactive\n },\n selected: {\n style: shapeStyles.point.selected\n }\n },\n 'triangle-down': {\n default: {\n style: shapeStyles.point.default\n },\n active: {\n style: shapeStyles.point.active\n },\n inactive: {\n style: shapeStyles.point.inactive\n },\n selected: {\n style: shapeStyles.point.selected\n }\n },\n 'hollow-circle': {\n default: {\n style: shapeStyles.hollowPoint.default\n },\n active: {\n style: shapeStyles.hollowPoint.active\n },\n inactive: {\n style: shapeStyles.hollowPoint.inactive\n },\n selected: {\n style: shapeStyles.hollowPoint.selected\n }\n },\n 'hollow-square': {\n default: {\n style: shapeStyles.hollowPoint.default\n },\n active: {\n style: shapeStyles.hollowPoint.active\n },\n inactive: {\n style: shapeStyles.hollowPoint.inactive\n },\n selected: {\n style: shapeStyles.hollowPoint.selected\n }\n },\n 'hollow-bowtie': {\n default: {\n style: shapeStyles.hollowPoint.default\n },\n active: {\n style: shapeStyles.hollowPoint.active\n },\n inactive: {\n style: shapeStyles.hollowPoint.inactive\n },\n selected: {\n style: shapeStyles.hollowPoint.selected\n }\n },\n 'hollow-diamond': {\n default: {\n style: shapeStyles.hollowPoint.default\n },\n active: {\n style: shapeStyles.hollowPoint.active\n },\n inactive: {\n style: shapeStyles.hollowPoint.inactive\n },\n selected: {\n style: shapeStyles.hollowPoint.selected\n }\n },\n 'hollow-hexagon': {\n default: {\n style: shapeStyles.hollowPoint.default\n },\n active: {\n style: shapeStyles.hollowPoint.active\n },\n inactive: {\n style: shapeStyles.hollowPoint.inactive\n },\n selected: {\n style: shapeStyles.hollowPoint.selected\n }\n },\n 'hollow-triangle': {\n default: {\n style: shapeStyles.hollowPoint.default\n },\n active: {\n style: shapeStyles.hollowPoint.active\n },\n inactive: {\n style: shapeStyles.hollowPoint.inactive\n },\n selected: {\n style: shapeStyles.hollowPoint.selected\n }\n },\n 'hollow-triangle-down': {\n default: {\n style: shapeStyles.hollowPoint.default\n },\n active: {\n style: shapeStyles.hollowPoint.active\n },\n inactive: {\n style: shapeStyles.hollowPoint.inactive\n },\n selected: {\n style: shapeStyles.hollowPoint.selected\n }\n },\n cross: {\n default: {\n style: shapeStyles.hollowPoint.default\n },\n active: {\n style: shapeStyles.hollowPoint.active\n },\n inactive: {\n style: shapeStyles.hollowPoint.inactive\n },\n selected: {\n style: shapeStyles.hollowPoint.selected\n }\n },\n tick: {\n default: {\n style: shapeStyles.hollowPoint.default\n },\n active: {\n style: shapeStyles.hollowPoint.active\n },\n inactive: {\n style: shapeStyles.hollowPoint.inactive\n },\n selected: {\n style: shapeStyles.hollowPoint.selected\n }\n },\n plus: {\n default: {\n style: shapeStyles.hollowPoint.default\n },\n active: {\n style: shapeStyles.hollowPoint.active\n },\n inactive: {\n style: shapeStyles.hollowPoint.inactive\n },\n selected: {\n style: shapeStyles.hollowPoint.selected\n }\n },\n hyphen: {\n default: {\n style: shapeStyles.hollowPoint.default\n },\n active: {\n style: shapeStyles.hollowPoint.active\n },\n inactive: {\n style: shapeStyles.hollowPoint.inactive\n },\n selected: {\n style: shapeStyles.hollowPoint.selected\n }\n },\n line: {\n default: {\n style: shapeStyles.hollowPoint.default\n },\n active: {\n style: shapeStyles.hollowPoint.active\n },\n inactive: {\n style: shapeStyles.hollowPoint.inactive\n },\n selected: {\n style: shapeStyles.hollowPoint.selected\n }\n }\n },\n area: {\n area: {\n default: {\n style: shapeStyles.area.default\n },\n active: {\n style: shapeStyles.area.active\n },\n inactive: {\n style: shapeStyles.area.inactive\n },\n selected: {\n style: shapeStyles.area.selected\n }\n },\n smooth: {\n default: {\n style: shapeStyles.area.default\n },\n active: {\n style: shapeStyles.area.active\n },\n inactive: {\n style: shapeStyles.area.inactive\n },\n selected: {\n style: shapeStyles.area.selected\n }\n },\n line: {\n default: {\n style: shapeStyles.hollowArea.default\n },\n active: {\n style: shapeStyles.hollowArea.active\n },\n inactive: {\n style: shapeStyles.hollowArea.inactive\n },\n selected: {\n style: shapeStyles.hollowArea.selected\n }\n },\n 'smooth-line': {\n default: {\n style: shapeStyles.hollowArea.default\n },\n active: {\n style: shapeStyles.hollowArea.active\n },\n inactive: {\n style: shapeStyles.hollowArea.inactive\n },\n selected: {\n style: shapeStyles.hollowArea.selected\n }\n }\n },\n schema: {\n candle: {\n default: {\n style: shapeStyles.hollowInterval.default\n },\n active: {\n style: shapeStyles.hollowInterval.active\n },\n inactive: {\n style: shapeStyles.hollowInterval.inactive\n },\n selected: {\n style: shapeStyles.hollowInterval.selected\n }\n },\n box: {\n default: {\n style: shapeStyles.hollowInterval.default\n },\n active: {\n style: shapeStyles.hollowInterval.active\n },\n inactive: {\n style: shapeStyles.hollowInterval.inactive\n },\n selected: {\n style: shapeStyles.hollowInterval.selected\n }\n }\n },\n edge: {\n line: {\n default: {\n style: shapeStyles.line.default\n },\n active: {\n style: shapeStyles.line.active\n },\n inactive: {\n style: shapeStyles.line.inactive\n },\n selected: {\n style: shapeStyles.line.selected\n }\n },\n vhv: {\n default: {\n style: shapeStyles.line.default\n },\n active: {\n style: shapeStyles.line.active\n },\n inactive: {\n style: shapeStyles.line.inactive\n },\n selected: {\n style: shapeStyles.line.selected\n }\n },\n smooth: {\n default: {\n style: shapeStyles.line.default\n },\n active: {\n style: shapeStyles.line.active\n },\n inactive: {\n style: shapeStyles.line.inactive\n },\n selected: {\n style: shapeStyles.line.selected\n }\n },\n arc: {\n default: {\n style: shapeStyles.line.default\n },\n active: {\n style: shapeStyles.line.active\n },\n inactive: {\n style: shapeStyles.line.inactive\n },\n selected: {\n style: shapeStyles.line.selected\n }\n }\n },\n violin: {\n violin: {\n default: {\n style: shapeStyles.line.default\n },\n active: {\n style: shapeStyles.line.active\n },\n inactive: {\n style: shapeStyles.line.inactive\n },\n selected: {\n style: shapeStyles.line.selected\n }\n },\n smooth: {\n default: {\n style: shapeStyles.line.default\n },\n active: {\n style: shapeStyles.line.active\n },\n inactive: {\n style: shapeStyles.line.inactive\n },\n selected: {\n style: shapeStyles.line.selected\n }\n },\n hollow: {\n default: {\n style: shapeStyles.hollowArea.default\n },\n active: {\n style: shapeStyles.hollowArea.active\n },\n inactive: {\n style: shapeStyles.hollowArea.inactive\n },\n selected: {\n style: shapeStyles.hollowArea.selected\n }\n },\n 'hollow-smooth': {\n default: {\n style: shapeStyles.hollowArea.default\n },\n active: {\n style: shapeStyles.hollowArea.active\n },\n inactive: {\n style: shapeStyles.hollowArea.inactive\n },\n selected: {\n style: shapeStyles.hollowArea.selected\n }\n }\n }\n },\n components: {\n axis: {\n common: axisStyles,\n top: {\n position: 'top',\n grid: null,\n title: null,\n verticalLimitLength: 1 / 2\n },\n bottom: {\n position: 'bottom',\n grid: null,\n title: null,\n verticalLimitLength: 1 / 2\n },\n left: {\n position: 'left',\n title: null,\n line: null,\n tickLine: null,\n verticalLimitLength: 1 / 3\n },\n right: {\n position: 'right',\n title: null,\n line: null,\n tickLine: null,\n verticalLimitLength: 1 / 3\n },\n circle: {\n title: null,\n grid: deepMix({}, axisStyles.grid, {\n line: {\n type: 'line'\n }\n })\n },\n radius: {\n title: null,\n grid: deepMix({}, axisStyles.grid, {\n line: {\n type: 'circle'\n }\n })\n }\n },\n legend: {\n common: legendStyles,\n right: {\n layout: 'vertical',\n padding: styleSheet.legendVerticalPadding\n },\n left: {\n layout: 'vertical',\n padding: styleSheet.legendVerticalPadding\n },\n top: {\n layout: 'horizontal',\n padding: styleSheet.legendHorizontalPadding\n },\n bottom: {\n layout: 'horizontal',\n padding: styleSheet.legendHorizontalPadding\n },\n continuous: {\n title: null,\n background: null,\n track: {},\n rail: {\n type: 'color',\n size: styleSheet.sliderRailHeight,\n defaultLength: styleSheet.sliderRailWidth,\n style: {\n fill: styleSheet.sliderRailFillColor,\n stroke: styleSheet.sliderRailBorderColor,\n lineWidth: styleSheet.sliderRailBorder\n }\n },\n label: {\n align: 'rail',\n spacing: 4,\n formatter: null,\n style: {\n fill: styleSheet.sliderLabelTextFillColor,\n fontSize: styleSheet.sliderLabelTextFontSize,\n lineHeight: styleSheet.sliderLabelTextLineHeight,\n textBaseline: 'middle',\n fontFamily: styleSheet.fontFamily\n }\n },\n handler: {\n size: styleSheet.sliderHandlerWidth,\n style: {\n fill: styleSheet.sliderHandlerFillColor,\n stroke: styleSheet.sliderHandlerBorderColor\n }\n },\n slidable: true,\n padding: legendStyles.padding\n }\n },\n tooltip: {\n showContent: true,\n follow: true,\n showCrosshairs: false,\n showMarkers: true,\n shared: false,\n enterable: false,\n position: 'auto',\n marker: {\n symbol: 'circle',\n stroke: '#fff',\n shadowBlur: 10,\n shadowOffsetX: 0,\n shadowOffsetY: 0,\n shadowColor: 'rgba(0,0,0,0.09)',\n lineWidth: 2,\n r: 4\n },\n crosshairs: {\n line: {\n style: {\n stroke: styleSheet.tooltipCrosshairsBorderColor,\n lineWidth: styleSheet.tooltipCrosshairsBorder\n }\n },\n text: null,\n textBackground: {\n padding: 2,\n style: {\n fill: 'rgba(0, 0, 0, 0.25)',\n lineWidth: 0,\n stroke: null\n }\n },\n follow: false\n },\n // tooltip dom 样式\n domStyles: (_a = {}, _a[\"\".concat(TOOLTIP_CSS_CONST.CONTAINER_CLASS)] = {\n position: 'absolute',\n visibility: 'hidden',\n zIndex: 8,\n transition: 'left 0.4s cubic-bezier(0.23, 1, 0.32, 1) 0s, top 0.4s cubic-bezier(0.23, 1, 0.32, 1) 0s',\n backgroundColor: styleSheet.tooltipContainerFillColor,\n opacity: styleSheet.tooltipContainerFillOpacity,\n boxShadow: styleSheet.tooltipContainerShadow,\n borderRadius: \"\".concat(styleSheet.tooltipContainerBorderRadius, \"px\"),\n color: styleSheet.tooltipTextFillColor,\n fontSize: \"\".concat(styleSheet.tooltipTextFontSize, \"px\"),\n fontFamily: styleSheet.fontFamily,\n lineHeight: \"\".concat(styleSheet.tooltipTextLineHeight, \"px\"),\n padding: '0 12px 0 12px'\n }, _a[\"\".concat(TOOLTIP_CSS_CONST.TITLE_CLASS)] = {\n marginBottom: '12px',\n marginTop: '12px'\n }, _a[\"\".concat(TOOLTIP_CSS_CONST.LIST_CLASS)] = {\n margin: 0,\n listStyleType: 'none',\n padding: 0\n }, _a[\"\".concat(TOOLTIP_CSS_CONST.LIST_ITEM_CLASS)] = {\n listStyleType: 'none',\n padding: 0,\n marginBottom: '12px',\n marginTop: '12px',\n marginLeft: 0,\n marginRight: 0\n }, _a[\"\".concat(TOOLTIP_CSS_CONST.MARKER_CLASS)] = {\n width: '8px',\n height: '8px',\n borderRadius: '50%',\n display: 'inline-block',\n marginRight: '8px'\n }, _a[\"\".concat(TOOLTIP_CSS_CONST.VALUE_CLASS)] = {\n display: 'inline-block',\n float: 'right',\n marginLeft: '30px'\n }, _a)\n },\n annotation: {\n arc: {\n style: {\n stroke: styleSheet.annotationArcBorderColor,\n lineWidth: styleSheet.annotationArcBorder\n },\n animate: true\n },\n line: {\n style: {\n stroke: styleSheet.annotationLineBorderColor,\n lineDash: styleSheet.annotationLineDash,\n lineWidth: styleSheet.annotationLineBorder\n },\n text: {\n position: 'start',\n autoRotate: true,\n style: {\n fill: styleSheet.annotationTextFillColor,\n stroke: styleSheet.annotationTextBorderColor,\n lineWidth: styleSheet.annotationTextBorder,\n fontSize: styleSheet.annotationTextFontSize,\n textAlign: 'start',\n fontFamily: styleSheet.fontFamily,\n textBaseline: 'bottom'\n }\n },\n animate: true\n },\n text: {\n style: {\n fill: styleSheet.annotationTextFillColor,\n stroke: styleSheet.annotationTextBorderColor,\n lineWidth: styleSheet.annotationTextBorder,\n fontSize: styleSheet.annotationTextFontSize,\n textBaseline: 'middle',\n textAlign: 'start',\n fontFamily: styleSheet.fontFamily\n },\n animate: true\n },\n region: {\n top: false,\n style: {\n lineWidth: styleSheet.annotationRegionBorder,\n stroke: styleSheet.annotationRegionBorderColor,\n fill: styleSheet.annotationRegionFillColor,\n fillOpacity: styleSheet.annotationRegionFillOpacity\n },\n animate: true\n },\n image: {\n top: false,\n animate: true\n },\n dataMarker: {\n top: true,\n point: {\n style: {\n r: 3,\n stroke: styleSheet.brandColor,\n lineWidth: 2\n }\n },\n line: {\n style: {\n stroke: styleSheet.annotationLineBorderColor,\n lineWidth: styleSheet.annotationLineBorder\n },\n length: styleSheet.annotationDataMarkerLineLength\n },\n text: {\n style: {\n textAlign: 'start',\n fill: styleSheet.annotationTextFillColor,\n stroke: styleSheet.annotationTextBorderColor,\n lineWidth: styleSheet.annotationTextBorder,\n fontSize: styleSheet.annotationTextFontSize,\n fontFamily: styleSheet.fontFamily\n }\n },\n direction: 'upward',\n autoAdjust: true,\n animate: true\n },\n dataRegion: {\n style: {\n region: {\n fill: styleSheet.annotationRegionFillColor,\n fillOpacity: styleSheet.annotationRegionFillOpacity\n },\n text: {\n textAlign: 'center',\n textBaseline: 'bottom',\n fill: styleSheet.annotationTextFillColor,\n stroke: styleSheet.annotationTextBorderColor,\n lineWidth: styleSheet.annotationTextBorder,\n fontSize: styleSheet.annotationTextFontSize,\n fontFamily: styleSheet.fontFamily\n }\n },\n animate: true\n }\n },\n slider: {\n common: {\n padding: [8, 8, 8, 8],\n backgroundStyle: {\n fill: styleSheet.cSliderBackgroundFillColor,\n opacity: styleSheet.cSliderBackgroundFillOpacity\n },\n foregroundStyle: {\n fill: styleSheet.cSliderForegroundFillColor,\n opacity: styleSheet.cSliderForegroundFillOpacity\n },\n handlerStyle: {\n width: styleSheet.cSliderHandlerWidth,\n height: styleSheet.cSliderHandlerHeight,\n fill: styleSheet.cSliderHandlerFillColor,\n opacity: styleSheet.cSliderHandlerFillOpacity,\n stroke: styleSheet.cSliderHandlerBorderColor,\n lineWidth: styleSheet.cSliderHandlerBorder,\n radius: styleSheet.cSliderHandlerBorderRadius,\n // 高亮的颜色\n highLightFill: styleSheet.cSliderHandlerHighlightFillColor\n },\n textStyle: {\n fill: styleSheet.cSliderTextFillColor,\n opacity: styleSheet.cSliderTextFillOpacity,\n fontSize: styleSheet.cSliderTextFontSize,\n lineHeight: styleSheet.cSliderTextLineHeight,\n fontWeight: styleSheet.cSliderTextFontWeight,\n stroke: styleSheet.cSliderTextBorderColor,\n lineWidth: styleSheet.cSliderTextBorder\n }\n }\n },\n scrollbar: {\n common: {\n padding: [8, 8, 8, 8]\n },\n default: {\n style: {\n trackColor: styleSheet.scrollbarTrackFillColor,\n thumbColor: styleSheet.scrollbarThumbFillColor\n }\n },\n hover: {\n style: {\n thumbColor: styleSheet.scrollbarThumbHighlightFillColor\n }\n }\n }\n },\n labels: {\n offset: 12,\n style: {\n fill: styleSheet.labelFillColor,\n fontSize: styleSheet.labelFontSize,\n fontFamily: styleSheet.fontFamily,\n stroke: styleSheet.labelBorderColor,\n lineWidth: styleSheet.labelBorder\n },\n fillColorDark: styleSheet.labelFillColorDark,\n fillColorLight: styleSheet.labelFillColorLight,\n autoRotate: true\n },\n innerLabels: {\n style: {\n fill: styleSheet.innerLabelFillColor,\n fontSize: styleSheet.innerLabelFontSize,\n fontFamily: styleSheet.fontFamily,\n stroke: styleSheet.innerLabelBorderColor,\n lineWidth: styleSheet.innerLabelBorder\n },\n autoRotate: true\n },\n overflowLabels: {\n style: {\n fill: styleSheet.overflowLabelFillColor,\n fontSize: styleSheet.overflowLabelFontSize,\n fontFamily: styleSheet.fontFamily,\n stroke: styleSheet.overflowLabelBorderColor,\n lineWidth: styleSheet.overflowLabelBorder\n }\n },\n pieLabels: {\n labelHeight: 14,\n offset: 10,\n labelLine: {\n style: {\n lineWidth: styleSheet.labelLineBorder\n }\n },\n autoRotate: true\n }\n };\n}","import { __assign } from \"tslib\";\nvar BLACK_COLORS = {\n 100: '#000',\n 95: '#0D0D0D',\n 85: '#262626',\n 65: '#595959',\n 45: '#8C8C8C',\n 25: '#BFBFBF',\n 15: '#D9D9D9',\n 6: '#F0F0F0'\n};\nvar WHITE_COLORS = {\n 100: '#FFFFFF',\n 95: '#F2F2F2',\n 85: '#D9D9D9',\n 65: '#A6A6A6',\n 45: '#737373',\n 25: '#404040',\n 15: '#262626',\n 6: '#0F0F0F'\n};\nvar QUALITATIVE_10 = ['#5B8FF9', '#5AD8A6', '#5D7092', '#F6BD16', '#6F5EF9', '#6DC8EC', '#945FB9', '#FF9845', '#1E9493', '#FF99C3'];\nvar QUALITATIVE_20 = ['#5B8FF9', '#CDDDFD', '#5AD8A6', '#CDF3E4', '#5D7092', '#CED4DE', '#F6BD16', '#FCEBB9', '#6F5EF9', '#D3CEFD', '#6DC8EC', '#D3EEF9', '#945FB9', '#DECFEA', '#FF9845', '#FFE0C7', '#1E9493', '#BBDEDE', '#FF99C3', '#FFE0ED'];\n/** 单色顺序色板 */\nvar SINGLE_SEQUENCE = ['#B8E1FF', '#9AC5FF', '#7DAAFF', '#5B8FF9', '#3D76DD', '#085EC0', '#0047A5', '#00318A', '#001D70'];\nexport var createLightStyleSheet = function createLightStyleSheet(cfg) {\n if (cfg === void 0) {\n cfg = {};\n }\n var _a = cfg.paletteQualitative10,\n paletteQualitative10 = _a === void 0 ? QUALITATIVE_10 : _a,\n _b = cfg.paletteQualitative20,\n paletteQualitative20 = _b === void 0 ? QUALITATIVE_20 : _b;\n var _c = cfg.brandColor,\n brandColor = _c === void 0 ? paletteQualitative10[0] : _c;\n var token = {\n /** 图表背景色 */\n backgroundColor: 'transparent',\n /** 主题色 */\n brandColor: brandColor,\n /** 图表辅助色 */\n subColor: 'rgba(0,0,0,0.05)',\n /** 分类色板 1,在数据量小于等于 10 时使用 */\n paletteQualitative10: paletteQualitative10,\n /** 分类色板 2,在数据量大于 10 时使用 */\n paletteQualitative20: paletteQualitative20,\n /** 语义色 */\n paletteSemanticRed: '#F4664A',\n /** 语义色 */\n paletteSemanticGreen: '#30BF78',\n /** 语义色 */\n paletteSemanticYellow: '#FAAD14',\n /** (单色)顺序色板 */\n paletteSequence: SINGLE_SEQUENCE,\n /** 字体 */\n fontFamily: \"\\\"Segoe UI\\\", Roboto, \\\"Helvetica Neue\\\", Arial,\\n \\\"Noto Sans\\\", sans-serif, \\\"Apple Color Emoji\\\", \\\"Segoe UI Emoji\\\", \\\"Segoe UI Symbol\\\",\\n \\\"Noto Color Emoji\\\"\",\n // -------------------- 坐标轴 --------------------\n /** 坐标轴线颜色 */\n axisLineBorderColor: BLACK_COLORS[25],\n /** 坐标轴线粗细 */\n axisLineBorder: 1,\n /** 坐标轴线 lineDash 设置 */\n axisLineDash: null,\n /** 坐标轴标题颜色 */\n axisTitleTextFillColor: BLACK_COLORS[65],\n /** 坐标轴标题文本字体大小 */\n axisTitleTextFontSize: 12,\n /** 坐标轴标题文本行高 */\n axisTitleTextLineHeight: 12,\n /** 坐标轴标题文本字体粗细 */\n axisTitleTextFontWeight: 'normal',\n /** 坐标轴标题距离坐标轴文本的间距 */\n axisTitleSpacing: 12,\n /** 坐标轴标题详细说明icon颜色 */\n axisDescriptionIconFillColor: WHITE_COLORS[85],\n /** 坐标轴刻度线颜色 */\n axisTickLineBorderColor: BLACK_COLORS[25],\n /** 坐标轴刻度线长度 */\n axisTickLineLength: 4,\n /** 坐标轴刻度线粗细 */\n axisTickLineBorder: 1,\n /** 坐标轴次刻度线颜色 */\n axisSubTickLineBorderColor: BLACK_COLORS[15],\n /** 坐标轴次刻度线长度 */\n axisSubTickLineLength: 2,\n /** 坐标轴次刻度线粗细 */\n axisSubTickLineBorder: 1,\n /** 坐标轴刻度文本颜色 */\n axisLabelFillColor: BLACK_COLORS[45],\n /** 坐标轴刻度文本字体大小 */\n axisLabelFontSize: 12,\n /** 坐标轴刻度文本行高 */\n axisLabelLineHeight: 12,\n /** 坐标轴刻度文本字体粗细 */\n axisLabelFontWeight: 'normal',\n /** 坐标轴刻度文本距离坐标轴线的间距 */\n axisLabelOffset: 8,\n /** 坐标轴网格线颜色 */\n axisGridBorderColor: BLACK_COLORS[15],\n /** 坐标轴网格线粗细 */\n axisGridBorder: 1,\n /** 坐标轴网格线虚线设置 */\n axisGridLineDash: null,\n // -------------------- 图例 --------------------\n /** 图例标题颜色 */\n legendTitleTextFillColor: BLACK_COLORS[45],\n /** 图例标题文本字体大小 */\n legendTitleTextFontSize: 12,\n /** 图例标题文本行高 */\n legendTitleTextLineHeight: 21,\n /** 图例标题文本字体粗细 */\n legendTitleTextFontWeight: 'normal',\n /** 图例 marker 颜色 */\n legendMarkerColor: brandColor,\n /** 图例 marker 距离图例文本的间距 */\n legendMarkerSpacing: 8,\n /** 图例 marker 默认半径大小 */\n legendMarkerSize: 4,\n /** 图例 'circle' marker 半径 */\n legendCircleMarkerSize: 4,\n /** 图例 'square' marker 半径 */\n legendSquareMarkerSize: 4,\n /** 图例 'line' marker 半径 */\n legendLineMarkerSize: 5,\n /** 图例项文本颜色 */\n legendItemNameFillColor: BLACK_COLORS[65],\n /** 图例项文本字体大小 */\n legendItemNameFontSize: 12,\n /** 图例项文本行高 */\n legendItemNameLineHeight: 12,\n /** 图例项粗细 */\n legendItemNameFontWeight: 'normal',\n /** 图例项之间的水平间距 */\n legendItemSpacing: 24,\n /** 图例项垂直方向的间隔 */\n legendItemMarginBottom: 12,\n /** 图例与图表绘图区域的偏移距离 */\n legendPadding: [8, 8, 8, 8],\n /** 水平布局的图例与绘图区域偏移距离 */\n legendHorizontalPadding: [8, 0, 8, 0],\n /** 垂直布局的图例与绘图区域偏移距离 */\n legendVerticalPadding: [0, 8, 0, 8],\n // 图例分页器\n /** 图例分页器 marker 大小 */\n legendPageNavigatorMarkerSize: 12,\n /** 图例分页器 marker 非激活状态填充色 */\n legendPageNavigatorMarkerInactiveFillColor: BLACK_COLORS[100],\n /** 图例分页器 marker 非激活状态填充色透明度 */\n legendPageNavigatorMarkerInactiveFillOpacity: 0.45,\n /** 图例分页器 marker 填充色 */\n legendPageNavigatorMarkerFillColor: BLACK_COLORS[100],\n /** 图例分页器 marker 填充色透明度 */\n legendPageNavigatorMarkerFillOpacity: 1,\n /** 图例分页器文本颜色 */\n legendPageNavigatorTextFillColor: BLACK_COLORS[45],\n /** 图例分页器文本字体大小 */\n legendPageNavigatorTextFontSize: 12,\n /** 连续图例滑块填充色 */\n sliderRailFillColor: BLACK_COLORS[15],\n /** 连续图例滑块边框粗细 */\n sliderRailBorder: 0,\n /** 连续图例滑块边框颜色 */\n sliderRailBorderColor: null,\n /** 连续图例滑块宽度 */\n sliderRailWidth: 100,\n /** 连续图例滑块高度 */\n sliderRailHeight: 12,\n /** 连续图例文本颜色 */\n sliderLabelTextFillColor: BLACK_COLORS[45],\n /** 连续图例文本字体大小 */\n sliderLabelTextFontSize: 12,\n /** 连续图例文本行高 */\n sliderLabelTextLineHeight: 12,\n /** 连续图例文本字体粗细 */\n sliderLabelTextFontWeight: 'normal',\n /** 连续图例滑块颜色 */\n sliderHandlerFillColor: BLACK_COLORS[6],\n /** 连续图例滑块宽度 */\n sliderHandlerWidth: 10,\n /** 连续图例滑块高度 */\n sliderHandlerHeight: 14,\n /** 连续图例滑块边框粗细 */\n sliderHandlerBorder: 1,\n /** 连续图例滑块边框颜色 */\n sliderHandlerBorderColor: BLACK_COLORS[25],\n // -------------------- Annotation,图形标注 --------------------\n /** arc 图形标注描边颜色 */\n annotationArcBorderColor: BLACK_COLORS[15],\n /** arc 图形标注粗细 */\n annotationArcBorder: 1,\n /** line 图形标注颜色 */\n annotationLineBorderColor: BLACK_COLORS[25],\n /** line 图形标注粗细 */\n annotationLineBorder: 1,\n /** lube 图形标注的虚线间隔 */\n annotationLineDash: null,\n /** text 图形标注文本颜色 */\n annotationTextFillColor: BLACK_COLORS[65],\n /** text 图形标注文本字体大小 */\n annotationTextFontSize: 12,\n /** text 图形标注文本行高 */\n annotationTextLineHeight: 12,\n /** text 图形标注文本字体粗细 */\n annotationTextFontWeight: 'normal',\n /** text 图形标注文本边框颜色 */\n annotationTextBorderColor: null,\n /** text 图形标注文本边框粗细 */\n annotationTextBorder: 0,\n /** region 图形标注填充颜色 */\n annotationRegionFillColor: BLACK_COLORS[100],\n /** region 图形标注填充颜色透明色 */\n annotationRegionFillOpacity: 0.06,\n /** region 图形标注描边粗细 */\n annotationRegionBorder: 0,\n /** region 图形标注描边颜色 */\n annotationRegionBorderColor: null,\n /** dataMarker 图形标注线的长度 */\n annotationDataMarkerLineLength: 16,\n // -------------------- Tooltip --------------------\n /** tooltip crosshairs 辅助线颜色 */\n tooltipCrosshairsBorderColor: BLACK_COLORS[25],\n /** tooltip crosshairs 辅助线粗细 */\n tooltipCrosshairsBorder: 1,\n /** tooltip crosshairs 辅助线虚线间隔 */\n tooltipCrosshairsLineDash: null,\n /** tooltip 内容框背景色 */\n tooltipContainerFillColor: 'rgb(255, 255, 255)',\n tooltipContainerFillOpacity: 0.95,\n /** tooltip 内容框阴影 */\n tooltipContainerShadow: '0px 0px 10px #aeaeae',\n /** tooltip 内容框圆角 */\n tooltipContainerBorderRadius: 3,\n /** tooltip 文本颜色 */\n tooltipTextFillColor: BLACK_COLORS[65],\n /** tooltip 文本字体大小 */\n tooltipTextFontSize: 12,\n /** tooltip 文本行高 */\n tooltipTextLineHeight: 12,\n /** tooltip 文本字体粗细 */\n tooltipTextFontWeight: 'bold',\n // -------------------- Geometry labels --------------------\n /** Geometry label 文本颜色 */\n labelFillColor: BLACK_COLORS[65],\n labelFillColorDark: '#2c3542',\n labelFillColorLight: '#ffffff',\n /** Geometry label 文本字体大小 */\n labelFontSize: 12,\n /** Geometry label 文本行高 */\n labelLineHeight: 12,\n /** Geometry label 文本字体粗细 */\n labelFontWeight: 'normal',\n /** Geometry label 文本描边颜色 */\n labelBorderColor: null,\n /** Geometry label 文本描边粗细 */\n labelBorder: 0,\n /** Geometry innerLabel 文本颜色 */\n innerLabelFillColor: WHITE_COLORS[100],\n /** Geometry innerLabel 文本字体大小 */\n innerLabelFontSize: 12,\n /** Geometry innerLabel 文本行高 */\n innerLabelLineHeight: 12,\n /** Geometry innerLabel 文本字体粗细 */\n innerLabelFontWeight: 'normal',\n /** Geometry innerLabel 文本描边颜色 */\n innerLabelBorderColor: null,\n /** Geometry innerLabel 文本描边粗细 */\n innerLabelBorder: 0,\n /** Geometry overflowLabel 文本颜色 */\n overflowLabelFillColor: BLACK_COLORS[65],\n /** Geometry overflowLabel 文本字体大小 */\n overflowLabelFontSize: 12,\n /** Geometry overflowLabel 文本行高 */\n overflowLabelLineHeight: 12,\n /** Geometry overflowLabel 文本字体粗细 */\n overflowLabelFontWeight: 'normal',\n /** Geometry overflowLabel 文本描边颜色 */\n overflowLabelBorderColor: WHITE_COLORS[100],\n /** Geometry overflowLabel 文本描边粗细 */\n overflowLabelBorder: 1,\n /** Geometry label 文本连接线粗细 */\n labelLineBorder: 1,\n /** Geometry label 文本连接线颜色 */\n labelLineBorderColor: BLACK_COLORS[25],\n // -------------------- Slider 组件样式--------------------\n /** slider 滑道高度 */\n cSliderRailHieght: 16,\n /** slider 滑道背景色 */\n cSliderBackgroundFillColor: '#416180',\n /** slider 滑道背景色透明度 */\n cSliderBackgroundFillOpacity: 0.05,\n /** slider 滑道前景色 */\n cSliderForegroundFillColor: '#5B8FF9',\n /** slider 滑道前景色透明度 */\n cSliderForegroundFillOpacity: 0.15,\n // slider handlerStyle 手柄样式\n /** slider 手柄高度 */\n cSliderHandlerHeight: 24,\n /** Slider 手柄宽度 */\n cSliderHandlerWidth: 10,\n /** Slider 手柄背景色 */\n cSliderHandlerFillColor: '#F7F7F7',\n /** Slider 手柄背景色透明度 */\n cSliderHandlerFillOpacity: 1,\n /** Slider 手柄高亮背景色 */\n cSliderHandlerHighlightFillColor: '#FFF',\n /** Slider 手柄边框色 */\n cSliderHandlerBorderColor: '#BFBFBF',\n /** Slider 手柄边框粗细 */\n cSliderHandlerBorder: 1,\n /** Slider 手柄边框圆角 */\n cSliderHandlerBorderRadius: 2,\n // slider textStyle 字体标签样式\n /** Slider 字体标签颜色 */\n cSliderTextFillColor: '#000',\n /** Slider 字体标签透明度 */\n cSliderTextFillOpacity: 0.45,\n /** Slider 字体标签大小 */\n cSliderTextFontSize: 12,\n /** Slider 字体标签行高 */\n cSliderTextLineHeight: 12,\n /** Slider 字体标签字重 */\n cSliderTextFontWeight: 'normal',\n /** Slider 字体标签描边色 */\n cSliderTextBorderColor: null,\n /** Slider 字体标签描边粗细 */\n cSliderTextBorder: 0,\n // -------------------- Scrollbar 组件样式--------------------\n /** 滚动条 滚道填充色 */\n scrollbarTrackFillColor: 'rgba(0,0,0,0)',\n /** 滚动条 滑块填充色 */\n scrollbarThumbFillColor: 'rgba(0,0,0,0.15)',\n /** 滚动条 滑块高亮填充色 */\n scrollbarThumbHighlightFillColor: 'rgba(0,0,0,0.2)',\n // -------------------- Geometry 图形样式--------------------\n /** 点图填充颜色 */\n pointFillColor: brandColor,\n /** 点图填充颜色透明度 */\n pointFillOpacity: 0.95,\n /** 点图大小 */\n pointSize: 4,\n /** 点图描边粗细 */\n pointBorder: 1,\n /** 点图描边颜色 */\n pointBorderColor: WHITE_COLORS[100],\n /** 点图描边透明度 */\n pointBorderOpacity: 1,\n /** 点图 active 状态下描边颜色 */\n pointActiveBorderColor: BLACK_COLORS[100],\n /** 点图 selected 状态下描边粗细 */\n pointSelectedBorder: 2,\n /** 点图 selected 状态下描边颜色 */\n pointSelectedBorderColor: BLACK_COLORS[100],\n /** 点图 inactive 状态下填充颜色透明度 */\n pointInactiveFillOpacity: 0.3,\n /** 点图 inactive 状态下描边透明度 */\n pointInactiveBorderOpacity: 0.3,\n /** 空心点图大小 */\n hollowPointSize: 4,\n /** 空心点图描边粗细 */\n hollowPointBorder: 1,\n /** 空心点图描边颜色 */\n hollowPointBorderColor: brandColor,\n /** 空心点图描边透明度 */\n hollowPointBorderOpacity: 0.95,\n hollowPointFillColor: WHITE_COLORS[100],\n /** 空心点图 active 状态下描边粗细 */\n hollowPointActiveBorder: 1,\n /** 空心点图 active 状态下描边颜色 */\n hollowPointActiveBorderColor: BLACK_COLORS[100],\n /** 空心点图 active 状态下描边透明度 */\n hollowPointActiveBorderOpacity: 1,\n /** 空心点图 selected 状态下描边粗细 */\n hollowPointSelectedBorder: 2,\n /** 空心点图 selected 状态下描边颜色 */\n hollowPointSelectedBorderColor: BLACK_COLORS[100],\n /** 空心点图 selected 状态下描边透明度 */\n hollowPointSelectedBorderOpacity: 1,\n /** 空心点图 inactive 状态下描边透明度 */\n hollowPointInactiveBorderOpacity: 0.3,\n /** 线图粗细 */\n lineBorder: 2,\n /** 线图颜色 */\n lineBorderColor: brandColor,\n /** 线图透明度 */\n lineBorderOpacity: 1,\n /** 线图 Active 状态下粗细 */\n lineActiveBorder: 3,\n /** 线图 selected 状态下粗细 */\n lineSelectedBorder: 3,\n /** 线图 inactive 状态下透明度 */\n lineInactiveBorderOpacity: 0.3,\n /** area 填充颜色 */\n areaFillColor: brandColor,\n /** area 填充透明度 */\n areaFillOpacity: 0.25,\n /** area 在 active 状态下的填充透明度 */\n areaActiveFillColor: brandColor,\n areaActiveFillOpacity: 0.5,\n /** area 在 selected 状态下的填充透明度 */\n areaSelectedFillColor: brandColor,\n areaSelectedFillOpacity: 0.5,\n /** area inactive 状态下填充透明度 */\n areaInactiveFillOpacity: 0.3,\n /** hollowArea 颜色 */\n hollowAreaBorderColor: brandColor,\n /** hollowArea 边框粗细 */\n hollowAreaBorder: 2,\n /** hollowArea 边框透明度 */\n hollowAreaBorderOpacity: 1,\n /** hollowArea active 状态下的边框粗细 */\n hollowAreaActiveBorder: 3,\n hollowAreaActiveBorderColor: BLACK_COLORS[100],\n /** hollowArea selected 状态下的边框粗细 */\n hollowAreaSelectedBorder: 3,\n hollowAreaSelectedBorderColor: BLACK_COLORS[100],\n /** hollowArea inactive 状态下的边框透明度 */\n hollowAreaInactiveBorderOpacity: 0.3,\n /** interval 填充颜色 */\n intervalFillColor: brandColor,\n /** interval 填充透明度 */\n intervalFillOpacity: 0.95,\n /** interval active 状态下边框粗细 */\n intervalActiveBorder: 1,\n /** interval active 状态下边框颜色 */\n intervalActiveBorderColor: BLACK_COLORS[100],\n intervalActiveBorderOpacity: 1,\n /** interval selected 状态下边框粗细 */\n intervalSelectedBorder: 2,\n /** interval selected 状态下边框颜色 */\n intervalSelectedBorderColor: BLACK_COLORS[100],\n /** interval selected 状态下边框透明度 */\n intervalSelectedBorderOpacity: 1,\n /** interval inactive 状态下边框透明度 */\n intervalInactiveBorderOpacity: 0.3,\n /** interval inactive 状态下填充透明度 */\n intervalInactiveFillOpacity: 0.3,\n /** interval 边框粗细 */\n hollowIntervalBorder: 2,\n /** hollowInterval 边框颜色 */\n hollowIntervalBorderColor: brandColor,\n /** hollowInterval 边框透明度 */\n hollowIntervalBorderOpacity: 1,\n hollowIntervalFillColor: WHITE_COLORS[100],\n /** hollowInterval active 状态下边框粗细 */\n hollowIntervalActiveBorder: 2,\n /** hollowInterval active 状态下边框颜色 */\n hollowIntervalActiveBorderColor: BLACK_COLORS[100],\n /** hollowInterval selected 状态下边框粗细 */\n hollowIntervalSelectedBorder: 3,\n /** hollowInterval selected 状态下边框颜色 */\n hollowIntervalSelectedBorderColor: BLACK_COLORS[100],\n /** hollowInterval selected 状态下边框透明度 */\n hollowIntervalSelectedBorderOpacity: 1,\n /** hollowInterval inactive 状态下边框透明度 */\n hollowIntervalInactiveBorderOpacity: 0.3\n };\n return __assign(__assign({}, token), cfg);\n};\nexport var antvLight = createLightStyleSheet();","import { __rest } from \"tslib\";\nimport { deepMix } from '@antv/util';\nimport { createThemeByStyleSheet } from './create-by-style-sheet';\nimport { createLightStyleSheet } from '../style-sheet/light';\nexport function createTheme(themeCfg) {\n var _a = themeCfg.styleSheet,\n styleSheetCfg = _a === void 0 ? {} : _a,\n themeObject = __rest(themeCfg, [\"styleSheet\"]);\n // ① 创建样式表 (默认创建 light 的样式表)\n var styleSheet = createLightStyleSheet(styleSheetCfg);\n // ② 创建主题\n return deepMix({}, createThemeByStyleSheet(styleSheet), themeObject);\n}","import { get, lowerCase } from '@antv/util';\nimport { createTheme } from './util';\nvar defaultTheme = createTheme({});\n// 所有已经存在的主题\nvar Themes = {\n default: defaultTheme\n};\n/**\n * 获取主题配置信息。\n * @param theme 主题名\n */\nexport function getTheme(theme) {\n return get(Themes, lowerCase(theme), Themes.default);\n}\n/**\n * 注册新的主题配置信息。\n * @param theme 主题名。\n * @param value 具体的主题配置。\n */\nexport function registerTheme(theme, value) {\n Themes[lowerCase(theme)] = createTheme(value);\n}","import { __assign, __read, __spreadArray, __values } from \"tslib\";\nimport { contains, filter, find, isArray, isEmpty, isFunction, isNil, isNumberEqual, isObject, memoize, get, values } from '@antv/util';\nimport { FIELD_ORIGIN, GROUP_ATTRS } from '../constant';\nimport { getName, inferScaleType } from './scale';\nfunction snapEqual(v1, v2, scale) {\n var value1 = scale.translate(v1);\n var value2 = scale.translate(v2);\n return isNumberEqual(value1, value2);\n}\nfunction getXValueByPoint(point, geometry) {\n var coordinate = geometry.coordinate;\n var xScale = geometry.getXScale();\n var range = xScale.range;\n var rangeMax = range[range.length - 1];\n var rangeMin = range[0];\n var invertPoint = coordinate.invert(point);\n var xValue = invertPoint.x;\n if (coordinate.isPolar && xValue > (1 + rangeMax) / 2) {\n xValue = rangeMin; // 极坐标下,scale 的 range 被做过特殊处理\n }\n\n return xScale.translate(xScale.invert(xValue));\n}\nfunction filterYValue(data, point, geometry) {\n var coordinate = geometry.coordinate;\n var yScale = geometry.getYScale();\n var yField = yScale.field;\n var invertPoint = coordinate.invert(point);\n var yValue = yScale.invert(invertPoint.y);\n var result = find(data, function (obj) {\n var originData = obj[FIELD_ORIGIN];\n return originData[yField][0] <= yValue && originData[yField][1] >= yValue;\n });\n return result || data[data.length - 1];\n}\nvar getXDistance = memoize(function (scale) {\n if (scale.isCategory) {\n return 1;\n }\n var scaleValues = scale.values; // values 是无序的\n var length = scaleValues.length;\n var min = scale.translate(scaleValues[0]);\n var max = min;\n for (var index = 0; index < length; index++) {\n var value = scaleValues[index];\n // 时间类型需要 translate\n var numericValue = scale.translate(value);\n if (numericValue < min) {\n min = numericValue;\n }\n if (numericValue > max) {\n max = numericValue;\n }\n }\n return (max - min) / (length - 1);\n});\n/**\n * 获得 tooltip 的 title\n * @param originData\n * @param geometry\n * @param title\n */\nfunction getTooltipTitle(originData, geometry, title) {\n var positionAttr = geometry.getAttribute('position');\n var fields = positionAttr.getFields();\n var scales = geometry.scales;\n var titleField = isFunction(title) || !title ? fields[0] : title;\n var titleScale = scales[titleField];\n // 如果创建了该字段对应的 scale,则通过 scale.getText() 方式取值,因为用户可能对数据进行了格式化\n // 如果没有对应的 scale,则从原始数据中取值,如果原始数据中仍不存在,则直接放回 title 值\n var tooltipTitle = titleScale ? titleScale.getText(originData[titleField]) : originData[titleField] || titleField;\n return isFunction(title) ? title(tooltipTitle, originData) : tooltipTitle;\n}\nfunction getAttributesForLegend(geometry) {\n var attributes = values(geometry.attributes);\n return filter(attributes, function (attribute) {\n return contains(GROUP_ATTRS, attribute.type);\n });\n}\nfunction getTooltipValueScale(geometry) {\n var e_1, _a;\n var attributes = getAttributesForLegend(geometry);\n var scale;\n try {\n for (var attributes_1 = __values(attributes), attributes_1_1 = attributes_1.next(); !attributes_1_1.done; attributes_1_1 = attributes_1.next()) {\n var attribute = attributes_1_1.value;\n var tmpScale = attribute.getScale(attribute.type);\n if (tmpScale && tmpScale.isLinear) {\n var tmpScaleDef = get(geometry.scaleDefs, tmpScale.field);\n var inferedScaleType = inferScaleType(tmpScale, tmpScaleDef, attribute.type, geometry.type);\n if (inferedScaleType !== 'cat') {\n // 如果指定字段是非 position 的,同时是连续的\n scale = tmpScale;\n break;\n }\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (attributes_1_1 && !attributes_1_1.done && (_a = attributes_1.return)) _a.call(attributes_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n var xScale = geometry.getXScale();\n var yScale = geometry.getYScale();\n return scale || yScale || xScale;\n}\nfunction getTooltipValue(originData, valueScale) {\n var field = valueScale.field;\n var value = originData[field];\n if (isArray(value)) {\n var texts = value.map(function (eachValue) {\n return valueScale.getText(eachValue);\n });\n return texts.join('-');\n }\n return valueScale.getText(value);\n}\n// 根据原始数据获取 tooltip item 中 name 值\nfunction getTooltipName(originData, geometry) {\n var nameScale;\n var groupScales = geometry.getGroupScales();\n if (groupScales.length) {\n // 如果存在分组类型,取第一个分组类型\n nameScale = groupScales[0];\n }\n if (nameScale) {\n var field = nameScale.field;\n return nameScale.getText(originData[field]);\n }\n var valueScale = getTooltipValueScale(geometry);\n return getName(valueScale);\n}\n/**\n * @ignore\n * Finds data from geometry by point\n * @param point canvas point\n * @param data an item of geometry.dataArray\n * @param geometry\n * @returns\n */\nexport function findDataByPoint(point, data, geometry) {\n if (data.length === 0) {\n return null;\n }\n var geometryType = geometry.type;\n var xScale = geometry.getXScale();\n var yScale = geometry.getYScale();\n var xField = xScale.field;\n var yField = yScale.field;\n var rst = null;\n // 热力图采用最小逼近策略查找 point 击中的数据\n if (geometryType === 'heatmap' || geometryType === 'point') {\n // 将 point 画布坐标转换为原始数据值\n var coordinate = geometry.coordinate;\n var invertPoint = coordinate.invert(point); // 转换成归一化的数据\n var x = xScale.invert(invertPoint.x); // 转换为原始值\n var y = yScale.invert(invertPoint.y); // 转换为原始值\n var min = Infinity;\n for (var index = 0; index < data.length; index++) {\n var obj = data[index];\n var originData = obj[FIELD_ORIGIN];\n var range = Math.pow(originData[xField] - x, 2) + Math.pow(originData[yField] - y, 2);\n if (range < min) {\n min = range;\n rst = obj;\n }\n }\n return rst;\n }\n // 其他 Geometry 类型按照 x 字段数据进行查找\n var first = data[0];\n var last = data[data.length - 1];\n var xValue = getXValueByPoint(point, geometry);\n var firstXValue = first[FIELD_ORIGIN][xField];\n var firstYValue = first[FIELD_ORIGIN][yField];\n var lastXValue = last[FIELD_ORIGIN][xField];\n var isYArray = yScale.isLinear && isArray(firstYValue); // 考虑 x 维度相同,y 是数组区间的情况\n // 如果 x 的值是数组\n if (isArray(firstXValue)) {\n for (var index = 0; index < data.length; index++) {\n var record = data[index];\n var originData = record[FIELD_ORIGIN];\n // xValue 在 originData[xField] 的数值区间内\n if (xScale.translate(originData[xField][0]) <= xValue && xScale.translate(originData[xField][1]) >= xValue) {\n if (isYArray) {\n // 层叠直方图场景,x 和 y 都是数组区间\n if (!isArray(rst)) {\n rst = [];\n }\n rst.push(record);\n } else {\n rst = record;\n break;\n }\n }\n }\n if (isArray(rst)) {\n rst = filterYValue(rst, point, geometry);\n }\n } else {\n var next = void 0;\n if (!xScale.isLinear && xScale.type !== 'timeCat') {\n // x 轴对应的数据为非线性以及非时间类型的数据采用遍历查找\n for (var index = 0; index < data.length; index++) {\n var record = data[index];\n var originData = record[FIELD_ORIGIN];\n if (snapEqual(originData[xField], xValue, xScale)) {\n if (isYArray) {\n if (!isArray(rst)) {\n rst = [];\n }\n rst.push(record);\n } else {\n rst = record;\n break;\n }\n } else if (xScale.translate(originData[xField]) <= xValue) {\n last = record;\n next = data[index + 1];\n }\n }\n if (isArray(rst)) {\n rst = filterYValue(rst, point, geometry);\n }\n } else {\n // x 轴对应的数据为线性以及时间类型,进行二分查找,性能更好\n if ((xValue > xScale.translate(lastXValue) || xValue < xScale.translate(firstXValue)) && (xValue > xScale.max || xValue < xScale.min)) {\n // 不在数据范围内\n return null;\n }\n var firstIdx = 0;\n var lastIdx = data.length - 1;\n var middleIdx = void 0;\n while (firstIdx <= lastIdx) {\n middleIdx = Math.floor((firstIdx + lastIdx) / 2);\n var item = data[middleIdx][FIELD_ORIGIN][xField];\n if (snapEqual(item, xValue, xScale)) {\n return data[middleIdx];\n }\n if (xScale.translate(item) <= xScale.translate(xValue)) {\n firstIdx = middleIdx + 1;\n last = data[middleIdx];\n next = data[middleIdx + 1];\n } else {\n if (lastIdx === 0) {\n last = data[0];\n }\n lastIdx = middleIdx - 1;\n }\n }\n }\n if (last && next) {\n // 计算最逼近的\n if (Math.abs(xScale.translate(last[FIELD_ORIGIN][xField]) - xValue) > Math.abs(xScale.translate(next[FIELD_ORIGIN][xField]) - xValue)) {\n last = next;\n }\n }\n }\n var distance = getXDistance(geometry.getXScale()); // 每个分类间的平均间距\n if (!rst && Math.abs(xScale.translate(last[FIELD_ORIGIN][xField]) - xValue) <= distance / 2) {\n rst = last;\n }\n return rst;\n}\n/**\n * @ignore\n * Gets tooltip items\n * @param data\n * @param geometry\n * @param [title]\n * @returns\n */\nexport function getTooltipItems(data, geometry, title, showNil) {\n var e_2, _a;\n if (title === void 0) {\n title = '';\n }\n if (showNil === void 0) {\n showNil = false;\n }\n var originData = data[FIELD_ORIGIN];\n var tooltipTitle = getTooltipTitle(originData, geometry, title);\n var tooltipOption = geometry.tooltipOption;\n var defaultColor = geometry.theme.defaultColor;\n var items = [];\n var name;\n var value;\n function addItem(itemName, itemValue) {\n if (showNil || !isNil(itemValue) && itemValue !== '') {\n // 值为 null的时候,忽视\n var item = {\n title: tooltipTitle,\n data: originData,\n mappingData: data,\n name: itemName,\n value: itemValue,\n color: data.color || defaultColor,\n marker: true\n };\n items.push(item);\n }\n }\n if (isObject(tooltipOption)) {\n var fields = tooltipOption.fields,\n callback = tooltipOption.callback;\n if (callback) {\n // 用户定义了回调函数\n var callbackParams = fields.map(function (field) {\n return data[FIELD_ORIGIN][field];\n });\n var cfg = callback.apply(void 0, __spreadArray([], __read(callbackParams), false));\n var itemCfg = __assign({\n data: data[FIELD_ORIGIN],\n mappingData: data,\n title: tooltipTitle,\n color: data.color || defaultColor,\n marker: true\n }, cfg);\n items.push(itemCfg);\n } else {\n var scales = geometry.scales;\n try {\n for (var fields_1 = __values(fields), fields_1_1 = fields_1.next(); !fields_1_1.done; fields_1_1 = fields_1.next()) {\n var field = fields_1_1.value;\n if (!isNil(originData[field])) {\n // 字段数据为null, undefined 时不显示\n var scale = scales[field];\n name = getName(scale);\n value = scale.getText(originData[field]);\n addItem(name, value);\n }\n }\n } catch (e_2_1) {\n e_2 = {\n error: e_2_1\n };\n } finally {\n try {\n if (fields_1_1 && !fields_1_1.done && (_a = fields_1.return)) _a.call(fields_1);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n }\n } else {\n var valueScale = getTooltipValueScale(geometry);\n // 字段数据为null ,undefined时不显示\n value = getTooltipValue(originData, valueScale);\n name = getTooltipName(originData, geometry);\n addItem(name, value);\n }\n return items;\n}\nfunction getTooltipItemsByFindData(geometry, point, title, tooltipCfg) {\n var e_3, _a;\n var showNil = tooltipCfg.showNil;\n var result = [];\n var dataArray = geometry.dataArray;\n if (!isEmpty(dataArray)) {\n geometry.sort(dataArray); // 先进行排序,便于 tooltip 查找\n try {\n for (var dataArray_1 = __values(dataArray), dataArray_1_1 = dataArray_1.next(); !dataArray_1_1.done; dataArray_1_1 = dataArray_1.next()) {\n var data = dataArray_1_1.value;\n var record = findDataByPoint(point, data, geometry);\n if (record) {\n var elementId = geometry.getElementId(record);\n var element = geometry.elementsMap[elementId];\n if (geometry.type === 'heatmap' || element.visible) {\n // Heatmap 没有 Element\n // 如果图形元素隐藏了,怎不再 tooltip 上展示相关数据\n var items = getTooltipItems(record, geometry, title, showNil);\n if (items.length) {\n result.push(items);\n }\n }\n }\n }\n } catch (e_3_1) {\n e_3 = {\n error: e_3_1\n };\n } finally {\n try {\n if (dataArray_1_1 && !dataArray_1_1.done && (_a = dataArray_1.return)) _a.call(dataArray_1);\n } finally {\n if (e_3) throw e_3.error;\n }\n }\n }\n return result;\n}\nfunction getTooltipItemsByHitShape(geometry, point, title, tooltipCfg) {\n var showNil = tooltipCfg.showNil;\n var result = [];\n var container = geometry.container;\n var shape = container.getShape(point.x, point.y);\n if (shape && shape.get('visible') && shape.get('origin')) {\n var mappingData = shape.get('origin').mappingData;\n var items = getTooltipItems(mappingData, geometry, title, showNil);\n if (items.length) {\n result.push(items);\n }\n }\n return result;\n}\n/**\n * 不进行递归查找\n */\nexport function findItemsFromView(view, point, tooltipCfg) {\n var e_4, _a;\n var result = [];\n // 先从 view 本身查找\n var geometries = view.geometries;\n var shared = tooltipCfg.shared,\n title = tooltipCfg.title,\n reversed = tooltipCfg.reversed;\n try {\n for (var geometries_1 = __values(geometries), geometries_1_1 = geometries_1.next(); !geometries_1_1.done; geometries_1_1 = geometries_1.next()) {\n var geometry = geometries_1_1.value;\n if (geometry.visible && geometry.tooltipOption !== false) {\n // geometry 可见同时未关闭 tooltip\n var geometryType = geometry.type;\n var tooltipItems = void 0;\n if (['point', 'edge', 'polygon'].includes(geometryType)) {\n // 始终通过图形拾取\n tooltipItems = getTooltipItemsByHitShape(geometry, point, title, tooltipCfg);\n } else if (['area', 'line', 'path', 'heatmap'].includes(geometryType)) {\n // 如果是 'area', 'line', 'path',始终通过数据查找方法查找 tooltip\n tooltipItems = getTooltipItemsByFindData(geometry, point, title, tooltipCfg);\n } else {\n if (shared !== false) {\n tooltipItems = getTooltipItemsByFindData(geometry, point, title, tooltipCfg);\n } else {\n tooltipItems = getTooltipItemsByHitShape(geometry, point, title, tooltipCfg);\n }\n }\n if (tooltipItems.length) {\n if (reversed) {\n tooltipItems.reverse();\n }\n // geometry 有可能会有多个 item,因为用户可以设置 geometry.tooltip('x*y*z')\n result.push(tooltipItems);\n }\n }\n }\n } catch (e_4_1) {\n e_4 = {\n error: e_4_1\n };\n } finally {\n try {\n if (geometries_1_1 && !geometries_1_1.done && (_a = geometries_1.return)) _a.call(geometries_1);\n } finally {\n if (e_4) throw e_4.error;\n }\n }\n return result;\n}\nexport function findItemsFromViewRecurisive(view, point, tooltipCfg) {\n var e_5, _a;\n var result = findItemsFromView(view, point, tooltipCfg);\n try {\n // 递归查找,并合并结果\n for (var _b = __values(view.views), _c = _b.next(); !_c.done; _c = _b.next()) {\n var childView = _c.value;\n result = result.concat(findItemsFromView(childView, point, tooltipCfg));\n }\n } catch (e_5_1) {\n e_5 = {\n error: e_5_1\n };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_5) throw e_5.error;\n }\n }\n return result;\n}","import { __read, __spreadArray } from \"tslib\";\nimport { isArray, isNumber } from '@antv/util';\n/**\n * @ignore\n * 是否是自动 padding\n * @param padding\n */\nexport function isAutoPadding(padding) {\n return !isNumber(padding) && !isArray(padding);\n}\n/**\n * @ignore\n * padding 的解析逻辑\n * @param padding\n * @return [ top, right, bottom, left ]\n */\nexport function parsePadding(padding) {\n if (padding === void 0) {\n padding = 0;\n }\n var paddingArray = isArray(padding) ? padding : [padding];\n switch (paddingArray.length) {\n case 0:\n paddingArray = [0, 0, 0, 0];\n break;\n case 1:\n paddingArray = new Array(4).fill(paddingArray[0]);\n break;\n case 2:\n paddingArray = __spreadArray(__spreadArray([], __read(paddingArray), false), __read(paddingArray), false);\n break;\n case 3:\n paddingArray = __spreadArray(__spreadArray([], __read(paddingArray), false), [paddingArray[1]], false);\n break;\n default:\n // 其他情况,只去四个\n paddingArray = paddingArray.slice(0, 4);\n break;\n }\n return paddingArray;\n}","var LOAD_COMPONENT_CONTROLLERS = {};\n/**\n * 全局注册组件。\n * @param name 组件名称\n * @param plugin 注册的组件类\n * @returns void\n */\nexport function registerComponentController(name, plugin) {\n LOAD_COMPONENT_CONTROLLERS[name] = plugin;\n}\n/**\n * 删除全局组件。\n * @param name 组件名\n * @returns void\n */\nexport function unregisterComponentController(name) {\n delete LOAD_COMPONENT_CONTROLLERS[name];\n}\n/**\n * 获取以注册的组件名。\n * @returns string[] 返回已注册的组件名称\n */\nexport function getComponentControllerNames() {\n return Object.keys(LOAD_COMPONENT_CONTROLLERS);\n}\n/**\n * 根据组件名获取组件类。\n * @param name 组件名\n * @returns 返回组件类\n */\nexport function getComponentController(name) {\n return LOAD_COMPONENT_CONTROLLERS[name];\n}","import { __assign, __read, __spreadArray } from \"tslib\";\nimport { each, isNil, some } from '@antv/util';\nimport { getCoordinate } from '../../dependents';\n/**\n * coordinate controller,职责:\n * 1. 创建实例\n * 2. 暂存配置\n */\nvar CoordinateController = /** @class */function () {\n function CoordinateController(option) {\n // 设置默认值,并存储配置\n this.option = this.wrapperOption(option);\n }\n /**\n * 更新配置\n * @param option\n */\n CoordinateController.prototype.update = function (option) {\n this.option = this.wrapperOption(option);\n return this;\n };\n /**\n * 是否存在某一个 action\n * @param actionName\n */\n CoordinateController.prototype.hasAction = function (actionName) {\n var actions = this.option.actions;\n return some(actions, function (action) {\n return action[0] === actionName;\n });\n };\n /**\n * 创建坐标系对象\n * @param start 起始位置\n * @param end 结束位置\n * @return 坐标系实例\n */\n CoordinateController.prototype.create = function (start, end) {\n var _a = this.option,\n type = _a.type,\n cfg = _a.cfg;\n var isTheta = type === 'theta';\n // 1. 起始位置\n var props = __assign({\n start: start,\n end: end\n }, cfg);\n // 2. 创建实例\n var C = getCoordinate(isTheta ? 'polar' : type);\n this.coordinate = new C(props);\n // @ts-ignore FIXME coordinate 包问题导致 type 不正确\n this.coordinate.type = type;\n // 3. 添加默认 action\n if (isTheta) {\n // 不存在 transpose,为其自动设置一个 action\n if (!this.hasAction('transpose')) {\n this.transpose();\n }\n }\n // 4. 执行 action\n this.execActions();\n return this.coordinate;\n };\n /**\n * 更新坐标系对象\n * @param start 起始位置\n * @param end 结束位置\n * @return 坐标系实例\n */\n CoordinateController.prototype.adjust = function (start, end) {\n this.coordinate.update({\n start: start,\n end: end\n });\n // 更新坐标系大小的时候,需要:\n // 1. 重置 matrix\n // 2. 重新执行作用于 matrix 的 action\n this.coordinate.resetMatrix();\n this.execActions(['scale', 'rotate', 'translate']);\n return this.coordinate;\n };\n /**\n * 旋转弧度\n * @param angle\n */\n CoordinateController.prototype.rotate = function (angle) {\n this.option.actions.push(['rotate', angle]);\n return this;\n };\n /**\n * 镜像\n * @param dim\n */\n CoordinateController.prototype.reflect = function (dim) {\n this.option.actions.push(['reflect', dim]);\n return this;\n };\n /**\n * scale\n * @param sx\n * @param sy\n */\n CoordinateController.prototype.scale = function (sx, sy) {\n this.option.actions.push(['scale', sx, sy]);\n return this;\n };\n /**\n * 对角变换\n */\n CoordinateController.prototype.transpose = function () {\n this.option.actions.push(['transpose']);\n return this;\n };\n /**\n * 获取配置\n */\n CoordinateController.prototype.getOption = function () {\n return this.option;\n };\n /**\n * 获得 coordinate 实例\n */\n CoordinateController.prototype.getCoordinate = function () {\n return this.coordinate;\n };\n /**\n * 包装配置的默认值\n * @param option\n */\n CoordinateController.prototype.wrapperOption = function (option) {\n return __assign({\n type: 'rect',\n actions: [],\n cfg: {}\n }, option);\n };\n /**\n * coordinate 实例执行 actions\n * @params includeActions 如果没有指定,则执行全部,否则,执行指定的 action\n */\n CoordinateController.prototype.execActions = function (includeActions) {\n var _this = this;\n var actions = this.option.actions;\n each(actions, function (action) {\n var _a;\n var _b = __read(action),\n actionName = _b[0],\n args = _b.slice(1);\n var shouldExec = isNil(includeActions) ? true : includeActions.includes(actionName);\n if (shouldExec) {\n (_a = _this.coordinate)[actionName].apply(_a, __spreadArray([], __read(args), false));\n }\n });\n };\n return CoordinateController;\n}();\nexport default CoordinateController;","import { Event as GEvent } from '../dependents';\n/**\n * @todo Whether it can(or necessary to) keep consistent with the structure of G.Event or directly use the structure of G.Event\n * G2 事件的事件包装类,基于 G.Event\n */\nvar Event = /** @class */function () {\n function Event(view, gEvent, data) {\n this.view = view;\n this.gEvent = gEvent;\n this.data = data;\n this.type = gEvent.type;\n }\n /**\n * 非交互产生的事件\n * @param view\n * @param type\n * @param data\n */\n Event.fromData = function (view, type, data) {\n return new Event(view, new GEvent(type, {}), data);\n };\n Object.defineProperty(Event.prototype, \"target\", {\n // below props are proxy props of G.event convenient\n /** the real trigger shape of the event */\n get: function get() {\n // @todo G 中事件定义为 object 不正确,这里先 ignore\n // @ts-ignore\n return this.gEvent.target;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Event.prototype, \"event\", {\n /** 获取对应的 dom 原生时间 */\n get: function get() {\n return this.gEvent.originalEvent;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Event.prototype, \"x\", {\n /** x 画布坐标 */\n get: function get() {\n return this.gEvent.x;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Event.prototype, \"y\", {\n /** y 画布坐标 */\n get: function get() {\n return this.gEvent.y;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Event.prototype, \"clientX\", {\n /** x 窗口坐标 */\n get: function get() {\n return this.gEvent.clientX;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Event.prototype, \"clientY\", {\n /** y 窗口坐标 */\n get: function get() {\n return this.gEvent.clientY;\n },\n enumerable: false,\n configurable: true\n });\n // end for proxy events\n /**\n * event string\n * @returns string\n */\n Event.prototype.toString = function () {\n return \"[Event (type=\".concat(this.type, \")]\");\n };\n /**\n * clone a new event with same attributes\n * @returns [[Event]]\n */\n Event.prototype.clone = function () {\n return new Event(this.view, this.gEvent, this.data);\n };\n return Event;\n}();\nexport default Event;","/**\n * @ignore\n * G2 默认提供的 layout 函数\n * 内置布局函数处理的逻辑:\n *\n * 1. 如果 padding = 'auto',那么自动根据组件的 direction 来计算 padding 数组\n * 2. 根据 padding 和 direction 去分配对应方向的 padding 数值\n * 3. 移动组件位置\n *\n * 前面 1,2 步骤在 view 中已经做掉了。对于组件响应式布局,可以尝试使用约束布局的方式去求解位置信息。\n * @param view\n */\nexport default function defaultLayout(view) {\n var axis = view.getController('axis');\n var legend = view.getController('legend');\n var annotation = view.getController('annotation');\n var slider = view.getController('slider');\n var scrollbar = view.getController('scrollbar');\n // 根据最新的 coordinate 重新布局组件\n [axis, slider, scrollbar, legend, annotation].forEach(function (controller) {\n if (controller) {\n controller.layout();\n }\n });\n}","/**\n * view 中缓存 scale 的类\n */\nimport { deepMix, each, get, isNumber, last } from '@antv/util';\nimport { createScaleByField, syncScale, getDefaultCategoryScaleRange } from '../../util/scale';\n/** @ignore */\nvar ScalePool = /** @class */function () {\n function ScalePool() {\n /** 所有的 scales */\n this.scales = new Map();\n /** 需要同步的 scale 分组, key: scaleKeyArray */\n this.syncScales = new Map();\n }\n /**\n * 创建 scale\n * @param field\n * @param data\n * @param scaleDef\n * @param key\n */\n ScalePool.prototype.createScale = function (field, data, scaleDef, key) {\n var finalScaleDef = scaleDef;\n var cacheScaleMeta = this.getScaleMeta(key);\n if (data.length === 0 && cacheScaleMeta) {\n // 在更新过程中数据变为空,同时 key 对应的 scale 已存在则保持 scale 同类型\n var cacheScale = cacheScaleMeta.scale;\n var cacheScaleDef = {\n type: cacheScale.type\n };\n if (cacheScale.isCategory) {\n // 如果是分类类型,保持 values\n cacheScaleDef.values = cacheScale.values;\n }\n finalScaleDef = deepMix(cacheScaleDef, cacheScaleMeta.scaleDef, scaleDef);\n }\n var scale = createScaleByField(field, data, finalScaleDef);\n // 缓存起来\n this.cacheScale(scale, scaleDef, key);\n return scale;\n };\n /**\n * 同步 scale\n */\n ScalePool.prototype.sync = function (coordinate, theme) {\n var _this = this;\n // 对于 syncScales 中每一个 syncKey 下面的 scale 数组进行同步处理\n this.syncScales.forEach(function (scaleKeys, syncKey) {\n // min, max, values, ranges\n var min = Number.MAX_SAFE_INTEGER;\n var max = Number.MIN_SAFE_INTEGER;\n var values = [];\n // 1. 遍历求得最大最小值,values 等\n each(scaleKeys, function (key) {\n var scale = _this.getScale(key);\n max = isNumber(scale.max) ? Math.max(max, scale.max) : max;\n min = isNumber(scale.min) ? Math.min(min, scale.min) : min;\n // 去重\n each(scale.values, function (v) {\n if (!values.includes(v)) {\n values.push(v);\n }\n });\n });\n // 2. 同步\n each(scaleKeys, function (key) {\n var scale = _this.getScale(key);\n if (scale.isContinuous) {\n scale.change({\n min: min,\n max: max,\n values: values\n });\n } else if (scale.isCategory) {\n var range = scale.range;\n var cacheScaleMeta = _this.getScaleMeta(key);\n // 存在 value 值,且用户没有配置 range 配置 to fix https://github.com/antvis/G2/issues/2996\n if (values && !get(cacheScaleMeta, ['scaleDef', 'range'])) {\n // 更新 range\n range = getDefaultCategoryScaleRange(deepMix({}, scale, {\n values: values\n }), coordinate, theme);\n }\n scale.change({\n values: values,\n range: range\n });\n }\n });\n });\n };\n /**\n * 缓存一个 scale\n * @param scale\n * @param scaleDef\n * @param key\n */\n ScalePool.prototype.cacheScale = function (scale, scaleDef, key) {\n // 1. 缓存到 scales\n var sm = this.getScaleMeta(key);\n // 存在则更新,同时检测类型是否一致\n if (sm && sm.scale.type === scale.type) {\n syncScale(sm.scale, scale);\n sm.scaleDef = scaleDef;\n // 更新 scaleDef\n } else {\n sm = {\n key: key,\n scale: scale,\n scaleDef: scaleDef\n };\n this.scales.set(key, sm);\n }\n // 2. 缓存到 syncScales,构造 Record 数据结构\n var syncKey = this.getSyncKey(sm);\n sm.syncKey = syncKey; // 设置 sync 同步的 key\n // 因为存在更新 scale 机制,所以在缓存之前,先从原 syncScales 中去除 sync 的缓存引用\n this.removeFromSyncScales(key);\n // 存在 sync 标记才进行 sync\n if (syncKey) {\n // 不存在这个 syncKey,则创建一个空数组\n var scaleKeys = this.syncScales.get(syncKey);\n if (!scaleKeys) {\n scaleKeys = [];\n this.syncScales.set(syncKey, scaleKeys);\n }\n scaleKeys.push(key);\n }\n };\n /**\n * 通过 key 获取 scale\n * @param key\n */\n ScalePool.prototype.getScale = function (key) {\n var scaleMeta = this.getScaleMeta(key);\n if (!scaleMeta) {\n var field = last(key.split('-'));\n var scaleKeys = this.syncScales.get(field);\n if (scaleKeys && scaleKeys.length) {\n scaleMeta = this.getScaleMeta(scaleKeys[0]);\n }\n }\n return scaleMeta && scaleMeta.scale;\n };\n /**\n * 在 view 销毁的时候,删除 scale 实例,防止内存泄露\n * @param key\n */\n ScalePool.prototype.deleteScale = function (key) {\n var scaleMeta = this.getScaleMeta(key);\n if (scaleMeta) {\n var syncKey = scaleMeta.syncKey;\n var scaleKeys = this.syncScales.get(syncKey);\n // 移除同步的关系\n if (scaleKeys && scaleKeys.length) {\n var idx = scaleKeys.indexOf(key);\n if (idx !== -1) {\n scaleKeys.splice(idx, 1);\n }\n }\n }\n // 删除 scale 实例\n this.scales.delete(key);\n };\n /**\n * 清空\n */\n ScalePool.prototype.clear = function () {\n this.scales.clear();\n this.syncScales.clear();\n };\n /**\n * 删除 sync scale 引用\n * @param key\n */\n ScalePool.prototype.removeFromSyncScales = function (key) {\n var _this = this;\n this.syncScales.forEach(function (scaleKeys, syncKey) {\n var idx = scaleKeys.indexOf(key);\n if (idx !== -1) {\n scaleKeys.splice(idx, 1);\n // 删除空数组值\n if (scaleKeys.length === 0) {\n _this.syncScales.delete(syncKey);\n }\n return false; // 跳出循环\n }\n });\n };\n /**\n * get sync key\n * @param sm\n */\n ScalePool.prototype.getSyncKey = function (sm) {\n var scale = sm.scale,\n scaleDef = sm.scaleDef;\n var field = scale.field;\n var sync = get(scaleDef, ['sync']);\n // 如果 sync = true,则直接使用字段名作为 syncKey\n return sync === true ? field : sync === false ? undefined : sync;\n };\n /**\n * 通过 key 获取 scale\n * @param key\n */\n ScalePool.prototype.getScaleMeta = function (key) {\n return this.scales.get(key);\n };\n return ScalePool;\n}();\nexport { ScalePool };","import { __read, __spreadArray } from \"tslib\";\nimport { DIRECTION } from '../../constant';\n/** @ignore */\nvar PaddingCal = /** @class */function () {\n /**\n * 初始的 padding 数据\n * @param top\n * @param right\n * @param bottom\n * @param left\n */\n function PaddingCal(top, right, bottom, left) {\n if (top === void 0) {\n top = 0;\n }\n if (right === void 0) {\n right = 0;\n }\n if (bottom === void 0) {\n bottom = 0;\n }\n if (left === void 0) {\n left = 0;\n }\n this.top = top;\n this.right = right;\n this.bottom = bottom;\n this.left = left;\n }\n /**\n * 使用静态方法创建一个\n * @param top\n * @param right\n * @param bottom\n * @param left\n */\n PaddingCal.instance = function (top, right, bottom, left) {\n if (top === void 0) {\n top = 0;\n }\n if (right === void 0) {\n right = 0;\n }\n if (bottom === void 0) {\n bottom = 0;\n }\n if (left === void 0) {\n left = 0;\n }\n return new PaddingCal(top, right, bottom, left);\n };\n /**\n * 取最大区间\n * @param padding\n */\n PaddingCal.prototype.max = function (padding) {\n var _a = __read(padding, 4),\n top = _a[0],\n right = _a[1],\n bottom = _a[2],\n left = _a[3];\n this.top = Math.max(this.top, top);\n this.right = Math.max(this.right, right);\n this.bottom = Math.max(this.bottom, bottom);\n this.left = Math.max(this.left, left);\n return this;\n };\n /**\n * 四周增加 padding\n * @param padding\n */\n PaddingCal.prototype.shrink = function (padding) {\n var _a = __read(padding, 4),\n top = _a[0],\n right = _a[1],\n bottom = _a[2],\n left = _a[3];\n this.top += top;\n this.right += right;\n this.bottom += bottom;\n this.left += left;\n return this;\n };\n /**\n * 在某一个方向增加 padding\n * @param bbox\n * @param direction\n */\n PaddingCal.prototype.inc = function (bbox, direction) {\n var width = bbox.width,\n height = bbox.height;\n switch (direction) {\n case DIRECTION.TOP:\n case DIRECTION.TOP_LEFT:\n case DIRECTION.TOP_RIGHT:\n this.top += height;\n break;\n case DIRECTION.RIGHT:\n case DIRECTION.RIGHT_TOP:\n case DIRECTION.RIGHT_BOTTOM:\n this.right += width;\n break;\n case DIRECTION.BOTTOM:\n case DIRECTION.BOTTOM_LEFT:\n case DIRECTION.BOTTOM_RIGHT:\n this.bottom += height;\n break;\n case DIRECTION.LEFT:\n case DIRECTION.LEFT_TOP:\n case DIRECTION.LEFT_BOTTOM:\n this.left += width;\n break;\n default:\n break;\n }\n return this;\n };\n /**\n * 获得最终的 padding\n */\n PaddingCal.prototype.getPadding = function () {\n return [this.top, this.right, this.bottom, this.left];\n };\n /**\n * clone 一个 padding cal\n */\n PaddingCal.prototype.clone = function () {\n return new (PaddingCal.bind.apply(PaddingCal, __spreadArray([void 0], __read(this.getPadding()), false)))();\n };\n return PaddingCal;\n}();\nexport { PaddingCal };","import { __read, __spreadArray } from \"tslib\";\nimport { each } from '@antv/util';\nimport { COMPONENT_TYPE } from '../../constant';\nimport { BBox } from '../../util/bbox';\nimport { isAutoPadding, parsePadding } from '../../util/padding';\nimport { PaddingCal } from './padding-cal';\n/**\n * @ignore\n * 根据 view 中的组件,计算实际的 padding 数值\n * @param view\n */\nexport function calculatePadding(view) {\n var padding = view.padding;\n // 如果不是 auto padding,那么直接解析之后返回\n if (!isAutoPadding(padding)) {\n return new (PaddingCal.bind.apply(PaddingCal, __spreadArray([void 0], __read(parsePadding(padding)), false)))();\n }\n // 是 auto padding,根据组件的情况,来计算 padding\n var viewBBox = view.viewBBox;\n var paddingCal = new PaddingCal();\n var axisComponents = [];\n var paddingComponents = [];\n var otherComponents = [];\n each(view.getComponents(), function (co) {\n var type = co.type;\n if (type === COMPONENT_TYPE.AXIS) {\n axisComponents.push(co);\n } else if ([COMPONENT_TYPE.LEGEND, COMPONENT_TYPE.SLIDER, COMPONENT_TYPE.SCROLLBAR].includes(type)) {\n paddingComponents.push(co);\n } else if (type !== COMPONENT_TYPE.GRID && type !== COMPONENT_TYPE.TOOLTIP) {\n otherComponents.push(co);\n }\n });\n // 进行坐标轴布局,应该是取 padding 的并集,而不是进行相加\n each(axisComponents, function (co) {\n var component = co.component;\n var bboxObject = component.getLayoutBBox();\n var componentBBox = new BBox(bboxObject.x, bboxObject.y, bboxObject.width, bboxObject.height);\n var exceed = componentBBox.exceed(viewBBox);\n // 在对组件分组之后,先对 axis 进行处理,然后取最大的超出即可。\n paddingCal.max(exceed);\n });\n // 有 padding 的组件布局\n each(paddingComponents, function (co) {\n var component = co.component,\n direction = co.direction;\n var bboxObject = component.getLayoutBBox();\n var componentPadding = component.get('padding');\n var componentBBox = new BBox(bboxObject.x, bboxObject.y, bboxObject.width, bboxObject.height).expand(componentPadding);\n // 按照方向计算 padding\n paddingCal.inc(componentBBox, direction);\n });\n // 其他组件布局\n each(otherComponents, function (co) {\n var component = co.component,\n direction = co.direction;\n var bboxObject = component.getLayoutBBox();\n var componentBBox = new BBox(bboxObject.x, bboxObject.y, bboxObject.width, bboxObject.height);\n // 按照方向计算 padding\n paddingCal.inc(componentBBox, direction);\n });\n return paddingCal;\n}","/**\n * 默认的 syncViewPadding 逻辑\n * @param chart\n * @param views\n * @param PC: PaddingCalCtor\n */\nexport function defaultSyncViewPadding(chart, views, PC) {\n var syncPadding = PC.instance();\n // 所有的 view 的 autoPadding 指向同一个引用\n views.forEach(function (v) {\n v.autoPadding = syncPadding.max(v.autoPadding.getPadding());\n });\n}","import { __assign, __extends, __read, __rest, __spreadArray } from \"tslib\";\nimport { clone, deepMix, each, filter, find, flatten, get, isBoolean, isFunction, isNil, isObject, isString, isUndefined, mix, remove, set, size, uniqueId, isEqual, isPlainObject, reduce } from '@antv/util';\nimport { GROUP_Z_INDEX, LAYER, PLOT_EVENTS, VIEW_LIFE_CIRCLE } from '../constant';\nimport Base from '../base';\nimport { getFacet } from '../facet';\nimport { createInteraction } from '../interaction';\nimport { getTheme } from '../theme';\nimport { BBox } from '../util/bbox';\nimport { getCoordinateClipCfg, isPointInCoordinate } from '../util/coordinate';\nimport { uniq } from '../util/helper';\nimport { findDataByPoint } from '../util/tooltip';\nimport { parsePadding } from '../util/padding';\nimport { getDefaultCategoryScaleRange } from '../util/scale';\nimport { createTheme } from '../theme/util';\nimport { getComponentController, getComponentControllerNames } from './controller';\nimport CoordinateController from './controller/coordinate';\nimport Event from './event';\nimport defaultLayout from './layout';\nimport { ScalePool } from './util/scale-pool';\nimport { PaddingCal } from './layout/padding-cal';\nimport { calculatePadding } from './layout/auto';\nimport { defaultSyncViewPadding } from './util/sync-view-padding';\n/**\n * G2 视图 View 类\n */\nvar View = /** @class */function (_super) {\n __extends(View, _super);\n function View(props) {\n var _this = _super.call(this, {\n visible: props.visible\n }) || this;\n /** 所有的子 view。 */\n _this.views = [];\n /** 所有的 geometry 实例。 */\n _this.geometries = [];\n /** 所有的组件 controllers。 */\n _this.controllers = [];\n /** 所有的 Interaction 实例。 */\n _this.interactions = {};\n /** 是否对超出坐标系范围的 Geometry 进行剪切 */\n _this.limitInPlot = false;\n // 配置信息存储\n _this.options = {\n data: [],\n animate: true // 默认开启动画\n }; // 初始化为空\n /** 配置开启的组件插件,默认为全局配置的组件。 */\n _this.usedControllers = getComponentControllerNames();\n /** 所有的 scales */\n _this.scalePool = new ScalePool();\n /** 布局函数 */\n _this.layoutFunc = defaultLayout;\n /** 当前鼠标是否在 plot 内(CoordinateBBox) */\n _this.isPreMouseInPlot = false;\n /** 默认标识位,用于判定数据是否更新 */\n _this.isDataChanged = false;\n /** 用于判断坐标系范围是否发生变化的标志位 */\n _this.isCoordinateChanged = false;\n /** 从当前这个 view 创建的 scale key */\n _this.createdScaleKeys = new Map();\n _this.onCanvasEvent = function (evt) {\n var name = evt.name;\n if (!name.includes(':')) {\n // 非委托事件\n var e = _this.createViewEvent(evt);\n // 处理 plot 事件\n _this.doPlotEvent(e);\n _this.emit(name, e);\n }\n };\n /**\n * 触发事件之后\n * @param evt\n */\n _this.onDelegateEvents = function (evt) {\n // 阻止继续冒泡,防止重复事件触发\n // evt.preventDefault();\n var name = evt.name;\n if (!name.includes(':')) {\n return;\n }\n // 事件在 view 嵌套中冒泡(暂不提供阻止冒泡的机制)\n var e = _this.createViewEvent(evt);\n // 包含有基本事件、组合事件\n _this.emit(name, e);\n // const currentTarget = evt.currentTarget as IShape;\n // const inheritNames = currentTarget.get('inheritNames');\n // if (evt.delegateObject || inheritNames) {\n // const events = this.getEvents();\n // each(inheritNames, (subName) => {\n // const eventName = `${subName}:${type}`;\n // if (events[eventName]) {\n // this.emit(eventName, e);\n // }\n // });\n // }\n };\n\n var _a = props.id,\n id = _a === void 0 ? uniqueId('view') : _a,\n parent = props.parent,\n canvas = props.canvas,\n backgroundGroup = props.backgroundGroup,\n middleGroup = props.middleGroup,\n foregroundGroup = props.foregroundGroup,\n _b = props.region,\n region = _b === void 0 ? {\n start: {\n x: 0,\n y: 0\n },\n end: {\n x: 1,\n y: 1\n }\n } : _b,\n padding = props.padding,\n appendPadding = props.appendPadding,\n theme = props.theme,\n options = props.options,\n limitInPlot = props.limitInPlot,\n syncViewPadding = props.syncViewPadding;\n _this.parent = parent;\n _this.canvas = canvas;\n _this.backgroundGroup = backgroundGroup;\n _this.middleGroup = middleGroup;\n _this.foregroundGroup = foregroundGroup;\n _this.region = region;\n _this.padding = padding;\n _this.appendPadding = appendPadding;\n // 接受父 view 传入的参数\n _this.options = __assign(__assign({}, _this.options), options);\n _this.limitInPlot = limitInPlot;\n _this.id = id;\n _this.syncViewPadding = syncViewPadding;\n // 初始化 theme\n _this.themeObject = isObject(theme) ? deepMix({}, getTheme('default'), createTheme(theme)) : getTheme(theme);\n _this.init();\n return _this;\n }\n /**\n * 设置 layout 布局函数\n * @param layout 布局函数\n * @returns void\n */\n View.prototype.setLayout = function (layout) {\n this.layoutFunc = layout;\n };\n /**\n * 生命周期:初始化\n * @returns voids\n */\n View.prototype.init = function () {\n // 计算画布的 viewBBox\n this.calculateViewBBox();\n // 事件委托机制\n this.initEvents();\n // 初始化组件 controller\n this.initComponentController();\n this.initOptions();\n };\n /**\n * 生命周期:渲染流程,渲染过程需要处理数据更新的情况。\n * render 函数仅仅会处理 view 和子 view。\n * @param isUpdate 是否触发更新流程。\n * @param params render 事件参数\n */\n View.prototype.render = function (isUpdate, payload) {\n if (isUpdate === void 0) {\n isUpdate = false;\n }\n this.emit(VIEW_LIFE_CIRCLE.BEFORE_RENDER, Event.fromData(this, VIEW_LIFE_CIRCLE.BEFORE_RENDER, payload));\n // 递归渲染\n this.paint(isUpdate);\n this.emit(VIEW_LIFE_CIRCLE.AFTER_RENDER, Event.fromData(this, VIEW_LIFE_CIRCLE.AFTER_RENDER, payload));\n if (this.visible === false) {\n // 用户在初始化的时候声明 visible: false\n this.changeVisible(false);\n }\n };\n /**\n * 生命周期:清空图表上所有的绘制内容,但是不销毁图表,chart 仍可使用。\n * @returns void\n */\n View.prototype.clear = function () {\n var _this = this;\n this.emit(VIEW_LIFE_CIRCLE.BEFORE_CLEAR);\n // 1. 清空缓存和计算数据\n this.filteredData = [];\n this.coordinateInstance = undefined;\n this.isDataChanged = false; // 复位\n this.isCoordinateChanged = false; // 复位\n // 2. 清空 geometries\n var geometries = this.geometries;\n for (var i = 0; i < geometries.length; i++) {\n geometries[i].clear();\n // view 中使用 geometry 的时候,还需要清空它的容器,不然下一次 chart.geometry() 的时候,又创建了一个,导致泄露, #2799。\n geometries[i].container.remove(true);\n geometries[i].labelsContainer.remove(true);\n }\n this.geometries = [];\n // 3. 清空 controllers\n var controllers = this.controllers;\n for (var i = 0; i < controllers.length; i++) {\n if (controllers[i].name === 'annotation') {\n // 需要清空配置项\n controllers[i].clear(true);\n } else {\n controllers[i].clear();\n }\n }\n // 4. 删除 scale 缓存\n this.createdScaleKeys.forEach(function (v, k) {\n _this.getRootView().scalePool.deleteScale(k);\n });\n this.createdScaleKeys.clear();\n // 递归处理子 view\n var views = this.views;\n for (var i = 0; i < views.length; i++) {\n views[i].clear();\n }\n this.emit(VIEW_LIFE_CIRCLE.AFTER_CLEAR);\n };\n /**\n * 生命周期:销毁,完全无法使用。\n * @returns void\n */\n View.prototype.destroy = function () {\n // 销毁前事件,销毁之后已经没有意义了,所以不抛出事件\n this.emit(VIEW_LIFE_CIRCLE.BEFORE_DESTROY);\n var interactions = this.interactions;\n // 销毁 interactions\n each(interactions, function (interaction) {\n if (interaction) {\n // 有可能已经销毁,设置了 undefined\n interaction.destroy();\n }\n });\n this.clear();\n // 销毁 controller 中的组件\n var controllers = this.controllers;\n for (var i = 0, len = controllers.length; i < len; i++) {\n var controller = controllers[i];\n controller.destroy();\n }\n this.backgroundGroup.remove(true);\n this.middleGroup.remove(true);\n this.foregroundGroup.remove(true);\n _super.prototype.destroy.call(this);\n };\n /* end 生命周期函数 */\n /**\n * 显示或者隐藏整个 view。\n * @param visible 是否可见\n * @returns View\n */\n View.prototype.changeVisible = function (visible) {\n _super.prototype.changeVisible.call(this, visible);\n var geometries = this.geometries;\n for (var i = 0, len = geometries.length; i < len; i++) {\n var geometry = geometries[i];\n geometry.changeVisible(visible);\n }\n var controllers = this.controllers;\n for (var i = 0, len = controllers.length; i < len; i++) {\n var controller = controllers[i];\n controller.changeVisible(visible);\n }\n this.foregroundGroup.set('visible', visible);\n this.middleGroup.set('visible', visible);\n this.backgroundGroup.set('visible', visible);\n // group.set('visible', visible) 不会触发自动刷新\n this.getCanvas().draw();\n return this;\n };\n /**\n * 装载数据源。\n *\n * ```ts\n * view.data([{ city: '杭州', sale: 100 }, { city: '上海', sale: 110 } ]);\n * ```\n *\n * @param data 数据源,json 数组。\n * @returns View\n */\n View.prototype.data = function (data) {\n set(this.options, 'data', data);\n this.isDataChanged = true;\n return this;\n };\n /**\n * @deprecated\n * This method will be removed at G2 V4.1. Replaced by {@link #data(data)}\n */\n View.prototype.source = function (data) {\n console.warn('This method will be removed at G2 V4.1. Please use chart.data() instead.');\n return this.data(data);\n };\n /**\n * 设置数据筛选规则。\n *\n * ```ts\n * view.filter('city', (value: any, datum: Datum) => value !== '杭州');\n *\n * // 删除 'city' 字段对应的筛选规则。\n * view.filter('city', null);\n * ```\n *\n * @param field 数据字段\n * @param condition 筛选规则\n * @returns View\n */\n View.prototype.filter = function (field, condition) {\n if (isFunction(condition)) {\n set(this.options, ['filters', field], condition);\n return this;\n }\n // condition 为空,则表示删除过滤条件\n if (!condition && get(this.options, ['filters', field])) {\n delete this.options.filters[field];\n }\n return this;\n };\n View.prototype.axis = function (field, axisOption) {\n if (isBoolean(field)) {\n set(this.options, ['axes'], field);\n } else {\n set(this.options, ['axes', field], axisOption);\n }\n return this;\n };\n View.prototype.legend = function (field, legendOption) {\n if (isBoolean(field)) {\n set(this.options, ['legends'], field);\n } else if (isString(field)) {\n set(this.options, ['legends', field], legendOption);\n if (isPlainObject(legendOption) && (legendOption === null || legendOption === void 0 ? void 0 : legendOption.selected)) {\n set(this.options, ['filters', field], function (name) {\n var _a;\n return (_a = legendOption === null || legendOption === void 0 ? void 0 : legendOption.selected[name]) !== null && _a !== void 0 ? _a : true;\n });\n }\n } else {\n // 设置全局的 legend 配置\n set(this.options, ['legends'], field);\n }\n return this;\n };\n View.prototype.scale = function (field, scaleOption) {\n var _this = this;\n if (isString(field)) {\n set(this.options, ['scales', field], scaleOption);\n } else if (isObject(field)) {\n each(field, function (v, k) {\n set(_this.options, ['scales', k], v);\n });\n }\n return this;\n };\n /**\n * tooltip 提示信息配置。\n *\n * ```ts\n * view.tooltip(false); // 关闭 tooltip\n *\n * view.tooltip({\n * shared: true\n * });\n * ```\n *\n * @param cfg Tooltip 配置,更详细的配置项参考:https://github.com/antvis/component#tooltip\n * @returns View\n */\n View.prototype.tooltip = function (cfg) {\n set(this.options, 'tooltip', cfg);\n return this;\n };\n /**\n * 辅助标记配置。\n *\n * ```ts\n * view.annotation().line({\n * start: ['min', 85],\n * end: ['max', 85],\n * style: {\n * stroke: '#595959',\n * lineWidth: 1,\n * lineDash: [3, 3],\n * },\n * });\n * ```\n * 更详细的配置项:https://github.com/antvis/component#annotation\n * @returns [[Annotation]]\n */\n View.prototype.annotation = function () {\n return this.getController('annotation');\n };\n /**\n * @deprecated\n * This method will be removed at G2 V4.1. Replaced by {@link #guide()}\n */\n View.prototype.guide = function () {\n console.warn('This method will be removed at G2 V4.1. Please use chart.annotation() instead.');\n return this.annotation();\n };\n View.prototype.coordinate = function (type, coordinateCfg) {\n // 提供语法糖,使用更简单\n if (isString(type)) {\n set(this.options, 'coordinate', {\n type: type,\n cfg: coordinateCfg\n });\n } else {\n set(this.options, 'coordinate', type);\n }\n // 更新 coordinate 配置\n this.coordinateController.update(this.options.coordinate);\n return this.coordinateController;\n };\n /**\n * @deprecated\n * This method will be removed at G2 V4.1. Replaced by {@link #coordinate()}\n */\n View.prototype.coord = function (type, coordinateCfg) {\n console.warn('This method will be removed at G2 V4.1. Please use chart.coordinate() instead.');\n // @ts-ignore\n return this.coordinate(type, coordinateCfg);\n };\n /**\n * view 分面绘制。\n *\n * ```ts\n * view.facet('rect', {\n * rowField: 'province',\n * columnField: 'category',\n * eachView: (innerView: View, facet?: FacetData) => {\n * innerView.line().position('city*sale');\n * },\n * });\n * ```\n *\n * @param type 分面类型\n * @param cfg 分面配置, [[FacetCfgMap]]\n * @returns View\n */\n View.prototype.facet = function (type, cfg) {\n // 先销毁掉之前的分面\n if (this.facetInstance) {\n this.facetInstance.destroy();\n }\n // 创建新的分面\n var Ctor = getFacet(type);\n if (!Ctor) {\n throw new Error(\"facet '\".concat(type, \"' is not exist!\"));\n }\n this.facetInstance = new Ctor(this, __assign(__assign({}, cfg), {\n type: type\n }));\n return this;\n };\n /*\n * 开启或者关闭动画。\n *\n * ```ts\n * view.animate(false);\n * ```\n *\n * @param status 动画状态,true 表示开始,false 表示关闭\n * @returns View\n */\n View.prototype.animate = function (status) {\n set(this.options, 'animate', status);\n return this;\n };\n /**\n * 更新配置项,用于配置项式声明。\n * @param options 配置项\n */\n View.prototype.updateOptions = function (options) {\n this.clear(); // 清空\n mix(this.options, options);\n // 需要把已存在的 view 销毁,否则会重复创建\n // 目前针对配置项还没有特别好的 view 更新机制,为了不影响主流流程,所以在这里直接销毁\n this.views.forEach(function (view) {\n return view.destroy();\n });\n this.views = [];\n this.initOptions();\n // 初始化坐标系大小,保证 padding 计算正确\n this.coordinateBBox = this.viewBBox;\n return this;\n };\n /**\n * 往 `view.options` 属性中存储配置项。\n * @param name 属性名称\n * @param opt 属性值\n * @returns view\n */\n View.prototype.option = function (name, opt) {\n // 对于内置的 option,避免覆盖。\n // name 在原型上,说明可能是内置 API,存在 option 被覆盖的风险,不处理\n if (View.prototype[name]) {\n throw new Error(\"Can't use built in variable name \\\"\".concat(name, \"\\\", please change another one.\"));\n }\n // 存入到 option 中\n set(this.options, name, opt);\n return this;\n };\n /**\n * 设置主题。\n *\n * ```ts\n * view.theme('dark'); // 'dark' 需要事先通过 `registerTheme()` 接口注册完成\n *\n * view.theme({ defaultColor: 'red' });\n * ```\n *\n * @param theme 主题名或者主题配置\n * @returns View\n */\n View.prototype.theme = function (theme) {\n this.themeObject = isObject(theme) ? deepMix({}, this.themeObject, createTheme(theme)) : getTheme(theme);\n return this;\n };\n /* end 一系列传入配置的 API */\n /**\n * Call the interaction based on the interaction name\n *\n * ```ts\n * view.interaction('my-interaction', { extra: 'hello world' });\n * ```\n * 详细文档可以参考:https://g2.antv.vision/zh/docs/api/general/interaction\n * @param name interaction name\n * @param cfg interaction config\n * @returns\n */\n View.prototype.interaction = function (name, cfg) {\n var existInteraction = this.interactions[name];\n // 存在则先销毁已有的\n if (existInteraction) {\n existInteraction.destroy();\n }\n // 新建交互实例\n var interaction = createInteraction(name, this, cfg);\n if (interaction) {\n interaction.init();\n this.interactions[name] = interaction;\n }\n return this;\n };\n /**\n * 移除当前 View 的 interaction\n * ```ts\n * view.removeInteraction('my-interaction');\n * ```\n * @param name interaction name\n */\n View.prototype.removeInteraction = function (name) {\n var existInteraction = this.interactions[name];\n // 存在则先销毁已有的\n if (existInteraction) {\n existInteraction.destroy();\n this.interactions[name] = undefined;\n }\n };\n /**\n * 修改数据,数据更新逻辑,数据更新仅仅影响当前这一层的 view\n *\n * ```ts\n * view.changeData([{ city: '北京', sale: '200' }]);\n * ```\n *\n * @param data\n * @returns void\n */\n View.prototype.changeData = function (data) {\n this.isDataChanged = true;\n this.emit(VIEW_LIFE_CIRCLE.BEFORE_CHANGE_DATA, Event.fromData(this, VIEW_LIFE_CIRCLE.BEFORE_CHANGE_DATA, null));\n // 1. 保存数据\n this.data(data);\n // 2. 渲染\n this.paint(true);\n // 3. 遍历子 view 进行 change data\n var views = this.views;\n for (var i = 0, len = views.length; i < len; i++) {\n var view = views[i];\n // FIXME 子 view 有自己的数据的情况,该如何处理?\n view.changeData(data);\n }\n this.emit(VIEW_LIFE_CIRCLE.AFTER_CHANGE_DATA, Event.fromData(this, VIEW_LIFE_CIRCLE.AFTER_CHANGE_DATA, null));\n };\n /* View 管理相关的 API */\n /**\n * 创建子 view\n *\n * ```ts\n * const innerView = view.createView({\n * start: { x: 0, y: 0 },\n * end: { x: 0.5, y: 0.5 },\n * padding: 8,\n * });\n * ```\n *\n * @param cfg\n * @returns View\n */\n View.prototype.createView = function (cfg) {\n // 将会在 4.1 版本中移除递归嵌套 view,仅仅只允许 chart - view 两层。\n // 这个 API 理论上用户量不多,所以暂时不发大版本,所以先暂时打一个 warning。\n if (this.parent && this.parent.parent) {\n // 存在 3 层 结构了\n console.warn('The view nesting recursive feature will be removed at G2 V4.1. Please avoid to use it.');\n }\n // 子 view 共享 options 配置数据\n var sharedOptions = {\n data: this.options.data,\n scales: clone(this.options.scales),\n axes: clone(this.options.axes),\n coordinate: clone(this.coordinateController.getOption()),\n tooltip: clone(this.options.tooltip),\n legends: clone(this.options.legends),\n animate: this.options.animate,\n visible: this.visible\n };\n var v = new View(__assign(__assign({\n parent: this,\n canvas: this.canvas,\n // 子 view 共用三层 group\n backgroundGroup: this.backgroundGroup.addGroup({\n zIndex: GROUP_Z_INDEX.BG\n }),\n middleGroup: this.middleGroup.addGroup({\n zIndex: GROUP_Z_INDEX.MID\n }),\n foregroundGroup: this.foregroundGroup.addGroup({\n zIndex: GROUP_Z_INDEX.FORE\n }),\n theme: this.themeObject,\n padding: this.padding\n }, cfg), {\n options: __assign(__assign({}, sharedOptions), get(cfg, 'options', {}))\n }));\n this.views.push(v);\n return v;\n };\n /**\n * @deprecated\n * This method will be removed at G2 V4.1. Replaced by {@link #createView()}\n */\n View.prototype.view = function (cfg) {\n console.warn('This method will be removed at G2 V4.1. Please use chart.createView() instead.');\n return this.createView(cfg);\n };\n /**\n * 删除一个子 view\n * @param view\n * @return removedView\n */\n View.prototype.removeView = function (view) {\n var removedView = remove(this.views, function (v) {\n return v === view;\n })[0];\n if (removedView) {\n removedView.destroy();\n }\n return removedView;\n };\n /* end View 管理相关的 API */\n // 一些 get 方法\n /**\n * 获取当前坐标系实例。\n * @returns [[Coordinate]]\n */\n View.prototype.getCoordinate = function () {\n return this.coordinateInstance;\n };\n /**\n * 获取当前 view 的主题配置。\n * @returns themeObject\n */\n View.prototype.getTheme = function () {\n return this.themeObject;\n };\n /**\n * 获得 x 轴字段的 scale 实例。\n * @returns view 中 Geometry 对于的 x scale\n */\n View.prototype.getXScale = function () {\n // 拿第一个 Geometry 的 X scale\n // 隐藏逻辑:一个 view 中的 Geometry 必须 x 字段一致\n var g = this.geometries[0];\n return g ? g.getXScale() : null;\n };\n /**\n * 获取 y 轴字段的 scales 实例。\n * @returns view 中 Geometry 对于的 y scale 数组\n */\n View.prototype.getYScales = function () {\n // 拿到所有的 Geometry 的 Y scale,然后去重\n var tmpMap = {};\n var yScales = [];\n this.geometries.forEach(function (g) {\n var yScale = g.getYScale();\n var field = yScale.field;\n if (!tmpMap[field]) {\n tmpMap[field] = true;\n yScales.push(yScale);\n }\n });\n return yScales;\n };\n /**\n * 获取 x 轴或者 y 轴对应的所有 scale 实例。\n * @param dimType x | y\n * @returns x 轴或者 y 轴对应的所有 scale 实例。\n */\n View.prototype.getScalesByDim = function (dimType) {\n var geometries = this.geometries;\n var scales = {};\n for (var i = 0, len = geometries.length; i < len; i++) {\n var geometry = geometries[i];\n var scale = dimType === 'x' ? geometry.getXScale() : geometry.getYScale();\n if (scale && !scales[scale.field]) {\n scales[scale.field] = scale;\n }\n }\n return scales;\n };\n /**\n * 根据字段名去获取 scale 实例。\n * @param field 数据字段名称\n * @param key id\n */\n View.prototype.getScale = function (field, key) {\n var defaultKey = key ? key : this.getScaleKey(field);\n // 调用根节点 view 的方法获取\n return this.getRootView().scalePool.getScale(defaultKey);\n };\n /**\n * @deprecated\n * This method will be removed at G2 V4.1. Please use `getScale`.\n */\n View.prototype.getScaleByField = function (field, key) {\n return this.getScale(field, key);\n };\n /**\n * 返回所有配置信息。\n * @returns 所有的 view API 配置。\n */\n View.prototype.getOptions = function () {\n return this.options;\n };\n /**\n * 获取 view 的数据(过滤后的数据)。\n * @returns 处理过滤器之后的数据。\n */\n View.prototype.getData = function () {\n return this.filteredData;\n };\n /**\n * 获取原始数据\n * @returns 传入 G2 的原始数据\n */\n View.prototype.getOriginalData = function () {\n return this.options.data;\n };\n /**\n * 获取布局后的边距 padding\n * @returns\n */\n View.prototype.getPadding = function () {\n return this.autoPadding.getPadding();\n };\n /**\n * 获取当前 view 有的 geometries\n * @returns\n */\n View.prototype.getGeometries = function () {\n return this.geometries;\n };\n /**\n * 获取 view 中的所有 geome\n */\n View.prototype.getElements = function () {\n return reduce(this.geometries, function (elements, geometry) {\n return elements.concat(geometry.getElements());\n }, []);\n };\n /**\n * 根据一定的规则查找 Geometry 的 Elements。\n *\n * ```typescript\n * getElementsBy((element) => {\n * const data = element.getData();\n *\n * return data.a === 'a';\n * });\n * ```\n *\n * @param condition 定义查找规则的回调函数。\n * @returns\n */\n View.prototype.getElementsBy = function (condition) {\n return this.getElements().filter(function (el) {\n return condition(el);\n });\n };\n /**\n * 获得绘制的层级 group。\n * @param layer 层级名称。\n * @returns 对应层级的 Group。\n */\n View.prototype.getLayer = function (layer) {\n return layer === LAYER.BG ? this.backgroundGroup : layer === LAYER.MID ? this.middleGroup : layer === LAYER.FORE ? this.foregroundGroup : this.foregroundGroup;\n };\n /**\n * 对外暴露方法,判断一个点是否在绘图区域(即坐标系范围)内部。\n * @param point 坐标点\n */\n View.prototype.isPointInPlot = function (point) {\n return isPointInCoordinate(this.getCoordinate(), point);\n };\n /**\n * 获得所有的 legend 对应的 attribute 实例。\n * @returns 维度字段的 Attribute 数组\n */\n View.prototype.getLegendAttributes = function () {\n return flatten(this.geometries.map(function (g) {\n return g.getGroupAttributes();\n }));\n };\n /**\n * 获取所有的分组字段的 scale 实例。\n * @returns 获得分组字段的 scale 实例数组。\n */\n View.prototype.getGroupScales = function () {\n // 拿到所有的 Geometry 的 分组字段 scale,然后打平去重\n var scales = this.geometries.map(function (g) {\n return g.getGroupScales();\n });\n return uniq(flatten(scales));\n };\n /**\n * 获取 G.Canvas 实例。\n * @returns G.Canvas 画布实例。\n */\n View.prototype.getCanvas = function () {\n return this.getRootView().canvas;\n };\n /**\n * 获得根节点 view。\n */\n View.prototype.getRootView = function () {\n var v = this;\n while (true) {\n if (v.parent) {\n v = v.parent;\n continue;\n }\n break;\n }\n return v;\n };\n /**\n * 获取该数据在可视化后,对应的画布坐标点。\n * @param data 原始数据记录\n * @returns 对应的画布坐标点\n */\n View.prototype.getXY = function (data) {\n var coordinate = this.getCoordinate();\n var xScales = this.getScalesByDim('x');\n var yScales = this.getScalesByDim('y');\n var x;\n var y;\n each(data, function (value, key) {\n if (xScales[key]) {\n x = xScales[key].scale(value);\n }\n if (yScales[key]) {\n y = yScales[key].scale(value);\n }\n });\n if (!isNil(x) && !isNil(y)) {\n return coordinate.convert({\n x: x,\n y: y\n });\n }\n };\n /**\n * 获取 name 对应的 controller 实例\n * @param name\n */\n View.prototype.getController = function (name) {\n return find(this.controllers, function (c) {\n return c.name === name;\n });\n };\n /**\n * 显示 point 坐标点对应的 tooltip。\n * @param point 画布坐标点\n * @returns View\n */\n View.prototype.showTooltip = function (point) {\n var tooltip = this.getController('tooltip');\n if (tooltip) {\n tooltip.showTooltip(point);\n }\n return this;\n };\n /**\n * 隐藏 tooltip。\n * @returns View\n */\n View.prototype.hideTooltip = function () {\n var tooltip = this.getController('tooltip');\n if (tooltip) {\n tooltip.hideTooltip();\n }\n return this;\n };\n /**\n * 将 tooltip 锁定到当前位置不能移动。\n * @returns View\n */\n View.prototype.lockTooltip = function () {\n var tooltip = this.getController('tooltip');\n if (tooltip) {\n tooltip.lockTooltip();\n }\n return this;\n };\n /**\n * 将 tooltip 锁定解除。\n * @returns View\n */\n View.prototype.unlockTooltip = function () {\n var tooltip = this.getController('tooltip');\n if (tooltip) {\n tooltip.unlockTooltip();\n }\n return this;\n };\n /**\n * 是否锁定 tooltip。\n * @returns 是否锁定\n */\n View.prototype.isTooltipLocked = function () {\n var tooltip = this.getController('tooltip');\n return tooltip && tooltip.isTooltipLocked();\n };\n /**\n * 获取当前 point 对应的 tooltip 数据项。\n * @param point 坐标点\n * @returns tooltip 数据项\n */\n View.prototype.getTooltipItems = function (point) {\n var tooltip = this.getController('tooltip');\n return tooltip ? tooltip.getTooltipItems(point) : [];\n };\n /**\n * 获取逼近的点的数据集合\n * @param point 当前坐标点\n * @returns 数据\n */\n View.prototype.getSnapRecords = function (point) {\n var geometries = this.geometries;\n var rst = [];\n for (var i = 0, len = geometries.length; i < len; i++) {\n var geom = geometries[i];\n var dataArray = geom.dataArray;\n geom.sort(dataArray); // 先进行排序,便于 tooltip 查找\n var record = void 0;\n for (var j = 0, dataLen = dataArray.length; j < dataLen; j++) {\n var data = dataArray[j];\n record = findDataByPoint(point, data, geom);\n if (record) {\n rst.push(record);\n }\n }\n }\n // 同样递归处理子 views\n var views = this.views;\n for (var i = 0, len = views.length; i < len; i++) {\n var view = views[i];\n var snapRecords = view.getSnapRecords(point);\n rst = rst.concat(snapRecords);\n }\n return rst;\n };\n /**\n * 获取所有的 pure component 组件,用于布局。\n */\n View.prototype.getComponents = function () {\n var components = [];\n var controllers = this.controllers;\n for (var i = 0, len = controllers.length; i < len; i++) {\n var controller = controllers[i];\n components = components.concat(controller.getComponents());\n }\n return components;\n };\n /**\n * 将 data 数据进行过滤。\n * @param data\n * @returns 过滤之后的数据\n */\n View.prototype.filterData = function (data) {\n var filters = this.options.filters;\n // 不存在 filters,则不需要进行数据过滤\n if (size(filters) === 0) {\n return data;\n }\n // 存在过滤器,则逐个执行过滤,过滤器之间是 与 的关系\n return filter(data, function (datum, idx) {\n // 所有的 filter 字段\n var fields = Object.keys(filters);\n // 所有的条件都通过,才算通过\n return fields.every(function (field) {\n var condition = filters[field];\n // condition 返回 true,则保留\n return condition(datum[field], datum, idx);\n });\n });\n };\n /**\n * 对某一个字段进行过滤\n * @param field\n * @param data\n */\n View.prototype.filterFieldData = function (field, data) {\n var filters = this.options.filters;\n var condition = get(filters, field);\n if (isUndefined(condition)) {\n return data;\n }\n return data.filter(function (datum, idx) {\n return condition(datum[field], datum, idx);\n });\n };\n /**\n * 调整 coordinate 的坐标范围。\n */\n View.prototype.adjustCoordinate = function () {\n var _a = this.getCoordinate(),\n curStart = _a.start,\n curEnd = _a.end;\n var start = this.coordinateBBox.bl;\n var end = this.coordinateBBox.tr;\n // 在 defaultLayoutFn 中只会在 coordinateBBox 发生变化的时候会调用 adjustCoordinate(),所以不用担心被置位\n if (isEqual(curStart, start) && isEqual(curEnd, end)) {\n this.isCoordinateChanged = false;\n // 如果大小没有变化则不更新\n return;\n }\n this.isCoordinateChanged = true;\n this.coordinateInstance = this.coordinateController.adjust(start, end);\n };\n View.prototype.paint = function (isUpdate) {\n this.renderDataRecursive(isUpdate);\n // 处理 sync scale 的逻辑\n this.syncScale();\n this.emit(VIEW_LIFE_CIRCLE.BEFORE_PAINT);\n // 初始化图形、组件位置,计算 padding\n this.renderPaddingRecursive(isUpdate);\n // 布局图形、组件\n this.renderLayoutRecursive(isUpdate);\n // 背景色 shape\n this.renderBackgroundStyleShape();\n // 最终的绘制 render\n this.renderPaintRecursive(isUpdate);\n this.emit(VIEW_LIFE_CIRCLE.AFTER_PAINT);\n this.isDataChanged = false; // 渲染完毕复位\n };\n /**\n * 渲染背景样式的 shape。\n * 放到 view 中创建的原因是让使用 view 绘制图形的时候,也能够处理背景色\n */\n View.prototype.renderBackgroundStyleShape = function () {\n // 只有根节点才处理\n if (this.parent) {\n return;\n }\n var background = get(this.themeObject, 'background');\n // 配置了背景色\n if (background) {\n // 1. 不存在则创建\n if (!this.backgroundStyleRectShape) {\n this.backgroundStyleRectShape = this.backgroundGroup.addShape('rect', {\n attrs: {},\n zIndex: -1,\n // 背景色 shape 不设置事件捕获\n capture: false\n });\n this.backgroundStyleRectShape.toBack();\n }\n // 2. 有了 shape 之后设置背景,位置(更新的时候)\n var _a = this.viewBBox,\n x = _a.x,\n y = _a.y,\n width = _a.width,\n height = _a.height;\n this.backgroundStyleRectShape.attr({\n fill: background,\n x: x,\n y: y,\n width: width,\n height: height\n });\n } else {\n // 没有配置背景色\n if (this.backgroundStyleRectShape) {\n this.backgroundStyleRectShape.remove(true);\n this.backgroundStyleRectShape = undefined;\n }\n }\n };\n /**\n * 递归计算每个 view 的 padding 值,coordinateBBox 和 coordinateInstance\n * @param isUpdate\n */\n View.prototype.renderPaddingRecursive = function (isUpdate) {\n // 1. 子 view 大小相对 coordinateBBox,changeSize 的时候需要重新计算\n this.calculateViewBBox();\n // 2. 更新 coordinate\n this.adjustCoordinate();\n // 3. 初始化组件 component\n this.initComponents(isUpdate);\n // 4. 布局计算每隔 view 的 padding 值\n // 4.1. 自动加 auto padding -> absolute padding,并且增加 appendPadding\n this.autoPadding = calculatePadding(this).shrink(parsePadding(this.appendPadding));\n // 4.2. 计算出新的 coordinateBBox,更新 Coordinate\n // 这里必须保留,原因是后面子 view 的 viewBBox 或根据 parent 的 coordinateBBox\n this.coordinateBBox = this.viewBBox.shrink(this.autoPadding.getPadding());\n this.adjustCoordinate();\n // 刷新 tooltip (tooltip crosshairs 依赖 coordinate 位置)\n var tooltipController = this.controllers.find(function (c) {\n return c.name === 'tooltip';\n });\n tooltipController.update();\n // 同样递归处理子 views\n var views = this.views;\n for (var i = 0, len = views.length; i < len; i++) {\n var view = views[i];\n view.renderPaddingRecursive(isUpdate);\n }\n };\n /**\n * 递归处理 view 的布局,最终是计算各个 view 的 coordinateBBox 和 coordinateInstance\n * @param isUpdate\n */\n View.prototype.renderLayoutRecursive = function (isUpdate) {\n // 1. 同步子 view padding\n // 根据配置获取 padding\n var syncViewPaddingFn = this.syncViewPadding === true ? defaultSyncViewPadding : isFunction(this.syncViewPadding) ? this.syncViewPadding : undefined;\n if (syncViewPaddingFn) {\n syncViewPaddingFn(this, this.views, PaddingCal);\n // 同步 padding 之后,更新 coordinate\n this.views.forEach(function (v) {\n v.coordinateBBox = v.viewBBox.shrink(v.autoPadding.getPadding());\n v.adjustCoordinate();\n });\n }\n // 3. 将 view 中的组件按照 view padding 移动到对应的位置\n this.doLayout();\n // 同样递归处理子 views\n var views = this.views;\n for (var i = 0, len = views.length; i < len; i++) {\n var view = views[i];\n view.renderLayoutRecursive(isUpdate);\n }\n };\n /**\n * 最终递归绘制组件和图形\n * @param isUpdate\n */\n View.prototype.renderPaintRecursive = function (isUpdate) {\n var middleGroup = this.middleGroup;\n if (this.limitInPlot) {\n var _a = getCoordinateClipCfg(this.coordinateInstance),\n type = _a.type,\n attrs = _a.attrs;\n middleGroup.setClip({\n type: type,\n attrs: attrs\n });\n } else {\n // 清除已有的 clip\n middleGroup.setClip(undefined);\n }\n // 1. 渲染几何标记\n this.paintGeometries(isUpdate);\n // 2. 绘制组件\n this.renderComponents(isUpdate);\n // 同样递归处理子 views\n var views = this.views;\n for (var i = 0, len = views.length; i < len; i++) {\n var view = views[i];\n view.renderPaintRecursive(isUpdate);\n }\n };\n // end Get 方法\n /**\n * 创建 scale,递归到顶层 view 去创建和缓存 scale\n * @param field\n * @param data\n * @param scaleDef\n * @param key\n */\n View.prototype.createScale = function (field, data, scaleDef, key) {\n // 1. 合并 field 对应的 scaleDef,合并原则是底层覆盖顶层(就近原则)\n var currentScaleDef = get(this.options.scales, [field]);\n var mergedScaleDef = __assign(__assign({}, currentScaleDef), scaleDef);\n // 2. 是否存在父 view,在则递归,否则创建\n if (this.parent) {\n return this.parent.createScale(field, data, mergedScaleDef, key);\n }\n // 3. 在根节点 view 通过 scalePool 创建\n return this.scalePool.createScale(field, data, mergedScaleDef, key);\n };\n /**\n * 递归渲染中的数据处理\n * @param isUpdate\n */\n View.prototype.renderDataRecursive = function (isUpdate) {\n // 1. 处理数据\n this.doFilterData();\n // 2. 创建实例\n this.createCoordinate();\n // 3. 初始化 Geometry\n this.initGeometries(isUpdate);\n // 4. 处理分面逻辑,最终都是生成子 view 和 geometry\n this.renderFacet(isUpdate);\n // 同样递归处理子 views\n var views = this.views;\n for (var i = 0, len = views.length; i < len; i++) {\n var view = views[i];\n view.renderDataRecursive(isUpdate);\n }\n };\n /**\n * 计算 region,计算实际的像素范围坐标\n * @private\n */\n View.prototype.calculateViewBBox = function () {\n var x;\n var y;\n var width;\n var height;\n if (this.parent) {\n var bbox = this.parent.coordinateBBox;\n // 存在 parent, 那么就是通过父容器大小计算\n x = bbox.x;\n y = bbox.y;\n width = bbox.width;\n height = bbox.height;\n } else {\n // 顶层容器,从 canvas 中取值 宽高\n x = 0;\n y = 0;\n width = this.canvas.get('width');\n height = this.canvas.get('height');\n }\n var _a = this.region,\n start = _a.start,\n end = _a.end;\n // 根据 region 计算当前 view 的 bbox 大小。\n var viewBBox = new BBox(x + width * start.x, y + height * start.y, width * (end.x - start.x), height * (end.y - start.y));\n if (!this.viewBBox || !this.viewBBox.isEqual(viewBBox)) {\n // viewBBox 发生变化的时候进行更新\n this.viewBBox = new BBox(x + width * start.x, y + height * start.y, width * (end.x - start.x), height * (end.y - start.y));\n }\n // 初始的 coordinate bbox 大小\n this.coordinateBBox = this.viewBBox;\n };\n /**\n * 初始化事件机制:G 4.0 底层内置支持 name:event 的机制,那么只要所有组件都有自己的 name 即可。\n *\n * G2 的事件只是获取事件委托,然后在 view 嵌套结构中,形成事件冒泡机制。\n * 当前 view 只委托自己 view 中的 Component 和 Geometry 事件,并向上冒泡\n * @private\n */\n View.prototype.initEvents = function () {\n // 三层 group 中的 shape 事件都会通过 G 冒泡上来的\n this.foregroundGroup.on('*', this.onDelegateEvents);\n this.middleGroup.on('*', this.onDelegateEvents);\n this.backgroundGroup.on('*', this.onDelegateEvents);\n this.canvas.on('*', this.onCanvasEvent);\n };\n /**\n * 初始化插件\n */\n View.prototype.initComponentController = function () {\n var usedControllers = this.usedControllers;\n for (var i = 0, len = usedControllers.length; i < len; i++) {\n var controllerName = usedControllers[i];\n var Ctor = getComponentController(controllerName);\n if (Ctor) {\n this.controllers.push(new Ctor(this));\n }\n }\n };\n View.prototype.createViewEvent = function (evt) {\n var shape = evt.shape,\n name = evt.name;\n var data = shape ? shape.get('origin') : null;\n // 事件在 view 嵌套中冒泡(暂不提供阻止冒泡的机制)\n var e = new Event(this, evt, data);\n e.type = name;\n return e;\n };\n /**\n * 处理 PLOT_EVENTS\n * plot event 需要处理所有的基础事件,并判断是否在画布中,然后再决定是否要 emit。\n * 对于 mouseenter、mouseleave 比较特殊,需要做一下数学比较。\n * @param e\n */\n View.prototype.doPlotEvent = function (e) {\n var type = e.type,\n x = e.x,\n y = e.y;\n var point = {\n x: x,\n y: y\n };\n var ALL_EVENTS = ['mousedown', 'mouseup', 'mousemove', 'mouseleave', 'mousewheel', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'click', 'dblclick', 'contextmenu'];\n if (ALL_EVENTS.includes(type)) {\n var currentInPlot = this.isPointInPlot(point);\n var newEvent = e.clone();\n if (currentInPlot) {\n var TYPE = \"plot:\".concat(type); // 组合 plot 事件\n newEvent.type = TYPE;\n this.emit(TYPE, newEvent);\n if (type === 'mouseleave' || type === 'touchend') {\n // 在plot 内部却离开画布\n this.isPreMouseInPlot = false;\n }\n }\n // 对于 mouseenter, mouseleave 的计算处理\n if (type === 'mousemove' || type === 'touchmove') {\n if (this.isPreMouseInPlot && !currentInPlot) {\n if (type === 'mousemove') {\n newEvent.type = PLOT_EVENTS.MOUSE_LEAVE;\n this.emit(PLOT_EVENTS.MOUSE_LEAVE, newEvent);\n }\n newEvent.type = PLOT_EVENTS.LEAVE;\n this.emit(PLOT_EVENTS.LEAVE, newEvent);\n } else if (!this.isPreMouseInPlot && currentInPlot) {\n if (type === 'mousemove') {\n newEvent.type = PLOT_EVENTS.MOUSE_ENTER;\n this.emit(PLOT_EVENTS.MOUSE_ENTER, newEvent);\n }\n newEvent.type = PLOT_EVENTS.ENTER;\n this.emit(PLOT_EVENTS.ENTER, newEvent);\n }\n // 赋新的状态值\n this.isPreMouseInPlot = currentInPlot;\n } else if (type === 'mouseleave' || type === 'touchend') {\n // 可能不在 currentInPlot 中\n if (this.isPreMouseInPlot) {\n if (type === 'mouseleave') {\n newEvent.type = PLOT_EVENTS.MOUSE_LEAVE;\n this.emit(PLOT_EVENTS.MOUSE_LEAVE, newEvent);\n }\n newEvent.type = PLOT_EVENTS.LEAVE;\n this.emit(PLOT_EVENTS.LEAVE, newEvent);\n this.isPreMouseInPlot = false;\n }\n }\n }\n };\n // view 生命周期 —— 渲染流程\n /**\n * 处理筛选器,筛选数据\n * @private\n */\n View.prototype.doFilterData = function () {\n var data = this.options.data;\n this.filteredData = this.filterData(data);\n };\n /**\n * 初始化 Geometries\n * @private\n */\n View.prototype.initGeometries = function (isUpdate) {\n // 初始化图形的之前,先创建 / 更新 scales\n this.createOrUpdateScales();\n // 实例化 Geometry,然后 view 将所有的 scale 管理起来\n var coordinate = this.getCoordinate();\n var scaleDefs = get(this.options, 'scales', {});\n var geometries = this.geometries;\n for (var i = 0, len = geometries.length; i < len; i++) {\n var geometry = geometries[i];\n // 保持 scales 引用不要变化\n geometry.scales = this.getGeometryScales();\n var cfg = {\n coordinate: coordinate,\n scaleDefs: scaleDefs,\n data: this.filteredData,\n theme: this.themeObject,\n isDataChanged: this.isDataChanged,\n isCoordinateChanged: this.isCoordinateChanged\n };\n if (isUpdate) {\n // 数据发生更新\n geometry.update(cfg);\n } else {\n geometry.init(cfg);\n }\n }\n // Geometry 初始化之后,生成了 scale,然后进行调整 scale 配置\n this.adjustScales();\n };\n /**\n * 根据 Geometry 的所有字段创建 scales\n * 如果存在,则更新,不存在则创建\n */\n View.prototype.createOrUpdateScales = function () {\n var fields = this.getScaleFields();\n var groupedFields = this.getGroupedFields();\n var _a = this.getOptions(),\n data = _a.data,\n _b = _a.scales,\n scales = _b === void 0 ? {} : _b;\n var filteredData = this.filteredData;\n for (var i = 0, len = fields.length; i < len; i++) {\n var field = fields[i];\n var scaleDef = scales[field];\n // 调用方法,递归去创建\n var key = this.getScaleKey(field);\n this.createScale(field,\n // 分组字段的 scale 使用未过滤的数据创建\n groupedFields.includes(field) ? data : filteredData, scaleDef, key);\n // 缓存从当前 view 创建的 scale key\n this.createdScaleKeys.set(key, true);\n }\n };\n /**\n * 处理 scale 同步逻辑\n */\n View.prototype.syncScale = function () {\n // 最终调用 root view 的\n this.getRootView().scalePool.sync(this.getCoordinate(), this.theme);\n };\n /**\n * 获得 Geometry 中的 scale 对象\n */\n View.prototype.getGeometryScales = function () {\n var fields = this.getScaleFields();\n var scales = {};\n for (var i = 0; i < fields.length; i++) {\n var field = fields[i];\n scales[field] = this.getScaleByField(field);\n }\n return scales;\n };\n View.prototype.getScaleFields = function () {\n var fields = [];\n var tmpMap = new Map();\n var geometries = this.geometries;\n for (var i = 0; i < geometries.length; i++) {\n var geometry = geometries[i];\n var geometryScales = geometry.getScaleFields();\n uniq(geometryScales, fields, tmpMap);\n }\n return fields;\n };\n View.prototype.getGroupedFields = function () {\n var fields = [];\n var tmpMap = new Map();\n var geometries = this.geometries;\n for (var i = 0; i < geometries.length; i++) {\n var geometry = geometries[i];\n var groupFields = geometry.getGroupFields();\n uniq(groupFields, fields, tmpMap);\n }\n return fields;\n };\n /**\n * 调整 scale 配置\n * @private\n */\n View.prototype.adjustScales = function () {\n // 调整目前包括:\n // 分类 scale,调整 range 范围\n this.adjustCategoryScaleRange();\n };\n /**\n * 调整分类 scale 的 range,防止超出坐标系外面\n * @private\n */\n View.prototype.adjustCategoryScaleRange = function () {\n var _this = this;\n var xyScales = __spreadArray([this.getXScale()], __read(this.getYScales()), false).filter(function (e) {\n return !!e;\n });\n var coordinate = this.getCoordinate();\n var scaleOptions = this.options.scales;\n each(xyScales, function (scale) {\n var field = scale.field,\n values = scale.values,\n isCategory = scale.isCategory,\n isIdentity = scale.isIdentity;\n // 分类或者 identity 的 scale 才进行处理\n if (isCategory || isIdentity) {\n // 存在 value 值,且用户没有配置 range 配置\n if (values && !get(scaleOptions, [field, 'range'])) {\n // 更新 range\n scale.range = getDefaultCategoryScaleRange(scale, coordinate, _this.theme);\n }\n }\n });\n };\n /**\n * 根据 options 配置、Geometry 字段配置,自动生成 components\n * @param isUpdate 是否是更新\n * @private\n */\n View.prototype.initComponents = function (isUpdate) {\n // 先全部清空,然后 render\n var controllers = this.controllers;\n for (var i = 0; i < controllers.length; i++) {\n var controller = controllers[i];\n // 更新则走更新逻辑;否则清空载重绘\n if (isUpdate) {\n controller.update();\n } else {\n controller.clear();\n controller.render();\n }\n }\n };\n View.prototype.doLayout = function () {\n this.layoutFunc(this);\n };\n /**\n * 创建坐标系\n * @private\n */\n View.prototype.createCoordinate = function () {\n var start = this.coordinateBBox.bl;\n var end = this.coordinateBBox.tr;\n this.coordinateInstance = this.coordinateController.create(start, end);\n };\n /**\n * 根据 options 配置自动渲染 geometry\n * @private\n */\n View.prototype.paintGeometries = function (isUpdate) {\n var doAnimation = this.options.animate;\n // geometry 的 paint 阶段\n var coordinate = this.getCoordinate();\n var canvasRegion = {\n x: this.viewBBox.x,\n y: this.viewBBox.y,\n minX: this.viewBBox.minX,\n minY: this.viewBBox.minY,\n maxX: this.viewBBox.maxX,\n maxY: this.viewBBox.maxY,\n width: this.viewBBox.width,\n height: this.viewBBox.height\n };\n var geometries = this.geometries;\n for (var i = 0; i < geometries.length; i++) {\n var geometry = geometries[i];\n geometry.coordinate = coordinate;\n geometry.canvasRegion = canvasRegion;\n if (!doAnimation) {\n // 如果 view 不执行动画,那么 view 下所有的 geometry 都不执行动画\n geometry.animate(false);\n }\n geometry.paint(isUpdate);\n }\n };\n /**\n * 最后的绘制组件\n * @param isUpdate\n */\n View.prototype.renderComponents = function (isUpdate) {\n var components = this.getComponents();\n // 先全部清空,然后 render\n for (var i = 0; i < components.length; i++) {\n var co = components[i];\n co.component.render();\n }\n };\n /**\n * 渲染分面,会在其中进行数据分面,然后进行子 view 创建\n * @param isUpdate\n */\n View.prototype.renderFacet = function (isUpdate) {\n if (this.facetInstance) {\n if (isUpdate) {\n this.facetInstance.update();\n } else {\n this.facetInstance.clear();\n // 计算分面数据\n this.facetInstance.init();\n // 渲染组件和 views\n this.facetInstance.render();\n }\n }\n };\n View.prototype.initOptions = function () {\n var _this = this;\n var _a = this.options,\n _b = _a.geometries,\n geometries = _b === void 0 ? [] : _b,\n _c = _a.interactions,\n interactions = _c === void 0 ? [] : _c,\n _d = _a.views,\n views = _d === void 0 ? [] : _d,\n _e = _a.annotations,\n annotations = _e === void 0 ? [] : _e,\n coordinate = _a.coordinate,\n events = _a.events,\n facets = _a.facets;\n // 设置坐标系\n if (this.coordinateController) {\n // 更新 coordinate controller\n coordinate && this.coordinateController.update(coordinate);\n } else {\n // 创建 coordinate controller\n this.coordinateController = new CoordinateController(coordinate);\n }\n // 创建 geometry 实例\n for (var i = 0; i < geometries.length; i++) {\n var geometryOption = geometries[i];\n this.createGeometry(geometryOption);\n }\n // 创建 interactions 实例\n for (var j = 0; j < interactions.length; j++) {\n var interactionOption = interactions[j];\n var type = interactionOption.type,\n cfg = interactionOption.cfg;\n this.interaction(type, cfg);\n }\n // 创建 view 实例\n for (var k = 0; k < views.length; k++) {\n var viewOption = views[k];\n this.createView(viewOption);\n }\n // 设置 annotation\n var annotationComponent = this.getController('annotation');\n for (var l = 0; l < annotations.length; l++) {\n var annotationOption = annotations[l];\n annotationComponent.annotation(annotationOption);\n }\n // 设置 events\n if (events) {\n each(events, function (eventCallback, eventName) {\n _this.on(eventName, eventCallback);\n });\n }\n if (facets) {\n each(facets, function (facet) {\n var type = facet.type,\n rest = __rest(facet, [\"type\"]);\n _this.facet(type, rest);\n });\n }\n };\n View.prototype.createGeometry = function (geometryOption) {\n var type = geometryOption.type,\n _a = geometryOption.cfg,\n cfg = _a === void 0 ? {} : _a;\n if (this[type]) {\n var geometry_1 = this[type](cfg);\n each(geometryOption, function (v, k) {\n if (isFunction(geometry_1[k])) {\n geometry_1[k](v);\n }\n });\n }\n };\n /**\n * scale key 的创建方式\n * @param field\n */\n View.prototype.getScaleKey = function (field) {\n return \"\".concat(this.id, \"-\").concat(field);\n };\n return View;\n}(Base);\nexport { View };\n/**\n * 注册 geometry 组件\n * @param name\n * @param Ctor\n * @returns Geometry\n */\nexport function registerGeometry(name, Ctor) {\n // 语法糖,在 view API 上增加原型方法\n View.prototype[name.toLowerCase()] = function (cfg) {\n if (cfg === void 0) {\n cfg = {};\n }\n var props = __assign({\n /** 图形容器 */\n container: this.middleGroup.addGroup(),\n labelsContainer: this.foregroundGroup.addGroup()\n }, cfg);\n var geometry = new Ctor(props);\n this.geometries.push(geometry);\n return geometry;\n };\n}\nexport default View;","import { __assign, __extends } from \"tslib\";\nimport { debounce, each, isString } from '@antv/util';\nimport { GROUP_Z_INDEX, VIEW_LIFE_CIRCLE } from '../constant';\nimport { getEngine } from '../engine';\nimport { createDom, getChartSize, removeDom, modifyCSS } from '../util/dom';\nimport View from './view';\n/**\n * Chart 类,是使用 G2 进行绘图的入口。\n */\nvar Chart = /** @class */function (_super) {\n __extends(Chart, _super);\n // @ts-ignore\n function Chart(props) {\n var _this = this;\n var container = props.container,\n width = props.width,\n height = props.height,\n _a = props.autoFit,\n autoFit = _a === void 0 ? false : _a,\n padding = props.padding,\n appendPadding = props.appendPadding,\n _b = props.renderer,\n renderer = _b === void 0 ? 'canvas' : _b,\n pixelRatio = props.pixelRatio,\n _c = props.localRefresh,\n localRefresh = _c === void 0 ? true : _c,\n _d = props.visible,\n visible = _d === void 0 ? true : _d,\n _e = props.supportCSSTransform,\n supportCSSTransform = _e === void 0 ? false : _e,\n _f = props.defaultInteractions,\n defaultInteractions = _f === void 0 ? ['tooltip', 'legend-filter', 'legend-active', 'continuous-filter', 'ellipsis-text', 'axis-description'] : _f,\n options = props.options,\n limitInPlot = props.limitInPlot,\n theme = props.theme,\n syncViewPadding = props.syncViewPadding;\n var ele = isString(container) ? document.getElementById(container) : container;\n // 生成内部正式绘制的 div 元素\n var wrapperElement = createDom('
          ');\n ele.appendChild(wrapperElement);\n // if autoFit, use the container size, to avoid the graph render twice.\n var size = getChartSize(ele, autoFit, width, height);\n var G = getEngine(renderer);\n var canvas = new G.Canvas(__assign({\n container: wrapperElement,\n pixelRatio: pixelRatio,\n localRefresh: localRefresh,\n supportCSSTransform: supportCSSTransform\n }, size));\n // 调用 view 的创建\n _this = _super.call(this, {\n parent: null,\n canvas: canvas,\n // create 3 group layers for views.\n backgroundGroup: canvas.addGroup({\n zIndex: GROUP_Z_INDEX.BG\n }),\n middleGroup: canvas.addGroup({\n zIndex: GROUP_Z_INDEX.MID\n }),\n foregroundGroup: canvas.addGroup({\n zIndex: GROUP_Z_INDEX.FORE\n }),\n padding: padding,\n appendPadding: appendPadding,\n visible: visible,\n options: options,\n limitInPlot: limitInPlot,\n theme: theme,\n syncViewPadding: syncViewPadding\n }) || this;\n /**\n * when container size changed, change chart size props, and re-render.\n */\n _this.onResize = debounce(function () {\n _this.forceFit();\n }, 300);\n _this.ele = ele;\n _this.canvas = canvas;\n _this.width = size.width;\n _this.height = size.height;\n _this.autoFit = autoFit;\n _this.localRefresh = localRefresh;\n _this.renderer = renderer;\n _this.wrapperElement = wrapperElement;\n // 自适应大小\n _this.updateCanvasStyle();\n _this.bindAutoFit();\n _this.initDefaultInteractions(defaultInteractions);\n return _this;\n }\n Chart.prototype.initDefaultInteractions = function (interactions) {\n var _this = this;\n each(interactions, function (interaction) {\n _this.interaction(interaction);\n });\n };\n /**\n * 设置 WAI-ARIA 无障碍标签。如何根据图形语法自动生成 arial 内容?\n * @param ariaOption\n */\n Chart.prototype.aria = function (ariaOption) {\n var ATTR = 'aria-label';\n if (ariaOption === false) {\n this.ele.removeAttribute(ATTR);\n } else {\n this.ele.setAttribute(ATTR, ariaOption.label);\n }\n };\n /**\n * 改变图表大小,同时重新渲染。\n * @param width 图表宽度\n * @param height 图表高度\n * @returns\n */\n Chart.prototype.changeSize = function (width, height) {\n // 如果宽高一致,那么 changeSize 不执行任何操作\n if (this.width === width && this.height === height) {\n return this;\n }\n this.emit(VIEW_LIFE_CIRCLE.BEFORE_CHANGE_SIZE);\n this.width = width;\n this.height = height;\n this.canvas.changeSize(width, height);\n // 重新渲染\n this.render(true);\n this.emit(VIEW_LIFE_CIRCLE.AFTER_CHANGE_SIZE);\n return this;\n };\n /**\n * 清空图表,同时清除掉 aria 配置\n */\n Chart.prototype.clear = function () {\n _super.prototype.clear.call(this);\n this.aria(false);\n };\n /**\n * 销毁图表,同时解绑事件,销毁创建的 G.Canvas 实例。\n * @returns void\n */\n Chart.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.unbindAutoFit();\n this.canvas.destroy();\n removeDom(this.wrapperElement);\n this.wrapperElement = null;\n };\n /**\n * 显示或隐藏图表\n * @param visible 是否可见,true 表示显示,false 表示隐藏\n * @returns\n */\n Chart.prototype.changeVisible = function (visible) {\n _super.prototype.changeVisible.call(this, visible); // 需要更新 visible 变量\n this.wrapperElement.style.display = visible ? '' : 'none';\n return this;\n };\n /**\n * 自动根据容器大小 resize 画布\n */\n Chart.prototype.forceFit = function () {\n // skip if already destroyed\n if (!this.destroyed) {\n // 注意第二参数用 true,意思是即时 autoFit = false,forceFit() 调用之后一样是适配容器\n var _a = getChartSize(this.ele, true, this.width, this.height),\n width = _a.width,\n height = _a.height;\n this.changeSize(width, height);\n }\n };\n Chart.prototype.updateCanvasStyle = function () {\n modifyCSS(this.canvas.get('el'), {\n display: 'inline-block',\n verticalAlign: 'middle'\n });\n };\n Chart.prototype.bindAutoFit = function () {\n if (this.autoFit) {\n window.addEventListener('resize', this.onResize);\n }\n };\n Chart.prototype.unbindAutoFit = function () {\n if (this.autoFit) {\n window.removeEventListener('resize', this.onResize);\n }\n };\n return Chart;\n}(View);\nexport default Chart;","import { each } from '@antv/util';\n/**\n * Component Controller 规范需要定义的基类\n * 1. 规范的 option 输入\n * 2. 统一的信息获取 API\n * 3. 明确定义的组件事件(名称、数据)\n */\nvar Controller = /** @class */function () {\n function Controller(view) {\n /** 是否可见 */\n this.visible = true;\n /** 所有的 component */\n this.components = [];\n this.view = view;\n }\n /**\n * clear\n * @param includeOption 是否清空 option 配置项(used in annotation)\n */\n Controller.prototype.clear = function (includeOption) {\n // destroy all components\n each(this.components, function (co) {\n co.component.destroy();\n });\n // clear all component instance\n this.components = [];\n };\n /**\n * destroy the component\n */\n Controller.prototype.destroy = function () {\n this.clear();\n };\n /**\n * get all components\n * @returns components array\n */\n Controller.prototype.getComponents = function () {\n return this.components;\n };\n /**\n * change visibility of component\n * @param visible\n */\n Controller.prototype.changeVisible = function (visible) {\n if (this.visible === visible) {\n return;\n }\n this.components.forEach(function (co) {\n if (visible) {\n co.component.show();\n } else {\n co.component.hide();\n }\n });\n this.visible = visible;\n };\n return Controller;\n}();\nexport { Controller };","import { __assign, __extends, __values } from \"tslib\";\nimport { deepMix, find, get, isEqual, isFunction, mix, isString, isBoolean, flatten, isArray } from '@antv/util';\nimport { Crosshair, HtmlTooltip } from '../../dependents';\nimport { getAngleByPoint, getDistanceToCenter, getCoordinateClipCfg } from '../../util/coordinate';\nimport { polarToCartesian } from '../../util/graphics';\nimport { findItemsFromView } from '../../util/tooltip';\nimport { BBox } from '../../util/bbox';\nimport { Controller } from './base';\nimport Event from '../event';\n// Filter duplicates, use `name`, `color`, `value` and `title` property values as condition\nfunction uniq(items) {\n var uniqItems = [];\n var _loop_1 = function _loop_1(index) {\n var item = items[index];\n var result = find(uniqItems, function (subItem) {\n return subItem.color === item.color && subItem.name === item.name && subItem.value === item.value && subItem.title === item.title;\n });\n if (!result) {\n uniqItems.push(item);\n }\n };\n for (var index = 0; index < items.length; index++) {\n _loop_1(index);\n }\n return uniqItems;\n}\n/** @ignore */\nvar Tooltip = /** @class */function (_super) {\n __extends(Tooltip, _super);\n function Tooltip() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.isLocked = false;\n return _this;\n }\n Object.defineProperty(Tooltip.prototype, \"name\", {\n get: function get() {\n return 'tooltip';\n },\n enumerable: false,\n configurable: true\n });\n Tooltip.prototype.init = function () {};\n Tooltip.prototype.isVisible = function () {\n var option = this.view.getOptions().tooltip;\n return option !== false;\n };\n Tooltip.prototype.render = function () {};\n /**\n * Shows tooltip\n * @param point\n */\n Tooltip.prototype.showTooltip = function (point) {\n this.point = point;\n if (!this.isVisible()) {\n // 如果设置 tooltip(false) 则始终不显示\n return;\n }\n var view = this.view;\n var items = this.getTooltipItems(point);\n if (!items.length) {\n // 无内容则不展示,同时 tooltip 需要隐藏\n this.hideTooltip();\n return;\n }\n var title = this.getTitle(items);\n var dataPoint = {\n x: items[0].x,\n y: items[0].y\n }; // 数据点位置\n view.emit('tooltip:show', Event.fromData(view, 'tooltip:show', __assign({\n items: items,\n title: title\n }, point)));\n var cfg = this.getTooltipCfg();\n var follow = cfg.follow,\n showMarkers = cfg.showMarkers,\n showCrosshairs = cfg.showCrosshairs,\n showContent = cfg.showContent,\n marker = cfg.marker;\n var lastItems = this.items;\n var lastTitle = this.title;\n if (!isEqual(lastTitle, title) || !isEqual(lastItems, items)) {\n // 内容发生变化了更新 tooltip\n view.emit('tooltip:change', Event.fromData(view, 'tooltip:change', __assign({\n items: items,\n title: title\n }, point)));\n if (isFunction(showContent) ? showContent(items) : showContent) {\n // 展示 tooltip 内容框才渲染 tooltip\n if (!this.tooltip) {\n // 延迟生成\n this.renderTooltip();\n }\n this.tooltip.update(mix({}, cfg, {\n items: this.getItemsAfterProcess(items),\n title: title\n }, follow ? point : {}));\n this.tooltip.show();\n }\n if (showMarkers) {\n // 展示 tooltipMarkers,tooltipMarkers 跟随数据\n this.renderTooltipMarkers(items, marker);\n }\n } else {\n // 内容未发生变化,则更新位置\n if (this.tooltip && follow) {\n this.tooltip.update(point);\n this.tooltip.show(); // tooltip 有可能被隐藏,需要保证显示状态\n }\n\n if (this.tooltipMarkersGroup) {\n this.tooltipMarkersGroup.show();\n }\n }\n this.items = items;\n this.title = title;\n if (showCrosshairs) {\n // 展示 tooltip 辅助线\n var isCrosshairsFollowCursor = get(cfg, ['crosshairs', 'follow'], false); // 辅助线是否要跟随鼠标\n this.renderCrosshairs(isCrosshairsFollowCursor ? point : dataPoint, cfg);\n }\n };\n Tooltip.prototype.hideTooltip = function () {\n var follow = this.getTooltipCfg().follow;\n if (!follow) {\n this.point = null;\n return;\n }\n // hide the tooltipMarkers\n var tooltipMarkersGroup = this.tooltipMarkersGroup;\n if (tooltipMarkersGroup) {\n tooltipMarkersGroup.hide();\n }\n // hide crosshairs\n var xCrosshair = this.xCrosshair;\n var yCrosshair = this.yCrosshair;\n if (xCrosshair) {\n xCrosshair.hide();\n }\n if (yCrosshair) {\n yCrosshair.hide();\n }\n var tooltip = this.tooltip;\n if (tooltip) {\n tooltip.hide();\n }\n this.view.emit('tooltip:hide', Event.fromData(this.view, 'tooltip:hide', {}));\n this.point = null;\n };\n /**\n * lockTooltip\n */\n Tooltip.prototype.lockTooltip = function () {\n this.isLocked = true;\n if (this.tooltip) {\n // tooltip contianer 可捕获事件\n this.tooltip.setCapture(true);\n }\n };\n /**\n * unlockTooltip\n */\n Tooltip.prototype.unlockTooltip = function () {\n this.isLocked = false;\n var cfg = this.getTooltipCfg();\n if (this.tooltip) {\n // 重置 capture 属性\n this.tooltip.setCapture(cfg.capture);\n }\n };\n /**\n * isTooltipLocked\n */\n Tooltip.prototype.isTooltipLocked = function () {\n return this.isLocked;\n };\n Tooltip.prototype.clear = function () {\n var _a = this,\n tooltip = _a.tooltip,\n xCrosshair = _a.xCrosshair,\n yCrosshair = _a.yCrosshair,\n tooltipMarkersGroup = _a.tooltipMarkersGroup;\n if (tooltip) {\n tooltip.hide();\n tooltip.clear();\n }\n if (xCrosshair) {\n xCrosshair.clear();\n }\n if (yCrosshair) {\n yCrosshair.clear();\n }\n if (tooltipMarkersGroup) {\n tooltipMarkersGroup.clear();\n }\n // 如果 customContent 不为空,就重新生成 tooltip\n if (tooltip === null || tooltip === void 0 ? void 0 : tooltip.get('customContent')) {\n this.tooltip.destroy();\n this.tooltip = null;\n }\n // title 和 items 需要清空, 否则 tooltip 内容会出现置空的情况\n // 即:需要走进 !isEqual(lastTitle, title) || !isEqual(lastItems, items) 的逻辑,更新 tooltip 的内容\n this.title = null;\n this.items = null;\n };\n Tooltip.prototype.destroy = function () {\n if (this.tooltip) {\n this.tooltip.destroy();\n }\n if (this.xCrosshair) {\n this.xCrosshair.destroy();\n }\n if (this.yCrosshair) {\n this.yCrosshair.destroy();\n }\n if (this.guideGroup) {\n this.guideGroup.remove(true);\n }\n this.reset();\n };\n Tooltip.prototype.reset = function () {\n this.items = null;\n this.title = null;\n this.tooltipMarkersGroup = null;\n this.tooltipCrosshairsGroup = null;\n this.xCrosshair = null;\n this.yCrosshair = null;\n this.tooltip = null;\n this.guideGroup = null;\n this.isLocked = false;\n this.point = null;\n };\n Tooltip.prototype.changeVisible = function (visible) {\n if (this.visible === visible) {\n return;\n }\n var _a = this,\n tooltip = _a.tooltip,\n tooltipMarkersGroup = _a.tooltipMarkersGroup,\n xCrosshair = _a.xCrosshair,\n yCrosshair = _a.yCrosshair;\n if (visible) {\n if (tooltip) {\n tooltip.show();\n }\n if (tooltipMarkersGroup) {\n tooltipMarkersGroup.show();\n }\n if (xCrosshair) {\n xCrosshair.show();\n }\n if (yCrosshair) {\n yCrosshair.show();\n }\n } else {\n if (tooltip) {\n tooltip.hide();\n }\n if (tooltipMarkersGroup) {\n tooltipMarkersGroup.hide();\n }\n if (xCrosshair) {\n xCrosshair.hide();\n }\n if (yCrosshair) {\n yCrosshair.hide();\n }\n }\n this.visible = visible;\n };\n Tooltip.prototype.getTooltipItems = function (point) {\n var e_1, _a, e_2, _b, e_3, _c;\n var items = this.findItemsFromView(this.view, point);\n if (items.length) {\n // 三层\n items = flatten(items);\n try {\n for (var items_1 = __values(items), items_1_1 = items_1.next(); !items_1_1.done; items_1_1 = items_1.next()) {\n var itemArr = items_1_1.value;\n try {\n for (var itemArr_1 = (e_2 = void 0, __values(itemArr)), itemArr_1_1 = itemArr_1.next(); !itemArr_1_1.done; itemArr_1_1 = itemArr_1.next()) {\n var item = itemArr_1_1.value;\n var _d = item.mappingData,\n x = _d.x,\n y = _d.y;\n item.x = isArray(x) ? x[x.length - 1] : x;\n item.y = isArray(y) ? y[y.length - 1] : y;\n }\n } catch (e_2_1) {\n e_2 = {\n error: e_2_1\n };\n } finally {\n try {\n if (itemArr_1_1 && !itemArr_1_1.done && (_b = itemArr_1.return)) _b.call(itemArr_1);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (items_1_1 && !items_1_1.done && (_a = items_1.return)) _a.call(items_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n var shared = this.getTooltipCfg().shared;\n // shared: false 代表只显示当前拾取到的 shape 的数据,但是一个 view 会有多个 Geometry,所以有可能会拾取到多个 shape\n if (shared === false && items.length > 1) {\n var snapItem = items[0];\n var min = Math.abs(point.y - snapItem[0].y);\n try {\n for (var items_2 = __values(items), items_2_1 = items_2.next(); !items_2_1.done; items_2_1 = items_2.next()) {\n var aItem = items_2_1.value;\n var yDistance = Math.abs(point.y - aItem[0].y);\n if (yDistance <= min) {\n snapItem = aItem;\n min = yDistance;\n }\n }\n } catch (e_3_1) {\n e_3 = {\n error: e_3_1\n };\n } finally {\n try {\n if (items_2_1 && !items_2_1.done && (_c = items_2.return)) _c.call(items_2);\n } finally {\n if (e_3) throw e_3.error;\n }\n }\n items = [snapItem];\n }\n return uniq(flatten(items));\n }\n return [];\n };\n Tooltip.prototype.layout = function () {};\n Tooltip.prototype.update = function () {\n if (this.point) {\n this.showTooltip(this.point);\n }\n if (this.tooltip) {\n // #2279 修复resize之后tooltip越界的问题\n // 确保tooltip已经创建的情况下\n var canvas = this.view.getCanvas();\n // TODO 逍为 tooltip 的区域不应该是 canvas,而应该是整个 特别是在图比较小的时候\n // 更新 region\n this.tooltip.set('region', {\n start: {\n x: 0,\n y: 0\n },\n end: {\n x: canvas.get('width'),\n y: canvas.get('height')\n }\n });\n }\n };\n /**\n * 当前鼠标点是在 enter tooltip 中\n * @param point\n */\n Tooltip.prototype.isCursorEntered = function (point) {\n // 是可捕获的,并且点在 tooltip dom 上\n if (this.tooltip) {\n var el = this.tooltip.getContainer();\n var capture = this.tooltip.get('capture');\n if (el && capture) {\n var _a = el.getBoundingClientRect(),\n x = _a.x,\n y = _a.y,\n width = _a.width,\n height = _a.height;\n return new BBox(x, y, width, height).isPointIn(point);\n }\n }\n return false;\n };\n // 获取 tooltip 配置,因为用户可能会通过 view.tooltip() 重新配置 tooltip,所以就不做缓存,每次直接读取\n Tooltip.prototype.getTooltipCfg = function () {\n var view = this.view;\n var option = view.getOptions().tooltip;\n var processOption = this.processCustomContent(option);\n var theme = view.getTheme();\n var defaultCfg = get(theme, ['components', 'tooltip'], {});\n var enterable = get(processOption, 'enterable', defaultCfg.enterable);\n return deepMix({}, defaultCfg, processOption, {\n capture: enterable || this.isLocked ? true : false\n });\n };\n // process customContent\n Tooltip.prototype.processCustomContent = function (option) {\n if (isBoolean(option) || !get(option, 'customContent')) {\n return option;\n }\n var currentCustomContent = option.customContent;\n var customContent = function customContent(title, items) {\n var content = currentCustomContent(title, items) || '';\n return isString(content) ? '
          ' + content + '
          ' : content;\n };\n return __assign(__assign({}, option), {\n customContent: customContent\n });\n };\n Tooltip.prototype.getTitle = function (items) {\n var title = items[0].title || items[0].name;\n this.title = title;\n return title;\n };\n Tooltip.prototype.renderTooltip = function () {\n var canvas = this.view.getCanvas();\n var region = {\n start: {\n x: 0,\n y: 0\n },\n end: {\n x: canvas.get('width'),\n y: canvas.get('height')\n }\n };\n var cfg = this.getTooltipCfg();\n var tooltip = new HtmlTooltip(__assign(__assign({\n parent: canvas.get('el').parentNode,\n region: region\n }, cfg), {\n visible: false,\n crosshairs: null\n }));\n tooltip.init();\n this.tooltip = tooltip;\n };\n Tooltip.prototype.renderTooltipMarkers = function (items, marker) {\n var e_4, _a;\n var tooltipMarkersGroup = this.getTooltipMarkersGroup();\n var rootView = this.view.getRootView();\n var limitInPlot = rootView.limitInPlot;\n try {\n for (var items_3 = __values(items), items_3_1 = items_3.next(); !items_3_1.done; items_3_1 = items_3.next()) {\n var item = items_3_1.value;\n var x = item.x,\n y = item.y;\n // 有裁剪就剪切\n if (limitInPlot || (tooltipMarkersGroup === null || tooltipMarkersGroup === void 0 ? void 0 : tooltipMarkersGroup.getClip())) {\n var _b = getCoordinateClipCfg(rootView.getCoordinate()),\n type = _b.type,\n attrs_1 = _b.attrs;\n tooltipMarkersGroup === null || tooltipMarkersGroup === void 0 ? void 0 : tooltipMarkersGroup.setClip({\n type: type,\n attrs: attrs_1\n });\n } else {\n // 清除已有的 clip\n tooltipMarkersGroup === null || tooltipMarkersGroup === void 0 ? void 0 : tooltipMarkersGroup.setClip(undefined);\n }\n var theme = this.view.getTheme();\n var markerDefaultCfg = get(theme, ['components', 'tooltip', 'marker'], {});\n var attrs = __assign(__assign({\n fill: item.color,\n symbol: 'circle',\n shadowColor: item.color\n }, isFunction(marker) ? __assign(__assign({}, markerDefaultCfg), marker(item)) : marker), {\n x: x,\n y: y\n });\n tooltipMarkersGroup.addShape('marker', {\n attrs: attrs\n });\n }\n } catch (e_4_1) {\n e_4 = {\n error: e_4_1\n };\n } finally {\n try {\n if (items_3_1 && !items_3_1.done && (_a = items_3.return)) _a.call(items_3);\n } finally {\n if (e_4) throw e_4.error;\n }\n }\n };\n Tooltip.prototype.renderCrosshairs = function (point, cfg) {\n var crosshairsType = get(cfg, ['crosshairs', 'type'], 'x'); // 默认展示 x 轴上的辅助线\n if (crosshairsType === 'x') {\n if (this.yCrosshair) {\n this.yCrosshair.hide();\n }\n this.renderXCrosshairs(point, cfg);\n } else if (crosshairsType === 'y') {\n if (this.xCrosshair) {\n this.xCrosshair.hide();\n }\n this.renderYCrosshairs(point, cfg);\n } else if (crosshairsType === 'xy') {\n this.renderXCrosshairs(point, cfg);\n this.renderYCrosshairs(point, cfg);\n }\n };\n // 渲染 x 轴上的 tooltip 辅助线\n Tooltip.prototype.renderXCrosshairs = function (point, tooltipCfg) {\n var coordinate = this.getViewWithGeometry(this.view).getCoordinate();\n var start;\n var end;\n if (coordinate.isRect) {\n if (coordinate.isTransposed) {\n start = {\n x: coordinate.start.x,\n y: point.y\n };\n end = {\n x: coordinate.end.x,\n y: point.y\n };\n } else {\n start = {\n x: point.x,\n y: coordinate.end.y\n };\n end = {\n x: point.x,\n y: coordinate.start.y\n };\n }\n } else {\n // 极坐标下 x 轴上的 crosshairs 表现为半径\n var angle = getAngleByPoint(coordinate, point);\n var center = coordinate.getCenter();\n var radius = coordinate.getRadius();\n end = polarToCartesian(center.x, center.y, radius, angle);\n start = center;\n }\n var cfg = deepMix({\n start: start,\n end: end,\n container: this.getTooltipCrosshairsGroup()\n }, get(tooltipCfg, 'crosshairs', {}), this.getCrosshairsText('x', point, tooltipCfg));\n delete cfg.type; // 与 Crosshairs 组件的 type 冲突故删除\n var xCrosshair = this.xCrosshair;\n if (xCrosshair) {\n xCrosshair.update(cfg);\n } else {\n xCrosshair = new Crosshair.Line(cfg);\n xCrosshair.init();\n }\n xCrosshair.render();\n xCrosshair.show();\n this.xCrosshair = xCrosshair;\n };\n // 渲染 y 轴上的辅助线\n Tooltip.prototype.renderYCrosshairs = function (point, tooltipCfg) {\n var coordinate = this.getViewWithGeometry(this.view).getCoordinate();\n var cfg;\n var type;\n if (coordinate.isRect) {\n var start = void 0;\n var end = void 0;\n if (coordinate.isTransposed) {\n start = {\n x: point.x,\n y: coordinate.end.y\n };\n end = {\n x: point.x,\n y: coordinate.start.y\n };\n } else {\n start = {\n x: coordinate.start.x,\n y: point.y\n };\n end = {\n x: coordinate.end.x,\n y: point.y\n };\n }\n cfg = {\n start: start,\n end: end\n };\n type = 'Line';\n } else {\n // 极坐标下 y 轴上的 crosshairs 表现为圆弧\n cfg = {\n center: coordinate.getCenter(),\n // @ts-ignore\n radius: getDistanceToCenter(coordinate, point),\n startAngle: coordinate.startAngle,\n endAngle: coordinate.endAngle\n };\n type = 'Circle';\n }\n cfg = deepMix({\n container: this.getTooltipCrosshairsGroup()\n }, cfg, get(tooltipCfg, 'crosshairs', {}), this.getCrosshairsText('y', point, tooltipCfg));\n delete cfg.type; // 与 Crosshairs 组件的 type 冲突故删除\n var yCrosshair = this.yCrosshair;\n if (yCrosshair) {\n // 如果坐标系发生直角坐标系与极坐标的切换操作\n if (coordinate.isRect && yCrosshair.get('type') === 'circle' || !coordinate.isRect && yCrosshair.get('type') === 'line') {\n yCrosshair = new Crosshair[type](cfg);\n yCrosshair.init();\n } else {\n yCrosshair.update(cfg);\n }\n } else {\n yCrosshair = new Crosshair[type](cfg);\n yCrosshair.init();\n }\n yCrosshair.render();\n yCrosshair.show();\n this.yCrosshair = yCrosshair;\n };\n Tooltip.prototype.getCrosshairsText = function (type, point, tooltipCfg) {\n var textCfg = get(tooltipCfg, ['crosshairs', 'text']);\n var follow = get(tooltipCfg, ['crosshairs', 'follow']);\n var items = this.items;\n if (textCfg) {\n var view = this.getViewWithGeometry(this.view);\n // 需要展示文本\n var firstItem = items[0];\n var xScale = view.getXScale();\n var yScale = view.getYScales()[0];\n var xValue = void 0;\n var yValue = void 0;\n if (follow) {\n // 如果需要跟随鼠标移动,就需要将当前鼠标坐标点转换为对应的数值\n var invertPoint = this.view.getCoordinate().invert(point);\n xValue = xScale.invert(invertPoint.x); // 转换为原始值\n yValue = yScale.invert(invertPoint.y); // 转换为原始值\n } else {\n xValue = firstItem.data[xScale.field];\n yValue = firstItem.data[yScale.field];\n }\n var content = type === 'x' ? xValue : yValue;\n if (isFunction(textCfg)) {\n textCfg = textCfg(type, content, items, point);\n } else {\n textCfg.content = content;\n }\n return {\n text: textCfg\n };\n }\n };\n // 获取存储 tooltipMarkers 和 crosshairs 的容器\n Tooltip.prototype.getGuideGroup = function () {\n if (!this.guideGroup) {\n var foregroundGroup = this.view.foregroundGroup;\n this.guideGroup = foregroundGroup.addGroup({\n name: 'tooltipGuide',\n capture: false\n });\n }\n return this.guideGroup;\n };\n // 获取 tooltipMarkers 存储的容器\n Tooltip.prototype.getTooltipMarkersGroup = function () {\n var tooltipMarkersGroup = this.tooltipMarkersGroup;\n if (tooltipMarkersGroup && !tooltipMarkersGroup.destroyed) {\n tooltipMarkersGroup.clear();\n tooltipMarkersGroup.show();\n } else {\n tooltipMarkersGroup = this.getGuideGroup().addGroup({\n name: 'tooltipMarkersGroup'\n });\n tooltipMarkersGroup.toFront();\n this.tooltipMarkersGroup = tooltipMarkersGroup;\n }\n return tooltipMarkersGroup;\n };\n // 获取 tooltip crosshairs 存储的容器\n Tooltip.prototype.getTooltipCrosshairsGroup = function () {\n var tooltipCrosshairsGroup = this.tooltipCrosshairsGroup;\n if (!tooltipCrosshairsGroup) {\n tooltipCrosshairsGroup = this.getGuideGroup().addGroup({\n name: 'tooltipCrosshairsGroup',\n capture: false\n });\n tooltipCrosshairsGroup.toBack();\n this.tooltipCrosshairsGroup = tooltipCrosshairsGroup;\n }\n return tooltipCrosshairsGroup;\n };\n Tooltip.prototype.findItemsFromView = function (view, point) {\n var e_5, _a;\n if (view.getOptions().tooltip === false) {\n // 如果 view 关闭了 tooltip\n return [];\n }\n var tooltipCfg = this.getTooltipCfg();\n var result = findItemsFromView(view, point, tooltipCfg);\n try {\n // 递归查找,并合并结果\n for (var _b = __values(view.views), _c = _b.next(); !_c.done; _c = _b.next()) {\n var childView = _c.value;\n result = result.concat(this.findItemsFromView(childView, point));\n }\n } catch (e_5_1) {\n e_5 = {\n error: e_5_1\n };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_5) throw e_5.error;\n }\n }\n return result;\n };\n // FIXME: hack 方法\n // 因为 tooltip 的交互是挂载在 Chart 上,所以当chart 上没有绘制 Geometry 的时候,就查找不到数据,并且绘图区域同子 View 的区域不同\n Tooltip.prototype.getViewWithGeometry = function (view) {\n var _this = this;\n if (view.geometries.length) {\n return view;\n }\n return find(view.views, function (childView) {\n return _this.getViewWithGeometry(childView);\n });\n };\n /**\n * 根据用户配置的 items 配置,来进行用户自定义的处理,并返回最终的 items\n * 默认不做任何处理\n */\n Tooltip.prototype.getItemsAfterProcess = function (originalItems) {\n var customItems = this.getTooltipCfg().customItems;\n var fn = customItems ? customItems : function (v) {\n return v;\n };\n return fn(originalItems);\n };\n return Tooltip;\n}(Controller);\nexport default Tooltip;","var ANIMATIONS_MAP = {};\n/**\n * 根据名称获取对应的动画执行函数\n * @param type 动画函数名称\n */\nexport function getAnimation(type) {\n return ANIMATIONS_MAP[type.toLowerCase()];\n}\n/**\n * 注册动画执行函数\n * @param type 动画执行函数名称\n * @param animation 动画执行函数\n */\nexport function registerAnimation(type, animation) {\n ANIMATIONS_MAP[type.toLowerCase()] = animation;\n}","import { __assign } from \"tslib\";\nimport { deepMix, get, isFunction } from '@antv/util';\nimport { FIELD_ORIGIN } from '../constant';\nimport { getAnimation } from './animation';\n// 默认的动画参数配置\nexport var DEFAULT_ANIMATE_CFG = {\n appear: {\n duration: 450,\n easing: 'easeQuadOut'\n },\n update: {\n duration: 400,\n easing: 'easeQuadInOut'\n },\n enter: {\n duration: 400,\n easing: 'easeQuadInOut'\n },\n leave: {\n duration: 350,\n easing: 'easeQuadIn'\n } // 更新时销毁动画配置\n};\n// 各个 Geometry 默认的动画执行函数\nvar GEOMETRY_ANIMATE_CFG = {\n interval: function interval(coordinate) {\n return {\n enter: {\n animation: coordinate.isRect ? coordinate.isTransposed ? 'scale-in-x' : 'scale-in-y' : 'fade-in'\n },\n update: {\n animation: coordinate.isPolar && coordinate.isTransposed ? 'sector-path-update' : null\n },\n leave: {\n animation: 'fade-out'\n }\n };\n },\n line: {\n enter: {\n animation: 'fade-in'\n },\n leave: {\n animation: 'fade-out'\n }\n },\n path: {\n enter: {\n animation: 'fade-in'\n },\n leave: {\n animation: 'fade-out'\n }\n },\n point: {\n appear: {\n animation: 'zoom-in'\n },\n enter: {\n animation: 'zoom-in'\n },\n leave: {\n animation: 'zoom-out'\n }\n },\n area: {\n enter: {\n animation: 'fade-in'\n },\n leave: {\n animation: 'fade-out'\n }\n },\n polygon: {\n enter: {\n animation: 'fade-in'\n },\n leave: {\n animation: 'fade-out'\n }\n },\n schema: {\n enter: {\n animation: 'fade-in'\n },\n leave: {\n animation: 'fade-out'\n }\n },\n edge: {\n enter: {\n animation: 'fade-in'\n },\n leave: {\n animation: 'fade-out'\n }\n },\n label: {\n appear: {\n animation: 'fade-in',\n delay: 450\n },\n enter: {\n animation: 'fade-in'\n },\n update: {\n animation: 'position-update'\n },\n leave: {\n animation: 'fade-out'\n }\n }\n};\n// 各个 Geometry 默认的群组出场动画\nvar GEOMETRY_GROUP_APPEAR_ANIMATION = {\n line: function line() {\n return {\n animation: 'wave-in'\n };\n },\n area: function area() {\n return {\n animation: 'wave-in'\n };\n },\n path: function path() {\n return {\n animation: 'fade-in'\n };\n },\n interval: function interval(coordinate) {\n var animation;\n if (coordinate.isRect) {\n animation = coordinate.isTransposed ? 'grow-in-x' : 'grow-in-y';\n } else {\n animation = 'grow-in-xy';\n if (coordinate.isPolar && coordinate.isTransposed) {\n // pie chart\n animation = 'wave-in';\n }\n }\n return {\n animation: animation\n };\n },\n schema: function schema(coordinate) {\n var animation;\n if (coordinate.isRect) {\n animation = coordinate.isTransposed ? 'grow-in-x' : 'grow-in-y';\n } else {\n animation = 'grow-in-xy';\n }\n return {\n animation: animation\n };\n },\n polygon: function polygon() {\n return {\n animation: 'fade-in',\n duration: 500\n };\n },\n edge: function edge() {\n return {\n animation: 'fade-in'\n };\n }\n};\n// 解析用户的动画配置\nfunction parseAnimateConfig(animateCfg, data) {\n return {\n delay: isFunction(animateCfg.delay) ? animateCfg.delay(data) : animateCfg.delay,\n easing: isFunction(animateCfg.easing) ? animateCfg.easing(data) : animateCfg.easing,\n duration: isFunction(animateCfg.duration) ? animateCfg.duration(data) : animateCfg.duration,\n callback: animateCfg.callback,\n repeat: animateCfg.repeat\n };\n}\n/**\n * @ignore\n * 获取 elementName 对应的动画配置,当声明了 `animateType`,则返回 `animateType` 对应的动画配置\n * @param elementName 元素名称\n * @param coordinate 做表弟类型\n * @param animateType 可选,动画类型\n */\nexport function getDefaultAnimateCfg(elementName, coordinate, animateType) {\n var animateCfg = GEOMETRY_ANIMATE_CFG[elementName];\n if (animateCfg) {\n if (isFunction(animateCfg)) {\n animateCfg = animateCfg(coordinate);\n }\n animateCfg = deepMix({}, DEFAULT_ANIMATE_CFG, animateCfg);\n if (animateType) {\n return animateCfg[animateType];\n }\n }\n return animateCfg;\n}\n/**\n * @ignore\n * 工具函数\n * 根据用户传入的配置为 shape 执行动画\n * @param shape 执行动画的图形元素\n * @param animateCfg 动画配置\n * @param cfg 额外的信息\n */\nexport function doAnimate(shape, animateCfg, cfg) {\n var data = get(shape.get('origin'), 'data', FIELD_ORIGIN);\n var animation = animateCfg.animation; // 获取动画执行函数\n var parsedAnimateCfg = parseAnimateConfig(animateCfg, data);\n if (animation) {\n // 用户声明了动画执行函数\n var animateFunction = getAnimation(animation);\n if (animateFunction) {\n animateFunction(shape, parsedAnimateCfg, cfg);\n }\n } else {\n // 没有声明,则根据 toAttrs 做差值动画\n shape.animate(cfg.toAttrs, parsedAnimateCfg);\n }\n}\n/**\n * @ignore\n * 执行 Geometry 群组入场动画\n * @param container 执行群组动画的图形元素\n * @param animateCfg 动画配置\n * @param geometryType geometry 类型\n * @param coordinate 坐标系对象\n * @param minYPoint y 轴最小值对应的画布坐标点\n */\nexport function doGroupAppearAnimate(container, animateCfg, geometryType, coordinate, minYPoint) {\n if (GEOMETRY_GROUP_APPEAR_ANIMATION[geometryType]) {\n var defaultCfg = GEOMETRY_GROUP_APPEAR_ANIMATION[geometryType](coordinate);\n var animation = getAnimation(get(defaultCfg, 'animation', ''));\n if (animation) {\n var cfg = __assign(__assign(__assign({}, DEFAULT_ANIMATE_CFG.appear), defaultCfg), animateCfg);\n container.stopAnimate(); // 先结束当前 container 动画\n animation(container, cfg, {\n coordinate: coordinate,\n minYPoint: minYPoint,\n toAttrs: null\n });\n }\n }\n}","/**\n * Name of Background Shape\n */\nexport var BACKGROUND_SHAPE = 'element-background';","import { __assign, __extends } from \"tslib\";\nimport { deepMix, each, get, isArray, isEmpty, isEqual, isFunction, isString } from '@antv/util';\n// 暂未发包\n// @ts-ignore\nimport { propagationDelegate } from '@antv/component';\nimport { doAnimate } from '../../animate';\nimport Base from '../../base';\nimport { getReplaceAttrs } from '../../util/graphics';\nimport { GEOMETRY_LIFE_CIRCLE } from '../../constant';\nimport { BACKGROUND_SHAPE } from '../shape/constant';\n/**\n * Element 图形元素。\n * 定义:在 G2 中,我们会将数据通过图形语法映射成不同的图形,比如点图,数据集中的每条数据会对应一个点,柱状图每条数据对应一个柱子,线图则是一组数据对应一条折线,Element 即一条/一组数据对应的图形元素,它代表一条数据或者一个数据集,在图形层面,它可以是单个 Shape 也可以是多个 Shape,我们称之为图形元素。\n */\nvar Element = /** @class */function (_super) {\n __extends(Element, _super);\n function Element(cfg) {\n var _this = _super.call(this, cfg) || this;\n /** 保存 shape 对应的 label */\n _this.labelShape = [];\n // 存储当前开启的状态\n _this.states = [];\n var shapeFactory = cfg.shapeFactory,\n container = cfg.container,\n offscreenGroup = cfg.offscreenGroup,\n elementIndex = cfg.elementIndex,\n _a = cfg.visible,\n visible = _a === void 0 ? true : _a;\n _this.shapeFactory = shapeFactory;\n _this.container = container;\n _this.offscreenGroup = offscreenGroup;\n _this.visible = visible;\n _this.elementIndex = elementIndex;\n return _this;\n }\n /**\n * 绘制图形。\n * @param model 绘制数据。\n * @param isUpdate 可选,是否是更新发生后的绘制。\n */\n Element.prototype.draw = function (model, isUpdate) {\n if (isUpdate === void 0) {\n isUpdate = false;\n }\n this.model = model;\n this.data = model.data; // 存储原始数据\n this.shapeType = this.getShapeType(model);\n // 绘制图形\n this.drawShape(model, isUpdate);\n if (this.visible === false) {\n // 用户在初始化的时候声明 visible: false\n this.changeVisible(false);\n }\n };\n /**\n * 更新图形。\n * @param model 更新的绘制数据。\n */\n Element.prototype.update = function (model) {\n var _a = this,\n shapeFactory = _a.shapeFactory,\n shape = _a.shape;\n if (!shape) {\n return;\n }\n // 更新数据\n this.model = model;\n this.data = model.data;\n this.shapeType = this.getShapeType(model);\n // step 1: 更新 shape 携带的信息\n this.setShapeInfo(shape, model);\n // step 2: 使用虚拟 Group 重新绘制 shape,然后更新当前 shape\n var offscreenGroup = this.getOffscreenGroup();\n var newShape = shapeFactory.drawShape(this.shapeType, model, offscreenGroup);\n // @ts-ignore\n newShape.cfg.data = this.data;\n // @ts-ignore\n newShape.cfg.origin = model;\n // label 需要使用\n newShape.cfg.element = this;\n // step 3: 同步 shape 样式\n this.syncShapeStyle(shape, newShape, this.getStates(), this.getAnimateCfg('update'));\n };\n /**\n * 销毁 element 实例。\n */\n Element.prototype.destroy = function () {\n var _a = this,\n shapeFactory = _a.shapeFactory,\n shape = _a.shape;\n if (shape) {\n var animateCfg = this.getAnimateCfg('leave');\n if (animateCfg) {\n // 指定了动画配置则执行销毁动画\n doAnimate(shape, animateCfg, {\n coordinate: shapeFactory.coordinate,\n toAttrs: __assign({}, shape.attr())\n });\n } else {\n // 否则直接销毁\n shape.remove(true);\n }\n }\n // reset\n this.states = [];\n this.shapeFactory = undefined;\n this.container = undefined;\n this.shape = undefined;\n this.animate = undefined;\n this.geometry = undefined;\n this.labelShape = [];\n this.model = undefined;\n this.data = undefined;\n this.offscreenGroup = undefined;\n this.statesStyle = undefined;\n _super.prototype.destroy.call(this);\n };\n /**\n * 显示或者隐藏 element。\n * @param visible 是否可见。\n */\n Element.prototype.changeVisible = function (visible) {\n _super.prototype.changeVisible.call(this, visible);\n if (visible) {\n if (this.shape) {\n this.shape.show();\n }\n if (this.labelShape) {\n this.labelShape.forEach(function (label) {\n label.show();\n });\n }\n } else {\n if (this.shape) {\n this.shape.hide();\n }\n if (this.labelShape) {\n this.labelShape.forEach(function (label) {\n label.hide();\n });\n }\n }\n };\n /**\n * 设置 Element 的状态。\n *\n * 目前 Element 开放三种状态:\n * 1. active\n * 2. selected\n * 3. inactive\n *\n * 这三种状态相互独立,可以进行叠加。\n *\n * 这三种状态的样式可在 [[Theme]] 主题中或者通过 `geometry.state()` 接口进行配置。\n *\n * ```ts\n * // 激活 active 状态\n * setState('active', true);\n * ```\n *\n * @param stateName 状态名\n * @param stateStatus 是否开启状态\n */\n Element.prototype.setState = function (stateName, stateStatus) {\n var _a = this,\n states = _a.states,\n shapeFactory = _a.shapeFactory,\n model = _a.model,\n shape = _a.shape,\n shapeType = _a.shapeType;\n var index = states.indexOf(stateName);\n if (stateStatus) {\n // 开启状态\n if (index > -1) {\n // 该状态已经开启,则返回\n return;\n }\n states.push(stateName);\n if (stateName === 'active' || stateName === 'selected') {\n shape === null || shape === void 0 ? void 0 : shape.toFront();\n }\n } else {\n if (index === -1) {\n // 关闭状态,但是状态未设置过\n return;\n }\n states.splice(index, 1);\n if (stateName === 'active' || stateName === 'selected') {\n var _b = this.geometry,\n sortZIndex = _b.sortZIndex,\n zIndexReversed = _b.zIndexReversed;\n var idx = zIndexReversed ? this.geometry.elements.length - this.elementIndex : this.elementIndex;\n sortZIndex ? shape.setZIndex(idx) : shape.set('zIndex', idx);\n }\n }\n // 使用虚拟 group 重新绘制 shape,然后对这个 shape 应用状态样式后,更新当前 shape。\n var offscreenShape = shapeFactory.drawShape(shapeType, model, this.getOffscreenGroup());\n if (states.length) {\n // 应用当前状态\n this.syncShapeStyle(shape, offscreenShape, states, null);\n } else {\n // 如果没有状态,则需要恢复至原始状态\n this.syncShapeStyle(shape, offscreenShape, ['reset'], null);\n }\n offscreenShape.remove(true); // 销毁,减少内存占用\n var eventObject = {\n state: stateName,\n stateStatus: stateStatus,\n element: this,\n target: this.container\n };\n this.container.emit('statechange', eventObject);\n // @ts-ignore\n propagationDelegate(this.shape, 'statechange', eventObject);\n };\n /**\n * 清空状量态,恢复至初始状态。\n */\n Element.prototype.clearStates = function () {\n var _this = this;\n var states = this.states;\n each(states, function (state) {\n _this.setState(state, false);\n });\n this.states = [];\n };\n /**\n * 查询当前 Element 上是否已设置 `stateName` 对应的状态。\n * @param stateName 状态名称。\n * @returns true 表示存在,false 表示不存在。\n */\n Element.prototype.hasState = function (stateName) {\n return this.states.includes(stateName);\n };\n /**\n * 获取当前 Element 上所有的状态。\n * @returns 当前 Element 上所有的状态数组。\n */\n Element.prototype.getStates = function () {\n return this.states;\n };\n /**\n * 获取 Element 对应的原始数据。\n * @returns 原始数据。\n */\n Element.prototype.getData = function () {\n return this.data;\n };\n /**\n * 获取 Element 对应的图形绘制数据。\n * @returns 图形绘制数据。\n */\n Element.prototype.getModel = function () {\n return this.model;\n };\n /**\n * 返回 Element 元素整体的 bbox,包含文本及文本连线(有的话)。\n * @returns 整体包围盒。\n */\n Element.prototype.getBBox = function () {\n var _a = this,\n shape = _a.shape,\n labelShape = _a.labelShape;\n var bbox = {\n x: 0,\n y: 0,\n minX: 0,\n minY: 0,\n maxX: 0,\n maxY: 0,\n width: 0,\n height: 0\n };\n if (shape) {\n bbox = shape.getCanvasBBox();\n }\n if (labelShape) {\n labelShape.forEach(function (label) {\n var labelBBox = label.getCanvasBBox();\n bbox.x = Math.min(labelBBox.x, bbox.x);\n bbox.y = Math.min(labelBBox.y, bbox.y);\n bbox.minX = Math.min(labelBBox.minX, bbox.minX);\n bbox.minY = Math.min(labelBBox.minY, bbox.minY);\n bbox.maxX = Math.max(labelBBox.maxX, bbox.maxX);\n bbox.maxY = Math.max(labelBBox.maxY, bbox.maxY);\n });\n }\n bbox.width = bbox.maxX - bbox.minX;\n bbox.height = bbox.maxY - bbox.minY;\n return bbox;\n };\n Element.prototype.getStatesStyle = function () {\n if (!this.statesStyle) {\n var _a = this,\n shapeType = _a.shapeType,\n geometry = _a.geometry,\n shapeFactory = _a.shapeFactory;\n var stateOption = geometry.stateOption;\n var defaultShapeType = shapeFactory.defaultShapeType;\n var stateTheme = shapeFactory.theme[shapeType] || shapeFactory.theme[defaultShapeType];\n this.statesStyle = deepMix({}, stateTheme, stateOption);\n }\n return this.statesStyle;\n };\n // 从主题中获取对应状态量的样式\n Element.prototype.getStateStyle = function (stateName, shapeKey) {\n var statesStyle = this.getStatesStyle();\n var stateCfg = get(statesStyle, [stateName, 'style'], {});\n var shapeStyle = stateCfg[shapeKey] || stateCfg;\n if (isFunction(shapeStyle)) {\n return shapeStyle(this);\n }\n return shapeStyle;\n };\n // 获取动画配置\n Element.prototype.getAnimateCfg = function (animateType) {\n var _this = this;\n var animate = this.animate;\n if (animate) {\n var cfg_1 = animate[animateType];\n if (cfg_1) {\n // 增加动画的回调函数,如果外部传入了,则先执行外部,然后发射 geometry 的 animate 事件\n return __assign(__assign({}, cfg_1), {\n callback: function callback() {\n var _a;\n isFunction(cfg_1.callback) && cfg_1.callback();\n (_a = _this.geometry) === null || _a === void 0 ? void 0 : _a.emit(GEOMETRY_LIFE_CIRCLE.AFTER_DRAW_ANIMATE);\n }\n });\n }\n return cfg_1;\n }\n return null;\n };\n // 绘制图形\n Element.prototype.drawShape = function (model, isUpdate) {\n var _a;\n if (isUpdate === void 0) {\n isUpdate = false;\n }\n var _b = this,\n shapeFactory = _b.shapeFactory,\n container = _b.container,\n shapeType = _b.shapeType;\n // 自定义 shape 有可能返回空 shape\n this.shape = shapeFactory.drawShape(shapeType, model, container);\n if (this.shape) {\n this.setShapeInfo(this.shape, model); // 存储绘图数据\n // @ts-ignore\n var name_1 = this.shape.cfg.name;\n // 附加 element 的 name, name 现在支持数组了,很好用了\n if (!name_1) {\n // 这个地方如果用户添加了 name, 则附加 name ,否则就添加自己的 name\n // @ts-ignore\n this.shape.cfg.name = ['element', this.shapeFactory.geometryType];\n } else if (isString(name_1)) {\n // @ts-ignore\n this.shape.cfg.name = ['element', name_1];\n }\n // 执行入场动画\n var animateType = isUpdate ? 'enter' : 'appear';\n var animateCfg = this.getAnimateCfg(animateType);\n if (animateCfg) {\n // 开始执行动画的生命周期\n (_a = this.geometry) === null || _a === void 0 ? void 0 : _a.emit(GEOMETRY_LIFE_CIRCLE.BEFORE_DRAW_ANIMATE);\n doAnimate(this.shape, animateCfg, {\n coordinate: shapeFactory.coordinate,\n toAttrs: __assign({}, this.shape.attr())\n });\n }\n }\n };\n // 获取虚拟 Group\n Element.prototype.getOffscreenGroup = function () {\n if (!this.offscreenGroup) {\n var GroupCtor = this.container.getGroupBase(); // 获取分组的构造函数\n this.offscreenGroup = new GroupCtor({});\n }\n return this.offscreenGroup;\n };\n // 设置 shape 上需要携带的信息\n Element.prototype.setShapeInfo = function (shape, data) {\n var _this = this;\n // @ts-ignore\n shape.cfg.origin = data;\n // @ts-ignore\n shape.cfg.element = this;\n if (shape.isGroup()) {\n var children = shape.get('children');\n children.forEach(function (child) {\n _this.setShapeInfo(child, data);\n });\n }\n };\n // 更新当前 shape 的样式\n Element.prototype.syncShapeStyle = function (sourceShape, targetShape, states, animateCfg, index) {\n var _this = this;\n var _a;\n if (states === void 0) {\n states = [];\n }\n if (index === void 0) {\n index = 0;\n }\n if (!sourceShape || !targetShape) {\n return;\n }\n // 所有的 shape 都需要同步 clip\n var clip = sourceShape.get('clipShape');\n var newClip = targetShape.get('clipShape');\n this.syncShapeStyle(clip, newClip, states, animateCfg);\n if (sourceShape.isGroup()) {\n var children = sourceShape.get('children');\n var newChildren = targetShape.get('children');\n for (var i = 0; i < children.length; i++) {\n this.syncShapeStyle(children[i], newChildren[i], states, animateCfg, index + i);\n }\n } else {\n if (!isEmpty(states) && !isEqual(states, ['reset'])) {\n var name_2 = sourceShape.get('name');\n if (isArray(name_2)) {\n // 会附加 element 的 name\n name_2 = name_2[1];\n }\n each(states, function (state) {\n // background shape 不进行状态样式设置\n if (targetShape.get('name') !== BACKGROUND_SHAPE) {\n var style = _this.getStateStyle(state, name_2 || index); // 如果用户没有设置 name,则默认根据索引值\n targetShape.attr(style);\n }\n });\n }\n var newAttrs = getReplaceAttrs(sourceShape, targetShape);\n if (this.animate) {\n if (animateCfg) {\n (_a = this.geometry) === null || _a === void 0 ? void 0 : _a.emit(GEOMETRY_LIFE_CIRCLE.BEFORE_DRAW_ANIMATE);\n // 需要进行动画\n doAnimate(sourceShape, animateCfg, {\n coordinate: this.shapeFactory.coordinate,\n toAttrs: newAttrs,\n shapeModel: this.model\n });\n } else if (!isEmpty(states)) {\n sourceShape.stopAnimate();\n sourceShape.animate(newAttrs, {\n duration: 300\n });\n } else {\n sourceShape.attr(newAttrs);\n }\n } else {\n sourceShape.attr(newAttrs);\n }\n }\n };\n Element.prototype.getShapeType = function (model) {\n var shape = get(model, 'shape');\n return isArray(shape) ? shape[0] : shape;\n };\n return Element;\n}(Base);\nexport default Element;","var GEOMETRY_LABELS_MAP = {};\nvar GEOMETRY_LABELS_LAYOUT_MAP = {};\n/**\n * 获取 `type` 对应的 [[GeometryLabel]] 类\n * @param type\n * @returns\n */\nexport function getGeometryLabel(type) {\n return GEOMETRY_LABELS_MAP[type.toLowerCase()];\n}\n/**\n * 注册定义的 GeometryLabel 类\n * @param type GeometryLabel 类型名称\n * @param ctor GeometryLabel 类\n */\nexport function registerGeometryLabel(type, ctor) {\n GEOMETRY_LABELS_MAP[type.toLowerCase()] = ctor;\n}\n/**\n * 获取 `type` 对应的 [[GeometryLabelsLayoutFn]] label 布局函数\n * @param type 布局函数名称\n * @returns\n */\nexport function getGeometryLabelLayout(type) {\n return GEOMETRY_LABELS_LAYOUT_MAP[type.toLowerCase()];\n}\n/**\n * 注册定义的 label 布局函数\n * @param type label 布局函数名称\n * @param layoutFn label 布局函数\n */\nexport function registerGeometryLabelLayout(type, layoutFn) {\n GEOMETRY_LABELS_LAYOUT_MAP[type.toLowerCase()] = layoutFn;\n}","import { __assign } from \"tslib\";\nimport { parsePathString } from '@antv/path-util';\nimport { deepMix, get, upperFirst } from '@antv/util';\nimport { convertNormalPath, convertPolarPath } from './util/path';\n/** ShapeFactory 基类 */\nvar ShapeFactoryBase = {\n /** 坐标系对象 */\n coordinate: null,\n /** 默认绘制的 Shape 类型 */\n defaultShapeType: null,\n /** 主题样式 */\n theme: null,\n /**\n * 获取 shape 绘制需要的关键点\n * @param shapeType shape 类型\n * @param shapePoint 每条数据映射后的坐标点以及 size 数值\n * @returns 图形关键点信息\n */\n getShapePoints: function getShapePoints(shapeType, shapePoint) {\n var shape = this.getShape(shapeType);\n if (shape.getPoints) {\n return shape.getPoints(shapePoint);\n }\n return this.getDefaultPoints(shapePoint);\n },\n /**\n * 根据 shape 类型获取具体的 shape 实例\n * @param shapeType string shape 的类型\n * @returns\n */\n getShape: function getShape(shapeType) {\n var shape = this[shapeType] || this[this.defaultShapeType];\n shape.coordinate = this.coordinate;\n return shape;\n },\n /**\n * 获取 shape 的默认关键点\n * @override\n */\n getDefaultPoints: function getDefaultPoints() {\n return [];\n },\n /**\n * 获取 shape 的默认绘制样式 (内置的 shapeFactory 均有注册默认样式)\n */\n getDefaultStyle: function getDefaultStyle(geometryTheme) {\n return get(geometryTheme, [this.defaultShapeType, 'default', 'style'], {});\n },\n /**\n * 获取 shape 对应的缩略图配置信息。\n * @param shapeType shape 类型\n * @param color 颜色\n * @param isInPolar 是否在极坐标系下\n * @returns 返回缩略图 marker 配置。\n */\n getMarker: function getMarker(shapeType, markerCfg) {\n var shape = this.getShape(shapeType);\n if (!shape.getMarker) {\n var defaultShapeType = this.defaultShapeType;\n shape = this.getShape(defaultShapeType);\n }\n var theme = this.theme;\n var shapeStyle = get(theme, [shapeType, 'default'], {});\n var markerStyle = shape.getMarker(markerCfg);\n return deepMix({}, shapeStyle, markerStyle);\n },\n /**\n * 绘制 shape\n * @override\n * @param shapeType 绘制的 shape 类型\n * @param cfg 绘制 shape 需要的信息\n * @param element Element 实例\n * @returns\n */\n drawShape: function drawShape(shapeType, cfg, container) {\n var shape = this.getShape(shapeType);\n return shape.draw(cfg, container);\n }\n};\n/** Shape 基类 */\nvar ShapeBase = {\n /** 坐标系对象 */\n coordinate: null,\n /**\n * 将归一化的 path 转换成坐标系下的 path\n * @param path 归一化的路径\n * @returns\n */\n parsePath: function parsePath(path) {\n var coordinate = this.coordinate;\n var parsedPath = parsePathString(path);\n if (coordinate.isPolar) {\n parsedPath = convertPolarPath(coordinate, parsedPath);\n } else {\n parsedPath = convertNormalPath(coordinate, parsedPath);\n }\n return parsedPath;\n },\n /**\n * 将归一化的坐标转换成画布坐标\n * @param point 归一化的坐标点数据\n * @returns\n */\n parsePoint: function parsePoint(point) {\n var coordinate = this.coordinate;\n return coordinate.convert(point);\n },\n /**\n * 0~1 points 转 画布 points\n * @param points 节点集合\n * @returns\n */\n parsePoints: function parsePoints(points) {\n var coordinate = this.coordinate;\n return points.map(function (point) {\n return coordinate.convert(point);\n });\n },\n /**\n * 绘制 shape\n * @override\n */\n draw: function draw(cfg, container) {}\n};\nvar ShapeFactoryMap = {};\n/**\n * 注册 ShapeFactory。\n * @param factoryName ShapeFactory 名称,对应 Geometry 几何标记名称。\n * @param cfg 注册 ShapeFactory 需要覆写定义的属性。\n * @returns 返回 ShapeFactory 对象。\n */\nexport function registerShapeFactory(factoryName, cfg) {\n var className = upperFirst(factoryName);\n var geomObj = __assign(__assign(__assign({}, ShapeFactoryBase), cfg), {\n geometryType: factoryName\n });\n ShapeFactoryMap[className] = geomObj;\n return geomObj;\n}\n/**\n * 注册 Shape。\n * @param factoryName 对应的 ShapeFactory 名称。\n * @param shapeType 注册的 shape 名称。\n * @param cfg 注册 Shape 需要覆写定义的属性。\n * @returns shape 返回注册的 shape 对象。\n */\nexport function registerShape(factoryName, shapeType, cfg) {\n var className = upperFirst(factoryName);\n var factory = ShapeFactoryMap[className];\n var shapeObj = __assign(__assign({}, ShapeBase), cfg);\n factory[shapeType] = shapeObj;\n return shapeObj;\n}\n/**\n * 获取 factoryName 对应的 shapeFactory\n * @param factoryName\n * @returns shape factory\n */\nexport function getShapeFactory(factoryName) {\n var className = upperFirst(factoryName);\n return ShapeFactoryMap[className];\n}","import { isEqual, some } from '@antv/util';\n/**\n * @ignore\n * Determines whether model is change\n * @param currentModel\n * @param preModel\n * @returns\n */\nexport function isModelChange(currentModel, preModel) {\n return some(['color', 'shape', 'size', 'x', 'y', 'isInCircle', 'data', 'style', 'defaultStyle', 'points', 'mappingData'], function (key) {\n return !isEqual(currentModel[key], preModel[key]);\n });\n}","import { isArray } from '@antv/util';\n/** @ignore */\nexport function parseFields(field) {\n if (isArray(field)) {\n return field;\n }\n return field.split('*');\n}","/**\n * 对比当前元素和之前的元素,返回 added, updated, removed\n * @param keyItem 之前的元素的,按照 key-item 的 object 的形式存储\n * @param keys 现在的元素,按照 array 的形式存储\n * @returns 由 added, updated, removed array 构成的 object\n */\nexport function diff(keyItem, keys) {\n var added = [];\n var updated = [];\n var removed = [];\n var keyIncluded = new Map();\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (keyItem[key]) updated.push(key);else added.push(key);\n keyIncluded.set(key, true);\n }\n Object.keys(keyItem).forEach(function (key) {\n if (!keyIncluded.has(key)) removed.push(key);\n });\n return {\n added: added,\n updated: updated,\n removed: removed\n };\n}","import { __assign, __awaiter, __extends, __generator, __read, __spreadArray, __values } from \"tslib\";\nimport { getAdjust as getAdjustClass } from '@antv/adjust';\nimport { getAttribute as getAttributeClass } from '@antv/attr';\nimport { clone, deepMix, each, flatten, get, isArray, isEmpty, isEqual, isFunction, isNil, isNumber, isObject, isPlainObject, isString, set } from '@antv/util';\nimport { doGroupAppearAnimate, getDefaultAnimateCfg } from '../animate';\nimport Base from '../base';\nimport { FIELD_ORIGIN, GEOMETRY_LIFE_CIRCLE, GROUP_ATTRS } from '../constant';\nimport { uniq } from '../util/helper';\nimport Element from './element';\nimport { getGeometryLabel } from './label';\nimport { getShapeFactory } from './shape/base';\nimport { group } from './util/group-data';\nimport { isModelChange } from './util/is-model-change';\nimport { parseFields } from './util/parse-fields';\nimport { diff } from './util/diff';\nimport { inferScaleType } from '../util/scale';\nimport { getXDimensionLength } from '../util/coordinate';\n/**\n * Geometry 几何标记基类,主要负责数据到图形属性的映射以及绘制逻辑。\n */\nvar Geometry = /** @class */function (_super) {\n __extends(Geometry, _super);\n /**\n * 创建 Geometry 实例。\n * @param cfg\n */\n function Geometry(cfg) {\n var _this = _super.call(this, cfg) || this;\n /** Geometry 几何标记类型。 */\n _this.type = 'base';\n // 内部产生的属性\n /** Attribute map */\n _this.attributes = {};\n /** Element map */\n _this.elements = [];\n /** 使用 key-value 结构存储 Element,key 为每个 Element 实例对应的唯一 ID */\n _this.elementsMap = {};\n /** animate 配置项 */\n _this.animateOption = true;\n /** 图形属性映射配置 */\n _this.attributeOption = {};\n /** 存储上一次渲染时的 element 映射表,用于更新逻辑 */\n _this.lastElementsMap = {};\n /** 是否生成多个点来绘制图形。 */\n _this.generatePoints = false;\n /** 存储发生图形属性映射前的数据 */\n _this.beforeMappingData = null;\n _this.adjusts = {};\n _this.idFields = [];\n _this.hasSorted = false;\n _this.isCoordinateChanged = false;\n var container = cfg.container,\n labelsContainer = cfg.labelsContainer,\n coordinate = cfg.coordinate,\n data = cfg.data,\n _a = cfg.sortable,\n sortable = _a === void 0 ? false : _a,\n _b = cfg.visible,\n visible = _b === void 0 ? true : _b,\n theme = cfg.theme,\n _c = cfg.scales,\n scales = _c === void 0 ? {} : _c,\n _d = cfg.scaleDefs,\n scaleDefs = _d === void 0 ? {} : _d,\n // 柱状图间隔与宽度相关配置\n intervalPadding = cfg.intervalPadding,\n dodgePadding = cfg.dodgePadding,\n maxColumnWidth = cfg.maxColumnWidth,\n minColumnWidth = cfg.minColumnWidth,\n columnWidthRatio = cfg.columnWidthRatio,\n roseWidthRatio = cfg.roseWidthRatio,\n multiplePieWidthRatio = cfg.multiplePieWidthRatio,\n zIndexReversed = cfg.zIndexReversed,\n sortZIndex = cfg.sortZIndex,\n useDeferredLabel = cfg.useDeferredLabel;\n _this.container = container;\n _this.labelsContainer = labelsContainer;\n _this.coordinate = coordinate;\n _this.data = data;\n _this.sortable = sortable;\n _this.visible = visible;\n _this.userTheme = theme;\n _this.scales = scales;\n _this.scaleDefs = scaleDefs;\n // 柱状图间隔与宽度相关配置\n _this.intervalPadding = intervalPadding;\n _this.dodgePadding = dodgePadding;\n _this.maxColumnWidth = maxColumnWidth;\n _this.minColumnWidth = minColumnWidth;\n _this.columnWidthRatio = columnWidthRatio;\n _this.roseWidthRatio = roseWidthRatio;\n _this.multiplePieWidthRatio = multiplePieWidthRatio;\n _this.zIndexReversed = zIndexReversed;\n _this.sortZIndex = sortZIndex;\n _this.useDeferredLabel = useDeferredLabel ? typeof useDeferredLabel === 'number' ? useDeferredLabel : Infinity : null;\n return _this;\n }\n /**\n * 配置 position 通道映射规则。\n *\n * @example\n * ```typescript\n * // 数据结构: [{ x: 'A', y: 10, color: 'red' }]\n * geometry.position('x*y');\n * geometry.position([ 'x', 'y' ]);\n * geometry.position({\n * fields: [ 'x', 'y' ],\n * });\n * ```\n *\n * @param cfg 映射规则\n * @returns\n */\n Geometry.prototype.position = function (cfg) {\n var positionCfg = cfg;\n if (!isPlainObject(cfg)) {\n // 字符串字段或者数组字段\n positionCfg = {\n fields: parseFields(cfg)\n };\n }\n var fields = get(positionCfg, 'fields');\n if (fields.length === 1) {\n // 默认填充一维 1*xx\n fields.unshift('1');\n set(positionCfg, 'fields', fields);\n }\n set(this.attributeOption, 'position', positionCfg);\n return this;\n };\n Geometry.prototype.color = function (field, cfg) {\n this.createAttrOption('color', field, cfg);\n return this;\n };\n Geometry.prototype.shape = function (field, cfg) {\n this.createAttrOption('shape', field, cfg);\n return this;\n };\n Geometry.prototype.size = function (field, cfg) {\n this.createAttrOption('size', field, cfg);\n return this;\n };\n /**\n * 设置数据调整方式。G2 目前内置了四种类型:\n * 1. dodge\n * 2. stack\n * 3. symmetric\n * 4. jitter\n *\n *\n * **Tip**\n * + 对于 'dodge' 类型,可以额外进行如下属性的配置:\n * ```typescript\n * geometry.adjust('dodge', {\n * marginRatio: 0, // 取 0 到 1 范围的值(相对于每个柱子宽度),用于控制一个分组中柱子之间的间距\n * dodgeBy: 'x', // 该属性只对 'dodge' 类型生效,声明以哪个数据字段为分组依据\n * });\n * ```\n *\n * + 对于 'stack' 类型,可以额外进行如下属性的配置:\n * ```typescript\n * geometry.adjust('stack', {\n * reverseOrder: false, // 用于控制是否对数据进行反序操作\n * });\n * ```\n *\n * @example\n * ```typescript\n * geometry.adjust('stack');\n *\n * geometry.adjust({\n * type: 'stack',\n * reverseOrder: false,\n * });\n *\n * // 组合使用 adjust\n * geometry.adjust([ 'stack', 'dodge' ]);\n *\n * geometry.adjust([\n * { type: 'stack' },\n * { type: 'dodge', dodgeBy: 'x' },\n * ]);\n * ```\n *\n * @param adjustCfg 数据调整配置\n * @returns\n */\n Geometry.prototype.adjust = function (adjustCfg) {\n var adjusts = adjustCfg;\n if (isString(adjustCfg) || isPlainObject(adjustCfg)) {\n adjusts = [adjustCfg];\n }\n each(adjusts, function (adjust, index) {\n if (!isObject(adjust)) {\n adjusts[index] = {\n type: adjust\n };\n }\n });\n this.adjustOption = adjusts;\n return this;\n };\n Geometry.prototype.style = function (field, styleFunc) {\n if (isString(field)) {\n var fields = parseFields(field);\n this.styleOption = {\n fields: fields,\n callback: styleFunc\n };\n } else {\n var _a = field,\n fields = _a.fields,\n callback = _a.callback,\n cfg = _a.cfg;\n if (fields || callback || cfg) {\n this.styleOption = field;\n } else {\n this.styleOption = {\n cfg: field\n };\n }\n }\n return this;\n };\n Geometry.prototype.tooltip = function (field, cfg) {\n if (isString(field)) {\n var fields = parseFields(field);\n this.tooltipOption = {\n fields: fields,\n callback: cfg\n };\n } else {\n this.tooltipOption = field;\n }\n return this;\n };\n /**\n * Geometry 动画配置。\n *\n * + `animate(false)` 关闭动画\n * + `animate(true)` 开启动画,默认开启。\n *\n * 我们将动画分为四个场景:\n * 1. appear: 图表第一次加载时的入场动画;\n * 2. enter: 图表绘制完成,发生更新后,产生的新图形的进场动画;\n * 3. update: 图表绘制完成,数据发生变更后,有状态变更的图形的更新动画;\n * 4. leave: 图表绘制完成,数据发生变更后,被销毁图形的销毁动画。\n *\n * @example\n * ```typescript\n * animate({\n * enter: {\n * duration: 1000, // enter 动画执行时间\n * },\n * leave: false, // 关闭 leave 销毁动画\n * });\n * ```\n *\n * @param cfg 动画配置\n * @returns\n */\n Geometry.prototype.animate = function (cfg) {\n this.animateOption = cfg;\n return this;\n };\n Geometry.prototype.label = function (field, secondParam, thirdParam) {\n if (isString(field)) {\n var labelOption = {};\n var fields = parseFields(field);\n labelOption.fields = fields;\n if (isFunction(secondParam)) {\n labelOption.callback = secondParam;\n } else if (isPlainObject(secondParam)) {\n labelOption.cfg = secondParam;\n }\n if (thirdParam) {\n labelOption.cfg = thirdParam;\n }\n this.labelOption = labelOption;\n } else {\n this.labelOption = field;\n }\n return this;\n };\n /**\n * 设置状态对应的样式。\n *\n * @example\n * ```ts\n * chart.interval().state({\n * selected: {\n * animate: { duration: 100, easing: 'easeLinear' },\n * style: {\n * lineWidth: 2,\n * stroke: '#000',\n * },\n * },\n * });\n * ```\n *\n * 如果图形 shape 是由多个 shape 组成,即为一个 G.Group 对象,那么针对 group 中的每个 shape,我们需要使用下列方式进行状态样式设置:\n * 如果我们为 group 中的每个 shape 设置了 'name' 属性(shape.set('name', 'xx')),则以 'name' 作为 key,否则默认以索引值(即 shape 的 添加顺序)为 key。\n *\n * ```ts\n * chart.interval().shape('groupShape').state({\n * selected: {\n * style: {\n * 0: { lineWidth: 2 },\n * 1: { fillOpacity: 1 },\n * }\n * }\n * });\n * ```\n *\n * @param cfg 状态样式\n */\n Geometry.prototype.state = function (cfg) {\n this.stateOption = cfg;\n return this;\n };\n /**\n * 用于向 shape 中传入自定义的数据。目前可能仅仅可能用于在自定义 shape 的时候,像自定义 shape 中传入自定义的数据,方便实现自定义 shape 的配置能力。\n *\n * @example\n * ```ts\n * chart.interval().customInfo({ yourData: 'hello, g2!' });\n * ```\n *\n * 然后在自定义 shape 的时候,可以拿到这个信息。\n *\n * ```ts\n * registerShape('interval', 'your-shape', {\n * draw(shapeInfo, container) {\n * const { customInfo } = shapeInfo;\n * console.log(customInfo); // will log { yourData: 'hello, g2!' }.\n * }\n * });\n * ```\n *\n * @param cfg\n */\n Geometry.prototype.customInfo = function (cfg) {\n this.customOption = cfg;\n return this;\n };\n /**\n * 初始化 Geomtry 实例:\n * 创建 [[Attribute]] and [[Scale]] 实例,进行数据处理,包括分组、数值化以及数据调整。\n */\n Geometry.prototype.init = function (cfg) {\n if (cfg === void 0) {\n cfg = {};\n }\n this.setCfg(cfg);\n this.initAttributes(); // 创建图形属性\n // 数据加工:分组 -> 数字化 -> adjust\n this.processData(this.data);\n // 调整 scale\n this.adjustScale();\n };\n /**\n * Geometry 更新。\n * @param [cfg] 更新的配置\n */\n Geometry.prototype.update = function (cfg) {\n if (cfg === void 0) {\n cfg = {};\n }\n var data = cfg.data,\n isDataChanged = cfg.isDataChanged,\n isCoordinateChanged = cfg.isCoordinateChanged;\n var _a = this,\n attributeOption = _a.attributeOption,\n lastAttributeOption = _a.lastAttributeOption;\n if (!isEqual(attributeOption, lastAttributeOption)) {\n // 映射发生改变,则重新创建图形属性\n this.init(cfg);\n } else if (data && (isDataChanged || !isEqual(data, this.data))) {\n // 数据发生变化\n this.setCfg(cfg);\n this.initAttributes(); // 创建图形属性\n this.processData(data); // 数据加工:分组 -> 数字化 -> adjust\n } else {\n // 有可能 coordinate 变化\n this.setCfg(cfg);\n }\n // 调整 scale\n this.adjustScale();\n this.isCoordinateChanged = isCoordinateChanged;\n };\n /**\n * 将原始数据映射至图形空间,同时创建图形对象。\n */\n Geometry.prototype.paint = function (isUpdate) {\n var _this = this;\n if (isUpdate === void 0) {\n isUpdate = false;\n }\n if (this.animateOption) {\n this.animateOption = deepMix({}, getDefaultAnimateCfg(this.type, this.coordinate), this.animateOption);\n }\n this.defaultSize = undefined;\n this.elementsMap = {};\n this.elements = [];\n var offscreenGroup = this.getOffscreenGroup();\n offscreenGroup.clear();\n var beforeMappingData = this.beforeMappingData;\n var dataArray = this.beforeMapping(beforeMappingData);\n this.dataArray = new Array(dataArray.length);\n for (var i = 0; i < dataArray.length; i++) {\n var data = dataArray[i];\n this.dataArray[i] = this.mapping(data);\n }\n this.updateElements(this.dataArray, isUpdate);\n this.lastElementsMap = this.elementsMap;\n if (this.canDoGroupAnimation(isUpdate)) {\n // 如果用户没有配置 appear.animation,就默认走整体动画\n var container = this.container;\n var type = this.type;\n var coordinate = this.coordinate;\n var animateCfg = get(this.animateOption, 'appear');\n var yScale = this.getYScale();\n var yMinPoint = coordinate.convert({\n x: 0,\n y: yScale.scale(this.getYMinValue())\n });\n doGroupAppearAnimate(container, animateCfg, type, coordinate, yMinPoint);\n }\n // 添加 label\n if (this.labelOption) {\n var deferred = this.useDeferredLabel;\n var callback = function () {\n return _this.renderLabels(flatten(_this.dataArray), isUpdate);\n }.bind(this);\n if (typeof deferred === 'number') {\n // Use `requestIdleCallback` to render labels in idle time (like react fiber)\n var timeout = typeof deferred === 'number' && deferred !== Infinity ? deferred : 0;\n if (!window.requestIdleCallback) {\n setTimeout(callback, timeout);\n } else {\n var options = timeout && timeout !== Infinity ? {\n timeout: timeout\n } : undefined;\n window.requestIdleCallback(callback, options);\n }\n } else {\n callback();\n }\n }\n // 缓存,用于更新\n this.lastAttributeOption = __assign({}, this.attributeOption);\n if (this.visible === false) {\n // 用户在初始化的时候声明 visible: false\n this.changeVisible(false);\n }\n };\n /**\n * 清空当前 Geometry,配置项仍保留,但是内部创建的对象全部清空。\n * @override\n */\n Geometry.prototype.clear = function () {\n var _a = this,\n container = _a.container,\n geometryLabel = _a.geometryLabel,\n offscreenGroup = _a.offscreenGroup;\n if (container) {\n container.clear();\n }\n if (geometryLabel) {\n geometryLabel.clear();\n }\n if (offscreenGroup) {\n offscreenGroup.clear();\n }\n // 属性恢复至出厂状态\n this.scaleDefs = undefined;\n this.attributes = {};\n this.scales = {};\n this.elementsMap = {};\n this.lastElementsMap = {};\n this.elements = [];\n this.adjusts = {};\n this.dataArray = null;\n this.beforeMappingData = null;\n this.lastAttributeOption = undefined;\n this.defaultSize = undefined;\n this.idFields = [];\n this.groupScales = undefined;\n this.hasSorted = false;\n this.isCoordinateChanged = false;\n };\n /**\n * 销毁 Geometry 实例。\n */\n Geometry.prototype.destroy = function () {\n this.clear();\n var container = this.container;\n container.remove(true);\n if (this.offscreenGroup) {\n this.offscreenGroup.remove(true);\n this.offscreenGroup = null;\n }\n if (this.geometryLabel) {\n this.geometryLabel.destroy();\n this.geometryLabel = null;\n }\n this.theme = undefined;\n this.shapeFactory = undefined;\n _super.prototype.destroy.call(this);\n };\n /**\n * 获取决定分组的图形属性对应的 scale 实例。\n * @returns\n */\n Geometry.prototype.getGroupScales = function () {\n return this.groupScales;\n };\n /**\n * 根据名字获取图形属性实例。\n */\n Geometry.prototype.getAttribute = function (name) {\n return this.attributes[name];\n };\n /** 获取 x 轴对应的 scale 实例。 */\n Geometry.prototype.getXScale = function () {\n return this.getAttribute('position').scales[0];\n };\n /** 获取 y 轴对应的 scale 实例。 */\n Geometry.prototype.getYScale = function () {\n return this.getAttribute('position').scales[1];\n };\n /**\n * 获取决定分组的图形属性实例。\n */\n Geometry.prototype.getGroupAttributes = function () {\n var rst = [];\n each(this.attributes, function (attr) {\n if (GROUP_ATTRS.includes(attr.type)) {\n rst.push(attr);\n }\n });\n return rst;\n };\n /** 获取图形属性默认的映射值。 */\n Geometry.prototype.getDefaultValue = function (attrName) {\n var value;\n var attr = this.getAttribute(attrName);\n if (attr && isEmpty(attr.scales)) {\n // 获取映射至常量的值\n value = attr.values[0];\n }\n return value;\n };\n /**\n * 获取该数据发生图形映射后对应的 Attribute 图形空间数据。\n * @param attr Attribute 图形属性实例。\n * @param obj 需要进行映射的原始数据。\n * @returns\n */\n Geometry.prototype.getAttributeValues = function (attr, obj) {\n var params = [];\n var scales = attr.scales;\n for (var index = 0, length_1 = scales.length; index < length_1; index++) {\n var scale = scales[index];\n var field = scale.field;\n if (scale.isIdentity) {\n params.push(scale.values);\n } else {\n params.push(obj[field]);\n }\n }\n return attr.mapping.apply(attr, __spreadArray([], __read(params), false));\n };\n /**\n * 获取对应的 adjust 实例\n * @param adjustType\n * @returns\n */\n Geometry.prototype.getAdjust = function (adjustType) {\n return this.adjusts[adjustType];\n };\n /**\n * 获得 coordinate 实例\n * @returns\n */\n Geometry.prototype.getCoordinate = function () {\n return this.coordinate;\n };\n Geometry.prototype.getData = function () {\n return this.data;\n };\n /**\n * 获取 shape 对应的 marker 样式。\n * @param shapeName shape 具体名字\n * @param cfg marker 信息\n * @returns\n */\n Geometry.prototype.getShapeMarker = function (shapeName, cfg) {\n var shapeFactory = this.getShapeFactory();\n return shapeFactory.getMarker(shapeName, cfg);\n };\n /**\n * 根据一定的规则查找 Geometry 的 Elements。\n *\n * ```typescript\n * getElementsBy((element) => {\n * const data = element.getData();\n *\n * return data.a === 'a';\n * });\n * ```\n *\n * @param condition 定义查找规则的回调函数。\n * @returns\n */\n Geometry.prototype.getElementsBy = function (condition) {\n return this.elements.filter(function (element) {\n return condition(element);\n });\n };\n /**\n * 获取 Geometry 的所有 Elements。\n *\n * ```typescript\n * getElements();\n * ```\n */\n Geometry.prototype.getElements = function () {\n return this.elements;\n };\n /**\n * 获取数据对应的唯一 id。\n * @param data Element 对应的绘制数据\n * @returns\n */\n Geometry.prototype.getElementId = function (data) {\n data = isArray(data) ? data[0] : data;\n var originData = data[FIELD_ORIGIN];\n // 如果用户声明了使用哪些字段作为 id 值\n if (this.idFields.length) {\n var elementId = originData[this.idFields[0]];\n for (var index = 1; index < this.idFields.length; index++) {\n elementId += '-' + originData[this.idFields[index]];\n }\n return elementId;\n }\n var type = this.type;\n var xScale = this.getXScale();\n var yScale = this.getYScale();\n var xField = xScale.field || 'x';\n var yField = yScale.field || 'y';\n var yVal = originData[yField];\n var xVal;\n if (xScale.type === 'identity') {\n xVal = xScale.values[0];\n } else {\n xVal = originData[xField];\n }\n var id;\n if (type === 'interval' || type === 'schema') {\n id = \"\".concat(xVal);\n } else if (type === 'line' || type === 'area' || type === 'path') {\n id = type;\n } else {\n id = \"\".concat(xVal, \"-\").concat(yVal);\n }\n var groupScales = this.groupScales;\n for (var index = 0, length_2 = groupScales.length; index < length_2; index++) {\n var groupScale = groupScales[index];\n var field = groupScale.field;\n id = \"\".concat(id, \"-\").concat(originData[field]);\n }\n // 用户在进行 dodge 类型的 adjust 调整的时候设置了 dodgeBy 属性\n var dodgeAdjust = this.getAdjust('dodge');\n if (dodgeAdjust) {\n var dodgeBy = dodgeAdjust.dodgeBy;\n if (dodgeBy) {\n id = \"\".concat(id, \"-\").concat(originData[dodgeBy]);\n }\n }\n if (this.getAdjust('jitter')) {\n id = \"\".concat(id, \"-\").concat(data.x, \"-\").concat(data.y);\n }\n return id;\n };\n /**\n * 获取所有需要创建 scale 的字段名称。\n */\n Geometry.prototype.getScaleFields = function () {\n var fields = [];\n var tmpMap = new Map();\n var _a = this,\n attributeOption = _a.attributeOption,\n labelOption = _a.labelOption,\n tooltipOption = _a.tooltipOption;\n // 获取图形属性上的 fields\n for (var attributeType in attributeOption) {\n if (attributeOption.hasOwnProperty(attributeType)) {\n var eachOpt = attributeOption[attributeType];\n if (eachOpt.fields) {\n uniq(eachOpt.fields, fields, tmpMap);\n } else if (eachOpt.values) {\n // 考虑 size(10), shape('circle') 等场景\n uniq(eachOpt.values, fields, tmpMap);\n }\n }\n }\n // 获取 label 上的字段\n if (labelOption && labelOption.fields) {\n uniq(labelOption.fields, fields, tmpMap);\n }\n // 获取 tooltip 上的字段\n if (isObject(tooltipOption) && tooltipOption.fields) {\n uniq(tooltipOption.fields, fields, tmpMap);\n }\n return fields;\n };\n /**\n * 显示或者隐藏 geometry。\n * @param visible\n */\n Geometry.prototype.changeVisible = function (visible) {\n _super.prototype.changeVisible.call(this, visible);\n var elements = this.elements;\n for (var index = 0, length_3 = elements.length; index < length_3; index++) {\n var element = elements[index];\n element.changeVisible(visible);\n }\n if (visible) {\n if (this.container) {\n this.container.show();\n }\n if (this.labelsContainer) {\n this.labelsContainer.show();\n }\n } else {\n if (this.container) {\n this.container.hide();\n }\n if (this.labelsContainer) {\n this.labelsContainer.hide();\n }\n }\n };\n /**\n * 获得所有的字段\n */\n Geometry.prototype.getFields = function () {\n var uniqMap = new Map();\n var fields = [];\n Object.values(this.attributeOption).forEach(function (cfg) {\n var fs = (cfg === null || cfg === void 0 ? void 0 : cfg.fields) || [];\n fs.forEach(function (f) {\n if (!uniqMap.has(f)) {\n fields.push(f);\n }\n uniqMap.set(f, true);\n });\n }, []);\n return fields;\n };\n /**\n * 获取当前配置中的所有分组 & 分类的字段。\n * @return fields string[]\n */\n Geometry.prototype.getGroupFields = function () {\n var groupFields = [];\n var tmpMap = new Map(); // 用于去重过滤\n for (var index = 0, length_4 = GROUP_ATTRS.length; index < length_4; index++) {\n var attributeName = GROUP_ATTRS[index];\n var cfg = this.attributeOption[attributeName];\n if (cfg && cfg.fields) {\n uniq(cfg.fields, groupFields, tmpMap);\n }\n }\n return groupFields;\n };\n /**\n * 获得图形的 x y 字段。\n */\n Geometry.prototype.getXYFields = function () {\n var _a = __read(this.attributeOption.position.fields, 2),\n x = _a[0],\n y = _a[1];\n return [x, y];\n };\n /**\n * x 字段\n * @returns\n */\n Geometry.prototype.getXField = function () {\n return get(this.getXYFields(), [0]);\n };\n /**\n * y 字段\n * @returns\n */\n Geometry.prototype.getYField = function () {\n return get(this.getXYFields(), [1]);\n };\n /**\n * 获取该 Geometry 下所有生成的 shapes。\n * @returns shapes\n */\n Geometry.prototype.getShapes = function () {\n return this.elements.map(function (element) {\n return element.shape;\n });\n };\n /**\n * 获取虚拟 Group。\n * @returns\n */\n Geometry.prototype.getOffscreenGroup = function () {\n if (!this.offscreenGroup) {\n var GroupCtor = this.container.getGroupBase(); // 获取分组的构造函数\n this.offscreenGroup = new GroupCtor({});\n }\n return this.offscreenGroup;\n };\n // 对数据进行排序\n Geometry.prototype.sort = function (mappingArray) {\n if (!this.hasSorted) {\n // 未发生过排序\n var xScale_1 = this.getXScale();\n var xField_1 = xScale_1.field;\n for (var index = 0; index < mappingArray.length; index++) {\n var itemArr = mappingArray[index];\n itemArr.sort(function (obj1, obj2) {\n return xScale_1.translate(obj1[FIELD_ORIGIN][xField_1]) - xScale_1.translate(obj2[FIELD_ORIGIN][xField_1]);\n });\n }\n }\n this.hasSorted = true;\n };\n /**\n * 调整度量范围。主要针对发生层叠以及一些特殊需求的 Geometry,比如 Interval 下的柱状图 Y 轴默认从 0 开始。\n */\n Geometry.prototype.adjustScale = function () {\n var yScale = this.getYScale();\n // 如果数据发生过 stack adjust,需要调整下 yScale 的数据范围\n if (yScale && this.getAdjust('stack')) {\n this.updateStackRange(yScale, this.beforeMappingData);\n }\n };\n /**\n * 获取当前 Geometry 对应的 Shape 工厂实例。\n */\n Geometry.prototype.getShapeFactory = function () {\n var shapeType = this.shapeType;\n if (!getShapeFactory(shapeType)) {\n return;\n }\n if (!this.shapeFactory) {\n this.shapeFactory = clone(getShapeFactory(shapeType)); // 防止多个 view 共享一个 shapeFactory 实例,导致 coordinate 被篡改\n }\n // 因为这里缓存了 shapeFactory,但是外部可能会变更 coordinate,导致无法重新设置到 shapeFactory 中\n this.shapeFactory.coordinate = this.coordinate;\n // theme 原因同上\n this.shapeFactory.theme = this.theme.geometries[shapeType] || {};\n return this.shapeFactory;\n };\n /**\n * 获取每个 Shape 对应的关键点数据。\n * @param obj 经过分组 -> 数字化 -> adjust 调整后的数据记录\n * @returns\n */\n Geometry.prototype.createShapePointsCfg = function (obj) {\n var xScale = this.getXScale();\n var yScale = this.getYScale();\n var x = this.normalizeValues(obj[xScale.field], xScale);\n var y; // 存在没有 y 的情况\n if (yScale) {\n y = this.normalizeValues(obj[yScale.field], yScale);\n } else {\n y = obj.y ? obj.y : 0.1;\n }\n return {\n x: x,\n y: y,\n y0: yScale ? yScale.scale(this.getYMinValue()) : undefined\n };\n };\n /**\n * 创建 Element 实例。\n * @param mappingDatum Element 对应的绘制数据\n * @param [isUpdate] 是否处于更新阶段\n * @returns element 返回创建的 Element 实例\n */\n Geometry.prototype.createElement = function (mappingDatum, index, isUpdate) {\n if (isUpdate === void 0) {\n isUpdate = false;\n }\n var container = this.container;\n var shapeCfg = this.getDrawCfg(mappingDatum); // 获取绘制图形的配置信息\n var shapeFactory = this.getShapeFactory();\n var element = new Element({\n shapeFactory: shapeFactory,\n container: container,\n offscreenGroup: this.getOffscreenGroup(),\n elementIndex: index\n });\n element.animate = this.animateOption;\n element.geometry = this;\n element.draw(shapeCfg, isUpdate); // 绘制\n return element;\n };\n /**\n * 获取每条数据对应的图形绘制数据。\n * @param mappingDatum 映射后的数据\n * @returns draw cfg\n */\n Geometry.prototype.getDrawCfg = function (mappingDatum) {\n var originData = mappingDatum[FIELD_ORIGIN]; // 原始数据\n var cfg = {\n mappingData: mappingDatum,\n data: originData,\n x: mappingDatum.x,\n y: mappingDatum.y,\n color: mappingDatum.color,\n size: mappingDatum.size,\n isInCircle: this.coordinate.isPolar,\n customInfo: this.customOption\n };\n var shapeName = mappingDatum.shape;\n if (!shapeName && this.getShapeFactory()) {\n shapeName = this.getShapeFactory().defaultShapeType;\n }\n cfg.shape = shapeName;\n // 获取默认样式\n var theme = this.theme.geometries[this.shapeType];\n cfg.defaultStyle = get(theme, [shapeName, 'default'], {}).style;\n if (!cfg.defaultStyle && this.getShapeFactory()) {\n cfg.defaultStyle = this.getShapeFactory().getDefaultStyle(theme);\n }\n var styleOption = this.styleOption;\n if (styleOption) {\n cfg.style = this.getStyleCfg(styleOption, originData);\n }\n if (this.generatePoints) {\n cfg.points = mappingDatum.points;\n cfg.nextPoints = mappingDatum.nextPoints;\n }\n return cfg;\n };\n Geometry.prototype.updateElements = function (mappingDataArray, isUpdate) {\n var e_1, _a, e_2, _b, e_3, _c;\n if (isUpdate === void 0) {\n isUpdate = false;\n }\n var keyDatum = new Map();\n var keys = [];\n // 用来保持 diff 元素之后 added, updated 的相对顺序\n var keyIndex = new Map();\n var index = 0;\n // 获得更新数据所有的 keys\n // 将更新的数据用 key 索引\n for (var i = 0; i < mappingDataArray.length; i++) {\n var mappingData = mappingDataArray[i];\n for (var j = 0; j < mappingData.length; j++) {\n var mappingDatum = mappingData[j];\n var key = this.getElementId(mappingDatum);\n var finalKey = keyDatum.has(key) ? \"\".concat(key, \"-\").concat(i, \"-\").concat(j) : key;\n keys.push(finalKey);\n keyDatum.set(finalKey, mappingDatum);\n keyIndex.set(finalKey, index);\n index++;\n }\n }\n this.elements = new Array(index);\n var _d = diff(this.lastElementsMap, keys),\n added = _d.added,\n updated = _d.updated,\n removed = _d.removed;\n try {\n // 新建 element\n for (var added_1 = __values(added), added_1_1 = added_1.next(); !added_1_1.done; added_1_1 = added_1.next()) {\n var key = added_1_1.value;\n var mappingDatum = keyDatum.get(key);\n var i = keyIndex.get(key);\n var element = this.createElement(mappingDatum, i, isUpdate);\n this.elements[i] = element;\n this.elementsMap[key] = element;\n if (element.shape) {\n element.shape.set('zIndex', this.zIndexReversed ? this.elements.length - i : i);\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (added_1_1 && !added_1_1.done && (_a = added_1.return)) _a.call(added_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n try {\n // 更新 element\n for (var updated_1 = __values(updated), updated_1_1 = updated_1.next(); !updated_1_1.done; updated_1_1 = updated_1.next()) {\n var key = updated_1_1.value;\n var element = this.lastElementsMap[key];\n var mappingDatum = keyDatum.get(key);\n var currentShapeCfg = this.getDrawCfg(mappingDatum);\n var preShapeCfg = element.getModel();\n var i = keyIndex.get(key);\n if (this.isCoordinateChanged || isModelChange(currentShapeCfg, preShapeCfg)) {\n element.animate = this.animateOption;\n // 通过绘制数据的变更来判断是否需要更新,因为用户有可能会修改图形属性映射\n element.update(currentShapeCfg); // 更新对应的 element\n }\n\n this.elements[i] = element;\n this.elementsMap[key] = element;\n if (element.shape) {\n element.shape.set('zIndex', this.zIndexReversed ? this.elements.length - i : i);\n }\n }\n } catch (e_2_1) {\n e_2 = {\n error: e_2_1\n };\n } finally {\n try {\n if (updated_1_1 && !updated_1_1.done && (_b = updated_1.return)) _b.call(updated_1);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n // 全部 setZIndex 之后,再执行 sort\n if (this.container) {\n this.container.sort();\n }\n try {\n // 销毁被删除的 elements\n for (var removed_1 = __values(removed), removed_1_1 = removed_1.next(); !removed_1_1.done; removed_1_1 = removed_1.next()) {\n var key = removed_1_1.value;\n var element = this.lastElementsMap[key];\n // 更新动画配置,用户有可能在更新之前有对动画进行配置操作\n element.animate = this.animateOption;\n element.destroy();\n }\n } catch (e_3_1) {\n e_3 = {\n error: e_3_1\n };\n } finally {\n try {\n if (removed_1_1 && !removed_1_1.done && (_c = removed_1.return)) _c.call(removed_1);\n } finally {\n if (e_3) throw e_3.error;\n }\n }\n };\n /**\n * 获取渲染的 label 类型。\n */\n Geometry.prototype.getLabelType = function () {\n var _a = this,\n labelOption = _a.labelOption,\n coordinate = _a.coordinate,\n type = _a.type;\n var coordinateType = coordinate.type,\n isTransposed = coordinate.isTransposed;\n var labelType = get(labelOption, ['cfg', 'type']);\n if (!labelType) {\n // 用户未定义,则进行默认的逻辑\n if (coordinateType === 'polar') {\n // 极坐标下使用通用的极坐标文本,转置则使用饼图\n labelType = isTransposed ? 'pie' : 'polar';\n } else if (coordinateType === 'theta') {\n // theta 坐标系下使用饼图文本\n labelType = 'pie';\n } else if (type === 'interval' || type === 'polygon') {\n labelType = 'interval';\n } else {\n labelType = 'base';\n }\n }\n return labelType;\n };\n /**\n * 获取 Y 轴上的最小值。\n */\n Geometry.prototype.getYMinValue = function () {\n var yScale = this.getYScale();\n var min = yScale.min,\n max = yScale.max;\n var value;\n if (min >= 0) {\n value = min;\n } else if (max <= 0) {\n // 当值全位于负区间时,需要保证 ymin 在区域内,不可为 0\n value = max;\n } else {\n value = 0;\n }\n return value;\n };\n // 创建图形属性相关的配置项\n Geometry.prototype.createAttrOption = function (attrName, field, cfg) {\n if (isNil(field) || isObject(field)) {\n if (isObject(field) && isEqual(Object.keys(field), ['values'])) {\n // shape({ values: [ 'funnel' ] })\n set(this.attributeOption, attrName, {\n fields: field.values\n });\n } else {\n set(this.attributeOption, attrName, field);\n }\n } else {\n var attrCfg = {};\n if (isNumber(field)) {\n // size(3)\n attrCfg.values = [field];\n } else {\n attrCfg.fields = parseFields(field);\n }\n if (cfg) {\n if (isFunction(cfg)) {\n attrCfg.callback = cfg;\n } else {\n attrCfg.values = cfg;\n }\n }\n set(this.attributeOption, attrName, attrCfg);\n }\n };\n Geometry.prototype.initAttributes = function () {\n var _this = this;\n var _a = this,\n attributes = _a.attributes,\n attributeOption = _a.attributeOption,\n theme = _a.theme,\n shapeType = _a.shapeType;\n this.groupScales = [];\n var tmpMap = {};\n var _loop_1 = function _loop_1(attrType) {\n if (attributeOption.hasOwnProperty(attrType)) {\n var option = attributeOption[attrType];\n if (!option) {\n return {\n value: void 0\n };\n }\n var attrCfg = __assign({}, option);\n var callback = attrCfg.callback,\n values = attrCfg.values,\n _b = attrCfg.fields,\n fields = _b === void 0 ? [] : _b;\n // 获取每一个字段对应的 scale\n var scales = fields.map(function (field) {\n var scale = _this.scales[field];\n if (!tmpMap[field] && GROUP_ATTRS.includes(attrType)) {\n var inferedScaleType = inferScaleType(scale, get(_this.scaleDefs, field), attrType, _this.type);\n if (inferedScaleType === 'cat') {\n _this.groupScales.push(scale);\n tmpMap[field] = true;\n }\n }\n return scale;\n });\n attrCfg.scales = scales;\n if (attrType !== 'position' && scales.length === 1 && scales[0].type === 'identity') {\n // 用户在图形通道上声明了常量字段 color('red'), size(5)\n attrCfg.values = scales[0].values;\n } else if (!callback && !values) {\n // 用户没有指定任何规则,则使用默认的映射规则\n if (attrType === 'size') {\n attrCfg.values = theme.sizes;\n } else if (attrType === 'shape') {\n attrCfg.values = theme.shapes[shapeType] || [];\n } else if (attrType === 'color') {\n if (scales.length) {\n // 根据数值个数使用对应的色板\n attrCfg.values = scales[0].values.length <= 10 ? theme.colors10 : theme.colors20;\n } else {\n attrCfg.values = theme.colors10;\n }\n }\n }\n var AttributeCtor = getAttributeClass(attrType);\n attributes[attrType] = new AttributeCtor(attrCfg);\n }\n };\n // 遍历每一个 attrOption,各自创建 Attribute 实例\n for (var attrType in attributeOption) {\n var state_1 = _loop_1(attrType);\n if (typeof state_1 === \"object\") return state_1.value;\n }\n };\n // 处理数据:分组 -> 数字化 -> adjust 调整\n Geometry.prototype.processData = function (data) {\n var e_4, _a;\n this.hasSorted = false;\n var scales = this.getAttribute('position').scales;\n var categoryScales = scales.filter(function (scale) {\n return scale.isCategory;\n });\n var groupedArray = this.groupData(data); // 数据分组\n var beforeAdjust = [];\n for (var i = 0, len = groupedArray.length; i < len; i++) {\n var subData = groupedArray[i];\n var arr = [];\n for (var j = 0, subLen = subData.length; j < subLen; j++) {\n var originData = subData[j];\n var item = {};\n // tslint:disable-next-line: forin\n for (var k in originData) {\n item[k] = originData[k];\n }\n item[FIELD_ORIGIN] = originData;\n try {\n // 将分类数据翻译成数据, 仅对位置相关的度量进行数字化处理\n for (var categoryScales_1 = (e_4 = void 0, __values(categoryScales)), categoryScales_1_1 = categoryScales_1.next(); !categoryScales_1_1.done; categoryScales_1_1 = categoryScales_1.next()) {\n var scale = categoryScales_1_1.value;\n var field = scale.field;\n item[field] = scale.translate(item[field]);\n }\n } catch (e_4_1) {\n e_4 = {\n error: e_4_1\n };\n } finally {\n try {\n if (categoryScales_1_1 && !categoryScales_1_1.done && (_a = categoryScales_1.return)) _a.call(categoryScales_1);\n } finally {\n if (e_4) throw e_4.error;\n }\n }\n arr.push(item);\n }\n beforeAdjust.push(arr);\n }\n var dataArray = this.adjustData(beforeAdjust); // 进行 adjust 数据调整\n this.beforeMappingData = dataArray;\n return dataArray;\n };\n // 调整数据\n Geometry.prototype.adjustData = function (dataArray) {\n var adjustOption = this.adjustOption;\n var _a = this,\n intervalPadding = _a.intervalPadding,\n dodgePadding = _a.dodgePadding,\n theme = _a.theme;\n // 兼容theme配置\n var maxColumnWidth = this.maxColumnWidth || theme.maxColumnWidth;\n var minColumnWidth = this.minColumnWidth || theme.minColumnWidth;\n var columnWidthRatio = this.columnWidthRatio || theme.columnWidthRatio;\n var result = dataArray;\n if (adjustOption) {\n var xScale_2 = this.getXScale();\n var yScale = this.getYScale();\n var xField = xScale_2.field;\n var yField = yScale ? yScale.field : null;\n var xDimensionLength = getXDimensionLength(this.coordinate);\n var groupNum = xScale_2.values.length;\n // 传入size计算相关参数,默认宽度、最大最小宽度约束\n var sizeAttr = this.getAttribute('size');\n var defaultSize = void 0;\n if (sizeAttr) {\n defaultSize = sizeAttr.values[0];\n }\n for (var i = 0, len = adjustOption.length; i < len; i++) {\n var adjust = adjustOption[i];\n var adjustCfg = __assign({\n xField: xField,\n yField: yField,\n intervalPadding: intervalPadding,\n dodgePadding: dodgePadding,\n xDimensionLength: xDimensionLength,\n groupNum: groupNum,\n defaultSize: defaultSize,\n maxColumnWidth: maxColumnWidth,\n minColumnWidth: minColumnWidth,\n columnWidthRatio: columnWidthRatio\n }, adjust);\n var type = adjust.type;\n if (type === 'dodge') {\n var adjustNames = [];\n if (xScale_2.isCategory || xScale_2.type === 'identity') {\n adjustNames.push('x');\n } else if (!yScale) {\n adjustNames.push('y');\n } else {\n throw new Error('dodge is not support linear attribute, please use category attribute!');\n }\n adjustCfg.adjustNames = adjustNames;\n // 每个分组内每条柱子的宽度占比,用户不可指定,用户需要通过 columnWidthRatio 指定\n // 兼容theme配置\n adjustCfg.dodgeRatio = columnWidthRatio;\n } else if (type === 'stack') {\n var coordinate = this.coordinate;\n if (!yScale) {\n // 一维的情况下获取高度和默认size\n adjustCfg.height = coordinate.getHeight();\n var size = this.getDefaultValue('size') || 3;\n adjustCfg.size = size;\n }\n // 不进行 transpose 时,用户又没有设置这个参数时,默认从上向下\n if (!coordinate.isTransposed && isNil(adjustCfg.reverseOrder)) {\n adjustCfg.reverseOrder = true;\n }\n }\n var adjustCtor = getAdjustClass(type);\n adjustCfg.dimValuesMap = {};\n //生成dimValuesMap\n if (xScale_2 && xScale_2.values) {\n adjustCfg.dimValuesMap[xScale_2.field] = xScale_2.values.map(function (v) {\n return xScale_2.translate(v);\n });\n }\n var adjustInstance = new adjustCtor(adjustCfg);\n result = adjustInstance.process(result);\n this.adjusts[type] = adjustInstance;\n }\n }\n return result;\n };\n // 对数据进行分组\n Geometry.prototype.groupData = function (data) {\n var groupScales = this.getGroupScales();\n var scaleDefs = this.scaleDefs;\n var appendConditions = {};\n var groupFields = [];\n for (var index = 0; index < groupScales.length; index++) {\n var scale = groupScales[index];\n var field = scale.field;\n groupFields.push(field);\n if (get(scaleDefs, [field, 'values'])) {\n // 用户通过 view.scale() 接口指定了 values 属性\n appendConditions[field] = scaleDefs[field].values;\n }\n }\n return group(data, groupFields, appendConditions);\n };\n // 更新发生层叠后的数据对应的度量范围\n Geometry.prototype.updateStackRange = function (scale, dataArray) {\n var mergeArray = flatten(dataArray);\n var field = scale.field;\n var min = scale.min;\n var max = scale.max;\n for (var index = 0; index < mergeArray.length; index++) {\n var obj = mergeArray[index];\n var tmpMin = Math.min.apply(null, obj[field]);\n var tmpMax = Math.max.apply(null, obj[field]);\n if (tmpMin < min) {\n min = tmpMin;\n }\n if (tmpMax > max) {\n max = tmpMax;\n }\n }\n var scaleDefs = this.scaleDefs;\n var cfg = {};\n if (min < scale.min && !get(scaleDefs, [field, 'min'])) {\n // 用户如果在列定义中定义了 min,则以用户定义的为准\n cfg.min = min;\n }\n if (max > scale.max && !get(scaleDefs, [field, 'max'])) {\n // 用户如果在列定义中定义了 max\n cfg.max = max;\n }\n scale.change(cfg);\n };\n // 将数据映射至图形空间前的操作:排序以及关键点的生成\n Geometry.prototype.beforeMapping = function (beforeMappingData) {\n // 当初加 clone 是因为 points 的引用关系,导致更新失败,可是现在貌似复现不出来了,所以暂时不进行 clone\n // const source = clone(beforeMappingData);\n var source = beforeMappingData;\n if (this.sortable) {\n this.sort(source);\n }\n if (this.generatePoints) {\n // 需要生成关键点\n for (var index = 0, length_5 = source.length; index < length_5; index++) {\n var currentData = source[index];\n this.generateShapePoints(currentData);\n var nextData = source[index + 1];\n if (nextData) {\n this.generateShapePoints(nextData);\n currentData[0].nextPoints = nextData[0].points;\n }\n }\n }\n return source;\n };\n // 生成 shape 的关键点\n Geometry.prototype.generateShapePoints = function (data) {\n var shapeFactory = this.getShapeFactory();\n var shapeAttr = this.getAttribute('shape');\n for (var index = 0; index < data.length; index++) {\n var obj = data[index];\n var cfg = this.createShapePointsCfg(obj);\n var shape = shapeAttr ? this.getAttributeValues(shapeAttr, obj) : null;\n var points = shapeFactory.getShapePoints(shape, cfg);\n obj.points = points;\n }\n };\n // 将数据归一化\n Geometry.prototype.normalizeValues = function (values, scale) {\n var rst = [];\n if (isArray(values)) {\n for (var index = 0; index < values.length; index++) {\n var value = values[index];\n rst.push(scale.scale(value));\n }\n } else {\n rst = scale.scale(values);\n }\n return rst;\n };\n // 将数据映射至图形空间\n Geometry.prototype.mapping = function (data) {\n var attributes = this.attributes;\n var mappingData = [];\n for (var index = 0; index < data.length; index++) {\n var record = data[index];\n var newRecord = {\n _origin: record[FIELD_ORIGIN],\n points: record.points,\n nextPoints: record.nextPoints\n };\n for (var k in attributes) {\n if (attributes.hasOwnProperty(k)) {\n var attr = attributes[k];\n var names = attr.names;\n var values = this.getAttributeValues(attr, record);\n if (names.length > 1) {\n // position 之类的生成多个字段的属性\n for (var j = 0; j < values.length; j += 1) {\n var val = values[j];\n var name_1 = names[j];\n newRecord[name_1] = isArray(val) && val.length === 1 ? val[0] : val; // 只有一个值时返回第一个属性值\n }\n } else {\n // values.length === 1 的判断是以下情况,获取用户设置的图形属性值\n // shape('a', ['dot', 'dash']), color('a', ['red', 'yellow'])\n newRecord[names[0]] = values.length === 1 ? values[0] : values;\n }\n }\n }\n this.convertPoint(newRecord); // 将 x、y 转换成画布坐标\n mappingData.push(newRecord);\n }\n return mappingData;\n };\n // 将归一化的坐标值转换成画布坐标\n Geometry.prototype.convertPoint = function (mappingRecord) {\n var x = mappingRecord.x,\n y = mappingRecord.y;\n var rstX;\n var rstY;\n var obj;\n var coordinate = this.coordinate;\n if (isArray(x) && isArray(y)) {\n rstX = [];\n rstY = [];\n for (var i = 0, j = 0, xLen = x.length, yLen = y.length; i < xLen && j < yLen; i += 1, j += 1) {\n obj = coordinate.convert({\n x: x[i],\n y: y[j]\n });\n rstX.push(obj.x);\n rstY.push(obj.y);\n }\n } else if (isArray(y)) {\n rstY = [];\n for (var index = 0; index < y.length; index++) {\n var yVal = y[index];\n obj = coordinate.convert({\n x: x,\n y: yVal\n });\n if (rstX && rstX !== obj.x) {\n if (!isArray(rstX)) {\n rstX = [rstX];\n }\n rstX.push(obj.x);\n } else {\n rstX = obj.x;\n }\n rstY.push(obj.y);\n }\n } else if (isArray(x)) {\n rstX = [];\n for (var index = 0; index < x.length; index++) {\n var xVal = x[index];\n obj = coordinate.convert({\n x: xVal,\n y: y\n });\n if (rstY && rstY !== obj.y) {\n if (!isArray(rstY)) {\n rstY = [rstY];\n }\n rstY.push(obj.y);\n } else {\n rstY = obj.y;\n }\n rstX.push(obj.x);\n }\n } else {\n var point = coordinate.convert({\n x: x,\n y: y\n });\n rstX = point.x;\n rstY = point.y;\n }\n mappingRecord.x = rstX;\n mappingRecord.y = rstY;\n };\n // 获取 style 配置\n Geometry.prototype.getStyleCfg = function (styleOption, originData) {\n var _a = styleOption.fields,\n fields = _a === void 0 ? [] : _a,\n callback = styleOption.callback,\n cfg = styleOption.cfg;\n if (cfg) {\n // 用户直接配置样式属性\n return cfg;\n }\n var params = fields.map(function (field) {\n return originData[field];\n });\n return callback.apply(void 0, __spreadArray([], __read(params), false));\n };\n Geometry.prototype.setCfg = function (cfg) {\n var _this = this;\n var coordinate = cfg.coordinate,\n data = cfg.data,\n theme = cfg.theme,\n scaleDefs = cfg.scaleDefs;\n if (coordinate) {\n this.coordinate = coordinate;\n }\n if (data) {\n this.data = data;\n }\n if (scaleDefs) {\n this.scaleDefs = scaleDefs;\n this.idFields = [];\n each(scaleDefs, function (scaleDef, field) {\n if (scaleDef && scaleDef.key) {\n _this.idFields.push(field);\n }\n });\n }\n if (theme) {\n this.theme = this.userTheme ? deepMix({}, theme, this.userTheme) : theme; // 支持 geometry 层级的主题设置\n }\n };\n\n Geometry.prototype.renderLabels = function (mappingArray, isUpdate) {\n if (isUpdate === void 0) {\n isUpdate = false;\n }\n return __awaiter(this, void 0, void 0, function () {\n var geometryLabel, labelType, GeometryLabelsCtor, labelsMap, elementLabels, _a, _b, _c, element, labels;\n var e_5, _d;\n var _this = this;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n geometryLabel = this.geometryLabel;\n this.emit(GEOMETRY_LIFE_CIRCLE.BEFORE_RENDER_LABEL);\n if (!geometryLabel) {\n labelType = this.getLabelType();\n GeometryLabelsCtor = getGeometryLabel(labelType);\n geometryLabel = new GeometryLabelsCtor(this);\n this.geometryLabel = geometryLabel;\n }\n return [4 /*yield*/, geometryLabel.render(mappingArray, isUpdate)];\n case 1:\n _e.sent();\n labelsMap = geometryLabel.labelsRenderer.shapesMap;\n elementLabels = new Map();\n each(labelsMap, function (labelGroup, labelGroupId) {\n var labelChildren = labelGroup.getChildren() || [];\n for (var j = 0; j < labelChildren.length; j++) {\n var labelShape = labelChildren[j];\n var element = _this.elementsMap[labelShape.get('elementId') || labelGroupId.split(' ')[0]];\n if (element) {\n labelShape.cfg.name = ['element', 'label'];\n labelShape.cfg.element = element;\n var labels = elementLabels.get(element) || new Set();\n labels.add(labelGroup);\n elementLabels.set(element, labels);\n }\n }\n });\n try {\n for (_a = __values(elementLabels.entries()), _b = _a.next(); !_b.done; _b = _a.next()) {\n _c = __read(_b.value, 2), element = _c[0], labels = _c[1];\n element.labelShape = __spreadArray([], __read(labels), false);\n }\n } catch (e_5_1) {\n e_5 = {\n error: e_5_1\n };\n } finally {\n try {\n if (_b && !_b.done && (_d = _a.return)) _d.call(_a);\n } finally {\n if (e_5) throw e_5.error;\n }\n }\n this.emit(GEOMETRY_LIFE_CIRCLE.AFTER_RENDER_LABEL);\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * 是否需要进行群组入场动画\n * 规则:\n * 1. 如果发生更新,则不进行\n * 2. 如果用户关闭 geometry 动画,则不进行\n * 3. 如果用户关闭了 appear 动画,则不进行\n * 4. 如果用户配置了 appear.animation,则不进行\n */\n Geometry.prototype.canDoGroupAnimation = function (isUpdate) {\n return !isUpdate && this.animateOption && (get(this.animateOption, 'appear') === undefined || get(this.animateOption, 'appear') && get(this.animateOption, ['appear', 'animation']) === undefined);\n };\n return Geometry;\n}(Base);\nexport default Geometry;","import { __values } from \"tslib\";\nimport { groupToMap } from '@antv/util';\n/** @ignore */\nexport function group(data, fields, appendConditions) {\n var e_1, _a;\n if (appendConditions === void 0) {\n appendConditions = {};\n }\n if (!fields) {\n return [data];\n }\n var groups = groupToMap(data, fields);\n var array = [];\n if (fields.length === 1 && appendConditions[fields[0]]) {\n var values = appendConditions[fields[0]];\n try {\n for (var values_1 = __values(values), values_1_1 = values_1.next(); !values_1_1.done; values_1_1 = values_1.next()) {\n var value = values_1_1.value;\n var arr = groups[\"_\".concat(value)];\n if (arr) {\n // 可能存在用户设置 values ,但是数据中没有对应的字段,则这时候 arr 就为 null\n array.push(arr);\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (values_1_1 && !values_1_1.done && (_a = values_1.return)) _a.call(values_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n } else {\n for (var k in groups) {\n if (groups.hasOwnProperty(k)) {\n var eachGroup = groups[k];\n array.push(eachGroup);\n }\n }\n }\n return array;\n}","import { ext } from '@antv/matrix-util';\nvar transform = ext.transform;\nexport { transform };\n/**\n * 对元素进行平移操作。\n * @param element 进行变换的元素\n * @param x x 方向位移\n * @param y y 方向位移\n */\nexport function translate(element, x, y) {\n var matrix = transform(element.getMatrix(), [['t', x, y]]);\n element.setMatrix(matrix);\n}\n/**\n * 获取元素旋转矩阵 (以元素的左上角为旋转点)\n * @param element 进行变换的元素\n * @param rotateRadian 旋转弧度\n */\nexport function getRotateMatrix(element, rotateRadian) {\n var _a = element.attr(),\n x = _a.x,\n y = _a.y;\n var matrix = transform(element.getMatrix(), [['t', -x, -y], ['r', rotateRadian], ['t', x, y]]);\n return matrix;\n}\n/**\n * 对元素进行旋转操作。\n * @param element 进行变换的元素\n * @param rotateRadian 旋转弧度\n */\nexport function rotate(element, rotateRadian) {\n var matrix = getRotateMatrix(element, rotateRadian);\n element.setMatrix(matrix);\n}\n/**\n * 获取元矩阵。\n * @returns identity matrix\n */\nexport function getIdentityMatrix() {\n return [1, 0, 0, 0, 1, 0, 0, 0, 1];\n}\n/**\n * 围绕图形中心点进行缩放\n * @param element 进行缩放的图形元素\n * @param ratio 缩放比例\n */\nexport function zoom(element, ratio) {\n var bbox = element.getBBox();\n var x = (bbox.minX + bbox.maxX) / 2;\n var y = (bbox.minY + bbox.maxY) / 2;\n element.applyToMatrix([x, y, 1]);\n var matrix = transform(element.getMatrix(), [['t', -x, -y], ['s', ratio, ratio], ['t', x, y]]);\n element.setMatrix(matrix);\n}","/**\n * @file utils of label\n */\nimport { isNil, isNumber, some } from '@antv/util';\nimport { rotate } from '../../../util/transform';\n/**\n * 查找 Label Group 中的文本 shape 对象\n * @param label\n */\nexport function findLabelTextShape(label) {\n return label.find(function (el) {\n return el.get('type') === 'text';\n });\n}\n/**\n * 获取标签背景信息: box (无旋转) + rotation (旋转角度)\n */\nexport function getLabelBackgroundInfo(labelGroup, labelItem, padding) {\n if (padding === void 0) {\n padding = [0, 0, 0, 0];\n }\n var content = labelGroup && labelGroup.getChildren()[0];\n if (content) {\n var labelShape = content.clone();\n // revert rotate\n if (labelItem === null || labelItem === void 0 ? void 0 : labelItem.rotate) {\n rotate(labelShape, -labelItem.rotate);\n }\n // use `getCanvasBBox`, because if Shape is been translated, `getBBox` is not the actual box position\n var _a = labelShape.getCanvasBBox(),\n x = _a.x,\n y = _a.y,\n width = _a.width,\n height = _a.height;\n labelShape.destroy();\n var boxPadding = padding;\n if (isNil(boxPadding)) {\n boxPadding = [2, 2, 2, 2];\n } else if (isNumber(boxPadding)) {\n boxPadding = new Array(4).fill(boxPadding);\n }\n return {\n x: x - boxPadding[3],\n y: y - boxPadding[0],\n width: width + boxPadding[1] + boxPadding[3],\n height: height + boxPadding[0] + boxPadding[2],\n rotation: (labelItem === null || labelItem === void 0 ? void 0 : labelItem.rotate) || 0\n };\n }\n return {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n rotation: 0\n };\n}\n/**\n * 计算两个矩形之间的堆叠区域面积\n */\nexport function getOverlapArea(a, b, margin) {\n if (margin === void 0) {\n margin = 0;\n }\n var xOverlap = Math.max(0, Math.min(a.x + a.width + margin, b.x + b.width + margin) - Math.max(a.x - margin, b.x - margin));\n var yOverlap = Math.max(0, Math.min(a.y + a.height + margin, b.y + b.height + margin) - Math.max(a.y - margin, b.y - margin));\n return xOverlap * yOverlap;\n}\n/** 检测是否和已布局的堆叠 */\nexport function checkShapeOverlap(cur, dones) {\n var box = cur.getBBox();\n return some(dones, function (done) {\n var target = done.getBBox();\n return getOverlapArea(box, target, 2) > 0;\n });\n}","import { each, get } from '@antv/util';\nimport { doAnimate } from '../animate';\nimport { getReplaceAttrs } from '../util/graphics';\n/**\n * @desc 更新 label (目前没有根据 id 索引,还是会存在一点小问题的,只能根据 idx 索引)\n * @done shape 属性更新\n * @done shape delete\n * @done shape append\n *\n * @param fromShape old labelShape\n * @param toShape new labelShape\n * @param cfg\n */\nexport function updateLabel(fromShape, toShape, cfg) {\n var data = cfg.data,\n origin = cfg.origin,\n animateCfg = cfg.animateCfg,\n coordinate = cfg.coordinate;\n var updateAnimateCfg = get(animateCfg, 'update');\n fromShape.set('data', data);\n fromShape.set('origin', origin);\n fromShape.set('animateCfg', animateCfg);\n fromShape.set('coordinate', coordinate);\n fromShape.set('visible', toShape.get('visible'));\n (fromShape.getChildren() || []).forEach(function (fromChild, idx) {\n var toChild = toShape.getChildByIndex(idx);\n if (!toChild) {\n fromShape.removeChild(fromChild);\n fromChild.remove(true);\n } else {\n fromChild.set('data', data);\n fromChild.set('origin', origin);\n fromChild.set('animateCfg', animateCfg);\n fromChild.set('coordinate', coordinate);\n var newAttrs = getReplaceAttrs(fromChild, toChild);\n if (updateAnimateCfg) {\n doAnimate(fromChild, updateAnimateCfg, {\n toAttrs: newAttrs,\n coordinate: coordinate\n });\n } else {\n fromChild.attr(newAttrs);\n }\n if (toChild.isGroup()) {\n updateLabel(fromChild, toChild, cfg);\n }\n }\n });\n // append\n each(toShape.getChildren(), function (child, idx) {\n if (idx >= fromShape.getCount()) {\n if (!child.destroyed) {\n fromShape.add(child);\n }\n }\n });\n}","import { __assign, __awaiter, __generator, __rest, __values } from \"tslib\";\nimport { deepMix, each, get, isArray, isNull } from '@antv/util';\nimport { doAnimate } from '../animate';\nimport { getGeometryLabelLayout } from '../geometry/label';\nimport { getLabelBackgroundInfo } from '../geometry/label/util';\nimport { polarToCartesian } from '../util/graphics';\nimport { rotate, translate } from '../util/transform';\nimport { FIELD_ORIGIN } from '../constant';\nimport { updateLabel } from './update-label';\n/**\n * Geometry labels 渲染组件\n */\nvar Labels = /** @class */function () {\n function Labels(cfg) {\n /** 存储当前 shape 的映射表,键值为 shape id */\n this.shapesMap = {};\n var layout = cfg.layout,\n container = cfg.container;\n this.layout = layout;\n this.container = container;\n }\n /**\n * 渲染文本\n */\n Labels.prototype.render = function (items, shapes, isUpdate) {\n if (isUpdate === void 0) {\n isUpdate = false;\n }\n return __awaiter(this, void 0, void 0, function () {\n var shapesMap, offscreenGroup, items_1, items_1_1, item, lastShapesMap;\n var e_1, _a;\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n shapesMap = {};\n offscreenGroup = this.createOffscreenGroup();\n if (!items.length) return [3 /*break*/, 2];\n try {\n // 如果 items 空的话就不进行绘制调整操作\n // step 1: 在虚拟 group 中创建 shapes\n for (items_1 = __values(items), items_1_1 = items_1.next(); !items_1_1.done; items_1_1 = items_1.next()) {\n item = items_1_1.value;\n if (item) {\n shapesMap[item.id] = this.renderLabel(item, offscreenGroup);\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (items_1_1 && !items_1_1.done && (_a = items_1.return)) _a.call(items_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n // [todo] Move layout into Worker.\n // step 2: 根据布局,调整 labels\n return [4 /*yield*/, this.doLayout(items, shapes, shapesMap)];\n case 1:\n // [todo] Move layout into Worker.\n // step 2: 根据布局,调整 labels\n _b.sent();\n // step 3.1: 绘制 labelLine\n this.renderLabelLine(items, shapesMap);\n // step 3.2: 绘制 labelBackground\n this.renderLabelBackground(items, shapesMap);\n // step 4: 根据用户设置的偏移量调整 label\n this.adjustLabel(items, shapesMap);\n _b.label = 2;\n case 2:\n lastShapesMap = this.shapesMap;\n each(shapesMap, function (shape, id) {\n if (shape.destroyed) {\n // label 在布局调整环节被删除了(doLayout)\n delete shapesMap[id];\n } else {\n if (lastShapesMap[id]) {\n // 图形发生更新\n var data = shape.get('data');\n var origin_1 = shape.get('origin');\n var coordinate = shape.get('coordinate');\n var currentAnimateCfg = shape.get('animateCfg');\n var currentShape = lastShapesMap[id]; // 已经在渲染树上的 shape\n updateLabel(currentShape, shapesMap[id], {\n data: data,\n origin: origin_1,\n animateCfg: currentAnimateCfg,\n coordinate: coordinate\n });\n shapesMap[id] = currentShape; // 保存引用\n } else {\n // 新生成的 shape\n // If container has been destroyed, no need to render labels.\n if (_this.container.destroyed) return;\n _this.container.add(shape);\n var animateCfg = get(shape.get('animateCfg'), isUpdate ? 'enter' : 'appear');\n if (animateCfg) {\n doAnimate(shape, animateCfg, {\n toAttrs: __assign({}, shape.attr()),\n coordinate: shape.get('coordinate')\n });\n }\n }\n delete lastShapesMap[id];\n }\n });\n // 移除\n each(lastShapesMap, function (deleteShape) {\n var animateCfg = get(deleteShape.get('animateCfg'), 'leave');\n if (animateCfg) {\n doAnimate(deleteShape, animateCfg, {\n toAttrs: null,\n coordinate: deleteShape.get('coordinate')\n });\n } else {\n deleteShape.remove(true); // 移除\n }\n });\n\n this.shapesMap = shapesMap;\n offscreenGroup.destroy();\n return [2 /*return*/];\n }\n });\n });\n };\n /** 清除当前 labels */\n Labels.prototype.clear = function () {\n this.container.clear();\n this.shapesMap = {};\n };\n /** 销毁 */\n Labels.prototype.destroy = function () {\n this.container.destroy();\n this.shapesMap = null;\n };\n Labels.prototype.renderLabel = function (cfg, container) {\n var id = cfg.id,\n elementId = cfg.elementId,\n data = cfg.data,\n mappingData = cfg.mappingData,\n coordinate = cfg.coordinate,\n animate = cfg.animate,\n content = cfg.content,\n capture = cfg.capture;\n var shapeAppendCfg = {\n id: id,\n elementId: elementId,\n capture: capture,\n data: data,\n origin: __assign(__assign({}, mappingData), {\n data: mappingData[FIELD_ORIGIN]\n }),\n coordinate: coordinate\n };\n var labelGroup = container.addGroup(__assign({\n name: 'label',\n // 如果 this.animate === false 或者 cfg.animate === false/null 则不进行动画,否则进行动画配置的合并\n animateCfg: this.animate === false || animate === null || animate === false ? false : deepMix({}, this.animate, animate)\n }, shapeAppendCfg));\n var labelShape;\n if (content.isGroup && content.isGroup() || content.isShape && content.isShape()) {\n // 如果 content 是 Group 或者 Shape,根据 textAlign 调整位置后,直接将其加入 labelGroup\n var _a = content.getCanvasBBox(),\n width = _a.width,\n height = _a.height;\n var textAlign = get(cfg, 'textAlign', 'left');\n var x = cfg.x;\n var y = cfg.y - height / 2;\n if (textAlign === 'center') {\n x = x - width / 2;\n } else if (textAlign === 'right' || textAlign === 'end') {\n x = x - width;\n }\n translate(content, x, y); // 将 label 平移至 x, y 指定的位置\n labelShape = content;\n labelGroup.add(content);\n } else {\n var fill = get(cfg, ['style', 'fill']);\n labelShape = labelGroup.addShape('text', __assign({\n attrs: __assign(__assign({\n x: cfg.x,\n y: cfg.y,\n textAlign: cfg.textAlign,\n textBaseline: get(cfg, 'textBaseline', 'middle'),\n text: cfg.content\n }, cfg.style), {\n fill: isNull(fill) ? cfg.color : fill\n })\n }, shapeAppendCfg));\n }\n if (cfg.rotate) {\n rotate(labelShape, cfg.rotate);\n }\n return labelGroup;\n };\n // 根据type对label布局\n Labels.prototype.doLayout = function (items, shapes, shapesMap) {\n return __awaiter(this, void 0, void 0, function () {\n var layouts;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.layout) return [3 /*break*/, 2];\n layouts = isArray(this.layout) ? this.layout : [this.layout];\n return [4 /*yield*/, Promise.all(layouts.map(function (layout) {\n var layoutFn = getGeometryLabelLayout(get(layout, 'type', ''));\n if (!layoutFn) return;\n var labelShapes = [];\n var geometryShapes = [];\n each(shapesMap, function (labelShape, id) {\n labelShapes.push(labelShape);\n geometryShapes.push(shapes[labelShape.get('elementId')]);\n });\n // [todo] Refactor more layout into Worker.\n return layoutFn(items, labelShapes, geometryShapes, _this.region, layout.cfg);\n }))];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2:\n return [2 /*return*/];\n }\n });\n });\n };\n\n Labels.prototype.renderLabelLine = function (labelItems, shapesMap) {\n each(labelItems, function (labelItem) {\n var coordinate = get(labelItem, 'coordinate');\n if (!labelItem || !coordinate) {\n return;\n }\n var center = coordinate.getCenter();\n var radius = coordinate.getRadius();\n if (!labelItem.labelLine) {\n // labelLine: null | false,关闭 label 对应的 labelLine\n return;\n }\n var labelLineCfg = get(labelItem, 'labelLine', {});\n var id = labelItem.id;\n var path = labelLineCfg.path;\n if (!path) {\n var start = polarToCartesian(center.x, center.y, radius, labelItem.angle);\n path = [['M', start.x, start.y], ['L', labelItem.x, labelItem.y]];\n }\n var labelGroup = shapesMap[id];\n if (!labelGroup.destroyed) {\n labelGroup.addShape('path', {\n capture: false,\n attrs: __assign({\n path: path,\n stroke: labelItem.color ? labelItem.color : get(labelItem, ['style', 'fill'], '#000'),\n fill: null\n }, labelLineCfg.style),\n id: id,\n origin: labelItem.mappingData,\n data: labelItem.data,\n coordinate: labelItem.coordinate\n });\n }\n });\n };\n /**\n * 绘制标签背景\n * @param labelItems\n */\n Labels.prototype.renderLabelBackground = function (labelItems, shapesMap) {\n each(labelItems, function (labelItem) {\n var coordinate = get(labelItem, 'coordinate');\n var background = get(labelItem, 'background');\n if (!background || !coordinate) {\n return;\n }\n var id = labelItem.id;\n var labelGroup = shapesMap[id];\n if (!labelGroup.destroyed) {\n var labelContentShape = labelGroup.getChildren()[0];\n if (labelContentShape) {\n var _a = getLabelBackgroundInfo(labelGroup, labelItem, background.padding),\n rotation = _a.rotation,\n box = __rest(_a, [\"rotation\"]);\n var backgroundShape = labelGroup.addShape('rect', {\n attrs: __assign(__assign({}, box), background.style || {}),\n id: id,\n origin: labelItem.mappingData,\n data: labelItem.data,\n coordinate: labelItem.coordinate\n });\n backgroundShape.setZIndex(-1);\n if (rotation) {\n var matrix = labelContentShape.getMatrix();\n backgroundShape.setMatrix(matrix);\n }\n }\n }\n });\n };\n Labels.prototype.createOffscreenGroup = function () {\n var container = this.container;\n var GroupClass = container.getGroupBase(); // 获取分组的构造函数\n var newGroup = new GroupClass({});\n return newGroup;\n };\n Labels.prototype.adjustLabel = function (items, shapesMap) {\n each(items, function (item) {\n if (item) {\n var id = item.id;\n var labelGroup = shapesMap[id];\n if (!labelGroup.destroyed) {\n // fix: 如果说开发者的 label content 是一个 group,此处的偏移无法对 整个 content group 生效;场景类似 饼图 spider label 是一个含 2 个 textShape 的 gorup\n var labelShapes = labelGroup.findAll(function (ele) {\n return ele.get('type') !== 'path';\n });\n each(labelShapes, function (labelShape) {\n if (labelShape) {\n if (item.offsetX) {\n labelShape.attr('x', labelShape.attr('x') + item.offsetX);\n }\n if (item.offsetY) {\n labelShape.attr('y', labelShape.attr('y') + item.offsetY);\n }\n }\n });\n }\n }\n });\n };\n return Labels;\n}();\nexport default Labels;","import { __assign, __awaiter, __generator, __read, __spreadArray } from \"tslib\";\nimport { deepMix, each, get, isArray, isFunction, isNil, isNumber, isUndefined } from '@antv/util';\nimport { FIELD_ORIGIN } from '../../constant';\nimport { getDefaultAnimateCfg } from '../../animate';\nimport { getPolygonCentroid } from '../../util/graphics';\nimport Labels from '../../component/labels';\nfunction avg(arr) {\n var sum = 0;\n each(arr, function (value) {\n sum += value;\n });\n return sum / arr.length;\n}\n/**\n * Geometry Label 基类,用于生成 Geometry 下所有 label 的配置项信息\n */\nvar GeometryLabel = /** @class */function () {\n function GeometryLabel(geometry) {\n this.geometry = geometry;\n }\n GeometryLabel.prototype.getLabelItems = function (mapppingArray) {\n var _this = this;\n var items = [];\n var labelCfgs = this.getLabelCfgs(mapppingArray);\n // 获取 label 相关的 x,y 的值,获取具体的 x, y,防止存在数组\n each(mapppingArray, function (mappingData, index) {\n var labelCfg = labelCfgs[index];\n if (!labelCfg || isNil(mappingData.x) || isNil(mappingData.y)) {\n items.push(null);\n return;\n }\n var labelContent = !isArray(labelCfg.content) ? [labelCfg.content] : labelCfg.content;\n labelCfg.content = labelContent;\n var total = labelContent.length;\n each(labelContent, function (content, subIndex) {\n if (isNil(content) || content === '') {\n items.push(null);\n return;\n }\n var item = __assign(__assign({}, labelCfg), _this.getLabelPoint(labelCfg, mappingData, subIndex));\n if (!item.textAlign) {\n item.textAlign = _this.getLabelAlign(item, subIndex, total);\n }\n if (item.offset <= 0) {\n item.labelLine = null;\n }\n items.push(item);\n });\n });\n return items;\n };\n GeometryLabel.prototype.render = function (mappingArray, isUpdate) {\n if (isUpdate === void 0) {\n isUpdate = false;\n }\n return __awaiter(this, void 0, void 0, function () {\n var labelItems, labelsRenderer, shapes;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n labelItems = this.getLabelItems(mappingArray);\n labelsRenderer = this.getLabelsRenderer();\n shapes = this.getGeometryShapes();\n // 渲染文本\n return [4 /*yield*/, labelsRenderer.render(labelItems, shapes, isUpdate)];\n case 1:\n // 渲染文本\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n\n GeometryLabel.prototype.clear = function () {\n var labelsRenderer = this.labelsRenderer;\n if (labelsRenderer) {\n labelsRenderer.clear();\n }\n };\n GeometryLabel.prototype.destroy = function () {\n var labelsRenderer = this.labelsRenderer;\n if (labelsRenderer) {\n labelsRenderer.destroy();\n }\n this.labelsRenderer = null;\n };\n // geometry 更新之后,对应的 Coordinate 也会更新,为了获取到最新鲜的 Coordinate,故使用方法获取\n GeometryLabel.prototype.getCoordinate = function () {\n return this.geometry.coordinate;\n };\n /**\n * 获取 label 的默认配置\n */\n GeometryLabel.prototype.getDefaultLabelCfg = function (offset, position) {\n var geometry = this.geometry;\n var type = geometry.type,\n theme = geometry.theme;\n if (type === 'polygon' || type === 'interval' && position === 'middle' || offset < 0 && !['line', 'point', 'path'].includes(type)) {\n // polygon 或者 (interval 且 middle) 或者 offset 小于 0 时,文本展示在图形内部,将其颜色设置为 白色\n return get(theme, 'innerLabels', {});\n }\n return get(theme, 'labels', {});\n };\n /**\n * 获取当前 label 的最终配置\n * @param labelCfg\n */\n GeometryLabel.prototype.getThemedLabelCfg = function (labelCfg) {\n var geometry = this.geometry;\n var defaultLabelCfg = this.getDefaultLabelCfg();\n var type = geometry.type,\n theme = geometry.theme;\n var themedLabelCfg;\n if (type === 'polygon' || labelCfg.offset < 0 && !['line', 'point', 'path'].includes(type)) {\n // polygon 或者 offset 小于 0 时,文本展示在图形内部,将其颜色设置为 白色\n themedLabelCfg = deepMix({}, defaultLabelCfg, theme.innerLabels, labelCfg);\n } else {\n themedLabelCfg = deepMix({}, defaultLabelCfg, theme.labels, labelCfg);\n }\n return themedLabelCfg;\n };\n /**\n * 设置 label 位置\n * @param labelPointCfg\n * @param mappingData\n * @param index\n * @param position\n */\n GeometryLabel.prototype.setLabelPosition = function (labelPointCfg, mappingData, index, position) {};\n /**\n * @desc 获取 label offset\n */\n GeometryLabel.prototype.getLabelOffset = function (offset) {\n var coordinate = this.getCoordinate();\n var vector = this.getOffsetVector(offset);\n return coordinate.isTransposed ? vector[0] : vector[1];\n };\n /**\n * 获取每个 label 的偏移量 (矢量)\n * @param labelCfg\n * @param index\n * @param total\n * @return {Point} offsetPoint\n */\n GeometryLabel.prototype.getLabelOffsetPoint = function (labelCfg, index, total) {\n var offset = labelCfg.offset;\n var coordinate = this.getCoordinate();\n var transposed = coordinate.isTransposed;\n var dim = transposed ? 'x' : 'y';\n var factor = transposed ? 1 : -1; // y 方向上越大,像素的坐标越小,所以transposed时将系数变成\n var offsetPoint = {\n x: 0,\n y: 0\n };\n if (index > 0 || total === 1) {\n // 判断是否小于0\n offsetPoint[dim] = offset * factor;\n } else {\n offsetPoint[dim] = offset * factor * -1;\n }\n return offsetPoint;\n };\n /**\n * 获取每个 label 的位置\n * @param labelCfg\n * @param mappingData\n * @param index\n * @returns label point\n */\n GeometryLabel.prototype.getLabelPoint = function (labelCfg, mappingData, index) {\n var coordinate = this.getCoordinate();\n var total = labelCfg.content.length;\n function getDimValue(value, idx, isAvg) {\n if (isAvg === void 0) {\n isAvg = false;\n }\n var v = value;\n if (isArray(v)) {\n if (labelCfg.content.length === 1) {\n if (isAvg) {\n v = avg(v);\n } else {\n // 如果仅一个 label,多个 y, 取最后一个 y\n if (v.length <= 2) {\n v = v[value.length - 1];\n } else {\n v = avg(v);\n }\n }\n } else {\n v = v[idx];\n }\n }\n return v;\n }\n var label = {\n content: labelCfg.content[index],\n x: 0,\n y: 0,\n start: {\n x: 0,\n y: 0\n },\n color: '#fff'\n };\n var shape = isArray(mappingData.shape) ? mappingData.shape[0] : mappingData.shape;\n var isFunnel = shape === 'funnel' || shape === 'pyramid';\n // 多边形场景,多用于地图\n if (this.geometry.type === 'polygon') {\n var centroid = getPolygonCentroid(mappingData.x, mappingData.y);\n label.x = centroid[0];\n label.y = centroid[1];\n } else if (this.geometry.type === 'interval' && !isFunnel) {\n // 对直方图的label X 方向的位置居中\n label.x = getDimValue(mappingData.x, index, true);\n label.y = getDimValue(mappingData.y, index);\n } else {\n label.x = getDimValue(mappingData.x, index);\n label.y = getDimValue(mappingData.y, index);\n }\n // 处理漏斗图文本位置\n if (isFunnel) {\n var nextPoints = get(mappingData, 'nextPoints');\n var points = get(mappingData, 'points');\n if (nextPoints) {\n // 非漏斗图底部\n var point1 = coordinate.convert(points[1]);\n var point2 = coordinate.convert(nextPoints[1]);\n label.x = (point1.x + point2.x) / 2;\n label.y = (point1.y + point2.y) / 2;\n } else if (shape === 'pyramid') {\n var point1 = coordinate.convert(points[1]);\n var point2 = coordinate.convert(points[2]);\n label.x = (point1.x + point2.x) / 2;\n label.y = (point1.y + point2.y) / 2;\n }\n }\n if (labelCfg.position) {\n // 如果 label 支持 position 属性\n this.setLabelPosition(label, mappingData, index, labelCfg.position);\n }\n var offsetPoint = this.getLabelOffsetPoint(labelCfg, index, total);\n label.start = {\n x: label.x,\n y: label.y\n };\n label.x += offsetPoint.x;\n label.y += offsetPoint.y;\n label.color = mappingData.color;\n return label;\n };\n /**\n * 获取文本的对齐方式\n * @param item\n * @param index\n * @param total\n * @returns\n */\n GeometryLabel.prototype.getLabelAlign = function (item, index, total) {\n var align = 'center';\n var coordinate = this.getCoordinate();\n if (coordinate.isTransposed) {\n var offset = item.offset;\n if (offset < 0) {\n align = 'right';\n } else if (offset === 0) {\n align = 'center';\n } else {\n align = 'left';\n }\n if (total > 1 && index === 0) {\n if (align === 'right') {\n align = 'left';\n } else if (align === 'left') {\n align = 'right';\n }\n }\n }\n return align;\n };\n /**\n * 获取每一个 label 的唯一 id\n * @param mappingData label 对应的图形的绘制数据\n */\n GeometryLabel.prototype.getLabelId = function (mappingData) {\n var geometry = this.geometry;\n var type = geometry.type;\n var xScale = geometry.getXScale();\n var yScale = geometry.getYScale();\n var origin = mappingData[FIELD_ORIGIN]; // 原始数据\n var labelId = geometry.getElementId(mappingData);\n if (type === 'line' || type === 'area') {\n // 折线图以及区域图,一条线会对应一组数据,即多个 labels,为了区分这些 labels,需要在 line id 的前提下加上 x 字段值\n labelId += \" \".concat(origin[xScale.field]);\n } else if (type === 'path') {\n // path 路径图,无序,有可能存在相同 x 不同 y 的情况,需要通过 x y 来确定唯一 id\n labelId += \" \".concat(origin[xScale.field], \"-\").concat(origin[yScale.field]);\n }\n return labelId;\n };\n // 获取 labels 组件\n GeometryLabel.prototype.getLabelsRenderer = function () {\n var _a = this.geometry,\n labelsContainer = _a.labelsContainer,\n labelOption = _a.labelOption,\n canvasRegion = _a.canvasRegion,\n animateOption = _a.animateOption;\n var coordinate = this.geometry.coordinate;\n var labelsRenderer = this.labelsRenderer;\n if (!labelsRenderer) {\n labelsRenderer = new Labels({\n container: labelsContainer,\n layout: get(labelOption, ['cfg', 'layout'], {\n type: this.defaultLayout\n })\n });\n this.labelsRenderer = labelsRenderer;\n }\n labelsRenderer.region = canvasRegion;\n // 设置动画配置,如果 geometry 的动画关闭了,那么 label 的动画也会关闭\n labelsRenderer.animate = animateOption ? getDefaultAnimateCfg('label', coordinate) : false;\n return labelsRenderer;\n };\n GeometryLabel.prototype.getLabelCfgs = function (mapppingArray) {\n var _this = this;\n var geometry = this.geometry;\n var labelOption = geometry.labelOption,\n scales = geometry.scales,\n coordinate = geometry.coordinate;\n var _a = labelOption,\n fields = _a.fields,\n callback = _a.callback,\n cfg = _a.cfg;\n var labelScales = fields.map(function (field) {\n return scales[field];\n });\n var labelCfgs = [];\n each(mapppingArray, function (mappingData, index) {\n var origin = mappingData[FIELD_ORIGIN]; // 原始数据\n var originText = _this.getLabelText(origin, labelScales);\n var callbackCfg;\n if (callback) {\n // 当同时配置了 callback 和 cfg 时,以 callback 为准\n var originValues = fields.map(function (field) {\n return origin[field];\n });\n callbackCfg = callback.apply(void 0, __spreadArray([], __read(originValues), false));\n if (isNil(callbackCfg)) {\n labelCfgs.push(null);\n return;\n }\n }\n var labelCfg = __assign(__assign({\n id: _this.getLabelId(mappingData),\n elementId: _this.geometry.getElementId(mappingData),\n data: origin,\n // 存储原始数据\n mappingData: mappingData,\n // 存储映射后的数据,\n coordinate: coordinate\n }, cfg), callbackCfg);\n if (isFunction(labelCfg.position)) {\n labelCfg.position = labelCfg.position(origin, mappingData, index);\n }\n var offset = _this.getLabelOffset(labelCfg.offset || 0);\n // defaultCfg 需要判断 innerLabels & labels\n var defaultLabelCfg = _this.getDefaultLabelCfg(offset, labelCfg.position);\n // labelCfg priority: defaultCfg < cfg < callbackCfg\n labelCfg = deepMix({}, defaultLabelCfg, labelCfg);\n // 获取最终的 offset\n labelCfg.offset = _this.getLabelOffset(labelCfg.offset || 0);\n var content = labelCfg.content;\n if (isFunction(content)) {\n labelCfg.content = content(origin, mappingData, index);\n } else if (isUndefined(content)) {\n // 用户未配置 content,则默认为映射的第一个字段的值\n labelCfg.content = originText[0];\n }\n labelCfgs.push(labelCfg);\n });\n return labelCfgs;\n };\n GeometryLabel.prototype.getLabelText = function (origin, scales) {\n var labelTexts = [];\n each(scales, function (scale) {\n var value = origin[scale.field];\n if (isArray(value)) {\n value = value.map(function (subVal) {\n return scale.getText(subVal);\n });\n } else {\n value = scale.getText(value);\n }\n if (isNil(value) || value === '') {\n labelTexts.push(null);\n } else {\n labelTexts.push(value);\n }\n });\n return labelTexts;\n };\n GeometryLabel.prototype.getOffsetVector = function (offset) {\n if (offset === void 0) {\n offset = 0;\n }\n var coordinate = this.getCoordinate();\n var actualOffset = 0;\n if (isNumber(offset)) {\n actualOffset = offset;\n }\n // 如果 x,y 翻转,则偏移 x,否则偏移 y\n return coordinate.isTransposed ? coordinate.applyMatrix(actualOffset, 0) : coordinate.applyMatrix(0, actualOffset);\n };\n GeometryLabel.prototype.getGeometryShapes = function () {\n var geometry = this.geometry;\n var shapes = {};\n each(geometry.elementsMap, function (element, id) {\n shapes[id] = element.shape;\n });\n // 因为有可能 shape 还在进行动画,导致 shape.getBBox() 获取到的值不是最终态,所以需要从 offscreenGroup 获取\n each(geometry.getOffscreenGroup().getChildren(), function (child) {\n var id = geometry.getElementId(child.get('origin').mappingData);\n shapes[id] = child;\n });\n return shapes;\n };\n return GeometryLabel;\n}();\nexport default GeometryLabel;","import { __read, __spreadArray } from \"tslib\";\n/**\n * @ignore\n * get the mapping value by attribute, if mapping value is nil, return def\n * @param attr\n * @param value\n * @param def\n * @returns get mapping value\n */\nexport function getMappingValue(attr, value, def) {\n if (!attr) {\n return def;\n }\n var r;\n // 多参数映射,阻止程序报错\n if (attr.callback && attr.callback.length > 1) {\n var restArgs = Array(attr.callback.length - 1).fill('');\n r = attr.mapping.apply(attr, __spreadArray([value], __read(restArgs), false)).join('');\n } else {\n r = attr.mapping(value).join('');\n }\n return r || def;\n}","/** @ignore */\nexport var MarkerSymbols = {\n hexagon: function hexagon(x, y, r) {\n var diffX = r / 2 * Math.sqrt(3);\n return [['M', x, y - r], ['L', x + diffX, y - r / 2], ['L', x + diffX, y + r / 2], ['L', x, y + r], ['L', x - diffX, y + r / 2], ['L', x - diffX, y - r / 2], ['Z']];\n },\n bowtie: function bowtie(x, y, r) {\n var diffY = r - 1.5;\n return [['M', x - r, y - diffY], ['L', x + r, y + diffY], ['L', x + r, y - diffY], ['L', x - r, y + diffY], ['Z']];\n },\n cross: function cross(x, y, r) {\n return [['M', x - r, y - r], ['L', x + r, y + r], ['M', x + r, y - r], ['L', x - r, y + r]];\n },\n tick: function tick(x, y, r) {\n return [['M', x - r / 2, y - r], ['L', x + r / 2, y - r], ['M', x, y - r], ['L', x, y + r], ['M', x - r / 2, y + r], ['L', x + r / 2, y + r]];\n },\n plus: function plus(x, y, r) {\n return [['M', x - r, y], ['L', x + r, y], ['M', x, y - r], ['L', x, y + r]];\n },\n hyphen: function hyphen(x, y, r) {\n return [['M', x - r, y], ['L', x + r, y]];\n },\n line: function line(x, y, r) {\n return [['M', x, y - r], ['L', x, y + r]];\n }\n};","import { __assign } from \"tslib\";\nimport { deepMix, isString, each, get, isFunction } from '@antv/util';\nimport { DIRECTION } from '../constant';\nimport { getMappingValue } from './attr';\nimport { omit } from './helper';\nimport { MarkerSymbols } from './marker';\n/** 线条形 marker symbol */\nvar STROKES_SYMBOLS = ['line', 'cross', 'tick', 'plus', 'hyphen'];\n/**\n * 处理用户配置的 marker style\n * @param markerStyle\n * @param userMarker.style\n * @returns {ShapeAttrs} newStyle\n */\nfunction handleUserMarkerStyle(markerStyle, style) {\n if (isFunction(style)) {\n return style(markerStyle);\n }\n return deepMix({}, markerStyle, style);\n}\n/**\n * 根据 marker 是否为线条形 symbol, 来调整下样式\n * @param symbol\n * @param style\n * @param color\n */\nfunction adpatorMarkerStyle(marker, color) {\n var symbol = marker.symbol;\n if (isString(symbol) && STROKES_SYMBOLS.indexOf(symbol) !== -1) {\n var markerStyle = get(marker, 'style', {});\n var lineWidth = get(markerStyle, 'lineWidth', 1);\n var stroke = markerStyle.stroke || markerStyle.fill || color;\n marker.style = deepMix({}, marker.style, {\n lineWidth: lineWidth,\n stroke: stroke,\n fill: null\n });\n }\n}\n/**\n * 设置 marker 的 symbol,将 字符串的 symbol 转换为真正的绘制命令\n * @param marker\n */\nfunction setMarkerSymbol(marker) {\n var symbol = marker.symbol;\n if (isString(symbol) && MarkerSymbols[symbol]) {\n marker.symbol = MarkerSymbols[symbol];\n }\n}\n/**\n * @ignore\n * get the legend layout from direction\n * @param direction\n * @returns layout 'horizontal' | 'vertical'\n */\nexport function getLegendLayout(direction) {\n return direction.startsWith(DIRECTION.LEFT) || direction.startsWith(DIRECTION.RIGHT) ? 'vertical' : 'horizontal';\n}\n/**\n * @ignore\n * get the legend items\n * @param view\n * @param geometry\n * @param attr\n * @param themeMarker\n * @param markerCfg\n * @returns legend items\n */\nexport function getLegendItems(view, geometry, attr, themeMarker, userMarker) {\n var scale = attr.getScale(attr.type);\n if (scale.isCategory) {\n var field_1 = scale.field;\n var colorAttr_1 = geometry.getAttribute('color');\n var shapeAttr_1 = geometry.getAttribute('shape');\n var defaultColor_1 = view.getTheme().defaultColor;\n var isInPolar_1 = geometry.coordinate.isPolar;\n return scale.getTicks().map(function (tick, index) {\n var _a;\n var text = tick.text,\n scaleValue = tick.value;\n var name = text;\n var value = scale.invert(scaleValue);\n // 通过过滤图例项的数据,来看是否 unchecked\n var unchecked = view.filterFieldData(field_1, [(_a = {}, _a[field_1] = value, _a)]).length === 0;\n each(view.views, function (subView) {\n var _a;\n if (!subView.filterFieldData(field_1, [(_a = {}, _a[field_1] = value, _a)]).length) {\n unchecked = true;\n }\n });\n // @ts-ignore\n var color = getMappingValue(colorAttr_1, value, defaultColor_1);\n var shape = getMappingValue(shapeAttr_1, value, 'point');\n var marker = geometry.getShapeMarker(shape, {\n color: color,\n isInPolar: isInPolar_1\n });\n var markerCfg = userMarker;\n if (isFunction(markerCfg)) {\n markerCfg = markerCfg(name, index, __assign({\n name: name,\n value: value\n }, deepMix({}, themeMarker, marker)));\n }\n // the marker configure order should be ensure\n marker = deepMix({}, themeMarker, marker, omit(__assign({}, markerCfg), ['style']));\n adpatorMarkerStyle(marker, color);\n if (markerCfg && markerCfg.style) {\n // handle user's style settings\n marker.style = handleUserMarkerStyle(marker.style, markerCfg.style);\n }\n setMarkerSymbol(marker);\n return {\n id: value,\n name: name,\n value: value,\n marker: marker,\n unchecked: unchecked\n };\n });\n }\n return [];\n}\n/**\n *\n * @ignore\n * custom legend 的 items 获取\n * @param themeMarker\n * @param userMarker\n * @param customItems\n */\nexport function getCustomLegendItems(themeMarker, userMarker, customItems) {\n // 如果有自定义的 item,那么就直接使用,并合并主题的 marker 配置\n return customItems.map(function (item, index) {\n var markerCfg = userMarker;\n if (isFunction(markerCfg)) {\n markerCfg = markerCfg(item.name, index, deepMix({}, themeMarker, item));\n }\n var itemMarker = isFunction(item.marker) ? item.marker(item.name, index, deepMix({}, themeMarker, item)) : item.marker;\n var marker = deepMix({}, themeMarker, markerCfg, itemMarker);\n setMarkerSymbol(marker);\n item.marker = marker;\n return item;\n });\n}\n/**\n * get the legend cfg from theme, will mix the common cfg of legend theme\n *\n * @param theme view theme object\n * @param direction legend direction\n * @returns legend theme cfg\n */\nexport function getLegendThemeCfg(theme, direction) {\n var legendTheme = get(theme, ['components', 'legend'], {});\n return deepMix({}, get(legendTheme, ['common'], {}), deepMix({}, get(legendTheme, [direction], {})));\n}","import { isArray } from '@antv/util';\nimport { getSplinePath } from './path';\nfunction isValueEmpty(value) {\n if (value) {\n return false;\n }\n return value === null || value === undefined || isNaN(value);\n}\nfunction isYNil(point) {\n if (isArray(point)) {\n // 特殊处理 area 的关键点数据,其关键点结构为 [{x: 0, y: 1}, {x: 0, y: 2}]\n return isValueEmpty(point[1].y);\n }\n var value = point.y;\n return isArray(value) ? isValueEmpty(value[0]) : isValueEmpty(value);\n}\n/**\n * @ignore\n * 分割数据,用于处理在一组点数据中,y 对应的数值存在 null/undefined/NaN 的情况\n * 应用于折线图、区域图以及路径图\n *\n * ```typescript\n * // return [[{x: 1, y: 2}, {x: 3, y: 3}]]\n * getPathPoints([{x: 1, y: 2}, {x: 2, y: null}, {x: 3, y: 3}], true);\n * // return [[{x: 1, y: 2}], [{x: 3, y: 3}]]\n * getPathPoints([{x: 1, y: 2}, {x: 2, y: null}, {x: 3, y: 3}], false);\n * // return [[[{ x: 1, y: 10 }, { x: 2, y: 2 }], [{ x: 9, y: 34 }, { x: 1, y: 1 }]]]\n * getPathPoints([\n * [{ x: 1, y: 10 }, { x: 2, y: 2 }],\n * [{ x: 4, y: 2 }, { x: 8, y: NaN }],\n * [{ x: 9, y: 34 }, { x: 1, y: 1 }],\n * ], true);\n * ```\n *\n * @param points 要进行处理点集合\n * @param connectNulls 是否连接空值数据\n * @param showSinglePoint 是否展示孤立点\n * @returns 返回处理后的点集合\n */\nexport function getPathPoints(points, connectNulls, showSinglePoint) {\n if (connectNulls === void 0) {\n connectNulls = false;\n }\n if (showSinglePoint === void 0) {\n showSinglePoint = true;\n }\n if (!points.length || points.length === 1 && !showSinglePoint) {\n // 空或者只有一个点并配置不展示时\n return [];\n }\n if (connectNulls) {\n // 即 y 值为空的场景\n var filtered = [];\n for (var i = 0, len = points.length; i < len; i++) {\n var point = points[i];\n if (!isYNil(point)) {\n filtered.push(point);\n }\n }\n return [filtered];\n }\n var result = [];\n var tmp = [];\n for (var i = 0, len = points.length; i < len; i++) {\n var point = points[i];\n if (isYNil(point)) {\n if (tmp.length) {\n if (!(tmp.length === 1 && !showSinglePoint)) {\n // 如果前段数据只有一个字段并且不需要展示时则不加入\n result.push(tmp);\n }\n tmp = [];\n }\n } else {\n tmp.push(point);\n }\n }\n if (tmp.length) {\n result.push(tmp);\n }\n return result;\n}\n/**\n * 获取小提琴图的边界 path\n * @param points\n * @returns\n */\nexport function getViolinPath(points) {\n var path = [];\n for (var i = 0; i < points.length; i++) {\n var point = points[i];\n if (point) {\n var action = i === 0 ? 'M' : 'L';\n path.push([action, point.x, point.y]);\n }\n }\n var first = points[0];\n if (first) {\n path.push(['L', first.x, first.y]);\n path.push(['z']);\n }\n return path;\n}\n/**\n * 获取小提琴图 平滑的边界 path\n * @param points\n * @returns\n */\nexport function getSmoothViolinPath(points) {\n var half = points.length / 2;\n var leftPoints = [];\n var rightPoints = [];\n for (var i = 0; i < points.length; i++) {\n if (i < half) {\n leftPoints.push(points[i]);\n } else {\n rightPoints.push(points[i]);\n }\n }\n var leftPath = getSplinePath(leftPoints, false);\n var rightPath = getSplinePath(rightPoints, false);\n if (rightPoints.length) {\n leftPath.push(['L', rightPoints[0].x, rightPoints[0].y]);\n }\n rightPath.shift();\n var path = leftPath.concat(rightPath);\n if (leftPoints.length) {\n path.push(['L', leftPoints[0].x, leftPoints[0].y]);\n }\n path.push(['z']);\n return path;\n}","import { __assign } from \"tslib\";\nimport { deepMix, isNil, get } from '@antv/util';\n/**\n * @ignore\n * 获取 Shape 的图形属性\n * @param cfg\n * @param isStroke 是否需要描边\n * @param isFill 是否需要填充\n * @param [sizeName] 可选,表示图形大小的属性,lineWidth 或者 r\n * @returns\n */\nexport function getStyle(cfg, isStroke, isFill, sizeName) {\n if (sizeName === void 0) {\n sizeName = '';\n }\n var _a = cfg.style,\n style = _a === void 0 ? {} : _a,\n defaultStyle = cfg.defaultStyle,\n color = cfg.color,\n size = cfg.size;\n var attrs = __assign(__assign({}, defaultStyle), style);\n if (color) {\n if (isStroke) {\n if (!style.stroke) {\n // 如果用户在 style() 中配置了 stroke,则以用户配置的为准\n attrs.stroke = color;\n }\n }\n if (isFill) {\n if (!style.fill) {\n // 如果用户在 style() 中配置了 fill\n attrs.fill = color;\n }\n }\n }\n if (sizeName && isNil(style[sizeName]) && !isNil(size)) {\n // 如果用户在 style() 中配置了 lineWidth 或者 r 属性\n attrs[sizeName] = size;\n }\n return attrs;\n}\n/**\n * 获取 矩形背景 的样式\n * @param cfg\n */\nexport function getBackgroundRectStyle(cfg) {\n return deepMix({}, {\n // 默认背景色,copy from active-region\n fill: '#CCD6EC',\n fillOpacity: 0.3\n }, get(cfg, ['background', 'style']));\n}","import { isArray } from '@antv/util';\n/**\n * @ignore\n * 拆分点数据\n * @example\n * // result: [{x: 20, y: 20}, {x: 20, y: 30}]\n * splitPoints({x: 20,y: [20, 30]});\n * @example\n * // result: [{x: 20, y: 20}, {x: 30, y: 30}]\n * splitPoints({x: [20, 30],y: [20, 30]});\n * @param obj\n */\nexport function splitPoints(obj) {\n // y 有可能是数组,对应原始数据中 y 为一个区间数据,如 [19, 30],为了统一也将 x 转换为数组\n var x = obj.x;\n var y = isArray(obj.y) ? obj.y : [obj.y];\n return y.map(function (eachY, index) {\n return {\n x: isArray(x) ? x[index] : x,\n y: eachY\n };\n });\n}","var LineSymbols = {\n line: function line(x, y, r) {\n return [['M', x - r, y], ['L', x + r, y]];\n },\n dot: function dot(x, y, r) {\n return [['M', x - r, y], ['L', x + r, y]];\n },\n dash: function dash(x, y, r) {\n return [['M', x - r, y], ['L', x + r, y]];\n },\n smooth: function smooth(x, y, r) {\n return [['M', x - r, y], ['A', r / 2, r / 2, 0, 1, 1, x, y], ['A', r / 2, r / 2, 0, 1, 0, x + r, y]];\n },\n hv: function hv(x, y, r) {\n return [['M', x - r - 1, y - 2.5], ['L', x, y - 2.5], ['L', x, y + 2.5], ['L', x + r + 1, y + 2.5]];\n },\n vh: function vh(x, y, r) {\n return [['M', x - r - 1, y + 2.5], ['L', x, y + 2.5], ['L', x, y - 2.5], ['L', x + r + 1, y - 2.5]];\n },\n hvh: function hvh(x, y, r) {\n return [['M', x - (r + 1), y + 2.5], ['L', x - r / 2, y + 2.5], ['L', x - r / 2, y - 2.5], ['L', x + r / 2, y - 2.5], ['L', x + r / 2, y + 2.5], ['L', x + r + 1, y + 2.5]];\n },\n vhv: function vhv(x, y) {\n // 宽 13px,高 8px\n return [['M', x - 5, y + 2.5], ['L', x - 5, y], ['L', x, y], ['L', x, y - 3], ['L', x, y + 3], ['L', x + 6.5, y + 3]];\n }\n};\n/**\n * Gets line marker\n * @ignore\n * @param markerCfg\n * @param shapeType\n * @returns 返回 Line 的 marker 配置\n */\nexport function getLineMarker(markerCfg, shapeType) {\n var color = markerCfg.color;\n return {\n symbol: LineSymbols[shapeType],\n style: {\n lineWidth: 2,\n r: 6,\n stroke: color\n }\n };\n}","import { each, isArray } from '@antv/util';\nimport { registerShape, registerShapeFactory } from '../base';\nimport { getPathPoints } from '../util/get-path-points';\nimport { getStyle } from '../util/get-style';\nimport { getLinePath, getSplinePath } from '../util/path';\nimport { splitPoints } from '../util/split-points';\nimport { getLineMarker } from './util';\nfunction getShapeAttrs(cfg, smooth, constraint) {\n var isStack = cfg.isStack,\n connectNulls = cfg.connectNulls,\n isInCircle = cfg.isInCircle,\n showSinglePoint = cfg.showSinglePoint;\n var shapeAttrs = getStyle(cfg, true, false, 'lineWidth');\n var points = getPathPoints(cfg.points, connectNulls, showSinglePoint); // 根据 connectNulls 值处理 points\n var path = [];\n for (var i = 0, len = points.length; i < len; i++) {\n var eachLinePoints = points[i];\n path = path.concat(getPath(eachLinePoints, isInCircle, isStack, smooth, constraint, shapeAttrs));\n }\n shapeAttrs.path = path;\n return shapeAttrs;\n}\n// 单条 path\nfunction getSinglePath(points, isInCircle, smooth, constraint, style) {\n if (points.length === 1) {\n // 只有一个点时\n return [['M', points[0].x, points[0].y - style.lineWidth / 2], ['L', points[0].x, points[0].y], ['L', points[0].x, points[0].y + style.lineWidth / 2]];\n }\n var path;\n if (!smooth) {\n path = getLinePath(points, false);\n if (isInCircle) {\n path.push(['Z']);\n }\n } else {\n // 直角坐标系下绘制曲线时限制最大值、最小值\n if (isInCircle && points.length) {\n points.push({\n x: points[0].x,\n y: points[0].y\n });\n }\n path = getSplinePath(points, false, constraint);\n }\n return path;\n}\nfunction getRangePath(points, isInCircle, isStack, smooth, constraint, style) {\n var topPoints = [];\n var bottomPoints = [];\n each(points, function (point) {\n var result = splitPoints(point);\n topPoints.push(result[1]); // 上边\n bottomPoints.push(result[0]); // 底边\n });\n\n var topPath = getSinglePath(topPoints, isInCircle, smooth, constraint, style);\n var bottomPath = getSinglePath(bottomPoints, isInCircle, smooth, constraint, style);\n if (isStack) {\n return topPath;\n }\n return topPath.concat(bottomPath);\n}\n/**\n * 获取折线图 path\n */\nexport function getPath(points, isInCircle, isStack, smooth, constraint, style) {\n if (points.length) {\n var first = points[0];\n return isArray(first.y) ? getRangePath(points, isInCircle, isStack, smooth, constraint, style) : getSinglePath(points, isInCircle, smooth, constraint, style);\n }\n return [];\n}\nvar LineShapeFactory = registerShapeFactory('line', {\n defaultShapeType: 'line'\n});\n// 这里因为代码公用,所以直接全部注册\n// 'line' 默认折线;'dot' 点线 ···;'dash' 断线 - - -\neach(['line', 'dot', 'dash', 'smooth'], function (shapeType) {\n registerShape('line', shapeType, {\n draw: function draw(cfg, container) {\n var smooth = shapeType === 'smooth';\n var constraint;\n if (smooth) {\n var _a = this.coordinate,\n start = _a.start,\n end = _a.end;\n constraint = [[start.x, end.y], [end.x, start.y]];\n }\n var attrs = getShapeAttrs(cfg, smooth, constraint);\n var shape = container.addShape({\n type: 'path',\n attrs: attrs,\n name: 'line',\n capture: !smooth\n });\n return shape;\n },\n getMarker: function getMarker(markerCfg) {\n return getLineMarker(markerCfg, shapeType);\n }\n });\n});\nexport default LineShapeFactory;","/* G2 的一个壳子,不包含 Geometry,由开发者自己定义和引入 */\nexport var VERSION = '4.2.10';\n// 核心基类导出\nexport { Chart, View, Event } from './chart'; // Chart, View 类\nexport { Controller as ComponentController } from './chart/controller/base'; // G2 组件基类\nexport { default as TooltipController } from './chart/controller/tooltip'; // G2 tooltip 组件基类\nexport { default as Geometry } from './geometry/base'; // Geometry 基类\nexport { default as Element } from './geometry/element'; // Element 类\nexport { default as GeometryLabel } from './geometry/label/base'; // Geometry Label 基类\nexport { Interaction, Action } from './interaction'; // Interaction, Action 基类\nexport { Facet } from './facet'; // Facet 基类\nexport { default as InteractionAction } from './interaction/action/base'; // Interaction Action 基类\n// 注册 ComponentController\nexport { registerComponentController } from './chart';\n// 注册 Geometry\nexport { registerGeometry } from './chart';\n// 注册 Geometry Shape\nexport { registerShape, registerShapeFactory, getShapeFactory } from './geometry/shape/base';\n// 注册 Geometry label 以及 Geometry Label 布局函数\nexport { registerGeometryLabel, registerGeometryLabelLayout, getGeometryLabel, getGeometryLabelLayout } from './geometry/label';\n// 注册 interaction\nexport { getInteraction, registerInteraction, registerAction, getActionClass } from './interaction';\n// 注册 facet\nexport { getFacet, registerFacet } from './facet';\n// 注册主题\nexport { getTheme, registerTheme } from './theme';\n// G engine 管理相关\nexport { registerEngine, getEngine } from './engine';\n// 注册动画函数\nexport { registerAnimation, getAnimation } from './animate/animation';\nexport { LAYER, DIRECTION } from './constant';\n// 因为 typescript 部分版本不支持 export * as 语法。\nimport * as Types from './interface';\nexport { Coordinate, Scale } from './dependents';\n// 一些工具方法导出\nimport { getMappingValue } from './util/attr';\nimport { getLegendItems } from './util/legend';\nimport { getAngle, getSectorPath, polarToCartesian } from './util/graphics';\nimport { rotate, transform, translate, zoom } from './util/transform';\nimport { getTooltipItems } from './util/tooltip';\nimport { getDelegationObject } from './interaction/action/util';\nimport { getPathPoints } from './geometry/shape/util/get-path-points';\nimport { getPath } from './geometry/shape/line';\nexport var Util = {\n getLegendItems: getLegendItems,\n translate: translate,\n rotate: rotate,\n zoom: zoom,\n transform: transform,\n getAngle: getAngle,\n getSectorPath: getSectorPath,\n polarToCartesian: polarToCartesian,\n getDelegationObject: getDelegationObject,\n getTooltipItems: getTooltipItems,\n getMappingValue: getMappingValue,\n // shape 的一些操作方法\n getPath: getPath,\n getPathPoints: getPathPoints\n};","import { __assign } from \"tslib\";\nvar WHITE_COLORS = {\n 100: '#000',\n 95: '#0D0D0D',\n 85: '#262626',\n 65: '#595959',\n 45: '#8C8C8C',\n 25: '#BFBFBF',\n 15: '#D9D9D9',\n 6: '#F0F0F0'\n};\nvar BLACK_COLORS = {\n 100: '#FFFFFF',\n 95: '#F2F2F2',\n 85: '#D9D9D9',\n 65: '#A6A6A6',\n 45: '#737373',\n 25: '#404040',\n 15: '#262626',\n 6: '#0F0F0F'\n};\nvar QUALITATIVE_10 = ['#5B8FF9', '#5AD8A6', '#5D7092', '#F6BD16', '#E86452', '#6DC8EC', '#945FB9', '#FF9845', '#1E9493', '#FF99C3'];\nvar QUALITATIVE_20 = ['#5B8FF9', '#CDDDFD', '#5AD8A6', '#CDF3E4', '#5D7092', '#CED4DE', '#F6BD16', '#FCEBB9', '#E86452', '#F8D0CB', '#6DC8EC', '#D3EEF9', '#945FB9', '#DECFEA', '#FF9845', '#FFE0C7', '#1E9493', '#BBDEDE', '#FF99C3', '#FFE0ED'];\n/** 单色顺序色板 */\nvar SINGLE_SEQUENCE = ['#B8E1FF', '#9AC5FF', '#7DAAFF', '#5B8FF9', '#3D76DD', '#085EC0', '#0047A5', '#00318A', '#001D70'];\nexport var createDarkStyleSheet = function createDarkStyleSheet(cfg) {\n if (cfg === void 0) {\n cfg = {};\n }\n var _a = cfg.paletteQualitative10,\n paletteQualitative10 = _a === void 0 ? QUALITATIVE_10 : _a,\n _b = cfg.paletteQualitative20,\n paletteQualitative20 = _b === void 0 ? QUALITATIVE_20 : _b;\n var _c = cfg.brandColor,\n brandColor = _c === void 0 ? paletteQualitative10[0] : _c;\n var token = {\n /** 图表背景色 */\n backgroundColor: '#141414',\n /** 主题色 */\n brandColor: brandColor,\n /** 图表辅助色 */\n subColor: 'rgba(255,255,255,0.05)',\n /** 分类色板 1,在数据量小于等于 10 时使用 */\n paletteQualitative10: paletteQualitative10,\n /** 分类色板 2,在数据量大于 10 时使用 */\n paletteQualitative20: paletteQualitative20,\n /** 语义色 */\n paletteSemanticRed: '#F4664A',\n /** 语义色 */\n paletteSemanticGreen: '#30BF78',\n /** 语义色 */\n paletteSemanticYellow: '#FAAD14',\n /** (单色)顺序色板 */\n paletteSequence: SINGLE_SEQUENCE,\n /** 字体 */\n fontFamily: \"\\\"Segoe UI\\\", Roboto, \\\"Helvetica Neue\\\", Arial,\\n \\\"Noto Sans\\\", sans-serif, \\\"Apple Color Emoji\\\", \\\"Segoe UI Emoji\\\", \\\"Segoe UI Symbol\\\",\\n \\\"Noto Color Emoji\\\"\",\n // -------------------- 坐标轴 --------------------\n /** 坐标轴线颜色 */\n axisLineBorderColor: BLACK_COLORS[25],\n /** 坐标轴线粗细 */\n axisLineBorder: 1,\n /** 坐标轴线 lineDash 设置 */\n axisLineDash: null,\n /** 坐标轴标题颜色 */\n axisTitleTextFillColor: BLACK_COLORS[65],\n /** 坐标轴标题文本字体大小 */\n axisTitleTextFontSize: 12,\n /** 坐标轴标题文本行高 */\n axisTitleTextLineHeight: 12,\n /** 坐标轴标题文本字体粗细 */\n axisTitleTextFontWeight: 'normal',\n /** 坐标轴标题距离坐标轴文本的间距 */\n axisTitleSpacing: 12,\n /** 坐标轴标题详细说明icon颜色 */\n axisDescriptionIconFillColor: WHITE_COLORS[85],\n /** 坐标轴刻度线颜色 */\n axisTickLineBorderColor: BLACK_COLORS[25],\n /** 坐标轴刻度线长度 */\n axisTickLineLength: 4,\n /** 坐标轴刻度线粗细 */\n axisTickLineBorder: 1,\n /** 坐标轴次刻度线颜色 */\n axisSubTickLineBorderColor: BLACK_COLORS[15],\n /** 坐标轴次刻度线长度 */\n axisSubTickLineLength: 2,\n /** 坐标轴次刻度线粗细 */\n axisSubTickLineBorder: 1,\n /** 坐标轴刻度文本颜色 */\n axisLabelFillColor: BLACK_COLORS[45],\n /** 坐标轴刻度文本字体大小 */\n axisLabelFontSize: 12,\n /** 坐标轴刻度文本行高 */\n axisLabelLineHeight: 12,\n /** 坐标轴刻度文本字体粗细 */\n axisLabelFontWeight: 'normal',\n /** 坐标轴刻度文本距离坐标轴线的间距 */\n axisLabelOffset: 8,\n /** 坐标轴网格线颜色 */\n axisGridBorderColor: BLACK_COLORS[15],\n /** 坐标轴网格线粗细 */\n axisGridBorder: 1,\n /** 坐标轴网格线虚线设置 */\n axisGridLineDash: null,\n // -------------------- 图例 --------------------\n /** 图例标题颜色 */\n legendTitleTextFillColor: BLACK_COLORS[45],\n /** 图例标题文本字体大小 */\n legendTitleTextFontSize: 12,\n /** 图例标题文本行高 */\n legendTitleTextLineHeight: 21,\n /** 图例标题文本字体粗细 */\n legendTitleTextFontWeight: 'normal',\n /** 图例 marker 颜色 */\n legendMarkerColor: QUALITATIVE_10[0],\n /** 图例 marker 距离图例文本的间距 */\n legendMarkerSpacing: 8,\n /** 图例 marker 默认半径大小 */\n legendMarkerSize: 4,\n /** 图例 'circle' marker 半径 */\n legendCircleMarkerSize: 4,\n /** 图例 'square' marker 半径 */\n legendSquareMarkerSize: 4,\n /** 图例 'line' marker 半径 */\n legendLineMarkerSize: 5,\n /** 图例项文本颜色 */\n legendItemNameFillColor: BLACK_COLORS[65],\n /** 图例项文本字体大小 */\n legendItemNameFontSize: 12,\n /** 图例项文本行高 */\n legendItemNameLineHeight: 12,\n /** 图例项粗细 */\n legendItemNameFontWeight: 'normal',\n /** 图例项之间的水平间距 */\n legendItemSpacing: 24,\n /** 图例项垂直方向的间隔 */\n legendItemMarginBottom: 12,\n /** 图例与图表绘图区域的偏移距离 */\n legendSpacing: 16,\n /** 图例与图表绘图区域的偏移距离 */\n legendPadding: [8, 8, 8, 8],\n /** 水平布局的图例与绘图区域偏移距离 */\n legendHorizontalPadding: [8, 0, 8, 0],\n /** 垂直布局的图例与绘图区域偏移距离 */\n legendVerticalPadding: [0, 8, 0, 8],\n // 图例分页器\n /** 图例分页器 marker 大小 */\n legendPageNavigatorMarkerSize: 12,\n /** 图例分页器 marker 填充色 */\n legendPageNavigatorMarkerInactiveFillColor: BLACK_COLORS[45],\n /** 图例分页器 marker 填充色透明度 */\n legendPageNavigatorMarkerInactiveFillOpacity: 0.45,\n /** 图例分页器 marker 激活状态填充色 */\n legendPageNavigatorMarkerFillColor: BLACK_COLORS[45],\n /** 图例分页器 marker 激活状态填充色透明度 */\n legendPageNavigatorMarkerFillOpacity: 1,\n /** 图例分页器文本颜色 */\n legendPageNavigatorTextFillColor: BLACK_COLORS[65],\n /** 图例分页器文本字体大小 */\n legendPageNavigatorTextFontSize: 12,\n /** 连续图例滑块填充色 */\n sliderRailFillColor: BLACK_COLORS[15],\n /** 连续图例滑块边框粗细 */\n sliderRailBorder: 0,\n /** 连续图例滑块边框颜色 */\n sliderRailBorderColor: null,\n /** 连续图例滑块宽度 */\n sliderRailWidth: 100,\n /** 连续图例滑块高度 */\n sliderRailHeight: 12,\n /** 连续图例文本颜色 */\n sliderLabelTextFillColor: BLACK_COLORS[45],\n /** 连续图例文本字体大小 */\n sliderLabelTextFontSize: 12,\n /** 连续图例文本行高 */\n sliderLabelTextLineHeight: 12,\n /** 连续图例文本字体粗细 */\n sliderLabelTextFontWeight: 'normal',\n /** 连续图例滑块颜色 */\n sliderHandlerFillColor: WHITE_COLORS[6],\n /** 连续图例滑块宽度 */\n sliderHandlerWidth: 10,\n /** 连续图例滑块高度 */\n sliderHandlerHeight: 14,\n /** 连续图例滑块边框粗细 */\n sliderHandlerBorder: 1,\n /** 连续图例滑块边框颜色 */\n sliderHandlerBorderColor: WHITE_COLORS[25],\n // -------------------- Annotation,图形标注 --------------------\n /** arc 图形标注描边颜色 */\n annotationArcBorderColor: BLACK_COLORS[15],\n /** arc 图形标注粗细 */\n annotationArcBorder: 1,\n /** line 图形标注颜色 */\n annotationLineBorderColor: BLACK_COLORS[25],\n /** line 图形标注粗细 */\n annotationLineBorder: 1,\n /** lube 图形标注的虚线间隔 */\n annotationLineDash: null,\n /** text 图形标注文本颜色 */\n annotationTextFillColor: BLACK_COLORS[65],\n /** text 图形标注文本字体大小 */\n annotationTextFontSize: 12,\n /** text 图形标注文本行高 */\n annotationTextLineHeight: 12,\n /** text 图形标注文本字体粗细 */\n annotationTextFontWeight: 'normal',\n /** text 图形标注文本边框颜色 */\n annotationTextBorderColor: null,\n /** text 图形标注文本边框粗细 */\n annotationTextBorder: 0,\n /** region 图形标注填充颜色 */\n annotationRegionFillColor: BLACK_COLORS[100],\n /** region 图形标注填充颜色透明色 */\n annotationRegionFillOpacity: 0.06,\n /** region 图形标注描边粗细 */\n annotationRegionBorder: 0,\n /** region 图形标注描边颜色 */\n annotationRegionBorderColor: null,\n /** dataMarker 图形标注线的长度 */\n annotationDataMarkerLineLength: 16,\n // -------------------- Tooltip --------------------\n /** tooltip crosshairs 辅助线颜色 */\n tooltipCrosshairsBorderColor: BLACK_COLORS[25],\n /** tooltip crosshairs 辅助线粗细 */\n tooltipCrosshairsBorder: 1,\n /** tooltip crosshairs 辅助线虚线间隔 */\n tooltipCrosshairsLineDash: null,\n /** tooltip 内容框背景色 */\n tooltipContainerFillColor: '#1f1f1f',\n tooltipContainerFillOpacity: 0.95,\n /** tooltip 内容框阴影 */\n tooltipContainerShadow: '0px 2px 4px rgba(0,0,0,.5)',\n /** tooltip 内容框圆角 */\n tooltipContainerBorderRadius: 3,\n /** tooltip 文本颜色 */\n tooltipTextFillColor: BLACK_COLORS[65],\n /** tooltip 文本字体大小 */\n tooltipTextFontSize: 12,\n /** tooltip 文本行高 */\n tooltipTextLineHeight: 12,\n /** tooltip 文本字体粗细 */\n tooltipTextFontWeight: 'bold',\n // -------------------- Geometry labels --------------------\n /** Geometry label 文本颜色 */\n labelFillColor: BLACK_COLORS[65],\n labelFillColorDark: '#2c3542',\n labelFillColorLight: '#ffffff',\n /** Geometry label 文本字体大小 */\n labelFontSize: 12,\n /** Geometry label 文本行高 */\n labelLineHeight: 12,\n /** Geometry label 文本字体粗细 */\n labelFontWeight: 'normal',\n /** Geometry label 文本描边颜色 */\n labelBorderColor: null,\n /** Geometry label 文本描边粗细 */\n labelBorder: 0,\n /** Geometry innerLabel 文本颜色 */\n innerLabelFillColor: WHITE_COLORS[100],\n /** Geometry innerLabel 文本字体大小 */\n innerLabelFontSize: 12,\n /** Geometry innerLabel 文本行高 */\n innerLabelLineHeight: 12,\n /** Geometry innerLabel 文本字体粗细 */\n innerLabelFontWeight: 'normal',\n /** Geometry innerLabel 文本描边颜色 */\n innerLabelBorderColor: null,\n /** Geometry innerLabel 文本描边粗细 */\n innerLabelBorder: 0,\n /** Geometry label 文本颜色 */\n overflowLabelFillColor: BLACK_COLORS[65],\n overflowLabelFillColorDark: '#2c3542',\n overflowLabelFillColorLight: '#ffffff',\n /** Geometry label 文本字体大小 */\n overflowLabelFontSize: 12,\n /** Geometry label 文本行高 */\n overflowLabelLineHeight: 12,\n /** Geometry label 文本字体粗细 */\n overflowLabelFontWeight: 'normal',\n /** Geometry label 文本描边颜色 */\n overflowLabelBorderColor: WHITE_COLORS[100],\n /** Geometry label 文本描边粗细 */\n overflowLabelBorder: 1,\n /** Geometry label 文本连接线粗细 */\n labelLineBorder: 1,\n /** Geometry label 文本连接线颜色 */\n labelLineBorderColor: BLACK_COLORS[25],\n // -------------------- Slider 组件样式--------------------\n /** slider 滑道高度 */\n cSliderRailHieght: 16,\n /** slider 滑道背景色 */\n cSliderBackgroundFillColor: '#416180',\n /** slider 滑道背景色透明度 */\n cSliderBackgroundFillOpacity: 0.05,\n /** slider 滑道前景色 */\n cSliderForegroundFillColor: '#5B8FF9',\n /** slider 滑道前景色透明度 */\n cSliderForegroundFillOpacity: 0.15,\n // slider handlerStyle 手柄样式\n /** slider 手柄高度 */\n cSliderHandlerHeight: 24,\n /** Slider 手柄宽度 */\n cSliderHandlerWidth: 10,\n /** Slider 手柄背景色 */\n cSliderHandlerFillColor: '#F7F7F7',\n /** Slider 手柄背景色透明度 */\n cSliderHandlerFillOpacity: 1,\n /** Slider 手柄高亮背景色 */\n cSliderHandlerHighlightFillColor: '#FFF',\n /** Slider 手柄边框色 */\n cSliderHandlerBorderColor: '#BFBFBF',\n /** Slider 手柄边框粗细 */\n cSliderHandlerBorder: 1,\n /** Slider 手柄边框圆角 */\n cSliderHandlerBorderRadius: 2,\n // slider textStyle 字体标签样式\n /** Slider 字体标签颜色 */\n cSliderTextFillColor: '#fff',\n /** Slider 字体标签透明度 */\n cSliderTextFillOpacity: 0.45,\n /** Slider 字体标签大小 */\n cSliderTextFontSize: 12,\n /** Slider 字体标签行高 */\n cSliderTextLineHeight: 12,\n /** Slider 字体标签字重 */\n cSliderTextFontWeight: 'normal',\n /** Slider 字体标签描边色 */\n cSliderTextBorderColor: null,\n /** Slider 字体标签描边粗细 */\n cSliderTextBorder: 0,\n // -------------------- Scrollbar 组件样式--------------------\n /** 滚动条 滚道填充色 */\n scrollbarTrackFillColor: 'rgba(255,255,255,0.65)',\n /** 滚动条 滑块填充色 */\n scrollbarThumbFillColor: 'rgba(0,0,0,0.35)',\n /** 滚动条 滑块高亮填充色 */\n scrollbarThumbHighlightFillColor: 'rgba(0,0,0,0.45)',\n // -------------------- Geometry 图形样式--------------------\n /** 点图填充颜色 */\n pointFillColor: QUALITATIVE_10[0],\n /** 点图填充颜色透明度 */\n pointFillOpacity: 0.95,\n /** 点图大小 */\n pointSize: 4,\n /** 点图描边粗细 */\n pointBorder: 1,\n /** 点图描边颜色 */\n pointBorderColor: WHITE_COLORS[100],\n /** 点图描边透明度 */\n pointBorderOpacity: 1,\n /** 点图 active 状态下描边颜色 */\n pointActiveBorderColor: BLACK_COLORS[100],\n /** 点图 selected 状态下描边粗细 */\n pointSelectedBorder: 2,\n /** 点图 selected 状态下描边颜色 */\n pointSelectedBorderColor: BLACK_COLORS[100],\n /** 点图 inactive 状态下填充颜色透明度 */\n pointInactiveFillOpacity: 0.3,\n /** 点图 inactive 状态下描边透明度 */\n pointInactiveBorderOpacity: 0.3,\n /** 空心点图大小 */\n hollowPointSize: 4,\n /** 空心点图描边粗细 */\n hollowPointBorder: 1,\n /** 空心点图描边颜色 */\n hollowPointBorderColor: QUALITATIVE_10[0],\n /** 空心点图描边透明度 */\n hollowPointBorderOpacity: 0.95,\n hollowPointFillColor: WHITE_COLORS[100],\n /** 空心点图 active 状态下描边粗细 */\n hollowPointActiveBorder: 1,\n /** 空心点图 active 状态下描边颜色 */\n hollowPointActiveBorderColor: BLACK_COLORS[100],\n /** 空心点图 active 状态下描边透明度 */\n hollowPointActiveBorderOpacity: 1,\n /** 空心点图 selected 状态下描边粗细 */\n hollowPointSelectedBorder: 2,\n /** 空心点图 selected 状态下描边颜色 */\n hollowPointSelectedBorderColor: BLACK_COLORS[100],\n /** 空心点图 selected 状态下描边透明度 */\n hollowPointSelectedBorderOpacity: 1,\n /** 空心点图 inactive 状态下描边透明度 */\n hollowPointInactiveBorderOpacity: 0.3,\n /** 线图粗细 */\n lineBorder: 2,\n /** 线图颜色 */\n lineBorderColor: QUALITATIVE_10[0],\n /** 线图透明度 */\n lineBorderOpacity: 1,\n /** 线图 Active 状态下粗细 */\n lineActiveBorder: 3,\n /** 线图 selected 状态下粗细 */\n lineSelectedBorder: 3,\n /** 线图 inactive 状态下透明度 */\n lineInactiveBorderOpacity: 0.3,\n /** area 填充颜色 */\n areaFillColor: QUALITATIVE_10[0],\n /** area 填充透明度 */\n areaFillOpacity: 0.25,\n /** area 在 active 状态下的填充透明度 */\n areaActiveFillColor: QUALITATIVE_10[0],\n areaActiveFillOpacity: 0.5,\n /** area 在 selected 状态下的填充透明度 */\n areaSelectedFillColor: QUALITATIVE_10[0],\n areaSelectedFillOpacity: 0.5,\n /** area inactive 状态下填充透明度 */\n areaInactiveFillOpacity: 0.3,\n /** hollowArea 颜色 */\n hollowAreaBorderColor: QUALITATIVE_10[0],\n /** hollowArea 边框粗细 */\n hollowAreaBorder: 2,\n /** hollowArea 边框透明度 */\n hollowAreaBorderOpacity: 1,\n /** hollowArea active 状态下的边框粗细 */\n hollowAreaActiveBorder: 3,\n hollowAreaActiveBorderColor: BLACK_COLORS[100],\n /** hollowArea selected 状态下的边框粗细 */\n hollowAreaSelectedBorder: 3,\n hollowAreaSelectedBorderColor: BLACK_COLORS[100],\n /** hollowArea inactive 状态下的边框透明度 */\n hollowAreaInactiveBorderOpacity: 0.3,\n /** interval 填充颜色 */\n intervalFillColor: QUALITATIVE_10[0],\n /** interval 填充透明度 */\n intervalFillOpacity: 0.95,\n /** interval active 状态下边框粗细 */\n intervalActiveBorder: 1,\n /** interval active 状态下边框颜色 */\n intervalActiveBorderColor: BLACK_COLORS[100],\n intervalActiveBorderOpacity: 1,\n /** interval selected 状态下边框粗细 */\n intervalSelectedBorder: 2,\n /** interval selected 状态下边框颜色 */\n intervalSelectedBorderColor: BLACK_COLORS[100],\n /** interval selected 状态下边框透明度 */\n intervalSelectedBorderOpacity: 1,\n /** interval inactive 状态下边框透明度 */\n intervalInactiveBorderOpacity: 0.3,\n /** interval inactive 状态下填充透明度 */\n intervalInactiveFillOpacity: 0.3,\n /** interval 边框粗细 */\n hollowIntervalBorder: 2,\n /** hollowInterval 边框颜色 */\n hollowIntervalBorderColor: QUALITATIVE_10[0],\n /** hollowInterval 边框透明度 */\n hollowIntervalBorderOpacity: 1,\n hollowIntervalFillColor: WHITE_COLORS[100],\n /** hollowInterval active 状态下边框粗细 */\n hollowIntervalActiveBorder: 2,\n /** hollowInterval active 状态下边框颜色 */\n hollowIntervalActiveBorderColor: BLACK_COLORS[100],\n /** hollowInterval selected 状态下边框粗细 */\n hollowIntervalSelectedBorder: 3,\n /** hollowInterval selected 状态下边框颜色 */\n hollowIntervalSelectedBorderColor: BLACK_COLORS[100],\n /** hollowInterval selected 状态下边框透明度 */\n hollowIntervalSelectedBorderOpacity: 1,\n /** hollowInterval inactive 状态下边框透明度 */\n hollowIntervalInactiveBorderOpacity: 0.3\n };\n return __assign(__assign({}, token), cfg);\n};\nexport var antvDark = createDarkStyleSheet();","export function getPixelRatio() {\n return window ? window.devicePixelRatio : 1;\n}\n/**\n * 两点之间的距离\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n */\nexport function distance(x1, y1, x2, y2) {\n var dx = x1 - x2;\n var dy = y1 - y2;\n return Math.sqrt(dx * dx + dy * dy);\n}\n/**\n * 是否在包围盒内\n * @param {number} minX 包围盒开始的点 x\n * @param {number} minY 包围盒开始的点 y\n * @param {number} width 宽度\n * @param {number} height 高度\n * @param {[type]} x 检测点的 x\n * @param {[type]} y 监测点的 y\n */\nexport function inBox(minX, minY, width, height, x, y) {\n return x >= minX && x <= minX + width && y >= minY && y <= minY + height;\n}\nexport function intersectRect(box1, box2) {\n return !(box2.minX > box1.maxX || box2.maxX < box1.minX || box2.minY > box1.maxY || box2.maxY < box1.minY);\n}\n// 合并两个区域\nexport function mergeRegion(region1, region2) {\n if (!region1 || !region2) {\n return region1 || region2;\n }\n return {\n minX: Math.min(region1.minX, region2.minX),\n minY: Math.min(region1.minY, region2.minY),\n maxX: Math.max(region1.maxX, region2.maxX),\n maxY: Math.max(region1.maxY, region2.maxY)\n };\n}\n/**\n * 判断两个点是否重合,点坐标的格式为 [x, y]\n * @param {Array} point1 第一个点\n * @param {Array} point2 第二个点\n */\nexport function isSamePoint(point1, point2) {\n return point1[0] === point2[0] && point1[1] === point2[1];\n}\nexport { isNil, isString, isFunction, isArray, each, toRadian, mod, isNumberEqual, requestAnimationFrame, clearAnimationFrame } from '@antv/util';","import { isString, each, isArray } from './util';\nvar regexLG = /^l\\s*\\(\\s*([\\d.]+)\\s*\\)\\s*(.*)/i;\nvar regexRG = /^r\\s*\\(\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*\\)\\s*(.*)/i;\nvar regexPR = /^p\\s*\\(\\s*([axyn])\\s*\\)\\s*(.*)/i;\nvar regexColorStop = /[\\d.]+:(#[^\\s]+|[^\\)]+\\))/gi;\nfunction addStop(steps, gradient) {\n var arr = steps.match(regexColorStop);\n each(arr, function (item) {\n var itemArr = item.split(':');\n gradient.addColorStop(itemArr[0], itemArr[1]);\n });\n}\n/**\n * 将边和填充设置的颜色转换成线性渐变对象\n * @param {CanvasRenderingContext2D} context canvas 上下文\n * @param {IElement} element 图形元素\n * @param {string} gradientStr 颜色\n * @returns {any} 渐变对象\n */\nexport function parseLineGradient(context, element, gradientStr) {\n var arr = regexLG.exec(gradientStr);\n var angle = parseFloat(arr[1]) % 360 * (Math.PI / 180);\n var steps = arr[2];\n var box = element.getBBox();\n var start;\n var end;\n if (angle >= 0 && angle < 1 / 2 * Math.PI) {\n start = {\n x: box.minX,\n y: box.minY\n };\n end = {\n x: box.maxX,\n y: box.maxY\n };\n } else if (1 / 2 * Math.PI <= angle && angle < Math.PI) {\n start = {\n x: box.maxX,\n y: box.minY\n };\n end = {\n x: box.minX,\n y: box.maxY\n };\n } else if (Math.PI <= angle && angle < 3 / 2 * Math.PI) {\n start = {\n x: box.maxX,\n y: box.maxY\n };\n end = {\n x: box.minX,\n y: box.minY\n };\n } else {\n start = {\n x: box.minX,\n y: box.maxY\n };\n end = {\n x: box.maxX,\n y: box.minY\n };\n }\n var tanTheta = Math.tan(angle);\n var tanTheta2 = tanTheta * tanTheta;\n var x = (end.x - start.x + tanTheta * (end.y - start.y)) / (tanTheta2 + 1) + start.x;\n var y = tanTheta * (end.x - start.x + tanTheta * (end.y - start.y)) / (tanTheta2 + 1) + start.y;\n var gradient = context.createLinearGradient(start.x, start.y, x, y);\n addStop(steps, gradient);\n return gradient;\n}\n/**\n * 将边和填充设置的颜色转换成圆形渐变对象\n * @param {CanvasRenderingContext2D} context canvas 上下文\n * @param {IElement} element 图形元素\n * @param {string} gradientStr 颜色\n * @returns {any} 渐变对象\n */\nexport function parseRadialGradient(context, element, gradientStr) {\n var arr = regexRG.exec(gradientStr);\n var fx = parseFloat(arr[1]);\n var fy = parseFloat(arr[2]);\n var fr = parseFloat(arr[3]);\n var steps = arr[4];\n // 环半径为0时,默认无渐变,取渐变序列的最后一个颜色\n if (fr === 0) {\n var colors = steps.match(regexColorStop);\n return colors[colors.length - 1].split(':')[1];\n }\n var box = element.getBBox();\n var width = box.maxX - box.minX;\n var height = box.maxY - box.minY;\n var r = Math.sqrt(width * width + height * height) / 2;\n var gradient = context.createRadialGradient(box.minX + width * fx, box.minY + height * fy, 0, box.minX + width / 2, box.minY + height / 2, fr * r);\n addStop(steps, gradient);\n return gradient;\n}\n/**\n * 边和填充设置的颜色转换成 pattern\n * @param {CanvasRenderingContext2D} context canvas 上下文\n * @param {IElement} element 图形元素\n * @param {string} patternStr 生成 pattern 的字符串\n */\nexport function parsePattern(context, element, patternStr) {\n // 在转换过程中进行了缓存\n if (element.get('patternSource') && element.get('patternSource') === patternStr) {\n return element.get('pattern');\n }\n var pattern;\n var img;\n var arr = regexPR.exec(patternStr);\n var repeat = arr[1];\n var source = arr[2];\n // Function to be called when pattern loads\n function onload() {\n // Create pattern\n pattern = context.createPattern(img, repeat);\n element.set('pattern', pattern); // be a cache\n element.set('patternSource', patternStr);\n }\n switch (repeat) {\n case 'a':\n repeat = 'repeat';\n break;\n case 'x':\n repeat = 'repeat-x';\n break;\n case 'y':\n repeat = 'repeat-y';\n break;\n case 'n':\n repeat = 'no-repeat';\n break;\n default:\n repeat = 'no-repeat';\n }\n img = new Image();\n // If source URL is not a data URL\n if (!source.match(/^data:/i)) {\n // Set crossOrigin for this image\n img.crossOrigin = 'Anonymous';\n }\n img.src = source;\n if (img.complete) {\n onload();\n } else {\n img.onload = onload;\n // Fix onload() bug in IE9\n img.src = img.src;\n }\n return pattern;\n}\nexport function parseStyle(context, element, color) {\n var bbox = element.getBBox();\n if (isNaN(bbox.x) || isNaN(bbox.y) || isNaN(bbox.width) || isNaN(bbox.height)) {\n return color;\n }\n if (isString(color)) {\n if (color[1] === '(' || color[2] === '(') {\n if (color[0] === 'l') {\n // regexLG.test(color)\n return parseLineGradient(context, element, color);\n }\n if (color[0] === 'r') {\n // regexRG.test(color)\n return parseRadialGradient(context, element, color);\n }\n if (color[0] === 'p') {\n // regexPR.test(color)\n return parsePattern(context, element, color);\n }\n }\n return color;\n }\n if (color instanceof CanvasPattern) {\n return color;\n }\n}\nexport function parseRadius(radius) {\n var r1 = 0;\n var r2 = 0;\n var r3 = 0;\n var r4 = 0;\n if (isArray(radius)) {\n if (radius.length === 1) {\n r1 = r2 = r3 = r4 = radius[0];\n } else if (radius.length === 2) {\n r1 = r3 = radius[0];\n r2 = r4 = radius[1];\n } else if (radius.length === 3) {\n r1 = radius[0];\n r2 = r4 = radius[1];\n r3 = radius[2];\n } else {\n r1 = radius[0];\n r2 = radius[1];\n r3 = radius[2];\n r4 = radius[3];\n }\n } else {\n r1 = r2 = r3 = r4 = radius;\n }\n return [r1, r2, r3, r4];\n}","import { mod, toRadian, isSamePoint } from './util';\n// 向量长度\nfunction vMag(v) {\n return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\n}\n// u.v/|u||v|,计算夹角的余弦值\nfunction vRatio(u, v) {\n // 当存在一个向量的长度为 0 时,夹角也为 0,即夹角的余弦值为 1\n return vMag(u) * vMag(v) ? (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v)) : 1;\n}\n// 向量角度\nfunction vAngle(u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vRatio(u, v));\n}\n// A 0:rx 1:ry 2:x-axis-rotation 3:large-arc-flag 4:sweep-flag 5: x 6: y\nexport default function getArcParams(startPoint, params) {\n var rx = params[1];\n var ry = params[2];\n var xRotation = mod(toRadian(params[3]), Math.PI * 2);\n var arcFlag = params[4];\n var sweepFlag = params[5];\n // 弧形起点坐标\n var x1 = startPoint[0];\n var y1 = startPoint[1];\n // 弧形终点坐标\n var x2 = params[6];\n var y2 = params[7];\n var xp = Math.cos(xRotation) * (x1 - x2) / 2.0 + Math.sin(xRotation) * (y1 - y2) / 2.0;\n var yp = -1 * Math.sin(xRotation) * (x1 - x2) / 2.0 + Math.cos(xRotation) * (y1 - y2) / 2.0;\n var lambda = xp * xp / (rx * rx) + yp * yp / (ry * ry);\n if (lambda > 1) {\n rx *= Math.sqrt(lambda);\n ry *= Math.sqrt(lambda);\n }\n var diff = rx * rx * (yp * yp) + ry * ry * (xp * xp);\n var f = diff ? Math.sqrt((rx * rx * (ry * ry) - diff) / diff) : 1;\n if (arcFlag === sweepFlag) {\n f *= -1;\n }\n if (isNaN(f)) {\n f = 0;\n }\n // 旋转前的起点坐标,且当长半轴和短半轴的长度为 0 时,坐标按 (0, 0) 处理\n var cxp = ry ? f * rx * yp / ry : 0;\n var cyp = rx ? f * -ry * xp / rx : 0;\n // 椭圆圆心坐标\n var cx = (x1 + x2) / 2.0 + Math.cos(xRotation) * cxp - Math.sin(xRotation) * cyp;\n var cy = (y1 + y2) / 2.0 + Math.sin(xRotation) * cxp + Math.cos(xRotation) * cyp;\n // 起始点的单位向量\n var u = [(xp - cxp) / rx, (yp - cyp) / ry];\n // 终止点的单位向量\n var v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry];\n // 计算起始点和圆心的连线,与 x 轴正方向的夹角\n var theta = vAngle([1, 0], u);\n // 计算圆弧起始点和终止点与椭圆圆心连线的夹角\n var dTheta = vAngle(u, v);\n if (vRatio(u, v) <= -1) {\n dTheta = Math.PI;\n }\n if (vRatio(u, v) >= 1) {\n dTheta = 0;\n }\n if (sweepFlag === 0 && dTheta > 0) {\n dTheta = dTheta - 2 * Math.PI;\n }\n if (sweepFlag === 1 && dTheta < 0) {\n dTheta = dTheta + 2 * Math.PI;\n }\n return {\n cx: cx,\n cy: cy,\n // 弧形的起点和终点相同时,长轴和短轴的长度按 0 处理\n rx: isSamePoint(startPoint, [x2, y2]) ? 0 : rx,\n ry: isSamePoint(startPoint, [x2, y2]) ? 0 : ry,\n startAngle: theta,\n endAngle: theta + dTheta,\n xRotation: xRotation,\n arcFlag: arcFlag,\n sweepFlag: sweepFlag\n };\n}","import { __assign, __rest } from \"tslib\";\nimport { Path } from '../shape';\nvar sin = Math.sin,\n cos = Math.cos,\n atan2 = Math.atan2,\n PI = Math.PI;\nfunction _addDefaultArrow(shape, attrs, x1, y1, x2, y2, isStart) {\n var stroke = attrs.stroke,\n lineWidth = attrs.lineWidth;\n var x = x1 - x2;\n var y = y1 - y2;\n var rad = atan2(y, x);\n var arrowShape = new Path({\n type: 'path',\n canvas: shape.get('canvas'),\n isArrowShape: true,\n attrs: {\n // 默认箭头的边长为 10,夹角为 60 度\n path: \"M\" + 10 * cos(PI / 6) + \",\" + 10 * sin(PI / 6) + \" L0,0 L\" + 10 * cos(PI / 6) + \",-\" + 10 * sin(PI / 6),\n // 使用 shape stroke 值\n stroke: stroke,\n lineWidth: lineWidth\n }\n });\n arrowShape.translate(x2, y2);\n arrowShape.rotateAtPoint(x2, y2, rad);\n shape.set(isStart ? 'startArrowShape' : 'endArrowShape', arrowShape);\n}\n/**\n * 箭头 path 的设置要求\n * 1. 箭头顶点坐标需要为 (0, 0)\n * 2. 箭头夹角的中心分割线需要与 X 轴正方向对齐\n */\nfunction _addCustomizedArrow(shape, attrs, x1, y1, x2, y2, isStart) {\n var startArrow = attrs.startArrow,\n endArrow = attrs.endArrow,\n stroke = attrs.stroke,\n lineWidth = attrs.lineWidth;\n var arrowAttrs = isStart ? startArrow : endArrow;\n var d = arrowAttrs.d,\n arrowFill = arrowAttrs.fill,\n arrowStroke = arrowAttrs.stroke,\n arrowLineWidth = arrowAttrs.lineWidth,\n restAttrs = __rest(arrowAttrs, [\"d\", \"fill\", \"stroke\", \"lineWidth\"]);\n var x = x1 - x2;\n var y = y1 - y2;\n var rad = atan2(y, x);\n if (d) {\n x2 = x2 - cos(rad) * d;\n y2 = y2 - sin(rad) * d;\n }\n var arrowShape = new Path({\n type: 'path',\n canvas: shape.get('canvas'),\n isArrowShape: true,\n attrs: __assign(__assign({}, restAttrs), {\n // 支持单独设置箭头的 stroke 和 lineWidth,若为空则使用 shape 的值\n stroke: arrowStroke || stroke,\n lineWidth: arrowLineWidth || lineWidth,\n // 箭头是否填充需要手动设置,不会继承自 shape 的值\n fill: arrowFill\n })\n });\n arrowShape.translate(x2, y2);\n arrowShape.rotateAtPoint(x2, y2, rad);\n shape.set(isStart ? 'startArrowShape' : 'endArrowShape', arrowShape);\n}\n/**\n * 如果自定义箭头并且有 d 需要做偏移,如果直接画,线条会超出箭头尖端,因此需要根据箭头偏移 d, 返回线需要缩短的距离\n * |----------------\n * |<|--------------\n * |\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 箭头作用点 x\n * @param {number} y2 箭头作用点 y\n * @param {number} d 箭头沿线条方向的偏移距离\n * @return {{dx: number, dy: number}} 返回线条偏移距离\n */\nexport function getShortenOffset(x1, y1, x2, y2, d) {\n var rad = atan2(y2 - y1, x2 - x1);\n return {\n dx: cos(rad) * d,\n dy: sin(rad) * d\n };\n}\n/**\n * 绘制起始箭头\n * @param {IShape} shape 图形\n * @param {ShapeAttrs} attrs shape 的绘图属性\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 箭头作用点 x\n * @param {number} y2 箭头作用点 y\n */\nexport function addStartArrow(shape, attrs, x1, y1, x2, y2) {\n if (typeof attrs.startArrow === 'object') {\n _addCustomizedArrow(shape, attrs, x1, y1, x2, y2, true);\n } else if (attrs.startArrow) {\n _addDefaultArrow(shape, attrs, x1, y1, x2, y2, true);\n } else {\n shape.set('startArrowShape', null);\n }\n}\n/**\n * 绘制结束箭头\n * @param {IShape} shape 图形\n * @param {ShapeAttrs} attrs shape 的绘图属性\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 箭头作用点 x\n * @param {number} y2 箭头作用点 y\n */\nexport function addEndArrow(shape, attrs, x1, y1, x2, y2) {\n if (typeof attrs.endArrow === 'object') {\n _addCustomizedArrow(shape, attrs, x1, y1, x2, y2, false);\n } else if (attrs.endArrow) {\n _addDefaultArrow(shape, attrs, x1, y1, x2, y2, false);\n } else {\n shape.set('startArrowShape', null);\n }\n}","import { each, isArray, max, min } from '@antv/util';\nimport { parseStyle } from './parse';\nimport getArcParams from './arc-params';\nimport { mergeRegion, intersectRect } from './util';\nimport * as ArrowUtil from '../util/arrow';\nvar SHAPE_ATTRS_MAP = {\n fill: 'fillStyle',\n stroke: 'strokeStyle',\n opacity: 'globalAlpha'\n};\nexport function applyAttrsToContext(context, element) {\n var attrs = element.attr();\n for (var k in attrs) {\n var v = attrs[k];\n // 转换一下不与 canvas 兼容的属性名\n var name_1 = SHAPE_ATTRS_MAP[k] ? SHAPE_ATTRS_MAP[k] : k;\n if (name_1 === 'matrix' && v) {\n // 设置矩阵\n context.transform(v[0], v[1], v[3], v[4], v[6], v[7]);\n } else if (name_1 === 'lineDash' && context.setLineDash) {\n // 设置虚线,只支持数组形式,非数组形式不做任何操作\n isArray(v) && context.setLineDash(v);\n } else {\n if (name_1 === 'strokeStyle' || name_1 === 'fillStyle') {\n // 如果存在渐变、pattern 这个开销有些大\n // 可以考虑缓存机制,通过 hasUpdate 来避免一些运算\n v = parseStyle(context, element, v);\n } else if (name_1 === 'globalAlpha') {\n // opacity 效果可以叠加,子元素的 opacity 需要与父元素 opacity 相乘\n v = v * context.globalAlpha;\n }\n context[name_1] = v;\n }\n }\n}\nexport function drawChildren(context, children, region) {\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n if (child.cfg.visible) {\n child.draw(context, region);\n } else {\n child.skipDraw();\n }\n }\n}\n// 这个地方的逻辑比较复杂,简单画了一张图:https://www.yuque.com/antv/ou292n/pcgt5g#OW1QE\nexport function checkRefresh(canvas, children, region) {\n var refreshElements = canvas.get('refreshElements');\n // 先遍历需要刷新的元素,将这些元素的父元素也设置 refresh\n each(refreshElements, function (el) {\n if (el !== canvas) {\n var parent_1 = el.cfg.parent;\n while (parent_1 && parent_1 !== canvas && !parent_1.cfg.refresh) {\n parent_1.cfg.refresh = true;\n parent_1 = parent_1.cfg.parent;\n }\n }\n });\n if (refreshElements[0] === canvas) {\n setChildrenRefresh(children, region);\n } else {\n // 检查所有子元素是否可以刷新\n checkChildrenRefresh(children, region);\n }\n}\n// 检查所有的子元素是否应该更新\nexport function checkChildrenRefresh(children, region) {\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n if (child.cfg.visible) {\n // 先判断 hasChanged,因为它的优先级判断应该高于 refresh\n if (child.cfg.hasChanged) {\n // 如果节点发生了 change,则需要级联设置子元素的 refresh\n child.cfg.refresh = true;\n if (child.isGroup()) {\n setChildrenRefresh(child.cfg.children, region);\n }\n } else if (child.cfg.refresh) {\n // 如果当前图形/分组 refresh = true,说明其子节点存在 changed\n if (child.isGroup()) {\n checkChildrenRefresh(child.cfg.children, region);\n }\n } else {\n // 这个分支说明此次局部刷新,所有的节点和父元素没有发生变化,仅需要检查包围盒(缓存)是否相交即可\n var refresh = checkElementRefresh(child, region);\n child.cfg.refresh = refresh;\n if (refresh && child.isGroup()) {\n // 如果需要刷新,说明子元素也需要刷新,继续进行判定\n checkChildrenRefresh(child.cfg.children, region);\n }\n }\n }\n }\n}\n// 由于对改变的图形放入 refreshElements 时做了优化,判定父元素 changed 时不加入\n// 那么有可能会出现 elements 都为空,所以最终 group\nexport function clearChanged(elements) {\n for (var i = 0; i < elements.length; i++) {\n var el = elements[i];\n el.cfg.hasChanged = false;\n // 级联清理\n if (el.isGroup() && !el.destroyed) {\n clearChanged(el.cfg.children);\n }\n }\n}\n// 当某个父元素发生改变时,调用这个方法级联设置 refresh\nfunction setChildrenRefresh(children, region) {\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n if (!child.cfg.visible) {\n continue;\n }\n // let refresh = true;\n // 获取缓存的 bbox,如果这个 bbox 还存在则说明父元素不是矩阵发生了改变\n // const bbox = child.cfg.canvasBBox;\n // if (bbox) {\n // // 如果这时候\n // refresh = intersectRect(bbox, region);\n // }\n child.cfg.refresh = true;\n // 如果需要刷新当前节点,所有的子元素设置 refresh\n if (child.isGroup()) {\n setChildrenRefresh(child.get('children'), region);\n }\n }\n}\nfunction checkElementRefresh(shape, region) {\n var bbox = shape.cfg.cacheCanvasBBox;\n var isAllow = shape.cfg.isInView && bbox && intersectRect(bbox, region);\n return isAllow;\n}\n// 绘制 path\nexport function drawPath(shape, context, attrs, arcParamsCache) {\n var path = attrs.path,\n startArrow = attrs.startArrow,\n endArrow = attrs.endArrow;\n if (!path) {\n return;\n }\n var currentPoint = [0, 0]; // 当前图形\n var startMovePoint = [0, 0]; // 开始 M 的点,可能会有多个\n var distance = {\n dx: 0,\n dy: 0\n };\n context.beginPath();\n for (var i = 0; i < path.length; i++) {\n var params = path[i];\n var command = params[0];\n if (i === 0 && startArrow && startArrow.d) {\n var tangent = shape.getStartTangent();\n distance = ArrowUtil.getShortenOffset(tangent[0][0], tangent[0][1], tangent[1][0], tangent[1][1], startArrow.d);\n } else if (i === path.length - 2 && path[i + 1][0] === 'Z' && endArrow && endArrow.d) {\n // 为了防止结尾为 Z 的 segment 缩短不起效,需要取最后两个 segment 特殊处理\n var lastPath = path[i + 1];\n if (lastPath[0] === 'Z') {\n var tangent = shape.getEndTangent();\n distance = ArrowUtil.getShortenOffset(tangent[0][0], tangent[0][1], tangent[1][0], tangent[1][1], endArrow.d);\n }\n } else if (i === path.length - 1 && endArrow && endArrow.d) {\n if (path[0] !== 'Z') {\n var tangent = shape.getEndTangent();\n distance = ArrowUtil.getShortenOffset(tangent[0][0], tangent[0][1], tangent[1][0], tangent[1][1], endArrow.d);\n }\n }\n var dx = distance.dx,\n dy = distance.dy;\n // V,H,S,T 都在前面被转换成标准形式\n switch (command) {\n case 'M':\n context.moveTo(params[1] - dx, params[2] - dy);\n startMovePoint = [params[1], params[2]];\n break;\n case 'L':\n context.lineTo(params[1] - dx, params[2] - dy);\n break;\n case 'Q':\n context.quadraticCurveTo(params[1], params[2], params[3] - dx, params[4] - dy);\n break;\n case 'C':\n context.bezierCurveTo(params[1], params[2], params[3], params[4], params[5] - dx, params[6] - dy);\n break;\n case 'A':\n {\n var arcParams = void 0;\n // 为了加速绘制,可以提供参数的缓存,各个图形自己缓存\n if (arcParamsCache) {\n arcParams = arcParamsCache[i];\n if (!arcParams) {\n arcParams = getArcParams(currentPoint, params);\n arcParamsCache[i] = arcParams;\n }\n } else {\n arcParams = getArcParams(currentPoint, params);\n }\n var cx = arcParams.cx,\n cy = arcParams.cy,\n rx = arcParams.rx,\n ry = arcParams.ry,\n startAngle = arcParams.startAngle,\n endAngle = arcParams.endAngle,\n xRotation = arcParams.xRotation,\n sweepFlag = arcParams.sweepFlag;\n // 直接使用椭圆的 api\n if (context.ellipse) {\n context.ellipse(cx, cy, rx, ry, xRotation, startAngle, endAngle, 1 - sweepFlag);\n } else {\n var r = rx > ry ? rx : ry;\n var scaleX = rx > ry ? 1 : rx / ry;\n var scaleY = rx > ry ? ry / rx : 1;\n context.translate(cx, cy);\n context.rotate(xRotation);\n context.scale(scaleX, scaleY);\n context.arc(0, 0, r, startAngle, endAngle, 1 - sweepFlag);\n context.scale(1 / scaleX, 1 / scaleY);\n context.rotate(-xRotation);\n context.translate(-cx, -cy);\n }\n break;\n }\n case 'Z':\n context.closePath();\n break;\n default:\n break;\n }\n // 有了 Z 后,当前节点从开始 M 的点开始\n if (command === 'Z') {\n currentPoint = startMovePoint;\n } else {\n var len = params.length;\n currentPoint = [params[len - 2], params[len - 1]];\n }\n }\n}\n// 刷新图形元素(Shape 或者 Group)\nexport function refreshElement(element, changeType) {\n var canvas = element.get('canvas');\n // 只有存在于 canvas 上时生效\n if (canvas) {\n if (changeType === 'remove') {\n // 一旦 remove,则无法在 element 上拿到包围盒\n // destroy 后所有属性都拿不到,所以需要暂存一下\n // 这是一段 hack 的代码\n element._cacheCanvasBBox = element.get('cacheCanvasBBox');\n }\n // 防止反复刷新\n if (!element.get('hasChanged')) {\n // 但是始终要标记为 hasChanged,便于后面进行局部渲染\n element.set('hasChanged', true);\n // 本来只有局部渲染模式下,才需要记录更新的元素队列\n // if (canvas.get('localRefresh')) {\n // canvas.refreshElement(element, changeType, canvas);\n // }\n // 但对于 https://github.com/antvis/g/issues/422 的场景,全局渲染的模式下也需要记录更新的元素队列\n // 如果当前元素的父元素发生了改变,可以不放入队列,这句话大概能够提升 15% 的初次渲染性能\n if (!(element.cfg.parent && element.cfg.parent.get('hasChanged'))) {\n canvas.refreshElement(element, changeType, canvas);\n if (canvas.get('autoDraw')) {\n canvas.draw();\n }\n }\n }\n }\n}\nexport function getRefreshRegion(element) {\n var region;\n if (!element.destroyed) {\n var cacheBox = element.get('cacheCanvasBBox');\n var validCache = cacheBox && !!(cacheBox.width && cacheBox.height);\n var bbox = element.getCanvasBBox();\n var validBBox = bbox && !!(bbox.width && bbox.height);\n // 是否是有效 bbox 判定,一些 NaN 或者 宽高为 0 的情况过滤掉\n if (validCache && validBBox) {\n region = mergeRegion(cacheBox, bbox);\n } else if (validCache) {\n region = cacheBox;\n } else if (validBBox) {\n region = bbox;\n }\n } else {\n // 因为元素已经销毁所以无法获取到缓存的包围盒\n region = element['_cacheCanvasBBox'];\n }\n return region;\n}\nexport function getMergedRegion(elements) {\n if (!elements.length) {\n return null;\n }\n var minXArr = [];\n var minYArr = [];\n var maxXArr = [];\n var maxYArr = [];\n each(elements, function (el) {\n var region = getRefreshRegion(el);\n if (region) {\n minXArr.push(region.minX);\n minYArr.push(region.minY);\n maxXArr.push(region.maxX);\n maxYArr.push(region.maxY);\n }\n });\n return {\n minX: min(minXArr),\n minY: min(minYArr),\n maxX: max(maxXArr),\n maxY: max(maxYArr)\n };\n}\nexport function mergeView(region, viewRegion) {\n if (!region || !viewRegion) {\n return null;\n }\n // 不相交,则直接返回 null\n if (!intersectRect(region, viewRegion)) {\n return null;\n }\n return {\n minX: Math.max(region.minX, viewRegion.minX),\n minY: Math.max(region.minY, viewRegion.minY),\n maxX: Math.min(region.maxX, viewRegion.maxX),\n maxY: Math.min(region.maxY, viewRegion.maxY)\n };\n}","import { __extends } from \"tslib\";\nimport { AbstractGroup } from '@antv/g-base';\nimport * as Shape from './shape';\nimport { applyAttrsToContext, drawChildren, refreshElement } from './util/draw';\nimport { each, max, min } from '@antv/util';\nimport { intersectRect } from './util/util';\nvar Group = /** @class */function (_super) {\n __extends(Group, _super);\n function Group() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n Group.prototype.onCanvasChange = function (changeType) {\n refreshElement(this, changeType);\n };\n Group.prototype.getShapeBase = function () {\n return Shape;\n };\n Group.prototype.getGroupBase = function () {\n return Group;\n };\n // 同 shape 中的方法重复了\n Group.prototype._applyClip = function (context, clip) {\n if (clip) {\n context.save();\n // 将 clip 的属性挂载到 context 上\n applyAttrsToContext(context, clip);\n // 绘制 clip 路径\n clip.createPath(context);\n context.restore();\n // 裁剪\n context.clip();\n clip._afterDraw();\n }\n };\n // 这个方法以前直接使用的 getCanvasBBox,由于 group 上没有缓存,所以每次重新计算,导致性能开销比较大\n // 大概能够节省全局渲染 15-20% 的性能,如果不在这里加缓存优化后 10W 个节点无法达到 5-6 ms,大概能够 30-40ms\n Group.prototype.cacheCanvasBBox = function () {\n var children = this.cfg.children;\n var xArr = [];\n var yArr = [];\n each(children, function (child) {\n var bbox = child.cfg.cacheCanvasBBox;\n // isInview 的判定是一旦图形或者分组渲染就要计算是否在视图内,\n // 这个判定 10W 个图形下差不多能够节省 5-6 ms 的开销\n if (bbox && child.cfg.isInView) {\n xArr.push(bbox.minX, bbox.maxX);\n yArr.push(bbox.minY, bbox.maxY);\n }\n });\n var bbox = null;\n if (xArr.length) {\n var minX = min(xArr);\n var maxX = max(xArr);\n var minY = min(yArr);\n var maxY = max(yArr);\n bbox = {\n minX: minX,\n minY: minY,\n x: minX,\n y: minY,\n maxX: maxX,\n maxY: maxY,\n width: maxX - minX,\n height: maxY - minY\n };\n var canvas = this.cfg.canvas;\n if (canvas) {\n var viewRange = canvas.getViewRange();\n // 如果这个地方判定 isInView == false 设置 bbox 为 false 的话,拾取的性能会更高\n // 但是目前 10W 图形的拾取在 2-5ms 内,这个优化意义不大,可以后期观察再看\n this.set('isInView', intersectRect(bbox, viewRange));\n }\n } else {\n this.set('isInView', false);\n }\n this.set('cacheCanvasBBox', bbox);\n };\n Group.prototype.draw = function (context, region) {\n var children = this.cfg.children;\n var allowDraw = region ? this.cfg.refresh : true; // 局部刷新需要判定\n // 这个地方需要判定,在 G6 的场景每个 group 都有 transform 的场景下性能会开销非常大\n // 通过 refresh 的判定,可以不刷新没有发生过变化的分组,不在视窗内的分组等等\n // 如果想进一步提升局部渲染性能,可以进一步优化 refresh 的判定,依然有潜力\n if (children.length && allowDraw) {\n context.save();\n // group 上的矩阵和属性也会应用到上下文上\n // 先将 attrs 应用到上下文中,再设置 clip。因为 clip 应该被当前元素的 matrix 所影响\n applyAttrsToContext(context, this);\n this._applyClip(context, this.getClip());\n drawChildren(context, children, region);\n context.restore();\n this.cacheCanvasBBox();\n }\n // 这里的成本比较大,如果不绘制则不再\n // this.set('cacheCanvasBBox', this.getCanvasBBox());\n this.cfg.refresh = null;\n // 绘制后,消除更新标记\n this.set('hasChanged', false);\n };\n // 绘制时被跳过,一般发生在分组隐藏时\n Group.prototype.skipDraw = function () {\n this.set('cacheCanvasBBox', null);\n this.set('hasChanged', false);\n };\n return Group;\n}(AbstractGroup);\nexport default Group;","import { __assign, __extends } from \"tslib\";\nimport { AbstractShape } from '@antv/g-base';\nimport { isNil, intersectRect } from '../util/util';\nimport { applyAttrsToContext, refreshElement } from '../util/draw';\nimport { getBBoxMethod } from '@antv/g-base';\nimport * as Shape from './index';\nimport Group from '../group';\nvar ShapeBase = /** @class */function (_super) {\n __extends(ShapeBase, _super);\n function ShapeBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ShapeBase.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n // 设置默认值\n return __assign(__assign({}, attrs), {\n lineWidth: 1,\n lineAppendWidth: 0,\n strokeOpacity: 1,\n fillOpacity: 1\n });\n };\n ShapeBase.prototype.getShapeBase = function () {\n return Shape;\n };\n ShapeBase.prototype.getGroupBase = function () {\n return Group;\n };\n /**\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n ShapeBase.prototype.onCanvasChange = function (changeType) {\n refreshElement(this, changeType);\n };\n ShapeBase.prototype.calculateBBox = function () {\n var type = this.get('type');\n var lineWidth = this.getHitLineWidth();\n // const attrs = this.attr();\n var bboxMethod = getBBoxMethod(type);\n var box = bboxMethod(this);\n var halfLineWidth = lineWidth / 2;\n var minX = box.x - halfLineWidth;\n var minY = box.y - halfLineWidth;\n var maxX = box.x + box.width + halfLineWidth;\n var maxY = box.y + box.height + halfLineWidth;\n return {\n x: minX,\n minX: minX,\n y: minY,\n minY: minY,\n width: box.width + lineWidth,\n height: box.height + lineWidth,\n maxX: maxX,\n maxY: maxY\n };\n };\n ShapeBase.prototype.isFill = function () {\n return !!this.attrs['fill'] || this.isClipShape();\n };\n ShapeBase.prototype.isStroke = function () {\n return !!this.attrs['stroke'];\n };\n // 同 shape 中的方法重复了\n ShapeBase.prototype._applyClip = function (context, clip) {\n if (clip) {\n context.save();\n // 将 clip 的属性挂载到 context 上\n applyAttrsToContext(context, clip);\n // 绘制 clip 路径\n clip.createPath(context);\n context.restore();\n // 裁剪\n context.clip();\n clip._afterDraw();\n }\n };\n // 绘制图形时需要考虑 region 限制\n ShapeBase.prototype.draw = function (context, region) {\n var clip = this.cfg.clipShape;\n // 如果指定了 region,同时不允许刷新时,直接返回\n if (region) {\n if (this.cfg.refresh === false) {\n // this._afterDraw();\n this.set('hasChanged', false);\n return;\n }\n // 是否相交需要考虑 clip 的包围盒\n var bbox = this.getCanvasBBox();\n if (!intersectRect(region, bbox)) {\n // 图形的包围盒与重绘区域不相交时,也需要清除标记\n this.set('hasChanged', false);\n // 存在多种情形需要更新 cacheCanvasBBox 和 isInview 的判定\n // 1. 之前图形在视窗内,但是现在不再视窗内\n // 2. 如果当前的图形以及父元素都没有发生过变化,refresh = false 不会走到这里,所以这里的图形都是父元素发生变化,但是没有在视图内的元素\n if (this.cfg.isInView) {\n this._afterDraw();\n }\n return;\n }\n }\n context.save();\n // 先将 attrs 应用到上下文中,再设置 clip。因为 clip 应该被当前元素的 matrix 所影响\n applyAttrsToContext(context, this);\n this._applyClip(context, clip);\n this.drawPath(context);\n context.restore();\n this._afterDraw();\n };\n ShapeBase.prototype.getCanvasViewBox = function () {\n var canvas = this.cfg.canvas;\n if (canvas) {\n // @ts-ignore\n return canvas.getViewRange();\n }\n return null;\n };\n ShapeBase.prototype.cacheCanvasBBox = function () {\n var canvasBBox = this.getCanvasViewBox();\n // 绘制的时候缓存包围盒\n if (canvasBBox) {\n var bbox = this.getCanvasBBox();\n var isInView = intersectRect(bbox, canvasBBox);\n this.set('isInView', isInView);\n // 不再视窗内 cacheCanvasBBox 设置成 null,会提升局部渲染的性能,\n // 因为在局部渲染影响的包围盒计算时不考虑这个图形的包围盒\n // 父元素 cacheCanvasBBox 计算的时候也不计算\n if (isInView) {\n this.set('cacheCanvasBBox', bbox);\n } else {\n this.set('cacheCanvasBBox', null);\n }\n }\n };\n ShapeBase.prototype._afterDraw = function () {\n this.cacheCanvasBBox();\n // 绘制后消除标记\n this.set('hasChanged', false);\n this.set('refresh', null);\n };\n ShapeBase.prototype.skipDraw = function () {\n this.set('cacheCanvasBBox', null);\n this.set('isInView', null);\n this.set('hasChanged', false);\n };\n /**\n * 绘制图形的路径\n * @param {CanvasRenderingContext2D} context 上下文\n */\n ShapeBase.prototype.drawPath = function (context) {\n this.createPath(context);\n this.strokeAndFill(context);\n this.afterDrawPath(context);\n };\n /**\n * @protected\n * 填充图形\n * @param {CanvasRenderingContext2D} context context 上下文\n */\n ShapeBase.prototype.fill = function (context) {\n context.fill();\n };\n /**\n * @protected\n * 绘制图形边框\n * @param {CanvasRenderingContext2D} context context 上下文\n */\n ShapeBase.prototype.stroke = function (context) {\n context.stroke();\n };\n // 绘制或者填充\n ShapeBase.prototype.strokeAndFill = function (context) {\n var _a = this.attrs,\n lineWidth = _a.lineWidth,\n opacity = _a.opacity,\n strokeOpacity = _a.strokeOpacity,\n fillOpacity = _a.fillOpacity;\n if (this.isFill()) {\n if (!isNil(fillOpacity) && fillOpacity !== 1) {\n context.globalAlpha = fillOpacity;\n this.fill(context);\n context.globalAlpha = opacity;\n } else {\n this.fill(context);\n }\n }\n if (this.isStroke()) {\n if (lineWidth > 0) {\n if (!isNil(strokeOpacity) && strokeOpacity !== 1) {\n context.globalAlpha = strokeOpacity;\n }\n this.stroke(context);\n }\n }\n this.afterDrawPath(context);\n };\n /**\n * @protected\n * 绘制图形的路径\n * @param {CanvasRenderingContext2D} context 上下文\n */\n ShapeBase.prototype.createPath = function (context) {};\n /**\n * 绘制完成 path 后的操作\n * @param {CanvasRenderingContext2D} context 上下文\n */\n ShapeBase.prototype.afterDrawPath = function (context) {};\n ShapeBase.prototype.isInShape = function (refX, refY) {\n // return HitUtil.isHitShape(this, refX, refY);\n var isStroke = this.isStroke();\n var isFill = this.isFill();\n var lineWidth = this.getHitLineWidth();\n return this.isInStrokeOrPath(refX, refY, isStroke, isFill, lineWidth);\n };\n // 之所以不拆成 isInStroke 和 isInPath 在于两者存在一些共同的计算\n ShapeBase.prototype.isInStrokeOrPath = function (x, y, isStroke, isFill, lineWidth) {\n return false;\n };\n /**\n * 获取线拾取的宽度\n * @returns {number} 线的拾取宽度\n */\n ShapeBase.prototype.getHitLineWidth = function () {\n if (!this.isStroke()) {\n return 0;\n }\n var attrs = this.attrs;\n return attrs['lineWidth'] + attrs['lineAppendWidth'];\n };\n return ShapeBase;\n}(AbstractShape);\nexport default ShapeBase;","/**\n * @fileoverview 圆\n * @author dxq613@gmail.com\n */\nimport { __assign, __extends } from \"tslib\";\nimport ShapeBase from './base';\nimport { distance } from '../util/util';\nvar Circle = /** @class */function (_super) {\n __extends(Circle, _super);\n function Circle() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Circle.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return __assign(__assign({}, attrs), {\n x: 0,\n y: 0,\n r: 0\n });\n };\n Circle.prototype.isInStrokeOrPath = function (x, y, isStroke, isFill, lineWidth) {\n var attrs = this.attr();\n var cx = attrs.x;\n var cy = attrs.y;\n var r = attrs.r;\n var halfLineWidth = lineWidth / 2;\n var absDistance = distance(cx, cy, x, y);\n // 直接用距离,如果同时存在边和填充时,可以减少两次计算\n if (isFill && isStroke) {\n return absDistance <= r + halfLineWidth;\n }\n if (isFill) {\n return absDistance <= r;\n }\n if (isStroke) {\n return absDistance >= r - halfLineWidth && absDistance <= r + halfLineWidth;\n }\n return false;\n };\n Circle.prototype.createPath = function (context) {\n var attrs = this.attr();\n var cx = attrs.x;\n var cy = attrs.y;\n var r = attrs.r;\n context.beginPath();\n context.arc(cx, cy, r, 0, Math.PI * 2, false);\n context.closePath();\n };\n return Circle;\n}(ShapeBase);\nexport default Circle;","/**\n * @fileoverview 椭圆\n * @author dxq613@gmail.com\n */\nimport { __assign, __extends } from \"tslib\";\nimport ShapeBase from './base';\n// 根据椭圆公式计算 x*x/rx*rx + y*y/ry*ry;\nfunction ellipseDistance(squareX, squareY, rx, ry) {\n return squareX / (rx * rx) + squareY / (ry * ry);\n}\nvar Ellipse = /** @class */function (_super) {\n __extends(Ellipse, _super);\n function Ellipse() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Ellipse.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return __assign(__assign({}, attrs), {\n x: 0,\n y: 0,\n rx: 0,\n ry: 0\n });\n };\n Ellipse.prototype.isInStrokeOrPath = function (x, y, isStroke, isFill, lineWidth) {\n var attrs = this.attr();\n var halfLineWith = lineWidth / 2;\n var cx = attrs.x;\n var cy = attrs.y;\n var rx = attrs.rx,\n ry = attrs.ry;\n var squareX = (x - cx) * (x - cx);\n var squareY = (y - cy) * (y - cy);\n // 使用椭圆的公式: x*x/rx*rx + y*y/ry*ry = 1;\n if (isFill && isStroke) {\n return ellipseDistance(squareX, squareY, rx + halfLineWith, ry + halfLineWith) <= 1;\n }\n if (isFill) {\n return ellipseDistance(squareX, squareY, rx, ry) <= 1;\n }\n if (isStroke) {\n return ellipseDistance(squareX, squareY, rx - halfLineWith, ry - halfLineWith) >= 1 && ellipseDistance(squareX, squareY, rx + halfLineWith, ry + halfLineWith) <= 1;\n }\n return false;\n };\n Ellipse.prototype.createPath = function (context) {\n var attrs = this.attr();\n var cx = attrs.x;\n var cy = attrs.y;\n var rx = attrs.rx;\n var ry = attrs.ry;\n context.beginPath();\n // 兼容逻辑\n if (context.ellipse) {\n context.ellipse(cx, cy, rx, ry, 0, 0, Math.PI * 2, false);\n } else {\n // 如果不支持,则使用圆来绘制,进行变形\n var r = rx > ry ? rx : ry;\n var scaleX = rx > ry ? 1 : rx / ry;\n var scaleY = rx > ry ? ry / rx : 1;\n context.save();\n context.translate(cx, cy);\n context.scale(scaleX, scaleY);\n context.arc(0, 0, r, 0, Math.PI * 2);\n context.restore();\n context.closePath();\n }\n };\n return Ellipse;\n}(ShapeBase);\nexport default Ellipse;","/**\n * @fileoverview 图片\n * @author dxq613@gmail.com\n */\nimport { __assign, __extends } from \"tslib\";\nimport ShapeBase from './base';\nimport { isString, isNil } from '../util/util';\nfunction isCanvas(dom) {\n return dom instanceof HTMLElement && isString(dom.nodeName) && dom.nodeName.toUpperCase() === 'CANVAS';\n}\nvar ImageShape = /** @class */function (_super) {\n __extends(ImageShape, _super);\n function ImageShape() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ImageShape.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return __assign(__assign({}, attrs), {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n });\n };\n ImageShape.prototype.initAttrs = function (attrs) {\n this._setImage(attrs.img);\n };\n // image 不计算 stroke\n ImageShape.prototype.isStroke = function () {\n return false;\n };\n // 仅仅使用包围盒检测来进行拾取\n // 所以不需要复写 isInStrokeOrPath 的方法\n ImageShape.prototype.isOnlyHitBox = function () {\n return true;\n };\n ImageShape.prototype._afterLoading = function () {\n if (this.get('toDraw') === true) {\n var canvas = this.get('canvas');\n if (canvas) {\n // 这段应该改成局部渲染\n canvas.draw();\n } else {\n // 这种方式如果发生遮挡会出现问题\n this.createPath(this.get('context'));\n }\n }\n };\n ImageShape.prototype._setImage = function (img) {\n var _this = this;\n var attrs = this.attrs;\n if (isString(img)) {\n var image_1 = new Image();\n image_1.onload = function () {\n // 图片未加载完,则已经被销毁\n if (_this.destroyed) {\n return false;\n }\n // 缓存原始地址,可以做对比,防止重复加载图片\n // 如果考虑到在加载过程中可能替换 img 属性,则情况更加复杂\n // this.set('imgSrc', img);\n // 这里会循环调用 _setImage 方法,但不会再走这个分支\n _this.attr('img', image_1);\n _this.set('loading', false);\n _this._afterLoading();\n var callback = _this.get('callback');\n if (callback) {\n callback.call(_this);\n }\n };\n // 设置跨域\n image_1.crossOrigin = 'Anonymous';\n image_1.src = img;\n // loading 过程中不绘制\n this.set('loading', true);\n } else if (img instanceof Image) {\n // 如果是一个 image 对象,则设置宽高\n if (!attrs.width) {\n attrs.width = img.width;\n }\n if (!attrs.height) {\n attrs.height = img.height;\n }\n } else if (isCanvas(img)) {\n // 如果设置了 canvas 对象\n if (!attrs.width) {\n attrs.width = Number(img.getAttribute('width'));\n }\n if (!attrs.height) {\n attrs.height, Number(img.getAttribute('height'));\n }\n }\n };\n ImageShape.prototype.onAttrChange = function (name, value, originValue) {\n _super.prototype.onAttrChange.call(this, name, value, originValue);\n // 如果加载的已经是当前图片,则不再处理\n if (name === 'img') {\n // 可以加缓冲,&& this.get('imgSrc') !== value\n this._setImage(value);\n }\n };\n ImageShape.prototype.createPath = function (context) {\n // 正在加载则不绘制\n if (this.get('loading')) {\n this.set('toDraw', true); // 加载完成后绘制\n this.set('context', context);\n return;\n }\n var attrs = this.attr();\n var x = attrs.x,\n y = attrs.y,\n width = attrs.width,\n height = attrs.height,\n sx = attrs.sx,\n sy = attrs.sy,\n swidth = attrs.swidth,\n sheight = attrs.sheight;\n var img = attrs.img;\n if (img instanceof Image || isCanvas(img)) {\n if (!isNil(sx) && !isNil(sy) && !isNil(swidth) && !isNil(sheight)) {\n context.drawImage(img, sx, sy, swidth, sheight, x, y, width, height);\n } else {\n context.drawImage(img, x, y, width, height);\n }\n }\n };\n return ImageShape;\n}(ShapeBase);\nexport default ImageShape;","import { Line as LineUtil } from '@antv/g-math';\nexport default function inLine(x1, y1, x2, y2, lineWidth, x, y) {\n var minX = Math.min(x1, x2);\n var maxX = Math.max(x1, x2);\n var minY = Math.min(y1, y2);\n var maxY = Math.max(y1, y2);\n var halfWidth = lineWidth / 2;\n // 因为目前的方案是计算点到直线的距离,而有可能会在延长线上,所以要先判断是否在包围盒内\n // 这种方案会在水平或者竖直的情况下载线的延长线上有半 lineWidth 的误差\n if (!(x >= minX - halfWidth && x <= maxX + halfWidth && y >= minY - halfWidth && y <= maxY + halfWidth)) {\n return false;\n }\n // 因为已经计算了包围盒,所以仅需要计算到直线的距离即可,可以显著提升性能\n return LineUtil.pointToLine(x1, y1, x2, y2, x, y) <= lineWidth / 2;\n}","import { __assign, __extends } from \"tslib\";\n/**\n * @fileoverview 线\n * @author dxq613@gmail.com\n */\nimport { Line as LineUtil } from '@antv/g-math';\nimport ShapeBase from './base';\nimport inLine from '../util/in-stroke/line';\nimport * as ArrowUtil from '../util/arrow';\nvar Line = /** @class */function (_super) {\n __extends(Line, _super);\n function Line() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Line.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return __assign(__assign({}, attrs), {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 0,\n startArrow: false,\n endArrow: false\n });\n };\n Line.prototype.initAttrs = function (attrs) {\n this.setArrow();\n };\n // 更新属性时,检测是否更改了箭头\n Line.prototype.onAttrChange = function (name, value, originValue) {\n _super.prototype.onAttrChange.call(this, name, value, originValue);\n // 由于箭头的绘制依赖于 line 的诸多 attrs,因此这里不再对每个 attr 进行判断,attr 每次变化都会影响箭头的更新\n this.setArrow();\n };\n Line.prototype.setArrow = function () {\n var attrs = this.attr();\n var x1 = attrs.x1,\n y1 = attrs.y1,\n x2 = attrs.x2,\n y2 = attrs.y2,\n startArrow = attrs.startArrow,\n endArrow = attrs.endArrow;\n if (startArrow) {\n ArrowUtil.addStartArrow(this, attrs, x2, y2, x1, y1);\n }\n if (endArrow) {\n ArrowUtil.addEndArrow(this, attrs, x1, y1, x2, y2);\n }\n };\n Line.prototype.isInStrokeOrPath = function (x, y, isStroke, isFill, lineWidth) {\n if (!isStroke || !lineWidth) {\n return false;\n }\n var _a = this.attr(),\n x1 = _a.x1,\n y1 = _a.y1,\n x2 = _a.x2,\n y2 = _a.y2;\n return inLine(x1, y1, x2, y2, lineWidth, x, y);\n };\n Line.prototype.createPath = function (context) {\n var attrs = this.attr();\n var x1 = attrs.x1,\n y1 = attrs.y1,\n x2 = attrs.x2,\n y2 = attrs.y2,\n startArrow = attrs.startArrow,\n endArrow = attrs.endArrow;\n var startArrowDistance = {\n dx: 0,\n dy: 0\n };\n var endArrowDistance = {\n dx: 0,\n dy: 0\n };\n if (startArrow && startArrow.d) {\n startArrowDistance = ArrowUtil.getShortenOffset(x1, y1, x2, y2, attrs.startArrow.d);\n }\n if (endArrow && endArrow.d) {\n endArrowDistance = ArrowUtil.getShortenOffset(x1, y1, x2, y2, attrs.endArrow.d);\n }\n context.beginPath();\n // 如果自定义箭头,线条相应缩进\n context.moveTo(x1 + startArrowDistance.dx, y1 + startArrowDistance.dy);\n context.lineTo(x2 - endArrowDistance.dx, y2 - endArrowDistance.dy);\n };\n Line.prototype.afterDrawPath = function (context) {\n var startArrowShape = this.get('startArrowShape');\n var endArrowShape = this.get('endArrowShape');\n if (startArrowShape) {\n startArrowShape.draw(context);\n }\n if (endArrowShape) {\n endArrowShape.draw(context);\n }\n };\n /**\n * Get length of line\n * @return {number} length\n */\n Line.prototype.getTotalLength = function () {\n var _a = this.attr(),\n x1 = _a.x1,\n y1 = _a.y1,\n x2 = _a.x2,\n y2 = _a.y2;\n return LineUtil.length(x1, y1, x2, y2);\n };\n /**\n * Get point according to ratio\n * @param {number} ratio\n * @return {Point} point\n */\n Line.prototype.getPoint = function (ratio) {\n var _a = this.attr(),\n x1 = _a.x1,\n y1 = _a.y1,\n x2 = _a.x2,\n y2 = _a.y2;\n return LineUtil.pointAt(x1, y1, x2, y2, ratio);\n };\n return Line;\n}(ShapeBase);\nexport default Line;","/**\n * @fileoverview Marker\n * @author dxq613@gmail.com\n */\nimport { __extends } from \"tslib\";\nimport { isNil } from '@antv/util';\nimport { path2Absolute } from '@antv/path-util';\nimport ShapeBase from './base';\nimport { isFunction } from '../util/util';\nimport { drawPath } from '../util/draw';\nvar Symbols = {\n // 圆\n circle: function circle(x, y, r) {\n return [['M', x - r, y], ['A', r, r, 0, 1, 0, x + r, y], ['A', r, r, 0, 1, 0, x - r, y]];\n },\n // 正方形\n square: function square(x, y, r) {\n return [['M', x - r, y - r], ['L', x + r, y - r], ['L', x + r, y + r], ['L', x - r, y + r], ['Z']];\n },\n // 菱形\n diamond: function diamond(x, y, r) {\n return [['M', x - r, y], ['L', x, y - r], ['L', x + r, y], ['L', x, y + r], ['Z']];\n },\n // 三角形\n triangle: function triangle(x, y, r) {\n var diffY = r * Math.sin(1 / 3 * Math.PI);\n return [['M', x - r, y + diffY], ['L', x, y - diffY], ['L', x + r, y + diffY], ['Z']];\n },\n // 倒三角形\n 'triangle-down': function triangleDown(x, y, r) {\n var diffY = r * Math.sin(1 / 3 * Math.PI);\n return [['M', x - r, y - diffY], ['L', x + r, y - diffY], ['L', x, y + diffY], ['Z']];\n }\n};\nvar Marker = /** @class */function (_super) {\n __extends(Marker, _super);\n function Marker() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Marker.prototype.initAttrs = function (attrs) {\n this._resetParamsCache();\n };\n // 重置绘制 path 存储的缓存\n Marker.prototype._resetParamsCache = function () {\n // 为了加速 path 的绘制、拾取和计算,这个地方可以缓存很多东西\n // 这些缓存都是第一次需要时计算和存储,虽然增加了复杂度,但是频繁调用的方法,性能有很大提升\n this.set('paramsCache', {}); // 清理缓存\n };\n // 更新属性时,检测是否更改了 path\n Marker.prototype.onAttrChange = function (name, value, originValue) {\n _super.prototype.onAttrChange.call(this, name, value, originValue);\n if (['symbol', 'x', 'y', 'r', 'radius'].indexOf(name) !== -1) {\n // path 相关属性更改时,清理缓存\n this._resetParamsCache();\n }\n };\n // 仅仅使用包围盒检测来进行拾取\n // 所以不需要复写 isInStrokeOrPath 的方法\n Marker.prototype.isOnlyHitBox = function () {\n return true;\n };\n Marker.prototype._getR = function (attrs) {\n // 兼容 r 和 radius 两种写法,推荐使用 r\n return isNil(attrs.r) ? attrs.radius : attrs.r;\n };\n Marker.prototype._getPath = function () {\n var attrs = this.attr();\n var x = attrs.x,\n y = attrs.y;\n var symbol = attrs.symbol || 'circle';\n var r = this._getR(attrs);\n var method;\n var path;\n if (isFunction(symbol)) {\n method = symbol;\n path = method(x, y, r);\n // 将 path 转成绝对路径\n path = path2Absolute(path);\n } else {\n // 内置 symbol 的 path 都是绝对路径,直接绘制即可,不需要对 path 进行特殊处理\n method = Marker.Symbols[symbol];\n if (!method) {\n console.warn(symbol + \" marker is not supported.\");\n return null;\n }\n path = method(x, y, r);\n }\n return path;\n };\n Marker.prototype.createPath = function (context) {\n var path = this._getPath();\n var paramsCache = this.get('paramsCache');\n drawPath(this, context, {\n path: path\n }, paramsCache);\n };\n Marker.Symbols = Symbols;\n return Marker;\n}(ShapeBase);\nexport default Marker;","import { getOffScreenContext } from '@antv/g-base';\nexport default function isPointInPath(shape, x, y) {\n var ctx = getOffScreenContext();\n shape.createPath(ctx);\n return ctx.isPointInPath(x, y);\n}","/**\n * @fileoverview 判断点是否在多边形内\n * @author dxq613@gmail.com\n */\n// 多边形的射线检测,参考:https://blog.csdn.net/WilliamSun0122/article/details/77994526\nvar tolerance = 1e-6;\n// 三态函数,判断两个double在eps精度下的大小关系\nfunction dcmp(x) {\n if (Math.abs(x) < tolerance) {\n return 0;\n }\n return x < 0 ? -1 : 1;\n}\n// 判断点Q是否在p1和p2的线段上\nfunction onSegment(p1, p2, q) {\n if ((q[0] - p1[0]) * (p2[1] - p1[1]) === (p2[0] - p1[0]) * (q[1] - p1[1]) && Math.min(p1[0], p2[0]) <= q[0] && q[0] <= Math.max(p1[0], p2[0]) && Math.min(p1[1], p2[1]) <= q[1] && q[1] <= Math.max(p1[1], p2[1])) {\n return true;\n }\n return false;\n}\n// 判断点P在多边形内-射线法\nexport default function isInPolygon(points, x, y) {\n var isHit = false;\n var n = points.length;\n if (n <= 2) {\n // svg 中点小于 3 个时,不显示,也无法被拾取\n return false;\n }\n for (var i = 0; i < n; i++) {\n var p1 = points[i];\n var p2 = points[(i + 1) % n];\n if (onSegment(p1, p2, [x, y])) {\n // 点在多边形一条边上\n return true;\n }\n // 前一个判断min(p1[1],p2[1]) 0 !== dcmp(p2[1] - y) > 0 && dcmp(x - (y - p1[1]) * (p1[0] - p2[0]) / (p1[1] - p2[1]) - p1[0]) < 0) {\n isHit = !isHit;\n }\n }\n return isHit;\n}","import { distance } from '../util';\nexport default function arc(cx, cy, r, startAngle, endAngle, lineWidth, x, y) {\n var angle = (Math.atan2(y - cy, x - cx) + Math.PI * 2) % (Math.PI * 2); // 转换到 0 - 2 * Math.PI 之间\n if (angle < startAngle || angle > endAngle) {\n return false;\n }\n var point = {\n x: cx + r * Math.cos(angle),\n y: cy + r * Math.sin(angle)\n };\n return distance(point.x, point.y, x, y) <= lineWidth / 2;\n}","import { __assign } from \"tslib\";\n/**\n * @fileoverview path 的一些工具\n * @author dxq613@gmail.com\n */\nimport { PathUtil } from '@antv/g-base';\nimport { Quad as QuadUtil } from '@antv/g-math';\nimport { Cubic as CubicUtil } from '@antv/g-math';\nimport { ext } from '@antv/matrix-util';\nimport * as vec3 from 'gl-matrix/vec3';\nimport { inBox } from './util';\nimport inLine from './in-stroke/line';\nimport inArc from './in-stroke/arc';\nvar transform = ext.transform;\nfunction hasArc(path) {\n var hasArc = false;\n var count = path.length;\n for (var i = 0; i < count; i++) {\n var params = path[i];\n var cmd = params[0];\n if (cmd === 'C' || cmd === 'A' || cmd === 'Q') {\n hasArc = true;\n break;\n }\n }\n return hasArc;\n}\nfunction isPointInStroke(segments, lineWidth, x, y, length) {\n var isHit = false;\n var halfWidth = lineWidth / 2;\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n var currentPoint = segment.currentPoint,\n params = segment.params,\n prePoint = segment.prePoint,\n box = segment.box;\n // 如果在前面已经生成过包围盒,直接按照包围盒计算\n if (box && !inBox(box.x - halfWidth, box.y - halfWidth, box.width + lineWidth, box.height + lineWidth, x, y)) {\n continue;\n }\n switch (segment.command) {\n // L 和 Z 都是直线, M 不进行拾取\n case 'L':\n case 'Z':\n isHit = inLine(prePoint[0], prePoint[1], currentPoint[0], currentPoint[1], lineWidth, x, y);\n break;\n case 'Q':\n var qDistance = QuadUtil.pointDistance(prePoint[0], prePoint[1], params[1], params[2], params[3], params[4], x, y);\n isHit = qDistance <= lineWidth / 2;\n break;\n case 'C':\n var cDistance = CubicUtil.pointDistance(prePoint[0],\n // 上一段结束位置, 即 C 的起始点\n prePoint[1], params[1],\n // 'C' 的参数,1、2 为第一个控制点,3、4 为第二个控制点,5、6 为结束点\n params[2], params[3], params[4], params[5], params[6], x, y, length);\n isHit = cDistance <= lineWidth / 2;\n break;\n case 'A':\n // 计算点到椭圆圆弧的距离,暂时使用近似算法,后面可以改成切割法求最近距离\n var arcParams = segment.arcParams;\n var cx = arcParams.cx,\n cy = arcParams.cy,\n rx = arcParams.rx,\n ry = arcParams.ry,\n startAngle = arcParams.startAngle,\n endAngle = arcParams.endAngle,\n xRotation = arcParams.xRotation;\n var p = [x, y, 1];\n var r = rx > ry ? rx : ry;\n var scaleX = rx > ry ? 1 : rx / ry;\n var scaleY = rx > ry ? ry / rx : 1;\n var m = transform(null, [['t', -cx, -cy], ['r', -xRotation], ['s', 1 / scaleX, 1 / scaleY]]);\n vec3.transformMat3(p, p, m);\n isHit = inArc(0, 0, r, startAngle, endAngle, lineWidth, p[0], p[1]);\n break;\n default:\n break;\n }\n if (isHit) {\n break;\n }\n }\n return isHit;\n}\n/**\n * 提取出内部的闭合多边形和非闭合的多边形,假设 path 不存在圆弧\n * @param {Array} path 路径\n * @returns {Array} 点的集合\n */\nfunction extractPolygons(path) {\n var count = path.length;\n var polygons = [];\n var polylines = [];\n var points = []; // 防止第一个命令不是 'M'\n for (var i = 0; i < count; i++) {\n var params = path[i];\n var cmd = params[0];\n if (cmd === 'M') {\n // 遇到 'M' 判定是否是新数组,新数组中没有点\n if (points.length) {\n // 如果存在点,则说明没有遇到 'Z',开始了一个新的多边形\n polylines.push(points);\n points = []; // 创建新的点\n }\n\n points.push([params[1], params[2]]);\n } else if (cmd === 'Z') {\n if (points.length) {\n // 存在点\n polygons.push(points);\n points = []; // 开始新的点集合\n }\n // 如果不存在点,同时 'Z',则说明是错误,不处理\n } else {\n points.push([params[1], params[2]]);\n }\n }\n // 说明 points 未放入 polygons 或者 polyline\n // 仅当只有一个 M,没有 Z 时会发生这种情况\n if (points.length > 0) {\n polylines.push(points);\n }\n return {\n polygons: polygons,\n polylines: polylines\n };\n}\nexport default __assign({\n hasArc: hasArc,\n extractPolygons: extractPolygons,\n isPointInStroke: isPointInStroke\n}, PathUtil);","import { __assign, __extends } from \"tslib\";\nimport { Cubic as CubicUtil } from '@antv/g-math';\nimport { each, isNil } from '@antv/util';\nimport ShapeBase from './base';\nimport { path2Absolute, path2Segments } from '@antv/path-util';\nimport { drawPath } from '../util/draw';\nimport isPointInPath from '../util/in-path/point-in-path';\nimport isInPolygon from '../util/in-path/polygon';\nimport PathUtil from '../util/path';\nimport * as ArrowUtil from '../util/arrow';\n// 是否在多个多边形内部\nfunction isInPolygons(polygons, x, y) {\n var isHit = false;\n for (var i = 0; i < polygons.length; i++) {\n var points = polygons[i];\n isHit = isInPolygon(points, x, y);\n if (isHit) {\n break;\n }\n }\n return isHit;\n}\nvar Path = /** @class */function (_super) {\n __extends(Path, _super);\n function Path() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Path.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return __assign(__assign({}, attrs), {\n startArrow: false,\n endArrow: false\n });\n };\n Path.prototype.initAttrs = function (attrs) {\n this._setPathArr(attrs.path);\n this.setArrow();\n };\n // 更新属性时,检测是否更改了 path\n Path.prototype.onAttrChange = function (name, value, originValue) {\n _super.prototype.onAttrChange.call(this, name, value, originValue);\n if (name === 'path') {\n this._setPathArr(value);\n }\n // 由于箭头的绘制依赖于 line 的诸多 attrs,因此这里不再对每个 attr 进行判断,attr 每次变化都会影响箭头的更新\n this.setArrow();\n };\n // 将 path 转换成绝对路径\n Path.prototype._setPathArr = function (path) {\n // 转换 path 的格式\n this.attrs.path = path2Absolute(path);\n var hasArc = PathUtil.hasArc(path);\n // 为了加速 path 的绘制、拾取和计算,这个地方可以缓存很多东西\n // 这些缓存都是第一次需要时计算和存储,虽然增加了复杂度,但是频繁调用的方法,性能有很大提升\n this.set('hasArc', hasArc);\n this.set('paramsCache', {}); // 清理缓存\n this.set('segments', null); // 延迟生成 path,在动画场景下可能不会有拾取\n this.set('curve', null);\n this.set('tCache', null);\n this.set('totalLength', null);\n };\n Path.prototype.getSegments = function () {\n var segments = this.get('segements');\n if (!segments) {\n segments = path2Segments(this.attr('path'));\n this.set('segments', segments);\n }\n return segments;\n };\n Path.prototype.setArrow = function () {\n var attrs = this.attr();\n var startArrow = attrs.startArrow,\n endArrow = attrs.endArrow;\n if (startArrow) {\n var tangent = this.getStartTangent();\n ArrowUtil.addStartArrow(this, attrs, tangent[0][0], tangent[0][1], tangent[1][0], tangent[1][1]);\n }\n if (endArrow) {\n var tangent = this.getEndTangent();\n ArrowUtil.addEndArrow(this, attrs, tangent[0][0], tangent[0][1], tangent[1][0], tangent[1][1]);\n }\n };\n Path.prototype.isInStrokeOrPath = function (x, y, isStroke, isFill, lineWidth) {\n var segments = this.getSegments();\n var hasArc = this.get('hasArc');\n var isHit = false;\n if (isStroke) {\n var length_1 = this.getTotalLength();\n isHit = PathUtil.isPointInStroke(segments, lineWidth, x, y, length_1);\n }\n if (!isHit && isFill) {\n if (hasArc) {\n // 存在曲线时,暂时使用 canvas 的 api 计算,后续可以进行多边形切割\n isHit = isPointInPath(this, x, y);\n } else {\n var path = this.attr('path');\n var extractResutl = PathUtil.extractPolygons(path);\n // 提取出来的多边形包含闭合的和非闭合的,在这里统一按照多边形处理\n isHit = isInPolygons(extractResutl.polygons, x, y) || isInPolygons(extractResutl.polylines, x, y);\n }\n }\n return isHit;\n };\n Path.prototype.createPath = function (context) {\n var attrs = this.attr();\n var paramsCache = this.get('paramsCache'); // 由于计算圆弧的参数成本很大,所以要缓存\n drawPath(this, context, attrs, paramsCache);\n };\n Path.prototype.afterDrawPath = function (context) {\n var startArrowShape = this.get('startArrowShape');\n var endArrowShape = this.get('endArrowShape');\n if (startArrowShape) {\n startArrowShape.draw(context);\n }\n if (endArrowShape) {\n endArrowShape.draw(context);\n }\n };\n /**\n * Get total length of path\n * @return {number} length\n */\n Path.prototype.getTotalLength = function () {\n var totalLength = this.get('totalLength');\n if (!isNil(totalLength)) {\n return totalLength;\n }\n this._calculateCurve();\n this._setTcache();\n return this.get('totalLength');\n };\n /**\n * Get point according to ratio\n * @param {number} ratio\n * @return {Point} point\n */\n Path.prototype.getPoint = function (ratio) {\n var tCache = this.get('tCache');\n if (!tCache) {\n this._calculateCurve();\n this._setTcache();\n tCache = this.get('tCache');\n }\n var subt;\n var index;\n var curve = this.get('curve');\n if (!tCache || tCache.length === 0) {\n if (curve) {\n return {\n x: curve[0][1],\n y: curve[0][2]\n };\n }\n return null;\n }\n each(tCache, function (v, i) {\n if (ratio >= v[0] && ratio <= v[1]) {\n subt = (ratio - v[0]) / (v[1] - v[0]);\n index = i;\n }\n });\n var seg = curve[index];\n if (isNil(seg) || isNil(index)) {\n return null;\n }\n var l = seg.length;\n var nextSeg = curve[index + 1];\n return CubicUtil.pointAt(seg[l - 2], seg[l - 1], nextSeg[1], nextSeg[2], nextSeg[3], nextSeg[4], nextSeg[5], nextSeg[6], subt);\n };\n Path.prototype._calculateCurve = function () {\n var path = this.attr().path;\n this.set('curve', PathUtil.pathToCurve(path));\n };\n Path.prototype._setTcache = function () {\n var totalLength = 0;\n var tempLength = 0;\n // 每段 curve 对应起止点的长度比例列表,形如: [[0, 0.25], [0.25, 0.6]. [0.6, 0.9], [0.9, 1]]\n var tCache = [];\n var segmentT;\n var segmentL;\n var segmentN;\n var l;\n var curve = this.get('curve');\n if (!curve) {\n return;\n }\n each(curve, function (segment, i) {\n segmentN = curve[i + 1];\n l = segment.length;\n if (segmentN) {\n totalLength += CubicUtil.length(segment[l - 2], segment[l - 1], segmentN[1], segmentN[2], segmentN[3], segmentN[4], segmentN[5], segmentN[6]) || 0;\n }\n });\n this.set('totalLength', totalLength);\n if (totalLength === 0) {\n this.set('tCache', []);\n return;\n }\n each(curve, function (segment, i) {\n segmentN = curve[i + 1];\n l = segment.length;\n if (segmentN) {\n segmentT = [];\n segmentT[0] = tempLength / totalLength;\n segmentL = CubicUtil.length(segment[l - 2], segment[l - 1], segmentN[1], segmentN[2], segmentN[3], segmentN[4], segmentN[5], segmentN[6]);\n // 当 path 不连续时,segmentL 可能为空,为空时需要作为 0 处理\n tempLength += segmentL || 0;\n segmentT[1] = tempLength / totalLength;\n tCache.push(segmentT);\n }\n });\n this.set('tCache', tCache);\n };\n /**\n * Get start tangent vector\n * @return {Array}\n */\n Path.prototype.getStartTangent = function () {\n var segments = this.getSegments();\n var result;\n if (segments.length > 1) {\n var startPoint = segments[0].currentPoint;\n var endPoint = segments[1].currentPoint;\n var tangent = segments[1].startTangent;\n result = [];\n if (tangent) {\n result.push([startPoint[0] - tangent[0], startPoint[1] - tangent[1]]);\n result.push([startPoint[0], startPoint[1]]);\n } else {\n result.push([endPoint[0], endPoint[1]]);\n result.push([startPoint[0], startPoint[1]]);\n }\n }\n return result;\n };\n /**\n * Get end tangent vector\n * @return {Array}\n */\n Path.prototype.getEndTangent = function () {\n var segments = this.getSegments();\n var length = segments.length;\n var result;\n if (length > 1) {\n var startPoint = segments[length - 2].currentPoint;\n var endPoint = segments[length - 1].currentPoint;\n var tangent = segments[length - 1].endTangent;\n result = [];\n if (tangent) {\n result.push([endPoint[0] - tangent[0], endPoint[1] - tangent[1]]);\n result.push([endPoint[0], endPoint[1]]);\n } else {\n result.push([startPoint[0], startPoint[1]]);\n result.push([endPoint[0], endPoint[1]]);\n }\n }\n return result;\n };\n return Path;\n}(ShapeBase);\nexport default Path;","import inLine from './line';\nexport default function inPolyline(points, lineWidth, x, y, isClose) {\n var count = points.length;\n if (count < 2) {\n return false;\n }\n for (var i = 0; i < count - 1; i++) {\n var x1 = points[i][0];\n var y1 = points[i][1];\n var x2 = points[i + 1][0];\n var y2 = points[i + 1][1];\n if (inLine(x1, y1, x2, y2, lineWidth, x, y)) {\n return true;\n }\n }\n // 如果封闭,则计算起始点和结束点的边\n if (isClose) {\n var first = points[0];\n var last = points[count - 1];\n if (inLine(first[0], first[1], last[0], last[1], lineWidth, x, y)) {\n return true;\n }\n }\n return false;\n}","/**\n * @fileoverview 多边形\n * @author dxq613@gmail.com\n */\nimport { __extends } from \"tslib\";\nimport ShapeBase from './base';\nimport inPolyline from '../util/in-stroke/polyline';\nimport isInPolygon from '../util/in-path/polygon';\nvar Polygon = /** @class */function (_super) {\n __extends(Polygon, _super);\n function Polygon() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Polygon.prototype.isInStrokeOrPath = function (x, y, isStroke, isFill, lineWidth) {\n var points = this.attr().points;\n var isHit = false;\n if (isStroke) {\n isHit = inPolyline(points, lineWidth, x, y, true);\n }\n if (!isHit && isFill) {\n isHit = isInPolygon(points, x, y); // isPointInPath(shape, x, y);\n }\n\n return isHit;\n };\n Polygon.prototype.createPath = function (context) {\n var attrs = this.attr();\n var points = attrs.points;\n if (points.length < 2) {\n return;\n }\n context.beginPath();\n for (var i = 0; i < points.length; i++) {\n var point = points[i];\n if (i === 0) {\n context.moveTo(point[0], point[1]);\n } else {\n context.lineTo(point[0], point[1]);\n }\n }\n context.closePath();\n };\n return Polygon;\n}(ShapeBase);\nexport default Polygon;","import { __assign, __extends } from \"tslib\";\nimport { Line as LineUtil } from '@antv/g-math';\nimport { Polyline as PolylineUtil } from '@antv/g-math';\nimport { each, isNil } from '@antv/util';\nimport ShapeBase from './base';\nimport inPolyline from '../util/in-stroke/polyline';\nimport * as ArrowUtil from '../util/arrow';\nvar PolyLine = /** @class */function (_super) {\n __extends(PolyLine, _super);\n function PolyLine() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PolyLine.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return __assign(__assign({}, attrs), {\n startArrow: false,\n endArrow: false\n });\n };\n PolyLine.prototype.initAttrs = function (attrs) {\n this.setArrow();\n };\n // 更新属性时,检测是否更改了 points\n PolyLine.prototype.onAttrChange = function (name, value, originValue) {\n _super.prototype.onAttrChange.call(this, name, value, originValue);\n this.setArrow();\n if (['points'].indexOf(name) !== -1) {\n this._resetCache();\n }\n };\n PolyLine.prototype._resetCache = function () {\n this.set('totalLength', null);\n this.set('tCache', null);\n };\n PolyLine.prototype.setArrow = function () {\n var attrs = this.attr();\n var _a = this.attrs,\n points = _a.points,\n startArrow = _a.startArrow,\n endArrow = _a.endArrow;\n var length = points.length;\n var x1 = points[0][0];\n var y1 = points[0][1];\n var x2 = points[length - 1][0];\n var y2 = points[length - 1][1];\n if (startArrow) {\n ArrowUtil.addStartArrow(this, attrs, points[1][0], points[1][1], x1, y1);\n }\n if (endArrow) {\n ArrowUtil.addEndArrow(this, attrs, points[length - 2][0], points[length - 2][1], x2, y2);\n }\n };\n // 不允许 fill\n PolyLine.prototype.isFill = function () {\n return false;\n };\n PolyLine.prototype.isInStrokeOrPath = function (x, y, isStroke, isFill, lineWidth) {\n // 没有设置 stroke 不能被拾取, 没有线宽不能被拾取\n if (!isStroke || !lineWidth) {\n return false;\n }\n var points = this.attr().points;\n return inPolyline(points, lineWidth, x, y, false);\n };\n // 始终填充\n PolyLine.prototype.isStroke = function () {\n return true;\n };\n PolyLine.prototype.createPath = function (context) {\n var _a = this.attr(),\n points = _a.points,\n startArrow = _a.startArrow,\n endArrow = _a.endArrow;\n var length = points.length;\n if (points.length < 2) {\n return;\n }\n var x1 = points[0][0];\n var y1 = points[0][1];\n var x2 = points[length - 1][0];\n var y2 = points[length - 1][1];\n // 如果定义了箭头,并且是自定义箭头,线条相应缩进\n if (startArrow && startArrow.d) {\n var distance = ArrowUtil.getShortenOffset(x1, y1, points[1][0], points[1][1], startArrow.d);\n x1 += distance.dx;\n y1 += distance.dy;\n }\n if (endArrow && endArrow.d) {\n var distance = ArrowUtil.getShortenOffset(points[length - 2][0], points[length - 2][1], x2, y2, endArrow.d);\n x2 -= distance.dx;\n y2 -= distance.dy;\n }\n context.beginPath();\n context.moveTo(x1, y1);\n for (var i = 0; i < length - 1; i++) {\n var point = points[i];\n context.lineTo(point[0], point[1]);\n }\n context.lineTo(x2, y2);\n };\n PolyLine.prototype.afterDrawPath = function (context) {\n var startArrowShape = this.get('startArrowShape');\n var endArrowShape = this.get('endArrowShape');\n if (startArrowShape) {\n startArrowShape.draw(context);\n }\n if (endArrowShape) {\n endArrowShape.draw(context);\n }\n };\n /**\n * Get length of polyline\n * @return {number} length\n */\n PolyLine.prototype.getTotalLength = function () {\n var points = this.attr().points;\n // get totalLength from cache\n var totalLength = this.get('totalLength');\n if (!isNil(totalLength)) {\n return totalLength;\n }\n this.set('totalLength', PolylineUtil.length(points));\n return this.get('totalLength');\n };\n /**\n * Get point according to ratio\n * @param {number} ratio\n * @return {Point} point\n */\n PolyLine.prototype.getPoint = function (ratio) {\n var points = this.attr().points;\n // get tCache from cache\n var tCache = this.get('tCache');\n if (!tCache) {\n this._setTcache();\n tCache = this.get('tCache');\n }\n var subt;\n var index;\n each(tCache, function (v, i) {\n if (ratio >= v[0] && ratio <= v[1]) {\n subt = (ratio - v[0]) / (v[1] - v[0]);\n index = i;\n }\n });\n return LineUtil.pointAt(points[index][0], points[index][1], points[index + 1][0], points[index + 1][1], subt);\n };\n PolyLine.prototype._setTcache = function () {\n var points = this.attr().points;\n if (!points || points.length === 0) {\n return;\n }\n var totalLength = this.getTotalLength();\n if (totalLength <= 0) {\n return;\n }\n var tempLength = 0;\n var tCache = [];\n var segmentT;\n var segmentL;\n each(points, function (p, i) {\n if (points[i + 1]) {\n segmentT = [];\n segmentT[0] = tempLength / totalLength;\n segmentL = LineUtil.length(p[0], p[1], points[i + 1][0], points[i + 1][1]);\n tempLength += segmentL;\n segmentT[1] = tempLength / totalLength;\n tCache.push(segmentT);\n }\n });\n this.set('tCache', tCache);\n };\n /**\n * Get start tangent vector\n * @return {Array}\n */\n PolyLine.prototype.getStartTangent = function () {\n var points = this.attr().points;\n var result = [];\n result.push([points[1][0], points[1][1]]);\n result.push([points[0][0], points[0][1]]);\n return result;\n };\n /**\n * Get end tangent vector\n * @return {Array}\n */\n PolyLine.prototype.getEndTangent = function () {\n var points = this.attr().points;\n var l = points.length - 1;\n var result = [];\n result.push([points[l - 1][0], points[l - 1][1]]);\n result.push([points[l][0], points[l][1]]);\n return result;\n };\n return PolyLine;\n}(ShapeBase);\nexport default PolyLine;","/**\n * @fileoverview 矩形\n * @author dxq613@gmail.com\n */\nimport { __assign, __extends } from \"tslib\";\nimport ShapeBase from './base';\nimport { parseRadius } from '../util/parse';\nimport { inBox } from '../util/util';\nimport inRect from '../util/in-stroke/rect';\nimport inRectWithRadius from '../util/in-stroke/rect-radius';\nimport isPointInPath from '../util/in-path/point-in-path';\nvar Rect = /** @class */function (_super) {\n __extends(Rect, _super);\n function Rect() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Rect.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return __assign(__assign({}, attrs), {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n radius: 0\n });\n };\n Rect.prototype.isInStrokeOrPath = function (x, y, isStroke, isFill, lineWidth) {\n var attrs = this.attr();\n var minX = attrs.x;\n var minY = attrs.y;\n var width = attrs.width;\n var height = attrs.height;\n var radius = attrs.radius;\n // 无圆角时的策略\n if (!radius) {\n var halfWidth = lineWidth / 2;\n // 同时填充和带有边框\n if (isFill && isStroke) {\n return inBox(minX - halfWidth, minY - halfWidth, width + halfWidth, height + halfWidth, x, y);\n }\n // 仅填充\n if (isFill) {\n return inBox(minX, minY, width, height, x, y);\n }\n if (isStroke) {\n return inRect(minX, minY, width, height, lineWidth, x, y);\n }\n } else {\n var isHit = false;\n if (isStroke) {\n isHit = inRectWithRadius(minX, minY, width, height, radius, lineWidth, x, y);\n }\n // 仅填充时带有圆角的矩形直接通过图形拾取\n // 以后可以改成纯数学的近似拾取,将圆弧切割成多边形\n if (!isHit && isFill) {\n isHit = isPointInPath(this, x, y);\n }\n return isHit;\n }\n };\n Rect.prototype.createPath = function (context) {\n var attrs = this.attr();\n var x = attrs.x;\n var y = attrs.y;\n var width = attrs.width;\n var height = attrs.height;\n var radius = attrs.radius;\n context.beginPath();\n if (radius === 0) {\n // 改成原生的rect方法\n context.rect(x, y, width, height);\n } else {\n var _a = parseRadius(radius),\n r1 = _a[0],\n r2 = _a[1],\n r3 = _a[2],\n r4 = _a[3];\n context.moveTo(x + r1, y);\n context.lineTo(x + width - r2, y);\n r2 !== 0 && context.arc(x + width - r2, y + r2, r2, -Math.PI / 2, 0);\n context.lineTo(x + width, y + height - r3);\n r3 !== 0 && context.arc(x + width - r3, y + height - r3, r3, 0, Math.PI / 2);\n context.lineTo(x + r4, y + height);\n r4 !== 0 && context.arc(x + r4, y + height - r4, r4, Math.PI / 2, Math.PI);\n context.lineTo(x, y + r1);\n r1 !== 0 && context.arc(x + r1, y + r1, r1, Math.PI, Math.PI * 1.5);\n context.closePath();\n }\n };\n return Rect;\n}(ShapeBase);\nexport default Rect;","import inLine from './line';\nimport inArc from './arc';\nexport default function rectWithRadius(minX, minY, width, height, radius, lineWidth, x, y) {\n var halfWidth = lineWidth / 2;\n return inLine(minX + radius, minY, minX + width - radius, minY, lineWidth, x, y) || inLine(minX + width, minY + radius, minX + width, minY + height - radius, lineWidth, x, y) || inLine(minX + width - radius, minY + height, minX + radius, minY + height, lineWidth, x, y) || inLine(minX, minY + height - radius, minX, minY + radius, lineWidth, x, y) || inArc(minX + width - radius, minY + radius, radius, 1.5 * Math.PI, 2 * Math.PI, lineWidth, x, y) || inArc(minX + width - radius, minY + height - radius, radius, 0, 0.5 * Math.PI, lineWidth, x, y) || inArc(minX + radius, minY + height - radius, radius, 0.5 * Math.PI, Math.PI, lineWidth, x, y) || inArc(minX + radius, minY + radius, radius, Math.PI, 1.5 * Math.PI, lineWidth, x, y);\n}","import { inBox } from '../util';\nexport default function inRect(minX, minY, width, height, lineWidth, x, y) {\n var halfWidth = lineWidth / 2;\n // 将四个边看做矩形来检测,比边的检测算法要快\n return inBox(minX - halfWidth, minY - halfWidth, width, lineWidth, x, y) ||\n // 上边\n inBox(minX + width - halfWidth, minY - halfWidth, lineWidth, height, x, y) ||\n // 右边\n inBox(minX + halfWidth, minY + height - halfWidth, width, lineWidth, x, y) ||\n // 下边\n inBox(minX - halfWidth, minY + halfWidth, lineWidth, height, x, y); // 左边\n}","/**\n * @fileoverview 文本\n * @author dxq613@gmail.com\n */\nimport { __assign, __extends } from \"tslib\";\nimport ShapeBase from './base';\nimport { isNil, isString, each } from '../util/util';\nimport { getTextHeight, assembleFont } from '@antv/g-base';\nvar Text = /** @class */function (_super) {\n __extends(Text, _super);\n function Text() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // 默认文本属性\n Text.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return __assign(__assign({}, attrs), {\n x: 0,\n y: 0,\n text: null,\n fontSize: 12,\n fontFamily: 'sans-serif',\n fontStyle: 'normal',\n fontWeight: 'normal',\n fontVariant: 'normal',\n textAlign: 'start',\n textBaseline: 'bottom'\n });\n };\n // 仅仅使用包围盒检测来进行拾取\n Text.prototype.isOnlyHitBox = function () {\n return true;\n };\n // 初始化时组合 font,同时判断 text 是否换行\n Text.prototype.initAttrs = function (attrs) {\n this._assembleFont();\n if (attrs.text) {\n this._setText(attrs.text);\n }\n };\n // 组装字体\n Text.prototype._assembleFont = function () {\n var attrs = this.attrs;\n attrs.font = assembleFont(attrs);\n };\n // 如果文本换行,则缓存数组\n Text.prototype._setText = function (text) {\n var textArr = null;\n if (isString(text) && text.indexOf('\\n') !== -1) {\n textArr = text.split('\\n');\n }\n this.set('textArr', textArr);\n };\n // 更新属性时,检测是否更改了 font、text\n Text.prototype.onAttrChange = function (name, value, originValue) {\n _super.prototype.onAttrChange.call(this, name, value, originValue);\n if (name.startsWith('font')) {\n this._assembleFont();\n }\n if (name === 'text') {\n this._setText(value);\n }\n };\n // 这个方法在 text 时没有可以做的事情,如果要支持文字背景时可以考虑\n // createPath(context) {\n // }\n // 如果文本多行,需要获取文本间距\n Text.prototype._getSpaceingY = function () {\n var attrs = this.attrs;\n var lineHeight = attrs.lineHeight;\n var fontSize = attrs.fontSize * 1;\n return lineHeight ? lineHeight - fontSize : fontSize * 0.14;\n };\n // 绘制文本,考虑多行的场景\n Text.prototype._drawTextArr = function (context, textArr, isFill) {\n var attrs = this.attrs;\n var textBaseline = attrs.textBaseline;\n var x = attrs.x;\n var y = attrs.y;\n var fontSize = attrs.fontSize * 1;\n var spaceingY = this._getSpaceingY();\n var height = getTextHeight(attrs.text, attrs.fontSize, attrs.lineHeight);\n var subY;\n each(textArr, function (subText, index) {\n subY = y + index * (spaceingY + fontSize) - height + fontSize; // bottom;\n if (textBaseline === 'middle') subY += height - fontSize - (height - fontSize) / 2;\n if (textBaseline === 'top') subY += height - fontSize;\n if (!isNil(subText)) {\n if (isFill) {\n context.fillText(subText, x, subY);\n } else {\n context.strokeText(subText, x, subY);\n }\n }\n });\n };\n // 绘制文本,同时考虑填充和绘制边框\n Text.prototype._drawText = function (context, isFill) {\n var attrs = this.attr();\n var x = attrs.x;\n var y = attrs.y;\n var textArr = this.get('textArr');\n if (textArr) {\n this._drawTextArr(context, textArr, isFill);\n } else {\n var text = attrs.text;\n if (!isNil(text)) {\n if (isFill) {\n context.fillText(text, x, y);\n } else {\n context.strokeText(text, x, y);\n }\n }\n }\n };\n // 复写绘制和填充的逻辑:对于文本,应该先绘制边框,再进行填充\n Text.prototype.strokeAndFill = function (context) {\n var _a = this.attrs,\n lineWidth = _a.lineWidth,\n opacity = _a.opacity,\n strokeOpacity = _a.strokeOpacity,\n fillOpacity = _a.fillOpacity;\n if (this.isStroke()) {\n if (lineWidth > 0) {\n if (!isNil(strokeOpacity) && strokeOpacity !== 1) {\n context.globalAlpha = opacity;\n }\n this.stroke(context);\n }\n }\n if (this.isFill()) {\n if (!isNil(fillOpacity) && fillOpacity !== 1) {\n context.globalAlpha = fillOpacity;\n this.fill(context);\n context.globalAlpha = opacity;\n } else {\n this.fill(context);\n }\n }\n this.afterDrawPath(context);\n };\n // 复写填充逻辑\n Text.prototype.fill = function (context) {\n this._drawText(context, true);\n };\n // 复写绘制边框的逻辑\n Text.prototype.stroke = function (context) {\n this._drawText(context, false);\n };\n return Text;\n}(ShapeBase);\nexport default Text;","import { isAllowCapture, multiplyVec2, invert } from '@antv/g-base';\nfunction invertFromMatrix(v, matrix) {\n if (matrix) {\n var invertMatrix = invert(matrix);\n return multiplyVec2(invertMatrix, v);\n }\n return v;\n}\nfunction getRefXY(element, x, y) {\n // @ts-ignore\n var totalMatrix = element.getTotalMatrix();\n if (totalMatrix) {\n var _a = invertFromMatrix([x, y, 1], totalMatrix),\n refX = _a[0],\n refY = _a[1];\n return [refX, refY];\n }\n return [x, y];\n}\n// 拾取前的检测,只有通过检测才能继续拾取\nfunction preTest(element, x, y) {\n // @ts-ignore\n if (element.isCanvas && element.isCanvas()) {\n return true;\n }\n // 不允许被拾取,则返回 null\n // @ts-ignore\n if (!isAllowCapture(element) || element.cfg.isInView === false) {\n return false;\n }\n if (element.cfg.clipShape) {\n // 如果存在 clip\n var _a = getRefXY(element, x, y),\n refX = _a[0],\n refY = _a[1];\n if (element.isClipped(refX, refY)) {\n return false;\n }\n }\n // @ts-ignore ,这个地方调用过于频繁\n var bbox = element.cfg.cacheCanvasBBox || element.getCanvasBBox();\n // 如果没有缓存 bbox,则说明不可见\n // 注释掉的这段可能会加速拾取,上面的语句改写成 const bbox = element.cfg.cacheCanvasBBox;\n // 这时候的拾取假设图形/分组在上一次绘制都在视窗内,但是上面已经判定了 isInView 所以意义不大\n // 现在还调用 element.getCanvasBBox(); 一个很大的原因是便于单元测试\n // if (!bbox) {\n // return false;\n // }\n if (!(x >= bbox.minX && x <= bbox.maxX && y >= bbox.minY && y <= bbox.maxY)) {\n return false;\n }\n return true;\n}\n// 这个方法复写了 g-base 的 getShape\nexport function getShape(container, x, y) {\n // 没有通过检测,则返回 null\n if (!preTest(container, x, y)) {\n return null;\n }\n var shape = null;\n var children = container.getChildren();\n var count = children.length;\n for (var i = count - 1; i >= 0; i--) {\n var child = children[i];\n if (child.isGroup()) {\n shape = getShape(child, x, y);\n } else if (preTest(child, x, y)) {\n var curShape = child;\n var _a = getRefXY(child, x, y),\n refX = _a[0],\n refY = _a[1];\n // @ts-ignore\n if (curShape.isInShape(refX, refY)) {\n shape = child;\n }\n }\n if (shape) {\n break;\n }\n }\n return shape;\n}","import { __extends } from \"tslib\";\nimport { AbstractCanvas } from '@antv/g-base';\nimport { getShape } from './util/hit';\nimport * as Shape from './shape';\nimport Group from './group';\nimport { each, getPixelRatio, requestAnimationFrame, clearAnimationFrame } from './util/util';\nimport { applyAttrsToContext, drawChildren, getMergedRegion, mergeView, checkRefresh, clearChanged } from './util/draw';\nvar Canvas = /** @class */function (_super) {\n __extends(Canvas, _super);\n function Canvas() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Canvas.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n // 设置渲染引擎为 canvas,只读属性\n cfg['renderer'] = 'canvas';\n // 是否自动绘制,不需要用户调用 draw 方法\n cfg['autoDraw'] = true;\n // 是否允许局部刷新图表\n cfg['localRefresh'] = true;\n cfg['refreshElements'] = [];\n // 是否在视图内自动裁剪\n cfg['clipView'] = true;\n // 是否使用快速拾取的方案,默认为 false,上层可以打开\n cfg['quickHit'] = false;\n return cfg;\n };\n /**\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n Canvas.prototype.onCanvasChange = function (changeType) {\n /**\n * 触发画布更新的三种 changeType\n * 1. attr: 修改画布的绘图属性\n * 2. sort: 画布排序,图形的层次会发生变化\n * 3. changeSize: 改变画布大小\n */\n if (changeType === 'attr' || changeType === 'sort' || changeType === 'changeSize') {\n this.set('refreshElements', [this]);\n this.draw();\n }\n };\n Canvas.prototype.getShapeBase = function () {\n return Shape;\n };\n Canvas.prototype.getGroupBase = function () {\n return Group;\n };\n /**\n * 获取屏幕像素比\n */\n Canvas.prototype.getPixelRatio = function () {\n var pixelRatio = this.get('pixelRatio') || getPixelRatio();\n // 不足 1 的取 1,超出 1 的取整\n return pixelRatio >= 1 ? Math.ceil(pixelRatio) : 1;\n };\n Canvas.prototype.getViewRange = function () {\n return {\n minX: 0,\n minY: 0,\n maxX: this.cfg.width,\n maxY: this.cfg.height\n };\n };\n // 复写基类的方法生成标签\n Canvas.prototype.createDom = function () {\n var element = document.createElement('canvas');\n var context = element.getContext('2d');\n // 缓存 context 对象\n this.set('context', context);\n return element;\n };\n Canvas.prototype.setDOMSize = function (width, height) {\n _super.prototype.setDOMSize.call(this, width, height);\n var context = this.get('context');\n var el = this.get('el');\n var pixelRatio = this.getPixelRatio();\n el.width = pixelRatio * width;\n el.height = pixelRatio * height;\n // 设置 canvas 元素的宽度和高度,会重置缩放,因此 context.scale 需要在每次设置宽、高后调用\n if (pixelRatio > 1) {\n context.scale(pixelRatio, pixelRatio);\n }\n };\n // 复写基类方法\n Canvas.prototype.clear = function () {\n _super.prototype.clear.call(this);\n this._clearFrame(); // 需要清理掉延迟绘制的帧\n var context = this.get('context');\n var element = this.get('el');\n context.clearRect(0, 0, element.width, element.height);\n };\n Canvas.prototype.getShape = function (x, y) {\n var shape;\n if (this.get('quickHit')) {\n shape = getShape(this, x, y);\n } else {\n shape = _super.prototype.getShape.call(this, x, y, null);\n }\n return shape;\n };\n // 对绘制区域边缘取整,避免浮点数问题\n Canvas.prototype._getRefreshRegion = function () {\n var elements = this.get('refreshElements');\n var viewRegion = this.getViewRange();\n var region;\n // 如果是当前画布整体发生了变化,则直接重绘整个画布\n if (elements.length && elements[0] === this) {\n region = viewRegion;\n } else {\n region = getMergedRegion(elements);\n if (region) {\n region.minX = Math.floor(region.minX);\n region.minY = Math.floor(region.minY);\n region.maxX = Math.ceil(region.maxX);\n region.maxY = Math.ceil(region.maxY);\n region.maxY += 1; // 在很多环境下字体的高低会不一致,附加一像素,避免残影\n var clipView = this.get('clipView');\n // 自动裁剪不在 view 内的区域\n if (clipView) {\n region = mergeView(region, viewRegion);\n }\n }\n }\n return region;\n };\n /**\n * 刷新图形元素,这里仅仅是放入队列,下次绘制时进行绘制\n * @param {IElement} element 图形元素\n */\n Canvas.prototype.refreshElement = function (element) {\n var refreshElements = this.get('refreshElements');\n refreshElements.push(element);\n // if (this.get('autoDraw')) {\n // this._startDraw();\n // }\n };\n // 清理还在进行的绘制\n Canvas.prototype._clearFrame = function () {\n var drawFrame = this.get('drawFrame');\n if (drawFrame) {\n // 如果全部渲染时,存在局部渲染,则抛弃掉局部渲染\n clearAnimationFrame(drawFrame);\n this.set('drawFrame', null);\n this.set('refreshElements', []);\n }\n };\n // 手工调用绘制接口\n Canvas.prototype.draw = function () {\n var drawFrame = this.get('drawFrame');\n if (this.get('autoDraw') && drawFrame) {\n return;\n }\n this._startDraw();\n };\n // 绘制所有图形\n Canvas.prototype._drawAll = function () {\n var context = this.get('context');\n var element = this.get('el');\n var children = this.getChildren();\n context.clearRect(0, 0, element.width, element.height);\n applyAttrsToContext(context, this);\n drawChildren(context, children);\n // 对于 https://github.com/antvis/g/issues/422 的场景,全局渲染的模式下也会记录更新的元素队列,因此全局渲染完后也需要置空\n this.set('refreshElements', []);\n };\n // 绘制局部\n Canvas.prototype._drawRegion = function () {\n var context = this.get('context');\n var refreshElements = this.get('refreshElements');\n var children = this.getChildren();\n var region = this._getRefreshRegion();\n // 需要注意可能没有 region 的场景\n // 一般发生在设置了 localRefresh ,在没有图形发生变化的情况下,用户调用了 draw\n if (region) {\n // 清理指定区域\n context.clearRect(region.minX, region.minY, region.maxX - region.minX, region.maxY - region.minY);\n // 保存上下文,设置 clip\n context.save();\n context.beginPath();\n context.rect(region.minX, region.minY, region.maxX - region.minX, region.maxY - region.minY);\n context.clip();\n applyAttrsToContext(context, this);\n // 确认更新的元素,这个优化可以提升 10 倍左右的性能,10W 个带有 group 的节点,局部渲染会从 90ms 下降到 5-6 ms\n checkRefresh(this, children, region);\n // 绘制子元素\n drawChildren(context, children, region);\n context.restore();\n } else if (refreshElements.length) {\n // 防止发生改变的 elements 没有 region 的场景,这会发生在多个情况下\n // 1. 空的 group\n // 2. 所有 elements 没有在绘图区域\n // 3. group 下面的 elements 隐藏掉\n // 如果不进行清理 hasChanged 的状态会不正确\n clearChanged(refreshElements);\n }\n each(refreshElements, function (element) {\n if (element.get('hasChanged')) {\n // 在视窗外的 Group 元素会加入到更新队列里,但实际却没有执行 draw() 逻辑,也就没有清除 hasChanged 标记\n // 即已经重绘完、但 hasChanged 标记没有清除的元素,需要统一清除掉。主要是 Group 存在问题,具体原因待排查\n element.set('hasChanged', false);\n }\n });\n this.set('refreshElements', []);\n };\n // 触发绘制\n Canvas.prototype._startDraw = function () {\n var _this = this;\n var drawFrame = this.get('drawFrame');\n if (!drawFrame) {\n drawFrame = requestAnimationFrame(function () {\n if (_this.get('localRefresh')) {\n _this._drawRegion();\n } else {\n _this._drawAll();\n }\n _this.set('drawFrame', null);\n });\n this.set('drawFrame', drawFrame);\n }\n };\n Canvas.prototype.skipDraw = function () {};\n Canvas.prototype.removeDom = function () {\n var el = this.get('el');\n // 需要清理 canvas 画布内容,否则ios下 创建的canvas垃圾未回收,导致Total canvas memory use exceeds问题\n // 相关问题列表\n // https://stackoverflow.com/questions/52532614/total-canvas-memory-use-exceeds-the-maximum-limit-safari-12\n // https://github.com/openlayers/openlayers/issues/9291\n el.width = 0;\n el.height = 0;\n el.parentNode.removeChild(el);\n };\n return Canvas;\n}(AbstractCanvas);\nexport default Canvas;","import * as Shape from './shape';\nexport * from '@antv/g-base';\nexport { default as Canvas } from './canvas';\nexport { default as Group } from './group';\nexport { Shape };\nexport { default as getArcParams } from './util/arc-params';\nexport var version = '0.5.12';","export var SHAPE_TO_TAGS = {\n rect: 'path',\n circle: 'circle',\n line: 'line',\n path: 'path',\n marker: 'path',\n text: 'text',\n polyline: 'polyline',\n polygon: 'polygon',\n image: 'image',\n ellipse: 'ellipse',\n dom: 'foreignObject'\n};\nexport var SVG_ATTR_MAP = {\n opacity: 'opacity',\n fillStyle: 'fill',\n fill: 'fill',\n fillOpacity: 'fill-opacity',\n strokeStyle: 'stroke',\n strokeOpacity: 'stroke-opacity',\n stroke: 'stroke',\n x: 'x',\n y: 'y',\n r: 'r',\n rx: 'rx',\n ry: 'ry',\n width: 'width',\n height: 'height',\n x1: 'x1',\n x2: 'x2',\n y1: 'y1',\n y2: 'y2',\n lineCap: 'stroke-linecap',\n lineJoin: 'stroke-linejoin',\n lineWidth: 'stroke-width',\n lineDash: 'stroke-dasharray',\n lineDashOffset: 'stroke-dashoffset',\n miterLimit: 'stroke-miterlimit',\n font: 'font',\n fontSize: 'font-size',\n fontStyle: 'font-style',\n fontVariant: 'font-variant',\n fontWeight: 'font-weight',\n fontFamily: 'font-family',\n startArrow: 'marker-start',\n endArrow: 'marker-end',\n path: 'd',\n class: 'class',\n id: 'id',\n style: 'style',\n preserveAspectRatio: 'preserveAspectRatio'\n};\nexport var EVENTS = ['click', 'mousedown', 'mouseup', 'dblclick', 'contextmenu', 'mouseenter', 'mouseleave', 'mouseover', 'mouseout', 'mousemove', 'wheel'];","import { toArray } from '@antv/util';\nimport { SHAPE_TO_TAGS } from '../constant';\n/**\n * 创建并返回图形的 svg 元素\n * @param type svg类型\n */\nexport function createSVGElement(type) {\n return document.createElementNS('http://www.w3.org/2000/svg', type);\n}\n/**\n * 创建并返回图形的 dom 元素\n * @param {IShape} shape 图形\n * @return {SVGElement}\n */\nexport function createDom(shape) {\n var type = SHAPE_TO_TAGS[shape.type];\n var parent = shape.getParent();\n if (!type) {\n throw new Error(\"the type \" + shape.type + \" is not supported by svg\");\n }\n var element = createSVGElement(type);\n if (shape.get('id')) {\n element.id = shape.get('id');\n }\n shape.set('el', element);\n shape.set('attrs', {});\n // 对于 defs 下的 dom 节点,parent 为空,通过 context 统一挂载到 defs 节点下\n if (parent) {\n var parentNode = parent.get('el');\n if (parentNode) {\n parentNode.appendChild(element);\n } else {\n // parentNode maybe null for group\n parentNode = parent.createDom();\n parent.set('el', parentNode);\n parentNode.appendChild(element);\n }\n }\n return element;\n}\n/**\n * 对 dom 元素进行排序\n * @param {IElement} element 元素\n * @param {sorter} function 排序函数\n */\nexport function sortDom(element, sorter) {\n var el = element.get('el');\n var childList = toArray(el.children).sort(sorter);\n // create empty fragment\n var fragment = document.createDocumentFragment();\n childList.forEach(function (child) {\n fragment.appendChild(child);\n });\n el.appendChild(fragment);\n}\n/**\n * 将 dom 元素移动到父元素下的指定位置\n * @param {SVGElement} element dom 元素\n * @param {number} targetIndex 目标位置(从 0 开始)\n */\nexport function moveTo(element, targetIndex) {\n var parentNode = element.parentNode;\n var siblings = Array.from(parentNode.childNodes).filter(\n // 要求为元素节点,且不能为 defs 节点\n function (node) {\n return node.nodeType === 1 && node.nodeName.toLowerCase() !== 'defs';\n });\n // 获取目标节点\n var target = siblings[targetIndex];\n var currentIndex = siblings.indexOf(element);\n // 如果目标节点存在\n if (target) {\n // 当前索引 > 目标索引,直接插入到目标节点之前即可\n if (currentIndex > targetIndex) {\n parentNode.insertBefore(element, target);\n } else if (currentIndex < targetIndex) {\n // 当前索引 < 目标索引\n // 获取目标节点的下一个节点\n var targetNext = siblings[targetIndex + 1];\n // 如果目标节点的下一个节点存在,插入到该节点之前\n if (targetNext) {\n parentNode.insertBefore(element, targetNext);\n } else {\n // 如果该节点不存在,则追加到末尾\n parentNode.appendChild(element);\n }\n }\n } else {\n parentNode.appendChild(element);\n }\n}","import { createDom } from './dom';\nexport function setShadow(model, context) {\n var el = model.cfg.el;\n var attrs = model.attr();\n var cfg = {\n dx: attrs.shadowOffsetX,\n dy: attrs.shadowOffsetY,\n blur: attrs.shadowBlur,\n color: attrs.shadowColor\n };\n if (!cfg.dx && !cfg.dy && !cfg.blur && !cfg.color) {\n el.removeAttribute('filter');\n } else {\n var id = context.find('filter', cfg);\n if (!id) {\n id = context.addShadow(cfg);\n }\n el.setAttribute('filter', \"url(#\" + id + \")\");\n }\n}\nexport function setTransform(model) {\n var matrix = model.attr().matrix;\n if (matrix) {\n var el = model.cfg.el;\n var transform = [];\n for (var i = 0; i < 9; i += 3) {\n transform.push(matrix[i] + \",\" + matrix[i + 1]);\n }\n transform = transform.join(',');\n if (transform.indexOf('NaN') === -1) {\n el.setAttribute('transform', \"matrix(\" + transform + \")\");\n } else {\n console.warn('invalid matrix:', matrix);\n }\n }\n}\nexport function setClip(model, context) {\n var clip = model.getClip();\n var el = model.get('el');\n if (!clip) {\n el.removeAttribute('clip-path');\n } else if (clip && !el.hasAttribute('clip-path')) {\n createDom(clip);\n clip.createPath(context);\n var id = context.addClip(clip);\n el.setAttribute('clip-path', \"url(#\" + id + \")\");\n }\n}","import { setTransform, setClip } from './svg';\nimport { sortDom, moveTo } from './dom';\nexport function drawChildren(context, children) {\n children.forEach(function (child) {\n child.draw(context);\n });\n}\n/**\n * 更新元素,包括 group 和 shape\n * @param {IElement} element SVG 元素\n * @param {ChangeType} changeType 更新类型\n */\nexport function refreshElement(element, changeType) {\n // 对于还没有挂载到画布下的元素,canvas 可能为空\n var canvas = element.get('canvas');\n // 只有挂载到画布下,才对元素进行实际渲染\n if (canvas && canvas.get('autoDraw')) {\n var context = canvas.get('context');\n var parent_1 = element.getParent();\n var parentChildren = parent_1 ? parent_1.getChildren() : [canvas];\n var el = element.get('el');\n if (changeType === 'remove') {\n var isClipShape = element.get('isClipShape');\n // 对于 clip,不仅需要将 clipShape 对于的 SVG 元素删除,还需要将上层的 clipPath 元素也删除\n if (isClipShape) {\n var clipPathEl = el && el.parentNode;\n var defsEl = clipPathEl && clipPathEl.parentNode;\n if (clipPathEl && defsEl) {\n defsEl.removeChild(clipPathEl);\n }\n } else if (el && el.parentNode) {\n el.parentNode.removeChild(el);\n }\n } else if (changeType === 'show') {\n el.setAttribute('visibility', 'visible');\n } else if (changeType === 'hide') {\n el.setAttribute('visibility', 'hidden');\n } else if (changeType === 'zIndex') {\n moveTo(el, parentChildren.indexOf(element));\n } else if (changeType === 'sort') {\n var children_1 = element.get('children');\n if (children_1 && children_1.length) {\n sortDom(element, function (a, b) {\n return children_1.indexOf(a) - children_1.indexOf(b) ? 1 : 0;\n });\n }\n } else if (changeType === 'clear') {\n // el maybe null for group\n if (el) {\n el.innerHTML = '';\n }\n } else if (changeType === 'matrix') {\n setTransform(element);\n } else if (changeType === 'clip') {\n setClip(element, context);\n } else if (changeType === 'attr') {\n // 已在 afterAttrsChange 进行了处理,此处 do nothing\n } else if (changeType === 'add') {\n element.draw(context);\n }\n }\n}","import { __extends } from \"tslib\";\nimport { AbstractGroup } from '@antv/g-base';\nimport { each } from '@antv/util';\nimport * as Shape from './shape';\nimport { drawChildren, refreshElement } from './util/draw';\nimport { setClip, setTransform } from './util/svg';\nimport { SVG_ATTR_MAP } from './constant';\nimport { createSVGElement } from './util/dom';\nvar Group = /** @class */function (_super) {\n __extends(Group, _super);\n function Group() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // SVG 中分组对应实体标签 \n Group.prototype.isEntityGroup = function () {\n return true;\n };\n Group.prototype.createDom = function () {\n var element = createSVGElement('g');\n this.set('el', element);\n var parent = this.getParent();\n if (parent) {\n var parentNode = parent.get('el');\n if (parentNode) {\n parentNode.appendChild(element);\n } else {\n // parentNode maybe null for group\n parentNode = parent.createDom();\n parent.set('el', parentNode);\n parentNode.appendChild(element);\n }\n }\n return element;\n };\n // 覆盖基类的 afterAttrsChange 方法\n Group.prototype.afterAttrsChange = function (targetAttrs) {\n _super.prototype.afterAttrsChange.call(this, targetAttrs);\n var canvas = this.get('canvas');\n // 只有挂载到画布下,才对元素进行实际渲染\n if (canvas && canvas.get('autoDraw')) {\n var context = canvas.get('context');\n this.createPath(context, targetAttrs);\n }\n };\n /**\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n Group.prototype.onCanvasChange = function (changeType) {\n refreshElement(this, changeType);\n };\n Group.prototype.getShapeBase = function () {\n return Shape;\n };\n Group.prototype.getGroupBase = function () {\n return Group;\n };\n Group.prototype.draw = function (context) {\n var children = this.getChildren();\n var el = this.get('el');\n if (this.get('destroyed')) {\n if (el) {\n el.parentNode.removeChild(el);\n }\n } else {\n if (!el) {\n this.createDom();\n }\n setClip(this, context);\n this.createPath(context);\n if (children.length) {\n drawChildren(context, children);\n }\n }\n };\n /**\n * 绘制分组的路径\n * @param {Defs} context 上下文\n * @param {ShapeAttrs} targetAttrs 渲染的目标属性\n */\n Group.prototype.createPath = function (context, targetAttrs) {\n var attrs = this.attr();\n var el = this.get('el');\n each(targetAttrs || attrs, function (value, attr) {\n if (SVG_ATTR_MAP[attr]) {\n el.setAttribute(SVG_ATTR_MAP[attr], value);\n }\n });\n setTransform(this);\n };\n return Group;\n}(AbstractGroup);\nexport default Group;","import { __assign, __extends } from \"tslib\";\nimport { AbstractShape } from '@antv/g-base';\nimport { setShadow, setTransform, setClip } from '../util/svg';\nimport { createDom } from '../util/dom';\nimport { refreshElement } from '../util/draw';\nimport { SVG_ATTR_MAP } from '../constant';\nimport * as Shape from './index';\nimport Group from '../group';\nimport { getBBoxMethod } from '@antv/g-base';\nvar ShapeBase = /** @class */function (_super) {\n __extends(ShapeBase, _super);\n function ShapeBase() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'svg';\n _this.canFill = false;\n _this.canStroke = false;\n return _this;\n }\n ShapeBase.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n // 设置默认值\n return __assign(__assign({}, attrs), {\n lineWidth: 1,\n lineAppendWidth: 0,\n strokeOpacity: 1,\n fillOpacity: 1\n });\n };\n // 覆盖基类的 afterAttrsChange 方法\n ShapeBase.prototype.afterAttrsChange = function (targetAttrs) {\n _super.prototype.afterAttrsChange.call(this, targetAttrs);\n var canvas = this.get('canvas');\n // 只有挂载到画布下,才对元素进行实际渲染\n if (canvas && canvas.get('autoDraw')) {\n var context = canvas.get('context');\n this.draw(context, targetAttrs);\n }\n };\n ShapeBase.prototype.getShapeBase = function () {\n return Shape;\n };\n ShapeBase.prototype.getGroupBase = function () {\n return Group;\n };\n /**\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n ShapeBase.prototype.onCanvasChange = function (changeType) {\n refreshElement(this, changeType);\n };\n ShapeBase.prototype.calculateBBox = function () {\n var el = this.get('el');\n var bbox = null;\n // 包围盒计算依赖于绘制,如果还没有生成对应的 Dom 元素,则包围盒的长宽均为 0\n if (el) {\n bbox = el.getBBox();\n } else {\n var bboxMethod = getBBoxMethod(this.get('type'));\n if (bboxMethod) {\n bbox = bboxMethod(this);\n }\n }\n if (bbox) {\n var x = bbox.x,\n y = bbox.y,\n width = bbox.width,\n height = bbox.height;\n var lineWidth = this.getHitLineWidth();\n var halfWidth = lineWidth / 2;\n var minX = x - halfWidth;\n var minY = y - halfWidth;\n var maxX = x + width + halfWidth;\n var maxY = y + height + halfWidth;\n return {\n x: minX,\n y: minY,\n minX: minX,\n minY: minY,\n maxX: maxX,\n maxY: maxY,\n width: width + lineWidth,\n height: height + lineWidth\n };\n }\n return {\n x: 0,\n y: 0,\n minX: 0,\n minY: 0,\n maxX: 0,\n maxY: 0,\n width: 0,\n height: 0\n };\n };\n ShapeBase.prototype.isFill = function () {\n var _a = this.attr(),\n fill = _a.fill,\n fillStyle = _a.fillStyle;\n return (fill || fillStyle || this.isClipShape()) && this.canFill;\n };\n ShapeBase.prototype.isStroke = function () {\n var _a = this.attr(),\n stroke = _a.stroke,\n strokeStyle = _a.strokeStyle;\n return (stroke || strokeStyle) && this.canStroke;\n };\n ShapeBase.prototype.draw = function (context, targetAttrs) {\n var el = this.get('el');\n if (this.get('destroyed')) {\n if (el) {\n el.parentNode.removeChild(el);\n }\n } else {\n if (!el) {\n createDom(this);\n }\n setClip(this, context);\n this.createPath(context, targetAttrs);\n this.shadow(context, targetAttrs);\n this.strokeAndFill(context, targetAttrs);\n this.transform(targetAttrs);\n }\n };\n /**\n * @protected\n * 绘制图形的路径\n * @param {Defs} context 上下文\n * @param {ShapeAttrs} targetAttrs 渲染的目标属性\n */\n ShapeBase.prototype.createPath = function (context, targetAttrs) {};\n // stroke and fill\n ShapeBase.prototype.strokeAndFill = function (context, targetAttrs) {\n var attrs = targetAttrs || this.attr();\n var fill = attrs.fill,\n fillStyle = attrs.fillStyle,\n stroke = attrs.stroke,\n strokeStyle = attrs.strokeStyle,\n fillOpacity = attrs.fillOpacity,\n strokeOpacity = attrs.strokeOpacity,\n lineWidth = attrs.lineWidth;\n var el = this.get('el');\n if (this.canFill) {\n // 初次渲染和更新渲染的逻辑有所不同: 初次渲染值为空时,需要设置为 none,否则就会是黑色,而更新渲染则不需要\n if (!targetAttrs) {\n this._setColor(context, 'fill', fill || fillStyle);\n } else if ('fill' in attrs) {\n this._setColor(context, 'fill', fill);\n } else if ('fillStyle' in attrs) {\n // compatible with fillStyle\n this._setColor(context, 'fill', fillStyle);\n }\n if (fillOpacity) {\n el.setAttribute(SVG_ATTR_MAP['fillOpacity'], fillOpacity);\n }\n }\n if (this.canStroke && lineWidth > 0) {\n if (!targetAttrs) {\n this._setColor(context, 'stroke', stroke || strokeStyle);\n } else if ('stroke' in attrs) {\n this._setColor(context, 'stroke', stroke);\n } else if ('strokeStyle' in attrs) {\n // compatible with strokeStyle\n this._setColor(context, 'stroke', strokeStyle);\n }\n if (strokeOpacity) {\n el.setAttribute(SVG_ATTR_MAP['strokeOpacity'], strokeOpacity);\n }\n if (lineWidth) {\n el.setAttribute(SVG_ATTR_MAP['lineWidth'], lineWidth);\n }\n }\n };\n ShapeBase.prototype._setColor = function (context, attr, value) {\n var el = this.get('el');\n if (!value) {\n // need to set `none` to avoid default value\n el.setAttribute(SVG_ATTR_MAP[attr], 'none');\n return;\n }\n value = value.trim();\n if (/^[r,R,L,l]{1}[\\s]*\\(/.test(value)) {\n var id = context.find('gradient', value);\n if (!id) {\n id = context.addGradient(value);\n }\n el.setAttribute(SVG_ATTR_MAP[attr], \"url(#\" + id + \")\");\n } else if (/^[p,P]{1}[\\s]*\\(/.test(value)) {\n var id = context.find('pattern', value);\n if (!id) {\n id = context.addPattern(value);\n }\n el.setAttribute(SVG_ATTR_MAP[attr], \"url(#\" + id + \")\");\n } else {\n el.setAttribute(SVG_ATTR_MAP[attr], value);\n }\n };\n ShapeBase.prototype.shadow = function (context, targetAttrs) {\n var attrs = this.attr();\n var _a = targetAttrs || attrs,\n shadowOffsetX = _a.shadowOffsetX,\n shadowOffsetY = _a.shadowOffsetY,\n shadowBlur = _a.shadowBlur,\n shadowColor = _a.shadowColor;\n if (shadowOffsetX || shadowOffsetY || shadowBlur || shadowColor) {\n setShadow(this, context);\n }\n };\n ShapeBase.prototype.transform = function (targetAttrs) {\n var attrs = this.attr();\n var matrix = (targetAttrs || attrs).matrix;\n if (matrix) {\n setTransform(this);\n }\n };\n ShapeBase.prototype.isInShape = function (refX, refY) {\n return this.isPointInPath(refX, refY);\n };\n ShapeBase.prototype.isPointInPath = function (refX, refY) {\n var el = this.get('el');\n var canvas = this.get('canvas');\n var bbox = canvas.get('el').getBoundingClientRect();\n var clientX = refX + bbox.left;\n var clientY = refY + bbox.top;\n var element = document.elementFromPoint(clientX, clientY);\n if (element && element.isEqualNode(el)) {\n return true;\n }\n return false;\n };\n /**\n * 获取线拾取的宽度\n * @returns {number} 线的拾取宽度\n */\n ShapeBase.prototype.getHitLineWidth = function () {\n var _a = this.attrs,\n lineWidth = _a.lineWidth,\n lineAppendWidth = _a.lineAppendWidth;\n if (this.isStroke()) {\n return lineWidth + lineAppendWidth;\n }\n return 0;\n };\n return ShapeBase;\n}(AbstractShape);\nexport default ShapeBase;","/**\n * @fileoverview circle\n * @author dengfuping_develop@163.com\n */\nimport { __assign, __extends } from \"tslib\";\nimport { each } from '@antv/util';\nimport { SVG_ATTR_MAP } from '../constant';\nimport ShapeBase from './base';\nvar Circle = /** @class */function (_super) {\n __extends(Circle, _super);\n function Circle() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'circle';\n _this.canFill = true;\n _this.canStroke = true;\n return _this;\n }\n Circle.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return __assign(__assign({}, attrs), {\n x: 0,\n y: 0,\n r: 0\n });\n };\n Circle.prototype.createPath = function (context, targetAttrs) {\n var attrs = this.attr();\n var el = this.get('el');\n each(targetAttrs || attrs, function (value, attr) {\n // 圆和椭圆的点坐标属性不是 x, y,而是 cx, cy\n if (attr === 'x' || attr === 'y') {\n el.setAttribute(\"c\" + attr, value);\n } else if (SVG_ATTR_MAP[attr]) {\n el.setAttribute(SVG_ATTR_MAP[attr], value);\n }\n });\n };\n return Circle;\n}(ShapeBase);\nexport default Circle;","/**\n * @fileoverview dom\n * @author dengfuping_develop@163.com\n */\nimport { __extends } from \"tslib\";\nimport { each } from '@antv/util';\nimport { SVG_ATTR_MAP } from '../constant';\nimport ShapeBase from './base';\nvar Dom = /** @class */function (_super) {\n __extends(Dom, _super);\n function Dom() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'dom';\n _this.canFill = false;\n _this.canStroke = false;\n return _this;\n }\n Dom.prototype.createPath = function (context, targetAttrs) {\n var attrs = this.attr();\n var el = this.get('el');\n each(targetAttrs || attrs, function (value, attr) {\n if (SVG_ATTR_MAP[attr]) {\n el.setAttribute(SVG_ATTR_MAP[attr], value);\n }\n });\n if (typeof attrs['html'] === 'function') {\n var element = attrs['html'].call(this, attrs);\n if (element instanceof Element || element instanceof HTMLDocument) {\n var children = el.childNodes;\n for (var i = children.length - 1; i >= 0; i--) {\n el.removeChild(children[i]);\n }\n el.appendChild(element); // append to el if it's an element\n } else {\n el.innerHTML = element; // set innerHTML\n }\n } else {\n el.innerHTML = attrs['html']; // set innerHTML\n }\n };\n\n return Dom;\n}(ShapeBase);\nexport default Dom;","/**\n * @fileoverview ellipse\n * @author dengfuping_develop@163.com\n */\nimport { __assign, __extends } from \"tslib\";\nimport { each } from '@antv/util';\nimport { SVG_ATTR_MAP } from '../constant';\nimport ShapeBase from './base';\nvar Ellipse = /** @class */function (_super) {\n __extends(Ellipse, _super);\n function Ellipse() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'ellipse';\n _this.canFill = true;\n _this.canStroke = true;\n return _this;\n }\n Ellipse.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return __assign(__assign({}, attrs), {\n x: 0,\n y: 0,\n rx: 0,\n ry: 0\n });\n };\n Ellipse.prototype.createPath = function (context, targetAttrs) {\n var attrs = this.attr();\n var el = this.get('el');\n each(targetAttrs || attrs, function (value, attr) {\n // 圆和椭圆的点坐标属性不是 x, y,而是 cx, cy\n if (attr === 'x' || attr === 'y') {\n el.setAttribute(\"c\" + attr, value);\n } else if (SVG_ATTR_MAP[attr]) {\n el.setAttribute(SVG_ATTR_MAP[attr], value);\n }\n });\n };\n return Ellipse;\n}(ShapeBase);\nexport default Ellipse;","/**\n * @fileoverview image\n * @author dengfuping_develop@163.com\n */\nimport { __assign, __extends } from \"tslib\";\nimport { each, isString } from '@antv/util';\nimport { SVG_ATTR_MAP } from '../constant';\nimport ShapeBase from './base';\nvar Image = /** @class */function (_super) {\n __extends(Image, _super);\n function Image() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'image';\n _this.canFill = false;\n _this.canStroke = false;\n return _this;\n }\n Image.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return __assign(__assign({}, attrs), {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n });\n };\n Image.prototype.createPath = function (context, targetAttrs) {\n var _this = this;\n var attrs = this.attr();\n var el = this.get('el');\n each(targetAttrs || attrs, function (value, attr) {\n if (attr === 'img') {\n _this._setImage(attrs.img);\n } else if (SVG_ATTR_MAP[attr]) {\n el.setAttribute(SVG_ATTR_MAP[attr], value);\n }\n });\n };\n Image.prototype.setAttr = function (name, value) {\n this.attrs[name] = value;\n if (name === 'img') {\n this._setImage(value);\n }\n };\n Image.prototype._setImage = function (img) {\n var attrs = this.attr();\n var el = this.get('el');\n if (isString(img)) {\n el.setAttribute('href', img);\n } else if (img instanceof window.Image) {\n if (!attrs.width) {\n el.setAttribute('width', img.width);\n this.attr('width', img.width);\n }\n if (!attrs.height) {\n el.setAttribute('height', img.height);\n this.attr('height', img.height);\n }\n el.setAttribute('href', img.src);\n } else if (img instanceof HTMLElement && isString(img.nodeName) && img.nodeName.toUpperCase() === 'CANVAS') {\n // @ts-ignore\n el.setAttribute('href', img.toDataURL());\n } else if (img instanceof ImageData) {\n var canvas = document.createElement('canvas');\n canvas.setAttribute('width', \"\" + img.width);\n canvas.setAttribute('height', \"\" + img.height);\n canvas.getContext('2d').putImageData(img, 0, 0);\n if (!attrs.width) {\n el.setAttribute('width', \"\" + img.width);\n this.attr('width', img.width);\n }\n if (!attrs.height) {\n el.setAttribute('height', \"\" + img.height);\n this.attr('height', img.height);\n }\n el.setAttribute('href', canvas.toDataURL());\n }\n };\n return Image;\n}(ShapeBase);\nexport default Image;","import { __assign, __extends } from \"tslib\";\n/**\n * @fileoverview line\n * @author dengfuping_develop@163.com\n */\nimport { Line as LineUtil } from '@antv/g-math';\nimport { each, isObject } from '@antv/util';\nimport { SVG_ATTR_MAP } from '../constant';\nimport ShapeBase from './base';\nvar Line = /** @class */function (_super) {\n __extends(Line, _super);\n function Line() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'line';\n _this.canFill = false;\n _this.canStroke = true;\n return _this;\n }\n Line.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return __assign(__assign({}, attrs), {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 0,\n startArrow: false,\n endArrow: false\n });\n };\n Line.prototype.createPath = function (context, targetAttrs) {\n var attrs = this.attr();\n var el = this.get('el');\n each(targetAttrs || attrs, function (value, attr) {\n if (attr === 'startArrow' || attr === 'endArrow') {\n if (value) {\n var id = isObject(value) ? context.addArrow(attrs, SVG_ATTR_MAP[attr]) : context.getDefaultArrow(attrs, SVG_ATTR_MAP[attr]);\n el.setAttribute(SVG_ATTR_MAP[attr], \"url(#\" + id + \")\");\n } else {\n el.removeAttribute(SVG_ATTR_MAP[attr]);\n }\n } else if (SVG_ATTR_MAP[attr]) {\n el.setAttribute(SVG_ATTR_MAP[attr], value);\n }\n });\n };\n /**\n * Use math calculation to get length of line\n * @return {number} length\n */\n Line.prototype.getTotalLength = function () {\n var _a = this.attr(),\n x1 = _a.x1,\n y1 = _a.y1,\n x2 = _a.x2,\n y2 = _a.y2;\n return LineUtil.length(x1, y1, x2, y2);\n };\n /**\n * Use math calculation to get point according to ratio as same sa Canvas version\n * @param {number} ratio\n * @return {Point} point\n */\n Line.prototype.getPoint = function (ratio) {\n var _a = this.attr(),\n x1 = _a.x1,\n y1 = _a.y1,\n x2 = _a.x2,\n y2 = _a.y2;\n return LineUtil.pointAt(x1, y1, x2, y2, ratio);\n };\n return Line;\n}(ShapeBase);\nexport default Line;","var Symbols = {\n // 圆\n circle: function circle(x, y, r) {\n return [['M', x, y], ['m', -r, 0], ['a', r, r, 0, 1, 0, r * 2, 0], ['a', r, r, 0, 1, 0, -r * 2, 0]];\n },\n // 正方形\n square: function square(x, y, r) {\n return [['M', x - r, y - r], ['L', x + r, y - r], ['L', x + r, y + r], ['L', x - r, y + r], ['Z']];\n },\n // 菱形\n diamond: function diamond(x, y, r) {\n return [['M', x - r, y], ['L', x, y - r], ['L', x + r, y], ['L', x, y + r], ['Z']];\n },\n // 三角形\n triangle: function triangle(x, y, r) {\n var diffY = r * Math.sin(1 / 3 * Math.PI);\n return [['M', x - r, y + diffY], ['L', x, y - diffY], ['L', x + r, y + diffY], ['z']];\n },\n // 倒三角形\n triangleDown: function triangleDown(x, y, r) {\n var diffY = r * Math.sin(1 / 3 * Math.PI);\n return [['M', x - r, y - diffY], ['L', x + r, y - diffY], ['L', x, y + diffY], ['Z']];\n }\n};\nexport default {\n get: function get(type) {\n return Symbols[type];\n },\n register: function register(type, func) {\n Symbols[type] = func;\n },\n remove: function remove(type) {\n delete Symbols[type];\n },\n getAll: function getAll() {\n return Symbols;\n }\n};","/**\n * @fileoverview marker\n * @author dengfuping_develop@163.com\n */\nimport { __extends } from \"tslib\";\nimport { isArray, isFunction } from '@antv/util';\nimport ShapeBase from '../base';\nimport symbolsFactory from './symbols';\nvar Marker = /** @class */function (_super) {\n __extends(Marker, _super);\n function Marker() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'marker';\n _this.canFill = true;\n _this.canStroke = true;\n return _this;\n }\n Marker.prototype.createPath = function (context) {\n var el = this.get('el');\n el.setAttribute('d', this._assembleMarker());\n };\n Marker.prototype._assembleMarker = function () {\n var d = this._getPath();\n if (isArray(d)) {\n return d.map(function (path) {\n return path.join(' ');\n }).join('');\n }\n return d;\n };\n Marker.prototype._getPath = function () {\n var attrs = this.attr();\n var x = attrs.x,\n y = attrs.y;\n // 兼容 r 和 radius 两种写法,推荐使用 r\n var r = attrs.r || attrs.radius;\n var symbol = attrs.symbol || 'circle';\n var method;\n if (isFunction(symbol)) {\n method = symbol;\n } else {\n method = symbolsFactory.get(symbol);\n }\n if (!method) {\n console.warn(method + \" symbol is not exist.\");\n return null;\n }\n return method(x, y, r);\n };\n // 作为其静态属性\n Marker.symbolsFactory = symbolsFactory;\n return Marker;\n}(ShapeBase);\nexport default Marker;","import { __assign, __extends } from \"tslib\";\nimport { each, isArray, isObject } from '@antv/util';\nimport { SVG_ATTR_MAP } from '../constant';\nimport ShapeBase from './base';\nvar Path = /** @class */function (_super) {\n __extends(Path, _super);\n function Path() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'path';\n _this.canFill = true;\n _this.canStroke = true;\n return _this;\n }\n Path.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return __assign(__assign({}, attrs), {\n startArrow: false,\n endArrow: false\n });\n };\n Path.prototype.createPath = function (context, targetAttrs) {\n var _this = this;\n var attrs = this.attr();\n var el = this.get('el');\n each(targetAttrs || attrs, function (value, attr) {\n if (attr === 'path' && isArray(value)) {\n el.setAttribute('d', _this._formatPath(value));\n } else if (attr === 'startArrow' || attr === 'endArrow') {\n if (value) {\n var id = isObject(value) ? context.addArrow(attrs, SVG_ATTR_MAP[attr]) : context.getDefaultArrow(attrs, SVG_ATTR_MAP[attr]);\n el.setAttribute(SVG_ATTR_MAP[attr], \"url(#\" + id + \")\");\n } else {\n el.removeAttribute(SVG_ATTR_MAP[attr]);\n }\n } else if (SVG_ATTR_MAP[attr]) {\n el.setAttribute(SVG_ATTR_MAP[attr], value);\n }\n });\n };\n Path.prototype._formatPath = function (value) {\n var newValue = value.map(function (path) {\n return path.join(' ');\n }).join('');\n if (~newValue.indexOf('NaN')) {\n return '';\n }\n return newValue;\n };\n /**\n * Get total length of path\n * 尽管通过浏览器的 SVGPathElement.getTotalLength() 接口获取的 path 长度,\n * 与 Canvas 版本通过数学计算的方式得到的长度有一些细微差异,但最大误差在个位数像素,精度上可以能接受\n * @return {number} length\n */\n Path.prototype.getTotalLength = function () {\n var el = this.get('el');\n return el ? el.getTotalLength() : null;\n };\n /**\n * Get point according to ratio\n * @param {number} ratio\n * @return {Point} point\n */\n Path.prototype.getPoint = function (ratio) {\n var el = this.get('el');\n var totalLength = this.getTotalLength();\n // @see https://github.com/antvis/g/issues/634\n if (totalLength === 0) {\n return null;\n }\n var point = el ? el.getPointAtLength(ratio * totalLength) : null;\n return point ? {\n x: point.x,\n y: point.y\n } : null;\n };\n return Path;\n}(ShapeBase);\nexport default Path;","import { __extends } from \"tslib\";\n/**\n * @fileoverview polygon\n * @author dengfuping_develop@163.com\n */\nimport { each, isArray } from '@antv/util';\nimport { SVG_ATTR_MAP } from '../constant';\nimport ShapeBase from './base';\nvar Polygon = /** @class */function (_super) {\n __extends(Polygon, _super);\n function Polygon() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'polygon';\n _this.canFill = true;\n _this.canStroke = true;\n return _this;\n }\n Polygon.prototype.createPath = function (context, targetAttrs) {\n var attrs = this.attr();\n var el = this.get('el');\n each(targetAttrs || attrs, function (value, attr) {\n if (attr === 'points' && isArray(value) && value.length >= 2) {\n el.setAttribute('points', value.map(function (point) {\n return point[0] + \",\" + point[1];\n }).join(' '));\n } else if (SVG_ATTR_MAP[attr]) {\n el.setAttribute(SVG_ATTR_MAP[attr], value);\n }\n });\n };\n return Polygon;\n}(ShapeBase);\nexport default Polygon;","import { __assign, __extends } from \"tslib\";\nimport { Polyline as PolylineUtil } from '@antv/g-math';\nimport { Line as LineUtil } from '@antv/g-math';\nimport { each, isArray, isNil } from '@antv/util';\nimport { SVG_ATTR_MAP } from '../constant';\nimport ShapeBase from './base';\nvar Polyline = /** @class */function (_super) {\n __extends(Polyline, _super);\n function Polyline() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'polyline';\n _this.canFill = true;\n _this.canStroke = true;\n return _this;\n }\n Polyline.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return __assign(__assign({}, attrs), {\n startArrow: false,\n endArrow: false\n });\n };\n // 更新属性时,检测是否更改了 points\n Polyline.prototype.onAttrChange = function (name, value, originValue) {\n _super.prototype.onAttrChange.call(this, name, value, originValue);\n if (['points'].indexOf(name) !== -1) {\n this._resetCache();\n }\n };\n Polyline.prototype._resetCache = function () {\n this.set('totalLength', null);\n this.set('tCache', null);\n };\n Polyline.prototype.createPath = function (context, targetAttrs) {\n var attrs = this.attr();\n var el = this.get('el');\n each(targetAttrs || attrs, function (value, attr) {\n if (attr === 'points' && isArray(value) && value.length >= 2) {\n el.setAttribute('points', value.map(function (point) {\n return point[0] + \",\" + point[1];\n }).join(' '));\n } else if (SVG_ATTR_MAP[attr]) {\n el.setAttribute(SVG_ATTR_MAP[attr], value);\n }\n });\n };\n /**\n * Get length of polyline\n * @return {number} length\n */\n Polyline.prototype.getTotalLength = function () {\n var points = this.attr().points;\n // get totalLength from cache\n var totalLength = this.get('totalLength');\n if (!isNil(totalLength)) {\n return totalLength;\n }\n this.set('totalLength', PolylineUtil.length(points));\n return this.get('totalLength');\n };\n /**\n * Get point according to ratio\n * @param {number} ratio\n * @return {Point} point\n */\n Polyline.prototype.getPoint = function (ratio) {\n var points = this.attr().points;\n // get tCache from cache\n var tCache = this.get('tCache');\n if (!tCache) {\n this._setTcache();\n tCache = this.get('tCache');\n }\n var subt;\n var index;\n each(tCache, function (v, i) {\n if (ratio >= v[0] && ratio <= v[1]) {\n subt = (ratio - v[0]) / (v[1] - v[0]);\n index = i;\n }\n });\n return LineUtil.pointAt(points[index][0], points[index][1], points[index + 1][0], points[index + 1][1], subt);\n };\n Polyline.prototype._setTcache = function () {\n var points = this.attr().points;\n if (!points || points.length === 0) {\n return;\n }\n var totalLength = this.getTotalLength();\n if (totalLength <= 0) {\n return;\n }\n var tempLength = 0;\n var tCache = [];\n var segmentT;\n var segmentL;\n each(points, function (p, i) {\n if (points[i + 1]) {\n segmentT = [];\n segmentT[0] = tempLength / totalLength;\n segmentL = LineUtil.length(p[0], p[1], points[i + 1][0], points[i + 1][1]);\n tempLength += segmentL;\n segmentT[1] = tempLength / totalLength;\n tCache.push(segmentT);\n }\n });\n this.set('tCache', tCache);\n };\n /**\n * Get start tangent vector\n * @return {Array}\n */\n Polyline.prototype.getStartTangent = function () {\n var points = this.attr().points;\n var result = [];\n result.push([points[1][0], points[1][1]]);\n result.push([points[0][0], points[0][1]]);\n return result;\n };\n /**\n * Get end tangent vector\n * @return {Array}\n */\n Polyline.prototype.getEndTangent = function () {\n var points = this.attr().points;\n var l = points.length - 1;\n var result = [];\n result.push([points[l - 1][0], points[l - 1][1]]);\n result.push([points[l][0], points[l][1]]);\n return result;\n };\n return Polyline;\n}(ShapeBase);\nexport default Polyline;","/**\n * @fileoverview rect\n * @author dengfuping_develop@163.com\n */\nimport { __assign, __extends } from \"tslib\";\nimport { each, isArray } from '@antv/util';\nimport ShapeBase from './base';\nimport { SVG_ATTR_MAP } from '../constant';\nimport { parseRadius } from '../util/format';\nvar Rect = /** @class */function (_super) {\n __extends(Rect, _super);\n function Rect() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'rect';\n _this.canFill = true;\n _this.canStroke = true;\n return _this;\n }\n Rect.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return __assign(__assign({}, attrs), {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n radius: 0\n });\n };\n Rect.prototype.createPath = function (context, targetAttrs) {\n var _this = this;\n var attrs = this.attr();\n var el = this.get('el');\n // 加上状态量,用来标记 path 是否已组装\n var completed = false;\n // 和组装 path 相关的绘图属性\n var pathRelatedAttrs = ['x', 'y', 'width', 'height', 'radius'];\n each(targetAttrs || attrs, function (value, attr) {\n if (pathRelatedAttrs.indexOf(attr) !== -1 && !completed) {\n el.setAttribute('d', _this._assembleRect(attrs));\n completed = true;\n } else if (pathRelatedAttrs.indexOf(attr) === -1 && SVG_ATTR_MAP[attr]) {\n el.setAttribute(SVG_ATTR_MAP[attr], value);\n }\n });\n };\n Rect.prototype._assembleRect = function (attrs) {\n var x = attrs.x;\n var y = attrs.y;\n var w = attrs.width;\n var h = attrs.height;\n var radius = attrs.radius;\n if (!radius) {\n return \"M \" + x + \",\" + y + \" l \" + w + \",0 l 0,\" + h + \" l\" + -w + \" 0 z\";\n }\n var r = parseRadius(radius);\n if (isArray(radius)) {\n if (radius.length === 1) {\n r.r1 = r.r2 = r.r3 = r.r4 = radius[0];\n } else if (radius.length === 2) {\n r.r1 = r.r3 = radius[0];\n r.r2 = r.r4 = radius[1];\n } else if (radius.length === 3) {\n r.r1 = radius[0];\n r.r2 = r.r4 = radius[1];\n r.r3 = radius[2];\n } else {\n r.r1 = radius[0];\n r.r2 = radius[1];\n r.r3 = radius[2];\n r.r4 = radius[3];\n }\n } else {\n r.r1 = r.r2 = r.r3 = r.r4 = radius;\n }\n var d = [[\"M \" + (x + r.r1) + \",\" + y], [\"l \" + (w - r.r1 - r.r2) + \",0\"], [\"a \" + r.r2 + \",\" + r.r2 + \",0,0,1,\" + r.r2 + \",\" + r.r2], [\"l 0,\" + (h - r.r2 - r.r3)], [\"a \" + r.r3 + \",\" + r.r3 + \",0,0,1,\" + -r.r3 + \",\" + r.r3], [\"l \" + (r.r3 + r.r4 - w) + \",0\"], [\"a \" + r.r4 + \",\" + r.r4 + \",0,0,1,\" + -r.r4 + \",\" + -r.r4], [\"l 0,\" + (r.r4 + r.r1 - h)], [\"a \" + r.r1 + \",\" + r.r1 + \",0,0,1,\" + r.r1 + \",\" + -r.r1], ['z']];\n return d.join(' ');\n };\n return Rect;\n}(ShapeBase);\nexport default Rect;","import { each, isArray, isString } from '@antv/util';\nvar regexTags = /[MLHVQTCSAZ]([^MLHVQTCSAZ]*)/gi;\nvar regexDot = /[^\\s,]+/gi;\nexport function parseRadius(radius) {\n var r1 = 0;\n var r2 = 0;\n var r3 = 0;\n var r4 = 0;\n if (isArray(radius)) {\n if (radius.length === 1) {\n r1 = r2 = r3 = r4 = radius[0];\n } else if (radius.length === 2) {\n r1 = r3 = radius[0];\n r2 = r4 = radius[1];\n } else if (radius.length === 3) {\n r1 = radius[0];\n r2 = r4 = radius[1];\n r3 = radius[2];\n } else {\n r1 = radius[0];\n r2 = radius[1];\n r3 = radius[2];\n r4 = radius[3];\n }\n } else {\n r1 = r2 = r3 = r4 = radius;\n }\n return {\n r1: r1,\n r2: r2,\n r3: r3,\n r4: r4\n };\n}\nexport function parsePath(path) {\n path = path || [];\n if (isArray(path)) {\n return path;\n }\n if (isString(path)) {\n path = path.match(regexTags);\n each(path, function (item, index) {\n item = item.match(regexDot);\n if (item[0].length > 1) {\n var tag = item[0].charAt(0);\n item.splice(1, 0, item[0].substr(1));\n item[0] = tag;\n }\n each(item, function (sub, i) {\n if (!isNaN(sub)) {\n item[i] = +sub;\n }\n });\n path[index] = item;\n });\n return path;\n }\n}","/**\n * @fileoverview text\n * @author dengfuping_develop@163.com\n */\nimport { __assign, __extends } from \"tslib\";\nimport { each } from '@antv/util';\nimport { detect } from 'detect-browser';\nimport { setTransform } from '../util/svg';\nimport { SVG_ATTR_MAP } from '../constant';\nimport ShapeBase from './base';\nvar LETTER_SPACING = 0.3;\nvar BASELINE_MAP = {\n top: 'before-edge',\n middle: 'central',\n bottom: 'after-edge',\n alphabetic: 'baseline',\n hanging: 'hanging'\n};\n// for FireFox\nvar BASELINE_MAP_FOR_FIREFOX = {\n top: 'text-before-edge',\n middle: 'central',\n bottom: 'text-after-edge',\n alphabetic: 'alphabetic',\n hanging: 'hanging'\n};\nvar ANCHOR_MAP = {\n left: 'left',\n start: 'left',\n center: 'middle',\n right: 'end',\n end: 'end'\n};\nvar Text = /** @class */function (_super) {\n __extends(Text, _super);\n function Text() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'text';\n _this.canFill = true;\n _this.canStroke = true;\n return _this;\n }\n Text.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return __assign(__assign({}, attrs), {\n x: 0,\n y: 0,\n text: null,\n fontSize: 12,\n fontFamily: 'sans-serif',\n fontStyle: 'normal',\n fontWeight: 'normal',\n fontVariant: 'normal',\n textAlign: 'start',\n textBaseline: 'bottom'\n });\n };\n Text.prototype.createPath = function (context, targetAttrs) {\n var _this = this;\n var attrs = this.attr();\n var el = this.get('el');\n this._setFont();\n each(targetAttrs || attrs, function (value, attr) {\n if (attr === 'text') {\n _this._setText(\"\" + value);\n } else if (attr === 'matrix' && value) {\n setTransform(_this);\n } else if (SVG_ATTR_MAP[attr]) {\n el.setAttribute(SVG_ATTR_MAP[attr], value);\n }\n });\n el.setAttribute('paint-order', 'stroke');\n el.setAttribute('style', 'stroke-linecap:butt; stroke-linejoin:miter;');\n };\n Text.prototype._setFont = function () {\n var el = this.get('el');\n var _a = this.attr(),\n textBaseline = _a.textBaseline,\n textAlign = _a.textAlign;\n var browser = detect();\n if (browser && browser.name === 'firefox') {\n // compatible with FireFox browser, ref: https://github.com/antvis/g/issues/119\n el.setAttribute('dominant-baseline', BASELINE_MAP_FOR_FIREFOX[textBaseline] || 'alphabetic');\n } else {\n el.setAttribute('alignment-baseline', BASELINE_MAP[textBaseline] || 'baseline');\n }\n el.setAttribute('text-anchor', ANCHOR_MAP[textAlign] || 'left');\n };\n Text.prototype._setText = function (text) {\n var el = this.get('el');\n var _a = this.attr(),\n x = _a.x,\n _b = _a.textBaseline,\n baseline = _b === void 0 ? 'bottom' : _b;\n if (!text) {\n el.innerHTML = '';\n } else if (~text.indexOf('\\n')) {\n var textArr = text.split('\\n');\n var textLen_1 = textArr.length - 1;\n var arr_1 = '';\n each(textArr, function (segment, i) {\n if (i === 0) {\n if (baseline === 'alphabetic') {\n arr_1 += \"\" + segment + \"\";\n } else if (baseline === 'top') {\n arr_1 += \"\" + segment + \"\";\n } else if (baseline === 'middle') {\n arr_1 += \"\" + segment + \"\";\n } else if (baseline === 'bottom') {\n arr_1 += \"\" + segment + \"\";\n } else if (baseline === 'hanging') {\n arr_1 += \"\" + segment + \"\";\n }\n } else {\n arr_1 += \"\" + segment + \"\";\n }\n });\n el.innerHTML = arr_1;\n } else {\n el.innerHTML = text;\n }\n };\n return Text;\n}(ShapeBase);\nexport default Text;","/**\n * @fileoverview gradient\n * @author dengfuping_develop@163.com\n */\nimport { each, mod, toRadian, uniqueId } from '@antv/util';\nimport { createSVGElement } from '../util/dom';\nvar regexLG = /^l\\s*\\(\\s*([\\d.]+)\\s*\\)\\s*(.*)/i;\nvar regexRG = /^r\\s*\\(\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*\\)\\s*(.*)/i;\nvar regexColorStop = /[\\d.]+:(#[^\\s]+|[^)]+\\))/gi;\nfunction addStop(steps) {\n var arr = steps.match(regexColorStop);\n if (!arr) {\n return '';\n }\n var stops = '';\n arr.sort(function (a, b) {\n a = a.split(':');\n b = b.split(':');\n return Number(a[0]) - Number(b[0]);\n });\n each(arr, function (item) {\n item = item.split(':');\n stops += \"\";\n });\n return stops;\n}\nfunction parseLineGradient(color, el) {\n var arr = regexLG.exec(color);\n var angle = mod(toRadian(parseFloat(arr[1])), Math.PI * 2);\n var steps = arr[2];\n var start;\n var end;\n if (angle >= 0 && angle < 0.5 * Math.PI) {\n start = {\n x: 0,\n y: 0\n };\n end = {\n x: 1,\n y: 1\n };\n } else if (0.5 * Math.PI <= angle && angle < Math.PI) {\n start = {\n x: 1,\n y: 0\n };\n end = {\n x: 0,\n y: 1\n };\n } else if (Math.PI <= angle && angle < 1.5 * Math.PI) {\n start = {\n x: 1,\n y: 1\n };\n end = {\n x: 0,\n y: 0\n };\n } else {\n start = {\n x: 0,\n y: 1\n };\n end = {\n x: 1,\n y: 0\n };\n }\n var tanTheta = Math.tan(angle);\n var tanTheta2 = tanTheta * tanTheta;\n var x = (end.x - start.x + tanTheta * (end.y - start.y)) / (tanTheta2 + 1) + start.x;\n var y = tanTheta * (end.x - start.x + tanTheta * (end.y - start.y)) / (tanTheta2 + 1) + start.y;\n el.setAttribute('x1', start.x);\n el.setAttribute('y1', start.y);\n el.setAttribute('x2', x);\n el.setAttribute('y2', y);\n el.innerHTML = addStop(steps);\n}\nfunction parseRadialGradient(color, self) {\n var arr = regexRG.exec(color);\n var cx = parseFloat(arr[1]);\n var cy = parseFloat(arr[2]);\n var r = parseFloat(arr[3]);\n var steps = arr[4];\n self.setAttribute('cx', cx);\n self.setAttribute('cy', cy);\n self.setAttribute('r', r);\n self.innerHTML = addStop(steps);\n}\nvar Gradient = /** @class */function () {\n function Gradient(cfg) {\n this.cfg = {};\n var el = null;\n var id = uniqueId('gradient_');\n if (cfg.toLowerCase()[0] === 'l') {\n el = createSVGElement('linearGradient');\n parseLineGradient(cfg, el);\n } else {\n el = createSVGElement('radialGradient');\n parseRadialGradient(cfg, el);\n }\n el.setAttribute('id', id);\n this.el = el;\n this.id = id;\n this.cfg = cfg;\n return this;\n }\n Gradient.prototype.match = function (type, attr) {\n return this.cfg === attr;\n };\n return Gradient;\n}();\nexport default Gradient;","/**\n * @fileoverview shadow\n * @author dengfuping_develop@163.com\n */\nimport { each, uniqueId } from '@antv/util';\nimport { createSVGElement } from '../util/dom';\nvar ATTR_MAP = {\n shadowColor: 'color',\n shadowOpacity: 'opacity',\n shadowBlur: 'blur',\n shadowOffsetX: 'dx',\n shadowOffsetY: 'dy'\n};\nvar SHADOW_DIMENSION = {\n x: '-40%',\n y: '-40%',\n width: '200%',\n height: '200%'\n};\nvar Shadow = /** @class */function () {\n function Shadow(cfg) {\n this.type = 'filter';\n this.cfg = {};\n this.type = 'filter';\n var el = createSVGElement('filter');\n // expand the filter region to fill in shadows\n each(SHADOW_DIMENSION, function (v, k) {\n el.setAttribute(k, v);\n });\n this.el = el;\n this.id = uniqueId('filter_');\n this.el.id = this.id;\n this.cfg = cfg;\n this._parseShadow(cfg, el);\n return this;\n }\n Shadow.prototype.match = function (type, cfg) {\n if (this.type !== type) {\n return false;\n }\n var flag = true;\n var config = this.cfg;\n each(Object.keys(config), function (attr) {\n if (config[attr] !== cfg[attr]) {\n flag = false;\n return false;\n }\n });\n return flag;\n };\n Shadow.prototype.update = function (name, value) {\n var config = this.cfg;\n config[ATTR_MAP[name]] = value;\n this._parseShadow(config, this.el);\n return this;\n };\n Shadow.prototype._parseShadow = function (config, el) {\n var child = \"\";\n el.innerHTML = child;\n };\n return Shadow;\n}();\nexport default Shadow;","/**\n * @fileoverview arrow\n * @author dengfuping_develop@163.com\n */\nimport { isArray, uniqueId } from '@antv/util';\nimport { createSVGElement } from '../util/dom';\nvar Arrow = /** @class */function () {\n function Arrow(attrs, type) {\n this.cfg = {};\n var el = createSVGElement('marker');\n var id = uniqueId('marker_');\n el.setAttribute('id', id);\n var shape = createSVGElement('path');\n shape.setAttribute('stroke', attrs.stroke || 'none');\n shape.setAttribute('fill', attrs.fill || 'none');\n el.appendChild(shape);\n el.setAttribute('overflow', 'visible');\n el.setAttribute('orient', 'auto-start-reverse');\n this.el = el;\n this.child = shape;\n this.id = id;\n var cfg = attrs[type === 'marker-start' ? 'startArrow' : 'endArrow'];\n this.stroke = attrs.stroke || '#000';\n if (cfg === true) {\n this._setDefaultPath(type, shape);\n } else {\n this.cfg = cfg; // when arrow config exists\n this._setMarker(attrs.lineWidth, shape);\n }\n return this;\n }\n Arrow.prototype.match = function () {\n return false;\n };\n Arrow.prototype._setDefaultPath = function (type, el) {\n var parent = this.el;\n // 默认箭头的边长为 10,夹角为 60 度\n el.setAttribute('d', \"M0,0 L\" + 10 * Math.cos(Math.PI / 6) + \",5 L0,10\");\n parent.setAttribute('refX', \"\" + 10 * Math.cos(Math.PI / 6));\n parent.setAttribute('refY', \"\" + 5);\n };\n Arrow.prototype._setMarker = function (r, el) {\n var parent = this.el;\n var path = this.cfg.path;\n var d = this.cfg.d;\n if (isArray(path)) {\n path = path.map(function (segment) {\n return segment.join(' ');\n }).join('');\n }\n el.setAttribute('d', path);\n parent.appendChild(el);\n if (d) {\n parent.setAttribute('refX', \"\" + d / r);\n }\n };\n Arrow.prototype.update = function (fill) {\n var child = this.child;\n if (child.attr) {\n child.attr('fill', fill);\n } else {\n child.setAttribute('fill', fill);\n }\n };\n return Arrow;\n}();\nexport default Arrow;","/**\n * @fileoverview clip\n * @author dengfuping_develop@163.com\n */\nimport { uniqueId } from '@antv/util';\nimport { createSVGElement } from '../util/dom';\nvar Clip = /** @class */function () {\n function Clip(cfg) {\n this.type = 'clip';\n this.cfg = {};\n var el = createSVGElement('clipPath');\n this.el = el;\n this.id = uniqueId('clip_');\n el.id = this.id;\n var shapeEl = cfg.cfg.el;\n el.appendChild(shapeEl);\n this.cfg = cfg;\n return this;\n }\n Clip.prototype.match = function () {\n return false;\n };\n Clip.prototype.remove = function () {\n var el = this.el;\n el.parentNode.removeChild(el);\n };\n return Clip;\n}();\nexport default Clip;","/**\n * @fileoverview pattern\n * @author dengfuping_develop@163.com\n */\nimport { uniqueId } from '@antv/util';\nimport { createSVGElement } from '../util/dom';\nvar regexPR = /^p\\s*\\(\\s*([axyn])\\s*\\)\\s*(.*)/i;\nvar Pattern = /** @class */function () {\n function Pattern(cfg) {\n this.cfg = {};\n var el = createSVGElement('pattern');\n el.setAttribute('patternUnits', 'userSpaceOnUse');\n var child = createSVGElement('image');\n el.appendChild(child);\n var id = uniqueId('pattern_');\n el.id = id;\n this.el = el;\n this.id = id;\n this.cfg = cfg;\n var arr = regexPR.exec(cfg);\n var source = arr[2];\n child.setAttribute('href', source);\n var img = new Image();\n if (!source.match(/^data:/i)) {\n img.crossOrigin = 'Anonymous';\n }\n img.src = source;\n function onload() {\n el.setAttribute('width', \"\" + img.width);\n el.setAttribute('height', \"\" + img.height);\n }\n if (img.complete) {\n onload();\n } else {\n img.onload = onload;\n // Fix onload() bug in IE9\n img.src = img.src;\n }\n return this;\n }\n Pattern.prototype.match = function (type, attr) {\n return this.cfg === attr;\n };\n return Pattern;\n}();\nexport default Pattern;","/**\n * @fileoverview defs\n * @author dengfuping_develop@163.com\n */\nimport { uniqueId } from '@antv/util';\nimport Gradient from './gradient';\nimport Shadow from './shadow';\nimport Arrow from './arrow';\nimport Clip from './clip';\nimport Pattern from './pattern';\nimport { createSVGElement } from '../util/dom';\nvar Defs = /** @class */function () {\n function Defs(canvas) {\n var el = createSVGElement('defs');\n var id = uniqueId('defs_');\n el.id = id;\n canvas.appendChild(el);\n this.children = [];\n this.defaultArrow = {};\n this.el = el;\n this.canvas = canvas;\n }\n Defs.prototype.find = function (type, attr) {\n var children = this.children;\n var result = null;\n for (var i = 0; i < children.length; i++) {\n if (children[i].match(type, attr)) {\n result = children[i].id;\n break;\n }\n }\n return result;\n };\n Defs.prototype.findById = function (id) {\n var children = this.children;\n var flag = null;\n for (var i = 0; i < children.length; i++) {\n if (children[i].id === id) {\n flag = children[i];\n break;\n }\n }\n return flag;\n };\n Defs.prototype.add = function (item) {\n this.children.push(item);\n item.canvas = this.canvas;\n item.parent = this;\n };\n Defs.prototype.getDefaultArrow = function (attrs, name) {\n var stroke = attrs.stroke || attrs.strokeStyle;\n if (this.defaultArrow[stroke]) {\n return this.defaultArrow[stroke].id;\n }\n var arrow = new Arrow(attrs, name);\n this.defaultArrow[stroke] = arrow;\n this.el.appendChild(arrow.el);\n this.add(arrow);\n return arrow.id;\n };\n Defs.prototype.addGradient = function (cfg) {\n var gradient = new Gradient(cfg);\n this.el.appendChild(gradient.el);\n this.add(gradient);\n return gradient.id;\n };\n Defs.prototype.addArrow = function (attrs, name) {\n var arrow = new Arrow(attrs, name);\n this.el.appendChild(arrow.el);\n this.add(arrow);\n return arrow.id;\n };\n Defs.prototype.addShadow = function (cfg) {\n var shadow = new Shadow(cfg);\n this.el.appendChild(shadow.el);\n this.add(shadow);\n return shadow.id;\n };\n Defs.prototype.addPattern = function (cfg) {\n var pattern = new Pattern(cfg);\n this.el.appendChild(pattern.el);\n this.add(pattern);\n return pattern.id;\n };\n Defs.prototype.addClip = function (cfg) {\n var clip = new Clip(cfg);\n this.el.appendChild(clip.el);\n this.add(clip);\n return clip.id;\n };\n return Defs;\n}();\nexport default Defs;","import { __assign, __extends } from \"tslib\";\nimport { AbstractCanvas } from '@antv/g-base';\nimport { SHAPE_TO_TAGS } from './constant';\nimport { drawChildren } from './util/draw';\nimport { setTransform, setClip } from './util/svg';\nimport { sortDom, createSVGElement } from './util/dom';\nimport * as Shape from './shape';\nimport Group from './group';\nimport Defs from './defs';\nvar Canvas = /** @class */function (_super) {\n __extends(Canvas, _super);\n function Canvas(cfg) {\n return _super.call(this, __assign(__assign({}, cfg), {\n autoDraw: true,\n // 设置渲染引擎为 canvas,只读属性\n renderer: 'svg'\n })) || this;\n }\n Canvas.prototype.getShapeBase = function () {\n return Shape;\n };\n Canvas.prototype.getGroupBase = function () {\n return Group;\n };\n // 覆盖 Container 中通过遍历的方式获取 shape 对象的逻辑,直接走 SVG 的 dom 拾取即可\n Canvas.prototype.getShape = function (x, y, ev) {\n var target = ev.target || ev.srcElement;\n if (!SHAPE_TO_TAGS[target.tagName]) {\n var parent_1 = target.parentNode;\n while (parent_1 && !SHAPE_TO_TAGS[parent_1.tagName]) {\n parent_1 = parent_1.parentNode;\n }\n target = parent_1;\n }\n return this.find(function (child) {\n return child.get('el') === target;\n });\n };\n // 复写基类的方法生成标签\n Canvas.prototype.createDom = function () {\n var element = createSVGElement('svg');\n var context = new Defs(element);\n element.setAttribute('width', \"\" + this.get('width'));\n element.setAttribute('height', \"\" + this.get('height'));\n // 缓存 context 对象\n this.set('context', context);\n return element;\n };\n /**\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n Canvas.prototype.onCanvasChange = function (changeType) {\n var context = this.get('context');\n var el = this.get('el');\n if (changeType === 'sort') {\n var children_1 = this.get('children');\n if (children_1 && children_1.length) {\n sortDom(this, function (a, b) {\n return children_1.indexOf(a) - children_1.indexOf(b) ? 1 : 0;\n });\n }\n } else if (changeType === 'clear') {\n // el maybe null for canvas\n if (el) {\n // 清空 SVG 元素\n el.innerHTML = '';\n var defsEl = context.el;\n // 清空 defs 元素\n defsEl.innerHTML = '';\n // 将清空后的 defs 元素挂载到 el 下\n el.appendChild(defsEl);\n }\n } else if (changeType === 'matrix') {\n setTransform(this);\n } else if (changeType === 'clip') {\n setClip(this, context);\n } else if (changeType === 'changeSize') {\n el.setAttribute('width', \"\" + this.get('width'));\n el.setAttribute('height', \"\" + this.get('height'));\n }\n };\n // 复写基类的 draw 方法\n Canvas.prototype.draw = function () {\n var context = this.get('context');\n var children = this.getChildren();\n setClip(this, context);\n if (children.length) {\n drawChildren(context, children);\n }\n };\n return Canvas;\n}(AbstractCanvas);\nexport default Canvas;","import * as Shape from './shape';\nexport * from '@antv/g-base';\nexport { default as Canvas } from './canvas';\nexport { default as Group } from './group';\nexport { Shape };\nexport var version = '0.5.6';","import { __extends, __values } from \"tslib\";\nimport { FIELD_ORIGIN } from '../constant';\nimport Geometry from './base';\nimport Element from './element';\n/** 引入对应的 ShapeFactory */\nimport './shape/line';\nimport { isModelChange } from './util/is-model-change';\nimport { diff } from './util/diff';\n/**\n * Path 几何标记。\n * 用于绘制路径图等。\n */\nvar Path = /** @class */function (_super) {\n __extends(Path, _super);\n function Path(cfg) {\n var _this = _super.call(this, cfg) || this;\n _this.type = 'path';\n _this.shapeType = 'line';\n var _a = cfg.connectNulls,\n connectNulls = _a === void 0 ? false : _a,\n _b = cfg.showSinglePoint,\n showSinglePoint = _b === void 0 ? true : _b;\n _this.connectNulls = connectNulls;\n _this.showSinglePoint = showSinglePoint;\n return _this;\n }\n /**\n * 创建所有的 Element 实例,对于 Path、Line、Area,一组数据对应一个 Element。\n * @param mappingData\n * @param [isUpdate]\n * @returns elements\n */\n Path.prototype.updateElements = function (mappingDataArray, isUpdate) {\n var e_1, _a, e_2, _b, e_3, _c;\n if (isUpdate === void 0) {\n isUpdate = false;\n }\n // Path 的每个 element 对应一组数据\n var keyData = new Map();\n var keyIndex = new Map();\n var keys = [];\n var index = 0;\n for (var i = 0; i < mappingDataArray.length; i++) {\n var mappingData = mappingDataArray[i];\n var key = this.getElementId(mappingData);\n keys.push(key);\n keyData.set(key, mappingData);\n keyIndex.set(key, index);\n index++;\n }\n this.elements = new Array(index);\n var _d = diff(this.lastElementsMap, keys),\n added = _d.added,\n updated = _d.updated,\n removed = _d.removed;\n try {\n for (var added_1 = __values(added), added_1_1 = added_1.next(); !added_1_1.done; added_1_1 = added_1.next()) {\n var key = added_1_1.value;\n var mappingData = keyData.get(key);\n var shapeFactory = this.getShapeFactory();\n var shapeCfg = this.getShapeInfo(mappingData);\n var i = keyIndex.get(key);\n var element = new Element({\n shapeFactory: shapeFactory,\n container: this.container,\n offscreenGroup: this.getOffscreenGroup(),\n elementIndex: i\n });\n element.geometry = this;\n element.animate = this.animateOption;\n element.draw(shapeCfg, isUpdate); // 绘制 shape\n this.elementsMap[key] = element;\n this.elements[i] = element;\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (added_1_1 && !added_1_1.done && (_a = added_1.return)) _a.call(added_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n try {\n for (var updated_1 = __values(updated), updated_1_1 = updated_1.next(); !updated_1_1.done; updated_1_1 = updated_1.next()) {\n var key = updated_1_1.value;\n var mappingData = keyData.get(key);\n var element = this.lastElementsMap[key];\n var i = keyIndex.get(key);\n var shapeCfg = this.getShapeInfo(mappingData);\n var preShapeCfg = element.getModel();\n if (this.isCoordinateChanged || isModelChange(preShapeCfg, shapeCfg)) {\n element.animate = this.animateOption;\n // 通过绘制数据的变更来判断是否需要更新,因为用户有可能会修改图形属性映射\n element.update(shapeCfg); // 更新对应的 element\n }\n\n this.elementsMap[key] = element;\n this.elements[i] = element;\n }\n } catch (e_2_1) {\n e_2 = {\n error: e_2_1\n };\n } finally {\n try {\n if (updated_1_1 && !updated_1_1.done && (_b = updated_1.return)) _b.call(updated_1);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n try {\n for (var removed_1 = __values(removed), removed_1_1 = removed_1.next(); !removed_1_1.done; removed_1_1 = removed_1.next()) {\n var key = removed_1_1.value;\n var element = this.lastElementsMap[key];\n // 更新动画配置,用户有可能在更新之前有对动画进行配置操作\n element.animate = this.animateOption;\n element.destroy();\n }\n } catch (e_3_1) {\n e_3 = {\n error: e_3_1\n };\n } finally {\n try {\n if (removed_1_1 && !removed_1_1.done && (_c = removed_1.return)) _c.call(removed_1);\n } finally {\n if (e_3) throw e_3.error;\n }\n }\n };\n /**\n * 获取组成一条线(一组数据)的所有点以及数据\n * @param mappingData 映射后的数组\n */\n Path.prototype.getPointsAndData = function (mappingData) {\n var points = [];\n var data = [];\n for (var i = 0, len = mappingData.length; i < len; i++) {\n var obj = mappingData[i];\n points.push({\n x: obj.x,\n y: obj.y\n });\n data.push(obj[FIELD_ORIGIN]);\n }\n return {\n points: points,\n data: data\n };\n };\n Path.prototype.getShapeInfo = function (mappingData) {\n var shapeCfg = this.getDrawCfg(mappingData[0]);\n var _a = this.getPointsAndData(mappingData),\n points = _a.points,\n data = _a.data;\n shapeCfg.mappingData = mappingData;\n shapeCfg.data = data;\n shapeCfg.isStack = !!this.getAdjust('stack');\n shapeCfg.points = points;\n shapeCfg.connectNulls = this.connectNulls;\n shapeCfg.showSinglePoint = this.showSinglePoint;\n return shapeCfg;\n };\n return Path;\n}(Geometry);\nexport default Path;","import { each } from '@antv/util';\nimport { getPathPoints } from '../util/get-path-points';\nimport { getStyle } from '../util/get-style';\nimport { getLinePath, getSplinePath } from '../util/path';\nfunction getPath(points, isInCircle, smooth, registeredShape, constraint) {\n var path = [];\n if (points.length) {\n var topLinePoints_1 = []; // area 区域上部分\n var bottomLinePoints_1 = []; // area 区域下部分\n for (var i = 0, len = points.length; i < len; i++) {\n var point = points[i];\n topLinePoints_1.push(point[1]);\n bottomLinePoints_1.push(point[0]);\n }\n bottomLinePoints_1 = bottomLinePoints_1.reverse();\n each([topLinePoints_1, bottomLinePoints_1], function (pointsData, index) {\n var subPath = [];\n var parsedPoints = registeredShape.parsePoints(pointsData);\n var p1 = parsedPoints[0];\n if (topLinePoints_1.length === 1 && bottomLinePoints_1.length === 1) {\n // 都只有一个点,绘制一条竖线\n subPath = index === 0 ? [['M', p1.x - 0.5, p1.y], ['L', p1.x + 0.5, p1.y]] : [['L', p1.x + 0.5, p1.y], ['L', p1.x - 0.5, p1.y]];\n } else {\n if (isInCircle) {\n parsedPoints.push({\n x: p1.x,\n y: p1.y\n });\n }\n if (smooth) {\n subPath = getSplinePath(parsedPoints, false, constraint);\n } else {\n subPath = getLinePath(parsedPoints, false);\n }\n if (index > 0) {\n subPath[0][0] = 'L';\n }\n }\n path = path.concat(subPath);\n });\n path.push(['Z']);\n }\n return path;\n}\n/**\n * @ignore\n * Gets shape attrs\n * @param cfg\n * @param isStroke\n * @param smooth\n * @param registeredShape\n * @param [constraint]\n * @returns\n */\nexport function getShapeAttrs(cfg, isStroke, smooth, registeredShape, constraint) {\n var attrs = getStyle(cfg, isStroke, !isStroke, 'lineWidth');\n var connectNulls = cfg.connectNulls,\n isInCircle = cfg.isInCircle,\n points = cfg.points,\n showSinglePoint = cfg.showSinglePoint;\n var pathPoints = getPathPoints(points, connectNulls, showSinglePoint); // 根据 connectNulls 配置获取图形关键点\n var path = [];\n for (var i = 0, len = pathPoints.length; i < len; i++) {\n var eachPoints = pathPoints[i];\n path = path.concat(getPath(eachPoints, isInCircle, smooth, registeredShape, constraint));\n }\n attrs.path = path;\n return attrs;\n}\n/**\n * @ignore\n * Gets constraint\n * @param coordinate\n * @returns constraint\n */\nexport function getConstraint(coordinate) {\n var start = coordinate.start,\n end = coordinate.end;\n return [[start.x, end.y], [end.x, start.y]];\n}","import { isArray } from '@antv/util';\nimport { registerShape, registerShapeFactory } from '../base';\nimport { getShapeAttrs } from './util';\nvar AreaShapeFactory = registerShapeFactory('area', {\n defaultShapeType: 'area',\n getDefaultPoints: function getDefaultPoints(pointInfo) {\n // area 基本标记的绘制需要获取上下两边的顶点\n var x = pointInfo.x,\n y0 = pointInfo.y0;\n var y = isArray(pointInfo.y) ? pointInfo.y : [y0, pointInfo.y];\n return y.map(function (yItem) {\n return {\n x: x,\n y: yItem\n };\n });\n }\n});\n// Area 几何标记默认的 shape:填充的区域图\nregisterShape('area', 'area', {\n draw: function draw(cfg, container) {\n var attrs = getShapeAttrs(cfg, false, false, this);\n var shape = container.addShape({\n type: 'path',\n attrs: attrs,\n name: 'area'\n });\n return shape;\n },\n getMarker: function getMarker(markerCfg) {\n var color = markerCfg.color;\n return {\n symbol: function symbol(x, y, r) {\n if (r === void 0) {\n r = 5.5;\n }\n return [['M', x - r, y - 4], ['L', x + r, y - 4], ['L', x + r, y + 4], ['L', x - r, y + 4], ['Z']];\n },\n style: {\n r: 5,\n fill: color,\n fillOpacity: 1\n }\n };\n }\n});\nexport default AreaShapeFactory;","import { __extends } from \"tslib\";\nimport { FIELD_ORIGIN } from '../constant';\nimport Path from './path';\nimport './shape/area';\n/**\n * Area 几何标记类。\n * 常用于绘制面积图。\n */\nvar Area = /** @class */function (_super) {\n __extends(Area, _super);\n function Area(cfg) {\n var _this = _super.call(this, cfg) || this;\n _this.type = 'area';\n _this.shapeType = 'area';\n /** 生成图形关键点 */\n _this.generatePoints = true;\n /**\n * 面积图是否从 0 基准线开始填充。\n * 1. 默认值为 `true`,表现如下:\n * ![image](https://gw.alipayobjects.com/zos/rmsportal/ZQqwUCczalrKqGgagOVp.png)\n * 2. 当值为 `false` 时,表现如下:\n * ![image](https://gw.alipayobjects.com/zos/rmsportal/yPswkaXvUpCYOdhocGwB.png)\n */\n _this.startOnZero = true;\n var _a = cfg.startOnZero,\n startOnZero = _a === void 0 ? true : _a,\n _b = cfg.sortable,\n sortable = _b === void 0 ? false : _b,\n _c = cfg.showSinglePoint,\n showSinglePoint = _c === void 0 ? false : _c;\n _this.startOnZero = startOnZero; // 默认为 true\n _this.sortable = sortable; // 关闭默认的 X 轴数据排序\n _this.showSinglePoint = showSinglePoint;\n return _this;\n }\n /**\n * 获取图形绘制的关键点以及数据\n * @param mappingData 映射后的数据\n */\n Area.prototype.getPointsAndData = function (mappingData) {\n var points = [];\n var data = [];\n for (var i = 0, len = mappingData.length; i < len; i++) {\n var obj = mappingData[i];\n points.push(obj.points);\n data.push(obj[FIELD_ORIGIN]);\n }\n return {\n points: points,\n data: data\n };\n };\n /**\n * 获取 Y 轴上的最小值\n * @returns y 字段最小值\n */\n Area.prototype.getYMinValue = function () {\n if (this.startOnZero) {\n return _super.prototype.getYMinValue.call(this);\n }\n var yScale = this.getYScale();\n return yScale.min;\n };\n return Area;\n}(Path);\nexport default Area;","import { __assign } from \"tslib\";\nimport { registerShape, registerShapeFactory } from '../base';\nimport { getStyle } from '../util/get-style';\nimport { getLinePath } from '../util/path';\nimport { splitPoints } from '../util/split-points';\nvar EdgeShapeFactory = registerShapeFactory('edge', {\n defaultShapeType: 'line',\n getDefaultPoints: function getDefaultPoints(pointInfo) {\n return splitPoints(pointInfo);\n }\n});\nregisterShape('edge', 'line', {\n draw: function draw(cfg, container) {\n var style = getStyle(cfg, true, false, 'lineWidth');\n var path = getLinePath(this.parsePoints(cfg.points), this.coordinate.isPolar);\n return container.addShape('path', {\n attrs: __assign(__assign({}, style), {\n path: path\n })\n });\n },\n getMarker: function getMarker(markerCfg) {\n return {\n symbol: 'circle',\n style: {\n r: 4.5,\n fill: markerCfg.color\n }\n };\n }\n});\nexport default EdgeShapeFactory;","import { __extends } from \"tslib\";\nimport Geometry from './base';\nimport './shape/edge';\n/**\n * Edge 几何标记,用于绘制关系图中的**边**图形,如:\n * 1. 流程图\n * 2. 树\n * 3. 弧长连接图\n * 4. 和弦图\n * 5. 桑基图\n */\nvar Edge = /** @class */function (_super) {\n __extends(Edge, _super);\n function Edge() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'edge';\n _this.shapeType = 'edge';\n _this.generatePoints = true;\n return _this;\n }\n return Edge;\n}(Geometry);\nexport default Edge;","import { __assign, __extends, __values } from \"tslib\";\nimport ColorUtil from '@antv/color-util';\nimport { get, isNumber } from '@antv/util';\nimport { FIELD_ORIGIN } from '../constant';\nimport Geometry from './base';\n/**\n * 用于绘制热力图。\n */\nvar Heatmap = /** @class */function (_super) {\n __extends(Heatmap, _super);\n function Heatmap() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'heatmap';\n _this.paletteCache = {};\n return _this;\n }\n Heatmap.prototype.updateElements = function (mappingDataArray, isUpdate) {\n if (isUpdate === void 0) {\n isUpdate = false;\n }\n for (var i = 0; i < mappingDataArray.length; i++) {\n var mappingData = mappingDataArray[i];\n var range = this.prepareRange(mappingData);\n var radius = this.prepareSize();\n var blur_1 = get(this.styleOption, ['cfg', 'shadowBlur']);\n if (!isNumber(blur_1)) {\n blur_1 = radius / 2;\n }\n this.prepareGreyScaleBlurredCircle(radius, blur_1);\n this.drawWithRange(mappingData, range, radius, blur_1);\n }\n };\n /** 热力图暂时不支持 callback 回调(文档需要说明下) */\n Heatmap.prototype.color = function (field, cfg) {\n this.createAttrOption('color', field, typeof cfg !== 'function' ? cfg : '');\n return this;\n };\n /**\n * clear\n */\n Heatmap.prototype.clear = function () {\n _super.prototype.clear.call(this);\n this.clearShadowCanvasCtx();\n this.paletteCache = {};\n };\n Heatmap.prototype.prepareRange = function (data) {\n var colorAttr = this.getAttribute('color');\n var colorField = colorAttr.getFields()[0];\n var min = Infinity;\n var max = -Infinity;\n data.forEach(function (row) {\n var value = row[FIELD_ORIGIN][colorField];\n if (value > max) {\n max = value;\n }\n if (value < min) {\n min = value;\n }\n });\n if (min === max) {\n min = max - 1;\n }\n return [min, max];\n };\n Heatmap.prototype.prepareSize = function () {\n var radius = this.getDefaultValue('size');\n if (!isNumber(radius)) {\n radius = this.getDefaultSize();\n }\n return radius;\n };\n Heatmap.prototype.prepareGreyScaleBlurredCircle = function (radius, blur) {\n var grayScaleBlurredCanvas = this.getGrayScaleBlurredCanvas();\n var r2 = radius + blur;\n var ctx = grayScaleBlurredCanvas.getContext('2d');\n grayScaleBlurredCanvas.width = grayScaleBlurredCanvas.height = r2 * 2;\n ctx.clearRect(0, 0, grayScaleBlurredCanvas.width, grayScaleBlurredCanvas.height);\n ctx.shadowOffsetX = ctx.shadowOffsetY = r2 * 2;\n ctx.shadowBlur = blur;\n ctx.shadowColor = 'black';\n ctx.beginPath();\n ctx.arc(-r2, -r2, radius, 0, Math.PI * 2, true);\n ctx.closePath();\n ctx.fill();\n };\n Heatmap.prototype.drawWithRange = function (data, range, radius, blur) {\n var e_1, _a;\n // canvas size\n var _b = this.coordinate,\n start = _b.start,\n end = _b.end;\n var width = this.coordinate.getWidth();\n var height = this.coordinate.getHeight();\n // value, range, etc\n var colorAttr = this.getAttribute('color');\n var valueField = colorAttr.getFields()[0];\n // prepare shadow canvas context\n this.clearShadowCanvasCtx();\n var ctx = this.getShadowCanvasCtx();\n // filter data\n if (range) {\n data = data.filter(function (row) {\n return row[FIELD_ORIGIN][valueField] <= range[1] && row[FIELD_ORIGIN][valueField] >= range[0];\n });\n }\n // step1. draw points with shadow\n var scale = this.scales[valueField];\n try {\n for (var data_1 = __values(data), data_1_1 = data_1.next(); !data_1_1.done; data_1_1 = data_1.next()) {\n var obj = data_1_1.value;\n var _c = this.getDrawCfg(obj),\n x = _c.x,\n y = _c.y;\n var alpha = scale.scale(obj[FIELD_ORIGIN][valueField]);\n this.drawGrayScaleBlurredCircle(x - start.x, y - end.y, radius + blur, alpha, ctx);\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (data_1_1 && !data_1_1.done && (_a = data_1.return)) _a.call(data_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n // step2. convert pixels\n var colored = ctx.getImageData(0, 0, width, height);\n this.clearShadowCanvasCtx();\n this.colorize(colored);\n ctx.putImageData(colored, 0, 0);\n var imageShape = this.getImageShape();\n imageShape.attr('x', start.x);\n imageShape.attr('y', end.y);\n imageShape.attr('width', width);\n imageShape.attr('height', height);\n imageShape.attr('img', ctx.canvas);\n imageShape.set('origin', this.getShapeInfo(data)); // 存储绘图信息数据\n };\n\n Heatmap.prototype.getDefaultSize = function () {\n var position = this.getAttribute('position');\n var coordinate = this.coordinate;\n return Math.min(coordinate.getWidth() / (position.scales[0].ticks.length * 4), coordinate.getHeight() / (position.scales[1].ticks.length * 4));\n };\n Heatmap.prototype.clearShadowCanvasCtx = function () {\n var ctx = this.getShadowCanvasCtx();\n ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);\n };\n Heatmap.prototype.getShadowCanvasCtx = function () {\n var canvas = this.shadowCanvas;\n if (!canvas) {\n canvas = document.createElement('canvas');\n this.shadowCanvas = canvas;\n }\n canvas.width = this.coordinate.getWidth();\n canvas.height = this.coordinate.getHeight();\n return canvas.getContext('2d');\n };\n Heatmap.prototype.getGrayScaleBlurredCanvas = function () {\n if (!this.grayScaleBlurredCanvas) {\n this.grayScaleBlurredCanvas = document.createElement('canvas');\n }\n return this.grayScaleBlurredCanvas;\n };\n Heatmap.prototype.drawGrayScaleBlurredCircle = function (x, y, r, alpha, ctx) {\n var grayScaleBlurredCanvas = this.getGrayScaleBlurredCanvas();\n ctx.globalAlpha = alpha;\n ctx.drawImage(grayScaleBlurredCanvas, x - r, y - r);\n };\n Heatmap.prototype.colorize = function (img) {\n var colorAttr = this.getAttribute('color');\n var pixels = img.data;\n var paletteCache = this.paletteCache;\n for (var i = 3; i < pixels.length; i += 4) {\n var alpha = pixels[i]; // get gradient color from opacity value\n if (isNumber(alpha)) {\n var palette = paletteCache[alpha] ? paletteCache[alpha] : ColorUtil.rgb2arr(colorAttr.gradient(alpha / 256));\n pixels[i - 3] = palette[0];\n pixels[i - 2] = palette[1];\n pixels[i - 1] = palette[2];\n pixels[i] = alpha;\n }\n }\n };\n Heatmap.prototype.getImageShape = function () {\n var imageShape = this.imageShape;\n if (imageShape) {\n return imageShape;\n }\n var container = this.container;\n imageShape = container.addShape({\n type: 'image',\n attrs: {}\n });\n this.imageShape = imageShape;\n return imageShape;\n };\n Heatmap.prototype.getShapeInfo = function (mappingData) {\n var shapeCfg = this.getDrawCfg(mappingData[0]);\n var data = mappingData.map(function (obj) {\n return obj[FIELD_ORIGIN];\n });\n return __assign(__assign({}, shapeCfg), {\n mappingData: mappingData,\n data: data\n });\n };\n return Heatmap;\n}(Geometry);\nexport default Heatmap;","import { __read, __spreadArray } from \"tslib\";\nimport { isArray, isNil, get } from '@antv/util';\nimport { getAngle, getSectorPath } from '../../../util/graphics';\n/**\n * @ignore\n * 根据数据点生成矩形的四个关键点\n * @param pointInfo 数据点信息\n * @param [isPyramid] 是否为尖底漏斗图\n * @returns rect points 返回矩形四个顶点信息\n */\nexport function getRectPoints(pointInfo) {\n var _a, _b;\n var x = pointInfo.x,\n y = pointInfo.y,\n y0 = pointInfo.y0,\n size = pointInfo.size;\n // 有 4 种情况,\n // 1. x, y 都不是数组\n // 2. y是数组,x不是\n // 3. x是数组,y不是\n // 4. x, y 都是数组\n var yMin;\n var yMax;\n if (isArray(y)) {\n _a = __read(y, 2), yMin = _a[0], yMax = _a[1];\n } else {\n yMin = y0;\n yMax = y;\n }\n var xMin;\n var xMax;\n if (isArray(x)) {\n _b = __read(x, 2), xMin = _b[0], xMax = _b[1];\n } else {\n xMin = x - size / 2;\n xMax = x + size / 2;\n }\n var points = [{\n x: xMin,\n y: yMin\n }, {\n x: xMin,\n y: yMax\n }];\n // 矩形的四个关键点,结构如下(左下角顺时针连接)\n // 1 ---- 2\n // | |\n // 0 ---- 3\n points.push({\n x: xMax,\n y: yMax\n }, {\n x: xMax,\n y: yMin\n });\n return points;\n}\n/**\n * @ignore\n * 根据矩形关键点绘制 path\n * @param points 关键点数组\n * @param isClosed path 是否需要闭合\n * @returns 返回矩形的 path\n */\nexport function getRectPath(points, isClosed) {\n if (isClosed === void 0) {\n isClosed = true;\n }\n var path = [];\n var firstPoint = points[0];\n path.push(['M', firstPoint.x, firstPoint.y]);\n for (var i = 1, len = points.length; i < len; i++) {\n path.push(['L', points[i].x, points[i].y]);\n }\n // 对于 shape=\"line\" path 不应该闭合,否则会造成 lineCap 绘图属性失效\n if (isClosed) {\n path.push(['L', firstPoint.x, firstPoint.y]); // 需要闭合\n path.push(['z']);\n }\n return path;\n}\n/**\n * 处理 rect path 的 radius\n * @returns 返回矩形 path 的四个角的 arc 半径\n */\nexport function parseRadius(radius, minLength) {\n var r1 = 0;\n var r2 = 0;\n var r3 = 0;\n var r4 = 0;\n if (isArray(radius)) {\n if (radius.length === 1) {\n r1 = r2 = r3 = r4 = radius[0];\n } else if (radius.length === 2) {\n r1 = r3 = radius[0];\n r2 = r4 = radius[1];\n } else if (radius.length === 3) {\n r1 = radius[0];\n r2 = r4 = radius[1];\n r3 = radius[2];\n } else {\n r1 = radius[0];\n r2 = radius[1];\n r3 = radius[2];\n r4 = radius[3];\n }\n } else {\n r1 = r2 = r3 = r4 = radius;\n }\n // 处理 边界值\n if (r1 + r2 > minLength) {\n r1 = r1 ? minLength / (1 + r2 / r1) : 0;\n r2 = minLength - r1;\n }\n if (r3 + r4 > minLength) {\n r3 = r3 ? minLength / (1 + r4 / r3) : 0;\n r4 = minLength - r3;\n }\n return [r1 || 0, r2 || 0, r3 || 0, r4 || 0];\n}\n/**\n * 获取 interval 矩形背景的 path\n * @param cfg 关键点的信息\n * @param points 已转化为画布坐标的 4 个关键点\n * @param coordinate 坐标系\n * @returns 返回矩形背景的 path\n */\nexport function getBackgroundRectPath(cfg, points, coordinate) {\n var path = [];\n if (coordinate.isRect) {\n var p0 = coordinate.isTransposed ? {\n x: coordinate.start.x,\n y: points[0].y\n } : {\n x: points[0].x,\n y: coordinate.start.y\n };\n var p1 = coordinate.isTransposed ? {\n x: coordinate.end.x,\n y: points[2].y\n } : {\n x: points[3].x,\n y: coordinate.end.y\n };\n // corner radius of background shape works only in 笛卡尔坐标系\n var radius = get(cfg, ['background', 'style', 'radius']);\n if (radius) {\n var width = coordinate.isTransposed ? Math.abs(points[0].y - points[2].y) : points[2].x - points[1].x;\n var height = coordinate.isTransposed ? coordinate.getWidth() : coordinate.getHeight();\n var _a = __read(parseRadius(radius, Math.min(width, height)), 4),\n r1 = _a[0],\n r2 = _a[1],\n r3 = _a[2],\n r4 = _a[3];\n // 同时存在 坐标系是否发生转置 和 y 镜像的时候\n var isReflectYTransposed_1 = coordinate.isTransposed && coordinate.isReflect('y');\n var bump = isReflectYTransposed_1 ? 0 : 1;\n var opposite = function opposite(r) {\n return isReflectYTransposed_1 ? -r : r;\n };\n path.push(['M', p0.x, p1.y + opposite(r1)]);\n r1 !== 0 && path.push(['A', r1, r1, 0, 0, bump, p0.x + r1, p1.y]);\n path.push(['L', p1.x - r2, p1.y]);\n r2 !== 0 && path.push(['A', r2, r2, 0, 0, bump, p1.x, p1.y + opposite(r2)]);\n path.push(['L', p1.x, p0.y - opposite(r3)]);\n r3 !== 0 && path.push(['A', r3, r3, 0, 0, bump, p1.x - r3, p0.y]);\n path.push(['L', p0.x + r4, p0.y]);\n r4 !== 0 && path.push(['A', r4, r4, 0, 0, bump, p0.x, p0.y - opposite(r4)]);\n } else {\n path.push(['M', p0.x, p0.y]);\n path.push(['L', p1.x, p0.y]);\n path.push(['L', p1.x, p1.y]);\n path.push(['L', p0.x, p1.y]);\n path.push(['L', p0.x, p0.y]);\n }\n path.push(['z']);\n }\n if (coordinate.isPolar) {\n var center = coordinate.getCenter();\n var _b = getAngle(cfg, coordinate),\n startAngle = _b.startAngle,\n endAngle = _b.endAngle;\n if (coordinate.type !== 'theta' && !coordinate.isTransposed) {\n // 获取扇形 path\n path = getSectorPath(center.x, center.y, coordinate.getRadius(), startAngle, endAngle);\n } else {\n var pow = function pow(v) {\n return Math.pow(v, 2);\n };\n var r1 = Math.sqrt(pow(center.x - points[0].x) + pow(center.y - points[0].y));\n var r2 = Math.sqrt(pow(center.x - points[2].x) + pow(center.y - points[2].y));\n // 获取扇形 path(其实是一个圆环,从 coordinate 的起始角度到结束角度)\n path = getSectorPath(center.x, center.y, r1, coordinate.startAngle, coordinate.endAngle, r2);\n }\n }\n return path;\n}\n/**\n * @ignore\n * 根据矩形关键点绘制 path\n * @param points 关键点数组\n * @param lineCap 'round'圆角样式\n * @param coor 坐标\n * @returns 返回矩形的 path\n */\nexport function getIntervalRectPath(points, lineCap, coor) {\n var width = coor.getWidth();\n var height = coor.getHeight();\n var isRect = coor.type === 'rect';\n var path = [];\n var r = (points[2].x - points[1].x) / 2;\n var ry = coor.isTransposed ? r * height / width : r * width / height;\n if (lineCap === 'round') {\n if (isRect) {\n path.push(['M', points[0].x, points[0].y + ry]);\n path.push(['L', points[1].x, points[1].y - ry]);\n path.push(['A', r, r, 0, 0, 1, points[2].x, points[2].y - ry]);\n path.push(['L', points[3].x, points[3].y + ry]);\n path.push(['A', r, r, 0, 0, 1, points[0].x, points[0].y + ry]);\n } else {\n path.push(['M', points[0].x, points[0].y]);\n path.push(['L', points[1].x, points[1].y]);\n path.push(['A', r, r, 0, 0, 1, points[2].x, points[2].y]);\n path.push(['L', points[3].x, points[3].y]);\n path.push(['A', r, r, 0, 0, 1, points[0].x, points[0].y]);\n }\n path.push(['z']);\n } else {\n path = getRectPath(points);\n }\n return path;\n}\n/**\n * @ignore\n * 根据 funnel 关键点绘制漏斗图的 path\n * @param points 图形关键点信息\n * @param nextPoints 下一个数据的图形关键点信息\n * @param isPyramid 是否为尖底漏斗图\n * @returns 返回漏斗图的图形 path\n */\nexport function getFunnelPath(points, nextPoints, isPyramid) {\n var path = [];\n if (!isNil(nextPoints)) {\n path.push(['M', points[0].x, points[0].y], ['L', points[1].x, points[1].y], ['L', nextPoints[1].x, nextPoints[1].y], ['L', nextPoints[0].x, nextPoints[0].y], ['Z']);\n } else if (isPyramid) {\n // 金字塔最底部\n path.push(['M', points[0].x, points[0].y], ['L', points[1].x, points[1].y], ['L', (points[2].x + points[3].x) / 2, (points[2].y + points[3].y) / 2], ['Z']);\n } else {\n // 漏斗图最底部\n path.push(['M', points[0].x, points[0].y], ['L', points[1].x, points[1].y], ['L', points[2].x, points[2].y], ['L', points[3].x, points[3].y], ['Z']);\n }\n return path;\n}\n/**\n * 交换两个对象\n */\nfunction swap(p0, p1) {\n return [p1, p0];\n}\n/**\n * 获取 倒角 矩形\n * - 目前只适用于笛卡尔坐标系下\n */\nexport function getRectWithCornerRadius(points, coordinate, radius) {\n var _a, _b, _c, _d, _e, _f, _g;\n // 获取 四个关键点\n var _h = __read(__spreadArray([], __read(points), false), 4),\n p0 = _h[0],\n p1 = _h[1],\n p2 = _h[2],\n p3 = _h[3];\n var _j = __read(typeof radius === 'number' ? Array(4).fill(radius) : radius, 4),\n r1 = _j[0],\n r2 = _j[1],\n r3 = _j[2],\n r4 = _j[3];\n if (coordinate.isTransposed) {\n _a = __read(swap(p1, p3), 2), p1 = _a[0], p3 = _a[1];\n }\n /**\n * 存在镜像\n */\n if (coordinate.isReflect('y')) {\n _b = __read(swap(p0, p1), 2), p0 = _b[0], p1 = _b[1];\n _c = __read(swap(p2, p3), 2), p2 = _c[0], p3 = _c[1];\n }\n if (coordinate.isReflect('x')) {\n _d = __read(swap(p0, p3), 2), p0 = _d[0], p3 = _d[1];\n _e = __read(swap(p1, p2), 2), p1 = _e[0], p2 = _e[1];\n }\n var path = [];\n /**\n * p1 → p2\n * ↑ ↓\n * p0 ← p3\n *\n * 负数的情况,关键点会变成下面的形式\n *\n * p0 ← p3 p2 ← p1\n * ↓ ↑ ↓ ↑\n * p1 → p2 --> (转置下) p3 → p0\n */\n var abs = function abs(v) {\n return Math.abs(v);\n };\n _f = __read(parseRadius([r1, r2, r3, r4], Math.min(abs(p3.x - p0.x), abs(p1.y - p0.y))).map(function (d) {\n return abs(d);\n }), 4), r1 = _f[0], r2 = _f[1], r3 = _f[2], r4 = _f[3];\n if (coordinate.isTransposed) {\n _g = __read([r4, r1, r2, r3], 4), r1 = _g[0], r2 = _g[1], r3 = _g[2], r4 = _g[3];\n }\n if (p0.y < p1.y /** 负数情况 */) {\n path.push(['M', p3.x, p3.y + r3]);\n r3 !== 0 && path.push(['A', r3, r3, 0, 0, 0, p3.x - r3, p3.y]);\n path.push(['L', p0.x + r4, p0.y]);\n r4 !== 0 && path.push(['A', r4, r4, 0, 0, 0, p0.x, p0.y + r4]);\n path.push(['L', p1.x, p1.y - r1]);\n r1 !== 0 && path.push(['A', r1, r1, 0, 0, 0 /** 逆时针 */, p1.x + r1, p1.y]);\n path.push(['L', p2.x - r2, p2.y]);\n r2 !== 0 && path.push(['A', r2, r2, 0, 0, 0, p2.x, p2.y - r2]);\n path.push(['L', p3.x, p3.y + r3]);\n path.push(['z']);\n } else if (p3.x < p0.x) {\n path.push(['M', p2.x + r2, p2.y]);\n r2 !== 0 && path.push(['A', r2, r2, 0, 0, 0, p2.x, p2.y + r2]);\n path.push(['L', p3.x, p3.y - r3]);\n r3 !== 0 && path.push(['A', r3, r3, 0, 0, 0, p3.x + r3, p3.y]);\n path.push(['L', p0.x - r4, p0.y]);\n r4 !== 0 && path.push(['A', r4, r4, 0, 0, 0, p0.x, p0.y - r4]);\n path.push(['L', p1.x, p1.y + r1]);\n r1 !== 0 && path.push(['A', r1, r1, 0, 0, 0, p1.x - r1, p1.y]);\n path.push(['L', p2.x + r2, p2.y]);\n path.push(['z']);\n } else {\n path.push(['M', p1.x, p1.y + r1]);\n r1 !== 0 && path.push(['A', r1, r1, 0, 0, 1, p1.x + r1, p1.y]);\n path.push(['L', p2.x - r2, p2.y]);\n r2 !== 0 && path.push(['A', r2, r2, 0, 0, 1, p2.x, p2.y + r2]);\n path.push(['L', p3.x, p3.y - r3]);\n r3 !== 0 && path.push(['A', r3, r3, 0, 0, 1, p3.x - r3, p3.y]);\n path.push(['L', p0.x + r4, p0.y]);\n r4 !== 0 && path.push(['A', r4, r4, 0, 0, 1, p0.x, p0.y - r4]);\n path.push(['L', p1.x, p1.y + r1]);\n path.push(['z']);\n }\n return path;\n}","import { __assign } from \"tslib\";\nimport { registerShape, registerShapeFactory } from '../base';\nimport { BACKGROUND_SHAPE } from '../constant';\nimport { getBackgroundRectStyle, getStyle } from '../util/get-style';\nimport { getBackgroundRectPath, getIntervalRectPath, getRectPoints, getRectWithCornerRadius } from './util';\n/** Interval 的 shape 工厂 */\nvar IntervalShapeFactory = registerShapeFactory('interval', {\n defaultShapeType: 'rect',\n getDefaultPoints: function getDefaultPoints(pointInfo) {\n return getRectPoints(pointInfo);\n }\n});\n/** Inerval 默认 shape,填充的矩形 */\nregisterShape('interval', 'rect', {\n draw: function draw(cfg, container) {\n var style = getStyle(cfg, false, true);\n var group = container;\n var backgroundCfg = cfg === null || cfg === void 0 ? void 0 : cfg.background;\n if (backgroundCfg) {\n group = container.addGroup({\n name: 'interval-group'\n });\n var backgroundStyle = getBackgroundRectStyle(cfg);\n var backgroundPath = getBackgroundRectPath(cfg, this.parsePoints(cfg.points), this.coordinate);\n group.addShape('path', {\n attrs: __assign(__assign({}, backgroundStyle), {\n path: backgroundPath\n }),\n capture: false,\n zIndex: -1,\n name: BACKGROUND_SHAPE\n });\n }\n var path;\n if (style.radius && this.coordinate.isRect) {\n path = getRectWithCornerRadius(this.parsePoints(cfg.points), this.coordinate, style.radius);\n } else {\n path = this.parsePath(getIntervalRectPath(cfg.points, style.lineCap, this.coordinate));\n }\n var shape = group.addShape('path', {\n attrs: __assign(__assign({}, style), {\n path: path\n }),\n name: 'interval'\n });\n return backgroundCfg ? group : shape;\n },\n getMarker: function getMarker(markerCfg) {\n var color = markerCfg.color,\n isInPolar = markerCfg.isInPolar;\n if (isInPolar) {\n return {\n symbol: 'circle',\n style: {\n r: 4.5,\n fill: color\n }\n };\n }\n return {\n symbol: 'square',\n style: {\n r: 4,\n fill: color\n }\n };\n }\n});\nexport default IntervalShapeFactory;","import { flatten, isString, valuesOfKey, isNil } from '@antv/util';\nimport { getXDimensionLength } from '../../util/coordinate';\n// 已经排序后的数据查找距离最小的\nfunction findMinDistance(arr, scale) {\n var count = arr.length;\n var sourceArr = arr;\n if (isString(sourceArr[0])) {\n // 日期类型的 values 经常上文本类型,所以需要转换一下\n sourceArr = arr.map(function (v) {\n return scale.translate(v);\n });\n }\n var distance = sourceArr[1] - sourceArr[0];\n for (var i = 2; i < count; i++) {\n var tmp = sourceArr[i] - sourceArr[i - 1];\n if (distance > tmp) {\n distance = tmp;\n }\n }\n return distance;\n}\nfunction getDodgeCount(dataArray, dodgeBy) {\n if (dodgeBy) {\n var mergeData = flatten(dataArray);\n var values = valuesOfKey(mergeData, dodgeBy);\n return values.length;\n }\n return dataArray.length;\n}\n/** @ignore */\nexport function getDefaultSize(geometry) {\n var theme = geometry.theme;\n var coordinate = geometry.coordinate;\n var xScale = geometry.getXScale();\n var xValues = xScale.values;\n var dataArray = geometry.beforeMappingData;\n var count = xValues.length;\n var xDimensionLength = getXDimensionLength(geometry.coordinate);\n // 获取柱宽相关配置项\n var intervalPadding = geometry.intervalPadding,\n dodgePadding = geometry.dodgePadding;\n // 兼容theme配置\n var maxColumnWidth = geometry.maxColumnWidth || theme.maxColumnWidth;\n var minColumnWidth = geometry.minColumnWidth || theme.minColumnWidth;\n var columnWidthRatio = geometry.columnWidthRatio || theme.columnWidthRatio;\n var multiplePieWidthRatio = geometry.multiplePieWidthRatio || theme.multiplePieWidthRatio;\n var roseWidthRatio = geometry.roseWidthRatio || theme.roseWidthRatio;\n // 线性情况下count值\n if (xScale.isLinear && xValues.length > 1) {\n // Linear 类型用户有可能设置了 min, max 范围所以需要根据数据最小区间计算 count\n xValues.sort();\n var interval = findMinDistance(xValues, xScale);\n count = (xScale.max - xScale.min) / interval;\n if (xValues.length > count) {\n count = xValues.length;\n }\n }\n var range = xScale.range;\n var normalizedSize = 1 / count;\n var wr = 1;\n if (coordinate.isPolar) {\n // 极坐标场景\n if (coordinate.isTransposed && count > 1) {\n // 极坐标下多层环图\n wr = multiplePieWidthRatio;\n } else {\n wr = roseWidthRatio;\n }\n } else {\n // 非极坐标场景\n if (xScale.isLinear) {\n normalizedSize *= range[1] - range[0];\n }\n wr = columnWidthRatio;\n }\n // 基础柱状图\n if (!isNil(intervalPadding) && intervalPadding >= 0) {\n // 配置组间距情况\n var normalizedIntervalPadding = intervalPadding / xDimensionLength;\n normalizedSize = (1 - (count - 1) * normalizedIntervalPadding) / count;\n } else {\n // 默认情况\n normalizedSize *= wr;\n }\n // 分组柱状图\n if (geometry.getAdjust('dodge')) {\n var dodgeAdjust = geometry.getAdjust('dodge');\n var dodgeBy = dodgeAdjust.dodgeBy;\n var dodgeCount = getDodgeCount(dataArray, dodgeBy);\n if (!isNil(dodgePadding) && dodgePadding >= 0) {\n // 仅配置组内间距情况\n var normalizedDodgePadding = dodgePadding / xDimensionLength;\n normalizedSize = (normalizedSize - normalizedDodgePadding * (dodgeCount - 1)) / dodgeCount;\n } else if (!isNil(intervalPadding) && intervalPadding >= 0) {\n // 设置组间距但未设置组内间距情况,避免组间距过小导致图形重叠,需乘以wr\n normalizedSize *= wr;\n normalizedSize = normalizedSize / dodgeCount;\n } else {\n // 组间距和组内间距均未配置\n normalizedSize = normalizedSize / dodgeCount;\n }\n normalizedSize = normalizedSize >= 0 ? normalizedSize : 0;\n }\n // 最大和最小限制\n if (!isNil(maxColumnWidth) && maxColumnWidth >= 0) {\n var normalizedMaxColumnWidth = maxColumnWidth / xDimensionLength;\n if (normalizedSize > normalizedMaxColumnWidth) {\n normalizedSize = normalizedMaxColumnWidth;\n }\n }\n // \bminColumnWidth可能设置为0\n if (!isNil(minColumnWidth) && minColumnWidth >= 0) {\n var normalizedMinColumnWidth = minColumnWidth / xDimensionLength;\n if (normalizedSize < normalizedMinColumnWidth) {\n normalizedSize = normalizedMinColumnWidth;\n }\n }\n return normalizedSize;\n}","import { __extends } from \"tslib\";\nimport { get } from '@antv/util';\nimport { getXDimensionLength } from '../util/coordinate';\nimport Geometry from './base';\n/** 引入对应的 ShapeFactory */\nimport './shape/interval';\nimport { getDefaultSize } from './util/shape-size';\nimport { getMaxScale } from '../util/scale';\n/**\n * Interval 几何标记。\n * 用于绘制柱状图、饼图、条形图、玫瑰图等。\n */\nvar Interval = /** @class */function (_super) {\n __extends(Interval, _super);\n function Interval(cfg) {\n var _this = _super.call(this, cfg) || this;\n _this.type = 'interval';\n _this.shapeType = 'interval';\n _this.generatePoints = true;\n var background = cfg.background;\n _this.background = background;\n return _this;\n }\n /**\n * 获取每条数据的 Shape 绘制信息\n * @param obj 经过分组 -> 数字化 -> adjust 调整后的数据记录\n * @returns\n */\n Interval.prototype.createShapePointsCfg = function (obj) {\n var cfg = _super.prototype.createShapePointsCfg.call(this, obj);\n // 计算每个 shape 的 size\n var size;\n var sizeAttr = this.getAttribute('size');\n if (sizeAttr) {\n size = this.getAttributeValues(sizeAttr, obj)[0];\n // 归一化\n var coordinate = this.coordinate;\n var coordinateWidth = getXDimensionLength(coordinate);\n size = size / coordinateWidth;\n } else {\n if (!this.defaultSize) {\n this.defaultSize = getDefaultSize(this);\n }\n size = this.defaultSize;\n }\n cfg.size = size;\n return cfg;\n };\n /**\n * 调整 y 轴的 scale 范围。\n * 对于 Y 轴为数值轴柱状图,默认从 0 开始 生长。\n */\n Interval.prototype.adjustScale = function () {\n _super.prototype.adjustScale.call(this);\n var yScale = this.getYScale();\n // 特殊逻辑:饼图需要填充满整个空间\n if (this.coordinate.type === 'theta') {\n yScale.change({\n nice: false,\n min: 0,\n // 发生过 stack 调整,yScale 的 max 被调整过,this.updateStackRange()\n max: getMaxScale(yScale)\n });\n } else {\n // 柱状图数值轴默认从 0 开始\n var scaleDefs = this.scaleDefs;\n var field = yScale.field,\n min = yScale.min,\n max = yScale.max,\n type = yScale.type;\n if (type !== 'time') {\n // time 类型不做调整\n // 柱状图的 Y 轴要从 0 开始生长,但是如果用户设置了则以用户的为准\n if (min > 0 && !get(scaleDefs, [field, 'min'])) {\n yScale.change({\n min: 0\n });\n }\n // 柱当柱状图全为负值时也需要从 0 开始生长,但是如果用户设置了则以用户的为准\n if (max <= 0 && !get(scaleDefs, [field, 'max'])) {\n yScale.change({\n max: 0\n });\n }\n }\n }\n };\n /**\n * @override\n */\n Interval.prototype.getDrawCfg = function (mappingData) {\n var shapeCfg = _super.prototype.getDrawCfg.call(this, mappingData);\n shapeCfg.background = this.background;\n return shapeCfg;\n };\n return Interval;\n}(Geometry);\nexport default Interval;","import { __extends } from \"tslib\";\nimport Path from './path';\n/** 引入 Path 对应的 ShapeFactory */\nimport './shape/line';\n/**\n * Line 几何标记。\n * 常用于折线图的绘制。\n */\nvar Line = /** @class */function (_super) {\n __extends(Line, _super);\n function Line(cfg) {\n var _this = _super.call(this, cfg) || this;\n _this.type = 'line';\n var _a = cfg.sortable,\n sortable = _a === void 0 ? false : _a; // 关闭默认的 X 轴数据排序\n _this.sortable = sortable;\n return _this;\n }\n return Line;\n}(Path);\nexport default Line;","import { __assign, __values } from \"tslib\";\nimport { MarkerSymbols } from '../../../util/marker';\nimport { getStyle } from '../util/get-style';\nexport var SHAPES = ['circle', 'square', 'bowtie', 'diamond', 'hexagon', 'triangle', 'triangle-down'];\nexport var HOLLOW_SHAPES = ['cross', 'tick', 'plus', 'hyphen', 'line'];\n/**\n * @ignore\n * Draws points\n * @param shape\n * @param cfg\n * @param container\n * @param shapeName\n * @param isStroke\n * @returns points\n */\nexport function drawPoints(shape, cfg, container, shapeName, isStroke) {\n var e_1, _a;\n var style = getStyle(cfg, isStroke, !isStroke, 'r');\n var points = shape.parsePoints(cfg.points);\n var pointPosition = points[0];\n if (cfg.isStack) {\n pointPosition = points[1];\n } else if (points.length > 1) {\n var group = container.addGroup();\n try {\n for (var points_1 = __values(points), points_1_1 = points_1.next(); !points_1_1.done; points_1_1 = points_1.next()) {\n var point = points_1_1.value;\n group.addShape({\n type: 'marker',\n attrs: __assign(__assign(__assign({}, style), {\n symbol: MarkerSymbols[shapeName] || shapeName\n }), point)\n });\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (points_1_1 && !points_1_1.done && (_a = points_1.return)) _a.call(points_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n return group;\n }\n return container.addShape({\n type: 'marker',\n attrs: __assign(__assign(__assign({}, style), {\n symbol: MarkerSymbols[shapeName] || shapeName\n }), pointPosition)\n });\n}","import { each } from '@antv/util';\nimport { MarkerSymbols } from '../../../util/marker';\nimport { registerShape, registerShapeFactory } from '../base';\nimport { splitPoints } from '../util/split-points';\nimport { drawPoints, SHAPES } from './util';\nvar PointShapeFactory = registerShapeFactory('point', {\n defaultShapeType: 'hollow-circle',\n getDefaultPoints: function getDefaultPoints(pointInfo) {\n return splitPoints(pointInfo);\n }\n});\neach(SHAPES, function (shapeName) {\n // 添加该 shape 对应的 hollow-shape\n registerShape('point', \"hollow-\".concat(shapeName), {\n draw: function draw(cfg, container) {\n return drawPoints(this, cfg, container, shapeName, true);\n },\n getMarker: function getMarker(markerCfg) {\n var color = markerCfg.color;\n return {\n symbol: MarkerSymbols[shapeName] || shapeName,\n style: {\n r: 4.5,\n stroke: color,\n fill: null\n }\n };\n }\n });\n});\nexport default PointShapeFactory;","import { __assign, __extends } from \"tslib\";\nimport Geometry from './base';\n/** 引入 Point 对应的 ShapeFactory */\nimport './shape/point';\n/**\n * Point 几何标记。\n * 常用于绘制点图。\n */\nvar Point = /** @class */function (_super) {\n __extends(Point, _super);\n function Point() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'point';\n _this.shapeType = 'point';\n _this.generatePoints = true;\n return _this;\n }\n /**\n * 获取一个点的绘制信息。\n * @param mappingDatum\n * @returns draw cfg\n */\n Point.prototype.getDrawCfg = function (mappingDatum) {\n var shapeCfg = _super.prototype.getDrawCfg.call(this, mappingDatum);\n return __assign(__assign({}, shapeCfg), {\n isStack: !!this.getAdjust('stack')\n });\n };\n return Point;\n}(Geometry);\nexport default Point;","import { __assign } from \"tslib\";\nimport { each, isEmpty, isEqual, last } from '@antv/util';\nimport { registerShape, registerShapeFactory } from '../base';\nimport { getStyle } from '../util/get-style';\nfunction getPath(points) {\n var flag = points[0];\n var i = 1;\n var path = [['M', flag.x, flag.y]];\n while (i < points.length) {\n var c = points[i];\n if (c.x !== points[i - 1].x || c.y !== points[i - 1].y) {\n path.push(['L', c.x, c.y]);\n if (c.x === flag.x && c.y === flag.y && i < points.length - 1) {\n flag = points[i + 1];\n path.push(['Z']);\n path.push(['M', flag.x, flag.y]);\n i++;\n }\n }\n i++;\n }\n if (!isEqual(last(path), flag)) {\n path.push(['L', flag.x, flag.y]);\n }\n path.push(['Z']);\n return path;\n}\nvar PolygonShapeFactory = registerShapeFactory('polygon', {\n defaultShapeType: 'polygon',\n getDefaultPoints: function getDefaultPoints(pointInfo) {\n var points = [];\n each(pointInfo.x, function (subX, index) {\n var subY = pointInfo.y[index];\n points.push({\n x: subX,\n y: subY\n });\n });\n return points;\n }\n});\nregisterShape('polygon', 'polygon', {\n draw: function draw(cfg, container) {\n if (!isEmpty(cfg.points)) {\n var shapeAttrs = getStyle(cfg, true, true);\n var path = this.parsePath(getPath(cfg.points));\n return container.addShape('path', {\n attrs: __assign(__assign({}, shapeAttrs), {\n path: path\n }),\n name: 'polygon'\n });\n }\n },\n getMarker: function getMarker(markerCfg) {\n var color = markerCfg.color;\n return {\n symbol: 'square',\n style: {\n r: 4,\n fill: color\n }\n };\n }\n});\nexport default PolygonShapeFactory;","import { __extends } from \"tslib\";\nimport { isArray } from '@antv/util';\nimport Geometry from './base';\n/** 引入 Path 对应的 ShapeFactory */\nimport './shape/polygon';\n/**\n * Polygon 几何标记。\n * 常用于绘制色块图、日历图等。\n */\nvar Polygon = /** @class */function (_super) {\n __extends(Polygon, _super);\n function Polygon() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'polygon';\n _this.shapeType = 'polygon';\n _this.generatePoints = true;\n return _this;\n }\n /**\n * 获取 Shape 的关键点数据。\n * @param obj\n * @returns\n */\n Polygon.prototype.createShapePointsCfg = function (obj) {\n var cfg = _super.prototype.createShapePointsCfg.call(this, obj);\n var x = cfg.x;\n var y = cfg.y;\n var temp;\n // x y 都是数组时,不做处理\n if (!(isArray(x) && isArray(y))) {\n var xScale = this.getXScale();\n var yScale = this.getYScale();\n var xCount = xScale.values.length;\n var yCount = yScale.values.length;\n var xOffset = 0.5 * 1 / xCount;\n var yOffset = 0.5 * 1 / yCount;\n if (xScale.isCategory && yScale.isCategory) {\n // 如果x,y都是分类\n x = [x - xOffset, x - xOffset, x + xOffset, x + xOffset];\n y = [y - yOffset, y + yOffset, y + yOffset, y - yOffset];\n } else if (isArray(x)) {\n // x 是数组\n temp = x;\n x = [temp[0], temp[0], temp[1], temp[1]];\n y = [y - yOffset / 2, y + yOffset / 2, y + yOffset / 2, y - yOffset / 2];\n } else if (isArray(y)) {\n // y 是数组\n temp = y;\n y = [temp[0], temp[1], temp[1], temp[0]];\n x = [x - xOffset / 2, x - xOffset / 2, x + xOffset / 2, x + xOffset / 2];\n }\n cfg.x = x;\n cfg.y = y;\n }\n return cfg;\n };\n return Polygon;\n}(Geometry);\nexport default Polygon;","import { __extends } from \"tslib\";\nimport { getXDimensionLength } from '../util/coordinate';\nimport Geometry from './base';\n/** 引入对应的 ShapeFactory */\nimport './shape/schema';\nimport { getDefaultSize } from './util/shape-size';\n/**\n * Schema 几何标记,用于一些自定义图形的绘制,比如箱型图、股票图等。\n */\nvar Schema = /** @class */function (_super) {\n __extends(Schema, _super);\n function Schema() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'schema';\n _this.shapeType = 'schema';\n _this.generatePoints = true;\n return _this;\n }\n /**\n * 获取 Shape 的关键点数据。\n * @param record\n * @returns\n */\n Schema.prototype.createShapePointsCfg = function (record) {\n var cfg = _super.prototype.createShapePointsCfg.call(this, record);\n // 计算每个 shape 的 size\n var size;\n var sizeAttr = this.getAttribute('size');\n if (sizeAttr) {\n size = this.getAttributeValues(sizeAttr, record)[0];\n // 归一化\n var coordinate = this.coordinate;\n var coordinateWidth = getXDimensionLength(coordinate);\n size = size / coordinateWidth;\n } else {\n if (!this.defaultSize) {\n this.defaultSize = getDefaultSize(this);\n }\n size = this.defaultSize;\n }\n cfg.size = size;\n return cfg;\n };\n return Schema;\n}(Geometry);\nexport default Schema;","import { registerShapeFactory } from '../base';\nvar SchemaShapeFactory = registerShapeFactory('schema', {\n defaultShapeType: '' // 'schema' is for some custom shapes, so will not specify defaultShapeType\n});\n\nexport default SchemaShapeFactory;","import { __assign } from \"tslib\";\nimport { each, max, map, isArray } from '@antv/util';\nimport { registerShape, registerShapeFactory } from '../base';\nimport { getViolinPath } from '../util/get-path-points';\nimport { getStyle } from '../util/get-style';\nfunction normalizeSize(arr) {\n if (!isArray(arr)) {\n return [];\n }\n var maxValue = max(arr);\n return map(arr, function (num) {\n return num / maxValue;\n });\n}\nvar ViolinShapeFactory = registerShapeFactory('violin', {\n defaultShapeType: 'violin',\n getDefaultPoints: function getDefaultPoints(pointInfo) {\n var radius = pointInfo.size / 2;\n var points = [];\n var sizeArr = normalizeSize(pointInfo._size);\n each(pointInfo.y, function (y, index) {\n var offset = sizeArr[index] * radius;\n var isMin = index === 0;\n var isMax = index === pointInfo.y.length - 1;\n points.push({\n isMin: isMin,\n isMax: isMax,\n x: pointInfo.x - offset,\n y: y\n });\n points.unshift({\n isMin: isMin,\n isMax: isMax,\n x: pointInfo.x + offset,\n y: y\n });\n });\n return points;\n }\n});\nregisterShape('violin', 'violin', {\n draw: function draw(cfg, container) {\n var shapeAttrs = getStyle(cfg, true, true);\n var path = this.parsePath(getViolinPath(cfg.points));\n return container.addShape('path', {\n attrs: __assign(__assign({}, shapeAttrs), {\n path: path\n }),\n name: 'violin'\n });\n },\n getMarker: function getMarker(markerCfg) {\n var color = markerCfg.color;\n return {\n symbol: 'circle',\n style: {\n r: 4,\n fill: color\n }\n };\n }\n});\nexport default ViolinShapeFactory;","import { __extends } from \"tslib\";\nimport { get } from '@antv/util';\nimport { FIELD_ORIGIN } from '../constant';\nimport { getXDimensionLength } from '../util/coordinate';\nimport { getDefaultSize } from './util/shape-size';\nimport Geometry from './base';\n/** 引入 Path 对应的 ShapeFactory */\nimport './shape/violin';\n/**\n * Violin 几何标记。\n * 用于绘制小提琴图。\n */\nvar Violin = /** @class */function (_super) {\n __extends(Violin, _super);\n function Violin() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'violin';\n _this.shapeType = 'violin';\n _this.generatePoints = true;\n return _this;\n }\n /**\n * 获取 Shape 的关键点数据。\n * @param record\n * @returns\n */\n Violin.prototype.createShapePointsCfg = function (record) {\n var cfg = _super.prototype.createShapePointsCfg.call(this, record);\n // 计算每个 shape 的 size\n var size;\n var sizeAttr = this.getAttribute('size');\n if (sizeAttr) {\n size = this.getAttributeValues(sizeAttr, record)[0];\n // 归一化\n var coordinate = this.coordinate;\n var coordinateWidth = getXDimensionLength(coordinate);\n size = size / coordinateWidth;\n } else {\n if (!this.defaultSize) {\n this.defaultSize = getDefaultSize(this);\n }\n size = this.defaultSize;\n }\n cfg.size = size;\n cfg._size = get(record[FIELD_ORIGIN], [this._sizeField]);\n return cfg;\n };\n /**\n * @override\n */\n Violin.prototype.initAttributes = function () {\n var attributeOption = this.attributeOption;\n var sizeField = attributeOption.size ? attributeOption.size.fields[0] : this._sizeField ? this._sizeField : 'size';\n this._sizeField = sizeField;\n // fixme 干啥要删掉\n delete attributeOption.size;\n _super.prototype.initAttributes.call(this);\n };\n return Violin;\n}(Geometry);\nexport default Violin;","import { each } from '@antv/util';\n/**\n * @ignore\n * Gets cpath\n * @param from\n * @param to\n * @returns\n */\nexport function getCPath(from, to) {\n return ['C', from.x * 1 / 2 + to.x * 1 / 2, from.y, from.x * 1 / 2 + to.x * 1 / 2, to.y, to.x, to.y];\n}\n/**\n * @ignore\n * Gets qpath\n * @param to\n * @param center\n * @returns\n */\nexport function getQPath(to, center) {\n var points = [];\n points.push({\n x: center.x,\n y: center.y\n });\n points.push(to);\n var sub = ['Q'];\n each(points, function (point) {\n sub.push(point.x, point.y);\n });\n return sub;\n}","import { registerShape } from '../base';\nimport { getShapeAttrs } from './util';\n/**\n * 描边但不填充的区域图\n */\nregisterShape('area', 'line', {\n draw: function draw(cfg, container) {\n var attrs = getShapeAttrs(cfg, true, false, this);\n var shape = container.addShape({\n type: 'path',\n attrs: attrs,\n name: 'area'\n });\n return shape;\n },\n getMarker: function getMarker(markerCfg) {\n var color = markerCfg.color;\n return {\n symbol: function symbol(x, y, r) {\n if (r === void 0) {\n r = 5.5;\n }\n return [['M', x - r, y - 4], ['L', x + r, y - 4], ['L', x + r, y + 4], ['L', x - r, y + 4], ['Z']];\n },\n style: {\n r: 5,\n stroke: color,\n fill: null\n }\n };\n }\n});","import { registerShape } from '../base';\nimport { getConstraint, getShapeAttrs } from './util';\n/**\n * 填充的平滑曲面图\n */\nregisterShape('area', 'smooth', {\n draw: function draw(cfg, container) {\n var coordinate = this.coordinate;\n var attrs = getShapeAttrs(cfg, false, true, this, getConstraint(coordinate));\n var shape = container.addShape({\n type: 'path',\n attrs: attrs,\n name: 'area'\n });\n return shape;\n },\n getMarker: function getMarker(markerCfg) {\n var color = markerCfg.color;\n return {\n symbol: function symbol(x, y, r) {\n if (r === void 0) {\n r = 5.5;\n }\n return [['M', x - r, y - 4], ['L', x + r, y - 4], ['L', x + r, y + 4], ['L', x - r, y + 4], ['Z']];\n },\n style: {\n r: 5,\n fill: color,\n fillOpacity: 1\n }\n };\n }\n});","import { registerShape } from '../base';\nimport { getConstraint, getShapeAttrs } from './util';\n/** 描边的平滑曲面图 */\nregisterShape('area', 'smooth-line', {\n draw: function draw(cfg, container) {\n var coordinate = this.coordinate;\n var attrs = getShapeAttrs(cfg, true, true, this, getConstraint(coordinate));\n var shape = container.addShape({\n type: 'path',\n attrs: attrs,\n name: 'area'\n });\n return shape;\n },\n getMarker: function getMarker(markerCfg) {\n var color = markerCfg.color;\n return {\n symbol: function symbol(x, y, r) {\n if (r === void 0) {\n r = 5.5;\n }\n return [['M', x - r, y - 4], ['L', x + r, y - 4], ['L', x + r, y + 4], ['L', x - r, y + 4], ['Z']];\n },\n style: {\n r: 5,\n stroke: color,\n fill: null\n }\n };\n }\n});","import { __assign } from \"tslib\";\nimport { getArcPath } from '../../../util/graphics';\nimport { registerShape } from '../base';\nimport { getStyle } from '../util/get-style';\nimport { getCPath, getQPath } from './util';\nfunction getArcShapePath(from, to, center) {\n var sub = getQPath(to, center);\n var path = [['M', from.x, from.y]];\n path.push(sub);\n return path;\n}\nfunction getArcShapeWeightPath(points, center) {\n var arc1 = getQPath(points[1], center);\n var arc2 = getQPath(points[3], center);\n var path = [['M', points[0].x, points[0].y]];\n path.push(arc2);\n path.push(['L', points[3].x, points[3].y]);\n path.push(['L', points[2].x, points[2].y]);\n path.push(arc1);\n path.push(['L', points[1].x, points[1].y]);\n path.push(['L', points[0].x, points[0].y]);\n path.push(['Z']);\n return path;\n}\n// 弧线包括笛卡尔坐标系下的半圆弧线、极坐标系下以圆心为控制点的二阶曲线、笛卡尔坐标系下带权重的三阶曲线、极坐标系下带权重的以圆心为控制点的二阶曲线\nregisterShape('edge', 'arc', {\n draw: function draw(cfg, container) {\n var style = getStyle(cfg, true, false, 'lineWidth');\n var points = cfg.points;\n var type = points.length > 2 ? 'weight' : 'normal';\n var path;\n if (cfg.isInCircle) {\n var center = {\n x: 0,\n y: 1\n };\n if (type === 'normal') {\n path = getArcShapePath(points[0], points[1], center);\n } else {\n style.fill = style.stroke;\n path = getArcShapeWeightPath(points, center);\n }\n path = this.parsePath(path);\n return container.addShape('path', {\n attrs: __assign(__assign({}, style), {\n path: path\n })\n });\n } else {\n if (type === 'normal') {\n points = this.parsePoints(points);\n path = getArcPath((points[1].x + points[0].x) / 2, points[0].y, Math.abs(points[1].x - points[0].x) / 2, Math.PI, Math.PI * 2);\n return container.addShape('path', {\n attrs: __assign(__assign({}, style), {\n path: path\n })\n });\n } else {\n var c1 = getCPath(points[1], points[3]);\n var c2 = getCPath(points[2], points[0]);\n path = [['M', points[0].x, points[0].y], ['L', points[1].x, points[1].y], c1, ['L', points[3].x, points[3].y], ['L', points[2].x, points[2].y], c2, ['Z']];\n path = this.parsePath(path);\n style.fill = style.stroke;\n return container.addShape('path', {\n attrs: __assign(__assign({}, style), {\n path: path\n })\n });\n }\n }\n },\n getMarker: function getMarker(markerCfg) {\n return {\n symbol: 'circle',\n style: {\n r: 4.5,\n fill: markerCfg.color\n }\n };\n }\n});","import { __assign } from \"tslib\";\nimport { registerShape } from '../base';\nimport { getStyle } from '../util/get-style';\nimport { getCPath } from './util';\nfunction getSmoothPath(from, to) {\n var sub = getCPath(from, to);\n var path = [['M', from.x, from.y]];\n path.push(sub);\n return path;\n}\nregisterShape('edge', 'smooth', {\n draw: function draw(cfg, container) {\n var style = getStyle(cfg, true, false, 'lineWidth');\n var points = cfg.points;\n var path = this.parsePath(getSmoothPath(points[0], points[1]));\n return container.addShape('path', {\n attrs: __assign(__assign({}, style), {\n path: path\n })\n });\n },\n getMarker: function getMarker(markerCfg) {\n return {\n symbol: 'circle',\n style: {\n r: 4.5,\n fill: markerCfg.color\n }\n };\n }\n});","import { __assign } from \"tslib\";\nimport { each } from '@antv/util';\nimport { registerShape } from '../base';\nimport { getStyle } from '../util/get-style';\nvar CORNER_PERCENT = 1 / 3;\nfunction getVHVPath(from, to) {\n var points = [];\n points.push({\n x: from.x,\n y: from.y * (1 - CORNER_PERCENT) + to.y * CORNER_PERCENT\n });\n points.push({\n x: to.x,\n y: from.y * (1 - CORNER_PERCENT) + to.y * CORNER_PERCENT\n });\n points.push(to);\n var path = [['M', from.x, from.y]];\n each(points, function (point) {\n path.push(['L', point.x, point.y]);\n });\n return path;\n}\nregisterShape('edge', 'vhv', {\n draw: function draw(cfg, container) {\n var style = getStyle(cfg, true, false, 'lineWidth');\n var points = cfg.points;\n var path = this.parsePath(getVHVPath(points[0], points[1]));\n return container.addShape('path', {\n attrs: __assign(__assign({}, style), {\n path: path\n })\n });\n },\n getMarker: function getMarker(markerCfg) {\n return {\n symbol: 'circle',\n style: {\n r: 4.5,\n fill: markerCfg.color\n }\n };\n }\n});","import { __assign } from \"tslib\";\nimport { registerShape } from '../base';\nimport { getStyle } from '../util/get-style';\nimport { getFunnelPath, getRectPoints } from './util';\n/** 漏斗图 */\nregisterShape('interval', 'funnel', {\n getPoints: function getPoints(shapePoint) {\n shapePoint.size = shapePoint.size * 2; // 漏斗图的 size 是柱状图的两倍\n return getRectPoints(shapePoint);\n },\n draw: function draw(cfg, container) {\n var style = getStyle(cfg, false, true);\n var path = this.parsePath(getFunnelPath(cfg.points, cfg.nextPoints, false));\n var shape = container.addShape('path', {\n attrs: __assign(__assign({}, style), {\n path: path\n }),\n name: 'interval'\n });\n return shape;\n },\n getMarker: function getMarker(markerCfg) {\n var color = markerCfg.color;\n return {\n symbol: 'square',\n style: {\n r: 4,\n fill: color\n }\n };\n }\n});","import { __assign } from \"tslib\";\nimport { registerShape } from '../base';\nimport { BACKGROUND_SHAPE } from '../constant';\nimport { getBackgroundRectStyle, getStyle } from '../util/get-style';\nimport { getBackgroundRectPath, getRectPath } from './util';\n/** 描边柱状图 */\nregisterShape('interval', 'hollow-rect', {\n draw: function draw(cfg, container) {\n var style = getStyle(cfg, true, false);\n var group = container;\n var backgroundCfg = cfg === null || cfg === void 0 ? void 0 : cfg.background;\n if (backgroundCfg) {\n group = container.addGroup();\n var backgroundStyle = getBackgroundRectStyle(cfg);\n var backgroundPath = getBackgroundRectPath(cfg, this.parsePoints(cfg.points), this.coordinate);\n group.addShape('path', {\n attrs: __assign(__assign({}, backgroundStyle), {\n path: backgroundPath\n }),\n capture: false,\n zIndex: -1,\n name: BACKGROUND_SHAPE\n });\n }\n var path = this.parsePath(getRectPath(cfg.points));\n var shape = group.addShape('path', {\n attrs: __assign(__assign({}, style), {\n path: path\n }),\n name: 'interval'\n });\n return backgroundCfg ? group : shape;\n },\n getMarker: function getMarker(markerCfg) {\n var color = markerCfg.color,\n isInPolar = markerCfg.isInPolar;\n if (isInPolar) {\n return {\n symbol: 'circle',\n style: {\n r: 4.5,\n stroke: color,\n fill: null\n }\n };\n }\n return {\n symbol: 'square',\n style: {\n r: 4,\n stroke: color,\n fill: null\n }\n };\n }\n});","import { __assign } from \"tslib\";\nimport { isArray } from '@antv/util';\nimport { registerShape } from '../base';\nimport { getStyle } from '../util/get-style';\nimport { getRectPath } from './util';\nimport { omit } from '../../../util/helper';\n// 根据数据点生成 Line 的两个关键点\nfunction getLinePoints(pointInfo) {\n var x = pointInfo.x,\n y = pointInfo.y,\n y0 = pointInfo.y0;\n if (isArray(y)) {\n return y.map(function (yItem, idx) {\n return {\n x: isArray(x) ? x[idx] : x,\n y: yItem\n };\n });\n }\n // 起始点从 y0 开始\n return [{\n x: x,\n y: y0\n }, {\n x: x,\n y: y\n }];\n}\nregisterShape('interval', 'line', {\n getPoints: function getPoints(shapePoint) {\n return getLinePoints(shapePoint);\n },\n draw: function draw(cfg, container) {\n var style = getStyle(cfg, true, false, 'lineWidth');\n var newStyle = omit(__assign({}, style), ['fill']);\n var path = this.parsePath(getRectPath(cfg.points, false));\n var shape = container.addShape('path', {\n attrs: __assign(__assign({}, newStyle), {\n path: path\n }),\n name: 'interval'\n });\n return shape;\n },\n getMarker: function getMarker(markerCfg) {\n var color = markerCfg.color;\n return {\n symbol: function symbol(x, y, r) {\n return [['M', x, y - r], ['L', x, y + r]];\n },\n style: {\n r: 5,\n stroke: color\n }\n };\n }\n});","import { __assign } from \"tslib\";\nimport { registerShape } from '../base';\nimport { getStyle } from '../util/get-style';\nimport { getFunnelPath, getRectPoints } from './util';\n/** 金字塔图,尖底漏斗图 */\nregisterShape('interval', 'pyramid', {\n getPoints: function getPoints(shapePoint) {\n shapePoint.size = shapePoint.size * 2; // 漏斗图的 size 是柱状图的两倍\n return getRectPoints(shapePoint);\n },\n draw: function draw(cfg, container) {\n var style = getStyle(cfg, false, true);\n var path = this.parsePath(getFunnelPath(cfg.points, cfg.nextPoints, true));\n var shape = container.addShape('path', {\n attrs: __assign(__assign({}, style), {\n path: path\n }),\n name: 'interval'\n });\n return shape;\n },\n getMarker: function getMarker(markerCfg) {\n var color = markerCfg.color;\n return {\n symbol: 'square',\n style: {\n r: 4,\n fill: color\n }\n };\n }\n});","import { __assign, __read } from \"tslib\";\nimport { isArray } from '@antv/util';\nimport { registerShape } from '../base';\nimport { getStyle } from '../util/get-style';\n// 根据数据点生成 tick shape 的 6 个关键点\nfunction getTickPoints(pointInfo) {\n var _a;\n var x = pointInfo.x,\n y = pointInfo.y,\n y0 = pointInfo.y0,\n size = pointInfo.size;\n var yMin;\n var yMax;\n if (isArray(y)) {\n _a = __read(y, 2), yMin = _a[0], yMax = _a[1];\n } else {\n yMin = y0;\n yMax = y;\n }\n var xMax = x + size / 2;\n var xMin = x - size / 2;\n // tick 关键点顺序\n // 4 - 1 - 5\n // |\n // 2 - 0 - 3\n return [{\n x: x,\n y: yMin\n }, {\n x: x,\n y: yMax\n }, {\n x: xMin,\n y: yMin\n }, {\n x: xMax,\n y: yMin\n }, {\n x: xMin,\n y: yMax\n }, {\n x: xMax,\n y: yMax\n }];\n}\n// 根据 tick 关键点绘制 path\nfunction getTickPath(points) {\n return [['M', points[0].x, points[0].y], ['L', points[1].x, points[1].y], ['M', points[2].x, points[2].y], ['L', points[3].x, points[3].y], ['M', points[4].x, points[4].y], ['L', points[5].x, points[5].y]];\n}\n/** I 形状柱状图,常用于 error bar chart */\nregisterShape('interval', 'tick', {\n getPoints: function getPoints(shapePoint) {\n return getTickPoints(shapePoint);\n },\n draw: function draw(cfg, container) {\n var style = getStyle(cfg, true, false);\n var path = this.parsePath(getTickPath(cfg.points));\n var shape = container.addShape('path', {\n attrs: __assign(__assign({}, style), {\n path: path\n }),\n name: 'interval'\n });\n return shape;\n },\n getMarker: function getMarker(markerCfg) {\n var color = markerCfg.color;\n return {\n symbol: function symbol(x, y, r) {\n return [['M', x - r / 2, y - r], ['L', x + r / 2, y - r], ['M', x, y - r], ['L', x, y + r], ['M', x - r / 2, y + r], ['L', x + r / 2, y + r]];\n },\n style: {\n r: 5,\n stroke: color\n }\n };\n }\n});","import { __assign } from \"tslib\";\nimport { each } from '@antv/util';\nimport { registerShape } from '../base';\nimport { getPathPoints } from '../util/get-path-points';\nimport { getStyle } from '../util/get-style';\nimport { getLineMarker } from './util';\nvar interpolateCallback = function interpolateCallback(point, nextPoint, shapeType) {\n var x = point.x;\n var y = point.y;\n var nextX = nextPoint.x;\n var nextY = nextPoint.y;\n var result;\n switch (shapeType) {\n case 'hv':\n result = [{\n x: nextX,\n y: y\n }];\n break;\n case 'vh':\n result = [{\n x: x,\n y: nextY\n }];\n break;\n case 'hvh':\n var middleX = (nextX + x) / 2;\n result = [{\n x: middleX,\n y: y\n }, {\n x: middleX,\n y: nextY\n }];\n break;\n case 'vhv':\n var middleY = (y + nextY) / 2;\n result = [{\n x: x,\n y: middleY\n }, {\n x: nextX,\n y: middleY\n }];\n break;\n default:\n break;\n }\n return result;\n};\nfunction getInterpolatePoints(points, shapeType) {\n var result = [];\n each(points, function (point, index) {\n var nextPoint = points[index + 1];\n result.push(point);\n if (nextPoint) {\n var interpolatePoint = interpolateCallback(point, nextPoint, shapeType);\n result = result.concat(interpolatePoint);\n }\n });\n return result;\n}\n// 插值的图形path,不考虑null\nfunction getInterpolatePath(points) {\n return points.map(function (point, index) {\n return index === 0 ? ['M', point.x, point.y] : ['L', point.x, point.y];\n });\n}\n// 插值的图形\nfunction getInterpolateShapeAttrs(cfg, shapeType) {\n var points = getPathPoints(cfg.points, cfg.connectNulls, cfg.showSinglePoint); // 根据 connectNulls 值处理 points\n var path = [];\n each(points, function (eachLinePoints) {\n var interpolatePoints = getInterpolatePoints(eachLinePoints, shapeType);\n path = path.concat(getInterpolatePath(interpolatePoints));\n });\n return __assign(__assign({}, getStyle(cfg, true, false, 'lineWidth')), {\n path: path\n });\n}\n// step line\neach(['hv', 'vh', 'hvh', 'vhv'], function (shapeType) {\n registerShape('line', shapeType, {\n draw: function draw(cfg, container) {\n var attrs = getInterpolateShapeAttrs(cfg, shapeType);\n var shape = container.addShape({\n type: 'path',\n attrs: attrs,\n name: 'line'\n });\n return shape;\n },\n getMarker: function getMarker(markerCfg) {\n return getLineMarker(markerCfg, shapeType);\n }\n });\n});","import { __assign } from \"tslib\";\nimport { isArray, isNil } from '@antv/util';\nimport { registerShape } from '../base';\nimport { getStyle } from '../util/get-style';\nfunction parseValue(value) {\n var array = !isArray(value) ? [value] : value;\n var min = array[0]; // 最小值\n var max = array[array.length - 1]; // 最大值\n var min1 = array.length > 1 ? array[1] : min;\n var max1 = array.length > 3 ? array[3] : max;\n var median = array.length > 2 ? array[2] : min1;\n return {\n min: min,\n max: max,\n min1: min1,\n max1: max1,\n median: median\n };\n}\nfunction getBoxPoints(x, y, size) {\n var halfSize = size / 2;\n var pointsArray;\n if (isArray(y)) {\n // 2维\n var _a = parseValue(y),\n min = _a.min,\n max = _a.max,\n median = _a.median,\n min1 = _a.min1,\n max1 = _a.max1;\n var minX = x - halfSize;\n var maxX = x + halfSize;\n pointsArray = [[minX, max], [maxX, max], [x, max], [x, max1], [minX, min1], [minX, max1], [maxX, max1], [maxX, min1], [x, min1], [x, min], [minX, min], [maxX, min], [minX, median], [maxX, median]];\n } else {\n // 只有一个维度\n y = isNil(y) ? 0.5 : y;\n var _b = parseValue(x),\n min = _b.min,\n max = _b.max,\n median = _b.median,\n min1 = _b.min1,\n max1 = _b.max1;\n var minY = y - halfSize;\n var maxY = y + halfSize;\n pointsArray = [[min, minY], [min, maxY], [min, y], [min1, y], [min1, minY], [min1, maxY], [max1, maxY], [max1, minY], [max1, y], [max, y], [max, minY], [max, maxY], [median, minY], [median, maxY]];\n }\n return pointsArray.map(function (arr) {\n return {\n x: arr[0],\n y: arr[1]\n };\n });\n}\nfunction getBoxPath(points) {\n return [['M', points[0].x, points[0].y], ['L', points[1].x, points[1].y], ['M', points[2].x, points[2].y], ['L', points[3].x, points[3].y], ['M', points[4].x, points[4].y], ['L', points[5].x, points[5].y], ['L', points[6].x, points[6].y], ['L', points[7].x, points[7].y], ['L', points[4].x, points[4].y], ['Z'], ['M', points[8].x, points[8].y], ['L', points[9].x, points[9].y], ['M', points[10].x, points[10].y], ['L', points[11].x, points[11].y], ['M', points[12].x, points[12].y], ['L', points[13].x, points[13].y]];\n}\n// box shape\nregisterShape('schema', 'box', {\n getPoints: function getPoints(shapePoint) {\n var x = shapePoint.x,\n y = shapePoint.y,\n size = shapePoint.size;\n return getBoxPoints(x, y, size);\n },\n draw: function draw(cfg, container) {\n var style = getStyle(cfg, true, false);\n var path = this.parsePath(getBoxPath(cfg.points));\n var shape = container.addShape('path', {\n attrs: __assign(__assign({}, style), {\n path: path,\n name: 'schema'\n })\n });\n return shape;\n },\n getMarker: function getMarker(markerCfg) {\n var color = markerCfg.color;\n return {\n symbol: function symbol(x, y, r) {\n var yValues = [y - 6, y - 3, y, y + 3, y + 6];\n var points = getBoxPoints(x, yValues, r);\n return [['M', points[0].x + 1, points[0].y], ['L', points[1].x - 1, points[1].y], ['M', points[2].x, points[2].y], ['L', points[3].x, points[3].y], ['M', points[4].x, points[4].y], ['L', points[5].x, points[5].y], ['L', points[6].x, points[6].y], ['L', points[7].x, points[7].y], ['L', points[4].x, points[4].y], ['Z'], ['M', points[8].x, points[8].y], ['L', points[9].x, points[9].y], ['M', points[10].x + 1, points[10].y], ['L', points[11].x - 1, points[11].y], ['M', points[12].x, points[12].y], ['L', points[13].x, points[13].y]];\n },\n style: {\n r: 6,\n lineWidth: 1,\n stroke: color\n }\n };\n }\n});","import { __assign } from \"tslib\";\nimport { isArray } from '@antv/util';\nimport { padEnd } from '../../../util/helper';\nimport { registerShape } from '../base';\nimport { getStyle } from '../util/get-style';\nfunction getCandleYValues(value) {\n var array = !isArray(value) ? [value] : value;\n // 从大到小排序\n var sorted = array.sort(function (a, b) {\n return b - a;\n });\n return padEnd(sorted, 4, sorted[sorted.length - 1]);\n}\n// get candle shape's key points\nfunction getCandlePoints(x, y, size) {\n var yValues = getCandleYValues(y);\n return [{\n x: x,\n y: yValues[0]\n }, {\n x: x,\n y: yValues[1]\n }, {\n x: x - size / 2,\n y: yValues[2]\n }, {\n x: x - size / 2,\n y: yValues[1]\n }, {\n x: x + size / 2,\n y: yValues[1]\n }, {\n x: x + size / 2,\n y: yValues[2]\n }, {\n x: x,\n y: yValues[2]\n }, {\n x: x,\n y: yValues[3]\n }];\n}\nfunction getCandlePath(points) {\n return [['M', points[0].x, points[0].y], ['L', points[1].x, points[1].y], ['M', points[2].x, points[2].y], ['L', points[3].x, points[3].y], ['L', points[4].x, points[4].y], ['L', points[5].x, points[5].y], ['Z'], ['M', points[6].x, points[6].y], ['L', points[7].x, points[7].y]];\n}\n// k line shape\nregisterShape('schema', 'candle', {\n getPoints: function getPoints(shapePoint) {\n var x = shapePoint.x,\n y = shapePoint.y,\n size = shapePoint.size;\n return getCandlePoints(x, y, size);\n },\n draw: function draw(cfg, container) {\n var style = getStyle(cfg, true, true);\n var path = this.parsePath(getCandlePath(cfg.points));\n var shape = container.addShape('path', {\n attrs: __assign(__assign({}, style), {\n path: path,\n name: 'schema'\n })\n });\n return shape;\n },\n getMarker: function getMarker(markerCfg) {\n var color = markerCfg.color;\n return {\n symbol: function symbol(x, y, r) {\n var yValues = [y + 7.5, y + 3, y - 3, y - 7.5];\n var points = getCandlePoints(x, yValues, r);\n return [['M', points[0].x, points[0].y], ['L', points[1].x, points[1].y], ['M', points[2].x, points[2].y], ['L', points[3].x, points[3].y], ['L', points[4].x, points[4].y], ['L', points[5].x, points[5].y], ['Z'], ['M', points[6].x, points[6].y], ['L', points[7].x, points[7].y]];\n },\n style: {\n lineWidth: 1,\n stroke: color,\n fill: color,\n r: 6\n }\n };\n }\n});","import { __assign } from \"tslib\";\nimport { isEmpty, clamp } from '@antv/util';\nimport { registerShape } from '../base';\nimport { getStyle } from '../util/get-style';\nfunction getRectAttrs(points, size) {\n var width = Math.abs(points[0].x - points[2].x);\n var height = Math.abs(points[0].y - points[2].y);\n var len = Math.min(width, height);\n if (size) {\n len = clamp(size, 0, Math.min(width, height));\n }\n len = len / 2;\n var centerX = (points[0].x + points[2].x) / 2;\n var centerY = (points[0].y + points[2].y) / 2;\n return {\n x: centerX - len,\n y: centerY - len,\n width: len * 2,\n height: len * 2\n };\n}\nregisterShape('polygon', 'square', {\n draw: function draw(cfg, container) {\n if (!isEmpty(cfg.points)) {\n var shapeAttrs = getStyle(cfg, true, true);\n var points = this.parsePoints(cfg.points); // 转换为画布坐标\n return container.addShape('rect', {\n attrs: __assign(__assign({}, shapeAttrs), getRectAttrs(points, cfg.size)),\n name: 'polygon'\n });\n }\n },\n getMarker: function getMarker(markerCfg) {\n var color = markerCfg.color;\n return {\n symbol: 'square',\n style: {\n r: 4,\n fill: color\n }\n };\n }\n});","import { each } from '@antv/util';\nimport { MarkerSymbols } from '../../../util/marker';\nimport { registerShape } from '../base';\nimport { drawPoints, HOLLOW_SHAPES } from './util';\n// 添加 hollowShape\neach(HOLLOW_SHAPES, function (shapeName) {\n registerShape('point', shapeName, {\n draw: function draw(cfg, container) {\n return drawPoints(this, cfg, container, shapeName, true);\n },\n getMarker: function getMarker(markerCfg) {\n var color = markerCfg.color;\n return {\n symbol: MarkerSymbols[shapeName],\n style: {\n r: 4.5,\n stroke: color,\n fill: null\n }\n };\n }\n });\n});","import { __values } from \"tslib\";\nimport { registerShape } from '../base';\nimport { getStyle } from '../util/get-style';\nregisterShape('point', 'image', {\n draw: function draw(cfg, container) {\n var e_1, _a;\n var size = getStyle(cfg, false, false, 'r').r;\n var points = this.parsePoints(cfg.points);\n var pointPosition = points[0];\n if (cfg.isStack) {\n pointPosition = points[1];\n } else if (points.length > 1) {\n var group = container.addGroup();\n try {\n for (var points_1 = __values(points), points_1_1 = points_1.next(); !points_1_1.done; points_1_1 = points_1.next()) {\n var point = points_1_1.value;\n group.addShape('image', {\n attrs: {\n x: point.x - size / 2,\n y: point.y - size,\n width: size,\n height: size,\n img: cfg.shape[1]\n }\n });\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (points_1_1 && !points_1_1.done && (_a = points_1.return)) _a.call(points_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n return group;\n }\n return container.addShape('image', {\n attrs: {\n x: pointPosition.x - size / 2,\n y: pointPosition.y - size,\n width: size,\n height: size,\n img: cfg.shape[1]\n }\n });\n },\n getMarker: function getMarker(markerCfg) {\n var color = markerCfg.color;\n return {\n symbol: 'circle',\n style: {\n r: 4.5,\n fill: color\n }\n };\n }\n});","import { each } from '@antv/util';\nimport { MarkerSymbols } from '../../../util/marker';\nimport { registerShape } from '../base';\nimport { drawPoints, SHAPES } from './util';\n// 所有的 SHAPES 都注册一下\neach(SHAPES, function (shapeName) {\n registerShape('point', shapeName, {\n draw: function draw(cfg, container) {\n return drawPoints(this, cfg, container, shapeName, false);\n },\n getMarker: function getMarker(markerCfg) {\n var color = markerCfg.color;\n return {\n symbol: MarkerSymbols[shapeName] || shapeName,\n style: {\n r: 4.5,\n fill: color\n }\n };\n }\n });\n});","import { __assign } from \"tslib\";\nimport { registerShape } from '../base';\nimport { getSmoothViolinPath } from '../util/get-path-points';\nimport { getStyle } from '../util/get-style';\n/**\n * 平滑边界的小提琴图\n */\nregisterShape('violin', 'smooth', {\n draw: function draw(cfg, container) {\n var attrs = getStyle(cfg, true, true);\n var path = this.parsePath(getSmoothViolinPath(cfg.points));\n return container.addShape('path', {\n attrs: __assign(__assign({}, attrs), {\n path: path\n })\n });\n },\n getMarker: function getMarker(markerCfg) {\n var color = markerCfg.color;\n return {\n symbol: 'circle',\n style: {\n stroke: null,\n r: 4,\n fill: color\n }\n };\n }\n});","import { __assign } from \"tslib\";\nimport { registerShape } from '../base';\nimport { getSmoothViolinPath, getViolinPath } from '../util/get-path-points';\nimport { getStyle } from '../util/get-style';\n/**\n * 空心小提琴图\n */\nregisterShape('violin', 'hollow', {\n draw: function draw(cfg, container) {\n var attrs = getStyle(cfg, true, false);\n var path = this.parsePath(getViolinPath(cfg.points));\n return container.addShape('path', {\n attrs: __assign(__assign({}, attrs), {\n path: path\n })\n });\n },\n getMarker: function getMarker(markerCfg) {\n var color = markerCfg.color;\n return {\n symbol: 'circle',\n style: {\n r: 4,\n fill: null,\n stroke: color\n }\n };\n }\n});\n/**\n * 平滑边界的空心小提琴图\n */\nregisterShape('violin', 'hollow-smooth', {\n draw: function draw(cfg, container) {\n var attrs = getStyle(cfg, true, false);\n var path = this.parsePath(getSmoothViolinPath(cfg.points));\n return container.addShape('path', {\n attrs: __assign(__assign({}, attrs), {\n path: path\n })\n });\n },\n getMarker: function getMarker(markerCfg) {\n var color = markerCfg.color;\n return {\n symbol: 'circle',\n style: {\n r: 4,\n fill: null,\n stroke: color\n }\n };\n }\n});","import { __assign, __extends } from \"tslib\";\nimport { get, deepMix, isArray } from '@antv/util';\nimport GeometryLabel from './base';\n/**\n * 柱状图 label\n */\nvar IntervalLabel = /** @class */function (_super) {\n __extends(IntervalLabel, _super);\n function IntervalLabel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * 获取 interval label 的方向,取决于 value 的值是正还是负\n * @param labelCfg\n */\n IntervalLabel.prototype.getLabelValueDir = function (mappingData) {\n // points 中的 x/y 和 transpose 无关\n var dim = 'y';\n var points = mappingData.points;\n return points[0][dim] <= points[2][dim] ? 1 : -1;\n };\n /**\n * 重载:根据 interval 值的正负来调整 label 偏移量\n * @param labelCfg\n * @param index\n * @param total\n */\n IntervalLabel.prototype.getLabelOffsetPoint = function (labelCfg, index, total, position) {\n var _a;\n var point = _super.prototype.getLabelOffsetPoint.call(this, labelCfg, index, total);\n var coordinate = this.getCoordinate();\n var transposed = coordinate.isTransposed;\n var dim = transposed ? 'x' : 'y';\n var dir = this.getLabelValueDir(labelCfg.mappingData);\n point = __assign(__assign({}, point), (_a = {}, _a[dim] = point[dim] * dir, _a));\n if (coordinate.isReflect('x')) {\n point = __assign(__assign({}, point), {\n x: point.x * -1\n });\n }\n if (coordinate.isReflect('y')) {\n point = __assign(__assign({}, point), {\n y: point.y * -1\n });\n }\n return point;\n };\n /**\n * 重载:定制 interval label 的默认主题配置\n * @param labelCfg\n */\n IntervalLabel.prototype.getThemedLabelCfg = function (labelCfg) {\n var geometry = this.geometry;\n var defaultLabelCfg = this.getDefaultLabelCfg();\n var theme = geometry.theme;\n // 如果 interval label position 设置为 middle,则将主题中的 offset 覆盖为 0\n return deepMix({}, defaultLabelCfg, theme.labels, labelCfg.position === 'middle' ? {\n offset: 0\n } : {}, labelCfg);\n };\n IntervalLabel.prototype.setLabelPosition = function (labelPointCfg, mappingData, index, position) {\n var coordinate = this.getCoordinate();\n var transposed = coordinate.isTransposed;\n var shapePoints = mappingData.points;\n var point0 = coordinate.convert(shapePoints[0]);\n var point2 = coordinate.convert(shapePoints[2]);\n var dir = this.getLabelValueDir(mappingData);\n var top;\n var right;\n var bottom;\n var left;\n var shape = isArray(mappingData.shape) ? mappingData.shape[0] : mappingData.shape;\n if (shape === 'funnel' || shape === 'pyramid') {\n // 处理漏斗图\n var nextPoints = get(mappingData, 'nextPoints');\n var points = get(mappingData, 'points');\n if (nextPoints) {\n // 非漏斗图底部\n var p0 = coordinate.convert(points[0]);\n var p1 = coordinate.convert(points[1]);\n var nextP0 = coordinate.convert(nextPoints[0]);\n var nextP1 = coordinate.convert(nextPoints[1]);\n // TODO: 使用包围盒的计算方法\n if (transposed) {\n top = Math.min(nextP0.y, p0.y);\n bottom = Math.max(nextP0.y, p0.y);\n right = (p1.x + nextP1.x) / 2;\n left = (p0.x + nextP0.x) / 2;\n } else {\n top = Math.min((p1.y + nextP1.y) / 2, (p0.y + nextP0.y) / 2);\n bottom = Math.max((p1.y + nextP1.y) / 2, (p0.y + nextP0.y) / 2);\n right = nextP1.x;\n left = p0.x;\n }\n } else {\n top = Math.min(point2.y, point0.y);\n bottom = Math.max(point2.y, point0.y);\n right = point2.x;\n left = point0.x;\n }\n } else {\n top = Math.min(point2.y, point0.y);\n bottom = Math.max(point2.y, point0.y);\n right = point2.x;\n left = point0.x;\n }\n switch (position) {\n case 'right':\n labelPointCfg.x = right;\n labelPointCfg.y = (top + bottom) / 2;\n labelPointCfg.textAlign = get(labelPointCfg, 'textAlign', dir > 0 ? 'left' : 'right');\n break;\n case 'left':\n labelPointCfg.x = left;\n labelPointCfg.y = (top + bottom) / 2;\n labelPointCfg.textAlign = get(labelPointCfg, 'textAlign', dir > 0 ? 'left' : 'right');\n break;\n case 'bottom':\n if (transposed) {\n labelPointCfg.x = (right + left) / 2;\n }\n labelPointCfg.y = bottom;\n labelPointCfg.textAlign = get(labelPointCfg, 'textAlign', 'center');\n labelPointCfg.textBaseline = get(labelPointCfg, 'textBaseline', dir > 0 ? 'bottom' : 'top');\n break;\n case 'middle':\n if (transposed) {\n labelPointCfg.x = (right + left) / 2;\n }\n labelPointCfg.y = (top + bottom) / 2;\n labelPointCfg.textAlign = get(labelPointCfg, 'textAlign', 'center');\n labelPointCfg.textBaseline = get(labelPointCfg, 'textBaseline', 'middle');\n break;\n case 'top':\n if (transposed) {\n labelPointCfg.x = (right + left) / 2;\n }\n labelPointCfg.y = top;\n labelPointCfg.textAlign = get(labelPointCfg, 'textAlign', 'center');\n labelPointCfg.textBaseline = get(labelPointCfg, 'textBaseline', dir > 0 ? 'bottom' : 'top');\n break;\n default:\n break;\n }\n };\n return IntervalLabel;\n}(GeometryLabel);\nexport default IntervalLabel;","import { __assign, __extends } from \"tslib\";\nimport { each, get, isArray, map, isNumber, isString } from '@antv/util';\nimport { getDistanceToCenter } from '../../util/coordinate';\nimport { getAngleByPoint } from '../../util/coordinate';\nimport GeometryLabel from './base';\nvar HALF_PI = Math.PI / 2;\n/**\n * 极坐标下的图形 label\n */\nvar PolarLabel = /** @class */function (_super) {\n __extends(PolarLabel, _super);\n function PolarLabel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @override\n * @desc 获取 label offset\n * polar & theta coordinate support「string」type, should transform to 「number」\n */\n PolarLabel.prototype.getLabelOffset = function (offset) {\n var coordinate = this.getCoordinate();\n var actualOffset = 0;\n if (isNumber(offset)) {\n actualOffset = offset;\n } else if (isString(offset) && offset.indexOf('%') !== -1) {\n var r = coordinate.getRadius();\n if (coordinate.innerRadius > 0) {\n r = r * (1 - coordinate.innerRadius);\n }\n actualOffset = parseFloat(offset) * 0.01 * r;\n }\n return actualOffset;\n };\n /**\n * @override\n * 获取 labelItems, 增加切片 percent\n * @param mapppingArray\n */\n PolarLabel.prototype.getLabelItems = function (mapppingArray) {\n var items = _super.prototype.getLabelItems.call(this, mapppingArray);\n var yScale = this.geometry.getYScale();\n return map(items, function (item) {\n if (item && yScale) {\n var percent = yScale.scale(get(item.data, yScale.field));\n return __assign(__assign({}, item), {\n percent: percent\n });\n }\n return item;\n });\n };\n /**\n * @override\n * 获取文本的对齐方式\n * @param point\n */\n PolarLabel.prototype.getLabelAlign = function (point) {\n var coordinate = this.getCoordinate();\n var align;\n if (point.labelEmit) {\n align = point.angle <= Math.PI / 2 && point.angle >= -Math.PI / 2 ? 'left' : 'right';\n } else if (!coordinate.isTransposed) {\n align = 'center';\n } else {\n var center = coordinate.getCenter();\n var offset = point.offset;\n if (Math.abs(point.x - center.x) < 1) {\n align = 'center';\n } else if (point.angle > Math.PI || point.angle <= 0) {\n align = offset > 0 ? 'left' : 'right';\n } else {\n align = offset > 0 ? 'right' : 'left';\n }\n }\n return align;\n };\n /**\n * @override\n * 获取 label 的位置\n * @param labelCfg\n * @param mappingData\n * @param index\n */\n PolarLabel.prototype.getLabelPoint = function (labelCfg, mappingData, index) {\n var factor = 1;\n var arcPoint;\n var content = labelCfg.content[index];\n if (this.isToMiddle(mappingData)) {\n arcPoint = this.getMiddlePoint(mappingData.points);\n } else {\n if (labelCfg.content.length === 1 && index === 0) {\n index = 1;\n } else if (index === 0) {\n factor = -1;\n }\n arcPoint = this.getArcPoint(mappingData, index);\n }\n var offset = labelCfg.offset * factor;\n var middleAngle = this.getPointAngle(arcPoint);\n var isLabelEmit = labelCfg.labelEmit;\n var labelPositionCfg = this.getCirclePoint(middleAngle, offset, arcPoint, isLabelEmit);\n if (labelPositionCfg.r === 0) {\n // 如果文本位置位于圆心,则不展示\n labelPositionCfg.content = '';\n } else {\n labelPositionCfg.content = content;\n labelPositionCfg.angle = middleAngle;\n labelPositionCfg.color = mappingData.color;\n }\n labelPositionCfg.rotate = labelCfg.autoRotate ? this.getLabelRotate(middleAngle, offset, isLabelEmit) : labelCfg.rotate;\n labelPositionCfg.start = {\n x: arcPoint.x,\n y: arcPoint.y\n };\n return labelPositionCfg;\n };\n /**\n * 获取圆弧的位置\n */\n PolarLabel.prototype.getArcPoint = function (mappingData, index) {\n if (index === void 0) {\n index = 0;\n }\n if (!isArray(mappingData.x) && !isArray(mappingData.y)) {\n return {\n x: mappingData.x,\n y: mappingData.y\n };\n }\n return {\n x: isArray(mappingData.x) ? mappingData.x[index] : mappingData.x,\n y: isArray(mappingData.y) ? mappingData.y[index] : mappingData.y\n };\n };\n /**\n * 计算坐标线点在极坐标系下角度\n * @param point\n */\n PolarLabel.prototype.getPointAngle = function (point) {\n return getAngleByPoint(this.getCoordinate(), point);\n };\n /**\n * 获取坐标点与圆心形成的圆的位置信息\n * @param angle\n * @param offset\n * @param point\n * @param isLabelEmit\n */\n PolarLabel.prototype.getCirclePoint = function (angle, offset, point, isLabelEmit) {\n var coordinate = this.getCoordinate();\n var center = coordinate.getCenter();\n var r = getDistanceToCenter(coordinate, point);\n if (r === 0) {\n return __assign(__assign({}, center), {\n r: r\n });\n }\n var labelAngle = angle;\n if (coordinate.isTransposed && r > offset && !isLabelEmit) {\n var appendAngle = Math.asin(offset / (2 * r));\n labelAngle = angle + appendAngle * 2;\n } else {\n r = r + offset;\n }\n return {\n x: center.x + r * Math.cos(labelAngle),\n y: center.y + r * Math.sin(labelAngle),\n r: r\n };\n };\n /**\n * 获取 label 的旋转角度\n * @param angle\n * @param offset\n * @param isLabelEmit\n */\n PolarLabel.prototype.getLabelRotate = function (angle, offset, isLabelEmit) {\n var rotate = angle + HALF_PI;\n if (isLabelEmit) {\n rotate -= HALF_PI;\n }\n if (rotate) {\n if (rotate > HALF_PI) {\n rotate = rotate - Math.PI;\n } else if (rotate < -HALF_PI) {\n rotate = rotate + Math.PI;\n }\n }\n return rotate;\n };\n // 获取中心的位置\n PolarLabel.prototype.getMiddlePoint = function (points) {\n var coordinate = this.getCoordinate();\n var count = points.length;\n var middlePoint = {\n x: 0,\n y: 0\n };\n each(points, function (point) {\n middlePoint.x += point.x;\n middlePoint.y += point.y;\n });\n middlePoint.x /= count;\n middlePoint.y /= count;\n middlePoint = coordinate.convert(middlePoint);\n return middlePoint;\n };\n // 是否居中\n PolarLabel.prototype.isToMiddle = function (mappingData) {\n return mappingData.x.length > 2;\n };\n return PolarLabel;\n}(GeometryLabel);\nexport default PolarLabel;","import { __assign, __extends } from \"tslib\";\nimport { deepMix, get, isArray } from '@antv/util';\nimport { getAngleByPoint } from '../../util/coordinate';\nimport { polarToCartesian } from '../../util/graphics';\nimport PolarLabel from './polar';\n/**\n * 饼图 label\n */\nvar PieLabel = /** @class */function (_super) {\n __extends(PieLabel, _super);\n function PieLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.defaultLayout = 'distribute';\n return _this;\n }\n PieLabel.prototype.getDefaultLabelCfg = function (offset, position) {\n var cfg = _super.prototype.getDefaultLabelCfg.call(this, offset, position);\n return deepMix({}, cfg, get(this.geometry.theme, 'pieLabels', {}));\n };\n /** @override */\n PieLabel.prototype.getLabelOffset = function (offset) {\n return _super.prototype.getLabelOffset.call(this, offset) || 0;\n };\n PieLabel.prototype.getLabelRotate = function (angle, offset, isLabelLimit) {\n var rotate;\n if (offset < 0) {\n rotate = angle;\n if (rotate > Math.PI / 2) {\n rotate = rotate - Math.PI;\n }\n if (rotate < -Math.PI / 2) {\n rotate = rotate + Math.PI;\n }\n }\n return rotate;\n };\n PieLabel.prototype.getLabelAlign = function (point) {\n var coordinate = this.getCoordinate();\n var center = coordinate.getCenter();\n var align;\n if (point.angle <= Math.PI / 2 && point.x >= center.x) {\n align = 'left';\n } else {\n align = 'right';\n }\n if (point.offset <= 0) {\n if (align === 'right') {\n align = 'left';\n } else {\n align = 'right';\n }\n }\n return align;\n };\n PieLabel.prototype.getArcPoint = function (point) {\n return point;\n };\n PieLabel.prototype.getPointAngle = function (point) {\n var coordinate = this.getCoordinate();\n var startPoint = {\n x: isArray(point.x) ? point.x[0] : point.x,\n y: point.y[0]\n };\n var endPoint = {\n x: isArray(point.x) ? point.x[1] : point.x,\n y: point.y[1]\n };\n var angle;\n var startAngle = getAngleByPoint(coordinate, startPoint);\n if (point.points && point.points[0].y === point.points[1].y) {\n angle = startAngle;\n } else {\n var endAngle = getAngleByPoint(coordinate, endPoint);\n if (startAngle >= endAngle) {\n // 100% pie slice\n endAngle = endAngle + Math.PI * 2;\n }\n angle = startAngle + (endAngle - startAngle) / 2;\n }\n return angle;\n };\n /** @override */\n PieLabel.prototype.getCirclePoint = function (angle, offset) {\n var coordinate = this.getCoordinate();\n var center = coordinate.getCenter();\n var r = coordinate.getRadius() + offset;\n return __assign(__assign({}, polarToCartesian(center.x, center.y, r, angle)), {\n angle: angle,\n r: r\n });\n };\n return PieLabel;\n}(PolarLabel);\nexport default PieLabel;","/**\n * 碰撞检测算法\n */\nexport function antiCollision(items, labelHeight, plotRange) {\n var labels = items.filter(function (item) {\n return !item.invisible;\n });\n // sorted by y, mutable\n labels.sort(function (a, b) {\n return a.y - b.y;\n });\n // adjust y position of labels to avoid overlapping\n var overlapping = true;\n var startY = plotRange.minY;\n var endY = plotRange.maxY;\n var totalHeight = Math.abs(startY - endY);\n var i;\n var maxY = 0;\n var minY = Number.MIN_VALUE;\n var boxes = labels.map(function (label) {\n if (label.y > maxY) {\n maxY = label.y;\n }\n if (label.y < minY) {\n minY = label.y;\n }\n return {\n content: label.content,\n size: labelHeight,\n targets: [label.y - startY],\n pos: null\n };\n });\n minY -= startY;\n if (maxY - startY > totalHeight) {\n totalHeight = maxY - startY;\n }\n while (overlapping) {\n /* eslint no-loop-func: 0 */\n boxes.forEach(function (box) {\n var target = (Math.min.apply(minY, box.targets) + Math.max.apply(minY, box.targets)) / 2;\n box.pos = Math.min(Math.max(minY, target - box.size / 2), totalHeight - box.size);\n box.pos = Math.max(0, box.pos);\n });\n // detect overlapping and join boxes\n overlapping = false;\n i = boxes.length;\n while (i--) {\n if (i > 0) {\n var previousBox = boxes[i - 1];\n var box = boxes[i];\n if (previousBox.pos + previousBox.size > box.pos) {\n // overlapping\n previousBox.size += box.size;\n previousBox.targets = previousBox.targets.concat(box.targets);\n // overflow, shift up\n if (previousBox.pos + previousBox.size > totalHeight) {\n previousBox.pos = totalHeight - previousBox.size;\n }\n boxes.splice(i, 1); // removing box\n overlapping = true;\n }\n }\n }\n }\n i = 0;\n // step 4: normalize y and adjust x\n boxes.forEach(function (b) {\n var posInCompositeBox = startY + labelHeight / 2; // middle of the label\n b.targets.forEach(function () {\n labels[i].y = b.pos + posInCompositeBox;\n posInCompositeBox += labelHeight;\n i++;\n });\n });\n}","import { __values } from \"tslib\";\nimport { isObject, each, get, groupBy, isNil, filter } from '@antv/util';\nimport { polarToCartesian } from '../../../../util/graphics';\nimport { antiCollision } from './util';\n/** label text和line距离 4px */\nvar MARGIN = 4;\n/**\n * 配置 labelline\n * @param item PolarLabelItem\n */\nfunction drawLabelline(item /** PolarLabelItem */, coordinate) {\n /** 坐标圆心 */\n var center = coordinate.getCenter();\n /** 圆半径 */\n var radius = coordinate.getRadius();\n if (item && item.labelLine) {\n var angle = item.angle,\n labelOffset = item.offset;\n // 贴近圆周\n var startPoint = polarToCartesian(center.x, center.y, radius, angle);\n var itemX = item.x + get(item, 'offsetX', 0) * (Math.cos(angle) > 0 ? 1 : -1);\n var itemY = item.y + get(item, 'offsetY', 0) * (Math.sin(angle) > 0 ? 1 : -1);\n var endPoint = {\n x: itemX - Math.cos(angle) * MARGIN,\n y: itemY - Math.sin(angle) * MARGIN\n };\n var smoothConnector = item.labelLine.smooth;\n var path = [];\n var dx = endPoint.x - center.x;\n var dy = endPoint.y - center.y;\n var endAngle = Math.atan(dy / dx);\n // 第三象限 & 第四象限\n if (dx < 0) {\n endAngle += Math.PI;\n }\n // 默认 smooth, undefined 也为 smooth\n if (smoothConnector === false) {\n if (!isObject(item.labelLine)) {\n // labelLine: true\n item.labelLine = {};\n }\n // 表示弧线的方向,0 表示从起点到终点沿逆时针画弧, 1 表示顺时针\n var sweepFlag = 0;\n // 第一象限\n if (angle < 0 && angle > -Math.PI / 2 || angle > Math.PI * 1.5) {\n if (endPoint.y > startPoint.y) {\n sweepFlag = 1;\n }\n }\n // 第二象限\n if (angle >= 0 && angle < Math.PI / 2) {\n if (endPoint.y > startPoint.y) {\n sweepFlag = 1;\n }\n }\n // 第三象限\n if (angle >= Math.PI / 2 && angle < Math.PI) {\n if (startPoint.y > endPoint.y) {\n sweepFlag = 1;\n }\n }\n // 第四象限\n if (angle < -Math.PI / 2 || angle >= Math.PI && angle < Math.PI * 1.5) {\n if (startPoint.y > endPoint.y) {\n sweepFlag = 1;\n }\n }\n var distance = labelOffset / 2 > 4 ? 4 : Math.max(labelOffset / 2 - 1, 0);\n var breakPoint = polarToCartesian(center.x, center.y, radius + distance, angle);\n // 圆弧的结束点\n var breakPoint3 = polarToCartesian(center.x, center.y, radius + labelOffset / 2, endAngle);\n /**\n * @example\n * M 100 100 L100 90 A 50 50 0 0 0 150 50\n * 移动至 (100, 100), 连接到 (100, 90), 以 (50, 50) 为圆心,绘制圆弧至 (150, 50);\n * A 命令的第 4 个参数 large-arc-flag, 决定弧线是大于还是小于 180 度: 0 表示小角度弧,1 表示大角\n * 第 5 个参数: 是否顺时针绘制\n */\n // 默认小弧\n var largeArcFlag = 0;\n // step1: 移动至起点\n path.push(\"M \".concat(startPoint.x, \" \").concat(startPoint.y));\n // step2: 连接拐点\n path.push(\"L \".concat(breakPoint.x, \" \").concat(breakPoint.y));\n // step3: 绘制圆弧 至 结束点\n path.push(\"A \".concat(center.x, \" \").concat(center.y, \" 0 \").concat(largeArcFlag, \" \").concat(sweepFlag, \" \").concat(breakPoint3.x, \" \").concat(breakPoint3.y));\n // step4: 连接结束点\n path.push(\"L \".concat(endPoint.x, \" \").concat(endPoint.y));\n } else {\n var breakPoint = polarToCartesian(center.x, center.y, radius + (labelOffset / 2 > 4 ? 4 : Math.max(labelOffset / 2 - 1, 0)), angle);\n // G2 旧的拉线\n // path.push('Q', `${breakPoint.x}`, `${breakPoint.y}`, `${endPoint.x}`, `${endPoint.y}`);\n var xSign = startPoint.x < center.x ? 1 : -1;\n // step1: 连接结束点\n path.push(\"M \".concat(endPoint.x, \" \").concat(endPoint.y));\n var slope1 = (startPoint.y - center.y) / (startPoint.x - center.x);\n var slope2 = (endPoint.y - center.y) / (endPoint.x - center.x);\n if (Math.abs(slope1 - slope2) > Math.pow(Math.E, -16)) {\n // step2: 绘制 curve line (起点 & 结合点与圆心的斜率不等时, 由于存在误差, 使用近似处理)\n path.push.apply(path, ['C', endPoint.x + xSign * 4, endPoint.y, 2 * breakPoint.x - startPoint.x, 2 * breakPoint.y - startPoint.y, startPoint.x, startPoint.y]);\n }\n // step3: 连接至起点\n path.push(\"L \".concat(startPoint.x, \" \").concat(startPoint.y));\n }\n item.labelLine.path = path.join(' ');\n }\n}\n/**\n * 饼图 outer-label 布局, 适用于 type = pie 且 label offset > 0 的标签\n */\nexport function pieOuterLabelLayout(originalItems, labels, shapes, region) {\n var e_1, _a;\n var items = filter(originalItems, function (item) {\n return !isNil(item);\n });\n /** 坐标系 */\n var coordinate = labels[0] && labels[0].get('coordinate');\n if (!coordinate) {\n return;\n }\n /** 坐标圆心 */\n var center = coordinate.getCenter();\n /** 圆半径 */\n var radius = coordinate.getRadius();\n /** label shapes */\n var labelsMap = {};\n try {\n for (var labels_1 = __values(labels), labels_1_1 = labels_1.next(); !labels_1_1.done; labels_1_1 = labels_1.next()) {\n var labelShape = labels_1_1.value;\n labelsMap[labelShape.get('id')] = labelShape;\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (labels_1_1 && !labels_1_1.done && (_a = labels_1.return)) _a.call(labels_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n // note labelHeight 可以控制 label 的行高\n var labelHeight = get(items[0], 'labelHeight', 14);\n var labelOffset = get(items[0], 'offset', 0);\n if (labelOffset <= 0) {\n return;\n }\n var LEFT_HALF_KEY = 'left';\n var RIGHT_HALF_KEY = 'right';\n // step 1: separate labels\n var separateLabels = groupBy(items, function (item) {\n return item.x < center.x ? LEFT_HALF_KEY : RIGHT_HALF_KEY;\n });\n var start = coordinate.start,\n end = coordinate.end;\n // step2: calculate totalHeight\n var totalHeight = Math.min((radius + labelOffset + labelHeight) * 2, coordinate.getHeight());\n var totalR = totalHeight / 2;\n /** labels 容器的范围(后续根据组件的布局设计进行调整) */\n var labelsContainerRange = {\n minX: start.x,\n maxX: end.x,\n minY: center.y - totalR,\n maxY: center.y + totalR\n };\n // step 3: antiCollision\n each(separateLabels, function (half, key) {\n var maxLabelsCountForOneSide = Math.floor(totalHeight / labelHeight);\n if (half.length > maxLabelsCountForOneSide) {\n half.sort(function (a, b) {\n // sort by percentage DESC\n return b.percent - a.percent;\n });\n each(half, function (labelItem, idx) {\n if (idx + 1 > maxLabelsCountForOneSide) {\n labelsMap[labelItem.id].set('visible', false);\n labelItem.invisible = true;\n }\n });\n }\n antiCollision(half, labelHeight, labelsContainerRange);\n });\n each(separateLabels, function (half, key) {\n each(half, function (item) {\n var isRight = key === RIGHT_HALF_KEY;\n var labelShape = labelsMap[item.id];\n // because group could not effect content-shape, should set content-shape position manually\n var content = labelShape.getChildByIndex(0);\n // textShape 发生过调整\n if (content) {\n var r = radius + labelOffset;\n // (x - cx)^2 + (y - cy)^2 = totalR^2\n var dy = item.y - center.y;\n var rPow2 = Math.pow(r, 2);\n var dyPow2 = Math.pow(dy, 2);\n var dxPow2 = rPow2 - dyPow2 > 0 ? rPow2 - dyPow2 : 0;\n var dx = Math.sqrt(dxPow2);\n var dx_offset = Math.abs(Math.cos(item.angle) * r);\n if (!isRight) {\n // left\n item.x = center.x - Math.max(dx, dx_offset);\n } else {\n // right\n item.x = center.x + Math.max(dx, dx_offset);\n }\n }\n // adjust labelShape\n if (content) {\n content.attr('y', item.y);\n content.attr('x', item.x);\n }\n drawLabelline(item, coordinate);\n });\n });\n}","import { __values } from \"tslib\";\nimport { each, get, isNil, deepMix, groupBy } from '@antv/util';\nimport { polarToCartesian } from '../../../../util/graphics';\nimport { antiCollision } from './util';\nimport { translate } from '../../../../util/transform';\n/** 拐点偏移量, 暂不可配置 */\nvar INFLECTION_OFFSET = 4;\n/** 标签偏移量, distance between label and edge: offsetX */\nvar LABEL_OFFSET_X = 4;\n/** 标签与牵引线的偏移量 */\nvar LABEL_TEXT_LINE_OFFSET = 4;\nfunction drawLabelline(item, coordinate, inRight) {\n /** 坐标圆心 */\n var center = coordinate.getCenter();\n /** 圆半径 */\n var radius = coordinate.getRadius();\n var startPoint = {\n x: item.x - (inRight ? LABEL_TEXT_LINE_OFFSET : -LABEL_TEXT_LINE_OFFSET),\n y: item.y\n };\n var inflectionPoint = polarToCartesian(center.x, center.y, radius + INFLECTION_OFFSET, item.angle);\n var p1 = {\n x: startPoint.x,\n y: startPoint.y\n };\n var p2 = {\n x: inflectionPoint.x,\n y: inflectionPoint.y\n };\n var endPoint = polarToCartesian(center.x, center.y, radius, item.angle);\n var path = '';\n // 文本被调整下去了,则添加拐点连接线\n if (startPoint.y !== inflectionPoint.y) {\n var offset = inRight ? 4 : -4;\n p1.y = startPoint.y;\n /** 是否在第一象限 */\n if (item.angle < 0 && item.angle >= -Math.PI / 2) {\n p1.x = Math.max(inflectionPoint.x, startPoint.x - offset);\n if (startPoint.y < inflectionPoint.y) {\n p2.y = p1.y;\n } else {\n p2.y = inflectionPoint.y;\n p2.x = Math.max(p2.x, p1.x - offset);\n }\n }\n /** 是否在 第二象限 */\n if (item.angle > 0 && item.angle < Math.PI / 2) {\n p1.x = Math.max(inflectionPoint.x, startPoint.x - offset);\n if (startPoint.y > inflectionPoint.y) {\n p2.y = p1.y;\n } else {\n p2.y = inflectionPoint.y;\n p2.x = Math.max(p2.x, p1.x - offset);\n }\n }\n /** 是否在 第三象限 */\n if (item.angle > Math.PI / 2) {\n p1.x = Math.min(inflectionPoint.x, startPoint.x - offset);\n if (startPoint.y > inflectionPoint.y) {\n p2.y = p1.y;\n } else {\n p2.y = inflectionPoint.y;\n p2.x = Math.min(p2.x, p1.x - offset);\n }\n }\n /** 是否在 第四象限 */\n if (item.angle < -Math.PI / 2) {\n p1.x = Math.min(inflectionPoint.x, startPoint.x - offset);\n if (startPoint.y < inflectionPoint.y) {\n p2.y = p1.y;\n } else {\n p2.y = inflectionPoint.y;\n p2.x = Math.min(p2.x, p1.x - offset);\n }\n }\n }\n path = [\"M \".concat(startPoint.x, \",\").concat(startPoint.y), \"L \".concat(p1.x, \",\").concat(p1.y), \"L \".concat(p2.x, \",\").concat(p2.y), \"L \".concat(inflectionPoint.x, \",\").concat(inflectionPoint.y), \"L \".concat(endPoint.x, \",\").concat(endPoint.y)].join(' ');\n item.labelLine = deepMix({}, item.labelLine, {\n path: path\n });\n}\n/**\n * 饼图标签 spider 布局, 只适用于 pie-spider 的标签类型\n * region 应该是 labelsRenderer 容器的范围限制(便于后续组件间布局)\n */\nexport function pieSpiderLabelLayout(items, labels, shapes, region) {\n var e_1, _a;\n /** 坐标系 */\n var coordinate = labels[0] && labels[0].get('coordinate');\n if (!coordinate) {\n return;\n }\n /** 坐标圆心 */\n var center = coordinate.getCenter();\n /** 圆半径 */\n var radius = coordinate.getRadius();\n /** label shapes */\n var labelsMap = {};\n try {\n for (var labels_1 = __values(labels), labels_1_1 = labels_1.next(); !labels_1_1.done; labels_1_1 = labels_1.next()) {\n var labelShape = labels_1_1.value;\n labelsMap[labelShape.get('id')] = labelShape;\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (labels_1_1 && !labels_1_1.done && (_a = labels_1.return)) _a.call(labels_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n var labelHeight = get(items[0], 'labelHeight', 14);\n var labelOffset = Math.max(get(items[0], 'offset', 0), INFLECTION_OFFSET);\n // step 1: adjust items to spider\n each(items, function (item) {\n if (!item) return;\n var label = get(labelsMap, [item.id]);\n if (!label) return;\n var inRight = item.x > center.x || item.x === center.x && item.y > center.y;\n var offsetX = !isNil(item.offsetX) ? item.offsetX : LABEL_OFFSET_X;\n var inflectionPoint = polarToCartesian(center.x, center.y, radius + INFLECTION_OFFSET, item.angle);\n var totalOffset = labelOffset + offsetX;\n item.x = center.x + (inRight ? 1 : -1) * (radius + totalOffset);\n item.y = inflectionPoint.y;\n });\n var start = coordinate.start,\n end = coordinate.end;\n var LEFT_HALF_KEY = 'left';\n var RIGHT_HALF_KEY = 'right';\n // step 1: separate labels\n var separateLabels = groupBy(items, function (item) {\n return item.x < center.x ? LEFT_HALF_KEY : RIGHT_HALF_KEY;\n });\n // step2: calculate totalHeight\n var totalHeight = (radius + labelOffset) * 2 + labelHeight;\n each(separateLabels, function (half) {\n var halfHeight = half.length * labelHeight;\n if (halfHeight > totalHeight) {\n totalHeight = Math.min(halfHeight, Math.abs(start.y - end.y));\n }\n });\n /** labels 容器的范围(后续根据组件的布局设计进行调整) */\n var labelsContainerRange = {\n minX: start.x,\n maxX: end.x,\n minY: center.y - totalHeight / 2,\n maxY: center.y + totalHeight / 2\n };\n // step 3: antiCollision\n each(separateLabels, function (half, key) {\n var maxLabelsCountForOneSide = totalHeight / labelHeight;\n if (half.length > maxLabelsCountForOneSide) {\n half.sort(function (a, b) {\n // sort by percentage DESC\n return b.percent - a.percent;\n });\n each(half, function (labelItem, idx) {\n if (idx > maxLabelsCountForOneSide) {\n labelsMap[labelItem.id].set('visible', false);\n labelItem.invisible = true;\n }\n });\n }\n antiCollision(half, labelHeight, labelsContainerRange);\n });\n var startY = labelsContainerRange.minY;\n var endY = labelsContainerRange.maxY;\n // step4: applyTo labels and adjust labelLines\n each(separateLabels, function (half, key) {\n var inRight = key === RIGHT_HALF_KEY;\n each(half, function (item) {\n var label = get(labelsMap, item && [item.id]);\n if (!label) {\n return;\n }\n // out of range, hidden\n if (item.y < startY || item.y > endY) {\n label.set('visible', false);\n return;\n }\n var labelContent = label.getChildByIndex(0);\n var box = labelContent.getCanvasBBox();\n var originalPos = {\n x: inRight ? box.x : box.maxX,\n y: box.y + box.height / 2 /** vertical-align: middle */\n };\n translate(labelContent, item.x - originalPos.x /** 从 pos.x 移动到 item.x */, item.y - originalPos.y);\n // adjust labelLines\n if (item.labelLine) {\n drawLabelline(item, coordinate, inRight);\n }\n });\n });\n}","import { each } from '@antv/util';\nvar MAX_TIMES = 100;\n/**\n * @ignore\n * Greedy 贪婪算法\n */\nvar Greedy = /** @class */function () {\n function Greedy(cfg) {\n if (cfg === void 0) {\n cfg = {};\n }\n this.bitmap = {};\n var _a = cfg.xGap,\n xGap = _a === void 0 ? 1 : _a,\n _b = cfg.yGap,\n yGap = _b === void 0 ? 8 : _b;\n this.xGap = xGap;\n this.yGap = yGap;\n }\n Greedy.prototype.hasGap = function (bbox) {\n var hasGap = true;\n var bitmap = this.bitmap;\n var minX = Math.round(bbox.minX);\n var maxX = Math.round(bbox.maxX);\n var minY = Math.round(bbox.minY);\n var maxY = Math.round(bbox.maxY);\n for (var i = minX; i <= maxX; i += 1) {\n if (!bitmap[i]) {\n bitmap[i] = {};\n continue;\n }\n if (i === minX || i === maxX) {\n for (var j = minY; j <= maxY; j++) {\n if (bitmap[i][j]) {\n hasGap = false;\n break;\n }\n }\n } else {\n if (bitmap[i][minY] || bitmap[i][maxY]) {\n hasGap = false;\n break;\n }\n }\n }\n return hasGap;\n };\n Greedy.prototype.fillGap = function (bbox) {\n var bitmap = this.bitmap;\n var minX = Math.round(bbox.minX);\n var maxX = Math.round(bbox.maxX);\n var minY = Math.round(bbox.minY);\n var maxY = Math.round(bbox.maxY);\n // filling grid\n for (var i = minX; i <= maxX; i += 1) {\n if (!bitmap[i]) {\n bitmap[i] = {};\n }\n }\n for (var i = minX; i <= maxX; i += this.xGap) {\n for (var j = minY; j <= maxY; j += this.yGap) {\n bitmap[i][j] = true;\n }\n bitmap[i][maxY] = true;\n }\n // filling y edges\n if (this.yGap !== 1) {\n for (var i = minY; i <= maxY; i += 1) {\n bitmap[minX][i] = true;\n bitmap[maxX][i] = true;\n }\n }\n // filling x edges\n if (this.xGap !== 1) {\n for (var i = minX; i <= maxX; i += 1) {\n bitmap[i][minY] = true;\n bitmap[i][maxY] = true;\n }\n }\n };\n Greedy.prototype.destroy = function () {\n this.bitmap = {};\n };\n return Greedy;\n}();\nfunction spiralFill(label, greedy, maxTimes) {\n if (maxTimes === void 0) {\n maxTimes = MAX_TIMES;\n }\n var dt = -1;\n var _a = label.attr(),\n x = _a.x,\n y = _a.y;\n var bbox = label.getCanvasBBox();\n var maxDelta = Math.sqrt(bbox.width * bbox.width + bbox.height * bbox.height);\n var dxdy;\n var t = -dt;\n var dx = 0;\n var dy = 0;\n var f = function f(param) {\n var nt = param * 0.1;\n return [nt * Math.cos(nt), nt * Math.sin(nt)];\n };\n if (greedy.hasGap(bbox)) {\n greedy.fillGap(bbox);\n return true;\n }\n var canFill = false;\n var times = 0;\n var accessedCache = {};\n while (Math.min(Math.abs(dx), Math.abs(dy)) < maxDelta && times < maxTimes) {\n dxdy = f(t += dt);\n dx = ~~dxdy[0];\n dy = ~~dxdy[1];\n if (!dx && !dy || accessedCache[\"\".concat(dx, \"-\").concat(dy)]) {\n continue;\n }\n label.attr({\n x: x + dx,\n y: y + dy\n });\n if (dx + dy < 0) {\n label.attr('textAlign', 'right');\n }\n times++;\n if (greedy.hasGap(label.getCanvasBBox())) {\n greedy.fillGap(label.getCanvasBBox());\n canFill = true;\n accessedCache[\"\".concat(dx, \"-\").concat(dy)] = true;\n break;\n }\n }\n return canFill;\n}\n/*\n * 根据如下规则尝试放置label\n * 5\n * ------------------\n * | 1 | 0 |\n * 8 —————————4———————— 7\n * | 2 | 3 |\n * ——————————————————\n * 6\n */\nfunction adjustLabelPosition(label, x, y, index) {\n var _a = label.getCanvasBBox(),\n width = _a.width,\n height = _a.height;\n var attrs = {\n x: x,\n y: y,\n textAlign: 'center'\n };\n switch (index) {\n case 0:\n attrs.y -= height + 1;\n attrs.x += 1;\n attrs.textAlign = 'left';\n break;\n case 1:\n attrs.y -= height + 1;\n attrs.x -= 1;\n attrs.textAlign = 'right';\n break;\n case 2:\n attrs.y += height + 1;\n attrs.x -= 1;\n attrs.textAlign = 'right';\n break;\n case 3:\n attrs.y += height + 1;\n attrs.x += 1;\n attrs.textAlign = 'left';\n break;\n case 5:\n attrs.y -= height * 2 + 2;\n break;\n case 6:\n attrs.y += height * 2 + 2;\n break;\n case 7:\n attrs.x += width + 1;\n attrs.textAlign = 'left';\n break;\n case 8:\n attrs.x -= width + 1;\n attrs.textAlign = 'right';\n break;\n default:\n break;\n }\n label.attr(attrs);\n return label.getCanvasBBox();\n}\n/**\n * @ignore\n * label 防遮挡布局:在不改变 label 位置的情况下对相互重叠的 label 进行调整。\n * 不同于 'overlap' 类型的布局,该布局不会对 label 的位置进行偏移调整。\n * @param labels 参与布局调整的 label 数组集合\n */\nexport function fixedOverlap(items, labels, shapes, region) {\n var greedy = new Greedy();\n each(labels, function (label) {\n var labelShape = label.find(function (shape) {\n return shape.get('type') === 'text';\n });\n if (!spiralFill(labelShape, greedy)) {\n label.remove(true);\n }\n });\n greedy.destroy();\n}\n/**\n * @ignore\n * label 防遮挡布局:为了防止 label 之间相互覆盖同时保证尽可能多 的 label 展示,通过尝试将 label 向**四周偏移**来剔除放不下的 label\n * @param labels 参与布局调整的 label 数组集合\n */\nexport function overlap(items, labels, shapes, region) {\n var greedy = new Greedy();\n each(labels, function (label) {\n var labelShape = label.find(function (shape) {\n return shape.get('type') === 'text';\n });\n var _a = labelShape.attr(),\n x = _a.x,\n y = _a.y;\n var canFill = false;\n for (var i = 0; i <= 8; i++) {\n var bbox = adjustLabelPosition(labelShape, x, y, i);\n if (greedy.hasGap(bbox)) {\n greedy.fillGap(bbox);\n canFill = true;\n break;\n }\n }\n if (!canFill) {\n label.remove(true);\n }\n });\n greedy.destroy();\n}","import { __read, __spreadArray } from \"tslib\";\nfunction dot(a, b) {\n return (a[0] || 0) * (b[0] || 0) + (a[1] || 0) * (b[1] || 0) + (a[2] || 0) * (b[2] || 0);\n}\n/**\n * @private\n * 1. 获取投影轴\n */\nfunction getAxes(points /** 多边形的关键点 */) {\n // 目前先处理 平行矩形 的场景, 其他多边形不处理\n if (points.length > 4) {\n return [];\n }\n // 获取向量\n var vector = function vector(start, end) {\n return [end.x - start.x, end.y - start.y];\n };\n // 由于 矩形的平行原理,所以只有 2 条投影轴: A -> B, B -> C\n var AB = vector(points[0], points[1]);\n var BC = vector(points[1], points[2]);\n return [AB, BC];\n}\n/**\n * @private\n * 绕指定点顺时针旋转后的点坐标\n * 默认绕原点旋转\n */\nfunction rotateAtPoint(point, deg, origin) {\n if (deg === void 0) {\n deg = 0;\n }\n if (origin === void 0) {\n origin = {\n x: 0,\n y: 0\n };\n }\n var x = point.x,\n y = point.y;\n return {\n x: (x - origin.x) * Math.cos(-deg) + (y - origin.y) * Math.sin(-deg) + origin.x,\n y: (origin.x - x) * Math.sin(-deg) + (y - origin.y) * Math.cos(-deg) + origin.y\n };\n}\n/**\n * @private\n * 转化为顶点坐标数组\n *\n * @param {Object} box\n */\nfunction getRectPoints(box) {\n var points = [{\n x: box.x,\n y: box.y\n }, {\n x: box.x + box.width,\n y: box.y\n }, {\n x: box.x + box.width,\n y: box.y + box.height\n }, {\n x: box.x,\n y: box.y + box.height\n }];\n var rotation = box.rotation;\n if (rotation) {\n return [rotateAtPoint(points[0], rotation, points[0]), rotateAtPoint(points[1], rotation, points[0]), rotateAtPoint(points[2], rotation, points[0]), rotateAtPoint(points[3], rotation, points[0])];\n }\n return points;\n}\n/**\n * @private\n * 2. 获取多边形在投影轴上的投影\n *\n * 向量的点积的其中一个几何含义是:一个向量在平行于另一个向量方向上的投影的数值乘积。\n * 由于投影轴是单位向量(长度为1),投影的长度为 x1 * x2 + y1 * y2\n */\nfunction getProjection(points /** 多边形的关键点 */, axis) {\n // 目前先处理矩形的场景\n if (points.length > 4) {\n return {\n min: 0,\n max: 0\n };\n }\n var scalars = [];\n points.forEach(function (point) {\n scalars.push(dot([point.x, point.y], axis));\n });\n return {\n min: Math.min.apply(Math, __spreadArray([], __read(scalars), false)),\n max: Math.max.apply(Math, __spreadArray([], __read(scalars), false))\n };\n}\nfunction isProjectionOverlap(projection1, projection2) {\n return projection1.max > projection2.min && projection1.min < projection2.max;\n}\nfunction isValidNumber(d) {\n return typeof d === 'number' && !Number.isNaN(d) && d !== Infinity && d !== -Infinity;\n}\nfunction isValidBox(box) {\n return ['x', 'y', 'width', 'height'].every(function (attr) {\n return isValidNumber(box[attr]);\n });\n}\n/**\n * 快速判断两个无旋转矩形是否遮挡\n */\nexport function isIntersectRect(box1, box2, margin) {\n if (margin === void 0) {\n margin = 0;\n }\n return !(box2.x > box1.x + box1.width + margin || box2.x + box2.width < box1.x - margin || box2.y > box1.y + box1.height + margin || box2.y + box2.height < box1.y - margin);\n}\n/**\n * detect whether two shape is intersected, useful when shape is been rotated\n * 判断两个矩形是否重叠(相交和包含, 是否旋转)\n *\n * - 原理: 分离轴定律\n */\nexport function intersect(box1, box2, margin) {\n if (margin === void 0) {\n margin = 0;\n }\n // 如果两个 box 中有一个是不合法的 box,也就是不会被渲染出来的,那么它们就不相交。\n if (!isValidBox(box1) || !isValidBox(box2)) return false;\n // 如果两个矩形没有旋转,使用快速判断\n if (!box1.rotation && !box2.rotation) {\n return isIntersectRect(box1, box2, margin);\n }\n // 分别获取 4 个关键点\n var rect1Points = getRectPoints(box1);\n var rect2Points = getRectPoints(box2);\n // 获取所有投影轴\n var axes = getAxes(rect1Points).concat(getAxes(rect2Points));\n for (var i = 0; i < axes.length; i++) {\n var axis = axes[i];\n var projection1 = getProjection(rect1Points, axis);\n var projection2 = getProjection(rect2Points, axis);\n // 判断投影轴上的投影是否存在重叠,若检测到存在间隙则立刻退出判断,消除不必要的运算。\n if (!isProjectionOverlap(projection1, projection2)) {\n return false;\n }\n }\n return true;\n}","import { isFunction } from '@antv/util';\nvar MyWorker = /** @class */function () {\n function MyWorker(url) {\n var _this = this;\n this.queue = [];\n this.worker = new Worker(url);\n this.worker.onmessage = function (e) {\n var _a;\n (_a = _this.queue.shift()) === null || _a === void 0 ? void 0 : _a.resolve(e);\n };\n this.worker.onmessageerror = function (e) {\n var _a;\n console.warn('[AntV G2] Web worker is not available');\n (_a = _this.queue.shift()) === null || _a === void 0 ? void 0 : _a.reject(e);\n };\n }\n MyWorker.prototype.post = function (params, onError) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n _this.queue.push({\n resolve: resolve,\n reject: reject\n });\n try {\n _this.worker.postMessage(params);\n } catch (e) {\n console.warn('[AntV G2] Web worker is not available');\n isFunction(onError) && onError();\n }\n });\n };\n MyWorker.prototype.destroy = function () {\n this.worker.terminate();\n };\n return MyWorker;\n}();\nexport function createWorker(f) {\n if (typeof window === 'undefined') return;\n var blob;\n try {\n blob = new Blob([f.toString()], {\n type: 'application/javascript'\n });\n } catch (e) {\n // @ts-ignore\n blob = new window.BlobBuilder();\n blob.append(f.toString());\n blob = blob.getBlob();\n }\n return new MyWorker(URL.createObjectURL(blob));\n}","var onmessage = function onmessage(e) {\n // Copy from src/util/collision-detect.ts\n function generateUtils() {\n function dot(a, b) {\n return (a[0] || 0) * (b[0] || 0) + (a[1] || 0) * (b[1] || 0) + (a[2] || 0) * (b[2] || 0);\n }\n /**\n * 1. 获取投影轴\n */\n function getAxes(points /** 多边形的关键点 */) {\n // 目前先处理 平行矩形 的场景, 其他多边形不处理\n if (points.length > 4) {\n return [];\n }\n // 获取向量\n var vector = function vector(start, end) {\n return [end.x - start.x, end.y - start.y];\n };\n // 由于 矩形的平行原理,所以只有 2 条投影轴: A -> B, B -> C\n var AB = vector(points[0], points[1]);\n var BC = vector(points[1], points[2]);\n return [AB, BC];\n }\n /**\n * 绕指定点顺时针旋转后的点坐标\n * 默认绕原点旋转\n */\n function rotateAtPoint(point, deg, origin) {\n if (deg === void 0) {\n deg = 0;\n }\n if (origin === void 0) {\n origin = {\n x: 0,\n y: 0\n };\n }\n var x = point.x,\n y = point.y;\n return {\n x: (x - origin.x) * Math.cos(-deg) + (y - origin.y) * Math.sin(-deg) + origin.x,\n y: (origin.x - x) * Math.sin(-deg) + (y - origin.y) * Math.cos(-deg) + origin.y\n };\n }\n /**\n * @private\n * 转化为顶点坐标数组\n *\n * @param {Object} box\n */\n function getRectPoints(box) {\n var points = [{\n x: box.x,\n y: box.y\n }, {\n x: box.x + box.width,\n y: box.y\n }, {\n x: box.x + box.width,\n y: box.y + box.height\n }, {\n x: box.x,\n y: box.y + box.height\n }];\n var rotation = box.rotation;\n if (rotation) {\n return [rotateAtPoint(points[0], rotation, points[0]), rotateAtPoint(points[1], rotation, points[0]), rotateAtPoint(points[2], rotation, points[0]), rotateAtPoint(points[3], rotation, points[0])];\n }\n return points;\n }\n /**\n * 2. 获取多边形在投影轴上的投影\n *\n * 向量的点积的其中一个几何含义是:一个向量在平行于另一个向量方向上的投影的数值乘积。\n * 由于投影轴是单位向量(长度为1),投影的长度为 x1 * x2 + y1 * y2\n */\n function getProjection(points /** 多边形的关键点 */, axis) {\n // 目前先处理矩形的场景\n if (points.length > 4) {\n return {\n min: 0,\n max: 0\n };\n }\n var scalars = [];\n points.forEach(function (point) {\n scalars.push(dot([point.x, point.y], axis));\n });\n return {\n min: Math.min.apply(null, scalars),\n max: Math.max.apply(null, scalars)\n };\n }\n function isProjectionOverlap(projection1, projection2) {\n return projection1.max > projection2.min && projection1.min < projection2.max;\n }\n function isValidNumber(d) {\n return typeof d === 'number' && !Number.isNaN(d) && d !== Infinity && d !== -Infinity;\n }\n function isValidBox(box) {\n return ['x', 'y', 'width', 'height'].every(function (attr) {\n return isValidNumber(box[attr]);\n });\n }\n function isIntersectRect(box1, box2, margin) {\n if (margin === void 0) {\n margin = 0;\n }\n return !(box2.x > box1.x + box1.width + margin || box2.x + box2.width < box1.x - margin || box2.y > box1.y + box1.height + margin || box2.y + box2.height < box1.y - margin);\n }\n function intersect(box1, box2, margin) {\n if (margin === void 0) {\n margin = 0;\n }\n if (!isValidBox(box1) || !isValidBox(box2)) return false;\n // Quick detect, if rotation is null or zero.\n if (!box1.rotation && !box2.rotation) {\n return isIntersectRect(box1, box2, margin);\n }\n // 分别获取 4 个关键点\n var rect1Points = getRectPoints(box1);\n var rect2Points = getRectPoints(box2);\n // 获取所有投影轴\n var axes = getAxes(rect1Points).concat(getAxes(rect2Points));\n for (var i = 0; i < axes.length; i++) {\n var axis = axes[i];\n var projection1 = getProjection(rect1Points, axis);\n var projection2 = getProjection(rect2Points, axis);\n if (!isProjectionOverlap(projection1, projection2)) return false;\n }\n return true;\n }\n return {\n intersect: intersect\n };\n }\n var intersect = generateUtils().intersect;\n // Label layouts.\n function hideOverlap(items) {\n var boxes = items.slice();\n for (var i = 0; i < boxes.length; i++) {\n var box1 = boxes[i];\n if (box1.visible) {\n for (var j = i + 1; j < boxes.length; j++) {\n var box2 = boxes[j];\n if (box1 !== box2 && box2.visible) {\n if (intersect(box1, box2)) {\n box2.visible = false;\n }\n }\n }\n }\n }\n return boxes;\n }\n var methods = {\n 'hide-overlap': hideOverlap\n };\n // Main\n try {\n var eventData = JSON.parse(e.data);\n if (!eventData || !eventData.type || !methods[eventData.type]) return;\n var type = eventData.type,\n items = eventData.items;\n var result = methods[type](items);\n self.postMessage(result);\n } catch (e) {\n throw e;\n }\n};\nvar code = \"\\n self.onmessage = \".concat(onmessage.toString(), \"\\n\");\nexport { code };","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { get, each } from '@antv/util';\nimport { intersect } from '../../../util/collision-detect';\nimport { getLabelBackgroundInfo } from '../util';\nimport { createWorker } from '../util/createWorker';\nimport { code as layoutCode } from './worker/hide-overlap';\nvar layout = function layout(items) {\n var boxes = items.slice();\n for (var i = 0; i < boxes.length; i++) {\n var box1 = boxes[i];\n if (box1.visible) {\n for (var j = i + 1; j < boxes.length; j++) {\n var box2 = boxes[j];\n if (box1 !== box2 && box2.visible) {\n if (intersect(box1, box2)) {\n box2.visible = false;\n }\n }\n }\n }\n }\n return boxes;\n};\nvar cache = new Map();\nvar worker = createWorker(layoutCode);\n/**\n * label 防遮挡布局:在不改变 label 位置的情况下对相互重叠的 label 进行隐藏(非移除)\n * 不同于 'overlap' 类型的布局,该布局不会对 label 的位置进行偏移调整。\n * @param labels 参与布局调整的 label 数组集合\n */\nexport function hideOverlap(labelItems, labels, shapes, region) {\n return __awaiter(this, void 0, void 0, function () {\n var boxes, memoKey, cb, params, res, e_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n boxes = labels.map(function (d, idx) {\n return __assign(__assign({}, getLabelBackgroundInfo(d, labelItems[idx], get(labelItems[idx], 'background.padding'))), {\n visible: true\n });\n });\n memoKey = JSON.stringify(boxes);\n cb = function cb(items) {\n cache.set(memoKey, items);\n each(items, function (_a, idx) {\n var visible = _a.visible;\n var labelShape = labels[idx];\n if (visible) {\n labelShape === null || labelShape === void 0 ? void 0 : labelShape.show();\n } else {\n labelShape === null || labelShape === void 0 ? void 0 : labelShape.hide();\n }\n });\n return items;\n };\n if (!cache.get(memoKey)) return [3 /*break*/, 1];\n cb(cache.get(memoKey));\n return [3 /*break*/, 7];\n case 1:\n if (!worker) return [3 /*break*/, 6];\n _a.label = 2;\n case 2:\n _a.trys.push([2, 4,, 5]);\n params = JSON.stringify({\n type: 'hide-overlap',\n items: boxes\n });\n return [4 /*yield*/, worker.post(params, function () {\n return cb(layout(boxes));\n })];\n case 3:\n res = _a.sent();\n cb(Array.isArray(res.data) ? res.data : []);\n return [3 /*break*/, 5];\n case 4:\n e_1 = _a.sent();\n console.error(e_1);\n cb(layout(boxes));\n return [3 /*break*/, 5];\n case 5:\n return [3 /*break*/, 7];\n case 6:\n // Normal layout in main thread.\n cb(layout(boxes));\n _a.label = 7;\n case 7:\n return [2 /*return*/];\n }\n });\n });\n}","import { __read } from \"tslib\";\nimport colorUtil from '@antv/color-util';\n// 内置的一些特殊设置\nvar preset = {\n '#5B8FF9': true\n};\n// 根据YIQ亮度判断指定颜色取反色是不是白色\n// http://24ways.org/2010/calculating-color-contrast\n// http://www.w3.org/TR/AERT#color-contrast\nexport var isContrastColorWhite = function isContrastColorWhite(color) {\n var rgb = colorUtil.toRGB(color).toUpperCase();\n if (preset[rgb]) {\n return preset[rgb];\n }\n var _a = __read(colorUtil.rgb2arr(rgb), 3),\n r = _a[0],\n g = _a[1],\n b = _a[2];\n var isDark = (r * 299 + g * 587 + b * 114) / 1000 < 128;\n return isDark;\n};","var ctx;\n/**\n * 获取 canvas context\n */\nexport function getCanvasContext() {\n if (!ctx) {\n ctx = document.createElement('canvas').getContext('2d');\n }\n return ctx;\n}","import { BBox } from '../../../../util/bbox';\nimport { findLabelTextShape } from '../../util';\nfunction shouldInShapeSingle(geometry, label, shape) {\n var coordinate = geometry.coordinate;\n var textShape = findLabelTextShape(label);\n var textBBox = BBox.fromObject(textShape.getCanvasBBox());\n var shapeBBox = BBox.fromObject(shape.getBBox());\n return coordinate.isTransposed ? shapeBBox.height >= textBBox.height : shapeBBox.width >= textBBox.width;\n}\nfunction shouldInShape(geometry, labels, shapes) {\n var isStack = !!geometry.getAdjust('stack');\n return isStack || labels.every(function (label, index) {\n var shape = shapes[index];\n return shouldInShapeSingle(geometry, label, shape);\n });\n}\nfunction moveInShape(geometry, label, shape) {\n var coordinate = geometry.coordinate;\n var shapeBBox = BBox.fromObject(shape.getBBox());\n var textShape = findLabelTextShape(label);\n if (coordinate.isTransposed) {\n // 水平方向:条形图系列\n textShape.attr({\n x: shapeBBox.minX + shapeBBox.width / 2,\n textAlign: 'center'\n });\n } else {\n // 垂直方向:柱形图系列\n textShape.attr({\n y: shapeBBox.minY + shapeBBox.height / 2,\n textBaseline: 'middle'\n });\n }\n}\n/**\n * 适用于 interval geometry 的数据标签位置自动调整布局方法\n * @param items\n * @param labels\n * @param shapes\n */\nexport function intervalAdjustPosition(items, labels, shapes) {\n var _a;\n if (shapes.length === 0) {\n return;\n }\n var element = (_a = shapes[0]) === null || _a === void 0 ? void 0 : _a.get('element');\n var geometry = element === null || element === void 0 ? void 0 : element.geometry;\n if (!geometry || geometry.type !== 'interval') {\n return;\n }\n var inShape = shouldInShape(geometry, labels, shapes);\n if (inShape) {\n shapes.forEach(function (shape, index) {\n var label = labels[index];\n moveInShape(geometry, label, shape);\n });\n }\n}","import { __read, __spreadArray } from \"tslib\";\nimport { groupBy, keys, map } from '@antv/util';\nimport { findLabelTextShape } from '../../util';\n/**\n * 对同一组(相同 xField )的 Label 进行排序:第一个、最后一个、其他...\n * @param geometry\n * @param labels\n */\nfunction sortLabels(geometry, labels) {\n var yField = geometry.getXYFields()[1];\n var result = [];\n var sortedLabels = labels.sort(function (left, right) {\n return left.get('data')[yField] - left.get('data')[yField];\n });\n if (sortedLabels.length > 0) {\n result.push(sortedLabels.shift());\n }\n if (sortedLabels.length > 0) {\n result.push(sortedLabels.pop());\n }\n result.push.apply(result, __spreadArray([], __read(sortedLabels), false));\n return result;\n}\nfunction hasSome(dones, current, compare) {\n return dones.some(function (done) {\n return compare(done, current);\n });\n}\n/**\n * 计算两个矩形之间的堆叠区域面积\n */\nfunction getOverlapArea(a, b, margin) {\n if (margin === void 0) {\n margin = 0;\n }\n var xOverlap = Math.max(0, Math.min(a.x + a.width + margin, b.x + b.width + margin) - Math.max(a.x - margin, b.x - margin));\n var yOverlap = Math.max(0, Math.min(a.y + a.height + margin, b.y + b.height + margin) - Math.max(a.y - margin, b.y - margin));\n return xOverlap * yOverlap;\n}\n/**\n * 判断新添加的 Label 是否和已存在的发生重叠\n * @param dones\n * @param current\n */\nfunction checkShapeOverlap(dones, current) {\n return hasSome(dones, current, function (left, right) {\n var leftText = findLabelTextShape(left);\n var rightText = findLabelTextShape(right);\n return getOverlapArea(leftText.getCanvasBBox(), rightText.getCanvasBBox(), 2) > 0;\n });\n}\n/**\n * 适用于 point geometry 的数据标签位置自动调整布局方法\n * @param items\n * @param labels\n * @param shapes\n * @param region\n * @param cfg\n */\nexport function pointAdjustPosition(items, labels, shapes, region, cfg) {\n var _a, _b;\n if (shapes.length === 0) {\n return;\n }\n var element = (_a = shapes[0]) === null || _a === void 0 ? void 0 : _a.get('element');\n var geometry = element === null || element === void 0 ? void 0 : element.geometry;\n if (!geometry || geometry.type !== 'point') {\n return;\n }\n var _c = __read(geometry.getXYFields(), 2),\n xField = _c[0],\n yField = _c[1];\n var groupedLabels = groupBy(labels, function (label) {\n return label.get('data')[xField];\n });\n var dones = [];\n var offset = cfg && cfg.offset || ((_b = items[0]) === null || _b === void 0 ? void 0 : _b.offset) || 12;\n map(keys(groupedLabels).reverse(), function (xValue) {\n var sortedCollections = sortLabels(geometry, groupedLabels[xValue]);\n while (sortedCollections.length) {\n var current = sortedCollections.shift();\n var textShape = findLabelTextShape(current);\n if (hasSome(dones, current, function (left, right) {\n return left.get('data')[xField] === right.get('data')[xField] && left.get('data')[yField] === right.get('data')[yField];\n })) {\n // 重复位置,直接隐藏\n textShape.set('visible', false);\n continue;\n }\n var upFail = checkShapeOverlap(dones, current);\n var downFail = false;\n if (upFail) {\n textShape.attr('y', textShape.attr('y') + 2 * offset);\n downFail = checkShapeOverlap(dones, current);\n }\n if (downFail) {\n textShape.set('visible', false);\n continue;\n }\n dones.push(current);\n }\n });\n}","import { __read, __spreadArray } from \"tslib\";\nimport { groupBy, keys, map } from '@antv/util';\nimport { findLabelTextShape } from '../../util';\n/**\n * 对同一组(相同 xField )的 Label 进行排序:第一个、最后一个、其他...\n * @param geometry\n * @param labels\n */\nfunction sortLabels(geometry, labels) {\n var yField = geometry.getXYFields()[1];\n var result = [];\n var sortedLabels = labels.sort(function (left, right) {\n return left.get('data')[yField] - left.get('data')[yField];\n });\n if (sortedLabels.length > 0) {\n result.push(sortedLabels.shift());\n }\n if (sortedLabels.length > 0) {\n result.push(sortedLabels.pop());\n }\n result.push.apply(result, __spreadArray([], __read(sortedLabels), false));\n return result;\n}\nfunction hasSome(dones, current, compare) {\n return dones.some(function (done) {\n return compare(done, current);\n });\n}\n/**\n * 计算两个矩形之间的堆叠区域面积\n */\nfunction getOverlapArea(a, b, margin) {\n if (margin === void 0) {\n margin = 0;\n }\n var xOverlap = Math.max(0, Math.min(a.x + a.width + margin, b.x + b.width + margin) - Math.max(a.x - margin, b.x - margin));\n var yOverlap = Math.max(0, Math.min(a.y + a.height + margin, b.y + b.height + margin) - Math.max(a.y - margin, b.y - margin));\n return xOverlap * yOverlap;\n}\n/**\n * 判断新添加的 Label 是否和已存在的发生重叠\n * @param dones\n * @param current\n */\nfunction checkShapeOverlap(dones, current) {\n return hasSome(dones, current, function (left, right) {\n var leftText = findLabelTextShape(left);\n var rightText = findLabelTextShape(right);\n return getOverlapArea(leftText.getCanvasBBox(), rightText.getCanvasBBox(), 2) > 0;\n });\n}\n/**\n * 适用于 point geometry 的数据标签位置自动调整布局方法\n * @param items\n * @param labels\n * @param shapes\n * @param region\n * @param cfg\n */\nexport function pathAdjustPosition(items, labels, shapes, region, cfg) {\n var _a, _b;\n if (shapes.length === 0) {\n return;\n }\n var element = (_a = shapes[0]) === null || _a === void 0 ? void 0 : _a.get('element');\n var geometry = element === null || element === void 0 ? void 0 : element.geometry;\n if (!geometry || ['path', 'line', 'area'].indexOf(geometry.type) < 0) {\n return;\n }\n var _c = __read(geometry.getXYFields(), 2),\n xField = _c[0],\n yField = _c[1];\n var groupedLabels = groupBy(labels, function (label) {\n return label.get('data')[xField];\n });\n var dones = [];\n var offset = cfg && cfg.offset || ((_b = items[0]) === null || _b === void 0 ? void 0 : _b.offset) || 12;\n map(keys(groupedLabels).reverse(), function (xValue) {\n var sortedCollections = sortLabels(geometry, groupedLabels[xValue]);\n while (sortedCollections.length) {\n var current = sortedCollections.shift();\n var textShape = findLabelTextShape(current);\n if (hasSome(dones, current, function (left, right) {\n return left.get('data')[xField] === right.get('data')[xField] && left.get('data')[yField] === right.get('data')[yField];\n })) {\n // 重复位置,直接隐藏\n textShape.set('visible', false);\n continue;\n }\n var upFail = checkShapeOverlap(dones, current);\n var downFail = false;\n if (upFail) {\n textShape.attr('y', textShape.attr('y') + 2 * offset);\n downFail = checkShapeOverlap(dones, current);\n }\n if (downFail) {\n textShape.set('visible', false);\n continue;\n }\n dones.push(current);\n }\n });\n}","import { __read, __spreadArray } from \"tslib\";\nimport { isString, memoize, values, toString } from '@antv/util';\nimport { getCanvasContext } from './context';\n/**\n * 计算文本在画布中的宽度\n */\nexport var measureTextWidth = memoize(function (text, font) {\n if (font === void 0) {\n font = {};\n }\n var fontSize = font.fontSize,\n fontFamily = font.fontFamily,\n fontWeight = font.fontWeight,\n fontStyle = font.fontStyle,\n fontVariant = font.fontVariant;\n var ctx = getCanvasContext();\n ctx.font = [fontStyle, fontVariant, fontWeight, \"\".concat(fontSize, \"px\"), fontFamily].join(' ');\n return ctx.measureText(isString(text) ? text : '').width;\n}, function (text, font) {\n if (font === void 0) {\n font = {};\n }\n return __spreadArray([text], __read(values(font)), false).join('');\n});\n/**\n * 获取文本的 ... 文本。\n * 算法(减少每次 measureText 的长度,measureText 的性能跟字符串时间相关):\n * 1. 先通过 STEP 逐步计算,找到最后一个小于 maxWidth 的字符串\n * 2. 然后对最后这个字符串二分计算\n * @param text 需要计算的文本, 由于历史原因 除了支持string,还支持空值,number和数组等\n * @param maxWidth\n * @param font\n */\nexport var getEllipsisText = function getEllipsisText(text, maxWidth, font) {\n var STEP = 16; // 每次 16,调参工程师\n var DOT_WIDTH = measureTextWidth('...', font);\n var leftText;\n if (!isString(text)) {\n leftText = toString(text);\n } else {\n leftText = text;\n }\n var leftWidth = maxWidth;\n var r = []; // 最终的分段字符串\n var currentText;\n var currentWidth;\n if (measureTextWidth(text, font) <= maxWidth) {\n return text;\n }\n // 首先通过 step 计算,找出最大的未超出长度的\n while (true) {\n // 更新字符串\n currentText = leftText.substr(0, STEP);\n // 计算宽度\n currentWidth = measureTextWidth(currentText, font);\n // 超出剩余宽度,则停止\n if (currentWidth + DOT_WIDTH > leftWidth) {\n if (currentWidth > leftWidth) {\n break;\n }\n }\n r.push(currentText);\n // 没有超出,则计算剩余宽度\n leftWidth -= currentWidth;\n leftText = leftText.substr(STEP);\n // 字符串整体没有超出\n if (!leftText) {\n return r.join('');\n }\n }\n // 最下的最后一个 STEP,使用 1 递增(用二分效果更高)\n while (true) {\n // 更新字符串\n currentText = leftText.substr(0, 1);\n // 计算宽度\n currentWidth = measureTextWidth(currentText, font);\n // 超出剩余宽度,则停止\n if (currentWidth + DOT_WIDTH > leftWidth) {\n break;\n }\n r.push(currentText);\n // 没有超出,则计算剩余宽度\n leftWidth -= currentWidth;\n leftText = leftText.substr(1);\n if (!leftText) {\n return r.join('');\n }\n }\n return \"\".concat(r.join(''), \"...\");\n};","import { __read } from \"tslib\";\nimport { ext } from '@antv/matrix-util';\n/**\n * @ignore\n * 对图形元素进行矩阵变换,同时返回变换前的图形矩阵\n * @param shape 进行矩阵变换的图形\n * @param vector 矩阵变换的中心点\n * @param direct 矩阵变换的类型\n */\nexport function transformShape(shape, vector, direct) {\n var scaledMatrix;\n var _a = __read(vector, 2),\n x = _a[0],\n y = _a[1];\n shape.applyToMatrix([x, y, 1]);\n if (direct === 'x') {\n shape.setMatrix(ext.transform(shape.getMatrix(), [['t', -x, -y], ['s', 0.01, 1], ['t', x, y]]));\n scaledMatrix = ext.transform(shape.getMatrix(), [['t', -x, -y], ['s', 100, 1], ['t', x, y]]);\n } else if (direct === 'y') {\n shape.setMatrix(ext.transform(shape.getMatrix(), [['t', -x, -y], ['s', 1, 0.01], ['t', x, y]]));\n scaledMatrix = ext.transform(shape.getMatrix(), [['t', -x, -y], ['s', 1, 100], ['t', x, y]]);\n } else if (direct === 'xy') {\n shape.setMatrix(ext.transform(shape.getMatrix(), [['t', -x, -y], ['s', 0.01, 0.01], ['t', x, y]]));\n scaledMatrix = ext.transform(shape.getMatrix(), [['t', -x, -y], ['s', 100, 100], ['t', x, y]]);\n }\n return scaledMatrix;\n}\n/**\n * 对图形元素进行剪切动画\n * @param element 进行动画的图形元素\n * @param animateCfg 动画配置\n * @param coordinate 当前坐标系\n * @param yMinPoint y 轴的最小值对应的图形坐标点\n * @param type 剪切动画的类型\n */\nexport function doScaleAnimate(element, animateCfg, coordinate, yMinPoint, type) {\n var start = coordinate.start,\n end = coordinate.end;\n var width = coordinate.getWidth();\n var height = coordinate.getHeight();\n var x;\n var y;\n if (type === 'y') {\n x = start.x + width / 2;\n y = yMinPoint.y < start.y ? yMinPoint.y : start.y;\n } else if (type === 'x') {\n x = yMinPoint.x > start.x ? yMinPoint.x : start.x;\n y = start.y + height / 2;\n } else if (type === 'xy') {\n if (coordinate.isPolar) {\n x = coordinate.getCenter().x;\n y = coordinate.getCenter().y;\n } else {\n x = (start.x + end.x) / 2;\n y = (start.y + end.y) / 2;\n }\n }\n var endMatrix = transformShape(element, [x, y], type);\n element.animate({\n matrix: endMatrix\n }, animateCfg);\n}","import { __assign, __read } from \"tslib\";\nimport { getArcParams } from '@antv/g-canvas';\nimport { isNumberEqual, isEqual, isFunction } from '@antv/util';\nimport { getArcPath, getSectorPath } from '../../util/graphics';\nfunction getAngle(startPoint, arcPath) {\n var _a;\n var _b = getArcParams(startPoint, arcPath),\n startAngle = _b.startAngle,\n endAngle = _b.endAngle;\n if (!isNumberEqual(startAngle, -Math.PI * 0.5) && startAngle < -Math.PI * 0.5) {\n startAngle += Math.PI * 2;\n }\n if (!isNumberEqual(endAngle, -Math.PI * 0.5) && endAngle < -Math.PI * 0.5) {\n endAngle += Math.PI * 2;\n }\n if (arcPath[5] === 0) {\n // 逆时针,需要将 startAngle 和 endAngle 转置,因为 G2 极坐标系为顺时针方向\n _a = __read([endAngle, startAngle], 2), startAngle = _a[0], endAngle = _a[1];\n }\n if (isNumberEqual(startAngle, Math.PI * 1.5)) {\n startAngle = Math.PI * -0.5;\n }\n // 当 startAngle, endAngle 接近相等时,不进行 endAngle = Math.PI * 1.5 防止变化从整个圆开始\n if (isNumberEqual(endAngle, Math.PI * -0.5) && !isNumberEqual(startAngle, endAngle)) {\n endAngle = Math.PI * 1.5;\n }\n return {\n startAngle: startAngle,\n endAngle: endAngle\n };\n}\nfunction getArcStartPoint(path) {\n var startPoint;\n if (path[0] === 'M' || path[0] === 'L') {\n startPoint = [path[1], path[2]];\n } else if (path[0] === 'a' || path[0] === 'A' || path[0] === 'C') {\n startPoint = [path[path.length - 2], path[path.length - 1]];\n }\n return startPoint;\n}\n/**\n * path 存在以下情况\n * 1. 饼图不为整圆的 path,命令为 M, L, A, L, Z\n * 2. 饼图为整圆的 path,命令为 M, M, A, A, M, Z\n * 3. 环图不为整圆的 path,命令为 M, A, L, A, L, Z\n * 4. 环图为整圆的 path,命令为 M, A, A, M, A, A, M, Z\n * 5. radial-line, 不为整圆时的 path, 命令为 M, A, A, Z\n * 6. radial-line, 为整圆时的 path,命令为 M, A, A, A, A, Z\n * @param path theta 坐标系下圆弧的 path 命令\n */\nexport function getArcInfo(path) {\n var _a;\n var startAngle;\n var endAngle;\n var arcPaths = path.filter(function (command) {\n return command[0] === 'A' || command[0] === 'a';\n });\n if (arcPaths.length === 0) {\n return {\n startAngle: 0,\n endAngle: 0,\n radius: 0,\n innerRadius: 0\n };\n }\n var firstArcPathCommand = arcPaths[0];\n var lastArcPathCommand = arcPaths.length > 1 ? arcPaths[1] : arcPaths[0];\n var firstIndex = path.indexOf(firstArcPathCommand);\n var lastIndex = path.indexOf(lastArcPathCommand);\n var firstStartPoint = getArcStartPoint(path[firstIndex - 1]);\n var lastStartPoint = getArcStartPoint(path[lastIndex - 1]);\n var _b = getAngle(firstStartPoint, firstArcPathCommand),\n firstStartAngle = _b.startAngle,\n firstEndAngle = _b.endAngle;\n var _c = getAngle(lastStartPoint, lastArcPathCommand),\n lastStartAngle = _c.startAngle,\n lastEndAngle = _c.endAngle;\n if (isNumberEqual(firstStartAngle, lastStartAngle) && isNumberEqual(firstEndAngle, lastEndAngle)) {\n startAngle = firstStartAngle;\n endAngle = firstEndAngle;\n } else {\n startAngle = Math.min(firstStartAngle, lastStartAngle);\n endAngle = Math.max(firstEndAngle, lastEndAngle);\n }\n var radius = firstArcPathCommand[1];\n var innerRadius = arcPaths[arcPaths.length - 1][1];\n if (radius < innerRadius) {\n _a = __read([innerRadius, radius], 2), radius = _a[0], innerRadius = _a[1];\n } else if (radius === innerRadius) {\n innerRadius = 0;\n }\n return {\n startAngle: startAngle,\n endAngle: endAngle,\n radius: radius,\n innerRadius: innerRadius\n };\n}\n/**\n * @ignore\n * 饼图更新动画\n * @param shape 文本图形\n * @param animateCfg\n * @param cfg\n */\nexport function sectorPathUpdate(shape, animateCfg, cfg) {\n var toAttrs = cfg.toAttrs,\n coordinate = cfg.coordinate;\n var path = toAttrs.path || [];\n var pathCommands = path.map(function (command) {\n return command[0];\n });\n if (path.length < 1) return;\n var _a = getArcInfo(path),\n curStartAngle = _a.startAngle,\n curEndAngle = _a.endAngle,\n radius = _a.radius,\n innerRadius = _a.innerRadius;\n var _b = getArcInfo(shape.attr('path')),\n preStartAngle = _b.startAngle,\n preEndAngle = _b.endAngle;\n var center = coordinate.getCenter();\n var diffStartAngle = curStartAngle - preStartAngle;\n var diffEndAngle = curEndAngle - preEndAngle;\n // 没有 diff 时直接返回最终 attrs,不需要额外动画\n if (diffStartAngle === 0 && diffEndAngle === 0) {\n shape.attr('path', path);\n return;\n }\n shape.animate(function (ratio) {\n var onFrameStartAngle = preStartAngle + ratio * diffStartAngle;\n var onFrameEndAngle = preEndAngle + ratio * diffEndAngle;\n return __assign(__assign({}, toAttrs), {\n path:\n // hack, 兼容 /examples/bar/basic/demo/radial-line.ts 动画\n isEqual(pathCommands, ['M', 'A', 'A', 'Z']) ? getArcPath(center.x, center.y, radius, onFrameStartAngle, onFrameEndAngle) : getSectorPath(center.x, center.y, radius, onFrameStartAngle, onFrameEndAngle, innerRadius)\n });\n }, __assign(__assign({}, animateCfg), {\n callback: function callback() {\n // 将 path 保持原始态,否则会影响 setState() 的动画\n shape.attr('path', path);\n isFunction(animateCfg.callback) && animateCfg.callback();\n }\n }));\n}","import { __assign } from \"tslib\";\nimport { ext } from '@antv/matrix-util';\nimport { each, isFunction } from '@antv/util';\nfunction doShapeZoom(shape, animateCfg, type) {\n if (shape.isGroup()) {\n each(shape.getChildren(), function (child) {\n doShapeZoom(child, animateCfg, type);\n });\n } else {\n var bbox = shape.getBBox();\n var x = (bbox.minX + bbox.maxX) / 2;\n var y = (bbox.minY + bbox.maxY) / 2;\n shape.applyToMatrix([x, y, 1]);\n if (type === 'zoomIn') {\n // 放大\n var matrix = ext.transform(shape.getMatrix(), [['t', -x, -y], ['s', 0.01, 0.01], ['t', x, y]]);\n shape.setMatrix(matrix);\n shape.animate({\n matrix: ext.transform(shape.getMatrix(), [['t', -x, -y], ['s', 100, 100], ['t', x, y]])\n }, animateCfg);\n } else {\n shape.animate({\n matrix: ext.transform(shape.getMatrix(), [['t', -x, -y], ['s', 0.01, 0.01], ['t', x, y]])\n }, __assign(__assign({}, animateCfg), {\n callback: function callback() {\n shape.remove(true);\n isFunction(animateCfg.callback) && animateCfg.callback();\n }\n }));\n }\n }\n}\n/**\n * @ignore\n * 单个 shape 动画\n * shape 以自身中心点逐渐放大的进入动画\n * @param shape 参与动画的图形元素\n * @param animateCfg 动画配置\n * @param cfg 额外信息\n */\nexport function zoomIn(shape, animateCfg, cfg) {\n doShapeZoom(shape, animateCfg, 'zoomIn');\n}\n/**\n * @ignore\n * 单个 shape 动画\n * 消失动画,shape 以自身为中心点的逐渐缩小\n * @param shape 参与动画的图形元素\n * @param animateCfg 动画配置\n * @param cfg 额外信息\n */\nexport function zoomOut(shape, animateCfg, cfg) {\n doShapeZoom(shape, animateCfg, 'zoomOut');\n}","import { DIRECTION } from '../constant';\n/**\n * @ignore\n * 获取 facet title 的最佳默认配置,防止\n */\nexport function getFactTitleConfig(direction) {\n if ([DIRECTION.TOP, DIRECTION.BOTTOM].includes(direction)) {\n return {\n offsetX: 0,\n offsetY: direction === DIRECTION.TOP ? -8 : 8,\n style: {\n textAlign: 'center',\n textBaseline: direction === DIRECTION.TOP ? 'bottom' : 'top'\n }\n };\n }\n if ([DIRECTION.LEFT, DIRECTION.RIGHT].includes(direction)) {\n return {\n offsetX: direction === DIRECTION.LEFT ? -8 : 8,\n offsetY: 0,\n style: {\n textAlign: direction === DIRECTION.LEFT ? 'right' : 'left',\n textBaseline: 'middle',\n rotate: Math.PI / 2 // 文本阅读习惯从上往下\n }\n };\n }\n\n return {};\n}\n/**\n * @ignore\n * 根据角度,获取 ○ 上的点\n * @param center\n * @param r\n * @param angle\n */\nexport function getAnglePoint(center, r, angle) {\n return {\n x: center.x + r * Math.cos(angle),\n y: center.y + r * Math.sin(angle)\n };\n}","import { __extends, __read } from \"tslib\";\nimport { deepMix, each, filter, get } from '@antv/util';\nimport { DIRECTION } from '../constant';\nimport { getAnglePoint, getFactTitleConfig } from '../util/facet';\nimport { Facet } from './facet';\n/**\n * @ignore\n * 镜像分面\n */\nvar Circle = /** @class */function (_super) {\n __extends(Circle, _super);\n function Circle() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Circle.prototype.getDefaultCfg = function () {\n return deepMix({}, _super.prototype.getDefaultCfg.call(this), {\n type: 'circle',\n showTitle: true,\n title: _super.prototype.getDefaultTitleCfg.call(this)\n });\n };\n Circle.prototype.render = function () {\n _super.prototype.render.call(this);\n if (this.cfg.showTitle) {\n this.renderTitle();\n }\n };\n /**\n * 根据总数和当前索引,计算分面的 region\n * @param count\n * @param index\n */\n Circle.prototype.getRegion = function (count, index) {\n var r = 1 / 2; // 画布半径\n // 画布圆心\n var center = {\n x: 0.5,\n y: 0.5\n };\n // 每隔分面间隔的弧度\n var avgAngle = Math.PI * 2 / count;\n // 当前分面所在的弧度\n var angle = -1 * Math.PI / 2 + avgAngle * index;\n // TODO 没看懂\n var facetR = r / (1 + 1 / Math.sin(avgAngle / 2));\n // 分面的中心点\n var middle = getAnglePoint(center, r - facetR, angle);\n var startAngle = Math.PI * 5 / 4; // 右上角\n var endAngle = Math.PI * 1 / 4; // 左下角\n return {\n start: getAnglePoint(middle, facetR, startAngle),\n end: getAnglePoint(middle, facetR, endAngle)\n };\n };\n Circle.prototype.afterEachView = function (view, facet) {\n this.processAxis(view, facet);\n };\n Circle.prototype.beforeEachView = function (view, facet) {};\n Circle.prototype.generateFacets = function (data) {\n var _this = this;\n var _a = this.cfg,\n fields = _a.fields,\n type = _a.type;\n var _b = __read(fields, 1),\n field = _b[0];\n if (!field) {\n throw new Error('No `fields` specified!');\n }\n var values = this.getFieldValues(data, field);\n var count = values.length;\n var rst = [];\n values.forEach(function (value, index) {\n var conditions = [{\n field: field,\n value: value,\n values: values\n }];\n var facetData = filter(data, _this.getFacetDataFilter(conditions));\n var facet = {\n type: type,\n data: facetData,\n region: _this.getRegion(count, index),\n columnValue: value,\n columnField: field,\n columnIndex: index,\n columnValuesLength: count,\n rowValue: null,\n rowField: null,\n rowIndex: 0,\n rowValuesLength: 1\n };\n rst.push(facet);\n });\n return rst;\n };\n Circle.prototype.getXAxisOption = function (x, axes, option, facet) {\n // 不做任何处理\n return option;\n };\n /**\n * 设置 y 坐标轴的文本、title 是否显示\n * @param y\n * @param axes\n * @param option\n * @param facet\n */\n Circle.prototype.getYAxisOption = function (y, axes, option, facet) {\n // 不做任何处理\n return option;\n };\n /**\n * facet title\n */\n Circle.prototype.renderTitle = function () {\n var _this = this;\n each(this.facets, function (facet) {\n var columnValue = facet.columnValue,\n view = facet.view;\n var formatter = get(_this.cfg.title, 'formatter');\n var config = deepMix({\n position: ['50%', '0%'],\n content: formatter ? formatter(columnValue) : columnValue\n }, getFactTitleConfig(DIRECTION.TOP), _this.cfg.title);\n view.annotation().text(config);\n });\n };\n return Circle;\n}(Facet);\nexport default Circle;","import { __assign, __extends, __read } from \"tslib\";\nimport { deepMix, each, filter, get } from '@antv/util';\nimport { DIRECTION } from '../constant';\nimport { getFactTitleConfig } from '../util/facet';\nimport { Facet } from './facet';\n/**\n * @ignore\n * 镜像分面\n */\nvar List = /** @class */function (_super) {\n __extends(List, _super);\n function List() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n List.prototype.getDefaultCfg = function () {\n return deepMix({}, _super.prototype.getDefaultCfg.call(this), {\n type: 'list',\n cols: null,\n showTitle: true,\n title: _super.prototype.getDefaultTitleCfg.call(this)\n });\n };\n List.prototype.render = function () {\n _super.prototype.render.call(this);\n if (this.cfg.showTitle) {\n this.renderTitle();\n }\n };\n List.prototype.afterEachView = function (view, facet) {\n this.processAxis(view, facet);\n };\n List.prototype.beforeEachView = function (view, facet) {};\n List.prototype.generateFacets = function (data) {\n var _this = this;\n var fields = this.cfg.fields;\n var cols = this.cfg.cols;\n var _a = __read(fields, 1),\n columnField = _a[0];\n if (!columnField) {\n throw new Error('No `fields` specified!');\n }\n var colValues = this.getFieldValues(data, columnField);\n var count = colValues.length;\n cols = cols || count; // 每行有几列数据\n // 总共有几行\n var rows = this.getPageCount(count, cols);\n var rst = [];\n colValues.forEach(function (val, index) {\n // 当前 index 在那个行列\n var _a = _this.getRowCol(index, cols),\n row = _a.row,\n col = _a.col;\n var conditions = [{\n field: columnField,\n value: val,\n values: colValues\n }];\n var facetData = filter(data, _this.getFacetDataFilter(conditions));\n var facet = {\n type: _this.cfg.type,\n data: facetData,\n region: _this.getRegion(rows, cols, col, row),\n columnValue: val,\n rowValue: val,\n columnField: columnField,\n rowField: null,\n columnIndex: col,\n rowIndex: row,\n columnValuesLength: cols,\n rowValuesLength: rows,\n total: count\n };\n rst.push(facet);\n });\n return rst;\n };\n /**\n * 设置 x 坐标轴的文本、title 是否显示\n * @param x\n * @param axes\n * @param option\n * @param facet\n */\n List.prototype.getXAxisOption = function (x, axes, option, facet) {\n // 当是最后一行或者下面没有 view 时文本不显示\n if (facet.rowIndex !== facet.rowValuesLength - 1 && facet.columnValuesLength * facet.rowIndex + facet.columnIndex + 1 + facet.columnValuesLength <= facet.total) {\n return __assign(__assign({}, option), {\n label: null,\n title: null\n });\n }\n return option;\n };\n /**\n * 设置 y 坐标轴的文本、title 是否显示\n * @param y\n * @param axes\n * @param option\n * @param facet\n */\n List.prototype.getYAxisOption = function (y, axes, option, facet) {\n if (facet.columnIndex !== 0) {\n return __assign(__assign({}, option), {\n title: null,\n label: null\n });\n }\n return option;\n };\n /**\n * facet title\n */\n List.prototype.renderTitle = function () {\n var _this = this;\n each(this.facets, function (facet) {\n var columnValue = facet.columnValue,\n view = facet.view;\n var formatter = get(_this.cfg.title, 'formatter');\n var config = deepMix({\n position: ['50%', '0%'],\n content: formatter ? formatter(columnValue) : columnValue\n }, getFactTitleConfig(DIRECTION.TOP), _this.cfg.title);\n view.annotation().text(config);\n });\n };\n /**\n * 计算分页数\n * @param total\n * @param pageSize\n */\n List.prototype.getPageCount = function (total, pageSize) {\n return Math.floor((total + pageSize - 1) / pageSize);\n };\n /**\n * 索引值在哪一页\n * @param index\n * @param pageSize\n */\n List.prototype.getRowCol = function (index, pageSize) {\n var row = Math.floor(index / pageSize);\n var col = index % pageSize;\n return {\n row: row,\n col: col\n };\n };\n return List;\n}(Facet);\nexport default List;","import { __assign, __extends } from \"tslib\";\nimport { deepMix, each, get } from '@antv/util';\nimport { DIRECTION } from '../constant';\nimport { getFactTitleConfig } from '../util/facet';\nimport { Facet } from './facet';\n/**\n * @ignore\n * 镜像分面\n */\nvar Matrix = /** @class */function (_super) {\n __extends(Matrix, _super);\n function Matrix() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Matrix.prototype.getDefaultCfg = function () {\n return deepMix({}, _super.prototype.getDefaultCfg.call(this), {\n type: 'matrix',\n showTitle: false,\n columnTitle: __assign({}, _super.prototype.getDefaultTitleCfg.call(this)),\n rowTitle: __assign({}, _super.prototype.getDefaultTitleCfg.call(this))\n });\n };\n Matrix.prototype.render = function () {\n _super.prototype.render.call(this);\n if (this.cfg.showTitle) {\n this.renderTitle();\n }\n };\n Matrix.prototype.afterEachView = function (view, facet) {\n this.processAxis(view, facet);\n };\n Matrix.prototype.beforeEachView = function (view, facet) {};\n Matrix.prototype.generateFacets = function (data) {\n var _a = this.cfg,\n fields = _a.fields,\n type = _a.type;\n // 矩阵中行列相等,等于指定的字段个数\n var rowValuesLength = fields.length;\n var columnValuesLength = rowValuesLength;\n var rst = [];\n for (var i = 0; i < columnValuesLength; i++) {\n var columnField = fields[i];\n for (var j = 0; j < rowValuesLength; j++) {\n var rowField = fields[j];\n var facet = {\n type: type,\n data: data,\n region: this.getRegion(rowValuesLength, columnValuesLength, i, j),\n columnValue: columnField,\n rowValue: rowField,\n columnField: columnField,\n rowField: rowField,\n columnIndex: i,\n rowIndex: j,\n columnValuesLength: columnValuesLength,\n rowValuesLength: rowValuesLength\n };\n rst.push(facet);\n }\n }\n return rst;\n };\n /**\n * 设置 x 坐标轴的文本、title 是否显示\n * @param x\n * @param axes\n * @param option\n * @param facet\n */\n Matrix.prototype.getXAxisOption = function (x, axes, option, facet) {\n // 最后一行显示\n if (facet.rowIndex !== facet.rowValuesLength - 1) {\n return __assign(__assign({}, option), {\n label: null,\n title: null\n });\n }\n return option;\n };\n /**\n * 设置 y 坐标轴的文本、title 是否显示\n * @param y\n * @param axes\n * @param option\n * @param facet\n */\n Matrix.prototype.getYAxisOption = function (y, axes, option, facet) {\n // 第一列显示\n if (facet.columnIndex !== 0) {\n return __assign(__assign({}, option), {\n title: null,\n label: null\n });\n }\n return option;\n };\n /**\n * facet title\n */\n Matrix.prototype.renderTitle = function () {\n var _this = this;\n each(this.facets, function (facet, facetIndex) {\n var columnIndex = facet.columnIndex,\n rowIndex = facet.rowIndex,\n columnValuesLength = facet.columnValuesLength,\n rowValuesLength = facet.rowValuesLength,\n columnValue = facet.columnValue,\n rowValue = facet.rowValue,\n view = facet.view;\n // top\n if (rowIndex === 0) {\n var formatter = get(_this.cfg.columnTitle, 'formatter');\n var config = deepMix({\n position: ['50%', '0%'],\n content: formatter ? formatter(columnValue) : columnValue\n }, getFactTitleConfig(DIRECTION.TOP), _this.cfg.columnTitle);\n view.annotation().text(config);\n }\n // right\n if (columnIndex === columnValuesLength - 1) {\n var formatter = get(_this.cfg.rowTitle, 'formatter');\n var config = deepMix({\n position: ['100%', '50%'],\n content: formatter ? formatter(rowValue) : rowValue\n }, getFactTitleConfig(DIRECTION.RIGHT), _this.cfg.rowTitle);\n view.annotation().text(config);\n }\n });\n };\n return Matrix;\n}(Facet);\nexport default Matrix;","import { __assign, __extends, __read } from \"tslib\";\nimport { deepMix, each, filter, get } from '@antv/util';\nimport { DIRECTION } from '../constant';\nimport { getFactTitleConfig } from '../util/facet';\nimport { Facet } from './facet';\n/**\n * @ignore\n * 镜像分面\n */\nvar Mirror = /** @class */function (_super) {\n __extends(Mirror, _super);\n function Mirror() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Mirror.prototype.getDefaultCfg = function () {\n return deepMix({}, _super.prototype.getDefaultCfg.call(this), {\n type: 'mirror',\n showTitle: true,\n title: _super.prototype.getDefaultTitleCfg.call(this),\n transpose: false\n });\n };\n Mirror.prototype.render = function () {\n _super.prototype.render.call(this);\n if (this.cfg.showTitle) {\n this.renderTitle();\n }\n };\n Mirror.prototype.beforeEachView = function (view, facet) {\n // 做一下坐标系转化\n if (this.cfg.transpose) {\n if (facet.columnIndex % 2 === 0) {\n view.coordinate().transpose().reflect('x');\n } else {\n view.coordinate().transpose();\n }\n } else {\n if (facet.rowIndex % 2 !== 0) {\n view.coordinate().reflect('y');\n }\n }\n };\n Mirror.prototype.afterEachView = function (view, facet) {\n this.processAxis(view, facet);\n };\n Mirror.prototype.generateFacets = function (data) {\n var _this = this;\n var _a = __read(this.cfg.fields, 1),\n f = _a[0];\n var rst = [];\n var columnValuesLength = 1;\n var rowValuesLength = 1;\n var columnValues = [''];\n var rowValues = [''];\n var columnField;\n var rowField;\n if (this.cfg.transpose) {\n columnField = f;\n columnValues = this.getFieldValues(data, columnField).slice(0, 2); // 镜像最多两个\n columnValuesLength = columnValues.length;\n } else {\n rowField = f;\n rowValues = this.getFieldValues(data, rowField).slice(0, 2); // 镜像最多两个\n rowValuesLength = rowValues.length;\n }\n // 获取每个维度对应的数据配置片段\n columnValues.forEach(function (xVal, xIndex) {\n rowValues.forEach(function (yVal, yIndex) {\n var conditions = [{\n field: columnField,\n value: xVal,\n values: columnValues\n }, {\n field: rowField,\n value: yVal,\n values: rowValues\n }];\n var facetData = filter(data, _this.getFacetDataFilter(conditions));\n var facet = {\n type: _this.cfg.type,\n data: facetData,\n region: _this.getRegion(rowValuesLength, columnValuesLength, xIndex, yIndex),\n columnValue: xVal,\n rowValue: yVal,\n columnField: columnField,\n rowField: rowField,\n columnIndex: xIndex,\n rowIndex: yIndex,\n columnValuesLength: columnValuesLength,\n rowValuesLength: rowValuesLength\n };\n rst.push(facet);\n });\n });\n return rst;\n };\n /**\n * 设置 x 坐标轴的文本、title 是否显示\n * @param x\n * @param axes\n * @param option\n * @param facet\n */\n Mirror.prototype.getXAxisOption = function (x, axes, option, facet) {\n // 非最后一行\n // 当是最后一行或者下面没有 view 时文本不显示\n if (facet.columnIndex === 1 || facet.rowIndex === 1) {\n return __assign(__assign({}, option), {\n label: null,\n title: null\n });\n }\n return option;\n };\n /**\n * 设置 y 坐标轴的文本、title 是否显示\n * @param y\n * @param axes\n * @param option\n * @param facet\n */\n Mirror.prototype.getYAxisOption = function (y, axes, option, facet) {\n // do nothing\n return option;\n };\n Mirror.prototype.renderTitle = function () {\n var _this = this;\n each(this.facets, function (facet, facetIndex) {\n var columnValue = facet.columnValue,\n rowValue = facet.rowValue,\n view = facet.view;\n var formatter = get(_this.cfg.title, 'formatter');\n if (_this.cfg.transpose) {\n var config = deepMix({\n position: ['50%', '0%'],\n content: formatter ? formatter(columnValue) : columnValue\n }, getFactTitleConfig(DIRECTION.TOP), _this.cfg.title);\n view.annotation().text(config);\n } else {\n var config = deepMix({\n position: ['100%', '50%'],\n content: formatter ? formatter(rowValue) : rowValue\n }, getFactTitleConfig(DIRECTION.RIGHT), _this.cfg.title);\n view.annotation().text(config);\n }\n });\n };\n return Mirror;\n}(Facet);\nexport default Mirror;","import { __assign, __extends, __read } from \"tslib\";\nimport { deepMix, each, filter, get } from '@antv/util';\nimport { DIRECTION } from '../constant';\nimport { getFactTitleConfig } from '../util/facet';\nimport { Facet } from './facet';\n/**\n * @ignore\n * 矩阵分面\n */\nvar Rect = /** @class */function (_super) {\n __extends(Rect, _super);\n function Rect() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Rect.prototype.afterEachView = function (view, facet) {\n this.processAxis(view, facet);\n };\n Rect.prototype.beforeEachView = function (view, facet) {\n // do nothing\n };\n Rect.prototype.getDefaultCfg = function () {\n return deepMix({}, _super.prototype.getDefaultCfg.call(this), {\n type: 'rect',\n columnTitle: __assign({}, _super.prototype.getDefaultTitleCfg.call(this)),\n rowTitle: __assign({}, _super.prototype.getDefaultTitleCfg.call(this))\n });\n };\n Rect.prototype.render = function () {\n _super.prototype.render.call(this);\n if (this.cfg.showTitle) {\n this.renderTitle();\n }\n };\n /**\n * 生成矩阵分面的分面数据\n * @param data\n */\n Rect.prototype.generateFacets = function (data) {\n var _this = this;\n var _a = __read(this.cfg.fields, 2),\n columnField = _a[0],\n rowField = _a[1];\n var rst = [];\n var columnValuesLength = 1;\n var rowValuesLength = 1;\n var columnValues = [''];\n var rowValues = [''];\n if (columnField) {\n columnValues = this.getFieldValues(data, columnField);\n columnValuesLength = columnValues.length;\n }\n if (rowField) {\n rowValues = this.getFieldValues(data, rowField);\n rowValuesLength = rowValues.length;\n }\n // 获取每个维度对应的数据配置片段\n columnValues.forEach(function (xVal, xIndex) {\n rowValues.forEach(function (yVal, yIndex) {\n var conditions = [{\n field: columnField,\n value: xVal,\n values: columnValues\n }, {\n field: rowField,\n value: yVal,\n values: rowValues\n }];\n var facetData = filter(data, _this.getFacetDataFilter(conditions));\n var facet = {\n type: _this.cfg.type,\n data: facetData,\n region: _this.getRegion(rowValuesLength, columnValuesLength, xIndex, yIndex),\n columnValue: xVal,\n rowValue: yVal,\n columnField: columnField,\n rowField: rowField,\n columnIndex: xIndex,\n rowIndex: yIndex,\n columnValuesLength: columnValuesLength,\n rowValuesLength: rowValuesLength\n };\n rst.push(facet);\n });\n });\n return rst;\n };\n Rect.prototype.renderTitle = function () {\n var _this = this;\n each(this.facets, function (facet, facetIndex) {\n var columnIndex = facet.columnIndex,\n rowIndex = facet.rowIndex,\n columnValuesLength = facet.columnValuesLength,\n columnValue = facet.columnValue,\n rowValue = facet.rowValue,\n view = facet.view;\n // top\n if (rowIndex === 0) {\n var formatter = get(_this.cfg.columnTitle, 'formatter');\n var config = deepMix({\n position: ['50%', '0%'],\n content: formatter ? formatter(columnValue) : columnValue\n }, getFactTitleConfig(DIRECTION.TOP), _this.cfg.columnTitle);\n view.annotation().text(config);\n }\n // right\n if (columnIndex === columnValuesLength - 1) {\n var formatter = get(_this.cfg.rowTitle, 'formatter');\n var config = deepMix({\n position: ['100%', '50%'],\n content: formatter ? formatter(rowValue) : rowValue\n }, getFactTitleConfig(DIRECTION.RIGHT), _this.cfg.rowTitle);\n view.annotation().text(config);\n }\n });\n };\n /**\n * 设置 x 坐标轴的文本、title 是否显示\n * @param x\n * @param axes\n * @param option\n * @param facet\n */\n Rect.prototype.getXAxisOption = function (x, axes, option, facet) {\n // 非最后一行\n if (facet.rowIndex !== facet.rowValuesLength - 1) {\n return __assign(__assign({}, option), {\n title: null,\n label: null\n });\n } else if (facet.columnIndex !== Math.floor((facet.columnValuesLength - 1) / 2)) {\n // 不是中间列\n return __assign(__assign({}, option), {\n title: null\n });\n }\n return option;\n };\n /**\n * 设置 y 坐标轴的文本、title 是否显示\n * @param y\n * @param axes\n * @param option\n * @param facet\n */\n Rect.prototype.getYAxisOption = function (y, axes, option, facet) {\n if (facet.columnIndex !== 0) {\n return __assign(__assign({}, option), {\n title: null,\n label: null\n });\n } else if (facet.rowIndex !== Math.floor((facet.rowValuesLength - 1) / 2)) {\n return __assign(__assign({}, option), {\n title: null\n });\n }\n return option;\n };\n return Rect;\n}(Facet);\nexport default Rect;","import { __assign, __extends, __values } from \"tslib\";\n/**\n * Create By Bruce Too\n * On 2020-02-10\n */\nimport { assign, deepMix, each, get } from '@antv/util';\nimport { DIRECTION, VIEW_LIFE_CIRCLE } from '../constant';\nimport { getFactTitleConfig } from '../util/facet';\nimport { Facet } from './facet';\n/**\n * @ignore\n * Tree Facet\n */\nvar Tree = /** @class */function (_super) {\n __extends(Tree, _super);\n function Tree() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.afterChartRender = function () {\n if (_this.facets && _this.cfg.line) {\n _this.container.clear();\n _this.drawLines(_this.facets);\n }\n };\n return _this;\n }\n Tree.prototype.afterEachView = function (view, facet) {\n this.processAxis(view, facet);\n };\n Tree.prototype.beforeEachView = function (view, facet) {};\n Tree.prototype.init = function () {\n _super.prototype.init.call(this);\n this.view.on(VIEW_LIFE_CIRCLE.AFTER_RENDER, this.afterChartRender);\n };\n Tree.prototype.getDefaultCfg = function () {\n return deepMix({}, _super.prototype.getDefaultCfg.call(this), {\n type: 'tree',\n line: {\n style: {\n lineWidth: 1,\n stroke: '#ddd'\n },\n smooth: false\n },\n showTitle: true,\n title: _super.prototype.getDefaultTitleCfg.call(this)\n });\n };\n Tree.prototype.generateFacets = function (data) {\n var fields = this.cfg.fields;\n if (!fields.length) {\n throw new Error('Please specify for the fields for rootFacet!');\n }\n var rst = [];\n var rootFacet = {\n type: this.cfg.type,\n data: data,\n region: null,\n rowValuesLength: this.getRows(),\n columnValuesLength: 1,\n rowIndex: 0,\n columnIndex: 0,\n rowField: '',\n columnField: '',\n rowValue: '',\n columnValue: ''\n };\n rst.push(rootFacet);\n rootFacet.children = this.getChildFacets(data, 1, rst);\n this.setRegion(rst);\n return rst;\n };\n Tree.prototype.setRegion = function (facets) {\n var _this = this;\n this.forceColIndex(facets);\n facets.forEach(function (facet) {\n // @ts-ignore 允许调整\n facet.region = _this.getRegion(facet.rowValuesLength, facet.columnValuesLength, facet.columnIndex, facet.rowIndex);\n });\n };\n Tree.prototype.getRegion = function (rows, cols, xIndex, yIndex) {\n var xWidth = 1 / cols; // x轴方向的每个分面的偏移\n var yWidth = 1 / rows; // y轴方向的每个分面的偏移\n var start = {\n x: xWidth * xIndex,\n y: yWidth * yIndex\n };\n var end = {\n x: start.x + xWidth,\n y: start.y + yWidth * 2 / 3 // 预留1/3的空隙,方便添加连接线\n };\n\n return {\n start: start,\n end: end\n };\n };\n Tree.prototype.forceColIndex = function (facets) {\n var e_1, _a;\n var _this = this;\n var leafs = [];\n var index = 0;\n facets.forEach(function (facet) {\n if (_this.isLeaf(facet)) {\n leafs.push(facet);\n // @ts-ignore 允许调整\n facet.columnIndex = index;\n index++;\n }\n });\n leafs.forEach(function (facet) {\n // @ts-ignore\n facet.columnValuesLength = leafs.length;\n });\n var maxLevel = this.cfg.fields.length;\n for (var i = maxLevel - 1; i >= 0; i--) {\n var levelFacets = this.getFacetsByLevel(facets, i);\n try {\n // var yIndex = maxLevel - i;\n for (var levelFacets_1 = (e_1 = void 0, __values(levelFacets)), levelFacets_1_1 = levelFacets_1.next(); !levelFacets_1_1.done; levelFacets_1_1 = levelFacets_1.next()) {\n var facet = levelFacets_1_1.value;\n if (!this.isLeaf(facet)) {\n facet.originColIndex = facet.columnIndex;\n // @ts-ignore\n facet.columnIndex = this.getRegionIndex(facet.children);\n // @ts-ignore\n facet.columnValuesLength = leafs.length;\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (levelFacets_1_1 && !levelFacets_1_1.done && (_a = levelFacets_1.return)) _a.call(levelFacets_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n }\n };\n // get facet use level\n Tree.prototype.getFacetsByLevel = function (facets, level) {\n var rst = [];\n facets.forEach(function (facet) {\n if (facet.rowIndex === level) {\n rst.push(facet);\n }\n });\n return rst;\n };\n // if the facet has children , make it's column index in the middle of it's children\n Tree.prototype.getRegionIndex = function (children) {\n var first = children[0];\n var last = children[children.length - 1];\n return (last.columnIndex - first.columnIndex) / 2 + first.columnIndex;\n };\n // is a leaf without children\n Tree.prototype.isLeaf = function (facet) {\n return !facet.children || !facet.children.length;\n };\n Tree.prototype.getRows = function () {\n return this.cfg.fields.length + 1;\n };\n // get child\n Tree.prototype.getChildFacets = function (data, level, arr) {\n var _this = this;\n // [ 'grade', 'class' ]\n var fields = this.cfg.fields;\n var length = fields.length;\n if (length < level) {\n return;\n }\n var rst = [];\n // get fist level except root node\n var field = fields[level - 1];\n // get field value\n var values = this.getFieldValues(data, field);\n values.forEach(function (value, index) {\n var conditions = [{\n field: field,\n value: value,\n values: values\n }];\n var subData = data.filter(_this.getFacetDataFilter(conditions));\n if (subData.length) {\n var facet = {\n type: _this.cfg.type,\n data: subData,\n region: null,\n columnValue: value,\n rowValue: '',\n columnField: field,\n rowField: '',\n columnIndex: index,\n rowValuesLength: _this.getRows(),\n columnValuesLength: 1,\n rowIndex: level,\n children: _this.getChildFacets(subData, level + 1, arr)\n };\n rst.push(facet);\n arr.push(facet);\n }\n });\n return rst;\n };\n Tree.prototype.render = function () {\n _super.prototype.render.call(this);\n if (this.cfg.showTitle) {\n this.renderTitle();\n }\n };\n Tree.prototype.renderTitle = function () {\n var _this = this;\n each(this.facets, function (facet) {\n var columnValue = facet.columnValue,\n view = facet.view;\n var formatter = get(_this.cfg.title, 'formatter');\n var config = deepMix({\n position: ['50%', '0%'],\n content: formatter ? formatter(columnValue) : columnValue\n }, getFactTitleConfig(DIRECTION.TOP), _this.cfg.title);\n view.annotation().text(config);\n });\n };\n Tree.prototype.drawLines = function (facets) {\n var _this = this;\n facets.forEach(function (facet) {\n if (!_this.isLeaf(facet)) {\n var children = facet.children;\n _this.addFacetLines(facet, children);\n }\n });\n };\n // add lines with it's children\n Tree.prototype.addFacetLines = function (facet, children) {\n var _this = this;\n var view = facet.view;\n var region = view.coordinateBBox;\n // top, right, bottom, left\n var start = {\n x: region.x + region.width / 2,\n y: region.y + region.height\n };\n children.forEach(function (subFacet) {\n var subRegion = subFacet.view.coordinateBBox;\n var end = {\n x: subRegion.bl.x + (subRegion.tr.x - subRegion.bl.x) / 2,\n y: subRegion.tr.y\n };\n var middle1 = {\n x: start.x,\n y: start.y + (end.y - start.y) / 2\n };\n var middle2 = {\n x: end.x,\n y: middle1.y\n };\n _this.drawLine([start, middle1, middle2, end]);\n });\n };\n Tree.prototype.getPath = function (points) {\n var path = [];\n var smooth = this.cfg.line.smooth;\n if (smooth) {\n path.push(['M', points[0].x, points[0].y]);\n path.push(['C', points[1].x, points[1].y, points[2].x, points[2].y, points[3].x, points[3].y]);\n } else {\n points.forEach(function (point, index) {\n if (index === 0) {\n path.push(['M', point.x, point.y]);\n } else {\n path.push(['L', point.x, point.y]);\n }\n });\n }\n return path;\n };\n // draw line width points\n Tree.prototype.drawLine = function (points) {\n var path = this.getPath(points);\n var line = this.cfg.line.style;\n this.container.addShape('path', {\n attrs: assign({\n // @ts-ignore\n path: path\n }, line)\n });\n };\n Tree.prototype.getXAxisOption = function (x, axes, option, facet) {\n if (facet.rowIndex !== facet.rowValuesLength - 1) {\n return __assign(__assign({}, option), {\n title: null,\n label: null\n });\n }\n return option;\n };\n Tree.prototype.getYAxisOption = function (y, axes, option, facet) {\n if (facet.originColIndex !== 0 && facet.columnIndex !== 0) {\n return __assign(__assign({}, option), {\n title: null,\n label: null\n });\n }\n return option;\n };\n return Tree;\n}(Facet);\nexport default Tree;","import { __read, __spreadArray } from \"tslib\";\nimport { reduce, isNumber } from '@antv/util';\n/**\n * 获得中位数\n * @param array\n */\nexport function getMedian(array) {\n var arr = __spreadArray([], __read(array), false);\n // 先排序\n arr.sort(function (a, b) {\n return a - b;\n });\n var len = arr.length;\n // median\n // 0\n if (len === 0) {\n return 0;\n }\n // 奇数\n if (len % 2 === 1) {\n return arr[(len - 1) / 2];\n }\n // 偶数\n return (arr[len / 2] + arr[len / 2 - 1]) / 2;\n}\n/**\n * 获得平均值\n * @param array\n */\nexport function getMean(array) {\n var sum = reduce(array, function (r, num) {\n return r += isNaN(num) || !isNumber(num) ? 0 : num;\n }, 0);\n return array.length === 0 ? 0 : sum / array.length;\n}","import { getMedian, getMean } from './stat';\n/**\n * parse the value position\n * @param val\n * @param scale\n */\nexport function getNormalizedValue(val, scale) {\n if (!scale) {\n return null;\n }\n var scaled;\n switch (val) {\n case 'start':\n return 0;\n case 'center':\n return 0.5;\n case 'end':\n return 1;\n case 'median':\n {\n scaled = scale.isCategory ? getMedian(scale.values.map(function (_, idx) {\n return idx;\n })) : getMedian(scale.values);\n break;\n }\n case 'mean':\n {\n scaled = scale.isCategory ? (scale.values.length - 1) / 2 : getMean(scale.values);\n break;\n }\n case 'min':\n scaled = scale.isCategory ? 0 : scale[val];\n break;\n case 'max':\n scaled = scale.isCategory ? scale.values.length - 1 : scale[val];\n break;\n default:\n scaled = val;\n break;\n }\n return scale.scale(scaled);\n}","import { __assign, __extends, __read, __rest, __values } from \"tslib\";\nimport { contains, deepMix, each, get, isArray, isFunction, isNil, isString, keys, upperFirst, find, includes } from '@antv/util';\nimport { Annotation as AnnotationComponent } from '../../dependents';\nimport { DEFAULT_ANIMATE_CFG } from '../../animate/';\nimport { COMPONENT_TYPE, DIRECTION, GEOMETRY_LIFE_CIRCLE, LAYER, VIEW_LIFE_CIRCLE } from '../../constant';\nimport { getAngleByPoint, getDistanceToCenter } from '../../util/coordinate';\nimport { omit } from '../../util/helper';\nimport { getNormalizedValue } from '../../util/annotation';\nimport { Controller } from './base';\n/** 需要在图形绘制完成后才渲染的辅助组件类型列表 */\nvar ANNOTATIONS_AFTER_RENDER = ['regionFilter', 'shape'];\n/**\n * Annotation controller, 主要作用:\n * 1. 创建 Annotation: line、text、arc ...\n * 2. 生命周期: init、layout、render、clear、destroy\n */\nvar Annotation = /** @class */function (_super) {\n __extends(Annotation, _super);\n function Annotation(view) {\n var _this = _super.call(this, view) || this;\n /* 组件更新的 cache,组件配置 object : 组件 */\n _this.cache = new Map();\n _this.foregroundContainer = _this.view.getLayer(LAYER.FORE).addGroup();\n _this.backgroundContainer = _this.view.getLayer(LAYER.BG).addGroup();\n _this.option = [];\n return _this;\n }\n Object.defineProperty(Annotation.prototype, \"name\", {\n get: function get() {\n return 'annotation';\n },\n enumerable: false,\n configurable: true\n });\n Annotation.prototype.init = function () {};\n /**\n * 因为 annotation 需要依赖坐标系信息,所以 render 阶段为空方法,实际的创建逻辑都在 layout 中\n */\n Annotation.prototype.layout = function () {\n this.update();\n };\n // 因为 Annotation 不参与布局,但是渲染的位置依赖于坐标系,所以可以将绘制阶段延迟到 layout() 进行\n Annotation.prototype.render = function () {};\n /**\n * 更新\n */\n Annotation.prototype.update = function () {\n var _this = this;\n // 1. 先处理需要在图形渲染之后的辅助组件 需要在 Geometry 完成之后,拿到图形信息\n this.onAfterRender(function () {\n var updated = new Map();\n // 先看是否有 regionFilter/shape 要更新\n each(_this.option, function (option) {\n if (includes(ANNOTATIONS_AFTER_RENDER, option.type)) {\n var co = _this.updateOrCreate(option);\n // 存储已经处理过的\n if (co) {\n updated.set(_this.getCacheKey(option), co);\n }\n }\n });\n // 处理完成之后,更新 cache\n // 处理完成之后,销毁删除的\n _this.cache = _this.syncCache(updated);\n });\n // 2. 处理非 regionFilter\n var updateCache = new Map();\n each(this.option, function (option) {\n if (!includes(ANNOTATIONS_AFTER_RENDER, option.type)) {\n var co = _this.updateOrCreate(option);\n // 存储已经处理过的\n if (co) {\n updateCache.set(_this.getCacheKey(option), co);\n }\n }\n });\n this.cache = this.syncCache(updateCache);\n };\n /**\n * 清空\n * @param includeOption 是否清空 option 配置项\n */\n Annotation.prototype.clear = function (includeOption) {\n if (includeOption === void 0) {\n includeOption = false;\n }\n _super.prototype.clear.call(this);\n this.clearComponents();\n this.foregroundContainer.clear();\n this.backgroundContainer.clear();\n // clear all option\n if (includeOption) {\n this.option = [];\n }\n };\n Annotation.prototype.destroy = function () {\n this.clear(true);\n this.foregroundContainer.remove(true);\n this.backgroundContainer.remove(true);\n };\n /**\n * 复写基类的方法\n */\n Annotation.prototype.getComponents = function () {\n var co = [];\n this.cache.forEach(function (value) {\n co.push(value);\n });\n return co;\n };\n /**\n * 清除当前的组件\n */\n Annotation.prototype.clearComponents = function () {\n this.getComponents().forEach(function (co) {\n co.component.destroy();\n });\n this.cache.clear();\n };\n /**\n * region filter 比较特殊的渲染时机\n * @param doWhat\n */\n Annotation.prototype.onAfterRender = function (doWhat) {\n var done = false;\n if (this.view.getOptions().animate) {\n this.view.geometries.forEach(function (g) {\n // 如果 geometry 开启,则监听\n if (g.animateOption) {\n g.once(GEOMETRY_LIFE_CIRCLE.AFTER_DRAW_ANIMATE, function () {\n doWhat();\n });\n done = true;\n }\n });\n }\n if (!done) {\n this.view.getRootView().once(VIEW_LIFE_CIRCLE.AFTER_RENDER, function () {\n doWhat();\n });\n }\n };\n Annotation.prototype.createAnnotation = function (option) {\n var type = option.type;\n var Ctor = AnnotationComponent[upperFirst(type)];\n if (Ctor) {\n var theme = this.getAnnotationTheme(type);\n var cfg = this.getAnnotationCfg(type, option, theme);\n // 不创建\n if (!cfg) {\n return null;\n }\n var annotation = new Ctor(cfg);\n return {\n component: annotation,\n layer: this.isTop(cfg) ? LAYER.FORE : LAYER.BG,\n direction: DIRECTION.NONE,\n type: COMPONENT_TYPE.ANNOTATION,\n extra: option\n };\n }\n };\n // APIs for creating annotation component\n Annotation.prototype.annotation = function (option) {\n this.option.push(option);\n };\n /**\n * 创建 Arc\n * @param option\n * @returns AnnotationController\n */\n Annotation.prototype.arc = function (option) {\n this.annotation(__assign({\n type: 'arc'\n }, option));\n return this;\n };\n /**\n * 创建 image\n * @param option\n * @returns AnnotationController\n */\n Annotation.prototype.image = function (option) {\n this.annotation(__assign({\n type: 'image'\n }, option));\n return this;\n };\n /**\n * 创建 Line\n * @param option\n * @returns AnnotationController\n */\n Annotation.prototype.line = function (option) {\n this.annotation(__assign({\n type: 'line'\n }, option));\n return this;\n };\n /**\n * 创建 Region\n * @param option\n * @returns AnnotationController\n */\n Annotation.prototype.region = function (option) {\n this.annotation(__assign({\n type: 'region'\n }, option));\n return this;\n };\n /**\n * 创建 Text\n * @param option\n * @returns AnnotationController\n */\n Annotation.prototype.text = function (option) {\n this.annotation(__assign({\n type: 'text'\n }, option));\n return this;\n };\n /**\n * 创建 DataMarker\n * @param option\n * @returns AnnotationController\n */\n Annotation.prototype.dataMarker = function (option) {\n this.annotation(__assign({\n type: 'dataMarker'\n }, option));\n return this;\n };\n /**\n * 创建 DataRegion\n * @param option\n * @returns AnnotationController\n */\n Annotation.prototype.dataRegion = function (option) {\n this.annotation(__assign({\n type: 'dataRegion'\n }, option));\n };\n /**\n * 创建 RegionFilter\n * @param option\n * @returns AnnotationController\n */\n Annotation.prototype.regionFilter = function (option) {\n this.annotation(__assign({\n type: 'regionFilter'\n }, option));\n };\n /**\n * 创建 ShapeAnnotation\n * @param option\n */\n Annotation.prototype.shape = function (option) {\n this.annotation(__assign({\n type: 'shape'\n }, option));\n };\n /**\n * 创建 HtmlAnnotation\n * @param option\n */\n Annotation.prototype.html = function (option) {\n this.annotation(__assign({\n type: 'html'\n }, option));\n };\n // end API\n /**\n * parse the point position to [x, y]\n * @param p Position\n * @returns { x, y }\n */\n Annotation.prototype.parsePosition = function (p) {\n var e_1, _a;\n var xScale = this.view.getXScale();\n // 转成 object\n var yScales = this.view.getScalesByDim('y');\n var position = isFunction(p) ? p.call(null, xScale, yScales) : p;\n var x = 0;\n var y = 0;\n // 入参是 [24, 24] 这类时\n if (isArray(position)) {\n var _b = __read(position, 2),\n xPos = _b[0],\n yPos = _b[1];\n // 如果数据格式是 ['50%', '50%'] 的格式\n // fix: 原始数据中可能会包含 'xxx5%xxx' 这样的数据,需要判断下 https://github.com/antvis/f2/issues/590\n // @ts-ignore\n if (isString(xPos) && xPos.indexOf('%') !== -1 && !isNaN(xPos.slice(0, -1))) {\n return this.parsePercentPosition(position);\n }\n x = getNormalizedValue(xPos, xScale);\n y = getNormalizedValue(yPos, Object.values(yScales)[0]);\n } else if (!isNil(position)) {\n try {\n // 入参是 object 结构,数据点\n for (var _c = __values(keys(position)), _d = _c.next(); !_d.done; _d = _c.next()) {\n var key = _d.value;\n var value = position[key];\n if (key === xScale.field) {\n x = getNormalizedValue(value, xScale);\n }\n if (yScales[key]) {\n y = getNormalizedValue(value, yScales[key]);\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n }\n if (isNaN(x) || isNaN(y)) {\n return null;\n }\n return this.view.getCoordinate().convert({\n x: x,\n y: y\n });\n };\n /**\n * parse all the points between start and end\n * @param start\n * @param end\n * @return Point[]\n */\n Annotation.prototype.getRegionPoints = function (start, end) {\n var _this = this;\n var xScale = this.view.getXScale();\n var yScales = this.view.getScalesByDim('y');\n var yScale = Object.values(yScales)[0];\n var xField = xScale.field;\n var viewData = this.view.getData();\n var startXValue = isArray(start) ? start[0] : start[xField];\n var endXValue = isArray(end) ? end[0] : end[xField];\n var arr = [];\n var startIndex;\n each(viewData, function (item, idx) {\n if (item[xField] === startXValue) {\n startIndex = idx;\n }\n if (idx >= startIndex) {\n var point = _this.parsePosition([item[xField], item[yScale.field]]);\n if (point) {\n arr.push(point);\n }\n }\n if (item[xField] === endXValue) {\n return false;\n }\n });\n return arr;\n };\n /**\n * parse percent position\n * @param position\n */\n Annotation.prototype.parsePercentPosition = function (position) {\n var xPercent = parseFloat(position[0]) / 100;\n var yPercent = parseFloat(position[1]) / 100;\n var coordinate = this.view.getCoordinate();\n var start = coordinate.start,\n end = coordinate.end;\n var topLeft = {\n x: Math.min(start.x, end.x),\n y: Math.min(start.y, end.y)\n };\n var x = coordinate.getWidth() * xPercent + topLeft.x;\n var y = coordinate.getHeight() * yPercent + topLeft.y;\n return {\n x: x,\n y: y\n };\n };\n /**\n * get coordinate bbox\n */\n Annotation.prototype.getCoordinateBBox = function () {\n var coordinate = this.view.getCoordinate();\n var start = coordinate.start,\n end = coordinate.end;\n var width = coordinate.getWidth();\n var height = coordinate.getHeight();\n var topLeft = {\n x: Math.min(start.x, end.x),\n y: Math.min(start.y, end.y)\n };\n return {\n x: topLeft.x,\n y: topLeft.y,\n minX: topLeft.x,\n minY: topLeft.y,\n maxX: topLeft.x + width,\n maxY: topLeft.y + height,\n width: width,\n height: height\n };\n };\n /**\n * get annotation component config by different type\n * @param type\n * @param option 用户的配置\n * @param theme\n */\n Annotation.prototype.getAnnotationCfg = function (type, option, theme) {\n var _this = this;\n var coordinate = this.view.getCoordinate();\n var canvas = this.view.getCanvas();\n var o = {};\n if (isNil(option)) {\n return null;\n }\n var start = option.start,\n end = option.end,\n position = option.position;\n var sp = this.parsePosition(start);\n var ep = this.parsePosition(end);\n var textPoint = this.parsePosition(position);\n if (['arc', 'image', 'line', 'region', 'regionFilter'].includes(type) && (!sp || !ep)) {\n return null;\n } else if (['text', 'dataMarker', 'html'].includes(type) && !textPoint) {\n return null;\n }\n if (type === 'arc') {\n var _a = option,\n start_1 = _a.start,\n end_1 = _a.end,\n rest = __rest(_a, [\"start\", \"end\"]);\n var startAngle = getAngleByPoint(coordinate, sp);\n var endAngle = getAngleByPoint(coordinate, ep);\n if (startAngle > endAngle) {\n endAngle = Math.PI * 2 + endAngle;\n }\n o = __assign(__assign({}, rest), {\n center: coordinate.getCenter(),\n radius: getDistanceToCenter(coordinate, sp),\n startAngle: startAngle,\n endAngle: endAngle\n });\n } else if (type === 'image') {\n var _b = option,\n start_2 = _b.start,\n end_2 = _b.end,\n rest = __rest(_b, [\"start\", \"end\"]);\n o = __assign(__assign({}, rest), {\n start: sp,\n end: ep,\n src: option.src\n });\n } else if (type === 'line') {\n var _c = option,\n start_3 = _c.start,\n end_3 = _c.end,\n rest = __rest(_c, [\"start\", \"end\"]);\n o = __assign(__assign({}, rest), {\n start: sp,\n end: ep,\n text: get(option, 'text', null)\n });\n } else if (type === 'region') {\n var _d = option,\n start_4 = _d.start,\n end_4 = _d.end,\n rest = __rest(_d, [\"start\", \"end\"]);\n o = __assign(__assign({}, rest), {\n start: sp,\n end: ep\n });\n } else if (type === 'text') {\n var filteredData = this.view.getData();\n var _e = option,\n position_1 = _e.position,\n content = _e.content,\n rest = __rest(_e, [\"position\", \"content\"]);\n var textContent = content;\n if (isFunction(content)) {\n textContent = content(filteredData);\n }\n o = __assign(__assign(__assign({}, textPoint), rest), {\n content: textContent\n });\n } else if (type === 'dataMarker') {\n var _f = option,\n position_2 = _f.position,\n point = _f.point,\n line = _f.line,\n text = _f.text,\n autoAdjust = _f.autoAdjust,\n direction = _f.direction,\n rest = __rest(_f, [\"position\", \"point\", \"line\", \"text\", \"autoAdjust\", \"direction\"]);\n o = __assign(__assign(__assign({}, rest), textPoint), {\n coordinateBBox: this.getCoordinateBBox(),\n point: point,\n line: line,\n text: text,\n autoAdjust: autoAdjust,\n direction: direction\n });\n } else if (type === 'dataRegion') {\n var _g = option,\n start_5 = _g.start,\n end_5 = _g.end,\n region = _g.region,\n text = _g.text,\n lineLength = _g.lineLength,\n rest = __rest(_g, [\"start\", \"end\", \"region\", \"text\", \"lineLength\"]);\n o = __assign(__assign({}, rest), {\n points: this.getRegionPoints(start_5, end_5),\n region: region,\n text: text,\n lineLength: lineLength\n });\n } else if (type === 'regionFilter') {\n var _h = option,\n start_6 = _h.start,\n end_6 = _h.end,\n apply_1 = _h.apply,\n color = _h.color,\n rest = __rest(_h, [\"start\", \"end\", \"apply\", \"color\"]);\n var geometries = this.view.geometries;\n var shapes_1 = [];\n var addShapes_1 = function addShapes_1(item) {\n if (!item) {\n return;\n }\n if (item.isGroup()) {\n item.getChildren().forEach(function (child) {\n return addShapes_1(child);\n });\n } else {\n shapes_1.push(item);\n }\n };\n each(geometries, function (geom) {\n if (apply_1) {\n if (contains(apply_1, geom.type)) {\n each(geom.elements, function (elem) {\n addShapes_1(elem.shape);\n });\n }\n } else {\n each(geom.elements, function (elem) {\n addShapes_1(elem.shape);\n });\n }\n });\n o = __assign(__assign({}, rest), {\n color: color,\n shapes: shapes_1,\n start: sp,\n end: ep\n });\n } else if (type === 'shape') {\n var _j = option,\n render_1 = _j.render,\n restOptions = __rest(_j, [\"render\"]);\n var wrappedRender = function wrappedRender(container) {\n if (isFunction(option.render)) {\n return render_1(container, _this.view, {\n parsePosition: _this.parsePosition.bind(_this)\n });\n }\n };\n o = __assign(__assign({}, restOptions), {\n render: wrappedRender\n });\n } else if (type === 'html') {\n var _k = option,\n html_1 = _k.html,\n position_3 = _k.position,\n restOptions = __rest(_k, [\"html\", \"position\"]);\n var wrappedHtml = function wrappedHtml(container) {\n if (isFunction(html_1)) {\n return html_1(container, _this.view);\n }\n return html_1;\n };\n o = __assign(__assign(__assign({}, restOptions), textPoint), {\n // html 组件需要指定 parent\n parent: canvas.get('el').parentNode,\n html: wrappedHtml\n });\n }\n // 合并主题,用户配置优先级高于默认主题\n var cfg = deepMix({}, theme, __assign(__assign({}, o), {\n top: option.top,\n style: option.style,\n offsetX: option.offsetX,\n offsetY: option.offsetY\n }));\n if (type !== 'html') {\n // html 类型不使用 G container\n cfg.container = this.getComponentContainer(cfg);\n }\n cfg.animate = this.view.getOptions().animate && cfg.animate && get(option, 'animate', cfg.animate); // 如果 view 关闭动画,则不执行\n cfg.animateOption = deepMix({}, DEFAULT_ANIMATE_CFG, cfg.animateOption, option.animateOption);\n return cfg;\n };\n /**\n * is annotation render on top\n * @param option\n * @return whethe on top\n */\n Annotation.prototype.isTop = function (option) {\n return get(option, 'top', true);\n };\n /**\n * get the container by option.top\n * default is on top\n * @param option\n * @returns the container\n */\n Annotation.prototype.getComponentContainer = function (option) {\n return this.isTop(option) ? this.foregroundContainer : this.backgroundContainer;\n };\n Annotation.prototype.getAnnotationTheme = function (type) {\n return get(this.view.getTheme(), ['components', 'annotation', type], {});\n };\n /**\n * 创建或者更新 annotation\n * @param option\n */\n Annotation.prototype.updateOrCreate = function (option) {\n // 拿到缓存的内容\n var co = this.cache.get(this.getCacheKey(option));\n // 存在则更新,不存在在创建\n if (co) {\n var type = option.type;\n var theme = this.getAnnotationTheme(type);\n var cfg = this.getAnnotationCfg(type, option, theme);\n // 忽略掉一些配置\n if (cfg) {\n omit(cfg, ['container']);\n }\n co.component.update(__assign(__assign({}, cfg || {}), {\n visible: !!cfg\n }));\n // 对于 regionFilter/shape,因为生命周期的原因,需要额外 render\n if (includes(ANNOTATIONS_AFTER_RENDER, option.type)) {\n co.component.render();\n }\n } else {\n // 不存在,创建\n co = this.createAnnotation(option);\n if (co) {\n co.component.init();\n // Note:regionFilter/shape 特殊处理,regionFilter/shape 需要取到 Geometry 中的 Shape,需要在 view render 之后处理\n // 其他组件使用外层的统一 render 逻辑\n if (includes(ANNOTATIONS_AFTER_RENDER, option.type)) {\n co.component.render();\n }\n }\n }\n return co;\n };\n /**\n * 更新缓存,以及销毁组件\n * @param updated 更新或者创建的组件\n */\n Annotation.prototype.syncCache = function (updated) {\n var _this = this;\n var newCache = new Map(this.cache); // clone 一份\n // 将 update 更新到 cache\n updated.forEach(function (co, key) {\n newCache.set(key, co);\n });\n // 另外和 options 进行对比,删除\n newCache.forEach(function (co, key) {\n // option 中已经找不到,那么就是删除的\n if (!find(_this.option, function (option) {\n return key === _this.getCacheKey(option);\n })) {\n co.component.destroy();\n newCache.delete(key);\n }\n });\n return newCache;\n };\n /**\n * 获得缓存组件的 key\n * @param option\n */\n Annotation.prototype.getCacheKey = function (option) {\n // 如果存在 id,则使用 id string,否则直接使用 option 引用作为 key\n return option;\n // 后续扩展 id 用\n // const id = get(option, 'id');\n // return id ? id : option;\n };\n\n return Annotation;\n}(Controller);\nexport default Annotation;","import { deepMix, get, map } from '@antv/util';\n/**\n * @ignore\n * get the grid theme by type, will mix the common cfg of axis\n * @param theme\n * @param direction\n * @returns theme object\n */\nexport function getGridThemeCfg(theme, direction) {\n var axisTheme = deepMix({}, get(theme, ['components', 'axis', 'common']), get(theme, ['components', 'axis', direction]));\n return get(axisTheme, ['grid'], {});\n}\n/**\n * @ignore\n * get axis grid items\n * @param coordinate\n * @param scale\n * @param dim\n * @return items\n */\nexport function getLineGridItems(coordinate, scale, dim, alignTick) {\n var items = [];\n var ticks = scale.getTicks();\n if (coordinate.isPolar) {\n // 补全 ticks\n ticks.push({\n value: 1,\n text: '',\n tickValue: ''\n });\n }\n ticks.reduce(function (preTick, currentTick, currentIndex) {\n var currentValue = currentTick.value;\n if (alignTick) {\n items.push({\n points: [coordinate.convert(dim === 'y' ? {\n x: 0,\n y: currentValue\n } : {\n x: currentValue,\n y: 0\n }), coordinate.convert(dim === 'y' ? {\n x: 1,\n y: currentValue\n } : {\n x: currentValue,\n y: 1\n })]\n });\n } else {\n if (currentIndex) {\n var preValue = preTick.value;\n var middleValue = (preValue + currentValue) / 2;\n items.push({\n points: [coordinate.convert(dim === 'y' ? {\n x: 0,\n y: middleValue\n } : {\n x: middleValue,\n y: 0\n }), coordinate.convert(dim === 'y' ? {\n x: 1,\n y: middleValue\n } : {\n x: middleValue,\n y: 1\n })]\n });\n }\n }\n return currentTick;\n }, ticks[0]);\n return items;\n}\n/**\n * @ignore\n * get\n * @param coordinate\n * @param xScale\n * @param yScale\n * @param dim\n * @returns items\n */\nexport function getCircleGridItems(coordinate, xScale, yScale, alignTick, dim) {\n var count = xScale.values.length;\n var items = [];\n var ticks = yScale.getTicks();\n ticks.reduce(function (preTick, currentTick) {\n var preValue = preTick ? preTick.value : currentTick.value; // 只有一项数据时取当前值\n var currentValue = currentTick.value;\n var middleValue = (preValue + currentValue) / 2;\n if (dim === 'x') {\n // 如果是 x 轴作为半径轴,那么只需要取圆弧收尾两个即可\n items.push({\n points: [coordinate.convert({\n x: alignTick ? currentValue : middleValue,\n y: 0\n }), coordinate.convert({\n x: alignTick ? currentValue : middleValue,\n y: 1\n })]\n });\n } else {\n items.push({\n points: map(Array(count + 1), function (__, idx) {\n return coordinate.convert({\n x: idx / count,\n y: alignTick ? currentValue : middleValue\n });\n })\n });\n }\n return currentTick;\n }, ticks[0]);\n return items;\n}\n/**\n * @ignore\n * show grid or not\n * @param axisTheme\n * @param axisOption\n */\nexport function showGrid(axisTheme, axisOption) {\n var userGrid = get(axisOption, 'grid');\n if (userGrid === null) {\n return false;\n }\n var themeGrid = get(axisTheme, 'grid');\n return !(userGrid === undefined && themeGrid === null);\n}","import { __assign, __extends } from \"tslib\";\nimport { deepMix, each, get, isUndefined } from '@antv/util';\nimport { DIRECTION, COMPONENT_TYPE, LAYER } from '../../constant';\nimport { CircleAxis, CircleGrid, LineAxis, LineGrid } from '../../dependents';\nimport { DEFAULT_ANIMATE_CFG } from '../../animate/';\nimport { getAxisDirection, getAxisFactorByRegion, getAxisRegion, getAxisThemeCfg, getAxisTitleOptions, getAxisTitleText, getCircleAxisCenterRadius, isVertical } from '../../util/axis';\nimport { getAxisOption } from '../../util/axis';\nimport { getCircleGridItems, getGridThemeCfg, getLineGridItems, showGrid } from '../../util/grid';\nimport { omit } from '../../util/helper';\nimport { Controller } from './base';\n// update 组件的时候,忽略的数据更新\nvar OMIT_CFG = ['container'];\n// 坐标轴默认动画配置\nvar AXIS_DEFAULT_ANIMATE_CFG = __assign(__assign({}, DEFAULT_ANIMATE_CFG), {\n appear: null\n});\n/**\n * @ignore\n * G2 Axis controller, will:\n * - create component\n * - axis\n * - grid\n * - life circle\n */\nvar Axis = /** @class */function (_super) {\n __extends(Axis, _super);\n function Axis(view) {\n var _this = _super.call(this, view) || this;\n /** 使用 object 存储组件 */\n _this.cache = new Map();\n // 先创建 gridContainer,将 grid 放到 axis 底层\n _this.gridContainer = _this.view.getLayer(LAYER.BG).addGroup();\n _this.gridForeContainer = _this.view.getLayer(LAYER.FORE).addGroup();\n _this.axisContainer = _this.view.getLayer(LAYER.BG).addGroup();\n _this.axisForeContainer = _this.view.getLayer(LAYER.FORE).addGroup();\n return _this;\n }\n Object.defineProperty(Axis.prototype, \"name\", {\n get: function get() {\n return 'axis';\n },\n enumerable: false,\n configurable: true\n });\n Axis.prototype.init = function () {};\n Axis.prototype.render = function () {\n this.update();\n };\n /**\n * 更新组件布局,位置大小\n */\n Axis.prototype.layout = function () {\n var _this = this;\n var coordinate = this.view.getCoordinate();\n each(this.getComponents(), function (co) {\n var component = co.component,\n direction = co.direction,\n type = co.type,\n extra = co.extra;\n var dim = extra.dim,\n scale = extra.scale,\n alignTick = extra.alignTick;\n var updated;\n if (type === COMPONENT_TYPE.AXIS) {\n if (coordinate.isPolar) {\n if (dim === 'x') {\n updated = coordinate.isTransposed ? getAxisRegion(coordinate, direction) : getCircleAxisCenterRadius(coordinate);\n } else if (dim === 'y') {\n updated = coordinate.isTransposed ? getCircleAxisCenterRadius(coordinate) : getAxisRegion(coordinate, direction);\n }\n } else {\n updated = getAxisRegion(coordinate, direction);\n }\n } else if (type === COMPONENT_TYPE.GRID) {\n if (coordinate.isPolar) {\n var items = void 0;\n if (coordinate.isTransposed) {\n items = dim === 'x' ? getCircleGridItems(coordinate, _this.view.getYScales()[0], scale, alignTick, dim) : getLineGridItems(coordinate, scale, dim, alignTick);\n } else {\n items = dim === 'x' ? getLineGridItems(coordinate, scale, dim, alignTick) : getCircleGridItems(coordinate, _this.view.getXScale(), scale, alignTick, dim);\n }\n updated = {\n items: items,\n // coordinate 更新之后,center 也变化了\n center: _this.view.getCoordinate().getCenter()\n };\n } else {\n updated = {\n items: getLineGridItems(coordinate, scale, dim, alignTick)\n };\n }\n }\n component.update(updated);\n });\n };\n /**\n * 更新 axis 组件\n */\n Axis.prototype.update = function () {\n this.option = this.view.getOptions().axes;\n var updatedCache = new Map();\n this.updateXAxes(updatedCache);\n this.updateYAxes(updatedCache);\n // 处理完成之后,销毁删除的\n // 不在处理中的\n var newCache = new Map();\n this.cache.forEach(function (co, key) {\n if (updatedCache.has(key)) {\n newCache.set(key, co);\n } else {\n // 不存在,则是所有需要被销毁的组件\n co.component.destroy();\n }\n });\n // 更新缓存\n this.cache = newCache;\n };\n Axis.prototype.clear = function () {\n _super.prototype.clear.call(this);\n this.cache.clear();\n this.gridContainer.clear();\n this.gridForeContainer.clear();\n this.axisContainer.clear();\n this.axisForeContainer.clear();\n };\n Axis.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.gridContainer.remove(true);\n this.gridForeContainer.remove(true);\n this.axisContainer.remove(true);\n this.axisForeContainer.remove(true);\n };\n /**\n * @override\n */\n Axis.prototype.getComponents = function () {\n var co = [];\n this.cache.forEach(function (value) {\n co.push(value);\n });\n return co;\n };\n /**\n * 更新 x axis\n * @param updatedCache\n */\n Axis.prototype.updateXAxes = function (updatedCache) {\n // x axis\n var scale = this.view.getXScale();\n if (!scale || scale.isIdentity) {\n return;\n }\n var xAxisOption = getAxisOption(this.option, scale.field);\n if (xAxisOption === false) {\n return;\n }\n var direction = getAxisDirection(xAxisOption, DIRECTION.BOTTOM);\n var layer = LAYER.BG;\n var dim = 'x';\n var coordinate = this.view.getCoordinate();\n var axisId = this.getId('axis', scale.field);\n var gridId = this.getId('grid', scale.field);\n if (coordinate.isRect) {\n // 1. do axis update\n var axis = this.cache.get(axisId);\n // 存在则更新\n if (axis) {\n var cfg = this.getLineAxisCfg(scale, xAxisOption, direction);\n omit(cfg, OMIT_CFG);\n axis.component.update(cfg);\n updatedCache.set(axisId, axis);\n } else {\n // 不存在,则创建\n axis = this.createLineAxis(scale, xAxisOption, layer, direction, dim);\n this.cache.set(axisId, axis);\n updatedCache.set(axisId, axis);\n }\n // 2. do grid update\n var grid = this.cache.get(gridId);\n // 存在则更新\n if (grid) {\n var cfg = this.getLineGridCfg(scale, xAxisOption, direction, dim);\n omit(cfg, OMIT_CFG);\n grid.component.update(cfg);\n updatedCache.set(gridId, grid);\n } else {\n // 不存在则创建\n grid = this.createLineGrid(scale, xAxisOption, layer, direction, dim);\n if (grid) {\n this.cache.set(gridId, grid);\n updatedCache.set(gridId, grid);\n }\n }\n } else if (coordinate.isPolar) {\n // 1. do axis update\n var axis = this.cache.get(axisId);\n // 存在则更新\n if (axis) {\n var cfg = coordinate.isTransposed ? this.getLineAxisCfg(scale, xAxisOption, DIRECTION.RADIUS) : this.getCircleAxisCfg(scale, xAxisOption, direction);\n omit(cfg, OMIT_CFG);\n axis.component.update(cfg);\n updatedCache.set(axisId, axis);\n } else {\n // 不存在,则创建\n if (coordinate.isTransposed) {\n if (isUndefined(xAxisOption)) {\n // 默认不渲染转置极坐标下的坐标轴\n return;\n } else {\n // 如果用户打开了隐藏的坐标轴 chart.axis(true)/chart.axis('x', true)\n // 那么对于转置了的极坐标,半径轴显示的是 x 轴对应的数据\n axis = this.createLineAxis(scale, xAxisOption, layer, DIRECTION.RADIUS, dim);\n }\n } else {\n axis = this.createCircleAxis(scale, xAxisOption, layer, direction, dim);\n }\n this.cache.set(axisId, axis);\n updatedCache.set(axisId, axis);\n }\n // 2. do grid update\n var grid = this.cache.get(gridId);\n // 存在则更新\n if (grid) {\n var cfg = coordinate.isTransposed ? this.getCircleGridCfg(scale, xAxisOption, DIRECTION.RADIUS, dim) : this.getLineGridCfg(scale, xAxisOption, DIRECTION.CIRCLE, dim);\n omit(cfg, OMIT_CFG);\n grid.component.update(cfg);\n updatedCache.set(gridId, grid);\n } else {\n // 不存在则创建\n if (coordinate.isTransposed) {\n if (isUndefined(xAxisOption)) {\n return;\n } else {\n grid = this.createCircleGrid(scale, xAxisOption, layer, DIRECTION.RADIUS, dim);\n }\n } else {\n // grid,极坐标下的 x 轴网格线沿着半径方向绘制\n grid = this.createLineGrid(scale, xAxisOption, layer, DIRECTION.CIRCLE, dim);\n }\n if (grid) {\n this.cache.set(gridId, grid);\n updatedCache.set(gridId, grid);\n }\n }\n } else {\n // helix and other, do not draw axis\n }\n };\n Axis.prototype.updateYAxes = function (updatedCache) {\n var _this = this;\n // y axes\n var yScales = this.view.getYScales();\n each(yScales, function (scale, idx) {\n // @ts-ignore\n if (!scale || scale.isIdentity) {\n return;\n }\n var field = scale.field;\n var yAxisOption = getAxisOption(_this.option, field);\n if (yAxisOption !== false) {\n var layer = LAYER.BG;\n var dim = 'y';\n var axisId = _this.getId('axis', field);\n var gridId = _this.getId('grid', field);\n var coordinate = _this.view.getCoordinate();\n if (coordinate.isRect) {\n var direction = getAxisDirection(yAxisOption, idx === 0 ? DIRECTION.LEFT : DIRECTION.RIGHT);\n // 1. do axis update\n var axis = _this.cache.get(axisId);\n // 存在则更新\n if (axis) {\n var cfg = _this.getLineAxisCfg(scale, yAxisOption, direction);\n omit(cfg, OMIT_CFG);\n axis.component.update(cfg);\n updatedCache.set(axisId, axis);\n } else {\n // 不存在,则创建\n axis = _this.createLineAxis(scale, yAxisOption, layer, direction, dim);\n _this.cache.set(axisId, axis);\n updatedCache.set(axisId, axis);\n }\n // 2. do grid update\n var grid = _this.cache.get(gridId);\n // 存在则更新\n if (grid) {\n var cfg = _this.getLineGridCfg(scale, yAxisOption, direction, dim);\n omit(cfg, OMIT_CFG);\n grid.component.update(cfg);\n updatedCache.set(gridId, grid);\n } else {\n // 不存在则创建\n grid = _this.createLineGrid(scale, yAxisOption, layer, direction, dim);\n if (grid) {\n _this.cache.set(gridId, grid);\n updatedCache.set(gridId, grid);\n }\n }\n } else if (coordinate.isPolar) {\n // 1. do axis update\n var axis = _this.cache.get(axisId);\n // 存在则更新\n if (axis) {\n var cfg = coordinate.isTransposed ? _this.getCircleAxisCfg(scale, yAxisOption, DIRECTION.CIRCLE) : _this.getLineAxisCfg(scale, yAxisOption, DIRECTION.RADIUS);\n // @ts-ignore\n omit(cfg, OMIT_CFG);\n axis.component.update(cfg);\n updatedCache.set(axisId, axis);\n } else {\n // 不存在,则创建\n if (coordinate.isTransposed) {\n if (isUndefined(yAxisOption)) {\n return;\n } else {\n axis = _this.createCircleAxis(scale, yAxisOption, layer, DIRECTION.CIRCLE, dim);\n }\n } else {\n axis = _this.createLineAxis(scale, yAxisOption, layer, DIRECTION.RADIUS, dim);\n }\n _this.cache.set(axisId, axis);\n updatedCache.set(axisId, axis);\n }\n // 2. do grid update\n var grid = _this.cache.get(gridId);\n // 存在则更新\n if (grid) {\n var cfg = coordinate.isTransposed ? _this.getLineGridCfg(scale, yAxisOption, DIRECTION.CIRCLE, dim) : _this.getCircleGridCfg(scale, yAxisOption, DIRECTION.RADIUS, dim);\n omit(cfg, OMIT_CFG);\n grid.component.update(cfg);\n updatedCache.set(gridId, grid);\n } else {\n // 不存在则创建\n if (coordinate.isTransposed) {\n if (isUndefined(yAxisOption)) {\n return;\n } else {\n grid = _this.createLineGrid(scale, yAxisOption, layer, DIRECTION.CIRCLE, dim);\n }\n } else {\n grid = _this.createCircleGrid(scale, yAxisOption, layer, DIRECTION.RADIUS, dim);\n }\n if (grid) {\n _this.cache.set(gridId, grid);\n updatedCache.set(gridId, grid);\n }\n }\n } else {\n // helix and other, do not draw axis\n }\n }\n });\n };\n /**\n * 创建 line axis\n * @param scale\n * @param option\n * @param layer\n * @param direction\n * @param dim\n */\n Axis.prototype.createLineAxis = function (scale, option, layer, direction, dim) {\n // axis\n var axis = {\n component: new LineAxis(this.getLineAxisCfg(scale, option, direction)),\n layer: layer,\n direction: direction === DIRECTION.RADIUS ? DIRECTION.NONE : direction,\n type: COMPONENT_TYPE.AXIS,\n extra: {\n dim: dim,\n scale: scale\n }\n };\n axis.component.set('field', scale.field);\n axis.component.init();\n return axis;\n };\n Axis.prototype.createLineGrid = function (scale, option, layer, direction, dim) {\n var cfg = this.getLineGridCfg(scale, option, direction, dim);\n if (cfg) {\n var grid = {\n component: new LineGrid(cfg),\n layer: layer,\n direction: DIRECTION.NONE,\n type: COMPONENT_TYPE.GRID,\n extra: {\n dim: dim,\n scale: scale,\n alignTick: get(cfg, 'alignTick', true)\n }\n };\n grid.component.init();\n return grid;\n }\n };\n Axis.prototype.createCircleAxis = function (scale, option, layer, direction, dim) {\n var axis = {\n component: new CircleAxis(this.getCircleAxisCfg(scale, option, direction)),\n layer: layer,\n direction: direction,\n type: COMPONENT_TYPE.AXIS,\n extra: {\n dim: dim,\n scale: scale\n }\n };\n axis.component.set('field', scale.field);\n axis.component.init();\n return axis;\n };\n Axis.prototype.createCircleGrid = function (scale, option, layer, direction, dim) {\n var cfg = this.getCircleGridCfg(scale, option, direction, dim);\n if (cfg) {\n var grid = {\n component: new CircleGrid(cfg),\n layer: layer,\n direction: DIRECTION.NONE,\n type: COMPONENT_TYPE.GRID,\n extra: {\n dim: dim,\n scale: scale,\n alignTick: get(cfg, 'alignTick', true)\n }\n };\n grid.component.init();\n return grid;\n }\n };\n /**\n * generate line axis cfg\n * @param scale\n * @param axisOption\n * @param direction\n * @return line axis cfg\n */\n Axis.prototype.getLineAxisCfg = function (scale, axisOption, direction) {\n var container = get(axisOption, ['top']) ? this.axisForeContainer : this.axisContainer;\n var coordinate = this.view.getCoordinate();\n var region = getAxisRegion(coordinate, direction);\n var titleText = getAxisTitleText(scale, axisOption);\n var axisThemeCfg = getAxisThemeCfg(this.view.getTheme(), direction);\n // the cfg order should be ensure\n var optionWithTitle = get(axisOption, ['title']) ? deepMix({\n title: {\n style: {\n text: titleText\n }\n }\n }, {\n title: getAxisTitleOptions(this.view.getTheme(), direction, axisOption.title)\n }, axisOption) : axisOption;\n var cfg = deepMix(__assign(__assign({\n container: container\n }, region), {\n ticks: scale.getTicks().map(function (tick) {\n return {\n id: \"\".concat(tick.tickValue),\n name: tick.text,\n value: tick.value\n };\n }),\n verticalFactor: coordinate.isPolar ? getAxisFactorByRegion(region, coordinate.getCenter()) * -1 : getAxisFactorByRegion(region, coordinate.getCenter()),\n theme: axisThemeCfg\n }), axisThemeCfg, optionWithTitle);\n var _a = this.getAnimateCfg(cfg),\n animate = _a.animate,\n animateOption = _a.animateOption;\n cfg.animateOption = animateOption;\n cfg.animate = animate;\n // 计算 verticalLimitLength\n var isAxisVertical = isVertical(region);\n // TODO: 1 / 3 等默认值需要有一个全局的配置的地方\n var verticalLimitLength = get(cfg, 'verticalLimitLength', isAxisVertical ? 1 / 3 : 1 / 2);\n if (verticalLimitLength <= 1) {\n // 配置的相对值,相对于画布\n var canvasWidth = this.view.getCanvas().get('width');\n var canvasHeight = this.view.getCanvas().get('height');\n cfg.verticalLimitLength = verticalLimitLength * (isAxisVertical ? canvasWidth : canvasHeight);\n }\n return cfg;\n };\n /**\n * generate line grid cfg\n * @param scale\n * @param axisOption\n * @param direction\n * @param dim\n * @return line grid cfg\n */\n Axis.prototype.getLineGridCfg = function (scale, axisOption, direction, dim) {\n if (!showGrid(getAxisThemeCfg(this.view.getTheme(), direction), axisOption)) {\n return undefined;\n }\n var gridThemeCfg = getGridThemeCfg(this.view.getTheme(), direction);\n // the cfg order should be ensure\n // grid 动画以 axis 为准\n var gridCfg = deepMix({\n container: get(axisOption, ['top']) ? this.gridForeContainer : this.gridContainer\n }, gridThemeCfg, get(axisOption, 'grid'), this.getAnimateCfg(axisOption));\n gridCfg.items = getLineGridItems(this.view.getCoordinate(), scale, dim, get(gridCfg, 'alignTick', true));\n return gridCfg;\n };\n /**\n * generate circle axis cfg\n * @param scale\n * @param axisOption\n * @param direction\n * @return circle axis cfg\n */\n Axis.prototype.getCircleAxisCfg = function (scale, axisOption, direction) {\n var container = get(axisOption, ['top']) ? this.axisForeContainer : this.axisContainer;\n var coordinate = this.view.getCoordinate();\n var ticks = scale.getTicks().map(function (tick) {\n return {\n id: \"\".concat(tick.tickValue),\n name: tick.text,\n value: tick.value\n };\n });\n if (!scale.isCategory && Math.abs(coordinate.endAngle - coordinate.startAngle) === Math.PI * 2) {\n // x 轴对应的值如果是非 cat 类型,在整圆的情况下坐标轴第一个和最后一个文本会重叠,默认只展示第一个文本\n if (ticks.length) ticks[ticks.length - 1].name = '';\n }\n var titleText = getAxisTitleText(scale, axisOption);\n var axisThemeCfg = getAxisThemeCfg(this.view.getTheme(), DIRECTION.CIRCLE);\n // the cfg order should be ensure\n var optionWithTitle = get(axisOption, ['title']) ? deepMix({\n title: {\n style: {\n text: titleText\n }\n }\n }, {\n title: getAxisTitleOptions(this.view.getTheme(), direction, axisOption.title)\n }, axisOption) : axisOption;\n var cfg = deepMix(__assign(__assign({\n container: container\n }, getCircleAxisCenterRadius(this.view.getCoordinate())), {\n ticks: ticks,\n verticalFactor: 1,\n theme: axisThemeCfg\n }), axisThemeCfg, optionWithTitle);\n var _a = this.getAnimateCfg(cfg),\n animate = _a.animate,\n animateOption = _a.animateOption;\n cfg.animate = animate;\n cfg.animateOption = animateOption;\n return cfg;\n };\n /**\n * generate circle grid cfg\n * @param scale\n * @param axisOption\n * @param direction\n * @return circle grid cfg\n */\n Axis.prototype.getCircleGridCfg = function (scale, axisOption, direction, dim) {\n if (!showGrid(getAxisThemeCfg(this.view.getTheme(), direction), axisOption)) {\n return undefined;\n }\n // the cfg order should be ensure\n // grid 动画以 axis 为准\n var gridThemeCfg = getGridThemeCfg(this.view.getTheme(), DIRECTION.RADIUS);\n var gridCfg = deepMix({\n container: get(axisOption, ['top']) ? this.gridForeContainer : this.gridContainer,\n center: this.view.getCoordinate().getCenter()\n }, gridThemeCfg, get(axisOption, 'grid'), this.getAnimateCfg(axisOption));\n var alignTick = get(gridCfg, 'alignTick', true);\n var verticalScale = dim === 'x' ? this.view.getYScales()[0] : this.view.getXScale();\n gridCfg.items = getCircleGridItems(this.view.getCoordinate(), verticalScale, scale, alignTick, dim);\n // the cfg order should be ensure\n // grid 动画以 axis 为准\n return gridCfg;\n };\n Axis.prototype.getId = function (name, key) {\n var coordinate = this.view.getCoordinate();\n // 坐标系类型也作为组件的 key\n return \"\".concat(name, \"-\").concat(key, \"-\").concat(coordinate.type);\n };\n Axis.prototype.getAnimateCfg = function (cfg) {\n return {\n animate: this.view.getOptions().animate && get(cfg, 'animate'),\n animateOption: cfg && cfg.animateOption ? deepMix({}, AXIS_DEFAULT_ANIMATE_CFG, cfg.animateOption) : AXIS_DEFAULT_ANIMATE_CFG\n };\n };\n return Axis;\n}(Controller);\nexport default Axis;","import { DIRECTION } from '../constant';\n/**\n * @ignore\n * 方位常量转实际的 bbox 位置大小\n * @param parentBBox\n * @param bbox\n * @param direction\n */\nexport function directionToPosition(parentBBox, bbox, direction) {\n if (direction === DIRECTION.TOP) {\n return [parentBBox.minX + parentBBox.width / 2 - bbox.width / 2, parentBBox.minY];\n }\n if (direction === DIRECTION.BOTTOM) {\n return [parentBBox.minX + parentBBox.width / 2 - bbox.width / 2, parentBBox.maxY - bbox.height];\n }\n if (direction === DIRECTION.LEFT) {\n return [parentBBox.minX, parentBBox.minY + parentBBox.height / 2 - bbox.height / 2];\n }\n if (direction === DIRECTION.RIGHT) {\n return [parentBBox.maxX - bbox.width, parentBBox.minY + parentBBox.height / 2 - bbox.height / 2];\n }\n if (direction === DIRECTION.TOP_LEFT || direction === DIRECTION.LEFT_TOP) {\n return [parentBBox.tl.x, parentBBox.tl.y];\n }\n if (direction === DIRECTION.TOP_RIGHT || direction === DIRECTION.RIGHT_TOP) {\n return [parentBBox.tr.x - bbox.width, parentBBox.tr.y];\n }\n if (direction === DIRECTION.BOTTOM_LEFT || direction === DIRECTION.LEFT_BOTTOM) {\n return [parentBBox.bl.x, parentBBox.bl.y - bbox.height];\n }\n if (direction === DIRECTION.BOTTOM_RIGHT || direction === DIRECTION.RIGHT_BOTTOM) {\n return [parentBBox.br.x - bbox.width, parentBBox.br.y - bbox.height];\n }\n return [0, 0];\n}\n/**\n * get direction after coordinate transpose\n * @param direction\n * @param coordinate\n * @returns direction after transpose or not\n */\nfunction getTransposedDirection(direction, coordinate) {\n if (coordinate.isTransposed) {\n switch (direction) {\n case DIRECTION.BOTTOM:\n return DIRECTION.LEFT;\n case DIRECTION.LEFT:\n return DIRECTION.BOTTOM;\n case DIRECTION.RIGHT:\n return DIRECTION.TOP;\n case DIRECTION.TOP:\n return DIRECTION.RIGHT;\n }\n }\n return direction;\n}\nfunction reflectX(direct) {\n if (direct === DIRECTION.LEFT) {\n return DIRECTION.RIGHT;\n }\n if (direct === DIRECTION.RIGHT) {\n return DIRECTION.LEFT;\n }\n return direct;\n}\nfunction reflectY(direct) {\n if (direct === DIRECTION.TOP) {\n return DIRECTION.BOTTOM;\n }\n if (direct === DIRECTION.BOTTOM) {\n return DIRECTION.TOP;\n }\n return direct;\n}\n/**\n * get direction after coordinate.scale\n * @param direction\n * @param coordinate\n */\nfunction getScaleDirection(direction, coordinate) {\n var x = coordinate.matrix[0];\n var y = coordinate.matrix[4];\n var d = direction;\n if (x < 0) {\n d = reflectX(d);\n }\n if (y < 0) {\n d = reflectY(d);\n }\n return d;\n}\n/**\n *\n * @param direction\n * @param coordinate\n */\nfunction getReflectDirection(direction, coordinate) {\n var d = direction;\n if (coordinate.isReflect('x')) {\n d = reflectX(d);\n }\n if (coordinate.isReflect('y')) {\n d = reflectY(d);\n }\n return d;\n}\n/**\n * @ignore\n * get direction after coordinate translate\n * @param direction\n * @param coordinate\n */\nexport function getTranslateDirection(direction, coordinate) {\n var d = direction;\n d = getTransposedDirection(d, coordinate);\n d = getScaleDirection(d, coordinate);\n d = getReflectDirection(d, coordinate);\n return d;\n}","import { __extends, __read } from \"tslib\";\nimport { deepMix, each, find, get, head, isBoolean, last } from '@antv/util';\nimport { COMPONENT_MAX_VIEW_PERCENTAGE, COMPONENT_TYPE, DIRECTION, LAYER } from '../../constant';\nimport { CategoryLegend, ContinuousLegend } from '../../dependents';\nimport { DEFAULT_ANIMATE_CFG } from '../../animate';\nimport { BBox } from '../../util/bbox';\nimport { directionToPosition } from '../../util/direction';\nimport { omit } from '../../util/helper';\nimport { getCustomLegendItems, getLegendItems, getLegendLayout, getLegendThemeCfg } from '../../util/legend';\nimport { getName } from '../../util/scale';\nimport { Controller } from './base';\n/**\n * 从配置中获取单个字段的 legend 配置\n * @param legends\n * @param field\n * @returns the option of one legend field\n */\nfunction getLegendOption(legends, field) {\n if (isBoolean(legends)) {\n return legends === false ? false : {};\n }\n return get(legends, [field], legends);\n}\nfunction getDirection(legendOption) {\n return get(legendOption, 'position', DIRECTION.BOTTOM);\n}\n/**\n * @ignore\n * legend Controller\n */\nvar Legend = /** @class */function (_super) {\n __extends(Legend, _super);\n function Legend(view) {\n var _this = _super.call(this, view) || this;\n _this.container = _this.view.getLayer(LAYER.FORE).addGroup();\n return _this;\n }\n Object.defineProperty(Legend.prototype, \"name\", {\n get: function get() {\n return 'legend';\n },\n enumerable: false,\n configurable: true\n });\n Legend.prototype.init = function () {};\n /**\n * render the legend component by legend options\n */\n Legend.prototype.render = function () {\n // 和 update 逻辑保持一致\n this.update();\n };\n /**\n * layout legend\n * 计算出 legend 的 direction 位置 x, y\n */\n Legend.prototype.layout = function () {\n var _this = this;\n this.layoutBBox = this.view.viewBBox;\n each(this.components, function (co) {\n var component = co.component,\n direction = co.direction;\n var layout = getLegendLayout(direction);\n var maxWidthRatio = component.get('maxWidthRatio');\n var maxHeightRatio = component.get('maxHeightRatio');\n var maxSize = _this.getCategoryLegendSizeCfg(layout, maxWidthRatio, maxHeightRatio);\n var maxWidth = component.get('maxWidth');\n var maxHeight = component.get('maxHeight');\n // 先更新 maxSize,更新 layoutBBox,以便计算正确的 x y\n component.update({\n maxWidth: Math.min(maxSize.maxWidth, maxWidth || 0),\n maxHeight: Math.min(maxSize.maxHeight, maxHeight || 0)\n });\n var padding = component.get('padding');\n var bboxObject = component.getLayoutBBox(); // 这里只需要他的 width、height 信息做位置调整\n var bbox = new BBox(bboxObject.x, bboxObject.y, bboxObject.width, bboxObject.height).expand(padding);\n var _a = __read(directionToPosition(_this.view.viewBBox, bbox, direction), 2),\n x1 = _a[0],\n y1 = _a[1];\n var _b = __read(directionToPosition(_this.layoutBBox, bbox, direction), 2),\n x2 = _b[0],\n y2 = _b[1];\n var x = 0;\n var y = 0;\n // 因为 legend x y 要和 coordinateBBox 对齐,所以要做一个简单的判断\n if (direction.startsWith('top') || direction.startsWith('bottom')) {\n x = x1;\n y = y2;\n } else {\n x = x2;\n y = y1;\n }\n // 更新位置\n component.setLocation({\n x: x + padding[3],\n y: y + padding[0]\n });\n _this.layoutBBox = _this.layoutBBox.cut(bbox, direction);\n });\n };\n /**\n * legend 的更新逻辑\n */\n Legend.prototype.update = function () {\n var _this = this;\n this.option = this.view.getOptions().legends;\n // 已经处理过的 legend\n var updated = {};\n var eachLegend = function eachLegend(geometry, attr, scale) {\n var id = _this.getId(scale.field);\n var existCo = _this.getComponentById(id);\n // 存在则 update\n if (existCo) {\n var cfg = void 0;\n var legendOption = getLegendOption(_this.option, scale.field);\n // if the legend option is not false, means legend should be created.\n if (legendOption !== false) {\n if (get(legendOption, 'custom')) {\n cfg = _this.getCategoryCfg(geometry, attr, scale, legendOption, true);\n } else {\n if (scale.isLinear) {\n // linear field, create continuous legend\n cfg = _this.getContinuousCfg(geometry, attr, scale, legendOption);\n } else if (scale.isCategory) {\n // category field, create category legend\n cfg = _this.getCategoryCfg(geometry, attr, scale, legendOption);\n }\n }\n }\n // 如果 cfg 为空,则不在 updated 标记,那么会在后面逻辑中删除\n if (cfg) {\n // omit 掉一些属性,比如 container 等\n omit(cfg, ['container']);\n existCo.direction = getDirection(legendOption);\n existCo.component.update(cfg);\n // 标记为新的\n updated[id] = true;\n }\n } else {\n // 不存在则 create\n var legend = _this.createFieldLegend(geometry, attr, scale);\n if (legend) {\n legend.component.init();\n _this.components.push(legend);\n // 标记为新的\n updated[id] = true;\n }\n }\n };\n // 全局自定义图例\n if (get(this.option, 'custom')) {\n var id = 'global-custom';\n var existCo = this.getComponentById(id);\n if (existCo) {\n var customCfg = this.getCategoryCfg(undefined, undefined, undefined, this.option, true);\n omit(customCfg, ['container']);\n existCo.component.update(customCfg);\n updated[id] = true;\n } else {\n var component = this.createCustomLegend(undefined, undefined, undefined, this.option);\n if (component) {\n component.init();\n var layer = LAYER.FORE;\n var direction = getDirection(this.option);\n this.components.push({\n id: id,\n component: component,\n layer: layer,\n direction: direction,\n type: COMPONENT_TYPE.LEGEND,\n extra: undefined\n });\n // 标记为更新\n updated[id] = true;\n }\n }\n } else {\n // 遍历处理每一个创建逻辑\n this.loopLegends(eachLegend);\n }\n // 处理完成之后,销毁删除的\n // 不在处理中的\n var components = [];\n each(this.getComponents(), function (co) {\n if (updated[co.id]) {\n components.push(co);\n } else {\n co.component.destroy();\n }\n });\n // 更新当前已有的 components\n this.components = components;\n };\n Legend.prototype.clear = function () {\n _super.prototype.clear.call(this);\n this.container.clear();\n };\n Legend.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.container.remove(true);\n };\n /**\n * 递归获取所有的 Geometry\n */\n Legend.prototype.getGeometries = function (view) {\n var _this = this;\n var geometries = view.geometries;\n each(view.views, function (v) {\n geometries = geometries.concat(_this.getGeometries(v));\n });\n return geometries;\n };\n /**\n * 遍历 Geometry,处理 legend 逻辑\n * @param doEach 每个 loop 中的处理方法\n */\n Legend.prototype.loopLegends = function (doEach) {\n var isRootView = this.view.getRootView() === this.view;\n // 非根 view,不处理 legend\n if (!isRootView) {\n return;\n }\n // 递归 view 中所有的 Geometry,进行创建 legend\n var geometries = this.getGeometries(this.view);\n var looped = {}; // 防止一个字段创建两个 legend\n each(geometries, function (geometry) {\n var attributes = geometry.getGroupAttributes();\n each(attributes, function (attr) {\n var scale = attr.getScale(attr.type);\n // 如果在视觉通道上映射常量值,如 size(2) shape('circle') 不创建 legend\n if (!scale || scale.type === 'identity' || looped[scale.field]) {\n return;\n }\n doEach(geometry, attr, scale);\n looped[scale.field] = true;\n });\n });\n };\n /**\n * 创建一个 legend\n * @param geometry\n * @param attr\n * @param scale\n */\n Legend.prototype.createFieldLegend = function (geometry, attr, scale) {\n var component;\n var legendOption = getLegendOption(this.option, scale.field);\n var layer = LAYER.FORE;\n var direction = getDirection(legendOption);\n // if the legend option is not false, means legend should be created.\n if (legendOption !== false) {\n if (get(legendOption, 'custom')) {\n component = this.createCustomLegend(geometry, attr, scale, legendOption);\n } else {\n if (scale.isLinear) {\n // linear field, create continuous legend\n component = this.createContinuousLegend(geometry, attr, scale, legendOption);\n } else if (scale.isCategory) {\n // category field, create category legend\n component = this.createCategoryLegend(geometry, attr, scale, legendOption);\n }\n }\n }\n if (component) {\n component.set('field', scale.field);\n return {\n id: this.getId(scale.field),\n component: component,\n layer: layer,\n direction: direction,\n type: COMPONENT_TYPE.LEGEND,\n extra: {\n scale: scale\n }\n };\n }\n };\n /**\n * 自定义图例使用 category 图例去渲染\n * @param geometry\n * @param attr\n * @param scale\n * @param legendOption\n */\n Legend.prototype.createCustomLegend = function (geometry, attr, scale, legendOption) {\n // 直接使用 分类图例渲染\n var cfg = this.getCategoryCfg(geometry, attr, scale, legendOption, true);\n return new CategoryLegend(cfg);\n };\n /**\n * 创建连续图例\n * @param geometry\n * @param attr\n * @param scale\n * @param legendOption\n */\n Legend.prototype.createContinuousLegend = function (geometry, attr, scale, legendOption) {\n var cfg = this.getContinuousCfg(geometry, attr, scale, omit(legendOption, ['value']));\n return new ContinuousLegend(cfg);\n };\n /**\n * 创建分类图例\n * @param geometry\n * @param attr\n * @param scale\n * @param legendOption\n */\n Legend.prototype.createCategoryLegend = function (geometry, attr, scale, legendOption) {\n var cfg = this.getCategoryCfg(geometry, attr, scale, legendOption);\n return new CategoryLegend(cfg);\n };\n /**\n * 获得连续图例的配置\n * @param geometry\n * @param attr\n * @param scale\n * @param legendOption\n */\n Legend.prototype.getContinuousCfg = function (geometry, attr, scale, legendOption) {\n var ticks = scale.getTicks();\n var containMin = find(ticks, function (tick) {\n return tick.value === 0;\n });\n var containMax = find(ticks, function (tick) {\n return tick.value === 1;\n });\n var items = ticks.map(function (tick) {\n var value = tick.value,\n tickValue = tick.tickValue;\n var attrValue = attr.mapping(scale.invert(value)).join('');\n return {\n value: tickValue,\n attrValue: attrValue,\n color: attrValue,\n scaleValue: value\n };\n });\n if (!containMin) {\n items.push({\n value: scale.min,\n attrValue: attr.mapping(scale.invert(0)).join(''),\n color: attr.mapping(scale.invert(0)).join(''),\n scaleValue: 0\n });\n }\n if (!containMax) {\n items.push({\n value: scale.max,\n attrValue: attr.mapping(scale.invert(1)).join(''),\n color: attr.mapping(scale.invert(1)).join(''),\n scaleValue: 1\n });\n }\n // 排序\n items.sort(function (a, b) {\n return a.value - b.value;\n });\n // 跟 attr 相关的配置\n // size color 区别的配置\n var attrLegendCfg = {\n min: head(items).value,\n max: last(items).value,\n colors: [],\n rail: {\n type: attr.type\n },\n track: {}\n };\n if (attr.type === 'size') {\n attrLegendCfg.track = {\n style: {\n // size 的选中前景色,对于 color,则直接使用 color 标识\n // @ts-ignore\n fill: attr.type === 'size' ? this.view.getTheme().defaultColor : undefined\n }\n };\n }\n if (attr.type === 'color') {\n attrLegendCfg.colors = items.map(function (item) {\n return item.attrValue;\n });\n }\n var container = this.container;\n // if position is not set, use top as default\n var direction = getDirection(legendOption);\n var layout = getLegendLayout(direction);\n var title = get(legendOption, 'title');\n if (title) {\n title = deepMix({\n text: getName(scale)\n }, title);\n }\n // 基础配置,从当前数据中读到的配置\n attrLegendCfg.container = container;\n attrLegendCfg.layout = layout;\n attrLegendCfg.title = title;\n attrLegendCfg.animateOption = DEFAULT_ANIMATE_CFG;\n // @ts-ignore\n return this.mergeLegendCfg(attrLegendCfg, legendOption, 'continuous');\n };\n /**\n * 获取分类图例的配置项\n * @param geometry\n * @param attr\n * @param scale\n * @param custom\n * @param legendOption\n */\n Legend.prototype.getCategoryCfg = function (geometry, attr, scale, legendOption, custom) {\n var container = this.container;\n // if position is not set, use top as default\n var direction = get(legendOption, 'position', DIRECTION.BOTTOM);\n var legendTheme = getLegendThemeCfg(this.view.getTheme(), direction);\n // the default marker style\n var themeMarker = get(legendTheme, ['marker']);\n var userMarker = get(legendOption, 'marker');\n var layout = getLegendLayout(direction);\n var themePageNavigator = get(legendTheme, ['pageNavigator']);\n var userPageNavigator = get(legendOption, 'pageNavigator');\n var items = custom ? getCustomLegendItems(themeMarker, userMarker, legendOption.items) : getLegendItems(this.view, geometry, attr, themeMarker, userMarker);\n var title = get(legendOption, 'title');\n if (title) {\n title = deepMix({\n text: scale ? getName(scale) : ''\n }, title);\n }\n var maxWidthRatio = get(legendOption, 'maxWidthRatio');\n var maxHeightRatio = get(legendOption, 'maxHeightRatio');\n var baseCfg = this.getCategoryLegendSizeCfg(layout, maxWidthRatio, maxHeightRatio);\n baseCfg.container = container;\n baseCfg.layout = layout;\n baseCfg.items = items;\n baseCfg.title = title;\n baseCfg.animateOption = DEFAULT_ANIMATE_CFG;\n baseCfg.pageNavigator = deepMix({}, themePageNavigator, userPageNavigator);\n var categoryCfg = this.mergeLegendCfg(baseCfg, legendOption, direction);\n if (categoryCfg.reversed) {\n // 图例项需要逆序\n categoryCfg.items.reverse();\n }\n var maxItemWidth = get(categoryCfg, 'maxItemWidth');\n if (maxItemWidth && maxItemWidth <= 1) {\n // 转换成像素值\n categoryCfg.maxItemWidth = this.view.viewBBox.width * maxItemWidth;\n }\n return categoryCfg;\n };\n /**\n * get legend config, use option > suggestion > theme\n * @param baseCfg\n * @param legendOption\n * @param direction\n */\n Legend.prototype.mergeLegendCfg = function (baseCfg, legendOption, direction) {\n var position = direction.split('-')[0];\n var themeObject = getLegendThemeCfg(this.view.getTheme(), position);\n return deepMix({}, themeObject, baseCfg, legendOption);\n };\n /**\n * 生成 id\n * @param key\n */\n Legend.prototype.getId = function (key) {\n return \"\".concat(this.name, \"-\").concat(key);\n };\n /**\n * 根据 id 来获取组件\n * @param id\n */\n Legend.prototype.getComponentById = function (id) {\n return find(this.components, function (co) {\n return co.id === id;\n });\n };\n Legend.prototype.getCategoryLegendSizeCfg = function (layout, maxWidthRatio, maxHeightRatio) {\n if (maxWidthRatio === void 0) {\n maxWidthRatio = COMPONENT_MAX_VIEW_PERCENTAGE;\n }\n if (maxHeightRatio === void 0) {\n maxHeightRatio = COMPONENT_MAX_VIEW_PERCENTAGE;\n }\n var _a = this.view.viewBBox,\n vw = _a.width,\n vh = _a.height;\n // 目前 legend 的布局是以 viewBBox 为参照\n // const { width: cw, height: ch } = this.view.coordinateBBox;\n return layout === 'vertical' ? {\n maxWidth: vw * maxWidthRatio,\n maxHeight: vh\n } : {\n maxWidth: vw,\n maxHeight: vh * maxHeightRatio\n };\n };\n return Legend;\n}(Controller);\nexport default Legend;","import { __assign, __extends, __read } from \"tslib\";\nimport { deepMix, get, isObject, size, clamp, isNil, noop, throttle, isEmpty, valuesOfKey } from '@antv/util';\nimport { COMPONENT_TYPE, DIRECTION, LAYER, VIEW_LIFE_CIRCLE } from '../../constant';\nimport { Slider as SliderComponent } from '../../dependents';\nimport { BBox } from '../../util/bbox';\nimport { directionToPosition } from '../../util/direction';\nimport { isBetween } from '../../util/helper';\nimport { Controller } from './base';\n/**\n * @ignore\n * slider Controller\n */\nvar Slider = /** @class */function (_super) {\n __extends(Slider, _super);\n function Slider(view) {\n var _this = _super.call(this, view) || this;\n _this.onChangeFn = noop;\n /**\n * 清除测量\n */\n _this.resetMeasure = function () {\n _this.clear();\n };\n /**\n * 滑块滑动的时候出发\n * @param v\n */\n _this.onValueChange = function (v) {\n var _a = __read(v, 2),\n min = _a[0],\n max = _a[1];\n _this.start = min;\n _this.end = max;\n _this.changeViewData(min, max);\n };\n _this.container = _this.view.getLayer(LAYER.FORE).addGroup();\n _this.onChangeFn = throttle(_this.onValueChange, 20, {\n leading: true\n });\n _this.width = 0;\n _this.view.on(VIEW_LIFE_CIRCLE.BEFORE_CHANGE_DATA, _this.resetMeasure);\n _this.view.on(VIEW_LIFE_CIRCLE.BEFORE_CHANGE_SIZE, _this.resetMeasure);\n return _this;\n }\n Object.defineProperty(Slider.prototype, \"name\", {\n get: function get() {\n return 'slider';\n },\n enumerable: false,\n configurable: true\n });\n Slider.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.view.off(VIEW_LIFE_CIRCLE.BEFORE_CHANGE_DATA, this.resetMeasure);\n this.view.off(VIEW_LIFE_CIRCLE.BEFORE_CHANGE_SIZE, this.resetMeasure);\n };\n /**\n * 初始化\n */\n Slider.prototype.init = function () {};\n /**\n * 渲染\n */\n Slider.prototype.render = function () {\n this.option = this.view.getOptions().slider;\n var _a = this.getSliderCfg(),\n start = _a.start,\n end = _a.end;\n if (isNil(this.start)) {\n this.start = start;\n this.end = end;\n }\n var viewData = this.view.getOptions().data;\n if (this.option && !isEmpty(viewData)) {\n if (this.slider) {\n // exist, update\n this.slider = this.updateSlider();\n } else {\n // not exist, create\n this.slider = this.createSlider();\n // 监听事件,绑定交互\n this.slider.component.on('sliderchange', this.onChangeFn);\n }\n } else {\n if (this.slider) {\n // exist, destroy\n this.slider.component.destroy();\n this.slider = undefined;\n } else {\n // do nothing\n }\n }\n };\n /**\n * 布局\n */\n Slider.prototype.layout = function () {\n var _this = this;\n if (this.option && !this.width) {\n this.measureSlider();\n setTimeout(function () {\n // 初始状态下的 view 数据过滤\n if (!_this.view.destroyed) {\n _this.changeViewData(_this.start, _this.end);\n }\n }, 0);\n }\n if (this.slider) {\n var width = this.view.coordinateBBox.width;\n // 获取组件的 layout bbox\n var padding = this.slider.component.get('padding');\n var _a = __read(padding, 4),\n paddingTop = _a[0],\n paddingRight = _a[1],\n paddingBottom = _a[2],\n paddingLeft = _a[3];\n var bboxObject = this.slider.component.getLayoutBBox();\n var bbox = new BBox(bboxObject.x, bboxObject.y, Math.min(bboxObject.width, width), bboxObject.height).expand(padding);\n var _b = this.getMinMaxText(this.start, this.end),\n minText = _b.minText,\n maxText = _b.maxText;\n var _c = __read(directionToPosition(this.view.viewBBox, bbox, DIRECTION.BOTTOM), 2),\n x1 = _c[0],\n y1 = _c[1];\n var _d = __read(directionToPosition(this.view.coordinateBBox, bbox, DIRECTION.BOTTOM), 2),\n x2 = _d[0],\n y2 = _d[1];\n // 默认放在 bottom\n this.slider.component.update(__assign(__assign({}, this.getSliderCfg()), {\n x: x2 + paddingLeft,\n y: y1 + paddingTop,\n width: this.width,\n start: this.start,\n end: this.end,\n minText: minText,\n maxText: maxText\n }));\n this.view.viewBBox = this.view.viewBBox.cut(bbox, DIRECTION.BOTTOM);\n }\n };\n /**\n * 更新\n */\n Slider.prototype.update = function () {\n // 逻辑和 render 保持一致\n this.render();\n };\n /**\n * 创建 slider 组件\n */\n Slider.prototype.createSlider = function () {\n var cfg = this.getSliderCfg();\n // 添加 slider 组件\n var component = new SliderComponent(__assign({\n container: this.container\n }, cfg));\n component.init();\n return {\n component: component,\n layer: LAYER.FORE,\n direction: DIRECTION.BOTTOM,\n type: COMPONENT_TYPE.SLIDER\n };\n };\n /**\n * 更新配置\n */\n Slider.prototype.updateSlider = function () {\n var cfg = this.getSliderCfg();\n if (this.width) {\n var _a = this.getMinMaxText(this.start, this.end),\n minText = _a.minText,\n maxText = _a.maxText;\n cfg = __assign(__assign({}, cfg), {\n width: this.width,\n start: this.start,\n end: this.end,\n minText: minText,\n maxText: maxText\n });\n }\n this.slider.component.update(cfg);\n return this.slider;\n };\n /**\n * 进行测量操作\n */\n Slider.prototype.measureSlider = function () {\n var width = this.getSliderCfg().width;\n this.width = width;\n };\n /**\n * 生成 slider 配置\n */\n Slider.prototype.getSliderCfg = function () {\n var cfg = {\n height: 16,\n start: 0,\n end: 1,\n minText: '',\n maxText: '',\n x: 0,\n y: 0,\n width: this.view.coordinateBBox.width\n };\n if (isObject(this.option)) {\n // 用户配置的数据,优先级更高\n var trendCfg = __assign({\n data: this.getData()\n }, get(this.option, 'trendCfg', {}));\n // 因为有样式,所以深层覆盖\n cfg = deepMix({}, cfg, this.getThemeOptions(), this.option);\n // trendCfg 因为有数据数组,所以使用浅替换\n cfg = __assign(__assign({}, cfg), {\n trendCfg: trendCfg\n });\n }\n cfg.start = clamp(Math.min(isNil(cfg.start) ? 0 : cfg.start, isNil(cfg.end) ? 1 : cfg.end), 0, 1);\n cfg.end = clamp(Math.max(isNil(cfg.start) ? 0 : cfg.start, isNil(cfg.end) ? 1 : cfg.end), 0, 1);\n return cfg;\n };\n /**\n * 从 view 中获取数据,缩略轴使用全量的数据\n */\n Slider.prototype.getData = function () {\n var data = this.view.getOptions().data;\n var _a = __read(this.view.getYScales(), 1),\n yScale = _a[0];\n var groupScales = this.view.getGroupScales();\n if (groupScales.length) {\n var _b = groupScales[0],\n field_1 = _b.field,\n ticks_1 = _b.ticks;\n return data.reduce(function (pre, cur) {\n if (cur[field_1] === ticks_1[0]) {\n pre.push(cur[yScale.field]);\n }\n return pre;\n }, []);\n }\n return data.map(function (datum) {\n return datum[yScale.field] || 0;\n });\n };\n /**\n * 获取 slider 的主题配置\n */\n Slider.prototype.getThemeOptions = function () {\n var theme = this.view.getTheme();\n return get(theme, ['components', 'slider', 'common'], {});\n };\n /**\n * 根据 start/end 和当前数据计算出当前的 minText/maxText\n * @param min\n * @param max\n */\n Slider.prototype.getMinMaxText = function (min, max) {\n var data = this.view.getOptions().data;\n var xScale = this.view.getXScale();\n var isHorizontal = true;\n var values = valuesOfKey(data, xScale.field);\n // 如果是 xScale 数值类型,则进行排序\n if (xScale.isLinear) {\n values = values.sort();\n }\n var xValues = isHorizontal ? values : values.reverse();\n var dataSize = size(data);\n if (!xScale || !dataSize) {\n return {}; // fix: 需要兼容,否则调用方直接取值会报错\n }\n\n var xTickCount = size(xValues);\n var minIndex = Math.round(min * (xTickCount - 1));\n var maxIndex = Math.round(max * (xTickCount - 1));\n var minText = get(xValues, [minIndex]);\n var maxText = get(xValues, [maxIndex]);\n var formatter = this.getSliderCfg().formatter;\n if (formatter) {\n minText = formatter(minText, data[minIndex], minIndex);\n maxText = formatter(maxText, data[maxIndex], maxIndex);\n }\n return {\n minText: minText,\n maxText: maxText\n };\n };\n /**\n * 更新 view 过滤数据\n * @param min\n * @param max\n */\n Slider.prototype.changeViewData = function (min, max) {\n var data = this.view.getOptions().data;\n var xScale = this.view.getXScale();\n var dataSize = size(data);\n if (!xScale || !dataSize) {\n return;\n }\n var isHorizontal = true;\n var values = valuesOfKey(data, xScale.field);\n // 如果是 xScale 数值类型,则进行排序\n var xScaleValues = this.view.getXScale().isLinear ? values.sort(function (a, b) {\n return Number(a) - Number(b);\n }) : values;\n var xValues = isHorizontal ? xScaleValues : xScaleValues.reverse();\n var xTickCount = size(xValues);\n var minIndex = Math.round(min * (xTickCount - 1));\n var maxIndex = Math.round(max * (xTickCount - 1));\n // 增加 x 轴的过滤器\n this.view.filter(xScale.field, function (value, datum) {\n var idx = xValues.indexOf(value);\n return idx > -1 ? isBetween(idx, minIndex, maxIndex) : true;\n });\n this.view.render(true);\n };\n /**\n * 覆写父类方法\n */\n Slider.prototype.getComponents = function () {\n return this.slider ? [this.slider] : [];\n };\n /**\n * 覆盖父类\n */\n Slider.prototype.clear = function () {\n if (this.slider) {\n this.slider.component.destroy();\n this.slider = undefined;\n }\n this.width = 0;\n this.start = undefined;\n this.end = undefined;\n };\n return Slider;\n}(Controller);\nexport default Slider;","import { __assign, __extends, __read, __rest, __spreadArray } from \"tslib\";\nimport { Controller } from './base';\nimport { Scrollbar as ScrollbarComponent } from '../../dependents';\nimport { BBox } from '../../util/bbox';\nimport { directionToPosition } from '../../util/direction';\nimport { COMPONENT_TYPE, DIRECTION, LAYER, VIEW_LIFE_CIRCLE } from '../../constant';\nimport { isObject, clamp, size, throttle, noop, get, valuesOfKey, deepMix } from '@antv/util';\nimport { isBetween } from '../../util/helper';\nvar DEFAULT_PADDING = 0;\nvar DEFAULT_SIZE = 8;\nvar DEFAULT_CATEGORY_SIZE = 32;\nvar MIN_THUMB_LENGTH = 20;\nvar Scrollbar = /** @class */function (_super) {\n __extends(Scrollbar, _super);\n function Scrollbar(view) {\n var _this = _super.call(this, view) || this;\n _this.onChangeFn = noop;\n _this.resetMeasure = function () {\n _this.clear();\n };\n _this.onValueChange = function (_a) {\n var ratio = _a.ratio;\n var animate = _this.getValidScrollbarCfg().animate;\n _this.ratio = clamp(ratio, 0, 1);\n var originalAnimate = _this.view.getOptions().animate;\n if (!animate) {\n _this.view.animate(false);\n }\n _this.changeViewData(_this.getScrollRange(), true);\n _this.view.animate(originalAnimate);\n };\n _this.container = _this.view.getLayer(LAYER.FORE).addGroup();\n _this.onChangeFn = throttle(_this.onValueChange, 20, {\n leading: true\n });\n _this.trackLen = 0;\n _this.thumbLen = 0;\n _this.ratio = 0;\n _this.view.on(VIEW_LIFE_CIRCLE.BEFORE_CHANGE_DATA, _this.resetMeasure);\n _this.view.on(VIEW_LIFE_CIRCLE.BEFORE_CHANGE_SIZE, _this.resetMeasure);\n return _this;\n }\n Object.defineProperty(Scrollbar.prototype, \"name\", {\n get: function get() {\n return 'scrollbar';\n },\n enumerable: false,\n configurable: true\n });\n Scrollbar.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.view.off(VIEW_LIFE_CIRCLE.BEFORE_CHANGE_DATA, this.resetMeasure);\n this.view.off(VIEW_LIFE_CIRCLE.BEFORE_CHANGE_SIZE, this.resetMeasure);\n };\n Scrollbar.prototype.init = function () {};\n /**\n * 渲染\n */\n Scrollbar.prototype.render = function () {\n this.option = this.view.getOptions().scrollbar;\n if (this.option) {\n if (this.scrollbar) {\n // exist, update\n this.scrollbar = this.updateScrollbar();\n } else {\n // not exist, create\n this.scrollbar = this.createScrollbar();\n this.scrollbar.component.on('scrollchange', this.onChangeFn);\n }\n } else {\n if (this.scrollbar) {\n // exist, destroy\n this.scrollbar.component.destroy();\n this.scrollbar = undefined;\n }\n }\n };\n /**\n * 布局\n */\n Scrollbar.prototype.layout = function () {\n var _this = this;\n if (this.option && !this.trackLen) {\n this.measureScrollbar();\n setTimeout(function () {\n if (!_this.view.destroyed) {\n _this.changeViewData(_this.getScrollRange(), true);\n }\n });\n }\n if (this.scrollbar) {\n var width = this.view.coordinateBBox.width;\n var padding = this.scrollbar.component.get('padding');\n var bboxObject = this.scrollbar.component.getLayoutBBox();\n var bbox = new BBox(bboxObject.x, bboxObject.y, Math.min(bboxObject.width, width), bboxObject.height).expand(padding);\n var cfg = this.getScrollbarComponentCfg();\n var x = void 0;\n var y = void 0;\n if (cfg.isHorizontal) {\n var _a = __read(directionToPosition(this.view.viewBBox, bbox, DIRECTION.BOTTOM), 2),\n x1 = _a[0],\n y1 = _a[1];\n var _b = __read(directionToPosition(this.view.coordinateBBox, bbox, DIRECTION.BOTTOM), 2),\n x2 = _b[0],\n y2 = _b[1];\n x = x2;\n y = y1;\n } else {\n var _c = __read(directionToPosition(this.view.viewBBox, bbox, DIRECTION.RIGHT), 2),\n x1 = _c[0],\n y1 = _c[1];\n var _d = __read(directionToPosition(this.view.viewBBox, bbox, DIRECTION.RIGHT), 2),\n x2 = _d[0],\n y2 = _d[1];\n x = x2;\n y = y1;\n }\n x += padding[3];\n y += padding[0];\n // 默认放在 bottom\n if (this.trackLen) {\n this.scrollbar.component.update(__assign(__assign({}, cfg), {\n x: x,\n y: y,\n trackLen: this.trackLen,\n thumbLen: this.thumbLen,\n thumbOffset: (this.trackLen - this.thumbLen) * this.ratio\n }));\n } else {\n this.scrollbar.component.update(__assign(__assign({}, cfg), {\n x: x,\n y: y\n }));\n }\n this.view.viewBBox = this.view.viewBBox.cut(bbox, cfg.isHorizontal ? DIRECTION.BOTTOM : DIRECTION.RIGHT);\n }\n };\n /**\n * 更新\n */\n Scrollbar.prototype.update = function () {\n // 逻辑和 render 保持一致\n this.render();\n };\n Scrollbar.prototype.getComponents = function () {\n return this.scrollbar ? [this.scrollbar] : [];\n };\n Scrollbar.prototype.clear = function () {\n if (this.scrollbar) {\n this.scrollbar.component.destroy();\n this.scrollbar = undefined;\n }\n this.trackLen = 0;\n this.thumbLen = 0;\n this.ratio = 0;\n this.cnt = 0;\n this.step = 0;\n this.data = undefined;\n this.xScaleCfg = undefined;\n this.yScalesCfg = [];\n };\n /** 设置滚动条位置 */\n Scrollbar.prototype.setValue = function (ratio) {\n this.onValueChange({\n ratio: ratio\n });\n };\n /** 获得滚动条位置 */\n Scrollbar.prototype.getValue = function () {\n return this.ratio;\n };\n /**\n * 获取 scrollbar 的主题配置\n */\n Scrollbar.prototype.getThemeOptions = function () {\n var theme = this.view.getTheme();\n return get(theme, ['components', 'scrollbar', 'common'], {});\n };\n /**\n * 获取 scrollbar 组件的主题样式\n */\n Scrollbar.prototype.getScrollbarTheme = function (style) {\n var theme = get(this.view.getTheme(), ['components', 'scrollbar']);\n var _a = style || {},\n thumbHighlightColor = _a.thumbHighlightColor,\n restStyles = __rest(_a, [\"thumbHighlightColor\"]);\n return {\n default: deepMix({}, get(theme, ['default', 'style'], {}), restStyles),\n hover: deepMix({}, get(theme, ['hover', 'style'], {}), {\n thumbColor: thumbHighlightColor\n })\n };\n };\n Scrollbar.prototype.measureScrollbar = function () {\n var xScale = this.view.getXScale();\n var yScales = this.view.getYScales().slice();\n this.data = this.getScrollbarData();\n this.step = this.getStep();\n this.cnt = this.getCnt();\n var _a = this.getScrollbarComponentCfg(),\n trackLen = _a.trackLen,\n thumbLen = _a.thumbLen;\n this.trackLen = trackLen;\n this.thumbLen = thumbLen;\n this.xScaleCfg = {\n field: xScale.field,\n values: xScale.values || []\n };\n this.yScalesCfg = yScales;\n };\n Scrollbar.prototype.getScrollRange = function () {\n var startIdx = Math.floor((this.cnt - this.step) * clamp(this.ratio, 0, 1));\n var endIdx = Math.min(startIdx + this.step - 1, this.cnt - 1);\n return [startIdx, endIdx];\n };\n Scrollbar.prototype.changeViewData = function (_a, render) {\n var _this = this;\n var _b = __read(_a, 2),\n startIdx = _b[0],\n endIdx = _b[1];\n var type = this.getValidScrollbarCfg().type;\n var isHorizontal = type !== 'vertical';\n var values = valuesOfKey(this.data, this.xScaleCfg.field);\n // 如果是 xScale 数值类型,则进行排序\n var xScaleValues = this.view.getXScale().isLinear ? values.sort(function (a, b) {\n return Number(a) - Number(b);\n }) : values;\n var xValues = isHorizontal ? xScaleValues : xScaleValues.reverse();\n this.yScalesCfg.forEach(function (cfg) {\n _this.view.scale(cfg.field, {\n formatter: cfg.formatter,\n type: cfg.type,\n min: cfg.min,\n max: cfg.max,\n tickMethod: cfg.tickMethod\n });\n });\n this.view.filter(this.xScaleCfg.field, function (val) {\n var idx = xValues.indexOf(val);\n return idx > -1 ? isBetween(idx, startIdx, endIdx) : true;\n });\n this.view.render(true);\n };\n Scrollbar.prototype.createScrollbar = function () {\n var type = this.getValidScrollbarCfg().type;\n var isHorizontal = type !== 'vertical';\n var component = new ScrollbarComponent(__assign(__assign({\n container: this.container\n }, this.getScrollbarComponentCfg()), {\n x: 0,\n y: 0\n }));\n component.init();\n return {\n component: component,\n layer: LAYER.FORE,\n direction: isHorizontal ? DIRECTION.BOTTOM : DIRECTION.RIGHT,\n type: COMPONENT_TYPE.SCROLLBAR\n };\n };\n Scrollbar.prototype.updateScrollbar = function () {\n var config = this.getScrollbarComponentCfg();\n var realConfig = this.trackLen ? __assign(__assign({}, config), {\n trackLen: this.trackLen,\n thumbLen: this.thumbLen,\n thumbOffset: (this.trackLen - this.thumbLen) * this.ratio\n }) : __assign({}, config);\n this.scrollbar.component.update(realConfig);\n return this.scrollbar;\n };\n Scrollbar.prototype.getStep = function () {\n if (this.step) {\n return this.step;\n }\n var coordinateBBox = this.view.coordinateBBox;\n var _a = this.getValidScrollbarCfg(),\n type = _a.type,\n categorySize = _a.categorySize;\n var isHorizontal = type !== 'vertical';\n return Math.floor((isHorizontal ? coordinateBBox.width : coordinateBBox.height) / categorySize);\n };\n Scrollbar.prototype.getCnt = function () {\n if (this.cnt) {\n return this.cnt;\n }\n var xScale = this.view.getXScale();\n var data = this.getScrollbarData();\n var values = valuesOfKey(data, xScale.field);\n return size(values);\n };\n Scrollbar.prototype.getScrollbarComponentCfg = function () {\n var _a = this.view,\n coordinateBBox = _a.coordinateBBox,\n viewBBox = _a.viewBBox;\n var _b = this.getValidScrollbarCfg(),\n type = _b.type,\n padding = _b.padding,\n width = _b.width,\n height = _b.height,\n style = _b.style;\n var isHorizontal = type !== 'vertical';\n var _c = __read(padding, 4),\n paddingTop = _c[0],\n paddingRight = _c[1],\n paddingBottom = _c[2],\n paddingLeft = _c[3];\n var position = isHorizontal ? {\n x: coordinateBBox.minX + paddingLeft,\n y: viewBBox.maxY - height - paddingBottom\n } : {\n x: viewBBox.maxX - width - paddingRight,\n y: coordinateBBox.minY + paddingTop\n };\n var step = this.getStep();\n var cnt = this.getCnt();\n var trackLen = isHorizontal ? coordinateBBox.width - paddingLeft - paddingRight : coordinateBBox.height - paddingTop - paddingBottom;\n var thumbLen = Math.max(trackLen * clamp(step / cnt, 0, 1), MIN_THUMB_LENGTH);\n return __assign(__assign({}, this.getThemeOptions()), {\n x: position.x,\n y: position.y,\n size: isHorizontal ? height : width,\n isHorizontal: isHorizontal,\n trackLen: trackLen,\n thumbLen: thumbLen,\n thumbOffset: 0,\n theme: this.getScrollbarTheme(style)\n });\n };\n /**\n * 填充一些默认的配置项目\n */\n Scrollbar.prototype.getValidScrollbarCfg = function () {\n var cfg = {\n type: 'horizontal',\n categorySize: DEFAULT_CATEGORY_SIZE,\n width: DEFAULT_SIZE,\n height: DEFAULT_SIZE,\n padding: [0, 0, 0, 0],\n animate: true,\n style: {}\n };\n if (isObject(this.option)) {\n cfg = __assign(__assign({}, cfg), this.option);\n }\n if (!isObject(this.option) || !this.option.padding) {\n cfg.padding = cfg.type === 'horizontal' ? [DEFAULT_PADDING, 0, DEFAULT_PADDING, 0] : [0, DEFAULT_PADDING, 0, DEFAULT_PADDING];\n }\n return cfg;\n };\n /**\n * 获取数据\n */\n Scrollbar.prototype.getScrollbarData = function () {\n var coordinate = this.view.getCoordinate();\n var cfg = this.getValidScrollbarCfg();\n var data = this.view.getOptions().data || [];\n // 纵向做了 y 轴镜像之后,数据也需要镜像反转\n if (coordinate.isReflect('y') && cfg.type === 'vertical') {\n data = __spreadArray([], __read(data), false).reverse();\n }\n return data;\n };\n return Scrollbar;\n}(Controller);\nexport default Scrollbar;","import { __assign, __extends, __values } from \"tslib\";\nimport { each, head, isEqual, last, get, flatten, isArray, uniq, isNil } from '@antv/util';\nimport { findItemsFromViewRecurisive } from '../../util/tooltip';\nimport { getAngle, getSectorPath } from '../../util/graphics';\nimport Action from './base';\nvar DEFAULT_REGION_PATH_STYLE = {\n fill: '#CCD6EC',\n opacity: 0.3\n};\nexport function getItemsOfView(view, point, tooltipCfg) {\n var e_1, _a, e_2, _b, e_3, _c;\n var items = findItemsFromViewRecurisive(view, point, tooltipCfg);\n if (items.length) {\n // 三层\n items = flatten(items);\n try {\n for (var items_1 = __values(items), items_1_1 = items_1.next(); !items_1_1.done; items_1_1 = items_1.next()) {\n var itemArr = items_1_1.value;\n try {\n for (var itemArr_1 = (e_2 = void 0, __values(itemArr)), itemArr_1_1 = itemArr_1.next(); !itemArr_1_1.done; itemArr_1_1 = itemArr_1.next()) {\n var item = itemArr_1_1.value;\n var _d = item.mappingData,\n x = _d.x,\n y = _d.y;\n item.x = isArray(x) ? x[x.length - 1] : x;\n item.y = isArray(y) ? y[y.length - 1] : y;\n }\n } catch (e_2_1) {\n e_2 = {\n error: e_2_1\n };\n } finally {\n try {\n if (itemArr_1_1 && !itemArr_1_1.done && (_b = itemArr_1.return)) _b.call(itemArr_1);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (items_1_1 && !items_1_1.done && (_a = items_1.return)) _a.call(items_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n var shared = tooltipCfg.shared;\n // shared: false 代表只显示当前拾取到的 shape 的数据,但是一个 view 会有多个 Geometry,所以有可能会拾取到多个 shape\n if (shared === false && items.length > 1) {\n var snapItem = items[0];\n var min = Math.abs(point.y - snapItem[0].y);\n try {\n for (var items_2 = __values(items), items_2_1 = items_2.next(); !items_2_1.done; items_2_1 = items_2.next()) {\n var aItem = items_2_1.value;\n var yDistance = Math.abs(point.y - aItem[0].y);\n if (yDistance <= min) {\n snapItem = aItem;\n min = yDistance;\n }\n }\n } catch (e_3_1) {\n e_3 = {\n error: e_3_1\n };\n } finally {\n try {\n if (items_2_1 && !items_2_1.done && (_c = items_2.return)) _c.call(items_2);\n } finally {\n if (e_3) throw e_3.error;\n }\n }\n items = [snapItem];\n }\n return uniq(flatten(items));\n }\n return [];\n}\n/**\n * 背景框的 Action. 只作用于 interval 和 schema geometry\n * @ignore\n */\nvar ActiveRegion = /** @class */function (_super) {\n __extends(ActiveRegion, _super);\n function ActiveRegion() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * 显示\n * @param {ShapeAttrs} style region-path 的样式\n * @param {number} appendRatio 适用于笛卡尔坐标系. 对于 x 轴非 linear 类型: 默认:0.25, x 轴 linear 类型: 默认 0\n * @param {number} appendWidth 适用于笛卡尔坐标系. 像素级别,优先级 > appendRatio\n */\n ActiveRegion.prototype.show = function (args) {\n var view = this.context.view;\n var ev = this.context.event;\n var tooltipCfg = view.getController('tooltip').getTooltipCfg();\n var tooltipItems = getItemsOfView(view, {\n x: ev.x,\n y: ev.y\n }, tooltipCfg);\n if (isEqual(tooltipItems, this.items)) {\n // 如果拾取数据同上次相同,则不重复绘制\n return;\n }\n this.items = tooltipItems;\n if (tooltipItems.length) {\n var xField_1 = view.getXScale().field;\n var xValue_1 = tooltipItems[0].data[xField_1];\n // 根据 x 对应的值查找 elements\n var elements_1 = [];\n var geometries = view.geometries;\n each(geometries, function (geometry) {\n if (geometry.type === 'interval' || geometry.type === 'schema') {\n var result = geometry.getElementsBy(function (ele) {\n var eleData = ele.getData();\n return eleData[xField_1] === xValue_1;\n });\n elements_1 = elements_1.concat(result);\n }\n });\n // 根据 bbox 计算背景框的面积区域\n if (elements_1.length) {\n var coordinate_1 = view.getCoordinate();\n var firstBBox_1 = elements_1[0].shape.getCanvasBBox();\n var lastBBox_1 = elements_1[0].shape.getCanvasBBox();\n var groupBBox_1 = firstBBox_1;\n each(elements_1, function (ele) {\n var bbox = ele.shape.getCanvasBBox();\n if (coordinate_1.isTransposed) {\n if (bbox.minY < firstBBox_1.minY) {\n firstBBox_1 = bbox;\n }\n if (bbox.maxY > lastBBox_1.maxY) {\n lastBBox_1 = bbox;\n }\n } else {\n if (bbox.minX < firstBBox_1.minX) {\n firstBBox_1 = bbox;\n }\n if (bbox.maxX > lastBBox_1.maxX) {\n lastBBox_1 = bbox;\n }\n }\n groupBBox_1.x = Math.min(bbox.minX, groupBBox_1.minX);\n groupBBox_1.y = Math.min(bbox.minY, groupBBox_1.minY);\n groupBBox_1.width = Math.max(bbox.maxX, groupBBox_1.maxX) - groupBBox_1.x;\n groupBBox_1.height = Math.max(bbox.maxY, groupBBox_1.maxY) - groupBBox_1.y;\n });\n var backgroundGroup = view.backgroundGroup,\n coordinateBBox = view.coordinateBBox;\n var path = void 0;\n if (coordinate_1.isRect) {\n var xScale = view.getXScale();\n var _a = args || {},\n appendRatio = _a.appendRatio,\n appendWidth = _a.appendWidth;\n if (isNil(appendWidth)) {\n appendRatio = isNil(appendRatio) ? xScale.isLinear ? 0 : 0.25 : appendRatio; // 如果 x 轴是数值类型,如直方图,默认不需要加额外的宽度\n appendWidth = coordinate_1.isTransposed ? appendRatio * lastBBox_1.height : appendRatio * firstBBox_1.width;\n }\n var minX = void 0;\n var minY = void 0;\n var width = void 0;\n var height = void 0;\n if (coordinate_1.isTransposed) {\n minX = coordinateBBox.minX;\n minY = Math.min(lastBBox_1.minY, firstBBox_1.minY) - appendWidth;\n width = coordinateBBox.width;\n height = groupBBox_1.height + appendWidth * 2;\n } else {\n minX = Math.min(firstBBox_1.minX, lastBBox_1.minX) - appendWidth;\n // 直角坐标系 非转置:最小值直接取 坐标系 minY\n minY = coordinateBBox.minY;\n width = groupBBox_1.width + appendWidth * 2;\n height = coordinateBBox.height;\n }\n path = [['M', minX, minY], ['L', minX + width, minY], ['L', minX + width, minY + height], ['L', minX, minY + height], ['Z']];\n } else {\n var firstElement = head(elements_1);\n var lastElement = last(elements_1);\n var startAngle = getAngle(firstElement.getModel(), coordinate_1).startAngle;\n var endAngle = getAngle(lastElement.getModel(), coordinate_1).endAngle;\n var center = coordinate_1.getCenter();\n var radius = coordinate_1.getRadius();\n var innterRadius = coordinate_1.innerRadius * radius;\n path = getSectorPath(center.x, center.y, radius, startAngle, endAngle, innterRadius);\n }\n if (this.regionPath) {\n this.regionPath.attr('path', path);\n this.regionPath.show();\n } else {\n var style = get(args, 'style', DEFAULT_REGION_PATH_STYLE);\n this.regionPath = backgroundGroup.addShape({\n type: 'path',\n name: 'active-region',\n capture: false,\n attrs: __assign(__assign({}, style), {\n path: path\n })\n });\n }\n }\n }\n };\n /**\n * 隐藏\n */\n ActiveRegion.prototype.hide = function () {\n if (this.regionPath) {\n this.regionPath.hide();\n }\n // this.regionPath = null;\n this.items = null;\n };\n /**\n * 销毁\n */\n ActiveRegion.prototype.destroy = function () {\n this.hide();\n if (this.regionPath) {\n this.regionPath.remove(true);\n }\n _super.prototype.destroy.call(this);\n };\n return ActiveRegion;\n}(Action);\nexport default ActiveRegion;","import { __extends } from \"tslib\";\nimport { isEqual, get } from '@antv/util';\nimport Action from '../../base';\n/**\n * Tooltip 展示隐藏的 Action\n * @ignore\n */\nvar TooltipAction = /** @class */function (_super) {\n __extends(TooltipAction, _super);\n function TooltipAction() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.timeStamp = 0;\n return _this;\n }\n /**\n * 显示 Tooltip\n * @returns\n */\n TooltipAction.prototype.show = function () {\n var context = this.context;\n var ev = context.event;\n var view = context.view;\n var isTooltipLocked = view.isTooltipLocked();\n if (isTooltipLocked) {\n // 锁定时不移动 tooltip\n return;\n }\n var lastTimeStamp = this.timeStamp;\n var timeStamp = +new Date();\n // 在 showDelay 毫秒(默认 16ms)内到 tooltip 上可以实现 enterable(调参工程师)\n var showDelay = get(context.view.getOptions(), 'tooltip.showDelay', 16);\n if (timeStamp - lastTimeStamp > showDelay) {\n var preLoc = this.location;\n var curLoc = {\n x: ev.x,\n y: ev.y\n };\n if (!preLoc || !isEqual(preLoc, curLoc)) {\n this.showTooltip(view, curLoc);\n }\n this.timeStamp = timeStamp;\n this.location = curLoc;\n }\n };\n /**\n * 隐藏 Tooltip。\n * @returns\n */\n TooltipAction.prototype.hide = function () {\n var view = this.context.view;\n var tooltip = view.getController('tooltip');\n var _a = this.context.event,\n clientX = _a.clientX,\n clientY = _a.clientY;\n // 如果已经 enterable + 已经在 tooltip 上,那么不隐藏\n if (tooltip.isCursorEntered({\n x: clientX,\n y: clientY\n })) {\n return;\n }\n // 锁定 tooltip 时不隐藏\n if (view.isTooltipLocked()) {\n return;\n }\n this.hideTooltip(view);\n this.location = null;\n };\n TooltipAction.prototype.showTooltip = function (view, point) {\n // 相同位置不重复展示\n view.showTooltip(point);\n };\n TooltipAction.prototype.hideTooltip = function (view) {\n view.hideTooltip();\n };\n return TooltipAction;\n}(Action);\nexport default TooltipAction;","import { __extends } from \"tslib\";\nimport { each } from '@antv/util';\nimport { getSiblingPoint, getSilbings } from '../../util';\nimport TooltipAction from './geometry';\n/**\n * 存在多个 view 时,控制其他 view 上的 tooltip 显示\n * @ignore\n */\nvar SiblingTooltip = /** @class */function (_super) {\n __extends(SiblingTooltip, _super);\n function SiblingTooltip() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * 所有同一层级的 tooltip 显示\n * @param view\n * @param point\n */\n SiblingTooltip.prototype.showTooltip = function (view, point) {\n var siblings = getSilbings(view);\n each(siblings, function (sibling) {\n var siblingPoint = getSiblingPoint(view, sibling, point);\n sibling.showTooltip(siblingPoint);\n });\n };\n /**\n * 隐藏同一层级的 tooltip\n * @param view\n */\n SiblingTooltip.prototype.hideTooltip = function (view) {\n var siblings = getSilbings(view);\n each(siblings, function (sibling) {\n sibling.hideTooltip();\n });\n };\n return SiblingTooltip;\n}(TooltipAction);\nexport default SiblingTooltip;","import { __assign, __extends } from \"tslib\";\nimport { isEqual, get, deepMix } from '@antv/util';\nimport { TOOLTIP_CSS_CONST } from '@antv/component';\nimport Action from '../../base';\nimport { HtmlTooltip } from '../../../../dependents';\n/**\n * 用于组件文本省略后需要展示完整信息的 Tooltip Action\n * @ignore\n */\nvar EllipsisText = /** @class */function (_super) {\n __extends(EllipsisText, _super);\n function EllipsisText() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.timeStamp = 0;\n return _this;\n }\n EllipsisText.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.tooltip && this.tooltip.destroy();\n };\n /**\n * 显示 Tooltip\n * @returns\n */\n EllipsisText.prototype.show = function () {\n var context = this.context;\n var ev = context.event;\n var lastTimeStamp = this.timeStamp;\n var timeStamp = +new Date();\n if (timeStamp - lastTimeStamp > 16) {\n var preLoc = this.location;\n var curLoc = {\n x: ev.x,\n y: ev.y\n };\n if (!preLoc || !isEqual(preLoc, curLoc)) {\n this.showTooltip(curLoc);\n }\n this.timeStamp = timeStamp;\n this.location = curLoc;\n }\n };\n /**\n * 隐藏 Tooltip。\n * @returns\n */\n EllipsisText.prototype.hide = function () {\n this.hideTooltip();\n this.location = null;\n };\n EllipsisText.prototype.showTooltip = function (curLoc) {\n var context = this.context;\n var ev = context.event;\n var target = ev.target;\n if (target && target.get('tip')) {\n if (!this.tooltip) {\n this.renderTooltip(); // 延迟生成\n }\n\n var tipContent = target.get('tip');\n // 展示 tooltip\n this.tooltip.update(__assign({\n title: tipContent\n }, curLoc));\n this.tooltip.show();\n }\n };\n EllipsisText.prototype.hideTooltip = function () {\n this.tooltip && this.tooltip.hide();\n };\n EllipsisText.prototype.renderTooltip = function () {\n var _a;\n var view = this.context.view;\n var canvas = view.canvas;\n var region = {\n start: {\n x: 0,\n y: 0\n },\n end: {\n x: canvas.get('width'),\n y: canvas.get('height')\n }\n };\n var theme = view.getTheme();\n var tooltipStyles = get(theme, ['components', 'tooltip', 'domStyles'], {}); // 获取 tooltip 样式\n var tooltip = new HtmlTooltip({\n parent: canvas.get('el').parentNode,\n region: region,\n visible: false,\n crosshairs: null,\n domStyles: __assign({}, deepMix({}, tooltipStyles, (_a = {},\n // 超长的时候,tooltip tip 最大宽度为 50%,然后可以换行\n _a[TOOLTIP_CSS_CONST.CONTAINER_CLASS] = {\n 'max-width': '50%'\n }, _a[TOOLTIP_CSS_CONST.TITLE_CLASS] = {\n 'word-break': 'break-all'\n }, _a)))\n });\n tooltip.init();\n tooltip.setCapture(false); // 不允许捕获事件\n this.tooltip = tooltip;\n };\n return EllipsisText;\n}(Action);\nexport default EllipsisText;","import { __extends } from \"tslib\";\nimport { each } from '@antv/util';\nimport Action from '../base';\nimport { getElementsByState } from '../util';\n/**\n * 状态量 Action 的基类\n * @abstract\n * @class\n * @ignore\n */\nvar StateBase = /** @class */function (_super) {\n __extends(StateBase, _super);\n function StateBase() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * 状态名称\n */\n _this.stateName = '';\n return _this;\n }\n /**\n * 是否具有某个状态\n * @param element 图表 Element 元素\n */\n StateBase.prototype.hasState = function (element) {\n return element.hasState(this.stateName);\n };\n /**\n * 设置状态激活\n * @param enable 状态值\n */\n StateBase.prototype.setElementState = function (element, enable) {\n // 防止闪烁\n element.setState(this.stateName, enable);\n };\n /**\n * 设置状态\n */\n StateBase.prototype.setState = function () {\n this.setStateEnable(true);\n };\n /**\n * 清除所有 Element 的状态\n */\n StateBase.prototype.clear = function () {\n var view = this.context.view;\n this.clearViewState(view);\n };\n StateBase.prototype.clearViewState = function (view) {\n var _this = this;\n var elements = getElementsByState(view, this.stateName);\n each(elements, function (el) {\n _this.setElementState(el, false);\n });\n };\n return StateBase;\n}(Action);\nexport default StateBase;","import { __extends } from \"tslib\";\nimport { each, isNil, get } from '@antv/util';\nimport { getCurrentElement, getDelegationObject, getElements, getElementValue, getScaleByField, isElementChange, isList } from '../util';\nimport StateBase from './state-base';\nfunction getItem(shape) {\n return get(shape.get('delegateObject'), 'item');\n}\n/**\n * 状态量 Action 的基类,允许多个 Element 同时拥有某个状态\n * @class\n * @ignore\n */\nvar ElementState = /** @class */function (_super) {\n __extends(ElementState, _super);\n function ElementState() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.ignoreListItemStates = ['unchecked'];\n return _this;\n }\n // 是否忽略触发的列表项\n ElementState.prototype.isItemIgnore = function (item, list) {\n var states = this.ignoreListItemStates;\n var filtered = states.filter(function (state) {\n return list.hasState(item, state);\n });\n return !!filtered.length;\n };\n // 设置由组件选项导致的状态变化\n ElementState.prototype.setStateByComponent = function (component, item, enable) {\n var view = this.context.view;\n var field = component.get('field');\n var elements = getElements(view);\n this.setElementsStateByItem(elements, field, item, enable);\n };\n // 处理触发源由 element 导致的状态变化\n ElementState.prototype.setStateByElement = function (element, enable) {\n this.setElementState(element, enable);\n };\n /** 组件的选项是否同 element 匹配 */\n ElementState.prototype.isMathItem = function (element, field, item) {\n var view = this.context.view;\n var scale = getScaleByField(view, field);\n var value = getElementValue(element, field);\n return !isNil(value) && item.name === scale.getText(value);\n };\n ElementState.prototype.setElementsStateByItem = function (elements, field, item, enable) {\n var _this = this;\n each(elements, function (el) {\n if (_this.isMathItem(el, field, item)) {\n el.setState(_this.stateName, enable);\n }\n });\n };\n /** 设置状态是否激活 */\n ElementState.prototype.setStateEnable = function (enable) {\n var element = getCurrentElement(this.context);\n if (element) {\n // 触发源由于 element 导致\n if (isElementChange(this.context)) {\n this.setStateByElement(element, enable);\n }\n } else {\n // 触发源由组件导致\n var delegateObject = getDelegationObject(this.context);\n // 如果触发源时列表,图例、坐标轴\n if (isList(delegateObject)) {\n var item = delegateObject.item,\n component = delegateObject.component;\n if (item && component && !this.isItemIgnore(item, component)) {\n var event_1 = this.context.event.gEvent;\n // 防止闪烁\n if (event_1 && event_1.fromShape && event_1.toShape && getItem(event_1.fromShape) === getItem(event_1.toShape)) {\n return;\n }\n this.setStateByComponent(component, item, enable);\n }\n }\n }\n };\n /**\n * 切换状态\n */\n ElementState.prototype.toggle = function () {\n var element = getCurrentElement(this.context);\n if (element) {\n var hasState = element.hasState(this.stateName);\n this.setElementState(element, !hasState);\n }\n };\n /**\n * 取消当前时间影响的状态\n */\n ElementState.prototype.reset = function () {\n this.setStateEnable(false);\n };\n return ElementState;\n}(StateBase);\nexport default ElementState;","import { __extends } from \"tslib\";\nimport StateAction from './state';\n/**\n * 元素 active 的 Action,允许多个元素同时 active\n * @class\n * @ignore\n */\nvar ElementActive = /** @class */function (_super) {\n __extends(ElementActive, _super);\n function ElementActive() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.stateName = 'active';\n return _this;\n }\n /**\n * Active Element\n */\n ElementActive.prototype.active = function () {\n this.setState();\n };\n return ElementActive;\n}(StateAction);\nexport default ElementActive;","import { __assign, __extends } from \"tslib\";\nimport Action from '../base';\nimport { getCurrentElement, getElementValue, getElementsByField } from '../util';\nimport { deepMix, each, isFunction } from '@antv/util';\n/**\n * Link Elements by color\n *\n * public 方法是对外可用的反馈交互。使用方式,如:element-link-by-color:link, element-link-by-color:unlink, element-link-by-color:clear\n */\nvar LinkByColor = /** @class */function (_super) {\n __extends(LinkByColor, _super);\n function LinkByColor() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.cache = {};\n return _this;\n }\n // 获取颜色对应的 scale\n LinkByColor.prototype.getColorScale = function (view, element) {\n var colorAttr = element.geometry.getAttribute('color');\n if (!colorAttr) {\n return null;\n }\n var scale = view.getScaleByField(colorAttr.getFields()[0]);\n return scale;\n };\n // 获取连接的 path\n LinkByColor.prototype.getLinkPath = function (element, nextElement) {\n var view = this.context.view;\n var isTransposed = view.getCoordinate().isTransposed;\n var bbox = element.shape.getCanvasBBox();\n var nextBBox = nextElement.shape.getCanvasBBox();\n var path = isTransposed ? [['M', bbox.minX, bbox.minY], ['L', nextBBox.minX, nextBBox.maxY], ['L', nextBBox.maxX, nextBBox.maxY], ['L', bbox.maxX, bbox.minY], ['Z']] : [['M', bbox.maxX, bbox.minY], ['L', nextBBox.minX, nextBBox.minY], ['L', nextBBox.minX, nextBBox.maxY], ['L', bbox.maxX, bbox.maxY], ['Z']];\n return path;\n };\n // 添加连接的图形\n LinkByColor.prototype.addLinkShape = function (group, element, nextElement, activeStyle) {\n var style = {\n opacity: 0.4,\n fill: element.shape.attr('fill')\n };\n group.addShape({\n type: 'path',\n attrs: __assign(__assign({}, deepMix({}, style, isFunction(activeStyle) ? activeStyle(style, element) : activeStyle)), {\n path: this.getLinkPath(element, nextElement)\n })\n });\n };\n // 使用图形连接\n LinkByColor.prototype.linkByElement = function (element, activeStyle) {\n var _this = this;\n var view = this.context.view;\n var scale = this.getColorScale(view, element);\n if (!scale) {\n return;\n }\n var value = getElementValue(element, scale.field);\n if (!this.cache[value]) {\n var elements_1 = getElementsByField(view, scale.field, value);\n var linkGroup = this.linkGroup;\n var group_1 = linkGroup.addGroup();\n this.cache[value] = group_1; // 缓存\n var count_1 = elements_1.length;\n each(elements_1, function (el, index) {\n if (index < count_1 - 1) {\n var nextEl = elements_1[index + 1];\n _this.addLinkShape(group_1, el, nextEl, activeStyle);\n }\n });\n }\n };\n // 移除连接\n LinkByColor.prototype.removeLink = function (element) {\n var scale = this.getColorScale(this.context.view, element);\n if (!scale) {\n return;\n }\n var value = getElementValue(element, scale.field);\n if (this.cache[value]) {\n this.cache[value].remove();\n this.cache[value] = null;\n }\n };\n /**\n * 连接 elements\n *\n * @usage\n * registerInteraction('xxx', {\n * start: [\n * {\n * trigger: 'interval:mouseenter',\n * action: 'element-link-by-color:link',\n * arg: {\n * // style: { fill: 'red' }\n * style: (style, element) => ({ fill: 'red' })\n * },\n * },\n * ],\n * });\n */\n LinkByColor.prototype.link = function (args) {\n var context = this.context;\n if (!this.linkGroup) {\n // 不允许被拾取\n this.linkGroup = context.view.foregroundGroup.addGroup({\n id: 'link-by-color-group',\n capture: false\n });\n }\n var element = getCurrentElement(context);\n if (element) {\n this.linkByElement(element, args === null || args === void 0 ? void 0 : args.style);\n }\n };\n /**\n * 取消连接 elements\n */\n LinkByColor.prototype.unlink = function () {\n var element = getCurrentElement(this.context);\n if (element) {\n this.removeLink(element);\n }\n };\n /**\n * 清除所有连接\n */\n LinkByColor.prototype.clear = function () {\n if (this.linkGroup) {\n this.linkGroup.clear();\n }\n this.cache = {};\n };\n /**\n * 销毁\n */\n LinkByColor.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.linkGroup) {\n this.linkGroup.remove();\n }\n };\n return LinkByColor;\n}(Action);\nexport default LinkByColor;","import { __extends } from \"tslib\";\nimport { each } from '@antv/util';\nimport { getElements, getIntersectElements, getMaskedElements, getSiblingMaskElements, getSilbings, isInRecords, isMask } from '../util';\nimport StateBase from './state-base';\n/**\n * @ignore\n * 区域设置状态的基础 Action\n */\nvar ElementRangeState = /** @class */function (_super) {\n __extends(ElementRangeState, _super);\n function ElementRangeState() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.startPoint = null;\n _this.endPoint = null;\n _this.isStarted = false;\n /**\n * 是否作用于当前 view 的 siblings,默认是 false 仅作用于自己\n */\n _this.effectSiblings = false;\n /**\n * 是否受 element 的数据影响,还是受包围盒的影响\n */\n _this.effectByRecord = false;\n return _this;\n }\n // 获取当前的位置\n ElementRangeState.prototype.getCurrentPoint = function () {\n var event = this.context.event;\n return {\n x: event.x,\n y: event.y\n };\n };\n /**\n * 开始,记录开始选中的位置\n */\n ElementRangeState.prototype.start = function () {\n this.clear(); // 开始的时候清理之前的状态\n this.startPoint = this.getCurrentPoint();\n this.isStarted = true;\n };\n ElementRangeState.prototype.getIntersectElements = function () {\n var elements = null;\n if (isMask(this.context)) {\n elements = getMaskedElements(this.context, 10);\n } else {\n var startPoint = this.startPoint;\n var endPoint = this.isStarted ? this.getCurrentPoint() : this.endPoint;\n // 如果没有开始,则不允许范围设置状态,保护性质\n if (!startPoint || !endPoint) {\n return;\n }\n // 计算框选区域\n var box = {\n minX: Math.min(startPoint.x, endPoint.x),\n minY: Math.min(startPoint.y, endPoint.y),\n maxX: Math.max(startPoint.x, endPoint.x),\n maxY: Math.max(startPoint.y, endPoint.y)\n };\n // this.clear(); // 不全部清理,会导致闪烁\n var view = this.context.view;\n elements = getIntersectElements(view, box);\n }\n return elements;\n };\n /**\n * 选中\n */\n ElementRangeState.prototype.setStateEnable = function (enable) {\n if (this.effectSiblings && !this.effectByRecord) {\n this.setSiblingsState(enable);\n } else {\n var allElements = getElements(this.context.view);\n var elements = this.getIntersectElements();\n if (elements && elements.length) {\n if (this.effectByRecord) {\n this.setSiblingsStateByRecord(elements, enable);\n } else {\n this.setElementsState(elements, enable, allElements);\n }\n } else {\n this.clear();\n }\n }\n };\n // 根据选中的 element 的数据进行设置状态\n ElementRangeState.prototype.setSiblingsStateByRecord = function (elements, enable) {\n var _this = this;\n var view = this.context.view;\n var siblings = getSilbings(view);\n var records = elements.map(function (el) {\n return el.getModel().data;\n });\n var xFiled = view.getXScale().field;\n var yField = view.getYScales()[0].field;\n each(siblings, function (sibling) {\n var allElements = getElements(sibling);\n var effectElements = allElements.filter(function (el) {\n var record = el.getModel().data;\n return isInRecords(records, record, xFiled, yField);\n });\n _this.setElementsState(effectElements, enable, allElements);\n });\n };\n // 设置兄弟 view 的状态\n ElementRangeState.prototype.setSiblingsState = function (enable) {\n var _this = this;\n var view = this.context.view;\n var siblings = getSilbings(view);\n if (isMask(this.context)) {\n // 受 mask 影响\n each(siblings, function (sibling) {\n var allElements = getElements(sibling);\n var effectElements = getSiblingMaskElements(_this.context, sibling, 10);\n if (effectElements && effectElements.length) {\n _this.setElementsState(effectElements, enable, allElements);\n } else {\n _this.clearViewState(sibling);\n }\n });\n }\n };\n ElementRangeState.prototype.setElementsState = function (elements, enable, allElements) {\n var _this = this;\n each(allElements, function (el) {\n if (!elements.includes(el)) {\n _this.setElementState(el, false);\n } else {\n _this.setElementState(el, enable);\n }\n });\n };\n /**\n * 结束\n */\n ElementRangeState.prototype.end = function () {\n this.isStarted = false;\n this.endPoint = this.getCurrentPoint();\n };\n // 复写 clear\n ElementRangeState.prototype.clear = function () {\n var _this = this;\n var view = this.context.view;\n // 判断是否影响 siblings\n if (this.effectSiblings) {\n var siblings = getSilbings(view);\n each(siblings, function (sibling) {\n _this.clearViewState(sibling);\n });\n } else {\n this.clearViewState(view);\n }\n };\n return ElementRangeState;\n}(StateBase);\nexport default ElementRangeState;","import { __extends } from \"tslib\";\nimport ElementRangeState from './range-state';\n/**\n * @ignore\n * 图表元素区域 Active 的 Action\n */\nvar ElementRangeActive = /** @class */function (_super) {\n __extends(ElementRangeActive, _super);\n function ElementRangeActive() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.stateName = 'active';\n return _this;\n }\n /**\n * 图表元素 Active\n */\n ElementRangeActive.prototype.active = function () {\n this.setState();\n };\n return ElementRangeActive;\n}(ElementRangeState);\nexport default ElementRangeActive;","import { __extends } from \"tslib\";\nimport { getCurrentElement, isElementChange } from '../util';\nimport StateBase from './state-base';\n/**\n * 单状态量的 Action 基类\n * @class\n * @ignore\n */\nvar ElementSingleState = /** @class */function (_super) {\n __extends(ElementSingleState, _super);\n function ElementSingleState() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ElementSingleState.prototype.setStateEnable = function (enable) {\n var element = getCurrentElement(this.context);\n if (element) {\n // 在同一个 element 内部移动,忽视 label 和 shape 之间\n if (!isElementChange(this.context)) {\n return;\n }\n // 仅支持单个状态量的元素,只能由 element 触发\n if (enable) {\n this.clear();\n this.setElementState(element, true);\n } else if (this.hasState(element)) {\n this.setElementState(element, false);\n }\n }\n };\n /**\n * 切换选中,只允许选中一个\n */\n ElementSingleState.prototype.toggle = function () {\n var element = getCurrentElement(this.context);\n if (element) {\n var hasState = this.hasState(element); // 提前获取状态\n if (!hasState) {\n this.clear();\n }\n this.setElementState(element, !hasState);\n }\n };\n /**\n * 取消当前时间影响的状态\n */\n ElementSingleState.prototype.reset = function () {\n this.setStateEnable(false);\n };\n return ElementSingleState;\n}(StateBase);\nexport default ElementSingleState;","import { __extends } from \"tslib\";\nimport ElementSingleState from './single-state';\n/**\n * @ignore\n * 仅允许单个 Element Active 的 Action\n */\nvar ElementSingleActive = /** @class */function (_super) {\n __extends(ElementSingleActive, _super);\n function ElementSingleActive() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.stateName = 'active';\n return _this;\n }\n /**\n * 当前事件相关的 Element Active\n */\n ElementSingleActive.prototype.active = function () {\n this.setState();\n };\n return ElementSingleActive;\n}(ElementSingleState);\nexport default ElementSingleActive;","import { each } from '@antv/util';\nimport { getElements } from '../util';\nvar STATUS_UNACTIVE = 'inactive';\nvar STATUS_ACTIVE = 'active';\n/**\n * @ignore\n * 清理 highlight 效果\n * @param view View 或者 Chart\n */\nexport function clearHighlight(view) {\n var elements = getElements(view);\n each(elements, function (el) {\n if (el.hasState(STATUS_ACTIVE)) {\n el.setState(STATUS_ACTIVE, false);\n }\n if (el.hasState(STATUS_UNACTIVE)) {\n el.setState(STATUS_UNACTIVE, false);\n }\n });\n}\n/**\n * @ignore\n * 设置多个元素的 highlight\n * @param elements 元素集合\n * @param callback 设置回调函数\n * @param enable 设置或者取消\n */\nexport function setHighlightBy(elements, callback, enable) {\n each(elements, function (el) {\n // 需要处理 active 和 unactive 的互斥\n if (callback(el)) {\n if (el.hasState(STATUS_UNACTIVE)) {\n el.setState(STATUS_UNACTIVE, false);\n }\n el.setState(STATUS_ACTIVE, enable);\n } else {\n if (el.hasState(STATUS_ACTIVE)) {\n el.setState(STATUS_ACTIVE, false);\n }\n el.setState(STATUS_UNACTIVE, enable);\n }\n });\n}","import { __extends } from \"tslib\";\nimport { each } from '@antv/util';\nimport { getElements, getElementsByState } from '../util';\nimport { clearHighlight } from './highlight-util';\nimport StateAction from './state';\nimport { ELEMENT_STATE } from '../../../constant';\nexport var STATUS_UNACTIVE = ELEMENT_STATE.INACTIVE;\nexport var STATUS_ACTIVE = ELEMENT_STATE.ACTIVE;\n/**\n * @ignore\n * highlight,指定图形高亮,其他图形变暗\n */\nvar ElementHighlight = /** @class */function (_super) {\n __extends(ElementHighlight, _super);\n function ElementHighlight() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.stateName = STATUS_ACTIVE;\n return _this;\n }\n // 多个元素设置、取消 highlight\n ElementHighlight.prototype.setElementsStateByItem = function (elements, field, item, enable) {\n var _this = this;\n var callback = function callback(el) {\n return _this.isMathItem(el, field, item);\n };\n this.setHighlightBy(elements, callback, enable);\n };\n // 设置元素的 highlight\n ElementHighlight.prototype.setElementHighlight = function (el, callback) {\n if (callback(el)) {\n if (el.hasState(STATUS_UNACTIVE)) {\n el.setState(STATUS_UNACTIVE, false);\n }\n el.setState(STATUS_ACTIVE, true);\n } else if (!el.hasState(STATUS_ACTIVE)) {\n el.setState(STATUS_UNACTIVE, true);\n }\n };\n ElementHighlight.prototype.setHighlightBy = function (elements, callback, enable) {\n var _this = this;\n if (enable) {\n // 如果是设置 highlight ,则将匹配的 element 设置成 active,\n // 其他如果不是 active,则设置成 unactive\n each(elements, function (el) {\n _this.setElementHighlight(el, callback);\n });\n } else {\n // 如果取消 highlight,则要检测是否全部取消 highlight\n var activeElements = getElementsByState(this.context.view, STATUS_ACTIVE);\n var allCancel_1 = true;\n // 检测所有 activeElements 都要取消 highlight\n each(activeElements, function (el) {\n if (!callback(el)) {\n allCancel_1 = false;\n return false;\n }\n });\n if (allCancel_1) {\n // 都要取消,则取消所有的 active,unactive 状态\n this.clear();\n } else {\n // 如果不是都要取消 highlight, 则设置匹配的 element 的状态为 unactive\n // 其他 element 状态不变\n each(elements, function (el) {\n if (callback(el)) {\n if (el.hasState(STATUS_ACTIVE)) {\n el.setState(STATUS_ACTIVE, false);\n }\n el.setState(STATUS_UNACTIVE, true);\n }\n });\n }\n }\n };\n // 单个元素设置和取消 highlight\n ElementHighlight.prototype.setElementState = function (element, enable) {\n var view = this.context.view;\n var elements = getElements(view);\n this.setHighlightBy(elements, function (el) {\n return element === el;\n }, enable);\n };\n ElementHighlight.prototype.highlight = function () {\n this.setState();\n };\n // 清理掉所有的 active, unactive 状态\n ElementHighlight.prototype.clear = function () {\n var view = this.context.view;\n clearHighlight(view);\n };\n return ElementHighlight;\n}(StateAction);\nexport default ElementHighlight;","import { __extends } from \"tslib\";\nimport { Event } from '../../../chart';\nimport { clearHighlight, setHighlightBy } from './highlight-util';\nimport ElementRangeState from './range-state';\nvar EVENTS;\n(function (EVENTS) {\n EVENTS[\"BEFORE_HIGHLIGHT\"] = \"element-range-highlight:beforehighlight\";\n EVENTS[\"AFTER_HIGHLIGHT\"] = \"element-range-highlight:afterhighlight\";\n EVENTS[\"BEFORE_CLEAR\"] = \"element-range-highlight:beforeclear\";\n EVENTS[\"AFTER_CLEAR\"] = \"element-range-highlight:afterclear\";\n})(EVENTS || (EVENTS = {}));\nexport { EVENTS as ELEMENT_RANGE_HIGHLIGHT_EVENTS };\n/**\n * @ignore\n * 区域 highlight 的 Action\n */\nvar ElementRangeHighlight = /** @class */function (_super) {\n __extends(ElementRangeHighlight, _super);\n function ElementRangeHighlight() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.stateName = 'active';\n return _this;\n }\n // 清理掉所有的 active, unactive 状态\n ElementRangeHighlight.prototype.clearViewState = function (view) {\n clearHighlight(view);\n };\n /**\n * 设置 highlight\n */\n ElementRangeHighlight.prototype.highlight = function () {\n var _a = this.context,\n view = _a.view,\n event = _a.event;\n var elements = this.getIntersectElements();\n var payload = {\n view: view,\n event: event,\n highlightElements: elements\n };\n view.emit(EVENTS.BEFORE_HIGHLIGHT, Event.fromData(view, EVENTS.BEFORE_HIGHLIGHT, payload));\n this.setState();\n view.emit(EVENTS.AFTER_HIGHLIGHT, Event.fromData(view, EVENTS.AFTER_HIGHLIGHT, payload));\n };\n /**\n * @overrider 添加事件\n */\n ElementRangeHighlight.prototype.clear = function () {\n var view = this.context.view;\n view.emit(EVENTS.BEFORE_CLEAR, Event.fromData(view, EVENTS.BEFORE_CLEAR, {}));\n _super.prototype.clear.call(this);\n view.emit(EVENTS.AFTER_CLEAR, Event.fromData(view, EVENTS.AFTER_CLEAR, {}));\n };\n ElementRangeHighlight.prototype.setElementsState = function (elements, enable, allElements) {\n setHighlightBy(allElements, function (el) {\n return elements.indexOf(el) >= 0;\n }, enable);\n };\n return ElementRangeHighlight;\n}(ElementRangeState);\nexport default ElementRangeHighlight;","import { __extends } from \"tslib\";\nimport { getElements, getElementValue } from '../util';\nimport Highlight from './highlight';\n/**\n * Highlight color\n * @ignore\n */\nvar HighlightColor = /** @class */function (_super) {\n __extends(HighlightColor, _super);\n function HighlightColor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n HighlightColor.prototype.setStateByElement = function (element, enable) {\n var view = this.context.view;\n var colorAttr = element.geometry.getAttribute('color');\n if (!colorAttr) {\n return;\n }\n var scale = view.getScaleByField(colorAttr.getFields()[0]);\n var value = getElementValue(element, scale.field);\n var elements = getElements(view);\n var highlightElements = elements.filter(function (el) {\n return getElementValue(el, scale.field) === value;\n });\n this.setHighlightBy(elements, function (el) {\n return highlightElements.includes(el);\n }, enable);\n };\n return HighlightColor;\n}(Highlight);\nexport default HighlightColor;","import { __extends } from \"tslib\";\nimport { getElements, getElementValue, getCurrentElement } from '../util';\nimport Highlight, { STATUS_ACTIVE, STATUS_UNACTIVE } from './highlight';\n/**\n * Highlight x\n * @ignore\n */\nvar HighlightX = /** @class */function (_super) {\n __extends(HighlightX, _super);\n function HighlightX() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // 不允许多选\n HighlightX.prototype.setElementHighlight = function (el, callback) {\n if (callback(el)) {\n if (el.hasState(STATUS_UNACTIVE)) {\n el.setState(STATUS_UNACTIVE, false);\n }\n el.setState(STATUS_ACTIVE, true);\n } else {\n el.setState(STATUS_UNACTIVE, true);\n if (el.hasState(STATUS_ACTIVE)) {\n el.setState(STATUS_ACTIVE, false);\n }\n }\n };\n HighlightX.prototype.setStateByElement = function (element, enable) {\n var view = this.context.view;\n var scale = view.getXScale();\n var value = getElementValue(element, scale.field);\n var elements = getElements(view);\n var highlightElements = elements.filter(function (el) {\n return getElementValue(el, scale.field) === value;\n });\n this.setHighlightBy(elements, function (el) {\n return highlightElements.includes(el);\n }, enable);\n };\n /**\n * 切换状态\n */\n HighlightX.prototype.toggle = function () {\n var element = getCurrentElement(this.context);\n if (element) {\n var hasState = element.hasState(this.stateName);\n this.setStateByElement(element, !hasState);\n }\n };\n return HighlightX;\n}(Highlight);\nexport default HighlightX;","import { __extends } from \"tslib\";\nimport { getElements } from '../util';\nimport { clearHighlight, setHighlightBy } from './highlight-util';\nimport ElementSingleState from './single-state';\n/**\n * @ignore\n * 单个 Element Highlight 的 Action\n */\nvar ElementSingleHighlight = /** @class */function (_super) {\n __extends(ElementSingleHighlight, _super);\n function ElementSingleHighlight() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.stateName = 'active';\n return _this;\n }\n /**\n * Element Highlight\n */\n ElementSingleHighlight.prototype.highlight = function () {\n this.setState();\n };\n ElementSingleHighlight.prototype.setElementState = function (element, enable) {\n var view = this.context.view;\n var elements = getElements(view);\n setHighlightBy(elements, function (el) {\n return element === el;\n }, enable);\n };\n // 清理掉所有的 active, unactive 状态\n ElementSingleHighlight.prototype.clear = function () {\n var view = this.context.view;\n clearHighlight(view);\n };\n return ElementSingleHighlight;\n}(ElementSingleState);\nexport default ElementSingleHighlight;","import { __extends } from \"tslib\";\nimport ElementRangeState from './range-state';\n/**\n * @ignore\n * 区域选中的 Action\n */\nvar ElementRangeSelected = /** @class */function (_super) {\n __extends(ElementRangeSelected, _super);\n function ElementRangeSelected() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.stateName = 'selected';\n return _this;\n }\n /**\n * 选中\n */\n ElementRangeSelected.prototype.selected = function () {\n this.setState();\n };\n return ElementRangeSelected;\n}(ElementRangeState);\nexport default ElementRangeSelected;","import { __extends } from \"tslib\";\nimport StateAction from './state';\n/**\n * @ignore\n * 允许多选的 Action\n * @class\n */\nvar ElementMultipleSelected = /** @class */function (_super) {\n __extends(ElementMultipleSelected, _super);\n function ElementMultipleSelected() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.stateName = 'selected';\n return _this;\n }\n /**\n * 选中节点,允许多选\n */\n ElementMultipleSelected.prototype.selected = function () {\n this.setState();\n };\n return ElementMultipleSelected;\n}(StateAction);\nexport default ElementMultipleSelected;","import { __extends } from \"tslib\";\nimport ElementSingleState from './single-state';\n/**\n * @ignore\n * 单选的 Action\n */\nvar ElementSingleSelected = /** @class */function (_super) {\n __extends(ElementSingleSelected, _super);\n function ElementSingleSelected() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.stateName = 'selected';\n return _this;\n }\n /**\n * 选中\n */\n ElementSingleSelected.prototype.selected = function () {\n this.setState();\n };\n return ElementSingleSelected;\n}(ElementSingleState);\nexport default ElementSingleSelected;","import { __extends } from \"tslib\";\nimport { each } from '@antv/util';\nimport Action from '../base';\nimport { getComponents } from '../util';\nimport { getCurrentElement, getDelegationObject, getElementValue, isList, getScaleByField } from '../util';\n/**\n * 列表项状态 Action 的基础类\n * @class\n * @ignore\n */\nvar ListState = /** @class */function (_super) {\n __extends(ListState, _super);\n function ListState() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.stateName = '';\n _this.ignoreItemStates = [];\n return _this;\n }\n /** 获取触发的列表组件 */\n ListState.prototype.getTriggerListInfo = function () {\n var delegateObject = getDelegationObject(this.context);\n var info = null;\n if (isList(delegateObject)) {\n info = {\n item: delegateObject.item,\n list: delegateObject.component\n };\n }\n return info;\n };\n // 获取所有允许执行 Action 的组件\n ListState.prototype.getAllowComponents = function () {\n var _this = this;\n var view = this.context.view;\n var components = getComponents(view);\n var rst = [];\n each(components, function (component) {\n if (component.isList() && _this.allowSetStateByElement(component)) {\n rst.push(component);\n }\n });\n return rst;\n };\n /** 是否存在指定的状态 */\n ListState.prototype.hasState = function (list, item) {\n return list.hasState(item, this.stateName);\n };\n /** 清理组件的状态 */\n ListState.prototype.clearAllComponentsState = function () {\n var _this = this;\n var components = this.getAllowComponents();\n each(components, function (component) {\n component.clearItemsState(_this.stateName);\n });\n };\n // 不是所有的 component 都能进行 active,目前仅支持分类 scale 对应的组件\n ListState.prototype.allowSetStateByElement = function (component) {\n var field = component.get('field');\n if (!field) {\n return false;\n }\n if (this.cfg && this.cfg.componentNames) {\n var name_1 = component.get('name');\n // 如果配置了限制的 component name,则要进行检测\n if (this.cfg.componentNames.indexOf(name_1) === -1) {\n return false;\n }\n }\n var view = this.context.view;\n var scale = getScaleByField(view, field);\n return scale && scale.isCategory;\n };\n // 检测是否允许触发对应的状态改变事件\n ListState.prototype.allowSetStateByItem = function (item, list) {\n var ignoreStates = this.ignoreItemStates;\n if (ignoreStates.length) {\n var filterStates = ignoreStates.filter(function (state) {\n return list.hasState(item, state);\n });\n return filterStates.length === 0;\n }\n return true; // 没有定义忽略的状态时,允许\n };\n // 设置组件的 item active\n ListState.prototype.setStateByElement = function (component, element, enable) {\n var field = component.get('field');\n var view = this.context.view;\n var scale = getScaleByField(view, field);\n var value = getElementValue(element, field);\n var text = scale.getText(value);\n this.setItemsState(component, text, enable);\n };\n // 设置状态\n ListState.prototype.setStateEnable = function (enable) {\n var _this = this;\n var element = getCurrentElement(this.context);\n if (element) {\n // trigger by element\n var components = this.getAllowComponents();\n each(components, function (component) {\n _this.setStateByElement(component, element, enable);\n });\n } else {\n // 被组件触发\n var delegateObject = getDelegationObject(this.context);\n if (isList(delegateObject)) {\n var item = delegateObject.item,\n component = delegateObject.component;\n if (this.allowSetStateByElement(component) && this.allowSetStateByItem(item, component)) {\n this.setItemState(component, item, enable);\n }\n }\n }\n };\n // 多个 item 设置状态\n ListState.prototype.setItemsState = function (list, name, enable) {\n var _this = this;\n var items = list.getItems();\n each(items, function (item) {\n if (item.name === name) {\n _this.setItemState(list, item, enable);\n }\n });\n };\n // 单个 item 设置状态\n ListState.prototype.setItemState = function (list, item, enable) {\n list.setItemState(item, this.stateName, enable);\n };\n /**\n * 设置状态\n */\n ListState.prototype.setState = function () {\n this.setStateEnable(true);\n };\n /**\n * 取消状态\n */\n ListState.prototype.reset = function () {\n this.setStateEnable(false);\n };\n /**\n * 切换状态\n */\n ListState.prototype.toggle = function () {\n var triggerInfo = this.getTriggerListInfo();\n if (triggerInfo && triggerInfo.item) {\n var list = triggerInfo.list,\n item = triggerInfo.item;\n var enable = this.hasState(list, item);\n this.setItemState(list, item, !enable);\n }\n };\n /**\n * 取消状态\n */\n ListState.prototype.clear = function () {\n var triggerInfo = this.getTriggerListInfo();\n if (triggerInfo) {\n triggerInfo.list.clearItemsState(this.stateName);\n } else {\n this.clearAllComponentsState();\n }\n };\n return ListState;\n}(Action);\nexport default ListState;","import { __extends } from \"tslib\";\nimport ListState from './list-state';\n/**\n * 列表项(图例项、坐标轴文本)激活的 Action\n * @class\n * @ignore\n */\nvar ListActive = /** @class */function (_super) {\n __extends(ListActive, _super);\n function ListActive() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.stateName = 'active';\n return _this;\n }\n /**\n * 激活选项\n */\n ListActive.prototype.active = function () {\n this.setState();\n };\n return ListActive;\n}(ListState);\nexport default ListActive;","import { each } from '@antv/util';\nvar STATUS_UNACTIVE = 'inactive';\nvar STATUS_ACTIVE = 'active';\n/**\n * 清理图例的 Highlight 效果\n * @param list 列表组件,图例或者坐标轴\n * @ignore\n */\nexport function clearList(list) {\n var items = list.getItems();\n each(items, function (item) {\n if (list.hasState(item, STATUS_ACTIVE)) {\n list.setItemState(item, STATUS_ACTIVE, false);\n }\n if (list.hasState(item, STATUS_UNACTIVE)) {\n list.setItemState(item, STATUS_UNACTIVE, false);\n }\n });\n}","import { __extends } from \"tslib\";\nimport { each } from '@antv/util';\nimport { clearList } from './list-highlight-util';\nimport ListState from './list-state';\nvar STATUS_UNACTIVE = 'inactive';\nvar STATUS_ACTIVE = 'active';\n/**\n * highlight Action 的效果是 active 和 inactive 两个状态的组合\n * @class\n * @ignore\n */\nvar ListHighlight = /** @class */function (_super) {\n __extends(ListHighlight, _super);\n function ListHighlight() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.stateName = STATUS_ACTIVE;\n _this.ignoreItemStates = ['unchecked']; // 当存在 unchecked 状态时不触发\n return _this;\n }\n // 如果 item.name 匹配,则设置 highlight 以及取消\n ListHighlight.prototype.setItemsState = function (list, name, enable) {\n this.setHighlightBy(list, function (item) {\n return item.name === name;\n }, enable);\n };\n // 单个 item 设置状态\n ListHighlight.prototype.setItemState = function (list, item, enable) {\n var items = list.getItems();\n this.setHighlightBy(list, function (el) {\n return el === item;\n }, enable);\n };\n // 根据条件设置 highlight\n ListHighlight.prototype.setHighlightBy = function (list, callback, enable) {\n var items = list.getItems();\n if (enable) {\n // 设置 highlight 时,保留之前已经 Highlight 的项\n each(items, function (item) {\n if (callback(item)) {\n if (list.hasState(item, STATUS_UNACTIVE)) {\n list.setItemState(item, STATUS_UNACTIVE, false);\n }\n list.setItemState(item, STATUS_ACTIVE, true);\n } else if (!list.hasState(item, STATUS_ACTIVE)) {\n list.setItemState(item, STATUS_UNACTIVE, true);\n }\n });\n } else {\n var activeItems = list.getItemsByState(STATUS_ACTIVE);\n var allCancel_1 = true;\n // 检测 activeItems 是否要全部取消\n each(activeItems, function (item) {\n if (!callback(item)) {\n allCancel_1 = false;\n return false;\n }\n });\n if (allCancel_1) {\n this.clear();\n } else {\n // 如果不是都要取消 highlight, 则设置匹配的 element 的状态为 unactive\n // 其他 element 状态不变\n each(items, function (item) {\n if (callback(item)) {\n if (list.hasState(item, STATUS_ACTIVE)) {\n list.setItemState(item, STATUS_ACTIVE, false);\n }\n list.setItemState(item, STATUS_UNACTIVE, true);\n }\n });\n }\n }\n };\n /**\n * highlight 图例项(坐标轴文本)\n */\n ListHighlight.prototype.highlight = function () {\n this.setState();\n };\n // 需要全部清理 active 和 unactive\n ListHighlight.prototype.clear = function () {\n var triggerInfo = this.getTriggerListInfo();\n if (triggerInfo) {\n clearList(triggerInfo.list);\n } else {\n // 如果不是 component 的事件触发,则所有满足触发条件的组件都清除该状态\n var components = this.getAllowComponents();\n each(components, function (component) {\n component.clearItemsState(STATUS_ACTIVE);\n component.clearItemsState(STATUS_UNACTIVE);\n });\n }\n };\n return ListHighlight;\n}(ListState);\nexport default ListHighlight;","import { __extends } from \"tslib\";\nimport ListState from './list-state';\n/**\n * 图例项和坐标轴文本选中的 Action\n * @ignore\n */\nvar ListSelected = /** @class */function (_super) {\n __extends(ListSelected, _super);\n function ListSelected() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.stateName = 'selected';\n return _this;\n }\n ListSelected.prototype.selected = function () {\n this.setState();\n };\n return ListSelected;\n}(ListState);\nexport default ListSelected;","import { __extends } from \"tslib\";\nimport ListState from './list-state';\n/**\n * 图例项取消勾选的 Action\n * @ignore\n */\nvar ListUnchecked = /** @class */function (_super) {\n __extends(ListUnchecked, _super);\n function ListUnchecked() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.stateName = 'unchecked';\n return _this;\n }\n /**\n * 取消勾选\n */\n ListUnchecked.prototype.unchecked = function () {\n this.setState();\n };\n return ListUnchecked;\n}(ListState);\nexport default ListUnchecked;","import { __extends } from \"tslib\";\nimport { each, some } from '@antv/util';\nimport ListState from './list-state';\nvar STATUS_UNCHECKED = 'unchecked';\nvar STATUS_CHECKED = 'checked';\n/**\n * checked Action\n * 提供三个对外方法\n * 1. toggle 切换状态\n * 2. checked 选中\n * 3. reset 清除重置\n */\nvar ListChecked = /** @class */function (_super) {\n __extends(ListChecked, _super);\n function ListChecked() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.stateName = STATUS_CHECKED;\n return _this;\n }\n // 单个 item 设置状态\n ListChecked.prototype.setItemState = function (list, item, enable) {\n this.setCheckedBy(list, function (el) {\n return el === item;\n }, enable);\n };\n // 根据条件设置 checked\n ListChecked.prototype.setCheckedBy = function (list, callback, enable) {\n var items = list.getItems();\n if (enable) {\n // 设置 checked 时,保留之前已经 checked 的项\n each(items, function (item) {\n if (callback(item)) {\n if (list.hasState(item, STATUS_UNCHECKED)) {\n list.setItemState(item, STATUS_UNCHECKED, false);\n }\n list.setItemState(item, STATUS_CHECKED, true);\n } else if (!list.hasState(item, STATUS_CHECKED)) {\n list.setItemState(item, STATUS_UNCHECKED, true);\n }\n });\n }\n };\n /**\n * 切换状态.\n * 1. 当全部选中的时候 或者 当前 item 未选中时,进行激活操作\n * 2. 否则,重置\n * @override\n */\n ListChecked.prototype.toggle = function () {\n var triggerInfo = this.getTriggerListInfo();\n if (triggerInfo && triggerInfo.item) {\n var list_1 = triggerInfo.list,\n item = triggerInfo.item;\n // 不知道 🤷‍♀️ 只认 unchecked status\n var allChecked = !some(list_1.getItems(), function (t) {\n return list_1.hasState(t, STATUS_UNCHECKED);\n });\n //\n if (allChecked || list_1.hasState(item, STATUS_UNCHECKED)) {\n this.setItemState(list_1, item, true);\n } else {\n this.reset();\n }\n }\n };\n /**\n * checked 图例项\n */\n ListChecked.prototype.checked = function () {\n this.setState();\n };\n /**\n * 重置,需要全部清理 checked 和 unchecked\n */\n ListChecked.prototype.reset = function () {\n var components = this.getAllowComponents();\n each(components, function (component) {\n component.clearItemsState(STATUS_CHECKED);\n component.clearItemsState(STATUS_UNCHECKED);\n });\n };\n return ListChecked;\n}(ListState);\nexport default ListChecked;","import { __extends, __values } from \"tslib\";\nimport ListState from './list-state';\nvar STATUS_UNCHECKED = 'unchecked';\nvar ListFocus = /** @class */function (_super) {\n __extends(ListFocus, _super);\n function ListFocus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ListFocus.prototype.toggle = function () {\n var e_1, _a, e_2, _b, e_3, _c, e_4, _d;\n var triggerInfo = this.getTriggerListInfo();\n if (triggerInfo === null || triggerInfo === void 0 ? void 0 : triggerInfo.item) {\n var list_1 = triggerInfo.list,\n clickedItem = triggerInfo.item;\n var items = list_1.getItems();\n var checkedItems = items.filter(function (t) {\n return !list_1.hasState(t, STATUS_UNCHECKED);\n });\n var uncheckedItems = items.filter(function (t) {\n return list_1.hasState(t, STATUS_UNCHECKED);\n });\n var checkedItem = checkedItems[0];\n /**\n * 1. 初始化,全部 checked。此时,点击 radio, clickItem 进入聚焦\n * 2. 当前只选中一个\n * 2.1 且选中 item 等于 clickItem,退出聚焦,全部重新选中\n * 2.2 替换聚焦的 item\n * 3. 其它,同 2.2\n */\n if (items.length === checkedItems.length) {\n try {\n for (var items_1 = __values(items), items_1_1 = items_1.next(); !items_1_1.done; items_1_1 = items_1.next()) {\n var item = items_1_1.value;\n list_1.setItemState(item, STATUS_UNCHECKED, item.id !== clickedItem.id);\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (items_1_1 && !items_1_1.done && (_a = items_1.return)) _a.call(items_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n } else if (items.length - uncheckedItems.length === 1) {\n if (checkedItem.id === clickedItem.id) {\n try {\n for (var items_2 = __values(items), items_2_1 = items_2.next(); !items_2_1.done; items_2_1 = items_2.next()) {\n var item = items_2_1.value;\n list_1.setItemState(item, STATUS_UNCHECKED, false);\n }\n } catch (e_2_1) {\n e_2 = {\n error: e_2_1\n };\n } finally {\n try {\n if (items_2_1 && !items_2_1.done && (_b = items_2.return)) _b.call(items_2);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n } else {\n try {\n for (var items_3 = __values(items), items_3_1 = items_3.next(); !items_3_1.done; items_3_1 = items_3.next()) {\n var item = items_3_1.value;\n list_1.setItemState(item, STATUS_UNCHECKED, item.id !== clickedItem.id);\n }\n } catch (e_3_1) {\n e_3 = {\n error: e_3_1\n };\n } finally {\n try {\n if (items_3_1 && !items_3_1.done && (_c = items_3.return)) _c.call(items_3);\n } finally {\n if (e_3) throw e_3.error;\n }\n }\n }\n } else {\n try {\n for (var items_4 = __values(items), items_4_1 = items_4.next(); !items_4_1.done; items_4_1 = items_4.next()) {\n var item = items_4_1.value;\n list_1.setItemState(item, STATUS_UNCHECKED, item.id !== clickedItem.id);\n }\n } catch (e_4_1) {\n e_4 = {\n error: e_4_1\n };\n } finally {\n try {\n if (items_4_1 && !items_4_1.done && (_d = items_4.return)) _d.call(items_4);\n } finally {\n if (e_4) throw e_4.error;\n }\n }\n }\n }\n };\n return ListFocus;\n}(ListState);\nexport default ListFocus;","import { __assign, __extends } from \"tslib\";\nimport ListState from './list-state';\nimport { isEqual } from '@antv/util';\nimport { TOOLTIP_CSS_CONST } from '@antv/component';\nimport { HtmlTooltip } from '../../../dependents';\nvar STATUS_SHOW = 'showRadio';\nvar TIP_ID = 'legend-radio-tip';\nvar ListRadio = /** @class */function (_super) {\n __extends(ListRadio, _super);\n function ListRadio() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.timeStamp = 0;\n return _this;\n }\n ListRadio.prototype.show = function () {\n var triggerInfo = this.getTriggerListInfo();\n if (triggerInfo === null || triggerInfo === void 0 ? void 0 : triggerInfo.item) {\n var list = triggerInfo.list,\n item = triggerInfo.item;\n list.setItemState(item, STATUS_SHOW, true);\n }\n };\n ListRadio.prototype.hide = function () {\n var triggerInfo = this.getTriggerListInfo();\n if (triggerInfo === null || triggerInfo === void 0 ? void 0 : triggerInfo.item) {\n var list = triggerInfo.list,\n item = triggerInfo.item;\n list.setItemState(item, STATUS_SHOW, false);\n }\n };\n ListRadio.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.tooltip && this.tooltip.destroy();\n };\n /**\n * 显示 Tooltip (展示在上方)\n * @returns\n */\n ListRadio.prototype.showTip = function () {\n var context = this.context;\n var ev = context.event;\n var lastTimeStamp = this.timeStamp;\n var timeStamp = +new Date();\n var target = this.context.event.target;\n if (timeStamp - lastTimeStamp > 16 && target.get('name') === 'legend-item-radio') {\n var preLoc = this.location;\n var curLoc = {\n x: ev.x,\n y: ev.y\n };\n this.timeStamp = timeStamp;\n this.location = curLoc;\n if (!preLoc || !isEqual(preLoc, curLoc)) {\n this.showTooltip(curLoc);\n }\n }\n };\n /**\n * 隐藏 Tooltip。\n * @returns\n */\n ListRadio.prototype.hideTip = function () {\n this.hideTooltip();\n this.location = null;\n };\n ListRadio.prototype.showTooltip = function (curLoc) {\n var context = this.context;\n var ev = context.event;\n var target = ev.target;\n if (target && target.get('tip')) {\n if (!this.tooltip) {\n this.renderTooltip(); // 延迟生成\n }\n // 展示 tooltip\n var _a = context.view.getCanvas().get('el').getBoundingClientRect(),\n offsetX = _a.x,\n offsetY = _a.y;\n this.tooltip.update(__assign(__assign({\n title: target.get('tip')\n }, curLoc), {\n x: curLoc.x + offsetX,\n y: curLoc.y + offsetY\n }));\n this.tooltip.show();\n }\n };\n ListRadio.prototype.hideTooltip = function () {\n this.tooltip && this.tooltip.hide();\n };\n ListRadio.prototype.renderTooltip = function () {\n var _a;\n var tooltipStyles = (_a = {}, _a[TOOLTIP_CSS_CONST.CONTAINER_CLASS] = {\n padding: '6px 8px',\n transform: 'translate(-50%, -80%)',\n background: 'rgba(0,0,0,0.75)',\n color: '#fff',\n 'border-radius': '2px',\n // 避免遮挡,如果还不够的话,再考虑开放用户配置\n 'z-index': 100\n }, _a[TOOLTIP_CSS_CONST.TITLE_CLASS] = {\n 'font-size': '12px',\n 'line-height': '14px',\n 'margin-bottom': 0,\n 'word-break': 'break-all'\n }, _a);\n if (document.getElementById(TIP_ID)) {\n document.body.removeChild(document.getElementById(TIP_ID));\n }\n var tooltip = new HtmlTooltip({\n parent: document.body,\n // tooltip 限制的区域\n region: null,\n visible: false,\n crosshairs: null,\n domStyles: tooltipStyles,\n containerId: TIP_ID\n });\n tooltip.init();\n tooltip.setCapture(false); // 不允许捕获事件\n this.tooltip = tooltip;\n };\n return ListRadio;\n}(ListState);\nexport default ListRadio;","import { __assign, __extends } from \"tslib\";\nimport { deepMix, each } from '@antv/util';\nimport Action from '../base';\n/**\n * @ignore\n * 辅助框 Action 的基类\n */\nvar MaskBase = /** @class */function (_super) {\n __extends(MaskBase, _super);\n function MaskBase() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // mask 图形\n _this.maskShape = null;\n // 组成 mask 的各个点\n _this.points = [];\n // 开始 mask 的标记\n _this.starting = false;\n // 开始移动的标记\n _this.moving = false;\n _this.preMovePoint = null;\n _this.shapeType = 'path';\n return _this;\n }\n // 获取当前的位置\n MaskBase.prototype.getCurrentPoint = function () {\n var event = this.context.event;\n return {\n x: event.x,\n y: event.y\n };\n };\n // 触发 mask 的事件\n MaskBase.prototype.emitEvent = function (type) {\n var eventName = \"mask:\".concat(type);\n var view = this.context.view;\n var event = this.context.event;\n view.emit(eventName, {\n target: this.maskShape,\n shape: this.maskShape,\n points: this.points,\n x: event.x,\n y: event.y\n });\n };\n // 创建 mask\n MaskBase.prototype.createMask = function () {\n var view = this.context.view;\n var maskAttrs = this.getMaskAttrs();\n var maskShape = view.foregroundGroup.addShape({\n type: this.shapeType,\n name: 'mask',\n draggable: true,\n attrs: __assign({\n fill: '#C5D4EB',\n opacity: 0.3\n }, maskAttrs)\n });\n return maskShape;\n };\n // 生成 mask 的路径\n MaskBase.prototype.getMaskPath = function () {\n return [];\n };\n /**\n * 显示\n */\n MaskBase.prototype.show = function () {\n if (this.maskShape) {\n this.maskShape.show();\n this.emitEvent('show');\n }\n };\n /**\n * 开始\n */\n MaskBase.prototype.start = function (arg) {\n this.starting = true;\n // 开始时,保证移动结束\n this.moving = false;\n this.points = [this.getCurrentPoint()];\n if (!this.maskShape) {\n this.maskShape = this.createMask();\n // 开始时设置 capture: false,可以避免创建、resize 时触发事件\n this.maskShape.set('capture', false);\n }\n this.updateMask(arg === null || arg === void 0 ? void 0 : arg.maskStyle);\n this.emitEvent('start');\n };\n /**\n * 开始移动\n */\n MaskBase.prototype.moveStart = function () {\n this.moving = true;\n this.preMovePoint = this.getCurrentPoint();\n };\n /**\n * 移动 mask\n */\n MaskBase.prototype.move = function () {\n if (!this.moving || !this.maskShape) {\n return;\n }\n var currentPoint = this.getCurrentPoint();\n var preMovePoint = this.preMovePoint;\n var dx = currentPoint.x - preMovePoint.x;\n var dy = currentPoint.y - preMovePoint.y;\n var points = this.points;\n each(points, function (point) {\n point.x += dx;\n point.y += dy;\n });\n this.updateMask();\n this.emitEvent('change');\n this.preMovePoint = currentPoint;\n };\n MaskBase.prototype.updateMask = function (maskStyle) {\n var attrs = deepMix({}, this.getMaskAttrs(), maskStyle);\n this.maskShape.attr(attrs);\n };\n /**\n * 结束移动\n */\n MaskBase.prototype.moveEnd = function () {\n this.moving = false;\n this.preMovePoint = null;\n };\n /**\n * 结束\n */\n MaskBase.prototype.end = function () {\n this.starting = false;\n this.emitEvent('end');\n if (this.maskShape) {\n this.maskShape.set('capture', true);\n }\n };\n /**\n * 隐藏\n */\n MaskBase.prototype.hide = function () {\n if (this.maskShape) {\n this.maskShape.hide();\n this.emitEvent('hide');\n }\n };\n /**\n * 大小变化\n */\n MaskBase.prototype.resize = function () {\n // 只有进行中,才会允许大小变化\n if (this.starting && this.maskShape) {\n this.points.push(this.getCurrentPoint());\n this.updateMask();\n this.emitEvent('change');\n }\n };\n /**\n * 销毁\n */\n MaskBase.prototype.destroy = function () {\n this.points = [];\n if (this.maskShape) {\n this.maskShape.remove();\n }\n this.maskShape = null;\n this.preMovePoint = null;\n _super.prototype.destroy.call(this);\n };\n return MaskBase;\n}(Action);\nexport default MaskBase;","import { __extends } from \"tslib\";\nimport { last } from '@antv/util';\nimport { distance } from '../util';\nimport MaskBase from './base';\nexport function getMaskAttrs(points) {\n var currentPoint = last(points);\n var r = 0;\n var x = 0;\n var y = 0;\n if (points.length) {\n var first = points[0];\n r = distance(first, currentPoint) / 2;\n x = (currentPoint.x + first.x) / 2;\n y = (currentPoint.y + first.y) / 2;\n }\n return {\n x: x,\n y: y,\n r: r\n };\n}\n/**\n * @ignore\n * 圆形辅助框 Action\n */\nvar CircleMask = /** @class */function (_super) {\n __extends(CircleMask, _super);\n function CircleMask() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.shapeType = 'circle';\n return _this;\n }\n CircleMask.prototype.getMaskAttrs = function () {\n return getMaskAttrs(this.points);\n };\n return CircleMask;\n}(MaskBase);\nexport default CircleMask;","import { __extends } from \"tslib\";\nimport { head, last } from '@antv/util';\nimport MaskBase from './base';\nexport function getRegion(points) {\n return {\n start: head(points),\n end: last(points)\n };\n}\n/**\n * 添加图形\n * @param points\n * @returns\n */\nexport function getMaskAttrs(start, end) {\n var x = Math.min(start.x, end.x);\n var y = Math.min(start.y, end.y);\n var width = Math.abs(end.x - start.x);\n var height = Math.abs(end.y - start.y);\n return {\n x: x,\n y: y,\n width: width,\n height: height\n };\n}\n/**\n * @ignore\n * 矩形的辅助框 Action\n */\nvar RectMask = /** @class */function (_super) {\n __extends(RectMask, _super);\n function RectMask() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.shapeType = 'rect';\n return _this;\n }\n RectMask.prototype.getRegion = function () {\n return getRegion(this.points);\n };\n RectMask.prototype.getMaskAttrs = function () {\n var _a = this.getRegion(),\n start = _a.start,\n end = _a.end;\n return getMaskAttrs(start, end);\n };\n return RectMask;\n}(MaskBase);\nexport default RectMask;","import { __extends } from \"tslib\";\nimport { clamp, head, last } from '@antv/util';\nimport RectMask from './rect';\nfunction clampPoint(point) {\n point.x = clamp(point.x, 0, 1);\n point.y = clamp(point.y, 0, 1);\n}\nexport function getRegion(points, dim, inPlot, coord) {\n var start = null;\n var end = null;\n var normalStart = coord.invert(head(points));\n var normalEnd = coord.invert(last(points));\n if (inPlot) {\n // 约束到 0 - 1 范围内\n clampPoint(normalStart);\n clampPoint(normalEnd);\n }\n if (dim === 'x') {\n // x 轴方向扩展, y 轴方向占满全部\n start = coord.convert({\n x: normalStart.x,\n y: 0\n });\n end = coord.convert({\n x: normalEnd.x,\n y: 1\n });\n } else {\n // y 轴方向扩展, x 轴方向占满全部\n start = coord.convert({\n x: 0,\n y: normalStart.y\n });\n end = coord.convert({\n x: 1,\n y: normalEnd.y\n });\n }\n return {\n start: start,\n end: end\n };\n}\n/**\n * @ignore\n */\nvar DimRect = /** @class */function (_super) {\n __extends(DimRect, _super);\n function DimRect() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.dim = 'x';\n _this.inPlot = true;\n return _this;\n }\n DimRect.prototype.getRegion = function () {\n var coord = this.context.view.getCoordinate();\n return getRegion(this.points, this.dim, this.inPlot, coord);\n };\n return DimRect;\n}(RectMask);\nexport default DimRect;","import { __extends } from \"tslib\";\nimport { each } from '@antv/util';\nimport MaskBase from './base';\n/**\n * 生成 mask 的路径\n * @param points\n * @returns\n */\nexport function getMaskPath(points) {\n var path = [];\n if (points.length) {\n each(points, function (point, index) {\n if (index === 0) {\n path.push(['M', point.x, point.y]);\n } else {\n path.push(['L', point.x, point.y]);\n }\n });\n path.push(['L', points[0].x, points[0].y]);\n }\n return path;\n}\nexport function getMaskAttrs(points) {\n return {\n path: getMaskPath(points)\n };\n}\n/**\n * @ignore\n * 多个点构成的 Path 辅助框 Action\n */\nvar PathMask = /** @class */function (_super) {\n __extends(PathMask, _super);\n function PathMask() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PathMask.prototype.getMaskPath = function () {\n return getMaskPath(this.points);\n };\n PathMask.prototype.getMaskAttrs = function () {\n return getMaskAttrs(this.points);\n };\n /**\n * 添加一个点\n */\n PathMask.prototype.addPoint = function () {\n this.resize();\n };\n return PathMask;\n}(MaskBase);\nexport default PathMask;","import { __extends } from \"tslib\";\nimport { getSpline } from '../util';\nimport PathMask from './path';\n/**\n * 生成 mask 的路径\n * @param points\n * @returns\n */\nexport function getMaskPath(points) {\n return getSpline(points, true);\n}\nexport function getMaskAttrs(points) {\n return {\n path: getMaskPath(points)\n };\n}\n/**\n * Smooth path mask\n * @ignore\n */\nvar SmoothPathMask = /** @class */function (_super) {\n __extends(SmoothPathMask, _super);\n function SmoothPathMask() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SmoothPathMask.prototype.getMaskPath = function () {\n return getMaskPath(this.points);\n };\n SmoothPathMask.prototype.getMaskAttrs = function () {\n return getMaskAttrs(this.points);\n };\n return SmoothPathMask;\n}(PathMask);\nexport default SmoothPathMask;","import { __extends, __read } from \"tslib\";\nimport { Event } from '../../../chart';\nimport Action from '../base';\nimport { isMask } from '../util';\n// 获取对应的 scale\nfunction getFilter(scale, dim, point1, point2) {\n var min = Math.min(point1[dim], point2[dim]);\n var max = Math.max(point1[dim], point2[dim]);\n var _a = __read(scale.range, 2),\n rangeMin = _a[0],\n rangeMax = _a[1];\n // 约束值在 scale 的 range 之间\n if (min < rangeMin) {\n min = rangeMin;\n }\n if (max > rangeMax) {\n max = rangeMax;\n }\n // 范围大于整个 view 的范围,则返回 null\n if (min === rangeMax && max === rangeMax) {\n return null;\n }\n var minValue = scale.invert(min);\n var maxValue = scale.invert(max);\n if (scale.isCategory) {\n var minIndex = scale.values.indexOf(minValue);\n var maxIndex = scale.values.indexOf(maxValue);\n var arr_1 = scale.values.slice(minIndex, maxIndex + 1);\n return function (value) {\n return arr_1.includes(value);\n };\n } else {\n return function (value) {\n return value >= minValue && value <= maxValue;\n };\n }\n}\n/** range-filter 只用于:brush-filter, brush-x-filter, brush-y-filter */\nvar EVENTS;\n(function (EVENTS) {\n EVENTS[\"FILTER\"] = \"brush-filter-processing\";\n EVENTS[\"RESET\"] = \"brush-filter-reset\";\n EVENTS[\"BEFORE_FILTER\"] = \"brush-filter:beforefilter\";\n EVENTS[\"AFTER_FILTER\"] = \"brush-filter:afterfilter\";\n EVENTS[\"BEFORE_RESET\"] = \"brush-filter:beforereset\";\n EVENTS[\"AFTER_RESET\"] = \"brush-filter:afterreset\";\n})(EVENTS || (EVENTS = {}));\nexport { EVENTS as BRUSH_FILTER_EVENTS };\n/**\n * 范围过滤的 Action\n * @ignore\n */\nvar RangeFilter = /** @class */function (_super) {\n __extends(RangeFilter, _super);\n function RangeFilter() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * 范围过滤生效的字段/维度,可以是 x, y\n */\n _this.dims = ['x', 'y'];\n /** 起始点 */\n _this.startPoint = null;\n _this.isStarted = false;\n return _this;\n }\n // x,y 是否生效\n RangeFilter.prototype.hasDim = function (dim) {\n return this.dims.includes(dim);\n };\n /**\n * 开始范围过滤,记录范围过滤的起点\n */\n RangeFilter.prototype.start = function () {\n var context = this.context;\n this.isStarted = true;\n this.startPoint = context.getCurrentPoint();\n };\n /**\n * 过滤,以开始的点和当前点对数据进行过滤\n */\n RangeFilter.prototype.filter = function () {\n var startPoint;\n var currentPoint;\n if (isMask(this.context)) {\n var maskShape = this.context.event.target;\n var bbox = maskShape.getCanvasBBox();\n startPoint = {\n x: bbox.x,\n y: bbox.y\n };\n currentPoint = {\n x: bbox.maxX,\n y: bbox.maxY\n };\n } else {\n if (!this.isStarted) {\n // 如果没有开始,则不执行过滤\n return;\n }\n startPoint = this.startPoint;\n currentPoint = this.context.getCurrentPoint();\n }\n if (Math.abs(startPoint.x - currentPoint.x) < 5 || Math.abs(startPoint.x - currentPoint.y) < 5) {\n // 距离过小也不生效\n return;\n }\n var _a = this.context,\n view = _a.view,\n event = _a.event;\n var payload = {\n view: view,\n event: event,\n dims: this.dims\n };\n view.emit(EVENTS.BEFORE_FILTER, Event.fromData(view, EVENTS.BEFORE_FILTER, payload));\n var coord = view.getCoordinate();\n var normalCurrent = coord.invert(currentPoint);\n var normalStart = coord.invert(startPoint);\n // 设置 x 方向的 filter\n if (this.hasDim('x')) {\n var xScale = view.getXScale();\n var filter = getFilter(xScale, 'x', normalCurrent, normalStart);\n this.filterView(view, xScale.field, filter);\n }\n // 设置 y 方向的 filter\n if (this.hasDim('y')) {\n var yScale = view.getYScales()[0];\n var filter = getFilter(yScale, 'y', normalCurrent, normalStart);\n this.filterView(view, yScale.field, filter);\n }\n this.reRender(view, {\n source: EVENTS.FILTER\n });\n view.emit(EVENTS.AFTER_FILTER, Event.fromData(view, EVENTS.AFTER_FILTER, payload));\n };\n /**\n * 结束\n */\n RangeFilter.prototype.end = function () {\n this.isStarted = false;\n };\n /**\n * 取消同当前 Action 相关的过滤,指定的 x,y\n */\n RangeFilter.prototype.reset = function () {\n var view = this.context.view;\n view.emit(EVENTS.BEFORE_RESET, Event.fromData(view, EVENTS.BEFORE_RESET, {}));\n this.isStarted = false;\n if (this.hasDim('x')) {\n var xScale = view.getXScale();\n this.filterView(view, xScale.field, null); // 取消过滤\n }\n\n if (this.hasDim('y')) {\n // y 轴过滤仅取第一个 yScale\n var yScale = view.getYScales()[0];\n this.filterView(view, yScale.field, null); // 取消过滤\n }\n\n this.reRender(view, {\n source: EVENTS.RESET\n });\n view.emit(EVENTS.AFTER_RESET, Event.fromData(view, EVENTS.AFTER_RESET, {}));\n };\n /**\n * 对 view 进行过滤\n */\n RangeFilter.prototype.filterView = function (view, field, filter) {\n view.filter(field, filter);\n };\n /**\n * 重新渲染\n * @param view\n */\n RangeFilter.prototype.reRender = function (view, payload) {\n view.render(true, payload);\n };\n return RangeFilter;\n}(Action);\nexport default RangeFilter;","import { __assign, __extends, __read, __spreadArray } from \"tslib\";\nimport { deepMix } from '@antv/util';\nimport Action from '../../base';\n/**\n * @ignore\n * 辅助框 Action 的基类\n */\nvar MultipleMaskBase = /** @class */function (_super) {\n __extends(MultipleMaskBase, _super);\n function MultipleMaskBase() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // mask 图形\n _this.maskShapes = [];\n // 开始 mask 的标记\n _this.starting = false;\n // 开始移动的标记\n _this.moving = false;\n // 记录 mask 节点\n _this.recordPoints = null;\n _this.preMovePoint = null;\n _this.shapeType = 'path';\n _this.maskType = 'multi-mask';\n return _this;\n }\n /**\n * 获取当前的位置\n */\n MultipleMaskBase.prototype.getCurrentPoint = function () {\n var event = this.context.event;\n return {\n x: event.x,\n y: event.y\n };\n };\n /**\n * 触发 mask 的事件\n * @param type\n */\n MultipleMaskBase.prototype.emitEvent = function (type) {\n var eventName = \"\".concat(this.maskType, \":\").concat(type);\n var view = this.context.view;\n var event = this.context.event;\n var target = {\n type: this.shapeType,\n name: this.maskType,\n get: function get(key) {\n return target.hasOwnProperty(key) ? target[key] : undefined;\n }\n };\n view.emit(eventName, {\n target: target,\n maskShapes: this.maskShapes,\n multiPoints: this.recordPoints,\n x: event.x,\n y: event.y\n });\n };\n /**\n * 创建 mask\n * @param index\n */\n MultipleMaskBase.prototype.createMask = function (index) {\n var view = this.context.view;\n var points = this.recordPoints[index];\n var maskAttrs = this.getMaskAttrs(points);\n var maskShape = view.foregroundGroup.addShape({\n type: this.shapeType,\n name: 'mask',\n draggable: true,\n attrs: __assign({\n fill: '#C5D4EB',\n opacity: 0.3\n }, maskAttrs)\n });\n this.maskShapes.push(maskShape);\n };\n /**\n * 生成 mask 的路径\n */\n MultipleMaskBase.prototype.getMaskPath = function (points) {\n return [];\n };\n /**\n * 显示\n */\n MultipleMaskBase.prototype.show = function () {\n if (this.maskShapes.length > 0) {\n this.maskShapes.forEach(function (maskShape) {\n return maskShape.show();\n });\n this.emitEvent('show');\n }\n };\n /**\n * 开始\n */\n MultipleMaskBase.prototype.start = function (arg) {\n this.recordPointStart();\n this.starting = true;\n // 开始时,保证移动结束\n this.moving = false;\n // 开始第 index 个 mask\n var index = this.recordPoints.length - 1;\n this.createMask(index);\n // 开始时设置 capture: false,可以避免创建、resize 时触发事件\n this.updateShapesCapture(false);\n this.updateMask(arg === null || arg === void 0 ? void 0 : arg.maskStyle);\n this.emitEvent('start');\n };\n /**\n * 开始移动\n */\n MultipleMaskBase.prototype.moveStart = function () {\n this.moving = true;\n this.preMovePoint = this.getCurrentPoint();\n this.updateShapesCapture(false);\n };\n /**\n * 移动 mask\n */\n MultipleMaskBase.prototype.move = function () {\n if (!this.moving || this.maskShapes.length === 0) {\n return;\n }\n var currentPoint = this.getCurrentPoint();\n var preMovePoint = this.preMovePoint;\n var dx = currentPoint.x - preMovePoint.x;\n var dy = currentPoint.y - preMovePoint.y;\n // 只移动当前 event (x, y) 所在的某个 mask\n var index = this.getCurMaskShapeIndex();\n if (index > -1) {\n this.recordPoints[index].forEach(function (point) {\n point.x += dx;\n point.y += dy;\n });\n this.updateMask();\n this.emitEvent('change');\n this.preMovePoint = currentPoint;\n }\n };\n /**\n * 更新\n * @param maskStyle\n */\n MultipleMaskBase.prototype.updateMask = function (maskStyle) {\n var _this = this;\n this.recordPoints.forEach(function (points, index) {\n var attrs = deepMix({}, _this.getMaskAttrs(points), maskStyle);\n _this.maskShapes[index].attr(attrs);\n });\n };\n /**\n * 大小变化\n */\n MultipleMaskBase.prototype.resize = function () {\n if (this.starting && this.maskShapes.length > 0) {\n this.recordPointContinue();\n this.updateMask();\n this.emitEvent('change');\n }\n };\n /**\n * 结束移动\n */\n MultipleMaskBase.prototype.moveEnd = function () {\n this.moving = false;\n this.preMovePoint = null;\n this.updateShapesCapture(true);\n };\n /**\n * 结束\n */\n MultipleMaskBase.prototype.end = function () {\n this.starting = false;\n this.emitEvent('end');\n this.updateShapesCapture(true);\n };\n /**\n * 隐藏\n */\n MultipleMaskBase.prototype.hide = function () {\n if (this.maskShapes.length > 0) {\n this.maskShapes.forEach(function (maskShape) {\n return maskShape.hide();\n });\n this.emitEvent('hide');\n }\n };\n /**\n * 清除某个 mask\n */\n MultipleMaskBase.prototype.remove = function () {\n var index = this.getCurMaskShapeIndex();\n if (index > -1) {\n // event (x, y) 在的某个 mask 区域内时,清除该 mask\n this.recordPoints.splice(index, 1);\n this.maskShapes[index].remove();\n this.maskShapes.splice(index, 1);\n this.preMovePoint = null;\n this.updateShapesCapture(true);\n this.emitEvent('change');\n }\n };\n /**\n * 清除全部 mask\n */\n MultipleMaskBase.prototype.clearAll = function () {\n this.recordPointClear();\n this.maskShapes.forEach(function (maskShape) {\n return maskShape.remove();\n });\n this.maskShapes = [];\n this.preMovePoint = null;\n };\n /**\n * 清除\n */\n MultipleMaskBase.prototype.clear = function () {\n var index = this.getCurMaskShapeIndex();\n if (index === -1) {\n this.recordPointClear();\n this.maskShapes.forEach(function (maskShape) {\n return maskShape.remove();\n });\n this.maskShapes = [];\n this.emitEvent('clearAll');\n } else {\n this.recordPoints.splice(index, 1);\n this.maskShapes[index].remove();\n this.maskShapes.splice(index, 1);\n this.preMovePoint = null;\n this.emitEvent('clearSingle');\n }\n this.preMovePoint = null;\n };\n /**\n * 销毁\n */\n MultipleMaskBase.prototype.destroy = function () {\n this.clear();\n _super.prototype.destroy.call(this);\n };\n /**\n * 获取 mask 节点记录\n */\n MultipleMaskBase.prototype.getRecordPoints = function () {\n var _a;\n return __spreadArray([], __read((_a = this.recordPoints) !== null && _a !== void 0 ? _a : []), false);\n };\n /**\n * 创建 mask 节点记录\n */\n MultipleMaskBase.prototype.recordPointStart = function () {\n var recordPoints = this.getRecordPoints();\n var currentPoint = this.getCurrentPoint();\n this.recordPoints = __spreadArray(__spreadArray([], __read(recordPoints), false), [[currentPoint]], false);\n };\n /**\n * 持续记录 mask 节点\n */\n MultipleMaskBase.prototype.recordPointContinue = function () {\n var recordPoints = this.getRecordPoints();\n var currentPoint = this.getCurrentPoint();\n var lastPoints = recordPoints.splice(-1, 1)[0] || [];\n lastPoints.push(currentPoint);\n this.recordPoints = __spreadArray(__spreadArray([], __read(recordPoints), false), [lastPoints], false);\n };\n /**\n * 清除 mask 节点 记录\n */\n MultipleMaskBase.prototype.recordPointClear = function () {\n this.recordPoints = [];\n };\n /**\n * 设置 capture\n * false: 避免创建、resize 时触发事件\n * true: 正常触发其它事件\n * @param isCapture\n */\n MultipleMaskBase.prototype.updateShapesCapture = function (isCapture) {\n this.maskShapes.forEach(function (maskShape) {\n return maskShape.set('capture', isCapture);\n });\n };\n /**\n *\n * @returns 获取当前 event (x, y) 所在 maskShape 的 index\n */\n MultipleMaskBase.prototype.getCurMaskShapeIndex = function () {\n var currentPoint = this.getCurrentPoint();\n return this.maskShapes.findIndex(function (maskShape) {\n var _a = maskShape.attrs,\n width = _a.width,\n height = _a.height,\n r = _a.r;\n var isEmpty = width === 0 || height === 0 || r === 0;\n return !isEmpty && maskShape.isHit(currentPoint.x, currentPoint.y);\n });\n };\n return MultipleMaskBase;\n}(Action);\nexport default MultipleMaskBase;","import { __extends } from \"tslib\";\nimport MultipleMaskBase from './base';\nimport { getRegion, getMaskAttrs } from '../rect';\n/**\n * @ignore\n * 矩形的辅助框 Action\n */\nvar RectMultiMask = /** @class */function (_super) {\n __extends(RectMultiMask, _super);\n function RectMultiMask() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.shapeType = 'rect';\n return _this;\n }\n RectMultiMask.prototype.getRegion = function (points) {\n return getRegion(points);\n };\n RectMultiMask.prototype.getMaskAttrs = function (points) {\n var _a = this.getRegion(points),\n start = _a.start,\n end = _a.end;\n return getMaskAttrs(start, end);\n };\n return RectMultiMask;\n}(MultipleMaskBase);\nexport default RectMultiMask;","import { __extends } from \"tslib\";\nimport MultipleRectMask from './rect';\nimport { getRegion } from '../dim-rect';\n/**\n * @ignore\n */\nvar DimRectMultiMask = /** @class */function (_super) {\n __extends(DimRectMultiMask, _super);\n function DimRectMultiMask() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.dim = 'x';\n _this.inPlot = true;\n return _this;\n }\n DimRectMultiMask.prototype.getRegion = function (points) {\n var coord = this.context.view.getCoordinate();\n return getRegion(points, this.dim, this.inPlot, coord);\n };\n return DimRectMultiMask;\n}(MultipleRectMask);\nexport default DimRectMultiMask;","import { __extends } from \"tslib\";\nimport MultipleMaskBase from './base';\nimport { getMaskAttrs } from '../circle';\n/**\n * @ignore\n * 圆形辅助框 Action\n */\nvar CircleMultiMask = /** @class */function (_super) {\n __extends(CircleMultiMask, _super);\n function CircleMultiMask() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.shapeType = 'circle';\n _this.getMaskAttrs = getMaskAttrs;\n return _this;\n }\n return CircleMultiMask;\n}(MultipleMaskBase);\nexport default CircleMultiMask;","import { __extends } from \"tslib\";\nimport MultipleMaskBase from './base';\nimport { getMaskAttrs, getMaskPath } from '../path';\n/**\n * @ignore\n * 多个点构成的 Path 辅助框 Action\n */\nvar PathMultiMask = /** @class */function (_super) {\n __extends(PathMultiMask, _super);\n function PathMultiMask() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.getMaskPath = getMaskPath;\n _this.getMaskAttrs = getMaskAttrs;\n return _this;\n }\n PathMultiMask.prototype.addPoint = function () {\n this.resize();\n };\n return PathMultiMask;\n}(MultipleMaskBase);\nexport default PathMultiMask;","import { __extends } from \"tslib\";\nimport MultiplePathMask from './path';\nimport { getMaskPath, getMaskAttrs } from '../smooth-path';\n/**\n * Smooth path mask\n * @ignore\n */\nvar SmoothPathMultiMask = /** @class */function (_super) {\n __extends(SmoothPathMultiMask, _super);\n function SmoothPathMultiMask() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.getMaskPath = getMaskPath;\n _this.getMaskAttrs = getMaskAttrs;\n return _this;\n }\n return SmoothPathMultiMask;\n}(MultiplePathMask);\nexport default SmoothPathMultiMask;","import { __extends } from \"tslib\";\n/**\n * @fileoverview 设置画布的箭头,参看:https://www.w3school.com.cn/jsref/prop_style_cursor.asp\n * @author dxq613\n */\nimport Action from './base';\n/**\n * 鼠标形状的 Action\n * @ignore\n */\nvar CursorAction = /** @class */function (_super) {\n __extends(CursorAction, _super);\n function CursorAction() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n CursorAction.prototype.setCursor = function (cursor) {\n var view = this.context.view;\n view.getCanvas().setCursor(cursor);\n };\n /**\n * 默认光标(通常是一个箭头)\n */\n CursorAction.prototype.default = function () {\n this.setCursor('default');\n };\n /** 光标呈现为指示链接的指针(一只手) */\n CursorAction.prototype.pointer = function () {\n this.setCursor('pointer');\n };\n /** 此光标指示某对象可被移动。 */\n CursorAction.prototype.move = function () {\n this.setCursor('move');\n };\n /** 光标呈现为十字线。 */\n CursorAction.prototype.crosshair = function () {\n this.setCursor('crosshair');\n };\n /** 此光标指示程序正忙(通常是一只表或沙漏)。 */\n CursorAction.prototype.wait = function () {\n this.setCursor('wait');\n };\n /** 此光标指示可用的帮助(通常是一个问号或一个气球)。 */\n CursorAction.prototype.help = function () {\n this.setCursor('help');\n };\n /** 此光标指示文本。 */\n CursorAction.prototype.text = function () {\n this.setCursor('text');\n };\n /**\n * 此光标指示矩形框的边缘可被向右(东)移动。\n */\n CursorAction.prototype.eResize = function () {\n this.setCursor('e-resize');\n };\n /**\n * 此光标指示矩形框的边缘可被向左(西)移动。\n */\n CursorAction.prototype.wResize = function () {\n this.setCursor('w-resize');\n };\n /**\n * 此光标指示矩形框的边缘可被向上(北)移动。\n */\n CursorAction.prototype.nResize = function () {\n this.setCursor('n-resize');\n };\n /**\n * 此光标指示矩形框的边缘可被向下(南)移动。\n */\n CursorAction.prototype.sResize = function () {\n this.setCursor('s-resize');\n };\n /**\n * 光标指示可移动的方向 右上方(东北)\n */\n CursorAction.prototype.neResize = function () {\n this.setCursor('ne-resize');\n };\n /**\n * 光标指示可移动的方向 左上方(西北)\n */\n CursorAction.prototype.nwResize = function () {\n this.setCursor('nw-resize');\n };\n /**\n * 光标指示可移动的方向右下方(东南)\n */\n CursorAction.prototype.seResize = function () {\n this.setCursor('se-resize');\n };\n /**\n * 光标指示可移动的方向左下方(西南)\n */\n CursorAction.prototype.swResize = function () {\n this.setCursor('sw-resize');\n };\n /**\n * 光标指示可以在上下方向移动\n */\n CursorAction.prototype.nsResize = function () {\n this.setCursor('ns-resize');\n };\n /**\n * 光标指示可以在左右方向移动\n */\n CursorAction.prototype.ewResize = function () {\n this.setCursor('ew-resize');\n };\n /**\n * 光标显示可以被放大\n */\n CursorAction.prototype.zoomIn = function () {\n this.setCursor('zoom-in');\n };\n /**\n * 光标显示可以缩小尺寸\n */\n CursorAction.prototype.zoomOut = function () {\n this.setCursor('zoom-out');\n };\n return CursorAction;\n}(Action);\nexport default CursorAction;","import { __extends, __read } from \"tslib\";\nimport { each } from '@antv/util';\nimport Action from '../base';\nimport { getDelegationObject, getScaleByField, isList, isSlider } from '../util';\n/**\n * 数据过滤。\n * @ignore\n */\nvar DataFilter = /** @class */function (_super) {\n __extends(DataFilter, _super);\n function DataFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DataFilter.prototype.filterView = function (view, field, filter) {\n var _this = this;\n // 只有存在这个 scale 时才生效\n if (view.getScaleByField(field)) {\n view.filter(field, filter);\n }\n if (view.views && view.views.length) {\n each(view.views, function (subView) {\n _this.filterView(subView, field, filter);\n });\n }\n };\n /**\n * 过滤数据\n */\n DataFilter.prototype.filter = function () {\n var delegateObject = getDelegationObject(this.context);\n if (delegateObject) {\n var view = this.context.view;\n var component = delegateObject.component;\n var field = component.get('field');\n // 列表类的组件能够触发\n if (isList(delegateObject)) {\n if (field) {\n var unCheckedItems = component.getItemsByState('unchecked');\n var scale_1 = getScaleByField(view, field);\n var names_1 = unCheckedItems.map(function (item) {\n return item.name;\n });\n if (names_1.length) {\n this.filterView(view, field, function (value) {\n var text = scale_1.getText(value);\n return !names_1.includes(text);\n });\n } else {\n this.filterView(view, field, null);\n }\n view.render(true);\n }\n } else if (isSlider(delegateObject)) {\n var range = component.getValue();\n var _a = __read(range, 2),\n min_1 = _a[0],\n max_1 = _a[1];\n this.filterView(view, field, function (value) {\n return value >= min_1 && value <= max_1;\n });\n view.render(true);\n }\n }\n };\n return DataFilter;\n}(Action);\nexport default DataFilter;","import { __extends } from \"tslib\";\nimport { each } from '@antv/util';\nimport RangeFilter from './range-filter';\nimport { getSilbings } from '../util';\n/**\n * 数据范围过滤,但不在当前的 view 上生效,而在当前的 view 同一层级的其他 views 上生效,用于实现联动过滤。\n * @ignore\n */\nvar SiblingFilter = /** @class */function (_super) {\n __extends(SiblingFilter, _super);\n function SiblingFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * 对 view 进行过滤\n * @param view\n * @param field\n * @param filter\n */\n SiblingFilter.prototype.filterView = function (view, field, filter) {\n var siblings = getSilbings(view);\n each(siblings, function (sibling) {\n sibling.filter(field, filter);\n });\n };\n /**\n * 重新渲染\n * @param view\n */\n SiblingFilter.prototype.reRender = function (view) {\n var siblings = getSilbings(view);\n each(siblings, function (sibling) {\n sibling.render(true);\n });\n };\n return SiblingFilter;\n}(RangeFilter);\nexport default SiblingFilter;","import { __extends, __read } from \"tslib\";\nimport { each } from '@antv/util';\nimport Action from '../base';\nimport { getDelegationObject, getElements, getElementValue, getScaleByField, isList, isSlider, isMask, getMaskedElements } from '../util';\n/**\n * 元素过滤的 Action,控制元素的显示隐藏\n * @ignore\n */\nvar ElementFilter = /** @class */function (_super) {\n __extends(ElementFilter, _super);\n function ElementFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * 过滤\n */\n ElementFilter.prototype.filter = function () {\n var delegateObject = getDelegationObject(this.context);\n var view = this.context.view;\n var elements = getElements(view);\n if (isMask(this.context)) {\n var maskElements_1 = getMaskedElements(this.context, 10);\n if (maskElements_1) {\n each(elements, function (el) {\n if (maskElements_1.includes(el)) {\n el.show();\n } else {\n el.hide();\n }\n });\n }\n } else if (delegateObject) {\n var component = delegateObject.component;\n var field_1 = component.get('field');\n // 列表类的组件能够触发\n if (isList(delegateObject)) {\n if (field_1) {\n var unCheckedItems = component.getItemsByState('unchecked');\n var scale_1 = getScaleByField(view, field_1);\n var names_1 = unCheckedItems.map(function (item) {\n return item.name;\n });\n // 直接控制显示、隐藏\n each(elements, function (el) {\n var value = getElementValue(el, field_1);\n var text = scale_1.getText(value);\n if (names_1.indexOf(text) >= 0) {\n el.hide();\n } else {\n el.show();\n }\n });\n }\n } else if (isSlider(delegateObject)) {\n var range = component.getValue();\n var _a = __read(range, 2),\n min_1 = _a[0],\n max_1 = _a[1];\n each(elements, function (el) {\n var value = getElementValue(el, field_1);\n if (value >= min_1 && value <= max_1) {\n el.show();\n } else {\n el.hide();\n }\n });\n }\n }\n };\n /**\n * 清除过滤\n */\n ElementFilter.prototype.clear = function () {\n var elements = getElements(this.context.view);\n each(elements, function (el) {\n el.show();\n });\n };\n /**\n * 恢复发生的过滤,保持同 data-filter 命名的一致\n */\n ElementFilter.prototype.reset = function () {\n this.clear();\n };\n return ElementFilter;\n}(Action);\nexport default ElementFilter;","import { __extends } from \"tslib\";\nimport { each } from '@antv/util';\nimport Action from '../base';\nimport { getElements, getMaskedElements, getSiblingMaskElements, getSilbings, isInRecords, isMask } from '../util';\n/**\n * Sibling filter\n * @ignore\n */\nvar SiblingFilter = /** @class */function (_super) {\n __extends(SiblingFilter, _super);\n function SiblingFilter() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.byRecord = false;\n return _this;\n }\n /**\n * 过滤隐藏图形\n */\n SiblingFilter.prototype.filter = function () {\n // 仅考虑 mask 导致的过滤\n if (isMask(this.context)) {\n if (this.byRecord) {\n this.filterByRecord();\n } else {\n this.filterByBBox();\n }\n }\n };\n // 根据框选的记录来做过滤\n SiblingFilter.prototype.filterByRecord = function () {\n var view = this.context.view;\n var maskElements = getMaskedElements(this.context, 10);\n if (!maskElements) {\n return;\n }\n var xFiled = view.getXScale().field;\n var yField = view.getYScales()[0].field;\n var records = maskElements.map(function (el) {\n return el.getModel().data;\n });\n var siblings = getSilbings(view);\n each(siblings, function (sibling) {\n var elements = getElements(sibling);\n each(elements, function (el) {\n var record = el.getModel().data;\n // records.includes(record) 不生效,应该是数据的引用被改了\n if (isInRecords(records, record, xFiled, yField)) {\n el.show();\n } else {\n el.hide();\n }\n });\n });\n };\n // 根据被框选的包围盒做过滤\n SiblingFilter.prototype.filterByBBox = function () {\n var _this = this;\n var view = this.context.view;\n var siblings = getSilbings(view);\n each(siblings, function (sibling) {\n var maskElements = getSiblingMaskElements(_this.context, sibling, 10);\n var elements = getElements(sibling);\n if (maskElements) {\n // mask 过小时返回为 null,不能是空数组,否则同未框选到混淆\n each(elements, function (el) {\n if (maskElements.includes(el)) {\n el.show();\n } else {\n el.hide();\n }\n });\n }\n });\n };\n /**\n * 清理所有隐藏的图形\n */\n SiblingFilter.prototype.reset = function () {\n var siblings = getSilbings(this.context.view);\n each(siblings, function (sibling) {\n var elements = getElements(sibling);\n each(elements, function (el) {\n el.show();\n });\n });\n };\n return SiblingFilter;\n}(Action);\nexport default SiblingFilter;","import { __assign, __extends } from \"tslib\";\nimport { ext } from '@antv/matrix-util';\nimport { deepMix } from '@antv/util';\nimport { parsePadding } from '../../../util/padding';\nimport Action from '../base';\nvar PADDING_RIGHT = 10;\nvar PADDING_TOP = 5;\n/**\n * Button action\n * @ignore\n */\nvar ButtonAction = /** @class */function (_super) {\n __extends(ButtonAction, _super);\n function ButtonAction() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.buttonGroup = null;\n _this.buttonCfg = {\n name: 'button',\n text: 'button',\n textStyle: {\n x: 0,\n y: 0,\n fontSize: 12,\n fill: '#333333',\n cursor: 'pointer'\n },\n padding: [8, 10],\n style: {\n fill: '#f7f7f7',\n stroke: '#cccccc',\n cursor: 'pointer'\n },\n activeStyle: {\n fill: '#e6e6e6'\n }\n };\n return _this;\n }\n // mix 默认的配置和用户配置\n ButtonAction.prototype.getButtonCfg = function () {\n return deepMix(this.buttonCfg, this.cfg);\n };\n // 绘制 Button 和 文本\n ButtonAction.prototype.drawButton = function () {\n var config = this.getButtonCfg();\n var group = this.context.view.foregroundGroup.addGroup({\n name: config.name\n });\n // 添加文本\n var textShape = group.addShape({\n type: 'text',\n name: 'button-text',\n attrs: __assign({\n text: config.text\n }, config.textStyle)\n });\n var textBBox = textShape.getBBox();\n var padding = parsePadding(config.padding);\n // 添加背景按钮\n var buttonShape = group.addShape({\n type: 'rect',\n name: 'button-rect',\n attrs: __assign({\n x: textBBox.x - padding[3],\n y: textBBox.y - padding[0],\n width: textBBox.width + padding[1] + padding[3],\n height: textBBox.height + padding[0] + padding[2]\n }, config.style)\n });\n buttonShape.toBack(); // 在后面\n // active 效果内置\n group.on('mouseenter', function () {\n buttonShape.attr(config.activeStyle);\n });\n group.on('mouseleave', function () {\n buttonShape.attr(config.style);\n });\n this.buttonGroup = group;\n };\n // 重置位置\n ButtonAction.prototype.resetPosition = function () {\n var view = this.context.view;\n var coord = view.getCoordinate();\n var point = coord.convert({\n x: 1,\n y: 1\n }); // 后面直接改成左上角\n var buttonGroup = this.buttonGroup;\n var bbox = buttonGroup.getBBox();\n var matrix = ext.transform(null, [['t', point.x - bbox.width - PADDING_RIGHT, point.y + bbox.height + PADDING_TOP]]);\n buttonGroup.setMatrix(matrix);\n };\n /**\n * 显示\n */\n ButtonAction.prototype.show = function () {\n if (!this.buttonGroup) {\n this.drawButton();\n }\n this.resetPosition();\n this.buttonGroup.show();\n };\n /**\n * 隐藏\n */\n ButtonAction.prototype.hide = function () {\n if (this.buttonGroup) {\n this.buttonGroup.hide();\n }\n };\n /**\n * 销毁\n */\n ButtonAction.prototype.destroy = function () {\n var buttonGroup = this.buttonGroup;\n if (buttonGroup) {\n buttonGroup.remove();\n }\n _super.prototype.destroy.call(this);\n };\n return ButtonAction;\n}(Action);\nexport default ButtonAction;","import { __extends } from \"tslib\";\nimport Action from '../base';\nimport { distance } from '../util';\nvar DISTANCE = 4; // 移动的最小距离\n/**\n * @ignore\n * View 支持 Drag 的 Action\n */\nvar Drag = /** @class */function (_super) {\n __extends(Drag, _super);\n function Drag() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // Action 开始,不等同于 拖拽开始,需要判定移动的范围\n _this.starting = false;\n // 拖拽开始\n _this.dragStart = false;\n return _this;\n }\n /**\n * 开始\n */\n Drag.prototype.start = function () {\n this.starting = true;\n this.startPoint = this.context.getCurrentPoint();\n };\n /**\n * 拖拽\n */\n Drag.prototype.drag = function () {\n if (!this.startPoint) {\n return;\n }\n var current = this.context.getCurrentPoint();\n var view = this.context.view;\n var event = this.context.event;\n if (!this.dragStart) {\n if (distance(current, this.startPoint) > DISTANCE) {\n view.emit('dragstart', {\n target: event.target,\n x: event.x,\n y: event.y\n });\n this.dragStart = true;\n }\n } else {\n view.emit('drag', {\n target: event.target,\n x: event.x,\n y: event.y\n });\n }\n };\n /**\n * 结束\n */\n Drag.prototype.end = function () {\n if (this.dragStart) {\n var view = this.context.view;\n var event_1 = this.context.event;\n view.emit('dragend', {\n target: event_1.target,\n x: event_1.x,\n y: event_1.y\n });\n }\n this.starting = false;\n this.dragStart = false;\n };\n return Drag;\n}(Action);\nexport default Drag;","import { __extends } from \"tslib\";\nimport { ext } from '@antv/matrix-util';\nimport { Action } from '..';\nimport { distance } from '../util';\nvar MIN_DISTANCE = 5;\n/**\n * @ignore\n * View 移动的 Action\n */\nvar Move = /** @class */function (_super) {\n __extends(Move, _super);\n function Move() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.starting = false;\n _this.isMoving = false;\n // private cacheRange = null;\n _this.startPoint = null;\n _this.startMatrix = null;\n return _this;\n }\n /**\n * 开始移动\n */\n Move.prototype.start = function () {\n this.starting = true;\n this.startPoint = this.context.getCurrentPoint();\n // 缓存开始时的矩阵,防止反复拖拽\n this.startMatrix = this.context.view.middleGroup.getMatrix();\n };\n /**\n * 移动\n */\n Move.prototype.move = function () {\n if (!this.starting) {\n return;\n }\n var startPoint = this.startPoint;\n var currentPoint = this.context.getCurrentPoint();\n var d = distance(startPoint, currentPoint);\n if (d > MIN_DISTANCE && !this.isMoving) {\n this.isMoving = true;\n }\n if (this.isMoving) {\n var view = this.context.view;\n var matrix = ext.transform(this.startMatrix, [['t', currentPoint.x - startPoint.x, currentPoint.y - startPoint.y]]);\n view.backgroundGroup.setMatrix(matrix);\n view.foregroundGroup.setMatrix(matrix);\n view.middleGroup.setMatrix(matrix);\n }\n };\n /**\n * 结束移动\n */\n Move.prototype.end = function () {\n if (this.isMoving) {\n this.isMoving = false;\n }\n this.startMatrix = null;\n this.starting = false;\n this.startPoint = null;\n };\n /**\n * 回滚\n */\n Move.prototype.reset = function () {\n this.starting = false;\n this.startPoint = null;\n this.isMoving = false;\n var view = this.context.view;\n view.backgroundGroup.resetMatrix();\n view.foregroundGroup.resetMatrix();\n view.middleGroup.resetMatrix();\n this.isMoving = false;\n };\n return Move;\n}(Action);\nexport default Move;","import { __extends } from \"tslib\";\nimport { Action } from '..';\nvar DIM_X = 'x';\nvar DIM_Y = 'y';\n/**\n * Scale translate\n * @ignore\n */\nvar ScaleTranslate = /** @class */function (_super) {\n __extends(ScaleTranslate, _super);\n function ScaleTranslate() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.dims = [DIM_X, DIM_Y];\n _this.cfgFields = ['dims'];\n _this.cacheScaleDefs = {};\n return _this;\n }\n // 是否支持对应字段的平移\n ScaleTranslate.prototype.hasDim = function (dim) {\n return this.dims.includes(dim);\n };\n ScaleTranslate.prototype.getScale = function (dim) {\n var view = this.context.view;\n if (dim === 'x') {\n return view.getXScale();\n } else {\n return view.getYScales()[0];\n }\n };\n ScaleTranslate.prototype.resetDim = function (dim) {\n var view = this.context.view;\n if (this.hasDim(dim) && this.cacheScaleDefs[dim]) {\n var scale = this.getScale(dim);\n view.scale(scale.field, this.cacheScaleDefs[dim]);\n this.cacheScaleDefs[dim] = null;\n }\n };\n /**\n * 回滚\n */\n ScaleTranslate.prototype.reset = function () {\n this.resetDim(DIM_X);\n this.resetDim(DIM_Y);\n var view = this.context.view;\n view.render(true);\n };\n return ScaleTranslate;\n}(Action);\nexport default ScaleTranslate;","import { __extends } from \"tslib\";\nimport { each } from '@antv/util';\nimport TransformAction from './scale-transform';\n/**\n * 拖拽 Scale 的 Action\n * @ignore\n */\nvar ScaleTranslate = /** @class */function (_super) {\n __extends(ScaleTranslate, _super);\n function ScaleTranslate() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.startPoint = null;\n _this.starting = false;\n _this.startCache = {};\n return _this;\n }\n /**\n * 开始\n */\n ScaleTranslate.prototype.start = function () {\n var _this = this;\n this.startPoint = this.context.getCurrentPoint();\n this.starting = true;\n var dims = this.dims;\n each(dims, function (dim) {\n var scale = _this.getScale(dim);\n var min = scale.min,\n max = scale.max,\n values = scale.values;\n _this.startCache[dim] = {\n min: min,\n max: max,\n values: values\n };\n });\n };\n // 平移分类的度量\n // private translateCategory(dim, scale, normalPoint) {\n // }\n /**\n * 结束\n */\n ScaleTranslate.prototype.end = function () {\n this.startPoint = null;\n this.starting = false;\n this.startCache = {};\n };\n /**\n * 平移\n */\n ScaleTranslate.prototype.translate = function () {\n var _this = this;\n if (!this.starting) {\n return;\n }\n var startPoint = this.startPoint;\n var coord = this.context.view.getCoordinate();\n var currentPoint = this.context.getCurrentPoint();\n var normalStart = coord.invert(startPoint);\n var noramlCurrent = coord.invert(currentPoint);\n var dx = noramlCurrent.x - normalStart.x;\n var dy = noramlCurrent.y - normalStart.y;\n var view = this.context.view;\n var dims = this.dims;\n each(dims, function (dim) {\n _this.translateDim(dim, {\n x: dx * -1,\n y: dy * -1\n });\n });\n view.render(true);\n };\n // 平移度量\n ScaleTranslate.prototype.translateDim = function (dim, normalPoint) {\n if (this.hasDim(dim)) {\n var scale = this.getScale(dim);\n if (scale.isLinear) {\n this.translateLinear(dim, scale, normalPoint);\n }\n // else { // 暂时仅处理连续字段\n // this.translateCategory(dim, scale, normalPoint);\n // }\n }\n };\n // linear 度量平移\n ScaleTranslate.prototype.translateLinear = function (dim, scale, normalPoint) {\n var view = this.context.view;\n var _a = this.startCache[dim],\n min = _a.min,\n max = _a.max;\n var range = max - min;\n var d = normalPoint[dim] * range;\n // 只有第一次缓存,否则无法回滚\n if (!this.cacheScaleDefs[dim]) {\n this.cacheScaleDefs[dim] = {\n // @ts-ignore\n nice: scale.nice,\n min: min,\n max: max\n };\n }\n view.scale(scale.field, {\n // @ts-ignore\n nice: false,\n min: min + d,\n max: max + d\n });\n };\n // 平移分类的度量\n // private translateCategory(dim, scale, normalPoint) {\n // }\n /**\n * 回滚\n */\n ScaleTranslate.prototype.reset = function () {\n _super.prototype.reset.call(this);\n this.startPoint = null;\n this.starting = false;\n };\n return ScaleTranslate;\n}(TransformAction);\nexport default ScaleTranslate;","import { __extends } from \"tslib\";\nimport { each } from '@antv/util';\nimport TransformAction from './scale-transform';\n/**\n * 缩放 Scale 的 Action\n * @ignore\n */\nvar ScaleTranslate = /** @class */function (_super) {\n __extends(ScaleTranslate, _super);\n function ScaleTranslate() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.zoomRatio = 0.05;\n return _this;\n // 平移分类的度量\n // private translateCategory(dim, scale, normalPoint) {\n // }\n }\n /**\n * 缩小\n */\n ScaleTranslate.prototype.zoomIn = function () {\n this.zoom(this.zoomRatio);\n };\n ScaleTranslate.prototype.zoom = function (scale) {\n var _this = this;\n var dims = this.dims;\n each(dims, function (dim) {\n _this.zoomDim(dim, scale);\n });\n this.context.view.render(true);\n };\n /**\n * 放大\n */\n ScaleTranslate.prototype.zoomOut = function () {\n this.zoom(-1 * this.zoomRatio);\n };\n // 缩放度量\n ScaleTranslate.prototype.zoomDim = function (dim, dRatio) {\n if (this.hasDim(dim)) {\n var scale = this.getScale(dim);\n if (scale.isLinear) {\n this.zoomLinear(dim, scale, dRatio);\n }\n // else { // 暂时仅处理连续字段\n // this.zoomCategory(dim, scale, normalPoint);\n // }\n }\n };\n // linear 度量平移\n ScaleTranslate.prototype.zoomLinear = function (dim, scale, dRatio) {\n var view = this.context.view;\n // 只有第一次缓存,否则无法回滚\n if (!this.cacheScaleDefs[dim]) {\n this.cacheScaleDefs[dim] = {\n // @ts-ignore\n nice: scale.nice,\n min: scale.min,\n max: scale.max\n };\n }\n // 使用使用原始度量作为缩放标准\n var scaleDef = this.cacheScaleDefs[dim];\n var range = scaleDef.max - scaleDef.min;\n var min = scale.min,\n max = scale.max;\n var d = dRatio * range;\n var toMin = min - d;\n var toMax = max + d;\n var curRange = toMax - toMin;\n var scaled = curRange / range;\n if (toMax > toMin && scaled < 100 && scaled > 0.01) {\n view.scale(scale.field, {\n // @ts-ignore\n nice: false,\n min: min - d,\n max: max + d\n });\n }\n };\n return ScaleTranslate;\n}(TransformAction);\nexport default ScaleTranslate;","import { __extends } from \"tslib\";\nimport { clamp, size, valuesOfKey } from '@antv/util';\nimport { Action } from '..';\nfunction isWheelDown(event) {\n var wheelEvent = event.gEvent.originalEvent;\n return wheelEvent.deltaY > 0;\n}\nvar DEFAULT_WHEELDELTA = 1;\nvar MousewheelScroll = /** @class */function (_super) {\n __extends(MousewheelScroll, _super);\n function MousewheelScroll() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MousewheelScroll.prototype.scroll = function (arg) {\n var _a = this.context,\n view = _a.view,\n event = _a.event;\n if (!view.getOptions().scrollbar) {\n return;\n }\n var wheelDelta = (arg === null || arg === void 0 ? void 0 : arg.wheelDelta) || DEFAULT_WHEELDELTA;\n var scrollbarController = view.getController('scrollbar');\n var xScale = view.getXScale();\n var data = view.getOptions().data;\n var dataSize = size(valuesOfKey(data, xScale.field));\n var step = size(xScale.values);\n var currentRatio = scrollbarController.getValue();\n var currentStart = Math.floor((dataSize - step) * currentRatio);\n var nextStart = currentStart + (isWheelDown(event) ? wheelDelta : -wheelDelta);\n var correction = wheelDelta / (dataSize - step) / 10000;\n var nextRatio = clamp(nextStart / (dataSize - step) + correction, 0, 1);\n scrollbarController.setValue(nextRatio);\n };\n return MousewheelScroll;\n}(Action);\nexport default MousewheelScroll;","import { __assign, __extends } from \"tslib\";\nimport { TOOLTIP_CSS_CONST } from '@antv/component';\nimport { deepMix } from '@antv/util';\nimport { HtmlTooltip } from '../../../../dependents';\nimport Action from '../../base';\nimport { getDelegationObject } from '../../util';\nvar AXIS_DESCRIPTION_TOOLTIP = 'aixs-description-tooltip';\nvar AxisDescription = /** @class */function (_super) {\n __extends(AxisDescription, _super);\n function AxisDescription() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AxisDescription.prototype.show = function () {\n var context = this.context;\n var axis = getDelegationObject(context).axis;\n var _a = axis.cfg.title,\n description = _a.description,\n text = _a.text,\n descriptionTooltipStyle = _a.descriptionTooltipStyle;\n var _b = context.event,\n x = _b.x,\n y = _b.y;\n if (!this.tooltip) {\n this.renderTooltip();\n }\n this.tooltip.update({\n title: text || '',\n customContent: function customContent() {\n return \"\\n
          \\n
          \\n \\u5B57\\u6BB5\\u8BF4\\u660E\\uFF1A\").concat(description, \"\\n
          \\n
          \\n \");\n },\n x: x,\n y: y\n });\n this.tooltip.show();\n };\n AxisDescription.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.tooltip && this.tooltip.destroy();\n };\n AxisDescription.prototype.hide = function () {\n this.tooltip && this.tooltip.hide();\n };\n AxisDescription.prototype.renderTooltip = function () {\n var _a;\n var view = this.context.view;\n var canvas = view.canvas;\n var region = {\n start: {\n x: 0,\n y: 0\n },\n end: {\n x: canvas.get('width'),\n y: canvas.get('height')\n }\n };\n var tooltip = new HtmlTooltip({\n parent: canvas.get('el').parentNode,\n region: region,\n visible: false,\n containerId: AXIS_DESCRIPTION_TOOLTIP,\n domStyles: __assign({}, deepMix({}, (_a = {},\n // 超长的时候,tooltip tip 最大宽度为 50%,然后可以换行\n _a[TOOLTIP_CSS_CONST.CONTAINER_CLASS] = {\n 'max-width': '50%',\n padding: '10px',\n 'line-height': '15px',\n 'font-size': '12px',\n color: 'rgba(0, 0, 0, .65)'\n }, _a[TOOLTIP_CSS_CONST.TITLE_CLASS] = {\n 'word-break': 'break-all',\n 'margin-bottom': '3px'\n }, _a)))\n });\n tooltip.init();\n tooltip.setCapture(false);\n this.tooltip = tooltip;\n };\n return AxisDescription;\n}(Action);\nexport default AxisDescription;","// 注册黑暗主题\nimport { registerTheme } from './core';\nimport { antvDark } from './theme/style-sheet/dark';\nimport { createThemeByStyleSheet } from './theme/util/create-by-style-sheet';\nregisterTheme('dark', createThemeByStyleSheet(antvDark));\n// 注册 G 渲染引擎\nimport * as CanvasEngine from '@antv/g-canvas';\nimport * as SVGEngine from '@antv/g-svg';\nimport { registerEngine } from './core';\nregisterEngine('canvas', CanvasEngine);\nregisterEngine('svg', SVGEngine);\n// 注册 G2 内置的 geometry\nimport { registerGeometry } from './core';\nimport Area from './geometry/area';\nimport Edge from './geometry/edge';\nimport Heatmap from './geometry/heatmap';\nimport Interval from './geometry/interval';\nimport Line from './geometry/line';\nimport Path from './geometry/path';\nimport Point from './geometry/point';\nimport Polygon from './geometry/polygon';\nimport Schema from './geometry/schema';\nimport Violin from './geometry/violin';\nregisterGeometry('Polygon', Polygon);\nregisterGeometry('Interval', Interval);\nregisterGeometry('Schema', Schema);\nregisterGeometry('Path', Path);\nregisterGeometry('Point', Point);\nregisterGeometry('Line', Line);\nregisterGeometry('Area', Area);\nregisterGeometry('Edge', Edge);\nregisterGeometry('Heatmap', Heatmap);\nregisterGeometry('Violin', Violin);\n// 引入所有内置的 shapes\nimport './geometry/shape/area/line';\nimport './geometry/shape/area/smooth';\nimport './geometry/shape/area/smooth-line';\nimport './geometry/shape/edge/arc';\nimport './geometry/shape/edge/smooth';\nimport './geometry/shape/edge/vhv';\nimport './geometry/shape/interval/funnel';\nimport './geometry/shape/interval/hollow-rect';\nimport './geometry/shape/interval/line';\nimport './geometry/shape/interval/pyramid';\nimport './geometry/shape/interval/tick';\nimport './geometry/shape/line/step';\nimport './geometry/shape/point/hollow';\nimport './geometry/shape/point/image';\nimport './geometry/shape/point/solid';\nimport './geometry/shape/schema/box';\nimport './geometry/shape/schema/candle';\nimport './geometry/shape/polygon/square';\nimport './geometry/shape/violin/smooth';\nimport './geometry/shape/violin/hollow';\n// 注册 Geometry 内置的 label\nimport { registerGeometryLabel } from './core';\nimport GeometryLabel from './geometry/label/base';\nimport IntervalLabel from './geometry/label/interval';\nimport PieLabel from './geometry/label/pie';\nimport PolarLabel from './geometry/label/polar';\nregisterGeometryLabel('base', GeometryLabel);\nregisterGeometryLabel('interval', IntervalLabel);\nregisterGeometryLabel('pie', PieLabel);\nregisterGeometryLabel('polar', PolarLabel);\n// 注册 Geometry label 内置的布局函数\nimport { registerGeometryLabelLayout } from './core';\nimport { distribute } from './geometry/label/layout/pie/distribute';\nimport { pieOuterLabelLayout } from './geometry/label/layout/pie/outer';\nimport { pieSpiderLabelLayout } from './geometry/label/layout/pie/spider';\nimport { limitInCanvas } from './geometry/label/layout/limit-in-canvas';\nimport { limitInShape } from './geometry/label/layout/limit-in-shape';\nimport { fixedOverlap, overlap } from './geometry/label/layout/overlap';\nimport { hideOverlap } from './geometry/label/layout/hide-overlap';\nimport { adjustColor } from './geometry/label/layout/adjust-color';\nimport { intervalAdjustPosition } from './geometry/label/layout/interval/adjust-position';\nimport { intervalHideOverlap } from './geometry/label/layout/interval/hide-overlap';\nimport { pointAdjustPosition } from './geometry/label/layout/point/adjust-position';\nimport { pathAdjustPosition } from './geometry/label/layout/path/adjust-position';\nimport { limitInPlot } from './geometry/label/layout/limit-in-plot';\nregisterGeometryLabelLayout('overlap', overlap);\nregisterGeometryLabelLayout('distribute', distribute);\nregisterGeometryLabelLayout('fixed-overlap', fixedOverlap);\nregisterGeometryLabelLayout('hide-overlap', hideOverlap);\nregisterGeometryLabelLayout('limit-in-shape', limitInShape);\nregisterGeometryLabelLayout('limit-in-canvas', limitInCanvas);\nregisterGeometryLabelLayout('limit-in-plot', limitInPlot);\nregisterGeometryLabelLayout('pie-outer', pieOuterLabelLayout);\nregisterGeometryLabelLayout('adjust-color', adjustColor);\nregisterGeometryLabelLayout('interval-adjust-position', intervalAdjustPosition);\nregisterGeometryLabelLayout('interval-hide-overlap', intervalHideOverlap);\nregisterGeometryLabelLayout('point-adjust-position', pointAdjustPosition);\nregisterGeometryLabelLayout('pie-spider', pieSpiderLabelLayout);\nregisterGeometryLabelLayout('path-adjust-position', pathAdjustPosition);\n// 注册需要的动画执行函数\nimport { fadeIn, fadeOut } from './animate/animation/fade';\nimport { growInX, growInXY, growInY } from './animate/animation/grow-in';\nimport { pathIn } from './animate/animation/path-in';\nimport { positionUpdate } from './animate/animation/position-update';\nimport { scaleInX, scaleInY } from './animate/animation/scale-in';\nimport { sectorPathUpdate } from './animate/animation/sector-path-update';\nimport { waveIn } from './animate/animation/wave-in';\nimport { zoomIn, zoomOut } from './animate/animation/zoom';\nimport { registerAnimation } from './core';\nregisterAnimation('fade-in', fadeIn);\nregisterAnimation('fade-out', fadeOut);\nregisterAnimation('grow-in-x', growInX);\nregisterAnimation('grow-in-xy', growInXY);\nregisterAnimation('grow-in-y', growInY);\nregisterAnimation('scale-in-x', scaleInX);\nregisterAnimation('scale-in-y', scaleInY);\nregisterAnimation('wave-in', waveIn);\nregisterAnimation('zoom-in', zoomIn);\nregisterAnimation('zoom-out', zoomOut);\nregisterAnimation('position-update', positionUpdate);\nregisterAnimation('sector-path-update', sectorPathUpdate);\nregisterAnimation('path-in', pathIn);\n// 注册内置的 Facet\nimport { registerFacet } from './core';\nimport Circle from './facet/circle';\nimport List from './facet/list';\nimport Matrix from './facet/matrix';\nimport Mirror from './facet/mirror';\nimport Rect from './facet/rect';\nimport Tree from './facet/tree';\nregisterFacet('rect', Rect);\nregisterFacet('mirror', Mirror);\nregisterFacet('list', List);\nregisterFacet('matrix', Matrix);\nregisterFacet('circle', Circle);\nregisterFacet('tree', Tree);\n// 注册内置的 Component\nimport { registerComponentController } from './core';\nimport Annotation from './chart/controller/annotation';\nimport Axis from './chart/controller/axis';\nimport Legend from './chart/controller/legend';\nimport Slider from './chart/controller/slider';\nimport Tooltip from './chart/controller/tooltip';\nimport Scrollbar from './chart/controller/scrollbar';\n// register build-in components\nregisterComponentController('axis', Axis);\nregisterComponentController('legend', Legend);\nregisterComponentController('tooltip', Tooltip);\nregisterComponentController('annotation', Annotation);\nregisterComponentController('slider', Slider);\nregisterComponentController('scrollbar', Scrollbar);\n// 注册 Interaction Action\nimport { registerAction } from './core';\nimport ActiveRegion from './interaction/action/active-region';\nimport SiblingTooltip from './interaction/action/component/tooltip/sibling';\nimport TooltipAction from './interaction/action/component/tooltip/geometry';\nimport EllipsisTextAction from './interaction/action/component/tooltip/ellipsis-text';\nimport ElementActive from './interaction/action/element/active';\nimport ElementLinkByColor from './interaction/action/element/link-by-color';\nimport ElementRangeActive from './interaction/action/element/range-active';\nimport ElementSingleActive from './interaction/action/element/single-active';\nimport ElementHighlight from './interaction/action/element/highlight';\nimport ElementHighlightByColor from './interaction/action/element/highlight-by-color';\nimport ElementHighlightByX from './interaction/action/element/highlight-by-x';\nimport ElementRangeHighlight, { ELEMENT_RANGE_HIGHLIGHT_EVENTS } from './interaction/action/element/range-highlight';\nimport ElementSingleHighlight from './interaction/action/element/single-highlight';\nimport ElementRangeSelected from './interaction/action/element/range-selected';\nimport ElementSelected from './interaction/action/element/selected';\nimport ElementSingleSelected from './interaction/action/element/single-selected';\nimport ListActive from './interaction/action/component/list-active';\nimport ListHighlight from './interaction/action/component/list-highlight';\nimport ListSelected from './interaction/action/component/list-selected';\nimport ListUnchecked from './interaction/action/component/list-unchecked';\nimport ListChecked from './interaction/action/component/list-checked';\nimport ListFocus from './interaction/action/component/list-focus';\nimport ListRadio from './interaction/action/component/list-radio';\nimport CircleMask from './interaction/action/mask/circle';\nimport DimMask from './interaction/action/mask/dim-rect';\nimport PathMask from './interaction/action/mask/path';\nimport RectMask from './interaction/action/mask/rect';\nimport SmoothPathMask from './interaction/action/mask/smooth-path';\nimport RectMultiMask from './interaction/action/mask/multiple/rect';\nimport DimRectMultiMask from './interaction/action/mask/multiple/dim-rect';\nimport CircleMultiMask from './interaction/action/mask/multiple/circle';\nimport PathMultiMask from './interaction/action/mask/multiple/path';\nimport SmoothPathMultiMask from './interaction/action/mask/multiple/smooth-path';\nimport CursorAction from './interaction/action/cursor';\nimport DataFilter from './interaction/action/data/filter';\nimport DataRangeFilter, { BRUSH_FILTER_EVENTS } from './interaction/action/data/range-filter';\nimport SiblingFilter from './interaction/action/data/sibling-filter';\nimport ElementFilter from './interaction/action/element/filter';\nimport ElementSiblingFilter from './interaction/action/element/sibling-filter';\nimport ButtonAction from './interaction/action/view/button';\nimport ViewDrag from './interaction/action/view/drag';\nimport ViewMove from './interaction/action/view/move';\nimport ScaleTranslate from './interaction/action/view/scale-translate';\nimport ScaleZoom from './interaction/action/view/scale-zoom';\nimport MousewheelScroll from './interaction/action/view/mousewheel-scroll';\nimport AxisDescription from './interaction/action/component/axis/axis-description';\nregisterAction('tooltip', TooltipAction);\nregisterAction('sibling-tooltip', SiblingTooltip);\nregisterAction('ellipsis-text', EllipsisTextAction);\nregisterAction('element-active', ElementActive);\nregisterAction('element-single-active', ElementSingleActive);\nregisterAction('element-range-active', ElementRangeActive);\nregisterAction('element-highlight', ElementHighlight);\nregisterAction('element-highlight-by-x', ElementHighlightByX);\nregisterAction('element-highlight-by-color', ElementHighlightByColor);\nregisterAction('element-single-highlight', ElementSingleHighlight);\nregisterAction('element-range-highlight', ElementRangeHighlight);\nregisterAction('element-sibling-highlight', ElementRangeHighlight, {\n effectSiblings: true,\n effectByRecord: true\n});\nregisterAction('element-selected', ElementSelected);\nregisterAction('element-single-selected', ElementSingleSelected);\nregisterAction('element-range-selected', ElementRangeSelected);\nregisterAction('element-link-by-color', ElementLinkByColor);\nregisterAction('active-region', ActiveRegion);\nregisterAction('list-active', ListActive);\nregisterAction('list-selected', ListSelected);\nregisterAction('list-highlight', ListHighlight);\nregisterAction('list-unchecked', ListUnchecked);\nregisterAction('list-checked', ListChecked);\nregisterAction('list-focus', ListFocus);\nregisterAction('list-radio', ListRadio);\nregisterAction('legend-item-highlight', ListHighlight, {\n componentNames: ['legend']\n});\nregisterAction('axis-label-highlight', ListHighlight, {\n componentNames: ['axis']\n});\nregisterAction('axis-description', AxisDescription);\nregisterAction('rect-mask', RectMask);\nregisterAction('x-rect-mask', DimMask, {\n dim: 'x'\n});\nregisterAction('y-rect-mask', DimMask, {\n dim: 'y'\n});\nregisterAction('circle-mask', CircleMask);\nregisterAction('path-mask', PathMask);\nregisterAction('smooth-path-mask', SmoothPathMask);\nregisterAction('rect-multi-mask', RectMultiMask);\nregisterAction('x-rect-multi-mask', DimRectMultiMask, {\n dim: 'x'\n});\nregisterAction('y-rect-multi-mask', DimRectMultiMask, {\n dim: 'y'\n});\nregisterAction('circle-multi-mask', CircleMultiMask);\nregisterAction('path-multi-mask', PathMultiMask);\nregisterAction('smooth-path-multi-mask', SmoothPathMultiMask);\nregisterAction('cursor', CursorAction);\nregisterAction('data-filter', DataFilter);\nregisterAction('brush', DataRangeFilter);\nregisterAction('brush-x', DataRangeFilter, {\n dims: ['x']\n});\nregisterAction('brush-y', DataRangeFilter, {\n dims: ['y']\n});\nregisterAction('sibling-filter', SiblingFilter);\nregisterAction('sibling-x-filter', SiblingFilter, {\n dims: 'x'\n});\nregisterAction('sibling-y-filter', SiblingFilter, {\n dims: 'y'\n});\nregisterAction('element-filter', ElementFilter);\nregisterAction('element-sibling-filter', ElementSiblingFilter);\nregisterAction('element-sibling-filter-record', ElementSiblingFilter, {\n byRecord: true\n});\nregisterAction('view-drag', ViewDrag);\nregisterAction('view-move', ViewMove);\nregisterAction('scale-translate', ScaleTranslate);\nregisterAction('scale-zoom', ScaleZoom);\nregisterAction('reset-button', ButtonAction, {\n name: 'reset-button',\n text: 'reset'\n});\nregisterAction('mousewheel-scroll', MousewheelScroll);\n// 注册默认的 Interaction 交互行为\nimport { registerInteraction } from './core';\nimport { isMultipleMask } from './interaction/action/util';\nfunction isPointInView(context) {\n return context.isInPlot();\n}\n// 注册 tooltip 的 interaction\nregisterInteraction('tooltip', {\n start: [{\n trigger: 'plot:mousemove',\n action: 'tooltip:show',\n throttle: {\n wait: 50,\n leading: true,\n trailing: false\n }\n }, {\n trigger: 'plot:touchmove',\n action: 'tooltip:show',\n throttle: {\n wait: 50,\n leading: true,\n trailing: false\n }\n }],\n end: [{\n trigger: 'plot:mouseleave',\n action: 'tooltip:hide'\n }, {\n trigger: 'plot:leave',\n action: 'tooltip:hide'\n }, {\n trigger: 'plot:touchend',\n action: 'tooltip:hide'\n }]\n});\nregisterInteraction('ellipsis-text', {\n start: [{\n trigger: 'legend-item-name:mousemove',\n action: 'ellipsis-text:show',\n throttle: {\n wait: 50,\n leading: true,\n trailing: false\n }\n }, {\n trigger: 'legend-item-name:touchstart',\n action: 'ellipsis-text:show',\n throttle: {\n wait: 50,\n leading: true,\n trailing: false\n }\n }, {\n trigger: 'axis-label:mousemove',\n action: 'ellipsis-text:show',\n throttle: {\n wait: 50,\n leading: true,\n trailing: false\n }\n }, {\n trigger: 'axis-label:touchstart',\n action: 'ellipsis-text:show',\n throttle: {\n wait: 50,\n leading: true,\n trailing: false\n }\n }],\n end: [{\n trigger: 'legend-item-name:mouseleave',\n action: 'ellipsis-text:hide'\n }, {\n trigger: 'legend-item-name:touchend',\n action: 'ellipsis-text:hide'\n }, {\n trigger: 'axis-label:mouseleave',\n action: 'ellipsis-text:hide'\n }, {\n trigger: 'axis-label:mouseout',\n action: 'ellipsis-text:hide'\n }, {\n trigger: 'axis-label:touchend',\n action: 'ellipsis-text:hide'\n }]\n});\n// 移动到 element 上 active\nregisterInteraction('element-active', {\n start: [{\n trigger: 'element:mouseenter',\n action: 'element-active:active'\n }],\n end: [{\n trigger: 'element:mouseleave',\n action: 'element-active:reset'\n }]\n});\n// 点击选中,允许取消\nregisterInteraction('element-selected', {\n start: [{\n trigger: 'element:click',\n action: 'element-selected:toggle'\n }]\n});\n// hover highlight,允许取消\nregisterInteraction('element-highlight', {\n start: [{\n trigger: 'element:mouseenter',\n action: 'element-highlight:highlight'\n }],\n end: [{\n trigger: 'element:mouseleave',\n action: 'element-highlight:reset'\n }]\n});\n// hover highlight by x,允许取消\nregisterInteraction('element-highlight-by-x', {\n start: [{\n trigger: 'element:mouseenter',\n action: 'element-highlight-by-x:highlight'\n }],\n end: [{\n trigger: 'element:mouseleave',\n action: 'element-highlight-by-x:reset'\n }]\n});\n// hover highlight by y,允许取消\nregisterInteraction('element-highlight-by-color', {\n start: [{\n trigger: 'element:mouseenter',\n action: 'element-highlight-by-color:highlight'\n }],\n end: [{\n trigger: 'element:mouseleave',\n action: 'element-highlight-by-color:reset'\n }]\n});\n// legend hover,element active\nregisterInteraction('legend-active', {\n start: [{\n trigger: 'legend-item:mouseenter',\n action: ['list-active:active', 'element-active:active']\n }],\n end: [{\n trigger: 'legend-item:mouseleave',\n action: ['list-active:reset', 'element-active:reset']\n }]\n});\n// legend hover,element active\nregisterInteraction('legend-highlight', {\n start: [{\n trigger: 'legend-item:mouseenter',\n action: ['legend-item-highlight:highlight', 'element-highlight:highlight']\n }],\n end: [{\n trigger: 'legend-item:mouseleave',\n action: ['legend-item-highlight:reset', 'element-highlight:reset']\n }]\n});\n// legend hover,element active\nregisterInteraction('axis-label-highlight', {\n start: [{\n trigger: 'axis-label:mouseenter',\n action: ['axis-label-highlight:highlight', 'element-highlight:highlight']\n }],\n end: [{\n trigger: 'axis-label:mouseleave',\n action: ['axis-label-highlight:reset', 'element-highlight:reset']\n }]\n});\n// legend hover,element active\nregisterInteraction('element-list-highlight', {\n start: [{\n trigger: 'element:mouseenter',\n action: ['list-highlight:highlight', 'element-highlight:highlight']\n }],\n end: [{\n trigger: 'element:mouseleave',\n action: ['list-highlight:reset', 'element-highlight:reset']\n }]\n});\n// 框选\nregisterInteraction('element-range-highlight', {\n showEnable: [{\n trigger: 'plot:mouseenter',\n action: 'cursor:crosshair'\n }, {\n trigger: 'mask:mouseenter',\n action: 'cursor:move'\n }, {\n trigger: 'plot:mouseleave',\n action: 'cursor:default'\n }, {\n trigger: 'mask:mouseleave',\n action: 'cursor:crosshair'\n }],\n start: [{\n trigger: 'plot:mousedown',\n isEnable: function isEnable(context) {\n // 不要点击在 mask 上重新开始\n return !context.isInShape('mask');\n },\n action: ['rect-mask:start', 'rect-mask:show']\n }, {\n trigger: 'mask:dragstart',\n action: ['rect-mask:moveStart']\n }],\n processing: [{\n trigger: 'plot:mousemove',\n action: ['rect-mask:resize']\n }, {\n trigger: 'mask:drag',\n action: ['rect-mask:move']\n }, {\n trigger: 'mask:change',\n action: ['element-range-highlight:highlight']\n }],\n end: [{\n trigger: 'plot:mouseup',\n action: ['rect-mask:end']\n }, {\n trigger: 'mask:dragend',\n action: ['rect-mask:moveEnd']\n }, {\n trigger: 'document:mouseup',\n isEnable: function isEnable(context) {\n return !context.isInPlot();\n },\n action: ['element-range-highlight:clear', 'rect-mask:end', 'rect-mask:hide']\n }],\n rollback: [{\n trigger: 'dblclick',\n action: ['element-range-highlight:clear', 'rect-mask:hide']\n }]\n});\nregisterInteraction('brush', {\n showEnable: [{\n trigger: 'plot:mouseenter',\n action: 'cursor:crosshair'\n }, {\n trigger: 'plot:mouseleave',\n action: 'cursor:default'\n }],\n start: [{\n trigger: 'mousedown',\n isEnable: isPointInView,\n action: ['brush:start', 'rect-mask:start', 'rect-mask:show']\n }],\n processing: [{\n trigger: 'mousemove',\n isEnable: isPointInView,\n action: ['rect-mask:resize']\n }],\n end: [{\n trigger: 'mouseup',\n isEnable: isPointInView,\n action: ['brush:filter', 'brush:end', 'rect-mask:end', 'rect-mask:hide', 'reset-button:show']\n }],\n rollback: [{\n trigger: 'reset-button:click',\n action: ['brush:reset', 'reset-button:hide', 'cursor:crosshair']\n }]\n});\nregisterInteraction('brush-visible', {\n showEnable: [{\n trigger: 'plot:mouseenter',\n action: 'cursor:crosshair'\n }, {\n trigger: 'plot:mouseleave',\n action: 'cursor:default'\n }],\n start: [{\n trigger: 'plot:mousedown',\n action: ['rect-mask:start', 'rect-mask:show']\n }],\n processing: [{\n trigger: 'plot:mousemove',\n action: ['rect-mask:resize']\n }, {\n trigger: 'mask:change',\n action: ['element-range-highlight:highlight']\n }],\n end: [{\n trigger: 'plot:mouseup',\n action: ['rect-mask:end', 'rect-mask:hide', 'element-filter:filter', 'element-range-highlight:clear']\n }],\n rollback: [{\n trigger: 'dblclick',\n action: ['element-filter:clear']\n }]\n});\nregisterInteraction('brush-x', {\n showEnable: [{\n trigger: 'plot:mouseenter',\n action: 'cursor:crosshair'\n }, {\n trigger: 'plot:mouseleave',\n action: 'cursor:default'\n }],\n start: [{\n trigger: 'mousedown',\n isEnable: isPointInView,\n action: ['brush-x:start', 'x-rect-mask:start', 'x-rect-mask:show']\n }],\n processing: [{\n trigger: 'mousemove',\n isEnable: isPointInView,\n action: ['x-rect-mask:resize']\n }],\n end: [{\n trigger: 'mouseup',\n isEnable: isPointInView,\n action: ['brush-x:filter', 'brush-x:end', 'x-rect-mask:end', 'x-rect-mask:hide']\n }],\n rollback: [{\n trigger: 'dblclick',\n action: ['brush-x:reset']\n }]\n});\nregisterInteraction('element-path-highlight', {\n showEnable: [{\n trigger: 'plot:mouseenter',\n action: 'cursor:crosshair'\n }, {\n trigger: 'plot:mouseleave',\n action: 'cursor:default'\n }],\n start: [{\n trigger: 'mousedown',\n isEnable: isPointInView,\n action: 'path-mask:start'\n }, {\n trigger: 'mousedown',\n isEnable: isPointInView,\n action: 'path-mask:show'\n }],\n processing: [{\n trigger: 'mousemove',\n action: 'path-mask:addPoint'\n }],\n end: [{\n trigger: 'mouseup',\n action: 'path-mask:end'\n }],\n rollback: [{\n trigger: 'dblclick',\n action: 'path-mask:hide'\n }]\n});\nregisterInteraction('brush-x-multi', {\n showEnable: [{\n trigger: 'plot:mouseenter',\n action: 'cursor:crosshair'\n }, {\n trigger: 'mask:mouseenter',\n action: 'cursor:move'\n }, {\n trigger: 'plot:mouseleave',\n action: 'cursor:default'\n }, {\n trigger: 'mask:mouseleave',\n action: 'cursor:crosshair'\n }],\n start: [{\n trigger: 'mousedown',\n isEnable: isPointInView,\n action: ['x-rect-multi-mask:start', 'x-rect-multi-mask:show']\n }, {\n trigger: 'mask:dragstart',\n action: ['x-rect-multi-mask:moveStart']\n }],\n processing: [{\n trigger: 'mousemove',\n isEnable: function isEnable(context) {\n return !isMultipleMask(context);\n },\n action: ['x-rect-multi-mask:resize']\n }, {\n trigger: 'multi-mask:change',\n action: 'element-range-highlight:highlight'\n }, {\n trigger: 'mask:drag',\n action: ['x-rect-multi-mask:move']\n }],\n end: [{\n trigger: 'mouseup',\n action: ['x-rect-multi-mask:end']\n }, {\n trigger: 'mask:dragend',\n action: ['x-rect-multi-mask:moveEnd']\n }],\n rollback: [{\n trigger: 'dblclick',\n action: ['x-rect-multi-mask:clear', 'cursor:crosshair']\n }, {\n trigger: 'multi-mask:clearAll',\n action: ['element-range-highlight:clear']\n }, {\n trigger: 'multi-mask:clearSingle',\n action: ['element-range-highlight:highlight']\n }]\n});\n// 点击选中,允许取消\nregisterInteraction('element-single-selected', {\n start: [{\n trigger: 'element:click',\n action: 'element-single-selected:toggle'\n }]\n});\n// 筛选数据\nregisterInteraction('legend-filter', {\n showEnable: [{\n trigger: 'legend-item:mouseenter',\n action: ['cursor:pointer', 'list-radio:show']\n }, {\n trigger: 'legend-item:mouseleave',\n action: ['cursor:default', 'list-radio:hide']\n }],\n start: [{\n trigger: 'legend-item:click',\n isEnable: function isEnable(context) {\n return !context.isInShape('legend-item-radio');\n },\n action: ['legend-item-highlight:reset', 'element-highlight:reset', 'list-unchecked:toggle', 'data-filter:filter', 'list-radio:show']\n },\n // 正反选数据: 只有当 radio === truthy 的时候才会有 legend-item-radio 这个元素\n {\n trigger: 'legend-item-radio:mouseenter',\n action: ['list-radio:showTip']\n }, {\n trigger: 'legend-item-radio:mouseleave',\n action: ['list-radio:hideTip']\n }, {\n trigger: 'legend-item-radio:click',\n action: ['list-focus:toggle', 'data-filter:filter', 'list-radio:show']\n }]\n});\n// 筛选数据\nregisterInteraction('continuous-filter', {\n start: [{\n trigger: 'legend:valuechanged',\n action: 'data-filter:filter'\n }]\n});\n// 筛选数据\nregisterInteraction('continuous-visible-filter', {\n start: [{\n trigger: 'legend:valuechanged',\n action: 'element-filter:filter'\n }]\n});\n// 筛选图形\nregisterInteraction('legend-visible-filter', {\n showEnable: [{\n trigger: 'legend-item:mouseenter',\n action: 'cursor:pointer'\n }, {\n trigger: 'legend-item:mouseleave',\n action: 'cursor:default'\n }],\n start: [{\n trigger: 'legend-item:click',\n action: ['legend-item-highlight:reset', 'element-highlight:reset', 'list-unchecked:toggle', 'element-filter:filter']\n }]\n});\n// 出现背景框\nregisterInteraction('active-region', {\n start: [{\n trigger: 'plot:mousemove',\n action: 'active-region:show'\n }],\n end: [{\n trigger: 'plot:mouseleave',\n action: 'active-region:hide'\n }]\n});\n// 显示坐标轴标题详情信息\nregisterInteraction('axis-description', {\n start: [{\n trigger: 'axis-description:mousemove',\n action: 'axis-description:show'\n }],\n end: [{\n trigger: 'axis-description:mouseleave',\n action: 'axis-description:hide'\n }]\n});\nfunction isWheelDown(event) {\n event.gEvent.preventDefault();\n return event.gEvent.originalEvent.deltaY > 0;\n}\nregisterInteraction('view-zoom', {\n start: [{\n trigger: 'plot:mousewheel',\n isEnable: function isEnable(context) {\n return isWheelDown(context.event);\n },\n action: 'scale-zoom:zoomOut',\n throttle: {\n wait: 100,\n leading: true,\n trailing: false\n }\n }, {\n trigger: 'plot:mousewheel',\n isEnable: function isEnable(context) {\n return !isWheelDown(context.event);\n },\n action: 'scale-zoom:zoomIn',\n throttle: {\n wait: 100,\n leading: true,\n trailing: false\n }\n }]\n});\nregisterInteraction('sibling-tooltip', {\n start: [{\n trigger: 'plot:mousemove',\n action: 'sibling-tooltip:show'\n }],\n end: [{\n trigger: 'plot:mouseleave',\n action: 'sibling-tooltip:hide'\n }]\n});\nregisterInteraction('plot-mousewheel-scroll', {\n start: [{\n trigger: 'plot:mousewheel',\n action: 'mousewheel-scroll:scroll'\n }]\n});\n// 暴露一些常量\nexport { VIEW_LIFE_CIRCLE } from './constant';\n/** brush 范围筛选的一些事件常量 */\nexport { BRUSH_FILTER_EVENTS, ELEMENT_RANGE_HIGHLIGHT_EVENTS };\nexport * from './core';","import { __values } from \"tslib\";\nimport { isObject, each, find, get } from '@antv/util';\nimport { polarToCartesian } from '../../../../util/graphics';\n/** label text和line距离 4px */\nvar MARGIN = 4;\nfunction antiCollision(labelShapes, labels, lineHeight, plotRange, center, isRight) {\n var e_1, _a;\n // adjust y position of labels to avoid overlapping\n var overlapping = true;\n var start = plotRange.start;\n var end = plotRange.end;\n var startY = Math.min(start.y, end.y);\n var totalHeight = Math.abs(start.y - end.y);\n var i;\n var maxY = 0;\n var minY = Number.MIN_VALUE;\n var boxes = labels.map(function (label) {\n if (label.y > maxY) {\n maxY = label.y;\n }\n if (label.y < minY) {\n minY = label.y;\n }\n return {\n size: lineHeight,\n targets: [label.y - startY]\n };\n });\n minY -= startY;\n if (maxY - startY > totalHeight) {\n totalHeight = maxY - startY;\n }\n while (overlapping) {\n /* eslint no-loop-func: 0 */\n boxes.forEach(function (box) {\n var target = (Math.min.apply(minY, box.targets) + Math.max.apply(minY, box.targets)) / 2;\n box.pos = Math.min(Math.max(minY, target - box.size / 2), totalHeight - box.size);\n // box.pos = Math.max(0, target - box.size / 2);\n });\n // detect overlapping and join boxes\n overlapping = false;\n i = boxes.length;\n while (i--) {\n if (i > 0) {\n var previousBox = boxes[i - 1];\n var box = boxes[i];\n if (previousBox.pos + previousBox.size > box.pos) {\n // overlapping\n previousBox.size += box.size;\n previousBox.targets = previousBox.targets.concat(box.targets);\n // overflow, shift up\n if (previousBox.pos + previousBox.size > totalHeight) {\n previousBox.pos = totalHeight - previousBox.size;\n }\n boxes.splice(i, 1); // removing box\n overlapping = true;\n }\n }\n }\n }\n i = 0;\n // step 4: normalize y and adjust x\n boxes.forEach(function (b) {\n var posInCompositeBox = startY + lineHeight / 2; // middle of the label\n b.targets.forEach(function () {\n labels[i].y = b.pos + posInCompositeBox;\n posInCompositeBox += lineHeight;\n i++;\n });\n });\n var labelsMap = {};\n try {\n for (var labelShapes_1 = __values(labelShapes), labelShapes_1_1 = labelShapes_1.next(); !labelShapes_1_1.done; labelShapes_1_1 = labelShapes_1.next()) {\n var labelShape = labelShapes_1_1.value;\n labelsMap[labelShape.get('id')] = labelShape;\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (labelShapes_1_1 && !labelShapes_1_1.done && (_a = labelShapes_1.return)) _a.call(labelShapes_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n // (x - cx)^2 + (y - cy)^2 = totalR^2\n labels.forEach(function (label) {\n var rPow2 = label.r * label.r;\n var dyPow2 = Math.pow(Math.abs(label.y - center.y), 2);\n if (rPow2 < dyPow2) {\n label.x = center.x;\n } else {\n var dx = Math.sqrt(rPow2 - dyPow2);\n if (!isRight) {\n // left\n label.x = center.x - dx;\n } else {\n // right\n label.x = center.x + dx;\n }\n }\n // adjust labelShape\n var labelShape = labelsMap[label.id];\n labelShape.attr('x', label.x);\n labelShape.attr('y', label.y);\n // because group could not effect text-shape, should set text-shape position manually\n var textShape = find(labelShape.getChildren(), function (ele) {\n return ele.get('type') === 'text';\n });\n // @ts-ignore\n if (textShape) {\n textShape.attr('y', label.y);\n textShape.attr('x', label.x);\n }\n });\n}\nexport function distribute(items, labels, shapes, region) {\n if (!items.length || !labels.length) {\n return;\n }\n var offset = items[0] ? items[0].offset : 0;\n var coordinate = labels[0].get('coordinate');\n var radius = coordinate.getRadius();\n var center = coordinate.getCenter();\n if (offset > 0) {\n // const lineHeight = get(this.geometry.theme, ['pieLabels', 'labelHeight'], 14);\n var lineHeight_1 = 14; // TODO\n var totalR = radius + offset;\n var totalHeight_1 = totalR * 2 + lineHeight_1 * 2;\n var plotRange_1 = {\n start: coordinate.start,\n end: coordinate.end\n };\n // step 1: separate labels\n var halves_1 = [[], [] // right\n ];\n\n items.forEach(function (labelItem) {\n if (!labelItem) {\n return;\n }\n if (labelItem.textAlign === 'right') {\n // left\n halves_1[0].push(labelItem);\n } else {\n // right or center will be put on the right side\n halves_1[1].push(labelItem);\n }\n });\n halves_1.forEach(function (half, index) {\n // step 2: reduce labels\n var maxLabelsCountForOneSide = totalHeight_1 / lineHeight_1;\n if (half.length > maxLabelsCountForOneSide) {\n half.sort(function (a, b) {\n // sort by percentage DESC\n return b['..percent'] - a['..percent'];\n });\n half.splice(maxLabelsCountForOneSide, half.length - maxLabelsCountForOneSide);\n }\n // step 3: distribute position (x and y)\n half.sort(function (a, b) {\n // sort by y ASC\n return a.y - b.y;\n });\n antiCollision(labels, half, lineHeight_1, plotRange_1, center, index);\n });\n }\n // 配置 labelLine\n each(items, function (item) {\n if (item && item.labelLine) {\n var distance = item.offset;\n var angle = item.angle;\n // 贴近圆周\n var startPoint = polarToCartesian(center.x, center.y, radius, angle);\n var innerPoint = polarToCartesian(center.x, center.y, radius + distance / 2, angle);\n var itemX = item.x + get(item, 'offsetX', 0);\n var itemY = item.y + get(item, 'offsetY', 0);\n var endPoint = {\n x: itemX - Math.cos(angle) * MARGIN,\n y: itemY - Math.sin(angle) * MARGIN\n };\n if (!isObject(item.labelLine)) {\n // labelLine: true\n item.labelLine = {};\n }\n item.labelLine.path = [\"M \".concat(startPoint.x), \"\".concat(startPoint.y, \" Q\").concat(innerPoint.x), \"\".concat(innerPoint.y, \" \").concat(endPoint.x), endPoint.y].join(',');\n }\n });\n}","import { each } from '@antv/util';\n/**\n * @ignore\n * 根据图形元素以及 label 的 bbox 进行调整,如果 label 超出了 shape 的 bbox 则不展示\n */\nexport function limitInShape(items, labels, shapes, region) {\n each(labels, function (label, index) {\n var labelBBox = label.getCanvasBBox(); // 文本有可能发生旋转\n var shapeBBox = shapes[index].getBBox();\n if (labelBBox.minX < shapeBBox.minX || labelBBox.minY < shapeBBox.minY || labelBBox.maxX > shapeBBox.maxX || labelBBox.maxY > shapeBBox.maxY) {\n label.remove(true); // 超出则不展示\n }\n });\n}","import { each } from '@antv/util';\nimport { translate } from '../../../util/transform';\n/**\n * @ignore\n * 将 label 限制在画布范围内,简单得将超出画布的 label 往画布内调整\n * @param labels\n * @param cfg\n */\nexport function limitInCanvas(items, labels, shapes, region) {\n each(labels, function (label) {\n var regionMinX = region.minX,\n regionMinY = region.minY,\n regionMaxX = region.maxX,\n regionMaxY = region.maxY;\n var _a = label.getCanvasBBox(),\n minX = _a.minX,\n minY = _a.minY,\n maxX = _a.maxX,\n maxY = _a.maxY,\n x = _a.x,\n y = _a.y,\n width = _a.width,\n height = _a.height;\n var finalX = x;\n var finalY = y;\n if (minX < regionMinX || maxX < regionMinX) {\n // 超出左侧\n finalX = regionMinX;\n }\n if (minY < regionMinY || maxY < regionMinY) {\n // 超出顶部\n finalY = regionMinY;\n }\n if (minX > regionMaxX) {\n // 整体超出右侧\n finalX = regionMaxX - width;\n } else if (maxX > regionMaxX) {\n // 超出右侧\n finalX = finalX - (maxX - regionMaxX);\n }\n if (minY > regionMaxY) {\n // 整体超出顶部\n finalY = regionMaxY - height;\n } else if (maxY > regionMaxY) {\n // 超出底部\n finalY = finalY - (maxY - regionMaxY);\n }\n if (finalX !== x || finalY !== y) {\n translate(label, finalX - x, finalY - y);\n }\n });\n}","import { each, pick } from '@antv/util';\nimport { getCoordinateBBox } from '../../../util/coordinate';\nimport { getEllipsisText } from '../../../util/text';\nimport { translate } from '../../../util/transform';\n/**\n * @ignore\n * 将 label 限制在 Plot 范围内,将超出 Plot 范围的 label 可选择进行隐藏或者移动位置\n * @param labels\n * @param cfg\n */\nexport function limitInPlot(items, labels, shapes, region, cfg) {\n if (labels.length <= 0) {\n return;\n }\n var direction = (cfg === null || cfg === void 0 ? void 0 : cfg.direction) || ['top', 'right', 'bottom', 'left'];\n var action = (cfg === null || cfg === void 0 ? void 0 : cfg.action) || 'translate';\n var margin = (cfg === null || cfg === void 0 ? void 0 : cfg.margin) || 0;\n var coordinate = labels[0].get('coordinate');\n if (!coordinate) {\n return;\n }\n var _a = getCoordinateBBox(coordinate, margin),\n regionMinX = _a.minX,\n regionMinY = _a.minY,\n regionMaxX = _a.maxX,\n regionMaxY = _a.maxY;\n each(labels, function (label) {\n var _a = label.getCanvasBBox(),\n minX = _a.minX,\n minY = _a.minY,\n maxX = _a.maxX,\n maxY = _a.maxY,\n x = _a.x,\n y = _a.y,\n width = _a.width,\n height = _a.height;\n var finalX = x;\n var finalY = y;\n if (direction.indexOf('left') >= 0 && (minX < regionMinX || maxX < regionMinX)) {\n // 超出左侧\n finalX = regionMinX;\n }\n if (direction.indexOf('top') >= 0 && (minY < regionMinY || maxY < regionMinY)) {\n // 超出顶部\n finalY = regionMinY;\n }\n if (direction.indexOf('right') >= 0) {\n if (minX > regionMaxX) {\n // 整体超出右侧\n finalX = regionMaxX - width;\n } else if (maxX > regionMaxX) {\n // 超出右侧\n finalX = finalX - (maxX - regionMaxX);\n }\n }\n if (direction.indexOf('bottom') >= 0) {\n if (minY > regionMaxY) {\n // 整体超出底部\n finalY = regionMaxY - height;\n } else if (maxY > regionMaxY) {\n // 超出底部\n finalY = finalY - (maxY - regionMaxY);\n }\n }\n if (finalX !== x || finalY !== y) {\n var translateX_1 = finalX - x;\n if (action === 'translate') {\n translate(label, translateX_1, finalY - y);\n } else if (action === 'ellipsis') {\n var textShapes = label.findAll(function (shape) {\n return shape.get('type') === 'text';\n });\n textShapes.forEach(function (textShape) {\n var style = pick(textShape.attr(), ['fontSize', 'fontFamily', 'fontWeight', 'fontStyle', 'fontVariant']);\n var textBox = textShape.getCanvasBBox();\n var text = getEllipsisText(textShape.attr('text'), textBox.width - Math.abs(translateX_1), style);\n textShape.attr('text', text);\n });\n } else {\n label.hide();\n }\n }\n });\n}","import { BBox } from '../../../util/bbox';\nimport { isContrastColorWhite } from '../../../util/color';\nexport function adjustColor(items, labels, shapes) {\n if (shapes.length === 0) {\n return;\n }\n var element = shapes[0].get('element');\n var theme = element.geometry.theme;\n var _a = theme.labels || {},\n fillColorLight = _a.fillColorLight,\n fillColorDark = _a.fillColorDark;\n shapes.forEach(function (shape, index) {\n var label = labels[index];\n var textShape = label.find(function (el) {\n return el.get('type') === 'text';\n });\n var shapeBBox = BBox.fromObject(shape.getBBox());\n var textBBox = BBox.fromObject(textShape.getCanvasBBox());\n var overflow = !shapeBBox.contains(textBBox);\n var bgColor = shape.attr('fill');\n var fillWhite = isContrastColorWhite(bgColor);\n if (!overflow) {\n if (fillWhite) {\n if (fillColorLight) {\n textShape.attr('fill', fillColorLight);\n }\n } else {\n if (fillColorDark) {\n textShape.attr('fill', fillColorDark);\n }\n }\n } else {\n // 出现溢出直接应用 overflowLabel 样式\n textShape.attr(theme.overflowLabels.style);\n }\n });\n}","import { __read, __spreadArray } from \"tslib\";\nimport { each, groupBy, uniq, map, size } from '@antv/util';\nimport { checkShapeOverlap } from '../../util';\nfunction filterLabel(labels) {\n var MAX_CNT = 500; // 最多显示 500 个数据标签\n var filteredLabels = [];\n var pages = Math.max(Math.floor(labels.length / MAX_CNT), 1);\n each(labels, function (label, idx) {\n if (idx % pages === 0) {\n filteredLabels.push(label);\n } else {\n label.set('visible', false);\n }\n });\n return filteredLabels;\n}\n/**\n * 为 interval geometry 定制的数据标签重叠自动隐藏布局方法\n * @param items\n * @param labels\n * @param shapes\n */\nexport function intervalHideOverlap(items, labels, shapes) {\n var _a;\n if (shapes.length === 0) {\n return;\n }\n var element = (_a = shapes[0]) === null || _a === void 0 ? void 0 : _a.get('element');\n var geometry = element === null || element === void 0 ? void 0 : element.geometry;\n if (!geometry || geometry.type !== 'interval') {\n return;\n }\n var filteredLabels = filterLabel(labels);\n var _b = __read(geometry.getXYFields(), 1),\n xField = _b[0];\n var dones = [];\n var todo = [];\n var groupedLabels = groupBy(filteredLabels, function (label) {\n return label.get('data')[xField];\n });\n var xValues = uniq(map(filteredLabels, function (label) {\n return label.get('data')[xField];\n }));\n var xValue;\n filteredLabels.forEach(function (label) {\n label.set('visible', true);\n });\n var addCurrentGroup = function addCurrentGroup(curItems) {\n if (curItems) {\n if (curItems.length) {\n // 最后一个\n todo.push(curItems.pop());\n }\n todo.push.apply(todo, __spreadArray([], __read(curItems), false));\n }\n };\n if (size(xValues) > 0) {\n // 第一组\n xValue = xValues.shift();\n addCurrentGroup(groupedLabels[xValue]);\n }\n if (size(xValues) > 0) {\n // 最后一组\n xValue = xValues.pop();\n addCurrentGroup(groupedLabels[xValue]);\n }\n each(xValues.reverse(), function (val) {\n // 其他组\n addCurrentGroup(groupedLabels[val]);\n });\n while (todo.length > 0) {\n var cur = todo.shift();\n if (cur.get('visible')) {\n if (checkShapeOverlap(cur, dones)) {\n cur.set('visible', false);\n } else {\n dones.push(cur);\n }\n }\n }\n}","import { isNil } from '@antv/util';\n/**\n * @ignore\n * 单个 shape 动画\n * 渐现动画\n * @param shape 执行动画的图形元素\n * @param animateCfg 动画配置\n * @param cfg 额外信息\n */\nexport function fadeIn(shape, animateCfg, cfg) {\n var endState = {\n fillOpacity: isNil(shape.attr('fillOpacity')) ? 1 : shape.attr('fillOpacity'),\n strokeOpacity: isNil(shape.attr('strokeOpacity')) ? 1 : shape.attr('strokeOpacity'),\n opacity: isNil(shape.attr('opacity')) ? 1 : shape.attr('opacity')\n };\n shape.attr({\n fillOpacity: 0,\n strokeOpacity: 0,\n opacity: 0\n });\n shape.animate(endState, animateCfg);\n}\n/**\n * @ignore\n * 单个 shape 动画\n * 渐隐动画\n * @param shape 执行动画的图形元素\n * @param animateCfg 动画配置\n * @param cfg 额外信息\n */\nexport function fadeOut(shape, animateCfg, cfg) {\n var endState = {\n fillOpacity: 0,\n strokeOpacity: 0,\n opacity: 0\n };\n var easing = animateCfg.easing,\n duration = animateCfg.duration,\n delay = animateCfg.delay;\n shape.animate(endState, duration, easing, function () {\n shape.remove(true);\n }, delay);\n}","import { doScaleAnimate } from './util';\n/**\n * @ignore\n * 入场动画\n * x 方向的生长\n * @param element 执行动画的元素\n * @param animateCfg 动画配置\n * @param cfg 额外信息\n */\nexport function growInX(element, animateCfg, cfg) {\n var coordinate = cfg.coordinate,\n minYPoint = cfg.minYPoint;\n doScaleAnimate(element, animateCfg, coordinate, minYPoint, 'x');\n}\n/**\n * @ignore\n * 入场动画\n * y 轴方向上的生长\n * @param element 执行动画的元素\n * @param animateCfg 动画配置\n * @param cfg 额外信息\n */\nexport function growInY(element, animateCfg, cfg) {\n var coordinate = cfg.coordinate,\n minYPoint = cfg.minYPoint;\n doScaleAnimate(element, animateCfg, coordinate, minYPoint, 'y');\n}\n/**\n * @ignore\n * 入场\n * 中心点的向四周的生长动画\n * @param element 执行动画的元素\n * @param animateCfg 动画配置\n * @param cfg 额外信息\n */\nexport function growInXY(element, animateCfg, cfg) {\n var coordinate = cfg.coordinate,\n minYPoint = cfg.minYPoint;\n doScaleAnimate(element, animateCfg, coordinate, minYPoint, 'xy');\n}","import { ext } from '@antv/matrix-util';\n/**\n * @ignore\n * 沿着 x 方向放大的动画\n * @param shape\n * @param animateCfg\n * @param shapeModel\n */\nexport function scaleInX(shape, animateCfg, cfg) {\n var box = shape.getBBox();\n var mappingData = shape.get('origin').mappingData;\n var points = mappingData.points;\n // x 数值如果为负值,那么应该从右往左生长\n var x = points[0].y - points[1].y > 0 ? box.maxX : box.minX;\n var y = (box.minY + box.maxY) / 2;\n shape.applyToMatrix([x, y, 1]);\n var matrix = ext.transform(shape.getMatrix(), [['t', -x, -y], ['s', 0.01, 1], ['t', x, y]]);\n shape.setMatrix(matrix);\n shape.animate({\n matrix: ext.transform(shape.getMatrix(), [['t', -x, -y], ['s', 100, 1], ['t', x, y]])\n }, animateCfg);\n}\n/**\n * @ignore\n * 沿着 y 方向放大的动画\n * @param shape\n * @param animateCfg\n * @param shapeModel\n */\nexport function scaleInY(shape, animateCfg, cfg) {\n var box = shape.getBBox();\n var mappingData = shape.get('origin').mappingData;\n var x = (box.minX + box.maxX) / 2;\n var points = mappingData.points;\n // 数值如果为负值,那么应该从上往下生长,通过 shape 的关键点进行判断\n var y = points[0].y - points[1].y <= 0 ? box.maxY : box.minY;\n shape.applyToMatrix([x, y, 1]);\n var matrix = ext.transform(shape.getMatrix(), [['t', -x, -y], ['s', 1, 0.01], ['t', x, y]]);\n shape.setMatrix(matrix);\n shape.animate({\n matrix: ext.transform(shape.getMatrix(), [['t', -x, -y], ['s', 1, 100], ['t', x, y]])\n }, animateCfg);\n}","import { __assign } from \"tslib\";\nimport { isFunction } from '@antv/util';\nimport { getCoordinateClipCfg } from '../../util/coordinate';\n/**\n * @ignore\n * 整体动画\n * 划入入场动画效果\n * @todo 放两张直角坐标系和极坐标系的图\n * @param element 参与动画的图形元素\n * @param animateCfg 动画配置\n * @param cfg 额外信息\n */\nexport function waveIn(element, animateCfg, cfg) {\n var _a = getCoordinateClipCfg(cfg.coordinate, 20),\n type = _a.type,\n startState = _a.startState,\n endState = _a.endState; // 根据坐标系类型获取整体的剪切区域配置信息\n var clipShape = element.setClip({\n type: type,\n attrs: startState\n }); // 为 shape 设置剪切区域\n // 更新 动画 获取了 toAttrs 需要重新更新上去\n if (cfg.toAttrs) {\n element.attr(cfg.toAttrs);\n }\n // 对剪切图形做动画\n clipShape.animate(endState, __assign(__assign({}, animateCfg), {\n callback: function callback() {\n if (element && !element.get('destroyed')) {\n element.set('clipShape', null);\n }\n clipShape.remove(true); // 动画结束需要将剪切图形销毁\n isFunction(animateCfg.callback) && animateCfg.callback();\n }\n }));\n}","/**\n * @ignore\n * 坐标移动动画\n * @param shape 图形\n * @param animateCfg\n * @param cfg\n */\nexport function positionUpdate(shape, animateCfg, cfg) {\n var toAttrs = cfg.toAttrs;\n // @ts-ignore\n var x = toAttrs.x;\n // @ts-ignore\n var y = toAttrs.y;\n // @ts-ignore\n delete toAttrs.x;\n // @ts-ignore\n delete toAttrs.y;\n shape.attr(toAttrs);\n shape.animate({\n x: x,\n y: y\n }, animateCfg);\n}","/**\n * @ignore\n * 入场动画\n * path 的入场动画\n * @param element 执行动画的元素\n * @param animateCfg 动画配置\n * @param cfg 额外信息\n */\nexport function pathIn(element, animateCfg, cfg) {\n // @ts-ignore\n var length = element.getTotalLength();\n // 设置虚线样式\n element.attr('lineDash', [length]);\n element.animate(function (ratio) {\n return {\n // 对虚线偏移量做动画\n lineDashOffset: (1 - ratio) * length\n };\n }, animateCfg);\n}","/**\n * 需要从轴配置中提取出来作为 meta 的属性 key 列表\n */\nexport var AXIS_META_CONFIG_KEYS = ['type', 'alias', 'tickCount', 'tickInterval', 'min', 'max', 'nice', 'minLimit', 'maxLimit',\n// 坐标轴的范围\n'range', 'tickMethod',\n// type: 'log' 的底\n'base',\n// type: 'exp' 的指数\n'exponent',\n// time 类型的格式化\n'mask',\n// 是否同步\n'sync'];","/**\n * Simplified from https://github.com/zertosh/invariant.\n */\nimport { __spreadArray } from \"tslib\";\nexport var LEVEL;\n(function (LEVEL) {\n LEVEL[\"ERROR\"] = \"error\";\n LEVEL[\"WARN\"] = \"warn\";\n LEVEL[\"INFO\"] = \"log\";\n})(LEVEL || (LEVEL = {}));\nvar BRAND = 'AntV/G2Plot';\n/**\n * 获取错误消息\n * @param format\n * @param args\n */\nfunction getMessage(format) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var argIndex = 0;\n return \"\".concat(BRAND, \": \").concat(format.replace(/%s/g, function () {\n return \"\".concat(args[argIndex++]);\n }));\n}\n/**\n * invariant error\n * @param condition\n * @param format\n * @param args\n */\nexport function invariant(condition, format) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n if (!condition) {\n var error = new Error(getMessage.apply(void 0, __spreadArray([format], args, false)));\n error.name = BRAND;\n // error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n/**\n * 打印语句\n * @param level\n * @param condition\n * @param format\n * @param args\n */\nexport function log(level, condition, format) {\n var args = [];\n for (var _i = 3; _i < arguments.length; _i++) {\n args[_i - 3] = arguments[_i];\n }\n if (!condition) {\n console[level](getMessage.apply(void 0, __spreadArray([format], args, false)));\n }\n}","/**\n * 类似 lodash.pick 的方法\n * @param obj\n * @param keys\n */\nexport function pick(obj, keys) {\n var r = {};\n if (obj !== null && typeof obj === 'object') {\n keys.forEach(function (key) {\n var v = obj[key];\n if (v !== undefined) {\n r[key] = v;\n }\n });\n }\n return r;\n}","import { __assign } from \"tslib\";\nimport { filter, get, isNumber } from '@antv/util';\nimport { LEVEL, log } from './invariant';\nimport { pick } from './pick';\n/**\n * 查看数据是否是全负数、或者全正数\n * @param data\n * @param field\n */\nexport function adjustYMetaByZero(data, field) {\n if (!data) return {};\n // 过滤出数字数据\n var numberData = data.filter(function (datum) {\n var v = get(datum, [field]);\n return isNumber(v) && !isNaN(v);\n });\n var gtZero = numberData.every(function (datum) {\n return get(datum, [field]) >= 0;\n });\n var ltZero = numberData.every(function (datum) {\n return get(datum, [field]) <= 0;\n });\n // 目前是增量更新,对 { min: 0, max: undefined } 进行 update({ max: 0 }) 会得到 { min: 0, max: 0 }\n if (gtZero) {\n return {\n min: 0\n };\n }\n if (ltZero) {\n return {\n max: 0\n };\n }\n return {};\n}\n/**\n * 转换数据格式为带有节点与边的数据格式\n * @param data\n * @param sourceField\n * @param targetField\n * @param weightField\n * @param rawFields 存放一些原数据\n */\nexport function transformDataToNodeLinkData(data, sourceField, targetField, weightField, rawFields) {\n if (rawFields === void 0) {\n rawFields = [];\n }\n if (!Array.isArray(data)) {\n return {\n nodes: [],\n links: []\n };\n }\n // const nodes = [];\n var links = [];\n // 先使用对象方式存储\n var nodesMap = {};\n var nodesIndex = -1;\n // 数组变换成 chord layout 的数据结构\n data.forEach(function (datum) {\n var source = datum[sourceField];\n var target = datum[targetField];\n var weight = datum[weightField];\n var rawData = pick(datum, rawFields);\n // source node\n if (!nodesMap[source]) {\n nodesMap[source] = __assign({\n id: ++nodesIndex,\n name: source\n }, rawData);\n }\n if (!nodesMap[target]) {\n nodesMap[target] = __assign({\n id: ++nodesIndex,\n name: target\n }, rawData);\n }\n // links\n links.push(__assign({\n source: nodesMap[source].id,\n target: nodesMap[target].id,\n // sourceName: source,\n // targetName: target,\n value: weight\n }, rawData));\n });\n return {\n // 需要按照 id 的顺序\n nodes: Object.values(nodesMap).sort(function (a, b) {\n return a.id - b.id;\n }),\n links: links\n };\n}\n/**\n * 处理不合法的数据(过滤 非数值型 和 NaN,保留 null)\n * @param data\n * @param angleField\n */\nexport function processIllegalData(data, field) {\n var processData = filter(data, function (d) {\n var v = d[field];\n return v === null || typeof v === 'number' && !isNaN(v);\n });\n // 打印异常数据情况\n log(LEVEL.WARN, processData.length === data.length, 'illegal data existed in chart data.');\n return processData;\n}","var MAX_MIX_LEVEL = 5; // 最大比对层级\nvar toString = {}.toString;\n// 类型检测\nvar isType = function isType(value, type) {\n return toString.call(value) === '[object ' + type + ']';\n};\nvar isArray = function isArray(value) {\n return isType(value, 'Array');\n};\nvar isObjectLike = function isObjectLike(value) {\n /**\n * isObjectLike({}) => true\n * isObjectLike([1, 2, 3]) => true\n * isObjectLike(Function) => false\n */\n return typeof value === 'object' && value !== null;\n};\nvar isPlainObject = function isPlainObject(value) {\n /**\n * isObjectLike(new Foo) => false\n * isObjectLike([1, 2, 3]) => false\n * isObjectLike({ x: 0, y: 0 }) => true\n */\n if (!isObjectLike(value) || !isType(value, 'Object')) {\n return false;\n }\n var proto = value;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(value) === proto;\n};\n/***\n * @param {any} dist\n * @param {any} src\n * @param {number} level 当前层级\n * @param {number} maxLevel 最大层级\n */\nvar deep = function deep(dist, src, level, maxLevel) {\n level = level || 0;\n maxLevel = maxLevel || MAX_MIX_LEVEL;\n for (var key in src) {\n if (Object.prototype.hasOwnProperty.call(src, key)) {\n var value = src[key];\n if (!value) {\n // null 、 undefined 等情况直接赋值\n dist[key] = value;\n } else {\n if (isPlainObject(value)) {\n if (!isPlainObject(dist[key])) {\n dist[key] = {};\n }\n if (level < maxLevel) {\n deep(dist[key], value, level + 1, maxLevel);\n } else {\n // 层级过深直接赋值,性能问题\n dist[key] = src[key];\n }\n } else if (isArray(value)) {\n dist[key] = [];\n dist[key] = dist[key].concat(value);\n } else {\n dist[key] = value;\n }\n }\n }\n }\n};\n/**\n * deepAssign 功能类似 deepMix\n * 不同点在于 deepAssign 会将 null undefined 等类型直接覆盖给 source\n * 详细参考: __tests__/unit/utils/deep-assign-spec.ts\n */\nexport var deepAssign = function deepAssign(rst) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n for (var i = 0; i < args.length; i += 1) {\n deep(rst, args[i]);\n }\n return rst;\n};","var ctx;\n/**\n * 获取 canvas context\n */\nexport function getCanvasContext() {\n if (!ctx) {\n ctx = document.createElement('canvas').getContext('2d');\n }\n return ctx;\n}","/**\n * get the element's bounding size\n * @param ele dom element\n * @returns the element width and height\n */\nexport function getContainerSize(ele) {\n if (!ele) {\n return {\n width: 0,\n height: 0\n };\n }\n var style = getComputedStyle(ele);\n return {\n width: (ele.clientWidth || parseInt(style.width, 10)) - parseInt(style.paddingLeft, 10) - parseInt(style.paddingRight, 10),\n height: (ele.clientHeight || parseInt(style.height, 10)) - parseInt(style.paddingTop, 10) - parseInt(style.paddingBottom, 10)\n };\n}","/**\n * 类似 lodash.flow 的方法\n * @param flows\n */\nexport function flow() {\n var flows = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n flows[_i] = arguments[_i];\n }\n return function (param) {\n return flows.reduce(function (result, f) {\n return f(result);\n }, param);\n };\n}","import { get, reduce } from '@antv/util';\n/**\n * 在 View 中查找第一个指定 type 类型的 geometry\n * @param view\n * @param type\n */\nexport function findGeometry(view, type) {\n return view.geometries.find(function (g) {\n return g.type === type;\n });\n}\n/**\n * 获取 View 的 所有 elements\n */\nexport function getAllElements(view) {\n return reduce(view.geometries, function (r, geometry) {\n return r.concat(geometry.elements);\n }, []);\n}\n/**\n * 递归获取 View 的 所有 elements, 包括 View 的子 View\n */\nexport function getAllElementsRecursively(view) {\n if (get(view, ['views', 'length'], 0) <= 0) {\n return getAllElements(view);\n }\n return reduce(view.views, function (ele, subView) {\n return ele.concat(getAllElementsRecursively(subView));\n }, getAllElements(view));\n}\n/**\n * 递归获取 View 的 所有 geometries, 包括 View 的子 View\n */\nexport function getAllGeometriesRecursively(view) {\n if (get(view, ['views', 'length'], 0) <= 0) {\n return view.geometries;\n }\n return reduce(view.views, function (ele, subView) {\n return ele.concat(subView.geometries);\n }, view.geometries);\n}","import { __assign } from \"tslib\";\nimport { isType } from '@antv/util';\n/**\n * 兼容 v1 label formatter\n * @param labelOptions\n */\nexport function transformLabel(labelOptions) {\n if (!isType(labelOptions, 'Object')) {\n return labelOptions;\n }\n var label = __assign({}, labelOptions);\n if (label.formatter && !label.content) {\n label.content = label.formatter;\n }\n return label;\n}","import { __spreadArray } from \"tslib\";\nimport { isString, memoize, values } from '@antv/util';\nimport { getCanvasContext } from './context';\n/**\n * 计算文本在画布中的宽度\n * @param text 文本\n * @param font 字体\n */\nexport var measureTextWidth = memoize(function (text, font) {\n if (font === void 0) {\n font = {};\n }\n var fontSize = font.fontSize,\n _a = font.fontFamily,\n fontFamily = _a === void 0 ? 'sans-serif' : _a,\n fontWeight = font.fontWeight,\n fontStyle = font.fontStyle,\n fontVariant = font.fontVariant;\n var ctx = getCanvasContext();\n // @see https://developer.mozilla.org/zh-CN/docs/Web/CSS/font\n ctx.font = [fontStyle, fontWeight, fontVariant, \"\".concat(fontSize, \"px\"), fontFamily].join(' ');\n var metrics = ctx.measureText(isString(text) ? text : '');\n return metrics.width;\n}, function (text, font) {\n if (font === void 0) {\n font = {};\n }\n return __spreadArray([text], values(font), true).join('');\n});","/**\n * 是否真实的是数字\n * @param v\n */\nexport function isRealNumber(v) {\n return typeof v === 'number' && !isNaN(v);\n}\n/**\n * @ignore\n * Determines whether between is\n * @param value\n * @param start\n * @param end\n * @returns true if between\n */\nexport function isBetween(value, start, end) {\n var min = Math.min(start, end);\n var max = Math.max(start, end);\n return value >= min && value <= max;\n}","import { isArray, isNumber } from '@antv/util';\n/**\n * 把 padding 转换成统一的数组写法\n * @param padding\n */\nexport function normalPadding(padding) {\n if (isNumber(padding)) {\n return [padding, padding, padding, padding];\n }\n if (isArray(padding)) {\n var length_1 = padding.length;\n if (length_1 === 1) {\n return [padding[0], padding[0], padding[0], padding[0]];\n }\n if (length_1 === 2) {\n return [padding[0], padding[1], padding[0], padding[1]];\n }\n if (length_1 === 3) {\n return [padding[0], padding[1], padding[2], padding[1]];\n }\n if (length_1 === 4) {\n return padding;\n }\n }\n return [0, 0, 0, 0];\n}\n/**\n * 获取调整的 appendPadding\n */\nexport function getAdjustAppendPadding(padding, position, append) {\n if (position === void 0) {\n position = 'bottom';\n }\n if (append === void 0) {\n append = 25;\n }\n var currentAppendPadding = normalPadding(padding);\n var PADDING = [position.startsWith('top') ? append : 0, position.startsWith('right') ? append : 0, position.startsWith('bottom') ? append : 0, position.startsWith('left') ? append : 0];\n return [currentAppendPadding[0] + PADDING[0], currentAppendPadding[1] + PADDING[1], currentAppendPadding[2] + PADDING[2], currentAppendPadding[3] + PADDING[3]];\n}\n/**\n * 根据图表的 padding 和 appendPadding 计算出图表的最终 padding\n * @param array\n */\nexport function resolveAllPadding(paddings) {\n // 先把数组里的 padding 全部转换成 normal\n var normalPaddings = paddings.map(function (item) {\n return normalPadding(item);\n });\n var finalPadding = [0, 0, 0, 0];\n if (normalPaddings.length > 0) {\n finalPadding = finalPadding.map(function (item, index) {\n // 有几个 padding 数组就遍历几次,累加\n normalPaddings.forEach(function (d, i) {\n item += normalPaddings[i][index];\n });\n return item;\n });\n }\n return finalPadding;\n}","import { vec2 } from '@antv/matrix-util';\nexport function points2Path(points, isInCircle) {\n var path = [];\n if (points.length) {\n path.push(['M', points[0].x, points[0].y]);\n for (var i = 1, length_1 = points.length; i < length_1; i += 1) {\n var item = points[i];\n path.push(['L', item.x, item.y]);\n }\n if (isInCircle) {\n path.push(['Z']);\n }\n }\n return path;\n}\n/**\n * @ignore\n * 计算光滑的贝塞尔曲线\n */\nexport var smoothBezier = function smoothBezier(points, smooth, isLoop, constraint) {\n var cps = [];\n var prevPoint;\n var nextPoint;\n var hasConstraint = !!constraint;\n var min;\n var max;\n if (hasConstraint) {\n min = [Infinity, Infinity];\n max = [-Infinity, -Infinity];\n for (var i = 0, l = points.length; i < l; i++) {\n var point = points[i];\n min = vec2.min([0, 0], min, point);\n max = vec2.max([0, 0], max, point);\n }\n min = vec2.min([0, 0], min, constraint[0]);\n max = vec2.max([0, 0], max, constraint[1]);\n }\n for (var i = 0, len = points.length; i < len; i++) {\n var point = points[i];\n if (isLoop) {\n prevPoint = points[i ? i - 1 : len - 1];\n nextPoint = points[(i + 1) % len];\n } else {\n if (i === 0 || i === len - 1) {\n cps.push(point);\n continue;\n } else {\n prevPoint = points[i - 1];\n nextPoint = points[i + 1];\n }\n }\n var v = [0, 0];\n v = vec2.sub(v, nextPoint, prevPoint);\n v = vec2.scale(v, v, smooth);\n var d0 = vec2.distance(point, prevPoint);\n var d1 = vec2.distance(point, nextPoint);\n var sum = d0 + d1;\n if (sum !== 0) {\n d0 /= sum;\n d1 /= sum;\n }\n var v1 = vec2.scale([0, 0], v, -d0);\n var v2 = vec2.scale([0, 0], v, d1);\n var cp0 = vec2.add([0, 0], point, v1);\n var cp1 = vec2.add([0, 0], point, v2);\n if (hasConstraint) {\n cp0 = vec2.max([0, 0], cp0, min);\n cp0 = vec2.min([0, 0], cp0, max);\n cp1 = vec2.max([0, 0], cp1, min);\n cp1 = vec2.min([0, 0], cp1, max);\n }\n cps.push(cp0);\n cps.push(cp1);\n }\n if (isLoop) {\n cps.push(cps.shift());\n }\n return cps;\n};\n/**\n * @ignore\n * 贝塞尔曲线\n */\nexport function catmullRom2bezier(crp, z, constraint) {\n var isLoop = !!z;\n var pointList = [];\n for (var i = 0, l = crp.length; i < l; i += 2) {\n pointList.push([crp[i], crp[i + 1]]);\n }\n var controlPointList = smoothBezier(pointList, 0.4, isLoop, constraint);\n var len = pointList.length;\n var d1 = [];\n var cp1;\n var cp2;\n var p;\n for (var i = 0; i < len - 1; i++) {\n cp1 = controlPointList[i * 2];\n cp2 = controlPointList[i * 2 + 1];\n p = pointList[i + 1];\n d1.push(['C', cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1]]);\n }\n if (isLoop) {\n cp1 = controlPointList[len];\n cp2 = controlPointList[len + 1];\n p = pointList[0];\n d1.push(['C', cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1]]);\n }\n return d1;\n}\n/**\n * @ignore\n * 根据关键点获取限定了范围的平滑线\n */\nexport function getSplinePath(points, isInCircle, constaint) {\n var data = [];\n var first = points[0];\n var prePoint = null;\n if (points.length <= 2) {\n // 两点以内直接绘制成路径\n return points2Path(points, isInCircle);\n }\n for (var i = 0, len = points.length; i < len; i++) {\n var point = points[i];\n if (!prePoint || !(prePoint.x === point.x && prePoint.y === point.y)) {\n data.push(point.x);\n data.push(point.y);\n prePoint = point;\n }\n }\n var constraint = constaint || [\n // 范围\n [0, 0], [1, 1]];\n var splinePath = catmullRom2bezier(data, isInCircle, constraint);\n splinePath.unshift(['M', first.x, first.y]);\n return splinePath;\n}","/**\n * @desc simple kebabCase like lodash\n *\n * kebabCase('fooBar'); => 'foo-bar'\n */\nexport function kebabCase(word) {\n if (!word) {\n return word;\n }\n var result = word.match(/(([A-Z]{0,1}[a-z]*[^A-Z])|([A-Z]{1}))/g);\n return result.map(function (s) {\n return s.toLowerCase();\n }).join('-');\n}","import { __assign } from \"tslib\";\nimport { each, get, isFunction, isNumber, isString } from '@antv/util';\nimport { kebabCase } from './kebab-case';\nimport { pick } from './pick';\n/**\n * @desc 生成 html-statistic 的 style 字符串 (兼容 canvas 的 shapeStyle 到 css样式上)\n *\n * @param width\n * @param style\n */\nexport function adapteStyle(style) {\n var styleObject = {\n overflow: 'hidden',\n 'white-space': 'nowrap',\n 'text-overflow': 'ellipsis',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center'\n };\n var shapeStyleKeys = ['stroke', 'lineWidth', 'shadowColor', 'strokeOpacity', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY', 'fill'];\n // 兼容 shapeStyle 设置 · start\n if (get(style, 'fill')) {\n styleObject['color'] = style['fill'];\n }\n var _a = pick(style, shapeStyleKeys),\n shadowColor = _a.shadowColor,\n _b = _a.shadowBlur,\n shadowBlur = _b === void 0 ? 0 : _b,\n _c = _a.shadowOffsetX,\n shadowOffsetX = _c === void 0 ? 0 : _c,\n _d = _a.shadowOffsetY,\n shadowOffsetY = _d === void 0 ? 0 : _d;\n styleObject['text-shadow'] = \"\".concat([shadowColor, \"\".concat(shadowOffsetX, \"px\"), \"\".concat(shadowOffsetY, \"px\"), \"\".concat(shadowBlur, \"px\")].join(' '));\n var _e = pick(style, shapeStyleKeys),\n stroke = _e.stroke,\n _f = _e.lineWidth,\n lineWidth = _f === void 0 ? 0 : _f;\n styleObject['-webkit-text-stroke'] = \"\".concat([\"\".concat(lineWidth, \"px\"), stroke].join(' '));\n // 兼容 shapeStyle 设置 · end\n each(style, function (v, k) {\n // 兼容 shapeStyle 的 fontSize 没有单位\n if (['fontSize'].includes(k) && isNumber(v)) {\n styleObject[kebabCase(k)] = \"\".concat(v, \"px\");\n } else if (k && !shapeStyleKeys.includes(k)) {\n styleObject[kebabCase(k)] = \"\".concat(v);\n }\n });\n return styleObject;\n}\n/**\n * @desc 设置 html-statistic 容器的默认样式\n *\n * - 默认事件穿透\n */\nexport function setStatisticContainerStyle(container, style) {\n container.style['pointer-events'] = 'none';\n each(style, function (v, k) {\n if (k && v) {\n container.style[k] = v;\n }\n });\n}\n/**\n * 渲染环图 html-annotation(默认 position 居中 [50%, 50%])\n * @param chart\n * @param options\n * @param meta 字段元信息\n * @param {optional} datum 当前的元数据\n */\nexport var renderStatistic = function renderStatistic(chart, options, datum) {\n var statistic = options.statistic,\n plotType = options.plotType;\n var titleOpt = statistic.title,\n contentOpt = statistic.content;\n [titleOpt, contentOpt].forEach(function (option, idx) {\n if (!option) {\n return;\n }\n var transform = '';\n if (idx === 0) {\n transform = contentOpt ? 'translate(-50%, -100%)' : 'translate(-50%, -50%)';\n } else {\n transform = titleOpt ? 'translate(-50%, 0)' : 'translate(-50%, -50%)';\n }\n var style = isFunction(option.style) ? option.style(datum) : option.style;\n chart.annotation().html(__assign({\n position: ['50%', '50%'],\n html: function html(container, view) {\n var coordinate = view.getCoordinate();\n var containerW = 0;\n if (plotType === 'pie' || plotType === 'ring-progress') {\n containerW = coordinate.getRadius() * coordinate.innerRadius * 2;\n } else if (plotType === 'liquid') {\n var liquidShape = get(view.geometries, [0, 'elements', 0, 'shape']);\n if (liquidShape) {\n // 获取到水波图边框大小\n var path = liquidShape.find(function (t) {\n return t.get('name') === 'wrap';\n });\n var width = path.getCanvasBBox().width;\n containerW = width;\n }\n } else if (!containerW) {\n // 保底方案\n containerW = coordinate.getWidth();\n }\n setStatisticContainerStyle(container, __assign({\n width: \"\".concat(containerW, \"px\"),\n transform: transform\n }, adapteStyle(style)));\n var filteredData = view.getData();\n if (option.customHtml) {\n return option.customHtml(container, view, datum, filteredData);\n }\n var text = option.content;\n if (option.formatter) {\n text = option.formatter(datum, filteredData);\n }\n // todo G2 层修复可以返回空字符串 & G2 层修复允许返回非字符串的内容,比如数值 number\n return text ? isString(text) ? text : \"\".concat(text) : '
          ';\n },\n // @ts-ignore\n key: \"\".concat(idx === 0 ? 'top' : 'bottom', \"-statistic\")\n }, pick(option, ['offsetX', 'offsetY', 'rotate', 'style', 'formatter']) /** 透传配置 */));\n });\n};\n/**\n * 渲染 html-annotation for gauge (等不规则 plot), 默认 position 居中居底 [50%, 100%])\n * @param chart\n * @param options\n * @param meta 字段元信息\n * @param {optional} datum 当前的元数据\n */\nexport var renderGaugeStatistic = function renderGaugeStatistic(chart, options, datum) {\n var statistic = options.statistic;\n var titleOpt = statistic.title,\n contentOpt = statistic.content;\n [titleOpt, contentOpt].forEach(function (option) {\n if (!option) {\n return;\n }\n var style = isFunction(option.style) ? option.style(datum) : option.style;\n chart.annotation().html(__assign({\n position: ['50%', '100%'],\n html: function html(container, view) {\n var coordinate = view.getCoordinate();\n // 弧形的坐标\n var polarCoord = view.views[0].getCoordinate();\n var polarCenter = polarCoord.getCenter();\n var polarRadius = polarCoord.getRadius();\n var polarMaxY = Math.max(Math.sin(polarCoord.startAngle), Math.sin(polarCoord.endAngle)) * polarRadius;\n var offsetY = polarCenter.y + polarMaxY - coordinate.y.start - parseFloat(get(style, 'fontSize', 0));\n var containerWidth = coordinate.getRadius() * coordinate.innerRadius * 2;\n setStatisticContainerStyle(container, __assign({\n width: \"\".concat(containerWidth, \"px\"),\n transform: \"translate(-50%, \".concat(offsetY, \"px)\")\n }, adapteStyle(style)));\n var filteredData = view.getData();\n if (option.customHtml) {\n return option.customHtml(container, view, datum, filteredData);\n }\n var text = option.content;\n if (option.formatter) {\n text = option.formatter(datum, filteredData);\n }\n // todo G2 层修复可以返回空字符串 & G2 层修复允许返回非字符串的内容,比如数值 number\n return text ? isString(text) ? text : \"\".concat(text) : '
          ';\n }\n }, pick(option, ['offsetX', 'offsetY', 'rotate', 'style', 'formatter']) /** 透传配置 */));\n });\n};","import { reduce } from '@antv/util';\n/**\n * 简单的模板引擎,使用方式如下(空格自动忽略):\n * template('hello, {name}', { name: 'AntV' }); // hello, AntV\n * @param string\n * @param options\n */\nexport function template(source, data) {\n if (!data) {\n return source;\n }\n return reduce(\n // @ts-ignore\n data, function (r, v, k) {\n return r.replace(new RegExp(\"{\\\\s*\".concat(k, \"\\\\s*}\"), 'g'), v);\n }, source);\n}","import { each, isFunction } from '@antv/util';\n/**\n * 在 Chart 中查找特定 id 的子 View\n * @param chart\n * @param id\n */\nexport function findViewById(chart, id) {\n return chart.views.find(function (view) {\n return view.id === id;\n });\n}\n/**\n * 获取同 view 同一级的所有 views\n * @param view 当前 view\n * @returns 同一级的 views\n * @ignore\n */\nexport function getViews(view) {\n var parent = view.parent;\n return parent ? parent.views : [];\n}\n/**\n * 获取同 view 同一级的 views,不包括自身\n * @param view 当前 view\n * @returns 同一级的 views\n * @ignore\n */\nexport function getSiblingViews(view) {\n return getViews(view).filter(function (sub) {\n return sub !== view;\n });\n}\n/**\n * 所有的 Geometries 都使用同一动画(各个图形如有区别,自行覆盖)并添加处理动画回调\n * @param view View\n * @param animation 动画配置\n */\nexport function addViewAnimation(view, animation, geometries) {\n if (geometries === void 0) {\n geometries = view.geometries;\n }\n // 同时设置整个 view 动画选项\n if (typeof animation === 'boolean') {\n view.animate(animation);\n } else {\n view.animate(true);\n }\n // 所有的 Geometry 都使用同一动画(各个图形如有区别,自行覆盖)\n each(geometries, function (g) {\n var animationCfg;\n if (isFunction(animation)) {\n animationCfg = animation(g.type || g.shapeType, g) || true;\n } else {\n animationCfg = animation;\n }\n g.animate(animationCfg);\n });\n}","/**\n * 获取设备像素比\n */\nexport function getPixelRatio() {\n return typeof window === 'object' ? window === null || window === void 0 ? void 0 : window.devicePixelRatio : 2;\n}\n/**\n * 初始化 cavnas,设置宽高等\n */\nexport function initCanvas(width, height) {\n if (height === void 0) {\n height = width;\n }\n var canvas = document.createElement('canvas');\n var pixelRatio = getPixelRatio();\n // 画布尺寸\n canvas.width = width * pixelRatio;\n canvas.height = height * pixelRatio;\n // 显示尺寸\n canvas.style.width = \"\".concat(width, \"px\");\n canvas.style.height = \"\".concat(height, \"px\");\n var ctx = canvas.getContext('2d');\n ctx.scale(pixelRatio, pixelRatio);\n return canvas;\n}\n/**\n * 绘制背景\n *\n * @param context\n * @param cfg\n * @param width\n * @param height\n */\nexport function drawBackground(context, cfg, width, height) {\n if (height === void 0) {\n height = width;\n }\n var backgroundColor = cfg.backgroundColor,\n opacity = cfg.opacity;\n context.globalAlpha = opacity;\n context.fillStyle = backgroundColor;\n context.beginPath();\n context.fillRect(0, 0, width, height);\n context.closePath();\n}\n/**\n * 计算贴图单元大小\n *\n * @param size 元素大小\n * @param padding 圆点间隔\n * @param isStagger 是否交错\n * @reutrn 返回贴图单元大小\n */\nexport function getUnitPatternSize(size, padding, isStagger) {\n // 如果交错, unitSize 放大两倍\n var unitSize = size + padding;\n return isStagger ? unitSize * 2 : unitSize;\n}\n/**\n * 计算有交错情况的元素坐标\n *\n * @param unitSize 贴图单元大小\n * @param isStagger 是否交错\n * @reutrn 元素中心坐标 x,y 数组集合\n */\nexport function getSymbolsPosition(unitSize, isStagger) {\n // 如果交错, 交错绘制 dot\n var symbolsPos = isStagger ? [[unitSize * (1 / 4), unitSize * (1 / 4)], [unitSize * (3 / 4), unitSize * (3 / 4)]] : [[unitSize * (1 / 2), unitSize * (1 / 2)]];\n return symbolsPos;\n}\n/**\n * 给整个 pattern贴图 做变换, 目前支持旋转\n *\n * @param pattern 整个贴图\n * @param dpr 设备像素比\n * @param rotation 旋转角度\n */\nexport function transformMatrix(dpr, rotation) {\n var radian = rotation * Math.PI / 180;\n var matrix = {\n a: Math.cos(radian) * (1 / dpr),\n b: Math.sin(radian) * (1 / dpr),\n c: -Math.sin(radian) * (1 / dpr),\n d: Math.cos(radian) * (1 / dpr),\n e: 0,\n f: 0\n };\n return matrix;\n}","import { deepAssign } from '../../utils';\nimport { drawBackground, getPixelRatio, getSymbolsPosition, getUnitPatternSize, initCanvas, transformMatrix } from './util';\n/**\n * dotPattern的默认配置\n */\nexport var defaultDotPatternCfg = {\n size: 6,\n padding: 2,\n backgroundColor: 'transparent',\n opacity: 1,\n rotation: 0,\n fill: '#fff',\n fillOpacity: 0.5,\n stroke: 'transparent',\n lineWidth: 0,\n isStagger: true\n};\n/**\n * 绘制圆点\n *\n * @param context\n * @param cfg\n * @param x 圆点中心坐标x\n * @param y 圆点中心坐标y\n */\nexport function drawDot(context, cfg, x, y) {\n var size = cfg.size,\n fill = cfg.fill,\n lineWidth = cfg.lineWidth,\n stroke = cfg.stroke,\n fillOpacity = cfg.fillOpacity;\n context.beginPath();\n context.globalAlpha = fillOpacity;\n context.fillStyle = fill;\n context.strokeStyle = stroke;\n context.lineWidth = lineWidth;\n context.arc(x, y, size / 2, 0, 2 * Math.PI, false);\n context.fill();\n if (lineWidth) {\n context.stroke();\n }\n context.closePath();\n}\n/**\n * 创建 dot pattern,返回 HTMLCanvasElement\n *\n * @param cfg\n * @returns HTMLCanvasElement\n */\nexport function createDotPattern(cfg) {\n var dotCfg = deepAssign({}, defaultDotPatternCfg, cfg);\n var size = dotCfg.size,\n padding = dotCfg.padding,\n isStagger = dotCfg.isStagger,\n rotation = dotCfg.rotation;\n // 计算 画布大小,dots的位置\n var unitSize = getUnitPatternSize(size, padding, isStagger);\n var dots = getSymbolsPosition(unitSize, isStagger);\n // 初始化 patternCanvas\n var canvas = initCanvas(unitSize, unitSize);\n var ctx = canvas.getContext('2d');\n // 绘制 background,dots\n drawBackground(ctx, dotCfg, unitSize);\n for (var _i = 0, dots_1 = dots; _i < dots_1.length; _i++) {\n var _a = dots_1[_i],\n x = _a[0],\n y = _a[1];\n drawDot(ctx, dotCfg, x, y);\n }\n var pattern = ctx.createPattern(canvas, 'repeat');\n if (pattern) {\n var dpr = getPixelRatio();\n var matrix = transformMatrix(dpr, rotation);\n pattern.setTransform(matrix);\n }\n return pattern;\n}","import { deepAssign } from '../../utils';\nimport { drawBackground, getPixelRatio, initCanvas, transformMatrix } from './util';\n/**\n * linePattern 的 默认配置\n */\nexport var defaultLinePatternCfg = {\n rotation: 45,\n spacing: 5,\n opacity: 1,\n backgroundColor: 'transparent',\n strokeOpacity: 0.5,\n stroke: '#fff',\n lineWidth: 2\n};\n/**\n * 绘制line\n *\n * @param context canvasContext\n * @param cfg linePattern 的配置\n * @param d 绘制 path 所需的 d\n */\nexport function drawLine(context, cfg, d) {\n var stroke = cfg.stroke,\n lineWidth = cfg.lineWidth,\n strokeOpacity = cfg.strokeOpacity;\n var path = new Path2D(d);\n context.globalAlpha = strokeOpacity;\n context.lineCap = 'square';\n context.strokeStyle = lineWidth ? stroke : 'transparent';\n context.lineWidth = lineWidth;\n context.stroke(path);\n}\n/**\n * 创建 linePattern\n */\nexport function createLinePattern(cfg) {\n var lineCfg = deepAssign({}, defaultLinePatternCfg, cfg);\n var spacing = lineCfg.spacing,\n rotation = lineCfg.rotation,\n lineWidth = lineCfg.lineWidth;\n // 计算 pattern 画布的大小, path 所需的 d\n var width = spacing + lineWidth || 1;\n var height = spacing + lineWidth || 1;\n var d = \"\\n M 0 0 L \".concat(width, \" 0\\n M 0 \").concat(height, \" L \").concat(width, \" \").concat(height, \"\\n \");\n // 初始化 patternCanvas\n var canvas = initCanvas(width, height);\n var ctx = canvas.getContext('2d');\n // 绘制 background,line\n drawBackground(ctx, lineCfg, width, height);\n drawLine(ctx, lineCfg, d);\n var pattern = ctx.createPattern(canvas, 'repeat');\n if (pattern) {\n var dpr = getPixelRatio();\n var matrix = transformMatrix(dpr, rotation);\n pattern.setTransform(matrix);\n }\n // 返回 Pattern 对象\n return pattern;\n}","import { deepAssign } from '../../utils';\nimport { drawBackground, getPixelRatio, getSymbolsPosition, getUnitPatternSize, initCanvas, transformMatrix } from './util';\n/**\n * squarePattern 的 默认配置\n */\nexport var defaultSquarePatternCfg = {\n size: 6,\n padding: 1,\n isStagger: true,\n backgroundColor: 'transparent',\n opacity: 1,\n rotation: 0,\n fill: '#fff',\n fillOpacity: 0.5,\n stroke: 'transparent',\n lineWidth: 0\n};\n/**\n * 绘制square\n *\n * @param context canvasContext\n * @param cfg squarePattern 的配置\n * @param x和y square的中心位置\n */\nexport function drawSquare(context, cfg, x, y) {\n var stroke = cfg.stroke,\n size = cfg.size,\n fill = cfg.fill,\n lineWidth = cfg.lineWidth,\n fillOpacity = cfg.fillOpacity;\n context.globalAlpha = fillOpacity;\n context.strokeStyle = stroke;\n context.lineWidth = lineWidth;\n context.fillStyle = fill;\n // 因为正方形绘制从左上角开始,所以x,y做个偏移\n context.strokeRect(x - size / 2, y - size / 2, size, size);\n context.fillRect(x - size / 2, y - size / 2, size, size);\n}\n/**\n * 创建 squarePattern\n */\nexport function createSquarePattern(cfg) {\n var squareCfg = deepAssign({}, defaultSquarePatternCfg, cfg);\n var size = squareCfg.size,\n padding = squareCfg.padding,\n isStagger = squareCfg.isStagger,\n rotation = squareCfg.rotation;\n // 计算 画布大小,squares的位置\n var unitSize = getUnitPatternSize(size, padding, isStagger);\n var squares = getSymbolsPosition(unitSize, isStagger); // 计算方法与 dots 一样\n // 初始化 patternCanvas\n var canvas = initCanvas(unitSize, unitSize);\n var ctx = canvas.getContext('2d');\n // 绘制 background,squares\n drawBackground(ctx, squareCfg, unitSize);\n for (var _i = 0, squares_1 = squares; _i < squares_1.length; _i++) {\n var _a = squares_1[_i],\n x = _a[0],\n y = _a[1];\n drawSquare(ctx, squareCfg, x, y);\n }\n var pattern = ctx.createPattern(canvas, 'repeat');\n if (pattern) {\n var dpr = getPixelRatio();\n var matrix = transformMatrix(dpr, rotation);\n pattern.setTransform(matrix);\n }\n return pattern;\n}","import { createDotPattern } from './dot';\nimport { createLinePattern } from './line';\nimport { createSquarePattern } from './square';\n/**\n * 获取内置的 CanvasPattern 方法\n * @param options\n * @returns\n */\nexport function getCanvasPattern(options) {\n var type = options.type,\n cfg = options.cfg;\n var pattern;\n switch (type) {\n case 'dot':\n pattern = createDotPattern(cfg);\n break;\n case 'line':\n pattern = createLinePattern(cfg);\n break;\n case 'square':\n pattern = createSquarePattern(cfg);\n break;\n default:\n break;\n }\n return pattern;\n}","import { __assign, __spreadArray } from \"tslib\";\nimport { Util } from '@antv/g2';\nimport { get } from '@antv/util';\nimport { deepAssign } from '../utils';\nimport { getCanvasPattern } from '../utils/pattern';\n/**\n * Pattern 通道,处理图案填充\n * 🚀 目前支持图表类型:饼图、柱状图、条形图、玉珏图等(不支持在多 view 图表中,后续按需扩展)\n *\n * @param key key of style property\n * @returns\n */\nexport function pattern(key) {\n var _this = this;\n return function (params) {\n var _a;\n var options = params.options,\n chart = params.chart;\n var patternOption = options.pattern;\n // 没有 pattern 配置,则直接返回\n if (!patternOption) {\n return params;\n }\n /** ~~~~~~~ 进行贴图图案处理 ~~~~~~~ */\n var style = function style(datum) {\n var _a, _b, _c;\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var defaultColor = chart.getTheme().defaultColor;\n var color = defaultColor;\n var colorAttribute = (_b = (_a = chart.geometries) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.getAttribute('color');\n if (colorAttribute) {\n var colorField = colorAttribute.getFields()[0];\n var seriesValue = get(datum, colorField);\n color = Util.getMappingValue(colorAttribute, seriesValue, ((_c = colorAttribute.values) === null || _c === void 0 ? void 0 : _c[0]) || defaultColor);\n }\n var pattern = patternOption;\n // 1. 如果 patternOption 是一个回调,则获取回调结果。`(datum: Datum, color: string) => CanvasPattern`\n if (typeof patternOption === 'function') {\n pattern = patternOption.call(_this, datum, color);\n }\n // 2. 如果 pattern 不是 CanvasPattern,则进一步处理,否则直接赋予给 fill\n if (pattern instanceof CanvasPattern === false) {\n // 通过 createPattern(PatternStyle) 转换为 CanvasPattern\n pattern = getCanvasPattern(deepAssign({}, {\n cfg: {\n backgroundColor: color\n }\n }, pattern));\n }\n var styleOption = options[key];\n return __assign(__assign({}, typeof styleOption === 'function' ? styleOption.call.apply(styleOption, __spreadArray([_this, datum], args, false)) : styleOption || {}), {\n fill: pattern || color\n });\n };\n return deepAssign({}, params, {\n options: (_a = {}, _a[key] = style, _a)\n });\n };\n}","import { __spreadArray } from \"tslib\";\nimport { each, isNil, isObject } from '@antv/util';\nimport { AXIS_META_CONFIG_KEYS } from '../constant';\nimport { addViewAnimation, deepAssign, pick } from '../utils';\n/**\n * 通用 legend 配置, 适用于带 colorField 或 seriesField 的图表\n * @param params\n */\nexport function legend(params) {\n var chart = params.chart,\n options = params.options;\n var legend = options.legend,\n colorField = options.colorField,\n seriesField = options.seriesField;\n if (legend === false) {\n chart.legend(false);\n } else if (colorField || seriesField) {\n chart.legend(colorField || seriesField, legend);\n }\n return params;\n}\n/**\n * 通用 tooltip 配置\n * @param params\n */\nexport function tooltip(params) {\n var chart = params.chart,\n options = params.options;\n var tooltip = options.tooltip;\n if (tooltip !== undefined) {\n chart.tooltip(tooltip);\n }\n return params;\n}\n/**\n * Interaction 配置\n * @param params\n */\nexport function interaction(params) {\n var chart = params.chart,\n options = params.options;\n var interactions = options.interactions;\n each(interactions, function (i) {\n if (i.enable === false) {\n chart.removeInteraction(i.type);\n } else {\n chart.interaction(i.type, i.cfg || {});\n }\n });\n return params;\n}\n/**\n * 动画\n * @param params\n */\nexport function animation(params) {\n var chart = params.chart,\n options = params.options;\n var animation = options.animation;\n // 所有的 Geometry 都使用同一动画(各个图形如有区别,自行覆盖)\n addViewAnimation(chart, animation);\n return params;\n}\n/**\n * 设置全局主题配置\n * @param params\n */\nexport function theme(params) {\n var chart = params.chart,\n options = params.options;\n var theme = options.theme;\n // 存在主题才设置主题\n if (theme) {\n chart.theme(theme);\n }\n return params;\n}\n/**\n * 状态 state 配置\n * @param params\n */\nexport function state(params) {\n var chart = params.chart,\n options = params.options;\n var state = options.state;\n if (state) {\n each(chart.geometries, function (geometry) {\n geometry.state(state);\n });\n }\n return params;\n}\n/**\n * 处理缩略轴的 adaptor\n * @param params\n */\nexport function slider(params) {\n var chart = params.chart,\n options = params.options;\n var slider = options.slider;\n chart.option('slider', slider);\n return params;\n}\n/**\n * 处理缩略轴的 adaptor\n * @param params\n */\nexport function scrollbar(params) {\n var chart = params.chart,\n options = params.options;\n var scrollbar = options.scrollbar;\n chart.option('scrollbar', scrollbar);\n return params;\n}\n/**\n * scale 的 adaptor\n * @param axes\n */\nexport function scale(axes, meta) {\n return function (params) {\n var chart = params.chart,\n options = params.options;\n // 1. 轴配置中的 scale 信息\n var scales = {};\n each(axes, function (axis, field) {\n scales[field] = pick(axis, AXIS_META_CONFIG_KEYS);\n });\n // 2. meta 直接是 scale 的信息\n scales = deepAssign({}, meta, options.meta, scales);\n chart.scale(scales);\n return params;\n };\n}\n/**\n * annotation 配置\n * @param params\n */\nexport function annotation(annotationOptions) {\n return function (params) {\n var chart = params.chart,\n options = params.options;\n var annotationController = chart.getController('annotation');\n /** 自定义 annotation */\n each(__spreadArray(__spreadArray([], options.annotations || [], true), annotationOptions || [], true), function (annotationOption) {\n // @ts-ignore\n annotationController.annotation(annotationOption);\n });\n return params;\n };\n}\n/**\n * 自动设置 limitInPlot\n * @param params\n */\nexport function limitInPlot(params) {\n var chart = params.chart,\n options = params.options;\n var yAxis = options.yAxis,\n limitInPlot = options.limitInPlot;\n var value = limitInPlot;\n // 用户没有设置 limitInPlot,则自动根据 yAxis 是否有 min/max 来设置 limitInPlot\n if (isObject(yAxis) && isNil(limitInPlot)) {\n if (Object.values(pick(yAxis, ['min', 'max', 'minLimit', 'maxLimit'])).some(function (value) {\n return !isNil(value);\n })) {\n value = true;\n } else {\n value = false;\n }\n }\n chart.limitInPlot = value;\n return params;\n}\n/**\n * 坐标系转换\n */\nexport function transformations(coordinateType) {\n if (coordinateType === void 0) {\n coordinateType = 'rect';\n }\n return function (params) {\n var chart = params.chart,\n options = params.options;\n var coordinate = options.coordinate;\n var actions = Array.from(coordinate || []).map(function (cfg) {\n if (cfg.type === 'reflectX') return ['reflect', 'x'];\n if (cfg.type === 'reflectY') return ['reflect', 'y'];\n if (cfg.type === 'transpose') return ['transpose'];\n return null;\n }).filter(function (d) {\n return !!d;\n });\n if (actions.length !== 0) {\n chart.coordinate({\n type: coordinateType,\n actions: actions\n });\n }\n return params;\n };\n}\nexport { pattern } from './pattern';","import { each } from '@antv/util';\n/**\n * @file 全局的一些变量定义:含国际化、主题...\n */\nexport var GLOBAL = {\n /** 全局语言 */\n locale: 'en-US'\n};\n/**\n * 全局变量设置\n * @param key\n * @param value\n */\nexport function setGlobal(datum) {\n each(datum, function (v, k) {\n return GLOBAL[k] = v;\n });\n}","import { get as _get } from '@antv/util';\nimport { template } from '../utils';\nimport { GLOBAL } from './global';\nvar LocaleMap = {};\n/**\n * register a locale\n * @param locale\n * @param localeObj\n */\nexport function registerLocale(locale, localeObj) {\n LocaleMap[locale] = localeObj;\n}\n/**\n * get locale of specific language\n * @param lang\n * @returns\n */\nexport function getLocale(locale) {\n return {\n get: function get(key, obj) {\n return template(_get(LocaleMap[locale], key) || _get(LocaleMap[GLOBAL.locale], key) || _get(LocaleMap['en-US'], key) || key, obj);\n }\n };\n}","import { get } from '@antv/util';\n/**\n * 获得 tooltip 的映射信息\n * @param tooltip\n * @param defaultFields\n */\nexport function getTooltipMapping(tooltip, defaultFields) {\n if (tooltip === false) {\n return {\n fields: false // 关闭 tooltip\n };\n }\n\n var fields = get(tooltip, 'fields');\n var formatter = get(tooltip, 'formatter');\n if (formatter && !fields) {\n fields = defaultFields;\n }\n return {\n fields: fields,\n formatter: formatter\n };\n}","import { __assign, __rest, __spreadArray } from \"tslib\";\nimport { isEmpty, isFunction, isNumber, isObject, isString, uniq } from '@antv/util';\nimport { transformLabel } from '../../utils';\n/**\n * 获得映射的字段列表\n * @param options\n * @param field\n */\nexport function getMappingField(o, field) {\n var type = o.type,\n xField = o.xField,\n yField = o.yField,\n colorField = o.colorField,\n shapeField = o.shapeField,\n sizeField = o.sizeField,\n styleField = o.styleField;\n var rawFields = o.rawFields;\n var fields = [];\n rawFields = (isFunction(rawFields) ? rawFields(type, field) : rawFields) || [];\n // 因为 color 会影响到数据分组,以及最后的图形映射。所以导致 bar 图中的 widthRatio 设置不生效\n // 所以对于 color 字段,仅仅保留 colorField 好了! + rawFields\n // shape, size 同理\n if (field === 'color') {\n fields = __spreadArray([colorField || xField], rawFields, true);\n } else if (field === 'shape') {\n fields = __spreadArray([shapeField || xField], rawFields, true);\n } else if (field === 'size') {\n fields = __spreadArray([sizeField || xField], rawFields, true);\n } else {\n fields = __spreadArray([xField, yField, colorField, shapeField, sizeField, styleField], rawFields, true);\n // 一定能找到的!\n var idx = ['x', 'y', 'color', 'shape', 'size', 'style'].indexOf(field);\n var f = fields[idx];\n // 删除当前字段\n fields.splice(idx, 1);\n // 插入到第一个\n fields.unshift(f);\n }\n var mappingFields = uniq(fields.filter(function (f) {\n return !!f;\n }));\n /**\n * 修复 line geometry 无拆分时 color 回调错误\n * eg:\n * geometry.color(xField, ()=> '#f24')\n */\n var tileMappingField = type === 'line' && [xField, yField].includes(mappingFields.join('*')) ? '' : mappingFields.join('*');\n return {\n mappingFields: mappingFields,\n tileMappingField: tileMappingField\n };\n}\n/**\n * 获得映射函数\n * @param mappingFields\n * @param func\n */\nexport function getMappingFunction(mappingFields, func) {\n if (!func) return undefined;\n // 返回函数\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var params = {};\n mappingFields.forEach(function (f, idx) {\n params[f] = args[idx];\n });\n // 删除 undefined\n delete params['undefined'];\n return func(params);\n };\n}\n/**\n * 通用 geometry 的配置处理的 adaptor\n * @param params\n */\nexport function geometry(params) {\n var chart = params.chart,\n options = params.options;\n var type = options.type,\n args = options.args,\n mapping = options.mapping,\n xField = options.xField,\n yField = options.yField,\n colorField = options.colorField,\n shapeField = options.shapeField,\n sizeField = options.sizeField,\n tooltipFields = options.tooltipFields,\n label = options.label,\n state = options.state,\n customInfo = options.customInfo;\n // 如果没有 mapping 信息,那么直接返回\n if (!mapping) {\n return params;\n }\n var color = mapping.color,\n shape = mapping.shape,\n size = mapping.size,\n style = mapping.style,\n tooltip = mapping.tooltip;\n // 创建 geometry\n var geometry = chart[type](args).position(\"\".concat(xField, \"*\").concat(yField));\n /**\n * color 的几种情况\n * g.color('red');\n * g.color('color', ['red', 'blue']);\n * g.color('x', (x, y) => 'red');\n * g.color('color', (color, x, y) => 'red');\n */\n if (isString(color)) {\n colorField ? geometry.color(colorField, color) : geometry.color(color);\n } else if (isFunction(color)) {\n var _a = getMappingField(options, 'color'),\n mappingFields = _a.mappingFields,\n tileMappingField = _a.tileMappingField;\n geometry.color(tileMappingField, getMappingFunction(mappingFields, color));\n } else {\n colorField && geometry.color(colorField, color);\n }\n /**\n * shape 的几种情况\n * g.shape('rect');\n * g.shape('shape', ['rect', 'circle']);\n * g.shape('x*y', (x, y) => 'rect');\n * g.shape('shape*x*y', (shape, x, y) => 'rect');\n */\n if (isString(shape)) {\n shapeField ? geometry.shape(shapeField, [shape]) : geometry.shape(shape); // [shape] 需要在 G2 做掉\n } else if (isFunction(shape)) {\n var _b = getMappingField(options, 'shape'),\n mappingFields = _b.mappingFields,\n tileMappingField = _b.tileMappingField;\n geometry.shape(tileMappingField, getMappingFunction(mappingFields, shape));\n } else {\n shapeField && geometry.shape(shapeField, shape);\n }\n /**\n * size 的几种情况\n * g.size(10);\n * g.size('size', [10, 20]);\n * g.size('x*y', (x, y) => 10);\n * g.color('size*x*y', (size, x, y) => 1-);\n */\n if (isNumber(size)) {\n sizeField ? geometry.size(sizeField, size) : geometry.size(size);\n } else if (isFunction(size)) {\n var _c = getMappingField(options, 'size'),\n mappingFields = _c.mappingFields,\n tileMappingField = _c.tileMappingField;\n geometry.size(tileMappingField, getMappingFunction(mappingFields, size));\n } else {\n sizeField && geometry.size(sizeField, size);\n }\n /**\n * style 的几种情况\n * g.style({ fill: 'red' });\n * g.style('x*y*color', (x, y, color) => ({ fill: 'red' }));\n */\n if (isFunction(style)) {\n var _d = getMappingField(options, 'style'),\n mappingFields = _d.mappingFields,\n tileMappingField = _d.tileMappingField;\n geometry.style(tileMappingField, getMappingFunction(mappingFields, style));\n } else if (isObject(style)) {\n geometry.style(style);\n }\n /**\n * tooltip 的 API\n * g.tooltip('x*y*color', (x, y, color) => ({ name, value }));\n * g.tooltip(false);\n */\n if (tooltipFields === false) {\n geometry.tooltip(false);\n } else if (!isEmpty(tooltipFields)) {\n geometry.tooltip(tooltipFields.join('*'), getMappingFunction(tooltipFields, tooltip));\n }\n /**\n * label 的映射\n */\n if (label === false) {\n geometry.label(false);\n } else if (label) {\n var callback = label.callback,\n fields = label.fields,\n cfg = __rest(label, [\"callback\", \"fields\"]);\n geometry.label({\n fields: fields || [yField],\n callback: callback,\n cfg: transformLabel(cfg)\n });\n }\n /**\n * state 状态样式\n */\n if (state) {\n geometry.state(state);\n }\n /**\n * 自定义信息\n */\n if (customInfo) {\n geometry.customInfo(customInfo);\n }\n // 防止因为 x y 字段做了通道映射,导致生成图例\n [xField, yField].filter(function (f) {\n return f !== colorField;\n }).forEach(function (f) {\n chart.legend(f, false);\n });\n return __assign(__assign({}, params), {\n // geometry adaptor 额外需要做的事情,就是将创建好的 geometry 返回到下一层 adaptor,防止通过 type 查询的时候容易误判\n ext: {\n geometry: geometry\n }\n });\n}","import { deepMix } from '@antv/util';\nimport { deepAssign } from '../../utils';\nimport { getTooltipMapping } from '../../utils/tooltip';\nimport { geometry } from './base';\n/**\n * area geometry 的配置处理\n * @param params\n */\nexport function area(params) {\n var options = params.options;\n var area = options.area,\n xField = options.xField,\n yField = options.yField,\n seriesField = options.seriesField,\n smooth = options.smooth,\n tooltip = options.tooltip,\n useDeferredLabel = options.useDeferredLabel;\n var _a = getTooltipMapping(tooltip, [xField, yField, seriesField]),\n fields = _a.fields,\n formatter = _a.formatter;\n // 如果存在才处理\n return area ? geometry(deepAssign({}, params, {\n options: {\n type: 'area',\n colorField: seriesField,\n tooltipFields: fields,\n mapping: deepMix({\n shape: smooth ? 'smooth' : 'area',\n tooltip: formatter\n }, area),\n args: {\n useDeferredLabel: useDeferredLabel\n }\n }\n })) : params;\n}","import { __assign } from \"tslib\";\nimport { deepAssign } from '../../utils';\nimport { getTooltipMapping } from '../../utils/tooltip';\nimport { geometry } from './base';\n/**\n * edge 的配置处理\n * @param params\n */\nexport function edge(params) {\n var options = params.options;\n var edge = options.edge,\n xField = options.xField,\n yField = options.yField,\n seriesField = options.seriesField,\n tooltip = options.tooltip,\n useDeferredLabel = options.useDeferredLabel;\n var _a = getTooltipMapping(tooltip, [xField, yField, seriesField]),\n fields = _a.fields,\n formatter = _a.formatter;\n return edge ? geometry(deepAssign({}, params, {\n options: {\n type: 'edge',\n colorField: seriesField,\n tooltipFields: fields,\n mapping: __assign({\n tooltip: formatter\n }, edge),\n args: {\n useDeferredLabel: useDeferredLabel\n }\n }\n })) : params;\n}","import { __assign } from \"tslib\";\nimport { getTheme } from '@antv/g2';\nimport { isNil, isObject } from '@antv/util';\nimport { deepAssign } from '../../utils';\nimport { getTooltipMapping } from '../../utils/tooltip';\nimport { geometry } from './base';\n/**\n * 柱形图其他的 adaptor\n * @param params\n */\nfunction otherAdaptor(params) {\n var chart = params.chart,\n options = params.options,\n ext = params.ext;\n var seriesField = options.seriesField,\n isGroup = options.isGroup,\n isStack = options.isStack,\n marginRatio = options.marginRatio,\n widthRatio = options.widthRatio,\n groupField = options.groupField,\n theme = options.theme;\n /**\n * adjust\n */\n var adjust = [];\n if (seriesField) {\n // group\n if (isGroup) {\n adjust.push({\n type: 'dodge',\n dodgeBy: groupField || seriesField,\n marginRatio: marginRatio\n });\n }\n // stack\n if (isStack) {\n adjust.push({\n type: 'stack',\n marginRatio: marginRatio\n });\n }\n }\n if (adjust.length && (ext === null || ext === void 0 ? void 0 : ext.geometry)) {\n var g = ext === null || ext === void 0 ? void 0 : ext.geometry;\n g.adjust(adjust);\n }\n // widthRatio\n if (!isNil(widthRatio)) {\n chart.theme(deepAssign({}, isObject(theme) ? theme : getTheme(theme), {\n // columWidthRatio 配置覆盖 theme 中的配置\n columnWidthRatio: widthRatio\n }));\n }\n return params;\n}\nexport function interval(params) {\n var options = params.options;\n var xField = options.xField,\n yField = options.yField,\n interval = options.interval,\n seriesField = options.seriesField,\n tooltip = options.tooltip,\n minColumnWidth = options.minColumnWidth,\n maxColumnWidth = options.maxColumnWidth,\n columnBackground = options.columnBackground,\n dodgePadding = options.dodgePadding,\n intervalPadding = options.intervalPadding,\n useDeferredLabel = options.useDeferredLabel;\n var _a = getTooltipMapping(tooltip, [xField, yField, seriesField]),\n fields = _a.fields,\n formatter = _a.formatter;\n // 保障一定要存在 interval 映射\n var ext = (interval ? geometry(deepAssign({}, params, {\n options: {\n type: 'interval',\n colorField: seriesField,\n tooltipFields: fields,\n mapping: __assign({\n tooltip: formatter\n }, interval),\n args: {\n dodgePadding: dodgePadding,\n intervalPadding: intervalPadding,\n minColumnWidth: minColumnWidth,\n maxColumnWidth: maxColumnWidth,\n background: columnBackground,\n useDeferredLabel: useDeferredLabel\n }\n }\n })) : params).ext;\n return otherAdaptor(__assign(__assign({}, params), {\n ext: ext\n }));\n}","import { deepMix } from '@antv/util';\nimport { deepAssign } from '../../utils';\nimport { getTooltipMapping } from '../../utils/tooltip';\nimport { geometry } from './base';\n/**\n * line 辅助点的配置处理\n * @param params\n */\nexport function line(params) {\n var options = params.options;\n var line = options.line,\n stepType = options.stepType,\n xField = options.xField,\n yField = options.yField,\n seriesField = options.seriesField,\n smooth = options.smooth,\n connectNulls = options.connectNulls,\n tooltip = options.tooltip,\n useDeferredLabel = options.useDeferredLabel;\n var _a = getTooltipMapping(tooltip, [xField, yField, seriesField]),\n fields = _a.fields,\n formatter = _a.formatter;\n // 如果存在才处理\n return line ? geometry(deepAssign({}, params, {\n options: {\n type: 'line',\n colorField: seriesField,\n tooltipFields: fields,\n mapping: deepMix({\n shape: stepType || (smooth ? 'smooth' : 'line'),\n tooltip: formatter\n }, line),\n args: {\n connectNulls: connectNulls,\n useDeferredLabel: useDeferredLabel\n }\n }\n })) : params;\n}","import { __assign } from \"tslib\";\nimport { deepAssign } from '../../utils';\nimport { getTooltipMapping } from '../../utils/tooltip';\nimport { geometry } from './base';\n/**\n * point 辅助点的配置处理\n * @param params\n */\nexport function point(params) {\n var options = params.options;\n var point = options.point,\n xField = options.xField,\n yField = options.yField,\n seriesField = options.seriesField,\n sizeField = options.sizeField,\n shapeField = options.shapeField,\n tooltip = options.tooltip,\n useDeferredLabel = options.useDeferredLabel;\n var _a = getTooltipMapping(tooltip, [xField, yField, seriesField, sizeField, shapeField]),\n fields = _a.fields,\n formatter = _a.formatter;\n return point ? geometry(deepAssign({}, params, {\n options: {\n type: 'point',\n colorField: seriesField,\n shapeField: shapeField,\n tooltipFields: fields,\n mapping: __assign({\n tooltip: formatter\n }, point),\n args: {\n useDeferredLabel: useDeferredLabel\n }\n }\n })) : params;\n}","import { __assign } from \"tslib\";\nimport { deepAssign } from '../../utils';\nimport { getTooltipMapping } from '../../utils/tooltip';\nimport { geometry } from './base';\n/**\n * polygon 的配置处理\n * @param params\n */\nexport function polygon(params) {\n var options = params.options;\n var polygon = options.polygon,\n xField = options.xField,\n yField = options.yField,\n seriesField = options.seriesField,\n tooltip = options.tooltip,\n useDeferredLabel = options.useDeferredLabel;\n var _a = getTooltipMapping(tooltip, [xField, yField, seriesField]),\n fields = _a.fields,\n formatter = _a.formatter;\n return polygon ? geometry(deepAssign({}, params, {\n options: {\n type: 'polygon',\n colorField: seriesField,\n tooltipFields: fields,\n mapping: __assign({\n tooltip: formatter\n }, polygon),\n args: {\n useDeferredLabel: useDeferredLabel\n }\n }\n })) : params;\n}","import { __assign } from \"tslib\";\nimport { deepAssign } from '../../utils';\nimport { getTooltipMapping } from '../../utils/tooltip';\nimport { geometry } from './base';\n/**\n * schema 的配置处理\n * @param params\n */\nexport function schema(params) {\n var options = params.options;\n var schema = options.schema,\n xField = options.xField,\n yField = options.yField,\n seriesField = options.seriesField,\n tooltip = options.tooltip,\n useDeferredLabel = options.useDeferredLabel;\n var _a = getTooltipMapping(tooltip, [xField, yField, seriesField]),\n fields = _a.fields,\n formatter = _a.formatter;\n return schema ? geometry(deepAssign({}, params, {\n options: {\n type: 'schema',\n colorField: seriesField,\n tooltipFields: fields,\n mapping: __assign({\n tooltip: formatter\n }, schema),\n args: {\n useDeferredLabel: useDeferredLabel\n }\n }\n })) : params;\n}","import { __assign, __extends, __spreadArray } from \"tslib\";\nimport EE from '@antv/event-emitter';\nimport { Chart } from '@antv/g2';\nimport { each } from '@antv/util';\nimport { bind } from 'size-sensor';\nimport { deepAssign, getAllElementsRecursively, getContainerSize, pick } from '../utils';\nvar SOURCE_ATTRIBUTE_NAME = 'data-chart-source-type';\n/** plot 图表容器的配置 */\nexport var PLOT_CONTAINER_OPTIONS = ['padding', 'appendPadding', 'renderer', 'pixelRatio', 'syncViewPadding', 'supportCSSTransform', 'limitInPlot'];\n/**\n * 所有 plot 的基类\n */\nvar Plot = /** @class */function (_super) {\n __extends(Plot, _super);\n function Plot(container, options) {\n var _this = _super.call(this) || this;\n _this.container = typeof container === 'string' ? document.getElementById(container) : container;\n _this.options = deepAssign({}, _this.getDefaultOptions(), options);\n _this.createG2();\n _this.bindEvents();\n return _this;\n }\n /**\n * 获取默认的 options 配置项\n * 每个组件都可以复写\n */\n Plot.getDefaultOptions = function () {\n return {\n renderer: 'canvas',\n xAxis: {\n nice: true,\n label: {\n autoRotate: false,\n autoHide: {\n type: 'equidistance',\n cfg: {\n minGap: 6\n }\n }\n }\n },\n yAxis: {\n nice: true,\n label: {\n autoHide: true,\n autoRotate: false\n }\n },\n animation: true\n };\n };\n /**\n * 创建 G2 实例\n */\n Plot.prototype.createG2 = function () {\n var _a = this.options,\n width = _a.width,\n height = _a.height,\n defaultInteractions = _a.defaultInteractions;\n this.chart = new Chart(__assign(__assign(__assign(__assign({\n container: this.container,\n autoFit: false\n }, this.getChartSize(width, height)), {\n localRefresh: false\n }), pick(this.options, PLOT_CONTAINER_OPTIONS)), {\n defaultInteractions: defaultInteractions\n }));\n // 给容器增加标识,知道图表的来源区别于 G2\n this.container.setAttribute(SOURCE_ATTRIBUTE_NAME, 'G2Plot');\n };\n /**\n * 计算默认的 chart 大小。逻辑简化:如果存在 width 或 height,则直接使用,否则使用容器大小\n * @param width\n * @param height\n */\n Plot.prototype.getChartSize = function (width, height) {\n var chartSize = getContainerSize(this.container);\n return {\n width: width || chartSize.width || 400,\n height: height || chartSize.height || 400\n };\n };\n /**\n * 绑定代理所有 G2 的事件\n */\n Plot.prototype.bindEvents = function () {\n var _this = this;\n if (this.chart) {\n this.chart.on('*', function (e) {\n if (e === null || e === void 0 ? void 0 : e.type) {\n _this.emit(e.type, e);\n }\n });\n }\n };\n /**\n * 获取默认的 options 配置项\n * 每个组件都可以复写\n */\n Plot.prototype.getDefaultOptions = function () {\n return Plot.getDefaultOptions();\n };\n /**\n * 绘制\n */\n Plot.prototype.render = function () {\n // 暴力处理,先清空再渲染,需要 G2 层自行做好更新渲染\n this.chart.clear();\n // 因为子 view 会继承父 view 的 options 配置(包括 legend,所以会导致 legend 重复创建)\n // 所以这里给 chart 实例的 options 配置清空\n // 最好的解法是在 G2 view.clear 方法的时候,重置 options 配置。或者提供方法去 resetOptions\n // #1684 理论上在多 view 图形上,只要存在 custom legend,都存在类似问题(子弹图、双轴图)\n // @ts-ignore\n this.chart.options = {\n data: [],\n animate: true\n };\n this.chart.views = []; // 删除已有的 views\n // 执行 adaptor\n this.execAdaptor();\n // 渲染\n this.chart.render();\n // 绑定\n this.bindSizeSensor();\n };\n /**\n * 更新: 更新配置且重新渲染\n * @param options\n */\n Plot.prototype.update = function (options) {\n this.updateOption(options);\n this.render();\n };\n /**\n * 更新配置\n * @param options\n */\n Plot.prototype.updateOption = function (options) {\n this.options = deepAssign({}, this.options, options);\n };\n /**\n * 设置状态\n * @param type 状态类型,支持 'active' | 'inactive' | 'selected' 三种\n * @param conditions 条件,支持数组\n * @param status 是否激活,默认 true\n */\n Plot.prototype.setState = function (type, condition, status) {\n if (status === void 0) {\n status = true;\n }\n var elements = getAllElementsRecursively(this.chart);\n each(elements, function (ele) {\n if (condition(ele.getData())) {\n ele.setState(type, status);\n }\n });\n };\n /**\n * 获取状态\n */\n Plot.prototype.getStates = function () {\n var elements = getAllElementsRecursively(this.chart);\n var stateObjects = [];\n each(elements, function (element) {\n var data = element.getData();\n var states = element.getStates();\n each(states, function (state) {\n stateObjects.push({\n data: data,\n state: state,\n geometry: element.geometry,\n element: element\n });\n });\n });\n return stateObjects;\n };\n /**\n * 更新数据\n * @override\n * @param options\n */\n Plot.prototype.changeData = function (data) {\n // @ts-ignore\n this.update({\n data: data\n });\n // TODO: 临时方案,最好使用下面的方式去更新数据\n // this.chart.changeData(data);\n };\n /**\n * 修改画布大小\n * @param width\n * @param height\n */\n Plot.prototype.changeSize = function (width, height) {\n this.chart.changeSize(width, height);\n };\n /**\n * 增加图表标注。通过 id 标识,如果匹配到,就做更新\n */\n Plot.prototype.addAnnotations = function (annotations, view) {\n view = view ? view : this.chart;\n var incoming = __spreadArray([], annotations, true);\n var controller = view.getController('annotation');\n var current = controller.getComponents().map(function (co) {\n return co.extra;\n });\n controller.clear(true);\n var _loop_1 = function _loop_1(i) {\n var annotation = current[i];\n var findIndex = incoming.findIndex(function (item) {\n return item.id && item.id === annotation.id;\n });\n if (findIndex !== -1) {\n annotation = deepAssign({}, annotation, incoming[findIndex]);\n incoming.splice(findIndex, 1);\n }\n controller.annotation(annotation);\n };\n for (var i = 0; i < current.length; i++) {\n _loop_1(i);\n }\n incoming.forEach(function (annotation) {\n return controller.annotation(annotation);\n });\n view.render(true);\n };\n /**\n * 删除图表标注。通过 id 标识,如果匹配到,就做删除\n */\n Plot.prototype.removeAnnotations = function (annotations) {\n var controller = this.chart.getController('annotation');\n var current = controller.getComponents().map(function (co) {\n return co.extra;\n });\n controller.clear(true);\n var _loop_2 = function _loop_2(i) {\n var annotation = current[i];\n if (!annotations.find(function (item) {\n return item.id && item.id === annotation.id;\n })) {\n controller.annotation(annotation);\n }\n };\n for (var i = 0; i < current.length; i++) {\n _loop_2(i);\n }\n this.chart.render(true);\n };\n /**\n * 销毁\n */\n Plot.prototype.destroy = function () {\n // 取消 size-sensor 的绑定\n this.unbindSizeSensor();\n // G2 的销毁\n this.chart.destroy();\n // 清空已经绑定的事件\n this.off();\n this.container.removeAttribute(SOURCE_ATTRIBUTE_NAME);\n };\n /**\n * 执行 adaptor 操作\n */\n Plot.prototype.execAdaptor = function () {\n var adaptor = this.getSchemaAdaptor();\n var _a = this.options,\n padding = _a.padding,\n appendPadding = _a.appendPadding;\n // 更新 padding\n this.chart.padding = padding;\n // 更新 appendPadding\n this.chart.appendPadding = appendPadding;\n // 转化成 G2 API\n adaptor({\n chart: this.chart,\n options: this.options\n });\n };\n /**\n * 当图表容器大小变化的时候,执行的函数\n */\n Plot.prototype.triggerResize = function () {\n this.chart.forceFit();\n };\n /**\n * 绑定 dom 容器大小变化的事件\n */\n Plot.prototype.bindSizeSensor = function () {\n var _this = this;\n if (this.unbind) {\n return;\n }\n var _a = this.options.autoFit,\n autoFit = _a === void 0 ? true : _a;\n if (autoFit) {\n this.unbind = bind(this.container, function () {\n // 获取最新的宽高信息\n var _a = getContainerSize(_this.container),\n width = _a.width,\n height = _a.height;\n // 主要是防止绑定的时候触发 resize 回调\n if (width !== _this.chart.width || height !== _this.chart.height) {\n _this.triggerResize();\n }\n });\n }\n };\n /**\n * 取消绑定\n */\n Plot.prototype.unbindSizeSensor = function () {\n if (this.unbind) {\n this.unbind();\n this.unbind = undefined;\n }\n };\n return Plot;\n}(EE);\nexport { Plot };","import { __assign } from \"tslib\";\nimport { map, reduce } from '@antv/util';\nimport { isRealNumber } from '../number';\n/**\n * 对数据进行百分比化\n * @param data\n * @param measure\n * @param groupField\n * @param as\n */\nexport function percent(data, measure, groupField, as) {\n // 1. 先计算每一个分组的 max 值\n var sumMap = reduce(data, function (map, datum) {\n var groupValue = datum[groupField];\n var sum = map.has(groupValue) ? map.get(groupValue) : 0;\n var v = datum[measure];\n sum = isRealNumber(v) ? sum + v : sum;\n map.set(groupValue, sum);\n return map;\n }, new Map());\n // 2. 循环数组,计算占比\n return map(data, function (datum) {\n var _a;\n var v = datum[measure];\n var groupValue = datum[groupField];\n var percentage = isRealNumber(v) && sumMap.get(groupValue) !== 0 ? v / sumMap.get(groupValue) : 0;\n return __assign(__assign({}, datum), (_a = {}, _a[as] = percentage, _a));\n });\n}\n/**\n * 对数据进行深层百分比化\n * @param data\n * @param measure // 数值\n * @param fields // 需要分组的 field值\n * @param as // 存储percent 百分比的值\n */\nexport function getDeepPercent(data, measure, fields, percent) {\n var sumMap = reduce(data, function (map, datum) {\n // 获取分组得到的枚举key值\n var groupValue = reduce(fields, function (value, field) {\n return \"\".concat(value).concat(datum[field]);\n }, '');\n var sum = map.has(groupValue) ? map.get(groupValue) : 0;\n var v = datum[measure];\n sum = isRealNumber(v) ? sum + v : sum;\n map.set(groupValue, sum);\n return map;\n }, new Map());\n // 2. 循环数组,计算占比\n return map(data, function (datum) {\n var _a;\n var v = datum[measure];\n // 获取分组得到的枚举key值\n var groupValue = reduce(fields, function (value, field) {\n return \"\".concat(value).concat(datum[field]);\n }, '');\n var percentage = isRealNumber(v) && sumMap.get(groupValue) !== 0 ? v / sumMap.get(groupValue) : 0;\n return __assign(__assign({}, datum), (_a = {}, _a[percent] = percentage, _a));\n });\n}\n/**\n * 获取数据,如果是百分比,进行数据转换 (适用于面积图、柱状图、条形图)\n * @param isPercent 是否百分比\n */\nexport function getDataWhetherPercentage(data, yField, groupField, asField, isPercent) {\n return !isPercent ? data : percent(data, yField, groupField, asField);\n}","import { __assign, __rest } from \"tslib\";\nimport { each, isArray } from '@antv/util';\nimport { animation, annotation, interaction, limitInPlot, scale, scrollbar, slider, theme, tooltip } from '../../adaptor/common';\nimport { area, line, point } from '../../adaptor/geometries';\nimport { deepAssign, findGeometry, flow, transformLabel } from '../../utils';\nimport { adjustYMetaByZero } from '../../utils/data';\n/**\n * geometry 配置处理\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var data = options.data,\n color = options.color,\n lineStyle = options.lineStyle,\n lineShape = options.lineShape,\n pointMapping = options.point,\n areaMapping = options.area,\n seriesField = options.seriesField;\n var pointState = pointMapping === null || pointMapping === void 0 ? void 0 : pointMapping.state;\n var areaState = areaMapping === null || areaMapping === void 0 ? void 0 : areaMapping.state;\n chart.data(data);\n // line geometry 处理\n var primary = deepAssign({}, params, {\n options: {\n shapeField: seriesField,\n line: {\n color: color,\n style: lineStyle,\n shape: lineShape\n },\n // 颜色保持一致,因为如果颜色不一致,会导致 tooltip 中元素重复。\n // 如果存在,才设置,否则为空\n point: pointMapping && __assign({\n color: color,\n shape: 'circle'\n }, pointMapping),\n // 面积配置\n area: areaMapping && __assign({\n color: color\n }, areaMapping),\n // label 不传递给各个 geometry adaptor,由 label adaptor 处理\n label: undefined\n }\n });\n var second = deepAssign({}, primary, {\n options: {\n tooltip: false,\n state: pointState\n }\n });\n var areaParams = deepAssign({}, primary, {\n options: {\n tooltip: false,\n state: areaState\n }\n });\n line(primary);\n point(second);\n area(areaParams);\n return params;\n}\n/**\n * meta 配置\n * @param params\n */\nexport function meta(params) {\n var _a, _b;\n var options = params.options;\n var xAxis = options.xAxis,\n yAxis = options.yAxis,\n xField = options.xField,\n yField = options.yField,\n data = options.data;\n return flow(scale((_a = {}, _a[xField] = xAxis, _a[yField] = yAxis, _a), (_b = {}, _b[xField] = {\n type: 'cat'\n }, _b[yField] = adjustYMetaByZero(data, yField), _b)))(params);\n}\n/**\n * 坐标系配置. 支持 reflect 镜像处理\n * @param params\n */\nfunction coordinate(params) {\n var chart = params.chart,\n options = params.options;\n var reflect = options.reflect;\n if (reflect) {\n var p = reflect;\n if (!isArray(p)) {\n p = [p];\n }\n var actions = p.map(function (d) {\n return ['reflect', d];\n });\n chart.coordinate({\n type: 'rect',\n actions: actions\n });\n }\n return params;\n}\n/**\n * axis 配置\n * @param params\n */\nexport function axis(params) {\n var chart = params.chart,\n options = params.options;\n var xAxis = options.xAxis,\n yAxis = options.yAxis,\n xField = options.xField,\n yField = options.yField;\n // 为 false 则是不显示轴\n if (xAxis === false) {\n chart.axis(xField, false);\n } else {\n chart.axis(xField, xAxis);\n }\n if (yAxis === false) {\n chart.axis(yField, false);\n } else {\n chart.axis(yField, yAxis);\n }\n return params;\n}\n/**\n * legend 配置\n * @param params\n */\nexport function legend(params) {\n var chart = params.chart,\n options = params.options;\n var legend = options.legend,\n seriesField = options.seriesField;\n if (legend && seriesField) {\n chart.legend(seriesField, legend);\n } else if (legend === false) {\n chart.legend(false);\n }\n return params;\n}\n/**\n * 数据标签\n * @param params\n */\nfunction label(params) {\n var chart = params.chart,\n options = params.options;\n var label = options.label,\n yField = options.yField;\n var lineGeometry = findGeometry(chart, 'line');\n // label 为 false, 空 则不显示 label\n if (!label) {\n lineGeometry.label(false);\n } else {\n var callback = label.callback,\n cfg = __rest(label, [\"callback\"]);\n lineGeometry.label({\n fields: [yField],\n callback: callback,\n cfg: __assign({\n layout: [{\n type: 'limit-in-plot'\n }, {\n type: 'path-adjust-position'\n }, {\n type: 'point-adjust-position'\n }, {\n type: 'limit-in-plot',\n cfg: {\n action: 'hide'\n }\n }]\n }, transformLabel(cfg))\n });\n }\n return params;\n}\n/**\n * 统一处理 adjust\n * @param params\n */\nexport function adjust(params) {\n var chart = params.chart,\n options = params.options;\n var isStack = options.isStack;\n if (isStack) {\n each(chart.geometries, function (g) {\n g.adjust('stack');\n });\n }\n return params;\n}\n/**\n * 折线图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n // flow 的方式处理所有的配置到 G2 API\n return flow(geometry, meta, adjust, theme, coordinate, axis, legend, tooltip, label, slider, scrollbar, interaction, animation, annotation(), limitInPlot)(params);\n}","import { __assign, __rest } from \"tslib\";\nimport { each, omit } from '@antv/util';\nimport { animation, annotation, interaction, limitInPlot, pattern, slider, theme, tooltip, transformations } from '../../adaptor/common';\nimport { area, line, point } from '../../adaptor/geometries';\nimport { deepAssign, findGeometry, flow, transformLabel } from '../../utils';\nimport { getDataWhetherPercentage } from '../../utils/transform/percent';\nimport { axis, legend, meta } from '../line/adaptor';\nexport { meta };\n/**\n * geometry 处理\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var data = options.data,\n areaStyle = options.areaStyle,\n areaShape = options.areaShape,\n color = options.color,\n pointMapping = options.point,\n lineMapping = options.line,\n isPercent = options.isPercent,\n xField = options.xField,\n yField = options.yField,\n tooltip = options.tooltip,\n seriesField = options.seriesField,\n startOnZero = options.startOnZero;\n var pointState = pointMapping === null || pointMapping === void 0 ? void 0 : pointMapping.state;\n var chartData = getDataWhetherPercentage(data, yField, xField, yField, isPercent);\n chart.data(chartData);\n // 百分比堆积图,默认会给一个 % 格式化逻辑, 用户可自定义\n var tooltipOptions = isPercent ? __assign({\n formatter: function formatter(datum) {\n return {\n name: datum[seriesField] || datum[xField],\n value: (Number(datum[yField]) * 100).toFixed(2) + '%'\n };\n }\n }, tooltip) : tooltip;\n var primary = deepAssign({}, params, {\n options: {\n area: {\n color: color,\n style: areaStyle,\n shape: areaShape\n },\n point: pointMapping && __assign({\n color: color\n }, pointMapping),\n tooltip: tooltipOptions,\n // label 不传递给各个 geometry adaptor,由 label adaptor 处理\n label: undefined,\n args: {\n startOnZero: startOnZero\n }\n }\n });\n // 线默认 2px (折线不能复用面积图的 state,因为 fill 和 stroke 不匹配)\n var lineParams = {\n chart: chart,\n options: deepAssign({\n line: {\n size: 2\n }\n }, omit(options, ['state']), {\n // 颜色保持一致,因为如果颜色不一致,会导致 tooltip 中元素重复。\n // 如果存在,才设置,否则为空\n line: lineMapping && __assign({\n color: color\n }, lineMapping),\n sizeField: seriesField,\n state: lineMapping === null || lineMapping === void 0 ? void 0 : lineMapping.state,\n tooltip: false,\n // label 不传递给各个 geometry adaptor,由 label adaptor 处理\n label: undefined,\n args: {\n startOnZero: startOnZero\n }\n })\n };\n var pointParams = deepAssign({}, primary, {\n options: {\n tooltip: false,\n state: pointState\n }\n });\n // area geometry 处理\n area(primary);\n line(lineParams);\n point(pointParams);\n return params;\n}\n/**\n * 数据标签\n * @param params\n */\nfunction label(params) {\n var chart = params.chart,\n options = params.options;\n var label = options.label,\n yField = options.yField;\n var areaGeometry = findGeometry(chart, 'area');\n // label 为 false, 空 则不显示 label\n if (!label) {\n areaGeometry.label(false);\n } else {\n var callback = label.callback,\n cfg = __rest(label, [\"callback\"]);\n areaGeometry.label({\n fields: [yField],\n callback: callback,\n cfg: __assign({\n layout: [{\n type: 'limit-in-plot'\n }, {\n type: 'path-adjust-position'\n }, {\n type: 'point-adjust-position'\n }, {\n type: 'limit-in-plot',\n cfg: {\n action: 'hide'\n }\n }]\n }, transformLabel(cfg))\n });\n }\n return params;\n}\n/**\n * 处理 adjust\n * @param params\n */\nfunction adjust(params) {\n var chart = params.chart,\n options = params.options;\n var isStack = options.isStack,\n isPercent = options.isPercent,\n seriesField = options.seriesField;\n if ((isPercent || isStack) && seriesField) {\n each(chart.geometries, function (g) {\n g.adjust('stack');\n });\n }\n return params;\n}\n/**\n * 折线图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n // flow 的方式处理所有的配置到 G2 API\n return flow(theme, pattern('areaStyle'), transformations('rect'), geometry, meta, adjust, axis, legend, tooltip, label, slider, annotation(), interaction, animation, limitInPlot)(params);\n}","import { Plot } from '../../core/plot';\nimport { deepAssign } from '../../utils';\n/**\n * 面积图默认配置项\n */\nexport var DEFAULT_OPTIONS = deepAssign({}, Plot.getDefaultOptions(), {\n tooltip: {\n shared: true,\n showMarkers: true,\n showCrosshairs: true,\n crosshairs: {\n type: 'x'\n }\n },\n isStack: true,\n // 默认开启\n line: {},\n legend: {\n position: 'top-left',\n radio: {}\n }\n});","import { __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { getDataWhetherPercentage } from '../../utils/transform/percent';\nimport { adaptor, meta } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constants';\nvar Area = /** @class */function (_super) {\n __extends(Area, _super);\n function Area() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'area';\n return _this;\n }\n /**\n * 获取 面积图 默认配置项\n * 供外部使用\n */\n Area.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * 获取 面积图 默认配置\n */\n Area.prototype.getDefaultOptions = function () {\n return Area.getDefaultOptions();\n };\n /**\n * @override\n * @param data\n */\n Area.prototype.changeData = function (data) {\n this.updateOption({\n data: data\n });\n var _a = this.options,\n isPercent = _a.isPercent,\n xField = _a.xField,\n yField = _a.yField;\n var _b = this,\n chart = _b.chart,\n options = _b.options;\n meta({\n chart: chart,\n options: options\n });\n this.chart.changeData(getDataWhetherPercentage(data, yField, xField, yField, isPercent));\n };\n /**\n * 获取 面积图 的适配器\n */\n Area.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Area;\n}(Plot);\nexport { Area };","import { __assign, __extends } from \"tslib\";\nimport { Action, Util } from '@antv/g2';\nimport { get } from '@antv/util';\nimport { deepAssign, normalPadding } from '../../utils';\nvar PADDING_RIGHT = 10;\nvar PADDING_TOP = 5;\n/**\n * Action 中的 Button 按钮配置\n *\n * 可能的使用场景:brush filter\n */\nexport var BUTTON_ACTION_CONFIG = {\n padding: [8, 10],\n text: 'reset',\n textStyle: {\n default: {\n x: 0,\n y: 0,\n fontSize: 12,\n fill: '#333333',\n cursor: 'pointer'\n }\n },\n buttonStyle: {\n default: {\n fill: '#f7f7f7',\n stroke: '#cccccc',\n cursor: 'pointer'\n },\n active: {\n fill: '#e6e6e6'\n }\n }\n};\n/**\n * @override 复写 G2 Button Action, 后续直接使用 GUI\n */\nvar ButtonAction = /** @class */function (_super) {\n __extends(ButtonAction, _super);\n function ButtonAction() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.buttonGroup = null;\n _this.buttonCfg = __assign({\n name: 'button'\n }, BUTTON_ACTION_CONFIG);\n return _this;\n }\n /**\n * 获取 mix 默认的配置和用户配置\n */\n ButtonAction.prototype.getButtonCfg = function () {\n var view = this.context.view;\n var buttonCfg = get(view, ['interactions', 'filter-action', 'cfg', 'buttonConfig']);\n return deepAssign(this.buttonCfg, buttonCfg, this.cfg);\n };\n /**\n * 绘制 Button 和 文本\n */\n ButtonAction.prototype.drawButton = function () {\n var config = this.getButtonCfg();\n var group = this.context.view.foregroundGroup.addGroup({\n name: config.name\n });\n var textShape = this.drawText(group);\n this.drawBackground(group, textShape.getBBox());\n this.buttonGroup = group;\n };\n /**\n * 绘制文本\n */\n ButtonAction.prototype.drawText = function (group) {\n var _a;\n var config = this.getButtonCfg();\n // 添加文本\n return group.addShape({\n type: 'text',\n name: 'button-text',\n attrs: __assign({\n text: config.text\n }, (_a = config.textStyle) === null || _a === void 0 ? void 0 : _a.default)\n });\n };\n ButtonAction.prototype.drawBackground = function (group, bbox) {\n var _a;\n var config = this.getButtonCfg();\n var padding = normalPadding(config.padding);\n // 添加背景按钮\n var buttonShape = group.addShape({\n type: 'rect',\n name: 'button-rect',\n attrs: __assign({\n x: bbox.x - padding[3],\n y: bbox.y - padding[0],\n width: bbox.width + padding[1] + padding[3],\n height: bbox.height + padding[0] + padding[2]\n }, (_a = config.buttonStyle) === null || _a === void 0 ? void 0 : _a.default)\n });\n buttonShape.toBack(); // 在后面\n // active 效果内置\n group.on('mouseenter', function () {\n var _a;\n buttonShape.attr((_a = config.buttonStyle) === null || _a === void 0 ? void 0 : _a.active);\n });\n group.on('mouseleave', function () {\n var _a;\n buttonShape.attr((_a = config.buttonStyle) === null || _a === void 0 ? void 0 : _a.default);\n });\n return buttonShape;\n };\n // 重置位置\n ButtonAction.prototype.resetPosition = function () {\n var view = this.context.view;\n var coord = view.getCoordinate();\n var point = coord.convert({\n x: 1,\n y: 1\n }); // 后面直接改成左上角\n var buttonGroup = this.buttonGroup;\n var bbox = buttonGroup.getBBox();\n var matrix = Util.transform(null, [['t', point.x - bbox.width - PADDING_RIGHT, point.y + bbox.height + PADDING_TOP]]);\n buttonGroup.setMatrix(matrix);\n };\n /**\n * 显示\n */\n ButtonAction.prototype.show = function () {\n if (!this.buttonGroup) {\n this.drawButton();\n }\n this.resetPosition();\n this.buttonGroup.show();\n };\n /**\n * 隐藏\n */\n ButtonAction.prototype.hide = function () {\n if (this.buttonGroup) {\n this.buttonGroup.hide();\n }\n };\n /**\n * 销毁\n */\n ButtonAction.prototype.destroy = function () {\n var buttonGroup = this.buttonGroup;\n if (buttonGroup) {\n buttonGroup.remove();\n }\n _super.prototype.destroy.call(this);\n };\n return ButtonAction;\n}(Action);\nexport { ButtonAction };","import { registerAction, registerInteraction } from '@antv/g2';\nimport { ButtonAction } from './actions/reset-button';\nregisterAction('brush-reset-button', ButtonAction, {\n name: 'brush-reset-button'\n});\nregisterInteraction('filter-action', {});\n/**\n * G2 已经内置了 brush、brush-x、brush-y 等交互,其它:\n *\n * 1. element-range-highlight 是否可用重命名为 brush-highlight?(mask 可以移动)\n * 2. brush-visible 与 brush 的区别是?\n */\nfunction isPointInView(context) {\n return context.isInPlot();\n}\n/**\n * 获取 交互 start 阶段的相关配置\n */\nexport function getInteractionCfg(interactionType, brushType, options) {\n var _a = options || {},\n mask = _a.mask,\n isStartEnable = _a.isStartEnable;\n var maskType = brushType || 'rect';\n switch (interactionType) {\n case 'brush':\n return {\n showEnable: [{\n trigger: 'plot:mouseenter',\n action: 'cursor:crosshair',\n isEnable: isStartEnable || function () {\n return true;\n }\n }, {\n trigger: 'plot:mouseleave',\n action: 'cursor:default'\n }],\n start: [{\n trigger: 'mousedown',\n isEnable: isStartEnable || isPointInView,\n action: ['brush:start', \"\".concat(maskType, \"-mask:start\"), \"\".concat(maskType, \"-mask:show\")],\n // 对应第二个action的参数\n arg: [null, {\n maskStyle: mask === null || mask === void 0 ? void 0 : mask.style\n }]\n }],\n processing: [{\n trigger: 'mousemove',\n isEnable: isPointInView,\n action: [\"\".concat(maskType, \"-mask:resize\")]\n }],\n end: [{\n trigger: 'mouseup',\n isEnable: isPointInView,\n action: ['brush:filter', 'brush:end', \"\".concat(maskType, \"-mask:end\"), \"\".concat(maskType, \"-mask:hide\"), 'brush-reset-button:show']\n }],\n rollback: [{\n trigger: 'brush-reset-button:click',\n action: ['brush:reset', 'brush-reset-button:hide', 'cursor:crosshair']\n }]\n };\n case 'brush-highlight':\n return {\n showEnable: [{\n trigger: 'plot:mouseenter',\n action: 'cursor:crosshair',\n isEnable: isStartEnable || function () {\n return true;\n }\n }, {\n trigger: 'plot:mousemove',\n action: 'cursor:crosshair',\n isEnable: isStartEnable || function () {\n return true;\n }\n }, {\n trigger: 'plot:mousemove',\n action: 'cursor:default',\n isEnable: function isEnable(context) {\n return isStartEnable ? !isStartEnable(context) : false;\n }\n }, {\n trigger: 'mask:mouseenter',\n action: 'cursor:move',\n isEnable: isStartEnable || function () {\n return true;\n }\n }, {\n trigger: 'plot:mouseleave',\n action: 'cursor:default'\n }, {\n trigger: 'mask:mouseleave',\n action: 'cursor:crosshair'\n }],\n start: [{\n trigger: 'plot:mousedown',\n isEnable: isStartEnable || function (context) {\n // 不要点击在 mask 上重新开始\n return !context.isInShape('mask');\n },\n action: [\"\".concat(maskType, \"-mask:start\"), \"\".concat(maskType, \"-mask:show\")],\n // 对应第 1 个action的参数\n arg: [{\n maskStyle: mask === null || mask === void 0 ? void 0 : mask.style\n }]\n }, {\n trigger: 'mask:dragstart',\n action: [\"\".concat(maskType, \"-mask:moveStart\")]\n }],\n processing: [{\n trigger: 'plot:mousemove',\n action: [\"\".concat(maskType, \"-mask:resize\")]\n }, {\n trigger: 'mask:drag',\n action: [\"\".concat(maskType, \"-mask:move\")]\n }, {\n trigger: 'mask:change',\n action: ['element-range-highlight:highlight']\n }],\n end: [{\n trigger: 'plot:mouseup',\n action: [\"\".concat(maskType, \"-mask:end\")]\n }, {\n trigger: 'mask:dragend',\n action: [\"\".concat(maskType, \"-mask:moveEnd\")]\n }, {\n trigger: 'document:mouseup',\n isEnable: function isEnable(context) {\n return !context.isInPlot();\n },\n action: ['element-range-highlight:clear', \"\".concat(maskType, \"-mask:end\"), \"\".concat(maskType, \"-mask:hide\")]\n }],\n rollback: [{\n trigger: 'dblclick',\n action: ['element-range-highlight:clear', \"\".concat(maskType, \"-mask:hide\")]\n }]\n };\n case 'brush-x':\n return {\n showEnable: [{\n trigger: 'plot:mouseenter',\n action: 'cursor:crosshair',\n isEnable: isStartEnable || function () {\n return true;\n }\n }, {\n trigger: 'plot:mouseleave',\n action: 'cursor:default'\n }],\n start: [{\n trigger: 'mousedown',\n isEnable: isStartEnable || isPointInView,\n action: ['brush-x:start', \"\".concat(maskType, \"-mask:start\"), \"\".concat(maskType, \"-mask:show\")],\n // 对应第二个action的参数\n arg: [null, {\n maskStyle: mask === null || mask === void 0 ? void 0 : mask.style\n }]\n }],\n processing: [{\n trigger: 'mousemove',\n isEnable: isPointInView,\n action: [\"\".concat(maskType, \"-mask:resize\")]\n }],\n end: [{\n trigger: 'mouseup',\n isEnable: isPointInView,\n action: ['brush-x:filter', 'brush-x:end', \"\".concat(maskType, \"-mask:end\"), \"\".concat(maskType, \"-mask:hide\")]\n }],\n rollback: [{\n trigger: 'dblclick',\n action: ['brush-x:reset']\n }]\n };\n case 'brush-x-highlight':\n return {\n showEnable: [{\n trigger: 'plot:mouseenter',\n action: 'cursor:crosshair',\n isEnable: isStartEnable || function () {\n return true;\n }\n }, {\n trigger: 'mask:mouseenter',\n action: 'cursor:move',\n isEnable: isStartEnable || function () {\n return true;\n }\n }, {\n trigger: 'plot:mouseleave',\n action: 'cursor:default'\n }, {\n trigger: 'mask:mouseleave',\n action: 'cursor:crosshair'\n }],\n start: [{\n trigger: 'plot:mousedown',\n isEnable: isStartEnable || function (context) {\n // 不要点击在 mask 上重新开始\n return !context.isInShape('mask');\n },\n action: [\"\".concat(maskType, \"-mask:start\"), \"\".concat(maskType, \"-mask:show\")],\n // 对应第 1 个action的参数\n arg: [{\n maskStyle: mask === null || mask === void 0 ? void 0 : mask.style\n }]\n }, {\n trigger: 'mask:dragstart',\n action: [\"\".concat(maskType, \"-mask:moveStart\")]\n }],\n processing: [{\n trigger: 'plot:mousemove',\n action: [\"\".concat(maskType, \"-mask:resize\")]\n }, {\n trigger: 'mask:drag',\n action: [\"\".concat(maskType, \"-mask:move\")]\n }, {\n trigger: 'mask:change',\n action: ['element-range-highlight:highlight']\n }],\n end: [{\n trigger: 'plot:mouseup',\n action: [\"\".concat(maskType, \"-mask:end\")]\n }, {\n trigger: 'mask:dragend',\n action: [\"\".concat(maskType, \"-mask:moveEnd\")]\n }, {\n trigger: 'document:mouseup',\n isEnable: function isEnable(context) {\n return !context.isInPlot();\n },\n action: ['element-range-highlight:clear', \"\".concat(maskType, \"-mask:end\"), \"\".concat(maskType, \"-mask:hide\")]\n }],\n rollback: [{\n trigger: 'dblclick',\n action: ['element-range-highlight:clear', \"\".concat(maskType, \"-mask:hide\")]\n }]\n };\n case 'brush-y':\n return {\n showEnable: [{\n trigger: 'plot:mouseenter',\n action: 'cursor:crosshair',\n isEnable: isStartEnable || function () {\n return true;\n }\n }, {\n trigger: 'plot:mouseleave',\n action: 'cursor:default'\n }],\n start: [{\n trigger: 'mousedown',\n isEnable: isStartEnable || isPointInView,\n action: ['brush-y:start', \"\".concat(maskType, \"-mask:start\"), \"\".concat(maskType, \"-mask:show\")],\n // 对应第二个action的参数\n arg: [null, {\n maskStyle: mask === null || mask === void 0 ? void 0 : mask.style\n }]\n }],\n processing: [{\n trigger: 'mousemove',\n isEnable: isPointInView,\n action: [\"\".concat(maskType, \"-mask:resize\")]\n }],\n end: [{\n trigger: 'mouseup',\n isEnable: isPointInView,\n action: ['brush-y:filter', 'brush-y:end', \"\".concat(maskType, \"-mask:end\"), \"\".concat(maskType, \"-mask:hide\")]\n }],\n rollback: [{\n trigger: 'dblclick',\n action: ['brush-y:reset']\n }]\n };\n case 'brush-y-highlight':\n return {\n showEnable: [{\n trigger: 'plot:mouseenter',\n action: 'cursor:crosshair',\n isEnable: isStartEnable || function () {\n return true;\n }\n }, {\n trigger: 'mask:mouseenter',\n action: 'cursor:move',\n isEnable: isStartEnable || function () {\n return true;\n }\n }, {\n trigger: 'plot:mouseleave',\n action: 'cursor:default'\n }, {\n trigger: 'mask:mouseleave',\n action: 'cursor:crosshair'\n }],\n start: [{\n trigger: 'plot:mousedown',\n isEnable: isStartEnable || function (context) {\n // 不要点击在 mask 上重新开始\n return !context.isInShape('mask');\n },\n action: [\"\".concat(maskType, \"-mask:start\"), \"\".concat(maskType, \"-mask:show\")],\n // 对应第 1 个action的参数\n arg: [{\n maskStyle: mask === null || mask === void 0 ? void 0 : mask.style\n }]\n }, {\n trigger: 'mask:dragstart',\n action: [\"\".concat(maskType, \"-mask:moveStart\")]\n }],\n processing: [{\n trigger: 'plot:mousemove',\n action: [\"\".concat(maskType, \"-mask:resize\")]\n }, {\n trigger: 'mask:drag',\n action: [\"\".concat(maskType, \"-mask:move\")]\n }, {\n trigger: 'mask:change',\n action: ['element-range-highlight:highlight']\n }],\n end: [{\n trigger: 'plot:mouseup',\n action: [\"\".concat(maskType, \"-mask:end\")]\n }, {\n trigger: 'mask:dragend',\n action: [\"\".concat(maskType, \"-mask:moveEnd\")]\n }, {\n trigger: 'document:mouseup',\n isEnable: function isEnable(context) {\n return !context.isInPlot();\n },\n action: ['element-range-highlight:clear', \"\".concat(maskType, \"-mask:end\"), \"\".concat(maskType, \"-mask:hide\")]\n }],\n rollback: [{\n trigger: 'dblclick',\n action: ['element-range-highlight:clear', \"\".concat(maskType, \"-mask:hide\")]\n }]\n };\n default:\n return {};\n }\n}\n// 直接拷贝过来的\nregisterInteraction('brush', getInteractionCfg('brush'));\n// 复写 element-range-highlight interaction\nregisterInteraction('brush-highlight', getInteractionCfg('brush-highlight'));\n// 复写\nregisterInteraction('brush-x', getInteractionCfg('brush-x', 'x-rect'));\n// 复写\nregisterInteraction('brush-y', getInteractionCfg('brush-y', 'y-rect'));\n// 新增, x 框选高亮\nregisterInteraction('brush-x-highlight', getInteractionCfg('brush-x-highlight', 'x-rect'));\n// 新增, y 框选高亮\nregisterInteraction('brush-y-highlight', getInteractionCfg('brush-y-highlight', 'y-rect'));","import { filter } from '@antv/util';\n/** 先引入brush 交互 */\nimport '../interactions/brush';\nimport { getInteractionCfg } from '../interactions/brush';\nimport { deepAssign } from '../utils';\nvar BRUSH_TYPES = ['brush', 'brush-x', 'brush-y', 'brush-highlight', 'brush-x-highlight', 'brush-y-highlight'];\n/**\n * brush 交互\n */\nexport function brushInteraction(params) {\n var options = params.options;\n var brush = options.brush;\n // 先过滤掉 brush 等交互\n var interactions = filter(options.interactions || [], function (i) {\n return BRUSH_TYPES.indexOf(i.type) === -1;\n });\n // 设置 brush 交互\n if (brush === null || brush === void 0 ? void 0 : brush.enabled) {\n BRUSH_TYPES.forEach(function (type) {\n var enable = false;\n switch (brush.type) {\n case 'x-rect':\n enable = type === (brush.action === 'highlight' ? 'brush-x-highlight' : 'brush-x');\n break;\n case 'y-rect':\n enable = type === (brush.action === 'highlight' ? 'brush-y-highlight' : 'brush-y');\n break;\n default:\n enable = type === (brush.action === 'highlight' ? 'brush-highlight' : 'brush');\n break;\n }\n var obj = {\n type: type,\n enable: enable\n };\n if (brush) {\n obj.cfg = getInteractionCfg(type, brush.type, brush);\n }\n interactions.push(obj);\n });\n // 塞入 button 配置 (G2Plot 的封装)\n if ((brush === null || brush === void 0 ? void 0 : brush.action) !== 'highlight') {\n interactions.push({\n type: 'filter-action',\n cfg: {\n buttonConfig: brush.button\n }\n });\n }\n }\n return deepAssign({}, params, {\n options: {\n interactions: interactions\n }\n });\n}","import { registerInteraction } from '@antv/g2';\nvar INTERACTION_MAP = {\n hover: '__interval-connected-area-hover__',\n click: '__interval-connected-area-click__'\n};\nvar getStartStages = function getStartStages(trigger, style) {\n if (trigger === 'hover') {\n return [{\n trigger: \"interval:mouseenter\",\n action: ['element-highlight-by-color:highlight', 'element-link-by-color:link'],\n arg: [null, {\n style: style\n }]\n }];\n }\n return [{\n trigger: \"interval:click\",\n action: ['element-highlight-by-color:clear', 'element-highlight-by-color:highlight', 'element-link-by-color:clear', 'element-link-by-color:unlink', 'element-link-by-color:link'],\n arg: [null, null, null, null, {\n style: style\n }]\n }];\n};\n/** hover 触发的连通区域交互 */\nregisterInteraction(INTERACTION_MAP.hover, {\n start: getStartStages(INTERACTION_MAP.hover),\n end: [{\n trigger: 'interval:mouseleave',\n action: ['element-highlight-by-color:reset', 'element-link-by-color:unlink']\n }]\n});\n/** click 触发的联通区域交互 */\nregisterInteraction(INTERACTION_MAP.click, {\n start: getStartStages(INTERACTION_MAP.click),\n end: [{\n trigger: 'document:mousedown',\n action: ['element-highlight-by-color:clear', 'element-link-by-color:clear']\n }]\n});\n/**\n * 返回支持联通区域组件交互的 adaptor,适用于堆叠柱形图/堆叠条形图\n * @param disable\n */\nexport function connectedArea(disable) {\n if (disable === void 0) {\n disable = false;\n }\n return function (params) {\n var chart = params.chart,\n options = params.options;\n var connectedArea = options.connectedArea;\n var clear = function clear() {\n chart.removeInteraction(INTERACTION_MAP.hover);\n chart.removeInteraction(INTERACTION_MAP.click);\n };\n if (!disable && connectedArea) {\n var trigger = connectedArea.trigger || 'hover';\n clear();\n chart.interaction(INTERACTION_MAP[trigger], {\n start: getStartStages(trigger, connectedArea.style)\n });\n } else {\n clear();\n }\n return params;\n };\n}","import { isNumber } from '@antv/util';\n/**\n * 转化率的计算方式\n * @param prev\n * @param next\n */\nexport function conversionTagFormatter(prev, next) {\n if (!isNumber(prev) || !isNumber(next)) {\n return '-';\n }\n // 0 / 0 没有意义\n if (prev === 0 && next === 0) {\n return '-';\n }\n if (prev === next) {\n return '100%';\n }\n if (prev === 0) {\n return '∞';\n }\n return \"\".concat((100 * next / prev).toFixed(2), \"%\");\n}","import { __assign } from \"tslib\";\nimport { getTheme } from '@antv/g2';\nimport { each, find, isObject, map } from '@antv/util';\nimport { deepAssign } from '../utils';\nimport { conversionTagFormatter } from '../utils/conversion';\nfunction getConversionTagOptionsWithDefaults(options, horizontal) {\n return deepAssign({\n size: horizontal ? 32 : 80,\n spacing: horizontal ? 8 : 12,\n offset: horizontal ? 32 : 0,\n arrow: options.arrow !== false && {\n headSize: 12,\n style: {\n fill: 'rgba(0, 0, 0, 0.05)'\n }\n },\n text: options.text !== false && {\n style: {\n fontSize: 12,\n fill: 'rgba(0, 0, 0, 0.85)',\n textAlign: 'center',\n textBaseline: 'middle'\n },\n formatter: conversionTagFormatter\n }\n }, options);\n}\nfunction parsePoints(coordinate, element) {\n // @ts-ignore\n return map(element.getModel().points, function (point) {\n return coordinate.convertPoint(point);\n });\n}\nfunction renderArrowTag(config, elemPrev, elemNext) {\n var view = config.view,\n geometry = config.geometry,\n group = config.group,\n options = config.options,\n horizontal = config.horizontal;\n var offset = options.offset,\n size = options.size,\n arrow = options.arrow;\n var coordinate = view.getCoordinate();\n var pointPrev = parsePoints(coordinate, elemPrev)[3];\n var pointNext = parsePoints(coordinate, elemNext)[0];\n var totalHeight = pointNext.y - pointPrev.y;\n var totalWidth = pointNext.x - pointPrev.x;\n if (typeof arrow === 'boolean') {\n return;\n }\n var headSize = arrow.headSize;\n var spacing = options.spacing;\n var points;\n if (horizontal) {\n if ((totalWidth - headSize) / 2 < spacing) {\n // 当柱间距不足容纳箭头尖与间隔时,画三角并挤占间隔\n spacing = Math.max(1, (totalWidth - headSize) / 2);\n points = [[pointPrev.x + spacing, pointPrev.y - offset], [pointPrev.x + spacing, pointPrev.y - offset - size], [pointNext.x - spacing, pointNext.y - offset - size / 2]];\n } else {\n // 当柱间距足够时,画完整图形并留出间隔。\n points = [[pointPrev.x + spacing, pointPrev.y - offset], [pointPrev.x + spacing, pointPrev.y - offset - size], [pointNext.x - spacing - headSize, pointNext.y - offset - size], [pointNext.x - spacing, pointNext.y - offset - size / 2], [pointNext.x - spacing - headSize, pointNext.y - offset]];\n }\n } else {\n if ((totalHeight - headSize) / 2 < spacing) {\n // 当柱间距不足容纳箭头尖与间隔时,画三角并挤占间隔\n spacing = Math.max(1, (totalHeight - headSize) / 2);\n points = [[pointPrev.x + offset, pointPrev.y + spacing], [pointPrev.x + offset + size, pointPrev.y + spacing], [pointNext.x + offset + size / 2, pointNext.y - spacing]];\n } else {\n // 当柱间距足够时,画完整图形并留出间隔。\n points = [[pointPrev.x + offset, pointPrev.y + spacing], [pointPrev.x + offset + size, pointPrev.y + spacing], [pointNext.x + offset + size, pointNext.y - spacing - headSize], [pointNext.x + offset + size / 2, pointNext.y - spacing], [pointNext.x + offset, pointNext.y - spacing - headSize]];\n }\n }\n group.addShape('polygon', {\n id: \"\".concat(view.id, \"-conversion-tag-arrow-\").concat(geometry.getElementId(elemPrev.getModel().mappingData)),\n name: 'conversion-tag-arrow',\n origin: {\n element: elemPrev,\n nextElement: elemNext\n },\n attrs: __assign(__assign({}, arrow.style || {}), {\n points: points\n })\n });\n}\nfunction renderTextTag(config, elemPrev, elemNext) {\n var _a, _b, _c;\n var view = config.view,\n geometry = config.geometry,\n group = config.group,\n options = config.options,\n field = config.field,\n horizontal = config.horizontal;\n var offset = options.offset,\n size = options.size;\n if (typeof options.text === 'boolean') {\n return;\n }\n var coordinate = view.getCoordinate();\n var text = ((_a = options.text) === null || _a === void 0 ? void 0 : _a.formatter) && ((_b = options.text) === null || _b === void 0 ? void 0 : _b.formatter(elemPrev.getData()[field], elemNext.getData()[field]));\n var pointPrev = parsePoints(coordinate, elemPrev)[horizontal ? 3 : 0];\n var pointNext = parsePoints(coordinate, elemNext)[horizontal ? 0 : 3];\n var textShape = group.addShape('text', {\n id: \"\".concat(view.id, \"-conversion-tag-text-\").concat(geometry.getElementId(elemPrev.getModel().mappingData)),\n name: 'conversion-tag-text',\n origin: {\n element: elemPrev,\n nextElement: elemNext\n },\n attrs: __assign(__assign({}, ((_c = options.text) === null || _c === void 0 ? void 0 : _c.style) || {}), {\n text: text,\n x: horizontal ? (pointPrev.x + pointNext.x) / 2 : pointPrev.x + offset + size / 2,\n y: horizontal ? pointPrev.y - offset - size / 2 : (pointPrev.y + pointNext.y) / 2\n })\n });\n if (horizontal) {\n var totalWidth = pointNext.x - pointPrev.x;\n var textWidth = textShape.getBBox().width;\n if (textWidth > totalWidth) {\n var cWidth = textWidth / text.length;\n var cEnd = Math.max(1, Math.ceil(totalWidth / cWidth) - 1);\n var textAdjusted = \"\".concat(text.slice(0, cEnd), \"...\");\n textShape.attr('text', textAdjusted);\n }\n }\n}\nfunction renderTag(options, elemPrev, elemNext) {\n renderArrowTag(options, elemPrev, elemNext);\n renderTextTag(options, elemPrev, elemNext);\n}\n/**\n * 返回支持转化率组件的 adaptor,适用于柱形图/条形图\n * @param field 用户转化率计算的字段\n * @param horizontal 是否水平方向的转化率\n * @param disabled 是否禁用\n */\nexport function conversionTag(field, horizontal, disabled) {\n if (horizontal === void 0) {\n horizontal = true;\n }\n if (disabled === void 0) {\n disabled = false;\n }\n return function (params) {\n var options = params.options,\n chart = params.chart;\n var conversionTag = options.conversionTag,\n theme = options.theme;\n if (conversionTag && !disabled) {\n // 有转化率组件时,柱子宽度占比自动为 1/3\n chart.theme(deepAssign({}, isObject(theme) ? theme : getTheme(theme), {\n columnWidthRatio: 1 / 3\n }));\n // 使用 shape annotation 绘制转化率组件\n chart.annotation().shape({\n render: function render(container, view) {\n var group = container.addGroup({\n id: \"\".concat(chart.id, \"-conversion-tag-group\"),\n name: 'conversion-tag-group'\n });\n var interval = find(chart.geometries, function (geom) {\n return geom.type === 'interval';\n });\n var config = {\n view: view,\n geometry: interval,\n group: group,\n field: field,\n horizontal: horizontal,\n options: getConversionTagOptionsWithDefaults(conversionTag, horizontal)\n };\n var elements = interval.elements;\n each(elements, function (elem, idx) {\n if (idx > 0) {\n renderTag(config, elements[idx - 1], elem);\n }\n });\n }\n });\n }\n return params;\n };\n}","import { __assign, __rest } from \"tslib\";\nimport { each, filter, isMatch } from '@antv/util';\nimport { brushInteraction } from '../../adaptor/brush';\nimport { animation, annotation, interaction, limitInPlot, scale, scrollbar, slider, state, theme, transformations } from '../../adaptor/common';\nimport { connectedArea } from '../../adaptor/connected-area';\nimport { conversionTag } from '../../adaptor/conversion-tag';\nimport { interval } from '../../adaptor/geometries';\nimport { pattern } from '../../adaptor/pattern';\nimport { adjustYMetaByZero, deepAssign, findGeometry, flow, pick, transformLabel } from '../../utils';\nimport { getDataWhetherPercentage, getDeepPercent } from '../../utils/transform/percent';\n/**\n * defaultOptions\n * @param params\n */\nfunction defaultOptions(params) {\n var options = params.options;\n // 默认 legend 位置\n var legend = options.legend;\n var seriesField = options.seriesField,\n isStack = options.isStack;\n if (seriesField) {\n if (legend !== false) {\n legend = __assign({\n position: isStack ? 'right-top' : 'top-left'\n }, legend);\n }\n } else {\n legend = false;\n }\n // @ts-ignore 直接改值\n params.options.legend = legend;\n return params;\n}\n/**\n * 字段\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var data = options.data,\n columnStyle = options.columnStyle,\n color = options.color,\n columnWidthRatio = options.columnWidthRatio,\n isPercent = options.isPercent,\n isGroup = options.isGroup,\n isStack = options.isStack,\n xField = options.xField,\n yField = options.yField,\n seriesField = options.seriesField,\n groupField = options.groupField,\n tooltip = options.tooltip,\n shape = options.shape;\n var percentData = isPercent && isGroup && isStack ? getDeepPercent(data, yField, [xField, groupField], yField) : getDataWhetherPercentage(data, yField, xField, yField, isPercent);\n var chartData = [];\n // 存在堆叠,并且存在堆叠seriesField分类,并且不存在分组的时候 进行堆叠\n if (isStack && seriesField && !isGroup) {\n percentData.forEach(function (item) {\n var stackedItem = chartData.find(function (v) {\n return v[xField] === item[xField] && v[seriesField] === item[seriesField];\n });\n if (stackedItem) {\n stackedItem[yField] += item[yField] || 0;\n } else {\n chartData.push(__assign({}, item));\n }\n });\n } else {\n chartData = percentData;\n }\n chart.data(chartData);\n // 百分比堆积图,默认会给一个 % 格式化逻辑, 用户可自定义\n var tooltipOptions = isPercent ? __assign({\n formatter: function formatter(datum) {\n var _a;\n return {\n name: isGroup && isStack ? \"\".concat(datum[seriesField], \" - \").concat(datum[groupField]) : (_a = datum[seriesField]) !== null && _a !== void 0 ? _a : datum[xField],\n value: (Number(datum[yField]) * 100).toFixed(2) + '%'\n };\n }\n }, tooltip) : tooltip;\n var p = deepAssign({}, params, {\n options: {\n data: chartData,\n widthRatio: columnWidthRatio,\n tooltip: tooltipOptions,\n interval: {\n shape: shape,\n style: columnStyle,\n color: color\n }\n }\n });\n interval(p);\n return p;\n}\n/**\n * meta 配置\n * @param params\n */\nexport function meta(params) {\n var _a, _b;\n var options = params.options;\n var xAxis = options.xAxis,\n yAxis = options.yAxis,\n xField = options.xField,\n yField = options.yField,\n data = options.data,\n isPercent = options.isPercent;\n var percentYMeta = isPercent ? {\n max: 1,\n min: 0,\n minLimit: 0,\n maxLimit: 1\n } : {};\n return flow(scale((_a = {}, _a[xField] = xAxis, _a[yField] = yAxis, _a), (_b = {}, _b[xField] = {\n type: 'cat'\n }, _b[yField] = __assign(__assign({}, adjustYMetaByZero(data, yField)), percentYMeta), _b)))(params);\n}\n/**\n * axis 配置\n * @param params\n */\nfunction axis(params) {\n var chart = params.chart,\n options = params.options;\n var xAxis = options.xAxis,\n yAxis = options.yAxis,\n xField = options.xField,\n yField = options.yField;\n // 为 false 则是不显示轴\n if (xAxis === false) {\n chart.axis(xField, false);\n } else {\n chart.axis(xField, xAxis);\n }\n if (yAxis === false) {\n chart.axis(yField, false);\n } else {\n chart.axis(yField, yAxis);\n }\n return params;\n}\n/**\n * legend 配置\n * @param params\n */\nexport function legend(params) {\n var chart = params.chart,\n options = params.options;\n var legend = options.legend,\n seriesField = options.seriesField;\n if (legend && seriesField) {\n chart.legend(seriesField, legend);\n } else if (legend === false) {\n chart.legend(false);\n }\n return params;\n}\n/**\n * 数据标签\n * @param params\n */\nfunction label(params) {\n var chart = params.chart,\n options = params.options;\n var label = options.label,\n yField = options.yField,\n isRange = options.isRange;\n var geometry = findGeometry(chart, 'interval');\n if (!label) {\n geometry.label(false);\n } else {\n var callback = label.callback,\n cfg = __rest(label, [\"callback\"]);\n geometry.label({\n fields: [yField],\n callback: callback,\n cfg: __assign({\n // 配置默认的 label layout: 如果用户没有指定 layout 和 position, 则自动配置 layout\n layout: (cfg === null || cfg === void 0 ? void 0 : cfg.position) ? undefined : [{\n type: 'interval-adjust-position'\n }, {\n type: 'interval-hide-overlap'\n }, {\n type: 'adjust-color'\n }, {\n type: 'limit-in-plot',\n cfg: {\n action: 'hide'\n }\n }]\n }, transformLabel(isRange ? __assign({\n content: function content(item) {\n var _a;\n return (_a = item[yField]) === null || _a === void 0 ? void 0 : _a.join('-');\n }\n }, cfg) : cfg))\n });\n }\n return params;\n}\n/**\n * 柱形图 tooltip 配置 (对堆叠、分组做特殊处理)\n * @param params\n */\nfunction columnTooltip(params) {\n var chart = params.chart,\n options = params.options;\n var tooltip = options.tooltip,\n isGroup = options.isGroup,\n isStack = options.isStack,\n groupField = options.groupField,\n data = options.data,\n xField = options.xField,\n yField = options.yField,\n seriesField = options.seriesField;\n if (tooltip === false) {\n chart.tooltip(false);\n } else {\n var tooltipOptions = tooltip;\n // fix: https://github.com/antvis/G2Plot/issues/2572\n if (isGroup && isStack) {\n var customItems_1 = tooltipOptions.customItems;\n var tooltipFormatter_1 = (tooltipOptions === null || tooltipOptions === void 0 ? void 0 : tooltipOptions.formatter) || function (datum) {\n return {\n name: \"\".concat(datum[seriesField], \" - \").concat(datum[groupField]),\n value: datum[yField]\n };\n };\n tooltipOptions = __assign(__assign({}, tooltipOptions), {\n customItems: function customItems(originalItems) {\n var items = [];\n each(originalItems, function (item) {\n // Find datas in same cluster\n var datas = filter(data, function (d) {\n return isMatch(d, pick(item.data, [xField, seriesField]));\n });\n datas.forEach(function (datum) {\n items.push(__assign(__assign(__assign({}, item), {\n value: datum[yField],\n data: datum,\n mappingData: {\n _origin: datum\n }\n }), tooltipFormatter_1(datum)));\n });\n });\n // fix https://github.com/antvis/G2Plot/issues/3367\n return customItems_1 ? customItems_1(items) : items;\n }\n });\n }\n chart.tooltip(tooltipOptions);\n }\n return params;\n}\n/**\n * 柱形图适配器\n * @param params\n */\nexport function adaptor(params, isBar) {\n if (isBar === void 0) {\n isBar = false;\n }\n var options = params.options;\n var seriesField = options.seriesField;\n return flow(defaultOptions,\n // 处理默认配置\n theme,\n // theme 需要在 geometry 之前\n pattern('columnStyle'), state, transformations('rect'), geometry, meta, axis, legend, columnTooltip, slider, scrollbar, label, brushInteraction, interaction, animation, annotation(), conversionTag(options.yField, !isBar, !!seriesField),\n // 有拆分的时候禁用转化率\n connectedArea(!options.isStack), limitInPlot)(params);\n}","import { __assign } from \"tslib\";\nimport { tooltip } from '../../adaptor/common';\nimport { deepAssign, flow } from '../../utils';\nimport { adaptor as columnAdaptor } from '../column/adaptor';\nexport { meta } from '../column/adaptor';\n/**\n * 处理默认配置项\n * 1. switch xField、 yField\n * 2. switch xAxis、 yAxis and adjust axis.position configuration\n */\nfunction defaultOptions(params) {\n var options = params.options;\n var xField = options.xField,\n yField = options.yField,\n xAxis = options.xAxis,\n yAxis = options.yAxis;\n var position = {\n left: 'bottom',\n right: 'top',\n top: 'left',\n bottom: 'right'\n };\n var verticalAxis = yAxis !== false ? __assign({\n position: position[(yAxis === null || yAxis === void 0 ? void 0 : yAxis.position) || 'left']\n }, yAxis) : false;\n var horizontalAxis = xAxis !== false ? __assign({\n position: position[(xAxis === null || xAxis === void 0 ? void 0 : xAxis.position) || 'bottom']\n }, xAxis) : false;\n return __assign(__assign({}, params), {\n options: __assign(__assign({}, options), {\n xField: yField,\n yField: xField,\n // 条形图 xAxis,yAxis 不可以做 deepAssign\n xAxis: verticalAxis,\n yAxis: horizontalAxis\n })\n });\n}\n/**\n * label 适配器\n * @param params\n */\nfunction label(params) {\n var options = params.options;\n var label = options.label;\n // label of bar charts default position is left, if plot has label\n if (label && !label.position) {\n label.position = 'left';\n // 配置默认的 label layout: 如果用户没有指定 layout 和 position, 则自动配置 layout\n if (!label.layout) {\n label.layout = [{\n type: 'interval-adjust-position'\n }, {\n type: 'interval-hide-overlap'\n }, {\n type: 'adjust-color'\n }, {\n type: 'limit-in-plot',\n cfg: {\n action: 'hide'\n }\n }];\n }\n }\n return deepAssign({}, params, {\n options: {\n label: label\n }\n });\n}\n/**\n * legend 适配器\n * @param params\n */\nfunction legend(params) {\n var options = params.options;\n // 默认 legend 位置\n var seriesField = options.seriesField,\n isStack = options.isStack;\n var legend = options.legend;\n if (seriesField) {\n if (legend !== false) {\n legend = __assign({\n position: isStack ? 'top-left' : 'right-top'\n }, legend || {});\n }\n } else {\n legend = false;\n }\n return deepAssign({}, params, {\n options: {\n legend: legend\n }\n });\n}\n/**\n * coordinate 适配器\n * @param params\n */\nfunction coordinate(params) {\n // transpose column to bar 对角变换 & y 方向镜像变换\n var options = params.options;\n var coordinateOptions = [{\n type: 'transpose'\n }, {\n type: 'reflectY'\n }].concat(options.coordinate || []);\n return deepAssign({}, params, {\n options: {\n coordinate: coordinateOptions\n }\n });\n}\n/**\n * 柱形图适配器\n * @param params\n */\nexport function geometry(params) {\n var chart = params.chart,\n options = params.options;\n var barStyle = options.barStyle,\n barWidthRatio = options.barWidthRatio,\n minBarWidth = options.minBarWidth,\n maxBarWidth = options.maxBarWidth,\n barBackground = options.barBackground;\n return columnAdaptor({\n chart: chart,\n options: __assign(__assign({}, options), {\n // rename attrs as column\n columnStyle: barStyle,\n columnWidthRatio: barWidthRatio,\n minColumnWidth: minBarWidth,\n maxColumnWidth: maxBarWidth,\n columnBackground: barBackground\n })\n }, true);\n}\n/**\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n // flow 的方式处理所有的配置到 G2 API\n return flow(defaultOptions, label, legend, tooltip, coordinate, geometry)(params);\n}","import { Plot } from '../../core/plot';\nimport { deepAssign } from '../../utils';\n/**\n * 条形图默认配置项\n */\nexport var DEFAULT_OPTIONS = deepAssign({}, Plot.getDefaultOptions(), {\n barWidthRatio: 0.6,\n marginRatio: 1 / 32,\n tooltip: {\n shared: true,\n showMarkers: false,\n offset: 20\n },\n legend: {\n radio: {}\n },\n interactions: [{\n type: 'active-region'\n }]\n});","var _a;\n// 漏斗占比: data[n][yField] / data[0][yField]\nexport var FUNNEL_PERCENT = '$$percentage$$';\n// 漏斗映射值\nexport var FUNNEL_MAPPING_VALUE = '$$mappingValue$$';\n// 漏斗转化率: data[n][yField] / data[n-1][yField];\nexport var FUNNEL_CONVERSATION = '$$conversion$$';\n// 漏斗单项占总体和的百分比,用于动态漏斗图计算高度:\n// data[n][yField] / sum(data[0-n][yField])\nexport var FUNNEL_TOTAL_PERCENT = '$$totalPercentage$$';\n// 漏斗多边型 x 坐标\nexport var PLOYGON_X = '$$x$$';\nexport var PLOYGON_Y = '$$y$$';\n/**\n * 漏斗图 默认配置项\n */\nexport var DEFAULT_OPTIONS = {\n appendPadding: [0, 80],\n minSize: 0,\n maxSize: 1,\n meta: (_a = {}, _a[FUNNEL_MAPPING_VALUE] = {\n min: 0,\n max: 1,\n nice: false\n }, _a),\n label: {\n style: {\n fill: '#fff',\n fontSize: 12\n }\n },\n tooltip: {\n showTitle: false,\n showMarkers: false,\n shared: false\n },\n conversionTag: {\n offsetX: 10,\n offsetY: 0,\n style: {\n fontSize: 12,\n fill: 'rgba(0,0,0,0.45)'\n }\n }\n};","import { __assign, __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { getDataWhetherPercentage } from '../../utils/transform/percent';\nimport { adaptor, meta } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constants';\n/**\n * 条形图\n */\nvar Bar = /** @class */function (_super) {\n __extends(Bar, _super);\n function Bar() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'bar';\n return _this;\n }\n /**\n * 获取 条形图 默认配置项\n * 供外部使用\n */\n Bar.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * @override\n */\n Bar.prototype.changeData = function (data) {\n var _a, _b;\n this.updateOption({\n data: data\n });\n var _c = this,\n chart = _c.chart,\n options = _c.options;\n var isPercent = options.isPercent;\n var xField = options.xField,\n yField = options.yField,\n xAxis = options.xAxis,\n yAxis = options.yAxis;\n _a = [yField, xField], xField = _a[0], yField = _a[1];\n _b = [yAxis, xAxis], xAxis = _b[0], yAxis = _b[1];\n var switchedFieldOptions = __assign(__assign({}, options), {\n xField: xField,\n yField: yField,\n yAxis: yAxis,\n xAxis: xAxis\n });\n meta({\n chart: chart,\n options: switchedFieldOptions\n });\n chart.changeData(getDataWhetherPercentage(data, xField, yField, xField, isPercent));\n };\n /**\n * 获取 条形图 默认配置\n */\n Bar.prototype.getDefaultOptions = function () {\n return Bar.getDefaultOptions();\n };\n /**\n * 获取 条形图 的适配器\n */\n Bar.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Bar;\n}(Plot);\nexport { Bar };","import { Plot } from '../../core/plot';\nimport { deepAssign } from '../../utils';\n/**\n * 柱形图默认配置项\n */\nexport var DEFAULT_OPTIONS = deepAssign({}, Plot.getDefaultOptions(), {\n columnWidthRatio: 0.6,\n marginRatio: 1 / 32,\n tooltip: {\n shared: true,\n showMarkers: false,\n offset: 20\n },\n legend: {\n radio: {}\n },\n interactions: [{\n type: 'active-region'\n }]\n});","import { __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { getDataWhetherPercentage } from '../../utils/transform/percent';\nimport { adaptor, meta } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constants';\n/**\n * 柱形图\n */\nvar Column = /** @class */function (_super) {\n __extends(Column, _super);\n function Column() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'column';\n return _this;\n }\n /**\n * 获取 柱形图 默认配置项\n * 供外部使用\n */\n Column.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * @override\n */\n Column.prototype.changeData = function (data) {\n this.updateOption({\n data: data\n });\n var _a = this.options,\n yField = _a.yField,\n xField = _a.xField,\n isPercent = _a.isPercent;\n var _b = this,\n chart = _b.chart,\n options = _b.options;\n meta({\n chart: chart,\n options: options\n });\n this.chart.changeData(getDataWhetherPercentage(data, yField, xField, yField, isPercent));\n };\n /**\n * 获取 柱形图 默认配置\n */\n Column.prototype.getDefaultOptions = function () {\n return Column.getDefaultOptions();\n };\n /**\n * 获取 柱形图 的适配器\n */\n Column.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Column;\n}(Plot);\nexport { Column };","import { __assign } from \"tslib\";\nimport { get, isFunction, isNumber, map, maxBy } from '@antv/util';\nimport { FUNNEL_CONVERSATION, FUNNEL_MAPPING_VALUE, FUNNEL_PERCENT } from '../constant';\nexport var CONVERSION_TAG_NAME = 'CONVERSION_TAG_NAME';\n/**\n * 漏斗图 transform\n * @param geometry\n */\nexport function transformData(data, originData, options) {\n var formatData = [];\n var yField = options.yField,\n maxSize = options.maxSize,\n minSize = options.minSize;\n var maxYFieldValue = get(maxBy(originData, yField), [yField]);\n var max = isNumber(maxSize) ? maxSize : 1;\n var min = isNumber(minSize) ? minSize : 0;\n // format 数据\n formatData = map(data, function (row, index) {\n var percent = (row[yField] || 0) / maxYFieldValue;\n row[FUNNEL_PERCENT] = percent;\n row[FUNNEL_MAPPING_VALUE] = (max - min) * percent + min;\n // 转化率数据存储前后数据\n row[FUNNEL_CONVERSATION] = [get(data, [index - 1, yField]), row[yField]];\n return row;\n });\n return formatData;\n}\n/**\n * 漏斗图通用转化率组件\n * @param getLineCoordinate 用于获取特定的 line 的位置及配置\n */\nexport function conversionTagComponent(getLineCoordinate) {\n return function (params) {\n var chart = params.chart,\n options = params.options;\n // @ts-ignore\n var conversionTag = options.conversionTag,\n filteredData = options.filteredData;\n var data = filteredData || chart.getOptions().data;\n if (conversionTag) {\n var formatter_1 = conversionTag.formatter;\n data.forEach(function (obj, index) {\n if (index <= 0 || Number.isNaN(obj[FUNNEL_MAPPING_VALUE])) return;\n var lineOption = getLineCoordinate(obj, index, data, {\n top: true,\n name: CONVERSION_TAG_NAME,\n text: {\n content: isFunction(formatter_1) ? formatter_1(obj, data) : formatter_1,\n offsetX: conversionTag.offsetX,\n offsetY: conversionTag.offsetY,\n position: 'end',\n autoRotate: false,\n style: __assign({\n textAlign: 'start',\n textBaseline: 'middle'\n }, conversionTag.style)\n }\n });\n chart.annotation().line(lineOption);\n });\n }\n return params;\n };\n}","import { __assign } from \"tslib\";\nimport { get, isArray, map } from '@antv/util';\nimport { geometry as baseGeometry } from '../../../adaptor/geometries/base';\nimport { findGeometry, flow } from '../../../utils';\nimport { getTooltipMapping } from '../../../utils/tooltip';\nimport { FUNNEL_CONVERSATION, FUNNEL_MAPPING_VALUE, FUNNEL_PERCENT } from '../constant';\nimport { conversionTagComponent, transformData } from './common';\n/**\n * 处理字段数据\n * @param params\n */\nfunction field(params) {\n var chart = params.chart,\n options = params.options;\n var _a = options.data,\n data = _a === void 0 ? [] : _a,\n yField = options.yField,\n maxSize = options.maxSize,\n minSize = options.minSize;\n var formatData = transformData(data, data, {\n yField: yField,\n maxSize: maxSize,\n minSize: minSize\n });\n // 绘制漏斗图\n chart.data(formatData);\n return params;\n}\n/**\n * geometry处理\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var xField = options.xField,\n yField = options.yField,\n color = options.color,\n tooltip = options.tooltip,\n label = options.label,\n _a = options.shape,\n shape = _a === void 0 ? 'funnel' : _a,\n funnelStyle = options.funnelStyle,\n state = options.state;\n var _b = getTooltipMapping(tooltip, [xField, yField]),\n fields = _b.fields,\n formatter = _b.formatter;\n baseGeometry({\n chart: chart,\n options: {\n type: 'interval',\n xField: xField,\n yField: FUNNEL_MAPPING_VALUE,\n colorField: xField,\n tooltipFields: isArray(fields) && fields.concat([FUNNEL_PERCENT, FUNNEL_CONVERSATION]),\n mapping: {\n shape: shape,\n tooltip: formatter,\n color: color,\n style: funnelStyle\n },\n label: label,\n state: state\n }\n });\n var geo = findGeometry(params.chart, 'interval');\n geo.adjust('symmetric');\n return params;\n}\n/**\n * 转置处理\n * @param params\n */\nfunction transpose(params) {\n var chart = params.chart,\n options = params.options;\n var isTransposed = options.isTransposed;\n chart.coordinate({\n type: 'rect',\n actions: !isTransposed ? [['transpose'], ['scale', 1, -1]] : []\n });\n return params;\n}\n/**\n * 转化率组件\n * @param params\n */\nexport function conversionTag(params) {\n var options = params.options,\n chart = params.chart;\n var maxSize = options.maxSize;\n // 获取形状位置,再转化为需要的转化率位置\n var dataArray = get(chart, ['geometries', '0', 'dataArray'], []);\n var size = get(chart, ['options', 'data', 'length']);\n var x = map(dataArray, function (item) {\n return get(item, ['0', 'nextPoints', '0', 'x']) * size - 0.5;\n });\n var getLineCoordinate = function getLineCoordinate(datum, datumIndex, data, initLineOption) {\n var percent = maxSize - (maxSize - datum[FUNNEL_MAPPING_VALUE]) / 2;\n return __assign(__assign({}, initLineOption), {\n start: [x[datumIndex - 1] || datumIndex - 0.5, percent],\n end: [x[datumIndex - 1] || datumIndex - 0.5, percent + 0.05]\n });\n };\n conversionTagComponent(getLineCoordinate)(params);\n return params;\n}\n/**\n * 基础漏斗\n * @param chart\n * @param options\n */\nexport function basicFunnel(params) {\n return flow(field, geometry, transpose, conversionTag)(params);\n}","import { get, isArray, isNumber, map } from '@antv/util';\nimport { geometry as baseGeometry } from '../../../adaptor/geometries/base';\nimport { deepAssign, flow } from '../../../utils';\nimport { getTooltipMapping } from '../../../utils/tooltip';\nimport { FUNNEL_CONVERSATION, FUNNEL_MAPPING_VALUE, FUNNEL_PERCENT } from '../constant';\nimport { conversionTagComponent, transformData } from './common';\n/**\n * 处理字段数据\n * @param params\n */\nfunction field(params) {\n var _a;\n var chart = params.chart,\n options = params.options;\n var _b = options.data,\n data = _b === void 0 ? [] : _b,\n yField = options.yField;\n // 绘制漏斗图\n chart.data(data);\n chart.scale((_a = {}, _a[yField] = {\n sync: true\n }, _a));\n return params;\n}\n/**\n * geometry处理\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var data = options.data,\n xField = options.xField,\n yField = options.yField,\n color = options.color,\n compareField = options.compareField,\n isTransposed = options.isTransposed,\n tooltip = options.tooltip,\n maxSize = options.maxSize,\n minSize = options.minSize,\n label = options.label,\n funnelStyle = options.funnelStyle,\n state = options.state,\n showFacetTitle = options.showFacetTitle;\n chart.facet('mirror', {\n fields: [compareField],\n // 漏斗图的转置规则与分面相反,默认是垂直布局\n transpose: !isTransposed,\n padding: isTransposed ? 0 : [32, 0, 0, 0],\n showTitle: showFacetTitle,\n eachView: function eachView(view, facet) {\n var index = isTransposed ? facet.rowIndex : facet.columnIndex;\n if (!isTransposed) {\n view.coordinate({\n type: 'rect',\n actions: [['transpose'], ['scale', index === 0 ? -1 : 1, -1]]\n });\n }\n var formatterData = transformData(facet.data, data, {\n yField: yField,\n maxSize: maxSize,\n minSize: minSize\n });\n view.data(formatterData);\n // 绘制图形\n var _a = getTooltipMapping(tooltip, [xField, yField, compareField]),\n fields = _a.fields,\n formatter = _a.formatter;\n var defaultFacetLabel = isTransposed ? {\n offset: index === 0 ? 10 : -23,\n position: index === 0 ? 'bottom' : 'top'\n } : {\n offset: 10,\n position: 'left',\n style: {\n textAlign: index === 0 ? 'end' : 'start'\n }\n };\n baseGeometry({\n chart: view,\n options: {\n type: 'interval',\n xField: xField,\n yField: FUNNEL_MAPPING_VALUE,\n colorField: xField,\n tooltipFields: isArray(fields) && fields.concat([FUNNEL_PERCENT, FUNNEL_CONVERSATION]),\n mapping: {\n // todo 暂时不提供 金字塔 shape,后续需要自定义下形状\n shape: 'funnel',\n tooltip: formatter,\n color: color,\n style: funnelStyle\n },\n label: label === false ? false : deepAssign({}, defaultFacetLabel, label),\n state: state\n }\n });\n }\n });\n return params;\n}\nexport function compareConversionTag(params) {\n // @ts-ignore\n var chart = params.chart,\n index = params.index,\n options = params.options;\n var conversionTag = options.conversionTag,\n isTransposed = options.isTransposed;\n (isNumber(index) ? [chart] : chart.views).forEach(function (view, viewIndex) {\n // 获取形状位置,再转化为需要的转化率位置\n var dataArray = get(view, ['geometries', '0', 'dataArray'], []);\n var size = get(view, ['options', 'data', 'length']);\n var x = map(dataArray, function (item) {\n return get(item, ['0', 'nextPoints', '0', 'x']) * size - 0.5;\n });\n var getLineCoordinate = function getLineCoordinate(datum, datumIndex, data, initLineOption) {\n var ratio = (index || viewIndex) === 0 ? -1 : 1;\n return deepAssign({}, initLineOption, {\n start: [x[datumIndex - 1] || datumIndex - 0.5, datum[FUNNEL_MAPPING_VALUE]],\n end: [x[datumIndex - 1] || datumIndex - 0.5, datum[FUNNEL_MAPPING_VALUE] + 0.05],\n text: isTransposed ? {\n style: {\n textAlign: 'start'\n }\n } : {\n offsetX: conversionTag !== false ? ratio * conversionTag.offsetX : 0,\n style: {\n textAlign: (index || viewIndex) === 0 ? 'end' : 'start'\n }\n }\n });\n };\n conversionTagComponent(getLineCoordinate)(deepAssign({}, {\n chart: view,\n options: options\n }));\n });\n}\n/**\n * 转化率组件\n * @param params\n */\nfunction conversionTag(params) {\n var chart = params.chart;\n // @ts-ignore\n chart.once('beforepaint', function () {\n return compareConversionTag(params);\n });\n return params;\n}\n/**\n * 对比漏斗\n * @param chart\n * @param options\n */\nexport function compareFunnel(params) {\n return flow(field, geometry, conversionTag)(params);\n}","import { __assign } from \"tslib\";\nimport { get, isArray, map, maxBy, reduce } from '@antv/util';\nimport { geometry as baseGeometry } from '../../../adaptor/geometries/base';\nimport { flow } from '../../../utils';\nimport { getTooltipMapping } from '../../../utils/tooltip';\nimport { FUNNEL_CONVERSATION, FUNNEL_PERCENT, FUNNEL_TOTAL_PERCENT, PLOYGON_X, PLOYGON_Y } from '../constant';\nimport { conversionTagComponent } from './common';\n/**\n * 动态高度漏斗图\n * @param params\n * 需求: 每个漏斗项的高度根据 yfield 等比生成。漏斗上下宽度比为2,即斜率为 2。\n * 实现方式: 使用 g2 多边形,data -> 点坐标 -> 绘制\n * 以漏斗底部中心点为坐标轴原点,漏斗在 -0.5 <= x <= 0.5, 0 <= y <= 1 的正方形中绘制\n * 先计算第一象限的点, 第二象限的点即为镜像 x 轴取反。\n * 第一象限共需计算 data.length + 1 个点,在 y = 4x - 1 上。首尾分别是[0.5, 1], [0.25, 0]。根据 data 计算出 y 值,从而得到 y 值\n */\n/**\n * 处理数据\n * @param params\n */\nfunction field(params) {\n var chart = params.chart,\n options = params.options;\n var _a = options.data,\n data = _a === void 0 ? [] : _a,\n yField = options.yField;\n // 计算各数据项所占高度\n var sum = reduce(data, function (total, item) {\n return total + (item[yField] || 0);\n }, 0);\n var max = maxBy(data, yField)[yField];\n var formatData = map(data, function (row, index) {\n // 储存四个点 x,y 坐标,方向为顺时针,即 [左上, 右上,右下,左下]\n var x = [];\n var y = [];\n row[FUNNEL_TOTAL_PERCENT] = (row[yField] || 0) / sum;\n // 获取左上角,右上角坐标\n if (index) {\n var preItemX = data[index - 1][PLOYGON_X];\n var preItemY = data[index - 1][PLOYGON_Y];\n x[0] = preItemX[3];\n y[0] = preItemY[3];\n x[1] = preItemX[2];\n y[1] = preItemY[2];\n } else {\n x[0] = -0.5;\n y[0] = 1;\n x[1] = 0.5;\n y[1] = 1;\n }\n // 获取右下角坐标\n y[2] = y[1] - row[FUNNEL_TOTAL_PERCENT];\n x[2] = (y[2] + 1) / 4;\n y[3] = y[2];\n x[3] = -x[2];\n // 赋值\n row[PLOYGON_X] = x;\n row[PLOYGON_Y] = y;\n row[FUNNEL_PERCENT] = (row[yField] || 0) / max;\n row[FUNNEL_CONVERSATION] = [get(data, [index - 1, yField]), row[yField]];\n return row;\n });\n chart.data(formatData);\n return params;\n}\n/**\n * geometry处理\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var xField = options.xField,\n yField = options.yField,\n color = options.color,\n tooltip = options.tooltip,\n label = options.label,\n funnelStyle = options.funnelStyle,\n state = options.state;\n var _a = getTooltipMapping(tooltip, [xField, yField]),\n fields = _a.fields,\n formatter = _a.formatter;\n // 绘制漏斗图\n baseGeometry({\n chart: chart,\n options: {\n type: 'polygon',\n xField: PLOYGON_X,\n yField: PLOYGON_Y,\n colorField: xField,\n tooltipFields: isArray(fields) && fields.concat([FUNNEL_PERCENT, FUNNEL_CONVERSATION]),\n label: label,\n state: state,\n mapping: {\n tooltip: formatter,\n color: color,\n style: funnelStyle\n }\n }\n });\n return params;\n}\n/**\n * 转置处理\n * @param params\n */\nfunction transpose(params) {\n var chart = params.chart,\n options = params.options;\n var isTransposed = options.isTransposed;\n chart.coordinate({\n type: 'rect',\n actions: isTransposed ? [['transpose'], ['reflect', 'x']] : []\n });\n return params;\n}\n/**\n * 转化率组件\n * @param params\n */\nfunction conversionTag(params) {\n var getLineCoordinate = function getLineCoordinate(datum, datumIndex, data, initLineOption) {\n return __assign(__assign({}, initLineOption), {\n start: [datum[PLOYGON_X][1], datum[PLOYGON_Y][1]],\n end: [datum[PLOYGON_X][1] + 0.05, datum[PLOYGON_Y][1]]\n });\n };\n conversionTagComponent(getLineCoordinate)(params);\n return params;\n}\n/**\n * 动态高度漏斗\n * @param chart\n * @param options\n */\nexport function dynamicHeightFunnel(params) {\n return flow(field, geometry, transpose, conversionTag)(params);\n}","import { deepAssign, flow } from '../../../utils';\nimport { basicFunnel } from './basic';\n/**\n * 处理字段数据\n * @param params\n */\nfunction field(params) {\n var _a;\n var chart = params.chart,\n options = params.options;\n var _b = options.data,\n data = _b === void 0 ? [] : _b,\n yField = options.yField;\n // 绘制漏斗图\n chart.data(data);\n chart.scale((_a = {}, _a[yField] = {\n sync: true\n }, _a));\n return params;\n}\n/**\n * geometry处理\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var seriesField = options.seriesField,\n isTransposed = options.isTransposed,\n showFacetTitle = options.showFacetTitle;\n chart.facet('rect', {\n fields: [seriesField],\n padding: [isTransposed ? 0 : 32, 10, 0, 10],\n showTitle: showFacetTitle,\n eachView: function eachView(view, facet) {\n basicFunnel(deepAssign({}, params, {\n chart: view,\n options: {\n data: facet.data\n }\n }));\n }\n });\n return params;\n}\n/**\n * 分面漏斗\n * @param chart\n * @param options\n */\nexport function facetFunnel(params) {\n return flow(field, geometry)(params);\n}","import { __assign, __extends } from \"tslib\";\nimport { Action } from '@antv/g2';\nimport { each, filter, get, map } from '@antv/util';\nimport { conversionTag as basicConversionTag } from '../geometries/basic';\nimport { CONVERSION_TAG_NAME, transformData } from '../geometries/common';\nimport { compareConversionTag } from '../geometries/compare';\n/**\n * Funnel 转化率跟随 legend 变化事件\n */\nvar ConversionTagAction = /** @class */function (_super) {\n __extends(ConversionTagAction, _super);\n function ConversionTagAction() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.rendering = false;\n return _this;\n }\n ConversionTagAction.prototype.change = function (options) {\n var _this = this;\n // 防止多次重复渲染\n if (!this.rendering) {\n var seriesField = options.seriesField,\n compareField = options.compareField;\n var conversionTag_1 = compareField ? compareConversionTag : basicConversionTag;\n var view = this.context.view;\n // 兼容分面漏斗图\n var views = seriesField || compareField ? view.views : [view];\n map(views, function (v, index) {\n // 防止影响其他 annotations 被去除\n var annotationController = v.getController('annotation');\n var annotations = filter(get(annotationController, ['option'], []), function (_a) {\n var name = _a.name;\n return name !== CONVERSION_TAG_NAME;\n });\n annotationController.clear(true);\n each(annotations, function (annotation) {\n if (typeof annotation === 'object') {\n v.annotation()[annotation.type](annotation);\n }\n });\n var data = get(v, ['filteredData'], v.getOptions().data);\n conversionTag_1({\n chart: v,\n index: index,\n options: __assign(__assign({}, options), {\n // @ts-ignore\n filteredData: transformData(data, data, options)\n })\n });\n v.filterData(data);\n _this.rendering = true;\n v.render(true);\n });\n }\n this.rendering = false;\n };\n return ConversionTagAction;\n}(Action);\nexport { ConversionTagAction };","import { registerAction, registerInteraction } from '@antv/g2';\nimport { ConversionTagAction } from './funnel-conversion-tag';\nvar FUNNEL_CONVERSION_TAG = 'funnel-conversion-tag';\nexport var FUNNEL_LEGEND_FILTER = 'funnel-afterrender';\nexport var interactionStart = {\n trigger: 'afterrender',\n action: \"\".concat(FUNNEL_CONVERSION_TAG, \":change\")\n};\nregisterAction(FUNNEL_CONVERSION_TAG, ConversionTagAction);\nregisterInteraction(FUNNEL_LEGEND_FILTER, {\n start: [interactionStart]\n});","import { __assign } from \"tslib\";\nimport { clone, each, isFunction } from '@antv/util';\nimport { animation, annotation, scale, theme, tooltip } from '../../adaptor/common';\nimport { getLocale } from '../../core/locale';\nimport { deepAssign, flow } from '../../utils';\nimport { conversionTagFormatter } from '../../utils/conversion';\nimport { FUNNEL_CONVERSATION, FUNNEL_PERCENT } from './constant';\nimport { basicFunnel } from './geometries/basic';\nimport { compareFunnel } from './geometries/compare';\nimport { dynamicHeightFunnel } from './geometries/dynamic-height';\nimport { facetFunnel } from './geometries/facet';\nimport { FUNNEL_LEGEND_FILTER, interactionStart } from './interactions';\n/**\n *\n * 各式漏斗图geometry实现细节有较大不同,\n * 1. 普通漏斗图:interval.shape('funnel')\n * 2. 对比漏斗图:分面\n * 3. 动态高度漏斗图:polypon\n * 4. 分面漏斗图:普通 + list 分面\n* /\n\n/**\n * options 处理\n * @param params\n */\nfunction defaultOptions(params) {\n var options = params.options;\n var compareField = options.compareField,\n xField = options.xField,\n yField = options.yField,\n locale = options.locale,\n funnelStyle = options.funnelStyle,\n data = options.data;\n var i18n = getLocale(locale);\n var defaultOption = {\n label: compareField ? {\n fields: [xField, yField, compareField, FUNNEL_PERCENT, FUNNEL_CONVERSATION],\n formatter: function formatter(datum) {\n return \"\".concat(datum[yField]);\n }\n } : {\n fields: [xField, yField, FUNNEL_PERCENT, FUNNEL_CONVERSATION],\n offset: 0,\n position: 'middle',\n formatter: function formatter(datum) {\n return \"\".concat(datum[xField], \" \").concat(datum[yField]);\n }\n },\n tooltip: {\n title: xField,\n formatter: function formatter(datum) {\n return {\n name: datum[xField],\n value: datum[yField]\n };\n }\n },\n conversionTag: {\n // conversionTag 的计算和显示逻辑统一保持一致\n formatter: function formatter(datum) {\n return \"\".concat(i18n.get(['conversionTag', 'label']), \": \").concat(conversionTagFormatter.apply(void 0, datum[FUNNEL_CONVERSATION]));\n }\n }\n };\n // 漏斗图样式\n var style;\n if (compareField || funnelStyle) {\n style = function style(datum) {\n return deepAssign({},\n // 对比漏斗图默认描边\n compareField && {\n lineWidth: 1,\n stroke: '#fff'\n }, isFunction(funnelStyle) ? funnelStyle(datum) : funnelStyle);\n };\n }\n return deepAssign({\n options: defaultOption\n }, params, {\n options: {\n funnelStyle: style,\n data: clone(data)\n }\n });\n}\n/**\n * geometry处理\n * @param params\n */\nfunction geometry(params) {\n var options = params.options;\n var compareField = options.compareField,\n dynamicHeight = options.dynamicHeight,\n seriesField = options.seriesField;\n if (seriesField) {\n return facetFunnel(params);\n }\n if (compareField) {\n return compareFunnel(params);\n }\n if (dynamicHeight) {\n return dynamicHeightFunnel(params);\n }\n return basicFunnel(params);\n}\n/**\n * meta 配置\n * @param params\n */\nexport function meta(params) {\n var _a;\n var options = params.options;\n var xAxis = options.xAxis,\n yAxis = options.yAxis,\n xField = options.xField,\n yField = options.yField;\n return flow(scale((_a = {}, _a[xField] = xAxis, _a[yField] = yAxis, _a)))(params);\n}\n/**\n * 坐标轴\n * @param params\n */\nfunction axis(params) {\n var chart = params.chart;\n chart.axis(false);\n return params;\n}\n/**\n * legend 配置\n * @param params\n */\nfunction legend(params) {\n var chart = params.chart,\n options = params.options;\n var legend = options.legend;\n if (legend === false) {\n chart.legend(false);\n } else {\n chart.legend(legend);\n // TODO FIX: legend-click 时间和转化率组件之间的关联\n }\n\n return params;\n}\n/**\n * Interaction 配置\n * @param params\n */\nexport function interaction(params) {\n var chart = params.chart,\n options = params.options;\n // @ts-ignore\n var interactions = options.interactions,\n dynamicHeight = options.dynamicHeight;\n each(interactions, function (i) {\n if (i.enable === false) {\n chart.removeInteraction(i.type);\n } else {\n chart.interaction(i.type, i.cfg || {});\n }\n });\n // 动态高度 不进行交互操作\n if (!dynamicHeight) {\n chart.interaction(FUNNEL_LEGEND_FILTER, {\n start: [__assign(__assign({}, interactionStart), {\n arg: options\n })]\n });\n } else {\n chart.removeInteraction(FUNNEL_LEGEND_FILTER);\n }\n return params;\n}\n/**\n * 漏斗图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n return flow(defaultOptions, geometry, meta, axis, tooltip, interaction, legend, animation, theme, annotation())(params);\n}","import { __extends } from \"tslib\";\nimport { each } from '@antv/util';\nimport { Plot } from '../../core/plot';\nimport { getAllElementsRecursively } from '../../utils';\nimport { adaptor } from './adaptor';\nimport { DEFAULT_OPTIONS, FUNNEL_CONVERSATION as FUNNEL_CONVERSATION_FIELD, FUNNEL_PERCENT, FUNNEL_TOTAL_PERCENT } from './constant';\nimport './interactions';\nexport { FUNNEL_CONVERSATION_FIELD };\nvar Funnel = /** @class */function (_super) {\n __extends(Funnel, _super);\n function Funnel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'funnel';\n return _this;\n }\n Funnel.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * 获取 漏斗图 默认配置项\n */\n Funnel.prototype.getDefaultOptions = function () {\n // 由于不同漏斗图 defaultOption 有部分逻辑不同,此处仅处理 core.getDefaultOptions 覆盖范围,funnel 的 defaulOption 为不分散逻辑统一写到 adaptor 的 defaultOption 中\n return Funnel.getDefaultOptions();\n };\n /**\n * 获取 漏斗图 的适配器\n */\n Funnel.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n /**\n * 设置状态\n * @param type 状态类型,支持 'active' | 'inactive' | 'selected' 三种\n * @param conditions 条件,支持数组\n * @param status 是否激活,默认 true\n */\n Funnel.prototype.setState = function (type, condition, status) {\n if (status === void 0) {\n status = true;\n }\n var elements = getAllElementsRecursively(this.chart);\n each(elements, function (ele) {\n if (condition(ele.getData())) {\n ele.setState(type, status);\n }\n });\n };\n /**\n * 获取状态\n */\n Funnel.prototype.getStates = function () {\n var elements = getAllElementsRecursively(this.chart);\n var stateObjects = [];\n each(elements, function (element) {\n var data = element.getData();\n var states = element.getStates();\n each(states, function (state) {\n stateObjects.push({\n data: data,\n state: state,\n geometry: element.geometry,\n element: element\n });\n });\n });\n return stateObjects;\n };\n // 内部变量\n /** 漏斗 转化率 字段 */\n Funnel.CONVERSATION_FIELD = FUNNEL_CONVERSATION_FIELD;\n /** 漏斗 百分比 字段 */\n Funnel.PERCENT_FIELD = FUNNEL_PERCENT;\n /** 漏斗 总转换率百分比 字段 */\n Funnel.TOTAL_PERCENT_FIELD = FUNNEL_TOTAL_PERCENT;\n return Funnel;\n}(Plot);\nexport { Funnel };","var _a;\nexport var RANGE_VALUE = 'range';\nexport var RANGE_TYPE = 'type';\nexport var PERCENT = 'percent';\nexport var DEFAULT_COLOR = '#f0f0f0';\n/** 仪表盘由 指针和表盘 组成 */\nexport var INDICATEOR_VIEW_ID = 'indicator-view';\nexport var RANGE_VIEW_ID = 'range-view';\n/**\n * 仪表盘默认配置项\n */\nexport var DEFAULT_OPTIONS = {\n percent: 0,\n range: {\n ticks: []\n },\n innerRadius: 0.9,\n radius: 0.95,\n startAngle: -7 / 6 * Math.PI,\n endAngle: 1 / 6 * Math.PI,\n syncViewPadding: true,\n axis: {\n line: null,\n label: {\n offset: -24,\n style: {\n textAlign: 'center',\n textBaseline: 'middle'\n }\n },\n subTickLine: {\n length: -8\n },\n tickLine: {\n length: -12\n },\n grid: null\n },\n indicator: {\n pointer: {\n style: {\n lineWidth: 5,\n lineCap: 'round'\n }\n },\n pin: {\n style: {\n r: 9.75,\n lineWidth: 4.5,\n fill: '#fff'\n }\n }\n },\n statistic: {\n title: false\n },\n meta: (_a = {},\n // 两个 view 的 scale 同步到 v 上\n _a[RANGE_VALUE] = {\n sync: 'v'\n }, _a[PERCENT] = {\n sync: 'v',\n tickCount: 5,\n tickInterval: 0.2\n }, _a),\n animation: false\n};","import { clamp, get, size, uniq } from '@antv/util';\nimport { PERCENT, RANGE_TYPE, RANGE_VALUE } from './constants';\n/**\n * 将 range 生成为 data 数据\n * @param range\n * @param key\n * @returns {GaugeRangeData}\n */\nexport function processRangeData(range, percent) {\n return range\n // 映射为 stack 的数据\n .map(function (r, idx) {\n var _a;\n return _a = {}, _a[RANGE_VALUE] = r - (range[idx - 1] || 0), _a[RANGE_TYPE] = \"\".concat(idx), _a[PERCENT] = percent, _a;\n });\n}\n/**\n * 获取 仪表盘 指针数据\n * @param percent\n */\nexport function getIndicatorData(percent) {\n var _a;\n return [(_a = {}, _a[PERCENT] = clamp(percent, 0, 1), _a)];\n}\n/**\n * 获取仪表盘 表盘弧形数据\n * @param percent\n * @param range\n */\nexport function getRangeData(percent, range) {\n var ticks = get(range, ['ticks'], []);\n var clampTicks = size(ticks) ? uniq(ticks) : [0, clamp(percent, 0, 1), 1];\n if (!clampTicks[0]) {\n clampTicks.shift();\n }\n return processRangeData(clampTicks, percent);\n}","import { __assign } from \"tslib\";\nimport { get, isString } from '@antv/util';\nimport { animation, annotation, interaction, scale, theme } from '../../adaptor/common';\nimport { interval } from '../../adaptor/geometries';\nimport { AXIS_META_CONFIG_KEYS } from '../../constant';\nimport { deepAssign, flow, pick, renderGaugeStatistic } from '../../utils';\nimport { DEFAULT_COLOR, INDICATEOR_VIEW_ID, PERCENT, RANGE_TYPE, RANGE_VALUE, RANGE_VIEW_ID } from './constants';\nimport { getIndicatorData, getRangeData } from './utils';\n/**\n * geometry 处理\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var percent = options.percent,\n range = options.range,\n radius = options.radius,\n innerRadius = options.innerRadius,\n startAngle = options.startAngle,\n endAngle = options.endAngle,\n axis = options.axis,\n indicator = options.indicator,\n gaugeStyle = options.gaugeStyle,\n type = options.type,\n meter = options.meter;\n var color = range.color,\n rangeWidth = range.width;\n // 指标 & 指针\n // 如果开启在应用\n if (indicator) {\n var indicatorData = getIndicatorData(percent);\n var v1 = chart.createView({\n id: INDICATEOR_VIEW_ID\n });\n v1.data(indicatorData);\n v1.point().position(\"\".concat(PERCENT, \"*1\")).shape(indicator.shape || 'gauge-indicator')\n // 传入指针的样式到自定义 shape 中\n .customInfo({\n defaultColor: chart.getTheme().defaultColor,\n indicator: indicator\n });\n v1.coordinate('polar', {\n startAngle: startAngle,\n endAngle: endAngle,\n radius: innerRadius * radius // 外部的 innerRadius * radius = 这里的 radius\n });\n\n v1.axis(PERCENT, axis);\n // 一部分应用到 scale 中\n v1.scale(PERCENT, pick(axis, AXIS_META_CONFIG_KEYS));\n }\n // 辅助 range\n // [{ range: 1, type: '0', percent: 原始进度百分比 }]\n var rangeData = getRangeData(percent, options.range);\n var v2 = chart.createView({\n id: RANGE_VIEW_ID\n });\n v2.data(rangeData);\n var rangeColor = isString(color) ? [color, DEFAULT_COLOR] : color;\n var ext = interval({\n chart: v2,\n options: {\n xField: '1',\n yField: RANGE_VALUE,\n seriesField: RANGE_TYPE,\n rawFields: [PERCENT],\n isStack: true,\n interval: {\n color: rangeColor,\n style: gaugeStyle,\n shape: type === 'meter' ? 'meter-gauge' : null\n },\n args: {\n zIndexReversed: true,\n sortZIndex: true\n },\n minColumnWidth: rangeWidth,\n maxColumnWidth: rangeWidth\n }\n }).ext;\n var geometry = ext.geometry;\n // 传入到自定义 shape 中\n geometry.customInfo({\n meter: meter\n });\n v2.coordinate('polar', {\n innerRadius: innerRadius,\n radius: radius,\n startAngle: startAngle,\n endAngle: endAngle\n }).transpose();\n return params;\n}\n/**\n * meta 配置\n * @param params\n */\nfunction meta(params) {\n var _a;\n return flow(scale((_a = {\n range: {\n min: 0,\n max: 1,\n maxLimit: 1,\n minLimit: 0\n }\n }, _a[PERCENT] = {}, _a)))(params);\n}\n/**\n * 统计指标文档\n * @param params\n */\nfunction statistic(params, updated) {\n var chart = params.chart,\n options = params.options;\n var statistic = options.statistic,\n percent = options.percent;\n // 先清空标注,再重新渲染\n chart.getController('annotation').clear(true);\n if (statistic) {\n var contentOption = statistic.content;\n var transformContent = void 0;\n // 当设置 content 的时候,设置默认样式\n if (contentOption) {\n transformContent = deepAssign({}, {\n content: \"\".concat((percent * 100).toFixed(2), \"%\"),\n style: {\n opacity: 0.75,\n fontSize: '30px',\n lineHeight: 1,\n textAlign: 'center',\n color: 'rgba(44,53,66,0.85)'\n }\n }, contentOption);\n }\n renderGaugeStatistic(chart, {\n statistic: __assign(__assign({}, statistic), {\n content: transformContent\n })\n }, {\n percent: percent\n });\n }\n if (updated) {\n chart.render(true);\n }\n return params;\n}\n/**\n * tooltip 配置\n */\nfunction tooltip(params) {\n var chart = params.chart,\n options = params.options;\n var tooltip = options.tooltip;\n if (tooltip) {\n chart.tooltip(deepAssign({\n showTitle: false,\n showMarkers: false,\n containerTpl: '
          ',\n domStyles: {\n 'g2-tooltip': {\n padding: '4px 8px',\n fontSize: '10px'\n }\n },\n customContent: function customContent(x, data) {\n var percent = get(data, [0, 'data', PERCENT], 0);\n return \"\".concat((percent * 100).toFixed(2), \"%\");\n }\n }, tooltip));\n } else {\n // 默认,不展示 tooltip\n chart.tooltip(false);\n }\n return params;\n}\n/**\n * other 配置\n * @param params\n */\nfunction other(params) {\n var chart = params.chart;\n chart.legend(false);\n return params;\n}\n/**\n * 对外暴露的 adaptor\n */\nexport { statistic };\n/**\n * 图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n // flow 的方式处理所有的配置到 G2 API\n return flow(theme,\n // animation 配置必须在 createView 之前,不然无法让子 View 生效\n animation, geometry, meta, tooltip, statistic, interaction, annotation(), other\n // ... 其他的 adaptor flow\n )(params);\n}","import { __assign } from \"tslib\";\nimport { registerShape } from '@antv/g2';\n// 自定义Shape 部分\nregisterShape('point', 'gauge-indicator', {\n draw: function draw(cfg, container) {\n // 使用 customInfo 传递参数\n var _a = cfg.customInfo,\n indicator = _a.indicator,\n defaultColor = _a.defaultColor;\n var _b = indicator,\n pointer = _b.pointer,\n pin = _b.pin;\n var group = container.addGroup();\n // 获取极坐标系下画布中心点\n var center = this.parsePoint({\n x: 0,\n y: 0\n });\n // 绘制指针\n if (pointer) {\n // pointer\n group.addShape('line', {\n name: 'pointer',\n attrs: __assign({\n x1: center.x,\n y1: center.y,\n x2: cfg.x,\n y2: cfg.y,\n stroke: defaultColor\n }, pointer.style)\n });\n }\n // pin\n if (pin) {\n group.addShape('circle', {\n name: 'pin',\n attrs: __assign({\n x: center.x,\n y: center.y,\n stroke: defaultColor\n }, pin.style)\n });\n }\n return group;\n }\n});","import { registerShape, Util } from '@antv/g2';\nimport { clamp } from '@antv/util';\n/**\n * 自定义 Shape 部分: 自定义米轨仪表盘\n * 定义 STEP, STEP_RATIO. 可绘制区域: 1 / (STEP + 1) * i -> 1 / (STEP + 1) * i + (STEP_RATIO / (STEP + 1))\n */\nregisterShape('interval', 'meter-gauge', {\n draw: function draw(cfg, container) {\n // 使用 customInfo 传递参数\n var _a = cfg.customInfo.meter,\n meter = _a === void 0 ? {} : _a;\n var _b = meter.steps,\n STEP = _b === void 0 ? 50 : _b,\n _c = meter.stepRatio,\n STEP_RATIO = _c === void 0 ? 0.5 : _c;\n STEP = STEP < 1 ? 1 : STEP;\n // stepRatio 取值范围: (0, 1]\n STEP_RATIO = clamp(STEP_RATIO, 0, 1);\n var _d = this.coordinate,\n COORD_START_ANGLE = _d.startAngle,\n COORD_END_ANGLE = _d.endAngle;\n var GAP = 0;\n if (STEP_RATIO > 0 && STEP_RATIO < 1) {\n var TOTAL = COORD_END_ANGLE - COORD_START_ANGLE;\n GAP = TOTAL / STEP / (STEP_RATIO / (1 - STEP_RATIO) + 1 - 1 / STEP);\n }\n var INTERVAL = GAP / (1 - STEP_RATIO) * STEP_RATIO;\n var group = container.addGroup();\n // 绘制图形的时候,留下 gap\n var center = this.coordinate.getCenter();\n var radius = this.coordinate.getRadius();\n var _e = Util.getAngle(cfg, this.coordinate),\n START_ANGLE = _e.startAngle,\n END_ANGLE = _e.endAngle;\n for (var startAngle = START_ANGLE; startAngle < END_ANGLE;) {\n var endAngle = void 0;\n var r = (startAngle - COORD_START_ANGLE) % (INTERVAL + GAP);\n if (r < INTERVAL) {\n endAngle = startAngle + (INTERVAL - r);\n } else {\n startAngle += INTERVAL + GAP - r;\n endAngle = startAngle + INTERVAL;\n }\n var path = Util.getSectorPath(center.x, center.y, radius, startAngle, Math.min(endAngle, END_ANGLE), radius * this.coordinate.innerRadius);\n group.addShape('path', {\n name: 'meter-gauge',\n attrs: {\n path: path,\n fill: cfg.color,\n stroke: cfg.color,\n lineWidth: 0.5\n }\n });\n startAngle = endAngle + GAP;\n }\n return group;\n }\n});","import { __extends } from \"tslib\";\nimport { Event, VIEW_LIFE_CIRCLE } from '@antv/g2';\nimport { Plot } from '../../core/plot';\nimport { adaptor, statistic } from './adaptor';\nimport { DEFAULT_OPTIONS, INDICATEOR_VIEW_ID, RANGE_VIEW_ID } from './constants';\n// 注册 shape\nimport './shapes/indicator';\nimport './shapes/meter-gauge';\nimport { getIndicatorData, getRangeData } from './utils';\n/**\n * 仪表盘\n */\nvar Gauge = /** @class */function (_super) {\n __extends(Gauge, _super);\n function Gauge() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'gauge';\n return _this;\n }\n /**\n * 获取 仪表盘 默认配置项\n * 供外部使用\n */\n Gauge.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * 更新数据\n * @param percent\n */\n Gauge.prototype.changeData = function (percent) {\n this.chart.emit(VIEW_LIFE_CIRCLE.BEFORE_CHANGE_DATA, Event.fromData(this.chart, VIEW_LIFE_CIRCLE.BEFORE_CHANGE_DATA, null));\n this.updateOption({\n percent: percent\n });\n var indicatorView = this.chart.views.find(function (v) {\n return v.id === INDICATEOR_VIEW_ID;\n });\n if (indicatorView) {\n indicatorView.data(getIndicatorData(percent));\n }\n var rangeView = this.chart.views.find(function (v) {\n return v.id === RANGE_VIEW_ID;\n });\n if (rangeView) {\n rangeView.data(getRangeData(percent, this.options.range));\n }\n // todo 后续让 G2 层在 afterrender 之后,来重绘 annotations\n statistic({\n chart: this.chart,\n options: this.options\n }, true);\n this.chart.emit(VIEW_LIFE_CIRCLE.AFTER_CHANGE_DATA, Event.fromData(this.chart, VIEW_LIFE_CIRCLE.AFTER_CHANGE_DATA, null));\n };\n /**\n * 获取默认配置\n * 供 base 使用\n */\n Gauge.prototype.getDefaultOptions = function () {\n return Gauge.getDefaultOptions();\n };\n /**\n * 获取适配器\n */\n Gauge.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Gauge;\n}(Plot);\nexport { Gauge };","import { clone, each, getRange, groupBy, hasKey, isEmpty, sortBy, valuesOfKey } from '@antv/util';\n// 进行转换得到值所在的 range\nfunction getBinKey(value, binWidth, binNumber) {\n // 做一点特殊处理\n if (binNumber === 1) {\n return [0, binWidth];\n }\n var index = Math.floor(value / binWidth);\n return [binWidth * index, binWidth * (index + 1)];\n}\n// 默认 sturges 转换\nfunction sturges(values) {\n return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n}\n/**\n * 对数据进行百分比化\n * @param data\n * @param binField\n * @param binWidth\n * @param binNumber\n * @param stackField\n */\nexport function binHistogram(data, binField, binWidth, binNumber, stackField) {\n var originData_copy = clone(data);\n // 根据 binField 对源数据进行排序\n sortBy(originData_copy, binField);\n // 获取源数据 binField 的 range\n var values = valuesOfKey(originData_copy, binField);\n var range = getRange(values);\n var rangeWidth = range.max - range.min;\n // 计算分箱,直方图分箱的计算基于 binWidth,如配置了 binNumber 则将其转为 binWidth 进行计算\n var _binWidth = binWidth;\n if (!binWidth && binNumber) {\n _binWidth = binNumber > 1 ? rangeWidth / (binNumber - 1) : range.max;\n }\n // 当 binWidth 和 binNumber 都没有指定的情况,采用 Sturges formula 自动生成 binWidth\n if (!binWidth && !binNumber) {\n var _defaultBinNumber = sturges(values);\n _binWidth = rangeWidth / _defaultBinNumber;\n }\n // 构建 key - StatisticData 结构\n var bins = {};\n var groups = groupBy(originData_copy, stackField);\n // 判断分组是否为空,如果为空,说明没有 stackField 字段\n if (isEmpty(groups)) {\n each(originData_copy, function (data) {\n var value = data[binField];\n var bin = getBinKey(value, _binWidth, binNumber);\n var binKey = \"\".concat(bin[0], \"-\").concat(bin[1]);\n if (!hasKey(bins, binKey)) {\n bins[binKey] = {\n range: bin,\n count: 0\n };\n }\n bins[binKey].count += 1;\n });\n } else {\n Object.keys(groups).forEach(function (groupKey) {\n each(groups[groupKey], function (data) {\n var value = data[binField];\n var bin = getBinKey(value, _binWidth, binNumber);\n var binKey = \"\".concat(bin[0], \"-\").concat(bin[1]);\n var groupKeyBinKey = \"\".concat(binKey, \"-\").concat(groupKey);\n if (!hasKey(bins, groupKeyBinKey)) {\n bins[groupKeyBinKey] = {\n range: bin,\n count: 0\n };\n bins[groupKeyBinKey][stackField] = groupKey;\n }\n bins[groupKeyBinKey].count += 1;\n });\n });\n }\n // 将分箱数据转换为 plotData 才是图表所需要的\n var plotData = [];\n each(bins, function (bin) {\n plotData.push(bin);\n });\n return plotData;\n}","import { Plot } from '../../core/plot';\nimport { deepAssign } from '../../utils';\n/** 直方图 xField */\nexport var HISTOGRAM_X_FIELD = 'range';\n/** 直方图 yField */\nexport var HISTOGRAM_Y_FIELD = 'count';\n/**\n * 默认配置项\n */\nexport var DEFAULT_OPTIONS = deepAssign({}, Plot.getDefaultOptions(), {\n columnStyle: {\n stroke: '#FFFFFF'\n },\n tooltip: {\n shared: true,\n showMarkers: false\n },\n interactions: [{\n type: 'active-region'\n }]\n});","import { __rest } from \"tslib\";\nimport { animation, interaction, scale, state, theme, tooltip } from '../../adaptor/common';\nimport { interval } from '../../adaptor/geometries';\nimport { pattern } from '../../adaptor/pattern';\nimport { deepAssign, findGeometry, flow, transformLabel } from '../../utils';\nimport { binHistogram } from '../../utils/transform/histogram';\nimport { HISTOGRAM_X_FIELD, HISTOGRAM_Y_FIELD } from './constant';\n/**\n * geometry 处理\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var data = options.data,\n binField = options.binField,\n binNumber = options.binNumber,\n binWidth = options.binWidth,\n color = options.color,\n stackField = options.stackField,\n legend = options.legend,\n columnStyle = options.columnStyle;\n // 处理数据\n var plotData = binHistogram(data, binField, binWidth, binNumber, stackField);\n chart.data(plotData);\n var p = deepAssign({}, params, {\n options: {\n xField: HISTOGRAM_X_FIELD,\n yField: HISTOGRAM_Y_FIELD,\n seriesField: stackField,\n isStack: true,\n interval: {\n color: color,\n style: columnStyle\n }\n }\n });\n interval(p);\n // 图例\n if (legend && stackField) {\n chart.legend(stackField, legend);\n } else {\n chart.legend(false);\n }\n return params;\n}\n/**\n * meta 配置\n * @param params\n */\nfunction meta(params) {\n var _a;\n var options = params.options;\n var xAxis = options.xAxis,\n yAxis = options.yAxis;\n return flow(scale((_a = {}, _a[HISTOGRAM_X_FIELD] = xAxis, _a[HISTOGRAM_Y_FIELD] = yAxis, _a)))(params);\n}\n/**\n * axis 配置\n * @param params\n */\nfunction axis(params) {\n var chart = params.chart,\n options = params.options;\n var xAxis = options.xAxis,\n yAxis = options.yAxis;\n // 为 false 则是不显示轴\n if (xAxis === false) {\n chart.axis(HISTOGRAM_X_FIELD, false);\n } else {\n chart.axis(HISTOGRAM_X_FIELD, xAxis);\n }\n if (yAxis === false) {\n chart.axis(HISTOGRAM_Y_FIELD, false);\n } else {\n chart.axis(HISTOGRAM_Y_FIELD, yAxis);\n }\n return params;\n}\n/**\n * label 配置\n * @param params\n */\nfunction label(params) {\n var chart = params.chart,\n options = params.options;\n var label = options.label;\n var geometry = findGeometry(chart, 'interval');\n if (!label) {\n geometry.label(false);\n } else {\n var callback = label.callback,\n cfg = __rest(label, [\"callback\"]);\n geometry.label({\n fields: [HISTOGRAM_Y_FIELD],\n callback: callback,\n cfg: transformLabel(cfg)\n });\n }\n return params;\n}\n/**\n * 直方图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n // flow 的方式处理所有的配置到 G2 API\n return flow(theme, pattern('columnStyle'), geometry, meta, axis, state, label, tooltip, interaction, animation)(params);\n}","import { __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { binHistogram } from '../../utils/transform/histogram';\nimport { adaptor } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constant';\nvar Histogram = /** @class */function (_super) {\n __extends(Histogram, _super);\n function Histogram() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'histogram';\n return _this;\n }\n /**\n * 获取 默认配置项\n * 供外部使用\n */\n Histogram.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n Histogram.prototype.changeData = function (data) {\n this.updateOption({\n data: data\n });\n var _a = this.options,\n binField = _a.binField,\n binNumber = _a.binNumber,\n binWidth = _a.binWidth,\n stackField = _a.stackField;\n this.chart.changeData(binHistogram(data, binField, binWidth, binNumber, stackField));\n };\n /**\n * 获取直方图的适配器\n */\n Histogram.prototype.getDefaultOptions = function () {\n return Histogram.getDefaultOptions();\n };\n /**\n * 获取直方图的适配器\n */\n Histogram.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Histogram;\n}(Plot);\nexport { Histogram };","import { Plot } from '../../core/plot';\nimport { deepAssign } from '../../utils';\n/**\n * 折线图默认配置项\n */\nexport var DEFAULT_OPTIONS = deepAssign({}, Plot.getDefaultOptions(), {\n tooltip: {\n shared: true,\n showMarkers: true,\n showCrosshairs: true,\n crosshairs: {\n type: 'x'\n }\n },\n legend: {\n position: 'top-left',\n radio: {}\n },\n isStack: false\n});","import { __extends } from \"tslib\";\nimport { InteractionAction } from '@antv/g2';\nimport { each, findIndex } from '@antv/util';\nvar MarkerActiveAction = /** @class */function (_super) {\n __extends(MarkerActiveAction, _super);\n function MarkerActiveAction() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MarkerActiveAction.prototype.active = function () {\n var view = this.getView();\n var evt = this.context.event;\n if (evt.data) {\n // items: 数组对象,当前 tooltip 显示的每条内容\n var items_1 = evt.data.items;\n var points = view.geometries.filter(function (geom) {\n return geom.type === 'point';\n });\n each(points, function (point) {\n each(point.elements, function (element) {\n var active = findIndex(items_1, function (item) {\n return item.data === element.data;\n }) !== -1;\n element.setState('active', active);\n });\n });\n }\n };\n MarkerActiveAction.prototype.reset = function () {\n var view = this.getView();\n var points = view.geometries.filter(function (geom) {\n return geom.type === 'point';\n });\n each(points, function (point) {\n each(point.elements, function (element) {\n element.setState('active', false);\n });\n });\n };\n MarkerActiveAction.prototype.getView = function () {\n return this.context.view;\n };\n return MarkerActiveAction;\n}(InteractionAction);\nexport { MarkerActiveAction };","import { registerAction, registerInteraction } from '@antv/g2';\nimport { MarkerActiveAction } from './marker-active';\nregisterAction('marker-active', MarkerActiveAction);\nregisterInteraction('marker-active', {\n start: [{\n trigger: 'tooltip:show',\n action: 'marker-active:active'\n }],\n end: [{\n trigger: 'tooltip:hide',\n action: 'marker-active:reset'\n }]\n});","import { __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { adaptor, meta } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constants';\nimport './interactions';\nvar Line = /** @class */function (_super) {\n __extends(Line, _super);\n function Line() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'line';\n return _this;\n }\n /**\n * 获取 折线图 默认配置项\n * 供外部使用\n */\n Line.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * @override\n * @param data\n */\n Line.prototype.changeData = function (data) {\n this.updateOption({\n data: data\n });\n var _a = this,\n chart = _a.chart,\n options = _a.options;\n meta({\n chart: chart,\n options: options\n });\n this.chart.changeData(data);\n };\n /**\n * 获取 折线图 默认配置\n */\n Line.prototype.getDefaultOptions = function () {\n return Line.getDefaultOptions();\n };\n /**\n * 获取 折线图 的适配器\n */\n Line.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Line;\n}(Plot);\nexport { Line };","import { Plot } from '../../core/plot';\nimport { deepAssign } from '../../utils';\n/**\n * 饼图默认配置项\n */\nexport var DEFAULT_OPTIONS = deepAssign({}, Plot.getDefaultOptions(), {\n legend: {\n position: 'right',\n radio: {}\n },\n tooltip: {\n shared: false,\n showTitle: false,\n showMarkers: false\n },\n label: {\n layout: {\n type: 'limit-in-plot',\n cfg: {\n action: 'ellipsis'\n }\n }\n },\n /** 饼图样式, 不影响暗黑主题 */\n pieStyle: {\n stroke: 'white',\n lineWidth: 1\n },\n /** 饼图中心文本默认样式 */\n statistic: {\n title: {\n style: {\n fontWeight: 300,\n color: '#4B535E',\n textAlign: 'center',\n fontSize: '20px',\n lineHeight: 1\n }\n },\n content: {\n style: {\n fontWeight: 'bold',\n color: 'rgba(44,53,66,0.85)',\n textAlign: 'center',\n fontSize: '32px',\n lineHeight: 1\n }\n }\n },\n /** 默认关闭 text-annotation 动画 */\n theme: {\n components: {\n annotation: {\n text: {\n animate: false\n }\n }\n }\n }\n});","import { __spreadArray } from \"tslib\";\nimport { Util } from '@antv/g2';\nvar ORIGIN_MATRIX = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n/**\n * 矩阵变换\n * @param actions\n * @param matrix\n */\nexport function transform(actions, matrix) {\n var ulMatrix = matrix ? __spreadArray([], matrix, true) : __spreadArray([], ORIGIN_MATRIX, true);\n return Util.transform(ulMatrix, actions);\n}","import { __extends } from \"tslib\";\nimport { Action, Util } from '@antv/g2';\nimport { isEqual } from '@antv/util';\nimport { transform } from '../../../../utils/matrix';\n/**\n * 饼图 图例激活 action\n */\nvar PieLegendAction = /** @class */function (_super) {\n __extends(PieLegendAction, _super);\n function PieLegendAction() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * 获取激活的图形元素\n */\n PieLegendAction.prototype.getActiveElements = function () {\n var delegateObject = Util.getDelegationObject(this.context);\n if (delegateObject) {\n var view = this.context.view;\n var component = delegateObject.component,\n item_1 = delegateObject.item;\n var field_1 = component.get('field');\n if (field_1) {\n var elements = view.geometries[0].elements;\n return elements.filter(function (ele) {\n return ele.getModel().data[field_1] === item_1.value;\n });\n }\n }\n return [];\n };\n /**\n * 获取激活的标签\n */\n PieLegendAction.prototype.getActiveElementLabels = function () {\n var view = this.context.view;\n var elements = this.getActiveElements();\n var labels = view.geometries[0].labelsContainer.getChildren();\n return labels.filter(function (label) {\n return elements.find(function (ele) {\n return isEqual(ele.getData(), label.get('data'));\n });\n });\n };\n PieLegendAction.prototype.transfrom = function (offset) {\n if (offset === void 0) {\n offset = 7.5;\n }\n var elements = this.getActiveElements();\n var elementLabels = this.getActiveElementLabels();\n elements.forEach(function (element, idx) {\n var labelShape = elementLabels[idx];\n var coordinate = element.geometry.coordinate;\n if (coordinate.isPolar && coordinate.isTransposed) {\n var _a = Util.getAngle(element.getModel(), coordinate),\n startAngle = _a.startAngle,\n endAngle = _a.endAngle;\n var middleAngle = (startAngle + endAngle) / 2;\n var r = offset;\n var x = r * Math.cos(middleAngle);\n var y = r * Math.sin(middleAngle);\n element.shape.setMatrix(transform([['t', x, y]]));\n labelShape.setMatrix(transform([['t', x, y]]));\n }\n });\n };\n PieLegendAction.prototype.active = function () {\n this.transfrom();\n };\n /**\n * 激活态还原\n */\n PieLegendAction.prototype.reset = function () {\n this.transfrom(0);\n };\n return PieLegendAction;\n}(Action);\nexport { PieLegendAction };","import { __extends } from \"tslib\";\nimport { Action, Util } from '@antv/g2';\nimport { each, get } from '@antv/util';\nimport { renderStatistic } from '../../../../utils/statistic';\nimport { getCurrentElement } from '../util';\n/**\n * Pie 中心文本事件的 Action\n */\nvar StatisticAction = /** @class */function (_super) {\n __extends(StatisticAction, _super);\n function StatisticAction() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n StatisticAction.prototype.getAnnotations = function (_view) {\n var view = _view || this.context.view;\n // @ts-ignore\n return view.getController('annotation').option;\n };\n StatisticAction.prototype.getInitialAnnotation = function () {\n return this.initialAnnotation;\n };\n StatisticAction.prototype.init = function () {\n var _this = this;\n var view = this.context.view;\n view.removeInteraction('tooltip');\n view.on('afterchangesize', function () {\n var annotations = _this.getAnnotations(view);\n _this.initialAnnotation = annotations;\n });\n };\n StatisticAction.prototype.change = function (arg) {\n var _a = this.context,\n view = _a.view,\n event = _a.event;\n if (!this.initialAnnotation) {\n this.initialAnnotation = this.getAnnotations();\n }\n var data = get(event, ['data', 'data']);\n if (event.type.match('legend-item')) {\n var delegateObject = Util.getDelegationObject(this.context);\n // @ts-ignore\n var colorField_1 = view.getGroupedFields()[0];\n if (delegateObject && colorField_1) {\n var item_1 = delegateObject.item;\n data = view.getData().find(function (d) {\n return d[colorField_1] === item_1.value;\n });\n }\n }\n if (data) {\n var annotations = get(arg, 'annotations', []);\n var statistic = get(arg, 'statistic', {});\n // 先清空标注,再重新渲染\n view.getController('annotation').clear(true);\n // 先进行其他 annotations,再去渲染统计文本\n each(annotations, function (annotation) {\n if (typeof annotation === 'object') {\n view.annotation()[annotation.type](annotation);\n }\n });\n renderStatistic(view, {\n statistic: statistic,\n plotType: 'pie'\n }, data);\n view.render(true);\n }\n // 交互的时候,把 shape 提前\n var ele = getCurrentElement(this.context);\n if (ele) {\n ele.shape.toFront();\n }\n };\n StatisticAction.prototype.reset = function () {\n var view = this.context.view;\n var annotationController = view.getController('annotation');\n annotationController.clear(true);\n var initialStatistic = this.getInitialAnnotation();\n each(initialStatistic, function (a) {\n view.annotation()[a.type](a);\n });\n view.render(true);\n };\n return StatisticAction;\n}(Action);\nexport { StatisticAction };","/**\n * 获取当前事件相关的图表元素\n * @param context 交互的上下文\n * @ignore\n */\nexport function getCurrentElement(context) {\n var event = context.event;\n var element;\n var target = event.target;\n if (target) {\n element = target.get('element');\n }\n return element;\n}","import { registerAction, registerInteraction } from '@antv/g2';\nimport { PieLegendAction } from './actions/legend-active';\nimport { StatisticAction } from './actions/statistic-active';\nexport var PIE_STATISTIC = 'pie-statistic';\nregisterAction(PIE_STATISTIC, StatisticAction);\nregisterInteraction('pie-statistic-active', {\n start: [{\n trigger: 'element:mouseenter',\n action: 'pie-statistic:change'\n }],\n end: [{\n trigger: 'element:mouseleave',\n action: 'pie-statistic:reset'\n }]\n});\nregisterAction('pie-legend', PieLegendAction);\nregisterInteraction('pie-legend-active', {\n start: [{\n trigger: 'legend-item:mouseenter',\n action: 'pie-legend:active'\n }],\n end: [{\n trigger: 'legend-item:mouseleave',\n action: 'pie-legend:reset'\n }]\n});","import { each, every, isString } from '@antv/util';\nimport { processIllegalData } from '../../utils';\n/**\n * 获取总计值\n * @param data\n * @param field\n */\nexport function getTotalValue(data, field) {\n var total = null;\n each(data, function (item) {\n if (typeof item[field] === 'number') {\n total += item[field];\n }\n });\n return total;\n}\n/**\n * pie label offset adaptor\n */\nexport function adaptOffset(type, offset) {\n var defaultOffset;\n switch (type) {\n case 'inner':\n defaultOffset = '-30%';\n if (isString(offset) && offset.endsWith('%')) {\n return parseFloat(offset) * 0.01 > 0 ? defaultOffset : offset;\n }\n return offset < 0 ? offset : defaultOffset;\n case 'outer':\n defaultOffset = 12;\n if (isString(offset) && offset.endsWith('%')) {\n return parseFloat(offset) * 0.01 < 0 ? defaultOffset : offset;\n }\n return offset > 0 ? offset : defaultOffset;\n default:\n return offset;\n }\n}\n/**\n * 判断数据是否全部为 0\n * @param data\n * @param angleField\n */\nexport function isAllZero(data, angleField) {\n return every(processIllegalData(data, angleField), function (d) {\n return d[angleField] === 0;\n });\n}","import { __assign, __rest } from \"tslib\";\nimport { each, get, isArray, isEmpty, isFunction, isNil, isNumber, isString, toString } from '@antv/util';\nimport { animation, annotation, legend, state, theme } from '../../adaptor/common';\nimport { interval } from '../../adaptor/geometries';\nimport { getMappingFunction } from '../../adaptor/geometries/base';\nimport { pattern } from '../../adaptor/pattern';\nimport { getLocale } from '../../core/locale';\nimport { deepAssign, flow, processIllegalData, renderStatistic, template, transformLabel } from '../../utils';\nimport { DEFAULT_OPTIONS } from './contants';\nimport { PIE_STATISTIC } from './interactions';\nimport { adaptOffset, getTotalValue, isAllZero } from './utils';\n/**\n * 字段\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var data = options.data,\n angleField = options.angleField,\n colorField = options.colorField,\n color = options.color,\n pieStyle = options.pieStyle,\n shape = options.shape;\n // 处理不合法的数据\n var processData = processIllegalData(data, angleField);\n if (isAllZero(processData, angleField)) {\n // 数据全 0 处理,调整 position 映射\n var percentageField_1 = '$$percentage$$';\n processData = processData.map(function (d) {\n var _a;\n return __assign(__assign({}, d), (_a = {}, _a[percentageField_1] = 1 / processData.length, _a));\n });\n chart.data(processData);\n var p = deepAssign({}, params, {\n options: {\n xField: '1',\n yField: percentageField_1,\n seriesField: colorField,\n isStack: true,\n interval: {\n color: color,\n shape: shape,\n style: pieStyle\n },\n args: {\n zIndexReversed: true,\n sortZIndex: true\n }\n }\n });\n interval(p);\n } else {\n chart.data(processData);\n var p = deepAssign({}, params, {\n options: {\n xField: '1',\n yField: angleField,\n seriesField: colorField,\n isStack: true,\n interval: {\n color: color,\n shape: shape,\n style: pieStyle\n },\n args: {\n zIndexReversed: true,\n sortZIndex: true\n }\n }\n });\n interval(p);\n }\n return params;\n}\n/**\n * meta 配置\n * @param params\n */\nfunction meta(params) {\n var _a;\n var chart = params.chart,\n options = params.options;\n var meta = options.meta,\n colorField = options.colorField;\n // meta 直接是 scale 的信息\n var scales = deepAssign({}, meta);\n chart.scale(scales, (_a = {}, _a[colorField] = {\n type: 'cat'\n }, _a));\n return params;\n}\n/**\n * coord 配置\n * @param params\n */\nfunction coordinate(params) {\n var chart = params.chart,\n options = params.options;\n var radius = options.radius,\n innerRadius = options.innerRadius,\n startAngle = options.startAngle,\n endAngle = options.endAngle;\n chart.coordinate({\n type: 'theta',\n cfg: {\n radius: radius,\n innerRadius: innerRadius,\n startAngle: startAngle,\n endAngle: endAngle\n }\n });\n return params;\n}\n/**\n * label 配置\n * @param params\n */\nfunction label(params) {\n var chart = params.chart,\n options = params.options;\n var label = options.label,\n colorField = options.colorField,\n angleField = options.angleField;\n var geometry = chart.geometries[0];\n // label 为 false, 空 则不显示 label\n if (!label) {\n geometry.label(false);\n } else {\n var callback = label.callback,\n cfg = __rest(label, [\"callback\"]);\n var labelCfg = transformLabel(cfg);\n // ① 提供模板字符串的 label content 配置\n if (labelCfg.content) {\n var content_1 = labelCfg.content;\n labelCfg.content = function (data, dataum, index) {\n var name = data[colorField];\n var value = data[angleField];\n // dymatic get scale, scale is ready this time\n var angleScale = chart.getScaleByField(angleField);\n var percent = angleScale === null || angleScale === void 0 ? void 0 : angleScale.scale(value);\n return isFunction(content_1) ?\n // append percent (number) to data, users can get origin data from `dataum._origin`\n content_1(__assign(__assign({}, data), {\n percent: percent\n }), dataum, index) : isString(content_1) ? template(content_1, {\n value: value,\n name: name,\n // percentage (string), default keep 2\n percentage: isNumber(percent) && !isNil(value) ? \"\".concat((percent * 100).toFixed(2), \"%\") : null\n }) : content_1;\n };\n }\n var LABEL_LAYOUT_TYPE_MAP = {\n inner: '',\n outer: 'pie-outer',\n spider: 'pie-spider'\n };\n var labelLayoutType = labelCfg.type ? LABEL_LAYOUT_TYPE_MAP[labelCfg.type] : 'pie-outer';\n var labelLayoutCfg = labelCfg.layout ? !isArray(labelCfg.layout) ? [labelCfg.layout] : labelCfg.layout : [];\n labelCfg.layout = (labelLayoutType ? [{\n type: labelLayoutType\n }] : []).concat(labelLayoutCfg);\n geometry.label({\n // fix: could not create scale, when field is undefined(attributes 中的 fields 定义都会被用来创建 scale)\n fields: colorField ? [angleField, colorField] : [angleField],\n callback: callback,\n cfg: __assign(__assign({}, labelCfg), {\n offset: adaptOffset(labelCfg.type, labelCfg.offset),\n type: 'pie'\n })\n });\n }\n return params;\n}\n/**\n * statistic options 处理\n * 1. 默认继承 default options 的样式\n * 2. 默认使用 meta 的 formatter\n */\nexport function transformStatisticOptions(options) {\n var innerRadius = options.innerRadius,\n statistic = options.statistic,\n angleField = options.angleField,\n colorField = options.colorField,\n meta = options.meta,\n locale = options.locale;\n var i18n = getLocale(locale);\n if (innerRadius && statistic) {\n var _a = deepAssign({}, DEFAULT_OPTIONS.statistic, statistic),\n titleOpt_1 = _a.title,\n contentOpt_1 = _a.content;\n if (titleOpt_1 !== false) {\n titleOpt_1 = deepAssign({}, {\n formatter: function formatter(datum) {\n // 交互中, datum existed.\n var text = datum ? datum[colorField] : !isNil(titleOpt_1.content) ? titleOpt_1.content : i18n.get(['statistic', 'total']);\n var metaFormatter = get(meta, [colorField, 'formatter']) || function (v) {\n return v;\n };\n return metaFormatter(text);\n }\n }, titleOpt_1);\n }\n if (contentOpt_1 !== false) {\n contentOpt_1 = deepAssign({}, {\n formatter: function formatter(datum, data) {\n var dataValue = datum ? datum[angleField] : getTotalValue(data, angleField);\n var metaFormatter = get(meta, [angleField, 'formatter']) || function (v) {\n return v;\n };\n // 交互中\n if (datum) {\n return metaFormatter(dataValue);\n }\n return !isNil(contentOpt_1.content) ? contentOpt_1.content : metaFormatter(dataValue);\n }\n }, contentOpt_1);\n }\n return deepAssign({}, {\n statistic: {\n title: titleOpt_1,\n content: contentOpt_1\n }\n }, options);\n }\n return options;\n}\n/**\n * statistic 中心文本配置\n * @param params\n */\nexport function pieAnnotation(params) {\n var chart = params.chart,\n options = params.options;\n var _a = transformStatisticOptions(options),\n innerRadius = _a.innerRadius,\n statistic = _a.statistic;\n // 先清空标注,再重新渲染\n chart.getController('annotation').clear(true);\n // 先进行其他 annotations,再去渲染统计文本\n flow(annotation())(params);\n /** 中心文本 指标卡 */\n if (innerRadius && statistic) {\n renderStatistic(chart, {\n statistic: statistic,\n plotType: 'pie'\n });\n }\n return params;\n}\n/**\n * 饼图 tooltip 配置\n * 1. 强制 tooltip.shared 为 false\n * @param params\n */\nfunction tooltip(params) {\n var chart = params.chart,\n options = params.options;\n var tooltip = options.tooltip,\n colorField = options.colorField,\n angleField = options.angleField,\n data = options.data;\n if (tooltip === false) {\n chart.tooltip(tooltip);\n } else {\n chart.tooltip(deepAssign({}, tooltip, {\n shared: false\n }));\n // 主要解决 all zero, 对于非 all zero 不再适用\n if (isAllZero(data, angleField)) {\n var fields = get(tooltip, 'fields');\n var formatter = get(tooltip, 'formatter');\n if (isEmpty(get(tooltip, 'fields'))) {\n fields = [colorField, angleField];\n formatter = formatter || function (datum) {\n return {\n name: datum[colorField],\n value: toString(datum[angleField])\n };\n };\n }\n chart.geometries[0].tooltip(fields.join('*'), getMappingFunction(fields, formatter));\n }\n }\n return params;\n}\n/**\n * Interaction 配置 (饼图特殊的 interaction, 中心文本变更的时候,需要将一些配置参数传进去)\n * @param params\n */\nexport function interaction(params) {\n var chart = params.chart,\n options = params.options;\n var _a = transformStatisticOptions(options),\n interactions = _a.interactions,\n statistic = _a.statistic,\n annotations = _a.annotations;\n each(interactions, function (i) {\n var _a, _b;\n if (i.enable === false) {\n chart.removeInteraction(i.type);\n } else if (i.type === 'pie-statistic-active') {\n // 只针对 start 阶段的配置,进行添加参数信息\n var startStages_1 = [];\n if (!((_a = i.cfg) === null || _a === void 0 ? void 0 : _a.start)) {\n startStages_1 = [{\n trigger: 'element:mouseenter',\n action: \"\".concat(PIE_STATISTIC, \":change\"),\n arg: {\n statistic: statistic,\n annotations: annotations\n }\n }];\n }\n each((_b = i.cfg) === null || _b === void 0 ? void 0 : _b.start, function (stage) {\n startStages_1.push(__assign(__assign({}, stage), {\n arg: {\n statistic: statistic,\n annotations: annotations\n }\n }));\n });\n chart.interaction(i.type, deepAssign({}, i.cfg, {\n start: startStages_1\n }));\n } else {\n chart.interaction(i.type, i.cfg || {});\n }\n });\n return params;\n}\n/**\n * 饼图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n // flow 的方式处理所有的配置到 G2 API\n return flow(pattern('pieStyle'), geometry, meta, theme, coordinate, legend, tooltip, label, state, /** 指标卡中心文本 放在下层 */\n pieAnnotation, interaction, animation)(params);\n}","import { __extends } from \"tslib\";\nimport { Event, VIEW_LIFE_CIRCLE } from '@antv/g2';\nimport { Plot } from '../../core/plot';\nimport { processIllegalData } from '../../utils';\nimport { adaptor, pieAnnotation } from './adaptor';\nimport { DEFAULT_OPTIONS } from './contants';\nimport './interactions';\nimport { isAllZero } from './utils';\nvar Pie = /** @class */function (_super) {\n __extends(Pie, _super);\n function Pie() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'pie';\n return _this;\n }\n /**\n * 获取 饼图 默认配置项\n * 供外部使用\n */\n Pie.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * 更新数据\n * @param data\n */\n Pie.prototype.changeData = function (data) {\n this.chart.emit(VIEW_LIFE_CIRCLE.BEFORE_CHANGE_DATA, Event.fromData(this.chart, VIEW_LIFE_CIRCLE.BEFORE_CHANGE_DATA, null));\n var prevOptions = this.options;\n var angleField = this.options.angleField;\n var prevData = processIllegalData(prevOptions.data, angleField);\n var curData = processIllegalData(data, angleField);\n // 如果上一次或当前数据全为 0,则重新渲染\n if (isAllZero(prevData, angleField) || isAllZero(curData, angleField)) {\n this.update({\n data: data\n });\n } else {\n this.updateOption({\n data: data\n });\n this.chart.data(curData);\n // todo 后续让 G2 层在 afterrender 之后,来重绘 annotations\n pieAnnotation({\n chart: this.chart,\n options: this.options\n });\n this.chart.render(true);\n }\n this.chart.emit(VIEW_LIFE_CIRCLE.AFTER_CHANGE_DATA, Event.fromData(this.chart, VIEW_LIFE_CIRCLE.AFTER_CHANGE_DATA, null));\n };\n /**\n * 获取 饼图 默认配置项, 供 base 获取\n */\n Pie.prototype.getDefaultOptions = function () {\n return Pie.getDefaultOptions();\n };\n /**\n * 获取 饼图 的适配器\n */\n Pie.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Pie;\n}(Plot);\nexport { Pie };","export var DEFAULT_COLOR = ['#FAAD14', '#E8EDF3'];\n/**\n * 默认配置项\n */\nexport var DEFAULT_OPTIONS = {\n percent: 0.2,\n color: DEFAULT_COLOR,\n animation: {}\n};","import { clamp } from '@antv/util';\nimport { isRealNumber } from '../../utils/number';\n/**\n * 获取进度条数据\n */\nexport function getProgressData(percent) {\n var clampPercent = clamp(isRealNumber(percent) ? percent : 0, 0, 1);\n return [{\n // 用于 progressStyle 的回调方法\n current: \"\".concat(clampPercent),\n type: 'current',\n percent: clampPercent\n }, {\n current: \"\".concat(clampPercent),\n type: 'target',\n percent: 1\n }];\n}","import { isString } from '@antv/util';\nimport { animation, annotation, scale, theme } from '../../adaptor/common';\nimport { interval } from '../../adaptor/geometries';\nimport { deepAssign, flow } from '../../utils';\nimport { DEFAULT_COLOR } from './constants';\nimport { getProgressData } from './utils';\n/**\n * 字段\n * @param params\n */\nexport function geometry(params) {\n var chart = params.chart,\n options = params.options;\n var percent = options.percent,\n progressStyle = options.progressStyle,\n color = options.color,\n barWidthRatio = options.barWidthRatio;\n chart.data(getProgressData(percent));\n var p = deepAssign({}, params, {\n options: {\n xField: 'current',\n yField: 'percent',\n seriesField: 'type',\n widthRatio: barWidthRatio,\n interval: {\n style: progressStyle,\n color: isString(color) ? [color, DEFAULT_COLOR[1]] : color\n },\n args: {\n zIndexReversed: true,\n sortZIndex: true\n }\n }\n });\n interval(p);\n // 关闭组件\n chart.tooltip(false);\n chart.axis(false);\n chart.legend(false);\n return params;\n}\n/**\n * other 配置\n * @param params\n */\nfunction coordinate(params) {\n var chart = params.chart;\n chart.coordinate('rect').transpose();\n return params;\n}\n/**\n * 进度图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n // @ts-ignore\n return flow(geometry, scale({}), coordinate, animation, theme, annotation())(params);\n}","import { __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { adaptor } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constants';\nimport { getProgressData } from './utils';\nvar Progress = /** @class */function (_super) {\n __extends(Progress, _super);\n function Progress() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'process';\n return _this;\n }\n /**\n * 获取 仪表盘 默认配置项\n * 供外部使用\n */\n Progress.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * 更新数据\n * @param percent\n */\n Progress.prototype.changeData = function (percent) {\n this.updateOption({\n percent: percent\n });\n this.chart.changeData(getProgressData(percent));\n };\n Progress.prototype.getDefaultOptions = function () {\n return Progress.getDefaultOptions();\n };\n /**\n * 获取 进度图 的适配器\n */\n Progress.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Progress;\n}(Plot);\nexport { Progress };","import { __assign } from \"tslib\";\nimport { get, isNil } from '@antv/util';\nimport { animation, annotation, scale, theme } from '../../adaptor/common';\nimport { deepAssign, flow, renderStatistic } from '../../utils';\nimport { geometry } from '../progress/adaptor';\n/**\n * coordinate 配置\n * @param params\n */\nfunction coordinate(params) {\n var chart = params.chart,\n options = params.options;\n var innerRadius = options.innerRadius,\n radius = options.radius;\n // coordinate\n chart.coordinate('theta', {\n innerRadius: innerRadius,\n radius: radius\n });\n return params;\n}\n/**\n * statistic 配置\n * @param params\n */\nexport function statistic(params, updated) {\n var chart = params.chart,\n options = params.options;\n var innerRadius = options.innerRadius,\n statistic = options.statistic,\n percent = options.percent,\n meta = options.meta;\n // 先清空标注,再重新渲染\n chart.getController('annotation').clear(true);\n /** 中心文本 指标卡 */\n if (innerRadius && statistic) {\n var metaFormatter = get(meta, ['percent', 'formatter']) || function (v) {\n return \"\".concat((v * 100).toFixed(2), \"%\");\n };\n var contentOpt = statistic.content;\n if (contentOpt) {\n contentOpt = deepAssign({}, contentOpt, {\n content: !isNil(contentOpt.content) ? contentOpt.content : metaFormatter(percent)\n });\n }\n renderStatistic(chart, {\n statistic: __assign(__assign({}, statistic), {\n content: contentOpt\n }),\n plotType: 'ring-progress'\n }, {\n percent: percent\n });\n }\n if (updated) {\n chart.render(true);\n }\n return params;\n}\n/**\n * 环形进度图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n return flow(geometry, scale({}), coordinate, statistic, animation, theme, annotation())(params);\n}","/**\n * 仪表盘默认配置项\n */\nexport var DEFAULT_OPTIONS = {\n percent: 0.2,\n innerRadius: 0.8,\n radius: 0.98,\n color: ['#FAAD14', '#E8EDF3'],\n statistic: {\n title: false,\n content: {\n style: {\n fontSize: '14px',\n fontWeight: 300,\n fill: '#4D4D4D',\n textAlign: 'center',\n textBaseline: 'middle'\n }\n }\n },\n animation: {}\n};","import { __extends } from \"tslib\";\nimport { Event, VIEW_LIFE_CIRCLE } from '@antv/g2';\nimport { Plot } from '../../core/plot';\nimport { getProgressData } from '../progress/utils';\nimport { adaptor, statistic } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constants';\nvar RingProgress = /** @class */function (_super) {\n __extends(RingProgress, _super);\n function RingProgress() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'ring-process';\n return _this;\n }\n /**\n * 获取默认配置项\n * 供外部使用\n */\n RingProgress.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * 更新数据\n * @param percent\n */\n RingProgress.prototype.changeData = function (percent) {\n this.chart.emit(VIEW_LIFE_CIRCLE.BEFORE_CHANGE_DATA, Event.fromData(this.chart, VIEW_LIFE_CIRCLE.BEFORE_CHANGE_DATA, null));\n this.updateOption({\n percent: percent\n });\n this.chart.data(getProgressData(percent));\n // todo 后续让 G2 层在 afterrender 之后,来重绘 annotations\n statistic({\n chart: this.chart,\n options: this.options\n }, true);\n this.chart.emit(VIEW_LIFE_CIRCLE.AFTER_CHANGE_DATA, Event.fromData(this.chart, VIEW_LIFE_CIRCLE.AFTER_CHANGE_DATA, null));\n };\n RingProgress.prototype.getDefaultOptions = function () {\n return RingProgress.getDefaultOptions();\n };\n /**\n * 获取 环形进度图 的适配器\n */\n RingProgress.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return RingProgress;\n}(Plot);\nexport { RingProgress };","import { __assign } from \"tslib\";\nimport { get, isArray, isNumber } from '@antv/util';\nimport { regressionExp, regressionLinear, regressionLoess, regressionLog, regressionPoly, regressionPow, regressionQuad } from 'd3-regression';\nimport { getSplinePath } from '../../utils';\nvar REGRESSION_MAP = {\n exp: regressionExp,\n linear: regressionLinear,\n loess: regressionLoess,\n log: regressionLog,\n poly: regressionPoly,\n pow: regressionPow,\n quad: regressionQuad\n};\n/**\n * 获取四象限默认配置\n * @param {number} xBaseline\n * @param {number} yBaseline\n */\nexport function getQuadrantDefaultConfig(xBaseline, yBaseline) {\n // 文本便宜距离\n var textOffset = 10;\n // 四象限默认样式\n var defaultConfig = {\n regionStyle: [{\n position: {\n start: [xBaseline, 'max'],\n end: ['max', yBaseline]\n },\n style: {\n fill: '#d8d0c0',\n opacity: 0.4\n }\n }, {\n position: {\n start: ['min', 'max'],\n end: [xBaseline, yBaseline]\n },\n style: {\n fill: '#a3dda1',\n opacity: 0.4\n }\n }, {\n position: {\n start: ['min', yBaseline],\n end: [xBaseline, 'min']\n },\n style: {\n fill: '#d8d0c0',\n opacity: 0.4\n }\n }, {\n position: {\n start: [xBaseline, yBaseline],\n end: ['max', 'min']\n },\n style: {\n fill: '#a3dda1',\n opacity: 0.4\n }\n }],\n lineStyle: {\n stroke: '#9ba29a',\n lineWidth: 1\n },\n labelStyle: [{\n position: ['max', yBaseline],\n offsetX: -textOffset,\n offsetY: -textOffset,\n style: {\n textAlign: 'right',\n textBaseline: 'bottom',\n fontSize: 14,\n fill: '#ccc'\n }\n }, {\n position: ['min', yBaseline],\n offsetX: textOffset,\n offsetY: -textOffset,\n style: {\n textAlign: 'left',\n textBaseline: 'bottom',\n fontSize: 14,\n fill: '#ccc'\n }\n }, {\n position: ['min', yBaseline],\n offsetX: textOffset,\n offsetY: textOffset,\n style: {\n textAlign: 'left',\n textBaseline: 'top',\n fontSize: 14,\n fill: '#ccc'\n }\n }, {\n position: ['max', yBaseline],\n offsetX: -textOffset,\n offsetY: textOffset,\n style: {\n textAlign: 'right',\n textBaseline: 'top',\n fontSize: 14,\n fill: '#ccc'\n }\n }]\n };\n return defaultConfig;\n}\nvar splinePath = function splinePath(data, config) {\n var view = config.view,\n _a = config.options,\n xField = _a.xField,\n yField = _a.yField;\n var xScaleView = view.getScaleByField(xField);\n var yScaleView = view.getScaleByField(yField);\n var pathData = data.map(function (d) {\n return view.getCoordinate().convert({\n x: xScaleView.scale(d[0]),\n y: yScaleView.scale(d[1])\n });\n });\n return getSplinePath(pathData, false);\n};\nexport var getPath = function getPath(config) {\n var options = config.options;\n var xField = options.xField,\n yField = options.yField,\n data = options.data,\n regressionLine = options.regressionLine;\n var _a = regressionLine.type,\n type = _a === void 0 ? 'linear' : _a,\n algorithm = regressionLine.algorithm,\n customEquation = regressionLine.equation;\n var pathData;\n var equation = null;\n if (algorithm) {\n pathData = isArray(algorithm) ? algorithm : algorithm(data);\n equation = customEquation;\n } else {\n var reg = REGRESSION_MAP[type]().x(function (d) {\n return d[xField];\n }).y(function (d) {\n return d[yField];\n });\n pathData = reg(data);\n equation = getRegressionEquation(type, pathData);\n }\n return [splinePath(pathData, config), equation];\n};\n/**\n * 调整散点图 meta: { min, max } ① data.length === 1 ② 所有数据 y 值相等 ③ 所有数据 x 值相等\n * @param options\n * @returns\n */\nexport var getMeta = function getMeta(options) {\n var _a;\n var _b = options.meta,\n meta = _b === void 0 ? {} : _b,\n xField = options.xField,\n yField = options.yField,\n data = options.data;\n var xFieldValue = data[0][xField];\n var yFieldValue = data[0][yField];\n var xIsPositiveNumber = xFieldValue > 0;\n var yIsPositiveNumber = yFieldValue > 0;\n /**\n * 获得对应字段的 min max scale 配置\n */\n function getMetaMinMax(field, axis) {\n var fieldMeta = get(meta, [field]);\n function getCustomValue(type) {\n return get(fieldMeta, type);\n }\n var range = {};\n if (axis === 'x') {\n if (isNumber(xFieldValue)) {\n if (!isNumber(getCustomValue('min'))) {\n range['min'] = xIsPositiveNumber ? 0 : xFieldValue * 2;\n }\n if (!isNumber(getCustomValue('max'))) {\n range['max'] = xIsPositiveNumber ? xFieldValue * 2 : 0;\n }\n }\n return range;\n }\n if (isNumber(yFieldValue)) {\n if (!isNumber(getCustomValue('min'))) {\n range['min'] = yIsPositiveNumber ? 0 : yFieldValue * 2;\n }\n if (!isNumber(getCustomValue('max'))) {\n range['max'] = yIsPositiveNumber ? yFieldValue * 2 : 0;\n }\n }\n return range;\n }\n return __assign(__assign({}, meta), (_a = {}, _a[xField] = __assign(__assign({}, meta[xField]), getMetaMinMax(xField, 'x')), _a[yField] = __assign(__assign({}, meta[yField]), getMetaMinMax(yField, 'y')), _a));\n};\n/**\n * 获取回归函数表达式\n * @param {string} type - 回归函数类型\n * @param {D3RegressionResult} res - 回归计算结果集\n * @return {string}\n */\nexport function getRegressionEquation(type, res) {\n var _a, _b, _c;\n var roundByPrecision = function roundByPrecision(n, p) {\n if (p === void 0) {\n p = 4;\n }\n return Math.round(n * Math.pow(10, p)) / Math.pow(10, p);\n };\n var safeFormat = function safeFormat(value) {\n return Number.isFinite(value) ? roundByPrecision(value) : '?';\n };\n switch (type) {\n case 'linear':\n // y = ax + b\n return \"y = \".concat(safeFormat(res.a), \"x + \").concat(safeFormat(res.b), \", R^2 = \").concat(safeFormat(res.rSquared));\n case 'exp':\n // y = ae^(bx)\n return \"y = \".concat(safeFormat(res.a), \"e^(\").concat(safeFormat(res.b), \"x), R^2 = \").concat(safeFormat(res.rSquared));\n case 'log':\n // y = a · ln(x) + b\n return \"y = \".concat(safeFormat(res.a), \"ln(x) + \").concat(safeFormat(res.b), \", R^2 = \").concat(safeFormat(res.rSquared));\n case 'quad':\n // y = ax^2 + bx + c\n return \"y = \".concat(safeFormat(res.a), \"x^2 + \").concat(safeFormat(res.b), \"x + \").concat(safeFormat(res.c), \", R^2 = \").concat(safeFormat(res.rSquared));\n case 'poly':\n // y = anx^n + ... + a1x + a0\n // eslint-disable-next-line no-case-declarations\n var temp = \"y = \".concat(safeFormat((_a = res.coefficients) === null || _a === void 0 ? void 0 : _a[0]), \" + \").concat(safeFormat((_b = res.coefficients) === null || _b === void 0 ? void 0 : _b[1]), \"x + \").concat(safeFormat((_c = res.coefficients) === null || _c === void 0 ? void 0 : _c[2]), \"x^2\");\n for (var i = 3; i < res.coefficients.length; ++i) {\n temp += \" + \".concat(safeFormat(res.coefficients[i]), \"x^\").concat(i);\n }\n return \"\".concat(temp, \", R^2 = \").concat(safeFormat(res.rSquared));\n case 'pow':\n // y = ax^b\n return \"y = \".concat(safeFormat(res.a), \"x^\").concat(safeFormat(res.b), \", R^2 = \").concat(safeFormat(res.rSquared));\n }\n return null;\n}","import { __assign, __rest } from \"tslib\";\nimport { isNumber } from '@antv/util';\nimport { brushInteraction } from '../../adaptor/brush';\nimport { animation, annotation, interaction, scale, scrollbar, slider, theme } from '../../adaptor/common';\nimport { point } from '../../adaptor/geometries';\nimport { deepAssign, findGeometry, flow, pick, transformLabel } from '../../utils';\nimport { getMeta, getPath, getQuadrantDefaultConfig } from './util';\n/**\n * 散点图默认美观\n * ① data.length === 1 ② 所有数据 y 值相等 ③ 所有数据 x 值相等\n * @param params\n * @returns params\n */\nexport function transformOptions(options) {\n var _a = options.data,\n data = _a === void 0 ? [] : _a,\n xField = options.xField,\n yField = options.yField;\n if (data.length) {\n // x y 字段知否只有一个值,如果只有一个值,则进行优化\n var isOneX = true;\n var isOneY = true;\n var prev = data[0];\n var curr = void 0;\n for (var i = 1; i < data.length; i++) {\n curr = data[i];\n if (prev[xField] !== curr[xField]) {\n isOneX = false;\n }\n if (prev[yField] !== curr[yField]) {\n isOneY = false;\n }\n // 如果都不是 oneValue,那么可提前跳出循环\n if (!isOneX && !isOneY) {\n break;\n }\n prev = curr;\n }\n var keys = [];\n isOneX && keys.push(xField);\n isOneY && keys.push(yField);\n var meta_1 = pick(getMeta(options), keys);\n return deepAssign({}, options, {\n meta: meta_1\n });\n }\n return options;\n}\n/**\n * 字段\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var data = options.data,\n type = options.type,\n color = options.color,\n shape = options.shape,\n pointStyle = options.pointStyle,\n shapeField = options.shapeField,\n colorField = options.colorField,\n xField = options.xField,\n yField = options.yField,\n sizeField = options.sizeField;\n var size = options.size;\n var tooltip = options.tooltip;\n if (sizeField) {\n if (!size) {\n size = [2, 8];\n }\n if (isNumber(size)) {\n size = [size, size];\n }\n }\n if (tooltip && !tooltip.fields) {\n tooltip = __assign(__assign({}, tooltip), {\n fields: [xField, yField, colorField, sizeField, shapeField]\n });\n }\n // 数据\n chart.data(data);\n // geometry\n point(deepAssign({}, params, {\n options: {\n seriesField: colorField,\n point: {\n color: color,\n shape: shape,\n size: size,\n style: pointStyle\n },\n tooltip: tooltip\n }\n }));\n var geometry = findGeometry(chart, 'point');\n // 数据调整\n if (type) {\n geometry.adjust(type);\n }\n return params;\n}\n/**\n * meta 配置\n * @param params\n */\nexport function meta(params) {\n var _a;\n var options = params.options;\n var xAxis = options.xAxis,\n yAxis = options.yAxis,\n xField = options.xField,\n yField = options.yField;\n var newOptions = transformOptions(options);\n return flow(scale((_a = {}, _a[xField] = xAxis, _a[yField] = yAxis, _a)))(deepAssign({}, params, {\n options: newOptions\n }));\n}\n/**\n * axis 配置\n * @param params\n */\nfunction axis(params) {\n var chart = params.chart,\n options = params.options;\n var xAxis = options.xAxis,\n yAxis = options.yAxis,\n xField = options.xField,\n yField = options.yField;\n chart.axis(xField, xAxis);\n chart.axis(yField, yAxis);\n return params;\n}\n/**\n * legend 配置\n * @param params\n */\nfunction legend(params) {\n var chart = params.chart,\n options = params.options;\n var legend = options.legend,\n colorField = options.colorField,\n shapeField = options.shapeField,\n sizeField = options.sizeField,\n shapeLegend = options.shapeLegend,\n sizeLegend = options.sizeLegend;\n /** legend 不为 false, 则展示图例, 优先展示 color 分类图例 */\n var showLegend = legend !== false;\n if (colorField) {\n chart.legend(colorField, showLegend ? legend : false);\n }\n // 优先取 shapeLegend, 否则取 legend\n if (shapeField) {\n if (shapeLegend) {\n chart.legend(shapeField, shapeLegend);\n } else {\n chart.legend(shapeField, shapeLegend === false ? false : legend);\n }\n }\n if (sizeField) {\n chart.legend(sizeField, sizeLegend ? sizeLegend : false);\n }\n /** 默认不展示 shape 图例,当 shapeLegend 为 undefined 也不展示图例 */\n /** 默认没有 sizeField,则隐藏连续图例 */\n if (!showLegend && !shapeLegend && !sizeLegend) {\n chart.legend(false);\n }\n return params;\n}\n/**\n * 数据标签\n * @param params\n */\nfunction label(params) {\n var chart = params.chart,\n options = params.options;\n var label = options.label,\n yField = options.yField;\n var scatterGeometry = findGeometry(chart, 'point');\n // label 为 false, 空 则不显示 label\n if (!label) {\n scatterGeometry.label(false);\n } else {\n var callback = label.callback,\n cfg = __rest(label, [\"callback\"]);\n scatterGeometry.label({\n fields: [yField],\n callback: callback,\n cfg: transformLabel(cfg)\n });\n }\n return params;\n}\n/**\n * annotation 配置\n * - 特殊 annotation: quadrant(四象限)\n * @param params\n */\nfunction scatterAnnotation(params) {\n var options = params.options;\n var quadrant = options.quadrant;\n var annotationOptions = [];\n if (quadrant) {\n var _a = quadrant.xBaseline,\n xBaseline = _a === void 0 ? 0 : _a,\n _b = quadrant.yBaseline,\n yBaseline = _b === void 0 ? 0 : _b,\n labels_1 = quadrant.labels,\n regionStyle_1 = quadrant.regionStyle,\n lineStyle = quadrant.lineStyle;\n var defaultConfig_1 = getQuadrantDefaultConfig(xBaseline, yBaseline);\n // 仅支持四象限\n var quadrants = new Array(4).join(',').split(',');\n quadrants.forEach(function (_, index) {\n annotationOptions.push(__assign(__assign({\n type: 'region',\n top: false\n }, defaultConfig_1.regionStyle[index].position), {\n style: deepAssign({}, defaultConfig_1.regionStyle[index].style, regionStyle_1 === null || regionStyle_1 === void 0 ? void 0 : regionStyle_1[index])\n }), __assign({\n type: 'text',\n top: true\n }, deepAssign({}, defaultConfig_1.labelStyle[index], labels_1 === null || labels_1 === void 0 ? void 0 : labels_1[index])));\n });\n // 生成坐标轴\n annotationOptions.push({\n type: 'line',\n top: false,\n start: ['min', yBaseline],\n end: ['max', yBaseline],\n style: deepAssign({}, defaultConfig_1.lineStyle, lineStyle)\n }, {\n type: 'line',\n top: false,\n start: [xBaseline, 'min'],\n end: [xBaseline, 'max'],\n style: deepAssign({}, defaultConfig_1.lineStyle, lineStyle)\n });\n }\n return flow(annotation(annotationOptions))(params);\n}\n// 趋势线\nfunction regressionLine(params) {\n var options = params.options,\n chart = params.chart;\n var regressionLine = options.regressionLine;\n if (regressionLine) {\n var style_1 = regressionLine.style,\n _a = regressionLine.equationStyle,\n equationStyle_1 = _a === void 0 ? {} : _a,\n _b = regressionLine.top,\n top_1 = _b === void 0 ? false : _b,\n _c = regressionLine.showEquation,\n showEquation_1 = _c === void 0 ? false : _c;\n var defaultStyle_1 = {\n stroke: '#9ba29a',\n lineWidth: 2,\n opacity: 0.5\n };\n var defaulEquationStyle_1 = {\n x: 20,\n y: 20,\n textAlign: 'left',\n textBaseline: 'middle',\n fontSize: 14,\n fillOpacity: 0.5\n };\n chart.annotation().shape({\n top: top_1,\n render: function render(container, view) {\n var group = container.addGroup({\n id: \"\".concat(chart.id, \"-regression-line\"),\n name: 'regression-line-group'\n });\n var _a = getPath({\n view: view,\n options: options\n }),\n path = _a[0],\n equation = _a[1];\n group.addShape('path', {\n name: 'regression-line',\n attrs: __assign(__assign({\n path: path\n }, defaultStyle_1), style_1)\n });\n if (showEquation_1) {\n group.addShape('text', {\n name: 'regression-equation',\n attrs: __assign(__assign(__assign({}, defaulEquationStyle_1), equationStyle_1), {\n text: equation\n })\n });\n }\n }\n });\n }\n return params;\n}\n/**\n * tooltip 配置\n * @param params\n */\nexport function tooltip(params) {\n var chart = params.chart,\n options = params.options;\n var tooltip = options.tooltip;\n if (tooltip) {\n chart.tooltip(tooltip);\n } else if (tooltip === false) {\n chart.tooltip(false);\n }\n return params;\n}\n/**\n * 散点图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n // flow 的方式处理所有的配置到 G2 API\n return flow(geometry, meta, axis, legend, tooltip, label,\n // 需要在 interaction 前面\n brushInteraction, slider, scrollbar, interaction, scatterAnnotation, animation, theme, regressionLine)(params);\n}","import { Plot } from '../../core/plot';\nimport { deepAssign } from '../../utils';\n/**\n * 散点图 默认配置项\n */\nexport var DEFAULT_OPTIONS = deepAssign({}, Plot.getDefaultOptions(), {\n size: 4,\n tooltip: {\n showTitle: false,\n showMarkers: false,\n showCrosshairs: true,\n crosshairs: {\n type: 'xy'\n }\n }\n});","import { registerInteraction } from '@antv/g2';\nregisterInteraction('drag-move', {\n start: [{\n trigger: 'plot:mousedown',\n action: 'scale-translate:start'\n }],\n processing: [{\n trigger: 'plot:mousemove',\n action: 'scale-translate:translate',\n throttle: {\n wait: 100,\n leading: true,\n trailing: false\n }\n }],\n end: [{\n trigger: 'plot:mouseup',\n action: 'scale-translate:end'\n }]\n});","import { __assign, __extends } from \"tslib\";\nimport { BRUSH_FILTER_EVENTS, VIEW_LIFE_CIRCLE } from '@antv/g2';\nimport { Plot } from '../../core/plot';\nimport { deepAssign } from '../../utils';\nimport { adaptor, meta, transformOptions } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constant';\nimport './interactions';\nvar Scatter = /** @class */function (_super) {\n __extends(Scatter, _super);\n function Scatter(container, options) {\n var _this = _super.call(this, container, options) || this;\n /** 图表类型 */\n _this.type = 'scatter';\n // 监听 brush 事件,处理 meta\n _this.on(VIEW_LIFE_CIRCLE.BEFORE_RENDER, function (evt) {\n var _a, _b;\n // 运行时,读取 option\n var _c = _this,\n options = _c.options,\n chart = _c.chart;\n if (((_a = evt.data) === null || _a === void 0 ? void 0 : _a.source) === BRUSH_FILTER_EVENTS.FILTER) {\n var filteredData = _this.chart.filterData(_this.chart.getData());\n meta({\n chart: chart,\n options: __assign(__assign({}, options), {\n data: filteredData\n })\n });\n }\n if (((_b = evt.data) === null || _b === void 0 ? void 0 : _b.source) === BRUSH_FILTER_EVENTS.RESET) {\n meta({\n chart: chart,\n options: options\n });\n }\n });\n return _this;\n }\n /**\n * 获取 散点图 默认配置项\n * 供外部使用\n */\n Scatter.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * @override\n * @param data\n */\n Scatter.prototype.changeData = function (data) {\n this.updateOption(transformOptions(deepAssign({}, this.options, {\n data: data\n })));\n var _a = this,\n options = _a.options,\n chart = _a.chart;\n meta({\n chart: chart,\n options: options\n });\n this.chart.changeData(data);\n };\n /**\n * 获取 散点图 的适配器\n */\n Scatter.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n Scatter.prototype.getDefaultOptions = function () {\n return Scatter.getDefaultOptions();\n };\n return Scatter;\n}(Plot);\nexport { Scatter };","import { Plot } from '../../core/plot';\nimport { deepAssign } from '../../utils';\nexport var Y_FIELD = '$$stock-range$$';\nexport var TREND_FIELD = 'trend';\nexport var TREND_UP = 'up';\nexport var TREND_DOWN = 'down';\n/** tooltip 配置 */\nexport var DEFAULT_TOOLTIP_OPTIONS = {\n showMarkers: false,\n showCrosshairs: true,\n shared: true,\n crosshairs: {\n type: 'xy',\n follow: true,\n text: function text(type, defaultContent, items) {\n var textContent;\n if (type === 'x') {\n var item = items[0];\n textContent = item ? item.title : defaultContent;\n } else {\n textContent = defaultContent;\n }\n return {\n position: type === 'y' ? 'start' : 'end',\n content: textContent,\n style: {\n fill: '#dfdfdf'\n }\n };\n },\n // 自定义 crosshairs textBackground 样式\n textBackground: {\n padding: [2, 4],\n style: {\n fill: '#666'\n }\n }\n }\n};\n/**\n * 散点图 默认配置项\n */\nexport var DEFAULT_OPTIONS = deepAssign({}, Plot.getDefaultOptions(), {\n // 设置默认图表 tooltips\n tooltip: DEFAULT_TOOLTIP_OPTIONS,\n interactions: [{\n type: 'tooltip'\n }],\n legend: {\n position: 'top-left'\n },\n risingFill: '#ef5350',\n fallingFill: '#26a69a'\n});","import { __assign } from \"tslib\";\nimport { isArray, map } from '@antv/util';\nimport { TREND_DOWN, TREND_FIELD, TREND_UP, Y_FIELD } from './constant';\n/**\n * @desc 股票图数据处理\n * @param data\n * @param yField\n */\nexport function getStockData(data, yField) {\n return map(data, function (item) {\n var obj = item && __assign({}, item);\n if (isArray(yField) && obj) {\n var open_1 = yField[0],\n close_1 = yField[1],\n high = yField[2],\n low = yField[3];\n obj[TREND_FIELD] = obj[open_1] <= obj[close_1] ? TREND_UP : TREND_DOWN;\n obj[Y_FIELD] = [obj[open_1], obj[close_1], obj[high], obj[low]];\n }\n return obj;\n });\n}","import { animation, annotation, interaction, slider, theme } from '../../adaptor/common';\nimport { schema } from '../../adaptor/geometries';\nimport { AXIS_META_CONFIG_KEYS } from '../../constant';\nimport { deepAssign, flow, pick } from '../../utils';\nimport { TREND_DOWN, TREND_FIELD, TREND_UP, Y_FIELD } from './constant';\nimport { getStockData } from './utils';\n/**\n * 图表配置处理\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var yField = options.yField;\n var data = options.data,\n risingFill = options.risingFill,\n fallingFill = options.fallingFill,\n tooltip = options.tooltip,\n stockStyle = options.stockStyle;\n chart.data(getStockData(data, yField));\n var tooltipOptions = tooltip;\n if (tooltipOptions !== false) {\n tooltipOptions = deepAssign({}, {\n fields: yField\n }, tooltipOptions);\n }\n schema(deepAssign({}, params, {\n options: {\n schema: {\n shape: 'candle',\n color: [risingFill, fallingFill],\n style: stockStyle\n },\n yField: Y_FIELD,\n seriesField: TREND_FIELD,\n rawFields: yField,\n tooltip: tooltipOptions\n }\n }));\n return params;\n}\n/**\n * meta 配置\n * @param params\n */\nexport function meta(params) {\n var _a, _b;\n var chart = params.chart,\n options = params.options;\n var meta = options.meta,\n xAxis = options.xAxis,\n yAxis = options.yAxis,\n xField = options.xField;\n var baseMeta = (_a = {}, _a[xField] = {\n type: 'timeCat',\n tickCount: 6\n }, _a[TREND_FIELD] = {\n values: [TREND_UP, TREND_DOWN]\n }, _a);\n var scales = deepAssign(baseMeta, meta, (_b = {}, _b[xField] = pick(xAxis, AXIS_META_CONFIG_KEYS), _b[Y_FIELD] = pick(yAxis, AXIS_META_CONFIG_KEYS), _b));\n chart.scale(scales);\n return params;\n}\n/**\n * axis 配置\n * @param params\n */\nexport function axis(params) {\n var chart = params.chart,\n options = params.options;\n var xAxis = options.xAxis,\n yAxis = options.yAxis,\n xField = options.xField;\n // 为 false 则是不显示轴\n if (xAxis === false) {\n chart.axis(xField, false);\n } else {\n chart.axis(xField, xAxis);\n }\n if (yAxis === false) {\n chart.axis(Y_FIELD, false);\n } else {\n chart.axis(Y_FIELD, yAxis);\n }\n return params;\n}\n/**\n * tooltip 配置\n * @param params\n */\nexport function tooltip(params) {\n var chart = params.chart,\n options = params.options;\n var tooltip = options.tooltip;\n if (tooltip !== false) {\n chart.tooltip(tooltip);\n } else {\n chart.tooltip(false);\n }\n return params;\n}\n/**\n * legend 配置\n * @param params\n */\nexport function legend(params) {\n var chart = params.chart,\n options = params.options;\n var legend = options.legend;\n if (legend) {\n chart.legend(TREND_FIELD, legend);\n } else if (legend === false) {\n chart.legend(false);\n }\n return params;\n}\n/**\n * K线图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n // flow 的方式处理所有的配置到 G2 API\n flow(theme, geometry, meta, axis, tooltip, legend, interaction, animation, annotation(), slider)(params);\n}","import { __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { adaptor } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constant';\nimport { getStockData } from './utils';\nvar Stock = /** @class */function (_super) {\n __extends(Stock, _super);\n function Stock() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'stock';\n return _this;\n }\n /**\n * 获取 散点图 默认配置项\n * 供外部使用\n */\n Stock.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * 默认配置\n * g2/g2plot默 认 配 置 --> 图 表 默 认 配 置 --> 开 发 者 自 定 义 配 置 --> 最 终 绘 图 配 置\n */\n Stock.prototype.getDefaultOptions = function () {\n return Stock.getDefaultOptions();\n };\n /**\n * 获取 蜡烛图 的适配器\n */\n Stock.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n /**\n * @override\n * @param data\n */\n Stock.prototype.changeData = function (data) {\n this.updateOption({\n data: data\n });\n var yField = this.options.yField;\n this.chart.changeData(getStockData(data, yField));\n };\n return Stock;\n}(Plot);\nexport { Stock };","import { map } from '@antv/util';\nexport function getTinyData(data) {\n return map(data || [], function (y, x) {\n return {\n x: \"\".concat(x),\n y: y\n };\n });\n}","import { __assign } from \"tslib\";\nimport { get } from '@antv/util';\nexport var X_FIELD = 'x';\nexport var Y_FIELD = 'y';\nexport var DEFAULT_TOOLTIP_OPTIONS = {\n showTitle: false,\n shared: true,\n showMarkers: false,\n customContent: function customContent(x, data) {\n return \"\".concat(get(data, [0, 'data', 'y'], 0));\n },\n containerTpl: '
          ',\n itemTpl: '{value}',\n domStyles: {\n 'g2-tooltip': {\n padding: '2px 4px',\n fontSize: '10px'\n }\n },\n showCrosshairs: true,\n crosshairs: {\n type: 'x'\n }\n};\n/**\n * 默认配置项\n */\nexport var DEFAULT_OPTIONS = {\n appendPadding: 2,\n tooltip: __assign({}, DEFAULT_TOOLTIP_OPTIONS),\n animation: {}\n};","import { animation, annotation, pattern, scale, theme, tooltip } from '../../adaptor/common';\nimport { area, line, point } from '../../adaptor/geometries';\nimport { deepAssign, flow } from '../../utils';\nimport { adjustYMetaByZero } from '../../utils/data';\nimport { X_FIELD, Y_FIELD } from '../tiny-line/constants';\nimport { getTinyData } from '../tiny-line/utils';\n/**\n * 字段\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var data = options.data,\n color = options.color,\n areaStyle = options.areaStyle,\n pointOptions = options.point,\n lineOptions = options.line;\n var pointState = pointOptions === null || pointOptions === void 0 ? void 0 : pointOptions.state;\n var seriesData = getTinyData(data);\n chart.data(seriesData);\n var primary = deepAssign({}, params, {\n options: {\n xField: X_FIELD,\n yField: Y_FIELD,\n area: {\n color: color,\n style: areaStyle\n },\n line: lineOptions,\n point: pointOptions\n }\n });\n var second = deepAssign({}, primary, {\n options: {\n tooltip: false\n }\n });\n var pointParams = deepAssign({}, primary, {\n options: {\n tooltip: false,\n state: pointState\n }\n });\n // area geometry 处理\n area(primary);\n line(second);\n point(pointParams);\n chart.axis(false);\n chart.legend(false);\n return params;\n}\n/**\n * meta 配置\n * @param params\n */\nexport function meta(params) {\n var _a, _b;\n var options = params.options;\n var xAxis = options.xAxis,\n yAxis = options.yAxis,\n data = options.data;\n var seriesData = getTinyData(data);\n return flow(scale((_a = {}, _a[X_FIELD] = xAxis, _a[Y_FIELD] = yAxis, _a), (_b = {}, _b[X_FIELD] = {\n type: 'cat'\n }, _b[Y_FIELD] = adjustYMetaByZero(seriesData, Y_FIELD), _b)))(params);\n}\n/**\n * 迷你面积图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n return flow(pattern('areaStyle'), geometry, meta, tooltip, theme, animation, annotation())(params);\n}","import { __assign } from \"tslib\";\nimport { DEFAULT_TOOLTIP_OPTIONS } from '../tiny-line/constants';\n/**\n * 默认配置项\n */\nexport var DEFAULT_OPTIONS = {\n appendPadding: 2,\n tooltip: __assign({}, DEFAULT_TOOLTIP_OPTIONS),\n // 默认样式\n color: 'l(90) 0:#E5EDFE 1:#ffffff',\n areaStyle: {\n fillOpacity: 0.6\n },\n line: {\n size: 1,\n color: '#5B8FF9'\n },\n animation: {}\n};","import { __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { getTinyData } from '../tiny-line/utils';\nimport { adaptor, meta } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constants';\nvar TinyArea = /** @class */function (_super) {\n __extends(TinyArea, _super);\n function TinyArea() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'tiny-area';\n return _this;\n }\n /**\n * 获取默认配置项\n * 供外部使用\n */\n TinyArea.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * @override\n * @param data\n */\n TinyArea.prototype.changeData = function (data) {\n this.updateOption({\n data: data\n });\n var _a = this,\n chart = _a.chart,\n options = _a.options;\n meta({\n chart: chart,\n options: options\n });\n chart.changeData(getTinyData(data));\n };\n TinyArea.prototype.getDefaultOptions = function () {\n return TinyArea.getDefaultOptions();\n };\n /**\n * 获取 迷你面积图 的适配器\n */\n TinyArea.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return TinyArea;\n}(Plot);\nexport { TinyArea };","import { animation, annotation, pattern, theme, tooltip } from '../../adaptor/common';\nimport { interval } from '../../adaptor/geometries';\nimport { deepAssign, flow } from '../../utils';\nimport { meta } from '../tiny-area/adaptor';\nimport { X_FIELD, Y_FIELD } from '../tiny-line/constants';\nimport { getTinyData } from '../tiny-line/utils';\nexport { meta };\n/**\n * 字段\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var data = options.data,\n color = options.color,\n columnStyle = options.columnStyle,\n columnWidthRatio = options.columnWidthRatio;\n var seriesData = getTinyData(data);\n chart.data(seriesData);\n var p = deepAssign({}, params, {\n options: {\n xField: X_FIELD,\n yField: Y_FIELD,\n widthRatio: columnWidthRatio,\n interval: {\n style: columnStyle,\n color: color\n }\n }\n });\n interval(p);\n chart.axis(false);\n chart.legend(false);\n chart.interaction('element-active');\n return params;\n}\n/**\n * 迷你柱形图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n return flow(theme, pattern('columnStyle'), geometry, meta, tooltip, animation, annotation())(params);\n}","import { __assign } from \"tslib\";\nimport { get } from '@antv/util';\nexport var DEFAULT_TOOLTIP_OPTIONS = {\n showTitle: false,\n shared: true,\n showMarkers: false,\n customContent: function customContent(x, data) {\n return \"\".concat(get(data, [0, 'data', 'y'], 0));\n },\n containerTpl: '
          ',\n itemTpl: '{value}',\n domStyles: {\n 'g2-tooltip': {\n padding: '2px 4px',\n fontSize: '10px'\n }\n }\n};\n/**\n * 默认配置项\n */\nexport var DEFAULT_OPTIONS = {\n appendPadding: 2,\n tooltip: __assign({}, DEFAULT_TOOLTIP_OPTIONS),\n animation: {}\n};","import { __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { getTinyData } from '../tiny-line/utils';\nimport { adaptor, meta } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constants';\nvar TinyColumn = /** @class */function (_super) {\n __extends(TinyColumn, _super);\n function TinyColumn() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'tiny-column';\n return _this;\n }\n /**\n * 获取默认配置项\n * 供外部使用\n */\n TinyColumn.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * @override\n * @param data\n */\n TinyColumn.prototype.changeData = function (data) {\n this.updateOption({\n data: data\n });\n var _a = this,\n chart = _a.chart,\n options = _a.options;\n meta({\n chart: chart,\n options: options\n });\n chart.changeData(getTinyData(data));\n };\n TinyColumn.prototype.getDefaultOptions = function () {\n return TinyColumn.getDefaultOptions();\n };\n /**\n * 获取 迷你柱形图 的适配器\n */\n TinyColumn.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return TinyColumn;\n}(Plot);\nexport { TinyColumn };","import { animation, annotation, theme, tooltip } from '../../adaptor/common';\nimport { line, point } from '../../adaptor/geometries';\nimport { deepAssign, flow } from '../../utils';\nimport { meta } from '../tiny-area/adaptor';\nimport { X_FIELD, Y_FIELD } from './constants';\nimport { getTinyData } from './utils';\nexport { meta };\n/**\n * 字段\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var data = options.data,\n color = options.color,\n lineStyle = options.lineStyle,\n pointMapping = options.point;\n var pointState = pointMapping === null || pointMapping === void 0 ? void 0 : pointMapping.state;\n var seriesData = getTinyData(data);\n chart.data(seriesData);\n // line geometry 处理\n var primary = deepAssign({}, params, {\n options: {\n xField: X_FIELD,\n yField: Y_FIELD,\n line: {\n color: color,\n style: lineStyle\n },\n point: pointMapping\n }\n });\n var pointParams = deepAssign({}, primary, {\n options: {\n tooltip: false,\n state: pointState\n }\n });\n line(primary);\n point(pointParams);\n chart.axis(false);\n chart.legend(false);\n return params;\n}\n/**\n * 迷你折线图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n return flow(geometry, meta, theme, tooltip, animation, annotation())(params);\n}","import { __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { adaptor, meta } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constants';\nimport { getTinyData } from './utils';\nvar TinyLine = /** @class */function (_super) {\n __extends(TinyLine, _super);\n function TinyLine() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'tiny-line';\n return _this;\n }\n /**\n * 获取默认配置项\n * 供外部使用\n */\n TinyLine.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * @override\n * @param data\n */\n TinyLine.prototype.changeData = function (data) {\n this.updateOption({\n data: data\n });\n var _a = this,\n chart = _a.chart,\n options = _a.options;\n meta({\n chart: chart,\n options: options\n });\n chart.changeData(getTinyData(data));\n };\n TinyLine.prototype.getDefaultOptions = function () {\n return TinyLine.getDefaultOptions();\n };\n /**\n * 获取 迷你折线图 的适配器\n */\n TinyLine.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return TinyLine;\n}(Plot);\nexport { TinyLine };","import { get } from '@antv/util';\nimport { deepAssign } from '../../utils';\nimport { Area } from '../area';\nimport { adaptor as areaAdaptor } from '../area/adaptor';\nimport { Bar } from '../bar';\nimport { adaptor as barAdaptor } from '../bar/adaptor';\nimport { Column } from '../column';\nimport { adaptor as columnAdaptor } from '../column/adaptor';\nimport { Funnel } from '../funnel';\nimport { adaptor as funnelAdaptor } from '../funnel/adaptor';\nimport { Gauge } from '../gauge';\nimport { adaptor as gaugeAdaptor } from '../gauge/adaptor';\nimport { Histogram } from '../histogram';\nimport { adaptor as histogramAdaptor } from '../histogram/adaptor';\nimport { Line } from '../line';\nimport { adaptor as lineAdaptor } from '../line/adaptor';\nimport { Pie } from '../pie';\nimport { adaptor as pieAdaptor } from '../pie/adaptor';\nimport { Progress } from '../progress';\nimport { adaptor as progressAdaptor } from '../progress/adaptor';\nimport { RingProgress } from '../ring-progress';\nimport { adaptor as ringProgressAdaptor } from '../ring-progress/adaptor';\nimport { Scatter } from '../scatter';\nimport { adaptor as scatterAdaptor } from '../scatter/adaptor';\nimport { Stock } from '../stock';\nimport { adaptor as stockAdaptor } from '../stock/adaptor';\nimport { TinyArea } from '../tiny-area';\nimport { adaptor as tinyAreaAdaptor } from '../tiny-area/adaptor';\nimport { TinyColumn } from '../tiny-column';\nimport { adaptor as tinyColumnAdaptor } from '../tiny-column/adaptor';\nimport { TinyLine } from '../tiny-line';\nimport { adaptor as tinyLineAdaptor } from '../tiny-line/adaptor';\n/**\n * 可在 multi-view 中使用的 plots\n */\nvar PLOT_ADAPTORS = {\n line: lineAdaptor,\n pie: pieAdaptor,\n column: columnAdaptor,\n bar: barAdaptor,\n area: areaAdaptor,\n gauge: gaugeAdaptor,\n 'tiny-line': tinyLineAdaptor,\n 'tiny-column': tinyColumnAdaptor,\n 'tiny-area': tinyAreaAdaptor,\n 'ring-progress': ringProgressAdaptor,\n progress: progressAdaptor,\n scatter: scatterAdaptor,\n histogram: histogramAdaptor,\n funnel: funnelAdaptor,\n stock: stockAdaptor\n};\n/**\n * 获取指定 plot 的 class contructor\n * @param {string} plot\n */\nvar PLOT_CONSTRUCTOR = {\n line: Line,\n pie: Pie,\n column: Column,\n bar: Bar,\n area: Area,\n gauge: Gauge,\n 'tiny-line': TinyLine,\n 'tiny-column': TinyColumn,\n 'tiny-area': TinyArea,\n 'ring-progress': RingProgress,\n progress: Progress,\n scatter: Scatter,\n histogram: Histogram,\n funnel: Funnel,\n stock: Stock\n};\n/**\n * 在 mix 图表以及 facet 图表中,defaultOptions 进行复写简化\n */\nvar DEFAULT_OPTIONS_MAP = {\n pie: {\n label: false\n },\n column: {\n tooltip: {\n showMarkers: false\n }\n },\n bar: {\n tooltip: {\n showMarkers: false\n }\n }\n};\n/**\n * 执行 plot 的 adaptor, 默认都带上 defaultOptions\n * @param {string} plot\n */\nexport function execPlotAdaptor(plot, view, options) {\n var cls = PLOT_CONSTRUCTOR[plot];\n if (!cls) {\n console.error(\"could not find \".concat(plot, \" plot\"));\n return;\n }\n var module = PLOT_ADAPTORS[plot];\n module({\n chart: view,\n options: deepAssign({}, cls.getDefaultOptions(), get(DEFAULT_OPTIONS_MAP, plot, {}), options)\n });\n}","import { __assign } from \"tslib\";\nimport { each } from '@antv/util';\nimport { animation, annotation, interaction, theme, tooltip } from '../../adaptor/common';\nimport { geometry as geometryAdaptor } from '../../adaptor/geometries/base';\nimport { AXIS_META_CONFIG_KEYS } from '../../constant';\nimport { PLOT_CONTAINER_OPTIONS } from '../../core/plot';\nimport { deepAssign, flow, pick } from '../../utils';\nimport { execPlotAdaptor } from './utils';\n/**\n * geometry 处理\n * @param params\n */\nfunction multiView(params) {\n var chart = params.chart,\n options = params.options;\n var views = options.views,\n legend = options.legend;\n each(views, function (v) {\n var region = v.region,\n data = v.data,\n meta = v.meta,\n axes = v.axes,\n coordinate = v.coordinate,\n interactions = v.interactions,\n annotations = v.annotations,\n tooltip = v.tooltip,\n geometries = v.geometries;\n // 1. 创建 view\n var viewOfG2 = chart.createView({\n region: region\n });\n // 2. data\n viewOfG2.data(data);\n // 3. meta\n var scales = {};\n if (axes) {\n each(axes, function (axis, field) {\n scales[field] = pick(axis, AXIS_META_CONFIG_KEYS);\n });\n }\n scales = deepAssign({}, meta, scales);\n viewOfG2.scale(scales);\n // 4. x y axis\n if (!axes) {\n viewOfG2.axis(false);\n } else {\n each(axes, function (axis, field) {\n viewOfG2.axis(field, axis);\n });\n }\n // 5. coordinate\n viewOfG2.coordinate(coordinate);\n // 6. geometry\n each(geometries, function (geometry) {\n var ext = geometryAdaptor({\n chart: viewOfG2,\n options: geometry\n }).ext;\n // adjust\n var adjust = geometry.adjust;\n if (adjust) {\n ext.geometry.adjust(adjust);\n }\n });\n // 7. interactions\n each(interactions, function (interaction) {\n if (interaction.enable === false) {\n viewOfG2.removeInteraction(interaction.type);\n } else {\n viewOfG2.interaction(interaction.type, interaction.cfg);\n }\n });\n // 8. annotations\n each(annotations, function (annotation) {\n viewOfG2.annotation()[annotation.type](__assign({}, annotation));\n });\n // 9. animation (先做动画)\n if (typeof v.animation === 'boolean') {\n viewOfG2.animate(false);\n } else {\n viewOfG2.animate(true);\n // 9.1 所有的 Geometry 都使用同一动画(各个图形如有区别,todo 自行覆盖)\n each(viewOfG2.geometries, function (g) {\n g.animate(v.animation);\n });\n }\n if (tooltip) {\n // 10. tooltip\n viewOfG2.interaction('tooltip');\n viewOfG2.tooltip(tooltip);\n }\n });\n // legend\n if (!legend) {\n chart.legend(false);\n } else {\n each(legend, function (l, field) {\n chart.legend(field, l);\n });\n }\n // tooltip\n chart.tooltip(options.tooltip);\n return params;\n}\n/**\n * 支持嵌套使用 g2plot 内置图表\n * @param params\n */\nfunction multiPlot(params) {\n var chart = params.chart,\n options = params.options;\n var plots = options.plots,\n _a = options.data,\n data = _a === void 0 ? [] : _a;\n each(plots, function (plot) {\n var type = plot.type,\n region = plot.region,\n _a = plot.options,\n options = _a === void 0 ? {} : _a,\n top = plot.top;\n var tooltip = options.tooltip;\n if (top) {\n execPlotAdaptor(type, chart, __assign(__assign({}, options), {\n data: data\n }));\n return;\n }\n var viewOfG2 = chart.createView(__assign({\n region: region\n }, pick(options, PLOT_CONTAINER_OPTIONS)));\n if (tooltip) {\n // 配置 tooltip 交互\n viewOfG2.interaction('tooltip');\n }\n execPlotAdaptor(type, viewOfG2, __assign({\n data: data\n }, options));\n });\n return params;\n}\n/**\n * 处理缩略轴的 adaptor (mix)\n * @param params\n */\nexport function slider(params) {\n var chart = params.chart,\n options = params.options;\n chart.option('slider', options.slider);\n return params;\n}\n/**\n * 图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n return flow(animation,\n // 多 view 的图,动画配置放到最前面\n multiView, multiPlot, interaction, animation, theme, tooltip, slider, annotation()\n // ... 其他的 adaptor flow\n )(params);\n}","import { __extends } from \"tslib\";\nimport { Action, registerAction, registerInteraction } from '@antv/g2';\nimport { each, get, isArray, map } from '@antv/util';\nimport { getAllElements, getSiblingViews, getViews } from '../../../utils';\nimport { clearHighlight, getElementValue } from './utils';\n/**\n * 存在多个 view 时,view 之间的联动交互\n *\n * 提供四个反馈 action,均接受参数:linkField 关联字段,dim 维度\n * 1. showTooltip\n * 2. active\n * 3. highlight\n * 4. selected\n *\n * 附加,两个结束反馈 action:\n * 1. hidetooltip\n * 2. reset 清除激活和高亮状态\n */\nvar Association = /** @class */function (_super) {\n __extends(Association, _super);\n function Association() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * 获取关联的 elements\n *\n * - 如果 dim 参数存在,根据 dim 获取相应的 field。与 linkField 不匹配则 return\n * - 否则 dim 参数不存在,且 linkField 存在,则作为关联字段\n * - 否则若 linkField 不存在,则获取第一个分类字段\n * @returns EventItem[]\n */\n Association.prototype.getAssociationItems = function (views, params) {\n var _a;\n var event = this.context.event;\n var _b = params || {},\n linkField = _b.linkField,\n dim = _b.dim;\n var items = [];\n if ((_a = event.data) === null || _a === void 0 ? void 0 : _a.data) {\n var data_1 = event.data.data;\n each(views, function (v) {\n var _a, _b;\n var field = linkField;\n if (dim === 'x') {\n field = v.getXScale().field;\n } else if (dim === 'y') {\n field = (_a = v.getYScales().find(function (s) {\n return s.field === field;\n })) === null || _a === void 0 ? void 0 : _a.field;\n } else if (!field) {\n field = (_b = v.getGroupScales()[0]) === null || _b === void 0 ? void 0 : _b.field;\n }\n if (!field) {\n return;\n }\n var elements = map(getAllElements(v), function (ele) {\n var active = false;\n var inactive = false;\n var dataValue = isArray(data_1) ? get(data_1[0], field) : get(data_1, field);\n if (getElementValue(ele, field) === dataValue) {\n active = true;\n } else {\n inactive = true;\n }\n return {\n element: ele,\n view: v,\n active: active,\n inactive: inactive\n };\n });\n items.push.apply(items, elements);\n });\n }\n return items;\n };\n /**\n * 所有同一层级的 tooltip 显示\n */\n Association.prototype.showTooltip = function (params) {\n var siblings = getSiblingViews(this.context.view);\n var elements = this.getAssociationItems(siblings, params);\n each(elements, function (ele) {\n if (ele.active) {\n var box = ele.element.shape.getCanvasBBox();\n ele.view.showTooltip({\n x: box.minX + box.width / 2,\n y: box.minY + box.height / 2\n });\n }\n });\n };\n /**\n * 隐藏同一层级的 tooltip\n */\n Association.prototype.hideTooltip = function () {\n var siblings = getSiblingViews(this.context.view);\n each(siblings, function (sibling) {\n sibling.hideTooltip();\n });\n };\n /**\n * 设置 active 状态\n */\n Association.prototype.active = function (params) {\n var views = getViews(this.context.view);\n var items = this.getAssociationItems(views, params);\n each(items, function (item) {\n var active = item.active,\n element = item.element;\n if (active) {\n element.setState('active', true);\n }\n });\n };\n /**\n * 设置 selected 状态\n */\n Association.prototype.selected = function (params) {\n var views = getViews(this.context.view);\n var items = this.getAssociationItems(views, params);\n each(items, function (item) {\n var active = item.active,\n element = item.element;\n if (active) {\n element.setState('selected', true);\n }\n });\n };\n /**\n * 进行高亮 => 设置 inactive 状态\n */\n Association.prototype.highlight = function (params) {\n var views = getViews(this.context.view);\n var items = this.getAssociationItems(views, params);\n each(items, function (item) {\n var inactive = item.inactive,\n element = item.element;\n if (inactive) {\n element.setState('inactive', true);\n }\n });\n };\n Association.prototype.reset = function () {\n var views = getViews(this.context.view);\n each(views, function (v) {\n clearHighlight(v);\n });\n };\n return Association;\n}(Action);\nregisterAction('association', Association);\n/**\n * 相邻 view 的 active 联动(相同维值的 tooltip 联动)\n */\nregisterInteraction('association-active', {\n start: [{\n trigger: 'element:mouseenter',\n action: 'association:active'\n }],\n end: [{\n trigger: 'element:mouseleave',\n action: 'association:reset'\n }]\n});\n/**\n * 相邻 view 的 active 联动(相同维值的 tooltip 联动)\n */\nregisterInteraction('association-selected', {\n start: [{\n trigger: 'element:mouseenter',\n action: 'association:selected'\n }],\n end: [{\n trigger: 'element:mouseleave',\n action: 'association:reset'\n }]\n});\n/**\n * 相邻 view 的 highlight 联动, 突出当前 element\n */\nregisterInteraction('association-highlight', {\n start: [{\n trigger: 'element:mouseenter',\n action: 'association:highlight'\n }],\n end: [{\n trigger: 'element:mouseleave',\n action: 'association:reset'\n }]\n});\n/**\n * 相邻 view 的 tooltip 联动,根据 groupField 进行关联(相同维值的 tooltip 联动)\n */\nregisterInteraction('association-tooltip', {\n start: [{\n trigger: 'element:mousemove',\n action: 'association:showTooltip'\n }],\n end: [{\n trigger: 'element:mouseleave',\n action: 'association:hideTooltip'\n }]\n});","import { each, isArray } from '@antv/util';\nimport { getAllElements } from '../../../utils';\n/**\n * 获取图表元素对应字段的值\n * @param element 图表元素\n * @param field 字段名\n * @ignore\n */\nexport function getElementValue(element, field) {\n var model = element.getModel();\n var record = model.data;\n var value;\n if (isArray(record)) {\n value = record[0][field];\n } else {\n value = record[field];\n }\n return value;\n}\n/**\n * @ignore\n * 清理 highlight 效果\n * @param view View 或者 Chart\n */\nexport function clearHighlight(view) {\n var elements = getAllElements(view);\n each(elements, function (el) {\n if (el.hasState('active')) {\n el.setState('active', false);\n }\n if (el.hasState('selected')) {\n el.setState('selected', false);\n }\n if (el.hasState('inactive')) {\n el.setState('inactive', false);\n }\n });\n}","import { __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { adaptor } from './adaptor';\nimport './interactions';\n/**\n * 多图层图形,释放 G2 80% 的功能,可以用来做:\n * 1. 图层叠加的图:\n * - 折线 + 置信度区间迭代\n * - 嵌套饼图\n * - ...\n * 2. 图层划分的图\n * - 多维图\n * - 柱饼组合图\n * - ...\n */\nvar Mix = /** @class */function (_super) {\n __extends(Mix, _super);\n function Mix() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'mix';\n return _this;\n }\n /**\n * 获取适配器\n */\n Mix.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Mix;\n}(Plot);\nexport { Mix };","import { Mix } from './plots/mix';\n/** 实验室图表所处的阶段 */\nexport var Stage;\n(function (Stage) {\n Stage[\"DEV\"] = \"DEV\";\n Stage[\"BETA\"] = \"BETA\";\n Stage[\"STABLE\"] = \"STABLE\";\n})(Stage || (Stage = {}));\n/**\n * 不同阶段打印一些消息给开发者\n * @param stage\n */\nexport function notice(stage, plotType) {\n console.warn(stage === Stage.DEV ? \"Plot '\".concat(plotType, \"' is in DEV stage, just give us issues.\") : stage === Stage.BETA ? \"Plot '\".concat(plotType, \"' is in BETA stage, DO NOT use it in production env.\") : stage === Stage.STABLE ? \"Plot '\".concat(plotType, \"' is in STABLE stage, import it by \\\"import { \").concat(plotType, \" } from '@antv/g2plot'\\\".\") : 'invalid Stage type.');\n}\n/**\n * 实验室图表,实验室中的图表分成不同的阶段。\n */\nvar Lab = /** @class */function () {\n function Lab() {}\n Object.defineProperty(Lab, \"MultiView\", {\n get: function get() {\n notice(Stage.STABLE, 'MultiView');\n return Mix;\n },\n enumerable: false,\n configurable: true\n });\n return Lab;\n}();\nexport { Lab };","export var FIRST_AXES_VIEW = 'first-axes-view';\nexport var SECOND_AXES_VIEW = 'second-axes-view';\n/** 对称条形图的分组 key 值 */\nexport var SERIES_FIELD_KEY = 'series-field-key';","import { groupBy } from '@antv/util';\n/**\n * bidirectional-bar 处理数据, 通过 SERIES_FIELD_KEY 字段分成左右数据\n * @param xField\n * @param yField\n * @param data\n */\nexport function transformData(xField, yField, seriesField, data, reverse) {\n var hopeData = [];\n yField.forEach(function (d) {\n data.forEach(function (k) {\n var _a;\n var obj = (_a = {}, _a[xField] = k[xField], _a[seriesField] = d, _a[d] = k[d], _a);\n hopeData.push(obj);\n });\n });\n var groupData = Object.values(groupBy(hopeData, seriesField));\n var _a = groupData[0],\n data1 = _a === void 0 ? [] : _a,\n _b = groupData[1],\n data2 = _b === void 0 ? [] : _b;\n return reverse ? [data1.reverse(), data2.reverse()] : [data1, data2];\n}\n/**\n * 是否横向,默认空为横向\n * @param layout\n */\nexport function isHorizontal(layout) {\n return layout !== 'vertical';\n}\n/**\n * 多 view 进行同步 padding 的自定义逻辑\n * @param chart\n * @param views\n * @param p\n */\nexport function syncViewPadding(chart, views, p) {\n var v1 = views[0],\n v2 = views[1];\n var p1 = v1.autoPadding;\n var p2 = v2.autoPadding;\n var _a = chart.__axisPosition,\n layout = _a.layout,\n position = _a.position;\n // 目前只能根据布局的比例来判断 layout\n if (isHorizontal(layout) && position === 'top') {\n /**\n * 保证 v1 的 left 和 v2 right 的间隔相等,因为 v1 有轴\n * position top 即为 v1 左边,中间间距设置就为 0\n */\n v1.autoPadding = p.instance(p1.top, 0, p1.bottom, p1.left);\n v2.autoPadding = p.instance(p2.top, p1.left, p2.bottom, 0);\n }\n if (isHorizontal(layout) && position === 'bottom') {\n /**\n * 保证 v1 的 left 和 v2 right 的间隔相等,因为 v1 有轴\n * position bottom 即为 v1 的右边,v1 right = right / 2 v2 left = right / 2\n * + 5 是为了 让那个轴不要太贴近了,更好看\n */\n v1.autoPadding = p.instance(p1.top, p1.right / 2 + 5, p1.bottom, p1.left);\n v2.autoPadding = p.instance(p2.top, p2.right, p2.bottom, p1.right / 2 + 5);\n }\n if (!isHorizontal(layout) && position === 'bottom') {\n /**\n * 保证 v1 的 left 和 v2 left 的间隔相等 left 取最大值\n * position bottom 即为 v1 下边,v1 bottom = bottom / 2 v2 top = bottom / 2\n * + 5 是为了 让那个轴不要太贴近了,更好看\n */\n var left = p1.left >= p2.left ? p1.left : p2.left;\n v1.autoPadding = p.instance(p1.top, p1.right, p1.bottom / 2 + 5, left);\n v2.autoPadding = p.instance(p1.bottom / 2 + 5, p2.right, p2.bottom, left);\n }\n // 垂直状态,不建议设置position 为 top, 还是做个兼容处理\n if (!isHorizontal(layout) && position === 'top') {\n var left = p1.left >= p2.left ? p1.left : p2.left;\n v1.autoPadding = p.instance(p1.top, p1.right, 0, left);\n v2.autoPadding = p.instance(0, p2.right, p1.top, left);\n }\n}","import { __assign, __rest } from \"tslib\";\nimport { get, keys } from '@antv/util';\nimport { animation as commonAnimation, interaction as commonInteraction, limitInPlot as commonLimitInPlot, scale, theme as commonTheme, tooltip } from '../../adaptor/common';\nimport { interval } from '../../adaptor/geometries';\nimport { deepAssign, findGeometry, findViewById, flow, transformLabel } from '../../utils';\nimport { FIRST_AXES_VIEW, SECOND_AXES_VIEW, SERIES_FIELD_KEY } from './constant';\nimport { isHorizontal, transformData } from './utils';\n/**\n * geometry 处理\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var data = options.data,\n xField = options.xField,\n yField = options.yField,\n color = options.color,\n barStyle = options.barStyle,\n widthRatio = options.widthRatio,\n legend = options.legend,\n layout = options.layout;\n // 处理数据\n var groupData = transformData(xField, yField, SERIES_FIELD_KEY, data, isHorizontal(layout));\n // 在创建子 view 执行后不行,需要在前面处理 legend\n if (legend) {\n chart.legend(SERIES_FIELD_KEY, legend);\n } else if (legend === false) {\n chart.legend(false);\n }\n // 创建 view\n var firstView;\n var secondView;\n var firstViewData = groupData[0],\n secondViewData = groupData[1];\n // 横向\n if (isHorizontal(layout)) {\n firstView = chart.createView({\n region: {\n start: {\n x: 0,\n y: 0\n },\n end: {\n x: 0.5,\n y: 1\n }\n },\n id: FIRST_AXES_VIEW\n });\n firstView.coordinate().transpose().reflect('x');\n secondView = chart.createView({\n region: {\n start: {\n x: 0.5,\n y: 0\n },\n end: {\n x: 1,\n y: 1\n }\n },\n id: SECOND_AXES_VIEW\n });\n secondView.coordinate().transpose();\n // @说明: 测试发现,横向因为轴的反转,需要数据也反转,不然会图形渲染是反的(翻转操作进入到 transform 中处理)\n firstView.data(firstViewData);\n secondView.data(secondViewData);\n } else {\n // 纵向\n firstView = chart.createView({\n region: {\n start: {\n x: 0,\n y: 0\n },\n end: {\n x: 1,\n y: 0.5\n }\n },\n id: FIRST_AXES_VIEW\n });\n secondView = chart.createView({\n region: {\n start: {\n x: 0,\n y: 0.5\n },\n end: {\n x: 1,\n y: 1\n }\n },\n id: SECOND_AXES_VIEW\n });\n secondView.coordinate().reflect('y');\n firstView.data(firstViewData);\n secondView.data(secondViewData);\n }\n var left = deepAssign({}, params, {\n chart: firstView,\n options: {\n widthRatio: widthRatio,\n xField: xField,\n yField: yField[0],\n seriesField: SERIES_FIELD_KEY,\n interval: {\n color: color,\n style: barStyle\n }\n }\n });\n interval(left);\n var right = deepAssign({}, params, {\n chart: secondView,\n options: {\n xField: xField,\n yField: yField[1],\n seriesField: SERIES_FIELD_KEY,\n widthRatio: widthRatio,\n interval: {\n color: color,\n style: barStyle\n }\n }\n });\n interval(right);\n return params;\n}\n/**\n * meta 配置\n * - 对称条形图对数据进行了处理,通过 SERIES_FIELD_KEY 来对两条 yField 数据进行分类\n * @param params\n */\nfunction meta(params) {\n var _a, _b, _c;\n var options = params.options,\n chart = params.chart;\n var xAxis = options.xAxis,\n yAxis = options.yAxis,\n xField = options.xField,\n yField = options.yField;\n var firstView = findViewById(chart, FIRST_AXES_VIEW);\n var secondView = findViewById(chart, SECOND_AXES_VIEW);\n var aliasMap = {};\n keys((options === null || options === void 0 ? void 0 : options.meta) || {}).map(function (metaKey) {\n if (get(options === null || options === void 0 ? void 0 : options.meta, [metaKey, 'alias'])) {\n aliasMap[metaKey] = options.meta[metaKey].alias;\n }\n });\n chart.scale((_a = {}, _a[SERIES_FIELD_KEY] = {\n sync: true,\n formatter: function formatter(v) {\n return get(aliasMap, v, v);\n }\n }, _a));\n scale((_b = {}, _b[xField] = xAxis, _b[yField[0]] = yAxis[yField[0]], _b))(deepAssign({}, params, {\n chart: firstView\n }));\n scale((_c = {}, _c[xField] = xAxis, _c[yField[1]] = yAxis[yField[1]], _c))(deepAssign({}, params, {\n chart: secondView\n }));\n return params;\n}\n/**\n * axis 配置\n * @param params\n */\nfunction axis(params) {\n var chart = params.chart,\n options = params.options;\n var xAxis = options.xAxis,\n yAxis = options.yAxis,\n xField = options.xField,\n yField = options.yField,\n layout = options.layout;\n var firstView = findViewById(chart, FIRST_AXES_VIEW);\n var secondView = findViewById(chart, SECOND_AXES_VIEW);\n // 第二个 view axis 始终隐藏; 注意 bottom 的时候,只隐藏 label,其他共用配置\n // @ts-ignore\n if ((xAxis === null || xAxis === void 0 ? void 0 : xAxis.position) === 'bottom') {\n // fixme 直接设置 label: null 会导致 tickLine 无法显示\n secondView.axis(xField, __assign(__assign({}, xAxis), {\n label: {\n formatter: function formatter() {\n return '';\n }\n }\n }));\n } else {\n secondView.axis(xField, false);\n }\n // 为 false 则是不显示 firstView 轴\n if (xAxis === false) {\n firstView.axis(xField, false);\n } else {\n firstView.axis(xField, __assign({\n // 不同布局 firstView 的坐标轴显示位置\n position: isHorizontal(layout) ? 'top' : 'bottom'\n }, xAxis));\n }\n if (yAxis === false) {\n firstView.axis(yField[0], false);\n secondView.axis(yField[1], false);\n } else {\n firstView.axis(yField[0], yAxis[yField[0]]);\n secondView.axis(yField[1], yAxis[yField[1]]);\n }\n /**\n * 这个注入,主要是在syncViewPadding时候拿到相对应的配置:布局和轴的位置\n * TODO 之后希望 g2 View 对象可以开放 setter 可以设置一些需要的东西\n */\n //@ts-ignore\n chart.__axisPosition = {\n position: firstView.getOptions().axes[xField].position,\n layout: layout\n };\n return params;\n}\n/**\n * interaction 配置\n * @param params\n */\nexport function interaction(params) {\n var chart = params.chart;\n commonInteraction(deepAssign({}, params, {\n chart: findViewById(chart, FIRST_AXES_VIEW)\n }));\n commonInteraction(deepAssign({}, params, {\n chart: findViewById(chart, SECOND_AXES_VIEW)\n }));\n return params;\n}\n/**\n * limitInPlot\n * @param params\n */\nexport function limitInPlot(params) {\n var chart = params.chart,\n options = params.options;\n var yField = options.yField,\n yAxis = options.yAxis;\n commonLimitInPlot(deepAssign({}, params, {\n chart: findViewById(chart, FIRST_AXES_VIEW),\n options: {\n yAxis: yAxis[yField[0]]\n }\n }));\n commonLimitInPlot(deepAssign({}, params, {\n chart: findViewById(chart, SECOND_AXES_VIEW),\n options: {\n yAxis: yAxis[yField[1]]\n }\n }));\n return params;\n}\n/**\n * theme\n * @param params\n */\nexport function theme(params) {\n var chart = params.chart;\n commonTheme(deepAssign({}, params, {\n chart: findViewById(chart, FIRST_AXES_VIEW)\n }));\n commonTheme(deepAssign({}, params, {\n chart: findViewById(chart, SECOND_AXES_VIEW)\n }));\n commonTheme(params);\n return params;\n}\n/**\n * animation\n * @param params\n */\nexport function animation(params) {\n var chart = params.chart;\n commonAnimation(deepAssign({}, params, {\n chart: findViewById(chart, FIRST_AXES_VIEW)\n }));\n commonAnimation(deepAssign({}, params, {\n chart: findViewById(chart, SECOND_AXES_VIEW)\n }));\n return params;\n}\n/**\n * label 配置 (1. 设置 offset 偏移量默认值 2. leftView 偏移量需要 *= -1)\n * @param params\n */\nfunction label(params) {\n var _this = this;\n var _a, _b;\n var chart = params.chart,\n options = params.options;\n var label = options.label,\n yField = options.yField,\n layout = options.layout;\n var firstView = findViewById(chart, FIRST_AXES_VIEW);\n var secondView = findViewById(chart, SECOND_AXES_VIEW);\n var leftGeometry = findGeometry(firstView, 'interval');\n var rightGeometry = findGeometry(secondView, 'interval');\n if (!label) {\n leftGeometry.label(false);\n rightGeometry.label(false);\n } else {\n var callback = label.callback,\n cfg_1 = __rest(label, [\"callback\"]);\n /** ---- 设置默认配置 ---- */\n // 默认居中\n if (!cfg_1.position) {\n cfg_1.position = 'middle';\n }\n if (cfg_1.offset === undefined) {\n cfg_1.offset = 2;\n }\n /** ---- leftView label 设置 ---- */\n var leftLabelCfg = __assign({}, cfg_1);\n if (isHorizontal(layout)) {\n // 设置 textAlign 默认值\n var textAlign = ((_a = leftLabelCfg.style) === null || _a === void 0 ? void 0 : _a.textAlign) || (cfg_1.position === 'middle' ? 'center' : 'left');\n cfg_1.style = deepAssign({}, cfg_1.style, {\n textAlign: textAlign\n });\n var textAlignMap = {\n left: 'right',\n right: 'left',\n center: 'center'\n };\n leftLabelCfg.style = deepAssign({}, leftLabelCfg.style, {\n textAlign: textAlignMap[textAlign]\n });\n } else {\n var positionMap_1 = {\n top: 'bottom',\n bottom: 'top',\n middle: 'middle'\n };\n if (typeof cfg_1.position === 'string') {\n cfg_1.position = positionMap_1[cfg_1.position];\n } else if (typeof cfg_1.position === 'function') {\n cfg_1.position = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return positionMap_1[cfg_1.position.apply(_this, args)];\n };\n }\n // 设置 textBaseline 默认值\n var textBaseline = ((_b = leftLabelCfg.style) === null || _b === void 0 ? void 0 : _b.textBaseline) || 'bottom';\n leftLabelCfg.style = deepAssign({}, leftLabelCfg.style, {\n textBaseline: textBaseline\n });\n var textBaselineMap = {\n top: 'bottom',\n bottom: 'top',\n middle: 'middle'\n };\n cfg_1.style = deepAssign({}, cfg_1.style, {\n textBaseline: textBaselineMap[textBaseline]\n });\n }\n leftGeometry.label({\n fields: [yField[0]],\n callback: callback,\n cfg: transformLabel(leftLabelCfg)\n });\n rightGeometry.label({\n fields: [yField[1]],\n callback: callback,\n cfg: transformLabel(cfg_1)\n });\n }\n return params;\n}\n/**\n * 对称条形图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n // flow 的方式处理所有的配置到 G2 API\n return flow(geometry, meta, axis, limitInPlot, theme, label, tooltip, interaction, animation)(params);\n}","import { __extends } from \"tslib\";\nimport { Event, VIEW_LIFE_CIRCLE } from '@antv/g2';\nimport { Plot } from '../../core/plot';\nimport { deepAssign, findViewById } from '../../utils';\nimport { adaptor } from './adaptor';\nimport { FIRST_AXES_VIEW, SECOND_AXES_VIEW, SERIES_FIELD_KEY } from './constant';\nimport { isHorizontal, syncViewPadding, transformData } from './utils';\nvar BidirectionalBar = /** @class */function (_super) {\n __extends(BidirectionalBar, _super);\n function BidirectionalBar() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'bidirectional-bar';\n return _this;\n }\n /**\n * 获取 默认配置项\n * 供外部使用\n */\n BidirectionalBar.getDefaultOptions = function () {\n return deepAssign({}, _super.getDefaultOptions.call(this), {\n syncViewPadding: syncViewPadding\n });\n };\n /**\n * @override\n */\n BidirectionalBar.prototype.changeData = function (data) {\n if (data === void 0) {\n data = [];\n }\n this.chart.emit(VIEW_LIFE_CIRCLE.BEFORE_CHANGE_DATA, Event.fromData(this.chart, VIEW_LIFE_CIRCLE.BEFORE_CHANGE_DATA, null));\n // 更新options\n this.updateOption({\n data: data\n });\n var _a = this.options,\n xField = _a.xField,\n yField = _a.yField,\n layout = _a.layout;\n // 处理数据\n var groupData = transformData(xField, yField, SERIES_FIELD_KEY, data, isHorizontal(layout));\n var firstViewData = groupData[0],\n secondViewData = groupData[1];\n var firstView = findViewById(this.chart, FIRST_AXES_VIEW);\n var secondView = findViewById(this.chart, SECOND_AXES_VIEW);\n // 更新对应view的data\n firstView.data(firstViewData);\n secondView.data(secondViewData);\n // 重新渲染\n this.chart.render(true);\n this.chart.emit(VIEW_LIFE_CIRCLE.AFTER_CHANGE_DATA, Event.fromData(this.chart, VIEW_LIFE_CIRCLE.AFTER_CHANGE_DATA, null));\n };\n BidirectionalBar.prototype.getDefaultOptions = function () {\n return BidirectionalBar.getDefaultOptions();\n };\n /**\n * 获取对称条形图的适配器\n */\n BidirectionalBar.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n /** 对称条形图分类字段 */\n BidirectionalBar.SERIES_FIELD_KEY = SERIES_FIELD_KEY;\n return BidirectionalBar;\n}(Plot);\nexport { BidirectionalBar };","var _a;\nimport { Plot } from '../../core/plot';\nimport { deepAssign } from '../../utils';\nexport var BOX_RANGE = '$$range$$';\nexport var BOX_RANGE_ALIAS = 'low-q1-median-q3-high';\nexport var BOX_SYNC_NAME = '$$y_outliers$$';\nexport var OUTLIERS_VIEW_ID = 'outliers_view';\n/**\n * 面积图默认配置项\n */\nexport var DEFAULT_OPTIONS = deepAssign({}, Plot.getDefaultOptions(), {\n meta: (_a = {}, _a[BOX_RANGE] = {\n min: 0,\n alias: BOX_RANGE_ALIAS\n }, _a),\n // 默认区域交互\n interactions: [{\n type: 'active-region'\n }],\n // 默认 tooltips 共享,不显示 markers\n tooltip: {\n showMarkers: false,\n shared: true\n },\n boxStyle: {\n lineWidth: 1\n }\n});","import { map } from '@antv/util';\nimport { BOX_RANGE } from './constant';\n/**\n * @desc 将数据转换为 box 需要的的图表数据,如果yField为数组,从data中解构出对应数组值并写入data,否则直接返回data\n * @param data\n * @param yField\n */\nexport var transformData = function transformData(data, yField) {\n var newData = data;\n // formate data when `yField` is Array\n if (Array.isArray(yField)) {\n var low_1 = yField[0],\n q1_1 = yField[1],\n median_1 = yField[2],\n q3_1 = yField[3],\n high_1 = yField[4];\n newData = map(data, function (obj) {\n obj[BOX_RANGE] = [obj[low_1], obj[q1_1], obj[median_1], obj[q3_1], obj[high_1]];\n return obj;\n });\n }\n return newData;\n};","import { __assign } from \"tslib\";\nimport { isArray } from '@antv/util';\nimport { animation, annotation, interaction, theme, tooltip } from '../../adaptor/common';\nimport { point, schema } from '../../adaptor/geometries';\nimport { AXIS_META_CONFIG_KEYS } from '../../constant';\nimport { deepAssign, flow, pick } from '../../utils';\nimport { BOX_RANGE, BOX_SYNC_NAME, OUTLIERS_VIEW_ID } from './constant';\nimport { transformData } from './utils';\n/**\n * 字段\n * @param params\n */\nfunction field(params) {\n var chart = params.chart,\n options = params.options;\n var xField = options.xField,\n yField = options.yField,\n groupField = options.groupField,\n color = options.color,\n tooltip = options.tooltip,\n boxStyle = options.boxStyle;\n chart.data(transformData(options.data, yField));\n var yFieldName = isArray(yField) ? BOX_RANGE : yField;\n var rawFields = yField ? isArray(yField) ? yField : [yField] : [];\n var tooltipOptions = tooltip;\n if (tooltipOptions !== false) {\n tooltipOptions = deepAssign({}, {\n fields: isArray(yField) ? yField : []\n }, tooltipOptions);\n }\n var ext = schema(deepAssign({}, params, {\n options: {\n xField: xField,\n yField: yFieldName,\n seriesField: groupField,\n tooltip: tooltipOptions,\n rawFields: rawFields,\n // 只有异常点视图展示 label\n label: false,\n schema: {\n shape: 'box',\n color: color,\n style: boxStyle\n }\n }\n })).ext;\n if (groupField) {\n ext.geometry.adjust('dodge');\n }\n return params;\n}\n/**\n * 创建异常点 view\n */\nfunction outliersPoint(params) {\n var chart = params.chart,\n options = params.options;\n var xField = options.xField,\n data = options.data,\n outliersField = options.outliersField,\n outliersStyle = options.outliersStyle,\n padding = options.padding,\n label = options.label;\n if (!outliersField) return params;\n var outliersView = chart.createView({\n padding: padding,\n id: OUTLIERS_VIEW_ID\n });\n var outliersViewData = data.reduce(function (ret, datum) {\n var outliersData = datum[outliersField];\n outliersData.forEach(function (d) {\n var _a;\n return ret.push(__assign(__assign({}, datum), (_a = {}, _a[outliersField] = d, _a)));\n });\n return ret;\n }, []);\n outliersView.data(outliersViewData);\n point({\n chart: outliersView,\n options: {\n xField: xField,\n yField: outliersField,\n point: {\n shape: 'circle',\n style: outliersStyle\n },\n label: label\n }\n });\n outliersView.axis(false);\n return params;\n}\n/**\n * meta 配置\n * @param params\n */\nfunction meta(params) {\n var _a, _b;\n var chart = params.chart,\n options = params.options;\n var meta = options.meta,\n xAxis = options.xAxis,\n yAxis = options.yAxis,\n xField = options.xField,\n yField = options.yField,\n outliersField = options.outliersField;\n var yFieldName = Array.isArray(yField) ? BOX_RANGE : yField;\n var baseMeta = {};\n // make yField and outliersField share y mate\n if (outliersField) {\n var syncName = BOX_SYNC_NAME;\n baseMeta = (_a = {}, _a[outliersField] = {\n sync: syncName,\n nice: true\n }, _a[yFieldName] = {\n sync: syncName,\n nice: true\n }, _a);\n }\n var scales = deepAssign(baseMeta, meta, (_b = {}, _b[xField] = pick(xAxis, AXIS_META_CONFIG_KEYS), _b[yFieldName] = pick(yAxis, AXIS_META_CONFIG_KEYS), _b));\n chart.scale(scales);\n return params;\n}\n/**\n * axis 配置\n * @param params\n */\nfunction axis(params) {\n var chart = params.chart,\n options = params.options;\n var xAxis = options.xAxis,\n yAxis = options.yAxis,\n xField = options.xField,\n yField = options.yField;\n var yFieldName = Array.isArray(yField) ? BOX_RANGE : yField;\n // 为 false 则是不显示轴\n if (xAxis === false) {\n chart.axis(xField, false);\n } else {\n chart.axis(xField, xAxis);\n }\n if (yAxis === false) {\n chart.axis(BOX_RANGE, false);\n } else {\n chart.axis(yFieldName, yAxis);\n }\n return params;\n}\n/**\n * legend 配置\n * @param params\n */\nexport function legend(params) {\n var chart = params.chart,\n options = params.options;\n var legend = options.legend,\n groupField = options.groupField;\n if (groupField) {\n if (legend) {\n chart.legend(groupField, legend);\n } else {\n // Grouped Box Chart default has legend, and it's position is `bottom`\n chart.legend(groupField, {\n position: 'bottom'\n });\n }\n } else {\n chart.legend(false);\n }\n return params;\n}\n/**\n * 箱型图适配器\n * @param params\n */\nexport function adaptor(params) {\n return flow(field, outliersPoint, meta, axis, legend, tooltip, annotation(), interaction, animation, theme)(params);\n}","import { __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { adaptor } from './adaptor';\nimport { DEFAULT_OPTIONS, OUTLIERS_VIEW_ID } from './constant';\nimport { transformData } from './utils';\nvar Box = /** @class */function (_super) {\n __extends(Box, _super);\n function Box() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'box';\n return _this;\n }\n /**\n * 获取 默认配置项\n * 供外部使用\n */\n Box.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * @override\n * @param data\n */\n Box.prototype.changeData = function (data) {\n this.updateOption({\n data: data\n });\n var yField = this.options.yField;\n var outliersView = this.chart.views.find(function (v) {\n return v.id === OUTLIERS_VIEW_ID;\n });\n if (outliersView) {\n outliersView.data(data);\n }\n this.chart.changeData(transformData(data, yField));\n };\n /**\n * 获取 箱型图 默认配置项\n */\n Box.prototype.getDefaultOptions = function () {\n return Box.getDefaultOptions();\n };\n /**\n * 获取 箱型图 的适配器\n */\n Box.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Box;\n}(Plot);\nexport { Box };","import \"core-js/modules/es.array.flat.js\";\nimport \"core-js/modules/es.array.unscopables.flat.js\";\n/**\n * 获取分类字段 key 值 一个分类值的时候, 返回非索引 key 值,在 tooltip 不做索引区分\n * @param values 数据量\n * @param field 指标字段\n * @param index 索引\n * @returns string\n */\nfunction getSeriesFieldKey(values, field, index) {\n return values.length > 1 ? \"\".concat(field, \"_\").concat(index) : \"\".concat(field);\n}\n/**\n * bullet 处理数据\n * @param options\n */\nexport function transformData(options) {\n var data = options.data,\n xField = options.xField,\n measureField = options.measureField,\n rangeField = options.rangeField,\n targetField = options.targetField,\n layout = options.layout;\n var ds = [];\n var scales = [];\n data.forEach(function (item, index) {\n // 构建 title * range\n var rangeValues = [item[rangeField]].flat();\n rangeValues.sort(function (a, b) {\n return a - b;\n });\n rangeValues.forEach(function (d, i) {\n var _a;\n var range = i === 0 ? d : rangeValues[i] - rangeValues[i - 1];\n ds.push((_a = {\n rKey: \"\".concat(rangeField, \"_\").concat(i)\n }, _a[xField] = xField ? item[xField] : String(index), _a[rangeField] = range, _a));\n });\n // 构建 title * measure\n var measureValues = [item[measureField]].flat();\n measureValues.forEach(function (d, i) {\n var _a;\n ds.push((_a = {\n mKey: getSeriesFieldKey(measureValues, measureField, i)\n }, _a[xField] = xField ? item[xField] : String(index), _a[measureField] = d, _a));\n });\n // 构建 title * target\n var targetValues = [item[targetField]].flat();\n targetValues.forEach(function (d, i) {\n var _a;\n ds.push((_a = {\n tKey: getSeriesFieldKey(targetValues, targetField, i)\n }, _a[xField] = xField ? item[xField] : String(index), _a[targetField] = d, _a));\n });\n // 为了取最大值和最小值,先存储\n scales.push(item[rangeField], item[measureField], item[targetField]);\n });\n // scales 是嵌套的需要拍平\n var min = Math.min.apply(Math, scales.flat(Infinity));\n var max = Math.max.apply(Math, scales.flat(Infinity));\n // min 大于 0 从 0 开始\n min = min > 0 ? 0 : min;\n // 垂直情况,需要反转数据\n if (layout === 'vertical') {\n ds.reverse();\n }\n return {\n min: min,\n max: max,\n ds: ds\n };\n}","import { __assign } from \"tslib\";\nimport { get, isFunction } from '@antv/util';\nimport { animation, interaction, scale, theme, tooltip } from '../../adaptor/common';\nimport { interval, point } from '../../adaptor/geometries';\nimport { deepAssign, flow, transformLabel } from '../../utils';\nimport { transformData } from './utils';\n/**\n * geometry 处理\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var bulletStyle = options.bulletStyle,\n targetField = options.targetField,\n rangeField = options.rangeField,\n measureField = options.measureField,\n xField = options.xField,\n color = options.color,\n layout = options.layout,\n size = options.size,\n label = options.label;\n // 处理数据\n var _a = transformData(options),\n min = _a.min,\n max = _a.max,\n ds = _a.ds;\n chart.data(ds);\n // rangeGeometry\n var r = deepAssign({}, params, {\n options: {\n xField: xField,\n yField: rangeField,\n seriesField: 'rKey',\n isStack: true,\n label: get(label, 'range'),\n interval: {\n color: get(color, 'range'),\n style: get(bulletStyle, 'range'),\n size: get(size, 'range')\n }\n }\n });\n interval(r);\n // 范围值的 tooltip 隐藏掉\n chart.geometries[0].tooltip(false);\n // measureGeometry\n var m = deepAssign({}, params, {\n options: {\n xField: xField,\n yField: measureField,\n seriesField: 'mKey',\n isStack: true,\n label: get(label, 'measure'),\n interval: {\n color: get(color, 'measure'),\n style: get(bulletStyle, 'measure'),\n size: get(size, 'measure')\n }\n }\n });\n interval(m);\n // targetGeometry\n var t = deepAssign({}, params, {\n options: {\n xField: xField,\n yField: targetField,\n seriesField: 'tKey',\n label: get(label, 'target'),\n point: {\n color: get(color, 'target'),\n style: get(bulletStyle, 'target'),\n size: isFunction(get(size, 'target')) ? function (data) {\n return get(size, 'target')(data) / 2;\n } : get(size, 'target') / 2,\n shape: layout === 'horizontal' ? 'line' : 'hyphen'\n }\n }\n });\n point(t);\n // 水平的时候,要转换坐标轴\n if (layout === 'horizontal') {\n chart.coordinate().transpose();\n }\n return __assign(__assign({}, params), {\n ext: {\n data: {\n min: min,\n max: max\n }\n }\n });\n}\n/**\n * meta 配置\n * @param params\n */\nexport function meta(params) {\n var _a, _b;\n var options = params.options,\n ext = params.ext;\n var xAxis = options.xAxis,\n yAxis = options.yAxis,\n targetField = options.targetField,\n rangeField = options.rangeField,\n measureField = options.measureField,\n xField = options.xField;\n var extData = ext.data;\n return flow(scale((_a = {}, _a[xField] = xAxis, _a[measureField] = yAxis, _a), (_b = {}, _b[measureField] = {\n min: extData === null || extData === void 0 ? void 0 : extData.min,\n max: extData === null || extData === void 0 ? void 0 : extData.max,\n sync: true\n }, _b[targetField] = {\n sync: \"\".concat(measureField)\n }, _b[rangeField] = {\n sync: \"\".concat(measureField)\n }, _b)))(params);\n}\n/**\n * axis 配置\n * @param params\n */\nfunction axis(params) {\n var chart = params.chart,\n options = params.options;\n var xAxis = options.xAxis,\n yAxis = options.yAxis,\n xField = options.xField,\n measureField = options.measureField,\n rangeField = options.rangeField,\n targetField = options.targetField;\n chart.axis(\"\".concat(rangeField), false);\n chart.axis(\"\".concat(targetField), false);\n // 为 false 则是不显示轴\n if (xAxis === false) {\n chart.axis(\"\".concat(xField), false);\n } else {\n chart.axis(\"\".concat(xField), xAxis);\n }\n if (yAxis === false) {\n chart.axis(\"\".concat(measureField), false);\n } else {\n chart.axis(\"\".concat(measureField), yAxis);\n }\n return params;\n}\n/**\n * legend 配置\n * @param params\n */\nfunction legend(params) {\n var chart = params.chart,\n options = params.options;\n var legend = options.legend;\n chart.removeInteraction('legend-filter');\n // @TODO 后续看是否内部自定义一个 legend\n chart.legend(legend);\n // 默认关闭掉所在 color 字段的 legend, 从而不影响自定义的legend\n chart.legend('rKey', false);\n chart.legend('mKey', false);\n chart.legend('tKey', false);\n return params;\n}\n/**\n * label 配置\n * @param params\n */\nfunction label(params) {\n var chart = params.chart,\n options = params.options;\n var label = options.label,\n measureField = options.measureField,\n targetField = options.targetField,\n rangeField = options.rangeField;\n var _a = chart.geometries,\n rangeGeometry = _a[0],\n measureGeometry = _a[1],\n targetGeometry = _a[2];\n if (get(label, 'range')) {\n rangeGeometry.label(\"\".concat(rangeField), __assign({\n layout: [{\n type: 'limit-in-plot'\n }]\n }, transformLabel(label.range)));\n } else {\n rangeGeometry.label(false);\n }\n if (get(label, 'measure')) {\n measureGeometry.label(\"\".concat(measureField), __assign({\n layout: [{\n type: 'limit-in-plot'\n }]\n }, transformLabel(label.measure)));\n } else {\n measureGeometry.label(false);\n }\n if (get(label, 'target')) {\n targetGeometry.label(\"\".concat(targetField), __assign({\n layout: [{\n type: 'limit-in-plot'\n }]\n }, transformLabel(label.target)));\n } else {\n targetGeometry.label(false);\n }\n return params;\n}\n/**\n * 子弹图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n // flow 的方式处理所有的配置到 G2 API\n flow(geometry, meta, axis, legend, theme, label, tooltip, interaction, animation)(params);\n}","import { Plot } from '../../core/plot';\nimport { deepAssign } from '../../utils';\n/**\n * 默认配置项\n */\nexport var DEFAULT_OPTIONS = deepAssign({}, Plot.getDefaultOptions(), {\n layout: 'horizontal',\n size: {\n range: 30,\n measure: 20,\n target: 20\n },\n xAxis: {\n tickLine: false,\n line: null\n },\n bulletStyle: {\n range: {\n fillOpacity: 0.5\n }\n },\n label: {\n measure: {\n position: 'right'\n }\n },\n tooltip: {\n // 默认关闭\n showMarkers: false\n }\n});","/*\n * for Arc Diagram (edges without weight) / Chord Diagram (edges with source and target weight)\n * graph data required (nodes, edges)\n */\nimport { assign, forIn, isFunction } from '@antv/util';\nvar DEFAULT_OPTIONS = {\n y: 0,\n nodeWidthRatio: 0.05,\n weight: false,\n nodePaddingRatio: 0.1,\n id: function id(node) {\n return node.id;\n },\n source: function source(edge) {\n return edge.source;\n },\n target: function target(edge) {\n return edge.target;\n },\n sourceWeight: function sourceWeight(edge) {\n return edge.value || 1;\n },\n targetWeight: function targetWeight(edge) {\n return edge.value || 1;\n },\n sortBy: null // optional, id | weight | frequency | {function}\n};\n/**\n * 处理节点的value、edges\n * @param nodeById\n * @param edges\n * @param options\n */\nfunction processGraph(nodeById, edges, options) {\n forIn(nodeById, function (node, id) {\n // in edges, out edges\n node.inEdges = edges.filter(function (edge) {\n return \"\".concat(options.target(edge)) === \"\".concat(id);\n });\n node.outEdges = edges.filter(function (edge) {\n return \"\".concat(options.source(edge)) === \"\".concat(id);\n });\n // frequency\n node.edges = node.outEdges.concat(node.inEdges);\n node.frequency = node.edges.length;\n // weight\n node.value = 0;\n node.inEdges.forEach(function (edge) {\n node.value += options.targetWeight(edge);\n });\n node.outEdges.forEach(function (edge) {\n node.value += options.sourceWeight(edge);\n });\n });\n}\n/**\n * 节点排序\n * @param nodes\n * @param options\n */\nfunction sortNodes(nodes, options) {\n var sortMethods = {\n weight: function weight(a, b) {\n return b.value - a.value;\n },\n frequency: function frequency(a, b) {\n return b.frequency - a.frequency;\n },\n id: function id(a, b) {\n return \"\".concat(options.id(a)).localeCompare(\"\".concat(options.id(b)));\n }\n };\n var method = sortMethods[options.sortBy];\n if (!method && isFunction(options.sortBy)) {\n method = options.sortBy;\n }\n if (method) {\n nodes.sort(method);\n }\n}\nfunction layoutNodes(nodes, options) {\n var len = nodes.length;\n if (!len) {\n throw new TypeError(\"Invalid nodes: it's empty!\");\n }\n if (options.weight) {\n var nodePaddingRatio_1 = options.nodePaddingRatio;\n if (nodePaddingRatio_1 < 0 || nodePaddingRatio_1 >= 1) {\n throw new TypeError('Invalid nodePaddingRatio: it must be in range [0, 1)!');\n }\n var margin_1 = nodePaddingRatio_1 / (2 * len);\n var nodeWidthRatio_1 = options.nodeWidthRatio;\n if (nodeWidthRatio_1 <= 0 || nodeWidthRatio_1 >= 1) {\n throw new TypeError('Invalid nodeWidthRatio: it must be in range (0, 1)!');\n }\n var totalValue_1 = 0;\n nodes.forEach(function (node) {\n totalValue_1 += node.value;\n });\n nodes.forEach(function (node) {\n node.weight = node.value / totalValue_1;\n node.width = node.weight * (1 - nodePaddingRatio_1);\n node.height = nodeWidthRatio_1;\n });\n nodes.forEach(function (node, index) {\n // x\n var deltaX = 0;\n for (var i = index - 1; i >= 0; i--) {\n deltaX += nodes[i].width + 2 * margin_1;\n }\n var minX = node.minX = margin_1 + deltaX;\n var maxX = node.maxX = node.minX + node.width;\n var minY = node.minY = options.y - nodeWidthRatio_1 / 2;\n var maxY = node.maxY = minY + nodeWidthRatio_1;\n node.x = [minX, maxX, maxX, minX];\n node.y = [minY, minY, maxY, maxY];\n /* points\n * 3---2\n * | |\n * 0---1\n */\n // node.x = minX + 0.5 * node.width;\n // node.y = options.y;\n });\n } else {\n var deltaX_1 = 1 / len;\n nodes.forEach(function (node, index) {\n node.x = (index + 0.5) * deltaX_1;\n node.y = options.y;\n });\n }\n return nodes;\n}\nfunction locatingEdges(nodeById, edges, options) {\n if (options.weight) {\n var valueById_1 = {};\n forIn(nodeById, function (node, id) {\n valueById_1[id] = node.value;\n });\n edges.forEach(function (edge) {\n var sId = options.source(edge);\n var tId = options.target(edge);\n var sNode = nodeById[sId];\n var tNode = nodeById[tId];\n if (sNode && tNode) {\n var sValue = valueById_1[sId];\n var currentSValue = options.sourceWeight(edge);\n var sStart = sNode.minX + (sNode.value - sValue) / sNode.value * sNode.width;\n var sEnd = sStart + currentSValue / sNode.value * sNode.width;\n valueById_1[sId] -= currentSValue;\n var tValue = valueById_1[tId];\n var currentTValue = options.targetWeight(edge);\n var tStart = tNode.minX + (tNode.value - tValue) / tNode.value * tNode.width;\n var tEnd = tStart + currentTValue / tNode.value * tNode.width;\n valueById_1[tId] -= currentTValue;\n var y = options.y;\n edge.x = [sStart, sEnd, tStart, tEnd];\n edge.y = [y, y, y, y];\n // 将edge的source与target的id换为 sourceNode与targetNode\n edge.source = sNode;\n edge.target = tNode;\n }\n });\n } else {\n edges.forEach(function (edge) {\n var sNode = nodeById[options.source(edge)];\n var tNode = nodeById[options.target(edge)];\n if (sNode && tNode) {\n edge.x = [sNode.x, tNode.x];\n edge.y = [sNode.y, tNode.y];\n // 将edge的source与target的id换为 sourceNode与targetNode\n edge.source = sNode;\n edge.target = tNode;\n }\n });\n }\n return edges;\n}\nexport function getDefaultOptions(options) {\n return assign({}, DEFAULT_OPTIONS, options);\n}\nexport function chordLayout(chordLayoutOptions, chordLayoutInputData) {\n var options = getDefaultOptions(chordLayoutOptions);\n var nodeById = {};\n var nodes = chordLayoutInputData.nodes;\n var links = chordLayoutInputData.links;\n nodes.forEach(function (node) {\n var id = options.id(node);\n nodeById[id] = node;\n });\n processGraph(nodeById, links, options);\n sortNodes(nodes, options);\n var outputNodes = layoutNodes(nodes, options);\n var outputLinks = locatingEdges(nodeById, links, options);\n return {\n nodes: outputNodes,\n links: outputLinks\n };\n}","import { __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { adaptor, meta } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constant';\nimport { transformData } from './utils';\nvar Bullet = /** @class */function (_super) {\n __extends(Bullet, _super);\n function Bullet() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'bullet';\n return _this;\n }\n /**\n * 获取 子弹图 默认配置项\n * 供外部使用\n */\n Bullet.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n Bullet.prototype.changeData = function (data) {\n this.updateOption({\n data: data\n });\n var _a = transformData(this.options),\n min = _a.min,\n max = _a.max,\n ds = _a.ds;\n // 处理scale\n meta({\n options: this.options,\n ext: {\n data: {\n min: min,\n max: max\n }\n },\n chart: this.chart\n });\n this.chart.changeData(ds);\n };\n /**\n * 获取子弹图的适配器\n */\n Bullet.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n /**\n * 获取 子弹图 默认配置\n */\n Bullet.prototype.getDefaultOptions = function () {\n return Bullet.getDefaultOptions();\n };\n return Bullet;\n}(Plot);\nexport { Bullet };","import { get } from '@antv/util';\nexport var X_FIELD = 'x';\nexport var Y_FIELD = 'y';\nexport var NODE_COLOR_FIELD = 'name';\nexport var EDGE_COLOR_FIELD = 'source';\nexport var DEFAULT_OPTIONS = {\n nodeStyle: {\n opacity: 1,\n fillOpacity: 1,\n lineWidth: 1\n },\n edgeStyle: {\n opacity: 0.5,\n lineWidth: 2\n },\n label: {\n fields: ['x', 'name'],\n callback: function callback(x, name) {\n var centerX = (x[0] + x[1]) / 2;\n var offsetX = centerX > 0.5 ? -4 : 4;\n return {\n offsetX: offsetX,\n content: name\n };\n },\n labelEmit: true,\n style: {\n fill: '#8c8c8c'\n }\n },\n tooltip: {\n showTitle: false,\n showMarkers: false,\n fields: ['source', 'target', 'value', 'isNode'],\n // 内置:node 不显示 tooltip (业务层自行处理),edge 显示 tooltip\n showContent: function showContent(items) {\n return !get(items, [0, 'data', 'isNode']);\n },\n formatter: function formatter(datum) {\n var source = datum.source,\n target = datum.target,\n value = datum.value;\n return {\n name: \"\".concat(source, \" -> \").concat(target),\n value: value\n };\n }\n },\n interactions: [{\n type: 'element-active'\n }],\n weight: true,\n nodePaddingRatio: 0.1,\n nodeWidthRatio: 0.05\n};","import { __assign, __spreadArray } from \"tslib\";\nimport { interaction, state, theme } from '../../adaptor/common';\nimport { edge, polygon } from '../../adaptor/geometries';\nimport { addViewAnimation, flow, getAllGeometriesRecursively, pick, transformDataToNodeLinkData } from '../../utils';\nimport { chordLayout } from '../../utils/transform/chord';\nimport { EDGE_COLOR_FIELD, NODE_COLOR_FIELD, X_FIELD, Y_FIELD } from './constant';\nfunction transformData(params) {\n // 将弦图数据放到ext中,nodeGeometry edgeGeometry使用\n var options = params.options;\n var data = options.data,\n sourceField = options.sourceField,\n targetField = options.targetField,\n weightField = options.weightField,\n nodePaddingRatio = options.nodePaddingRatio,\n nodeWidthRatio = options.nodeWidthRatio,\n _a = options.rawFields,\n rawFields = _a === void 0 ? [] : _a;\n // 将数据转换为node link格式\n var chordLayoutInputData = transformDataToNodeLinkData(data, sourceField, targetField, weightField);\n var _b = chordLayout({\n weight: true,\n nodePaddingRatio: nodePaddingRatio,\n nodeWidthRatio: nodeWidthRatio\n }, chordLayoutInputData),\n nodes = _b.nodes,\n links = _b.links;\n // 1. 生成绘制node使用数据\n var nodesData = nodes.map(function (node) {\n return __assign(__assign({}, pick(node, __spreadArray(['id', 'x', 'y', 'name'], rawFields, true))), {\n isNode: true\n });\n });\n // 2. 生成 edge 使用数据 (同桑基图)\n var edgesData = links.map(function (link) {\n return __assign(__assign({\n source: link.source.name,\n target: link.target.name,\n name: link.source.name || link.target.name\n }, pick(link, __spreadArray(['x', 'y', 'value'], rawFields, true))), {\n isNode: false\n });\n });\n return __assign(__assign({}, params), {\n ext: __assign(__assign({}, params.ext), {\n // 将chordData放到ext中,方便下面的geometry使用\n chordData: {\n nodesData: nodesData,\n edgesData: edgesData\n }\n })\n });\n}\n/**\n * scale配置\n * @param params 参数\n */\nfunction scale(params) {\n var _a;\n var chart = params.chart;\n chart.scale((_a = {\n x: {\n sync: true,\n nice: true\n },\n y: {\n sync: true,\n nice: true,\n max: 1\n }\n }, _a[NODE_COLOR_FIELD] = {\n sync: 'color'\n }, _a[EDGE_COLOR_FIELD] = {\n sync: 'color'\n }, _a));\n return params;\n}\n/**\n * axis配置\n * @param params 参数\n */\nfunction axis(params) {\n var chart = params.chart;\n chart.axis(false);\n return params;\n}\n/**\n * legend配置\n * @param params 参数\n */\nfunction legend(params) {\n var chart = params.chart;\n chart.legend(false);\n return params;\n}\n/**\n * tooltip配置\n * @param params 参数\n */\nfunction tooltip(params) {\n var chart = params.chart,\n options = params.options;\n var tooltip = options.tooltip;\n chart.tooltip(tooltip);\n return params;\n}\n/**\n * coordinate配置\n * @param params 参数\n */\nfunction coordinate(params) {\n var chart = params.chart;\n chart.coordinate('polar').reflect('y');\n return params;\n}\n/**\n * nodeGeometry配置\n * @param params 参数\n */\nfunction nodeGeometry(params) {\n // node view\n var chart = params.chart,\n options = params.options;\n var nodesData = params.ext.chordData.nodesData;\n var nodeStyle = options.nodeStyle,\n label = options.label,\n tooltip = options.tooltip;\n var nodeView = chart.createView();\n nodeView.data(nodesData);\n // 面\n polygon({\n chart: nodeView,\n options: {\n xField: X_FIELD,\n yField: Y_FIELD,\n seriesField: NODE_COLOR_FIELD,\n polygon: {\n style: nodeStyle\n },\n label: label,\n tooltip: tooltip\n }\n });\n return params;\n}\n/**\n * edgeGeometry配置\n * @param params 参数\n */\nfunction edgeGeometry(params) {\n var chart = params.chart,\n options = params.options;\n var edgesData = params.ext.chordData.edgesData;\n var edgeStyle = options.edgeStyle,\n tooltip = options.tooltip;\n var edgeView = chart.createView();\n edgeView.data(edgesData);\n // edge\n var edgeOptions = {\n xField: X_FIELD,\n yField: Y_FIELD,\n seriesField: EDGE_COLOR_FIELD,\n edge: {\n style: edgeStyle,\n shape: 'arc'\n },\n tooltip: tooltip\n };\n edge({\n chart: edgeView,\n options: edgeOptions\n });\n return params;\n}\nfunction animation(params) {\n var chart = params.chart,\n options = params.options;\n var animation = options.animation;\n addViewAnimation(chart, animation, getAllGeometriesRecursively(chart));\n return params;\n}\n/**\n * 弦图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n // flow 的方式处理所有的配置到 G2 API\n return flow(theme, transformData, coordinate, scale, axis, legend, tooltip, edgeGeometry, nodeGeometry, interaction, state, animation)(params);\n}","import { __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { adaptor } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constant';\n/**\n * 弦图 Chord\n */\nvar Chord = /** @class */function (_super) {\n __extends(Chord, _super);\n function Chord() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'chord';\n return _this;\n }\n /**\n * 获取 面积图 默认配置项\n * 供外部使用\n */\n Chord.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n Chord.prototype.getDefaultOptions = function () {\n return Chord.getDefaultOptions();\n };\n /**\n * 获取适配器\n */\n Chord.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Chord;\n}(Plot);\nexport { Chord };","/** 默认的源字段 */\nexport var RAW_FIELDS = ['x', 'y', 'r', 'name', 'value', 'path', 'depth'];\nexport var DEFAULT_OPTIONS = {\n // 默认按照 name 字段对颜色进行分类\n colorField: 'name',\n autoFit: true,\n pointStyle: {\n lineWidth: 0,\n stroke: '#fff'\n },\n // 默认不开启图例\n legend: false,\n hierarchyConfig: {\n size: [1, 1],\n padding: 0\n },\n label: {\n fields: ['name'],\n layout: {\n type: 'limit-in-shape'\n }\n },\n tooltip: {\n showMarkers: false,\n showTitle: false\n },\n // 默认不可以下钻\n drilldown: {\n enabled: false\n }\n};","import { __assign, __extends } from \"tslib\";\nimport { Action, Util } from '@antv/g2';\nimport { get, isNil, last, size } from '@antv/util';\nimport { deepAssign } from '../../utils/deep-assign';\n// 面包屑文字和分割符'/'之间的距离\nvar PADDING = 4;\n// 面包屑位置距离树图的距离\nvar PADDING_LEFT = 0;\n// 面包屑位置距离树图的顶部距离\nexport var PADDING_TOP = 5;\n/** Group name of breadCrumb: 面包屑 */\nexport var BREAD_CRUMB_NAME = 'drilldown-bread-crumb';\n// 面包屑默认配置\nexport var DEFAULT_BREAD_CRUMB_CONFIG = {\n /** 位置,默认:左上角 */\n position: 'top-left',\n dividerText: '/',\n textStyle: {\n fontSize: 12,\n fill: 'rgba(0, 0, 0, 0.65)',\n cursor: 'pointer'\n },\n activeTextStyle: {\n fill: '#87B5FF'\n }\n};\n/**\n * hierarchy 数据转换的参数\n */\nexport var HIERARCHY_DATA_TRANSFORM_PARAMS = 'hierarchy-data-transform-params';\n/**\n * @description 下钻交互的 action\n * @author liuzhenying\n *\n * 适用于:hierarchy plot\n */\nvar DrillDownAction = /** @class */function (_super) {\n __extends(DrillDownAction, _super);\n function DrillDownAction() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** Action name */\n _this.name = 'drill-down';\n // 存储历史下钻数据\n _this.historyCache = [];\n // 面包屑 group\n _this.breadCrumbGroup = null;\n // 面包屑基础配置\n _this.breadCrumbCfg = DEFAULT_BREAD_CRUMB_CONFIG;\n return _this;\n }\n /**\n * 点击事件, 下钻数据,并绘制面包屑\n */\n DrillDownAction.prototype.click = function () {\n var data = get(this.context, ['event', 'data', 'data']);\n if (!data) return false;\n this.drill(data);\n this.drawBreadCrumb();\n };\n /**\n * 重置位置,初始化及触发 chart afterchangesize 回调时使用\n */\n DrillDownAction.prototype.resetPosition = function () {\n // 当在第一层级未绘制面包屑,此时 changedata 触发 resetPosition 函数,需判断 this.breadCrumbGroup 是否存在\n if (!this.breadCrumbGroup) return;\n var coordinate = this.context.view.getCoordinate();\n var breadCrumbGroup = this.breadCrumbGroup;\n var bbox = breadCrumbGroup.getBBox();\n var position = this.getButtonCfg().position;\n // @todo 后续抽取一个函数来处理,以及增加 margin 或者 padding 的设置\n // 非 polar 的,需要使用 coordinate,除却图表组件\n var point = {\n x: coordinate.start.x,\n y: coordinate.end.y - (bbox.height + PADDING_TOP * 2)\n };\n if (coordinate.isPolar) {\n // 默认,左上角直接出发\n point = {\n x: 0,\n y: 0\n };\n }\n if (position === 'bottom-left') {\n // 涉及到坐标反转的问题\n point = {\n x: coordinate.start.x,\n y: coordinate.start.y\n };\n }\n /** PADDING_LEFT, PADDING_TOP 与画布边缘的距离 */\n var matrix = Util.transform(null, [['t', point.x + PADDING_LEFT, point.y + bbox.height + PADDING_TOP]]);\n breadCrumbGroup.setMatrix(matrix);\n };\n /**\n * 返回上一层\n */\n DrillDownAction.prototype.back = function () {\n if (size(this.historyCache)) {\n this.backTo(this.historyCache.slice(0, -1));\n }\n };\n /**\n * 重置\n */\n DrillDownAction.prototype.reset = function () {\n if (this.historyCache[0]) {\n this.backTo(this.historyCache.slice(0, 1));\n }\n // 清空\n this.historyCache = [];\n this.hideCrumbGroup();\n };\n /**\n * 下钻数据并更新 view 显示层\n * @param nodeInfo 下钻数据\n */\n DrillDownAction.prototype.drill = function (nodeInfo) {\n var view = this.context.view;\n var transformData = get(view, ['interactions', 'drill-down', 'cfg', 'transformData'], function (v) {\n return v;\n });\n // 重新 update 数据\n var drillData = transformData(__assign({\n data: nodeInfo.data\n }, nodeInfo[HIERARCHY_DATA_TRANSFORM_PARAMS]));\n view.changeData(drillData);\n // 存储历史记录\n var historyCache = [];\n var node = nodeInfo;\n while (node) {\n var nodeData = node.data;\n historyCache.unshift({\n id: \"\".concat(nodeData.name, \"_\").concat(node.height, \"_\").concat(node.depth),\n name: nodeData.name,\n // children 是实际数据\n children: transformData(__assign({\n data: nodeData\n }, nodeInfo[HIERARCHY_DATA_TRANSFORM_PARAMS]))\n });\n node = node.parent;\n }\n this.historyCache = (this.historyCache || []).slice(0, -1).concat(historyCache);\n };\n /**\n * 回退事件,点击面包屑时触发\n * @param historyCache 当前要回退到的历史\n */\n DrillDownAction.prototype.backTo = function (historyCache) {\n if (!historyCache || historyCache.length <= 0) {\n return;\n }\n var view = this.context.view;\n var data = last(historyCache).children; // 处理后的数组\n view.changeData(data);\n if (historyCache.length > 1) {\n this.historyCache = historyCache;\n this.drawBreadCrumb();\n } else {\n // 清空\n this.historyCache = [];\n this.hideCrumbGroup();\n }\n };\n /**\n * 获取 mix 默认的配置和用户配置\n */\n DrillDownAction.prototype.getButtonCfg = function () {\n var view = this.context.view;\n var drillDownConfig = get(view, ['interactions', 'drill-down', 'cfg', 'drillDownConfig']);\n return deepAssign(this.breadCrumbCfg, drillDownConfig === null || drillDownConfig === void 0 ? void 0 : drillDownConfig.breadCrumb, this.cfg);\n };\n /**\n * 显示面包屑\n */\n DrillDownAction.prototype.drawBreadCrumb = function () {\n this.drawBreadCrumbGroup();\n this.resetPosition();\n this.breadCrumbGroup.show();\n };\n /**\n * 绘制 Button 和 文本\n */\n DrillDownAction.prototype.drawBreadCrumbGroup = function () {\n var _this = this;\n var config = this.getButtonCfg();\n var cache = this.historyCache;\n // 初始化面包屑 group\n if (!this.breadCrumbGroup) {\n this.breadCrumbGroup = this.context.view.foregroundGroup.addGroup({\n name: BREAD_CRUMB_NAME\n });\n } else {\n this.breadCrumbGroup.clear();\n }\n // 绘制面包屑\n var left = 0;\n cache.forEach(function (record, index) {\n // 添加文本\n var textShape = _this.breadCrumbGroup.addShape({\n type: 'text',\n id: record.id,\n name: \"\".concat(BREAD_CRUMB_NAME, \"_\").concat(record.name, \"_text\"),\n attrs: __assign(__assign({\n text: index === 0 && !isNil(config.rootText) ? config.rootText : record.name\n }, config.textStyle), {\n x: left,\n y: 0\n })\n });\n var textShapeBox = textShape.getBBox();\n left += textShapeBox.width + PADDING;\n // 增加文本事件\n textShape.on('click', function (event) {\n var _a;\n var targetId = event.target.get('id');\n if (targetId !== ((_a = last(cache)) === null || _a === void 0 ? void 0 : _a.id)) {\n var newHistoryCache = cache.slice(0, cache.findIndex(function (d) {\n return d.id === targetId;\n }) + 1);\n _this.backTo(newHistoryCache);\n }\n });\n // active 效果内置\n textShape.on('mouseenter', function (event) {\n var _a;\n var targetId = event.target.get('id');\n if (targetId !== ((_a = last(cache)) === null || _a === void 0 ? void 0 : _a.id)) {\n textShape.attr(config.activeTextStyle);\n } else {\n textShape.attr({\n cursor: 'default'\n });\n }\n });\n textShape.on('mouseleave', function () {\n textShape.attr(config.textStyle);\n });\n if (index < cache.length - 1) {\n // 添加反斜杠\n var dividerShape = _this.breadCrumbGroup.addShape({\n type: 'text',\n name: \"\".concat(config.name, \"_\").concat(record.name, \"_divider\"),\n attrs: __assign(__assign({\n text: config.dividerText\n }, config.textStyle), {\n x: left,\n y: 0\n })\n });\n var dividerBox = dividerShape.getBBox();\n left += dividerBox.width + PADDING;\n }\n });\n };\n /**\n * 隐藏面包屑\n */\n DrillDownAction.prototype.hideCrumbGroup = function () {\n if (this.breadCrumbGroup) {\n this.breadCrumbGroup.hide();\n }\n };\n /**\n * @override\n * destroy: 销毁资源\n */\n DrillDownAction.prototype.destroy = function () {\n if (this.breadCrumbGroup) {\n this.breadCrumbGroup.remove();\n }\n _super.prototype.destroy.call(this);\n };\n return DrillDownAction;\n}(Action);\nexport { DrillDownAction };","import { shuffle } from \"../array.js\";\nexport default function (circles) {\n var i = 0,\n n = (circles = shuffle(Array.from(circles))).length,\n B = [],\n p,\n e;\n while (i < n) {\n p = circles[i];\n if (e && enclosesWeak(e, p)) ++i;else e = encloseBasis(B = extendBasis(B, p)), i = 0;\n }\n return e;\n}\nfunction extendBasis(B, p) {\n var i, j;\n if (enclosesWeakAll(p, B)) return [p];\n\n // If we get here then B must have at least one element.\n for (i = 0; i < B.length; ++i) {\n if (enclosesNot(p, B[i]) && enclosesWeakAll(encloseBasis2(B[i], p), B)) {\n return [B[i], p];\n }\n }\n\n // If we get here then B must have at least two elements.\n for (i = 0; i < B.length - 1; ++i) {\n for (j = i + 1; j < B.length; ++j) {\n if (enclosesNot(encloseBasis2(B[i], B[j]), p) && enclosesNot(encloseBasis2(B[i], p), B[j]) && enclosesNot(encloseBasis2(B[j], p), B[i]) && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {\n return [B[i], B[j], p];\n }\n }\n }\n\n // If we get here then something is very wrong.\n throw new Error();\n}\nfunction enclosesNot(a, b) {\n var dr = a.r - b.r,\n dx = b.x - a.x,\n dy = b.y - a.y;\n return dr < 0 || dr * dr < dx * dx + dy * dy;\n}\nfunction enclosesWeak(a, b) {\n var dr = a.r - b.r + Math.max(a.r, b.r, 1) * 1e-9,\n dx = b.x - a.x,\n dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\nfunction enclosesWeakAll(a, B) {\n for (var i = 0; i < B.length; ++i) {\n if (!enclosesWeak(a, B[i])) {\n return false;\n }\n }\n return true;\n}\nfunction encloseBasis(B) {\n switch (B.length) {\n case 1:\n return encloseBasis1(B[0]);\n case 2:\n return encloseBasis2(B[0], B[1]);\n case 3:\n return encloseBasis3(B[0], B[1], B[2]);\n }\n}\nfunction encloseBasis1(a) {\n return {\n x: a.x,\n y: a.y,\n r: a.r\n };\n}\nfunction encloseBasis2(a, b) {\n var x1 = a.x,\n y1 = a.y,\n r1 = a.r,\n x2 = b.x,\n y2 = b.y,\n r2 = b.r,\n x21 = x2 - x1,\n y21 = y2 - y1,\n r21 = r2 - r1,\n l = Math.sqrt(x21 * x21 + y21 * y21);\n return {\n x: (x1 + x2 + x21 / l * r21) / 2,\n y: (y1 + y2 + y21 / l * r21) / 2,\n r: (l + r1 + r2) / 2\n };\n}\nfunction encloseBasis3(a, b, c) {\n var x1 = a.x,\n y1 = a.y,\n r1 = a.r,\n x2 = b.x,\n y2 = b.y,\n r2 = b.r,\n x3 = c.x,\n y3 = c.y,\n r3 = c.r,\n a2 = x1 - x2,\n a3 = x1 - x3,\n b2 = y1 - y2,\n b3 = y1 - y3,\n c2 = r2 - r1,\n c3 = r3 - r1,\n d1 = x1 * x1 + y1 * y1 - r1 * r1,\n d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,\n d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,\n ab = a3 * b2 - a2 * b3,\n xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,\n xb = (b3 * c2 - b2 * c3) / ab,\n ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,\n yb = (a2 * c3 - a3 * c2) / ab,\n A = xb * xb + yb * yb - 1,\n B = 2 * (r1 + xa * xb + ya * yb),\n C = xa * xa + ya * ya - r1 * r1,\n r = -(A ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);\n return {\n x: x1 + xa + xb * r,\n y: y1 + ya + yb * r,\n r: r\n };\n}","export default function (x) {\n return typeof x === \"object\" && \"length\" in x ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n\nexport function shuffle(array) {\n var m = array.length,\n t,\n i;\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m];\n array[m] = array[i];\n array[i] = t;\n }\n return array;\n}","import array from \"../array.js\";\nimport enclose from \"./enclose.js\";\nfunction place(b, a, c) {\n var dx = b.x - a.x,\n x,\n a2,\n dy = b.y - a.y,\n y,\n b2,\n d2 = dx * dx + dy * dy;\n if (d2) {\n a2 = a.r + c.r, a2 *= a2;\n b2 = b.r + c.r, b2 *= b2;\n if (a2 > b2) {\n x = (d2 + b2 - a2) / (2 * d2);\n y = Math.sqrt(Math.max(0, b2 / d2 - x * x));\n c.x = b.x - x * dx - y * dy;\n c.y = b.y - x * dy + y * dx;\n } else {\n x = (d2 + a2 - b2) / (2 * d2);\n y = Math.sqrt(Math.max(0, a2 / d2 - x * x));\n c.x = a.x + x * dx - y * dy;\n c.y = a.y + x * dy + y * dx;\n }\n } else {\n c.x = a.x + c.r;\n c.y = a.y;\n }\n}\nfunction intersects(a, b) {\n var dr = a.r + b.r - 1e-6,\n dx = b.x - a.x,\n dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\nfunction score(node) {\n var a = node._,\n b = node.next._,\n ab = a.r + b.r,\n dx = (a.x * b.r + b.x * a.r) / ab,\n dy = (a.y * b.r + b.y * a.r) / ab;\n return dx * dx + dy * dy;\n}\nfunction Node(circle) {\n this._ = circle;\n this.next = null;\n this.previous = null;\n}\nexport function packEnclose(circles) {\n if (!(n = (circles = array(circles)).length)) return 0;\n var a, b, c, n, aa, ca, i, j, k, sj, sk;\n\n // Place the first circle.\n a = circles[0], a.x = 0, a.y = 0;\n if (!(n > 1)) return a.r;\n\n // Place the second circle.\n b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;\n if (!(n > 2)) return a.r + b.r;\n\n // Place the third circle.\n place(b, a, c = circles[2]);\n\n // Initialize the front-chain using the first three circles a, b and c.\n a = new Node(a), b = new Node(b), c = new Node(c);\n a.next = c.previous = b;\n b.next = a.previous = c;\n c.next = b.previous = a;\n\n // Attempt to place each remaining circle…\n pack: for (i = 3; i < n; ++i) {\n place(a._, b._, c = circles[i]), c = new Node(c);\n\n // Find the closest intersecting circle on the front-chain, if any.\n // “Closeness” is determined by linear distance along the front-chain.\n // “Ahead” or “behind” is likewise determined by linear distance.\n j = b.next, k = a.previous, sj = b._.r, sk = a._.r;\n do {\n if (sj <= sk) {\n if (intersects(j._, c._)) {\n b = j, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sj += j._.r, j = j.next;\n } else {\n if (intersects(k._, c._)) {\n a = k, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sk += k._.r, k = k.previous;\n }\n } while (j !== k.next);\n\n // Success! Insert the new circle c between a and b.\n c.previous = a, c.next = b, a.next = b.previous = b = c;\n\n // Compute the new closest circle pair to the centroid.\n aa = score(a);\n while ((c = c.next) !== b) {\n if ((ca = score(c)) < aa) {\n a = c, aa = ca;\n }\n }\n b = a.next;\n }\n\n // Compute the enclosing circle of the front chain.\n a = [b._], c = b;\n while ((c = c.next) !== b) a.push(c._);\n c = enclose(a);\n\n // Translate the circles to put the enclosing circle around the origin.\n for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;\n return c.r;\n}\nexport default function (circles) {\n packEnclose(circles);\n return circles;\n}","export function optional(f) {\n return f == null ? null : required(f);\n}\nexport function required(f) {\n if (typeof f !== \"function\") throw new Error();\n return f;\n}","export function constantZero() {\n return 0;\n}\nexport default function (x) {\n return function () {\n return x;\n };\n}","import { packEnclose } from \"./siblings.js\";\nimport { optional } from \"../accessors.js\";\nimport constant, { constantZero } from \"../constant.js\";\nfunction defaultRadius(d) {\n return Math.sqrt(d.value);\n}\nexport default function () {\n var radius = null,\n dx = 1,\n dy = 1,\n padding = constantZero;\n function pack(root) {\n root.x = dx / 2, root.y = dy / 2;\n if (radius) {\n root.eachBefore(radiusLeaf(radius)).eachAfter(packChildren(padding, 0.5)).eachBefore(translateChild(1));\n } else {\n root.eachBefore(radiusLeaf(defaultRadius)).eachAfter(packChildren(constantZero, 1)).eachAfter(packChildren(padding, root.r / Math.min(dx, dy))).eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));\n }\n return root;\n }\n pack.radius = function (x) {\n return arguments.length ? (radius = optional(x), pack) : radius;\n };\n pack.size = function (x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];\n };\n pack.padding = function (x) {\n return arguments.length ? (padding = typeof x === \"function\" ? x : constant(+x), pack) : padding;\n };\n return pack;\n}\nfunction radiusLeaf(radius) {\n return function (node) {\n if (!node.children) {\n node.r = Math.max(0, +radius(node) || 0);\n }\n };\n}\nfunction packChildren(padding, k) {\n return function (node) {\n if (children = node.children) {\n var children,\n i,\n n = children.length,\n r = padding(node) * k || 0,\n e;\n if (r) for (i = 0; i < n; ++i) children[i].r += r;\n e = packEnclose(children);\n if (r) for (i = 0; i < n; ++i) children[i].r -= r;\n node.r = e + r;\n }\n };\n}\nfunction translateChild(k) {\n return function (node) {\n var parent = node.parent;\n node.r *= k;\n if (parent) {\n node.x = parent.x + k * node.x;\n node.y = parent.y + k * node.y;\n }\n };\n}","function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\nexport default function () {\n return this.eachAfter(count);\n}","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nexport default function (callback, that) {\n var index = -1;\n var _iterator = _createForOfIteratorHelper(this),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var node = _step.value;\n callback.call(that, node, ++index, this);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return this;\n}","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nexport default function (callback, that) {\n var index = -1;\n var _iterator = _createForOfIteratorHelper(this),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var node = _step.value;\n if (callback.call(that, node, ++index, this)) {\n return node;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n}","import _regeneratorRuntime from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/regenerator/index.js\";\nvar _marked = /*#__PURE__*/_regeneratorRuntime.mark(_callee);\nexport default function _callee() {\n var node, current, next, children, i, n;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n node = this, next = [node];\n case 1:\n current = next.reverse(), next = [];\n case 2:\n if (!(node = current.pop())) {\n _context.next = 8;\n break;\n }\n _context.next = 5;\n return node;\n case 5:\n if (children = node.children) {\n for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n _context.next = 2;\n break;\n case 8:\n if (next.length) {\n _context.next = 1;\n break;\n }\n case 9:\n case \"end\":\n return _context.stop();\n }\n }, _marked, this);\n}","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_find from \"./find.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\nimport node_iterator from \"./iterator.js\";\nexport default function hierarchy(data, children) {\n if (data instanceof Map) {\n data = [undefined, data];\n if (children === undefined) children = mapChildren;\n } else if (children === undefined) {\n children = objectChildren;\n }\n var root = new Node(data),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n while (node = nodes.pop()) {\n if ((childs = children(node.data)) && (n = (childs = Array.from(childs)).length)) {\n node.children = childs;\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = childs[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n return root.eachBefore(computeHeight);\n}\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\nfunction objectChildren(d) {\n return d.children;\n}\nfunction mapChildren(d) {\n return Array.isArray(d) ? d[1] : null;\n}\nfunction copyData(node) {\n if (node.data.value !== undefined) node.value = node.data.value;\n node.data = node.data.data;\n}\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height; while ((node = node.parent) && node.height < ++height);\n}\nexport function Node(data) {\n this.data = data;\n this.depth = this.height = 0;\n this.parent = null;\n}\nNode.prototype = hierarchy.prototype = _defineProperty({\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n find: node_find,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy\n}, Symbol.iterator, node_iterator);","export default function (callback, that) {\n var node = this,\n nodes = [node],\n next = [],\n children,\n i,\n n,\n index = -1;\n while (node = nodes.pop()) {\n next.push(node);\n if (children = node.children) {\n for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n }\n while (node = next.pop()) {\n callback.call(that, node, ++index, this);\n }\n return this;\n}","export default function (callback, that) {\n var node = this,\n nodes = [node],\n children,\n i,\n index = -1;\n while (node = nodes.pop()) {\n callback.call(that, node, ++index, this);\n if (children = node.children) {\n for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n }\n return this;\n}","export default function (value) {\n return this.eachAfter(function (node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}","export default function (compare) {\n return this.eachBefore(function (node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}","export default function (end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}","export default function () {\n var node = this,\n nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}","export default function () {\n return Array.from(this);\n}","export default function () {\n var leaves = [];\n this.eachBefore(function (node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}","export default function () {\n var root = this,\n links = [];\n root.each(function (node) {\n if (node !== root) {\n // Don’t include the root’s parent, if any.\n links.push({\n source: node.parent,\n target: node\n });\n }\n });\n return links;\n}","import { filter, isArray, isString } from '@antv/util';\n/** export 一些字段常量 */\n/** 在同层级,同一父节点下的节点索引顺序 */\nexport var NODE_INDEX_FIELD = 'nodeIndex';\n/** child 节点数量 */\nexport var CHILD_NODE_COUNT = 'childNodeCount';\n/** 节点的祖先节点 */\nexport var NODE_ANCESTORS_FIELD = 'nodeAncestor';\nvar INVALID_FIELD_ERR_MSG = 'Invalid field: it must be a string!';\nexport function getField(options, defaultField) {\n var field = options.field,\n fields = options.fields;\n if (isString(field)) {\n return field;\n }\n if (isArray(field)) {\n console.warn(INVALID_FIELD_ERR_MSG);\n return field[0];\n }\n console.warn(\"\".concat(INVALID_FIELD_ERR_MSG, \" will try to get fields instead.\"));\n if (isString(fields)) {\n return fields;\n }\n if (isArray(fields) && fields.length) {\n return fields[0];\n }\n if (defaultField) {\n return defaultField;\n }\n throw new TypeError(INVALID_FIELD_ERR_MSG);\n}\nexport function getAllNodes(root) {\n var nodes = [];\n if (root && root.each) {\n var parent_1;\n var index_1;\n // d3-hierarchy: Invokes the specified function for node and each descendant in **breadth-first order**\n root.each(function (node) {\n var _a, _b;\n if (node.parent !== parent_1) {\n parent_1 = node.parent;\n index_1 = 0;\n } else {\n index_1 += 1;\n }\n var ancestors = filter((((_a = node.ancestors) === null || _a === void 0 ? void 0 : _a.call(node)) || []).map(function (d) {\n return nodes.find(function (n) {\n return n.name === d.name;\n }) || d;\n }), function (_a) {\n var depth = _a.depth;\n return depth > 0 && depth < node.depth;\n });\n node[NODE_ANCESTORS_FIELD] = ancestors;\n node[CHILD_NODE_COUNT] = ((_b = node.children) === null || _b === void 0 ? void 0 : _b.length) || 0;\n node[NODE_INDEX_FIELD] = index_1;\n nodes.push(node);\n });\n } else if (root && root.eachNode) {\n // @antv/hierarchy\n root.eachNode(function (node) {\n nodes.push(node);\n });\n }\n return nodes;\n}","import { assign, isArray } from '@antv/util';\nimport * as d3Hierarchy from 'd3-hierarchy';\nimport { getAllNodes, getField } from './util';\nvar DEFAULT_OPTIONS = {\n field: 'value',\n as: ['x', 'y', 'r'],\n // 默认降序\n sort: function sort(a, b) {\n return b.value - a.value;\n }\n};\nexport function pack(data, options) {\n options = assign({}, DEFAULT_OPTIONS, options);\n var as = options.as;\n if (!isArray(as) || as.length !== 3) {\n throw new TypeError('Invalid as: it must be an array with 3 strings (e.g. [ \"x\", \"y\", \"r\" ])!');\n }\n var field;\n try {\n field = getField(options);\n } catch (e) {\n console.warn(e);\n }\n var packLayout = function packLayout(data) {\n return d3Hierarchy.pack().size(options.size).padding(options.padding)(d3Hierarchy.hierarchy(data).sum(function (d) {\n return d[field];\n }).sort(options.sort));\n };\n var root = packLayout(data);\n var x = as[0];\n var y = as[1];\n var r = as[2];\n root.each(function (node) {\n node[x] = node.x;\n node[y] = node.y;\n node[r] = node.r;\n });\n return getAllNodes(root);\n}","import { __assign } from \"tslib\";\nimport { HIERARCHY_DATA_TRANSFORM_PARAMS } from '../../interactions/actions/drill-down';\nimport { deepAssign, pick } from '../../utils';\nimport { pack } from '../../utils/hierarchy/pack';\nimport { resolveAllPadding } from '../../utils/padding';\n/**\n * circle-packing 数据转换\n * @param options\n */\nexport function transformData(options) {\n var data = options.data,\n hierarchyConfig = options.hierarchyConfig,\n _a = options.rawFields,\n rawFields = _a === void 0 ? [] : _a,\n enableDrillDown = options.enableDrillDown;\n var nodes = pack(data, __assign(__assign({}, hierarchyConfig), {\n field: 'value',\n as: ['x', 'y', 'r']\n }));\n var result = [];\n nodes.forEach(function (node) {\n var _a;\n var path = node.data.name;\n var ancestorNode = __assign({}, node);\n while (ancestorNode.depth > 1) {\n path = \"\".concat((_a = ancestorNode.parent.data) === null || _a === void 0 ? void 0 : _a.name, \" / \").concat(path);\n ancestorNode = ancestorNode.parent;\n }\n // 开启下钻,仅加载 depth <= 2 的数据 (加载两层)\n if (enableDrillDown && node.depth > 2) {\n return null;\n }\n var nodeInfo = deepAssign({}, node.data, __assign(__assign(__assign({}, pick(node.data, rawFields)), {\n path: path\n }), node));\n nodeInfo.ext = hierarchyConfig;\n nodeInfo[HIERARCHY_DATA_TRANSFORM_PARAMS] = {\n hierarchyConfig: hierarchyConfig,\n rawFields: rawFields,\n enableDrillDown: enableDrillDown\n };\n result.push(nodeInfo);\n });\n return result;\n}\n/**\n * 根据传入的 padding 和 现有的 画布大小, 输出针对圆形视图布局需要的 finalPadding 以及 finalSize\n * @param params\n */\nexport function resolvePaddingForCircle(padding, appendPadding, containerSize) {\n var tempPadding = resolveAllPadding([padding, appendPadding]);\n var top = tempPadding[0],\n right = tempPadding[1],\n bottom = tempPadding[2],\n left = tempPadding[3]; // 没设定,默认是 [0, 0, 0, 0]\n var width = containerSize.width,\n height = containerSize.height;\n // 有了 tempPadding 介入以后,计算出coordinate范围宽高的最小值 minSize = circle-packing的直径\n var wSize = width - (left + right);\n var hSize = height - (top + bottom);\n var minSize = Math.min(wSize, hSize); // circle-packing的直径\n // 得到居中后各方向剩余的 padding\n var restWidthPadding = (wSize - minSize) / 2;\n var restHeightPadding = (hSize - minSize) / 2;\n var finalTop = top + restHeightPadding;\n var finalRight = right + restWidthPadding;\n var finalBottom = bottom + restHeightPadding;\n var finalLeft = left + restWidthPadding;\n var finalPadding = [finalTop, finalRight, finalBottom, finalLeft];\n var finalSize = minSize < 0 ? 0 : minSize; // 防止为负数\n return {\n finalPadding: finalPadding,\n finalSize: finalSize\n };\n}","import { __assign, __spreadArray } from \"tslib\";\nimport { get } from '@antv/util';\nimport { animation, annotation, interaction as baseInteraction, legend, pattern, scale, theme } from '../../adaptor/common';\nimport { point } from '../../adaptor/geometries/point';\nimport { deepAssign, flow } from '../../utils';\nimport { getAdjustAppendPadding, resolveAllPadding } from '../../utils/padding';\nimport { RAW_FIELDS } from './constant';\nimport { resolvePaddingForCircle, transformData } from './utils';\n/**\n * 获取默认 option\n * @param params\n */\nfunction defaultOptions(params) {\n var chart = params.chart;\n var diameter = Math.min(chart.viewBBox.width, chart.viewBBox.height);\n return deepAssign({\n options: {\n size: function size(_a) {\n var r = _a.r;\n return r * diameter;\n } // 当autofit:false时,默认给固定半径\n }\n }, params);\n}\n/**\n * padding 配置\n * @param params\n */\nfunction padding(params) {\n var options = params.options,\n chart = params.chart;\n // 通过改变 padding,修改 coordinate 的绘制区域\n var containerSize = chart.viewBBox;\n var padding = options.padding,\n appendPadding = options.appendPadding,\n drilldown = options.drilldown;\n var tempAppendPadding = appendPadding;\n if (drilldown === null || drilldown === void 0 ? void 0 : drilldown.enabled) {\n var appendPaddingByDrilldown = getAdjustAppendPadding(chart.appendPadding, get(drilldown, ['breadCrumb', 'position']));\n tempAppendPadding = resolveAllPadding([appendPaddingByDrilldown, appendPadding]);\n }\n var finalPadding = resolvePaddingForCircle(padding, tempAppendPadding, containerSize).finalPadding;\n chart.padding = finalPadding;\n chart.appendPadding = 0;\n return params;\n}\n/**\n * 字段\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var padding = chart.padding,\n appendPadding = chart.appendPadding;\n var color = options.color,\n colorField = options.colorField,\n pointStyle = options.pointStyle,\n hierarchyConfig = options.hierarchyConfig,\n sizeField = options.sizeField,\n _a = options.rawFields,\n rawFields = _a === void 0 ? [] : _a,\n drilldown = options.drilldown;\n var data = transformData({\n data: options.data,\n hierarchyConfig: hierarchyConfig,\n enableDrillDown: drilldown === null || drilldown === void 0 ? void 0 : drilldown.enabled,\n rawFields: rawFields\n });\n chart.data(data);\n var containerSize = chart.viewBBox;\n var finalSize = resolvePaddingForCircle(padding, appendPadding, containerSize).finalSize;\n // 有sizeField的时候,例如 value ,可以选择映射 size 函数,自己计算出映射的半径\n var circleSize = function circleSize(_a) {\n var r = _a.r;\n return r * finalSize;\n }; // 默认配置\n if (sizeField) {\n circleSize = function circleSize(d) {\n return d[sizeField] * finalSize;\n }; // 目前只有 r 通道映射效果会正常\n }\n // geometry\n point(deepAssign({}, params, {\n options: {\n xField: 'x',\n yField: 'y',\n seriesField: colorField,\n sizeField: sizeField,\n rawFields: __spreadArray(__spreadArray([], RAW_FIELDS, true), rawFields, true),\n point: {\n color: color,\n style: pointStyle,\n shape: 'circle',\n size: circleSize\n }\n }\n }));\n return params;\n}\n/**\n * meta 配置\n * @param params\n */\nexport function meta(params) {\n return flow(scale({}, {\n // 必须强制为 nice\n x: {\n min: 0,\n max: 1,\n minLimit: 0,\n maxLimit: 1,\n nice: true\n },\n y: {\n min: 0,\n max: 1,\n minLimit: 0,\n maxLimit: 1,\n nice: true\n }\n }))(params);\n}\n/**\n * tooltip 配置\n * @param params\n */\nfunction tooltip(params) {\n var chart = params.chart,\n options = params.options;\n var tooltip = options.tooltip;\n if (tooltip === false) {\n chart.tooltip(false);\n } else {\n var tooltipOptions = tooltip;\n // 设置了 fields,就不进行 customItems 了; 设置 formatter 时,需要搭配 fields\n if (!get(tooltip, 'fields')) {\n tooltipOptions = deepAssign({}, {\n customItems: function customItems(items) {\n return items.map(function (item) {\n var scales = get(chart.getOptions(), 'scales');\n var nameFormatter = get(scales, ['name', 'formatter'], function (v) {\n return v;\n });\n var valueFormatter = get(scales, ['value', 'formatter'], function (v) {\n return v;\n });\n return __assign(__assign({}, item), {\n name: nameFormatter(item.data.name),\n value: valueFormatter(item.data.value)\n });\n });\n }\n }, tooltipOptions);\n }\n chart.tooltip(tooltipOptions);\n }\n return params;\n}\n/**\n * 坐标轴, 默认关闭\n * @param params\n */\nfunction axis(params) {\n var chart = params.chart;\n chart.axis(false);\n return params;\n}\nfunction adaptorInteraction(options) {\n var drilldown = options.drilldown,\n _a = options.interactions,\n interactions = _a === void 0 ? [] : _a;\n if (drilldown === null || drilldown === void 0 ? void 0 : drilldown.enabled) {\n return deepAssign({}, options, {\n interactions: __spreadArray(__spreadArray([], interactions, true), [{\n type: 'drill-down',\n cfg: {\n drillDownConfig: drilldown,\n transformData: transformData,\n enableDrillDown: true\n }\n }], false)\n });\n }\n return options;\n}\n/**\n * 交互配置\n * @param params\n * @returns\n */\nfunction interaction(params) {\n var chart = params.chart,\n options = params.options;\n baseInteraction({\n chart: chart,\n options: adaptorInteraction(options)\n });\n return params;\n}\n/**\n * 矩形树图\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n return flow(pattern('pointStyle'), defaultOptions, padding, theme, meta, geometry, axis, legend, tooltip, interaction, animation, annotation())(params);\n}","import { registerAction, registerInteraction } from '@antv/g2';\nimport { get, isArray } from '@antv/util';\nimport { DrillDownAction } from './actions/drill-down';\n/**\n * 判断是否为父节点\n */\nexport function isParentNode(context) {\n var data = get(context, ['event', 'data', 'data'], {});\n return isArray(data.children) && data.children.length > 0;\n}\n/**\n * 判断是否在中心\n */\nfunction inCenter(context) {\n var coordinate = context.view.getCoordinate();\n var innerRadius = coordinate.innerRadius;\n if (innerRadius) {\n var _a = context.event,\n x = _a.x,\n y = _a.y;\n var _b = coordinate.center,\n centerX = _b.x,\n centerY = _b.y;\n var r = coordinate.getRadius() * innerRadius;\n var distance = Math.sqrt(Math.pow(centerX - x, 2) + Math.pow(centerY - y, 2));\n return distance < r;\n }\n return false;\n}\nregisterAction('drill-down-action', DrillDownAction);\nregisterInteraction('drill-down', {\n showEnable: [{\n trigger: 'element:mouseenter',\n action: 'cursor:pointer',\n isEnable: isParentNode\n }, {\n trigger: 'element:mouseleave',\n action: 'cursor:default'\n },\n // 中心处,肯定会触发 element:mouseleave 操作\n {\n trigger: 'element:mouseleave',\n action: 'cursor:pointer',\n isEnable: inCenter\n }],\n start: [{\n trigger: 'element:click',\n isEnable: isParentNode,\n action: ['drill-down-action:click']\n }, {\n trigger: 'afterchangesize',\n action: ['drill-down-action:resetPosition']\n }, {\n // 点击中心,返回上一层\n trigger: 'click',\n isEnable: inCenter,\n action: ['drill-down-action:back']\n }]\n});","import { __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { adaptor } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constant';\nimport './interactions';\n/**\n * CirclePacking\n * @usage hierarchy, proportions\n */\nvar CirclePacking = /** @class */function (_super) {\n __extends(CirclePacking, _super);\n function CirclePacking() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'circle-packing';\n return _this;\n }\n /**\n * 获取 面积图 默认配置项\n * 供外部使用\n */\n CirclePacking.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n CirclePacking.prototype.getDefaultOptions = function () {\n return CirclePacking.getDefaultOptions();\n };\n /**\n * 获取适配器\n */\n CirclePacking.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n /**\n * 覆写父类的方法\n */\n CirclePacking.prototype.triggerResize = function () {\n if (!this.chart.destroyed) {\n // 首先自适应容器的宽高\n this.chart.forceFit(); // g2 内部执行 changeSize,changeSize 中执行 render(true)\n this.chart.clear();\n this.execAdaptor(); // 核心:宽高更新之后计算padding\n // 渲染\n this.chart.render(true);\n }\n };\n return CirclePacking;\n}(Plot);\nexport { CirclePacking };","export var AxisType;\n(function (AxisType) {\n AxisType[\"Left\"] = \"Left\";\n AxisType[\"Right\"] = \"Right\";\n})(AxisType || (AxisType = {}));\nexport var DualAxesGeometry;\n(function (DualAxesGeometry) {\n DualAxesGeometry[\"Line\"] = \"line\";\n DualAxesGeometry[\"Column\"] = \"column\";\n})(DualAxesGeometry || (DualAxesGeometry = {}));","import { __assign } from \"tslib\";\nexport var LEFT_AXES_VIEW = 'left-axes-view';\nexport var RIGHT_AXES_VIEW = 'right-axes-view';\nexport var DEFAULT_YAXIS_CONFIG = {\n nice: true,\n label: {\n autoHide: true,\n autoRotate: false\n }\n};\nexport var DEFAULT_LEFT_YAXIS_CONFIG = __assign(__assign({}, DEFAULT_YAXIS_CONFIG), {\n position: 'left'\n});\nexport var DEFAULT_RIGHT_YAXIS_CONFIG = __assign(__assign({}, DEFAULT_YAXIS_CONFIG), {\n position: 'right',\n grid: null\n});","import { __assign } from \"tslib\";\nimport { get, isArray } from '@antv/util';\nimport { deepAssign } from '../../../utils';\nimport { DEFAULT_LEFT_YAXIS_CONFIG, DEFAULT_RIGHT_YAXIS_CONFIG } from '../constant';\nimport { AxisType, DualAxesGeometry } from '../types';\n/**\n * 根据 GeometryOption 判断 geometry 是否为 line\n */\nexport function isLine(geometryOption) {\n return get(geometryOption, 'geometry') === DualAxesGeometry.Line;\n}\n/**\n * 根据 GeometryOption 判断 geometry 是否为 Column\n */\nexport function isColumn(geometryOption) {\n return get(geometryOption, 'geometry') === DualAxesGeometry.Column;\n}\n/**\n * 获取 GeometryOption\n * @param geometryOption\n * @param axis\n */\nexport function getGeometryOption(xField, yField, geometryOption) {\n // 空默认为线\n return isColumn(geometryOption) ? deepAssign({}, {\n geometry: DualAxesGeometry.Column,\n label: geometryOption.label && geometryOption.isRange ? {\n content: function content(item) {\n var _a;\n return (_a = item[yField]) === null || _a === void 0 ? void 0 : _a.join('-');\n }\n } : undefined\n }, geometryOption) : __assign({\n geometry: DualAxesGeometry.Line\n }, geometryOption);\n}\n/**\n * 兼容一些属性 为 arr 和 obj 的两种情况, 如 yAxis,annotations\n * 为了防止左右 yField 相同,导致变成 object 之后被覆盖,所以都转变成数组的形式\n * @param yField\n * @param transformAttribute\n */\nexport function transformObjectToArray(yField, transformAttribute) {\n var y1 = yField[0],\n y2 = yField[1];\n if (isArray(transformAttribute)) {\n // 将数组补齐为两个\n var a1_1 = transformAttribute[0],\n a2_1 = transformAttribute[1];\n return [a1_1, a2_1];\n }\n var a1 = get(transformAttribute, y1);\n var a2 = get(transformAttribute, y2);\n return [a1, a2];\n}\n/**\n * 获取默认值\n * @param yAxis\n * @param axisType\n */\nexport function getYAxisWithDefault(yAxis, axisType) {\n if (axisType === AxisType.Left) {\n return yAxis === false ? false : deepAssign({}, DEFAULT_LEFT_YAXIS_CONFIG, yAxis);\n } else if (axisType === AxisType.Right) {\n return yAxis === false ? false : deepAssign({}, DEFAULT_RIGHT_YAXIS_CONFIG, yAxis);\n }\n return yAxis;\n}","import { Util } from '@antv/g2';\nimport { get, isEmpty, isFunction, reduce } from '@antv/util';\nimport { deepAssign, findGeometry } from '../../../utils';\nimport { isLine } from './option';\n/**\n * 获取 view 的 legendItem,供存在不含有 seriesField 的图形使用\n * @param params\n */\nexport function getViewLegendItems(params) {\n var view = params.view,\n geometryOption = params.geometryOption,\n yField = params.yField,\n legend = params.legend;\n var userMarker = get(legend, 'marker');\n var geometry = findGeometry(view, isLine(geometryOption) ? 'line' : 'interval');\n if (!geometryOption.seriesField) {\n var legendItemName = get(view, \"options.scales.\".concat(yField, \".alias\")) || yField;\n // 返回 g2 设置的图例\n var colorAttribute = geometry.getAttribute('color');\n var color = view.getTheme().defaultColor;\n if (colorAttribute) {\n color = Util.getMappingValue(colorAttribute, legendItemName, get(colorAttribute, ['values', 0], color));\n }\n var marker = (isFunction(userMarker) ? userMarker : !isEmpty(userMarker) && deepAssign({}, {\n style: {\n stroke: color,\n fill: color\n }\n }, userMarker)) || (isLine(geometryOption) ? {\n symbol: function symbol(x, y, r) {\n return [['M', x - r, y], ['L', x + r, y]];\n },\n style: {\n lineWidth: 2,\n r: 6,\n stroke: color\n }\n } : {\n symbol: 'square',\n style: {\n fill: color\n }\n });\n return [{\n value: yField,\n name: legendItemName,\n marker: marker,\n isGeometry: true,\n viewId: view.id\n }];\n }\n var attributes = geometry.getGroupAttributes();\n return reduce(attributes, function (items, attr) {\n var attrItems = Util.getLegendItems(view, geometry, attr, view.getTheme(), userMarker);\n return items.concat(attrItems);\n }, []);\n}","import { size, valuesOfKey } from '@antv/util';\nimport { isBetween } from '../../../utils';\n/**\n * 右侧 View 进行 slider 过滤\n * 由于双轴图是多 View , 需要监听左侧 Slider 的 change 事件来同步右侧 View\n * @param { View } view 右侧视图\n * @param { number[] } sliderValue 滑块当前值\n * @returns void\n */\nexport var doSliderFilter = function doSliderFilter(view, sliderValue) {\n var min = sliderValue[0],\n max = sliderValue[1];\n var data = view.getOptions().data;\n var xScale = view.getXScale();\n var dataSize = size(data);\n if (!xScale || !dataSize) {\n return;\n }\n var isHorizontal = true;\n var values = valuesOfKey(data, xScale.field);\n var xValues = isHorizontal ? values : values.reverse();\n var xTickCount = size(xValues);\n var minIndex = Math.floor(min * (xTickCount - 1));\n var maxIndex = Math.floor(max * (xTickCount - 1));\n // 增加 x 轴的过滤器\n view.filter(xScale.field, function (value) {\n var idx = xValues.indexOf(value);\n return idx > -1 ? isBetween(idx, minIndex, maxIndex) : true;\n });\n view.getRootView().render(true);\n};","import { __assign } from \"tslib\";\nimport { each, every, find, findIndex, get, isBoolean, isEqual, isObject } from '@antv/util';\nimport { animation as commonAnimation, annotation as commonAnnotation, interaction as commonInteraction, limitInPlot as commonLimitInPlot, scale, theme as commonTheme } from '../../adaptor/common';\nimport { deepAssign, flow } from '../../utils';\nimport { percent } from '../../utils/transform/percent';\nimport { findViewById } from '../../utils/view';\nimport { LEFT_AXES_VIEW, RIGHT_AXES_VIEW } from './constant';\nimport { AxisType, DualAxesGeometry } from './types';\nimport { drawSingleGeometry } from './util/geometry';\nimport { getViewLegendItems } from './util/legend';\nimport { getGeometryOption, getYAxisWithDefault, isColumn, transformObjectToArray } from './util/option';\nimport { doSliderFilter } from './util/render-sider';\n/**\n * transformOptions,双轴图整体的取参逻辑如下\n * 1. get index getOptions: 对应的是默认的图表参数,如 appendPadding,syncView 等\n * 2. get adpator transformOption: 对应的是双轴图的默认参数,deepAssign 优先级从低到高如下\n * 2.1 defaultoption,如 tooltip,legend\n * 2.2 用户填写 options\n * 2.3 根据用户填写的 options 补充的数组型 options,如 yaxis,GeometryOption,因为 deepAssign 无法 assign 数组\n *\n * @param params\n */\nexport function transformOptions(params) {\n var _a;\n var options = params.options;\n var _b = options.geometryOptions,\n geometryOptions = _b === void 0 ? [] : _b,\n xField = options.xField,\n yField = options.yField;\n var allLine = every(geometryOptions, function (_a) {\n var geometry = _a.geometry;\n return geometry === DualAxesGeometry.Line || geometry === undefined;\n });\n return deepAssign({}, {\n options: {\n geometryOptions: [],\n meta: (_a = {}, _a[xField] = {\n // 默认为 cat 类型\n type: 'cat',\n // x 轴一定是同步 scale 的\n sync: true,\n // 如果有没有柱子,则\n range: allLine ? [0, 1] : undefined\n }, _a),\n tooltip: {\n showMarkers: allLine,\n // 存在柱状图,不显示 crosshairs\n showCrosshairs: allLine,\n shared: true,\n crosshairs: {\n type: 'x'\n }\n },\n interactions: !allLine ? [{\n type: 'legend-visible-filter'\n }, {\n type: 'active-region'\n }] : [{\n type: 'legend-visible-filter'\n }],\n legend: {\n position: 'top-left'\n }\n }\n }, params, {\n options: {\n // yAxis\n yAxis: transformObjectToArray(yField, options.yAxis),\n // geometryOptions\n geometryOptions: [getGeometryOption(xField, yField[0], geometryOptions[0]), getGeometryOption(xField, yField[1], geometryOptions[1])],\n // annotations\n annotations: transformObjectToArray(yField, options.annotations)\n }\n });\n}\n/**\n * 创建 双轴图 中绘制图形的 view,提前创建是因为 theme 适配器的需要\n * @param params\n */\nfunction createViews(params) {\n var _a, _b;\n var chart = params.chart,\n options = params.options;\n var geometryOptions = options.geometryOptions;\n var SORT_MAP = {\n line: 0,\n column: 1\n };\n // 包含配置,id,数据的结构\n var geometries = [{\n type: (_a = geometryOptions[0]) === null || _a === void 0 ? void 0 : _a.geometry,\n id: LEFT_AXES_VIEW\n }, {\n type: (_b = geometryOptions[1]) === null || _b === void 0 ? void 0 : _b.geometry,\n id: RIGHT_AXES_VIEW\n }];\n // 将线的 view 放置在更上一层,防止线柱遮挡。先柱后先\n geometries.sort(function (a, b) {\n return -SORT_MAP[a.type] + SORT_MAP[b.type];\n }).forEach(function (g) {\n return chart.createView({\n id: g.id\n });\n });\n return params;\n}\n/**\n * 绘制图形\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var xField = options.xField,\n yField = options.yField,\n geometryOptions = options.geometryOptions,\n data = options.data,\n tooltip = options.tooltip;\n // 包含配置,id,数据的结构\n var geometries = [__assign(__assign({}, geometryOptions[0]), {\n id: LEFT_AXES_VIEW,\n data: data[0],\n yField: yField[0]\n }), __assign(__assign({}, geometryOptions[1]), {\n id: RIGHT_AXES_VIEW,\n data: data[1],\n yField: yField[1]\n })];\n geometries.forEach(function (geometry) {\n var id = geometry.id,\n data = geometry.data,\n yField = geometry.yField;\n // 百分比柱状图需要额外处理一次数据\n var isPercent = isColumn(geometry) && geometry.isPercent;\n var formatData = isPercent ? percent(data, yField, xField, yField) : data;\n var view = findViewById(chart, id).data(formatData);\n var tooltipOptions = isPercent ? __assign({\n formatter: function formatter(datum) {\n return {\n name: datum[geometry.seriesField] || yField,\n value: (Number(datum[yField]) * 100).toFixed(2) + '%'\n };\n }\n }, tooltip) : tooltip;\n // 绘制图形\n drawSingleGeometry({\n chart: view,\n options: {\n xField: xField,\n yField: yField,\n tooltip: tooltipOptions,\n geometryOption: geometry\n }\n });\n });\n return params;\n}\nexport function color(params) {\n var _a;\n var chart = params.chart,\n options = params.options;\n var geometryOptions = options.geometryOptions;\n var themeColor = ((_a = chart.getTheme()) === null || _a === void 0 ? void 0 : _a.colors10) || [];\n var start = 0;\n /* 为 geometry 添加默认 color。\n * 1. 若 geometryOptions 存在 color,则在 drawGeometry 时已处理\n * 2. 若 不存在 color,获取 Geometry group scales个数,在 theme color 10 中提取\n * 3. 为防止 group 过多导致右色板无值或值很少,右 view 面板在依次提取剩下的 N 个 后再 concat 一次 themeColor\n * 4. 为简便获取 Geometry group scales个数,在绘制完后再执行 color\n * 5. 考虑之后将不同 view 使用同一个色板的需求沉淀到 g2\n */\n chart.once('beforepaint', function () {\n each(geometryOptions, function (geometryOption, index) {\n var view = findViewById(chart, index === 0 ? LEFT_AXES_VIEW : RIGHT_AXES_VIEW);\n if (geometryOption.color) return;\n var groupScale = view.getGroupScales();\n var count = get(groupScale, [0, 'values', 'length'], 1);\n var color = themeColor.slice(start, start + count).concat(index === 0 ? [] : themeColor);\n view.geometries.forEach(function (geometry) {\n if (geometryOption.seriesField) {\n geometry.color(geometryOption.seriesField, color);\n } else {\n geometry.color(color[0]);\n }\n });\n start += count;\n });\n chart.render(true);\n });\n return params;\n}\n/**\n * meta 配置\n * @param params\n */\nexport function meta(params) {\n var _a, _b;\n var chart = params.chart,\n options = params.options;\n var xAxis = options.xAxis,\n yAxis = options.yAxis,\n xField = options.xField,\n yField = options.yField;\n scale((_a = {}, _a[xField] = xAxis, _a[yField[0]] = yAxis[0], _a))(deepAssign({}, params, {\n chart: findViewById(chart, LEFT_AXES_VIEW)\n }));\n scale((_b = {}, _b[xField] = xAxis, _b[yField[1]] = yAxis[1], _b))(deepAssign({}, params, {\n chart: findViewById(chart, RIGHT_AXES_VIEW)\n }));\n return params;\n}\n/**\n * axis 配置\n * @param params\n */\nexport function axis(params) {\n var chart = params.chart,\n options = params.options;\n var leftView = findViewById(chart, LEFT_AXES_VIEW);\n var rightView = findViewById(chart, RIGHT_AXES_VIEW);\n var xField = options.xField,\n yField = options.yField,\n xAxis = options.xAxis,\n yAxis = options.yAxis;\n chart.axis(xField, false);\n chart.axis(yField[0], false);\n chart.axis(yField[1], false);\n // 左 View\n leftView.axis(xField, xAxis);\n leftView.axis(yField[0], getYAxisWithDefault(yAxis[0], AxisType.Left));\n // 右 Y 轴\n rightView.axis(xField, false);\n rightView.axis(yField[1], getYAxisWithDefault(yAxis[1], AxisType.Right));\n return params;\n}\n/**\n * tooltip 配置\n * @param params\n */\nexport function tooltip(params) {\n var chart = params.chart,\n options = params.options;\n var tooltip = options.tooltip;\n var leftView = findViewById(chart, LEFT_AXES_VIEW);\n var rightView = findViewById(chart, RIGHT_AXES_VIEW);\n // tooltip 经过 getDefaultOption 处理后,一定不为 undefined\n chart.tooltip(tooltip);\n // 在 view 上添加 tooltip,使得 shared 和 interaction active-region 起作用\n // view 应该继承 chart 里的 shared,但是从表现看来,继承有点问题\n leftView.tooltip({\n shared: true\n });\n rightView.tooltip({\n shared: true\n });\n return params;\n}\n/**\n * interaction 配置\n * @param params\n */\nexport function interaction(params) {\n var chart = params.chart;\n commonInteraction(deepAssign({}, params, {\n chart: findViewById(chart, LEFT_AXES_VIEW)\n }));\n commonInteraction(deepAssign({}, params, {\n chart: findViewById(chart, RIGHT_AXES_VIEW)\n }));\n return params;\n}\n/**\n * annotation 配置\n * @param params\n */\nexport function annotation(params) {\n var chart = params.chart,\n options = params.options;\n var annotations = options.annotations;\n var a1 = get(annotations, [0]);\n var a2 = get(annotations, [1]);\n commonAnnotation(a1)(deepAssign({}, params, {\n chart: findViewById(chart, LEFT_AXES_VIEW),\n options: {\n annotations: a1\n }\n }));\n commonAnnotation(a2)(deepAssign({}, params, {\n chart: findViewById(chart, RIGHT_AXES_VIEW),\n options: {\n annotations: a2\n }\n }));\n return params;\n}\nexport function theme(params) {\n var chart = params.chart;\n /*\n * 双轴图中,部分组件是绘制在子 view 层(例如 axis,line),部分组件是绘制在 chart (例如 legend)\n * 为 chart 和 子 view 均注册 theme,使其自行遵循 G2 theme geometry > view > chart 进行渲染。\n */\n commonTheme(deepAssign({}, params, {\n chart: findViewById(chart, LEFT_AXES_VIEW)\n }));\n commonTheme(deepAssign({}, params, {\n chart: findViewById(chart, RIGHT_AXES_VIEW)\n }));\n commonTheme(params);\n return params;\n}\nexport function animation(params) {\n var chart = params.chart;\n commonAnimation(deepAssign({}, params, {\n chart: findViewById(chart, LEFT_AXES_VIEW)\n }));\n commonAnimation(deepAssign({}, params, {\n chart: findViewById(chart, RIGHT_AXES_VIEW)\n }));\n return params;\n}\n/**\n * 双轴图 limitInPlot\n * @param params\n */\nexport function limitInPlot(params) {\n var chart = params.chart,\n options = params.options;\n var yAxis = options.yAxis;\n commonLimitInPlot(deepAssign({}, params, {\n chart: findViewById(chart, LEFT_AXES_VIEW),\n options: {\n yAxis: yAxis[0]\n }\n }));\n commonLimitInPlot(deepAssign({}, params, {\n chart: findViewById(chart, RIGHT_AXES_VIEW),\n options: {\n yAxis: yAxis[1]\n }\n }));\n return params;\n}\n/**\n * legend 配置\n * 使用 custom,便于和类似于分组柱状图-单折线图的逻辑统一\n * @param params\n */\nexport function legend(params) {\n var chart = params.chart,\n options = params.options;\n var legend = options.legend,\n geometryOptions = options.geometryOptions,\n yField = options.yField,\n data = options.data;\n var leftView = findViewById(chart, LEFT_AXES_VIEW);\n var rightView = findViewById(chart, RIGHT_AXES_VIEW);\n if (legend === false) {\n chart.legend(false);\n } else if (isObject(legend) && legend.custom === true) {\n chart.legend(legend);\n } else {\n var leftLegend_1 = get(geometryOptions, [0, 'legend'], legend);\n var rightLegend_1 = get(geometryOptions, [1, 'legend'], legend);\n // 均使用自定义图例\n chart.once('beforepaint', function () {\n var leftItems = data[0].length ? getViewLegendItems({\n view: leftView,\n geometryOption: geometryOptions[0],\n yField: yField[0],\n legend: leftLegend_1\n }) : [];\n var rightItems = data[1].length ? getViewLegendItems({\n view: rightView,\n geometryOption: geometryOptions[1],\n yField: yField[1],\n legend: rightLegend_1\n }) : [];\n chart.legend(deepAssign({}, legend, {\n custom: true,\n // todo 修改类型定义\n // @ts-ignore\n items: leftItems.concat(rightItems)\n }));\n });\n if (geometryOptions[0].seriesField) {\n leftView.legend(geometryOptions[0].seriesField, leftLegend_1);\n }\n if (geometryOptions[1].seriesField) {\n rightView.legend(geometryOptions[1].seriesField, rightLegend_1);\n }\n // 自定义图例交互\n chart.on('legend-item:click', function (evt) {\n var delegateObject = get(evt, 'gEvent.delegateObject', {});\n if (delegateObject && delegateObject.item) {\n var _a = delegateObject.item,\n field_1 = _a.value,\n isGeometry = _a.isGeometry,\n viewId = _a.viewId;\n // geometry 的时候,直接使用 view.changeVisible\n if (isGeometry) {\n var idx = findIndex(yField, function (yF) {\n return yF === field_1;\n });\n if (idx > -1) {\n var geometries = get(findViewById(chart, viewId), 'geometries');\n each(geometries, function (g) {\n g.changeVisible(!delegateObject.item.unchecked);\n });\n }\n } else {\n var legendItem_1 = get(chart.getController('legend'), 'option.items', []);\n // 分组柱线图\n each(chart.views, function (view) {\n // 单折柱图\n var groupScale = view.getGroupScales();\n each(groupScale, function (scale) {\n if (scale.values && scale.values.indexOf(field_1) > -1) {\n view.filter(scale.field, function (value) {\n var curLegendItem = find(legendItem_1, function (item) {\n return item.value === value;\n });\n // 使用 legend 中的 unchecked 来判断,使得支持关闭多个图例\n return !curLegendItem.unchecked;\n });\n }\n });\n chart.render(true);\n });\n }\n }\n });\n }\n return params;\n}\n/**\n * 双轴图 slider 适配器\n * @param params\n */\nexport function slider(params) {\n var chart = params.chart,\n options = params.options;\n var slider = options.slider;\n var leftView = findViewById(chart, LEFT_AXES_VIEW);\n var rightView = findViewById(chart, RIGHT_AXES_VIEW);\n if (slider) {\n // 左 View\n leftView.option('slider', slider);\n // 监听左侧 slider 改变事件, 同步右侧 View 视图\n leftView.on('slider:valuechanged', function (evt) {\n var _a = evt.event,\n value = _a.value,\n originValue = _a.originValue;\n if (isEqual(value, originValue)) {\n return;\n }\n doSliderFilter(rightView, value);\n });\n chart.once('afterpaint', function () {\n // 初始化数据,配置默认值时需要同步\n if (!isBoolean(slider)) {\n var start = slider.start,\n end = slider.end;\n if (start || end) {\n doSliderFilter(rightView, [start, end]);\n }\n }\n });\n }\n return params;\n}\n/**\n * 双折线图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n // transformOptions 一定在最前面处理;color legend 使用了 beforepaint,为便于理解放在最后面\n return flow(transformOptions, createViews,\n // 主题靠前设置,作为最低优先级\n theme, geometry, meta, axis, limitInPlot, tooltip, interaction, annotation, animation, color, legend, slider)(params);\n}","import { __assign } from \"tslib\";\nimport { each } from '@antv/util';\nimport { line, point } from '../../../adaptor/geometries';\nimport { deepAssign, pick } from '../../../utils';\nimport { adaptor as columnAdaptor } from '../../column/adaptor';\nimport { isColumn, isLine } from './option';\n/**\n * 绘制单个图形\n * @param params\n */\nexport function drawSingleGeometry(params) {\n var options = params.options,\n chart = params.chart;\n var geometryOption = options.geometryOption;\n var isStack = geometryOption.isStack,\n color = geometryOption.color,\n seriesField = geometryOption.seriesField,\n groupField = geometryOption.groupField,\n isGroup = geometryOption.isGroup;\n var FIELD_KEY = ['xField', 'yField'];\n if (isLine(geometryOption)) {\n // 绘制线\n line(deepAssign({}, params, {\n options: __assign(__assign(__assign({}, pick(options, FIELD_KEY)), geometryOption), {\n line: {\n color: geometryOption.color,\n style: geometryOption.lineStyle\n }\n })\n }));\n // 绘制点\n point(deepAssign({}, params, {\n options: __assign(__assign(__assign({}, pick(options, FIELD_KEY)), geometryOption), {\n point: geometryOption.point && __assign({\n color: color,\n shape: 'circle'\n }, geometryOption.point)\n })\n }));\n // adjust\n var adjust_1 = [];\n if (isGroup) {\n adjust_1.push({\n type: 'dodge',\n dodgeBy: groupField || seriesField,\n customOffset: 0\n });\n }\n if (isStack) {\n adjust_1.push({\n type: 'stack'\n });\n }\n if (adjust_1.length) {\n each(chart.geometries, function (g) {\n g.adjust(adjust_1);\n });\n }\n }\n if (isColumn(geometryOption)) {\n columnAdaptor(deepAssign({}, params, {\n options: __assign(__assign(__assign({}, pick(options, FIELD_KEY)), geometryOption), {\n widthRatio: geometryOption.columnWidthRatio,\n interval: __assign(__assign({}, pick(geometryOption, ['color'])), {\n style: geometryOption.columnStyle\n })\n })\n }));\n }\n return params;\n}","import { __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { deepAssign } from '../../utils';\nimport { adaptor } from './adaptor';\nvar DualAxes = /** @class */function (_super) {\n __extends(DualAxes, _super);\n function DualAxes() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型: 双轴图 */\n _this.type = 'dual-axes';\n return _this;\n }\n /**\n * 获取 双轴图 默认配置\n */\n DualAxes.prototype.getDefaultOptions = function () {\n return deepAssign({}, _super.prototype.getDefaultOptions.call(this), {\n yAxis: [],\n syncViewPadding: true\n });\n };\n /**\n * 获取双轴图的适配器\n */\n DualAxes.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return DualAxes;\n}(Plot);\nexport { DualAxes };","import { __assign } from \"tslib\";\nimport { each, omit } from '@antv/util';\nimport { theme } from '../../adaptor/common';\nimport { AXIS_META_CONFIG_KEYS } from '../../constant';\nimport { deepAssign, flow, pick } from '../../utils';\nimport { execPlotAdaptor } from '../mix/utils';\nimport { execViewAdaptor } from './utils';\nfunction facetAdaptor(params) {\n var chart = params.chart,\n options = params.options;\n var facetType = options.type,\n data = options.data,\n fields = options.fields,\n _eachView = options.eachView;\n var restFacetCfg = omit(options, ['type', 'data', 'fields', 'eachView', 'axes', 'meta', 'tooltip', 'coordinate', 'theme', 'legend', 'interactions', 'annotations']);\n // 1. data\n chart.data(data);\n // 2. facet\n chart.facet(facetType, __assign(__assign({}, restFacetCfg), {\n fields: fields,\n eachView: function eachView(viewOfG2, facet) {\n var viewOptions = _eachView(viewOfG2, facet);\n if (viewOptions.geometries) {\n execViewAdaptor(viewOfG2, viewOptions);\n } else {\n var plot = viewOptions;\n var plotOptions = plot.options;\n // @ts-ignore 仪表盘没 tooltip\n if (plotOptions.tooltip) {\n // 配置 tooltip 交互\n viewOfG2.interaction('tooltip');\n }\n execPlotAdaptor(plot.type, viewOfG2, plotOptions);\n }\n }\n }));\n return params;\n}\nfunction component(params) {\n var chart = params.chart,\n options = params.options;\n var axes = options.axes,\n meta = options.meta,\n tooltip = options.tooltip,\n coordinate = options.coordinate,\n theme = options.theme,\n legend = options.legend,\n interactions = options.interactions,\n annotations = options.annotations;\n // 3. meta 配置\n var scales = {};\n if (axes) {\n each(axes, function (axis, field) {\n scales[field] = pick(axis, AXIS_META_CONFIG_KEYS);\n });\n }\n scales = deepAssign({}, meta, scales);\n chart.scale(scales);\n // 4. coordinate 配置\n chart.coordinate(coordinate);\n // 5. axis 轴配置 (默认不展示)\n if (!axes) {\n chart.axis(false);\n } else {\n each(axes, function (axis, field) {\n chart.axis(field, axis);\n });\n }\n // 6. tooltip 配置\n if (tooltip) {\n chart.interaction('tooltip');\n chart.tooltip(tooltip);\n } else if (tooltip === false) {\n chart.removeInteraction('tooltip');\n }\n // 7. legend 配置(默认展示)\n chart.legend(legend);\n // theme 配置\n if (theme) {\n chart.theme(theme);\n }\n // 8. interactions\n each(interactions, function (interaction) {\n if (interaction.enable === false) {\n chart.removeInteraction(interaction.type);\n } else {\n chart.interaction(interaction.type, interaction.cfg);\n }\n });\n // 9. annotations\n each(annotations, function (annotation) {\n chart.annotation()[annotation.type](__assign({}, annotation));\n });\n return params;\n}\n/**\n * 分面图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n // flow 的方式处理所有的配置到 G2 API\n return flow(theme, facetAdaptor, component)(params);\n}","import { __assign } from \"tslib\";\nimport { each } from '@antv/util';\nimport { geometry as geometryAdaptor } from '../../adaptor/geometries/base';\nimport { AXIS_META_CONFIG_KEYS } from '../../constant';\nimport { addViewAnimation, deepAssign, pick } from '../../utils';\n/**\n *\n * @param params 分面图 参数\n * @returns facet eachView 的回调设置每个 view 的展示\n */\nexport function execViewAdaptor(viewOfG2, options) {\n var data = options.data,\n coordinate = options.coordinate,\n interactions = options.interactions,\n annotations = options.annotations,\n animation = options.animation,\n tooltip = options.tooltip,\n axes = options.axes,\n meta = options.meta,\n geometries = options.geometries;\n // 1. data, optional\n if (data) {\n viewOfG2.data(data);\n }\n // 2. meta 配置\n var scales = {};\n if (axes) {\n each(axes, function (axis, field) {\n scales[field] = pick(axis, AXIS_META_CONFIG_KEYS);\n });\n }\n scales = deepAssign({}, meta, scales);\n viewOfG2.scale(scales);\n // 3. coordinate 配置 (默认由顶层决定)\n if (coordinate) {\n viewOfG2.coordinate(coordinate);\n }\n // 4. axis 轴配置 (默认由顶层决定,但可以通过 false 强制关闭)\n if (axes === false) {\n viewOfG2.axis(false);\n } else {\n each(axes, function (axis, field) {\n viewOfG2.axis(field, axis);\n });\n }\n each(geometries, function (geometry) {\n // Geometry\n var ext = geometryAdaptor({\n chart: viewOfG2,\n options: geometry\n }).ext;\n // Geometry adjust\n var adjust = geometry.adjust;\n if (adjust) {\n ext.geometry.adjust(adjust);\n }\n });\n // 5. interactions\n each(interactions, function (interaction) {\n if (interaction.enable === false) {\n viewOfG2.removeInteraction(interaction.type);\n } else {\n viewOfG2.interaction(interaction.type, interaction.cfg);\n }\n });\n // 6. annotations\n each(annotations, function (annotation) {\n viewOfG2.annotation()[annotation.type](__assign({}, annotation));\n });\n // 7. animation (先做动画)\n addViewAnimation(viewOfG2, animation);\n if (tooltip) {\n // 8. tooltip\n viewOfG2.interaction('tooltip');\n viewOfG2.tooltip(tooltip);\n } else if (tooltip === false) {\n viewOfG2.removeInteraction('tooltip');\n }\n}","/**\n * 分面图 默认配置项\n */\nexport var DEFAULT_OPTIONS = {\n title: {\n style: {\n fontSize: 12,\n fill: 'rgba(0,0,0,0.65)'\n }\n },\n rowTitle: {\n style: {\n fontSize: 12,\n fill: 'rgba(0,0,0,0.65)'\n }\n },\n columnTitle: {\n style: {\n fontSize: 12,\n fill: 'rgba(0,0,0,0.65)'\n }\n }\n};","import { __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { adaptor } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constant';\nvar Facet = /** @class */function (_super) {\n __extends(Facet, _super);\n function Facet() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'area';\n return _this;\n }\n /**\n * 获取 分面图 默认配置项\n * 供外部使用\n */\n Facet.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * 获取 分面图 默认配置\n */\n Facet.prototype.getDefaultOptions = function () {\n return Facet.getDefaultOptions();\n };\n /**\n * 获取 分面图 的适配器\n */\n Facet.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Facet;\n}(Plot);\nexport { Facet };","import { __rest } from \"tslib\";\nimport { get, isNumber } from '@antv/util';\nimport { animation, annotation, interaction, pattern, scale, state, theme, tooltip } from '../../adaptor/common';\nimport { geometry as geometryAdaptor } from '../../adaptor/geometries/base';\nimport { deepAssign, findGeometry, flow, transformLabel } from '../../utils';\nimport { getTooltipMapping } from '../../utils/tooltip';\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var data = options.data,\n type = options.type,\n xField = options.xField,\n yField = options.yField,\n colorField = options.colorField,\n sizeField = options.sizeField,\n sizeRatio = options.sizeRatio,\n shape = options.shape,\n color = options.color,\n tooltip = options.tooltip,\n heatmapStyle = options.heatmapStyle,\n meta = options.meta;\n chart.data(data);\n var geometryType = 'polygon';\n if (type === 'density') {\n geometryType = 'heatmap';\n }\n var _a = getTooltipMapping(tooltip, [xField, yField, colorField]),\n fields = _a.fields,\n formatter = _a.formatter;\n /**\n * The ratio between the actual size and the max available size, must be in range `[0,1]`.\n *\n * If the `sizeRatio` attribute is undefined or it exceeds the range,\n * `checkedSizeRatio` would be set to 1 as default.\n */\n var checkedSizeRatio = 1;\n if (sizeRatio || sizeRatio === 0) {\n if (!shape && !sizeField) {\n console.warn('sizeRatio is not in effect: Must define shape or sizeField first');\n } else if (sizeRatio < 0 || sizeRatio > 1) {\n console.warn('sizeRatio is not in effect: It must be a number in [0,1]');\n } else {\n checkedSizeRatio = sizeRatio;\n }\n }\n geometryAdaptor(deepAssign({}, params, {\n options: {\n type: geometryType,\n colorField: colorField,\n tooltipFields: fields,\n shapeField: sizeField || '',\n label: undefined,\n mapping: {\n tooltip: formatter,\n shape: shape && (sizeField ? function (dautm) {\n var field = data.map(function (row) {\n return row[sizeField];\n });\n var _a = (meta === null || meta === void 0 ? void 0 : meta[sizeField]) || {},\n min = _a.min,\n max = _a.max;\n min = isNumber(min) ? min : Math.min.apply(Math, field);\n max = isNumber(max) ? max : Math.max.apply(Math, field);\n return [shape, (get(dautm, sizeField) - min) / (max - min), checkedSizeRatio];\n } : function () {\n return [shape, 1, checkedSizeRatio];\n }),\n color: color || colorField && chart.getTheme().sequenceColors.join('-'),\n style: heatmapStyle\n }\n }\n }));\n return params;\n}\n/**\n * meta 配置\n * @param params\n */\nfunction meta(params) {\n var _a;\n var options = params.options;\n var xAxis = options.xAxis,\n yAxis = options.yAxis,\n xField = options.xField,\n yField = options.yField;\n return flow(scale((_a = {}, _a[xField] = xAxis, _a[yField] = yAxis, _a)))(params);\n}\n/**\n * axis 配置\n * @param params\n */\nfunction axis(params) {\n var chart = params.chart,\n options = params.options;\n var xAxis = options.xAxis,\n yAxis = options.yAxis,\n xField = options.xField,\n yField = options.yField;\n // 为 false 则是不显示轴\n if (xAxis === false) {\n chart.axis(xField, false);\n } else {\n chart.axis(xField, xAxis);\n }\n if (yAxis === false) {\n chart.axis(yField, false);\n } else {\n chart.axis(yField, yAxis);\n }\n return params;\n}\n/**\n * legend 配置\n * @param params\n */\nfunction legend(params) {\n var chart = params.chart,\n options = params.options;\n var legend = options.legend,\n colorField = options.colorField,\n sizeField = options.sizeField,\n sizeLegend = options.sizeLegend;\n /** legend 不为 false, 则展示图例, 优先展示 color 分类图例 */\n var showLegend = legend !== false;\n if (colorField) {\n chart.legend(colorField, showLegend ? legend : false);\n }\n // 旧版本: 有 sizeField 就有 sizeLegend. 这里默认继承下 legend 配置\n if (sizeField) {\n chart.legend(sizeField, sizeLegend === undefined ? legend : sizeLegend);\n }\n /** 默认没有 sizeField,则隐藏连续图例 */\n if (!showLegend && !sizeLegend) {\n chart.legend(false);\n }\n return params;\n}\n/**\n * fixme 后续确认下,数据标签的逻辑为啥和通用的不一致\n * 数据标签\n * @param params\n */\nfunction label(params) {\n var chart = params.chart,\n options = params.options;\n var label = options.label,\n colorField = options.colorField,\n type = options.type;\n var geometry = findGeometry(chart, type === 'density' ? 'heatmap' : 'polygon');\n if (!label) {\n geometry.label(false);\n } else if (colorField) {\n var callback = label.callback,\n cfg = __rest(label, [\"callback\"]);\n geometry.label({\n fields: [colorField],\n callback: callback,\n cfg: transformLabel(cfg)\n });\n }\n return params;\n}\n/**\n * 极坐标\n * @param params\n */\nfunction coordinate(params) {\n var _a, _b;\n var chart = params.chart,\n options = params.options;\n var coordinate = options.coordinate,\n reflect = options.reflect;\n var coordinateOption = deepAssign({\n actions: []\n }, coordinate !== null && coordinate !== void 0 ? coordinate : {\n type: 'rect'\n });\n if (reflect) {\n (_b = (_a = coordinateOption.actions) === null || _a === void 0 ? void 0 : _a.push) === null || _b === void 0 ? void 0 : _b.call(_a, ['reflect', reflect]);\n }\n chart.coordinate(coordinateOption);\n return params;\n}\n/**\n * 热力图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n // flow 的方式处理所有的配置到 G2 API\n return flow(theme, pattern('heatmapStyle'), meta, coordinate, geometry, axis, legend, tooltip, label, annotation(), interaction, animation, state)(params);\n}","import { Plot } from '../../core/plot';\nimport { deepAssign } from '../../utils';\n/**\n * 色块图默认配置项\n */\nexport var DEFAULT_OPTIONS = deepAssign({}, Plot.getDefaultOptions(), {\n type: 'polygon',\n legend: false,\n coordinate: {\n type: 'rect'\n },\n xAxis: {\n tickLine: null,\n line: null,\n grid: {\n alignTick: false,\n line: {\n style: {\n lineWidth: 1,\n lineDash: null,\n stroke: '#f0f0f0'\n }\n }\n }\n },\n yAxis: {\n grid: {\n alignTick: false,\n line: {\n style: {\n lineWidth: 1,\n lineDash: null,\n stroke: '#f0f0f0'\n }\n }\n }\n }\n});","import { __assign } from \"tslib\";\nimport { registerShape } from '@antv/g2';\nregisterShape('polygon', 'circle', {\n draw: function draw(cfg, group) {\n var _a, _b;\n var cx = cfg.x;\n var cy = cfg.y;\n var points = this.parsePoints(cfg.points);\n var width = Math.abs(points[2].x - points[1].x);\n var height = Math.abs(points[1].y - points[0].y);\n var maxRadius = Math.min(width, height) / 2;\n var value = Number(cfg.shape[1]);\n var sizeRatio = Number(cfg.shape[2]);\n var radiusRatio = Math.sqrt(sizeRatio);\n var radius = maxRadius * radiusRatio * Math.sqrt(value);\n var fill = ((_a = cfg.style) === null || _a === void 0 ? void 0 : _a.fill) || cfg.color || ((_b = cfg.defaultStyle) === null || _b === void 0 ? void 0 : _b.fill);\n var polygon = group.addShape('circle', {\n attrs: __assign(__assign(__assign({\n x: cx,\n y: cy,\n r: radius\n }, cfg.defaultStyle), cfg.style), {\n fill: fill\n })\n });\n return polygon;\n }\n});","import { __assign } from \"tslib\";\nimport { registerShape } from '@antv/g2';\nregisterShape('polygon', 'square', {\n draw: function draw(cfg, group) {\n var _a, _b;\n var cx = cfg.x;\n var cy = cfg.y;\n var points = this.parsePoints(cfg.points);\n var width = Math.abs(points[2].x - points[1].x);\n var height = Math.abs(points[1].y - points[0].y);\n var maxSideLength = Math.min(width, height);\n var value = Number(cfg.shape[1]);\n var sizeRatio = Number(cfg.shape[2]);\n var lenRatio = Math.sqrt(sizeRatio);\n var sideLength = maxSideLength * lenRatio * Math.sqrt(value);\n var fill = ((_a = cfg.style) === null || _a === void 0 ? void 0 : _a.fill) || cfg.color || ((_b = cfg.defaultStyle) === null || _b === void 0 ? void 0 : _b.fill);\n var polygon = group.addShape('rect', {\n attrs: __assign(__assign(__assign({\n x: cx - sideLength / 2,\n y: cy - sideLength / 2,\n width: sideLength,\n height: sideLength\n }, cfg.defaultStyle), cfg.style), {\n fill: fill\n })\n });\n return polygon;\n }\n});","import { __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { adaptor } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constant';\n// registered shapes\nimport './shapes/circle';\nimport './shapes/square';\nvar Heatmap = /** @class */function (_super) {\n __extends(Heatmap, _super);\n function Heatmap() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'heatmap';\n return _this;\n }\n /**\n * 获取 柱形图 默认配置项\n * 供外部使用\n */\n Heatmap.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * 获取直方图的适配器\n */\n Heatmap.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n /**\n * 获取 色块图 默认配置\n */\n Heatmap.prototype.getDefaultOptions = function () {\n return Heatmap.getDefaultOptions();\n };\n return Heatmap;\n}(Plot);\nexport { Heatmap };","var CAT_VALUE = 'liquid';\n/**\n * 获取水波图数据\n */\nexport function getLiquidData(percent) {\n return [{\n percent: percent,\n type: CAT_VALUE\n }];\n}","import { __assign } from \"tslib\";\nimport { get, isNil } from '@antv/util';\nimport { animation, interaction, pattern, scale, theme } from '../../adaptor/common';\nimport { interval } from '../../adaptor/geometries';\nimport { deepAssign, flow, renderStatistic } from '../../utils';\nimport { getLiquidData } from './utils';\n/**\n * geometry 处理\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var percent = options.percent,\n liquidStyle = options.liquidStyle,\n radius = options.radius,\n outline = options.outline,\n wave = options.wave,\n shape = options.shape,\n shapeStyle = options.shapeStyle,\n animation = options.animation;\n chart.scale({\n percent: {\n min: 0,\n max: 1\n }\n });\n chart.data(getLiquidData(percent));\n var color = options.color || chart.getTheme().defaultColor;\n var p = deepAssign({}, params, {\n options: {\n xField: 'type',\n yField: 'percent',\n // radius 放到 columnWidthRatio 中。\n // 保证横向的大小是根据 radius 生成的\n widthRatio: radius,\n interval: {\n color: color,\n style: liquidStyle,\n shape: 'liquid-fill-gauge'\n }\n }\n });\n var ext = interval(p).ext;\n var geometry = ext.geometry;\n var background = chart.getTheme().background;\n var customInfo = {\n percent: percent,\n radius: radius,\n outline: outline,\n wave: wave,\n shape: shape,\n shapeStyle: shapeStyle,\n background: background,\n animation: animation\n };\n // 将 radius 传入到自定义 shape 中\n geometry.customInfo(customInfo);\n // 关闭组件\n chart.legend(false);\n chart.axis(false);\n chart.tooltip(false);\n return params;\n}\n/**\n * 统计指标文档\n * @param params\n */\nexport function statistic(params, updated) {\n var chart = params.chart,\n options = params.options;\n var statistic = options.statistic,\n percent = options.percent,\n meta = options.meta;\n // 先清空标注,再重新渲染\n chart.getController('annotation').clear(true);\n var metaFormatter = get(meta, ['percent', 'formatter']) || function (v) {\n return \"\".concat((v * 100).toFixed(2), \"%\");\n };\n var contentOpt = statistic.content;\n if (contentOpt) {\n contentOpt = deepAssign({}, contentOpt, {\n content: !isNil(contentOpt.content) ? contentOpt.content : metaFormatter(percent)\n });\n }\n renderStatistic(chart, {\n statistic: __assign(__assign({}, statistic), {\n content: contentOpt\n }),\n plotType: 'liquid'\n }, {\n percent: percent\n });\n if (updated) {\n chart.render(true);\n }\n return params;\n}\n/**\n * 水波图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n // flow 的方式处理所有的配置到 G2 API (主题前置,会影响绘制的取色)\n return flow(theme, pattern('liquidStyle'), geometry, statistic, scale({}), animation, interaction)(params);\n}","/**\n * 水波图默认配置项\n */\nexport var DEFAULT_OPTIONS = {\n radius: 0.9,\n statistic: {\n title: false,\n content: {\n style: {\n opacity: 0.75,\n fontSize: '30px',\n lineHeight: '30px',\n textAlign: 'center'\n }\n }\n },\n outline: {\n border: 2,\n distance: 0\n },\n wave: {\n count: 3,\n length: 192\n },\n shape: 'circle'\n};","import { __assign } from \"tslib\";\nimport { registerShape } from '@antv/g2';\nimport { isNumber, mix, reduce } from '@antv/util';\nimport { transform } from '../../../utils/matrix';\nvar DURATION = 5000;\n/**\n * 一个线性映射的函数\n * @param min\n * @param max\n * @param factor\n */\nfunction lerp(min, max, factor) {\n return min + (max - min) * factor;\n}\n/**\n * 波浪的 attrs\n * @param cfg\n */\nfunction getFillAttrs(cfg) {\n var attrs = __assign({\n opacity: 1\n }, cfg.style);\n if (cfg.color && !attrs.fill) {\n attrs.fill = cfg.color;\n }\n return attrs;\n}\n/**\n * shape 的 attrs\n * @param cfg\n */\nfunction getLineAttrs(cfg) {\n var defaultAttrs = {\n fill: '#fff',\n fillOpacity: 0,\n lineWidth: 4\n };\n var attrs = mix({}, defaultAttrs, cfg.style);\n if (cfg.color && !attrs.stroke) {\n attrs.stroke = cfg.color;\n }\n if (isNumber(cfg.opacity)) {\n attrs.opacity = attrs.strokeOpacity = cfg.opacity;\n }\n return attrs;\n}\n/**\n * 用贝塞尔曲线模拟正弦波\n * Using Bezier curves to fit sine wave.\n * There is 4 control points for each curve of wave,\n * which is at 1/4 wave length of the sine wave.\n *\n * The control points for a wave from (a) to (d) are a-b-c-d:\n * c *----* d\n * b *\n * |\n * ... a * ..................\n *\n * whose positions are a: (0, 0), b: (0.5, 0.5), c: (1, 1), d: (PI / 2, 1)\n *\n * @param x x position of the left-most point (a)\n * @param stage 0-3, stating which part of the wave it is\n * @param waveLength wave length of the sine wave\n * @param amplitude wave amplitude\n * @return 正弦片段曲线\n */\nfunction getWaterWavePositions(x, stage, waveLength, amplitude) {\n if (stage === 0) {\n return [[x + 1 / 2 * waveLength / Math.PI / 2, amplitude / 2], [x + 1 / 2 * waveLength / Math.PI, amplitude], [x + waveLength / 4, amplitude]];\n }\n if (stage === 1) {\n return [[x + 1 / 2 * waveLength / Math.PI / 2 * (Math.PI - 2), amplitude], [x + 1 / 2 * waveLength / Math.PI / 2 * (Math.PI - 1), amplitude / 2], [x + waveLength / 4, 0]];\n }\n if (stage === 2) {\n return [[x + 1 / 2 * waveLength / Math.PI / 2, -amplitude / 2], [x + 1 / 2 * waveLength / Math.PI, -amplitude], [x + waveLength / 4, -amplitude]];\n }\n return [[x + 1 / 2 * waveLength / Math.PI / 2 * (Math.PI - 2), -amplitude], [x + 1 / 2 * waveLength / Math.PI / 2 * (Math.PI - 1), -amplitude / 2], [x + waveLength / 4, 0]];\n}\n/**\n * 获取水波路径\n * @param radius 半径\n * @param waterLevel 水位\n * @param waveLength 波长\n * @param phase 相位\n * @param amplitude 震幅\n * @param cx 圆心x\n * @param cy 圆心y\n * @return path 路径\n * @reference http://gitlab.alipay-inc.com/datavis/g6/blob/1.2.0/src/graph/utils/path.js#L135\n */\nfunction getWaterWavePath(radius, waterLevel, waveLength, phase, amplitude, cx, cy) {\n var curves = Math.ceil(2 * radius / waveLength * 4) * 4;\n var path = [];\n var _phase = phase;\n // map phase to [-Math.PI * 2, 0]\n while (_phase < -Math.PI * 2) {\n _phase += Math.PI * 2;\n }\n while (_phase > 0) {\n _phase -= Math.PI * 2;\n }\n _phase = _phase / Math.PI / 2 * waveLength;\n var left = cx - radius + _phase - radius * 2;\n /**\n * top-left corner as start point\n *\n * draws this point\n * |\n * \\|/\n * ~~~~~~~~\n * | |\n * +------+\n */\n path.push(['M', left, waterLevel]);\n /**\n * top wave\n *\n * ~~~~~~~~ <- draws this sine wave\n * | |\n * +------+\n */\n var waveRight = 0;\n for (var c = 0; c < curves; ++c) {\n var stage = c % 4;\n var pos = getWaterWavePositions(c * waveLength / 4, stage, waveLength, amplitude);\n path.push(['C', pos[0][0] + left, -pos[0][1] + waterLevel, pos[1][0] + left, -pos[1][1] + waterLevel, pos[2][0] + left, -pos[2][1] + waterLevel]);\n if (c === curves - 1) {\n waveRight = pos[2][0];\n }\n }\n /**\n * top-right corner\n *\n * ~~~~~~~~\n * 3. draws this line -> | | <- 1. draws this line\n * +------+\n * ^\n * |\n * 2. draws this line\n */\n path.push(['L', waveRight + left, cy + radius]);\n path.push(['L', left, cy + radius]);\n path.push(['Z']);\n // path.push(['L', left, waterLevel]);\n return path;\n}\n/**\n * 添加水波\n * @param x 中心x\n * @param y 中心y\n * @param level 水位等级 0~1\n * @param waveCount 水波数\n * @param waveAttrs 色值\n * @param group 图组\n * @param clip 用于剪切的图形\n * @param radius 绘制图形的高度\n * @param waveLength 波的长度\n */\nexport function addWaterWave(x, y, level, waveCount, waveAttrs, group, clip, radius, waveLength, animation) {\n // 盒子属性 颜色 宽高\n var fill = waveAttrs.fill,\n opacity = waveAttrs.opacity;\n var bbox = clip.getBBox();\n var width = bbox.maxX - bbox.minX;\n var height = bbox.maxY - bbox.minY;\n // 循环 waveCount 个数\n for (var idx = 0; idx < waveCount; idx++) {\n var factor = waveCount <= 1 ? 1 : idx / (waveCount - 1);\n // 画波\n var wave = group.addShape('path', {\n name: \"waterwave-path\",\n attrs: {\n // 波形路径配置\n path: getWaterWavePath(radius, bbox.minY + height * level, waveLength, 0, width / 32,\n // 波幅高度\n x, y),\n fill: fill,\n opacity: lerp(0.2, 0.9, factor) * opacity\n }\n });\n try {\n // 默认 underfind 开启动画\n if (animation === false) return;\n var matrix = transform([['t', waveLength, 0]]);\n wave.stopAnimate();\n wave.animate({\n matrix: matrix\n }, {\n duration: lerp(0.5 * DURATION, DURATION, factor),\n repeat: true\n });\n } catch (e) {\n // TODO off-screen canvas 中动画会找不到 canvas\n console.warn('off-screen group animate error!');\n }\n }\n}\n/**\n *\n * @param x 中心 x\n * @param y 中心 y\n * @param width 外接矩形的宽\n * @param height 外接矩形的高\n */\nfunction pin(x, y, width, height) {\n var w = width * 2 / 3;\n var h = Math.max(w, height);\n var r = w / 2;\n // attrs of the upper circle\n var cx = x;\n var cy = r + y - h / 2;\n var theta = Math.asin(r / ((h - r) * 0.85));\n var dy = Math.sin(theta) * r;\n var dx = Math.cos(theta) * r;\n // the start point of the path\n var x0 = cx - dx;\n var y0 = cy + dy;\n // control point\n var cpX = x;\n var cpY = cy + r / Math.sin(theta);\n return \"\\n M \".concat(x0, \" \").concat(y0, \"\\n A \").concat(r, \" \").concat(r, \" 0 1 1 \").concat(x0 + dx * 2, \" \").concat(y0, \"\\n Q \").concat(cpX, \" \").concat(cpY, \" \").concat(x, \" \").concat(y + h / 2, \"\\n Q \").concat(cpX, \" \").concat(cpY, \" \").concat(x0, \" \").concat(y0, \"\\n Z \\n \");\n}\n/**\n *\n * @param x 中心 x\n * @param y 中心 y\n * @param width 外接矩形的宽\n * @param height 外接矩形的高\n */\nfunction circle(x, y, width, height) {\n var rx = width / 2;\n var ry = height / 2;\n return \"\\n M \".concat(x, \" \").concat(y - ry, \" \\n a \").concat(rx, \" \").concat(ry, \" 0 1 0 0 \").concat(ry * 2, \"\\n a \").concat(rx, \" \").concat(ry, \" 0 1 0 0 \").concat(-ry * 2, \"\\n Z\\n \");\n}\n/**\n *\n * @param x 中心 x\n * @param y 中心 y\n * @param width 外接矩形的宽\n * @param height 外接矩形的高\n */\nfunction diamond(x, y, width, height) {\n var h = height / 2;\n var w = width / 2;\n return \"\\n M \".concat(x, \" \").concat(y - h, \"\\n L \").concat(x + w, \" \").concat(y, \"\\n L \").concat(x, \" \").concat(y + h, \"\\n L \").concat(x - w, \" \").concat(y, \"\\n Z\\n \");\n}\n/**\n *\n * @param x 中心 x\n * @param y 中心 y\n * @param width 外接矩形的宽\n * @param height 外接矩形的高\n */\nfunction triangle(x, y, width, height) {\n var h = height / 2;\n var w = width / 2;\n return \"\\n M \".concat(x, \" \").concat(y - h, \"\\n L \").concat(x + w, \" \").concat(y + h, \"\\n L \").concat(x - w, \" \").concat(y + h, \"\\n Z\\n \");\n}\n/**\n *\n * @param x 中心 x\n * @param y 中心 y\n * @param width 外接矩形的宽\n * @param height 外接矩形的高\n */\nfunction rect(x, y, width, height) {\n var GOLDEN_SECTION_RATIO = 0.618;\n var h = height / 2;\n var w = width / 2 * GOLDEN_SECTION_RATIO;\n return \"\\n M \".concat(x - w, \" \").concat(y - h, \"\\n L \").concat(x + w, \" \").concat(y - h, \"\\n L \").concat(x + w, \" \").concat(y + h, \"\\n L \").concat(x - w, \" \").concat(y + h, \"\\n Z\\n \");\n}\nvar builtInShapeByName = {\n pin: pin,\n circle: circle,\n diamond: diamond,\n triangle: triangle,\n rect: rect\n};\nregisterShape('interval', 'liquid-fill-gauge', {\n draw: function draw(cfg, container) {\n var cx = 0.5;\n var cy = 0.5;\n var customInfo = cfg.customInfo;\n var _a = customInfo,\n percent = _a.percent,\n radio = _a.radius,\n shape = _a.shape,\n shapeStyle = _a.shapeStyle,\n background = _a.background,\n animation = _a.animation;\n var outline = customInfo.outline;\n var wave = customInfo.wave;\n var border = outline.border,\n distance = outline.distance;\n var waveCount = wave.count,\n waveLength = wave.length;\n // 获取最小 minX\n var minX = reduce(cfg.points, function (r, p) {\n return Math.min(r, p.x);\n }, Infinity);\n var center = this.parsePoint({\n x: cx,\n y: cy\n });\n var minXPoint = this.parsePoint({\n x: minX,\n y: cy\n });\n var halfWidth = center.x - minXPoint.x;\n // 保证半径是 画布宽高最小值的 radius 值\n var radius = Math.min(halfWidth, minXPoint.y * radio);\n var waveAttrs = getFillAttrs(cfg);\n var outlineAttrs = getLineAttrs(mix({}, cfg, outline));\n var innerRadius = radius - border / 2;\n var buildPath = typeof shape === 'function' ? shape : builtInShapeByName[shape] || builtInShapeByName['circle'];\n var shapePath = buildPath(center.x, center.y, innerRadius * 2, innerRadius * 2);\n // 1. 当 shapeStyle 不为空时,绘制形状样式作为背景\n if (shapeStyle) {\n container.addShape('path', {\n name: 'shape',\n attrs: __assign({\n path: shapePath\n }, shapeStyle)\n });\n }\n // 比例大于 0 时才绘制水波\n if (percent > 0) {\n // 2. 绘制一个波\n var waves = container.addGroup({\n name: 'waves'\n });\n // 3. 波对应的 clip 裁剪形状\n var clipPath = waves.setClip({\n type: 'path',\n attrs: {\n path: shapePath\n }\n });\n // 4. 绘制波形\n addWaterWave(center.x, center.y, 1 - cfg.points[1].y, waveCount, waveAttrs, waves, clipPath, radius * 2, waveLength, animation);\n }\n // 5. 绘制一个 distance 宽的 border\n container.addShape('path', {\n name: 'distance',\n attrs: {\n path: shapePath,\n fill: 'transparent',\n lineWidth: border + distance * 2,\n stroke: background === 'transparent' ? '#fff' : background\n }\n });\n // 6. 绘制一个 border 宽的 border\n container.addShape('path', {\n name: 'wrap',\n attrs: mix(outlineAttrs, {\n path: shapePath,\n fill: 'transparent',\n lineWidth: border\n })\n });\n return container;\n }\n});","import { __extends } from \"tslib\";\nimport { Event, VIEW_LIFE_CIRCLE } from '@antv/g2';\nimport { Plot } from '../../core/plot';\nimport { adaptor, statistic } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constants';\n// register liquid shape\nimport './shapes/liquid';\nimport { getLiquidData } from './utils';\nexport { addWaterWave } from './shapes/liquid';\n/**\n * 传说中的水波图\n */\nvar Liquid = /** @class */function (_super) {\n __extends(Liquid, _super);\n function Liquid() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'liquid';\n return _this;\n }\n /**\n * 获取 饼图 默认配置项\n * 供外部使用\n */\n Liquid.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * 获取 水波图 默认配置项, 供 base 获取\n */\n Liquid.prototype.getDefaultOptions = function () {\n return Liquid.getDefaultOptions();\n };\n /**\n * 更新数据\n * @param percent\n */\n Liquid.prototype.changeData = function (percent) {\n this.chart.emit(VIEW_LIFE_CIRCLE.BEFORE_CHANGE_DATA, Event.fromData(this.chart, VIEW_LIFE_CIRCLE.BEFORE_CHANGE_DATA, null));\n this.updateOption({\n percent: percent\n });\n this.chart.data(getLiquidData(percent));\n statistic({\n chart: this.chart,\n options: this.options\n }, true);\n this.chart.emit(VIEW_LIFE_CIRCLE.AFTER_CHANGE_DATA, Event.fromData(this.chart, VIEW_LIFE_CIRCLE.AFTER_CHANGE_DATA, null));\n };\n /**\n * 获取适配器\n */\n Liquid.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Liquid;\n}(Plot);\nexport { Liquid };","import { __assign, __rest } from \"tslib\";\nimport { animation, annotation, interaction, legend, scale, theme, tooltip } from '../../adaptor/common';\nimport { area, line, point } from '../../adaptor/geometries';\nimport { deepAssign, findGeometry, flow, transformLabel } from '../../utils';\n/**\n * geometry 配置处理\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var data = options.data,\n lineStyle = options.lineStyle,\n color = options.color,\n pointOptions = options.point,\n areaOptions = options.area;\n chart.data(data);\n // 雷达图 主 geometry\n var primary = deepAssign({}, params, {\n options: {\n line: {\n style: lineStyle,\n color: color\n },\n point: pointOptions ? __assign({\n color: color\n }, pointOptions) : pointOptions,\n area: areaOptions ? __assign({\n color: color\n }, areaOptions) : areaOptions,\n // label 不传递给各个 geometry adaptor,由 label adaptor 处理\n label: undefined\n }\n });\n // 副 Geometry\n var second = deepAssign({}, primary, {\n options: {\n tooltip: false\n }\n });\n // 优先使用 point.state, 其次取主元素的 state 状态样式配置\n var pointState = (pointOptions === null || pointOptions === void 0 ? void 0 : pointOptions.state) || options.state;\n var pointParams = deepAssign({}, primary, {\n options: {\n tooltip: false,\n state: pointState\n }\n });\n line(primary);\n point(pointParams);\n area(second);\n return params;\n}\n/**\n * meta 配置\n * @param params\n */\nfunction meta(params) {\n var _a;\n var options = params.options;\n var xAxis = options.xAxis,\n yAxis = options.yAxis,\n xField = options.xField,\n yField = options.yField;\n return flow(scale((_a = {}, _a[xField] = xAxis, _a[yField] = yAxis, _a)))(params);\n}\n/**\n * coord 配置\n * @param params\n */\nfunction coord(params) {\n var chart = params.chart,\n options = params.options;\n var radius = options.radius,\n startAngle = options.startAngle,\n endAngle = options.endAngle;\n chart.coordinate('polar', {\n radius: radius,\n startAngle: startAngle,\n endAngle: endAngle\n });\n return params;\n}\n/**\n * axis 配置\n * @param params\n */\nfunction axis(params) {\n var chart = params.chart,\n options = params.options;\n var xField = options.xField,\n xAxis = options.xAxis,\n yField = options.yField,\n yAxis = options.yAxis;\n chart.axis(xField, xAxis);\n chart.axis(yField, yAxis);\n return params;\n}\n/**\n * label 配置\n * @param params\n */\nfunction label(params) {\n var chart = params.chart,\n options = params.options;\n var label = options.label,\n yField = options.yField;\n var geometry = findGeometry(chart, 'line');\n if (!label) {\n geometry.label(false);\n } else {\n var callback = label.callback,\n cfg = __rest(label, [\"callback\"]);\n geometry.label({\n fields: [yField],\n callback: callback,\n cfg: transformLabel(cfg)\n });\n }\n return params;\n}\n/**\n * 雷达图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n // flow 的方式处理所有的配置到 G2 API\n return flow(geometry, meta, theme, coord, axis, legend, tooltip, label, interaction, animation, annotation())(params);\n}","import { __assign, __extends } from \"tslib\";\nimport { Action, registerComponentController, TooltipController, Util } from '@antv/g2';\nimport { isNil } from '@antv/util';\nvar RadarTooltipController = /** @class */function (_super) {\n __extends(RadarTooltipController, _super);\n function RadarTooltipController() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(RadarTooltipController.prototype, \"name\", {\n get: function get() {\n return 'radar-tooltip';\n },\n enumerable: false,\n configurable: true\n });\n RadarTooltipController.prototype.getTooltipItems = function (point) {\n var _a = this.getTooltipCfg(),\n shared = _a.shared,\n cfgTitle = _a.title;\n var hintItems = _super.prototype.getTooltipItems.call(this, point);\n if (hintItems.length > 0) {\n var geometry_1 = this.view.geometries[0];\n var dataArray = geometry_1.dataArray;\n var title_1 = hintItems[0].name;\n var result_1 = [];\n dataArray.forEach(function (mappingData) {\n mappingData.forEach(function (d) {\n var items = Util.getTooltipItems(d, geometry_1);\n var item = items[0];\n if (!shared && item && item.name === title_1) {\n var displayTitle = isNil(cfgTitle) ? title_1 : cfgTitle;\n result_1.push(__assign(__assign({}, item), {\n name: item.title,\n title: displayTitle\n }));\n } else if (shared && item) {\n var displayTitle = isNil(cfgTitle) ? item.name || title_1 : cfgTitle;\n result_1.push(__assign(__assign({}, item), {\n name: item.title,\n title: displayTitle\n }));\n }\n });\n });\n return result_1;\n }\n return [];\n };\n return RadarTooltipController;\n}(TooltipController);\nexport { RadarTooltipController };\nregisterComponentController('radar-tooltip', RadarTooltipController);\n/**\n * 雷达图 tooltip 激活 action\n */\nvar RadarTooltipAction = /** @class */function (_super) {\n __extends(RadarTooltipAction, _super);\n function RadarTooltipAction() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n RadarTooltipAction.prototype.init = function () {\n var view = this.context.view;\n view.removeInteraction('tooltip');\n };\n RadarTooltipAction.prototype.show = function () {\n var event = this.context.event;\n var controller = this.getTooltipController();\n controller.showTooltip({\n x: event.x,\n y: event.y\n });\n };\n RadarTooltipAction.prototype.hide = function () {\n var controller = this.getTooltipController();\n controller.hideTooltip();\n };\n RadarTooltipAction.prototype.getTooltipController = function () {\n var view = this.context.view;\n return view.getController('radar-tooltip');\n };\n return RadarTooltipAction;\n}(Action);\nexport { RadarTooltipAction };","import { registerAction, registerInteraction } from '@antv/g2';\nimport { RadarTooltipAction } from './radar-tooltip-action';\nregisterAction('radar-tooltip', RadarTooltipAction);\nregisterInteraction('radar-tooltip', {\n start: [{\n trigger: 'plot:mousemove',\n action: 'radar-tooltip:show'\n }],\n end: [{\n trigger: 'plot:mouseleave',\n action: 'radar-tooltip:hide'\n }]\n});","import { __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { deepAssign } from '../../utils';\nimport { adaptor } from './adaptor';\nimport './interactions';\nvar Radar = /** @class */function (_super) {\n __extends(Radar, _super);\n function Radar() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'radar';\n return _this;\n }\n /**\n * @override\n * @param data\n */\n Radar.prototype.changeData = function (data) {\n this.updateOption({\n data: data\n });\n this.chart.changeData(data);\n };\n /**\n * 获取 雷达图 默认配置\n */\n Radar.prototype.getDefaultOptions = function () {\n return deepAssign({}, _super.prototype.getDefaultOptions.call(this), {\n xAxis: {\n label: {\n offset: 15\n },\n grid: {\n line: {\n type: 'line'\n }\n }\n },\n yAxis: {\n grid: {\n line: {\n type: 'circle'\n }\n }\n },\n legend: {\n position: 'top'\n },\n tooltip: {\n shared: true,\n showCrosshairs: true,\n showMarkers: true,\n crosshairs: {\n type: 'xy',\n line: {\n style: {\n stroke: '#565656',\n lineDash: [4]\n }\n },\n follow: true\n }\n }\n });\n };\n /**\n * 获取 雷达图 的适配器\n */\n Radar.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Radar;\n}(Plot);\nexport { Radar };","import { __assign } from \"tslib\";\nexport function getScaleMax(maxAngle, yField, data) {\n var yData = data.map(function (item) {\n return item[yField];\n }).filter(function (v) {\n return v !== undefined;\n });\n var maxValue = yData.length > 0 ? Math.max.apply(Math, yData) : 0;\n var formatRadian = Math.abs(maxAngle) % 360;\n if (!formatRadian) {\n return maxValue;\n }\n return maxValue * 360 / formatRadian;\n}\n/**\n * 获取堆叠之后的数据\n */\nexport function getStackedData(data, xField, yField) {\n var stackedData = [];\n data.forEach(function (item) {\n var valueItem = stackedData.find(function (v) {\n return v[xField] === item[xField];\n });\n if (valueItem) {\n valueItem[yField] += item[yField] || null;\n } else {\n stackedData.push(__assign({}, item));\n }\n });\n return stackedData;\n}","import { __assign, __rest } from \"tslib\";\nimport { animation, annotation, interaction, legend, scale, theme, tooltip } from '../../adaptor/common';\nimport { interval, point } from '../../adaptor/geometries';\nimport { pattern } from '../../adaptor/pattern';\nimport { deepAssign, findGeometry, flow, processIllegalData, transformLabel } from '../../utils';\nimport { getScaleMax, getStackedData } from './utils';\n/**\n * geometry 处理\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var style = options.barStyle,\n color = options.color,\n tooltip = options.tooltip,\n colorField = options.colorField,\n type = options.type,\n xField = options.xField,\n yField = options.yField,\n data = options.data,\n shape = options.shape;\n // 处理不合法的数据\n var processData = processIllegalData(data, yField);\n chart.data(processData);\n var p = deepAssign({}, params, {\n options: {\n tooltip: tooltip,\n seriesField: colorField,\n interval: {\n style: style,\n color: color,\n shape: shape || (type === 'line' ? 'line' : 'intervel')\n },\n // 柱子的一些样式设置:柱子最小宽度、柱子最大宽度、柱子背景\n minColumnWidth: options.minBarWidth,\n maxColumnWidth: options.maxBarWidth,\n columnBackground: options.barBackground\n }\n });\n interval(p);\n if (type === 'line') {\n point({\n chart: chart,\n options: {\n xField: xField,\n yField: yField,\n seriesField: colorField,\n point: {\n shape: 'circle',\n color: color\n }\n }\n });\n }\n return params;\n}\n/**\n * meta 配置\n * @param params\n */\nexport function meta(params) {\n var _a;\n var options = params.options;\n var yField = options.yField,\n xField = options.xField,\n data = options.data,\n isStack = options.isStack,\n isGroup = options.isGroup,\n colorField = options.colorField,\n maxAngle = options.maxAngle;\n var actualData = isStack && !isGroup && colorField ? getStackedData(data, xField, yField) : data;\n var processData = processIllegalData(actualData, yField);\n return flow(scale((_a = {}, _a[yField] = {\n min: 0,\n max: getScaleMax(maxAngle, yField, processData)\n }, _a)))(params);\n}\n/**\n * coordinate 配置\n * @param params\n */\nfunction coordinate(params) {\n var chart = params.chart,\n options = params.options;\n var radius = options.radius,\n innerRadius = options.innerRadius,\n startAngle = options.startAngle,\n endAngle = options.endAngle;\n chart.coordinate({\n type: 'polar',\n cfg: {\n radius: radius,\n innerRadius: innerRadius,\n startAngle: startAngle,\n endAngle: endAngle\n }\n }).transpose();\n return params;\n}\n/**\n * axis 配置\n * @param params\n */\nexport function axis(params) {\n var chart = params.chart,\n options = params.options;\n var xField = options.xField,\n xAxis = options.xAxis;\n chart.axis(xField, xAxis);\n return params;\n}\n/**\n * 数据标签\n * @param params\n */\nfunction label(params) {\n var chart = params.chart,\n options = params.options;\n var label = options.label,\n yField = options.yField;\n var intervalGeometry = findGeometry(chart, 'interval');\n // label 为 false, 空 则不显示 label\n if (!label) {\n intervalGeometry.label(false);\n } else {\n var callback = label.callback,\n cfg = __rest(label, [\"callback\"]);\n intervalGeometry.label({\n fields: [yField],\n callback: callback,\n cfg: __assign(__assign({}, transformLabel(cfg)), {\n type: 'polar'\n })\n });\n }\n return params;\n}\n/**\n * 图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n return flow(pattern('barStyle'), geometry, meta, axis, coordinate, interaction, animation, theme, tooltip, legend, annotation(), label)(params);\n}","import { Plot } from '../../core/plot';\nimport { deepAssign } from '../../utils';\n/**\n * 玉珏图 默认配置项\n */\nexport var DEFAULT_OPTIONS = deepAssign({}, Plot.getDefaultOptions(), {\n interactions: [{\n type: 'element-active'\n }],\n legend: false,\n tooltip: {\n showMarkers: false\n },\n xAxis: {\n grid: null,\n tickLine: null,\n line: null\n },\n maxAngle: 240\n});","import { __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { adaptor, meta } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constant';\n/**\n * 玉珏图\n */\nvar RadialBar = /** @class */function (_super) {\n __extends(RadialBar, _super);\n function RadialBar() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'radial-bar';\n return _this;\n }\n RadialBar.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * @override\n * @param data\n */\n RadialBar.prototype.changeData = function (data) {\n this.updateOption({\n data: data\n });\n // 更新玉珏图的 scale\n meta({\n chart: this.chart,\n options: this.options\n });\n this.chart.changeData(data);\n };\n /**\n * 获取默认配置\n */\n RadialBar.prototype.getDefaultOptions = function () {\n return RadialBar.getDefaultOptions();\n };\n /**\n * 获取适配器\n */\n RadialBar.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return RadialBar;\n}(Plot);\nexport { RadialBar };","import { __rest } from \"tslib\";\nimport { filter, isArray, isObject } from '@antv/util';\nimport { animation, annotation, interaction, pattern, scale, state, theme, tooltip } from '../../adaptor/common';\nimport { interval } from '../../adaptor/geometries';\nimport { deepAssign, findGeometry, flow, LEVEL, log, transformLabel } from '../../utils';\n/**\n * geometry 配置处理\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var data = options.data,\n sectorStyle = options.sectorStyle,\n shape = options.shape,\n color = options.color;\n // 装载数据\n chart.data(data);\n flow(interval)(deepAssign({}, params, {\n options: {\n marginRatio: 1,\n interval: {\n style: sectorStyle,\n color: color,\n shape: shape\n }\n }\n }));\n return params;\n}\n/**\n * label 配置\n * @param params\n */\nfunction label(params) {\n var chart = params.chart,\n options = params.options;\n var label = options.label,\n xField = options.xField;\n var geometry = findGeometry(chart, 'interval');\n // label 为 false 不显示 label\n if (label === false) {\n geometry.label(false);\n } else if (isObject(label)) {\n var callback = label.callback,\n fields = label.fields,\n cfg = __rest(label, [\"callback\", \"fields\"]);\n var offset = cfg.offset;\n var layout = cfg.layout;\n // 当 label 在 shape 外部显示时,设置 'limit-in-shape' 会\n // 造成 label 不显示。\n if (offset === undefined || offset >= 0) {\n layout = layout ? isArray(layout) ? layout : [layout] : [];\n cfg.layout = filter(layout, function (v) {\n return v.type !== 'limit-in-shape';\n });\n cfg.layout.length || delete cfg.layout;\n }\n geometry.label({\n fields: fields || [xField],\n callback: callback,\n cfg: transformLabel(cfg)\n });\n } else {\n log(LEVEL.WARN, label === null, 'the label option must be an Object.');\n geometry.label({\n fields: [xField]\n });\n }\n return params;\n}\n/**\n * legend 配置\n * @param params\n */\nexport function legend(params) {\n var chart = params.chart,\n options = params.options;\n var legend = options.legend,\n seriesField = options.seriesField;\n if (legend === false) {\n chart.legend(false);\n } else if (seriesField) {\n chart.legend(seriesField, legend);\n }\n return params;\n}\n/**\n * coord 配置\n * @param params\n */\nfunction coordinate(params) {\n var chart = params.chart,\n options = params.options;\n var radius = options.radius,\n innerRadius = options.innerRadius,\n startAngle = options.startAngle,\n endAngle = options.endAngle;\n chart.coordinate({\n type: 'polar',\n cfg: {\n radius: radius,\n innerRadius: innerRadius,\n startAngle: startAngle,\n endAngle: endAngle\n }\n });\n return params;\n}\n/**\n * meta 配置\n * @param params\n */\nfunction meta(params) {\n var _a;\n var options = params.options;\n var xAxis = options.xAxis,\n yAxis = options.yAxis,\n xField = options.xField,\n yField = options.yField;\n return flow(scale((_a = {}, _a[xField] = xAxis, _a[yField] = yAxis, _a)))(params);\n}\n/**\n * axis 配置\n * @param params\n */\nfunction axis(params) {\n var chart = params.chart,\n options = params.options;\n var xAxis = options.xAxis,\n yAxis = options.yAxis,\n xField = options.xField,\n yField = options.yField;\n // 为 falsy 则是不显示轴\n if (!xAxis) {\n chart.axis(xField, false);\n } else {\n chart.axis(xField, xAxis);\n }\n if (!yAxis) {\n chart.axis(yField, false);\n } else {\n chart.axis(yField, yAxis);\n }\n return params;\n}\n/**\n * 玫瑰图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n // flow 的方式处理所有的配置到 G2 API\n flow(pattern('sectorStyle'), geometry, meta, label, coordinate, axis, legend, tooltip, interaction, animation, theme, annotation(), state)(params);\n}","import { Plot } from '../../core/plot';\nimport { deepAssign } from '../../utils';\n/**\n * 玫瑰图 默认配置项\n */\nexport var DEFAULT_OPTIONS = deepAssign({}, Plot.getDefaultOptions(), {\n xAxis: false,\n yAxis: false,\n legend: {\n position: 'right',\n radio: {}\n },\n sectorStyle: {\n stroke: '#fff',\n lineWidth: 1\n },\n label: {\n layout: {\n type: 'limit-in-shape'\n }\n },\n tooltip: {\n shared: true,\n showMarkers: false\n },\n interactions: [{\n type: 'active-region'\n }]\n});","export var X_FIELD = 'x';\nexport var Y_FIELD = 'y';\nexport var COLOR_FIELD = 'name';\nexport var NODES_VIEW_ID = 'nodes';\nexport var EDGES_VIEW_ID = 'edges';","import { __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { adaptor } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constant';\nvar Rose = /** @class */function (_super) {\n __extends(Rose, _super);\n function Rose() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 玫瑰图 */\n _this.type = 'rose';\n return _this;\n }\n /**\n * 获取 玫瑰图 默认配置项\n * 供外部使用\n */\n Rose.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * @override\n * @param data\n */\n Rose.prototype.changeData = function (data) {\n this.updateOption({\n data: data\n });\n this.chart.changeData(data);\n };\n /**\n * 获取默认的 options 配置项\n */\n Rose.prototype.getDefaultOptions = function () {\n return Rose.getDefaultOptions();\n };\n /**\n * 获取 玫瑰图 的适配器\n */\n Rose.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Rose;\n}(Plot);\nexport { Rose };","import { isArray } from '@antv/util';\n/**\n * 根据 edges 获取对应的 node 结构\n */\nexport function getNodes(edges, sourceField, targetField) {\n var nodes = [];\n edges.forEach(function (e) {\n var source = e[sourceField];\n var target = e[targetField];\n if (!nodes.includes(source)) {\n nodes.push(source);\n }\n if (!nodes.includes(target)) {\n nodes.push(target);\n }\n });\n return nodes;\n}\n/**\n * 根据 edges 获取对应的 dfs 邻接矩阵\n */\nexport function getMatrix(edges, nodes, sourceField, targetField) {\n var graphMatrix = {};\n nodes.forEach(function (pre) {\n graphMatrix[pre] = {};\n nodes.forEach(function (next) {\n graphMatrix[pre][next] = 0;\n });\n });\n edges.forEach(function (edge) {\n graphMatrix[edge[sourceField]][edge[targetField]] = 1;\n });\n return graphMatrix;\n}\n/**\n * 使用 DFS 思路切断桑基图数据中的环(会丢失数据),保证顺序\n * @param data\n * @param sourceField\n * @param targetField\n */\nexport function cutoffCircle(edges, sourceField, targetField) {\n if (!isArray(edges)) return [];\n // 待删除的环状结构\n var removedData = [];\n // 获取所有的节点\n var nodes = getNodes(edges, sourceField, targetField);\n // 获取节点与边的邻接矩阵\n var graphMatrix = getMatrix(edges, nodes, sourceField, targetField);\n // visited:标记节点访问状态, 0:未访问,1:访问中, -1:已访问\n var visited = {};\n // 初始化visited\n nodes.forEach(function (node) {\n visited[node] = 0;\n });\n // 图的深度遍历函数\n function DFS(dfsNode) {\n // 节点状态置为正在访问\n visited[dfsNode] = 1;\n nodes.forEach(function (node) {\n if (graphMatrix[dfsNode][node] != 0) {\n // 当前节点在访问中,再次被访问,证明有环,移动到 removeData\n if (visited[node] == 1) {\n // 拼接为字符串,方便最后过滤\n removedData.push(\"\".concat(dfsNode, \"_\").concat(node));\n } else if (visited[node] == -1) {\n // 当前结点及后边的结点都被访问过,直接跳至下一个结点\n return;\n } else {\n DFS(node); // 否则递归访问\n }\n }\n });\n //遍历过所有相连的结点后,把本节点标记为-1\n visited[dfsNode] = -1;\n }\n // 对每个节点执行 dfs 操作\n nodes.forEach(function (node) {\n //该结点后边的结点都被访问过了,跳过它\n if (visited[node] == -1) {\n return;\n }\n DFS(node);\n });\n if (removedData.length !== 0) {\n console.warn(\"sankey data contains circle, \".concat(removedData.length, \" records removed.\"), removedData);\n }\n // 过滤 remove 路径\n return edges.filter(function (edge) {\n return removedData.findIndex(function (i) {\n return i === \"\".concat(edge[sourceField], \"_\").concat(edge[targetField]);\n }) < 0;\n });\n}","import { minBy } from '@antv/util';\nfunction targetDepth(d) {\n return d.target.depth;\n}\nexport function left(node) {\n return node.depth;\n}\nexport function right(node, n) {\n return n - 1 - node.height;\n}\nexport function justify(node, n) {\n return node.sourceLinks.length ? node.depth : n - 1;\n}\nexport function center(node) {\n return node.targetLinks.length ? node.depth : node.sourceLinks.length ? minBy(node.sourceLinks, targetDepth) - 1 : 0;\n}","export function constant(x) {\n return function () {\n return x;\n };\n}\nexport function sumBy(arr, func) {\n var r = 0;\n for (var i = 0; i < arr.length; i++) {\n r += func(arr[i]);\n }\n return r;\n}\n/**\n * 计算最大值\n * @param arr\n * @param func\n */\nexport function maxValueBy(arr, func) {\n var r = -Infinity;\n for (var i = 0; i < arr.length; i++) {\n r = Math.max(func(arr[i]), r);\n }\n return r;\n}\n/**\n * 计算最小值\n * @param arr\n * @param func\n */\nexport function minValueBy(arr, func) {\n var r = Infinity;\n for (var i = 0; i < arr.length; i++) {\n r = Math.min(func(arr[i]), r);\n }\n return r;\n}","import { justify } from './align';\nimport { constant, maxValueBy, minValueBy, sumBy } from './helper';\nfunction ascendingSourceBreadth(a, b) {\n return ascendingBreadth(a.source, b.source) || a.index - b.index;\n}\nfunction ascendingTargetBreadth(a, b) {\n return ascendingBreadth(a.target, b.target) || a.index - b.index;\n}\nfunction ascendingBreadth(a, b) {\n return a.y0 - b.y0;\n}\nfunction value(d) {\n return d.value;\n}\nfunction defaultId(d) {\n return d.index;\n}\nfunction defaultNodes(graph) {\n return graph.nodes;\n}\nfunction defaultLinks(graph) {\n return graph.links;\n}\nfunction find(nodeById, id) {\n var node = nodeById.get(id);\n if (!node) throw new Error('missing: ' + id);\n return node;\n}\nfunction computeLinkBreadths(_a) {\n var nodes = _a.nodes;\n for (var _i = 0, nodes_1 = nodes; _i < nodes_1.length; _i++) {\n var node = nodes_1[_i];\n var y0 = node.y0;\n var y1 = y0;\n for (var _b = 0, _c = node.sourceLinks; _b < _c.length; _b++) {\n var link = _c[_b];\n link.y0 = y0 + link.width / 2;\n y0 += link.width;\n }\n for (var _d = 0, _e = node.targetLinks; _d < _e.length; _d++) {\n var link = _e[_d];\n link.y1 = y1 + link.width / 2;\n y1 += link.width;\n }\n }\n}\nexport function Sankey() {\n var x0 = 0,\n y0 = 0,\n x1 = 1,\n y1 = 1; // extent\n var dx = 24; // nodeWidth\n var dy = 8,\n py; // nodePadding\n var id = defaultId;\n var align = justify;\n var depth;\n var sort;\n var linkSort;\n var nodes = defaultNodes;\n var links = defaultLinks;\n var iterations = 6;\n function sankey(arg) {\n var graph = {\n nodes: nodes(arg),\n links: links(arg)\n };\n computeNodeLinks(graph);\n computeNodeValues(graph);\n computeNodeDepths(graph);\n computeNodeHeights(graph);\n computeNodeBreadths(graph);\n computeLinkBreadths(graph);\n return graph;\n }\n sankey.update = function (graph) {\n computeLinkBreadths(graph);\n return graph;\n };\n sankey.nodeId = function (_) {\n return arguments.length ? (id = typeof _ === 'function' ? _ : constant(_), sankey) : id;\n };\n sankey.nodeAlign = function (_) {\n return arguments.length ? (align = typeof _ === 'function' ? _ : constant(_), sankey) : align;\n };\n sankey.nodeDepth = function (_) {\n return arguments.length ? (depth = typeof _ === 'function' ? _ : _, sankey) : depth;\n };\n sankey.nodeSort = function (_) {\n return arguments.length ? (sort = _, sankey) : sort;\n };\n sankey.nodeWidth = function (_) {\n return arguments.length ? (dx = +_, sankey) : dx;\n };\n sankey.nodePadding = function (_) {\n return arguments.length ? (dy = py = +_, sankey) : dy;\n };\n sankey.nodes = function (_) {\n return arguments.length ? (nodes = typeof _ === 'function' ? _ : constant(_), sankey) : nodes;\n };\n sankey.links = function (_) {\n return arguments.length ? (links = typeof _ === 'function' ? _ : constant(_), sankey) : links;\n };\n sankey.linkSort = function (_) {\n return arguments.length ? (linkSort = _, sankey) : linkSort;\n };\n sankey.size = function (_) {\n return arguments.length ? (x0 = y0 = 0, x1 = +_[0], y1 = +_[1], sankey) : [x1 - x0, y1 - y0];\n };\n sankey.extent = function (_) {\n return arguments.length ? (x0 = +_[0][0], x1 = +_[1][0], y0 = +_[0][1], y1 = +_[1][1], sankey) : [[x0, y0], [x1, y1]];\n };\n sankey.iterations = function (_) {\n return arguments.length ? (iterations = +_, sankey) : iterations;\n };\n function computeNodeLinks(_a) {\n var nodes = _a.nodes,\n links = _a.links;\n nodes.forEach(function (node, idx) {\n node.index = idx;\n node.sourceLinks = [];\n node.targetLinks = [];\n });\n var nodeById = new Map(nodes.map(function (d) {\n return [id(d), d];\n }));\n links.forEach(function (link, idx) {\n link.index = idx;\n var source = link.source,\n target = link.target;\n if (typeof source !== 'object') source = link.source = find(nodeById, source);\n if (typeof target !== 'object') target = link.target = find(nodeById, target);\n source.sourceLinks.push(link);\n target.targetLinks.push(link);\n });\n if (linkSort != null) {\n for (var _i = 0, nodes_2 = nodes; _i < nodes_2.length; _i++) {\n var _b = nodes_2[_i],\n sourceLinks = _b.sourceLinks,\n targetLinks = _b.targetLinks;\n sourceLinks.sort(linkSort);\n targetLinks.sort(linkSort);\n }\n }\n }\n function computeNodeValues(_a) {\n var nodes = _a.nodes;\n for (var _i = 0, nodes_3 = nodes; _i < nodes_3.length; _i++) {\n var node = nodes_3[_i];\n node.value = node.fixedValue === undefined ? Math.max(sumBy(node.sourceLinks, value), sumBy(node.targetLinks, value)) : node.fixedValue;\n }\n }\n function computeNodeDepths(_a) {\n var nodes = _a.nodes;\n var n = nodes.length;\n var current = new Set(nodes);\n var next = new Set();\n var x = 0;\n while (current.size) {\n current.forEach(function (node) {\n node.depth = x;\n for (var _i = 0, _a = node.sourceLinks; _i < _a.length; _i++) {\n var target = _a[_i].target;\n next.add(target);\n }\n });\n if (++x > n) throw new Error('circular link');\n current = next;\n next = new Set();\n }\n // 如果配置了 depth,则设置自定义 depth\n if (depth) {\n var maxDepth = Math.max(maxValueBy(nodes, function (d) {\n return d.depth;\n }) + 1, 0);\n var node = void 0;\n for (var i = 0; i < nodes.length; i++) {\n node = nodes[i];\n node.depth = depth.call(null, node, maxDepth);\n }\n }\n }\n function computeNodeHeights(_a) {\n var nodes = _a.nodes;\n var n = nodes.length;\n var current = new Set(nodes);\n var next = new Set();\n var x = 0;\n while (current.size) {\n current.forEach(function (node) {\n node.height = x;\n for (var _i = 0, _a = node.targetLinks; _i < _a.length; _i++) {\n var source = _a[_i].source;\n next.add(source);\n }\n });\n if (++x > n) throw new Error('circular link');\n current = next;\n next = new Set();\n }\n }\n function computeNodeLayers(_a) {\n var nodes = _a.nodes;\n var x = Math.max(maxValueBy(nodes, function (d) {\n return d.depth;\n }) + 1, 0);\n var kx = (x1 - x0 - dx) / (x - 1);\n var columns = new Array(x).fill(0).map(function () {\n return [];\n });\n for (var _i = 0, nodes_4 = nodes; _i < nodes_4.length; _i++) {\n var node = nodes_4[_i];\n var i = Math.max(0, Math.min(x - 1, Math.floor(align.call(null, node, x))));\n node.layer = i;\n node.x0 = x0 + i * kx;\n node.x1 = node.x0 + dx;\n if (columns[i]) columns[i].push(node);else columns[i] = [node];\n }\n if (sort) for (var _b = 0, columns_1 = columns; _b < columns_1.length; _b++) {\n var column = columns_1[_b];\n column.sort(sort);\n }\n return columns;\n }\n function initializeNodeBreadths(columns) {\n var ky = minValueBy(columns, function (c) {\n return (y1 - y0 - (c.length - 1) * py) / sumBy(c, value);\n });\n for (var _i = 0, columns_2 = columns; _i < columns_2.length; _i++) {\n var nodes_6 = columns_2[_i];\n var y = y0;\n for (var _a = 0, nodes_5 = nodes_6; _a < nodes_5.length; _a++) {\n var node = nodes_5[_a];\n node.y0 = y;\n node.y1 = y + node.value * ky;\n y = node.y1 + py;\n for (var _b = 0, _c = node.sourceLinks; _b < _c.length; _b++) {\n var link = _c[_b];\n link.width = link.value * ky;\n }\n }\n y = (y1 - y + py) / (nodes_6.length + 1);\n for (var i = 0; i < nodes_6.length; ++i) {\n var node = nodes_6[i];\n node.y0 += y * (i + 1);\n node.y1 += y * (i + 1);\n }\n reorderLinks(nodes_6);\n }\n }\n function computeNodeBreadths(graph) {\n var columns = computeNodeLayers(graph);\n py = Math.min(dy, (y1 - y0) / (maxValueBy(columns, function (c) {\n return c.length;\n }) - 1));\n initializeNodeBreadths(columns);\n for (var i = 0; i < iterations; ++i) {\n var alpha = Math.pow(0.99, i);\n var beta = Math.max(1 - alpha, (i + 1) / iterations);\n relaxRightToLeft(columns, alpha, beta);\n relaxLeftToRight(columns, alpha, beta);\n }\n }\n // Reposition each node based on its incoming (target) links.\n function relaxLeftToRight(columns, alpha, beta) {\n for (var i = 1, n = columns.length; i < n; ++i) {\n var column = columns[i];\n for (var _i = 0, column_1 = column; _i < column_1.length; _i++) {\n var target = column_1[_i];\n var y = 0;\n var w = 0;\n for (var _a = 0, _b = target.targetLinks; _a < _b.length; _a++) {\n var _c = _b[_a],\n source = _c.source,\n value_1 = _c.value;\n var v = value_1 * (target.layer - source.layer);\n y += targetTop(source, target) * v;\n w += v;\n }\n if (!(w > 0)) continue;\n var dy_1 = (y / w - target.y0) * alpha;\n target.y0 += dy_1;\n target.y1 += dy_1;\n reorderNodeLinks(target);\n }\n if (sort === undefined) column.sort(ascendingBreadth);\n if (column.length) resolveCollisions(column, beta);\n }\n }\n // Reposition each node based on its outgoing (source) links.\n function relaxRightToLeft(columns, alpha, beta) {\n for (var n = columns.length, i = n - 2; i >= 0; --i) {\n var column = columns[i];\n for (var _i = 0, column_2 = column; _i < column_2.length; _i++) {\n var source = column_2[_i];\n var y = 0;\n var w = 0;\n for (var _a = 0, _b = source.sourceLinks; _a < _b.length; _a++) {\n var _c = _b[_a],\n target = _c.target,\n value_2 = _c.value;\n var v = value_2 * (target.layer - source.layer);\n y += sourceTop(source, target) * v;\n w += v;\n }\n if (!(w > 0)) continue;\n var dy_2 = (y / w - source.y0) * alpha;\n source.y0 += dy_2;\n source.y1 += dy_2;\n reorderNodeLinks(source);\n }\n if (sort === undefined) column.sort(ascendingBreadth);\n if (column.length) resolveCollisions(column, beta);\n }\n }\n function resolveCollisions(nodes, alpha) {\n var i = nodes.length >> 1;\n var subject = nodes[i];\n resolveCollisionsBottomToTop(nodes, subject.y0 - py, i - 1, alpha);\n resolveCollisionsTopToBottom(nodes, subject.y1 + py, i + 1, alpha);\n resolveCollisionsBottomToTop(nodes, y1, nodes.length - 1, alpha);\n resolveCollisionsTopToBottom(nodes, y0, 0, alpha);\n }\n // Push any overlapping nodes down.\n function resolveCollisionsTopToBottom(nodes, y, i, alpha) {\n for (; i < nodes.length; ++i) {\n var node = nodes[i];\n var dy_3 = (y - node.y0) * alpha;\n if (dy_3 > 1e-6) node.y0 += dy_3, node.y1 += dy_3;\n y = node.y1 + py;\n }\n }\n // Push any overlapping nodes up.\n function resolveCollisionsBottomToTop(nodes, y, i, alpha) {\n for (; i >= 0; --i) {\n var node = nodes[i];\n var dy_4 = (node.y1 - y) * alpha;\n if (dy_4 > 1e-6) node.y0 -= dy_4, node.y1 -= dy_4;\n y = node.y0 - py;\n }\n }\n function reorderNodeLinks(_a) {\n var sourceLinks = _a.sourceLinks,\n targetLinks = _a.targetLinks;\n if (linkSort === undefined) {\n for (var _i = 0, targetLinks_1 = targetLinks; _i < targetLinks_1.length; _i++) {\n var sourceLinks_2 = targetLinks_1[_i].source.sourceLinks;\n sourceLinks_2.sort(ascendingTargetBreadth);\n }\n for (var _b = 0, sourceLinks_1 = sourceLinks; _b < sourceLinks_1.length; _b++) {\n var targetLinks_2 = sourceLinks_1[_b].target.targetLinks;\n targetLinks_2.sort(ascendingSourceBreadth);\n }\n }\n }\n function reorderLinks(nodes) {\n if (linkSort === undefined) {\n for (var _i = 0, nodes_7 = nodes; _i < nodes_7.length; _i++) {\n var _a = nodes_7[_i],\n sourceLinks = _a.sourceLinks,\n targetLinks = _a.targetLinks;\n sourceLinks.sort(ascendingTargetBreadth);\n targetLinks.sort(ascendingSourceBreadth);\n }\n }\n }\n // Returns the target.y0 that would produce an ideal link from source to target.\n function targetTop(source, target) {\n var y = source.y0 - (source.sourceLinks.length - 1) * py / 2;\n for (var _i = 0, _a = source.sourceLinks; _i < _a.length; _i++) {\n var _b = _a[_i],\n node = _b.target,\n width = _b.width;\n if (node === target) break;\n y += width + py;\n }\n for (var _c = 0, _d = target.targetLinks; _c < _d.length; _c++) {\n var _e = _d[_c],\n node = _e.source,\n width = _e.width;\n if (node === source) break;\n y -= width;\n }\n return y;\n }\n // Returns the source.y0 that would produce an ideal link from source to target.\n function sourceTop(source, target) {\n var y = target.y0 - (target.targetLinks.length - 1) * py / 2;\n for (var _i = 0, _a = target.targetLinks; _i < _a.length; _i++) {\n var _b = _a[_i],\n node = _b.source,\n width = _b.width;\n if (node === source) break;\n y += width + py;\n }\n for (var _c = 0, _d = source.sourceLinks; _c < _d.length; _c++) {\n var _e = _d[_c],\n node = _e.target,\n width = _e.width;\n if (node === target) break;\n y -= width;\n }\n return y;\n }\n return sankey;\n}","import { assign, isFunction, isString } from '@antv/util';\nimport { center, justify, left, right, sankey } from './sankey';\nvar ALIGN_METHOD = {\n left: left,\n right: right,\n center: center,\n justify: justify\n};\n/**\n * 默认值\n */\nvar DEFAULT_OPTIONS = {\n nodeId: function nodeId(node) {\n return node.index;\n },\n nodeAlign: 'justify',\n nodeWidth: 0.008,\n nodePadding: 0.03,\n nodeSort: undefined\n};\n/**\n * 获得 align function\n * @param nodeAlign\n * @param nodeDepth\n */\nexport function getNodeAlignFunction(nodeAlign) {\n var func = isString(nodeAlign) ? ALIGN_METHOD[nodeAlign] : isFunction(nodeAlign) ? nodeAlign : null;\n return func || justify;\n}\nexport function getDefaultOptions(sankeyLayoutOptions) {\n return assign({}, DEFAULT_OPTIONS, sankeyLayoutOptions);\n}\n/**\n * 桑基图利用数据进行布局的函数,最终返回节点、边的位置(0 - 1 的信息)\n * 将会修改 data 数据\n * @param sankeyLayoutOptions\n * @param data\n */\nexport function sankeyLayout(sankeyLayoutOptions, data) {\n var options = getDefaultOptions(sankeyLayoutOptions);\n var nodeId = options.nodeId,\n nodeSort = options.nodeSort,\n nodeAlign = options.nodeAlign,\n nodeWidth = options.nodeWidth,\n nodePadding = options.nodePadding,\n nodeDepth = options.nodeDepth;\n var sankeyProcessor = sankey()\n // .links((d: any) => d.links)\n // .nodes((d: any) => d.nodes)\n .nodeSort(nodeSort).nodeWidth(nodeWidth).nodePadding(nodePadding).nodeDepth(nodeDepth).nodeAlign(getNodeAlignFunction(nodeAlign)).extent([[0, 0], [1, 1]]).nodeId(nodeId);\n // 进行桑基图布局处理\n var layoutData = sankeyProcessor(data);\n // post process (x, y), etc.\n var nodes = layoutData.nodes.map(function (node) {\n var x0 = node.x0,\n x1 = node.x1,\n y0 = node.y0,\n y1 = node.y1;\n /* points\n * 3---2\n * | |\n * 0---1\n */\n node.x = [x0, x1, x1, x0];\n node.y = [y0, y0, y1, y1];\n return node;\n }).filter(function (node) {\n return node.name !== null;\n });\n var links = layoutData.links.map(function (edge) {\n var source = edge.source,\n target = edge.target;\n var sx = source.x1;\n var tx = target.x0;\n edge.x = [sx, sx, tx, tx];\n var offset = edge.width / 2;\n edge.y = [edge.y0 + offset, edge.y0 - offset, edge.y1 + offset, edge.y1 - offset];\n return edge;\n }).filter(function (edge) {\n var source = edge.source,\n target = edge.target;\n return source.name !== null && target.name !== null;\n });\n return {\n nodes: nodes,\n links: links\n };\n}","import { __assign, __spreadArray } from \"tslib\";\nimport { isRealNumber, pick } from '../../utils';\nimport { transformDataToNodeLinkData } from '../../utils/data';\nimport { cutoffCircle } from './circle';\nimport { sankeyLayout } from './layout';\n/**\n * 是否是 node-link 类型的数据结构\n * @param dataTyp\n * @returns\n */\nfunction isNodeLink(dataType) {\n return dataType === 'node-link';\n}\nexport function getNodeWidthRatio(nodeWidth, nodeWidthRatio, width) {\n return isRealNumber(nodeWidth) ? nodeWidth / width : nodeWidthRatio;\n}\nexport function getNodePaddingRatio(nodePadding, nodePaddingRatio, height) {\n return isRealNumber(nodePadding) ? nodePadding / height : nodePaddingRatio;\n}\n/**\n * 将桑基图配置经过 layout,生成最终的 view 数据\n * @param options\n * @param width\n * @param height\n */\nexport function transformToViewsData(options, width, height) {\n var dataType = options.dataType,\n data = options.data,\n sourceField = options.sourceField,\n targetField = options.targetField,\n weightField = options.weightField,\n nodeAlign = options.nodeAlign,\n nodeSort = options.nodeSort,\n nodePadding = options.nodePadding,\n nodePaddingRatio = options.nodePaddingRatio,\n nodeWidth = options.nodeWidth,\n nodeWidthRatio = options.nodeWidthRatio,\n nodeDepth = options.nodeDepth,\n _a = options.rawFields,\n rawFields = _a === void 0 ? [] : _a;\n var sankeyLayoutInputData;\n if (!isNodeLink(dataType)) {\n sankeyLayoutInputData = transformDataToNodeLinkData(cutoffCircle(data, sourceField, targetField), sourceField, targetField, weightField, rawFields);\n } else {\n sankeyLayoutInputData = data;\n }\n // 3. layout 之后的数据\n var _b = sankeyLayout({\n nodeAlign: nodeAlign,\n nodePadding: getNodePaddingRatio(nodePadding, nodePaddingRatio, height),\n nodeWidth: getNodeWidthRatio(nodeWidth, nodeWidthRatio, width),\n nodeSort: nodeSort,\n nodeDepth: nodeDepth\n }, sankeyLayoutInputData),\n nodes = _b.nodes,\n links = _b.links;\n // 4. 生成绘图数据\n return {\n nodes: nodes.map(function (node) {\n return __assign(__assign({}, pick(node, __spreadArray(['x', 'y', 'name'], rawFields, true))), {\n isNode: true\n });\n }),\n edges: links.map(function (link) {\n return __assign(__assign({\n source: link.source.name,\n target: link.target.name,\n name: link.source.name || link.target.name\n }, pick(link, __spreadArray(['x', 'y', 'value'], rawFields, true))), {\n isNode: false\n });\n })\n };\n}","import { __spreadArray } from \"tslib\";\nimport { uniq } from '@antv/util';\nimport { theme } from '../../adaptor/common';\nimport { edge, polygon } from '../../adaptor/geometries';\nimport { deepAssign, findViewById, flow } from '../../utils';\nimport { addViewAnimation } from '../../utils/view';\nimport { COLOR_FIELD, EDGES_VIEW_ID, NODES_VIEW_ID, X_FIELD, Y_FIELD } from './constant';\nimport { transformToViewsData } from './helper';\n/**\n * 默认配置项 处理\n * @param params\n */\nfunction defaultOptions(params) {\n var options = params.options;\n var _a = options.rawFields,\n rawFields = _a === void 0 ? [] : _a;\n return deepAssign({}, {\n options: {\n tooltip: {\n fields: uniq(__spreadArray(['name', 'source', 'target', 'value', 'isNode'], rawFields, true))\n },\n label: {\n fields: uniq(__spreadArray(['x', 'name'], rawFields, true))\n }\n }\n }, params);\n}\n/**\n * geometry 处理\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var color = options.color,\n nodeStyle = options.nodeStyle,\n edgeStyle = options.edgeStyle,\n label = options.label,\n tooltip = options.tooltip,\n nodeState = options.nodeState,\n edgeState = options.edgeState,\n _a = options.rawFields,\n rawFields = _a === void 0 ? [] : _a;\n // 1. 组件,优先设置,因为子 view 会继承配置\n chart.legend(false);\n chart.tooltip(tooltip);\n chart.axis(false);\n // y 镜像一下,防止图形顺序和数据顺序反了\n chart.coordinate().reflect('y');\n // 2. node edge views\n // @ts-ignore\n var _b = transformToViewsData(options, chart.width, chart.height),\n nodes = _b.nodes,\n edges = _b.edges;\n // edge view\n var edgeView = chart.createView({\n id: EDGES_VIEW_ID\n });\n edgeView.data(edges);\n edge({\n chart: edgeView,\n // @ts-ignore\n options: {\n xField: X_FIELD,\n yField: Y_FIELD,\n seriesField: COLOR_FIELD,\n rawFields: __spreadArray(['source', 'target'], rawFields, true),\n edge: {\n color: color,\n style: edgeStyle,\n shape: 'arc'\n },\n tooltip: tooltip,\n state: edgeState\n }\n });\n var nodeView = chart.createView({\n id: NODES_VIEW_ID\n });\n nodeView.data(nodes);\n polygon({\n chart: nodeView,\n options: {\n xField: X_FIELD,\n yField: Y_FIELD,\n seriesField: COLOR_FIELD,\n polygon: {\n color: color,\n style: nodeStyle\n },\n label: label,\n tooltip: tooltip,\n state: nodeState\n }\n });\n chart.interaction('element-active');\n // scale\n chart.scale({\n x: {\n sync: true,\n nice: true,\n min: 0,\n max: 1,\n minLimit: 0,\n maxLimit: 1\n },\n y: {\n sync: true,\n nice: true,\n min: 0,\n max: 1,\n minLimit: 0,\n maxLimit: 1\n },\n name: {\n sync: 'color',\n type: 'cat'\n }\n });\n return params;\n}\n/**\n * 动画\n * @param params\n */\nexport function animation(params) {\n var chart = params.chart,\n options = params.options;\n var animation = options.animation;\n var geometries = __spreadArray(__spreadArray([], chart.views[0].geometries, true), chart.views[1].geometries, true);\n addViewAnimation(chart, animation, geometries);\n return params;\n}\n/**\n * 节点拖动\n * @param params\n */\nexport function nodeDraggable(params) {\n var chart = params.chart,\n options = params.options;\n var nodeDraggable = options.nodeDraggable;\n var DRAG_INTERACTION = 'sankey-node-draggable';\n if (nodeDraggable) {\n chart.interaction(DRAG_INTERACTION);\n } else {\n chart.removeInteraction(DRAG_INTERACTION);\n }\n return params;\n}\n/**\n * Interaction 配置\n * @param params\n */\nfunction interaction(params) {\n var chart = params.chart,\n options = params.options;\n var _a = options.interactions,\n interactions = _a === void 0 ? [] : _a;\n var nodeInteractions = [].concat(interactions, options.nodeInteractions || []);\n var edgeInteractions = [].concat(interactions, options.edgeInteractions || []);\n var nodeView = findViewById(chart, NODES_VIEW_ID);\n var edgeView = findViewById(chart, EDGES_VIEW_ID);\n nodeInteractions.forEach(function (i) {\n if ((i === null || i === void 0 ? void 0 : i.enable) === false) {\n nodeView.removeInteraction(i.type);\n } else {\n nodeView.interaction(i.type, i.cfg || {});\n }\n });\n edgeInteractions.forEach(function (i) {\n if ((i === null || i === void 0 ? void 0 : i.enable) === false) {\n edgeView.removeInteraction(i.type);\n } else {\n edgeView.interaction(i.type, i.cfg || {});\n }\n });\n return params;\n}\n/**\n * 图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n // flow 的方式处理所有的配置到 G2 API\n return flow(defaultOptions, geometry, interaction, nodeDraggable, animation, theme\n // ... 其他的 adaptor flow\n )(params);\n}","import { __assign, __extends, __spreadArray } from \"tslib\";\nimport { Action } from '@antv/g2';\nimport { get } from '@antv/util';\nimport { findViewById } from '../../../../utils';\nimport { EDGES_VIEW_ID, NODES_VIEW_ID } from '../../constant';\nvar SankeyNodeDragAction = /** @class */function (_super) {\n __extends(SankeyNodeDragAction, _super);\n function SankeyNodeDragAction() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * 是否在拖拽中的标记\n */\n _this.isDragging = false;\n return _this;\n }\n /**\n * 当前操作的是否是 element\n */\n SankeyNodeDragAction.prototype.isNodeElement = function () {\n var shape = get(this.context, 'event.target');\n if (shape) {\n var element = shape.get('element');\n return element && element.getModel().data.isNode;\n }\n return false;\n };\n SankeyNodeDragAction.prototype.getNodeView = function () {\n return findViewById(this.context.view, NODES_VIEW_ID);\n };\n SankeyNodeDragAction.prototype.getEdgeView = function () {\n return findViewById(this.context.view, EDGES_VIEW_ID);\n };\n /**\n * 获取当前操作的 index\n * @param element\n */\n SankeyNodeDragAction.prototype.getCurrentDatumIdx = function (element) {\n return this.getNodeView().geometries[0].elements.indexOf(element);\n };\n /**\n * 点击下去,开始\n */\n SankeyNodeDragAction.prototype.start = function () {\n // 记录开始了的状态\n if (this.isNodeElement()) {\n this.prevPoint = {\n x: get(this.context, 'event.x'),\n y: get(this.context, 'event.y')\n };\n var element = this.context.event.target.get('element');\n var idx = this.getCurrentDatumIdx(element);\n if (idx === -1) {\n return;\n }\n this.currentElementIdx = idx;\n this.context.isDragging = true;\n this.isDragging = true;\n // 关闭动画并暂存配置\n this.prevNodeAnimateCfg = this.getNodeView().getOptions().animate;\n this.prevEdgeAnimateCfg = this.getEdgeView().getOptions().animate;\n this.getNodeView().animate(false);\n this.getEdgeView().animate(false);\n }\n };\n /**\n * 移动过程中,平移\n */\n SankeyNodeDragAction.prototype.translate = function () {\n if (this.isDragging) {\n var chart = this.context.view;\n var currentPoint = {\n x: get(this.context, 'event.x'),\n y: get(this.context, 'event.y')\n };\n var x = currentPoint.x - this.prevPoint.x;\n var y = currentPoint.y - this.prevPoint.y;\n var nodeView = this.getNodeView();\n var element = nodeView.geometries[0].elements[this.currentElementIdx];\n // 修改数据\n if (element && element.getModel()) {\n var prevDatum = element.getModel().data;\n var data = nodeView.getOptions().data;\n var coordinate = nodeView.getCoordinate();\n var datumGap_1 = {\n x: x / coordinate.getWidth(),\n y: y / coordinate.getHeight()\n };\n var nextDatum = __assign(__assign({}, prevDatum), {\n x: prevDatum.x.map(function (x) {\n return x += datumGap_1.x;\n }),\n y: prevDatum.y.map(function (y) {\n return y += datumGap_1.y;\n })\n });\n // 处理一下在 [0, 1] 范围\n // 1. 更新 node 数据\n var newData = __spreadArray([], data, true);\n newData[this.currentElementIdx] = nextDatum;\n nodeView.data(newData);\n // 2. 更新 edge 数据\n var name_1 = prevDatum.name;\n var edgeView = this.getEdgeView();\n var edgeData = edgeView.getOptions().data;\n edgeData.forEach(function (datum) {\n // 2.1 以该 node 为 source 的边,修改 [x0, x1, x2, x3] 中的 x0, x1\n if (datum.source === name_1) {\n datum.x[0] += datumGap_1.x;\n datum.x[1] += datumGap_1.x;\n datum.y[0] += datumGap_1.y;\n datum.y[1] += datumGap_1.y;\n }\n // 2.2 以该 node 为 target 的边,修改 [x0, x1, x2, x3] 中的 x2, x3\n if (datum.target === name_1) {\n datum.x[2] += datumGap_1.x;\n datum.x[3] += datumGap_1.x;\n datum.y[2] += datumGap_1.y;\n datum.y[3] += datumGap_1.y;\n }\n });\n edgeView.data(edgeData);\n // 3. 更新最新位置\n this.prevPoint = currentPoint;\n // node edge 都改变了,所以要从底层 render\n chart.render(true);\n }\n }\n };\n /**\n * 结论,清除状态\n */\n SankeyNodeDragAction.prototype.end = function () {\n this.isDragging = false;\n this.context.isDragging = false;\n this.prevPoint = null;\n this.currentElementIdx = null;\n // 还原动画\n this.getNodeView().animate(this.prevNodeAnimateCfg);\n this.getEdgeView().animate(this.prevEdgeAnimateCfg);\n };\n return SankeyNodeDragAction;\n}(Action);\nexport { SankeyNodeDragAction };","import { registerAction, registerInteraction } from '@antv/g2';\nimport { SankeyNodeDragAction } from './actions/node-drag';\nregisterAction('sankey-node-drag', SankeyNodeDragAction);\nregisterInteraction('sankey-node-draggable', {\n showEnable: [{\n trigger: 'polygon:mouseenter',\n action: 'cursor:pointer'\n }, {\n trigger: 'polygon:mouseleave',\n action: 'cursor:default'\n }],\n start: [{\n trigger: 'polygon:mousedown',\n action: 'sankey-node-drag:start'\n }],\n processing: [{\n trigger: 'plot:mousemove',\n action: 'sankey-node-drag:translate'\n }, {\n isEnable: function isEnable(context) {\n return context.isDragging;\n },\n trigger: 'plot:mousemove',\n action: 'cursor:move'\n }],\n end: [{\n trigger: 'plot:mouseup',\n action: 'sankey-node-drag:end'\n }]\n});","import { __extends } from \"tslib\";\nimport { get } from '@antv/util';\nimport { Plot } from '../../core/plot';\nimport { findViewById } from '../../utils';\nimport { adaptor } from './adaptor';\nimport { EDGES_VIEW_ID, NODES_VIEW_ID } from './constant';\nimport { transformToViewsData } from './helper';\n// 桑基图内置交互\nimport './interactions';\n/**\n * 桑基图 Sankey\n */\nvar Sankey = /** @class */function (_super) {\n __extends(Sankey, _super);\n function Sankey() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'sankey';\n return _this;\n }\n Sankey.getDefaultOptions = function () {\n return {\n appendPadding: 8,\n syncViewPadding: true,\n nodeStyle: {\n opacity: 1,\n fillOpacity: 1,\n lineWidth: 1\n },\n edgeStyle: {\n opacity: 0.3,\n lineWidth: 0\n },\n edgeState: {\n active: {\n style: {\n opacity: 0.8,\n lineWidth: 0\n }\n }\n },\n label: {\n formatter: function formatter(_a) {\n var name = _a.name;\n return name;\n },\n callback: function callback(x) {\n var isLast = x[1] === 1; // 最后一列靠边的节点\n return {\n style: {\n fill: '#545454',\n textAlign: isLast ? 'end' : 'start'\n },\n offsetX: isLast ? -8 : 8\n };\n },\n layout: [{\n type: 'hide-overlap'\n }]\n },\n tooltip: {\n showTitle: false,\n showMarkers: false,\n shared: false,\n // 内置:node 不显示 tooltip,edge 显示 tooltip\n showContent: function showContent(items) {\n return !get(items, [0, 'data', 'isNode']);\n },\n formatter: function formatter(datum) {\n var source = datum.source,\n target = datum.target,\n value = datum.value;\n return {\n name: source + ' -> ' + target,\n value: value\n };\n }\n },\n nodeWidthRatio: 0.008,\n nodePaddingRatio: 0.01,\n animation: {\n appear: {\n animation: 'wave-in'\n },\n enter: {\n animation: 'wave-in'\n }\n }\n };\n };\n /**\n * @override\n * @param data\n */\n Sankey.prototype.changeData = function (data) {\n this.updateOption({\n data: data\n });\n var _a = transformToViewsData(this.options, this.chart.width, this.chart.height),\n nodes = _a.nodes,\n edges = _a.edges;\n var nodesView = findViewById(this.chart, NODES_VIEW_ID);\n var edgesView = findViewById(this.chart, EDGES_VIEW_ID);\n nodesView.changeData(nodes);\n edgesView.changeData(edges);\n };\n /**\n * 获取适配器\n */\n Sankey.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n /**\n * 获取 条形图 默认配置\n */\n Sankey.prototype.getDefaultOptions = function () {\n return Sankey.getDefaultOptions();\n };\n return Sankey;\n}(Plot);\nexport { Sankey };","import { Plot } from '../../core/plot';\nimport { deepAssign } from '../../utils';\nimport { CHILD_NODE_COUNT, NODE_ANCESTORS_FIELD, NODE_INDEX_FIELD } from '../../utils/hierarchy/util';\n/**\n * 祖先节点,非 root 根节点\n */\nexport var SUNBURST_ANCESTOR_FIELD = 'ancestor-node';\nexport var SUNBURST_Y_FIELD = 'value';\nexport var SUNBURST_PATH_FIELD = 'path';\n/** 默认的源字段 */\nexport var RAW_FIELDS = [SUNBURST_PATH_FIELD, NODE_INDEX_FIELD, NODE_ANCESTORS_FIELD, CHILD_NODE_COUNT, 'name', 'depth', 'height'];\n/**\n * 旭日图 默认配置项\n */\nexport var DEFAULT_OPTIONS = deepAssign({}, Plot.getDefaultOptions(), {\n innerRadius: 0,\n radius: 0.85,\n // 分层配置\n hierarchyConfig: {\n // 数值字段,默认是 value(可配置)\n field: 'value'\n },\n // 组件\n tooltip: {\n shared: true,\n showMarkers: false,\n offset: 20,\n showTitle: false\n },\n legend: false,\n // 样式设置\n sunburstStyle: {\n lineWidth: 0.5,\n stroke: '#FFF'\n },\n // 默认开启交互\n drilldown: {\n enabled: true\n }\n});","export default function (node) {\n node.x0 = Math.round(node.x0);\n node.y0 = Math.round(node.y0);\n node.x1 = Math.round(node.x1);\n node.y1 = Math.round(node.y1);\n}","export default function (parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (x1 - x0) / parent.value;\n while (++i < n) {\n node = nodes[i], node.y0 = y0, node.y1 = y1;\n node.x0 = x0, node.x1 = x0 += node.value * k;\n }\n}","import roundNode from \"./treemap/round.js\";\nimport treemapDice from \"./treemap/dice.js\";\nexport default function () {\n var dx = 1,\n dy = 1,\n padding = 0,\n round = false;\n function partition(root) {\n var n = root.height + 1;\n root.x0 = root.y0 = padding;\n root.x1 = dx;\n root.y1 = dy / n;\n root.eachBefore(positionNode(dy, n));\n if (round) root.eachBefore(roundNode);\n return root;\n }\n function positionNode(dy, n) {\n return function (node) {\n if (node.children) {\n treemapDice(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n);\n }\n var x0 = node.x0,\n y0 = node.y0,\n x1 = node.x1 - padding,\n y1 = node.y1 - padding;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n };\n }\n partition.round = function (x) {\n return arguments.length ? (round = !!x, partition) : round;\n };\n partition.size = function (x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy];\n };\n partition.padding = function (x) {\n return arguments.length ? (padding = +x, partition) : padding;\n };\n return partition;\n}","import { assign, isArray, reduce, size } from '@antv/util';\nimport * as d3Hierarchy from 'd3-hierarchy';\nimport { getAllNodes, getField } from './util';\nvar DEFAULT_OPTIONS = {\n field: 'value',\n size: [1, 1],\n round: false,\n padding: 0,\n // 默认降序\n sort: function sort(a, b) {\n return b.value - a.value;\n },\n as: ['x', 'y'],\n // 是否忽略 parentValue, 当设置为 true 时,父节点的权重由子元素决定\n ignoreParentValue: true\n};\nexport function partition(data, options) {\n options = assign({}, DEFAULT_OPTIONS, options);\n var as = options.as;\n if (!isArray(as) || as.length !== 2) {\n throw new TypeError('Invalid as: it must be an array with 2 strings (e.g. [ \"x\", \"y\" ])!');\n }\n var field;\n try {\n field = getField(options);\n } catch (e) {\n console.warn(e);\n }\n var partition = function partition(data) {\n return d3Hierarchy.partition().size(options.size).round(options.round).padding(options.padding)(\n /**\n * d3Hierarchy 布局中需指定 sum 函数计算 node 值,规则是:从当前 node 开始以 post-order traversal 的次序为当前节点以及每个后代节点调用指定的 value 函数,并返回当前 node。\n * for example:\n * { node: 'parent', value: 10, children: [{node: 'child1', value: 5}, {node: 'child2', value: 5}, ]}\n * parent 所得的计算值是 sum(node(parent)) + sum(node(child1)) + sum(node(child2))\n * sum 函数中,d 为用户传入的 data, children 为保留字段\n */\n d3Hierarchy.hierarchy(data).sum(function (d) {\n return size(d.children) ? options.ignoreParentValue ? 0 : d[field] - reduce(d.children, function (a, b) {\n return a + b[field];\n }, 0) : d[field];\n }).sort(options.sort));\n };\n var root = partition(data);\n /*\n * points:\n * 3 2\n * 0 1\n */\n var x = as[0];\n var y = as[1];\n root.each(function (node) {\n var _a, _b;\n node[x] = [node.x0, node.x1, node.x1, node.x0];\n node[y] = [node.y1, node.y1, node.y0, node.y0];\n // 旭日图兼容下 旧版本\n node.name = node.name || ((_a = node.data) === null || _a === void 0 ? void 0 : _a.name) || ((_b = node.data) === null || _b === void 0 ? void 0 : _b.label);\n node.data.name = node.name;\n ['x0', 'x1', 'y0', 'y1'].forEach(function (prop) {\n if (as.indexOf(prop) === -1) {\n delete node[prop];\n }\n });\n });\n return getAllNodes(root);\n}","function defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\nfunction meanX(children) {\n return children.reduce(meanXReduce, 0) / children.length;\n}\nfunction meanXReduce(x, c) {\n return x + c.x;\n}\nfunction maxY(children) {\n return 1 + children.reduce(maxYReduce, 0);\n}\nfunction maxYReduce(y, c) {\n return Math.max(y, c.y);\n}\nfunction leafLeft(node) {\n var children;\n while (children = node.children) node = children[0];\n return node;\n}\nfunction leafRight(node) {\n var children;\n while (children = node.children) node = children[children.length - 1];\n return node;\n}\nexport default function () {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = false;\n function cluster(root) {\n var previousNode,\n x = 0;\n\n // First walk, computing the initial x & y values.\n root.eachAfter(function (node) {\n var children = node.children;\n if (children) {\n node.x = meanX(children);\n node.y = maxY(children);\n } else {\n node.x = previousNode ? x += separation(node, previousNode) : 0;\n node.y = 0;\n previousNode = node;\n }\n });\n var left = leafLeft(root),\n right = leafRight(root),\n x0 = left.x - separation(left, right) / 2,\n x1 = right.x + separation(right, left) / 2;\n\n // Second walk, normalizing x & y to the desired size.\n return root.eachAfter(nodeSize ? function (node) {\n node.x = (node.x - root.x) * dx;\n node.y = (root.y - node.y) * dy;\n } : function (node) {\n node.x = (node.x - x0) / (x1 - x0) * dx;\n node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;\n });\n }\n cluster.separation = function (x) {\n return arguments.length ? (separation = x, cluster) : separation;\n };\n cluster.size = function (x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : nodeSize ? null : [dx, dy];\n };\n cluster.nodeSize = function (x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : nodeSize ? [dx, dy] : null;\n };\n return cluster;\n}","import { required } from \"./accessors.js\";\nimport { Node, computeHeight } from \"./hierarchy/index.js\";\nvar preroot = {\n depth: -1\n },\n ambiguous = {};\nfunction defaultId(d) {\n return d.id;\n}\nfunction defaultParentId(d) {\n return d.parentId;\n}\nexport default function () {\n var id = defaultId,\n parentId = defaultParentId;\n function stratify(data) {\n var nodes = Array.from(data),\n n = nodes.length,\n d,\n i,\n root,\n parent,\n node,\n nodeId,\n nodeKey,\n nodeByKey = new Map();\n for (i = 0; i < n; ++i) {\n d = nodes[i], node = nodes[i] = new Node(d);\n if ((nodeId = id(d, i, data)) != null && (nodeId += \"\")) {\n nodeKey = node.id = nodeId;\n nodeByKey.set(nodeKey, nodeByKey.has(nodeKey) ? ambiguous : node);\n }\n if ((nodeId = parentId(d, i, data)) != null && (nodeId += \"\")) {\n node.parent = nodeId;\n }\n }\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (nodeId = node.parent) {\n parent = nodeByKey.get(nodeId);\n if (!parent) throw new Error(\"missing: \" + nodeId);\n if (parent === ambiguous) throw new Error(\"ambiguous: \" + nodeId);\n if (parent.children) parent.children.push(node);else parent.children = [node];\n node.parent = parent;\n } else {\n if (root) throw new Error(\"multiple roots\");\n root = node;\n }\n }\n if (!root) throw new Error(\"no root\");\n root.parent = preroot;\n root.eachBefore(function (node) {\n node.depth = node.parent.depth + 1;\n --n;\n }).eachBefore(computeHeight);\n root.parent = null;\n if (n > 0) throw new Error(\"cycle\");\n return root;\n }\n stratify.id = function (x) {\n return arguments.length ? (id = required(x), stratify) : id;\n };\n stratify.parentId = function (x) {\n return arguments.length ? (parentId = required(x), stratify) : parentId;\n };\n return stratify;\n}","import { Node } from \"./hierarchy/index.js\";\nfunction defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\n// function radialSeparation(a, b) {\n// return (a.parent === b.parent ? 1 : 2) / a.depth;\n// }\n\n// This function is used to traverse the left contour of a subtree (or\n// subforest). It returns the successor of v on this contour. This successor is\n// either given by the leftmost child of v or by the thread of v. The function\n// returns null if and only if v is on the highest level of its subtree.\nfunction nextLeft(v) {\n var children = v.children;\n return children ? children[0] : v.t;\n}\n\n// This function works analogously to nextLeft.\nfunction nextRight(v) {\n var children = v.children;\n return children ? children[children.length - 1] : v.t;\n}\n\n// Shifts the current subtree rooted at w+. This is done by increasing\n// prelim(w+) and mod(w+) by shift.\nfunction moveSubtree(wm, wp, shift) {\n var change = shift / (wp.i - wm.i);\n wp.c -= change;\n wp.s += shift;\n wm.c += change;\n wp.z += shift;\n wp.m += shift;\n}\n\n// All other shifts, applied to the smaller subtrees between w- and w+, are\n// performed by this function. To prepare the shifts, we have to adjust\n// change(w+), shift(w+), and change(w-).\nfunction executeShifts(v) {\n var shift = 0,\n change = 0,\n children = v.children,\n i = children.length,\n w;\n while (--i >= 0) {\n w = children[i];\n w.z += shift;\n w.m += shift;\n shift += w.s + (change += w.c);\n }\n}\n\n// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise,\n// returns the specified (default) ancestor.\nfunction nextAncestor(vim, v, ancestor) {\n return vim.a.parent === v.parent ? vim.a : ancestor;\n}\nfunction TreeNode(node, i) {\n this._ = node;\n this.parent = null;\n this.children = null;\n this.A = null; // default ancestor\n this.a = this; // ancestor\n this.z = 0; // prelim\n this.m = 0; // mod\n this.c = 0; // change\n this.s = 0; // shift\n this.t = null; // thread\n this.i = i; // number\n}\n\nTreeNode.prototype = Object.create(Node.prototype);\nfunction treeRoot(root) {\n var tree = new TreeNode(root, 0),\n node,\n nodes = [tree],\n child,\n children,\n i,\n n;\n while (node = nodes.pop()) {\n if (children = node._.children) {\n node.children = new Array(n = children.length);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new TreeNode(children[i], i));\n child.parent = node;\n }\n }\n }\n (tree.parent = new TreeNode(null, 0)).children = [tree];\n return tree;\n}\n\n// Node-link tree diagram using the Reingold-Tilford \"tidy\" algorithm\nexport default function () {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = null;\n function tree(root) {\n var t = treeRoot(root);\n\n // Compute the layout using Buchheim et al.’s algorithm.\n t.eachAfter(firstWalk), t.parent.m = -t.z;\n t.eachBefore(secondWalk);\n\n // If a fixed node size is specified, scale x and y.\n if (nodeSize) root.eachBefore(sizeNode);\n\n // If a fixed tree size is specified, scale x and y based on the extent.\n // Compute the left-most, right-most, and depth-most nodes for extents.\n else {\n var left = root,\n right = root,\n bottom = root;\n root.eachBefore(function (node) {\n if (node.x < left.x) left = node;\n if (node.x > right.x) right = node;\n if (node.depth > bottom.depth) bottom = node;\n });\n var s = left === right ? 1 : separation(left, right) / 2,\n tx = s - left.x,\n kx = dx / (right.x + s + tx),\n ky = dy / (bottom.depth || 1);\n root.eachBefore(function (node) {\n node.x = (node.x + tx) * kx;\n node.y = node.depth * ky;\n });\n }\n return root;\n }\n\n // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is\n // applied recursively to the children of v, as well as the function\n // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the\n // node v is placed to the midpoint of its outermost children.\n function firstWalk(v) {\n var children = v.children,\n siblings = v.parent.children,\n w = v.i ? siblings[v.i - 1] : null;\n if (children) {\n executeShifts(v);\n var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n if (w) {\n v.z = w.z + separation(v._, w._);\n v.m = v.z - midpoint;\n } else {\n v.z = midpoint;\n }\n } else if (w) {\n v.z = w.z + separation(v._, w._);\n }\n v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n }\n\n // Computes all real x-coordinates by summing up the modifiers recursively.\n function secondWalk(v) {\n v._.x = v.z + v.parent.m;\n v.m += v.parent.m;\n }\n\n // The core of the algorithm. Here, a new subtree is combined with the\n // previous subtrees. Threads are used to traverse the inside and outside\n // contours of the left and right subtree up to the highest common level. The\n // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the\n // superscript o means outside and i means inside, the subscript - means left\n // subtree and + means right subtree. For summing up the modifiers along the\n // contour, we use respective variables si+, si-, so-, and so+. Whenever two\n // nodes of the inside contours conflict, we compute the left one of the\n // greatest uncommon ancestors using the function ANCESTOR and call MOVE\n // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.\n // Finally, we add a new thread (if necessary).\n function apportion(v, w, ancestor) {\n if (w) {\n var vip = v,\n vop = v,\n vim = w,\n vom = vip.parent.children[0],\n sip = vip.m,\n sop = vop.m,\n sim = vim.m,\n som = vom.m,\n shift;\n while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {\n vom = nextLeft(vom);\n vop = nextRight(vop);\n vop.a = v;\n shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n if (shift > 0) {\n moveSubtree(nextAncestor(vim, v, ancestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.m;\n sip += vip.m;\n som += vom.m;\n sop += vop.m;\n }\n if (vim && !nextRight(vop)) {\n vop.t = vim;\n vop.m += sim - sop;\n }\n if (vip && !nextLeft(vom)) {\n vom.t = vip;\n vom.m += sip - som;\n ancestor = v;\n }\n }\n return ancestor;\n }\n function sizeNode(node) {\n node.x *= dx;\n node.y = node.depth * dy;\n }\n tree.separation = function (x) {\n return arguments.length ? (separation = x, tree) : separation;\n };\n tree.size = function (x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : nodeSize ? null : [dx, dy];\n };\n tree.nodeSize = function (x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : nodeSize ? [dx, dy] : null;\n };\n return tree;\n}","export default function (parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (y1 - y0) / parent.value;\n while (++i < n) {\n node = nodes[i], node.x0 = x0, node.x1 = x1;\n node.y0 = y0, node.y1 = y0 += node.value * k;\n }\n}","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\nexport var phi = (1 + Math.sqrt(5)) / 2;\nexport function squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n var rows = [],\n nodes = parent.children,\n row,\n nodeValue,\n i0 = 0,\n i1 = 0,\n n = nodes.length,\n dx,\n dy,\n value = parent.value,\n sumValue,\n minValue,\n maxValue,\n newRatio,\n minRatio,\n alpha,\n beta;\n while (i0 < n) {\n dx = x1 - x0, dy = y1 - y0;\n\n // Find the next non-empty node.\n do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n minValue = maxValue = sumValue;\n alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n beta = sumValue * sumValue * alpha;\n minRatio = Math.max(maxValue / beta, beta / minValue);\n\n // Keep adding nodes while the aspect ratio maintains or improves.\n for (; i1 < n; ++i1) {\n sumValue += nodeValue = nodes[i1].value;\n if (nodeValue < minValue) minValue = nodeValue;\n if (nodeValue > maxValue) maxValue = nodeValue;\n beta = sumValue * sumValue * alpha;\n newRatio = Math.max(maxValue / beta, beta / minValue);\n if (newRatio > minRatio) {\n sumValue -= nodeValue;\n break;\n }\n minRatio = newRatio;\n }\n\n // Position and record the row orientation.\n rows.push(row = {\n value: sumValue,\n dice: dx < dy,\n children: nodes.slice(i0, i1)\n });\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n value -= sumValue, i0 = i1;\n }\n return rows;\n}\nexport default (function custom(ratio) {\n function squarify(parent, x0, y0, x1, y1) {\n squarifyRatio(ratio, parent, x0, y0, x1, y1);\n }\n squarify.ratio = function (x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n return squarify;\n})(phi);","import roundNode from \"./round.js\";\nimport squarify from \"./squarify.js\";\nimport { required } from \"../accessors.js\";\nimport constant, { constantZero } from \"../constant.js\";\nexport default function () {\n var tile = squarify,\n round = false,\n dx = 1,\n dy = 1,\n paddingStack = [0],\n paddingInner = constantZero,\n paddingTop = constantZero,\n paddingRight = constantZero,\n paddingBottom = constantZero,\n paddingLeft = constantZero;\n function treemap(root) {\n root.x0 = root.y0 = 0;\n root.x1 = dx;\n root.y1 = dy;\n root.eachBefore(positionNode);\n paddingStack = [0];\n if (round) root.eachBefore(roundNode);\n return root;\n }\n function positionNode(node) {\n var p = paddingStack[node.depth],\n x0 = node.x0 + p,\n y0 = node.y0 + p,\n x1 = node.x1 - p,\n y1 = node.y1 - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n if (node.children) {\n p = paddingStack[node.depth + 1] = paddingInner(node) / 2;\n x0 += paddingLeft(node) - p;\n y0 += paddingTop(node) - p;\n x1 -= paddingRight(node) - p;\n y1 -= paddingBottom(node) - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n tile(node, x0, y0, x1, y1);\n }\n }\n treemap.round = function (x) {\n return arguments.length ? (round = !!x, treemap) : round;\n };\n treemap.size = function (x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];\n };\n treemap.tile = function (x) {\n return arguments.length ? (tile = required(x), treemap) : tile;\n };\n treemap.padding = function (x) {\n return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();\n };\n treemap.paddingInner = function (x) {\n return arguments.length ? (paddingInner = typeof x === \"function\" ? x : constant(+x), treemap) : paddingInner;\n };\n treemap.paddingOuter = function (x) {\n return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();\n };\n treemap.paddingTop = function (x) {\n return arguments.length ? (paddingTop = typeof x === \"function\" ? x : constant(+x), treemap) : paddingTop;\n };\n treemap.paddingRight = function (x) {\n return arguments.length ? (paddingRight = typeof x === \"function\" ? x : constant(+x), treemap) : paddingRight;\n };\n treemap.paddingBottom = function (x) {\n return arguments.length ? (paddingBottom = typeof x === \"function\" ? x : constant(+x), treemap) : paddingBottom;\n };\n treemap.paddingLeft = function (x) {\n return arguments.length ? (paddingLeft = typeof x === \"function\" ? x : constant(+x), treemap) : paddingLeft;\n };\n return treemap;\n}","export default function (parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n i,\n n = nodes.length,\n sum,\n sums = new Array(n + 1);\n for (sums[0] = sum = i = 0; i < n; ++i) {\n sums[i + 1] = sum += nodes[i].value;\n }\n partition(0, n, parent.value, x0, y0, x1, y1);\n function partition(i, j, value, x0, y0, x1, y1) {\n if (i >= j - 1) {\n var node = nodes[i];\n node.x0 = x0, node.y0 = y0;\n node.x1 = x1, node.y1 = y1;\n return;\n }\n var valueOffset = sums[i],\n valueTarget = value / 2 + valueOffset,\n k = i + 1,\n hi = j - 1;\n while (k < hi) {\n var mid = k + hi >>> 1;\n if (sums[mid] < valueTarget) k = mid + 1;else hi = mid;\n }\n if (valueTarget - sums[k - 1] < sums[k] - valueTarget && i + 1 < k) --k;\n var valueLeft = sums[k] - valueOffset,\n valueRight = value - valueLeft;\n if (x1 - x0 > y1 - y0) {\n var xk = value ? (x0 * valueRight + x1 * valueLeft) / value : x1;\n partition(i, k, valueLeft, x0, y0, xk, y1);\n partition(k, j, valueRight, xk, y0, x1, y1);\n } else {\n var yk = value ? (y0 * valueRight + y1 * valueLeft) / value : y1;\n partition(i, k, valueLeft, x0, y0, x1, yk);\n partition(k, j, valueRight, x0, yk, x1, y1);\n }\n }\n}","import dice from \"./dice.js\";\nimport slice from \"./slice.js\";\nexport default function (parent, x0, y0, x1, y1) {\n (parent.depth & 1 ? slice : dice)(parent, x0, y0, x1, y1);\n}","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\nimport { phi, squarifyRatio } from \"./squarify.js\";\nexport default (function custom(ratio) {\n function resquarify(parent, x0, y0, x1, y1) {\n if ((rows = parent._squarify) && rows.ratio === ratio) {\n var rows,\n row,\n nodes,\n i,\n j = -1,\n n,\n m = rows.length,\n value = parent.value;\n while (++j < m) {\n row = rows[j], nodes = row.children;\n for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += (y1 - y0) * row.value / value : y1);else treemapSlice(row, x0, y0, value ? x0 += (x1 - x0) * row.value / value : x1, y1);\n value -= row.value;\n }\n } else {\n parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1);\n rows.ratio = ratio;\n }\n }\n resquarify.ratio = function (x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n return resquarify;\n})(phi);","import { assign, isArray } from '@antv/util';\nimport * as d3Hierarchy from 'd3-hierarchy';\nimport { getAllNodes, getField } from './util';\nvar DEFAULT_OPTIONS = {\n field: 'value',\n tile: 'treemapSquarify',\n size: [1, 1],\n round: false,\n ignoreParentValue: true,\n padding: 0,\n paddingInner: 0,\n paddingOuter: 0,\n paddingTop: 0,\n paddingRight: 0,\n paddingBottom: 0,\n paddingLeft: 0,\n as: ['x', 'y'],\n // 默认降序\n sort: function sort(a, b) {\n return b.value - a.value;\n },\n // 纵横比, treemapSquarify 布局时可用,默认黄金分割比例\n ratio: 0.5 * (1 + Math.sqrt(5))\n};\nexport function getTileMethod(tile, ratio) {\n return tile === 'treemapSquarify' ? d3Hierarchy[tile].ratio(ratio) : d3Hierarchy[tile];\n}\nexport function treemap(data, options) {\n options = assign({}, DEFAULT_OPTIONS, options);\n var as = options.as;\n if (!isArray(as) || as.length !== 2) {\n throw new TypeError('Invalid as: it must be an array with 2 strings (e.g. [ \"x\", \"y\" ])!');\n }\n var field;\n try {\n field = getField(options);\n } catch (e) {\n console.warn(e);\n }\n var tileMethod = getTileMethod(options.tile, options.ratio);\n var partition = function partition(data) {\n return d3Hierarchy.treemap().tile(tileMethod).size(options.size).round(options.round).padding(options.padding).paddingInner(options.paddingInner).paddingOuter(options.paddingOuter).paddingTop(options.paddingTop).paddingRight(options.paddingRight).paddingBottom(options.paddingBottom).paddingLeft(options.paddingLeft)(\n /**\n * d3Hierarchy 布局中需指定 sum 函数计算 node 值,规则是:从当前 node 开始以 post-order traversal 的次序为当前节点以及每个后代节点调用指定的 value 函数,并返回当前 node。\n * for example:\n * { node: 'parent', value: 10, children: [{node: 'child1', value: 5}, {node: 'child2', value: 5}, ]}\n * parent 所得的计算值是 sum(node(parent)) + sum(node(child1)) + sum(node(child2))\n * ignoreParentValue 为 true(默认) 时,父元素的值由子元素累加而来,该值为 0 + 5 + 5 = 10\n * ignoreParentValue 为 false 时,父元素的值由当前节点 及子元素累加而来,该值为 10 + 5 + 5 = 20\n * sum 函数中,d 为用户传入的 data, children 为保留字段\n */\n d3Hierarchy.hierarchy(data).sum(function (d) {\n return options.ignoreParentValue && d.children ? 0 : d[field];\n }).sort(options.sort));\n };\n var root = partition(data);\n /*\n * points:\n * 3 2\n * 0 1\n */\n var x = as[0];\n var y = as[1];\n root.each(function (node) {\n node[x] = [node.x0, node.x1, node.x1, node.x0];\n node[y] = [node.y1, node.y1, node.y0, node.y0];\n ['x0', 'x1', 'y0', 'y1'].forEach(function (prop) {\n if (as.indexOf(prop) === -1) {\n delete node[prop];\n }\n });\n });\n return getAllNodes(root);\n}","import { __assign, __spreadArray } from \"tslib\";\nimport { omit } from '@antv/util';\nimport { HIERARCHY_DATA_TRANSFORM_PARAMS } from '../../interactions/actions/drill-down';\nimport { pick } from '../../utils';\nimport { partition } from '../../utils/hierarchy/partition';\nimport { treemap } from '../../utils/hierarchy/treemap';\nimport { SUNBURST_ANCESTOR_FIELD, SUNBURST_PATH_FIELD } from './constant';\n/**\n * sunburst 处理数据\n * @param options\n */\nexport function transformData(options) {\n var data = options.data,\n colorField = options.colorField,\n rawFields = options.rawFields,\n _a = options.hierarchyConfig,\n hierarchyConfig = _a === void 0 ? {} : _a;\n var activeDepth = hierarchyConfig.activeDepth;\n var transform = {\n partition: partition,\n treemap: treemap\n };\n // @ts-ignore 兼容旧版本,支持 seriesField 来作为 hierarchyConfig.field\n var seriesField = options.seriesField;\n // @ts-ignore 兼容旧版本,支持矩阵树图形状的旭日图\n var type = options.type || 'partition';\n var nodes = transform[type](data, __assign(__assign({\n field: seriesField || 'value'\n }, omit(hierarchyConfig, ['activeDepth'])), {\n // @ts-ignore\n type: \"hierarchy.\".concat(type),\n as: ['x', 'y']\n }));\n var result = [];\n nodes.forEach(function (node) {\n var _a;\n var _b, _c, _d, _e, _f;\n if (node.depth === 0) {\n return null;\n }\n if (activeDepth > 0 && node.depth > activeDepth) {\n return null;\n }\n var path = node.data.name;\n var ancestorNode = __assign({}, node);\n while (ancestorNode.depth > 1) {\n path = \"\".concat((_b = ancestorNode.parent.data) === null || _b === void 0 ? void 0 : _b.name, \" / \").concat(path);\n ancestorNode = ancestorNode.parent;\n }\n var nodeInfo = __assign(__assign(__assign({}, pick(node.data, __spreadArray(__spreadArray([], rawFields || [], true), [hierarchyConfig.field], false))), (_a = {}, _a[SUNBURST_PATH_FIELD] = path, _a[SUNBURST_ANCESTOR_FIELD] = ancestorNode.data.name, _a)), node);\n // note: 兼容旧版本\n if (seriesField) {\n nodeInfo[seriesField] = node.data[seriesField] || ((_d = (_c = node.parent) === null || _c === void 0 ? void 0 : _c.data) === null || _d === void 0 ? void 0 : _d[seriesField]);\n }\n if (colorField) {\n nodeInfo[colorField] = node.data[colorField] || ((_f = (_e = node.parent) === null || _e === void 0 ? void 0 : _e.data) === null || _f === void 0 ? void 0 : _f[colorField]);\n }\n nodeInfo.ext = hierarchyConfig;\n nodeInfo[HIERARCHY_DATA_TRANSFORM_PARAMS] = {\n hierarchyConfig: hierarchyConfig,\n colorField: colorField,\n rawFields: rawFields\n };\n result.push(nodeInfo);\n });\n return result;\n}","import { __assign, __rest, __spreadArray } from \"tslib\";\nimport { get, isFunction, uniq } from '@antv/util';\nimport { animation, annotation, interaction as baseInteraction, legend, pattern, scale, theme } from '../../adaptor/common';\nimport { polygon as polygonAdaptor } from '../../adaptor/geometries';\nimport { deepAssign, findGeometry, flow, transformLabel } from '../../utils';\nimport { getAdjustAppendPadding } from '../../utils/padding';\nimport { RAW_FIELDS, SUNBURST_ANCESTOR_FIELD, SUNBURST_PATH_FIELD, SUNBURST_Y_FIELD } from './constant';\nimport { transformData } from './utils';\n/**\n * geometry 配置处理\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var color = options.color,\n _a = options.colorField,\n colorField = _a === void 0 ? SUNBURST_ANCESTOR_FIELD : _a,\n sunburstStyle = options.sunburstStyle,\n _b = options.rawFields,\n rawFields = _b === void 0 ? [] : _b,\n shape = options.shape;\n var data = transformData(options);\n chart.data(data);\n // 特殊处理下样式,如果没有设置 fillOpacity 的时候,默认根据层级进行填充透明度\n var style;\n if (sunburstStyle) {\n style = function style(datum) {\n return deepAssign({}, {\n fillOpacity: Math.pow(0.85, datum.depth)\n }, isFunction(sunburstStyle) ? sunburstStyle(datum) : sunburstStyle);\n };\n }\n // geometry\n polygonAdaptor(deepAssign({}, params, {\n options: {\n xField: 'x',\n yField: 'y',\n seriesField: colorField,\n rawFields: uniq(__spreadArray(__spreadArray([], RAW_FIELDS, true), rawFields, true)),\n polygon: {\n color: color,\n style: style,\n shape: shape\n }\n }\n }));\n return params;\n}\n/**\n * axis 配置\n * @param params\n */\nexport function axis(params) {\n var chart = params.chart;\n chart.axis(false);\n return params;\n}\n/**\n * 数据标签\n * @param params\n */\nfunction label(params) {\n var chart = params.chart,\n options = params.options;\n var label = options.label;\n var geometry = findGeometry(chart, 'polygon');\n // 默认不展示,undefined 也不展示\n if (!label) {\n geometry.label(false);\n } else {\n var _a = label.fields,\n fields = _a === void 0 ? ['name'] : _a,\n callback = label.callback,\n cfg = __rest(label, [\"fields\", \"callback\"]);\n geometry.label({\n fields: fields,\n callback: callback,\n cfg: transformLabel(cfg)\n });\n }\n return params;\n}\n/**\n * coord 配置\n * @param params\n */\nfunction coordinate(params) {\n var chart = params.chart,\n options = params.options;\n var innerRadius = options.innerRadius,\n radius = options.radius,\n reflect = options.reflect;\n var coord = chart.coordinate({\n type: 'polar',\n cfg: {\n innerRadius: innerRadius,\n radius: radius\n }\n });\n if (reflect) {\n coord.reflect(reflect);\n }\n return params;\n}\n/**\n * meta 配置\n * @param params\n */\nexport function meta(params) {\n var _a;\n var options = params.options;\n var hierarchyConfig = options.hierarchyConfig,\n meta = options.meta;\n return flow(scale({}, (_a = {}, _a[SUNBURST_Y_FIELD] = get(meta, get(hierarchyConfig, ['field'], 'value')), _a)))(params);\n}\n/**\n * tooltip 配置\n * @param params\n */\nexport function tooltip(params) {\n var chart = params.chart,\n options = params.options;\n var tooltip = options.tooltip;\n if (tooltip === false) {\n chart.tooltip(false);\n } else {\n var tooltipOptions = tooltip;\n // 设置了 fields,就不进行 customItems 了; 设置 formatter 时,需要搭配 fields\n if (!get(tooltip, 'fields')) {\n tooltipOptions = deepAssign({}, {\n customItems: function customItems(items) {\n return items.map(function (item) {\n var scales = get(chart.getOptions(), 'scales');\n var pathFormatter = get(scales, [SUNBURST_PATH_FIELD, 'formatter'], function (v) {\n return v;\n });\n var valueFormatter = get(scales, [SUNBURST_Y_FIELD, 'formatter'], function (v) {\n return v;\n });\n return __assign(__assign({}, item), {\n name: pathFormatter(item.data[SUNBURST_PATH_FIELD]),\n value: valueFormatter(item.data.value)\n });\n });\n }\n }, tooltipOptions);\n }\n chart.tooltip(tooltipOptions);\n }\n return params;\n}\nfunction adaptorInteraction(options) {\n var drilldown = options.drilldown,\n _a = options.interactions,\n interactions = _a === void 0 ? [] : _a;\n if (drilldown === null || drilldown === void 0 ? void 0 : drilldown.enabled) {\n return deepAssign({}, options, {\n interactions: __spreadArray(__spreadArray([], interactions, true), [{\n type: 'drill-down',\n cfg: {\n drillDownConfig: drilldown,\n transformData: transformData\n }\n }], false)\n });\n }\n return options;\n}\n/**\n * 交互配置\n * @param params\n * @returns\n */\nfunction interaction(params) {\n var chart = params.chart,\n options = params.options;\n var drilldown = options.drilldown;\n baseInteraction({\n chart: chart,\n options: adaptorInteraction(options)\n });\n // 适应下钻交互面包屑\n if (drilldown === null || drilldown === void 0 ? void 0 : drilldown.enabled) {\n // 为面包屑留出 25px 的空间\n chart.appendPadding = getAdjustAppendPadding(chart.appendPadding, get(drilldown, ['breadCrumb', 'position']));\n }\n return params;\n}\n/**\n * 旭日图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n // flow 的方式处理所有的配置到 G2 API\n return flow(theme, pattern('sunburstStyle'), geometry, axis, meta, legend, coordinate, tooltip, label, interaction, animation, annotation())(params);\n}","import { __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { NODE_ANCESTORS_FIELD } from '../../utils/hierarchy/util';\nimport { adaptor } from './adaptor';\nimport { DEFAULT_OPTIONS, SUNBURST_ANCESTOR_FIELD, SUNBURST_PATH_FIELD } from './constant';\nimport './interactions';\nvar Sunburst = /** @class */function (_super) {\n __extends(Sunburst, _super);\n function Sunburst() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'sunburst';\n return _this;\n }\n /**\n * 获取 旭日图 默认配置项\n * 供外部使用\n */\n Sunburst.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * 获取 旭日图 默认配置\n */\n Sunburst.prototype.getDefaultOptions = function () {\n return Sunburst.getDefaultOptions();\n };\n /**\n * 获取旭日图的适配器\n */\n Sunburst.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n /** 旭日图 节点的祖先节点 */\n Sunburst.SUNBURST_ANCESTOR_FIELD = SUNBURST_ANCESTOR_FIELD;\n /** 旭日图 节点的路径 */\n Sunburst.SUNBURST_PATH_FIELD = SUNBURST_PATH_FIELD;\n /** 节点的祖先节点 */\n Sunburst.NODE_ANCESTORS_FIELD = NODE_ANCESTORS_FIELD;\n return Sunburst;\n}(Plot);\nexport { Sunburst };","import { __assign } from \"tslib\";\nimport { get, isArray } from '@antv/util';\nimport { HIERARCHY_DATA_TRANSFORM_PARAMS } from '../../interactions/actions/drill-down';\nimport { treemap } from '../../utils/hierarchy/treemap';\nexport function findInteraction(interactions, interactionType) {\n if (!isArray(interactions)) return undefined;\n return interactions.find(function (i) {\n return i.type === interactionType;\n });\n}\nexport function enableInteraction(interactions, interactionType) {\n var interaction = findInteraction(interactions, interactionType);\n return interaction && interaction.enable !== false;\n}\n/**\n * 是否允许下钻交互\n * @param interactions\n * @param interactionType\n * @returns\n */\nexport function enableDrillInteraction(options) {\n var interactions = options.interactions,\n drilldown = options.drilldown;\n // 兼容旧版本, treemap-drill-down\n return get(drilldown, 'enabled') || enableInteraction(interactions, 'treemap-drill-down');\n}\nexport function resetDrillDown(chart) {\n var drillDownInteraction = chart.interactions['drill-down'];\n if (!drillDownInteraction) return;\n // @ts-ignore\n var drillDownAction = drillDownInteraction.context.actions.find(function (i) {\n return i.name === 'drill-down-action';\n });\n drillDownAction.reset();\n}\nexport function transformData(options) {\n var data = options.data,\n colorField = options.colorField,\n enableDrillDown = options.enableDrillDown,\n hierarchyConfig = options.hierarchyConfig;\n var nodes = treemap(data, __assign(__assign({}, hierarchyConfig), {\n // @ts-ignore\n type: 'hierarchy.treemap',\n field: 'value',\n as: ['x', 'y']\n }));\n var result = [];\n nodes.forEach(function (node) {\n if (node.depth === 0) {\n return null;\n }\n // 开启下钻,仅加载 depth === 1 的数据\n if (enableDrillDown && node.depth !== 1) {\n return null;\n }\n // 不开启下钻,加载所有叶子节点\n if (!enableDrillDown && node.children) {\n return null;\n }\n // path 信息仅挑选必要祖先元素属性,因为在有些属性是不必要(x, y), 或是不准确的(下钻时的 depth),不对外透出\n var curPath = node.ancestors().map(function (n) {\n return {\n data: n.data,\n height: n.height,\n value: n.value\n };\n });\n // 在下钻树图中,每次绘制的是当前层级信息,将父元素的层级信息(data.path) 做一层拼接。\n var path = enableDrillDown && isArray(data.path) ? curPath.concat(data.path.slice(1)) : curPath;\n var nodeInfo = Object.assign({}, node.data, __assign({\n x: node.x,\n y: node.y,\n depth: node.depth,\n value: node.value,\n path: path\n }, node));\n if (!node.data[colorField] && node.parent) {\n var ancestorNode = node.ancestors().find(function (n) {\n return n.data[colorField];\n });\n nodeInfo[colorField] = ancestorNode === null || ancestorNode === void 0 ? void 0 : ancestorNode.data[colorField];\n } else {\n nodeInfo[colorField] = node.data[colorField];\n }\n nodeInfo[HIERARCHY_DATA_TRANSFORM_PARAMS] = {\n hierarchyConfig: hierarchyConfig,\n colorField: colorField,\n enableDrillDown: enableDrillDown\n };\n result.push(nodeInfo);\n });\n return result;\n}","import { __spreadArray } from \"tslib\";\nimport { get } from '@antv/util';\nimport { animation, annotation, interaction as commonInteraction, legend, theme, tooltip } from '../../adaptor/common';\nimport { polygon as basePolygon } from '../../adaptor/geometries/polygon';\nimport { pattern } from '../../adaptor/pattern';\nimport { deepAssign, flow } from '../../utils';\nimport { getAdjustAppendPadding } from '../../utils/padding';\nimport { enableDrillInteraction, findInteraction, transformData } from './utils';\n/**\n * 获取默认 option\n * @param params\n */\nfunction defaultOptions(params) {\n var options = params.options;\n var colorField = options.colorField;\n return deepAssign({\n options: {\n rawFields: ['value'],\n tooltip: {\n fields: ['name', 'value', colorField, 'path'],\n formatter: function formatter(data) {\n return {\n name: data.name,\n value: data.value\n };\n }\n }\n }\n }, params);\n}\n/**\n * 字段\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var color = options.color,\n colorField = options.colorField,\n rectStyle = options.rectStyle,\n hierarchyConfig = options.hierarchyConfig,\n rawFields = options.rawFields;\n var data = transformData({\n data: options.data,\n colorField: options.colorField,\n enableDrillDown: enableDrillInteraction(options),\n hierarchyConfig: hierarchyConfig\n });\n chart.data(data);\n // geometry\n basePolygon(deepAssign({}, params, {\n options: {\n xField: 'x',\n yField: 'y',\n seriesField: colorField,\n rawFields: rawFields,\n polygon: {\n color: color,\n style: rectStyle\n }\n }\n }));\n // 做一个反转,这样配合排序,可以将最大值放到左上角,最小值放到右下角\n chart.coordinate().reflect('y');\n return params;\n}\n/**\n * 坐标轴\n * @param params\n */\nfunction axis(params) {\n var chart = params.chart;\n chart.axis(false);\n return params;\n}\nfunction adaptorInteraction(options) {\n var drilldown = options.drilldown,\n _a = options.interactions,\n interactions = _a === void 0 ? [] : _a;\n var enableDrillDown = enableDrillInteraction(options);\n if (enableDrillDown) {\n return deepAssign({}, options, {\n interactions: __spreadArray(__spreadArray([], interactions, true), [{\n type: 'drill-down',\n // 🚓 这不是一个规范的 API,后续会变更。慎重参考\n cfg: {\n drillDownConfig: drilldown,\n transformData: transformData\n }\n }], false)\n });\n }\n return options;\n}\n/**\n * Interaction 配置\n * @param params\n */\nexport function interaction(params) {\n var chart = params.chart,\n options = params.options;\n var interactions = options.interactions,\n drilldown = options.drilldown;\n commonInteraction({\n chart: chart,\n options: adaptorInteraction(options)\n });\n // 适配 view-zoom\n var viewZoomInteraction = findInteraction(interactions, 'view-zoom');\n if (viewZoomInteraction) {\n // 开启缩放 interaction 后,则阻止默认滚动事件,避免整个窗口的滚动\n if (viewZoomInteraction.enable !== false) {\n chart.getCanvas().on('mousewheel', function (ev) {\n ev.preventDefault();\n });\n } else {\n // 手动关闭后,清除。仅对声明 viewZoomInteraction 的清除。\n chart.getCanvas().off('mousewheel');\n }\n }\n // 适应下钻交互面包屑\n var enableDrillDown = enableDrillInteraction(options);\n if (enableDrillDown) {\n // 为面包屑在底部留出 25px 的空间\n chart.appendPadding = getAdjustAppendPadding(chart.appendPadding, get(drilldown, ['breadCrumb', 'position']));\n }\n return params;\n}\n/**\n * 矩形树图\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n return flow(defaultOptions, theme, pattern('rectStyle'), geometry, axis, legend, tooltip, interaction, animation, annotation())(params);\n}","export var DEFAULT_OPTIONS = {\n // 默认按照 name 字段对颜色进行分类\n colorField: 'name',\n rectStyle: {\n lineWidth: 1,\n stroke: '#fff'\n },\n hierarchyConfig: {\n tile: 'treemapSquarify'\n },\n label: {\n fields: ['name'],\n layout: {\n type: 'limit-in-shape'\n }\n },\n tooltip: {\n showMarkers: false,\n showTitle: false\n },\n // 下钻交互配置,默认不开启\n drilldown: {\n enabled: false,\n breadCrumb: {\n position: 'bottom-left',\n rootText: '初始',\n dividerText: '/',\n textStyle: {\n fontSize: 12,\n fill: 'rgba(0, 0, 0, 0.65)',\n cursor: 'pointer'\n },\n activeTextStyle: {\n fill: '#87B5FF'\n }\n }\n }\n};","// 一些字段常量定义,需要在文档初告知用户\nexport var ID_FIELD = 'id';\nexport var PATH_FIELD = 'path';\n/**\n * 韦恩图 默认配置项\n */\nexport var DEFAULT_OPTIONS = {\n appendPadding: [10, 0, 20, 0],\n blendMode: 'multiply',\n tooltip: {\n showTitle: false,\n showMarkers: false,\n fields: ['id', 'size'],\n formatter: function formatter(datum) {\n return {\n name: datum.id,\n value: datum.size\n };\n }\n },\n legend: {\n position: 'top-left'\n },\n label: {\n style: {\n textAlign: 'center',\n fill: '#fff'\n }\n },\n // 默认不开启 图例筛选交互\n interactions: [{\n type: 'legend-filter',\n enable: false\n }],\n state: {\n active: {\n style: {\n stroke: '#000'\n }\n },\n selected: {\n style: {\n stroke: '#000',\n lineWidth: 2\n }\n },\n inactive: {\n style: {\n fillOpacity: 0.3,\n strokeOpacity: 0.3\n }\n }\n },\n // 韦恩图的默认内置注册的交互\n defaultInteractions: ['tooltip', 'venn-legend-active']\n};","import { __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { adaptor } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constant';\nimport './interactions';\nimport { enableInteraction, resetDrillDown, transformData } from './utils';\nvar Treemap = /** @class */function (_super) {\n __extends(Treemap, _super);\n function Treemap() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'treemap';\n return _this;\n }\n /**\n * 获取 矩阵树图 默认配置项\n * 供外部使用\n */\n Treemap.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * changeData\n */\n Treemap.prototype.changeData = function (data) {\n var _a = this.options,\n colorField = _a.colorField,\n interactions = _a.interactions,\n hierarchyConfig = _a.hierarchyConfig;\n this.updateOption({\n data: data\n });\n var transData = transformData({\n data: data,\n colorField: colorField,\n enableDrillDown: enableInteraction(interactions, 'treemap-drill-down'),\n hierarchyConfig: hierarchyConfig\n });\n this.chart.changeData(transData);\n resetDrillDown(this.chart);\n };\n /**\n * 获取 矩阵树图 默认配置\n */\n Treemap.prototype.getDefaultOptions = function () {\n return Treemap.getDefaultOptions();\n };\n Treemap.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Treemap;\n}(Plot);\nexport { Treemap };","/** tofront: 同步所有元素的位置 */\nexport function placeElementsOrdered(view) {\n if (!view) {\n return;\n }\n var elements = view.geometries[0].elements;\n elements.forEach(function (elem) {\n elem.shape.toFront();\n });\n}","import { __extends } from \"tslib\";\nimport { getActionClass } from '@antv/g2';\nimport { placeElementsOrdered } from '../util';\nvar ElementActiveAction = getActionClass('element-active');\nvar VennElementActive = /** @class */function (_super) {\n __extends(VennElementActive, _super);\n function VennElementActive() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * 同步所有元素的位置\n */\n VennElementActive.prototype.syncElementsPos = function () {\n placeElementsOrdered(this.context.view);\n };\n /** 激活图形元素 */\n VennElementActive.prototype.active = function () {\n _super.prototype.active.call(this);\n this.syncElementsPos();\n };\n /** toggle 图形元素激活状态 */\n VennElementActive.prototype.toggle = function () {\n _super.prototype.toggle.call(this);\n this.syncElementsPos();\n };\n /** 重置 */\n VennElementActive.prototype.reset = function () {\n _super.prototype.reset.call(this);\n this.syncElementsPos();\n };\n return VennElementActive;\n}(ElementActiveAction);\nexport { VennElementActive };","import { __extends } from \"tslib\";\nimport { getActionClass } from '@antv/g2';\nimport { placeElementsOrdered } from '../util';\nvar ElementHighlightAction = getActionClass('element-highlight');\nvar VennElementHighlight = /** @class */function (_super) {\n __extends(VennElementHighlight, _super);\n function VennElementHighlight() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * 同步所有元素的位置\n */\n VennElementHighlight.prototype.syncElementsPos = function () {\n placeElementsOrdered(this.context.view);\n };\n /** 高亮图形元素 */\n VennElementHighlight.prototype.highlight = function () {\n _super.prototype.highlight.call(this);\n this.syncElementsPos();\n };\n /** toggle 图形元素高亮状态 */\n VennElementHighlight.prototype.toggle = function () {\n _super.prototype.toggle.call(this);\n this.syncElementsPos();\n };\n /** 清楚 */\n VennElementHighlight.prototype.clear = function () {\n _super.prototype.clear.call(this);\n this.syncElementsPos();\n };\n /** 重置 */\n VennElementHighlight.prototype.reset = function () {\n _super.prototype.reset.call(this);\n this.syncElementsPos();\n };\n return VennElementHighlight;\n}(ElementHighlightAction);\nexport { VennElementHighlight };","import { __extends } from \"tslib\";\nimport { getActionClass } from '@antv/g2';\nimport { placeElementsOrdered } from '../util';\nvar ElementSelectedAction = getActionClass('element-selected');\nvar ElementSingleSelectedAction = getActionClass('element-single-selected');\n/**\n * 韦恩图元素 多选交互\n */\nvar VennElementSelected = /** @class */function (_super) {\n __extends(VennElementSelected, _super);\n function VennElementSelected() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * 同步所有元素的位置\n */\n VennElementSelected.prototype.syncElementsPos = function () {\n placeElementsOrdered(this.context.view);\n };\n /** 激活图形元素 */\n VennElementSelected.prototype.selected = function () {\n _super.prototype.selected.call(this);\n this.syncElementsPos();\n };\n /** toggle 图形元素激活状态 */\n VennElementSelected.prototype.toggle = function () {\n _super.prototype.toggle.call(this);\n this.syncElementsPos();\n };\n /** 重置 */\n VennElementSelected.prototype.reset = function () {\n _super.prototype.reset.call(this);\n this.syncElementsPos();\n };\n return VennElementSelected;\n}(ElementSelectedAction);\nexport { VennElementSelected };\n/**\n * 韦恩图元素 单选交互\n */\nvar VennElementSingleSelected = /** @class */function (_super) {\n __extends(VennElementSingleSelected, _super);\n function VennElementSingleSelected() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * 同步所有元素的位置\n */\n VennElementSingleSelected.prototype.syncElementsPos = function () {\n placeElementsOrdered(this.context.view);\n };\n /** 激活图形元素 */\n VennElementSingleSelected.prototype.selected = function () {\n _super.prototype.selected.call(this);\n this.syncElementsPos();\n };\n /** toggle 图形元素激活状态 */\n VennElementSingleSelected.prototype.toggle = function () {\n _super.prototype.toggle.call(this);\n this.syncElementsPos();\n };\n /** 重置 */\n VennElementSingleSelected.prototype.reset = function () {\n _super.prototype.reset.call(this);\n this.syncElementsPos();\n };\n return VennElementSingleSelected;\n}(ElementSingleSelectedAction);\nexport { VennElementSingleSelected };","import { registerAction, registerInteraction } from '@antv/g2';\nimport { VennElementActive } from './actions/active';\nimport { VennElementHighlight } from './actions/highlight';\nimport { VennElementSelected, VennElementSingleSelected } from './actions/selected';\n/** ================== 注册交互反馈 aciton ================== */\nregisterAction('venn-element-active', VennElementActive);\nregisterAction('venn-element-highlight', VennElementHighlight);\nregisterAction('venn-element-selected', VennElementSelected);\nregisterAction('venn-element-single-selected', VennElementSingleSelected);\n/** ================== 注册交互 ================== */\n// ========= Active 交互 =========\nregisterInteraction('venn-element-active', {\n start: [{\n trigger: 'element:mouseenter',\n action: 'venn-element-active:active'\n }],\n end: [{\n trigger: 'element:mouseleave',\n action: 'venn-element-active:reset'\n }]\n});\n// ========= 高亮 交互 =========\nregisterInteraction('venn-element-highlight', {\n start: [{\n trigger: 'element:mouseenter',\n action: 'venn-element-highlight:highlight'\n }],\n end: [{\n trigger: 'element:mouseleave',\n action: 'venn-element-highlight:reset'\n }]\n});\n// ========= Selected 交互 =========\n// 点击 venn element (可多选)\nregisterInteraction('venn-element-selected', {\n start: [{\n trigger: 'element:click',\n action: 'venn-element-selected:toggle'\n }],\n rollback: [{\n trigger: 'dblclick',\n action: ['venn-element-selected:reset']\n }]\n});\n// 点击 venn element (单选)\nregisterInteraction('venn-element-single-selected', {\n start: [{\n trigger: 'element:click',\n action: 'venn-element-single-selected:toggle'\n }],\n rollback: [{\n trigger: 'dblclick',\n action: ['venn-element-single-selected:reset']\n }]\n});\n// ========= 韦恩图的图例事件,单独注册 =========\n// legend hover,element active\nregisterInteraction('venn-legend-active', {\n start: [{\n trigger: 'legend-item:mouseenter',\n action: ['list-active:active', 'venn-element-active:active']\n }],\n end: [{\n trigger: 'legend-item:mouseleave',\n action: ['list-active:reset', 'venn-element-active:reset']\n }]\n});\n// legend hover,element active\nregisterInteraction('venn-legend-highlight', {\n start: [{\n trigger: 'legend-item:mouseenter',\n action: ['legend-item-highlight:highlight', 'venn-element-highlight:highlight']\n }],\n end: [{\n trigger: 'legend-item:mouseleave',\n action: ['legend-item-highlight:reset', 'venn-element-highlight:reset']\n }]\n});","import { __extends } from \"tslib\";\nimport { GeometryLabel, registerGeometryLabel } from '@antv/g2';\n// Step 1\n// 自定义 Label 类\n// 需要继承 GeometryLabel 基类\nvar VennLabel = /** @class */function (_super) {\n __extends(VennLabel, _super);\n function VennLabel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * 获取每个 label 的位置\n * @param labelCfg\n * @param mappingData\n * @param index\n * @returns label point\n */\n VennLabel.prototype.getLabelPoint = function (labelCfg, mappingData, index) {\n var _a = labelCfg.data,\n x = _a.x,\n y = _a.y;\n var _b = labelCfg.customLabelInfo,\n offsetX = _b.offsetX,\n offsetY = _b.offsetY;\n return {\n content: labelCfg.content[index],\n x: x + offsetX,\n y: y + offsetY\n };\n };\n return VennLabel;\n}(GeometryLabel);\n// Step 2: 注册 CustomLabel\nregisterGeometryLabel('venn', VennLabel);","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\nexport default isArray;","import { isArray } from 'lodash-es';\nvar SPACES = \"\\t\\n\\x0B\\f\\r \\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\";\nvar PATH_COMMAND = new RegExp('([a-z])[' + SPACES + ',]*((-?\\\\d*\\\\.?\\\\d*(?:e[\\\\-+]?\\\\d+)?[' + SPACES + ']*,?[' + SPACES + ']*)+)', 'ig');\nvar PATH_VALUES = new RegExp('(-?\\\\d*\\\\.?\\\\d*(?:e[\\\\-+]?\\\\d+)?)[' + SPACES + ']*,?[' + SPACES + ']*', 'ig');\n// Parses given path string into an array of arrays of path segments\nexport default function parsePathString(pathString) {\n if (!pathString) {\n return null;\n }\n if (isArray(pathString)) {\n return pathString;\n }\n var paramCounts = {\n a: 7,\n c: 6,\n o: 2,\n h: 1,\n l: 2,\n m: 2,\n r: 4,\n q: 4,\n s: 4,\n t: 2,\n v: 1,\n u: 3,\n z: 0\n };\n var data = [];\n String(pathString).replace(PATH_COMMAND, function (a, b, c) {\n var params = [];\n var name = b.toLowerCase();\n c.replace(PATH_VALUES, function (a, b) {\n b && params.push(+b);\n });\n if (name === 'm' && params.length > 2) {\n data.push([b].concat(params.splice(0, 2)));\n name = 'l';\n b = b === 'm' ? 'l' : 'L';\n }\n if (name === 'o' && params.length === 1) {\n data.push([b, params[0]]);\n }\n if (name === 'r') {\n data.push([b].concat(params));\n } else {\n while (params.length >= paramCounts[name]) {\n data.push([b].concat(params.splice(0, paramCounts[name])));\n if (!paramCounts[name]) {\n break;\n }\n }\n }\n return '';\n });\n return data;\n}","var TAU = Math.PI * 2;\nvar mapToEllipse = function mapToEllipse(_a, rx, ry, cosphi, sinphi, centerx, centery) {\n var x = _a.x,\n y = _a.y;\n x *= rx;\n y *= ry;\n var xp = cosphi * x - sinphi * y;\n var yp = sinphi * x + cosphi * y;\n return {\n x: xp + centerx,\n y: yp + centery\n };\n};\nvar approxUnitArc = function approxUnitArc(ang1, ang2) {\n // If 90 degree circular arc, use a constant\n // as derived from http://spencermortensen.com/articles/bezier-circle\n var a = ang2 === 1.5707963267948966 ? 0.551915024494 : ang2 === -1.5707963267948966 ? -0.551915024494 : 4 / 3 * Math.tan(ang2 / 4);\n var x1 = Math.cos(ang1);\n var y1 = Math.sin(ang1);\n var x2 = Math.cos(ang1 + ang2);\n var y2 = Math.sin(ang1 + ang2);\n return [{\n x: x1 - y1 * a,\n y: y1 + x1 * a\n }, {\n x: x2 + y2 * a,\n y: y2 - x2 * a\n }, {\n x: x2,\n y: y2\n }];\n};\nvar vectorAngle = function vectorAngle(ux, uy, vx, vy) {\n var sign = ux * vy - uy * vx < 0 ? -1 : 1;\n var dot = ux * vx + uy * vy;\n if (dot > 1) {\n dot = 1;\n }\n if (dot < -1) {\n dot = -1;\n }\n return sign * Math.acos(dot);\n};\nvar getArcCenter = function getArcCenter(px, py, cx, cy, rx, ry, largeArcFlag, sweepFlag, sinphi, cosphi, pxp, pyp) {\n var rxsq = Math.pow(rx, 2);\n var rysq = Math.pow(ry, 2);\n var pxpsq = Math.pow(pxp, 2);\n var pypsq = Math.pow(pyp, 2);\n var radicant = rxsq * rysq - rxsq * pypsq - rysq * pxpsq;\n if (radicant < 0) {\n radicant = 0;\n }\n radicant /= rxsq * pypsq + rysq * pxpsq;\n radicant = Math.sqrt(radicant) * (largeArcFlag === sweepFlag ? -1 : 1);\n var centerxp = radicant * rx / ry * pyp;\n var centeryp = radicant * -ry / rx * pxp;\n var centerx = cosphi * centerxp - sinphi * centeryp + (px + cx) / 2;\n var centery = sinphi * centerxp + cosphi * centeryp + (py + cy) / 2;\n var vx1 = (pxp - centerxp) / rx;\n var vy1 = (pyp - centeryp) / ry;\n var vx2 = (-pxp - centerxp) / rx;\n var vy2 = (-pyp - centeryp) / ry;\n var ang1 = vectorAngle(1, 0, vx1, vy1);\n var ang2 = vectorAngle(vx1, vy1, vx2, vy2);\n if (sweepFlag === 0 && ang2 > 0) {\n ang2 -= TAU;\n }\n if (sweepFlag === 1 && ang2 < 0) {\n ang2 += TAU;\n }\n return [centerx, centery, ang1, ang2];\n};\nvar arcToBezier = function arcToBezier(_a) {\n var px = _a.px,\n py = _a.py,\n cx = _a.cx,\n cy = _a.cy,\n rx = _a.rx,\n ry = _a.ry,\n _b = _a.xAxisRotation,\n xAxisRotation = _b === void 0 ? 0 : _b,\n _c = _a.largeArcFlag,\n largeArcFlag = _c === void 0 ? 0 : _c,\n _d = _a.sweepFlag,\n sweepFlag = _d === void 0 ? 0 : _d;\n var curves = [];\n if (rx === 0 || ry === 0) {\n return [{\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 0,\n x: cx,\n y: cy\n }];\n }\n var sinphi = Math.sin(xAxisRotation * TAU / 360);\n var cosphi = Math.cos(xAxisRotation * TAU / 360);\n var pxp = cosphi * (px - cx) / 2 + sinphi * (py - cy) / 2;\n var pyp = -sinphi * (px - cx) / 2 + cosphi * (py - cy) / 2;\n if (pxp === 0 && pyp === 0) {\n return [{\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 0,\n x: cx,\n y: cy\n }];\n }\n rx = Math.abs(rx);\n ry = Math.abs(ry);\n var lambda = Math.pow(pxp, 2) / Math.pow(rx, 2) + Math.pow(pyp, 2) / Math.pow(ry, 2);\n if (lambda > 1) {\n rx *= Math.sqrt(lambda);\n ry *= Math.sqrt(lambda);\n }\n var _e = getArcCenter(px, py, cx, cy, rx, ry, largeArcFlag, sweepFlag, sinphi, cosphi, pxp, pyp),\n centerx = _e[0],\n centery = _e[1],\n ang1 = _e[2],\n ang2 = _e[3];\n // If 'ang2' == 90.0000000001, then `ratio` will evaluate to\n // 1.0000000001. This causes `segments` to be greater than one, which is an\n // unecessary split, and adds extra points to the bezier curve. To alleviate\n // this issue, we round to 1.0 when the ratio is close to 1.0.\n var ratio = Math.abs(ang2) / (TAU / 4);\n if (Math.abs(1.0 - ratio) < 0.0000001) {\n ratio = 1.0;\n }\n var segments = Math.max(Math.ceil(ratio), 1);\n ang2 /= segments;\n for (var i = 0; i < segments; i++) {\n curves.push(approxUnitArc(ang1, ang2));\n ang1 += ang2;\n }\n return curves.map(function (curve) {\n var _a = mapToEllipse(curve[0], rx, ry, cosphi, sinphi, centerx, centery),\n x1 = _a.x,\n y1 = _a.y;\n var _b = mapToEllipse(curve[1], rx, ry, cosphi, sinphi, centerx, centery),\n x2 = _b.x,\n y2 = _b.y;\n var _c = mapToEllipse(curve[2], rx, ry, cosphi, sinphi, centerx, centery),\n x = _c.x,\n y = _c.y;\n return {\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2,\n x: x,\n y: y\n };\n });\n};\nexport function arcToCubic(x1, y1, rx, ry, angle, LAF, SF, x2, y2) {\n var curves = arcToBezier({\n px: x1,\n py: y1,\n cx: x2,\n cy: y2,\n rx: rx,\n ry: ry,\n xAxisRotation: angle,\n largeArcFlag: LAF,\n sweepFlag: SF\n });\n return curves.reduce(function (prev, cur) {\n var x1 = cur.x1,\n y1 = cur.y1,\n x2 = cur.x2,\n y2 = cur.y2,\n x = cur.x,\n y = cur.y;\n prev.push(x1, y1, x2, y2, x, y);\n return prev;\n }, []);\n}","import { __assign } from \"tslib\";\nimport { registerShape, Util } from '@antv/g2';\nimport { parsePathString } from '@antv/path-util';\nimport { deepAssign } from '../../utils';\nimport { PATH_FIELD } from './constant';\n/**\n * 获取填充属性\n * @param cfg 图形绘制数据\n */\nfunction getFillAttrs(cfg) {\n // style.fill 优先级更高\n return deepAssign({}, cfg.defaultStyle, {\n fill: cfg.color\n }, cfg.style);\n}\nregisterShape('schema', 'venn', {\n draw: function draw(cfg, container) {\n var data = cfg.data;\n var segments = parsePathString(data[PATH_FIELD]);\n var fillAttrs = getFillAttrs(cfg);\n var group = container.addGroup({\n name: 'venn-shape'\n });\n group.addShape('path', {\n attrs: __assign(__assign({}, fillAttrs), {\n path: segments\n }),\n name: 'venn-path'\n });\n var _a = cfg.customInfo,\n offsetX = _a.offsetX,\n offsetY = _a.offsetY;\n var matrix = Util.transform(null, [['t', offsetX, offsetY]]);\n group.setMatrix(matrix);\n return group;\n },\n getMarker: function getMarker(markerCfg) {\n var color = markerCfg.color;\n return {\n symbol: 'circle',\n style: {\n lineWidth: 0,\n stroke: color,\n fill: color,\n r: 4\n }\n };\n }\n});","import colorUtil from '@antv/color-util';\n/*\n * interpolates between a set of colors uzing a bezier spline\n * blend mode formulas taken from http://www.venture-ware.com/kevin/coding/lets-learn-math-photoshop-blend-modes/\n */\nvar each = function each(f) {\n return function (c0, c1) {\n var out = [];\n out[0] = f(c0[0], c1[0]);\n out[1] = f(c0[1], c1[1]);\n out[2] = f(c0[2], c1[2]);\n return out;\n };\n};\n/**\n * 混合方法集合\n */\nvar blendObject = {\n normal: function normal(a) {\n return a;\n },\n multiply: function multiply(a, b) {\n return a * b / 255;\n },\n screen: function screen(a, b) {\n return 255 * (1 - (1 - a / 255) * (1 - b / 255));\n },\n overlay: function overlay(a, b) {\n return b < 128 ? 2 * a * b / 255 : 255 * (1 - 2 * (1 - a / 255) * (1 - b / 255));\n },\n darken: function darken(a, b) {\n return a > b ? b : a;\n },\n lighten: function lighten(a, b) {\n return a > b ? a : b;\n },\n dodge: function dodge(a, b) {\n if (a === 255) return 255;\n a = 255 * (b / 255) / (1 - a / 255);\n return a > 255 ? 255 : a;\n },\n burn: function burn(a, b) {\n // 参考 w3c 的写法,考虑除数为 0 的情况\n if (b === 255) return 255;else if (a === 0) return 0;else return 255 * (1 - Math.min(1, (1 - b / 255) / (a / 255)));\n }\n};\n/**\n * 获取混合方法\n */\nexport var innerBlend = function innerBlend(mode) {\n if (!blendObject[mode]) {\n throw new Error('unknown blend mode ' + mode);\n }\n return blendObject[mode];\n};\n/**\n * 混合颜色,并处理透明度情况\n * 参考:https://www.w3.org/TR/compositing/#blending\n * @param c0\n * @param c1\n * @param mode 混合模式\n * @return rbga\n */\nexport function blend(c0, c1, mode) {\n if (mode === void 0) {\n mode = 'normal';\n }\n // blendRgbArr: 生成不考虑透明度的 blend color: [r, g, b]\n var blendRgbArr = each(innerBlend(mode))(colorToArr(c0), colorToArr(c1));\n var _a = colorToArr(c0),\n r0 = _a[0],\n g0 = _a[1],\n b0 = _a[2],\n a0 = _a[3];\n var _b = colorToArr(c1),\n r1 = _b[0],\n g1 = _b[1],\n b1 = _b[2],\n a1 = _b[3];\n var a = Number((a0 + a1 * (1 - a0)).toFixed(2));\n var r = Math.round((a0 * (1 - a1) * (r0 / 255) + a0 * a1 * (blendRgbArr[0] / 255) + (1 - a0) * a1 * (r1 / 255)) / a * 255);\n var g = Math.round((a0 * (1 - a1) * (g0 / 255) + a0 * a1 * (blendRgbArr[1] / 255) + (1 - a0) * a1 * (g1 / 255)) / a * 255);\n var b = Math.round((a0 * (1 - a1) * (b0 / 255) + a0 * a1 * (blendRgbArr[2] / 255) + (1 - a0) * a1 * (b1 / 255)) / a * 255);\n return \"rgba(\".concat(r, \", \").concat(g, \", \").concat(b, \", \").concat(a, \")\");\n}\n/**\n * 统一颜色输入的格式 [r, g, b, a]\n * 参考:https://www.w3.org/TR/compositing/#blending\n * @param c color\n * @return [r, g, b, a]\n */\nexport function colorToArr(c) {\n var color = c.replace('/s+/g', ''); // 去除所有空格\n var rgbaArr;\n // 'red' -> [r, g, b, 1]\n if (typeof color === 'string' && !color.startsWith('rgba') && !color.startsWith('#')) {\n return rgbaArr = colorUtil.rgb2arr(colorUtil.toRGB(color)).concat([1]);\n }\n // rgba(255, 200, 125, 0.5) -> [r, g, b, a]\n if (color.startsWith('rgba')) rgbaArr = color.replace('rgba(', '').replace(')', '').split(',');\n // '#fff000' -> [r, g, b, 1]\n if (color.startsWith('#')) rgbaArr = colorUtil.rgb2arr(color).concat([1]); // 如果是 16 进制(6 位数),默认透明度 1\n // [r, g, b, a] 前三位取整\n return rgbaArr.map(function (item, index) {\n return index === 3 ? Number(item) : item | 0;\n });\n}","var SMALL = 1e-10;\n/** Returns the intersection area of a bunch of circles (where each circle\n is an object having an x,y and radius property) */\nexport function intersectionArea(circles, stats) {\n // get all the intersection points of the circles\n var intersectionPoints = getIntersectionPoints(circles);\n // filter out points that aren't included in all the circles\n var innerPoints = intersectionPoints.filter(function (p) {\n return containedInCircles(p, circles);\n });\n var arcArea = 0,\n polygonArea = 0,\n i;\n var arcs = [];\n // if we have intersection points that are within all the circles,\n // then figure out the area contained by them\n if (innerPoints.length > 1) {\n // sort the points by angle from the center of the polygon, which lets\n // us just iterate over points to get the edges\n var center = getCenter(innerPoints);\n for (i = 0; i < innerPoints.length; ++i) {\n var p = innerPoints[i];\n p.angle = Math.atan2(p.x - center.x, p.y - center.y);\n }\n innerPoints.sort(function (a, b) {\n return b.angle - a.angle;\n });\n // iterate over all points, get arc between the points\n // and update the areas\n var p2 = innerPoints[innerPoints.length - 1];\n for (i = 0; i < innerPoints.length; ++i) {\n var p1 = innerPoints[i];\n // polygon area updates easily ...\n polygonArea += (p2.x + p1.x) * (p1.y - p2.y);\n // updating the arc area is a little more involved\n var midPoint = {\n x: (p1.x + p2.x) / 2,\n y: (p1.y + p2.y) / 2\n };\n var arc = null;\n for (var j = 0; j < p1.parentIndex.length; ++j) {\n if (p2.parentIndex.indexOf(p1.parentIndex[j]) > -1) {\n // figure out the angle halfway between the two points\n // on the current circle\n var circle = circles[p1.parentIndex[j]],\n a1 = Math.atan2(p1.x - circle.x, p1.y - circle.y),\n a2 = Math.atan2(p2.x - circle.x, p2.y - circle.y);\n var angleDiff = a2 - a1;\n if (angleDiff < 0) {\n angleDiff += 2 * Math.PI;\n }\n // and use that angle to figure out the width of the\n // arc\n var a = a2 - angleDiff / 2;\n var width = distance(midPoint, {\n x: circle.x + circle.radius * Math.sin(a),\n y: circle.y + circle.radius * Math.cos(a)\n });\n // clamp the width to the largest is can actually be\n // (sometimes slightly overflows because of FP errors)\n if (width > circle.radius * 2) {\n width = circle.radius * 2;\n }\n // pick the circle whose arc has the smallest width\n if (arc === null || arc.width > width) {\n arc = {\n circle: circle,\n width: width,\n p1: p1,\n p2: p2\n };\n }\n }\n }\n if (arc !== null) {\n arcs.push(arc);\n arcArea += circleArea(arc.circle.radius, arc.width);\n p2 = p1;\n }\n }\n } else {\n // no intersection points, is either disjoint - or is completely\n // overlapped. figure out which by examining the smallest circle\n var smallest = circles[0];\n for (i = 1; i < circles.length; ++i) {\n if (circles[i].radius < smallest.radius) {\n smallest = circles[i];\n }\n }\n // make sure the smallest circle is completely contained in all\n // the other circles\n var disjoint = false;\n for (i = 0; i < circles.length; ++i) {\n if (distance(circles[i], smallest) > Math.abs(smallest.radius - circles[i].radius)) {\n disjoint = true;\n break;\n }\n }\n if (disjoint) {\n arcArea = polygonArea = 0;\n } else {\n arcArea = smallest.radius * smallest.radius * Math.PI;\n arcs.push({\n circle: smallest,\n p1: {\n x: smallest.x,\n y: smallest.y + smallest.radius\n },\n p2: {\n x: smallest.x - SMALL,\n y: smallest.y + smallest.radius\n },\n width: smallest.radius * 2\n });\n }\n }\n polygonArea /= 2;\n if (stats) {\n stats.area = arcArea + polygonArea;\n stats.arcArea = arcArea;\n stats.polygonArea = polygonArea;\n stats.arcs = arcs;\n stats.innerPoints = innerPoints;\n stats.intersectionPoints = intersectionPoints;\n }\n return arcArea + polygonArea;\n}\n/** returns whether a point is contained by all of a list of circles */\nexport function containedInCircles(point, circles) {\n for (var i = 0; i < circles.length; ++i) {\n if (distance(point, circles[i]) > circles[i].radius + SMALL) {\n return false;\n }\n }\n return true;\n}\n/** Gets all intersection points between a bunch of circles */\nfunction getIntersectionPoints(circles) {\n var ret = [];\n for (var i = 0; i < circles.length; ++i) {\n for (var j = i + 1; j < circles.length; ++j) {\n var intersect = circleCircleIntersection(circles[i], circles[j]);\n for (var k = 0; k < intersect.length; ++k) {\n var p = intersect[k];\n p.parentIndex = [i, j];\n ret.push(p);\n }\n }\n }\n return ret;\n}\n/** Circular segment area calculation. See http://mathworld.wolfram.com/CircularSegment.html */\nexport function circleArea(r, width) {\n return r * r * Math.acos(1 - width / r) - (r - width) * Math.sqrt(width * (2 * r - width));\n}\n/** euclidean distance between two points */\nexport function distance(p1, p2) {\n return Math.sqrt((p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y));\n}\n/** Returns the overlap area of two circles of radius r1 and r2 - that\nhave their centers separated by distance d. Simpler faster\ncircle intersection for only two circles */\nexport function circleOverlap(r1, r2, d) {\n // no overlap\n if (d >= r1 + r2) {\n return 0;\n }\n // completely overlapped\n if (d <= Math.abs(r1 - r2)) {\n return Math.PI * Math.min(r1, r2) * Math.min(r1, r2);\n }\n var w1 = r1 - (d * d - r2 * r2 + r1 * r1) / (2 * d),\n w2 = r2 - (d * d - r1 * r1 + r2 * r2) / (2 * d);\n return circleArea(r1, w1) + circleArea(r2, w2);\n}\n/** Given two circles (containing a x/y/radius attributes),\nreturns the intersecting points if possible.\nnote: doesn't handle cases where there are infinitely many\nintersection points (circles are equivalent):, or only one intersection point*/\nexport function circleCircleIntersection(p1, p2) {\n var d = distance(p1, p2),\n r1 = p1.radius,\n r2 = p2.radius;\n // if to far away, or self contained - can't be done\n if (d >= r1 + r2 || d <= Math.abs(r1 - r2)) {\n return [];\n }\n var a = (r1 * r1 - r2 * r2 + d * d) / (2 * d),\n h = Math.sqrt(r1 * r1 - a * a),\n x0 = p1.x + a * (p2.x - p1.x) / d,\n y0 = p1.y + a * (p2.y - p1.y) / d,\n rx = -(p2.y - p1.y) * (h / d),\n ry = -(p2.x - p1.x) * (h / d);\n return [{\n x: x0 + rx,\n y: y0 - ry\n }, {\n x: x0 - rx,\n y: y0 + ry\n }];\n}\n/** Returns the center of a bunch of points */\nexport function getCenter(points) {\n var center = {\n x: 0,\n y: 0\n };\n for (var i = 0; i < points.length; ++i) {\n center.x += points[i].x;\n center.y += points[i].y;\n }\n center.x /= points.length;\n center.y /= points.length;\n return center;\n}","import { nelderMead } from 'fmin';\nimport { distance, getCenter, intersectionArea } from './circleintersection';\nfunction circleMargin(current, interior, exterior) {\n var margin = interior[0].radius - distance(interior[0], current),\n i,\n m;\n for (i = 1; i < interior.length; ++i) {\n m = interior[i].radius - distance(interior[i], current);\n if (m <= margin) {\n margin = m;\n }\n }\n for (i = 0; i < exterior.length; ++i) {\n m = distance(exterior[i], current) - exterior[i].radius;\n if (m <= margin) {\n margin = m;\n }\n }\n return margin;\n}\n// compute the center of some circles by maximizing the margin of\n// the center point relative to the circles (interior) after subtracting\n// nearby circles (exterior)\nexport function computeTextCentre(interior, exterior) {\n // get an initial estimate by sampling around the interior circles\n // and taking the point with the biggest margin\n var points = [];\n var i;\n for (i = 0; i < interior.length; ++i) {\n var c = interior[i];\n points.push({\n x: c.x,\n y: c.y\n });\n points.push({\n x: c.x + c.radius / 2,\n y: c.y\n });\n points.push({\n x: c.x - c.radius / 2,\n y: c.y\n });\n points.push({\n x: c.x,\n y: c.y + c.radius / 2\n });\n points.push({\n x: c.x,\n y: c.y - c.radius / 2\n });\n }\n var initial = points[0],\n margin = circleMargin(points[0], interior, exterior);\n for (i = 1; i < points.length; ++i) {\n var m = circleMargin(points[i], interior, exterior);\n if (m >= margin) {\n initial = points[i];\n margin = m;\n }\n }\n // maximize the margin numerically\n var solution = nelderMead(function (p) {\n return -1 * circleMargin({\n x: p[0],\n y: p[1]\n }, interior, exterior);\n }, [initial.x, initial.y], {\n maxIterations: 500,\n minErrorDelta: 1e-10\n }).x;\n var ret = {\n x: solution[0],\n y: solution[1]\n };\n // check solution, fallback as needed (happens if fully overlapped\n // etc)\n var valid = true;\n for (i = 0; i < interior.length; ++i) {\n if (distance(ret, interior[i]) > interior[i].radius) {\n valid = false;\n break;\n }\n }\n for (i = 0; i < exterior.length; ++i) {\n if (distance(ret, exterior[i]) < exterior[i].radius) {\n valid = false;\n break;\n }\n }\n if (!valid) {\n if (interior.length == 1) {\n ret = {\n x: interior[0].x,\n y: interior[0].y\n };\n } else {\n var areaStats = {};\n intersectionArea(interior, areaStats);\n if (areaStats.arcs.length === 0) {\n ret = {\n x: 0,\n y: -1000,\n disjoint: true\n };\n } else if (areaStats.arcs.length == 1) {\n ret = {\n x: areaStats.arcs[0].circle.x,\n y: areaStats.arcs[0].circle.y\n };\n } else if (exterior.length) {\n // try again without other circles\n ret = computeTextCentre(interior, []);\n } else {\n // take average of all the points in the intersection\n // polygon. this should basically never happen\n // and has some issues:\n // https://github.com/benfred/venn.js/issues/48#issuecomment-146069777\n ret = getCenter(areaStats.arcs.map(function (a) {\n return a.p1;\n }));\n }\n }\n }\n return ret;\n}\n// given a dictionary of {setid : circle}, returns\n// a dictionary of setid to list of circles that completely overlap it\nfunction getOverlappingCircles(circles) {\n var ret = {},\n circleids = [];\n for (var circleid in circles) {\n circleids.push(circleid);\n ret[circleid] = [];\n }\n for (var i = 0; i < circleids.length; i++) {\n var a = circles[circleids[i]];\n for (var j = i + 1; j < circleids.length; ++j) {\n var b = circles[circleids[j]],\n d = distance(a, b);\n if (d + b.radius <= a.radius + 1e-10) {\n ret[circleids[j]].push(circleids[i]);\n } else if (d + a.radius <= b.radius + 1e-10) {\n ret[circleids[i]].push(circleids[j]);\n }\n }\n }\n return ret;\n}\nexport function computeTextCentres(circles, areas) {\n var ret = {},\n overlapped = getOverlappingCircles(circles);\n for (var i = 0; i < areas.length; ++i) {\n var area = areas[i].sets,\n areaids = {},\n exclude = {};\n for (var j = 0; j < area.length; ++j) {\n areaids[area[j]] = true;\n var overlaps = overlapped[area[j]];\n // keep track of any circles that overlap this area,\n // and don't consider for purposes of computing the text\n // centre\n for (var k = 0; k < overlaps.length; ++k) {\n exclude[overlaps[k]] = true;\n }\n }\n var interior = [],\n exterior = [];\n for (var setid in circles) {\n if (setid in areaids) {\n interior.push(circles[setid]);\n } else if (!(setid in exclude)) {\n exterior.push(circles[setid]);\n }\n }\n var centre = computeTextCentre(interior, exterior);\n ret[area] = centre;\n if (centre.disjoint && areas[i].size > 0) {\n console.log('WARNING: area ' + area + ' not represented on screen');\n }\n }\n return ret;\n}\n/**\n * 根据圆心(x, y) 半径 r 返回圆的绘制 path\n * @param x 圆心点 x\n * @param y 圆心点 y\n * @param r 圆的半径\n * @returns 圆的 path\n */\nexport function circlePath(x, y, r) {\n var ret = [];\n // ret.push('\\nM', x, y);\n // ret.push('\\nm', -r, 0);\n // ret.push('\\na', r, r, 0, 1, 0, r * 2, 0);\n // ret.push('\\na', r, r, 0, 1, 0, -r * 2, 0);\n var x0 = x - r;\n var y0 = y;\n ret.push('M', x0, y0);\n ret.push('A', r, r, 0, 1, 0, x0 + 2 * r, y0);\n ret.push('A', r, r, 0, 1, 0, x0, y0);\n return ret.join(' ');\n}\n// inverse of the circlePath function, returns a circle object from an svg path\nexport function circleFromPath(path) {\n var tokens = path.split(' ');\n return {\n x: parseFloat(tokens[1]),\n y: parseFloat(tokens[2]),\n radius: -parseFloat(tokens[4])\n };\n}\n/** returns a svg path of the intersection area of a bunch of circles */\nexport function intersectionAreaPath(circles) {\n var stats = {};\n intersectionArea(circles, stats);\n var arcs = stats.arcs;\n if (arcs.length === 0) {\n return 'M 0 0';\n } else if (arcs.length == 1) {\n var circle = arcs[0].circle;\n return circlePath(circle.x, circle.y, circle.radius);\n } else {\n // draw path around arcs\n var ret = ['\\nM', arcs[0].p2.x, arcs[0].p2.y];\n for (var i = 0; i < arcs.length; ++i) {\n var arc = arcs[i],\n r = arc.circle.radius,\n wide = arc.width > r;\n ret.push('\\nA', r, r, 0, wide ? 1 : 0, 1, arc.p1.x, arc.p1.y);\n }\n return ret.join(' ');\n }\n}","import { bisect, conjugateGradient, nelderMead, norm2, scale, zeros, zerosM } from 'fmin';\nimport { circleCircleIntersection, circleOverlap, distance, intersectionArea } from './circleintersection';\n/** given a list of set objects, and their corresponding overlaps.\nupdates the (x, y, radius) attribute on each set such that their positions\nroughly correspond to the desired overlaps */\nexport function venn(areas, parameters) {\n parameters = parameters || {};\n parameters.maxIterations = parameters.maxIterations || 500;\n var initialLayout = parameters.initialLayout || bestInitialLayout;\n var loss = parameters.lossFunction || lossFunction;\n // add in missing pairwise areas as having 0 size\n areas = addMissingAreas(areas);\n // initial layout is done greedily\n var circles = initialLayout(areas, parameters);\n // transform x/y coordinates to a vector to optimize\n var initial = [],\n setids = [];\n var setid;\n for (setid in circles) {\n // eslint-disable-next-line\n if (circles.hasOwnProperty(setid)) {\n initial.push(circles[setid].x);\n initial.push(circles[setid].y);\n setids.push(setid);\n }\n }\n // optimize initial layout from our loss function\n var solution = nelderMead(function (values) {\n var current = {};\n for (var i = 0; i < setids.length; ++i) {\n var setid_1 = setids[i];\n current[setid_1] = {\n x: values[2 * i],\n y: values[2 * i + 1],\n radius: circles[setid_1].radius\n // size : circles[setid].size\n };\n }\n\n return loss(current, areas);\n }, initial, parameters);\n // transform solution vector back to x/y points\n var positions = solution.x;\n for (var i = 0; i < setids.length; ++i) {\n setid = setids[i];\n circles[setid].x = positions[2 * i];\n circles[setid].y = positions[2 * i + 1];\n }\n return circles;\n}\nvar SMALL = 1e-10;\n/** Returns the distance necessary for two circles of radius r1 + r2 to\nhave the overlap area 'overlap' */\nexport function distanceFromIntersectArea(r1, r2, overlap) {\n // handle complete overlapped circles\n if (Math.min(r1, r2) * Math.min(r1, r2) * Math.PI <= overlap + SMALL) {\n return Math.abs(r1 - r2);\n }\n return bisect(function (distance) {\n return circleOverlap(r1, r2, distance) - overlap;\n }, 0, r1 + r2);\n}\n/** Missing pair-wise intersection area data can cause problems:\n treating as an unknown means that sets will be laid out overlapping,\n which isn't what people expect. To reflect that we want disjoint sets\n here, set the overlap to 0 for all missing pairwise set intersections */\nfunction addMissingAreas(areas) {\n areas = areas.slice();\n // two circle intersections that aren't defined\n var ids = [],\n pairs = {};\n var i, j, a, b;\n for (i = 0; i < areas.length; ++i) {\n var area = areas[i];\n if (area.sets.length == 1) {\n ids.push(area.sets[0]);\n } else if (area.sets.length == 2) {\n a = area.sets[0];\n b = area.sets[1];\n // @ts-ignore\n pairs[[a, b]] = true;\n // @ts-ignore\n pairs[[b, a]] = true;\n }\n }\n ids.sort(function (a, b) {\n return a > b ? 1 : -1;\n });\n for (i = 0; i < ids.length; ++i) {\n a = ids[i];\n for (j = i + 1; j < ids.length; ++j) {\n b = ids[j];\n // @ts-ignore\n if (!([a, b] in pairs)) {\n areas.push({\n sets: [a, b],\n size: 0\n });\n }\n }\n }\n return areas;\n}\n/// Returns two matrices, one of the euclidean distances between the sets\n/// and the other indicating if there are subset or disjoint set relationships\nexport function getDistanceMatrices(areas, sets, setids) {\n // initialize an empty distance matrix between all the points\n var distances = zerosM(sets.length, sets.length),\n constraints = zerosM(sets.length, sets.length);\n // compute required distances between all the sets such that\n // the areas match\n areas.filter(function (x) {\n return x.sets.length == 2;\n }).map(function (current) {\n var left = setids[current.sets[0]],\n right = setids[current.sets[1]],\n r1 = Math.sqrt(sets[left].size / Math.PI),\n r2 = Math.sqrt(sets[right].size / Math.PI),\n distance = distanceFromIntersectArea(r1, r2, current.size);\n distances[left][right] = distances[right][left] = distance;\n // also update constraints to indicate if its a subset or disjoint\n // relationship\n var c = 0;\n if (current.size + 1e-10 >= Math.min(sets[left].size, sets[right].size)) {\n c = 1;\n } else if (current.size <= 1e-10) {\n c = -1;\n }\n constraints[left][right] = constraints[right][left] = c;\n });\n return {\n distances: distances,\n constraints: constraints\n };\n}\n/// computes the gradient and loss simulatenously for our constrained MDS optimizer\nfunction constrainedMDSGradient(x, fxprime, distances, constraints) {\n var loss = 0,\n i;\n for (i = 0; i < fxprime.length; ++i) {\n fxprime[i] = 0;\n }\n for (i = 0; i < distances.length; ++i) {\n var xi = x[2 * i],\n yi = x[2 * i + 1];\n for (var j = i + 1; j < distances.length; ++j) {\n var xj = x[2 * j],\n yj = x[2 * j + 1],\n dij = distances[i][j],\n constraint = constraints[i][j];\n var squaredDistance = (xj - xi) * (xj - xi) + (yj - yi) * (yj - yi),\n distance_1 = Math.sqrt(squaredDistance),\n delta = squaredDistance - dij * dij;\n if (constraint > 0 && distance_1 <= dij || constraint < 0 && distance_1 >= dij) {\n continue;\n }\n loss += 2 * delta * delta;\n fxprime[2 * i] += 4 * delta * (xi - xj);\n fxprime[2 * i + 1] += 4 * delta * (yi - yj);\n fxprime[2 * j] += 4 * delta * (xj - xi);\n fxprime[2 * j + 1] += 4 * delta * (yj - yi);\n }\n }\n return loss;\n}\n/// takes the best working variant of either constrained MDS or greedy\nexport function bestInitialLayout(areas, params) {\n var initial = greedyLayout(areas, params);\n var loss = params.lossFunction || lossFunction;\n // greedylayout is sufficient for all 2/3 circle cases. try out\n // constrained MDS for higher order problems, take its output\n // if it outperforms. (greedy is aesthetically better on 2/3 circles\n // since it axis aligns)\n if (areas.length >= 8) {\n var constrained = constrainedMDSLayout(areas, params),\n constrainedLoss = loss(constrained, areas),\n greedyLoss = loss(initial, areas);\n if (constrainedLoss + 1e-8 < greedyLoss) {\n initial = constrained;\n }\n }\n return initial;\n}\n/// use the constrained MDS variant to generate an initial layout\nexport function constrainedMDSLayout(areas, params) {\n params = params || {};\n var restarts = params.restarts || 10;\n // bidirectionally map sets to a rowid (so we can create a matrix)\n var sets = [],\n setids = {};\n var i;\n for (i = 0; i < areas.length; ++i) {\n var area = areas[i];\n if (area.sets.length == 1) {\n setids[area.sets[0]] = sets.length;\n sets.push(area);\n }\n }\n var matrices = getDistanceMatrices(areas, sets, setids);\n var distances = matrices.distances;\n var constraints = matrices.constraints;\n // keep distances bounded, things get messed up otherwise.\n // TODO: proper preconditioner?\n var norm = norm2(distances.map(norm2)) / distances.length;\n distances = distances.map(function (row) {\n return row.map(function (value) {\n return value / norm;\n });\n });\n var obj = function obj(x, fxprime) {\n return constrainedMDSGradient(x, fxprime, distances, constraints);\n };\n var best, current;\n for (i = 0; i < restarts; ++i) {\n var initial = zeros(distances.length * 2).map(Math.random);\n current = conjugateGradient(obj, initial, params);\n if (!best || current.fx < best.fx) {\n best = current;\n }\n }\n var positions = best.x;\n // translate rows back to (x,y,radius) coordinates\n var circles = {};\n for (i = 0; i < sets.length; ++i) {\n var set = sets[i];\n circles[set.sets[0]] = {\n x: positions[2 * i] * norm,\n y: positions[2 * i + 1] * norm,\n radius: Math.sqrt(set.size / Math.PI)\n };\n }\n if (params.history) {\n for (i = 0; i < params.history.length; ++i) {\n scale(params.history[i].x, norm);\n }\n }\n return circles;\n}\n/** Lays out a Venn diagram greedily, going from most overlapped sets to\nleast overlapped, attempting to position each new set such that the\noverlapping areas to already positioned sets are basically right */\nexport function greedyLayout(areas, params) {\n var loss = params && params.lossFunction ? params.lossFunction : lossFunction;\n // define a circle for each set\n var circles = {},\n setOverlaps = {};\n var set;\n for (var i = 0; i < areas.length; ++i) {\n var area = areas[i];\n if (area.sets.length == 1) {\n set = area.sets[0];\n circles[set] = {\n x: 1e10,\n y: 1e10,\n // rowid: circles.length, // fix to ->\n rowid: Object.keys(circles).length,\n size: area.size,\n radius: Math.sqrt(area.size / Math.PI)\n };\n setOverlaps[set] = [];\n }\n }\n areas = areas.filter(function (a) {\n return a.sets.length == 2;\n });\n // map each set to a list of all the other sets that overlap it\n for (var i = 0; i < areas.length; ++i) {\n var current = areas[i];\n // eslint-disable-next-line\n var weight = current.hasOwnProperty('weight') ? current.weight : 1.0;\n var left = current.sets[0],\n right = current.sets[1];\n // completely overlapped circles shouldn't be positioned early here\n if (current.size + SMALL >= Math.min(circles[left].size, circles[right].size)) {\n weight = 0;\n }\n setOverlaps[left].push({\n set: right,\n size: current.size,\n weight: weight\n });\n setOverlaps[right].push({\n set: left,\n size: current.size,\n weight: weight\n });\n }\n // get list of most overlapped sets\n var mostOverlapped = [];\n for (set in setOverlaps) {\n // eslint-disable-next-line\n if (setOverlaps.hasOwnProperty(set)) {\n var size = 0;\n for (var i = 0; i < setOverlaps[set].length; ++i) {\n size += setOverlaps[set][i].size * setOverlaps[set][i].weight;\n }\n mostOverlapped.push({\n set: set,\n size: size\n });\n }\n }\n // sort by size desc\n function sortOrder(a, b) {\n return b.size - a.size;\n }\n mostOverlapped.sort(sortOrder);\n // keep track of what sets have been laid out\n var positioned = {};\n function isPositioned(element) {\n return element.set in positioned;\n }\n // adds a point to the output\n function positionSet(point, index) {\n circles[index].x = point.x;\n circles[index].y = point.y;\n positioned[index] = true;\n }\n // add most overlapped set at (0,0)\n positionSet({\n x: 0,\n y: 0\n }, mostOverlapped[0].set);\n // get distances between all points. TODO, necessary?\n // answer: probably not\n // var distances = venn.getDistanceMatrices(circles, areas).distances;\n for (var i = 1; i < mostOverlapped.length; ++i) {\n var setIndex = mostOverlapped[i].set,\n overlap = setOverlaps[setIndex].filter(isPositioned);\n set = circles[setIndex];\n overlap.sort(sortOrder);\n if (overlap.length === 0) {\n // this shouldn't happen anymore with addMissingAreas\n throw 'ERROR: missing pairwise overlap information';\n }\n var points = [];\n for (var j = 0; j < overlap.length; ++j) {\n // get appropriate distance from most overlapped already added set\n var p1 = circles[overlap[j].set],\n d1 = distanceFromIntersectArea(set.radius, p1.radius, overlap[j].size);\n // sample positions at 90 degrees for maximum aesthetics\n points.push({\n x: p1.x + d1,\n y: p1.y\n });\n points.push({\n x: p1.x - d1,\n y: p1.y\n });\n points.push({\n y: p1.y + d1,\n x: p1.x\n });\n points.push({\n y: p1.y - d1,\n x: p1.x\n });\n // if we have at least 2 overlaps, then figure out where the\n // set should be positioned analytically and try those too\n for (var k = j + 1; k < overlap.length; ++k) {\n var p2 = circles[overlap[k].set],\n d2 = distanceFromIntersectArea(set.radius, p2.radius, overlap[k].size);\n var extraPoints = circleCircleIntersection({\n x: p1.x,\n y: p1.y,\n radius: d1\n }, {\n x: p2.x,\n y: p2.y,\n radius: d2\n });\n for (var l = 0; l < extraPoints.length; ++l) {\n points.push(extraPoints[l]);\n }\n }\n }\n // we have some candidate positions for the set, examine loss\n // at each position to figure out where to put it at\n var bestLoss = 1e50,\n bestPoint = points[0];\n for (var j = 0; j < points.length; ++j) {\n circles[setIndex].x = points[j].x;\n circles[setIndex].y = points[j].y;\n var localLoss = loss(circles, areas);\n if (localLoss < bestLoss) {\n bestLoss = localLoss;\n bestPoint = points[j];\n }\n }\n positionSet(bestPoint, setIndex);\n }\n return circles;\n}\n/** Given a bunch of sets, and the desired overlaps between these sets - computes\nthe distance from the actual overlaps to the desired overlaps. Note that\nthis method ignores overlaps of more than 2 circles */\nexport function lossFunction(sets, overlaps) {\n var output = 0;\n function getCircles(indices) {\n return indices.map(function (i) {\n return sets[i];\n });\n }\n for (var i = 0; i < overlaps.length; ++i) {\n var area = overlaps[i];\n var overlap = void 0;\n if (area.sets.length == 1) {\n continue;\n } else if (area.sets.length == 2) {\n var left = sets[area.sets[0]],\n right = sets[area.sets[1]];\n overlap = circleOverlap(left.radius, right.radius, distance(left, right));\n } else {\n overlap = intersectionArea(getCircles(area.sets));\n }\n // eslint-disable-next-line\n var weight = area.hasOwnProperty('weight') ? area.weight : 1.0;\n output += weight * (overlap - area.size) * (overlap - area.size);\n }\n return output;\n}\n// orientates a bunch of circles to point in orientation\nfunction orientateCircles(circles, orientation, orientationOrder) {\n if (orientationOrder === null) {\n circles.sort(function (a, b) {\n return b.radius - a.radius;\n });\n } else {\n circles.sort(orientationOrder);\n }\n var i;\n // shift circles so largest circle is at (0, 0)\n if (circles.length > 0) {\n var largestX = circles[0].x,\n largestY = circles[0].y;\n for (i = 0; i < circles.length; ++i) {\n circles[i].x -= largestX;\n circles[i].y -= largestY;\n }\n }\n if (circles.length == 2) {\n // if the second circle is a subset of the first, arrange so that\n // it is off to one side. hack for https://github.com/benfred/venn.js/issues/120\n var dist = distance(circles[0], circles[1]);\n if (dist < Math.abs(circles[1].radius - circles[0].radius)) {\n circles[1].x = circles[0].x + circles[0].radius - circles[1].radius - 1e-10;\n circles[1].y = circles[0].y;\n }\n }\n // rotate circles so that second largest is at an angle of 'orientation'\n // from largest\n if (circles.length > 1) {\n var rotation = Math.atan2(circles[1].x, circles[1].y) - orientation;\n var x = void 0,\n y = void 0;\n var c = Math.cos(rotation),\n s = Math.sin(rotation);\n for (i = 0; i < circles.length; ++i) {\n x = circles[i].x;\n y = circles[i].y;\n circles[i].x = c * x - s * y;\n circles[i].y = s * x + c * y;\n }\n }\n // mirror solution if third solution is above plane specified by\n // first two circles\n if (circles.length > 2) {\n var angle = Math.atan2(circles[2].x, circles[2].y) - orientation;\n while (angle < 0) {\n angle += 2 * Math.PI;\n }\n while (angle > 2 * Math.PI) {\n angle -= 2 * Math.PI;\n }\n if (angle > Math.PI) {\n var slope = circles[1].y / (1e-10 + circles[1].x);\n for (i = 0; i < circles.length; ++i) {\n var d = (circles[i].x + slope * circles[i].y) / (1 + slope * slope);\n circles[i].x = 2 * d - circles[i].x;\n circles[i].y = 2 * d * slope - circles[i].y;\n }\n }\n }\n}\nexport function disjointCluster(circles) {\n // union-find clustering to get disjoint sets\n circles.map(function (circle) {\n circle.parent = circle;\n });\n // path compression step in union find\n function find(circle) {\n if (circle.parent !== circle) {\n circle.parent = find(circle.parent);\n }\n return circle.parent;\n }\n function union(x, y) {\n var xRoot = find(x),\n yRoot = find(y);\n xRoot.parent = yRoot;\n }\n // get the union of all overlapping sets\n for (var i = 0; i < circles.length; ++i) {\n for (var j = i + 1; j < circles.length; ++j) {\n var maxDistance = circles[i].radius + circles[j].radius;\n if (distance(circles[i], circles[j]) + 1e-10 < maxDistance) {\n union(circles[j], circles[i]);\n }\n }\n }\n // find all the disjoint clusters and group them together\n var disjointClusters = {};\n var setid;\n for (var i = 0; i < circles.length; ++i) {\n setid = find(circles[i]).parent.setid;\n if (!(setid in disjointClusters)) {\n disjointClusters[setid] = [];\n }\n disjointClusters[setid].push(circles[i]);\n }\n // cleanup bookkeeping\n circles.map(function (circle) {\n delete circle.parent;\n });\n // return in more usable form\n var ret = [];\n for (setid in disjointClusters) {\n // eslint-disable-next-line\n if (disjointClusters.hasOwnProperty(setid)) {\n ret.push(disjointClusters[setid]);\n }\n }\n return ret;\n}\nfunction getBoundingBox(circles) {\n var minMax = function minMax(d) {\n var hi = Math.max.apply(null, circles.map(function (c) {\n return c[d] + c.radius;\n })),\n lo = Math.min.apply(null, circles.map(function (c) {\n return c[d] - c.radius;\n }));\n return {\n max: hi,\n min: lo\n };\n };\n return {\n xRange: minMax('x'),\n yRange: minMax('y')\n };\n}\nexport function normalizeSolution(solution, orientation, orientationOrder) {\n if (orientation === null) {\n orientation = Math.PI / 2;\n }\n // work with a list instead of a dictionary, and take a copy so we\n // don't mutate input\n var circles = [],\n i,\n setid;\n for (setid in solution) {\n // eslint-disable-next-line\n if (solution.hasOwnProperty(setid)) {\n var previous = solution[setid];\n circles.push({\n x: previous.x,\n y: previous.y,\n radius: previous.radius,\n setid: setid\n });\n }\n }\n // get all the disjoint clusters\n var clusters = disjointCluster(circles);\n // orientate all disjoint sets, get sizes\n for (i = 0; i < clusters.length; ++i) {\n orientateCircles(clusters[i], orientation, orientationOrder);\n var bounds = getBoundingBox(clusters[i]);\n clusters[i].size = (bounds.xRange.max - bounds.xRange.min) * (bounds.yRange.max - bounds.yRange.min);\n clusters[i].bounds = bounds;\n }\n clusters.sort(function (a, b) {\n return b.size - a.size;\n });\n // orientate the largest at 0,0, and get the bounds\n circles = clusters[0];\n // @ts-ignore fixme 从逻辑上看似乎是不对的,后续看看\n var returnBounds = circles.bounds;\n var spacing = (returnBounds.xRange.max - returnBounds.xRange.min) / 50;\n function addCluster(cluster, right, bottom) {\n if (!cluster) return;\n var bounds = cluster.bounds;\n var xOffset, yOffset, centreing;\n if (right) {\n xOffset = returnBounds.xRange.max - bounds.xRange.min + spacing;\n } else {\n xOffset = returnBounds.xRange.max - bounds.xRange.max;\n centreing = (bounds.xRange.max - bounds.xRange.min) / 2 - (returnBounds.xRange.max - returnBounds.xRange.min) / 2;\n if (centreing < 0) xOffset += centreing;\n }\n if (bottom) {\n yOffset = returnBounds.yRange.max - bounds.yRange.min + spacing;\n } else {\n yOffset = returnBounds.yRange.max - bounds.yRange.max;\n centreing = (bounds.yRange.max - bounds.yRange.min) / 2 - (returnBounds.yRange.max - returnBounds.yRange.min) / 2;\n if (centreing < 0) yOffset += centreing;\n }\n for (var j = 0; j < cluster.length; ++j) {\n cluster[j].x += xOffset;\n cluster[j].y += yOffset;\n circles.push(cluster[j]);\n }\n }\n var index = 1;\n while (index < clusters.length) {\n addCluster(clusters[index], true, false);\n addCluster(clusters[index + 1], false, true);\n addCluster(clusters[index + 2], true, true);\n index += 3;\n // have one cluster (in top left). lay out next three relative\n // to it in a grid\n returnBounds = getBoundingBox(circles);\n }\n // convert back to solution form\n var ret = {};\n for (i = 0; i < circles.length; ++i) {\n ret[circles[i].setid] = circles[i];\n }\n return ret;\n}\n/** Scales a solution from venn.venn or venn.greedyLayout such that it fits in\na rectangle of width/height - with padding around the borders. also\ncenters the diagram in the available space at the same time */\nexport function scaleSolution(solution, width, height, padding) {\n var circles = [],\n setids = [];\n for (var setid in solution) {\n // eslint-disable-next-line\n if (solution.hasOwnProperty(setid)) {\n setids.push(setid);\n circles.push(solution[setid]);\n }\n }\n width -= 2 * padding;\n height -= 2 * padding;\n var bounds = getBoundingBox(circles),\n xRange = bounds.xRange,\n yRange = bounds.yRange;\n if (xRange.max == xRange.min || yRange.max == yRange.min) {\n console.log('not scaling solution: zero size detected');\n return solution;\n }\n var xScaling = width / (xRange.max - xRange.min),\n yScaling = height / (yRange.max - yRange.min),\n scaling = Math.min(yScaling, xScaling),\n // while we're at it, center the diagram too\n xOffset = (width - (xRange.max - xRange.min) * scaling) / 2,\n yOffset = (height - (yRange.max - yRange.min) * scaling) / 2;\n var scaled = {};\n for (var i = 0; i < circles.length; ++i) {\n var circle = circles[i];\n scaled[setids[i]] = {\n radius: scaling * circle.radius,\n x: padding + xOffset + (circle.x - xRange.min) * scaling,\n y: padding + yOffset + (circle.y - yRange.min) * scaling\n };\n }\n return scaled;\n}","import { __assign } from \"tslib\";\nimport { assign, memoize } from '@antv/util';\nimport { LEVEL, log } from '../../utils';\nimport { blend } from '../../utils/color/blend';\nimport { ID_FIELD, PATH_FIELD } from './constant';\nimport { computeTextCentres, intersectionAreaPath } from './layout/diagram';\nimport { scaleSolution, venn } from './layout/layout';\n/**\n * 获取 颜色映射\n * @usage colorMap.get(id) => color\n *\n * @returns Map\n */\nexport var getColorMap = memoize(function (colorPalette, data, blendMode, setsField) {\n var colorMap = new Map();\n var colorPaletteLen = colorPalette.length;\n data.forEach(function (d, idx) {\n if (d[setsField].length === 1) {\n colorMap.set(d[ID_FIELD], colorPalette[(idx + colorPaletteLen) % colorPaletteLen]);\n } else {\n /** 一般都是可以获取到颜色的,如果不正确 就是输入了非法数据 */\n var colorArr = d[setsField].map(function (id) {\n return colorMap.get(id);\n });\n colorMap.set(d[ID_FIELD], colorArr.slice(1).reduce(function (a, b) {\n return blend(a, b, blendMode);\n }, colorArr[0]));\n }\n });\n return colorMap;\n}, function () {\n var params = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n params[_i] = arguments[_i];\n }\n return JSON.stringify(params);\n});\n/**\n * 给韦恩图数据进行布局\n *\n * @param data\n * @param width\n * @param height\n * @param padding\n * @returns 韦恩图数据\n */\nexport function layoutVennData(options, width, height, padding) {\n if (padding === void 0) {\n padding = 0;\n }\n var data = options.data,\n setsField = options.setsField,\n sizeField = options.sizeField;\n // 处理空数据的情况\n if (data.length === 0) {\n log(LEVEL.WARN, false, 'warn: %s', '数据不能为空');\n return [];\n }\n var vennData = data.map(function (d) {\n var _a;\n return __assign(__assign({}, d), (_a = {\n sets: d[setsField] || [],\n size: d[sizeField]\n }, _a[PATH_FIELD] = '', _a[ID_FIELD] = '', _a));\n });\n // 1. 进行排序,避免图形元素遮挡\n vennData.sort(function (a, b) {\n return a.sets.length - b.sets.length;\n });\n // todo 2. 可以在这里处理下非法数据输入,避免直接 crash\n var solution = venn(vennData);\n var circles = scaleSolution(solution, width, height, padding);\n var textCenters = computeTextCentres(circles, vennData);\n vennData.forEach(function (row) {\n var sets = row.sets;\n var id = sets.join(',');\n row[ID_FIELD] = id;\n // 保留 vennText 布局方法\n var setCircles = sets.map(function (set) {\n return circles[set];\n });\n var path = intersectionAreaPath(setCircles);\n if (!/[zZ]$/.test(path)) {\n path += ' Z';\n }\n row[PATH_FIELD] = path;\n var center = textCenters[id] || {\n x: 0,\n y: 0\n };\n assign(row, center);\n });\n return vennData;\n}\n/**\n * 检查是否存在 非法元素\n * @param legalArr 合法集合:['A', 'B']\n * @param testArr 检查集合:['A', 'B', 'C'] or ['A', 'C'](存在非法 'C')\n * @return boolean\n */\nexport function islegalSets(legalArr, testArr) {\n for (var i = 0; i < testArr.length; i++) {\n if (!legalArr.includes(testArr[i])) {\n return false;\n }\n }\n return true;\n}","import { __assign, __rest } from \"tslib\";\nimport { deepMix, get, isArray, isEqual } from '@antv/util';\nimport { animation, interaction, scale, theme, tooltip } from '../../adaptor/common';\nimport { schema as schemaGeometry } from '../../adaptor/geometries';\nimport { deepAssign, findGeometry, flow, getAdjustAppendPadding, LEVEL, log, normalPadding, resolveAllPadding, transformLabel } from '../../utils';\nimport { ID_FIELD } from './constant';\nimport './interactions';\nimport './label';\nimport './shape';\nimport { getColorMap, islegalSets, layoutVennData } from './utils';\n/** 图例默认预留空间 */\nexport var LEGEND_SPACE = 40;\n/**\n * 获取 color 映射\n */\nfunction colorMap(params, data, colorPalette) {\n var chart = params.chart,\n options = params.options;\n var blendMode = options.blendMode,\n setsField = options.setsField;\n var _a = chart.getTheme(),\n colors10 = _a.colors10,\n colors20 = _a.colors20;\n var palette = colorPalette;\n if (!isArray(palette)) {\n palette = data.filter(function (d) {\n return d[setsField].length === 1;\n }).length <= 10 ? colors10 : colors20;\n }\n var map = getColorMap(palette, data, blendMode, setsField);\n return function (id) {\n return map.get(id) || palette[0];\n };\n}\n/**\n * color options 转换\n */\nfunction transformColor(params, data) {\n var options = params.options;\n var color = options.color;\n if (typeof color !== 'function') {\n var colorPalette = typeof color === 'string' ? [color] : color;\n var map_1 = colorMap(params, data, colorPalette);\n return function (datum) {\n return map_1(datum[ID_FIELD]);\n };\n }\n return color;\n}\n/**\n * 处理 padding\n */\nfunction padding(params) {\n var chart = params.chart,\n options = params.options;\n var legend = options.legend,\n appendPadding = options.appendPadding,\n padding = options.padding;\n // 处理 legend 的位置. 默认预留 40px, 业务上可以通过 appendPadding 增加\n var tempPadding = normalPadding(appendPadding);\n if (legend !== false) {\n tempPadding = getAdjustAppendPadding(appendPadding, get(legend, 'position'), LEGEND_SPACE);\n }\n chart.appendPadding = resolveAllPadding([tempPadding, padding]);\n return params;\n}\n/**\n * 处理非法数据\n * @param params\n */\nfunction data(params) {\n var options = params.options;\n /* 如遇到 交集 中存在 非法元素 的情况,就过滤掉\n * 如:\n * data = [\n * { sets: ['A'], size: 3 }, // 集合\n * { sets: ['B'], size: 4 }, // 集合\n * { sets: ['A', 'B'], size: 2 }, // 交集\n * { sets: ['A', 'B', 'C'], size: 2 }, // 交集 (存在非法 C,过滤该条数据)\n * ...\n * ]\n */\n var data = options['data'];\n if (!data) {\n log(LEVEL.WARN, false, 'warn: %s', '数据不能为空');\n data = [];\n }\n // 合法元素的集合:['A', 'B']\n var currSets = data.filter(function (datum) {\n return datum.sets.length === 1;\n }).map(function (datum) {\n return datum.sets[0];\n });\n // 过滤 data\n var filterSets = data.filter(function (datum) {\n var sets = datum.sets;\n // 存在非法元素,就过滤这条数据\n return islegalSets(currSets, sets);\n });\n if (!isEqual(filterSets, data)) log(LEVEL.WARN, false, 'warn: %s', '交集中不能出现不存在的集合, 请输入合法数据');\n return deepMix({}, params, {\n options: {\n data: filterSets\n }\n });\n}\n/**\n * geometry 处理\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var pointStyle = options.pointStyle,\n setsField = options.setsField,\n sizeField = options.sizeField;\n // 获取容器大小\n var _a = normalPadding(chart.appendPadding),\n t = _a[0],\n r = _a[1],\n b = _a[2],\n l = _a[3];\n // 处理 legend 的位置. 默认预留 40px, 业务上可以通过 appendPadding 增加\n var customInfo = {\n offsetX: l,\n offsetY: t\n };\n // coordinateBBox + appendPadding = viewBBox, 不需要再计算 appendPadding 部分,因此直接使用 viewBBox\n var _b = chart.viewBBox,\n width = _b.width,\n height = _b.height;\n // 处理padding输入不合理的情况, w 和 h 不能为负数\n var vennData = layoutVennData(options, Math.max(width - (r + l), 0), Math.max(height - (t + b), 0), 0);\n chart.data(vennData);\n var ext = schemaGeometry(deepAssign({}, params, {\n options: {\n xField: 'x',\n yField: 'y',\n sizeField: sizeField,\n seriesField: ID_FIELD,\n rawFields: [setsField, sizeField],\n schema: {\n shape: 'venn',\n style: pointStyle\n }\n }\n })).ext;\n var geometry = ext.geometry;\n geometry.customInfo(customInfo);\n var colorOptions = transformColor(params, vennData);\n // 韦恩图试点, color 通道只能映射一个字段. 通过外部查找获取 datum\n if (typeof colorOptions === 'function') {\n geometry.color(ID_FIELD, function (id) {\n var datum = vennData.find(function (d) {\n return d[ID_FIELD] === id;\n });\n var defaultColor = colorMap(params, vennData)(id);\n return colorOptions(datum, defaultColor);\n });\n }\n return params;\n}\n/**\n * 处理 label\n * @param params\n */\nfunction label(params) {\n var chart = params.chart,\n options = params.options;\n var label = options.label;\n // 获取容器大小\n var _a = normalPadding(chart.appendPadding),\n t = _a[0],\n l = _a[3];\n // 传入 label 布局函数所需的 自定义参数\n var customLabelInfo = {\n offsetX: l,\n offsetY: t\n };\n var geometry = findGeometry(chart, 'schema');\n if (!label) {\n geometry.label(false);\n } else {\n var callback = label.callback,\n cfg = __rest(label, [\"callback\"]);\n geometry.label({\n fields: ['id'],\n callback: callback,\n cfg: deepMix({}, transformLabel(cfg), {\n // 使用 G2 的 自定义label 修改位置\n type: 'venn',\n customLabelInfo: customLabelInfo\n })\n });\n }\n return params;\n}\n/**\n * legend 配置\n * @param params\n */\nexport function legend(params) {\n var chart = params.chart,\n options = params.options;\n var legend = options.legend,\n sizeField = options.sizeField;\n chart.legend(ID_FIELD, legend);\n // 强制不开启 连续图例\n chart.legend(sizeField, false);\n return params;\n}\n/**\n * 默认关闭坐标轴\n * @param params\n */\nexport function axis(params) {\n var chart = params.chart;\n chart.axis(false);\n return params;\n}\n/**\n * 韦恩图 interaction 交互适配器\n */\nfunction vennInteraction(params) {\n var options = params.options,\n chart = params.chart;\n var interactions = options.interactions;\n if (interactions) {\n var MAP_1 = {\n 'legend-active': 'venn-legend-active',\n 'legend-highlight': 'venn-legend-highlight'\n };\n interaction(deepAssign({}, params, {\n options: {\n interactions: interactions.map(function (i) {\n return __assign(__assign({}, i), {\n type: MAP_1[i.type] || i.type\n });\n })\n }\n }));\n }\n chart.removeInteraction('legend-active');\n chart.removeInteraction('legend-highlight');\n return params;\n}\n/**\n * 图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n // flow 的方式处理所有的配置到 G2 API\n return flow(padding, theme, data, geometry, label, scale({}), legend, axis, tooltip, vennInteraction, animation\n // ... 其他的 adaptor flow\n )(params);\n}","import { __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { adaptor } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constant';\n/**\n * 这个是一个图表开发的 模板代码!\n */\nvar Venn = /** @class */function (_super) {\n __extends(Venn, _super);\n function Venn() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'venn';\n return _this;\n }\n Venn.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * 获取 韦恩图 默认配置\n */\n Venn.prototype.getDefaultOptions = function () {\n return Venn.getDefaultOptions();\n };\n /**\n * 获取适配器\n */\n Venn.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n /**\n * 覆写父类的方法\n */\n Venn.prototype.triggerResize = function () {\n if (!this.chart.destroyed) {\n // 首先自适应容器的宽高\n this.chart.forceFit(); // g2 内部执行 changeSize,changeSize 中执行 render(true)\n this.chart.clear();\n this.execAdaptor(); // 核心:宽高更新之后计算布局\n // 渲染\n this.chart.render(true);\n }\n };\n return Venn;\n}(Plot);\nexport { Venn };","import { Plot } from '../../core/plot';\nimport { deepAssign } from '../../utils';\nexport var X_FIELD = 'x';\nexport var VIOLIN_Y_FIELD = 'violinY';\nexport var VIOLIN_SIZE_FIELD = 'violinSize';\nexport var MIN_MAX_FIELD = 'minMax';\nexport var QUANTILE_FIELD = 'quantile';\nexport var MEDIAN_FIELD = 'median';\nexport var VIOLIN_VIEW_ID = 'violin_view';\nexport var MIN_MAX_VIEW_ID = 'min_max_view';\nexport var QUANTILE_VIEW_ID = 'quantile_view';\nexport var MEDIAN_VIEW_ID = 'median_view';\nexport var DEFAULT_OPTIONS = deepAssign({}, Plot.getDefaultOptions(), {\n // 多 view 组成,一定要设置 view padding 同步\n syncViewPadding: true,\n // 默认核函数\n kde: {\n type: 'triangular',\n sampleSize: 32,\n width: 3\n },\n // 默认小提琴轮廓样式\n violinStyle: {\n lineWidth: 1,\n fillOpacity: 0.3,\n strokeOpacity: 0.75\n },\n // 坐标轴\n xAxis: {\n grid: {\n line: null\n },\n tickLine: {\n alignTick: false\n }\n },\n yAxis: {\n grid: {\n line: {\n style: {\n lineWidth: 0.5,\n lineDash: [4, 4]\n }\n }\n }\n },\n // 图例\n legend: {\n position: 'top-left'\n },\n // Tooltip\n tooltip: {\n showMarkers: false\n }\n // 默认区域交互\n // interactions: [{ type: 'active-region' }],\n});","// from https://github.com/simple-statistics\n/**\n * This is the internal implementation of quantiles: when you know\n * that the order is sorted, you don't need to re-sort it, and the computations\n * are faster.\n *\n * @param {Array} x sample of one or more data points\n * @param {number} p desired quantile: a number between 0 to 1, inclusive\n * @returns {number} quantile value\n * @throws {Error} if p ix outside of the range from 0 to 1\n * @throws {Error} if x is empty\n * @example\n * quantileSorted([3, 6, 7, 8, 8, 9, 10, 13, 15, 16, 20], 0.5); // => 9\n */\nexport function quantileSorted(x, p) {\n var idx = x.length * p;\n if (x.length === 0) {\n throw new Error('quantile requires at least one data point.');\n } else if (p < 0 || p > 1) {\n throw new Error('quantiles must be between 0 and 1');\n } else if (p === 1) {\n // If p is 1, directly return the last element\n return x[x.length - 1];\n } else if (p === 0) {\n // If p is 0, directly return the first element\n return x[0];\n } else if (idx % 1 !== 0) {\n // If p is not integer, return the next element in array\n return x[Math.ceil(idx) - 1];\n } else if (x.length % 2 === 0) {\n // If the list has even-length, we'll take the average of this number\n // and the next value, if there is one\n return (x[idx - 1] + x[idx]) / 2;\n } else {\n // Finally, in the simple case of an integer value\n // with an odd-length list, return the x value at the index.\n return x[idx];\n }\n}\n/**\n * 交换数组位置\n * @param arr T[]\n * @param i number\n * @param j number\n */\nexport function swap(arr, i, j) {\n var tmp = arr[i];\n arr[i] = arr[j];\n arr[j] = tmp;\n}\n/**\n * Rearrange items in `arr` so that all items in `[left, k]` range are the smallest.\n * The `k`-th element will have the `(k - left + 1)`-th smallest value in `[left, right]`.\n *\n * Implements Floyd-Rivest selection algorithm https://en.wikipedia.org/wiki/Floyd-Rivest_algorithm\n *\n * @param {Array} arr input array\n * @param {number} k pivot index\n * @param {number} [left] left index\n * @param {number} [right] right index\n * @returns {void} mutates input array\n * @example\n * var arr = [65, 28, 59, 33, 21, 56, 22, 95, 50, 12, 90, 53, 28, 77, 39];\n * quickselect(arr, 8);\n * // = [39, 28, 28, 33, 21, 12, 22, 50, 53, 56, 59, 65, 90, 77, 95]\n */\nexport function quickselect(arr, k, left, right) {\n left = left || 0;\n right = right || arr.length - 1;\n while (right > left) {\n // 600 and 0.5 are arbitrary constants chosen in the original paper to minimize execution time\n if (right - left > 600) {\n var n = right - left + 1;\n var m = k - left + 1;\n var z = Math.log(n);\n var s = 0.5 * Math.exp(2 * z / 3);\n var sd = 0.5 * Math.sqrt(z * s * (n - s) / n);\n if (m - n / 2 < 0) sd *= -1;\n var newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n var newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n quickselect(arr, k, newLeft, newRight);\n }\n var t = arr[k];\n var i = left;\n var j = right;\n swap(arr, left, k);\n if (arr[right] > t) swap(arr, left, right);\n while (i < j) {\n swap(arr, i, j);\n i++;\n j--;\n while (arr[i] < t) i++;\n while (arr[j] > t) j--;\n }\n if (arr[left] === t) swap(arr, left, j);else {\n j++;\n swap(arr, j, right);\n }\n if (j <= k) left = j + 1;\n if (k <= j) right = j - 1;\n }\n}\nfunction quantile(x, p) {\n var copy = x.slice();\n if (Array.isArray(p)) {\n // rearrange elements so that each element corresponding to a requested\n // quantile is on a place it would be if the array was fully sorted\n multiQuantileSelect(copy, p);\n // Initialize the result array\n var results = [];\n // For each requested quantile\n for (var i = 0; i < p.length; i++) {\n results[i] = quantileSorted(copy, p[i]);\n }\n return results;\n } else {\n var idx = quantileIndex(copy.length, p);\n quantileSelect(copy, idx, 0, copy.length - 1);\n return quantileSorted(copy, p);\n }\n}\nfunction quantileSelect(arr, k, left, right) {\n if (k % 1 === 0) {\n quickselect(arr, k, left, right);\n } else {\n k = Math.floor(k);\n quickselect(arr, k, left, right);\n quickselect(arr, k + 1, k + 1, right);\n }\n}\nfunction multiQuantileSelect(arr, p) {\n var indices = [0];\n for (var i = 0; i < p.length; i++) {\n indices.push(quantileIndex(arr.length, p[i]));\n }\n indices.push(arr.length - 1);\n indices.sort(compare);\n var stack = [0, indices.length - 1];\n while (stack.length) {\n var r = Math.ceil(stack.pop());\n var l = Math.floor(stack.pop());\n if (r - l <= 1) continue;\n var m = Math.floor((l + r) / 2);\n quantileSelect(arr, indices[m], Math.floor(indices[l]), Math.ceil(indices[r]));\n stack.push(l, m, m, r);\n }\n}\nfunction compare(a, b) {\n return a - b;\n}\nfunction quantileIndex(len, p) {\n var idx = len * p;\n if (p === 1) {\n // If p is 1, directly return the last index\n return len - 1;\n } else if (p === 0) {\n // If p is 0, directly return the first index\n return 0;\n } else if (idx % 1 !== 0) {\n // If index is not integer, return the next index in array\n return Math.ceil(idx) - 1;\n } else if (len % 2 === 0) {\n // If the list has even-length, we'll return the middle of two indices\n // around quantile to indicate that we need an average value of the two\n return idx - 0.5;\n } else {\n // Finally, in the simple case of an integer index\n // with an odd-length list, return the index\n return idx;\n }\n}\nexport { quantile };","import { __assign } from \"tslib\";\nimport { groupBy, max, min } from '@antv/util';\nimport pdf from 'pdfast';\nimport { quantile } from '../../utils/transform/quantile';\nexport var toBoxValue = function toBoxValue(values) {\n return {\n low: min(values),\n high: max(values),\n q1: quantile(values, 0.25),\n q3: quantile(values, 0.75),\n median: quantile(values, [0.5]),\n minMax: [min(values), max(values)],\n quantile: [quantile(values, 0.25), quantile(values, 0.75)]\n };\n};\nexport var toViolinValue = function toViolinValue(values, pdfOptions) {\n var pdfResults = pdf.create(values, pdfOptions);\n return {\n violinSize: pdfResults.map(function (result) {\n return result.y;\n }),\n violinY: pdfResults.map(function (result) {\n return result.x;\n })\n };\n};\nexport var transformViolinData = function transformViolinData(options) {\n var xField = options.xField,\n yField = options.yField,\n seriesField = options.seriesField,\n data = options.data,\n kde = options.kde;\n /** 生成概率密度函数的配置 */\n var pdfOptions = {\n min: kde.min,\n max: kde.max,\n size: kde.sampleSize,\n width: kde.width\n };\n // 无拆分\n if (!seriesField) {\n var group_1 = groupBy(data, xField);\n return Object.keys(group_1).map(function (x) {\n var records = group_1[x];\n var values = records.map(function (record) {\n return record[yField];\n });\n return __assign(__assign({\n x: x\n }, toViolinValue(values, pdfOptions)), toBoxValue(values));\n });\n }\n // 有拆分\n var resultList = [];\n var seriesGroup = groupBy(data, seriesField);\n Object.keys(seriesGroup).forEach(function (series) {\n var group = groupBy(seriesGroup[series], xField);\n return Object.keys(group).forEach(function (key) {\n var _a;\n var records = group[key];\n var values = records.map(function (record) {\n return record[yField];\n });\n resultList.push(__assign(__assign((_a = {\n x: key\n }, _a[seriesField] = series, _a), toViolinValue(values, pdfOptions)), toBoxValue(values)));\n });\n });\n return resultList;\n};","import { __assign } from \"tslib\";\nimport { each, get, omit, set } from '@antv/util';\nimport { annotation as baseAnnotation, interaction, theme, tooltip } from '../../adaptor/common';\nimport { interval, point, violin } from '../../adaptor/geometries';\nimport { AXIS_META_CONFIG_KEYS } from '../../constant';\nimport { deepAssign, findViewById, flow, pick } from '../../utils';\nimport { addViewAnimation } from '../../utils/view';\nimport { MEDIAN_FIELD, MEDIAN_VIEW_ID, MIN_MAX_FIELD, MIN_MAX_VIEW_ID, QUANTILE_FIELD, QUANTILE_VIEW_ID, VIOLIN_SIZE_FIELD, VIOLIN_VIEW_ID, VIOLIN_Y_FIELD, X_FIELD } from './constant';\nimport { transformViolinData } from './utils';\nvar TOOLTIP_FIELDS = ['low', 'high', 'q1', 'q3', 'median'];\nvar adjustCfg = [{\n type: 'dodge',\n marginRatio: 1 / 32\n}];\n/** 处理数据 */\nfunction data(params) {\n var chart = params.chart,\n options = params.options;\n chart.data(transformViolinData(options));\n return params;\n}\n/** 小提琴轮廓 */\nfunction violinView(params) {\n var chart = params.chart,\n options = params.options;\n var seriesField = options.seriesField,\n color = options.color,\n _a = options.shape,\n shape = _a === void 0 ? 'violin' : _a,\n violinStyle = options.violinStyle,\n tooltip = options.tooltip,\n state = options.state;\n var view = chart.createView({\n id: VIOLIN_VIEW_ID\n });\n violin({\n chart: view,\n options: {\n xField: X_FIELD,\n yField: VIOLIN_Y_FIELD,\n seriesField: seriesField ? seriesField : X_FIELD,\n sizeField: VIOLIN_SIZE_FIELD,\n tooltip: __assign({\n fields: TOOLTIP_FIELDS\n }, tooltip),\n violin: {\n style: violinStyle,\n color: color,\n shape: shape\n },\n state: state\n }\n });\n view.geometries[0].adjust(adjustCfg);\n return params;\n}\n/** 箱线 */\nfunction boxView(params) {\n var chart = params.chart,\n options = params.options;\n var seriesField = options.seriesField,\n color = options.color,\n tooltip = options.tooltip,\n box = options.box;\n // 如果配置 `box` 为 false ,不渲染内部箱线图\n if (box === false) return params;\n // 边缘线\n var minMaxView = chart.createView({\n id: MIN_MAX_VIEW_ID\n });\n interval({\n chart: minMaxView,\n options: {\n xField: X_FIELD,\n yField: MIN_MAX_FIELD,\n seriesField: seriesField ? seriesField : X_FIELD,\n tooltip: __assign({\n fields: TOOLTIP_FIELDS\n }, tooltip),\n state: typeof box === 'object' ? box.state : {},\n interval: {\n color: color,\n size: 1,\n style: {\n lineWidth: 0\n }\n }\n }\n });\n minMaxView.geometries[0].adjust(adjustCfg);\n // 四分点位\n var quantileView = chart.createView({\n id: QUANTILE_VIEW_ID\n });\n interval({\n chart: quantileView,\n options: {\n xField: X_FIELD,\n yField: QUANTILE_FIELD,\n seriesField: seriesField ? seriesField : X_FIELD,\n tooltip: __assign({\n fields: TOOLTIP_FIELDS\n }, tooltip),\n state: typeof box === 'object' ? box.state : {},\n interval: {\n color: color,\n size: 8,\n style: {\n fillOpacity: 1\n }\n }\n }\n });\n quantileView.geometries[0].adjust(adjustCfg);\n // 中位值\n var medianView = chart.createView({\n id: MEDIAN_VIEW_ID\n });\n point({\n chart: medianView,\n options: {\n xField: X_FIELD,\n yField: MEDIAN_FIELD,\n seriesField: seriesField ? seriesField : X_FIELD,\n tooltip: __assign({\n fields: TOOLTIP_FIELDS\n }, tooltip),\n state: typeof box === 'object' ? box.state : {},\n point: {\n color: color,\n size: 1,\n style: {\n fill: 'white',\n lineWidth: 0\n }\n }\n }\n });\n medianView.geometries[0].adjust(adjustCfg);\n // 关闭辅助 view 的轴\n quantileView.axis(false);\n minMaxView.axis(false);\n medianView.axis(false);\n // 关闭辅助 view 的图例\n medianView.legend(false);\n minMaxView.legend(false);\n quantileView.legend(false);\n return params;\n}\n/**\n * meta 配置\n */\nfunction meta(params) {\n var _a;\n var chart = params.chart,\n options = params.options;\n var meta = options.meta,\n xAxis = options.xAxis,\n yAxis = options.yAxis;\n var baseMeta = {};\n var scales = deepAssign(baseMeta, meta, (_a = {}, _a[X_FIELD] = __assign(__assign({\n sync: true\n }, pick(xAxis, AXIS_META_CONFIG_KEYS)), {\n // fix: dodge is not support linear attribute, please use category attribute!\n // 强制 x 轴类型为分类类型\n type: 'cat'\n }), _a[VIOLIN_Y_FIELD] = __assign({\n sync: true\n }, pick(yAxis, AXIS_META_CONFIG_KEYS)), _a[MIN_MAX_FIELD] = __assign({\n sync: VIOLIN_Y_FIELD\n }, pick(yAxis, AXIS_META_CONFIG_KEYS)), _a[QUANTILE_FIELD] = __assign({\n sync: VIOLIN_Y_FIELD\n }, pick(yAxis, AXIS_META_CONFIG_KEYS)), _a[MEDIAN_FIELD] = __assign({\n sync: VIOLIN_Y_FIELD\n }, pick(yAxis, AXIS_META_CONFIG_KEYS)), _a));\n chart.scale(scales);\n return params;\n}\n/**\n * axis 配置\n */\nfunction axis(params) {\n var chart = params.chart,\n options = params.options;\n var xAxis = options.xAxis,\n yAxis = options.yAxis;\n var view = findViewById(chart, VIOLIN_VIEW_ID);\n // 为 false 则是不显示轴\n if (xAxis === false) {\n view.axis(X_FIELD, false);\n } else {\n view.axis(X_FIELD, xAxis);\n }\n if (yAxis === false) {\n view.axis(VIOLIN_Y_FIELD, false);\n } else {\n view.axis(VIOLIN_Y_FIELD, yAxis);\n }\n chart.axis(false);\n return params;\n}\n/**\n *\n * @param params\n * @returns\n */\nfunction legend(params) {\n var chart = params.chart,\n options = params.options;\n var legend = options.legend,\n seriesField = options.seriesField,\n shape = options.shape;\n if (legend === false) {\n chart.legend(false);\n } else {\n var legendField_1 = seriesField ? seriesField : X_FIELD;\n // fixme 暂不明为啥有描边\n var legendOptions = omit(legend, ['selected']);\n if (!shape || !shape.startsWith('hollow')) {\n if (!get(legendOptions, ['marker', 'style', 'lineWidth'])) {\n set(legendOptions, ['marker', 'style', 'lineWidth'], 0);\n }\n }\n chart.legend(legendField_1, legendOptions);\n // 特殊的处理 fixme G2 层得解决这个问题\n if (get(legend, 'selected')) {\n each(chart.views, function (view) {\n return view.legend(legendField_1, legend);\n });\n }\n }\n return params;\n}\n/**\n * annotation, apply to violin view.\n * @param params\n * @returns\n */\nfunction annotation(params) {\n var chart = params.chart;\n var violinView = findViewById(chart, VIOLIN_VIEW_ID);\n baseAnnotation()(__assign(__assign({}, params), {\n chart: violinView\n }));\n return params;\n}\n/**\n * 动画\n * @param params\n */\nexport function animation(params) {\n var chart = params.chart,\n options = params.options;\n var animation = options.animation;\n // 所有的 Geometry 都使用同一动画(各个图形如有区别,自行覆盖)\n each(chart.views, function (view) {\n addViewAnimation(view, animation);\n });\n return params;\n}\n/**\n * 小提琴图适配器\n * @param params\n */\nexport function adaptor(params) {\n return flow(theme, data, violinView, boxView, meta, tooltip, axis, legend, interaction, annotation, animation)(params);\n}","import { __assign } from \"tslib\";\nimport { deepAssign } from '../../utils';\nimport { getTooltipMapping } from '../../utils/tooltip';\nimport { geometry } from './base';\n/**\n * violin 辅助点的配置处理\n * @param params\n */\nexport function violin(params) {\n var options = params.options;\n var violin = options.violin,\n xField = options.xField,\n yField = options.yField,\n seriesField = options.seriesField,\n sizeField = options.sizeField,\n tooltip = options.tooltip;\n var _a = getTooltipMapping(tooltip, [xField, yField, seriesField, sizeField]),\n fields = _a.fields,\n formatter = _a.formatter;\n return violin ? geometry(deepAssign({}, params, {\n options: {\n type: 'violin',\n colorField: seriesField,\n tooltipFields: fields,\n mapping: __assign({\n tooltip: formatter\n }, violin)\n }\n })) : params;\n}","import { __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { adaptor } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constant';\nimport { transformViolinData } from './utils';\nvar Violin = /** @class */function (_super) {\n __extends(Violin, _super);\n function Violin() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'violin';\n return _this;\n }\n /**\n * 获取 默认配置项\n * 供外部使用\n */\n Violin.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * @override\n */\n Violin.prototype.changeData = function (data) {\n this.updateOption({\n data: data\n });\n this.chart.changeData(transformViolinData(this.options));\n };\n /**\n * 获取 小提琴图 默认配置项\n */\n Violin.prototype.getDefaultOptions = function () {\n return Violin.getDefaultOptions();\n };\n /**\n * 获取 小提琴图 的适配器\n */\n Violin.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Violin;\n}(Plot);\nexport { Violin };","export var Y_FIELD = '$$yField$$';\nexport var DIFF_FIELD = '$$diffField$$';\nexport var ABSOLUTE_FIELD = '$$absoluteField$$';\nexport var IS_TOTAL = '$$isTotal$$';\n/**\n * 瀑布图 默认配置项\n */\nexport var DEFAULT_OPTIONS = {\n /** default: show label */\n label: {},\n /** default: show leaderLine */\n leaderLine: {\n style: {\n lineWidth: 1,\n stroke: '#8c8c8c',\n lineDash: [4, 2]\n }\n },\n /** default: show total */\n total: {\n style: {\n fill: 'rgba(0, 0, 0, 0.25)'\n }\n },\n interactions: [{\n type: 'element-active'\n }],\n risingFill: '#f4664a',\n fallingFill: '#30bf78',\n waterfallStyle: {\n fill: 'rgba(0, 0, 0, 0.25)'\n },\n yAxis: {\n grid: {\n line: {\n style: {\n lineDash: [4, 2]\n }\n }\n }\n }\n};","import { __assign } from \"tslib\";\nimport { get, isNumber, isObject, isUndefined, reduce } from '@antv/util';\nimport { LEVEL, log } from '../../utils';\nimport { ABSOLUTE_FIELD, DIFF_FIELD, IS_TOTAL, Y_FIELD } from './constant';\n/**\n * @desc 数据处理函数,统一将数据处理成[start, end]\n * @param data\n * @param xField\n * @param yField\n * @param totalLabel\n */\nexport function processData(data, xField, yField, newYField, total) {\n var _a;\n var newData = [];\n reduce(data, function (r, d) {\n var _a;\n // 校验数据合法性\n log(LEVEL.WARN, isNumber(d[yField]), \"\".concat(d[yField], \" is not a valid number\"));\n var value = isUndefined(d[yField]) ? null : d[yField];\n newData.push(__assign(__assign({}, d), (_a = {}, _a[newYField] = [r, r + value], _a)));\n return r + value;\n }, 0);\n // 如果需要展示总和\n if (newData.length && total) {\n var sum = get(newData, [[data.length - 1], newYField, [1]]);\n newData.push((_a = {}, _a[xField] = total.label, _a[yField] = sum, _a[newYField] = [0, sum], _a));\n }\n return newData;\n}\n/**\n * 处理为 瀑布图 数据\n */\nexport function transformData(data, xField, yField, total) {\n var processed = processData(data, xField, yField, Y_FIELD, total);\n return processed.map(function (d, dIdx) {\n var _a;\n if (!isObject(d)) {\n return d;\n }\n return __assign(__assign({}, d), (_a = {}, _a[ABSOLUTE_FIELD] = d[Y_FIELD][1], _a[DIFF_FIELD] = d[Y_FIELD][1] - d[Y_FIELD][0], _a[IS_TOTAL] = dIdx === data.length, _a));\n });\n}","import { __assign, __rest } from \"tslib\";\nimport { get } from '@antv/util';\nimport { animation, annotation, interaction, scale, state, theme } from '../../adaptor/common';\nimport { interval } from '../../adaptor/geometries';\nimport { getLocale } from '../../core/locale';\nimport { deepAssign, findGeometry, flow, transformLabel } from '../../utils';\nimport { ABSOLUTE_FIELD, DIFF_FIELD, IS_TOTAL, Y_FIELD } from './constant';\nimport './shape';\nimport { transformData } from './utils';\n/**\n * 处理默认配置项\n * @param params\n * @returns\n */\nfunction defaultOptions(params) {\n var _a = params.options,\n locale = _a.locale,\n total = _a.total;\n var localeTotalLabel = getLocale(locale).get(['waterfall', 'total']);\n if (total && typeof total.label !== 'string' && localeTotalLabel) {\n // @ts-ignore\n params.options.total.label = localeTotalLabel;\n }\n return params;\n}\n/**\n * 字段\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var data = options.data,\n xField = options.xField,\n yField = options.yField,\n total = options.total,\n leaderLine = options.leaderLine,\n columnWidthRatio = options.columnWidthRatio,\n waterfallStyle = options.waterfallStyle,\n risingFill = options.risingFill,\n fallingFill = options.fallingFill,\n color = options.color,\n shape = options.shape,\n customInfo = options.customInfo;\n // 数据处理\n chart.data(transformData(data, xField, yField, total));\n // 瀑布图自带的 colorMapping\n var colorMapping = color || function (datum) {\n if (get(datum, [IS_TOTAL])) {\n return get(total, ['style', 'fill'], '');\n }\n return get(datum, [Y_FIELD, 1]) - get(datum, [Y_FIELD, 0]) > 0 ? risingFill : fallingFill;\n };\n var p = deepAssign({}, params, {\n options: {\n xField: xField,\n yField: Y_FIELD,\n seriesField: xField,\n rawFields: [yField, DIFF_FIELD, IS_TOTAL, Y_FIELD],\n widthRatio: columnWidthRatio,\n interval: {\n style: waterfallStyle,\n // 支持外部自定义形状\n shape: shape || 'waterfall',\n color: colorMapping\n }\n }\n });\n var ext = interval(p).ext;\n var geometry = ext.geometry;\n // 将 waterfall leaderLineCfg 传入到自定义 shape 中\n geometry.customInfo(__assign(__assign({}, customInfo), {\n leaderLine: leaderLine\n }));\n return params;\n}\n/**\n * meta 配置\n * @param params\n */\nfunction meta(params) {\n var _a, _b;\n var options = params.options;\n var xAxis = options.xAxis,\n yAxis = options.yAxis,\n xField = options.xField,\n yField = options.yField,\n meta = options.meta;\n var Y_FIELD_META = deepAssign({}, {\n alias: yField\n }, get(meta, yField));\n return flow(scale((_a = {}, _a[xField] = xAxis, _a[yField] = yAxis, _a[Y_FIELD] = yAxis, _a), deepAssign({}, meta, (_b = {}, _b[Y_FIELD] = Y_FIELD_META, _b[DIFF_FIELD] = Y_FIELD_META, _b[ABSOLUTE_FIELD] = Y_FIELD_META, _b))))(params);\n}\n/**\n * axis 配置\n * @param params\n */\nfunction axis(params) {\n var chart = params.chart,\n options = params.options;\n var xAxis = options.xAxis,\n yAxis = options.yAxis,\n xField = options.xField,\n yField = options.yField;\n // 为 false 则是不显示轴\n if (xAxis === false) {\n chart.axis(xField, false);\n } else {\n chart.axis(xField, xAxis);\n }\n if (yAxis === false) {\n chart.axis(yField, false);\n chart.axis(Y_FIELD, false);\n } else {\n chart.axis(yField, yAxis);\n chart.axis(Y_FIELD, yAxis);\n }\n return params;\n}\n/**\n * legend 配置 todo 添加 hover 交互\n * @param params\n */\nfunction legend(params) {\n var chart = params.chart,\n options = params.options;\n var legend = options.legend,\n total = options.total,\n risingFill = options.risingFill,\n fallingFill = options.fallingFill,\n locale = options.locale;\n var i18n = getLocale(locale);\n if (legend === false) {\n chart.legend(false);\n } else {\n var items = [{\n name: i18n.get(['general', 'increase']),\n value: 'increase',\n marker: {\n symbol: 'square',\n style: {\n r: 5,\n fill: risingFill\n }\n }\n }, {\n name: i18n.get(['general', 'decrease']),\n value: 'decrease',\n marker: {\n symbol: 'square',\n style: {\n r: 5,\n fill: fallingFill\n }\n }\n }];\n if (total) {\n items.push({\n name: total.label || '',\n value: 'total',\n marker: {\n symbol: 'square',\n style: deepAssign({}, {\n r: 5\n }, get(total, 'style'))\n }\n });\n }\n chart.legend(deepAssign({}, {\n custom: true,\n position: 'top',\n items: items\n }, legend));\n chart.removeInteraction('legend-filter');\n }\n return params;\n}\n/**\n * 数据标签\n * @param params\n */\nfunction label(params) {\n var chart = params.chart,\n options = params.options;\n var label = options.label,\n labelMode = options.labelMode,\n xField = options.xField;\n var geometry = findGeometry(chart, 'interval');\n if (!label) {\n geometry.label(false);\n } else {\n var callback = label.callback,\n cfg = __rest(label, [\"callback\"]);\n geometry.label({\n fields: labelMode === 'absolute' ? [ABSOLUTE_FIELD, xField] : [DIFF_FIELD, xField],\n callback: callback,\n cfg: transformLabel(cfg)\n });\n }\n return params;\n}\n/**\n * tooltip 配置\n * @param params\n */\nexport function tooltip(params) {\n var chart = params.chart,\n options = params.options;\n var tooltip = options.tooltip,\n xField = options.xField,\n yField = options.yField;\n if (tooltip !== false) {\n chart.tooltip(__assign({\n showCrosshairs: false,\n showMarkers: false,\n shared: true,\n // tooltip 默认展示 y 字段值\n fields: [yField]\n }, tooltip));\n // 瀑布图默认以 yField 作为 tooltip 内容\n var geometry_1 = chart.geometries[0];\n (tooltip === null || tooltip === void 0 ? void 0 : tooltip.formatter) ? geometry_1.tooltip(\"\".concat(xField, \"*\").concat(yField), tooltip.formatter) : geometry_1.tooltip(yField);\n } else {\n chart.tooltip(false);\n }\n return params;\n}\n/**\n * 瀑布图适配器\n * @param params\n */\nexport function adaptor(params) {\n return flow(defaultOptions, theme, geometry, meta, axis, legend, tooltip, label, state, interaction, animation, annotation())(params);\n}","import { __assign } from \"tslib\";\nimport { registerShape } from '@antv/g2';\nimport { get } from '@antv/util';\nimport { deepAssign } from '../../utils';\n/**\n * 获取柱子 path\n * @param points\n */\nfunction getRectPath(points) {\n var path = [];\n for (var i = 0; i < points.length; i++) {\n var point = points[i];\n if (point) {\n var action = i === 0 ? 'M' : 'L';\n path.push([action, point.x, point.y]);\n }\n }\n var first = points[0];\n path.push(['L', first.x, first.y]);\n path.push(['z']);\n return path;\n}\n/**\n * 获取填充属性\n * @param cfg 图形绘制数据\n */\nfunction getFillAttrs(cfg) {\n return deepAssign({}, cfg.defaultStyle, cfg.style, {\n fill: cfg.color\n });\n}\nregisterShape('interval', 'waterfall', {\n draw: function draw(cfg, container) {\n var customInfo = cfg.customInfo,\n points = cfg.points,\n nextPoints = cfg.nextPoints;\n var group = container.addGroup();\n // ① 绘制柱体\n var rectPath = this.parsePath(getRectPath(points));\n var fillAttrs = getFillAttrs(cfg);\n group.addShape('path', {\n attrs: __assign(__assign({}, fillAttrs), {\n path: rectPath\n })\n });\n // ② 绘制连接线\n var leaderLineCfg = get(customInfo, 'leaderLine');\n if (leaderLineCfg && nextPoints) {\n var linkPath = [['M', points[2].x, points[2].y], ['L', nextPoints[0].x, nextPoints[0].y]];\n if (points[2].y === nextPoints[1].y) {\n linkPath[1] = ['L', nextPoints[1].x, nextPoints[1].y];\n }\n linkPath = this.parsePath(linkPath);\n group.addShape('path', {\n attrs: __assign({\n path: linkPath\n }, leaderLineCfg.style || {})\n });\n }\n return group;\n }\n});","import { __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { adaptor } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constant';\nimport { transformData } from './utils';\n/**\n * 瀑布图\n */\nvar Waterfall = /** @class */function (_super) {\n __extends(Waterfall, _super);\n function Waterfall() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'waterfall';\n return _this;\n }\n /**\n * 获取 瀑布图 默认配置项\n * 供外部使用\n */\n Waterfall.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * @override\n * @param data\n */\n Waterfall.prototype.changeData = function (data) {\n var _a = this.options,\n xField = _a.xField,\n yField = _a.yField,\n total = _a.total;\n this.updateOption({\n data: data\n });\n this.chart.changeData(transformData(data, xField, yField, total));\n };\n /**\n * 获取 瀑布图 的适配器\n */\n Waterfall.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n /**\n * 获取 瀑布图 的默认配置\n */\n Waterfall.prototype.getDefaultOptions = function () {\n return Waterfall.getDefaultOptions();\n };\n return Waterfall;\n}(Plot);\nexport { Waterfall };","import { Plot } from '../../core/plot';\nimport { deepAssign } from '../../utils';\n/** 词云图 color 通道映射字段 */\nexport var WORD_CLOUD_COLOR_FIELD = 'color';\n/**\n * 词云图 默认配置项\n */\nexport var DEFAULT_OPTIONS = deepAssign({}, Plot.getDefaultOptions(), {\n timeInterval: 2000,\n legend: false,\n tooltip: {\n showTitle: false,\n showMarkers: false,\n showCrosshairs: false,\n fields: ['text', 'value', WORD_CLOUD_COLOR_FIELD],\n formatter: function formatter(datum) {\n return {\n name: datum.text,\n value: datum.value\n };\n }\n },\n wordStyle: {\n fontFamily: 'Verdana',\n fontWeight: 'normal',\n padding: 1,\n fontSize: [12, 60],\n rotation: [0, 90],\n rotationSteps: 2,\n rotateRatio: 0.5\n }\n});","import { assign, isFunction, isNil } from '@antv/util';\nvar DEFAULT_OPTIONS = {\n font: function font() {\n return 'serif';\n },\n padding: 1,\n size: [500, 500],\n spiral: 'archimedean',\n // timeInterval: Infinity // max execute time\n timeInterval: 3000 // max execute time\n // imageMask: '', // instance of Image, must be loaded\n};\n/**\n * 根据对应的数据对象,计算每个\n * 词语在画布中的渲染位置,并返回\n * 计算后的数据对象\n * @param words\n * @param options\n */\nexport function wordCloud(words, options) {\n // 混入默认配置\n options = assign({}, DEFAULT_OPTIONS, options);\n return transform(words, options);\n}\n/**\n * 抛出没有混入默认配置的方法,用于测试。\n * @param words\n * @param options\n */\nexport function transform(words, options) {\n // 布局对象\n var layout = tagCloud();\n ['font', 'fontSize', 'fontWeight', 'padding', 'rotate', 'size', 'spiral', 'timeInterval', 'random'].forEach(function (key) {\n if (!isNil(options[key])) {\n layout[key](options[key]);\n }\n });\n layout.words(words);\n if (options.imageMask) {\n layout.createMask(options.imageMask);\n }\n var result = layout.start();\n var tags = result._tags;\n tags.forEach(function (tag) {\n tag.x += options.size[0] / 2;\n tag.y += options.size[1] / 2;\n });\n var _a = options.size,\n w = _a[0],\n h = _a[1];\n // 添加两个参照数据,分别表示左上角和右下角。\n // 不添加的话不会按照真实的坐标渲染,而是以\n // 数据中的边界坐标为边界进行拉伸,以铺满画布。\n // 这样的后果会导致词语之间的重叠。\n tags.push({\n text: '',\n value: 0,\n x: 0,\n y: 0,\n opacity: 0\n });\n tags.push({\n text: '',\n value: 0,\n x: w,\n y: h,\n opacity: 0\n });\n return tags;\n}\nvar cloudRadians = Math.PI / 180,\n cw = 1 << 11 >> 5,\n ch = 1 << 11;\nfunction cloudText(d) {\n return d.text;\n}\nfunction cloudFont() {\n return 'serif';\n}\nfunction cloudFontNormal() {\n return 'normal';\n}\nfunction cloudFontSize(d) {\n return d.value;\n}\nfunction cloudRotate() {\n return ~~(Math.random() * 2) * 90;\n}\nfunction cloudPadding() {\n return 1;\n}\n// Fetches a monochrome sprite bitmap for the specified text.\n// Load in batches for speed.\nfunction cloudSprite(contextAndRatio, d, data, di) {\n if (d.sprite) return;\n var c = contextAndRatio.context,\n ratio = contextAndRatio.ratio;\n c.clearRect(0, 0, (cw << 5) / ratio, ch / ratio);\n var x = 0,\n y = 0,\n maxh = 0;\n var n = data.length;\n --di;\n while (++di < n) {\n d = data[di];\n c.save();\n c.font = d.style + ' ' + d.weight + ' ' + ~~((d.size + 1) / ratio) + 'px ' + d.font;\n var w = c.measureText(d.text + 'm').width * ratio,\n h = d.size << 1;\n if (d.rotate) {\n var sr = Math.sin(d.rotate * cloudRadians),\n cr = Math.cos(d.rotate * cloudRadians),\n wcr = w * cr,\n wsr = w * sr,\n hcr = h * cr,\n hsr = h * sr;\n w = Math.max(Math.abs(wcr + hsr), Math.abs(wcr - hsr)) + 0x1f >> 5 << 5;\n h = ~~Math.max(Math.abs(wsr + hcr), Math.abs(wsr - hcr));\n } else {\n w = w + 0x1f >> 5 << 5;\n }\n if (h > maxh) maxh = h;\n if (x + w >= cw << 5) {\n x = 0;\n y += maxh;\n maxh = 0;\n }\n if (y + h >= ch) break;\n c.translate((x + (w >> 1)) / ratio, (y + (h >> 1)) / ratio);\n if (d.rotate) c.rotate(d.rotate * cloudRadians);\n c.fillText(d.text, 0, 0);\n if (d.padding) {\n c.lineWidth = 2 * d.padding;\n c.strokeText(d.text, 0, 0);\n }\n c.restore();\n d.width = w;\n d.height = h;\n d.xoff = x;\n d.yoff = y;\n d.x1 = w >> 1;\n d.y1 = h >> 1;\n d.x0 = -d.x1;\n d.y0 = -d.y1;\n d.hasText = true;\n x += w;\n }\n var pixels = c.getImageData(0, 0, (cw << 5) / ratio, ch / ratio).data,\n sprite = [];\n while (--di >= 0) {\n d = data[di];\n if (!d.hasText) continue;\n var w = d.width,\n w32 = w >> 5;\n var h = d.y1 - d.y0;\n // Zero the buffer\n for (var i = 0; i < h * w32; i++) sprite[i] = 0;\n x = d.xoff;\n if (x == null) return;\n y = d.yoff;\n var seen = 0,\n seenRow = -1;\n for (var j = 0; j < h; j++) {\n for (var i = 0; i < w; i++) {\n var k = w32 * j + (i >> 5),\n m = pixels[(y + j) * (cw << 5) + (x + i) << 2] ? 1 << 31 - i % 32 : 0;\n sprite[k] |= m;\n seen |= m;\n }\n if (seen) seenRow = j;else {\n d.y0++;\n h--;\n j--;\n y++;\n }\n }\n d.y1 = d.y0 + seenRow;\n d.sprite = sprite.slice(0, (d.y1 - d.y0) * w32);\n }\n}\n// Use mask-based collision detection.\nfunction cloudCollide(tag, board, sw) {\n sw >>= 5;\n var sprite = tag.sprite,\n w = tag.width >> 5,\n lx = tag.x - (w << 4),\n sx = lx & 0x7f,\n msx = 32 - sx,\n h = tag.y1 - tag.y0;\n var x = (tag.y + tag.y0) * sw + (lx >> 5),\n last;\n for (var j = 0; j < h; j++) {\n last = 0;\n for (var i = 0; i <= w; i++) {\n if ((last << msx | (i < w ? (last = sprite[j * w + i]) >>> sx : 0)) & board[x + i]) return true;\n }\n x += sw;\n }\n return false;\n}\nfunction cloudBounds(bounds, d) {\n var b0 = bounds[0],\n b1 = bounds[1];\n if (d.x + d.x0 < b0.x) b0.x = d.x + d.x0;\n if (d.y + d.y0 < b0.y) b0.y = d.y + d.y0;\n if (d.x + d.x1 > b1.x) b1.x = d.x + d.x1;\n if (d.y + d.y1 > b1.y) b1.y = d.y + d.y1;\n}\nfunction collideRects(a, b) {\n return a.x + a.x1 > b[0].x && a.x + a.x0 < b[1].x && a.y + a.y1 > b[0].y && a.y + a.y0 < b[1].y;\n}\nfunction archimedeanSpiral(size) {\n var e = size[0] / size[1];\n return function (t) {\n return [e * (t *= 0.1) * Math.cos(t), t * Math.sin(t)];\n };\n}\nfunction rectangularSpiral(size) {\n var dy = 4,\n dx = dy * size[0] / size[1];\n var x = 0,\n y = 0;\n return function (t) {\n var sign = t < 0 ? -1 : 1;\n // See triangular numbers: T_n = n * (n + 1) / 2.\n switch (Math.sqrt(1 + 4 * sign * t) - sign & 3) {\n case 0:\n x += dx;\n break;\n case 1:\n y += dy;\n break;\n case 2:\n x -= dx;\n break;\n default:\n y -= dy;\n break;\n }\n return [x, y];\n };\n}\n// TODO reuse arrays?\nfunction zeroArray(n) {\n var a = [];\n var i = -1;\n while (++i < n) a[i] = 0;\n return a;\n}\nfunction cloudCanvas() {\n return document.createElement('canvas');\n}\nexport function functor(d) {\n return isFunction(d) ? d : function () {\n return d;\n };\n}\nvar spirals = {\n archimedean: archimedeanSpiral,\n rectangular: rectangularSpiral\n};\nfunction tagCloud() {\n var size = [256, 256],\n font = cloudFont,\n fontSize = cloudFontSize,\n fontWeight = cloudFontNormal,\n rotate = cloudRotate,\n padding = cloudPadding,\n spiral = archimedeanSpiral,\n random = Math.random,\n words = [],\n timeInterval = Infinity;\n var text = cloudText;\n var fontStyle = cloudFontNormal;\n var canvas = cloudCanvas;\n var cloud = {};\n cloud.start = function () {\n var width = size[0],\n height = size[1];\n var contextAndRatio = getContext(canvas()),\n board = cloud.board ? cloud.board : zeroArray((size[0] >> 5) * size[1]),\n n = words.length,\n tags = [],\n data = words.map(function (d, i, data) {\n d.text = text.call(this, d, i, data);\n d.font = font.call(this, d, i, data);\n d.style = fontStyle.call(this, d, i, data);\n d.weight = fontWeight.call(this, d, i, data);\n d.rotate = rotate.call(this, d, i, data);\n d.size = ~~fontSize.call(this, d, i, data);\n d.padding = padding.call(this, d, i, data);\n return d;\n }).sort(function (a, b) {\n return b.size - a.size;\n });\n var i = -1,\n bounds = !cloud.board ? null : [{\n x: 0,\n y: 0\n }, {\n x: width,\n y: height\n }];\n step();\n function step() {\n var start = Date.now();\n while (Date.now() - start < timeInterval && ++i < n) {\n var d = data[i];\n d.x = width * (random() + 0.5) >> 1;\n d.y = height * (random() + 0.5) >> 1;\n cloudSprite(contextAndRatio, d, data, i);\n if (d.hasText && place(board, d, bounds)) {\n tags.push(d);\n if (bounds) {\n if (!cloud.hasImage) {\n // update bounds if image mask not set\n cloudBounds(bounds, d);\n }\n } else {\n bounds = [{\n x: d.x + d.x0,\n y: d.y + d.y0\n }, {\n x: d.x + d.x1,\n y: d.y + d.y1\n }];\n }\n // Temporary hack\n d.x -= size[0] >> 1;\n d.y -= size[1] >> 1;\n }\n }\n cloud._tags = tags;\n cloud._bounds = bounds;\n }\n return cloud;\n };\n function getContext(canvas) {\n canvas.width = canvas.height = 1;\n var ratio = Math.sqrt(canvas.getContext('2d', {\n willReadFrequently: true\n }).getImageData(0, 0, 1, 1).data.length >> 2);\n canvas.width = (cw << 5) / ratio;\n canvas.height = ch / ratio;\n var context = canvas.getContext('2d', {\n willReadFrequently: true\n });\n context.fillStyle = context.strokeStyle = 'red';\n context.textAlign = 'center';\n return {\n context: context,\n ratio: ratio\n };\n }\n function place(board, tag, bounds) {\n // const perimeter = [{ x: 0, y: 0 }, { x: size[0], y: size[1] }],\n var startX = tag.x,\n startY = tag.y,\n maxDelta = Math.sqrt(size[0] * size[0] + size[1] * size[1]),\n s = spiral(size),\n dt = random() < 0.5 ? 1 : -1;\n var dxdy,\n t = -dt,\n dx,\n dy;\n while (dxdy = s(t += dt)) {\n dx = ~~dxdy[0];\n dy = ~~dxdy[1];\n if (Math.min(Math.abs(dx), Math.abs(dy)) >= maxDelta) break;\n tag.x = startX + dx;\n tag.y = startY + dy;\n if (tag.x + tag.x0 < 0 || tag.y + tag.y0 < 0 || tag.x + tag.x1 > size[0] || tag.y + tag.y1 > size[1]) continue;\n // TODO only check for collisions within current bounds.\n if (!bounds || !cloudCollide(tag, board, size[0])) {\n if (!bounds || collideRects(tag, bounds)) {\n var sprite = tag.sprite,\n w = tag.width >> 5,\n sw = size[0] >> 5,\n lx = tag.x - (w << 4),\n sx = lx & 0x7f,\n msx = 32 - sx,\n h = tag.y1 - tag.y0;\n var last = void 0,\n x = (tag.y + tag.y0) * sw + (lx >> 5);\n for (var j = 0; j < h; j++) {\n last = 0;\n for (var i = 0; i <= w; i++) {\n board[x + i] |= last << msx | (i < w ? (last = sprite[j * w + i]) >>> sx : 0);\n }\n x += sw;\n }\n delete tag.sprite;\n return true;\n }\n }\n }\n return false;\n }\n cloud.createMask = function (img) {\n var can = document.createElement('canvas');\n var width = size[0],\n height = size[1];\n // 当 width 或 height 为 0 时,调用 cxt.getImageData 会报错\n if (!width || !height) {\n return;\n }\n var w32 = width >> 5;\n var board = zeroArray((width >> 5) * height);\n can.width = width;\n can.height = height;\n var cxt = can.getContext('2d');\n cxt.drawImage(img, 0, 0, img.width, img.height, 0, 0, width, height);\n var imageData = cxt.getImageData(0, 0, width, height).data;\n for (var j = 0; j < height; j++) {\n for (var i = 0; i < width; i++) {\n var k = w32 * j + (i >> 5);\n var tmp = j * width + i << 2;\n var flag = imageData[tmp] >= 250 && imageData[tmp + 1] >= 250 && imageData[tmp + 2] >= 250;\n var m = flag ? 1 << 31 - i % 32 : 0;\n board[k] |= m;\n }\n }\n cloud.board = board;\n cloud.hasImage = true;\n };\n cloud.timeInterval = function (_) {\n timeInterval = _ == null ? Infinity : _;\n };\n cloud.words = function (_) {\n words = _;\n };\n cloud.size = function (_) {\n size = [+_[0], +_[1]];\n };\n cloud.font = function (_) {\n font = functor(_);\n };\n cloud.fontWeight = function (_) {\n fontWeight = functor(_);\n };\n cloud.rotate = function (_) {\n rotate = functor(_);\n };\n cloud.spiral = function (_) {\n spiral = spirals[_] || _;\n };\n cloud.fontSize = function (_) {\n fontSize = functor(_);\n };\n cloud.padding = function (_) {\n padding = functor(_);\n };\n cloud.random = function (_) {\n random = functor(_);\n };\n return cloud;\n}","import { __assign } from \"tslib\";\nimport { isArray, isFunction, isString } from '@antv/util';\nimport { getContainerSize, LEVEL, log } from '../../utils';\nimport { normalPadding } from '../../utils/padding';\nimport { functor, wordCloud } from '../../utils/transform/word-cloud';\n/**\n * 用 DataSet 转换词云图数据\n * @param params\n */\nexport function transform(params) {\n var rawOptions = params.options,\n chart = params.chart;\n var _a = chart,\n width = _a.width,\n height = _a.height,\n chartPadding = _a.padding,\n appendPadding = _a.appendPadding,\n ele = _a.ele;\n var data = rawOptions.data,\n imageMask = rawOptions.imageMask,\n wordField = rawOptions.wordField,\n weightField = rawOptions.weightField,\n colorField = rawOptions.colorField,\n wordStyle = rawOptions.wordStyle,\n timeInterval = rawOptions.timeInterval,\n random = rawOptions.random,\n spiral = rawOptions.spiral,\n _b = rawOptions.autoFit,\n autoFit = _b === void 0 ? true : _b,\n placementStrategy = rawOptions.placementStrategy;\n if (!data || !data.length) {\n return [];\n }\n var fontFamily = wordStyle.fontFamily,\n fontWeight = wordStyle.fontWeight,\n padding = wordStyle.padding,\n fontSize = wordStyle.fontSize;\n var arr = getSingleKeyValues(data, weightField);\n var range = [min(arr), max(arr)];\n // 变换出 text 和 value 字段\n var words = data.map(function (datum) {\n return {\n text: datum[wordField],\n value: datum[weightField],\n color: datum[colorField],\n datum: datum\n };\n });\n var options = {\n imageMask: imageMask,\n font: fontFamily,\n fontSize: getFontSizeMapping(fontSize, range),\n fontWeight: fontWeight,\n // 图表宽高减去 padding 之后的宽高\n size: getSize({\n width: width,\n height: height,\n padding: chartPadding,\n appendPadding: appendPadding,\n autoFit: autoFit,\n container: ele\n }),\n padding: padding,\n timeInterval: timeInterval,\n random: random,\n spiral: spiral,\n rotate: getRotate(rawOptions)\n };\n // 自定义布局函数\n if (isFunction(placementStrategy)) {\n var result = words.map(function (word, index, words) {\n return __assign(__assign(__assign({}, word), {\n hasText: !!word.text,\n font: functor(options.font)(word, index, words),\n weight: functor(options.fontWeight)(word, index, words),\n rotate: functor(options.rotate)(word, index, words),\n size: functor(options.fontSize)(word, index, words),\n style: 'normal'\n }), placementStrategy.call(chart, word, index, words));\n });\n // 添加两个参照数据,分别表示左上角和右下角\n result.push({\n text: '',\n value: 0,\n x: 0,\n y: 0,\n opacity: 0\n });\n result.push({\n text: '',\n value: 0,\n x: options.size[0],\n y: options.size[1],\n opacity: 0\n });\n return result;\n }\n // 数据准备在外部做,wordCloud 单纯就是做布局\n return wordCloud(words, options);\n}\n/**\n * 获取最终的实际绘图尺寸:[width, height]\n * @param chart\n */\nexport function getSize(options) {\n var width = options.width,\n height = options.height;\n var container = options.container,\n autoFit = options.autoFit,\n padding = options.padding,\n appendPadding = options.appendPadding;\n // 由于词云图每个词语的坐标都是先通过 DataSet 根据图表宽高计算出来的,\n // 也就是说,如果一开始提供给 DataSet 的宽高信息和最终显示的宽高不相同,\n // 那么就会出现布局错乱的情况,所以这里处理的目的就是让一开始提供给 DataSet 的\n // 宽高信息与最终显示的宽高信息相同,避免显示错乱。\n if (autoFit) {\n var containerSize = getContainerSize(container);\n width = containerSize.width;\n height = containerSize.height;\n }\n // 宽高不能为 0,否则会造成死循环\n width = width || 400;\n height = height || 400;\n var _a = resolvePadding({\n padding: padding,\n appendPadding: appendPadding\n }),\n top = _a[0],\n right = _a[1],\n bottom = _a[2],\n left = _a[3];\n var result = [width - (left + right), height - (top + bottom)];\n return result;\n}\n/**\n * 根据图表的 padding 和 appendPadding 计算出图表的最终 padding\n * @param chart\n */\nfunction resolvePadding(options) {\n var padding = normalPadding(options.padding);\n var appendPadding = normalPadding(options.appendPadding);\n var top = padding[0] + appendPadding[0];\n var right = padding[1] + appendPadding[1];\n var bottom = padding[2] + appendPadding[2];\n var left = padding[3] + appendPadding[3];\n return [top, right, bottom, left];\n}\n/**\n * 处理 imageMask 可能为 url 字符串的情况\n * @param {HTMLImageElement | string} img\n * @return {Promise}\n */\nexport function processImageMask(img) {\n return new Promise(function (res, rej) {\n if (img instanceof HTMLImageElement) {\n res(img);\n return;\n }\n if (isString(img)) {\n var image_1 = new Image();\n image_1.crossOrigin = 'anonymous';\n image_1.src = img;\n image_1.onload = function () {\n res(image_1);\n };\n image_1.onerror = function () {\n log(LEVEL.ERROR, false, 'image %s load failed !!!', img);\n rej();\n };\n return;\n }\n log(LEVEL.WARN, img === undefined, 'The type of imageMask option must be String or HTMLImageElement.');\n rej();\n });\n}\n/**\n * 把用户提供的 fontSize 值转换成符合 DataSet 要求的值\n * @param options\n * @param range\n */\nexport function getFontSizeMapping(fontSize, range) {\n if (isFunction(fontSize)) {\n return fontSize;\n }\n if (isArray(fontSize)) {\n var fMin_1 = fontSize[0],\n fMax_1 = fontSize[1];\n if (!range) {\n return function () {\n return (fMax_1 + fMin_1) / 2;\n };\n }\n var min_1 = range[0],\n max_1 = range[1];\n if (max_1 === min_1) {\n return function () {\n return (fMax_1 + fMin_1) / 2;\n };\n }\n return function fontSize(_a) {\n var value = _a.value;\n return (fMax_1 - fMin_1) / (max_1 - min_1) * (value - min_1) + fMin_1;\n };\n }\n return function () {\n return fontSize;\n };\n}\nexport function getSingleKeyValues(data, key) {\n return data.map(function (v) {\n return v[key];\n }).filter(function (v) {\n // 过滤非 number\n if (typeof v === 'number' && !isNaN(v)) return true;\n return false;\n });\n}\n/**\n * 把用户提供的关于旋转角度的字段值转换成符合 DataSet 要求的值\n * @param options\n */\nfunction getRotate(options) {\n var _a = resolveRotate(options),\n rotation = _a.rotation,\n rotationSteps = _a.rotationSteps;\n if (!isArray(rotation)) return rotation;\n var min = rotation[0];\n var max = rotation[1];\n // 等于 1 时不旋转,所以把每份大小设为 0\n var perSize = rotationSteps === 1 ? 0 : (max - min) / (rotationSteps - 1);\n return function rotate() {\n if (max === min) return max;\n return Math.floor(Math.random() * rotationSteps) * perSize;\n };\n}\n/**\n * 确保值在要求范围内\n * @param options\n */\nfunction resolveRotate(options) {\n var rotationSteps = options.wordStyle.rotationSteps;\n if (rotationSteps < 1) {\n log(LEVEL.WARN, false, 'The rotationSteps option must be greater than or equal to 1.');\n rotationSteps = 1;\n }\n return {\n rotation: options.wordStyle.rotation,\n rotationSteps: rotationSteps\n };\n}\n/**\n * 传入一个元素为数字的数组,\n * 返回该数组中值最小的数字。\n * @param numbers\n */\nfunction min(numbers) {\n return Math.min.apply(Math, numbers);\n}\n/**\n * 传入一个元素为数字的数组,\n * 返回该数组中值最大的数字。\n * @param numbers\n */\nfunction max(numbers) {\n return Math.max.apply(Math, numbers);\n}","import { __spreadArray } from \"tslib\";\nimport { get, isFunction } from '@antv/util';\nimport { animation, interaction, scale, state, theme, tooltip } from '../../adaptor/common';\nimport { point } from '../../adaptor/geometries';\nimport { deepAssign, flow } from '../../utils';\nimport { WORD_CLOUD_COLOR_FIELD } from './constant';\nimport { transform } from './utils';\n/**\n * geometry 配置处理\n * @param params\n */\nfunction geometry(params) {\n var chart = params.chart,\n options = params.options;\n var colorField = options.colorField,\n color = options.color;\n var data = transform(params);\n chart.data(data);\n var p = deepAssign({}, params, {\n options: {\n xField: 'x',\n yField: 'y',\n seriesField: colorField && WORD_CLOUD_COLOR_FIELD,\n rawFields: isFunction(color) && __spreadArray(__spreadArray([], get(options, 'rawFields', []), true), ['datum'], false),\n point: {\n color: color,\n shape: 'word-cloud'\n }\n }\n });\n var ext = point(p).ext;\n ext.geometry.label(false);\n chart.coordinate().reflect('y');\n chart.axis(false);\n return params;\n}\n/**\n * meta 配置\n * @param params\n */\nfunction meta(params) {\n return flow(scale({\n x: {\n nice: false\n },\n y: {\n nice: false\n }\n }))(params);\n}\n/**\n * 词云图 legend 配置\n * @param params\n */\nexport function legend(params) {\n var chart = params.chart,\n options = params.options;\n var legend = options.legend,\n colorField = options.colorField;\n if (legend === false) {\n chart.legend(false);\n } else if (colorField) {\n chart.legend(WORD_CLOUD_COLOR_FIELD, legend);\n }\n return params;\n}\n/**\n * 词云图适配器\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n // flow 的方式处理所有的配置到 G2 API\n flow(geometry, meta, tooltip, legend, interaction, animation, theme, state)(params);\n}","import { __assign } from \"tslib\";\nimport { registerShape, Util } from '@antv/g2';\nregisterShape('point', 'word-cloud', {\n draw: function draw(cfg, group) {\n var cx = cfg.x;\n var cy = cfg.y;\n var shape = group.addShape('text', {\n attrs: __assign(__assign({}, getTextAttrs(cfg)), {\n x: cx,\n y: cy\n })\n });\n var rotate = cfg.data.rotate;\n if (typeof rotate === 'number') {\n Util.rotate(shape, rotate * Math.PI / 180);\n }\n return shape;\n }\n});\nfunction getTextAttrs(cfg) {\n return {\n fontSize: cfg.data.size,\n text: cfg.data.text,\n textAlign: 'center',\n fontFamily: cfg.data.font,\n fontWeight: cfg.data.weight,\n fill: cfg.color || cfg.defaultStyle.stroke,\n textBaseline: 'alphabetic'\n };\n}","import { __assign, __extends } from \"tslib\";\nimport { Plot } from '../../core/plot';\nimport { adaptor } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constant';\n// 注册的shape\nimport './shapes/word-cloud';\nimport { processImageMask, transform } from './utils';\nvar WordCloud = /** @class */function (_super) {\n __extends(WordCloud, _super);\n function WordCloud() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 词云图 */\n _this.type = 'word-cloud';\n return _this;\n }\n /**\n * 获取 词云图 默认配置项\n * 供外部使用\n */\n WordCloud.getDefaultOptions = function () {\n return DEFAULT_OPTIONS;\n };\n /**\n * @override\n * @param data\n */\n WordCloud.prototype.changeData = function (data) {\n this.updateOption({\n data: data\n });\n if (this.options.imageMask) {\n this.render();\n } else {\n this.chart.changeData(transform({\n chart: this.chart,\n options: this.options\n }));\n }\n };\n /**\n * 获取默认的 options 配置项\n */\n WordCloud.prototype.getDefaultOptions = function () {\n return WordCloud.getDefaultOptions();\n };\n /**\n * 覆写父类方法,词云图需要加载图片资源,所以需要异步渲染\n */\n WordCloud.prototype.render = function () {\n var _this = this;\n return new Promise(function (res) {\n var imageMask = _this.options.imageMask;\n if (!imageMask) {\n // 调用父类渲染函数\n _super.prototype.render.call(_this);\n res();\n return;\n }\n var handler = function handler(img) {\n _this.options = __assign(__assign({}, _this.options), {\n imageMask: img || null\n });\n // 调用父类渲染函数\n _super.prototype.render.call(_this);\n res();\n };\n processImageMask(imageMask).then(handler).catch(handler);\n });\n };\n /**\n * 获取 词云图 的适配器\n */\n WordCloud.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n /**\n * 覆写父类的方法,因为词云图使用 单独的函数 进行布局,原理上有些不一样\n */\n WordCloud.prototype.triggerResize = function () {\n var _this = this;\n if (!this.chart.destroyed) {\n // 当整个词云图图表的宽高信息发生变化时,每个词语的坐标\n // 需要重新执行 adaptor,不然会出现布局错乱,\n // 如相邻词语重叠的情况。\n this.execAdaptor();\n // 延迟执行,有利于动画更流畅\n // TODO: 在多次更改画布尺寸时,动画会越来越卡顿,原因未知\n window.setTimeout(function () {\n // 执行父类的方法\n _super.prototype.triggerResize.call(_this);\n });\n }\n };\n return WordCloud;\n}(Plot);\nexport { WordCloud };","import { __extends } from \"tslib\";\nimport { Plot } from '../core/plot';\nimport { deepAssign } from '../utils';\n/**\n * 给 G2Plot 提供非常简单的开放开发的机制。目的是能够让社区和业务上自己基于 G2Plot 开发自己的定制图表库。主要分成几类图表:\n * 1. 领域专业的图表,内部同学因为没有场景,不一定能做的完善。\n * 2. 定制业务的图表,不具备通用性\n * 3. 趣味性的可视化组件\n * 然后官方可以根据社区的情况,可以进行一些官方推荐和采纳。\n *\n * 如果使用?\n *\n * ```ts\n * import { P } from '@antv/g2plot';\n * import { GeoWorldMap, GeoWorldMapOptions } from 'g2plot-geo-world-map';\n *\n * const plot = new P('container', {\n * geoJson: '',\n * longitude: '',\n * latitude: '',\n * }, GeoWorldMap, defaultOptions);\n *\n * plot.render();\n * ```\n */\nvar P = /** @class */function (_super) {\n __extends(P, _super);\n /**\n * 相比普通图表增加 adaptor 参数。\n * @param container\n * @param options\n * @param adaptor\n * @param defaultOptions\n */\n function P(container, options, adaptor, defaultOptions) {\n var _this = _super.call(this, container, deepAssign({}, defaultOptions, options)) || this;\n /** 统一为 any plot */\n _this.type = 'g2-plot';\n _this.defaultOptions = defaultOptions;\n _this.adaptor = adaptor;\n return _this;\n }\n /**\n * 实现父类方法,直接使用传入的\n */\n P.prototype.getDefaultOptions = function () {\n return this.defaultOptions;\n };\n /**\n * 实现父类方法,直接使用传入的\n */\n P.prototype.getSchemaAdaptor = function () {\n return this.adaptor;\n };\n return P;\n}(Plot);\nexport { P };","export var version = '2.4.31';\n// G2 自定义能力透出\nimport * as G2 from '@antv/g2';\n/** 开放一些通用的 adaptor 通道方法,实验阶段:不保证稳定性 */\nimport { animation, annotation, interaction, legend, scale, theme, tooltip } from './adaptor/common';\n// 国际化处理\nimport { registerLocale } from './core/locale';\nimport { EN_US_LOCALE } from './locales/en_US';\nimport { ZH_CN_LOCALE } from './locales/zh_CN';\n/** 各个 geometry 的 adaptor,可以让开发者更快的构造图形 */\nexport { area, interval, line, point, polygon, schema } from './adaptor/geometries';\n/** 全局变量 */\nexport { setGlobal } from './core/global';\n/** G2Plot 的 Plot 基类 */\nexport { Plot } from './core/plot';\n/** 对于没有开发完成的图表,可以暂时先放到 Lab 下面,先做体验,稳定后放到根 export */\nexport { Lab } from './lab';\n// 面积图及类型定义 | author by [hustcc](https://github.com/hustcc)\nexport { Area } from './plots/area';\n// 条形图及类型定义 | author by [BBSQQ](https://github.com/BBSQQ)\nexport { Bar } from './plots/bar';\n// 对称条形图及类型定义 | author by [arcsin1](https://github.com/arcsin1)\nexport { BidirectionalBar } from './plots/bidirectional-bar';\n// 箱线图及类型定义 | author by [BBSQQ](https://github.com/BBSQQ), [visiky](https://github.com/visiky)\nexport { Box } from './plots/box';\n// 子弹图及类型定义 | author by [arcsin1](https://github.com/arcsin1)\nexport { Bullet } from './plots/bullet';\n// 弦图及类型定义 | author by [MrSmallLiu](https://github.com/MrSmallLiu), [visiky](https://github.com/visiky)\nexport { Chord } from './plots/chord';\n// circle-packing 及类型定义 | author by [visiky](https://github.com/visiky), [Angeli](https://github.com/Angelii)\nexport { CirclePacking } from './plots/circle-packing';\n// 柱形图及类型定义 | author by [zqlu](https://github.com/zqlu)\nexport { Column } from './plots/column';\n// 混合图形 | author by [liuzhenying](https://github.com/liuzhenying)\nexport { DualAxes } from './plots/dual-axes';\n// 分面图及类型定义 | author by [visiky](https://github.com/visiky)\nexport { Facet } from './plots/facet';\n// 漏斗图及类型定义\nexport { Funnel, FUNNEL_CONVERSATION_FIELD } from './plots/funnel';\n// 仪表盘及类型定义 | author by [hustcc](https://github.com/hustcc)\nexport { Gauge } from './plots/gauge';\n// 热力图及类型定义 | author by [jiazhewang](https://github.com/jiazhewang)\nexport { Heatmap } from './plots/heatmap';\n// 直方图及类型定义 | author by [arcsin1](https://github.com/arcsin1), [visiky](https://github.com/visiky)\nexport { Histogram } from './plots/histogram';\n// 折线图及类型定义 | author by [hustcc](https://github.com/hustcc)\nexport { Line } from './plots/line';\n// 水波图及类型定义 | author by [CarisL](https://github.com/CarisL), [hustcc](https://github.com/hustcc), [pearmini](https://github.com/pearmini)\nexport { addWaterWave, Liquid } from './plots/liquid';\n// 已经废弃,更名为 Mix\nexport { Mix, Mix as MultiView } from './plots/mix';\n// 饼图及类型定义 | author by [visiky](https://github.com/visiky)\nexport { Pie } from './plots/pie';\n// 进度图及类型定义 | author by [connono](https://github.com/connono)\nexport { Progress } from './plots/progress';\n// 雷达图及类型定义 | author by [visiky](https://github.com/visiky)\nexport { Radar } from './plots/radar';\n// 玉珏图 | author by [yujs](https://github.com/yujs) | updated by [visiky](https://github.com/visiky)\nexport { RadialBar } from './plots/radial-bar';\n// 环形进度图及类型定义 | author by [connono](https://github.com/connono)\nexport { RingProgress } from './plots/ring-progress';\n// 玫瑰图及类型定义 | author by [zhangzhonghe](https://github.com/zhangzhonghe)\nexport { Rose } from './plots/rose';\n// 桑基图及类型定义 | author by [hustcc](https://github.com/hustcc)\nexport { Sankey } from './plots/sankey';\n// 散点图及类型定义 | author by [lxfu1](https://github.com/lxfu1)\nexport { Scatter } from './plots/scatter';\n// K线图及类型定义 | author by [jhwong](https://github.com/jinhuiWong), [visiky](https://github.com/visiky)\nexport { Stock } from './plots/stock';\n// 旭日图及类型定义 | author by [lxfu1](https://github.com/lxfu1), [visiky](https://github.com/visiky)\nexport { Sunburst } from './plots/sunburst';\n// 迷你面积图及类型定义 | author by [connono](https://github.com/connono)\nexport { TinyArea } from './plots/tiny-area';\n// 迷你柱形图及类型定义 | author by [connono](https://github.com/connono)\nexport { TinyColumn } from './plots/tiny-column';\n// 迷你折线图及类型定义 | author by [connono](https://github.com/connono)\nexport { TinyLine } from './plots/tiny-line';\n// 矩形树图\nexport { Treemap } from './plots/treemap';\n// 韦恩图及类型定义 | author by [visiky](https://github.com/visiky)\nexport { Venn } from './plots/venn';\n// 小提琴图及类型定义 | author by [YiSiWang](https://github.com/YiSiWang), [visiky](https://github.com/visiky)\nexport { Violin } from './plots/violin';\n// 瀑布图 | author by [visiky](https://github.com/visiky)\nexport { Waterfall } from './plots/waterfall';\n// 词云图及类型定义 | author by [zhangzhonghe](https://github.com/zhangzhonghe)\nexport { WordCloud } from './plots/word-cloud';\n// 以下开放自定义图表开发的能力(目前仅仅是孵化中)\n/** 所有开放图表都使用 G2Plot.P 作为入口开发,理论上官方的所有图表都可以走 G2Plot.P 的入口(暂时不处理) */\nexport { P } from './plugin';\n// 类型定义导出\nexport * from './types';\n/** 开发 adaptor 可能会用到的方法或一些工具方法,不强制使用 */\nexport { flow, measureTextWidth } from './utils';\n/** 开放 getCanvasPatterng 方法 */\nexport { getCanvasPattern } from './utils/pattern';\nexport { G2 };\n/** 透出 国际化 工具函数,便于使用 */\nexport { registerLocale };\n/** default locale register */\nregisterLocale('en-US', EN_US_LOCALE);\nregisterLocale('zh-CN', ZH_CN_LOCALE);\nexport var adaptors = {\n scale: scale,\n legend: legend,\n tooltip: tooltip,\n annotation: annotation,\n interaction: interaction,\n theme: theme,\n animation: animation\n};","export var EN_US_LOCALE = {\n locale: 'en-US',\n // General\n general: {\n increase: 'Increase',\n decrease: 'Decrease',\n root: 'Root'\n },\n // Plot Components\n /** statistic text component */\n statistic: {\n total: 'Total'\n },\n /** conversionTag component */\n conversionTag: {\n label: 'Rate'\n },\n legend: {},\n tooltip: {},\n slider: {},\n scrollbar: {},\n // Plots\n waterfall: {\n total: 'Total'\n }\n};","export var ZH_CN_LOCALE = {\n locale: 'zh-CN',\n // 通用\n general: {\n increase: '增加',\n decrease: '减少',\n root: '初始'\n },\n // 按照图表组件\n /** 中心文本 */\n statistic: {\n total: '总计'\n },\n /** 转化率组件 */\n conversionTag: {\n label: '转化率'\n },\n legend: {},\n tooltip: {},\n slider: {},\n scrollbar: {},\n // 按照图表类型\n waterfall: {\n total: '总计'\n }\n};","var __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nimport * as ReactDOM from 'react-dom';\n// Let compiler not to search module usage\nvar fullClone = __assign({}, ReactDOM);\nvar version = fullClone.version,\n reactRender = fullClone.render,\n unmountComponentAtNode = fullClone.unmountComponentAtNode;\nvar createRoot;\ntry {\n var mainVersion = Number((version || '').split('.')[0]);\n if (mainVersion >= 18) {\n createRoot = fullClone.createRoot;\n }\n} catch (e) {\n // Do nothing;\n}\nfunction toggleWarning(skip) {\n var __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = fullClone.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n if (__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED && typeof __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED === 'object') {\n __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.usingClientEntryPoint = skip;\n }\n}\nvar MARK = '__rc_react_root__';\nfunction modernRender(node, container) {\n toggleWarning(true);\n var root = container[MARK] || createRoot(container);\n toggleWarning(false);\n root.render(node);\n container[MARK] = root;\n}\nfunction legacyRender(node, container) {\n reactRender(node, container);\n}\n/** @private Test usage. Not work in prod */\nexport function _r(node, container) {\n if (process.env.NODE_ENV !== 'production') {\n return legacyRender(node, container);\n }\n}\nexport function render(node, container) {\n if (createRoot) {\n modernRender(node, container);\n return;\n }\n legacyRender(node, container);\n}\n// ========================= Unmount ==========================\nfunction modernUnmount(container) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n // Delay to unmount to avoid React 18 sync warning\n return [2 /*return*/, Promise.resolve().then(function () {\n var _a;\n (_a = container[MARK]) === null || _a === void 0 ? void 0 : _a.unmount();\n delete container[MARK];\n })];\n });\n });\n}\nfunction legacyUnmount(container) {\n unmountComponentAtNode(container);\n}\n/** @private Test usage. Not work in prod */\nexport function _u(container) {\n if (process.env.NODE_ENV !== 'production') {\n return legacyUnmount(container);\n }\n}\nexport function unmount(container) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (createRoot !== undefined) {\n // Delay to unmount to avoid React 18 sync warning\n return [2 /*return*/, modernUnmount(container)];\n }\n legacyUnmount(container);\n return [2 /*return*/];\n });\n });\n}","import { render } from './render';\nvar TOOLTIP_CONTAINER_MAPPING = new Map();\nvar createNode = function createNode(children, type, uuid) {\n var mountPoint = document.createElement('div');\n if (type === 'tooltip') {\n mountPoint.setAttribute('data-uuid', uuid);\n if (TOOLTIP_CONTAINER_MAPPING.has(uuid)) {\n mountPoint = TOOLTIP_CONTAINER_MAPPING.get(uuid);\n } else {\n TOOLTIP_CONTAINER_MAPPING.set(uuid, mountPoint);\n }\n mountPoint.className = 'g2-tooltip';\n }\n render(children, mountPoint);\n return mountPoint;\n};\nexport default createNode;","/* eslint-disable no-restricted-syntax */\n// 类型检测\nexport var isType = function isType(value, type) {\n var toString = {}.toString;\n return toString.call(value) === \"[object \".concat(type, \"]\");\n};\nexport var clone = function clone(source) {\n if (!source) {\n return source;\n }\n var target = {};\n // eslint-disable-next-line guard-for-in\n for (var k in source) {\n target[k] = source[k];\n }\n return target;\n};\nexport var getType = function getType(n) {\n return Object.prototype.toString.call(n).slice(8, -1);\n};\n/**\n * 深克隆\n * @param source 要深克隆的目标对象\n */\nexport var deepClone = function deepClone(source) {\n if (!source || typeof source !== 'object') {\n return source;\n }\n var target;\n if (Array.isArray(source)) {\n target = source.map(function (item) {\n return deepClone(item);\n });\n } else {\n target = {};\n Object.keys(source).forEach(function (key) {\n return target[key] = deepClone(source[key]);\n });\n }\n return target;\n};\n/**\n * 存在时返回路径值,不存在时返回 undefined\n */\nexport var hasPath = function hasPath(source, path) {\n var current = source;\n for (var i = 0; i < path.length; i += 1) {\n if (current === null || current === void 0 ? void 0 : current[path[i]]) {\n current = current[path[i]];\n } else {\n current = undefined;\n break;\n }\n }\n return current;\n};\n/**\n * 内部指定 params ,不考虑复杂情况\n */\nexport var setPath = function setPath(source, path, value) {\n if (!source) {\n return source;\n }\n var o = source;\n path.forEach(function (key, idx) {\n // 不是最后一个\n if (idx < path.length - 1) {\n o = o[key];\n } else {\n o[key] = value;\n }\n });\n return source;\n};\nexport var uuid = function uuid() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = Math.random() * 16 | 0;\n var v = c == 'x' ? r : r & 0x3 | 0x8;\n return v.toString(16);\n });\n};","var __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { useRef, useEffect } from 'react';\nimport { isEqual, get } from '@antv/util';\nimport createNode from '../utils/createNode';\nimport { hasPath, isType, deepClone, clone, setPath, uuid } from '../utils';\nexport default function useInit(ChartClass, config) {\n var chart = useRef();\n var chartOptions = useRef();\n var container = useRef(null);\n var onReady = config.onReady,\n onEvent = config.onEvent;\n /**\n * Get data base64\n * @param {string} type A DOMString indicating the image format. The default format type is image/png.\n * @param {number} encoderOptions A Number between 0 and 1 indicating the image quality\n */\n var toDataURL = function toDataURL(type, encoderOptions) {\n var _a;\n if (type === void 0) {\n type = 'image/png';\n }\n return (_a = chart.current) === null || _a === void 0 ? void 0 : _a.chart.canvas.cfg.el.toDataURL(type, encoderOptions);\n };\n /**\n * Download Iamge\n * @param {string} name A name of image\n * @param {string} type A DOMString indicating the image format. The default format type is image/png.\n * @param {number} encoderOptions A Number between 0 and 1 indicating the image quality\n */\n var downloadImage = function downloadImage(name, type, encoderOptions) {\n var _a;\n if (name === void 0) {\n name = 'download';\n }\n if (type === void 0) {\n type = 'image/png';\n }\n var imageName = name;\n if (name.indexOf('.') === -1) {\n imageName = \"\".concat(name, \".\").concat(type.split('/')[1]);\n }\n var base64 = (_a = chart.current) === null || _a === void 0 ? void 0 : _a.chart.canvas.cfg.el.toDataURL(type, encoderOptions);\n var a = document.createElement('a');\n a.href = base64;\n a.download = imageName;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n a = null;\n return imageName;\n };\n var reactDomToString = function reactDomToString(source, path, type, _uuid) {\n var statisticCustomHtml = hasPath(source, path);\n setPath(source, path, function () {\n var arg = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n arg[_i] = arguments[_i];\n }\n var statisticDom = isType(statisticCustomHtml, 'Function') ? statisticCustomHtml.apply(void 0, arg) : statisticCustomHtml;\n if (isType(statisticDom, 'String') || isType(statisticDom, 'Number') || isType(statisticDom, 'HTMLDivElement')) {\n return statisticDom;\n }\n return createNode(statisticDom, type, _uuid);\n });\n };\n var processConfig = function processConfig() {\n var _uuid = uuid();\n // statistic\n if (hasPath(config, ['statistic', 'content', 'customHtml'])) {\n reactDomToString(config, ['statistic', 'content', 'customHtml']);\n }\n if (hasPath(config, ['statistic', 'title', 'customHtml'])) {\n reactDomToString(config, ['statistic', 'title', 'customHtml']);\n }\n // tooltip\n if (typeof config.tooltip === 'object') {\n if (hasPath(config, ['tooltip', 'container'])) {\n reactDomToString(config, ['tooltip', 'container'], 'tooltip', _uuid);\n }\n if (hasPath(config, ['tooltip', 'customContent'])) {\n reactDomToString(config, ['tooltip', 'customContent'], 'tooltip', _uuid);\n }\n }\n };\n useEffect(function () {\n if (chart.current && !isEqual(chartOptions.current, config)) {\n var changeData = false;\n if (chartOptions.current) {\n // 从 options 里面取出 data 、value 、 percent 进行比对,判断是否仅数值发生改变\n var _a = chartOptions.current,\n currentData = _a.data,\n currentValue = _a.value,\n currentPercent = _a.percent,\n currentConfig = __rest(_a, [\"data\", \"value\", \"percent\"]);\n var inputData = config.data,\n inputValue = config.value,\n inputPercent = config.percent,\n inputConfig = __rest(config, [\"data\", \"value\", \"percent\"]);\n changeData = isEqual(currentConfig, inputConfig);\n }\n chartOptions.current = deepClone(config);\n if (changeData && get(config, 'chartType') !== 'Mix') {\n var changeType_1 = 'data';\n var typeMaps = ['percent']; // 特殊类型的图表 data 字段,例如 RingProgress\n var currentKeys_1 = Object.keys(config);\n typeMaps.forEach(function (type) {\n if (currentKeys_1.includes(type)) {\n changeType_1 = type;\n }\n });\n chart.current.changeData((config === null || config === void 0 ? void 0 : config[changeType_1]) || []);\n chart.current.render();\n } else {\n processConfig();\n chart.current.update(config);\n }\n }\n }, [config]);\n useEffect(function () {\n if (!container.current) {\n return function () {\n return null;\n };\n }\n if (!chartOptions.current) {\n chartOptions.current = deepClone(config);\n }\n processConfig();\n var chartInstance = new ChartClass(container.current, __assign({}, config));\n chartInstance.toDataURL = function (type, encoderOptions) {\n return toDataURL(type, encoderOptions);\n };\n chartInstance.downloadImage = function (name, type, encoderOptions) {\n return downloadImage(name, type, encoderOptions);\n };\n chartInstance.render();\n chart.current = clone(chartInstance);\n if (onReady) {\n onReady(chartInstance);\n }\n var handler = function handler(event) {\n if (onEvent) {\n onEvent(chartInstance, event);\n }\n };\n chartInstance.on('*', handler);\n // 组件销毁时销毁图表\n return function () {\n if (chart.current) {\n chart.current.destroy();\n chart.current.off('*', handler);\n chart.current = undefined;\n }\n };\n }, []);\n return {\n chart: chart,\n container: container\n };\n}","import { isFunction } from '@antv/util';\n/**\n * 获取或者绑定图表实例\n */\nexport var getChart = function getChart(chartRef, chart) {\n if (!chartRef) {\n return;\n }\n if (isFunction(chartRef)) {\n chartRef(chart);\n } else {\n chartRef.current = chart;\n }\n};","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nimport React, { Fragment } from 'react';\nvar ErrorBoundary = /** @class */function (_super) {\n __extends(ErrorBoundary, _super);\n function ErrorBoundary() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n hasError: false\n };\n _this.renderError = function (e) {\n var errorTemplate = _this.props.errorTemplate;\n switch (e) {\n default:\n if (typeof errorTemplate === 'function') {\n return errorTemplate(e);\n }\n return errorTemplate ? errorTemplate : React.createElement(\"h5\", null, \"\\u7EC4\\u4EF6\\u51FA\\u9519\\u4E86\\uFF0C\\u8BF7\\u6838\\u67E5\\u540E\\u91CD\\u8BD5\\uFF1A \", e.message);\n }\n };\n return _this;\n }\n ErrorBoundary.getDerivedStateFromError = function (error) {\n return {\n hasError: true,\n error: error\n };\n };\n ErrorBoundary.getDerivedStateFromProps = function (nextProps, state) {\n if (state.children !== nextProps.children) {\n return {\n children: nextProps.children,\n hasError: false,\n error: undefined\n };\n }\n return null;\n };\n ErrorBoundary.prototype.render = function () {\n if (this.state.hasError) {\n return this.renderError(this.state.error);\n }\n return React.createElement(Fragment, null, this.props.children);\n };\n return ErrorBoundary;\n}(React.Component);\nexport default ErrorBoundary;","import { createElement } from 'react';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\n\nvar _assign = function __assign() {\n _assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return _assign.apply(this, arguments);\n};\nfunction __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n}\nvar uid = function uid() {\n return Math.random().toString(36).substring(6);\n};\nvar SVG = function SVG(_a) {\n var animate = _a.animate,\n backgroundColor = _a.backgroundColor,\n backgroundOpacity = _a.backgroundOpacity,\n baseUrl = _a.baseUrl,\n children = _a.children,\n foregroundColor = _a.foregroundColor,\n foregroundOpacity = _a.foregroundOpacity,\n gradientRatio = _a.gradientRatio,\n uniqueKey = _a.uniqueKey,\n interval = _a.interval,\n rtl = _a.rtl,\n speed = _a.speed,\n style = _a.style,\n title = _a.title,\n props = __rest(_a, [\"animate\", \"backgroundColor\", \"backgroundOpacity\", \"baseUrl\", \"children\", \"foregroundColor\", \"foregroundOpacity\", \"gradientRatio\", \"uniqueKey\", \"interval\", \"rtl\", \"speed\", \"style\", \"title\"]);\n var fixedId = uniqueKey || uid();\n var idClip = fixedId + \"-diff\";\n var idGradient = fixedId + \"-animated-diff\";\n var idAria = fixedId + \"-aria\";\n var rtlStyle = rtl ? {\n transform: 'scaleX(-1)'\n } : null;\n var keyTimes = \"0; \" + interval + \"; 1\";\n var dur = speed + \"s\";\n return createElement(\"svg\", _assign({\n \"aria-labelledby\": idAria,\n role: \"img\",\n style: _assign(_assign({}, style), rtlStyle)\n }, props), title ? createElement(\"title\", {\n id: idAria\n }, title) : null, createElement(\"rect\", {\n role: \"presentation\",\n x: \"0\",\n y: \"0\",\n width: \"100%\",\n height: \"100%\",\n clipPath: \"url(\" + baseUrl + \"#\" + idClip + \")\",\n style: {\n fill: \"url(\" + baseUrl + \"#\" + idGradient + \")\"\n }\n }), createElement(\"defs\", {\n role: \"presentation\"\n }, createElement(\"clipPath\", {\n id: idClip\n }, children), createElement(\"linearGradient\", {\n id: idGradient\n }, createElement(\"stop\", {\n offset: \"0%\",\n stopColor: backgroundColor,\n stopOpacity: backgroundOpacity\n }, animate && createElement(\"animate\", {\n attributeName: \"offset\",\n values: -gradientRatio + \"; \" + -gradientRatio + \"; 1\",\n keyTimes: keyTimes,\n dur: dur,\n repeatCount: \"indefinite\"\n })), createElement(\"stop\", {\n offset: \"50%\",\n stopColor: foregroundColor,\n stopOpacity: foregroundOpacity\n }, animate && createElement(\"animate\", {\n attributeName: \"offset\",\n values: -gradientRatio / 2 + \"; \" + -gradientRatio / 2 + \"; \" + (1 + gradientRatio / 2),\n keyTimes: keyTimes,\n dur: dur,\n repeatCount: \"indefinite\"\n })), createElement(\"stop\", {\n offset: \"100%\",\n stopColor: backgroundColor,\n stopOpacity: backgroundOpacity\n }, animate && createElement(\"animate\", {\n attributeName: \"offset\",\n values: \"0; 0; \" + (1 + gradientRatio),\n keyTimes: keyTimes,\n dur: dur,\n repeatCount: \"indefinite\"\n })))));\n};\nSVG.defaultProps = {\n animate: true,\n backgroundColor: '#f5f6f7',\n backgroundOpacity: 1,\n baseUrl: '',\n foregroundColor: '#eee',\n foregroundOpacity: 1,\n gradientRatio: 2,\n id: null,\n interval: 0.25,\n rtl: false,\n speed: 1.2,\n style: {},\n title: 'Loading...'\n};\nvar ContentLoader = function ContentLoader(props) {\n return props.children ? createElement(SVG, _assign({}, props)) : createElement(ReactContentLoaderFacebook, _assign({}, props));\n};\nvar ReactContentLoaderFacebook = function ReactContentLoaderFacebook(props) {\n return createElement(ContentLoader, _assign({\n viewBox: \"0 0 476 124\"\n }, props), createElement(\"rect\", {\n x: \"48\",\n y: \"8\",\n width: \"88\",\n height: \"6\",\n rx: \"3\"\n }), createElement(\"rect\", {\n x: \"48\",\n y: \"26\",\n width: \"52\",\n height: \"6\",\n rx: \"3\"\n }), createElement(\"rect\", {\n x: \"0\",\n y: \"56\",\n width: \"410\",\n height: \"6\",\n rx: \"3\"\n }), createElement(\"rect\", {\n x: \"0\",\n y: \"72\",\n width: \"380\",\n height: \"6\",\n rx: \"3\"\n }), createElement(\"rect\", {\n x: \"0\",\n y: \"88\",\n width: \"178\",\n height: \"6\",\n rx: \"3\"\n }), createElement(\"circle\", {\n cx: \"20\",\n cy: \"20\",\n r: \"20\"\n }));\n};\nvar ReactContentLoaderInstagram = function ReactContentLoaderInstagram(props) {\n return createElement(ContentLoader, _assign({\n viewBox: \"0 0 400 460\"\n }, props), createElement(\"circle\", {\n cx: \"31\",\n cy: \"31\",\n r: \"15\"\n }), createElement(\"rect\", {\n x: \"58\",\n y: \"18\",\n rx: \"2\",\n ry: \"2\",\n width: \"140\",\n height: \"10\"\n }), createElement(\"rect\", {\n x: \"58\",\n y: \"34\",\n rx: \"2\",\n ry: \"2\",\n width: \"140\",\n height: \"10\"\n }), createElement(\"rect\", {\n x: \"0\",\n y: \"60\",\n rx: \"2\",\n ry: \"2\",\n width: \"400\",\n height: \"400\"\n }));\n};\nvar ReactContentLoaderCode = function ReactContentLoaderCode(props) {\n return createElement(ContentLoader, _assign({\n viewBox: \"0 0 340 84\"\n }, props), createElement(\"rect\", {\n x: \"0\",\n y: \"0\",\n width: \"67\",\n height: \"11\",\n rx: \"3\"\n }), createElement(\"rect\", {\n x: \"76\",\n y: \"0\",\n width: \"140\",\n height: \"11\",\n rx: \"3\"\n }), createElement(\"rect\", {\n x: \"127\",\n y: \"48\",\n width: \"53\",\n height: \"11\",\n rx: \"3\"\n }), createElement(\"rect\", {\n x: \"187\",\n y: \"48\",\n width: \"72\",\n height: \"11\",\n rx: \"3\"\n }), createElement(\"rect\", {\n x: \"18\",\n y: \"48\",\n width: \"100\",\n height: \"11\",\n rx: \"3\"\n }), createElement(\"rect\", {\n x: \"0\",\n y: \"71\",\n width: \"37\",\n height: \"11\",\n rx: \"3\"\n }), createElement(\"rect\", {\n x: \"18\",\n y: \"23\",\n width: \"140\",\n height: \"11\",\n rx: \"3\"\n }), createElement(\"rect\", {\n x: \"166\",\n y: \"23\",\n width: \"173\",\n height: \"11\",\n rx: \"3\"\n }));\n};\nvar ReactContentLoaderListStyle = function ReactContentLoaderListStyle(props) {\n return createElement(ContentLoader, _assign({\n viewBox: \"0 0 400 110\"\n }, props), createElement(\"rect\", {\n x: \"0\",\n y: \"0\",\n rx: \"3\",\n ry: \"3\",\n width: \"250\",\n height: \"10\"\n }), createElement(\"rect\", {\n x: \"20\",\n y: \"20\",\n rx: \"3\",\n ry: \"3\",\n width: \"220\",\n height: \"10\"\n }), createElement(\"rect\", {\n x: \"20\",\n y: \"40\",\n rx: \"3\",\n ry: \"3\",\n width: \"170\",\n height: \"10\"\n }), createElement(\"rect\", {\n x: \"0\",\n y: \"60\",\n rx: \"3\",\n ry: \"3\",\n width: \"250\",\n height: \"10\"\n }), createElement(\"rect\", {\n x: \"20\",\n y: \"80\",\n rx: \"3\",\n ry: \"3\",\n width: \"200\",\n height: \"10\"\n }), createElement(\"rect\", {\n x: \"20\",\n y: \"100\",\n rx: \"3\",\n ry: \"3\",\n width: \"80\",\n height: \"10\"\n }));\n};\nvar ReactContentLoaderBulletList = function ReactContentLoaderBulletList(props) {\n return createElement(ContentLoader, _assign({\n viewBox: \"0 0 245 125\"\n }, props), createElement(\"circle\", {\n cx: \"10\",\n cy: \"20\",\n r: \"8\"\n }), createElement(\"rect\", {\n x: \"25\",\n y: \"15\",\n rx: \"5\",\n ry: \"5\",\n width: \"220\",\n height: \"10\"\n }), createElement(\"circle\", {\n cx: \"10\",\n cy: \"50\",\n r: \"8\"\n }), createElement(\"rect\", {\n x: \"25\",\n y: \"45\",\n rx: \"5\",\n ry: \"5\",\n width: \"220\",\n height: \"10\"\n }), createElement(\"circle\", {\n cx: \"10\",\n cy: \"80\",\n r: \"8\"\n }), createElement(\"rect\", {\n x: \"25\",\n y: \"75\",\n rx: \"5\",\n ry: \"5\",\n width: \"220\",\n height: \"10\"\n }), createElement(\"circle\", {\n cx: \"10\",\n cy: \"110\",\n r: \"8\"\n }), createElement(\"rect\", {\n x: \"25\",\n y: \"105\",\n rx: \"5\",\n ry: \"5\",\n width: \"220\",\n height: \"10\"\n }));\n};\nexport default ContentLoader;\nexport { ReactContentLoaderBulletList as BulletList, ReactContentLoaderCode as Code, ReactContentLoaderFacebook as Facebook, ReactContentLoaderInstagram as Instagram, ReactContentLoaderListStyle as List };","import React from 'react';\nimport ContentLoader from 'react-content-loader';\nvar ChartLoading = function ChartLoading(_a) {\n var loadingTemplate = _a.loadingTemplate,\n _b = _a.theme,\n theme = _b === void 0 ? 'light' : _b;\n var renderLoading = function renderLoading() {\n if (loadingTemplate) {\n return loadingTemplate;\n }\n return React.createElement(ContentLoader, {\n viewBox: \"0 0 400 180\",\n width: 200,\n height: 90,\n speed: 1,\n backgroundColor: theme === 'dark' ? '#262626' : '#D9D9D9'\n }, React.createElement(\"rect\", {\n x: \"20\",\n y: \"5\",\n rx: \"0\",\n ry: \"0\",\n width: \"1\",\n height: \"170\"\n }), React.createElement(\"rect\", {\n x: \"20\",\n y: \"175\",\n rx: \"0\",\n ry: \"0\",\n width: \"360\",\n height: \"1\"\n }), React.createElement(\"rect\", {\n x: \"40\",\n y: \"75\",\n rx: \"0\",\n ry: \"0\",\n width: \"35\",\n height: \"100\"\n }), React.createElement(\"rect\", {\n x: \"80\",\n y: \"125\",\n rx: \"0\",\n ry: \"0\",\n width: \"35\",\n height: \"50\"\n }), React.createElement(\"rect\", {\n x: \"120\",\n y: \"105\",\n rx: \"0\",\n ry: \"0\",\n width: \"35\",\n height: \"70\"\n }), React.createElement(\"rect\", {\n x: \"160\",\n y: \"35\",\n rx: \"0\",\n ry: \"0\",\n width: \"35\",\n height: \"140\"\n }), React.createElement(\"rect\", {\n x: \"200\",\n y: \"55\",\n rx: \"0\",\n ry: \"0\",\n width: \"35\",\n height: \"120\"\n }), React.createElement(\"rect\", {\n x: \"240\",\n y: \"15\",\n rx: \"0\",\n ry: \"0\",\n width: \"35\",\n height: \"160\"\n }), React.createElement(\"rect\", {\n x: \"280\",\n y: \"135\",\n rx: \"0\",\n ry: \"0\",\n width: \"35\",\n height: \"40\"\n }), React.createElement(\"rect\", {\n x: \"320\",\n y: \"85\",\n rx: \"0\",\n ry: \"0\",\n width: \"35\",\n height: \"90\"\n }));\n };\n return React.createElement(\"div\", {\n className: \"charts-loading-container\",\n style: {\n position: 'absolute',\n width: '100%',\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n left: 0,\n top: 0,\n zIndex: 99,\n backgroundColor: theme === 'dark' ? 'rgb(20, 20, 20)' : 'rgb(255, 255, 255)'\n }\n }, renderLoading());\n};\nexport default ChartLoading;","var __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React, { useEffect, useImperativeHandle, forwardRef } from 'react';\nimport { Radar as G2plotRadar } from '@antv/g2plot';\nimport useChart from '../../hooks/useChart';\nimport { getChart } from '../../utils';\nimport ErrorBoundary from '../../errorBoundary';\nimport ChartLoading from '../../utils/createLoading';\nvar RadarChart = forwardRef(function (props, ref) {\n var chartRef = props.chartRef,\n _a = props.style,\n style = _a === void 0 ? {\n height: 'inherit'\n } : _a,\n className = props.className,\n loading = props.loading,\n loadingTemplate = props.loadingTemplate,\n errorTemplate = props.errorTemplate,\n rest = __rest(props, [\"chartRef\", \"style\", \"className\", \"loading\", \"loadingTemplate\", \"errorTemplate\"]);\n var _b = useChart(G2plotRadar, rest),\n chart = _b.chart,\n container = _b.container;\n useEffect(function () {\n getChart(chartRef, chart.current);\n }, [chart.current]);\n useImperativeHandle(ref, function () {\n return {\n getChart: function getChart() {\n return chart.current;\n }\n };\n });\n return React.createElement(ErrorBoundary, {\n errorTemplate: errorTemplate\n }, loading && React.createElement(ChartLoading, {\n loadingTemplate: loadingTemplate,\n theme: props.theme\n }), React.createElement(\"div\", {\n className: className,\n style: style,\n ref: container\n }));\n});\nexport default RadarChart;","import { Radar } from \"@ant-design/charts\";\nimport * as React from \"react\";\n\nconst EvalRadarPlot = ({ data }: any) => {\n // const data = [\n // {\n // name: \"G2\",\n // star: 10371,\n // },\n // {\n // name: \"G6\",\n // star: 7380,\n // },\n // {\n // name: \"F2\",\n // star: 7414,\n // },\n // {\n // name: \"L7\",\n // star: 2140,\n // },\n // {\n // name: \"X6\",\n // star: 660,\n // },\n // {\n // name: \"AVA\",\n // star: 885,\n // },\n // {\n // name: \"G2Plot\",\n // star: 1626,\n // },\n // ];\n const config = {\n data: data.map((d: any) => ({ ...d, score: d.score / 2 })),\n xField: \"dimension\",\n yField: \"score\",\n appendPadding: [0, 10, 0, 10],\n meta: {\n score: {\n alias: \"score (out of 5)\",\n min: 0,\n nice: true,\n formatter: (v: any) => Number(v).toFixed(2),\n },\n },\n xAxis: {\n tickLine: null,\n },\n yAxis: {\n label: false,\n grid: {\n alternateColor: \"rgba(0, 0, 0, 0.04)\",\n },\n },\n point: {\n size: 2,\n },\n area: {\n style: {\n fillOpacity: 0.3,\n fill: \"green\",\n stroke: \"green\",\n },\n },\n };\n return (\n
          \n \n
          \n );\n};\nexport default EvalRadarPlot;\n","import * as React from \"react\";\nimport {\n AcademicCapIcon,\n WrenchScrewdriverIcon,\n} from \"@heroicons/react/24/outline\";\nimport { StarIcon } from \"@heroicons/react/24/solid\";\nimport { IStatus, IVizConfig } from \"../../types\";\nimport { Skeleton, message } from \"antd\";\nimport { fetchJSON, mapNumberToColor, scrollToElement } from \"../../utils\";\nimport { LoadBox } from \"../../atoms\";\nimport EvalRadarPlot from \"./evalradar\";\n\nconst ChartEvaluator = ({\n vizData,\n setVizData,\n vizConfig,\n}: {\n vizData: any;\n setVizData: any;\n vizConfig: IVizConfig;\n}) => {\n let initEval = [\n {\n dimension: \"bugs\",\n score: 3,\n rationale:\n \"The code is free of any bugs, syntax errors, or typos. The code is well-structured and easy to read.\",\n },\n {\n dimension: \"transformation\",\n score: 10,\n rationale:\n \"The data is not transformed as it is already in the appropriate format for the histogram visualization.\",\n },\n {\n dimension: \"compliance\",\n score: 6,\n rationale:\n \"The code meets the specified visualization goals of showing the distribution of daily closing prices of the S&P 500 index.\",\n },\n {\n dimension: \"type\",\n score: 10,\n rationale:\n \"The histogram visualization is appropriate for showing the distribution of a single variable, which is the daily closing price of the S&P 500 index.\",\n },\n {\n dimension: \"encoding\",\n score: 8,\n rationale:\n \"The data is encoded appropriately for the histogram visualization, with the x-axis representing the daily closing price of the S&P 500 index and the y-axis representing the frequency of occurrence.\",\n },\n {\n dimension: \"aesthetics\",\n score: 1,\n rationale:\n \"The aesthetics of the visualization are appropriate for the histogram type, with the blue color representing the distribution of the data, and the red and green dashed lines representing the mean and median values, respectively. The labels and ticks are also appropriately placed and rotated for readability.\",\n },\n ];\n initEval = [];\n const [loading, setLoading] = React.useState(false);\n const [loadingRepair, setLoadingRepair] = React.useState(false);\n const [error, setError] = React.useState(null);\n const [evaluations, setEvaluations] = React.useState(initEval);\n const serverUrl = process.env.GATSBY_API_URL;\n const [selectedEvaluation, setSelectedEvaluation] = React.useState(0);\n\n const evaluationsDivRef = React.useRef(null);\n\n React.useEffect(() => {\n setEvaluations(initEval);\n setSelectedEvaluation(0);\n }, [vizData]);\n\n const fetchEvaluation = () => {\n setError(null);\n setLoading(true);\n setEvaluations([]);\n setTimeout(() => {\n scrollToElement(evaluationsDivRef);\n }, 600);\n const data = {\n code: vizData.code,\n goal: vizConfig.goal,\n textgen_config: vizConfig.textgen_config,\n library: vizConfig.library,\n };\n const payLoad = {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(data),\n };\n\n const onSuccess = (data: any) => {\n if (data && data.status) {\n // setVizspecs(data.charts);\n // console.log(\"Evaluation data\", data);\n setEvaluations(data.evaluations);\n message.success(data.message);\n setTimeout(() => {\n scrollToElement(evaluationsDivRef);\n }, 400);\n } else {\n message.error(data.message);\n setError(data);\n }\n setLoading(false);\n };\n const onError = (err: any) => {\n message.error(err.message);\n setLoading(false);\n setError(err);\n };\n fetchJSON(`${serverUrl}/visualize/evaluate`, payLoad, onSuccess, onError);\n };\n\n const repairChart = () => {\n setError(null);\n setLoadingRepair(true);\n setTimeout(() => {\n scrollToElement(evaluationsDivRef);\n }, 600);\n const data = {\n code: vizData.code,\n feedback: evaluations,\n textgen_config: vizConfig.textgen_config,\n library: vizConfig.library,\n summary: vizConfig.summary,\n goal: vizConfig.goal,\n };\n const payLoad = {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(data),\n };\n\n const onSuccess = (data: any) => {\n if (data && data.status) {\n // setVizspecs(data.charts);\n console.log(\"Repair data\", data);\n // setEvaluations(data.evaluations);\n setVizData(data.charts[0]);\n message.success(data.message);\n setTimeout(() => {\n scrollToElement(evaluationsDivRef);\n }, 400);\n } else {\n message.error(data.message);\n setError(data);\n }\n setLoadingRepair(false);\n };\n const onError = (err: any) => {\n message.error(err.message);\n setLoadingRepair(false);\n setError(err);\n };\n fetchJSON(`${serverUrl}/visualize/repair`, payLoad, onSuccess, onError);\n };\n\n const getStarRating = (score: number) => {\n const stars = [];\n for (let i = 0; i < 5; i++) {\n if (i < score) {\n stars.push(\n \n );\n } else {\n stars.push(\n \n );\n }\n }\n return stars;\n };\n\n const evaluationsView = evaluations?.map((exp, i) => {\n const selected = selectedEvaluation === i;\n return (\n setSelectedEvaluation(i)}\n // onMouseOver={() => setSelectedEvaluation(i)}\n className={`text-primary p-1 px-2 rounded border ${\n selected ? \"border-accent \" : \" border-transparent\"\n }`}\n key={\"evaluationsrow\" + i}\n >\n
          \n
          \n
          \n {\" \"}\n {getStarRating(exp.score / 2)}{\" \"}\n {exp.dimension}\n
          \n
          \n
          \n
          \n
          \n \n \n );\n });\n return (\n
          \n fetchEvaluation()}\n role={\"button\"}\n className={`px-5 bg-accent duration-300 hover:brightness-110 text-white inline-block rounded p-2 ${\n loading ? \"opacity-50 pointer-events-none\" : \"\"\n } `}\n >\n {!loading && }\n {loading && } Evaluate\n the chart.\n
          \n {loading && (\n
          \n \n \n
          \n )}\n
          \n {evaluations && evaluations.length > 0 && (\n <>\n
          \n The visualization has been evaluated across multiple dimensions.\n Select a dimension to view rationale for the score{\" \"}\n
          \n
          \n
          \n {/*
          Evaluation Scores Radar Plot
          */}\n \n
          \n\n
          \n
          {evaluationsView}
          \n\n
          \n
          \n {evaluations[selectedEvaluation].dimension}{\" \"}\n
          \n
          \n \n {(evaluations[selectedEvaluation].score / 2).toFixed(1)}\n
          \n {\" \"}\n out of 5{\" \"}\n
          \n
          \n
          {evaluations[selectedEvaluation].rationale}
          \n
          \n
          \n
          \n\n {/* {evaluations && evaluations.length > 0 && (\n
          \n {evaluations[selectedEvaluation].rationale}\n
          \n )} */}\n
          \n \n )}\n \n\n {evaluations && evaluations.length > 0 && (\n
          \n {\" \"}\n repairChart()}\n role={\"button\"}\n className={`px-5 bg-accent duration-300 hover:brightness-110 text-white inline-block rounded p-2 ${\n loadingRepair ? \"opacity-50 pointer-events-none\" : \"\"\n } `}\n >\n {!loadingRepair && (\n <>\n {\" \"}\n {\" \"}\n Auto Repair Chart.\n \n )}\n {loadingRepair && (\n <>\n \n Repairing Chart ..{\" \"}\n \n )}{\" \"}\n
          \n \n )}\n \n );\n};\nexport default ChartEvaluator;\n","import * as React from \"react\";\nimport { ChatBubbleOvalLeftEllipsisIcon } from \"@heroicons/react/24/outline\";\nimport { IStatus, IVizConfig } from \"../../types\";\nimport { Skeleton, message } from \"antd\";\nimport { fetchJSON, scrollToElement } from \"../../utils\";\nimport { LoadBox } from \"../../atoms\";\nimport { CodeBlock } from \"./codeblock\";\n\nconst ChartRecommender = ({\n vizData,\n setVizData,\n vizConfig,\n}: {\n vizData: any;\n setVizData: React.Dispatch>;\n vizConfig: IVizConfig;\n}) => {\n const [loading, setLoading] = React.useState(false);\n const [error, setError] = React.useState(null);\n const [recommendations, setRecommendations] = React.useState([]);\n const serverUrl = process.env.GATSBY_API_URL;\n\n const recommendationsDivRef = React.useRef(null);\n\n React.useEffect(() => {\n setRecommendations([]);\n }, [vizData]);\n\n const fetchRecommendation = () => {\n setError(null);\n setLoading(true);\n setRecommendations([]);\n setTimeout(() => {\n scrollToElement(recommendationsDivRef);\n }, 600);\n\n const textgen_config = Object.assign({}, vizConfig.textgen_config);\n textgen_config.n = 3;\n textgen_config.temperature = 0.6;\n\n const payLoad = {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n code: vizData.code,\n library: vizConfig.library,\n summary: vizConfig.summary,\n textgen_config: textgen_config,\n }),\n };\n // console.log(config.goal);\n\n const onSuccess = (data: any) => {\n if (data && data.status) {\n // setVizspecs(data.charts);\n console.log(\"Recomendation data\", data);\n setRecommendations(data.charts);\n message.success(data.message);\n setTimeout(() => {\n scrollToElement(recommendationsDivRef);\n }, 400);\n } else {\n message.error(data.message);\n setError(data);\n }\n setLoading(false);\n };\n const onError = (err: any) => {\n message.error(err.message);\n setLoading(false);\n setError(err);\n };\n fetchJSON(`${serverUrl}/visualize/recommend`, payLoad, onSuccess, onError);\n };\n\n const recommendationsView = recommendations?.map((exp, i) => {\n const isAccessibility = exp.section === \"accessibility\";\n return (\n
          \n
          {exp.section}
          \n
          \n
          \n \n
          \n {!isAccessibility && (\n
          \n \n
          \n )}\n
          \n
          \n );\n });\n return (\n
          \n fetchRecommendation()}\n role={\"button\"}\n className={`px-5 bg-accent duration-300 hover:brightness-110 text-white inline-block rounded p-2 ${\n loading ? \"opacity-50 pointer-events-none\" : \"\"\n } `}\n >\n {!loading && (\n \n )}\n {loading && } Generate\n Recommendations\n
          \n\n {/* {loading && (\n \n {\" \"}\n loading recommendations\n \n )} */}\n\n {loading && (\n
          \n \n \n
          \n )}\n\n
          \n {recommendationsView}\n
          \n \n );\n};\nexport default ChartRecommender;\n","import {\n AcademicCapIcon,\n ArchiveBoxXMarkIcon,\n ChatBubbleLeftEllipsisIcon,\n ChatBubbleOvalLeftEllipsisIcon,\n InformationCircleIcon,\n LightBulbIcon,\n} from \"@heroicons/react/24/outline\";\nimport { message, Tabs, TabsProps } from \"antd\";\nimport * as React from \"react\";\nimport { Vega } from \"react-vega\";\nimport { LoadBox } from \"../../atoms\";\nimport { IStatus, IVizConfig } from \"../../types\";\nimport { fetchJSON } from \"../../utils\";\nimport ChartRasterView from \"./chartraster\";\nimport CodeView from \"./codeview\";\nimport ChartExplainer from \"./chartexplainer\";\nimport ChartEvaluator from \"./chartevaluator\";\nimport ChartRecommender from \"./chartrecommender\";\n\nconst ChartView = ({\n vizspec,\n config,\n}: {\n vizspec: any;\n config: IVizConfig;\n}) => {\n const goal = config.goal;\n const serverUrl = process.env.GATSBY_API_URL;\n const [loadingRevision, setLoadingRevision] = React.useState(false);\n const [error, setError] = React.useState(null);\n const [commands, setCommands] = React.useState([]);\n // const [width, setWidth] = useState(300);\n\n const commandInputRef = React.useRef(null);\n const chartDivRef = React.useRef(null);\n\n const [vizData, setVizData] = React.useState(vizspec);\n\n const spec = vizData.spec;\n const raster = vizData.raster;\n\n if (spec) {\n delete spec.config;\n spec.width = 300;\n spec.height = 320;\n spec[\"actions\"] = false;\n\n if (!spec.data.url.includes(\"/api\")) {\n spec.data.url = serverUrl + spec.data.url;\n }\n if (spec.title?.subtitle) {\n delete spec.title.subtitle;\n }\n }\n\n const commandsView = commands.map((command: string, i: number) => {\n return (\n
          \n {command}\n
          \n );\n });\n\n const editVisualization = (command: string) => {\n setError(null);\n setLoadingRevision(true);\n let comms = Object.assign([], commands);\n comms.push(command);\n const payLoad = {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n summary: config.summary,\n instructions: comms,\n code: vizspec.code,\n library: config.library,\n textgen_config: config.textgen_config,\n }),\n };\n // console.log(config.goal);\n\n const onSuccess = (data: any) => {\n if (data && data.status) {\n // setVizspecs(data.charts);\n // console.log(\"Edited data\", data);\n setVizData(data.charts[0]);\n message.success(data.message);\n // setTimeout(() => {\n // scrollToElement(vizDivRef);\n // }, 1000);\n commandInputRef.current?.value && (commandInputRef.current.value = \"\");\n setCommands(comms);\n } else {\n message.error(data.message);\n setError(data);\n }\n setLoadingRevision(false);\n };\n const onError = (err: any) => {\n message.error(err.message);\n setLoadingRevision(false);\n setError(err);\n };\n fetchJSON(`${serverUrl}/visualize/edit`, payLoad, onSuccess, onError);\n };\n\n const tabItems: TabsProps[\"items\"] = [\n {\n key: \"1\",\n label: (\n
          \n {\" \"}\n \n Refine\n
          \n ),\n children: (\n
          \n
          \n Modify Chart with Natural Language commands.\n
          \n \n {\n if (e.key === \"Enter\") {\n // generate(commandInputRef.current?.value || \"\");\n editVisualization(commandInputRef.current?.value || \"\");\n }\n }}\n className=\"bg-white w-full text-gray-600 p-2 rounded\"\n placeholder=\"Change x axis label to Meters per Second\"\n type={\"input\"}\n />\n {loadingRevision && (\n \n {\" \"}\n \n \n )}\n {\n
          \n {error?.message}\n
          \n }\n
          \n
          \n {commands && commands.length > 0 && (\n
          \n {\n setCommands([]);\n }}\n className=\"text-right border inline-block p-1 rounded hover:border-accent hover:text-accent duration-300\"\n >\n {\" \"}\n Clear\n Chat History{\" \"}\n
          \n
          \n )}\n {commandsView}\n \n \n ),\n },\n {\n key: \"2\",\n label: (\n
          \n {\" \"}\n \n Explain\n
          \n ),\n children: (\n <>\n
          \n Use the explain visualization button below to generate an\n explanation for the chart.\n
          \n \n \n ),\n },\n {\n key: \"3\",\n label: (\n
          \n {\" \"}\n \n Evaluate\n
          \n ),\n children: (\n <>\n
          \n Use the evaluate visualization button below to generate\n self-evaluation scores for the chart.\n
          \n \n \n ),\n },\n {\n key: \"4\",\n label: (\n
          \n {\" \"}\n \n Recommend!\n
          \n ),\n children: (\n <>\n
          \n Generate similar charts.\n
          \n \n \n ),\n },\n ];\n\n return (\n
          \n
          \n
          {goal?.question}
          \n {goal?.rationale}{\" \"}\n {goal?.visualization && (\n
          {goal?.visualization}
          \n )}\n
          \n\n
          \n {spec && (\n
          \n \n
          \n )}\n {raster && (\n \n )}\n
          \n
          \n
          \n \n How was this visualization created? See the specifications and\n code below.\n
          \n \n
          \n
          \n
          \n\n \n
          \n );\n};\nexport default ChartView;\n","import { List, Empty } from \"antd\";\nimport * as React from \"react\";\nimport { IVizConfig } from \"../../types\";\nimport ChartView from \"./chartview\";\n\nconst VegaGalleryView = ({\n vizspecs,\n vizConfig,\n}: {\n vizspecs: any;\n vizConfig: IVizConfig;\n}) => {\n // const maxViz = 1;\n return (\n
          \n }}\n dataSource={vizspecs}\n renderItem={(vizspec: any, i: number) => (\n \n )}\n pagination={{\n pageSize: 1,\n size: \"small\",\n hideOnSinglePage: true,\n }}\n />\n
          \n );\n};\nexport default VegaGalleryView;\n","import {\n ChartPieIcon,\n Cog6ToothIcon,\n ExclamationCircleIcon,\n PaperAirplaneIcon,\n} from \"@heroicons/react/24/outline\";\nimport { Skeleton, message } from \"antd\";\nimport * as React from \"react\";\nimport { LaunchButton, LoadingBar } from \"../../../atoms\";\nimport { IStatus, IVizConfig } from \"../../../types\";\nimport { fetchJSON, scrollToElement } from \"../../../utils\";\nimport VegaGalleryView from \"../../chartview\";\n\nconst VizGenView = ({\n config,\n}: {\n config: {\n vizConfig: IVizConfig;\n setVizConfig: React.Dispatch>;\n };\n}) => {\n const serverUrl = process.env.GATSBY_API_URL;\n const { vizConfig, setVizConfig } = config;\n const [vizspecs, setVizspecs] = React.useState<[] | null>(null);\n const [error, setError] = React.useState(null);\n const [loading, setLoading] = React.useState(false);\n\n const promptInputRef = React.useRef(null);\n\n const vizDivRef = React.useRef(null);\n\n React.useEffect(() => {\n if (promptInputRef.current) {\n promptInputRef.current.value = vizConfig.goal?.question || \"\";\n }\n if (vizConfig.summary && vizConfig.goal) {\n // setTimeout(() => {\n // scrollToElement(vizDivRef);\n // }, 600);\n // fetchVisualization(vizConfig);\n }\n // console.log(\"Goal changed | library \", vizConfig.library);\n }, [vizConfig.goal]);\n\n React.useEffect(() => {\n if (vizConfig.summary && vizConfig.goal) {\n setTimeout(() => {\n scrollToElement(vizDivRef);\n }, 200);\n fetchVisualization(vizConfig);\n // console.log(\"library changed\", vizConfig.library);\n }\n }, [vizConfig.library, vizConfig.goal]);\n\n const fetchVisualization = (config: IVizConfig) => {\n // console.log(\"fetching visualization\");\n\n setError(null);\n setVizspecs(null);\n setLoading(true);\n const payLoad = {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n summary: config.summary,\n goal: config.goal,\n library: vizConfig.library,\n textgen_config: vizConfig.textgen_config,\n }),\n };\n // console.log(\"text gen config\", vizConfig.textgen_config);\n\n const onSuccess = (data: any) => {\n if (data && data.status) {\n setVizspecs(data.charts);\n // console.log(data);\n message.success(data.message);\n setTimeout(() => {\n scrollToElement(vizDivRef);\n }, 600);\n } else {\n message.error(data.message);\n setError(data);\n }\n setLoading(false);\n };\n const onError = (err: any) => {\n setError(err);\n message.error(err.message);\n setLoading(false);\n };\n fetchJSON(`${serverUrl}/visualize`, payLoad, onSuccess, onError);\n };\n\n return (\n
          \n {vizConfig.summary && (\n <>\n
          \n Visualization\n Generation\n
          \n
          \n Select a goal above or describe a new visualization goal to generate\n a visualization.\n
          \n \n {\n if (e.key === \"Enter\" && promptInputRef.current && !loading) {\n setVizConfig({\n ...vizConfig,\n goal: {\n index: 0,\n question: promptInputRef.current?.value,\n visualization: promptInputRef.current?.value,\n rationale: \" \",\n },\n });\n }\n }}\n />\n\n {\n if (promptInputRef.current) {\n setVizConfig({\n ...vizConfig,\n goal: {\n index: 0,\n question: promptInputRef.current?.value,\n visualization: promptInputRef.current?.value,\n rationale: \" \",\n },\n });\n }\n }}\n >\n
          \n {loading && (\n
          \n \n
          \n )}\n {!loading && (\n \n {\" \"}\n \n {/* */}\n Generate\n \n )}\n
          {\" \"}\n \n
          \n \n )}\n\n
          \n {loading && (\n <>\n \n <> Working on generating interesting visualizations\n \n \n \n )}\n {vizConfig.summary && vizConfig.goal && (\n
          \n {vizspecs && vizspecs.length > 0 && (\n
          \n \n
          \n )}\n
          \n )}\n {vizspecs && vizspecs.length === 0 && (\n
          \n {\" \"}\n \n No visualizations generated{\" \"}\n
          \n )}\n
          \n \n );\n};\nexport default VizGenView;\n","import { ArrowUpOnSquareIcon, InboxIcon } from \"@heroicons/react/24/outline\";\nimport { message, Skeleton, Upload, UploadProps } from \"antd\";\nimport * as React from \"react\";\nimport { IGoal, IStatus, IVizConfig } from \"../../../types\";\nimport { fetchJSON, scrollToElement } from \"../../../utils\";\nimport Icon from \"../../../icons\";\nimport SummaryView from \"./summary\";\nimport SamplesView from \"./samples\";\nimport GoalView from \"./goal\";\nimport VizGenView from \"./viz\";\n\nconst DatasetSelectorView = ({\n config,\n}: {\n config: {\n vizConfig: IVizConfig;\n setVizConfig: React.Dispatch>;\n error: IStatus | null;\n setError: React.Dispatch>;\n };\n}) => {\n const { vizConfig, setVizConfig, error, setError } = config;\n const serverUrl = process.env.GATSBY_API_URL;\n\n const [loadingGoals, setLoadingGoals] = React.useState(false);\n const [loadingSummary, setLoadingSummary] = React.useState(false);\n\n const [goals, setGoals] = React.useState(null);\n\n const summaryDivRef = React.useRef(null);\n const goalsDivRef = React.useRef(null);\n\n const { Dragger } = Upload;\n\n // console.log(vizConfig, \"************* upload ***********\");\n\n React.useEffect(() => {\n if (vizConfig.summary) {\n // console.log(\"summary fetched ....fetching goals\");\n fetchGoals(vizConfig.summary);\n setTimeout(() => {\n scrollToElement(summaryDivRef);\n }, 700);\n }\n }, [vizConfig.summary]);\n\n const resetStates = () => {\n // console.log(\"resetting states .. goal, summary, config\");\n setError(null);\n let config = Object.assign({}, vizConfig);\n config.goal = null;\n config.summary = null;\n setVizConfig(config);\n };\n\n const uploadFile = (file: any) => {\n resetStates();\n const formData = new FormData();\n formData.append(\"file\", file, file.name);\n const url = `${serverUrl}/summarize`;\n setLoadingSummary(true);\n fetch(url, {\n // Your POST endpoint\n method: \"POST\",\n body: formData,\n })\n .then(\n (response) => response.json() // if the response is a JSON object\n )\n .then((data) => {\n if (data.status) {\n setError(null);\n setLoadingSummary(false);\n // let config = Object.assign({}, vizConfig);\n // config.summary = data.summary;\n // config.goal = null;\n setVizConfig({\n ...vizConfig,\n summary: data.summary,\n goal: null,\n });\n } else {\n setError({ status: false, message: data.message });\n setLoadingSummary(false);\n }\n })\n .catch(\n (error) => {\n setLoadingSummary(false);\n console.log(error);\n setError({ status: false, message: error + \"\" });\n } // Handle the error response object\n );\n };\n\n const fetchGoals = (summary: any) => {\n const fetchGoalsUrl = `${serverUrl}/goal`;\n setError(null);\n setLoadingGoals(true);\n // const fetch;\n const payLoad = {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n summary: summary,\n n: 5,\n textgen_config: vizConfig.textgen_config,\n }),\n };\n\n const onSuccess = (data: any) => {\n if (data && data.status) {\n message.success(data.message);\n setVizConfig({\n ...vizConfig,\n goal: data.data[0],\n });\n setGoals(data.data);\n } else {\n message.error(data.message);\n }\n setLoadingGoals(false);\n };\n const onError = (err: any) => {\n console.log(err);\n setError(err);\n message.error(err.message);\n setLoadingGoals(false);\n };\n fetchJSON(fetchGoalsUrl, payLoad, onSuccess, onError);\n };\n\n const props: UploadProps = {\n name: \"file\",\n multiple: false,\n maxCount: 1,\n beforeUpload: (file) => {\n uploadFile(file);\n return false;\n },\n\n onChange(info) {\n const { status } = info.file;\n if (status === \"done\") {\n message.success(`${info.file.name} file uploaded successfully.`);\n // uploadFile(info.file);\n } else if (status === \"error\") {\n message.error(`${info.file.name} file upload failed.`);\n }\n },\n onDrop(e) {\n console.log(\"Dropped files\", e.dataTransfer.files);\n },\n };\n\n return (\n
          \n
          \n
          \n
          \n \n Ready?\n {\" \"}\n Upload a file to begin.{\" \"}\n
          \n\n \n

          \n \n

          \n

          \n Click or drag file to this area to upload\n

          \n

          \n Upload .json or .csv files to generate a visualization.\n

          \n
          \n
          \n\n \n {loadingSummary && (\n
          \n {\" \"}\n \n {\" \"}\n \n {\" \"}\n Uploading data, generating summary ..{\" \"}\n \n
          \n )}\n\n \n
          \n\n
          \n {loadingGoals && (\n
          \n {\" \"}\n \n {\" \"}\n \n {\" \"}\n Generating data exploration goals for the data ..{\" \"}\n \n
          \n )}\n
          \n \n
          \n\n {goals && (\n \n )}\n
          \n
          \n
          \n );\n};\nexport default DatasetSelectorView;\n","import _objectWithoutProperties from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\";\nvar _excluded = [\"title\", \"titleId\"];\nimport * as React from \"react\";\nfunction AdjustmentsVerticalIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M6 13.5V3.75m0 9.75a1.5 1.5 0 010 3m0-3a1.5 1.5 0 000 3m0 3.75V16.5m12-3V3.75m0 9.75a1.5 1.5 0 010 3m0-3a1.5 1.5 0 000 3m0 3.75V16.5m-6-9V3.75m0 3.75a1.5 1.5 0 010 3m0-3a1.5 1.5 0 000 3m0 9.75V10.5\"\n }));\n}\nvar ForwardRef = React.forwardRef(AdjustmentsVerticalIcon);\nexport default ForwardRef;","import * as React from 'react';\nvar SliderContext = /*#__PURE__*/React.createContext({\n min: 0,\n max: 0,\n direction: 'ltr',\n step: 1,\n includedStart: 0,\n includedEnd: 0,\n tabIndex: 0,\n keyboard: true\n});\nexport default SliderContext;","export function getOffset(value, min, max) {\n return (value - min) / (max - min);\n}\nexport function getDirectionStyle(direction, value, min, max) {\n var offset = getOffset(value, min, max);\n var positionStyle = {};\n switch (direction) {\n case 'rtl':\n positionStyle.right = \"\".concat(offset * 100, \"%\");\n positionStyle.transform = 'translateX(50%)';\n break;\n case 'btt':\n positionStyle.bottom = \"\".concat(offset * 100, \"%\");\n positionStyle.transform = 'translateY(50%)';\n break;\n case 'ttb':\n positionStyle.top = \"\".concat(offset * 100, \"%\");\n positionStyle.transform = 'translateY(-50%)';\n break;\n default:\n positionStyle.left = \"\".concat(offset * 100, \"%\");\n positionStyle.transform = 'translateX(-50%)';\n break;\n }\n return positionStyle;\n}\n/** Return index value if is list or return value directly */\nexport function getIndex(value, index) {\n return Array.isArray(value) ? value[index] : value;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"value\", \"valueIndex\", \"onStartMove\", \"style\", \"render\", \"dragging\", \"onOffsetChange\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport SliderContext from '../context';\nimport { getDirectionStyle, getIndex } from '../util';\nvar Handle = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _classNames, _getIndex;\n var prefixCls = props.prefixCls,\n value = props.value,\n valueIndex = props.valueIndex,\n onStartMove = props.onStartMove,\n style = props.style,\n render = props.render,\n dragging = props.dragging,\n onOffsetChange = props.onOffsetChange,\n restProps = _objectWithoutProperties(props, _excluded);\n var _React$useContext = React.useContext(SliderContext),\n min = _React$useContext.min,\n max = _React$useContext.max,\n direction = _React$useContext.direction,\n disabled = _React$useContext.disabled,\n keyboard = _React$useContext.keyboard,\n range = _React$useContext.range,\n tabIndex = _React$useContext.tabIndex,\n ariaLabelForHandle = _React$useContext.ariaLabelForHandle,\n ariaLabelledByForHandle = _React$useContext.ariaLabelledByForHandle,\n ariaValueTextFormatterForHandle = _React$useContext.ariaValueTextFormatterForHandle;\n var handlePrefixCls = \"\".concat(prefixCls, \"-handle\");\n // ============================ Events ============================\n var onInternalStartMove = function onInternalStartMove(e) {\n if (!disabled) {\n onStartMove(e, valueIndex);\n }\n };\n // =========================== Keyboard ===========================\n var onKeyDown = function onKeyDown(e) {\n if (!disabled && keyboard) {\n var offset = null;\n // Change the value\n switch (e.which || e.keyCode) {\n case KeyCode.LEFT:\n offset = direction === 'ltr' || direction === 'btt' ? -1 : 1;\n break;\n case KeyCode.RIGHT:\n offset = direction === 'ltr' || direction === 'btt' ? 1 : -1;\n break;\n // Up is plus\n case KeyCode.UP:\n offset = direction !== 'ttb' ? 1 : -1;\n break;\n // Down is minus\n case KeyCode.DOWN:\n offset = direction !== 'ttb' ? -1 : 1;\n break;\n case KeyCode.HOME:\n offset = 'min';\n break;\n case KeyCode.END:\n offset = 'max';\n break;\n case KeyCode.PAGE_UP:\n offset = 2;\n break;\n case KeyCode.PAGE_DOWN:\n offset = -2;\n break;\n }\n if (offset !== null) {\n e.preventDefault();\n onOffsetChange(offset, valueIndex);\n }\n }\n };\n // ============================ Offset ============================\n var positionStyle = getDirectionStyle(direction, value, min, max);\n // ============================ Render ============================\n var handleNode = /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: ref,\n className: classNames(handlePrefixCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(handlePrefixCls, \"-\").concat(valueIndex + 1), range), _defineProperty(_classNames, \"\".concat(handlePrefixCls, \"-dragging\"), dragging), _classNames)),\n style: _objectSpread(_objectSpread({}, positionStyle), style),\n onMouseDown: onInternalStartMove,\n onTouchStart: onInternalStartMove,\n onKeyDown: onKeyDown,\n tabIndex: disabled ? null : getIndex(tabIndex, valueIndex),\n role: \"slider\",\n \"aria-valuemin\": min,\n \"aria-valuemax\": max,\n \"aria-valuenow\": value,\n \"aria-disabled\": disabled,\n \"aria-label\": getIndex(ariaLabelForHandle, valueIndex),\n \"aria-labelledby\": getIndex(ariaLabelledByForHandle, valueIndex),\n \"aria-valuetext\": (_getIndex = getIndex(ariaValueTextFormatterForHandle, valueIndex)) === null || _getIndex === void 0 ? void 0 : _getIndex(value)\n }, restProps));\n // Customize\n if (render) {\n handleNode = render(handleNode, {\n index: valueIndex,\n prefixCls: prefixCls,\n value: value,\n dragging: dragging\n });\n }\n return handleNode;\n});\nif (process.env.NODE_ENV !== 'production') {\n Handle.displayName = 'Handle';\n}\nexport default Handle;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"style\", \"onStartMove\", \"onOffsetChange\", \"values\", \"handleRender\", \"draggingIndex\"];\nimport * as React from 'react';\nimport Handle from './Handle';\nimport { getIndex } from '../util';\nvar Handles = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var prefixCls = props.prefixCls,\n style = props.style,\n onStartMove = props.onStartMove,\n onOffsetChange = props.onOffsetChange,\n values = props.values,\n handleRender = props.handleRender,\n draggingIndex = props.draggingIndex,\n restProps = _objectWithoutProperties(props, _excluded);\n var handlesRef = React.useRef({});\n React.useImperativeHandle(ref, function () {\n return {\n focus: function focus(index) {\n var _handlesRef$current$i;\n (_handlesRef$current$i = handlesRef.current[index]) === null || _handlesRef$current$i === void 0 ? void 0 : _handlesRef$current$i.focus();\n }\n };\n });\n return /*#__PURE__*/React.createElement(React.Fragment, null, values.map(function (value, index) {\n return /*#__PURE__*/React.createElement(Handle, _extends({\n ref: function ref(node) {\n if (!node) {\n delete handlesRef.current[index];\n } else {\n handlesRef.current[index] = node;\n }\n },\n dragging: draggingIndex === index,\n prefixCls: prefixCls,\n style: getIndex(style, index),\n key: index,\n value: value,\n valueIndex: index,\n onStartMove: onStartMove,\n onOffsetChange: onOffsetChange,\n render: handleRender\n }, restProps));\n }));\n});\nif (process.env.NODE_ENV !== 'production') {\n Handles.displayName = 'Handles';\n}\nexport default Handles;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nfunction getPosition(e) {\n var obj = 'touches' in e ? e.touches[0] : e;\n return {\n pageX: obj.pageX,\n pageY: obj.pageY\n };\n}\nexport default function useDrag(containerRef, direction, rawValues, min, max, formatValue, triggerChange, finishChange, offsetValues) {\n var _React$useState = React.useState(null),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n draggingValue = _React$useState2[0],\n setDraggingValue = _React$useState2[1];\n var _React$useState3 = React.useState(-1),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n draggingIndex = _React$useState4[0],\n setDraggingIndex = _React$useState4[1];\n var _React$useState5 = React.useState(rawValues),\n _React$useState6 = _slicedToArray(_React$useState5, 2),\n cacheValues = _React$useState6[0],\n setCacheValues = _React$useState6[1];\n var _React$useState7 = React.useState(rawValues),\n _React$useState8 = _slicedToArray(_React$useState7, 2),\n originValues = _React$useState8[0],\n setOriginValues = _React$useState8[1];\n var mouseMoveEventRef = React.useRef(null);\n var mouseUpEventRef = React.useRef(null);\n React.useEffect(function () {\n if (draggingIndex === -1) {\n setCacheValues(rawValues);\n }\n }, [rawValues, draggingIndex]);\n // Clean up event\n React.useEffect(function () {\n return function () {\n document.removeEventListener('mousemove', mouseMoveEventRef.current);\n document.removeEventListener('mouseup', mouseUpEventRef.current);\n document.removeEventListener('touchmove', mouseMoveEventRef.current);\n document.removeEventListener('touchend', mouseUpEventRef.current);\n };\n }, []);\n var flushValues = function flushValues(nextValues, nextValue) {\n // Perf: Only update state when value changed\n if (cacheValues.some(function (val, i) {\n return val !== nextValues[i];\n })) {\n if (nextValue !== undefined) {\n setDraggingValue(nextValue);\n }\n setCacheValues(nextValues);\n triggerChange(nextValues);\n }\n };\n var updateCacheValue = function updateCacheValue(valueIndex, offsetPercent) {\n // Basic point offset\n if (valueIndex === -1) {\n // >>>> Dragging on the track\n var startValue = originValues[0];\n var endValue = originValues[originValues.length - 1];\n var maxStartOffset = min - startValue;\n var maxEndOffset = max - endValue;\n // Get valid offset\n var offset = offsetPercent * (max - min);\n offset = Math.max(offset, maxStartOffset);\n offset = Math.min(offset, maxEndOffset);\n // Use first value to revert back of valid offset (like steps marks)\n var formatStartValue = formatValue(startValue + offset);\n offset = formatStartValue - startValue;\n var cloneCacheValues = originValues.map(function (val) {\n return val + offset;\n });\n flushValues(cloneCacheValues);\n } else {\n // >>>> Dragging on the handle\n var offsetDist = (max - min) * offsetPercent;\n // Always start with the valueIndex origin value\n var cloneValues = _toConsumableArray(cacheValues);\n cloneValues[valueIndex] = originValues[valueIndex];\n var next = offsetValues(cloneValues, offsetDist, valueIndex, 'dist');\n flushValues(next.values, next.value);\n }\n };\n // Resolve closure\n var updateCacheValueRef = React.useRef(updateCacheValue);\n updateCacheValueRef.current = updateCacheValue;\n var onStartMove = function onStartMove(e, valueIndex) {\n e.stopPropagation();\n var originValue = rawValues[valueIndex];\n setDraggingIndex(valueIndex);\n setDraggingValue(originValue);\n setOriginValues(rawValues);\n var _getPosition = getPosition(e),\n startX = _getPosition.pageX,\n startY = _getPosition.pageY;\n // Moving\n var onMouseMove = function onMouseMove(event) {\n event.preventDefault();\n var _getPosition2 = getPosition(event),\n moveX = _getPosition2.pageX,\n moveY = _getPosition2.pageY;\n var offsetX = moveX - startX;\n var offsetY = moveY - startY;\n var _containerRef$current = containerRef.current.getBoundingClientRect(),\n width = _containerRef$current.width,\n height = _containerRef$current.height;\n var offSetPercent;\n switch (direction) {\n case 'btt':\n offSetPercent = -offsetY / height;\n break;\n case 'ttb':\n offSetPercent = offsetY / height;\n break;\n case 'rtl':\n offSetPercent = -offsetX / width;\n break;\n default:\n offSetPercent = offsetX / width;\n }\n updateCacheValueRef.current(valueIndex, offSetPercent);\n };\n // End\n var onMouseUp = function onMouseUp(event) {\n event.preventDefault();\n document.removeEventListener('mouseup', onMouseUp);\n document.removeEventListener('mousemove', onMouseMove);\n document.removeEventListener('touchend', onMouseUp);\n document.removeEventListener('touchmove', onMouseMove);\n mouseMoveEventRef.current = null;\n mouseUpEventRef.current = null;\n setDraggingIndex(-1);\n finishChange();\n };\n document.addEventListener('mouseup', onMouseUp);\n document.addEventListener('mousemove', onMouseMove);\n document.addEventListener('touchend', onMouseUp);\n document.addEventListener('touchmove', onMouseMove);\n mouseMoveEventRef.current = onMouseMove;\n mouseUpEventRef.current = onMouseUp;\n };\n // Only return cache value when it mapping with rawValues\n var returnValues = React.useMemo(function () {\n var sourceValues = _toConsumableArray(rawValues).sort(function (a, b) {\n return a - b;\n });\n var targetValues = _toConsumableArray(cacheValues).sort(function (a, b) {\n return a - b;\n });\n return sourceValues.every(function (val, index) {\n return val === targetValues[index];\n }) ? cacheValues : rawValues;\n }, [rawValues, cacheValues]);\n return [draggingIndex, draggingValue, returnValues, onStartMove];\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport SliderContext from '../context';\nimport { getOffset } from '../util';\nexport default function Track(props) {\n var prefixCls = props.prefixCls,\n style = props.style,\n start = props.start,\n end = props.end,\n index = props.index,\n onStartMove = props.onStartMove;\n var _React$useContext = React.useContext(SliderContext),\n direction = _React$useContext.direction,\n min = _React$useContext.min,\n max = _React$useContext.max,\n disabled = _React$useContext.disabled,\n range = _React$useContext.range;\n var trackPrefixCls = \"\".concat(prefixCls, \"-track\");\n var offsetStart = getOffset(start, min, max);\n var offsetEnd = getOffset(end, min, max);\n // ============================ Events ============================\n var onInternalStartMove = function onInternalStartMove(e) {\n if (!disabled && onStartMove) {\n onStartMove(e, -1);\n }\n };\n // ============================ Render ============================\n var positionStyle = {};\n switch (direction) {\n case 'rtl':\n positionStyle.right = \"\".concat(offsetStart * 100, \"%\");\n positionStyle.width = \"\".concat(offsetEnd * 100 - offsetStart * 100, \"%\");\n break;\n case 'btt':\n positionStyle.bottom = \"\".concat(offsetStart * 100, \"%\");\n positionStyle.height = \"\".concat(offsetEnd * 100 - offsetStart * 100, \"%\");\n break;\n case 'ttb':\n positionStyle.top = \"\".concat(offsetStart * 100, \"%\");\n positionStyle.height = \"\".concat(offsetEnd * 100 - offsetStart * 100, \"%\");\n break;\n default:\n positionStyle.left = \"\".concat(offsetStart * 100, \"%\");\n positionStyle.width = \"\".concat(offsetEnd * 100 - offsetStart * 100, \"%\");\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(trackPrefixCls, range && \"\".concat(trackPrefixCls, \"-\").concat(index + 1)),\n style: _objectSpread(_objectSpread({}, positionStyle), style),\n onMouseDown: onInternalStartMove,\n onTouchStart: onInternalStartMove\n });\n}","import * as React from 'react';\nimport SliderContext from '../context';\nimport Track from './Track';\nimport { getIndex } from '../util';\nexport default function Tracks(props) {\n var prefixCls = props.prefixCls,\n style = props.style,\n values = props.values,\n startPoint = props.startPoint,\n onStartMove = props.onStartMove;\n var _React$useContext = React.useContext(SliderContext),\n included = _React$useContext.included,\n range = _React$useContext.range,\n min = _React$useContext.min;\n var trackList = React.useMemo(function () {\n if (!range) {\n // null value do not have track\n if (values.length === 0) {\n return [];\n }\n var startValue = startPoint !== null && startPoint !== void 0 ? startPoint : min;\n var endValue = values[0];\n return [{\n start: Math.min(startValue, endValue),\n end: Math.max(startValue, endValue)\n }];\n }\n // Multiple\n var list = [];\n for (var i = 0; i < values.length - 1; i += 1) {\n list.push({\n start: values[i],\n end: values[i + 1]\n });\n }\n return list;\n }, [values, range, startPoint, min]);\n return included ? trackList.map(function (_ref, index) {\n var start = _ref.start,\n end = _ref.end;\n return /*#__PURE__*/React.createElement(Track, {\n index: index,\n prefixCls: prefixCls,\n style: getIndex(style, index),\n start: start,\n end: end,\n key: index,\n onStartMove: onStartMove\n });\n }) : null;\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { getDirectionStyle } from '../util';\nimport SliderContext from '../context';\nexport default function Mark(props) {\n var prefixCls = props.prefixCls,\n style = props.style,\n children = props.children,\n value = props.value,\n _onClick = props.onClick;\n var _React$useContext = React.useContext(SliderContext),\n min = _React$useContext.min,\n max = _React$useContext.max,\n direction = _React$useContext.direction,\n includedStart = _React$useContext.includedStart,\n includedEnd = _React$useContext.includedEnd,\n included = _React$useContext.included;\n var textCls = \"\".concat(prefixCls, \"-text\");\n // ============================ Offset ============================\n var positionStyle = getDirectionStyle(direction, value, min, max);\n return /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(textCls, _defineProperty({}, \"\".concat(textCls, \"-active\"), included && includedStart <= value && value <= includedEnd)),\n style: _objectSpread(_objectSpread({}, positionStyle), style),\n onMouseDown: function onMouseDown(e) {\n e.stopPropagation();\n },\n onClick: function onClick() {\n _onClick(value);\n }\n }, children);\n}","import * as React from 'react';\nimport Mark from './Mark';\nexport default function Marks(props) {\n var prefixCls = props.prefixCls,\n marks = props.marks,\n onClick = props.onClick;\n var markPrefixCls = \"\".concat(prefixCls, \"-mark\");\n // Not render mark if empty\n if (!marks.length) {\n return null;\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n className: markPrefixCls\n }, marks.map(function (_ref) {\n var value = _ref.value,\n style = _ref.style,\n label = _ref.label;\n return /*#__PURE__*/React.createElement(Mark, {\n key: value,\n prefixCls: markPrefixCls,\n style: style,\n value: value,\n onClick: onClick\n }, label);\n }));\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { getDirectionStyle } from '../util';\nimport SliderContext from '../context';\nexport default function Dot(props) {\n var prefixCls = props.prefixCls,\n value = props.value,\n style = props.style,\n activeStyle = props.activeStyle;\n var _React$useContext = React.useContext(SliderContext),\n min = _React$useContext.min,\n max = _React$useContext.max,\n direction = _React$useContext.direction,\n included = _React$useContext.included,\n includedStart = _React$useContext.includedStart,\n includedEnd = _React$useContext.includedEnd;\n var dotClassName = \"\".concat(prefixCls, \"-dot\");\n var active = included && includedStart <= value && value <= includedEnd;\n // ============================ Offset ============================\n var mergedStyle = _objectSpread(_objectSpread({}, getDirectionStyle(direction, value, min, max)), typeof style === 'function' ? style(value) : style);\n if (active) {\n mergedStyle = _objectSpread(_objectSpread({}, mergedStyle), typeof activeStyle === 'function' ? activeStyle(value) : activeStyle);\n }\n return /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(dotClassName, _defineProperty({}, \"\".concat(dotClassName, \"-active\"), active)),\n style: mergedStyle\n });\n}","import * as React from 'react';\nimport SliderContext from '../context';\nimport Dot from './Dot';\nexport default function Steps(props) {\n var prefixCls = props.prefixCls,\n marks = props.marks,\n dots = props.dots,\n style = props.style,\n activeStyle = props.activeStyle;\n var _React$useContext = React.useContext(SliderContext),\n min = _React$useContext.min,\n max = _React$useContext.max,\n step = _React$useContext.step;\n var stepDots = React.useMemo(function () {\n var dotSet = new Set();\n // Add marks\n marks.forEach(function (mark) {\n dotSet.add(mark.value);\n });\n // Fill dots\n if (dots && step !== null) {\n var current = min;\n while (current <= max) {\n dotSet.add(current);\n current += step;\n }\n }\n return Array.from(dotSet);\n }, [min, max, step, dots, marks]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-step\")\n }, stepDots.map(function (dotValue) {\n return /*#__PURE__*/React.createElement(Dot, {\n prefixCls: prefixCls,\n key: dotValue,\n value: dotValue,\n style: style,\n activeStyle: activeStyle\n });\n }));\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport isEqual from \"rc-util/es/isEqual\";\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport Handles from './Handles';\nimport useDrag from './hooks/useDrag';\nimport SliderContext from './context';\nimport Tracks from './Tracks';\nimport Marks from './Marks';\nimport Steps from './Steps';\nimport useOffset from './hooks/useOffset';\nimport warning from \"rc-util/es/warning\";\nvar Slider = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _classNames;\n var _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-slider' : _props$prefixCls,\n className = props.className,\n style = props.style,\n _props$disabled = props.disabled,\n disabled = _props$disabled === void 0 ? false : _props$disabled,\n _props$keyboard = props.keyboard,\n keyboard = _props$keyboard === void 0 ? true : _props$keyboard,\n autoFocus = props.autoFocus,\n onFocus = props.onFocus,\n onBlur = props.onBlur,\n _props$min = props.min,\n min = _props$min === void 0 ? 0 : _props$min,\n _props$max = props.max,\n max = _props$max === void 0 ? 100 : _props$max,\n _props$step = props.step,\n step = _props$step === void 0 ? 1 : _props$step,\n value = props.value,\n defaultValue = props.defaultValue,\n range = props.range,\n count = props.count,\n onChange = props.onChange,\n onBeforeChange = props.onBeforeChange,\n onAfterChange = props.onAfterChange,\n _props$allowCross = props.allowCross,\n allowCross = _props$allowCross === void 0 ? true : _props$allowCross,\n _props$pushable = props.pushable,\n pushable = _props$pushable === void 0 ? false : _props$pushable,\n draggableTrack = props.draggableTrack,\n reverse = props.reverse,\n vertical = props.vertical,\n _props$included = props.included,\n included = _props$included === void 0 ? true : _props$included,\n startPoint = props.startPoint,\n trackStyle = props.trackStyle,\n handleStyle = props.handleStyle,\n railStyle = props.railStyle,\n dotStyle = props.dotStyle,\n activeDotStyle = props.activeDotStyle,\n marks = props.marks,\n dots = props.dots,\n handleRender = props.handleRender,\n _props$tabIndex = props.tabIndex,\n tabIndex = _props$tabIndex === void 0 ? 0 : _props$tabIndex,\n ariaLabelForHandle = props.ariaLabelForHandle,\n ariaLabelledByForHandle = props.ariaLabelledByForHandle,\n ariaValueTextFormatterForHandle = props.ariaValueTextFormatterForHandle;\n var handlesRef = React.useRef();\n var containerRef = React.useRef();\n var direction = React.useMemo(function () {\n if (vertical) {\n return reverse ? 'ttb' : 'btt';\n }\n return reverse ? 'rtl' : 'ltr';\n }, [reverse, vertical]);\n // ============================ Range =============================\n var mergedMin = React.useMemo(function () {\n return isFinite(min) ? min : 0;\n }, [min]);\n var mergedMax = React.useMemo(function () {\n return isFinite(max) ? max : 100;\n }, [max]);\n // ============================= Step =============================\n var mergedStep = React.useMemo(function () {\n return step !== null && step <= 0 ? 1 : step;\n }, [step]);\n // ============================= Push =============================\n var mergedPush = React.useMemo(function () {\n if (pushable === true) {\n return mergedStep;\n }\n return pushable >= 0 ? pushable : false;\n }, [pushable, mergedStep]);\n // ============================ Marks =============================\n var markList = React.useMemo(function () {\n var keys = Object.keys(marks || {});\n return keys.map(function (key) {\n var mark = marks[key];\n var markObj = {\n value: Number(key)\n };\n if (mark && _typeof(mark) === 'object' && ! /*#__PURE__*/React.isValidElement(mark) && ('label' in mark || 'style' in mark)) {\n markObj.style = mark.style;\n markObj.label = mark.label;\n } else {\n markObj.label = mark;\n }\n return markObj;\n }).filter(function (_ref) {\n var label = _ref.label;\n return label || typeof label === 'number';\n }).sort(function (a, b) {\n return a.value - b.value;\n });\n }, [marks]);\n // ============================ Format ============================\n var _useOffset = useOffset(mergedMin, mergedMax, mergedStep, markList, allowCross, mergedPush),\n _useOffset2 = _slicedToArray(_useOffset, 2),\n formatValue = _useOffset2[0],\n offsetValues = _useOffset2[1];\n // ============================ Values ============================\n var _useMergedState = useMergedState(defaultValue, {\n value: value\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n mergedValue = _useMergedState2[0],\n setValue = _useMergedState2[1];\n var rawValues = React.useMemo(function () {\n var valueList = mergedValue === null || mergedValue === undefined ? [] : Array.isArray(mergedValue) ? mergedValue : [mergedValue];\n var _valueList = _slicedToArray(valueList, 1),\n _valueList$ = _valueList[0],\n val0 = _valueList$ === void 0 ? mergedMin : _valueList$;\n var returnValues = mergedValue === null ? [] : [val0];\n // Format as range\n if (range) {\n returnValues = _toConsumableArray(valueList);\n // When count provided or value is `undefined`, we fill values\n if (count || mergedValue === undefined) {\n var pointCount = count >= 0 ? count + 1 : 2;\n returnValues = returnValues.slice(0, pointCount);\n // Fill with count\n while (returnValues.length < pointCount) {\n var _returnValues;\n returnValues.push((_returnValues = returnValues[returnValues.length - 1]) !== null && _returnValues !== void 0 ? _returnValues : mergedMin);\n }\n }\n returnValues.sort(function (a, b) {\n return a - b;\n });\n }\n // Align in range\n returnValues.forEach(function (val, index) {\n returnValues[index] = formatValue(val);\n });\n return returnValues;\n }, [mergedValue, range, mergedMin, count, formatValue]);\n // =========================== onChange ===========================\n var rawValuesRef = React.useRef(rawValues);\n rawValuesRef.current = rawValues;\n var getTriggerValue = function getTriggerValue(triggerValues) {\n return range ? triggerValues : triggerValues[0];\n };\n var triggerChange = function triggerChange(nextValues) {\n // Order first\n var cloneNextValues = _toConsumableArray(nextValues).sort(function (a, b) {\n return a - b;\n });\n // Trigger event if needed\n if (onChange && !isEqual(cloneNextValues, rawValuesRef.current, true)) {\n onChange(getTriggerValue(cloneNextValues));\n }\n // We set this later since it will re-render component immediately\n setValue(cloneNextValues);\n };\n var changeToCloseValue = function changeToCloseValue(newValue) {\n if (!disabled) {\n var valueIndex = 0;\n var valueDist = mergedMax - mergedMin;\n rawValues.forEach(function (val, index) {\n var dist = Math.abs(newValue - val);\n if (dist <= valueDist) {\n valueDist = dist;\n valueIndex = index;\n }\n });\n // Create new values\n var cloneNextValues = _toConsumableArray(rawValues);\n cloneNextValues[valueIndex] = newValue;\n // Fill value to match default 2\n if (range && !rawValues.length && count === undefined) {\n cloneNextValues.push(newValue);\n }\n onBeforeChange === null || onBeforeChange === void 0 ? void 0 : onBeforeChange(getTriggerValue(cloneNextValues));\n triggerChange(cloneNextValues);\n onAfterChange === null || onAfterChange === void 0 ? void 0 : onAfterChange(getTriggerValue(cloneNextValues));\n }\n };\n // ============================ Click =============================\n var onSliderMouseDown = function onSliderMouseDown(e) {\n e.preventDefault();\n var _containerRef$current = containerRef.current.getBoundingClientRect(),\n width = _containerRef$current.width,\n height = _containerRef$current.height,\n left = _containerRef$current.left,\n top = _containerRef$current.top,\n bottom = _containerRef$current.bottom,\n right = _containerRef$current.right;\n var clientX = e.clientX,\n clientY = e.clientY;\n var percent;\n switch (direction) {\n case 'btt':\n percent = (bottom - clientY) / height;\n break;\n case 'ttb':\n percent = (clientY - top) / height;\n break;\n case 'rtl':\n percent = (right - clientX) / width;\n break;\n default:\n percent = (clientX - left) / width;\n }\n var nextValue = mergedMin + percent * (mergedMax - mergedMin);\n changeToCloseValue(formatValue(nextValue));\n };\n // =========================== Keyboard ===========================\n var _React$useState = React.useState(null),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n keyboardValue = _React$useState2[0],\n setKeyboardValue = _React$useState2[1];\n var onHandleOffsetChange = function onHandleOffsetChange(offset, valueIndex) {\n if (!disabled) {\n var next = offsetValues(rawValues, offset, valueIndex);\n onBeforeChange === null || onBeforeChange === void 0 ? void 0 : onBeforeChange(getTriggerValue(rawValues));\n triggerChange(next.values);\n onAfterChange === null || onAfterChange === void 0 ? void 0 : onAfterChange(getTriggerValue(next.values));\n setKeyboardValue(next.value);\n }\n };\n React.useEffect(function () {\n if (keyboardValue !== null) {\n var valueIndex = rawValues.indexOf(keyboardValue);\n if (valueIndex >= 0) {\n handlesRef.current.focus(valueIndex);\n }\n }\n setKeyboardValue(null);\n }, [keyboardValue]);\n // ============================= Drag =============================\n var mergedDraggableTrack = React.useMemo(function () {\n if (draggableTrack && mergedStep === null) {\n if (process.env.NODE_ENV !== 'production') {\n warning(false, '`draggableTrack` is not supported when `step` is `null`.');\n }\n return false;\n }\n return draggableTrack;\n }, [draggableTrack, mergedStep]);\n var finishChange = function finishChange() {\n onAfterChange === null || onAfterChange === void 0 ? void 0 : onAfterChange(getTriggerValue(rawValuesRef.current));\n };\n var _useDrag = useDrag(containerRef, direction, rawValues, mergedMin, mergedMax, formatValue, triggerChange, finishChange, offsetValues),\n _useDrag2 = _slicedToArray(_useDrag, 4),\n draggingIndex = _useDrag2[0],\n draggingValue = _useDrag2[1],\n cacheValues = _useDrag2[2],\n onStartDrag = _useDrag2[3];\n var onStartMove = function onStartMove(e, valueIndex) {\n onStartDrag(e, valueIndex);\n onBeforeChange === null || onBeforeChange === void 0 ? void 0 : onBeforeChange(getTriggerValue(rawValuesRef.current));\n };\n // Auto focus for updated handle\n var dragging = draggingIndex !== -1;\n React.useEffect(function () {\n if (!dragging) {\n var valueIndex = rawValues.lastIndexOf(draggingValue);\n handlesRef.current.focus(valueIndex);\n }\n }, [dragging]);\n // =========================== Included ===========================\n var sortedCacheValues = React.useMemo(function () {\n return _toConsumableArray(cacheValues).sort(function (a, b) {\n return a - b;\n });\n }, [cacheValues]);\n // Provide a range values with included [min, max]\n // Used for Track, Mark & Dot\n var _React$useMemo = React.useMemo(function () {\n if (!range) {\n return [mergedMin, sortedCacheValues[0]];\n }\n return [sortedCacheValues[0], sortedCacheValues[sortedCacheValues.length - 1]];\n }, [sortedCacheValues, range, mergedMin]),\n _React$useMemo2 = _slicedToArray(_React$useMemo, 2),\n includedStart = _React$useMemo2[0],\n includedEnd = _React$useMemo2[1];\n // ============================= Refs =============================\n React.useImperativeHandle(ref, function () {\n return {\n focus: function focus() {\n handlesRef.current.focus(0);\n },\n blur: function blur() {\n var _document = document,\n activeElement = _document.activeElement;\n if (containerRef.current.contains(activeElement)) {\n activeElement === null || activeElement === void 0 ? void 0 : activeElement.blur();\n }\n }\n };\n });\n // ========================== Auto Focus ==========================\n React.useEffect(function () {\n if (autoFocus) {\n handlesRef.current.focus(0);\n }\n }, []);\n // =========================== Context ============================\n var context = React.useMemo(function () {\n return {\n min: mergedMin,\n max: mergedMax,\n direction: direction,\n disabled: disabled,\n keyboard: keyboard,\n step: mergedStep,\n included: included,\n includedStart: includedStart,\n includedEnd: includedEnd,\n range: range,\n tabIndex: tabIndex,\n ariaLabelForHandle: ariaLabelForHandle,\n ariaLabelledByForHandle: ariaLabelledByForHandle,\n ariaValueTextFormatterForHandle: ariaValueTextFormatterForHandle\n };\n }, [mergedMin, mergedMax, direction, disabled, keyboard, mergedStep, included, includedStart, includedEnd, range, tabIndex, ariaLabelForHandle, ariaLabelledByForHandle, ariaValueTextFormatterForHandle]);\n // ============================ Render ============================\n return /*#__PURE__*/React.createElement(SliderContext.Provider, {\n value: context\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: containerRef,\n className: classNames(prefixCls, className, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-disabled\"), disabled), _defineProperty(_classNames, \"\".concat(prefixCls, \"-vertical\"), vertical), _defineProperty(_classNames, \"\".concat(prefixCls, \"-horizontal\"), !vertical), _defineProperty(_classNames, \"\".concat(prefixCls, \"-with-marks\"), markList.length), _classNames)),\n style: style,\n onMouseDown: onSliderMouseDown\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-rail\"),\n style: railStyle\n }), /*#__PURE__*/React.createElement(Tracks, {\n prefixCls: prefixCls,\n style: trackStyle,\n values: sortedCacheValues,\n startPoint: startPoint,\n onStartMove: mergedDraggableTrack ? onStartMove : null\n }), /*#__PURE__*/React.createElement(Steps, {\n prefixCls: prefixCls,\n marks: markList,\n dots: dots,\n style: dotStyle,\n activeStyle: activeDotStyle\n }), /*#__PURE__*/React.createElement(Handles, {\n ref: handlesRef,\n prefixCls: prefixCls,\n style: handleStyle,\n values: cacheValues,\n draggingIndex: draggingIndex,\n onStartMove: onStartMove,\n onOffsetChange: onHandleOffsetChange,\n onFocus: onFocus,\n onBlur: onBlur,\n handleRender: handleRender\n }), /*#__PURE__*/React.createElement(Marks, {\n prefixCls: prefixCls,\n marks: markList,\n onClick: changeToCloseValue\n })));\n});\nif (process.env.NODE_ENV !== 'production') {\n Slider.displayName = 'Slider';\n}\nexport default Slider;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport * as React from 'react';\nexport default function useOffset(min, max, step, markList, allowCross, pushable) {\n var formatRangeValue = React.useCallback(function (val) {\n var formatNextValue = isFinite(val) ? val : min;\n formatNextValue = Math.min(max, val);\n formatNextValue = Math.max(min, formatNextValue);\n return formatNextValue;\n }, [min, max]);\n var formatStepValue = React.useCallback(function (val) {\n if (step !== null) {\n var stepValue = min + Math.round((formatRangeValue(val) - min) / step) * step;\n // Cut number in case to be like 0.30000000000000004\n var getDecimal = function getDecimal(num) {\n return (String(num).split('.')[1] || '').length;\n };\n var maxDecimal = Math.max(getDecimal(step), getDecimal(max), getDecimal(min));\n var fixedValue = Number(stepValue.toFixed(maxDecimal));\n return min <= fixedValue && fixedValue <= max ? fixedValue : null;\n }\n return null;\n }, [step, min, max, formatRangeValue]);\n var formatValue = React.useCallback(function (val) {\n var formatNextValue = formatRangeValue(val);\n // List align values\n var alignValues = markList.map(function (mark) {\n return mark.value;\n });\n if (step !== null) {\n alignValues.push(formatStepValue(val));\n }\n // min & max\n alignValues.push(min, max);\n // Align with marks\n var closeValue = alignValues[0];\n var closeDist = max - min;\n alignValues.forEach(function (alignValue) {\n var dist = Math.abs(formatNextValue - alignValue);\n if (dist <= closeDist) {\n closeValue = alignValue;\n closeDist = dist;\n }\n });\n return closeValue;\n }, [min, max, markList, step, formatRangeValue, formatStepValue]);\n // ========================== Offset ==========================\n // Single Value\n var offsetValue = function offsetValue(values, offset, valueIndex) {\n var mode = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'unit';\n if (typeof offset === 'number') {\n var nextValue;\n var originValue = values[valueIndex];\n // Only used for `dist` mode\n var targetDistValue = originValue + offset;\n // Compare next step value & mark value which is best match\n var potentialValues = [];\n markList.forEach(function (mark) {\n potentialValues.push(mark.value);\n });\n // Min & Max\n potentialValues.push(min, max);\n // In case origin value is align with mark but not with step\n potentialValues.push(formatStepValue(originValue));\n // Put offset step value also\n var sign = offset > 0 ? 1 : -1;\n if (mode === 'unit') {\n potentialValues.push(formatStepValue(originValue + sign * step));\n } else {\n potentialValues.push(formatStepValue(targetDistValue));\n }\n // Find close one\n potentialValues = potentialValues.filter(function (val) {\n return val !== null;\n })\n // Remove reverse value\n .filter(function (val) {\n return offset < 0 ? val <= originValue : val >= originValue;\n });\n if (mode === 'unit') {\n // `unit` mode can not contain itself\n potentialValues = potentialValues.filter(function (val) {\n return val !== originValue;\n });\n }\n var compareValue = mode === 'unit' ? originValue : targetDistValue;\n nextValue = potentialValues[0];\n var valueDist = Math.abs(nextValue - compareValue);\n potentialValues.forEach(function (potentialValue) {\n var dist = Math.abs(potentialValue - compareValue);\n if (dist < valueDist) {\n nextValue = potentialValue;\n valueDist = dist;\n }\n });\n // Out of range will back to range\n if (nextValue === undefined) {\n return offset < 0 ? min : max;\n }\n // `dist` mode\n if (mode === 'dist') {\n return nextValue;\n }\n // `unit` mode may need another round\n if (Math.abs(offset) > 1) {\n var cloneValues = _toConsumableArray(values);\n cloneValues[valueIndex] = nextValue;\n return offsetValue(cloneValues, offset - sign, valueIndex, mode);\n }\n return nextValue;\n } else if (offset === 'min') {\n return min;\n } else if (offset === 'max') {\n return max;\n }\n };\n /** Same as `offsetValue` but return `changed` mark to tell value changed */\n var offsetChangedValue = function offsetChangedValue(values, offset, valueIndex) {\n var mode = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'unit';\n var originValue = values[valueIndex];\n var nextValue = offsetValue(values, offset, valueIndex, mode);\n return {\n value: nextValue,\n changed: nextValue !== originValue\n };\n };\n var needPush = function needPush(dist) {\n return pushable === null && dist === 0 || typeof pushable === 'number' && dist < pushable;\n };\n // Values\n var offsetValues = function offsetValues(values, offset, valueIndex) {\n var mode = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'unit';\n var nextValues = values.map(formatValue);\n var originValue = nextValues[valueIndex];\n var nextValue = offsetValue(nextValues, offset, valueIndex, mode);\n nextValues[valueIndex] = nextValue;\n if (allowCross === false) {\n // >>>>> Allow Cross\n var pushNum = pushable || 0;\n // ============ AllowCross ===============\n if (valueIndex > 0 && nextValues[valueIndex - 1] !== originValue) {\n nextValues[valueIndex] = Math.max(nextValues[valueIndex], nextValues[valueIndex - 1] + pushNum);\n }\n if (valueIndex < nextValues.length - 1 && nextValues[valueIndex + 1] !== originValue) {\n nextValues[valueIndex] = Math.min(nextValues[valueIndex], nextValues[valueIndex + 1] - pushNum);\n }\n } else if (typeof pushable === 'number' || pushable === null) {\n // >>>>> Pushable\n // =============== Push ==================\n // >>>>>> Basic push\n // End values\n for (var i = valueIndex + 1; i < nextValues.length; i += 1) {\n var changed = true;\n while (needPush(nextValues[i] - nextValues[i - 1]) && changed) {\n var _offsetChangedValue = offsetChangedValue(nextValues, 1, i);\n nextValues[i] = _offsetChangedValue.value;\n changed = _offsetChangedValue.changed;\n }\n }\n // Start values\n for (var _i = valueIndex; _i > 0; _i -= 1) {\n var _changed = true;\n while (needPush(nextValues[_i] - nextValues[_i - 1]) && _changed) {\n var _offsetChangedValue2 = offsetChangedValue(nextValues, -1, _i - 1);\n nextValues[_i - 1] = _offsetChangedValue2.value;\n _changed = _offsetChangedValue2.changed;\n }\n }\n // >>>>> Revert back to safe push range\n // End to Start\n for (var _i2 = nextValues.length - 1; _i2 > 0; _i2 -= 1) {\n var _changed2 = true;\n while (needPush(nextValues[_i2] - nextValues[_i2 - 1]) && _changed2) {\n var _offsetChangedValue3 = offsetChangedValue(nextValues, -1, _i2 - 1);\n nextValues[_i2 - 1] = _offsetChangedValue3.value;\n _changed2 = _offsetChangedValue3.changed;\n }\n }\n // Start to End\n for (var _i3 = 0; _i3 < nextValues.length - 1; _i3 += 1) {\n var _changed3 = true;\n while (needPush(nextValues[_i3 + 1] - nextValues[_i3]) && _changed3) {\n var _offsetChangedValue4 = offsetChangedValue(nextValues, 1, _i3 + 1);\n nextValues[_i3 + 1] = _offsetChangedValue4.value;\n _changed3 = _offsetChangedValue4.changed;\n }\n }\n }\n return {\n value: nextValues[valueIndex],\n values: nextValues\n };\n };\n return [formatValue, offsetValues];\n}","import Slider from './Slider';\nexport default Slider;","import raf from \"rc-util/es/raf\";\nimport { composeRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nimport { useRef } from 'react';\nimport Tooltip from '../tooltip';\nvar SliderTooltip = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var open = props.open;\n var innerRef = useRef(null);\n var rafRef = useRef(null);\n function cancelKeepAlign() {\n raf.cancel(rafRef.current);\n rafRef.current = null;\n }\n function keepAlign() {\n rafRef.current = raf(function () {\n var _a;\n (_a = innerRef.current) === null || _a === void 0 ? void 0 : _a.forceAlign();\n rafRef.current = null;\n });\n }\n React.useEffect(function () {\n if (open) {\n keepAlign();\n } else {\n cancelKeepAlign();\n }\n return cancelKeepAlign;\n }, [open, props.title]);\n return /*#__PURE__*/React.createElement(Tooltip, Object.assign({\n ref: composeRef(innerRef, ref)\n }, props));\n});\nif (process.env.NODE_ENV !== 'production') {\n SliderTooltip.displayName = 'SliderTooltip';\n}\nexport default SliderTooltip;","import _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport { TinyColor } from '@ctrl/tinycolor';\nimport { resetComponent } from '../../style';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\n// =============================== Base ===============================\nvar genBaseStyle = function genBaseStyle(token) {\n var _hover, _$concat, _$concat2, _Object$assign;\n var componentCls = token.componentCls,\n antCls = token.antCls,\n controlSize = token.controlSize,\n dotSize = token.dotSize,\n marginFull = token.marginFull,\n marginPart = token.marginPart,\n colorFillContentHover = token.colorFillContentHover;\n return _defineProperty({}, componentCls, Object.assign(Object.assign({}, resetComponent(token)), (_Object$assign = {\n position: 'relative',\n height: controlSize,\n margin: \"\".concat(marginPart, \"px \").concat(marginFull, \"px\"),\n padding: 0,\n cursor: 'pointer',\n touchAction: 'none'\n }, _defineProperty(_Object$assign, \"&-vertical\", {\n margin: \"\".concat(marginFull, \"px \").concat(marginPart, \"px\")\n }), _defineProperty(_Object$assign, \"\".concat(componentCls, \"-rail\"), {\n position: 'absolute',\n backgroundColor: token.railBg,\n borderRadius: token.borderRadiusXS,\n transition: \"background-color \".concat(token.motionDurationMid)\n }), _defineProperty(_Object$assign, \"\".concat(componentCls, \"-track\"), {\n position: 'absolute',\n backgroundColor: token.trackBg,\n borderRadius: token.borderRadiusXS,\n transition: \"background-color \".concat(token.motionDurationMid)\n }), _defineProperty(_Object$assign, '&:hover', (_hover = {}, _defineProperty(_hover, \"\".concat(componentCls, \"-rail\"), {\n backgroundColor: token.railHoverBg\n }), _defineProperty(_hover, \"\".concat(componentCls, \"-track\"), {\n backgroundColor: token.trackHoverBg\n }), _defineProperty(_hover, \"\".concat(componentCls, \"-dot\"), {\n borderColor: colorFillContentHover\n }), _defineProperty(_hover, \"\".concat(componentCls, \"-handle::after\"), {\n boxShadow: \"0 0 0 \".concat(token.handleLineWidth, \"px \").concat(token.colorPrimaryBorderHover)\n }), _defineProperty(_hover, \"\".concat(componentCls, \"-dot-active\"), {\n borderColor: token.dotActiveBorderColor\n }), _hover)), _defineProperty(_Object$assign, \"\".concat(componentCls, \"-handle\"), (_$concat = {\n position: 'absolute',\n width: token.handleSize,\n height: token.handleSize,\n outline: 'none'\n }, _defineProperty(_$concat, \"\".concat(componentCls, \"-dragging\"), {\n zIndex: 1\n }), _defineProperty(_$concat, '&::before', {\n content: '\"\"',\n position: 'absolute',\n insetInlineStart: -token.handleLineWidth,\n insetBlockStart: -token.handleLineWidth,\n width: token.handleSize + token.handleLineWidth * 2,\n height: token.handleSize + token.handleLineWidth * 2,\n backgroundColor: 'transparent'\n }), _defineProperty(_$concat, '&::after', {\n content: '\"\"',\n position: 'absolute',\n insetBlockStart: 0,\n insetInlineStart: 0,\n width: token.handleSize,\n height: token.handleSize,\n backgroundColor: token.colorBgElevated,\n boxShadow: \"0 0 0 \".concat(token.handleLineWidth, \"px \").concat(token.handleColor),\n borderRadius: '50%',\n cursor: 'pointer',\n transition: \"\\n inset-inline-start \".concat(token.motionDurationMid, \",\\n inset-block-start \").concat(token.motionDurationMid, \",\\n width \").concat(token.motionDurationMid, \",\\n height \").concat(token.motionDurationMid, \",\\n box-shadow \").concat(token.motionDurationMid, \"\\n \")\n }), _defineProperty(_$concat, '&:hover, &:active, &:focus', {\n '&::before': {\n insetInlineStart: -((token.handleSizeHover - token.handleSize) / 2 + token.handleLineWidthHover),\n insetBlockStart: -((token.handleSizeHover - token.handleSize) / 2 + token.handleLineWidthHover),\n width: token.handleSizeHover + token.handleLineWidthHover * 2,\n height: token.handleSizeHover + token.handleLineWidthHover * 2\n },\n '&::after': {\n boxShadow: \"0 0 0 \".concat(token.handleLineWidthHover, \"px \").concat(token.handleActiveColor),\n width: token.handleSizeHover,\n height: token.handleSizeHover,\n insetInlineStart: (token.handleSize - token.handleSizeHover) / 2,\n insetBlockStart: (token.handleSize - token.handleSizeHover) / 2\n }\n }), _$concat)), _defineProperty(_Object$assign, \"\".concat(componentCls, \"-mark\"), {\n position: 'absolute',\n fontSize: token.fontSize\n }), _defineProperty(_Object$assign, \"\".concat(componentCls, \"-mark-text\"), {\n position: 'absolute',\n display: 'inline-block',\n color: token.colorTextDescription,\n textAlign: 'center',\n wordBreak: 'keep-all',\n cursor: 'pointer',\n userSelect: 'none',\n '&-active': {\n color: token.colorText\n }\n }), _defineProperty(_Object$assign, \"\".concat(componentCls, \"-step\"), {\n position: 'absolute',\n background: 'transparent',\n pointerEvents: 'none'\n }), _defineProperty(_Object$assign, \"\".concat(componentCls, \"-dot\"), {\n position: 'absolute',\n width: dotSize,\n height: dotSize,\n backgroundColor: token.colorBgElevated,\n border: \"\".concat(token.handleLineWidth, \"px solid \").concat(token.dotBorderColor),\n borderRadius: '50%',\n cursor: 'pointer',\n transition: \"border-color \".concat(token.motionDurationSlow),\n pointerEvents: 'auto',\n '&-active': {\n borderColor: token.dotActiveBorderColor\n }\n }), _defineProperty(_Object$assign, \"&\".concat(componentCls, \"-disabled\"), (_$concat2 = {\n cursor: 'not-allowed'\n }, _defineProperty(_$concat2, \"\".concat(componentCls, \"-rail\"), {\n backgroundColor: \"\".concat(token.railBg, \" !important\")\n }), _defineProperty(_$concat2, \"\".concat(componentCls, \"-track\"), {\n backgroundColor: \"\".concat(token.trackBgDisabled, \" !important\")\n }), _defineProperty(_$concat2, \"\\n \".concat(componentCls, \"-dot\\n \"), {\n backgroundColor: token.colorBgElevated,\n borderColor: token.trackBgDisabled,\n boxShadow: 'none',\n cursor: 'not-allowed'\n }), _defineProperty(_$concat2, \"\".concat(componentCls, \"-handle::after\"), {\n backgroundColor: token.colorBgElevated,\n cursor: 'not-allowed',\n width: token.handleSize,\n height: token.handleSize,\n boxShadow: \"0 0 0 \".concat(token.handleLineWidth, \"px \").concat(new TinyColor(token.colorTextDisabled).onBackground(token.colorBgContainer).toHexShortString()),\n insetInlineStart: 0,\n insetBlockStart: 0\n }), _defineProperty(_$concat2, \"\\n \".concat(componentCls, \"-mark-text,\\n \").concat(componentCls, \"-dot\\n \"), {\n cursor: \"not-allowed !important\"\n }), _$concat2)), _defineProperty(_Object$assign, \"&-tooltip \".concat(antCls, \"-tooltip-inner\"), {\n minWidth: 'unset'\n }), _Object$assign)));\n};\n// ============================ Horizontal ============================\nvar genDirectionStyle = function genDirectionStyle(token, horizontal) {\n var _$concat3, _$concat6, _$concat7, _ref2;\n var componentCls = token.componentCls,\n railSize = token.railSize,\n handleSize = token.handleSize,\n dotSize = token.dotSize;\n var railPadding = horizontal ? 'paddingBlock' : 'paddingInline';\n var full = horizontal ? 'width' : 'height';\n var part = horizontal ? 'height' : 'width';\n var handlePos = horizontal ? 'insetBlockStart' : 'insetInlineStart';\n var markInset = horizontal ? 'top' : 'insetInlineStart';\n return _ref2 = {}, _defineProperty(_ref2, railPadding, railSize), _defineProperty(_ref2, part, railSize * 3), _defineProperty(_ref2, \"\".concat(componentCls, \"-rail\"), (_$concat3 = {}, _defineProperty(_$concat3, full, '100%'), _defineProperty(_$concat3, part, railSize), _$concat3)), _defineProperty(_ref2, \"\".concat(componentCls, \"-track\"), _defineProperty({}, part, railSize)), _defineProperty(_ref2, \"\".concat(componentCls, \"-handle\"), _defineProperty({}, handlePos, (railSize * 3 - handleSize) / 2)), _defineProperty(_ref2, \"\".concat(componentCls, \"-mark\"), (_$concat6 = {\n // Reset all\n insetInlineStart: 0,\n top: 0\n }, _defineProperty(_$concat6, markInset, railSize * 3 + (horizontal ? 0 : token.marginFull)), _defineProperty(_$concat6, full, '100%'), _$concat6)), _defineProperty(_ref2, \"\".concat(componentCls, \"-step\"), (_$concat7 = {\n // Reset all\n insetInlineStart: 0,\n top: 0\n }, _defineProperty(_$concat7, markInset, railSize), _defineProperty(_$concat7, full, '100%'), _defineProperty(_$concat7, part, railSize), _$concat7)), _defineProperty(_ref2, \"\".concat(componentCls, \"-dot\"), _defineProperty({\n position: 'absolute'\n }, handlePos, (railSize - dotSize) / 2)), _ref2;\n};\n// ============================ Horizontal ============================\nvar genHorizontalStyle = function genHorizontalStyle(token) {\n var componentCls = token.componentCls,\n marginPartWithMark = token.marginPartWithMark;\n return _defineProperty({}, \"\".concat(componentCls, \"-horizontal\"), Object.assign(Object.assign({}, genDirectionStyle(token, true)), _defineProperty({}, \"&\".concat(componentCls, \"-with-marks\"), {\n marginBottom: marginPartWithMark\n })));\n};\n// ============================= Vertical =============================\nvar genVerticalStyle = function genVerticalStyle(token) {\n var componentCls = token.componentCls;\n return _defineProperty({}, \"\".concat(componentCls, \"-vertical\"), Object.assign(Object.assign({}, genDirectionStyle(token, false)), {\n height: '100%'\n }));\n};\n// ============================== Export ==============================\nexport default genComponentStyleHook('Slider', function (token) {\n var sliderToken = mergeToken(token, {\n marginPart: (token.controlHeight - token.controlSize) / 2,\n marginFull: token.controlSize / 2,\n marginPartWithMark: token.controlHeightLG - token.controlSize\n });\n return [genBaseStyle(sliderToken), genHorizontalStyle(sliderToken), genVerticalStyle(sliderToken)];\n}, function (token) {\n // Handle line width is always width-er 1px\n var increaseHandleWidth = 1;\n var controlSize = token.controlHeightLG / 4;\n var controlSizeHover = token.controlHeightSM / 2;\n var handleLineWidth = token.lineWidth + increaseHandleWidth;\n var handleLineWidthHover = token.lineWidth + increaseHandleWidth * 3;\n return {\n controlSize: controlSize,\n railSize: 4,\n handleSize: controlSize,\n handleSizeHover: controlSizeHover,\n dotSize: 8,\n handleLineWidth: handleLineWidth,\n handleLineWidthHover: handleLineWidthHover,\n railBg: token.colorFillTertiary,\n railHoverBg: token.colorFillSecondary,\n trackBg: token.colorPrimaryBorder,\n trackHoverBg: token.colorPrimaryBorderHover,\n handleColor: token.colorPrimaryBorder,\n handleActiveColor: token.colorPrimary,\n dotBorderColor: token.colorBorderSecondary,\n dotActiveBorderColor: token.colorPrimaryBorder,\n trackBgDisabled: token.colorBgContainerDisabled\n };\n});","'use client';\n\nimport _defineProperty from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _slicedToArray from \"/home/victordibia/projects/projectlida/lidaweb/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport RcSlider from 'rc-slider';\nimport React from 'react';\nimport warning from '../_util/warning';\nimport { ConfigContext } from '../config-provider';\nimport DisabledContext from '../config-provider/DisabledContext';\nimport SliderTooltip from './SliderTooltip';\nimport useStyle from './style';\nvar defaultFormatter = function defaultFormatter(val) {\n return typeof val === 'number' ? val.toString() : '';\n};\nvar Slider = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var customizePrefixCls = props.prefixCls,\n range = props.range,\n className = props.className,\n rootClassName = props.rootClassName,\n style = props.style,\n disabled = props.disabled,\n legacyTooltipPrefixCls = props.tooltipPrefixCls,\n legacyTipFormatter = props.tipFormatter,\n legacyTooltipVisible = props.tooltipVisible,\n legacyGetTooltipPopupContainer = props.getTooltipPopupContainer,\n legacyTooltipPlacement = props.tooltipPlacement,\n restProps = __rest(props, [\"prefixCls\", \"range\", \"className\", \"rootClassName\", \"style\", \"disabled\", \"tooltipPrefixCls\", \"tipFormatter\", \"tooltipVisible\", \"getTooltipPopupContainer\", \"tooltipPlacement\"]);\n var _React$useContext = React.useContext(ConfigContext),\n direction = _React$useContext.direction,\n slider = _React$useContext.slider,\n getPrefixCls = _React$useContext.getPrefixCls,\n getPopupContainer = _React$useContext.getPopupContainer;\n var contextDisabled = React.useContext(DisabledContext);\n var mergedDisabled = disabled !== null && disabled !== void 0 ? disabled : contextDisabled;\n var _React$useState = React.useState({}),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n opens = _React$useState2[0],\n setOpens = _React$useState2[1];\n var toggleTooltipOpen = function toggleTooltipOpen(index, open) {\n setOpens(function (prev) {\n return Object.assign(Object.assign({}, prev), _defineProperty({}, index, open));\n });\n };\n var getTooltipPlacement = function getTooltipPlacement(placement, vertical) {\n if (placement) {\n return placement;\n }\n if (!vertical) {\n return 'top';\n }\n return direction === 'rtl' ? 'left' : 'right';\n };\n var prefixCls = getPrefixCls('slider', customizePrefixCls);\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n var cls = classNames(className, slider === null || slider === void 0 ? void 0 : slider.className, rootClassName, _defineProperty({}, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), hashId);\n // make reverse default on rtl direction\n if (direction === 'rtl' && !restProps.vertical) {\n restProps.reverse = !restProps.reverse;\n }\n // Range config\n var _React$useMemo = React.useMemo(function () {\n if (!range) {\n return [false];\n }\n return typeof range === 'object' ? [true, range.draggableTrack] : [true, false];\n }, [range]),\n _React$useMemo2 = _slicedToArray(_React$useMemo, 2),\n mergedRange = _React$useMemo2[0],\n draggableTrack = _React$useMemo2[1];\n // Warning for deprecated usage\n if (process.env.NODE_ENV !== 'production') {\n [['tooltipPrefixCls', 'prefixCls'], ['getTooltipPopupContainer', 'getPopupContainer'], ['tipFormatter', 'formatter'], ['tooltipPlacement', 'placement'], ['tooltipVisible', 'open']].forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n deprecatedName = _ref2[0],\n newName = _ref2[1];\n process.env.NODE_ENV !== \"production\" ? warning(!(deprecatedName in props), 'Slider', \"`\".concat(deprecatedName, \"` is deprecated, please use `tooltip.\").concat(newName, \"` instead.\")) : void 0;\n });\n }\n var handleRender = function handleRender(node, info) {\n var _a;\n var index = info.index,\n dragging = info.dragging;\n var _props$tooltip = props.tooltip,\n tooltip = _props$tooltip === void 0 ? {} : _props$tooltip,\n vertical = props.vertical;\n var tooltipProps = Object.assign({}, tooltip);\n var tooltipOpen = tooltipProps.open,\n tooltipPlacement = tooltipProps.placement,\n getTooltipPopupContainer = tooltipProps.getPopupContainer,\n customizeTooltipPrefixCls = tooltipProps.prefixCls,\n tipFormatter = tooltipProps.formatter;\n var mergedTipFormatter;\n if (tipFormatter || tipFormatter === null) {\n mergedTipFormatter = tipFormatter;\n } else if (legacyTipFormatter || legacyTipFormatter === null) {\n mergedTipFormatter = legacyTipFormatter;\n } else {\n mergedTipFormatter = defaultFormatter;\n }\n var isTipFormatter = mergedTipFormatter ? opens[index] || dragging : false;\n var open = (_a = tooltipOpen !== null && tooltipOpen !== void 0 ? tooltipOpen : legacyTooltipVisible) !== null && _a !== void 0 ? _a : tooltipOpen === undefined && isTipFormatter;\n var passedProps = Object.assign(Object.assign({}, node.props), {\n onMouseEnter: function onMouseEnter() {\n return toggleTooltipOpen(index, true);\n },\n onMouseLeave: function onMouseLeave() {\n return toggleTooltipOpen(index, false);\n }\n });\n var tooltipPrefixCls = getPrefixCls('tooltip', customizeTooltipPrefixCls !== null && customizeTooltipPrefixCls !== void 0 ? customizeTooltipPrefixCls : legacyTooltipPrefixCls);\n return /*#__PURE__*/React.createElement(SliderTooltip, Object.assign({}, tooltipProps, {\n prefixCls: tooltipPrefixCls,\n title: mergedTipFormatter ? mergedTipFormatter(info.value) : '',\n open: open,\n placement: getTooltipPlacement(tooltipPlacement !== null && tooltipPlacement !== void 0 ? tooltipPlacement : legacyTooltipPlacement, vertical),\n key: index,\n overlayClassName: \"\".concat(prefixCls, \"-tooltip\"),\n getPopupContainer: getTooltipPopupContainer || legacyGetTooltipPopupContainer || getPopupContainer\n }), /*#__PURE__*/React.cloneElement(node, passedProps));\n };\n var mergedStyle = Object.assign(Object.assign({}, slider === null || slider === void 0 ? void 0 : slider.style), style);\n return wrapSSR( /*#__PURE__*/React.createElement(RcSlider, Object.assign({}, restProps, {\n step: restProps.step,\n range: mergedRange,\n draggableTrack: draggableTrack,\n className: cls,\n style: mergedStyle,\n disabled: mergedDisabled,\n ref: ref,\n prefixCls: prefixCls,\n handleRender: handleRender\n })));\n});\nif (process.env.NODE_ENV !== 'production') {\n Slider.displayName = 'Slider';\n}\nexport default Slider;","import {\n AdjustmentsVerticalIcon,\n Cog6ToothIcon,\n} from \"@heroicons/react/24/outline\";\nimport { Button, Checkbox, Input, Modal, Select, Slider } from \"antd\";\nimport * as React from \"react\";\nimport { SecondaryButton } from \"../../atoms\";\nimport { ITextGeneratorConfig, IVizConfig } from \"../../types\";\nimport { get, set } from \"lodash\";\n\nconst GeneratorControlsView = ({\n config,\n models,\n}: {\n config: {\n vizConfig: IVizConfig;\n setVizConfig: React.Dispatch>;\n };\n models: any;\n}) => {\n const [isModalVisible, setIsModalVisible] = React.useState(false);\n const [modelOptions, setModelOptions] = React.useState([]);\n const [selectedProvider, setSelectedProvider] = React.useState(0);\n const [selectedModel, setSelectedModel] = React.useState(0);\n\n const { vizConfig, setVizConfig } = config;\n const textgen_config = vizConfig.textgen_config;\n\n const providers = Object.keys(models);\n\n const provider_options = providers.map((provider: string, index: number) => {\n return { label: provider, value: provider, key: index };\n });\n\n const getOptions = (models: any) => {\n return (\n models?.models.map((model: any, index: number) => {\n let name = model.name;\n if (\n model &&\n model.model &&\n model.model.parameters &&\n model.model.parameters.model\n ) {\n name = model.model.parameters.model;\n }\n return {\n label: name,\n value: name,\n key: index,\n };\n }) || []\n );\n };\n const model_options = getOptions(models[providers[selectedProvider]]);\n // const model_options =\n // models[providers[selectedProvider]]?.models.map(\n // (model: any, index: number) => {\n // console.log(\"model\", model);\n // let name = model.name;\n // if (\n // model &&\n // model.model &&\n // model.model.parameters &&\n // model.model.parameters.model\n // ) {\n // console.log(\n // \"model.model.parameters.model\",\n // model.model.parameters.model\n // );\n // name = model.model.parameters.model;\n // }\n // return {\n // label: name,\n // value: name,\n // key: index,\n // };\n // }\n // ) || [];\n\n // console.log(\"model_options\", model_options);\n\n const selectedMaxTokens =\n models[providers[selectedProvider]].models[selectedModel]?.max_tokens;\n\n const ControlRowView = ({\n title,\n description,\n value,\n control,\n className,\n }: any) => {\n return (\n
          \n
          \n {title} \n \n {value}\n \n
          \n
          {description}
          \n {control}\n
          \n );\n };\n\n return (\n
          \n \n \n Generation Settings\n \n }\n open={isModalVisible}\n onCancel={() => {\n setIsModalVisible(false);\n }}\n onOk={() => {\n setIsModalVisible(false);\n }}\n >\n
          \n
          \n {\n setVizConfig({\n ...vizConfig,\n textgen_config: {\n ...textgen_config,\n provider: value.value,\n model: getOptions(models[value.value])[0].value,\n max_tokens: null,\n },\n });\n setSelectedProvider(value.key);\n console.log(\"selected model\", value);\n }}\n options={provider_options}\n />\n }\n />\n {\n setVizConfig({\n ...vizConfig,\n textgen_config: { ...textgen_config, model: value.value },\n });\n setSelectedModel(value.key);\n }}\n options={model_options}\n />\n }\n />\n
          \n
          \n {\n setVizConfig({\n ...vizConfig,\n textgen_config: { ...textgen_config, max_tokens: value },\n });\n }}\n />\n }\n />\n\n {\n setVizConfig({\n ...vizConfig,\n textgen_config: { ...textgen_config, temperature: value },\n });\n }}\n />\n }\n />\n\n {\n setVizConfig({\n ...vizConfig,\n textgen_config: { ...textgen_config, n: value },\n });\n }}\n />\n }\n />\n\n {\n setVizConfig({\n ...vizConfig,\n textgen_config: {\n ...textgen_config,\n presence_penalty: value,\n },\n });\n }}\n />\n }\n />\n\n {\n setVizConfig({\n ...vizConfig,\n textgen_config: {\n ...textgen_config,\n frequency_penalty: value,\n },\n });\n }}\n />\n }\n />\n
          \n
          \n\n

          \n {\" \"}\n Learn more about OpenAI model parameters{\" \"}\n \n here\n \n .\n

          \n \n\n
          \n {\" \"}\n
          \n
          \n {\" \"}\n Select a visualization library/grammar\n
          \n {\n setVizConfig({ ...vizConfig, library: value });\n }}\n options={[\n { label: \"Altair\", value: \"altair\" },\n { label: \"Matplotlib\", value: \"matplotlib\" },\n { label: \"Seaborn\", value: \"seaborn\" },\n { label: \"GGPlot\", value: \"ggplot\" },\n ]}\n />\n
          \n
          \n {\n setIsModalVisible(true);\n }}\n >\n \n Generation Settings{\" \"}\n \n
          \n Model: {textgen_config.model},\n n:\n {textgen_config.n}, number of\n Temperature:{\" \"}\n {textgen_config.temperature}{\" \"}\n ...\n
          \n
          \n
          \n
          \n );\n};\nexport default GeneratorControlsView;\n","import { ExclamationCircleIcon } from \"@heroicons/react/24/outline\";\nimport { message } from \"antd\";\nimport * as React from \"react\";\nimport { IStatus, ITextGeneratorConfig, IVizConfig } from \"../../types\";\nimport { fetchJSON, getLocalStorage, scrollToElement } from \"../../utils\";\nimport DatasetSelectorView from \"./upload/datasetupload\";\nimport GeneratorControlsView from \"./controls\";\n\nconst GenerateView = () => {\n const [loading, setLoading] = React.useState(false);\n\n const initTextGenerationConfig: ITextGeneratorConfig = {\n temperature: 0,\n n: 1,\n model: \"claude-3-5-sonnet-20241022\",\n max_tokens: null,\n provider: \"anthropic\",\n };\n\n const initModels = {\n anthropic: {\n name: \"OpenAI\",\n models: [\n {\n name: \"claude-3-5-sonnet-20241022\",\n max_tokens: 4096,\n },\n ],\n },\n };\n const [models, setModels] = React.useState<{} | null>(initModels);\n const serverUrl = process.env.GATSBY_API_URL;\n\n const initVizConfig: IVizConfig = getLocalStorage(\"lida_viz_config\") || {\n goal: null,\n summary: null,\n library: \"seaborn\",\n textgen_config: initTextGenerationConfig,\n };\n\n const summaryDivRef = React.useRef(null);\n\n // const [config, setConfig] = React.useState(initConfig);\n const [vizConfig, setVizConfig] = React.useState(initVizConfig);\n const [vizspecs, setVizspecs] = React.useState<[] | null>(null);\n const [error, setError] = React.useState(null);\n\n React.useEffect(() => {\n // console.log(\"vizconfig summary updated\", vizConfig);\n if (vizConfig.summary === null) {\n scrollToElement(summaryDivRef);\n setVizspecs(null);\n }\n }, [vizConfig.summary]);\n\n const fetchModels = () => {\n setError(null);\n setLoading(true);\n const payLoad = {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n };\n\n const onSuccess = (data: any) => {\n if (data && data.status) {\n // console.log(\"Models data\", data);\n setModels(data.data);\n } else {\n // message.error(data.message);\n // setError(data);\n console.log(\"Error fetching models\", data);\n }\n setLoading(false);\n };\n const onError = (err: any) => {\n // message.error(err.message);\n setLoading(false);\n // setError(err);\n console.log(\"Error fetching models\", err);\n };\n fetchJSON(`${serverUrl}/models`, payLoad, onSuccess, onError);\n };\n\n React.useEffect(() => {\n fetchModels();\n }, []);\n\n return (\n
          \n {\" \"}\n
          \n \n
          \n {error && !error.status && (\n
          \n {\" \"}\n
          \n An\n error occurred. Please try again later.\n
          \n
          \n {\" \"}\n {error.message}.\n
          \n
          \n )}\n
          \n );\n};\nexport default GenerateView;\n","import * as React from \"react\";\nimport Layout from \"../components/layout\";\nimport { graphql } from \"gatsby\";\nimport GenerateView from \"../components/views/generate/generateindex\";\n\n// markup\nconst DemoPage = ({ data }: any) => {\n return (\n \n
          \n
          \n
          \n Lida provides a conversational interface for automatic generation of{\" \"}\n grammar-agnostic{\" \"}\n visualizations (and infographics) from data!.{\" \"}\n
          \n
          \n \n\n {/*
          \n
          \n System Description\n \n Learn more about how LIDA works\n \n
          \n \n
          */}\n
          \n
          \n );\n};\n\nexport const query = graphql`\n query HomePageQuery {\n site {\n siteMetadata {\n description\n title\n }\n }\n }\n`;\n\nexport default DemoPage;\n","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n defineProperty = Object.defineProperty || function (obj, key, desc) {\n obj[key] = desc.value;\n },\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return defineProperty(generator, \"_invoke\", {\n value: makeInvokeMethod(innerFn, self, context)\n }), generator;\n }\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n exports.wrap = wrap;\n var ContinueSentinel = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n reject(record.arg);\n }\n var previousPromise;\n defineProperty(this, \"_invoke\", {\n value: function value(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method,\n method = delegate.iterator[methodName];\n if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel;\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n return next.value = undefined, next.done = !0, next;\n };\n return next.next = next;\n }\n }\n return {\n next: doneResult\n };\n }\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (val) {\n var object = Object(val),\n keys = [];\n for (var key in object) keys.push(key);\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n"],"names":["EventEmitter","this","_events","prototype","on","evt","callback","once","push","emit","_this","args","_i","arguments","length","events","wildcardEvents","doEmit","es","i","_a","splice","apply","off","length_1","getEvents","Base","_super","cfg","call","destroyed","defaultCfg","getDefaultCfg","get","name","set","value","destroy","taskHead","taskTail","timeout","interval","pokeDelay","clockLast","clockNow","clockSkew","clock","performance","now","Date","setFrame","window","requestAnimationFrame","bind","f","setTimeout","clearNow","Timer","_call","_time","_next","timer","delay","time","t","restart","wake","e","timerFlush","t0","t2","t1","Infinity","sleep","nap","poke","clearTimeout","clearInterval","setInterval","constructor","TypeError","stop","isColorProp","prop","includes","isGradientColor","val","test","IDENTITY_MATRIX","update","shape","animation","elapsed","ratio","startTime","_paused","duration","easing","easeFn","repeat","onFrame","attr","toAttrs","attrs","cProps","fromAttrs","interf","k","toPath","fromPath","path","pathFormatted","toPathPoint","fromPathPoint","cPathPoint","j","currentMatrix","matrixFn","_update","Timeline","canvas","animators","current","initTimer","animations","removeAnimator","isAnimatePaused","draw","addAnimator","index","isAnimating","stopAllAnimations","toEnd","forEach","animator","stopAnimate","getTime","EVENTS","emitTargetEvent","target","type","eventObj","currentTarget","delegateTarget","bubbleEvent","container","bubbles","relativeShape","isOverEvent","fromShape","toShape","isCanvas","EventController","draggingShape","dragging","currentShape","mousedownShape","mousedownPoint","_eventCallback","ev","_triggerEvent","_onDocumentMove","pointInfo","_getPointInfo","_emitEvent","_onDocumentMouseUp","_afterDrag","init","_bindEvents","el","eventName","addEventListener","document","_clearEvents","removeEventListener","_getEventObj","event","point","x","y","clientX","clientY","propagationPath","_getShape","getShape","clientPoint","getClientByEvent","getPointByEvent","method","leaveCanvas","preShape","style","cursor","_onmousedown","button","mousedownTimeStamp","timeStamp","_emitMouseoverEvents","_emitDragoverEvents","isCanvasEmit","_onmouseup","_ondragover","preventDefault","_onmousemove","timeWindow","dx","dy","parent_1","getParent","emitDelegation","propagationStopped","browser","isFirefox","Canvas","initContainer","initDom","initEvents","initTimeline","getElementById","createDom","appendChild","setDOMSize","eventController","timeline","width","height","changeSize","onCanvasChange","getRenderer","getCursor","setCursor","layerX","offsetX","layerY","offsetY","getPointByClient","clientInfo","touches","changedTouches","bbox","getBoundingClientRect","left","top","getClientByPoint","removeDom","parentNode","removeChild","clearEvents","clear","SHAPE_MAP","INDEX","setCanvas","element","isGroup","children","child","setTimeline","Container","getBBox","minX","maxX","minY","maxY","getChildren","filter","childMinX","childMaxX","childMinY","childMaxY","getCanvasBBox","onAttrChange","originValue","totalMatrix","getTotalMatrix","_applyChildrenMarix","applyMatrix","matrix","preTotalMatrix","addShape","shapeType","getShapeBase","add","addGroup","group","groupClass","parent","tmpCfg","getGroupBase","getCanvas","_findShape","v","invertFromMatrix","isClipped","isHit","preParent","_applyElementMatrix","sort","compare","obj1","obj2","right","result","getFirst","getChildByIndex","getLast","getCount","contain","indexOf","remove","findAll","fn","rst","concat","find","findById","id","findByClassName","className","findAllByName","transform","MATRIX","CLONE_CFGS","RESERVED_PORPS","getFormatFromAttrs","Element","getDefaultAttrs","initAttrs","initAnimate","visible","capture","zIndex","getDefaultMatrix","opacity","changeType","setAttr","afterAttrsChange","refX","refY","clip","getClip","targetAttrs","isClipShape","applyTo","show","hide","setZIndex","toFront","toBack","unshift","resetMatrix","getMatrix","setMatrix","m","parentMatrix","applyToMatrix","invertMatrix","setClip","clipCfg","clipShape","Cons","clone","originAttrs","arr","_cloneArrayAttr","cons","cfgName","isPaused","animate","pauseCallback","resumeCallback","animateCfg","_b","_c","formatToAttrs","props","getFormatToAttrs","hasOwnProperty","Object","item","checkExistedAttrs","pauseAnimate","pauseTime","_pauseTime","resumeAnimate","paths","_loop_1","name_1","subName","emitDelegateEvent","this_1","delegateObject","translate","translateX","translateY","newMatrix","move","targetX","targetY","moveTo","scale","ratioX","ratioY","rotate","radian","rotateAtStart","rotateAtPoint","AbstractGroup","isEntityGroup","AbstractShape","_isInBBox","clearCacheBBox","calculateBBox","canvasBBox","calculateCanvasBBox","topLeft","topRight","bottomLeft","bottomRight","Math","min","max","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","shadowLeft","shadowRight","shadowTop","shadowBottom","isInShape","isOnlyHitBox","startArrowShape","endArrowShape","vec","inBBox","linear","quadIn","quadOut","quadInOut","cubicIn","cubicOut","cubicInOut","polyIn","custom","pow","exponent","polyOut","polyInOut","pi","PI","halfPi","sinIn","cos","sinOut","sin","sinInOut","tpmt","expIn","expOut","expInOut","circleIn","sqrt","circleOut","circleInOut","b1","b2","b3","b4","b5","b6","b7","b8","b9","b0","bounceIn","bounceOut","bounceInOut","overshoot","backIn","s","backOut","backInOut","tau","elasticIn","a","p","asin","amplitude","period","elasticOut","elasticInOut","EASING_MAP","getEasing","toLowerCase","registerEasing","cache","Map","register","getMethod","r","mergeBBox","bbox1","bbox2","mergeArrowBBox","getExtraFromSegmentWithAngle","segment","lineWidth","prePoint","currentPoint","nextPoint","currentAndPre","currentAndNext","preAndNext","currentAngle","acos","xExtra","yExtra","xAngle","abs","atan2","yAngle","rect","circle","points","xArr","yArr","text","fontSize","lineHeight","font","textAlign","textBaseline","stroke","segments","segmentsWithAngle","params","box","command","arcParams","cx","cy","rx","ry","xRotation","startAngle","endAngle","Number","isNaN","getPathBox","x1","y1","x2","y2","GraphEvent","defaultPrevented","originalEvent","stopPropagation","toString","save","restore","version","multiplyMatrix","b","out","a00","a01","a02","a10","a11","a12","a20","a21","a22","b00","b01","b02","b10","b11","b12","b20","b21","b22","multiplyVec2","invert","det","offScreenCtx","getOffScreenContext","createElement","getContext","SPACES","PATH_COMMAND","RegExp","PATH_VALUES","parsePathString","pathString","paramCounts","c","o","h","l","q","u","z","data","String","replace","catmullRomToBezier","crp","d","iLen","ellipsePath","res","rad","pathToAbsolute","pathArray","pa0","dots","mx","my","start","crz","toUpperCase","pa","ii","jj","slice","pop","kk","l2c","q2c","ax","ay","_13","_23","a2c","angle","large_arc_flag","sweep_flag","recursive","xy","f1","f2","_120","rx2","ry2","toFixed","df","f2old","x2old","y2old","c1","s1","c2","s2","tan","hx","hy","m1","m2","m3","m4","newres","join","split","pathToCurve","path2","p2","bx","by","X","Y","qx","qy","attrs2","pcoms1","pcoms2","pfirst","pcom","processPath","nx","ny","T","Q","fixArc","pp","shift","fixM","path1","a1","a2","seg","seg2","seglen","seg2len","parseFloat","p2s","parsePathArray","base3","p1","p3","p4","bezlen","x3","y3","x4","y4","z2","Tvalues","Cvalues","sum","ct","xbase","ybase","comb","curveDim","x0","y0","tvalues","bounds","b2ac","sqrtb2ac","mt","jlen","intersect","denominator","px","py","px2","py2","isPointInsideBBox","rectPath","w","r1","r2","r0","vb","bezierBBox","p1x","p1y","c1x","c1y","c2x","c2y","p2x","p2y","findDotsAtSegment","t13","t12","t3","n","end","alpha","interHelper","bez1","bez2","justCount","isBBoxIntersect","n1","n2","dots1","dots2","di","di1","dj","dj1","ci","cj","is","intersection","x1m","y1m","x2m","y2m","pj","intr","segment1","segment2","interPathHelper","decasteljau","recurse","middlePoints","reverse","splitSegment","count","leftSegments","map","cmd","splitCurve","temp","fillPath","source","sourceLen","targetLen","segmentsToFill","floor","filled","reduce","isEqual","getMinDiff","del","modify","fillPathByDiff","diffMatrix","sourceSegment","targetSegment","dist","levenshteinDistance","changes","minPos","diff","_splitPoints","former","formerEnd","_getSegmentPoints","formatPath","getTextHeight","lineCount","spaceingY","getLineSpaceing","getTextWidth","context","textArr","subText","measureWidth","measureText","assembleFont","fontFamily","fontWeight","fontStyle","fontVariant","trim","removeFromArray","obj","isBrowser","isParent","isAllowCapture","distance","isNumberEqual","v1","v2","getBBoxByArray","getBBoxRange","piMod","pointAt","pointDistance","cross","pointToLine","vec2","tangentAngle","tCallback","v0","segNum","increaseRate","_t","d1","prev","next","d2","quadraticAt","p0","onet","extrema","derivativeAt","divideQuadratic","xt","yt","controlPoint1","line","controlPoint2","quadraticLength","iterationCount","quadratics","xExtrema","yExtrema","undefined","nearestPoint","interpolationAt","divide","cubicAt","discSqrt","extremas","disc","divideCubic","c3","c12","c23","cubicLength","totalLength","snapLength","cubics","copysign","absv","nearestX","nearestY","relativeX","relativeY","squareA","squareB","ex","ey","rx1","ry1","hypot","xAt","yAt","getPoint","xDim","atan","xs","yDim","ys","relativeVector","relativePoint","ellipse","getAngle","vector","derivativeXAt","derivativeYAt","analyzePoints","from","to","lengthOfSegment","pointAtSegments","startRatio","currentRatio","localRatio","angleAtSegments","distanceAtSegment","minDistance","distance_1","leftTranslate","transMat","leftRotate","rotateMat","leftScale","scaleMat","actions","len","action","angleTo","direct","ang","angleLargeThanPI","direction","regexTags","regexDot","match","tag","charAt","substr","sub","constraint","isLoop","pointList","cp1","cp2","controlPointList","smooth","prevPoint","nextCp0","cp0","cps","hasConstraint","d0","smoothBezier","REGEX_MD","toSymmetry","needProcess","first","preParams","upCmd","symetricT","symetricS","vMag","vRatio","vAngle","isSamePoint","point1","point2","getArcParams","startPoint","arcFlag","sweepFlag","xp","yp","lambda","cxp","cyp","theta","dTheta","center","getSegments","nextParams","startMovePoint","lastStartMovePointIndex","startTangent","endTangent","cp","preSegment","_d","_e","_f","_g","_h","dx1","dy1","dx2","dy2","tolerance","dcmp","onSegment","isInPolygon","isBetween","parseToLines","lines","last","lineIntersectPolygon","isIntersect","E","D0","D1","kross","getLineIntersect","isPolygonsIntersect","points1","points2","box1","box2","isIn","lines1","lines2","isFinite","func","values","Array","isArray","elements","keys","key","_keys","getPrototypeOf","proto","predicate","_predicate","fromIndex","curr","filterValues","tmp","arrPrototype","indexes","previous","str","comparer","keys_1","uniq","has","tmpMap","head","condition","groupToMap","paramscondition_1","row","unique","groups","array","base","round","PRECISION","isInteger","precision","maxItem","minItem","RADIAN","degree","substring","objectProto","Ctor","HTMLDocument","webkitRequestAnimationFrame","mozRequestAnimationFrame","msRequestAnimationFrame","cancelAnimationFrame","handler","webkitCancelAnimationFrame","mozCancelAnimationFrame","msCancelAnimationFrame","wait","immediate","callNow","resolver","memoized","_deepMix","src","level","maxLevel","size","other","valueKeys","otherKeys","identity","object","_mix","src1","src2","src3","defaultValue","keyArr","idx","options","later","leading","throttled","remaining","trailing","cancel","prefix","ctx","memoize","maxWidth","currentText","currentWidth","PLACEHOLDER_WIDTH","leftText","leftWidth","default_1","def","delete","_instanceof","nativeMap","nativeSet","nativePromise","_","Set","Promise","circular","depth","includeNonEnumerable","allParents","allChildren","useBuffer","Buffer","_clone","resolve","reject","then","err","__isArray","__isRegExp","__getRegExpFlags","lastIndex","__isDate","isBuffer","allocUnsafe","copy","Error","create","keyChild","valueChild","entryChild","getOwnPropertyDescriptor","getOwnPropertySymbols","symbols","symbol","descriptor","enumerable","defineProperty","allPropertyNames","getOwnPropertyNames","propertyName","__objToStr","re","flags","global","ignoreCase","multiline","clonePrototype","module","exports","Color","_darker","_brighter","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","color","format","exec","parseInt","rgbn","Rgb","rgba","hsla","NaN","g","rgbConvert","rgb_formatHex","hex","rgb_formatRgb","clampa","clampi","Hsl","hslConvert","hsl","clamph","clampt","hsl2rgb","channels","assign","displayable","formatHex8","formatHsl","brighter","darker","clamp","factory","extend","definition","genericArray","nb","na","basis","v3","hue","gamma","nogamma","exponential","setTime","isNumberArray","ArrayBuffer","isView","DataView","rgbSpline","spline","colors","rgbGamma","rgbBasis","rgbBasisClosed","reA","reB","am","bm","bs","bi","one","zero","valueOf","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","_arr","_n","_s","Symbol","iterator","done","xv","yv","Float64Array","ux","uy","visitPoints","cb","iterations","determination","uY","predict","SSE","SST","sse","sst","midpoint","interpose","xmin","xmax","log","LOG10E","maxIter","iter","found","mp","a0","ols","uX","uXY","uX2","delta","slope","domain","YL","XY","XYL","X2Y","ly","_ols2","exp","rSquared","X2","intercept","median","maxiters","epsilon","loess","bandwidth","_points2","bw","yhat","residuals","robustWeights","fill","i0","i1","edge","W","denom","xk","yk","tricube","xkw","updateInterval","medianResidual","arg","_w","output","cnt","logarithmic","lb","lx","quad","quadratic","X3","X4","n0","X2X2","polynomial","order","coefficients","_o","lhs","rhs","coef","gaussianElimination","uncenter","power","YS","regressionExp","regressionLinear","regressionLoess","regressionLog","regressionPoly","regressionPow","regressionQuad","__spreadArray","pack","ar","BrowserInfo","os","NodeInfo","process","platform","SearchBotDeviceInfo","bot","BotInfo","ReactNativeInfo","SEARCHBOT_OS_REGEX","REQUIRED_VERSION_PARTS","userAgentRules","operatingSystemRules","detect","userAgent","parseUserAgent","navigator","product","matchUserAgent","ua","matched","regex","uaMatch","matchedRule","versionParts","createVersionParts","detectOS","searchBotMatch","equal","opts","cmp","cycles","node","aobj","bobj","seen","stringify","toJSON","JSON","seenIndex","bisect","parameters","maxIterations","fA","fB","mid","fMid","zeros","zerosM","dot","ret","norm2","weightedSum","w1","w2","nelderMead","maxDiff","nonZeroDelta","zeroDelta","minErrorDelta","minTolerance","rho","chi","psi","sigma","N","simplex","fx","updateSimplex","sortOrder","centroid","reflected","contracted","expanded","iteration","history","sortedSimplex","state","worst","shouldReduce","wolfeLineSearch","pk","phi0","phiPrime0","fxprime","phi","phi_old","phiPrime","zoom","a_lo","a_high","phi_lo","conjugateGradient","initial","delta_k","gradientDescent","learnRate","gradientDescentLineSearch","functionCalls","inner","ARRAY_TYPE","Float32Array","random","multiply","fromTranslation","fromRotation","fromScaling","subtract","normalize","transformMat3","mag","cosine","exactEquals","stringOrChar","passedObj","indent","maxLength","replacer","_stringify","currentIndent","reserved","items","keyPart","nextIndent","prettified","string","stringLiteral","parse","self","isNumber","findMin","findMax","findMinMulti","findMaxMulti","inside","LN_2","helper","kernel","getUnifiedMinMax","getUnifiedMinMaxMulti","arrMulti","relaxMin","relaxMax","step","normalizedMinMax","range","buckets","partialArea","partialAreas","accumulator","generatePartialAreas","fullArea","initalValue","bucket","xToBucket","leftBlockCount","rightBlockCount","spilledAreaLeft","spilledAreaRight","weight","startGradPos","gradAccumulator","area","getExpectedValueFromPdf","pdf","expected","getXWithLeftTailArea","getPerplexity","entropy","ln","SensorTabIndex","SensorClassName","SizeSensorId","_len","_key","_sensorPool","sensor","getSensor","unbind","removeSensor","_id","__esModule","_sensors","_constant","Sensors","sensorId","getAttribute","newId","setAttribute","createSensor","removeAttribute","_object","_resizeObserver","ResizeObserver","_debounce","listeners","resizeListener","listener","contentDocument","defaultView","getComputedStyle","position","onload","display","overflow","pointerEvents","newSensor","disconnect","observe","_extendStatics","setPrototypeOf","__proto__","__extends","__","_assign","__rest","propertyIsEnumerable","__awaiter","thisArg","_arguments","P","generator","fulfilled","rejected","__generator","body","label","sent","trys","ops","verb","op","__values","__read","error","__spreadArrays","il","jl","SuppressedError","uncurryThis","toObject","stringSlice","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","captures","namedCaptures","replacement","tailPos","ch","isObject","classof","MATCH","wellKnownSymbol","it","isRegExp","anObject","that","hasIndices","dotAll","unicode","unicodeSets","sticky","hasOwn","isPrototypeOf","regExpFlags","RegExpPrototype","R","$String","argument","$","flattenIntoArray","lengthOfArrayLike","toIntegerOrInfinity","arraySpeciesCreate","flat","depthArg","O","A","addToUnscopables","$hypot","stat","arity","forced","value1","value2","div","aLen","larg","requireObjectCoercible","isCallable","isNullOrUndefined","getRegExpFlags","getSubstitution","IS_PURE","REPLACE","$TypeError","stringIndexOf","searchValue","replaceAll","replaceValue","IS_REG_EXP","searchString","functionalReplace","searchLength","advanceBy","endOfLastMatch","_excluded","_ref","svgRef","title","titleId","xmlns","viewBox","strokeWidth","ref","strokeLinecap","strokeLinejoin","_regeneratorRuntime","Op","desc","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","configurable","writable","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","Context","makeInvokeMethod","tryCatch","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","_invoke","AsyncIterator","PromiseImpl","invoke","record","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","doneResult","delegate","delegateResult","maybeInvokeDelegate","_sent","dispatchException","abrupt","methodName","info","resultName","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iterable","iteratorMethod","displayName","isGeneratorFunction","genFun","ctor","mark","awrap","async","skipTempReset","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","asyncGeneratorStep","gen","_throw","_asyncToGenerator","propList","ariaPrefix","dataPrefix","pickAttrs","mergedConfig","ariaOnly","aria","getBody","xhr","responseText","response","upload","option","XMLHttpRequest","onProgress","onprogress","total","percent","loaded","formData","FormData","append","file","Blob","filename","onerror","onError","status","msg","url","getError","onSuccess","open","withCredentials","headers","setRequestHeader","send","abort","uid","acceptedFiles","acceptedFilesArray","fileName","mimeType","baseMimeType","some","validType","lowerFileName","lowerType","affixList","affix","endsWith","files","isAccepted","_traverseFileTree","isFile","fullPath","webkitRelativePath","defineProperties","isDirectory","dirReader","createReader","fileList","sequence","readEntries","entries","entryList","loopFiles","entryItem","webkitGetAsEntry","AjaxUploader","_Component","reqs","fileInput","_isMounted","onChange","_this$props","accept","directory","uploadFiles","onClick","_this$props2","focus","querySelector","blur","click","onKeyDown","onFileDrop","multiple","dataTransfer","_file","originFiles","postFiles","processFile","all","onBatchStart","origin","parsedFile","post","_ref2","_callee","beforeUpload","transformedFile","mergedAction","mergedData","parsedData","mergedParsedFile","_context","File","_x","_x2","saveFileInput","_ref3","_this2","_this$props3","onStart","customRequest","request","requestOption","setState","_classNames","_this$props4","Tag","component","prefixCls","disabled","openFileDialogOnClick","onMouseEnter","onMouseLeave","otherProps","cls","dirProps","webkitdirectory","onDrop","onDragOver","tabIndex","role","Component","empty","Upload","uploader","saveUploader","defaultProps","multipart","DisabledContext","DisabledContextProvider","originDisabled","Provider","createContext","items_per_page","jump_to","jump_to_confirm","page","prev_page","next_page","prev_5","next_5","prev_3","next_3","page_size","locale","today","backToToday","ok","month","year","timeSelect","dateSelect","weekSelect","monthSelect","yearSelect","decadeSelect","yearFormat","dateFormat","dayFormat","dateTimeFormat","monthBeforeYear","previousMonth","nextMonth","previousYear","nextYear","previousDecade","nextDecade","previousCentury","nextCentury","placeholder","rangePlaceholder","lang","yearPlaceholder","quarterPlaceholder","monthPlaceholder","weekPlaceholder","rangeYearPlaceholder","rangeQuarterPlaceholder","rangeMonthPlaceholder","rangeWeekPlaceholder","timePickerLocale","typeTemplate","Pagination","DatePicker","TimePicker","Calendar","Table","filterTitle","filterConfirm","filterReset","filterEmptyText","filterCheckall","filterSearchPlaceholder","emptyText","selectAll","selectInvert","selectNone","selectionAll","sortTitle","expand","collapse","triggerDesc","triggerAsc","cancelSort","Tour","Next","Previous","Finish","Modal","okText","cancelText","justOkText","Popconfirm","Transfer","titles","searchPlaceholder","itemUnit","itemsUnit","selectCurrent","removeCurrent","removeAll","uploading","removeFile","uploadError","previewFile","downloadFile","Empty","description","Icon","icon","Text","edit","copied","PageHeader","back","Form","optional","defaultValidateMessages","default","required","enum","whitespace","date","invalid","types","number","boolean","integer","float","regexp","email","pattern","mismatch","Image","preview","QRCode","expired","refresh","ColorPicker","presetEmpty","componentName","defaultLocale","fullLocale","getLocale","localeFromContext","localeCode","exist","primaryColor","secondaryColor","AntdIcon","useForceUpdate","_React$useReducer","createRoot","offsetParent","_getBBox","_element$getBoundingC","_width","_height","genWaveStyle","token","componentCls","colorPrimary","background","boxSizing","boxShadow","transition","motionEaseOutCirc","motionEaseInOut","genComponentStyleHook","fullClone","reactRender","render","unmountComponentAtNode","toggleWarning","skip","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","usingClientEntryPoint","MARK","root","modernRender","legacyRender","modernUnmount","_modernUnmount","_container$MARK","unmount","legacyUnmount","_unmount","_callee2","_context2","isValidWaveColor","isNotGrey","TARGET_CLS","validateNum","WaveEffect","divRef","_React$useState","_React$useState2","setWaveColor","_React$useState3","_React$useState4","borderRadius","setBorderRadius","_React$useState5","_React$useState6","setLeft","_React$useState7","_React$useState8","setTop","_React$useState9","_React$useState10","setWidth","_React$useState11","_React$useState12","setHeight","_React$useState13","_React$useState14","enabled","setEnabled","waveStyle","radius","syncPos","nodeStyle","_getComputedStyle","borderTopColor","borderColor","backgroundColor","getTargetWaveColor","isStatic","borderLeftWidth","borderTopWidth","offsetLeft","offsetTop","offsetWidth","offsetHeight","borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius","resizeObserver","raf","isSmallComponent","classList","contains","motionAppear","motionName","motionDeadline","onAppearEnd","deadline","holder","parentElement","motionClassName","checked","insertBefore","firstChild","getPrefixCls","useContext","containerRef","useRef","_useStyle","hashId","showWave","nodeRef","wave","_useToken","useToken","_useToken2","useEvent","targetNode","showEffect","rafId","useWave","nodeType","isVisible","SpaceCompactItemContext","useCompactItemContext","compactItemContext","compactItemClassnames","compactDirection","isFirstItem","isLastItem","separator","compactSize","NoCompactStyle","IconWrapper","forwardRef","iconWrapperCls","InnerLoadingIcon","iconClassName","mergedIconCls","getCollapsedWidth","getRealWidth","scrollWidth","loading","existIcon","removeOnLeave","onAppearStart","onAppearActive","onEnterStart","onEnterActive","onLeaveStart","onLeaveActive","motionCls","motionStyle","GroupSizeContext","_React$useContext","customizePrefixCls","others","sizeCls","classes","rxTwoCNChar","isTwoCNChar","isUnBorderedButtonType","spaceChildren","needInserted","isPrevChildPure","childList","isCurrentChildPure","lastChild","SPACE","splitCNCharsBySpace","genCompactItemStyle","compactCls","parentCls","focusElCls","childCombinator","borderElCls","hoverEffects","Boolean","marginInlineEnd","compactItemBorder","borderStartEndRadius","borderEndEndRadius","borderStartStartRadius","borderEndStartRadius","compactItemBorderRadius","genCompactItemVerticalStyle","marginBottom","compactItemVerticalBorder","genButtonBorderStyle","buttonTypeCls","borderInlineEndColor","borderInlineStartColor","_componentCls","colorPrimaryHover","colorErrorHover","marginInlineStart","genSharedButtonStyle","iconCls","buttonFontWeight","outline","whiteSpace","backgroundImage","border","lineType","motionDurationMid","userSelect","touchAction","colorText","marginXS","flex","insetInlineStart","content","genHoverActiveButtonStyle","btnCls","hoverStyle","activeStyle","genCircleButtonStyle","minWidth","controlHeight","paddingInlineStart","paddingInlineEnd","genRoundButtonStyle","genGhostButtonStyle","textColor","textColorDisabled","borderColorDisabled","genSolidDisabledButtonStyle","colorBorder","colorTextDisabled","colorBgContainerDisabled","genDisabledStyle","genSolidButtonStyle","genPureDisabledButtonStyle","genDefaultButtonStyle","colorBgContainer","controlOutlineWidth","controlTmpOutline","colorPrimaryActive","colorError","colorErrorBorderHover","colorErrorActive","genTypeButtonStyle","_ref6","colorTextLightSolid","controlOutline","colorErrorOutline","genPrimaryButtonStyle","borderStyle","genDashedButtonStyle","colorLink","colorLinkHover","colorLinkActive","genLinkButtonStyle","colorBgTextHover","colorBgTextActive","colorErrorBg","genTextButtonStyle","genSizeButtonStyle","_$concat2","_$concat$concat","sizePrefixCls","buttonPaddingHorizontal","paddingVertical","paddingHorizontal","iconOnlyCls","padding","buttonIconOnlyFontSize","opacityLoading","motionDurationSlow","genSizeBaseButtonStyle","genSizeSmallButtonStyle","smallToken","controlHeightSM","paddingXS","borderRadiusSM","fontSizeLG","genSizeLargeButtonStyle","largeToken","controlHeightLG","borderRadiusLG","genBlockButtonStyle","paddingContentHorizontal","buttonToken","colorOutlineDefault","convertLegacyProps","danger","InternalButton","_props$loading","_props$type","_props$shape","customizeSize","styles","customDisabled","rootClassName","_props$ghost","ghost","_props$block","block","_props$htmlType","htmlType","customClassNames","classNames","_props$style","customStyle","rest","_useContext","autoInsertSpaceInButton","_useStyle2","wrapSSR","mergedDisabled","groupSize","loadingOrDelay","useMemo","getLoadingConfig","_useState","useState","_useState2","innerLoading","setLoading","_useState3","_useState4","hasTwoCNChar","setHasTwoCNChar","internalRef","createRef","buttonRef","Children","useEffect","delayTimer","buttonText","textContent","handleClick","autoInsertSpace","_useCompactItemContex","sizeClassNameMap","large","small","middle","sizeFullName","ctxSize","iconType","linkButtonRestProps","fullStyle","iconClasses","iconStyle","iconNode","kids","href","buttonNode","Button","Group","__ANT_BUTTON","file2Obj","lastModified","lastModifiedDate","originFileObj","updateFileList","nextFileList","fileIndex","findIndex","getFileItem","matchKey","isImageFileType","isImageUrl","thumbUrl","extension","filenameWithoutSuffix","extname","MEASURE_SIZE","previewImage","cssText","img","drawWidth","drawHeight","drawImage","dataURL","toDataURL","URL","revokeObjectURL","crossOrigin","startsWith","reader","FileReader","readAsDataURL","_reader","createObjectURL","strokeColor","trailColor","trailWidth","gapPosition","useTransitionDuration","pathsRef","prevTimeStamp","updated","pathStyle","transitionDuration","uuid","isBrowserClient","canUseDom","innerId","setInnerId","retId","stripPercentToNumber","mergedValue","VIEW_BOX_SIZE","getCircleStyle","perimeter","perimeterWithoutGap","offset","rotateDeg","gapDegree","stepSpace","offsetDeg","positionDeg","bottom","strokeDashoffset","strokeDasharray","transformOrigin","fillOpacity","stackPtg","_defaultProps$props","steps","_defaultProps$props$g","restProps","mergedId","useId","gradientId","space","stepCount","circleStyle","percentList","strokeColorList","gradient","stopColor","stepPtg","circleStyleForStack","elem","getStepStokeList","ptg","EMPTY_LIST","cached","ensureSize","fresh","outer","outerStyle","visibility","widthContained","widthScroll","clientWidth","getScrollBarSize","UNIQUE_ID","useScrollLocker","lock","mergedLock","useLayoutEffect","scrollbarSize","getTargetScrollBarSize","isOverflow","scrollHeight","innerHeight","documentElement","clientHeight","innerWidth","inline","getPortalContainer","getContainer","Portal","autoLock","_props$autoDestroy","debug","autoDestroy","shouldRender","setShouldRender","mergedRender","innerContainer","setInnerContainer","customizeContainer","_useDom","ele","appendedRef","queueCreate","queue","setQueue","mergedQueueCreate","appendFn","cleanup","_ele$parentElement","useDom","_useDom2","defaultContainer","mergedContainer","childRef","mergedRef","nextInline","renderInline","reffedChildren","createPortal","MapShim","getIndex","class_1","__entries__","global$1","Function","requestAnimationFrame$1","transitionKeys","mutationObserverSupported","MutationObserver","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","leadingCall","trailingCall","lastCallTime","resolvePending","proxy","timeoutCallback","throttle","addObserver","observer","connect_","removeObserver","observers","disconnect_","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","attributes","characterData","subtree","isReflowProperty","getInstance","instance_","defineConfigurable","getWindowOf","ownerDocument","emptyRect","createRectInit","toFloat","getBordersSize","positions","getHTMLElementContentRect","paddings","positions_1","getPaddings","horizPad","vertPad","isDocumentElement","vertScrollbar","horizScrollbar","isSVGGraphicsElement","SVGGraphicsElement","SVGElement","getContentRect","getSVGContentRect","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","isActive","broadcastRect","ResizeObserverEntry","rectInit","contentRect","Constr","DOMRectReadOnly","createReadOnlyRect","ResizeObserverSPI","controller","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","observations","unobserve","clearActive","observation","WeakMap","elementListeners","entities","entity","_elementListeners$get","DomWrapper","_React$Component","CollectionContext","SingleObserver","elementRef","wrapperRef","onCollectionResize","isRenderProps","mergedChildren","sizeRef","canRef","originRef","getDom","findDOMNode","propsRef","onInternalResize","_propsRef$current","onResize","_target$getBoundingCl","fixedWidth","fixedHeight","mergedOffsetWidth","mergedOffsetHeight","sizeInfo","currentElement","RefResizeObserver","Collection","onBatchResize","resizeIdRef","resizeInfosRef","currentId","useOriginId","reactNativeId","nextId","agent","vendor","opera","isPointsEq","getMotion","motion","transitionName","getWin","collectScroller","scrollerList","scrollStyle","_getWin$getComputedSt","overflowX","overflowY","toNum","num","getPxValue","getVisibleArea","initArea","visibleArea","HTMLBodyElement","_getWin$getComputedSt2","overflowClipMargin","borderBottomWidth","borderRightWidth","eleRect","eleOutHeight","eleInnerHeight","eleOutWidth","eleInnerWidth","borderTopNum","borderBottomNum","borderLeftNum","borderRightNum","scaleX","scaleY","eleScrollWidth","eleScrollHeight","scaledBorderTopWidth","scaledBorderBottomWidth","scaledBorderLeftWidth","scaledBorderRightWidth","clipMarginWidth","clipMarginHeight","clipNum","eleLeft","eleTop","eleRight","eleBottom","getUnitOffset","offsetStr","cells","getNumberOffset","splitPoints","getAlignPoint","topBottom","leftRight","reversePoints","reverseMap","Arrow","align","arrow","arrowPos","_arrowPos$x","_arrowPos$y","arrowRef","alignStyle","autoArrow","popupPoints","targetPoints","popupTB","popupLR","targetTB","targetLR","Mask","mask","Popup","popup","_onVisibleChanged","onVisibleChanged","keepDom","maskMotion","forceRender","getPopupContainer","portal","onPointerEnter","ready","offsetR","offsetB","onAlign","onPrepare","stretch","targetWidth","targetHeight","childNode","isNodeVisible","getPopupContainerNeedParams","setShow","AUTO","offsetStyle","_experimental","dynamicInset","alignRight","alignBottom","miscStyle","minHeight","resizeObserverRef","motionEnter","motionLeave","leavedClassName","onAppearPrepare","onEnterPrepare","nextVisible","_motion$onVisibleChan","motionRef","TriggerWrapper","getTriggerDOMNode","canUseRef","setRef","PortalComponent","Trigger","_props$prefixCls","_props$action","showAction","hideAction","popupVisible","defaultPopupVisible","onPopupVisibleChange","afterPopupVisibleChange","mouseEnterDelay","_props$mouseLeaveDela","mouseLeaveDelay","focusDelay","blurDelay","_props$maskClosable","maskClosable","destroyPopupOnHide","popupClassName","popupStyle","popupPlacement","_props$builtinPlaceme","builtinPlacements","popupAlign","getPopupClassNameFromAlign","alignPoint","onPopupClick","onPopupAlign","popupMotion","popupTransitionName","popupAnimation","maskTransitionName","maskAnimation","mergedAutoDestroy","mobile","setMobile","isMobile","subPopupElements","parentContext","registerSubPopup","subPopupEle","popupEle","setPopupEle","setPopupRef","targetEle","setTargetEle","setTargetRef","only","originChildProps","cloneProps","inPopupOrChild","_getShadowRoot","_getShadowRoot2","childDOM","host","mergePopupMotion","mergeMaskMotion","internalOpen","setInternalOpen","mergedOpen","setMergedOpen","nextOpen","openRef","internalTriggerOpen","flushSync","delayRef","clearDelay","triggerOpen","inMotion","setInMotion","firstMount","motionPrepareResolve","setMotionPrepareResolve","mousePos","setMousePos","setMousePosByEvent","_useAlign","placement","arrowX","arrowY","offsetInfo","setOffsetInfo","alignCountRef","prevFlipRef","targetRect","getIntersectionVisibleArea","popupRect","popupWidth","popupHeight","visibleL","visibleT","visibleR","visibleB","syncNextPopupPosition","nextPopupY","nextOffsetY","nextPopupBottom","nextPopupX","nextOffsetX","nextPopupRight","popupElement","originLeft","originTop","originRight","originBottom","doc","win","placementInfo","_win$getComputedStyle","_doc$documentElement","scrollTop","scrollLeft","visibleRegion","scrollRegion","htmlRegion","VISIBLE","VISIBLE_FIRST","isVisibleFirst","scrollRegionArea","visibleRegionArea","adjustCheckVisibleArea","popupMirrorRect","_scaleX","_scaleY","targetOffset","_getNumberOffset","_getNumberOffset2","popupOffsetX","popupOffsetY","_getNumberOffset3","_getNumberOffset4","targetOffsetX","targetOffsetY","_ref4","popupPoint","targetAlignPoint","popupAlignPoint","nextAlignInfo","originIntersectionVisibleArea","originIntersectionRecommendArea","targetAlignPointTL","popupAlignPointTL","targetAlignPointBR","popupAlignPointBR","adjustX","adjustY","shiftX","shiftY","supportAdjust","needAdjustY","sameTB","bt","tmpNextOffsetY","newVisibleArea","newVisibleRecommendArea","tb","_tmpNextOffsetY","_newVisibleArea","_newVisibleRecommendArea","needAdjustX","sameLR","rl","tmpNextOffsetX","_newVisibleArea2","_newVisibleRecommendArea2","lr","_tmpNextOffsetX","_newVisibleArea3","_newVisibleRecommendArea3","numShiftX","numShiftY","popupLeft","popupRight","popupTop","popupBottom","targetLeft","targetRight","targetTop","targetBottom","nextArrowX","nextArrowY","offsetX4Right","offsetY4Bottom","resetReady","ori","useAlign","_useAlign2","alignInfo","_useAction","mergedShowAction","mergedHideAction","showActionSet","hideActionSet","useAction","_useAction2","showActions","hideActions","clickToShow","clickToHide","triggerAlign","onScroll","notifyScroll","targetScrollList","popupScrollList","mergedList","scroller","passive","useWatch","alignedClassName","baseClassName","isAlignPoint","placements","_builtinPlacements$pl","getAlignPopupClassName","forceAlign","_React$useState15","_React$useState16","setTargetWidth","_React$useState17","_React$useState18","setTargetHeight","wrapperAction","preEvent","_originChildProps$eve","_originChildProps$onC","_len2","_key2","lockRef","genClickEvents","clickInside","_genClickEvents","_genClickEvents2","onWinMouseDown","onWinClick","_genClickEvents3","_genClickEvents4","onShadowMouseDown","onShadowClick","targetShadowRoot","useWinClick","onPopupMouseEnter","onPopupMouseLeave","hoverToShow","hoverToHide","onMouseMove","_originChildProps$onM","onContextMenu","_originChildProps$onC2","_len3","_key3","mergedChildrenProps","passedProps","_mergedChildrenProps$","_len4","_key4","triggerNode","innerArrow","autoAdjustOverflowTopBottom","autoAdjustOverflowLeftRight","leftTop","rightTop","rightBottom","leftBottom","overlayInnerStyle","Tooltip","overlayClassName","_props$trigger","trigger","_props$mouseEnterDela","overlayStyle","onVisibleChange","afterVisibleChange","_props$placement","_props$align","_props$destroyTooltip","destroyTooltipOnHide","defaultVisible","getTooltipContainer","overlay","arrowContent","_props$showArrow","showArrow","triggerRef","useImperativeHandle","extraProps","roundedArrow","innerRadius","outerRadius","bgColor","unitWidth","fy","shadowWidth","polygonOffset","clipPath","_multi_value_","insetInline","margin","_skip_check_","MAX_VERTICAL_CONTENT_RADIUS","getArrowOffset","maxVerticalContentRadius","contentRadius","dropdownArrowOffset","dropdownArrowOffsetVertical","limitVerticalRadius","isInject","valid","code","getArrowStyle","_isInject","_isInject2","_isInject3","_isInject4","sizePopupArrow","borderRadiusXS","borderRadiusOuter","boxShadowPopoverArrow","colorBg","_options$contentRadiu","_options$arrowDistanc","arrowDistance","_options$arrowPlaceme","arrowPlacement","_getArrowOffset","PlacementAlignMap","ArrowCenterPlacementAlignMap","DisableAutoArrowList","getPlacements","config","arrowWidth","autoAdjustOverflow","arrowPointAtCenter","visibleFirst","halfArrowWidth","placementMap","template","arrowOffset","baseOverflow","mergedOverflow","getOverflowOptions","_useInternalToken","_useInternalToken2","theme","initMotion","inKeyframes","outKeyframes","sameLevelPrefix","animationDuration","animationFillMode","initMotionCommon","animationPlayState","initMotionCommonLeave","animationName","zoomIn","zoomOut","zoomBigIn","zoomBigOut","zoomUpIn","zoomUpOut","zoomMotion","initZoomMotion","antCls","_zoomMotion$motionNam","motionDurationFast","animationTimingFunction","motionEaseInOutCirc","PresetColors","genPresetColor","genCss","colorKey","lightColor","lightBorderColor","darkColor","genTooltipStyle","_Object$assign","tooltipMaxWidth","tooltipColor","tooltipBg","tooltipBorderRadius","zIndexPopup","boxShadowSecondary","paddingSM","tooltipRadiusOuter","textDecoration","wordWrap","injectStyle","useOriginHook","colorBgDefault","TooltipToken","zIndexPopupBase","colorBgSpotlight","resetStyle","inverseColors","parseColor","isInternalColor","isPresetColor","arrowStyle","colorInfo","arrowContentStyle","formattedOverlayInnerStyle","getDisabledCompatibleChildren","elementType","__ANT_SWITCH","__ANT_RADIO","_splitObject","picked","omitted","splitObject","spanStyle","buttonStyle","openClassName","afterOpenChange","_props$arrow","_props$arrowPointAtCe","_props$autoAdjustOver","mergedShowArrow","getContextPopupContainer","tooltipRef","forcePopupAlign","_useMergedState","useMergedState","defaultOpen","_useMergedState2","setOpen","noTitle","tooltipPlacements","mergedArrowPointAtCenter","pointAtCenter","marginXXS","memoOverlay","memoOverlayWrapper","rootPrefixCls","injectFromPopover","tempOpen","childProps","childCls","customOverlayClassName","vis","onOpenChange","_InternalPanelDoNotUseOrYouWillBeFired","validProgress","progress","getSuccessPercent","success","successPercent","getPercentage","realSuccessPercent","getSize","extra","_size","_size$","_size$2","_strokeWidth","_size2","_size2$","_size2$2","_ref5","_props$trailColor","_props$strokeLinecap","_props$width","originWidth","_props$size","_getSize","_getSize2","getMinPercent","realGapDegree","gapPos","isGradient","_ref3$success","getStrokeColor","wrapperClassName","circleContent","handleGradient","directionConfig","gradients","tempArr","_strokeColor$from","_strokeColor$to","_strokeColor$directio","sortedGradients","formattedKey","backgroundProps","trailStyle","percentStyle","successPercentStyle","_props$percent","_props$strokeWidth","styledSteps","genAntProgressActive","isRtl","genBaseStyle","_$concat4","_$concat5","progressCls","iconPrefixCls","verticalAlign","progressRemainingColor","progressLineRadius","insetBlockStart","colorSuccess","progressInfoTextColor","wordBreak","inset","progressActiveMotionDuration","motionEaseOutQuint","animationIterationCount","genCircleStyle","_progressCls","fontSizeSM","genStepStyle","flexDirection","alignItems","flexShrink","progressStepMinWidth","progressStepMarginInlineEnd","genSmallLine","progressToken","progressDefaultColor","colorFillSecondary","ProgressStatuses","Progress","_props$showInfo","showInfo","percentNumber","progressStatus","progressStyle","progressInfo","isLineType","strokeColorNotArray","strokeColorNotGradient","classString","ListItem","listType","progressProps","iconRender","actionIconRender","itemRender","isImgUrl","showPreviewIcon","showRemoveIcon","showDownloadIcon","customPreviewIcon","previewIcon","customRemoveIcon","removeIcon","customDownloadIcon","downloadIcon","onPreview","onDownload","onClose","mergedStatus","setMergedStatus","showProgress","setShowProgress","uploadingClassName","thumbnail","alt","aClassName","rel","listItemClassName","linkProps","downloadOrDelete","picture","listItemNameClass","pictureCardActions","dom","loadingProgress","message","statusText","download","InternalUploadList","_props$listType","_props$previewFile","onRemove","_props$isImageUrl","_props$items","_props$showPreviewIco","_props$showRemoveIcon","_props$showDownloadIc","_props$progress","appendAction","_props$appendActionVi","appendActionVisible","forceUpdate","setMotionAppear","previewDataUrl","onInternalPreview","onInternalDownload","onInternalClose","internalIconRender","isLoading","fileIcon","customIcon","btnProps","btnIcon","handlePreview","handleDownload","listClassNames","motionKeyList","animationDirection","motionConfig","listItemMotion","onEnterEnd","onLeaveEnd","oriProps","colorFillAlter","uploadThumbnailSize","colorTextHeading","colorTextDescription","_actionsCls","_itemCls","_actionsCls2","_$concat","itemCls","actionsCls","actionCls","listItemHeightSM","marginTop","controlItemBgHover","actionsColor","uploadProgressOffset","fadeIn","fadeOut","initFadeMotion","sameLevel","uploadAnimateInlineIn","uploadAnimateInlineOut","inlineCls","genPictureStyle","_$concat$con","_$concat3","listCls","fontSizeHeading2","primary","genPictureCardStyle","_$concat$concat2","_$concat6","_$concat$concat$conca2","_Object$assign2","uploadPictureCardSize","uploadPicCardSize","justifyContent","marginBlock","marginInline","colorBgMask","svg","setAlpha","toRgbString","objectFit","marginXL","fontSizeHeading3","uploadToken","adopt","LIST_IGNORE","InternalUpload","defaultFileList","_props$showUploadList","showUploadList","propLocale","maxCount","_props$data","_props$multiple","_props$accept","_props$supportServerR","supportServerRender","postState","list","mergedFileList","setMergedFileList","dragState","setDragState","timestamp","isFrozen","onInternalChange","changedFileList","cloneList","exceedMaxCount","changeInfo","batchFileInfoList","filteredFileInfoList","objectFileList","newFileList","fileObj","triggerFileObj","targetItem","handleRemove","currentFile","removedFileList","removed","removeFileItem","ctxUpload","rcUploadProps","fileListArgs","transformFile","_useLocale","contextLocale","renderUploadList","buttonVisible","wrapperCls","mergedStyle","_classNames2","dragCls","onDragLeave","uploadButtonStyle","uploadButtonCls","uploadButton","Dragger","runtimeLocale","localeList","generateLocale","merged","getConfirmLocale","_props$locale","_ANT_MARK__","clearLocale","newLocale","cloneLocale","changeConfirmLocale","getMemoizedContextValue","dynamicStyleMark","registerTheme","globalPrefixCls","variables","formatColor","updater","fillColor","colorVal","baseColor","colorPalettes","primaryColors","lighten","tint","getAlpha","primaryActiveColor","darken","successColor","warningColor","errorColor","infoColor","cssList","getStyle","componentDisabled","componentSize","SizeContext","MotionWrapper","needWrapMotionProviderRef","globalIconPrefixCls","globalTheme","csp","nonce","PASSED_PROPS","getGlobalPrefixCls","getGlobalIconPrefixCls","globalConfig","suffixCls","getIconPrefixCls","getRootPrefixCls","getTheme","ProviderChildren","customCsp","alert","anchor","form","virtual","dropdownMatchSelectWidth","popupMatchSelectWidth","popupOverflow","legacyLocale","customIconPrefixCls","segmented","statistic","spin","calendar","carousel","cascader","typography","checkbox","descriptions","divider","drawer","skeleton","image","layout","mentions","modal","slider","breadcrumb","menu","pagination","input","badge","radio","rate","SWITCH","switch","transfer","avatar","table","card","tabs","timePicker","notification","tree","colorPicker","datePicker","mergedPrefixCls","shouldWrapSSR","mergedTheme","parentTheme","themeConfig","parentThemeConfig","inherit","mergedComponents","components","prevTheme","nextTheme","useTheme","baseConfig","propName","propValue","memoedConfig","prevConfig","currentConfig","prevKeys","currentKeys","memoIconContextValue","validateMessages","memoTheme","algorithm","themeObj","parsedComponents","componentToken","parsedToken","ConfigProvider","antLocale","ConfigContext","isLegacyTheme","useConfig","Notify","_props$duration","eventKey","closable","_props$closeIcon","closeIcon","divProps","onNoticeClose","times","hovering","setHovering","noticePrefixCls","keyCode","KeyCode","ENTER","Notifications","onAllRemoved","configList","setConfigList","_config$onClose","_list$index","innerConfig","close","setPlacements","nextPlacements","_config$placement","emptyRef","placementList","placementMotion","originPlacements","onAllNoticeRemoved","configClassName","configStyle","Notice","defaultGetContainer","uniqueKey","useNotification","rootConfig","_rootConfig$getContai","shareConfig","setContainer","notificationsRef","contextHolder","taskQueue","setTaskQueue","api","objList","mergeConfig","task","oriQueue","genMessageStyle","_noticeStyle","colorWarning","contentPadding","contentBg","noticeCls","messageMoveIn","messageMoveOut","maxHeight","noticeStyle","span","combinedToken","colorBgElevated","clientOnly","TypeIcon","warning","PureContent","staticPrefixCls","wrapPromiseFn","openFn","closeFn","closePromise","promise","Holder","staticGetContainer","rtl","mergedCloseIcon","_useRcNotification","_useRcNotification2","keyIndex","useInternalMessage","messageConfig","holderRef","wrapAPI","fakeResult","_holderRef$current","originOpen","_onClose","restConfig","mergedKey","jointContent","mergedDuration","mergedOnClose","act","defaultGlobalConfig","GlobalHolder","initializeMessageConfig","_getGlobalContext","_defaultGlobalConfig","globalGetContainer","getGlobalContext","setMessageConfig","_useInternalMessage","_useInternalMessage2","rootIconPrefixCls","sync","instance","flushNotice","holderFragment","createDocumentFragment","newMessage","fragment","skipped","setCloseFn","_message$instance","baseStaticMethods","useMessage","staticMethods","typeOpen","shapeCls","sizeStyle","skeletonClsLoading","backgroundPosition","genSkeletonElementCommonSize","genSkeletonElementAvatarSize","genSkeletonElementInputSize","genSkeletonElementImageSize","genSkeletonElementButtonShape","buttonCls","skeletonButtonCls","genSkeletonElementButtonSize","skeletonAvatarCls","skeletonTitleCls","skeletonParagraphCls","skeletonInputCls","skeletonImageCls","gradientFromColor","marginSM","titleHeight","blockRadius","paragraphLiHeight","controlHeightXS","paragraphMarginTop","marginBlockStart","listStyle","genSkeletonElementButton","genSkeletonElementAvatar","genSkeletonElementInput","imageSizeBase","genSkeletonElementImage","skeletonLoadingBackground","backgroundSize","skeletonLoadingMotionDuration","genSkeletonColor","skeletonToken","gradientToColor","colorFillContent","colorFill","colorGradientEnd","marginLG","deprecatedTokens","active","getWidth","_props$rows","rows","rowList","getComponentProps","Skeleton","_props$avatar","_props$title","_props$paragraph","paragraph","avatarNode","contentNode","hasAvatar","hasTitle","hasParagraph","avatarProps","getAvatarBasicProps","$title","paragraphNode","titleProps","getTitleBasicProps","paragraphProps","basicProps","getParagraphBasicProps","Avatar","Input","Node","isThenable","thing","buttonProps","autoFocus","emitEvent","isSilent","quitOnNullishReturnValue","actionFn","clickedRef","timeoutId","returnValueOfOnOk","handlePromiseOnOk","getMotionName","getScroll","shouldUpdate","sentinelStyle","Panel","ariaId","footer","bodyStyle","bodyProps","modalRender","onMouseDown","onMouseUp","sentinelStartRef","sentinelEndRef","_sentinelStartRef$cur","changeActive","activeElement","footerNode","headerNode","closer","contentStyle","MemoChildren","Content","destroyOnClose","mousePosition","dialogRef","setTransformOrigin","elementOffset","pos","parentWindow","maskProps","Dialog","_props$visible","_props$keyboard","keyboard","_props$focusTriggerAf","focusTriggerAfterClose","wrapStyle","wrapClassName","wrapProps","afterClose","_props$closable","_props$mask","maskStyle","lastOutSideActiveElementRef","contentRef","animatedVisible","setAnimatedVisible","contentClickRef","contentTimeoutRef","onWrapperClick","ESC","TAB","shiftKey","newVisible","_contentRef$current","preventScroll","DialogWrap","_props$destroyOnClose","_afterClose","flexGapSupported","canUseDocElement","HOOK_MARK","warningFunc","getFieldValue","getFieldsValue","getFieldError","getFieldWarning","getFieldsError","isFieldsTouched","isFieldTouched","isFieldValidating","isFieldsValidating","resetFields","setFields","setFieldValue","setFieldsValue","validateFields","submit","getInternalHooks","dispatch","initEntityValue","registerField","useSubscribe","setInitialValues","destroyForm","setCallbacks","registerWatch","getFields","setValidateMessages","setPreserve","getInitialValue","_extends","_getPrototypeOf","_setPrototypeOf","_construct","Parent","Class","Reflect","construct","sham","Proxy","_isNativeReflectConstruct","_wrapNativeSuper","_cache","Wrapper","formatRegExp","convertFieldsError","errors","fields","field","isEmptyValue","isNativeStringType","asyncSerialArray","arrLength","original","AsyncValidationError","_Error","subClass","superClass","asyncMap","objArr","_pending","flattenArr","flattenObjArr","firstFields","objArrKeys","objArrLength","results","pending","asyncParallelArray","complementError","rule","oe","fieldValue","fullFields","getValue","fullField","deepMerge","urlReg","required$1","messages","pattern$2","getMonth","getYear","word","includeBoundaries","v4","v6seg","v6","v46Exact","v4exact","v6exact","ip","exact","ipv4","ipv6","getUrlRegex","ENUM$1","rules","ruleType","validators","dateObject","any","newMessages","cloned","Schema","_messages","_proto","validate","source_","oc","messages$1","series","validator","getValidationMethod","getType","errorFields","doIt","deep","defaultField","addFullField","schema","errorList","suppressWarning","filledErrors","fieldsSchema","paredFieldsSchema","fieldSchema","fieldSchemaList","errs","finalErrors","asyncValidator","console","suppressValidatorError","_errors","messageIndex","AsyncValidator","replaceMessage","kv","CODE_LOGIC_ERROR","validateRule","_x3","_x4","_x5","_validateRule","messageVariables","cloneRule","originValidator","subRuleField","subResults","fillVariableResult","ruleIndex","mergedMessage","subValue","validateRules","namePath","validateFirst","summaryPromise","filledRules","currentRule","originValidatorFunc","hasPromise","catch","warningOnly","i2","_x6","_x7","rulePromises","_x9","_finishOnFirstFailed","finishOnFirstFailed","_x8","_finishOnAllFailed","finishOnAllFailed","_callee3","_context3","errorsList","_callee4","_context4","ruleError","getNamePath","cloneByNamePathList","store","namePathList","newStore","containsNamePath","matchNamePath","changedNamePath","every","nameUnit","defaultGetValueFromEvent","valuePropName","moveIndex","toIndex","EMPTY_ERRORS","requireUpdate","prevValue","nextValue","Field","resetCount","cancelRegisterFunc","mounted","touched","dirty","validatePromise","prevValidating","warnings","cancelRegister","preserve","isListField","_fieldContext$prefixN","fieldContext","prefixName","getRules","_this$props3$rules","metaCache","triggerMetaEvent","onMetaChange","meta","getMeta","onStoreChange","prevStore","_this$props4$dependen","dependencies","onReset","curValue","namePathMatch","reRender","validating","dependency","relatedFields","currentValue","triggerName","_ref2$validateOnly","validateOnly","rootPromise","_this$props5","_this$props5$validate","filteredRules","validateTrigger","ruleErrors","_ruleErrors$forEach","nextErrors","nextWarnings","_ref3$errors","isFieldDirty","initialValue","getErrors","getWarnings","isList","isPreserve","validated","getOnlyChild","getControlled","isFunction","_this$props6","getValueFromEvent","getValueProps","mergedValidateTrigger","mergedGetValueProps","originTriggerFunc","control","newValue","originTrigger","_this$props7","returnChildNode","_this$getOnlyChild","contextType","FieldContext","listContext","wrapperListContext","keyManager","parentPrefixName","getKey","pathName","_ref3$value","getNewValue","operations","indexSet","keysIndex","valueIndex","listValue","SPLIT","cell","NameMap","kvs","_cell$match","_cell$match2","unit","json","FormStore","forceRootUpdate","formHooked","subscribable","fieldEntities","initialValues","callbacks","lastValidatePromise","getForm","_init","prevWithoutPreserves","_this$prevWithoutPres","nextStore","updateStore","getFieldEntities","isMergedPreserve","initValue","watchList","notifyWatch","allValues","warningUnhooked","getFieldsMap","pure","getFieldEntitiesForNamePathList","nameList","INVALIDATE_NAME_PATH","filterFunc","mergedNameList","mergedFilterFunc","mergedStrict","strict","filteredNameList","_entity$isListField","_entity$isList","arg0","arg1","isAllFieldsTouched","shortNamePath","fieldNamePath","isNamePathListTouched","namePathListEntities","testField","resetWithFieldInitialValue","records","requiredFieldEntities","_requiredFieldEntitie","skipExist","notifyObservers","fieldData","fieldPreserve","mergedPreserve","subNamePath","_prevStore","triggerDependenciesUpdate","updateValue","_namePath","mergedInfo","childrenFields","getDependencyChildrenFields","onValuesChange","triggerOnFieldsChange","rootNamePath","dependencies2fields","dependencyNamePath","fillChildren","filedErrors","onFieldsChange","changedFields","fieldName","arg2","provideNameList","promiseList","TMP_SPLIT","validateNamePathList","_options","mergedErrors","mergedWarnings","hasError","allPromiseFinish","resultNamePathList","_ref7","returnPromise","outOfDate","triggerNamePathList","onFinish","onFinishFailed","formRef","formStore","FormContext","triggerFormChange","triggerFormFinish","registerForm","unregisterForm","_ref$component","_ref$validateTrigger","_onFieldsChange","_onFinish","formContext","_useForm","formInstance","_formInstance$getInte","childrenNode","mountRef","childrenRenderProps","prevFieldsRef","sourceKeys","targetKeys","sourceValue","targetValue","isSimilar","formContextValue","wrapperNode","onSubmit","_restProps$onReset","useWatchWarning","_args$","_args$2","_form","isFormInstance","setValue","valueStr","valueStrRef","isValidForm","namePathRef","nextValueStr","RefForm","FormProvider","onFormChange","onFormFinish","formsRef","forms","newForms","List","useForm","FormItemInputContext","NoFormStyle","override","formItemInputContext","newFormItemInputContext","newContext","isFormItemInput","hasFeedback","feedbackIcon","renderCloseIcon","Footer","_props$okType","okType","confirmLoading","onOk","onCancel","okButtonProps","cancelButtonProps","insetInlineEnd","genModalMaskStyle","WebkitOverflowScrolling","genModalStyle","_mediaMaxWidth$","paddingBottom","screenSMMax","paddingLG","titleColor","fontWeightStrong","titleFontSize","titleLineHeight","backgroundClip","paddingMD","paddingContentHorizontalLG","modalHeaderHeight","modalCloseBtnSize","modalCloseIconColor","textTransform","textRendering","modalIconHoverColor","wireframe","colorFillContentHover","headerBg","footerBg","genModalConfirmStyle","_$concat8","_$concat9","_confirmComponentCls","confirmComponentCls","flexWrap","flexBasis","modalConfirmIconSize","genRTLStyle","genWireframeStyle","_confirmComponentCls2","_ref8","modalHeaderPadding","borderBottom","modalHeaderBorderWidth","modalHeaderBorderStyle","modalHeaderBorderColorSplit","modalBodyPadding","modalFooterPaddingVertical","modalFooterPaddingHorizontal","borderTop","modalFooterBorderWidth","modalFooterBorderStyle","modalFooterBorderColorSplit","headerPaddingVertical","headerFontSize","fontSizeHeading5","headerLineHeight","lineHeightHeading5","modalToken","colorSplit","colorIconHover","colorIcon","pageX","pageY","handleCancel","centered","wrapClassNameExtended","dialogFooter","_useClosable","customCloseIconRender","defaultCloseIcon","mergedClosable","defaultClosable","useInnerClosable","useClosable","_useClosable2","ConfirmContent","_close","onConfirm","confirmPrefixCls","okCancel","staticLocale","mergedIcon","mergedOkCancel","autoFocusButton","mergedLocale","cancelButton","triggerCancel","defaultRootPrefixCls","param","_globalConfig","mergedGetContainer","configUpdate","withWarn","withInfo","withSuccess","withError","withConfirm","withPureRenderTheme","additionalProps","HookModal","hookAfterClose","setInnerConfig","newConfig","originConfig","ElementsHolder","_props","_usePatchElement","setElements","originElements","usePatchElement","_usePatchElement2","patchElement","actionQueue","setActionQueue","getConfirmFunc","withFunc","resolvePromise","closeFunc","modalRef","silent","confirmed","destroyAction","updateAction","confirm","modalWarn","useModal","warn","destroyAll","summaryConfig","vizConfig","loadingSummary","setVizConfig","summary","isModalOpen","setIsModalOpen","SamplesBox","samplesView","samples","React","CollapseBox","columnView","dtype","ChatBubbleOvalLeftIcon","HashtagIcon","CalendarDaysIcon","TagIcon","DocumentChartBarIcon","getIcon","properties","column","semantic_type","num_unique_values","std","ClipboardDocumentIcon","dataset_description","CodeBlock","language","setLoadingSummary","resetStates","setError","fileUrl","payLoad","Accept","textgen_config","fetchJSON","serverUrl","_objectSpread","goal","uploadFileUrl","ArrowUpOnSquareIcon","goals","loadingGoals","selectedGoal","setSelectedGoal","goalsList","goalDivWidth","question","visualization","rationale","LightBulbIcon","LaunchButton","BookmarkSquareIcon","_loop","responsiveArray","getResponsiveMap","screenXSMax","sm","screenSM","md","screenMD","lg","screenLG","xl","screenXL","xxl","screenXXL","validateBreakpoints","indexableToken","revBreakpoints","breakpoint","breakpointUpper","screenMin","screen","screenMax","nextBreakpointUpperMin","nextScreenMin","useResponsiveObserver","responsiveMap","subscribers","subUid","screens","matchHandlers","pointMap","subscribe","unsubscribe","paramToken","unregister","matchMediaQuery","mql","removeListener","matches","matchMedia","addListener","themeStyle","colorBgBase","toHsl","fillRule","colorFillTertiary","colorFillQuaternary","_useMemo","onBackground","toHexShortString","contentColor","genSharedEmptyStyle","_normal","emptyImgHeight","opacityImage","emptyImgHeightMD","emptyImgHeightSM","emptyToken","emptyImgCls","defaultEmptyImg","simpleEmptyImg","_a$image","imageStyle","des","imageNode","PRESENTED_IMAGE_DEFAULT","PRESENTED_IMAGE_SIMPLE","flexible","setFlexible","rowGap","detectFlexGapSupported","genGridRowStyle","flexFlow","genGridColStyle","genGridStyle","gridColumns","gridColumnsStyle","genLoopGridColumnsStyle","useRowStyle","useColStyle","gridToken","gridMediaSizesMap","screenSMMin","screenMDMin","screenLGMin","screenXLMin","screenXXLMin","screenSize","genGridMediaStyle","pre","cur","useMergePropByScreen","oriProp","setProp","curVal","calcMergeAlignOrJustify","Row","justify","_props$gutter","gutter","setScreens","curScreens","setCurScreens","mergeAlign","mergeJustify","supportFlexGap","useFlexGapSupport","gutterRef","responsiveObserver","currentGutter","_useRowStyle","_useRowStyle2","gutters","rowStyle","horizontalGutter","verticalGutter","marginLeft","marginRight","_gutters","_gutters2","gutterH","gutterV","rowContext","refreshOnChange","screensRef","supportScreens","ZERO","NINE","NUMPAD_ZERO","NUMPAD_NINE","BACKSPACE","DELETE","ARROW_UP","ARROW_DOWN","Options","goInputText","getValidValue","buildOptionText","handleChange","handleBlur","goButton","quickGo","relatedTarget","go","pageSize","pageSizeOptions","selectComponentClass","selectPrefixCls","Select","changeSelect","goInput","gotoButton","getPageSizeOptions","opt","Option","showSearch","optionLabelProp","onKeyUp","onBlur","showTitle","onKeyPress","calculatePage","paginationNode","getJumpPrevPage","showLessItems","getJumpNextPage","getItemIcon","isValid","shouldDisplayQuickJumper","showQuickJumper","handleKeyDown","handleKeyUp","currentInputValue","changePageSize","newCurrent","onShowSizeChange","_this$state","currentPage","newPage","hasPrev","hasNext","jumpPrev","jumpNext","runIfEnter","charCode","restParams","runIfEnterPrev","runIfEnterNext","runIfEnterJumpPrev","runIfEnterJumpNext","handleGoTO","renderPrev","prevPage","prevIcon","prevButton","isValidElement","cloneElement","renderNext","nextPage","nextIcon","nextButton","hasOnChange","_current","defaultCurrent","_pageSize","defaultPageSize","prevState","_lastCurrentNode$blur","lastCurrentNode","inputValue","allPages","showSizeChanger","totalBoundaryShowSizeChanger","hideOnSinglePage","showTotal","simple","showPrevNextJumpers","jumpPrevIcon","jumpNextIcon","_this$state2","pagerList","firstPager","lastPager","pageBufferSize","dataOrAriaAttributeProps","totalText","pagerProps","prevItemTitle","nextItemTitle","_active","prevDisabled","nextDisabled","getShowSizeChanger","newState","BaseSelectContext","useLock","timeoutRef","locked","UNDEFINED","InternalItem","invalidate","renderItem","responsive","responsiveDisabled","registerSize","itemKey","_props$component","mergedHidden","internalRegisterSize","overflowStyle","overflowProps","itemNode","Item","useBatcher","updateFuncRef","MessageChannel","channel","port1","onmessage","port2","postMessage","channelUpdate","unstable_batchedUpdates","useEffectState","notifyEffectUpdate","stateValue","setStateValue","OverflowContext","_excluded2","_excluded3","InternalRawItem","_restProps","contextClassName","restContext","RawItem","RESPONSIVE","INVALIDATE","defaultRenderRest","omittedItems","Overflow","renderRawItem","_props$itemWidth","itemWidth","ssr","renderRest","renderRawRest","suffix","itemComponent","fullySSR","_useEffectState","_useEffectState2","containerWidth","setContainerWidth","mergedContainerWidth","_useEffectState3","_useEffectState4","itemWidths","setItemWidths","_useEffectState5","_useEffectState6","prevRestWidth","setPrevRestWidth","_useEffectState7","_useEffectState8","restWidth","setRestWidth","_useEffectState9","_useEffectState10","suffixWidth","setSuffixWidth","suffixFixedStart","setSuffixFixedStart","displayCount","setDisplayCount","mergedDisplayCount","MAX_SAFE_INTEGER","_useState5","_useState6","restReady","setRestReady","itemPrefixCls","mergedRestWidth","isResponsive","shouldResponsive","showRest","useCallback","mergedRenderItem","updateDisplayCount","suffixFixedStartVal","notReady","getItemWidth","totalWidth","currentItemWidth","displayRest","suffixStyle","restNode","itemSharedProps","internalRenderItemNode","restContextProps","mergedRenderRest","overflowNode","ForwardOverflow","customizeIcon","customizeIconProps","_onMouseDown","WebkitUserSelect","unselectable","_inputNode2","_inputNode2$props","inputElement","autoComplete","editable","activeDescendantId","_onKeyDown","_onChange","onPaste","_onCompositionStart","onCompositionStart","_onCompositionEnd","onCompositionEnd","inputNode","_inputNode","originProps","onOriginKeyDown","onOriginChange","onOriginMouseDown","onOriginCompositionStart","onOriginCompositionEnd","readOnly","RefInput","isTitleType","getTitle","_value$key","onPreventMouseDown","effect","deps","autoClearSearchValue","inputRef","mode","maxTagCount","maxTagTextLength","_props$maxTagPlacehol","maxTagPlaceholder","omittedValues","tagRender","onToggleOpen","onInputChange","onInputPaste","onInputKeyDown","onInputMouseDown","onInputCompositionStart","onInputCompositionEnd","measureRef","inputWidth","setInputWidth","focused","setFocused","selectionPrefixCls","inputEditable","defaultRenderSelector","itemDisabled","onFocus","selectionNode","valueItem","displayLabel","strLabel","customizeRenderSelector","activeValue","inputChanged","setInputChanged","combobox","hasTextInput","selectionTitle","hiddenStyle","renderPlaceholder","Selector","compositionStatusRef","tokenWithEnter","onSearch","onSearchSubmit","domRef","_useLock","_useLock2","getInputMouseDown","setInputMouseDown","pastedTextRef","triggerOnSearch","sharedProps","currentKeyCode","which","UP","DOWN","SHIFT","WIN_KEY","ALT","META","WIN_KEY_RIGHT","CTRL","SEMICOLON","EQUALS","CAPS_LOCK","CONTEXT_MENU","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","replacedText","clipboardData","getData","selectNode","MultipleSelector","msTouchAction","inputMouseDown","ForwardSelector","SelectTrigger","dropdownStyle","dropdownClassName","_props$direction","dropdownRender","dropdownAlign","dropdownPrefixCls","popupNode","mergedBuiltinPlacements","getBuiltInPlacements","mergedTransitionName","popupRef","getPopupElement","RefSelectTrigger","fillFieldNames","fieldNames","childrenAsData","mergedLabel","groupLabel","injectPropsWithOption","newOption","DEFAULT_OMIT_PROPS","BaseSelect","_customizeRawInputEle","omitDomProps","displayValues","onDisplayValuesChange","emptyOptions","_props$notFoundConten","notFoundContent","onClear","getInputElement","getRawInputElement","onDropdownVisibleChange","onActiveValueChange","onSearchSplit","tokenSeparators","allowClear","suffixIcon","clearIcon","OptionList","_props$showAction","mergedShowSearch","domProps","selectorDomRef","selectorRef","listRef","_useDelayReset","bool","setBool","cancelLatest","useDelayReset","_useDelayReset2","mockFocused","setMockFocused","cancelSetMockFocused","_selectorRef$current","_selectorRef$current2","scrollTo","_listRef$current","mergedSearchValue","_displayValues$","customizeInputElement","customizeRawInputElement","customizeRawInputRef","rendered","setRendered","innerOpen","setInnerOpen","emptyListContent","newOpen","tokenSeparator","onInternalSearch","searchText","fromTyping","isCompositing","newSearchText","patchLabels","tokens","separate","restTokens","prevList","unitStr","getSeparatedContent","getClearLock","setClearLock","focusRef","activeTimeoutIds","onTriggerVisibleChange","_containerRef$current","newWidth","ceil","customizedTrigger","onGlobalMouseDown","shadowRoot","composed","composedPath","useSelectTriggerControl","_triggerRef$current2","arrowNode","baseSelectContext","toggleOpen","showSuffixIcon","renderNode","_useAllowClear","onClearMouseDown","mergedClearIcon","useAllowClear","_selectorRef$current4","mergedAllowClear","clearNode","optionList","mergedClassName","selectorNode","newValues","_triggerRef$current","_selectorRef$current3","restArgs","_listRef$current2","clearLock","cloneDisplayValues","removedDisplayValue","_listRef$current3","search","nodes","optionOnly","isSelectOptGroup","_ref2$props","_ref$props","convertNodeToOption","useRefFunc","funcRef","cacheFn","OptGroup","isSelectOption","Filler","onInnerResize","innerProps","innerStyle","getPageY","ScrollBar","moveRaf","scrollbarRef","thumbRef","visibleTimeout","startTop","delayHidden","onScrollbarTouchStart","onContainerMouseDown","patchEvents","removeEvents","onStartMove","getTop","newTop","enableScrollRange","getEnableScrollRange","enableHeightRange","getEnableHeightRange","newScrollTop","onStopMove","getSpinHeight","baseHeight","showScroll","prevProps","_this$scrollbarRef$cu","_this$thumbRef$curren","spinHeight","canScroll","mergedVisible","scrollBarDirection","refFunc","CacheMap","maps","useDiffItem","onDiff","prevData","setPrevData","diffItem","setDiffItem","originList","targetList","shortList","longList","originLen","notExistKey","__EMPTY_ITEM__","getItemKey","diffIndex","shortKey","findListDiffIndex","isScrollAtTop","isScrollAtBottom","lockTimeoutRef","scrollPingRef","deltaY","smoothOffset","originScroll","SMOOTH_PTG","EMPTY_DATA","ScrollStyle","overflowAnchor","RawList","itemHeight","_props$fullHeight","fullHeight","useVirtual","inVirtual","setScrollTop","scrollMoving","setScrollMoving","componentRef","fillerInnerRef","scrollBarRef","sharedConfig","syncScrollTop","alignedTop","maxScrollHeightRef","keepInRange","rangeRef","diffItemRef","_useDiffItem","_useHeights","onItemAdd","onItemRemove","updatedMark","setUpdatedMark","instanceRef","heightsRef","collectRafRef","cancelRaf","collectHeight","htmlElement","useHeights","_useHeights2","setInstanceRef","heights","heightUpdatedMark","_React$useMemo","_fillerInnerRef$curre","startIndex","startOffset","endIndex","itemTop","dataLen","cacheHeight","currentItemBottom","maxScrollHeight","useOriginScroll","_useFrameWheel","onWheelDelta","offsetRef","nextFrameRef","wheelValueRef","isMouseScrollRef","patchMultiple","detail","useFrameWheel","_useFrameWheel2","onRawWheel","onFireFoxScroll","cleanUpEvents","touchedRef","touchYRef","intervalRef","onTouchMove","currentY","onTouchEnd","onTouchStart","useMobileTouchMove","onMozMousePixelScroll","triggerFlash","scrollRef","_arg$offset","syncScroll","targetAlign","needCollectHeight","newTargetAlign","mergedAlign","stackTop","itemBottom","maxLen","useScrollTo","_scrollBarRef$current","renderList","listChildren","setNodeRef","renderFunc","useChildren","componentStyle","_useBaseProps","onPopupScroll","flattenOptions","onActiveValue","defaultActiveFirstOption","onSelect","menuItemSelectedIcon","rawValues","listHeight","listItemHeight","memoFlattenOptions","onListMouseDown","scrollIntoView","getEnabledActiveIndex","_memoFlattenOptions$c","activeIndex","setActiveIndex","setActive","fromKeyboard","flattenItem","isSelected","onSelectValue","selected","ctrlKey","appVersion","nextActiveIndex","omitFieldNameList","getLabel","getItemAriaProps","itemData","a11yProps","itemIndex","groupOption","_data$title","groupTitle","optionPrefixCls","optionClassName","iconVisible","optionTitle","RefOptionList","OMIT_DOM_PROPS","backfill","_props$autoClearSearc","onDeselect","_props$dropdownMatchS","filterOption","filterSort","optionFilterProp","_props$listHeight","_props$listItemHeight","labelInValue","mergedFilterOption","mergedFieldNames","setSearchValue","parsedOptions","mergedOptions","valueOptions","labelOptions","setLabelOptions","labelOptionsMap","dig","isChildren","useOptions","convert2LabelValues","draftValues","rawValue","rawLabel","rawKey","rawDisabled","rawTitle","_val$value","isRawValue","_option$key","_useMergedState3","_useMergedState4","internalValue","setInternalValue","rawLabeledValues","_values$","isComboNoValue","_useCache","labeledValues","cacheRef","_cacheRef$current","prevValueCache","prevOptionCache","patchedValues","_prevValueCache$get","valueCache","optionCache","useCache","_useCache2","mergedValues","getMixedOption","firstValue","_item$label","_mergedValues$","strValue","hasValue","createTagOption","filledTagOptions","cloneOptions","existOptions","filteredOptions","fieldOptions","fieldLabel","customizeFilter","upperSearch","wrapOption","subOptions","subItem","useFilterOptions","filledSearchOptions","orderedFilteredOptions","displayOptions","flattenList","_fillFieldNames","isGroupOption","grpLabel","triggerChange","newVal","_mergedValues$index","returnValues","returnOptions","setActiveValue","accessibilityIndex","setAccessibilityIndex","mergedDefaultActiveFirstOption","_ref2$source","triggerSelect","getSelectEnt","_option$key2","_getSelectEnt","_getSelectEnt2","wrappedValue","_option","_getSelectEnt3","_getSelectEnt4","_wrappedValue","_option2","onInternalSelect","cloneValues","mergedSelect","selectContext","realVirtual","nextValues","formatted","newRawValues","words","patchValues","newRawValue","TypedSelect","slideUpIn","slideUpOut","slideDownIn","slideDownOut","slideLeftIn","slideLeftOut","slideRightIn","slideRightOut","slideMotion","initSlideMotion","_slideMotion$motionNa","motionEaseInQuint","moveDownIn","moveDownOut","moveLeftIn","moveLeftOut","moveRightIn","moveRightOut","moveMotion","initMoveMotion","_moveMotion$motionNam","genItemStyle","controlPaddingHorizontal","_disabled","selectItemCls","slideUpEnterActive","slideUpAppearActive","slideUpLeaveActive","dropdownPlacementCls","paddingXXS","controlItemBgActive","getSelectItemStyle","selectItemDist","genSizeStyle","selectOverflowPrefixCls","selectItemHeight","_getSelectItemStyle","alignSelf","FIXED_ITEM_MARGIN","fontSizeIcon","textOverflow","inputPaddingHorizontalBase","_$concat$concat3","_getSelectItemStyle3","smSelectItemMargin","controlPaddingHorizontalSM","selectHeightWithoutBorder","selectionItemPadding","colorTextPlaceholder","_not$concat2","inputPaddingHorizontalSM","genStatusStyle","rootSelectCls","overwriteDefaultBorder","borderHoverColor","outlineColor","overwriteStyle","_Object$assign3","genSelectorStyle","appearance","getSearchInputWithoutBorderStyle","colorTextQuaternary","colorTextTertiary","genSelectStyle","colorWarningHover","colorWarningOutline","selectToken","useBuiltinPlacements","buildInPlacements","SECRET_COMBOBOX_MODE_DO_NOT_USE","InternalSelect","mergedNotFound","_a$bordered","bordered","_a$listHeight","_a$listItemHeight","customStatus","propDirection","renderEmpty","contextDirection","contextPopupMatchSelectWidth","select","isMultiple","useShowArrow","mergedPopupMatchSelectWidth","_React$useContext2","contextStatus","getMergedStatus","_getIcons","getSuffixIconNode","arrowIcon","mergedSuffixIcon","itemIcon","getIcons","selectProps","rcSelectRtlDropdownClassName","mergedSize","getStatusClassNames","memoPlacement","defaultPrefixCls","getDropdownCls","postProps","setPopupHeight","setPopupWidth","dropdownCls","mergedProps","genPurePanel","MiniSelect","MiddleSelect","genHoverStyle","inputBorderHoverColor","borderInlineEndWidth","genActiveStyle","genInputLargeStyle","inputPaddingVerticalLG","lineHeightLG","inputPaddingHorizontalLG","genInputSmallStyle","inputPaddingVerticalSM","colorWarningBorderHover","inputBorderActiveColor","genBasicInputStyle","inputPaddingVertical","inputPaddingHorizontal","borderWidth","genPlaceholderStyle","resize","genInputStyle","_typeColor","colorSmallPadding","paddingTop","genAffixStyle","inputAffixPadding","genAllowClearStyle","_wrapper","_addon","_$concat$concat5","borderCollapse","borderSpacing","borderInlineEnd","borderInlineStart","genInputGroupStyle","genSearchInputStyle","_$concat7","_$concat10","_searchPrefixCls","searchPrefixCls","insetBlockEnd","initInputToken","genTextAreaStyle","_showCount","_$concat11","_affixWrapper$conc2","_textareaPrefixCls","textareaPrefixCls","genPaginationStyle","inputToken","itemSize","paginationItemPaddingInline","itemActiveBg","genPaginationItemStyle","_hover2","_$concat$concat7","_$concat$concat8","letterSpacing","paginationEllipsisLetterSpacing","textIndent","paginationEllipsisTextIndent","paginationSlashMarginInlineEnd","paginationSlashMarginInlineStart","genPaginationJumpStyle","itemSizeSM","itemInputBg","inputOutlineOffset","genPaginationSimpleStyle","paginationMiniOptionsMarginInlineStart","miniOptionsSizeChangerTop","paginationMiniQuickJumperInputWidth","genPaginationMiniStyle","itemActiveBgDisabled","itemActiveColorDisabled","genPaginationDisabledStyle","genBorderedStyle","_$concat$concat9","_$concat$concat$conca","_$concat$concat11","_$concat$concat12","itemBg","itemLinkBg","genPaginationFocusStyle","_$concat$concat14","paginationToken","controlItemBgActiveDisabled","customizeSelectPrefixCls","customLocale","_React$useContext$pag","mergedShowSizeChanger","iconsProps","ellipsis","RightOutlined","isSmall","extendedClassName","debounce","_ref$atBegin","atBegin","timeoutID","_ref$noTrailing","noTrailing","_ref$noLeading","noLeading","_ref$debounceMode","debounceMode","cancelled","lastExec","clearExistingTimeout","wrapper","arguments_","_ref2$upcomingOnly","upcomingOnly","antSpinMove","antRotate","genSpinStyle","_sm","_lg","_div$concat","_nestedLoading","contentHeight","spinDotSize","textShadow","spinDotSizeSM","spinDotSizeLG","spinDotDefault","animationDelay","spinToken","defaultIndicator","Spin","spinPrefixCls","_props$spinning","spinning","customSpinning","_props$delay","tip","shouldDelay","setSpinning","showSpinning","isNestedPattern","spinClassName","containerClassName","spinElement","indicator","dotClassName","renderIndicator","SpinFC","spinClassProps","setDefaultIndicator","sizes","Col","pull","_useColStyle","_useColStyle2","sizeClassObj","sizeProps","propSize","paddingLeft","paddingRight","parseFlex","Consumer","colStyle","_useContext2","grid","itemLayout","actionsContent","itemChildren","Meta","listBorderedCls","itemPaddingSM","itemPaddingLG","paddingInline","genResponsiveStyle","_mediaScreenAndM","_mediaScreenAndM2","contentWidth","_$concat12","itemPadding","emptyTextPadding","metaMarginBottom","avatarMarginRight","titleMarginBottom","descriptionFontSize","alignCls","paddingBlock","marginXXL","marginBlockEnd","borderBlockEnd","listToken","paddingContentVertical","paddingContentVerticalSM","paddingContentVerticalLG","_a$pagination","_a$split","loadMore","_a$dataSource","dataSource","header","_a$loading","rowKey","paginationObj","paginationCurrent","setPaginationCurrent","paginationSize","setPaginationSize","triggerPaginationEvent","onPaginationChange","onPaginationShowSizeChange","loadingProp","paginationProps","largestPage","paginationContent","splitDataSource","needResponsive","currentBreakpoint","columnCount","childrenContent","renderInnerItem","paginationPosition","contextValue","TabPane","tabKey","TabPanelList","activeKey","animated","tabPosition","destroyInactiveTabPane","TabContext","tabPaneAnimated","tabPane","tabPanePrefixCls","paneStyle","paneClassName","restTabProps","tabPaneMotion","DEFAULT_SIZE","useSyncState","defaultState","stateRef","MIN_SWIPE_DISTANCE","STOP_SWIPE_DISTANCE","REFRESH_INTERVAL","SPEED_OFF_MULTIPLE","useUpdate","setCount","effectRef","callbackRef","_callbackRef$current","tgt","RC_TABS_DOUBLE_QUOTE","genDataNodeKey","getRemovable","AddButton","showAdd","addAriaLabel","onEdit","addIcon","ExtraContent","assertExtra","Overlay","overlayNode","composedRef","Dropdown","_children$props","_props$placements","triggerVisible","setTriggerVisible","overlayRef","handleVisibleChange","focusMenuRef","handleCloseMenuAndReturnFocus","_triggerRef$current$f","focusMenu","_overlayRef$current","focusResult","useAccessibility","minOverlayWidthMatchTrigger","getMenuElement","triggerHideAction","onOverlayClick","IdContext","getMenuId","useMenuId","MenuContext","InheritableContextProvider","inheritableContext","mergeProps","EmptyList","PathRegisterContext","useMeasure","PathTrackerContext","useFullPath","parentKeyPath","PathUserContext","focusable","includePositive","nodeName","isFocusableElement","isContentEditable","tabIndexAttr","tabIndexNum","getFocusNodeList","querySelectorAll","LEFT","RIGHT","HOME","END","ArrowKeys","getFocusableElements","getNextFocusElement","parentQueryContainer","focusMenuElement","sameLevelFocusableMenuElementList","focusIndex","getKeys","getKeyPath","triggerActiveKey","triggerAccessibilityOpen","originOnKeyDown","rafRef","activeRef","cleanRaf","key2element","element2key","refreshElements","getFocusElement","focusMenuKey","offsetObj","isRootLevel","_inline","_horizontal","_vertical","_offsets","inlineTrigger","horizontal","vertical","inlineSub","horizontalSub","verticalSub","sibling","getOffset","tryFocus","menuElement","focusTargetElement","link","targetKey","targetElement","findContainerUL","focusableElements","controlId","keyPath","parentKey","parentMenuElement","PATH_SPLIT","getPathStr","OVERFLOW_KEY","useKeyRecords","internalForceUpdate","key2pathRef","path2keyRef","overflowKeys","setOverflowKeys","updateRef","destroyRef","registerPath","connectedPath","unregisterPath","refreshOverflowKeys","includeOverflow","isSubPathKey","pathKeys","pathKey","getSubPathKeys","useMemoCallback","funRef","_funRef$current","uniquePrefix","internalId","useActive","onActive","onInactive","domEvent","useDirectionStyle","inlineIndent","warnItemProp","restInfo","LegacyMenuItem","attribute","InternalMenuItem","warnKey","domDataId","onItemClick","contextDisabled","overflowDisabled","contextItemIcon","selectedKeys","_internalRenderMenuItem","legacyMenuItemRef","mergedEleRef","connectedKeys","getEventInfo","mergedItemIcon","_useActive","activeProps","directionStyle","optionRoleProps","MenuItem","measure","connectedKeyPath","InternalSubMenuList","SubMenuList","parseChildren","_eventKey","_child$props","placementsRtl","defaultMotions","popupPlacementMap","PopupTrigger","popupOffset","subMenuOpenDelay","subMenuCloseDelay","triggerSubMenuAction","forceSubMenuRender","innerVisible","setInnerVisible","targetMotion","targetMotionRef","mergedMotion","visibleRef","InlineSubMenuList","fixedMode","sameModeRef","setDestroy","originOnVisibleChanged","InternalSubMenu","internalPopupClose","expandIcon","onTitleClick","onTitleMouseEnter","onTitleMouseLeave","openKeys","contextExpandIcon","_internalRenderSubMenuItem","subMenuPrefixCls","mergedExpandIcon","childrenSelected","childrenActive","setChildrenActive","triggerChildrenActive","newActive","mergedActive","onMergedItemClick","popupId","titleNode","isOpen","isSubMenu","triggerModeRef","triggerMode","listNode","SubMenu","InternalMenuItemGroup","groupPrefixCls","MenuItemGroup","Divider","convertItemsToNodes","parseItems","childNodes","Menu","_childList$","_ref$prefixCls","_ref$tabIndex","_ref$mode","inlineCollapsed","disabledOverflow","_ref$subMenuOpenDelay","_ref$subMenuCloseDela","defaultOpenKeys","defaultActiveFirst","_ref$selectable","selectable","_ref$multiple","defaultSelectedKeys","_ref$inlineIndent","_ref$triggerSubMenuAc","_ref$overflowedIndica","overflowedIndicator","overflowedIndicatorPopupClassName","openAnimation","openTransitionName","setMounted","setUUID","useUUID","mergedOpenKeys","setMergedOpenKeys","triggerOpenKeys","doUpdate","inlineCacheOpenKeys","setInlineCacheOpenKeys","_React$useMemo2","mergedMode","mergedInlineCollapsed","isInlineMode","internalMode","setInternalMode","internalInlineCollapsed","setInternalInlineCollapsed","lastVisibleIndex","setLastVisibleIndex","allVisible","_useKeyRecords","registerPathContext","pathUserContext","mergedActiveKey","setMergedActiveKey","_childList$find","_containerRef$current2","_containerRef$current3","shouldFocusKey","_useMergedState5","_useMergedState6","mergedSelectKeys","setMergedSelectKeys","onInternalClick","newSelectKeys","selectInfo","triggerSelection","onInternalOpenChange","newOpenKeys","subPathKeys","onInternalKeyDown","privateContext","wrappedChildList","dir","omitItems","originOmitItems","newLastIndex","ExportMenu","ItemGroup","OperationNode","_ref$moreIcon","moreIcon","moreTransitionName","tabBarGutter","removeAriaLabel","onTabClick","selectedKey","setSelectedKey","dropdownPrefix","selectedItemId","dropdownAriaLabel","tab","removable","onRemoveTab","selectOffset","enabledTabs","selectedIndex","moreStyle","moreNode","_ref$tab","renderWrapper","tabPrefix","refObj","_ref$offsetWidth","_ref$offsetHeight","getUnitValue","tabPositionTopOrBottom","TabNavList","onTabScroll","extraLeftRef","extraRightRef","tabsWrapperRef","tabListRef","operationsRef","innerAddButtonRef","_useSyncState","_useSyncState2","transformLeft","setTransformLeft","_useSyncState3","_useSyncState4","transformTop","setTransformTop","containerExcludeExtraSize","setContainerExcludeExtraSize","tabContentSize","setTabContentSize","addSize","setAddSize","_useState7","_useState8","operationSize","setOperationSize","_useUpdateState","batchRef","flushUpdate","useUpdateState","_useUpdateState2","tabSizes","setTabSizes","tabOffsets","holderScrollWidth","_tabs$","lastOffset","rightOffset","_tabs","useOffsets","containerExcludeExtraSizeValue","tabContentSizeValue","addSizeValue","operationSizeValue","needScroll","visibleTabContentValue","operationsHiddenClassName","transformMin","transformMax","alignInRange","touchMovingRef","_useState9","_useState10","lockAnimation","setLockAnimation","doLockAnimation","clearTouchMoving","onOffset","touchPosition","setTouchPosition","lastTimestamp","setLastTimestamp","lastTimeDiff","setLastTimeDiff","setLastOffset","lastWheelDirectionRef","touchEventsRef","_e$touches$","screenX","screenY","_e$touches$2","distanceX","distanceY","absX","absY","currentX","onWheel","deltaX","mixed","onProxyTouchMove","onProxyTouchEnd","useTouchMove","doMove","_useVisibleRange","addNodeSizeValue","operationNodeSizeValue","charUnit","transformSize","useVisibleRange","_useVisibleRange2","visibleStart","visibleEnd","scrollToTab","tabOffset","newTransform","_newTransform","tabNodeStyle","tabNodes","updateTabSizes","newSizes","_tabListRef$current","btnNode","onListHolderResize","containerSize","extraLeftSize","extraRightSize","newAddSize","newOperationSize","tabContentFullSize","startHiddenTabs","endHiddenTabs","hiddenTabs","_useState11","_useState12","inkStyle","setInkStyle","activeTabOffset","inkBarRafRef","cleanInkBarRaf","newInkStyle","pingLeft","pingRight","pingTop","pingBottom","hasDropdown","wrapPrefix","inkBar","tabMoving","TabNavListWrapper","renderTabBar","tabNavBarProps","panes","Tabs","defaultActiveKey","_ref$tabPosition","tabBarStyle","tabBarExtraContent","mergedAnimated","useAnimateConfig","_tabs$newActiveIndex","newActiveIndex","setMergedId","isActiveChanged","tabNavBar","genCardStyle","_$concat$concat4","tabsCardPadding","cardBg","cardGutter","colorBorderSecondary","itemSelectedColor","borderBottomColor","borderRightColor","borderLeftColor","genDropdownStyle","itemHoverColor","dropdownEdgeChildVerticalPadding","tabsDropdownHeight","listStyleType","tabsDropdownWidth","genPositionStyle","_$concat$concat10","horizontalMargin","verticalItemPadding","verticalItemMargin","lineWidthBold","boxShadowTabsOverflowLeft","boxShadowTabsOverflowRight","boxShadowTabsOverflowTop","boxShadowTabsOverflowBottom","borderLeft","borderRight","_$concat19","_$concat22","cardPaddingSM","cardPaddingLG","horizontalItemPaddingSM","horizontalItemPaddingLG","titleFontSizeSM","titleFontSizeLG","_$concat24","_$concat26","_$concat27","_rtlCls","tabsHorizontalItemMarginRTL","rtlCls","genTabsStyle","_$concat$concat21","cardHeight","itemActiveColor","inkBarColor","_tabCls","tabsHorizontalItemMargin","horizontalItemPadding","tabCls","tabsActiveTextShadow","genTabStyle","tabsToken","cardPadding","horizontalItemGutter","horizontalItemMargin","horizontalItemMarginRTL","customSize","_onEdit","hideAdd","_otherProps$moreIcon","editType","mergedItems","childrenItems","useLegacyItems","EMPTY","shallowEqual","aKeys","bKeys","_hasOwnProperty","_objectKeys","_deepClone","charCodeAt","escapePathComponent","unescapePathComponent","hasUndefined","i_1","objKeys","objKeysLength","patchErrorMessageFormatter","messageParts","PatchError","operation","_newTarget","JsonPatchError","deepClone","objOps","newDocument","getValueByPointer","originalValue","applyOperation","valueToCopy","_areEquals","_get","arrOps","pointer","getOriginalDestination","validateOperation","mutateDocument","banPrototypeModifications","returnValue","existingPathFragment","validateFunction","applyPatch","patch","applyReducer","operationResult","pathLen","existingPathLen","externalValidator","arrA","arrB","beforeDict","Mirror","ObserverInfo","mirror","getMirror","observerInfo","getObserverFromMirror","dirtyCheck","generate","fastCheck","patches","removeObserverFromMirror","invertible","_generate","newKeys","oldKeys","deleted","oldVal","tree1","tree2","accessor","fname","accessorName","accessorFields","getter","get1","getN","splitAccessPath","truthy","falsy","log$1","None","Error$1","logger","_level","isLegalKey","configs","signals","mergeNamed","writeConfig","peek","toNumber","sign","symlog","log1p","symexp","expm1","pan","lift","ground","dd","panLinear","panLog","panPow","panSymlog","constant","da","zoomLinear","zoomLog","zoomPow","zoomSymlog","quarter","utcquarter","getUTCMonth","clampRange","lo","hi","DESCENDING","orders","ord","fmap","comparator","ascending","compare1","compareN","tid","extentIndex","hop","_has","property","NULL","fastmap","_test","has$1","clean","flush","threshold","members","inrange","isBoolean","isDate","isIterable","lerp","frac","DEFAULT_MAX_SIZE","lruCache","maxsize","merge","array0","array1","reps","pad","padchar","toBoolean","defaultParser","parser","toSet","truncate","visitArray","visitor","EOL","EOF","QUOTE","NEWLINE","RETURN","objectConverter","columns","inferColumns","columnSet","formatDate","hours","getUTCHours","minutes","getUTCMinutes","seconds","getUTCSeconds","milliseconds","getUTCMilliseconds","getUTCFullYear","getUTCDate","delimiter","reFormat","DELIMITER","parseRows","I","eof","eol","preformatBody","formatValue","formatRow","convert","customConverter","formatBody","formatRows","topology","objects","features","geometries","geometry","transformPoint","kx","ky","arcs","arc","ring","polygon","coordinates","stitchedArcs","fragmentByStart","fragmentByEnd","fragments","emptyIndex","dp","ends","fg","gf","meshArcs","geom","geomsByArc","extract0","extract1","extract2","extract3","geoms","extractArcs","stitch","e10","e5","e2","tickSpec","inc","log10","factor","ticks","_i2","_i3","tickIncrement","tickStep","prefixExponent","formatSpecifier","specifier","FormatSpecifier","comma","formatDecimalParts","toExponential","coefficient","toLocaleString","toPrecision","_p","formatRounded","formatPrefix","prefixes","grouping","thousands","currencyPrefix","currency","currencySuffix","decimal","numerals","formatNumerals","minus","nan","newFormat","formatTypes","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","formatTrim","timeInterval","floori","offseti","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationMonth","durationYear","timeDay","setHours","setDate","getDate","getTimezoneOffset","utcDay","setUTCHours","setUTCDate","unixDay","timeWeekday","getDay","timeSunday","timeMonday","timeTuesday","timeWednesday","timeThursday","timeFriday","timeSaturday","utcWeekday","getUTCDay","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","timeYear","setMonth","setFullYear","getFullYear","utcYear","setUTCMonth","setUTCFullYear","timeMonth","utcMonth","timeHour","getMilliseconds","getSeconds","getMinutes","getHours","utcHour","setUTCMinutes","timeMinute","utcMinute","setUTCSeconds","second","millisecond","_defaultSpecifiers","_localGet","_localInv","_utcGet","_utcInv","_timeIntervals","_utcIntervals","descending","bisector","compare2","YEAR","QUARTER","MONTH","WEEK","DATE","DAY","DAYOFYEAR","HOURS","MINUTES","SECONDS","MILLISECONDS","TIME_UNITS","UNITS","timeUnits","units","defaultSpecifiers","timeUnitSpecifier","specifiers","fmt","localYear","dayofyear","localDayOfYear","week","localWeekNum","localFirst","localDate","H","M","S","L","utcdayofyear","utcDayOfYear","utcweek","utcWeekNum","UTC","utcFirst","utcDate","inv","newDate","phase","getUnit","weekday","day","firstDay","localGet","localInv","timeFloor","utcGet","utcInv","utcFloor","timeIntervals","utcIntervals","utcInterval","ival","timeOffset","utcOffset","timeSequence","utcSequence","Milli","Seconds","Minutes","Hours","Day","Month","Year","intervals","bin","ext","extent","maxbins","formatLocale","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","days","locale_shortWeekdays","shortDays","locale_months","months","locale_shortMonths","shortMonths","periodRe","formatRe","periodLookup","formatLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","formatDayOfMonth","formatMicroseconds","formatYearISO","formatFullYearISO","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMonthNumber","formatMinutes","formatUnixTimestamp","formatUnixTimestampSeconds","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatFullYear","formatZone","formatLiteralPercent","utcFormats","formatUTCDayOfMonth","formatUTCMicroseconds","formatUTCYearISO","formatUTCFullYearISO","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","formatUTCWeekNumberSunday","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","parses","parseSpecifier","parseDayOfMonth","parseMicroseconds","parseYear","parseFullYear","parseHour24","parseDayOfYear","parseMilliseconds","parseMonthNumber","parseMinutes","parseQuarter","parseUnixTimestamp","parseUnixTimestampSeconds","parseSeconds","parseWeekdayNumberMonday","parseWeekNumberSunday","parseWeekNumberISO","parseWeekdayNumberSunday","parseWeekNumberMonday","parseZone","parseLiteralPercent","pads","newParse","Z","V","U","utcFormat","utcParse","timeFormat","timeParse","defaultNumberLocale","defaultTimeLocale","numberRe","percentRe","requoteRe","requote","names","dISO","dow","UTCdISO","spec","numberLocale","formatFloat","numberFormat","decimalChar","dec","lastIndexOf","rightmostDigit","trimZeroes","formatSpan","precisionPrefix","precisionRound","precisionFixed","resetNumberFormatDefaultLocale","numberFormatLocale","numberFormatDefaultLocale","timeMultiFormat","minute","hour","timeLocale","_timeFormat","_utcFormat","resetTimeFormatDefaultLocale","timeFormatLocale","createLocale","numberSpec","timeSpec","resetDefaultLocale","protocol_re","allowed_re","whitespace_re","fileProtocol","load","_load","uri","sanitize","localFile","http","_sanitize","fileAccess","loadFile","isAllowed","hasProtocol","baseURL","defaultProtocol","fileLoader","fs","readFile","fileReject","_fileReject","httpLoader","fetch","httpReject","_httpReject","_callee5","_context5","typeParsers","unknown","typeTests","typeList","inferTypes","inferType","delimitedFormat","delim","responseType","dsv","parseJSON","filters","interior","exterior","topojson","feature","mesh","csv","tsv","read","timeParser","utcParser","datum","parsers","parts","loader","loaderFactory","_createForOfIteratorHelper","allowArrayLike","minLen","_arrayLikeToArray","_unsupportedIterableToArray","F","normalCompletion","didErr","_e2","return","arr2","UniqueList","idFunc","ids","asyncCallback","_asyncCallback","TUPLE_ID_KEY","TUPLE_ID","isTuple","tupleid","setid","ingest$1","derive","rederive","stableCompare","isChangeSet","changeset","rem","mod","remp","modp","_clean","_reflow","insert","tuple","encode","reflow","pulse","_pulse","tuples","modifies","CACHE","Parameters","force","modified","_k","OP_ID","NO_PARAMS","Operator","react","stamp","rank","qrank","flag","bit","targets","_targets","initonly","argval","_argval","argops","_argops","marshall","detach","evaluate","StopPropagation","run","rv","STREAM_ID","EventStream","receive","_filter","_apply","stream","_request","_preload","loadPending","requests","consume","_consume","trg","pause","dataflow","between","SKIP","onStream","touch","onOperator","connect","Pulse","_materialize","visit","addFilter","MultiPulse","pulses","_step","_iterator","_pulse2","hash","changed","ADD","REM","MOD","_evaluate","prerun","postrun","pr","reentrant","_touched","_clock","_enqueue","_heap","_getPulse","_input","_postrun","priority","runAsync","_runAsync","_this3","_running","ADD_REM","ADD_MOD","ALL","REFLOW","SOURCE","NO_SOURCE","NO_FIELDS","fork","materialize","addAll","addF","remF","modF","srcF","cleans","runAfter","nomod","_filter2","NO_OPT","Heap","siftdown","ridx","cidx","siftup","pidx","Dataflow","logLevel","_rank","_locale","_loader","logMethod","_log","Transform","_logger","cleanThreshold","sources","targetRank","rerank","ingest","preload","_x10","_x11","_x12","_x13","enqueue","singlePulse","transforms","Definition","valueof","_step2","_iterator2","_value","compareDefined","sd","swap","_marked","numbers","quantile","value0","subarray","quantileSorted","deviation","mean","variance","quantiles","quartiles","estimateBandwidth","minstep","maxb","logb","eps","nice","setRandom","bootstrapCI","mu","dotbin","thresh","smoothing","seed","sample","cdf","icdf","SQRT2PI","SQRT2","nextSample","sampleNormal","stdev","rds","densityNormal","cumulativeNormal","cd","_exp","quantileNormal","erfinv","gaussian","kde","support","_bandwidth","sampleLogNormal","densityLogNormal","cumulativeLogNormal","quantileLogNormal","lognormal","mixture","dists","_weights","weights","distributions","sampleUniform","densityUniform","cumulativeUniform","quantileUniform","uniform","_step3","_iterator3","_step4","_iterator4","_step5","_iterator5","_points","_ols","c0","_points3","_points4","poly","_points5","_points6","_points7","_points8","_ols3","_ols4","MIN_RADIANS","sampleCurve","minSteps","maxSteps","sx","sy","ymin","ymax","pm","angleDelta","groupkey","measureName","as","base_op","AggregateOps","__count__","missing","mean_d","average","req","dev","variancep","stdevp","stderr","distinct","ci0","ci1","q2","q1","q3","argmin","argmax","ValidAggregateOps","createMeasure","compareIndex","_ops","_this4","_out","compileMeasures","agg","getreqs","ctr","TupleStore","prototype$1","Aggregate","_adds","_mods","_alen","_mlen","_drop","_cross","_dims","_dnames","_measures","_countOnly","_counts","_prev","_inputs","_outputs","_add","_rem","_ext","_q","quartile","_ci","_this5","aggr","drop","dims","vals","collect","inputs","outputs","inputMap","inputVisit","groupby","dname","cellkey","mname","outname","newcell","newtuple","measures","celltuple","counts","adds","mods","Bin","SortedList","_data","resort","Collect","Compare","update$5","CountPattern","Cross","band","bins","_bins","tcase","tokenize","case","_parameterCheck","_match","_stop","_finish","stopwords","_tuples","Distributions","normal","FUNCTION","Density","partition$1","distribution","minsteps","maxsteps","DotBin","Expression","update$4","expr","Extent","Subflow","Facet","update$3","Filter","Flatten","Fold","Formula","Generate","autostep","detachSubflow","activate","flow","subflow","flows","sf","_group","detached","initTargets","_this6","rekey","k0","k1","isMod","revisit","arrays","maxlen","fnames","Methods","Impute","JoinAggregate","KDE","Key","update$2","Load","Lookup","MultiExtent","update$1","extents","MultiValues","Params","Pivot","PreFacet","Project","Quantile","gVals","kVal","impute","getField","fName","kName","gNames","keyvals","gKey","kMap","gMap","partition","_impute","_source","cumulative","density","_this7","_transform","limit","pivotKeys","aggregateParams","_this8","lut","project","dt","Relay","Sample","Sequence","Sieve","TimeUnit","probs","cap","OUTPUT","TupleIndex","Values","utc","timezone","_floor","u0","u1","tunits","WindowOps","row_number","dense_rank","drank","percent_rank","cume_dist","cume","ntile","_next2","lag","lead","first_value","last_value","nth_value","nth","prev_value","next_value","ValidWindowOps","WindowState","windows","countOnly","visitInputs","WindowOp","_i4","_i5","Window","processPartition","ignorePeers","frame","setWindow","adjustRange","_point","bezierCurveTo","_x0","_x1","_y0","_y1","Basis","BasisClosed","BasisOpen","Bundle","beta","_basis","_beta","wind","_this9","areaStart","_line","areaEnd","lineStart","lineEnd","lineTo","closePath","_y2","_y3","_y4","_y","bundle","Cardinal","tension","cardinal","CardinalOpen","CardinalClosed","_y5","_l01_a","_l01_2a","_l12_a","_l12_2a","_l23_a","_l23_2a","CatmullRom","_alpha","x23","y23","catmullRom","CatmullRomClosed","CatmullRomOpen","_templateObject","_templateObject2","_templateObject3","_templateObject4","_templateObject5","_templateObject6","_templateObject7","_templateObject8","_templateObject9","_templateObject10","_templateObject11","_templateObject12","_templateObject13","_templateObject14","Linear","LinearClosed","slope3","h0","h1","s0","slope2","MonotoneX","MonotoneY","ReflectContext","Natural","controlPoints","Step","_taggedTemplateLiteral","strings","raw","freeze","_t0","tauEpsilon","Path","digits","_append","appendRound","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","t01","t21","ccw","cw","withPath","RangeError","arcInnerRadius","arcOuterRadius","arcStartAngle","arcEndAngle","arcPadAngle","padAngle","cornerTangents","rc","ox","oy","x11","y11","x10","y10","x00","y00","D","cx0","cy0","cx1","cy1","dx0","dy0","defined","curve","buffer","defined0","x0z","y0z","arealine","lineX0","lineY0","lineY1","lineX1","kr","domCanvas","domImage","ascendingBisect","bisectRight","bisectLeft","bimap","interpolate","polymap","transformer","untransform","piecewise","rescale","clamper","rangeRound","continuous","initRange","initInterpolator","interpolator","tickFormat","linearish","prestep","transformLog","transformExp","transformLogn","transformExpn","pow10","reflect","loggish","logs","pows","log2","logp","powp","transformPow","transformSqrt","transformSquare","powish","transformSymlog","transformSymexp","symlogish","ticker","tickIntervals","tickInterval","_tickIntervals","_ticker","_ticker2","utcTicks","utcTickInterval","_ticker3","_ticker4","timeTicks","timeTickInterval","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","formatYear","k10","sequential","sequentialPow","k21","divergingPow","receiver","_createSuper","Derived","hasNativeReflectConstruct","Super","NewTarget","InternMap","_Map","keyof","_intern","_step$value","intern_get","intern_set","intern_delete","InternSet","_Set","_super2","implicit","ordinal","svgNode","skewX","interpolateTransform","pxComma","pxParen","degParen","xa","ya","xb","yb","interpolateTransformCss","DOMMatrix","WebKitCSSMatrix","isIdentity","decompose","interpolateTransformSvg","createElementNS","baseVal","consolidate","cosh","zoomRho","rho2","rho4","ux0","uy0","w0","ux1","uy1","coshr0","tanh","sinh","_1","_2","hslLong","Xn","Yn","Zn","labConvert","Lab","Hcl","hcl2lab","rgb2lrgb","xyz2lab","lab","lab2xyz","lrgb2rgb","hclConvert","hcl","hclLong","B","C","ED","EB","BC_DA","Cubehelix","bl","cubehelixConvert","cubehelix","cubehelixGamma","_symbols","_formats","cubehelixLong","bandSpace","paddingInner","paddingOuter","Log","Pow","Sqrt","Symlog","Time","Sequential","Diverging","Quantize","Threshold","Ordinal","Point","Band","BinOrdinal","Continuous","Discrete","Discretizing","Interpolating","Temporal","ordinalRange","range$1","invertRange","pointish","scales","VEGA_SCALE","registerScale","metadata","invertExtent","invertRangeExtent","isValidScaleType","hasType","isContinuous","isDiscrete","isDiscretizing","isLogarithmic","isInterpolating","isQuantile","sequentialLog","sequentialSymlog","diverging","divergingLog","divergingSymlog","thresholds","quantize","scaleBinOrdinal","scaleProps","interpolateRange","interpolateColors","quantizeInterpolator","scaleFraction","scale$1","interp","palette","scheme","schemes","category10","category20","category20b","category20c","tableau10","tableau20","accent","dark2","paired","pastel1","pastel2","set1","set2","set3","blues","greens","greys","oranges","purples","reds","blueGreen","bluePurple","greenBlue","orangeRed","purpleBlue","purpleBlueGreen","purpleRed","redPurple","yellowGreen","yellowOrangeBrown","yellowOrangeRed","blueOrange","brownBlueGreen","purpleGreen","purpleOrange","redBlue","redGrey","yellowGreenBlue","redYellowBlue","redYellowGreen","pinkYellowGreen","spectral","viridis","magma","inferno","plasma","cividis","rainbow","sinebow","turbo","browns","tealBlues","teals","warmGreys","goldGreen","goldOrange","goldRed","lightGreyRed","lightGreyTeal","lightMulti","lightOrange","lightTealBlue","darkBlue","darkGold","darkGreen","darkMulti","darkRed","SymbolLegend","DiscreteLegend","defaultFormatter","tickCount","minStep","validTicks","endpoints","tickValues","noSkip","varfmt","tickLog","labelValues","binValues","thresholdValues","isDiscreteRange","labelFormat","thresholdFormat","formatRange","formatDiscrete","formatPoint","dflt","isTemporal","domainCaption","_v","gradient_id","patternPrefix","gradientRef","defs","Gradient","stops","lookup","curves","orientation","commandPattern","numberPattern","spacePattern","flagPattern","commands","paramCount","ws","parseParams","DegToRad","HalfPi","Tau","HalfSqrt3","segmentCache","bezierCache","bezier","th0","th1","sin_th","cos_th","cos_th0","sin_th0","cos_th1","sin_th1","th_half","sin_th_h2","sX","sY","pathRender","tempX","tempY","tempControlX","tempControlY","controlX","controlY","anchorX","anchorY","beginPath","quadraticCurveTo","drawArc","coords","sweep","rotateX","th","pl","sfactor_sq","sfactor","xc","yc","th_arc","segs","th2","th3","bez","Tan30","builtins","parsed","customSymbol","rectangleX","rectangleY","rectangleWidth","rectangleHeight","vg_rect","crTL","crTR","crBL","crBR","rectangle","tl","tr","br","cornerRadius","vg_trail","ud","trail","value$1","arcShape","padRadius","da0","da1","ap","rp","rc0","rc1","x32","y32","kc","lc","areavShape","areahShape","lineShape","rectShape","cornerRadiusTopLeft","cornerRadiusTopRight","cornerRadiusBottomRight","cornerRadiusBottomLeft","symbolShape","trailShape","hasCornerRadius","clip_id","resetSVGClipId","clip$1","renderer","_defs","clipping","Bounds","union","GroupItem","ResourceLoader","customLoader","increment","decrement","boundStroke","miter","strokeOpacity","sw","strokeJoin","miterAdjustment","MAX_VALUE","equals","rotatedPoints","encloses","alignsWith","intersects","sanitizeURL","loadImage","cors","poll","rot","ma","mb","mc","circleThreshold","addL","addX","addY","addp","addpL","boundContext","deg","context$1","px1","py1","quadExtrema","px3","py3","cubicExtrema","sa","ea","cubic","intersectPath","brush","isPointInPath","intersectPoint","intersectRect","intersectRule","intersectBoxLine","blend","globalCompositeOperation","addStops","addColorStop","createRadialGradient","_image","ictx","fillStyle","createLinearGradient","fillRect","createPattern","globalAlpha","lw","strokeStyle","lineCap","strokeCap","lineJoin","miterLimit","strokeMiterLimit","setLineDash","strokeDash","lineDashOffset","strokeDashOffset","zindex","zorder","scene","zdirty","zitems","pickVisit","hit","drawAll","drawPath","drawOne","pick$1","gx","gy","pixelRatio","hitPath","isPointInStroke","pickPath","translateItem","markItemPath","isect","nested","rotateItem","bound","pick","markMultiItemPath","orient","clipGroup","offset$1","strokeOffset","emitRectangle","rectanglePath","hitBackground","hitForeground","hitCorner","noBound","fore","strokeForeground","dw","dh","ix","interactive","marktype","pickMark","foreground","getImage","imageWidth","aspect","imageHeight","imageXOffset","imageYOffset","baseline","ar0","ar1","imageSmoothingEnabled","xOffset","yOffset","path$1","pathCache","path$2","transformItem","draw$2","widthCache","textMetrics","estimateWidth","useCanvas","use","_estimateWidth","textValue","currentFontHeight","_measureWidth","currentFont","textLines","lineBreak","multiLineOffset","widthGetter","quote","tempBounds","anchorPoint","lh","fillText","strokeText","Marks","boundItem","DUMMY","boundMark","hasItems","sceneToJSON","sceneFromJSON","initialize","Scenegraph","createMark","domCreate","ns","domFind","tagName","domChild","domClear","cssClass","clientLeft","clientTop","Handler","customTooltip","_handlers","_tooltip","defaultTooltip","Renderer","_el","_bgcolor","markdef","_obj","_origin","_scene","_handlerIndex","handlers","handleHref","MouseEvent","dispatchEvent","handleTooltip","tooltip","mdef","resolveItem","getItemBoundingClientRect","scaleFactor","bgcolor","_scale","_render","renderAsync","_ready","redraw","DragEnterEvent","DragLeaveEvent","DragOverEvent","MouseDownEvent","MouseMoveEvent","MouseOutEvent","MouseOverEvent","ClickEvent","MouseWheelEvent","TouchStartEvent","TouchMoveEvent","TouchEndEvent","TooltipShowEvent","TooltipHideEvent","HrefEvent","CanvasHandler","_down","_touch","_first","eventListenerCheck","eventBundle","fire","moveEvent","overEvent","outEvent","pickEvent","exit","inactive","_canvas","DOMMouseScroll","mousemove","dragover","mouseout","dragleave","mousedown","touchstart","touchmove","touchend","vegaType","devicePixelRatio","CanvasRenderer","_redraw","_dirty","_tempb","base$1","SVGHandler","_hrefHandler","_tooltipHandler","externalContext","inDOM","HTMLElement","setTransform","_resize","db","viewBounds","clipToBounds","clearRect","__data__","_svg","ARIA_HIDDEN","ARIA_LABEL","ARIA_ROLE","ARIA_ROLEDESCRIPTION","GRAPHICS_OBJECT","GRAPHICS_SYMBOL","roledesc","AriaIgnore","AriaGuides","caption","extractTitle","capitalize","channelCaption","titleCaption","AriaEncode","ariaRole","ariaRoleDescription","ariaItemAttributes","_type","ariaMarkAttributes","ariaGuide","ariaMark","innerText","attrText","markup","buf","stack","_attrs","serializeXML","_serialize","hasAttributes","hasChildNodes","nodeValue","stylesAttr","stylesCss","rootAttributes","svgns","SVGRenderer","_dirtyID","_root","dirtyParents","updateGradient","grad","pt","setAttributes","preserveAspectRatio","fr","updateClipping","__values__","bg","cg","ownerSVGElement","previousSibling","siblingCheck","nextSibling","_clearDefs","setAttributeNS","RootIndex","setProperty","_dirtyCheck","_dirtyAll","isDirty","mark_extras","_value2","_prop","setStyle","_fill","ts","removeAttributeNS","removeProperty","location","SVGStringRenderer","_text","class","attrList","_tl","_fill2","_stroke","_hrefs","prefixed","styleList","_value3","_prop2","_value4","_def","_id2","_def2","RenderType","PNG","SVG","modules","renderModule","hits","intersectMark","intersectGroup","visitMark","_type2","intersectItem","marks","headless","clipBounds","boundClip","TOLERANCE","sceneEqual","pathEqual","ka","kb","objectEqual","resetSVGDefIds","Top","Left","Right","Bottom","TopLeft","TopRight","BottomLeft","BottomRight","Start","Middle","End","AxisRole","TitleRole","FrameRole","ScopeRole","LegendRole","RowHeader","RowFooter","RowTitle","ColHeader","ColFooter","ColTitle","Padding","Symbols","Fit","FitX","FitY","Pad","All","Each","Flush","Column","Bound","rebound","view","markBounds","COUNTER_NAME","Identifier","Mark","Overlap","counter","_signals","getCounter","scenegraph","lookup$1","Init","parity","greedy","sep","hasOverlap","hasBounds","Render","separation","boundScale","boundTolerance","boundTest","boundOrient","isYAxis","axisLayout","axis","indices","labels","axisIndices","minExtent","maxExtent","titlePadding","dl","axisTitleLayout","auto","bboxFlush","bboxFull","offsetValue","gridLayout","nodirty","alignCol","alignRow","padCol","padRow","ncols","nrows","xExtent","xMax","yExtent","yMax","boxes","trellisLayout","views","_views$rowheaders","_views$rowfooters","_views$colheaders","_views$colfooters","_views$marks","rowheaders","rowfooters","colheaders","colfooters","rowtitle","coltitle","gridLayoutGroups","boundFlush","boundFull","headerBand","layoutHeaders","footerBand","titleAnchor","titleBand","layoutTitle","isX","bf","stride","legendParams","legends","offsets","mult","legendLayout","legend","_bounds","tpad","tx","ty","legendTitleOffset","legendGroupLayout","legendBounds","widths","legendEntryLayout","noBar","vgrad","ViewLayout","xBounds","yBounds","_orient","autosize","subtitle","titleLayout","_autosize","viewWidth","viewHeight","_resizeView","viewSizeLayout","layoutGroup","shouldReflow","AxisTicks","DataJoin","defaultItemCreate","Encode","LegendEntries","newMap","fmod","encoders","reenter","enter","fraction","lskip","perc","adjust","labelFraction","perc2","sourceX","sourceY","LinkPath","Paths","rr","iy","sr","ta","sc","ss","tc","mr","Pie","DEFAULT_COUNT","includePad","Scale","domainCheck","adjustScheme","flip","SortItems","isContinuousColor","rawDomain","domainMid","scaleKey","rangeStep","configureRangeStep","scheme$1","schemeExtent","interpolateGamma","schemeCount","configureScheme","configureRange","domainRaw","configureBins","includeZero","padDomain","domainMin","domainMax","domainImplicit","configureDomain","Zero","Center","Normalize","DefOutput","Stack","stackCenter","stackNormalize","stackZero","lastPos","lastNeg","streamGeometry","streamGeometryType","streamObjectType","Feature","FeatureCollection","Sphere","sphere","MultiPoint","LineString","streamLine","MultiLineString","Polygon","streamPolygon","MultiPolygon","GeometryCollection","closed","coordinate","polygonStart","polygonEnd","Adder","_partials","quarterPi","areaSum","areaRingSum","areaStream","areaRingStart","areaRingEnd","areaPointFirst","areaPoint","boundsStream","X0","Y0","Z0","X1","Y1","Z1","Y2","Z2","centroidStream","centroidPoint","centroidLineStart","centroidLineEnd","centroidRingStart","centroidRingEnd","centroidPointFirstLine","centroidPointLine","centroidPointFirstRing","centroidPointRing","PathContext","_radius","pointRadius","lengthRing","lengthSum","lengthStream","lengthPointFirst","lengthPoint","cacheDigits","cacheAppend","cacheRadius","cacheCircle","PathString","projection","projectionStream","contextStream","rejoin","Intersection","compareIntersection","startInside","subject","pointEqual","isSubject","spherical","cartesian","cosPhi","cartesianDot","cartesianCross","cartesianAddInPlace","cartesianScale","cartesianNormalizeInPlace","longitude","flatten","pointVisible","clipLine","sink","ringBuffer","ringSink","polygonStarted","pointRing","ringStart","ringEnd","sinPhi","winding","point0","lambda0","sinPhi0","cosPhi0","lambda1","sinPhi1","cosPhi1","phi1","absDelta","antimeridian","phiArc","polygonContains","pointLine","ringSegments","validSegment","sign0","sign1","sinLambda0Lambda1","clipAntimeridianIntersect","circleStream","cosRadius","sinRadius","circleRadius","clipMax","clipMin","clipRectangle","corner","comparePoint","ca","x__","y__","v__","x_","y_","v_","activeStream","bufferStream","clipStream","linePoint","polygonInside","cleanInside","compose","rotationIdentity","deltaLambda","deltaPhi","deltaGamma","rotationLambda","rotationPhiGamma","forwardRotationLambda","rotation","cosDeltaPhi","sinDeltaPhi","cosDeltaGamma","sinDeltaGamma","methods","TransformStream","fit","fitBounds","clipExtent","fitExtent","fitSize","fitWidth","fitHeight","maxDepth","cosMinDistance","delta2","resampleLineTo","phi2","lambda2","dz","lambda00","c00","resampleStream","ringPoint","resampleNone","transformRadians","scaleTranslateRotate","scaleTranslate","cosAlpha","sinAlpha","ai","fi","projectionMutator","projectAt","projectResample","projectTransform","projectRotateTransform","cacheStream","preclip","postclip","recenter","resample","transformRotate","clipAngle","cr","smallRadius","notHemisphere","two","n2n2","n1n2","determinant","n1xn2","uu","polar","v00","reflectX","reflectY","conicProjection","parallels","conicEqualAreaRaw","sy0","forward","cylindricalEqualAreaRaw","r0y","conicEqualArea","azimuthalRaw","azimuthalInvert","cc","azimuthalEqualAreaRaw","cxcy","azimuthalEquidistantRaw","mercatorRaw","mercatorProjection","reclip","tany","conicConformalRaw","equirectangularRaw","conicEquidistantRaw","A1","A2","A3","A4","equalEarthRaw","l2","l6","gnomonicRaw","naturalEarth1Raw","phi4","orthographicRaw","stereographicRaw","transverseMercatorRaw","sqrt2","SQRT1_2","mollweideBromleyTheta","cpsinPhi","mollweideRaw","mollweideBromleyRaw","defaultPath","projectionProperties","proj","projections","getProjectionPath","albers","albersusa","lower48Point","alaskaPoint","hawaiiPoint","lower48","alaska","hawaii","pointStream","albersUsa","streams","azimuthalequalarea","azimuthalequidistant","conicconformal","conicequalarea","conicequidistant","equalEarth","equirectangular","gnomonic","mercator","mollweide","naturalEarth1","orthographic","stereographic","transversemercator","graticuleX","graticuleY","graticule","DX","DY","extentMajor","extentMinor","stepMajor","stepMinor","cases","contours","smoothLinear","tz","contour","polygons","holes","isorings","hole","_0","ringContains","xi","yi","xj","yj","segmentContains","collinear","Isocontour","transformPolygon","transformRing","density2D","values0","values1","blurX","blurY","sz","cellSize","LN2","KDE2D","levels","transformPaths","PARAMS","Contour","GeoJSON","GeoPath","GeoPoint","GeoShape","Graticule","Heatmap","$x","$y","$value","$max","Projection","xm","ym","leaf","defaultX","defaultY","quadtree","Quadtree","leaf_copy","_features","lon","lat","geojson","initPath","shapeGenerator","shared","dep","opacity_","color_","can","getImageData","pix","putImageData","toCanvas","featurize","collectGeoJSON","treeProto","vx","vy","cover","xz","yz","quads","retainer","visitAfter","Dispatch","typename","typenames","parseTypenames","initialRadius","initialAngle","_nodes","simulation","_alphaMin","_alphaDecay","_alphaTarget","_velocityDecay","forces","stepper","tick","initializeNodes","initializeForce","alphaMin","alphaDecay","alphaTarget","velocityDecay","randomSource","closest","nodeById","nodeId","ForceMap","strength","collide","radii","ri","ri2","prepare","rj","jiggle","_random","nbody","strengths","distanceMin2","distanceMax2","theta2","accumulate","distanceMin","distanceMax","links","distances","bias","initializeStrength","initializeDistance","Forces","ForceParams","ForceConfig","ForceOutput","Force","setup","sim","getForce","numForces","setForceParam","change","iters","stopped","static","hierarchy","mapChildren","objectChildren","childs","eachBefore","computeHeight","copyData","constantZero","eachAfter","each","ancestor","aNodes","ancestors","bNodes","leastCommonAncestor","descendants","leaves","packEncloseRandom","circles","shuffle","enclosesWeak","encloseBasis","extendBasis","enclosesWeakAll","enclosesNot","encloseBasis2","encloseBasis3","dr","encloseBasis1","r21","r3","a3","d3","ab","place","score","packSiblingsRandom","aa","sj","sk","defaultRadius","radiusLeaf","packChildrenRandom","translateChild","preroot","ambiguous","imputed","defaultId","defaultParentId","parentId","stratify","nodeKey","currentParentId","nodeByKey","slash","parentof","defaultSeparation","nextLeft","nextRight","moveSubtree","wm","wp","nextAncestor","vim","TreeNode","meanXReduce","maxYReduce","squarifyRatio","sumValue","minValue","maxValue","newRatio","minRatio","dice","squarify","resquarify","_squarify","Nest","nest","_entries","keyValue","valuesByKey","HierarchyLayout","setParams","Output$3","Pack","Output$2","Partition","Stratify","positionNode","Layouts","tidy","nodeSize","treeRoot","firstWalk","secondWalk","sizeNode","siblings","executeShifts","vip","vop","vom","sip","sop","som","apportion","cluster","previousNode","meanX","leafLeft","leafRight","Output$1","Tree","TreeLinks","Tiles","binary","sums","valueOffset","valueTarget","valueLeft","valueRight","slicedice","Treemap","enumerableOnly","sym","getOwnPropertyDescriptors","tile","paddingStack","treemap","ALPHA_MASK","getBuffer","Uint32Array","DIV","SIZE","RIGHT0","RIGHT1","scaler","bitmap","_set","_clear","getRange","indexStart","indexEnd","setRange","clearRange","outOfBounds","Bitmap","textWidth","textHeight","collision","bm0","bm1","X_DIR","Y_DIR","Aligns","Baselines","boundary","isInside","anchorCode","TOP","MIDDLE","BOTTOM","placeAreaLabel","bitmaps","avoidBaseMark","markIndex","areaWidth","maxAreaWidth","tryLabel","maxSize","_xMid","_yMid","swapTmp","labelPlaced","labelPlaced2","_result","_result2","_result3","_result4","bm2","_stack$pop","_stack$pop2","labelLayout","texts","avoidMarks","lineAnchor","_i7","_i8","getOffsets","anchors","Int8Array","_i9","_i10","getAnchors","grouptype","isGroupArea","markBoundary","infPadding","isNaiveGroupArea","maxTextWidth","maxTextHeight","labelInside","_i6","baseMark","baseMarkContext","strokeContext","strokeAlpha","baseMarkAlpha","baseMarkBuffer","strokeBuffer","layer1","layer2","markBitmaps","baseBitmaps","_d$textWidth","sizeFactor","insideFactor","placeMarkLabel","Anchors","Label","Loess","null","Regression","dof","degreesOfFreedom","model","elen","flen","Qnew","hh","bvirt","enow","fnow","eindex","findex","hindex","ccwerrboundB","ccwerrboundC","C1","C2","orient2d","detleft","detright","detsum","acxtail","acytail","bcxtail","bcytail","ahi","alo","bhi","blo","_j","u3","acx","bcx","acy","bcy","errbound","C1len","C2len","Dlen","orient2dadapt","EDGE_STACK","Delaunator","maxTriangles","_triangles","_halfedges","Int32Array","_hashSize","_hullPrev","_hullNext","_hullTri","_hullHash","_ids","_dists","hullPrev","hullNext","hullTri","hullHash","minDist","i0x","i0y","i1x","i1y","minRadius","circumradius","i2x","i2y","quicksort","hull","triangles","halfedges","cl","circumcenter","_cx","_cy","_hullStart","hullSize","_hashKey","trianglesLen","_addTriangle","_legalize","al","inCircle","hbl","_link","getX","defaultGetX","getY","defaultGetY","bp","tempDist","_j2","_temp","_tempDist","Voronoi","delaunay","_circumcenters","vectors","_this$delaunay","circumcenters","_this$delaunay2","inedges","ti","tj","_renderSegment","_project","_clip","cellPolygons","cellPolygon","renderCell","_regioncode","_clipSegment","neighbors","li","aj","lj","_this$delaunay3","e0","_cell","_simplify","_clipInfinite","_clipFinite","e1","sx0","sx1","sy1","_S","_S2","_S3","_S4","_edgecode","_edge","vx0","vy0","vxn","vyn","flatIterable","_e3","pointX","pointY","jitter","Delaunay","_delaunator","_hullIndex","hullIndex","_n2","dc","renderHull","trianglePolygons","trianglePolygon","renderTriangle","flatArray","defaultExtent","toPathString","voronoi","cloudRadians","cloud","spiral","archimedeanSpiral","board","dxdy","startX","startY","maxDelta","cloudCollide","collideRects","sprite","msx","contextAndRatio","zeroArray","tags","xoff","yoff","hasText","cloudSprite","cloudBounds","functor","spirals","w32","maxh","wcr","wsr","hcr","hsr","pixels","seenRow","archimedean","rectangular","Wordcloud","fontSizeRange","fsize","sizeScale","array8","Uint8Array","array16","Uint16Array","array32","Dimension","query","onAdd","added","dim","SortedIndex","_index","oldv","oldi","addi","addv","index0","index1","reindex","CrossFilter","_seen","_curr","lengthen","Bitmaps","_indices","ResolveFilter","reinit","eval","remMap","modMap","bits","indexMap","incrementOne","incrementAll","old","lo1","hi1","lo0","hi0","ignore","pass","TokenName","lookahead","Literal","Property","ArrayExpression","BinaryExpression","CallExpression","ConditionalExpression","LogicalExpression","MemberExpression","ObjectExpression","UnaryExpression","ASTNode","callee","consequent","alternate","TokenBooleanLiteral","TokenEOF","TokenIdentifier","TokenKeyword","TokenNullLiteral","TokenNumericLiteral","TokenPunctuator","TokenStringLiteral","SyntaxArrayExpression","SyntaxBinaryExpression","SyntaxCallExpression","SyntaxConditionalExpression","SyntaxIdentifier","SyntaxLiteral","SyntaxLogicalExpression","SyntaxMemberExpression","SyntaxObjectExpression","SyntaxProperty","SyntaxUnaryExpression","MessageUnexpectedToken","MessageUnexpectedNumber","MessageUnexpectedString","MessageUnexpectedIdentifier","MessageUnexpectedReserved","MessageUnexpectedEOS","MessageInvalidRegExp","MessageUnterminatedRegExp","MessageStrictOctalLiteral","MessageStrictDuplicateProperty","ILLEGAL","DISABLED","RegexNonAsciiIdentifierStart","RegexNonAsciiIdentifierPart","assert","isDecimalDigit","isHexDigit","isOctalDigit","isWhiteSpace","isLineTerminator","isIdentifierStart","fromCharCode","isIdentifierPart","keywords","skipComment","scanHexEscape","throwError","scanUnicodeCodePointEscape","cu1","cu2","getEscapedIdentifier","scanIdentifier","getIdentifier","scanPunctuator","code2","ch2","ch3","ch4","ch1","scanNumericLiteral","scanHexLiteral","octal","scanOctalLiteral","scanRegExp","classMarker","terminated","literal","scanRegExpBody","scanRegExpFlags","$0","$1","testRegExp","advance","scanStringLiteral","lex","finishBinaryExpression","operator","finishCallExpression","finishIdentifier","finishLiteral","finishMemberExpression","computed","member","finishProperty","kind","messageFormat","whole","throwUnexpected","expect","matchKeyword","keyword","parseArrayInitialiser","parseConditionalExpression","finishArrayExpression","parseObjectPropertyKey","parseObjectProperty","parseObjectInitialiser","finishObjectExpression","legalKeywords","parsePrimaryExpression","parseExpression","parseGroupExpression","parseArguments","parseNonComputedProperty","isIdentifierName","parseComputedMember","parsePostfixExpression","parseLeftHandSideExpressionAllowCall","parseUnaryExpression","finishUnaryExpression","binaryPrecedence","prec","marker","markers","parseBinaryExpression","finishConditionalExpression","Constants","LN10","LOG2E","MIN_VALUE","Functions","codegen","cast","fncall","STRING","REGEXP","datetime","timezoneoffset","utcdate","utcday","utcyear","utcmonth","utchours","utcminutes","utcseconds","utcmilliseconds","upper","lower","if","allowed","forbidden","constants","functions","globalvar","fieldvar","outputGlobal","globals","memberDepth","ast","Generators","stripQuotes","phi00","deltaSum","ranges","areaRing","dLambda","sdLambda","adLambda","W0","W1","z0","boundsLineStart","boundsLineEnd","boundsRingPoint","boundsRingStart","boundsRingEnd","inflection","phii","lambdai","rangeCompare","rangeContains","centroidPointCartesian","centroidLinePointFirst","centroidLinePoint","centroidRingPointFirst","centroidRingPoint","cz","Intersect","Union","SelectionId","$selectionId","TYPE_ENUM","TYPE_RANGE_INC","TYPE_RANGE_EXC","TYPE_RANGE_LE","TYPE_RANGE_RE","UNIT_INDEX","testPoint","dval","_others","selectionVisitor","scope","indexName","dataName","indataRef","tuplesRef","dateObj","setYear","ScalePrefix","SignalPrefix","dataVisitor","scaleVisitor","addScaleDependency","scaleName","scaleRef","getScale","nameOrFunction","maybeScale","isRegisteredScale","internalScaleFunctions","fnctx","visitors","__bandwidth","_range","geoMethod","globalMethod","geoArea","geoBounds","deltaMax","geoCentroid","channel_luminance_value","channelValue","luminance","equalArray","equalObject","removePredicate","accessors","seq","treeNodes","_window","markname","functionContext","isDefined","isString","toDate","indexof","_sequence","_array","lastindexof","_sequence2","repl","_sequence3","pluck","contrast","color1","color2","lum1","lum2","monthFormat","monthAbbrevFormat","dayAbbrevFormat","inScope","pinchDistance","pinchAngle","windowSize","bandspace","setdata","pathShape","retval","toggle","_trigger","lassoAppend","lasso","lassoPath","intersectLasso","pixelLasso","bb","MIN_SAFE_INTEGER","testx","testy","intersections","_polygon$j","prevX","prevY","_polygon$i","pointInPolygon","eventFunctions","thisPrefix","astVisitors","codegenParams","codeGenerator","expressionFunction","signalName","getSignal","signalRef","$expr","$fields","$params","miss","unitIdx","isMulti","vl5","resUnit","resolved","multiRes","acc","Skip","Swap","canonicalType","expression","expressionCodegen","parameter","_encode","adjustSpatial","lt","gt","_compare","parseParameter","PARSERS","$ref","$key","$flat","parseParameters","parameterExpression","$field","$name","$encode","enc","encodeExpression","$output","$compare","$order","$tupleid","$subflow","subctx","operators","Subcontext","ariaLabel","subcontext","_keys2","isCollect","$ingest","$format","$request","unresolved","signal","_stream","operatorExpression","eventExpression","handlerExpression","eventConfig","parseOperator","parseOperatorParameters","parseStream","updates","parseUpdate","isOperator","srcid","getState","dataset","substate","Default","globalCursor","dataref","_runtime","_viewWidth","_viewHeight","resizeRenderer","_renderer","_handler","_resizeListeners","eventExtend","vega","itemGroup","VIEW","NO_TRAP","trap","trackEventListener","_eventListeners","permit","_eventConfig","itemFilter","markTarget","BindClass","NameClass","RadioClass","Event","valuesEqual","prepend","initializeRenderer","_padding","paddingObject","renderHeadless","_renderHeadless","_scenegraph","_renderToImageURL","toBlobURL","mime","blob","_renderToCanvas","_renderToSVG","Width","Height","dataTest","signalTest","formatArray","formatTooltip","View","_elBind","_renderType","_globalCursor","_preventDefault","_timers","defaults","unpack","initializeEventConfig","runtime","_bind","bindings","resetSize","_resizeWidth","_resizeHeight","resizePadding","initializeResize","_background","user","hover","lookupSignal","findOperatorHandler","addOperatorListener","removeOperatorListener","_desc","_resetRenderer","rerun","addResizeListener","removeResizeListener","addSignalListener","removeSignalListener","addDataListener","removeDataListener","_restart","prevent","allow","finalize","timers","hoverSet","leaveSet","elBind","initializeAria","prevHandler","initializeHandler","binding","toImageURL","toSVG","DEFAULT_SOURCE","MARKS","LBRACK","RBRACK","LBRACE","RBRACE","COLON","COMMA","NAME","GT","DEFAULT_MARKS","eventSelector","selector","parseMerge","parseSelector","endChar","pushChar","popChar","parseBetween","parseThrottle","isMarkType","parseAutosize","parsePadding","encoder","addEncode","addEncoders","_name","extendEncode","MarkRole","AxisDomainRole","AxisGridRole","AxisLabelRole","AxisTickRole","AxisTitleRole","LegendBandRole","LegendEntryRole","LegendGradientRole","LegendLabelRole","LegendSymbolRole","LegendTitleRole","TitleTextRole","TitleSubtitleRole","applyDefault","entry$1","_color","resolveField","parseEncode","applyDefaults","parseBlock","parse$1","OUTER","OUTER_INVALID","outerError","parseSignal","addSignal","addBinding","Entry","refs","fieldRef$1","keyFieldRef","_compareRef","Descending","aggrField","Scope$1","isSignal","hasSignal","specValue","deref","mergeStream","nestedStream","eventStream","streamParameters","addStream","eventSource","markrole","filterMark","OP_VALUE_EXPR","isSubscope","mergeSources","addUpdate","streamSource","FIELD_REF_ID","MULTIDOMAIN_SORT_OPS","parseScale","parseScaleDomain","parseScaleRange","parseLiteral","parseScaleInterpolate","parseScaleNice","parseArray","objectProperty","parseScaleBins","dataLookupError","explicitDomain","multipleDomain","singularDomain","valuesRef","parseSort","domainRef","extentRef","coll","addDataPipeline","fieldRef","ordinalMultipleDomain","quantileMultipleDomain","numericMultipleDomain","countsRef","sortRef","multidomain","parseParameter$1","Vertical","Index","Offset","Perc","Perc2","Value","GuideLabelStyle","GuideTitleStyle","GroupTitleStyle","GroupSubtitleStyle","Size","LegendScales","GroupMark","RectMark","RuleMark","SymbolMark","TextMark","guideGroup","isVertical","symbolDirection","gradientDirection","gradientLength","gradientWidth","gradientThickness","gradientHeight","entryColumns","getEncoding","anchorExpr","alignExpr$1","extendOffset","guideMark","extras","legendGradient","userEncode","thickness","legendGradientDiscrete","dataRef","vv","alignExpr","baselineExpr","legendGradientLabels","overlap","labelLimit","gradientLabelLimit","labelOffset","gradientLabelOffset","legendSymbolGroups","symbolOffset","valueRef","xSignal","yEncode","baseFill","baseStroke","symbolBaseFillColor","symbolBaseStrokeColor","facet","isL","isR","isLR","isVG","alignFlip","exprAlign","exprAnchor","exprAngle","exprBaseline","getRole","parseTransform","pdef","lookupRef","parseIndexParameter","parseSubParameter","parseSubParameters","projectionRef","parameterValue","isExpr","isField","isCompare","compareRef","_expr","outerExpr","exprRef","outerField","isData","getDataRef","DataScope","aggregate","fieldKey","addSortField","ds","optype","sortKey","parseTrigger","parseMark","layoutRef","boundRef","keyRef","parseData$1","joinRef","$context","markpath","markRef","generates","encodeRef","pushState","subscope","addData","toRuntime","parseFacet","parseSubflow","popState","tol","parseOverlap","sieve","parseLegend","entryLayout","legendEncode","scaleType","scaleCount","legendType","entryRef","tickMinStep","legendSymbolLayout","getChannel","getFontSize","sizeExpression","_anchor","legendTitle","buildLegendEncode","fromEntries","angleExpr","parseTitle","buildTitle","titleEncode","buildSubTitle","groupEncode","parseData","upstream","analyze","getSign","ifLeftTopExpr","ifX","ifXEnc","ifY","ifYEnc","ifTop","ifTopExpr","ifRight","ifRightExpr","$orient","ifEnc","ifExpr","isSimple","toExpr","ifOrient","fallback","axisConfig","styleProp","axisGrid","vscale","gridScale","_entry","tickPos","gridStart","gridEnd","flushExpr","axisTitle","titlePos","autoY","autoX","autoLayout","parseAxis","or","axisBand","xyKeys","axisX","axisY","orientKeys","axisTop","axisBottom","axisLeft","axisRight","axisEncode","tickBand","ticksRef","tickSize","axisTicks","flushOffset","labelAlign","labelBaseline","flushOn","offsetExpr","axisLabels","pos0","pos1","axisDomain","buildAxisEncode","parseScope","preprocessed","_name2","addProjection","parseProjection","addScale","initScale","parseSignalUpdates","axes","parseLambdas","rootEncode","parseView","signalObject","collectSignals","Scope","lambdas","_subid","_nextsub","_parent","_lookup","_markpath","Subscope","propertyLambda","arrayLambda","objectLambda","defaultFont","defaultColor","lightGray","square","subtitlePadding","bandPosition","domainWidth","domainColor","gridWidth","gridColor","labelAngle","labelPadding","tickColor","tickOffset","tickRound","tickWidth","gridAlign","columnPadding","rowPadding","gradientStrokeColor","gradientStrokeWidth","labelOverlap","symbolLimit","symbolType","symbolSize","symbolStrokeWidth","titleLimit","titleOrient","category","heatmap","ramp","vref","annotate","_field","check","isExpr$1","sig","_keyRef","hasOwnSignal","addScaleProj","projectionType","dataScope","Ops","Unary","ms","EventFunctions","DisallowedMethods","setImmediate","Visitors","interpret","_event$vega","isLogicalOr","isLogicalAnd","and","isLogicalNot","not","forEachLeaf","normalizeLogicalComposition","normalizer","deepEqual","duplicate","never","isNullOrFalse","_step3$value","_step4$value","mergeDeep","dest","_src","deepMerge_","_step6","_iterator6","dict","dictKeys","_step7","_iterator7","setEqual","_step8","_iterator8","hasIntersection","_step9","_iterator9","prefixGenerator","_step10","_iterator10","_step11","wrappedWithAccessors","computedPrefixes","_iterator11","fieldIntersection","isEmpty","varName","alphanumericS","logicalExpr","deleteNestedProperty","orderedProps","titleCase","accessPathWithDatum","pieces","flatAccessWithDatum","escapePathAccess","replacePathInField","removePathFromField","accessPathDepth","getFirstDefined","_args","idCounter","uniqueId","resetIdCounter","internalField","isInternalField","normalizeAngle","isNumeric","ROW","COLUMN","FACET","XOFFSET","YOFFSET","RADIUS","RADIUS2","THETA","THETA2","LATITUDE","LONGITUDE","LATITUDE2","LONGITUDE2","COLOR","FILL","STROKE","SHAPE","ANGLE","OPACITY","FILLOPACITY","STROKEOPACITY","STROKEWIDTH","STROKEDASH","TEXT","ORDER","DETAIL","KEY","TOOLTIP","HREF","DESCRIPTION","POLAR_POSITION_CHANNEL_INDEX","radius2","isPolarPositionChannel","GEO_POSIITON_CHANNEL_INDEX","longitude2","latitude","latitude2","getPositionChannelFromLatLong","isGeoPositionChannel","GEOPOSITION_CHANNELS","UNIT_CHANNEL_INDEX","isColorChannel","FACET_CHANNEL_INDEX","FACET_CHANNELS","CHANNEL_INDEX","CHANNELS","SINGLE_DEF_CHANNEL_INDEX","SINGLE_DEF_UNIT_CHANNEL_INDEX","isSingleDefUnitChannel","isChannel","SECONDARY_RANGE_CHANNEL","isSecondaryRangeChannel","getMainRangeChannel","getVgPositionChannel","getSecondaryRangeChannel","getSizeChannel","getOffsetChannel","getOffsetScaleChannel","getMainChannelFromOffsetChannel","UNIT_CHANNELS","NONPOSITION_CHANNEL_INDEX","NONPOSITION_CHANNELS","POSITION_SCALE_CHANNEL_INDEX","POSITION_SCALE_CHANNELS","isXorY","POLAR_POSITION_SCALE_CHANNEL_INDEX","POLAR_POSITION_SCALE_CHANNELS","getPositionScaleChannel","sizeType","OFFSET_SCALE_CHANNEL_INDEX","isXorYOffset","NONPOSITION_SCALE_CHANNEL_INDEX","NONPOSITION_SCALE_CHANNELS","SCALE_CHANNEL_INDEX","SCALE_CHANNELS","isScaleChannel","supportMark","ALL_MARKS","ALL_MARKS_EXCEPT_GEOSHAPE","bar","geoshape","getSupportedMark","rangeType","AGGREGATE_OP_INDEX","MULTIDOMAIN_SORT_OP_INDEX","isArgminDef","isArgmaxDef","isAggregateOp","COUNTING_OPS","isCountingAggregateOp","SUM_OPS","SHARED_DOMAIN_OPS","binToString","normalizeBin","isParameterExtent","isBinning","isBinParams","binned","isBinned","autoMaxBins","isExprRef","replaceExprRef","newIndex","signalRefOrValue","extractTitleConfig","titleConfig","subtitleColor","subtitleFont","subtitleFontSize","subtitleFontStyle","subtitleFontWeight","subtitleLineHeight","titleMarkConfig","nonMarkTitleProperties","subtitleMarkConfig","isText","isSignalRef","isVgRangeStep","isDataRefDomain","VG_MARK_CONFIGS","VG_MARK_INDEX","VG_CORNERRADIUS_CHANNELS","signalOrValueRefWithCondition","conditionalSignalRefOrValue","signalOrValueRef","exprFromSignalRefOrValue","exprFromValueRefOrSignalRef","signalOrStringValue","getStyles","_mark$style","getMarkPropOrConfig","vgChannel","ignoreVgConfig","getMarkConfig","getMarkStyleConfig","styleConfigIndex","getStyleConfig","styleConfig","sortParams","orderDef","fieldRefOption","orderChannelDef","_orderChannelDef$sort","mergeTitleFieldDefs","fdToMerge","fieldDef1","mergeTitle","title1","title2","mergeTitleComponent","v1Val","v2Val","explicit","invalidSpec","FIT_NON_SINGLE","containerSizeNonSingle","containerSizeNotCompatibleWithAutosize","fitDirection","droppingFit","unknownField","cannotProjectOnChannelWithoutField","cannotProjectAggregate","selectionNotSupported","NEEDS_SAME_SELECTION","columnsNotSupportByRowCol","differentParse","local","invalidTransformIgnored","customFormatTypeNotAllowed","invalidFieldType","droppingColor","emptyFieldDef","fieldDef","incompatibleChannel","markOrFacet","when","offsetEncodingScaleIgnored","channelShouldBeDiscrete","channelShouldBeDiscreteOrDiscretizing","discreteChannelCannotEncode","unaggregateDomainHasNoEffectForRawField","unaggregateDomainWithNonSharedDomainOp","unaggregatedDomainWithLogScale","scalePropertyNotWorkWithScaleType","stepDropped","MORE_THAN_ONE_SORT","invalidTimeUnit","unitName","errorBand1DNotSupport","channelRequiredForBinned","main","_current2","isDateTime","TIMEUNIT_PARTS","MONTHS","SHORT_MONTHS","DAYS","SHORT_DAYS","dateTimeParts","lowerM","monthIndex","shortM","shortMonthIndex","normalizeMonth","normalizeQuarter","lowerD","dayIndex","shortD","shortDayIndex","normalizeDay","dateTimeToExpr","LOCAL_SINGLE_TIMEUNIT_INDEX","binnedyear","binnedyearquarter","binnedyearquartermonth","binnedyearmonth","binnedyearmonthdate","binnedyearmonthdatehours","binnedyearmonthdatehoursminutes","binnedyearmonthdatehoursminutesseconds","binnedyearweek","binnedyearweekday","binnedyearweekdayhours","binnedyearweekdayhoursminutes","binnedyearweekdayhoursminutesseconds","binnedyeardayofyear","binnedutcyear","binnedutcyearquarter","binnedutcyearquartermonth","binnedutcyearmonth","binnedutcyearmonthdate","binnedutcyearmonthdatehours","binnedutcyearmonthdatehoursminutes","binnedutcyearmonthdatehoursminutesseconds","binnedutcyearweek","binnedutcyearweekday","binnedutcyearweekdayhours","binnedutcyearweekdayhoursminutes","binnedutcyearweekdayhoursminutesseconds","binnedutcyeardayofyear","isBinnedTimeUnit","timeUnit","isBinnedTimeUnitString","isUTCTimeUnit","VEGALITE_TIMEFORMAT","getTimeUnitParts","part","containsTimeUnit","getSmallestTimeUnitPart","fullTimeUnit","lastTimeUnit","dateExpr","dateTimeExprToExpr","timeUnitSpecifierExpression","timeUnitParts","normalizeTimeUnit","getLocalTimeUnitFromUTCTimeUnit","durationExpr","normalizedTimeUnit","smallestUnitPart","startDate","_getDateTimePartAndSt","getDateTimePartAndStep","endDate","DATE_PARTS","isDatePart","isFieldEqualPredicate","isFieldLTPredicate","isFieldLTEPredicate","lte","isFieldGTPredicate","isFieldGTEPredicate","gte","isFieldRangePredicate","isFieldOneOfPredicate","oneOf","in","isFieldPredicate","predicateValueExpr","valueExpr","wrapTime","fieldFilterExpression","useInRange","rawFieldExpr","fieldExpr","_upper","_lower","predicateValuesExpr","isFieldValidPredicate","fieldValidPredicate","_lower2","_upper2","exprs","normalizePredicate","Type","quantitative","temporal","nominal","QUANTITATIVE","ORDINAL","TEMPORAL","NOMINAL","GEOJSON","ScaleType","LINEAR","LOG","POW","SQRT","SYMLOG","IDENTITY","SEQUENTIAL","TIME","QUANTILE","QUANTIZE","THRESHOLD","BIN_ORDINAL","POINT","BAND","SCALE_CATEGORY_INDEX","scaleCompatible","scaleType1","scaleType2","scaleCategory1","scaleCategory2","SCALE_PRECEDENCE_INDEX","scaleTypePrecedence","QUANTITATIVE_SCALES","CONTINUOUS_TO_CONTINUOUS_SCALES","isQuantitative","CONTINUOUS_TO_DISCRETE_SCALES","CONTINUOUS_DOMAIN_SCALES","DISCRETE_DOMAIN_SCALES","hasDiscreteDomain","hasContinuousDomain","isContinuousToContinuous","isContinuousToDiscrete","isParameterDomain","SCALE_PROPERTY_INDEX","rangeMax","rangeMin","NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTY_INDEX","NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTIES","scaleTypeSupportProperty","channelScalePropertyIncompatability","ARC","AREA","BAR","IMAGE","LINE","RECT","RULE","TICK","TRAIL","CIRCLE","SQUARE","GEOSHAPE","isPathMark","isRectBasedMark","PRIMITIVE_MARKS","isMarkDef","FILL_STROKE_CONFIG","VL_ONLY_MARK_CONFIG_PROPERTIES","timeUnitBandSize","timeUnitBandPosition","MARK_CONFIGS","isRelativeBandSize","BAR_CORNER_RADIUS_INDEX","defaultBarConfig","binSpacing","continuousBandSize","minBandSize","defaultRectConfig","midPointRefWithPositionInvalidTest","channelDef","markDef","midPoint","isFieldDef","fieldInvalidTestValueRef","wrapPositionInvalidTest","fieldInvalidPredicate","valueRefForFieldOrDatumDef","isDatumDef","interpolatedSignalRef","fieldOrDatumDef","fieldOrDatumDef2","startSuffix","_ref2$bandPosition","channel2Def","defaultRef","isFieldOrDatumDef","_bandPosition2","isTypedFieldDef","_bandPosition","getBandPosition","fieldDef2","binSuffix","binRequiresRange","isValueDef","offsetMixins","widthHeightValueOrSignalRef","isCustomFormatType","customFormatExpr","formatSignalRef","normalizeStack","formatCustomType","fieldToFormat","channelDefType","customFormatTypes","normalizedNumberFormatType","normalizedNumberFormat","numberFormatType","timeFormatType","isFieldOrDatumDefForTimeFormat","_normalizeTimeUnit","_fieldOrDatumDef$scal","rawTimeFormat","isUTCScale","formatExpression","timeFormatExpression","isScaleFieldDef","specifiedFormat","binFormatExpression","formatExpr","datumDef","datumDefToExpr","guideFormat","omitTimeFormatConfig","isPositionFieldOrDatumDef","_normalizeTimeUnit2","guideFormatType","_normalizeTimeUnit3","binNumberFormatExpr","startField","endField","DEFAULT_SORT_OP","SORT_BY_CHANNEL_INDEX","isSortByChannel","isSortByEncoding","isSortField","isSortArray","isFacetMapping","isFacetFieldDef","isFacetSpec","toFieldDefBase","isSortableFieldDef","getBandSize","_config$mark$type3","_config$mark$type","_config$mark$type2","useVlSizeChannel","sizeChannel","discreteBandSize","hasBandEnd","isOrderOnlyDef","isConditionalDef","hasConditionalFieldDef","hasConditionalFieldOrDatumDef","isContinuousFieldOrDatumDef","isNumericDataDef","isUnbinnedQuantitativeFieldOrDatumDef","isMarkPropFieldOrDatumDef","isStringFieldOrDatumDef","toStringFieldDef","argAccessor","isCount","nofn","isOpFieldDef","_opt$binSuffix","_opt$suffix","_opt$suffix2","forAs","defaultTitleFormatter","fieldTitle","timeUnitParams","functionalTitleFormatter","countTitle","verbalTitleFormatter","titleFormatter","setTitleFormatter","formatter","_getGuide","allowDisabling","_ref3$includeDefault","includeDefault","guideTitle","getGuide","defaultTitle","getFormatMixins","_getGuide2","guide","getFieldDef","getFieldOrDatumDef","initChannelDef","initFieldOrDatumDef","fd","guideType","_fd$guideType","_formatType2","newGuide","initFieldDef","initDatumDef","_ref5$compositeMark","compositeMark","fullType","getFullName","newType","_fieldDef$scale","defaultType","compatible","COMPATIBLE","_def$scale","channelCompatibility","encoding","labelOrient","isTimeFieldDef","undefinedIfExprNotRequired","isTime","isLocalSingleTimeUnit","valueArray","CONDITIONAL_AXIS_PROP_INDEX","vgProp","labelColor","labelFont","labelFontSize","labelFontStyle","labelFontWeight","labelOpacity","gridDash","gridDashOffset","gridOpacity","tickDash","tickDashOffset","tickOpacity","isConditionalAxisValue","AXIS_PARTS","AXIS_PROPERTY_TYPE","gridCap","domainCap","domainDash","domainDashOffset","domainOpacity","labelBound","labelFlush","labelFlushOffset","labelLineHeight","labelSeparation","tickCap","titleAlign","titleAngle","titleBaseline","titleFont","titleFontStyle","titleFontWeight","titleOpacity","titleX","titleY","tickExtra","COMMON_AXIS_PROPERTIES_INDEX","AXIS_PROPERTIES_INDEX","labelExpr","isAxisProperty","AXIS_CONFIGS","axisDiscrete","axisPoint","axisQuantitative","axisTemporal","axisXBand","axisXDiscrete","axisXPoint","axisXQuantitative","axisXTemporal","axisYBand","axisYDiscrete","axisYPoint","axisYQuantitative","axisYTemporal","isUnitSpec","CompositeMarkNormalizer","getMarkType","channelHasFieldOrDatum","channelHasNestedOffsetScale","isAggregate","extractTransformsFromEncoding","oldEncoding","aggOp","isTitleDefined","newField","newFieldDef","aggregateEntry","secondaryChannel","isNonPositionScaleChannel","initEncoding","normalizedEncoding","mainChannel","positionDef","markSupported","primaryFieldDef","markChannelCompatible","normalizeEncoding","newChannelDef","mapping","pathGroupingFields","details","_fieldDef","getCompositeMarkTooltip","tooltipSummary","continuousAxisChannelDef","encodingWithoutContinuousAxis","withFieldName","fiveSummaryTooltip","fieldPrefix","titlePrefix","mainTitle","escape","tooltipFieldDefs","fieldDefs","makeCompositeAggregatePartFactory","compositeMarkDef","continuousAxis","sharedEncoding","compositeMarkConfig","partName","positionPrefix","_ref2$endPositionPref","endPositionPrefix","_ref2$extraEncoding","extraEncoding","partLayerMixins","partBaseSpec","compositeMarkContinuousAxis","continuousAxisChannelDef2","continuousAxisChannelDefError","continuousAxisChannelDefError2","filterAggregateFromChannelDef","continuousAxisWithoutAggregate","compositeMarkOrient","xAggregate","yAggregate","_toPropertyKey","hint","prim","toPrimitive","_toPrimitive","BOXPLOT","boxPlotNormalizer","normalizeBoxPlot","getBoxPlotType","_markDef$extent","_spec","outerSpec","_outerSpec$transform","boxplot","sizeValue","boxPlotType","_boxParams","_compositeMarkContinu","continuousFieldName","boxplotSpecificAggregate","boxParamsQuartiles","postAggregateCalculates","calculate","_spec$encoding","oldEncodingWithoutContinuousAxis","_filterTooltipWithAgg","customTooltipWithAggregatedField","customTooltipWithoutAggregatedField","filteredEncoding","filterTooltipWithAggregatedField","_extractTransformsFro","ticksOrient","boxOrient","boxParams","encodingWithoutSizeColorAndContinuousAxis","makeBoxPlotPart","makeBoxPlotExtent","makeBoxPlotBox","makeBoxPlotMidTick","fiveSummaryTooltipEncoding","endTick","whiskerTooltipEncoding","whiskerLayers","boxLayers","layer","filteredLayersMixins","_filteredLayersMixins","lowerBoxExpr","upperBoxExpr","iqrExpr","lowerWhiskerExpr","upperWhiskerExpr","joinaggregateTransform","joinaggregate","filteredWhiskerSpec","encodingWithoutSizeColorContinuousAxisAndTooltip","axisWithoutTitle","outlierLayersMixins","filteredLayersMixinsTransforms","continousAxisField","ERRORBAR","errorBarNormalizer","normalizeErrorBar","_errorBarParams","errorBarParams","tooltipEncoding","makeErrorBarPart","errorbar","errorBarOrientAndInputType","xError","xError2","yError","yError2","errorBarIsInputTypeRaw","inputType","isTypeAggregatedUpperLower","errorBarIsInputTypeAggregatedUpperLower","isTypeAggregatedError","errorBarIsInputTypeAggregatedError","_errorBarOrientAndInp","_errorBarAggregationA","errorBarSpecificAggregate","tooltipTitleWithFieldName","centerOp","lowerExtentOp","upperExtentOp","getTitlePrefix","postAggregateCalculate","errorBarAggregationAndCalculation","oldAggregate","oldGroupBy","ERRORBAND","errorBandNormalizer","normalizeErrorBand","errorBandDef","makeErrorBandPart","errorband","is2D","bandMark","bordersMark","compositeMarkRegistry","VL_ONLY_LEGEND_CONFIG","HEADER_TITLE_PROPERTIES_MAP","HEADER_LABEL_PROPERTIES_MAP","labelAnchor","HEADER_TITLE_PROPERTIES","HEADER_LABEL_PROPERTIES","HEADER_CONFIGS","headerRow","headerColumn","headerFacet","LEGEND_SCALE_CHANNELS","COMMON_LEGEND_PROPERTY_INDEX","clipHeight","gradientOpacity","legendX","legendY","symbolDash","symbolDashOffset","symbolFillColor","symbolOpacity","symbolStrokeColor","SELECTION_ID","defaultConfig","encodings","isLegendBinding","isLegendStreamBinding","isSelectionParameter","assembleParameterSignals","_signal","isConcatSpec","isVConcatSpec","isHConcatSpec","getStepFor","_step$for","offsetIsDiscrete","for","isStep","isFrameMixins","COMPOSITION_LAYOUT_PROPERTIES","spacing","getViewConfigContinuousSize","viewConfig","_viewConfig$channel","getViewConfigDiscreteStep","getViewConfigDiscreteSize","DEFAULT_STEP","_viewConfig$channel2","continuousWidth","continuousHeight","outliers","borders","pointPadding","barBandPaddingInner","rectBandPaddingInner","bandWithNestedOffsetPaddingInner","bandWithNestedOffsetPaddingOuter","minFontSize","maxFontSize","minOpacity","maxOpacity","minSize","minStrokeWidth","maxStrokeWidth","quantileCount","quantizeCount","gradientHorizontalMaxLength","gradientHorizontalMinLength","gradientVerticalMaxLength","gradientVerticalMinLength","unselectedOpacity","selection","tab10","DEFAULT_FONT_SIZE","guideLabel","groupSubtitle","DEFAULT_COLOR","gray0","gray1","gray2","gray3","gray4","gray5","gray6","gray7","gray8","gray9","gray10","gray11","gray12","gray13","gray14","gray15","getAxisConfigInternal","axisConfigInternal","configPropsWithExpr","initConfig","specifiedConfig","fontConfig","colorSignalConfig","fontSizeSignalConfig","outputConfig","markConfigType","axisConfigType","headerConfigType","styleConfigInternal","getStyleConfigInternal","MARK_STYLES","VL_ONLY_CONFIG_PROPERTIES","VL_ONLY_ALL_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX","stripAndRedirectConfig","markType","_prop6","vlOnlyMarkSpecificConfigs","_step12","_iterator12","_prop5","redirectConfigToStyleConfig","_prop3","_extractTitleConfig","redirectTitleConfig","toProp","compositeMarkPart","_toProp","_toProp2","isLayerSpec","SpecMapper","mapFacet","isRepeatSpec","mapRepeat","mapHConcat","mapVConcat","mapConcat","mapLayerOrUnit","mapLayer","mapUnit","subspec","hconcat","vconcat","STACK_OFFSET_INDEX","STACKABLE_MARKS","STACK_BY_DEFAULT_MARKS","isUnbinnedQuantitative","potentialStackedChannel","isCartesian","xDef","yDef","_stackedFieldDef$scal","_stackedFieldDef$scal2","fieldChannel","stackedFieldDef","stackedField","dimensionChannel","getDimensionChannel","groupbyChannels","groupbyFields","dimensionDef","dimensionField","dimensionOffsetChannel","dimensionOffsetDef","dimensionOffsetField","stackBy","isStackOffset","initMarkdef","originalMarkDef","actual","specifiedOrient","xIsMeasure","yIsMeasure","xIsTemporal","yIsTemporal","cornerRadiusEnd","dropLineAndPoint","dropLineAndPointFromConfig","getPointOverlay","markConfig","getLineOverlay","PathOverlayNormalizer","normParams","pointOverlay","lineOverlay","stackProps","overlayEncoding","stackFieldChannel","replaceRepeaterInFacet","repeater","replaceRepeaterInMapping","replaceRepeaterInFieldDef","replaceRepeaterInEncoding","replaceRepeatInProp","isRepeatRef","replaceRepeaterInFieldOrDatumDef","replaceRepeaterInChannelDef","_fd","RuleForRangedLineNormalizer","mainChannelDef","hasX2","hasY2","_excluded4","_excluded5","_excluded6","_excluded7","_excluded8","CoreNormalizer","_SpecMapper","nonFacetUnitNormalizers","hasRow","hasColumn","hasFacet","mapFacetedUnit","parentEncoding","parentProjection","specWithReplacedEncoding","repeaterPrefix","mapUnitWithParentEncodingOrProjection","normalizeLayerOrUnit","unitNormalizer","hasMatchingType","isLayerRepeatSpec","mapLayerRepeat","mapNonLayerRepeat","childSpec","_params$repeater","_params$repeaterPrefi","layerValue","childRepeater","childName","_childSpec$data","remainingProperties","_params$repeater2","_params$repeaterPrefi2","repeatValue","rowValue","columnValue","mergedProjection","mergeProjection","mergedEncoding","mergeEncoding","_this$getFacetMapping","getFacetMappingAndLayout","facetMapping","newEncoding","facets","defWithoutLayout","_arr2","_layout$prop","_align","_center","_spacing","_columns","otherParams","_ref2$encoding","parentChannelDef","mergedChannelDef","isFilter","isImputeSequence","isLookup","isPivot","isDensity","isRegression","isLoess","isSample","isWindow","isJoinAggregate","isFlatten","isCalculate","isBin","isImpute","isTimeUnit","isStack","isFold","isExtent","SelectionCompatibilityNormalizer","_normParams$emptySele","_normParams$selection","emptySelections","selectionPredicates","normalizeTransforms","normalizeChannelDef","_normParams$selection2","selDef","normalizeBinExtent","_t$from","_enc$scale","_enc$scale$domain","cond","_normalizeChannelDef","_param","normalizeSelectionComposition","_normParams$emptySele2","_a$param","pred","TopLevelSelectionsNormalizer","selections","_normParams$path","_params$path","addSpecNameToParams","normalizedSpec","topLevelSelectionNormalizer","coreNormalizer","selectionCompatNormalizer","normalizeGenericSpec","isFitCompatible","autosizeDefault","_normalizeAutoSize","normalizeAutoSize","TOP_LEVEL_PROPERTIES","extractTopLevelProperties","includeParams","Split","combine","getWithExplicit","setWithExplicit","makeExplicit","makeImplicit","tieBreakByComparing","propertyOf","defaultTieBreaker","mergeValuesWithExplicit","tieBreaker","DataSourceType","AncestorParse","_Split","parseNothing","isUrlData","isInlineData","isNamedData","isGenerator","isSequenceGenerator","isSphereGenerator","isGraticuleGenerator","assembleProjection","hasLegend","assembleInit","assembled","assembleUnitSelectionMarks","_model$component$sele4","selCmpt","selectionCompilers","cleanupEmptyOnArray","DataFlowNode","debugName","_children","addChild","oldChild","newParent","OutputNode","_DataFlowNode","refCounts","cloneObj","_hash","isTimeUnitTransformComponent","timeUnitComponent","offsetAs","TimeUnitNode","formula","newFormula","_step2$value","fieldAs","_timeUnit","reduceFieldDef","isUnitModel","TUPLE_FIELDS","SelectionProjectionComponent","hasChannel","hasField","hasSelectionId","_selCmpt$project","_encodings","_fields2","sg","initVal","_fields","vgField","getScaleComponent","geoChannel","allSignals","scaleBindings","topLevelSignals","isTopLevelLayer","namedSg","VL_SELECTION_RESOLVE","_model$parent$parent","isLayerModel","BRUSH","SCALE_TRIGGER","GEO_INIT_TICK","INIT","hasProjection","filterExpr","_a$filter","tupleSg","TUPLE","scaledInterval","vname","visual","projectionName","scaled","getSizeSignalRef","coord","von","hasScales","vinit","initIdx","initSg","_vinit","channelSignals","centerSg","_selCmpt$project$hasC","xvname","yvname","xinit","yinit","sizeSg","hasCenterSg","getName","visualSignals","triggerSg","scaleTriggers","_proj$signals","dataSignals","hasTick","_marks","_selCmpt$project$hasC2","STORE","_selCmpt$mark","vgStroke","_model$component$sele","fieldsSg","brushes","cmpt","wrapCondition","refFn","vgConditions","conditionValueRef","isConditionalParameter","parseSelectionPredicate","cDef","textRef","_getFormatMixins","tooltipRefForEncoding","reactiveGeom","tooltipRefFromChannelDef","markTooltip","tooltipData","formatConfig","tooltipFormat","toSkip","fDef","channel2","_getFormatMixins2","_tuples$_i","keyValues","enableAria","ariaRoleDesc","descriptionValue","nonPosition","_defaultValue","_opt$filled","_getMarkPropOrConfig","_getMarkPropOrConfig2","transparentIfNeeded","defaultFill","defaultStroke","colorVgChannel","fillStrokeMarkDefAndConfig","positionOffset","baseChannel","_ref$encoding","offsetType","markDefOffsetValue","pointPosition","defaultPos","_positionOffset","pointPositionDefaultRef","positionRef","definedValueOrConfig","domainDefinitelyIncludesZero","ALIGNED_X_CHANNEL","BASELINED_Y_CHANNEL","vgAlignedPositionChannel","defaultAlign","alignExcludingSignal","alignChannel","pointOrRangePosition","defaultPos2","rangePosition","pos2Mixins","_position2orSize","vgSizeChannel","position2Ref","position2orSize","pointPosition2OrSize","dimensionSize","rectPosition","_encoding$sizeChannel","channelDef2","hasSizeDef","offsetScaleChannel","isBarBand","sizeMixins","offsetScaleName","offsetScale","hasSizeFromMarkOrEncoding","bandSize","hasFieldDef","bandWidth","scaleRange","_config$scale","bandPaddingInner","defaultStep","defaultSizeRef","defaultBandAlign","posRef","vgChannel2","sizeOffset","positionAndSize","_model$component$axes","_axis$get","axisTranslate","_positionOffset2","_positionOffset3","offset2","bandSizeExpr","binSpacingOffset","getBinSpacing","binSpacingOffset2","rectBinRef","startRef","rectBinPosition","isEnd","spacingOffset","reverseExpr","translateExpr","minBandSizeExpr","spacingAndSizeOffset","ALWAYS_IGNORE","baseEncodeEntry","_ref$fill","_ref$stroke","markDefProperties","wrapAllFieldsInvalid","_ref4$invalid","filterIndex","aggregator","scaleComponent","allFieldsInvalidPredicate","_ref$invalid","_model$stack","valueIfDefined","VORONOI","nearest","cellDef","isVoronoi","exists","_mark$name","inputBindings","disableDirectManipulation","_bind$p$field","sgname","TOGGLE","modifyExpr","tpl","addClear","_loop2","vIdx","tIdx","legendBindings","projLen","selDef_","legendFilter","_evt$filter","_evt","selName","markName","sgName","ANCHOR","DELTA","boundScales","onDelta","_scaleCmpt$get","_scaleCmpt$get2","scaleCmpt","reversed","panFn","zoomFn","MODIFY","facetModel","isFacetModel","getFacetModel","requiresSelectionId","identifier","startsWithDatum","getDependentFields","dependents","FilterNode","_dependentFields","dfnode","getSelectionComponent","tunode","insertAsParentOf","parseSelectionExtent","filterOp","isSelectionPredicate","setAxisEncode","vgRef","_axis$encode","_a$part","_b$update","assembleAxis","axisCmpt","_axisCmpt$combine","disable","propType","valueOrSignalRef","conditions","propIndex","valueOrSignalCRef","_propIndex","_vgProp","mainExtracted","_axis$encode2","_part2","hasAxisPart","titleString","assembleTitle","assembleAxisSignals","getAxisConfigFromConfigTypes","configTypes","configType","orient1","orientConfig1","orientConfig2","conditionalOrientAxisConfig","getAxisConfigStyle","axisConfigTypes","toMerge","_config$configType","getAxisConfig","axisConfigs","configFrom","configValue","_axisConfigs$configFr","axisRules","_axis$grid","defaultGrid","gridChannel","_gridScale","defaultLabelAlign","defaultLabelBaseline","_ref9","_axis$labelFlush","defaultLabelFlush","_ref10","_axis$labelOverlap","hasTimeUnit","defaultLabelOverlap","_ref11","_ref12","_axis$tickCount","_ref16","defaultTickCount","_ref17","_ref13","fieldDefTitle","getFieldDefTitle","typedFieldDef","_ref14","_values","_ref15","_axis$zindex","defaultZindex","normalizeAngleExpr","alwaysIncludeMiddle","orientIsTop","orientIsLeft","_op","mainOrient","orientIsMain","_orientIsMain","CalculateNode","forEachFieldDef","sortValue","sortArrayIndexField","getHeaderChannel","getHeaderProperty","headerSpecificConfig","getHeaderProperties","HEADER_CHANNELS","HEADER_TYPES","assembleTitleGroup","facetFieldDef","_getHeaderProperties","headerChannel","defaultHeaderGuideBaseline","defaultHeaderGuideAlign","assembleHeaderProperties","assembleHeaderGroups","layoutHeader","headerType","assembleHeaderGroup","getSort","_sort$order","_getHeaderProperties2","titleTextExpr","headerComponent","isFacetWithoutRowCol","hasAxes","sizeSignal","LAYOUT_TITLE_BAND","getLayoutTitleBand","propertiesMap","sizeSignals","layoutSize","stepSignal","sizeExpr","isWidth","safeExpr","cardinality","getSizeTypeFromLayoutSizeType","layoutSizeType","guideEncodeEntry","valueDef","defaultScaleResolve","isConcatModel","parseGuideResolve","channelScaleResolve","LEGEND_COMPONENT_PROPERTY_INDEX","LEGEND_COMPONENT_PROPERTIES","LegendComponent","legendEncodeRules","symbolsSpec","_legendCmpt$get","_legendCmpt$get2","_legendCmpt$get3","_getMaxValue","legendCmpt","propsList","applyMarkConfig","getMaxValue","_config$legend$symbol","_getFirstConditionVal","_encoding$fill","getFirstConditionValue","selectedCondition","gradientSpec","_legendCmpt$get4","specifiedlabelsSpec","labelsSpec","entriesSpec","getConditionValue","conditionalDef","reducer","hasConditionalValueDef","legendRules","_legend$gradientLengt","legendConfig","gradientLengthSignal","defaultGradientLength","_legend$labelOverlap","_legend$symbolType","shapeChannelDef","markShape","defaultSymbolType","getLegendType","getDirection","_legend$direction","defaultDirection","legendComponent","parseLegendForChannel","parseUnitLegend","_model$component","mergeLegendComponent","_channel","_child","parseNonUnitLegend","isExplicit","_legend$encoding","_legend","getLegendDefWithScale","_model$fieldDef","_selCmpt$project$hasF","legendSelections","parseInteractiveLegend","ruleParams","_legend2","legendEncoding","legendEncodeParams","_legendEncoding$part","legendEncodingPart","mergedLegend","childLegend","mergedOrient","childOrient","_mergedLegend$implici","_mergedLegend$explici","typeMerged","mergedValueWithExplicit","st1","st2","mergeSymbolType","legendComponentIndex","legendByDomain","domainHash","_legend$encode2","_legendCmpt$combine","_legend$encode3","_legend$encode","setLegendEncode","assembleLegend","assembleProjections","assembleProjectionForModel","assembleProjectionsForModelAndChildren","fits","lookupDataSource","PROJECTION_PROPERTIES","ProjectionComponent","specifiedProjection","_replaceExprRef","posssiblePair","channelHasField","requestDataName","Main","gatherFitData","projComp","parseUnitProjection","nonUnitProjection","mergable","allPropertiesShared","mergeIfNoConflict","modelProjection","_modelProjection$data","isFit","renameProjection","parseNonUnitProjections","binKey","getBinSignalName","_normalizeBin","createBinComponent","isBinTransform","normalizedBin","_getSignalsFromModel","extentSignal","getSignalsFromModel","binComponent","BinNode","renameSignal","flatMap","_bin$as","arrayWithHoles","iterableToArray","unsupportedIterableToArray","nonIterableRest","binAs","remainingAs","_bin$bin","binTrans","formulaAs","binComponentIndex","_createBinComponent","_model$axis","rangeFormula","_createBinComponent2","addDimension","posChannel","isFieldRange","AggregateNode","dimensions","parentMeasures","childMeasures","_parentMeasures$field","mergeMeasures","_current4","alias","meas","_meas$","_meas$argField","argField","_meas$field","_meas$field2","scaleDomain","_t$groupby","_meas$2","_meas$field3","FacetNode","sortField","sortIndexField","childModel","_this$channel","depFields","childIndependentFieldsWithStep","childScaleComponent","getFieldFromDomain","assembleDomain","crossedDataName","childChannel","_this$channel2","_sortField$op","hasSharedAxis","_header$axes","assembleRowColumnHeaderData","getChildIndependentFieldsWithStep","_childIndependentFiel","_childIndependentFiel2","facetData","assembleFacetHeaderData","unquote","getImplicitFromFilterTransform","_filter$oneOf","getImplicitFromEncoding","mainFieldDef","dimensionChannelDef","ParseNode","_parse","formatParse","onlyNested","_specifier","ancestorParse","_data$format","makeWithAncestors","parsedAs","_parsedAs","copyAll","IdentifierNode","GraticuleNode","SequenceNode","_this$params$as","SourceNode","defaultExtension","_generator","_Optimizer_modified","isDataSourceNode","Optimizer","BottomUpOptimizer","_Optimizer","depths","getNodeDepths","topologicalSort","modifiedFlag","TopDownOptimizer","_Optimizer2","optimize","MergeIdenticalNodes","_TopDownOptimizer","mergedNode","hashes","setModified","mergeNodes","RemoveUnnecessaryIdentifierNodes","_TopDownOptimizer2","RemoveDuplicateTimeUnits","_super3","timeUnitFields","producedFields","removeFormulas","RemoveUnnecessaryOutputNodes","_TopDownOptimizer3","_super4","isRequired","MoveParseUp","_BottomUpOptimizer","_super5","numChildren","dependentFields","swapWithParent","MergeParse","_BottomUpOptimizer2","_super6","originalChildren","commonParse","conflictingParse","mergedParseNode","RemoveUnusedSubtrees","_BottomUpOptimizer3","_super7","MergeTimeUnits","_BottomUpOptimizer4","_super8","timeUnitChildren","combination","MergeAggregates","_BottomUpOptimizer5","_super9","groupedAggregates","groupBys","groupBy","mergeableAggs","_step13","mergedAggs","_iterator13","_agg","MergeBins","_BottomUpOptimizer6","_super10","_step14","moveBinsUp","promotableBins","remainingBins","_iterator14","_step15","promotedBin","_iterator15","_step16","remainingBin","_iterator16","_bin","MergeOutputs","_BottomUpOptimizer7","_super11","hasOutputChild","mainOutput","_step17","otherChildren","_iterator17","lastOutput","theChild","_step18","_iterator18","JoinAggregateTransformNode","getDefaultName","joinAggregateFieldDef","_joinAggregateFieldDe","StackNode","_stack","_this$_stack$facetby","facetby","stackField","getGroupbyFields","_this$_stack","dimensionFieldDefs","dimensionFieldDef","_this$_stack2","stackby","_dimensionFieldDef$ba","binStart","binEnd","stackTransform","_stackTransform$offse","sortFields","normalizedAs","isValidAsArray","stackProperties","groupbyChannel","getStackByFields","WindowTransformNode","_this$transform$group","_this$transform$sort","windowFieldDef","_windowFieldDef$as","_sortField$order","moveFacetDown","facetMain","moveMainDownToFacet","cloner","newName","FACET_SCALE_PREFIX","getSource","setSource","outputNodes","addDimensions","MAX_OPTIMIZATION_RUNS","checkLinks","runOptimizer","optimizer","optimizationDataflowHelper","dataComponent","firstPass","roots","SignalRefWrapper","exprGenerator","rename","localScaleComponents","domains","parseDomainForChannel","parseSelectionDomain","isFaceted","facetParent","parseUnitScaleDomain","selectionExtent","childComponent","domainsTieBreaker","se","parseNonUnitScaleDomain","scaleConfig","_canUseUnaggregatedDo","canUseUnaggregatedDomain","reason","useUnaggregatedDomain","normalizeUnaggregatedDomain","specifiedScales","parseSingleChannelDomain","convertDomainIfItIsDateTime","mapDomainToDataSignal","isDomainUnionWith","defaultDomain","unionWith","stackDimensions","normalizeSortField","fieldDefToSortBy","_isStackedMeasure","domainSort","Raw","binSignal","getSignalName","_data2","isStackedMeasure","mergeDomains","uniqueDomains","sorts","_sort","filteredSorts","unionDomainSorts","allData","isDataRefUnionedDomain","nonUnionDomain","isFieldRefUnionDomain","assembleScales","assembleScalesForModel","otherScaleProps","assembleScaleRange","parsedExtent","assembleSelectionScaleDomain","ScaleComponent","typeWithExplicit","RANGE_PROPERTIES","getBinStepSignal","binCount","updatedName","parseRangeForChannel","specifiedScale","supportedByScaleType","channelIncompatability","fromName","parseScheme","getPositionStep","positionChannel","getOffsetStep","_getFieldOrDatumDef","mergedScaleCmpt","_model$specifiedScale","positionSize","getDiscretePositionSize","offsetScaleType","positionScaleCmpt","positionScaleType","positionScaleName","endRatio","getOffsetRange","sizeRangeMin","xyStepSignals","maxBandSize","minXYStep","pointStep","MAX_SIZE_RANGE_STEP_RATIO","sizeRangeMax","rMax","rMin","defaultContinuousToDiscreteCount","defaultRange","isExtendedScheme","offsetChannel","offsetDef","_mergedScaleCmpt$get","offsetScaleCmpt","_offsetScaleCmpt$get","_offsetScaleCmpt$get2","offsetPaddingInner","offsetPaddingOuter","widthStep","heightStep","parseScaleProperty","localScaleCmpt","specifiedValue","scalePadding","scalePaddingInner","copyKeyFromObject","scaleRules","hasNestedOffsetScale","hasSecondaryRangeChannel","parseUnitScaleProperty","parseNonUnitScaleProperty","_interpolate","specifiedDomain","_getFieldDef","_nice","barConfig","continuousPadding","paddingValue","offsetBandPaddingInner","_paddingInner","paddingInnerValue","bandPaddingOuter","offsetBandPaddingOuter","_paddingOuter","xReverse","_reverse","_zero","rangeWithExplicit","parseUnitScaleRange","valueWithExplicit","specifiedType","fieldDefType","defaultScaleType","_fieldDef$axis","channelSupportScaleType","parseScaleCore","scaleComponents","_specifiedScale","sType","parseUnitScaleCore","scaleTypeWithExplicitIndex","_a$channel","explicitScaleType","childScaleType","scaleTypeTieBreaker","childScale","renameScale","parseNonUnitScaleCore","nameMap","oldName","Model","parentGivenName","_spec$name","_spec$transform","correctDataNames","_mark$from","_mark$from2","scaleNameMap","projectionNameMap","signalNameMap","normalizeTransform","specType","compositionConfig","spacingConfig","_spacing$row","_spacing$column","extractCompositionLayout","outputNodeRefCounts","parseLayoutSize","renameTopLevelLayoutSizeSignal","parseSelections","parseAxesAndHeaders","parseLegends","parseMarkGroup","ignoreRange","parseScales","baseView","isTopLevel","_encodeEntry","encodeEntry","assembleEncodeFromView","_this$layout","headerComponentIndex","_getHeaderProperties4","assembleLayoutTitleBand","assembleDefaultLayout","headerMarks","axisComponents","_axisComponents$x","_axisComponents$y","_this$title","titleNoEncoding","_title$frame","_title$anchor","assembleSignals","assembleLayout","assembleHeaderMarks","assembleMarks","assembleAxes","assembleLegends","fullName","getDataName","oldSignalName","originalScaleName","localScaleComponent","variableName","origName","sel","_this$component$axes$","_this$component$axes$2","hasOrientSignalRef","ModelWithField","_Model","getMapping","DensityTransformNode","_this$transform$as","_specifiedAs$","_specifiedAs$2","specifiedAs","_this$transform","ExtentTransformNode","FilterInvalidNode","vegaFilters","FlattenTransformNode","_as$i","_this$transform2","FoldTransformNode","fold","GeoJSONNode","_this$fields","geoJsonCounter","pair","GeoPointNode","ImputeNode","_keyvals$start","_this$transform$frame","imputeTransform","processSequence","imputedChannel","keyChannel","_imputedChannel$imput","LoessTransformNode","LookupNode","secondary","foreign","asName","fromOutputNode","isLookupData","fromSource","findSource","fromOutputName","isLookupSelection","materialized","QuantileTransformNode","RegressionTransformNode","regression","PivotTransformNode","_this$transform$group2","pivot","SampleTransformNode","makeWalkTree","datasetIndex","walkTree","_dataSource$format","_dataSource$transform","_dataSource$transform2","_dataSource$transform3","assembleFormatParse","assembleTransforms","assemble","getHeaderType","parseFacetHeader","_fieldDef$header","makeHeaderComponent","mergeChildAxis","_layoutHeader$headerT","axisComponent","mainAxis","parseChildrenLayoutSize","parseNonUnitLayoutSizeForChannel","layoutSizeCmpt","_resolve$scale$channe","childSize","scaleResolve","defaultUnitSize","facetSortFieldName","FacetModel","_ModelWithField","buildModel","initFacet","initFacetFieldDef","normalizedFacet","parseFacetHeaders","assembleSelectionTopLevelSignals","assembleSelectionData","layoutMixins","layoutHeaderComponent","_layoutMixins$titleAn","_layoutMixins$bandTyp","_layoutMixins$offset","bandType","_this$facet","columnDistinctSignal","getHeaderLayoutMixins","assembleLayoutSignals","facetLayoutDataName","_this$component$data$","facetRoot","_this$facet2","_this$getCardinalityA","getCardinalityAggregateForChild","_sort$op","outputName","_outputName","ORTHOGONAL_ORIENT","_facet$channel","assembleFacetData","assembleGroupEncodeEntry","assembleLabelTitle","assembleGroupStyle","markGroup","assembleFacet","facetSortFields","facetSortOrder","assembleGroup","assembleFacetSignals","_otherData$format","_data$format2","_otherData$format2","otherData","hasName","formatMesh","otherFeature","formatFeature","otherMesh","_data$format3","_ParseNode$makeExplic","_ParseNode$makeWithAn2","existingSource","parseRoot","_model$component$data","_BinNode$makeFromEnco","parentIsLayer","makeFromEncoding","lookupCounter","derivedType","transformNode","_ParseNode$makeWithAn","makeFromTransform","make","_transformNode$produc","parseTransformArray","implicitSelection","getImplicitFromSelection","implicitEncoding","parseAll","_TimeUnitNode$makeFro","_BinNode$makeFromEnco2","parseAllForSortIndex","_FilterInvalidNode$ma","rawName","_ImputeNode$makeFromE","_StackNode$makeFromEn","mainName","lookupName","materializeSelections","_makeJoinAggregateFro","facetName","_fieldDef$sort","_fieldDef$sort$op","makeJoinAggregateFromFacet","ConcatModel","_spec$resolve","_spec$resolve2","widthType","heightType","parseConcatLayoutSize","layoutSignals","AXIS_COMPONENT_PROPERTIES_INDEX","AXIS_COMPONENT_PROPERTIES","AxisComponent","isFalseOrNull","OPPOSITE_ORIENT","mergeAxisComponents","mergedAxisCmpts","childAxisCmpts","mergeAxisComponent","propsToAlwaysIncludeConfig","_axis","_config","_config$axis","_axis2","_axis$encoding","defaultOrient","typeBasedConfigTypes","axisChannel","axisOrient","vlOnlyConfigTypes","vgConfigTypes","vlOnlyAxisConfig","vgAxisConfig","axisConfigStyle","getAxisConfigs","getLabelAngle","_ref$configValue","_ref$configFrom","hasConfigValue","axisEncoding","_axisEncoding$part","axisEncodingPart","specifiedLabelsSpec","fixedShape","shapeMixins","vgMark","vgThicknessChannel","defaultSize","markPropOrConfig","markCompiler","postEncodingTransform","shapeDef","parseMarkGroups","FACETED_PATH_PREFIX","getMarkGroup","fromPrefix","getPathGroups","_model$stack$groupbyC","groupUpdate","innerGroupUpdate","_getMarkGroup","STACK_GROUP_PREFIX","fieldScale","stackFieldGroup","vgFieldMinMax","groupByField","getGroupsForStackedBarWithCornerRadius","xScale","yScale","scaleClip","projectionClip","unitCount","parentCount","interactiveFlag","UnitModel","_spec$params","parentGivenSize","specifiedAxes","specifiedLegends","filledConfig","defaultFilled","initLayoutSize","initScales","initAxes","initLegends","isGeoShapeMark","hasGeoPosition","scaleInternal","axisSpec","initAxis","axisInternal","supportLegend","specifiedSize","parseUnitLayoutSize","selDefs","selCmpts","selectionConfig","_cfg$key","def_","parseUnitSelection","_model$component$sele2","hasSelections","hasSg","isPoint","hasUnit","assembleTopLevelSignals","assembleUnitSelectionSignals","_model$component$sele3","dataCopy","assembleUnitSelectionData","_this$component$mark","LayerModel","axisCount","_axes$_channel","_axisComponent$getWit","oppositeOrient","_step5$value","parseLayerAxes","uniqueStyles","assembleLayerSelectionMarks","unitSize","isAnyConcatSpec","compile","inputSpec","newLogger","firstPassCounter","secondPassCounter","optimizeDataflow","vgSpec","topLevelProperties","datasets","usermeta","vgConfig","sourceIndex","newData","whereTo","_d3$transform","_d3","_d$transform","_data3","_d2","assembleRootData","otherTopLevelProps","$schema","assembleTopLevelModel","hasAxisOrientSignalRef","autoSizeType","inverseSizeType","getFitType","getTopLevelProperties","normalized","_exec$slice","_exec$slice2","library","pkg","medColor","darkTheme","markColor$7","excelTheme","markColor$6","axisColor$2","backgroundColor$2","blackTitle","fiveThirtyEightTheme","markColor$5","ggplot2Theme","labelFont$1","markColor$4","colorSchemes$1","latimesTheme","markColor$3","axisColor$1","quartzTheme","markColor$2","voxTheme","markColor$1","axisColor","colorSchemes","urbanInstituteTheme","markColor","defaultFont$1","googlechartsTheme","ptToPx","fontSmallPx","legendFontPx","fontLargePx","fontStandard","fontTitle","firstLevelElementColor","secondLevelElementColor","paletteColor1","divergentColorMin","divergentPalette","powerbiTheme","darkCategories","lightCategories","genCarbonConfig","viewbg","carbonwhite","carbong10","carbong90","carbong100","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","sourceSymbolKeys","EL_ID","DEFAULT_OPTIONS","styleId","disableDefaultStyle","valueToHtml","_w$vl","hasRequiredIterator","elementId","tooltipHandler","innerHTML","createDefaultStyle","_document$fullscreenE","fullscreenElement","_calculatePosition","tooltipBox","calculatePosition","getDefaultExportFromCjs","yallist","Yallist$1","tail","inserted","removeNode","unshiftNode","pushNode","thisp","walker","forEachReverse","getReverse","mapReverse","reduceReverse","toArray","toArrayReverse","sliceReverse","deleteCount","Yallist","er","MAX","LENGTH","LENGTH_CALCULATOR","ALLOW_STALE","MAX_AGE","DISPOSE","NO_DISPOSE_ON_SET","LRU_LIST","UPDATE_AGE_ON_GET","naiveLength","LRUCache","stale","maxAge","dispose","noDisposeOnSet","updateAgeOnGet","mL","allowStale","mA","lC","forEachStep","isStale","_del","expiresAt","doUse","looseOption","loose","emptyOpts","parseOptions_1","re$1","MAX_LENGTH","MAX_SAFE_COMPONENT_LENGTH","MAX_SAFE_BUILD_LENGTH","MAX_LENGTH$1","RELEASE_TYPES","SEMVER_SPEC_VERSION","FLAG_INCLUDE_PRERELEASE","FLAG_LOOSE","debug$1","NODE_DEBUG","_console","debug_1","safeRe","LETTERDASHNUMBER","safeRegexReplacements","createToken","isGlobal","safe","_safeRegexReplacement","_safeRegexReplacement2","makeSafeRegex","NUMERICIDENTIFIER","NUMERICIDENTIFIERLOOSE","NONNUMERICIDENTIFIER","PRERELEASEIDENTIFIER","PRERELEASEIDENTIFIERLOOSE","BUILDIDENTIFIER","MAINVERSION","PRERELEASE","BUILD","FULLPLAIN","MAINVERSIONLOOSE","PRERELEASELOOSE","LOOSEPLAIN","XRANGEIDENTIFIER","XRANGEIDENTIFIERLOOSE","GTLT","XRANGEPLAIN","XRANGEPLAINLOOSE","COERCE","LONETILDE","tildeTrimReplace","LONECARET","caretTrimReplace","comparatorTrimReplace","hasRequiredComparator","hasRequiredRange","reExports","numeric","compareIdentifiers$1","anum","bnum","identifiers","parseOptions","compareIdentifiers","SemVer$1","SemVer","includePrerelease","LOOSE","FULL","major","minor","prerelease","build","compareMain","comparePre","release","identifierBase","semver","compare_1","compare$5","eq_1","compare$4","neq_1","compare$3","gt_1","compare$2","gte_1","compare$1","lt_1","lte_1","eq","neq","cmp_1","requireRange","Range","Comparator","parseRange","isNullSet","isAny","comps","memoKey","hr","HYPHENRANGELOOSE","HYPHENRANGE","hyphenReplace","COMPARATORTRIM","TILDETRIM","CARETTRIM","rangeList","comp","parseComparator","replaceGTE0","COMPARATORLOOSE","rangeMap","comparators","thisComparators","isSatisfiable","rangeComparators","thisComparator","rangeComparator","testSet","ANY","COMPARATOR","requireComparator","remainingComparators","testComparator","otherComparator","replaceCarets","replaceTildes","replaceXRanges","replaceStars","replaceTilde","TILDELOOSE","TILDE","replaceCaret","CARETLOOSE","CARET","replaceXRange","XRANGELOOSE","XRANGE","gtlt","xM","anyX","STAR","GTE0PRE","GTE0","incPr","fM","fm","fp","fpr","fb","tM","tm","tp","tpr","satisfies_1","satisfies$1","editor","listen","embedStyle","_Object$keys","_vegaLite","vl","DEFAULT_ACTIONS","export","png","compiled","I18N","CLICK_TO_VIEW_ACTIONS","COMPILED_ACTION","EDITOR_ACTION","PNG_ACTION","SOURCE_ACTION","SVG_ACTION","NAMES","VERSION","PREPROCESSOR","vlSpec","SVG_CIRCLES","CHART_WRAPPER_CLASS","isTooltipHandler","viewSource","sourceHeader","sourceFooter","write","guessMode","providedMode","_NAMES$providedMode","createLoader","embedOptionsFromUsermeta","parsedSpec","_parsedSpec$usermeta$","_parsedSpec$usermeta","embedOptions","defaultStyle","_embed2","_parsedOpts$config","_usermetaOpts$config","loadedEmbedOptions","usermetaLoader","_opts$loader","usermetaOpts","parsedOpts","mergedOpts","loadOpts","_embed","_loadOpts","_opt$config","t4","t5","getRoot","_document$head","possibleRoot","getRootNode","ShadowRoot","rootContainer","_embed3","_opts$config","_opts$actions","_opts$renderer","_opts$logLevel","_opts$downloadFileNam","_vega$expressionInter","i18n","downloadFileName","ID","_getRoot","chartWrapper","updateSet","documentClickHandler","ctrl","viewSourceLink","compileLink","_opts$editorUrl","editorUrl","editorLink","_args5","_context6","Warn","expressionFunctions","viewClass","expressionInterpreter","i18nExportAction","exportLink","_opts$sourceHeader","_opts$sourceFooter","_opts$sourceHeader2","_opts$sourceFooter2","updateMultipleDatasetsInView","functionToCheck","updateSingleDatasetInView","getUniqueFieldNames","NOOP","addSignalListenersToView","signalListeners","signalNames","removeSignalListenersFromView","combineSpecWithDimension","VegaEmbed","_React$PureComponent","_this$props$onError","resultPromise","handleError","createView","fieldSet","clearView","specChanges","newSpec","oldSpec","isExpensive","computeSpecChanges","newSignalListeners","oldSignalListeners","areSignalListenersChanged","modifyView","onNewView","_this$props$signalLis","finalSpec","Vega","_this$props$onNewView","vegaEmbed","handleNewView","raster","ExclamationTriangleIcon","wrapLines","CodeBracketIcon","traceback","vizData","explanations","setExplanations","explanationsDivRef","explanationsView","isAccessibility","section","explanation","scrollToElement","fetchExplanation","ChatBubbleOvalLeftEllipsisIcon","LoadBox","LAYER","COMPONENT_TYPE","clipRule","DIRECTION","VIEW_LIFE_CIRCLE","GEOMETRY_LIFE_CIRCLE","PLOT_EVENTS","ELEMENT_STATE","GROUP_Z_INDEX","TABLE","TABLE_TR","FRAGMENT_REG","CONTAINERS","GROUP_ATTRS","FIELD_ORIGIN","ENGINES","registerEngine","engine","tbody","thead","tfoot","td","modifyCSS","css","getChartSize","autoFit","getElementSize","changeVisible","Adjust","xField","yField","adjustNames","dimValuesMap","isAdjust","getAdjustRange","dimValue","adjustData","groupedDataArray","getDimValues","dataArray","adjustDim","groupData","ADJUST_MAP","getAdjust","registerAdjust","Dodge","cacheMap","adjustDataArray","mergeData","marginRatio","dodgeRatio","dodgeBy","intervalPadding","dodgePadding","xDimensionLength","groupNum","maxColumnWidth","minColumnWidth","columnWidthRatio","customOffset","xDimensionLegenth","groupDataArray","frameIndex","getDistribution","valueArr","valIndex","getDodgeOffset","tickLength","getIntervalOnlyOffset","getDodgeOnlyOffset","getIntervalAndDodgeOffset","normalizedIntervalPadding","normalizedDodgePadding","geomWidth","normalizedMaxWidht","normalizedMinWidht","Jitter","adjustGroup","getAdjustOffset","randomNumber","Cache","reverseOrder","processStack","processOneDimStack","positive","negative","xKey","xValue","newXValue","stackHeight","stackValue","Symmetric","getXValuesMaxMap","yValue","off_1","getDimMaxValue","dimValues","flattenValues","toScaleString","Attribute","_parseCfg","_toOriginParam","getLinearValue","leftPercent","getNames","defaultCallback","_getAttributeValue","isCategory","isLinear","RGB_REG","regexLG","regexRG","regexColorStop","arr2rgb","toHex","iEl","rgb2arr","x16Value","toRGB","createTmp","getPropertyValue","cArray","colorArray","fixedPercent","calColor","toCSSGradient","gradientColor","cssColor_1","colorStops_1","itemArr","Opacity","Position","Shape","methodCache","registerTickMethod","__cfg__","initCfg","getTicks","getText","tickValue","getConfig","setDomain","calculateTicks","tickMethod","getTickMethod","calcPercent","calcValue","Category","buildIndexMap","translateIndexMap","scaledValue","domainRange","twoDigitsOptional","twoDigits","shorten","sLen","newArr","monthUpdate","arrName","lowerCaseArr","origObj","args_1","dayNames","monthNames","monthNamesShort","defaultI18n","dayNamesShort","amPm","DoFn","dayOfMonth","globalI18n","setGlobalDateI18n","regexEscape","formatFlags","DD","Do","ddd","dddd","MM","MMM","MMMM","YY","YYYY","HH","mm","SS","SSS","ZZ","monthParse","emptyDigits","emptyWord","timezoneOffset","parseFlags","cent","globalMasks","shortDate","mediumDate","longDate","fullDate","isoDate","isoDateTime","shortTime","mediumTime","longTime","setGlobalDateMasks","masks","literals","combinedI18nSettings","dateStr","dateInfo","isPm","parseInfo","specifiedFields","requiredFields","requiredField","dateTZ","FORMAT_METHOD","toTimeStamp","SECOND","MINUTE","HOUR","getTickInterval","_lo","_hi","TimeCat","tickIndex","getScalePercent","firstTick","lastTick","minLimit","maxLimit","getInvertPercent","calBase","getLogPositiveMin","positiveMin","appendPercent","numberValue","minConfig","maxConfig","timeStamps_1","min_1","secondMin_1","max_1","minTickInterval","minIndex","minTick","minIndexPercent","getClass","registerClass","Identity","calculateCatTicks","showLast","ticks_1","lastValue","D3Linear","_domain","d3ArrayTicks","snapMultiple","snapType","intervalTicks","maxTick","availableInterval","strictLimit","defaultMin","defaultMax","tickMin","tickMax","prettyNumber","DEFAULT_Q","EPSILON","simplicity","lmin","lmax","lstep","simplicityMax","dMin","dMax","lMin","lMax","rt","densityMax","coverage","coverageMax","half","extended","onlyLoose","step_1","best","dm","cm","minStart","maxStart","lStep","pretty","nu","createYear","creatMonth","minYear","maxYear","yearInterval","monthInterval","mmMoth","dMonths","minMonth","diffMonth","mday","ddays","diffDay","dHours","diffHour","dMinus","diffMinus","minSecond","dSeconds","avg","sorted","d3Linear","ATTRIBUTE_MAP","registerAttribute","Coordinate","isRect","isHelix","isPolar","isReflectX","isReflectY","isTransposed","originalMatrix","convertDim","isReflect","invertDim","inverted","mat3","convertPoint","invertPoint","transpose","getCenter","getHeight","getRadius","Cartesian","Helix","maxRadius","thi","newY","Polar","oneBox","getOneBox","oneWidth","oneHeight","circleCenter","polarRadius","vPoint","vStart3","vStart2","xPercent","yPercent","COORDINATE_MAP","registerCoordinate","propagationDelegate","eventObject","identityMatrix","getMatrixByAngle","getMatrixByTranslate","applyRotate","applyTranslate","translateMatrix","formatPadding","clearDom","regionToBBox","region","createBBox","getValueByPercent","getCirclePoint","near","getBBoxWithClip","clipBBox","minX_1","maxX_1","minY_1","maxY_1","boxMinX","boxMaxX","boxMinY","boxMaxY","toPx","getTextPoint","offsetPercent","LOCATION_FIELD_MAP","none","locationType","updateAutoRender","animateOption","appear","leave","newCfg","updateInner","afterUpdate","setCapture","getLayoutBBox","getLocationType","setOffset","setLocation","getLocation","isSlider","STATUS_UPDATE","COPY_PROPERTIES","COPY_PROPERTIES_EXCLUDES","GroupComponent","shapesMap","isRegister","isUpdating","isInit","clearOffScreenCache","getChildComponentById","getElementByLocalId","localId","getElementId","getElementsByName","offScreenRender","offScreenGroup","updateElements","deleteElements","applyOffset","initEvent","removeEvent","getInnerLayoutBBox","applyMatrix2BBox","initGroup","delegateEmit","createOffScreenGroup","getDelegateObject","moveElementTo","isComponent","renderInner","appendDelegateObject","registerElement","addComponent","restCfg","inst","unregisterElement","addAnimation","elmentName","newElement","originOpacity","removeAnimation","elementName","originElement","updateAnimation","newAttrs","newGroup","originGroup","preElement","origChildComponent","replaceAttrs","getReplaceAttrs","newClipShape","updateClip","registerNewGroup","clearUpdateStatus","parentObject","deleteArray","callbackAnimCfg","removeElement","ELLIPSIS_CODE","charAtLength","ELLIPSIS_CODE_LENGTH","OPTIMIZE_THRESHOLD","getMaxLabelWidth","maxIdx","getMaxLabelWidthOptimized","ellipsisLabel","limitLength","ellipsisText","labelLength","getLabelLength","codeLength","strLen","ellipsisFlag","reserveLength","newText","reseveLength","startStr","endStr","startCodeLen","hasAdd","endCodeLen","ellipsisString","renderTag","tagCfg","autoEllipsis","ellipsisPosition","tagGroup","backgroundStyle","activeTextColor","uncheckedColor","lineColor","regionColor","verticalAxisRotate","horizontalAxisRotate","descriptionIconStroke","descriptionIconFill","LineAnnotation","autoRotate","renderLine","renderLabel","getLabelPoint","TextAnnotation","resetLocation","textGroup","ArcAnnotation","renderArc","getArcPath","endPoint","largeFlag","middlePoint","RegionAnnotation","renderRegion","ImageAnnotation","renderImage","getImageAttrs","DataMarkerAnnotation","autoAdjust","coordinateBBox","renderText","renderPoint","getShapeAttrs","textAttrs","isVertival","lineLength","textShape","xFactor","yFactor","lineDisplay","pointStyle","lineStyle","textStyle","DataRegionAnnotation","regionStyle","pointsToBBox","RegionFilterAnnotation","shapeIdx","adjustShapeAttrs","ShapeAnnotation","getOuterWidth","bLeft","pLeft","pRight","bRight","mRight","getOuterHeight","bTop","pTop","pBottom","HtmlComponent","containerTpl","resetStyles","applyStyles","initCapture","initVisible","defaultStyles","domStyles","applyChildrenStyles","cName","getElementsByClassName","applyStyle","cssName","resetPosition","HtmlAnnotation","alignX","alignY","html","domWidth","domHeight","getStatesStyle","stateStyles","styleName","AxisBase","tickLine","subTickLine","verticalFactor","verticalLimitLength","overlapOrder","tickStates","alignTick","displayWithLabel","autoHide","labelStyle","tickLineStyle","enable","drawLine","drawTicks","drawTitle","getItems","setItems","updateItem","clearItems","setItemState","updateTickStates","hasState","getItemStates","clearItemsState","getItemsByState","getSidePoint","getSideVector","getTextAnchor","getTextBaseline","processOverlap","labelGroup","getLinePath","getTickLineItems","tickLineItems","tickLineLength","tickSegment","getTickPoint","tickId","getSubTickLineItems","subTickLineItems","subCount","tickLineCount","getTickLineAttrs","tickItem","tickItems","defaultTickLineStyle","drawTick","tickLineGroup","drawTickLines","tickCfg","labelId","subTickLineItems_1","processTicks","optimizeTicks","drawLabels","applyTickStates","page_1","optimizedTicks","getLabelAttrs","labelCfg","defaultLabelStyle","afterProcessTicks_1","newStyle","getTitleAttrs","titleCfg","titlePoint","getAxisVector","titleAttrs","titleShape","drawDescriptionIcon","descriptionShape","x5","y5","x6","y6","x7","y7","labelShape","labelStateStyle","tickLineId","tickLineShape","tickLineStateStyle","states","tickLineCfg","ellipseLabels","getDefault","ellipsisTail","ellipsisHead","ellipsisMiddle","getRotateAngle","isRotate","getAngleByMatrix","isOverlap","minGap","prevBBox","reserveOne","labelsGroup","autoHideCfg","hasHide","parityHide","firstBBox","equidistance","reserveFirst","reserveLast","reserveBoth","preLabel","equidistanceWithReverseBoth","labelRotate","setLabelsAngle","fixedAngle","customRotate","unfixedAngle","Line","isHorizontal","regionX","regionY","axisVector","verticalVector","titleSpacing","canProcessOverlap","autoProcessOverlap","hasAdjusted","util","overlapCfg","verticalFactor_1","newAlign","Circle","vecLen","CrosshairBase","textBackground","renderBackground","textPoint","textId","textBBox","LineCrosshair","CONTAINER_CLASS","CROSSHAIR_LINE","CROSSHAIR_TEXT","HtmlCrosshair","crosshairTpl","textTpl","resetText","initCrossHair","crosshairEl","textEl","alignText","GridBase","alternateColor","getLineType","drawGrid","getAlternatePath","prePoints","regionPath","getGridPath","nextPath","getPathStyle","preItem","lineId","gridPath","regionId","isEven","drawAlternateRegion","firstPoint","radius_1","sweepFlag_1","LegendBase","getDrawPoint","setDrawPoint","resetDraw","drawLegendContent","drawBackground","DEFAULT_PAGE_NAVIGATOR","inactiveFill","inactiveOpacity","RIGHT_ARROW_NAME","LEFT_ARROW_NAME","ROTATE_MAP","up","down","currentPageIndex","totalPagesCnt","pageWidth","pageHeight","onNavigationBack","updateNavigation","getCurrentNavigationMatrix","onNavigationAfter","itemSpacing","itemMarginBottom","maxItemWidth","itemName","itemValue","itemStates","itemBackground","pageNavigator","nameStyle","unchecked","markerStyle","itemElement","offsetGroup","drawItem","getItemHeight","processItems","drawItems","itemContainerGroup","wrapped","subGroup","adjustNavigation","style_1","items_1","drawMarker","markerCfg","markerAttrs","drawItemText","textName","xPosition","drawRadio","radioCfg","showRadio","radioShape","groupId","subContainer","getLimitItemWidth","curX","markerShape","itemMarkerSpacing","nameShape","valueShape","applyItemStates","subGroups","navigation","drawNavigation","navigationBBox","pages","widthLimit","maxRow","maxRowHeight_1","navigationX_1","shouldWrap","cntPerPage_1","styleCfg","leftArrow","drawArrow","leftArrowBBox","rightArrow","cursorX","updateArrowPath","itemStates_1","elName","statesStyle","ContinueLegend","track","rail","slidable","defaultLength","getCurrentValue","resetTrackClip","resetHandlers","bindSliderEvent","bindRailEvent","bindTrackEvent","drawRail","fixedElements","resetTrack","bindHandlersEvent","getValueByCanvasPoint","preValue","curDiff","dValue","drawLabel","labelFormatter","alignAttrs","getLabelAlignAttrs","getRailPath","railCfg","getTrackColor","getTrackPath","getRailShape","getClipTrackAttrs","railBBox","getRailBBox","getPointByValue","getTrackAttrs","trackCfg","trackId","trackShape","trackAttrs","draggable","getRailCanvasBBox","isVertcal","resetHandler","getHandlerPath","handlerCfg","halfWidth","oneSixthWidth","triangleX","triangleY","handlerShape","railShape","minLabel","maxLabel","fixedVertail","fixedHorizontal","fitRailLength","minLabelBBox","maxLabelBBox","lengthField","changeRailLength","changeRailPosition","railHeight","maxLabelWidth","TITLE_CLASS","LIST_CLASS","LIST_ITEM_CLASS","MARKER_CLASS","VALUE_CLASS","NAME_CLASS","CROSSHAIR_X","CROSSHAIR_Y","customContent","itemTpl","xCrosshairTpl","yCrosshairTpl","crosshairsRegion","crosshairs","renderCustomContent","resetTitle","renderItems","clearCrosshairs","setTitle","clearItemDoms","setCrossHairsVisible","xCrosshairDom","yCrosshairDom","getHtmlContentNode","hasOneKey","cacheDoms","limitBox","getPointByPosition","outSides","getOutSides","resetCrosshairs","curContainer","replaceChild","titleDom","listDom","crosshairBox","resetCrosshair","croshairDom","checkCrosshair","domName","tplName","constName","substituteObj","itemDom","BACKGROUND_STYLE","LINE_STYLE","AREA_STYLE","pointsToPath","dataToPath","getSmoothLinePath","linePathToAreaPath","areaPath","lineYPx","lineY","getAreaLineY","Trend","isArea","areaStyle","DEFAULT_HANDLER_STYLE","highLightFill","bindEvents","FOREGROUND_STYLE","HANDLER_STYLE","TEXT_STYLE","Slider","containerDOM","getContainerDOM","offsetXRange","adjustOffsetRange","updateStartEnd","updateUI","oldStart","oldEnd","newStart","newEnd","foregroundStyle","handlerStyle","validCfg","minHandler","maxHandler","trend","trendCfg","minText","maxText","handlerWidth","handlerHeight","foregroundShape","minTextShape","maxTextShape","_dodgeText","minAttrs","maxAttrs","offsetRange","minBBox","maxBBox","eventType","attachEvent","detachEvent","DEFAULT_THEME","trackColor","thumbColor","Scrollbar","onStartEvent","startPos","bindLaterEvent","thumbOffset","endPos","updateThumbOffset","onTrackClick","thumbLen","newOffset","validateRange","onThumbMouseOver","onThumbMouseOut","minThumbLen","renderTrackShape","renderThumbShape","trackLen","themeSize","thumbShape","emitOffsetChange","LineAxis","CircleAxis","LineGrid","CircleGrid","CategoryLegend","ContinuousLegend","HtmlTooltip","uniqueValues","polarToCartesian","centerX","centerY","angleInRadian","getSectorPath","startAngleInRadian","endAngleInRadian","innerStart","innerEnd","innerMiddlePoint","circlePathCommands","arcSweep","sectorPathCommands","shapeModel","getPointsBox","coordStartAngle","diffAngle","sourceShape","targetShape","sourceArray","targetArray","e_1","sourceArray_1","sourceArray_1_1","e_1_1","BBox","fromRange","fromObject","subBBox","cut","TOP_LEFT","TOP_RIGHT","RIGHT_TOP","RIGHT_BOTTOM","BOTTOM_LEFT","BOTTOM_RIGHT","LEFT_TOP","LEFT_BOTTOM","shrink","gap","exceed","isPointIn","getXDimensionLength","getDistanceToCenter","getAngleByPoint","getCoordinateClipCfg","endState","startAngle_1","endAngle_1","center_1","startState","dateRegex","inferScaleType","scaleDef","attrType","geometryType","createScaleByField","validData","getDefaultType","getDefaultCategoryScaleRange","isFullCircle","getMaxScale","getAxisRegion","getLineAxisRelativeRegion","getCircleAxisRelativeRegion","getAxisFactorByRegion","getAxisThemeCfg","axisTheme","getAxisTitleOptions","axisOptions","getCircleAxisCenterRadius","startVector","normalVector","getAxisOption","getAxisDirection","axisOption","getAxisTitleText","createContainer","generateFacets","renderViews","clearFacetViews","facetToView","beforeEachView","eachView","afterEachView","getLayer","FORE","createFacetViews","removeView","parseSpacing","viewBBox","getFieldValues","getRegion","cols","xIndex","yIndex","xSpacing","ySpacing","xRatio","yRatio","getDefaultTitleCfg","processAxis","getOptions","coordinateOption","getXYFields","xOption","yOption","getXAxisOption","getYAxisOption","getFacetDataFilter","Facets","registerFacet","Action","addAction","applyCfg","removeAction","CallbackAction","execute","ActionCache","getActionClass","actionName","actionOption","registerAction","ActionClass","createCallbackAction","_convertArr","_convertArcPath","catmullRom2bezier","isInCircle","_points2path","getSplinePath","constaint","splinePath","convertPolarPath","transposed","subPath","curPoint","angleRange","middleConvertPoint","_convertPolarPath","_filterFullCirleLine","getMaskBBox","getMaskBBoxByShape","isValidMaskBBox","maskShape","maskBBox","getMultiMaskBBoxList","maskShapes","bBox","getMaskPathByMaskShape","getCurrentElement","getDelegationObject","isElementChange","gEvent","isMask","isMultipleMask","getMaskedElements","maskPathList","getMultiMaskPathList","maskPath","getElementsByPath","maskBBoxList","getIntersectElements","getMultiMaskedElements","getMaskPath","getSiblingMaskElements","getSiblingMaskElementsByBBox","getSiblingMultiMaskedElements","getSiblingPoint","getElements","subView","getElementsByState","stateName","getElementsBy","getElementValue","getModel","shapeBBox","pathToPoints","shapePoints","getComponents","co","isInBox","getSilbings","normalPoint","getCoordinate","point2Normalize","isInRecords","xFiled","getScaleByField","getAction","getCurrentPoint","getCurrentShape","isInPlot","isPointInPlot","isInComponent","Interaction","parseAction","actionStr","createAction","executeAction","actionObject","STEP_NAMES","GrammarInteraction","callbackCaches","emitCaches","initContext","stepArr","stepName","getActionCallback","bindEvent","offEvent","subSteps","actionArr","argArr_1","isAllowStep","currentStepName","isAllowExecute","isEnable","enterStep","afterExecute","actionCallback","nameArr","Interactions","registerInteraction","interaction","createInteraction","interaciton","getInteraction","createThemeByStyleSheet","styleSheet","shapeStyles","pointFillColor","pointSize","pointBorderColor","pointBorder","pointFillOpacity","pointActiveBorderColor","pointActiveBorder","pointSelectedBorderColor","pointSelectedBorder","pointInactiveFillOpacity","pointInactiveBorderOpacity","hollowPoint","hollowPointFillColor","hollowPointBorder","hollowPointBorderColor","hollowPointBorderOpacity","hollowPointSize","hollowPointActiveBorderColor","hollowPointActiveBorderOpacity","hollowPointSelectedBorder","hollowPointSelectedBorderColor","hollowPointSelectedBorderOpacity","hollowPointInactiveBorderOpacity","areaFillColor","areaFillOpacity","areaActiveFillOpacity","areaSelectedFillOpacity","areaInactiveFillOpacity","hollowArea","hollowAreaBorderColor","hollowAreaBorder","hollowAreaBorderOpacity","hollowAreaActiveBorder","hollowAreaSelectedBorder","hollowAreaInactiveBorderOpacity","intervalFillColor","intervalFillOpacity","intervalActiveBorderColor","intervalActiveBorder","intervalSelectedBorderColor","intervalSelectedBorder","intervalInactiveFillOpacity","intervalInactiveBorderOpacity","hollowInterval","hollowIntervalFillColor","hollowIntervalBorderColor","hollowIntervalBorder","hollowIntervalBorderOpacity","hollowIntervalActiveBorderColor","hollowIntervalActiveBorder","hollowIntervalActiveBorderOpacity","hollowIntervalSelectedBorderColor","hollowIntervalSelectedBorder","hollowIntervalSelectedBorderOpacity","hollowIntervalInactiveBorderColor","hollowIntervalInactiveBorder","hollowIntervalInactiveBorderOpacity","lineBorderColor","lineBorder","lineBorderOpacity","lineAppendWidth","lineActiveBorder","lineSelectedBorder","lineInactiveBorderOpacity","axisStyles","axisTitleSpacing","axisTitleTextFillColor","axisTitleTextFontSize","axisTitleTextLineHeight","axisDescriptionIconFillColor","axisLabelOffset","axisLabelFillColor","axisLabelFontSize","axisLabelLineHeight","axisLineBorder","axisLineBorderColor","axisGridBorderColor","axisGridBorder","lineDash","axisGridLineDash","axisTickLineBorder","axisTickLineBorderColor","axisTickLineLength","createAxisStyles","legendStyles","legendMarkerSpacing","legendCircleMarkerSize","legendMarkerColor","legendItemNameFillColor","legendItemNameFontSize","legendItemNameLineHeight","legendItemNameFontWeight","flipPage","legendPageNavigatorMarkerSize","legendPageNavigatorMarkerInactiveFillColor","legendPageNavigatorMarkerInactiveFillOpacity","legendPageNavigatorMarkerFillColor","legendPageNavigatorMarkerFillOpacity","legendPageNavigatorTextFillColor","legendPageNavigatorTextFontSize","legendItemSpacing","legendItemMarginBottom","legendPadding","createLegendStyles","brandColor","subColor","semanticRed","paletteSemanticRed","semanticGreen","paletteSemanticGreen","roseWidthRatio","multiplePieWidthRatio","colors10","paletteQualitative10","colors20","paletteQualitative20","sequenceColors","paletteSequence","shapes","middleAngle","funnel","pyramid","dash","hv","vh","hvh","vhv","bowtie","diamond","hexagon","triangle","plus","hyphen","candle","violin","hollow","common","legendVerticalPadding","legendHorizontalPadding","sliderRailHeight","sliderRailWidth","sliderRailFillColor","sliderRailBorderColor","sliderRailBorder","sliderLabelTextFillColor","sliderLabelTextFontSize","sliderLabelTextLineHeight","sliderHandlerWidth","sliderHandlerFillColor","sliderHandlerBorderColor","showContent","follow","showCrosshairs","showMarkers","enterable","tooltipCrosshairsBorderColor","tooltipCrosshairsBorder","tooltipContainerFillColor","tooltipContainerFillOpacity","tooltipContainerShadow","tooltipContainerBorderRadius","tooltipTextFillColor","tooltipTextFontSize","tooltipTextLineHeight","annotation","annotationArcBorderColor","annotationArcBorder","annotationLineBorderColor","annotationLineDash","annotationLineBorder","annotationTextFillColor","annotationTextBorderColor","annotationTextBorder","annotationTextFontSize","annotationRegionBorder","annotationRegionBorderColor","annotationRegionFillColor","annotationRegionFillOpacity","dataMarker","annotationDataMarkerLineLength","dataRegion","cSliderBackgroundFillColor","cSliderBackgroundFillOpacity","cSliderForegroundFillColor","cSliderForegroundFillOpacity","cSliderHandlerWidth","cSliderHandlerHeight","cSliderHandlerFillColor","cSliderHandlerFillOpacity","cSliderHandlerBorderColor","cSliderHandlerBorder","cSliderHandlerBorderRadius","cSliderHandlerHighlightFillColor","cSliderTextFillColor","cSliderTextFillOpacity","cSliderTextFontSize","cSliderTextLineHeight","cSliderTextFontWeight","cSliderTextBorderColor","cSliderTextBorder","scrollbar","scrollbarTrackFillColor","scrollbarThumbFillColor","scrollbarThumbHighlightFillColor","labelFillColor","labelBorderColor","labelBorder","fillColorDark","labelFillColorDark","fillColorLight","labelFillColorLight","innerLabels","innerLabelFillColor","innerLabelFontSize","innerLabelBorderColor","innerLabelBorder","overflowLabels","overflowLabelFillColor","overflowLabelFontSize","overflowLabelBorderColor","overflowLabelBorder","pieLabels","labelHeight","labelLine","labelLineBorder","BLACK_COLORS","WHITE_COLORS","QUALITATIVE_10","QUALITATIVE_20","SINGLE_SEQUENCE","createLightStyleSheet","paletteSemanticYellow","axisLineDash","axisTitleTextFontWeight","axisSubTickLineBorderColor","axisSubTickLineLength","axisSubTickLineBorder","axisLabelFontWeight","legendTitleTextFillColor","legendTitleTextFontSize","legendTitleTextLineHeight","legendTitleTextFontWeight","legendMarkerSize","legendSquareMarkerSize","legendLineMarkerSize","sliderLabelTextFontWeight","sliderHandlerHeight","sliderHandlerBorder","annotationTextLineHeight","annotationTextFontWeight","tooltipCrosshairsLineDash","tooltipTextFontWeight","innerLabelLineHeight","innerLabelFontWeight","overflowLabelLineHeight","overflowLabelFontWeight","labelLineBorderColor","cSliderRailHieght","pointBorderOpacity","hollowPointActiveBorder","areaActiveFillColor","areaSelectedFillColor","hollowAreaActiveBorderColor","hollowAreaSelectedBorderColor","intervalActiveBorderOpacity","intervalSelectedBorderOpacity","createTheme","themeCfg","styleSheetCfg","themeObject","Themes","snapEqual","filterYValue","getYScale","originData","getXDistance","scaleValues","numericValue","getTooltipValueScale","getAttributesForLegend","attributes_1","attributes_1_1","tmpScale","scaleDefs","getXScale","findDataByPoint","getXValueByPoint","firstXValue","firstYValue","lastXValue","isYArray","firstIdx","lastIdx","middleIdx","getTooltipItems","showNil","e_2","tooltipTitle","titleField","titleScale","getTooltipTitle","tooltipOption","addItem","mappingData","callbackParams","itemCfg","fields_1","fields_1_1","e_2_1","valueScale","eachValue","getTooltipValue","nameScale","groupScales","getGroupScales","getTooltipName","getTooltipItemsByFindData","tooltipCfg","e_3","dataArray_1","dataArray_1_1","elementsMap","e_3_1","getTooltipItemsByHitShape","findItemsFromView","e_4","geometries_1","geometries_1_1","tooltipItems","e_4_1","paddingArray","LOAD_COMPONENT_CONTROLLERS","registerComponentController","plugin","CoordinateController","wrapperOption","hasAction","isTheta","execActions","getOption","includeActions","fromData","defaultLayout","getController","ScalePool","syncScales","createScale","finalScaleDef","cacheScaleMeta","getScaleMeta","cacheScale","cacheScaleDef","scaleKeys","syncKey","newScale","syncScale","getSyncKey","removeFromSyncScales","scaleMeta","deleteScale","PaddingCal","getPadding","calculatePadding","isAutoPadding","paddingCal","paddingComponents","otherComponents","AXIS","LEGEND","SLIDER","SCROLLBAR","GRID","bboxObject","componentPadding","componentBBox","defaultSyncViewPadding","chart","PC","syncPadding","autoPadding","controllers","interactions","limitInPlot","usedControllers","scalePool","layoutFunc","isPreMouseInPlot","isDataChanged","isCoordinateChanged","createdScaleKeys","onCanvasEvent","createViewEvent","doPlotEvent","onDelegateEvents","backgroundGroup","middleGroup","foregroundGroup","appendPadding","syncViewPadding","setLayout","calculateViewBBox","initComponentController","initOptions","isUpdate","payload","BEFORE_RENDER","paint","AFTER_RENDER","BEFORE_CLEAR","filteredData","coordinateInstance","labelsContainer","getRootView","AFTER_CLEAR","BEFORE_DESTROY","legendOption","scaleOption","coordinateCfg","coordinateController","facetInstance","getFacet","updateOptions","existInteraction","removeInteraction","changeData","BEFORE_CHANGE_DATA","AFTER_CHANGE_DATA","sharedOptions","removedView","getYScales","yScales","getScalesByDim","dimType","defaultKey","getScaleKey","getOriginalData","getGeometries","BG","MID","isPointInCoordinate","getLegendAttributes","getGroupAttributes","getXY","xScales","showTooltip","hideTooltip","lockTooltip","unlockTooltip","isTooltipLocked","getSnapRecords","snapRecords","filterData","filterFieldData","adjustCoordinate","curStart","curEnd","renderDataRecursive","BEFORE_PAINT","renderPaddingRecursive","renderLayoutRecursive","renderBackgroundStyleShape","renderPaintRecursive","AFTER_PAINT","backgroundStyleRectShape","initComponents","tooltipController","syncViewPaddingFn","doLayout","paintGeometries","renderComponents","currentScaleDef","mergedScaleDef","doFilterData","createCoordinate","initGeometries","renderFacet","controllerName","currentInPlot","newEvent","TYPE","MOUSE_LEAVE","LEAVE","MOUSE_ENTER","createOrUpdateScales","getGeometryScales","adjustScales","getScaleFields","groupedFields","getGroupedFields","getGroupFields","adjustCategoryScaleRange","xyScales","scaleOptions","doAnimation","canvasRegion","annotations","geometryOption","createGeometry","interactionOption","viewOption","annotationComponent","annotationOption","eventCallback","geometry_1","registerGeometry","Chart","localRefresh","supportCSSTransform","defaultInteractions","wrapperElement","G","getEngine","forceFit","updateCanvasStyle","bindAutoFit","initDefaultInteractions","ariaOption","ATTR","BEFORE_CHANGE_SIZE","AFTER_CHANGE_SIZE","unbindAutoFit","Controller","includeOption","isLocked","dataPoint","getTooltipCfg","lastItems","lastTitle","tooltipMarkersGroup","renderTooltip","getItemsAfterProcess","renderTooltipMarkers","isCrosshairsFollowCursor","renderCrosshairs","xCrosshair","yCrosshair","tooltipCrosshairsGroup","items_1_1","itemArr_1","itemArr_1_1","snapItem","items_2","items_2_1","aItem","yDistance","uniqItems","isCursorEntered","processOption","processCustomContent","currentCustomContent","getTooltipMarkersGroup","rootView","items_3","items_3_1","attrs_1","markerDefaultCfg","crosshairsType","renderXCrosshairs","renderYCrosshairs","getViewWithGeometry","getTooltipCrosshairsGroup","getCrosshairsText","textCfg","firstItem","getGuideGroup","e_5","childView","e_5_1","originalItems","customItems","ANIMATIONS_MAP","getAnimation","registerAnimation","DEFAULT_ANIMATE_CFG","GEOMETRY_ANIMATE_CFG","GEOMETRY_GROUP_APPEAR_ANIMATION","getDefaultAnimateCfg","animateType","doAnimate","parsedAnimateCfg","parseAnimateConfig","animateFunction","BACKGROUND_SHAPE","shapeFactory","offscreenGroup","elementIndex","getShapeType","drawShape","setShapeInfo","getOffscreenGroup","newShape","syncShapeStyle","getStates","getAnimateCfg","stateStatus","sortZIndex","zIndexReversed","offscreenShape","clearStates","labelBBox","stateOption","defaultShapeType","stateTheme","getStateStyle","shapeKey","stateCfg","shapeStyle","cfg_1","AFTER_DRAW_ANIMATE","BEFORE_DRAW_ANIMATE","GroupCtor","newClip","newChildren","name_2","GEOMETRY_LABELS_MAP","GEOMETRY_LABELS_LAYOUT_MAP","registerGeometryLabel","registerGeometryLabelLayout","layoutFn","ShapeFactoryBase","getShapePoints","shapePoint","getPoints","getDefaultPoints","getDefaultStyle","geometryTheme","getMarker","ShapeBase","parsePath","parsedPath","convertNormalPath","parsePoint","parsePoints","ShapeFactoryMap","registerShapeFactory","factoryName","geomObj","registerShape","shapeObj","getShapeFactory","isModelChange","currentModel","preModel","parseFields","keyItem","keyIncluded","Geometry","attributeOption","lastElementsMap","generatePoints","beforeMappingData","adjusts","idFields","hasSorted","sortable","useDeferredLabel","userTheme","positionCfg","createAttrOption","adjustCfg","adjustOption","styleFunc","styleOption","secondParam","thirdParam","labelOption","customInfo","customOption","setCfg","initAttributes","processData","adjustScale","lastAttributeOption","beforeMapping","canDoGroupAnimation","yMinPoint","getYMinValue","minYPoint","doGroupAppearAnimate","deferred","renderLabels","requestIdleCallback","geometryLabel","getDefaultValue","attrName","getAttributeValues","adjustType","getShapeMarker","shapeName","xVal","yVal","length_2","dodgeAdjust","attributeType","eachOpt","length_3","uniqMap","groupFields","length_4","attributeName","getXField","getYField","getShapes","mappingArray","xScale_1","xField_1","updateStackRange","createShapePointsCfg","normalizeValues","mappingDatum","shapeCfg","getDrawCfg","getStyleCfg","nextPoints","mappingDataArray","keyDatum","finalKey","added_1","added_1_1","updated_1","updated_1_1","currentShapeCfg","preShapeCfg","removed_1","removed_1_1","getLabelType","coordinateType","labelType","attrCfg","AttributeCtor","state_1","categoryScales","groupedArray","beforeAdjust","subData","subLen","categoryScales_1","categoryScales_1_1","xScale_2","sizeAttr","adjustCtor","adjustInstance","appendConditions","values_1","values_1_1","eachGroup","mergeArray","tmpMin","tmpMax","length_5","currentData","generateShapePoints","nextData","shapeAttr","newRecord","mappingRecord","rstX","rstY","xLen","yLen","GeometryLabelsCtor","labelsMap","elementLabels","BEFORE_RENDER_LABEL","getGeometryLabel","labelsRenderer","labelGroupId","labelChildren","AFTER_RENDER_LABEL","rotateRadian","getRotateMatrix","findLabelTextShape","getLabelBackgroundInfo","labelItem","boxPadding","checkShapeOverlap","dones","getOverlapArea","updateLabel","updateAnimateCfg","fromChild","toChild","Labels","lastShapesMap","createOffscreenGroup","renderLabelLine","renderLabelBackground","adjustLabel","origin_1","currentAnimateCfg","deleteShape","shapeAppendCfg","isShape","layouts","getGeometryLabelLayout","labelShapes","geometryShapes","labelItems","labelLineCfg","labelContentShape","backgroundShape","GeometryLabel","getLabelItems","mapppingArray","labelCfgs","getLabelCfgs","labelContent","subIndex","getLabelAlign","getLabelsRenderer","getGeometryShapes","getDefaultLabelCfg","getThemedLabelCfg","defaultLabelCfg","setLabelPosition","labelPointCfg","getLabelOffset","getOffsetVector","getLabelOffsetPoint","offsetPoint","getDimValue","isAvg","isFunnel","getPolygonCentroid","getLabelId","labelScales","callbackCfg","originText","getLabelText","originValues","labelTexts","subVal","actualOffset","getMappingValue","MarkerSymbols","diffX","diffY","STROKES_SYMBOLS","setMarkerSymbol","getLegendLayout","getLegendItems","themeMarker","userMarker","field_1","colorAttr_1","shapeAttr_1","defaultColor_1","isInPolar_1","scaleValue","isInPolar","adpatorMarkerStyle","handleUserMarkerStyle","getLegendThemeCfg","legendTheme","isValueEmpty","isYNil","getPathPoints","connectNulls","showSinglePoint","filtered","getViolinPath","getSmoothViolinPath","leftPoints","rightPoints","leftPath","rightPath","isStroke","isFill","sizeName","getBackgroundRectStyle","eachY","LineSymbols","getLineMarker","getSinglePath","topPoints","bottomPoints","topPath","bottomPath","getRangePath","shapeAttrs","eachLinePoints","Util","getPath","antvDark","legendSpacing","overflowLabelFillColorDark","overflowLabelFillColorLight","createDarkStyleSheet","inBox","regexPR","addStop","parseStyle","gradientStr","tanTheta","tanTheta2","parseLineGradient","parseRadialGradient","patternStr","parsePattern","CanvasPattern","_addDefaultArrow","isStart","arrowShape","isArrowShape","_addCustomizedArrow","startArrow","endArrow","arrowAttrs","arrowFill","arrowStroke","arrowLineWidth","restAttrs","getShortenOffset","addStartArrow","addEndArrow","SHAPE_ATTRS_MAP","applyAttrsToContext","drawChildren","skipDraw","checkRefresh","setChildrenRefresh","checkChildrenRefresh","hasChanged","checkElementRefresh","clearChanged","cacheCanvasBBox","isInView","arcParamsCache","tangent","getStartTangent","getEndTangent","refreshElement","_cacheCanvasBBox","getRefreshRegion","region1","region2","cacheBox","validCache","validBBox","_applyClip","createPath","_afterDraw","viewRange","getViewRange","allowDraw","getHitLineWidth","getBBoxMethod","bboxMethod","halfLineWidth","getCanvasViewBox","strokeAndFill","afterDrawPath","isInStrokeOrPath","absDistance","ellipseDistance","squareX","squareY","Ellipse","halfLineWith","ImageShape","_setImage","_afterLoading","image_1","swidth","sheight","inLine","setArrow","startArrowDistance","endArrowDistance","getTotalLength","Marker","_resetParamsCache","_getR","_getPath","hasArc","extractPolygons","polylines","PathUtil","isInPolygons","_setPathArr","extractResutl","_calculateCurve","_setTcache","subt","tCache","nextSeg","segmentT","segmentL","segmentN","tempLength","inPolyline","isClose","PolyLine","_resetCache","Rect","inRect","r4","parseRadius","_assembleFont","_setText","_getSpaceingY","_drawTextArr","subY","_drawText","getRefXY","preTest","curShape","getPixelRatio","_clearFrame","_getRefreshRegion","viewRegion","minXArr","minYArr","maxXArr","maxYArr","getMergedRegion","mergeView","drawFrame","_startDraw","_drawAll","_drawRegion","AbstractCanvas","SHAPE_TO_TAGS","polyline","SVG_ATTR_MAP","createSVGElement","sortDom","sorter","hasAttribute","addClip","parentChildren","clipPathEl","defsEl","targetIndex","currentIndex","targetNext","children_1","canFill","canStroke","shadow","_setColor","addGradient","addPattern","addShadow","setShadow","elementFromPoint","isEqualNode","Dom","ImageData","addArrow","getDefaultArrow","triangleDown","getAll","_assembleMarker","symbolsFactory","_formatPath","getPointAtLength","Polyline","completed","pathRelatedAttrs","_assembleRect","BASELINE_MAP","alphabetic","hanging","BASELINE_MAP_FOR_FIREFOX","ANCHOR_MAP","_setFont","textLen_1","arr_1","ATTR_MAP","shadowOpacity","SHADOW_DIMENSION","Shadow","_parseShadow","_setDefaultPath","_setMarker","Clip","shapeEl","Pattern","Defs","defaultArrow","autoDraw","srcElement","keyData","getShapeInfo","getPointsAndData","registeredShape","topLinePoints_1","bottomLinePoints_1","pointsData","parsedPoints","pathPoints","eachPoints","getConstraint","yItem","Area","startOnZero","Edge","paletteCache","prepareRange","prepareSize","blur_1","prepareGreyScaleBlurredCircle","drawWithRange","clearShadowCanvasCtx","colorField","getDefaultSize","grayScaleBlurredCanvas","getGrayScaleBlurredCanvas","valueField","getShadowCanvasCtx","data_1","data_1_1","drawGrayScaleBlurredCircle","colored","colorize","imageShape","getImageShape","shadowCanvas","colorAttr","getRectPoints","yMin","xMin","getRectPath","isClosed","minLength","getBackgroundRectPath","isReflectYTransposed_1","bump","opposite","getFunnelPath","isPyramid","backgroundCfg","backgroundPath","getRectWithCornerRadius","coor","getIntervalRectPath","xValues","sourceArr","findMinDistance","normalizedSize","wr","dodgeCount","getDodgeCount","normalizedMaxColumnWidth","normalizedMinColumnWidth","Interval","SHAPES","drawPoints","points_1","points_1_1","subX","sizeArr","normalizeSize","isMin","isMax","Violin","_sizeField","sizeField","getCPath","getQPath","getArcShapePath","arc1","arc2","getArcShapeWeightPath","getSmoothPath","CORNER_PERCENT","getVHVPath","getLinePoints","getTickPoints","getTickPath","interpolateCallback","nextX","nextY","middleX","middleY","getInterpolateShapeAttrs","interpolatePoints","interpolatePoint","getInterpolatePoints","getInterpolatePath","parseValue","min1","max1","getBoxPoints","pointsArray","halfSize","getCandleYValues","targetLength","padValue","padEnd","sourceLength","getCandlePoints","yValues","getRectAttrs","getBoxPath","getCandlePath","IntervalLabel","getLabelValueDir","nextP0","nextP1","HALF_PI","PolarLabel","labelEmit","arcPoint","isToMiddle","getMiddlePoint","getArcPoint","getPointAngle","isLabelEmit","labelPositionCfg","getLabelRotate","PieLabel","isLabelLimit","plotRange","invisible","overlapping","endY","totalHeight","previousBox","posInCompositeBox","INFLECTION_OFFSET","LABEL_TEXT_LINE_OFFSET","MAX_TIMES","Greedy","xGap","yGap","hasGap","fillGap","adjustLabelPosition","getAxes","getProjection","scalars","isProjectionOverlap","projection1","projection2","isValidBox","isIntersectRect","rect1Points","rect2Points","MyWorker","worker","Worker","onmessageerror","terminate","generateUtils","eventData","BlobBuilder","getBlob","createWorker","preset","shouldInShape","shouldInShapeSingle","hasSome","rightText","getCanvasContext","measureTextWidth","doScaleAnimate","endMatrix","scaledMatrix","transformShape","arcPath","getArcStartPoint","getArcInfo","arcPaths","firstArcPathCommand","lastArcPathCommand","firstIndex","firstStartPoint","lastStartPoint","firstStartAngle","firstEndAngle","lastStartAngle","lastEndAngle","doShapeZoom","getFactTitleConfig","getAnglePoint","renderTitle","avgAngle","facetR","columnField","columnIndex","columnValuesLength","rowField","rowIndex","rowValuesLength","colValues","getPageCount","getRowCol","col","Matrix","columnTitle","rowTitle","facetIndex","columnValues","rowValues","afterChartRender","drawLines","rootFacet","getRows","getChildFacets","setRegion","forceColIndex","xWidth","yWidth","leafs","isLeaf","levelFacets","getFacetsByLevel","levelFacets_1","levelFacets_1_1","originColIndex","getRegionIndex","addFacetLines","subFacet","subRegion","middle1","middle2","getMedian","getNormalizedValue","getMean","ANNOTATIONS_AFTER_RENDER","Annotation","foregroundContainer","backgroundContainer","onAfterRender","updateOrCreate","getCacheKey","syncCache","updateCache","clearComponents","doWhat","createAnnotation","getAnnotationTheme","getAnnotationCfg","isTop","NONE","ANNOTATION","regionFilter","parsePosition","xPos","yPos","parsePercentPosition","getRegionPoints","viewData","startXValue","endXValue","getCoordinateBBox","sp","ep","start_5","end_5","apply_1","shapes_1","addShapes_1","render_1","restOptions","html_1","getComponentContainer","newCache","getGridThemeCfg","getLineGridItems","preTick","currentTick","middleValue","getCircleGridItems","showGrid","userGrid","themeGrid","OMIT_CFG","AXIS_DEFAULT_ANIMATE_CFG","Axis","gridContainer","gridForeContainer","axisContainer","axisForeContainer","updatedCache","updateXAxes","updateYAxes","xAxisOption","axisId","getId","gridId","getLineAxisCfg","createLineAxis","getLineGridCfg","createLineGrid","getCircleAxisCfg","createCircleAxis","getCircleGridCfg","createCircleGrid","yAxisOption","titleText","axisThemeCfg","optionWithTitle","isAxisVertical","canvasWidth","canvasHeight","gridThemeCfg","gridCfg","verticalScale","directionToPosition","parentBBox","getLegendOption","Legend","layoutBBox","maxWidthRatio","maxHeightRatio","getCategoryLegendSizeCfg","existCo","getComponentById","customCfg","getCategoryCfg","createCustomLegend","loopLegends","getContinuousCfg","createFieldLegend","doEach","looped","createContinuousLegend","createCategoryLegend","containMin","containMax","attrValue","attrLegendCfg","mergeLegendCfg","themePageNavigator","userPageNavigator","itemMarker","getCustomLegendItems","baseCfg","categoryCfg","vw","onChangeFn","resetMeasure","onValueChange","changeViewData","getSliderCfg","updateSlider","createSlider","measureSlider","getMinMaxText","getThemeOptions","dataSize","xTickCount","maxIndex","xScaleValues","getValidScrollbarCfg","originalAnimate","getScrollRange","updateScrollbar","createScrollbar","measureScrollbar","getScrollbarComponentCfg","xScaleCfg","yScalesCfg","getScrollbarTheme","thumbHighlightColor","restStyles","getScrollbarData","getStep","getCnt","startIdx","endIdx","realConfig","categorySize","DEFAULT_REGION_PATH_STYLE","getItemsOfView","findItemsFromViewRecurisive","ActiveRegion","xValue_1","elements_1","coordinate_1","firstBBox_1","lastBBox_1","groupBBox_1","appendRatio","appendWidth","firstElement","lastElement","innterRadius","TooltipAction","lastTimeStamp","preLoc","curLoc","SiblingTooltip","siblingPoint","EllipsisText","tipContent","tooltipStyles","StateBase","setElementState","setStateEnable","clearViewState","getItem","ElementState","ignoreListItemStates","isItemIgnore","setStateByComponent","setElementsStateByItem","setStateByElement","isMathItem","event_1","ElementActive","LinkByColor","getColorScale","getLinkPath","nextElement","nextBBox","addLinkShape","linkByElement","getElementsByField","group_1","linkGroup","count_1","nextEl","removeLink","unlink","ElementRangeState","isStarted","effectSiblings","effectByRecord","setSiblingsState","allElements","setSiblingsStateByRecord","setElementsState","effectElements","ElementRangeActive","ElementSingleState","ElementSingleActive","STATUS_UNACTIVE","STATUS_ACTIVE","clearHighlight","setHighlightBy","INACTIVE","ACTIVE","ElementHighlight","setElementHighlight","activeElements","allCancel_1","highlight","HighlightColor","highlightElements","HighlightX","ElementRangeHighlight","BEFORE_HIGHLIGHT","AFTER_HIGHLIGHT","ElementSingleHighlight","ElementRangeSelected","ElementMultipleSelected","ElementSingleSelected","ListState","ignoreItemStates","getTriggerListInfo","getAllowComponents","allowSetStateByElement","clearAllComponentsState","componentNames","allowSetStateByItem","ignoreStates","filterStates","setItemsState","triggerInfo","ListActive","ListHighlight","activeItems","clearList","ListSelected","ListUnchecked","STATUS_UNCHECKED","STATUS_CHECKED","ListChecked","setCheckedBy","list_1","allChecked","ListFocus","clickedItem","checkedItems","uncheckedItems","checkedItem","items_4","items_4_1","STATUS_SHOW","TIP_ID","ListRadio","showTip","hideTip","containerId","MaskBase","starting","moving","preMovePoint","createMask","maskAttrs","getMaskAttrs","updateMask","moveStart","moveEnd","CircleMask","RectMask","clampPoint","inPlot","normalStart","normalEnd","DimRect","PathMask","addPoint","getSpline","SmoothPathMask","MultipleMaskBase","recordPoints","maskType","multiPoints","recordPointStart","updateShapesCapture","getCurMaskShapeIndex","recordPointContinue","clearAll","recordPointClear","getRecordPoints","lastPoints","isCapture","RectMultiMask","DimRectMultiMask","CircleMultiMask","PathMultiMask","SmoothPathMultiMask","CursorAction","crosshair","help","eResize","wResize","nResize","sResize","neResize","nwResize","seResize","swResize","nsResize","ewResize","DataFilter","filterView","unCheckedItems","scale_1","names_1","getFilter","RangeFilter","hasDim","BEFORE_FILTER","normalCurrent","FILTER","AFTER_FILTER","BEFORE_RESET","RESET","AFTER_RESET","SiblingFilter","ElementFilter","maskElements_1","byRecord","filterByRecord","filterByBBox","maskElements","ButtonAction","buttonGroup","buttonCfg","getButtonCfg","drawButton","buttonShape","Drag","dragStart","drag","Move","isMoving","startMatrix","ScaleTranslate","cfgFields","cacheScaleDefs","resetDim","startCache","noramlCurrent","translateDim","translateLinear","zoomRatio","zoomDim","dRatio","toMin","toMax","MousewheelScroll","scroll","wheelDelta","scrollbarController","nextStart","isWheelDown","correction","nextRatio","AxisDescription","descriptionTooltipStyle","isPointInView","totalHeight_1","lineHeight_1","plotRange_1","halves_1","maxLabelsCountForOneSide","isRight","labelShapes_1","labelShapes_1_1","rPow2","dyPow2","antiCollision","innerPoint","itemX","itemY","maxTimes","nt","accessedCache","spiralFill","regionMinX","regionMinY","regionMaxX","regionMaxY","finalX","finalY","translateX_1","textShapes","textBox","DOT_WIDTH","getEllipsisText","labels_1","labels_1_1","RIGHT_HALF_KEY","separateLabels","totalR","labelsContainerRange","dxPow2","dx_offset","smoothConnector","breakPoint","breakPoint3","xSign","slope1","drawLabelline","fillWhite","isContrastColorWhite","moveInShape","filteredLabels","filterLabel","todo","groupedLabels","addCurrentGroup","curItems","sortedCollections","sortedLabels","sortLabels","downFail","inRight","inflectionPoint","totalOffset","halfHeight","originalPos","pathCommands","curStartAngle","curEndAngle","preStartAngle","preEndAngle","diffStartAngle","diffEndAngle","onFrameStartAngle","onFrameEndAngle","showEnable","processing","rollback","LEVEL","AXIS_META_CONFIG_KEYS","BRAND","getMessage","argIndex","adjustYMetaByZero","numberData","gtZero","ltZero","transformDataToNodeLinkData","sourceField","targetField","weightField","rawFields","nodesMap","nodesIndex","rawData","processIllegalData","WARN","isPlainObject","isObjectLike","deepAssign","getContainerSize","findGeometry","getAllElements","getAllElementsRecursively","transformLabel","isRealNumber","normalPadding","getAdjustAppendPadding","currentAppendPadding","PADDING","resolveAllPadding","normalPaddings","finalPadding","points2Path","kebabCase","adapteStyle","styleObject","shapeStyleKeys","setStatisticContainerStyle","renderStatistic","plotType","titleOpt","contentOpt","containerW","liquidShape","customHtml","renderGaugeStatistic","polarCoord","polarCenter","polarMaxY","findViewById","getViews","getSiblingViews","addViewAnimation","animationCfg","initCanvas","getUnitPatternSize","isStagger","getSymbolsPosition","transformMatrix","dpr","defaultDotPatternCfg","drawDot","defaultLinePatternCfg","createLinePattern","lineCfg","Path2D","defaultSquarePatternCfg","drawSquare","strokeRect","getCanvasPattern","dotCfg","dots_1","createDotPattern","squareCfg","squares","squares_1","createSquarePattern","patternOption","colorAttribute","seriesValue","seriesField","annotationOptions","annotationController","yAxis","transformations","GLOBAL","LocaleMap","registerLocale","localeObj","getTooltipMapping","defaultFields","getMappingField","shapeField","styleField","mappingFields","tileMappingField","getMappingFunction","tooltipFields","columnBackground","widthRatio","groupField","otherAdaptor","stepType","SOURCE_ATTRIBUTE_NAME","PLOT_CONTAINER_OPTIONS","Plot","getDefaultOptions","createG2","xAxis","chartSize","execAdaptor","bindSizeSensor","updateOption","stateObjects","addAnnotations","incoming","removeAnnotations","_loop_2","unbindSizeSensor","adaptor","getSchemaAdaptor","triggerResize","sumMap","groupValue","percentage","getDataWhetherPercentage","asField","isPercent","pointMapping","areaMapping","pointState","areaState","areaParams","lineGeometry","areaShape","lineMapping","chartData","tooltipOptions","lineParams","pointParams","areaGeometry","BUTTON_ACTION_CONFIG","drawText","getInteractionCfg","interactionType","brushType","isStartEnable","BRUSH_TYPES","brushInteraction","buttonConfig","INTERACTION_MAP","getStartStages","conversionTagFormatter","getConversionTagOptionsWithDefaults","headSize","elemPrev","elemNext","pointPrev","pointNext","renderArrowTag","cWidth","cEnd","textAdjusted","renderTextTag","defaultOptions","columnStyle","percentData","getDeepPercent","stackedItem","percentYMeta","isRange","columnTooltip","customItems_1","tooltipFormatter_1","isBar","conversionTag","connectedArea","verticalAxis","horizontalAxis","coordinateOptions","barStyle","barWidthRatio","minBarWidth","maxBarWidth","barBackground","Bar","FUNNEL_PERCENT","FUNNEL_MAPPING_VALUE","FUNNEL_CONVERSATION","FUNNEL_TOTAL_PERCENT","PLOYGON_X","PLOYGON_Y","CONVERSION_TAG_NAME","transformData","formatData","maxYFieldValue","conversionTagComponent","getLineCoordinate","formatter_1","lineOption","funnelStyle","datumIndex","initLineOption","basicFunnel","compareField","showFacetTitle","formatterData","defaultFacetLabel","compareConversionTag","viewIndex","preItemX","preItemY","ConversionTagAction","rendering","conversionTag_1","FUNNEL_CONVERSION_TAG","FUNNEL_LEGEND_FILTER","interactionStart","defaultOption","dynamicHeight","facetFunnel","compareFunnel","dynamicHeightFunnel","Funnel","CONVERSATION_FIELD","PERCENT_FIELD","TOTAL_PERCENT_FIELD","RANGE_VALUE","RANGE_TYPE","PERCENT","INDICATEOR_VIEW_ID","RANGE_VIEW_ID","pin","getIndicatorData","getRangeData","clampTicks","processRangeData","gaugeStyle","meter","rangeWidth","indicatorData","rangeData","rangeColor","contentOption","transformContent","STEP","stepRatio","STEP_RATIO","COORD_START_ANGLE","COORD_END_ANGLE","GAP","INTERVAL","START_ANGLE","END_ANGLE","Gauge","indicatorView","rangeView","getBinKey","binWidth","binNumber","binHistogram","binField","originData_copy","_binWidth","_defaultBinNumber","sturges","groupKey","groupKeyBinKey","plotData","HISTOGRAM_X_FIELD","HISTOGRAM_Y_FIELD","Histogram","MarkerActiveAction","getView","pieStyle","ORIGIN_MATRIX","ulMatrix","PieLegendAction","getActiveElements","item_1","getActiveElementLabels","transfrom","StatisticAction","getAnnotations","_view","getInitialAnnotation","initialAnnotation","colorField_1","initialStatistic","PIE_STATISTIC","adaptOffset","defaultOffset","isAllZero","angleField","percentageField_1","content_1","dataum","angleScale","labelLayoutType","spider","labelLayoutCfg","transformStatisticOptions","titleOpt_1","contentOpt_1","metaFormatter","dataValue","getTotalValue","pieAnnotation","startStages_1","stage","prevOptions","curData","getProgressData","clampPercent","RingProgress","REGRESSION_MAP","xScaleView","yScaleView","pathData","regressionLine","customEquation","equation","roundByPrecision","safeFormat","getRegressionEquation","reg","xFieldValue","yFieldValue","xIsPositiveNumber","yIsPositiveNumber","getMetaMinMax","fieldMeta","getCustomValue","transformOptions","isOneX","isOneY","meta_1","newOptions","shapeLegend","sizeLegend","showLegend","scatterGeometry","scatterAnnotation","quadrant","xBaseline","yBaseline","regionStyle_1","defaultConfig_1","textOffset","getQuadrantDefaultConfig","equationStyle","equationStyle_1","top_1","showEquation","showEquation_1","defaultStyle_1","defaulEquationStyle_1","Scatter","Y_FIELD","TREND_FIELD","TREND_UP","TREND_DOWN","defaultContent","risingFill","fallingFill","getStockData","open_1","close_1","high","low","stockStyle","baseMeta","Stock","getTinyData","X_FIELD","pointOptions","lineOptions","seriesData","TinyArea","TinyColumn","TinyLine","PLOT_ADAPTORS","pie","gauge","scatter","histogram","stock","PLOT_CONSTRUCTOR","DEFAULT_OPTIONS_MAP","execPlotAdaptor","plot","multiView","viewOfG2","multiPlot","plots","Association","getAssociationItems","linkField","Stage","Mix","STABLE","DEV","BETA","FIRST_AXES_VIEW","SECOND_AXES_VIEW","SERIES_FIELD_KEY","hopeData","data1","data2","__axisPosition","firstView","secondView","firstViewData","secondViewData","aliasMap","metaKey","leftGeometry","rightGeometry","leftLabelCfg","positionMap_1","BidirectionalBar","BOX_RANGE","BOX_SYNC_NAME","OUTLIERS_VIEW_ID","boxStyle","low_1","q1_1","median_1","q3_1","high_1","yFieldName","outliersPoint","outliersField","outliersStyle","outliersView","outliersViewData","syncName","Box","getSeriesFieldKey","measureField","rangeField","rangeValues","rKey","measureValues","mKey","targetValues","tKey","bulletStyle","extData","rangeGeometry","measureGeometry","targetGeometry","Bullet","nodeWidthRatio","nodePaddingRatio","sourceWeight","targetWeight","sortBy","chordLayout","chordLayoutOptions","chordLayoutInputData","edges","inEdges","outEdges","frequency","processGraph","sortMethods","localeCompare","sortNodes","nodePaddingRatio_1","margin_1","nodeWidthRatio_1","totalValue_1","deltaX_1","layoutNodes","outputLinks","valueById_1","sId","tId","sNode","tNode","sValue","currentSValue","sStart","sEnd","tValue","currentTValue","tStart","tEnd","locatingEdges","NODE_COLOR_FIELD","EDGE_COLOR_FIELD","edgeStyle","nodesData","isNode","edgesData","chordData","nodeGeometry","nodeView","edgeGeometry","edgeView","getAllGeometriesRecursively","Chord","RAW_FIELDS","hierarchyConfig","drilldown","BREAD_CRUMB_NAME","DEFAULT_BREAD_CRUMB_CONFIG","dividerText","activeTextStyle","HIERARCHY_DATA_TRANSFORM_PARAMS","DrillDownAction","historyCache","breadCrumbGroup","breadCrumbCfg","drill","drawBreadCrumb","backTo","hideCrumbGroup","nodeInfo","drillData","nodeData","drillDownConfig","breadCrumb","drawBreadCrumbGroup","rootText","textShapeBox","targetId","newHistoryCache","dividerBox","packEnclose","packChildren","NODE_INDEX_FIELD","CHILD_NODE_COUNT","NODE_ANCESTORS_FIELD","INVALID_FIELD_ERR_MSG","getAllNodes","index_1","eachNode","enableDrillDown","packLayout","ancestorNode","resolvePaddingForCircle","tempPadding","wSize","hSize","restWidthPadding","restHeightPadding","finalSize","diameter","tempAppendPadding","circleSize","nameFormatter","valueFormatter","adaptorInteraction","isParentNode","inCenter","CirclePacking","AxisType","DualAxesGeometry","LEFT_AXES_VIEW","RIGHT_AXES_VIEW","DEFAULT_YAXIS_CONFIG","DEFAULT_LEFT_YAXIS_CONFIG","DEFAULT_RIGHT_YAXIS_CONFIG","isLine","isColumn","getGeometryOption","transformObjectToArray","transformAttribute","getYAxisWithDefault","axisType","getViewLegendItems","legendItemName","isGeometry","viewId","attrItems","doSliderFilter","sliderValue","geometryOptions","allLine","createViews","SORT_MAP","FIELD_KEY","adjust_1","drawSingleGeometry","themeColor","groupScale","leftView","rightView","leftLegend_1","rightLegend_1","leftItems","rightItems","yF","legendItem_1","DualAxes","facetAdaptor","facetType","_eachView","restFacetCfg","viewOptions","execViewAdaptor","plotOptions","sizeRatio","heatmapStyle","checkedSizeRatio","dautm","maxSideLength","sideLength","CAT_VALUE","getLiquidData","liquidStyle","getWaterWavePositions","waveLength","getWaterWavePath","waterLevel","_phase","waveRight","builtInShapeByName","cpX","cpY","waveCount","minXPoint","waveAttrs","getFillAttrs","outlineAttrs","getLineAttrs","shapePath","waves","addWaterWave","Liquid","areaOptions","RadarTooltipController","cfgTitle","hintItems","title_1","result_1","displayTitle","RadarTooltipAction","getTooltipController","Radar","getScaleMax","maxAngle","yData","formatRadian","actualData","stackedData","getStackedData","intervalGeometry","RadialBar","sectorStyle","Rose","COLOR_FIELD","NODES_VIEW_ID","EDGES_VIEW_ID","cutoffCircle","removedData","getNodes","graphMatrix","visited","DFS","dfsNode","targetDepth","sourceLinks","sumBy","maxValueBy","ascendingSourceBreadth","ascendingBreadth","ascendingTargetBreadth","defaultNodes","graph","defaultLinks","computeLinkBreadths","nodes_1","targetLinks","Sankey","linkSort","sankey","nodes_2","computeNodeLinks","nodes_3","fixedValue","computeNodeValues","computeNodeDepths","computeNodeHeights","nodes_4","columns_1","computeNodeLayers","minValueBy","columns_2","nodes_6","nodes_5","reorderLinks","initializeNodeBreadths","relaxRightToLeft","relaxLeftToRight","computeNodeBreadths","column_1","dy_1","reorderNodeLinks","resolveCollisions","column_2","sourceTop","dy_2","resolveCollisionsBottomToTop","resolveCollisionsTopToBottom","dy_3","dy_4","targetLinks_1","sourceLinks_1","nodes_7","nodeAlign","nodeDepth","nodeSort","nodeWidth","nodePadding","ALIGN_METHOD","sankeyLayout","sankeyLayoutOptions","sankeyProcessor","getNodeAlignFunction","layoutData","getNodeWidthRatio","getNodePaddingRatio","transformToViewsData","sankeyLayoutInputData","dataType","isNodeLink","nodeState","edgeState","nodeDraggable","DRAG_INTERACTION","nodeInteractions","edgeInteractions","SankeyNodeDragAction","isDragging","isNodeElement","getNodeView","getEdgeView","getCurrentDatumIdx","currentElementIdx","prevNodeAnimateCfg","prevEdgeAnimateCfg","prevDatum","datumGap_1","nextDatum","edgeData","isLast","nodesView","edgesView","SUNBURST_ANCESTOR_FIELD","SUNBURST_Y_FIELD","SUNBURST_PATH_FIELD","sunburstStyle","ignoreParentValue","tileMethod","activeDepth","pathFormatter","Sunburst","findInteraction","enableInteraction","enableDrillInteraction","curPath","rectStyle","viewZoomInteraction","ID_FIELD","transData","drillDownInteraction","drillDownAction","resetDrillDown","PATH_FIELD","blendMode","placeElementsOrdered","VennElementActive","syncElementsPos","VennElementHighlight","ElementSelectedAction","ElementSingleSelectedAction","VennElementSelected","VennElementSingleSelected","VennLabel","customLabelInfo","fillAttrs","blendObject","dodge","burn","blendRgbArr","innerBlend","colorToArr","g0","g1","rgbaArr","SMALL","intersectionArea","stats","intersectionPoints","circleCircleIntersection","parentIndex","getIntersectionPoints","innerPoints","containedInCircles","arcArea","polygonArea","angleDiff","circleArea","smallest","disjoint","circleOverlap","circleMargin","computeTextCentre","solution","areaStats","computeTextCentres","areas","overlapped","circleids","circleid","getOverlappingCircles","sets","areaids","exclude","overlaps","centre","distanceFromIntersectArea","bestInitialLayout","loss","lossFunction","setOverlaps","rowid","mostOverlapped","positioned","isPositioned","positionSet","setIndex","extraPoints","bestLoss","bestPoint","localLoss","greedyLayout","constrained","restarts","setids","matrices","constraints","getDistanceMatrices","norm","dij","squaredDistance","constrainedMDSGradient","constrainedMDSLayout","getBoundingBox","minMax","xRange","yRange","getColorMap","colorPalette","setsField","colorMap","colorPaletteLen","colorArr","layoutVennData","vennData","initialLayout","pairs","addMissingAreas","setid_1","venn","xScaling","yScaling","scaling","scaleSolution","textCenters","setCircles","circlePath","wide","intersectionAreaPath","LEGEND_SPACE","currSets","filterSets","legalArr","testArr","islegalSets","colorOptions","map_1","transformColor","vennInteraction","MAP_1","Venn","VIOLIN_Y_FIELD","VIOLIN_SIZE_FIELD","MIN_MAX_FIELD","QUANTILE_FIELD","MEDIAN_FIELD","VIOLIN_VIEW_ID","MIN_MAX_VIEW_ID","QUANTILE_VIEW_ID","MEDIAN_VIEW_ID","sampleSize","violinStyle","quantileSelect","multiQuantileSelect","toBoxValue","toViolinValue","pdfOptions","pdfResults","violinSize","violinY","transformViolinData","resultList","seriesGroup","TOOLTIP_FIELDS","violinView","boxView","minMaxView","quantileView","medianView","legendField_1","legendOptions","DIFF_FIELD","ABSOLUTE_FIELD","IS_TOTAL","leaderLine","waterfallStyle","processed","newYField","dIdx","localeTotalLabel","colorMapping","Y_FIELD_META","labelMode","leaderLineCfg","linkPath","Waterfall","WORD_CLOUD_COLOR_FIELD","wordStyle","rotationSteps","rotateRatio","wordCloud","cloudFont","cloudFontSize","cloudFontNormal","cloudRotate","cloudPadding","cloudText","cloudCanvas","willReadFrequently","hasImage","_tags","cxt","imageData","tagCloud","imageMask","rawOptions","chartPadding","wordField","placementStrategy","getSingleKeyValues","getFontSizeMapping","getRotate","resolvePadding","fMin_1","fMax_1","resolveRotate","perSize","getTextAttrs","WordCloud","rej","HTMLImageElement","ERROR","general","increase","decrease","waterfall","__assign","TOOLTIP_CONTAINER_MAPPING","mountPoint","hasPath","useInit","ChartClass","chartOptions","onReady","onEvent","reactDomToString","_uuid","statisticCustomHtml","setPath","statisticDom","processConfig","inputConfig","changeType_1","currentKeys_1","chartInstance","encoderOptions","downloadImage","imageName","base64","ErrorBoundary","renderError","errorTemplate","getDerivedStateFromError","getDerivedStateFromProps","nextProps","Fragment","backgroundOpacity","baseUrl","foregroundColor","foregroundOpacity","gradientRatio","speed","fixedId","idClip","idGradient","idAria","rtlStyle","keyTimes","dur","stopOpacity","repeatCount","ContentLoader","ReactContentLoaderFacebook","loadingTemplate","RadarChart","chartRef","getChart","initEval","setVizData","loadingRepair","setLoadingRepair","evaluations","setEvaluations","selectedEvaluation","setSelectedEvaluation","evaluationsDivRef","evaluationsView","stars","StarIcon","getStarRating","dimension","mapNumberToColor","fetchEvaluation","AcademicCapIcon","EvalRadarPlot","feedback","charts","repairChart","WrenchScrewdriverIcon","recommendations","setRecommendations","recommendationsDivRef","recommendationsView","temperature","fetchRecommendation","_spec$title","vizspec","loadingRevision","setLoadingRevision","setCommands","commandInputRef","chartDivRef","commandsView","tabItems","ChatBubbleLeftEllipsisIcon","_commandInputRef$curr2","comms","instructions","_commandInputRef$curr","editVisualization","ArchiveBoxXMarkIcon","ChartExplainer","ChartEvaluator","ChartRecommender","ChartRasterView","InformationCircleIcon","CodeView","vizspecs","ChartView","_vizConfig$goal2","setVizspecs","promptInputRef","vizDivRef","_vizConfig$goal","fetchVisualization","ChartPieIcon","_promptInputRef$curre","_promptInputRef$curre2","_promptInputRef$curre3","_promptInputRef$curre4","Cog6ToothIcon","PaperAirplaneIcon","LoadingBar","VegaGalleryView","ExclamationCircleIcon","setLoadingGoals","setGoals","summaryDivRef","goalsDivRef","fetchGoals","fetchGoalsUrl","uploadFile","InboxIcon","SamplesView","SummaryView","GoalView","VizGenView","includedStart","includedEnd","getDirectionStyle","positionStyle","Handle","_getIndex","onOffsetChange","ariaLabelForHandle","ariaLabelledByForHandle","ariaValueTextFormatterForHandle","handlePrefixCls","onInternalStartMove","handleNode","PAGE_UP","PAGE_DOWN","Handles","handleRender","draggingIndex","handlesRef","_handlesRef$current$i","getPosition","Track","trackPrefixCls","offsetStart","offsetEnd","Tracks","included","trackList","startValue","endValue","_onClick","textCls","markPrefixCls","Dot","stepDots","dotSet","dotValue","_props$disabled","_props$min","_props$max","_props$step","onBeforeChange","onAfterChange","_props$allowCross","allowCross","_props$pushable","pushable","draggableTrack","_props$included","trackStyle","handleStyle","railStyle","dotStyle","activeDotStyle","_props$tabIndex","mergedMin","mergedMax","mergedStep","mergedPush","markList","markObj","_useOffset","formatRangeValue","formatNextValue","formatStepValue","stepValue","getDecimal","maxDecimal","alignValues","closeValue","closeDist","alignValue","targetDistValue","potentialValues","compareValue","valueDist","potentialValue","offsetChangedValue","needPush","pushNum","_offsetChangedValue","_changed","_offsetChangedValue2","_changed2","_offsetChangedValue3","_changed3","_offsetChangedValue4","useOffset","_useOffset2","offsetValues","valueList","_valueList$","pointCount","_returnValues","rawValuesRef","getTriggerValue","triggerValues","cloneNextValues","changeToCloseValue","keyboardValue","setKeyboardValue","mergedDraggableTrack","_useDrag","finishChange","draggingValue","setDraggingValue","setDraggingIndex","cacheValues","setCacheValues","setOriginValues","mouseMoveEventRef","mouseUpEventRef","flushValues","updateCacheValue","maxStartOffset","maxEndOffset","formatStartValue","cloneCacheValues","offsetDist","updateCacheValueRef","sourceValues","_getPosition","offSetPercent","_getPosition2","moveX","moveY","useDrag","_useDrag2","onStartDrag","sortedCacheValues","SliderTooltip","innerRef","cancelKeepAlign","_hover","controlSize","dotSize","marginFull","marginPart","railBg","trackBg","railHoverBg","trackHoverBg","handleLineWidth","colorPrimaryBorderHover","dotActiveBorderColor","handleSize","handleColor","handleSizeHover","handleLineWidthHover","handleActiveColor","dotBorderColor","trackBgDisabled","genDirectionStyle","railSize","railPadding","full","handlePos","markInset","genHorizontalStyle","marginPartWithMark","genVerticalStyle","sliderToken","increaseHandleWidth","colorPrimaryBorder","legacyTooltipPrefixCls","tooltipPrefixCls","legacyTipFormatter","tipFormatter","legacyTooltipVisible","tooltipVisible","legacyGetTooltipPopupContainer","getTooltipPopupContainer","legacyTooltipPlacement","tooltipPlacement","opens","setOpens","toggleTooltipOpen","getTooltipPlacement","mergedRange","mergedTipFormatter","_props$tooltip","tooltipProps","tooltipOpen","customizeTooltipPrefixCls","isTipFormatter","_models$providers$sel","_models$providers$sel2","models","isModalVisible","setIsModalVisible","selectedProvider","setSelectedProvider","selectedModel","setSelectedModel","providers","provider_options","provider","model_options","ControlRowView","max_tokens","AdjustmentsVerticalIcon","presence_penalty","frequency_penalty","SecondaryButton","anthropic","setModels","initVizConfig","getLocalStorage","GeneratorControlsView","DatasetSelectorView","Layout","site","siteMetadata","GenerateView","_typeof","regeneratorRuntime","accidentalStrictMode","globalThis"],"sourceRoot":""} \ No newline at end of file diff --git a/lida/web/ui/demo/index.html b/lida/web/ui/demo/index.html index 2dbe42276..83cd9687a 100644 --- a/lida/web/ui/demo/index.html +++ b/lida/web/ui/demo/index.html @@ -9,4 +9,4 @@ window.document.getElementsByTagName('html')[0].setAttribute('class', bodyClass); } catch (e) {} -})();
          LIDA | Demo
          Lida provides a conversational interface for automatic generation of grammar-agnostic visualizations (and infographics) from data!.
          Select a visualization library/grammar
          Seaborn
          Model: gpt-3.5-turbo-0301, n: 1, number of Temperature: 0 ...
          Ready? Upload a file to begin.

          Click or drag file to this area to upload

          Upload .json or .csv files to generate a visualization.

          Don't have data? Try any of the files below
          stocks.csv
          cars.json
          wheat.json
          movies.json
          seattle-weather.csv
          sp500.csv
          la-riots.csv
          airports.csv
          \ No newline at end of file +})();
          LIDA | Demo
          Lida provides a conversational interface for automatic generation of grammar-agnostic visualizations (and infographics) from data!.
          Select a visualization library/grammar
          Seaborn
          Model: claude-3-5-sonnet-20241022, n: 1, number of Temperature: 0 ...
          Ready? Upload a file to begin.

          Click or drag file to this area to upload

          Upload .json or .csv files to generate a visualization.

          Don't have data? Try any of the files below
          stocks.csv
          cars.json
          wheat.json
          movies.json
          seattle-weather.csv
          sp500.csv
          la-riots.csv
          airports.csv
          \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index e154d3f5b..d4c08534c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -18,17 +18,17 @@ classifiers = [ ] dependencies = [ - "llmx>=0.0.21a", + "llmx@git+https://github.com/victordibia/llmx.git#egg=main", "pydantic", "uvicorn", "typer", "fastapi", "python-multipart", - "scipy", + "scipy", "numpy", "pandas", - "matplotlib", "altair", + "matplotlib", "seaborn", "plotly", "plotnine", @@ -63,4 +63,4 @@ namespaces = false "Bug Tracker" = "https://github.com/microsoft/lida/issues" [project.scripts] -lida = "lida.cli:run" \ No newline at end of file +lida = "lida.cli:run"